diff --git a/projectors/hazel.js b/projectors/hazel.js index 5c7db1b5..04c462d0 100644 --- a/projectors/hazel.js +++ b/projectors/hazel.js @@ -473243,45 +473243,46 @@ c=" ",e="Programming Expressively",b=" ",d=a.jsoo_runtime,f=d.caml_list_of_j //# 2298 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var -aq="src/haz3lweb/Editors.re.t",P="%S",O="%d",A="Documentation",z="@[<2>[",l="<2>",C="Exercises",m="@ ",ak="src/haz3lweb/Editors.re.exercises",al="src/haz3lweb/Editors.re.examples",F="@])",ap=108,B="Scratch",Q="%a",aj="documentation",t=",@ ",ao="exercises",r="@,",an="scratch",y="@,]@]",T="))",E="",N="src/haz3lweb/Editors.re",x=";@ ",H="(@[",am="src/haz3lweb/Editors.re.scratch",M=143,U="@,))@]",f=139,o=848054398,G=-976970511,v=a.jsoo_runtime,L=v.caml_maybe_attach_backtrace,K=v.caml_update_dummy;function -e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):v.caml_call_gen(a,[b])}function -d(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):v.caml_call_gen(a,[b,c])}function -g(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):v.caml_call_gen(a,[b,c,d])}var -n=v.caml_get_global_data(),Z=al,_=al,s=aq,u=aq,ac=n.Haz3lcore__Editor,k=n.Stdlib__List,i=n.Haz3lweb__ScratchSlide,J=n.Util__ListUtil,ae=n.Stdlib,j=n.Haz3lweb__Exercise,ah=n.Haz3lweb__Init,af=n.Haz3lcore__Interface,ad=n.Haz3lcore__Builtins,I=n.Assert_failure,c=n.Stdlib__Format,h=n.Ppx_yojson_conv_lib__Yojson_conv,q=n.Ppx_yojson_conv_lib__Yojson_conv_error,b=n.Sexplib__Std,p=n.Sexplib0__Sexp_conv_error,V=[],ar=[0,[12,40,[18,[1,[0,0,E]],0]],H],as=[0,[4,0,0,0,0],O],at=[0,[12,44,[17,[0,m,1,0],0]],t],au=[0,[18,[1,[0,[11,l,0],l]],[12,91,0]],z],av=[0,[12,59,[17,[0,m,1,0],0]],x],aw=[0,[17,[0,r,0,0],[12,93,[17,0,0]]],y],ax=[0,[17,0,[12,41,0]],F],ay=[0,[15,0],Q];function +aq="src/haz3lweb/Editors.re.t",Q="%S",P="%d",A="Documentation",z="@[<2>[",l="<2>",C="Exercises",n="@ ",ak="src/haz3lweb/Editors.re.exercises",al="src/haz3lweb/Editors.re.examples",G="@])",B="Scratch",R="%a",aj="documentation",t=",@ ",ap="exercises",r="@,",ao="scratch",y="@,]@]",T="))",F="",O="src/haz3lweb/Editors.re",x=";@ ",an=110,I="(@[",am="src/haz3lweb/Editors.re.scratch",N=143,U="@,))@]",f=139,o=848054398,H=-976970511,w=a.jsoo_runtime,M=w.caml_maybe_attach_backtrace,L=w.caml_update_dummy;function +e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):w.caml_call_gen(a,[b])}function +d(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):w.caml_call_gen(a,[b,c])}function +g(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):w.caml_call_gen(a,[b,c,d])}var +m=w.caml_get_global_data(),Z=al,_=al,s=aq,u=aq,k=m.Stdlib__List,i=m.Haz3lweb__ScratchSlide,K=m.Util__ListUtil,ae=m.Stdlib,j=m.Haz3lweb__Exercise,ah=m.Haz3lweb__Init,af=m.Haz3lcore__Interface,ad=m.Haz3lcore__Builtins,ac=m.Haz3lcore__Editor,J=m.Assert_failure,c=m.Stdlib__Format,h=m.Ppx_yojson_conv_lib__Yojson_conv,q=m.Ppx_yojson_conv_lib__Yojson_conv_error,b=m.Sexplib__Std,p=m.Sexplib0__Sexp_conv_error,V=[],ar=[0,[12,40,[18,[1,[0,0,F]],0]],I],as=[0,[4,0,0,0,0],P],at=[0,[12,44,[17,[0,n,1,0],0]],t],au=[0,[18,[1,[0,[11,l,0],l]],[12,91,0]],z],av=[0,[12,59,[17,[0,n,1,0],0]],x],aw=[0,[17,[0,r,0,0],[12,93,[17,0,0]]],y],ax=[0,[17,0,[12,41,0]],G],ay=[0,[15,0],R];function W(h,b){var -a=b[2],i=b[1];d(c[f],h,ar);e(d(c[f],h,as),i);d(c[f],h,at);d(c[f],h,au);g(k[26],function(a,b){if(a)d(c[f],h,av);e(e(V[1],h),b);return 1},0,a);d(c[f],h,aw);return d(c[f],h,ax)}K(V,[0,i[1]]);var -az=am,aA=am,X=[],aB=[0,[12,40,[18,[1,[0,0,E]],0]],H],aC=[0,[3,0,0],P],aD=[0,[12,44,[17,[0,m,1,0],0]],t],aE=[0,[18,[1,[0,[11,l,0],l]],[12,91,0]],z],aF=[0,[12,59,[17,[0,m,1,0],0]],x],aG=[0,[12,40,[18,[1,[0,0,E]],0]],H],aH=[0,[3,0,0],P],aI=[0,[12,44,[17,[0,m,1,0],0]],t],aJ=[0,[17,0,[12,41,0]],F],aK=[0,[17,[0,r,0,0],[12,93,[17,0,0]]],y],aL=[0,[17,0,[12,41,0]],F],aM=[0,[15,0],Q];function +a=b[2],i=b[1];d(c[f],h,ar);e(d(c[f],h,as),i);d(c[f],h,at);d(c[f],h,au);g(k[26],function(a,b){if(a)d(c[f],h,av);e(e(V[1],h),b);return 1},0,a);d(c[f],h,aw);return d(c[f],h,ax)}var +by=m.Util__Result,bx=m.Stdlib__Option;L(V,[0,i[1]]);var +az=am,aA=am,X=[],aB=[0,[12,40,[18,[1,[0,0,F]],0]],I],aC=[0,[3,0,0],Q],aD=[0,[12,44,[17,[0,n,1,0],0]],t],aE=[0,[18,[1,[0,[11,l,0],l]],[12,91,0]],z],aF=[0,[12,59,[17,[0,n,1,0],0]],x],aG=[0,[12,40,[18,[1,[0,0,F]],0]],I],aH=[0,[3,0,0],Q],aI=[0,[12,44,[17,[0,n,1,0],0]],t],aJ=[0,[17,0,[12,41,0]],G],aK=[0,[17,[0,r,0,0],[12,93,[17,0,0]]],y],aL=[0,[17,0,[12,41,0]],G],aM=[0,[15,0],R];function Y(h,b){var a=b[2],i=b[1];d(c[f],h,aB);e(d(c[f],h,aC),i);d(c[f],h,aD);d(c[f],h,aE);g(k[26],function(a,b){if(a)d(c[f],h,aF);var -g=b[2],i=b[1];d(c[f],h,aG);e(d(c[f],h,aH),i);d(c[f],h,aI);e(e(X[1],h),g);d(c[f],h,aJ);return 1},0,a);d(c[f],h,aK);return d(c[f],h,aL)}K(X,[0,i[1]]);var -R=[],aN=[0,[12,40,[18,[1,[0,0,E]],0]],H],aO=[0,[4,0,0,0,0],O],aP=[0,[12,44,[17,[0,m,1,0],0]],t],aQ=[0,[18,[1,[0,[11,l,0],l]],[12,91,0]],z],aR=[0,[12,59,[17,[0,m,1,0],0]],x],aS=[0,[17,[0,r,0,0],[12,93,[17,0,0]]],y],aT=[0,[12,44,[17,[0,m,1,0],0]],t],aU=[0,[17,0,[12,41,0]],F],aV=[0,[15,0],Q];function +g=b[2],i=b[1];d(c[f],h,aG);e(d(c[f],h,aH),i);d(c[f],h,aI);e(e(X[1],h),g);d(c[f],h,aJ);return 1},0,a);d(c[f],h,aK);return d(c[f],h,aL)}L(X,[0,i[1]]);var +S=[],aN=[0,[12,40,[18,[1,[0,0,F]],0]],I],aO=[0,[4,0,0,0,0],P],aP=[0,[12,44,[17,[0,n,1,0],0]],t],aQ=[0,[18,[1,[0,[11,l,0],l]],[12,91,0]],z],aR=[0,[12,59,[17,[0,n,1,0],0]],x],aS=[0,[17,[0,r,0,0],[12,93,[17,0,0]]],y],aT=[0,[12,44,[17,[0,n,1,0],0]],t],aU=[0,[17,0,[12,41,0]],G],aV=[0,[15,0],R];function $(h,b){var -a=b[3],i=b[2],j=b[1];d(c[f],h,aN);e(d(c[f],h,aO),j);d(c[f],h,aP);d(c[f],h,aQ);g(k[26],function(a,b){if(a)d(c[f],h,aR);e(e(R[2],h),b);return 1},0,i);d(c[f],h,aS);d(c[f],h,aT);e(e(R[1],h),a);return d(c[f],h,aU)}K(R,[0,j[84],j[65]]);var -aW=ak,aX=ak,D=[],aY=[0,[12,40,[18,[1,[0,[11,l,0],l]],[11,"Scratch (",[17,[0,r,0,0],0]]]],"(@[<2>Scratch (@,"],aZ=[0,[4,0,0,0,0],O],a0=[0,[12,44,[17,[0,m,1,0],0]],t],a1=[0,[18,[1,[0,[11,l,0],l]],[12,91,0]],z],a2=[0,[12,59,[17,[0,m,1,0],0]],x],a3=[0,[17,[0,r,0,0],[12,93,[17,0,0]]],y],a4=[0,[17,[0,r,0,0],[11,T,[17,0,0]]],U],a5=[0,[12,40,[18,[1,[0,[11,l,0],l]],[11,"Documentation (",[17,[0,r,0,0],0]]]],"(@[<2>Documentation (@,"],a6=[0,[3,0,0],P],a7=[0,[12,44,[17,[0,m,1,0],0]],t],a8=[0,[18,[1,[0,[11,l,0],l]],[12,91,0]],z],a9=[0,[12,59,[17,[0,m,1,0],0]],x],a_=[0,[12,40,[18,[1,[0,0,E]],0]],H],a$=[0,[3,0,0],P],ba=[0,[12,44,[17,[0,m,1,0],0]],t],bb=[0,[17,0,[12,41,0]],F],bc=[0,[17,[0,r,0,0],[12,93,[17,0,0]]],y],bd=[0,[17,[0,r,0,0],[11,T,[17,0,0]]],U],be=[0,[12,40,[18,[1,[0,[11,l,0],l]],[11,"Exercises (",[17,[0,r,0,0],0]]]],"(@[<2>Exercises (@,"],bf=[0,[4,0,0,0,0],O],bg=[0,[12,44,[17,[0,m,1,0],0]],t],bh=[0,[18,[1,[0,[11,l,0],l]],[12,91,0]],z],bi=[0,[12,59,[17,[0,m,1,0],0]],x],bj=[0,[17,[0,r,0,0],[12,93,[17,0,0]]],y],bk=[0,[12,44,[17,[0,m,1,0],0]],t],bl=[0,[17,[0,r,0,0],[11,T,[17,0,0]]],U],bm=[0,[15,0],Q];function +a=b[3],i=b[2],j=b[1];d(c[f],h,aN);e(d(c[f],h,aO),j);d(c[f],h,aP);d(c[f],h,aQ);g(k[26],function(a,b){if(a)d(c[f],h,aR);e(e(S[2],h),b);return 1},0,i);d(c[f],h,aS);d(c[f],h,aT);e(e(S[1],h),a);return d(c[f],h,aU)}L(S,[0,j[84],j[65]]);var +aW=ak,aX=ak,D=[],aY=[0,[12,40,[18,[1,[0,[11,l,0],l]],[11,"Scratch (",[17,[0,r,0,0],0]]]],"(@[<2>Scratch (@,"],aZ=[0,[4,0,0,0,0],P],a0=[0,[12,44,[17,[0,n,1,0],0]],t],a1=[0,[18,[1,[0,[11,l,0],l]],[12,91,0]],z],a2=[0,[12,59,[17,[0,n,1,0],0]],x],a3=[0,[17,[0,r,0,0],[12,93,[17,0,0]]],y],a4=[0,[17,[0,r,0,0],[11,T,[17,0,0]]],U],a5=[0,[12,40,[18,[1,[0,[11,l,0],l]],[11,"Documentation (",[17,[0,r,0,0],0]]]],"(@[<2>Documentation (@,"],a6=[0,[3,0,0],Q],a7=[0,[12,44,[17,[0,n,1,0],0]],t],a8=[0,[18,[1,[0,[11,l,0],l]],[12,91,0]],z],a9=[0,[12,59,[17,[0,n,1,0],0]],x],a_=[0,[12,40,[18,[1,[0,0,F]],0]],I],a$=[0,[3,0,0],Q],ba=[0,[12,44,[17,[0,n,1,0],0]],t],bb=[0,[17,0,[12,41,0]],G],bc=[0,[17,[0,r,0,0],[12,93,[17,0,0]]],y],bd=[0,[17,[0,r,0,0],[11,T,[17,0,0]]],U],be=[0,[12,40,[18,[1,[0,[11,l,0],l]],[11,"Exercises (",[17,[0,r,0,0],0]]]],"(@[<2>Exercises (@,"],bf=[0,[4,0,0,0,0],P],bg=[0,[12,44,[17,[0,n,1,0],0]],t],bh=[0,[18,[1,[0,[11,l,0],l]],[12,91,0]],z],bi=[0,[12,59,[17,[0,n,1,0],0]],x],bj=[0,[17,[0,r,0,0],[12,93,[17,0,0]]],y],bk=[0,[12,44,[17,[0,n,1,0],0]],t],bl=[0,[17,[0,r,0,0],[11,T,[17,0,0]]],U],bm=[0,[15,0],R];function aa(h,b){switch(b[0]){case 0:var a=b[2],i=b[1];d(c[f],h,aY);e(d(c[f],h,aZ),i);d(c[f],h,a0);d(c[f],h,a1);g(k[26],function(a,b){if(a)d(c[f],h,a2);e(e(D[4],h),b);return 1},0,a);d(c[f],h,a3);return d(c[f],h,a4);case 1:var j=b[2],l=b[1];d(c[f],h,a5);e(d(c[f],h,a6),l);d(c[f],h,a7);d(c[f],h,a8);g(k[26],function(a,b){if(a)d(c[f],h,a9);var g=b[2],i=b[1];d(c[f],h,a_);e(d(c[f],h,a$),i);d(c[f],h,ba);e(e(D[3],h),g);d(c[f],h,bb);return 1},0,j);d(c[f],h,bc);return d(c[f],h,bd);default:var -m=b[3],n=b[2],o=b[1];d(c[f],h,be);e(d(c[f],h,bf),o);d(c[f],h,bg);d(c[f],h,bh);g(k[26],function(a,b){if(a)d(c[f],h,bi);e(e(D[2],h),b);return 1},0,n);d(c[f],h,bj);d(c[f],h,bk);e(e(D[1],h),m);return d(c[f],h,bl)}}K(D,[0,j[84],j[65],i[1],i[1]]);var -bn=[0,B],bo=[0,A],bp=[0,C],bq=[0,G,B],br=[0,G,A],bs=[0,G,C],bt=[0,N,24,4],bu=[0,N,27,4],bv=[0,N,35,4],bw=[0,N,38,4],bx="impossible";function -w(a){switch(a[0]){case +m=b[3],n=b[2],o=b[1];d(c[f],h,be);e(d(c[f],h,bf),o);d(c[f],h,bg);d(c[f],h,bh);g(k[26],function(a,b){if(a)d(c[f],h,bi);e(e(D[2],h),b);return 1},0,n);d(c[f],h,bj);d(c[f],h,bk);e(e(D[1],h),m);return d(c[f],h,bl)}}L(D,[0,j[84],j[65],i[1],i[1]]);var +bn=[0,B],bo=[0,A],bp=[0,C],bq=[0,H,B],br=[0,H,A],bs=[0,H,C],bt=[0,O,24,4],bu=[0,O,27,4],bv=[0,O,35,4],bw=[0,O,38,4],bz="impossible";function +v(a){switch(a[0]){case 0:var -b=a[2],c=a[1];if(c=0?a.l:a.l=a.length)==1?a(b):t.caml_call_gen(a,[b])}function @@ -473538,7 +473541,7 @@ g=e(h[144],a);aK(g[1]);var i=g[2];return e(e(l[18],function(a){var i=a[2],g=f(h[58],a[1],b);return g?A(ag(h[112],i,g[1][2],c,d),c):e(C[46],bs)}),i)}]],"Haz3lweb__Store");return}(globalThis)); -//# 2597 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 2600 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var n="show_backpack_targets",q="@ ",O="<2>",w=" =",m="font_metrics",N="%a",K=963043957,L="%B",v="",M="src/haz3lweb/Model.re.ui_state",J=";@ ",u="@]",t="@[%s =@ ",I=143,l="mousedown",g=139,k=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}function @@ -473585,25 +473588,25 @@ b=a[2],c=a[1],e=[0,[1,[0,au,[0,d(o[6],a[3]),0]]],0],f=[0,[1,[0,av,[0,d(o[6],b),0 c=d(e[2][6],0)[3];d(e[3][5],0);d(e[4][19],c);d(e[5][21],c);f(e[6][10],c,1);var b=G(D),g=a[5];return[0,b[1],b[2],b[3],b[4],[0,a[5][1],g[2],g[3]]]}],"Haz3lweb__Model");return}(globalThis)); -//# 2645 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 2648 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var -e=a.jsoo_runtime;function -c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}function -g(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}function -m(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d])}var -b=e.caml_get_global_data(),o=b.Haz3lcore__MakeTerm,n=b.Stdlib,j=b.Haz3lweb__Editors,h=b.Haz3lcore__Statics,s=b.Haz3lcore__Interface,t=b.Haz3lcore__Zipper,u="DEBUG: No action for key: ",v=b.Haz3lcore__Indicated,y=b.Haz3lcore__Id,z=b.Haz3lcore__Info,A="DEBUG: No CI found for index",B="DEBUG: No indicated index",G=b.Haz3lcore__ProgramResult,K=b.Haz3lcore__TermBase,M=b.Haz3lcore__Segment;e.caml_register_global(21,[0,function(a,b){var -e=a[2],i=a[1],f=c(j[29],i);function -d(a){return c(n[46],a)}function -k(a){return c(o[49],a)[1]}var -l=g(j[30],e,i);if(b==="F1")return d(c(t[3],f));if(b==="F2"){var -L=g(t[43],0,f);return d(c(M[3],L))}if(b==="F3"){var -J=k(f);return d(c(K[2][70],J))}if(b==="F4"){var -H=k(f),I=c(g(h[18],e[3],l),H);return d(c(h[1][2],I))}if(b==="F5"){var -C=g(j[31],e,i),r=c(o[50],f)[1],D=m(h[18],e[3],l,r),E=m(s[3],e[3],D,r),F=m(s[4],e[3],[0,C],E);return d(c(G[14],F))}if(b!=="F6")return d(g(n[28],u,b));var -p=c(v[5],f),w=k(f),x=c(g(h[18],e[3],l),w);if(!p)return d(B);var -q=g(y[15][18],p[1],x);return q?d(c(z[170],q[1])):d(A)}],"Haz3lweb__DebugConsole");return}(globalThis)); - -//# 2664 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +f=a.jsoo_runtime;function +c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}function +e(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):f.caml_call_gen(a,[b,c])}function +t(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):f.caml_call_gen(a,[b,c,d])}var +b=f.caml_get_global_data(),n=b.Haz3lcore__MakeTerm,m=b.Stdlib,j=b.Haz3lweb__Editors,h=b.Haz3lcore__Statics,r=b.Haz3lcore__Interface,s=b.Haz3lcore__Zipper,u="DEBUG: No action for key: ",v=b.Haz3lcore__Indicated,y=b.Haz3lcore__Id,z=b.Haz3lcore__Info,A="DEBUG: No CI found for index",B="DEBUG: No indicated index",G=b.Haz3lcore__ProgramResult,K=b.Haz3lcore__TermBase,M=b.Haz3lcore__Segment;f.caml_register_global(21,[0,function(a,b){var +f=a[2],i=a[1],g=c(j[25],i)[1][1];function +d(a){return c(m[46],a)}function +k(a){return c(n[49],a)[1]}var +l=e(j[32],f,i);if(b==="F1")return d(c(s[3],g));if(b==="F2"){var +L=e(s[43],0,g);return d(c(M[3],L))}if(b==="F3"){var +J=k(g);return d(c(K[2][70],J))}if(b==="F4"){var +H=k(g),I=c(e(h[18],f[3],l),H);return d(c(h[1][2],I))}if(b==="F5"){var +C=e(j[33],f,i),q=c(n[50],g)[1],D=t(h[18],f[3],l,q),E=t(r[3],f[3],D,q),F=c(e(r[4],f[3],[0,C]),E);return d(c(G[14],F))}if(b!=="F6")return d(e(m[28],u,b));var +o=c(v[5],g),w=k(g),x=c(e(h[18],f[3],l),w);if(!o)return d(B);var +p=e(y[15][18],o[1],x);return p?d(c(z[170],p[1])):d(A)}],"Haz3lweb__DebugConsole");return}(globalThis)); + +//# 2667 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var N="Log.Entry.import: Deserialization error",O="src/haz3lweb/Log.re.Entry.t",M="<2>",R="@ ",S="ERROR: Log.IDBKV.get",L="ERROR: Log.IDBKV.clear",Q="%a",K="ERROR: Log.IDBKV.get_all",J=143,i=139,P=848054398,g=a.jsoo_runtime,I=g.caml_update_dummy;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}function @@ -473661,7 +473664,7 @@ b=x(a);if(!b)return b;var d=c(o[13],a);return c(o[14],d)},function(b){return c(q[8],function(a){var e=d(ap[7],ao,a),f=d(s[28],e,an);return c(b,d(s[28],aq,f))})}],"Haz3lweb__Log");return}(globalThis)); -//# 2723 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 2726 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var u="%S",i="@ ",D="<2>",n="log",V=125,t=" =",T="%a",U="src/haz3lweb/Export.re.all",S="{ ",y="documentation",z="explainThisModel",m="scratch",l="settings",R="src/haz3lweb/Export.re.all_f22",C=963043957,o="",w=";@ ",Q="@[<2>{ ",s="@]",P="@ }@]",r="@[%s =@ ",O=143,k="exercise",e=139,x=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):x.caml_call_gen(a,[b])}function @@ -473722,18 +473725,18 @@ e=K(E(M[39],0,0,0,a)),d=[0,e[1],bB,e[2],e[3],,e[4]]}var g=c(p[2][9],d[1]);c(p[3][8],d[2]);var h=g[6];f(p[4][22],g[3],d[3]);E(p[6][15],d[4],b,h,g[3]);return c(bC[4],d[6])}],"Haz3lweb__Export");return}(globalThis)); -//# 2784 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 2787 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var b=a.jsoo_runtime;b.caml_register_global(0,[0,function(a){return 0}],"Haz3lweb__State");return}(globalThis)); -//# 2789 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 2792 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var -l=a.jsoo_runtime;function -f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}function -g(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):l.caml_call_gen(a,[b,c])}function -k(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):l.caml_call_gen(a,[b,c,d])}function -J(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):l.caml_call_gen(a,[b,c,d,e])}var -c=l.caml_get_global_data(),t=c.Haz3lcore__ModelResult,j=c.Haz3lweb__Model,h=c.Haz3lweb__Editors,C=c.Haz3lcore__Editor,q=c.Haz3lcore__JsUtil,s=c.Haz3lweb__Benchmark,m=c.Stdlib__List,i=c.Haz3lcore__ModelResults,e=c.Haz3lweb__Store,d=c.Stdlib,x=c.Haz3lweb__Exercise,b=c.Haz3lweb__UpdateAction,u=b[38],n=b[40],B=c.Haz3lweb__WorkerClient,D=c.Haz3lcore__Perform,E=c.Haz3lweb__PersistentData,F="let startup : PersistentData.t = ",G="text/plain",H="Init.ml",I="INFO: Persistent data exported to Init.ml",R=c.Haz3lcore__Selection,S=[0,1],T=c.Haz3lcore__Zipper,V=[3,[2,[1,0,1]]],$=[1,0],af=[1,1],ah=c.Haz3lweb__ExplainThisUpdate,aj=c.Haz3lweb__DebugConsole,ak=c.Haz3lweb__ExerciseSettings,al=c.Haz3lweb__Export,ao=[1,2],aq=[1,2],at=[1,2],ay=c.Stdlib__Option;function +k=a.jsoo_runtime;function +f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}function +g(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):k.caml_call_gen(a,[b,c])}function +l(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):k.caml_call_gen(a,[b,c,d])}function +H(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):k.caml_call_gen(a,[b,c,d,e])}var +c=k.caml_get_global_data(),s=c.Haz3lcore__ModelResult,i=c.Haz3lweb__Editors,j=c.Haz3lweb__Model,C=c.Haz3lcore__Editor,p=c.Haz3lcore__JsUtil,r=c.Haz3lweb__Benchmark,m=c.Stdlib__List,h=c.Haz3lcore__ModelResults,e=c.Haz3lweb__Store,d=c.Stdlib,w=c.Haz3lweb__Exercise,b=c.Haz3lweb__UpdateAction,t=b[38],n=b[40],A=c.Haz3lweb__WorkerClient,B=c.Haz3lweb__PersistentData,D="let startup : PersistentData.t = ",E="text/plain",F="Init.ml",G="INFO: Persistent data exported to Init.ml",O=c.Haz3lcore__Perform,Q=c.Haz3lcore__Selection,R=[0,1],S=c.Haz3lcore__Zipper,U=[3,[2,[1,0,1]]],W=[1,0],Y=[1,1],_=c.Haz3lweb__ExplainThisUpdate,aa=c.Haz3lweb__DebugConsole,ab=c.Haz3lweb__ExerciseSettings,ac=c.Haz3lweb__Export,af=[1,2],ah=[1,2],ak=[1,2],ap=c.Stdlib__Option;function o(a,b){var c=b[2];if(typeof a==="number")switch(a){case @@ -473749,7 +473752,7 @@ ac=1-c[3][3],R=b[5],S=b[4],T=b[3],U=c[9],V=c[8],W=c[7],X=c[6],Y=c[5],Z=c[4],_=c[ ar=1-c[3][2],ae=b[5],af=b[4],ag=b[3],ah=c[9],ai=c[8],aj=c[7],ak=c[6],al=c[5],am=c[4],an=c[3][5],ao=c[3][4],ap=c[3][3],aq=1-c[3][2],as=ar||c[3][1];return[0,b[1],[0,c[1],c[2],[0,as,aq,ap,ao,an],am,al,ak,aj,ai,ah],ag,af,ae];case 6:return[0,b[1],[0,c[1],c[2],c[3],c[4],c[5],c[6],1-c[7],c[8],c[9]],b[3],b[4],b[5]];case 7:return[0,b[1],[0,c[1],c[2],c[3],c[4],1-c[5],c[6],c[7],c[8],c[9]],b[3],b[4],b[5]];default:var -at=b[5],au=b[4],av=b[3],aw=[0,c[1],c[2],c[3],c[4],c[5],1-c[6],c[7],c[8],c[9]];return[0,g(h[33],b[1],1-c[6]),aw,av,au,at]}switch(a[0]){case +at=b[5],au=b[4],av=b[3],aw=[0,c[1],c[2],c[3],c[4],c[5],1-c[6],c[7],c[8],c[9]];return[0,g(i[35],b[1],1-c[6]),aw,av,au,at]}switch(a[0]){case 0:var d=c[3][5];switch(a[1]){case 0:var @@ -473778,124 +473781,115 @@ o=c[8];return[0,b[1],[0,c[1],c[2],c[3],c[4],c[5],c[6],c[7],[0,1-c[8][1],o[2],o[3 l=k[1],f=c[8][3];a:if(typeof l==="number")if(l){if(typeof f==="number"&&f){var -i=1;break a}var -i=0}else{if(typeof +h=1;break a}var +h=0}else{if(typeof f==="number"&&f){var -i=0;break a}var -i=1}else{b:{var +h=0;break a}var +h=1}else{b:{var ax=l[1];if(typeof f==="number"&&f){var q=1;break b}var q=[0,ax]}var -i=q}var -p=c[8];return[0,b[1],[0,c[1],c[2],c[3],c[4],c[5],c[6],c[7],[0,p[1],p[2],i],c[9]],b[3],b[4],b[5]];default:return[0,b[1],[0,c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8],a[1]],b[3],b[4],b[5]]}}function -r(c,b){var +h=q}var +p=c[8];return[0,b[1],[0,c[1],c[2],c[3],c[4],c[5],c[6],c[7],[0,p[1],p[2],h],c[9]],b[3],b[4],b[5]];default:return[0,b[1],[0,c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8],a[1]],b[3],b[4],b[5]]}}function +q(c,b){var d=b[2][3][4];if(d){var -e=g(h[32],b[2][3],b[1]),a=g(i[59],b[3],e);if(1-f(i[33],a)){f(c,[15,a]);k(B[7],a,function(a){return f(c,[15,a])},function(a){return f(c,[15,f(i[56],a)])})}var -j=f(i[60],b[3]),l=1-f(i[33],j);if(l){var -n=f(g(i[53],b[2][3][5],e),j);return f(c,[15,f(f(i[55],b[2][3]),n)])}var -m=l}else +e=g(i[34],b[2][3],b[1]),a=g(h[59],b[3],e);if(1-f(h[33],a)){f(c,[15,a]);l(A[7],a,function(a){return f(c,[15,a])},function(a){return f(c,[15,f(h[56],a)])})}var +j=f(h[60],b[3]),k=1-f(h[33],j);if(k){var +n=f(g(h[53],b[2][3][5],e),j);return f(c,[15,f(f(h[55],b[2][3]),n)])}var +m=k}else var m=d;return m}function -p(a,b){var -d=f(h[25],a[1]),c=k(D[4],a[2][3],b,d);if(0!==c[0])return[1,[0,c[1]]];var -e=a[5],i=a[4],j=a[3],l=a[2];return[0,[0,g(h[26],c[1],a[1]),l,j,i,e]]}function -v(a,b,c){var +u(a,b,c){var e=f(n,b);a:if(e){if(typeof b!=="number"&&11===b[0]){var -i=0;break a}var -i=1}else +h=0;break a}var +h=1}else var -i=e;if(i)var -j=c[5],k=c[4],l=c[3],m=c[2],d=[0,g(h[28],c[2][3],c[1]),m,l,k,j];else +h=e;if(h)var +j=c[5],k=c[4],l=c[3],m=c[2],d=[0,g(i[30],c[2][3],c[1]),m,l,k,j];else var -d=c;if(e&&d[2][3][4]){r(a,d);return d}return d}function -w(a,b,c,d){switch(b[0]){case +d=c;if(e&&d[2][3][4]){q(a,d);return d}return d}function +v(a,b,c,d){switch(b[0]){case 0:var j=b[2];return b[1]===d?0:f(m[1],j)<=d?0:[0,[0,d,b[2]]];case 1:return 0;default:if(f(m[1],b[2])<=d)return 0;var -h=b[2],i=g(m[8],h,d),k=f(x[57],i);return[0,[2,d,h,J(e[6][8],a,k,i,c)]]}}function -y(a,b,c){if(2!==a[0])return 0;var -d=a[2],e=a[1];return[0,[2,e,d,k(x[104],b,c,a[3])]]}function -z(a){var -b=f(e[2][7],0),c=f(e[5][22],b[3]),h=f(e[5][16],c),i=f(e[4][20],b[3]),j=[0,b,f(e[4][14],i),h],l=f(E[14],j),m=g(d[28],F,l);k(q[12],H,G,m);return f(d[46],I)}function -A(a,b,c){return typeof -b==="number"?0===b?[0,a[1],a[2],1]:[0,a[1],a[2],0]:0===b[0]?[0,a[1],b[1],a[3]]:[0,b[1],a[2],a[3]]}l.caml_register_global(33,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30],b[31],b[32],b[33],b[34],b[35],b[36],b[37],u,b[39],n,b[41],o,r,p,v,w,y,z,A,function(e,b,c,d){if(typeof +h=b[2],i=g(m[8],h,d),k=f(w[57],i);return[0,[2,d,h,H(e[6][8],a,k,i,c)]]}}function +x(a,b,c){if(2!==a[0])return 0;var +d=a[2],e=a[1];return[0,[2,e,d,l(w[104],b,c,a[3])]]}function +y(a){var +b=f(e[2][7],0),c=f(e[5][22],b[3]),h=f(e[5][16],c),i=f(e[4][20],b[3]),j=[0,b,f(e[4][14],i),h],k=f(B[14],j),m=g(d[28],D,k);l(p[12],F,E,m);return f(d[46],G)}function +z(a,b,c){return typeof +b==="number"?0===b?[0,a[1],a[2],1]:[0,a[1],a[2],0]:0===b[0]?[0,a[1],b[1],a[3]]:[0,b[1],a[2],a[3]]}k.caml_register_global(33,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30],b[31],b[32],b[33],b[34],b[35],b[36],b[37],t,b[39],n,b[41],o,q,u,v,x,y,z,function(e,b,c,d){function +w(a,b){var +d=g(O[4],a[2][3],b),c=f(f(i[29],a[1]),d);return 0===c[0]?[0,[0,c[1],a[2],a[3],a[4],a[5]]]:[1,[0,c[1]]]}if(typeof b==="number")switch(b){case 0:var a=[0,f(j[22],e)];break;case -1:z(0);var +1:y(0);var a=[0,e];break;case 2:var -Q=k(h[36],e[1],e[2][3],e[2][6]),a=f(j[21],[0,Q,e[2],e[3],e[4],e[5]]);break;case +P=l(i[38],e[1],e[2][3],e[2][6]),a=f(j[21],[0,P,e[2],e[3],e[4],e[5]]);break;case 3:var -x=f(h[25],e[1])[1][1];if(f(R[21],x[1]))var -B=S;else +A=f(i[25],e[1])[1][1];if(f(Q[21],A[1]))var +B=R;else var -U=f(T[67],x)?5:V,B=U;var -a=p(e,B);break;case +T=f(S[67],A)?5:U,B=T;var +a=w(e,B);break;case 4:var a=f(j[21],e);break;case 5:var -W=f(h[25],e[1]),D=f(C[17],W);if(D)var -X=e[5],Y=e[4],Z=e[3],_=e[2],E=[0,[0,g(h[26],D[1],e[1]),_,Z,Y,X]];else -var -E=$;var -a=E;break;default:var -aa=f(h[25],e[1]),F=f(C[18],aa);if(F)var -ab=e[5],ac=e[4],ad=e[3],ae=e[2],G=[0,[0,g(h[26],F[1],e[1]),ae,ad,ac,ab]];else -var -G=af;var -a=G}else +D=g(i[28],e[1],C[17]),V=D?[0,[0,D[1],e[2],e[3],e[4],e[5]]]:W,a=V;break;default:var +E=g(i[28],e[1],C[18]),X=E?[0,[0,E[1],e[2],e[3],e[4],e[5]]]:Y,a=X}else switch(b[0]){case 0:var -l=b[1];a:{if(typeof -l!=="number"&&0===l[0]){var -I=[0,o(l,e)];break a}var -r=o(l,e);f(j[20],r);b:{if(typeof +k=b[1];a:{if(typeof +k!=="number"&&0===k[0]){var +G=[0,o(k,e)];break a}var +q=o(k,e);f(j[20],q);b:{if(typeof b!=="number"&&0===b[0]){var -J=b[1];if(typeof -J!=="number"&&2===J[0]){var -H=[0,f(j[19],r)];break b}}var -H=[0,r]}var -I=H}var -a=I;break;case +H=b[1];if(typeof +H!=="number"&&2===H[0]){var +F=[0,f(j[19],q)];break b}}var +F=[0,q]}var +G=F}var +a=G;break;case 1:var -ag=A(e[5],b[1],d),a=[0,[0,e[1],e[2],e[3],e[4],ag]];break;case +Z=z(e[5],b[1],d),a=[0,[0,e[1],e[2],e[3],e[4],Z]];break;case 2:var -ai=g(ah[7],e[4],b[1]),a=f(j[21],[0,e[1],e[2],e[3],ai,e[5]]);break;case -3:g(aj[1],e,b[1]);var +$=g(_[7],e[4],b[1]),a=f(j[21],[0,e[1],e[2],e[3],$,e[5]]);break;case +3:g(aa[1],e,b[1]);var a=[0,e];break;case -4:g(q[14],b[1],function(a){return f(d,[5,a])});var +4:g(p[14],b[1],function(a){return f(d,[5,a])});var a=[0,e];break;case 5:var -K=b[1],am=K?(g(al[15],K[1],ak[3]),[0,f(j[19],e)]):[0,e],a=am;break;case +I=b[1],ad=I?(g(ac[15],I[1],ab[3]),[0,f(j[19],e)]):[0,e],a=ad;break;case 6:var -L=y(e[1],b[1],e[2][6]),an=L?[0,[0,L[1],e[2],e[3],e[4],e[5]]]:ao,a=an;break;case +J=x(e[1],b[1],e[2][6]),ae=J?[0,[0,J[1],e[2],e[3],e[4],e[5]]]:af,a=ae;break;case 7:var -M=g(h[38],e[1],b[1]),ap=M?f(j[21],[0,M[1],e[2],e[3],e[4],e[5]]):aq,a=ap;break;case -8:g(q[14],b[1],function(a){return f(d,[9,a])});var +K=g(i[40],e[1],b[1]),ag=K?f(j[21],[0,K[1],e[2],e[3],e[4],e[5]]):ah,a=ag;break;case +8:g(p[14],b[1],function(a){return f(d,[9,a])});var a=[0,e];break;case 9:var -ar=k(h[37],e[2][3],e[1],b[1]),a=f(j[21],[0,ar,e[2],e[3],e[4],e[5]]);break;case +ai=l(i[39],e[2][3],e[1],b[1]),a=f(j[21],[0,ai,e[2],e[3],e[4],e[5]]);break;case 10:var -N=w(e[2][3],e[1],e[2][6],b[1]),as=N?f(j[21],[0,N[1],e[2],e[3],e[4],e[5]]):at,a=as;break;case +L=v(e[2][3],e[1],e[2][6],b[1]),aj=L?f(j[21],[0,L[1],e[2],e[3],e[4],e[5]]):ak,a=aj;break;case 11:var -a=p(e,b[1]);break;case +a=w(e,b[1]);break;case 12:var -au=b[1]?(f(s[6],0),[0,e]):(g(m[18],d,s[3]),f(s[5],0),[0,e]),a=au;break;case +al=b[1]?(f(r[6],0),[0,e]):(g(m[18],d,r[3]),f(r[5],0),[0,e]),a=al;break;case 13:var -av=e[5],aw=e[4],ax=e[3],az=f(g(i[6],b[1],function(a){var -b=g(ay[3],a,0);return[0,f(f(t[20],e[2][3][5]),b)]}),ax),a=[0,[0,e[1],e[2],az,aw,av]];break;case +am=e[5],an=e[4],ao=e[3],aq=f(g(h[6],b[1],function(a){var +b=g(ap[3],a,0);return[0,f(f(s[20],e[2][3][5]),b)]}),ao),a=[0,[0,e[1],e[2],aq,an,am]];break;case 14:var -O=b[2],n=b[1];if(O)var -aA=O[1],aB=e[3],aC=f(f(i[19],n),aB),aD=f(f(t[16],aA),aC),aE=e[5],aF=e[4],aG=e[3],aH=f(g(i[4],n,aD),aG),P=[0,[0,e[1],e[2],aH,aF,aE]];else +M=b[2],n=b[1];if(M)var +ar=M[1],as=e[3],at=f(f(h[19],n),as),au=f(f(s[16],ar),at),av=e[5],aw=e[4],ax=e[3],ay=f(g(h[4],n,au),ax),N=[0,[0,e[1],e[2],ay,aw,av]];else var -aI=e[3],aJ=f(f(i[19],n),aI),aK=f(f(t[17],e[2][3][5]),aJ),aL=e[5],aM=e[4],aN=e[3],aO=f(g(i[4],n,aK),aN),P=[0,[0,e[1],e[2],aO,aM,aL]];var -a=P;break;default:var -aP=k(i[10],function(a,b,c){return[0,c]},e[3],b[1]),a=[0,[0,e[1],e[2],aP,e[4],e[5]]]}return g(u[31],a,function(a){return v(d,b,a)})}],"Haz3lweb__Update");return}(globalThis)); +az=e[3],aA=f(f(h[19],n),az),aB=f(f(s[17],e[2][3][5]),aA),aC=e[5],aD=e[4],aE=e[3],aF=f(g(h[4],n,aB),aE),N=[0,[0,e[1],e[2],aF,aD,aC]];var +a=N;break;default:var +aG=l(h[10],function(a,b,c){return[0,c]},e[3],b[1]),a=[0,[0,e[1],e[2],aG,e[4],e[5]]]}return g(t[31],a,function(a){return u(d,b,a)})}],"Haz3lweb__Update");return}(globalThis)); -//# 2966 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 2960 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var u=" -> ",t=")",s="atom",r="(",z="Bool",b="typ-view",y="Int",x="String",q="typ-mod",p="Prod",w="Float",l=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}function @@ -473952,34 +473946,34 @@ h=[0,c(d[5],E),0],i=[0,[0,c(f[1],F),0]];return e(d[14],0,i,h);default:return e(d j=[0,c(d[5],a[1]),0],k=[0,[0,c(f[1],G),0]];return e(d[14],0,k,j)},i,m,n,function(a){var b=[0,i(0,a),0];return e(f[2],ae,0,b)}],"Haz3lweb__Type");return}(globalThis)); -//# 3024 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3018 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var f=a.jsoo_runtime;function b(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}var e=f.caml_get_global_data(),c=e.Haz3lweb__Example,n=e.Haz3lcore__Id,p=e.Haz3lcore__Piece,g=[0,[1,0],b(c[86],"let id : \n forall a -> (a -> a) = \n typfun a -> \n fun x : a -> x \n in id"),"The polymorphic identity function. It may be instantiated at any type a, after which the function acts as type (a -> a)."],d=b(c[22],"a"),h=b(c[19],"e"),j=[0,b(c[85],0),[0,h,0]],k=[0,d,[0,b(c[85],0),0]],l=[0,[0,b(c[85],0),k],0],m=[0,b(c[68],l),j],o=[0,[1,[0,b(n[5],0),0]],0],i=[0,13,m,[0,[0,b(p[30],d),o]],"When applied to a type that which is bound to the [*type variable*](%s), evaluates to the type function [*body*](%s).",[0,g,0]];f.caml_register_global(9,[0,g,d,h,i,[0,13,[0,i,0]]],"Haz3lweb__TypFunctionExp");return}(globalThis)); -//# 3031 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3025 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var f=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}var j=f.caml_get_global_data(),h=j.Haz3lcore__Piece,b=j.Haz3lweb__Example,g=[0,4,c(b[86],"let id : \n forall a -> (a -> a) = \n typfun a -> \n fun x : a -> x \n in id@"),"The polymorphic identity function is instantiated at Int. The type variable a is bound to Int in the type function body and the body evaluates to the identity function on integers."],d=c(b[19],"e_tfun"),e=c(b[21],"ty"),i=[0,17,[0,d,[0,c(b[70],[0,[0,e,0],0]),0]],0,"Applies the [*type function*](%s) to the [*type*](%s).",[0,g,0]];f.caml_register_global(7,[0,g,d,e,function(a,b){var f=[0,[0,c(h[30],e),b],0];return[0,[0,c(h[30],d),a],f]},i,[0,17,[0,i,0]]],"Haz3lweb__TypAppExp");return}(globalThis)); -//# 3039 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3033 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var f=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}var i=f.caml_get_global_data(),g=i.Haz3lcore__Piece,b=i.Haz3lweb__Example,d=c(b[20],"p"),e=c(b[21],"ty"),j=[0,c(b[85],0),[0,e,0]],k=[0,c(b[67],0),j],h=[0,44,[0,d,[0,c(b[85],0),k]],0,"Only expressions that match the [type annotated pattern](%s) and have the [indicated type](%s) match this type annotation pattern.",0];f.caml_register_global(5,[0,d,e,function(a,b){var f=[0,[0,c(g[30],e),b],0];return[0,[0,c(g[30],d),a],f]},h,[0,45,[0,h,0]]],"Haz3lweb__TypAnnPat");return}(globalThis)); -//# 3047 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3041 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var f=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}var i=f.caml_get_global_data(),g=i.Haz3lcore__Piece,b=i.Haz3lweb__Example,d=c(b[22],"p"),e=c(b[21],"ty_def"),j=[0,c(b[19],"e_body"),0],k=[0,c(b[84],0),j],l=[0,e,[0,c(b[85],0),0]],m=[0,[0,c(b[85],0),l],0],n=[0,d,[0,c(b[85],0),0]],o=[0,[0,c(b[85],0),n],m],h=[0,25,[0,c(b[74],o),k],0,"The [*type*](%s) is bound to the [*type variable*](%s) in the body.",0];f.caml_register_global(6,[0,d,e,function(a,b){var f=[0,[0,c(g[30],e),b],0];return[0,[0,c(g[30],d),a],f]},h,[0,25,[0,h,0]]],"Haz3lweb__TyAliasExp");return}(globalThis)); -//# 3055 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3049 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var v="ty3",g="ty2",u="...",c="ty1",k=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}var @@ -473987,7 +473981,7 @@ t=k.caml_get_global_data(),e=t.Haz3lcore__Piece,b=t.Haz3lweb__Example,l=d(b[63], c=[0,[0,d(e[30],o),b],0];return[0,[0,d(e[30],n),a],c]},q,h,i,j,function(a,b,c){var f=[0,[0,d(e[30],j),c],0],g=[0,[0,d(e[30],i),b],f];return[0,[0,d(e[30],h),a],g]},s,[0,58,[0,f,0]],[0,59,[0,m,0]],[0,60,[0,q,[0,f,0]]],[0,61,[0,s,[0,f,0]]]],"Haz3lweb__TupleTyp");return}(globalThis)); -//# 3064 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3058 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c="p1",g="p2",u="p3",t="...",k=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}var @@ -473995,7 +473989,7 @@ s=k.caml_get_global_data(),e=s.Haz3lcore__Piece,b=s.Haz3lweb__Example,l=d(b[62], c=[0,[0,d(e[30],n),b],0];return[0,[0,d(e[30],m),a],c]},p,h,i,j,function(a,b,c){var f=[0,[0,d(e[30],j),c],0],g=[0,[0,d(e[30],i),b],f];return[0,[0,d(e[30],h),a],g]},r,[0,41,[0,f,0]],[0,42,[0,p,[0,f,0]]],[0,43,[0,r,[0,f,0]]]],"Haz3lweb__TuplePat");return}(globalThis)); -//# 3073 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3067 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var g="e2",w="...",v="e3",c="e1",m=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):m.caml_call_gen(a,[b])}var @@ -474003,7 +473997,7 @@ u=m.caml_get_global_data(),e=u.Haz3lcore__Piece,b=u.Haz3lweb__Example,h=[0,2,d(b c=[0,[0,d(e[30],p),b],0];return[0,[0,d(e[30],o),a],c]},r,j,k,l,function(a,b,c){var f=[0,[0,d(e[30],l),c],0],g=[0,[0,d(e[30],k),b],f];return[0,[0,d(e[30],j),a],g]},t,[0,14,[0,f,0]],[0,15,[0,r,[0,f,0]]],[0,16,[0,t,[0,f,0]]]],"Haz3lweb__TupleExp");return}(globalThis)); -//# 3082 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3076 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var am="substituted",N="FailedCastDelim",al="operationError",M="Step",ak="collapsed",aj="term",L="HoleLabel",ai="steppable",K="Delim",J="Term",ag="invalid",ah="stepped",H="VarHole",I="CastDecoration",af="varHole",G="InconsistentBranches",F="NonEmptyHole",E="Steppable",ac="inconsistentBranches",ad="step",ae="castDecoration",C="Invalid",D="Stepped",B="Substituted",A="Collapsed",z="FailedCastDecoration",ab="nonEmptyHole",aa="emptyHole",y="EmptyHole",$="delim",_="failedCastDelim",Y="holeLabel",Z="failedCastDecoration",x="OperationError",h=a.jsoo_runtime,l=h.caml_string_compare;function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}function @@ -474052,7 +474046,7 @@ h=a[2],j=f(U[1][4],a[1]);return[1,[0,O,[0,j,[0,f(i[4],h),0]]]];case 5:return[1,[0,Q,[0,f(i[4],a[1]),0]]];case 6:return[1,[0,R,[0,f(V[4],a[1]),0]]];default:return[1,[0,S,[0,f(k[15],a[1]),0]]]}}],"Haz3lweb__DHAnnot");return}(globalThis)); -//# 3132 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3126 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var e=246,k=250,j=244,f=a.jsoo_runtime,q=f.caml_array_get,A=f.caml_maybe_attach_backtrace,i=f.caml_obj_tag;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}function @@ -474126,7 +474120,7 @@ g=c,e=d;else var g=d,e=c;return[0,q(b[2],e),q(b[2],g)]}),t)}return d(p[2],v)}],"Haz3lweb__SegmentTree");return}(globalThis)); -//# 3207 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3201 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var f=254,F=-1.,i=0.5,E="src/haz3lweb/util/SvgUtil.re",j=a.jsoo_runtime,h=j.caml_copysign_float,C=j.caml_equal,D=j.caml_maybe_attach_backtrace,q=j.caml_signbit_float;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}function @@ -474234,7 +474228,7 @@ b=d[1];if(x(b,g))return 0;var e=j(b);return[0,s(b),e]}var p=j(g),q=y(a,[0,s(g),p]);return c(c(d[5],[0,[f,(g[1][1]+g[2][1])*i,(g[1][2]+g[2][2])*i]]),q)}]],"Haz3lweb__SvgUtil");return}(globalThis)); -//# 3316 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3310 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var v="decoration-container",u="px",t="-container",r="non-scaling-stroke",s="px;",q="%fpx",p="%s-container",n="vector-effect",o="style",c=2.5,f=a.jsoo_runtime;function h(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}function @@ -474254,7 +474248,7 @@ B=l(k[4],A,q,r),D=[0,j(i[1][1],C,B),0],G=[0,F,[0,j(k[4],E,f),0]],H=[0,[0,h(i[1][ f=a?a[1]:0.,m=e(0,[0,f],[0,0,c[1]],c[2]),g=h(h(d[5][7],b),m),k=[0,j(i[1][1],D,B),0],l=[0,h(i[1][16],G),k];return h(h(d[4][17],l),g)}],[0,function(a,b,c){var f=a?a[1]:0.,m=e(0,[0,f],[0,0,c[1]],c[2]),g=h(h(d[5][7],b),m),k=[0,j(i[1][1],K,H),0],l=[0,h(i[1][16],M),k];return h(h(d[4][17],l),g)}]],"Haz3lweb__Decoration_common");return}(globalThis)); -//# 3348 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3342 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var t=":",k=")",j="(",s="->",r=">",h=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}function @@ -474289,7 +474283,7 @@ c=[0,b,[0,d(e[8],aq),0]],f=[0,a,[0,d(e[8],ar),c]];return d(e[18],f)},function(a, c=[0,b,[0,d(e[8],as),0]],f=[0,a,[0,d(e[8],at),c]];return d(e[18],f)},function(a,b){var c=d(f[33],b),g=[0,a,[0,V,[0,d(e[8],c),0]]];return d(e[18],g)}],"Haz3lweb__DHDoc_common");return}(globalThis)); -//# 3384 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3378 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}function @@ -474338,7 +474332,7 @@ e=q;break;case e=f(d[25],c[1]);break;default:var r=c[2],s=c[1],t=d[2],v=g([0,t<=i(r)?1:0])(r),w=g([0,t=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}function @@ -474391,7 +474385,7 @@ b=l(0,a,aK);return f(d[11],aO,b)}),aN],aR=f(k[28],aL,aQ),aT=f(k[28],aS,aR),aU=[0 r=f(d[11],2,g);if(!h)return r;var G=[0,r,[0,j(F),0]],I=[0,j(H),G];return e(d[18],I)}g.caml_register_global(34,[0,l],"Haz3lweb__HTypDoc");return}(globalThis)); -//# 3492 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3486 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var d=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):d.caml_call_gen(a,[b])}function @@ -474403,7 +474397,7 @@ a==="number")switch(a){case 1:return 3;default:return 1}return[0,a[1]]}d.caml_register_global(2,[0,function(a,b){var d=c(h(g[1],0,a),b);return c(c(f[26],e),d)}],"Haz3lweb__DHDoc_Typ");return}(globalThis)); -//# 3505 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3499 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var g="+",e=">",f="in",d="<",v=a.jsoo_runtime,a8=v.caml_ml_string_length;function j(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):v.caml_call_gen(a,[b])}function @@ -474655,14 +474649,14 @@ bh=j(l[8],ar),bi=[0,j(j(l[11],8),bh),[0,b,0]],G=j(l[18],bi);break a}}}var G=b}var bg=bf?m(l[11],7,G):ap?m(l[11],[7,ap[1][2]],G):G;return bg}return ag(i,h,b,d,e,f,m(n[21],function(a,b){return[0,b[3],a]},g),0)}],"Haz3lweb__DHDoc_Exp");return}(globalThis)); -//# 3765 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3759 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var d=a.jsoo_runtime;function h(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):d.caml_call_gen(a,[b])}function g(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):d.caml_call_gen(a,[b,c])}var e=d.caml_get_global_data(),f=e.Haz3lweb__DHAnnot,b=e.Pretty__MeasuredLayout,c=e.Haz3lweb__WeakMap;d.caml_register_global(3,[0,function(a){return g(b[5],f[1],a)},function(a){return g(b[3],f[2],a)},h(b[12],[0,c[6],c[7],c[8]])[1]],"Haz3lweb__DHMeasuredLayout");return}(globalThis)); -//# 3773 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3767 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c="OperationError",k=a.jsoo_runtime;function n(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}function @@ -474702,7 +474696,7 @@ E=[0,[0,n(i[1][15],D),0]];return[0,[0,o(j[38],0,E,g),0],f];case G=[0,[0,n(i[1][15],F),0]];return[0,[0,o(j[38],0,G,g),0],f]}}return[0,g,f]}),0,0,b),c=a[2],g=a[1],r=[0,n(h(t)(0),g),c],G=[0,[0,n(i[1][16],E),0]];return o(j[14],0,G,r)}k.caml_register_global(32,[0,h,r,function(a,b,c,d,e,f,g,h,i,j,k,l,m){var p=g?g[1]:0,s=h?h[1]:0,t=i?i[1]:0,u=j?j[1]:0,v=k?k[1]:0,x=N(G[10],c,0,d,s,t,u,v,w[13],m),y=o(H[4],x,f,p);return r(b,e,l,n(n(J[1],function(a){return n(q[2],I)}),y))}],"Haz3lweb__DHCode");return}(globalThis)); -//# 3814 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3808 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var w=100.,v="test-instances",o=a.jsoo_runtime;function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}function @@ -474742,13 +474736,13 @@ a=j(n[21],e,d);if(a){var f=a[1];if(2!==g(n[7],f)){var o=j(m[20],function(a){return p(k,b,c,a)},f),q=[0,[0,g(l[1][15],V),0]],r=[0,i(h[14],0,q,o),0],s=[0,[0,g(l[1][15],W),0]];return[0,i(h[14],0,s,r)]}}return 0}],"Haz3lweb__TestView");return}(globalThis)); -//# 3855 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3849 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;function b(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}var i=e.caml_get_global_data(),c=i.Haz3lweb__Example,j=i.Haz3lcore__Piece,f=[0,12,b(c[86],"test true end"),"This is reported as a passing test because the body of the test is true."],g=[0,13,b(c[86],"test 3 < 1 end"),"This is reported as a failing test because the body of the test is 3 < 1 which evaluates to false."],d=b(c[19],"e"),k=[0,d,[0,b(c[85],0),0]],l=[0,[0,b(c[85],0),k],0],h=[0,23,[0,b(c[76],l),0],0,"If the [*body*](%s) of the test evalutes to `true`, the test passes. Otherwise, the test fails.",[0,f,[0,g,0]]];e.caml_register_global(8,[0,f,g,d,function(a){return[0,[0,b(j[30],d),a],0]},h,[0,23,[0,h,0]]],"Haz3lweb__TestExp");return}(globalThis)); -//# 3862 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3856 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var d=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):d.caml_call_gen(a,[b])}var @@ -474756,7 +474750,7 @@ b=d.caml_get_global_data().Haz3lweb__Example,e=[0,47,[0,c(b[21],"Int"),0],0,"The i(a){var d=c(b[87],a);return[0,51,[0,c(b[21],d),0],0,j,0]}d.caml_register_global(10,[0,e,f,g,h,i,[0,48,[0,e,0]],[0,49,[0,f,0]],[0,50,[0,g,0]],[0,51,[0,h,0]],function(a){return[0,52,[0,i(a),0]]}],"Haz3lweb__TerminalTyp");return}(globalThis)); -//# 3871 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3865 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var f=a.jsoo_runtime;function b(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}var @@ -474775,7 +474769,7 @@ d=b(c[87],a);return[0,34,[0,b(c[20],d),0],0,t,0]}function n(a){var d=b(c[87],a);return[0,35,[0,b(c[20],d),0],0,u,0]}f.caml_register_global(13,[0,g,h,i,j,k,l,m,n,[0,29,[0,g,0]],function(a){return[0,30,[0,h(a),0]]},function(a){return[0,31,[0,i(a),0]]},function(a){return[0,32,[0,j(a),0]]},function(a){return[0,33,[0,k(a),0]]},[0,34,[0,l,0]],function(a){return[0,35,[0,m(a),0]]},function(a){return[0,36,[0,n(a),0]]}],"Haz3lweb__TerminalPat");return}(globalThis)); -//# 3891 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3885 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var f=a.jsoo_runtime;function b(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}var @@ -474793,7 +474787,7 @@ d=b(c[87],a);return[0,8,[0,b(c[19],d),0],0,u,0]}function o(a){var d=b(c[87],a);return[0,9,[0,b(c[19],d),0],0,v,0]}f.caml_register_global(15,[0,g,[0,2,[0,g,0]],h,i,[0,3,[0,i,0]],j,function(a){return[0,4,[0,j(a),0]]},k,function(a){return[0,5,[0,k(a),0]]},l,function(a){return[0,6,[0,l(a),0]]},m,function(a){return[0,7,[0,m(a),0]]},n,function(a){return[0,8,[0,n(a),0]]},o,function(a){return[0,9,[0,o(a),0]]}],"Haz3lweb__TerminalExp");return}(globalThis)); -//# 3910 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3904 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var d=a.jsoo_runtime;function b(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):d.caml_call_gen(a,[b])}function @@ -474804,7 +474798,7 @@ d=t(r[28],a,q),e=b(c[87],d);return[0,62,[0,b(c[21],e),0],0,p,0]}function h(a){var d=b(c[87],a);return[0,63,[0,b(c[21],d),0],0,s,0]}d.caml_register_global(10,[0,f,g,h,[0,62,[0,f,0]],function(a){return[0,63,[0,g(a),0]]},function(a){return[0,64,[0,h(a),0]]}],"Haz3lweb__SumTyp");return}(globalThis)); -//# 3922 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3916 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var o="M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001 c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213 C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606 C255,161.018,253.42,157.202,250.606,154.389z",s="0 0 100 125",r="px",q="-0.5 -0.5 25 25",n="0 0 512 512",m="0 0 330 330",l="",p="%fpx",g="0 0 1200 1200",f=a.jsoo_runtime;function d(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):f.caml_call_gen(a,[b,c])}function @@ -474815,7 +474809,7 @@ f=a?a[1]:G,g=d(x[20],function(a){var b=0,c=f==l?0:[0,d(e[1][1],w,f),0],g=[0,d(e[1][1],t,a),0],h=[0,d(u[37],g,c)];return k(i[63],v,0,h,b)},c),m=[0,d(e[1][1],z,y),0],n=d(j[4],A,h),o=[0,d(e[1][1],B,n),m],p=d(j[4],C,h),q=[0,d(e[1][1],D,p),o],r=[0,[0,d(e[1][1],E,b),q]];return k(i[63],F,0,r,g)}var H=b(0,g,[0,"m1193.2 690.95c4.4883-29.664 6.8281-60.047 6.8281-90.961 0-30.91-2.3398-61.273-6.8281-90.938l-151.37-74.305c-3.8398-10.262-8.0156-20.363-12.562-30.266l54.469-159.52c-36.109-49.148-79.527-92.566-128.66-128.67l-159.53 54.469c-9.8984-4.5234-19.992-8.7109-30.266-12.551l-74.301-151.36c-29.664-4.5234-60.051-6.8516-90.961-6.8516s-61.285 2.3281-90.949 6.8516l-74.305 151.36c-10.262 3.8398-20.352 8.0273-30.266 12.551l-159.52-54.465c-49.129 36.109-92.543 79.535-128.66 128.66l54.457 159.52c-4.5117 9.8984-8.6875 20.004-12.539 30.266l-151.36 74.312c-4.5117 29.664-6.8516 60.023-6.8516 90.938 0 30.91 2.3398 61.297 6.8516 90.961l151.36 74.305c3.8516 10.262 8.0273 20.352 12.539 30.277l-54.453 159.51c36.121 49.129 79.535 92.543 128.66 128.68l159.52-54.457c9.9102 4.5117 20.004 8.6875 30.266 12.527l74.305 151.37c29.672 4.5039 60.047 6.8438 90.957 6.8438s61.297-2.3398 90.961-6.8398l74.293-151.37c10.273-3.8398 20.363-8.0156 30.289-12.527l159.5 54.457c49.129-36.133 92.543-79.547 128.65-128.68l-54.461-159.51c4.5469-9.9258 8.7227-20.016 12.562-30.277zm-593.17 48.516c-77.016 0-139.44-62.449-139.44-139.48 0-77.016 62.426-139.45 139.44-139.45s139.48 62.438 139.48 139.45c0 77.027-62.461 139.48-139.48 139.48z",0]),I=b(0,g,[0,"m1120.5 531.75c-17.062-130.24-82.332-249.36-182.92-333.83-100.59-84.477-229.19-128.18-360.42-122.48-131.23 5.7031-255.56 60.395-348.44 153.28s-147.57 217.21-153.28 348.44c-5.6992 131.23 38 259.83 122.48 360.42 84.477 100.59 203.59 165.86 333.83 182.92 106.75 13.984 215.22-5.1875 310.71-54.922 95.488-49.734 173.38-127.62 223.11-223.11 49.734-95.492 68.906-203.96 54.922-310.71zm-445.5 317.25c0 26.793-14.293 51.555-37.5 64.953-23.207 13.395-51.793 13.395-75 0-23.207-13.398-37.5-38.16-37.5-64.953v-225c0-26.793 14.293-51.555 37.5-64.953 23.207-13.395 51.793-13.395 75 0 23.207 13.398 37.5 38.16 37.5 64.953zm-75-423c-19.891 0-38.969-7.9023-53.031-21.969-14.066-14.062-21.969-33.141-21.969-53.031s7.9023-38.969 21.969-53.031c14.062-14.066 33.141-21.969 53.031-21.969s38.969 7.9023 53.031 21.969c14.066 14.062 21.969 33.141 21.969 53.031s-7.9023 38.969-21.969 53.031c-14.062 14.066-33.141 21.969-53.031 21.969z",0]),J=b(0,g,[0,"m1045.2 459.6-270-57.602-136.8-238.8c-16.801-28.801-58.801-28.801-75.602 0l-138 238.8-270 57.602c-32.398 7.1992-45.602 46.801-24 72l184.8 205.2-28.801 273.6c-3.6016 33.598 30 57.598 61.199 44.398l252-111.6 252 111.6c31.199 13.199 64.801-10.801 61.199-44.398l-28.801-273.6 184.8-205.2c21.602-25.203 9.6016-64.801-24-72z",0]),K=b(0,g,[0,"m700.88 364.88v-94.312c0-10.5-8.4375-18.75-18.75-18.75h-98.812c1.3125-22.5 9.5625-94.688 61.5-123.19 52.688-29.062 140.25-6.1875 253.31 66.375 8.625 5.625 20.25 3.1875 25.875-5.625 5.625-8.625 3-20.25-5.625-25.875-127.12-81.562-225.38-104.44-291.94-67.688-70.312 38.812-79.5 129.75-80.625 156h-99c-10.312 0-18.75 8.25-18.75 18.75v92.438c0 0.5625 0 1.3125 0.1875 1.875-153.19 55.688-262.69 202.69-262.69 374.81 0 219.94 178.88 398.81 398.81 398.81s399-178.88 399-398.81c0-171.94-109.5-318.75-262.5-374.81zm-82.688 90.75c-9.9375-3.1875-15.375-13.688-12.375-23.625 3.1875-9.75 13.688-15.375 23.438-12.188 2.8125 0.9375 279 90.75 237.75 385.31-1.3125 9.375-9.375 16.125-18.562 16.125-0.9375 0-1.6875 0-2.625-0.1875-10.312-1.3125-17.438-10.875-15.938-21 36.938-263.62-201.56-341.25-211.69-344.44z",[0,"m893.25 244.88-30.562 29.25c-3.5625 3.5625-8.25 5.25-12.938 5.25-4.875 0-9.9375-1.875-13.5-5.8125-7.3125-7.5-6.9375-19.312 0.5625-26.438l30.562-29.25c7.5-7.3125 19.5-6.9375 26.625 0.5625s6.75 19.312-0.75 26.438z",[0,"m958.31 83.25-6.75 41.625c-1.3125 9.375-9.375 15.75-18.375 15.75-0.9375 0-2.0625 0-3-0.1875-10.312-1.6875-17.25-11.25-15.562-21.375l6.75-41.812c1.6875-10.312 11.438-17.25 21.562-15.562s17.062 11.25 15.375 21.562z",[0,"m1028.4 249.94c-3.5625 4.5-9 6.9375-14.625 6.9375-4.125 0-8.25-1.3125-11.625-4.125l-33-26.438c-8.0625-6.5625-9.375-18.375-2.8125-26.438 6.375-8.0625 18.188-9.375 26.25-2.8125l33 26.438c8.0625 6.5625 9.375 18.375 2.8125 26.438z",[0,"m1023.6 155.06-38.438 17.812c-2.4375 1.125-5.25 1.6875-7.875 1.6875-6.9375 0-13.875-4.125-17.062-10.875-4.3125-9.375-0.1875-20.625 9.1875-24.938l38.438-17.812c9.375-4.3125 20.625-0.1875 24.938 9.1875s0.1875 20.625-9.1875 24.938z",[0,"m956.62 284.06c0.75 10.312-7.125 19.312-17.438 19.875-0.5625 0.1875-0.9375 0.1875-1.3125 0.1875-9.75 0-18-7.6875-18.75-17.625l-2.8125-42.188c-0.5625-10.312 7.125-19.312 17.625-19.875 10.312-0.75 19.125 7.125 19.875 17.438z",0]]]]]]),L=b(0,"0 0 67.671 67.671",[0,"M52.946,23.348H42.834v6h10.112c3.007,0,5.34,1.536,5.34,2.858v26.606c0,1.322-2.333,2.858-5.34,2.858H14.724 c-3.007,0-5.34-1.536-5.34-2.858V32.207c0-1.322,2.333-2.858,5.34-2.858h10.11v-6h-10.11c-6.359,0-11.34,3.891-11.34,8.858v26.606 c0,4.968,4.981,8.858,11.34,8.858h38.223c6.358,0,11.34-3.891,11.34-8.858V32.207C64.286,27.239,59.305,23.348,52.946,23.348z",[0,"M24.957,14.955c0.768,0,1.535-0.293,2.121-0.879l3.756-3.756v13.028v6v11.494c0,1.657,1.343,3,3,3s3-1.343,3-3V29.348v-6 V10.117l3.959,3.959c0.586,0.586,1.354,0.879,2.121,0.879s1.535-0.293,2.121-0.879c1.172-1.171,1.172-3.071,0-4.242l-8.957-8.957 C35.492,0.291,34.725,0,33.958,0c-0.008,0-0.015,0-0.023,0s-0.015,0-0.023,0c-0.767,0-1.534,0.291-2.12,0.877l-8.957,8.957 c-1.172,1.171-1.172,3.071,0,4.242C23.422,14.662,24.189,14.955,24.957,14.955z",0]]),M=b(0,"0 0 61 61",[0,"M49.561,16.464H39.45v6h10.111c3.008,0,5.341,1.535,5.341,2.857v26.607c0,1.321-2.333,2.858-5.341,2.858H11.34 c-3.007,0-5.34-1.537-5.34-2.858V25.324c0-1.322,2.333-2.858,5.34-2.858h10.11v-6H11.34C4.981,16.466,0,20.357,0,25.324v26.605 c0,4.968,4.981,8.857,11.34,8.857h38.223c6.357,0,11.34-3.891,11.34-8.857V25.324C60.902,20.355,55.921,16.464,49.561,16.464z",[0,"M39.529,29.004c-0.768,0-1.535,0.294-2.121,0.88l-3.756,3.755V20.612v-6V3.117c0-1.656-1.343-3-3-3s-3,1.344-3,3v11.494v6 v13.23l-3.959-3.958c-0.586-0.586-1.354-0.88-2.121-0.88s-1.535,0.294-2.121,0.88c-1.172,1.17-1.172,3.07,0,4.241l8.957,8.957 c0.586,0.586,1.354,0.877,2.12,0.877c0.008,0,0.016,0,0.023,0s0.015,0,0.022,0c0.768,0,1.534-0.291,2.12-0.877l8.957-8.957 c1.172-1.171,1.172-3.071,0-4.241C41.064,29.298,40.298,29.004,39.529,29.004z",0]]),N=b(0,n,[0,"M129.7,46.4l37.2,37.7l-66.6,67.1h254.4c86.8,0,157.2,70.4,157.2,157.2s-70.4,157.2-157.2,157.2h-52.4v-52.4h52.4 c57.9,0,104.8-46.9,104.8-104.8s-46.9-104.8-104.8-104.8H100.4l66.6,65.8l-37.2,36.9L0,177.4L129.7,46.4z",0]),O=b(0,n,[0,"M382.3,46.4l-37.2,37.7l66.6,67.1H157.2C70.4,151.2,0,221.6,0,308.4s70.4,157.2,157.2,157.2h52.4v-52.4h-52.4 c-57.9,0-104.8-46.9-104.8-104.8s46.9-104.8,104.8-104.8h254.4l-66.6,65.8l36.9,36.9l130-128.9L382.3,46.4z",0]),P=b(0,q,[0,"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm1.25 17c0 .69-.559 1.25-1.25 1.25-.689 0-1.25-.56-1.25-1.25s.561-1.25 1.25-1.25c.691 0 1.25.56 1.25 1.25zm1.393-9.998c-.608-.616-1.515-.955-2.551-.955-2.18 0-3.59 1.55-3.59 3.95h2.011c0-1.486.829-2.013 1.538-2.013.634 0 1.307.421 1.364 1.226.062.847-.39 1.277-.962 1.821-1.412 1.343-1.438 1.993-1.432 3.468h2.005c-.013-.664.03-1.203.935-2.178.677-.73 1.519-1.638 1.536-3.022.011-.924-.284-1.719-.854-2.297z",0]),Q=b(0,q,[0,"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z",0]),R=b([0,"scale(-0.75, 0.75) translate(-330, 50)"],m,[0,o,0]),S=b([0,"scale(0.75, 0.75) translate(0, 50)"],m,[0,o,0]),T=b(0,"0 0 48 48",[0,"M24 9c-10 0-18.54 6.22-22 15 3.46 8.78 12 15 22 15 10.01 0 18.54-6.22 22-15-3.46-8.78-11.99-15-22-15zm0 25c-5.52 0-10-4.48-10-10s4.48-10 10-10 10 4.48 10 10-4.48 10-10 10zm0-16c-3.31 0-6 2.69-6 6s2.69 6 6 6 6-2.69 6-6-2.69-6-6-6z",0]),U=b(0,"0 0 24 24",[0,"M3 6v18h18v-18h-18zm5 14c0 .552-.448 1-1 1s-1-.448-1-1v-10c0-.552.448-1 1-1s1 .448 1 1v10zm5 0c0 .552-.448 1-1 1s-1-.448-1-1v-10c0-.552.448-1 1-1s1 .448 1 1v10zm5 0c0 .552-.448 1-1 1s-1-.448-1-1v-10c0-.552.448-1 1-1s1 .448 1 1v10zm4-18v2h-20v-2h5.711c.9 0 1.631-1.099 1.631-2h5.315c0 .901.73 2 1.631 2h5.712z",0]),V=b(0,"100 0 500 500",[0,"m499.84 130.51c-93.363-93.363-207.59-129.06-300.65-36.051-95.07 95.113-116.07 213.15-62.562 350.83 3.1484 8.0508-0.875 28.438 9.5391 38.895 10.414 10.457 29.836 5.4688 36.707 8.0078 128.84 47.512 254.8 37.188 353.02-61.25 93.008-92.797 57.352-207.03-36.055-300.43zm-12.383 12.383c32.289 32.289 88.508 99.574 85.094 173.64-76.211-33.34-85.922-85.141-144.77-143.98-35.48-35.48-103.82-58.055-116.07-114.62 66.02-4.1992 129.24 38.324 175.74 84.961zm36.051 275.89c-87.5 87.5-199.98 106.62-334.55 56.875-9.1875-3.3672-27.344-1.0508-30.625-3.9375-3.8945-3.9375-1.5742-22.488-5.6016-32.855-51.539-132.48-32.375-241.11 58.625-332.11 25.418-25.375 53.113-40.949 82.773-46.68 13.434 66.012 87.195 90.777 121.5 124.86 58.449 58.672 69.082 114.23 154.88 149.71-5.0742 27.91-19.25 56.438-46.988 84.129z",[0,"m274.01 374.72 108.11-108.11c1.7695-1.6133 2.8047-3.8789 2.8594-6.2734 0.054688-2.3945-0.875-4.707-2.5703-6.3984-1.6953-1.6914-4.0117-2.6133-6.4062-2.5508-2.3945 0.066406-4.6602 1.1055-6.2656 2.8828l-108.11 108.06c-3.418 3.4219-3.418 8.9648 0 12.383s8.9609 3.418 12.383 0z",[0,"m445.42 399.61c-0.52344 0.39453-52.938 40.555-115.54 46.242-4.832 0.4375-8.3984 4.707-7.9609 9.5391 0.43359 4.832 4.7031 8.3984 9.5352 7.9609 67.855-6.168 122.5-48.125 124.69-49.832 1.9062-1.3945 3.168-3.5 3.4961-5.8398 0.32813-2.3398-0.30469-4.7109-1.75-6.5781-1.4492-1.8672-3.5898-3.0703-5.9375-3.3359-2.3438-0.26172-4.6992 0.43359-6.5273 1.9297z",[0,"m344.93 410.64c2.2617 4.2617 7.5469 5.8828 11.812 3.6328 34.762-18.434 68.016-39.586 99.441-63.262 3.8086-2.9844 4.4727-8.4883 1.4883-12.297-2.9844-3.8047-8.4883-4.4688-12.293-1.4844-30.648 23.004-63.031 43.598-96.863 61.598-4.2422 2.2812-5.8477 7.5586-3.5859 11.812z",[0,"m350 357.61c-2.8438-3.8984-8.3008-4.7578-12.207-1.9258-0.52344 0.35156-50.18 36.445-105.61 71.094-2.0391 1.1953-3.5078 3.1641-4.0742 5.4609-0.5625 2.2969-0.17578 4.7227 1.0781 6.7305 1.2539 2.0039 3.2656 3.4141 5.5781 3.9141 2.3125 0.49609 4.7266 0.039062 6.6953-1.2734 56.043-34.738 106-71.402 106.53-71.793 3.9258-2.8164 4.8242-8.2812 2.0117-12.207z",0]]]]]),W=b(0,"0 0 24 24 ",[0,"M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z",0]),X=b(0,s,[0,"M56,54v-4c0-1.1,0.9-2,2-2s2,0.9,2,2v4c0,1.1-0.9,2-2,2S56,55.1,56,54z M94,28v12v36c0,3.3-2.7,6-6,6H12c-3.3,0-6-2.7-6-6 V40V28c0-5.5,4.5-10,10-10h68C89.5,18,94,22.5,94,28z M84,22H24c1.3,1.7,2,3.7,2,6v10h64V28C90,24.7,87.3,22,84,22z M10,38h12V28 c0-3.3-2.7-6-6-6s-6,2.7-6,6V38z M12,78h10V42H10v34C10,77.1,10.9,78,12,78z M90,42H26v36h62c1.1,0,2-0.9,2-2V42z",0]),Y=b(0,s,[0,"M48.8,68.2c-2,0.8-1.6,2.2-2.1,2.5c-0.8,0.3-0.1-1-2.1-1.6c-4.5-1.4-4,4.3-6.5,4.2c-1.7-0.1-1.8-0.6-3.4-0.4 c-1.6,0.3-1.1,2.1-2.9,2.3c-1.1,0.1-0.7,1.2-2.4,1c-1.4-0.2-2,1.6-2.1,2.7c-0.1,0.8-0.3,1.6-1.6,2.3c-1.2,0.7-3.3,0.2-4.4,1.7 c-1.6,2-1.7,5.1-1.7,5.1h60.7c0,0-0.1-2.3-2.6-3.9c-0.7-0.4,0.1-0.4,0.4-2c0.1-0.6,0-1.5-0.7-2.6c-0.9-1.3-2.7-0.9-3.4-0.7 c0.2-0.9,0.2-2-1.2-2.9c-1-0.7-1.3-0.3-1.9-0.4c-0.7-0.1-0.3-0.8-1-1.2c-1.8-1.1-0.5-2.1-3.3-3.2c-1.7-0.7-2-0.6-5.6-0.6 c-1.4,0-1.7-2.3-3.6-1.8c-1.9,0.6-1.1-0.5-2.2-1.6c-0.3-0.3-0.9-0.5-1.5-0.5c-0.1-10.6-0.1-24.5,0.3-27.2c0.6-4.5,5.7-9.8,13.1-10.6 c-7,5.2-10.2,6.7-10.8,9.9c-0.6,3.2,5.1,2.5,9.6,0c4.5-2.5,12.1-14.6,12.4-19c-6.4-1.6-22,4.1-27.1,16.6C49.6,26.6,47.7,12,20.3,12 c-0.1,2.6,0.6,2.9,1.9,6.1c1.3,3.2,9.9,18.1,20.7,17.5c1.6-0.1-0.3-3.8-2.9-6.8c0,0-6.4-5.9-8.3-7.5c6.4,2.5,16.2,9.9,17,15.3 c0.5,3.5,0.4,20.2,0.2,31.7C49,68.2,48.9,68.2,48.8,68.2z",0]),Z=b(0,"2950 1000 450 450",[0,"M3382.84 784.3 3462.43 862.829 3540.96 783.238 3601.23 842.704 3522.7 922.295 3602.29 1000.82 3542.82 1061.09 3463.23 982.566 3384.7 1062.16 3324.43 1002.69 3402.96 923.1 3323.37 844.57Z",0]);f.caml_register_global(61,[0,h,b,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,b(0,"0 0 1000 1000",[0,"m902.09 769.55c0.33594-35.148 0.20312-112.29-5.9141-188.52 0.53906 32.125 1.3789 61.523 2.4727 76.906 0.60938 8.8242 1.9531 55.023 3.4414 111.61z",[0,"m608.14 108.45c1.043-24.695-0.28906-51.145 20.641-49.633 10.043 0.73047 27.348 3.2891 48.758 7.5703 23.734 4.7539 20.387 133.45 20.387 133.45l86.051 33.457c2.832-93.133-20.449-201.28-43.68-207.9-38.93-11.102-96.059-34.246-152.83-21.828-37.934 8.293-48.086 147.55-48.086 147.55l66.383 17.387c0.003906 0 0.69922-20.543 2.3789-60.059z",[0,"m207.76 579.2c13.98 5.1719 37.02 12.77 64.297 21.324 20.387-56.461 54.961-99.527 54.961-99.527s7.9805-20.914 48.07-12.492c40.094 8.4102 41.965 26.711 41.965 26.711s-25.969 42.098-51.215 98.832c-1.5586 3.5039-3.6133 7.8594-5.1719 13.223 63.562 18.527 124.98 34.934 142.64 36.539 34.766 3.1797 122.09 6.9961 138.68-77.039 16.367-82.934 32.566-133.52 46.367-165.11 2.7617-6.8984 5.2422-12.613 7.0664-16.738 3.7578-8.4961 15.191-25.535 31.824-42.238v-0.023438c0.046875-0.12109 0.12109-0.17969 0.21484-0.20312 22.223-22.199 53.664-43.703 88.766-43.57 1.8477 0 4.1055 0.22656 6.6133 0.61328-20.652-22.969-44.184-42.527-69.238-52.188-5.6992-2.1953-212.62-83.977-274.44-75.227-1.7773 0.25391-3.4336 0.49219-5.0273 0.71875 3-0.43359 5.0273-0.71875 5.0273-0.71875-0.003907-0.003906-141.73 3.5117-235.45 97.156-48.961 48.91-91.945 136.66-118.93 220.97-0.34766 21.398 26.953 48.277 82.98 68.988z",[0,"m484.35 726.64c-27.863-5.1133-79.621-19.297-134.79-35.605-8.3984 33.227-1.2617 90.301-1.2617 90.301s-10.848 25.895-53.605 16.43c-36.434-8.0898-35.496-34.379-35.496-34.379s-9.3125-53.352-1.1055-100.31c-52.512-16.535-97.129-31.379-113.54-37.68-19.754-7.5586-33.996-18.098-44.258-29.867-0.75781 4.668-1.4297 23.52-2.0625 28.008-37.219 265.1 40.035 379.27 45.508 403.38 7.3555 32.41 148.57 100.37 284.89 150.16 79.078 28.883 167.36 23.281 202.43 20.762l2.5664-0.14453c5.5781-102.5 20.773-369.32 28.223-532.61-11.805 59.953-110.79 73.777-177.5 61.562z",[0,"m902.09 769.55c-1.4883-56.594-2.8203-102.77-3.4453-111.64-1.0938-15.359-1.9336-44.762-2.4727-76.895-5.4609-67.871-22.957-140.72-37.922-178.59-25.152-63.742-98.195 16.211-118.82 66.551-21.359 52.129-41.578 653.03-43.547 712.6 51-13.285 124.05-32.352 133.01-46.402 18.973-29.711 29.258-58.477 33.996-82.969 3.1445-16.309 45.324-31.559 45.324-31.559s-2.9883-129.6-5.6875-234.19l-0.74219 2.7617c0 0.019531 0.20312-7.1914 0.3125-19.672z",[0,"m1089.1 508.25s-10.812-128.79-13.262-153.82c-5.9297-60.445-60.457-254.84-246.31-105.9l49.234 53.711s125.95-113.18 130.7 156.5c0.39453 22.824 1.9062 54.707 15.637 246.59 15.191 212.15-67.777 213.32-67.777 213.32l3.7422 90.215s30.816-8.0625 62.641-21.457c45.035-18.973 88.188-98.375 88.188-214.77-0.039062-46.051-22.793-264.41-22.793-264.41z",[0,"m438.25 148.18 41.09-6.3125v-34.773l7.9062-28.441s-37.945 17.387-48.996 34.766c-11.062 17.387-15.816 26.867-15.816 34.766 0 7.9062 15.816-0.003907 15.816-0.003907z",0]]]]]]])],"Haz3lweb__Icons");return}(globalThis)); -//# 3934 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3928 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var t="cell-item",m="\xe2\x89\xa1",l="result",e="cell-result",d="h",c="equiv",o=a.jsoo_runtime;function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}function @@ -474843,7 +474837,7 @@ V=t[1],F=f(q[18],e),G=[0,f(f(k[20],function(a){return a[2]}),F)],H=i(k[9],b,0),I x=h(g[14],0,0,0)}var M=[0,x,L],N=l[9]?i(k[20],function(a){return o(ar,[0,a,0,0])},a):0,O=f(k[15],N),P=f(k[10],O),Q=i(p[37],P,M),R=i(k[20],function(a){return o(0,a)},b),S=f(k[15],R),T=l[8]?u(m,l):0,U=h(k[26],function(a,b){return i(k[5],b,a)},Q,S);return i(p[37],U,T)}],"Haz3lweb__StepperView");return}(globalThis)); -//# 3963 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3957 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var K="Computing Equationally",L="Lists",x="Composing Arithmetic Expressions",J="Recursion on Lists: length",w="true",v="Functions",H="Pattern Matching on Lists",I="4",u="Tuples",F=". ",G="Shadowing",t="Booleans and Types",E="Recursion",s="26",r="Conditional Expressions",g=".",q="Variables",k=" evaluates to ",p="slide",D="in",o="Compositionality",B=" and ",C="Scope",A="Programming Expressively",n="Higher-Order Functions",z="Recursion on Lists: num_zeros",m="Recursion on Lists: sum",y="Pattern Matching on Tuples",j=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}function @@ -474866,20 +474860,20 @@ br=[0,d(c[5],bq),0],bt=[0,b(bs),br],bv=[0,d(c[5],bu),bt],bw=[0,e(c[35],0,0,bv),0 bc=[0,d(c[5],bb),0],be=[0,b(bd),bc],bg=[0,d(c[5],bf),be],bi=[0,b(bh),bg],bk=[0,d(c[5],bj),bi],bm=[0,h(bl),bk],bo=[0,d(c[5],bn),bm];return[0,f(bp,[0,e(c[35],0,0,bo),0])]}if(g===v){var aU=[0,d(c[5],aT),0],aW=[0,b(aV),aU],aY=[0,d(c[5],aX),aW],a0=[0,b(aZ),aY],a2=[0,d(c[5],a1),a0],a3=[0,e(c[35],0,0,a2),0],a5=[0,d(c[5],a4),0],a7=[0,d(c[5],a6),a5],a9=[0,b(a8),a7],a$=[0,d(c[5],a_),a9];return[0,f(ba,[0,e(c[35],0,0,a$),a3])]}if(g===n)return[0,f(aS,0)];if(g===L)return[0,f(aR,0)];if(g===H)return[0,f(aQ,0)]}}return 0}],"Haz3lweb__SlideContent");return}(globalThis)); -//# 3991 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 3985 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var f=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}var k=f.caml_get_global_data(),i=k.Haz3lcore__Piece,b=k.Haz3lweb__Example,g=[0,10,c(b[86],"1; 2"),"The left expression evaluates to 1, which is ignored. Then the right expression is evaluated to 2."],h=[0,11,c(b[86],"test true end; 3"),"The left expression is evaluated and recorded as a passing test because the body of the test is true. Then the right expression is evalautes to 3."],d=c(b[19],"e1"),e=c(b[19],"e2"),l=[0,c(b[85],0),[0,e,0]],j=[0,22,[0,d,[0,c(b[18],0),l]],0,"The [left expression](%s) is evaluated, then the [right expression](%s) is evaluated.",[0,g,[0,h,0]]];f.caml_register_global(9,[0,g,h,d,e,function(a,b){var f=[0,[0,c(i[30],e),b],0];return[0,[0,c(i[30],d),a],f]},j,[0,22,[0,j,0]]],"Haz3lweb__SeqExp");return}(globalThis)); -//# 4008 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4002 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var f=a.jsoo_runtime;function d(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):f.caml_call_gen(a,[b,c,d,e])}var c=f.caml_get_global_data().Virtual_dom__Node,e="svg",b="stop";f.caml_register_global(3,[0,function(a,b){return d(c[63],e,0,[0,a],b)},function(a){return d(c[63],b,0,[0,a],0)}],"Haz3lweb__NodeUtil");return}(globalThis)); -//# 4015 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4009 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var S="0",R="preserveAspectRatio",E="0 0 ",B=0.05,C="px; top: ",Q="stdDeviation",P="none",O="px; height: ",v="",M="feDropShadow",N="px;",K="tile-drop-shadow",L="viewBox",I="svg",f="style",J="px; width: ",H="filter",F="dx",G="dy",g=a.jsoo_runtime;function o(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}function @@ -474905,7 +474899,7 @@ c=i(j(b),0,a);return m(n[1][1],U,c)},function(a,b,c,d,e,f,g){var p=b?b[1]:1,t=d?d[1]:0,u=e?e[1]:0,v=f?f[1]:h,k=j(c),l=p?k:[0,k[1],k[2],0,0],x=[0,o(n[1][16],u),0],y=[0,m(w[4][17],x,g),0],z=[0,m(n[1][1],W,V),0],A=D(s[4],X,l[1],l[2]),B=[0,m(n[1][1],Y,A),z],C=i(l,[0,v],a),E=[0,m(n[1][1],Z,C),B],F=[0,[0,o(n[1][16],t),E]];return r(q[63],_,0,F,y)},u,x,function(a,b,c,d,e,f,g,h,i,j,k,l){var E=c?c[1]:0,F=d?d[1]:0,y=e?e[1]:0.,z=f?f[1]:0.,A=g?g[1]:0.,B=h?h[1]:0.,C=i?i[1]:aj,G=j?j[1]:0,H=k?k[1]:1,t=0.5,I=[0,o(n[1][16],F),0],J=[0,m(w[4][17],I,l),0],K=[0,m(n[1][1],af,ae),0],L=D(s[4],ag,t,t),M=[0,m(n[1][1],ah,L),K],N=H?x([0,y],[0,z],[0,A],[0,B],[0,t],a,b):u(0,[0,y],[0,z],[0,A],[0,B],[0,t],a,b),O=[0,o(n[1][16],E),[0,N,M]],P=m(p[37],O,G),Q=C==v?0:[0,o(n[1][23],C),0],R=[0,m(p[37],Q,P)];return r(q[63],ai,0,R,J)},t,y,m(aE[1],aD,aC)],"Haz3lweb__DecUtil");return}(globalThis)); -//# 4042 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4036 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var A="src/haz3lweb/view/dec/Diag.re.tip_shape",i=254,m=335151597,k=0.5,j=855037093,z=848054398,t=139,e=a.jsoo_runtime;function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}function @@ -474966,7 +474960,7 @@ var F=o(0,m,0,0,0,0),G=p(j,0,0,0,0),t=h(d[37],G,F);var B=h(l[4][11],v,t);return h(l[4][10],u,B)}],"Haz3lweb__Diag");return}(globalThis)); -//# 4104 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4098 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var j=0.5,e=1.5,i=a.jsoo_runtime;function h(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}function @@ -474978,7 +474972,7 @@ d(a,b,c,d){var i=[0,[0,[5,-d*e],0],[0,g(f[11],[0,d*e],[0,d],[0,a,0]),k]],l=[0,[0,[0,[254,c+j,j-d/2.]],[0,[5,e*d/2.],0]],[0,g(f[12],[0,d*e],[0,d],[0,b,0]),i]];return h(m[14],l)}i.caml_register_global(16,[0,[0],d,function(a,b){var e=b[2],c=e[1],g=b[1],i=h(l[10],c),f=s(o[2],n[8],e[3]),j=d([0,f[1],c],[0,f[2],c],0.,0.28);return t(r[22],a,0,g,q,[0,[0,p,[0,i,0]]],0,j)}],"Haz3lweb__EmptyHoleDec");return}(globalThis)); -//# 4117 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4111 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var G="code",F=10000,E="secondary",D="code-text",k=a.jsoo_runtime;function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}function @@ -475036,7 +475030,7 @@ d=e(z[18],c,0),f=[0,g(q[38],ac,c,b),d];return e(A[3],a,f)}k.caml_register_global e=p([0,c,d]),h=r(a,c,b),k=C(e[2],0,0,0,b),l=[0,g(j[3],aa,0,k),h],m=[0,[0,f(o[1][15],ab),0]];return g(i[14],0,m,l)},B,function(a,b,c,d){var k=d[4],l=k[3],m=k[9],n=k[8],q=k[2],r=C(p([0,l,c])[2],m,0,a,q),s=e(h[20],function(a){return B(b,l,a)},n),t=[0,g(j[3],ad,0,r),s],u=[0,[0,f(o[1][15],ae),0]];return g(i[14],0,u,t)}],"Haz3lweb__Code");return}(globalThis)); -//# 4176 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4170 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var z=100.,o="px; top: ",y=-1.,t="position: absolute; left: %fpx; top: %fpx;",e="position: absolute; left: ",r="backpack",d="px;",c="style",n=a.jsoo_runtime;function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):n.caml_call_gen(a,[b])}function @@ -475056,7 +475050,7 @@ c=t(a);return d[1]*b*c-4.}var H=g(l[4],G,b[2]*d[2]+n,(((b[1]-e|0)-o|0)-1|0)*d[1]),I=[0,u,v(u,o),z,0],J=g(w[26],function(a,b){var d=a[3],c=a[1],g=a[4],i=a[2],j=f(k[49],b[2]),l=t(c),e=i-v(c,j),m=p(12*c|0,e,l,d,b);return[0,c+1|0,e,d-20.,h(w[5],m,g)]},I,a)[4],L=[0,f(i[1][16],K),0],N=[0,[0,h(i[1][1],M,H),L]],O=g(j[14],0,N,J),P=a?f(k[50],a[1][2]):0,R=x(l[4],Q,b[2]*d[2]+n,(b[1]-e|0)*d[1]-3.,3.+e*d[1]),T=[0,f(i[1][16],S),0],V=[0,[0,h(i[1][1],U,R),T]],W=g(j[14],0,V,0),ab=ap(s[25],d,aa,$,_,0,0,0,0,0,0,0,[0,Z,[0,Y,[0,[5,P],X]]]),ad=g(l[4],ac,b[2]*d[2]+n,(b[1]-e|0)*d[1]+1.),ae=0!==a?[0,W,0]:0,ag=[0,[0,h(i[1][1],af,ad),0]],ah=[0,O,[0,g(j[14],0,ag,[0,ab,0]),0]],ai=h(m[37],ah,ae),aj=0,ak=A?0:ao,am=h(m[37],al,ak),an=[0,[0,f(i[1][16],am),aj]];return g(j[14],0,an,ai)}],"Haz3lweb__BackpackView");return}(globalThis)); -//# 4197 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4191 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var d=254,l=0.1,k=0.5,j=-0.5,n=a.jsoo_runtime;function i(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):n.caml_call_gen(a,[b,c])}function @@ -475071,7 +475065,7 @@ var c=f;return[0,i(m[4][2],0,0),[0,[4,c],[0,[3,[d,-b,k]],[0,[3,[d,b,k]],[0,[4,-c],[0,[3,[d,-b,j]],[0,[3,[d,b,j]],0]]]]]]]}n.caml_register_global(12,[0,f,g,e,[0],h,function(a,b){var d=b[3],e=b[2],f=i(c[5],b[1],d),g=h(d);return r(c[25],a,e,q,p,[0,f*a[2]],0,0,[0,c[4]*a[1]],o,0,0,g)}],"Haz3lweb__CaretDec");return}(globalThis)); -//# 4213 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4207 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var h="px",p=736760658,f="%fpx",o=352693909,k="0 0 1 1",i=a.jsoo_runtime;function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}function @@ -475083,7 +475077,7 @@ j(a,b){var c=o<=b?p<=b?2.:2.75:3.75;return[0,c/a[2],c/a[1]]}i.caml_register_global(30,[0,[0],j,function(a,b){var f=b[1],q=b[3],r=b[2],h=j(a,f),i=h[2],k=h[1],t=g(s[10],q),l=736515298<=f?p<=f?u:_:o<=f?$:aa,w=[0,g(d[1][16],[0,v,[0,l,[0,t,0]]]),0],y=c(e[4],x,1.*i),A=[0,c(d[1][1],z,y),w],C=c(e[4],B,1.*k),E=[0,c(d[1][1],D,C),A],G=c(e[4],F,0.1-i),I=[0,c(d[1][1],H,G),E],K=c(e[4],J,-k),M=[0,[0,c(d[1][1],L,K),I]],O=[0,n(m[63],N,0,M,0),0],R=[0,c(d[1][1],Q,P),0],T=g(e[4],S),V=[0,c(d[1][1],U,T),R],X=[0,ab(W[24],0,0,0,0,0,a,r[1]),V],Y=[0,[0,g(d[1][15],l),X]];return n(m[63],Z,0,Y,O)}],"Haz3lweb__CaretPosDec");return}(globalThis)); -//# 4226 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4220 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}function @@ -475094,7 +475088,7 @@ f=b[2],g=b[1],j=l(c[15][18],a,g);if(j)return[0,j[1],[0,g,f]];var m=e.caml_mod(f,i(h[1],d)),k=l(h[8],d,m);return[0,k,[0,n(c[15][2],a,k,g),f+1|0]]},function(a){var b=i(c[15][39],a);return i(h[65],b)}],"Haz3lweb__ColorSteps");return}(globalThis)); -//# 4238 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4232 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c="src/haz3lweb/view/dec/PieceDec.re",p=254,J="raised",I="tile-path",H=0.5,G="empty tile",F=-0.5,E="child-line",o=a.jsoo_runtime,u=o.caml_maybe_attach_backtrace;function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}function @@ -475150,7 +475144,7 @@ P=d?d[1][2][1]:f(m[2],ae),Q=[0,ad,[0,f(w[10],P),0]],R=g(m[37],C,y);return f(f(h[ e=0,f=d?N:S;return r(a,b,[0,P,[0,O,[0,f,e]]],Q,R,0,c)},A,B,function(a){return g(k,a,j)},x,C,D,function(f,b,c,d,e){var a=C(f,b,d),i=D(f,b,e,d),j=g(m[37],i,a),k=g(h[24],function(a){return B(f,c,a)},d);return g(m[37],k,j)}],"Haz3lweb__PieceDec");return}(globalThis)); -//# 4295 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4289 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var G="selected",o=a.jsoo_runtime;function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}function @@ -475224,7 +475218,7 @@ e=d[1],g=e[2],h=e[1],m=i(f[2],a[1][1]);return j(l[10][1],m,function(a){var c=a[2],d=j(i(k[76],g)[12],c,b);return j(l[10][2],d,function(a){return s(h,a)})})},B,d,C,D,F,function(e,b,c){var a=d(c),f=i(i(r[20],k[79]),a),j=F(b),l=i(i(r[20],j),f),m=[0,[0,i(n[1][53],function(a,b){return i(e,[2,i(k[80],b)])}),0]],o=[0,h(g[30],0,m,l),0],p=0!==t(b)?1:0,q=[0,D(e,c,z(b),p),o],s=[0,[0,i(n[1][23],$),0]];return h(g[14],0,s,q)}],"Haz3lweb__ProjectorView");return}(globalThis)); -//# 4370 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4364 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var t="Deco.term",s="Deco.sel_of_piece",o="Deco.targets",e="Deco.indicated",j=a.jsoo_runtime,aq=j.caml_maybe_attach_backtrace,ar=j.caml_wrap_exception;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}function @@ -475308,7 +475302,7 @@ g=[0,b([0,f(k[28],al,d),0],e)];return g}catch(f){var c=ar(f);if(c===k[8])return 0;throw aq(c,0)}},a)},K,L,M,N,function(a){var b=[0,N(a),0],c=[0,M(e[2][4][1],e[2][4][2]),b];return d(g[14],c)}]}],"Haz3lweb__Deco");return}(globalThis)); -//# 4455 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4449 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c="cell-item",e="cell",o=a.jsoo_runtime;function p(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}function @@ -475380,7 +475374,7 @@ b=[0,p(q[5],a),0],c=[0,[0,p(s[1][15],aB),0]],e=[0,r(q[14],0,c,b),0],f=[0,[0,p(s[ j=p(A[33],c);return[0,i(a,b,e,h,0,aH,aG,0,0,aF,d,[0,[0,g]],[0,f],0,r(B[11],aE,j,aD[8])),0]},function(a,b,c,d,e){var k=p(A[33],e),f=r(B[11],aI,k,b[3]),g=f[1][2][3],l=b[3][2],m=l||b[3][4],h=m?r(F[3],b[3],g[2],g[1]):aM,j=b[3][4]?[0,[0,h,r(F[4],b[3],0,h),0]]:0,n=b[3][2],o=n||b[3][4],q=o?y(1,c,a,b,j,d):0;return i(c,a,b,d,0,aL,aK,0,p(aJ[21],j),[0,q],0,0,0,0,f)}],"Haz3lweb__Cell");return}(globalThis)); -//# 4528 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4522 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var q=a.jsoo_runtime;function h(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):q.caml_call_gen(a,[b])}function @@ -475393,14 +475387,14 @@ b=q.caml_get_global_data(),f=b.Haz3lcore__JsUtil,c=b.Virtual_dom__Effect,d=b.Haz a=i(l[54],e,f),o=i(n[9],m[21],a),q=c[3][2],r=q||c[3][4],t=r?h(h(s[7],function(a){return x(k[14],0,j,b,c,a,f)}),a):0;return[0,y(k[15],j,b,c,p,0,0,0,0,o,t,d,0,0,0,g),0]},function(b){return g(e[2],r,d[5],function(a){var d=h(j[19],b);i(f[13],o,d);return c[1]})},function(b){return z(e[8],u,t,d[5],function(a){return a?h(b,[8,a[1]]):c[1]})},function(b){return g(e[2],w,d[16],function(a){return h(f[18],v)?h(b,2):c[1]})}],"Haz3lweb__ScratchMode");return}(globalThis)); -//# 4542 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4536 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var g=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}var j=g.caml_get_global_data(),f=j.Haz3lcore__Piece,b=j.Haz3lweb__Example,d=c(b[22],"t_var"),e=c(b[21],"ty_arg"),h=[0,0,c(b[86],"type Peano = \n rec P -> Z + S(P) \n in S(S(S(Z)))"),"The type of the Peano numbers and the representation of the number 3."],k=[0,[0,c(f[30],d),[0,e,0]]],l=[0,d,[0,c(b[85],0),0]],m=[0,[0,c(b[85],0),l],0],i=[0,54,[0,c(b[31],m),[0,e,0]],k,"This recursive type classifies the least fixed point of the polymorphic type over the [*type variable*](%s) of body [*instantiated type*](%s).",[0,h,0]];g.caml_register_global(7,[0,d,e,function(a,b){var g=[0,[0,c(f[30],e),b],0];return[0,[0,c(f[30],d),a],g]},h,i,[0,55,[0,i,0]]],"Haz3lweb__RecTyp");return}(globalThis)); -//# 4550 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4544 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}function @@ -475410,7 +475404,7 @@ b=e.caml_get_global_data(),c=b.Haz3lweb__Example,f=b.Haz3lcore__Id,i="\n e=[0,[0,25,d(c[86],j),i],0],k=g(f[7],0,b),l=g(f[7],0,a),o=h(n[4],m,l,k);return[0,26,67,h(r[73][9],[0,q,a],[0,p,b],function(a,b){var e=[0,d(c[85],0),[0,b,0]],f=[0,d(c[64],0),e];return[0,a,[0,d(c[85],0),f]]}),o,e]}],"Haz3lweb__PipelineExp");return}(globalThis)); -//# 4561 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4555 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var v="e_arg",u="...",t="e_fun",i=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}var @@ -475419,14 +475413,14 @@ e=[0,[0,c(d[30],n),b],0];return[0,[0,c(d[30],m),a],e]},o,e,f,function(a,b){var g=[0,[0,c(d[30],f),b],0];return[0,[0,c(d[30],e),a],g]},p,g,h,function(a,b){var e=[0,[0,c(d[30],h),b],0];return[0,[0,c(d[30],g),a],e]},r,[0,18,[0,o,0]],[0,19,[0,p,0]],[0,20,[0,r,0]]],"Haz3lweb__AppExp");return}(globalThis)); -//# 4571 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4565 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var f=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}var i=f.caml_get_global_data(),g=i.Haz3lcore__Piece,b=i.Haz3lweb__Example,d=c(b[20],"p_con"),e=c(b[20],"p_arg"),h=[0,43,[0,d,[0,c(b[72],[0,[0,e,0],0]),0]],0,"Only expressions that match the [*constructor*](%s) with an *argument* matching the [*argument pattern*](%s) match this *constructor application pattern*.",0];f.caml_register_global(5,[0,d,e,function(a,b){var f=[0,[0,c(g[30],e),b],0];return[0,[0,c(g[30],d),a],f]},h,[0,44,[0,h,0]]],"Haz3lweb__AppPat");return}(globalThis)); -//# 4579 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4573 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var p="ty_arg2",c="ty_out",l=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}var @@ -475434,13 +475428,13 @@ o=l.caml_get_global_data(),e=o.Haz3lcore__Piece,b=o.Haz3lweb__Example,f=d(b[21], c=[0,[0,d(e[30],g),b],0];return[0,[0,d(e[30],f),a],c]},h,i,j,k,function(a,b,c){var f=[0,[0,d(e[30],k),c],0],g=[0,[0,d(e[30],j),b],f];return[0,[0,d(e[30],i),a],g]},n,[0,56,[0,h,0]],[0,57,[0,n,[0,h,0]]]],"Haz3lweb__ArrowTyp");return}(globalThis)); -//# 4588 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4582 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var l="...",e=a.jsoo_runtime;function b(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}var k=e.caml_get_global_data(),c=k.Haz3lweb__Example,m=k.Haz3lcore__Piece,f=[0,21,b(c[86],"case 1 \n| 2 => 3 \n| _ => 4 \nend"),"The scrutinee of the case expression is 1. Since the scrutinee does not match the the first pattern 2. Since the scrutinee does match the second pattern which is a wildcard, the second branch is taken. The whole expression evaluates to the second clause 4."],g=[0,22,b(c[86],"case (1, 2) \n| (_, 2) => 3 \n| _ => 4 \nend"),"The scrutinee of the case expression is (1, 2). Since the scrutinee matches the first pattern (_, 2), the first branch is taken. This pattern is matched because the first element 1 matches the first element pattern, which is a wildcard, and the second element 2 matches the second element pattern 2. The whole expression evaluates to the first clause 3."],h=[0,23,b(c[86],"case 1 \n| 1 => 1.1 \n| 2 => 2.2 \n| _ => 3.3 \nend"),"The scrutinee of the case expression is 1. Since the scrutinee matches the first pattern, the first branch is taken, and the case evaluates to the first clause."],i=[0,24,b(c[86],"case false \n| true => 1 \n| false => 2 \nend"),"The scrutinee of the case expression is false. The scrutinee does not match the first pattern but does match the second pattern, so the second branch is taken."],d=b(c[19],"e_scrut"),n=[0,b(c[84],0),0],o=[0,b(c[19],l),n],p=[0,b(c[85],0),o],q=[0,b(c[85],0),0],r=[0,b(c[20],l),q],s=[0,[0,b(c[85],0),r],0],t=[0,b(c[78],s),p],u=[0,b(c[84],0),t],v=[0,b(c[19],"e1"),u],w=[0,b(c[85],0),v],x=[0,b(c[85],0),0],y=[0,b(c[20],"p1"),x],z=[0,[0,b(c[85],0),y],0],A=[0,b(c[78],z),w],B=[0,d,[0,b(c[84],0),A]],C=[0,[0,b(c[85],0),B],0],j=[0,24,[0,b(c[77],C),0],0,"Consider each branch in order. For the first branch with a *pattern* that matches the [*scrutinee*](%s), evaluates to the corresponding *clause*.",[0,h,[0,i,[0,f,[0,g,0]]]]];e.caml_register_global(16,[0,f,g,h,i,d,function(a){return[0,[0,b(m[30],d),a],0]},j,[0,24,[0,j,0]]],"Haz3lweb__CaseExp");return}(globalThis)); -//# 4595 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4589 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var g="kind-view",e=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}function @@ -475449,7 +475443,7 @@ b=e.caml_get_global_data(),c=b.Util__Web,h=b.Haz3lweb__Type,i=g,j="Type",k=b.Vir b=[0,d(h[7],a[1]),0];return f(c[2],i,0,b)}var e=[0,d(k[5],j),0];return f(c[2],l,0,e)}],"Haz3lweb__Kind");return}(globalThis)); -//# 4605 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4599 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var p="seperator",o="context-entry",h=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}function @@ -475466,7 +475460,7 @@ a=d(v[183],b),f=d(j[39],a),g=d(c[10],f);return d(d(c[20],function(a){return k(e, a=d(j[39],b),l=d(c[10],a),m=i(c[20],function(a){return k(h,a)},l),n=[0,[0,d(f[1],t),0]];return g(e[14],0,n,m)},n,function(a,b,c){var h=b[5]?w:0,j=i(y[37],x,h),k=d(f[1],j),l=n(a,c);return g(e[14],0,[0,[0,k,0]],l)}],"Haz3lweb__CtxInspector");return}(globalThis)); -//# 4623 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4617 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var U=197,o=":",T="cursor-inspector",z="not found",S=" is inexhaustive",R="Expected a constructor",Q=",",P=" have inconsistent types:",n=a.jsoo_runtime,O=n.caml_equal;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):n.caml_call_gen(a,[b])}function @@ -475609,7 +475603,7 @@ a=[0,[0,e(E[1][23],bm),0]],i=f[14];if(!b[3][1])return j[4];if(d){var l=d[1],s=[0,k(bq[20],function(a){return e(h,[11,[2,a]])},c,l),0],t=[0,N(h,b,l),s];return e(g(i,0,a),t)}var m=[0,e(f[5],br),0],n=[0,bn[18],0],o=[0,[0,e(j[1],bo),0]],p=[0,k(f[14],0,o,n),m],q=[0,[0,e(j[1],bp),0]],r=[0,k(f[14],0,q,p),0];return e(g(i,0,a),r)}],"Haz3lweb__CursorInspector");return}(globalThis)); -//# 4767 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4761 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var x="selected",w="none",i=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}function @@ -475649,7 +475643,7 @@ f=s(a,b[1],b[2]);break;default:var f=v(a,b[1],b[2],h)}var i=[0,[0,e(j[1][23],O),0]];return d(g[14],0,i,f)}],"Haz3lweb__EditorModeView");return}(globalThis)); -//# 4808 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4802 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var aa="cell-item",$="Pass",_="some-fail",ac="test-percent",y="test-hint",B="test-report",u="test-summary",A="test-instance",x="Test",Z="No test results",z="test-panel",w="test-id",t="test-text",ab="all-pass",p=a.jsoo_runtime;function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):p.caml_call_gen(a,[b])}function @@ -475702,7 +475696,7 @@ d=[0,O(a,b,c)],f=[0,Q(a,b[1]),0],j=[0,i(e[6],aG,aF),f];return h(e[18],aH,j,d)}], b=[0,f(g[5],aP),0],c=[0,F(a[2]),b],d=[0,[0,f(j[1][15],aQ),0]],k=[0,h(g[14],0,d,c),0],l=[0,[0,f(j[1][16],aR),0]],m=[0,h(g[14],0,l,k),0],n=[0,f(e[16],m)],o=[0,S(a[1]),0],p=[0,i(e[6],aT,aS),o];return h(e[18],aU,p,n)}],[0,l[1],l[2],l[3],T,U,V,W,X,function(l,b,c,d){var a=b[2],o=f(f(s[7],function(a){return h(n[6],l,a,5)}),a),p=f(s[15],o),r=V(b),t=[0,m(i(q,i(T,b,c),d)),0],u=i(k[37],t,r),v=[0,[0,f(j[1][15],a1),0]],w=[0,h(g[14],0,v,u),0],x=i(k[37],w,p),y=[0,[0,f(j[1][16],a2),0]],z=[0,h(g[14],0,y,x),0],A=[0,f(e[16],z)],B=[0,X(l,b),0],C=[0,i(e[6],a4,a3),B];return h(e[18],a5,C,A)}],[0,C[1],Y,function(a){return m(f(Y,a))}]],"Haz3lweb__Grading");return}(globalThis)); -//# 4862 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4856 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var u=".ml",s="Correct Implementation",o="text/plain",q=a.jsoo_runtime;function h(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):q.caml_call_gen(a,[b])}function @@ -475736,7 +475730,7 @@ e=b[2][3],h=g(f[28],b[2][3],x),i=g(n[131],e,b);c(k[12],h,A,i);return d[1]})},fun e=b[2][3],h=g(f[28],b[2][3],C),i=g(n[133],e,b);c(k[12],h,D,i);return d[1]})},function(b){return c(j[2],I,e[5],function(a){var e=b[2][3],h=g(f[28],b[2][3],G),i=g(n[134],e,b);c(k[12],h,H,i);return d[1]})},r,function(b){return c(j[2],O,e[5],function(a){r(b[6]);return d[1]})},function(b){return E(j[8],Q,P,e[5],function(a){return a?h(b,[4,a[1]]):d[1]})}],"Haz3lweb__ExerciseMode");return}(globalThis)); -//# 4897 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4891 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var o="pause $e in\nhide let = in in\nlet x = 1 in\nlet y = 2 in\nx + y",n="pause $e in instruct the evaluator to act like a single-stepper, e.g. stop at every step. The hide filter expression instructs the evaluator to skip over all evaluator steps that destructs perform substitution on a let-expression. Here, the substitution of variable x and y is skipped over and we directly got 1 + 2 in the result area.",m="e_body",l="p",k=") that match the [*pattern*](",j=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}function @@ -475753,14 +475747,14 @@ j=[0,[0,29,d(c[86],F),E],0],k=e(f[7],0,a),l=e(f[7],0,b),m=g(h[4],G,l,k);return[0 e=[0,d(c[84],0),[0,b,0]],f=[0,a,[0,d(c[85],0),0]],g=[0,[0,d(c[85],0),f],0];return[0,d(c[82],g),e]}),m,j]},function(a){var b=e(f[7],0,a),j=e(f[7],0,a),k=g(h[4],J,j,b);return[0,72,72,e(i[73][8],[0,K,a],function(a){return[0,d(c[83],0),[0,a,0]]}),k,0]}],"Haz3lweb__FilterExp");return}(globalThis)); -//# 4915 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4909 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var g=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}var i=g.caml_get_global_data(),f=i.Haz3lcore__Piece,b=i.Haz3lweb__Example,d=c(b[22],"t_var"),e=c(b[21],"ty_arg"),j=[0,[0,c(f[30],d),[0,e,0]]],k=[0,d,[0,c(b[85],0),0]],l=[0,[0,c(b[85],0),k],0],h=[0,53,[0,c(b[30],l),[0,e,0]],j,"This forall type classifies polymorphic values varying over [*type variable*](%s) with [*instantiated type*](%s).",0];g.caml_register_global(5,[0,d,e,function(a,b){var g=[0,[0,c(f[30],e),b],0];return[0,[0,c(f[30],d),a],g]},h,[0,54,[0,h,0]]],"Haz3lweb__ForallTyp");return}(globalThis)); -//# 4923 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4917 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var h="p1",a2="BoolLit",n="p2",a1="p3",a0="StringLit",aZ="p_tl",d="e",m="...",aY="p_arg",aX="The only value that matches the [*argument pattern*](%s) is `%s`. When applied to an argument which matches the [*argument pattern*](%s), evaluates to the function [*body*](%s).",aQ="p_hd",aU="C",aV="x",aW="p",aP="INVALID",aT="FloatLit",aS="p_con",aO="_",aR="[]",aM="()",aN="IntLit",L=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):L.caml_call_gen(a,[b])}var @@ -475772,7 +475766,7 @@ d=[0,[0,e(f[30],aC),c],0],g=[0,[0,e(f[30],aB),b],d];return[0,[0,e(f[30],aA),a],g g=[0,[0,e(f[30],aF),d],0],h=[0,[0,e(f[30],G),c],g],i=[0,[0,e(f[30],F),b],h];return[0,[0,e(f[30],E),a],i]},aH,l,function(a,b){return g(c4,c3,a,b)},aJ,H,I,J,function(a,b,c){var d=[0,[0,e(f[30],J),c],0],g=[0,[0,e(f[30],I),b],d];return[0,[0,e(f[30],H),a],g]},aL,[0,[0,0],[0,c,0]],[0,[0,1],[0,aa,[0,c,0]]],[0,[0,2],[0,ac,[0,c,0]]],[0,[0,3],[0,af,[0,c,0]]],[0,[0,4],[0,ah,[0,c,0]]],[0,[0,5],[0,aj,[0,c,0]]],[0,[0,6],[0,al,[0,c,0]]],[0,[0,7],[0,an,[0,c,0]]],[0,[0,8],[0,ap,[0,c,0]]],[0,[0,9],[0,ar,[0,c,0]]],[0,[0,10],[0,at,[0,c,0]]],[0,[0,11],[0,aw,[0,c,0]]],[0,[0,12],[0,ay,[0,c,0]]],[0,[0,13],[0,k,[0,c,0]]],[0,[0,14],[0,aE,[0,k,[0,c,0]]]],[0,[0,15],[0,aH,[0,k,[0,c,0]]]],[0,[0,16],[0,aJ,[0,c,0]]],[0,[0,17],[0,aL,[0,c,0]]]],"Haz3lweb__FunctionExp");return}(globalThis)); -//# 4936 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4930 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var d=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):d.caml_call_gen(a,[b])}function @@ -475780,40 +475774,40 @@ j(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):d.caml_call_gen(a,[b,c])}var b=d.caml_get_global_data(),f=[0,[11,"This should be filled with ",[2,0,[11," to complete the program.",0]]],"This should be filled with %s to complete the program."],g=b.Stdlib__Printf,h=b.Haz3lcore__Id,c="This is an invalid term.",i="INVALID";d.caml_register_global(5,[0,function(a,b,c){var d=j(g[4],f,b);return[0,c,[0,[1,[0,e(h[5],0),0]],0],0,d,0]},function(a,b){return[0,b,[0,e(a,i),0],0,c,0]}],"Haz3lweb__HoleTemplate");return}(globalThis)); -//# 4945 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4939 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;function i(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}function h(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d])}var g=e.caml_get_global_data(),b=g.Haz3lweb__Example,c=g.Haz3lweb__HoleTemplate,d=h(c[1],b[19],"an expression",0),f=i(c[2],b[19],1);e.caml_register_global(3,[0,d,[0,0,[0,d,0]],f,[0,1,[0,f,0]]],"Haz3lweb__HoleExp");return}(globalThis)); -//# 4953 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4947 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c=a.jsoo_runtime;function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var e=c.caml_get_global_data(),g=e.Haz3lweb__Example,b=[0,26,[0,[1,[0,f(e.Haz3lcore__Id[5],0),0]],0],0,"Expressions are not matched against the *empty hole pattern* until it is filled.",0],d=[0,27,[0,f(g[20],"Invalid"),0],0,"Expressions are not matched against the invalid pattern until it is corrected.",0];c.caml_register_global(5,[0,b,d,[0,27,[0,b,0]],[0,28,[0,d,0]]],"Haz3lweb__HolePat");return}(globalThis)); -//# 4960 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4954 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;function i(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}function h(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d])}var g=e.caml_get_global_data(),b=g.Haz3lweb__Example,c=g.Haz3lweb__HoleTemplate,d=h(c[1],b[22],"a type pattern",64),f=i(c[2],b[22],65);e.caml_register_global(3,[0,d,[0,65,[0,d,0]],f,[0,66,[0,f,0]]],"Haz3lweb__HoleTPat");return}(globalThis)); -//# 4968 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4962 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c=a.jsoo_runtime;function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var e=c.caml_get_global_data(),g=e.Haz3lweb__Example,b=[0,45,[0,[1,[0,f(e.Haz3lcore__Id[5],0),0]],0],0,"This marks a type that needs to be filled in.",0],d=[0,46,[0,f(g[21],"Invalid"),0],0,"This is an invalid type.",0];c.caml_register_global(5,[0,b,d,[0,46,[0,b,0]],[0,47,[0,d,0]]],"Haz3lweb__HoleTyp");return}(globalThis)); -//# 4975 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4969 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var l=c.caml_get_global_data(),h=l.Haz3lcore__Piece,b=l.Haz3lweb__Example,i=[0,8,d(b[86],"if (true) then 1 else 2"),"Since the condition is true, the if expression evaluates to the then branch, 1."],j=[0,9,d(b[86],"if (2 < 1) then 3 else 4"),"Since the condition is 2 < 1 is false, the if expression evaluates to the else branch, 4."],e=d(b[19],"e_cond"),f=d(b[19],"e_then"),g=d(b[19],"e_else"),m=[0,d(b[85],0),[0,g,0]],n=[0,f,[0,d(b[84],0),0]],o=[0,[0,d(b[85],0),n],0],p=[0,e,[0,d(b[84],0),0]],q=[0,[0,d(b[85],0),p],o],k=[0,21,[0,d(b[75],q),m],0,"If the [*condition*](%s) evaluates to `true`, evaluate the [*then branch*](%s). Otherwise, evaluate the [*else branch*](%s).",[0,i,[0,j,0]]];c.caml_register_global(10,[0,i,j,e,f,g,function(a,b,c){var i=[0,[0,d(h[30],g),c],0],j=[0,[0,d(h[30],f),b],i];return[0,[0,d(h[30],e),a],j]},k,[0,21,[0,k,0]]],"Haz3lweb__IfExp");return}(globalThis)); -//# 4983 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4977 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var i="p1",bc="BoolLit",p="p2",bb="p3",ba="StringLit",g="e_def",a1="The 1 is thrown away, so the expression evaluates to 2.",a_="p_tl",a$="The true is thrown away, so the expression evaluates to 2.",a9="The only value for the [*definition*](%s) that matches the [*pattern*](%s) is `%s`. The [*definition*](%s) can't be referenced in the [*body*](%s).",o="...",d="e_body",a8="p_arg",a0="p_hd",a5="C",a6="x",a7="p",aZ="INVALID",a4="FloatLit",a3="p_con",aY="_",a2="[]",aW="()",aX="IntLit",N=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):N.caml_call_gen(a,[b])}var @@ -475827,7 +475821,7 @@ d=[0,[0,e(f[30],aM),c],0],g=[0,[0,e(f[30],aL),b],d];return[0,[0,e(f[30],aK),a],g g=[0,[0,e(f[30],aP),d],0],h=[0,[0,e(f[30],H),c],g],i=[0,[0,e(f[30],G),b],h];return[0,[0,e(f[30],F),a],i]},aR,n,I,function(a,b,c){return h(d0,dZ,dY,a,b,c)},aT,J,K,L,function(a,b,c){var d=[0,[0,e(f[30],L),c],0],g=[0,[0,e(f[30],K),b],d];return[0,[0,e(f[30],J),a],g]},aV,[0,[1,1],[0,ac,[0,c,0]]],[0,[1,2],[0,ae,[0,c,0]]],[0,[1,3],[0,ai,[0,c,0]]],[0,[1,4],[0,al,[0,c,0]]],[0,[1,5],[0,ao,[0,c,0]]],[0,[1,6],[0,ar,[0,c,0]]],[0,[1,7],[0,au,[0,c,0]]],[0,[1,8],[0,ax,[0,c,0]]],[0,[1,10],[0,az,[0,c,0]]],[0,[1,9],[0,aC,[0,c,0]]],[0,[1,11],[0,aF,[0,c,0]]],[0,[1,12],[0,aI,[0,c,0]]],[0,[1,13],[0,m,[0,c,0]]],[0,[1,14],[0,aO,[0,m,[0,c,0]]]],[0,[1,15],[0,aR,[0,m,[0,c,0]]]],[0,[1,16],[0,aT,[0,c,0]]],[0,[1,17],[0,aV,[0,c,0]]]],"Haz3lweb__LetExp");return}(globalThis)); -//# 4998 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4992 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var i=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}var @@ -475835,7 +475829,7 @@ o=i.caml_get_global_data(),d=o.Haz3lcore__Piece,b=o.Haz3lweb__Example,p=[0,[0,0] g=[0,[0,c(d[30],f),b],0];return[0,[0,c(d[30],e),a],g]},m,g,h,function(a,b){var e=[0,[0,c(d[30],h),b],0];return[0,[0,c(d[30],g),a],e]},n,[0,10,[0,j,0]],[0,11,[0,m,0]],[0,12,[0,n,0]]],"Haz3lweb__ListExp");return}(globalThis)); -//# 5007 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5001 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c="p_tl",r="p_snd",l=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}var @@ -475843,13 +475837,13 @@ q=l.caml_get_global_data(),e=q.Haz3lcore__Piece,b=q.Haz3lweb__Example,s=[0,d(b[2 c=[0,[0,d(e[30],g),b],0];return[0,[0,d(e[30],f),a],c]},h,i,j,k,function(a,b,c){var f=[0,[0,d(e[30],k),c],0],g=[0,[0,d(e[30],j),b],f];return[0,[0,d(e[30],i),a],g]},p,[0,37,[0,m,0]],[0,38,[0,n,0]],[0,39,[0,h,0]],[0,40,[0,p,[0,h,0]]]],"Haz3lweb__ListPat");return}(globalThis)); -//# 5016 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5010 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var g=c.caml_get_global_data(),e=g.Haz3lweb__Example,h=g.Haz3lcore__Piece,b=d(e[21],"ty_elem"),f=[0,52,[0,d(e[29],[0,[0,b,0],0]),0],0,"The list type classifies lists with elements with the corresponding [*element type*](%s).",0];c.caml_register_global(4,[0,b,function(a){return[0,[0,d(h[30],b),a],0]},f,[0,53,[0,f,0]]],"Haz3lweb__ListTyp");return}(globalThis)); -//# 5023 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5017 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var bt="If the [*left operand*](%s) is not equal to the [*right operand*](%s), evaluates to `true`. Otherwise, evaluates to `false`.",by="5 is equal to 5, so the expression evaluates to true.",bB="Gives the quotient of the [*left*](%s) and [*right*](%s) operands.",bs="e",bx="4. is greater than 3.1, so the expression evaluates to true.",f="e2",bn="1 is less than 2, so the expression evalutes to true.",br="Gives the sum of the [*left*](%s) and [*right*](%s) operands.",bw="Gives the product of the [*left*](%s) and [*right*](%s) operands.",bv="If the [*left operand*](%s) is greater than or equal to the [*right operand*](%s), evaluates to `true`. Otherwise evaluates to `false`.",bA="4 is greater than 3, so the expression evaluates to true.",bq="5.5 is equal to 5.5, so the expression evaluates to true.",q="If the [*left operand*](%s) is equal to the [*right operand*](%s), evaluates to `true`. Otherwise, evaluates to `false`.",bu="If the [*left operand*](%s) is less than or equal to the [*right operand*](%s), evaluates to `true`. Otherwise evaluates to `false`.",bz="1. is less than 2.1, so the expression evalutes to true.",bp="Gives the difference of the [*left*](%s) and [*right*](%s) operands.",bo="If the [*left operand*](%s) is greater than the [*right operand*](%s), evaluates to `true`. Otherwise evaluates to `false`.",g="e1",bm="If the [*left operand*](%s) is less than the [*right operand*](%s), evaluates to `true`. Otherwise evaluates to `false`.",p=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):p.caml_call_gen(a,[b])}var @@ -475885,7 +475879,7 @@ f=c(d[30],bf);return e(c(d[30],be),f,a,b)},bg,function(a,b){var f=c(d[30],bi);return e(c(d[30],bh),f,a,b)},bj,n,o,function(a,b){var f=c(d[30],o);return e(c(d[30],n),f,a,b)},bk,[0,[2,[2,0]],[0,af,0]],[0,[2,[1,0]],[0,ag,0]],[0,[3,[0,0]],[0,aj,0]],[0,[3,[0,1]],[0,am,0]],[0,[3,[0,2]],[0,an,0]],[0,[3,[0,3]],[0,ao,0]],[0,[3,[0,4]],[0,ar,0]],[0,[3,[0,5]],[0,au,0]],[0,[3,[0,6]],[0,ax,0]],[0,[3,[0,7]],[0,aA,0]],[0,[3,[0,8]],[0,aD,0]],[0,[3,[0,9]],[0,aG,0]],[0,[3,[0,10]],[0,aJ,0]],[0,[3,[1,0]],[0,aM,0]],[0,[3,[1,1]],[0,aP,0]],[0,[3,[1,2]],[0,aQ,0]],[0,[3,[1,3]],[0,aR,0]],[0,[3,[1,4]],[0,aU,0]],[0,[3,[1,5]],[0,aX,0]],[0,[3,[1,6]],[0,a0,0]],[0,[3,[1,7]],[0,a3,0]],[0,[3,[1,8]],[0,a6,0]],[0,[3,[1,9]],[0,a9,0]],[0,[3,[1,10]],[0,ba,0]],[0,[3,[2,0]],[0,bd,0]],[0,[3,[2,1]],[0,bg,0]],[0,[3,[3,1]],[0,bj,0]],[0,[3,[3,0]],[0,bk,0]]],"Haz3lweb__OpExp");return}(globalThis)); -//# 5060 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5054 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var aA="messageContent",az="@ ",y="%s%s%s%s",aG="<2>",aF="option",ae="%s%s%s%s%s",aD=",@ ",aw="colorings",ax="@,",ay="example",aC="expandable",s="%s",aM="examples",N="Colorings",aK="src/haz3lweb/view/ExplainThis.re.message_mode",o="%s%s%s",aI="style",aB="active",M="MessageContent",p="%s%s",Y=848054398,Z=-976970511,_=139,w=a.jsoo_runtime,n=w.caml_equal;function j(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):w.caml_call_gen(a,[b])}function @@ -476406,7 +476400,7 @@ var i=c6;var x=[0,ad(cR,i,u),s],y=h(t[37],x,p),z=[0,j(m[5],cT),0],A=[0,j(v[1][55],function(a){return j(f,cU)}),0],B=[0,[0,j(q[1],cV),A]],D=[0,l(m[14],0,B,z),0],E=[0,r(c1[5],cZ,cY,1===c[8][3]?1:0,function(a){return j(f,cX)}),D],F=[0,[0,j(q[1],c2),0]],G=[0,l(m[14],0,F,E),0],H=h(t[37],G,y),I=[0,[0,j(q[1],c3),0]],J=[0,l(m[14],0,I,H),o],K=[0,[0,j(v[1][23],c5),0]];return l(m[14],0,K,J)}],"Haz3lweb__ExplainThis");return}(globalThis)); -//# 5582 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5576 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}function @@ -476414,7 +476408,7 @@ h(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] c=e.caml_get_global_data(),b=c.Virtual_dom__Node,f="X",g=c.Virtual_dom__Vdom;e.caml_register_global(3,[0,function(a){var c=[0,d(b[5],f),0],e=[0,[0,d(g[1][23],a),0]];return h(b[38],0,e,c)}],"Haz3lweb__FontSpecimen");return}(globalThis)); -//# 5591 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5585 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var h="ArrowDown",A="Tab",k="z",z="d",y="Alt",g="ArrowUp",x="k",n="a",j="Home",w="p",v="Z",f="ArrowLeft",i="End",u="/",d="ArrowRight",e=a.jsoo_runtime,t=e.caml_int_of_string,s=e.caml_string_compare;function m(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}function @@ -476432,7 +476426,7 @@ r=s(b,"\xc3\x9f");if(0<=r){if(0>=r)return Z;if(b==="\xc3\xa7")return Y;if(b==="\ if(a[3]){if(a[4]){if(a[6])return b!==n?b!=="e"?0:c(au):c(av)}else if(a[5]&&a[6])return b!==u?b!==n?b!==z?b!==x?b!==w?b!==k?l(b)?[0,[10,t(b)]]:b!==h?b!==f?b!==d?b!==g?0:c(aw):c(ax):c(ay):c(az):aA:aB:aC:c(aD):c(aE):aF}else if(!a[4]&&a[5]&&a[6]){if(b===h)return c(aK);if(b===f)return c(aJ);if(b===d)return c(aI);if(b===g)return c(aH);if(b!==v&&b!==k)return 0;return aG}}return 0}if(p){var q=s(b,"Delete");if(0<=q){if(0>=q)return c(I);if(b===i)return c(H);if(b==="Escape")return c(G);if(b==="F12")return c(F);if(b===j)return c(E);if(b===A)return D}else{if(b===h)return c(N);if(b===f)return c(M);if(b===d)return c(L);if(b===g)return c(K);if(b==="Backspace")return c(J)}}else{if(b===h)return c(U);if(b===f)return c(T);if(b===d)return c(S);if(b===g)return c(R);if(b===i)return c(Q);if(b===j)return c(P);if(b===A)return c(O)}return b!=="Enter"?1===e.caml_ml_string_length(b)?c([8,b]):0:c([8,C[40]])}],"Haz3lweb__Keyboard");return}(globalThis)); -//# 5610 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5604 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var k=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}function @@ -476461,7 +476455,7 @@ m(a,b,c){var f=[0,[0,e(i[1],am),0]],g=[0,d(j[14],0,f,c),0],h=[0,[0,e(i[1],an),0]],k=[0,d(j[14],0,h,[0,b,0]),0],l=[0,e(ao[1][43],a),0],m=[0,[0,e(i[1],ap),l]],n=[0,d(j[14],0,m,k),g],o=[0,[0,e(i[1],aq),0]];return d(j[14],0,o,n)}k.caml_register_global(70,[0,n,o,p,q,r,t,m,function(a,b,c){var g=[0,d(h[4],as,f[4],ar),0],k=[0,o,[0,d(h[4],au,f[12],at),g]],l=[0,p(a),k],n=t(a,c),s=[0,m(av,f[8],n),l],u=r(a,b,c),v=[0,m(aw,f[7],u),s],w=q(a,b),x=[0,m(ax,f[3],w),v],y=[0,[0,e(i[1],ay),0]],z=[0,d(j[14],0,y,x),0],A=[0,f[17],0],B=[0,[0,e(i[1],az),0]];return[0,d(j[7],0,B,A),z]}],"Haz3lweb__NutMenu");return}(globalThis)); -//# 5640 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5634 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var i=a.jsoo_runtime,w=i.caml_equal;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}function @@ -476501,7 +476495,7 @@ J=[0,g(I[8],a,h,e),0],L=[0,d(j[5],K),0],N=[0,[0,d(c[1][23],M),0]],O=[0,g(j[14],0 b=d(k[25],a[1]);return d(n[17],b)},function(a,b){var e=t(a,b),i=[0,H[28],[0,h[22],0]],k=[0,d(L[1],J),i],n=f(l[37],k,e),o=m(a,b),p=[0,[0,d(c[1][23],N),o]];return g(j[14],0,p,n)}],"Haz3lweb__Page");return}(globalThis)); -//# 5778 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5772 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var A="clearStore",f="TurnOffDynamics",c="ClearStore",z="src/haz3lweb/view/DebugMode.re.action",y="turnOffDynamics",q=-976970511,l=848054398,h=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}function @@ -476549,7 +476543,7 @@ c=d(v[1],0);j(f[43],g,b);var k=0<=y[8].navigator.platform.toUpperCase().indexOf("MAC")?1:0;z[1][1]=k;return d(A[12],c)},C=function(a,b,c){return j(G[78][4][6],a,function(g){var a=j(D[4],c,g);return O(F[6],[0,function(a,b,c){try{var n=d(e[1],t);n.classList.remove(s);n.getBoundingClientRect();n.classList.add(s)}catch(f){}if(d(u[39],a)){m[1]=d(e[4],0);l[1]=1}if(d(f[41],a))k[1]=1;m[1]=d(e[4],0);try{var -A=r(f[50],g,a,b,c);d(B[5],a);var +A=r(f[49],g,a,b,c);d(B[5],a);var h=A}catch(f){var p=N(f),v=d(q[1],p);j(x[2],w,v);var h=[1,[1,d(q[1],p)]]}if(0===h[0])return h[1];var @@ -476589,4 +476583,4 @@ H=[0,[0,c[14]],[0,f[34]],[0],n,C],I=d(c[19],c[16]);P(L[1],K,0,0,J,I,H)}h.caml_re (globalThis)); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJtYWluLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIkRlZmF1bHRMb2NhbGUiLCJkZWZhdWx0U3RyZnRpbWUiLCJTdHJmdGltZSIsImlzQ29tbW9uSlMiLCJtb2R1bGUiLCJuYW1lc3BhY2UiLCJhZGFwdGVkU3RyZnRpbWUiLCJkZXByZWNhdGVkU3RyZnRpbWUiLCJqb29fZ2xvYmFsX29iamVjdCIsInRoaXMiLCJldmFsIiwiX3JlcXVpcmUiLCJfZGVwcmVjYXRpb25XYXJuaW5ncyIsImRlcHJlY2F0aW9uV2FybmluZyIsIm5hbWUiLCJpbnN0ZWFkIiwiY29uc29sZSIsImRlcHJlY2F0ZWRTdHJmdGltZVRaIiwiZGVwcmVjYXRlZFN0cmZ0aW1lVVRDIiwiZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkIiwiYWRhcHRGb3J3YXJkcyIsImZuIiwiZm10IiwiZCIsImxvY2FsZSIsInVuZGVmaW5lZCIsInN0cmZ0aW1lIiwidGltZXpvbmUiLCJudWxsIiwidXRjU3RyZnRpbWUiLCJEYXRlIiwiY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJ1c2VVdGNUaW1lem9uZSIsIl9sb2NhbGUiLCJfY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJfdXNlVXRjQmFzZWREYXRlIiwiX2NhY2hlZERhdGVUaW1lc3RhbXAiLCJfY2FjaGVkRGF0ZSIsIl9zdHJmdGltZSIsImZvcm1hdCIsImRhdGUiLCJ0aW1lc3RhbXAiLCJjdXJyZW50VGltZXN0YW1wIiwiZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IiLCJfcHJvY2Vzc0Zvcm1hdCIsInJlc3VsdFN0cmluZyIsInBhZGRpbmciLCJpc0luU2NvcGUiLCJsZW5ndGgiLCJleHRlbmRlZFRaIiwiaSIsImN1cnJlbnRDaGFyQ29kZSIsInBhZFRpbGwyIiwiTWF0aCIsImhvdXJzMTIiLCJwYWRUaWxsMyIsIndlZWtOdW1iZXIiLCJ0elN0cmluZyIsInkiLCJkYXkiLCJTdHJpbmciLCJvcmRpbmFsIiwib2ZmIiwic2lnbiIsInNlcCIsImhvdXJzIiwibWlucyIsInVzZVV0Y0Jhc2VkRGF0ZSIsInRpbWV6b25lVHlwZSIsInBhcnNlSW50IiwibWludXRlcyIsIm51bWJlclRvUGFkIiwicGFkZGluZ0NoYXIiLCJob3VyIiwiZmlyc3RXZWVrZGF5Iiwid2Vla2RheSIsImZpcnN0RGF5T2ZZZWFyVXRjIiwiZGF0ZVV0YyIsInlkYXkiLCJ3ZWVrTnVtIiwibnVtYmVyIiwiaWkiLCJmIiwiZXhwb3J0cyIsImRlZmluZSIsImciLCJ3aW5kb3ciLCJnbG9iYWwiLCJzZWxmIiwiZSIsInQiLCJuIiwiciIsInMiLCJvIiwidSIsImEiLCJyZXF1aXJlIiwiRXJyb3IiLCJsIiwiY3JlYXRlRWxlbWVudCIsImRpZmYiLCJ1bmRlZiIsIm5hdGl2ZVNwbGl0IiwiY29tcGxpYW50RXhlY05wY2ciLCJzdHIiLCJzZXBhcmF0b3IiLCJsaW1pdCIsIk9iamVjdCIsIm91dHB1dCIsImZsYWdzIiwibGFzdExhc3RJbmRleCIsIlJlZ0V4cCIsInNlcGFyYXRvcjIiLCJtYXRjaCIsImxhc3RJbmRleCIsImxhc3RMZW5ndGgiLCJhcmd1bWVudHMiLCJBcnJheSIsIk9uZVZlcnNpb25Db25zdHJhaW50IiwiTVlfVkVSU0lPTiIsImhhc2hLZXkiLCJFdlN0b3JlIiwiZWxlbSIsImhhc2giLCJyb290IiwiSW5kaXZpZHVhbCIsImtleSIsInZhbHVlIiwiT25lVmVyc2lvbiIsIm1vZHVsZU5hbWUiLCJ2ZXJzaW9uIiwiZGVmYXVsdFZhbHVlIiwiZW5mb3JjZUtleSIsInZlcnNpb25WYWx1ZSIsInRvcExldmVsIiwibWluRG9jIiwiZG9jdW1lbnQiLCJkb2NjeSIsImRvbVdhbGsiLCJDb21tZW50IiwiRE9NVGV4dCIsIkRPTUVsZW1lbnQiLCJEb2N1bWVudEZyYWdtZW50IiwiRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJEb2N1bWVudCIsInByb3RvIiwidGFnTmFtZSIsIm5zIiwiZmFtaWx5IiwiZGF0YSIsImlkIiwicmVzdWx0Iiwibm9kZSIsIm93bmVyIiwic2VyaWFsaXplTm9kZSIsImh0bWxucyIsImNoaWxkIiwibmVlZGxlIiwiaW5kZXgiLCJwcmVmaXgiLCJsb2NhbE5hbWUiLCJjb2xvblBvc2l0aW9uIiwiYXR0cmlidXRlcyIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiZWxlbXMiLCJub2RlQ2xhc3NOYW1lIiwibm9kZUNsYXNzZXMiLCJpdGVtIiwiZWxlbWVudCIsImN1cnJlbnQiLCJsZWZ0IiwicmlnaHQiLCJ0eXBlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJsaXN0ZW5lciIsImV2IiwibGlzdGVuZXJzIiwibGlzdCIsInNsaWNlIiwiaXRlcmF0aXZlbHlXYWxrIiwibm9kZXMiLCJjYiIsInJldCIsInZvaWRFbGVtZW50cyIsImVzY2FwZVRleHQiLCJzZXJpYWxpemVFbGVtZW50Iiwic3RyaW5ncyIsInRhZ25hbWUiLCJwcm9wZXJ0aWVzIiwiZGF0YXNldGlmeSIsImlzUHJvcGVydHkiLCJzdHlsaWZ5Iiwic3R5bGVzIiwiYXR0ciIsImMiLCJkcyIsInByb3BzIiwic3RyaW5naWZ5IiwidHVwbGUiLCJlc2NhcGVBdHRyaWJ1dGVWYWx1ZSIsImF0dHJpYnV0ZSIsInByb3AiLCJ4IiwibmF0aXZlSXNBcnJheSIsInRvU3RyaW5nIiwiaXNBcnJheSIsIm9iaiIsInBhdGNoIiwiaXNPYmplY3QiLCJpc0hvb2siLCJhcHBseVByb3BlcnRpZXMiLCJwcmV2aW91cyIsInByb3BOYW1lIiwicHJvcFZhbHVlIiwicmVtb3ZlUHJvcGVydHkiLCJwYXRjaE9iamVjdCIsInByZXZpb3VzVmFsdWUiLCJhdHRyTmFtZSIsImF0dHJWYWx1ZSIsImdldFByb3RvdHlwZSIsInJlcGxhY2VyIiwiayIsImlzVk5vZGUiLCJpc1ZUZXh0IiwiaXNXaWRnZXQiLCJoYW5kbGVUaHVuayIsInZub2RlIiwib3B0cyIsImRvYyIsIndhcm4iLCJjaGlsZHJlbiIsImNoaWxkTm9kZSIsIm5vQ2hpbGQiLCJkb21JbmRleCIsInJvb3ROb2RlIiwidHJlZSIsImluZGljZXMiLCJhc2NlbmRpbmciLCJyZWN1cnNlIiwicm9vdEluZGV4IiwiaW5kZXhJblJhbmdlIiwidkNoaWxkcmVuIiwiY2hpbGROb2RlcyIsInZDaGlsZCIsIm5leHRJbmRleCIsIm1pbkluZGV4IiwibWF4SW5kZXgiLCJjdXJyZW50SW5kZXgiLCJjdXJyZW50SXRlbSIsImIiLCJWUGF0Y2giLCJ1cGRhdGVXaWRnZXQiLCJhcHBseVBhdGNoIiwidnBhdGNoIiwiZG9tTm9kZSIsInJlbmRlck9wdGlvbnMiLCJ2Tm9kZSIsInJlbW92ZU5vZGUiLCJpbnNlcnROb2RlIiwic3RyaW5nUGF0Y2giLCJ3aWRnZXRQYXRjaCIsInZOb2RlUGF0Y2giLCJyZW9yZGVyQ2hpbGRyZW4iLCJyZXBsYWNlUm9vdCIsInBhcmVudE5vZGUiLCJkZXN0cm95V2lkZ2V0IiwibmV3Tm9kZSIsImxlZnRWTm9kZSIsInZUZXh0Iiwid2lkZ2V0IiwidXBkYXRpbmciLCJ3IiwibW92ZXMiLCJrZXlNYXAiLCJyZW1vdmUiLCJpbnNlcnQiLCJqIiwib2xkUm9vdCIsIm5ld1Jvb3QiLCJyZW5kZXIiLCJwYXRjaE9wIiwicGF0Y2hlcyIsInBhdGNoUmVjdXJzaXZlIiwicGF0Y2hJbmRpY2VzIiwib3duZXJEb2N1bWVudCIsIm5vZGVJbmRleCIsInBhdGNoTGlzdCIsIk51bWJlciIsIkF0dHJpYnV0ZUhvb2siLCJwcmV2IiwibmV4dCIsIkV2SG9vayIsInByb3BlcnR5TmFtZSIsImVzIiwiU29mdFNldEhvb2siLCJWTm9kZSIsIlZUZXh0IiwiaXNWVGh1bmsiLCJwYXJzZVRhZyIsInNvZnRTZXRIb29rIiwiZXZIb29rIiwiaCIsInRhZyIsImlzQ2hpbGRyZW4iLCJ0cmFuc2Zvcm1Qcm9wZXJ0aWVzIiwiYWRkQ2hpbGQiLCJpc0NoaWxkIiwiVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50IiwiZXJyIiwiZXJyb3JTdHJpbmciLCJKU09OIiwic3BsaXQiLCJjbGFzc0lkU3BsaXQiLCJub3RDbGFzc0lkIiwibm9JZCIsInRhZ1BhcnRzIiwicGFydCIsIkRFRkFVTFRfTkFNRVNQQUNFIiwiRVZfTkFNRVNQQUNFIiwiWExJTktfTkFNRVNQQUNFIiwiWE1MX05BTUVTUEFDRSIsIlNWR19QUk9QRVJUSUVTIiwiU1ZHQXR0cmlidXRlTmFtZXNwYWNlIiwiYXR0cmlidXRlSG9vayIsIlNWR19OQU1FU1BBQ0UiLCJzdmciLCJpc1RodW5rIiwicmVuZGVyZWRBIiwicmVuZGVyZWRCIiwicmVuZGVyVGh1bmsiLCJ0aHVuayIsInJlbmRlcmVkVGh1bmsiLCJob29rIiwiaXNWaXJ0dWFsTm9kZSIsImlzVmlydHVhbFRleHQiLCJpc1ZIb29rIiwiVmlydHVhbE5vZGUiLCJub1Byb3BlcnRpZXMiLCJub0NoaWxkcmVuIiwiY291bnQiLCJkZXNjZW5kYW50cyIsImhhc1dpZGdldHMiLCJoYXNUaHVua3MiLCJkZXNjZW5kYW50SG9va3MiLCJob29rcyIsInByb3BlcnR5IiwiVmlydHVhbFBhdGNoIiwiVmlydHVhbFRleHQiLCJ0ZXh0IiwiZGlmZlByb3BzIiwiYUtleSIsImFWYWx1ZSIsImJWYWx1ZSIsIm9iamVjdERpZmYiLCJiS2V5Iiwid2FsayIsImFwcGx5IiwiYXBwbHlDbGVhciIsInRodW5rcyIsImNsZWFyU3RhdGUiLCJhcHBlbmRQYXRjaCIsInByb3BzUGF0Y2giLCJkaWZmQ2hpbGRyZW4iLCJhQ2hpbGRyZW4iLCJvcmRlcmVkU2V0IiwicmVvcmRlciIsImJDaGlsZHJlbiIsImFMZW4iLCJiTGVuIiwibGVuIiwibGVmdE5vZGUiLCJyaWdodE5vZGUiLCJ1bmhvb2siLCJkZXN0cm95V2lkZ2V0cyIsInRodW5rUGF0Y2giLCJoYXNQYXRjaGVzIiwidW5kZWZpbmVkS2V5cyIsImJDaGlsZEluZGV4Iiwia2V5SW5kZXgiLCJiS2V5cyIsImJGcmVlIiwiYUNoaWxkSW5kZXgiLCJhS2V5cyIsImFGcmVlIiwibmV3Q2hpbGRyZW4iLCJmcmVlSW5kZXgiLCJmcmVlQ291bnQiLCJkZWxldGVkSXRlbXMiLCJhSXRlbSIsIml0ZW1JbmRleCIsImxhc3RGcmVlSW5kZXgiLCJuZXdJdGVtIiwic2ltdWxhdGUiLCJzaW11bGF0ZUluZGV4IiwicmVtb3ZlcyIsImluc2VydHMiLCJzaW11bGF0ZUl0ZW0iLCJ3YW50ZWRJdGVtIiwiYXJyIiwia2V5cyIsImZyZWUiLCJ2ZG9tIiwiVmRvbVRodW5rIiwiYXJncyIsIkdlbmVyaWNIb29rIiwiaW5pdCIsInVwZGF0ZSIsImRlc3Ryb3kiLCJleHRyYSIsImhvb2tfc3RhdGVfa2V5IiwiU3ltYm9sIiwic3RhdGUiLCJmcm9tIiwidG8iLCJCYXNlX2FtX3Rlc3RpbmciLCJCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4biIsIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIiwiY2FtbF9pc19jb250aW51YXRpb25fdGFnIiwiY2FtbF9tdWwiLCJjYW1sX2hhc2hfbWl4X2ludCIsImNhbWxfaGFzaF9taXhfanNieXRlcyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50NjRfb2Zmc2V0IiwiY2FtbF9yYWlzZV9jb25zdGFudCIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsIm9mZnNldCIsIm1vZHVsdXMiLCJkaXZpc29yIiwicXVvdGllbnQiLCJxIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwiZXhwIiwicjMiLCJyMiIsInIxIiwiY2FtbF9pbnQ2NF9sbzMyIiwidiIsImNhbWxfaW50NjRfaGkzMiIsImNhbWxfaGFzaF9taXhfaW50NjQiLCJjYW1sX2hhc2hfbWl4X2Zsb2F0IiwidjAiLCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIiwiY2FtbF9oYXNoX21peF9zdHJpbmciLCJjYW1sX2hhc2hfbWl4X2J5dGVzX2FyciIsImNhbWxfc3RyX3JlcGVhdCIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMiLCJqc29vX2lzX2FzY2lpIiwiY2FtbF91dGYxNl9vZl91dGY4IiwiYzEiLCJjMiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImNvbnRlbnQiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IiwiZmxvYXQzMmEiLCJGbG9hdDMyQXJyYXkiLCJpbnQzMmEiLCJJbnQzMkFycmF5IiwiY2FtbF9pbnQ2NF90b19ieXRlcyIsImNhbWxfYmFfc2VyaWFsaXplIiwid3JpdGVyIiwiYmEiLCJzeiIsImNvbXBsZXgiLCJqc29vX3N5c19nZXRlbnYiLCJwcm9jZXNzIiwiZ2xvYmFsVGhpcyIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfcmFpc2Vfd2l0aF9hcmciLCJhcmciLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQiLCJraW5kIiwiY2FtbF9iYV9jcmVhdGVfYnVmZmVyIiwic2l6ZSIsInZpZXciLCJGbG9hdDY0QXJyYXkiLCJJbnQ4QXJyYXkiLCJVaW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsInJlcyIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2FycmF5X2JvdW5kX2Vycm9yIiwiY2FtbF9iYV9jdXN0b21fbmFtZSIsIk1sX0JpZ2FycmF5IiwibGF5b3V0IiwiYnVmZmVyIiwib2ZzIiwiaW0iLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX2JhX2Rlc2VyaWFsaXplIiwicmVhZGVyIiwibnVtX2RpbXMiLCJzaXplX2RpbSIsInNpemVfZGltX2hpIiwic2l6ZV9kaW1fbG8iLCJzaXh0eSIsImludDY0IiwiY2FtbF9iYV9jb21wYXJlIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJjYW1sX2ludDMyX3VubWFyc2hhbCIsImNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCIsImNhbWxfaW50NjRfdW5tYXJzaGFsIiwiY2FtbF9pbnQ2NF9tYXJzaGFsIiwic2l6ZXMiLCJjYW1sX2ludDY0X2NvbXBhcmUiLCJjYW1sX2ludDY0X2hhc2giLCJjYW1sX2N1c3RvbV9vcHMiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9pc19tbF9zdHJpbmciLCJjYW1sX2lzX21sX2J5dGVzIiwiY2FtbF9oYXNoIiwic2VlZCIsInF1ZXVlIiwicmQiLCJ3ciIsIm51bSIsImhoIiwiQmFzZV9oYXNoX2RvdWJsZSIsIkJhc2VfaGFzaF9zdHJpbmciLCJCYXNlX2ludF9tYXRoX2ludDMyX2NseiIsIkJhc2VfaW50X21hdGhfaW50MzJfY3R6IiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCIsImNhbWxfaW50NjRfaXNfemVybyIsImNhbWxfaW50NjRfdG9faW50MzIiLCJCYXNlX2ludF9tYXRoX2ludDY0X2NseiIsImNhbWxfaW50NjRfYW5kIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsIkJhc2VfaW50X21hdGhfaW50NjRfY3R6IiwiaXNfemVybyIsImxhbmQiLCJzbWFsbF9pbnQ2NCIsImNhbWxfaW50NjRfbXVsIiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YiIsImJhc2UiLCJleHBvbmVudCIsIm9uZSIsIm11bCIsIkJhc2VfaW50X21hdGhfaW50X2NseiIsIkJhc2VfaW50X21hdGhfaW50X2N0eiIsIkJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50IiwiQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHoiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHoiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmciLCJCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZSIsImNhbWxfY3JlYXRlX2J5dGVzIiwiQmFzZV91bnNhZmVfY3JlYXRlX2xvY2FsX2J5dGVzIiwidl9sZW4iLCJjYW1sX3N0cmluZ19vZl9hcnJheSIsImNhbWxfYmFfZ2V0XzEiLCJpMCIsIkJpZ1N0cmluZ1JlYWRlciIsImJzIiwiY2FtbF91dGY4X29mX3V0ZjE2IiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJwYXRoIiwiZXJybm8iLCJ2YXJpYW50IiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkiLCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiTWxGYWtlRmQiLCJmaWxlIiwiTWxGYWtlRGV2aWNlIiwiY29tcCIsIm5hbWVfc2xhc2giLCJtb2RlIiwicmFpc2VfdW5peCIsInBhcmVudCIsInNlZW4iLCJtIiwiZW50cnkiLCJvayIsImJ5dGVzIiwiTWxGYWtlRmRfb3V0IiwiZmQiLCJzcmMiLCJNbE11dGV4IiwiTWxOYXQiLCJjYW1sX21sX3N0cmluZ19sZW5ndGgiLCJjYW1sX3N0cmluZ191bnNhZmVfZ2V0IiwiY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmciLCJjYW1sX2J5dGVzX2JvdW5kX2Vycm9yIiwiY2FtbF9ieXRlc191bnNhZmVfc2V0IiwiY2FtbF9ieXRlc19zZXQiLCJNbE5vZGVGZCIsImJ1Zl9vZmZzZXQiLCJyZWFkIiwiTWxOb2RlRGV2aWNlIiwiY29uc3RzIiwiaXNDaGFyYWN0ZXJEZXZpY2UiLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJNbE9iamVjdFRhYmxlIiwiTmFpdmVMb29rdXAiLCJvYmpzIiwiTWxTdHJpbmdSZWFkZXIiLCJVSW50OEFycmF5UmVhZGVyIiwiaW5jcl9uYXQiLCJuYXQiLCJjYXJyeV9pbiIsImNhcnJ5IiwiYWRkX25hdCIsIm5hdDEiLCJvZnMxIiwibGVuMSIsIm5hdDIiLCJvZnMyIiwibGVuMiIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfYmFfY3JlYXRlIiwiZGltc19tbCIsImJpZ3N0cmluZ19hbGxvYyIsIl8iLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzIiwiYmExIiwicG9zMSIsImJ5dGVzMiIsInBvczIiLCJiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YiIsInNyY19wb3MiLCJkc3QiLCJkc3RfcG9zIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYSIsInN0cjEiLCJiYTIiLCJiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhIiwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImJpZ3N0cmluZ19ibGl0X3N0dWIiLCJiaWdzdHJpbmdfZGVzdHJveV9zdHViIiwidl9ic3RyIiwiYmlnc3RyaW5nX2ZpbmQiLCJjaHIiLCJiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQiLCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIiLCJ2X3MxIiwidl9zMV9wb3MiLCJ2X3MyIiwidl9zMl9wb3MiLCJiaWdzdHJpbmdfbWVtY21wX3N0dWIiLCJiaWdzdHJpbmdfbWVtbWVtX2J5dGVjb2RlIiwiaGF5c3RhY2siLCJoYXlzdGFja19wb3MiLCJoYXlzdGFja19sZW4iLCJuZWVkbGVfcG9zIiwibmVlZGxlX2xlbiIsImxpbSIsIm1hdGNoZXMiLCJjYW1sX2JhX3NldF8xIiwiYmlnc3RyaW5nX21lbXNldF9zdHViIiwiYmlnc3RyaW5nIiwidl9wb3MiLCJ2X2NoYXIiLCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIiwiYWIiLCJ0YSIsImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSIsImJpZ3N0cmluZ19yZWFsbG9jIiwibmV3X2RhdGEiLCJuZXdfYmlnc3RyaW5nIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImJpZ3N0cmluZ190b190eXBlZF9hcnJheSIsImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyIsInNyY19vZmYiLCJkc3Rfb2ZmIiwiYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmciLCJiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzIiwiYmlnc3RyaW5nYWZfbWVtY2hyIiwiYmFfb2ZmIiwiY2FtbF9pbnRfY29tcGFyZSIsImJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmciLCJiYTFfb2ZmIiwiYmEyX29mZiIsImJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmciLCJzdHJfb2ZmIiwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YiIsImNhbWxfY2hlY2tfYm91bmQiLCJhcnJheSIsImNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nIiwiYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YiIsImJpbl9wcm90X2JsaXRfYnVmX3N0dWIiLCJiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViIiwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YiIsImZsb2F0NjQiLCJmbG9hdDY0X3VpbnQ4IiwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIiLCJibGFrZTJiIiwiQURENjRBQSIsIm8wIiwibzEiLCJBREQ2NEFDIiwiYjAiLCJiMSIsIkIyQl9HRVQzMiIsIkIyQl9HIiwiaXgiLCJpeSIsIngwIiwieDEiLCJ5MCIsInkxIiwieG9yMCIsInhvcjEiLCJCTEFLRTJCX0lWMzIiLCJVaW50MzJBcnJheSIsIlNJR01BOCIsIlNJR01BODIiLCJibGFrZTJiQ29tcHJlc3MiLCJjdHgiLCJsYXN0IiwicGFyYW1ldGVyQmxvY2siLCJibGFrZTJiSW5pdCIsIm91dGxlbiIsImJsYWtlMmJVcGRhdGUiLCJpbnB1dCIsImJsYWtlMmJGaW5hbCIsIm91dCIsImJsaXRfbmF0IiwiY2FtbF9NRDVUcmFuc2Zvcm0iLCJhZGQiLCJ4eCIsImZmIiwiZ2ciLCJjYW1sX01ENUZpbmFsIiwiaW5fYnVmIiwiY2FtbF9NRDVJbml0IiwiQXJyYXlCdWZmZXIiLCJiMzIiLCJiOCIsImNhbWxfTUQ1VXBkYXRlIiwiaW5wdXRfbGVuIiwiaW5wdXRfcG9zIiwibWlzc2luZyIsImNhbWxfYWNvc2hfZmxvYXQiLCJjYW1sX2NhbGxfZ2VuIiwiYXJnc0xlbiIsIm5hcmdzIiwiZXh0cmFfYXJncyIsImNhbWxfYWxsb2NfZHVtbXlfaW5maXgiLCJjYW1sX2FsbG9jX3N0YWNrIiwiaHYiLCJoeCIsImhmIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJwIiwiYXJnczIiLCJjYW1sX2FycmF5X2FwcGVuZCIsImExIiwiYTIiLCJsMSIsImwyIiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9hcnJheV9jb25jYXQiLCJjYW1sX2FycmF5X2ZpbGwiLCJjYW1sX2FycmF5X2dldCIsImNhbWxfYXJyYXlfb2ZfYnl0ZXMiLCJjYW1sX2FycmF5X29mX3N0cmluZyIsImNhbWxfYXJyYXlfc2V0IiwibmV3dmFsIiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2FzaW5oX2Zsb2F0IiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfYXRvbWljX2NhcyIsInJlZiIsImNhbWxfYXRvbWljX2V4Y2hhbmdlIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkIiwiY2FtbF9hdG9taWNfbG9hZCIsImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkIiwiY2FtbF9iYV9ibGl0IiwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0IiwibmV3X2RpbXMiLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfYmFfZGltXzMiLCJjYW1sX2JhX2ZpbGwiLCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX2dldF8zIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfYmFfaW5pdCIsImNhbWxfYmFfa2luZCIsImNhbWxfYmFfbGF5b3V0IiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfcmVzaGFwZSIsInZpbmQiLCJuZXdfZGltIiwiY2FtbF9iYV9zZXRfMiIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9iYV9zbGljZSIsIm51bV9pbmRzIiwic3ViX2RpbXMiLCJjYW1sX2JhX3N1YiIsImNoYW5nZWRfZGltIiwiY2FtbF9iYV90b190eXBlZF9hcnJheSIsImNhbWxfYmFfdWludDhfZ2V0MTYiLCJiMiIsImNhbWxfYmFfdWludDhfZ2V0MzIiLCJiMyIsImI0IiwiY2FtbF9iYV91aW50OF9nZXQ2NCIsImI1IiwiYjYiLCJiNyIsImNhbWxfYmFfdWludDhfc2V0MTYiLCJjYW1sX2JhX3VpbnQ4X3NldDMyIiwiY2FtbF9iYV91aW50OF9zZXQ2NCIsImNhbWxfYmFja3RyYWNlX3N0YXR1cyIsIl91bml0IiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9ibGFrZTJfY3JlYXRlIiwiaGFzaGxlbiIsImNhbWxfYmxha2UyX2ZpbmFsIiwiY2FtbF9ibGFrZTJfdXBkYXRlIiwiY2FtbF9ibGFrZTJfc3RyaW5nIiwiY2FtbF9ibGl0X3N0cmluZyIsImNhbWxfYnN3YXAxNiIsImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIiwiY2FtbF9idWlsZF9zeW1ib2xzIiwic3ltYiIsImNhbWxfYnl0ZXNfY29tcGFyZSIsImNhbWxfYnl0ZXNfZXF1YWwiLCJjYW1sX2J5dGVzX2dldDE2IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJjYW1sX2J5dGVzX2xlc3NlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2J5dGVzX25vdGVxdWFsIiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImNhbWxfYnl0ZXNfc2V0MTYiLCJpMTYiLCJjYW1sX2J5dGVzX3NldDMyIiwiaTMyIiwiY2FtbF9ieXRlc19zZXQ2NCIsImk2NCIsImNhbWxfY2FsbGJhY2siLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9tbF9jaGFubmVsX2dldCIsImNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yIiwiY2hhbmlkIiwiY2hhbiIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20iLCJjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20iLCJjdXN0b20iLCJzd2FwIiwiY2FtbF9jb21wYXJlX3ZhbF90YWciLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfY29tcGFyZSIsImNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4YyIsImNvbnQiLCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjIiwiaHZhbCIsImhleG4iLCJoZWZmIiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9jb3B5c2lnbl9mbG9hdCIsImNhbWxfY29zaF9mbG9hdCIsImZzX25vZGVfc3VwcG9ydGVkIiwibWFrZV9wYXRoX2lzX2Fic29sdXRlIiwicG9zaXgiLCJ3aW4zMiIsInNwbGl0RGV2aWNlUmUiLCJkZXZpY2UiLCJpc1VuYyIsIkJvb2xlYW4iLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsImNhbWxfY3VycmVudF9kaXIiLCJjYW1sX21ha2VfcGF0aCIsImNvbXAwIiwibmNvbXAiLCJjYW1sX2dldF9yb290IiwiY2FtbF9yb290IiwianNvb19tb3VudF9wb2ludCIsInJlc29sdmVfZnNfZGV2aWNlIiwiY2FtbF9jcmVhdGVfZmlsZSIsImNhbWxfY3JlYXRlX3N0cmluZyIsImNhbWxfY3NlbF92YWx1ZSIsInZfY29uZCIsInZfdHJ1ZSIsInZfZmFsc2UiLCJjYW1sX2N1c3RvbV9ldmVudF9pbmRleCIsInpzdGRfZGVjb21wcmVzcyIsInU4IiwidTE2IiwidTMyIiwic2xjIiwiZmlsbCIsImNwdyIsImVjIiwiaW5kIiwibnQiLCJyYiIsInJ6ZmgiLCJkYXQiLCJuMyIsImZsZyIsInNzIiwiY2MiLCJkZiIsImZjZiIsImJ0IiwiZGIiLCJkaSIsImZzYiIsImZzcyIsIndzIiwid2IiLCJtc2IiLCJ2YWwiLCJiaXRzIiwicmZzZSIsIm1hbCIsInRwb3MiLCJhbCIsInByb2JzIiwic3ltIiwiaHQiLCJmcmVxIiwiZHN0YXRlIiwibnN0YXRlIiwiYmIxIiwic3ltcyIsIm5iaXRzIiwiY2J0IiwibXNrIiwibXNrMWZiIiwibXN2Iiwic3ZhbCIsInJidCIsInN5bXBvcyIsInNzdGVwIiwic21hc2siLCJzZiIsIm5iIiwicmh1Iiwid2MiLCJoYiIsImh3IiwicmMiLCJyaSIsIl9hIiwiZWJ0IiwiZmR0IiwiZXBvcyIsImxiIiwic3QxIiwic3QyIiwiYnRyMSIsImJ0cjIiLCJmcG9zIiwiYnl0ZSIsIndlcyIsInd0IiwibWIiLCJ0cyIsInJlbSIsImhidWYiLCJwdiIsImRsbHQiLCJkbWx0IiwiZG9jdCIsImIyYmwiLCJibCIsImxsYiIsImxsYmwiLCJtbGIiLCJtbGJsIiwiZGh1IiwiaHUiLCJlYiIsInN0IiwiYnRyIiwiZGh1NCIsInN6MSIsInN6MiIsInN6MyIsInJ6YiIsImJ0eXBlIiwibGJ0IiwibHNzIiwibGNzIiwiczQiLCJzcGwiLCJodWQiLCJzY20iLCJkdHMiLCJtZCIsInJidWYiLCJfYiIsIm1sdCIsIm9jdCIsImxsdCIsInNwb3MiLCJvdWJ0IiwibHN0Iiwib3N0IiwibXN0IiwibGxjIiwibGJ0ciIsIm1sYyIsIm1idHIiLCJvZmMiLCJvYnRyIiwib2ZwIiwibWwiLCJsbCIsImlkeCIsInN0aW4iLCJjY3QiLCJidWZzIiwib2wiLCJjaGsiLCJibGsiLCJjYW1sX2RlY29tcHJlc3NfaW5wdXQiLCJjYW1sX2RpdiIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19jb21wYXJlX2FuZF9zZXQiLCJjYW1sX2RvbWFpbl9kbHNfZ2V0IiwidW5pdCIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX2RvbWFpbl9pZCIsImNhbWxfbWxfbXV0ZXhfdW5sb2NrIiwiY2FtbF9kb21haW5fbGF0ZXN0X2lkeCIsImNhbWxfZG9tYWluX3NwYXduIiwidGVybV9zeW5jIiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF9lcGhlX2tleV9vZmZzZXQiLCJjYW1sX2VwaGVfdW5zZXRfZGF0YSIsImNhbWxfZXBoZV9zZXRfZGF0YSIsImNhbWxfZXBoZV9ibGl0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9rZXkiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJ3ZWFrIiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJjYW1sX2VwaGVfZ2V0X2RhdGEiLCJjYW1sX29ial9kdXAiLCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSIsImNhbWxfZXBoZV9nZXRfa2V5IiwiY2FtbF9lcGhlX2dldF9rZXlfY29weSIsInoiLCJjYW1sX2VwaGVfc2V0X2tleSIsImNhbWxfZXBoZV91bnNldF9rZXkiLCJjYW1sX2VxdWFsIiwiY2FtbF9lcmZfZmxvYXQiLCJhMyIsImE0IiwiYTUiLCJjYW1sX2VyZmNfZmxvYXQiLCJjYW1sX2V2ZW50bG9nX3BhdXNlIiwiY2FtbF9ldmVudGxvZ19yZXN1bWUiLCJjYW1sX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZXhwbTFfZmxvYXQiLCJjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uIiwiY2FtbF9mb3JtYXRfZXhjZXB0aW9uIiwiYnVja2V0Iiwic3RhcnQiLCJjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImhhbmRsZXIiLCJhdF9leGl0IiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9maW5hbF9yZWdpc3RlciIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNhbWxfZmluYWxfcmVsZWFzZSIsImNhbWxfZmluaXNoX2Zvcm1hdHRpbmciLCJyYXdidWZmZXIiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9mbWFfZmxvYXQiLCJTUExJVCIsIk1JTl9WQUxVRSIsIkVQU0lMT04iLCJDIiwiQSIsIkIiLCJtdWx0aXBseSIsImF0IiwiYWhpIiwiYWxvIiwiYmhpIiwiYmxvIiwiYWRqdXN0Iiwic2NhbGUiLCJ4cyIsInlzIiwienMiLCJ4eSIsImZzIiwiY2FtbF9wYXJzZV9mb3JtYXQiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX2Zvcm1hdF9pbnQiLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9mcmV4cF9mbG9hdCIsIm5lZyIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJ0bXAiLCJjYW1sX2djX2NvbXBhY3Rpb24iLCJjYW1sX2djX2NvdW50ZXJzIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9nY19nZXQiLCJjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQiLCJjYW1sX2djX21ham9yIiwiY2FtbF9nY19tYWpvcl9zbGljZSIsIndvcmsiLCJjYW1sX2djX21pbm9yIiwiY2FtbF9nY19taW5vcl93b3JkcyIsImNhbWxfZ2NfcXVpY2tfc3RhdCIsImNhbWxfZ2Nfc2V0IiwiX2NvbnRyb2wiLCJjYW1sX2djX3N0YXQiLCJjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrIiwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2siLCJjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIiwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UiLCJjYW1sX2dldF9nbG9iYWxfZGF0YSIsImNhbWxfZ2V0X21ham9yX2J1Y2tldCIsImNhbWxfZ2V0X21ham9yX2NyZWRpdCIsImNhbWxfZ2V0X21pbm9yX2ZyZWUiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfZ3JfYXJjX2F1eCIsImN4IiwiY3kiLCJyeSIsInJ4Iiwicm90IiwieFBvcyIsInlQb3MiLCJ4UG9zX3ByZXYiLCJ5UG9zX3ByZXYiLCJzcGFjZSIsImRlbHRhIiwiY2FtbF9ncl9zdGF0ZSIsImNhbWxfZ3Jfc3RhdGVfZ2V0IiwiY2FtbF9ncl9ibGl0X2ltYWdlIiwiaW0yIiwiY2FtbF9ncl9jbGVhcl9ncmFwaCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZ3JfY3JlYXRlX2ltYWdlIiwiY2FtbF9ncl9jdXJyZW50X3giLCJjYW1sX2dyX2N1cnJlbnRfeSIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9ncl9kcmF3X3N0ciIsImR4IiwiY2FtbF9ncl9kcmF3X2NoYXIiLCJjYW1sX2dyX2RyYXdfaW1hZ2UiLCJjYW52YXMiLCJpbWFnZSIsImNhbWxfZ3JfZHJhd19yZWN0IiwiY2FtbF9ncl9kcmF3X3N0cmluZyIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2dyX2ZpbGxfcG9seSIsImFyIiwiY2FtbF9ncl9maWxsX3JlY3QiLCJjYW1sX2dyX2xpbmV0byIsImNhbWxfZ3JfbWFrZV9pbWFnZSIsImNhbWxfZ3JfbW92ZXRvIiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9ncl9zZXRfbGluZV93aWR0aCIsImNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSIsImNhbWxfZ3Jfc2V0X2ZvbnQiLCJjYW1sX2dyX3NldF9jb2xvciIsImNvbG9yIiwiY29udmVydCIsImNfc3RyIiwiY2FtbF9ncl9yZXNpemVfd2luZG93IiwiY2FtbF9ncl9zdGF0ZV9pbml0IiwiY2FtbF9ncl9zdGF0ZV9zZXQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNvbnRleHQiLCJjYW1sX2dyX29wZW5fZ3JhcGgiLCJpbmZvIiwiZ2V0Iiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJ0aXRsZSIsImJvZHkiLCJjYW1sX2dyX29wZW5fc3Vid2luZG93IiwiY2FtbF9ncl9wbG90IiwiY2FtbF9ncl9wb2ludF9jb2xvciIsImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSIsImNhbWxfZ3Jfc2lnaW9faGFuZGxlciIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX2dyX3NpemVfeSIsImNhbWxfZ3Jfc3luY2hyb25pemUiLCJjYW1sX2dyX3RleHRfc2l6ZSIsInR4dCIsImNhbWxfZ3Jfd2FpdF9ldmVudCIsIl9ldmwiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ncmVhdGVydGhhbiIsImNhbWxfaGFzaF9taXhfYmlnc3RyaW5nIiwibnVtX2RpZ2l0c19uYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQiLCJzdHlsZSIsImV4cF9zaWduIiwic2lnbl9zdHIiLCJjc3QiLCJ4X3N0ciIsImNhbWxfaHlwb3RfZmxvYXQiLCJjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUiLCJjYW1sX3JlZmlsbCIsInN0cl9hIiwibnJlYWQiLCJjYW1sX3JhaXNlX2VuZF9vZl9maWxlIiwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSIsInJlYWR2bHEiLCJvdmVyZmxvdyIsIm43IiwiaGVhZGVyX2xlbiIsImRhdGFfbGVuIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIm1hZ2ljIiwiY29tcHJlc3NlZCIsInVuY29tcHJlc3NlZF9kYXRhX2xlbiIsIm51bV9vYmplY3RzIiwiX3NpemVfMzIiLCJfc2l6ZV82NCIsImludGVybl9vYmpfdGFibGUiLCJvYmpfY291bnRlciIsImludGVybl9yZWMiLCJoZWFkZXIiLCJvcHMiLCJleHBlY3RlZF9zaXplIiwib2xkX3BvcyIsImNhbWxfc3RyaW5nX29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZSIsImJsb2NrIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwIiwiY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9pbnQ2NF9ic3dhcCIsImNhbWxfaW50NjRfZGl2IiwiY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSIsImNhbWxfaW50NjRfbmVnIiwiY2FtbF9pbnQ2NF9mb3JtYXQiLCJ3YmFzZSIsImN2dGJsIiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfaW50NjRfeG9yIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9pc19qcyIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9qc19jYWxsIiwiY2FtbF9qc19kZWxldGUiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImNhbWxfanNfZXhwciIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9qc19mcm9tX2Zsb2F0IiwiY2FtbF9qc19mcm9tX3N0cmluZyIsImNhbWxfanNfZnVuX2NhbGwiLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc19nZXQiLCJjYW1sX2pzX2dldF9jb25zb2xlIiwiY2FtbF9qc19odG1sX2VudGl0aWVzIiwiZW50aXR5IiwidGVtcCIsImNhbWxfanNfcmVnZXhwcyIsImNhbWxfanNfaHRtbF9lc2NhcGUiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2pzX21ldGhfY2FsbCIsImNhbWxfanNfbmV3IiwiRiIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9qc19vbl9pZSIsInVhIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjYW1sX2pzX3NldCIsImNhbWxfanNfc3RyaWN0X2VxdWFscyIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwiY2FtbF9qc190b19mbG9hdCIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX2pzX3RvX3N0cmluZyIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9qc192YXIiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJGdW5jdGlvbiIsImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiYXJpdHkiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyIsImNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImNhbWxfb2JqX3RhZyIsImNhbWxfbGF6eV9yZWFkX3Jlc3VsdCIsImNhbWxfb2JqX3VwZGF0ZV90YWciLCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eSIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2xlc3NlcXVhbCIsImNhbWxfbGVzc3RoYW4iLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsImJhY2t0cmsiLCJjYW1sX2xpc3RfbW91bnRfcG9pbnQiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX2xvZzEwX2Zsb2F0IiwiY2FtbF9sb2cxcF9mbG9hdCIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfbmV3X3N0cmluZyIsImNhbWxfbHhtX25leHQiLCJzaGlmdF9sIiwic2hpZnRfciIsIm9yIiwieG9yIiwicm90bCIsInNldCIsIk0iLCJkYWJhIiwicTAiLCJxMSIsImNhbWxfbWFrZV9mbG9hdF92ZWN0IiwiY2FtbF9tYWtlX3ZlY3QiLCJjYW1sX21ha2VfbG9jYWxfdmVjdCIsInZfZWx0IiwiY2FtbF9tYXJzaGFsX2NvbnN0YW50cyIsImNhbWxfbWF5YmVfcHJpbnRfc3RhdHMiLCJjYW1sX21kNV9ieXRlcyIsImNhbWxfbWxfaW5wdXRfYmxvY2siLCJhdmFpbCIsImNhbWxfbWQ1X2NoYW4iLCJ0b3JlYWQiLCJjYW1sX21kNV9zdHJpbmciLCJjYW1sX21lbXByb2ZfZGlzY2FyZCIsImNhbWxfbWVtcHJvZl9zZXQiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfbWxfY2hhbm5lbF9yZWRpcmVjdCIsImNhcHR1cmVkIiwiaW50byIsInRvX3Jlc3RvcmUiLCJuZXdfIiwiY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmUiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZSIsImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0IiwiY2FtbF9zeXNfZmRzIiwiY2FtbF9zeXNfY2xvc2UiLCJjYW1sX21sX2ZsdXNoIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwiY2FtbF9tbF9jb25kaXRpb25fbmV3IiwiY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsIiwiY2FtbF9tbF9jb25kaXRpb25fd2FpdCIsIm11dGV4dCIsImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMiLCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfbWxfZG9tYWluX3NldF9uYW1lIiwiX25hbWUiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX21sX2lucHV0X2JpZ2FycmF5IiwiY2FtbF9tbF9pbnB1dF9jaGFyIiwiY2FtbF9tbF9pbnB1dF9pbnQiLCJjYW1sX21sX2lucHV0X3NjYW5fbGluZSIsInByZXZfbWF4IiwiY2FtbF9tbF9pc19iaW5hcnlfbW9kZSIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX21sX211dGV4X2xvY2siLCJjYW1sX21sX211dGV4X25ldyIsImNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2siLCJjYW1sX3N5c19vcGVuX2Zvcl9ub2RlIiwiZmQyIiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzIiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0IiwiYnVmZmVyZWQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyIsImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QiLCJjYW1sX21sX291dHB1dF90YSIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX291dHB1dF9iaWdhcnJheSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX3Bvc19pbiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9tbF9wb3NfaW5fNjQiLCJjYW1sX3Bvc19vdXQiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX21sX3Bvc19vdXRfNjQiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX2FyZV9hY3RpdmUiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlIiwiY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0IiwiY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQiLCJjYW1sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW5fNjQiLCJjYW1sX3NlZWtfb3V0IiwiY2FtbF9tbF9zZWVrX291dCIsImNhbWxfbWxfc2Vla19vdXRfNjQiLCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSIsImNhbWxfbWxfc2V0X2J1ZmZlcmVkIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQiLCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbCIsImNhbWxfbW9kIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9tb3VudF9hdXRvbG9hZCIsImNhbWxfbGV4X3J1bl9tZW0iLCJtZW0iLCJjdXJyX3BvcyIsImNhbWxfbGV4X3J1bl90YWciLCJjYW1sX25ld19sZXhfZW5naW5lIiwibGV4X21lbSIsImxleF9iYXNlX2NvZGUiLCJsZXhfYmFja3Rya19jb2RlIiwibGV4X2RlZmF1bHRfY29kZSIsImxleF90cmFuc19jb2RlIiwibGV4X2NoZWNrX2NvZGUiLCJsZXhfY29kZSIsInBjX29mZiIsInBzdGF0ZSIsImJhc2VfY29kZSIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiY2FtbF9ub3RlcXVhbCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX29ial9ibG9jayIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfb2JqX2lzX3NoYXJlZCIsImNhbWxfb2JqX21ha2VfZm9yd2FyZCIsImNhbWxfb2JqX3Jhd19maWVsZCIsImNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9vYmpfdHJ1bmNhdGUiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfb2pzX25ld19hcnIiLCJjYW1sX291dF9jaGFubmVsX3Bvc19mZCIsImNhbWxfb3V0cHV0X3ZhbCIsIldyaXRlciIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsIm1lbW8iLCJleGlzdGluZ19vZmZzZXQiLCJleHRlcm5fcmVjIiwic3pfMzJfNjQiLCJoZWFkZXJfcG9zIiwidHlwZV9vZl92IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIiLCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJjbWQiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0Iiwic2hpZnRfcmVjb3ZlciIsInJlZHVjZSIsIlJFQURfVE9LRU4iLCJSQUlTRV9QQVJTRV9FUlJPUiIsIkdST1dfU1RBQ0tTXzEiLCJHUk9XX1NUQUNLU18yIiwiQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04iLCJDQUxMX0VSUk9SX0ZVTkNUSU9OIiwiZW52X3Nfc3RhY2siLCJlbnZfdl9zdGFjayIsImVudl9zeW1iX3N0YXJ0X3N0YWNrIiwiZW52X3N5bWJfZW5kX3N0YWNrIiwiZW52X3N0YWNrc2l6ZSIsImVudl9zdGFja2Jhc2UiLCJlbnZfY3Vycl9jaGFyIiwiZW52X2x2YWwiLCJlbnZfc3ltYl9zdGFydCIsImVudl9zeW1iX2VuZCIsImVudl9hc3AiLCJlbnZfcnVsZV9sZW4iLCJlbnZfcnVsZV9udW1iZXIiLCJlbnZfc3AiLCJlbnZfc3RhdGUiLCJlbnZfZXJyZmxhZyIsInRibF90cmFuc2xfY29uc3QiLCJ0YmxfdHJhbnNsX2Jsb2NrIiwidGJsX2xocyIsInRibF9sZW4iLCJ0YmxfZGVmcmVkIiwidGJsX2Rnb3RvIiwidGJsX3NpbmRleCIsInRibF9yaW5kZXgiLCJ0YmxfZ2luZGV4IiwidGJsX3RhYmxlc2l6ZSIsInRibF90YWJsZSIsInRibF9jaGVjayIsInRibF9uYW1lc19jb25zdCIsInRibF9uYW1lc19ibG9jayIsImxvZyIsInRva2VuX25hbWUiLCJuYW1lcyIsInByaW50X3Rva2VuIiwidG9rIiwidG9rZW4iLCJuMSIsIm4yIiwic3RhdGUxIiwic3AiLCJlcnJmbGFnIiwiYXNwIiwiY2FtbF9wdXJlX2pzX2V4cHIiLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCIsImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZSIsImNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIiwiX2NoYW5uZWwiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiY2FtbF9yb3VuZF9mbG9hdCIsImNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvciIsImNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IiLCJjdXJzb3IiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbCIsImNhbGxiYWNrcyIsImNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlciIsImV2ZW50X25hbWUiLCJldmVudF90YWciLCJldmVudF90eXBlIiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfcnVudGltZV92YXJpYW50IiwiY2FtbF9zZXRfb29faWQiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJvbGRmbGFnIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfc2lnbmJpdF9mbG9hdCIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfc3BhY2V0aW1lX2VuYWJsZWQiLCJjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSIsImNhbWxfc3RyX2luaXRpYWxpemUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2NvbmNhdCIsImNhbWxfc3RyaW5nX2VxdWFsIiwiY2FtbF9zdHJpbmdfZ2V0IiwiY2FtbF9zdHJpbmdfZ2V0MTYiLCJjYW1sX3N0cmluZ19nZXQzMiIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9zdHJpbmdfbGVzc2VxdWFsIiwiY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9zdHJpbmdfc2V0MzIiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9zeXNfY29uc3RfaW50X3NpemUiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCIsIm9zX3R5cGUiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXgiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJjYW1sX3N5c19leGVjdXRhYmxlX25hbWUiLCJjYW1sX3N5c19leGl0IiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX3N5c19nZXRlbnYiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUiLCJjYW1sX3N5c19pc2F0dHkiLCJfY2hhbiIsImNhbWxfc3lzX21rZGlyIiwicGVybSIsImNhbWxfc3lzX21vZGlmeV9hcmd2IiwiY2FtbF9zeXNfcmFuZG9tX3NlZWQiLCJub3ciLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfc3lzX3JlbW92ZSIsImNhbWxfc3lzX3JlbmFtZSIsIm9fcm9vdCIsIm5fcm9vdCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQiLCJjaGlsZF9wcm9jZXNzIiwiY2FtbF9pbml0aWFsX3RpbWUiLCJjYW1sX3N5c190aW1lIiwiY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuIiwiY2FtbF9zeXNfdW5zYWZlX2dldGVudiIsImNhbWxfdGFuaF9mbG9hdCIsImNhbWxfdG9fanNfc3RyaW5nIiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfdW5peF9jbG9zZWRpciIsImRpcl9oYW5kbGUiLCJjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3JlYWRkaXIiLCJjYW1sX3VuaXhfZmluZGZpcnN0IiwicGF0aF9qcyIsImZpcnN0X2VudHJ5IiwiY2FtbF91bml4X2ZpbmRuZXh0IiwiY2FtbF91bml4X2dldHB3dWlkIiwiY2FtbF91bml4X2dldHRpbWVvZmRheSIsImNhbWxfdW5peF9nZXR1aWQiLCJjYW1sX3VuaXhfZ210aW1lIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJjYW1sX3VuaXhfaGFzX3N5bWxpbmsiLCJjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyIsImNhbWxfdW5peF9pc2F0dHkiLCJmaWxlRGVzY3JpcHRvciIsInR0eSIsImNhbWxfdW5peF9sb2NhbHRpbWUiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9sc3RhdCIsImNhbWxfdW5peF9sc3RhdF82NCIsImNhbWxfdW5peF9ta2RpciIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfdW5peF9yZWFkbGluayIsImNhbWxfdW5peF9yZXdpbmRkaXIiLCJuZXdfZGlyX2hhbmRsZSIsImNhbWxfdW5peF9ybWRpciIsImNhbWxfdW5peF9zdGFydHVwIiwiY2FtbF91bml4X3N0YXQiLCJjYW1sX3VuaXhfc3RhdF82NCIsImNhbWxfdW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsImNhbWxfdW5peF90aW1lIiwiY2FtbF91bml4X3VubGluayIsImNhbWxfdW5tb3VudCIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF93ZWFrX3NldCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX3hkZ19kZWZhdWx0cyIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF96c3RkX2luaXRpYWxpemUiLCJjb21wYXJlX2RpZ2l0c19uYXQiLCJjb21wYXJlX25hdCIsImNvbXBhcmVfbmF0X3JlYWwiLCJjb21wbGVtZW50X25hdCIsImNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXQiLCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCIsImNvcmVfZ2NfY29tcGFjdGlvbnMiLCJjb3JlX2djX2hlYXBfY2h1bmtzIiwiY29yZV9nY19oZWFwX3dvcmRzIiwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyIsImNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3JkcyIsImNvcmVfZ2NfbWFqb3Jfd29yZHMiLCJjb3JlX2djX21pbm9yX2NvbGxlY3Rpb25zIiwiY29yZV9nY19taW5vcl93b3JkcyIsImNvcmVfZ2NfcHJvbW90ZWRfd29yZHMiLCJjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrcyIsImNvcmVfZ2NfdG9wX2hlYXBfd29yZHMiLCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9jayIsImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmciLCJyZXMyIiwiY29yZV9tZDVfZmQiLCJpYyIsImNvcmVfdGltZV9uc19mb3JtYXQiLCJ0aW1lIiwiZm9ybWF0anMiLCJqc3RyaW5nIiwiY3JlYXRlX25hdCIsImRlY3JfbmF0IiwiYm9ycm93IiwiZGVzZXJpYWxpemVfbmF0IiwiZGl2X2hlbHBlciIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJ3cmFwIiwic2hpZnRfcmlnaHRfbmF0Iiwic2V0X3RvX3plcm9fbmF0IiwibmF0X29mX2FycmF5IiwibXVsdF9kaWdpdF9uYXQiLCJuYXQzIiwib2ZzMyIsIngyIiwieDMiLCJzdWJfbmF0IiwiZGl2X25hdCIsInF1byIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIiLCJleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0IiwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3QiLCJ2c3Rkb3V0IiwidnN0ZGVyciIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdCIsInZvdXRwdXQiLCJzZXJpYWxpemVfbmF0IiwiaW5pdGlhbGl6ZV9uYXQiLCJpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmciLCJpc19kaWdpdF9pbnQiLCJpc19kaWdpdF9vZGQiLCJpc19kaWdpdF96ZXJvIiwianNfcGVyZm9ybWFuY2UiLCJwZXJmX2hvb2tzIiwiX2UiLCJqc19wcm9mX2NsZWFyX21hcmtzIiwianNfcHJvZl9jbGVhcl9tZWFzdXJlcyIsImpzX3Byb2ZfbWFyayIsImpzX3Byb2ZfbWVhc3VyZSIsImVuZCIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwianNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCIsImxhbmRfZGlnaXRfbmF0IiwibGVuZ3RoX25hdCIsImxvcl9kaWdpdF9uYXQiLCJseG9yX2RpZ2l0X25hdCIsIm11bHRfbmF0IiwibGVuMyIsIm50aF9kaWdpdF9uYXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInJlX21hdGNoIiwicmVfd29yZF9sZXR0ZXJzIiwib3Bjb2RlcyIsImlzX3dvcmRfbGV0dGVyIiwiaW5fYml0c2V0IiwicmVfbWF0Y2hfaW1wbCIsInBhcnRpYWwiLCJwcm9nIiwiY3Bvb2wiLCJub3JtdGFibGUiLCJudW1ncm91cHMiLCJudW1yZWdpc3RlcnMiLCJzdGFydGNoYXJzIiwicGMiLCJxdWl0IiwiZ3JvdXBzIiwicmVfcmVnaXN0ZXIiLCJiYWNrdHJhY2siLCJwdXNoIiwiYWNjZXB0IiwicHJlZml4X21hdGNoIiwib3AiLCJzYXJnIiwidWFyZyIsImdyb3VwIiwicmVfcGFydGlhbF9tYXRjaCIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsInJlX3NlYXJjaF9iYWNrd2FyZCIsInJlX3NlYXJjaF9mb3J3YXJkIiwicmVfc3RyaW5nX21hdGNoIiwic2V0X2RpZ2l0X25hdCIsImRpZ2l0Iiwic2V0X2RpZ2l0X25hdF9uYXRpdmUiLCJzcXVhcmVfbmF0IiwibXNfdG9fbmFubyIsInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybyIsIm1zIiwibXNfaTYzIiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsImZhaWx3aXRoIiwicyIsImludmFsaWRfYXJnIiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0Iiwic3ltYm9sX2NvbmNhdCIsImNoYXJfb2ZfaW50IiwibiIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJzMSIsImwiLCJpIiwiaSQwIiwic3RyaW5nX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInN5bWJvbCIsImwxIiwibDIiLCJoMSIsImgyIiwidGwiLCJoMyIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwib3Blbl9vdXRfZ2VuIiwibW9kZSIsInBlcm0iLCJuYW1lIiwiYyIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwiZmx1c2hfYWxsIiwiYSIsIm91dHB1dF9ieXRlcyIsIm9jIiwib3V0cHV0X3N0cmluZyIsIm91dHB1dCIsIm9mcyIsImxlbiIsIm91dHB1dF9zdWJzdHJpbmciLCJvdXRwdXRfdmFsdWUiLCJjaGFuIiwidiIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsIm9wZW5faW5fZ2VuIiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwiaW5wdXQiLCJpYyIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJvZnMkMCIsImxlbiQwIiwiciIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsInBvcyQwIiwiaGQiLCJhY2N1IiwiYmVnIiwiYWNjdSQwIiwicmVzIiwiY2xvc2VfaW5fbm9lcnIiLCJwcmludF9jaGFyIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2VuZGxpbmUiLCJwcmludF9uZXdsaW5lIiwicHJlcnJfY2hhciIsInByZXJyX3N0cmluZyIsInByZXJyX2J5dGVzIiwicHJlcnJfaW50IiwicHJlcnJfZmxvYXQiLCJwcmVycl9lbmRsaW5lIiwicHJlcnJfbmV3bGluZSIsInJlYWRfbGluZSIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9mbG9hdCIsInJlYWRfZmxvYXRfb3B0Iiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCQwIiwic3RyMiIsInN0cjEiLCJzMiIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJmX3lldF90b19ydW4kMCIsIm9sZF9leGl0JDAiLCJuZXdfZXhpdCIsInN1Y2Nlc3MiLCJkb19kb21haW5fbG9jYWxfYXRfZXhpdCIsImRvX2F0X2V4aXQiLCJleGl0IiwicmV0Y29kZSIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjEiLCJ2MiIsInYxJDAiLCJ2MiQwIiwiY29tcGFyZSIsIm9jYW1sX3ZlcnNpb24iLCJvY2FtbF9yZWxlYXNlIiwiZXhlY3V0YWJsZV9uYW1lIiwib3NfdHlwZSIsImJhY2tlbmRfdHlwZSIsInVuaXgiLCJ3aW4zMiIsImN5Z3dpbiIsIm1heF9hcnJheV9sZW5ndGgiLCJtYXhfZmxvYXRhcnJheV9sZW5ndGgiLCJtYXhfc3RyaW5nX2xlbmd0aCIsImdldGVudl9vcHQiLCJpbnRlcmFjdGl2ZSIsInNldF9zaWduYWwiLCJzaWdfbnVtIiwic2lnX2JlaCIsImNhdGNoX2JyZWFrIiwib24iLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsIm1ha2UiLCJ1aWQiLCJBIiwicHJvdmFibHlfZXF1YWwiLCJCIiwic2V0IiwiaW5jciIsImRlY3IiLCJmb3JjZV9nZW5fbGF6eV9ibG9jayIsIm9ubHlfdmFsIiwiYmxrIiwiY2xvc3VyZSQwIiwicmVzdWx0JDAiLCJjbG9zdXJlIiwicmVzdWx0IiwiZSQwIiwiZm9yY2VfbGF6eV9ibG9jayIsImZvcmNlX2dlbiIsImx6diIsInQiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwibWFwX3ZhbCIsImVtcHR5IiwicmV0dXJuJDAiLCJjb25zIiwibmV4dCIsImFwcGVuZCIsInNlcTEiLCJzZXEyIiwic2VxIiwiZmlsdGVyX21hcCIsInNlcSQwIiwiZmlsdGVyIiwiY29uY2F0IiwiZmxhdF9tYXAiLCJmb2xkX2xlZnQiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiaXRlciIsInVuZm9sZCIsInUiLCJ1JDAiLCJpc19lbXB0eSIsInhzIiwidW5jb25zIiwieHMkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX2luZGV4IiwiZmluZF9tYXAiLCJmaW5kX21hcGkiLCJpdGVyMiIsInlzIiwieXMkMCIsInlzJDEiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXEiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJ4eXMkMCIsIm1hcF9zbmQiLCJ1bnppcCIsImZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCIsImZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAiLCJ6IiwicGFydGl0aW9uX21hcCIsInBhcnRpdGlvbiIsInBlZWwiLCJ4c3MiLCJ0cmFuc3Bvc2UiLCJ0YWlscyIsImhlYWRzIiwicmVtYWluZGVycyIsInhzcyQwIiwidGFpbHMkMCIsImhlYWRzJDAiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQiLCJiaW5kIiwiam9pbiIsIm5vbmUiLCJpc19ub25lIiwiaXNfc29tZSIsIm8wIiwidjAiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsImdldF9vayIsImdldF9lcnJvciIsIm1hcF9lcnJvciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwicjAiLCJyMSIsImUwIiwidG9fb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19zdHJpbmciLCJzZWVkZWRfaGFzaCIsInNlZWQiLCJoYXNoIiwiZXNjYXBlZCIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImMxIiwiYzIiLCJlcnJfbm9fcHJlZCIsImVycl9ub19zdWNjIiwibG9fYm91bmQiLCJoaV9ib3VuZCIsInN1Y2MiLCJwcmVkIiwiaXNfdmFsaWQiLCJvZl9pbnQiLCJpc19jaGFyIiwib2ZfY2hhciIsInRvX2NoYXIiLCJ1bnNhZmVfdG9fY2hhciIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsInV0Zl9kZWNvZGVfaW52YWxpZCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwibCQwIiwibnRoIiwibCQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwibGFzdCIsImkkMSIsInIyIiwiZmxhdHRlbiIsImExIiwicjEkMCIsImEyIiwicmV2X21hcCIsImZvbGRfcmlnaHQiLCJiMiIsImIxIiwiYjEkMCIsInJldl9tYXAyIiwiZm9sZF9yaWdodDIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmRfb3B0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJ4JDAiLCJ5ZXMiLCJubyIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwidDEiLCJzdGFibGVfc29ydCIsInNvcnQiLCJ4MiIsIngxIiwidGwkMSIsIngzIiwieDIkMCIsIngxJDAiLCJuMSIsIm4yIiwicmV2X3NvcnQiLCJ0bCQwIiwic29ydF91bmlxIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiY29tcGFyZV9sZW5ndGhzIiwiY29tcGFyZV9sZW5ndGhfd2l0aCIsImF1eCIsInRhaWwiLCJvZl9zZXEiLCJzZXEkMSIsImxvZ25vdCIsImNvcHkiLCJvZl9zdHJpbmciLCJzdWIiLCJzdWJfc3RyaW5nIiwiZXh0ZW5kIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwiZmlsbCIsImJsaXQiLCJvZnMxIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwic2VwIiwic2VwbGVuIiwiZHN0IiwicG9zIiwiaGQkMCIsImNhdCIsImlzX3NwYWNlIiwidHJpbSIsInVuc2FmZV9lc2NhcGUiLCJiJDAiLCJhcHBseTEiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImluZGV4X3JlYyIsImxpbSIsImluZGV4IiwiaW5kZXhfcmVjX29wdCIsImluZGV4X29wdCIsImluZGV4X2Zyb20iLCJpbmRleF9mcm9tX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXgiLCJyaW5kZXhfZnJvbSIsInJpbmRleF9yZWNfb3B0IiwicmluZGV4X29wdCIsInJpbmRleF9mcm9tX29wdCIsImNvbnRhaW5zX2Zyb20iLCJjb250YWlucyIsInJjb250YWluc19mcm9tIiwic3BsaXRfb25fY2hhciIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsInNldF91aW50OCIsInNldF91aW50MTZfbmUiLCJkZWNfaW52YWxpZCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwidXRmXzhfdWNoYXJfNCIsImIzIiwiZ2V0X3V0Zl84X3VjaGFyIiwiYjEkNCIsImIyJDMiLCJpJDQiLCJiMSQyIiwiaSQ1IiwiYjIkMSIsImkkNiIsImIzJDEiLCJpJDEwIiwiaSQxMSIsImkkMTIiLCJpJDciLCJiMSQxIiwiaSQ4IiwiYjIkMCIsImkkOSIsImIzJDAiLCJpJDEzIiwiYjEkNSIsImkkMTQiLCJiMiQ0IiwiaSQyIiwiYjEkMyIsImkkMyIsImIyJDIiLCJpJDE1Iiwic2V0X3V0Zl84X3VjaGFyIiwibGFzdCQxIiwibGFzdCQwIiwiaXNfdmFsaWRfdXRmXzgiLCJsYXN0JDMiLCJsYXN0JDIiLCJsYXN0JDQiLCJsYXN0JDUiLCJnZXRfdXRmXzE2YmVfdWNoYXIiLCJoaSIsImxvIiwic2V0X3V0Zl8xNmJlX3VjaGFyIiwidSQxIiwiaXNfdmFsaWRfdXRmXzE2YmUiLCJnZXRfdXRmXzE2bGVfdWNoYXIiLCJzZXRfdXRmXzE2bGVfdWNoYXIiLCJpc192YWxpZF91dGZfMTZsZSIsImJ0cyIsImJvcyIsIm9mX2J5dGVzIiwidG9fYnl0ZXMiLCJnIiwidG9fYnVmZmVyIiwiYnVmZiIsImZsYWdzIiwiZGF0YV9zaXplIiwidG90YWxfc2l6ZSIsImZyb21fYnl0ZXMiLCJmcm9tX3N0cmluZyIsIm1ha2VfbWF0cml4Iiwic3giLCJzeSIsImluaXRfbWF0cml4Iiwicm93IiwibWFwX2lucGxhY2UiLCJtYXBpX2lucGxhY2UiLCJsYSIsImxiIiwicmVzJDAiLCJsaXN0X2xlbmd0aCIsIm9mX2xpc3QiLCJpbnB1dF9hcnJheSIsImVsdCIsIm91dHB1dF9hcnJheSIsImVsdCQwIiwiYWNjJDIiLCJhMCIsImJpIiwiYWkiLCJuYSIsIm5iIiwibWF4c29uIiwiaTMxIiwiZSQxIiwiaiQwIiwiZmF0aGVyIiwic3JjMW9mcyIsInNyYzFsZW4iLCJzcmMyIiwic3JjMm9mcyIsInNyYzJsZW4iLCJkc3RvZnMiLCJzcmMxciIsInNyYzJyIiwiczIkMSIsInMxJDEiLCJpMSIsImkyIiwiaTIkMCIsImQkMCIsInMyJDAiLCJpMSQwIiwiZCQxIiwiczEkMCIsImlzb3J0dG8iLCJzcmNvZnMiLCJzb3J0dG8iLCJzaHVmZmxlIiwicmFuZCIsInNpZ25hbGluZ19uYW4iLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsImVwc2lsb24iLCJvZl9zdHJpbmdfb3B0IiwiaXNfaW50ZWdlciIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsImhsZW4iLCJzcmMiLCJzb2ZzIiwiZG9mcyIsImgiLCJtZW1faWVlZSIsIm1hcF90b19hcnJheSIsIm1hcF9mcm9tX2FycmF5IiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsIm1pbl9pbnQiLCJtYXhfaW50IiwibWF4X2ludCQwIiwidW5zaWduZWRfdG9faW50IiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9sdCIsInVuc2lnbmVkX2RpdiIsInEiLCJ1bnNpZ25lZF9yZW0iLCJzaXplIiwiZHVtbXlfcG9zIiwiemVyb19wb3MiLCJlbmdpbmUiLCJ0YmwiLCJzdGF0ZSIsIm5ld19lbmdpbmUiLCJmcm9tX2Z1bmN0aW9uIiwicmVhZF9mdW4iLCJ3aXRoX3Bvc2l0aW9ucyIsImF1eF9idWZmZXIiLCJsZXhidWYiLCJyZWFkIiwibmV3bGVuIiwibmV3YnVmIiwiZnJvbV9jaGFubmVsIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJleG4kMCIsImV4biIsImN1cnJfY2hhciIsInRvayIsInBlZWtfdmFsIiwic3ltYm9sX3N0YXJ0X3BvcyIsInN0IiwiZW4iLCJzeW1ib2xfZW5kX3BvcyIsInJoc19zdGFydF9wb3MiLCJyaHNfZW5kX3BvcyIsInN5bWJvbF9zdGFydCIsInN5bWJvbF9lbmQiLCJyaHNfc3RhcnQiLCJyaHNfZW5kIiwiaXNfY3VycmVudF9sb29rYWhlYWQiLCJwYXJzZV9lcnJvciIsImhlaWdodCIsImhsIiwiaCQwIiwiaHIiLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYiLCJscmwiLCJyciIsInJ2IiwicmwiLCJybHIiLCJybHYiLCJybGwiLCJhZGQiLCJzaW5nbGV0b24iLCJhZGRfbWluX2VsZW1lbnQiLCJhZGRfbWF4X2VsZW1lbnQiLCJyaCIsImxoIiwibWluX2VsdCIsIm1pbl9lbHRfb3B0IiwibWF4X2VsdCIsIm1heF9lbHRfb3B0IiwicmVtb3ZlX21pbl9lbHQiLCJyJDAiLCJwcmVzIiwicHJlcyQwIiwicmVtb3ZlIiwidW5pb24iLCJyMiQwIiwiaW50ZXIiLCJzcGxpdF9iaXMiLCJkaXNqb2ludCIsImNvbnNfZW51bSIsImUyJDIiLCJlMSQyIiwiZTIkMCIsImUxJDAiLCJlMiQxIiwiZTEkMSIsInN1YnNldCIsInB2IiwibGYiLCJsdCIsInJmIiwicnQiLCJjYXJkaW5hbCIsImVsZW1lbnRzX2F1eCIsImVsZW1lbnRzIiwiZmluZF9maXJzdCIsInYwJDEiLCJ2MCQwIiwiZmluZF9maXJzdF9vcHQiLCJmaW5kX2xhc3QiLCJmaW5kX2xhc3Rfb3B0IiwidHJ5X2pvaW4iLCJ2JDEiLCJ4MCIsImwkMyIsImwkNCIsIngwJDAiLCJsJDUiLCJ4MCQxIiwibmwiLCJtaWQiLCJsJDIiLCJ4NCIsImFkZF9zZXEiLCJzZXFfb2ZfZW51bSIsInNub2NfZW51bSIsInJldl9zZXFfb2ZfZW51bSIsInRvX3Jldl9zZXEiLCJ0b19zZXFfZnJvbSIsImxvdyIsImxkIiwibHJkIiwicmQiLCJybGQiLCJkYXRhIiwiZDAkMSIsImQwIiwiZDAkMCIsIm1pbl9iaW5kaW5nIiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJyZW1vdmVfbWluX2JpbmRpbmciLCJ1cGRhdGUiLCJkYXRhJDAiLCJhZGRfdG9fbGlzdCIsIm0kMCIsImFkZF9taW5fYmluZGluZyIsImsiLCJhZGRfbWF4X2JpbmRpbmciLCJjb25jYXRfb3Jfam9pbiIsImQxIiwiZDIiLCJkMiQwIiwiZDEkMCIsImQyJDEiLCJkMSQxIiwicHZkIiwiZnZkIiwibTEiLCJtMiIsImJpbmRpbmdzX2F1eCIsImJpbmRpbmdzIiwiYnMiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlX29wdCIsImNlbGwkMCIsInFfcmVzIiwicHJldiIsInByZXYkMCIsInRyYW5zZmVyIiwicTEiLCJxMiIsImNvbnRlbnRzIiwiYnVmZmVyIiwicmVzZXQiLCJpbm5lciIsInJlc2l6ZSIsIm1vcmUiLCJvbGRfcG9zIiwib2xkX2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsInVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCIsInVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXgiLCJhZGRfdXRmXzhfdWNoYXIiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJhZGRfdXRmXzE2bGVfdWNoYXIiLCJhZGRfc3Vic3RyaW5nIiwib2Zmc2V0IiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJhZGRfY2hhbm5lbCIsInRvX3JlYWQkMSIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQwIiwib3BlbmluZyIsImxpbSQwIiwic3RvcCQwIiwiayQyIiwiY2xvc2luZyIsInN0b3AiLCJrJDAiLCJrJDEiLCJuZXh0X2kiLCJpZGVudCIsInRydW5jYXRlIiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJwcm90ZWN0IiwicmVsZWFzZSIsImFjcXVpcmUiLCJ0cnlfYWNxdWlyZSIsInJldCIsImdldF92YWx1ZSIsIm1ha2UkMCIsInJlbGVhc2UkMCIsImFjcXVpcmUkMCIsInRyeV9hY3F1aXJlJDAiLCJjcHVfcmVsYXgiLCJjcmVhdGVfZGxzIiwia2V5X2NvdW50ZXIiLCJwYXJlbnRfa2V5cyIsIm5ld19rZXkiLCJzcGxpdF9mcm9tX3BhcmVudCIsImluaXRfb3JwaGFuIiwiaWR4Iiwia2kiLCJtYXliZV9ncm93Iiwic3oiLCJuZXdfc3oiLCJuZXdfc3QiLCJvbGR2YWwiLCJuZXdfb2JqIiwic3QkMCIsImN1cnZhbCIsInVwZGF0ZWRfb2JqIiwiZ2V0X2lkIiwiZG9tYWluIiwic2VsZiIsImlzX21haW5fZG9tYWluIiwiZmlyc3RfZG9tYWluX3NwYXduZWQiLCJmaXJzdF9zcGF3bl9mdW5jdGlvbiIsImJlZm9yZV9maXJzdF9zcGF3biIsIm9sZF9mIiwibmV3X2YiLCJhdF9leGl0X2tleSIsInNwYXduIiwicGsiLCJ0ZXJtX3N5bmMiLCJib2R5IiwibG9vcCIsImV4IiwicmVjb21tZW5kZWRfZG9tYWluX2NvdW50Iiwic3ViX2Zvcm1hdCIsImZvcm1hdHRpbmdfbGl0IiwiY3JlYXRlX2NoYXJfc2V0IiwiYWRkX2luX2NoYXJfc2V0Iiwic3RyX2luZCIsIm1hc2siLCJmcmVlemVfY2hhcl9zZXQiLCJyZXZfY2hhcl9zZXQiLCJjaGFyX3NldCQwIiwiaXNfaW5fY2hhcl9zZXQiLCJwYWRfb2ZfcGFkX29wdCIsInBhZF9vcHQiLCJ3aWR0aCIsInBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCIsImZtdCIsInBhZF9vcHQkMCIsInBhZF9vcHQkMSIsInBhZF9vcHQkMiIsInBhZF9vcHQkMyIsInBhZF9vcHQkNCIsInByZWNfb3B0IiwicGFkX29wdCQ1IiwibmRlYyIsInBhZF9vcHQkNiIsInBhZF9vcHQkNyIsInBhZF9vcHQkOCIsImRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwib3ZlcmhlYWQiLCJtaW5fbGVuIiwibmV3X3N0ciIsImJ1ZmZlcl9hZGRfY2hhciIsImJ1ZmZlcl9hZGRfc3RyaW5nIiwic3RyX2xlbiIsImJ1ZmZlcl9jb250ZW50cyIsImNoYXJfb2ZfaWNvbnYiLCJjaGFyX29mX2Zjb252IiwiY0YiLCJicHJpbnRfcGFkdHkiLCJwYWR0eSIsImJwcmludF9pZ25vcmVkX2ZsYWciLCJpZ25fZmxhZyIsImJwcmludF9wYWRfb3B0IiwiYnByaW50X3BhZGRpbmciLCJwYWR0eSQwIiwiYnByaW50X3ByZWNpc2lvbiIsImJwcmludF9pY29udl9mbGFnIiwiYnByaW50X2FsdGludF9mbXQiLCJicHJpbnRfZmNvbnZfZmxhZyIsInN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCIsInN0ciQwIiwiYnByaW50X2NoYXJfbGl0ZXJhbCIsImJwcmludF9zdHJpbmdfbGl0ZXJhbCIsImJwcmludF9mbXR0eSIsImZtdHR5JDEiLCJmbXR0eSQyIiwiZm10dHkkMyIsImZtdHR5JDQiLCJmbXR0eSQ1IiwiZm10dHkkNiIsImZtdHR5JDciLCJmbXR0eSQ4IiwiZm10dHkkOSIsInN1Yl9mbXR0eSIsImZtdHR5JDEwIiwic3ViX2ZtdHR5JDAiLCJmbXR0eSQxMSIsImZtdHR5JDEyIiwiZm10dHkkMTMiLCJmbXR0eSQxNCIsImZtdHR5JDE1IiwiaW50X29mX2N1c3RvbV9hcml0eSIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwiZm10JDAiLCJpZ25fZmxhZyQwIiwic3RyJDEiLCJzZXQkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJmbXR0eV9yZWxfZGV0IiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJ0cmFucyIsImpkIiwiZGoiLCJnYSIsImFnIiwiZGUkOSIsImVkJDkiLCJhZiQ5IiwiZmEkOSIsImRlJDEwIiwiZWQkMTAiLCJhZiQxMCIsImZhJDEwIiwiZGUkMTEiLCJlZCQxMSIsImFmJDExIiwiZmEkMTEiLCJkZSQxMiIsImVkJDEyIiwiYWYkMTIiLCJmYSQxMiIsImRlJDEzIiwiZWQkMTMiLCJhZiQxMyIsImZhJDEzIiwicmVzdDEiLCJyZXN0MiIsInJlc3QxJDAiLCJyZXN0MiQwIiwicmVzdDEkMSIsInJlc3QyJDEiLCJyZXN0MSQyIiwicmVzdDIkMiIsInJlc3QxJDMiLCJyZXN0MiQzIiwicmVzdDEkNCIsInJlc3QyJDQiLCJyZXN0MSQ1IiwicmVzdDIkNSIsInJlc3QxJDYiLCJyZXN0MiQ2IiwicmVzdDEkNyIsInR5MSQwIiwicmVzdDIkNyIsInR5MiQwIiwicmVzdDEkOCIsInR5MTIiLCJ0eTExIiwicmVzdDIkOCIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsInJlc3QxJDkiLCJyZXN0MiQ5IiwicmVzdDEkMTAiLCJyZXN0MiQxMCIsInJlc3QxJDExIiwicmVzdDIkMTEiLCJyZXN0MSQxMiIsInJlc3QyJDEyIiwicmVzdDEkMTMiLCJyZXN0MiQxMyIsImZtdHR5X29mX2ZtdCIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJ0eV9yZXN0IiwicHJlY190eSIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsInR5X3Jlc3QkMCIsInByZWNfdHkkMCIsInR5X3Jlc3QkMSIsInByZWNfdHkkMSIsInR5X3Jlc3QkMiIsInByZWNfdHkkMiIsInR5X3Jlc3QkMyIsInByZWNfdHkkMyIsInR5JDAiLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5X29mX2N1c3RvbSIsImFyaXR5JDAiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJmbXR0eV9yZXN0JDAiLCJmbXRfcmVzdCQwIiwiZm10X3Jlc3QkMSIsImZtdHR5X3Jlc3QkMSIsImZtdCQyIiwiZm10X3Jlc3QkMiIsImZtdHR5X3Jlc3QkMiIsImZtdCQzIiwiZm10X3Jlc3QkMyIsImZtdHR5X3Jlc3QkMyIsImZtdCQ0IiwiZm10X3Jlc3QkNCIsImZtdHR5X3Jlc3QkNCIsImZtdCQ1IiwiZm10X3Jlc3QkNSIsImZtdHR5X3Jlc3QkNSIsInByZWMkNCIsImZtdCQ2IiwiZm10X3Jlc3QkNiIsInByZWMkNSIsInBhZCQ5IiwicGFkJDEwIiwiZm10dHlfcmVzdCQ2IiwicHJlYyQ2IiwiZm10JDciLCJmbXRfcmVzdCQ3IiwicHJlYyQ3IiwicGFkJDExIiwicGFkJDEyIiwiZm10dHlfcmVzdCQ3IiwicHJlYyQ4IiwiZm10JDgiLCJmbXRfcmVzdCQ4IiwicGFkJDEzIiwicGFkJDE0IiwiZm10dHlfcmVzdCQ4IiwiZm10JDkiLCJmbXRfcmVzdCQ5IiwiZm10JDEwIiwiZm10X3Jlc3QkMTAiLCJmbXQkMTEiLCJmbXRfcmVzdCQxMSIsImZtdCQxMiIsImZtdHR5X3Jlc3QkOSIsImZtdF9yZXN0JDEyIiwiZm10JDEzIiwiZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eTEiLCJmbXRfcmVzdCQxMyIsInN1Yl9mbXR0eSQxIiwiZm10JDE0IiwiZm10dHlfcmVzdCQxMSIsImZtdF9yZXN0JDE0IiwiZm10JDE1IiwiZm10dHlfcmVzdCQxMiIsImZtdF9yZXN0JDE1IiwiZm10JDE2IiwiZm10X3Jlc3QkMTYiLCJmbXR0eSQxNiIsImZtdCQxNyIsImZtdF9yZXN0JDE3IiwiZm10dHkzIiwiZm10MyIsImZtdDEkMCIsImZtdHR5MiQwIiwiZm10MiQwIiwiZm10dHkzJDAiLCJmbXQzJDAiLCJmbXR0eV9yZXN0JDEzIiwiZm10X3Jlc3QkMTgiLCJmbXR0eSQxNyIsImZtdCQxOCIsImZtdHR5X3Jlc3QkMTQiLCJmbXRfcmVzdCQxOSIsImZtdHR5JDE4IiwiZm10JDE5IiwiZm10dHlfcmVzdCQxNSIsImZtdF9yZXN0JDIwIiwiZm10dHkkMTkiLCJmbXQkMjAiLCJ0eXBlX2lnbm9yZWRfcGFyYW1fb25lIiwic3ViX2ZtdHR5JDIiLCJzdWJfZm10dHkkMyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsImZtdHR5JDIxIiwiZm10JDIyIiwic3ViX2ZtdHR5JDQiLCJmbXR0eV9yZXN0JDE2IiwiZm10dHkkMjAiLCJmbXQkMjEiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkNSIsInN1Yl9mbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDE0Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTYiLCJzdWIyX2ZtdHR5JDEiLCJzdWIxX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTciLCJzdWIyX2ZtdHR5JDIiLCJzdWIxX2ZtdHR5JDAiLCJzdWJfZm10dHlfcmVzdCQxOCIsInN1Yl9mbXR0eV9yZXN0JDE5Iiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJzdWJfZm10dHlfcmVzdCQyMSIsInN1Yl9mbXR0eV9yZXN0JDIyIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJzdWJfZm10dHlfcmVzdCQyNCIsInN1Yl9mbXR0eV9yZXN0JDI1Iiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImthY2MiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwieCQxIiwieCQyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwieCQ3IiwieCQ4IiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJ4JDkiLCJ4JDEwIiwieCQxMSIsIngkMTIiLCJ4JDEzIiwieCQxNCIsIngkMTUiLCJ4JDE2Iiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJ4JDE3IiwicmVzdCQyNiIsIngkMTgiLCJyZXN0JDI3IiwieCQxOSIsInJlc3QkMjgiLCJyZXN0JDI5IiwiZm5fb2ZfY3VzdG9tX2FyaXR5JDAiLCJmbl9vZl9jdXN0b21fYXJpdHkiLCJvdXRwdXRfYWNjIiwicCQzIiwicCQ0IiwicCQ1IiwicCQyIiwiYnVmcHV0X2FjYyIsInN0cnB1dF9hY2MiLCJmYWlsd2l0aF9tZXNzYWdlIiwib3Blbl9ib3hfb2Zfc3RyaW5nIiwiaW52YWxpZF9ib3giLCJwYXJzZV9zcGFjZXMiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInBhcnNlIiwibGl0X3N0YXJ0IiwiZW5kX2luZCIsImFkZF9saXRlcmFsIiwic3RyX2luZCQxIiwic3RyX2luZCQyIiwicGFyc2VfZmxhZ3MiLCJzdHJfaW5kJDAiLCJwYXJzZV90YWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kXzEiLCJwYXJzZV9pbnRlZ2VyIiwic3RyX2luZF8yIiwic3RyX2luZF8zIiwiZm9ybWF0dGluZ19saXQkMCIsIm5leHRfaW5kIiwic3RyX2luZF80Iiwic3RyX2luZF81Iiwic3RyX2luZCQ0Iiwic3RyX2luZF8xJDAiLCJzdHJfaW5kXzIkMCIsInN0cl9pbmRfMyQwIiwicyQxIiwiZm9ybWF0dGluZ19saXQkMSIsIm5leHRfaW5kJDAiLCJwY3RfaW5kIiwibWludXMiLCJwbHVzIiwic3BhY2UiLCJzZXRfZmxhZyIsInN0cl9pbmQkNSIsInNwYWNlJDAiLCJoYXNoJDAiLCJwbHVzJDAiLCJtaW51cyQwIiwiemVybyQwIiwiaW5jb21wYXRpYmxlX2ZsYWciLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJwYXJzZV9jb252IiwicGFkcHJlYyIsInBsdXNfdXNlZCIsImhhc2hfdXNlZCIsInNwYWNlX3VzZWQiLCJpZ25fdXNlZCIsInBhZF91c2VkIiwicHJlY191c2VkIiwiZ2V0X3BsdXMiLCJnZXRfaGFzaCIsImdldF9zcGFjZSIsImdldF9pZ24iLCJnZXRfcGFkIiwiZ2V0X3ByZWMiLCJnZXRfcGFkcHJlYyIsImdldF9pbnRfcGFkIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJmbXRfcmVzdCQyNSIsInN1Yl9lbmQkMCIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImNvbXB1dGVfaW50X2NvbnYiLCJpZ25vcmVkJDgiLCJzcGFjZSQxIiwiaGFzaCQxIiwicGx1cyQyIiwia2luZCIsImlnbm9yZWQkNCIsImlnbm9yZWQiLCJpZ25vcmVkJDAiLCJpZ25vcmVkJDEiLCJwbHVzJDEiLCJpZ24kMCIsImlzX29wZW5fdGFnIiwiaW5kIiwic3ViX3N0ciIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImYkMCIsImludmFsaWRfc3RhdGVfZGVzY3JpcHRpb24iLCJuZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIiwibmVnYXRpdmVfY2FwYWNpdHlfcmVxdWVzdGVkIiwibWlzc2luZ19lbGVtZW50IiwidW5leHBlY3RlZF9lbXB0eV9lbGVtZW50IiwiY2hlY2tfc2FtZV9sZW5ndGgiLCJsZW5ndGhfYSIsImNoZWNrX3ZhbGlkX2xlbmd0aCIsImFyciIsImNhcGFjaXR5IiwidW5zYWZlX2dldCIsImdldF9sYXN0IiwicG9wX2xhc3QiLCJwb3BfbGFzdF9vcHQiLCJyZW1vdmVfbGFzdCIsImVuc3VyZV9jYXBhY2l0eSIsImNhcGFjaXR5X3JlcXVlc3QiLCJjdXJfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJuZXdfYXJyIiwiZW5zdXJlX2V4dHJhX2NhcGFjaXR5IiwiZXh0cmFfY2FwYWNpdHlfcmVxdWVzdCIsImZpdF9jYXBhY2l0eSIsInNldF9jYXBhY2l0eSIsImFkZF9sYXN0X2lmX3Jvb20iLCJlbGVtIiwiYWRkX2xhc3QiLCJhcHBlbmRfbGlzdCIsImxpIiwibGkkMCIsImFwcGVuZF9pdGVyIiwiYXBwZW5kX3NlcSIsImFwcGVuZF9hcnJheV9pZl9yb29tIiwibGVuZ3RoX2IiLCJhcHBlbmRfYXJyYXkiLCJhcHBlbmRfaWZfcm9vbSIsImFycl9hIiwiYXJyX2IiLCJpdGVyJDAiLCJvZl9hcnJheSIsInRvX2FycmF5IiwidG9fc2VxX3JlZW50cmFudCIsInRvX3NlcV9yZXYiLCJ0b19zZXFfcmV2X3JlZW50cmFudCIsImFzc29jMyIsInkyIiwieTEiLCJtYWtlX3N5bWxpc3QiLCJoZWxwX2FjdGlvbiIsImFkZF9oZWxwIiwic3BlY2xpc3QiLCJhZGQxIiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJjdXJyZW50IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwib3B0IiwiZm9sbG93JDAiLCJrZXl3b3JkIiwiZm9sbG93JDIiLCJub19hcmciLCJnZXRfYXJnIiwiY29uc3VtZV9hcmciLCJ0cmVhdF9hY3Rpb24iLCJub19hcmckMCIsImdldF9hcmckMCIsImNvbnN1bWVfYXJnJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJhcmckMSIsInIkMiIsImFyZyQyIiwiZiQzIiwiYXJnJDMiLCJyJDMiLCJhcmckNCIsInNwZWNzIiwidHJlYXRfYWN0aW9uJDAiLCJmJDQiLCJhcmckNSIsImYkNSIsImYkNiIsImYkNyIsImFyZyQ2IiwibmV3YXJnIiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMiLCJwYXJzZV9hcmd2X2R5bmFtaWMiLCJjdXJyZW50JDAiLCJwYXJzZV9hcmd2IiwibXNnJDAiLCJtc2ckMSIsInBhcnNlX2R5bmFtaWMiLCJwYXJzZV9leHBhbmQiLCJzZWNvbmRfd29yZCIsIm1heF9hcmdfbGVuIiwiY3VyIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsInNlZW4iLCJhbGlnbiIsImxpbWl0IiwiY29tcGxldGVkIiwia3NkIiwiY3V0Y29sJDAiLCJzcGFjZXMkMCIsInNwZWMkMCIsImN1dGNvbCIsImt3ZF9sZW4iLCJzcGFjZXMiLCJyZWFkX2F1eCIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsIndvcmQkMCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJsb2NmbXQiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwic3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvIiwiY29uc3RydWN0b3IiLCJmaWVsZHNfb3B0IiwiY29uc3RydWN0b3IkMCIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsInByaW50IiwiZmN0IiwiY2F0Y2gkMCIsInJhd19iYWNrdHJhY2VfZW50cmllcyIsImJ0IiwiY29udmVydF9yYXdfYmFja3RyYWNlIiwiZm9ybWF0X2JhY2t0cmFjZV9zbG90IiwiaW5mbyIsImlzX3JhaXNlIiwibGluZXMiLCJwcmludF9yYXdfYmFja3RyYWNlIiwib3V0Y2hhbiIsInJhd19iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJwcmludF9iYWNrdHJhY2UiLCJyYXdfYmFja3RyYWNlX3RvX3N0cmluZyIsImJhY2t0cmFjZV9zbG90X2lzX3JhaXNlIiwicGFyYW0iLCJiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUiLCJiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiIsImJhY2t0cmFjZV9zbG90X2RlZm5hbWUiLCJiYWNrdHJhY2Vfc2xvdHMiLCJiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IiwiZW50cnkiLCJyYXdfYmFja3RyYWNlX2xlbmd0aCIsImdldF9iYWNrdHJhY2UiLCJyZWdpc3Rlcl9wcmludGVyIiwiZm4iLCJvbGRfcHJpbnRlcnMiLCJuZXdfcHJpbnRlcnMiLCJleG5fc2xvdCIsImV4bl9zbG90X2lkIiwiZXhuX3Nsb3RfbmFtZSIsImVycm9ycyIsImRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbiIsInN0YXR1cyIsInVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwic2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwiZW1wdHlfYmFja3RyYWNlIiwiaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImRlYnVnZ2VyX2luX3VzZSIsImV4biQxIiwicmF3X2JhY2t0cmFjZSQwIiwiY29uc3QkMCIsImNvbXBvc2UiLCJmbGlwIiwibmVnYXRlIiwiZmluYWxseSQwIiwid29yayIsImZpbmFsbHlfbm9fZXhuIiwid29ya19leG4kMCIsIndvcmtfZXhuIiwid29ya19idCIsImV2ZW50bG9nX3BhdXNlIiwiZXZlbnRsb2dfcmVzdW1lIiwicHJpbnRfc3RhdCIsImFsbG9jYXRlZF9ieXRlcyIsIm1hIiwicHJvIiwibWkiLCJkZWxldGVfYWxhcm0iLCJjcmVhdGVfYWxhcm0iLCJudWxsX3RyYWNrZXIiLCJzYW1wbGluZ19yYXRlIiwidHJhY2tlciIsImNhbGxzdGFja19zaXplIiwib3Blbl9iaW4iLCJvcGVuX3RleHQiLCJvcGVuX2dlbiIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiaW5wdXRfYnl0ZSIsImlucHV0X2JpZ2FycmF5IiwicmVhbGx5X2lucHV0X2JpZ2FycmF5IiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQyIiwiYnVmJDAiLCJidWYkMSIsInJlbSIsImlucHV0X2xpbmVzIiwiZm9sZF9saW5lcyIsInNldF9iaW5hcnlfbW9kZSIsImZsdXNoIiwib3V0cHV0X2NoYXIiLCJvdXRwdXRfYnl0ZSIsIm91dHB1dF9iaWdhcnJheSIsImhleF9vZl9zdHJpbmciLCJjaGFyX2hleCIsInN0cmluZ19vZl9oZXgiLCJkaWdpdCIsImhhc2hfbGVuZ3RoIiwic3RyaW5nIiwiYnl0ZXMiLCJzdWJzdHJpbmciLCJzdWJieXRlcyIsImNoYW5uZWwiLCJ0b3JlYWQiLCJidWZfc2l6ZSIsImN0eCIsInRvcmVhZCQwIiwidG9yZWFkJDEiLCJmaWxlbmFtZSIsImRpZ2VzdCIsInRvX2hleCIsIm9mX2hleCIsImtpbmRfc2l6ZV9pbl9ieXRlcyIsImNsb29wIiwiY29sIiwiZmxvb3AiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQwIiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDAiLCJiYSIsImNyZWF0ZSQxIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDEiLCJvZl9hcnJheSQwIiwiY3JlYXRlJDIiLCJkaW0zIiwic2l6ZV9pbl9ieXRlcyQzIiwic2xpY2VfbGVmdF8xIiwic2xpY2VfcmlnaHRfMSIsInNsaWNlX2xlZnRfMiIsInNsaWNlX3JpZ2h0XzIiLCJpbml0JDIiLCJvZl9hcnJheSQxIiwiYXJyYXkwX29mX2dlbmFycmF5IiwiYXJyYXkxX29mX2dlbmFycmF5IiwiYXJyYXkyX29mX2dlbmFycmF5IiwiYXJyYXkzX29mX2dlbmFycmF5IiwicmVzaGFwZV8wIiwicmVzaGFwZV8xIiwicmVzaGFwZV8yIiwicmVzaGFwZV8zIiwic2VyaWFsaXphdGlvbl9wcmVmaXgiLCJpMyIsImk0IiwiaTMkMCIsImk0JDAiLCJtayIsInNlcmlhbGl6YXRpb25fcHJlZml4X2xlbiIsInRvX2JpbmFyeV9zdHJpbmciLCJvZl9iaW5hcnlfc3RyaW5nIiwicmVpbml0IiwibWFrZV9zZWxmX2luaXQiLCJtYXhfaW50MzEiLCJtYXhfaW50MzIiLCJiaXRzIiwiaW50X2F1eCIsImludCQwIiwiYm91bmQiLCJmdWxsX2ludCIsImludF9pbl9yYW5nZV9hdXgiLCJuYml0cyIsInNwYW4iLCJpbnRfaW5fcmFuZ2UiLCJiaXRzMzIiLCJpbnQzMmF1eCIsImludDMyIiwiaW50MzJfaW5fcmFuZ2UiLCJiaXRzNjQiLCJpbnQ2NGF1eCIsImludDY0IiwiaW50NjRfaW5fcmFuZ2UiLCJuYXRpdmViaXRzIiwibmF0aXZlaW50IiwibmF0aXZlaW50X2luX3JhbmdlIiwiZmxvYXQkMCIsImJvb2wiLCJta19kZWZhdWx0IiwicmFuZG9tX2tleSIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludF9pbl9yYW5nZSQwIiwiaW50MzIkMCIsImludDMyX2luX3JhbmdlJDAiLCJuYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9pbl9yYW5nZSQwIiwiaW50NjQkMCIsImludDY0X2luX3JhbmdlJDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0Iiwic2VsZl9pbml0Iiwic3BsaXQkMCIsImdldF9zdGF0ZSIsInNldF9zdGF0ZSIsIm9uZ29pbmdfdHJhdmVyc2FsIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJpc19yYW5kb21pemVkIiwicHJuZ19rZXkiLCJwb3dlcl8yX2Fib3ZlIiwicmFuZG9tIiwiY29weV9idWNrZXRsaXN0Iiwia2V5JDAiLCJuZXh0JDAiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwibmlkeCIsIm1hdGNoJDAiLCJvc2l6ZSIsIm9sZF90cmF2IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0YmxfZGF0YSIsImJ1Y2siLCJidWNrJDAiLCJidWNrJDEiLCJ0b19zZXFfa2V5cyIsInRvX3NlcV92YWx1ZXMiLCJrZXlfaW5kZXgiLCJidWNrZXQiLCJrMSIsIm5leHQxIiwiazIiLCJuZXh0MiIsImszIiwiZDMiLCJuZXh0MyIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImhhc2hfcGFyYW0iLCJyZWJ1aWxkIiwiZ2V0X2NvcHkiLCJhciIsImVtcHR5YnVja2V0IiwiZ2V0X2luZGV4Iiwic3okMCIsInN6JDEiLCJjb3VudF9idWNrZXQiLCJjb3VudCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJidWNrZXQkMCIsImhhc2hlcyIsIm5ld3N6IiwibmV3YnVja2V0JDAiLCJuZXdoYXNoZXMiLCJoYnVja2V0IiwicHJldl9sZW4iLCJsaXZlIiwiaiQyIiwibmV3YnVja2V0Iiwib2xkbGVuIiwibmV3dCIsIm9iIiwib2kiLCJvaCIsIm9pJDAiLCJuaSIsImZpbmRfYXV4IiwiZm91bmQiLCJub3Rmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJ1bmtub3duIiwicHBfZW5xdWV1ZSIsInRva2VuIiwicHBfaW5maW5pdHkiLCJwcF9vdXRwdXRfc3RyaW5nIiwicHBfb3V0cHV0X25ld2xpbmUiLCJmb3JtYXRfcHBfdGV4dCIsInRleHQiLCJmb3JtYXRfc3RyaW5nIiwiYnJlYWtfbmV3X2xpbmUiLCJyZWFsX2luZGVudCIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsInNpemUkMCIsInRhYnMiLCJhZGRfdGFiIiwibHMiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSQwIiwib2ZmJDAiLCJpbnNlcnRpb25fcG9pbnQiLCJ0YWJzJDAiLCJmaXJzdCIsImhlYWQiLCJ0YWIiLCJvZmYkMSIsImluc2VydGlvbl9wb2ludCQwIiwid2lkdGgkMiIsImJveF90eXBlJDEiLCJ0Ym94IiwidGFnX25hbWUkMCIsIm1hcmtlciQwIiwiYWR2YW5jZV9sZWZ0IiwicGVuZGluZ19jb3VudCIsImVucXVldWVfYWR2YW5jZSIsImVucXVldWVfc3RyaW5nX2FzIiwiaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIiwic3RhY2siLCJxdWV1ZV9lbGVtIiwic2V0X3NpemUiLCJsZWZ0X3RvdGFsIiwic2Nhbl9wdXNoIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfc2V0X3ByaW50X3RhZ3MiLCJwcF9zZXRfbWFya190YWdzIiwicHBfZ2V0X3ByaW50X3RhZ3MiLCJwcF9nZXRfbWFya190YWdzIiwicHBfc2V0X3RhZ3MiLCJwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwY3QiLCJwb3QiLCJtY3QiLCJtb3QiLCJwcF9yaW5pdCIsInBwX2ZsdXNoX3F1ZXVlIiwiZW5kX3dpdGhfbmV3bGluZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfcHJpbnRfbm90aGluZyIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2JsYW5rcyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwicHBfbWFyZ2luIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJzdGRidWZfa2V5Iiwic3RyX2Zvcm1hdHRlcl9rZXkiLCJidWZmZXJlZF9vdXRfc3RyaW5nIiwiYnVmZmVyZWRfb3V0X2ZsdXNoIiwic3RkX2J1Zl9rZXkiLCJlcnJfYnVmX2tleSIsInN0ZF9mb3JtYXR0ZXJfa2V5IiwiZXJyX2Zvcm1hdHRlcl9rZXkiLCJnZXRfc3RkX2Zvcm1hdHRlciIsImdldF9lcnJfZm9ybWF0dGVyIiwiZ2V0X3N0cl9mb3JtYXR0ZXIiLCJnZXRfc3RkYnVmIiwiZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciIsImZsdXNoX3N0cl9mb3JtYXR0ZXIiLCJtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIiLCJvdXRwdXQkMCIsImZsdXNoJDAiLCJzeW5jaHJvbml6ZWRfZm9ybWF0dGVyX29mX291dF8iLCJtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwic29iIiwiZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiaXRlbXMiLCJhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0iLCJpdGVtIiwiZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9iIiwib3Blbl9oYm94Iiwib3Blbl92Ym94Iiwib3Blbl9odmJveCIsIm9wZW5faG92Ym94Iiwib3Blbl9ib3giLCJjbG9zZV9ib3giLCJvcGVuX3N0YWciLCJjbG9zZV9zdGFnIiwicHJpbnRfYXMiLCJwcmludF9ib29sIiwicHJpbnRfYnJlYWsiLCJwcmludF9jdXQiLCJwcmludF9zcGFjZSIsImZvcmNlX25ld2xpbmUiLCJwcmludF9mbHVzaCIsInByaW50X2lmX25ld2xpbmUiLCJvcGVuX3Rib3giLCJjbG9zZV90Ym94IiwicHJpbnRfdGJyZWFrIiwic2V0X3RhYiIsInByaW50X3RhYiIsInNldF9tYXJnaW4iLCJnZXRfbWFyZ2luIiwic2V0X21heF9pbmRlbnQiLCJnZXRfbWF4X2luZGVudCIsInNldF9nZW9tZXRyeSIsInNhZmVfc2V0X2dlb21ldHJ5IiwiZ2V0X2dlb21ldHJ5IiwidXBkYXRlX2dlb21ldHJ5Iiwic2V0X21heF9ib3hlcyIsImdldF9tYXhfYm94ZXMiLCJvdmVyX21heF9ib3hlcyIsInNldF9lbGxpcHNpc190ZXh0IiwiZ2V0X2VsbGlwc2lzX3RleHQiLCJzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIiwic2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJzZXRfcHJpbnRfdGFncyIsImdldF9wcmludF90YWdzIiwic2V0X21hcmtfdGFncyIsImdldF9tYXJrX3RhZ3MiLCJzZXRfdGFncyIsInBwX3ByaW50X2l0ZXIiLCJwcF92IiwicHBfc2VwIiwiaXNfZmlyc3QiLCJwcF92JDAiLCJwcF9wcmludF9saXN0IiwicHBfcHJpbnRfYXJyYXkiLCJwcF9wcmludF9zZXEiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0IiwiYnR5IiwicCQ2IiwicCQ3Iiwic2l6ZSQxIiwicCQ4Iiwia2RwcmludGYiLCJkcHJpbnRmIiwia2FzcHJpbnRmIiwiYXNwcmludGYiLCJmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzIiwiZnMiLCJmcyQwIiwibnVsbF9jaGFyIiwibmV4dF9jaGFyIiwiaWIiLCJwZWVrX2NoYXIiLCJjaGVja2VkX3BlZWtfY2hhciIsImVuZF9vZl9pbnB1dCIsImJlZ2lubmluZ19vZl9pbnB1dCIsIm5hbWVfb2ZfaW5wdXQiLCJjaGFyX2NvdW50IiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiaW5hbWUiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJvcGVuX2luX2ZpbGUiLCJjbG9zZV9pbiIsImljJDAiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja19jaGFyIiwiY2hlY2tfdGhpc19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwiY29udiIsInRva2VuX2Zsb2F0Iiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIiLCJzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyIsInNjYW5fZGlnaXRfcGx1cyIsImJhc2lzIiwiZGlnaXRwIiwid2lkdGgkMyIsImlzX2JpbmFyeV9kaWdpdCIsImlzX29jdGFsX2RpZ2l0IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5fc2lnbiIsInNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbCIsInNjYW5faW50X2NvbnZlcnNpb24iLCJzY2FuX2ZyYWN0aW9uYWxfcGFydCIsInNjYW5fZXhwb25lbnRfcGFydCIsInNjYW5fZmxvYXQiLCJwcmVjaXNpb24iLCJwcmVjaXNpb24kMCIsImNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIiwibG93ZXJjYXNlIiwic2Nhbl9oZXhfZmxvYXQiLCJ3aWR0aCQ0Iiwid2lkdGgkNSIsIndpZHRoJDYiLCJ3aWR0aCQxMCIsIndpZHRoJDciLCJ3aWR0aCQ4Iiwid2lkdGgkOSIsInNjYW5fY2FtbF9mbG9hdF9yZXN0Iiwid2lkdGhfcHJlY2lzaW9uIiwiZnJhY193aWR0aCIsInNjYW5fY2FtbF9mbG9hdCIsInNjYW5fc3RyaW5nIiwic3RwIiwiaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciIsImNoZWNrX25leHRfY2hhciIsInNjYW5fYmFja3NsYXNoX2NoYXIiLCJjMCIsImdldF9kaWdpdCQwIiwiYzEkMCIsImMyJDAiLCJnZXRfZGlnaXQiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsImZpbmRfc3RvcCIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsIndpZHRoX29mX3BhZF9vcHQiLCJzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IiwiZm10aW5nIiwidGFrZV9mb3JtYXRfcmVhZGVycyQwIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyQwIiwicmVhZGVyIiwibmV3X2siLCJyZWFkZXJzX3Jlc3QiLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyIsIm1ha2Vfc2NhbmYiLCJyZWFkZXJzIiwic2NhbiQwIiwic3RyX3Jlc3QiLCJwYWRfcHJlY19zY2FuZiIsInNjYW4kMSIsInNjYW4kMiIsInNjYW4kMyIsInNjYW4kNCIsImNvbnYkMCIsInNjYW4kNSIsImNvbnYkMSIsInNjYW4kNiIsImNvbnYkMiIsInNjYW4kNyIsInNjYW4kOCIsImZtdGluZ19saXQkMCIsInN0cCQwIiwicyQyIiwic3RyX3Jlc3QkMCIsImFyZ19yZXN0Iiwia3NjYW5mX2dlbiIsImVmIiwiYXJncyQxIiwiZXhjJDAiLCJleGMiLCJhcmdzJDAiLCJrc2NhbmYiLCJrc2NhbmZfb3B0IiwiYnNjYW5mIiwiYnNjYW5mX29wdCIsImtzc2NhbmYiLCJzc2NhbmYiLCJzc2NhbmZfb3B0Iiwic2NhbmYiLCJzY2FuZl9vcHQiLCJic2NhbmZfZm9ybWF0IiwiZm9ybWF0Iiwic3NjYW5mX2Zvcm1hdCIsImZvcm1hdF9mcm9tX3N0cmluZyIsInVuZXNjYXBlZCIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicHVibGljX21ldGhvZF9sYWJlbCIsInRhZyIsImNvbXBhcmUkMCIsImNvbXBhcmUkMSIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZml0X3NpemUiLCJuZXdfdGFibGUiLCJwdWJfbGFiZWxzIiwibWV0aG9kcyIsImFycmF5IiwibmV3X3NpemUiLCJvbGRfc2l6ZSIsIm5ld19idWNrIiwibWV0aG9kX2NvdW50IiwiaW5zdF92YXJfY291bnQiLCJuZXdfbWV0aG9kIiwidGFibGUiLCJnZXRfbWV0aG9kX2xhYmVsIiwibGFiZWwiLCJnZXRfbWV0aG9kX2xhYmVscyIsIm5hbWVzIiwic2V0X21ldGhvZCIsImVsZW1lbnQiLCJnZXRfbWV0aG9kIiwibmFycm93IiwidmFycyIsInZpcnRfbWV0aHMiLCJjb25jcl9tZXRocyIsInZhcnMkMCIsInZpcnRfbWV0aHMkMCIsImNvbmNyX21ldGhzJDAiLCJ2aXJ0X21ldGhfbGFicyIsImNvbmNyX21ldGhfbGFicyIsImxhYiIsInR2YXJzIiwiYnlfbmFtZSIsImJ5X2xhYmVsIiwibWV0IiwiaG0iLCJ3aWRlbiIsInNhdmVkX3ZhcnMiLCJzYXZlZF9oaWRkZW5fbWV0aHMiLCJuZXdfdmFyaWFibGUiLCJuZXdfbWV0aG9kc192YXJpYWJsZXMiLCJtZXRocyIsInZhbHMiLCJtZXRocyQwIiwibm1ldGhzIiwibnZhbHMiLCJnZXRfdmFyaWFibGUiLCJnZXRfdmFyaWFibGVzIiwiYWRkX2luaXRpYWxpemVyIiwiY3JlYXRlX3RhYmxlIiwicHVibGljX21ldGhvZHMiLCJ0YWdzIiwiaW5pdF9jbGFzcyIsImluaGVyaXRzIiwiY2xhIiwic3VwZXIkMCIsIm5tIiwibWFrZV9jbGFzcyIsInB1Yl9tZXRocyIsImNsYXNzX2luaXQiLCJlbnZfaW5pdCIsIm1ha2VfY2xhc3Nfc3RvcmUiLCJpbml0X3RhYmxlIiwiZHVtbXlfY2xhc3MiLCJsb2MiLCJ1bmRlZiIsImNyZWF0ZV9vYmplY3QiLCJvYmoiLCJjcmVhdGVfb2JqZWN0X29wdCIsIm9ial8wIiwiaXRlcl9mIiwicnVuX2luaXRpYWxpemVycyIsImluaXRzIiwicnVuX2luaXRpYWxpemVyc19vcHQiLCJjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGkiLCJnZXRfZGF0YSIsImJ1aWxkX3BhdGgiLCJrZXlzIiwibG9va3VwX3RhYmxlcyIsInJvb3QiLCJyb290X2RhdGEiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwidGFibGVzX2RhdGEiLCJuZXdfY2FjaGUiLCJzZXRfbWV0aG9kcyIsImNsbyIsIngkMjAiLCJjbG8kMCIsIm4kMzgiLCJlJDEwIiwibiQzNyIsIm4kMzYiLCJuJDIiLCJuJDM1IiwiZiQyMCIsIm4kMyIsImYkMTkiLCJuJDM0IiwibiQ0IiwiZiQxOCIsImUkOSIsIm4kMzMiLCJuJDUiLCJmJDE3IiwibiQzMiIsImYkMTYiLCJ5JDAiLCJuJDYiLCJmJDE1IiwibiQzMSIsIm4kNyIsImYkMTQiLCJlJDgiLCJuJDMwIiwibiQ4IiwiZiQxMyIsIm4kMjkiLCJuJDkiLCJmJDEyIiwibiQyOCIsImYkOCIsImUkMiIsIm4kMTAiLCJmJDExIiwiZSQ3IiwibiQyNyIsImYkOSIsIm4kMTEiLCJmJDEwIiwibiQyNiIsIm4kMTIiLCJuJDI1IiwibiQxMyIsIm4kMjQiLCJtJDEyIiwibiQxNCIsImUkMyIsIm4kMjMiLCJlJDYiLCJtJDExIiwibiQxNSIsIm0kMSIsIm4kMjIiLCJtJDEwIiwibSQyIiwibSQ5IiwibSQzIiwibiQxNiIsIm0kOCIsIm4kMjEiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ3IiwiZSQ1IiwibiQyMCIsIm0kNSIsIm4kMTgiLCJtJDYiLCJuJDE5IiwiaW5pdF9tb2RfYmxvY2siLCJjb21wcyQwIiwibW9kdSIsInNoYXBlIiwiZm4kMCIsImNvbXBzIiwiaW5pdF9tb2QiLCJ1cGRhdGVfbW9kX2Jsb2NrIiwiY2wiLCJ1cGRhdGVfbW9kIiwicHJuZyIsImhrZXkiLCJjbGVhbiIsImRvX2J1Y2tldCIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJmaW5kX2luX2J1Y2tldCIsImJ1Y2tldF9sZW5ndGhfYWxpdmUiLCJzdGF0c19hbGl2ZSIsInNldF9kYXRhIiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJ0ZXN0X2tleSIsInQkMCIsImdldF9rZXkxIiwic2V0X2tleTEiLCJnZXRfa2V5MiIsInNldF9rZXkyIiwiZ2V0X2RhdGEkMCIsInNldF9kYXRhJDAiLCJtYWtlJDEiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsImVxdWFsJDAiLCJzZWVkZWRfaGFzaCQwIiwibWFrZSQyIiwiYWRkJDAiLCJ0ZXN0X2tleXMiLCJyZW1vdmUkMCIsImZpbmQkMCIsImxlbmd0aCQwIiwiY2xlYXIkMCIsImxlbmd0aCQxIiwiZ2V0X2tleSQwIiwic2V0X2tleSQwIiwiZ2V0X2RhdGEkMSIsInNldF9kYXRhJDEiLCJtYWtlJDMiLCJxdWVyeSQxIiwibWFrZSQ0IiwiYWRkJDEiLCJ0ZXN0X2tleXMkMCIsInJlbW92ZSQxIiwiZmluZCQxIiwibGVuZ3RoJDIiLCJjbGVhciQxIiwibnVsbCQwIiwiY3VycmVudF9kaXJfbmFtZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZXF1b3RlIiwibnVsbCQxIiwiY3VycmVudF9kaXJfbmFtZSQwIiwicGFyZW50X2Rpcl9uYW1lJDAiLCJkaXJfc2VwJDAiLCJudWxsJDIiLCJjdXJyZW50X2Rpcl9uYW1lJDEiLCJwYXJlbnRfZGlyX25hbWUkMSIsImRpcl9zZXAkMSIsImdlbmVyaWNfYmFzZW5hbWUiLCJpc19kaXJfc2VwIiwiZ2VuZXJpY19kaXJuYW1lIiwiaXNfcmVsYXRpdmUiLCJpc19pbXBsaWNpdCIsImNoZWNrX3N1ZmZpeCIsInN1ZmYiLCJjaG9wX3N1ZmZpeF9vcHQiLCJsZW5fZiIsInRlbXBfZGlyX25hbWUiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQwIiwibG9vcCQwIiwibG9vcF9icyIsImFkZF9icyIsInF1b3RlX2NtZF9maWxlbmFtZSIsInF1b3RlX2NvbW1hbmQkMCIsImRyaXZlX2FuZF9wYXRoIiwiZGlybmFtZSQwIiwicGF0aCIsImRyaXZlIiwiZGlyIiwiYmFzZW5hbWUkMCIsImJhc2VuYW1lJDEiLCJkaXJuYW1lJDEiLCJudWxsJDMiLCJjdXJyZW50X2Rpcl9uYW1lJDIiLCJwYXJlbnRfZGlyX25hbWUkMiIsImRpcl9zZXAkMiIsImlzX2Rpcl9zZXAkMSIsImlzX3JlbGF0aXZlJDEiLCJpc19pbXBsaWNpdCQxIiwiY2hlY2tfc3VmZml4JDEiLCJjaG9wX3N1ZmZpeF9vcHQkMSIsInRlbXBfZGlyX25hbWUkMSIsInF1b3RlJDEiLCJxdW90ZV9jb21tYW5kJDEiLCJiYXNlbmFtZSQyIiwiZGlybmFtZSQyIiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiaTAiLCJleHRlbnNpb24iLCJjaG9wX2V4dGVuc2lvbiIsInJlbW92ZV9leHRlbnNpb24iLCJ0ZW1wX2ZpbGVfbmFtZSIsInRlbXBfZGlyIiwicmFuZG9tX3N0YXRlIiwicm5kIiwiY3VycmVudF90ZW1wX2Rpcl9uYW1lIiwic2V0X3RlbXBfZGlyX25hbWUiLCJnZXRfdGVtcF9kaXJfbmFtZSIsInRlbXBfZmlsZSIsIm9wZW5fdGVtcF9maWxlIiwicGVybXMiLCJuZWciLCJjb25qIiwibXVsIiwiZGl2IiwiaW52Iiwibm9ybTIiLCJub3JtIiwicG9sYXIiLCJzcXJ0IiwicSQwIiwidyQwIiwiZXhwIiwibG9nIiwicG93IiwicHJpbnRlciIsImNvbnRpbnVlJDAiLCJkaXNjb250aW51ZSIsImRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIiwibWF0Y2hfd2l0aCIsImNvbXAiLCJoYW5kbGVyIiwiZWZmYyIsImVmZiIsImxhc3RfZmliZXIiLCJ0cnlfd2l0aCIsImZpYmVyIiwiY29udGludWVfZ2VuIiwicmVzdW1lX2Z1biIsImNvbnRpbnVlX3dpdGgiLCJkaXNjb250aW51ZV93aXRoIiwiZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UkMCIsInNleHBfb2ZfdCIsInQiLCJ0X29mX3NleHAiLCJjb21wYXJlIiwiYSQwIiwiYiQwIiwiYSQxIiwiYiQxIiwiYSQyIiwiYiQyIiwiYSIsImIiLCJ5cyIsInkiLCJ4cyIsIngiLCJyZXMiLCJlcXVhbCIsImRlZmF1bHRfaW5kZW50IiwibXVzdF9lc2NhcGUiLCJzdHIiLCJsZW4iLCJpeCQxIiwiaXgiLCJuZXh0IiwibmV4dCQwIiwiaXgkMCIsImVzY2FwZWQiLCJzIiwibiIsImkkMCIsInMkMCIsImkiLCJjIiwiZXNjX3N0ciIsImVzdHIiLCJlbGVuIiwiaW5kZXhfb2ZfbmV3bGluZSIsInN0YXJ0IiwibWFjaF9tYXliZV9lc2Nfc3RyIiwicHBfaHVtX2luZGVudCIsImluZGVudCIsInBwZiIsImluZGV4IiwiaW5kZXgkMCIsIm5leHRfbmV3bGluZSIsImVuZF9wb3MiLCJlbmRfcG9zJDAiLCJuZXh0X2xpbmUiLCJuZXdsaW5lX2luZGV4IiwiaW5kZXgkMSIsImgiLCJ0JDAiLCJoJDAiLCJwcF9tYWNoX2ludGVybmFsIiwibWF5X25lZWRfc3BhY2UiLCJzdHIkMCIsIm5ld19tYXlfbmVlZF9zcGFjZSIsIm5ld19tYXlfbmVlZF9zcGFjZSQwIiwibWF5X25lZWRfc3BhY2UkMCIsIm1heV9uZWVkX3NwYWNlJDEiLCJtYXlfbmVlZF9zcGFjZSQyIiwicHBfaHVtIiwic2V4cCIsInBwX21hY2giLCJzaXplX2xvb3AiLCJhY2MiLCJ2IiwibHN0Iiwic2l6ZSIsInRvX2J1ZmZlcl9odW0iLCJidWYiLCJ0b19idWZmZXJfbWFjaCIsImxvb3AiLCJ0b19idWZmZXJfZ2VuIiwiYWRkX2NoYXIiLCJhZGRfc3RyaW5nIiwiYnVmZmVyIiwidG9fc3RyaW5nX2h1bSIsInRvX3N0cmluZ19tYWNoIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJtZXNzYWdlIiwibmFtZSIsImZpZWxkcyIsImNvbnZfZmllbGRzIiwicmVzdCIsImZzZXhwIiwiZm5hbWUiLCJkb2NfY29tbWVudF90YWciLCJ0eXBlX25hbWVfdGFnIiwiYXNzb2NfdGFnIiwiYXNzb2Nfa2V5X3RhZyIsImFzc29jX3ZhbHVlX3RhZyIsImNvbXBsZXRpb25fc3VnZ2VzdGVkIiwiY29lcmNlIiwidGFnIiwicGFyYW0iLCJrZXkiLCJ2YWx1ZSIsInVuaXRfc2V4cF9ncmFtbWFyIiwic2V4cF90X3NleHBfZ3JhbW1hciIsImVtcHR5X3NleHBfZ3JhbW1hciIsInNleHBfZ3JhbW1hcl93aXRoX3RhZ3MiLCJncmFtbWFyIiwidGFncyIsInNleHBfZ3JhbW1hcl93aXRoX3RhZ19saXN0IiwicmVmX3NleHBfZ3JhbW1hciIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibGlzdF9zZXhwX2dyYW1tYXIiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCIsInJlYWRfb2xkX29wdGlvbl9mb3JtYXQiLCJ3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCIsImxpc3RfbWFwIiwiZiIsImwiLCJzZXhwX29mX3VuaXQiLCJzZXhwX29mX2Jvb2wiLCJzZXhwX29mX3N0cmluZyIsInNleHBfb2ZfYnl0ZXMiLCJieXRlcyIsInNleHBfb2ZfY2hhciIsInNleHBfb2ZfaW50Iiwic2V4cF9vZl9mbG9hdCIsInNleHBfb2ZfaW50MzIiLCJzZXhwX29mX2ludDY0Iiwic2V4cF9vZl9uYXRpdmVpbnQiLCJzZXhwX29mX3JlZiIsInNleHBfb2ZfYSIsInJmIiwic2V4cF9vZl9sYXp5X3QiLCJsdiIsInNleHBfb2Zfb3B0aW9uIiwic2V4cF9vZl9wYWlyIiwic2V4cF9vZl9iIiwic2V4cF9vZl90cmlwbGUiLCJzZXhwX29mX2MiLCJzZXhwX29mX2xpc3QiLCJzZXhwX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwic2V4cF9vZl9oYXNodGJsIiwic2V4cF9vZl9rZXkiLCJzZXhwX29mX3ZhbCIsImh0YmwiLCJjb2xsIiwiayIsInNleHBfb2Zfb3BhcXVlIiwic2V4cF9vZl9mdW4iLCJoYXNoIiwidGhlX2V4bl90YWJsZSIsImFkZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsInNleHBfb2ZfZXhuIiwicHJpbnRleGMiLCJmaW5kX2F1dG8iLCJmb3JfcHJpbnRleGMiLCJleG4iLCJzZXhwX29mX2V4bl9vcHQiLCJleG5fdG9fc3RyaW5nIiwiZSIsInByaW50ZXhjX3ByZWZlcl9zZXhwIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZXhjIiwib2Zfc2V4cF9lcnJvciIsIndoYXQiLCJ1bml0X29mX3NleHAiLCJib29sX29mX3NleHAiLCJzdHJpbmdfb2Zfc2V4cCIsImJ5dGVzX29mX3NleHAiLCJjaGFyX29mX3NleHAiLCJpbnRfb2Zfc2V4cCIsImV4YyQwIiwiZmxvYXRfb2Zfc2V4cCIsImludDMyX29mX3NleHAiLCJpbnQ2NF9vZl9zZXhwIiwibmF0aXZlaW50X29mX3NleHAiLCJyZWZfb2Zfc2V4cCIsImFfb2Zfc2V4cCIsImxhenlfdF9vZl9zZXhwIiwib3B0aW9uX29mX3NleHAiLCJlbCQwIiwiZWwiLCJwYWlyX29mX3NleHAiLCJiX29mX3NleHAiLCJiX3NleHAiLCJhX3NleHAiLCJ0cmlwbGVfb2Zfc2V4cCIsImNfb2Zfc2V4cCIsImNfc2V4cCIsImxpc3Rfb2Zfc2V4cCIsInJldl9sc3QiLCJhcnJheV9vZl9zZXhwIiwiaGFzaHRibF9vZl9zZXhwIiwia2V5X29mX3NleHAiLCJ2YWxfb2Zfc2V4cCIsImFjdCIsInZfc2V4cCIsImtfc2V4cCIsIm9wYXF1ZV9vZl9zZXhwIiwiZnVuX29mX3NleHAiLCJnZXRfZmxjX2Vycm9yIiwiY2hyIiwibGluZSIsImZpbGUiLCJoYW5kbGVyIiwiYXJnIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQiLCJyZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJhYnNlbnQiLCJjb21iaW5lIiwicGFyc2VfdmFsdWVfbWFsZm9ybWVkIiwibWFsZm9ybWVkIiwic3RhdGUiLCJwb3MiLCJwYXJzZV92YWx1ZXMiLCJtYWxmb3JtZWQkMCIsIm90aGVyIiwiY29udiIsImtpbmQiLCJzZXhwJDUiLCJkZWZhdWx0JDAiLCJzZXhwJDQiLCJzZXhwJDAiLCJzZXhwJDEiLCJzZXhwJDIiLCJzZXhwJDMiLCJwYXJzZV9zcGluZV9tYWxmb3JtZWQiLCJleHRyYSIsInNlZW4iLCJzZXhwcyIsInBhcnNlX3NwaW5lX3Nsb3ciLCJzZXhwcyQwIiwic2V4cHMkMiIsInNleHBzJDEiLCJwYXJzZV9yZWNvcmRfc2xvdyIsInVuc2VlbiIsInBhcnNlX3NwaW5lX2Zhc3QiLCJvdGhlcnMiLCJhcmdzIiwiYXRvbSIsInJlY29yZF9vZl9zZXhwcyIsImNhbGxlciIsImNvbnRleHQkMCIsImluZGV4X29mX2ZpZWxkIiwiYWxsb3dfZXh0cmFfZmllbGRzIiwiY3JlYXRlIiwiYWxsb3dfZXh0cmFfZmllbGRzJDAiLCJuYW1lcyIsIm5hbWVzJDAiLCJuYW1lcyQxIiwibWF5YmVfY29udGV4dCIsImNvbnRleHQiLCJyZWNvcmRfb2Zfc2V4cCIsImdsb2JhbGl6ZV9ib29sIiwiYiIsImdsb2JhbGl6ZV9jaGFyIiwiYyIsImdsb2JhbGl6ZV91bml0IiwidSIsImdsb2JhbGl6ZV9hcnJheSIsImEiLCJnbG9iYWxpemVfbGlzdCIsImYiLCJ4cyIsIngiLCJnbG9iYWxpemVfb3B0aW9uIiwiZ2xvYmFsaXplX3Jlc3VsdCIsImdsb2JhbGl6ZV9hIiwiZ2xvYmFsaXplX2IiLCJ0IiwiZ2xvYmFsaXplX3JlZiIsInIiLCJkZXNjZW5kaW5nIiwieSIsIm1heCIsIm1pbiIsIm1heF9pbnQiLCJtaW5faW50IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0IiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImJvb2xfb2Zfc3RyaW5nX29wdCIsImJvb2xfb2Zfc3RyaW5nIiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludF9vcHQiLCJyZWFkX2ludCIsInJlYWRfZmxvYXRfb3B0IiwicmVhZF9mbG9hdCIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwib3Blbl9vdXRfZ2VuIiwiZmx1c2giLCJmbHVzaF9hbGwiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXQiLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X2J5dGUiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF92YWx1ZSIsInNlZWtfb3V0IiwicG9zX291dCIsIm91dF9jaGFubmVsX2xlbmd0aCIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsInNldF9iaW5hcnlfbW9kZV9vdXQiLCJvcGVuX2luIiwib3Blbl9pbl9iaW4iLCJvcGVuX2luX2dlbiIsImlucHV0X2NoYXIiLCJpbnB1dF9saW5lIiwiaW5wdXQiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfYnl0ZSIsImlucHV0X2JpbmFyeV9pbnQiLCJpbnB1dF92YWx1ZSIsInNlZWtfaW4iLCJwb3NfaW4iLCJpbl9jaGFubmVsX2xlbmd0aCIsImNsb3NlX2luIiwiY2xvc2VfaW5fbm9lcnIiLCJzZXRfYmluYXJ5X21vZGVfaW4iLCJzdHJpbmdfb2ZfZm9ybWF0Iiwic3ltYm9sIiwiZXhpdCIsImF0X2V4aXQiLCJ2YWxpZF9mbG9hdF9sZXhlbSIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJkb19hdF9leGl0IiwiZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQiLCJib29sX3RvX2ludCIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJzeW1ib2wkNCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJzeW1ib2wkMTEiLCJhc2NlbmRpbmciLCJtYXgkMCIsIm1pbiQwIiwiYXNjZW5kaW5nJDAiLCJkZXNjZW5kaW5nJDAiLCJtYXgkMSIsIm1pbiQxIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2Iiwic3ltYm9sJDE3IiwiYXNjZW5kaW5nJDEiLCJkZXNjZW5kaW5nJDEiLCJjb21wYXJlIiwiZXF1YWwiLCJtYXgkMiIsIm1pbiQyIiwiYXNjZW5kaW5nJDIiLCJkZXNjZW5kaW5nJDIiLCJtYXgkMyIsIm1pbiQzIiwic3ltYm9sJDE4Iiwic3ltYm9sJDE5Iiwic3ltYm9sJDIwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwic3ltYm9sJDIzIiwiYXNjZW5kaW5nJDMiLCJkZXNjZW5kaW5nJDMiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwibWF4JDQiLCJtaW4kNCIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsInN5bWJvbCQyOSIsImFzY2VuZGluZyQ0IiwiZGVzY2VuZGluZyQ0IiwiY29tcGFyZSQxIiwiZXF1YWwkMSIsIm1heCQ1IiwibWluJDUiLCJzeW1ib2wkMzAiLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJhc2NlbmRpbmckNSIsImRlc2NlbmRpbmckNSIsImNvbXBhcmUkMiIsImVxdWFsJDIiLCJtYXgkNiIsIm1pbiQ2IiwiaSIsInN5bWJvbCQzNiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsImFzY2VuZGluZyQ2IiwiZGVzY2VuZGluZyQ2IiwiY29tcGFyZSQzIiwiZXF1YWwkMyIsIm1heCQ3IiwibWluJDciLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJzeW1ib2wkNDciLCJhc2NlbmRpbmckNyIsImRlc2NlbmRpbmckNyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJtYXgkOCIsIm1pbiQ4Iiwic3ltYm9sJDQ4Iiwic3ltYm9sJDQ5Iiwic3ltYm9sJDUwIiwic3ltYm9sJDUxIiwic3ltYm9sJDUyIiwic3ltYm9sJDUzIiwiYXNjZW5kaW5nJDgiLCJkZXNjZW5kaW5nJDgiLCJjb21wYXJlJDUiLCJlcXVhbCQ1IiwibWF4JDkiLCJtaW4kOSIsInN5bWJvbCQ1NCIsInN5bWJvbCQ1NSIsInN5bWJvbCQ1NiIsInN5bWJvbCQ1NyIsInN5bWJvbCQ1OCIsInN5bWJvbCQ1OSIsImFzY2VuZGluZyQ5IiwiZGVzY2VuZGluZyQ5IiwiY29tcGFyZSQ2IiwiZXF1YWwkNiIsIm1heCQxMCIsIm1pbiQxMCIsInN5bWJvbCQ2MCIsInN5bWJvbF9jb25jYXQkMCIsInN5bWJvbCQ2MSIsInN5bWJvbCQ2MiIsImFzciIsImxhbmQiLCJsbm90JDAiLCJsb3IiLCJsc2wiLCJsc3IiLCJseG9yIiwibW9kIiwiYWJzJDAiLCJmYWlsd2l0aCQwIiwiZnN0IiwiaW52YWxpZF9hcmckMCIsInNuZCIsInBoeXNfZXF1YWwiLCJmbG9hdF9vZl9zdHJpbmciLCJhbV90ZXN0aW5nIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwib2Zfc3RyaW5nX29wdCIsInRvX2Zsb2F0Iiwib2ZfZmxvYXQiLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJzdWNjIiwicHJlZCIsImZhaWx3aXRoZiIsImZtdCIsInMiLCJpbnZhbGlkX2FyZ2YiLCJiYWNrZW5kX3R5cGUiLCJpbnRlcmFjdGl2ZSIsIm9zX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJ3b3JkX3NpemVfaW5fYml0cyIsImludF9zaXplX2luX2JpdHMiLCJiaWdfZW5kaWFuIiwibWF4X3N0cmluZ19sZW5ndGgiLCJtYXhfYXJyYXlfbGVuZ3RoIiwicnVudGltZV92YXJpYW50IiwicnVudGltZV9wYXJhbWV0ZXJzIiwiYXJndiIsImdldF9hcmd2Iiwib2NhbWxfdmVyc2lvbiIsImVuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwicnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiZ2V0ZW52X2V4biIsInZhciQwIiwiZ2V0ZW52IiwibWF4X2xlbmd0aCIsImNyZWF0ZSIsImxlbiIsImNyZWF0ZV9sb2NhbCIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiYXBwZW5kIiwiYmxpdCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiaW5pdCIsInJlcyIsIm1ha2VfbWF0cml4Iiwib2ZfbGlzdCIsInN1YiIsInRvX2xpc3QiLCJmb2xkIiwiZm9sZF9yaWdodCIsIml0ZXIiLCJpdGVyaSIsIm1hcCIsIm1hcGkiLCJzdGFibGVfc29ydCIsInN3YXAiLCJqIiwiZWx0X2kiLCJlbHRfaiIsImVzY2FwZWQiLCJsb3dlcmNhc2UiLCJ0b19pbnQiLCJ1bnNhZmVfb2ZfaW50IiwidXBwZXJjYXNlIiwiaW50X2lzX29rIiwib2ZfaW50Iiwib2ZfaW50X2V4biIsInQxIiwidDIiLCJoZF9leG4iLCJsZW5ndGgiLCJyZXZfYXBwZW5kIiwidGxfZXhuIiwidW56aXAiLCJleGlzdHMiLCJ0JDAiLCJleGlzdHMyX29rIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwibDIkMSIsImEyIiwibDEkMSIsImExIiwiaW5pdCQwIiwibCIsImluaXQkMSIsImZvbGQyX29rIiwiZm9yX2FsbCIsImZvcl9hbGwyX29rIiwiaXRlcjJfb2siLCJub250YWlsX21hcCIsIm5vbnRhaWxfbWFwaSIsInBhcnRpdGlvbiIsInJldl9tYXAiLCJsJDAiLCJhY2N1IiwicmV2X21hcDJfb2siLCJhY2N1JDAiLCJzb3J0IiwicmV2IiwicmVzdCIsImZvbGRfcmlnaHQyX29rIiwiaGFzaF9mb2xkX3VuaXQiLCJoYXNoX2ZvbGRfaW50IiwiaGFzaF9mb2xkX2ludDY0IiwiaGFzaF9mb2xkX2Zsb2F0IiwiaGFzaF9mb2xkX3N0cmluZyIsImFzX2ludCIsImhhc2hfZm9sZF9pbnQzMiIsImhhc2hfZm9sZF9jaGFyIiwiaGFzaF9mb2xkX2Jvb2wiLCJoYXNoX2ZvbGRfbmF0aXZlaW50IiwiaGFzaF9mb2xkX29wdGlvbiIsImhhc2hfZm9sZF9lbGVtIiwiaGFzaF9mb2xkX2xpc3QiLCJzJDEiLCJsaXN0JDEiLCJzJDIiLCJsaXN0IiwibGlzdCQwIiwicyQwIiwiaGFzaF9mb2xkX2xhenlfdCIsImhhc2hfZm9sZF9yZWZfZnJvemVuIiwiaGFzaF9mb2xkX2FycmF5X2Zyb3plbiIsImFycmF5IiwiZSIsImkkMCIsImhhc2hfbmF0aXZlaW50IiwiaGFzaF9pbnQ2NCIsImhhc2hfaW50MzIiLCJoYXNoX2NoYXIiLCJoYXNoX2ludCIsImhhc2hfYm9vbCIsImhhc2hfc3RyaW5nIiwiaGFzaF9mbG9hdCIsImhhc2hfdW5pdCIsInNlZWQiLCJvZl9mb2xkIiwiaGFzaF9mb2xkX3QiLCJydW4iLCJmb2xkZXIiLCJjb21wYXJlX3N0YXRlIiwic3RhdGVfdG9fc3RyaW5nIiwic3RhdGUiLCJ0JDEiLCJ0JDIiLCJ0JDMiLCJ0JDQiLCJ0JDUiLCJjb21wYXJlX2Fic3RyYWN0IiwidHlwZV9uYW1lIiwiZXF1YWxfYWJzdHJhY3QiLCJjb21wYXJlX2Jvb2wiLCJjb21wYXJlX2NoYXIiLCJjb21wYXJlX2Zsb2F0IiwiY29tcGFyZV9pbnQiLCJjb21wYXJlX2ludDMyIiwiY29tcGFyZV9pbnQ2NCIsImNvbXBhcmVfbmF0aXZlaW50IiwiY29tcGFyZV9zdHJpbmciLCJjb21wYXJlX3VuaXQiLCJjb21wYXJlX2FycmF5IiwiY29tcGFyZV9lbHQiLCJsZW5fYSIsImxlbl9iIiwicmV0IiwiY29tcGFyZV9saXN0IiwiYSQwIiwiYiQwIiwieXMiLCJjb21wYXJlX29wdGlvbiIsImNvbXBhcmVfcmVmIiwiZXF1YWxfYm9vbCIsImVxdWFsX2NoYXIiLCJlcXVhbF9pbnQiLCJlcXVhbF9pbnQzMiIsImVxdWFsX2ludDY0IiwiZXF1YWxfbmF0aXZlaW50IiwiZXF1YWxfc3RyaW5nIiwiZXF1YWxfdW5pdCIsImVxdWFsX2Zsb2F0IiwiZXF1YWxfYXJyYXkiLCJlcXVhbF9lbHQiLCJlcXVhbF9saXN0IiwiZXF1YWxfb3B0aW9uIiwiZXF1YWxfcmVmIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJhXzAwNSIsImJfMDA2IiwiaHN2IiwiYXJnIiwiYTAiLCJoc3YkMCIsImEwJDAiLCJoc3YkMSIsImhhc2giLCJmdW5jIiwidF9zZXhwX2dyYW1tYXIiLCJpbnZhcmlhbnQiLCJzZXhwX29mX3QiLCJudW1fYml0cyIsIndvcmRfc2l6ZSIsImFsbCIsInJlZ2lzdGVyIiwicCIsInBwIiwibW9kdWxlX25hbWUiLCJmb3JtYXR0ZXIiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwiY3JlYXRlX3MiLCJzZXhwIiwicmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwiZXhuIiwic3RyIiwiZXhuJDAiLCJidCIsInJlcmFpc2VmIiwiZXhjIiwiZm9ybWF0IiwidG9fc3RyaW5nX21hY2giLCJzZXhwX29mX3QkMCIsInByb3RlY3R4IiwiZmluYWxseSQwIiwiZmluYWxfZXhuJDAiLCJmaW5hbF9leG4iLCJwcm90ZWN0IiwiZG9lc19yYWlzZSIsInBwZiIsInByaW50X3dpdGhfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9hdXgiLCJleGMkMCIsImhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCIsImhhbmRsZV91bmNhdWdodCIsIm11c3RfZXhpdCIsImV4aXQkMCIsInJlcmFpc2VfdW5jYXVnaHQiLCJyYWlzZV93aXRob3V0X2JhY2t0cmFjZSIsImluaXRpYWxpemVfbW9kdWxlIiwiY2xlYXJfYmFja3RyYWNlIiwid2l0aF9yZXR1cm4iLCJpc19hbGl2ZSIsInJldHVybiQwIiwid2l0aF9yZXR1cm5fb3B0aW9uIiwicHJlcGVuZCIsInBhcmFtIiwiY29uc3QkMCIsIm5vbiIsImZvcmV2ZXIiLCJlJDAiLCJjb21wb3NlIiwiZyIsImZsaXAiLCJhcHBseV9uX3RpbWVzIiwibiIsIm4kMCIsIngkMCIsIngkMSIsIm4kMSIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCIsImJpbmQiLCJqb2luIiwiaWdub3JlX20iLCJhbGxfdW5pdCIsIm1hcF92aWFfYmluZCIsIm1hIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDEiLCJzeW1ib2xfbWFwJDEiLCJib3RoIiwibG9vcCIsInZzIiwidHMiLCJ2IiwidG9fbW9uYWQiLCJvZl9tb25hZCIsImRlcml2ZWRfbWFwIiwibWFwMiIsInRhIiwidGIiLCJtYXAzIiwidGMiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwidGYiLCJmYWIiLCJtYXAkMCIsImFwcGx5IiwibWYiLCJteCIsInR4IiwiY3VzdG9tX21hcCIsInJldHVybiQxIiwiYXBwbHkkMCIsIm1ha2UiLCJjb21wYXJhdG9yIiwiZXJyb3Jfc291cmNlXzAxMSIsImNtcF9mIiwiY21wX3MiLCJoYXNoX2ZvbGRfZiIsImhhc2hfZm9sZF9zIiwidF9vZl9zZXhwIiwib2ZfZl8wMDciLCJvZl9zXzAwOCIsInNleHBfMDEzIiwidGFnXzAxNCIsInNleHBfYXJnc18wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwic2V4cF9hcmdzXzAxNSIsImFyZzBfMDE2IiwicmVzMF8wMTciLCJvZl9mXzAyNSIsIm9mX3NfMDI2IiwiYXJnMF8wMjciLCJyZXMwXzAyOCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJmX3NleHBfZ3JhbW1hciIsInNfc2V4cF9ncmFtbWFyIiwib3BhcXVlX2lkZW50aXR5IiwibmFtZSIsImdldCIsImZzZXQiLCJzZXR0ZXIiLCJ1cGRhdGVyIiwiZmllbGQiLCJzeW1ib2xfY29uY2F0IiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInVuc2FmZV9ibGl0Iiwic3BsaXRfb25fY2hhciIsInNlcCIsImhzdiQyIiwicG9zX2NudW1fMDEwIiwicG9zX2JvbF8wMDgiLCJwb3NfbG51bV8wMDYiLCJwb3NfZm5hbWVfMDA0IiwiYXJnXzAxMSIsImJuZHNfMDAzIiwiYXJnXzAwOSIsImJuZHNfMDAzJDAiLCJhcmdfMDA3IiwiYm5kc18wMDMkMSIsImFyZ18wMDUiLCJibmRzXzAwMyQyIiwiaGFzaF9mb2xkX3QkMCIsImhhc2gkMCIsIm1ha2VfbG9jYXRpb25fc3RyaW5nIiwicG9zX2ZuYW1lIiwicG9zX2xudW0iLCJwb3NfY251bSIsInBvc19ib2wiLCJpc19lbXB0eSIsInBhcnRpdGlvbl9tYXAiLCJmc3QkMCIsInkkMCIsInNuZCQwIiwiZXJyb3Jfc291cmNlXzAwNSIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJzZXhwXzAwNyIsInRhZ18wMDgiLCJzZXhwX2FyZ3NfMDA5IiwiYXJnMF8wMTAiLCJyZXMwXzAxMSIsInNleHBfYXJnc18wMTQiLCJhcmcwXzAxNSIsInJlczBfMDE2Iiwib2ZfYV8wMTkiLCJvZl9iXzAyMCIsImFyZzBfMDIzIiwicmVzMF8wMjQiLCJhX3NleHBfZ3JhbW1hciIsImJfc2V4cF9ncmFtbWFyIiwiY21wX2EiLCJjbXBfYiIsImFfMDI3IiwiYl8wMjgiLCJhXzAyOSIsImJfMDMwIiwiYV8wMzEiLCJiXzAzMiIsImFfMDMzIiwiYl8wMzQiLCJhXzAzNSIsImJfMDM2IiwiYV8wMzciLCJiXzAzOCIsImhhc2hfZm9sZF9hIiwiaGFzaF9mb2xkX2IiLCJnbG9iYWxpemUiLCJjaGVja19vayIsImNoZWNrX2Vycm9yIiwib2siLCJlcnJvciIsImZhaWwiLCJmYWlsZiIsIm1hcF9lcnJvciIsImJpbmQkMSIsIm1hcCQxIiwicmV0dXJuJDIiLCJpc19vayIsImlzX2Vycm9yIiwib2Zfb3B0aW9uIiwib3B0IiwiaXRlcl9lcnJvciIsInRvX2VpdGhlciIsIm9mX2VpdGhlciIsIm9rX2lmX3RydWUiLCJib29sIiwidHJ5X3dpdGgiLCJva19leG4iLCJva19vcl9mYWlsd2l0aCIsImNvbWJpbmUiLCJlcnIiLCJvazEiLCJvazIiLCJlcnIxIiwiZXJyMiIsImNvbWJpbmVfZXJyb3JzIiwiZXJycyIsImNvbWJpbmVfZXJyb3JzX3VuaXQiLCJjb3VudCIsInN1bSIsIk0iLCJmb2xkX3Jlc3VsdCIsImFjYyIsIml0ZW0iLCJmb2xkX3VudGlsIiwiZmluaXNoIiwibWluX2VsdCIsImVsdCIsIm1heF9lbHQiLCJtZW0iLCJmaW5kX21hcCIsImZpbmQiLCJ0b19hcnJheSIsIml0ZXIkMCIsIml0ZXIkMSIsImxlbmd0aCQwIiwibGVuZ3RoJDEiLCJpc19lbXB0eSQwIiwibWVtJDAiLCJzdW0kMCIsIm0iLCJjb3VudCQwIiwiZXhpc3RzJDAiLCJmb3JfYWxsJDAiLCJmaW5kX21hcCQwIiwiZmluZCQwIiwidG9fbGlzdCQwIiwidG9fYXJyYXkkMCIsIm1pbl9lbHQkMCIsIm1heF9lbHQkMCIsImZvbGRfcmVzdWx0JDAiLCJmb2xkX3VudGlsJDAiLCJvZl9hcnJheSIsImNvbmNhdF9vZl9hcnJheSIsImNvbmNhdF9tYXAiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyIiwiZWl0aGVyIiwicGFydGl0aW9uX3RmIiwiZm9sZCQwIiwib2ZfbGlzdCQwIiwib2ZfYXJyYXkkMCIsImNvbmNhdCQwIiwiZm9sZGkiLCJhY2MkMCIsImNvdW50aSIsImV4aXN0c2kiLCJmb3JfYWxsaSIsImZpbmRfbWFwaSIsImZpbmRpIiwiaXRlcmkkMCIsIml0ZXJpJDEiLCJmb2xkaSQwIiwiZm9sZGkkMSIsImNvdW50aSQwIiwiZXhpc3RzaSQwIiwiZm9yX2FsbGkkMCIsImZpbmRfbWFwaSQwIiwiZmluZGkkMCIsImRlcml2ZWRfaW5pdCIsImRlcml2ZWRfaW5pdCQwIiwiZGVyaXZlZF9jb25jYXRfbWFwaSIsImNvbmNhdF9tYXBpIiwiY29uY2F0X21hcGkkMCIsImZpbHRlcl9tYXBpIiwiZmlsdGVyaSIsImNvbXBhcmVfYSIsImVxdWFsX2EiLCJwZWVrIiwic2V4cF9vZl9hIiwic2xvd19jaGVja19wb3NfbGVuX2V4biIsInBvcyIsInRvdGFsX2xlbmd0aCIsImNoZWNrX3Bvc19sZW5fZXhuIiwic3RvcCIsImdldF9wb3NfbGVuX2V4biIsImxlbiQwIiwib2Zfc3RhdGUiLCJhc3NpZ24iLCJkc3QiLCJzcmMiLCJkc3QkMCIsInNyYyQwIiwibWFrZV9kZWZhdWx0IiwiZGVmYXVsdCQwIiwic3BsaXRfZnJvbV9wYXJlbnQiLCJnZXRfc3RhdGUiLCJyYW5kb21fa2V5IiwiZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIiwiYWxsb3dfaW5fdGVzdHMiLCJiaXRzIiwiaW50JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiY2hhciQwIiwiYXNjaWkiLCJtYWtlX3NlbGZfaW5pdCIsImludF9vbl82NGJpdHMiLCJib3VuZCIsImludF9vbl8zMmJpdHMiLCJpbnQkMSIsImJpdHMkMCIsImZ1bGxfcmFuZ2VfaW50NjQiLCJmdWxsX3JhbmdlX2ludDMyIiwiZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzIiwiZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzIiwiZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzJDAiLCJmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHMiLCJmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHMiLCJmdWxsX3JhbmdlX25hdGl2ZWludCIsInJhaXNlX2Nyb3NzZWRfYm91bmRzIiwibG93ZXJfYm91bmQiLCJ1cHBlcl9ib3VuZCIsInN0cmluZ19vZl9ib3VuZCIsImludF9pbmNsIiwibG8iLCJoaSIsImRpZmYiLCJpbnQzMl9pbmNsIiwibmF0aXZlaW50X2luY2wiLCJpbnQ2NF9pbmNsIiwiZmxvYXQkMCIsInNjYWxlIiwicjEiLCJyMiIsInJlc3VsdCIsImZsb2F0X3JhbmdlIiwiZGVmYXVsdCQxIiwiYml0cyQxIiwiaW50JDIiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsImludF9pbmNsJDAiLCJpbnQzMl9pbmNsJDAiLCJuYXRpdmVpbnRfaW5jbCQwIiwiaW50NjRfaW5jbCQwIiwiZmxvYXRfcmFuZ2UkMCIsImJvb2wkMCIsImNoYXIkMSIsImFzY2lpJDAiLCJmdWxsX2luaXQiLCJzZWxmX2luaXQiLCJzZXRfc3RhdGUiLCJwZXJtdXRlIiwicmFuZG9tX3N0YXRlIiwibnVtX3N3YXBzIiwidGhpc19pIiwicmFuZG9tX2kiLCJzZXhwXzAwNiIsImVycm9yX3NvdXJjZV8wMzIiLCJmb2xkX2xlZnQiLCJhXzAxMCIsImJfMDExIiwiYV8wMTIiLCJiXzAxMyIsIm9mX2FfMDE0IiwicmFuZ2UiLCJzdHJpZGUiLCJzdGFydF9pIiwic3RvcF9pIiwic3RhcnQiLCJuZXh0X2kiLCJvcmRlciIsInJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbSIsImluaXRpYWxfc3RyaWRlX29yZGVyIiwic3RhcnRfaSQwIiwiYWNjdW0iLCJpX3RvX3N0b3Bfb3JkZXIiLCJuZXh0X2kkMCIsImFjY3VtJDAiLCJyYW5nZSQwIiwiaGQiLCJ0bCIsIm50aCIsIm50aF9leG4iLCJ1bm9yZGVyZWRfYXBwZW5kIiwib2ZfbGlzdHMiLCJzaGFyZWRfbGVuZ3RoIiwic2hhcmVkX2xlbmd0aCQwIiwiY2hlY2tfbGVuZ3RoMl9leG4iLCJ0YWlsX29mX2IiLCJ0YWlsX29mX2EiLCJjaGVja19sZW5ndGgyIiwib2ZfbGlzdHMkMCIsImwzIiwiYyQwIiwiY2hlY2tfbGVuZ3RoM19leG4iLCJ0YWlsX29mX2MiLCJuMSIsIm4yIiwibjMiLCJjaGVja19sZW5ndGgzIiwiaXRlcjIiLCJpdGVyMl9leG4iLCJyZXZfbWFwMiIsInJldl9tYXAyX2V4biIsImZvbGQyIiwiZm9sZDJfZXhuIiwiZm9sZF9yaWdodDIiLCJmb2xkX3JpZ2h0Ml9leG4iLCJmb3JfYWxsMiIsImZvcl9hbGwyX2V4biIsImV4aXN0czIiLCJleGlzdHMyX2V4biIsImJzIiwicmV2X2ZpbHRlciIsIm5vdF9mb3VuZCIsImZpbmRfbWFwX2V4biIsIm5vdF9mb3VuZCQwIiwiZmluZF9leG4iLCJub3RfZm91bmQkMSIsImZpbmRpX2V4biIsIm5vdF9mb3VuZCQyIiwiZmluZF9tYXBpX2V4biIsIm1heF9ub25fdGFpbGNhbGwiLCJjb3VudF9hcHBlbmQiLCJ4MSIsIngyIiwieDMiLCJ4NCIsIng1IiwiY291bnRfbWFwIiwiY3RyIiwieDEkMCIsImYxJDMiLCJ4MiQwIiwiZjEkMiIsImYyJDIiLCJ4MyQwIiwiZjEkMSIsImYyJDEiLCJmMyQxIiwieDQkMCIsImYxJDAiLCJmMiQwIiwiZjMkMCIsImY0JDAiLCJ4NSQwIiwiZjEiLCJmMiIsImYzIiwiZjQiLCJmNSIsImJzJDAiLCJ4cyQwIiwieDgiLCJ4NyIsIng2IiwieDAiLCJ5MCQwIiwieTEkMCIsInkyJDAiLCJ5MyQwIiwieTQkMCIsInk1JDAiLCJ5NiQwIiwieTckMCIsInk4JDAiLCJ5OCIsInk3IiwieTYiLCJ5NSIsInk0IiwieTMiLCJ5MiIsInkxIiwieTAiLCJmb2xkaW5nX21hcCIsIm5ld19hY2MiLCJmb2xkX21hcCIsIm1hcDJfb2siLCJtYXAyX2V4biIsInJldl9tYXAzX29rIiwibDMkMCIsImFjIiwibDMkMSIsImFjJDAiLCJyZXZfbWFwMyIsInJldl9tYXAzX2V4biIsIm1hcDNfb2siLCJtYXAzX2V4biIsInJldl9tYXBfYXBwZW5kIiwiaCIsImxpc3QkMiIsInVuemlwMyIsInoiLCJ6aXBfZXhuIiwiemlwIiwicmV2X21hcGkiLCJmb2xkaW5nX21hcGkiLCJmb2xkX21hcGkiLCJyZWR1Y2UiLCJyZWR1Y2VfZXhuIiwicmVkdWNlX2JhbGFuY2VkIiwic3RlcF9hY2N1bSIsIm51bSIsIm51bSQwIiwiYWNjJDEiLCJudW0kMSIsInJlZHVjZV9iYWxhbmNlZF9leG4iLCJncm91cGkiLCJicmVhayQwIiwiZ3JvdXBzIiwiY3VycmVudF9ncm91cCIsImdyb3VwIiwic29ydF9hbmRfZ3JvdXAiLCJjb250IiwibWVyZ2UiLCJoMiIsImgxIiwibWFwMiQwIiwibWFwMyQwIiwibGFzdF9leG4iLCJsYXN0IiwiaXNfcHJlZml4IiwicHJlZml4IiwicHJlZml4JDAiLCJwcmVmaXgkMSIsImhkJDAiLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsImExJDAiLCJyZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyIsIndoaWNoX3RvX2tlZXAiLCJ0bCQwIiwidG9fa2VlcCQyIiwidG9fa2VlcCIsInRvX2tlZXAkMCIsInRvX2tlZXAkMSIsImRlZHVwX2FuZF9zb3J0Iiwic29ydGVkIiwiZmluZF9hX2R1cCIsImhkMiIsImhkMSIsImNvbnRhaW5zX2R1cCIsImxzdCIsImZpbmRfYWxsX2R1cHMiLCJzb3J0ZWQkMiIsInByZXYkMSIsInNvcnRlZCQwIiwicHJldiIsImFscmVhZHlfcmVjb3JkZWQiLCJzb3J0ZWQkMSIsInByZXYkMCIsImFsbF9lcXVhbCIsImlkeCIsInJldl9maWx0ZXJfbWFwIiwicmV2X2ZpbHRlcl9tYXBpIiwiaSQxIiwiZmlsdGVyX29wdCIsInBhcnRpdGlvbjNfbWFwIiwidHJkIiwidHJkJDAiLCJ5JDEiLCJmJDAiLCJwYXJ0aXRpb25fcmVzdWx0IiwidF9vZl9zZXhwJDAiLCJvZl9hXzAyNCIsIm9mX2JfMDI1IiwieF8wMzMiLCJzZXhwXzAzMSIsImFyZzFfMDI4IiwicmVzMF8wMjkiLCJyZXMxXzAzMCIsInNleHBfb2ZfdCQxIiwib2ZfYV8wMzQiLCJvZl9iXzAzNSIsInhfMDQwIiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJ0X3NleHBfZ3JhbW1hciQwIiwicGFpcl9vZl9ncm91cCIsImsiLCJncm91cCQwIiwiYWxpc3QiLCJzb3J0X2FuZF9ncm91cCQwIiwia2V5Iiwia2V5JDAiLCJub3RfZm91bmQkMyIsImZpbmRfZXhuJDAiLCJ2YWx1ZSIsInJlbW92ZSIsImFkZCIsImludmVyc2UiLCJtYXAkMiIsImVsIiwic3BsaXRfbiIsInRfb3JpZyIsInRha2UiLCJkcm9wIiwiY2h1bmtzX29mIiwibCQxIiwic3VibGlzdCIsInNwbGl0X3doaWxlIiwidGFrZV93aGlsZSIsImRyb3Bfd2hpbGUiLCJkcm9wX2xhc3QiLCJkcm9wX2xhc3RfZXhuIiwiY2FydGVzaWFuX3Byb2R1Y3QiLCJsaXN0MSIsImxpc3QyIiwiY29uY2F0X25vX29yZGVyIiwiY29ucyIsImlzX3NvcnRlZCIsImlzX3NvcnRlZF9zdHJpY3RseSIsImFyciIsInJhbmRvbV9lbGVtZW50X2V4biIsInJhbmRvbV9lbGVtZW50IiwiY21wIiwiZXF1YWxfbG9jYWwiLCJ0MSQwIiwidDIkMCIsInQyJDEiLCJ0MSQxIiwidHJhbnNwb3NlIiwicm93cyQwIiwicm93cyIsImNvbHVtbnMiLCJkb19yZXYiLCJjb2x1bW5fYWNjIiwidHJpbW1lZF9yb3dzIiwiZm91bmRfZW1wdHkiLCJ0cmltbWVkIiwiY29sdW1uX2FjYyQwIiwiY29sdW1uIiwiZG9fcmV2JDAiLCJjb2x1bW5zJDAiLCJhcmcwXzA0MSIsInJlczBfMDQyIiwidHJhbnNwb3NlX2V4biIsImludGVyc3BlcnNlIiwiaXNfc3VmZml4Iiwic3VmZml4IiwibGlzdF9sZW4iLCJzdWZmaXhfbGVuIiwicmVzMF8wMDIiLCJhcmcwXzAwMyIsInJlczBfMDA0IiwicmVzMF8wMDYiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYXJnMl8wMTEiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsInJlczJfMDE0IiwiYXJnMV8wMTYiLCJyZXMxXzAxOCIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInJlczFfMDIzIiwicmVzMl8wMjQiLCJhcmcxXzAyNiIsImFyZzBfMDI1IiwicmVzMF8wMjciLCJyZXMxXzAyOCIsImFyZzFfMDMwIiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInRvX3N0cmluZ3NfaHVtIiwic3RyaW5nIiwic2V4cCQwIiwic2V4cCQxIiwidGFnIiwidGFnJDAiLCJzZXhwJDIiLCJ0YWckMSIsImJvZHkiLCJ0cnVuY19hZnRlciIsInRzJDAiLCJ0cyQxIiwiYWMkMSIsInRvX3NleHBzX2h1bSIsInN0cmluZyQwIiwiaGVyZSIsImhlcmUkMCIsInRvX3NleHBfaHVtIiwic2V4cHMiLCJ0b19tZXNzYWdlIiwiaW5mbyIsIm9mX21lc3NhZ2UiLCJ0b19zdHJpbmdfaHVtIiwibWVzc2FnZSIsInRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCIsIm9mX2xhenkiLCJvZl9sYXp5X3NleHAiLCJvZl9sYXp5X3QiLCJsYXp5X3QiLCJjcmVhdGVmIiwib2ZfdGh1bmsiLCJzdHJpY3QiLCJzZXhwX29mX3giLCJ0YWdfc19sYXp5IiwidGFnX3MiLCJ0YWdfYXJnIiwidG9fZXhuIiwib2ZfZXhuIiwiYmFja3RyYWNlJDAiLCJiYWNrdHJhY2UkMSIsImJhY2t0cmFjZSQyIiwicmFpc2UiLCJyYWlzZV9zIiwidG9faW5mbyIsIm9mX2luZm8iLCJjaGVja19maWVsZCIsImFfMDA3IiwiYl8wMDgiLCJvZl9hXzAxMyIsInhfMDE1Iiwib2ZfYV8wMTYiLCJ4XzAxNyIsImludmFyaWFudF9hIiwiZTEiLCJlMiIsInRyeV93aXRoX2pvaW4iLCJvZl9leG5fcmVzdWx0IiwiZXJyb3JfcyIsImVycm9yX3N0cmluZyIsImVycm9yZiIsInVuaW1wbGVtZW50ZWQiLCJjb21iaW5lX2ludGVybmFsIiwib25fb2siLCJvbl9lcnJvciIsImlnbm9yZV91bml0X2xpc3QiLCJlcnJvcl9vZl9saXN0X2lmX25lY2Vzc2FyeSIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX29rIiwiZmluZF9tYXBfb2siLCJlcnJvcl9zb3VyY2VfMDAzIiwic2V4cF8wMDQiLCJnZXEiLCJsZXEiLCJiZXR3ZWVuIiwibG93IiwiaGlnaCIsImNsYW1wX3VuY2hlY2tlZCIsImNsYW1wX2V4biIsImNsYW1wIiwibGV4aWNvZ3JhcGhpYyIsImNtcHMiLCJjbXBzJDAiLCJsaWZ0IiwicmV2ZXJzZSIsImNvbXBhcmVfcmV2ZXJzZWQiLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwic2lnbiIsImhhc2hfcGFyYW0iLCJwb2x5Iiwib2Zfa2V5IiwiS2V5IiwidG9fa2V5IiwiaGFzaF9wYXJhbSQwIiwicG9seSQwIiwib2Zfa2V5JDAiLCJ0b19rZXkkMCIsImhhc2hhYmxlIiwiZ2V0X3Bvc19sZW4iLCJmaW5kX2ZpcnN0X3NhdGlzZnlpbmciLCJwb3MkMCIsImhpJDAiLCJsbyQxIiwibWlkIiwibG8kMiIsImxvJDAiLCJmaW5kX2xhc3Rfc2F0aXNmeWluZyIsImJpbmFyeV9zZWFyY2giLCJob3ciLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsInNlZ21lbnRfb2YiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJhbGwkMCIsImJsaXRfc3RyaW5nIiwic3JjX3BvcyIsImRzdF9wb3MiLCJibGl0byIsInNyY19sZW4iLCJzdWJvIiwiY3JlYXRlX2xpa2UiLCJ1bnNhZmVfYmxpdCQwIiwiaXNfZmlyc3QiLCJpc19zZWNvbmQiLCJ2YWx1ZV9tYXAiLCJmaXJzdCIsInNlY29uZCIsImVxMSIsImVxMiIsIm90aGVyIiwiZm9jdXMiLCJjb21iaW5lX2FsbCIsIm1hdGNoJDAiLCJtYXRjaCIsImNvbWJpbmVfYWxsX3VuaXQiLCJ0b19vcHRpb24iLCJmb2N1cyQwIiwiY29tYmluZSQwIiwiYmluZCQwIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJvIiwiY2FsbCIsInZhbHVlX2V4biIsImVycm9yJDAiLCJtJDAiLCJtJDEiLCJ2YWx1ZV9vcl90aHVuayIsInNvbWUiLCJmaXJzdF9zb21lIiwic29tZV9pZiIsImNvbmQiLCJlcnJvcl9zb3VyY2VfMDI3Iiwib2Zfc18wMDIiLCJzdGF0ZV8wMDQiLCJzdGF0ZV8wMDkiLCJ2YWx1ZV8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsIm5leHRfc3RlcCIsImRlbGF5ZWRfZm9sZF9zdGVwIiwibmV4dCIsInVuZm9sZF9zdGVwIiwidW5mb2xkIiwidW5mb2xkX3dpdGgiLCJzZWVkJDAiLCJzZWVkJDEiLCJ1bmZvbGRfd2l0aF9hbmRfZmluaXNoIiwicnVubmluZ19zdGVwIiwiaW5uZXJfZmluaXNoZWQiLCJmaW5pc2hpbmdfc3RlcCIsInN0YXRlJDAiLCJzdGF0ZSQxIiwic3RhdGUkMiIsImlubmVyX3N0YXRlIiwic3RhdGUkMyIsImlubmVyX3N0YXRlJDAiLCJpbm5lcl9zdGF0ZSQxIiwic3RhdGUkNCIsInN0YXRlJDUiLCJzZWVkJDIiLCJ2JDAiLCJ0b19saXN0X3JldiIsInN0YXJ0X3YiLCJzdG9wX3YiLCJzdGVwIiwidF9sYXp5IiwibCQyIiwic29tZV9iIiwiZW1wdHkiLCJuZXh0JDAiLCJzJDMiLCJhXzAxMyIsImJfMDE0IiwiYV8wMTUiLCJiXzAxNiIsImFfMDE3IiwiYl8wMTgiLCJhXzAyMSIsImFfMDE5IiwiYl8wMjIiLCJiXzAyMCIsImEwJDEiLCJoc3YkMyIsIm9mX2FfMDIzIiwib2ZfYl8wMjQiLCJzZXhwXzAyOSIsInRhZ18wMzAiLCJzZXhwX2FyZ3NfMDM2IiwiYXJnMF8wMzciLCJzZXhwX2FyZ3NfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsInNleHBfYXJnc18wNDEiLCJhcmcxXzA0MyIsImFyZzBfMDQyIiwicmVzMF8wNDQiLCJyZXMxXzA0NSIsIm9mX2FfMDQ4Iiwib2ZfYl8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzFfMDU1IiwiYXJnMF8wNTQiLCJyZXMwXzA1NiIsInJlczFfMDU3IiwibWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIiwibmV4dDIiLCJzMiIsIm5leHQxIiwiczEiLCJzMiQwIiwiczIkMSIsInMxJDAiLCJzMiQyIiwiczEkMSIsInMyJDMiLCJjb21wYXJpc29uIiwibWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIiwibWVyZ2Vfc29ydGVkIiwidGxfZWFnZXJseV9leG4iLCJsaWZ0X2lkZW50aXR5IiwiY2h1bmtzX2V4biIsInppcF9mdWxsIiwiYm91bmRlZF9sZW5ndGgiLCJhdF9tb3N0IiwibGVuZ3RoX2lzX2JvdW5kZWRfYnkiLCJjdXIiLCJjdXIkMCIsImxhc3RfZWx0IiwibGFzdF9lbHQkMCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnRfcmlnaHRfd2l0aF9saXN0IiwicyQ1IiwiYSQxIiwicyQ0IiwicmVwZWF0IiwiY3ljbGVfbGlzdF9leG4iLCJzYSIsInNiIiwic2luZ2xldG9uIiwiZGVsYXllZF9mb2xkIiwib3B0aW9uIiwiZm9sZF9tIiwiaXRlcl9tIiwiZm9yY2VfZWFnZXJseSIsIm1lbW9pemUiLCJkcm9wX2VhZ2VybHkiLCJkcm9wX3doaWxlX29wdGlvbiIsInYyIiwidjEiLCJyb3VuZF9yb2JpbiIsImRvbmVfc3RhY2siLCJ0b2RvX3N0YWNrIiwidG9kb19zdGFjayQwIiwiaW50ZXJsZWF2ZSIsImludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0Iiwib2Zfc2VxIiwic2VxIiwidG9fc2VxIiwieWllbGQkMCIsIm9mX3NlcXVlbmNlIiwic2VxdWVuY2UiLCJ0aHVuayIsImFfb2Zfc2V4cCIsImJfb2Zfc2V4cCIsInNleHBfb2ZfYiIsImNfb2Zfc2V4cCIsInNleHBfb2ZfYyIsInNldCIsInRtcCIsImxlZnQiLCJyaWdodCIsImZpbmFsX3BvcyIsImlfbmV4dCIsImhlYXBpZnkiLCJyb290Iiwicm9vdCQwIiwicmVsYXRpdmVfcm9vdCIsImxlZnRfY2hpbGQiLCJyaWdodF9jaGlsZCIsImxhcmdlc3QiLCJsYXJnZXN0JDAiLCJzb3J0JDAiLCJmaXZlX2VsZW1lbnRfc29ydCIsIm0xIiwibTIiLCJtMyIsIm00IiwibTUiLCJjb21wYXJlX2FuZF9zd2FwIiwiaW50cm9fc29ydCIsIm1heF9kZXB0aCIsIm1heF9kZXB0aCQwIiwibGVmdCQwIiwibWF4X2RlcHRoJDEiLCJzaXh0aCIsIm0yX3ZhbCIsIm0zX3ZhbCIsIm00X3ZhbCIsIm1pZGRsZV9zb3J0ZWQiLCJwaXZvdDIiLCJwaXZvdDEiLCJwJDEiLCJyJDIiLCJwdiIsInIkMCIsInIkMSIsInAkMCIsImxlZnQkMSIsInNvcnQkMSIsInNvcnQkMiIsImVsdF9pX21pbnVzXzEiLCJtZXJnZWQiLCJhMV9pbmRleCIsImEyX2luZGV4IiwidXNlX2ExIiwiY29weV9tYXRyaXgiLCJyZXZfaW5wbGFjZSIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kaV9pbnRlcm5hbCIsImlmX2ZvdW5kIiwiaWZfbm90X2ZvdW5kIiwiZm91bmQiLCJ2YWx1ZV9mb3VuZCIsInJlczEiLCJyZXMyIiwic29ydGVkX2NvcHkiLCJwYXJ0aXRpb25fbWFwaSIsImZpcnN0cyIsInNlY29uZHMiLCJwYXJ0aXRpb25pX3RmIiwidG9fc2VxdWVuY2VfbXV0YWJsZSIsInRvX3NlcXVlbmNlIiwiaTEiLCJpMiIsInR0Iiwid2lkdGgiLCJkZXB0aCIsImQiLCJ3IiwidHQkMCIsImdldCQwIiwiemVyb19vYmoiLCJjcmVhdGVfemVybyIsInVuc2FmZV9nZXQiLCJ1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkiLCJvYmoiLCJzZXRfd2l0aF9jYW1sX21vZGlmeSIsInVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbiIsIm9sZF9vYmoiLCJ1bnNhZmVfc2V0IiwidW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlIiwidW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfIiwidW5zYWZlX3NldF9pbnQiLCJ1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciIsImkkMiIsInVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCIsImNyZWF0ZV9vYmpfYXJyYXkiLCJncmFtbWFyIiwiY2VpbCIsImZsb29yIiwibW9kX2Zsb2F0IiwibW9kZiIsIm1heF9maW5pdGVfdmFsdWUiLCJjbGFzc2lmeV9mbG9hdCIsImFic19mbG9hdCIsImlzX2ludGVnZXIiLCJmcmV4cCIsImxkZXhwIiwiaXNfbmFuIiwidG9faW50NjRfcHJlc2VydmVfb3JkZXIiLCJ0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlcl9leG4iLCJvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlciIsIm9uZV91bHAiLCJkaXIiLCJ1cHBlcl9ib3VuZF9mb3JfaW50IiwiZXhwIiwiaXNfeF9taW51c19vbmVfZXhhY3QiLCJsb3dlcl9ib3VuZF9mb3JfaW50IiwibWluX2ludF9hc19mbG9hdCIsImJveCIsImlzX2xvd2VyY2FzZSIsImlzX3VwcGVyY2FzZSIsImlzX3ByaW50IiwiaXNfd2hpdGVzcGFjZSIsImlzX2RpZ2l0IiwiaXNfYWxwaGEiLCJpc19hbHBoYW51bSIsImdldF9kaWdpdF91bnNhZmUiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0X2xvd2VyIiwiaXNfaGV4X2RpZ2l0X3VwcGVyIiwiZ2V0X2hleF9kaWdpdF9leG4iLCJnZXRfaGV4X2RpZ2l0IiwidF9vZl9zZXhwJDEiLCJjMSIsImMyIiwiaGFzaF9mb2xkX3QkMSIsImhhc2gkMSIsInRyX2NyZWF0ZV9tYXAiLCJ0YXJnZXQiLCJyZXBsYWNlbWVudCIsInRyX21hcCIsImkkMyIsImluZGV4JDAiLCJsYXN0X3JlcGxhY2VtZW50IiwiaW5kZXgiLCJmaXJzdF90YXJnZXQiLCJzdGFnZSIsInVuc3RhZ2UiLCJ1bnNhZmVfc3ViIiwiY29udGFpbnMiLCJwb3MkMSIsImVuZCIsImluZGV4X2Zyb21fZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXhfZnJvbV9leG5faW50ZXJuYWwiLCJyaW5kZXhfZXhuX2ludGVybmFsIiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tX2V4biIsInJpbmRleCIsImluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbSIsImNhc2Vfc2Vuc2l0aXZlIiwicGF0dGVybiIsImttcF9pbnRlcm5hbF9sb29wIiwibWF0Y2hlZF9jaGFycyIsIm5leHRfdGV4dF9jaGFyIiwia21wX2FycmF5IiwiY2hhcl9lcXVhbCIsIm1hdGNoZWRfY2hhcnMkMCIsImdldF9jaGFyX2VxdWFsIiwiaW5kZXhfaW50ZXJuYWwiLCJ0ZXh0IiwibWF0Y2hlcyIsImluJDAiLCJpbmRleF9leG4kMCIsImluZGV4X2FsbCIsIm1heV9vdmVybGFwIiwicmVwbGFjZV9maXJzdCIsIndpdGgkMCIsImxlbl9zIiwibGVuX3QiLCJsZW5fd2l0aCIsInJlcGxhY2VfYWxsIiwibnVtX21hdGNoZXMiLCJuZXh0X2RzdF9wb3MiLCJuZXh0X3NyY19wb3MiLCJzcGxpdF9vbiIsInBhdHRlcm5fbGVuIiwia21wX2FycmF5XzAxMiIsImNhc2Vfc2Vuc2l0aXZlXzAxMCIsInBhdHRlcm5fMDA4IiwiYXJnXzAxMyIsImJuZHNfMDA3IiwiYm5kc18wMDckMCIsImJuZHNfMDA3JDEiLCJyZXByZXNlbnRhdGlvbiIsInN1YnN0cl9pbmRleF9nZW4iLCJzdWJzdHJfaW5kZXhfZXhuX2dlbiIsInN1YnN0cl9pbmRleF9hbGxfZ2VuIiwic3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIiwic3Vic3RyX3JlcGxhY2VfYWxsX2dlbiIsImlzX3N1YnN0cmluZ19nZW4iLCJzdWJzdHJpbmciLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0X2dlbiIsInN0cl9wb3MkMSIsInN0cl9sZW4iLCJzdWJfbGVuIiwic3RyX3BvcyIsInN1Yl9wb3MiLCJzdWJfcG9zJDAiLCJzdHJfcG9zJDAiLCJpc19zdWZmaXhfZ2VuIiwic3RyaW5nX2xlbiIsImlzX3ByZWZpeF9nZW4iLCJwcmVmaXhfbGVuIiwic2V4cF9vZl90JDIiLCJzdHJpbmcxIiwic3RyaW5nMiIsImxlbjIiLCJsZW4xIiwic3Vic3RyX2luZGV4JDAiLCJzdWJzdHJfaW5kZXhfZXhuJDAiLCJzdWJzdHJfaW5kZXhfYWxsJDAiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCQwIiwic3Vic3RyX3JlcGxhY2VfYWxsJDAiLCJpc19zdWJzdHJpbmckMCIsImlzX3N1YnN0cmluZ19hdCIsImxzcGxpdDJfZXhuIiwibGluZSIsImRlbGltIiwibm90X2ZvdW5kJDQiLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJvbiIsInJzcGxpdDIiLCJjaGFyX2xpc3RfbWVtIiwic3BsaXRfZ2VuIiwiaXNfZGVsaW0iLCJsYXN0X3BvcyIsImxhc3RfcG9zJDEiLCJsYXN0X3BvcyQwIiwicG9zMSIsInN1Yl9zdHIiLCJzcGxpdCIsInNwbGl0X29uX2NoYXJzIiwiY2hhcnMiLCJiYWNrX3VwX2F0X25ld2xpbmUiLCJlb2wiLCJzcGxpdF9saW5lcyIsImlzX3N1ZmZpeCQwIiwiaXNfcHJlZml4JDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsIndyYXBfc3ViX24iLCJkcm9wX3ByZWZpeCIsImRyb3Bfc3VmZml4IiwibGZpbmRpIiwicmZpbmRpIiwibGFzdF9ub25fZHJvcCIsInJzdHJpcCIsImZpcnN0X25vbl9kcm9wIiwibHN0cmlwIiwic3RyaXAiLCJ0ciIsInRyX211bHRpIiwiY29uY2F0X2FycmF5IiwiYXIiLCJjb25jYXRfbGluZXMiLCJsaW5lcyQzIiwiY3JsZiIsIm5ld2xpbmVfbGVuIiwibGluZXMiLCJsaW5lcyQwIiwiYnVmIiwibGluZXMkMSIsIndyaXR0ZW4iLCJsaW5lcyQyIiwibGluZSQwIiwib3V0Iiwib3V0X3BvcyIsIm91dCQwIiwiY2hvcF9wcmVmaXgiLCJjaG9wX3ByZWZpeF9pZl9leGlzdHMiLCJjaG9wX3ByZWZpeF9leG4iLCJjaG9wX3N1ZmZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3Bfc3VmZml4X2V4biIsInNob3J0ZXIiLCJzaG9ydGVzdCIsInBvc19mcm9tX2xlZnQiLCJwb3NfZnJvbV9yaWdodCIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCIsImdldF9wb3MiLCJtYXhfbGVuIiwibGVuX3NvX2ZhciIsImxlbl9zb19mYXIkMCIsImxlbl9zb19mYXIkMSIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGgiLCJjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCIsImZpcnN0JDAiLCJtYXhfbGVuJDAiLCJtYXhfbGVuJDEiLCJjb21tb25fZ2VuZXJpY19sZW5ndGgiLCJjb21tb25fZ2VuZXJpYzIiLCJjb21tb25fZ2VuZXJpYyIsImNvbW1vbl9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeDIiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXhfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeF9sZW5ndGgiLCJjb21tb25fcHJlZml4Ml9sZW5ndGgiLCJjb21tb25fc3VmZml4Ml9sZW5ndGgiLCJvZl9jaGFyIiwib2ZfY2hhcl9saXN0IiwicGFkX3JpZ2h0IiwicGFkX2xlZnQiLCJsb2NhbF9jb3B5X3ByZWZpeCIsImJ1ZmZlcl9sZW4iLCJsb2NhbF9jb3B5X3RvX3N0cmluZyIsInNyY19wb3MkMCIsImRzdF9wb3MkMCIsInBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZSIsImZzdF9wb3MkMCIsInNuZF9wb3MkMCIsImZzdHMiLCJzbmRzIiwiYyQxIiwic25kX3BvcyQxIiwiZnN0X3BvcyQxIiwiYyQyIiwic25kX3BvcyQyIiwic3JjX3BvcyQxIiwiZnN0X3BvcyIsInNuZF9wb3MiLCJjMSQxIiwiZWl0aGVyJDEiLCJjMiQxIiwiYzIkMiIsImMxJDAiLCJlaXRoZXIkMCIsImMyJDAiLCJwb3MkMiIsImJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aCIsImVzY2FwZXdvcnRoeV9tYXAiLCJlc2NhcGVfY2hhciIsImVzY2FwZXdvcnRoeV9tYXAkMCIsInZhbHMiLCJjX3RvIiwiY19mcm9tIiwiayQwIiwiZXNjYXBlX2dlbiIsImVzY2FwZXdvcnRoeSIsInRvX2VzY2FwZV9sZW4iLCJ0b19lc2NhcGUiLCJsYXN0X2lkeCIsImxhc3RfZHN0X3BvcyIsImxhc3RfaWR4JDAiLCJsYXN0X2RzdF9wb3MkMCIsInRvX2VzY2FwZSQwIiwiZXNjYXBlZF9jaGFyIiwibGFzdF9pZHgkMSIsImxhc3RfZHN0X3BvcyQxIiwiZXNjYXBlX2dlbl9leG4iLCJlc2NhcGUiLCJ1bmVzY2FwZV9nZW4iLCJzdGF0dXMiLCJ0b191bmVzY2FwZSIsInN0YXR1cyQwIiwidG9fdW5lc2NhcGUkMCIsInVuZXNjYXBlX2dlbl9leG4iLCJ1bmVzY2FwZSIsInByZWNlZGluZ19lc2NhcGVfY2hhcnMiLCJjbnQiLCJjbnQkMCIsInVwZGF0ZV9lc2NhcGVfc3RhdHVzIiwiZXNjYXBlX3N0YXR1cyIsIm9kZCIsImNoZWNrX2JvdW5kIiwiZnVuY3Rpb25fbmFtZSIsImlzX2NoYXJfZXNjYXBpbmciLCJpc19jaGFyX2VzY2FwZWQiLCJpc19jaGFyX2xpdGVyYWwiLCJpbmRleF9mcm9tJDAiLCJzdGF0dXMkMSIsImluZGV4X2Zyb21fZXhuJDAiLCJpbmRleCQxIiwiaW5kZXhfZXhuJDEiLCJyaW5kZXhfZnJvbSQwIiwiZXNjYXBlX2NoYXJzIiwicmluZGV4X2Zyb21fZXhuJDAiLCJyaW5kZXgkMCIsInJpbmRleF9leG4kMCIsInNwbGl0X2dlbiQwIiwic3BsaXQkMCIsInNwbGl0X29uX2NoYXJzJDAiLCJzcGxpdF9hdCIsImxzcGxpdDIkMCIsInJzcGxpdDIkMCIsImxzcGxpdDJfZXhuJDAiLCJyc3BsaXQyX2V4biQwIiwibGFzdF9ub25fZHJvcF9saXRlcmFsIiwiZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCIsInJzdHJpcF9saXRlcmFsIiwibHN0cmlwX2xpdGVyYWwiLCJzdHJpcF9saXRlcmFsIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsIm1hcGkkMCIsIm9jYW1sX2xleF90YWJsZXMiLCJwYXJzZV9oZXgiLCJsZXhidWYiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsImNvbnZlcnRfZmFpbHVyZSIsIm51bV9iaXRzX2ludCIsIm51bV9iaXRzX25hdGl2ZWludCIsIm51bV9iaXRzX2ludDMyIiwibnVtX2JpdHNfaW50NjQiLCJtaW5faW50MzIiLCJtYXhfaW50MzIiLCJtaW5faW50NjQiLCJtYXhfaW50NjQiLCJtaW5fbmF0aXZlaW50IiwibWF4X25hdGl2ZWludCIsImludDY0X3RvX3N0cmluZyIsIm5hdGl2ZWludF90b19zdHJpbmciLCJpbnQzMl90b19pbnRfdHJ1bmMiLCJpbnRfdG9faW50MzJfdHJ1bmMiLCJpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiIsImludF90b19pbnQzMiIsImludDMyX3RvX2ludCIsImludF90b19pbnQzMl9leG4iLCJpbnQzMl90b19pbnRfZXhuIiwiaW50X3RvX2ludDY0IiwiaW50NjRfdG9faW50X3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQiLCJpbnQ2NF90b19pbnQiLCJpbnQ2NF90b19pbnRfZXhuIiwiaW50X3RvX25hdGl2ZWludCIsIm5hdGl2ZWludF90b19pbnRfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50IiwibmF0aXZlaW50X3RvX2ludF9leG4iLCJpbnQzMl90b19pbnQ2NCIsImludDY0X3RvX2ludDMyX3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzIiwiaW50NjRfdG9faW50MzIiLCJpbnQ2NF90b19pbnQzMl9leG4iLCJpbnQzMl90b19uYXRpdmVpbnQiLCJuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50MzIiLCJuYXRpdmVpbnRfdG9faW50MzJfZXhuIiwiaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIiwibmF0aXZlaW50X3RvX2ludDY0IiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpIiwiaW50NjRfdG9fbmF0aXZlaW50IiwiaW50NjRfdG9fbmF0aXZlaW50X2V4biIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NiIsImludDY0X2ZpdF9vbl9pbnQ2M19leG4iLCJpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IiwiZGVsaW1pdGVyIiwiY2hhcnNfcGVyX2RlbGltaXRlciIsImlucHV0X2xlbmd0aCIsImhhc19zaWduIiwibnVtX2RpZ2l0cyIsIm51bV9kZWxpbWl0ZXJzIiwib3V0cHV0X2xlbmd0aCIsImlucHV0X3BvcyIsIm91dHB1dF9wb3MiLCJudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyIiwiZmlyc3RfZGlnaXRfcG9zIiwiaW5zZXJ0X2RlbGltaXRlciIsImluc2VydF91bmRlcnNjb3JlcyIsInNleHBfb2ZfaW50X3N0eWxlIiwiZGVsaW1pdGVyJDAiLCJtYWtlX3N1ZmZpeCIsInRvX3N0cmluZyQwIiwiaW52YWxpZCIsIm9mX3N0cmluZ193aXRoX2RlbGltaXRlciIsImxleCIsImJvZHkkMCIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2M19vbl9pbiIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2NF92YWx1ZSIsImludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsIm92ZXJmbG93X2JvdW5kX21heF9pbnRfdmFsdWUiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50MzJfdmFsdWUiLCJpbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsIiwiaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwibmVnYXRpdmVfZXhwb25lbnQiLCJvdmVyZmxvdyIsImludF9wb3ciLCJiYXNlIiwiZXhwb25lbnQiLCJpbnQ2NF9wb3ciLCJpbnQ2M19wb3dfb25faW50NjQiLCJydmFsIiwib25lIiwicm91bmRfZG93biIsIm1vZHVsdXMiLCJyb3VuZF91cCIsInJlbWFpbmRlciIsInJvdW5kX3Rvd2FyZHNfemVybyIsInRvX211bHRpcGxlX29mIiwicm91bmRfbmVhcmVzdCIsIm1vZHVsdXNfbWludXNfcmVtYWluZGVyIiwicm91bmQiLCJoMDEiLCJtYXNrIiwiaW50NjRfcG9wY291bnQiLCJ4JDIiLCJpbnQzMl9wb3Bjb3VudCIsIm5hdGl2ZWludF9wb3Bjb3VudCIsIm1vZHVsZV9uYW1lJDAiLCJvZl9zdHJpbmckMCIsImZsb2F0X2xvd2VyX2JvdW5kIiwiZmxvYXRfdXBwZXJfYm91bmQiLCJvZl9mbG9hdF91bmNoZWNrZWQiLCJ6ZXJvIiwiZnVuYyQwIiwibmVnIiwib2Zfc3RyaW5nJDEiLCJvZl9pbnQzMiIsIm9mX2ludDMyX2V4biIsInRvX2ludDMyIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjQiLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnQiLCJhYnMiLCJyZW0iLCJpbmNyIiwiZGVjciIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwiLCJzaGlmdF9sZWZ0IiwiYml0X25vdCIsImJpdF9vciIsImJpdF9hbmQiLCJiaXRfeG9yIiwicG93Iiwibm9uX3Bvc2l0aXZlX2FyZ3VtZW50IiwiY2VpbF9wb3cyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwiZmxvb3JfcG93MiIsImlzX3BvdzIiLCJmbG9vcl9sb2cyIiwiY2VpbF9sb2cyIiwicG9wY291bnQiLCJsbm90Iiwic3VjY19leG4iLCJtc2ciLCJwcmVkX2V4biIsIm9mX3NjYWxhciIsIm9mX3NjYWxhcl9leG4iLCJ0b19zY2FsYXIiLCJ0b19jaGFyIiwidG9fY2hhcl9leG4iLCJ1dGY4X2J5dGVfbGVuZ3RoIiwidWNoYXIiLCJjb2RlcG9pbnQiLCJzb21lX3QiLCJzeW0iLCJ0cmFucyIsImNvbnYiLCJkZXR1cGxlMiIsInR1cGxlMiIsIndpdG5lc3MiLCJ2XzAwNSIsInRvX3NleHAiLCJ1aWQiLCJzYW1lX3dpdG5lc3MiLCJzYW1lIiwic2FtZV93aXRuZXNzX2V4biIsIm5vbmVfc3Vic3RpdHV0ZSIsIm5vbmUiLCJ2YWx1ZV91bnNhZmUiLCJvZl9zZXhwYWJsZSIsInRvX3NleHBhYmxlIiwieF8wMDMiLCJvZl9hXzAwNCIsInhfMDA1IiwiaW5pdF9zb21lIiwiZ2V0X3NvbWVfZXhuIiwiaXNfbm9uZSQwIiwiaXNfc29tZSQwIiwic2V0X3NvbWUiLCJzZXRfbm9uZSIsInVuc2FmZV9nZXRfc29tZV9leG4iLCJ1bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSIsInVuc2FmZV9pc19zb21lIiwidW5zYWZlX3NldF9zb21lIiwidW5zYWZlX3NldF9ub25lIiwiY2xlYXIiLCJlbGVtIiwibWFwX3NvbWUiLCJvZl9hcnJheV9zb21lIiwiY2FwYWNpdHkiLCJlbHRzIiwibGVuZ3RoXzAwMyIsImVsdHNfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJyZXNpemUiLCJzaXplIiwic2V0X2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5JDAiLCJwdXNoIiwicG9wX25vbmVtcHR5IiwicG9wX2Vycm9yIiwicG9wIiwicG9wX2V4biIsInRvcF9ub25lbXB0eSIsInRvcF9lcnJvciIsInRvcCIsInRvcF9leG4iLCJ1bnRpbF9lbXB0eSIsInRfcmVzdWx0IiwiZmlsdGVyX2lucGxhY2UiLCJ3cml0ZV9pbmRleCIsInJlYWRfaW5kZXgiLCJoYXNoX292ZXJyaWRlIiwib2ZfcG9zIiwib2Zfc2lnbiIsInRvX3NpZ25fZXhuIiwidG9faW50X2V4biIsImVycm9yX3NvdXJjZV8wMDYiLCJpbnRlcnZhbF9jb21wYXJpc29uX3NleHBfZ3JhbW0iLCJhbGxfb2ZfYSIsImVudW1lcmF0ZV8wMDIiLCJlbnVtZXJhdGVfMDAxIiwiYWNjJDIiLCJvZl9hXzAwMyIsInNleHBfMDA4IiwidGFnXzAwOSIsInNleHBfYXJnc18wMTAiLCJhcmcwXzAxMSIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJhcmcwXzAyMiIsInJlczBfMDIzIiwiaW50ZXJ2YWxfY29tcGFyaXNvbl9vZl9zZXhwIiwic2V4cF8wMjgiLCJzZXhwX29mX2ludGVydmFsX2NvbXBhcmlzb24iLCJjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24iLCJoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImluY2wiLCJleGNsIiwiaXNfbG93ZXJfYm91bmQiLCJpc191cHBlcl9ib3VuZCIsImJvdW5kc19jcm9zc2VkIiwibG93ZXIiLCJ1cHBlciIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY29tcGFyZV90b19pbnRlcnZhbF9leG4iLCJpbnRlcnZhbF9jb250YWluc19leG4iLCJlcnJvcl9zb3VyY2VfMDU3IiwicmlnaHRfMDA0IiwibGVmdF8wMDMiLCJyaWdodF8wMDgiLCJsZWZ0XzAwNyIsIm9mX2FfMDA5Iiwidl8wMTAiLCJjbXBfayIsImNtcF92IiwiYV8wMTEiLCJiXzAxMiIsInRfMDE0IiwidF8wMTMiLCJ0XzAxNiIsInRfMDE1IiwicmlnaHRfMDE4IiwibGVmdF8wMTciLCJyaWdodF8wMjIiLCJsZWZ0XzAyMSIsInRfMDI0IiwidF8wMjMiLCJ0XzAyNiIsInRfMDI1IiwicmlnaHRfMDIwIiwibGVmdF8wMTkiLCJ0XzAzMCIsInRfMDI5IiwidF8wMzIiLCJ0XzAzMSIsInJpZ2h0XzAzNCIsImxlZnRfMDMzIiwicmlnaHRfMDM4IiwibGVmdF8wMzciLCJ0XzA0MCIsInRfMDM5IiwidF8wNDIiLCJ0XzA0MSIsInJpZ2h0XzAzNiIsImxlZnRfMDM1Iiwib2Zfa18wNDMiLCJvZl92XzA0NCIsInNleHBfMDcxIiwiYXJnMV8wNjgiLCJhcmcwXzA2NyIsInJlczBfMDY5IiwiYXRvbV8wNDciLCJzZXhwX2FyZ3NfMDUwIiwiYXRvbV8wNDckMCIsImFyZzBfMDU4IiwiYXJnMV8wNTMiLCJyZXMwXzA1NCIsInJlczFfMDU1IiwicmVzMF8wNTkiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwiYXJnMF8wNjQiLCJyZXMwXzA2NSIsInJlczFfMDcwIiwib2Zfa18wNzIiLCJvZl92XzA3MyIsImFyZzFfMDgyIiwiYXJnMF8wODEiLCJyZXMwXzA4MyIsInZfMDc0IiwicmVzMV8wODQiLCJ2XzA3NiIsImFyZzFfMDc4IiwiYXJnMF8wNzciLCJyZXMwXzA3OSIsInJlczFfMDgwIiwidl8wNzUiLCJrX3NleHBfZ3JhbW1hciIsInZfc2V4cF9ncmFtbWFyIiwiY21wX2xlZnQiLCJjbXBfcmlnaHQiLCJhXzA4NSIsImJfMDg2IiwicmlnaHRfMDkyIiwibGVmdF8wOTEiLCJ0XzA5NCIsInRfMDkzIiwidF8wOTYiLCJ0XzA5NSIsInJpZ2h0XzA4OCIsImxlZnRfMDg3IiwicmlnaHRfMDkwIiwibGVmdF8wODkiLCJhXzA5NyIsImJfMDk4IiwicmlnaHRfMTA0IiwibGVmdF8xMDMiLCJ0XzEwNiIsInRfMTA1IiwidF8xMDgiLCJ0XzEwNyIsInJpZ2h0XzEwMCIsImxlZnRfMDk5IiwicmlnaHRfMTAyIiwibGVmdF8xMDEiLCJvZl9sZWZ0XzEwOSIsIm9mX3JpZ2h0XzExMCIsInZfMTEzIiwiYXJnMV8xMTUiLCJhcmcwXzExNCIsInJlczBfMTE2IiwicmVzMV8xMTciLCJ2XzExMSIsInZfMTEyIiwic2V4cF9vZl90JDMiLCJoZWlnaHQiLCJpbl9yYW5nZSIsImhsIiwiaHIiLCJsb3dlciQxIiwiaW52YXJpYW50cyIsImgkMSIsImgkMCIsInNsIiwic3IiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2siLCJrbCIsImskMSIsImtsJDAiLCJrJDIiLCJrciIsImxlZnRfbGVuZ3RoIiwicmlnaHRfbGVuZ3RoIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCIsImFycmF5X2xlbmd0aCIsIm9mX3NvcnRlZF9hcnJheSIsImluY3JlYXNpbmciLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYkMCIsImxybCIsImxydiIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiQwIiwicmxsIiwicmx2IiwiYXV4IiwiYWRkX21pbiIsImFkZF9tYXgiLCJsaCIsImx2JDAiLCJyaCIsInJ2JDAiLCJtaW5fZWx0X2V4biIsImZvbGRfdW50aWxfaGVscGVyIiwidmFsdWUkMCIsIm1heF9lbHRfZXhuIiwicmVtb3ZlX21pbl9lbHQiLCJtYXliZV9lbHQiLCJtYXliZV9lbHQkMCIsInNwbGl0X2xlX2d0Iiwic3BsaXRfbHRfZ2UiLCJlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW8iLCJyZW1vdmVfaW5kZXgiLCJsX3NpemUiLCJ1bmlvbiIsInYxJDAiLCJ2MiQwIiwicjIkMCIsInIxJDAiLCJ1bmlvbl9saXN0IiwidG9fdHJlZSIsImludGVyIiwib3RoZXJfc2V0IiwiZSQxIiwiY29uc19yaWdodCIsIm9mX3NldCIsImVudW0kMCIsInRyZWUiLCJzeW1tZXRyaWNfZGlmZiIsImVsdCQwIiwiZW51bTEiLCJ0cmVlMSIsImVudW0yIiwidHJlZTIiLCJjb21wYXJlX3Jlc3VsdCIsIm5leHRfc3RhdGUiLCJncmVhdGVyX29yX2VxdWFsX3RvIiwibGVzc19vcl9lcXVhbF90byIsImluY2x1c2l2ZV9ib3VuZCIsInNpZGUiLCJtYXliZSIsInYkMSIsInYkMiIsInYkMyIsInYkNCIsImUkMiIsIm1lcmdlX3RvX3NlcXVlbmNlIiwiZTIkMiIsImUxJDIiLCJlMiQwIiwiZTEkMCIsImUyJDEiLCJlMSQxIiwidDIkMiIsInQxJDIiLCJpc19zdWJzZXQiLCJhcmVfZGlzam9pbnQiLCJhY2N1JDEiLCJmaWx0Iiwia2VlcF92IiwibF9mIiwibF90Iiwia2VlcF92X3QiLCJyX2YiLCJyX3QiLCJtayIsImVsZW1lbnRzX2F1eCIsImVsZW1lbnRzIiwiY2hvb3NlIiwiY2hvb3NlX2V4biIsInBvc19yZWYiLCJncm91cF9ieSIsImVxdWl2Iiwic2V0JDAiLCJlcXVpdl9jbGFzc2VzIiwibm90X2VxdWl2X3giLCJlcXVpdl94IiwiZXF1aXZfY2xhc3NlcyQwIiwic3RhYmxlX2RlZHVwX2xpc3QiLCJsZWZ0b3ZlcnMiLCJhbHJlYWR5X3NlZW4iLCJhbHJlYWR5X3NlZW4kMCIsImxlZnRvdmVycyQwIiwidF9vZl9zZXhwX2RpcmVjdCIsImVsdF9sc3QiLCJlbF9zZXhwIiwiaXNfc3Vic2V0JDAiLCJzdWJzZXQiLCJzdXBlcnNldCIsInNleHBfb2ZfZWx0IiwiaW52YWxpZF9lbGVtZW50cyIsImludmFsaWRfZWxlbWVudHNfc2V4cCIsImxpa2UiLCJsaWtlX21heWJlX25vX29wIiwib2xkX3QiLCJvbGRfdHJlZSIsImNvbXBhcmF0b3JfcyIsImludmFyaWFudHMkMCIsImVsZW1lbnRzJDAiLCJtaW5fZWx0X2V4biQwIiwibWF4X2VsdF9leG4kMCIsImNob29zZSQwIiwiY2hvb3NlX2V4biQwIiwiZm9sZF9yaWdodCQwIiwiaXRlcjIkMCIsImZpbHRlciQwIiwiYWRkJDAiLCJyZW1vdmUkMCIsInVuaW9uJDAiLCJpbnRlciQwIiwiZGlmZiQwIiwic3ltbWV0cmljX2RpZmYkMCIsImNvbXBhcmVfZGlyZWN0IiwiaXNfc3Vic2V0JDEiLCJvZiIsImFyZV9kaXNqb2ludCQwIiwidG9fbmFtZWRfdHJlZSIsIm5hbWVkIiwiaXNfc3Vic2V0JDIiLCJwYXJ0aXRpb25fdGYkMCIsInRyZWVfZiIsInRyZWVfdCIsInNwbGl0X2xlX2d0JDAiLCJzcGxpdF9sdF9nZSQwIiwiZ3JvdXBfYnkkMCIsIm50aCQwIiwicmVtb3ZlX2luZGV4JDAiLCJ0b19zZXF1ZW5jZSQwIiwiYmluYXJ5X3NlYXJjaCQwIiwiYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQkMCIsIm1lcmdlX3RvX3NlcXVlbmNlJDAiLCJoYXNoX2ZvbGRfZGlyZWN0IiwidF9vZl9zZXhwX2RpcmVjdCQwIiwiaW52YXJpYW50cyQxIiwiaXNfZW1wdHkkMSIsImVsZW1lbnRzJDEiLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2V4biQxIiwibWF4X2VsdCQxIiwibWF4X2VsdF9leG4kMSIsImNob29zZSQxIiwiY2hvb3NlX2V4biQxIiwidG9fYXJyYXkkMSIsIml0ZXIkMiIsImV4aXN0cyQxIiwiZm9yX2FsbCQxIiwiY291bnQkMSIsInN1bSQxIiwiZmluZCQxIiwiZmluZF9leG4kMSIsImZpbmRfbWFwJDEiLCJmb2xkJDEiLCJmb2xkX3VudGlsJDEiLCJmb2xkX3JpZ2h0JDEiLCJmaWx0ZXIkMSIsImZpbHRlcl9tYXAkMCIsInBhcnRpdGlvbl90ZiQxIiwiaXRlcjIkMSIsIm1lbSQxIiwiYWRkJDEiLCJyZW1vdmUkMSIsInVuaW9uJDEiLCJpbnRlciQxIiwiZGlmZiQxIiwic3ltbWV0cmljX2RpZmYkMSIsImNvbXBhcmVfZGlyZWN0JDAiLCJpc19zdWJzZXQkMyIsImFyZV9kaXNqb2ludCQxIiwib2Zfc2VxdWVuY2UkMCIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMCIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJ1bmlvbl9saXN0JDAiLCJzdGFibGVfZGVkdXBfbGlzdCQwIiwiZ3JvdXBfYnkkMSIsInNwbGl0JDEiLCJzcGxpdF9sZV9ndCQxIiwic3BsaXRfbHRfZ2UkMSIsIm50aCQxIiwicmVtb3ZlX2luZGV4JDEiLCJvZl90cmVlIiwidG9fc2VxdWVuY2UkMSIsImJpbmFyeV9zZWFyY2gkMSIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDEiLCJtZXJnZV90b19zZXF1ZW5jZSQxIiwiaXNfc3Vic2V0JDQiLCJ0b190cmVlJDAiLCJvZl90cmVlJDAiLCJ0X29mX3NleHBfZGlyZWN0JDEiLCJlbXB0eSQwIiwic2luZ2xldG9uJDAiLCJ1bmlvbl9saXN0JDEiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDEiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMSIsIm9mX3NvcnRlZF9hcnJheSQxIiwib2ZfbGlzdCQxIiwib2Zfc2VxdWVuY2UkMSIsIm9mX2FycmF5JDEiLCJzdGFibGVfZGVkdXBfbGlzdCQxIiwiZmlsdGVyX21hcCQxIiwiZW1wdHkkMSIsInNpbmdsZXRvbiQxIiwidW5pb25fbGlzdCQyIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9zb3J0ZWRfYXJyYXkkMiIsIm9mX2xpc3QkMiIsIm9mX3NlcXVlbmNlJDIiLCJvZl9hcnJheSQyIiwic3RhYmxlX2RlZHVwX2xpc3QkMiIsImZpbHRlcl9tYXAkMiIsIm9mX3RyZWUkMSIsInNleHBfb2ZfbV90IiwiRWx0IiwibV90X29mX3NleHAiLCJtX3Rfc2V4cF9ncmFtbWFyIiwiY29tcGFyZV9tX3QiLCJlcXVhbF9tX3QiLCJoYXNoX2ZvbGRfbV90IiwiaGFzaF9tX3QiLCJjb21wYXJhdG9yJDAiLCJlbXB0eSQyIiwic2luZ2xldG9uJDIiLCJ1bmlvbl9saXN0JDMiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDMiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMyIsIm9mX3NvcnRlZF9hcnJheSQzIiwib2ZfbGlzdCQzIiwib2Zfc2VxdWVuY2UkMyIsIm9mX2FycmF5JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl90cmVlJDIiLCJ0b190cmVlJDEiLCJyZXBsYWNlIiwic2V0X3RlbXBvcmFyaWx5IiwicmVzdG9yZV90byIsInNldHMiLCJzbmFwc2hvdCIsInNldHNfdGVtcG9yYXJpbHkiLCJhbmRfdmFsdWVzIiwiaW5jX251bV9tdXRhdGlvbnMiLCJlbHRzX2luZGV4IiwiY2hlY2tfaW5kZXhfZXhuIiwiZW5zdXJlX25vX211dGF0aW9uIiwibnVtX211dGF0aW9ucyIsIm51bV9tdXRhdGlvbnNfMDAzIiwiZnJvbnRfMDA1IiwibWFza18wMDciLCJsZW5ndGhfMDA5IiwiZWx0c18wMTEiLCJhcmdfMDEyIiwiYm5kc18wMDIkMSIsImJuZHNfMDAyJDIiLCJibmRzXzAwMiQzIiwibXV0MiIsIm11dDEiLCJmcm9udCIsImNhcGFjaXR5JDAiLCJjYXBhY2l0eSQxIiwiYmxpdF90b19hcnJheSIsImZyb250X2xlbiIsInJlc3RfbGVuIiwic2V0X2NhcGFjaXR5X2ludGVybmFsIiwiZGVzaXJlZF9jYXBhY2l0eSIsImVucXVldWUiLCJkZXF1ZXVlX25vbmVtcHR5IiwiZGVxdWV1ZV9leG4iLCJkZXF1ZXVlIiwiZGVxdWV1ZV9hbmRfaWdub3JlX2V4biIsImZyb250X25vbmVtcHR5IiwibGFzdF9ub25lbXB0eSIsInBlZWtfZXhuIiwiYmxpdF90cmFuc2ZlciIsImxlbiQxIiwiZHN0X3N0YXJ0Iiwic3JjX2kiLCJkc3RfaSIsImVucXVldWVfYWxsIiwiZmlsdGVyaV9pbnBsYWNlIiwidW5yZWFjaGFibGVfY29kZSIsInplcm8kMCIsIm1pbnVzX29uZSIsInplcm8kMSIsInRvX2ludF90cnVuYyIsInRvX2ludDMyX3RydW5jIiwib2ZfaW50NjRfdHJ1bmMiLCJuYW1lJDAiLCJvZl9jb250aW51ZV9vcl9zdG9wIiwidG9fY29udGludWVfb3Jfc3RvcCIsImxlZnRfdmFsdWUiLCJyaWdodF92YWx1ZSIsInZhbHVlcyIsImxlZnRfZGVmYXVsdCIsInJpZ2h0X2RlZmF1bHQiLCJyaWdodCQwIiwiY29tcGFyZV9rZXkiLCJ2bCIsInZsJDAiLCJ2ciIsImswIiwiazEiLCJsZCIsImxyZCIsImxyZCQwIiwicmQiLCJybGQiLCJybGQkMCIsInJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQiLCJzZXhwX29mX2tleSIsImZpbmRfYW5kX2FkZF9vcl9zZXQiLCJkYXRhIiwiYWRkX29yX3NldCIsInRyZWUkMCIsInRyZWUkMSIsImxlbmd0aCQyIiwidHJlZSQyIiwiZCQwIiwidHJlZSQzIiwibGVuZ3RoJDMiLCJ0cmVlJDQiLCJsZW5ndGgkNCIsInRyZWUkNSIsInNldF9taW4iLCJzZXRfbWF4IiwiYWRkX2V4biIsImFkZF9leG5faW50ZXJuYWwiLCJzaW5nbGV0b25fdG9fdHJlZV9leG4iLCJjb2xsYXBzZSIsImdvIiwiYWRkX3VuY2hlY2tlZCIsImdvJDAiLCJ0b190cmVlX3VuY2hlY2tlZCIsIm1heF9rZXkiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIiwiYnVpbGRlciIsInByZXZfa2V5Iiwiam9pbiQwIiwibGQkMCIsImxrJDAiLCJyayIsInJkJDAiLCJyayQwIiwibGsiLCJjbXAkMCIsIm1heWJlJDAiLCJzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkiLCJpbnRvIiwiYm91bmRhcnlfb3B0Iiwic3BsaXRfcmFuZ2UiLCJtaWRfYW5kX3JpZ2h0IiwibGIkMSIsImxiJDIiLCJtaWRfYW5kX3JpZ2h0JDAiLCJsYiIsImxiJDAiLCJtaWQkMCIsImFkZF9tdWx0aSIsImRhdGEkMCIsImZpbmRfbXVsdGkiLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsIm1pbl91cHBlciIsIm1heF9sb3dlciIsInVwcGVyX3BhcnRfd2l0aG91dF9taW4iLCJnbyQxIiwiY19taW4iLCJjX21heCIsImluaXQkMiIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlIiwicmFuZ2VfdG9fYWxpc3QiLCJjb25jYXRfdW5jaGVja2VkIiwiY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCIsInJlbW92ZV9sb29wIiwiY2hhbmdlIiwiY2hhbmdlX2NvcmUiLCJkJDEiLCJsZW5ndGgkNSIsImxlbmd0aCQ2IiwidHJlZSQ2IiwidXBkYXRlIiwidXBkYXRlX2NvcmUiLCJyZW1vdmVfbXVsdGkiLCJub25fZW1wdHlfdGFpbCIsIml0ZXJfa2V5cyIsIml0ZXJpX3VudGlsX2xvb3AiLCJpdGVyaV91bnRpbCIsImZvbGRfdW50aWxfbG9vcCIsImZpbmFsJDEiLCJmaW5hbCQwIiwibmV3X2RhdGEiLCJuZXdfZGF0YSQwIiwibmV3X2RhdGEkMSIsImtlZXBfZGF0YSIsImZpbHRlcl9rZXlzIiwia2VlcF9kYXRhX3QiLCJzdGVwX2RlZXBlcl9leG4iLCJkcm9wX3BoeXNfZXF1YWxfcHJlZml4IiwiYWNjMSIsImFjYzIiLCJ0cmVlMSQwIiwiYWNjMSQwIiwidHJlZTIkMCIsImFjYzIkMCIsImFjYzEkMSIsInRyZWUxJDEiLCJhY2MyJDEiLCJ0cmVlMiQxIiwiYWNjMiQyIiwidHJlZTIkMiIsImFjYzEkMiIsInRyZWUxJDIiLCJjdXJyIiwiazIiLCJuZXh0JDEiLCJkYXRhX2VxdWFsIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiZCQyIiwiY29tcGFyZV9kYXRhIiwiZDIiLCJkMSIsImZvbGQyJDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwiZGVsdGEiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwicmlnaHQkMSIsImVudW0yJDAiLCJlbnVtMSQwIiwia2V5cyIsIm9mX2ZvbGRhYmxlIiwiZm9sZGFibGUiLCJwcmV2X2RhdGEiLCJvZl9mb2xkYWJsZV9mb2xkIiwib2ZfZm9sZGFibGVfcmVkdWNlIiwib2ZfZm9sZGFibGUkMCIsIm9mX2ZvbGRhYmxlX29yX2Vycm9yIiwib2ZfZm9sZGFibGVfZXhuIiwib2ZfZm9sZGFibGVfbXVsdGkiLCJvZl9hbGlzdF9mb2xkIiwib2ZfYWxpc3RfcmVkdWNlIiwib2ZfYWxpc3QiLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X2V4biIsIm9mX2FsaXN0X211bHRpIiwiZm9sZCQyIiwib2Zfc2VxdWVuY2VfZm9sZCIsIm9mX3NlcXVlbmNlX3JlZHVjZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9saXN0X3dpdGhfa2V5IiwiZ2V0X2tleSIsIm5ld19sZW5ndGgiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIiwib2ZfbGlzdF93aXRoX2tleV9leG4iLCJvZl9saXN0X3dpdGhfa2V5X211bHRpIiwidG9fYWxpc3QiLCJrZXlfb3JkZXIiLCJtZXJnZV9sYXJnZV9maXJzdCIsImxlbmd0aF9sYXJnZSIsInRfbGFyZ2UiLCJ0X3NtYWxsIiwibWVyZ2Vfc2tld2VkIiwibGVuZ3RoMSIsImxlbmd0aDIiLCJyZXBhY2thZ2UiLCJtYXJrZXIiLCJjbG9zZXN0X2tleSIsImZvdW5kX21hcmtlciIsImZvdW5kX2tleSIsImZvdW5kX3ZhbHVlIiwiZm91bmRfdmFsdWUkMCIsImZvdW5kX2tleSQwIiwicmFuayIsIm51bV90b19zZWFyY2giLCJwYWlyIiwicGFpciQwIiwiYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmQiLCJtYXliZV9ib3VuZCIsImlmX2V4Y2x1c2l2ZSIsImlmX2luY2x1c2l2ZSIsImZpbmRfYm91bmQiLCJib3VuZCQwIiwiYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIiwibG93ZXJfYm91bmQkMCIsInVwcGVyX2JvdW5kJDAiLCJvZl9pdGVyaSIsIm9mX2l0ZXJpX2V4biIsImtleV9vZl9zZXhwIiwidmFsdWVfb2Zfc2V4cCIsImFsaXN0X3NleHBzIiwiZm91bmRfZmlyc3RfayIsImsyX3NleHAiLCJzZXhwX29mX3ZhbHVlIiwiZXJyb3JzIiwib2tzIiwibWFwX2tleXMiLCJtYXBfa2V5c19leG4iLCJ0cmFuc3Bvc2Vfa2V5cyIsIm91dGVyX2NvbXBhcmF0b3IiLCJpbm5lcl9jb21wYXJhdG9yIiwib3V0ZXJfdCIsIm91dGVyX2tleSIsImlubmVyX3QiLCJpbm5lcl9rZXkiLCJhY2NfbGVuIiwiZWx0X2xlbiIsInRyZWVfZmlsdGVyX21hcGkiLCJyX2xlbiIsImxfbGVuIiwid2l0aF9zYW1lX2xlbmd0aCIsIm9mX2xpa2VfdHJlZSIsIm9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCIsImFkZF9leG4kMCIsImFkZF9tdWx0aSQwIiwicmVtb3ZlX211bHRpJDAiLCJmaW5kX211bHRpJDAiLCJjaGFuZ2UkMCIsInVwZGF0ZSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaV91bnRpbCQwIiwiZm9sZCQzIiwiZm9sZDIkMSIsImZpbHRlcl9rZXlzJDAiLCJmaWx0ZXJpJDAiLCJmaWx0ZXJfbWFwaSQwIiwib2ZfbGlrZV90cmVlMiIsIm9mX2xpa2VfdHJlZTJfbWF5YmVfbm9fb3AiLCJwYXJ0aXRpb25fbWFwaSQwIiwicGFydGl0aW9uX21hcCQwIiwicGFydGl0aW9uaV90ZiQwIiwiY29tYmluZV9lcnJvcnMkMCIsImtleXMkMCIsInRvX2FsaXN0JDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDAiLCJtZXJnZSQwIiwibWVyZ2Vfc2tld2VkJDAiLCJib3RoX2xlbiIsInNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSQwIiwic3VicmFuZ2UiLCJoX2wiLCJoX3IiLCJvdXRlcl9qb2luZWRfaGVpZ2h0IiwibWlkX2xlbmd0aCIsImFwcGVuZCQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMCIsInJhbmdlX3RvX2FsaXN0JDAiLCJjbG9zZXN0X2tleSQwIiwicmFuayQwIiwic2V4cF9vZl9rIiwic2V4cF9vZl92IiwiaGFzaF9mb2xkX2tleSIsImhhc2hfZm9sZF9kYXRhIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSIsIm5ld190cmVlIiwibmV3X3RyZWVfd2l0aF9sZW5ndGgiLCJvZl9hbGlzdCQwIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMCIsIm9mX2FsaXN0X2V4biQwIiwib2ZfYWxpc3RfbXVsdGkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwicmVxdWlyZWRfYnlfaW50ZiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDAiLCJvZl9zZXF1ZW5jZV9leG4kMCIsIm9mX3NlcXVlbmNlX211bHRpJDAiLCJvZl9zZXF1ZW5jZV9mb2xkJDAiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMCIsIm9mX2xpc3Rfd2l0aF9rZXkkMCIsIm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IkMCIsIm9mX2xpc3Rfd2l0aF9rZXlfZXhuJDAiLCJvZl9saXN0X3dpdGhfa2V5X211bHRpJDAiLCJzZXQkMSIsImFkZF9leG4kMSIsImFkZF9tdWx0aSQxIiwicmVtb3ZlX211bHRpJDEiLCJmaW5kX211bHRpJDEiLCJjaGFuZ2UkMSIsInVwZGF0ZSQxIiwiaXRlcl9rZXlzJDEiLCJpdGVyaV91bnRpbCQxIiwibWFwaSQxIiwiZm9sZCQ0IiwiZm9sZDIkMiIsImZpbHRlcl9rZXlzJDEiLCJmaWx0ZXJpJDEiLCJmaWx0ZXJfbWFwaSQxIiwicGFydGl0aW9uX21hcGkkMSIsInBhcnRpdGlvbl9tYXAkMSIsInBhcnRpdGlvbmlfdGYkMSIsImNvbWJpbmVfZXJyb3JzJDEiLCJrZXlzJDEiLCJkYXRhJDEiLCJ0b19hbGlzdCQxIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQxIiwibWVyZ2UkMSIsIm1lcmdlX3NrZXdlZCQxIiwiZm9yX2FsbGkkMSIsImV4aXN0c2kkMSIsImNvdW50aSQxIiwiYXBwZW5kJDEiLCJzdWJyYW5nZSQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMSIsInJhbmdlX3RvX2FsaXN0JDEiLCJjbG9zZXN0X2tleSQxIiwibnRoJDIiLCJudGhfZXhuJDAiLCJyYW5rJDEiLCJrX29mX3NleHAiLCJ2X29mX3NleHAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJtYXBfa2V5cyQwIiwiZHVwIiwibWFwX2tleXNfZXhuJDAiLCJ0cmFuc3Bvc2Vfa2V5cyQwIiwiYWRkX2V4biQyIiwib2ZfdHJlZTAiLCJvZl9hbGlzdCQxIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMSIsIm9mX2FsaXN0X2V4biQxIiwib2ZfYWxpc3RfbXVsdGkkMSIsIm9mX2FsaXN0X2ZvbGQkMSIsIm9mX2FsaXN0X3JlZHVjZSQxIiwib2ZfaXRlcmkkMSIsInRyZWVfbGVuZ3RoIiwib2ZfaXRlcmlfZXhuJDEiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJvZl9saXN0X3dpdGhfa2V5JDEiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDEiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQxIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwidHJhbnNwb3NlX2tleXMkMSIsIm9mX3RyZWUkMyIsIm9mX2FsaXN0JDIiLCJvZl9hbGlzdF9vcl9lcnJvciQyIiwib2ZfYWxpc3RfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9pdGVyaSQyIiwib2ZfaXRlcmlfZXhuJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQyIiwib2Zfc2VxdWVuY2VfZXhuJDIiLCJvZl9zZXF1ZW5jZV9tdWx0aSQyIiwib2Zfc2VxdWVuY2VfZm9sZCQyIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDIiLCJvZl9saXN0X3dpdGhfa2V5JDIiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDIiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQyIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwidHJhbnNwb3NlX2tleXMkMiIsIksiLCJ2X2dyYW1tYXIiLCJjb21wYXJlX3YiLCJlcXVhbF92IiwiaGFzaF9mb2xkX3YiLCJvZl90cmVlJDQiLCJlbXB0eSQzIiwib2ZfYWxpc3QkMyIsIm9mX2FsaXN0X29yX2Vycm9yJDMiLCJvZl9hbGlzdF9leG4kMyIsIm9mX2FsaXN0X211bHRpJDMiLCJvZl9hbGlzdF9mb2xkJDMiLCJvZl9hbGlzdF9yZWR1Y2UkMyIsIm9mX2l0ZXJpJDMiLCJvZl9pdGVyaV9leG4kMyIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMyIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDMiLCJvZl9zZXF1ZW5jZV9leG4kMyIsIm9mX3NlcXVlbmNlX211bHRpJDMiLCJvZl9zZXF1ZW5jZV9mb2xkJDMiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMyIsIm9mX2xpc3Rfd2l0aF9rZXkkMyIsIm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IkMyIsIm9mX2xpc3Rfd2l0aF9rZXlfZXhuJDMiLCJvZl9saXN0X3dpdGhfa2V5X211bHRpJDMiLCJtYXBfa2V5cyQzIiwibWFwX2tleXNfZXhuJDMiLCJ0cmFuc3Bvc2Vfa2V5cyQzIiwidHJhbnNmZXIiLCJjYW1sX2l0ZXIiLCJjYW1sX2ZvbGQiLCJxIiwicSQwIiwiZmxvYXRfb2ZfYml0cyIsImJpdHNfb2ZfZmxvYXQiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJ0b19uYXRpdmVpbnRfZXhuIiwid3JhcF9leG4iLCJ1bndyYXAiLCJjbHoiLCJjdHoiLCJpbnZhbGlkX3N0ciIsIm9mX3N0cmluZ19yYXciLCJzaWduZWRuZXNzIiwicG9zX3N0ciIsImludDYzIiwib25lJDAiLCJvZl9uYXRpdmVpbnRfdHJ1bmMiLCJ0b19uYXRpdmVpbnRfdHJ1bmMiLCJ0b19zdHJpbmckMSIsIm9mX2ludF90cnVuYyIsInJlcHIiLCJyZXByJDAiLCJpbmNsdWRlIiwib2ZfZmxvYXQkMCIsInRvX2Zsb2F0JDAiLCJvZl9pbnRfZXhuJDAiLCJ0b19pbnRfZXhuJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwib2Zfc3RyaW5nX29wdCQwIiwidG9fc3RyaW5nX2h1bSQwIiwibWludXNfb25lJDAiLCJyZW0kMCIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJzdWNjJDAiLCJwcmVkJDAiLCJwb3ckMCIsImJpdF9hbmQkMCIsImJpdF9vciQwIiwiYml0X3hvciQwIiwiYml0X25vdCQwIiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJkZWNyJDAiLCJpbmNyJDAiLCJvZl9pbnQzMl9leG4kMCIsInRvX2ludDMyX2V4biQwIiwib2ZfaW50NjRfZXhuJDAiLCJ0b19pbnQ2NCQwIiwib2ZfbmF0aXZlaW50X2V4biQwIiwidG9fbmF0aXZlaW50X2V4biQwIiwibnVtX2JpdHMkMCIsIm1heF92YWx1ZSQwIiwibWluX3ZhbHVlJDAiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDAiLCJjZWlsX3BvdzIkMCIsImZsb29yX3BvdzIkMCIsImNlaWxfbG9nMiQwIiwiaXNfcG93MiQwIiwiY2x6JDAiLCJjdHokMCIsIm9mX2ludCQwIiwidG9faW50JDAiLCJ0b19pbnRfdHJ1bmMkMCIsInRvX2ludDMyJDAiLCJvZl9pbnQ2NCQwIiwib2ZfbmF0aXZlaW50JDAiLCJ0b19uYXRpdmVpbnQkMCIsInRvX25hdGl2ZWludF90cnVuYyQwIiwib2ZfZmxvYXRfdW5jaGVja2VkJDAiLCJyZXByJDEiLCJic3dhcDMyJDAiLCJic3dhcDQ4JDAiLCJwb3NfZGlmZiIsIm5lZ2F0aXZlX29uZSIsImRpdl93b3VsZF9vdmVyZmxvdyIsInByb2R1Y3QiLCJhYnMkMSIsIm5lZyQwIiwicmFuZG9tX29mX2ludCIsInJhbmRvbV9vZl9pbnQ2NCIsInJhbmRvbV9vZl9pbnQkMCIsInJhbmRvbV9pbmNsX29mX2ludCIsInJhbmRvbV9pbmNsX29mX2ludDY0IiwicmFuZG9tX2luY2wiLCJpbnYiLCJsZWZ0X2tleSIsInJpZ2h0X2tleSIsInVwZGF0ZV9oZWlnaHQiLCJvbGRfaGVpZ2h0IiwibmV3X2hlaWdodCIsImJhbGFuY2UiLCJyb290X25vZGUiLCJsZWZ0X25vZGUiLCJyaWdodF9ub2RlIiwibGVmdF9ub2RlX2xlZnQiLCJsZWZ0X25vZGVfcmlnaHQiLCJscl9sZWZ0IiwibHJfcmlnaHQiLCJyaWdodF9ub2RlX2xlZnQiLCJyaWdodF9ub2RlX3JpZ2h0IiwicmxfbGVmdCIsInJsX3JpZ2h0Iiwic2V0X2xlZnQiLCJub2RlIiwic2V0X3JpZ2h0IiwiYWRkZWQiLCJmaW5kaV9hbmRfY2FsbF9pbXBsIiwiYXJnMSIsImFyZzIiLCJjYWxsX2lmX2ZvdW5kIiwiY2FsbF9pZl9ub3RfZm91bmQiLCJmaW5kX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQwIiwiY2FsbF9pZl9ub3RfZm91bmQkMCIsImZpbmRpX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQxIiwiY2FsbF9pZl9ub3RfZm91bmQkMSIsImZpbmRfYW5kX2NhbGwxIiwiY2FsbF9pZl9mb3VuZCQyIiwiY2FsbF9pZl9ub3RfZm91bmQkMiIsImZpbmRpX2FuZF9jYWxsMSIsImNhbGxfaWZfZm91bmQkMyIsImNhbGxfaWZfbm90X2ZvdW5kJDMiLCJmaW5kX2FuZF9jYWxsMiIsImNhbGxfaWZfZm91bmQkNCIsImNhbGxfaWZfbm90X2ZvdW5kJDQiLCJmaW5kaV9hbmRfY2FsbDIiLCJpZl9mb3VuZCQwIiwiaWZfbm90X2ZvdW5kJDAiLCJyZW1vdmVkIiwia2V5JDQiLCJkYXRhJDQiLCJya2V5IiwicmRhdGEiLCJrZXkkMSIsInJrZXkkMCIsInJkYXRhJDAiLCJsa2V5JDAiLCJsZGF0YSQwIiwia2V5JDMiLCJkYXRhJDMiLCJya2V5JDEiLCJyZGF0YSQxIiwibGtleSIsImxkYXRhIiwia2V5JDIiLCJkYXRhJDIiLCJtYXBpX2lucGxhY2UiLCJlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCIsIndpdGhvdXRfbXV0YXRpbmciLCJtYXhfdGFibGVfbGVuZ3RoIiwiZ3Jvd3RoX2FsbG93ZWQiLCJzaXplJDAiLCJzaXplJDEiLCJzbG90IiwiYWRkX3dvcmtlciIsIm5ld19yb290IiwibWF5YmVfcmVzaXplX3RhYmxlIiwic2hvdWxkX2dyb3ciLCJuZXdfYXJyYXlfbGVuZ3RoIiwibmV3X3RhYmxlIiwib2xkX3RhYmxlIiwic2V4cF9vZl9rZXkkMCIsImFkZGVkX29yX3JlbW92ZWQiLCJidWNrZXQiLCJjaG9vc2Vfbm9uZW1wdHkiLCJ0YWJsZSIsImF2bHRyZWUiLCJjaG9vc2VfcmFuZG9tbHlfbm9uZW1wdHkiLCJzdGFydF9pZHgiLCJjaG9vc2VfcmFuZG9tbHkiLCJjaG9vc2VfcmFuZG9tbHlfZXhuIiwiaW52YXJpYW50X2tleSIsImludmFyaWFudF9kYXRhIiwicmVhbF9sZW4iLCJuZXdfdCIsInQwIiwiZmluZF9vcl9hZGQiLCJpZCIsImZpbmRpX29yX2FkZCIsImZpbmRfYW5kX3JlbW92ZSIsInVwZGF0ZV9hbmRfcmV0dXJuIiwiaW5jcl9ieSIsInJlbW92ZV9pZl96ZXJvIiwiYnkiLCJjcmVhdGVfbWFwcGVkIiwiZ2V0X2RhdGEiLCJkdXBlcyIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsInNleHBfb2ZfZGF0YSIsImRfb2Zfc2V4cCIsImtfZ3JhbW1hciIsInJvdyIsIm9sZCIsImNyZWF0ZV93aXRoX2tleSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJtYXliZV9zZXQiLCJ0X2xlZnQiLCJ0X3JpZ2h0IiwibWVyZ2VfaW50byIsImRzdF9kYXRhJDAiLCJhY3Rpb24iLCJkc3RfZGF0YSIsInRvX3JlbW92ZSIsImZpbHRlcl9rZXlzX2lucGxhY2UiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwibWFwX3Jlc3VsdHMiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJzaW1pbGFyIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJjcmVhdGVfbWFwcGVkJDAiLCJjcmVhdGVfd2l0aF9rZXkkMCIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQwIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQwIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDEiLCJjcmVhdGVfbWFwcGVkJDEiLCJjcmVhdGVfd2l0aF9rZXkkMSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQxIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQxIiwiZ3JvdXAkMSIsImhhc2hhYmxlX3MiLCJwb2x5X2hhc2hhYmxlIiwic3RyaWN0X2FkZCIsInN0cmljdF9hZGRfZXhuIiwic3RyaWN0X3JlbW92ZSIsInN0cmljdF9yZW1vdmVfZXhuIiwic2V4cF9vZl9lIiwibGFyZ2VyIiwic21hbGxlciIsIm9mX2hhc2h0Ymxfa2V5cyIsImhhc2h0YmwiLCJ0b19oYXNodGJsIiwiZV9vZl9zZXhwIiwiZXJyb3Jfc291cmNlXzAwNyIsIm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUiLCJtaW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlIiwib2ZfaW50NjMiLCJpcm91bmRfbGJvdW5kIiwiaXJvdW5kX3Vib3VuZCIsImlyb3VuZF91cCIsImlyb3VuZF91cF9leG4iLCJpcm91bmRfZG93biIsImlyb3VuZF9kb3duX2V4biIsImlyb3VuZF90b3dhcmRzX3plcm8iLCJpcm91bmRfdG93YXJkc196ZXJvX2V4biIsInJvdW5kX25lYXJlc3RfbGIiLCJyb3VuZF9uZWFyZXN0X3ViIiwib25lX3VscF9sZXNzX3RoYW5faGFsZiIsImFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IiwiaXJvdW5kX25lYXJlc3RfMzIiLCJpcm91bmRfbmVhcmVzdF82NCIsInBpIiwic3FydF9waSIsInNxcnRfMnBpIiwiZXVsZXIiLCJpcm91bmRfbmVhcmVzdF82NCQwIiwiaXJvdW5kX25lYXJlc3RfZXhuXzMyIiwiaXJvdW5kX25lYXJlc3RfZXhuXzY0IiwiaXJvdW5kX25lYXJlc3RfZXhuIiwiaXJvdW5kX2V4biIsImlyb3VuZCIsImlzX2luZiIsImlzX2Zpbml0ZSIsIm1pbl9pbmFuIiwibWF4X2luYW4iLCJzcXVhcmUiLCJmcmFjdGlvbmFsIiwiaW50ZWdyYWwiLCJyb3VuZF9uZWFyZXN0X2lubGluZSIsInJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuIiwiY2VpbF9vcl9zdWNjIiwiZGlmZl9mbG9vciIsImRpZmZfY2VpbCIsImludDYzX3JvdW5kX2xib3VuZCIsImludDYzX3JvdW5kX3Vib3VuZCIsImludDYzX3JvdW5kX3VwX2V4biIsImludDYzX3JvdW5kX2Rvd25fZXhuIiwiaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hIiwiaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hIiwiaW50NjNfcm91bmRfbmVhcmVzdF9leG4iLCJjbGFzc2lmeSIsInN0cmlwX3plcm8iLCJkZWNpbWFscyIsImV4cGxpY2l0X3BsdXMiLCJ0b19wYWRkZWRfY29tcGFjdF9zdHJpbmdfY3VzdG8iLCJraWxvIiwibWVnYSIsImdpZ2EiLCJ0ZXJhIiwicGV0YSIsIm1hZyIsIm51bWVyYXRvciIsImRlbm9taW5hdG9yIiwiaGlnaGVyIiwiZGlmZl9yaWdodCIsImRpZmZfbGVmdCIsInBldGEkMCIsInRvX3BhZGRlZF9jb21wYWN0X3N0cmluZyIsInJvdW5kX2dlbiIsInNkIiwiZGQiLCJkZCQwIiwic2QkMCIsImRkJDEiLCJzZCQxIiwiYWJzX2RkIiwicm91bmRfc2lnbmlmaWNhbnQiLCJzaWduaWZpY2FudF9kaWdpdHMiLCJyb3VuZF9kZWNpbWFsIiwiZGVjaW1hbF9kaWdpdHMiLCJzaWduX2V4biIsInNpZ25fb3JfbmFuIiwiaWVlZV9uZWdhdGl2ZSIsIm1hbnRpc3NhX2JpdHMiLCJleHBvbmVudF9tYXNrNjQiLCJleHBvbmVudF9tYXNrIiwibWFudGlzc2FfbWFzayIsIm1hbnRpc3NhX21hc2s2NCIsImllZWVfZXhwb25lbnQiLCJpZWVlX21hbnRpc3NhIiwiY3JlYXRlX2llZWVfZXhuIiwibmVnYXRpdmUiLCJtYW50aXNzYSIsInNpZ25fYml0cyIsImV4cHRfYml0cyIsIm1hbnRfYml0cyIsImNyZWF0ZV9pZWVlIiwic3BlY2lhbGl6ZWRfaGFzaCIsImFkZF9zdWJzdHJpbmciLCJhZGRfc3ViYnl0ZXMiLCJjYW1sX2J1ZmZlcl9sZW5ndGgiLCJjYW1sX2J1ZmZlcl9ibGl0IiwiZWxpZGVkX21lc3NhZ2UiLCJlbGlkZSIsImF0X21vc3RfbnVtX2ZyYW1lcyIsInRvX3N0cmluZ19saXN0Iiwic2V0X3JlY29yZGluZyIsImFtX3JlY29yZGluZyIsIm1vc3RfcmVjZW50IiwibW9zdF9yZWNlbnRfZm9yX2V4biIsIndpdGhfcmVjb3JkaW5nIiwic2F2ZWQiLCJvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmEiLCJhcnJheV9vZl9zZXhwIiwic2V4cF9vZl9hcnJheSIsImFycmF5X3NleHBfZ3JhbW1hciIsImJvb2xfb2Zfc2V4cCIsInNleHBfb2ZfYm9vbCIsImJvb2xfc2V4cF9ncmFtbWFyIiwiY2hhcl9vZl9zZXhwIiwic2V4cF9vZl9jaGFyIiwiY2hhcl9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2V4biIsImdsb2JhbGl6ZV9mbG9hdCIsImZ1bmMkMSIsImZsb2F0X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX2ludCIsImZ1bmMkMiIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX2ludDMyIiwiZnVuYyQzIiwiaW50MzJfb2Zfc2V4cCIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJnbG9iYWxpemVfaW50NjQiLCJmdW5jJDQiLCJpbnQ2NF9vZl9zZXhwIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X3NleHBfZ3JhbW1hciIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX25hdGl2ZWludCIsImZ1bmMkNSIsIm5hdGl2ZWludF9vZl9zZXhwIiwic2V4cF9vZl9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIiwib3B0aW9uX29mX3NleHAiLCJzZXhwX29mX29wdGlvbiIsIm9wdGlvbl9zZXhwX2dyYW1tYXIiLCJyZWZfb2Zfc2V4cCIsInNleHBfb2ZfcmVmIiwicmVmX3NleHBfZ3JhbW1hciIsImdsb2JhbGl6ZV9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2Zfc3RyaW5nIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsImNvbXBhcmVfYnl0ZXMiLCJlcXVhbF9ieXRlcyIsImdsb2JhbGl6ZV9ieXRlcyIsImJ5dGVzX29mX3NleHAiLCJzZXhwX29mX2J5dGVzIiwiYnl0ZXNfc2V4cF9ncmFtbWFyIiwiZnVuYyQ2IiwidW5pdF9vZl9zZXhwIiwic2V4cF9vZl91bml0IiwidW5pdF9zZXhwX2dyYW1tYXIiLCJmYWlsd2l0aCIsImludmFsaWRfYXJnIiwiY29tcGFyZV9hcnJheSQwIiwiZXF1YWxfYXJyYXkkMCIsImdsb2JhbGl6ZV9hcnJheSQwIiwiYXJyYXlfb2Zfc2V4cCQwIiwic2V4cF9vZl9hcnJheSQwIiwiYXJyYXlfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2Jvb2wkMCIsImVxdWFsX2Jvb2wkMCIsImdsb2JhbGl6ZV9ib29sJDAiLCJoYXNoX2ZvbGRfYm9vbCQwIiwiaGFzaF9ib29sJDAiLCJib29sX29mX3NleHAkMCIsInNleHBfb2ZfYm9vbCQwIiwiYm9vbF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfY2hhciQwIiwiZXF1YWxfY2hhciQwIiwiZ2xvYmFsaXplX2NoYXIkMCIsImhhc2hfZm9sZF9jaGFyJDAiLCJoYXNoX2NoYXIkMCIsImNoYXJfb2Zfc2V4cCQwIiwic2V4cF9vZl9jaGFyJDAiLCJjaGFyX3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl9leG4kMCIsImNvbXBhcmVfZmxvYXQkMCIsImVxdWFsX2Zsb2F0JDAiLCJnbG9iYWxpemVfZmxvYXQkMCIsImhhc2hfZm9sZF9mbG9hdCQwIiwiaGFzaF9mbG9hdCQwIiwiZmxvYXRfb2Zfc2V4cCQwIiwic2V4cF9vZl9mbG9hdCQwIiwiZmxvYXRfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludCQwIiwiZXF1YWxfaW50JDAiLCJnbG9iYWxpemVfaW50JDAiLCJoYXNoX2ZvbGRfaW50JDAiLCJoYXNoX2ludCQwIiwiaW50X29mX3NleHAkMCIsInNleHBfb2ZfaW50JDAiLCJpbnRfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludDMyJDAiLCJlcXVhbF9pbnQzMiQwIiwiZ2xvYmFsaXplX2ludDMyJDAiLCJoYXNoX2ZvbGRfaW50MzIkMCIsImhhc2hfaW50MzIkMCIsImludDMyX29mX3NleHAkMCIsInNleHBfb2ZfaW50MzIkMCIsImludDMyX3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQ2NCQwIiwiZXF1YWxfaW50NjQkMCIsImdsb2JhbGl6ZV9pbnQ2NCQwIiwiaGFzaF9mb2xkX2ludDY0JDAiLCJoYXNoX2ludDY0JDAiLCJpbnQ2NF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludDY0JDAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbGlzdCQwIiwiZXF1YWxfbGlzdCQwIiwiZ2xvYmFsaXplX2xpc3QkMCIsImhhc2hfZm9sZF9saXN0JDAiLCJsaXN0X29mX3NleHAkMCIsInNleHBfb2ZfbGlzdCQwIiwibGlzdF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbmF0aXZlaW50JDAiLCJlcXVhbF9uYXRpdmVpbnQkMCIsImdsb2JhbGl6ZV9uYXRpdmVpbnQkMCIsImhhc2hfZm9sZF9uYXRpdmVpbnQkMCIsImhhc2hfbmF0aXZlaW50JDAiLCJuYXRpdmVpbnRfb2Zfc2V4cCQwIiwic2V4cF9vZl9uYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfb3B0aW9uJDAiLCJlcXVhbF9vcHRpb24kMCIsImdsb2JhbGl6ZV9vcHRpb24kMCIsImhhc2hfZm9sZF9vcHRpb24kMCIsIm9wdGlvbl9vZl9zZXhwJDAiLCJzZXhwX29mX29wdGlvbiQwIiwib3B0aW9uX3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9yZWYkMCIsImVxdWFsX3JlZiQwIiwiZ2xvYmFsaXplX3JlZiQwIiwicmVmX29mX3NleHAkMCIsInNleHBfb2ZfcmVmJDAiLCJyZWZfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX3N0cmluZyQwIiwiZXF1YWxfc3RyaW5nJDAiLCJnbG9iYWxpemVfc3RyaW5nJDAiLCJoYXNoX2ZvbGRfc3RyaW5nJDAiLCJoYXNoX3N0cmluZyQwIiwic3RyaW5nX29mX3NleHAkMCIsInNleHBfb2Zfc3RyaW5nJDAiLCJzdHJpbmdfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2J5dGVzJDAiLCJlcXVhbF9ieXRlcyQwIiwiZ2xvYmFsaXplX2J5dGVzJDAiLCJieXRlc19vZl9zZXhwJDAiLCJzZXhwX29mX2J5dGVzJDAiLCJieXRlc19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfdW5pdCQwIiwiZXF1YWxfdW5pdCQwIiwiZ2xvYmFsaXplX3VuaXQkMCIsImhhc2hfZm9sZF91bml0JDAiLCJoYXNoX3VuaXQkMCIsInVuaXRfb2Zfc2V4cCQwIiwic2V4cF9vZl91bml0JDAiLCJ1bml0X3NleHBfZ3JhbW1hciQwIiwicmFpc2VfcyQwIiwidG9fc3RyaW5nIiwibWFwIiwiZiIsIm8iLCJ2Iiwic2V0X2lucHV0X25hbWUiLCJuYW1lIiwic2V0X2lucHV0X2xleGJ1ZiIsImxleGJ1Zl9vcHQiLCJ2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCIsIngiLCJpc193ZWxsX2Zvcm1lZCIsImVycm9yIiwic3RyaW5nX29mX2xvY2F0aW9uX21zZyIsIm1zZyIsIm1haW5fbXNnIiwibWFpbiIsImxvYyIsInN1Yl9tc2dzIiwic3ViIiwiZXJyIiwic3ViJDAiLCJhY2MiLCJ0YWlsIiwic3ViJDEiLCJvZl9leG4iLCJleG4iLCJlIiwic2V0X21haW5fbXNnIiwidHh0IiwicHBmIiwibWFrZSIsIm1rIiwic2V0X21haW5fbG9jIiwicmFpc2VfZXJyb3JmJDAiLCJwYXJzZSIsInMiLCJhc3RfaW1wbF9tYWdpY19udW1iZXIiLCJhc3RfaW50Zl9tYWdpY19udW1iZXIiLCJyaWdodCIsImZtdCIsImZtdCQwIiwiZm10JDEiLCJwcmVmaXhfc3ltYm9scyIsImluZml4X3N5bWJvbHMiLCJzcGVjaWFsX2luZml4X3N0cmluZ3MiLCJyZXNldF9jdHh0IiwidmFsdWUiLCJ0IiwiZGVmYXVsdCQwIiwiZml4aXR5X29mX3N0cmluZyIsImZpcnN0X2lzIiwiYyIsInN0ciIsImxhc3RfaXMiLCJuZWVkc19wYXJlbnMiLCJmaXgiLCJuZWVkc19zcGFjZXMiLCJzdHJpbmdfbG9jIiwicHJvdGVjdF9pZGVudCIsImZvcm1hdCIsIm92ZXJyaWRlIiwidmlld19leHByIiwiZXhwIiwiZXhwJDAiLCJleHAkMSIsImUxIiwiYWNjJDAiLCJiIiwibHMiLCJpc19zaW1wbGVfY29uc3RydWN0IiwicHAiLCJ1bmRlcl9zZW1pIiwiY3R4dCIsImxpc3QiLCJzZXAiLCJmaXJzdCIsImxhc3QiLCJmdSIsInhzIiwiZmlyc3QkMCIsIngkMCIsImxhc3QkMCIsIngkMSIsInNlcCQwIiwieCQzIiwieCQyIiwieHMkMCIsIm9wdGlvbiIsImEiLCJwYXJlbiIsInByaW50X2xvbmdpZGVudCIsImxvbmdwcmVmaXgiLCJzJDAiLCJ5IiwibG9uZ2lkZW50X2xvYyIsImNvbnN0YW50IiwiaSIsIm0iLCJpJDAiLCJpJDEiLCJkZWxpbSIsImkkMiIsIm0kMCIsIm11dGFibGVfZmxhZyIsInZpcnR1YWxfZmxhZyIsInJlY19mbGFnIiwicmYiLCJub25yZWNfZmxhZyIsImRpcmVjdGlvbl9mbGFnIiwicHJpdmF0ZV9mbGFnIiwiY29uc3RhbnRfc3RyaW5nIiwidHl2YXIiLCJ0eXZhcl9sb2MiLCJzdHJpbmdfcXVvdCIsImNsYXNzX3BhcmFtc19kZWYiLCJsIiwidHlwZV9wYXJhbSIsInR5cGVfd2l0aF9sYWJlbCIsImxhYmVsIiwiY29yZV90eXBlMSIsImNvcmVfdHlwZSIsImF0dHJpYnV0ZXMiLCJjdDIiLCJjdDEiLCJjdCIsInNsIiwiY3QkMCIsImN0JDEiLCJsJDAiLCJsaSIsImwkMSIsImNvcmVfZmllbGRfdHlwZSIsImZpZWxkX3ZhciIsImwkMiIsImxpJDAiLCJsb3ciLCJjbG9zZWQiLCJsJDMiLCJmaXJzdF9pc19pbmhlcml0IiwidHlwZV92YXJpYW50X2hlbHBlciIsImN0bCIsImNzdHJzIiwibGlkIiwiYXV4IiwiZXh0ZW5zaW9uIiwicGF0dGVybiQxIiwicGF0dGVybiIsInAiLCJwMiIsInAxIiwib3JwYXRzIiwicGF0dGVybjEiLCJwYXR0ZXJuMSQwIiwicGF0dGVybl9saXN0X2hlbHBlciIsInBhdDIiLCJwYXQxIiwic2ltcGxlX3BhdHRlcm4iLCJzaW1wbGVfcGF0dGVybiQwIiwicG8iLCJ2bCIsImMyIiwiYzEiLCJsb25naWRlbnRfeF9wYXR0ZXJuIiwicCQwIiwicCQxIiwicCQyIiwid2l0aF9wYXJlbiIsImxhYmVsX2V4cCIsIm9wdCIsInJlc3QiLCJ0eHQkMCIsIm8kMCIsInN1Z2FyX2V4cHIiLCJhcmdzIiwiaWQiLCJsYWIiLCJwcmludF9pbmRleG9wIiwicGF0aF9wcmVmaXgiLCJhc3NpZ24iLCJsZWZ0IiwicHJpbnRfaW5kZXgiLCJpbmRpY2VzIiwicmVtX2FyZ3MiLCJwcmludF9wYXRoIiwic2ltcGxlX2V4cHIiLCJlJDAiLCJwYXRoIiwiZnVuYyIsIm90aGVyX2FyZ3MiLCJhJDAiLCJhc3NpZ24kMCIsInJlc3QkMCIsInJlc3QkMSIsInJlc3QkMiIsImluZGV4ZXMiLCJyZXN0JDMiLCJpMyIsImkyIiwiaTEiLCJyZXN0JDQiLCJpMiQwIiwiaTEkMCIsInJlc3QkNSIsImkxJDEiLCJtdWx0aV9pbmRpY2VzIiwibiIsImtpbmQiLCJyaWdodCQwIiwibGVmdCQwIiwibCQ1IiwiZSQ3IiwiYXJnMSIsImFyZzIiLCJsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0iLCJzJDEiLCJzJDIiLCJleHByZXNzaW9uMiIsImVvJDAiLCJlbyQxIiwibCQ2IiwiZTIkMSIsImUxJDEiLCJsaSQxIiwiZSQ4IiwicyQzIiwibCQ3Iiwic3RyaW5nX3hfZXhwcmVzc2lvbiIsImUkOSIsImUkMTAiLCJlJDExIiwiZSQxMiIsImNhc2VfbGlzdCIsImUwIiwiZSQxIiwibCQ0IiwiZSQyIiwiZSQzIiwibWUiLCJtb2R1bGVfZXhwciIsImUkNCIsImNkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZSQ1IiwiZSQ2IiwiYm9keSIsImFuZHMiLCJsZXQkMCIsImJpbmRpbmdfb3AiLCJlbyIsImUyIiwiZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIiwiZTIkMCIsImUxJDAiLCJsc3QiLCJiaW5kaW5ncyIsImNzIiwiY2xhc3Nfc3RydWN0dXJlIiwiZXhwcmVzc2lvbjIkMCIsInNpbXBsZV9leHByJDAiLCJsb25naWRlbnRfeF9leHByZXNzaW9uIiwiZTMiLCJkZiIsImV4cHJlc3Npb24iLCJjdG8xIiwicGF5bG9hZCIsIml0ZW1fYXR0cmlidXRlcyIsImZsb2F0aW5nX2F0dHJpYnV0ZSIsInZhbHVlX2Rlc2NyaXB0aW9uIiwiaXRlbV9leHRlbnNpb24iLCJleGNlcHRpb25fZGVjbGFyYXRpb24iLCJjbGFzc190eXBlX2ZpZWxkIiwiY2xhc3NfdHlwZSIsInZmIiwibWYiLCJ2ZiQwIiwicGYiLCJjbGFzc19zaWduYXR1cmUiLCJjbCIsImNvIiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImt3ZCIsImNsYXNzX2ZpZWxkIiwic28iLCJjZSIsIm92ZiIsImNsYXNzX2V4cHIiLCJvdmYkMCIsIm92ZiQxIiwiYmluZCIsImJpbmRpbmciLCJjZSQwIiwiY2UkMSIsIm1vZHVsZV90eXBlJDEiLCJtb2R1bGVfdHlwZSIsIm10MiQwIiwibXQyIiwibXQxIiwibW9kdWxlX3R5cGUxIiwibXQiLCJ0ZCIsImxzJDAiLCJ0eXBlX2RlY2xhcmF0aW9uIiwibGkyIiwibXR5IiwibXR5JDAiLCJsaSQyIiwidGQkMCIsImxzJDEiLCJsaSQzIiwibHMkMiIsImxpMiQwIiwibGkkNCIsIm1vZHVsZV90eXBlMSQwIiwic2lnbmF0dXJlX2l0ZW0iLCJzaWduYXR1cmUiLCJ2ZCIsImludHJvIiwidHlwZV9kZWZfbGlzdCIsInRlIiwidHlwZV9leHRlbnNpb24iLCJlZCIsInBtZCIsImFsaWFzIiwicG1zIiwiZGVjbHMiLCJ0bCIsInBtZCQwIiwiYXR0cnMiLCJtZCIsImF0dHJzJDAiLCJtZCQwIiwib2QiLCJpbmNsIiwiY2xhc3NfZGVzY3JpcHRpb24iLCJzdHJ1Y3R1cmVfaXRlbSIsIm1lJDAiLCJtZTIiLCJtZTEiLCJtdCQwIiwibWUkMSIsInN0cnVjdHVyZSIsInBwX3ByaW50X3BleHBfZnVuY3Rpb24iLCJ0eXZhcnNfc3RyIiwidHl2YXJzIiwicGF0JDAiLCJ0eXAiLCJwYXQiLCJydCIsImFyZ3NfdHl2YXJzIiwiZ2FkdF9wYXR0ZXJuIiwidHl2YXJzJDAiLCJnYWR0X2V4cCIsImVfY3QiLCJ2YXJfbmFtZXMkMCIsInB0X2N0IiwicHRfdHl2YXJzIiwiY2hlY2tfdmFyaWFibGUiLCJ2YXJfbmFtZXMiLCJsb29wIiwiZGVzYyIsImNvcmVfdHlwZSQwIiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsInN0cmluZyIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJhcmciLCJmaWVsZCIsInByZl9kZXNjIiwicG9mX2Rlc2MiLCJ0JDAiLCJldHkiLCJ0eXZhcnMkMSIsInR5IiwiYmluZGluZyQwIiwibWF0Y2giLCJwdmFyIiwiZXZhciIsInJmJDAiLCJmJDAiLCJhcmdfb3B0IiwibWUkMiIsInBtYiIsImV4cHIiLCJsMiQwIiwibDIiLCJjbGFzc19jb25zdHJhaW50IiwiY2xhc3NfZGVjbGFyYXRpb24iLCJjbCQzIiwiY2wkMCIsImNsJDIiLCJjbCQxIiwiY29uc3RyIiwiZXhwb3J0ZWQiLCJ0eXBlX2RlY2wiLCJlcSIsInJlY29yZF9kZWNsYXJhdGlvbiIsImxibHMiLCJ0eXBlX3JlY29yZF9maWVsZCIsInBsZCIsInByaXYiLCJtYW5pZmVzdCIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uJDAiLCJwY2QiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInJlcHIiLCJ2YXJpYW50cyIsImNvbnN0cmFpbnRzIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yJDAiLCJyZXMiLCJ2YXJzIiwibmFtZSQwIiwicHBfdmFycyIsInZzIiwiciIsInBjX3JocyIsInBjX2d1YXJkIiwicGNfbGhzIiwic2ltcGxlX25hbWUiLCJsYmwiLCJkaXJlY3RpdmVfYXJndW1lbnQiLCJ0b3BsZXZlbF9waHJhc2UiLCJwZGlyX25hbWUiLCJwZGlyX2FyZyIsInN0cmluZ19vZl9leHByZXNzaW9uIiwic3RyaW5nX29mX3N0cnVjdHVyZSIsInRvcF9waHJhc2UiLCJwYXR0ZXJuJDAiLCJzaWduYXR1cmUkMCIsInN0cnVjdHVyZSQwIiwiY2xhc3NfZXhwciQwIiwiY2xhc3NfZmllbGQkMCIsImNsYXNzX3R5cGUkMCIsImNsYXNzX3NpZ25hdHVyZSQwIiwiY2xhc3NfdHlwZV9maWVsZCQwIiwibW9kdWxlX2V4cHIkMCIsIm1vZHVsZV90eXBlJDAiLCJzaWduYXR1cmVfaXRlbSQwIiwic3RydWN0dXJlX2l0ZW0kMCIsInR5cGVfZGVjbGFyYXRpb24kMCIsIm1pZ3JhdGlvbl9lcnJvciIsIm1pc3NpbmdfZmVhdHVyZSIsIm1rX2dob3N0X2F0dHIiLCJjb25jYXRfbGlzdF9saXQiLCJhcmdfZXhwciIsImhkIiwibWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGgiLCJoaWRkZW4iLCJ2aXNpYmxlIiwibWlncmF0aW9uX2F0dHIiLCJleHByJDAiLCJtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyIsImZpZWxkcyIsImxpZGVudF9sb2MiLCJtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQiLCJzdHJpIiwibmV3X2ZpZWxkcyIsIm5ld19leHByIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJ4MCIsImNvcHlfc3RydWN0dXJlIiwieDAkMCIsImNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIiwicGRpcl9sb2MiLCJjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCIsImNvcHlfbG9jIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsImNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MiLCJ4MSIsIngwJDEiLCJjb3B5X0xvbmdpZGVudF90IiwieDAkMiIsImNvcHlfZXhwcmVzc2lvbiIsInBleHBfYXR0cmlidXRlcyIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9sb2MiLCJwZXhwX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZXMiLCJjb3B5X2xvY2F0aW9uX3N0YWNrIiwiY29weV9leHByZXNzaW9uX2Rlc2MiLCJjb3B5X2NvbnN0YW50IiwieDIiLCJjb3B5X3ZhbHVlX2JpbmRpbmciLCJjb3B5X3JlY19mbGFnIiwidGNvbnN0cmFpbnQiLCJwYXJhbXMiLCJhdHRyIiwiZXhwciQzIiwiY2FzZXMiLCJjb3B5X2Nhc2UiLCJjb3B5X2NvcmVfdHlwZSIsImMxJDAiLCJleHByJDEiLCJleHByJDIiLCJwYXJhbSIsInBwYXJhbV9sb2MiLCJleHAwIiwiY29weV9wYXR0ZXJuIiwiY29weV9hcmdfbGFiZWwiLCJwZXhwX2Rlc2MkMCIsIngxJDAiLCJ4MSQxIiwieDAkMyIsIngxJDIiLCJ4MCQ0IiwieDAkNSIsIngxJDMiLCJ4MCQ2IiwieDEkNCIsIngwJDciLCJ4MSQ1IiwieDAkOCIsIngxJDYiLCJ4MCQ5IiwieDIkMCIsIngxJDciLCJ4MCQxMCIsIngwJDExIiwieDIkMSIsIngxJDgiLCJ4MCQxMiIsIngxJDkiLCJ4MCQxMyIsIngxJDEwIiwieDAkMTQiLCJ4NCIsIngzIiwieDIkMiIsIngxJDExIiwieDAkMTUiLCJjb3B5X2RpcmVjdGlvbl9mbGFnIiwieDEkMTIiLCJ4MCQxNiIsIngyJDMiLCJ4MSQxMyIsIngwJDE3IiwieDEkMTQiLCJ4MCQxOCIsImNvcHlfbGFiZWwiLCJ4MCQxOSIsIngxJDE1IiwieDAkMjAiLCJ4MCQyMSIsIngyJDQiLCJ4MSQxNiIsIngwJDIyIiwiY29weV9tb2R1bGVfZXhwciIsIngxJDE3IiwieDAkMjMiLCJjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciIsIngwJDI0IiwieDAkMjUiLCJ4MSQxOCIsIngwJDI2IiwieDAkMjciLCJjb3B5X2NsYXNzX3N0cnVjdHVyZSIsIngxJDE5IiwieDAkMjgiLCJ4MCQyOSIsIngxJDIwIiwieDAkMzAiLCJjb3B5X29wZW5faW5mb3MiLCJ4MCQzMSIsImNvcHlfbGV0b3AiLCJ4MCQzMiIsImNvcHlfZXh0ZW5zaW9uIiwiY29weV9iaW5kaW5nX29wIiwicGJvcF9sb2MiLCJwYm9wX2V4cCIsInBib3BfcGF0IiwicGJvcF9vcCIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9jb25zdHJhaW50IiwicHZiX2V4cHIiLCJwdmJfcGF0IiwiY29weV92YWx1ZV9jb25zdHJhaW50IiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2xvYyIsInBwYXRfZGVzYyIsImNvcHlfcGF0dGVybl9kZXNjIiwiY29weV9jbG9zZWRfZmxhZyIsImxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyIsImNvZXJjaW9uIiwiZ3JvdW5kIiwicHR5cF9hdHRyaWJ1dGVzIiwicHR5cF9sb2Nfc3RhY2siLCJwdHlwX2xvYyIsInB0eXBfZGVzYyIsImNvcHlfY29yZV90eXBlX2Rlc2MiLCJjb3B5X2xvY2F0aW9uIiwiY29weV9vYmplY3RfZmllbGQiLCJjb3B5X3Jvd19maWVsZCIsImNvcHlfcGFja2FnZV90eXBlIiwicHJmX2F0dHJpYnV0ZXMiLCJwcmZfbG9jIiwiY29weV9yb3dfZmllbGRfZGVzYyIsInBvZl9hdHRyaWJ1dGVzIiwicG9mX2xvYyIsImNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZSIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiY29weV9wYXlsb2FkIiwiY29weV9zaWduYXR1cmUiLCJjb3B5X3N0cnVjdHVyZV9pdGVtIiwicHN0cl9sb2MiLCJwc3RyX2Rlc2MiLCJjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MiLCJjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIiwiY29weV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV90eXBlX2V4dGVuc2lvbiIsImNvcHlfdHlwZV9leGNlcHRpb24iLCJjb3B5X21vZHVsZV9iaW5kaW5nIiwiY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfY2xhc3NfZGVjbGFyYXRpb24iLCJjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X2luY2x1ZGVfaW5mb3MiLCJjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24iLCJjb3B5X2NsYXNzX2luZm9zIiwiY29weV9jbGFzc19leHByIiwicGNsX2F0dHJpYnV0ZXMiLCJwY2xfbG9jIiwicGNsX2Rlc2MiLCJjb3B5X2NsYXNzX2V4cHJfZGVzYyIsImNvcHlfY2xhc3NfdHlwZSIsImNvcHlfb3Blbl9kZXNjcmlwdGlvbiIsInBjc3RyX2ZpZWxkcyIsInBjc3RyX3NlbGYiLCJjb3B5X2NsYXNzX2ZpZWxkIiwicGNmX2F0dHJpYnV0ZXMiLCJwY2ZfbG9jIiwicGNmX2Rlc2MiLCJjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MiLCJjb3B5X292ZXJyaWRlX2ZsYWciLCJjb3B5X2NsYXNzX2ZpZWxkX2tpbmQiLCJjb3B5X211dGFibGVfZmxhZyIsImNvcHlfcHJpdmF0ZV9mbGFnIiwiY29weV9vcGVuX2RlY2xhcmF0aW9uIiwicG1iX2xvYyIsInBtYl9hdHRyaWJ1dGVzIiwicG1iX2V4cHIiLCJwbWJfbmFtZSIsInBtb2RfYXR0cmlidXRlcyIsInBtb2RfbG9jIiwicG1vZF9kZXNjIiwiY29weV9tb2R1bGVfZXhwcl9kZXNjIiwiY29weV9mdW5jdG9yX3BhcmFtZXRlciIsImNvcHlfbW9kdWxlX3R5cGUiLCJwbXR5X2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfZGVzYyIsImNvcHlfbW9kdWxlX3R5cGVfZGVzYyIsImNvcHlfd2l0aF9jb25zdHJhaW50IiwiY29weV9zaWduYXR1cmVfaXRlbSIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwiY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIiwiY29weV9tb2R1bGVfZGVjbGFyYXRpb24iLCJjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24iLCJjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJjb3B5X2NsYXNzX3R5cGVfZGVzYyIsImNvcHlfY2xhc3Nfc2lnbmF0dXJlIiwicGNzaWdfZmllbGRzIiwicGNzaWdfc2VsZiIsImNvcHlfY2xhc3NfdHlwZV9maWVsZCIsInBjdGZfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9kZXNjIiwiY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MiLCJjb3B5X3ZpcnR1YWxfZmxhZyIsIngzJDAiLCJmMCIsInBjaV9hdHRyaWJ1dGVzIiwicGNpX2xvYyIsInBjaV9leHByIiwicGNpX25hbWUiLCJwY2lfcGFyYW1zIiwicGNpX3ZpcnQiLCJjb3B5X2luamVjdGl2aXR5IiwiY29weV92YXJpYW5jZSIsImNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwb3Blbl9hdHRyaWJ1dGVzIiwicG9wZW5fbG9jIiwicG9wZW5fb3ZlcnJpZGUiLCJwb3Blbl9leHByIiwicG10ZF9sb2MiLCJwbXRkX2F0dHJpYnV0ZXMiLCJwbXRkX3R5cGUiLCJwbXRkX25hbWUiLCJwbXNfbG9jIiwicG1zX2F0dHJpYnV0ZXMiLCJwbXNfbWFuaWZlc3QiLCJwbXNfbmFtZSIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwdHlleG5fYXR0cmlidXRlcyIsInB0eWV4bl9sb2MiLCJwdHlleG5fY29uc3RydWN0b3IiLCJwdHlleHRfYXR0cmlidXRlcyIsInB0eWV4dF9sb2MiLCJwdHlleHRfcHJpdmF0ZSIsInB0eWV4dF9jb25zdHJ1Y3RvcnMiLCJwdHlleHRfcGFyYW1zIiwicHR5ZXh0X3BhdGgiLCJwZXh0X2F0dHJpYnV0ZXMiLCJwZXh0X2xvYyIsInBleHRfa2luZCIsInBleHRfbmFtZSIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbiIsImNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIiwicHR5cGVfbG9jIiwicHR5cGVfYXR0cmlidXRlcyIsInB0eXBlX21hbmlmZXN0IiwicHR5cGVfcHJpdmF0ZSIsInB0eXBlX2tpbmQiLCJwdHlwZV9jc3RycyIsInB0eXBlX3BhcmFtcyIsInB0eXBlX25hbWUiLCJjb3B5X3R5cGVfa2luZCIsImNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24iLCJjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIiwicGNkX2F0dHJpYnV0ZXMiLCJwY2RfbG9jIiwicGNkX3JlcyIsInBjZF9hcmdzIiwicGNkX3ZhcnMiLCJwY2RfbmFtZSIsInBsZF9hdHRyaWJ1dGVzIiwicGxkX2xvYyIsInBsZF90eXBlIiwicGxkX211dGFibGUiLCJwbGRfbmFtZSIsInB2YWxfbG9jIiwicHZhbF9hdHRyaWJ1dGVzIiwicHZhbF9wcmltIiwicHZhbF90eXBlIiwicHZhbF9uYW1lIiwiZXh0cmFjdF9hdHRyIiwicSIsIm90aGVyX2F0dHJzIiwib3B0X2RlZmF1bHQiLCJhcmdfbGFiZWwiLCJ0YWtlX2JvZHkiLCJhcmdfbGFiZWwkMSIsIm9wdF9kZWZhdWx0JDEiLCJwYXQkMSIsInBwYXJhbV9kZXNjIiwiYWNjJDEiLCJhcmdfbGlzdCIsImMyJDAiLCJ0eXBlX2NvbnN0cmFpbnQiLCJvcHRfZGVmYXVsdCQwIiwiYXJnX2xhYmVsJDAiLCJ4MCQzMyIsIngyJDUiLCJ4MSQyMSIsIngwJDM0IiwibWVyZ2VfbG9jIiwiZ2hvc3RfbG9jIiwiZ2hvc3RfY29uc3RyYWludCIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJjb25zdHJhaW5fcGF0IiwidHlwJDAiLCJjb2VyY2lvbiQwIiwicHR5cF9sb2MkMCIsInR5cCQzIiwicHZiX3BhdCQzIiwiZ3JvdW5kJDAiLCJwZXhwX2xvYyQwIiwicHZiX2V4cHIkMyIsInB2Yl9leHByJDEiLCJwdmJfcGF0JDEiLCJ0eXAkMiIsInR5cCQxIiwidHlwX3BvbHkiLCJwdmJfcGF0JDIiLCJwdmJfZXhwciQyIiwidmFyJDAiLCJsb2MkMCIsImVtcHR5X3N0cnVjdCIsImxvY19naG9zdCIsImxvY19lbmQiLCJsb2Nfc3RhcnQiLCJjb3B5X3Bvc2l0aW9uIiwicG9zX2NudW0iLCJwb3NfYm9sIiwicG9zX2xudW0iLCJwb3NfZm5hbWUiLCJyZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIiwidHlfZXh0IiwicnQkMCIsInZhbHVlX3BhdHRlcm4iLCJ2YWx1ZV9leHAiLCJpbm5lcl9lIiwiZXh0ZXJuX2N0IiwiZXh0ZXJuX2N0JDAiLCJwdF90eXZhcnMkMCIsIndpdGhfY29uc3RyYWludCIsInR5X3ZhcnMiLCJwdmJfY29uc3RyYWludCQwIiwiY29lcmNlIiwiZ3IiLCJwdmJfY29uc3RyYWludCQxIiwiaXNfdW5pdCIsImNvcHlfZXhwciIsImNvcHlfY2FzZXMiLCJjb3B5X3BhdCIsImNvcHlfdHlwIiwibWFwX29wdGlvbiIsImNvcHlfb3B0aW9uIiwiY29weV9ib29sIiwiY29weV9sb25naWRlbnQiLCJ4MF9sb2MiLCJ4MiQ2IiwiYXQiLCJhdGF0IiwicG9wZW5fbGlkIiwid3JhcCIsImN0eSIsImxvYyQxIiwibm9sb2MiLCJmcm9tX2xvYyIsInBvcyIsImluamVjdF9wcmVkZWZfb3B0aW9uIiwiZCIsImlkZW50IiwidHlwZV9kZWNsYXJhdGlvbnMiLCJyZWNmbGFnIiwidHlwZXMiLCJleHRyYWN0X3ByZWRlZl9vcHRpb24iLCJpc19ub25yZWMiLCJ0eXBlcyQwIiwiaXNfa2V5d29yZCIsImluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaSIsInRvX3N0cmluZyIsIm1hcCIsImYiLCJvIiwidiIsImRlZmF1bHRfbG9jIiwic2V0X3JlZiIsInIiLCJ3aXRoX2RlZmF1bHRfbG9jIiwibCIsInJlZiIsImJhY2t1cCIsIngiLCJlJDAiLCJlIiwiaW50ZWdlciIsInN1ZmZpeCIsImkiLCJpbnQkMCIsImkkMCIsImludDMyIiwic3VmZml4JDAiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJjaGFyJDAiLCJjIiwic3RyaW5nIiwicXVvdGF0aW9uX2RlbGltaXRlciIsInMiLCJsb2MiLCJtayIsIm5hbWUiLCJwYXlsb2FkIiwibWskMCIsImQiLCJhdHRycyIsImF0dHIiLCJhIiwiYW55IiwidmFyJDAiLCJhcnJvdyIsImIiLCJ0dXBsZSIsImNvbnN0ciIsIm9iamVjdCIsImNsYXNzJDAiLCJhbGlhcyIsInZhcmlhbnQiLCJwb2x5IiwicGFja2FnZSQwIiwiZXh0ZW5zaW9uIiwiZm9yY2VfcG9seSIsInQiLCJ2YXJpZnlfY29uc3RydWN0b3JzIiwidmFyX25hbWVzIiwiY2hlY2tfdmFyaWFibGUiLCJ2bCIsInZhcl9uYW1lcyQwIiwibG9vcCIsImRlc2MiLCJjb3JlX3R5cGUiLCJjb3JlX3R5cGUkMCIsImxhYmVsIiwibHN0IiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJ0eXAiLCJuIiwiYXJnIiwicyQwIiwiZmllbGQiLCJwcmZfZGVzYyIsInBvZl9kZXNjIiwidCQwIiwibWskMSIsImF0dHIkMCIsImFueSQwIiwidmFyJDEiLCJhbGlhcyQwIiwiY29uc3RhbnQiLCJpbnRlcnZhbCIsInR1cGxlJDAiLCJjb25zdHJ1Y3QiLCJ2YXJpYW50JDAiLCJyZWNvcmQiLCJhcnJheSIsIm9yIiwiY29uc3RyYWludCIsInR5cGUiLCJsYXp5IiwidW5wYWNrIiwib3BlbiIsImV4Y2VwdGlvbiIsImV4dGVuc2lvbiQwIiwibWskMiIsImF0dHIkMSIsImlkZW50IiwiY29uc3RhbnQkMCIsImxldCQwIiwiZnVuIiwiZnVuY3Rpb24kMCIsImFwcGx5IiwidHJ5JDAiLCJ0dXBsZSQxIiwiY29uc3RydWN0JDAiLCJ2YXJpYW50JDEiLCJyZWNvcmQkMCIsInNldGZpZWxkIiwiYXJyYXkkMCIsImlmdGhlbmVsc2UiLCJzZXF1ZW5jZSIsIndoaWxlJDAiLCJmb3IkMCIsImNvbnN0cmFpbnQkMCIsImNvZXJjZSIsInNlbmQiLCJuZXckMCIsInNldGluc3R2YXIiLCJvdmVycmlkZSIsImxldG1vZHVsZSIsImxldGV4Y2VwdGlvbiIsImFzc2VydCIsImxhenkkMCIsInBvbHkkMCIsIm9iamVjdCQwIiwibmV3dHlwZSIsInBhY2siLCJvcGVuJDAiLCJsZXRvcCIsImFuZHMiLCJib2R5IiwiZXh0ZW5zaW9uJDEiLCJ1bnJlYWNoYWJsZSIsImNhc2UkMCIsImxocyIsImd1YXJkIiwicmhzIiwiYmluZGluZ19vcCIsIm9wIiwicGF0IiwiZXhwIiwibWskMyIsImF0dHIkMiIsImlkZW50JDAiLCJhbGlhcyQxIiwic2lnbmF0dXJlIiwiZnVuY3RvciIsIndpdGgkMCIsInR5cGVvZiQwIiwiZXh0ZW5zaW9uJDIiLCJtayQ0IiwiYXR0ciQzIiwiaWRlbnQkMSIsInN0cnVjdHVyZSIsImZ1bmN0b3IkMCIsImFwcGx5JDAiLCJtMSIsIm0yIiwiY29uc3RyYWludCQxIiwibSIsIm10eSIsInVucGFjayQwIiwiZXh0ZW5zaW9uJDMiLCJtayQ1IiwidmFsdWUiLCJ0eXBlJDAiLCJyZWNfZmxhZyIsInR5cGVfc3Vic3QiLCJ0eXBlX2V4dGVuc2lvbiIsImV4Y2VwdGlvbiQwIiwibW9kdWxlIiwibW9kX3N1YnN0IiwicmVjX21vZHVsZSIsIm1vZHR5cGUiLCJvcGVuJDEiLCJpbmNsdWRlIiwiY2xhc3MkMSIsImNsYXNzX3R5cGUiLCJleHRlbnNpb24kNCIsImF0dHJpYnV0ZSIsIm1rJDYiLCJldmFsJDAiLCJ2YWx1ZSQwIiwicHJpbWl0aXZlIiwidHlwZSQxIiwidHlwZV9leHRlbnNpb24kMCIsImV4Y2VwdGlvbiQxIiwibW9kdWxlJDAiLCJyZWNfbW9kdWxlJDAiLCJtb2R0eXBlJDAiLCJvcGVuJDIiLCJjbGFzcyQyIiwiY2xhc3NfdHlwZSQwIiwiaW5jbHVkZSQwIiwiZXh0ZW5zaW9uJDUiLCJhdHRyaWJ1dGUkMCIsIm1rJDciLCJhdHRyJDQiLCJjb25zdHIkMCIsInN0cnVjdHVyZSQwIiwiZnVuJDAiLCJhcHBseSQxIiwibGV0JDEiLCJjb25zdHJhaW50JDIiLCJleHRlbnNpb24kNiIsIm9wZW4kMyIsIm1rJDgiLCJhdHRyJDUiLCJjb25zdHIkMSIsInNpZ25hdHVyZSQwIiwiYXJyb3ckMCIsImV4dGVuc2lvbiQ3Iiwib3BlbiQ0IiwibWskOSIsImluaGVyaXQiLCJ2YWwiLCJtZXRob2QiLCJjb25zdHJhaW50JDMiLCJleHRlbnNpb24kOCIsImF0dHJpYnV0ZSQxIiwiYXR0ciQ2IiwibWskMTAiLCJpbmhlcml0JDAiLCJ2YWwkMCIsIm1ldGhvZCQwIiwiY29uc3RyYWludCQ0IiwiaW5pdGlhbGl6ZXIiLCJleHRlbnNpb24kOSIsImF0dHJpYnV0ZSQyIiwidmlydHVhbCIsImN0IiwiY29uY3JldGUiLCJhdHRyJDciLCJtayQxMSIsInByaW0iLCJtayQxMiIsIm1rJDEzIiwic3luIiwibWskMTQiLCJtayQxNSIsImV4cHIiLCJtayQxNiIsIm1rJDE3IiwibWV4cHIiLCJtayQxOCIsIm1rJDE5IiwidmlydCIsInBhcmFtcyIsIm1rJDIwIiwibWFuaWZlc3QiLCJjc3RycyIsImtpbmQiLCJwcml2IiwiY29uc3RydWN0b3IiLCJyZXMiLCJ2YXJzIiwiYXJncyIsImZpZWxkJDAiLCJtdXQiLCJtayQyMSIsInBhdGgiLCJjb25zdHJ1Y3RvcnMiLCJta19leGNlcHRpb24iLCJjb25zdHJ1Y3RvciQwIiwiZGVjbCIsInJlYmluZCIsImxpZCIsIm1rJDIyIiwic2VsZiIsImZpZWxkcyIsIm1rJDIzIiwibWskMjQiLCJ0YWciLCJjb25zdCQwIiwidHlzIiwiaW5oZXJpdCQxIiwidHkiLCJtayQyNSIsInRhZyQwIiwiaW5oZXJpdCQyIiwic3RyaW5nX3ZlcnNpb24iLCJzdHJpbmdfdmVyc2lvbiQwIiwic3RyaW5nX3ZlcnNpb24kMSIsInN0cmluZ192ZXJzaW9uJDIiLCJzdHJpbmdfdmVyc2lvbiQzIiwic3RyaW5nX3ZlcnNpb24kNCIsInN0cmluZ192ZXJzaW9uJDUiLCJzdHJpbmdfdmVyc2lvbiQ2Iiwic3RyaW5nX3ZlcnNpb24kNyIsInN0cmluZ192ZXJzaW9uJDgiLCJzdHJpbmdfdmVyc2lvbiQ5Iiwic3RyaW5nX3ZlcnNpb24kMTAiLCJzdHJpbmdfdmVyc2lvbiQxMSIsInN0cmluZ192ZXJzaW9uJDEyIiwic3RyaW5nX3ZlcnNpb24kMTMiLCJzdHJpbmdfdmVyc2lvbiQxNCIsIm1pZ3JhdGlvbl9pbmZvIiwiaWQiLCJtaWdyYXRpb25faWRlbnRpdHkiLCJjb21wb3NlIiwiZyIsIm1pZ3JhdGlvbl9mdW5jdGlvbnMiLCJpc191bmRlZmluZWQiLCJpbW1lZGlhdGVfbWlncmF0aW9uIiwiQSIsImRpcmVjdGlvbiIsInZlcnNpb24iLCJ0byIsImZ1bnMiLCJCIiwibSQxIiwiVG8iLCJhYiIsInRvMiIsImJjIiwibSQwIiwiY29weV9zdHJ1Y3R1cmVfaXRlbSIsImNvcHlfc2lnbmF0dXJlX2l0ZW0iLCJjb3B5X21vZHVsZV90eXBlIiwiY29weV9tb2R1bGVfZXhwciIsImNvcHlfY2xhc3NfdHlwZV9maWVsZCIsImNvcHlfY2xhc3Nfc2lnbmF0dXJlIiwiY29weV9jbGFzc190eXBlIiwiY29weV9jbGFzc19maWVsZCIsImNvcHlfY2xhc3NfZXhwciIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiY29weV90eXBlX2V4dGVuc2lvbiIsImNvcHlfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfY2FzZSIsImNvcHlfcGF0dGVybiIsImNvcHlfZXhwcmVzc2lvbiIsImNvcHlfY29yZV90eXBlIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJjb3B5X3NpZ25hdHVyZSIsImNvcHlfc3RydWN0dXJlIiwibWlncmF0aW9uX2luZm8kMCIsInZlcnNpb24kMCIsIm1pZ3JhdGlvbl9pbmZvJDEiLCJ2ZXJzaW9uJDEiLCJtaWdyYXRpb25faW5mbyQyIiwidmVyc2lvbiQyIiwibWlncmF0aW9uX2luZm8kMyIsInZlcnNpb24kMyIsIm1pZ3JhdGlvbl9pbmZvJDQiLCJ2ZXJzaW9uJDQiLCJtaWdyYXRpb25faW5mbyQ1IiwidmVyc2lvbiQ1IiwibWlncmF0aW9uX2luZm8kNiIsInZlcnNpb24kNiIsIm1pZ3JhdGlvbl9pbmZvJDciLCJ2ZXJzaW9uJDciLCJtaWdyYXRpb25faW5mbyQ4IiwidmVyc2lvbiQ4IiwibWlncmF0aW9uX2luZm8kOSIsInZlcnNpb24kOSIsIm1pZ3JhdGlvbl9pbmZvJDEwIiwidmVyc2lvbiQxMCIsIm1pZ3JhdGlvbl9pbmZvJDExIiwidmVyc2lvbiQxMSIsIm1pZ3JhdGlvbl9pbmZvJDEyIiwidmVyc2lvbiQxMiIsIm1pZ3JhdGlvbl9pbmZvJDEzIiwidmVyc2lvbiQxMyIsIm1pZ3JhdGlvbl9pbmZvJDE0IiwidmVyc2lvbiQxNCIsImFsbF92ZXJzaW9ucyIsImZyb21fbWFnaWMiLCJtYWdpYyIsImFsbF92ZXJzaW9uc190b3BfZG93biIsInRhaWwiLCJWZXJzaW9uIiwib2Zfb2NhbWwiLCJub2RlIiwieSIsInRvX29jYW1sIiwib2Zfb2NhbWxfbWFwcGVyIiwiaXRlbSIsImN0eHQiLCJ0b19vY2FtbF9tYXBwZXIiLCJpbXBsZW1lbnRhdGlvbiIsImxleGJ1ZiIsImludGVyZmFjZSQwIiwidG9wbGV2ZWxfcGhyYXNlIiwidXNlX2ZpbGUiLCJleHByZXNzaW9uIiwicGF0dGVybiIsImRlZmF1bHRfcHJpbnRfd2FybmluZyIsImFib3V0X2l0ZV9icmFuY2hfcmVmIiwiY2FyZV9hYm91dF9pdGVfYnJhbmNoIiwiYWJvdXRfaXRlX2JyYW5jaCIsInNlbGZfMSIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwicG9zX2ZuYW1lIiwicG9zX2ZuYW1lJDAiLCJwb3NfbG51bSQwIiwicG9zX2JvbCQwIiwicG9zX2NudW0kMCIsImxvY19naG9zdCIsImxvY19lbmQiLCJsb2Nfc3RhcnQiLCJsb2Nfc3RhcnQkMCIsImxvY19lbmQkMCIsImxvY19naG9zdCQwIiwidHh0IiwidHh0JDAiLCJsb2MkMCIsImEkMCIsImEkMSIsImEkMiIsImIkMCIsImIkMSIsImEkMyIsImEkNCIsImIkMiIsImMkMCIsImIkMyIsImEkNSIsImEkNiIsImIkNCIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiYXR0cl9uYW1lJDAiLCJhdHRyX3BheWxvYWQkMCIsImF0dHJfbG9jJDAiLCJwdHlwX2F0dHJpYnV0ZXMiLCJwdHlwX2xvY19zdGFjayIsInB0eXBfbG9jIiwicHR5cF9kZXNjIiwicHR5cF9kZXNjJDAiLCJwdHlwX2xvYyQwIiwicHR5cF9sb2Nfc3RhY2skMCIsInB0eXBfYXR0cmlidXRlcyQwIiwiYSQ3IiwiYSQ4IiwiYiQ1IiwiYSQ5IiwiYSQxMCIsImIkNiIsImIkNyIsImEkMTEiLCJhJDEyIiwiYiQ4IiwiYyQxIiwiYiQ5IiwiYSQxMyIsImEkMTQiLCJiJDEwIiwiYyQyIiwiYiQxMSIsImEkMTUiLCJhJDE2IiwiYiQxMiIsImEkMTciLCJhJDE4IiwiYSQxOSIsImEkMjAiLCJwcmZfYXR0cmlidXRlcyIsInByZl9sb2MiLCJwcmZfZGVzYyQwIiwicHJmX2xvYyQwIiwicHJmX2F0dHJpYnV0ZXMkMCIsInBvZl9hdHRyaWJ1dGVzIiwicG9mX2xvYyIsInBvZl9kZXNjJDAiLCJwb2ZfbG9jJDAiLCJwb2ZfYXR0cmlidXRlcyQwIiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2xvYyIsInBwYXRfZGVzYyIsInBwYXRfZGVzYyQwIiwicHBhdF9sb2MkMCIsInBwYXRfbG9jX3N0YWNrJDAiLCJwcGF0X2F0dHJpYnV0ZXMkMCIsImEkMjEiLCJhJDIyIiwiYSQyMyIsImEkMjQiLCJhJDI1IiwiYSQyNiIsImEkMjciLCJhJDI4IiwiYSQyOSIsImEkMzAiLCJiJDEzIiwiYSQzMSIsImEkMzIiLCJiJDE0IiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsInBleHBfZGVzYyQwIiwicGV4cF9sb2MkMCIsInBleHBfbG9jX3N0YWNrJDAiLCJwZXhwX2F0dHJpYnV0ZXMkMCIsImQkMCIsImIkMTUiLCJiJDE2IiwiYyQzIiwiYiQxNyIsImIkMTgiLCJjJDQiLCJjJDUiLCJiJDE5IiwiYiQyMCIsImMkNiIsImIkMjEiLCJiJDIyIiwiYiQyMyIsImEkMzMiLCJhJDM0IiwiYiQyNCIsImQkMSIsImMkNyIsImIkMjUiLCJhJDM1IiwiYSQzNiIsImIkMjYiLCJjJDgiLCJkJDIiLCJiJDI3IiwiYSQzNyIsImEkMzgiLCJiJDI4IiwiYyQ5IiwiYiQyOSIsImEkMzkiLCJhJDQwIiwiYiQzMCIsImMkMTAiLCJiJDMxIiwiYSQ0MSIsImEkNDIiLCJiJDMyIiwiYSQ0MyIsImEkNDQiLCJiJDMzIiwiYSQ0NSIsImEkNDYiLCJiJDM0IiwiYSQ0NyIsImEkNDgiLCJjJDExIiwiYiQzNSIsImEkNDkiLCJhJDUwIiwiYiQzNiIsImMkMTIiLCJiJDM3IiwiYSQ1MSIsImEkNTIiLCJiJDM4IiwiYSQ1MyIsImEkNTQiLCJhJDU1IiwiYSQ1NiIsImIkMzkiLCJhJDU3IiwiYSQ1OCIsImIkNDAiLCJhJDU5IiwiYSQ2MCIsImIkNDEiLCJhJDYxIiwiYSQ2MiIsImIkNDIiLCJhJDYzIiwiYSQ2NCIsImIkNDMiLCJhJDY1IiwiYSQ2NiIsImIkNDQiLCJhJDY3IiwiYSQ2OCIsImEkNjkiLCJhJDcwIiwicGNfcmhzIiwicGNfZ3VhcmQiLCJwY19saHMiLCJwY19saHMkMCIsInBjX2d1YXJkJDAiLCJwY19yaHMkMCIsImFuZHMkMCIsImJvZHkkMCIsInBib3BfbG9jIiwicGJvcF9leHAiLCJwYm9wX3BhdCIsInBib3Bfb3AiLCJwYm9wX29wJDAiLCJwYm9wX3BhdCQwIiwicGJvcF9leHAkMCIsInBib3BfbG9jJDAiLCJwdmFsX2xvYyIsInB2YWxfYXR0cmlidXRlcyIsInB2YWxfcHJpbSIsInB2YWxfdHlwZSIsInB2YWxfbmFtZSIsInB2YWxfbmFtZSQwIiwicHZhbF90eXBlJDAiLCJwdmFsX3ByaW0kMCIsInB2YWxfYXR0cmlidXRlcyQwIiwicHZhbF9sb2MkMCIsInB0eXBlX2xvYyIsInB0eXBlX2F0dHJpYnV0ZXMiLCJwdHlwZV9tYW5pZmVzdCIsInB0eXBlX3ByaXZhdGUiLCJwdHlwZV9raW5kIiwicHR5cGVfY3N0cnMiLCJwdHlwZV9wYXJhbXMiLCJwdHlwZV9uYW1lIiwicHR5cGVfbmFtZSQwIiwicHR5cGVfcGFyYW1zJDAiLCJwdHlwZV9jc3RycyQwIiwicHR5cGVfa2luZCQwIiwicHR5cGVfcHJpdmF0ZSQwIiwicHR5cGVfbWFuaWZlc3QkMCIsInB0eXBlX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMiLCJwbGRfbG9jIiwicGxkX3R5cGUiLCJwbGRfbXV0YWJsZSIsInBsZF9uYW1lIiwicGxkX25hbWUkMCIsInBsZF9tdXRhYmxlJDAiLCJwbGRfdHlwZSQwIiwicGxkX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMkMCIsInBjZF9hdHRyaWJ1dGVzIiwicGNkX2xvYyIsInBjZF9yZXMiLCJwY2RfYXJncyIsInBjZF92YXJzIiwicGNkX25hbWUiLCJwY2RfbmFtZSQwIiwicGNkX3ZhcnMkMCIsInBjZF9hcmdzJDAiLCJwY2RfcmVzJDAiLCJwY2RfbG9jJDAiLCJwY2RfYXR0cmlidXRlcyQwIiwicHR5ZXh0X2F0dHJpYnV0ZXMiLCJwdHlleHRfbG9jIiwicHR5ZXh0X3ByaXZhdGUiLCJwdHlleHRfY29uc3RydWN0b3JzIiwicHR5ZXh0X3BhcmFtcyIsInB0eWV4dF9wYXRoIiwicHR5ZXh0X3BhdGgkMCIsInB0eWV4dF9wYXJhbXMkMCIsInB0eWV4dF9jb25zdHJ1Y3RvcnMkMCIsInB0eWV4dF9wcml2YXRlJDAiLCJwdHlleHRfbG9jJDAiLCJwdHlleHRfYXR0cmlidXRlcyQwIiwicGV4dF9hdHRyaWJ1dGVzIiwicGV4dF9sb2MiLCJwZXh0X2tpbmQiLCJwZXh0X25hbWUiLCJwZXh0X25hbWUkMCIsInBleHRfa2luZCQwIiwicGV4dF9sb2MkMCIsInBleHRfYXR0cmlidXRlcyQwIiwicHR5ZXhuX2F0dHJpYnV0ZXMiLCJwdHlleG5fbG9jIiwicHR5ZXhuX2NvbnN0cnVjdG9yIiwicHR5ZXhuX2NvbnN0cnVjdG9yJDAiLCJwdHlleG5fbG9jJDAiLCJwdHlleG5fYXR0cmlidXRlcyQwIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJwY3R5X2Rlc2MkMCIsInBjdHlfbG9jJDAiLCJwY3R5X2F0dHJpYnV0ZXMkMCIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJwY3NpZ19zZWxmJDAiLCJwY3NpZ19maWVsZHMkMCIsInBjdGZfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9kZXNjIiwicGN0Zl9kZXNjJDAiLCJwY3RmX2xvYyQwIiwicGN0Zl9hdHRyaWJ1dGVzJDAiLCJwY2lfYXR0cmlidXRlcyIsInBjaV9sb2MiLCJwY2lfZXhwciIsInBjaV9uYW1lIiwicGNpX3BhcmFtcyIsInBjaV92aXJ0IiwicGNpX3ZpcnQkMCIsInBjaV9wYXJhbXMkMCIsInBjaV9uYW1lJDAiLCJwY2lfZXhwciQwIiwicGNpX2xvYyQwIiwicGNpX2F0dHJpYnV0ZXMkMCIsInBjbF9hdHRyaWJ1dGVzIiwicGNsX2xvYyIsInBjbF9kZXNjIiwicGNsX2Rlc2MkMCIsInBjbF9sb2MkMCIsInBjbF9hdHRyaWJ1dGVzJDAiLCJwY3N0cl9maWVsZHMiLCJwY3N0cl9zZWxmIiwicGNzdHJfc2VsZiQwIiwicGNzdHJfZmllbGRzJDAiLCJwY2ZfYXR0cmlidXRlcyIsInBjZl9sb2MiLCJwY2ZfZGVzYyIsInBjZl9kZXNjJDAiLCJwY2ZfbG9jJDAiLCJwY2ZfYXR0cmlidXRlcyQwIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJwbXR5X2Rlc2MkMCIsInBtdHlfbG9jJDAiLCJwbXR5X2F0dHJpYnV0ZXMkMCIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwicHNpZ19kZXNjJDAiLCJwc2lnX2xvYyQwIiwicG1kX2xvYyIsInBtZF9hdHRyaWJ1dGVzIiwicG1kX3R5cGUiLCJwbWRfbmFtZSIsInBtZF9uYW1lJDAiLCJwbWRfdHlwZSQwIiwicG1kX2F0dHJpYnV0ZXMkMCIsInBtZF9sb2MkMCIsInBtc19sb2MiLCJwbXNfYXR0cmlidXRlcyIsInBtc19tYW5pZmVzdCIsInBtc19uYW1lIiwicG1zX25hbWUkMCIsInBtc19tYW5pZmVzdCQwIiwicG1zX2F0dHJpYnV0ZXMkMCIsInBtc19sb2MkMCIsInBtdGRfbG9jIiwicG10ZF9hdHRyaWJ1dGVzIiwicG10ZF90eXBlIiwicG10ZF9uYW1lIiwicG10ZF9uYW1lJDAiLCJwbXRkX3R5cGUkMCIsInBtdGRfYXR0cmlidXRlcyQwIiwicG10ZF9sb2MkMCIsInBvcGVuX2F0dHJpYnV0ZXMiLCJwb3Blbl9sb2MiLCJwb3Blbl9vdmVycmlkZSIsInBvcGVuX2V4cHIiLCJwb3Blbl9leHByJDAiLCJwb3Blbl9vdmVycmlkZSQwIiwicG9wZW5fbG9jJDAiLCJwb3Blbl9hdHRyaWJ1dGVzJDAiLCJwaW5jbF9hdHRyaWJ1dGVzIiwicGluY2xfbG9jIiwicGluY2xfbW9kIiwicGluY2xfbW9kJDAiLCJwaW5jbF9sb2MkMCIsInBpbmNsX2F0dHJpYnV0ZXMkMCIsInBtb2RfYXR0cmlidXRlcyIsInBtb2RfbG9jIiwicG1vZF9kZXNjIiwicG1vZF9kZXNjJDAiLCJwbW9kX2xvYyQwIiwicG1vZF9hdHRyaWJ1dGVzJDAiLCJwc3RyX2xvYyIsInBzdHJfZGVzYyIsInBzdHJfZGVzYyQwIiwicHN0cl9sb2MkMCIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9leHByIiwicHZiX3BhdCIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwicG1iX2xvYyIsInBtYl9hdHRyaWJ1dGVzIiwicG1iX2V4cHIiLCJwbWJfbmFtZSIsInBtYl9uYW1lJDAiLCJwbWJfZXhwciQwIiwicG1iX2F0dHJpYnV0ZXMkMCIsInBtYl9sb2MkMCIsInBkaXJfbG9jIiwicGRpcl9hcmciLCJwZGlyX25hbWUiLCJwZGlyX25hbWUkMCIsInBkaXJfYXJnJDAiLCJwZGlyX2xvYyQwIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsInBkaXJhX2Rlc2MkMCIsInBkaXJhX2xvYyQwIiwic2VsZl8yIiwic2VsZl8zIiwiYWNjIiwiYWNjJDAiLCJhY2MkMSIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsImFjYyQ1IiwiYWNjJDYiLCJhY2MkNyIsImFjYyQ4IiwiYWNjJDkiLCJhY2MkMTAiLCJhY2MkMTEiLCJhY2MkMTIiLCJhY2MkMTMiLCJhY2MkMTQiLCJhY2MkMTUiLCJhY2MkMTYiLCJhY2MkMTciLCJhY2MkMTgiLCJhY2MkMTkiLCJhY2MkMjAiLCJhY2MkMjEiLCJhY2MkMjIiLCJhY2MkMjMiLCJhY2MkMjQiLCJhY2MkMjUiLCJhY2MkMjYiLCJhY2MkMjciLCJhY2MkMjgiLCJhY2MkMjkiLCJhY2MkMzAiLCJhY2MkMzEiLCJhY2MkMzIiLCJhY2MkMzMiLCJhY2MkMzQiLCJhY2MkMzUiLCJhY2MkMzYiLCJhY2MkMzciLCJhY2MkMzgiLCJhY2MkMzkiLCJhY2MkNDAiLCJhY2MkNDEiLCJhY2MkNDIiLCJhY2MkNDMiLCJhY2MkNDQiLCJhY2MkNDUiLCJhY2MkNDYiLCJhY2MkNDciLCJhY2MkNDgiLCJhY2MkNDkiLCJhY2MkNTAiLCJhY2MkNTEiLCJhY2MkNTIiLCJhY2MkNTMiLCJhY2MkNTQiLCJhY2MkNTUiLCJzZWxmXzQiLCJhY2MkNTYiLCJhY2MkNTciLCJhY2MkNTgiLCJhY2MkNTkiLCJhY2MkNjAiLCJhY2MkNjEiLCJhY2MkNjIiLCJhY2MkNjMiLCJhY2MkNjQiLCJhY2MkNjUiLCJhY2MkNjYiLCJhY2MkNjciLCJhY2MkNjgiLCJzZWxmXzUiLCJjdHgiLCJzZWxmXzYiLCJzZWxmXzciLCJ0b19leHRlbnNpb24iLCJlcnJvciIsInN1Yl9tc2dzIiwibWFpbl9tc2ciLCJta19zdHJpbmdfY29uc3RhbnQiLCJleHRlbnNpb25fb2Zfc3ViX21zZyIsInN1Yl9tc2ciLCJyZWdpc3Rlcl9lcnJvcl9vZl9leG4iLCJtZXNzYWdlIiwic2V0X21lc3NhZ2UiLCJtYWtlIiwic3ViIiwic3ViJDAiLCJ1cGRhdGVfbG9jIiwiZ2V0X2xvY2F0aW9uIiwib2ZfZXhuIiwicmFpc2UiLCJwcmludCIsImRpZmZfY29tbWFuZCIsImZpbGUxIiwiZmlsZTIiLCJleHRyYV9wYXRkaWZmX2FyZ3MiLCJ1c2VfY29sb3IiLCJleGVjIiwiY21kIiwiY21kJDAiLCJuIiwicyIsImFyZ3MiLCJlcnJfY29kZSIsImFsbCIsInJlZ2lzdGVyIiwibmFtZSIsImRlcml2ZXIiLCJsb29rdXAiLCJkcnYiLCJkZXJpdmVycyIsImFjYyIsIngiLCJzZWxmXzEiLCJmIiwieCQwIiwic2VsZl8yIiwiYWNjIiwic2VsZl8zIiwibG9vcCIsImwiLCJsJDAiLCJhY2MkMCIsImwkMSIsImFjYyQxIiwiYSIsInIiLCJpIiwic2VsZl80IiwieCQxIiwibGVuIiwiYSQwIiwic2VsZl81IiwiY3R4Iiwic2VsZl82Iiwic2VsZl83IiwicmVzIiwicmVzX2hlYWQiLCJyZXNfdGFpbCIsImZsYWdzJDAiLCJmbGFncyIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJtaW4iLCJtYXgiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsIm1pbiQwIiwibWF4JDAiLCJ0b19zdHJpbmciLCJjb21wYXJlJDEiLCJlcXVhbCQxIiwic3ltYm9sJDExIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2IiwibWluJDEiLCJtYXgkMSIsInN1Yl9zdHJpbmciLCJ0IiwicG9zIiwibGVuIiwiYmxpdF9zdHJpbmciLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNvbXBhcmUkMyIsImVxdWFsJDMiLCJzeW1ib2wkMTciLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJtaW4kMiIsIm1heCQyIiwicHJvdGVjdHgiLCJ4IiwiZiIsImZpbmFsbHkkMCIsInkiLCJleG4kMCIsImV4biIsInRvX3N0cmluZyQxIiwiY29tcGFyZSQ0IiwiZXF1YWwkNCIsInN5bWJvbCQyMyIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsIm1pbiQzIiwibWF4JDMiLCJpZCIsInNldCIsImtleSIsImRhdGEiLCJhZGQiLCJhZGRfZXhuIiwiZmluZF9vcHQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsImRhdGEkMCIsImFkZF9hbGlzdCIsImFsaXN0IiwiYWxpc3QkMCIsImFsaXN0JDEiLCJvZl9hbGlzdCIsInNpemUiLCJzaXplJDAiLCJzaXplJDEiLCJlcnJvciIsIm9mX2FsaXN0X2V4biIsImNyZWF0ZSQwIiwiZmlsZSIsImJpbmFyeSIsIndpdGhfZmlsZSIsImZpbGVuYW1lIiwiaW5wdXRfYWxsIiwiYnVmIiwiY2hhciQwIiwicmVhZF9hbGwiLCJtYXhfaW50IiwidG9fc3RyaW5nJDIiLCJjb21wYXJlJDUiLCJlcXVhbCQ1Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwic3ltYm9sJDMxIiwic3ltYm9sJDMyIiwic3ltYm9sJDMzIiwic3ltYm9sJDM0IiwibWluJDQiLCJtYXgkNCIsInJldl9tYXBpIiwibGlzdCIsImxpc3QkMCIsImkiLCJhY2MiLCJ0YWlsIiwiaGVhZCIsImFjYyQwIiwiaSQwIiwiZm9sZF9yaWdodDIiLCJsaXN0MSIsImxpc3QyIiwiaW5pdCIsIm1hcCQwIiwibWFwaSQwIiwiZm9sZF9yaWdodCQwIiwiYXBwZW5kIiwiY29uY2F0JDAiLCJyZXZfY29tYmluZSIsImNvbWJpbmUiLCJzcGxpdCIsInlzIiwieHMiLCJtYXAyIiwicGFydGl0aW9uX21hcCIsInAiLCJsIiwibGVmdCIsInJpZ2h0IiwibCQwIiwidiIsInYkMCIsImluaXQkMCIsInBvcyQwIiwiaXNfZW1wdHkiLCJyZXZfZmlsdGVyX29wdCIsIm9wdGlvbiIsImZpbHRlcl9vcHQiLCJmaWx0ZXJfbWFwIiwiY29uY2F0X21hcCIsImZpbmRfbWFwIiwic29tZSIsImZpbmRfbWFwX2V4biIsImxhc3QiLCJyZXN0Iiwic3BsaXRfd2hpbGUiLCJmaW5kX2FfZHVwIiwic2V0JDEiLCJzZXQkMCIsImFzc29jX29wdCIsIml0ZXIkMiIsImlzX3NvbWUiLCJpdGVyJDMiLCJtYXAkMSIsInZhbHVlIiwidG9fbGlzdCIsImJpbmQiLCJhIiwiZSIsIm1hcCQyIiwibWFwX2Vycm9yIiwic3ltYm9sX2JpbmQiLCJzeW1ib2xfbWFwIiwiaGFuZGxlX2Vycm9yIiwic3ltYm9sJDM1IiwicTIiLCJ0MiIsInExIiwidDEiLCJoZCQwIiwidG9fbGlzdCQwIiwicSIsIm1hcCQzIiwiY3JlYXRlJDEiLCJmYWlsX2lmX2V4aXN0cyIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsIndpdGhfZmlsZSQwIiwid3JpdGVfYWxsIiwiaXNfZW1wdHkkMCIsInByZWZpeCIsInN1ZmZpeCIsImRyb3BfcHJlZml4IiwiZHJvcF9zdWZmaXgiLCJpc19wcmVmaXgiLCJpc19zdWZmaXgiLCJzdWZmaXhfb2Zmc2V0IiwicG9zJDEiLCJleGlzdHMkMSIsImZvcl9hbGwkMSIsImluZGV4X29wdCQwIiwicmluZGV4X29wdCQwIiwiaW5kZXhfZnJvbV9vcHQkMCIsInJpbmRleF9mcm9tX29wdCQwIiwibHNwbGl0MiIsIm9uIiwiY2FwaXRhbGl6ZV9hc2NpaSQwIiwibG93ZXJjYXNlX2FzY2lpJDEiLCJ1bmNhcGl0YWxpemVfYXNjaWkkMCIsInNwbGl0X29uX2NoYXIkMCIsInNlcCIsImNvbXBhcmUkNyIsImVxdWFsJDciLCJzeW1ib2wkMzYiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJtaW4kNSIsIm1heCQ1IiwiZmluZF9vcHQkMSIsInN5bWJvbCQ0MiIsIm91dHB1dCIsIm9jIiwiYnl0ZXMiLCJvdXRwdXRfc3Vic3RyaW5nIiwic3RyaW5nIiwiaW5fZmlsZSIsIm5hbWUiLCJsb2MiLCJzZXRfZmlsZW5hbWUiLCJmbiIsImxvY19zdGFydCIsImxvY19lbmQiLCJub25lIiwiaW5pdCIsImxleGJ1ZiIsImZuYW1lIiwicmFpc2VfZXJyb3JmIiwiZm10IiwicmVwb3J0X2V4Y2VwdGlvbiIsIm9mX2xleGJ1ZiIsInByaW50IiwicHBmIiwidCIsImNvbXBhcmVfcG9zIiwicDEiLCJwMiIsImNvbHVtbiIsInAiLCJuIiwibWluX3BvcyIsIm1heF9wb3MiLCJjb21wYXJlIiwibG9jMSIsImxvYzIiLCJjcmVhdGVmIiwic3RyIiwiZXJyb3JfZXh0ZW5zaW9uZiIsImUiLCJmYWlsIiwiZXhwZWN0ZWQiLCJhdHRyaWJ1dGUiLCJwYXlsb2FkIiwiYmluZGluZ19vcCIsIm9wIiwicGF0IiwiZXhwIiwiY2FzZSQwIiwibGhzIiwiZ3VhcmQiLCJyaHMiLCJwY2xfY29uc3RyIiwieDAiLCJ4MSIsInBjbF9zdHJ1Y3R1cmUiLCJwY2xfZnVuIiwieDIiLCJ4MyIsInBjbF9hcHBseSIsInBjbF9sZXQiLCJwY2xfY29uc3RyYWludCIsInBjbF9leHRlbnNpb24iLCJwY2xfb3BlbiIsInBjZl9pbmhlcml0IiwicGNmX3ZhbCIsInBjZl9tZXRob2QiLCJwY2ZfY29uc3RyYWludCIsInBjZl9pbml0aWFsaXplciIsInBjZl9hdHRyaWJ1dGUiLCJwY2ZfZXh0ZW5zaW9uIiwiY2xhc3NfaW5mb3MiLCJ2aXJ0IiwicGFyYW1zIiwiZXhwciIsImNsYXNzX3NpZ25hdHVyZSIsInNlbGYiLCJmaWVsZHMiLCJjbGFzc19zdHJ1Y3R1cmUiLCJwY3R5X2NvbnN0ciIsInBjdHlfc2lnbmF0dXJlIiwicGN0eV9hcnJvdyIsInBjdHlfZXh0ZW5zaW9uIiwicGN0eV9vcGVuIiwicGN0Zl9pbmhlcml0IiwicGN0Zl92YWwiLCJwY3RmX21ldGhvZCIsInBjdGZfY29uc3RyYWludCIsInBjdGZfYXR0cmlidXRlIiwicGN0Zl9leHRlbnNpb24iLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInZhcnMiLCJhcmdzIiwicmVzIiwicHR5cF9hbnkiLCJwdHlwX3ZhciIsInB0eXBfYXJyb3ciLCJwdHlwX3R1cGxlIiwicHR5cF9jb25zdHIiLCJwdHlwX29iamVjdCIsInB0eXBfY2xhc3MiLCJwdHlwX2FsaWFzIiwicHR5cF92YXJpYW50IiwicHR5cF9wb2x5IiwicHR5cF9wYWNrYWdlIiwicHR5cF9leHRlbnNpb24iLCJwZGlyX3N0cmluZyIsInBkaXJfaW50IiwicGRpcl9pZGVudCIsInBkaXJfYm9vbCIsInBleHBfaWRlbnQiLCJwZXhwX2NvbnN0YW50IiwicGV4cF9sZXQiLCJwZXhwX2Z1bmN0aW9uIiwicGV4cF9mdW4iLCJwZXhwX2FwcGx5IiwicGV4cF9tYXRjaCIsInBleHBfdHJ5IiwicGV4cF90dXBsZSIsInBleHBfY29uc3RydWN0IiwicGV4cF92YXJpYW50IiwicGV4cF9yZWNvcmQiLCJwZXhwX2ZpZWxkIiwicGV4cF9zZXRmaWVsZCIsInBleHBfYXJyYXkiLCJwZXhwX2lmdGhlbmVsc2UiLCJwZXhwX3NlcXVlbmNlIiwicGV4cF93aGlsZSIsInBleHBfZm9yIiwieDQiLCJwZXhwX2NvbnN0cmFpbnQiLCJwZXhwX2NvZXJjZSIsInBleHBfc2VuZCIsInBleHBfbmV3IiwicGV4cF9zZXRpbnN0dmFyIiwicGV4cF9vdmVycmlkZSIsInBleHBfbGV0bW9kdWxlIiwicGV4cF9sZXRleGNlcHRpb24iLCJwZXhwX2Fzc2VydCIsInBleHBfbGF6eSIsInBleHBfcG9seSIsInBleHBfb2JqZWN0IiwicGV4cF9uZXd0eXBlIiwicGV4cF9wYWNrIiwicGV4cF9vcGVuIiwicGV4cF9sZXRvcCIsInBleHBfZXh0ZW5zaW9uIiwicGV4cF91bnJlYWNoYWJsZSIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImtpbmQiLCJpbmNsdWRlX2luZm9zIiwibW9kIiwibGFiZWxfZGVjbGFyYXRpb24iLCJtdXRhYmxlIiwidHlwZSIsImxldG9wIiwibGV0JDAiLCJhbmRzIiwiYm9keSIsImxvY2F0aW9uIiwic3RhcnQiLCJlbmQiLCJnaG9zdCIsIm1vZHVsZV9iaW5kaW5nIiwibW9kdWxlX2RlY2xhcmF0aW9uIiwicG1vZF9pZGVudCIsInBtb2Rfc3RydWN0dXJlIiwicG1vZF9mdW5jdG9yIiwicG1vZF9hcHBseSIsInBtb2RfY29uc3RyYWludCIsInBtb2RfdW5wYWNrIiwicG1vZF9leHRlbnNpb24iLCJtb2R1bGVfc3Vic3RpdHV0aW9uIiwibWFuaWZlc3QiLCJwbXR5X2lkZW50IiwicG10eV9zaWduYXR1cmUiLCJwbXR5X2Z1bmN0b3IiLCJwbXR5X3dpdGgiLCJwbXR5X3R5cGVvZiIsInBtdHlfZXh0ZW5zaW9uIiwicG10eV9hbGlhcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwib3RhZyIsIm9pbmhlcml0Iiwib3Blbl9pbmZvcyIsIm92ZXJyaWRlIiwicHBhdF9hbnkiLCJwcGF0X3ZhciIsInBwYXRfYWxpYXMiLCJwcGF0X2NvbnN0YW50IiwicHBhdF9pbnRlcnZhbCIsInBwYXRfdHVwbGUiLCJwcGF0X2NvbnN0cnVjdCIsInBwYXRfdmFyaWFudCIsInBwYXRfcmVjb3JkIiwicHBhdF9hcnJheSIsInBwYXRfb3IiLCJwcGF0X2NvbnN0cmFpbnQiLCJwcGF0X3R5cGUiLCJwcGF0X2xhenkiLCJwcGF0X3VucGFjayIsInBwYXRfZXhjZXB0aW9uIiwicHBhdF9leHRlbnNpb24iLCJwcGF0X29wZW4iLCJwb3NpdGlvbiIsImxudW0iLCJib2wiLCJjbnVtIiwicnRhZyIsInJpbmhlcml0IiwicHNpZ192YWx1ZSIsInBzaWdfdHlwZSIsInBzaWdfdHlwZXN1YnN0IiwicHNpZ190eXBleHQiLCJwc2lnX2V4Y2VwdGlvbiIsInBzaWdfbW9kdWxlIiwicHNpZ19tb2RzdWJzdCIsInBzaWdfcmVjbW9kdWxlIiwicHNpZ19tb2R0eXBlIiwicHNpZ19tb2R0eXBlc3Vic3QiLCJwc2lnX29wZW4iLCJwc2lnX2luY2x1ZGUiLCJwc2lnX2NsYXNzIiwicHNpZ19jbGFzc190eXBlIiwicHNpZ19hdHRyaWJ1dGUiLCJwc2lnX2V4dGVuc2lvbiIsInBzdHJfZXZhbCIsInBzdHJfdmFsdWUiLCJwc3RyX3ByaW1pdGl2ZSIsInBzdHJfdHlwZSIsInBzdHJfdHlwZXh0IiwicHN0cl9leGNlcHRpb24iLCJwc3RyX21vZHVsZSIsInBzdHJfcmVjbW9kdWxlIiwicHN0cl9tb2R0eXBlIiwicHN0cl9vcGVuIiwicHN0cl9jbGFzcyIsInBzdHJfY2xhc3NfdHlwZSIsInBzdHJfaW5jbHVkZSIsInBzdHJfYXR0cmlidXRlIiwicHN0cl9leHRlbnNpb24iLCJ0b3BsZXZlbF9kaXJlY3RpdmUiLCJhcmciLCJ0eXBlX2RlY2xhcmF0aW9uIiwiY3N0cnMiLCJwcml2YXRlJDAiLCJ0eXBlX2V4Y2VwdGlvbiIsImNvbnN0cnVjdG9yIiwidHlwZV9leHRlbnNpb24iLCJwYXRoIiwiY29uc3RydWN0b3JzIiwidmFsdWVfYmluZGluZyIsInZhbHVlX2Rlc2NyaXB0aW9uIiwicHJpbSIsInR4dCIsIm1ha2UiLCJtYXAiLCJmIiwiaXNfbm9ybWFsX2lkZW50X2NoYXIiLCJzaG9ydF9uYW1lIiwic3RyaW5nIiwicyIsImIiLCJhIiwiYiQwIiwiYSQwIiwic2V4cF9vZl90IiwiZmxhdHRlbl9leG4iLCJsaWQkMCIsImFjY3UiLCJzJDAiLCJsaWQiLCJsYXN0X2V4biIsInVuZmxhdHRlbiIsImwiLCJhY2MiLCJwYXJzZSIsImludmFsaWQiLCJvcGVuX3BhciIsImNsb3NlX3BhciIsInIiLCJsJDAiLCJncm91cCIsImJlZm9yZSIsImwkMSIsInMkMSIsIngiLCJtayIsIm1hcF9saWRlbnQiLCJsaWRlbnQiLCJ4JDAiLCJwcGF0X2NvbnN0cnVjdCQwIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb24kMCIsInBzdHJfdmFsdWVfbGlzdCIsInJlY19mbGFnIiwidmJzIiwibm9ucmVjX3R5cGVfZGVjbGFyYXRpb24iLCJlaW50IiwiZWNoYXIiLCJlc3RyaW5nIiwiZWZsb2F0IiwiZWludDMyIiwiZWludDY0IiwiZW5hdGl2ZWludCIsInBpbnQiLCJwY2hhciIsInBzdHJpbmciLCJwZmxvYXQiLCJwaW50MzIiLCJwaW50NjQiLCJwbmF0aXZlaW50IiwiZWJvb2wiLCJwYm9vbCIsImV2YXIiLCJ2IiwicHZhciIsImV1bml0IiwicHVuaXQiLCJwZXhwX3R1cGxlJDAiLCJwcGF0X3R1cGxlJDAiLCJwdHlwX3R1cGxlJDAiLCJwZXhwX3R1cGxlX29wdCIsInBwYXRfdHVwbGVfb3B0IiwicHR5cF9wb2x5JDAiLCJ0eSIsInBleHBfYXBwbHkkMCIsImVsIiwiZSQwIiwiZWFwcGx5IiwiZWFic3RyYWN0IiwicHMiLCJlc2VxdWVuY2UiLCJ0bCIsImhkIiwicGNvbnN0cnVjdCIsImNkIiwiZWNvbnN0cnVjdCIsImVsaXN0IiwicGxpc3QiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXQiLCJpZGVudCIsIm4kMCIsInR5cGVfY29uc3RyX2NvbnYiLCJhcHBseV9sb2MiLCJsb25naWRlbnQiLCJsb2MkMCIsIm1vZHVsZV9wYXRoIiwic3VmZml4X24iLCJmdW5jdG9yIiwiZnVuY3Rvcl9hcmdzIiwicmVzdCIsImZ1bmN0b3IkMCIsImZ1bmN0b3JfcGF0aCIsImlkZW50JDAiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiIsImdhdGhlcl9hcmdzIiwiYXJncyQwIiwiYm9keSQwIiwiZXRhX3JlZHVjZSIsImV4cHIkMCIsInN1YnBhdCIsImxhYmVsIiwiYWNjJDAiLCJuYW1lJDAiLCJhY2MkMSIsImZfaWRlbnQiLCJwYXJhbV9sYWJlbCIsImFyZ19sYWJlbCIsInBhcmFtJDAiLCJ0eSQwIiwidHlfb3B0IiwiZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSIsImV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbiIsIm5vbnJlY190eXBlX2RlY2xhcmF0aW9uJDAiLCJwZXhwX3R1cGxlX29wdCQwIiwicHBhdF90dXBsZV9vcHQkMCIsImVpbnQkMCIsImVjaGFyJDAiLCJlc3RyaW5nJDAiLCJlZmxvYXQkMCIsImVpbnQzMiQwIiwiZWludDY0JDAiLCJlbmF0aXZlaW50JDAiLCJlYm9vbCQwIiwiZXZhciQwIiwicGludCQwIiwicGNoYXIkMCIsInBzdHJpbmckMCIsInBmbG9hdCQwIiwicGludDMyJDAiLCJwaW50NjQkMCIsInBuYXRpdmVpbnQkMCIsInBib29sJDAiLCJwdmFyJDAiLCJldW5pdCQwIiwicHVuaXQkMCIsImVhcHBseSQwIiwiZWFic3RyYWN0JDAiLCJlc2VxdWVuY2UkMCIsImVsaXN0JDAiLCJwbGlzdCQwIiwidHlwZV9jb25zdHJfY29udiQwIiwidW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYkMCIsImdldCIsInNraXAiLCJza2lwJDAiLCJzdGFjayIsImxlbiIsInBvcyIsInBvcyQwIiwibGV2ZW5zaHRlaW5fZGlzdGFuY2UiLCJjdXRvZmYiLCJtIiwiZCIsImkkMCIsImokMCIsImxpbmVfbWluIiwiaiIsImkiLCJ2YWx1ZSIsImRpc3RhbmNlIiwic3BlbGxjaGVjayIsIm5hbWVzIiwic3VnZ2VzdGlvbnMiLCJyZWdpc3RlcmVkX25hbWUiLCJuYW1lc19hdF9iZXN0X2Rpc3RhbmNlIiwiYmVzdF9kaXN0YW5jZSIsImRpc3QiLCJyZXZfcmVzdCIsImxhc3QiLCJmb2xkX2RvdF9zdWZmaXhlcyIsImNvbGxhcHNlX2FmdGVyX2F0IiwicGFydHMiLCJwYXJ0IiwicGFydHMkMSIsInBhcnRzJDAiLCJkb3Rfc3VmZml4ZXMiLCJzcGxpdF9wYXRoIiwiaSQyIiwiaSQ0IiwiaSQzIiwiaSQxIiwibWF0Y2hlcyIsIm1hdGNoZWQiLCJzcGxpdF9vdXRlcl9uYW1lc3BhY2UiLCJiZWZvcmVfZG90IiwiYWZ0ZXJfZG90IiwiY3JlYXRlX3NldCIsImZ1bGx5X3F1YWxpZmllZF9uYW1lcyIsImF0dHJpYnV0ZXMiLCJleHRlbnNpb25zIiwiaXNfYWxsb3dsaXN0ZWQiLCJnZXRfYXR0cmlidXRlX2xpc3QiLCJnZXRfZXh0ZW5zaW9uX2xpc3QiLCJjcmVhdGVfcmVzZXJ2ZWQiLCJ0YmwiLCJyZXNlcnZlIiwibnMkMCIsIm5zIiwidGJsJDAiLCJyZXN0X25zIiwib3V0ZXJfbnMiLCJyZXN0X3RibCIsImlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMiLCJpZ25vcmVfY2hlY2tzIiwiY3JlYXRlIiwiY3VycmVudF9maWxlIiwic3RyaW5nX29mX2NvbnRleHQiLCJnZXRfYWxsX2Zvcl9jb250ZXh0IiwiY29udGV4dCIsImNoZWNrX2NvbGxpc2lvbnNfbG9jYWwiLCJjYWxsZXIiLCJhbGxfZm9yX2NvbnRleHQiLCJkZWNsYXJlZF9hdCIsImNvbnRleHQkMCIsImNoZWNrX2NvbGxpc2lvbnMiLCJyZWdpc3RlciIsImtpbmQkMSIsImxpc3QiLCJraW5kJDAiLCJhbGwiLCJ0JDAiLCJhbGxvd2xpc3QiLCJrZXkiLCJvdGhlcl9jb250ZXh0cyIsImN0eCIsImFsbF9mcm9tX2NvbnRleHQiLCJwcF90ZXh0IiwiY3VycmVudF9jb250ZXh0IiwiYV9vcl9hbiIsInkiLCJjIiwicmV2X290aGVycyIsIm90aGVycyIsIm1zZyIsInJhaXNlX2Vycm9yZiQwIiwiY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24iLCJ0ZCIsImNob3AiLCJvcl9tb3JlIiwidGFyZ2V0IiwiY250IiwiZ2VuX3N5bWJvbCIsInByZWZpeCIsInByZWZpeCQwIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMiLCJuYW1lX3BhcmFtIiwidmFyaWFuY2UiLCJ0cCIsInB0eXBfZGVzYyIsIm8iLCJlcnJvcnMiLCJwdHlwZV9wYXJhbXMiLCJxIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZCIsImVyciIsImNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhciIsInRkJDAiLCJyZXN1bHRfdHlwZSIsInN0cmluZ19vZl9jb3JlX3R5cGUiLCJjdCIsImJ1ZiIsImdldF90eXBlX3BhcmFtX25hbWVfcmVzIiwiZ2V0X3R5cGVfcGFyYW1fbmFtZSIsInNlbGZfMSIsImN0eXBlIiwiaWQiLCJ0ZHMiLCJyZWFsbHlfcmVjdXJzaXZlIiwieCQxIiwibG9jX29mX25hbWVfYW5kX3BheWxvYWQiLCJsb2Nfb2ZfcGF5bG9hZCIsImF0dHJfcGF5bG9hZCIsImF0dHJfbmFtZSIsImxvY19vZl9hdHRyaWJ1dGUiLCJsb2Nfb2ZfZXh0ZW5zaW9uIiwiY3VycnlfYXBwbGljYXRpb25zIiwib3JpZ19mb3J3YXJkX2FyZ3MiLCJsb29wIiwicmV2X2Zyb250X2FyZ3MiLCJsYXN0X2FyZyIsImF0dHIiLCJhdHRyaWJ1dGVzX2Vycm9ycyIsInNlbGZfMiIsImNvbGxlY3RfYXR0cmlidXRlc19lcnJvcnMiLCJhc3NlcnRfbm9fYXR0cmlidXRlcyIsInNlbGZfMyIsImFzc2VydF9ub19hdHRyaWJ1dGVzX2luIiwiYXR0cmlidXRlX29mX3dhcm5pbmciLCJpc19wb2x5bW9ycGhpY192YXJpYW50Iiwic2lnIiwidHlwJDAiLCJ0eXAiLCJta19uYW1lZF9zaWciLCJzZ19uYW1lIiwiaGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQiLCJhcml0eSIsIm10eSIsImZvcl9zdWJzdCIsImV4bl90b19sb2NfZXJyb3IiLCJleG4iLCJlcnJvciIsInJldHVybiQwIiwic3ltYm9sX2JpbmQiLCJlcnJvcnMxIiwiZXJyb3JzMiIsInN5bWJvbF9tYXAiLCJvZl9yZXN1bHQiLCJyZXN1bHQiLCJkZWZhdWx0JDAiLCJjb21iaW5lX2Vycm9ycyIsIm5vbGFiZWwiLCJrIiwibGFiZWxsZWQiLCJmMCIsImskMCIsIm9wdGlvbmFsIiwiayQxIiwiayQyIiwicGNsX2xvYyIsImYyIiwiZjEiLCJwY2xfYXR0cmlidXRlcyIsImYzIiwiayQzIiwicGNmX2xvYyIsInBjZl9hdHRyaWJ1dGVzIiwiY2ZrX3ZpcnR1YWwiLCJjZmtfY29uY3JldGUiLCJjbGFzc19pbmZvc19hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfYXR0cmlidXRlcyIsImNsb3NlZCIsIm9wZW4iLCJwY29uc3RfaW50ZWdlciIsInBjb25zdF9jaGFyIiwicGNvbnN0X3N0cmluZyIsInBjb25zdF9mbG9hdCIsInBjc3RyX3R1cGxlIiwicGNzdHJfcmVjb3JkIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmliIiwicHR5cF9sb2MiLCJwdHlwX2F0dHJpYnV0ZXMiLCJ1cHRvIiwiZG93bnRvIiwicGRpcmFfbG9jIiwicGV4cF9sb2MiLCJwZXhwX2F0dHJpYnV0ZXMiLCJmNCIsImskNCIsImV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dCIsInBleHRfZGVjbCIsInBleHRfcmViaW5kIiwidW5pdCIsIm5hbWVkIiwiaW5jbHVkZV9pbmZvc19hdHRyaWJ1dGVzIiwiaW5qZWN0aXZlIiwibm9pbmplY3Rpdml0eSIsImxhYmVsX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMiLCJsZG90IiwibGFwcGx5IiwibW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyIsIm1vZHVsZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2F0dHJpYnV0ZXMiLCJtb2R1bGVfc3Vic3RpdHV0aW9uX2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfYXR0cmlidXRlcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uX2F0dHJpYiIsImltbXV0YWJsZSIsInBvZl9sb2MiLCJwb2ZfYXR0cmlidXRlcyIsIm9wZW5faW5mb3NfYXR0cmlidXRlcyIsImZyZXNoIiwicHBhdF9sb2MiLCJwcGF0X2F0dHJpYnV0ZXMiLCJwc3RyIiwicHNpZyIsInB0eXAiLCJwcGF0IiwicHVibGljJDAiLCJub25yZWN1cnNpdmUiLCJyZWN1cnNpdmUiLCJwcmZfbG9jIiwicHJmX2F0dHJpYnV0ZXMiLCJwc2lnX2xvYyIsInBzdHJfbG9jIiwicHRvcF9kZWYiLCJwdG9wX2RpciIsInR5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyIsImskNSIsInR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMiLCJ0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIiwicHR5cGVfYWJzdHJhY3QiLCJwdHlwZV92YXJpYW50IiwicHR5cGVfcmVjb3JkIiwicHR5cGVfb3BlbiIsInZhbHVlX2JpbmRpbmdfYXR0cmlidXRlcyIsInZhbHVlX2Rlc2NyaXB0aW9uX2F0dHJpYnV0ZXMiLCJjb3ZhcmlhbnQiLCJjb250cmF2YXJpYW50Iiwibm92YXJpYW5jZSIsInZpcnR1YWwiLCJjb25jcmV0ZSIsInB3aXRoX3R5cGUiLCJwd2l0aF9tb2R1bGUiLCJwd2l0aF9tb2R0eXBlIiwicHdpdGhfbW9kdHlwZXN1YnN0IiwicHdpdGhfdHlwZXN1YnN0IiwicHdpdGhfbW9kc3Vic3QiLCJyZXN0b3JlX2NvbnRleHQiLCJiYWNrdXAiLCJpbmNyX21hdGNoZWQiLCJwYXJzZV9yZXMiLCJvbl9lcnJvciIsImYkMCIsInIkMCIsInBhcnNlX3JlcyQwIiwicGFyc2UkMCIsInN5bWJvbCIsInN5bWJvbCQwIiwiZHJvcCIsImFzIiwiY3N0IiwidG9fc3RyaW5nIiwiZXF1YWwiLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiYm9vbCIsImJvb2wkMCIsImZ1bmMiLCJmYWxzZSQwIiwidHJ1ZSQwIiwibmlsIiwic3ltYm9sJDEiLCJzb21lIiwicGFpciIsInRyaXBsZSIsImFsdCIsImUxJDAiLCJlMSIsIm0xIiwiZTIkMCIsImUyIiwibTIiLCJtYXAkMCIsIm1hcF9yZXN1bHQiLCJtYXAwIiwibWFwMSIsIm1hcDIiLCJtYXAwJDAiLCJtYXAxJDAiLCJtYXAyJDAiLCJtYXBfdmFsdWUiLCJtYXBfdmFsdWUkMCIsImFsdF9vcHRpb24iLCJtYW55IiwiYXV4IiwieHMiLCJwYWNrMCIsInBhY2syIiwicGFjazMiLCJ6IiwiY29uc3RfaW50IiwiY29uc3RfaW50MzIiLCJjb25zdF9pbnQ2NCIsImNvbnN0X25hdGl2ZWludCIsInNpbmdsZV9leHByX3BheWxvYWQiLCJub19sYWJlbCIsImV4dGVuc2lvbiIsIm5leHQiLCJleHByJDEiLCJvZl9mdW5jIiwidG9fZnVuYyIsInBvbHlfZXF1YWwiLCJnZXRfcHN0cl9ldmFsIiwic3QiLCJnZXRfcHN0cl9leHRlbnNpb24iLCJnZXRfcHNpZ19leHRlbnNpb24iLCJnZXRfYXR0cmlidXRlcyIsInNldF9hdHRyaWJ1dGVzIiwiYXR0cnMiLCJnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX24iLCJhJDEiLCJhJDIiLCJkdW1teV9leHQiLCJyZWdpc3RyYXIiLCJkZWNsYXJlX3dpdGhfYWxsX2FyZ3MiLCJwYXR0ZXJuIiwiZGVjbGFyZSIsImRlY2xhcmVfd2l0aF9uYW1lX2xvYyIsIm5hbWVfbG9jIiwiZGVjbGFyZV93aXRoX2F0dHJfbG9jIiwiYXR0cl9sb2MiLCJkZWNsYXJlX2ZsYWciLCJwYXlsb2FkX3BhdHRlcm4iLCJjb250aW51YXRpb24iLCJub3JtYWxpemUiLCJoYXNoIiwibm90X3NlZW4iLCJtYXJrX2FzX3NlZW4iLCJleHBsaWNpdGx5X2Ryb3AiLCJnZXRfaW50ZXJuYWwiLCJhdHRyaWJ1dGVzJDEiLCJsb25nZXN0X21hdGNoIiwiYXR0cmlidXRlcyQwIiwibGVuJDAiLCJsb25nZXN0X21hdGNoJDAiLCJsb25nZXN0X21hdGNoJDEiLCJjb252ZXJ0IiwiZG9fbWFya19hc19zZWVuIiwicGF0dGVybiQwIiwiZ2V0X3JlcyIsImhhc19mbGFnX3JlcyIsImhhc19mbGFnIiwiY29uc3VtZV9yZXMiLCJhdHRycyQwIiwiYXR0ciQwIiwiY29uc3VtZSIsInJlbW92ZV9zZWVuX3JlcyIsInBhY2tlZHMiLCJyZW1vdmVfc2VlbiIsInBhdHRlcm5fcmVzIiwiZGVjbGFyZSQwIiwiY29udmVydF9yZXMiLCJ0cyIsImNvbnZlcnQkMCIsImNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyIsIm5vZGUiLCJjb2xsZWN0ZWRfZXJyb3JzIiwiY2xvc2VkX2ZsYWciLCJlcnJvcnMkMCIsImZpZWxkcyQwIiwiaXRlbSIsIml0ZW0kMCIsIml0ZW0kMSIsImVycm9yczIkMCIsIml0ZW0kMiIsImNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJybyIsInJhaXNlX2lmX25vbl9lbXB0eSIsImNoZWNrX3VudXNlZCIsInJlc2V0X2NoZWNrcyIsInNlbGZfNCIsImNvbGxlY3QiLCJjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMiLCJjaGVja19hbGxfc2VlbiIsInJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4iLCJ0YWJsZSIsInNlbGZfNSIsImNvcHlfb2Zfbm90X3NlZW4iLCJjb3B5IiwiZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIiwiZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIiwic2ciLCJ0b3BfbGV2ZWwiLCJmaWxlX3BhdGgiLCJtYWluX21vZHVsZV9uYW1lIiwiZW5jbG9zaW5nX21vZHVsZSIsImVuY2xvc2luZ192YWx1ZSIsInN1Ym1vZHVsZV9wYXRoIiwibG9jYXRlZCIsImZ1bGx5X3F1YWxpZmllZF9wYXRoIiwidmFsdWUkMCIsImVudGVyX2V4cHIiLCJlbnRlcl9tb2R1bGUiLCJtb2R1bGVfbmFtZSIsImVudGVyX3ZhbHVlIiwidmFsdWVfbmFtZSIsInRvX3N0cmluZ19wYXRoIiwid2l0aF9zdHJpbmdfcGF0aCIsInRvb2xfbmFtZSIsImlucHV0X25hbWUiLCJjb2RlX3BhdGgiLCJleHRlbnNpb25fcG9pbnRfbG9jIiwiYmFzZSIsImNvZGVfcGF0aCQwIiwiaW5wdXRfbmFtZSQwIiwidG9vbF9uYW1lJDAiLCJ3aXRoX2xvY19hbmRfcGF0aCIsImN0eHQiLCJtYWtlJDAiLCJkZXJpdmVkX2l0ZW1fbG9jIiwiaW5saW5lIiwiY29kZV9wYXRoJDEiLCJpbnB1dF9uYW1lJDEiLCJ0b29sX25hbWUkMSIsIndpdGhfbG9jX2FuZF9wYXRoJDAiLCJlbnRlciIsImVudGVyX29wdCIsIm5hbWVfb3B0IiwibWIiLCJtZCIsIm10ZCIsInZhcl9uYW1lc19vZiIsImVjX2VudGVyX21vZHVsZV9vcHQiLCJkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyIsImRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiIsImRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyIsImRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpbyIsImRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYSIsImRvX25vdF9lbnRlcl9sZXRfbW9kdWxlIiwidGFnIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2Rlc2MiLCJ3aXRoX3ZhbHVlIiwiY3R4dCQwIiwibW9kdWxlX2V4cHIiLCJuYW1lX2Vycm9ycyIsIndpdGhfbGV0X21vZHVsZSIsIm1vZHVsZV9leHByX2Vycm9ycyIsIm1vZHVsZV9leHByJDAiLCJib2R5X2Vycm9ycyIsImRlc2NfZXJyb3JzJDAiLCJwZXhwX2Rlc2MkMSIsImRlc2NfZXJyb3JzIiwicGV4cF9kZXNjJDAiLCJsb2NfZXJyb3JzIiwicGV4cF9sb2MkMCIsImxvY19zdGFja19lcnJvcnMiLCJwZXhwX2xvY19zdGFjayQwIiwicGV4cF9hdHRyaWJ1dGVzJDAiLCJtZSIsIndpdGhfbW9kdWxlX2V4cHIiLCJ3aXRoX21vZHVsZV9iaW5kaW5nIiwid2l0aF9tb2R1bGVfZGVjbGFyYXRpb24iLCJ3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwidmQiLCJ3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uIiwidmIiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfZXhwciIsInB2Yl9wYXQiLCJ2YXJfbmFtZSIsImluX2JpbmRpbmdfY3R4dCIsInBhdF9lcnJvcnMiLCJwdmJfcGF0JDAiLCJleHByX2Vycm9ycyIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwic2V4cCIsInNleHBfb2YiLCJvY2FtbF9sZXhfdGFibGVzIiwic2tpcF9oYXNoX2JhbmciLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIndpdGhfb3V0cHV0IiwiYmluYXJ5IiwiZm4kMCIsIm9mX2ZpbGVuYW1lIiwiZGVzY3JpYmUiLCJtYXBfd2l0aF9jb250ZXh0IiwiZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24iLCJtYWdpY19sZW5ndGgiLCJzZXRfaW5wdXRfbGV4YnVmIiwiaWMiLCJzb3VyY2UiLCJmcm9tX2NoYW5uZWwiLCJjaCIsImlucHV0X2tpbmQiLCJoYW5kbGVfbm9uX2JpbmFyeSIsInByZWZpeF9yZWFkX2Zyb21fc291cmNlIiwiaW5wdXRfdmVyc2lvbiIsImFsbF9zb3VyY2UiLCJhc3QiLCJleG4kMCIsIklucHV0X3ZlcnNpb24iLCJhc3QkMCIsIklucHV0X3ZlcnNpb24kMCIsImFzdCQxIiwiYXN0JDIiLCJyZWFkIiwiaW5wdXRfc291cmNlIiwid3JpdGUiLCJvYyIsImFkZF9wcHhfY29udGV4dCIsInNnJDAiLCJzdCQwIiwicmVhZF9iaW5hcnkiLCJzaWduYXR1cmUiLCJzdHJ1Y3R1cmUiLCJnZXRfYXN0IiwiZ2V0X2lucHV0X25hbWUiLCJydW5fcHJlcHJvY2Vzc29yIiwicHAiLCJpbnB1dCIsIm91dHB1dCIsImNvbW1hbmQiLCJlbmRfbWFya2VyX3NpZyIsImVuZF9tYXJrZXJfc3RyIiwiZXh0cmFjdF9wcmVmaXgiLCJyZW1vdmVfbG9jIiwicmVtb3ZlX2xvYyQwIiwicHJldiQwIiwicHJldiQxIiwiZGlmZl9hc3RzIiwiZ2VuZXJhdGVkIiwicm91bmRfdHJpcCIsIndpdGhfdGVtcF9maWxlIiwiZm4xIiwiZm4yIiwib3V0IiwiZHVtcCIsImNtZCIsIm9rIiwiY21kJDAiLCJwYXJzZV9zdHJpbmciLCJtYXRjaF9sb29wIiwiZW5kX3BvcyIsIm1pc21hdGNoX2hhbmRsZXIiLCJleHBlY3RlZCQwIiwic291cmNlJDAiLCJsb2MkMSIsInNvdXJjZSQxIiwiZXhwZWN0ZWQkMSIsInkkMCIsImRvX21hdGNoIiwiZ2V0X2xvYyIsImFwcGx5IiwidG9fc2V4cCIsImdldF9sb2MkMCIsInBwJDAiLCJ0b19zZXhwJDAiLCJtYXRjaF9zdHJ1Y3R1cmVfcmVzIiwibWF0Y2hfc3RydWN0dXJlIiwibWF0Y2hfc2lnbmF0dXJlX3JlcyIsIm1hdGNoX3NpZ25hdHVyZSIsImRlc2MiLCJlcSIsImdldF9leHRlbnNpb24iLCJ0eXBlX2RlY2wiLCJlJDEiLCJlJDIiLCJhJDMiLCJlJDMiLCJhJDQiLCJlJDQiLCJhJDUiLCJlJDUiLCJhJDYiLCJlJDYiLCJhJDciLCJlJDciLCJhJDgiLCJlJDgiLCJhJDkiLCJlJDkiLCJ2aXJ0dWFsX3BheWxvYWQiLCJtZXJnZV9hdHRyaWJ1dGVzX3JlcyIsInEkMCIsInQkMSIsInEkMSIsInQkMiIsIm1lcmdlX2F0dHJpYnV0ZXMiLCJ3aXRoX2FyZyIsImZpbmQiLCJleHQiLCJhcmckMCIsInNoaWZ0IiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnIiwicGF0dCIsImNvbnZlcnRfcmVzJDAiLCJmb3VuZCIsImNvbnZlcnRfaW5saW5lX3JlcyIsImNvbnZlcnRfaW5saW5lIiwiY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIiwiZmlsdGVyX2J5X2NvbnRleHQiLCJleHBhbmRlcnMiLCJleHBhbmRlcnMkMCIsImV4cGFuZGVycyQxIiwidW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciIsImNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lciIsImVycm9yX2xpc3RfdG9fZXhjZXB0aW9uIiwiZGVjbGFyZV9pbmxpbmUiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmckMCIsImRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmciLCJkZWNsYXJlJDEiLCJkZWNsYXJlX2lubGluZSQwIiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnJDEiLCJkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnJDAiLCJkZWNsYXJlX3BweF9pbXBvcnQiLCJleHBhbmQiLCJzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCIsImF0dHJfbmFtZSQwIiwic3BsaXRfbm9ybWFsX2FuZF9leHBlY3QkMCIsImZpbHRlciIsImZpZWxkIiwiZmllbGQkMCIsInNwZWNpYWxfZnVuY3Rpb24iLCJjb25zdGFudCIsInN1ZmZpeCIsImF0dHJfc3RyX3R5cGVfZGVjbCIsImF0dHJfc2lnX3R5cGVfZGVjbCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIiwiYXR0cl9zdHJfdHlwZV9leHQiLCJhdHRyX3NpZ190eXBlX2V4dCIsImF0dHJfc3RyX2V4Y2VwdGlvbiIsImF0dHJfc2lnX2V4Y2VwdGlvbiIsImF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3QiLCJhdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0IiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdCIsImF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3QiLCJub3AiLCJyZXBsYWNlIiwiaW5zZXJ0X2FmdGVyIiwiZXhuX3RvX2V4dGVuc2lvbiIsImV4bl90b19lcnJvcl9leHRlbnNpb24iLCJvcmlnaW5hbF9ub2RlIiwicHR5cGVfbWFuaWZlc3QiLCJleG5fdG9fc3RyaSIsImV4bl90b19zaWdpIiwibWFwX25vZGVfcmVjIiwic3VwZXJfY2FsbCIsImJhc2VfY3R4dCIsImVtYmVkX2Vycm9ycyIsImNvbnZlcnRlZCIsIm1hcF9ub2RlcyIsImhvb2siLCJpbl9nZW5lcmF0ZWRfY29kZSIsImdlbmVyYXRlZF9jb2RlIiwiY29kZSIsImdldF9ncm91cCIsImF0dHIyIiwidmFscyIsInZhbHMkMCIsInJldl9jb25jYXQiLCJzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIiwic29ydF9hdHRyX2lubGluZSIsImNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpYyIsIm5vcCQwIiwid2l0aF9jb250ZXh0Iiwib3B0aW9uIiwiZXhwYW5kZWQiLCJleHBhbmRfY29uc3RhbnQiLCJ0ZXh0IiwiYyQwIiwiZXhuJDEiLCJpZCQwIiwiZ2VuZXJhdGVkX2NvZGUkMCIsImV4biQyIiwiZnVuYyQwIiwibGFiIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJ3aXRoX2V4dHJhX2l0ZW1zIiwiZXh0cmFfaXRlbXMiLCJleHBlY3RfaXRlbXMiLCJyZXN0JDAiLCJyZXBsIiwiaXRlbXMiLCJleHBhbmRlZF9pdGVtIiwiZXhwX3RkcyIsImV4cF9yZiIsInJmIiwiZXhwX3RlIiwidGUiLCJleHBfZWMiLCJlYyIsImV4cF9tdGQiLCJvcHQiLCJzdGgiLCJzdGgkMCIsInJ1bGVzIiwic3BlY2lhbF9mdW5jdGlvbnMiLCJzcGVjaWFsX2Z1bmN0aW9ucyQwIiwiY29uc3RhbnRzIiwiY2xhc3NfZXhwciIsImNsYXNzX2ZpZWxkIiwiY2xhc3NfdHlwZSIsImNsYXNzX3R5cGVfZmllbGQiLCJjb3JlX3R5cGUiLCJleHByZXNzaW9uIiwibW9kdWxlX3R5cGUiLCJzaWduYXR1cmVfaXRlbSIsInN0cnVjdHVyZV9pdGVtIiwicHB4X2ltcG9ydCIsImF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9kZWNscyIsImF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9kZWNscyIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHNfZXhwIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMiLCJhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9leHRzIiwiYXR0cl9zaWdfdHlwZV9leHRzX2V4cGVjdCIsImF0dHJfc2lnX3R5cGVfZXh0cyIsImF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9ucyIsImF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zaWdfZXhjZXB0aW9ucyIsIm1hcF9ub2RlIiwibWFwX25vZGVzJDAiLCJoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUiLCJleHBhbmRlZF9pdGVtcyIsImNvbnZlcnRfZXhuIiwiZzEiLCJnMiIsInZhbHVlcyIsImVycm9yX2l0ZW0iLCJnZW5lcmF0ZWRfY29kZV9iZWdpbiIsImdlbmVyYXRlZF9jb2RlX2VuZCIsInBhcmVuIiwic3RvcCIsIm1ha2VfdGV4dCIsImJsb2NrIiwicHJpbnRlciIsImlkeCIsImNvdW50X25ld2xpbmVzIiwic2tpcF9ibGFua19lb2wiLCJjb250ZW50cyIsImNudW0kMSIsImNudW0kMCIsInJlY29uY2lsZSIsInN0eWxlciIsInJlcGxzJDMiLCJpbnB1dF9maWxlbmFtZSIsInJlcGxzIiwicmVwbHMkMiIsInJlcGwkMCIsInByZXYiLCJyZXBscyQwIiwicmVwbHMkMSIsInJlcGxzJDQiLCJvdXRwdXRfbmFtZSIsImNvcHlfaW5wdXQiLCJ1cF90byIsImxpbmUiLCJsYXN0X2lzX3RleHQiLCJpc190ZXh0IiwibGluZSQwIiwibGluZSQxIiwibG9vcCQwIiwibGluZSQyIiwibG9vcF9jb25zZWN1dGl2ZV9yZXBscyQwIiwibGFzdF9pc190ZXh0JDAiLCJlbmRfY29uc2VjdXRpdmVfcmVwbHMiLCJwb3MkMSIsImxhc3RfaXNfdGV4dCQxIiwicG9zJDIiLCJsb29wX2NvbnNlY3V0aXZlX3JlcGxzIiwidG1wX2ZuIiwic2FuaXRpemUiLCJiaW5kaW5ncyIsIkFzdCIsInF1b3RlIiwicXVvdGVkX2V4cHIkMCIsImJpbmRpbmdfZXhwciQwIiwiYmluZGluZ19leHByIiwicXVvdGVkX2V4cHIiLCJiaW5kaW5nIiwibWtfYXR0cl9ub2xvYyIsImhpZGVfYXR0cmlidXRlIiwiZm9jdXNfYXR0cmlidXRlIiwiaGlkZV9wYXR0ZXJuIiwiZm9jdXNfcGF0dGVybiIsImhpZGVfZXhwcmVzc2lvbiIsImZvY3VzX2V4cHJlc3Npb24iLCJlbXB0eSIsInJhbmdlcyIsIm5vZGVfbG9jIiwibm9kZV9uYW1lIiwieF9sb2MiLCJ4X25hbWUiLCJwMiQwIiwicDEkMCIsImluc2VydCIsImFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IiwiZmlsZSIsInNhbWVfZmlsZV9zb19mYXIiLCJzaG91bGRfaWdub3JlIiwib3JpZ19mbmFtZSIsImV4dHJhY3RfY29uc3RyYWludCIsImRvX2NoZWNrIiwiY2hpbGRyZW5zX2xvY3MiLCJzaWJsaW5nc19sb2NzIiwibWF4X3BvcyQwIiwibWluX3BvcyQwIiwiY2hpbGRfbG9jIiwiY2hpbGRfbmFtZSIsImwyIiwibDEiLCJ5cyIsInlzJDAiLCJ4cyQwIiwiZW5mb3JjZV9pbnZhcmlhbnRzIiwic2libGluZ3MiLCJjdGUiLCJjdHAiLCJvdXRtb3N0X2xvYyIsImluaXRpYWxfcmVzJDAiLCJyZXMkMSIsImluaXRpYWxfcmVzIiwicmVzJDAiLCJjaGlsZHNfbG9jcyIsImF0dHJzX2xvY3MiLCJzaWJsaW5nc19sb2MiLCJ0ZGVjbCIsImV4cHJfbyIsImxhYmVscyIsImFjYyQyIiwib3BuIiwiZV9sb2MiLCJjZSIsIm9kIiwiYWNjJDMiLCJhY2MkNCIsImV4ZV9uYW1lIiwiYWRkX2FyZyIsInNwZWMiLCJkb2MiLCJsb2NfZm5hbWUiLCJwZXJmb3JtX2NoZWNrcyIsInBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMiLCJwZXJmb3JtX2xvY2F0aW9uc19jaGVjayIsImRlYnVnX2F0dHJpYnV0ZV9kcm9wIiwiYXBwbHlfbGlzdCIsInByZXByb2Nlc3NvciIsIm5vX21lcmdlIiwicmVxdWVzdF9wcmludF9wYXNzZXMiLCJyZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyIsInVzZV9jb2xvciIsImRpZmZfY29tbWFuZCIsInByZXR0eSIsIm91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSIsImNvcnJlY3RlZF9zdWZmaXgiLCJnZXRfZGVmYXVsdF9wYXRoIiwiZm5hbWUkMCIsImdldF9kZWZhdWx0X3BhdGhfc3RyIiwiZ2V0X2RlZmF1bHRfcGF0aF9zaWciLCJvZl9zdHJpbmciLCJnaXZlbl90aHJvdWdoX2NsaSIsInNldCIsImhhbmRsZXJzIiwiYWRkX2hhbmRsZXIiLCJhZGRfc2ltcGxlX2hhbmRsZXIiLCJhY2tub3dsZWRnZV9jb29raWVzIiwicG9zdF9oYW5kbGVycyIsImFkZF9wb3N0X2hhbmRsZXIiLCJjYWxsX3Bvc3RfaGFuZGxlcnMiLCJ0cmFuc2Zvcm1hdGlvbiIsInRyYW5zZm9ybWF0aW9uJDAiLCJoYXNfbmFtZSIsInByaW50X2NhbGxlcl9pZCIsImNhbGxlcl9pZCIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIiwiZW5jbG9zZV9pbXBsIiwiZW5jbG9zZV9pbnRmIiwiaW1wbCIsImludGYiLCJsaW50X2ltcGwiLCJsaW50X2ludGYiLCJwcmVwcm9jZXNzX2ltcGwiLCJwcmVwcm9jZXNzX2ludGYiLCJpbnN0cnVtZW50IiwiYWxpYXNlcyIsInJ1bGVzJDAiLCJpbXBsJDAiLCJpbnRmJDAiLCJwcmVwcm9jZXNzX2ltcGwkMCIsInByZXByb2Nlc3NfaW50ZiQwIiwiY3QkMCIsImxvY19vZl9saXN0IiwibCQyIiwiZmlyc3QiLCJtZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyIsImV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIiwiZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIiwid2hvbGVfbG9jIiwiZm9vdGVyIiwiaGVhZGVyIiwibG9jX2hlYWRlciIsImxvY19mb290ZXIiLCJtYXBfaW1wbCIsInN0X3dpdGhfYXR0cnMiLCJtYXBfaW50ZiIsInNnX3dpdGhfYXR0cnMiLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ18iLCJhZGRfY3R4dF9hcmciLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiQwIiwibGludF9pbXBsJDAiLCJsaW50X2ludGYkMCIsImVuY2xvc2VfaW1wbCQwIiwiZW5jbG9zZV9pbnRmJDAiLCJyZWdpc3Rlcl9jb2RlX3RyYW5zZm9ybWF0aW9uIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfJDAiLCJnZXRfd2hvbGVfYXN0X3Bhc3NlcyIsImN0cyIsImFmdF9pIiwiYmVmX2kiLCJyZWR1Y2VkX3QiLCJpbnN0ciIsInRyYW5zZiIsInRyYW5zZiQwIiwidHJhbnNmb3JtcyIsImFmdGVyX2luc3RycyIsImJlZm9yZV9pbnN0cnMiLCJwcmVwcm9jZXNzIiwibGludGVycyIsImdldF9lbmNsb3NlcnMiLCJpbXBsX2VuY2xvc2VycyIsImludGZfZW5jbG9zZXJzIiwibWVyZ2VfZW5jbG9zZXIiLCJlbmNsb3NlcnMiLCJmb290ZXJzIiwiaGVhZGVycyIsImhlYWRlcnMkMCIsImZvb3RlcnMkMCIsImFwcGx5X3RyYW5zZm9ybXMiLCJsaW50X2ZpZWxkIiwiZHJvcHBlZF9zb19mYXIiLCJsaW50X2Vycm9ycyIsIm9sZF9kcm9wcGVkIiwibGludF9lcnJvcnMkMCIsImVycm9ycyQxIiwibW9yZV9lcnJvcnMiLCJuZXdfZHJvcHBlZCIsInByaW50X2RpZmYiLCJ3aGF0IiwiZGlmZiIsImRyb3BwZWQiLCJlcnJvcl90b19leHRlbnNpb24iLCJleHQkMCIsInNvcnRfZXJyb3JzX2J5X2xvYyIsImVycm9yJDAiLCJtYXBfc3RydWN0dXJlX2dlbiIsIndpdGhfZXJyb3JzIiwic29ydGVkIiwic3QkMSIsInVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyIsInVudXNlZF9leHRlbnNpb25fZXJyb3JzIiwibm90X3NlZW5fZXJyb3JzIiwibWFwX3NpZ25hdHVyZV9nZW4iLCJzZyQxIiwibWFwX3NpZ25hdHVyZSIsInZlcnNpb25lZF9lcnJvcmYiLCJpbnB1dF9maWxlX25hbWUiLCJyZW1vdmVfbm9fZXJyb3IiLCJuZXdfZm4iLCJvbGRfZm4iLCJyZWxvY2F0ZV9tYXBwZXIiLCJzZXRfaW5wdXRfbmFtZSIsImV4dHJhY3RfY29va2llcyIsInByZWZpeCQxIiwicHJlZml4JDIiLCJjb3JyZWN0aW9ucyIsImFkZF90b19saXN0IiwicmVnaXN0ZXJfY29ycmVjdGlvbiIsInByb2Nlc3NfZmlsZV9ob29rcyIsInJlZ2lzdGVyX3Byb2Nlc3NfZmlsZV9ob29rIiwiYWxsJDAiLCJwcm9jZXNzX2FzdCIsIm91dHB1dF9tb2RlIiwic2V0X2lucHV0Iiwic2V0X2tpbmQiLCJzZXRfb3V0cHV0X21vZGUiLCJtb2RlIiwibWF0Y2giLCJhcmdfb2Zfb3V0cHV0X21vZGUiLCJwYXJzZV9hcHBseV9saXN0IiwibWFzayIsImhhbmRsZV9hcHBseSIsImhhbmRsZV9kb250X2FwcGx5IiwiaW50ZXJwcmV0X21hc2siLCJzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSIsImlzX2NhbmRpZGF0ZSIsIm5hbWVzJDAiLCJpc19zZWxlY3RlZCIsInNldF9jb29raWUiLCJzaGFyZWRfYXJncyIsImFzX3BwIiwic3RhbmRhbG9uZV9hcmdzIiwiZ2V0X2FyZ3MiLCJzdGFuZGFsb25lX2FyZ3MkMCIsInN0YW5kYWxvbmVfbWFpbiIsInVzYWdlIiwicmVsb2NhdGUiLCJvdXRwdXQkMCIsImVtYmVkX2Vycm9ycyQwIiwib3V0cHV0X21vZGUkMCIsInJlcGxhY2VtZW50cyIsImhvb2skMCIsImV4cGVjdF9taXNtYXRjaF9oYW5kbGVyJDAiLCJhc3RfaW5wdXRfbmFtZSIsImFzdF9raW5kIiwiZmFsbF9iYWNrX3ZlcnNpb24iLCJ1bmtub3duX21hZ2ljIiwiZmFsbF9iYWNrX3ZlcnNpb24kMCIsInRtcGZpbGUiLCJmYWlsZWRfY29tbWFuZCIsInByZXByb2Nlc3NlZF9hbmRfbG9hZGVkIiwiaW5wdXRfZm5hbWUiLCJpbnB1dF92ZXJzaW9uJDAiLCJpbnB1dF92ZXJzaW9uJDEiLCJpbnB1dF92ZXJzaW9uJDIiLCJtZXRhZGF0YSIsImlucHV0X2NvbnRlbnRzIiwidGVzdCIsIm1hZ2ljX251bWJlciIsImNvcnJlY3RlZCIsImNvcnJlY3Rpb25zJDAiLCJtaXNtYXRjaGVzX2ZvdW5kIiwibnVsbF9hc3QiLCJwYXJzZV9pbnB1dCIsInBhc3NlZF9pbl9hcmdzIiwidmFsaWRfYXJncyIsImluY29ycmVjdF9pbnB1dF9tc2ciLCJtc2ckMCIsInJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiIsImZsYWdzX2FuZF9wcm9nX25hbWUiLCJpbnB1dF9mbiIsIm91dHB1dF9mbiIsInByb2dfbmFtZV9hbmRfZmxhZ3MiLCJhc3QkNCIsImFzdCQzIiwic3RhbmRhbG9uZSIsImFyZ3YiLCJydW5fYXNfcHB4X3Jld3JpdGVyIiwicHJldHR5JDAiLCJlbmFibGVfY2hlY2tzIiwiZW5hYmxlX2xvY2F0aW9uX2NoZWNrIiwiZGlzYWJsZV9sb2NhdGlvbl9jaGVjayIsIm1hcF9zdHJ1Y3R1cmUiLCJ2YXIkMCIsInZhcnNfb2YiLCJpZ24iLCJhZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzIiwibXMiLCJmcCIsImJpbmRzX21vZHVsZV9uYW1lcyIsIndhcm5pbmdzIiwiZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpIiwia2VlcF93MzJfaW1wbCIsImtlZXBfdzMyX2ludGYiLCJrZWVwX3czMl9zcGVjIiwiY29udl93MzJfc3BlYyIsImtlZXBfdzMyX2ltcGwkMCIsImtlZXBfdzYwX2ltcGwiLCJrZWVwX3c2MF9pbnRmIiwia2VlcF93NjBfc3BlYyIsImFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsImZsYWciLCJzeW1ib2wkNCIsImlnbm9yZSIsImdlbiIsImRlcHMiLCJ1bnVzZWRfY29kZV93YXJuaW5ncyIsImFyZ19uYW1lcyIsIm1ha2Vfbm9hcmciLCJtYWtlX25vYXJnJDAiLCJhcHBseSQwIiwiYXBwbHlfYWxsIiwiZW50cnkiLCJnZW5lcmF0b3JzIiwiZXh0X3RvX2l0ZW0iLCJlbXB0eV9sYWJlbF9lcnJvciIsImR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciIsImFjY2VwdGVkX2FyZ3MiLCJwYXJhbSIsInVuYWNjZXB0ZWRfYXJndW1lbnQiLCJzcGVsbGNoZWNrX21zZyIsImxlcnIiLCJsZXJyJDAiLCJzdHJfdHlwZV9kZWNsIiwic3RyX3R5cGVfZXh0Iiwic3RyX2V4Y2VwdGlvbiIsInN0cl9tb2R1bGVfdHlwZV9kZWNsIiwic2lnX3R5cGVfZGVjbCIsInNpZ190eXBlX2V4dCIsInNpZ19leGNlcHRpb24iLCJzaWdfbW9kdWxlX3R5cGVfZGVjbCIsInJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIiwiY29sbGVjdGVkIiwiZHJ2IiwiYWxpYXMiLCJyZXNvbHZlX2ludGVybmFsIiwiZyIsIm5vdF9zdXBwb3J0ZWQiLCJyZXNvbHZlX2FsbCIsImRlcml2ZXJzIiwiZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIiwiZGVyaXZlcnNfYW5kX2FyZ3MiLCJzZWVuIiwibmFtZWRfZ2VuZXJhdG9ycyIsImxfZXJyIiwiYWN0dWFsX2Rlcml2ZXJfbmFtZSIsImR1cF9lcnJvciIsImRlcCIsImRlcF9uYW1lIiwiZGVwX2Vycm9ycyIsImFkZCIsImFjdHVhbF9kZXJpdmVyIiwiZXh0ZW5zaW9uJDAiLCJhZGRfYWxpYXMiLCJzZXQkMCIsInBhcnNlX2FyZ3VtZW50cyIsIm1rX2Rlcml2aW5nX2F0dHIiLCJnZW5lcmF0b3JfbmFtZSIsImdlbmVyYXRvciIsImRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIiwid2FybmluZyIsImlubGluZV9kb2NfYXR0ciIsIndyYXBfc3RyIiwiaGlkZSIsInVudXNlZF9jb2RlX3dhcm5pbmdzJDAiLCJ3YXJuaW5ncyQwIiwid2FybmluZ3MkMiIsIndhcm5pbmdzJDEiLCJ3cmFwIiwicGluY2xfYXR0cmlidXRlcyIsIndyYXBfc2lnIiwibWVyZ2VfZ2VuZXJhdG9ycyIsIm1lcmdlX2Rlcml2ZWQiLCJsaXN0cyIsImRlcml2ZWQiLCJvdGhlciIsImV4cGFuZF9zdHJfdHlwZV9kZWNscyIsImxfZXJyJDAiLCJleHBhbmRfc2lnX3R5cGVfZGVjbHMiLCJleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJnZW5lcmF0b3JzJDAiLCJleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJleHBhbmRfc3RyX2V4Y2VwdGlvbiIsImV4cGFuZF9zaWdfZXhjZXB0aW9uIiwiZXhwYW5kX3N0cl90eXBlX2V4dCIsImV4cGFuZF9zaWdfdHlwZV9leHQiLCJleHBhbmRfc2lnIiwiZXhwYW5kX3N0ciIsInJ1bGVfc3RyIiwicnVsZV9zaWciLCJydWxlX3N0cl9leHBlY3QiLCJydWxlX3NpZ19leHBlY3QiLCJkZXJpdmluZ19hdHRyIiwiZGVyaXZpbmdfYXR0cl9leHBlY3QiLCJydWxlc190eXBlX2RlY2wiLCJydWxlc190eXBlX2V4dCIsInJ1bGVzX2V4Y2VwdGlvbiIsInJ1bGVzX21vZHVsZV90eXBlX2RlY2wiLCJtYW5nbGUiLCJhZmZpeCIsImZpeHBvaW50IiwicCQwIiwibWFuZ2xlX3R5cGVfZGVjbCIsIm1hbmdsZV9saWQiLCJkZWZhdWx0JDAiLCJ4IiwiZHJvcF9kZWZhdWx0IiwiZHJvcF9kZWZhdWx0X2VxdWFsIiwiZHJvcF9kZWZhdWx0X2NvbXBhcmUiLCJkcm9wX2RlZmF1bHRfeW9qc29uIiwiZHJvcF9pZiIsIm9wYXF1ZSIsIm9wdGlvbiIsImFsbG93X2V4dHJhX2ZpZWxkc190ZCIsImFsbG93X2V4dHJhX2ZpZWxkc19jZCIsInlvanNvbl9rZXkiLCJ5b2pzb25fdmFyaWFudF9uYW1lIiwieW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtIiwiaW52YWxpZF9hdHRyaWJ1dGUiLCJsb2MiLCJhdHRyIiwiZGVzY3JpcHRpb24iLCJmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIiwiZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCIsImNkcyIsImNkIiwiZ2V0X2F0dHJpYnV0ZSIsImxkIiwiZiIsImNyZWF0ZSIsImdldHRlcnMiLCJjb21tb25fZ2V0dGVycyIsInR5IiwiYXR0cmlidXRlcyIsInYiLCJjcmVhdGUkMCIsImNyZWF0ZSQxIiwiZSIsImxhYmVsIiwibmFtZV9vdmVycmlkZSIsIm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidCIsIm5hbWUiLCJwcmVmaXgiLCJzeW1ib2wiLCJsaHMiLCJyaHMiLCJwZXhwX21hdGNoIiwiZXhwciIsImNhc2VzIiwicGNfcmhzIiwicGNfbGhzIiwiaWRlbnQiLCJpZGVudCQwIiwidW5yb2xsIiwibWFwX3RtcF92YXJzIiwidHMiLCJ2YXJzIiwiaSIsImJpbmRpbmdzIiwidmFyJDAiLCJpZGVudGl0eSIsImFkZF91bml2ZXJzYWxseV9ib3VuZCIsIm5hbWUkMCIsIm1hcCIsInNlbGZfMSIsImVycm9yIiwiYWRkX3R5cGV2YXJzIiwiYXV4IiwidHBfbmFtZSIsInRwX2luX3JldHVybl90eXBlIiwiZGF0YSIsInNlbGZfMiIsInJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvciIsInJpZ2lkX3R5cGVfdmFyIiwidHlwZV9uYW1lIiwic2VsZl80IiwiYWNjIiwieCQwIiwidHZhcnMiLCJjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIiwidGQiLCJ0eXAiLCJ0cHMiLCJmdW5jX25hbWUiLCJib2R5IiwiaGFzX3ZhcnMiLCJwYXQiLCJ2YXJzJDAiLCJ0eHQiLCJwYXQkMCIsInVzZV9yaWdpZF92YXJpYWJsZXMiLCJzZWxmXzMiLCJkZXNjIiwicyIsInB0eXBfZGVzYyIsImJvZHkkMCIsInRwIiwicmVhbGx5X3JlY3Vyc2l2ZSIsInJlY19mbGFnIiwidGRzIiwic2VsZl81IiwiY3R5cGUiLCJ0eXBlX29mX3lvanNvbl9vZiIsIm1rX3R5cGUiLCJzaWdfdHlwZV9kZWNsIiwidHlwZV9vZl9vZl95b2pzb24iLCJta190eXBlJDAiLCJzaWdfdHlwZV9kZWNsJDAiLCJ3aXRoX3BvbHkiLCJvZl95b2pzb25fdHlwZSIsIm9mX3lvanNvbl9pdGVtIiwieW9qc29uX29mX3R5cGVfY29uc3RyIiwiaWQiLCJhcmdzIiwieW9qc29uX29mX3R5cGUiLCJ0eXBldmFyX2hhbmRsaW5nIiwidHlwJDAiLCJsb2MkMCIsInBhcm0iLCJyZW5hbWluZyIsInZhbHVlIiwicGFybSQwIiwidHlwJDEiLCJmcHMiLCJldmFycyIsInB2YXJzIiwiaW5fZXhwciIsImV4cHIkMCIsInJvd19maWVsZHMiLCJpdGVtIiwicm93IiwiY2FsbCIsImNuc3RyIiwibGFiZWwkMCIsImNuc3RyX2V4cHIiLCJ5b2pzb25fb2ZfYXJncyIsInBhdHRzIiwicGF0dCQwIiwicGF0dCIsInBvbHlfdHAiLCJwYXJtcyIsImxvYyQxIiwicmVuYW1pbmckMCIsIm1rX2JpbmRpbmciLCJiaW5kaW5ncyQwIiwicmVuYW1pbmckMSIsImZ1bl9leHByIiwibWF0Y2hpbmdzIiwibWtfcmVjX3BhdHQiLCJwIiwieW9qc29uX29mX3JlY29yZF9maWVsZCIsInlvanNvbl9vZiIsImlzX2VtcHR5X2V4cHIiLCJrZXkiLCJleHAiLCJjbnZfZXhwciIsInlvanNvbl9vZiQwIiwiY252X2V4cHIkMCIsInZfbmFtZSIsImlzX2VtcHR5X2V4cHIkMCIsImlzX2VtcHR5X2V4cHIkMSIsImRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZSIsInR5cGVzX2JlaW5nX2RlZmluZWQiLCJ3aHkiLCJzZWxmXzYiLCJpdGVyIiwiZGlzYWxsb3dfdmFyaWFibGVzIiwiZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIiwidHlwZXNfYmVpbmdfZGVmaW5lZCQwIiwic2VsZl83IiwiaXRlciQwIiwieW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpIiwiZmxkcyIsIndyYXBfZXhwciIsImNvbGwiLCJ0ZXN0Iiwidm5hbWUiLCJibmRzIiwidGVzdCQwIiwidHAkMCIsInRwJDIiLCJwYXR0JDEiLCJ2bmFtZSQwIiwiaG93IiwidHAkMSIsImlzX2VtcHR5IiwieW9qc29uX2V4cHIiLCJpbml0X2V4cHIiLCJ5b2pzb25fb2ZfdGRzIiwicmVjX2ZsYWckMCIsInRkJDAiLCJ0cHMkMCIsInBhcmFtcyIsImNvbnN0cl9saWQiLCJjb25zdHJfbmFtZSIsImxkcyIsImNuc3RyX2V4cHIkMCIsInBjZF9hcmdzIiwiaXNfcHJpdmF0ZV9hbGlhcyIsInR5X3NyYyIsIm1hbmlmZXN0IiwibWFuaWZlc3QkMCIsInR5X2RzdCIsImNvZXJjaW9uIiwiZnVuX2V4cHIkMCIsIm1hdGNoaW5ncyQwIiwiYm9keSQxIiwieW9qc29uX2ZpZWxkc19vZl90ZCIsInlvanNvbl9maWVsZHNfb2ZfdGRzIiwiaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IiwibWF0Y2hfbGFzdCIsIm1hdGNoZXMiLCJta192YXJpYW50X290aGVyX21hdGNoZXMiLCJyZXZfZWxzIiwiY29sbF9zdHJ1Y3RzIiwiZXhjX25vX3ZhcmlhbnRfbWF0Y2giLCJmdWxsX3R5cGUiLCJpbnRlcm5hbCIsIm4iLCJhcmdzJDAiLCJhcmciLCJzJDAiLCJmdWxsX3R5cGUkMCIsImZ1bGxfdHlwZSQxIiwiaXNfY29udGFpbmVkIiwiZnVsbF90eXBlJDIiLCJ0b3BfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF90YWciLCJyZXN0IiwiaW5oIiwibG9vcCIsImgiLCJyZnRhZ19tYXRjaGVzIiwiaW5oJDAiLCJoYW5kbGVfdmFyaWFudF9pbmgiLCJvdGhlcl9tYXRjaGVzIiwiZnVuY19leHByIiwiYXBwIiwibWF0Y2hfZXhjIiwibmV3X290aGVyX21hdGNoZXMiLCJta19jbnN0cl9hcmdzX21hdGNoIiwiaXNfdmFyaWFudCIsImNuc3RyX2xhYmVsIiwidmFyX2V4cHIiLCJ2YXJzX2V4cHIiLCJnb29kX2FyZ19tYXRjaCIsInJvd19maWVsZF9saXN0Iiwicm93X2ZpZWxkIiwic2luaHMiLCJhaW5ocyIsInN0cnVjdHMiLCJhdG9tcyIsImlpbmgiLCJ0cGwiLCJyZXZfc3RydWN0c19pbmhzIiwicmV2X2F0b21zX2luaHMiLCJyZXZfc3RydWN0cyIsInJldl9hdG9tcyIsImhhc19zdHJ1Y3RzX3JlZiIsImNvbGwkMCIsIm5ld19tYXRjaCIsIm90aGVyX21hdGNoZXMkMCIsIm1hdGNoX2xhc3QkMCIsIm1hdGNoX3N0cnVjdHNfaW5ocyIsImhhc19zdHJ1Y3RzIiwibWF0Y2hfc3RydWN0IiwibWF5YmVfeW9qc29uX2FyZ3NfcGF0dCIsIm1hdGNoX2F0b21zX2luaHMiLCJta19leHRyYWN0X2ZpZWxkcyIsImFsbG93X2V4dHJhX2ZpZWxkcyIsImhhbmRsZV9leHRyYSIsImluaXRzIiwibW9yZV9mbGRzIiwibm0iLCJpbml0cyQwIiwidW5yb2xsZWQiLCJta19jbnZfZmllbGRzIiwiaGFzX3BvbHkiLCJtY19maWVsZHNfd2l0aF9hcmdzIiwiZXhwcl9yZWZfaW5pdHMiLCJmaWVsZF9yZWZzIiwiaW5pdCIsImhhc19ub25vcHRfZmllbGRzIiwiYWNjJDAiLCJnb29kX3BhdHRzIiwiYmlfbHN0IiwicmVzX3RwbHMiLCJmbGQiLCJuZXdfZ29vZF9wYXR0cyIsIm5ld19iaV9sc3QiLCJuZXdfZ29vZF9wYXR0cyQwIiwibmV3X2JpX2xzdCQwIiwiYWNjJDEiLCJnb29kX3BhdHRzJDAiLCJiaV9sc3QkMCIsInJlc190cGxzJDAiLCJjbnZ0IiwibWF0Y2hfZ29vZF9leHBycyIsIm1hdGNoX2dvb2RfZXhwciQwIiwibWF0Y2hfZ29vZF9leHByIiwiY252dCQwIiwicmVzX3BhdHQiLCJyZXNfZXhwciIsImxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qcyIsImNudl9maWVsZHMiLCJwYXRzIiwicmVjb3JkX2RlZiIsInRkX29mX3lvanNvbiIsInBvbHkiLCJwYXRoIiwiaXNfcHJpdmF0ZSIsImNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvbiIsImFsdHMkMCIsImFsdHMiLCJjbnN0cl9uYW1lIiwiZmllbGRzIiwibGJscyIsImV4dGVybmFsX25hbWUiLCJpbnRlcm5hbF9uYW1lIiwiYXJnX2V4cHJzIiwiYXJnX3BhdHRzIiwiZnVsbF90eXBlX25hbWUiLCJiaW5kX3RwX2xvY19pbiIsImludGVybmFsX2Z1bl9ib2R5Iiwibm9fdmFyaWFudF9tYXRjaF9tYyIsImludGVybmFsX2V4cHIiLCJpbnRlcm5hbF9jYWxsIiwidHJ5X3dpdGgiLCJib2R5X2JlbG93X2xhbWJkYXMiLCJuZWVkX3RwX2xvYyIsImJvZHlfd2l0aF9sYW1iZGFzIiwiZXh0ZXJuYWxfZnVuX2JvZHkiLCJpbnRlcm5hbF9iaW5kaW5ncyIsImV4dGVybmFsX2JpbmRpbmciLCJ0ZHNfb2ZfeW9qc29uIiwic2luZ2xldG9uIiwiZXh0ZXJuYWxzIiwiaW50ZXJuYWxzIiwidHlwZV9leHRlbnNpb24iLCJjb3JlX3R5cGUiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiY29yZV90eXBlJDAiLCJjdHlwIiwiZnAiLCJzaWdfdHlwZV9kZWNsJDEiLCJkZWNscyIsImluY2x1ZGVfaW5mb3MiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9rZXlzIiwiYXJyYXlfY29uc3RydWN0b3IiLCJhcnJheV9nZXQiLCJhcnJheV9zZXQiLCJhcnJheV9tYXAiLCJpZHgiLCJhcnJheV9tYXBpIiwic3RyX2FycmF5IiwibWF0Y2hfcmVzdWx0IiwiZGF0ZV9jb25zdHIiLCJtYXRoIiwiZXJyb3JfY29uc3RyIiwiZXhuX3dpdGhfanNfYmFja3RyYWNlIiwibmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInRvX3N0cmluZyIsInJhaXNlX2pzX2Vycm9yIiwiZSIsInN0cmluZ19vZl9lcnJvciIsIkpTT04iLCJkZWNvZGVVUkkiLCJzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZW5jb2RlVVJJIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwidW5lc2NhcGUiLCJpc05hTiIsImkiLCJwYXJzZUludCIsInMkMCIsInBhcnNlRmxvYXQiLCJleHBvcnRfanMiLCJmaWVsZCIsImV4cG9ydCQwIiwiZXhwb3J0X2FsbCIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJ0MSIsImFjYyQwIiwiaSQwIiwiaGFzIiwidCIsIm1hc2siLCJhZGQiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwicmVwbGFjZUNoaWxkIiwiaW5zZXJ0QmVmb3JlIiwibm9kZVR5cGUiLCJ0MTMiLCJjYXN0IiwidDE0IiwiZWxlbWVudCIsInRleHQiLCJhdHRyIiwibm9faGFuZGxlciIsImhhbmRsZXIiLCJyZXMiLCJmdWxsX2hhbmRsZXIiLCJ0aGlzJDAiLCJpbnZva2VfaGFuZGxlciIsImV2ZW50IiwiZXZlbnRUYXJnZXQiLCJtYWtlIiwiYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwidDQ0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInR5cCIsImgiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwieCQxIiwiYXJyYXlCdWZmZXIiLCJpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJhIiwidiIsInVuc2FmZV9nZXQiLCJkYXRhVmlldyIsIm9mX2FycmF5QnVmZmVyIiwidWludDgiLCJvZl9hcnJheUJ1ZmZlciQwIiwiZmlsdGVyX21hcCIsInEiLCJ2JDAiLCJibG9iX3JhdyIsImNvbnRlbnRUeXBlIiwiZW5kaW5ncyIsIm9wdGlvbnMiLCJibG9iX2Zyb21fc3RyaW5nIiwiYmxvYl9mcm9tX2FueSIsImwiLCJsJDAiLCJhJDAiLCJiIiwiZmlsZW5hbWUiLCJuYW1lJDAiLCJkb2NfY29uc3RyIiwiZG9jdW1lbnQiLCJibG9iIiwic3RyaW5nIiwibG9hZHN0YXJ0IiwicHJvZ3Jlc3MiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsImxvYWRlbmQiLCJmaWxlUmVhZGVyIiwibmFtZSQ1NiIsIm5hbWUkNTUiLCJuYW1lJDU0IiwibmFtZSQ1MyIsIm5hbWUkNTIiLCJuYW1lJDUxIiwibmFtZSQ1MCIsIm5hbWUkNDkiLCJuYW1lJDQ4IiwibmFtZSQ0NyIsIm5hbWUkNDYiLCJuYW1lJDQ1IiwibmFtZSQ0NCIsIm5hbWUkNDMiLCJuYW1lJDQyIiwibmFtZSQ0MSIsIm5hbWUkNDAiLCJuYW1lJDM5IiwibmFtZSQzOCIsIm5hbWUkMzciLCJuYW1lJDM2IiwibmFtZSQzNSIsIm5hbWUkMzQiLCJuYW1lJDMzIiwibmFtZSQzMiIsIm5hbWUkMzEiLCJuYW1lJDMwIiwibmFtZSQyOSIsIm5hbWUkMjgiLCJuYW1lJDI3IiwibmFtZSQyNiIsIm5hbWUkMjUiLCJuYW1lJDI0IiwibmFtZSQyMyIsIm5hbWUkMjIiLCJuYW1lJDIxIiwibmFtZSQyMCIsIm5hbWUkMTkiLCJuYW1lJDE4IiwibmFtZSQxNyIsIm5hbWUkMTYiLCJuYW1lJDE1IiwibmFtZSQxNCIsIm5hbWUkMTMiLCJuYW1lJDEyIiwibmFtZSQxMSIsIm5hbWUkMTAiLCJuYW1lJDkiLCJuYW1lJDgiLCJuYW1lJDciLCJuYW1lJDYiLCJuYW1lJDUiLCJuYW1lJDQiLCJuYW1lJDMiLCJuYW1lJDIiLCJuYW1lJDEiLCJvbklFIiwiY2FuY2VsIiwiY2xpY2siLCJjbG9zZSIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm8iLCJ3aW5kb3ciLCJnZXRFbGVtZW50QnlJZCIsInBub2RlIiwiZ2V0RWxlbWVudEJ5SWRfZXhuIiwiZ2V0RWxlbWVudEJ5SWRfb3B0IiwiZ2V0RWxlbWVudEJ5SWRfY29lcmNlIiwiY3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZG9jIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaWFsb2ciLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwIiwicHJlIiwic2NyaXB0Iiwic2VsZWN0JDAiLCJzdHlsZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRleHRhcmVhIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidGl0bGUiLCJ0ciIsInVsIiwiYXVkaW8iLCJ2aWRlbyIsInVuc2FmZUNvZXJjZUV2ZW50IiwiY29uc3RyIiwiZXYiLCJtb3VzZUV2ZW50Iiwia2V5Ym9hcmRFdmVudCIsIndoZWVsRXZlbnQiLCJtb3VzZVNjcm9sbEV2ZW50IiwicG9wU3RhdGVFdmVudCIsIm1lc3NhZ2VFdmVudCIsImV2ZW50UmVsYXRlZFRhcmdldCIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiQwIiwiZWxlbWVudENsaWVudFBvc2l0aW9uIiwiZ2V0RG9jdW1lbnRTY3JvbGwiLCJidXR0b25QcmVzc2VkIiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoIiwiZHgiLCJkeSIsImFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIiwidHJ5X2NvZGUiLCJ0cnlfa2V5X2NvZGVfbm9ybWFsIiwibWFrZV91bmlkZW50aWZpZWQiLCJvZl9ldmVudCIsInZhbHVlIiwidmFsdWUkMyIsInZhbHVlJDIiLCJ2YWx1ZSQxIiwidmFsdWUkMCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwicmVxIiwiYyIsImNhbGxiYWNrIiwibm93IiwibGFzdCIsImR0IiwiaGFzUHVzaFN0YXRlIiwiaGFzUGxhY2Vob2xkZXIiLCJoYXNSZXF1aXJlZCIsIm92ZXJmbG93X2xpbWl0Iiwic2V0VGltZW91dCIsImxvb3AiLCJyZW1haW4iLCJzdGVwIiwiY2IiLCJjbGVhclRpbWVvdXQiLCJqc19hcnJheV9vZl9jb2xsZWN0aW9uIiwiZm9ybURhdGEiLCJmb3JtRGF0YV9mb3JtIiwiaGF2ZV9jb250ZW50IiwiZ2V0X2VsZW1lbnRfY29udGVudCIsImZpbGUiLCJmb3JtX2VsZW1lbnRzIiwiaSQxIiwidDMxIiwiYXBwZW5kIiwiZm9ybV9jb250ZW50cyIsImZvcm1fZWx0IiwibGlzdCIsImVtcHR5X2Zvcm1fY29udGVudHMiLCJwb3N0X2Zvcm1fY29udGVudHMiLCJjb250ZW50cyIsImdldF9mb3JtX2NvbnRlbnRzIiwicmVhZHlzdGF0ZWNoYW5nZSIsInRpbWVvdXQiLCJjcmVhdGUiLCJpbXBvcnRfc2NyaXB0cyIsInNjcmlwdHMiLCJzZXRfb25tZXNzYWdlIiwianNfaGFuZGxlciIsInBvc3RfbWVzc2FnZSIsIndlYlNvY2tldCIsImlzX3N1cHBvcnRlZCIsImRlZmF1bHRDb250ZXh0QXR0cmlidXRlcyIsIndlYmdsY29udGV4dGxvc3QiLCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiLCJnZXRDb250ZXh0IiwiY3R4IiwiZ2V0Q29udGV4dFdpdGhBdHRyaWJ1dGVzIiwicmVnZXhwIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF93aXRoX2ZsYWciLCJibHVudF9zdHJfYXJyYXlfZ2V0Iiwic3RyaW5nX21hdGNoIiwic2VhcmNoIiwicmVzX3ByZSIsIm1hdGNoZWRfc3RyaW5nIiwiciIsIm1hdGNoZWRfZ3JvdXAiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImxpc3Rfb2ZfanNfYXJyYXkiLCJpZHgkMSIsImFjY3UiLCJpZHgkMCIsImFjY3UkMCIsInNwbGl0IiwiYm91bmRlZF9zcGxpdCIsInF1b3RlIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiaW50ZXJydXB0IiwicGx1c19yZSIsInVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIiwidDE2IiwidXJsZGVjb2RlIiwidXJsZW5jb2RlIiwid2l0aF9wbHVzIiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsIm4iLCJkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyIsImxlbiIsInQzIiwiZGVjb2RlX2FyZ3VtZW50cyIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwYXRoX3N0ciIsInNzbCIsInVybCIsInVybF9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfdXJsIiwiZnJhZyIsImFyZ3MiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJmcmFnJDAiLCJhcmdzJDAiLCJwYXRoJDAiLCJwb3J0JDAiLCJob3N0JDAiLCJmcmFnJDEiLCJhcmdzJDEiLCJwYXRoJDEiLCJkZWZhdWx0X2h0dHBfcG9ydCIsImRlZmF1bHRfaHR0cHNfcG9ydCIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJvYnNlcnZlIiwiYm94IiwiZW50cnlfdHlwZXMiLCJlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0IiwiY2hpbGRfbGlzdCIsImF0dHJpYnV0ZXMiLCJjaGFyYWN0ZXJfZGF0YSIsInN1YnRyZWUiLCJhdHRyaWJ1dGVfb2xkX3ZhbHVlIiwiY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIiwiYXR0cmlidXRlX2ZpbHRlciIsInJlbW92ZSIsImZpbmQiLCJrZXlzIiwicmV2aXZlciIsInVuc2FmZV9pbnB1dCIsIm1sSW50NjRfY29uc3RyIiwib3V0cHV0X3Jldml2ZXIiLCJvdXRwdXQiLCJzdHJpbmdfb2ZfbmFtZSIsIm5hbWVfb2Zfc3RyaW5nIiwicmdiX29mX25hbWUiLCJyZ2IiLCJoc2wiLCJzdHJpbmdfb2ZfdCIsImIkMCIsImckMCIsInIkMCIsImIkMSIsImckMSIsInIkMSIsImIkMiIsImckMiIsInIkMiIsImEkMSIsImgkMCIsImhleF9vZl9yZ2IiLCJibHVlIiwiZ3JlZW4iLCJyZWQiLCJpbl9yYW5nZSIsImpzX3Rfb2ZfanNfc3RyaW5nIiwidDEyIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwiY3JlYXRlQWx0R2x5cGgiLCJjcmVhdGVBbHRHbHlwaERlZiIsImNyZWF0ZUFsdEdseXBoSXRlbSIsImNyZWF0ZUFuaW1hdGUiLCJjcmVhdGVBbmltYXRlQ29sb3IiLCJjcmVhdGVBbmltYXRlTW90aW9uIiwiY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSIsImNyZWF0ZUNpcmNsZSIsImNyZWF0ZUNsaXBQYXRoIiwiY3JlYXRlQ3Vyc29yIiwiY3JlYXRlRGVmcyIsImNyZWF0ZURlc2MiLCJjcmVhdGVFbGxpcHNlIiwiY3JlYXRlRmlsdGVyIiwiY3JlYXRlRm9udCIsImNyZWF0ZUZvbnRGYWNlIiwiY3JlYXRlRm9udEZhY2VGb3JtYXQiLCJjcmVhdGVGb250RmFjZU5hbWUiLCJjcmVhdGVGb250RmFjZVNyYyIsImNyZWF0ZUZvbnRGYWNlVXJpIiwiY3JlYXRlRm9yZWlnbk9iamVjdCIsImNyZWF0ZUciLCJjcmVhdGVHbHlwaCIsImNyZWF0ZUdseXBoUmVmIiwiY3JlYXRlaGtlcm4iLCJjcmVhdGVJbWFnZSIsImNyZWF0ZUxpbmVFbGVtZW50IiwiY3JlYXRlTGluZWFyRWxlbWVudCIsImNyZWF0ZU1hc2siLCJjcmVhdGVNZXRhRGF0YSIsImNyZWF0ZU1pc3NpbmdHbHlwaCIsImNyZWF0ZU1QYXRoIiwiY3JlYXRlUGF0aCIsImNyZWF0ZVBhdHRlcm4iLCJjcmVhdGVQb2x5Z29uIiwiY3JlYXRlUG9seWxpbmUiLCJjcmVhdGVSYWRpYWxncmFkaWVudCIsImNyZWF0ZVJlY3QiLCJjcmVhdGVTZXQiLCJjcmVhdGVTdG9wIiwiY3JlYXRlU3ZnIiwiY3JlYXRlU3dpdGNoIiwiY3JlYXRlU3ltYm9sIiwiY3JlYXRlVGV4dEVsZW1lbnQiLCJjcmVhdGVUZXh0cGF0aCIsImNyZWF0ZVRyZWYiLCJjcmVhdGVUc3BhbiIsImNyZWF0ZVVzZSIsImNyZWF0ZVZpZXciLCJjcmVhdGV2a2VybiIsInN2Z19lbGVtZW50IiwidDgiLCJhbHRHbHlwaCIsImFsdEdseXBoRGVmIiwiYWx0R2x5cGhJdGVtIiwiYW5pbWF0ZSIsImFuaW1hdGVDb2xvciIsImFuaW1hdGVNb3Rpb24iLCJhbmltYXRlVHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcFBhdGgiLCJjdXJzb3IiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJmaWx0ZXIiLCJmb250IiwiZm9udEZhY2UiLCJmb250RmFjZUZvcm1hdCIsImZvbnRGYWNlTmFtZSIsImZvbnRGYWNlU3JjIiwiZm9udEZhY2VVcmkiLCJmb3JlaWduT2JqZWN0IiwiZ2x5cGgiLCJnbHlwaFJlZiIsImhrZXJuIiwiaW1hZ2UiLCJsaW5lRWxlbWVudCIsImxpbmVhckVsZW1lbnQiLCJtZXRhRGF0YSIsIm1pc3NpbmdHbHlwaCIsIm1QYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbGdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJzdmciLCJzd2l0Y2gkMCIsInN5bWJvbCIsInRleHRFbGVtZW50IiwidGV4dHBhdGgiLCJ0cmVmIiwidHNwYW4iLCJ1c2UiLCJ2aWV3Iiwidmtlcm4iLCJ3aXRoQ3JlZGVudGlhbHMiLCJldmVudFNvdXJjZSIsImV2ZW50U291cmNlX29wdGlvbnMiLCJjb25zb2xlIiwiZW1wdHlfcG9zaXRpb25fb3B0aW9ucyIsImdlb2xvY2F0aW9uIiwiZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wIiwiaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlIiwib2JqZWN0X29wdGlvbnMiLCJvcHRpb25zJDAiLCJvcHRpb25zJDEiLCJvcHRpb25zJDIiLCJpbnRsIiwiY29sbGF0b3JfY29uc3RyIiwiZGF0ZVRpbWVGb3JtYXRfY29uc3RyIiwibnVtYmVyRm9ybWF0X2NvbnN0ciIsInBsdXJhbFJ1bGVzX2NvbnN0ciIsInRvX2FycmF5ZiIsImYiLCJhIiwib2ZfYXJyYXlmIiwidG9fbGlzdCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdGYiLCJvZl9saXN0ZiIsIm9wdGRlZiIsIngiLCJ0b19vcHRkZWYiLCJ4JDAiLCJ1bm9wdGRlZl9mIiwiZGVmIiwidW5vcHRkZWYiLCJjb252ZGVmIiwidG9fb3B0Iiwib3B0IiwiY29udm9wdCIsImpzX2xvZyIsImxvZ19zdHIiLCJzIiwibG9nIiwiZm10IiwiZXJyb3Jfb2Zfc3RyaW5nIiwiY2F0Y2hfZXhuIiwiZXhuIiwiZSIsIm51bGwkMSIsInVuZGVmaW5lZCQxIiwiaXNfbm9uZSIsIm1hcCIsIm5vbmUiLCJiaW5kIiwidGVzdCIsIml0ZXIiLCJjYXNlJDAiLCJnIiwiZ2V0Iiwib3B0aW9uIiwidG9fb3B0aW9uIiwiYW9wdCIsInRvX2FvcHQiLCJjaG9vc2VfY2FzZV9vcHQiLCJ0IiwiaCIsImNob29zZV9jYXNlIiwiYXNzaWduIiwiYXNzaWduX2xpc3QiLCJyZW1vdmVfdW5kZWZpbmVkIiwibyIsImsiLCJjcmVhdGUiLCJhZGQiLCJ2IiwiYWRkX2xpc3QiLCJhZGRfbGlzdGYiLCJtYWtlIiwibWFrZWYiLCJyZW1vdmUiLCJmaW5kIiwia2V5cyIsIml0ZW1zIiwiaXRlbXNmIiwibGVuZ3RoIiwibWVyZ2UiLCJwcm9taXNlIiwianRoZW4wIiwiZXJyb3IiLCJleG4kMCIsImVmIiwiZXJyb3IkMCIsImp0aGVuIiwianRoZW4wX29wdCIsInByb20iLCJqdGhlbl9vcHQiLCJydGhlbiIsImxvZzIiLCJsb2czIiwibG9nX3N0cjIiLCJzMSIsInMyIiwibG9nX3N0cjMiLCJzMyIsImRlYnVnIiwiZGVidWcyIiwiZGVidWczIiwiZGVidWdfc3RyIiwiZGVidWdfc3RyMiIsImRlYnVnX3N0cjMiLCJ3YXJuIiwid2FybjIiLCJ3YXJuMyIsIndhcm5fc3RyIiwid2Fybl9zdHIyIiwid2Fybl9zdHIzIiwiZXJyb3IyIiwiZXJyb3IzIiwiZXJyb3Jfc3RyIiwiZXJyb3Jfc3RyMiIsImVycm9yX3N0cjMiLCJiaWdJbnQiLCJvZl9zdHJpbmciLCJvZl9pbnQiLCJpIiwib2ZfaW50NjQiLCJvZl9uYXRpdmUiLCJvZl9mbG9hdCIsInRvX2xvY2FsZV9zdHJpbmciLCJvcHRpb25zIiwidG9fc3RyaW5nIiwic2V0SW5uZXJIdG1sIiwic2V0VGV4dCIsImFkZENsYXNzIiwiYWRkQ2xhc3NlcyIsImVsdCIsInJlbW92ZUNsYXNzIiwiY29udGFpbnNDbGFzcyIsInNldEF0dHJpYnV0ZSIsImtleSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlIiwic2V0Q1NTIiwic3R5bGVzIiwic3R5bGVzJDAiLCJhZGRDU1MiLCJvbGRfc3R5bGVzIiwic3R5bGVzJDEiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGRyZW4iLCJwYXJlbnQiLCJjaGlsZHJlbiIsInJlbW92ZUNoaWxkaSIsImNoaWxkIiwicmVtb3ZlQ2hpbGRyZW4iLCJyZXBsYWNlQ2hpbGRyZW4iLCJieV9pZCIsImFkZExpc3RlbmVyIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwiZXYiLCJjYXB0dXJlJDAiLCJvbmNlJDAiLCJwYXNzaXZlJDAiLCJ0ZXh0IiwiY2xhc3NlcyIsImxpc3RlbiIsImF0dHIiLCJidXR0b24iLCJkaXYiLCJzcGFuIiwiZm9ybSIsInNlbGVjdCIsImlucHV0IiwiaWZyYW1lIiwibGFiZWwiLCJ1bCIsImxpIiwiaW1nIiwic2NyaXB0IiwidGFibGUiLCJ0ciIsInRoIiwidGQiLCJlbmNhcHNlIiwic3RyaW5nc190b19hcnJheSIsInN0cmluZ3NfdG9fb2JqZWN0Iiwic3RyX29mX21vZGUiLCJzdHJfb2ZfZGlyZWN0aW9uIiwiaURCS2V5UmFuZ2UiLCJpbmRleGVkREIiLCJyZXN1bHQiLCJ3cmFwIiwiZXJyb3IiLCJjYWxsYmFjayIsInIiLCJmIiwiZSIsImV4biQwIiwiZXhuIiwid3JhcGYiLCJnIiwiZGJfdXBncmFkZV9ldmVudCIsIm9wZW5EQiIsInVwZ3JhZGUiLCJ2ZXJzaW9uIiwibmFtZSIsInUiLCJ2IiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNyZWF0ZV9kYl9vcHRpb25zIiwiYXV0b19pbmNyZW1lbnQiLCJrZXlfcGF0aCIsImNyZWF0ZV9zdG9yZSIsIm9wdGlvbnMiLCJnZXRfc3RvcmUiLCJtb2RlIiwiY3JlYXRlIiwic3RvcmUiLCJhZGQiLCJrZXkiLCJ4IiwicHV0IiwicmFuZ2UiLCJvbG93ZXIiLCJvdXBwZXIiLCJsb3dlciIsInVwcGVyIiwidXBwZXIkMSIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY291bnQiLCJrIiwiZ2V0Iiwib2ZfanMiLCJqcyIsImpzJDAiLCJnZXRfYWxsIiwiZ2V0X2tleSIsImdldF9hbGxfa2V5cyIsImRlbGV0ZSQwIiwiaXRlciIsImRpcmVjdGlvbiIsImMiLCJmb2xkIiwic3RhcnQiLCJhY2MiLCJjYWxsYmFjayQwIiwiaXRlcl9rZXlzIiwiZm9sZF9rZXlzIiwiY2xlYXIiLCJjcmVhdGVfaW5kZXhfb3B0aW9ucyIsImxvY2FsZSIsIm11bHRpX2VudHJ5IiwidW5pcXVlIiwiY3JlYXRlX2luZGV4IiwiZGVsZXRlX2luZGV4IiwiZ2V0X2luZGV4IiwidG9fanMiLCJ0b19qcyQwIiwib2ZfanMkMCIsInRvX2pzJDEiLCJvZl9qcyQxIiwiZmxhZ3MiLCJlcXVhbCIsInQxIiwidDIiLCJzZWVrIiwicG9zIiwibGVuZ3RoIiwic3RkaW4iLCJjcmVhdGUiLCJmaWxlIiwiYmluYXJ5IiwiZmxhZ3MkMCIsImNsb3NlIiwid2l0aF9maWxlIiwiZiIsIm1heV9lb2YiLCJpbnB1dCIsInQiLCJidWYiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfZXhuIiwiaW5wdXRfYnl0ZSIsImlucHV0X2NoYXIiLCJpbnB1dF9iaW5hcnlfaW50IiwidW5zYWZlX2lucHV0X3ZhbHVlIiwiaW5wdXRfYnVmZmVyIiwic2V0X2JpbmFyeV9tb2RlIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImJ1ZmZlciIsInRyaW0iLCJmaXhfd2luX2VvbCIsImxpbmUiLCJpbnB1dF9saW5lIiwiaW5wdXRfbGluZV9leG4iLCJmb2xkX2xpbmVzIiwiaW5pdCIsImFjIiwiYWMkMCIsImlucHV0X2xpbmVzIiwibGluZXMiLCJpdGVyX2xpbmVzIiwicmVhZF9saW5lcyIsImZuYW1lIiwicmVhZF9hbGwiLCJzdGRvdXQiLCJzdGRlcnIiLCJzZXhwX29mX3QiLCJhcHBlbmQiLCJmYWlsX2lmX2V4aXN0cyIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsImZsdXNoIiwiY2xvc2Vfbm9fZXJyIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfYnVmZmVyIiwib3V0cHV0X3ZhbHVlIiwibmV3bGluZSIsIm91dHB1dF9saW5lcyIsInByaW50ZiIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludF9zdHJpbmciLCJwcmludF9lbmRsaW5lIiwicHJlcnJfZW5kbGluZSIsInByaW50X3MiLCJtYWNoIiwic2V4cCIsImVwcmludF9zIiwid3JpdGVfbGluZXMiLCJ3cml0ZV9hbGwiLCJkYXRhIiwidF9zZXhwX2dyYW1tYXIiLCJleG5fc2V4cF9zdHlsZSIsIm1lc3NhZ2UiLCJwb3MiLCJ4XzAwNSIsInRhZyIsImJvZHkiLCJzIiwibWVzc2FnZSQwIiwic2V4cCIsInRlc3RfcHJlZCIsInNleHBpZmllciIsImhlcmUiLCJwcmVkaWNhdGUiLCJ0Iiwicl9kaWZmIiwic2V0X2RpZmZfZnVuY3Rpb24iLCJmIiwidGVzdF9yZXN1bHRfb3JfZXEiLCJjb21wYXJhdG9yIiwiZXF1YWwiLCJleHBlY3QkMCIsImdvdCQwIiwicGFzcyIsImdvdCIsImV4cGVjdCIsImRpZmYiLCJmcm9tIiwidG8iLCJ0ZXN0X2VxIiwidDEiLCJ0MiIsInQyJDAiLCJ0MSQwIiwidGVzdF9yZXN1bHQiLCJudWxsJDAiLCJyIiwibGlibmFtZV9yZWYiLCJzZXQiLCJzdHIiLCJ1bnNldCIsInQiLCJwb3BfZXhuIiwiY29tcGFyZSIsInQxIiwidDIiLCJnZXRfbW9kdWxlX25hbWVfb3B0IiwibGVuIiwiaSIsImkkMCIsIndpdGhfdGVzdF9zcGVjIiwidGVzdF9zcGVjIiwidiIsImFkZF9lbnZpcm9ubWVudF92YXIiLCJsaWJzX3RvX2VudHJpZXMiLCJsb29rdXBfcmV2X2xpYiIsImxpYm5hbWUiLCJsb29rdXBfbGliIiwiZm9yY2VfZHJvcCIsImdldF9tb2RlIiwiYWRkX2JlbmNoIiwibmFtZSIsImNvZGUiLCJmaWxlbmFtZSIsInR5cGVfY29udl9wYXRoIiwibGluZSIsInN0YXJ0cG9zIiwiZW5kcG9zIiwibXMiLCJlbnRyeSIsImFkZF9iZW5jaF9tb2R1bGUiLCJmIiwiZXgkMCIsImV4IiwiZW1wdHkiLCJtYWtlIiwicyIsImNvbXBhcmUiLCJ0b19iaW5hcnkiLCJvZl9iaW5hcnlfZXhuIiwidG9faGV4Iiwib2ZfaGV4X2V4biIsInN0cmluZyIsImJ5dGVzIiwic3ViYnl0ZXMiLCJwb3MiLCJsZW4iLCJlcnJvcl9zb3VyY2VfMTk0IiwiZXJyb3Jfc291cmNlXzI2MyIsImVycm9yX3NvdXJjZV8yNzUiLCJlcnJvcl9zb3VyY2VfMzE3IiwiZXJyb3Jfc291cmNlXzQxNCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsImVxdWFsIiwidF9vZl9zZXhwJDAiLCJzZXhwX29mX3QkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJjb21wYXJlIiwiZXF1YWwkMCIsImV2YWxfZmFpbCIsImxvYyIsImZtdCIsInMiLCJjdXN0b21fcHJpbnRmXzAwMSIsImVxdWFsX29wdGlvbiIsImEiLCJiIiwieSIsIngiLCJjb21wYXJlJDAiLCJjbXBfYSIsImFfMDAyIiwiYl8wMDMiLCJhXzAwNCIsImJfMDA1IiwidF8wMDciLCJ0XzAwNiIsInRfMDA5IiwidF8wMDgiLCJuIiwic2V4cF9vZl90JDEiLCJvZl9hXzAxOSIsInNvcnRlZF8wMjEiLCJhcmdfMDIyIiwiYXJnMV8wMjQiLCJhcmcwXzAyMyIsInJlczBfMDI1IiwicmVzMV8wMjYiLCJibmRzXzAyMCIsImNyZWF0ZSIsImVxIiwieHMkMSIsInNvcnRlZCIsInMyIiwiczEiLCJ4cyQwIiwibGFzdF92YWx1ZSQxIiwibGFzdF9rZXkkMSIsImFjYyIsImxhc3Rfa2V5IiwibGFzdF92YWx1ZSIsInhzIiwibGFzdF92YWx1ZSQwIiwibGFzdF9rZXkkMCIsInNvcnRlZCQwIiwiZXhwb3NlIiwidCIsIm1hcCIsImYiLCJ2IiwiayIsInRvX21kNSIsIm9mX21kNSIsInNleHBfb2ZfdCQyIiwidF9vZl9zZXhwJDEiLCJ1dWlkIiwidSIsImludCQwIiwicGFpciIsImxpc3QiLCJsIiwiY29uc3RydWN0b3IiLCJzZXhwX29mX3QkMyIsIm9mX2FfMDk2IiwiYXJnMV8wOTgiLCJhcmcwXzA5NyIsInJlczBfMDk5IiwicmVzMV8xMDAiLCJhcmcxXzEwMiIsImFyZzBfMTAxIiwicmVzMF8xMDMiLCJyZXMxXzEwNCIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJhcmcwXzExMSIsInJlczBfMTEyIiwiYXJnMV8xMDgiLCJhcmcwXzEwNyIsInJlczBfMTA5IiwicmVzMV8xMTAiLCJhcmcwXzExNyIsInJlczBfMTE4IiwiYXJnMV8xMTQiLCJhcmcwXzExMyIsInJlczBfMTE1IiwicmVzMV8xMTYiLCJhcmcwXzExOSIsInJlczBfMTIwIiwiYXJnMV8xMjIiLCJhcmcwXzEyMSIsInJlczBfMTIzIiwicmVzMV8xMjQiLCJhcmcxXzEyNiIsImFyZzBfMTI1IiwicmVzMF8xMjciLCJyZXMxXzEyOCIsImFyZzBfMTI5IiwicmVzMF8xMzAiLCJjb21wYXJlJDIiLCJhXzEzMiIsImJfMTMzIiwiYV8xMzQiLCJiXzEzNyIsImJfMTM1IiwiYV8xMzYiLCJhXzE0MCIsImFfMTM4IiwiYl8xNDEiLCJiXzEzOSIsIm4kMCIsImFfMTQyIiwiYl8xNDMiLCJhXzE0NCIsImJfMTQ1IiwiYV8xNDYiLCJiXzE0NyIsImFfMTQ4IiwiYl8xNDkiLCJhXzE1MCIsImJfMTUxIiwidF8xNTMiLCJ0XzE1MiIsInRfMTU1IiwidF8xNTQiLCJhXzE1NiIsImJfMTU3IiwiYV8xNTgiLCJiXzE1OSIsInRfMTYxIiwidF8xNjAiLCJ0XzE2MyIsInRfMTYyIiwiYV8xNjQiLCJiXzE2NSIsImFfMTY2IiwiYl8xNjciLCJhXzE2OCIsImJfMTY5IiwiYV8xNzAiLCJiXzE3MSIsImFfMTc0IiwiYV8xNzIiLCJiXzE3NSIsImJfMTczIiwibiQxIiwiYV8xNzYiLCJiXzE3NyIsImFfMTgwIiwiYV8xNzgiLCJiXzE4MSIsImJfMTc5IiwibiQyIiwiYV8xODIiLCJiXzE4MyIsImFfMTg0IiwiYl8xODUiLCJtYXAkMCIsIngkMCIsImwkMCIsImwkMSIsIngkMSIsImwkMiIsInQkMCIsInRvX3N0cmluZyQxIiwiZGlnZXN0X2xheWVyIiwidSQwIiwidGFibGUiLCJsJDMiLCJsJDQiLCJ0b19kaWdlc3QiLCJ0b19kaWdlc3QkMCIsIngkMiIsImVxdWFsJDEiLCJvcGFxdWUiLCJjcmVhdGUkMCIsImRlc2MiLCJ2YXIkMCIsImFwcGx5IiwiZGVmIiwicmVjdXJzZSIsInRpZCIsImdldF9wb2x5X3ZhcmlhbnQiLCJhbm5vdGF0ZSIsImJhc2V0eXBlIiwidHVwbGUiLCJwb2x5X3ZhcmlhbnQiLCJ2YXIkMSIsImFwcGx5JDAiLCJyZWN1cnNlJDAiLCJkZWZpbmUiLCJyZWNvcmQiLCJ2YXJpYW50IiwiY3JlYXRlJDEiLCJlIiwiY29tcGFyZV90MCIsImFfMTg2IiwiYl8xODciLCJiXzE4OSIsImFfMTg4IiwiYV8xOTAiLCJiXzE5MSIsInNleHBfb2ZfdDAiLCJhcmcwXzIwMSIsInJlczBfMjAyIiwiZXF1YWxfdDAiLCJ2YXIkMiIsImFwcGx5JDEiLCJkIiwicmVjdXJzZSQxIiwiciIsImdldF9wb2x5X3ZhcmlhbnQkMCIsImNjIiwidGFiIiwib3BhcXVlJDAiLCJ0b19kaWdlc3QkMSIsInRvX2RpZ2VzdCQyIiwiYW5ub3RhdGUkMCIsImJhc2V0eXBlJDAiLCJ0dXBsZSQwIiwicG9seV92YXJpYW50JDAiLCJ2YXIkMyIsInJlY3Vyc2UkMiIsImFwcGx5JDIiLCJkZWZpbmUkMCIsInJlY29yZCQwIiwidmFyaWFudCQwIiwiY3JlYXRlJDIiLCJleHAiLCJ0b19zdHJpbmdfaHVtIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkNCIsIm9mX3N0cmluZyQxIiwidG9fc3RyaW5nJDIiLCJzeW1ib2wiLCJjb21wYXJlJDMiLCJlcXVhbCQyIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkNSIsIm9mX3N0cmluZyQyIiwidG9fc3RyaW5nJDMiLCJjb21wYXJhdG9yIiwiZXF1YWwkMyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ2IiwiY3JlYXRlJDMiLCJ0cmlwcyIsImdpZCIsIm1lbWJlcnMiLCJ2cyIsImxvb2t1cCIsImciLCJjdXN0b21fcHJpbnRmXzM0NSIsInNjaGVtZSIsImVxdWFsJDUiLCJhXzM0NiIsImJfMzQ3IiwiYV8zNDYkMCIsImJfMzQ3JDAiLCJhXzM0OCIsImJfMzUxIiwiYl8zNDkiLCJhXzM1MCIsImFfMzU0IiwiYV8zNTIiLCJiXzM1NSIsImJfMzUzIiwiYV8zNTYiLCJiXzM1NyIsImFfMzU4IiwiYl8zNTkiLCJhXzM2MCIsImJfMzYxIiwidF8zNjMiLCJ0XzM2MiIsInRfMzY1IiwidF8zNjQiLCJhXzM2NiIsImJfMzY3IiwiYV8zNjgiLCJiXzM2OSIsInRfMzcxIiwidF8zNzAiLCJ0XzM3MyIsInRfMzcyIiwiYV8zNzQiLCJiXzM3NSIsImFfMzc2IiwiYl8zNzciLCJhXzM3OCIsImJfMzc5IiwiYV8zODAiLCJiXzM4MSIsInRfMzgzIiwidF8zODIiLCJ0XzM4NSIsInRfMzg0IiwiYV8zODYiLCJiXzM4NyIsInJpZ2h0XzIzOCIsImxlZnRfMjM3IiwidF8yNDAiLCJ0XzIzOSIsInRfMjQyIiwidF8yNDEiLCJhXzI0MyIsImJfMjQ0IiwicmlnaHRfMjQ2IiwibGVmdF8yNDUiLCJ0XzI0OCIsInRfMjQ3IiwidF8yNTAiLCJ0XzI0OSIsImFfMzkwIiwiYl8zOTEiLCJ0XzM5MyIsInRfMzkyIiwidF8zOTUiLCJ0XzM5NCIsImFfMzk4IiwiYV8zOTYiLCJiXzM5OSIsImJfMzk3IiwiYV80MDAiLCJiXzQwMSIsImFfNDA2IiwiYV80MDQiLCJhXzMwMSIsImJfNDA3IiwiYl80MDUiLCJiXzQwMyIsImFfMzAzIiwiYl8zMDQiLCJ0XzMwNiIsInRfMzA1IiwidF8zMDgiLCJ0XzMwNyIsInRfMzEwIiwidF8zMDkiLCJ0XzMxMiIsInRfMzExIiwiYV8zMTMiLCJiXzMxNCIsImFfNDEwIiwiYl80MTEiLCJ0X29mX3NleHAkNSIsInNleHBfNDE2IiwidGFnXzQxNyIsInNleHBfYXJnc180MTgiLCJhcmcxXzQyMCIsImFyZzBfNDE5IiwicmVzMF80MjEiLCJyZXMxXzQyMiIsInNleHBfYXJnc180MjUiLCJhcmcxXzQyNyIsImFyZzBfNDI2IiwicmVzMF80MjgiLCJyZXMxXzQyOSIsInNleHBfYXJnc180NTciLCJhcmcwXzQ2MyIsImFyZzFfNDU5IiwiYXJnMF80NTgiLCJyZXMwXzQ2MCIsInJlczFfNDYxIiwic2V4cF8yNTUiLCJhdG9tXzI1MyIsInNleHBfYXJnc18yNTYiLCJhdG9tXzI1MyQwIiwiYXJnMF8yNjQiLCJhcmcxXzI1OSIsImFyZzBfMjU4IiwicmVzMF8yNjAiLCJyZXMxXzI2MSIsInJlczBfMjY1IiwiYXJnMF8yNzIiLCJhcmcxXzI2OCIsImFyZzBfMjY3IiwicmVzMF8yNjkiLCJyZXMxXzI3MCIsInJlczBfMjczIiwicmVzMF80NjQiLCJzZXhwX2FyZ3NfNDc3IiwiYXJnMV80NzkiLCJhcmcwXzQ3OCIsInJlczBfNDgwIiwicmVzMV80ODEiLCJzZXhwX2FyZ3NfNDMyIiwiYXJnMF80MzgiLCJyZXMwXzQzOSIsInNleHBfNDM3IiwiYXJnMV80MzQiLCJhcmcwXzQzMyIsInJlczBfNDM1IiwicmVzMV80MzYiLCJzZXhwX2FyZ3NfNDg0IiwiYXJnMl80ODciLCJhcmcxXzQ4NiIsImFyZzBfNDg1Iiwic2V4cF8zMjciLCJhcmcxXzMyNCIsImFyZzBfMzIzIiwicmVzMF8zMjUiLCJhcmcxXzMxOSIsImFyZzBfMzE4IiwicmVzMF8zMjAiLCJyZXMxXzMyMSIsInJlczFfMzI2IiwicmVzMF80ODgiLCJyZXMxXzQ4OSIsInJlczJfNDkwIiwic2V4cF9hcmdzXzQ1MiIsImFyZzBfNDUzIiwicmVzMF80NTQiLCJzZXhwX2FyZ3NfNDY3IiwiYXJnMF80NzMiLCJhcmcxXzQ2OSIsImFyZzBfNDY4IiwicmVzMF80NzAiLCJyZXMxXzQ3MSIsInJlczBfNDc0Iiwic2V4cF9hcmdzXzQ0MiIsImFyZzBfNDQ4IiwicmVzMF80NDkiLCJzZXhwXzQ0NyIsImFyZzFfNDQ0IiwiYXJnMF80NDMiLCJyZXMwXzQ0NSIsInJlczFfNDQ2Iiwic2V4cF9vZl90JDciLCJhcmcxXzQ5MiIsImFyZzBfNDkxIiwicmVzMF80OTMiLCJyZXMxXzQ5NCIsImFyZzFfNDk2IiwiYXJnMF80OTUiLCJyZXMwXzQ5NyIsInJlczFfNDk4IiwiYXJnMF81MDMiLCJyZXMwXzUwNCIsImFyZzFfNTAwIiwiYXJnMF80OTkiLCJyZXMwXzUwMSIsInJlczFfNTAyIiwiYXJnMF81MDkiLCJyZXMwXzUxMCIsImFyZzFfNTA2IiwiYXJnMF81MDUiLCJyZXMwXzUwNyIsInJlczFfNTA4IiwiYXJnMF81MTEiLCJyZXMwXzUxMiIsImFyZzBfNTE3IiwiYXJnMV81MTQiLCJhcmcwXzUxMyIsInJlczBfNTE1IiwicmVzMV81MTYiLCJ2XzI3NyIsImFyZzFfMjc5IiwiYXJnMF8yNzgiLCJyZXMwXzI4MCIsInJlczFfMjgxIiwidl8yODIiLCJhcmcxXzI4NCIsImFyZzBfMjgzIiwicmVzMF8yODUiLCJyZXMxXzI4NiIsInJlczBfNTE4IiwiYXJnMF81MjMiLCJhcmcxXzUyMCIsImFyZzBfNTE5IiwicmVzMF81MjEiLCJyZXMxXzUyMiIsInJlczBfNTI0IiwiYXJnMV81MjYiLCJhcmcwXzUyNSIsInJlczBfNTI3IiwicmVzMV81MjgiLCJhcmcyXzUzMSIsImFyZzFfNTMwIiwiYXJnMF81MjkiLCJtZW1iZXJzXzMzNSIsImxvY18zMzMiLCJnaWRfMzMxIiwiYXJnXzMzNiIsImFyZzFfMzQyIiwiYXJnMF8zNDEiLCJyZXMwXzM0MyIsImFyZzFfMzM4IiwiYXJnMF8zMzciLCJyZXMwXzMzOSIsInJlczFfMzQwIiwicmVzMV8zNDQiLCJibmRzXzMzMCIsImFyZ18zMzQiLCJibmRzXzMzMCQwIiwiYXJnXzMzMiIsImJuZHNfMzMwJDEiLCJyZXMwXzUzMiIsInJlczFfNTMzIiwicmVzMl81MzQiLCJhbm5vdGF0ZSQxIiwidjAiLCJ2MSIsImJhc2V0eXBlJDEiLCJyZWNvcmQkMSIsInZhcmlhbnQkMSIsInR1cGxlJDEiLCJyZWNfYXBwIiwidG9wX2FwcCIsInYyIiwiY29uc3RyIiwiaW5oZXJpdCIsInZhciQ0IiwicG9seV92YXJpYW50JDEiLCJpc19jeWNsaWNfMCIsInZpYV9WUiIsImdyb3VwIiwic2V0IiwidmlzaXRlZCIsInRyYXYiLCJ0cyIsImNzIiwidHMkMCIsInRyYXZfdGlkIiwiYm9keSIsInJlcyIsImlzX2N5Y2xpYyIsImlzX2N5Y2xpY193aXRoX25vX2ludGVydmVuaW5nXyIsImxvb2t1cCQwIiwiYV81MzUiLCJiXzUzNiIsInRfNTM4IiwidF81MzciLCJ0XzU0MCIsInRfNTM5IiwiYXJnMV81NDIiLCJhcmcwXzU0MSIsInJlczBfNTQzIiwicmVzMV81NDQiLCJmaW5kIiwiZW1wdHkiLCJleHRlbmQiLCJyZXR1cm4kMCIsInRlbnYiLCJiaW5kIiwiZGVwdGgiLCJsb29rX2VudiIsImtleSIsInJlc3VsdCIsImV4dGVuZF9uZXdfdGlkIiwiZGVmX3QiLCJ2YWx1ZSIsInRlbnYkMCIsImV4ZWMiLCJzeW1ib2xfYmluZCIsInJldHVybiQxIiwic2VxdWVuY2VfZGVmaW5pbmciLCJsb29wIiwiYWNjX3lzIiwidmVudiIsInMkMCIsImV2YWxfbGlzdCIsImJpbmRzIiwiYWx0cyIsInlzIiwieHNzIiwiZXZhbF9wb2x5X2NvbnN0ciIsInZpZCIsImxvYyQwIiwiY3VzdG9tX3ByaW50Zl81NDUiLCJhcmdzIiwiZXZhbF9hcHAiLCJhcmdzJDAiLCJ0aWQkMCIsImluX2dyb3VwIiwiYyIsImV2YWxfZGVmaW5pdGlvbiIsImZvcm1hbHMiLCJpIiwicmVjb3JkX29yX25vcm1hbF92YXJpYW50IiwiY3ljbGljIiwiY3ljbGljX25vX1ZSIiwiZXZhbCQwIiwiZXZhbF90b19kaWdlc3QiLCJldmFsX3RvX2RpZ2VzdF9zdHJpbmciLCJkZWNvbnN0cnVjdF90dXBsZV9leG4iLCJzdGFibGVfd2l0bmVzc19hcnJheSIsInN0YWJsZV93aXRuZXNzX2xhenlfdCIsInN0YWJsZV93aXRuZXNzX2xpc3QiLCJzdGFibGVfd2l0bmVzc19vcHRpb24iLCJzdGFibGVfd2l0bmVzc19yZWYiLCJvZl9zZXJpYWxpemFibGUiLCJsb2MkMiIsImxvYyQxIiwibG9jJDAiLCJsb2MiLCJzZXhwX29mX3BvcyIsInRvX3N0cmluZyIsIm1heF9sZW4iLCJsZW4iLCJsb2MkMyIsImxvYyQ0IiwiYXJnMF8wMDEiLCJyYWlzZV9yZWFkX2Vycm9yIiwiZXJyIiwicG9zIiwicmFpc2VfdmFyaWFudF93cm9uZ190eXBlIiwibmFtZSIsInJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIiwiYXJyYXlfYm91bmRfZXJyb3IiLCJjcmVhdGVfYnVmIiwibiIsImJ1Zl9sZW4iLCJhc3NlcnRfcG9zIiwiY2hlY2tfcG9zIiwiYnVmIiwic2FmZV9nZXRfcG9zIiwicG9zX3JlZiIsImNoZWNrX25leHQiLCJuZXh0IiwiZ2V0X29wdF9wb3MiLCJ2YXIkMCIsImJsaXRfYnVmIiwic3JjX3BvcyIsInNyYyIsImRzdF9wb3MiLCJkc3QiLCJzcmNfcG9zJDAiLCJkc3RfcG9zJDAiLCJibGl0X3N0cmluZ19idWYiLCJzdHIiLCJibGl0X2J5dGVzX2J1ZiIsImJsaXRfYnVmX2J5dGVzIiwiY29weV9odGJsX2xpc3QiLCJodGJsIiwicmVzdCIsInYiLCJrIiwic3ltYm9sIiwib2ZfaW50IiwiYXJjaF9zaXh0eWZvdXIiLCJhcmNoX2JpZ19lbmRpYW4iLCJ1bnNhZmVfc2V0MTZiZSIsIngiLCJ1bnNhZmVfc2V0MzJiZSIsInVuc2FmZV9zZXQ2NGJlIiwidW5zYWZlX3NldDE2bGUiLCJ1bnNhZmVfc2V0MzJsZSIsInVuc2FmZV9zZXQ2NGxlIiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVfYm9vbCIsImIiLCJhbGxfYmluX3dyaXRlX3NtYWxsX2ludCIsImFsbF9iaW5fd3JpdGVfaW50MTYiLCJhbGxfYmluX3dyaXRlX2ludDMyIiwiYWxsX2Jpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9jaGFyIiwiYyIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVfbmF0MCIsIm5hdDAiLCJiaW5fd3JpdGVfc3RyaW5nIiwibmV3X3BvcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlX2VsIiwiciIsImJpbl93cml0ZV9sYXp5IiwibHYiLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlX3BhaXIiLCJiaW5fd3JpdGVfYSIsImJpbl93cml0ZV9iIiwiYSIsImJpbl93cml0ZV90cmlwbGUiLCJiaW5fd3JpdGVfYyIsIm5leHQxIiwibmV4dDIiLCJiaW5fd3JpdGVfbGlzdCIsImxzdCQxIiwiZWxzX3BvcyQwIiwiZWxzX3BvcyIsImxzdCIsImxzdCQwIiwiaGQiLCJuZXdfZWxzX3BvcyIsImJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW4iLCJsZW5ndGgiLCJibGl0IiwicG9zJDAiLCJzaXplIiwiYmluX3dyaXRlX2Zsb2F0YXJyYXkiLCJiaW5fd3JpdGVfYXJyYXkiLCJhciIsImVsc19wb3NfcmVmIiwiaSIsImJpbl93cml0ZV9oYXNodGJsIiwiYmluX3dyaXRlX2tleSIsImJpbl93cml0ZV92YWwiLCJwbGVuIiwiY250X3JlZiIsImNvbGxfaHRibCIsInJlc19wb3MiLCJiaW5fd3JpdGVfZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVfZmxvYXQ2NF92ZWMiLCJiaW5fd3JpdGVfZmxvYXQzMl9tYXQiLCJtIiwibGVuMSIsImxlbjIiLCJwb3MkMSIsImJpbl93cml0ZV9mbG9hdDY0X21hdCIsImJpbl93cml0ZV9iaWdzdHJpbmciLCJzIiwiYmluX3dyaXRlX3ZhcmlhbnRfaW50IiwiYmluX3dyaXRlX2ludF84Yml0IiwiYmluX3dyaXRlX2ludF8xNmJpdCIsImJpbl93cml0ZV9pbnRfMzJiaXQiLCJiaW5fd3JpdGVfaW50XzY0Yml0IiwiYmluX3dyaXRlX2ludDY0X2JpdHMiLCJiaW5fd3JpdGVfbmV0d29yazE2X2ludCIsImJpbl93cml0ZV9uZXR3b3JrMzJfaW50IiwiYmluX3dyaXRlX25ldHdvcmszMl9pbnQzMiIsImJpbl93cml0ZV9uZXR3b3JrNjRfaW50IiwiYmluX3dyaXRlX25ldHdvcms2NF9pbnQ2NCIsImJpbl93cml0ZV9tZDUiLCJ4JDAiLCJhJDAiLCJiJDAiLCJkIiwibWF4X2ludF9pbnQzMiIsIm1pbl9pbnRfaW50MzIiLCJtYXhfaW50X2ludDY0IiwibWluX2ludF9pbnQ2NCIsInNhZmVfaW50X29mX2ludDMyIiwic2FmZV9pbnRfb2ZfaW50NjQiLCJzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCIsInVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMyYmUiLCJ1bnNhZmVfZ2V0NjRiZSIsInVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMybGUiLCJ1bnNhZmVfZ2V0NjRsZSIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF9ib29sIiwic2FmZV9iaW5fcmVhZF9uZWdfaW50OCIsInNhZmVfYmluX3JlYWRfaW50MTYiLCJtYXNrXzMyYml0Iiwic2FmZV9iaW5fcmVhZF9uYXQwXzMyIiwiYmluX3JlYWRfbmF0MCIsImNoIiwibmV4dCQwIiwibiQwIiwiYmluX3JlYWRfYnl0ZXMiLCJzdGFydF9wb3MiLCJiaW5fcmVhZF9zdHJpbmciLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfaW50IiwibiQxIiwibiQyIiwiYmluX3JlYWRfZmxvYXQiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfbmF0aXZlaW50IiwiYmluX3JlYWRfcmVmIiwiYmluX3JlYWRfZWwiLCJlbCIsImJpbl9yZWFkX2xhenkiLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9wYWlyIiwiYmluX3JlYWRfYSIsImJpbl9yZWFkX2IiLCJiaW5fcmVhZF90cmlwbGUiLCJiaW5fcmVhZF9jIiwiYmluX3JlYWRfbl9yZXZfbGlzdCIsImFjYyIsImFjYyQwIiwiYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4iLCJyZXZfbHN0IiwiYmluX3JlYWRfbGlzdCIsImR1bW15X2Zsb2F0X2J1ZiIsIm1heF9mbG9hdF9hcnJheV9sZW5ndGgiLCJiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4iLCJjcmVhdGUiLCJhcnIiLCJiaW5fcmVhZF9mbG9hdGFycmF5IiwiYmluX3JlYWRfYXJyYXkiLCJlbCQxIiwibWF5YmVfZmxvYXQiLCJlbCQwIiwiZmlyc3QiLCJyZXMiLCJiaW5fcmVhZF9oYXNodGJsIiwiYmluX3JlYWRfa2V5IiwiYmluX3JlYWRfdmFsIiwicmVhZF9rdl9wYWlyIiwiZWxzIiwiYmluX3JlYWRfZmxvYXQzMl92ZWMiLCJ2ZWMiLCJiaW5fcmVhZF9mbG9hdDY0X3ZlYyIsImJpbl9yZWFkX2Zsb2F0MzJfbWF0IiwibWF0IiwiYmluX3JlYWRfZmxvYXQ2NF9tYXQiLCJiaW5fcmVhZF9iaWdzdHJpbmciLCJiaW5fcmVhZF92YXJpYW50X2ludCIsImJpbl9yZWFkX2ludF84Yml0IiwiYmluX3JlYWRfaW50XzE2Yml0IiwiYmluX3JlYWRfaW50XzMyYml0IiwiYmluX3JlYWRfaW50XzY0Yml0IiwiYmluX3JlYWRfaW50NjRfYml0cyIsImJpbl9yZWFkX25ldHdvcmsxNl9pbnQiLCJiaW5fcmVhZF9uZXR3b3JrMzJfaW50IiwiYmluX3JlYWRfbmV0d29yazMyX2ludDMyIiwiYmluX3JlYWRfbmV0d29yazY0X2ludCIsImJpbl9yZWFkX25ldHdvcms2NF9pbnQ2NCIsImJpbl9yZWFkX21kNSIsImJpbl9zaGFwZV91bml0IiwiYmluX3NoYXBlX2Jvb2wiLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NoYXBlX2J5dGVzIiwiYmluX3NoYXBlX2NoYXIiLCJiaW5fc2hhcGVfZmxvYXQiLCJiaW5fc2hhcGVfaW50IiwiYmluX3NoYXBlX2ludDMyIiwiYmluX3NoYXBlX2ludDYzIiwiYmluX3NoYXBlX2ludDY0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaGFwZV9uYXQwIiwiYmluX3NoYXBlX2RpZ2VzdCIsImJpbl9zaGFwZV9mbG9hdDMyX3ZlYyIsImJpbl9zaGFwZV9mbG9hdDY0X3ZlYyIsImJpbl9zaGFwZV92ZWMiLCJiaW5fc2hhcGVfZmxvYXQzMl9tYXQiLCJiaW5fc2hhcGVfZmxvYXQ2NF9tYXQiLCJiaW5fc2hhcGVfbWF0IiwiYmluX3NoYXBlX2JpZ3N0cmluZyIsImJpbl9zaGFwZV9mbG9hdGFycmF5IiwiYmluX3NoYXBlX3ZhcmlhbnRfaW50IiwiYmluX3NoYXBlX2ludF84Yml0IiwiYmluX3NoYXBlX2ludF8xNmJpdCIsImJpbl9zaGFwZV9pbnRfMzJiaXQiLCJiaW5fc2hhcGVfaW50XzY0Yml0IiwiYmluX3NoYXBlX2ludDY0X2JpdHMiLCJiaW5fc2hhcGVfbmV0d29yazE2X2ludCIsImJpbl9zaGFwZV9uZXR3b3JrMzJfaW50IiwiYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaGFwZV9uZXR3b3JrNjRfaW50IiwiYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NCIsImJpbl9zaGFwZV9yZWYiLCJiaW5fc2hhcGVfb3B0aW9uIiwiYmluX3NoYXBlX2xpc3QiLCJiaW5fc2hhcGVfYXJyYXkiLCJiaW5fc2hhcGVfaGFzaHRibCIsInkiLCJiaW5fc2hhcGVfbGF6eSIsImJpbl9zaGFwZV9wYWlyIiwiYmluX3NoYXBlX3RyaXBsZSIsInoiLCJiaW5fc2l6ZV91bml0IiwiYmluX3NpemVfYm9vbCIsImJpbl9zaXplX2NoYXIiLCJiaW5fc2l6ZV9tZDUiLCJiaW5fc2l6ZV9pbnRfbmF0MCIsImJpbl9zaXplX2ludF9uZWdhdGl2ZSIsImJpbl9zaXplX2ludCIsImJpbl9zaXplX2Zsb2F0IiwiYmluX3NpemVfdmFyaWFudF9pbnQiLCJiaW5fc2l6ZV9pbnRfOGJpdCIsImJpbl9zaXplX2ludF8xNmJpdCIsImJpbl9zaXplX2ludF8zMmJpdCIsImJpbl9zaXplX2ludF82NGJpdCIsImJpbl9zaXplX2ludDY0X2JpdHMiLCJiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IiwiYmluX3NpemVfbmV0d29yazMyX2ludCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaXplX25ldHdvcms2NF9pbnQiLCJiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQiLCJiaW5fc2l6ZV9pbnQkMCIsImJpbl9zaXplX25hdDAiLCJiaW5fc2l6ZV9wYWlyIiwiYmluX3NpemVfdHJpcGxlIiwiYmluX3NpemVfbWF0IiwiYmluX3NpemVfdW5pdCQwIiwiYmluX3NpemVfYm9vbCQwIiwiYmluX3NpemVfY2hhciQwIiwiYmluX3NpemVfaW50JDEiLCJiaW5fc2l6ZV9uYXQwJDAiLCJiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMiLCJzaXplX2xlbiIsImJpbl9zaXplX3N0cmluZyIsImJpbl9zaXplX2J5dGVzIiwiYmluX3NpemVfbWQ1JDEiLCJiaW5fc2l6ZV9mbG9hdCQwIiwiZiIsImJpbl9zaXplX2ludDMyIiwiYmluX3NpemVfaW50NjQiLCJiaW5fc2l6ZV9tZDUkMCIsImJpbl9zaXplX3JlZiIsImJpbl9zaXplX2xhenlfdCIsImJpbl9zaXplX29wdGlvbiIsImJpbl9zaXplX2ludDMyJDAiLCJiaW5fc2l6ZV9pbnQ2NCQwIiwiYmluX3NpemVfbmF0aXZlaW50IiwiYmluX3NpemVfcmVmJDAiLCJiaW5fc2l6ZV9lbCIsImJpbl9zaXplX2xhenlfdCQwIiwiYmluX3NpemVfb3B0aW9uJDAiLCJiaW5fc2l6ZV9wYWlyJDAiLCJiaW5fc2l6ZV9hIiwiYmluX3NpemVfYiIsImJpbl9zaXplX3RyaXBsZSQwIiwiYmluX3NpemVfYyIsImJpbl9zaXplX2xpc3QiLCJzaXplX2FjYyIsImxlbl9hY2MiLCJsZW5fYWNjJDAiLCJzaXplX2FjYyQwIiwiYmluX3NpemVfZmxvYXRhcnJheSIsImJpbl9zaXplX2FycmF5IiwibGVuJDAiLCJ0b3RhbF9sZW4iLCJ0b3RhbF9sZW5fcmVmIiwiYmluX3NpemVfaGFzaHRibCIsImJpbl9zaXplX2tleSIsImJpbl9zaXplX3ZhbCIsImJpbl9zaXplX2dlbl92ZWMiLCJtdWx0aXBsaWVyIiwiYmluX3NpemVfZmxvYXQzMl92ZWMiLCJiaW5fc2l6ZV9mbG9hdDY0X3ZlYyIsImJpbl9zaXplX2dlbl9tYXQiLCJkaW0xIiwiZGltMiIsImJpbl9zaXplX2Zsb2F0MzJfbWF0IiwiYmluX3NpemVfZmxvYXQ2NF9tYXQiLCJiaW5fc2l6ZV9iaWdzdHJpbmciLCJiaW5fc2l6ZV92YXJpYW50X2ludCQwIiwiYmluX3NpemVfaW50XzhiaXQkMCIsImJpbl9zaXplX2ludF8xNmJpdCQwIiwiYmluX3NpemVfaW50XzMyYml0JDAiLCJiaW5fc2l6ZV9pbnRfNjRiaXQkMCIsImJpbl9zaXplX2ludDY0X2JpdHMkMCIsImJpbl9zaXplX25ldHdvcmsxNl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludCQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludDY0JDAiLCJ2YXJpYW50X3dyb25nX3R5cGUiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkZXJfYm9vbCIsImJpbl9ib29sIiwiYmluX3dyaXRlcl9zdHJpbmciLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkZXJfY2hhciIsImJpbl9jaGFyIiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZGVyX2ludCIsImJpbl9pbnQiLCJiaW5fd3JpdGVyX2Zsb2F0IiwiYmluX3JlYWRlcl9mbG9hdCIsImJpbl9mbG9hdCIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkZXJfbmF0aXZlaW50IiwiYmluX25hdGl2ZWludCIsImJpbl93cml0ZXJfbmF0MCIsImJpbl9yZWFkZXJfbmF0MCIsImJpbl9uYXQwIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fd3JpdGVyX2VsIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVhZGVyX2VsIiwieDEiLCJiaW5fcmVmIiwiYmluX2VsIiwiYmluX3dyaXRlcl9sYXp5IiwiYmluX3JlYWRlcl9sYXp5IiwiYmluX2xhenkiLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImJpbl93cml0ZXJfcGFpciIsImJpbl93cml0ZXJfZWwxIiwiYmluX3dyaXRlcl9lbDIiLCJiaW5fcmVhZGVyX3BhaXIiLCJiaW5fcmVhZGVyX2VsMSIsImJpbl9yZWFkZXJfZWwyIiwiYmluX3BhaXIiLCJiaW5fZWwxIiwiYmluX2VsMiIsIngyIiwiYmluX3dyaXRlcl90cmlwbGUiLCJiaW5fd3JpdGVyX2VsMyIsImJpbl9yZWFkZXJfdHJpcGxlIiwiYmluX3JlYWRlcl9lbDMiLCJiaW5fdHJpcGxlIiwiYmluX2VsMyIsIngzIiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRlcl9saXN0IiwiYmluX2xpc3QiLCJiaW5fd3JpdGVyX2FycmF5IiwiYmluX3JlYWRlcl9hcnJheSIsImJpbl9hcnJheSIsImJpbl93cml0ZXJfaGFzaHRibCIsImJpbl9yZWFkZXJfaGFzaHRibCIsImJpbl9oYXNodGJsIiwiYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyIsImJpbl9yZWFkZXJfZmxvYXQzMl92ZWMiLCJiaW5fZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyIsImJpbl9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZXJfdmVjIiwiYmluX3JlYWRlcl92ZWMiLCJiaW5fdmVjIiwiYmluX3dyaXRlcl9mbG9hdDMyX21hdCIsImJpbl9yZWFkZXJfZmxvYXQzMl9tYXQiLCJiaW5fZmxvYXQzMl9tYXQiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0IiwiYmluX3JlYWRlcl9mbG9hdDY0X21hdCIsImJpbl9mbG9hdDY0X21hdCIsImJpbl93cml0ZXJfbWF0IiwiYmluX3JlYWRlcl9tYXQiLCJiaW5fbWF0IiwiYmluX3dyaXRlcl9iaWdzdHJpbmciLCJiaW5fcmVhZGVyX2JpZ3N0cmluZyIsImJpbl9iaWdzdHJpbmciLCJiaW5fd3JpdGVyX2Zsb2F0YXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0YXJyYXkiLCJiaW5fZmxvYXRhcnJheSIsImJpbl93cml0ZXJfdmFyaWFudF9pbnQiLCJiaW5fcmVhZGVyX3ZhcmlhbnRfaW50IiwiYmluX3ZhcmlhbnRfaW50IiwiYmluX3dyaXRlcl9pbnRfOGJpdCIsImJpbl9yZWFkZXJfaW50XzhiaXQiLCJiaW5faW50XzhiaXQiLCJiaW5fd3JpdGVyX2ludF8xNmJpdCIsImJpbl9yZWFkZXJfaW50XzE2Yml0IiwiYmluX2ludF8xNmJpdCIsImJpbl93cml0ZXJfaW50XzMyYml0IiwiYmluX3JlYWRlcl9pbnRfMzJiaXQiLCJiaW5faW50XzMyYml0IiwiYmluX3dyaXRlcl9pbnRfNjRiaXQiLCJiaW5fcmVhZGVyX2ludF82NGJpdCIsImJpbl9pbnRfNjRiaXQiLCJiaW5fd3JpdGVyX2ludDY0X2JpdHMiLCJiaW5fcmVhZGVyX2ludDY0X2JpdHMiLCJiaW5faW50NjRfYml0cyIsImJpbl93cml0ZXJfbmV0d29yazE2X2ludCIsImJpbl9yZWFkZXJfbmV0d29yazE2X2ludCIsImJpbl9uZXR3b3JrMTZfaW50IiwiYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50IiwiYmluX25ldHdvcmszMl9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMiIsImJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyIiwiYmluX25ldHdvcmszMl9pbnQzMiIsImJpbl93cml0ZXJfbmV0d29yazY0X2ludCIsImJpbl9yZWFkZXJfbmV0d29yazY0X2ludCIsImJpbl9uZXR3b3JrNjRfaW50IiwiYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjQiLCJiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NCIsImJpbl9uZXR3b3JrNjRfaW50NjQiLCJjbnZfd3JpdGVyIiwiY252IiwidHBfY2xhc3MiLCJjbnZfcmVhZGVyIiwidnRhZyIsImZvcl9zaGFwZSIsImZvcl93cml0ZXIiLCJmb3JfcmVhZGVyIiwic2l6ZV9oZWFkZXJfbGVuZ3RoIiwiYmluX3dyaXRlX3NpemVfaGVhZGVyIiwiYmluX3JlYWRfc2l6ZV9oZWFkZXIiLCJiaW5fZHVtcCIsIndyaXRlciIsImhlYWRlciIsInBvc19sZW4iLCJ0b3RfbGVuIiwicG9zX2xlbiQwIiwiYnVmJDAiLCJidWYkMSIsImJpbl9yZWFkX3N0cmVhbSIsIm1heF9zaXplIiwicmVhZCIsInJlYWRlciIsIm1heF9zaXplJDAiLCJtc2ciLCJiaW5fd3JpdGVyX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsIm1heWJlX2Fubm90YXRlX3NoYXBlIiwibWF5YmVfdXVpZCIsInNoYXBlIiwidXVpZCIsImJpbl9zaGFwZV90IiwiYmluX3NpemVfdCIsInQiLCJiaW5fd3JpdGVfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fc2l6ZV90JDAiLCJiaW5fd3JpdGVfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaGFwZV9lbCIsImJpbl93cml0ZXIiLCJiaW5fcmVhZGVyIiwidHlwZV9jbGFzcyIsImJpbl9zaGFwZV9lbDEiLCJiaW5fc2hhcGVfZWwyIiwiYmluX3NpemVfZWwxIiwiYmluX3NpemVfZWwyIiwiYmluX3dyaXRlX2VsMSIsImJpbl93cml0ZV9lbDIiLCJiaW5fcmVhZF9lbDEiLCJiaW5fcmVhZF9lbDIiLCJiaW5fd3JpdGVyMSIsImJpbl93cml0ZXIyIiwiYmluX3JlYWRlcjEiLCJiaW5fcmVhZGVyMiIsInR5cGVfY2xhc3MxIiwidHlwZV9jbGFzczIiLCJiaW5fc2hhcGVfZWwzIiwiYmluX3NpemVfZWwzIiwiYmluX3dyaXRlX2VsMyIsImJpbl9yZWFkX2VsMyIsImJpbl93cml0ZXIzIiwiYmluX3JlYWRlcjMiLCJ0eXBlX2NsYXNzMyIsIm1heWJlX2NhbGxlcl9pZGVudGl0eSIsIndpdGhfbW9kdWxlX25hbWUiLCJtb2R1bGVfbmFtZSIsImZ1bmN0aW9uX25hbWUiLCJtb2R1bGVfbmFtZSQwIiwic2l6ZV9yZWYiLCJpZHgiLCJyZXN1bHQiLCJ0MSIsInQyIiwidDMiLCJiaW5fcmVhZF91bml0JDAiLCJ2aW50IiwiYmluX3JlYWRfYm9vbCQwIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZF9ieXRlcyQwIiwiYmluX3JlYWRfY2hhciQwIiwiYmluX3JlYWRfaW50JDAiLCJiaW5fcmVhZF9mbG9hdCQwIiwiYmluX3JlYWRfZmxvYXRhcnJheSQwIiwiYmluX3JlYWRfaW50MzIkMCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZF9uYXRpdmVpbnQkMCIsImJpbl9yZWFkX3JlZiQwIiwiYmluX2xhenlfdCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fcmVhZGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRfbGF6eSQwIiwiYmluX3JlYWRfb3B0aW9uJDAiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZF9hcnJheSQwIiwiYmluX3JlYWRfaGFzaHRibCQwIiwiZyIsImJpbl9yZWFkX2JpZ3N0cmluZyQwIiwiYmluX3dyaXRlX21hdCIsImJpbl9yZWFkX21hdCIsImJpbl9yZWFkX21hdCQwIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQkMCIsImJpbl9yZWFkX2Zsb2F0NjRfbWF0JDAiLCJiaW5fd3JpdGVfdmVjIiwiYmluX3JlYWRfdmVjIiwiYmluX3JlYWRfdmVjJDAiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyQwIiwiYmluX3JlYWRfZmxvYXQ2NF92ZWMkMCIsInZkaWdlc3QiLCJzdGFibGVfd2l0bmVzcyIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJzZXhwX29mX3QiLCJvZl9hXzAwMyIsInN0YXJ0X2EiLCJlbmRfYSIsIndyaXR0ZW4iLCJleHBlY3RlZF9zaXplIiwib2ZfYmluYWJsZSIsInRvX2JpbmFibGUiLCJiaW5fc2hhcGVfdCQxIiwiYmluX3NpemVfdCQxIiwiYmluX3dyaXRlX3QkMSIsImJpbl9yZWFkX3QkMyIsImJpbl9yZWFkX3QkNCIsInRvX29wYXF1ZSIsImJsb2IiLCJvZl9vcGFxdWVfZXhuIiwiY29tcGFyZSQwIiwic2V4cF9vZl90JDAiLCJiaW5fc2l6ZV90JDMiLCJiaW5fd3JpdGVfdCQzIiwic3RyaW5nX29mX2JpZ3N0cmluZyIsImJpbl9yZWFkX3QkNyIsImJpbl9yZWFkX3QkOCIsInRvX29wYXF1ZSQwIiwiYmluX3dyaXRlcl92Iiwib2Zfb3BhcXVlX2V4biQwIiwiYmluX3JlYWRlcl92IiwiZXJyb3IiLCJjb21wYXJlJDEiLCJzZXhwX29mX3QkMSIsImJpbl9zaXplX3QkNSIsImJpbl9yZWFkX3QkMTEiLCJiaW5fcmVhZF90JDEyIiwiYmluX3JlYWRlcl90JDIiLCJwcmVfdGVzdF9ob29rIiwibmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCIsInQiLCJpbml0aWFsIiwiYW1fcnVubmluZ19lbnZfdmFyIiwidG9fc3RyaW5nIiwiY29tYmluZSIsInQxIiwidDIiLCJjb21iaW5lX2FsbCIsInRzIiwidGVzdF9tb2R1bGVzX3JhbiIsInRlc3RfbW9kdWxlc19mYWlsZWQiLCJ0ZXN0c19yYW4iLCJ0ZXN0c19mYWlsZWQiLCJkeW5hbWljX2xpYiIsImFjdGlvbiIsImZvcmNlX2Ryb3AiLCJnZXQiLCJjdXJyZW50IiwiZm91bmRfdGVzdCIsImlzX2N1cnJlbnQiLCJwIiwiY3VycmVudCQwIiwiY3VycmVudF90YWdzIiwidCIsIm0iLCJ2ZXJib3NlIiwic3RyaWN0Iiwic2hvd19jb3VudHMiLCJsaXN0X3Rlc3RfbmFtZXMiLCJkZWxheWVkX2Vycm9ycyIsInN0b3Bfb25fZXJyb3IiLCJsb2ciLCJ0aW1lX3NlYyIsInVzZV9jb2xvciIsImluX3BsYWNlIiwiZGlmZl9jb21tYW5kIiwic291cmNlX3RyZWVfcm9vdCIsImRpZmZfcGF0aF9wcmVmaXgiLCJkaXNwbGF5ZWRfZGVzY3IiLCJkZXNjciIsImZpbGVuYW1lIiwibGluZSIsInN0YXJ0X3BvcyIsImVuZF9wb3MiLCJkZXNjciQwIiwibmFtZSIsInJlc3QiLCJsaWIiLCJ0ZXN0cyIsImxpc3RfcGFydGl0aW9ucyIsInBhcnRpdGlvbiIsInRhZ19wcmVkaWNhdGUiLCJuYW1lX2ZpbHRlciIsIm1zZyQxIiwiZiIsImFub24iLCJsIiwiaSIsInRhZyIsInMiLCJzdHIiLCJmaWxlIiwiaW5kZXgiLCJpbmRleCQwIiwiZmlsZW5hbWUkMCIsImluZGV4X3N0cmluZyIsImluZGV4JDEiLCJhcmd2IiwibXNnIiwibXNnJDAiLCJ2IiwiYW1fdGVzdF9ydW5uZXIiLCJhbV9ydW5uaW5nIiwidGVzdGluZyIsIndhbGxfdGltZV9jbG9ja19ucyIsIndoZXJlX3RvX2N1dF9iYWNrdHJhY2UiLCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV8iLCJiZWZvcmVfbnMiLCJyZXMiLCJleG4kMCIsImV4biIsInNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlIiwic2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUiLCJzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyIiwicHJpbnRfZGVsYXllZF9lcnJvcnMiLCJkZWxheWVkX2Vycm9ycyQwIiwibWVzc2FnZSIsImVwcmludGZfb3JfZGVsYXkiLCJmbXQiLCJhZGRfaG9va3MiLCJDIiwiaHVtX2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInRlc3RfaW5uZXIiLCJjb25maWciLCJ0YWdzIiwiZGVmX2ZpbGVuYW1lIiwiZGVmX2xpbmVfbnVtYmVyIiwiYm9vbF9vZl9mIiwid2hhdF90b19kbyIsIndoaWNoX3RhZ3MiLCJvbmx5X3Rlc3RfbG9jYXRpb24iLCJsaWJuYW1lIiwiZiQwIiwiY29tcGxldGVfdGFncyIsInVzZWQiLCJsaW5lX251bWJlcl9vcHQiLCJwb3NpdGlvbl9zdGFydCIsImVuZF9vZl9kZWZfZmlsZW5hbWUiLCJsaW5lX251bWJlciIsImZvdW5kIiwicmVxIiwiZHJvcHBlZCIsImRlc2NyJDEiLCJzdWJzdHJpbmciLCJzaG91bGRfcnVuIiwiZGVzY3IkMiIsImNoIiwicmVzdWx0JDAiLCJjYW1sX3JhbmRvbV9zdGF0ZSIsImJhc2VfcmFuZG9tX3N0YXRlIiwicmVzdWx0IiwiYmFja3RyYWNlJDAiLCJleG5fc3RyIiwic2VwIiwic2V0X2xpYl9hbmRfcGFydGl0aW9uIiwic3RhdGljX2xpYiIsIndoaWNoX3Rlc3RzIiwicmVxdWlyZXNfcGFydGl0aW9uIiwidW5zZXRfbGliIiwidGVzdCIsImIiLCJ0ZXN0X3VuaXQiLCJ0ZXN0X21vZHVsZSIsInBhcnRpYWxfdGFncyIsInByZXYiLCJ4IiwiZSQwIiwiZSIsInN1bW1hcml6ZSIsImsiLCJhY2MiLCJjb3VudCIsImNvdW50X3Rlc3RfbW9kdWxlcyIsInVudXNlZF90ZXN0cyIsImVycm9ycyIsInVzZV9jb2xvciQwIiwiaW5fcGxhY2UkMCIsImRpZmZfY29tbWFuZCQwIiwiZGlmZl9wYXRoX3ByZWZpeCQwIiwic291cmNlX3RyZWVfcm9vdCQwIiwiZXZhbHVhdG9ycyIsImFkZF9ldmFsdWF0b3IiLCJleGl0IiwiYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhIiwidmFsdWUiLCJhbV9yZWNvcmRpbmdfdmFsdWUiLCJhbV9yZWNvcmRpbmciLCJ0b19uYW5vc2Vjb25kcyIsInQiLCJvZl9uYW5vc2Vjb25kcyIsIm9mX3N0cmluZyIsInN0cmluZyIsInRvX3N0cmluZyIsIm5hbm9zIiwidG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IiwibGlzdCIsImZvcm1hdCIsImNyZWF0ZSIsIm5lc3RlZF90aW1lciIsInJlY29yZF9zdGFydCIsImRlc2NyaXB0aW9uIiwicmVjb3JkX3VudGlsIiwidW50aWwiLCJzdGFydCIsImdjX3N0YXRzX2FmdGVyIiwiZ2Nfc3RhdHNfYmVmb3JlIiwicnVudGltZSIsImdjX2V2ZW50cyIsIm5lc3RlZCQwIiwibmVzdGVkX3RpbWluZ19ldmVudHMiLCJ0aW1pbmdfZXZlbnQiLCJuZXN0ZWQiLCJkZWZpbml0aW9uX3RpbWVyIiwibW9kdWxlX3RpbWVyIiwicmVjb3JkX3N0YXJ0JDAiLCJtb2R1bGVfbmFtZSIsInJlY29yZF91bnRpbCQwIiwicmVjb3JkX2RlZmluaXRpb25fc3RhcnQiLCJsb2MiLCJyZWNvcmRfZGVmaW5pdGlvbl91bnRpbCIsInRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyIsImluZGVudCIsIkZvcm1hdCIsImR1cmF0aW9uX3N0cmluZ3MiLCJwcmVmaXgiLCJsaXN0JDAiLCJkdXJhdGlvbl9zdHJpbmciLCJsaW5lIiwiY29tcGFjdGlvbnMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwidG9fbGlzdCIsImNvdW50Iiwic3RyaW5ncyIsImxlZnRfY29sdW1uX3dpZHRoIiwid2lkdGgiLCJsZWZ0IiwicmlnaHQiLCJpIiwiZmFrZV90aW1pbmdfZXZlbnRzIiwiaiIsInRpbWluZ19ldmVudHMkMCIsIm5vdGlmeV9vZl9vdmVycmlkaW5nIiwib3ZlcnJpZGUiLCJ0aW1pbmdfZXZlbnRzIiwiaW5kZXgiLCJuZXN0ZWRfdGltaW5nX2V2ZW50IiwiY29udiIsIngiLCJsaWZ0IiwiY29tcGFyZSIsImEiLCJiIiwiZXF1YWwiLCJ1aWQiLCJuZXh0IiwibmFtZSIsImNvZGUiLCJoYXNoIiwic3RhdGljJDAiLCJjb21wYXJlJDAiLCJrMSIsImsyIiwiY21wIiwiYiQwIiwiYSQwIiwieXMiLCJ5IiwieHMiLCJuIiwiZXF1YWwkMCIsImhhc2gkMCIsInN0YXRpYyQxIiwia2V5IiwidCIsInVpZCQwIiwibmFtZSQwIiwiY3JlYXRlIiwic2FtZSIsIm5tMSIsIm5tMiIsInNhbWVfd2l0bmVzcyIsInNhbWVfd2l0bmVzc19leG4iLCJpbnQkMCIsIm1lbSIsInRhYmxlIiwic2V0IiwiZGF0YSIsImZpbmQiLCJkYXRhJDAiLCJmYWlsIiwidWlkX2EiLCJ1aWRfYiIsIm1zZyIsInQkMCIsIndpdG5lc3MiLCJ0eXBlbmFtZV9vZl90IiwiYyIsImQiLCJlIiwibGFiZWwiLCJhcml0eSIsImFyZ3NfbGFiZWxzIiwiaW5kZXgiLCJvY2FtbF9yZXByIiwidHlpZCIsInRyYXZlcnNlIiwiaW50ZXJuYWxfdXNlX29ubHkiLCJsZW5ndGgiLCJ0YWciLCJpc19wb2x5bW9ycGhpYyIsInZhbHVlIiwiZm9sZCIsImluaXQiLCJmIiwiaW50ZXJuYWxfdXNlX29ubHkkMCIsImxhYmVsJDAiLCJpbmRleCQwIiwiZ2V0IiwiaXNfbXV0YWJsZSIsInR5aWQkMCIsInRyYXZlcnNlJDAiLCJpbnRlcm5hbF91c2Vfb25seSQxIiwidHlwZW5hbWVfb2ZfdCQwIiwibGVuZ3RoJDAiLCJmaWVsZCIsImhhc19kb3VibGVfYXJyYXlfdGFnIiwiY3JlYXRlJDAiLCJmb2xkJDAiLCJpbnRlcm5hbF91c2Vfb25seSQyIiwibmFtZSQxIiwibmFtZSQyIiwibmFtZSQzIiwibmFtZSQ0IiwibmFtZSQ1IiwibmFtZSQ2IiwibmFtZSQ3IiwibmFtZSQ4IiwibmFtZSQ5IiwibmFtZSQxMCIsIm5hbWUkMTEiLCJuYW1lJDEyIiwibmFtZSQxMyIsIm5hbWUkMTQiLCJuYW1lJDE1IiwibmFtZSQxNiIsIm5hbWUkMTciLCJuYW1lJDE4IiwibmFtZSQxOSIsInR5cGVuYW1lX29mX2ludCIsInR5cGVuYW1lX29mX2ludDMyIiwidHlwZW5hbWVfb2ZfaW50NjQiLCJ0eXBlbmFtZV9vZl9uYXRpdmVpbnQiLCJ0eXBlbmFtZV9vZl9jaGFyIiwidHlwZW5hbWVfb2ZfZmxvYXQiLCJ0eXBlbmFtZV9vZl9zdHJpbmciLCJ0eXBlbmFtZV9vZl9ieXRlcyIsInR5cGVuYW1lX29mX2Jvb2wiLCJ0eXBlbmFtZV9vZl91bml0IiwidHlwZW5hbWVfb2Zfb3B0aW9uIiwidHlwZW5hbWVfb2ZfbGlzdCIsInR5cGVuYW1lX29mX2FycmF5IiwidHlwZW5hbWVfb2ZfbGF6eV90IiwidHlwZW5hbWVfb2ZfcmVmIiwidHlwZW5hbWVfb2ZfZnVuY3Rpb24iLCJ0eXBlbmFtZV9vZl90dXBsZTAiLCJ0eXBlbmFtZV9vZl90dXBsZTIiLCJ0eXBlbmFtZV9vZl90dXBsZTMiLCJ0eXBlbmFtZV9vZl90dXBsZTQiLCJ0eXBlbmFtZV9vZl90dXBsZTUiLCJyZXAiLCJyZXAkMCIsInJlcCQxIiwicmVwJDIiLCJyZXAkMyIsInJlcCQ0IiwibmFtZSQyMCIsImFyaXR5JDAiLCJjJDAiLCJiJDEiLCJhJDEiLCJkJDAiLCJjJDEiLCJiJDIiLCJhJDIiLCJ0eXBlbmFtZV9vZl90JDEiLCJybmciLCJkb20iLCJyZXAkNSIsInJlcCQ2IiwidDEiLCJ0MiIsInQxJDAiLCJ0MiQwIiwicjEiLCJyMiQwIiwicjEkMCIsInIyJDEiLCJ4JDAiLCJyMSQxIiwicjIkMiIsIngkMSIsInIxJDIiLCJyMiQzIiwieCQyIiwicjEkMyIsInIyJDQiLCJ4JDMiLCJybmcxIiwiZG9tMSIsInJuZzIiLCJkb20yIiwidDEkMSIsInQyJDIiLCJiMiIsImEyIiwiYjEiLCJhMSIsImMyIiwiYjIkMCIsImEyJDAiLCJjMSIsImIxJDAiLCJhMSQwIiwiZDIiLCJjMiQwIiwiYjIkMSIsImEyJDEiLCJkMSIsImMxJDAiLCJiMSQxIiwiYTEkMSIsImUyIiwiZDIkMCIsImMyJDEiLCJiMiQyIiwiYTIkMiIsImUxIiwiZDEkMCIsImMxJDEiLCJiMSQyIiwiYTEkMiIsInIxJDQiLCJyMiQ1IiwicjEkNSIsInIyJDYiLCJuYW1lMSIsInIyJDciLCJuYW1lMiIsInIxJDciLCJ4JDQiLCJ0MSQzIiwidDIkMyIsInQyJDQiLCJyMSQ2IiwidDEkMiIsInIyIiwidDIkMSIsInByb29mIiwiaGVhZCIsInQkMSIsInR5cGVyZXBfb2ZfaW50IiwidHlwZXJlcF9vZl9pbnQ2NCIsInR5cGVyZXBfb2Zfb3B0aW9uIiwidHlwZXJlcF9vZl9saXN0IiwidHlwZXJlcF9vZl9hcnJheSIsInR5cGVyZXBfb2ZfbGF6eV90IiwidHlwZXJlcF9vZl9yZWYiLCJ0eXBlcmVwX29mX2Z1bmN0aW9uIiwidHlwZXJlcF9vZl90dXBsZTIiLCJ0eXBlcmVwX29mX3R1cGxlMyIsInR5cGVyZXBfb2ZfdHVwbGU0IiwidHlwZXJlcF9vZl90dXBsZTUiLCJ0eXBlcmVwX29mX2ludDMyIiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9ib29sIiwidHlwZXJlcF9vZl91bml0IiwidHlwZXJlcF9vZl90dXBsZTAiLCJ2YWx1ZV90dXBsZTAiLCJ0eXBlbmFtZV9vZl9pbnQ2MyIsInR5cGVyZXBfb2ZfaW50NjMiLCJyZXByX29mX3BvbHlfdmFyaWFudCIsInZhcmlhbnQiLCJzaXplIiwicmVwciIsImhhc2hfdmFyaWFudCIsInMiLCJhY2N1IiwiaSIsImRvdWJsZV9hcnJheV92YWx1ZSIsImRvdWJsZSQwIiwic2ltcGxlIiwibWFwX3ZhcmlhbnQiLCJtYXAiLCJ0eXBlbmFtZSIsInBvbHltb3JwaGljIiwidGFncyIsInRhZyQwIiwiZmN0IiwiayIsImF0YWciLCJidGFnIiwibWFwX3JlY29yZCIsInJlY29yZCIsImZpZWxkcyIsImZpZWxkJDAiLCJnZXQkMCIsImFmaWVsZCIsImJmaWVsZCIsInBhdGgiLCJyIiwiaW5wdXQiLCJnZXRfd2lwX2NvbXB1dGF0aW9uIiwic2hhcmVkIiwiY2xvcyIsInNldF9maW5hbF9jb21wdXRhdGlvbiIsImNvbXB1dGF0aW9uIiwiY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UiLCJzaGFyZSIsInJlcXVpcmVkIiwidGFibGUkMCIsImNoZWNrX2RlcGVuZGVuY2llcyIsImltcGxlbWVudHMkMCIsIm1lc3NhZ2UiLCJyZXBsYWNlJDAiLCJtZW0kMCIsInRhYmxlMCIsInRhYmxlMSIsInRhYmxlMiIsInRhYmxlMyIsInRhYmxlNCIsInRhYmxlNSIsImlzX3JlZ2lzdGVyZWQiLCJpZGVudCIsInVuaXQiLCJyZWdpc3RlcjAiLCJjb21wdXRlIiwicmVnaXN0ZXIxIiwicmVnaXN0ZXIyIiwicmVnaXN0ZXIzIiwicmVnaXN0ZXI0IiwicmVnaXN0ZXI1IiwicmVnaXN0ZXIiLCJ0eXBlcmVwX29mX2EiLCJvZl90eXBlcmVwIiwiY29udGV4dCIsIm1lbW9fdGFibGUiLCJyZXAkMTEiLCJyZXAkMTIiLCJyZXAkMTMiLCJyZXAkMTQiLCJyZXAkMTUiLCJ0dXBsZSIsInJhIiwicmIiLCJyYSQwIiwicmIkMCIsInJjIiwicmEkMSIsInJiJDEiLCJyYyQwIiwicmQiLCJyYSQyIiwicmIkMiIsInJjJDEiLCJyZCQwIiwicmUiLCJjb250ZW50IiwibmFtZWQiLCJjdXN0b20iLCJjdXN0b20kMCIsImN1c3RvbSQxIiwicmVwJDciLCJjdXN0b20kMiIsImN1c3RvbSQzIiwicmVwJDgiLCJjdXN0b20kNCIsImN1c3RvbSQ1IiwicmVwJDkiLCJ0eXBlbmFtZV9vZl90JDIiLCJjdXN0b20kNiIsImN1c3RvbSQ3IiwicmVwJDEwIiwidHlwZW5hbWVfb2ZfdCQzIiwiY3VzdG9tJDgiLCJjdXN0b20kOSIsInN0cmluZyIsImNvbnRlbnQkMCIsInNoYXJlZCQwIiwiY29tcHV0YXRpb24kMCIsInR5cGVuYW1lX29mX25hbWVkIiwib2ZfcDEiLCJvZl9wMiIsIm9mX3AzIiwib2ZfcDQiLCJvZl9wNSIsInR5cGVyZXBfb2ZfdCIsImVycm9yX3NvdXJjZV8wMDIiLCJoYXNoX2ZvbGRfdCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJjb21wYXJlIiwibWluIiwibWF4IiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsImJldHdlZW4iLCJjbGFtcF9leG4iLCJjbGFtcCIsImNvbXBhcmF0b3IiLCJwcCIsImhhc2hhYmxlIiwiZXF1YWwiLCJyZWxhdGl2ZV90byIsImRpciIsInQiLCJ2IiwiZXhuJDAiLCJleG4iLCJkaXJfb3JfZXJyb3IiLCJpbml0aWFsX2RpciIsInRfb2Zfc2V4cCQwIiwieF8wMDMiLCJlbmRfcG9zIiwic3RhcnRfcG9zIiwibGluZV9zdGFydCIsImxpbmVfbnVtYmVyIiwiZmlsZW5hbWUiLCJzZXhwX29mX3QkMCIsImVuZF9wb3NfMDEzIiwic3RhcnRfcG9zXzAxMSIsImxpbmVfc3RhcnRfMDA5IiwibGluZV9udW1iZXJfMDA3IiwiZmlsZW5hbWVfMDA1IiwiYXJnXzAxNCIsImJuZHNfMDA0IiwiYXJnXzAxMiIsImJuZHNfMDA0JDAiLCJhcmdfMDEwIiwiYm5kc18wMDQkMSIsImFyZ18wMDgiLCJibmRzXzAwNCQyIiwiYXJnXzAwNiIsImJuZHNfMDA0JDMiLCJjb21wYXJlJDAiLCJhXzAxNSIsImJfMDE2IiwibiIsIm4kMCIsIm4kMSIsIm4kMiIsImJlZ2lubmluZ19vZl9maWxlIiwib2Zfc291cmNlX2NvZGVfcG9zaXRpb24iLCJwb3MiLCJzZXhwX29mX3QkMSIsImNvbXBhcmUkMiIsInRvX3N0cmluZyQwIiwib2Zfc3RyaW5nJDAiLCJzIiwiaSIsIm9mX2FfMDAxIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJjbXBfYSIsImFfMDA3IiwiYl8wMDgiLCJhXzAwOSIsImJfMDEwIiwiYV8wMTEiLCJiXzAxMiIsImFfMDEzIiwiYl8wMTQiLCJhXzAxNyIsImJfMDE4IiwibWFwX3ByZXR0eSIsImYiLCJ4Iiwib2ZfYV8wMTkiLCJib2R5X2xvY2F0aW9uXzAyNyIsImV4dGlkX2xvY2F0aW9uXzAyNSIsImJvZHlfMDIzIiwidGFnXzAyMSIsImFyZ18wMjgiLCJibmRzXzAyMCIsImFyZ18wMjYiLCJibmRzXzAyMCQwIiwiYXJnXzAyNCIsImJuZHNfMDIwJDEiLCJhcmdfMDIyIiwiYm5kc18wMjAkMiIsImFfMDI5IiwiYl8wMzAiLCJlcXVhbCQwIiwiYV8wMzUiLCJiXzAzNiIsInhfMDQxIiwiY29tcGFyZSQxIiwiYV8wNDIiLCJiXzA0MyIsIm1hcF9wcmV0dHkkMCIsImVxdWFsIiwiY29tbWVudF9wcmVmaXgiLCJtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGEiLCJ0Iiwib2NhbWxfbGV4X3RhYmxlcyIsImxleGJ1ZiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsInRlc3RzX3J1biIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmIiwieCIsImUkMCIsImUiLCJjdXJyZW50Iiwic2V0IiwiYWJzb2x1dGVfZmlsZW5hbWUiLCJ1bnNldCIsImdldF9wb3NpdGlvbiIsInJlbGF0aXZlX2ZpbGVuYW1lIiwidCIsIndpdGhfaWMiLCJmbmFtZSIsImljIiwiY3VycmVudF90ZXN0IiwiYW1fcnVubmluZ19leHBlY3RfdGVzdCIsImdldF9jdXJyZW50Iiwic2F2ZV9hbmRfcmV0dXJuX291dHB1dF93aXRob3V0IiwibG9jYXRpb24iLCJwb3MiLCJwcmV2X3BvcyIsInByZXZfcG9zJDAiLCJsZW4iLCJmbHVzaCIsInNhdmVfYW5kX3JldHVybl9vdXRwdXQiLCJpbnN0YW5jZSIsInRlc3RzX3J1biQwIiwiZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIiwicyIsImdldF9vdXRwdXRzX2FuZF9jbGVhbnVwIiwibGFzdF9vZnMiLCJuZXh0X29mcyIsImxvYyIsImFjYyIsIm9mcyIsIm91dHB1dHMiLCJ0cmFpbGluZ19vdXRwdXQiLCJzYXZlX291dHB1dCIsInRyYWlsaW5nIiwiYmxvY2tzIiwicnVuIiwiZmlsZV9kaWdlc3QiLCJkZWZpbmVkX2luIiwiZGVzY3JpcHRpb24iLCJ0YWdzIiwiZXhwZWN0YXRpb25zIiwidW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIiwiaW5saW5lX3Rlc3RfY29uZmlnIiwiZm4iLCJyZWdpc3RlcmluZ190ZXN0c19mb3IiLCJmaWxlbmFtZSIsImNoYW4iLCJ1bmNhdWdodF9leG4iLCJzYXZlZF9vdXRwdXQiLCJleG4kMCIsImV4biIsImJ0IiwicmV0dXJuJDAiLCJ4Iiwic2FuaXRpemUiLCJzIiwicnVuIiwiZiIsImJlZ2lubmluZ19vZl9maWxlIiwic2V4cF9vZl9wb3MiLCJvZmZzZXRfMDA2IiwiY29sXzAwNCIsImxpbmVfMDAyIiwiYXJnXzAwNyIsImJuZHNfMDAxIiwiYXJnXzAwNSIsImJuZHNfMDAxJDAiLCJhcmdfMDAzIiwiYm5kc18wMDEkMSIsImNvbXBhcmVfcG9zIiwic2hpZnRfcG9zIiwicG9zIiwiY29scyIsInNleHBfb2ZfcmFuZ2UiLCJlbmRfcG9zXzAxMSIsInN0YXJ0X3Bvc18wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsImNvbXBhcmVfcmFuZ2UiLCJtYWtlX3JhbmdlX2luY2wiLCJzdGFydF9wb3MiLCJsYXN0X3BvcyIsIm1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMiLCJ0Iiwid29yZF9ieXRlcyIsIm4iLCJjaHVua193b3JkcyIsImNyZWF0ZSIsImluaXRpYWxfcG9zIiwicmVzZXQiLCJhZGRfdWludDE2IiwiYWRkX2JpdHMiLCJudW1fYml0cyIsImludF9idWYiLCJudW1fYml0cyQwIiwibnVtX2JpdHMkMSIsImNvbnRlbnRzIiwicmV2X2NodW5rcyIsImNodW5rX3BvcyIsImV4dHJhX2JpdHMiLCJhZGRfZ2VuIiwib2Zmc2V0IiwiaW5zdHIiLCJpbnN0cl9iaXRzIiwibiQwIiwiYWRkIiwiYWRkX3R3aWNlIiwiYWRkX25ld2xpbmUiLCJjcmVhdGUkMCIsInAiLCJjaHVua3MiLCJjaHVuayIsIm5vX21vcmUiLCJuZXh0X2luc3RydWN0aW9uX2JpdHMiLCJ2IiwiYWRkZWRfYml0cyIsImFkdmFuY2UiLCJza2lwIiwib2Zmc2V0X3NoaWZ0Iiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzIiwic2tpcCQwIiwib2Zmc2V0X3NoaWZ0JDAiLCJvZmZzZXRfc2hpZnRfbnVtX2JpdHMkMCIsInNraXAkMSIsIm9mZnNldF9zaGlmdCQxIiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzJDEiLCJvZmZzZXRfc2hpZnQkMiIsIm9mZnNldCQwIiwic2tpcCQyIiwiYWR2YW5jZV9leG4iLCJmaW5kIiwiYSIsImIiLCJpdGVyIiwic3ViX3NleHBfY291bnQiLCJzZXhwIiwibCIsImFjYyIsIngiLCJsb29wIiwic3ViIiwiaW5kZXgiLCJpbmRleCQwIiwibG9vcF9saXN0Iiwic2V4cHMiLCJmaW5hbGl6ZSIsImZpbmRfc3ViX3NleHBfcGh5cyIsImZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzIiwidG9fbGlzdCIsImFjYyQwIiwidG9fYXJyYXkiLCJjb21wYXJlIiwidDEiLCJ0MiIsInNleHBfb2ZfdCIsInVuZXNjYXBlZF8wMDYiLCJhdG9tXzAwNCIsImxvY18wMDIiLCJlbGVtZW50c18wMTEiLCJsb2NfMDA5Iiwic2V4cF9vZl90X29yX2NvbW1lbnQiLCJhcmcwXzAxMyIsInJlczBfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfY29tbWVudCIsImNvbW1lbnRfMDIwIiwibG9jXzAxOCIsImFyZ18wMjEiLCJibmRzXzAxNyIsImFyZ18wMTkiLCJibmRzXzAxNyQwIiwic2V4cF8wMjciLCJjb21tZW50c18wMjUiLCJoYXNoX3NlbWlfcG9zXzAyMyIsImFyZ18wMjgiLCJibmRzXzAyMiIsImFyZ18wMjYiLCJibmRzXzAyMiQwIiwiYXJnXzAyNCIsImJuZHNfMDIyJDEiLCJjb21wYXJlX3Rfb3JfY29tbWVudCIsImNvbXBhcmVfY29tbWVudCIsImZvcmdldF90JDAiLCJrIiwiYXRvbSIsImVsZW1lbnRzIiwieHMiLCJmb3JnZXRfdG9jcyQwIiwiZm9yZ2V0X3QiLCJ0b2NzIiwidG9jcyQwIiwidG9jIiwiZm9yZ2V0X3RvY3MiLCJmb3JnZXRfdG9jJDAiLCJmb3JnZXRfdG9jIiwieSIsInRfb3JfY29tbWVudCIsInRfb3JfY29tbWVudHMiLCJnZXRfbWFueSIsInN0YWNrJDAiLCJzdGFjayIsImdldF9zaW5nbGUiLCJnZXRfbWFueSQwIiwiaW5pdGlhbF9zdGF0ZSIsImVycm9yX3N0YXRlIiwibW9kZSIsImtpbmQiLCJwb3NpdGlvbnMiLCJhdG9tX2J1ZmZlciIsInN0YXRlIiwibGluZSIsImNvbHVtbiIsInBvc2l0aW9uIiwiY29udGV4dCIsImhhc191bmNsb3NlZF9wYXJlbiIsInNldF9lcnJvcl9zdGF0ZSIsImF1dG9tYXRvbl9zdGF0ZSIsIm1lc3NhZ2UiLCJvbGRfcGFyc2VyX2V4biIsInJlcG9ydCIsInBwZiIsImZpbGVuYW1lIiwibXNnIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInJhaXNlIiwicmVhc29uIiwiYXRfZW9mIiwicmFpc2VfZXJyb3IiLCJjdXJyZW50X3BvcyIsImRlbHRhIiwic2V0X2F1dG9tYXRvbl9zdGF0ZSIsImFkdmFuY2VfZW9sIiwibmV3bGluZV9vZmZzZXQiLCJibG9ja19jb21tZW50X2RlcHRoIiwiYWRkX3Rva2VuX2NoYXIiLCJjaGFyJDAiLCJhZGRfYXRvbV9jaGFyIiwiYyIsImFkZF9xdW90ZWRfYXRvbV9jaGFyIiwiaXNfaWdub3JpbmciLCJpc19ub3RfaWdub3JpbmciLCJjaGVja19uZXdfc2V4cF9hbGxvd2VkIiwiaXNfc2luZ2xlIiwiYWRkX3BvcyIsImFkZF9maXJzdF9jaGFyIiwiZXBzX2FkZF9maXJzdF9jaGFyX2hhc2giLCJzdGFydF9xdW90ZWRfc3RyaW5nIiwiYWRkX2VzY2FwZWQiLCJjJDAiLCJlcHNfYWRkX2VzY2FwZWRfY3IiLCJoZXhfdmFsIiwiYWRkX2RlY19lc2NhcGVfY2hhciIsImFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciIsInZhbHVlIiwiY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoIiwiYWRkX2hleF9lc2NhcGVfY2hhciIsImFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciIsIm9wZW5pbmciLCJkb19yZXNldF9wb3NpdGlvbnMiLCJ0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQiLCJmIiwic2F2ZWRfb2Zmc2V0Iiwic2F2ZWRfZnVsbF9zZXhwcyIsImUkMCIsImUiLCJpc190b3BfbGV2ZWwiLCJjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCIsInNleHBfYWRkZWQiLCJpbm5lcl9jb21tZW50X2RlcHRoIiwiaXNfY29tbWVudCIsInRsIiwibWFrZV9saXN0IiwiYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IiwiY29tbWVudCIsImFkZF9zZXhwX3RvX3N0YWNrX2NzdCIsInJldl9jb21tZW50cyIsImhhc2hfc2VtaV9wb3MiLCJjbG9zaW5nIiwic3RhY2skMSIsInN0YWNrJDIiLCJlbmRfcG9zIiwibWFrZV9sb2MiLCJhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyIsImxlbiIsImVwc19wdXNoX2F0b20iLCJzdHIiLCJsb2MiLCJwdXNoX3F1b3RlZF9hdG9tIiwiYnVmIiwicyIsInN0YXJ0X3NleHBfY29tbWVudCIsInN0YXJ0X2Jsb2NrX2NvbW1lbnQiLCJlbmRfYmxvY2tfY29tbWVudCIsInN0YXJ0X2xpbmVfY29tbWVudCIsImVuZF9saW5lX2NvbW1lbnQiLCJlcHNfZW9pX2NoZWNrIiwidG9fc3RyaW5nIiwidHJfMDBfZiIsInRyXzAxX2YiLCJ0cl8wMl9mIiwidHJfMDNfZiIsInRyXzA0X2YiLCJ0cl8wNV9mIiwidHJfMDZfZiIsInRyXzA3X2YiLCJ0cl8wOF9mIiwidHJfMDlfZiIsInRyXzEwX2YiLCJ0cl8xMV9mIiwidHJfMTJfZiIsInRyXzEzX2YiLCJ0cl8xNF9mIiwidHJfMTVfZiIsInRyXzE2X2YiLCJ0cl8xN19mIiwidHJfMThfZiIsInRyXzE5X2YiLCJ0cl8yMF9mIiwidHJfMjFfZiIsInRyXzIyX2YiLCJ0cl8yM19mIiwidHJfMjRfZiIsInRyXzI1X2YiLCJ0cl8yNl9mIiwidHJfMjdfZiIsInRyXzI4X2YiLCJ0cl8yOV9mIiwidHJfMzBfZiIsInRyXzMxX2YiLCJ0cl8zMl9mIiwidHJfMzNfZiIsInRyXzM0X2YiLCJ0cl8zNV9mIiwidHJfMzZfZiIsInRyXzM3X2YiLCJ0cl8zOF9mIiwidHJfMzlfZiIsInRyXzQwX2YiLCJ0cl80MV9mIiwidHJfNDJfZiIsInRyXzQzX2YiLCJ0cl80NF9mIiwidHJfNDVfZiIsInRyXzQ2X2YiLCJ0cl80N19mIiwidHJfNDhfZiIsInRyXzQ5X2YiLCJ0cl81MF9mIiwidHJfNTFfZiIsInRyXzUyX2YiLCJ0cl81M19mIiwidHJfNTRfZiIsInRyXzU1X2YiLCJ0cl81Nl9mIiwidHJfNTdfZiIsInRyXzU4X2YiLCJ0cl81OV9mIiwidHJfNjBfZiIsInRyXzYxX2YiLCJ0cl82Ml9mIiwidHJfNjNfZiIsInRyXzY0X2YiLCJ0cl82NV9mIiwidHJfNjZfZiIsInRyXzY3X2YiLCJ0cl82OF9mIiwidHJfNjlfZiIsInRyXzcwX2YiLCJ0cl83MV9mIiwidHJfNzJfZiIsInRyXzczX2YiLCJ0cl83NF9mIiwidHJfNzVfZiIsInRyXzc2X2YiLCJ0cl83N19mIiwidHJfNzhfZiIsInRyX2VvaV8wMF9mIiwidHJfZW9pXzAxX2YiLCJ0cl9lb2lfMDJfZiIsInRyX2VvaV8wM19mIiwidHJfZW9pXzA0X2YiLCJ0cl9lb2lfMDVfZiIsInRyX2VvaV8wNl9mIiwidHJfZW9pXzA3X2YiLCJ0cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zX2VvaSIsIm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIiwiZmVlZCIsImlkeCIsImZlZWRfZW9pIiwib2xkX3BhcnNlcl9jb250X3N0YXRlIiwiZmVlZF9zdWJzdHJpbmdfdW5zYWZlIiwiaSIsInN0b3AiLCJpJDAiLCJpJDEiLCJmZWVkX3N1YmJ5dGVzX3Vuc2FmZSIsImZlZWRfc3Vic3RyaW5nIiwic3RyX2xlbiIsImZlZWRfc3ViYnl0ZXMiLCJmZWVkX3N0cmluZyIsImZlZWRfYnl0ZXMiLCJvZl9zdWJzdHJpbmciLCJsb2NhdGlvbl8wMDYiLCJzdWJfc2V4cF8wMDQiLCJ1c2VyX2V4bl8wMDIiLCJ1c2VyX2V4biIsInN1Yl9zZXhwIiwibG9jYXRpb24iLCJzdGFydCIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJhcmcwXzAwMyIsInJlczBfMDA0Iiwia2luZF90b19zdGFjayIsIm1ha2UiLCJtYWtlX3ZhbHVlIiwicGFyc2Vfc3RyaW5nX2V4biIsInBhcnNlX3N0cmluZyIsIm1ha2VfZWFnZXIiLCJsaW5lJDAiLCJjb2x1bW4kMCIsInBvc2l0aW9uJDAiLCJub19zZXhwX2lzX2Vycm9yIiwiZ290X3NleHAiLCJwYXJzZWRfdmFsdWUiLCJ1cGRhdGVfbGV4YnVmIiwibGV4YnVmIiwicGFyc2VfZ2VuIiwiZXhuJDAiLCJleG4iLCJzZXRfbm9fc2V4cF9pc19lcnJvciIsIm1hdGNoIiwicGFyc2UiLCJwYXJzZV9vcHQiLCJyZXJhaXNlIiwiY29udl9leG4iLCJjb252IiwieCQwIiwiY29udl9jb21iaW5lIiwicmVzdWx0IiwiciIsImMkMSIsImFuZF9nZXRfcG9zaXRpb25zIiwiZ2V0X3NleHAiLCJhbmRfcG9zaXRpb25zIiwianVzdF9nZXRfcG9zaXRpb25zIiwianVzdF9wb3NpdGlvbnMiLCJjJDIiLCJhcHBseV9mIiwiYXBwbHlfZiQwIiwiZmluZCQwIiwiYXBwbHlfZiQxIiwiZmluZCQxIiwiemVybyIsIm9yaWdpbiIsInNleHBfb2ZfdCIsImNvbCIsInJvdyIsImFkZCIsInQxIiwidDIiLCJzdWIiLCJnZXEiLCJjMiIsInIyIiwiYzEiLCJyMSIsIm9mX2xleGluZyIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwibWFwIiwidCIsImYiLCJvZl9wb3MiLCJvZl9saXN0Iiwib2ZfYSIsInhzIiwib2ZfdCIsInYzJDAiLCJ2MiQwIiwidjEkMCIsIm9mX3Rfb3JfY29tbWVudCIsInYzIiwidjIiLCJ2MSIsIngiLCJjIiwib2ZfY29tbWVudCIsInNleHBfb2ZfY29tbWVudCIsInNleHBfb2ZfdF9vcl9jb21tZW50IiwicmVsIiwib3V0ZXJfcCIsInAiLCJhdXhfdCIsInNvcHQiLCJzIiwicG9zIiwiZW5kX3BvcyIsInRvY3MiLCJzdGFydF9wb3MiLCJ0b2MiLCJhdXhfdG9jIiwiYXV4X2MiLCJ0eHQiLCJjcyIsInBvcyQwIiwicmVsYXRpdml6ZSIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5YWN0IiwiY2FtbF9wYXJzZXJfZW52IiwiXzIiLCJfMSIsInl5dGFibGVzIiwic2V4cCIsImxleGZ1biIsImxleGJ1ZiIsInNleHBfb3B0Iiwic2V4cHMiLCJyZXZfc2V4cHMiLCJzZXhwc19hYnMiLCJvY2FtbF9sZXhfdGFibGVzIiwiYnVmIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJzY2FuX3N0cmluZyIsImxvY3MiLCJsb2NzJDAiLCJvY2FtbF9sZXhfc3RhdGUkMSIsIm9jYW1sX2xleF9zdGF0ZSQyIiwibG9jcyQxIiwibG9jcyQyIiwic3RhcnQiLCJnZW5fbG9hZF9zZXhwX2xvYyIsInVuaXQiLCJvZl9pbnRfc3R5bGUiLCJvZl9mbG9hdF9zdHlsZSIsInRvX3N0cmluZyIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsInBwIiwicHBfbWFjaCIsInBwX2h1bV9pbmRlbnQiLCJwcF9odW0iLCJkZWZhdWx0X2luZGVudCIsIm1lc3NhZ2UiLCJjb21wYXJlIiwiZXF1YWwiLCJ0X3NleHBfZ3JhbW1hciIsIndpdGhfbmV3X2J1ZmZlciIsIm9jIiwib3V0cHV0X2h1bSIsIm91dHB1dF9odW1faW5kZW50IiwiaW5kZW50Iiwib3V0cHV0X21hY2giLCJwcm5nIiwidGVtcF9maWxlX25hbWUiLCJwcmVmaXgiLCJzdWZmaXgiLCJ2IiwicmFuZF9zdGF0ZSIsInJldCIsInJuZCIsIm9wZW5fdGVtcF9maWxlIiwicGVybSIsImNvdW50ZXIiLCJuYW1lIiwiZSQwIiwiZSIsImNvdW50ZXIkMCIsInNhdmVfb2Zfb3V0cHV0Iiwib3V0cHV0X2Z1bmN0aW9uIiwiZmlsZSIsInRtcF9uYW1lIiwib3V0cHV0X3NleHBfbmwiLCJkb19vdXRwdXQiLCJzYXZlX2h1bSIsInNhdmVfbWFjaCIsIm91dHB1dF9zZXhwc19ubCIsInNhdmVfc2V4cHNfaHVtIiwic2F2ZV9zZXhwc19tYWNoIiwic2Nhbl9zZXhwIiwic2Nhbl9zZXhwX29wdCIsInNjYW5fc2V4cHMiLCJzY2FuX3Jldl9zZXhwcyIsImdldF9tYWluX2J1ZiIsImJ1ZiQwIiwiYnVmJDEiLCJzY2FuX2ZvbGRfc2V4cHMiLCJpbml0IiwibWFpbiIsImFjYyIsImFjYyQwIiwic2Nhbl9pdGVyX3NleHBzIiwic2Nhbl9zZXhwc19jb252IiwiY29sbCIsInNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlIiwiY29udGFpbmluZ19zZXhwIiwibG9jYXRpb24iLCJpbnZhbGlkX3NleHAiLCJleG4iLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJnZXRfc2V4cCIsImdldF9yYW5nZSIsInJhbmdlIiwic2V4cF9vZl9jb252Iiwic2V4cF9vZl9hIiwiYSIsImZpbmRfc2V4cCIsImFubm90X3NleHAiLCJsb29wIiwic3ViX3NleHAiLCJhbm5vdHMiLCJyZXMiLCJleG4kMCIsImludmFsaWRfc2V4cCQwIiwiY3JlYXRlIiwidGV4dF9saW5lIiwidGV4dF9jaGFyIiwiYnVmX3BvcyIsImdsb2JhbF9vZmZzZXQiLCJmYWlsIiwibXNnIiwid2l0aF9idWZfcG9zIiwicGUiLCJwcG9zIiwiYW5ub3RhdGVfc2V4cCIsIml0ZXIiLCJzdGFydF9wb3MkMCIsImFubm90IiwiZW5kX3BvcyQwIiwicmFpc2VfZm91bmQiLCJzdGF0ZSIsInJhaXNlX2ZvdW5kJDAiLCJwb3NpdGlvbnMiLCJwYXJzZV9wb3Nfb2Zfc3RhdGUiLCJydW5fZmVlZF9sb29wIiwic3RhY2siLCJsZW4iLCJzdHIiLCJzdHJfbGVuIiwicG9zX2xlbiIsIm1heF9wb3MiLCJwcmV2aW91c19vZmZzZXQiLCJzdGFjayQwIiwicmVzdWx0Iiwib2Zmc2V0IiwibmV4dF9wb3MiLCJlcnIiLCJwYXJzZV9zdGF0ZSIsInBhcnNlX2Vycm9yIiwidXNlZF9yZWYiLCJwYXJzZV9mdW4iLCJjb250X3N0YXRlIiwicGFyc2UiLCJwYXJzZV9wb3MiLCJsZW4kMCIsInJhaXNlX2ZvdW5kJDEiLCJsZW5ndGgiLCJ1bnNhZmVfZmVlZF9sb29wIiwic3RhY2skMSIsInBvcyQxIiwicGFyc2Vfc3RyIiwicmFpc2VfZm91bmQkMiIsImxlbmd0aCQwIiwidW5zYWZlX2ZlZWRfbG9vcCQwIiwicGFyc2Vfc3RyX2Fubm90IiwicmFpc2VfZm91bmQkMyIsImxlbmd0aCQxIiwidW5zYWZlX2ZlZWRfbG9vcCQxIiwicGFyc2VfYmlnc3RyaW5nIiwicmFpc2VfZm91bmQkNCIsImxlbmd0aCQyIiwidW5zYWZlX2ZlZWRfbG9vcCQyIiwicGFyc2VfYmlnc3RyaW5nX2Fubm90IiwibWtfdGhpc19wYXJzZSIsIm15X3BhcnNlIiwicGFyc2VfcG9zJDAiLCJwYXJzZV9wb3MkMSIsImZlZWRfZW5kX29mX2lucHV0IiwidGhpc19wYXJzZSIsIndzX2J1ZiIsImdlbl9pbnB1dF9zZXhwIiwiaWMiLCJ0aGlzX3BhcnNlJDEiLCJzZXhwJDAiLCJ0aGlzX3BhcnNlJDAiLCJpbnB1dF9zZXhwIiwiZ2VuX2lucHV0X3Jldl9zZXhwcyIsInJldl9zZXhwc19yZWYiLCJidWZfbGVuIiwibGVuJDIiLCJ0aGlzX3BhcnNlJDIiLCJuX3BhcnNlZCIsIm5ld19sZW4iLCJsZW4kMSIsImlucHV0X3Jldl9zZXhwcyIsImlucHV0X3NleHBzIiwib2Zfc3RyaW5nX2JpZ3N0cmluZyIsImxvYyIsImdldF9sZW4iLCJnZXRfc3ViIiwiY29udF9zdGF0ZV9zdHIiLCJvZl9zdHJpbmciLCJvZl9zdHJpbmdfbWFueSIsImdldF9ic3RyX3N1Yl9zdHIiLCJic3RyIiwiaSIsImJzdHJfd3NfYnVmIiwib2ZfYmlnc3RyaW5nIiwiZ2VuX2xvYWRfcmV2X3NleHBzIiwiZXhjJDAiLCJleGMiLCJsb2FkX3Jldl9zZXhwcyIsImxvYWRfc2V4cHMiLCJnZW5fbG9hZF9zZXhwIiwic3RyaWN0IiwidGhpc19wYXJzZSQ0Iiwic2V4cCQxIiwidGhpc19wYXJzZSQzIiwiY29udF9zdGF0ZSQwIiwibG9hZF9zZXhwIiwiZ2V0X3NleHAkMCIsImdldF9yYW5nZSQwIiwic2V4cF9vZl9jb252JDAiLCJmaW5kX3NleHAkMCIsImlucHV0X3Jldl9zZXhwcyQwIiwiaW5wdXRfc2V4cCQwIiwiaW5wdXRfc2V4cHMkMCIsIm9mX3N0cmluZyQwIiwib2ZfYmlnc3RyaW5nJDAiLCJsb2FkX3Jldl9zZXhwcyQwIiwibG9hZF9zZXhwcyQwIiwibG9hZF9zZXhwJDAiLCJjb252IiwiYmFkX3NleHAiLCJiYWRfYW5ub3Rfc2V4cCIsImdldF9jb252X2V4biIsImxpbmUiLCJsb2FkX3NleHBfY29udiIsInN0cmljdCQwIiwicmFpc2VfY29udl9leG4iLCJsb2FkX3NleHBfY29udl9leG4iLCJsb2FkX3NleHBzX2NvbnYiLCJyZXZfYW5ub3Rfc2V4cHMiLCJsb2FkX3NleHBzX2NvbnZfZXhuIiwiZ2VuX29mX3N0cmluZ19jb252IiwiYW5ub3Rfb2Zfc3RyaW5nIiwib2Zfc3RyaW5nX2NvbnYiLCJvZl9iaWdzdHJpbmdfY29udiIsIm9zY2UiLCJnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2ZfYmlnc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJpc191bml0Iiwic2VhcmNoX3BoeXNpY2FsIiwiY29udGFpbmVkIiwibHN0IiwiaCIsInN1YnN0X2ZvdW5kIiwic3Vic3QiLCJmb3VuZCIsInQkMCIsInNleHBfb2ZfcG9zIiwicmV0dXJuJDAiLCJwdXRjIiwic3QiLCJiaW5kIiwibSIsInJ1biIsImVtaXRfY2hhciIsImVtaXRfc3RyaW5nIiwibiIsImVtaXRfY2hhcnMiLCJhZHZhbmNlIiwiYW5jaG9yIiwiZGVsdGEiLCJ1bmVzY2FwZWRfYXRvbSIsImxpbmVfY29tbWVudCIsIm5ld19wb3MiLCJwcmV2X3VuZXNjYXBlZCIsImltbWVkX2FmdGVyIiwicHJldl91bmVzY2FwZWQkMCIsInByZXZfdW5lc2NhcGVkJDEiLCJuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d28iLCJuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudCIsIm5lZWRfdG9fcmVwb3NpdGlvbiIsIm5ld19yb3ciLCJyb3dfZGVsdGEiLCJuZXdfcG9zJDAiLCJyb3dfZGVsdGEkMCIsIm4kMCIsInJlbmRlcl90IiwiZW5kX2RlbHRhIiwic3RhcnRfZGVsdGEiLCJjaGlsZF9hbmNob3IiLCJyZW5kZXJfdG9jIiwiZm10X3RleHQiLCJ0ZXh0IiwidGV4dCQwIiwiZm10X3RleHQkMCIsInVuZXNjYXBlZCIsInJlbmRlcl9jIiwiZGVsdGEkMCIsInJlbmRlciIsImFzZXhwIiwiZm9yZ2V0X3QkMCIsImsiLCJmb3JnZXRfdG9jcyQwIiwiZm9yZ2V0X3QiLCJ0b2NzJDAiLCJmb3JnZXRfdG9jcyIsImZvcmdldF90b2MkMCIsImZvcmdldF90b2MiLCJ5IiwidF9vcl9jb21tZW50IiwidF9vcl9jb21tZW50cyIsIm91dHB1dCIsInNhdmUiLCJzYXZlX3NleHBzIiwidmVjX3NleHBfZ3JhbW1hciIsIm1hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0X3ZlYyIsInZlYyIsImxzdF9yZWYiLCJzZXhwX29mX2JpZ3N0cmluZyIsInNleHBfb2ZfZmxvYXQzMl92ZWMiLCJzZXhwX29mX2Zsb2F0NjRfdmVjIiwic2V4cF9vZl92ZWMiLCJzZXhwX29mX2Zsb2F0X21hdCIsIm1hdCIsInNleHBfb2ZfZmxvYXQzMl9tYXQiLCJzZXhwX29mX2Zsb2F0NjRfbWF0Iiwic2V4cF9vZl9tYXQiLCJiaWdzdHJpbmdfb2Zfc2V4cCIsImZsb2F0X3ZlY19vZl9zZXhwIiwiZW1wdHlfZmxvYXRfdmVjIiwiY3JlYXRlX2Zsb2F0X3ZlYyIsImNyZWF0ZV9mbG9hdDMyX3ZlYyIsImNyZWF0ZV9mbG9hdDY0X3ZlYyIsImVtcHR5X2Zsb2F0MzJfdmVjIiwiZW1wdHlfZmxvYXQ2NF92ZWMiLCJmbG9hdDMyX3ZlY19vZl9zZXhwIiwiZmxvYXQ2NF92ZWNfb2Zfc2V4cCIsInZlY19vZl9zZXhwIiwiY2hlY2tfdG9vX211Y2hfZGF0YSIsImRhdGEiLCJmbG9hdF9tYXRfb2Zfc2V4cCIsImNyZWF0ZV9mbG9hdF9tYXQiLCJzbiIsInNtIiwiZGF0YSQwIiwiZGF0YSQxIiwiY29sJDAiLCJjcmVhdGVfZmxvYXQzMl9tYXQiLCJjcmVhdGVfZmxvYXQ2NF9tYXQiLCJmbG9hdDMyX21hdF9vZl9zZXhwIiwiZmxvYXQ2NF9tYXRfb2Zfc2V4cCIsIm1hdF9vZl9zZXhwIiwic3RyaW5nX29mX29mX3NleHBfb2YiLCJ0b19zZXhwIiwib2Zfc3RyaW5nX29mX29mX3NleHAiLCJvZl9zZXhwIiwidF9vZl9zZXhwIiwidF9vZl9zZXhwJDAiLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfdW5pdCIsInVuaXRfb2Zfc2V4cCIsInVuaXRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9ib29sIiwiYm9vbF9vZl9zZXhwIiwiYm9vbF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX3N0cmluZyIsInN0cmluZ19vZl9zZXhwIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfY2hhciIsImNoYXJfb2Zfc2V4cCIsImNoYXJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9pbnQiLCJpbnRfb2Zfc2V4cCIsImludF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc2V4cCIsImZsb2F0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9vZl9zZXhwIiwiaW50MzJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X29mX3NleHAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9vZl9zZXhwIiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfcmVmIiwicmVmX29mX3NleHAiLCJyZWZfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9sYXp5X3QiLCJsYXp5X3Rfb2Zfc2V4cCIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfbGlzdCIsImxpc3Rfb2Zfc2V4cCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9hcnJheSIsImFycmF5X29mX3NleHAiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2V4biIsImV4bl9zZXhwX2dyYW1tYXIiLCJjb2VyY2UiLCJ0YWciLCJkb2NfY29tbWVudF90YWciLCJ0eXBlX25hbWVfdGFnIiwiYXNzb2NfdGFnIiwiYXNzb2Nfa2V5X3RhZyIsImFzc29jX3ZhbHVlX3RhZyIsImNvbXBsZXRpb25fc3VnZ2VzdGVkIiwicmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0IiwiaWxsZWdhbF9hdG9tIiwiZXh0cmFjdF9wb3NfbHN0IiwiaXgiLCJzZXhwX3N0ciIsImV4dHJhY3RfcG9zIiwiZWwiLCJleHRyYWN0X21hdGNoIiwiYXJnX2l4IiwiYXJncyIsIm1heWJlX3giLCJleHRyYWN0X3JlYyIsImtleSIsInJlc3QiLCJpZCIsInN1YnN0X29wdGlvbiIsInN1cF9zdWJzdCIsInN1YnN0X3BhdGgiLCJzdWJfZWwiLCJzdWJfc3Vic3QiLCJyZWNfc3Vic3QiLCJpbXBsb2RlIiwiZmFpbF9wYXJzZSIsImRvdF9peCIsImRvdF9peDEiLCJzdHJfYWNjIiwiYyQwIiwicGF0aF9lbCIsIml4JDAiLCJhY2MkMSIsIml4JDEiLCJzdHJfYWNjJDAiLCJpeDEiLCJpeCQyIiwic3RyX2FjYyQxIiwiaXgkNiIsImluZGV4X2FjYyIsIml4JDMiLCJtYXRjaCIsImluZGV4X2FjYyQxIiwibmV3X2luZGV4X2FjYyIsIml4JDQiLCJpeCQ1IiwiaW5kZXhfYWNjJDIiLCJpbmRleF9hY2MkMCIsInBhdGhfZWwkMCIsImRvdF9peCQwIiwiYWNjJDIiLCJnZXRfc3Vic3QiLCJwYXRoIiwicGF0aCQwIiwicGF0aCQxIiwic3RyJDAiLCJnZXQiLCJyZXBsYWNlIiwic3Vic3RfZnVuIiwicmVwbGFjZV9ub19wYXRoIiwicmVnaXN0ZXIiLCJleGNfbmFtZSIsInJlZ2lzdGVyMSIsIm1ha2VfZXhjIiwic2V4cF9vZl9hcmcxIiwicmVwciIsInNleHAxIiwicmVnaXN0ZXIyIiwic2V4cF9vZl9hcmcyIiwic2V4cDIiLCJyZWdpc3RlcjMiLCJzZXhwX29mX2FyZzMiLCJzZXhwMyIsInJlZ2lzdGVyNCIsInNleHBfb2ZfYXJnNCIsInNleHA0IiwicmVnaXN0ZXI1Iiwic2V4cF9vZl9hcmc1Iiwic2V4cDUiLCJyZWdpc3RlcjYiLCJzZXhwX29mX2FyZzYiLCJzZXhwNiIsInJlZ2lzdGVyNyIsInNleHBfb2ZfYXJnNyIsInNleHA3IiwicmVnaXN0ZXI4Iiwic2V4cF9vZl9hcmc4Iiwic2V4cDgiLCJyZWdpc3RlcjkiLCJzZXhwX29mX2FyZzkiLCJzZXhwOSIsInJlZ2lzdGVyMTAiLCJzZXhwX29mX2FyZzEwIiwic2V4cDEwIiwiaW50NjQkMCIsImdvbGRlbl9nYW1tYSIsInBvcGNvdW50Iiwib2ZfaW50Iiwic2VlZCIsImNvcHkiLCJvZGRfZ2FtbWEiLCJtaXhfYml0cyIsInoiLCJuIiwibWl4NjQiLCJ6JDAiLCJ6JDEiLCJuZXh0X3NlZWQiLCJ0IiwibmV4dCIsIm9mX3NlZWRfYW5kX2dhbW1hIiwiZ2FtbWEiLCJzZWVkJDAiLCJyYW5kb21faW50NjQiLCJyYW5kb21fc3RhdGUiLCJjcmVhdGUiLCJzcGxpdCIsIm5leHRfaW50NjQiLCJwZXJ0dXJiIiwic2FsdCIsImJvb2wiLCJzdGF0ZSIsIngiLCJpbnQ2NCIsImxvIiwiaGkiLCJyZW1haW5kZXJfbWF4aW11bSIsImRyYXckMCIsInJlbWFpbmRlciIsImRyYXdfbWF4aW11bSIsImRyYXciLCJpbnQkMCIsImxvJDAiLCJoaSQwIiwiaW50MzIiLCJuYXRpdmVpbnQiLCJpbnQ2MyIsImRvdWJsZV91bHAiLCJ1bml0X2Zsb2F0X2Zyb21faW50NjQiLCJ1bml0X2Zsb2F0IiwiZmxvYXQkMCIsInJhbmdlIiwibWlkIiwiZiIsImJpdHNfdG9fcmVwcmVzZW50IiwidCQwIiwibG9nX3VuaWZvcm0iLCJtaW5fYml0cyIsIm1heF9iaXRzIiwiYml0cyIsInRfc2V4cF9ncmFtbWFyIiwib2ZfZmxvYXQiLCJ0b19mbG9hdCIsIm9mX2ludF9leG4iLCJ0b19pbnRfZXhuIiwiaGFzaF9mb2xkX3QiLCJoYXNoIiwidF9vZl9zZXhwIiwic2V4cF9vZl90Iiwib2Zfc3RyaW5nIiwidG9fc3RyaW5nIiwiZXF1YWwiLCJjb21wYXJlIiwibWluIiwibWF4IiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsImJldHdlZW4iLCJjbGFtcF9leG4iLCJjbGFtcCIsImNvbXBhcmF0b3IiLCJwcCIsImhhc2hhYmxlIiwiaXNfcG9zaXRpdmUiLCJpc19ub25fbmVnYXRpdmUiLCJpc19uZWdhdGl2ZSIsImlzX25vbl9wb3NpdGl2ZSIsInNpZ24iLCJpbnZhcmlhbnQiLCJvZl9zdHJpbmdfb3B0IiwidG9fc3RyaW5nX2h1bSIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQiLCJzaGlmdF9yaWdodCIsImRlY3IiLCJpbmNyIiwib2ZfaW50MzJfZXhuIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjRfZXhuIiwidG9faW50NjQiLCJvZl9uYXRpdmVpbnRfZXhuIiwidG9fbmF0aXZlaW50X2V4biIsIm9mX2Zsb2F0X3VuY2hlY2tlZCIsIm51bV9iaXRzIiwibWF4X3ZhbHVlIiwibWluX3ZhbHVlIiwic2hpZnRfcmlnaHRfbG9naWNhbCIsImNlaWxfcG93MiIsImZsb29yX3BvdzIiLCJjZWlsX2xvZzIiLCJmbG9vcl9sb2cyIiwiaXNfcG93MiIsImNseiIsImN0eiIsInN5bWJvbCIsImxub3QiLCJhYnMiLCJ6ZXJvIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX2Zsb2F0JDIiLCJ0b19mbG9hdCQyIiwib2ZfaW50X2V4biQyIiwidG9faW50X2V4biQyIiwiaGFzaF9mb2xkX3QkMiIsImhhc2gkMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJvZl9zdHJpbmckMiIsInRvX3N0cmluZyQyIiwiZXF1YWwkMiIsImNvbXBhcmUkMiIsIm1pbiQyIiwibWF4JDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsImJldHdlZW4kMiIsImNsYW1wX2V4biQyIiwiY2xhbXAkMiIsImNvbXBhcmF0b3IkMiIsInBwJDIiLCJoYXNoYWJsZSQyIiwiaXNfcG9zaXRpdmUkMiIsImlzX25vbl9uZWdhdGl2ZSQyIiwiaXNfbmVnYXRpdmUkMiIsImlzX25vbl9wb3NpdGl2ZSQyIiwic2lnbiQyIiwiaW52YXJpYW50JDIiLCJvZl9zdHJpbmdfb3B0JDIiLCJ0b19zdHJpbmdfaHVtJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwicmVtJDIiLCJyb3VuZCQyIiwicm91bmRfdG93YXJkc196ZXJvJDIiLCJyb3VuZF9kb3duJDIiLCJyb3VuZF91cCQyIiwicm91bmRfbmVhcmVzdCQyIiwic3VjYyQyIiwicHJlZCQyIiwicG93JDIiLCJiaXRfYW5kJDIiLCJiaXRfb3IkMiIsImJpdF94b3IkMiIsImJpdF9ub3QkMiIsInBvcGNvdW50JDMiLCJzaGlmdF9sZWZ0JDIiLCJzaGlmdF9yaWdodCQyIiwiZGVjciQyIiwiaW5jciQyIiwib2ZfaW50MzJfZXhuJDIiLCJ0b19pbnQzMl9leG4kMiIsIm9mX2ludDY0X2V4biQyIiwidG9faW50NjQkMiIsIm9mX25hdGl2ZWludF9leG4kMiIsInRvX25hdGl2ZWludF9leG4kMiIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQyIiwibnVtX2JpdHMkMiIsIm1heF92YWx1ZSQyIiwibWluX3ZhbHVlJDIiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDIiLCJjZWlsX3BvdzIkMiIsImZsb29yX3BvdzIkMiIsImNlaWxfbG9nMiQyIiwiZmxvb3JfbG9nMiQyIiwiaXNfcG93MiQyIiwiY2x6JDIiLCJjdHokMiIsInN5bWJvbCQzMyIsImxub3QkMiIsImFicyQyIiwiemVybyQyIiwic3ltYm9sJDM0Iiwic3ltYm9sJDM1Iiwic3ltYm9sJDM2IiwiaW50JDEiLCJpbnQzMiQwIiwiaW50NjMkMCIsImludDY0JDEiLCJuYXRpdmVpbnQkMCIsIm9mZnNldCIsIml0ZXJpIiwidCIsImYiLCJpIiwiaW5pdCIsImtpbmQiLCJsYXlvdXQiLCJkaW0iLCJmb2xkIiwiaW5pdCQwIiwidG9fYXJyYXkiLCJzZXhwX29mX3QiLCJzZXhwX29mX2VsdCIsInNleHBfb2ZfcGFjayIsInNleHBfb2ZfbGF5b3V0IiwieF8wMDEiLCJoYXNoX2ZvbGQiLCJoYXNoX2ZvbGRfZWx0Iiwic3RhdGUiLCJzdGF0ZSQwIiwiaXRlcmkkMCIsImoiLCJkaW0xIiwiZGltMiIsImZvbGQkMCIsImVsdCIsInRvX2FycmF5JDAiLCJzZXhwX29mX3QkMCIsInhfMDAyIiwiaGFzaF9mb2xkJDAiLCJzdGF0ZSQxIiwiY3JlYXRlIiwib2JzZXJ2ZSIsIngiLCJzaXplIiwiaGFzaCIsIm9wYXF1ZSIsImdlbmVyYXRlIiwicmFuZG9tIiwiZm4iLCJkb20iLCJybmciLCJyYW5kb20kMCIsIndpdGhfc2l6ZSIsInBlcnR1cmIiLCJzYWx0IiwiZmlsdGVyX21hcCIsImxvb3AiLCJzaXplJDAiLCJ5Iiwic2l6ZSQxIiwiZmlsdGVyIiwicmV0dXJuJDAiLCJtYXAiLCJhcHBseSIsInRmIiwidHgiLCJiaW5kIiwiYWxsIiwibGlzdCIsImFsbF91bml0IiwibWFwJDAiLCJib3RoIiwibWFwMiIsIm1hcDMiLCJtYXAkMSIsImlnbm9yZV9tIiwiam9pbiIsIm9mX2xpc3QiLCJhcnJheSIsImhpIiwibG8iLCJpbmRleCIsInVuaW9uIiwib2Zfd2VpZ2h0ZWRfbGlzdCIsImFsaXN0IiwidmFsdWVzIiwid2VpZ2h0cyIsInZhbHVlX2FycmF5Iiwic3VtIiwiYWNjIiwid2VpZ2h0IiwiY3VtdWxhdGl2ZSIsImNob2ljZSIsIndlaWdodGVkX3VuaW9uIiwib2ZfbGF6eSIsImxhenlfdCIsImZpeGVkX3BvaW50Iiwib2ZfZ2VuZXJhdG9yIiwid2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIiwibm9ucmVjX2xpc3QiLCJzZWxmIiwicmVjX2xpc3QiLCJ3IiwibiIsIm5vbnJlY19nZW4iLCJyZWNfZ2VuIiwicmVjdXJzaXZlX3VuaW9uIiwid2VpZ2h0ZWQiLCJzaXplcyIsIm1pbl9sZW5ndGgiLCJtYXhfbGVuZ3RoIiwidXBwZXJfYm91bmQiLCJtYXhfbGVuZ3RoJDAiLCJsZW4iLCJyZW1haW5pbmciLCJtYXhfaW5kZXgiLCJ1bml0IiwiYm9vbCIsIm9wdGlvbiIsInZhbHVlX3QiLCJlaXRoZXIiLCJmc3RfdCIsInNuZF90IiwicmVzdWx0Iiwib2tfdCIsImVycl90Iiwib2siLCJlcnIiLCJsaXN0X2dlbmVyaWMiLCJlbHRfZ2VuIiwibGlzdF9ub25fZW1wdHkiLCJsaXN0X3dpdGhfbGVuZ3RoIiwibGVuZ3RoIiwibGlzdF9maWx0ZXJlZCIsImVsdHMiLCJlbHRzJDAiLCJsZW5ndGhfb2ZfaW5wdXQiLCJsZW5ndGhfb2Zfb3V0cHV0IiwiaW5kaWNlcyIsImxpc3RfcGVybXV0YXRpb25zIiwicmVmIiwiY2hhcl91bmlmb3JtX2luY2x1c2l2ZSIsImNoYXJfdXBwZXJjYXNlIiwiY2hhcl9sb3dlcmNhc2UiLCJjaGFyX2RpZ2l0IiwiY2hhcl9wcmludF91bmlmb3JtIiwiY2hhcl91bmlmb3JtIiwiY2hhcl9hbHBoYSIsImNoYXJfYWxwaGFudW0iLCJjaGFyX3doaXRlc3BhY2UiLCJjaGFyX3ByaW50IiwiY2hhciQwIiwic21hbGxfaW50IiwiYWxsb3dfemVybyIsImxvd2VyX2JvdW5kIiwid2VpZ2h0ZWRfbG93Iiwid2VpZ2h0ZWRfaGlnaCIsInNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50Iiwic21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50IiwiZ2VvbWV0cmljIiwicCIsImRlbm9taW5hdG9yIiwidW5pZm9ybSIsImV4cG9uZW50aWFsIiwiZmxvYXQkMCIsImludCQwIiwiaW50JDEiLCJ1bmlmb3JtX2luY2x1c2l2ZSIsImxvZ191bmlmb3JtX2luY2x1c2l2ZSIsIm5vbl91bmlmb3JtIiwiaW5jbHVzaXZlIiwibG9nX2luY2x1c2l2ZSIsInVuaWZvcm1fYWxsIiwibGV0X3N5bnRheF8wMDQiLCJtYWduaXR1ZGUiLCJuZWdhdGl2ZSIsImxvZ191bmlmb3JtIiwiaW50X3VuaWZvcm0iLCJpbnRfaW5jbHVzaXZlIiwiaW50X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2xvZ19pbmNsdXNpdmUiLCJpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2dlb21ldHJpYyIsInVuaWZvcm0kMCIsImxvZ191bmlmb3JtJDAiLCJpbnQzMiIsImludDMyX3VuaWZvcm0iLCJpbnQzMl9pbmNsdXNpdmUiLCJpbnQzMl91bmlmb3JtX2luY2x1c2l2ZSIsImludDMyX2xvZ19pbmNsdXNpdmUiLCJpbnQzMl9sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJpbnQzMl9nZW9tZXRyaWMiLCJ1bmlmb3JtJDEiLCJsb2dfdW5pZm9ybSQxIiwiaW50NjMiLCJpbnQ2M191bmlmb3JtIiwiaW50NjNfaW5jbHVzaXZlIiwiaW50NjNfdW5pZm9ybV9pbmNsdXNpdmUiLCJpbnQ2M19sb2dfaW5jbHVzaXZlIiwiaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50NjNfZ2VvbWV0cmljIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX2Zsb2F0JDIiLCJ0b19mbG9hdCQyIiwib2ZfaW50X2V4biQyIiwidG9faW50X2V4biQyIiwiaGFzaF9mb2xkX3QkMiIsImhhc2gkMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJvZl9zdHJpbmckMiIsInRvX3N0cmluZyQyIiwiZXF1YWwkMiIsImNvbXBhcmUkMiIsIm1pbiQyIiwibWF4JDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsImJldHdlZW4kMiIsImNsYW1wX2V4biQyIiwiY2xhbXAkMiIsImNvbXBhcmF0b3IkMiIsInBwJDIiLCJoYXNoYWJsZSQyIiwiaXNfcG9zaXRpdmUkMiIsImlzX25vbl9uZWdhdGl2ZSQyIiwiaXNfbmVnYXRpdmUkMiIsImlzX25vbl9wb3NpdGl2ZSQyIiwic2lnbiQyIiwiaW52YXJpYW50JDIiLCJvZl9zdHJpbmdfb3B0JDIiLCJ0b19zdHJpbmdfaHVtJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwicmVtJDIiLCJyb3VuZCQyIiwicm91bmRfdG93YXJkc196ZXJvJDIiLCJyb3VuZF9kb3duJDIiLCJyb3VuZF91cCQyIiwicm91bmRfbmVhcmVzdCQyIiwic3VjYyQyIiwicHJlZCQyIiwicG93JDIiLCJiaXRfYW5kJDIiLCJiaXRfb3IkMiIsImJpdF94b3IkMiIsImJpdF9ub3QkMiIsInBvcGNvdW50JDIiLCJzaGlmdF9sZWZ0JDIiLCJzaGlmdF9yaWdodCQyIiwiZGVjciQyIiwiaW5jciQyIiwib2ZfaW50MzJfZXhuJDIiLCJ0b19pbnQzMl9leG4kMiIsIm9mX2ludDY0X2V4biQyIiwidG9faW50NjQkMiIsIm9mX25hdGl2ZWludF9leG4kMiIsInRvX25hdGl2ZWludF9leG4kMiIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQyIiwibnVtX2JpdHMkMiIsIm1heF92YWx1ZSQyIiwibWluX3ZhbHVlJDIiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDIiLCJjZWlsX3BvdzIkMiIsImZsb29yX3BvdzIkMiIsImNlaWxfbG9nMiQyIiwiZmxvb3JfbG9nMiQyIiwiaXNfcG93MiQyIiwiY2x6JDIiLCJjdHokMiIsInN5bWJvbCQzNiIsImxub3QkMiIsImFicyQyIiwiemVybyQyIiwic3ltYm9sJDM3Iiwic3ltYm9sJDM4Iiwic3ltYm9sJDM5IiwidW5pZm9ybSQyIiwibG9nX3VuaWZvcm0kMiIsImludDY0IiwiaW50NjRfdW5pZm9ybSIsImludDY0X2luY2x1c2l2ZSIsImludDY0X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50NjRfbG9nX2luY2x1c2l2ZSIsImludDY0X2xvZ191bmlmb3JtX2luY2x1c2l2ZSIsImludDY0X2dlb21ldHJpYyIsInVuaWZvcm0kMyIsImxvZ191bmlmb3JtJDMiLCJuYXRpdmVpbnQiLCJuYXRpdmVpbnRfdW5pZm9ybSIsIm5hdGl2ZWludF9pbmNsdXNpdmUiLCJuYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmUiLCJuYXRpdmVpbnRfbG9nX2luY2x1c2l2ZSIsIm5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdiIsIm5hdGl2ZWludF9nZW9tZXRyaWMiLCJmbG9hdF96ZXJvX2V4cG9uZW50IiwiZmxvYXRfemVyb19tYW50aXNzYSIsImZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdiIsImZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCIsImZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EiLCJmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1IiwiZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCIsImZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQiLCJmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfaW5mX2V4cG9uZW50IiwiZmxvYXRfaW5mX21hbnRpc3NhIiwiZmxvYXRfbmFuX2V4cG9uZW50IiwiZmxvYXRfbWluX25hbl9tYW50aXNzYSIsImZsb2F0X25vcm1hbF9tYW50aXNzYSIsIm51bV9iaXRzIiwiYml0cyIsImZsb2F0X2V4cG9uZW50IiwiZmxvYXRfemVybyIsImxldF9zeW50YXhfMDEyIiwibGV0X3N5bnRheF8wMTMiLCJmbG9hdF9zdWJub3JtYWwiLCJtYW50aXNzYSIsImV4cG9uZW50IiwiZmxvYXRfbm9ybWFsIiwiZmxvYXRfaW5maW5pdGUiLCJsZXRfc3ludGF4XzAyMSIsImxldF9zeW50YXhfMDIyIiwiZmxvYXRfbmFuIiwiZmxvYXRfb2ZfY2xhc3MiLCJjIiwiZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyIsImZsb2F0X2Zpbml0ZSIsImZsb2F0X3dpdGhvdXRfbmFuIiwiZmxvYXRfZmluaXRlX25vbl96ZXJvIiwiZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUiLCJmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSIsImZsb2F0X3Bvc2l0aXZlX29yX3plcm8iLCJmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvIiwiZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUiLCJsb3dlcl9pbmNsdXNpdmUiLCJ1cHBlcl9pbmNsdXNpdmUiLCJmbG9hdF9pbmNsdXNpdmUiLCJzdHJpbmdfd2l0aF9sZW5ndGhfb2YiLCJjaGFyX2dlbiIsInN0cmluZ19vZiIsInN0cmluZ19ub25fZW1wdHlfb2YiLCJzdHJpbmciLCJzdHJpbmdfbm9uX2VtcHR5Iiwic3RyaW5nX3dpdGhfbGVuZ3RoIiwiZWRpdF9pbnNlcnQiLCJwb3MiLCJzdHIiLCJlZGl0Iiwibl90aW1lcyIsInN0cmluZ19saWtlIiwiYnl0ZXMiLCJzZXhwX29mIiwiYXRvbSIsInNleHAiLCJtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIiwiY29tcGFyYXRvciIsImtleV9nZW4iLCJkYXRhX2dlbiIsImtleXMiLCJrZXlzJDAiLCJkYXRhIiwic2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciIsIm1hcF90X20iLCJtIiwic2V0X3RfbSIsImJpZ2FycmF5MSIsImJpZ3N0cmluZyIsImZsb2F0MzJfdmVjIiwiZmxvYXQ2NF92ZWMiLCJiaWdhcnJheTJfZGltIiwibWF4X3RvdGFsX3NpemUiLCJhIiwibWF4X2IiLCJiX3dlaWdodGVkX2xvdyIsImIiLCJiaWdhcnJheTIiLCJmbG9hdDMyX21hdCIsImZsb2F0NjRfbWF0IiwiY292ZXJhZ2UiLCJDbXAiLCJzYW1wbGUiLCJjb3VudHMiLCJ2YWx1ZSIsInByZXYiLCJtb25pdG9yIiwiYXRvbWljIiwic2hyaW5rIiwiZl9pbnZlcnNlIiwib2Zfc2hyaW5rZXIiLCJzbmQiLCJmc3QiLCJzcmMiLCJ0b19za2lwIiwidG9fc2tpcCQwIiwiaSQwIiwiciIsImRpbTIkMCIsInYiLCJkaW0xJDAiLCJzaHJpbmskMCIsImZpZWxkIiwiZGltcyIsInNraXAiLCJlbHRfdCIsImxpc3RfdCIsInRhaWwiLCJoZWFkIiwic2hyaW5rZXIiLCJsIiwic2hyaW5rX2xpc3QiLCJzaHJpbmtfdHJlZSIsImtleV90IiwiZGF0YV90IiwidHJlZSIsImRyb3Bfa2V5cyIsImsiLCJrZXkiLCJ0cmVlJDAiLCJzbWFsbGVyX2tleSIsInNocmlua19rZXlzIiwic21hbGxlcl9kYXRhIiwic2hyaW5rX2RhdGEiLCJkcm9wX2VsdHMiLCJzbWFsbGVyX2VsdCIsInNocmlua19lbHRzIiwibWFwX3QiLCJzZXRfdCIsIm5hbWVzIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInNocmlua19jb3VudCIsInRlc3RfY291bnQiLCJzZWVkIiwic2l6ZXMkMCIsInNocmlua19jb3VudCQwIiwidGVzdF9jb3VudCQwIiwic2VlZCQwIiwibWFrZV9jcmVhdG9yIiwic2VlZF9mdW4iLCJ0ZXN0X2NvdW50X2Z1biIsInNocmlua19jb3VudF9mdW4iLCJzaXplc19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJzZWVkX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJ0ZXN0X2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJzaHJpbmtfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInNpemVzX2dlbiIsIml0ZXIiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwic2l6ZXNfMDEwIiwic2hyaW5rX2NvdW50XzAwOCIsInRlc3RfY291bnRfMDA2Iiwic2VlZF8wMDQiLCJzdWZmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsImJuZHNfMDAzIiwic3VmZml4JDAiLCJhcmdfMDExIiwiYm5kc18wMDMkMCIsImFyZ18wMDkiLCJibmRzXzAwMyQxIiwiYXJnXzAwNyIsImJuZHNfMDAzJDIiLCJhcmdfMDA1IiwiYm5kc18wMDMkMyIsImRlZmF1bHRfY29uZmlnIiwibGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlIiwid2l0aF9zYW1wbGUiLCJnZW5lcmF0b3IiLCJjb25maWciLCJleGFtcGxlcyIsIm51bWJlcl9vZl9zaXplX3ZhbHVlcyIsInJlbWFpbmluZ19zaXplcyIsInNlcXVlbmNlIiwiaW5wdXQiLCJlcnJvciIsImVycm9yJDEiLCJpbnB1dCQwIiwic2hyaW5rX2NvdW50JDEiLCJhbHRlcm5hdGVzJDIiLCJhbHRlcm5hdGVzIiwiYWx0ZXJuYXRlcyQwIiwiYWx0ZXJuYXRlIiwiZXJyb3IkMCIsImFsdGVybmF0ZXMkMSIsInJ1biIsIk0iLCJmJDAiLCJ3aXRoX3NhbXBsZV9leG4iLCJydW5fZXhuIiwidGVzdGFibGUiLCJ1bm1hcCIsIm9mX2hhc2hfZm9sZCIsIndyYXAiLCJoYXNoJDAiLCJoYXNoJDEiLCJtYXBfdHJlZSIsImtleV9vYnMiLCJkYXRhX29icyIsInNldF90cmVlIiwiZWx0X29icyIsImhhbmRsZXJzIiwia2V5IiwiaW5wIiwiY2FsbGJhY2siLCJ2YWx1ZSIsImluamVjdCIsInYiLCJjYWxsZWQiLCJjYWxsYmFjayQwIiwiYSIsImhhbmRsZSIsInMiLCJwcmludF9zIiwiTmV2ZXIiLCJyZXR1cm4kMCIsImJpbmQiLCJ0IiwiZiIsIm9mX2Z1biIsImxhenkiLCJtYXAiLCJldmFsJDAiLCJ0JDAiLCJ0JDEiLCJsIiwiZiQwIiwidCQyIiwiY2FsbGJhY2skMSIsImYkMSIsInQkMyIsImNhbGxiYWNrJDIiLCJoYW5kbGUkMCIsImhhbmRsZSQxIiwib25fcmVzcG9uc2UiLCJvZl9zeW5jX2Z1biIsIm1ha2UiLCJyZXF1ZXN0IiwicmVzcG9uZF90byIsInJlc3BvbnNlIiwibWFrZSQwIiwiZXZhbHVhdG9yIiwiY3JlYXRlIiwidXBvbiIsImhhbmRsZXIiLCJtYXRjaCIsIngiLCJmaWxsX2lmX2VtcHR5IiwicGVlayIsImhhbmRsZSQyIiwib2Zfc3Zhcl9mdW4iLCJjcmVhdGUkMCIsInF1ZXJpZXNfcGVuZGluZ19yZXNwb25zZSIsInF1ZXJ5IiwibWF5YmVfcmVzcG9uZCIsInJlc3AiLCJvZl9xdWVyeV9yZXNwb25zZV90cmFja2VyIiwicXJ0IiwibW9kX25hbWUiLCJtb2RfbmFtZSQwIiwibW9kX25hbWUkMSIsIm1vZF9uYW1lJDIiLCJtb2RfbmFtZSQzIiwibW9kX25hbWUkNCIsIm1vZF9uYW1lJDUiLCJtb2RfbmFtZSQ2IiwibW9kX25hbWUkNyIsIm1vZF9uYW1lJDgiLCJtb2RfbmFtZSQ5IiwibWF4X3ZhbHVlJDEyIiwibW9kX25hbWUkMTAiLCJyYWlzZV9jYW5ub3RfcmVwciIsInRvX3N0cmluZyIsIngiLCJ0cnVuY191bnNpZ25lZCIsImNvbnYiLCJsb2dhbmQiLCJtYXNrIiwiZXhuX3Vuc2lnbmVkIiwiZXF1YWwiLCJ5IiwidHJ1bmNfc2lnbmVkIiwic2hpZnRfbGVmdCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnQiLCJleG5fc2lnbmVkIiwiaWRlbnRpdHlfaWZfcG9zaXRpdmUiLCJncmVhdGVyX2VxdWFsIiwiemVybyIsIm9mX3NleHBfZXJyb3IiLCJ3aGF0Iiwic2V4cCIsInRvX2ludDMyIiwidG9faW50NjQiLCJjb21wYXJlIiwiaGFzaF9mb2xkX3QiLCJmdW5jIiwiaGFzaCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsInR5cGVuYW1lX29mX3QiLCJtaW5fdmFsdWUiLCJtYXhfdmFsdWUiLCJ0cnVuYyIsIm9mX2Jhc2VfaW50X3RydW5jIiwib2ZfYmFzZV9pbnRfZXhuIiwidG9fYmFzZV9pbnQiLCJvZl9pbnQxNl90cnVuYyIsIm9mX2ludDE2X2V4biIsIm9mX2ludDMyX3RydW5jIiwieCQwIiwib2ZfaW50MzJfZXhuIiwib2ZfaW50NjNfdHJ1bmMiLCJvZl9pbnQ2M19leG4iLCJvZl9pbnQ2NF90cnVuYyIsIm9mX2ludDY0X2V4biIsIm9mX3VpbnQ4X3dyYXAiLCJvZl91aW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsImNvbXBhcmUkMSIsImhhc2hfZm9sZF90JDAiLCJmdW5jJDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwidHlwZXJlcF9vZl90JDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJ6ZXJvJDAiLCJtaW5fdmFsdWUkMCIsIm1heF92YWx1ZSQwIiwibG9nYW5kNjQiLCJtYXNrNjQiLCJlcXVhbCQwIiwiZXF1YWw2NCIsInRvX3N0cmluZyQwIiwidG9fc3RyaW5nNjQiLCJ0cnVuYyQwIiwiZXhuIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMCIsIm9mX2Jhc2VfaW50X2V4biQwIiwidG9fYmFzZV9pbnQkMCIsIm9mX3VpbnQxNl90cnVuYyIsIm9mX3VpbnQxNl9leG4iLCJvZl91aW50MzJfdHJ1bmMiLCJvZl91aW50MzJfZXhuIiwib2ZfdWludDYzX3RydW5jIiwib2ZfdWludDYzX2V4biIsIm9mX3VpbnQ2NF90cnVuYyIsIm9mX3VpbnQ2NF9leG4iLCJvZl9pbnQ4X3dyYXAiLCJvZl9pbnQ4X2V4biIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDAiLCJxdWlja2NoZWNrX29ic2VydmVyJDAiLCJxdWlja2NoZWNrX3Nocmlua2VyJDAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJzeW1ib2wkMjUiLCJzeW1ib2wkMjYiLCJzeW1ib2wkMjciLCJzeW1ib2wkMjgiLCJzeW1ib2wkMjkiLCJzeW1ib2wkMzAiLCJjb21wYXJlJDMiLCJoYXNoX2ZvbGRfdCQxIiwiZnVuYyQxIiwiaGFzaCQxIiwidF9vZl9zZXhwJDEiLCJzZXhwX29mX3QkMSIsInR5cGVyZXBfb2ZfdCQxIiwidHlwZW5hbWVfb2ZfdCQxIiwiemVybyQxIiwibWluX3ZhbHVlJDEiLCJtYXhfdmFsdWUkMSIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJzaGlmdCQwIiwidG9fc3RyaW5nJDEiLCJ0cnVuYyQxIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50X2V4biQxIiwidG9fYmFzZV9pbnQkMSIsIm9mX2ludDgiLCJvZl9pbnQzMl90cnVuYyQwIiwib2ZfaW50MzJfZXhuJDAiLCJvZl9pbnQ2M190cnVuYyQwIiwib2ZfaW50NjNfZXhuJDAiLCJvZl9pbnQ2NF90cnVuYyQwIiwib2ZfaW50NjRfZXhuJDAiLCJvZl91aW50MTZfd3JhcCIsIm9mX3VpbnQxNl9leG4kMCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJxdWlja2NoZWNrX29ic2VydmVyJDEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJjb21wYXJlJDUiLCJoYXNoX2ZvbGRfdCQyIiwiZnVuYyQyIiwiaGFzaCQyIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkMiIsInR5cGVyZXBfb2ZfdCQyIiwidHlwZW5hbWVfb2ZfdCQyIiwiemVybyQyIiwibWluX3ZhbHVlJDIiLCJtYXhfdmFsdWUkMiIsImNvbnYkMCIsImxvZ2FuZCQwIiwibG9nYW5kNjQkMCIsIm1hc2skMCIsIm1hc2s2NCQwIiwiZXF1YWwkMiIsImVxdWFsNjQkMCIsInRvX3N0cmluZyQyIiwidG9fc3RyaW5nNjQkMCIsInRydW5jJDIiLCJleG4kMCIsIm9mX2Jhc2VfaW50X3RydW5jJDIiLCJvZl9iYXNlX2ludF9leG4kMiIsInRvX2Jhc2VfaW50JDIiLCJvZl91aW50OCIsIm9mX3VpbnQzMl90cnVuYyQwIiwib2ZfdWludDMyX2V4biQwIiwib2ZfdWludDYzX3RydW5jJDAiLCJvZl91aW50NjNfZXhuJDAiLCJvZl91aW50NjRfdHJ1bmMkMCIsIm9mX3VpbnQ2NF9leG4kMCIsIm9mX2ludDE2X3dyYXAiLCJvZl9pbnQxNl9leG4kMCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDIiLCJxdWlja2NoZWNrX29ic2VydmVyJDIiLCJxdWlja2NoZWNrX3Nocmlua2VyJDIiLCJzeW1ib2wkNTMiLCJzeW1ib2wkNTQiLCJzeW1ib2wkNTUiLCJzeW1ib2wkNTYiLCJzeW1ib2wkNTciLCJzeW1ib2wkNTgiLCJzeW1ib2wkNTkiLCJzeW1ib2wkNjAiLCJzeW1ib2wkNjEiLCJzeW1ib2wkNjIiLCJjb21wYXJlJDciLCJoYXNoX2ZvbGRfdCQzIiwiZnVuYyQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkMyIsInR5cGVyZXBfb2ZfdCQzIiwidHlwZW5hbWVfb2ZfdCQzIiwiemVybyQzIiwibWluX3ZhbHVlJDMiLCJtYXhfdmFsdWUkMyIsInNoaWZ0X2xlZnQkMSIsInNoaWZ0X3JpZ2h0JDEiLCJzaGlmdCQxIiwidG9fc3RyaW5nJDMiLCJ0cnVuYyQzIiwib2ZfYmFzZV9pbnQzMiIsInRvX2Jhc2VfaW50MzIiLCJvZl9pbnQ4JDAiLCJvZl9pbnQxNiIsIm9mX2ludDYzX3RydW5jJDEiLCJvZl9pbnQ2M19leG4kMSIsIm9mX2ludDY0X3RydW5jJDEiLCJvZl9pbnQ2NF9leG4kMSIsIm9mX3VpbnQzMl93cmFwIiwib2ZfdWludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMyIsInN5bWJvbCQ2OSIsInN5bWJvbCQ3MCIsInN5bWJvbCQ3MSIsInN5bWJvbCQ3MiIsInN5bWJvbCQ3MyIsInN5bWJvbCQ3NCIsInN5bWJvbCQ3NSIsInN5bWJvbCQ3NiIsInN5bWJvbCQ3NyIsInN5bWJvbCQ3OCIsImNvbXBhcmUkOSIsImhhc2hfZm9sZF90JDQiLCJmdW5jJDQiLCJoYXNoJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ0IiwidHlwZXJlcF9vZl90JDQiLCJ0eXBlbmFtZV9vZl90JDQiLCJ6ZXJvJDQiLCJtaW5fdmFsdWUkNCIsIm1heF92YWx1ZSQ0IiwiY29udiQxIiwibG9nYW5kJDEiLCJsb2dhbmQ2NCQxIiwibWFzayQxIiwibWFzazY0JDEiLCJlcXVhbCQ0IiwiZXF1YWw2NCQxIiwidG9fc3RyaW5nJDQiLCJ0b19zdHJpbmc2NCQxIiwidHJ1bmMkNCIsImV4biQxIiwib2ZfYmFzZV9pbnQzMl90cnVuYyIsIm9mX2Jhc2VfaW50MzJfZXhuIiwidG9fYmFzZV9pbnQzMl90cnVuYyIsInRvX2Jhc2VfaW50MzJfZXhuIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyIsIm9mX2Jhc2VfaW50NjRfZXhuIiwidG9fYmFzZV9pbnQ2NCIsIm9mX2Jhc2VfaW50X2V4biQzIiwidG9fYmFzZV9pbnRfZXhuIiwib2ZfdWludDgkMCIsIm9mX3VpbnQxNiIsIm9mX3VpbnQ2M190cnVuYyQxIiwib2ZfdWludDYzX2V4biQxIiwib2ZfdWludDY0X3RydW5jJDEiLCJvZl91aW50NjRfZXhuJDEiLCJvZl9pbnQzMl93cmFwIiwib2ZfaW50MzJfZXhuJDEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ0IiwicXVpY2tjaGVja19vYnNlcnZlciQ0IiwicXVpY2tjaGVja19zaHJpbmtlciQ0Iiwic3ltYm9sJDg1Iiwic3ltYm9sJDg2Iiwic3ltYm9sJDg3Iiwic3ltYm9sJDg4Iiwic3ltYm9sJDg5Iiwic3ltYm9sJDkwIiwic3ltYm9sJDkxIiwic3ltYm9sJDkyIiwic3ltYm9sJDkzIiwic3ltYm9sJDk0IiwiY29tcGFyZSQxMSIsImhhc2hfZm9sZF90JDUiLCJmdW5jJDUiLCJoYXNoJDUiLCJ0X29mX3NleHAkNSIsInNleHBfb2ZfdCQ1IiwicXVpY2tjaGVja19nZW5lcmF0b3IkNSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkNSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkNSIsInR5cGVyZXBfb2ZfdCQ1IiwidHlwZW5hbWVfb2ZfdCQ1IiwiemVybyQ1IiwibWluX3ZhbHVlJDUiLCJtYXhfdmFsdWUkNSIsInRvX3N0cmluZyQ1Iiwib2ZfYmFzZV9pbnQzMiQwIiwidG9fYmFzZV9pbnQzMiQwIiwib2ZfaW50OCQxIiwib2ZfaW50MTYkMCIsIm9mX2ludDYzX3RydW5jJDIiLCJvZl9pbnQ2M19leG4kMiIsIm9mX2ludDY0X3RydW5jJDIiLCJvZl9pbnQ2NF9leG4kMiIsIm9mX3VpbnQzMl93cmFwJDAiLCJvZl91aW50MzJfZXhuJDIiLCJzeW1ib2wkMTAxIiwic3ltYm9sJDEwMiIsInN5bWJvbCQxMDMiLCJzeW1ib2wkMTA0Iiwic3ltYm9sJDEwNSIsInN5bWJvbCQxMDYiLCJzeW1ib2wkMTA3Iiwic3ltYm9sJDEwOCIsInN5bWJvbCQxMDkiLCJzeW1ib2wkMTEwIiwiaGFzaF9mb2xkX3QkNiIsImZ1bmMkNiIsImhhc2gkNiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDYiLCJxdWlja2NoZWNrX29ic2VydmVyJDYiLCJxdWlja2NoZWNrX3Nocmlua2VyJDYiLCJjb21wYXJlJDEzIiwidHlwZXJlcF9vZl90JDYiLCJ0eXBlbmFtZV9vZl90JDYiLCJ6ZXJvJDYiLCJtaW5fdmFsdWUkNiIsImdyZWF0ZXJfZXF1YWwkMCIsInRvX3N0cmluZyQ2Iiwib2ZfYmFzZV9pbnQzMl90cnVuYyQwIiwib2ZfYmFzZV9pbnQzMl9leG4kMCIsInRvX2Jhc2VfaW50MzJfdHJ1bmMkMCIsInRvX2Jhc2VfaW50MzJfZXhuJDAiLCJvZl9iYXNlX2ludDY0X3RydW5jJDAiLCJvZl9iYXNlX2ludDY0X2V4biQwIiwidG9fYmFzZV9pbnQ2NCQwIiwib2ZfYmFzZV9pbnRfZXhuJDQiLCJ0b19iYXNlX2ludF9leG4kMCIsIm9mX3VpbnQ4JDEiLCJvZl91aW50MTYkMCIsIm9mX3VpbnQ2M190cnVuYyQyIiwib2ZfdWludDYzX2V4biQyIiwib2ZfdWludDY0X3RydW5jJDIiLCJvZl91aW50NjRfZXhuJDIiLCJvZl9pbnQzMl93cmFwJDAiLCJvZl9pbnQzMl9leG4kMiIsInNleHBfb2ZfdCQ2IiwidF9vZl9zZXhwJDYiLCJzIiwic3ltYm9sJDExMSIsInN5bWJvbCQxMTIiLCJzeW1ib2wkMTEzIiwic3ltYm9sJDExNCIsInN5bWJvbCQxMTUiLCJzeW1ib2wkMTE2Iiwic3ltYm9sJDExNyIsInN5bWJvbCQxMTgiLCJzeW1ib2wkMTE5Iiwic3ltYm9sJDEyMCIsInNpZ25lZCIsIm51bV9iaXRzIiwibnVtX2J5dGVzIiwic2lnbmVkJDAiLCJudW1fYml0cyQwIiwibnVtX2J5dGVzJDAiLCJzaWduZWQkMSIsIm51bV9iaXRzJDEiLCJudW1fYnl0ZXMkMSIsInNpZ25lZCQyIiwibnVtX2JpdHMkMiIsIm51bV9ieXRlcyQyIiwic2lnbmVkJDMiLCJudW1fYml0cyQzIiwibnVtX2J5dGVzJDMiLCJzaWduZWQkNCIsIm51bV9iaXRzJDQiLCJudW1fYnl0ZXMkNCIsInNpZ25lZCQ1IiwibnVtX2JpdHMkNSIsIm51bV9ieXRlcyQ1IiwibWF4X3ZhbHVlJDYiLCJzaWduZWQkNiIsIm51bV9iaXRzJDYiLCJudW1fYnl0ZXMkNiIsImltcGwiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ3IiwicXVpY2tjaGVja19vYnNlcnZlciQ3IiwicXVpY2tjaGVja19zaHJpbmtlciQ3IiwidF9vZl9zZXhwJDciLCJzZXhwX29mX3QkNyIsInR5cGVyZXBfb2ZfdCQ3IiwidHlwZW5hbWVfb2ZfdCQ3Iiwic2lnbmVkJDciLCJudW1fYml0cyQ3IiwibnVtX2J5dGVzJDciLCJ6ZXJvJDciLCJtaW5fdmFsdWUkNyIsIm1heF92YWx1ZSQ3IiwiaGFzaF9mb2xkX3QkNyIsImhhc2gkNyIsInN5bWJvbCQxMjciLCJzeW1ib2wkMTI4Iiwic3ltYm9sJDEyOSIsInN5bWJvbCQxMzAiLCJzeW1ib2wkMTMxIiwic3ltYm9sJDEzMiIsImVxdWFsJDciLCJjb21wYXJlJDE1IiwibWluJDciLCJtYXgkNyIsIm9mX2Jhc2VfaW50MzIkMSIsInRvX2Jhc2VfaW50MzIkMSIsIm9mX2ludDgkMiIsIm9mX2ludDE2JDEiLCJvZl9pbnQ2M190cnVuYyQzIiwib2ZfaW50NjNfZXhuJDMiLCJvZl9pbnQ2NF90cnVuYyQzIiwib2ZfaW50NjRfZXhuJDMiLCJvZl91aW50MzJfd3JhcCQxIiwib2ZfdWludDMyX2V4biQzIiwicXVpY2tjaGVja19nZW5lcmF0b3IkOCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOCIsInRfb2Zfc2V4cCQ4Iiwic2V4cF9vZl90JDgiLCJ0eXBlcmVwX29mX3QkOCIsInR5cGVuYW1lX29mX3QkOCIsInNpZ25lZCQ4IiwibnVtX2JpdHMkOCIsIm51bV9ieXRlcyQ4IiwiemVybyQ4IiwibWluX3ZhbHVlJDgiLCJtYXhfdmFsdWUkOCIsImhhc2hfZm9sZF90JDgiLCJoYXNoJDgiLCJzeW1ib2wkMTMzIiwic3ltYm9sJDEzNCIsInN5bWJvbCQxMzUiLCJzeW1ib2wkMTM2Iiwic3ltYm9sJDEzNyIsInN5bWJvbCQxMzgiLCJlcXVhbCQ4IiwiY29tcGFyZSQxNiIsIm1pbiQ4IiwibWF4JDgiLCJvZl9iYXNlX2ludDMyX3RydW5jJDEiLCJvZl9iYXNlX2ludDMyX2V4biQxIiwidG9fYmFzZV9pbnQzMl90cnVuYyQxIiwidG9fYmFzZV9pbnQzMl9leG4kMSIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50NjRfZXhuJDEiLCJ0b19iYXNlX2ludDY0JDEiLCJvZl9iYXNlX2ludF9leG4kNSIsInRvX2Jhc2VfaW50X2V4biQxIiwib2ZfdWludDgkMiIsIm9mX3VpbnQxNiQxIiwib2ZfdWludDYzX3RydW5jJDMiLCJvZl91aW50NjNfZXhuJDMiLCJvZl91aW50NjRfdHJ1bmMkMyIsIm9mX3VpbnQ2NF9leG4kMyIsIm9mX2ludDMyX3dyYXAkMSIsIm9mX2ludDMyX2V4biQzIiwiY29tcGFyZSQxNyIsImhhc2hfZm9sZF90JDkiLCJmdW5jJDciLCJoYXNoJDkiLCJ0X29mX3NleHAkOSIsInNleHBfb2ZfdCQ5IiwicXVpY2tjaGVja19nZW5lcmF0b3IkOSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOSIsInR5cGVyZXBfb2ZfdCQ5IiwidHlwZW5hbWVfb2ZfdCQ5IiwiemVybyQ5IiwibWluX3ZhbHVlJDkiLCJtYXhfdmFsdWUkOSIsImdyZWF0ZXJfZXF1YWwkMSIsInRvX3N0cmluZyQ3Iiwib2ZfaW50OCQzIiwib2ZfaW50MTYkMiIsIm9mX2ludDMyIiwib2ZfaW50NjRfdHJ1bmMkNCIsIm9mX2ludDY0X2V4biQ0Iiwib2ZfdWludDYzX3dyYXAiLCJvZl91aW50NjNfZXhuJDQiLCJzeW1ib2wkMTQ1Iiwic3ltYm9sJDE0NiIsInN5bWJvbCQxNDciLCJzeW1ib2wkMTQ4Iiwic3ltYm9sJDE0OSIsInN5bWJvbCQxNTAiLCJzeW1ib2wkMTUxIiwic3ltYm9sJDE1MiIsInN5bWJvbCQxNTMiLCJzeW1ib2wkMTU0IiwiaGFzaF9mb2xkX3QkMTAiLCJmdW5jJDgiLCJoYXNoJDEwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTAiLCJxdWlja2NoZWNrX29ic2VydmVyJDEwIiwicXVpY2tjaGVja19zaHJpbmtlciQxMCIsImNvbXBhcmUkMTkiLCJ0eXBlcmVwX29mX3QkMTAiLCJ0eXBlbmFtZV9vZl90JDEwIiwiemVybyQxMCIsIm1pbl92YWx1ZSQxMCIsIm1heF92YWx1ZSQxMCIsImdyZWF0ZXJfZXF1YWwkMiIsInRvX3N0cmluZyQ4Iiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQyIiwib2ZfYmFzZV9pbnQ2NF9leG4kMiIsInRvX2Jhc2VfaW50NjQkMiIsIm9mX3VpbnQ4JDMiLCJvZl91aW50MTYkMiIsIm9mX3VpbnQzMiIsIm9mX3VpbnQ2NF90cnVuYyQ0Iiwib2ZfdWludDY0X2V4biQ0Iiwib2ZfaW50NjNfd3JhcCIsIm9mX2ludDYzX2V4biQ0Iiwic2V4cF9vZl90JDEwIiwidF9vZl9zZXhwJDEwIiwic3ltYm9sJDE1NSIsInN5bWJvbCQxNTYiLCJzeW1ib2wkMTU3Iiwic3ltYm9sJDE1OCIsInN5bWJvbCQxNTkiLCJzeW1ib2wkMTYwIiwic3ltYm9sJDE2MSIsInN5bWJvbCQxNjIiLCJzeW1ib2wkMTYzIiwic3ltYm9sJDE2NCIsImNvbXBhcmUkMjEiLCJoYXNoX2ZvbGRfdCQxMSIsImZ1bmMkOSIsImhhc2gkMTEiLCJ0X29mX3NleHAkMTEiLCJzZXhwX29mX3QkMTEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQxMSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMTEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDExIiwidHlwZXJlcF9vZl90JDExIiwidHlwZW5hbWVfb2ZfdCQxMSIsInplcm8kMTEiLCJtaW5fdmFsdWUkMTEiLCJtYXhfdmFsdWUkMTEiLCJncmVhdGVyX2VxdWFsJDMiLCJ0b19zdHJpbmckOSIsIm9mX2ludDgkNCIsIm9mX2ludDE2JDMiLCJvZl9pbnQzMiQwIiwib2ZfaW50NjMiLCJvZl91aW50NjRfd3JhcCIsIm9mX3VpbnQ2NF9leG4kNSIsInN5bWJvbCQxNzciLCJzeW1ib2wkMTc4Iiwic3ltYm9sJDE3OSIsInN5bWJvbCQxODAiLCJzeW1ib2wkMTgxIiwic3ltYm9sJDE4MiIsInN5bWJvbCQxODMiLCJzeW1ib2wkMTg0Iiwic3ltYm9sJDE4NSIsInN5bWJvbCQxODYiLCJoYXNoX2ZvbGRfdCQxMiIsImZ1bmMkMTAiLCJoYXNoJDEyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEyIiwicXVpY2tjaGVja19zaHJpbmtlciQxMiIsImNvbXBhcmUkMjMiLCJ0eXBlcmVwX29mX3QkMTIiLCJ0eXBlbmFtZV9vZl90JDEyIiwiemVybyQxMiIsIm1pbl92YWx1ZSQxMiIsImdyZWF0ZXJfZXF1YWwkNCIsInRvX3N0cmluZyQxMCIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMyIsIm9mX2Jhc2VfaW50NjRfZXhuJDMiLCJ0b19iYXNlX2ludDY0X3RydW5jIiwidG9fYmFzZV9pbnQ2NF9leG4iLCJvZl91aW50OCQ0Iiwib2ZfdWludDE2JDMiLCJvZl91aW50MzIkMCIsIm9mX3VpbnQ2MyIsIm9mX2ludDY0X3dyYXAiLCJvZl9pbnQ2NF9leG4kNSIsInNleHBfb2ZfdCQxMiIsInRfb2Zfc2V4cCQxMiIsInN5bWJvbCQxODciLCJzeW1ib2wkMTg4Iiwic3ltYm9sJDE4OSIsInN5bWJvbCQxOTAiLCJzeW1ib2wkMTkxIiwic3ltYm9sJDE5MiIsInN5bWJvbCQxOTMiLCJzeW1ib2wkMTk0Iiwic3ltYm9sJDE5NSIsInN5bWJvbCQxOTYiLCJnZXRfaW50OCIsInQiLCJwb3MiLCJnZXRfdWludDgiLCJnZXRfaW50MTZfbGUiLCJnZXRfaW50MTZfYmUiLCJnZXRfdWludDE2X2xlIiwiZ2V0X3VpbnQxNl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQzMl9iZSIsImdldF91aW50MzJfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwiZ2V0X3VpbnQ2NF9sZSIsImdldF91aW50NjRfYmUiLCJzZXRfdWludDgiLCJzZXRfaW50OCIsInNldF91aW50MTZfbGUiLCJzZXRfdWludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDE2X2JlIiwic2V0X2ludDMyX2xlIiwieCQxIiwic2V0X2ludDMyX2JlIiwic2V0X3VpbnQzMl9sZSIsInNldF91aW50MzJfYmUiLCJzZXRfaW50NjRfbGUiLCJzZXRfaW50NjRfYmUiLCJzZXRfdWludDY0X2xlIiwic2V0X3VpbnQ2NF9iZSIsImdldF9pbnQ4JDAiLCJnZXRfdWludDgkMCIsImdldF9pbnQxNl9sZSQwIiwiZ2V0X2ludDE2X2JlJDAiLCJnZXRfdWludDE2X2xlJDAiLCJnZXRfdWludDE2X2JlJDAiLCJnZXRfaW50MzJfbGUkMCIsImdldF9pbnQzMl9iZSQwIiwiZ2V0X3VpbnQzMl9sZSQwIiwiZ2V0X3VpbnQzMl9iZSQwIiwiZ2V0X2ludDY0X2xlJDAiLCJnZXRfaW50NjRfYmUkMCIsImdldF91aW50NjRfbGUkMCIsImdldF91aW50NjRfYmUkMCIsInNldF9pbnQ4JDAiLCJzZXRfdWludDgkMCIsInNldF9pbnQxNl9sZSQwIiwic2V0X2ludDE2X2JlJDAiLCJzZXRfdWludDE2X2xlJDAiLCJzZXRfdWludDE2X2JlJDAiLCJzZXRfaW50MzJfbGUkMCIsInNldF9pbnQzMl9iZSQwIiwic2V0X3VpbnQzMl9sZSQwIiwic2V0X3VpbnQzMl9iZSQwIiwic2V0X2ludDY0X2xlJDAiLCJzZXRfaW50NjRfYmUkMCIsInNldF91aW50NjRfbGUkMCIsInNldF91aW50NjRfYmUkMCIsImdldF9pbnQ4JDEiLCJnZXRfdWludDgkMSIsImdldF9pbnQxNl9sZSQxIiwiZ2V0X2ludDE2X2JlJDEiLCJnZXRfdWludDE2X2xlJDEiLCJnZXRfdWludDE2X2JlJDEiLCJnZXRfaW50MzJfbGUkMSIsImdldF9pbnQzMl9iZSQxIiwiZ2V0X3VpbnQzMl9sZSQxIiwiZ2V0X3VpbnQzMl9iZSQxIiwiZ2V0X2ludDY0X2xlJDEiLCJnZXRfaW50NjRfYmUkMSIsImdldF91aW50NjRfbGUkMSIsImdldF91aW50NjRfYmUkMSIsImdldF9pbnQ4JDIiLCJnZXRfdWludDgkMiIsImdldF9pbnQxNl9sZSQyIiwiZ2V0X2ludDE2X2JlJDIiLCJnZXRfdWludDE2X2xlJDIiLCJnZXRfdWludDE2X2JlJDIiLCJnZXRfaW50MzJfbGUkMiIsImdldF9pbnQzMl9iZSQyIiwiZ2V0X3VpbnQzMl9sZSQyIiwiZ2V0X3VpbnQzMl9iZSQyIiwiZ2V0X2ludDY0X2xlJDIiLCJnZXRfaW50NjRfYmUkMiIsImdldF91aW50NjRfbGUkMiIsImdldF91aW50NjRfYmUkMiIsImxvYyQwIiwibG9jIiwic3ByaW50ZiIsImFyY2hfc2l4dHlmb3VyIiwiYXJjaF9iaWdfZW5kaWFuIiwibm90X29uXzMyYml0IiwiY3JlYXRlIiwibWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIiwic2l6ZSIsIm1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyQwIiwibGVuZ3RoIiwiaW5pdCIsIm4iLCJmIiwidCIsImkiLCJjaGVja19hcmdzIiwicG9zIiwibGVuIiwiYnN0ciIsImJzdHJfbGVuJDAiLCJic3RyX2xlbiIsImdldF9vcHRfbGVuIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsImxlbmd0aCQwIiwidW5zYWZlX2JsaXQiLCJsZW5ndGgkMSIsIm9mX3N0cmluZyIsIm9mX2J5dGVzIiwidG9fc3RyaW5nIiwidG9fYnl0ZXMiLCJzZXhwX29mX3RfZnJvemVuIiwidF9mcm96ZW5fb2Zfc2V4cCIsInNleHAiLCJzdHIiLCJjb3B5IiwiYXBwZW5kIiwic3JjIiwiZHN0IiwiZHN0X3Bvc19yZWYiLCJkc3RfcG9zIiwiY29uY2F0Iiwic2VwIiwibGlzdCIsInRhaWwiLCJoZWFkIiwiaGVhZF9sZW4iLCJzZXBfbGVuIiwidGFpbF9jb3VudCIsInNlcCQwIiwibWVtc2V0IiwiYyIsIm1lbWNtcCIsInQxIiwicG9zMSIsInQyIiwicG9zMiIsIm1lbWNtcF9ieXRlcyIsImJ5dGVzIiwiY29tcGFyZV90X2Zyb3plbiIsImxlbjEiLCJsZW4yIiwiaGFzaF9mb2xkX3RfZnJvemVuIiwiaGFzaCIsImhhc2hfdF9mcm96ZW4iLCJ4IiwiZXF1YWwiLCJmaW5kIiwiY2hyIiwibGVuJDAiLCJyZXMiLCJtZW1tZW0iLCJoYXlzdGFjayIsIm5lZWRsZSIsImhheXN0YWNrX2xlbiIsIm5lZWRsZV9sZW4iLCJoYXlzdGFja19wb3MiLCJuZWVkbGVfcG9zIiwiaGF5c3RhY2tfbGVuJDAiLCJuZWVkbGVfbGVuJDAiLCJnZXRfMTYiLCJnZXRfMzIiLCJnZXRfNjQiLCJzZXRfMTZfdHJ1bmMiLCJ2Iiwic2V0XzMyIiwic2V0XzY0Iiwic2lnbl9leHRlbmRfMTYiLCJ1IiwiY2hlY2tfdmFsaWRfdWludDE2IiwiY2hlY2tfdmFsaWRfaW50MTYiLCJjaGVja192YWxpZF9pbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQ2NCIsInVuc2FmZV9yZWFkX2ludDE2IiwidW5zYWZlX3JlYWRfaW50MTZfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQxNiIsInVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIiwicmVhZF9pbnQxNiIsInJlYWRfaW50MTZfc3dhcCIsIndyaXRlX2ludDE2X2V4biIsIndyaXRlX2ludDE2X3N3YXBfZXhuIiwidW5zYWZlX3JlYWRfdWludDE2IiwidW5zYWZlX3JlYWRfdWludDE2X3N3YXAiLCJ1bnNhZmVfd3JpdGVfdWludDE2IiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIiwicmVhZF91aW50MTYiLCJyZWFkX3VpbnQxNl9zd2FwIiwid3JpdGVfdWludDE2X2V4biIsIndyaXRlX3VpbnQxNl9zd2FwX2V4biIsInVuc2FmZV9yZWFkX2ludDMyX2ludCIsInVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIiwidW5zYWZlX3JlYWRfaW50MzIiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDMyIiwidW5zYWZlX3dyaXRlX2ludDMyX3N3YXAiLCJ1bnNhZmVfd3JpdGVfaW50MzJfaW50IiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMl9pbnQiLCJyZWFkX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMiIsInJlYWRfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyX2ludF9leG4iLCJ3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4iLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnQiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9yZWFkX2ludDY0IiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQ2NCIsInVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDY0X2ludCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjRfaW50IiwicmVhZF9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjQiLCJyZWFkX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NF9pbnQiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfcmVhZF9pbnQxNl9zd2FwJDAiLCJ1bnNhZmVfZ2V0X3VpbnQxNl9iZSIsInVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwJDAiLCJnZXRfaW50MTZfYmUiLCJyZWFkX2ludDE2X3N3YXAkMCIsImdldF91aW50MTZfYmUiLCJyZWFkX3VpbnQxNl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3dyaXRlX2ludDE2X3N3YXAkMCIsInVuc2FmZV9zZXRfdWludDE2X2JlIiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwJDAiLCJzZXRfaW50MTZfYmVfZXhuIiwid3JpdGVfaW50MTZfc3dhcF9leG4kMCIsInNldF91aW50MTZfYmVfZXhuIiwid3JpdGVfdWludDE2X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCQwIiwiZ2V0X2ludDMyX3RfYmUiLCJyZWFkX2ludDMyX3N3YXAkMCIsInNldF9pbnQzMl90X2JlIiwid3JpdGVfaW50MzJfc3dhcCQwIiwidW5zYWZlX3JlYWRfaW50MzJfaW50JDAiLCJ1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwJDAiLCJyZWFkX2ludDMyX2ludCQwIiwicmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwid3JpdGVfaW50MzJfaW50X2V4biQwIiwid3JpdGVfaW50MzJfaW50X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlX3RydW5jIiwidW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnQkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwiZ2V0X2ludDY0X2JlX3RydW5jIiwicmVhZF9pbnQ2NF9pbnRfc3dhcCQwIiwid3JpdGVfaW50NjRfaW50JDAiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwidW5zYWZlX2dldF9pbnQ2NF90X2JlIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCQwIiwidW5zYWZlX3NldF9pbnQ2NF90X2JlIiwidW5zYWZlX3dyaXRlX2ludDY0X3N3YXAkMCIsInVuc2FmZV9yZWFkX2ludDY0X2xvY2FsIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCIsInJlYWRfaW50NjRfbG9jYWwiLCJyZWFkX2ludDY0X3N3YXBfbG9jYWwiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9sb2NhbCQwIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCQwIiwicmVhZF9pbnQ2NF9sb2NhbCQwIiwiZ2V0X2ludDY0X3RfbGUiLCJnZXRfaW50NjRfdF9iZSIsInJlYWRfaW50NjRfc3dhcCQwIiwic2V0X2ludDY0X3RfYmUiLCJzZXRfaW50NjRfdF9sZSIsImludDY0X2NvbnZfZXJyb3IiLCJ1aW50NjRfY29udl9lcnJvciIsImludDY0X3RvX2ludF9leG4iLCJ1aW50NjRfdG9faW50X2V4biIsInVuc2FmZV9nZXRfaW50NjRfYmVfZXhuIiwidW5zYWZlX2dldF9pbnQ2NF9sZV9leG4iLCJnZXRfaW50NjRfYmVfZXhuIiwiZ2V0X2ludDY0X2xlX2V4biIsInVuc2FmZV9nZXRfdWludDY0X2JlX2V4biIsInVuc2FmZV9nZXRfdWludDY0X2xlX2V4biIsImdldF91aW50NjRfYmVfZXhuIiwiZ2V0X3VpbnQ2NF9sZV9leG4iLCJzZXRfdWludDY0X2JlX2V4biIsInNldF91aW50NjRfbGVfZXhuIiwidW5zYWZlX3NldF91aW50OCIsInVuc2FmZV9zZXRfaW50OCIsIm4kMCIsInVuc2FmZV9nZXRfdWludDgiLCJ1bnNhZmVfZ2V0X2ludDgiLCJzZXRfdWludDhfZXhuIiwic2V0X2ludDhfZXhuIiwiZ2V0X3VpbnQ4IiwiZ2V0X2ludDgiLCJ1aW50MzJfb2ZfaW50MzJfdCIsInVuc2FmZV9zZXRfdWludDMyX2xlIiwidW5zYWZlX3NldF91aW50MzJfYmUiLCJ1bnNhZmVfZ2V0X3VpbnQzMl9sZSIsInVuc2FmZV9nZXRfdWludDMyX2JlIiwic2V0X3VpbnQzMl9sZV9leG4iLCJzZXRfdWludDMyX2JlX2V4biIsImdldF91aW50MzJfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X3VpbnQ4JDAiLCJzZXRfdWludDgiLCJnZXRfdWludDE2X25lIiwic2V0X3VpbnQxNl9uZSIsImdldF9pbnQzMl9uZSIsInNldF9pbnQzMl9uZSIsImdldF9pbnQ2NF9uZSIsInNldF9pbnQ2NF9uZSIsImdldF91aW50OCQyIiwic2V0X3VpbnQ4JDEiLCJnZXRfdWludDE2X25lJDAiLCJzZXRfdWludDE2X25lJDAiLCJnZXRfaW50MzJfbmUkMCIsInNldF9pbnQzMl9uZSQwIiwiZ2V0X2ludDY0X25lJDAiLCJzZXRfaW50NjRfbmUkMCIsImVsdDEiLCJlbHQyIiwiZXF1YWwiLCJvZl9ib29sIiwibGVuZ3RoIiwiY3JlYXRlX2Jvb2wiLCJnZXQiLCJzZXQiLCJvdmVybGFwcGluZ19zcmNfZHN0IiwibGVuZ3RoJDAiLCJnZXQkMCIsInNldCQwIiwiY3JlYXRlX2Jvb2wkMCIsInJvb3QiLCJjb21wYXJhdG9yIiwiY2xhbXAiLCJjbGFtcF9leG4iLCJiZXR3ZWVuIiwiZGVzY2VuZGluZyIsImFzY2VuZGluZyIsIm1heCIsIm1pbiIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJ0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfdCIsInRfb2Zfc2V4cCIsImhhc2giLCJoYXNoX2ZvbGRfdCIsImNoZWNrX3N1ZmZpeCIsImNob3BfZXh0ZW5zaW9uIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3N1ZmZpeF9vcHQiLCJjdXJyZW50X2Rpcl9uYW1lIiwiaXNfaW1wbGljaXQiLCJpc19yZWxhdGl2ZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZSIsInRlbXBfZGlyX25hbWUiLCJkaXJuYW1lIiwiYmFzZW5hbWUiLCJpc19hYnNvbHV0ZSIsInAiLCJjb25jYXQiLCJwMSIsInAyIiwicyQxIiwicyQyIiwicyIsInMkMCIsInRvX2Fic29sdXRlX2V4biIsInJlbGF0aXZlX3RvIiwic3BsaXQiLCJpc19wb3NpeF9wYXRobmFtZV9jb21wb25lbnQiLCJzcGxpdF9leHRlbnNpb24iLCJmbiIsImZuJDAiLCJwYXRoIiwiZm4kMSIsImRpciIsImV4dCIsImJhc2VfZm4iLCJleHQkMCIsImZuJDIiLCJkaXIkMCIsImZuJDMiLCJwYXJ0cyIsImZpbGVuYW1lIiwiYWNjIiwiZmlsZW5hbWUkMCIsImZpbGVuYW1lJDEiLCJhY2MkMCIsIm9mX3BhcnRzIiwicmVzdCIsIm9mX2Fic29sdXRlX2V4biIsImEiLCJiIiwiYV9wYXJ0cyIsImJfcGFydHMiLCJhX3N1ZmZpeCIsImJfc3VmZml4IiwidDIiLCJoMiIsInQxIiwiaDEiLCJnb191cCIsInJlbHBhdGgiLCJzZXhwX29mX3QiLCJzZXhwX29mX3R5cGVfaWQiLCJ0eXBlX2lkIiwieF8wMDMiLCJ0eXBlX2lkMSIsInR5cGVfaWQyIiwibmFtZV9vZl9rZXkiLCJrZXkiLCJ1aWRfb2Zfa2V5Iiwic2V4cF9vZl90JDAiLCJzZXhwX29mX2EiLCJkYXRhIiwidHlwZV9pZF9uYW1lIiwidHlwZV9pZF91aWQiLCJjb21wYXJlIiwidDEiLCJ0MiIsImMiLCJ0b19hbGlzdCIsInQiLCJzZXhwX29mX3QkMSIsInhfMDA4IiwicGFja2VkIiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJpbnZhcmlhbnQiLCJ4XzAwOSIsInNldCIsIm1lbV9ieV9pZCIsImlkIiwibWVtIiwicmVtb3ZlX2J5X2lkIiwicmVtb3ZlIiwiZW1wdHkiLCJzaW5nbGV0b24iLCJpc19lbXB0eSIsImZpbmQiLCJ2YWx1ZSIsImtleSQwIiwiZmluZF9leG4iLCJhZGQiLCJhZGRfZXhuIiwidCQwIiwiY2hhbmdlX2V4biIsInVwZGF0ZSIsImNoYW5nZSIsIm9yaWciLCJuZXh0IiwiZiIsIm9mX2FsaXN0X2V4biIsInAiLCJvZl9hXzAxMSIsIm9mX2FfMDEyIiwieF8wMTMiLCJ4XzAxNCIsIm9mX2FfMDE3IiwidHlwZV9lcXVhbCIsImNyZWF0ZSIsImRlZmF1bHQkMCIsIm5hbWUiLCJzZXhwX29mIiwiZmluZCQwIiwic2V0JDAiLCJjaGFuZ2UkMCIsImNyZWF0ZSQwIiwiaW5pdCIsImlkJDAiLCJmaW5kJDEiLCJzZXQkMSIsImNoYW5nZSQxIiwiYWRkJDAiLCJhY2MiLCJjcmVhdGUkMSIsInhzIiwieCIsImlkJDEiLCJtZXJnZSIsImYkMCIsIm1lcmdlX3Jlc3VsdCIsInJpZ2h0X2RhdGEiLCJyaWdodF9rZXkiLCJsZWZ0X2RhdGEiLCJsZWZ0X2tleSIsImRhdGEkMCIsImVwcmludGYiLCJwcmludGYiLCJwcmludF9zIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfZW5kbGluZSIsInByZXJyX2VuZGxpbmUiLCJzcHJpbnRmIiwiZmFpbHdpdGhmIiwia3NwcmludGYiLCJhbGwiLCJjb21wYXJlIiwic2V4cF9vZl90IiwidG9fc3RyaW5nIiwidCIsImZsYWdfbmFtZSIsImVycm9yX3NvdXJjZV8wMjIiLCJlcnJvcl9zb3VyY2VfMDY3IiwiZXJyb3Jfc291cmNlXzA4OCIsImVycm9yX3NvdXJjZV8xMDQiLCJlcnJvcl9zb3VyY2VfMTE4IiwiZXJyb3Jfc291cmNlXzE0NSIsImVycm9yX3NvdXJjZV8xNzgiLCJlcnJvcl9zb3VyY2VfMjA2IiwiZXJyb3Jfc291cmNlXzIyMiIsImVycm9yX3NvdXJjZV8yMzYiLCJlcnJvcl9zb3VyY2VfMjYxIiwiZXJyb3Jfc291cmNlXzI5MCIsImVycm9yX3NvdXJjZV8zMjIiLCJlcnJvcl9zb3VyY2VfMzQ3IiwiZXJyb3Jfc291cmNlXzM3MiIsImVycm9yX3NvdXJjZV80MTEiLCJlcnJvcl9zb3VyY2VfNDU2IiwiZW51bWVyYXRlXzQ3NCIsImVudW1lcmF0ZV80NzUiLCJuYW1lcyIsIm1heWJlX21pc3NpbmdfcHJlZml4IiwibWF5YmVfbWlzc2luZ19zdWZmaXgiLCJtYXliZV9tb3JlX3N1ZmZpeCIsIm5hbWVzJDAiLCJlcnJvcl9zb3VyY2VfNDk5IiwiaW5kZW50YXRpb24iLCJzcGFjaW5nX2RvdCIsIm5hbWVzJDEiLCJlcnJvcl9zb3VyY2VfNTE3IiwibmFtZXMkMiIsImVycm9yX3NvdXJjZV81NDYiLCJuYW1lcyQzIiwiZXJyb3Jfc291cmNlXzU3NCIsImVycm9yX3NvdXJjZV82MDMiLCJ0X29mX3NleHAiLCJjb21wYXJlJDAiLCJhXzAwNiIsImJfMDA3IiwiYV8wMDYkMCIsImJfMDA3JDAiLCJhXzAwOCIsImJfMDA5IiwiYV8wMTAiLCJiXzAxMSIsImFfMDEyIiwiYl8wMTMiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsImFfMDE4IiwiYl8wMTkiLCJ0X29mX3NleHAkMCIsInNleHBfMDI0IiwidGFnXzAyNSIsInNleHBfYXJnc18wNDYiLCJhcmcwXzA0NyIsInJlczBfMDQ4Iiwic2V4cF9hcmdzXzA0MSIsImFyZzBfMDQyIiwicmVzMF8wNDMiLCJzZXhwX2FyZ3NfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsInNleHBfYXJnc18wMzYiLCJhcmcwXzAzNyIsInJlczBfMDM4Iiwic2V4cF9hcmdzXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQ5IiwicmVzMF8wNTAiLCJhcmcwXzA1MSIsInJlczBfMDUyIiwiYXJnMF8wNTMiLCJyZXMwXzA1NCIsImFyZzBfMDU1IiwicmVzMF8wNTYiLCJhcmcwXzA1NyIsInJlczBfMDU4Iiwic3RhYmxlX3dpdG5lc3MiLCJpbnZhcmlhbnQiLCJ0JDAiLCJ0JDEiLCJ0cyIsInRfb2Zfc2V4cCQxIiwic2V4cCIsInVzYWdlIiwidXNhZ2UkMCIsInVzYWdlJDEiLCJjb21wYXJlJDEiLCJhXzA1OSIsImJfMDYwIiwiYV8wNjEiLCJiXzA2MiIsImFfMDYzIiwiYl8wNjQiLCJ0X29mX3NleHAkMiIsInNleHBfMDY5IiwidGFnXzA3MCIsInNleHBfYXJnc18wNzEiLCJhcmcwXzA3MiIsInJlczBfMDczIiwic2V4cF9hcmdzXzA3NiIsImFyZzBfMDc3IiwicmVzMF8wNzgiLCJzZXhwX29mX3QkMSIsImFyZzBfMDc5IiwicmVzMF8wODAiLCJhcmcwXzA4MSIsInJlczBfMDgyIiwic3RhYmxlX3dpdG5lc3MkMCIsImNvbXBhcmUkMiIsImFfMDgzIiwiYl8wODQiLCJuIiwibiQwIiwiYV8wODUiLCJiXzA4NiIsInRfb2Zfc2V4cCQzIiwieF8wODkiLCJhbGlhc2VzIiwiZG9jIiwibmFtZSIsInNleHBfb2ZfdCQyIiwiYWxpYXNlc18wOTUiLCJkb2NfMDkzIiwibmFtZV8wOTEiLCJhcmdfMDk2IiwiYm5kc18wOTAiLCJhcmdfMDk0IiwiYm5kc18wOTAkMCIsImFyZ18wOTIiLCJibmRzXzA5MCQxIiwic3RhYmxlX3dpdG5lc3MkMSIsImNvbXBhcmUkMyIsImFfMDk3IiwiYl8wOTgiLCJhXzA5OSIsImJfMTAwIiwibiQxIiwiYV8xMDEiLCJiXzEwMiIsInRfb2Zfc2V4cCQ0IiwieF8xMDUiLCJmbGFncyIsImFub25zIiwicmVhZG1lIiwic3VtbWFyeSIsInNleHBfb2ZfdCQzIiwiZmxhZ3NfMTE1IiwiYW5vbnNfMTEzIiwicmVhZG1lXzEwOSIsInN1bW1hcnlfMTA3IiwiYXJnXzExNiIsImJuZHNfMTA2IiwiYXJnXzExNCIsImJuZHNfMTA2JDAiLCJ2XzExMCIsImFyZ18xMTIiLCJibmRfMTExIiwiYm5kc18xMDYkMSIsImFyZ18xMDgiLCJibmRzXzEwNiQyIiwic3RhYmxlX3dpdG5lc3MkMiIsInRfb2Zfc2V4cCQ1IiwieF8xMTkiLCJzZXhwX29mX3QkNCIsImZsYWdzXzEyOSIsInVzYWdlXzEyNyIsInJlYWRtZV8xMjMiLCJzdW1tYXJ5XzEyMSIsImFyZ18xMzAiLCJibmRzXzEyMCIsImFyZ18xMjgiLCJibmRzXzEyMCQwIiwidl8xMjQiLCJhcmdfMTI2IiwiYm5kXzEyNSIsImJuZHNfMTIwJDEiLCJhcmdfMTIyIiwiYm5kc18xMjAkMiIsInN0YWJsZV93aXRuZXNzJDMiLCJ0b19sYXRlc3QiLCJvZl9sYXRlc3QiLCJncmFtbWFyIiwiZ3JvdXAiLCJjb21wYXJlJDQiLCJjbXBfYSIsImFfMTMxIiwiYl8xMzIiLCJhXzEzMyIsImJfMTM0IiwiYV8xMzUiLCJiXzEzNiIsImFfMTM3IiwiYl8xMzgiLCJ0XzE0MCIsInRfMTM5IiwidF8xNDIiLCJ0XzE0MSIsInRfb2Zfc2V4cCQ2Iiwib2ZfYV8xNDMiLCJ4XzE1MSIsInNleHBfMTUwIiwiYXJnMV8xNDciLCJhcmcwXzE0NiIsInJlczBfMTQ4IiwicmVzMV8xNDkiLCJzdWJjb21tYW5kcyIsInNleHBfb2ZfdCQ1Iiwib2ZfYV8xNTIiLCJzdWJjb21tYW5kc18xNjAiLCJyZWFkbWVfMTU2Iiwic3VtbWFyeV8xNTQiLCJhcmdfMTYxIiwiYXJnMV8xNjMiLCJhcmcwXzE2MiIsInJlczBfMTY0IiwicmVzMV8xNjUiLCJibmRzXzE1MyIsInZfMTU3IiwiYXJnXzE1OSIsImJuZF8xNTgiLCJibmRzXzE1MyQwIiwiYXJnXzE1NSIsImJuZHNfMTUzJDEiLCJzdGFibGVfd2l0bmVzcyQ0IiwiYV9zdGFibGVfd2l0bmVzcyIsIm1hcCIsImYiLCJ0X29mX3NleHAkNyIsIm9mX2FfMTc2IiwieF8xODQiLCJzZXhwXzE4MyIsImFyZzFfMTgwIiwiYXJnMF8xNzkiLCJyZXMwXzE4MSIsInJlczFfMTgyIiwic2V4cF9vZl90JDYiLCJvZl9hXzE4NSIsInN1YmNvbW1hbmRzXzE5MyIsInJlYWRtZV8xODkiLCJzdW1tYXJ5XzE4NyIsImFyZ18xOTQiLCJhcmcxXzE5NiIsImFyZzBfMTk1IiwicmVzMF8xOTciLCJyZXMxXzE5OCIsImJuZHNfMTg2Iiwidl8xOTAiLCJhcmdfMTkyIiwiYm5kXzE5MSIsImJuZHNfMTg2JDAiLCJhcmdfMTg4IiwiYm5kc18xODYkMSIsIm1hcCQwIiwidG9fbGF0ZXN0JDAiLCJvZl9sYXRlc3QkMCIsImFic19wYXRoIiwiZGlyIiwicGF0aCIsImNvbXBhcmUkNSIsImFfMTk5IiwiYl8yMDAiLCJhXzIwMSIsImJfMjAyIiwibiQyIiwiYV8yMDMiLCJiXzIwNCIsInRfb2Zfc2V4cCQ4IiwieF8yMDciLCJjaGlsZF9zdWJjb21tYW5kIiwicGF0aF90b19leGUiLCJ3b3JraW5nX2RpciIsInNleHBfb2ZfdCQ3IiwiY2hpbGRfc3ViY29tbWFuZF8yMTkiLCJwYXRoX3RvX2V4ZV8yMTciLCJ3b3JraW5nX2Rpcl8yMTUiLCJyZWFkbWVfMjExIiwic3VtbWFyeV8yMDkiLCJhcmdfMjIwIiwiYm5kc18yMDgiLCJhcmdfMjE4IiwiYm5kc18yMDgkMCIsImFyZ18yMTYiLCJibmRzXzIwOCQxIiwidl8yMTIiLCJhcmdfMjE0IiwiYm5kXzIxMyIsImJuZHNfMjA4JDIiLCJhcmdfMjEwIiwiYm5kc18yMDgkMyIsInN0YWJsZV93aXRuZXNzJDUiLCJ0b19sYXRlc3QkMSIsIm9mX2xhdGVzdCQxIiwidF9vZl9zZXhwJDkiLCJ4XzIyMyIsInNleHBfb2ZfdCQ4IiwicGF0aF90b19leGVfMjMzIiwid29ya2luZ19kaXJfMjMxIiwicmVhZG1lXzIyNyIsInN1bW1hcnlfMjI1IiwiYXJnXzIzNCIsImJuZHNfMjI0IiwiYXJnXzIzMiIsImJuZHNfMjI0JDAiLCJ2XzIyOCIsImFyZ18yMzAiLCJibmRfMjI5IiwiYm5kc18yMjQkMSIsImFyZ18yMjYiLCJibmRzXzIyNCQyIiwic3RhYmxlX3dpdG5lc3MkNiIsInRvX3YzIiwib2ZfdjMiLCJ0b19sYXRlc3QkMiIsIm9mX2xhdGVzdCQyIiwidF9vZl9zZXhwJDEwIiwieF8yMzciLCJzZXhwX29mX3QkOSIsInBhdGhfdG9fZXhlXzI0NSIsInJlYWRtZV8yNDEiLCJzdW1tYXJ5XzIzOSIsImFyZ18yNDYiLCJibmRzXzIzOCIsInZfMjQyIiwiYXJnXzI0NCIsImJuZF8yNDMiLCJibmRzXzIzOCQwIiwiYXJnXzI0MCIsImJuZHNfMjM4JDEiLCJzdGFibGVfd2l0bmVzcyQ3IiwidG9fdjIiLCJvZl92MiIsInRvX2xhdGVzdCQzIiwib2ZfbGF0ZXN0JDMiLCJjb21wYXJlJDYiLCJhXzI0NyIsImJfMjQ4IiwiYV8yNDckMCIsImJfMjQ4JDAiLCJhXzI0OSIsImJfMjUwIiwiYV8yNTEiLCJiXzI1MiIsImFfMjUzIiwiYl8yNTQiLCJhXzI1NyIsImFfMjU1IiwiYl8yNTgiLCJiXzI1NiIsInRfb2Zfc2V4cCQxMSIsInNleHBfMjYzIiwidGFnXzI2NCIsInNleHBfYXJnc18yNzAiLCJhcmcwXzI3MSIsInJlczBfMjcyIiwic2V4cF9hcmdzXzI3NSIsImFyZzFfMjc3IiwiYXJnMF8yNzYiLCJyZXMwXzI3OCIsInJlczFfMjc5Iiwic2V4cF9hcmdzXzI2NSIsImFyZzBfMjY2IiwicmVzMF8yNjciLCJzZXhwX29mX3QkMTAiLCJhcmcwXzI4MCIsInJlczBfMjgxIiwiYXJnMF8yODIiLCJyZXMwXzI4MyIsImFyZzFfMjg1IiwiYXJnMF8yODQiLCJyZXMwXzI4NiIsInJlczFfMjg3Iiwic3RhYmxlX3dpdG5lc3MkOCIsInRfb2Zfc2V4cCQxMiIsInNleHBfMjkyIiwidGFnXzI5MyIsInNleHBfYXJnc18zMDkiLCJhcmcwXzMxMCIsInJlczBfMzExIiwic2V4cF9hcmdzXzI5OSIsImFyZzBfMzAwIiwicmVzMF8zMDEiLCJzZXhwX2FyZ3NfMzA0IiwiYXJnMF8zMDUiLCJyZXMwXzMwNiIsInNleHBfYXJnc18yOTQiLCJhcmcwXzI5NSIsInJlczBfMjk2Iiwic2V4cF9vZl90JDExIiwiYXJnMF8zMTIiLCJyZXMwXzMxMyIsImFyZzBfMzE0IiwicmVzMF8zMTUiLCJhcmcwXzMxNiIsInJlczBfMzE3IiwiYXJnMF8zMTgiLCJyZXMwXzMxOSIsInRfb2Zfc2V4cCQxMyIsInNleHBfMzI0IiwidGFnXzMyNSIsInNleHBfYXJnc18zMzEiLCJhcmcwXzMzMiIsInJlczBfMzMzIiwic2V4cF9hcmdzXzMzNiIsImFyZzBfMzM3IiwicmVzMF8zMzgiLCJzZXhwX2FyZ3NfMzI2IiwiYXJnMF8zMjciLCJyZXMwXzMyOCIsInNleHBfb2ZfdCQxMiIsImFyZzBfMzM5IiwicmVzMF8zNDAiLCJhcmcwXzM0MSIsInJlczBfMzQyIiwiYXJnMF8zNDMiLCJyZXMwXzM0NCIsInRvX2xhdGVzdCQ0IiwiYiIsImciLCJlIiwib2ZfbGF0ZXN0JDQiLCJ0aHVuayIsInRfb2Zfc2V4cCQxNCIsInNleHBfMzQ5IiwidGFnXzM1MCIsInNleHBfYXJnc18zNTYiLCJhcmcwXzM1NyIsInJlczBfMzU4Iiwic2V4cF9hcmdzXzM2MSIsImFyZzBfMzYyIiwicmVzMF8zNjMiLCJzZXhwX2FyZ3NfMzUxIiwiYXJnMF8zNTIiLCJyZXMwXzM1MyIsInNleHBfb2ZfdCQxMyIsImFyZzBfMzY0IiwicmVzMF8zNjUiLCJhcmcwXzM2NiIsInJlczBfMzY3IiwiYXJnMF8zNjgiLCJyZXMwXzM2OSIsInRvX2xhdGVzdCQ1Iiwib2ZfbGF0ZXN0JDUiLCJ0X29mX3NleHAkMTUiLCJzZXhwXzM3NCIsInRhZ18zNzUiLCJzZXhwX2FyZ3NfMzg2IiwiYXJnMF8zODciLCJyZXMwXzM4OCIsInNleHBfYXJnc18zODEiLCJhcmcwXzM4MiIsInJlczBfMzgzIiwic2V4cF9hcmdzXzM3NiIsImFyZzBfMzc3IiwicmVzMF8zNzgiLCJzZXhwX29mX3QkMTQiLCJhcmcwXzM4OSIsInJlczBfMzkwIiwiYXJnMF8zOTEiLCJyZXMwXzM5MiIsImFyZzBfMzkzIiwicmVzMF8zOTQiLCJ2MSIsInYwIiwidjIiLCJ2MyIsInYxJDAiLCJ2MiQwIiwidjMkMCIsIm9mX3ZlcnNpb25lZCIsImNvbXBhcmUkNyIsImFfMzk1IiwiYl8zOTYiLCJhXzM5NSQwIiwiYl8zOTYkMCIsImFfMzk3IiwiYl8zOTgiLCJhXzM5OSIsImJfNDAwIiwiYV80MDEiLCJiXzQwMiIsImFfNDAzIiwiYl80MDQiLCJhXzQwNSIsImJfNDA2IiwiYV80MDciLCJiXzQwOCIsInRfb2Zfc2V4cCQxNiIsInNleHBfNDEzIiwidGFnXzQxNCIsInNleHBfYXJnc180MzUiLCJhcmcwXzQzNiIsInJlczBfNDM3Iiwic2V4cF9hcmdzXzQzMCIsImFyZzBfNDMxIiwicmVzMF80MzIiLCJzZXhwX2FyZ3NfNDIwIiwiYXJnMF80MjEiLCJyZXMwXzQyMiIsInNleHBfYXJnc180MjUiLCJhcmcwXzQyNiIsInJlczBfNDI3Iiwic2V4cF9hcmdzXzQxNSIsImFyZzBfNDE2IiwicmVzMF80MTciLCJzZXhwX29mX3QkMTUiLCJhcmcwXzQzOCIsInJlczBfNDM5IiwiYXJnMF80NDAiLCJyZXMwXzQ0MSIsImFyZzBfNDQyIiwicmVzMF80NDMiLCJhcmcwXzQ0NCIsInJlczBfNDQ1IiwiYXJnMF80NDYiLCJyZXMwXzQ0NyIsImNvbXBhcmUkOCIsImFfNDQ4IiwiYl80NDkiLCJhXzQ1MCIsImJfNDUxIiwiYV80NTIiLCJiXzQ1MyIsInRfb2Zfc2V4cCQxNyIsInNleHBfNDU4IiwidGFnXzQ1OSIsInNleHBfYXJnc180NjAiLCJhcmcwXzQ2MSIsInJlczBfNDYyIiwic2V4cF9hcmdzXzQ2NSIsImFyZzBfNDY2IiwicmVzMF80NjciLCJzZXhwX29mX3QkMTYiLCJhcmcwXzQ2OCIsInJlczBfNDY5IiwiYXJnMF80NzAiLCJyZXMwXzQ3MSIsImNvbXBhcmUkOSIsImFfNDcyIiwiYl80NzMiLCJhY2MiLCJlbnVtZXJhdGVfNDc4IiwiZW51bWVyYXRlXzQ3OSIsImVudW1lcmF0ZV80NzciLCJlbnVtZXJhdGVfNDgwIiwiZW51bWVyYXRlXzQ3NiIsImFjYyQwIiwiZW51bWVyYXRlXzQ4MCQwIiwiYXRfbW9zdF9vbmNlIiwiciIsImF0X2xlYXN0X29uY2UiLCJhdF9tb3N0X29uY2UkMCIsInYiLCJhdF9sZWFzdF9vbmNlJDAiLCJtYWtlX2NyZWF0b3IiLCJhdF9sZWFzdF9vbmNlX2Z1biIsImF0X21vc3Rfb25jZV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJhdF9sZWFzdF9vbmNlX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJhdF9tb3N0X29uY2VfZ2VuIiwiY3JlYXRlIiwibWFwJDEiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJzZXhwX29mX3QkMTciLCJhdF9tb3N0X29uY2VfNDg0IiwiYXRfbGVhc3Rfb25jZV80ODIiLCJhcmdfNDg1IiwiYm5kc180ODEiLCJhcmdfNDgzIiwiYm5kc180ODEkMCIsInRvX2hlbHBfc3RyaW5nIiwiZGVzY3JpcHRpb24iLCJvZl9oZWxwX3N0cmluZyIsIm5hbWUkMCIsIm5hbWUkMSIsIm5hbWUkMiIsIm5hbWUkMyIsInhfNDg2IiwicyIsImZsYWdfbmFtZSQwIiwieF80ODciLCJjb21wYXJlJDEwIiwiYV80OTQiLCJiXzQ5NSIsImFfNDk2IiwiYl80OTciLCJhbGlhc2VzJDAiLCJkb2MkMCIsIm1ha2VfY3JlYXRvciQwIiwibmFtZV9mdW4iLCJkb2NfZnVuIiwiYWxpYXNlc19mdW4iLCJuYW1lX2dlbiIsImRvY19nZW4iLCJjb21waWxlX2FjYyQyIiwiYWxpYXNlc19nZW4iLCJjcmVhdGUkMCIsIm1hcCQzIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkNCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInRfb2Zfc2V4cCQxOCIsInhfNTAwIiwic2V4cF9vZl90JDE4IiwiYWxpYXNlc181MDYiLCJkb2NfNTA0IiwibmFtZV81MDIiLCJhcmdfNTA3IiwiYm5kc181MDEiLCJhcmdfNTA1IiwiYm5kc181MDEkMCIsImFyZ181MDMiLCJibmRzXzUwMSQxIiwicGFyc2VfbmFtZSIsIm51bV9vY2N1cnJlbmNlcyIsInJlcXVpcmVzX2FyZyIsImhlbHBfc2NyZWVuX2NvbXBhcmUiLCJhIiwic29ydCIsIndvcmRfd3JhcF9hbmRfc3RyaXAiLCJ0ZXh0Iiwid2lkdGgiLCJjaHVua3MiLCJ3b3JkcyIsIndvcmQiLCJsaW5lIiwibGluZXMiLCJsaW5lX2FuZF93b3JkIiwic3BhY2VzX3N0cmluZyIsInBhZF9zcGFjZXNfdG9fc3VmZml4IiwieCIsInNsYWNrIiwiaW5kZW50X2FuZF9uZXdsaW5lIiwiZG90X2luZGVudGF0aW9uX29mZnNldCIsImxoc19wYWQiLCJmbGFnIiwiZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyIsImRvY3VtZW50YXRpb24iLCJmbGFnX3dpZHRoIiwiZmxhZ19vbl9pdHNfb3duX2xpbmUiLCJ3cmFwcGVkX2RvY3VtZW50YXRpb24iLCJkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIiwiZG9jX3dyYXBwZWRfZmlyc3RfbGluZSIsIndyYXBwZWRfZG9jX2xpbmVzIiwicHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfIiwidG9fc3RyaW5nJDAiLCJsb29rdXBfZXhwYW5kIiwiYWxpc3QiLCJwcmVmaXgiLCJrZXlfdHlwZSIsImlzX2Rhc2giLCJhbGlzdCQwIiwiZGF0YSIsImtleSIsIm1hdGNoZXMiLCJjdXN0b21fcHJpbnRmXzUwOCIsImRhdGEkMCIsImtleSQwIiwibWF0Y2hpbmdfa2V5cyIsImN1c3RvbV9wcmludGZfNTA5IiwiY29tcGFyZSQxMSIsImFfNTEwIiwiYl81MTEiLCJhXzUxMiIsImJfNTEzIiwiYV81MTQiLCJiXzUxNSIsImZsYWdzJDAiLCJhbm9ucyQwIiwicmVhZG1lJDAiLCJzdW1tYXJ5JDAiLCJtYWtlX2NyZWF0b3IkMSIsInN1bW1hcnlfZnVuIiwicmVhZG1lX2Z1biIsImFub25zX2Z1biIsImZsYWdzX2Z1biIsInN1bW1hcnlfZ2VuIiwicmVhZG1lX2dlbiIsImFub25zX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJmbGFnc19nZW4iLCJjcmVhdGUkMSIsIm1hcCQ1IiwiaXRlciQzIiwiZm9sZCQzIiwibWFwX3BvbHkkMSIsImZvcl9hbGwkMyIsImV4aXN0cyQzIiwidG9fbGlzdCQzIiwiaXRlciQ0IiwiZm9sZCQ0IiwiZm9yX2FsbCQ0IiwiZXhpc3RzJDQiLCJ0b19saXN0JDQiLCJtYXAkNiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMSIsInRfb2Zfc2V4cCQxOSIsInhfNTE4Iiwic2V4cF9vZl90JDE5IiwiZmxhZ3NfNTI4IiwiYW5vbnNfNTI2IiwicmVhZG1lXzUyMiIsInN1bW1hcnlfNTIwIiwiYXJnXzUyOSIsImJuZHNfNTE5IiwiYXJnXzUyNyIsImJuZHNfNTE5JDAiLCJ2XzUyMyIsImFyZ181MjUiLCJibmRfNTI0IiwiYm5kc181MTkkMSIsImFyZ181MjEiLCJibmRzXzUxOSQyIiwiZmluZF9mbGFnIiwiZmxhZ19pbmZvIiwiY2hvaWNlcyIsImdldF91c2FnZSIsImNvbXBhcmUkMTIiLCJhXzUzMiIsImJfNTMzIiwiYV81MzQiLCJiXzUzNSIsImFfNTM2IiwiYl81MzciLCJhXzUzOCIsImJfNTM5IiwidF81NDEiLCJ0XzU0MCIsInRfNTQzIiwidF81NDIiLCJyZWFkbWUkMSIsInN1bW1hcnkkMSIsInN1YmNvbW1hbmRzJDAiLCJyZWFkbWUkMiIsInN1bW1hcnkkMiIsIm1ha2VfY3JlYXRvciQyIiwic3ViY29tbWFuZHNfZnVuIiwic3ViY29tbWFuZHNfZ2VuIiwiY3JlYXRlJDIiLCJtYXAkNyIsIml0ZXIkNSIsImZvbGQkNSIsIm1hcF9wb2x5JDIiLCJmb3JfYWxsJDUiLCJleGlzdHMkNSIsInRvX2xpc3QkNSIsIml0ZXIkNiIsImZvbGQkNiIsImZvcl9hbGwkNiIsImV4aXN0cyQ2IiwidG9fbGlzdCQ2IiwibWFwJDgiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDIiLCJ0X29mX3NleHAkMjAiLCJvZl9hXzU0NCIsInhfNTUyIiwic2V4cF81NTEiLCJhcmcxXzU0OCIsImFyZzBfNTQ3IiwicmVzMF81NDkiLCJyZXMxXzU1MCIsInNleHBfb2ZfdCQyMCIsIm9mX2FfNTUzIiwic3ViY29tbWFuZHNfNTYxIiwicmVhZG1lXzU1NyIsInN1bW1hcnlfNTU1IiwiYXJnMV81NjQiLCJhcmcwXzU2MyIsInJlczBfNTY1IiwicmVzMV81NjYiLCJhcmdfNTYyIiwiYm5kc181NTQiLCJ2XzU1OCIsImFyZ181NjAiLCJibmRfNTU5IiwiYm5kc181NTQkMCIsImFyZ181NTYiLCJibmRzXzU1NCQxIiwiZmluZF9zdWJjb21tYW5kIiwiY29tcGFyZSQxMyIsImFfNTY3IiwiYl81NjgiLCJhXzU2OSIsImJfNTcwIiwiYV81NzEiLCJiXzU3MiIsInJlYWRtZSQzIiwic3VtbWFyeSQzIiwiY2hpbGRfc3ViY29tbWFuZCQwIiwicGF0aF90b19leGUkMCIsIndvcmtpbmdfZGlyJDAiLCJyZWFkbWUkNCIsInN1bW1hcnkkNCIsIm1ha2VfY3JlYXRvciQzIiwid29ya2luZ19kaXJfZnVuIiwicGF0aF90b19leGVfZnVuIiwiY2hpbGRfc3ViY29tbWFuZF9mdW4iLCJ3b3JraW5nX2Rpcl9nZW4iLCJwYXRoX3RvX2V4ZV9nZW4iLCJjb21waWxlX2FjYyQ0IiwiY2hpbGRfc3ViY29tbWFuZF9nZW4iLCJjcmVhdGUkMyIsIm1hcCQ5IiwiaXRlciQ3IiwiZm9sZCQ3IiwibWFwX3BvbHkkMyIsImZvcl9hbGwkNyIsImV4aXN0cyQ3IiwidG9fbGlzdCQ3IiwiaXRlciQ4IiwiZm9sZCQ4IiwiZm9yX2FsbCQ4IiwiZXhpc3RzJDgiLCJ0b19saXN0JDgiLCJtYXAkMTAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDMiLCJ0X29mX3NleHAkMjEiLCJ4XzU3NSIsInNleHBfb2ZfdCQyMSIsImNoaWxkX3N1YmNvbW1hbmRfNTg3IiwicGF0aF90b19leGVfNTg1Iiwid29ya2luZ19kaXJfNTgzIiwicmVhZG1lXzU3OSIsInN1bW1hcnlfNTc3IiwiYXJnXzU4OCIsImJuZHNfNTc2IiwiYXJnXzU4NiIsImJuZHNfNTc2JDAiLCJhcmdfNTg0IiwiYm5kc181NzYkMSIsInZfNTgwIiwiYXJnXzU4MiIsImJuZF81ODEiLCJibmRzXzU3NiQyIiwiYXJnXzU3OCIsImJuZHNfNTc2JDMiLCJjb21wYXJlJDE0IiwiYV81ODkiLCJiXzU5MCIsImFfNTg5JDAiLCJiXzU5MCQwIiwiYV81OTEiLCJiXzU5MiIsImFfNTkzIiwiYl81OTQiLCJhXzU5NSIsImJfNTk2IiwiYV81OTkiLCJhXzU5NyIsImJfNjAwIiwiYl81OTgiLCJ0X29mX3NleHAkMjIiLCJzZXhwXzYwNSIsInRhZ182MDYiLCJzZXhwX2FyZ3NfNjEyIiwiYXJnMF82MTMiLCJyZXMwXzYxNCIsInNleHBfYXJnc182MTciLCJhcmcxXzYxOSIsImFyZzBfNjE4IiwicmVzMF82MjAiLCJyZXMxXzYyMSIsInNleHBfYXJnc182MDciLCJhcmcwXzYwOCIsInJlczBfNjA5Iiwic2V4cF9vZl90JDIyIiwiYXJnMF82MjIiLCJyZXMwXzYyMyIsImFyZzBfNjI0IiwicmVzMF82MjUiLCJhcmcxXzYyNyIsImFyZzBfNjI2IiwicmVzMF82MjgiLCJyZXMxXzYyOSIsImV4cGFuZGVkX3N1YmNvbW1hbmRzIiwiZXhwYW5kIiwic2V4cF9vZl90JDIzIiwiYXJnMF82MzAiLCJyZXMwXzYzMSIsImFyZzBfNjMyIiwicmVzMF82MzMiLCJhcmcwXzYzNCIsInJlczBfNjM1IiwiYXJnMF82MzYiLCJyZXMwXzYzNyIsImV4dHJhY3Rpb25fdmFyIiwiaSIsInN1cHBvcnRlZCIsInN1cHBvcnRlZF92ZXJzaW9ucyIsInRvX3ZlcnNpb25lZCIsImxhdGVzdCIsInZlcnNpb25fdG9fdXNlIiwiZnVsbHlfZm9yY2VkIiwiZ2V0X3N1bW1hcnkiLCJ2ZXJzaW9uX2xpc3QiLCJlbnVtZXJhdGVfMDA4IiwiZW51bWVyYXRlXzAwOSIsImFueSIsImV4YWN0bHlfb25jZSIsInJhaXNlX2luc3RlYWRfb2ZfZXhpdCIsInN0YXR1c18wMDIiLCJhcmdfMDAzIiwiZXhpdCIsInN0YXR1cyIsInVucGFyYWdyYXBocyIsInhzIiwiZGllIiwiZm10IiwibXNnIiwia2V5X2NyZWF0ZSIsIm11bHRpX2FkZCIsInNldF93aXRoX2RlZmF1bHQiLCJhcHBseSIsImVycl8xIiwiaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhIiwicmV0dXJuX25vX2FyZyIsInJldHVybl93aXRoX2FyZyIsImVycm9yIiwiaGFzX2FyZyIsImVyciIsInJlc3VsdCIsInJ1bl9hbmRfZXhpdCIsImVudiIsInBhcnQiLCJjb21wbGV0aW9ucyIsImV4dHJhX2RvYyIsInBhcnNlIiwiY29tcGxldGUiLCJvZl9zdHJpbmciLCJvZl9sYXp5Iiwic3RyIiwiZXh0cmFfZG9jJDAiLCJzdHJpbmciLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJzZXhwX2NvbnYiLCJvZl9zZXhwIiwib2ZfYWxpc3RfZXhuIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyQwIiwibGlzdF92YWx1ZXNfaW5faGVscCQwIiwiYXV0b19jb21wbGV0ZSIsImNhc2Vfc2Vuc2l0aXZlIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyIsImxpc3RfdmFsdWVzX2luX2hlbHAiLCJtYWtlIiwiY21wIiwiayIsImR1cGxpY2F0ZV9rZXlzIiwiUyIsInVuaXZfbWFwIiwic3VmZml4IiwidmFsdWVzIiwiYXJnIiwidiQwIiwidmFsaWRfYXJndW1lbnRzX2V4dHJhIiwiY29tcGxldGUkMCIsIm9mX21hcCIsImVudW1lcmF0ZWQiLCJFIiwiZW51bWVyYXRlZF9zZXhwYWJsZSIsImJvb2wiLCJjb21tYV9zZXBhcmF0ZWQiLCJhbGxvd19lbXB0eSIsInN0cmlwX3doaXRlc3BhY2UiLCJ1bmlxdWVfdmFsdWVzIiwic3RyaXAiLCJjb21wbGV0ZV9lbHQiLCJ0bCIsImhkIiwicHJlZml4ZXMiLCJzZWVuX2FscmVhZHkiLCJpc19hbGxvd2VkIiwiY2hvaWNlIiwiY2hvaWNlcyQwIiwic3RyaW5nJDAiLCJlbnVtZXJhdGVfMDEyIiwiZW51bWVyYXRlXzAxMyIsImVudW1lcmF0ZV8wMTEiLCJlbnVtZXJhdGVfMDE0IiwiZW51bWVyYXRlXzAxMCIsImVudW1lcmF0ZV8wMTQkMCIsInBhcnNlJDAiLCJhY3Rpb24iLCJhcmdfZG9jIiwiZG9jJDEiLCJhcmdfZG9jJDAiLCJjb25jYXQiLCJ3cmFwX2lmX29wdGlvbmFsIiwiaGVscCIsImFsaWduIiwiYV8wMjAiLCJiXzAyMSIsImFyZ19mbGFnIiwiYXJnX3R5cGUiLCJyZWFkIiwid3JpdGUiLCJ1cGRhdGUiLCJhcmckMCIsImVudiQwIiwibWFwX2ZsYWciLCJpbnB1dCIsIndyaXRlX29wdGlvbiIsInJlcXVpcmVkX3ZhbHVlIiwiZGVmYXVsdCQwIiwicmVxdWlyZWQiLCJvcHRpb25hbF93aXRoX2RlZmF1bHQiLCJvcHRpb25hbCIsInZhbHVlIiwibm9fYXJnX2dlbmVyYWwiLCJpc19yZXF1aXJlZCIsImtleV92YWx1ZSIsImRlcHJlY2F0ZWRfaG9vayIsImFjdGlvbiQwIiwibm9fYXJnIiwibm9fYXJnX3JlcXVpcmVkIiwibm9fYXJnX3JlZ2lzdGVyIiwibm9fYXJnX3NvbWUiLCJsaXN0ZWQiLCJ4XzAyMiIsInZhbHVlX2xpc3QiLCJsaXN0Iiwib25lX29yX21vcmVfYXNfcGFpciIsInhfMDIzIiwicmVzdCIsImZpcnN0IiwicSIsIm9uZV9vcl9tb3JlX2FzX2xpc3QiLCJlc2NhcGVfZ2VuZXJhbCIsInhfMDI0IiwiY21kX2xpbmUiLCJub19hcmdfYWJvcnQiLCJlc2NhcGUiLCJlc2NhcGVfd2l0aF9hdXRvY29tcGxldGUiLCJub19hcmckMCIsImhvb2siLCJlc2NhcGUkMCIsImVtcHR5JDAiLCJhcHBlbmQiLCJzdWJjb21tYW5kIiwicGFydHMiLCJwYXJ0c19leGVfYmFzZW5hbWUiLCJsZW5ndGgiLCJyZXBsYWNlX2ZpcnN0IiwiZnJvbSIsInRvIiwicGFydHMkMiIsInBhcnRzJDAiLCJwYXJ0cyQxIiwidG9fc3RyaW5nX2RvdHMiLCJsYXN0IiwiaXNfZW1wdHkiLCJpc19maXhlZF9hcml0eSIsIm90aGVycyIsInMkMCIsInplcm8iLCJjb25jYXQkMCIsImNkciIsImNhciIsInQyIiwidDEiLCJjZHIkMCIsImNhciQwIiwicGFyc2VfbW9yZSIsImZvcl9jb21wbGV0aW9uIiwidXBkYXRlX2VudiIsInBhcnNlciIsInBhY2tfZm9yX2NvbXBsZXRpb24iLCJwcyIsInN5bWJvbCQwIiwidF9sZWZ0IiwidF9yaWdodCIsImZfb3V0Y29tZSIsInhfb3V0Y29tZSIsIm1vcmUiLCJ0ciIsInRlc3QiLCJtb3JlJDAiLCJ0ZXN0JDAiLCJyZXR1cm4kMSIsInN5bWJvbF9tYXAiLCJmcm9tX2VudiIsInN5bWJvbF9tYXAkMCIsInN5bWJvbCQxIiwicmV0dXJuJDIiLCJyZXR1cm5fd2l0aF9hcmckMCIsIm9uZSIsImFub24iLCJzZXF1ZW5jZSIsImxvb3AiLCJjb25zdW1lIiwicGFja2VkIiwidCQyIiwidXBkYXRlX2VudiQwIiwicGFyc2VfZmxhZ3MiLCJwYXJzZXIkMCIsInQkMyIsImExIiwiYTIiLCJ0MyIsImEzIiwidDQiLCJhNCIsIm5vcm1hbGl6ZSIsInN0cmxlbiIsInNwZWNpYWxfY2hhcnMiLCJoYXNfc3BlY2lhbF9jaGFycyIsInN5bWJvbCQyIiwibWFwX2Fub25zIiwibWF5YmUiLCJtYXliZV93aXRoX2RlZmF1bHQiLCJzZXF1ZW5jZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCIsImFkX2hvYyIsInVzYWdlX2FyZyIsImFfMDI1IiwiYl8wMjYiLCJhXzAyNSQwIiwiYl8wMjYkMCIsImFfMDI5IiwiYV8wMjciLCJiXzAzMCIsImJfMDI4IiwiYV8wMzEiLCJiXzAzMiIsIm9mX2xpc3QiLCJhcmdzIiwieCQwIiwiZW5kc19pbl9jb21wbGV0ZSIsImV4dGVuZCIsInBhdGhfbGlzdCIsIm5vcm1hbGl6ZSQwIiwiZmxhZ19vcl9zdWJjb21tYW5kIiwiYyIsImN1c3RvbV9wcmludGZfMDMzIiwiY3VzdG9tX3ByaW50Zl8wMzQiLCJzdWJjb21tYW5kX2NtcF9mc3QiLCJzaGFwZSIsInBhdGhfa2V5IiwiYXJnc19rZXkiLCJoZWxwX2tleSIsInJ1bl9leG4iLCJleG4iLCJ2ZXJib3NlX29uX3BhcnNlX2Vycm9yIiwiZXhuX3N0ciIsInZlcmJvc2UiLCJlcnJvcl9tc2ciLCJydW4iLCJ3aGVuX3BhcnNpbmdfc3VjY2VlZHMiLCJjbWRsaW5lIiwiaGVscF90ZXh0Iiwib25fZmFpbHVyZSIsInBhcnNlciQxIiwiZW52JDEiLCJjbWRsaW5lJDAiLCJhcmdzJDAiLCJhcmckMSIsImFyZ19pc19mbGFnIiwiY21kbGluZSQxIiwibmFtZV9tYXRjaGluZyIsImFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIiwiYWxpYXMiLCJzMiIsInMxIiwiZmxhZyQwIiwiZmxhZyQxIiwiZiQxIiwiaW5mbyIsImNvbXBsZXRpbmciLCJjb21wIiwiZiQyIiwiZSQwIiwiY29tcCQwIiwiZiQzIiwiYXJnX2xpc3QiLCJjbWRsaW5lJDIiLCJlbnYkMiIsInBhcnNlX2ZsYWdzMiIsImVudiQzIiwicGFyc2VfZmxhZ3MkMCIsInBhcnQkMCIsIm1haW4iLCJmJDAiLCJ0JDQiLCJ0JDUiLCJ0JDYiLCJ0JDciLCJ3cmFwX3ZhbHVlIiwiYXBwbHkkMSIsImVtcHR5X3NwZWMiLCJtYXBfb3V0Y29tZSIsImxvb2t1cCIsImhlbHAkMCIsImludCQxIiwiY2hhciQxIiwiZmxvYXQkMSIsImJvb2wkMCIsInNleHAkMCIsInNleHBfY29udiQwIiwic3BlYyIsIm91dGNvbWUiLCJlc2NhcGVfYW5vbiIsImZpbmFsX2Fub24iLCJmdWxsX2ZsYWdfcmVxdWlyZWQiLCJtb2RlIiwiY2hlY2tfYXZhaWxhYmxlIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwic2V4cF9vZl9kZWZhdWx0IiwiZGVmYXVsdF9zZXhwIiwiY3VzdG9tX3ByaW50Zl8wMzUiLCJyZXR1cm4kMyIsIm9wdGlvbmFsX3RvX3JlcXVpcmVkIiwiYm90aCIsImFyZ19uYW1lcyIsImZsYWdfbmFtZXMiLCJhbm9uX25hbWVzIiwiYV8wMzYiLCJiXzAzNyIsImFfMDM4IiwiYl8wMzkiLCJhXzA0MCIsImJfMDQxIiwieF8wNDIiLCJjcmVhdGVfZXhuIiwicmVxdWlyZWRfYXJncyIsIm5hbWVzX3dpdGhfY29tbWFzIiwieF8wNDMiLCJsaXN0X3RvX3N0cmluZyIsImNob29zZV9vbmVfbm9uX29wdGlvbmFsIiwiaWZfbm90aGluZ19jaG9zZW4iLCJuZXdfYmVoYXZpb3IiLCJuYW1lX29mX3RoZV9ncm91cCIsImZsYWdfaW50ZXJuYWwiLCJleGNlcHQiLCJsIiwidHMkMCIsImFyZ19jb3VudGVyIiwibW9yZV90aGFuX29uZV9lcnJvciIsInBhc3NlZCIsImN1c3RvbV9wcmludGZfMDQ0IiwiZXJyb3JfbGlzdCIsInN1Y2Nlc3NfbGlzdCIsInZhbHVlJDAiLCJjdXN0b21fcHJpbnRmXzA0NSIsImNob29zZV9vbmUiLCJjaG9vc2Vfb25lX25vbl9vcHRpb25hbCQwIiwibHN0IiwiYW5kX2FyZ19uYW1lcyIsImFuZF9hcmdfbmFtZSIsInBhcnNlJDEiLCJwYXJhbXMiLCJzeW1ib2wkNiIsImYxIiwiZjIiLCJzeW1ib2wkNyIsInAyIiwic3ltYm9sJDgiLCJzdGVwIiwiY29uc3QkMCIsIndyYXAiLCJvZl9wYXJhbSIsInAiLCJ0b19wYXJhbSIsIm0iLCJzdHJpbmckMSIsImludCQyIiwiY2hhciQyIiwiZmxvYXQkMiIsImJvb2wkMSIsInNleHAkMSIsInNleHBfY29udiQxIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJnZW4iLCJmbGFnX3R5cGUiLCJjYWxsIiwic2V0Iiwic2V0X2Jvb2wiLCJyJDAiLCJyJDEiLCJyJDIiLCJyJDMiLCJmJDQiLCJzeW1zIiwic3ltIiwiZiQ1Iiwic2hhcGUkMCIsInN1YmNvbW1hbmRfdG9fc2hhcGUiLCJjb21wX2N3b3JkIiwic2hhcGUkMSIsInNleHBhYmxlX3NoYXBlIiwiYmFzZSIsImV4ZWMiLCJleHRlbmRfZXhuIiwibWVtIiwiYWRkIiwiZXh0ZW5kX2FsaXN0X2V4biIsInRleHRfc3VtbWFyeSIsImJhc2ljIiwiZmxhZ3MkMSIsImJhc2UkMCIsImJhc2ljX3NwZWMiLCJzdWJzX2tleSIsImxhenlfZ3JvdXAiLCJwcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyIiwiYm9keSIsInAkMCIsInAkMSIsInAkMiIsIm9mX2xhenkkMCIsInByb3h5X29mX3NleHBhYmxlIiwic2V4cGFibGUiLCJwYXRoX3RvX3N1YmNvbW1hbmQiLCJraW5kIiwia2luZF9vZl9zZXhwYWJsZSIsInBhdGhfdG9fc3ViY29tbWFuZCQwIiwicHJveHkiLCJwcmludF92ZXJzaW9uIiwidmVyc2lvbiIsInByaW50X2J1aWxkX2luZm8iLCJidWlsZF9pbmZvIiwiY29tbWFuZCIsInZlcnNpb25fZmxhZyIsImJ1aWxkX2luZm9fZmxhZyIsImFkZCQwIiwidW52ZXJzaW9uZWQiLCJiYXNlJDEiLCJub3JtYWxpemVfdmVyc2lvbl9saW5lcyIsImRlZmF1bHRfdmVyc2lvbiIsImRlZmF1bHRfYnVpbGRfaW5mbyIsInJlcHJpbnRfYnVpbGRfaW5mbyIsInRvX3NleHAiLCJ4JDEiLCJwYXRoJDAiLCJnZXRfZmxhZ19uYW1lcyIsImhlbHBfcmVjdXJzaXZlIiwiY21kIiwid2l0aF9mbGFncyIsImV4cGFuZF9kb3RzIiwiaGVscF9yZWN1cnNpdmVfcmVjIiwiY21kJDAiLCJuZXdfcyIsImJhc2VfaGVscCIsImRpc3BsYXlfaGVscF9mbGFncyIsImgiLCJwYXRoJDEiLCJiYXNpYyQwIiwicGFyYW0iLCJiYXNpY19vcl9lcnJvciIsIndvcmRfd3JhcCIsInRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSIsImdldHBpZCIsImNsb3NlIiwiaW5fY2hhbm5lbF9vZl9kZXNjciIsIndhaXQiLCJnZXRlbnZfYW5kX2NsZWFyIiwidmFyJDAiLCJvZl9leHRlcm5hbCIsImhlbHBfc2V4cCIsInByb2ciLCJjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHIiLCJlbnZfdmFyIiwiYXJndjAiLCJwcm9nX3NlYXJjaF9wYXRoIiwibGlzdCQwIiwibGlzdCQxIiwicHJvY2Vzc19pbmZvIiwic3RhcnRfcmVhZGluZyIsImRlc2NyIiwib3V0cHV0IiwidGhyZWFkIiwib3V0cHV0JDAiLCJmaW5pc2hfc3Rkb3V0IiwiZmluaXNoX3N0ZGVyciIsInN0ZGVyciIsInN0ZG91dCIsImV4biQwIiwic2hhcGVfb2ZfcHJveHkiLCJzaGFwZV9vZl9wcm94eV9raW5kIiwic2hhcGVfb2ZfZXhlIiwic2hhcGUkMiIsImdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IiwiZm9ybWF0X2xpc3QiLCJoZWxwX2Zvcl9zaGFwZSIsInJlY3Vyc2l2ZSIsInN0cmluZ19vZl9wYXRoIiwiZm10JDAiLCJmaWx0ZXJlZF9zdWJjb21tYW5kcyIsImxvb3AkMCIsImFkZF9oZWxwX3N1YmNvbW1hbmRzIiwiY21kX29wdCIsInN1YnMiLCJwb3NzaWJseV9leHBhbmRlZF9uYW1lIiwicGF0aCQyIiwicGF0aCQzIiwibWF5YmVfYXBwbHlfZXh0ZW5kIiwiZXh0ZW5kJDAiLCJkaXNwYXRjaCIsIm1heWJlX25ld19jb21wX2N3b3JkIiwiY29tcGxldGVfc3ViY29tbWFuZHMiLCJhcmdzJDEiLCJkaWVfc2hvd2luZ19oZWxwIiwiYXJncyQyIiwibWF5YmVfbmV3X2NvbXBfY3dvcmQkMCIsIm1heWJlX25ld19jb21wX2N3b3JkJDEiLCJyZXNvbHZlIiwic3ViIiwic3VicyQwIiwiYm9keSQwIiwidG9fb3V0cHV0IiwicmVzdF9vZl9yZXN0IiwiZmlyc3Rfb2ZfcmVzdCIsImFyZ3MkMyIsIm5ld192YWx1ZSQwIiwibmV3X3ZhbHVlIiwicnVuJDAiLCJhcmd2IiwiYnVpbGRfaW5mbyQwIiwidmVyc2lvbiQwIiwic3VwcG9ydGVkX3ZlcnNpb25zJDAiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMSIsInBhdGhfdG9fc3ViY29tbWFuZCQyIiwiZm5hbWUiLCJhcmd2XzAiLCJjb21wX2N3b3JkJDAiLCJkZXByZWNhdGVkX3J1biIsImlzX2hlbHAiLCJpc19oZWxwX3JlYyIsImlzX2hlbHBfcmVjX2ZsYWdzIiwiaXNfZXhwYW5kX2RvdHMiLCJwYXRoX3N0cmluZ3MiLCJhcmdzJDQiLCJzZXhwX29mX3QiLCJvZl9hXzAwMSIsImNyZWF0ZSIsInYiLCJjcmVhdGVfZXhuIiwidmFsdWUiLCJ0IiwiYnl0ZXNfcGVyX3dvcmQiLCJieXRlcyIsInBhc3MiLCJmYWlscyIsIm1lc3NhZ2UiLCJhIiwic2V4cF9vZl9hIiwiZmFpbCIsImZhaWxmIiwiZm9ybWF0IiwiZmFpbF9zIiwic2V4cCIsImNvbWJpbmUiLCJ0MSIsInQyIiwib2ZfbGlzdCIsIm5hbWUiLCJ0IiwiZXJyb3IiLCJwYXRoIiwibmFtZV9saXN0IiwibiIsImwiLCJmYWlsX2ZuIiwicGFzc19ib29sIiwicGFzc191bml0IiwicHJvdGVjdCIsImYiLCJ2IiwiZXhuJDAiLCJleG4iLCJ0cnlfd2l0aCIsInBhdGhfc3RyaW5nIiwiZXJyb3JzIiwicmVzdWx0IiwieF8wMDUiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsIm1heWJlX3JhaXNlIiwidmFsaWRfb3JfZXJyb3IiLCJjaGVjayIsIngiLCJmaWVsZF9kaXJlY3QiLCJmbGQiLCJyZWNvcmQiLCJmaWVsZCIsImZpZWxkX2ZvbGRlciIsImFjYyIsImZpZWxkX2RpcmVjdF9mb2xkZXIiLCJhbGwiLCJjaGVja3MiLCJjaGVja3MkMCIsImVycnMiLCJjaGVja3MkMSIsImVyciIsImVycnMkMCIsIm9mX3Jlc3VsdCIsIm9mX2Vycm9yIiwiYm9vbHRlc3QiLCJpZl9mYWxzZSIsInBhaXIiLCJmc3QiLCJzbmQiLCJzbmRfdmFsdWUiLCJmc3RfdmFsdWUiLCJsaXN0X2luZGV4ZWQiLCJsaXN0IiwiaSIsImVsIiwiZXh0cmFjdF9uYW1lIiwiYWxpc3QiLCJsaXN0JDAiLCJrZXkiLCJmaXJzdF9mYWlsdXJlIiwib2ZfZXJyb3Jfb3B0IiwiYm91bmRlZCIsImxvd2VyIiwidXBwZXIiLCJjb21wYXJlIiwiaW5jbCIsImV4Y2wiLCJpbmNsJDAiLCJleGNsJDAiLCJzeW1ib2wiLCJuYW1lIiwic2V4cF9vZl9iaWdzdHJpbmciLCJiaWdzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2ZfbWF0IiwibWF0X29mX3NleHAiLCJzZXhwX29mX3ZlYyIsInZlY19vZl9zZXhwIiwic2V4cF9vZl9vcGFxdWUiLCJvcGFxdWVfb2Zfc2V4cCIsInNleHBfb2ZfcGFpciIsInBhaXJfb2Zfc2V4cCIsIm9mX3NleHBfZXJyb3IiLCJvZl9zZXhwX2Vycm9yX2V4biIsImdyb3VwIiwiYmluX3NoYXBlX3NleHBfb3BhcXVlIiwiYSIsImJpbl9zaXplX3NleHBfb3BhcXVlIiwic2l6ZV9vZl9hIiwiYmluX3dyaXRlX3NleHBfb3BhcXVlIiwid3JpdGVfYSIsImJpbl93cml0ZXJfc2V4cF9vcGFxdWUiLCJiaW5fd3JpdGVyX2EiLCJ2IiwiYmluX3JlYWRfc2V4cF9vcGFxdWUiLCJvZl9hIiwiYnVmIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF9zZXhwX29wYXF1ZSQwIiwiYmluX3JlYWRlcl9zZXhwX29wYXF1ZSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fc2V4cF9vcGFxdWUiLCJiaW5fYSIsImNvbXBhcmVfc2V4cF9vcGFxdWUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJoYXNoX2ZvbGRfc2V4cF9vcGFxdWUiLCJoYXNoX2ZvbGRfYSIsImhzdiIsImFyZyIsInR5cGVuYW1lX29mX3NleHBfb3BhcXVlIiwidHlwZXJlcF9vZl9zZXhwX29wYXF1ZSIsIm5hbWVfb2Zfc2V4cF9vcGFxdWUiLCJ0eXBlbmFtZV9vZl90dXBsZTUiLCJ0eXBlbmFtZV9vZl90dXBsZTQiLCJ0eXBlbmFtZV9vZl90dXBsZTMiLCJ0eXBlbmFtZV9vZl90dXBsZTIiLCJ0eXBlbmFtZV9vZl90dXBsZTAiLCJ0eXBlbmFtZV9vZl9mdW5jdGlvbiIsInR5cGVuYW1lX29mX3JlZiIsInR5cGVuYW1lX29mX2xhenlfdCIsInR5cGVuYW1lX29mX2FycmF5IiwidHlwZW5hbWVfb2ZfbGlzdCIsInR5cGVuYW1lX29mX29wdGlvbiIsInR5cGVuYW1lX29mX3VuaXQiLCJ0eXBlbmFtZV9vZl9ib29sIiwidHlwZW5hbWVfb2ZfYnl0ZXMiLCJ0eXBlbmFtZV9vZl9zdHJpbmciLCJ0eXBlbmFtZV9vZl9mbG9hdCIsInR5cGVuYW1lX29mX2NoYXIiLCJ0eXBlbmFtZV9vZl9pbnQ2MyIsInR5cGVuYW1lX29mX25hdGl2ZWludCIsInR5cGVuYW1lX29mX2ludDY0IiwidHlwZW5hbWVfb2ZfaW50MzIiLCJ0eXBlbmFtZV9vZl9pbnQiLCJ0eXBlcmVwX29mX3R1cGxlNSIsInR5cGVyZXBfb2ZfdHVwbGU0IiwidHlwZXJlcF9vZl90dXBsZTMiLCJ0eXBlcmVwX29mX3R1cGxlMiIsInR5cGVyZXBfb2ZfdHVwbGUwIiwidHlwZXJlcF9vZl9mdW5jdGlvbiIsInR5cGVyZXBfb2ZfcmVmIiwidHlwZXJlcF9vZl9sYXp5X3QiLCJ0eXBlcmVwX29mX2FycmF5IiwidHlwZXJlcF9vZl9saXN0IiwidHlwZXJlcF9vZl9vcHRpb24iLCJ2YWx1ZV90dXBsZTAiLCJ0eXBlcmVwX29mX3VuaXQiLCJ0eXBlcmVwX29mX2Jvb2wiLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9jaGFyIiwidHlwZXJlcF9vZl9pbnQ2MyIsInR5cGVyZXBfb2ZfbmF0aXZlaW50IiwidHlwZXJlcF9vZl9pbnQ2NCIsInR5cGVyZXBfb2ZfaW50MzIiLCJ0eXBlcmVwX29mX2ludCIsIndpdGhfcmV0dXJuIiwiYW1fcnVubmluZ190ZXN0IiwidF9vZl9zZXhwIiwic2V4cCIsInMiLCJleG4kMCIsImV4biIsInNleHBfb2ZfdCIsInQiLCJhX29mX3NleHAiLCJzZXhwX29mX2EiLCJiX29mX3NleHAiLCJzZXhwX29mX2IiLCJjX29mX3NleHAiLCJzZXhwX29mX2MiLCJ0X3NleHBfZ3JhbW1hciIsIm9mX3N0cmluZyIsIngiLCJ0b19zdHJpbmciLCJ0b19iaW5hYmxlIiwib2ZfYmluYWJsZSIsImNhbGxlcl9pZGVudGl0eSIsImJpbl9zaGFwZV90IiwiYmluX3NpemVfdCIsInYxIiwidjEkMCIsImJpbl93cml0ZV90IiwicG9zIiwicG9zJDAiLCJwb3MkMSIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJhcmdfMSIsImFyZ18xJDAiLCJ4JDAiLCJvZl9iaWdzdHJpbmciLCJtIiwiYmlnc3RyaW5nIiwiYmlnc3RyaW5nX2xlbmd0aCIsInRvX2JpZ3N0cmluZyIsInByZWZpeF93aXRoX2xlbmd0aCIsInRfbGVuZ3RoIiwiZXByaW50ZiIsImZwcmludGYiLCJrZnByaW50ZiIsInByaW50ZiIsImV4aXRmIiwiZm10IiwiY29sbGVjdF90b19zdHJpbmciLCJmIiwiZG9uZSIsIm91dHB1dCIsImVyciQzIiwiZXJyJDIiLCJlcnIkMSIsImVyciQwIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNCIsImVycm9yX3NvdXJjZV8wMDkiLCJuYW1lJDAiLCJlcnJvcl9zb3VyY2VfMDE4IiwiZXJyb3Jfc291cmNlXzAyMCIsIm5hbWUkMSIsImVycm9yX3NvdXJjZV8wMzMiLCJlcnJvcl9zb3VyY2VfMDM1IiwibmFtZSQyIiwiZXJyb3Jfc291cmNlXzA1MSIsImVycm9yX3NvdXJjZV8wNTMiLCJuYW1lJDMiLCJlcnJvcl9zb3VyY2VfMDY0IiwibmFtZSQ0IiwiZXJyb3Jfc291cmNlXzA4MiIsImVycm9yX3NvdXJjZV8wODQiLCJuYW1lJDUiLCJiaW5fd3JpdGVyX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsImNvbXBhcmUiLCJoYXNoX2ZvbGRfdCIsImhhc2giLCJ4XzAwNSIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wMDYiLCJiXzAwNyIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInhfMDEwIiwic2V4cF9vZl90JDAiLCJncm91cCQxIiwiYmluX3NoYXBlX3QkMSIsImJpbl9zaXplX3QkMSIsImJpbl93cml0ZV90JDEiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl9yZWFkX3QkMyIsImJpbl9yZWFkX3QkNCIsImJpbl9yZWFkZXJfdCQxIiwiYmluX3QkMSIsImNvbXBhcmUkMSIsImFfMDExIiwiYl8wMTIiLCJoYXNoX2ZvbGRfdCQxIiwiaGFzaCQxIiwidF9vZl9zZXhwJDEiLCJzZXhwXzAxNiIsImF0b21fMDE0IiwiYXRvbV8wMTQkMCIsInRfb2Zfc2V4cCQyIiwic2V4cF8wMTkiLCJzZXhwX29mX3QkMSIsImdyb3VwJDIiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImJpbl93cml0ZV90JDIiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMDIxIiwiYl8wMjIiLCJyaWdodF8wMjQiLCJsZWZ0XzAyMyIsImhhc2hfZm9sZF90JDIiLCJoc3YkMCIsImhhc2gkMiIsInRfb2Zfc2V4cCQzIiwic2V4cF8wMjgiLCJhdG9tXzAyNiIsInNleHBfYXJnc18wMjkiLCJhdG9tXzAyNiQwIiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsInRfb2Zfc2V4cCQ0Iiwic2V4cF8wMzQiLCJzZXhwX29mX3QkMiIsInZfMDM2IiwiZ3JvdXAkMyIsImJpbl9zaGFwZV90JDMiLCJiaW5fc2l6ZV90JDMiLCJiaW5fd3JpdGVfdCQzIiwiYmluX3dyaXRlcl90JDMiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsImJpbl90JDMiLCJjb21wYXJlJDMiLCJhXzAzNyIsImJfMDM4IiwicmlnaHRfMDQyIiwibGVmdF8wNDEiLCJoYXNoX2ZvbGRfdCQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDUiLCJzZXhwXzA1MiIsImF0b21fMDQ0Iiwic2V4cF9hcmdzXzA0NyIsImF0b21fMDQ0JDAiLCJhcmcwXzA0OSIsInJlczBfMDUwIiwic2V4cF9vZl90JDMiLCJ2XzA1NSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfdCQ0IiwiYmluX3NpemVfdCQ0IiwiYmluX3dyaXRlX3QkNCIsImJpbl93cml0ZXJfdCQ0IiwiYmluX3JlYWRfdCQ5IiwiYmluX3JlYWRfdCQxMCIsImJpbl9yZWFkZXJfdCQ0IiwiYmluX3QkNCIsImNvbXBhcmUkNCIsImFfMDU2IiwiYl8wNTciLCJoYXNoX2ZvbGRfdCQ0IiwiaGFzaCQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzA2MyIsInNleHBfb2ZfdCQ0Iiwidl8wNjUiLCJncm91cCQ1IiwiYmluX3JlYWRfdCQxMSIsImZhaWx3aXRoZiIsImFfMDg4IiwiYl8wODkiLCJhXzA5MCIsImJfMDkxIiwieF8wOTMiLCJ4XzA5NCIsInN0YWJsZV93aXRuZXNzIiwiZ2xvYmFsaXplIiwiZ3JvdXAkNiIsImJpbl9zaGFwZV9ub2JvZHkiLCJiaW5fc2l6ZV9ub2JvZHkiLCJiaW5fd3JpdGVfbm9ib2R5IiwiYmluX3dyaXRlcl9ub2JvZHkiLCJiaW5fcmVhZF9ub2JvZHkiLCJiaW5fcmVhZF9ub2JvZHkkMCIsImJpbl9yZWFkZXJfbm9ib2R5IiwiYmluX25vYm9keSIsImNvbXBhcmVfbm9ib2R5IiwiaGFzaF9mb2xkX25vYm9keSIsImZ1bmMiLCJoYXNoX25vYm9keSIsIm5vYm9keV9vZl9zZXhwIiwic2V4cF9vZl9ub2JvZHkiLCJzdGFibGVfd2l0bmVzc19ub2JvZHkiLCJncm91cCQ3IiwiYmluX3NoYXBlX21lIiwiYmluX3NpemVfbWUiLCJiaW5fd3JpdGVfbWUiLCJiaW5fd3JpdGVyX21lIiwiYmluX3JlYWRfbWUiLCJiaW5fcmVhZF9tZSQwIiwiYmluX3JlYWRlcl9tZSIsImJpbl9tZSIsImNvbXBhcmVfbWUiLCJoYXNoX2ZvbGRfbWUiLCJmdW5jJDAiLCJoYXNoX21lIiwibWVfb2Zfc2V4cCIsInNleHBfb2ZfbWUiLCJzdGFibGVfd2l0bmVzc19tZSIsImdyb3VwJDgiLCJiaW5fc2hhcGVfdCQ1IiwiYmluX3NpemVfdCQ1IiwiYmluX3dyaXRlX3QkNSIsImJpbl93cml0ZXJfdCQ1IiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkX3QkMTMiLCJiaW5fcmVhZGVyX3QkNSIsImJpbl90JDUiLCJjb21wYXJlJDUiLCJhXzEwMSIsImJfMTAyIiwiYV8xMDMiLCJiXzEwNCIsInJpZ2h0XzA3MiIsImxlZnRfMDcxIiwiaGFzaF9mb2xkX3Blcm1zIiwicGVybXNfb2Zfc2V4cCIsIm9mX2FfMTA3IiwieF8xMDkiLCJzZXhwXzA3NCIsImF0b21fMDc1Iiwic2V4cF9hcmdzXzA3OCIsImF0b21fMDc1JDAiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwic2V4cF9vZl9wZXJtcyIsIm9mX2FfMTEwIiwieF8xMTEiLCJ2XzA4NyIsImdsb2JhbGl6ZV9wZXJtcyIsImdyb3VwJDkiLCJiaW5fc2hhcGVfcmVhZCIsImJpbl9zaXplX3JlYWQiLCJiaW5fd3JpdGVfcmVhZCIsImJpbl93cml0ZXJfcmVhZCIsImJpbl9yZWFkX3JlYWQiLCJiaW5fcmVhZF9yZWFkJDAiLCJiaW5fcmVhZGVyX3JlYWQiLCJiaW5fcmVhZCIsImNvbXBhcmVfcmVhZCIsImdsb2JhbGl6ZV9yZWFkIiwiaGFzaF9mb2xkX3JlYWQiLCJmdW5jJDEiLCJoYXNoX3JlYWQiLCJyZWFkX29mX3NleHAiLCJzZXhwX29mX3JlYWQiLCJzdGFibGVfd2l0bmVzc19yZWFkIiwiY29tcGFyZV93cml0ZSIsImhhc2hfZm9sZF93cml0ZSIsImZ1bmMkMiIsImhhc2hfd3JpdGUiLCJnbG9iYWxpemVfd3JpdGUiLCJ3cml0ZV9vZl9zZXhwIiwic2V4cF9vZl93cml0ZSIsInN0YWJsZV93aXRuZXNzX3dyaXRlIiwiZ3JvdXAkMTAiLCJiaW5fc2hhcGVfaW1tdXRhYmxlIiwiYmluX3NpemVfaW1tdXRhYmxlIiwiYmluX3dyaXRlX2ltbXV0YWJsZSIsImJpbl93cml0ZXJfaW1tdXRhYmxlIiwiYmluX3JlYWRfaW1tdXRhYmxlIiwiYmluX3JlYWRfaW1tdXRhYmxlJDAiLCJiaW5fcmVhZGVyX2ltbXV0YWJsZSIsImJpbl9pbW11dGFibGUiLCJjb21wYXJlX2ltbXV0YWJsZSIsImdsb2JhbGl6ZV9pbW11dGFibGUiLCJoYXNoX2ZvbGRfaW1tdXRhYmxlIiwiZnVuYyQzIiwiaGFzaF9pbW11dGFibGUiLCJpbW11dGFibGVfb2Zfc2V4cCIsInNleHBfb2ZfaW1tdXRhYmxlIiwic3RhYmxlX3dpdG5lc3NfaW1tdXRhYmxlIiwiZ3JvdXAkMTEiLCJiaW5fc2hhcGVfcmVhZF93cml0ZSIsImJpbl9zaXplX3JlYWRfd3JpdGUiLCJiaW5fd3JpdGVfcmVhZF93cml0ZSIsImJpbl93cml0ZXJfcmVhZF93cml0ZSIsImJpbl9yZWFkX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF9yZWFkX3dyaXRlJDAiLCJiaW5fcmVhZGVyX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF93cml0ZSIsImNvbXBhcmVfcmVhZF93cml0ZSIsImdsb2JhbGl6ZV9yZWFkX3dyaXRlIiwiaGFzaF9mb2xkX3JlYWRfd3JpdGUiLCJmdW5jJDQiLCJoYXNoX3JlYWRfd3JpdGUiLCJyZWFkX3dyaXRlX29mX3NleHAiLCJzZXhwX29mX3JlYWRfd3JpdGUiLCJzdGFibGVfd2l0bmVzc19yZWFkX3dyaXRlIiwiZ3JvdXAkMTIiLCJiaW5fc2hhcGVfcGVybXMiLCJiaW5fc2l6ZV9wZXJtcyIsImJpbl93cml0ZV9wZXJtcyIsImJpbl93cml0ZXJfcGVybXMiLCJiaW5fcmVhZF9wZXJtcyIsImJpbl9yZWFkX3Blcm1zJDAiLCJiaW5fcmVhZGVyX3Blcm1zIiwiYmluX3Blcm1zIiwiY29tcGFyZV9wZXJtcyIsImFfMTI4IiwiYl8xMjkiLCJhXzEzMCIsImJfMTMxIiwic3RhYmxlX3dpdG5lc3NfcGVybXMiLCJhX3N0YWJsZV93aXRuZXNzIiwibWFrZSIsImVycm9yX3NvdXJjZV8wMTEiLCJzaXplX29mX2YiLCJzaXplX29mX3MiLCJ3cml0ZV9mIiwid3JpdGVfcyIsImJpbl93cml0ZXJfZiIsImJpbl93cml0ZXJfcyIsIm9mX2YiLCJvZl9zIiwiYmluX3JlYWRlcl9mIiwiYmluX3JlYWRlcl9zIiwiYmluX2YiLCJiaW5fcyIsImNtcF9mIiwiY21wX3MiLCJhXzAwMyIsImJfMDA0IiwiYV8wMDUiLCJiXzAwNiIsIm9mX2ZfMDA3Iiwib2Zfc18wMDgiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3Iiwib2ZfZl8wMjUiLCJvZl9zXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJhcmcwXzAyOSIsInJlczBfMDMwIiwidHlwZW5hbWVfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsIm5hbWVfb2ZfdCIsInYwIiwidGFnMCIsInRhZzEiLCJ0eXBlbmFtZSIsInRhZ3MiLCJ2YWx1ZSIsInYwJDAiLCJmX3N0YWJsZV93aXRuZXNzIiwic19zdGFibGVfd2l0bmVzcyIsIm1hcCIsImYxIiwiZjIiLCJ4MSIsIngyIiwiY21wX2IiLCJhXzAzNiIsImJfMDM3IiwiYV8wMzgiLCJiXzAzOSIsImFfMDQwIiwiYl8wNDEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwibmFtZXMiLCJ2NCIsInYzIiwidjIiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwicG9zJDIiLCJ2X3Bvc19mbmFtZSIsInZfcG9zX2xudW0iLCJ2X3Bvc19ib2wiLCJ2X3Bvc19jbnVtIiwibiIsIm4kMCIsIm4kMSIsInBvc19jbnVtIiwiciIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInBvc19jbnVtJDAiLCJwb3NfYm9sJDAiLCJwb3NfbG51bSQwIiwicG9zX2ZuYW1lJDAiLCJtYWtlX2NyZWF0b3IiLCJwb3NfZm5hbWVfZnVuIiwicG9zX2xudW1fZnVuIiwicG9zX2JvbF9mdW4iLCJwb3NfY251bV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJwb3NfZm5hbWVfZ2VuIiwiY29tcGlsZV9hY2MkMSIsInBvc19sbnVtX2dlbiIsImNvbXBpbGVfYWNjJDIiLCJwb3NfYm9sX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJwb3NfY251bV9nZW4iLCJhY2MiLCJjcmVhdGUiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJoc3YkMSIsImhzdiQyIiwicG9zX2NudW1fMDEzIiwicG9zX2JvbF8wMTEiLCJwb3NfbG51bV8wMDkiLCJwb3NfZm5hbWVfMDA3IiwiYXJnXzAxNCIsImJuZHNfMDA2IiwiYXJnXzAxMiIsImJuZHNfMDA2JDAiLCJhcmdfMDEwIiwiYm5kc18wMDYkMSIsImFyZ18wMDgiLCJibmRzXzAwNiQyIiwiYTAiLCJhMCQwIiwic3RhYmxlX3dpdG5lc3MkMCIsInN0YWJsZV93aXRuZXNzX2NoZWNrc19mb3JfdCIsInYxJDEiLCJ2MSQyIiwidjEkMyIsInYyJDAiLCJ2MSQ0IiwidjMkMCIsInYyJDEiLCJ2MSQ1Iiwic2l6ZSQyIiwic2l6ZSQzIiwidjIkMiIsInYxJDYiLCJzaXplJDQiLCJ2MiQzIiwidjEkNyIsInNpemUkNSIsInBvcyQzIiwicG9zJDQiLCJwb3MkNSIsInBvcyQ2IiwicG9zJDciLCJwb3MkOCIsInBvcyQ5IiwicG9zJDEwIiwicG9zJDExIiwicG9zJDEyIiwicG9zJDEzIiwicG9zJDE0IiwicG9zJDE1IiwicG9zJDE2IiwiYXJnXzEkMSIsImFyZ18xJDIiLCJhcmdfMSQzIiwiYXJnXzIiLCJhcmdfMyIsImFyZ18xJDQiLCJhcmdfMiQwIiwiYXJnXzEkNSIsImFyZ18yJDEiLCJhcmdfMyQwIiwiYXJnXzEkNiIsImFyZ18yJDIiLCJhcmdfMSQ3IiwiYXJnXzIkMyIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsImFyZzBfMDE1IiwicmVzMF8wMTYiLCJhcmcyXzAxOSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAyMCIsInJlczFfMDIxIiwicmVzMl8wMjIiLCJhcmcxXzAyNCIsImFyZzBfMDIzIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsImFyZzJfMDI5IiwiYXJnMV8wMjgiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwiYXJnMV8wMzQiLCJhcmcwXzAzMyIsInJlczBfMDM1IiwicmVzMV8wMzYiLCJhcmcxXzAzOCIsImFyZzBfMDM3IiwicmVzMF8wMzkiLCJyZXMxXzA0MCIsInN0YWJsZV93aXRuZXNzJDEiLCJzdGFibGVfd2l0bmVzc19jaGVja3NfZm9yX3QkMCIsInN0YWJsZV93aXRuZXNzJDIiLCJzdGFibGVfd2l0bmVzc19jaGVja3NfZm9yX3QkMSIsInRvX2luZm8iLCJvZl9pbmZvIiwic2V4cF9vZl90JDUiLCJ0X3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl90JDYiLCJ0X3NleHBfZ3JhbW1hciQxIiwic3RhYmxlX3dpdG5lc3MkMyIsInRvX3NleHBhYmxlIiwib2Zfc2V4cGFibGUiLCJzdGFibGVfd2l0bmVzcyQ0IiwiYmluX3NoYXBlX3QkNiIsImJpbl9zaXplX3QkNiIsImJpbl93cml0ZV90JDYiLCJmYWlsd2l0aHMiLCJzdHJpY3QiLCJoZXJlIiwibWVzc2FnZSIsImZhaWx3aXRocCIsInRlc3RzIiwiYiIsInNpemVfb2ZfYiIsIndyaXRlX2IiLCJiaW5fd3JpdGVyX2IiLCJvZl9iIiwiYmluX3JlYWRlcl9iIiwiYmluX2IiLCJvZl9hXzAxNCIsIm9mX2JfMDE1Iiwic2V4cF8wMjAiLCJ0YWdfMDIxIiwic2V4cF9hcmdzXzAyMiIsInJlczBfMDI0Iiwic2V4cF9hcmdzXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvZl9hXzAzMiIsIm9mX2JfMDMzIiwiYXJnMF8wMzQiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYl9zdGFibGVfd2l0bmVzcyIsInhfMDQ3IiwieF8wNDgiLCJlcXVhbCIsInhfMDQ5IiwieF8wNTAiLCJhXzA0MiIsImJfMDQzIiwiYV8wNDQiLCJiXzA0NSIsInJ1biIsInNhbml0aXplIiwidXBvbl91bnJlbGVhc2FibGVfaXNzdWUiLCJvZl9hXzAwNyIsInhfMDA5Iiwib2ZfYV8wMTAiLCJ4XzAxMSIsImFfMDEyIiwiYl8wMTMiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsIm9mX2FfMDE4IiwieF8wMjAiLCJvZl9hXzAyMSIsInhfMDIyIiwibWFwJDEiLCJ2X3N0YXRlIiwidl92YWx1ZSIsInZfc3RhdGUkMCIsIm1lcmdlX2FsbCIsIkhlYXAiLCJub3RfeWV0X2luX2hlYXAiLCJoZWFwIiwiaGVhcCQwIiwic2VxJDIiLCJlbHQkMCIsIm5vdF95ZXRfaW5faGVhcCQwIiwic2VxIiwic2VxJDAiLCJzZXEkMSIsImVsdCIsImRlZmF1bHRfc2VlZCIsImRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDIiLCJnZW5lcmF0b3JfMDEyIiwiZ2VuZXJhdG9yXzAxMyIsInNpemVfMDE2IiwicmFuZG9tXzAxNyIsInNpemVfMDE0IiwicmFuZG9tXzAxNSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDIiLCJvYnNlcnZlcl8wMDUiLCJvYnNlcnZlcl8wMDYiLCJ4XzAwNyIsInNpemVfMDA4IiwiaGFzaF8wMDkiLCJoYXNoXzAwOSQwIiwiaGFzaF8wMDkkMSIsImhhc2hfMDA5JDIiLCJoYXNoXzAwOSQzIiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50MiIsInNocmlua2VyXzAwMSIsInNocmlua2VyXzAwMiIsInhfMDA0IiwieF8wMDMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MyIsImdlbmVyYXRvcl8wMzMiLCJnZW5lcmF0b3JfMDM0IiwiZ2VuZXJhdG9yXzAzNSIsInNpemVfMDQwIiwicmFuZG9tXzA0MSIsInNpemVfMDM4IiwicmFuZG9tXzAzOSIsInNpemVfMDM2IiwicmFuZG9tXzAzNyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDMiLCJvYnNlcnZlcl8wMjQiLCJvYnNlcnZlcl8wMjUiLCJvYnNlcnZlcl8wMjYiLCJ4XzAyNyIsInNpemVfMDI4IiwiaGFzaF8wMjkiLCJ4XzAzMCIsImhhc2hfMDI5JDAiLCJoYXNoXzAyOSQxIiwieF8wMzEiLCJoYXNoXzAyOSQyIiwiaGFzaF8wMjkkMyIsInhfMDMyIiwiaGFzaF8wMjkkNCIsImhhc2hfMDI5JDUiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQzIiwic2hyaW5rZXJfMDE4Iiwic2hyaW5rZXJfMDE5Iiwic2hyaW5rZXJfMDIwIiwieF8wMjEiLCJ4XzAyMyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ0IiwiZ2VuZXJhdG9yXzA2MSIsImdlbmVyYXRvcl8wNjIiLCJnZW5lcmF0b3JfMDYzIiwiZ2VuZXJhdG9yXzA2NCIsInNpemVfMDcxIiwicmFuZG9tXzA3MiIsInNpemVfMDY5IiwicmFuZG9tXzA3MCIsInNpemVfMDY3IiwicmFuZG9tXzA2OCIsInNpemVfMDY1IiwicmFuZG9tXzA2NiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDQiLCJvYnNlcnZlcl8wNTAiLCJvYnNlcnZlcl8wNTEiLCJvYnNlcnZlcl8wNTIiLCJvYnNlcnZlcl8wNTMiLCJ4XzA1NCIsInNpemVfMDU1IiwiaGFzaF8wNTYiLCJ4XzA1NyIsImhhc2hfMDU2JDAiLCJoYXNoXzA1NiQxIiwieF8wNTgiLCJoYXNoXzA1NiQyIiwiaGFzaF8wNTYkMyIsInhfMDU5IiwiaGFzaF8wNTYkNCIsImhhc2hfMDU2JDUiLCJ4XzA2MCIsImhhc2hfMDU2JDYiLCJoYXNoXzA1NiQ3IiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NCIsInNocmlua2VyXzA0MiIsInNocmlua2VyXzA0MyIsInNocmlua2VyXzA0NCIsInNocmlua2VyXzA0NSIsInhfMDQ2IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDUiLCJnZW5lcmF0b3JfMDk2IiwiZ2VuZXJhdG9yXzA5NyIsImdlbmVyYXRvcl8wOTgiLCJnZW5lcmF0b3JfMDk5IiwiZ2VuZXJhdG9yXzEwMCIsInNpemVfMTA5IiwicmFuZG9tXzExMCIsInNpemVfMTA3IiwicmFuZG9tXzEwOCIsInNpemVfMTA1IiwicmFuZG9tXzEwNiIsInNpemVfMTAzIiwicmFuZG9tXzEwNCIsInNpemVfMTAxIiwicmFuZG9tXzEwMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDUiLCJvYnNlcnZlcl8wODMiLCJvYnNlcnZlcl8wODQiLCJvYnNlcnZlcl8wODUiLCJvYnNlcnZlcl8wODYiLCJvYnNlcnZlcl8wODciLCJ4XzA4OCIsInNpemVfMDg5IiwiaGFzaF8wOTAiLCJ4XzA5MSIsImhhc2hfMDkwJDAiLCJoYXNoXzA5MCQxIiwieF8wOTIiLCJoYXNoXzA5MCQyIiwiaGFzaF8wOTAkMyIsImhhc2hfMDkwJDQiLCJoYXNoXzA5MCQ1IiwiaGFzaF8wOTAkNiIsImhhc2hfMDkwJDciLCJ4XzA5NSIsImhhc2hfMDkwJDgiLCJoYXNoXzA5MCQ5IiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NSIsInNocmlua2VyXzA3MyIsInNocmlua2VyXzA3NCIsInNocmlua2VyXzA3NSIsInNocmlua2VyXzA3NiIsInNocmlua2VyXzA3NyIsInhfMDc4IiwieF8wNzkiLCJ4XzA4MCIsInhfMDgxIiwieF8wODIiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NiIsImdlbmVyYXRvcl8xMzgiLCJnZW5lcmF0b3JfMTM5IiwiZ2VuZXJhdG9yXzE0MCIsImdlbmVyYXRvcl8xNDEiLCJnZW5lcmF0b3JfMTQyIiwiZ2VuZXJhdG9yXzE0MyIsInNpemVfMTU0IiwicmFuZG9tXzE1NSIsInNpemVfMTUyIiwicmFuZG9tXzE1MyIsInNpemVfMTUwIiwicmFuZG9tXzE1MSIsInNpemVfMTQ4IiwicmFuZG9tXzE0OSIsInNpemVfMTQ2IiwicmFuZG9tXzE0NyIsInNpemVfMTQ0IiwicmFuZG9tXzE0NSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDYiLCJvYnNlcnZlcl8xMjMiLCJvYnNlcnZlcl8xMjQiLCJvYnNlcnZlcl8xMjUiLCJvYnNlcnZlcl8xMjYiLCJvYnNlcnZlcl8xMjciLCJvYnNlcnZlcl8xMjgiLCJ4XzEyOSIsInNpemVfMTMwIiwiaGFzaF8xMzEiLCJ4XzEzMiIsImhhc2hfMTMxJDAiLCJoYXNoXzEzMSQxIiwieF8xMzMiLCJoYXNoXzEzMSQyIiwiaGFzaF8xMzEkMyIsInhfMTM0IiwiaGFzaF8xMzEkNCIsImhhc2hfMTMxJDUiLCJ4XzEzNSIsImhhc2hfMTMxJDYiLCJoYXNoXzEzMSQ3IiwieF8xMzYiLCJoYXNoXzEzMSQ4IiwiaGFzaF8xMzEkOSIsInhfMTM3IiwiaGFzaF8xMzEkMTAiLCJoYXNoXzEzMSQxMSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDYiLCJzaHJpbmtlcl8xMTEiLCJzaHJpbmtlcl8xMTIiLCJzaHJpbmtlcl8xMTMiLCJzaHJpbmtlcl8xMTQiLCJzaHJpbmtlcl8xMTUiLCJzaHJpbmtlcl8xMTYiLCJ4XzExNyIsInhfMTE4IiwieF8xMTkiLCJ4XzEyMCIsInhfMTIxIiwieF8xMjIiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTIiLCJnZW5lcmF0b3JfMTY2IiwiZ2VuZXJhdG9yXzE2NyIsInNpemVfMTY4IiwicmFuZG9tXzE2OSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUyIiwib2JzZXJ2ZXJfMTYwIiwib2JzZXJ2ZXJfMTYxIiwic2l6ZV8xNjQiLCJoYXNoXzE2NSIsInhfMTYzIiwieF8xNjIiLCJoYXNoXzE2NSQwIiwiaGFzaF8xNjUkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUyIiwic2hyaW5rZXJfMTU2Iiwic2hyaW5rZXJfMTU3IiwieF8xNTkiLCJ4XzE1OCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMyIsImdlbmVyYXRvcl8xODQiLCJnZW5lcmF0b3JfMTg1IiwiZ2VuZXJhdG9yXzE4NiIsInNpemVfMTg3IiwicmFuZG9tXzE4OCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUzIiwib2JzZXJ2ZXJfMTc2Iiwib2JzZXJ2ZXJfMTc3Iiwib2JzZXJ2ZXJfMTc4Iiwic2l6ZV8xODIiLCJoYXNoXzE4MyIsInhfMTgxIiwieF8xODAiLCJ4XzE3OSIsImhhc2hfMTgzJDAiLCJoYXNoXzE4MyQxIiwiaGFzaF8xODMkMiIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUzIiwic2hyaW5rZXJfMTcwIiwic2hyaW5rZXJfMTcxIiwic2hyaW5rZXJfMTcyIiwieF8xNzUiLCJ4XzE3NCIsInhfMTczIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU0IiwiZ2VuZXJhdG9yXzIwNyIsImdlbmVyYXRvcl8yMDgiLCJnZW5lcmF0b3JfMjA5IiwiZ2VuZXJhdG9yXzIxMCIsInNpemVfMjExIiwicmFuZG9tXzIxMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU0Iiwib2JzZXJ2ZXJfMTk3Iiwib2JzZXJ2ZXJfMTk4Iiwib2JzZXJ2ZXJfMTk5Iiwib2JzZXJ2ZXJfMjAwIiwic2l6ZV8yMDUiLCJoYXNoXzIwNiIsInhfMjA0IiwieF8yMDMiLCJ4XzIwMiIsInhfMjAxIiwiaGFzaF8yMDYkMCIsImhhc2hfMjA2JDEiLCJoYXNoXzIwNiQyIiwiaGFzaF8yMDYkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU0Iiwic2hyaW5rZXJfMTg5Iiwic2hyaW5rZXJfMTkwIiwic2hyaW5rZXJfMTkxIiwic2hyaW5rZXJfMTkyIiwieF8xOTYiLCJ4XzE5NSIsInhfMTk0IiwieF8xOTMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTUiLCJnZW5lcmF0b3JfMjM1IiwiZ2VuZXJhdG9yXzIzNiIsImdlbmVyYXRvcl8yMzciLCJnZW5lcmF0b3JfMjM4IiwiZ2VuZXJhdG9yXzIzOSIsInNpemVfMjQwIiwicmFuZG9tXzI0MSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU1Iiwib2JzZXJ2ZXJfMjIzIiwib2JzZXJ2ZXJfMjI0Iiwib2JzZXJ2ZXJfMjI1Iiwib2JzZXJ2ZXJfMjI2Iiwib2JzZXJ2ZXJfMjI3Iiwic2l6ZV8yMzMiLCJoYXNoXzIzNCIsInhfMjMyIiwieF8yMzEiLCJ4XzIzMCIsInhfMjI5IiwieF8yMjgiLCJoYXNoXzIzNCQwIiwiaGFzaF8yMzQkMSIsImhhc2hfMjM0JDIiLCJoYXNoXzIzNCQzIiwiaGFzaF8yMzQkNCIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU1Iiwic2hyaW5rZXJfMjEzIiwic2hyaW5rZXJfMjE0Iiwic2hyaW5rZXJfMjE1Iiwic2hyaW5rZXJfMjE2Iiwic2hyaW5rZXJfMjE3IiwieF8yMjIiLCJ4XzIyMSIsInhfMjIwIiwieF8yMTkiLCJ4XzIxOCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNiIsImdlbmVyYXRvcl8yNjgiLCJnZW5lcmF0b3JfMjY5IiwiZ2VuZXJhdG9yXzI3MCIsImdlbmVyYXRvcl8yNzEiLCJnZW5lcmF0b3JfMjcyIiwiZ2VuZXJhdG9yXzI3MyIsInNpemVfMjc0IiwicmFuZG9tXzI3NSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU2Iiwib2JzZXJ2ZXJfMjU0Iiwib2JzZXJ2ZXJfMjU1Iiwib2JzZXJ2ZXJfMjU2Iiwib2JzZXJ2ZXJfMjU3Iiwib2JzZXJ2ZXJfMjU4Iiwib2JzZXJ2ZXJfMjU5Iiwic2l6ZV8yNjYiLCJoYXNoXzI2NyIsInhfMjY1IiwieF8yNjQiLCJ4XzI2MyIsInhfMjYyIiwieF8yNjEiLCJ4XzI2MCIsImhhc2hfMjY3JDAiLCJoYXNoXzI2NyQxIiwiaGFzaF8yNjckMiIsImhhc2hfMjY3JDMiLCJoYXNoXzI2NyQ0IiwiaGFzaF8yNjckNSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU2Iiwic2hyaW5rZXJfMjQyIiwic2hyaW5rZXJfMjQzIiwic2hyaW5rZXJfMjQ0Iiwic2hyaW5rZXJfMjQ1Iiwic2hyaW5rZXJfMjQ2Iiwic2hyaW5rZXJfMjQ3IiwieF8yNTMiLCJ4XzI1MiIsInhfMjUxIiwieF8yNTAiLCJ4XzI0OSIsInhfMjQ4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm4yIiwib2JzZXJ2ZXJfMjgyIiwib2JzZXJ2ZXJfMjgzIiwiZ2VuZXJhdG9yXzI4NCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuMyIsIm9ic2VydmVyXzI5MyIsIm9ic2VydmVyXzI5NCIsIm9ic2VydmVyXzI5NSIsImdlbmVyYXRvcl8yOTYiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjQiLCJvYnNlcnZlcl8zMDciLCJvYnNlcnZlcl8zMDgiLCJvYnNlcnZlcl8zMDkiLCJvYnNlcnZlcl8zMTAiLCJnZW5lcmF0b3JfMzExIiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm41Iiwib2JzZXJ2ZXJfMzI0Iiwib2JzZXJ2ZXJfMzI1Iiwib2JzZXJ2ZXJfMzI2Iiwib2JzZXJ2ZXJfMzI3Iiwib2JzZXJ2ZXJfMzI4IiwiZ2VuZXJhdG9yXzMyOSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNiIsIm9ic2VydmVyXzM0NCIsIm9ic2VydmVyXzM0NSIsIm9ic2VydmVyXzM0NiIsIm9ic2VydmVyXzM0NyIsIm9ic2VydmVyXzM0OCIsIm9ic2VydmVyXzM0OSIsImdlbmVyYXRvcl8zNTAiLCJvZl9oYXNoIiwiTSIsIm9mX3ByZWRpY2F0ZSIsInNpbmdsZXRvbiIsImRvdWJsZXRvbiIsImVudW0kMCIsIm9mX2xpc3QiLCJsaXN0IiwieSIsImkiLCJvZl9mdW4iLCJjb21wYXJpc29uIiwiZXEiLCJsdCIsImd0IiwiYyIsInJldHVybiQwIiwic21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQiLCJzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQiLCJzaW5nbGV0b24kMCIsImRvdWJsZXRvbiQwIiwicmFuZG9tIiwib2ZfZnVuJDAiLCJvZl9zZXF1ZW5jZSIsInAiLCJrIiwiZ2VvbWV0cmljIiwibGlzdF93aXRoX2xlbmd0aCIsImxlbmd0aCIsImNvbXBhcmVfZm4iLCJkb20iLCJnZXRfaW5kZXgiLCJiXzM1MiIsImFfMzUxIiwiZXF1YWxfZm4iLCJjbXAiLCJlbXB0eSIsIm5vbmRldGVybWluaXN0aWNfc3RhdGUiLCJyYW5kb21fc3RhdGVfb2Zfc2VlZCIsInNlZWQiLCJzdHIiLCJtYWtlX3NlZWQiLCJzdHJpbmciLCJtYWtlX3Nocmlua19jb3VudCIsIm1ha2VfY29uZmlnIiwic2l6ZXMiLCJ0cmlhbHMiLCJzaHJpbmtfYXR0ZW1wdHMiLCJtYWtlX3Rlc3RfbSIsImdlbiIsInNocmlua2VyIiwic2V4cF9vZiIsInJhbmRvbV92YWx1ZSIsInJhbmRvbV9zZXF1ZW5jZSIsImNvbmZpZyIsInNlcXVlbmNlIiwidGVzdCIsImV4YW1wbGVzIiwidGVzdF9tIiwidGVzdF9vcl9lcnJvciIsInRlc3RfZGlzdGluY3RfdmFsdWVzIiwiZGlzdGluY3RfdmFsdWVzIiwic2V4cF9vZiQwIiwic2V0Iiwic2V0JDAiLCJhY3R1YWxfY291bnQiLCJzZXhwX29mX2VsdCIsInhfMzUzIiwidmFsdWVzIiwibWF0Y2giLCJyZXMiLCJoIiwidGVzdF9jYW5fZ2VuZXJhdGUiLCJzZXhwX29mX3ZhbHVlIiwieF8zNTQiLCJkZWZhdWx0X3RyaWFsX2NvdW50IiwiZGVmYXVsdF9zaXplcyIsImdlbmVyYXRlX2EiLCJvYnNlcnZlX2EiLCJzaHJpbmtfYSIsIm5vcm1hbGl6ZSIsImxlbmd0aF9mdW4iLCJzbGljZSIsInN1Yl9mdW4iLCJzdGFydCIsInN0b3AiLCJzdG9wJDAiLCJsZW4iLCJnZW5lcmF0b3JfMDAzIiwib2JzZXJ2ZXJfMDAyIiwiYmluYXJ5X3NlYXJjaCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIiwib2ZfYXJyYXkiLCJhcHBlbmQiLCJmaWx0ZXIiLCJmaWx0ZXJfbWFwIiwiY29uY2F0X21hcCIsInBhcnRpdGlvbl90ZiIsInBhcnRpdGlvbl9tYXAiLCJtZW0iLCJpc19lbXB0eSIsImZvbGRfcmVzdWx0IiwiZm9sZF91bnRpbCIsImNvdW50Iiwic3VtIiwiZmluZCIsImZpbmRfbWFwIiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImZvbGRpIiwiaXRlcmkiLCJleGlzdHNpIiwiZm9yX2FsbGkiLCJjb3VudGkiLCJmaW5kaSIsImZpbmRfbWFwaSIsIm1hcGkiLCJmaWx0ZXJpIiwiZmlsdGVyX21hcGkiLCJjb25jYXRfbWFwaSIsImNyZWF0ZV9sb2NhbCIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwibWFrZV9tYXRyaXgiLCJjb3B5X21hdHJpeCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiYmxpdCIsImJsaXRvIiwidW5zYWZlX2JsaXQiLCJzdWIiLCJzdWJvIiwiZm9sZGluZ19tYXAiLCJmb2xkaW5nX21hcGkiLCJmb2xkX21hcCIsImZvbGRfbWFwaSIsImZvbGRfcmlnaHQiLCJzb3J0Iiwic3RhYmxlX3NvcnQiLCJpc19zb3J0ZWQiLCJpc19zb3J0ZWRfc3RyaWN0bHkiLCJtZXJnZSIsInBhcnRpdGlvbmlfdGYiLCJjYXJ0ZXNpYW5fcHJvZHVjdCIsInRyYW5zcG9zZSIsInRyYW5zcG9zZV9leG4iLCJmaWx0ZXJfb3B0IiwiaXRlcjJfZXhuIiwibWFwMl9leG4iLCJmb2xkMl9leG4iLCJmb3JfYWxsMl9leG4iLCJleGlzdHMyX2V4biIsInN3YXAiLCJyZXZfaW5wbGFjZSIsInJldiIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kX2V4biIsImZpbmRfbWFwX2V4biIsImZpbmRpX2V4biIsImZpbmRfbWFwaV9leG4iLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsInJlZHVjZSIsInJlZHVjZV9leG4iLCJwZXJtdXRlIiwicmFuZG9tX2VsZW1lbnQiLCJyYW5kb21fZWxlbWVudF9leG4iLCJ6aXAiLCJ6aXBfZXhuIiwidW56aXAiLCJzb3J0ZWRfY29weSIsImxhc3QiLCJ0b19zZXF1ZW5jZSIsInRvX3NlcXVlbmNlX211dGFibGUiLCJuZ2V0IiwibnNldCIsImdldCIsImNvbXBhcmVfdCIsImFfMDA0IiwiYl8wMDUiLCJjcmVhdGUkMCIsImVxdWFsJDAiLCJvZl9ib29sIiwiY29tcGFyZV90JDAiLCJhXzAxMyIsImJfMDE0IiwieF8wMTYiLCJ4XzAxNyIsImNyZWF0ZSQxIiwiZXF1YWwkMSIsIm9mX2Jvb2wkMCIsInBlcm1zIiwic2l6ZV9vZl9wZXJtcyIsIndyaXRlX3Blcm1zIiwib2ZfcGVybXMiLCJjbXBfcGVybXMiLCJhXzAxOCIsImJfMDE5IiwiYV8wMjAiLCJiXzAyMSIsIm9mX2FfMDIyIiwib2ZfcGVybXNfMDIzIiwieF8wMjUiLCJvZl9hXzAyNiIsIm9mX3Blcm1zXzAyNyIsInhfMDI4IiwiYV8wMjkiLCJiXzAzMCIsIm9mX3Blcm1zXzAzMSIsIm9mX3Blcm1zXzAzMyIsImFfMDM0IiwiYl8wMzUiLCJvZl9wZXJtc18wMzYiLCJvZl9wZXJtc18wMzgiLCJ0b19hcnJheV9pZCIsIm9mX2FycmF5X2lkIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJtYXhfbGVuZ3RoIiwiY29tcGFyZV9hIiwiY29tcGFyZV9iIiwidF8wMDYiLCJ0XzAwNSIsInRfMDA4IiwidF8wMDciLCJnZW5fbm9uX2VtcHR5IiwiZ2VuX3dpdGhfbGVuZ3RoIiwiZ2VuX2ZpbHRlcmVkIiwiZ2VuX3Blcm11dGF0aW9ucyIsIm1vZHVsZV9uYW1lJDAiLCJtb2R1bGVfbmFtZSIsImhhc2hhYmxlX3MiLCJmaW5kX211bHRpIiwicmVtb3ZlX211bHRpIiwiYWRkX211bHRpIiwiZGVjciIsImluY3IiLCJ0b19hbGlzdCIsInNpbWlsYXIiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwiZmlsdGVyX21hcF9pbnBsYWNlIiwibWFwaV9pbnBsYWNlIiwiZmlsdGVyaV9pbnBsYWNlIiwiZmlsdGVyX2lucGxhY2UiLCJmaWx0ZXJfa2V5c19pbnBsYWNlIiwiZGF0YSIsImtleXMiLCJtZXJnZV9pbnRvIiwiZmluZF9hbmRfcmVtb3ZlIiwiZmluZGlfYW5kX2NhbGwyIiwiZmluZGlfYW5kX2NhbGwxIiwiZmluZGlfYW5kX2NhbGwiLCJmaW5kX2FuZF9jYWxsMiIsImZpbmRfYW5kX2NhbGwxIiwiZmluZF9hbmRfY2FsbCIsImZpbmRpX29yX2FkZCIsImZpbmRfb3JfYWRkIiwicGFydGl0aW9uX21hcGkiLCJmaWx0ZXJfa2V5cyIsInVwZGF0ZV9hbmRfcmV0dXJuIiwidXBkYXRlIiwiY2hhbmdlIiwiYWRkX2V4biIsImFkZCIsImNob29zZV9yYW5kb21seV9leG4iLCJjaG9vc2VfcmFuZG9tbHkiLCJjaG9vc2VfZXhuIiwiY2hvb3NlIiwicmVtb3ZlIiwiaXRlcl9rZXlzIiwiY2xlYXIiLCJzZXhwX29mX2tleSIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IiLCJjcmVhdGVfd2l0aF9rZXkiLCJjcmVhdGVfbWFwcGVkIiwib2ZfYWxpc3RfbXVsdGkiLCJvZl9hbGlzdF9leG4iLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsIm9mX2FsaXN0IiwiaGFzaF9wYXJhbSIsInZhbGlkYXRlIiwiZ3Jvd3RoX2FsbG93ZWQiLCJoYXNoYWJsZSIsIm9mX2FsaXN0JDAiLCJsIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJvZl9hbGlzdF9vcl9lcnJvciQwIiwib2ZfYWxpc3RfZXhuJDAiLCJvZl9hbGlzdF9tdWx0aSQwIiwiY3JlYXRlX21hcHBlZCQwIiwiZ2V0X2tleSIsImdldF9kYXRhIiwiY3JlYXRlX3dpdGhfa2V5JDAiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMCIsImNyZWF0ZV93aXRoX2tleV9leG4kMCIsImNvbWJpbmUiLCJiaW5fc2hhcGVfZWwiLCJiaW5fc2l6ZV9lbCIsImJpbl93cml0ZV9lbCIsImJpbl9yZWFkX2VsIiwiaXRlciQxIiwia2V5IiwibmV4dCIsImludmFyaWFudF9rZXkiLCJzZXhwX29mX3YiLCJ2X29mX3NleHAiLCJkYXRhX3N0YWJsZV93aXRuZXNzIiwiZXF1YWxfbV90IiwibV90X3NleHBfZ3JhbW1hciIsIm1fdF9vZl9zZXhwIiwic2V4cF9vZl9tX3QiLCJvZl9hbGlzdF9vcHRpb24iLCJhbGlzdCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fdCIsIktleSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2RhdGEiLCJzaXplXzAwNCIsInJhbmRvbV8wMDUiLCJxdWlja2NoZWNrX29ic2VydmVyX21fdCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfZGF0YSIsInhfMDA2IiwicXVpY2tjaGVja19zaHJpbmtlcl9tX3QiLCJxdWlja2NoZWNrX3Nocmlua2VyX2RhdGEiLCJoYXNoYWJsZSQwIiwib2ZfbGlzdCQwIiwiZXJyb3Jfc291cmNlXzAzMSIsInNpemVfb2ZfayIsInNpemVfb2ZfdiIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJ3cml0ZV9rIiwid3JpdGVfdiIsImJpbl93cml0ZXJfayIsImJpbl93cml0ZXJfdiIsIm9mX2siLCJvZl92IiwiYmluX3JlYWRlcl9rIiwiYmluX3JlYWRlcl92IiwiYmluX2siLCJiaW5fdiIsImNtcF9rIiwiY21wX3YiLCJ0XzAwNCIsInRfMDAzIiwicmlnaHRfMDA4IiwibGVmdF8wMDciLCJyaWdodF8wMTIiLCJsZWZ0XzAxMSIsInRfMDE0IiwidF8wMTMiLCJ0XzAxNiIsInRfMDE1IiwicmlnaHRfMDEwIiwibGVmdF8wMDkiLCJvZl9rXzAxNyIsIm9mX3ZfMDE4Iiwic2V4cF8wNDUiLCJhcmcxXzA0MiIsImFyZzBfMDQxIiwicmVzMF8wNDMiLCJhdG9tXzAyMSIsInNleHBfYXJnc18wMjQiLCJhdG9tXzAyMSQwIiwiYXJnMF8wMzIiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMV8wMjkiLCJyZXMwXzAzMyIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJhcmcwXzAzOCIsInJlczFfMDQ0Iiwib2Zfa18wNDYiLCJvZl92XzA0NyIsImFyZzFfMDU2IiwiYXJnMF8wNTUiLCJyZXMwXzA1NyIsInZfMDQ4IiwicmVzMV8wNTgiLCJ2XzA1MCIsImFyZzFfMDUyIiwiYXJnMF8wNTEiLCJyZXMwXzA1MyIsInJlczFfMDU0Iiwidl8wNDkiLCJrX3N0YWJsZV93aXRuZXNzIiwidl9zdGFibGVfd2l0bmVzcyIsImRpZmYiLCJrJDAiLCJkaWZmJDAiLCJ2JDAiLCJtYXBfZGF0YSIsImxlZnQiLCJyaWdodCIsImdlbl90cmVlIiwiY29tcGFyYXRvciIsImtfZ2VuIiwidl9nZW4iLCJvYnNfdHJlZSIsImtfb2JzIiwidl9vYnMiLCJzaHJfdHJlZSIsImtfc2hyIiwidl9zaHIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQwIiwiaGFzaF9mb2xkX2RpcmVjdCIsIm9mX2hhc2h0YmxfZXhuIiwiaGFzaHRibCIsInRyZWVfb2ZfaGFzaHRibF9leG4iLCJrZXlfc2V0Iiwia2V5X3NldF9vZl90cmVlIiwib2Zfa2V5X3NldCIsInRyZWVfb2Zfa2V5X3NldCIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UiLCJ0b190cmVlJDAiLCJyYW5rIiwibnRoX2V4biIsIm50aCIsImNsb3Nlc3Rfa2V5IiwicmFuZ2VfdG9fYWxpc3QiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSIsInN1YnJhbmdlIiwic3BsaXRfbHRfZ2UiLCJzcGxpdF9sZV9ndCIsInNwbGl0IiwibWF4X2VsdF9leG4iLCJtaW5fZWx0X2V4biIsImZvbGRfc3ltbWV0cmljX2RpZmYiLCJzeW1tZXRyaWNfZGlmZiIsIm1lcmdlX3NrZXdlZCIsImtleXMkMCIsImNvbXBhcmVfZGlyZWN0IiwiY29tYmluZV9lcnJvcnMiLCJmb2xkMiIsIml0ZXIyIiwiaXRlcmlfdW50aWwiLCJpbnZhcmlhbnRzIiwidmFsaWRhdGVpIiwicXVpY2tjaGVja19vYnNlcnZlciQwIiwicXVpY2tjaGVja19zaHJpbmtlciQwIiwia2V5X3NldCQwIiwia2V5X3NldCQxIiwiY29tcGFyYXRvcl9zIiwiaW52YXJpYW50cyQwIiwiZW1wdHkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDAiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMCIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlJDAiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQwIiwib2Zfc2VxdWVuY2VfZXhuJDAiLCJvZl9zZXF1ZW5jZV9tdWx0aSQwIiwib2Zfc2VxdWVuY2VfZm9sZCQwIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDAiLCJvZl9saXN0X3dpdGhfa2V5JDAiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDAiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQwIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQwIiwiaXNfZW1wdHkkMCIsImxlbmd0aCQwIiwiYWRkJDAiLCJhZGRfZXhuJDAiLCJhZGRfbXVsdGkkMCIsInJlbW92ZV9tdWx0aSQwIiwiZmluZF9tdWx0aSQwIiwiY2hhbmdlJDAiLCJ1cGRhdGUkMCIsImZpbmQkMCIsImZpbmRfZXhuJDAiLCJyZW1vdmUkMCIsIm1lbSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaSQwIiwiaXRlcmlfdW50aWwkMCIsIml0ZXIyJDAiLCJtYXBpJDAiLCJtYXBfa2V5cyQwIiwibWFwX2tleXNfZXhuJDAiLCJmb2xkX3VudGlsJDAiLCJmb2xkX3JpZ2h0JDAiLCJmb2xkMiQwIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlciQwIiwiZmlsdGVyaSQwIiwiZmlsdGVyX21hcCQwIiwiZmlsdGVyX21hcGkkMCIsInBhcnRpdGlvbl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwJDAiLCJwYXJ0aXRpb25pX3RmJDAiLCJwYXJ0aXRpb25fdGYkMCIsImNvbWJpbmVfZXJyb3JzJDAiLCJjb21wYXJlX2RpcmVjdCQwIiwia2V5cyQxIiwiZGF0YSQwIiwidG9fYWxpc3QkMCIsIm1lcmdlJDAiLCJzeW1tZXRyaWNfZGlmZiQwIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQwIiwibWluX2VsdCQwIiwibWluX2VsdF9leG4kMCIsIm1heF9lbHQkMCIsIm1heF9lbHRfZXhuJDAiLCJ0cmFuc3Bvc2Vfa2V5cyQwIiwiZm9yX2FsbGkkMCIsImV4aXN0c2kkMCIsImNvdW50JDAiLCJjb3VudGkkMCIsInNwbGl0JDAiLCJzcGxpdF9sZV9ndCQwIiwic3BsaXRfbHRfZ2UkMCIsImFwcGVuZCQwIiwic3VicmFuZ2UkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsIm50aCQwIiwibnRoX2V4biQwIiwicmFuayQwIiwidG9fc2VxdWVuY2UkMCIsImJpbmFyeV9zZWFyY2gkMCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJ2YWxpZGF0ZSQwIiwidmFsaWRhdGVpJDAiLCJvZl90cmVlJDAiLCJ0b190cmVlJDEiLCJmaW5kX29yX2Vycm9yIiwiY29tcGFyYXRvciQwIiwibWVyZ2Vfc2tld2VkJDAiLCJvZl9oYXNodGJsX2V4biQwIiwidHJlZSIsImFycmF5Iiwia19vZl9zZXhwIiwib2Zfa2V5X3NldCQwIiwiZ2VuX2siLCJnZW5fdiIsIm9mX3RyZWUiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwib2Zfc29ydGVkX2FycmF5Iiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9zZXF1ZW5jZV9mb2xkIiwib2Zfc2VxdWVuY2VfcmVkdWNlIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2xpc3Rfd2l0aF9rZXkiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIiwib2ZfbGlzdF93aXRoX2tleV9leG4iLCJvZl9saXN0X3dpdGhfa2V5X211bHRpIiwib2ZfaXRlcmkiLCJvZl9pdGVyaV9leG4iLCJ0b190cmVlIiwiZGF0YV9lcXVhbCIsImxvd2VyX3BhcnQiLCJ1cHBlcl9wYXJ0IiwibG93ZXJfYm91bmQiLCJ1cHBlcl9ib3VuZCIsIm1pbiIsIm1heCIsIm9yZGVyIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiaG93Iiwic2VnbWVudF9vZiIsIm1hcF9rZXlzIiwibWFwX2tleXNfZXhuIiwidHJhbnNwb3NlX2tleXMiLCJpbml0X2Zvcl9iaW5fcHJvdCIsImVtcHR5JDEiLCJzaW5nbGV0b24kMSIsIm1hcF9rZXlzJDEiLCJtYXBfa2V5c19leG4kMSIsInRyYW5zcG9zZV9rZXlzJDEiLCJvZl9zb3J0ZWRfYXJyYXkkMSIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMSIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQxIiwib2ZfYWxpc3QkMSIsIm9mX2FsaXN0X29yX2Vycm9yJDEiLCJvZl9hbGlzdF9leG4kMSIsIm9mX2FsaXN0X211bHRpJDEiLCJvZl9hbGlzdF9mb2xkJDEiLCJvZl9hbGlzdF9yZWR1Y2UkMSIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMSIsIm9mX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJvZl9saXN0X3dpdGhfa2V5JDEiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDEiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQxIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQxIiwib2ZfaXRlcmkkMSIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfdHJlZSQxIiwib2ZfaGFzaHRibF9leG4kMSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJjbXB2IiwidDEiLCJ0MiIsInNleHBfb2ZfayIsImtfZ3JhbW1hciIsInZfZ3JhbW1hciIsImVtcHR5JDIiLCJvZl90cmVlJDIiLCJzaW5nbGV0b24kMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX3NvcnRlZF9hcnJheSQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZSQyIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMiIsIm9mX3NlcXVlbmNlX2V4biQyIiwib2Zfc2VxdWVuY2VfbXVsdGkkMiIsIm9mX3NlcXVlbmNlX2ZvbGQkMiIsIm9mX3NlcXVlbmNlX3JlZHVjZSQyIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2hhc2h0YmxfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9saXN0X3dpdGhfa2V5JDIiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDIiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQyIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQyIiwib2ZfaXRlcmkkMiIsIm9mX2l0ZXJpX2V4biQyIiwib2Zfa2V5X3NldCQxIiwidG9fdHJlZSQyIiwiaW52YXJpYW50cyQxIiwiaXNfZW1wdHkkMSIsImxlbmd0aCQxIiwic2V0JDEiLCJhZGQkMSIsImFkZF9leG4kMSIsImFkZF9tdWx0aSQxIiwicmVtb3ZlX211bHRpJDEiLCJmaW5kX211bHRpJDEiLCJjaGFuZ2UkMSIsInVwZGF0ZSQxIiwiZmluZF9leG4kMSIsImZpbmQkMSIsInJlbW92ZSQxIiwibWVtJDEiLCJpdGVyX2tleXMkMSIsIml0ZXIkMiIsIml0ZXJpJDEiLCJpdGVyaV91bnRpbCQxIiwiaXRlcjIkMSIsIm1hcCQyIiwibWFwaSQxIiwiZm9sZCQxIiwiZm9sZF91bnRpbCQxIiwiZm9sZF9yaWdodCQxIiwiZm9sZDIkMSIsImZpbHRlcl9rZXlzJDEiLCJmaWx0ZXIkMSIsImZpbHRlcmkkMSIsImZpbHRlcl9tYXAkMSIsImZpbHRlcl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwaSQxIiwicGFydGl0aW9uX21hcCQxIiwicGFydGl0aW9uaV90ZiQxIiwicGFydGl0aW9uX3RmJDEiLCJjb21iaW5lX2Vycm9ycyQxIiwiY29tcGFyZV9kaXJlY3QkMSIsImtleXMkMiIsImRhdGEkMSIsInRvX2FsaXN0JDEiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGVpJDEiLCJzeW1tZXRyaWNfZGlmZiQxIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQxIiwibWVyZ2UkMSIsIm1lcmdlX3NrZXdlZCQxIiwibWluX2VsdCQxIiwibWluX2VsdF9leG4kMSIsIm1heF9lbHQkMSIsIm1heF9lbHRfZXhuJDEiLCJmb3JfYWxsJDEiLCJmb3JfYWxsaSQxIiwiZXhpc3RzJDEiLCJleGlzdHNpJDEiLCJjb3VudCQxIiwiY291bnRpJDEiLCJzcGxpdCQxIiwic3BsaXRfbGVfZ3QkMSIsInNwbGl0X2x0X2dlJDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDEiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMSIsIm50aF9leG4kMSIsInJhbmskMSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSQxIiwia2V5X3NldCQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwidHJhbnNwb3NlX2tleXMkMiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEiLCJoYXNoX2ZvbGRfZGF0YSIsInN0YXRlIiwiYmluX3NoYXBlX21fdCIsImJpbl9zaXplX21fdCIsImJpbl93cml0ZV9tX3QiLCJiaW5fcmVhZF9tX3QiLCJiaW5fcmVhZF9tX3QkMCIsInZfZ2VuZXJhdG9yIiwidl9vYnNlcnZlciIsInZfc2hyaW5rZXIiLCJoYXNoX2ZvbGRfbV90IiwiY29tcGFyZV9tX3QiLCJzdGFibGVfd2l0bmVzc19tX3QiLCJ2YWxpZGF0ZSQyIiwidmFsaWRhdGVpJDIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQzIiwicXVpY2tjaGVja19vYnNlcnZlciQyIiwicXVpY2tjaGVja19zaHJpbmtlciQyIiwiZXJyb3Jfc291cmNlXzAxNiIsImVycm9yX3NvdXJjZV8wNjYiLCJhXzAwNyIsImJfMDA4IiwiYV8wMDkiLCJiXzAxMCIsIm9mX2FfMDEzIiwic2V4cF8wMTgiLCJ0YWdfMDE5Iiwic2V4cF9hcmdzXzAyNSIsInJlczBfMDI3Iiwib2ZfYV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwieCQxIiwiYV8wNDEiLCJiXzA0MiIsImFfMDQzIiwiYl8wNDQiLCJhXzA0NSIsImJfMDQ2IiwiZ2VuZXJhdG9yXzA1NiIsInNpemVfMDYxIiwicmFuZG9tXzA2MiIsInNpemVfMDU5IiwicmFuZG9tXzA2MCIsInNpemVfMDU3IiwicmFuZG9tXzA1OCIsInhfMDUxIiwic2l6ZV8wNTIiLCJoYXNoXzA1MyIsImhhc2hfMDUzJDAiLCJoYXNoXzA1MyQxIiwiaGFzaF8wNTMkMiIsInhfMDU1IiwiaGFzaF8wNTMkMyIsImhhc2hfMDUzJDQiLCJzaHJpbmtlcl8wNDciLCJvZl9hXzA2MyIsInNleHBfMDY4IiwidGFnXzA2OSIsInNleHBfYXJnc18wNzAiLCJhcmcwXzA3MSIsInJlczBfMDcyIiwic2V4cF9hcmdzXzA3NSIsImFyZzBfMDc2IiwicmVzMF8wNzciLCJvZl9hXzA3OSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJjb21wYXJlX29uZV9zaWRlZCIsInNpZGUiLCJhMSIsImEyIiwiYTIkMCIsImExJDAiLCJhMiQxIiwiYyQwIiwiYTIkMiIsImFfMDg1IiwiYl8wODYiLCJhXzA4NyIsImJfMDg4IiwiZXF1YWwkMiIsImFfMDg5IiwiYl8wOTAiLCJhXzA5MSIsImJfMDkyIiwiZWx0X2dlbiIsImVsdF9vYnMiLCJlbHRfc2hyIiwiZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvIiwidG9fbWFwIiwib2ZfbWFwX2tleXMiLCJvZl9oYXNoX3NldCIsImhzZXQiLCJvZl9oYXNodGJsX2tleXMiLCJ1bmlvbiQwIiwidW5pb25fbGlzdCQwIiwiaW50ZXIkMCIsInN1bSQwIiwiZmluZF9tYXAkMCIsInJlbW92ZV9pbmRleCQwIiwiaXNfc3Vic2V0JDAiLCJhcmVfZGlzam9pbnQkMCIsIm9mX2FycmF5JDAiLCJ0b19hcnJheSQwIiwic3RhYmxlX2RlZHVwX2xpc3QkMCIsImZvbGRfcmVzdWx0JDAiLCJlbGVtZW50cyQwIiwiY2hvb3NlJDAiLCJjaG9vc2VfZXhuJDAiLCJncm91cF9ieSQwIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsInN0YWJsZV9kZWR1cF9saXN0JDEiLCJvZl9hcnJheSQxIiwib2ZfbGlzdCQxIiwidW5pb25fbGlzdCQxIiwib2ZfbWFwX2tleXMkMCIsIm9mX2hhc2hfc2V0JDAiLCJvZl9oYXNodGJsX2tleXMkMCIsInRvX21hcCQwIiwib2ZfbWFwX2tleXMkMSIsIm9mX2hhc2hfc2V0JDEiLCJvZl9oYXNodGJsX2tleXMkMSIsImUiLCJ1bmlvbl9saXN0Iiwic3RhYmxlX2RlZHVwX2xpc3QiLCJ4cyIsInVuaW9uX2xpc3QkMiIsIm9mX2xpc3QkMiIsIm9mX2FycmF5JDIiLCJzdGFibGVfZGVkdXBfbGlzdCQyIiwiZmlsdGVyX21hcCQyIiwib2ZfaGFzaF9zZXQkMiIsIm9mX2hhc2h0Ymxfa2V5cyQyIiwib2ZfbWFwX2tleXMkMiIsImVsdF9ncmFtbWFyIiwiZW1wdHkkMyIsInNpbmdsZXRvbiQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl9saXN0JDMiLCJvZl9zZXF1ZW5jZSQzIiwib2ZfaGFzaF9zZXQkMyIsIm9mX2hhc2h0Ymxfa2V5cyQzIiwib2ZfYXJyYXkkMyIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMyIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQzIiwib2Zfc29ydGVkX2FycmF5JDMiLCJ1bmlvbl9saXN0JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwib2ZfdHJlZSQzIiwib2ZfbWFwX2tleXMkMyIsImVsdF9vZl9zZXhwIiwiZ3JhbW1hciIsIkVsdCIsImhhc2hfbV90IiwidmFsaWRhdGVfYm91bmQiLCJ2YWxpZGF0ZV9sYm91bmQiLCJ2YWxpZGF0ZV91Ym91bmQiLCJleGNsX3plcm8iLCJpbmNsX3plcm8iLCJ2YWxpZGF0ZV9wb3NpdGl2ZSIsInZhbGlkYXRlX25vbl9uZWdhdGl2ZSIsInZhbGlkYXRlX25lZ2F0aXZlIiwidmFsaWRhdGVfbm9uX3Bvc2l0aXZlIiwidCQwIiwic3RhYmxlX2RlZHVwX3N0YWdlZCIsInppcF93aXRoX3JlbWFpbmRlciIsInhzJDEiLCJ5cyQxIiwieXMiLCJ5cyQwIiwieHMkMCIsImFjYyQwIiwiYXJnMF8wMDEiLCJleG5faWZfZHVwIiwidG9fc2V4cCIsImNvbnRleHQiLCJkdXAiLCJhX3NleHBfZ3JhbW1hciIsImFfMDEwIiwiYl8wMTEiLCJub25lIiwic29tZSIsInVuc2FmZV92YWx1ZSIsImRlcHRoIiwidCQxIiwiZGVwdGgkMCIsInJlcHJlc2VudGF0aXZlIiwiaW5uZXIkMSIsImlubmVyX25vZGUkMSIsInIkMCIsImlubmVyJDAiLCJpbm5lcl9ub2RlIiwiaW5uZXIiLCJkZXNjZW5kYW50cyIsImlubmVyX25vZGUkMCIsImRlc2NlbmRhbnRzJDAiLCJyb290Iiwic2FtZV9jbGFzcyIsInVuaW9uIiwicjEiLCJ0MSQwIiwicjIiLCJ0MiQwIiwibjEiLCJuMiIsImlzX2NvbXByZXNzZWQiLCJwaHlzX2VxdWFsIiwidW5pb25fZmluZF9nZXRfY2hlY2tfbm9fcGVuZGluIiwiY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIiwiaW5jcl9sZW5ndGgiLCJpbmNyX3BlbmRpbmdfaXRlcnMiLCJkZWNyX3BlbmRpbmdfaXRlcnMiLCJ3aXRoX2l0ZXJhdGlvbl8ybCIsIndpdGhfaXRlcmF0aW9uXzMiLCJ3aXRoX2l0ZXJhdGlvbl80IiwiZCIsInByZXYiLCJjcmVhdGVfYXV4IiwiaGVhZGVyIiwiaXNfc2luZ2xldG9uIiwidW5zYWZlX3NwbGl0X29yX3NwbGljZSIsInVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIiLCJ1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSIsImNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZSIsInNwbGl0X29yX3NwbGljZV9iZWZvcmUiLCJpbnNlcnRfYmVmb3JlIiwibm9kZSIsImluc2VydF9hZnRlciIsImR1bW15X2hlYWRlciIsInVubGluayIsImhlYWQiLCJuZXh0X2VsdCIsInByZXZfZWx0IiwiZmlyc3QiLCJhcnIiLCJpJDAiLCJuZXdfZmlyc3QiLCJuZXh0JDAiLCJmb2xkX2VsdCIsImZvbGRpX2VsdCIsImZvbGRfZWx0XzEiLCJmb2xkaV9lbHRfMSIsIml0ZXJfZWx0IiwiaXRlcmlfZWx0IiwiZmluZF9lbHQiLCJmaW5kaV9lbHQiLCJ1bmNoZWNrZWRfaXRlciIsImZpcnN0JDAiLCJmb2xkX3JpZ2h0X2VsdCIsInRsIiwiY29tcGFyZV9lbHQiLCJlbHQxIiwiZWx0MiIsImVsdDEkMCIsImVsdDIkMCIsImNvbXBhcmVfcmVzdWx0IiwibmV4dDEiLCJuZXh0MiIsInRyYW5zZmVyIiwic3JjIiwiZHN0Iiwic3JjX2hlYWQiLCJkc3RfaGVhZCIsInJlbW92ZV9saXN0IiwidG9fcmVtb3ZlIiwiZWx0cyIsImZpcnN0X2VsdCIsImxhc3RfZWx0IiwiZmlyc3RfZXhuIiwibGFzdF9leG4iLCJpc19maXJzdCIsImlzX2xhc3QiLCJtZW1fZWx0IiwicHJldiQwIiwiaW5zZXJ0X2FmdGVyJDAiLCJpbnNlcnRfYmVmb3JlJDAiLCJuZXdfZWx0IiwiaW5zZXJ0X2VtcHR5IiwiaW5zZXJ0X2xhc3QiLCJpbnNlcnRfZmlyc3QiLCJyZW1vdmVfbGFzdCIsInJlbW92ZV9maXJzdCIsInNlY29uZCIsIm5ld190IiwidmFsdWUkMCIsIm1vdmVfYmVmb3JlIiwiYW5jaG9yIiwiYWZ0ZXJfZWx0IiwibW92ZV90b19mcm9udCIsIm1vdmVfYWZ0ZXIiLCJtb3ZlX3RvX2JhY2siLCJhXzAxNSIsImJfMDE2Iiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJzdWJzdF9mb3VuZCIsInNlYXJjaF9waHlzaWNhbCIsImlzX3VuaXQiLCJ1bml0IiwidG9fYnVmZmVyX2dlbiIsInRvX2J1ZmZlciIsInRvX2J1ZmZlcl9tYWNoIiwidG9fYnVmZmVyX2h1bSIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsIm9mX2JpZ3N0cmluZ19jb252X2V4biIsIm9mX2JpZ3N0cmluZ19jb252Iiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJvZl9zdHJpbmdfY29udiIsIm9mX3N0cmluZ19tYW55IiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsInNhdmVfc2V4cHMiLCJzYXZlX3NleHBzX21hY2giLCJzYXZlX3NleHBzX2h1bSIsInNhdmUiLCJzYXZlX21hY2giLCJzYXZlX2h1bSIsIm91dHB1dF9tYWNoIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJvdXRwdXRfaHVtIiwibG9hZF9zZXhwc19jb252X2V4biIsImxvYWRfc2V4cHNfY29udiIsImxvYWRfc2V4cF9jb252X2V4biIsImxvYWRfc2V4cF9jb252IiwibG9hZF9yZXZfc2V4cHMiLCJsb2FkX3NleHBzIiwibG9hZF9zZXhwIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJpbnB1dF9zZXhwIiwicGFyc2VfYmlnc3RyaW5nIiwicGFyc2UiLCJzY2FuX3NleHBzX2NvbnYiLCJzY2FuX2ZvbGRfc2V4cHMiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9yZXZfc2V4cHMiLCJzY2FuX3NleHBzIiwic2Nhbl9zZXhwIiwiZGVmYXVsdF9pbmRlbnQiLCJhXzAxNyIsImJfMDE4IiwiYV8wMTkiLCJiXzAyMCIsInRfMDI0IiwidF8wMjMiLCJ0XzAyNiIsInRfMDI1IiwiZTEiLCJlMCIsInNleHAkMCIsInZfdGV4dCIsIm9mX3RleHQiLCJ2YWx1ZV9vZl9zZXhwIiwidGV4dCIsImZpbGVuYW1lIiwiYW5ub3RhdGVkIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX3ZhbHVlIiwiYmluX3NoYXBlX25vX3JhaXNlIiwiYmluX3NpemVfbm9fcmFpc2UiLCJiaW5fd3JpdGVfbm9fcmFpc2UiLCJiaW5fd3JpdGVyX25vX3JhaXNlIiwiYmluX3JlYWRfbm9fcmFpc2UiLCJiaW5fcmVhZF9ub19yYWlzZSQwIiwiYmluX3JlYWRlcl9ub19yYWlzZSIsImJpbl9ub19yYWlzZSIsIm5vX3JhaXNlX29mX3NleHAiLCJvZl9hXzAyNyIsInNleHBfb2Zfbm9fcmFpc2UiLCJvZl9zZXhwX2FsbG93X2V4dHJhX2ZpZWxkc19yZWMiLCJvZl9zZXhwIiwic2V4cF9vZl9kYXRhIiwiYXJnMV8wMDIiLCJyZXMwXzAwMyIsInJlczFfMDA0Iiwia3YiLCJyZWFkIiwiZW5zdXJlX2Nhbl9tb2RpZnkiLCJsb29rdXAiLCJsb29rdXBfZXhuIiwiZW5xdWV1ZV91bmNoZWNrZWQiLCJiYWNrX29yX2Zyb250IiwiY29udGVudHMiLCJlbnF1ZXVlIiwiZW5xdWV1ZV9iYWNrIiwiZW5xdWV1ZV9mcm9udCIsImVucXVldWVfZXhuIiwiZW5xdWV1ZV9iYWNrX2V4biIsImVucXVldWVfZnJvbnRfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2JhY2tfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2JhY2siLCJsb29rdXBfYW5kX21vdmVfdG9fZnJvbnRfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250IiwiZGVxdWV1ZV93aXRoX2tleSIsIm1heWJlX2t2IiwiZGVxdWV1ZV93aXRoX2tleV9leG4iLCJkZXF1ZXVlX2JhY2tfd2l0aF9rZXkiLCJkZXF1ZXVlX2JhY2tfd2l0aF9rZXlfZXhuIiwiZGVxdWV1ZV9mcm9udF93aXRoX2tleSIsImRlcXVldWVfZnJvbnRfd2l0aF9rZXlfZXhuIiwiZGVxdWV1ZSIsImRlcXVldWVfYmFjayIsImRlcXVldWVfZnJvbnQiLCJsYXN0X3dpdGhfa2V5IiwiZmlyc3Rfd2l0aF9rZXkiLCJkZXF1ZXVlX2V4biIsImRlcXVldWVfYmFja19leG4iLCJkZXF1ZXVlX2Zyb250X2V4biIsImFjIiwiZmluaXNoIiwiZGVxdWV1ZV9hbGwiLCJyZW1vdmVfZXhuIiwibG9va3VwX2FuZF9yZW1vdmUiLCJyZXBsYWNlIiwicmVwbGFjZV9vcl9lbnF1ZXVlIiwicmVwbGFjZV9vcl9lbnF1ZXVlX2Zyb250IiwicmVwbGFjZV9vcl9lbnF1ZXVlX2JhY2siLCJyZXBsYWNlX2V4biIsImRyb3AiLCJkcm9wX2JhY2siLCJkcm9wX2Zyb250IiwiY29waWVkIiwib2ZfZGF0YV8wMDgiLCJkZWZhdWx0X21heF9saW5lcyIsImJ5dGVzX3Blcl9saW5lIiwiaGV4X29mX3BvcyIsImhleF9vZl9jaGFyIiwidW50aWwiLCJvZmZzZXQiLCJoZXhfb2ZfbGluZSIsInByaW50YWJsZV9zdHJpbmciLCJjaGFyJDAiLCJsaW5lIiwibGluZV9pbmRleCIsIm1heF9saW5lcyIsImxlbiQwIiwibWF4X2xpbmVzJDAiLCJtYXhfbGluZXMkMSIsIm1heF9saW5lcyQyIiwidW5hYnJpZGdlZF9saW5lcyIsInNraXBfZnJvbSIsInNraXBfdG8iLCJ4XzAwMSIsInByaW50YWJsZSIsInhfMDAyIiwidW5zYWZlX3N1YiIsInN5bWJvbF9jb25jYXQiLCJlc2NhcGVkIiwiY29udGFpbnMiLCJ1cHBlcmNhc2UiLCJsb3dlcmNhc2UiLCJjYXBpdGFsaXplIiwidW5jYXBpdGFsaXplIiwiaW5kZXgiLCJpbmRleF9leG4iLCJpbmRleF9mcm9tIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXgiLCJyaW5kZXhfZXhuIiwicmluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbV9leG4iLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0IiwidG9fbGlzdF9yZXYiLCJpc19zdWZmaXgiLCJpc19wcmVmaXgiLCJsc3BsaXQyX2V4biIsInJzcGxpdDJfZXhuIiwibHNwbGl0MiIsInJzcGxpdDIiLCJzcGxpdF9vbl9jaGFycyIsInNwbGl0X2xpbmVzIiwibGZpbmRpIiwicmZpbmRpIiwibHN0cmlwIiwicnN0cmlwIiwic3RyaXAiLCJ0ciIsInRyX211bHRpIiwiY2hvcF9zdWZmaXhfZXhuIiwiY2hvcF9wcmVmaXhfZXhuIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3ByZWZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3BfcHJlZml4X2lmX2V4aXN0cyIsInN1ZmZpeCIsInByZWZpeCIsImRyb3Bfc3VmZml4IiwiZHJvcF9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeCIsImNvbW1vbl9zdWZmaXhfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeF9sZW5ndGgiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXgyIiwiY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeDJfbGVuZ3RoIiwiY29uY2F0X2FycmF5IiwiY29uY2F0X2xpbmVzIiwib2ZfY2hhciIsIm9mX2NoYXJfbGlzdCIsInBhZF9sZWZ0IiwicGFkX3JpZ2h0IiwiaXNfc3VmZml4JDAiLCJpc19wcmVmaXgkMCIsImlzX3N1YnN0cmluZyQwIiwiaXNfc3Vic3RyaW5nX2F0JDAiLCJzdWJzdHJfaW5kZXgkMCIsInN1YnN0cl9pbmRleF9leG4kMCIsInN1YnN0cl9pbmRleF9hbGwkMCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0JDAiLCJzdWJzdHJfcmVwbGFjZV9hbGwkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwibWluJDAiLCJtYXgkMCIsImFzY2VuZGluZyQwIiwiZGVzY2VuZGluZyQwIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY29tcGFyYXRvciQyIiwiZ2VuX25vbmVtcHR5IiwiZ2VuX25vbmVtcHR5JDAiLCJjaGFycyIsInRha2Vfd2hpbGUiLCJydGFrZV93aGlsZSIsInRvX2ludCIsImNsYW1wIiwiY2xhbXBfZXhuIiwiYmV0d2VlbiIsImRlc2NlbmRpbmciLCJhc2NlbmRpbmciLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiYWxsIiwidGFibGUiLCJzdHJpbmdzIiwiYm9vbCIsInJhaXNlX2ludmFsaWQiLCJpbnB1dCIsImV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUiLCJvZl9zdHJpbmdfaHVtIiwiY2hhcl9nZW4iLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJnZXRfaGV4X2RpZ2l0X2V4biIsImdldF9oZXhfZGlnaXQiLCJpc19oZXhfZGlnaXRfdXBwZXIiLCJpc19oZXhfZGlnaXRfbG93ZXIiLCJpc19oZXhfZGlnaXQiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfd2hpdGVzcGFjZSIsImlzX3ByaW50IiwiaXNfYWxwaGFudW0iLCJpc19hbHBoYSIsImlzX3VwcGVyY2FzZSIsImlzX2xvd2VyY2FzZSIsImlzX2RpZ2l0IiwidW5zYWZlX29mX2ludCIsIm9mX2ludF9leG4iLCJvZl9pbnQiLCJnZW5fZGlnaXQiLCJnZW5fbG93ZXJjYXNlIiwiZ2VuX3VwcGVyY2FzZSIsImdlbl9hbHBoYSIsImdlbl9hbHBoYW51bSIsImdlbl9wcmludCIsImdlbl93aGl0ZXNwYWNlIiwiZ2VuX3VuaWZvcm1faW5jbHVzaXZlIiwiZXJyb3Jfc291cmNlXzAwMyIsInNleHBfMDA0IiwidGFnMiIsInZhbGlkYXRlX29yZGluYXJ5Iiwicm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIiwicm9idXN0bHlfY29tcGFyZSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsInN5bWJvbCQxNSIsInN5bWJvbCQxNiIsInN5bWJvbCQxNyIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsInN5bWJvbCQzNSIsInN5bWJvbCQzNiIsInJvYnVzdGx5X2NvbXBhcmUkMCIsInJvYnVzdF9zaWduIiwidG9fc3RyaW5nXzEyIiwiZ2VuX3VuaWZvcm1fZXhjbCIsImdlbl9pbmNsIiwiZ2VuX3dpdGhvdXRfbmFuIiwiZ2VuX2Zpbml0ZSIsImdlbl9wb3NpdGl2ZSIsImdlbl9uZWdhdGl2ZSIsImdlbl96ZXJvIiwiZ2VuX25hbiIsImdlbl9zdWJub3JtYWwiLCJnZW5fbm9ybWFsIiwiZ2VuX2luZmluaXRlIiwib2ZfZmxvYXQiLCJ0b19mbG9hdCIsInRvX2ludF9leG4iLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwib2Zfc3RyaW5nX29wdCIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMl9leG4iLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnRfZXhuIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwibnVtX2JpdHMiLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwiY2VpbF9wb3cyIiwiZmxvb3JfcG93MiIsImNlaWxfbG9nMiIsImZsb29yX2xvZzIiLCJpc19wb3cyIiwiY2x6IiwiY3R6IiwibG5vdCIsImFicyIsInplcm8iLCJtYXhfdmFsdWVfMzBfYml0cyIsIm9mX2ludDMyIiwidG9faW50MzIiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZWludCIsInRvX25hdGl2ZWludCIsInNpZ24iLCJ0b19zdHJpbmdfaHVtJDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJuYW1lX29mX3QkMCIsInR5cGVyZXBfb2ZfdCQwIiwiZ2VuX3VuaWZvcm1faW5jbCIsImdlbl9sb2dfaW5jbCIsImdlbl9sb2dfdW5pZm9ybV9pbmNsIiwiYml0c19vZl9mbG9hdCIsImZsb2F0X29mX2JpdHMiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJiaW5hYmxlIiwiYmluX25hbWUiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAiLCJiaW5kIiwiam9pbiIsImlnbm9yZV9tIiwiYWxsX3VuaXQiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwicGVlayIsInVucmVhY2hhYmxlX2NvZGUiLCJ0cF9sb2MiLCJzZXhwX29mX25ldmVyX3JldHVybnMiLCJuZXZlcl9yZXR1cm5zIiwib2ZfYV8wMDQiLCJvZl9wZXJtc18wMDUiLCJvZl9hXzAwOCIsIm9mX3Blcm1zXzAwOSIsInJlYWRfb25seSIsIm9mX3JlZiIsInRvX3JlZiIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwiZnN0MyIsInNuZDMiLCJ0cmQzIiwieiIsImJwcmludGYiLCJjb25zdCQwIiwiZXJyb3IiLCJlcnJvcl9zIiwiZm9yY2UiLCJpbnZhbGlkX2FyZ2YiLCJpZnByaW50ZiIsImlzX25vbmUiLCJpc19zb21lIiwia3NwcmludGYiLCJva19leG4iLCJwcmludF9zIiwiZXByaW50X3MiLCJwcm90ZWN0IiwicHJvdGVjdHgiLCJyYWlzZV9zIiwic3ltYm9sJDExIiwic3ByaW50ZiIsInN0YWdlIiwidW5zdGFnZSIsIndpdGhfcmV0dXJuX29wdGlvbiIsImJpbl9zaGFwZV9hcnJheSIsImJpbl9zaXplX2FycmF5IiwiYmluX3dyaXRlX2FycmF5IiwiYmluX3dyaXRlcl9hcnJheSIsImJpbl9yZWFkX2FycmF5IiwiYmluX3JlYWRfYXJyYXkkMCIsImJpbl9yZWFkZXJfYXJyYXkiLCJiaW5fYXJyYXkiLCJjb21wYXJlX2FycmF5IiwiZXF1YWxfYXJyYXkiLCJnbG9iYWxpemVfYXJyYXkiLCJhcnJheV9vZl9zZXhwIiwic2V4cF9vZl9hcnJheSIsImFycmF5X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfYXJyYXkiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaXplX2Jvb2wiLCJiaW5fd3JpdGVfYm9vbCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkX2Jvb2wiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZGVyX2Jvb2wiLCJiaW5fYm9vbCIsImNvbXBhcmVfYm9vbCIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9ib29sIiwiZXF1YWxfYm9vbCIsImdsb2JhbGl6ZV9ib29sIiwiYm9vbF9vZl9zZXhwIiwic2V4cF9vZl9ib29sIiwiYm9vbF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2Jvb2wiLCJiaW5fc2hhcGVfY2hhciIsImJpbl9zaXplX2NoYXIiLCJiaW5fd3JpdGVfY2hhciIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkX2NoYXIiLCJiaW5fcmVhZF9jaGFyJDAiLCJiaW5fcmVhZGVyX2NoYXIiLCJiaW5fY2hhciIsImNvbXBhcmVfY2hhciIsImhhc2hfZm9sZF9jaGFyIiwiaGFzaF9jaGFyIiwiZXF1YWxfY2hhciIsImdsb2JhbGl6ZV9jaGFyIiwiY2hhcl9vZl9zZXhwIiwic2V4cF9vZl9jaGFyIiwiY2hhcl9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2NoYXIiLCJiaW5fc2hhcGVfZmxvYXQiLCJiaW5fc2l6ZV9mbG9hdCIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZXJfZmxvYXQiLCJiaW5fcmVhZF9mbG9hdCIsImJpbl9yZWFkX2Zsb2F0JDAiLCJiaW5fcmVhZGVyX2Zsb2F0IiwiYmluX2Zsb2F0IiwiY29tcGFyZV9mbG9hdCIsImhhc2hfZm9sZF9mbG9hdCIsImhhc2hfZmxvYXQiLCJlcXVhbF9mbG9hdCIsImdsb2JhbGl6ZV9mbG9hdCIsImZsb2F0X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9mbG9hdCIsImJpbl9zaGFwZV9pbnQiLCJiaW5fc2l6ZV9pbnQiLCJiaW5fd3JpdGVfaW50IiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZF9pbnQiLCJiaW5fcmVhZF9pbnQkMCIsImJpbl9yZWFkZXJfaW50IiwiYmluX2ludCIsImNvbXBhcmVfaW50IiwiaGFzaF9mb2xkX2ludCIsImhhc2hfaW50IiwiZXF1YWxfaW50IiwiZ2xvYmFsaXplX2ludCIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQiLCJiaW5fc2hhcGVfaW50MzIiLCJiaW5fc2l6ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDMyJDAiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiY29tcGFyZV9pbnQzMiIsImhhc2hfZm9sZF9pbnQzMiIsImhhc2hfaW50MzIiLCJlcXVhbF9pbnQzMiIsImdsb2JhbGl6ZV9pbnQzMiIsImludDMyX29mX3NleHAiLCJzZXhwX29mX2ludDMyIiwiaW50MzJfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQzMiIsImJpbl9zaGFwZV9pbnQ2NCIsImJpbl9zaXplX2ludDY0IiwiYmluX3dyaXRlX2ludDY0IiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfaW50NjQkMCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJjb21wYXJlX2ludDY0IiwiaGFzaF9mb2xkX2ludDY0IiwiaGFzaF9pbnQ2NCIsImVxdWFsX2ludDY0IiwiZ2xvYmFsaXplX2ludDY0IiwiaW50NjRfb2Zfc2V4cCIsInNleHBfb2ZfaW50NjQiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2ludDY0IiwiYmluX3NoYXBlX2xhenlfdCIsImJpbl9zaXplX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRlcl9sYXp5X3QiLCJiaW5fbGF6eV90IiwiY29tcGFyZV9sYXp5X3QiLCJhXzA1NCIsImJfMDU1IiwiaGFzaF9mb2xkX2xhenlfdCIsImxhenlfdF9vZl9zZXhwIiwic2V4cF9vZl9sYXp5X3QiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9sYXp5X3QiLCJiaW5fc2hhcGVfbGlzdCIsImJpbl9zaXplX2xpc3QiLCJiaW5fd3JpdGVfbGlzdCIsImJpbl93cml0ZXJfbGlzdCIsImJpbl9yZWFkX2xpc3QiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZGVyX2xpc3QiLCJiaW5fbGlzdCIsImNvbXBhcmVfbGlzdCIsImFfMDYzIiwiYl8wNjQiLCJhXzA2NSIsImJfMDY2IiwiaGFzaF9mb2xkX2xpc3QiLCJlcXVhbF9saXN0IiwiYV8wNjciLCJiXzA2OCIsImFfMDY5IiwiYl8wNzAiLCJnbG9iYWxpemVfbGlzdCIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9saXN0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaXplX25hdGl2ZWludCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCQwIiwiYmluX3JlYWRlcl9uYXRpdmVpbnQiLCJiaW5fbmF0aXZlaW50IiwiY29tcGFyZV9uYXRpdmVpbnQiLCJlcXVhbF9uYXRpdmVpbnQiLCJnbG9iYWxpemVfbmF0aXZlaW50IiwiaGFzaF9mb2xkX25hdGl2ZWludCIsImZ1bmMkNSIsImhhc2hfbmF0aXZlaW50IiwibmF0aXZlaW50X29mX3NleHAiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX25hdGl2ZWludCIsImJpbl9zaGFwZV9vcHRpb24iLCJiaW5fc2l6ZV9vcHRpb24iLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlcl9vcHRpb24iLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9vcHRpb24kMCIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImNvbXBhcmVfb3B0aW9uIiwiYV8wODYiLCJiXzA4NyIsImVxdWFsX29wdGlvbiIsImFfMDkyIiwiYl8wOTMiLCJnbG9iYWxpemVfb3B0aW9uIiwiaGFzaF9mb2xkX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9vcHRpb24iLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3dyaXRlX3N0cmluZyIsImJpbl93cml0ZXJfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJjb21wYXJlX3N0cmluZyIsImVxdWFsX3N0cmluZyIsImdsb2JhbGl6ZV9zdHJpbmciLCJoYXNoX2ZvbGRfc3RyaW5nIiwiZnVuYyQ2IiwiaGFzaF9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2Zfc3RyaW5nIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsIm5hbWVfb2Zfc3RyaW5nIiwiYmluX3NoYXBlX2J5dGVzIiwiYmluX3NpemVfYnl0ZXMiLCJiaW5fd3JpdGVfYnl0ZXMiLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRfYnl0ZXMiLCJiaW5fcmVhZF9ieXRlcyQwIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImNvbXBhcmVfYnl0ZXMiLCJlcXVhbF9ieXRlcyIsImdsb2JhbGl6ZV9ieXRlcyIsImJ5dGVzX29mX3NleHAiLCJzZXhwX29mX2J5dGVzIiwiYnl0ZXNfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9ieXRlcyIsImJpbl9zaGFwZV9yZWYiLCJiaW5fc2l6ZV9yZWYiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fcmVhZF9yZWYiLCJiaW5fcmVhZF9yZWYkMCIsImJpbl9yZWFkZXJfcmVmIiwiYmluX3JlZiIsImNvbXBhcmVfcmVmIiwiYV8xMTUiLCJiXzExNiIsImFfMTE3IiwiYl8xMTgiLCJlcXVhbF9yZWYiLCJhXzExOSIsImJfMTIwIiwiYV8xMjEiLCJiXzEyMiIsImdsb2JhbGl6ZV9yZWYiLCJyZWZfb2Zfc2V4cCIsInNleHBfb2ZfcmVmIiwicmVmX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfcmVmIiwiZ3JvdXAkMTMiLCJiaW5fc2hhcGVfdW5pdCIsImJpbl9zaXplX3VuaXQiLCJiaW5fd3JpdGVfdW5pdCIsImJpbl93cml0ZXJfdW5pdCIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF91bml0JDAiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImNvbXBhcmVfdW5pdCIsImVxdWFsX3VuaXQiLCJnbG9iYWxpemVfdW5pdCIsImhhc2hfZm9sZF91bml0IiwiZnVuYyQ3IiwiaGFzaF91bml0IiwidW5pdF9vZl9zZXhwIiwic2V4cF9vZl91bml0IiwidW5pdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX3VuaXQiLCJncm91cCQxNCIsInNleHBfb2ZfZXhuIiwib2ZfcmVwciIsInRvX3JlcHIiLCJraWIiLCJtaWIiLCJnaWIiLCJuX2FicyIsImJ5dGVzX2ludF9leG4iLCJiaW5fc2l6ZV90X2Zyb3plbiIsImJpbl93cml0ZV90X2Zyb3plbiIsImJpbl9yZWFkX3RfZnJvemVuIiwiYmluX3JlYWRfdF9mcm96ZW4kMCIsImJpbl9zaGFwZV90X2Zyb3plbiIsImJpbl93cml0ZXJfdF9mcm96ZW4iLCJiaW5fcmVhZGVyX3RfZnJvemVuIiwiYmluX3RfZnJvemVuIiwic3RhYmxlX3dpdG5lc3NfdF9mcm96ZW4iLCJtYXhfbWVtX3dhaXRpbmdfZ2MiLCJtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMiLCJzdWJfc2hhcmVkIiwiYnN0ciIsInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMiLCJyZWFkZXIiLCJsaW1pdCIsImludmFsaWRfZGF0YSIsImJpbl9yZWFkZXIiLCJyZXN1bHQiLCJleHBlY3RlZF9wb3MiLCJlbGVtZW50X2xlbmd0aCIsInJlYWRfYmluX3Byb3QiLCJ3cml0ZV9iaW5fcHJvdF9rbm93bl9zaXplIiwid3JpdGUiLCJkYXRhX2xlbiIsInRvdGFsX2xlbiIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInZfMDA1IiwicmVzMF8wMTEiLCJ2XzAwNiIsInJlczFfMDEyIiwidl8wMDciLCJyZXMyXzAxMyIsInBvc19hZnRlcl9zaXplX2hlYWRlciIsInBvc19hZnRlcl9kYXRhIiwiYXJnNF8wMjMiLCJhcmczXzAyMiIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInZfMDE0Iiwidl8wMTUiLCJyZXMxXzAyNSIsInZfMDE2IiwicmVzMl8wMjYiLCJ2XzAxNyIsInJlczNfMDI3Iiwidl8wMTgiLCJyZXM0XzAyOCIsIndyaXRlX2Jpbl9wcm90Iiwid3JpdGVyIiwibGFzdF9ub25tYXRjaF9wbHVzX29uZSIsIm1pbl9wb3MiLCJnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwicGFkZGluZyIsImRhdGFfZW5kIiwiZ2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZ19sIiwic2V0X3BhZGRlZF9maXhlZF9zdHJpbmdfZmFpbGVkIiwiaGVhZF9vcl90YWlsIiwic2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyIsInNsZW4iLCJmaXJzdF9ub25tYXRjaCIsIm1heF9wb3MiLCJzZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwiZ2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyIsImRhdGFfYmVnaW4iLCJnZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nX2wiLCJ0b19ieXRlcyIsIm9mX2J5dGVzIiwiYnl0ZXMiLCJ0b19oZXgiLCJvZl9oZXhfZXhuIiwib2ZfYmluYXJ5X2V4biIsImFjY3VtIiwidG9fYmluYWJsZSQwIiwiZGlnZXN0X3N0cmluZyIsImRpZ2VzdF9ieXRlcyIsImRpZ2VzdF9maWxlX2Jsb2NraW5nIiwicGF0aCIsImRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdSIsImNoYW5uZWwiLCJvdXRwdXRfYmxvY2tpbmciLCJvYyIsImlucHV0X2Jsb2NraW5nIiwiaWMiLCJkaWdlc3Rfc3ViYnl0ZXMiLCJzdWJieXRlcyIsImRpZ2VzdF9iaW5fcHJvdCIsInVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIiwiZGlnZXN0X3N1YmJpZ3N0cmluZyIsImRpZ2VzdF9iaWdzdHJpbmciLCJlcnJvcl9zb3VyY2VfMDE0IiwiZXJyb3Jfc291cmNlXzAyMiIsImVycm9yX3NvdXJjZV8wMzAiLCJiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiIsInRvX2V4dGVybmFsIiwib2ZfZXh0ZXJuYWwiLCJ2X3V0Y19vZmZzZXRfaW5fc2Vjb25kcyIsInZfaXNfZHN0Iiwidl9hYmJydiIsImFiYnJ2IiwiaXNfZHN0IiwidXRjX29mZnNldF9pbl9zZWNvbmRzIiwiYWJicnZfMDExIiwiaXNfZHN0XzAwOSIsInV0Y19vZmZzZXRfaW5fc2Vjb25kc18wMDciLCJ2X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInZfc2Vjb25kcyIsInhfMDE1Iiwic2Vjb25kcyIsInRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInNlY29uZHNfMDE5IiwidGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXzAxIiwiYXJnXzAyMCIsImJuZHNfMDE2IiwiYXJnXzAxOCIsImJuZHNfMDE2JDAiLCJ2X3N0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV8iLCJ2X25ld19yZWdpbWUiLCJuZXdfcmVnaW1lIiwic3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2VwIiwibmV3X3JlZ2ltZV8wMjciLCJhcmdfMDI4IiwiYm5kc18wMjQiLCJhcmdfMDI2IiwiYm5kc18wMjQkMCIsInY1IiwidjciLCJ2NiIsInZfbmFtZSIsInZfb3JpZ2luYWxfZmlsZW5hbWUiLCJ2X2RpZ2VzdCIsInZfdHJhbnNpdGlvbnMiLCJ2X2xhc3RfcmVnaW1lX2luZGV4Iiwidl9kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSIsInZfbGVhcF9zZWNvbmRzIiwibGVhcF9zZWNvbmRzIiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUiLCJsYXN0X3JlZ2ltZV9pbmRleCIsInRyYW5zaXRpb25zIiwiZGlnZXN0Iiwib3JpZ2luYWxfZmlsZW5hbWUiLCJ0cmFuc2l0aW9uc18wMzkiLCJkaWdlc3RfMDM3Iiwib3JpZ2luYWxfZmlsZW5hbWVfMDM1IiwibmFtZV8wMzMiLCJsYXN0X3JlZ2ltZV9pbmRleF8wNDEiLCJsZWFwX3NlY29uZHNfMDQ1IiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVfMDQzIiwiYXJnXzA0NiIsImJuZHNfMDMyIiwiYXJnXzA0NCIsImJuZHNfMDMyJDAiLCJhcmdfMDQyIiwiYm5kc18wMzIkMSIsImFyZ18wNDAiLCJibmRzXzAzMiQyIiwiYXJnXzAzOCIsImJuZHNfMDMyJDMiLCJhcmdfMDM2IiwiYm5kc18wMzIkNCIsImFyZ18wMzQiLCJibmRzXzAzMiQ1Iiwiem9uZSIsImJvb2xfb2ZfaW50IiwibG9uZyQwIiwiaW50MzJfb2ZfY2hhciIsImNociIsImlucHV0X2xvbmdfYXNfaW50MzIiLCJzYjEiLCJzYjIiLCJzYjMiLCJzYjQiLCJpbnB1dF9sb25nX2FzX2ludCIsImlucHV0X2xvbmdfYXNfaW50NjMiLCJpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMiLCJpbnQ2M19vZl9jaGFyIiwic2hpZnQiLCJiaXRzIiwibG9uZ19sb25nIiwicmVzdWx0JDAiLCJyZXN1bHQkMSIsInJlc3VsdCQyIiwicmVzdWx0JDMiLCJyZXN1bHQkNCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJpbnB1dF9saXN0IiwibHN0IiwibHN0JDAiLCJpbnB1dF9hcnJheSIsImlucHV0X3JlZ2ltZSIsImFiYnJ2X2luZGV4IiwiaW5wdXRfdHpfZmlsZV9nZW4iLCJpbnB1dF90cmFuc2l0aW9uIiwiaW5wdXRfbGVhcF9zZWNvbmQiLCJ1dGNfbG9jYWxfY291bnQiLCJzdGRfd2FsbF9jb3VudCIsImxlYXBfY291bnQiLCJ0cmFuc2l0aW9uX2NvdW50IiwidHlwZV9jb3VudCIsImFiYnJ2X2NoYXJfY291bnQiLCJ0cmFuc2l0aW9uX3RpbWVzIiwidHJhbnNpdGlvbl9pbmRpY2VzIiwicmVnaW1lcyIsInJhd19hYmJydnMiLCJpbmRleGVkX2FiYnJ2cyIsImFiYnJ2cyIsIm5leHRfaW5kZXgiLCJhYmJydnMkMCIsInJlZ2ltZXMkMCIsInJhd190cmFuc2l0aW9ucyIsInRpbWUiLCJyZWdpbWUiLCJyZXN0IiwibHR0IiwiaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIiwicmVhZF9oZWFkZXIiLCJtYWdpYyIsImJhZF92ZXJzaW9uIiwidmVyc2lvbiIsImlucHV0X3R6X2ZpbGVfdjEiLCJpbnB1dF90el9maWxlIiwiem9uZW5hbWUiLCJtYWtlX3pvbmUiLCJyZWFzb24iLCJvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUiLCJvZl91dGNfb2Zmc2V0IiwibGlrZWx5X21hY2hpbmVfem9uZXMiLCJ1dGMiLCJyZXNldF90cmFuc2l0aW9uX2NhY2hlIiwiZ2V0X3JlZ2ltZV9leG4iLCJlZmZlY3RpdmVfc3RhcnRfdGltZSIsIm1vZGUiLCJpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWMiLCJpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWMiLCJiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHMiLCJ0cmFuc2l0aW9uIiwiaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCIsImluZGV4JDAiLCJpbmRleCQxIiwiaW5kZXgkMiIsImluZGV4JDMiLCJpbmRleCQ0Iiwib2ZfaW50NjNfc2Vjb25kcyIsInRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leCIsIm9mX3NwYW5fc2luY2VfZXBvY2giLCJ0b19zcGFuX3NpbmNlX2Vwb2NoIiwib2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2giLCJ0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCIsImluZGV4X29mX2RhdGVfYW5kX29mZGF5IiwiaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQiLCJpbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCIsImluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leCIsImluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leCIsImluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50XyIsImFmdGVyIiwiYmVmb3JlIiwiaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfIiwiaW5kZXhfYWJicmV2aWF0aW9uX2V4biIsImluZGV4X29mZnNldF9mcm9tX3V0Y19leG4iLCJyYXciLCJ2YWxpZGF0aW9uX2ZhaWxlZCIsImFyZzJfMDAzIiwicmVzMF8wMDQiLCJyZXMxXzAwNSIsInJlczJfMDA2IiwiY3JlYXRlX2V4biIsImNyZWF0ZV9zdGFibGVfd2l0bmVzcyIsInJhd19zdGFibGVfd2l0bmVzcyIsInR5cGVfZXF1YWwiLCJyYWNlX2ZyZWVfY3JlYXRlX2xvb3AiLCJjZWxsIiwibmV3X3giLCJjdXJyZW50IiwidHlwZW5hbWUkMSIsImFsbG93ZWRfaW50cyIsImFsbG93ZWRfaW50cyQwIiwidHlwZW5hbWUkMCIsImltbWVkaWFjeSIsIm5ldmVyX3dpdGhfbmFtZSIsIm5ldmVyIiwidW5rbm93biIsIm9wdGlvbiIsImxpc3QkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwicmVmIiwidHVwbGUyIiwidHVwbGUzIiwidHVwbGU0IiwidHVwbGU1IiwiZnVuY3Rpb24kMCIsImludCQwIiwicmVmJDAiLCJhcnJheSQwIiwidHVwbGUyJDAiLCJ0dXBsZTMkMCIsInR1cGxlNCQwIiwidHVwbGU1JDAiLCJmdW5jdGlvbiQxIiwib3B0aW9uJDAiLCJsYXp5X3QiLCJwb3NzaWJseV91bmJveGVkIiwiY2hpbGRfdHlwZSIsInRoZV9vbmx5X2ZpZWxkIiwidmFyaWFudCIsInRhZyIsIm1vcmUiLCJubyIsIm1vcmVfYXJnX2xpc3QiLCJvbmVfYXJnX2xpc3QiLCJub19hcmdfbGlzdCIsIm5vX2FyZ19jb3VudCIsImhhc2hfc2V0IiwiZ2V0X3dpcF9jb21wdXRhdGlvbiIsImNvbXAiLCJzZXRfZmluYWxfY29tcHV0YXRpb24iLCJzaGFyZSIsIm9mX3R5cGVyZXAiLCJ0eXBlcmVwIiwid2l0bmVzcyIsInR5cGVyZXAxIiwidHlwZXJlcDIiLCJpMSIsImkyIiwicmEiLCJybiIsIndpdG5lc3MkMCIsImludF9pc192YWx1ZSIsImludF9hc192YWx1ZSIsImludF9hc192YWx1ZV9leG4iLCJ2YWx1ZV9hc19pbnRfZXhuIiwidmFsdWVfYXNfaW50IiwidmFsdWVfaXNfaW50Iiwib2ZfdHlwZXJlcCQwIiwib2ZfdHlwZXJlcF9leG4iLCJ2YWx1ZV9hc19pbnQkMCIsIm9mX3R5cGVyZXAkMSIsIm9mX3R5cGVyZXBfZXhuJDAiLCJvZl90eXBlcmVwJDIiLCJvZl90eXBlcmVwX2V4biQxIiwiZGVzdCIsImVycm9yX3NvdXJjZV8wNjMiLCJlcnJvcl9zb3VyY2VfMDQ2Iiwib2ZfYV8wMDEiLCJvZl9iXzAwMiIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJvZl9iXzAxMSIsImFyZzFfMDEzIiwiYXJnMF8wMTIiLCJyZXMxXzAxNSIsImN1cnJ5IiwidW5jdXJyeSIsIm1hcF9mc3QiLCJtYXBfc25kIiwibWFwX2JvdGgiLCJtYXAyIiwieTIiLCJ5MSIsImNtcDEiLCJjbXAyIiwieSQwIiwiZXExIiwiZXEyIiwib2ZfYV8wMTkiLCJvZl9iXzAyMCIsIm9mX2NfMDIxIiwic2V4cF8wMjkiLCJhcmcyXzAyNSIsInJlczBfMDI2IiwicmVzMV8wMjciLCJyZXMyXzAyOCIsIm9mX2FfMDMxIiwib2ZfYl8wMzIiLCJvZl9jXzAzMyIsImFyZzJfMDM2IiwiYXJnMV8wMzUiLCJyZXMxXzAzOCIsInJlczJfMDM5Iiwib2ZfYyIsImN1cnJ5JDAiLCJ1bmN1cnJ5JDAiLCJtYXBfZnN0JDAiLCJtYXBfc25kJDAiLCJtYXBfdHJkIiwibWFwX2FsbCIsImYzIiwibWFwMiQwIiwiejIiLCJ6MSIsImdldDMiLCJjbXAzIiwieiQwIiwiYzEiLCJjMiIsImVxMyIsImFyZzFfMDQ4IiwiYXJnMF8wNDciLCJyZXMwXzA0OSIsInJlczFfMDUwIiwiYV8wNTEiLCJiXzA1MiIsInRfMDU0IiwidF8wNTMiLCJ0XzA1NiIsInRfMDU1Iiwic2V4cF8wNjIiLCJhcmcxXzA1OSIsImFyZzBfMDU4IiwicmVzMF8wNjAiLCJyZXMxXzA2MSIsImFyZzFfMDY1IiwiYXJnMF8wNjQiLCJyZXMwXzA2NiIsInJlczFfMDY3IiwiczIiLCJzMSIsInMyJDAiLCJzMSQwIiwid2Vla2RheXMiLCJ3ZWVrZW5kcyIsInNpemVfMDE4IiwicmFuZG9tXzAxOSIsInNpemVfMDEyIiwicmFuZG9tXzAxMyIsInNpemVfMDEwIiwicmFuZG9tXzAxMSIsInJhbmRvbV8wMDkiLCJzaXplXzAwNiIsInJhbmRvbV8wMDciLCJoYXNoXzAwNSIsImhhc2hfMDA1JDAiLCJoYXNoXzAwNSQxIiwiaGFzaF8wMDUkMiIsImhhc2hfMDA1JDMiLCJoYXNoXzAwNSQ0IiwiaGFzaF8wMDUkNSIsImhhc2hfMDA1JDYiLCJ0YWczIiwidGFnNCIsInRhZzUiLCJ0YWc2IiwidG9fc3RyaW5nX2xvbmciLCJhdG9tIiwidW5zdWdnZXN0ZWQiLCJpbnRfY2xhdXNlIiwic2hvcnRfY2xhdXNlIiwibG9uZ19jbGF1c2UiLCJpc29fODYwMV93ZWVrZGF5X251bWJlciIsIm51bV9kYXlzX2luX3dlZWsiLCJudW1fZGF5cyIsImZyb20iLCJ0byIsImlzX3N1bl9vcl9zYXQiLCJpbnQ2M190d28iLCJpbnQ2M190ZW4iLCJpbnQ2M190d2VudHkiLCJpbnQ2M19iaWxsaW9uIiwibWF4X2JpbGxpb25zIiwiZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIiwiZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSIsIm1heF9pbnQ2M193aXRoIiwiZGlnaXRzIiwiYmlsbGlvbnMiLCJkaWdpdF9vZl9jaGFyIiwid3JpdGVfMV9kaWdpdF9pbnQiLCJyZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyIsInRlbnMiLCJvbmVzIiwid3JpdGVfMl9kaWdpdF9pbnQiLCJ3cml0ZV8zX2RpZ2l0X2ludCIsIndyaXRlXzRfZGlnaXRfaW50Iiwid3JpdGVfNV9kaWdpdF9pbnQiLCJ3cml0ZV82X2RpZ2l0X2ludCIsIndyaXRlXzdfZGlnaXRfaW50Iiwid3JpdGVfOF9kaWdpdF9pbnQiLCJ3cml0ZV85X2RpZ2l0X2ludCIsInJlYWRfMV9kaWdpdF9pbnQiLCJyZWFkXzJfZGlnaXRfaW50IiwicmVhZF8zX2RpZ2l0X2ludCIsInJlYWRfNF9kaWdpdF9pbnQiLCJyZWFkXzVfZGlnaXRfaW50IiwicmVhZF82X2RpZ2l0X2ludCIsInJlYWRfN19kaWdpdF9pbnQiLCJyZWFkXzhfZGlnaXRfaW50IiwicmVhZF85X2RpZ2l0X2ludCIsInJhaXNlX2ludDYzX292ZXJmbG93IiwicmVhZF9pbnQ2MyIsImRpZ2l0c19vZl9iaWxsaW9ucyIsInJlbWFpbmRlciIsImRpdmlkZV9hbmRfcm91bmRfdXAiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsIm1pbl9zY2FsZSIsIm1heF9zY2FsZSIsImNoZWNrX2RpZ2l0cyIsImNoZWNrX3BvcyIsImNoZWNrX3dyaXRlIiwid3JpdGVfMV9kaWdpdF9pbnQkMCIsIndyaXRlXzJfZGlnaXRfaW50JDAiLCJ3cml0ZV8zX2RpZ2l0X2ludCQwIiwid3JpdGVfNF9kaWdpdF9pbnQkMCIsIndyaXRlXzVfZGlnaXRfaW50JDAiLCJ3cml0ZV82X2RpZ2l0X2ludCQwIiwid3JpdGVfN19kaWdpdF9pbnQkMCIsIndyaXRlXzhfZGlnaXRfaW50JDAiLCJ3cml0ZV85X2RpZ2l0X2ludCQwIiwid3JpdGVfaW50NjMiLCJkaWdpdHMkMCIsImludDYzJDAiLCJjdXN0b21fcHJpbnRmXzAwNCIsImN1c3RvbV9wcmludGZfMDAzIiwiaW50NjMiLCJjaGVja19yZWFkIiwicmVhZF8xX2RpZ2l0X2ludCQwIiwicmVhZF8yX2RpZ2l0X2ludCQwIiwicmVhZF8zX2RpZ2l0X2ludCQwIiwicmVhZF80X2RpZ2l0X2ludCQwIiwicmVhZF81X2RpZ2l0X2ludCQwIiwicmVhZF82X2RpZ2l0X2ludCQwIiwicmVhZF83X2RpZ2l0X2ludCQwIiwicmVhZF84X2RpZ2l0X2ludCQwIiwicmVhZF85X2RpZ2l0X2ludCQwIiwicmVhZF9pbnQ2MyQwIiwicmVhZF9pbnQ2M19kZWNpbWFsIiwiZGVjaW1hbHMiLCJzY2FsZSQwIiwicm91bmRfZXhhY3QiLCJhbGxvd191bmRlcnNjb3JlIiwicm91bmRfYXQkMCIsInNjYWxlIiwiZGl2aXNvciIsInJvdW5kX2F0IiwiZGlnaXQiLCJpbmNyZW1lbnQiLCJkZXNjcmlwdGlvbnMiLCJzaXplXzAzNCIsInJhbmRvbV8wMzUiLCJzaXplXzAzMiIsInJhbmRvbV8wMzMiLCJzaXplXzAzMCIsInJhbmRvbV8wMzEiLCJyYW5kb21fMDI5Iiwic2l6ZV8wMjYiLCJyYW5kb21fMDI3Iiwic2l6ZV8wMjQiLCJyYW5kb21fMDI1Iiwic2l6ZV8wMjIiLCJyYW5kb21fMDIzIiwic2l6ZV8wMjAiLCJyYW5kb21fMDIxIiwiaGFzaF8wMTEiLCJoYXNoXzAxMSQwIiwiaGFzaF8wMTEkMSIsImhhc2hfMDExJDIiLCJoYXNoXzAxMSQzIiwiaGFzaF8wMTEkNCIsImhhc2hfMDExJDUiLCJoYXNoXzAxMSQ2IiwiaGFzaF8wMTEkNyIsImhhc2hfMDExJDgiLCJoYXNoXzAxMSQ5IiwiaGFzaF8wMTEkMTAiLCJoYXNoXzAxMSQxMSIsImphbiIsImZlYiIsIm1hciIsImFwciIsIm1heSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9jdCIsIm5vdiIsImRlYyIsImlzX2phbiIsImlzX2ZlYiIsImlzX21hciIsImlzX2FwciIsImlzX21heSIsImlzX2p1biIsImlzX2p1bCIsImlzX2F1ZyIsImlzX3NlcCIsImlzX29jdCIsImlzX25vdiIsImlzX2RlYyIsImphbl92YWwiLCJmZWJfdmFsIiwibWFyX3ZhbCIsImFwcl92YWwiLCJtYXlfdmFsIiwianVuX3ZhbCIsImp1bF92YWwiLCJhdWdfdmFsIiwic2VwX3ZhbCIsIm9jdF92YWwiLCJub3ZfdmFsIiwiZGVjX3ZhbCIsImphbiQwIiwiZmViJDAiLCJtYXIkMCIsImFwciQwIiwibWF5JDAiLCJqdW4kMCIsImp1bCQwIiwiYXVnJDAiLCJzZXAkMCIsIm9jdCQwIiwibm92JDAiLCJkZWMkMCIsImphbl9mdW4iLCJmZWJfZnVuIiwibWFyX2Z1biIsImFwcl9mdW4iLCJtYXlfZnVuIiwianVuX2Z1biIsImp1bF9mdW4iLCJhdWdfZnVuIiwic2VwX2Z1biIsIm9jdF9mdW4iLCJub3ZfZnVuIiwiZGVjX2Z1biIsIm1ha2VfbWF0Y2hlciIsImphbl9nZW4iLCJmZWJfZ2VuIiwibWFyX2dlbiIsImFwcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwibWF5X2dlbiIsImNvbXBpbGVfYWNjJDUiLCJqdW5fZ2VuIiwiY29tcGlsZV9hY2MkNiIsImp1bF9nZW4iLCJjb21waWxlX2FjYyQ3IiwiYXVnX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJzZXBfZ2VuIiwiY29tcGlsZV9hY2MkOSIsIm9jdF9nZW4iLCJjb21waWxlX2FjYyQxMCIsIm5vdl9nZW4iLCJjb21waWxlX2FjYyQxMSIsImRlY19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsIm51bV9tb250aHMiLCJhbGxfc3RyaW5ncyIsImFsbF9zdHJpbmdzJDAiLCJlcnJvcl9zb3VyY2VfMDA3IiwiaXNfbGVhcF95ZWFyIiwieWVhciIsImNyZWF0ZTAiLCJtb250aCIsImRheSIsIm9mX2ludF91bmNoZWNrZWQiLCJkYXlzX2luX21vbnRoIiwiaW52YWxpZCIsIm1zZyIsImN1c3RvbV9wcmludGZfMDA1IiwiZGF5c19pbl9tb250aCQwIiwiaW52YWxpZF92YWx1ZV9mb3JfaW50ZXJuYWxfdXNlIiwidG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQiLCJ0b19zdHJpbmdfaXNvODYwMV9iYXNpYyIsInRvX3N0cmluZ19hbWVyaWNhbiIsInBhcnNlX3llYXI0IiwicGFyc2VfbW9udGgiLCJwYXJzZV9kYXkiLCJvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyIsImVuc3VyZSIsIm1vbnRoX251bSIsIm1vbnRoX2FicnYiLCJkJDAiLCJtJDAiLCJ5ZWFyJDAiLCJ4XzAwOCIsInNvbWVfaXNfcmVwcmVzZW50YWJsZSIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsIm9wdCIsInZhbHVlX2V4biIsImRlZmF1bHQkMCIsIm9mX2ludF9leG4kMCIsInRvX2ludCQwIiwidW5peF9lcG9jaCIsIm9mX3llYXIiLCJvZl9kYXRlIiwiZGF0ZSIsImNfMTBfMDAwIiwiY18xNF83ODAiLCJjXzNfNjUyXzQyNSIsInRvX2RhdGUiLCJkYXlzIiwiZGRkIiwiZGRkJDAiLCJ5JDEiLCJtaSIsInkkMiIsInVuaXhfZXBvY2gkMCIsImFkZF9kYXlzIiwiYWRkX2RheXMkMCIsImFkZF9tb250aHMiLCJ0b3RhbF9tb250aHMiLCJtJDEiLCJkJDEiLCJhZGRfeWVhcnMiLCJkYXlfb2Zfd2VlayIsIm5vbl9sZWFwX3llYXJfdGFibGUiLCJsZWFwX3llYXJfdGFibGUiLCJvcmRpbmFsX2RhdGUiLCJsYXN0X3dlZWtfb2ZfeWVhciIsImZpcnN0X29mX3llYXIiLCJpcyIsImNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIiwib3JkaW5hbCIsIndlZWtkYXkiLCJ3ZWVrIiwid2Vla19udW1iZXJfYW5kX3llYXIiLCJ3ZWVrX251bWJlciIsImlzX3dlZWtlbmQiLCJpc193ZWVrZGF5IiwiaXNfYnVzaW5lc3NfZGF5IiwiaXNfaG9saWRheSIsImRpZmZfd2Vla2VuZF9kYXlzIiwiZDEiLCJkMiIsIm51bV9zYXRzdW5fY3Jvc3NpbmdzIiwiZGlmZl93ZWVrZGF5cyIsImFkZF9kYXlzX3NraXBwaW5nIiwic2tpcCIsInN0ZXAiLCJrJDEiLCJ0X25leHQiLCJmaXJzdF9kYXlfc2F0aXNmeWluZyIsImNvbmRpdGlvbiIsIm5leHRfZGF5X3NhdGlzZnlpbmciLCJuZXh0X2RheSIsImZvbGxvd2luZ193ZWVrZGF5IiwicHJldmlvdXNfd2Vla2RheSIsInJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSIsInJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkiLCJyb3VuZF9mb3J3YXJkX3RvX2J1c2luZXNzX2RheSIsInJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSIsImFkZF93ZWVrZGF5cyIsImFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIiwiYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIiwiYWRkX2J1c2luZXNzX2RheXMiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3IiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19iYWMiLCJkYXRlc19iZXR3ZWVuIiwibCQwIiwid2Vla2RheXNfYmV0d2VlbiIsImFsbF9kYXRlcyIsImZpcnN0X2RhdGUiLCJmaXJzdF93ZWVrZGF5IiwiZGF0ZV9hbmRfd2Vla2RheXMiLCJidXNpbmVzc19kYXRlc19iZXR3ZWVuIiwiZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIiLCJkb3ciLCJkb3ckMCIsInRwbHVzMSIsImN1ciIsInN1ZmZpeGVzIiwiYW1fc3VmZml4ZXMiLCJwbV9zdWZmaXhlcyIsImZpbmRfc3VmZml4Iiwic3VmZml4ZXMkMCIsInN1ZmZpeGVzJDEiLCJoYXNfY29sb24iLCJkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3AiLCJpbnZhbGlkX3N0cmluZyIsImFtIiwiYW1fb3JfcG0iLCJleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyIsImhyIiwiaHIkMSIsImV4cGVjdF9zZWNvbmRzIiwic3Vic2VjX25vbnplcm8iLCJzdWJzZWNfbGVuIiwic3Vic2VjX3BvcyIsInNlYyIsInNlYyQxIiwibm9uemVybyIsInN1YnNlY19ub256ZXJvJDAiLCJzdWJzZWNfbGVuJDEiLCJzdWJzZWNfcG9zJDAiLCJzZWMkMiIsImhyJDAiLCJzZWMkMCIsInN1YnNlY19sZW4kMCIsInBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQiLCJtYXRjaCQxIiwidmVyaWZ5IiwiZSQwIiwic2hpZnRfZGVjaW1hbF9wb2ludCIsImJ5IiwicyQwIiwicyQxIiwibm90X3plcm8iLCJ1bmRlcnNjb3JlIiwidW5kZXJzY29yZSQwIiwiZSQxIiwiZXhwIiwiZXhwJDAiLCJuZWciLCJzaWduZWQiLCJzJDMiLCJkJDIiLCJzdWYiLCJwcmVmIiwicyQ0IiwiYnkkMCIsImJ5JDEiLCJzJDUiLCJzJDYiLCJieSQyIiwicyQ3IiwicyQyIiwiZmxvYXRfdG9fc3RyaW5nIiwieF9hYnMiLCJ0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlIiwicmVhbGx5X29mX3N0cmluZyIsImZsb2F0X29mX3N0cmluZyIsInN0ciQwIiwic3RyJDEiLCJzdHIkMiIsIm9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiIsIm9mX211bHQiLCJ0b19tdWx0Iiwib2ZfcGVyY2VudGFnZSIsInRvX3BlcmNlbnRhZ2UiLCJvZl9icCIsInRvX2JwIiwib2ZfYnBfaW50IiwidG9fYnBfaW50Iiwic2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCIsIm9mX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYSIsInRvX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYSIsIm9mX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSIsInRvX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSIsInJvdW5kX3NpZ25pZmljYW50Iiwic2lnbmlmaWNhbnRfZGlnaXRzIiwicm91bmRfZGVjaW1hbF9tdWx0IiwiZGVjaW1hbF9kaWdpdHMiLCJyb3VuZF9kZWNpbWFsX3BlcmNlbnRhZ2UiLCJyb3VuZF9kZWNpbWFsX2JwIiwiYXJnMF8wMTAiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxOCIsInJlczBfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJleHBvbmVudCIsInByZWNpc2lvbiIsImV4cG9uZW50X0UiLCJkZWNpbWFsIiwiY29tcGFjdCIsImNvbXBhY3RfRSIsImhleCIsImhleF9FIiwiZm9ybWF0X2Zsb2F0IiwicHJlY2lzaW9uJDAiLCJwcmVjaXNpb24kMSIsInByZWNpc2lvbiQyIiwicHJlY2lzaW9uJDMiLCJwcmVjaXNpb24kNCIsInByZWNpc2lvbiQ1IiwiZm9ybWF0IiwidG9fc3RyaW5nJDEiLCJiaW5fc2hhcGVfdCQ3IiwidW5jaGVja2VkX3ZhbHVlIiwiYXBwbHlfd2l0aF9ub25lX2FzX25hbiIsIm9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSIsInRvX211bHRfd2l0aF9ub25lX2FzX25hbiIsImJpbl9zaGFwZV90JDgiLCJiaW5fc2hhcGVfdCQ5IiwiYmluX3NoYXBlX3QkMTAiLCJiaW5fd3JpdGVyX3QkNiIsImJpbl9yZWFkZXJfdCQ2IiwiYmluX3QkNiIsInR5cGVuYW1lX29mX3QkMSIsIm5hbWVfb2ZfdCQxIiwidHlwZXJlcF9vZl90JDEiLCJiaW5fc2hhcGVfdCQxMSIsImJpbl9zaGFwZV90JDEyIiwiaXNfemVybyIsImFwcGx5IiwiaXNfbmFuIiwiaXNfaW5mIiwic2lnbl9leG4iLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYkMCIsInRfb2Zfc2V4cF9hbGxvd19uYW5fYW5kX2luZiIsImZvcm1hdCQwIiwidG9fc3RyaW5nJDIiLCJiaW5fc2hhcGVfdCQxMyIsInRvX3N0cmluZyQzIiwiYmluX3NoYXBlX3QkMTQiLCJiaW5fd3JpdGVyX3QkNyIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3QkNyIsInRvX3N0cmluZyQ0Iiwic2V4cF9vZl90JDciLCJyYW5kb21pemUiLCJzcGFuIiwicmFuZG9tX3N0YXRlIiwicGVyY2VudCIsIm11bHQiLCJmYWN0b3IiLCJmb3JtYXRfZGVjaW1hbCIsInRlbnRocyIsInVuaXRzIiwic2hvcnRfc3RyaW5nIiwibXMiLCJ1cyIsIm5zIiwic3VmZml4JDYiLCJuJDIiLCJuJDMiLCJuJDQiLCJuc18wMTkiLCJ1c18wMTciLCJtc18wMTUiLCJzZWNfMDEzIiwibWluXzAxMSIsImhyXzAwOSIsInNpZ25fMDA3IiwiYXJnXzAxNiIsImJuZHNfMDA2JDMiLCJibmRzXzAwNiQ0IiwiYm5kc18wMDYkNSIsIm1hZ25pdHVkZSIsIm5hbm9zZWNvbmQiLCJtaWNyb3NlY29uZCIsIm1pbGxpc2Vjb25kIiwibWludXRlIiwiaG91ciIsInRvX3BhcnRzIiwiaW50ZWdyYWwiLCJmcmFjdGlvbmFsIiwibmFub3NlY29uZHMiLCJuYW5vc2Vjb25kcyQwIiwic2Vjb25kcyQwIiwibWludXRlcyIsIm1pY3Jvc2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsInRvX25zIiwidG9fdXMiLCJ0b19tcyIsInRvX3NlYyIsInRvX21pbiIsInRvX2hyIiwidG9fZGF5Iiwib2ZfbnMiLCJvZl91cyIsIm9mX21zIiwib2Zfc2VjIiwib2ZfaW50MzJfc2Vjb25kcyIsIm9mX21pbiIsIm9mX2hyIiwib2ZfZGF5Iiwib2ZfaW50X25zIiwib2ZfaW50X3VzIiwib2ZfaW50X21zIiwib2ZfaW50X3NlYyIsIm9mX2ludF9taW4iLCJvZl9pbnRfaHIiLCJvZl9pbnRfZGF5IiwiZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSIsInVuaXRfb2ZfdGltZSIsInNjYWxlX2J5X3VuaXRfb2ZfdGltZSIsImRheSQwIiwieCQyIiwidG9fc2hvcnRfc3RyaW5nIiwidF9vZl9zZXhwX3YxX3YyIiwiaXNfdjIiLCJzZXhwX29mX3RfdjFfdjIiLCJhYnNfdCIsInRvX3VuaXRfb2ZfdGltZSIsIm9mX3VuaXRfb2ZfdGltZSIsInN1ZmZpeF9vZl91bml0X29mX3RpbWUiLCJwYXJzZV9zdWZmaXgiLCJ1bml0X29mX3RpbWVfbGlzdCQxIiwidW5pdF9vZl90aW1lX2xpc3QiLCJ1bml0X29mX3RpbWVfbGlzdCQwIiwic3RhdGVfaXNfZmluYWwiLCJuZWdhdGl2ZSIsIm1hZ25pdHVkZSQwIiwidG9rZW4iLCJzdGF0ZSQwIiwic3VmZml4X2luZGV4IiwidW50aWxfaW5kZXgiLCJmbG9hdF9zdHJpbmciLCJtYWduaXR1ZGUkMSIsInN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaSIsInN1bV90IiwidG9fZmxvYXRfc3RyaW5nIiwiZml4dXBfdW5pdF9vZl90aW1lIiwic3VtX3QkMCIsInJlbV90IiwiZml4dXBfbWFnbml0dWRlIiwidG9faW50X3N0cmluZ19hbmRfc3VtIiwidW5pdF9zcGFuIiwibmV3X3N1bV90IiwibmV3X3JlbV90IiwibmV4dF9tYWduaXR1ZGUiLCJuZXh0X3N1bV90IiwibmV4dF9yZW1fdCIsIm1hZ25pdHVkZSQyIiwibmV3X3N1bV90JDAiLCJ1bml0X29mX3RpbWUkMCIsIm1hZ25pdHVkZV9zdHJpbmciLCJkYXlfc3RyaW5nIiwiaG91cl9zdHJpbmciLCJzdW1fdCQxIiwibWludXRlX3N0cmluZyIsIm9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaSIsImhhbGZfdWxwIiwib3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpIiwibnVtYmVyX29mX2RpZ2l0cyIsImRlbGltaXRlciIsImFsaWduX2RlY2ltYWwiLCJmbG9hdCQxIiwic3VmZml4JDciLCJsbyIsImhpIiwibWlsbGVuaXVtIiwidG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJpc192YWxpZCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuYyIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biIsImN1c3RvbV9wcmludGZfMDAxIiwic3RhcnRfb2ZfZGF5Iiwic3RhcnRfb2ZfbmV4dF9kYXkiLCJjYW5kaWRhdGUiLCJhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5IiwibnMkMCIsInVzJDAiLCJtcyQwIiwidG9fc3RyaW5nX2dlbiIsImRyb3BfbXMiLCJkcm9wX3VzIiwidHJpbSIsIm1vZCIsImRyb3BfdXMkMCIsImZsb2F0X3NlYyIsImRvbnRfcHJpbnRfdXMiLCJkb250X3ByaW50X21zIiwiZG9udF9wcmludF9zIiwidG9fc3RyaW5nX3RyaW1tZWQiLCJ0b19zZWNfc3RyaW5nIiwidG9fbWlsbGlzZWNvbmRfc3RyaW5nIiwic21hbGxfZGlmZiIsIm9mZGF5MSIsIm9mZGF5MiIsIm9mZGF5MSQwIiwib2ZkYXkyJDAiLCJjcmVhdGVfZnJvbV9wYXJzZWQiLCJzdWJzZWMiLCJvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCIsImVwb2NoIiwiaXNfZWFybGllciIsImlzX2xhdGVyIiwib2Zfc3Bhbl9pbl9zZWNvbmRzIiwic3Bhbl9pbl9zZWNvbmRzIiwib2ZfdGltZV9pbl9zZWNvbmRzIiwidGltZV9pbl9zZWNvbmRzIiwicmVsYXRpdmUiLCJhYmJyZXZpYXRpb24iLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IiwicHJldl9jbG9ja19zaGlmdCIsIm5leHRfY2xvY2tfc2hpZnQiLCJkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW0iLCJvZmZzZXRfZnJvbV91dGMiLCJhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGEiLCJhYnNfZGlmZiIsIm9mX2RhdGVfb2ZkYXkiLCJvZmRheSIsIm9mX2RhdGVfb2ZkYXlfcHJlY2lzZSIsInByb3Bvc2VkX3RpbWUiLCJzaGlmdF9hbW91bnQiLCJzaGlmdF9zdGFydCIsInNoaWZ0X2JhY2t3YXJkcyIsImRhdGVfY2FjaGUiLCJyZXNldF9kYXRlX2NhY2hlIiwic2V0X2RhdGVfY2FjaGUiLCJyZWwiLCJlZmZlY3RpdmVfZGF5X3N0YXJ0IiwiZWZmZWN0aXZlX2RheV91bnRpbCIsImNhY2hlX3N0YXJ0X2luY2wiLCJjYWNoZV91bnRpbF9leGNsIiwiZW5kX29mX2RheSIsInRvX29mZGF5IiwidG9fZGF0ZV9vZmRheSIsInRvX2RhdGVfb2ZkYXlfcHJlY2lzZSIsImNsb2NrX3NoaWZ0X2FmdGVyIiwiY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0IiwiYW1vdW50Iiwib2ZkYXkkMCIsImFtYmlndWl0eSIsImFtb3VudCQwIiwic3RhcnQkMCIsImNvbnZlcnQiLCJmcm9tX3R6IiwidG9fdHoiLCJzdGFydF90aW1lIiwidXRjX29mZnNldCQwIiwidXRjX2Vwb2NoIiwib2Zmc2V0X3N0cmluZyIsInV0Y19vZmZzZXQiLCJpc191dGMiLCJ0b19zdHJpbmdfYWJzX3BhcnRzIiwib2Zmc2V0X3N0cmluZyQwIiwidG9fc3RyaW5nX2Fic190cmltbWVkIiwidG9fc3RyaW5nX2FicyIsInRvX3N0cmluZ191dGMiLCJ0b19zZWNfc3RyaW5nX3dpdGhfem9uZSIsInRvX2ZpbGVuYW1lX3N0cmluZyIsIm9mX2ZpbGVuYW1lX3N0cmluZyIsImRhdGUkMCIsIm9mZGF5JDEiLCJvZl9sb2NhbGl6ZWRfc3RyaW5nIiwib2NjdXJyZW5jZSIsImJlZm9yZV9vcl9hZnRlciIsImZpcnN0X2d1ZXNzX2RhdGUiLCJmaXJzdF9ndWVzcyIsImVuc3VyZV9jb2xvbl9pbl9vZmZzZXQiLCJvZmZzZXRfbGVuZ3RoIiwib2Zfc3RyaW5nX2dlbiIsImRlZmF1bHRfem9uZSIsImZpbmRfem9uZSIsIm9mZGF5JDMiLCJkYXRlJDEiLCJ0eiIsIm9mZGF5JDIiLCJvZmRheV90b19zZWMiLCJvZCIsInR6JDAiLCJ1dGNfb2Zmc2V0JDEiLCJ1dGNfdCIsIm9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQiLCJ6b25lX25hbWUiLCJ0b19hYnNvbHV0ZSIsIm9mX2Fic29sdXRlIiwiYWJzb2x1dGUiLCJzZWNfcGVyX2RheSIsInRvX2RheXNfZnJvbV9lcG9jaCIsInNlY19zaW5jZV9lcG9jaCIsImdtdGltZV9sb3dlcl9ib3VuZCIsImRheXNfZnJvbV9lcG9jaF9hcHByb3giLCJvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2hfaW5fc2VjIiwiZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2giLCJuZXh0X211bHRpcGxlX2ludGVybmFsIiwiY2FuX2VxdWFsX2FmdGVyIiwiYmFzZSIsImludGVydmFsIiwiYmFzZV90b19hZnRlciIsIm5leHRfbXVsdGlwbGUiLCJwcmV2X211bHRpcGxlIiwiY2FuX2VxdWFsX2JlZm9yZSIsIm5vdyIsImZsb2F0X25zIiwib2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUiLCJvZl90aW1lIiwidG9kYXkiLCJzdWZmaXgkNSIsImFyY2hfc2l4dHlmb3VyIiwibWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmciLCJtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyIsIm1hZyIsIm9mX3BhcnRzIiwib2ZfaW50NjNfbnMiLCJvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXMiLCJ0b19pbnQ2M19ucyIsInRvX2ludF91cyIsInRvX2ludF9tcyIsInRvX2ludF9zZWMiLCJ0b19pbnRfbnMiLCJ1Iiwic2NhbGVfaW50NjMiLCJzY2FsZV9pbnQiLCJkaXYiLCJ0b19wcm9wb3J0aW9uYWxfZmxvYXQiLCJ0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9pbnQ2M19leG4iLCJ0b19pbnQ2MyIsIm9mX2ludDYzX2V4biQwIiwidG9faW50NjMkMCIsIm51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUiLCJzcGFuX3BhcnRfbWFnbml0dWRlIiwid3JpdGVfY2hhciIsIndyaXRlXzJfY2hhcnMiLCJjaGFyMSIsImNoYXIyIiwid3JpdGVfZGlnaXRzIiwid3JpdGVfaWZfbm9uX2VtcHR5IiwibmFub3Nfb2ZfbWlsbGlzZWNvbmQiLCJuYW5vc19vZl9taWNyb3NlY29uZCIsImludDYzXzYwIiwiaW50NjNfMjQiLCJob3VycyIsImRpZ2l0c19vZl9kIiwiZGlnaXRzX29mX2giLCJkaWdpdHNfb2ZfbSIsImRlY2ltYWxfdW5pdCIsImRlY2ltYWxfdW5pdF9pbnRlZ2VyIiwiZGVjaW1hbF91bml0X2JpbGxpb250aHMiLCJkaWdpdHNfb2ZfZGVjaW1hbF91bml0IiwiZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0Iiwic2lnbl9sZW4iLCJkX2xlbiIsImhfbGVuIiwibV9sZW4iLCJkaWdpdHNfbGVuIiwiZGVjaW1hbHNfbGVuIiwiZGVjaW1hbF91bml0X2xlbiIsInN0cmluZ19sZW5ndGgiLCJpbnQ2M18xMCIsIm1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3ciLCJhZGRfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fZmFjdG9yX29mIiwibWluX2RheXNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyIsIm1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93IiwibWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmIiwibmVnX25zIiwicm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmciLCJoYXNfZGlnaXQiLCJlbmRfb2ZfZGlnaXRzIiwibmVnX2ludGVnZXIiLCJkZWNpbWFsX3BvcyIsImVuZF9vZl9kZWNpbWFscyIsImVuZF9wb3MiLCJtaW5fd2l0aG91dF91bmRlcmZsb3ciLCJuZWdfaW50ZWdlcl9ucyIsImZyYWN0aW9uX3BvcyIsIm5lZ19uYW5vc19vZl9wYXJ0IiwiZGVjaW1hbF9ucyIsInNleHBfb2Zfc3BhbiIsInNwYW5fb2Zfc2V4cCIsImZsb2F0JDIiLCJzaW5jZV91bml4X2Vwb2NoIiwiaGFsZl9taWNyb3NlY29uZCIsInRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taSIsIm1pbl9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfciIsIm1heF9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfciIsIm9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taSIsIm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlIiwibWF4X3ZhbHVlX3JlcHJlc2VudGFibGUiLCJvZl9pbnQ2M19leG4kMSIsInRvX2ludDYzJDEiLCJmYWlsIiwib2ZfaW50NjNfZXhuJDIiLCJ0b19pbnQ2MyQyIiwiY29tcGFyZSQ2IiwiYXJnX3R5cGUiLCJpc19pbnZhbGlkIiwib2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0Iiwic3ViX2V4biIsInRvX3N0cmluZ193aXRoX3VuaXQiLCJzaXh0eSIsInRob3VzYW5kIiwidW5pdCQwIiwibnVtX2RpZ2l0cyIsInRvX21pY3Jvc2Vjb25kX3N0cmluZyIsImV2ZXJ5Iiwic3RhcnQkMSIsInRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIiwib2ZfaW50NjNfbnNfc2luY2VfZXBvY2giLCJvdmVyZmxvdyIsImFkZF9vdmVyZmxvd2VkIiwic3ViX292ZXJmbG93ZWQiLCJhZGRfc2F0dXJhdGluZyIsInN1Yl9zYXR1cmF0aW5nIiwidG9faW50X25zX3NpbmNlX2Vwb2NoIiwib2ZfaW50X25zX3NpbmNlX2Vwb2NoIiwidG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IiwidG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluIiwibWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluIiwib2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0Iiwib2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwidG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vIiwibnNfc2luY2VfZXBvY2giLCJuc19wZXJfZGF5IiwiYXBwcm94X2RheXNfZnJvbV9lcG9jaCIsIm5zX3NpbmNlX3N0YXJ0X29mX2RheSIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5Iiwib2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vIiwic3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoIiwic3Bhbl9zaW5jZV9lcG9jaCIsInR3b19kaWdpdF9vZl9zdHJpbmciLCJuc19vZl8xMDBfbXMiLCJuc19vZl8xMF9tcyIsIm5zX29mXzFfbXMiLCJuc19vZl8xMDBfdXMiLCJuc19vZl8xMF91cyIsIm5zX29mXzFfdXMiLCJuc19vZl8xMDBfbnMiLCJuc19vZl8xMF9ucyIsIm5zX29mXzFfbnMiLCJzZWNvbmRzX3NwYW4iLCJzdWJfc2Vjb25kX3NwYW4iLCJvZmRheV9zdHJpbmdfd2l0aF96b25lIiwiZGF0ZV9zdHJpbmciLCJvZmRheV9zdHJpbmciLCJwcmVmaXhfbGVuIiwic3VmZml4X2xlbiIsInNlY29uZHNfc3RyaW5nIiwic3ViX3NlY29uZF9zdHJpbmciLCJzX3N0cmluZyIsIm1fc3RyaW5nIiwiaF9zdHJpbmciLCJtdWx0aXBsaWVyIiwiZGF5c19mcm9tX2Vwb2NoJDAiLCJkYXlzX2Zyb21fZXBvY2hfaW5fbnMiLCJhdHRlbXB0Iiwic3Bhbl9vZl9kdXJhdGlvbiIsInRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCIsImR1cmF0aW9ucyIsInNwYW5zIiwic3RyaW5nX2J5dGVzIiwic3JjX3BvcyIsInNyY19sZW4iLCJkc3RfcG9zIiwic3JjX3BvcyQwIiwiYnl0ZXNfYnl0ZXMiLCJzdHJpbmdfYmlnc3RyaW5nIiwiYnl0ZXNfYmlnc3RyaW5nIiwiYmlnc3RyaW5nX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19zdHJpbmciLCJiaWdzdHJpbmdfYnl0ZXMiLCJzaXplXzAwOSIsInJhbmRvbV8wMTAiLCJzaXplXzAwNyIsImhhc2hfMDA4IiwiaGFzaF8wMDgkMCIsImhhc2hfMDA4JDEiLCJoYXNoXzAwOCQyIiwiYmFzZV9sZW4iLCJnZXRfbm9fYm91bmRzX2NoZWNrIiwiZm9sZGkkMCIsIndyYXBfc3ViX24iLCJvbl9lcnJvciIsImJsaXRfdG8iLCJibGl0X3RvX3N0cmluZyIsImJsaXRfdG9fYnl0ZXMiLCJibGl0X3RvX2JpZ3N0cmluZyIsImJsaXRfYmFzZSIsImJsaXRfZnJvbSIsImJsaXRfZnJvbV9zdHJpbmciLCJibGl0X2Zyb21fYmlnc3RyaW5nIiwib2ZfYmFzZSIsImNvbmNhdF9nZW4iLCJjcmVhdGVfZHN0IiwiYmxpdF9kc3QiLCJ0cyIsImNvbmNhdF9zdHJpbmciLCJjb25jYXRfYmlnc3RyaW5nIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UiLCJjaGVjayIsInV1aWQiLCJnbG9iYWxpemUkMCIsImNoZWNrX2Zvcl93aGl0ZXNwYWNlJDAiLCJjaGVjayQwIiwicHAkMCIsImdsb2JhbGl6ZSQxIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UkMSIsImNoZWNrJDEiLCJwcCQxIiwib2Zfc3RyaW5nJDEiLCJnbG9iYWxpemUkMiIsInR5cGVuYW1lX29mX3QkMiIsInR5cGVyZXBfb2ZfdCQyIiwiY2hlY2skMiIsInBwJDIiLCJvZl9zdHJpbmckMiIsImluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIiwiYXJnX3R5cGUkMCIsInNleHBfYXNfc3RyaW5nIiwiYXJnMV8wMDMiLCJhcmcwXzAwMiIsInZfMDAxIiwicmVzMV8wMTEiLCJzZXJpYWxpemVkX3NleHAiLCJhcmcxXzAxNSIsInZfMDEyIiwidl8wMTMiLCJyZXMxXzAxNyIsImV4cGVjdGVkX2Jpbl9pbyIsImJpbmFibGVfbSIsInNlcmlhbGl6ZWRfYmluX2lvIiwiYXJnMl8wMjIiLCJhcmcxXzAyMSIsInJlczFfMDI0Iiwidl8wMTkiLCJyZXMyXzAyNSIsImFyZzFfMDI5Iiwidl8wMjYiLCJ2XzAyNyIsInNleHBzIiwic2V4cHMkMCIsInNlcmlhbGl6ZWRfZWxlbWVudHMiLCJzZXhwcyQxIiwic29ydGVkX3NleHBzIiwic29ydGVkX3NlcmlhbGl6ZWQiLCJ2XzAzMiIsInZfMDMzIiwicmVzMV8wMzciLCJzZXhwX3Blcm11dGF0aW9ucyIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJ2XzAzOCIsInJlczBfMDQyIiwidl8wMzkiLCJyZXMxXzA0MyIsImlzX2NvbmNhdGVuYXRpb24iLCJsb29wIiwicmV2X3NraXBwZWQiLCJzdHJpbmdzJDAiLCJjb250aW51ZSQwIiwic3RyaW5nJDAiLCJiaW5faW9fZWxlbWVudHMiLCJiaW5faW9faGVhZGVyIiwic2VyaWFsaXplZCIsImVsZW1lbnRzX3N0cmluZyIsInNlcmlhbGl6YXRpb25fbWF0Y2hlcyIsImFyZzFfMDUxIiwiYXJnMF8wNTAiLCJ2XzA0NCIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0NyIsInJlczFfMDQ4IiwicmVzMF8wNTIiLCJyZXMxXzA1MyIsInBlcm11dGF0YXRpb25zIiwiZWxlbWVudHMiLCJhcmcxXzA1NyIsImFyZzBfMDU2Iiwidl8wNTQiLCJyZXMwXzA1OCIsInJlczFfMDU5IiwiYmxhbmciLCJjbXBfYSQwIiwiYV8wMDEkMCIsImJfMDAyJDAiLCJjbXBfYSQ1IiwiY21wX2EkMSIsImNtcF9hJDIiLCJjbXBfYSQzIiwiYV8wMjciLCJhXzAyNSIsImFfMDIzIiwiYl8wMjgiLCJiXzAyNiIsImJfMDI0IiwiYV8wMzEiLCJiXzAzMiIsImNtcF9hJDQiLCJhXzAzMyIsImJfMDM0IiwiYV8wMzUiLCJiXzAzNiIsImFfMDM3JDAiLCJiXzAzOCQwIiwiYV8wMzkiLCJiXzA0MCIsImFfMDQ5IiwiYV8wNDciLCJiXzA1MCIsImJfMDQ4IiwiYV8wNTMiLCJiXzA1NCIsImFfMDU1IiwiYl8wNTYiLCJhXzA1NyIsImJfMDU4IiwiYV8wNjEiLCJhXzA1OSIsImJfMDYyIiwiYl8wNjAiLCJhXzA3MSIsImJfMDcyIiwiYXJnJDAiLCJhcmckMSIsImFyZyQyIiwiaHN2JDMiLCJoc3YkNCIsImFyZyQzIiwiaHN2JDUiLCJhcmckNCIsImEwJDEiLCJoc3YkNiIsImhzdiQ3IiwiaHN2JDgiLCJhMCQyIiwiaHN2JDkiLCJ2MCQxIiwidjAkMiIsInYwJDMiLCJzdWJ0ZXJtcyIsInQzIiwidDEkMSIsImNvbnRhaW5zX25vX2NvbnN0YW50cyIsInRydWUkMCIsImZhbHNlJDAiLCJub3QiLCJhbmRhbHNvIiwib3RoZXIiLCJ0MWIiLCJ0MWEiLCJvcmVsc2UiLCJpZiQwIiwib2ZfYV8wNzMiLCJhcmcxXzA3NSIsImFyZzBfMDc0IiwicmVzMF8wNzYiLCJyZXMxXzA3NyIsImFyZzFfMDc5IiwiYXJnMF8wNzgiLCJyZXMwXzA4MCIsInJlczFfMDgxIiwiYXJnMl8wODYiLCJhcmcxXzA4NSIsImFyZzBfMDg0IiwicmVzMF8wODciLCJyZXMxXzA4OCIsInJlczJfMDg5IiwiYXJnMF8wOTAiLCJyZXMwXzA5MSIsImdhdGhlcl9jb25qdW5jdHMiLCJ0cyQxIiwidHMkMCIsImdhdGhlcl9kaXNqdW5jdHMiLCJhbmQiLCJvciIsImF1eCIsImJhc2Vfb2Zfc2V4cCIsImt3Iiwia3ckMCIsImRlZm5zIiwiYmFzZV9ncmFtbWFyIiwiY29uc3RhbnQiLCJjb25zdGFudF92YWx1ZSIsInRzJDIiLCJ0cyQzIiwidHMkNCIsInQyJDEiLCJ0MSQyIiwidHMkNSIsImxvb3AkMCIsInBlbmRpbmciLCJwZW5kaW5nJDAiLCJwZW5kaW5nJDIiLCJwZW5kaW5nJDEiLCJvdGhlciQwIiwib3RoZXIkMSIsImV2YWwkMCIsImJhc2VfZXZhbCIsInNwZWNpYWxpemUiLCJldmFsX3NldCIsInNldF9vZl9iYXNlIiwiYiQwIiwiYiQxIiwiYSQwIiwiYSQxIiwiYiQyIiwiYSQyIiwiY29uZCIsImNvbmQkMCIsImEkMyIsImV2YWwkMSIsImFfZ2VuZXJhdG9yIiwic2VsZiIsImFfc2hyaW5rZXIiLCJiaW5vcCIsIm9wZXJhdG9yIiwicmlnaHQkMCIsImxlZnQkMCIsImVsc2UkMCIsInRoZW4iLCJpZiQxIiwiYV9vYnNlcnZlciIsIm9mX2J5dGVzX2ludDYzIiwiYnl0ZXNfaW50NjMiLCJpc2NhbGUiLCJieXRlc19pbnQ2NCIsImJ5dGVzX2Zsb2F0Iiwib2ZfYnl0ZXNfaW50Iiwib2ZfYnl0ZXNfaW50NjRfZXhuIiwib2ZfYnl0ZXNfZmxvYXRfZXhuIiwia2lsb2J5dGUiLCJtZWdhYnl0ZSIsImdpZ2FieXRlIiwidGVyYWJ5dGUiLCJwZXRhYnl0ZSIsImV4YWJ5dGUiLCJ3b3JkIiwia2lsb2J5dGVzIiwibWVnYWJ5dGVzIiwiZ2lnYWJ5dGVzIiwidGVyYWJ5dGVzIiwicGV0YWJ5dGVzIiwiZXhhYnl0ZXMiLCJ3b3Jkc19pbnRfZXhuIiwid29yZHNfZmxvYXQiLCJvZl9raWxvYnl0ZXMiLCJvZl9tZWdhYnl0ZXMiLCJvZl9naWdhYnl0ZXMiLCJvZl90ZXJhYnl0ZXMiLCJvZl9wZXRhYnl0ZXMiLCJvZl9leGFieXRlcyIsIm9mX3dvcmRzX2ludCIsIm9mX3dvcmRzX2Zsb2F0X2V4biIsImJhc2Vfc3RyIiwiZXh0X2NoYXIiLCJsYXJnZXN0X21lYXN1cmUiLCJ0X2FicyIsIm5vX21hdGNoIiwidmFsX3NleHAiLCJ1bml0X25hbWUiLCJ0JDUiLCJ0JDQiLCJ0JDMiLCJ0JDIiLCJjdXN0b21fcHJpbnRmXzAwNiIsImN1c3RvbV9wcmludGZfMDA3IiwiY3VzdG9tX3ByaW50Zl8wMDgiLCJjdXN0b21fcHJpbnRmXzAwOSIsImN1c3RvbV9wcmludGZfMDEwIiwiY3VzdG9tX3ByaW50Zl8wMTEiLCJ0b19zdHJpbmdfc2hvcnQiLCJ0b191bml0c19zdHIiLCJ0b191bml0IiwiZXh0IiwiZl9hYnMiLCJjdXN0b21fcHJpbnRmXzAxNCIsImN1c3RvbV9wcmludGZfMDE1IiwiY3VzdG9tX3ByaW50Zl8wMTYiLCJjdXN0b21fcHJpbnRmXzAxNyIsImN1c3RvbV9wcmludGZfMDE4IiwiY3VzdG9tX3ByaW50Zl8wMTkiLCJjdXN0b21fcHJpbnRmXzAyMCIsImN1c3RvbV9wcmludGZfMDIxIiwiY3VzdG9tX3ByaW50Zl8wMjIiLCJjdXN0b21fcHJpbnRmXzAyMyIsImN1c3RvbV9wcmludGZfMDI0IiwiY3VzdG9tX3ByaW50Zl8wMjUiLCJjdXN0b21fcHJpbnRmXzAyNiIsIm5fZnJvbnQiLCJuX2JhY2siLCJmcm9udCIsImJhY2siLCJyZXZfYmFjayIsImZyb250JDAiLCJyZXZfZnJvbnQiLCJiYWNrJDAiLCJyYWlzZV9mcm9udF9pbnZhcmlhbnQiLCJyYWlzZV9iYWNrX2ludmFyaWFudCIsInBlZWtfZnJvbnRfZXhuIiwicGVla19iYWNrX2V4biIsImRyb3BfZnJvbnRfZXhuIiwiZHJvcF9iYWNrX2V4biIsIm9wdGlvbmFsIiwicGVla19mcm9udCIsInBlZWtfYmFjayIsInBlZWtfZXhuIiwiZHJvcF9leG4iLCJpbml0JDAiLCJzb21lX3giLCJzb21lX3kiLCJ0b19saXN0JDEiLCJ0b19saXN0JDIiLCJ0b19saXN0JDMiLCJzdW0kMSIsImZpbmRfbWFwJDEiLCJ0b19hcnJheSQxIiwiZm9sZF9yZXN1bHQkMSIsImJ1aWxkIiwiZXJyb3Jfc291cmNlXzA1NCIsImVycm9yX3NvdXJjZV8wOTYiLCJuYW1lcyQwIiwidjE2IiwidjE1IiwidjE0IiwidjEzIiwidjEyIiwidjExIiwidjEwIiwidjkiLCJ2OCIsInNpemUkNiIsInNpemUkNyIsInNpemUkOCIsInNpemUkOSIsInNpemUkMTAiLCJzaXplJDExIiwic2l6ZSQxMiIsInNpemUkMTMiLCJ2X21pbm9yX3dvcmRzIiwidl9wcm9tb3RlZF93b3JkcyIsInZfbWFqb3Jfd29yZHMiLCJ2X21pbm9yX2NvbGxlY3Rpb25zIiwidl9tYWpvcl9jb2xsZWN0aW9ucyIsInZfaGVhcF93b3JkcyIsInZfaGVhcF9jaHVua3MiLCJ2X2xpdmVfd29yZHMiLCJ2X2xpdmVfYmxvY2tzIiwidl9mcmVlX3dvcmRzIiwidl9mcmVlX2Jsb2NrcyIsInZfbGFyZ2VzdF9mcmVlIiwidl9mcmFnbWVudHMiLCJ2X2NvbXBhY3Rpb25zIiwidl90b3BfaGVhcF93b3JkcyIsInZfc3RhY2tfc2l6ZSIsIm4kNSIsIm4kNiIsIm4kNyIsIm4kOCIsIm4kOSIsIm4kMTAiLCJuJDExIiwibiQxMiIsIm4kMTMiLCJoc3YkMTAiLCJoc3YkMTEiLCJoc3YkMTIiLCJoc3YkMTMiLCJoc3YkMTQiLCJzdGFja19zaXplIiwidG9wX2hlYXBfd29yZHMiLCJjb21wYWN0aW9ucyIsImZyYWdtZW50cyIsImxhcmdlc3RfZnJlZSIsImZyZWVfYmxvY2tzIiwiZnJlZV93b3JkcyIsImxpdmVfYmxvY2tzIiwibGl2ZV93b3JkcyIsImhlYXBfY2h1bmtzIiwiaGVhcF93b3JkcyIsIm1ham9yX2NvbGxlY3Rpb25zIiwibWlub3JfY29sbGVjdGlvbnMiLCJtYWpvcl93b3JkcyIsInByb21vdGVkX3dvcmRzIiwibWlub3Jfd29yZHMiLCJzdGFja19zaXplXzA0NyIsInRvcF9oZWFwX3dvcmRzXzA0NSIsImNvbXBhY3Rpb25zXzA0MyIsImZyYWdtZW50c18wNDEiLCJsYXJnZXN0X2ZyZWVfMDM5IiwiZnJlZV9ibG9ja3NfMDM3IiwiZnJlZV93b3Jkc18wMzUiLCJsaXZlX2Jsb2Nrc18wMzMiLCJsaXZlX3dvcmRzXzAzMSIsImhlYXBfY2h1bmtzXzAyOSIsImhlYXBfd29yZHNfMDI3IiwibWFqb3JfY29sbGVjdGlvbnNfMDI1IiwibWlub3JfY29sbGVjdGlvbnNfMDIzIiwibWFqb3Jfd29yZHNfMDIxIiwicHJvbW90ZWRfd29yZHNfMDE5IiwibWlub3Jfd29yZHNfMDE3IiwiYXJnXzA0OCIsImJuZHNfMDE2JDEiLCJibmRzXzAxNiQyIiwiYm5kc18wMTYkMyIsImJuZHNfMDE2JDQiLCJibmRzXzAxNiQ1IiwiYm5kc18wMTYkNiIsImFyZ18wMzIiLCJibmRzXzAxNiQ3IiwiYXJnXzAzMCIsImJuZHNfMDE2JDgiLCJibmRzXzAxNiQ5IiwiYm5kc18wMTYkMTAiLCJhcmdfMDI0IiwiYm5kc18wMTYkMTEiLCJhcmdfMDIyIiwiYm5kc18wMTYkMTIiLCJibmRzXzAxNiQxMyIsImJuZHNfMDE2JDE0IiwidjE3Iiwic2l6ZSQxNCIsInZfZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwibiQxNCIsImhzdiQxNSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18wODkiLCJzdGFja19zaXplXzA4NyIsInRvcF9oZWFwX3dvcmRzXzA4NSIsImNvbXBhY3Rpb25zXzA4MyIsImZyYWdtZW50c18wODEiLCJsYXJnZXN0X2ZyZWVfMDc5IiwiZnJlZV9ibG9ja3NfMDc3IiwiZnJlZV93b3Jkc18wNzUiLCJsaXZlX2Jsb2Nrc18wNzMiLCJsaXZlX3dvcmRzXzA3MSIsImhlYXBfY2h1bmtzXzA2OSIsImhlYXBfd29yZHNfMDY3IiwibWFqb3JfY29sbGVjdGlvbnNfMDY1IiwibWlub3JfY29sbGVjdGlvbnNfMDYzIiwibWFqb3Jfd29yZHNfMDYxIiwicHJvbW90ZWRfd29yZHNfMDU5IiwibWlub3Jfd29yZHNfMDU3IiwiYXJnXzA5MCIsImJuZHNfMDU2IiwiYXJnXzA4OCIsImJuZHNfMDU2JDAiLCJhcmdfMDg2IiwiYm5kc18wNTYkMSIsImFyZ18wODQiLCJibmRzXzA1NiQyIiwiYXJnXzA4MiIsImJuZHNfMDU2JDMiLCJhcmdfMDgwIiwiYm5kc18wNTYkNCIsImFyZ18wNzgiLCJibmRzXzA1NiQ1IiwiYXJnXzA3NiIsImJuZHNfMDU2JDYiLCJhcmdfMDc0IiwiYm5kc18wNTYkNyIsImFyZ18wNzIiLCJibmRzXzA1NiQ4IiwiYXJnXzA3MCIsImJuZHNfMDU2JDkiLCJhcmdfMDY4IiwiYm5kc18wNTYkMTAiLCJhcmdfMDY2IiwiYm5kc18wNTYkMTEiLCJhcmdfMDY0IiwiYm5kc18wNTYkMTIiLCJhcmdfMDYyIiwiYm5kc18wNTYkMTMiLCJhcmdfMDYwIiwiYm5kc18wNTYkMTQiLCJhcmdfMDU4IiwiYm5kc18wNTYkMTUiLCJ2X21pbm9yX2hlYXBfc2l6ZSIsInZfbWFqb3JfaGVhcF9pbmNyZW1lbnQiLCJ2X3NwYWNlX292ZXJoZWFkIiwidl92ZXJib3NlIiwidl9tYXhfb3ZlcmhlYWQiLCJ2X3N0YWNrX2xpbWl0Iiwidl9hbGxvY2F0aW9uX3BvbGljeSIsInZfd2luZG93X3NpemUiLCJ2X2N1c3RvbV9tYWpvcl9yYXRpbyIsInZfY3VzdG9tX21pbm9yX3JhdGlvIiwidl9jdXN0b21fbWlub3JfbWF4X3NpemUiLCJhXzA5MyIsImJfMDk0IiwieF8wOTciLCJjdXN0b21fbWlub3JfbWF4X3NpemUiLCJjdXN0b21fbWlub3JfcmF0aW8iLCJjdXN0b21fbWFqb3JfcmF0aW8iLCJ3aW5kb3dfc2l6ZSIsImFsbG9jYXRpb25fcG9saWN5Iiwic3RhY2tfbGltaXQiLCJtYXhfb3ZlcmhlYWQiLCJ2ZXJib3NlIiwic3BhY2Vfb3ZlcmhlYWQiLCJtYWpvcl9oZWFwX2luY3JlbWVudCIsIm1pbm9yX2hlYXBfc2l6ZSIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8xMTkiLCJjdXN0b21fbWlub3JfcmF0aW9fMTE3IiwiY3VzdG9tX21ham9yX3JhdGlvXzExNSIsIndpbmRvd19zaXplXzExMyIsImFsbG9jYXRpb25fcG9saWN5XzExMSIsInN0YWNrX2xpbWl0XzEwOSIsIm1heF9vdmVyaGVhZF8xMDciLCJ2ZXJib3NlXzEwNSIsInNwYWNlX292ZXJoZWFkXzEwMyIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzEwMSIsIm1pbm9yX2hlYXBfc2l6ZV8wOTkiLCJhcmdfMTIwIiwiYm5kc18wOTgiLCJhcmdfMTE4IiwiYm5kc18wOTgkMCIsImFyZ18xMTYiLCJibmRzXzA5OCQxIiwiYXJnXzExNCIsImJuZHNfMDk4JDIiLCJhcmdfMTEyIiwiYm5kc18wOTgkMyIsImFyZ18xMTAiLCJibmRzXzA5OCQ0IiwiYXJnXzEwOCIsImJuZHNfMDk4JDUiLCJhcmdfMTA2IiwiYm5kc18wOTgkNiIsImFyZ18xMDQiLCJibmRzXzA5OCQ3IiwiYXJnXzEwMiIsImJuZHNfMDk4JDgiLCJhcmdfMTAwIiwiYm5kc18wOTgkOSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18xNTYiLCJzdGFja19zaXplXzE1NCIsInRvcF9oZWFwX3dvcmRzXzE1MiIsImNvbXBhY3Rpb25zXzE1MCIsImZyYWdtZW50c18xNDgiLCJsYXJnZXN0X2ZyZWVfMTQ2IiwiZnJlZV9ibG9ja3NfMTQ0IiwiZnJlZV93b3Jkc18xNDIiLCJsaXZlX2Jsb2Nrc18xNDAiLCJsaXZlX3dvcmRzXzEzOCIsImhlYXBfY2h1bmtzXzEzNiIsImhlYXBfd29yZHNfMTM0IiwibWFqb3JfY29sbGVjdGlvbnNfMTMyIiwibWlub3JfY29sbGVjdGlvbnNfMTMwIiwibWFqb3Jfd29yZHNfMTI4IiwicHJvbW90ZWRfd29yZHNfMTI2IiwibWlub3Jfd29yZHNfMTI0IiwiYXJnXzE1NyIsImJuZHNfMTIzIiwiYXJnXzE1NSIsImJuZHNfMTIzJDAiLCJhcmdfMTUzIiwiYm5kc18xMjMkMSIsImFyZ18xNTEiLCJibmRzXzEyMyQyIiwiYXJnXzE0OSIsImJuZHNfMTIzJDMiLCJhcmdfMTQ3IiwiYm5kc18xMjMkNCIsImFyZ18xNDUiLCJibmRzXzEyMyQ1IiwiYXJnXzE0MyIsImJuZHNfMTIzJDYiLCJhcmdfMTQxIiwiYm5kc18xMjMkNyIsImFyZ18xMzkiLCJibmRzXzEyMyQ4IiwiYXJnXzEzNyIsImJuZHNfMTIzJDkiLCJhcmdfMTM1IiwiYm5kc18xMjMkMTAiLCJhcmdfMTMzIiwiYm5kc18xMjMkMTEiLCJhcmdfMTMxIiwiYm5kc18xMjMkMTIiLCJhcmdfMTI5IiwiYm5kc18xMjMkMTMiLCJhcmdfMTI3IiwiYm5kc18xMjMkMTQiLCJhcmdfMTI1IiwiYm5kc18xMjMkMTUiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMkMCIsInN0YWNrX3NpemUkMCIsInRvcF9oZWFwX3dvcmRzJDAiLCJjb21wYWN0aW9ucyQwIiwiZnJhZ21lbnRzJDAiLCJsYXJnZXN0X2ZyZWUkMCIsImZyZWVfYmxvY2tzJDAiLCJmcmVlX3dvcmRzJDAiLCJsaXZlX2Jsb2NrcyQwIiwibGl2ZV93b3JkcyQwIiwiaGVhcF9jaHVua3MkMCIsImhlYXBfd29yZHMkMCIsIm1ham9yX2NvbGxlY3Rpb25zJDAiLCJtaW5vcl9jb2xsZWN0aW9ucyQwIiwibWFqb3Jfd29yZHMkMCIsInByb21vdGVkX3dvcmRzJDAiLCJtaW5vcl93b3JkcyQwIiwibWlub3Jfd29yZHNfZnVuIiwicHJvbW90ZWRfd29yZHNfZnVuIiwibWFqb3Jfd29yZHNfZnVuIiwibWlub3JfY29sbGVjdGlvbnNfZnVuIiwibWFqb3JfY29sbGVjdGlvbnNfZnVuIiwiaGVhcF93b3Jkc19mdW4iLCJoZWFwX2NodW5rc19mdW4iLCJsaXZlX3dvcmRzX2Z1biIsImxpdmVfYmxvY2tzX2Z1biIsImZyZWVfd29yZHNfZnVuIiwiZnJlZV9ibG9ja3NfZnVuIiwibGFyZ2VzdF9mcmVlX2Z1biIsImZyYWdtZW50c19mdW4iLCJjb21wYWN0aW9uc19mdW4iLCJ0b3BfaGVhcF93b3Jkc19mdW4iLCJzdGFja19zaXplX2Z1biIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc19mdW4iLCJtaW5vcl93b3Jkc19nZW4iLCJwcm9tb3RlZF93b3Jkc19nZW4iLCJtYWpvcl93b3Jkc19nZW4iLCJtaW5vcl9jb2xsZWN0aW9uc19nZW4iLCJtYWpvcl9jb2xsZWN0aW9uc19nZW4iLCJoZWFwX3dvcmRzX2dlbiIsImhlYXBfY2h1bmtzX2dlbiIsImxpdmVfd29yZHNfZ2VuIiwibGl2ZV9ibG9ja3NfZ2VuIiwiZnJlZV93b3Jkc19nZW4iLCJmcmVlX2Jsb2Nrc19nZW4iLCJsYXJnZXN0X2ZyZWVfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJmcmFnbWVudHNfZ2VuIiwiY29tcGlsZV9hY2MkMTMiLCJjb21wYWN0aW9uc19nZW4iLCJjb21waWxlX2FjYyQxNCIsInRvcF9oZWFwX3dvcmRzX2dlbiIsImNvbXBpbGVfYWNjJDE1Iiwic3RhY2tfc2l6ZV9nZW4iLCJjb21waWxlX2FjYyQxNiIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc19nZW4iLCJmbG9hdF9mIiwiaW50X2YiLCJhXzE1OCIsImJfMTU5IiwiY3VzdG9tX21pbm9yX21heF9zaXplXzE4MSIsImN1c3RvbV9taW5vcl9yYXRpb18xNzkiLCJjdXN0b21fbWFqb3JfcmF0aW9fMTc3Iiwid2luZG93X3NpemVfMTc1IiwiYWxsb2NhdGlvbl9wb2xpY3lfMTczIiwic3RhY2tfbGltaXRfMTcxIiwibWF4X292ZXJoZWFkXzE2OSIsInZlcmJvc2VfMTY3Iiwic3BhY2Vfb3ZlcmhlYWRfMTY1IiwibWFqb3JfaGVhcF9pbmNyZW1lbnRfMTYzIiwibWlub3JfaGVhcF9zaXplXzE2MSIsImFyZ18xODIiLCJibmRzXzE2MCIsImFyZ18xODAiLCJibmRzXzE2MCQwIiwiYXJnXzE3OCIsImJuZHNfMTYwJDEiLCJhcmdfMTc2IiwiYm5kc18xNjAkMiIsImFyZ18xNzQiLCJibmRzXzE2MCQzIiwiYXJnXzE3MiIsImJuZHNfMTYwJDQiLCJhcmdfMTcwIiwiYm5kc18xNjAkNSIsImFyZ18xNjgiLCJibmRzXzE2MCQ2IiwiYXJnXzE2NiIsImJuZHNfMTYwJDciLCJhcmdfMTY0IiwiYm5kc18xNjAkOCIsImFyZ18xNjIiLCJibmRzXzE2MCQ5IiwiY3VzdG9tX21pbm9yX21heF9zaXplJDAiLCJjdXN0b21fbWlub3JfcmF0aW8kMCIsImN1c3RvbV9tYWpvcl9yYXRpbyQwIiwid2luZG93X3NpemUkMCIsImFsbG9jYXRpb25fcG9saWN5JDAiLCJzdGFja19saW1pdCQwIiwibWF4X292ZXJoZWFkJDAiLCJ2ZXJib3NlJDAiLCJzcGFjZV9vdmVyaGVhZCQwIiwibWFqb3JfaGVhcF9pbmNyZW1lbnQkMCIsIm1pbm9yX2hlYXBfc2l6ZSQwIiwibWFrZV9jcmVhdG9yJDAiLCJtaW5vcl9oZWFwX3NpemVfZnVuIiwibWFqb3JfaGVhcF9pbmNyZW1lbnRfZnVuIiwic3BhY2Vfb3ZlcmhlYWRfZnVuIiwidmVyYm9zZV9mdW4iLCJtYXhfb3ZlcmhlYWRfZnVuIiwic3RhY2tfbGltaXRfZnVuIiwiYWxsb2NhdGlvbl9wb2xpY3lfZnVuIiwid2luZG93X3NpemVfZnVuIiwiY3VzdG9tX21ham9yX3JhdGlvX2Z1biIsImN1c3RvbV9taW5vcl9yYXRpb19mdW4iLCJjdXN0b21fbWlub3JfbWF4X3NpemVfZnVuIiwibWlub3JfaGVhcF9zaXplX2dlbiIsIm1ham9yX2hlYXBfaW5jcmVtZW50X2dlbiIsInNwYWNlX292ZXJoZWFkX2dlbiIsInZlcmJvc2VfZ2VuIiwibWF4X292ZXJoZWFkX2dlbiIsInN0YWNrX2xpbWl0X2dlbiIsImFsbG9jYXRpb25fcG9saWN5X2dlbiIsIndpbmRvd19zaXplX2dlbiIsImN1c3RvbV9tYWpvcl9yYXRpb19nZW4iLCJjdXN0b21fbWlub3JfcmF0aW9fZ2VuIiwiY3VzdG9tX21pbm9yX21heF9zaXplX2dlbiIsIm1hcF9wb2x5JDAiLCJmb2xkJDIiLCJmb3JfYWxsJDIiLCJleGlzdHMkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsImNvbXBhcmUkNyIsImVxdWFsJDUiLCJ0dW5lIiwibG9nZ2VyIiwib2xkX2NvbnRyb2xfcGFyYW1zIiwiZmllbGQiLCJvbGRfdmFsdWUiLCJuZXdfdmFsdWUiLCJuZXdfY29udHJvbF9wYXJhbXMiLCJkaXNhYmxlX2NvbXBhY3Rpb24iLCJwb2xpY3kiLCJzdGF0X3NpemVfbGF6eSIsInN0YXRfc2l6ZSIsImtlZXBfYWxpdmUiLCJvIiwiaXNfemVyb19hbGxvYyIsIm1pbm9yX3dvcmRzX2JlZm9yZSIsIm1ham9yX3dvcmRzX2JlZm9yZSIsIm1pbm9yX3dvcmRzX2FmdGVyIiwibWFqb3Jfd29yZHNfYWZ0ZXIiLCJtYWpvcl93b3Jkc19hbGxvY2F0ZWQiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWQiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWRfMTkwIiwibWFqb3Jfd29yZHNfYWxsb2NhdGVkXzE4OCIsImFyZ18xOTEiLCJibmRzXzE4NyIsImFyZ18xODkiLCJibmRzXzE4NyQwIiwibWVhc3VyZV9hbGxvY2F0aW9uIiwiYmFja3RyYWNlXzE5NyIsImlzX21ham9yXzE5NSIsInNpemVfaW5fd29yZHNfMTkzIiwiYXJnXzE5OCIsImJuZHNfMTkyIiwiYXJnXzE5NiIsImJuZHNfMTkyJDAiLCJhcmdfMTk0IiwiYm5kc18xOTIkMSIsIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIiwibG9nIiwibWFqb3JfYWxsb2NzIiwibWlub3JfYWxsb2NzIiwib25fYWxsb2MiLCJpc19tYWpvciIsImluZm8iLCJiYWNrdHJhY2UiLCJiYWNrdHJhY2UkMCIsImluZm8kMCIsInRyYWNrZXIiLCJhZGRfZmluYWxpemVyIiwiYWRkX2ZpbmFsaXplcl9leG4iLCJhZGRfZmluYWxpemVyX2xhc3QiLCJhZGRfZmluYWxpemVyX2xhc3RfZXhuIiwiZmluYWxpemVfcmVsZWFzZSIsInNleHBfb2ZfdCQ4IiwiZXhwZWN0IiwiZXhwZWN0JDAiLCJzZXhwXzAwNiIsImhhc2hfMDIxIiwieF8wMTkiLCJ4XzAxOCIsImhhc2hfMDIxJDAiLCJoYXNoXzAyMSQxIiwidG9fc2VyaWFsaXphYmxlIiwicG9ydCIsImhvc3QiLCJvZl9zZXJpYWxpemFibGUiLCJwb3J0JDAiLCJnb3QiLCJhXzAyNCIsImJfMDI1IiwiZ290JDAiLCJhXzAyNiIsImJfMDI3IiwiYV8wMjgiLCJiXzAyOSIsInR1cGxlIiwidHlwZV9pZCIsInRvX3N0YWJsZV9mb3JtYXQiLCJvZl9zdGFibGVfZm9ybWF0Iiwib2ZfcXVpY2tjaGVja2FibGUiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAwOCIsIm9mX2NhbWxfaW50IiwidG9fY2FtbF9pbnQiLCJzeXNfYmVoYXZpb3Jfb2Zfc2V4cCIsImF0b21fMDAyIiwiYXRvbV8wMDIkMCIsInN5c19iZWhhdmlvcl9vZl9zZXhwJDAiLCJzZXhwXzAwNyIsInNleHBfb2Zfc3lzX2JlaGF2aW9yIiwiYWJydCIsImFscm0iLCJidXMiLCJjaGxkIiwiY29udCIsImZwZSIsImh1cCIsImlsbCIsImtpbGwiLCJwaXBlIiwicG9sbCIsInByb2YiLCJxdWl0Iiwic2VndiIsInN5cyIsInRlcm0iLCJ0cmFwIiwidHN0cCIsInR0aW4iLCJ0dG91IiwidXJnIiwidXNyMSIsInVzcjIiLCJ2dGFscm0iLCJ4Y3B1IiwieGZzeiIsImtub3duIiwibmFtZV9hbmRfdmVyc2lvbl9ieV90IiwidF9ieV9uYW1lIiwiYmVoYXZpb3JfYnlfdCIsInN0YWJsZV92ZXJzaW9uIiwiYmVoYXZpb3IiLCJ0b19zdHJpbmdfd2l0aF92ZXJzaW9uIiwicmVxdWVzdGVkX3ZlcnNpb24iLCJuZWVkZWRfdmVyc2lvbiIsInNuIiwiZGVmYXVsdF9zeXNfYmVoYXZpb3IiLCJzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIiwic2lnbmFsIiwiZiQwIiwiaGFuZGxlIiwiaGFuZGxlX2RlZmF1bHQiLCJpZ25vcmUiLCJvZl9hXzAwOSIsIm9mX2FfMDEyIiwieF8wMTMiLCJvZl9mb3JtYXQiLCJ0b19mb3JtYXQiLCJzZXRfYXQiLCJzZXRfaW50ZXJuYWwiLCJzZXRfaWZfbm9uZSIsInNldF9leG4iLCJnZXRfZXhuIiwicHJpbnQiLCJjYXRjaCQwIiwicHJpbnRfYmFja3RyYWNlIiwiZ2V0X2JhY2t0cmFjZSIsInJlY29yZF9iYWNrdHJhY2UiLCJiYWNrdHJhY2Vfc3RhdHVzIiwiY2FwdHVyZSIsImdlbmVyYWwiLCJoYXNoYWJsZSQxIiwiY2FjaGVfc2l6ZV9ib3VuZCIsImNhY2hlIiwicmVhbGx5X2NhbGxfZiIsIm1heF9jYWNoZV9zaXplIiwiY2FjaGUkMCIsInJlY3Vyc2l2ZSIsImZfb25lc3RlcCIsIm1lbW9pemVkIiwib2ZfY29tcGFyYWJsZSIsInYkMSIsImluaXRpYWxfbGVuZ3RoIiwibmV2ZXJfc2hyaW5rIiwibmV2ZXJfc2hyaW5rJDAiLCJpbml0aWFsX2xlbmd0aCQwIiwiYXJyX2xlbmd0aCIsImFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90XyIsImFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZSIsImFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbSIsImFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcCIsImNoZWNrZWQiLCJhcHBhcmVudF9mcm9udF9pbmRleCIsImFwcGFyZW50X2JhY2tfaW5kZXgiLCJkaXIiLCJhcHBhcmVudF9mcm9udCIsImFwcGFyZW50X2JhY2siLCJhY3R1YWxfZnJvbnQiLCJhY3R1YWxfYmFjayIsImFwcGFyZW50X2kiLCJyZWFsX2kiLCJzdG9wX3BvcyIsImFwcGFyZW50X2kkMCIsInJlYWxfaSQwIiwicmVhbF9pJDEiLCJhcHBhcmVudF9pJDEiLCJhY2MkMSIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsIml0ZXJpX2ludGVybmFsIiwibmV3X2FyciIsIm9sZF9hcnIiLCJicmVha19wb3MiLCJtYXliZV9zaHJpbmtfdW5kZXJseWluZyIsImdyb3dfdW5kZXJseWluZyIsInBlZWtfZnJvbnRfbm9uZW1wdHkiLCJwZWVrX2JhY2tfbm9uZW1wdHkiLCJkZXF1ZXVlX2Zyb250X25vbmVtcHR5IiwiZGVxdWV1ZV9iYWNrX25vbmVtcHR5IiwiZHJvcF9nZW4iLCJhc3NlcnRfbm90X2VtcHR5IiwidHJ1ZV9pbmRleF9leG4iLCJpX2Zyb21femVybyIsInRydWVfaSIsImdldF9vcHQiLCJiYWNrX2luZGV4X2V4biIsImZyb250X2luZGV4X2V4biIsImdldCQwIiwidW50cmFuc2xhdGVkX2kiLCJlcHJpbnQiLCJlcHJpbnRzIiwiY2hlY2tfaW52YXJpYW50Iiwic2hvd19tZXNzYWdlcyIsImRlYnVnIiwic2V4cF9vZl9hcmciLCJzZXhwX29mX3Jlc3VsdCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwicmVzdWx0X29yX2V4biIsImFyZzFfMDEwIiwic2hvdWxkX3ByaW50X2JhY2t0cmFjZSIsImFtX2ludGVybmFsIiwibWVzc2FnZSQwIiwiYW1mIiwiYW1zIiwidW5peF9xdW90ZSIsInF1b3RlIiwiY29uY2F0X3F1b3RlZCIsInNwbGl0X2NvbW1hbmQiLCJzb3J0X2FuZF9hbGlnbiIsImFkZF91bml0IiwidW50aWxfZW1wdHkiLCJic3RyXzAwMiIsInBvc18wMDQiLCJsZW5fMDA2IiwiaW5pdF8wMDgiLCJhcmdfMDA5IiwiYm5kc18wMDEiLCJhcmdfMDA3IiwiYm5kc18wMDEkMCIsImFyZ18wMDUiLCJibmRzXzAwMSQxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDIiLCJyZXNpemUiLCJtaW5fbGVuIiwibmV3X2xlbiIsIm5ld19idWYiLCJpbnRlcm5hbCIsImNvbnRlbnRzX2J5dGVzIiwiYmlnX2NvbnRlbnRzIiwidm9sYXRpbGVfY29udGVudHMiLCJhZGRfY2hhciIsInJlc2V0IiwiYWRkX3N1YnN0cmluZyIsIm5ld19wb3MiLCJhZGRfc3ViYnl0ZXMiLCJhZGRfYmlnc3RyaW5nIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJidWZfZHN0IiwiYnVmX3NyYyIsImFkZF9iaW5fcHJvdCIsImFkZF9zdWJzdGl0dXRlIiwibGltIiwic3Vic3QiLCJwcmV2aW91cyIsImkkNCIsInByZXZpb3VzJDAiLCJpJDUiLCJwcmV2aW91cyQxIiwiaSQ2Iiwib3BlbmluZyIsImxpbSQxIiwiaSQyIiwiaSQzIiwibmV3X3N0YXJ0IiwiayQyIiwiY2xvc2luZyIsImxpbSQwIiwiaSQxIiwibmV4dF9pIiwiaWRlbnQiLCJpJDciLCJpJDgiLCJpJDkiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwiYnByaW50ZiQwIiwiZXJyb3Jfc291cmNlXzAxNyIsInZfaW5kZXgiLCJ2X21pbl9pbmRleCIsInZfbWF4X2luZGV4IiwiYXJnNV8wMDkiLCJhcmc0XzAwOCIsImFyZzNfMDA3IiwiYXJnMl8wMDYiLCJyZXMyXzAxMiIsInJlczNfMDEzIiwicmVzNF8wMTQiLCJyZXM1XzAxNSIsImFyZzVfMDIzIiwiYXJnNF8wMjIiLCJhcmczXzAyMSIsImFyZzJfMDIwIiwiYXJnMV8wMTkiLCJyZXM1XzAyOSIsIm9mIiwibGFiZWwiLCJjcmVhdGVfYWxsIiwibWF4X2luZGV4IiwibWluX2luZGV4IiwiemVyb19iYXNlZF9pbmRleCIsIm51bV9pbmRleGVzIiwiaG9zdF9hbmRfcG9ydCIsInBhcnNlJDAiLCJtYXBfYW5vbnMiLCJ0NCIsIm1heWJlX3dpdGhfZGVmYXVsdCIsIm1heWJlIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciIsIm1hcF9mbGFnIiwiZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlIiwiZXNjYXBlIiwibm9fYXJnX2Fib3J0Iiwibm9fYXJnX3JlcXVpcmVkIiwibm9fYXJnX3NvbWUiLCJub19hcmdfcmVnaXN0ZXIiLCJub19hcmciLCJvbmVfb3JfbW9yZV9hc19saXN0Iiwib25lX29yX21vcmVfYXNfcGFpciIsImxpc3RlZCIsIm9wdGlvbmFsX3dpdGhfZGVmYXVsdCIsInJlcXVpcmVkIiwib3B0aW9uYWxfdG9fcmVxdWlyZWQiLCJhcmdfbmFtZXMiLCJhbmRfYXJnX25hbWUiLCJhbmRfYXJnX25hbWVzIiwiY2hvb3NlX29uZV9ub25fb3B0aW9uYWwiLCJjaG9vc2Vfb25lIiwiZXNjYXBlX2Fub24iLCJhbm9uIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwiZmxhZyIsImhlbHAiLCJtYXAzIiwiYm90aCIsInBlcmNlbnQkMCIsImhvc3RfYW5kX3BvcnQkMCIsIm9mX3BhcmFtIiwidG9fcGFyYW0iLCJtYXBfYW5vbnMkMCIsInQ0JDAiLCJ0MyQwIiwibWF5YmVfd2l0aF9kZWZhdWx0JDAiLCJtYXliZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QkMCIsIm5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyJDAiLCJzZXF1ZW5jZSQwIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJtYXBfZmxhZyQwIiwiZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlJDAiLCJlc2NhcGUkMCIsIm5vX2FyZ19hYm9ydCQwIiwibm9fYXJnX3JlcXVpcmVkJDAiLCJub19hcmdfc29tZSQwIiwibm9fYXJnX3JlZ2lzdGVyJDAiLCJub19hcmckMCIsIm9uZV9vcl9tb3JlX2FzX2xpc3QkMCIsIm9uZV9vcl9tb3JlX2FzX3BhaXIkMCIsImxpc3RlZCQwIiwib3B0aW9uYWxfd2l0aF9kZWZhdWx0JDAiLCJvcHRpb25hbCQwIiwicmVxdWlyZWQkMCIsIndyYXAiLCJwYWlyIiwiYXJnX25hbWVzJDAiLCJhbmRfYXJnX25hbWUkMCIsImFuZF9hcmdfbmFtZXMkMCIsImNob29zZV9vbmVfbm9uX29wdGlvbmFsJDAiLCJjaG9vc2Vfb25lJDAiLCJlc2NhcGVfYW5vbiQwIiwiYW5vbiQwIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jJDAiLCJmbGFnJDAiLCJwYXRoJDAiLCJoZWxwJDAiLCJhbGxfdW5pdCQwIiwiYWxsJDAiLCJtYXAzJDAiLCJhcHBseSQwIiwic3ltYm9sX21hcCQwIiwiYm90aCQwIiwicmV0dXJuJDEiLCJwZXJjZW50JDEiLCJob3N0X2FuZF9wb3J0JDEiLCJkb2VzX3JhaXNlIiwidl9kb2MiLCJ2X2FsaWFzZXMiLCJ2X3N1bW1hcnkiLCJ2X3JlYWRtZSIsInZfYW5vbnMiLCJ2X2ZsYWdzIiwiYmluX3NoYXBlX2EiLCJ2X3N1YmNvbW1hbmRzIiwidl93b3JraW5nX2RpciIsInZfcGF0aF90b19leGUiLCJ2X2NoaWxkX3N1YmNvbW1hbmQiLCJlcnJvcl9zb3VyY2VfMDAzIiwidF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX3QiLCJlcXVhbCIsInhfMDA3IiwieF8wMDgiLCJzb3VyY2UiLCJ0IiwibmV4dF9wb3MiLCJpc19uZXh0X2VvZiIsIm5leHRfY2hhciIsInJlc2V0IiwicGFyYW0iLCJjb25zdW1lXzEiLCJvbmVfY2hhcl90b2tlbiIsInRvayIsImVycm9yIiwiYWNjZXB0IiwiZiIsImFjY2VwdF9jaGFyIiwiY2giLCJhY2NlcHRfc3RyaW5nIiwic3RyIiwicG9zIiwic3RyX2xlbiIsImV4cGVjdCIsImV4cGVjdF9jaGFyIiwibWFueSIsIm1hbnkxIiwicGx1c19vcl9taW51cyIsIm5tc3RhcnQiLCJubWNoYXIiLCJpZGVudCIsImlkZW50X29yX2Z1bmN0aW9uIiwiaXNfd2hpdGVzcGFjZSIsInN0YXJ0X2lkZW50IiwicHJlZml4IiwiY3VyIiwiYiIsIm5ld19vZmYiLCJxdW90ZSIsIm0iLCJjIiwibWFyayIsIm5leHQiLCJjcmVhdGUiLCJzIiwic2xpY2UiLCJjdXJyZW50IiwiY3VycmVudF90ZXh0IiwibGVuIiwidGVzdCIsImFjYyIsInN0YXJ0IiwiYWNjJDAiLCJ4XzAxNyIsImFyZzJfMDEzIiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJyZXMyXzAxNiIsInZhbHVlIiwiY3QiLCJza2lwX3doaXRlX3NwYWNlIiwiZXhwZWN0ZWQiLCJnb3QiLCJhbnkiLCJyZXMiLCJleHBlY3RfYW55IiwidmFsdWUwIiwiZXhwZWN0X3ZhbHVlIiwiZGVjbGFyYXRpb24iLCJpZGVudF9sZW4iLCJpZGVudF9zdGFydCIsInZhbHVlX3N0YXJ0IiwibmV4dF90b2tlbl9zdGFydCIsImV4cGVjdF9kZWNsYXJhdGlvbiIsImZpZWxkIiwiZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QiLCJhZGQiLCJrdiIsInYiLCJrIiwicGFyc2UiLCJwYXJzZXJfZiIsInZhbGlkYXRlX3ZhbHVlIiwicGFyc2VfZGVjbGFyYXRpb25fbGlzdCIsInRlc3RfcGFyc2VyIiwicCIsInNleHBfb2ZfYXJnIiwiciIsImN1c3RvbV9wcmludGZfMDAyIiwieF8wMDMiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsImFyZzFfMDA5IiwiYXJnMF8wMDgiLCJyZXMwXzAxMCIsInJlczFfMDExIiwieF8wMTYiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwidiQzIiwidiQ0IiwidiQ1IiwidiQwIiwidiQxIiwidiQyIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDI5IiwiZXJyb3Jfc291cmNlXzAzMyIsImVycm9yX3NvdXJjZV8wNDkiLCJlcnJvcl9zb3VyY2VfMDcyIiwiZXJyb3Jfc291cmNlXzA4NiIsImVycm9yX3NvdXJjZV8xMTkiLCJlcnJvcl9zb3VyY2VfMTUxIiwiZXJyb3Jfc291cmNlXzE5OSIsImVycm9yX3NvdXJjZV8yMDEiLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwieF8wMTMiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsImNvbXBhcmUiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsInRfMDE5IiwidF8wMTgiLCJ0XzAyMSIsInRfMDIwIiwibiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJiaW5fc2l6ZV90IiwidjIiLCJ2MSIsInNpemUiLCJiaW5fd3JpdGVfdCIsImJ1ZiIsInBvcyQwIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRfdCIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwIiwic2V4cF8wMjUiLCJhdG9tXzAyMyIsImF0b21fMDIzJDAiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwJDAiLCJzZXhwXzAyOCIsInNleHBfb2ZfY3NzX2dsb2JhbF92YWx1ZXMiLCJncm91cCQwIiwiYmluX3NoYXBlX2Nzc19nbG9iYWxfdmFsdWVzIiwiY29tcGFyZV9jc3NfZ2xvYmFsX3ZhbHVlcyIsImFfMDMwIiwiYl8wMzEiLCJmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCIsImRpZ2l0cyIsImYycyIsInRfb2Zfc2V4cCQwIiwieF8wMzQiLCJhIiwiZyIsInNleHBfb2ZfdCQwIiwiYV8wNDIiLCJiXzA0MCIsImdfMDM4Iiwicl8wMzYiLCJhcmdfMDQzIiwiYm5kc18wMzUiLCJhcmdfMDQxIiwiYm5kc18wMzUkMCIsImFyZ18wMzkiLCJibmRzXzAzNSQxIiwiYXJnXzAzNyIsImJuZHNfMDM1JDIiLCJncm91cCQxIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsInY0IiwidjMiLCJzaXplJDAiLCJzaXplJDEiLCJiaW5fd3JpdGVfdCQwIiwicG9zJDEiLCJwb3MkMiIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwidl9yIiwidl9nIiwidl9iIiwidl9hIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wNDQiLCJiXzA0NSIsIm4kMCIsIm4kMSIsImFfMDQ2IiwiYl8wNDciLCJ0X29mX3NleHAkMSIsInhfMDUwIiwibCIsImgiLCJzZXhwX29mX3QkMSIsImFfMDU4IiwibF8wNTYiLCJzXzA1NCIsImhfMDUyIiwiYXJnXzA1OSIsImJuZHNfMDUxIiwiYXJnXzA1NyIsImJuZHNfMDUxJDAiLCJhcmdfMDU1IiwiYm5kc18wNTEkMSIsImFyZ18wNTMiLCJibmRzXzA1MSQyIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJiaW5fd3JpdGVfdCQxIiwiYmluX3dyaXRlcl90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJ2X2giLCJ2X3MiLCJ2X2wiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl90JDEiLCJjb21wYXJlJDEiLCJhXzA2MCIsImJfMDYxIiwiYV8wNjIiLCJiXzA2MyIsImNyZWF0ZSQwIiwidF9vZl9zZXhwJDIiLCJzZXhwXzA2NyIsImF0b21fMDY1Iiwic2V4cF9hcmdzXzA2OCIsImF0b21fMDY1JDAiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwiYXJnMF8wNzQiLCJyZXMwXzA3NSIsImFyZzBfMDc3IiwicmVzMF8wNzgiLCJhcmcwXzA3MCIsInJlczBfMDcxIiwiYXJnMF8wODMiLCJyZXMwXzA4NCIsInRfb2Zfc2V4cCQzIiwic2V4cF8wODUiLCJzZXhwX29mX3QkMiIsInZfMDkyIiwidl8wOTEiLCJ2XzA4NyIsInZfMDg5Iiwidl8wODgiLCJ2XzA5MCIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJhcmdzJDIiLCJzaXplX2FyZ3MkMiIsImFyZ3MkMyIsInNpemVfYXJncyQzIiwiYmluX3dyaXRlX3QkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMDkzIiwiYl8wOTQiLCJyaWdodF8xMDQiLCJsZWZ0XzEwMyIsInJpZ2h0XzA5NiIsImxlZnRfMDk1IiwicmlnaHRfMTAwIiwibGVmdF8wOTkiLCJyaWdodF8wOTgiLCJsZWZ0XzA5NyIsInJpZ2h0XzEwMiIsImxlZnRfMTAxIiwidG9fc3RyaW5nX2NzcyIsInZhciQwIiwibmFtZSIsImhleCIsImEkMCIsInAkMCIsImdyb3VwJDQiLCJ0X29mX3NleHAkNCIsInNleHBfMTE0IiwiYXRvbV8xMTIiLCJzZXhwX2FyZ3NfMTE1IiwiYXRvbV8xMTIkMCIsImFyZzBfMTI3IiwicmVzMF8xMjgiLCJhcmcwXzEyNCIsInJlczBfMTI1IiwiYXJnMF8xNDgiLCJyZXMwXzE0OSIsImFyZzBfMTQyIiwicmVzMF8xNDMiLCJhcmcwXzEyMSIsInJlczBfMTIyIiwiYXJnMF8xMTciLCJyZXMwXzExOCIsImFyZzBfMTQ1IiwicmVzMF8xNDYiLCJhcmcwXzEzOSIsInJlczBfMTQwIiwiYXJnMF8xMzYiLCJyZXMwXzEzNyIsImFyZzBfMTMzIiwicmVzMF8xMzQiLCJhcmcwXzEzMCIsInJlczBfMTMxIiwidF9vZl9zZXhwJDUiLCJzZXhwXzE1MCIsInNleHBfb2ZfdCQzIiwidl8xNjMiLCJ2XzE2MSIsInZfMTU5Iiwidl8xNTYiLCJ2XzE1NCIsInZfMTUyIiwidl8xNjIiLCJ2XzE2MCIsInZfMTU4Iiwidl8xNTUiLCJ2XzE1MyIsInZfMTU3IiwiZ3JvdXAkNSIsImJpbl9zaGFwZV90JDMiLCJjb21wYXJlJDMiLCJhXzE2NCIsImJfMTY1IiwicmlnaHRfMTc1IiwibGVmdF8xNzQiLCJyaWdodF8xNzEiLCJsZWZ0XzE3MCIsInJpZ2h0XzE2NyIsImxlZnRfMTY2IiwicmlnaHRfMTg3IiwibGVmdF8xODYiLCJyaWdodF8xODUiLCJsZWZ0XzE4NCIsInJpZ2h0XzE4MSIsImxlZnRfMTgwIiwicmlnaHRfMTgzIiwibGVmdF8xODIiLCJyaWdodF8xNzkiLCJsZWZ0XzE3OCIsInJpZ2h0XzE3MyIsImxlZnRfMTcyIiwicmlnaHRfMTY5IiwibGVmdF8xNjgiLCJyaWdodF8xNzciLCJsZWZ0XzE3NiIsInRvX3N0cmluZ19jc3MkMCIsImkiLCJmJDAiLCJmJDEiLCJwJDEiLCJpJDAiLCJwJDIiLCJwZXJjZW50MTAwIiwiZ3JvdXAkNiIsImNvbXBhcmUkNCIsImFfMTkwIiwiYl8xOTEiLCJ0X29mX3NleHAkNiIsInNleHBfMTk3IiwiYXRvbV8xOTUiLCJhdG9tXzE5NSQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzIwMCIsInNleHBfb2ZfdCQ0Iiwidl8yMDIiLCJ0b19zdHJpbmdfY3NzJDEiLCJ2YWx1ZV9tYXAiLCJvIiwiY29tYmluZSIsInQxIiwidDIiLCJjb25jYXQiLCJ0b19zdHJpbmdfbGlzdCIsInRvX3N0cmluZ19jc3MkMiIsIm9mX3N0cmluZ19jc3NfZXhuIiwiY3JlYXRlX3JhdyIsInNob3VsZF92YWxpZGF0ZSIsImNyZWF0ZSQxIiwiZW1wdHkiLCJpc19lbXB0eSIsImNyZWF0ZV9wbGFjZW1lbnQiLCJsZW5ndGgiLCJsZWZ0IiwidG9wIiwiYm90dG9tIiwicmlnaHQiLCJwb3NpdGlvbiIsInRwIiwiYnQiLCJsdCIsInJ0IiwiY29udmVydCIsIm9wdF9sIiwiYm94X3NpemluZyIsImRpc3BsYXkiLCJ2aXNpYmlsaXR5IiwibWFrZV9vdmVyZmxvdyIsIm92ZXJmbG93Iiwib3ZlcmZsb3dfeCIsIm92ZXJmbG93X3kiLCJ6X2luZGV4Iiwib3BhY2l0eSIsImNyZWF0ZV9sZW5ndGhfZmllbGQiLCJ3aGl0ZV9zcGFjZSIsImZvbnRfc2l6ZSIsImZvbnRfZmFtaWx5IiwiZm9udF9zdHlsZSIsImZvbnRfd2VpZ2h0IiwiYm9sZCIsImZvbnRfdmFyaWFudCIsImZvbnQiLCJmYW1pbHkiLCJzdHlsZSIsIndlaWdodCIsInZhcmlhbnQiLCJjcmVhdGVfd2l0aF9jb2xvciIsImNvbG9yIiwiYmFja2dyb3VuZF9jb2xvciIsImZpbGwiLCJzdG9wc190b19zdHJpbmciLCJzdG9wcyIsInBjdCIsImJhY2tncm91bmRfaW1hZ2UiLCJzcGVjIiwidXJsIiwic3RvcHMkMCIsImRpcmVjdGlvbiIsImNyZWF0ZV9hbGlnbm1lbnQiLCJ0ZXh0X2FsaWduIiwiaG9yaXpvbnRhbF9hbGlnbiIsInZlcnRpY2FsX2FsaWduIiwiZmxvYXQkMCIsImxpbmVfaGVpZ2h0Iiwid2lkdGgiLCJtaW5fd2lkdGgiLCJtYXhfd2lkdGgiLCJoZWlnaHQiLCJtaW5faGVpZ2h0IiwibWF4X2hlaWdodCIsInBhZGRpbmdfdG9wIiwicGFkZGluZ19ib3R0b20iLCJwYWRkaW5nX2xlZnQiLCJwYWRkaW5nX3JpZ2h0IiwicGFkZGluZyIsInVuaWZvcm1fcGFkZGluZyIsIm1hcmdpbl90b3AiLCJtYXJnaW5fYm90dG9tIiwibWFyZ2luX2xlZnQiLCJtYXJnaW5fcmlnaHQiLCJtYXJnaW4iLCJ1bmlmb3JtX21hcmdpbiIsInJvd19nYXAiLCJjb2x1bW5fZ2FwIiwiY29uY2F0MnYiLCJjb25jYXQzdiIsImJvcmRlcl92YWx1ZSIsInN0eWxlJDAiLCJ3aWR0aCQwIiwiY29sb3IkMCIsImNyZWF0ZV9ib3JkZXIiLCJzaWRlIiwiYm9yZGVyX3RvcCIsImJvcmRlcl9ib3R0b20iLCJib3JkZXJfbGVmdCIsImJvcmRlcl9yaWdodCIsImJvcmRlciIsIm91dGxpbmUiLCJib3JkZXJfY29sbGFwc2UiLCJib3JkZXJfc3BhY2luZyIsImJvcmRlcl9yYWRpdXMiLCJ0ZXh0X2RlY29yYXRpb24iLCJsaW5lIiwibGluZSQwIiwiaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyIsImZsZXhfY29udGFpbmVyIiwiYWxpZ25faXRlbXMiLCJhbGlnbl9jb250ZW50IiwianVzdGlmeV9jb250ZW50IiwicmciLCJjZyIsImlubGluZSIsIndyYXAiLCJkaXJlY3Rpb24kMCIsIndyYXAkMCIsImFsaWduX2l0ZW1zJDAiLCJhbGlnbl9jb250ZW50JDAiLCJhJDEiLCJqdXN0aWZ5X2NvbnRlbnQkMCIsInJvd19nYXAkMCIsImNvbHVtbl9nYXAkMCIsImZsZXhfaXRlbSIsIm9yZGVyIiwiZ3JvdyIsImJhc2lzIiwic2hyaW5rIiwib3JkZXIkMCIsImJhc2lzJDAiLCJmbGV4IiwiYWxpZ25fc2VsZiIsInJlc2l6ZSIsInZhbHVlJDAiLCJhbmltYXRpb24iLCJkdXJhdGlvbiIsImRlbGF5IiwiZmlsbF9tb2RlIiwiaXRlcl9jb3VudCIsInRpbWluZ19mdW5jdGlvbiIsInNwYW5fdG9fc3RyaW5nIiwiZCIsImZpbGxfbW9kZSQwIiwidXNlcl9zZWxlY3QiLCJjc3MiLCJzMiIsIngiLCJ0b19qc19zdHJpbmciLCJ0b19qc19zdHJpbmdfZml4ZWQiLCJ0b19qc19zdHJpbmdfcHJlY2lzaW9uIiwidG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIiwidG9fc3RyaW5nIiwidG9fc3RyaW5nX2ZpeGVkIiwidG9fc3RyaW5nX3ByZWNpc2lvbiIsInRvX3N0cmluZ19leHBvbmVudGlhbCIsInByaW50IiwiZiIsInZpc2liaWxpdHlfaGFuZGxlcnMiLCJzZXF1ZW5jZV9hc19zaWJsaW5nIiwibGVmdCIsInVubGVzc19zdG9wcGVkIiwiY29udGFpbnNfc3RvcCIsImVzIiwiY3VycmVudF9kb21fZXZlbnQiLCJoYW5kbGVfbm9uX2RvbV9ldmVudF9leG4iLCJoYW5kbGUiLCJkb21fZXZlbnQiLCJldmVudCIsIm9sZCIsInNleHBfb2ZfdCIsInZhbHVlIiwidHlwZV9pZCIsImdlbmVyaWNfaG9vayIsInBhY2siLCJpZCIsImRlc3Ryb3kiLCJ1cGRhdGUiLCJpbml0IiwiaW5wdXRfaWQiLCJpbnB1dCIsImEiLCJpbml0JDAiLCJhJDAiLCJ1cGRhdGUkMCIsImRlc3Ryb3kkMCIsImdlbmVyaWNfaG9vayQwIiwiZXh0cmEiLCJjb21iaW5lIiwicmlnaHQiLCJpbnB1dF9hbmRfc3RhdGVfaWQiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImVsZW1lbnQiLCJzdGF0ZSIsImFuaW1hdGlvbl9pZCIsIm9sZF9pbnB1dCIsImNyZWF0ZSIsImNvbWJpbmVfaW5wdXRzIiwic2V0IiwiZ2V0IiwiZGVsZXRlJDAiLCJzZXRfcHJvcF9hc2NpaSIsInQiLCJuYW1lIiwiZ2V0X3Byb3BfYXNjaWkiLCJoYXNfcHJvcGVydHkiLCJzZXRfcHJvcGVydHkiLCJoYXNfYXR0cmlidXRlIiwic2V0X2F0dHJpYnV0ZSIsInRvX2RvbSIsIm5vZGUiLCJ0YWciLCJhdHRycyIsImNoaWxkcmVuIiwia2V5Iiwia2V5JDAiLCJzdmciLCJ0ZXh0IiwicyIsInBhdGNoIiwiY3JlYXRlJDAiLCJwcmV2aW91cyIsImN1cnJlbnQiLCJpc19lbXB0eSIsImZfaWQiLCJpZF9zZXhwIiwiY3JlYXRlJDEiLCJ2ZG9tX2Zvcl90ZXN0aW5nIiwiZWx0IiwiZG9tX25vZGUiLCJzMCIsInByZXZfc3RhdGUiLCJkb21fbm9kZSQwIiwibmFtZSQyIiwibmFtZSQxIiwibmFtZSQwIiwiZW1wdHkiLCJyaGFuZGxlciIsInhfMDAyIiwibGhhbmRsZXIiLCJ4XzAwMSIsImNyZWF0ZV9mbG9hdCIsInByb3BlcnR5Iiwic3RyaW5nX3Byb3BlcnR5IiwiYm9vbF9wcm9wZXJ0eSIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzIiwiY3JlYXRlX2hvb2siLCJob29rIiwibWFueSIsIm1hbnlfd2l0aG91dF9tZXJnZSIsImNvbWJpbmUkMCIsIndhcm5pbmdfY291bnQiLCJ3YXJuX3MiLCJxdW90YSIsIndhcm5pbmdfY291bnQkMCIsInJlc2V0X3dhcm5pbmdfY291bnQiLCJjb21iaW5pbmdfbWFwX2FkZCIsIm1hcCIsImV4aXN0aW5nX3ZhbHVlIiwiZW1wdHlfbWVyZ2UiLCJzdHlsZSIsImNzcyIsImNsYXNzJDAiLCJjbGFzc25hbWUiLCJjbGFzc2VzIiwiY2xhc3NlcyQwIiwiY2xhc3NuYW1lcyIsImhyZWYiLCJyIiwibGFiZWwiLCJ0YXJnZXQiLCJjaGVja2VkIiwic2VsZWN0ZWQiLCJoaWRkZW4iLCJyZWFkb25seSIsImRpc2FibGVkIiwicGxhY2Vob2xkZXIiLCJ4IiwiYXV0b2ZvY3VzIiwiZm9yJDAiLCJ0eXBlIiwidmFsdWVfcHJvcCIsInRhYmluZGV4IiwidGl0bGUiLCJhbHQiLCJzcmMiLCJvcGVuIiwic3RhcnQiLCJtaW4iLCJtYXgiLCJtaW5fZGF0ZSIsIm1heF9kYXRlIiwibWluX2RhdGVfdGltZSIsIm1heF9kYXRlX3RpbWUiLCJjb2xzcGFuIiwicm93c3BhbiIsImRyYWdnYWJsZSIsImIiLCJmb2N1cyIsIm1vdXNlIiwia2V5Ym9hcmQiLCJzdWJtaXQiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJjbGlwYm9hcmQiLCJkcmFnIiwicG9pbnRlciIsImFuaW1hdGlvbiIsIm9uIiwiaGFuZGxlciIsIm9uX2ZvY3VzIiwib25fYmx1ciIsIm9uX2NsaWNrIiwib25fY29udGV4dG1lbnUiLCJvbl9kb3VibGVfY2xpY2siLCJvbl9kcmFnIiwib25fZHJhZ3N0YXJ0Iiwib25fZHJhZ2VuZCIsIm9uX2RyYWdlbnRlciIsIm9uX2RyYWdsZWF2ZSIsIm9uX2RyYWdvdmVyIiwib25fZHJvcCIsIm9uX21vdXNlbW92ZSIsIm9uX21vdXNldXAiLCJvbl9tb3VzZWRvd24iLCJvbl9tb3VzZWVudGVyIiwib25fbW91c2VsZWF2ZSIsIm9uX21vdXNlb3ZlciIsIm9uX21vdXNlb3V0Iiwib25fa2V5dXAiLCJvbl9rZXlwcmVzcyIsIm9uX2tleWRvd24iLCJvbl9zY3JvbGwiLCJvbl9sb2FkIiwib25fc3VibWl0Iiwib25fcG9pbnRlcmRvd24iLCJvbl9wb2ludGVydXAiLCJvbl9tb3VzZXdoZWVsIiwib25fd2hlZWwiLCJvbl9jb3B5Iiwib25fY3V0Iiwib25fcGFzdGUiLCJvbl9yZXNldCIsIm9uX2FuaW1hdGlvbmVuZCIsImNvbnN0X2lnbm9yZSIsInJ1bl9jb2VyY2lvbiIsImNvZXJjaW9uIiwicHJldiIsIm9uX2lucHV0X2V2ZW50Iiwib25fY2hhbmdlIiwib25faW5wdXQiLCJ0b19yYXciLCJhdHRyIiwiYXR0cnNfb2JqIiwidGFrZV9zZWNvbmRfc3R5bGVzIiwiZmlyc3QiLCJzZWNvbmQiLCJ0YWtlX3NlY29uZF9jbGFzc2VzIiwiZmlyc3QkMCIsImFfMDAzIiwiYl8wMDQiLCJzZWNvbmQkMCIsImFfMDA1IiwiYl8wMDYiLCJ0YWtlX3NlY29uZF9oYW5kbGVyIiwidGFrZV9zZWNvbmRfaG9vayIsIm1lcmdlIiwiY29tYmluZV9ob29rIiwiY29tYmluZV9oYW5kbGVyIiwiY29tYmluZV9zdHlsZXMiLCJjb21iaW5lX2NsYXNzZXMiLCJhY2MiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzJDAiLCJuZXdfc3R5bGVzIiwibmV3X2NsYXNzZXMiLCJzdWJfbWVyZ2UiLCJtYXBfY2xhc3NlcyIsIm1hcF9zdHlsZXMiLCJhdHRycyQwIiwic3ViX21lcmdlJDAiLCJhdHRycyQxIiwic3ViX21lcmdlJDEiLCJtZXJnZSQwIiwiZSIsInByb3BzIiwib2JqIiwidiIsImsiLCJvbl9maWxlX2lucHV0IiwiZmlsZXMiLCJjb21iaW5lJDEiLCJvbl9tb3VudCIsIm1hcF9zdHlsZSIsImFkZF9jbGFzcyIsImMiLCJjcyIsImFkZF9zdHlsZSIsInNzIiwibWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIiwic2V4cF9vZl90JDAiLCJ4XzAxMyIsImFyZzFfMDEwIiwiYXJnMF8wMDkiLCJyZXMwXzAxMSIsInJlczFfMDEyIiwiY29tYmluZSQyIiwib25fbW91bnQkMCIsIm5ld19pbnB1dCIsImFfMDE2IiwiYl8wMTciLCJ0XzAxOSIsInRfMDE4IiwidF8wMjEiLCJ0XzAyMCIsImNzc192YXJzX25vX2tlYmFicyIsImFsaXN0IiwiY3NzX3ZhciIsImZpbHRlcl9ieV9raW5kIiwiY29udGFpbnNfbmFtZSIsImxvb2tpbmdfZm9yIiwiaGFzX2JlZW5fdXNlZCIsImFmdGVyIiwiZyIsImV2IiwibmV3X3N0YXRlIiwiZXZlbnRfa2luZCIsImV2ZW50X2tpbmQkMCIsImV2ZW50X2tpbmQkMSIsImV2ZW50X2tpbmQkMiIsImV2ZW50X2tpbmQkMyIsImV2ZW50X2tpbmQkNCIsImV2ZW50X2tpbmQkNSIsIm1vdXNldXAiLCJtb3VzZW1vdmUiLCJjbGljayIsImNvbnRleHRtZW51Iiwia2V5ZG93biIsImJlZm9yZXVubG9hZCIsImYkMCIsInZpc2liaWxpdHljaGFuZ2UiLCJtb3VzZXVwX3R5cGVfaWQiLCJtb3VzZW1vdmVfdHlwZV9pZCIsImtleWRvd25fdHlwZV9pZCIsImNsaWNrX3R5cGVfaWQiLCJjb250ZXh0bWVudV90eXBlX2lkIiwidmlzaWJpbGl0eWNoYW5nZV90eXBlX2lkIiwiYmVmb3JldW5sb2FkX3R5cGVfaWQiLCJ2ZG9tX3RodW5rIiwiYXJnIiwia2V5JDEiLCJyZXMxXzAwOSIsIndpdGhfa2V5IiwibWFwX2F0dHJzIiwicmF3X2F0dHJzIiwiYWRkX2NsYXNzZXMiLCJ0X3RvX2pzIiwidyIsInRfdG9fanNfbGF6eSIsImtpbmQiLCJvdGhlciIsImxhenkiLCJlbGVtZW50X2V4cGVydCIsIndpZGdldCIsInZkb21fZm9yX3Rlc3RpbmckMCIsImNyZWF0ZV9jaGlsZGxlc3MiLCJjcmVhdGVfc3ZnIiwidGV4dGYiLCJmb3JtYXQiLCJ3aWRnZXRfb2ZfbW9kdWxlIiwibSIsImFyZzBfMDA2Iiwic3RhdGVfMDA0IiwiaW5wdXRfMDAyIiwiYXJnXzAwNSIsImJuZHNfMDAxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDAiLCJyZXMwXzAwOCIsInByZXZfaW5wdXQiLCJlbGVtZW50JDAiLCJzdGF0ZSQwIiwiaSIsIndpZGdldCQwIiwiY29udGVudCIsIm92ZXJyaWRlX3Zkb21fZm9yX3Rlc3RpbmciLCJwcmV2X2F0dHIiLCJwcmV2X3RhZyIsInByZXZfY29udGVudCIsImlubmVyX2h0bWxfc3ZnIiwiaW5uZXJfaHRtbCIsImFiYnIiLCJib2R5IiwiYnV0dG9uIiwiY29kZSIsImRhdGFsaXN0IiwiZGV0YWlscyIsImRpdiIsIm1haW4iLCJmaWVsZHNldCIsImxlZ2VuZCIsImZvb3RlciIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWRlciIsImh0bWwiLCJpbWciLCJpbnB1dF9kZXByZWNhdGVkIiwidGV4dGFyZWEiLCJzZWxlY3QiLCJvcHRncm91cCIsIm9wdGlvbiIsImxpIiwicCIsInByZSIsInNlY3Rpb24iLCJzcGFuIiwic3Ryb25nIiwiZW0iLCJibG9ja3F1b3RlIiwic3VtbWFyeSIsImlmcmFtZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRoIiwidGhlYWQiLCJ0ciIsInVsIiwib2wiLCJiciIsImhyIiwiZGwiLCJkdCIsImRkIiwic2V4cF9mb3JfZGVidWdnaW5nIiwiaW5kZW50Iiwic2V4cCIsImFwcGx5IiwiY3JlYXRlJDIiLCJjcmVhdGVfc3ZnJDAiLCJoZXJlIiwiZXJyb3Jfc291cmNlXzAwNCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInZhbGlkYXRlIiwidCIsImVxdWFsIiwidDEiLCJ0MiIsInRfb2Zfc2V4cCQxIiwic2V4cF8wMDYiLCJ0YWdfMDA3Iiwic2V4cF9hcmdzXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJzZXhwX29mX3QkMSIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJ0MSIsInQyIiwidDMiLCJ0NCIsInQ1IiwidDYiLCJ0NyIsInQ4IiwidDkiLCJ0MTAiLCJ0MTEiLCJ0MTIiLCJ0MTMiLCJ0MTQiLCJzZXhwX29mX3QiLCJ2XzAwNiIsInNsb3RzX3Blcl90dXBsZV8wMDIiLCJhcmdfMDAzIiwiYm5kc18wMDEiLCJzZXhwX29mX3QkMCIsIm9mX3R1cGxlXzAwNyIsIm9mX3ZhcmlhbnRfMDA4Iiwic2xvdHNfcGVyX3R1cGxlIiwibiIsInNleHBfb2ZfdDEiLCJvZl9hMF8wMDkiLCJzZXhwX29mX3QyIiwib2ZfYTBfMDEwIiwib2ZfYTFfMDExIiwic2V4cF9vZl90MyIsIm9mX2EwXzAxMiIsIm9mX2ExXzAxMyIsIm9mX2EyXzAxNCIsInNleHBfb2ZfdDQiLCJvZl9hMF8wMTUiLCJvZl9hMV8wMTYiLCJvZl9hMl8wMTciLCJvZl9hM18wMTgiLCJzZXhwX29mX3Q1Iiwib2ZfYTBfMDE5Iiwib2ZfYTFfMDIwIiwib2ZfYTJfMDIxIiwib2ZfYTNfMDIyIiwib2ZfYTRfMDIzIiwic2V4cF9vZl90NiIsIm9mX2EwXzAyNCIsIm9mX2ExXzAyNSIsIm9mX2EyXzAyNiIsIm9mX2EzXzAyNyIsIm9mX2E0XzAyOCIsIm9mX2E1XzAyOSIsInNleHBfb2ZfdDciLCJvZl9hMF8wMzAiLCJvZl9hMV8wMzEiLCJvZl9hMl8wMzIiLCJvZl9hM18wMzMiLCJvZl9hNF8wMzQiLCJvZl9hNV8wMzUiLCJvZl9hNl8wMzYiLCJzZXhwX29mX3Q4Iiwib2ZfYTBfMDM3Iiwib2ZfYTFfMDM4Iiwib2ZfYTJfMDM5Iiwib2ZfYTNfMDQwIiwib2ZfYTRfMDQxIiwib2ZfYTVfMDQyIiwib2ZfYTZfMDQzIiwib2ZfYTdfMDQ0Iiwic2V4cF9vZl90OSIsIm9mX2EwXzA0NSIsIm9mX2ExXzA0NiIsIm9mX2EyXzA0NyIsIm9mX2EzXzA0OCIsIm9mX2E0XzA0OSIsIm9mX2E1XzA1MCIsIm9mX2E2XzA1MSIsIm9mX2E3XzA1MiIsIm9mX2E4XzA1MyIsInNleHBfb2ZfdDEwIiwib2ZfYTBfMDU0Iiwib2ZfYTFfMDU1Iiwib2ZfYTJfMDU2Iiwib2ZfYTNfMDU3Iiwib2ZfYTRfMDU4Iiwib2ZfYTVfMDU5Iiwib2ZfYTZfMDYwIiwib2ZfYTdfMDYxIiwib2ZfYThfMDYyIiwib2ZfYTlfMDYzIiwic2V4cF9vZl90MTEiLCJvZl9hMF8wNjQiLCJvZl9hMV8wNjUiLCJvZl9hMl8wNjYiLCJvZl9hM18wNjciLCJvZl9hNF8wNjgiLCJvZl9hNV8wNjkiLCJvZl9hNl8wNzAiLCJvZl9hN18wNzEiLCJvZl9hOF8wNzIiLCJvZl9hOV8wNzMiLCJvZl9hMTBfMDc0Iiwic2V4cF9vZl90MTIiLCJvZl9hMF8wNzUiLCJvZl9hMV8wNzYiLCJvZl9hMl8wNzciLCJvZl9hM18wNzgiLCJvZl9hNF8wNzkiLCJvZl9hNV8wODAiLCJvZl9hNl8wODEiLCJvZl9hN18wODIiLCJvZl9hOF8wODMiLCJvZl9hOV8wODQiLCJvZl9hMTBfMDg1Iiwib2ZfYTExXzA4NiIsInNleHBfb2ZfdDEzIiwib2ZfYTBfMDg3Iiwib2ZfYTFfMDg4Iiwib2ZfYTJfMDg5Iiwib2ZfYTNfMDkwIiwib2ZfYTRfMDkxIiwib2ZfYTVfMDkyIiwib2ZfYTZfMDkzIiwib2ZfYTdfMDk0Iiwib2ZfYThfMDk1Iiwib2ZfYTlfMDk2Iiwib2ZfYTEwXzA5NyIsIm9mX2ExMV8wOTgiLCJvZl9hMTJfMDk5Iiwic2V4cF9vZl90MTQiLCJvZl9hMF8xMDAiLCJvZl9hMV8xMDEiLCJvZl9hMl8xMDIiLCJvZl9hM18xMDMiLCJvZl9hNF8xMDQiLCJvZl9hNV8xMDUiLCJvZl9hNl8xMDYiLCJvZl9hN18xMDciLCJvZl9hOF8xMDgiLCJvZl9hOV8xMDkiLCJvZl9hMTBfMTEwIiwib2ZfYTExXzExMSIsIm9mX2ExMl8xMTIiLCJvZl9hMTNfMTEzIiwibmFtZSQxIiwicHJlZml4IiwibmFtZSQwIiwibmFtZSIsImZhaWx3aXRocyIsImFyY2hfc2l4dHlmb3VyIiwibnVtX2JpdHMiLCJtYXhfdmFsdWUiLCJ0b19zdHJpbmciLCJzcHJpbnRmIiwiY29uY2F0IiwibCIsIm9mX3Nsb3RzXzAwNyIsIm9mX2FfMDA4IiwiZXF1YWwiLCJtYXhfc2xvdCIsImFycmF5X2luZGV4X251bV9iaXRzIiwibWFza2VkX3R1cGxlX2lkX251bV9iaXRzIiwibWF4X2FycmF5X2xlbmd0aCIsIm9mX2ludCIsImkiLCJleGFtcGxlcyIsInR1cGxlX2lkX21hc2siLCJ0eXBlbmFtZV9vZl90IiwidHlwZXJlcF9vZl90Iiwib2Zfc2xvdHMiLCJuYW1lX29mX3QiLCJzZXhwX29mX3QkMSIsInQiLCJwaHlzX2VxdWFsIiwicGh5c19jb21wYXJlIiwibnVsbCQwIiwiaXNfbnVsbCIsImNyZWF0ZSIsImhlYWRlcl9pbmRleCIsInR1cGxlX2lkIiwiaGVhZGVyX2luZGV4X21hc2siLCJpbnZhcmlhbnQiLCJzbG90X2luZGV4Iiwic2xvdCIsImZpcnN0X3Nsb3RfaW5kZXgiLCJ0b19pbnQ2MyIsIm9mX2ludDYzIiwibnVsbCQxIiwiaXNfbnVsbCQwIiwiaXNfZnJlZSIsImlzX3VzZWQiLCJ0dXBsZV9pZCQwIiwibWV0YWRhdGFfaW5kZXgiLCJzdGFydF9vZl90dXBsZXNfaW5kZXgiLCJtYXhfY2FwYWNpdHkiLCJkdW1teSIsInIiLCJmaXJzdF9mcmVlIiwic2V0X2ZpcnN0X2ZyZWUiLCJ2IiwibmV4dF9pZCIsInNldF9uZXh0X2lkIiwibGVuZ3RoIiwic2V0X2xlbmd0aCIsImNhcGFjaXR5IiwiZHVtbXkkMCIsImZpcnN0X2ZyZWUkMCIsIm5leHRfaWQkMCIsImxlbmd0aCQwIiwiY2FwYWNpdHkkMCIsInNsb3RzX3Blcl90dXBsZSQwIiwiaW5pdCIsImFycmF5X2luZGljZXNfcGVyX3R1cGxlIiwiYXJyYXlfbGVuZ3RoIiwidHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCIsInR1cGxlX251bSIsInR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IiwibWV0YWRhdGEiLCJsZW5ndGgkMSIsInNleHBfb2ZfdCQzIiwic2V4cF9vZl90eSIsImNhcGFjaXR5XzAxOCIsInNsb3RzX3Blcl90dXBsZV8wMTYiLCJsZW5ndGhfMDIwIiwibmV4dF9pZF8wMjIiLCJmaXJzdF9mcmVlXzAyNCIsImR1bW15XzAyNiIsImFyZ18wMjciLCJibmRzXzAxNSIsImFyZ18wMjUiLCJibmRzXzAxNSQwIiwiYXJnXzAyMyIsImJuZHNfMDE1JDEiLCJhcmdfMDIxIiwiYm5kc18wMTUkMiIsImFyZ18wMTkiLCJibmRzXzAxNSQzIiwiYXJnXzAxNyIsImJuZHNfMDE1JDQiLCJ1bnNhZmVfaGVhZGVyIiwidW5zYWZlX3NldF9oZWFkZXIiLCJoZWFkZXIiLCJoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIiwidW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSIsInBvaW50ZXIiLCJ0JDAiLCJwb2ludGVyX2lzX3ZhbGlkIiwiaWRfb2ZfcG9pbnRlciIsImlzX3ZhbGlkX2hlYWRlcl9pbmRleCIsIm1ldGFkYXRhJDAiLCJwb2ludGVyX29mX2lkX2V4biIsInQkMSIsImlkIiwic2hvdWxkX2VxdWFsIiwieF8wMDkiLCJleG4kMCIsImV4biIsImFyZzFfMDExIiwiYXJnMF8wMTAiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwiYXJnMl8wMzAiLCJhcmcxXzAyOSIsImFyZzBfMDI4IiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInJlczJfMDMzIiwiaW52YXJpYW50JDAiLCJpbnZhcmlhbnRfYSIsImZyZWUiLCJoZWFkZXJfaW5kZXgkMCIsInR1cGxlX251bSQwIiwiZmlyc3Rfc2xvdCIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNiIsInJlczFfMDM3IiwiY2FwYWNpdHkkMSIsImlzX2Z1bGwiLCJ1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCIsIm5leHRfZnJlZV9oZWFkZXJfaW5kZXgiLCJzZXRfbWV0YWRhdGEiLCJjcmVhdGVfYXJyYXkiLCJ1bnNhZmVfaW5pdF9yYW5nZSIsImxvIiwiaGkiLCJjcmVhdGVfd2l0aF9kdW1teSIsInNsb3RzIiwibWF4X2NhcGFjaXR5JDAiLCJhcmcxXzA0MCIsImFyZzBfMDM5IiwicmVzMF8wNDEiLCJ2XzAzOCIsInJlczFfMDQyIiwiY3JlYXRlJDAiLCJncm93Iiwib2xkX2NhcGFjaXR5IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInZfMDAxIiwicmVzMF8wMDUiLCJ2XzAwMiIsInJlczFfMDA2IiwibWV0YWRhdGEkMiIsIm1ldGFkYXRhJDEiLCJtYWxsb2MiLCJ4XzA0MyIsInVuc2FmZV9mcmVlIiwicG9zIiwiYXJnMV8wNDUiLCJhcmcwXzA0NCIsInJlczBfMDQ2IiwicmVzMV8wNDciLCJuZXcxIiwiYTAiLCJvZmZzZXQiLCJuZXcyIiwiYTEiLCJuZXczIiwiYTIiLCJuZXc0IiwiYTMiLCJuZXc1IiwiYTQiLCJuZXc2IiwiYTUiLCJuZXc3IiwiYTYiLCJuZXc4IiwiYTciLCJuZXc5IiwiYTgiLCJuZXcxMCIsImE5IiwibmV3MTEiLCJhMTAiLCJuZXcxMiIsImExMSIsIm5ldzEzIiwiYTEyIiwibmV3MTQiLCJhMTMiLCJnZXQiLCJwIiwidW5zYWZlX2dldCIsInNldCIsIngiLCJ1bnNhZmVfc2V0IiwiZ2V0X3R1cGxlIiwibGVuIiwiY3JlYXRlJDEiLCJjaGVja19pbnZhcmlhbnQiLCJzaG93X21lc3NhZ2VzIiwiZGVidWciLCJ0cyIsImFyZyIsInNleHBfb2ZfYXJnIiwic2V4cF9vZl9yZXN1bHQiLCJmIiwicmVzdWx0X29yX2V4biIsInhfMDQ4IiwiYXJnMV8wNTIiLCJhcmcwXzA1MSIsInJlczBfMDUzIiwicmVzMV8wNTQiLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJyZXMxXzA1OCIsInhfMDU5IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJiaW5fd3JpdGVfdCIsImJpbl93cml0ZXJfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsInRfb2Zfc2V4cCIsInhfMDYzIiwieF8wNjQiLCJ4XzA2NSIsInhfMDY2IiwieF8wNjciLCJ2XzA2OCIsInhfMDY5IiwieF8wNzAiLCJ4XzA3MSIsInhfMDcyIiwiZGVidWdfbmV3IiwieF8wNzMiLCJ4XzA3NCIsImRlYnVnX2dldCIsInhfMDc1IiwiZGVidWdfc2V0IiwiYSIsInhfMDc2Iiwib2Zfc2xvdHNfMDc3IiwiaXNfdmFsaWRfMDc5IiwicG9pbnRlcl8wODEiLCJhcmdfMDgyIiwiYm5kc18wNzgiLCJhcmdfMDgwIiwiYm5kc18wNzgkMCIsImZpZWxkMCIsImZpZWxkMSIsInR5cGVuYW1lIiwiaGFzX2RvdWJsZV9hcnJheV90YWciLCJmaWVsZHMiLCJpc192YWxpZCIsImZvbGxvdyIsInhfMDgzIiwiaW52YWxpZGF0ZSIsInBvcyQ5IiwicG9zJDgiLCJwb3MkNyIsInBvcyQ2IiwiYXJnXzA4NyIsInBvcyQ1IiwicG9zJDQiLCJwb3MkMyIsInBvcyQyIiwicG9zJDEiLCJwb3MkMCIsInBvcyIsImVycm9yX3NvdXJjZV8wMTkiLCJtYXhfdGltZSIsIm1pbl90aW1lIiwibWF4X251bV9iaXRzIiwibWluX3ZhbHVlIiwiaW52YXJpYW50IiwidCIsIm9mX2ludCIsImkiLCJzeW1ib2wkMiIsInQxIiwidDIiLCJzeW1ib2wkMyIsInBvdzIiLCJzZXhwX29mX3QkMCIsInhfMDA3IiwibnVtX2JpdHNfaW50ZXJuYWwiLCJudW1fYml0cyIsImludmFyaWFudCQwIiwibnVtX2tleV9iaXRzIiwidF9vZl9zZXhwJDAiLCJ4XzAwNiIsImNyZWF0ZV9leG4iLCJ4XzAwOCIsImV4dGVuZF90b19tYXhfbnVtX2JpdHMiLCJiaXRzIiwiaW50cyIsImxldmVsX2JpdHNfZGVmYXVsdCIsImNvbXBhcmUiLCJlcXVhbCQwIiwieF8wMTIiLCJ4XzAxMyIsInRvX3NleHBhYmxlIiwic2V4cF9vZl90JDEiLCJhYm91dF9vbmVfbWljcm9zZWNvbmQiLCJtdWwiLCJkaXYiLCJvZl9zcGFuX2Zsb29yX3BvdzJfbnMiLCJzcGFuIiwibGV2ZWxfYml0cyIsInIiLCJsZXZlbF9iaXRzJDAiLCJ2IiwidF9vZl9zZXhwJDIiLCJ4XzAyMSIsImNhcGFjaXR5IiwiYWxhcm1fcHJlY2lzaW9uIiwic2V4cF9vZl90JDMiLCJjYXBhY2l0eV8wMjciLCJsZXZlbF9iaXRzXzAyNSIsImFsYXJtX3ByZWNpc2lvbl8wMjMiLCJibmRzXzAyMiIsInZfMDI4IiwiYXJnXzAzMCIsImJuZF8wMjkiLCJibmRzXzAyMiQwIiwiYXJnXzAyNiIsImJuZHNfMDIyJDEiLCJhcmdfMDI0IiwiYm5kc18wMjIkMiIsIm1heF9udW1fbGV2ZWxfYml0cyIsImludmFyaWFudCQxIiwibGV2ZWxfYml0c19mdW4iLCJjcmVhdGUiLCJsb29wIiwicmVtYWluaW5nIiwidCQwIiwiYiIsIm1pY3Jvc2Vjb25kX3ByZWNpc2lvbiIsImR1cmF0aW9ucyIsIm51bV9iaXRzX2FjY3VtIiwibGV2ZWxfbnVtX2JpdHMiLCJudW1fYml0c19hY2N1bSQwIiwiZHVyYXRpb24iLCJjb21wYXJlJDAiLCJzZXhwX29mX3QkNCIsImNyZWF0ZSQwIiwiY3JlYXRlJDEiLCJiaXRzX3Blcl9zbG90IiwidG9faW50NjMiLCJvZl9pbnQ2MyIsInNjYWxlX2ludCIsInNleHBfb2ZfdCQ3Iiwib2ZfaW50NjMkMCIsInRvX2ludDYzJDAiLCJhZGQiLCJhZGRfY2xhbXBfdG9fbWF4Iiwic3ViIiwiZGlmZiIsInNleHBfb2ZfcG9vbF9zbG90cyIsIm9mX2FfMDMzIiwieF8wMzQiLCJzZXhwX29mX3QkOCIsIm9mX2FfMDM1IiwieF8wMzYiLCJudWxsJDAiLCJudWxsJDEiLCJpc19udWxsIiwiZnJlZSIsImtleSIsInAiLCJhdCIsInZhbHVlIiwibGV2ZWxfaW5kZXgiLCJwcmV2Iiwic2V0X3ByZXYiLCJ4IiwibmV4dCIsInNldF9uZXh0IiwiaXNfdmFsaWQiLCJncm93IiwiaXNfZnVsbCIsIm9mX2V4dGVybmFsX2V4biIsInBvb2wiLCJsaW5rIiwiaXRlciIsImZpcnN0IiwiZiIsImN1cnJlbnQiLCJjb250aW51ZSQwIiwibmV4dCQwIiwic2xvdHMiLCJtYXhfYWxsb3dlZF9rZXkiLCJzZXRfbWF4X2FsbG93ZWRfa2V5IiwibWluX2FsbG93ZWRfa2V5Iiwic2V0X21pbl9hbGxvd2VkX2tleSIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkiLCJtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIiwia2V5c19wZXJfc2xvdCIsInNsb3RzX21hc2siLCJpbmRleCIsInNsb3RzJDAiLCJtYXhfYWxsb3dlZF9rZXkkMCIsIm1pbl9hbGxvd2VkX2tleSQwIiwibGVuZ3RoJDAiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkkMCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2skMCIsImtleXNfcGVyX3Nsb3QkMCIsImJpdHNfcGVyX3Nsb3QkMCIsInNsb3RzX21hc2skMCIsImJpdHMkMCIsImluZGV4JDAiLCJzZXhwX29mX3QkOSIsIm9mX2FfMDQ0IiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XzA1OCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfMDU2Iiwia2V5c19wZXJfc2xvdF8wNTQiLCJiaXRzX3Blcl9zbG90XzA1MiIsInNsb3RzX21hc2tfMDUwIiwiYml0c18wNDgiLCJpbmRleF8wNDYiLCJsZW5ndGhfMDYwIiwibWluX2FsbG93ZWRfa2V5XzA2MiIsIm1heF9hbGxvd2VkX2tleV8wNjQiLCJzbG90c18wNjYiLCJhcmdfMDY3IiwiYm5kc18wNDUiLCJhcmdfMDY1IiwiYm5kc18wNDUkMCIsImFyZ18wNjMiLCJibmRzXzA0NSQxIiwiYXJnXzA2MSIsImJuZHNfMDQ1JDIiLCJhcmdfMDU5IiwiYm5kc18wNDUkMyIsImFyZ18wNTciLCJibmRzXzA0NSQ0IiwiYXJnXzA1NSIsImJuZHNfMDQ1JDUiLCJhcmdfMDUzIiwiYm5kc18wNDUkNiIsImFyZ18wNTEiLCJibmRzXzA0NSQ3IiwiYXJnXzA0OSIsImJuZHNfMDQ1JDgiLCJhcmdfMDQ3IiwiYm5kc18wNDUkOSIsInNsb3QiLCJuZXh0X3Nsb3QiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCIsImNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkiLCJsZXZlbHMiLCJlbHRfa2V5X2xvd2VyX2JvdW5kIiwic2V0X2VsdF9rZXlfbG93ZXJfYm91bmQiLCJtaW5fZWx0Iiwic2V0X21pbl9lbHQiLCJzZXRfcG9vbCIsImxlbmd0aCQxIiwic2V0X2xlbmd0aCQwIiwibGV2ZWxzJDAiLCJlbHRfa2V5X2xvd2VyX2JvdW5kJDAiLCJtaW5fZWx0JDAiLCJwb29sJDAiLCJsZW5ndGgkMiIsImlzX2VtcHR5IiwibnVtX2xldmVscyIsIm1pbl9hbGxvd2VkX2tleSQxIiwibWF4X2FsbG93ZWRfa2V5JDEiLCJpbnRlcm5hbF9pdGVyIiwibGV2ZWwiLCJzbG90X2luZGV4IiwiZWx0IiwiY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rIiwibWluX2VsdCQxIiwibWluX2VsdF9hbHJlYWR5X2ZvdW5kIiwibWluX2tleV9hbHJlYWR5X2ZvdW5kIiwibnVtX2xldmVscyQwIiwic2xvdF9taW5fa2V5Iiwic2xvdCQwIiwiY3VycmVudF9rZXkiLCJhZGRfZWx0IiwieF8xMTQiLCJ0b19hZGQiLCJrZXkkMCIsImVsdHNfMDk0IiwibWF4X2FsbG93ZWRfa2V5XzA5MiIsIm1pbl9hbGxvd2VkX2tleV8wOTAiLCJhcmdfMDk1Iiwia2V5XzA4NCIsImJuZHNfMDgzIiwiYXJnXzA4NSIsImJuZHNfMDgzJDAiLCJibmRzXzA4OSIsImFyZ18wOTMiLCJibmRzXzA4OSQwIiwiYXJnXzA5MSIsImJuZHNfMDg5JDEiLCJyJDAiLCJsZXZlbF9pbmRleCQwIiwicHJldiQwIiwiaW50ZXJuYWxfYWRkX2VsdCIsImVuc3VyZV92YWxpZF9rZXkiLCJpbnRlcm5hbF9hZGQiLCJpbnRlcm5hbF9yZW1vdmUiLCJtaW5faW50ZXJ2YWxfbnVtIiwicHJpb3JpdHlfcXVldWUiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwic2V0X21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Iiwic2V0X25vd19pbnRlcnZhbF9udW1fc3RhcnQiLCJub3ciLCJzZXRfbm93IiwibWF4X2ludGVydmFsX251bSIsInN0YXJ0IiwiY29uZmlnIiwicHJpb3JpdHlfcXVldWUkMCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUkMCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnQkMCIsIm5vdyQwIiwibWF4X2ludGVydmFsX251bSQwIiwic3RhcnQkMCIsImNvbmZpZyQwIiwic2V4cF9vZl90X25vdyIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXQkMCIsInR3IiwidmFsdWUkMCIsImludGVydmFsX251bSIsIml0ZXIkMCIsImNvbXBhcmUkMyIsInNleHBfb2ZfdCQxMCIsInNleHBfb2ZfYSIsIm1heF9pbnRlcnZhbF9udW1fMTQ2Iiwic3RhcnRfMTQ0IiwiY29uZmlnXzE0MiIsIm5vd18xNDgiLCJhbGFybSIsImFsYXJtc18xNTAiLCJhcmdfMTUxIiwidmFsdWVfMTM4IiwiYXRfMTM2IiwiYXJnXzEzOSIsImJuZHNfMTM1IiwiYXJnXzEzNyIsImJuZHNfMTM1JDAiLCJibmRzXzE0MSIsImFyZ18xNDkiLCJibmRzXzE0MSQwIiwiYXJnXzE0NyIsImJuZHNfMTQxJDEiLCJhcmdfMTQ1IiwiYm5kc18xNDEkMiIsImFyZ18xNDMiLCJibmRzXzE0MSQzIiwibGVuZ3RoJDMiLCJpc19lbXB0eSQwIiwicG9vbCQxIiwiaW50ZXJ2YWxfbnVtX2ludGVybmFsIiwidGltZSIsImludGVydmFsX251bV91bmNoZWNrZWQiLCJpbnRlcnZhbF9udW0kMCIsImludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQiLCJpbnRlcnZhbF9udW1fc3RhcnQiLCJuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIiwibmV4dF9hbGFybV9maXJlc19hdCIsIm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIiwieF8xNTMiLCJjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtIiwibWF4X2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtIiwiaW50ZXJ2YWxfc3RhcnQiLCJpbnZhcmlhbnQkMiIsImludmFyaWFudF9hIiwieF8xNTUiLCJjaGVjayIsInByaW9yaXR5X3F1ZXVlX2Z1biIsInhfMTA5Iiwib2ZfYV8wNjgiLCJsZW5ndGhfMDcwIiwicG9vbF8wNzIiLCJtaW5fZWx0XzA3NCIsImVsdF9rZXlfbG93ZXJfYm91bmRfMDc2IiwibGV2ZWxzXzA3OCIsImFyZ18wNzkiLCJibmRzXzA2OSIsImFyZ18wNzciLCJibmRzXzA2OSQwIiwiYXJnXzA3NSIsImJuZHNfMDY5JDEiLCJhcmdfMDczIiwiYm5kc18wNjkkMiIsImFyZ18wNzEiLCJibmRzXzA2OSQzIiwibGV2ZWxzX2Z1biIsInhfMDk4Iiwic2xvdHNfZnVuIiwieF8wNDEiLCJuIiwibWF4X2FsbG93ZWRfa2V5X2Z1biIsImV4cGVjdCIsImNvbXBhcmF0b3IiLCJhXzEwNyIsImJfMTA4IiwibWluX2FsbG93ZWRfa2V5X2Z1biIsImdvdCIsInNleHBpZmllciIsImFfMTA1IiwiYl8xMDYiLCJsZW5ndGhfZnVuIiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5X2Z1biIsImV0YSIsImFfMTAzIiwiYl8xMDQiLCJtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrX2Z1biIsImtleXNfcGVyX3Nsb3RfZnVuIiwiYV8xMDEiLCJiXzEwMiIsImJpdHNfcGVyX3Nsb3RfZnVuIiwiZXhwZWN0JDAiLCJzbG90c19tYXNrX2Z1biIsImFfMDk5IiwiYl8xMDAiLCJiaXRzX2Z1biIsImluZGV4X2Z1biIsInByZXZfbGV2ZWwiLCJnb3QkMCIsImFfMTEwIiwiYl8xMTEiLCJjb21wYXJhdG9yJDAiLCJhXzExMiIsImJfMTEzIiwiZWx0X2tleV9sb3dlcl9ib3VuZF9mdW4iLCJtaW5fZWx0X2Z1biIsInBvb2xfZnVuIiwibWF4X2FsbG93ZWRfYWxhcm1fdGltZV9mdW4iLCJhXzE2MiIsImJfMTYzIiwibm93X2ludGVydmFsX251bV9zdGFydF9mdW4iLCJhXzE2MCIsImJfMTYxIiwibm93X2Z1biIsIm1heF9pbnRlcnZhbF9udW1fZnVuIiwiYV8xNTYiLCJiXzE1NyIsInNleHBpZmllciQwIiwiYV8xNTgiLCJiXzE1OSIsInN0YXJ0X2Z1biIsImNvbmZpZ19mdW4iLCJkZWJ1ZyIsImFkdmFuY2VfY2xvY2siLCJ0byIsImhhbmRsZV9yZW1vdmVkIiwidF9taW5fYWxsb3dlZF9rZXkiLCJ0JDEiLCJyZXN1bHQiLCJtaW5fYWxsb3dlZF9rZXlfYmVmb3JlIiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkkMCIsImRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5JDAiLCJjcmVhdGUkMiIsImNhcGFjaXR5JDAiLCJtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwiYWRkX2F0X2ludGVydmFsX251bSIsImVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0iLCJhZGQkMCIsInJlbW92ZSIsImNsZWFyIiwiZnJlZV9lbHQiLCJtZW0iLCJyZXNjaGVkdWxlX2dlbiIsInJlc2NoZWR1bGUiLCJyZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSIsIm1pbl9hbGFybV9pbnRlcnZhbF9udW0iLCJtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biIsInhfMTY0IiwibWF4X2FsYXJtX3RpbWVfaW5fbGlzdCIsIndpdGhfa2V5IiwibWF4X2FsYXJtX3RpbWUiLCJtaW5fYWxhcm1fdGltZV9pbl9saXN0IiwibWluX2FsYXJtX3RpbWUiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwkMCIsInhfMTY1IiwibWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsJDAiLCJ4XzE2NiIsImZpcmVfcGFzdF9hbGFybXMiLCJoYW5kbGVfZmlyZWQiLCJsZXZlbF9iaXRzJDAiLCJoZXJlIiwiaGVyZSQwIiwiaGVyZSQxIiwiaGVyZSQyIiwiaGVyZSQzIiwiaGVyZSQ0IiwiZXJyb3Jfc291cmNlXzAwMyIsImVycm9yX3NvdXJjZV8wMDYiLCJlcnJvcl9zb3VyY2VfMDE1IiwiZXJyb3Jfc291cmNlXzAyOCIsImxpc3QiLCJlcnJvcl9zb3VyY2VfMDM2IiwibGlzdCQwIiwiZXJyb3Jfc291cmNlXzAzOSIsImVtcHR5IiwiZW52aXJvbm1lbnRfdmFyaWFibGUiLCJzZWMiLCJjb25jYXQiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlJDAiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGUkMiIsImRlZmF1bHQkMCIsImVxdWFsIiwidDEiLCJ0MiIsInZhbGlkYXRlJDMiLCJ2YWxpZGF0ZSQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzAwNCIsInNleHBfb2ZfdCQ2Iiwid2F0Y2hfb2Zfc2V4cCIsInhfMDA3IiwiaG93X3RvX2R1bXAiLCJkdW1wX2lmX2RlbGF5ZWRfYnkiLCJzZXhwX29mX3dhdGNoIiwiaG93X3RvX2R1bXBfMDExIiwiZHVtcF9pZl9kZWxheWVkX2J5XzAwOSIsImFyZ18wMTIiLCJibmRzXzAwOCIsImFyZ18wMTAiLCJibmRzXzAwOCQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzAxNyIsInRhZ18wMTgiLCJzZXhwX2FyZ3NfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsInNleHBfb2ZfdCQ3IiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsInRfb2Zfc2V4cCQ4Iiwic2V4cF8wMjkiLCJzZXhwX29mX3QkOCIsImVxdWFsJDAiLCJ4XzAzMCIsInhfMDMxIiwidF9vZl9zZXhwJDkiLCJzZXhwXzAzNyIsInNleHBfb2ZfdCQ5IiwidF9vZl9zZXhwJDEwIiwic2V4cF9vZl90JDEwIiwidGltaW5nX3doZWVsX2NvbmZpZyIsInIiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkiLCJyZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yIiwicmVjb3JkX2JhY2t0cmFjZXMiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dCIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyIsIm1heF9udW1fdGhyZWFkcyIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2NycyIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0IiwiZmlsZV9kZXNjcl93YXRjaGVyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkiLCJkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHIiLCJjaGVja19pbnZhcmlhbnRzIiwiYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfIiwidGltaW5nX3doZWVsX2NvbmZpZyQwIiwidiIsInRocmVhZF9wb29sX2NwdV9hZmZpbml0eSQwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciQwIiwicmVjb3JkX2JhY2t0cmFjZXMkMCIsInByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciQwIiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXQkMCIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyQwIiwibWF4X251bV90aHJlYWRzJDAiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMkMCIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0JDAiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMCIsImVwb2xsX21heF9yZWFkeV9ldmVudHMkMCIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkkMCIsImRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RociQwIiwiY2hlY2tfaW52YXJpYW50cyQwIiwiYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfJDAiLCJzZXhwX29mX3QkMTEiLCJ0aW1pbmdfd2hlZWxfY29uZmlnXzEwMiIsInRocmVhZF9wb29sX2NwdV9hZmZpbml0eV8wOTgiLCJyZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXzAiLCJyZWNvcmRfYmFja3RyYWNlc18wOTAiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDg2IiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXRfMDgyIiwibWF4X251bV90aHJlYWRzXzA3NCIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2Nyc18wNzAiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dF8wNjYiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDYyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNTgiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5XzA1NCIsImNoZWNrX2ludmFyaWFudHNfMDQ2IiwiYm5kc18wNDEiLCJ2XzEwMyIsImFyZ18xMDUiLCJibmRfMTA0IiwiYm5kc18wNDEkMCIsInZfMDk5IiwiYXJnXzEwMSIsImJuZF8xMDAiLCJibmRzXzA0MSQxIiwidl8wOTUiLCJhcmdfMDk3IiwiYm5kXzA5NiIsImJuZHNfMDQxJDIiLCJ2XzA5MSIsImFyZ18wOTMiLCJibmRfMDkyIiwiYm5kc18wNDEkMyIsInZfMDg3IiwiYXJnXzA4OSIsImJuZF8wODgiLCJibmRzXzA0MSQ0Iiwidl8wODMiLCJhcmdfMDg1IiwiYm5kXzA4NCIsImJuZHNfMDQxJDUiLCJ2XzA3OSIsImFyZ18wODEiLCJibmRfMDgwIiwiYm5kc18wNDEkNiIsInZfMDc1IiwiYXJnXzA3NyIsImJuZF8wNzYiLCJibmRzXzA0MSQ3Iiwidl8wNzEiLCJhcmdfMDczIiwiYm5kXzA3MiIsImJuZHNfMDQxJDgiLCJ2XzA2NyIsImFyZ18wNjkiLCJibmRfMDY4IiwiYm5kc18wNDEkOSIsInZfMDYzIiwiYXJnXzA2NSIsImJuZF8wNjQiLCJibmRzXzA0MSQxMCIsInZfMDU5IiwiYXJnXzA2MSIsImJuZF8wNjAiLCJibmRzXzA0MSQxMSIsInZfMDU1IiwiYXJnXzA1NyIsImJuZF8wNTYiLCJibmRzXzA0MSQxMiIsInZfMDUxIiwiYXJnXzA1MyIsImJuZF8wNTIiLCJibmRzXzA0MSQxMyIsInZfMDQ3IiwiYXJnXzA0OSIsImJuZF8wNDgiLCJibmRzXzA0MSQxNCIsInZfMDQzIiwiYXJnXzA0NSIsImJuZF8wNDQiLCJibmRzXzA0MSQxNSIsImNyZWF0ZSQwIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnX2ZvIiwid29yZF9zaXplIiwibGV2ZWxfYml0cyQxIiwiYWxhcm1fcHJlY2lzaW9uIiwiYWxhcm1fcHJlY2lzaW9uJDAiLCJkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWciLCJkZWZhdWx0JDEiLCJleGFtcGxlIiwidXNhZ2UiLCJmaWVsZCIsInRvX3NleHAiLCJkZXNjcmlwdGlvbiIsImFjIiwiZCIsImZpZWxkcyIsInhfMTA2IiwibmFtZTIiLCJuYW1lMSIsIm5hbWUiLCJzdHJpbmciLCJ4XzA0MCIsInQiLCJ0JDAiLCJleG4iLCJ0JDEiLCJ0JDIiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IkMSIsInRhZyIsImwiLCJhbGwiLCJkZWJ1ZyIsImNsb2NrIiwiZmQiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMSIsImZpbmFsaXplcnMiLCJpbnRlcnJ1cHRvciIsIm1vbml0b3IiLCJtb25pdG9yX3NlbmRfZXhuIiwicGFyYWxsZWwiLCJyZWFkZXIiLCJzY2hlZHVsZXIiLCJzaHV0ZG93biIsInRocmVhZF9wb29sIiwidGhyZWFkX3NhZmUiLCJ3cml0ZXIiLCJzeW1ib2wiLCJhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja18kMSIsImNoZWNrX2ludmFyaWFudHMkMSIsImRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RociQxIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyQxIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5JDEiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMiIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0JDEiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMkMSIsIm1heF9udW1fdGhyZWFkcyQxIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDEiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dCQxIiwicmVjb3JkX2JhY2t0cmFjZXMkMSIsInJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IkMSIsInRpbWluZ193aGVlbF9jb25maWckMSIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkkMSIsInQkMyIsInRhc2tfaWQiLCJub25lIiwiY3JlYXRlIiwiaXNfbm9uZSIsIngiLCJpc19zb21lIiwiZ2V0X3NvbWVfZXhuIiwiZ2V0IiwidCIsInVuc2FmZV9nZXQiLCJzZXRfc29tZSIsInYiLCJzZXRfbm9uZSIsInNldCIsInYkMCIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInhfMDAxIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ4XzAwMiIsImVtcHR5IiwiaXNfZW1wdHkiLCJlcXVhbCIsImR1bW15X2lkIiwiY2hpbGQiLCJ0IiwicG9vbCIsInNpYmxpbmciLCJwcmV2IiwiaWQiLCJzZXRfY2hpbGQiLCJ2Iiwic2V0X3NpYmxpbmciLCJzZXRfcHJldiIsInZhbHVlX2V4biIsImFsbG9jYXRlIiwidmFsdWUiLCJmcmVlIiwiZGlzY29ubmVjdF9zaWJsaW5nIiwic2libGluZyQwIiwiZGlzY29ubmVjdF9jaGlsZCIsImNoaWxkJDAiLCJkZXRhY2giLCJwcmV2JDAiLCJyZWxhdGlvbl90b19wcmV2IiwiY3JlYXRlIiwiY2FwYWNpdHkiLCJpbnZhcmlhbnQiLCJ0b192aXNpdCQyIiwidG9fdmlzaXQiLCJ0b192aXNpdCQwIiwibWF5YmVfcGFyZW50X3ZhbHVlIiwiZXhwZWN0ZWRfcHJldiIsIm5vZGUiLCJ0aGlzX3ZhbHVlIiwidGhpc192YWx1ZSQwIiwicGFyZW50X3ZhbHVlIiwidG9fdmlzaXQkMSIsImNyZWF0ZSQwIiwiY21wIiwibWluX3NpemUiLCJjb3B5IiwicG9vbCQwIiwic3RhcnQiLCJudW1fb2ZfYWxsb2NhdGVkX25vZGVzIiwiY29weV9ub2RlIiwibmV3X25vZGUiLCJuZXdfc3RhcnQiLCJyZXN0Iiwibm9kZV90b19jb3B5Iiwic2xvdCIsIm5vZGVfdG9fdXBkYXRlIiwibWVyZ2UiLCJyb290MSIsInJvb3QyIiwiYWRkX2NoaWxkIiwibmV3X2NoaWxkIiwiY3VycmVudF9jaGlsZCIsInYxIiwidjIiLCJ0b3BfZXhuIiwidG9wIiwiYWRkX25vZGUiLCJ0JDEiLCJ0JDAiLCJhZGQiLCJtYXhfc3RhY2tfZGVwdGgiLCJsb29wIiwiZGVwdGgiLCJoZWFkJDAiLCJuZXh0MSQwIiwibmV4dDIkMCIsImFjYyIsImhlYWQiLCJuZXh0MSIsIm5leHQyIiwiYWNjJDAiLCJoIiwieHMiLCJoZWFwIiwicmVtb3ZlX25vbl9lbXB0eSIsIm1lcmdlZF9jaGlsZHJlbiIsIm5ld19yb290IiwicmVtb3ZlX3RvcCIsImNsZWFyIiwibm9kZSQwIiwicG9wX2V4biIsInIiLCJwb3AiLCJwb3BfaWYiLCJmIiwiZm9sZCIsImluaXQiLCJpdGVyIiwibGVuZ3RoIiwiaXRlciQwIiwibGVuZ3RoJDAiLCJpc19lbXB0eSQwIiwibWVtIiwiZXhpc3RzIiwiZm9yX2FsbCIsImNvdW50Iiwic3VtIiwiZmluZCIsImZpbmRfbWFwIiwidG9fbGlzdCIsInRvX2FycmF5IiwibWluX2VsdCIsIm1heF9lbHQiLCJmb2xkX3Jlc3VsdCIsImZvbGRfdW50aWwiLCJvZl9hcnJheSIsImFyciIsIm9mX2xpc3QiLCJsIiwic2V4cF9vZl90IiwiaXNfbm9kZV92YWxpZCIsInZhbHVlX2V4biQwIiwic2V4cF9vZl90JDAiLCJzZXhwX29mX2EiLCJ4XzAwMSIsInJlbW92ZSIsInRva2VuIiwiYWRkX3JlbW92YWJsZSIsInVwZGF0ZSIsImZpbmRfZWx0Iiwibm9kZXMkMiIsIm5vZGVzIiwibm9kZXMkMCIsIm5vZGVzJDEiLCJ1cGRhdGUkMCIsImVsdCIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF90Iiwib2ZfYSIsImJ1ZiIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwidnRhZyIsImJpbl90IiwiYmluX2EiLCJjb21wYXJlIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwiZXF1YWwiLCJhXzAwMyIsImJfMDA0IiwidF9vZl9zZXhwIiwib2ZfYV8wMDUiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJncm91cCQwIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsImJpbl93cml0ZV90JDAiLCJwb3MiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDA4IiwiYl8wMDkiLCJlcXVhbCQwIiwiYV8wMTIiLCJiXzAxMyIsImFtX3J1bm5pbmdfdGVzdCIsIm5vbmUiLCJzb21lIiwieCIsInVuc2FmZV92YWx1ZSIsImlzX25vbmUiLCJ0IiwiaXNfc29tZSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwidmFsdWVfZXhuIiwidG9fb3B0aW9uIiwib2Zfb3B0aW9uIiwiYSIsInNleHBfb2ZfdCIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwibmV4dF8wMDUiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsImNyZWF0ZSIsInVudXNlZF9lbHRzIiwiciIsInNldF91bnVzZWRfZWx0cyIsInYiLCJiYWNrIiwic2V0X2JhY2siLCJmcm9udCIsInNldF9mcm9udCIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJ1bnVzZWRfZWx0cyQwIiwiYmFjayQwIiwiZnJvbnQkMCIsImxlbmd0aCQwIiwic2V4cF9vZl90JDAiLCJvZl9hXzAwNyIsImxlbmd0aF8wMDkiLCJmcm9udF8wMTEiLCJiYWNrXzAxMyIsInVudXNlZF9lbHRzXzAxNSIsImFyZ18wMTYiLCJibmRzXzAwOCIsImFyZ18wMTQiLCJibmRzXzAwOCQwIiwiYXJnXzAxMiIsImJuZHNfMDA4JDEiLCJhcmdfMDEwIiwiYm5kc18wMDgkMiIsImludmFyaWFudCIsImludmFyaWFudF9hIiwidCIsInhfMDE3IiwiY2hlY2siLCJmIiwidW51c2VkX2VsdHNfZnVuIiwiZWx0IiwiYmFja19mdW4iLCJmcm9udF9mdW4iLCJpIiwibGVuZ3RoX2Z1biIsImNyZWF0ZSQwIiwiZW5xdWV1ZSIsImEiLCJuZXdfYmFjayIsImRlcXVldWVfZXhuIiwieF8wMTgiLCJjbGVhcl9pbnRlcm5hbF9wb29sIiwiYWZ0ZXIiLCJ0Iiwic3BhbiIsInJlc3VsdCIsImxvZyIsImFyZzJfMDAzIiwiYXJnM18wMDQiLCJzZXhwX29mX2EiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDUiLCJyZXMxXzAwNiIsInJlczJfMDA3IiwicmVzM18wMDgiLCJsb2dfc3RyaW5nIiwibWVzc2FnZSIsImNvbmNhdCIsImVwcmludCIsImVwcmludF9zIiwiZXByaW50cyIsInByaW50X3MiLCJzZXhwIiwic2VjIiwiYWxsIiwic2V4cF9vZl90IiwidG9fcmVwciIsIm9mX3JlcHIiLCJuYW1lcyIsImRlYnVnIiwiZm9yd2FyZGluZyIsInIiLCJzZXRfZm9yd2FyZGluZyIsInYiLCJoYXNfc2Vlbl9lcnJvciIsInNldF9oYXNfc2Vlbl9lcnJvciIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzIiwic2V0X3RhaWxzX2Zvcl9hbGxfZXJyb3JzIiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMiLCJzZXRfaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMiLCJuZXh0X2Vycm9yIiwic2V0X25leHRfZXJyb3IiLCJpZCIsImhlcmUiLCJuYW1lIiwiZm9yd2FyZGluZyQwIiwiaGFzX3NlZW5fZXJyb3IkMCIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzJDAiLCJoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyQwIiwibmV4dF9lcnJvciQwIiwiaWQkMCIsImhlcmUkMCIsIm5hbWUkMCIsIm1ha2VfY3JlYXRvciIsIm5hbWVfZnVuIiwiaGVyZV9mdW4iLCJpZF9mdW4iLCJuZXh0X2Vycm9yX2Z1biIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzX2Z1biIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzX2Z1biIsImhhc19zZWVuX2Vycm9yX2Z1biIsImZvcndhcmRpbmdfZnVuIiwiY29tcGlsZV9hY2MiLCJjb21waWxlX2FjYyQwIiwibmFtZV9nZW4iLCJjb21waWxlX2FjYyQxIiwiaGVyZV9nZW4iLCJjb21waWxlX2FjYyQyIiwiaWRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsIm5leHRfZXJyb3JfZ2VuIiwiY29tcGlsZV9hY2MkNCIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzX2dlbiIsImNvbXBpbGVfYWNjJDUiLCJ0YWlsc19mb3JfYWxsX2Vycm9yc19nZW4iLCJjb21waWxlX2FjYyQ2IiwiaGFzX3NlZW5fZXJyb3JfZ2VuIiwiY29tcGlsZV9hY2MkNyIsImZvcndhcmRpbmdfZ2VuIiwiYWNjIiwiY3JlYXRlIiwibWFwIiwiaXRlciIsImZvbGQiLCJpbml0IiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwicmVjb3JkJDAiLCJkZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9ucyIsInQkMSIsImFjIiwiYWMkMCIsInQkMCIsInhfMDAxIiwibmV4dF9pZCIsImNyZWF0ZV93aXRoX3BhcmVudCIsImluZm8iLCJwYXJlbnQiLCJpIiwicyIsInMkMCIsInhfMDAyIiwicGFyZW50JDAiLCJtYWluIiwiYmFja3RyYWNlX2hpc3RvcnkiLCJsb2NhbF9zdG9yYWdlIiwicHJpb3JpdHkiLCJtb25pdG9yIiwiYmFja3RyYWNlX2hpc3RvcnkkMCIsImxvY2FsX3N0b3JhZ2UkMCIsInByaW9yaXR5JDAiLCJtb25pdG9yJDAiLCJtb25pdG9yX2Z1biIsInByaW9yaXR5X2Z1biIsImxvY2FsX3N0b3JhZ2VfZnVuIiwiYmFja3RyYWNlX2hpc3RvcnlfZnVuIiwibW9uaXRvcl9nZW4iLCJwcmlvcml0eV9nZW4iLCJsb2NhbF9zdG9yYWdlX2dlbiIsImJhY2t0cmFjZV9oaXN0b3J5X2dlbiIsImJhY2t0cmFjZV9oaXN0b3J5XzAwOCIsImxvY2FsX3N0b3JhZ2VfMDA2IiwicHJpb3JpdHlfMDA0IiwibW9uaXRvcl8wMDIiLCJhcmdfMDA5IiwiYm5kc18wMDEiLCJhcmdfMDA3IiwiYm5kc18wMDEkMCIsImFyZ18wMDUiLCJibmRzXzAwMSQxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDIiLCJpbnZhcmlhbnQiLCJjcmVhdGVfbGlrZSIsImZpbmRfbG9jYWwiLCJrZXkiLCJ3aXRoX2xvY2FsIiwiZGF0YSIsInJlY29yZF9iYWNrdHJhY2UiLCJkdW1teV9lIiwiZHVtbXlfZiIsImR1bW15X2EiLCJzZXhwX29mX3Nsb3RzIiwib2ZfZXZlbnQiLCJldmVudCIsIm9mX2pvYiIsImpvYiIsImlzX2V2ZW50IiwiaXNfam9iIiwia2luZCIsInByb2plY3QiLCJqb2Jfb3JfZXZlbnQiLCJldmVudHMiLCJzZXRfZXhlY3V0aW9uX2NvbnRleHQiLCJleGVjdXRpb25fY29udGV4dCIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJmcm9udCIsInNldF9mcm9udCIsIm1hc2siLCJzZXRfbWFzayIsImpvYnMiLCJzZXRfam9icyIsImpvYnNfbGVmdF90aGlzX2N5Y2xlIiwic2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIiwibnVtX2pvYnNfcnVuIiwic2V0X251bV9qb2JzX3J1biIsImxlbmd0aCQwIiwiZnJvbnQkMCIsIm1hc2skMCIsImpvYnMkMCIsImpvYnNfbGVmdF90aGlzX2N5Y2xlJDAiLCJudW1fam9ic19ydW4kMCIsIm51bV9qb2JzX3J1bl8wMDIiLCJqb2JzX2xlZnRfdGhpc19jeWNsZV8wMDQiLCJqb2JzXzAwNiIsIm1hc2tfMDA4IiwiZnJvbnRfMDEwIiwibGVuZ3RoXzAxMiIsImJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlXzAxNCIsImFyZ18wMTUiLCJhcmdfMDEzIiwiYXJnXzAxMSIsImJuZHNfMDAxJDMiLCJibmRzXzAwMSQ0IiwiYm5kc18wMDEkNSIsIm9mZnNldCIsImNhcGFjaXR5IiwiY2hlY2siLCJmIiwibGVuZ3RoX2Z1biIsImZyb250X2Z1biIsIm1hc2tfZnVuIiwiam9ic19mdW4iLCJqb2JzX2xlZnRfdGhpc19jeWNsZV9mdW4iLCJudW1fam9ic19ydW5fZnVuIiwiY3JlYXRlX2FycmF5IiwiYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUiLCJjbGVhciIsInNldCIsImEiLCJvZmZzZXQkMCIsImVucXVldWUiLCJvbGRfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJvbGRfam9icyIsIm9sZF9mcm9udCIsImxlbjEiLCJsZW4yIiwibmV3X2pvYnMiLCJzZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUkMCIsIm4iLCJjYW5fcnVuX2Ffam9iIiwicnVuX2pvYiIsInNjaGVkdWxlciIsInJ1bl9leHRlcm5hbF9qb2JzIiwiZXh0ZXJuYWxfam9icyIsInJ1bl9qb2JzIiwidGhpc19qb2IiLCJleG4kMCIsImV4biIsImJhY2t0cmFjZSIsInBvcyQzIiwicG9zJDIiLCJwb3MkMSIsInBvcyQwIiwicG9zIiwibmFtZXMkMCIsImlzX251bGwiLCJkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWciLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic2V4cF9vZl90JDEiLCJ0cmFuc2l0aW9uX2lzX2FsbG93ZWQiLCJmcm9tIiwidG8iLCJzZXhwX29mX2V2ZW50IiwiYXQiLCJpbnRlcnZhbCIsInN0YXR1cyIsIm1hdGNoIiwibm9uZSIsInNvbWUiLCJpc19ub25lIiwiaXNfc29tZSIsImZpcnN0X3NvbWUiLCJ0MSIsInQyIiwidW5zYWZlX3ZhbHVlIiwic2V4cF9vZl90JDIiLCJwcHhfb3B0aW9uYWxfZV8wIiwidmFsdWUkMCIsImRlZmF1bHQkMCIsInZhbHVlX2V4biIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsInNldF9zdGF0dXMiLCJwcmV2X2ZpcmVkIiwic2V0X3ByZXZfZmlyZWQiLCJuZXh0X2ZpcmVkIiwic2V0X25leHRfZmlyZWQiLCJzZXRfaW50ZXJ2YWwiLCJjYWxsYmFjayIsImF0JDAiLCJzZXRfYXQiLCJhbGFybSIsInNldF9hbGFybSIsInN0YXR1cyQwIiwicHJldl9maXJlZCQwIiwibmV4dF9maXJlZCQwIiwiaW50ZXJ2YWwkMCIsImV4ZWN1dGlvbl9jb250ZXh0JDAiLCJjYWxsYmFjayQwIiwiYXQkMSIsImFsYXJtJDAiLCJhbGFybV9mdW4iLCJhdF9mdW4iLCJjYWxsYmFja19mdW4iLCJleGVjdXRpb25fY29udGV4dF9mdW4iLCJpbnRlcnZhbF9mdW4iLCJuZXh0X2ZpcmVkX2Z1biIsInByZXZfZmlyZWRfZnVuIiwic3RhdHVzX2Z1biIsImFsYXJtX2dlbiIsImF0X2dlbiIsImNhbGxiYWNrX2dlbiIsImV4ZWN1dGlvbl9jb250ZXh0X2dlbiIsImludGVydmFsX2dlbiIsIm5leHRfZmlyZWRfZ2VuIiwicHJldl9maXJlZF9nZW4iLCJzdGF0dXNfZ2VuIiwiZ290Iiwic2V4cGlmaWVyIiwiY29tcGFyYXRvciIsImFfMDEzIiwiYl8wMTQiLCJhXzAwOSIsImJfMDEwIiwiZXhwZWN0IiwiYV8wMDUiLCJiXzAwNiIsInNldF9zdGF0dXMkMCIsInNldF9zdGF0dXNfaWYiLCJpcyIsInNleHBfb2ZfdCQzIiwiayIsImlzX3dhbGxfY2xvY2siLCJoYW5kbGVfZmlyZWQiLCJtb3N0X3JlY2VudGx5X2ZpcmVkIiwic2V0X21vc3RfcmVjZW50bHlfZmlyZWQiLCJmaXJlZF9ldmVudHMiLCJzZXRfZmlyZWRfZXZlbnRzIiwiYW1fYWR2YW5jaW5nIiwic2V0X2FtX2FkdmFuY2luZyIsImFkdmFuY2VfZXJyb3JzIiwic2V0X2FkdmFuY2VfZXJyb3JzIiwic2NoZWR1bGVyJDAiLCJpc193YWxsX2Nsb2NrJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm1vc3RfcmVjZW50bHlfZmlyZWQkMCIsImZpcmVkX2V2ZW50cyQwIiwiZXZlbnRzJDAiLCJhbV9hZHZhbmNpbmckMCIsImFkdmFuY2VfZXJyb3JzJDAiLCJtYWtlX2NyZWF0b3IkMCIsImFkdmFuY2VfZXJyb3JzX2Z1biIsImFtX2FkdmFuY2luZ19mdW4iLCJldmVudHNfZnVuIiwiZmlyZWRfZXZlbnRzX2Z1biIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImlzX3dhbGxfY2xvY2tfZnVuIiwic2NoZWR1bGVyX2Z1biIsImFkdmFuY2VfZXJyb3JzX2dlbiIsImFtX2FkdmFuY2luZ19nZW4iLCJldmVudHNfZ2VuIiwiZmlyZWRfZXZlbnRzX2dlbiIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZ2VuIiwiaGFuZGxlX2ZpcmVkX2dlbiIsImlzX3dhbGxfY2xvY2tfZ2VuIiwiY29tcGlsZV9hY2MkOCIsInNjaGVkdWxlcl9nZW4iLCJjcmVhdGUkMCIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQ0Iiwibm93IiwiYWxsX2V2ZW50cyIsImF0MiIsImF0MSIsInRpbWluZ193aGVlbF9ub3ciLCJpc19pbl9maXJlZF9ldmVudHMiLCJ0YXJnZXRfZXZlbnQiLCJjdXJyZW50JDEiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiaW52YXJpYW50X3dpdGhfam9icyIsImpvYl9pbnZhcmlhbnQiLCJ4XzAxNiIsInBweF9vcHRpb25hbF9lXzAkMCIsImFfMDE3IiwiYl8wMTgiLCJnb3QkMCIsInNleHBpZmllciQwIiwiY29tcGFyYXRvciQwIiwiYV8wMTkiLCJiXzAyMCIsImludmFyaWFudCQwIiwic2V4cF9vZl90JDUiLCJ4XzAyMSIsImludmFyaWFudCQxIiwiaW52YXJpYW50X3dpdGhfam9icyQwIiwic2V4cF9vZl90JDYiLCJ4XzAyMiIsImlkJDEiLCJpc193YWxsX2Nsb2NrJDEiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwicmVhZF9vbmx5IiwiZmlyZSIsImNvbnRpbnVlJDAiLCJuZXh0JDAiLCJjb250aW51ZSQxIiwicHB4X29wdGlvbmFsX2VfMCQxIiwibmV4dCIsInBweF9vcHRpb25hbF9lXzAkMiIsInByZXYiLCJhbGFybV9wcmVjaXNpb24iLCJuZXh0X2FsYXJtX2ZpcmVzX2F0IiwibmV4dF9hbGFybV9ydW5zX2F0Iiwibm93JDAiLCJ0aW1pbmdfd2hlZWxfbm93JDAiLCJzY2hlZHVsZSIsInJlbW92ZV9mcm9tX2ZpcmVkIiwibmV3X3N0YXR1cyIsInNleHBfb2ZfZXZlbnQkMCIsInN0YXR1cyQxIiwicHJldl9maXJlZCQxIiwic2V0X3ByZXZfZmlyZWQkMCIsIm5leHRfZmlyZWQkMSIsInNldF9uZXh0X2ZpcmVkJDAiLCJpbnRlcnZhbCQxIiwic2V0X2ludGVydmFsJDAiLCJleGVjdXRpb25fY29udGV4dCQxIiwiY2FsbGJhY2skMSIsInNldF9hdCQwIiwiYWxhcm0kMSIsInNldF9hbGFybSQwIiwic2V4cF9vZl90JDciLCJpbnZhcmlhbnQkMiIsInNldF9zdGF0dXMkMSIsInNldF9zdGF0dXNfaWYkMCIsInNjaGVkdWxlZF9hdCIsImNyZWF0ZV9pbnRlcm5hbCIsImFkZCQwIiwiY3JlYXRlX2FuZF9hZGQiLCJhdCQyIiwiYWZ0ZXIkMCIsInJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wciIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXRfaW50ZXJ2YWxzIiwic2V4cF9vZl90JDgiLCJhYm9ydCIsImFib3J0X2lmX3Bvc3NpYmxlIiwiYWJvcnRfZXhuIiwicmVhc29uIiwiY3JlYXRlJDEiLCJpc19zY2hlZHVsZWQiLCJzY2hlZHVsZV9hdF9pbnRlcm5hbCIsInNjaGVkdWxlX2F0Iiwic2NoZWR1bGVfYWZ0ZXIiLCJzY2hlZHVsZV9hdF9pbnRlcnZhbHMiLCJyZXNjaGVkdWxlX2F0IiwicmVzY2hlZHVsZV9hZnRlciIsInJ1bl9hZnRlciIsInJ1bl9hdCIsInJ1bl9hdF9pbnRlcnZhbHMiLCJydW5fZmlyZWRfZXZlbnRzIiwic2VuZF9leG4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0Iiwic2VuZF9leG4kMCIsImFueV9maXJlZF9ldmVudHNfdG9fcnVuIiwiYWR2YW5jZV9jbG9jayIsImZpcmVfcGFzdF9hbGFybXMiLCJhZHZhbmNlX2ludGVybmFsIiwicHJlcGFyZV90b19hZHZhbmNlIiwiZmluaXNoX2FkdmFuY2luZyIsImVycm9ycyIsImFkdmFuY2VfYnlfYWxhcm1zIiwibWluX2FsYXJtX3RpbWUiLCJhZHZhbmNlX2J5X2FsYXJtc19ieSIsImJ5IiwiYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfIiwiYWR2YW5jZV9kaXJlY3RseSIsImFkdmFuY2VfZGlyZWN0bHlfYnkiLCJkdXJhdGlvbl9vZiIsInN0YXJ0IiwiZHVyYXRpb24iLCJtYXhfYWxhcm1fdGltZV9pbl9taW5fdGltaW5nX3ciLCJoYXNfZXZlbnRzX3RvX3J1biIsImNyZWF0ZV93aXRoX2NlbGwiLCJjZWxsIiwiY3JlYXRlX2Z1bGwiLCJleGVjIiwiZXhlYyQwIiwiZXhlY19mdW4iLCJleGVjX2dlbiIsInNleHBfb2ZfdCQwIiwiZXhlY3V0aW9uX2NvbnRleHRfMDAyIiwicmVjb3JkX2JhY2t0cmFjZXMiLCJzZXRfcmVjb3JkX2JhY2t0cmFjZXMiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8iLCJzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV8iLCJjaGVja19pbnZhcmlhbnRzIiwic2V0X2NoZWNrX2ludmFyaWFudHMiLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiIsInNldF95aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiIsInlpZWxkJDAiLCJzZXRfeWllbGQiLCJldmVudF9hZGRlZF9ob29rIiwic2V0X2V2ZW50X2FkZGVkX2hvb2siLCJqb2JfcXVldWVkX2hvb2siLCJzZXRfam9iX3F1ZXVlZF9ob29rIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2siLCJzZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2giLCJ0aW1lX3NvdXJjZSIsInNldF90aW1lX3NvdXJjZSIsInRvdGFsX2N5Y2xlX3RpbWUiLCJzZXRfdG90YWxfY3ljbGVfdGltZSIsImxhc3RfY3ljbGVfbnVtX2pvYnMiLCJzZXRfbGFzdF9jeWNsZV9udW1fam9icyIsImxhc3RfY3ljbGVfdGltZSIsInNldF9sYXN0X2N5Y2xlX3RpbWUiLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZCIsInNldF9ydW5fZXZlcnlfY3ljbGVfZW5kIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0Iiwic2V0X3J1bl9ldmVyeV9jeWNsZV9zdGFydCIsImluX2N5Y2xlIiwic2V0X2luX2N5Y2xlIiwiY3ljbGVfc3RhcnQiLCJzZXRfY3ljbGVfc3RhcnQiLCJjeWNsZV9jb3VudCIsInNldF9jeWNsZV9jb3VudCIsInVuY2F1Z2h0X2V4bl91bndyYXBwZWQiLCJzZXRfdW5jYXVnaHRfZXhuIiwic2V0X2N1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQiLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0Iiwic2V0X21haW5fZXhlY3V0aW9uX2NvbnRleHQiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIiwibG93X3ByaW9yaXR5X2pvYnMiLCJub3JtYWxfcHJpb3JpdHlfam9icyIsImpvYl9wb29sIiwic2V0X2pvYl9wb29sIiwiY2hlY2tfYWNjZXNzIiwic2V0X2NoZWNrX2FjY2VzcyIsInJlY29yZF9iYWNrdHJhY2VzJDAiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMCIsImNoZWNrX2ludmFyaWFudHMkMCIsInlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluJDAiLCJ5aWVsZCQxIiwiZXZlbnRfYWRkZWRfaG9vayQwIiwiam9iX3F1ZXVlZF9ob29rJDAiLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayQwIiwiZXh0ZXJuYWxfam9icyQwIiwidGltZV9zb3VyY2UkMCIsInRvdGFsX2N5Y2xlX3RpbWUkMCIsImxhc3RfY3ljbGVfbnVtX2pvYnMkMCIsImxhc3RfY3ljbGVfdGltZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZCQwIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlJDAiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnQkMCIsImluX2N5Y2xlJDAiLCJjeWNsZV9zdGFydCQwIiwiY3ljbGVfY291bnQkMCIsInVuY2F1Z2h0X2V4biIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQkMCIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHQkMCIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMkMCIsImxvd19wcmlvcml0eV9qb2JzJDAiLCJub3JtYWxfcHJpb3JpdHlfam9icyQwIiwiam9iX3Bvb2wkMCIsImNoZWNrX2FjY2VzcyQwIiwiY2hlY2tfYWNjZXNzX2Z1biIsImpvYl9wb29sX2Z1biIsIm5vcm1hbF9wcmlvcml0eV9qb2JzX2Z1biIsImxvd19wcmlvcml0eV9qb2JzX2Z1biIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnNfZnVuIiwibWFpbl9leGVjdXRpb25fY29udGV4dF9mdW4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0X2Z1biIsInVuY2F1Z2h0X2V4bl9mdW4iLCJjeWNsZV9jb3VudF9mdW4iLCJjeWNsZV9zdGFydF9mdW4iLCJpbl9jeWNsZV9mdW4iLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlX2Z1IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9mdW4iLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlX2Z1biIsImxhc3RfY3ljbGVfdGltZV9mdW4iLCJsYXN0X2N5Y2xlX251bV9qb2JzX2Z1biIsInRvdGFsX2N5Y2xlX3RpbWVfZnVuIiwidGltZV9zb3VyY2VfZnVuIiwiZXh0ZXJuYWxfam9ic19mdW4iLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va18iLCJqb2JfcXVldWVkX2hvb2tfZnVuIiwiZXZlbnRfYWRkZWRfaG9va19mdW4iLCJ5aWVsZF9mdW4iLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbl9mdW4iLCJjaGVja19pbnZhcmlhbnRzX2Z1biIsInJlY29yZF9iYWNrdHJhY2VzX2Z1biIsImNoZWNrX2FjY2Vzc19nZW4iLCJqb2JfcG9vbF9nZW4iLCJub3JtYWxfcHJpb3JpdHlfam9ic19nZW4iLCJsb3dfcHJpb3JpdHlfam9ic19nZW4iLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzX2dlbiIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfZ2VuIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF9nZW4iLCJ1bmNhdWdodF9leG5fZ2VuIiwiY3ljbGVfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkOSIsImN5Y2xlX3N0YXJ0X2dlbiIsImNvbXBpbGVfYWNjJDEwIiwiaW5fY3ljbGVfZ2VuIiwiY29tcGlsZV9hY2MkMTEiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGVfZ2UiLCJjb21waWxlX2FjYyQxMyIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlX2dlbiIsImNvbXBpbGVfYWNjJDE1IiwibGFzdF9jeWNsZV90aW1lX2dlbiIsImNvbXBpbGVfYWNjJDE2IiwibGFzdF9jeWNsZV9udW1fam9ic19nZW4iLCJjb21waWxlX2FjYyQxNyIsInRvdGFsX2N5Y2xlX3RpbWVfZ2VuIiwiY29tcGlsZV9hY2MkMTgiLCJ0aW1lX3NvdXJjZV9nZW4iLCJjb21waWxlX2FjYyQxOSIsImV4dGVybmFsX2pvYnNfZ2VuIiwiY29tcGlsZV9hY2MkMjAiLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va18kMCIsImNvbXBpbGVfYWNjJDIxIiwiam9iX3F1ZXVlZF9ob29rX2dlbiIsImNvbXBpbGVfYWNjJDIyIiwiZXZlbnRfYWRkZWRfaG9va19nZW4iLCJjb21waWxlX2FjYyQyMyIsInlpZWxkX2dlbiIsImNvbXBpbGVfYWNjJDI0IiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fZ2VuIiwiY29tcGlsZV9hY2MkMjUiLCJjaGVja19pbnZhcmlhbnRzX2dlbiIsImNvbXBpbGVfYWNjJDI2IiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDEiLCJjb21waWxlX2FjYyQyNyIsInJlY29yZF9iYWNrdHJhY2VzX2dlbiIsImNyZWF0ZSQyIiwiY2hlY2tfYWNjZXNzXzAwNyIsImpvYl9wb29sXzAwOSIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnNfMDE1IiwibG93X3ByaW9yaXR5X2pvYnNfMDEzIiwibm9ybWFsX3ByaW9yaXR5X2pvYnNfMDExIiwibWFpbl9leGVjdXRpb25fY29udGV4dF8wMTciLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XzAxOSIsInVuY2F1Z2h0X2V4bl8wMjEiLCJjeWNsZV9jb3VudF8wMjciLCJjeWNsZV9zdGFydF8wMjkiLCJpbl9jeWNsZV8wMzEiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfMDMzIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlXzAzIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF8wMzciLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlXzAzOSIsImxhc3RfY3ljbGVfdGltZV8wNDEiLCJsYXN0X2N5Y2xlX251bV9qb2JzXzA0MyIsInRvdGFsX2N5Y2xlX3RpbWVfMDQ1IiwidGltZV9zb3VyY2VfMDQ3IiwiZXh0ZXJuYWxfam9ic18wNDkiLCJqb2JfcXVldWVkX2hvb2tfMDUzIiwiZXZlbnRfYWRkZWRfaG9va18wNTUiLCJ5aWVsZF8wNTciLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbl8wNTkiLCJjaGVja19pbnZhcmlhbnRzXzA2MSIsInJlY29yZF9iYWNrdHJhY2VzXzA2NSIsImFyZ18wNjYiLCJibmRzXzAwNiIsImFyZ18wNjQiLCJibmRzXzAwNiQwIiwiYXJnXzA2MiIsImJuZHNfMDA2JDEiLCJhcmdfMDYwIiwiYm5kc18wMDYkMiIsImFyZ18wNTgiLCJibmRzXzAwNiQzIiwiYXJnXzA1NiIsImJuZHNfMDA2JDQiLCJhcmdfMDU0IiwiYm5kc18wMDYkNSIsImFyZ18wNTIiLCJibmRzXzAwNiQ2IiwiYXJnXzA1MCIsImJuZHNfMDA2JDciLCJhcmdfMDQ4IiwiYm5kc18wMDYkOCIsImFyZ18wNDYiLCJibmRzXzAwNiQ5IiwiYXJnXzA0NCIsImJuZHNfMDA2JDEwIiwiYXJnXzA0MiIsImJuZHNfMDA2JDExIiwiYXJnXzA0MCIsImJuZHNfMDA2JDEyIiwiYXJnXzAzOCIsImJuZHNfMDA2JDEzIiwiYXJnXzAzNiIsImJuZHNfMDA2JDE0IiwiYXJnXzAzNCIsImJuZHNfMDA2JDE1IiwiYXJnXzAzMiIsImJuZHNfMDA2JDE2IiwiYXJnXzAzMCIsImJuZHNfMDA2JDE3IiwiYXJnXzAyOCIsImJuZHNfMDA2JDE4IiwiYXJnXzAyMiIsImFyZzFfMDI0IiwiYXJnMF8wMjMiLCJyZXMwXzAyNSIsInJlczFfMDI2IiwiYm5kc18wMDYkMTkiLCJhcmdfMDIwIiwiYm5kc18wMDYkMjAiLCJhcmdfMDE4IiwiYm5kc18wMDYkMjEiLCJhcmdfMDE2IiwiYm5kc18wMDYkMjIiLCJhcmdfMDE0IiwiYm5kc18wMDYkMjMiLCJhcmdfMDEyIiwiYm5kc18wMDYkMjQiLCJhcmdfMDEwIiwiYm5kc18wMDYkMjUiLCJhcmdfMDA4IiwiYm5kc18wMDYkMjYiLCJ1bmNhdWdodF9leG4kMCIsImFyZzFfMDY4IiwiYXJnMF8wNjciLCJyZXMwXzA2OSIsInJlczFfMDcwIiwibnVtX3BlbmRpbmdfam9icyIsImxhc3RfY3ljbGVfbnVtX2pvYnMkMSIsInVub3JkZXJlZF9pc19zdWJsaXN0IiwiZXF1YWwiLCJzbWFsbCIsImxhcmdlIiwibGFyZ2UkMCIsIngiLCJsJDAiLCJ5IiwibCIsImNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IiwidGFibGUiLCJhcnJheSIsImZpZWxkIiwicSIsImZyZWVfam9iIiwiam9iX3F1ZXVlIiwiZiQwIiwiZW5xdWV1ZV9qb2IiLCJjcmVhdGUkMyIsImlzX2RlYWQiLCJzZXRfY2hlY2tfYWNjZXNzJDAiLCJiYWNrdHJhY2Vfb2ZfZmlyc3Rfam9iIiwidF9yZWYiLCJjaGVja19hY2Nlc3MkMSIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQkMSIsIndpdGhfZXhlY3V0aW9uX2NvbnRleHQxIiwidG1wX2NvbnRleHQiLCJvbGRfY29udGV4dCIsIndpdGhfZXhlY3V0aW9uX2NvbnRleHQiLCJjcmVhdGVfam9iIiwiZ290X3VuY2F1Z2h0X2V4biIsImFyZzFfMDcyIiwiYXJnMF8wNzEiLCJyZXMwXzA3MyIsInJlczFfMDc0Iiwic3RhcnRfY3ljbGUiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5IiwiZSIsImUkMCIsInN0YWJpbGl6ZSIsImNyZWF0ZV90aW1lX3NvdXJjZSIsInRpbWluZ193aGVlbF9jb25maWciLCJ3YWxsX2Nsb2NrIiwic2V0X3ByZXYiLCJwYXJhbSIsInNldF9uZXh0IiwicnVuIiwiY3JlYXRlMiIsInJ1bjEiLCJleGVjdXRpb25fY29udGV4dDEiLCJydW4yIiwiZXhlY3V0aW9uX2NvbnRleHQyIiwic2NoZWR1bGVfam9icyIsImFkZCIsIm9mX2xpc3QiLCJmaXJzdCIsImwkMSIsImwkMiIsInJ1biQwIiwicHJldiQwIiwiYWNjJDAiLCJjZWxsX29mX2hhbmRsZXIiLCJpbmRpciIsInNxdWFzaCIsInQkMyIsInQkNCIsImluZGlyJDEiLCJ0JDUiLCJpbmRpciQwIiwidCQyIiwiYV9pbnZhcmlhbnQiLCJoYW5kbGVyIiwicGVlayIsInZhbHVlIiwiaWZfZW1wdHlfdGhlbl9mYWlsd2l0aCIsImlzX2VtcHR5IiwiaXNfZnVsbCIsImZpbGwiLCJyZW1vdmVfaGFuZGxlciIsIngkMCIsImFkZF9oYW5kbGVyIiwiaGFuZGxlciQxIiwiaGFuZGxlciQyIiwicnVuJDEiLCJoYW5kbGVyJDAiLCJoYXNfaGFuZGxlcnMiLCJ1cG9uIiwidXBvbiQwIiwiY29ubmVjdCIsImJpbmRfcmVzdWx0IiwiYmluZF9yaHMiLCJiaW5kX3Jlc3VsdCQwIiwiaXZhciIsImJpbmRfcmhzX2NvbnRlbnRzIiwiaXZhciQwIiwibGFzdDEiLCJsYXN0MiIsImhhbmRsZXIxIiwiZXhlY3V0aW9uX2NvbnRleHQyJDAiLCJydW4yJDAiLCJoYW5kbGVyMSQwIiwidiQwIiwib2ZfaXZhciIsImludmFyaWFudF9hIiwicmV0dXJuJDAiLCJpc19kZXRlcm1pbmVkIiwiYmluZCIsImgiLCJyZWFkIiwiZmlsbF9pZl9lbXB0eSIsInRvX2JpbmFibGUiLCJvZl9iaW5hYmxlIiwic2V4cF9vZl9ob3ciLCJ2XzAwMSIsIm5ldmVyIiwicmV0dXJuJDEiLCJyZXR1cm4kMiIsInJldHVybiQzIiwidW5pdCIsImJvdGgkMCIsImExIiwiYTIiLCJkb25fdF93YWl0X2ZvciIsImYyIiwiZjEiLCJwcm9jZXNzIiwicmVzdCIsImNob2ljZSIsImVuYWJsZWQiLCJjaG9pY2VzIiwidW5yZWdpc3RlcnMiLCJyZWFkeSIsImNob29zZV9yZXN1bHQiLCJjaG9pY2VzJDAiLCJjaG9pY2VzJDEiLCJnZW5lcmljX2Nob29zZSIsInVucmVnaXN0ZXJzJDAiLCJjaG9vc2UyIiwiZmEiLCJiIiwiZmIiLCJhX2hhbmRsZXIiLCJiX2hhbmRsZXIiLCJhdiIsImNob29zZSIsImFueV9mIiwidHMiLCJhbnkiLCJhbnlfdW5pdCIsImZvciQwIiwiZG8kMCIsImxvb3AiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwiZm9yZXZlciIsInhzIiwic2VxbWFwIiwiYnMiLCJkcyIsImFsbF91bml0IiwiZCIsIm9rIiwib2ZfYV8wMDUiLCJ4XzAwNiIsImFyZzBfMDAyIiwicmVzMF8wMDMiLCJ4XzAwNyIsImNvbGxlY3QiLCJpc19jbG9zZWQiLCJmaWxsX2V4biIsImNsb3NlX2V4biIsImNsb3NlX2lmX29wZW4iLCJleHRlbmQiLCJkZWZlcnJlZDAiLCJkZWZlcnJlZDEiLCJpbXBvcnQwIiwiZXJyb3IiLCJkZXRhY2giLCJkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIiwiaGFuZGxlcl9zdGF0ZV9yZWYiLCJydW5fZiIsImJhZ19lbHQiLCJpbm5lcl9leG4kMCIsImlubmVyX2V4biIsImRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSIsInRhaWwiLCJnZXRfbmV4dF9lcnJvciIsImRldGFjaF9hbmRfZ2V0X25leHRfZXJyb3IiLCJleHRyYWN0X2V4biIsImNvbHVtbiIsIm1vbml0b3IkMSIsIm5hbWUkMSIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlJDEiLCJyZXN0JDAiLCJyZXN0JDEiLCJ0MyIsInJlc3QkMiIsInJlc3QkMyIsInRyYWNlcyIsInJlc3QkNCIsInQxJDAiLCJyZXN0JDUiLCJ0MiQwIiwicmVzdCQ2IiwidDIkMSIsImJhY2t0cmFjZSQyIiwibGlzdF9pZl9ub3RfZW1wdHkiLCJtYXRjaCQyIiwibWF0Y2gkMyIsImV4dHJhY3RfZXhuJDAiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwiYXJnMV8wMDgiLCJhcmcwXzAwNyIsInJlczBfMDA5IiwicmVzMV8wMTAiLCJ3aXRoaW5fY29udGV4dCIsImNvbnRleHQiLCJ3aXRoaW5fZ2VuIiwid2l0aGluIiwid2l0aGluX3YiLCJ3aXRoaW4kMCIsInNjaGVkdWxlX3dpdGhfZGF0YSIsIndvcmsiLCJ1cG9uX3dvcmtfZmlsbF9pIiwic2NoZWR1bGUkMCIsInByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0IiwicHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQkMCIsImNhbGxfYW5kX2ZpbGwiLCJzdHJlYW1faXRlciIsInN0cmVhbSIsImV4bnMiLCJmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm8iLCJyZXN1bHRfZmlsbGVyIiwiaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IiwidHJ5X3dpdGhfbG9nX2V4biIsInRyeV93aXRoIiwiZG9fZXh0cmFjdF9leG4iLCJoYW5kbGVfZXhuIiwicmVzIiwidHJ5X3dpdGhfb3JfZXJyb3IiLCJ0cnlfd2l0aF9qb2luX29yX2Vycm9yIiwicHJvdGVjdCIsImZpbmFsbHkkMCIsImZyIiwiciQwIiwiZmluYWxseV9leG4iLCJoYW5kbGVfZXJyb3JzIiwiY2F0Y2hfc3RyZWFtIiwiY2F0Y2gkMCIsImNhdGNoX2Vycm9yIiwiZGVwdGgiLCJuJDAiLCJmaXJzdF9leG4iLCJsb29wJDAiLCJsb29wX25leHQiLCJsb29wX25leHQkMCIsImNsb3NlZCIsInVuZm9sZCIsImNvcHlfdG9fdGFpbCIsImFwcGVuZCIsImZpbHRlcl9kZXByZWNhdGVkIiwiZmlsdGVyX21hcF9kZXByZWNhdGVkIiwiZmlyc3RfbiIsImF2YWlsYWJsZV9ub3ciLCJzcGxpdCIsInN0b3AiLCJyZWFzb25fZm9yX3N0b3BwaW5nIiwicHJlZml4IiwiZmluaXNoIiwibyIsImZpbmQiLCJmb3VuZCIsInVuZ3JvdXAiLCJpbnRlcmxlYXZlIiwibnVtX29wZW4iLCJjbG9zZSIsIm91dGVyX2Nsb3NlZCIsInRha2VfdW50aWwiLCJ6IiwiaXRlcl9kdXJhYmx5IiwiaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmQiLCJpdGVyX2R1cmFibHkkMCIsIm9mX2Z1biIsInNldF9pdmFyIiwiaGFzX2FueV93YWl0ZXJzIiwic2V0X2hhc19hbnlfd2FpdGVycyIsImhhc19hbnlfd2FpdGVycyQwIiwicmVwciIsIm9mX2FfMDAxIiwiaGFzX2FueV93YWl0ZXJzXzAwMyIsIml2YXJfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJpdmFyX2Z1biIsImhhc19hbnlfd2FpdGVyc19mdW4iLCJicm9hZGNhc3QiLCJ3YWl0IiwiaGFzX2FueV93YWl0ZXJzJDEiLCJ4XzAwMyIsImJpbmRfdW5pdCIsIndhaXRfZm9yIiwicnVuX3F1ZXVlZF9hbGFybXMiLCJ3YWxrX2FsYXJtcyIsIm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCIsImFkdmFuY2VfdG8iLCJuZXh0X2FsYXJtX2ZpcmVzX2F0JDAiLCJxdWV1ZWRfYWxhcm1zX3JhbiIsInNwYW5fdG9fdGltZSIsInJ1bl9hdF9pbnRlcm5hbCIsInRpbWUiLCJyZW1vdmVfYWxhcm0iLCJvZl9hXzAwNyIsIm9mX2hfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJzZXRfc2NoZWR1bGVkX2F0IiwibnVtX2ZpcmVzX3RvX3NraXAiLCJzZXRfbnVtX2ZpcmVzX3RvX3NraXAiLCJmaXJlZCIsInNjaGVkdWxlZF9hdCQwIiwibnVtX2ZpcmVzX3RvX3NraXAkMCIsImZpcmVkJDAiLCJvZl9hXzAxNSIsIm9mX2hfMDE2IiwiYWxhcm1fMDE4IiwiZmlyZWRfMDIyIiwibnVtX2ZpcmVzX3RvX3NraXBfMDI0Iiwic2NoZWR1bGVkX2F0XzAyNiIsInRpbWVfc291cmNlXzAyOCIsImFyZ18wMjkiLCJibmRzXzAxNyIsImFyZ18wMjciLCJibmRzXzAxNyQwIiwiYXJnXzAyNSIsImJuZHNfMDE3JDEiLCJhcmdfMDIzIiwiYm5kc18wMTckMiIsImFyZ18wMjEiLCJibmRzXzAxNyQzIiwiYXJnXzAxOSIsImJuZHNfMDE3JDQiLCJzZXhwX29mX3RfdW5pdCIsInhfMDMwIiwiZmlyZWQkMSIsImludmFyaWFudF9oIiwieF8wMzEiLCJzY2hlZHVsZWRfYXRfZnVuIiwiYV8wMzIiLCJiXzAzMyIsIm51bV9maXJlc190b19za2lwX2Z1biIsImZpcmVkX2Z1biIsIm9mX2FfMDM0Iiwib2ZfaF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsImFyZzBfMDQwIiwicmVzMF8wNDEiLCJvZl9hXzA0NCIsIm9mX2hfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsImFyZzBfMDQ4IiwicmVzMF8wNDkiLCJ4XzA1MiIsImEkMCIsIm9mX2FfMDUzIiwib2ZfaF8wNTQiLCJhcmcwXzA1NSIsInJlczBfMDU2IiwiYXJnMF8wNTciLCJyZXMwXzA1OCIsImFyZzFfMDYyIiwiYXJnMF8wNjEiLCJyZXMwXzA2MyIsInJlczFfMDY0IiwiaXNfaW5fdGltaW5nX3doZWVsIiwiYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlIiwicnVuX2F0JDAiLCJydW5fYWZ0ZXIkMCIsImF0X3RpbWVzIiwibmV4dF90aW1lIiwiYXRfdmFyeWluZ19pbnRlcnZhbHMiLCJjb21wdXRlX3NwYW4iLCJzdGFydCQwIiwicnVuX3JlcGVhdGVkbHkiLCJjb250aW51ZV9vbl9lcnJvciIsInN0b3AkMCIsInN0b3AkMSIsImNvbnRpbnVlX3RyeV93aXRoIiwiY29udGludWVfZiIsImJhc2UiLCJvcl9lcnJvciIsImV2ZXJ5IiwiZXZlcnkkMCIsInN0YXJ0JDEiLCJydW5fYXRfaW50ZXJ2YWxzJDAiLCJ3aXRoX3RpbWVvdXQiLCJ0aW1lb3V0Iiwib2Zfc3luY2hyb25vdXMiLCJ0b19zeW5jaHJvbm91cyIsImFkdmFuY2VfZGlyZWN0bHlfaWZfcXVpZXNjZW50IiwiaXNfcXVlc2NlbnQiLCJ3aGVlbCIsIm5leHRfYWxhcm0iLCJoYXNfdXBjb21pbmdfZXZlbnQiLCJuZXh0X3VwY29taW5nX2V2ZW50IiwibmV4dF91cGNvbWluZ19ldmVudF9leG4iLCJldmVudF9wcmVjaXNpb24iLCJhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayIsImhhbmRsZSIsImFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayIsInJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayIsImFyciIsImciLCJpZHgiLCJhcnIkMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCIsIm1hcF9jeWNsZV90aW1lcyIsImxvbmdfY3ljbGVzIiwiYXRfbGVhc3QiLCJjeWNsZV9udW1fam9icyIsImludCQwIiwidGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qIiwiY3JlYXRlX2FsYXJtIiwiYWRkX2ZpbmFsaXplciIsImhlYXBfYmxvY2siLCJmaW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCIsInJ1bl9jeWNsZSIsIm51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSIsImN5Y2xlX3RpbWUiLCJyZXMxXzAwNCIsInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haSIsIm1ha2VfYXN5bmNfdW51c2FibGUiLCJyZXNldF9pbl9mb3JrZWRfcHJvY2VzcyIsIm1heV9yZXR1cm5faW1tZWRpYXRlbHkiLCJ5aWVsZF9ldmVyeSIsImNvdW50X3VudGlsX3lpZWxkIiwidGhpc19jeWNsZV90aW1lIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyIsInlpZWxkX3RoZW5fcnVuIiwid29ya2VyIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQwIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQxIiwiYnQiLCJlbnF1ZXVlJDAiLCJxdWV1ZSIsInJ1bm5pbmciLCJleGVjX2N0eCIsInNlbWFwaG9yZSIsImFwcGx5IiwidF9mIiwiZGYiLCJkdiIsIm1heF9jb25jdXJyZW50X2pvYnMiLCJ3YWl0ZXIiLCJhYm9ydGVkIiwicGFyZW50X21vbml0b3IiLCJlcnIiLCJvZl90aHVuayIsInRodW5rIiwic3ltYm9sJDEiLCJkMSIsImQyIiwib2ZfYV8wMDIiLCJyZXMwXzAwNCIsImxlbmd0aF8wMDYiLCJibmRzXzAwNSIsImxpc3QiLCJjcmVhdGVfY291bnRlciIsInB1c2giLCJwb3BfZXhuIiwic2V4cF9vZl9vdXRjb21lIiwidl8wMDIiLCJ2XzAwMyIsImNsZWFuZWQiLCJudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIiwic2V0X251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQiLCJjYXBhY2l0eV9hdmFpbGFibGUiLCJzZXRfY2FwYWNpdHlfYXZhaWxhYmxlIiwibnVtX2pvYnNfcnVubmluZyIsInNldF9udW1fam9ic19ydW5uaW5nIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIiwiY2xlYW5lZCQwIiwibnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCQwIiwiY2FwYWNpdHlfYXZhaWxhYmxlJDAiLCJudW1fam9ic19ydW5uaW5nJDAiLCJqb2JzX3dhaXRpbmdfdG9fc3RhcnQkMCIsImpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSQwIiwibWF4X2NvbmN1cnJlbnRfam9icyQwIiwib2ZfYV8wMTEiLCJqb2JzX3dhaXRpbmdfdG9fc3RhcnRfMDE5Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlXzAxNyIsIm1heF9jb25jdXJyZW50X2pvYnNfMDE1IiwiY29udGludWVfb25fZXJyb3JfMDEzIiwibnVtX2pvYnNfcnVubmluZ18wMjEiLCJjYXBhY2l0eV9hdmFpbGFibGVfMDIzIiwiaXNfZGVhZF8wMjUiLCJjbGVhbnNfMDI3IiwibnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF8wMjkiLCJjbGVhbmVkXzAzMSIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJhcmdfMDI2IiwiYm5kc18wMTIkMiIsImFyZ18wMjQiLCJibmRzXzAxMiQzIiwiYm5kc18wMTIkNCIsIm91dGNvbWVfMDA5Iiwic3RhcnRfMDA2Iiwidl8wMDgiLCJibmRzXzAwNSQwIiwiYm5kc18wMTIkNSIsImJuZHNfMDEyJDYiLCJibmRzXzAxMiQ3IiwiYm5kc18wMTIkOCIsInhfMDMzIiwib2Zfa2luZF8wMzUiLCJ4XzAzNiIsIm51bV9qb2JzX3dhaXRpbmdfdG9fc3RhcnQiLCJjbGVhbl9yZXNvdXJjZSIsImtpbGwiLCJhdF9raWxsIiwiY2xlYW5lZCQxIiwic3RhcnRfam9iIiwiam9iX3Jlc291cmNlIiwiam9iX3Jlc291cmNlcyIsImNyZWF0ZV93aXRoIiwib3V0Y29tZSIsImludGVybmFsX2pvYiIsImhhbmRsZV9lbnF1ZXVlX3Jlc3VsdCIsImVucXVldWVfZXhjbHVzaXZlIiwiZG9uZSIsImZfcGxhY2Vob2xkZXIiLCJzbG90IiwibW9uYWRfc2VxdWVuY2VfaG93IiwiaG93IiwibW9uYWRfc2VxdWVuY2VfaG93MiIsInByaW9yX2pvYnNfZG9uZSIsImFsbF9kdW1teV9qb2JzX3J1bm5pbmciLCJkdW1teV9qb2JzX3J1bm5pbmciLCJjYXBhY2l0eV9hdmFpbGFibGUkMSIsInRocmVhZF9zYWZlX2VucXVldWVfam9iIiwiY3ljbGVfc3RhcnRfbnMiLCJjeWNsZV90aW1lc19ucyIsImN5Y2xlX3RpbWVzIiwiZXZlbnRfcHJlY2lzaW9uX25zIiwiYm9vbCIsImFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rJDAiLCJhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2skMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyQwIiwicmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4JDAiLCJ3aXRoX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJ3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSQwIiwiY29tcGFyZSIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsInJpZ2h0XzAwNCIsImxlZnRfMDAzIiwidl8wMDYiLCJmb2xkaSIsInNlcW1hcGkiLCJpdGVyaSIsIm1hcGkiLCJmaWx0ZXJpIiwiYm9vbHMiLCJmaWx0ZXJfbWFwaSIsImNvbmNhdF9tYXBpIiwiZmluZF9tYXBpIiwiYXV4IiwiZmluZGkiLCJlbHQiLCJleGlzdHNpIiwiZm9yX2FsbGkiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyIiwiY29uY2F0X21hcCIsImZpbmRfbWFwIiwiam9iX2NvdW50IiwiZ2VuX2NvbXB1dGF0aW9uIiwieXMiLCJ0bCIsImhkIiwiY2hhbmdlIiwib3B0IiwidXBkYXRlIiwiaXRlcl9rZXlzIiwiYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIiLCJhbGlzdCIsImZvbGRfcmlnaHQiLCJhbGlzdF9pbl9kZWNyZWFzaW5nX2tleV9vcmRlciIsImNvbXB1dGF0aW9uIiwiam9iX21hcCIsInNlcXVlbmNlIiwiZmlsdGVyX2tleXMiLCJtZXJnZSIsInJlcmFpc2UiLCJnZW5lcmFsIiwiaGFzaGFibGUiLCJnZW5lcmFsJDAiLCJyZWN1cnNpdmUiLCJmX29uZXN0ZXAiLCJtZW1vaXplZCIsImNvbWJpbmUiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJtYXBfZXJyb3IiLCJpZ25vcmVfbSIsImpvaW4iLCJzeW1ib2xfYmluZCIsImUxIiwiZTIiLCJzeW1ib2xfYmluZCQwIiwic3ltYm9sX21hcCQwIiwib2tfZXhuIiwib2ZfZXhuIiwib2ZfZXhuX3Jlc3VsdCIsIm1zZyIsInNleHBfb2YiLCJlcnJvcl9zIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidGFnIiwidGFnX3MiLCJ0YWdfc19sYXp5IiwidGFnX2FyZyIsInVuaW1wbGVtZW50ZWQiLCJjb21iaW5lX2Vycm9ycyIsImNvbWJpbmVfZXJyb3JzX3VuaXQiLCJmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIiwiZmluZF9tYXBfb2siLCJjdXJyZW50X2Vycm9yIiwiZXJyb3JzJDAiLCJva191bml0IiwidHJ5X3dpdGgkMCIsInRyeV93aXRoX2pvaW4iLCJzdGF0ZSQwIiwiZm9sZF9tYXBpIiwibWFwaV9mIiwiZm9sZF9mIiwidGhyb3R0bGUiLCJjIiwiYyQxIiwiYyQwIiwiaSQwIiwiYWNjdW0iLCJtYXliZV92Iiwic2hvd19kZWJ1Z19tZXNzYWdlcyIsImNoZWNrX2ludmFyaWFudCIsInhfMDA0IiwidmFsdWVzX3JlYWQiLCJzZXRfdmFsdWVzX3JlYWQiLCJ2YWx1ZXNfcmVhZCQwIiwicGlwZV9pZF8wMDkiLCJ2YWx1ZXNfcmVhZF8wMTEiLCJibmRzXzAwOCIsInZfMDEzIiwiYm5kc18wMDgkMCIsImJuZHNfMDA4JDEiLCJ2YWx1ZXNfc2VudF9kb3duc3RyZWFtIiwidmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1Iiwid2hlbl9zZW50X2Rvd25zdHJlYW0iLCJjb25zdW1lciIsIndhbnRzIiwiY29uc3VtZXIkMCIsIndhbnRzJDAiLCJvZl9hXzAyOSIsImNvbnN1bWVyXzAzMyIsIndhbnRzXzAzMSIsImJuZHNfMDMwIiwiYXJnMF8wMTgiLCJyZXMwXzAxOSIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJ2XzAyMCIsImFyZzFfMDI1IiwiYXJnMF8wMjQiLCJyZXMwXzAyNiIsInJlczFfMDI3Iiwidl8wMjMiLCJibmRzXzAzMCQwIiwiZmlsbF93aXRoX2VvZiIsImkkMSIsImZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQiLCJyZWFkeV8wMzkiLCJmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkXzAzNyIsImJuZHNfMDM2IiwiYm5kc18wMzYkMCIsImNvbnN1bWVycyIsInNldF9jb25zdW1lcnMiLCJibG9ja2VkX3JlYWRzIiwiYmxvY2tlZF9mbHVzaGVzIiwicHVzaGJhY2siLCJzZXRfcHVzaGJhY2siLCJyZXNlcnZlZF9zcGFjZSIsInNldF9yZXNlcnZlZF9zcGFjZSIsInNpemVfYnVkZ2V0Iiwic2V0X3NpemVfYnVkZ2V0IiwiY29uc3VtZXJzJDAiLCJibG9ja2VkX3JlYWRzJDAiLCJibG9ja2VkX2ZsdXNoZXMkMCIsInB1c2hiYWNrJDAiLCJyZXNlcnZlZF9zcGFjZSQwIiwic2l6ZV9idWRnZXQkMCIsInNleHBfb2ZfcGlwZSIsIm9mX2FfMDQxIiwib2ZfcGhhbnRvbV8wNDIiLCJpZF8wNDQiLCJpbmZvXzA0NiIsImJ1ZmZlcl8wNTAiLCJzaXplX2J1ZGdldF8wNTIiLCJyZXNlcnZlZF9zcGFjZV8wNTQiLCJwdXNoYmFja18wNTYiLCJudW1fdmFsdWVzX3JlYWRfMDU4IiwicmVhZF9jbG9zZWRfMDY2IiwiY2xvc2VkXzA2NCIsImJsb2NrZWRfcmVhZHNfMDYyIiwiYmxvY2tlZF9mbHVzaGVzXzA2MCIsImNvbnN1bWVyc18wNjgiLCJ1cHN0cmVhbV9mbHVzaGVkc18wNzAiLCJhcmdfMDcxIiwiYm5kc18wNDMiLCJhcmdfMDY5IiwiYm5kc18wNDMkMCIsImFyZ18wNjciLCJibmRzXzA0MyQxIiwiYXJnXzA2NSIsImJuZHNfMDQzJDIiLCJhcmdfMDYzIiwiYm5kc18wNDMkMyIsImFyZ18wNjEiLCJibmRzXzA0MyQ0IiwiYXJnXzA1OSIsImJuZHNfMDQzJDUiLCJhcmdfMDU3IiwiYm5kc18wNDMkNiIsImFyZ18wNTUiLCJibmRzXzA0MyQ3IiwiYXJnXzA1MyIsImJuZHNfMDQzJDgiLCJhcmdfMDUxIiwiYm5kc18wNDMkOSIsInZfMDQ3IiwiYXJnXzA0OSIsImJuZF8wNDgiLCJibmRzXzA0MyQxMCIsImFyZ18wNDUiLCJibmRzXzA0MyQxMSIsImVmZmVjdGl2ZV9zaXplX2J1ZGdldCIsImhhc2giLCJpc19yZWFkX2Nsb3NlZCIsInB1c2hiYWNrJDEiLCJ1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIiwiZGVsdGEiLCJ4XzA3NSIsInhfMDM1IiwiaSQyIiwic2V4cF9vZl9waGFudG9tIiwib2ZfYV8wNzYiLCJ4XzA3NyIsInNleHBfb2ZfcGhhbnRvbSQwIiwib2ZfYV8wNzgiLCJ4XzA3OSIsImlkX3JlZiIsImluaXRpYWxfYnVmZmVyIiwidmFsaWRhdGVfc2l6ZV9idWRnZXQiLCJ1cGRhdGVfcHVzaGJhY2siLCJ4XzA4MCIsImNsb3NlX3JlYWQiLCJ4XzA4MSIsImZsdXNoIiwiY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjIiwidyIsImNyZWF0ZV9yZWFkZXIiLCJjbG9zZV9vbl9leGNlcHRpb24iLCJjcmVhdGVfd3JpdGVyIiwidmFsdWVzX3dlcmVfcmVhZCIsImZsdXNoJDAiLCJmbHVzaF9yZXN1bHQiLCJjb25zdW1lX29uZSIsImNvbnN1bWUiLCJtYXhfcXVldWVfbGVuZ3RoIiwicmVzdWx0JDAiLCJzZXRfc2l6ZV9idWRnZXQkMCIsInJlc2VydmVfc3BhY2UiLCJkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSIsInN0YXJ0X3dyaXRlIiwieF8wODMiLCJzaXplIiwieF8wODIiLCJmaW5pc2hfd3JpdGUiLCJibG9ja2VkX3JlYWQiLCJpdmFyJDEiLCJ0cmFuc2Zlcl9pbl93aXRob3V0X3B1c2hiYWNrIiwidHJhbnNmZXJfaW4iLCJ3cml0ZSIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2siLCJ3cml0ZSQwIiwid3JpdGVfd2hlbl9yZWFkeSIsIndyaXRlX2lmX29wZW4iLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrX2lmX29wZW4iLCJlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyIsInhfMDg1Iiwic3RhcnRfcmVhZCIsImxhYmVsIiwieF8wODYiLCJnZW5fcmVhZF9ub3ciLCJnZXRfbWF4X3F1ZXVlX2xlbmd0aCIsIm1heF9xdWV1ZV9sZW5ndGgkMCIsInJlYWRfbm93IiwicmVhZF9ub3ckMCIsInJlYWQkMCIsInJlYWRfZXhuIiwidmFsdWVzX2F2YWlsYWJsZSIsInJlYWRfY2hvaWNlIiwicmVhZF9jaG9pY2Vfc2luZ2xlX2NvbnN1bWVyX2V4IiwicmVhZF9leGFjdGx5IiwibnVtX3ZhbHVlcyIsImFscmVhZHlfcmVhZCIsImRvd25zdHJlYW1fZmx1c2hlZCIsInVwc3RyZWFtX2ZsdXNoZWQiLCJhZGRfY29uc3VtZXIiLCJwaXBlX2lkIiwiY29uc3VtZXIkMSIsInVwc3RyZWFtIiwiZG93bnN0cmVhbSIsInVwc3RyZWFtX2ZsdXNoZWQkMCIsImFyZzBfMDg3IiwicmVzMF8wODgiLCJmb2xkX2dlbiIsImZsdXNoZWQiLCJmb2xkX3dpdGhvdXRfcHVzaGJhY2siLCJ3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciIsIml0ZXJfd2l0aG91dF9wdXNoYmFjayIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IiLCJtYXhfaXRlcmF0aW9uc19wZXJfam9iJDAiLCJtYXhfaXRlcmF0aW9uc19wZXJfam9iJDEiLCJyZW1haW5pbmciLCJyZW1haW5pbmckMCIsImRyYWluIiwiZHJhaW5fYW5kX2NvdW50Iiwic3VtIiwicmVhZF9hbGwiLCJpbnB1dCIsInRvX3N0cmVhbV9kZXByZWNhdGVkIiwib2Zfc3RyZWFtX2RlcHJlY2F0ZWQiLCJ0cmFuc2ZlciIsIm5leHRfZGVmZXJyZWQiLCJjaGVja19jbG9zZWRfbG9vcF9uZXh0IiwidHJhbnNmZXJfZ2VuIiwib3V0cHV0IiwibGluayIsInVubGluayIsImlucHV0X2F2YWlsYWJsZV9vcl9vdXRwdXRfY2xvcyIsIm91dHB1dF9jbG9zZWQiLCJ0cmFuc2ZlciQwIiwidHJhbnNmZXJfaWQiLCJtYXBfZ2VuIiwiY29uY2F0X21hcF9saXN0IiwiZmlsdGVyX21hcCQwIiwiZm9sZGluZ19maWx0ZXJfbWFwIiwiZm9sZGluZ19maWx0ZXJfbWFwJDAiLCJmb2xkaW5nX21hcCIsImFjY3VtJDAiLCJvZl9xdWV1ZV9pbnRlcm5hbCIsIm9mX3F1ZXVlIiwiZW1wdHkiLCJzaW5nbGV0b24iLCJ3cml0ZXIiLCJyZWFkZXIiLCJvZl9zZXF1ZW5jZSIsInNlcXVlbmNlJDEiLCJzZXF1ZW5jZSQwIiwidG9fc2VxdWVuY2UiLCJpbnRlcmxlYXZlX3BpcGUiLCJpbnB1dHMiLCJvdXRwdXRfd3JpdGVyIiwibnVtX3BpcGVzX3JlbWFpbmluZyIsImRlY3JfbnVtX3BpcGVzX3JlbWFpbmluZyIsImhlYXAiLCJoYW5kbGVfcmVhZCIsImVvZl9vcl9vayIsInBvcF9oZWFwX2FuZF9sb29wIiwiaW5pdGlhbF9wdXNoIiwiY29uY2F0X3BpcGUiLCJmb3JrIiwicHVzaGJhY2tfdXNlcyIsIndyaXRlcjAiLCJyZWFkZXIwIiwid3JpdGVyMSIsInJlYWRlcjEiLCJzb21lX3JlYWRlcl93YXNfY2xvc2VkIiwic29tZV9yZWFkZXJfd2FzX2Nsb3NlZCQwIiwic3RpbGxfb3BlbiIsImZpbHRlcl9vcGVuIiwic3RpbGxfb3BlbiQwIiwic2V0X2luZm8iLCJ2YWx1ZV9hdmFpbGFibGUiLCJzZXRfdmFsdWVfYXZhaWxhYmxlIiwidGFrZW4iLCJjdXJyZW50X3ZhbHVlIiwidmFsdWVfYXZhaWxhYmxlJDAiLCJ0YWtlbiQwIiwiY3VycmVudF92YWx1ZSQwIiwidmFsdWVfYXZhaWxhYmxlJDEiLCJ4XzAxMCIsInRha2VuXzAwNiIsImN1cnJlbnRfdmFsdWVfMDA0IiwidmFsdWVfYXZhaWxhYmxlXzAwOCIsImJuZHNfMDAzIiwiYm5kc18wMDMkMCIsImJuZHNfMDAzJDEiLCJ2YWx1ZV9hdmFpbGFibGVfZnVuIiwiYV8wMTEiLCJiXzAxMiIsInRha2VuX2Z1biIsImN1cnJlbnRfdmFsdWVfZnVuIiwicGVla19leG4iLCJ4XzAxMyIsIm9mX2FfMDE0IiwieF8wMTUiLCJvZl9hXzAxNiIsInhfMDE3Iiwid3JpdGVfb25seSIsInRha2Vfbm9uZW1wdHkiLCJ0YWtlX25vd19leG4iLCJ0YWtlX25vdyIsInRha2UiLCJ1cGRhdGVfZXhuIiwidGFrZW4kMSIsInB1dCIsInBpcGVfd2hlbl9yZWFkeSIsInJlc3RfZXhuIiwiY3JlYXRlX29yX2Vycm9yIiwid2FpdF9leG4iLCJmb3JjZSIsImZvcmNlX2V4biIsImJpbmQkMSIsImlzX2ZvcmNlZCIsIndhaXRzXzAwMyIsInNpZ25hbCIsImRlbGV0ZSQwIiwiY2hlY2tfZmllbGQkMCIsIndhaXRfZm9yX3ByZXZpb3VzIiwic3ltYm9sIiwic3ltYm9sJDAiLCJzZXhwX29mX3QiLCJyZXR1cm4kMCIsImJpbmQiLCJ0IiwiZiIsIm1hcCIsInNleHBfb2ZfdCQwIiwiY3JlYXRlIiwiZG9uX3Rfd2FpdF9mb3IiLCJpbnZhcmlhbnQiLCJpc19kZXRlcm1pbmVkIiwibmV2ZXIiLCJwZWVrIiwidW5pdCIsInZhbHVlX2V4biIsInVwb24iLCJib3RoIiwidDEiLCJ0MiIsInJlc3VsdCIsImExIiwiYTIiLCJvayIsImlnbm9yZV9tIiwiYW55IiwidHMiLCJ4IiwiYW55X3VuaXQiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwibG9vcCIsImZvbGRpIiwiaW5pdCIsImkiLCJiIiwieHMiLCJmb2xkIiwiYSIsInNlcW1hcGkiLCJicyIsImFsbCQwIiwiZHMiLCJhbGxfdW5pdCIsImQiLCJpdGVyaSIsImhvdyIsIm1hcGkiLCJmaWx0ZXJpIiwiYm9vbHMiLCJhYyIsImZpbHRlcl9tYXBpIiwiY29uY2F0X21hcGkiLCJmaW5kX21hcGkiLCJ0bCIsImhkIiwic29tZSIsImZpbmRpIiwiZWx0IiwiZmluZCIsImV4aXN0c2kiLCJmb3JfYWxsaSIsIml0ZXIiLCJtYXAkMSIsImZpbHRlciIsImZpbHRlcl9tYXAiLCJjb25jYXRfbWFwIiwiZmluZF9tYXAiLCJleGlzdHMiLCJmb3JfYWxsIiwibiIsImFsbF91bml0JDAiLCJjb21iaW5lIiwiZXJyIiwiZXJyb3IiLCJyIiwiZmFpbCIsImZhaWxmIiwiZm9ybWF0IiwibWFwX2Vycm9yIiwiam9pbiIsInN5bWJvbF9iaW5kIiwiYXBwbHkiLCJlMSIsImUyIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsIm9rX2V4biIsIm9mX2V4biIsImJhY2t0cmFjZSIsImV4biIsIm9mX2V4bl9yZXN1bHQiLCJtc2ciLCJ2Iiwic2V4cF9vZiIsImVycm9yX3MiLCJzZXhwIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidGFnIiwidGFnX3MiLCJ0YWdfc19sYXp5IiwidGFnX2FyZyIsIm1lc3NhZ2UiLCJzZXhwX29mX2EiLCJ1bmltcGxlbWVudGVkIiwiY29tYmluZV9lcnJvcnMiLCJsIiwiY29tYmluZV9lcnJvcnNfdW5pdCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX21hcF9vayIsImVycm9ycyIsImN1cnJlbnRfZXJyb3IiLCJlcnJvcnMkMCIsIm9rX3VuaXQiLCJ0cnlfd2l0aCIsImV4dHJhY3RfZXhuIiwicnVuJDAiLCJyZXN0IiwiaGVyZSIsIm5hbWUiLCJydW4iLCJ0cnlfd2l0aF9qb2luIiwibGlzdCIsImFjYyIsInN0YXRlJDAiLCJ1cG9uJDEiLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwicG9zJDAiLCJwb3MiLCJhbGwiLCJzZXhwX29mX3QiLCJzZXhwX29mX3QkMCIsImNhbGxiYWNrIiwiciIsImNhbGxiYWNrJDAiLCJ2Iiwic2V4cF9vZl90JDEiLCJleHRyYWN0X2V4biIsInN1YnNjcmliZXJzX2luZGV4Iiwic3Vic2NyaWJlZF9mcm9tIiwib25fY2FsbGJhY2tfcmFpc2UiLCJtYXRjaCQxIiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJ2JDAiLCJyZXMiLCJoIiwiY2FsbGJhY2tzIiwic2V0X2NhbGxiYWNrcyIsInN1YnNjcmliZXJzIiwic2V0X3N1YnNjcmliZXJzIiwibnVtX3N1YnNjcmliZXJzIiwic2V0X251bV9zdWJzY3JpYmVycyIsImNhbGxiYWNrX2FyaXR5IiwiY2FsbGJhY2tzJDAiLCJzdWJzY3JpYmVycyQwIiwibnVtX3N1YnNjcmliZXJzJDAiLCJzZXhwX29mX2J1cyIsIm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93ciIsImNyZWF0ZWRfZnJvbSIsIm5hbWUiLCJzdGF0ZSIsIndyaXRlX2V2ZXJfY2FsbGVkIiwiaSIsIm1hdGNoIiwicmVhZF9vbmx5IiwidCIsImludmFyaWFudCIsImludmFyaWFudF9hIiwieF8wMTEiLCJjaGVjayIsImYiLCJjYWxsYmFja3NfZnVuIiwic3Vic2NyaWJlcnNfZnVuIiwic3Vic2NyaWJlciIsInN1YnNjcmliZXIkMCIsInhfMDA1IiwiY2FsbGJhY2tfZnVuIiwibnVtX3N1YnNjcmliZXJzX2Z1biIsImlzX2Nsb3NlZCIsInNleHBfb2ZfdCQyIiwib2ZfY2FsbGJhY2tfMDEyIiwieF8wMTMiLCJpbnZhcmlhbnQkMCIsInNleHBfb2ZfdCQzIiwib2ZfY2FsbGJhY2tfMDE0IiwieF8wMTUiLCJpbnZhcmlhbnQkMSIsInN0YXJ0X3dyaXRlX2ZhaWxpbmciLCJ4XzAxNiIsInhfMDE3IiwiY2FwYWNpdHkiLCJtYXliZV9zaHJpbmtfY2FwYWNpdHkiLCJkZXNpcmVkX2NhcGFjaXR5IiwiY29weV9hbmRfc2hyaW5rIiwiYXJyYXkiLCJuZXdfYXJyYXkiLCJhZGRfc3Vic2NyaWJlciIsImF0X3N1YnNjcmliZXJzX2luZGV4IiwicmVtb3ZlX3N1YnNjcmliZXIiLCJ1bnN1YnNjcmliZV9hc3N1bWluZ192YWxpZF9zdWIiLCJzdWJzY3JpYmVyX2luZGV4IiwibGFzdF9zdWJzY3JpYmVyX2luZGV4IiwibGFzdF9zdWJzY3JpYmVyIiwidW5zdWJzY3JpYmUiLCJ0byIsInVuc3Vic2NyaWJlX2FsbCIsIm9uX2Nsb3NlIiwiZmluaXNoX3dyaXRlIiwiY2xvc2UiLCJjYWxsX29uX2NhbGxiYWNrX3JhaXNlIiwiZXJyb3IiLCJleG4kMCIsImV4biIsImNhbGxiYWNrX3JhaXNlZCIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlIiwidW5zYWZlX2dldF9jYWxsYmFjayIsImEiLCJ3cml0ZSIsImExIiwibGVuIiwibGFzdF92YWx1ZSIsIndyaXRlX2xvY2FsIiwid3JpdGUyIiwiYTIiLCJ3cml0ZTMiLCJhMyIsIndyaXRlNCIsImE0Iiwid3JpdGU1IiwiYXJnMSIsImFyZzIiLCJhcmczIiwiYXJnNCIsImFyZzUiLCJjcmVhdGVfZXhuIiwiY2FuX3N1YnNjcmliZSIsInN1YnNjcmliZV9leG4iLCJ4XzAxOSIsImJ1c19pZCQwIiwiYnVzX2lkIiwiY2FwYWNpdHkkMCIsIm5ld19jYXBhY2l0eSIsImNvcHlfYW5kX2RvdWJsZSIsImFyZzEkMCIsImFyZzEkMSIsImFyZzIkMCIsImFyZzEkMiIsImFyZzIkMSIsImFyZzMkMCIsImFyZzEkMyIsImFyZzIkMiIsImFyZzMkMSIsImFyZzQkMCIsIml0ZXJfZXhuIiwieF8wMjAiLCJzZXhwX29mX3QkNCIsImZvbGRfZXhuIiwiZm9sZF9hcml0eSIsImluaXQiLCJ4XzAzMCIsImE1IiwiYXNzZXJ0X25vX2FsbG9jYXRpb24iLCJidXNfciIsInN0YXJ0aW5nX21pbm9yX3dvcmRzIiwic3RhcnRpbmdfbWFqb3Jfd29yZHMiLCJlbmRpbmdfbWlub3Jfd29yZHMiLCJlbmRpbmdfbWFqb3Jfd29yZHMiLCJnb3QiLCJzZXhwaWZpZXIiLCJjb21wYXJhdG9yIiwiYV8wMzEiLCJiXzAzMiIsImdvdCQwIiwic2V4cGlmaWVyJDAiLCJjb21wYXJhdG9yJDAiLCJhXzAzMyIsImJfMDM0IiwiY3JlYXRlIiwiYXJpdHkiLCJidXMxIiwiYnVzMiIsImJ1czMiLCJidXM0IiwiYnVzNSIsImR1bW15X3NyY19wb3NfdGhhdF9zaG93c191cF9pbiIsInNleHBfb2ZfdCIsInNleHBfb2ZfdCQwIiwib2ZfYWRkcmVzc18wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImFyZzBfMDA2IiwicmVzMF8wMDciLCJsb2dfbGV2ZWwiLCJoYW5kbGVfZXZlbnQiLCJ0IiwiZXZlbnQiLCJlIiwiY29ubiIsIm9uX2V2ZW50IiwiYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0IiwiY3VycmVudF9jb25uZWN0aW9uIiwiY2xvc2VfZmluaXNoZWQkMCIsImlzX2Nsb3NlZCQwIiwiY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0Iiwic2V4cF9vZl90JDEiLCJwYXJhbSIsImNvbm5fMDIzIiwibmV4dF9jb25uZWN0X3Jlc3VsdF8wMjYiLCJkb25fdF9yZWNvbm5lY3RfMDM2IiwiY2xvc2VfZmluaXNoZWRfMDM0IiwiY2xvc2Vfc3RhcnRlZF8wMzIiLCJldmVudF9idXNfMDMwIiwiZXZlbnRfaGFuZGxlcl8wMjgiLCJhcmdfMDQxIiwiYm5kc18wMTYiLCJhcmdfMDM5IiwiYm5kc18wMTYkMCIsImFyZ18wMzciLCJibmRzXzAxNiQxIiwiYXJnXzAzNSIsImJuZHNfMDE2JDIiLCJhcmdfMDMzIiwiYm5kc18wMTYkMyIsImFyZ18wMzEiLCJibmRzXzAxNiQ0Iiwic2VydmVyX25hbWVfMDExIiwiYXJnXzAxNCIsImJuZHNfMDEwIiwiYXJnXzAxMiIsImJuZHNfMDEwJDAiLCJhcmdfMDI5IiwiYm5kc18wMTYkNSIsImFyZ18wMjciLCJibmRzXzAxNiQ2IiwiYXJnXzAyNCIsImJuZHNfMDE2JDciLCJhcmdfMDIyIiwiYm5kc18wMTYkOCIsImFyZ18wMjAiLCJibmRzXzAxNiQ5IiwiYXJnXzAxOCIsImJuZHNfMDE2JDEwIiwiY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25fIiwiY2xvc2VfZmluaXNoZWQkMSIsImlzX2Nsb3NlZCQxIiwiZXZlbnRfYnVzIiwiY2xvc2UkMCIsImNvbm5fb3B0Iiwic2VydmVyX25hbWUiLCJjdXJyZW50X2Nvbm5lY3Rpb24kMCIsImNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCQwIiwieCIsImNvbm5lY3RlZCIsImxvb3AiLCJkIiwiY3JlYXRlIiwib25fZXZlbnQkMCIsInJldHJ5X2RlbGF5JDAiLCJyYW5kb21fc3RhdGUkMSIsInRpbWVfc291cmNlJDAiLCJjb25uZWN0IiwiYWRkcmVzcyIsImdldF9hZGRyZXNzIiwicmFuZG9tX3N0YXRlIiwidGltZV9zb3VyY2UiLCJldmVudF9oYW5kbGVyIiwiZGVmYXVsdF9yZXRyeV9kZWxheSIsIm5vbl9yYW5kb21pemVkX2RlbGF5IiwicmV0cnlfZGVsYXlfc3BhbiIsInJhbmRvbV9zdGF0ZSQwIiwic3BhbiIsInNwYW4kMCIsImRpc3RhbmNlIiwid2FpdCIsInJldHJ5X2RlbGF5IiwicHJldmlvdXNfYWRkcmVzcyIsInByZXZpb3VzX2Vycm9yIiwiYWRkciIsInByZXZpb3VzX2FkZHJlc3MkMCIsInNhbWVfYXNfcHJldmlvdXNfYWRkcmVzcyIsInJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmciLCJjb25uZWN0X3Jlc3VsdCIsImVyciIsInByZXZpb3VzX2VyciIsInRvX3NleHAiLCJzYW1lX2FzX3ByZXZpb3VzX2Vycm9yIiwiYWxsIiwiZXJyb3Jfc291cmNlXzAwNSIsInJldGlyZWRfa3JiX3dvcmQiLCJjb21wYXJlIiwidF9vZl9zZXhwIiwic2V4cF8wMDYiLCJzZXhwX29mX3QiLCJncm91cCIsIm1hZ2ljX3dvcmQiLCJnZW5fbWFnaWNfbnVtYmVyIiwid29yZCIsImFjYyIsImMiLCJtYWdpY19udW1iZXIiLCJ0IiwicCIsImJ5X21hZ2ljX251bWJlciIsImFsbF9tYWdpY19udW1iZXJzX2luY2x1ZGluZ19yZSIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwicG9zIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJpbl9yZWFkX2VsIiwicG9zX3JlZiIsImV4biQwIiwiZXhuIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwiYmluX3QiLCJiaW5fYSIsIm9mX2xpc3RfZXhuIiwibCIsImxlbiIsInRfb2ZfYSIsInNleHAiLCJtYXhfc3VwcG9ydGVkX3ZlcnNpb24iLCJvdXRzaWRlX21heF9zdXBwb3J0ZWRfdmVyc2lvbl8iLCJudW0iLCJjb250ZXh0IiwidmludCIsInhfMDAyIiwieF8wMDMiLCJrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzIiwiY3JlYXRlX2V4biIsInByb3RvY29sIiwic3VwcG9ydGVkX3ZlcnNpb25zIiwiYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIiwicHJvdG9jb2xfbWFnaWNfbnVtYmVyIiwicmF3X3ZlcnNpb25fbGlzdCIsImdldF9wcm90b2NvbCIsInZlcnNpb25zIiwicHJvdG9jb2xzIiwibmVnb3RpYXRlIiwiYWxsb3dfbGVnYWN5X3BlZXIiLCJ1cyIsInBlZXIiLCJ1c192ZXJzaW9ucyIsInVzX3Byb3RvY29sIiwicGVlcl92ZXJzaW9ucyIsInBlZXJfcHJvdG9jb2wiLCJ2ZXJzaW9uIiwieCIsIm1hdGNoZXNfbWFnaWNfcHJlZml4IiwiY29udGFpbnNfbWFnaWNfcHJlZml4IiwiZiIsImFueV9tYWdpY19wcmVmaXgiLCJncm91cCQwIiwiYmluX3NpemVfdCQwIiwiYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRlcl90JDAiLCJhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGUkMCIsImJvdW5kZWRfbGlzdF9iaW5fc2l6ZSIsImJpbl9zaGFwZV90IiwiYmluX3QiLCJiaW5fc2l6ZV90IiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYnVmIiwicG9zX3JlZiIsInZuYXQwIiwib2ZfaW50X2V4biIsIm9mX3dyaXRlciIsIndyaXRlIiwic2l6ZSIsIndyaXRlJDAiLCJwb3MiLCJhIiwibGVuIiwicG9zJDAiLCJzaXplJDAiLCJvZl90eXBlX2NsYXNzIiwiYmluX2EiLCJ0ZXN0IiwicyIsImJpZ3N0cmluZyIsImJpZ3N0cmluZ192ZXJzaW9uIiwid3JpdGVyX3dpdGhfbGVuZ3RoIiwid2l0aF9sZW5ndGhfdmVyc2lvbiIsInBvdyIsIngiLCJkZXNjcmlwdGlvbnMiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZ3JvdXAiLCJ2MiIsInYxIiwidmludCIsInZfbmFtZSIsInZfdmVyc2lvbiIsImVxdWFsIiwiYV8wMDEiLCJiXzAwMiIsImNvbXBhcmUiLCJhXzAwMyIsImJfMDA0IiwibiIsImhhc2hfZm9sZF90IiwiaHN2IiwiYXJnIiwiaHN2JDAiLCJoYXNoIiwidF9vZl9zZXhwIiwieF8wMDciLCJ2ZXJzaW9uIiwibmFtZSIsInNleHBfb2ZfdCIsInZlcnNpb25fMDExIiwibmFtZV8wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsInN1bW1hcml6ZSIsInRzIiwic3VtbWFyeSIsImJpbmQiLCJ0IiwiZiIsImJpbmRfZGVmZXJyZWQiLCJtYXBfZGVmZXJyZWQiLCJsaWZ0X2RlZmVycmVkIiwiZXJyJDAiLCJlcnIiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZ3JvdXAkMCIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2MSQwIiwidjEkMSIsInYxJDIiLCJhcmdzIiwic2l6ZV9hcmdzIiwidjEkMyIsImJpbl93cml0ZV90JDAiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsInBvcyQ1IiwicG9zJDYiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImFyZ18yIiwiYXJnXzEkNCIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJhcmcwXzAwOCIsInJlczBfMDA5Iiwic2V4cF9hcmdzXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJzZXhwX2FyZ3NfMDIyIiwiYXJnMV8wMzMiLCJhcmcwXzAzMiIsInJlczBfMDM0IiwiYXRvbV8wMjQiLCJzZXhwX2FyZ3NfMDI3IiwiYXRvbV8wMjQkMCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJyZXMxXzAzNSIsInNleHBfYXJnc18wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwic2V4cF9hcmdzXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJhcmcwXzA0MyIsInJlczBfMDQ0IiwiYXJnMF8wNDUiLCJyZXMwXzA0NiIsImFyZzFfMDQ5IiwiYXJnMF8wNDgiLCJyZXMwXzA1MCIsInZfMDQ3IiwicmVzMV8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYV8wNTQiLCJiXzA1NSIsImFfMDU2IiwiYl8wNTciLCJhXzA1OCIsImJfMDU5IiwiYV8wNjAiLCJiXzA2MSIsImFfMDY0IiwiYV8wNjIiLCJiXzA2NSIsImJfMDYzIiwicmlnaHRfMDY3IiwibGVmdF8wNjYiLCJhXzA2OCIsImJfMDY5IiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QkMSIsIndyaXRlX2EiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl93cml0ZXJfYSIsImJpbl9yZWFkX3QkMyIsIm9mX2EiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCQxIiwic2V4cF9vZl90JDEiLCJvZl9hXzA3MCIsInhfMDcxIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgiLCJ2NCIsInYzIiwic2l6ZSQxIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDAiLCJ2X3RhZyIsInZfaWQiLCJ2X2RhdGEiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCIsImJpbl9uZWVkc19sZW5ndGgiLCJzZXhwX29mX25lZWRzX2xlbmd0aCIsIm9mX2FfMDcyIiwiZGF0YV8wODAiLCJpZF8wNzgiLCJ2ZXJzaW9uXzA3NiIsInRhZ18wNzQiLCJhcmdfMDgxIiwiYm5kc18wNzMiLCJhcmdfMDc5IiwiYm5kc18wNzMkMCIsImFyZ18wNzciLCJibmRzXzA3MyQxIiwiYXJnXzA3NSIsImJuZHNfMDczJDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMCIsInY1Iiwic2l6ZSQyIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQwIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQxIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDIiLCJ2X21ldGFkYXRhIiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9uZWVkc19sZW5ndGgkMCIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDAiLCJvZl9hXzA4MiIsImRhdGFfMDkyIiwibWV0YWRhdGFfMDkwIiwiaWRfMDg4IiwidmVyc2lvbl8wODYiLCJ0YWdfMDg0IiwiYXJnXzA5MyIsImJuZHNfMDgzIiwiYXJnXzA5MSIsImJuZHNfMDgzJDAiLCJhcmdfMDg5IiwiYm5kc18wODMkMSIsImFyZ18wODciLCJibmRzXzA4MyQyIiwiYXJnXzA4NSIsImJuZHNfMDgzJDMiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsInRvX3YxIiwiZGF0YSIsImlkIiwidGFnIiwib2ZfdjEiLCJtZXRhZGF0YSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMSIsImJpbl9uZWVkc19sZW5ndGgkMSIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDEiLCJvZl9hXzA5NCIsImRhdGFfMDk4IiwiaWRfMDk2IiwiYXJnXzA5OSIsImJuZHNfMDk1IiwiYXJnXzA5NyIsImJuZHNfMDk1JDAiLCJiaW5fcmVhZF90JDkiLCJiaW5fcmVhZF90JDEwIiwiYmluX3JlYWRlcl90JDQiLCJncm91cCQ1IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQyIiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDUiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkNiIsImJpbl9yZWFkZXJfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fbmVlZHNfbGVuZ3RoJDIiLCJiaW5fcmVhZF90JDExIiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkZXJfdCQ1IiwiYmluX3JlYWRfbmF0MF90IiwiYmluX3JlYWRfbmF0MF90JDAiLCJiaW5fcmVhZGVyX25hdDBfdCIsImJpbl9zaXplX25hdDBfdCIsImJpbl93cml0ZV9uYXQwX3QiLCJiaW5fd3JpdGVyX25hdDBfdCIsImdyb3VwJDYiLCJiaW5fc2hhcGVfdCQyIiwicmVzcG9uc2UiLCJlcnJvciIsImJpbl9zaXplX3QkMiIsInNpemVfb2ZfcmVzcG9uc2UiLCJzaXplX29mX2Vycm9yIiwiYmluX3dyaXRlX3QkMiIsIndyaXRlX3Jlc3BvbnNlIiwid3JpdGVfZXJyb3IiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl93cml0ZXJfcmVzcG9uc2UiLCJiaW5fd3JpdGVyX2Vycm9yIiwiYmluX3JlYWRfdCQxMyIsIm9mX3Jlc3BvbnNlIiwib2ZfZXJyb3IiLCJiaW5fcmVhZF90JDE0Iiwidl91bnVzZWRfcXVlcnlfaWQiLCJ2X2luaXRpYWwiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl9yZWFkZXJfcmVzcG9uc2UiLCJiaW5fcmVhZGVyX2Vycm9yIiwiYmluX3QkMiIsImJpbl9yZXNwb25zZSIsImJpbl9lcnJvciIsInNleHBfb2ZfdCQyIiwib2ZfcmVzcG9uc2VfMTAwIiwib2ZfZXJyb3JfMTAxIiwiaW5pdGlhbF8xMDUiLCJ1bnVzZWRfcXVlcnlfaWRfMTAzIiwiYXJnXzEwNiIsImJuZHNfMTAyIiwiYXJnXzEwNCIsImJuZHNfMTAyJDAiLCJncm91cCQ3IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQzIiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQzIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDciLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkOCIsImJpbl9yZWFkZXJfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fbmVlZHNfbGVuZ3RoJDMiLCJiaW5fcmVhZF90JDE1IiwiYmluX3JlYWRfdCQxNiIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3JlYWRfbmF0MF90JDEiLCJiaW5fcmVhZF9uYXQwX3QkMiIsImJpbl9yZWFkZXJfbmF0MF90JDAiLCJiaW5fc2l6ZV9uYXQwX3QkMCIsImJpbl93cml0ZV9uYXQwX3QkMCIsImJpbl93cml0ZXJfbmF0MF90JDAiLCJncm91cCQ4IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQ0IiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDQiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDQiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDkiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMTAiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQ0IiwiYmluX25lZWRzX2xlbmd0aCQ0Iiwic2V4cF9vZl9uZWVkc19sZW5ndGgkMiIsIm9mX2FfMTA3IiwiYXJnMF8xMDgiLCJyZXMwXzEwOSIsImFyZzBfMTEwIiwicmVzMF8xMTEiLCJhcmcwXzExMiIsInJlczBfMTEzIiwiYmluX3JlYWRfdCQxNyIsImJpbl9yZWFkX3QkMTgiLCJiaW5fcmVhZGVyX3QkOCIsImJpbl9yZWFkX25hdDBfdCQzIiwiYmluX3JlYWRfbmF0MF90JDQiLCJiaW5fcmVhZGVyX25hdDBfdCQxIiwiYmluX3NpemVfbmF0MF90JDEiLCJiaW5fd3JpdGVfbmF0MF90JDEiLCJiaW5fd3JpdGVyX25hdDBfdCQxIiwicXVlcnlfaWQiLCJ2MV9xdWVyeSIsInYxX3N0ciIsInYyX3N0ciIsImNhbGxlcl9pZGVudGl0eSIsInYyJDAiLCJ2X3F1ZXJ5Iiwidl9yZXNwb25zZSIsInZfbXNnIiwidl9xdWVyeSQwIiwidl9pbml0aWFsX3Jlc3BvbnNlIiwidl91cGRhdGVfcmVzcG9uc2UiLCJ2X2Vycm9yIiwidF9vZl9zZXhwJDAiLCJzZXhwc18wMTAiLCJ1cGRhdGVfcmVzcG9uc2UiLCJpbml0aWFsX3Jlc3BvbnNlIiwicXVlcnkiLCJzZXhwc18wMDYiLCJzZXhwc18wMDgiLCJtc2ciLCJyZXNwb25zZV8wMTQiLCJxdWVyeV8wMTIiLCJhcmdfMDE1IiwiYm5kc18wMTEiLCJhcmdfMDEzIiwiYm5kc18wMTEkMCIsIm1zZ18wMTciLCJhcmdfMDE4IiwiYm5kc18wMTYiLCJlcnJvcl8wMjYiLCJ1cGRhdGVfcmVzcG9uc2VfMDI0IiwiaW5pdGlhbF9yZXNwb25zZV8wMjIiLCJxdWVyeV8wMjAiLCJhcmdfMDI3IiwiYm5kc18wMTkiLCJhcmdfMDI1IiwiYm5kc18wMTkkMCIsImFyZ18wMjMiLCJibmRzXzAxOSQxIiwiYXJnXzAyMSIsImJuZHNfMDE5JDIiLCJyZXNwb25zZV8wMzEiLCJxdWVyeV8wMjkiLCJhcmdfMDMyIiwiYm5kc18wMjgiLCJhcmdfMDMwIiwiYm5kc18wMjgkMCIsIm1zZ18wMzQiLCJhcmdfMDM1IiwiYm5kc18wMzMiLCJlcnJvcl8wNDMiLCJ1cGRhdGVfcmVzcG9uc2VfMDQxIiwiaW5pdGlhbF9yZXNwb25zZV8wMzkiLCJxdWVyeV8wMzciLCJhcmdfMDQ0IiwiYm5kc18wMzYiLCJhcmdfMDQyIiwiYm5kc18wMzYkMCIsImFyZ18wNDAiLCJibmRzXzAzNiQxIiwiYXJnXzAzOCIsImJuZHNfMDM2JDIiLCJzZXhwX29mX21lc3NhZ2VfdG9vX2JpZyIsIm1heF9tZXNzYWdlX3NpemVfMDA0Iiwic2l6ZV8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsIm9mX2FfMDA2IiwiYXJnMF8wMDciLCJyZXMwXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJ1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIiwidW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCIsInBheWxvYWRfbGVuIiwicGFjayIsIm0iLCJNIiwiY2xvc2UiLCJpc19jbG9zZWQiLCJieXRlc19yZWFkIiwicmVhZF9mb3JldmVyIiwib25fbWVzc2FnZSIsIm9uX2VuZF9vZl9iYXRjaCIsInJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3QiLCJiaW5fcmVhZGVyIiwicGFjayQwIiwiY2xvc2UkMCIsImlzX2Nsb3NlZCQwIiwibW9uaXRvciIsImJ5dGVzX3RvX3dyaXRlIiwiYnl0ZXNfd3JpdHRlbiIsImZsdXNoZWQiLCJyZWFkeV90b193cml0ZSIsInNlbmRfYmluX3Byb3QiLCJiaW5fd3JpdGVyIiwic2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIiwic2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vIiwic3RvcHBlZCIsImNhbl9zZW5kIiwidHJhbnNmZXIiLCJwaXBlIiwibWF4X251bV92YWx1ZXNfcGVyX3JlYWQiLCJjb25zdW1lciIsImVuZF9vZl9waXBlIiwiaXZhciIsIml0ZXIiLCJxIiwid3JpdGVyXzAwNiIsInJlYWRlcl8wMDQiLCJhcmdfMDA3IiwiYm5kc18wMDMiLCJibmRzXzAwMyQwIiwiY2xvc2UkMSIsImNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuXyIsImNhbGxiYWNrXzAwMiIsImNsb3NlX2Nvbm5lY3Rpb24iLCJjb250aW51ZSQwIiwiaGFuZGxlX2V4biIsImNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciIsImV4biIsImNhbGxiYWNrIiwid3JpdGVyXzAwNCIsInF1ZXJ5X2lkXzAwMiIsInJlc3BvbmRlZF8wMDYiLCJibmRzXzAwMSQxIiwiY3JlYXRlIiwid3JpdGVyIiwibGlmdCIsImltcGwiLCJiaW5fbXNnIiwiaW1wbCQwIiwic3RhdGUiLCJzdHIiLCJhdXRob3JpemVkX3N0YXRlIiwiaW1wbCQxIiwiaW1wbCQyIiwiYmluX3F1ZXJ5IiwiaW1wbCQzIiwiaW1wbCQ0IiwiaW1wbCQ1IiwiaW1wbCQ2IiwicmVzcCIsImltcGwkNyIsImltcGwkOCIsImJpbl91cGRhdGVfd3JpdGVyIiwiYmluX2luaXRfd3JpdGVyIiwiYmluX3F1ZXJ5X3JlYWRlciIsImltcGwkOSIsImltcGwkMTAiLCJpbXBsJDExIiwidyIsIm9mX2Nvbm5lY3Rpb25fc3RhdGVfMDE0Iiwib25fZXhjZXB0aW9uXzAyNCIsInNoYXBlc18wMjIiLCJmXzAyMCIsInZlcnNpb25fMDE4IiwidGFnXzAxNiIsImJuZHNfMDE1IiwiYm5kc18wMTUkMCIsImJuZHNfMDE1JDEiLCJhcmdfMDE5IiwiYm5kc18wMTUkMiIsImFyZ18wMTciLCJibmRzXzAxNSQzIiwiZGVzY3JpcHRpb24iLCJzaGFwZXMiLCJsaWZ0JDAiLCJiIiwid2l0aF9hdXRob3JpemF0aW9uIiwibGlmdF9kZWZlcnJlZCQwIiwidXBkYXRlX29uX2V4Y2VwdGlvbiIsInJhaXNlIiwiY29ubmVjdGlvbl9kZXNjcmlwdGlvbiIsImdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiIsInRvX2Vycm9yIiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIiwicnBjX3ZlcnNpb24iLCJycGNfbmFtZSIsInJwY19lcnJvciIsImNsb3NlX3JlYXNvbiIsImxvY2FsX3N0b3JhZ2Vfa2V5IiwiZ2V0Iiwid2l0aF9tZXRhZGF0YSIsInNleHBfb2ZfbG9jYXRlZF9lcnJvciIsImV4bl8wMDQiLCJsb2NhdGlvbl8wMDIiLCJ1bmNhdWdodF9leG4iLCJsb2NhdGlvbiIsImJpbl9pb19leG4iLCJ0cnlfd2l0aCIsIm9uX2JhY2tncm91bmRfZXhjZXB0aW9uIiwicnVuIiwicmVzdCIsImpvaW4iLCJ4JDAiLCJvcl9lcnJvciIsInJwY19kZXNjcmlwdGlvbiIsImJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nIiwiYWRkX2xlbiIsImluaXRfcG9zIiwiYWRkX2xlbiQwIiwiYWRkX2xlbiQxIiwiZSQwIiwiZSIsInN5bWJvbCIsInNleHBfb2Zfc3RyZWFtaW5nX3Jlc3BvbnNlIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJ4XzAzMyIsIm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc18wMTMiLCJ3cml0ZXJfMDExIiwiaW1wbGVtZW50YXRpb25zXzAwOSIsInN0b3BwZWRfMDE1IiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXzAyMSIsImNvbm5lY3Rpb25fZGVzY3JpcHRpb25fMDE5IiwibGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIiwicGFja2VkX3NlbGZfMDI5IiwiYXJnXzAyNCIsImFyZzFfMDI2IiwiYXJnMF8wMjUiLCJyZXMwXzAyNyIsInJlczFfMDI4IiwiYXJnXzAyMiIsImJuZHNfMDA4JDEiLCJhcmdfMDIwIiwiYm5kc18wMDgkMiIsImJuZHNfMDA4JDMiLCJhcmdfMDE2IiwiYm5kc18wMDgkNCIsImFyZ18wMTQiLCJibmRzXzAwOCQ1IiwiYm5kc18wMDgkNiIsImJuZHNfMDA4JDciLCJoYW5kbGVfc2VuZF9yZXN1bHQiLCJyZXN1bHQiLCJzZXhwIiwieF8wMzQiLCJ3cml0ZV9tZXNzYWdlIiwiYmluX3dyaXRlcl9kYXRhIiwiYmluX3dyaXRlX3ZvaWQiLCJidWZmZXIiLCJzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXMiLCJiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCIsInN0cl9sZW4iLCJuZXh0IiwiYmluX3NpemVfbmF0MF9oZWFkZXIiLCJoZWFkZXJfcHJlZml4IiwiZGF0YV9sZW4iLCJzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiIsInN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbiIsImJpbl93cml0ZV9uYXQwX2hlYWRlciIsImJpbl93cml0ZXJfbmF0MF9oZWFkZXIiLCJiaW5fc2l6ZV9tZXNzYWdlIiwiYmluX3dyaXRlX21lc3NhZ2UiLCJiaW5fd3JpdGVyX21lc3NhZ2UiLCJiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZyIsImJpbl93cml0ZV9tZXNzYWdlX2FzX3N0cmluZyIsImJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmciLCJwcmVwX3dyaXRlIiwiY2xvc2VkIiwiaW5zdGFuY2UiLCJ3cml0ZV9lb2YiLCJ3cml0ZV9tZXNzYWdlJDAiLCJjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW4iLCJncm91cHMiLCJlbGVtZW50X2luX2dyb3VwIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2skMCIsInQkMCIsIm1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvbiIsIm9uX2V4Y2VwdGlvbiIsImF1dGhvcml6YXRpb25fZmFpbHVyZV9yZXN1bHQiLCJycGNfa2luZCIsImFwcGx5X2ltcGxlbWVudGF0aW9uIiwiaW1wbGVtZW50YXRpb24iLCJyZWFkX2J1ZmZlciIsInJlYWRfYnVmZmVyX3Bvc19yZWYiLCJmJDMiLCJiaW5fcXVlcnlfcmVhZGVyJDAiLCJxdWVyeV9jb250ZW50cyIsImV4biQwIiwiZiQ0IiwibGVuJDAiLCJyZXN1bHRfbW9kZSIsImYkNSIsImJpbl9yZXNwb25zZV93cml0ZXIiLCJiaW5fcXVlcnlfcmVhZGVyJDEiLCJxdWVyeV9jb250ZW50cyQwIiwib3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsIiwiZGF0YSQwIiwiZGF0YSQxIiwiZXhuJDEiLCJiYWNrdHJhY2UiLCJyZXN1bHRfbW9kZSQwIiwiZiQ2IiwicmVzcG9uZGVyIiwiZCIsImNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IiwicmVzdWx0JDAiLCJjaGVja19yZXNwb25kZWQiLCJkJDAiLCJyIiwic3RyZWFtaW5nX3JwYyIsInN0cmVhbV9xdWVyeSIsImxlbiQxIiwic3RyZWFtX3dyaXRlciIsImltcGxfd2l0aF9zdGF0ZSIsImYkMiIsIndyaXRlciQwIiwicnVuX2ltcGwiLCJzcGxpdF9vayIsImhhbmRsZV9vayIsImVycm9yJDAiLCJvayIsImluaXRpYWwiLCJmJDAiLCJwaXBlX3IiLCJmJDEiLCJmbHVzaCIsInByb2R1Y2Vyc19mbHVzaGVkIiwiYWNjIiwic3RvcCIsImhhbmRsZV9xdWVyeSIsIm9uX3Vua25vd25fcnBjIiwiaW1wbGVtZW50YXRpb25zIiwibGFzdF9kZXNjIiwiaW1wbGVtZW50YXRpb24kMCIsImltcGxlbWVudGF0aW9uJDEiLCJvbl9leGNlcHRpb24kMCIsImltcGxlbWVudGF0aW9uJDIiLCJpX3MiLCJkdXBzIiwiaSIsImluc3RhbnRpYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsInVucGFja2VkIiwiY3JlYXRlX2V4biIsIm51bGwkMCIsImFkZF9leG4iLCJkZXNjIiwiYWRkIiwiaW1wbGVtZW50YXRpb25zJDAiLCJvbl91bmtub3duX3JwYyQwIiwiY2FsbCIsImV4cGVydCIsImNhbm5vdF9zZW5kIiwieF8wMzkiLCJtYXJrX3Jlc3BvbmRlZCIsInNjaGVkdWxlIiwiaGVhZGVyIiwiaGFuZGxlX3NlbmRfcmVzdWx0JDAiLCJ3cml0ZV9iaWdzdHJpbmciLCJ3cml0ZV9iaW5fcHJvdCIsImVycm9yX3NvdXJjZV8wMzgiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInN1cHBvcnRlZF92ZXJzaW9ucyIsImRlZmF1bHRfaGFuZHNoYWtlX2hlYWRlciIsInF1ZXJ5X21lc3NhZ2UiLCJzZW5kX2V2ZXJ5IiwidGltZW91dCIsInNlbmRfZXZlcnlfMDQzIiwidGltZW91dF8wNDEiLCJibmRzXzA0MCIsImJuZHNfMDQwJDAiLCJ2X3RpbWVvdXQiLCJ2X3NlbmRfZXZlcnkiLCJjcmVhdGUkMCIsInNleHBfb2ZfdCQzIiwiaGVhcnRiZWF0X2NvbmZpZ18wNTMiLCJkZXNjcmlwdGlvbl8wNTEiLCJoZWFydGJlYXRfY2FsbGJhY2tzXzA1NSIsImxhc3Rfc2Vlbl9hbGl2ZV8wNTciLCJuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb25fMDciLCJoZWFydGJlYXRfZXZlbnRfMDc1IiwidGltZV9zb3VyY2VfMDczIiwiaW1wbGVtZW50YXRpb25zX2luc3RhbmNlXzA3MSIsImNsb3NlX2ZpbmlzaGVkXzA2OSIsImNsb3NlX3N0YXJ0ZWRfMDY3Iiwib3Blbl9xdWVyaWVzXzA2NSIsIndyaXRlcl8wNjMiLCJyZWFkZXJfMDYxIiwibWF4X21ldGFkYXRhX3NpemVfMDU5IiwiYXJnXzA3OCIsImJuZHNfMDUwIiwiYXJnXzA3NiIsImJuZHNfMDUwJDAiLCJhcmdfMDc0IiwiYm5kc18wNTAkMSIsImFyZ18wNzIiLCJibmRzXzA1MCQyIiwiYXJnXzA3MCIsImJuZHNfMDUwJDMiLCJhcmdfMDY4IiwiYm5kc18wNTAkNCIsImFyZ18wNjYiLCJibmRzXzA1MCQ1Iiwid3JpdGVyXzAzNSIsIm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbl8wMyIsImFyZ18wMzYiLCJibmRzXzAzMiIsImFyZ18wMzQiLCJibmRzXzAzMiQwIiwiYXJnXzA2NCIsImJuZHNfMDUwJDYiLCJhcmdfMDYyIiwiYm5kc18wNTAkNyIsImFyZ18wNjAiLCJibmRzXzA1MCQ4IiwiYXJnXzA1OCIsImJuZHNfMDUwJDkiLCJhcmdfMDU2IiwiYm5kc18wNTAkMTAiLCJ0aW1lb3V0XzA0NiIsInNlbmRfZXZlcnlfMDQ4IiwiYXJnXzA0OSIsImJuZHNfMDQ1IiwiYXJnXzA0NyIsImJuZHNfMDQ1JDAiLCJhcmdfMDU0IiwiYm5kc18wNTAkMTEiLCJhcmdfMDUyIiwiYm5kc18wNTAkMTIiLCJzZXhwX29mX3RfaHVtX3dyaXRlciIsInhfMDc5IiwiZGlzcGF0Y2giLCJyZXNwb25zZV9oYW5kbGVyIiwiYmluX3dyaXRlcl9xdWVyeSIsInF1ZXJ5JDAiLCJtZXNzYWdlIiwibWFrZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJkaXNwYXRjaF9iaWdzdHJpbmciLCJzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJvbl9jbG9zZSIsInJlYXNvbiIsImNsb3NlX2ZpbmlzaGVkIiwiYWRkX2hlYXJ0YmVhdF9jYWxsYmFjayIsInJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IiwibGFzdF9zZWVuX2FsaXZlIiwic3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lIiwiZXZlbnQiLCJmbHVzaGVkJDAiLCJmbHVzaGVkJDEiLCJkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0IiwiY2xlYW51cCIsImR1bW15X2J1ZmZlciIsImR1bW15X3JlZiIsImNvbnRhaW5zX21hZ2ljX3ByZWZpeCIsImhhbmRzaGFrZV9oZWFkZXJfb3ZlcnJpZGVfa2V5IiwiY3JlYXRlJDEiLCJoYW5kc2hha2VfdGltZW91dCIsImhlYXJ0YmVhdF9jb25maWciLCJtYXhfbWV0YWRhdGFfc2l6ZSIsInRpbWVfc291cmNlIiwicmVhZGVyIiwid3JpdGVyX21vbml0b3JfZXhucyIsIm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiIsImhlYXJ0YmVhdF9mcm9tX25vd19vbiIsInNpbmNlX2xhc3RfaGVhcnRiZWF0IiwiY3VzdG9tX3ByaW50Zl8wODIiLCJuYXQwX21zZyIsInJlcyIsIndhaXQiLCJyZW1vdmFsX2NpcmN1bXN0YW5jZXMiLCJ3YWl0JDAiLCJxdWVyeSQxIiwiaW5zdGFuY2UkMCIsInBlZXIiLCJ3aXRoX2Nsb3NlIiwidHJhbnNwb3J0IiwiZGlzcGF0Y2hfcXVlcmllcyIsIm9uX2hhbmRzaGFrZV9lcnJvciIsImhhbmRsZV9oYW5kc2hha2VfZXJyb3IiLCJzZXJ2ZXJfd2l0aF9jbG9zZSIsIm9uX2hhbmRzaGFrZV9lcnJvciQwIiwid2l0aF9hc3luY19leGVjdXRpb25fY29udGV4dCIsImNvbnRleHQiLCJlcnJvcl9zb3VyY2VfMDA5IiwiZXJyb3Jfc291cmNlXzAyNCIsInN5bWJvbCQwIiwiZGlzcGF0Y2hfcmF3IiwiY29ubiIsImRpc3BhdGNoX3JhdyQwIiwicmVzcG9uc2VfaXZhciIsInF1ZXJ5X3R5cGVfaWQiLCJyZXNwb25zZV90eXBlX2lkIiwiaW1wbGVtZW50IiwiaW1wbGVtZW50JDAiLCJyZXNwb25zZSQwIiwicnBjX3Jlc3VsdF90b19vcl9lcnJvciIsImRpc3BhdGNoJDAiLCJkaXNwYXRjaF9leG4iLCJtYWtlX2Rpc3BhdGNoIiwiZG9fZGlzcGF0Y2giLCJycGNfdGFnIiwiaGFuZGxlX3Jlc3BvbnNlIiwiaGFuZGxlX2Vycm9yIiwieF8wMDIiLCJkaXNwYXRjaCQxIiwic2NoZWR1bGVfZGlzcGF0Y2giLCJkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIiwiYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiIsImltcGxlbWVudCQxIiwiaW1wbGVtZW50JDIiLCJpbXBsZW1lbnRfZm9yX3RhZ19hbmRfdmVyc2lvbiIsImltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uJDAiLCJ2ZXJzaW9uJDAiLCJuYW1lJDAiLCJtc2dfdHlwZV9pZCIsInNoYXBlcyQwIiwiZGVzY3JpcHRpb24kMCIsImltcGxlbWVudCQzIiwiZGlzcGF0Y2gkMiIsInJwY19yZXN1bHRfdG9fb3JfZXJyb3IkMCIsImRpc3BhdGNoJDMiLCJkaXNwYXRjaF9leG4kMCIsImltcGxlbWVudCQ0IiwiZGlzcGF0Y2gkNCIsInNjaGVkdWxlX2Rpc3BhdGNoJDAiLCJhXzAwNSIsImJfMDA2Iiwic2V4cF8wMTEiLCJ0YWdfMDEyIiwic2V4cF9hcmdzXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3IiwiY29tcGFyZSQwIiwiYV8wMTgiLCJiXzAxOSIsImFfMDIwIiwiYl8wMjEiLCJzZXhwXzAyNiIsInRhZ18wMjciLCJzZXhwX2FyZ3NfMDI4IiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsImNsaWVudF9wdXNoZXNfYmFjayIsImJpbl9pbml0aWFsX3Jlc3BvbnNlIiwiYmluX3VwZGF0ZV9yZXNwb25zZSIsImFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIiwiYWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZSIsImNsaWVudF9wdXNoZXNfYmFjayQwIiwiaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkIiwidXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWQiLCJlcnJvcl9yZXNwb25zZV90eXBlX2lkIiwibWFrZV9pbml0aWFsX21lc3NhZ2UiLCJpbXBsZW1lbnRfZ2VuIiwiaW1wbGVtZW50JDUiLCJjIiwiaW1wbGVtZW50X2RpcmVjdCIsImFib3J0IiwicmVhZF9lcnJvciIsImhhbmRsZXIiLCJjb3JlX2VyciIsImRpc3BhdGNoX2dlbiIsIm1ha2VfdXBkYXRlX2hhbmRsZXIiLCJpbml0aWFsX3N0YXRlIiwiaW5pdGlhbF9oYW5kbGVyIiwiZXJyJDEiLCJpbml0aWFsX21zZyIsImluaXRpYWwkMCIsImV4dHJhIiwiaGFuZGxlciQwIiwiYmluX3JlYWRlcl91cGRhdGUiLCJlcnIkNCIsImVyciQzIiwiZXJyJDIiLCJkaXNwYXRjaCQ1IiwicGlwZV93IiwiaW5pdCIsInBpcGVfbWV0YWRhdGEiLCJjcmVhdGUkMiIsImJpbl9xdWVyeSQwIiwiYmluX3Jlc3BvbnNlJDAiLCJpbXBsZW1lbnQkNiIsImNyZWF0ZSQzIiwiaW5pdGlhbF9zaXplIiwiY3JlYXRlJDQiLCJidWZmZXIkMCIsImxlbmd0aCIsIm9uZSIsIm9uZSQwIiwid3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAiLCJncm91cF9lbGVtZW50X2luX3dyaXRlciIsInJlbW92ZSIsInRvX2xpc3QiLCJmbHVzaGVkX29yX2Nsb3NlZCIsImRpcmVjdF9zdHJlYW1fd3JpdGVyIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayQxIiwid3JpdGUkMSIsImltcGxlbWVudF9kaXJlY3QkMCIsImRpc3BhdGNoJDYiLCJkaXNwYXRjaF9leG4kMSIsInBpcGVfYW5kX2lkIiwiZGlzcGF0Y2hfaXRlciIsIm5hbWUkMSIsInZlcnNpb24kMSIsImRlc2NyaXB0aW9uJDEiLCJxdWVyeV90eXBlX2lkJDAiLCJlcnJvcl90eXBlX2lkIiwicmVzcG9uc2VfdHlwZV9pZCQwIiwiY3JlYXRlJDUiLCJiaW5fc3RhdGUiLCJiaW5fdXBkYXRlIiwiYmluX3F1ZXJ5JDEiLCJiaW5fZXJyb3IkMCIsImRpc3BhdGNoJDciLCJ1cGRhdGVfciIsIm5hbWUkMiIsInZlcnNpb24kMiIsImRlc2NyaXB0aW9uJDIiLCJxdWVyeV90eXBlX2lkJDEiLCJzdGF0ZV90eXBlX2lkIiwidXBkYXRlX3R5cGVfaWQiLCJlcnJvcl90eXBlX2lkJDAiLCJkZXNjcmlwdGlvbiQzIiwicnBjIiwicnBjJDAiLCJycGMkMSIsInJwYyQyIiwidGhlX3JwYyIsIm5vdF90aGVfcnBjIiwicnBjX25hbWUkMCIsImlucHV0IiwiY29udmVydCIsImZhaWxlZF9jb252ZXJzaW9uIiwiYXJnM18wMDYiLCJhcmcyXzAwNSIsImFyZzFfMDA0IiwiYXJnMF8wMDMiLCJyZXMwXzAwNyIsInZfMDAxIiwicmVzMV8wMDgiLCJ2XzAwMiIsInJlczJfMDA5IiwicmVzM18wMTAiLCJtdWx0aXBsZV9yZWdpc3RyYXRpb25zIiwiYXJnMV8wMTQiLCJ2XzAxMSIsInZfMDEyIiwicmVzMV8wMTYiLCJhZGFwdGVyIiwiYWRhcHRlcnMiLCJhcmcxXzAyMiIsImFyZzBfMDIxIiwicmVzMV8wMjQiLCJhZGFwdGVycyQwIiwiYWRkX3JwY192ZXJzaW9uIiwib2xkX3JwYyIsInVwZ3JhZGUiLCJkb3duZ3JhZGUiLCJhZGFwdCIsImZuIiwiYWRhcHRlZCIsIm9sZF9xdWVyeSIsImFkZF9ycGNfdmVyc2lvbl93aXRoX2ZhaWx1cmUiLCJ1cGdyYWRlX29yX2Vycm9yIiwiZG93bmdyYWRlX29yX2Vycm9yIiwidmFsdWUiLCJhZGRfdmVyc2lvbiIsImFkZF92ZXJzaW9uX3dpdGhfZmFpbHVyZSIsInJlZ2lzdHJ5IiwiaW1wbGVtZW50X211bHRpIiwibG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvIiwibG9nX3ZlcnNpb24iLCJycGNzIiwidmVyc2lvbnMiLCJxJDAiLCJyJDAiLCJpbXBsZW1lbnRfbXVsdGlfZ2VuIiwiaW1wbGVtZW50X2RpcmVjdF9tdWx0aSIsIndyYXBwZWRfbW9kZWxfb2ZfcXVlcnkiLCJ3cmFwcGVkX2Vycm9yX29mX21vZGVsIiwiY29udmVydF9lbHQiLCJjb252ZXJ0X3BpcGUiLCJtb2RlbF9zdGF0ZSIsInN0YXRlJDAiLCJiaW5fc2hhcGVfcXVlcnkiLCJiaW5fc2l6ZV9xdWVyeSIsImJpbl93cml0ZV9xdWVyeSIsImJpbl9yZWFkX3F1ZXJ5IiwiYmluX3JlYWRfcXVlcnkkMCIsImJpbl9yZWFkZXJfcXVlcnkiLCJiaW5fc2hhcGVfc3RhdGUiLCJiaW5fc2l6ZV9zdGF0ZSIsImJpbl93cml0ZV9zdGF0ZSIsImJpbl93cml0ZXJfc3RhdGUiLCJiaW5fcmVhZF9zdGF0ZSIsImJpbl9yZWFkX3N0YXRlJDAiLCJiaW5fcmVhZGVyX3N0YXRlIiwiYmluX3NoYXBlX3VwZGF0ZSIsImJpbl9zaXplX3VwZGF0ZSIsImJpbl93cml0ZV91cGRhdGUiLCJiaW5fd3JpdGVyX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSQwIiwiYmluX3NoYXBlX2Vycm9yIiwiYmluX3NpemVfZXJyb3IiLCJiaW5fd3JpdGVfZXJyb3IiLCJiaW5fcmVhZF9lcnJvciIsImJpbl9yZWFkX2Vycm9yJDAiLCJtb2RlbF9vZl9xdWVyeSIsInN0YXRlX29mX21vZGVsIiwiZXJyb3Jfb2ZfbW9kZWwiLCJ1cGRhdGVfb2ZfbW9kZWwiLCJiaW5fc2hhcGVfcmVzcG9uc2UiLCJiaW5fc2l6ZV9yZXNwb25zZSIsImJpbl93cml0ZV9yZXNwb25zZSIsImJpbl9yZWFkX3Jlc3BvbnNlIiwiYmluX3JlYWRfcmVzcG9uc2UkMCIsInJlc3BvbnNlX29mX21vZGVsIiwiYWRkJDAiLCJpbXBscyIsIm1lbnUiLCJtZW51X2ltcGxzIiwic3VwcG9ydGVkX3JwY3MiLCJvZl9lbnRyaWVzIiwiZW50cmllcyIsImF1eF9yZXF1ZXN0IiwicmVxdWVzdCIsInJlcXVlc3QkMCIsImltcGxlbWVudF9tdWx0aSQwIiwiYmluX3NoYXBlX3F1ZXJ5JDAiLCJiaW5fc2l6ZV9xdWVyeSQwIiwiYmluX3dyaXRlX3F1ZXJ5JDAiLCJiaW5fd3JpdGVyX3F1ZXJ5JDAiLCJiaW5fcmVhZF9xdWVyeSQxIiwiYmluX3JlYWRfcXVlcnkkMiIsImJpbl9yZWFkZXJfcXVlcnkkMCIsImJpbl9zaGFwZV9yZXNwb25zZSQwIiwiYmluX3NpemVfcmVzcG9uc2UkMCIsImJpbl93cml0ZV9yZXNwb25zZSQwIiwiYmluX3dyaXRlcl9yZXNwb25zZSQwIiwiYmluX3JlYWRfcmVzcG9uc2UkMSIsImJpbl9yZWFkX3Jlc3BvbnNlJDIiLCJiaW5fcmVhZGVyX3Jlc3BvbnNlJDAiLCJtb2RlbF9vZl9xdWVyeSQwIiwicmVzcG9uc2Vfb2ZfbW9kZWwkMCIsImFkZCQxIiwic2hhcGVfbWVudSIsInNoYXBlX21lbnVfaW1wbHMiLCJyZXF1ZXN0JDEiLCJjb25uZWN0aW9uIiwiY3JlYXRlX2RpcmVjdGx5IiwibW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb24iLCJjYWxsZXJfdmVyc2lvbnMiLCJjYWxsZWVfdmVyc2lvbnMiLCJjYWxsZWVfbWVudSIsIndpdGhfc3BlY2lmaWNfdmVyc2lvbiIsImRpc3BhdGNoZXIiLCJhcmcxXzAxOCIsImFyZzBfMDE3IiwicmVzMV8wMjAiLCJ3aXRoX3ZlcnNpb25fbWVudSIsImRpc3BhdGNoX211bHRpIiwiY29ubl93aXRoX21lbnUiLCJtcSIsInF1ZXJ5X29mX21vZGVsIiwibW9kZWxfb2ZfcmVzcG9uc2UiLCJkaXNwYXRjaF9pdGVyX211bHRpIiwiYWJvcnRfbXVsdGkiLCJ3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIiwiY29udmVydF9yZXN1bHQiLCJjb252ZXJ0X29rIiwidSIsInJzIiwibW9kZWxfb2Zfc3RhdGUiLCJtb2RlbF9vZl9lcnJvciIsIm1vZGVsX29mX3VwZGF0ZSIsImNhbGxlZV9tb2RlbF9vZl9xdWVyeSIsInJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbCIsInF1ZXJ5X29mX2NhbGxlcl9tb2RlbCIsImNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSIsImVycm9yX29mX2NhbGxlZV9tb2RlbCIsImJpbl9zaGFwZV9lcnJvciQwIiwiYmluX3NpemVfZXJyb3IkMCIsImJpbl93cml0ZV9lcnJvciQwIiwiYmluX3dyaXRlcl9lcnJvciQwIiwiYmluX3JlYWRfZXJyb3IkMSIsImJpbl9yZWFkX2Vycm9yJDIiLCJiaW5fcmVhZGVyX2Vycm9yJDAiLCJjYWxsZXJfbW9kZWxfb2ZfZXJyb3IiLCJzdGF0ZV9vZl9jYWxsZWVfbW9kZWwiLCJ1cGRhdGVfb2ZfY2FsbGVlX21vZGVsIiwiYmluX3NoYXBlX3N0YXRlJDAiLCJiaW5fc2l6ZV9zdGF0ZSQwIiwiYmluX3dyaXRlX3N0YXRlJDAiLCJiaW5fd3JpdGVyX3N0YXRlJDAiLCJiaW5fcmVhZF9zdGF0ZSQxIiwiYmluX3JlYWRfc3RhdGUkMiIsImJpbl9yZWFkZXJfc3RhdGUkMCIsImJpbl9zdGF0ZSQwIiwiYmluX3NoYXBlX3VwZGF0ZSQwIiwiYmluX3NpemVfdXBkYXRlJDAiLCJiaW5fd3JpdGVfdXBkYXRlJDAiLCJiaW5fd3JpdGVyX3VwZGF0ZSQwIiwiYmluX3JlYWRfdXBkYXRlJDEiLCJiaW5fcmVhZF91cGRhdGUkMiIsImJpbl9yZWFkZXJfdXBkYXRlJDAiLCJiaW5fdXBkYXRlJDAiLCJjYWxsZXJfbW9kZWxfb2Zfc3RhdGUiLCJjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIiwiYmluX3NoYXBlX21zZyIsImJpbl9zaXplX21zZyIsImJpbl93cml0ZV9tc2ciLCJiaW5fd3JpdGVyX21zZyIsImJpbl9yZWFkX21zZyIsImJpbl9yZWFkX21zZyQwIiwiYmluX3JlYWRlcl9tc2ciLCJjYWxsZWVfbW9kZWxfb2ZfbXNnIiwiYmluX3NoYXBlX21zZyQwIiwiYmluX3NpemVfbXNnJDAiLCJiaW5fd3JpdGVfbXNnJDAiLCJiaW5fd3JpdGVyX21zZyQwIiwiYmluX3JlYWRfbXNnJDEiLCJiaW5fcmVhZF9tc2ckMiIsImJpbl9yZWFkZXJfbXNnJDAiLCJiaW5fbXNnJDAiLCJtc2dfb2ZfY2FsbGVyX21vZGVsIiwicGlwZV9yZWFkIiwieF8wMDkiLCJvZl9hXzAwMSIsImJ1ZmZlcl8wMDUiLCJwaXBlXzAwMyIsImJ5dGVzX3JlYWRfMDA3IiwiYXJnXzAwOCIsImJuZHNfMDAyIiwiYXJnXzAwNiIsImJuZHNfMDAyJDAiLCJhcmdfMDA0IiwiYm5kc18wMDIkMSIsInByb2Nlc3NfcXVldWUkMCIsIm5lZWQiLCJxdWV1ZSIsImJ1ZmZfbGVuIiwicHJvY2Vzc19kYXRhJDAiLCJwcm9jZXNzX3F1ZXVlIiwic2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSQwIiwidG90YWxfbGVuIiwiY29udGludWVfb3Jfd2FpdCIsImxlbmd0aCQwIiwic2V0X2J1ZmZlciIsInByb2Nlc3NfZGF0YSIsInNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUiLCJ3YWl0X2Zvcl9yZWFkIiwiZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSIsIm9mX2JpZ3N0cmluZyIsInhfMDE5Iiwib2ZfYV8wMTEiLCJtb25pdG9yXzAxNSIsInBpcGVfMDEzIiwiYnl0ZXNfd3JpdHRlbl8wMTciLCJibmRzXzAxMiIsImJuZHNfMDEyJDAiLCJibmRzXzAxMiQxIiwiaW5jcl9ieXRlc193cml0dGVuIiwibnVtX2J5dGVzIiwicGF5bG9hZF9zaXplIiwiZGF0YV9zaXplIiwiZHN0X3BvcyIsImFkZF90b19iaWdidWZmZXIiLCJ0b19iaWdzdHJpbmciLCJhZGRfdG9fYmlnYnVmZmVyJDAiLCJ0b19iaWdzdHJpbmckMCIsIm9mX2JpZ3N0cmluZyQwIiwia2luZCIsInJlYWRlciQwIiwiZGVmYXVsdF9tZXNzYWdlIiwiY3JlYXRlX21lc3NhZ2VfYnVmIiwibWVzc2FnZV9sZW4iLCJvbl9tZXNzYWdlX2NvdW50IiwiZ290Iiwic2V4cGlmaWVyIiwiY29tcGFyYXRvciIsIm9uX2VuZF9vZl9iYXRjaF9jb3VudCIsInJ1bl90ZXN0IiwidmVyaWZ5Iiwib25fbWVzc2FnZSQwIiwib25fZW5kX29mX2JhdGNoJDAiLCJtZXNzYWdlX2NvdW50IiwiYmF0Y2hfY291bnQiLCJhXzAyMiIsImJfMDIzIiwiZ290JDAiLCJzZXhwaWZpZXIkMCIsImNvbXBhcmF0b3IkMCIsImFfMDI0IiwiYl8wMjUiLCJ3cml0ZV8xX21zZ18xX2NodW5rIiwid3JpdGVfMV9tc2dfM19jaHVuayIsIm1zZ19sZW4iLCJzcGxpdF9hdCIsInBhcnQxIiwicGFydDIiLCJ3cml0ZV8yX21zZ18xX2NodW5rIiwib25lX21zZyIsInR3b19tc2ciLCJ3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWUiLCJudW0iLCJzdG9wX2FmdGVyX29uX21lc3NhZ2UiLCJhXzAyNiIsImJfMDI3IiwiYV8wMzAiLCJiXzAzMSIsIm9uZV9tZXNzYWdlIiwidHdvX21lc3NhZ2VzIiwib25lX21lc3NhZ2VfcDEiLCJvbmVfbWVzc2FnZV9wMiIsInJwY19jb25uZWN0aW9uIiwiY2xvc2VfZmluaXNoZWQkMCIsInN0cmluZ19hZnRlciIsInMiLCJuIiwicXVvdGUiLCJsZW4iLCJidWYiLCJpIiwiYyIsIm9mX2NoYXIiLCJmdWxsX3NwbGl0Iiwic3RyIiwib24iLCJzZXAiLCJsb29wIiwiYWNjIiwib2Zmc2V0IiwiaW5kZXgiLCJ0b2tlbiIsInNwbGl0IiwibWF4IiwibWF4JDAiLCJ0b2tlbnMiLCJsb29wJDAiLCJ0cmltX2xlZnRfc3ViIiwibGFzdF9jaGFyIiwiY2hhcnMiLCJmaW5hbCQwIiwibGFzdF9jaGFyJDAiLCJpJDAiLCJsYXN0X2NoYXIkMSIsIm5ld19sZW4iLCJzcGxpdF90cmltX2xlZnQiLCJ0cmltIiwidHJpbV9sZWZ0Iiwibm9uX3NwYWNlIiwiZmluZF9mcm9tIiwicGF0dGVybiIsInN0YXJ0Iiwic3RhcnQkMCIsInJlcGxhY2VfYWxsIiwid2l0aCQwIiwicGxlbiIsInNsZW4iLCJqIiwicmVwbGFjZV9hbGxfYXNzb2MiLCJ0YmwiLCJmb3VuZCIsImZvdW5kJDAiLCJmIiwieHMkMCIsIngkMSIsIngiLCJmeCIsInhzIiwieCQwIiwiZngkMCIsImUiLCJqJDEiLCJ3aXRoJDIiLCJwYXR0ZXJuJDEiLCJyIiwid2l0aCQxIiwicGF0dGVybiQwIiwiaiQwIiwib2ZfbGlzdCIsImwiLCJ0b19saXN0IiwiaSQxIiwiYWNjJDAiLCJvZl9hcnJheSIsImEiLCJieXRlcyIsInRvX2FycmF5IiwiY3V0Iiwic2VwX21heCIsInNfbWF4IiwiayIsImxlZnRfZW5kIiwicmlnaHRfc3RhcnQiLCJyY3V0Iiwic2VwX3N0YXJ0IiwiY2hvcF9wcmVmaXgiLCJwcmVmaXgiLCJwcmVmaXhfbCIsInN0cmluZ19sIiwiZHJvcCIsInRha2UiLCJjcmVhdGUiLCJzaXplIiwiZW1wdHkiLCJsZW5ndGgiLCJzdWIiLCJpbnZhbGlkX2JvdW5kcyIsIm9wIiwiYnVmZmVyX2xlbiIsIm9mZiIsImxlbiIsIm1lc3NhZ2UiLCJpbnZhbGlkX2JvdW5kc19ibGl0Iiwic3JjX2xlbiIsInNyY19vZmYiLCJkc3RfbGVuIiwiZHN0X29mZiIsImludmFsaWRfYm91bmRzX21lbWNtcCIsImJ1ZjFfbGVuIiwiYnVmMV9vZmYiLCJidWYyX2xlbiIsImJ1ZjJfb2ZmIiwiY29weSIsInQiLCJkc3QiLCJzdWJzdHJpbmciLCJiIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwicyIsImJsaXQiLCJzcmMiLCJibGl0X2Zyb21fc3RyaW5nIiwiYmxpdF9mcm9tX2J5dGVzIiwiYmxpdF90b19ieXRlcyIsIm1lbWNtcCIsImJ1ZjEiLCJidWYyIiwibWVtY21wX3N0cmluZyIsIm1lbWNociIsImJ1ZiIsImJ1Zl9vZmYiLCJjaHIiLCJidWZfbGVuIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzE2IiwiYnMiLCJpIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzY0IiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQiLCJ4Iiwic2V0X2ludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDMyX2JlIiwic2V0X2ludDMyX2xlIiwic2V0X2ludDY0X2JlIiwic2V0X2ludDY0X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwJDAiLCJnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSIsImdldF9pbnQzMl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQ2NF9iZSIsImdldF9pbnQ2NF9sZSIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCIsInVuc2FmZV9zZXRfaW50MTZfYmUiLCJ1bnNhZmVfc2V0X2ludDE2X2xlIiwidW5zYWZlX3NldF9pbnQzMl9iZSIsInVuc2FmZV9zZXRfaW50MzJfbGUiLCJ1bnNhZmVfc2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF9pbnQ2NF9sZSIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfZ2V0X2ludDE2X2xlIiwidW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkIiwidW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX2JlIiwidW5zYWZlX2dldF9pbnQzMl9sZSIsInVuc2FmZV9nZXRfaW50NjRfYmUiLCJ1bnNhZmVfZ2V0X2ludDY0X2xlIiwic3RhdGVfdG9fb3B0aW9uIiwieCIsInYiLCJmYWlsX3RvX3N0cmluZyIsIm1hcmtzIiwiZXJyIiwic3RhdGVfdG9fcmVzdWx0IiwiY3JlYXRlIiwiYnVmZmVyIiwib2ZmIiwibGVuIiwiY29tbWl0dGVkX2J5dGVzIiwibGVuZ3RoIiwidCIsImNsaWVudF9jb21taXR0ZWRfYnl0ZXMiLCJwYXJzZXJfY29tbWl0dGVkX2J5dGVzIiwiYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQiLCJwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMiLCJpbnZhcmlhbnQiLCJvZmZzZXRfaW5fYnVmZmVyIiwicG9zIiwiYXBwbHkiLCJmIiwidW5zYWZlX2dldF9jaGFyIiwidW5zYWZlX2dldF9pbnQxNl9sZSIsInVuc2FmZV9nZXRfaW50MzJfbGUiLCJ1bnNhZmVfZ2V0X2ludDY0X2xlIiwidW5zYWZlX2dldF9pbnQxNl9iZSIsInVuc2FmZV9nZXRfaW50MzJfYmUiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlIiwiY291bnRfd2hpbGUiLCJpIiwibGltaXQiLCJjb21taXQiLCJmYWlsX2siLCJpbnB1dCIsIm1zZyIsInN1Y2NlZWRfayIsInRvX2V4cG9ydGVkX3N0YXRlIiwiY29udGludWUkMCIsImNvbW1pdHRlZCIsImJzIiwibW9yZSIsIngkMCIsInMiLCJzbCIsImkkMCIsInBhcnNlIiwicCIsInBhcnNlX2JpZ3N0cmluZyIsImlucHV0JDAiLCJyZXR1cm4kMCIsImZhaWwiLCJzdWNjIiwic3ltYm9sX2JpbmQiLCJzdWNjJDAiLCJzeW1ib2xfbWFwIiwic3ltYm9sIiwibSIsInN5bWJvbCQwIiwic3VjYzAiLCJpbnB1dDAiLCJwb3MwIiwibW9yZTAiLCJzdWNjMSIsImlucHV0MSIsInBvczEiLCJtb3JlMSIsImxpZnQiLCJsaWZ0MiIsIm0xIiwibTIiLCJzdWNjMiIsImlucHV0MiIsInBvczIiLCJtb3JlMiIsImxpZnQzIiwibTMiLCJzdWNjMyIsImlucHV0MyIsInBvczMiLCJtb3JlMyIsImxpZnQ0IiwibTQiLCJzdWNjNCIsImlucHV0NCIsInBvczQiLCJtb3JlNCIsInN5bWJvbCQxIiwiYSIsImIiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwibWFyayIsImZhaWwkMCIsInN5bWJvbCQ0IiwicSIsInBvcyQwIiwibW9yZSQwIiwicmV0dXJuJDEiLCJzeW1ib2xfYmluZCQwIiwic3ltYm9sX21hcCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsImxpZnQyJDAiLCJsaWZ0MyQwIiwibGlmdDQkMCIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJvZl9iaWdzdHJpbmciLCJidWYiLCJ3cml0YWJsZV9zcGFjZSIsImVuc3VyZSIsInRvX2NvcHkiLCJvbGRfbGVuIiwibmV3X2xlbiIsInNwYWNlIiwibmV3X2J1ZiIsIndyaXRlX3BvcyIsImZlZWRfc3RyaW5nIiwic3RyIiwiZmVlZF9iaWdzdHJpbmciLCJmZWVkX2lucHV0Iiwic2hpZnQiLCJuIiwiZm9yX3JlYWRpbmciLCJ1bmNvbnN1bWVkIiwib2ZfdW5jb25zdW1lZCIsImZyb21fdW5idWZmZXJlZF9zdGF0ZSIsImJ1ZmZlcmluZyIsImNvbnN1bWVkIiwiY29uc3VtZWQkMCIsInVuY29uc3VtZWQkMCIsInBhcnNlJDAiLCJpbml0aWFsX2J1ZmZlcl9zaXplIiwiZmVlZCIsInN0YXRlIiwiayIsImJ1ZmZlcmluZyQwIiwic3RhdGVfdG9fb3B0aW9uJDAiLCJzdGF0ZV90b19yZXN1bHQkMCIsInN0YXRlX3RvX3VuY29uc3VtZWQiLCJwcm9tcHQiLCJkZW1hbmRfaW5wdXQiLCJlbnN1cmVfc3VzcGVuZGVkIiwiZ28iLCJ1bnNhZmVfYXBwbHkiLCJhdF9lbmRfb2ZfaW5wdXQiLCJlbmRfb2ZfaW5wdXQiLCJhZHZhbmNlIiwiYXZhaWxhYmxlIiwidW5zYWZlX2xvb2thaGVhZCIsInBlZWtfY2hhciIsInBlZWtfY2hhcl9mYWlsIiwic2F0aXNmeSIsImMiLCJjaGFyJDAiLCJub3RfY2hhciIsImMkMCIsImFueV9jaGFyIiwiaW50OCIsInAkMCIsImFueV91aW50OCIsInAkMSIsImFueV9pbnQ4Iiwic2tpcCIsImluaXQiLCJ3aXRoX2J1ZmZlciIsImlucHV0X2xlbiIsImluaXQkMCIsImNvdW50X3doaWxlMSIsInN1Y2MkMSIsImZhaWwkMSIsInN0cmluZyIsImYkMCIsImUiLCJzdHJpbmckMCIsInN0cmluZ19jaSIsInNraXBfd2hpbGUiLCJ0YWtlIiwibiQwIiwidGFrZV9iaWdzdHJpbmciLCJ0YWtlX2JpZ3N0cmluZ193aGlsZSIsInRha2VfYmlnc3RyaW5nX3doaWxlMSIsInRha2VfYmlnc3RyaW5nX3RpbGwiLCJwZWVrX3N0cmluZyIsInRha2Vfd2hpbGUiLCJ0YWtlX3doaWxlMSIsInRha2VfdGlsbCIsImNob2ljZSIsInBzIiwiZmFpbHVyZV9tc2ciLCJmaXhfZGlyZWN0IiwiciIsImZpeF9sYXp5IiwibWF4X3N0ZXBzIiwic3RlcHMiLCJmaXgiLCJvcHRpb24iLCJjb25zIiwieHMiLCJsaXN0IiwicHMkMCIsImNvdW50IiwibG9vcCIsIm1hbnkiLCJtYW55MSIsIm1hbnlfdGlsbCIsInNlcF9ieTEiLCJzZXBfYnkiLCJza2lwX21hbnkiLCJza2lwX21hbnkxIiwiZW5kX29mX2xpbmUiLCJzY2FuIiwic3RhdGUkMCIsInBhcnNlciIsInNjYW4kMCIsInNjYW5fc3RhdGUiLCJzY2FuX3N0cmluZyIsImNvbnN1bWVfd2l0aCIsImNvbnN1bWVkX2JpZ3N0cmluZyIsImJvdGgiLCJtYXAiLCJiaW5kIiwibWFwMiIsIm1hcDMiLCJtYXA0IiwiZCIsImludDE2IiwiaW50MzIiLCJpbnQ2NCIsImFueV91aW50MTYiLCJhbnlfaW50MTYiLCJhbnlfaW50MzIiLCJhbnlfaW50NjQiLCJhbnlfZmxvYXQiLCJhbnlfZG91YmxlIiwiaW50MTYkMCIsImludDMyJDAiLCJpbnQ2NCQwIiwiYW55X3VpbnQxNiQwIiwiYW55X2ludDE2JDAiLCJhbnlfaW50MzIkMCIsImFueV9pbnQ2NCQwIiwiYW55X2Zsb2F0JDAiLCJhbnlfZG91YmxlJDAiLCJ0YWtlJDAiLCJwZWVrIiwidGFrZV93aGlsZSQwIiwiY2hlY2siLCJ0YWtlX3doaWxlMSQwIiwidGFrZV90aWxsJDAiLCJwYXJzZV9iaWdzdHJpbmckMCIsImNvbnN1bWUiLCJwYXJzZV9zdHJpbmciLCJ4IiwieCQwIiwiY3N0JDE1IiwiY3N0JDEzIiwiY3N0JDEyIiwiY3N0JDAiLCJpdGVyX2NvbmNhdCIsImZuIiwic2VwIiwiYnVmIiwibGFzdCIsInJlc3QiLCJjb21wYXJlX29wdCIsImMiLCJ0JDAiLCJ0IiwiYSIsImIiLCJjb21wYXJlX2xpc3QiLCJmIiwidCQyIiwidCQxIiwieHMiLCJ5cyIsInkiLCJzdWJfZGVsaW1zIiwiaSIsInNhZmVfY2hhcnMiLCJwY2hhciIsInNhZmVfY2hhcnNfZm9yX3NjaGVtZSIsInNhZmVfY2hhcnNfZm9yX3BhdGgiLCJzYWZlX2NoYXJzX2Zvcl9xdWVyeSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIiwic2FmZV9jaGFyc19mb3JfdXNlcmluZm8iLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQiLCJ1bnNhZmUiLCJzYWZlIiwiY29tcG9uZW50Iiwic2FmZV9jaGFycyQwIiwiaSQwIiwiYyQwIiwibm9ybWFsaXplX2hvc3QiLCJoc28iLCJjYW5vbmljYWxpemVfcG9ydCIsInBvcnQiLCJjYW5vbmljYWxpemVfcGF0aCIsInBhdGgiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMCIsIm5vcm1hbGl6ZV9ob3N0JDAiLCJocyIsImNhbm9uaWNhbGl6ZV9wb3J0JDAiLCJjYW5vbmljYWxpemVfcGF0aCQwIiwic2FmZV9jaGFyc19mb3JfY29tcG9uZW50JDEiLCJub3JtYWxpemVfaG9zdCQxIiwiY2Fub25pY2FsaXplX3BhdGgkMSIsImNhbm9uaWNhbGl6ZV9wb3J0JDEiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMiIsImNhbm9uaWNhbGl6ZV9wb3J0JDIiLCJjYW5vbmljYWxpemVfcGF0aCQyIiwibm9ybWFsaXplX2hvc3QkMiIsImhzJDAiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMyIsIm5vcm1hbGl6ZV9ob3N0JDMiLCJjYW5vbmljYWxpemVfcG9ydCQzIiwiY2Fub25pY2FsaXplX3BhdGgkMyIsIm1vZHVsZV9vZl9zY2hlbWUiLCJzIiwiZW5jb2RlIiwic2NoZW1lIiwibGVuIiwic3RhcnQiLCJjdXIiLCJjdXIkMCIsImN1ciQxIiwic3RhcnQkMCIsImludF9vZl9oZXhfY2hhciIsImRlY29kZSIsImhpZ2hiaXRzIiwibG93Yml0cyIsInN0YXJ0X2F0IiwicGN0X2VuY29kZSIsInBjdF9lbmNvZGVyIiwidXNlcmluZm8iLCJob3N0IiwicXVlcnlfa2V5IiwicXVlcnlfdmFsdWUiLCJmcmFnbWVudCIsInBjdF9kZWNvZGUiLCJjb21wYXJlIiwicCIsInUiLCJwJDAiLCJ1JDAiLCJ1c2VyaW5mb19vZl9lbmNvZGVkIiwidXMiLCJ4JDEiLCJlbmNvZGVkX29mX3VzZXJpbmZvIiwicG8iLCJwYXRoX29mX2VuY29kZWQiLCJwcyIsInRva2wiLCJyZW1vdmVfZG90X3NlZ21lbnRzIiwicmV2cCIsImFzY2Vuc2lvbiIsIm91dHAiLCJyJDMiLCJyJDEiLCJyJDAiLCJyJDIiLCJyIiwibHN0IiwiaCIsImFjYyIsImVuY29kZWRfb2ZfcGF0aCIsInRvayIsInNlZyIsInF1ZXJ5X29mX2VuY29kZWQiLCJxcyIsImVscyIsInBsdXNfdG9fc3BhY2UiLCJzJDAiLCJlbCIsImsiLCJ0bCIsInYiLCJsIiwibCQwIiwibiIsInRsJDAiLCJuJDAiLCJ0bCQxIiwiZW5jb2RlZF9vZl9xdWVyeSIsInBjdF9lbmNvZGVyJDAiLCJvZl9yYXciLCJsYXp5X3F1ZXJ5Iiwia3YiLCJlbmNvZGVkX29mX3F1ZXJ5JDAiLCJlbXB0eSIsImNvbXBhcmVfZGVjb2RlZCIsImNvbXBhcmVfaG9zdCIsImgxIiwiaDIiLCJpcDIiLCJpcDEiLCJpcDIkMCIsImlwMSQwIiwiaDIkMCIsImgxJDAiLCJjb21wYXJlJDAiLCJjJDIiLCJjJDMiLCJjJDQiLCJrdmwkMCIsImt2bCIsInJhdyIsInJhdyQwIiwiYyQxIiwidmwiLCJ2bCQwIiwiayQwIiwiZXF1YWwiLCJ1bmNhc3Rfb3B0Iiwibm9ybWFsaXplIiwic2NoZW0iLCJpbml0IiwiaG9zdCQwIiwiaG9zdCQxIiwidG9fc3RyaW5nIiwidXJpIiwiYWRkX3BjdF9zdHJpbmciLCJmaXJzdF9zZWdtZW50IiwieCQyIiwicSIsImdldF9kZWNvZGVkX29wdCIsIndpdGhfc2NoZW1lIiwiaCQwIiwiaG9zdF93aXRoX2RlZmF1bHQiLCJkZWZhdWx0JDAiLCJ3aXRoX3VzZXJpbmZvIiwidXNlcmluZm8kMCIsInVzZXIiLCJwYXNzd29yZCIsInBhc3MiLCJ3aXRoX3Bhc3N3b3JkIiwicmVzdWx0Iiwid2l0aF9wb3J0Iiwid2l0aF9wYXRoIiwicGF0aCQwIiwid2l0aF9mcmFnbWVudCIsImZyYWciLCJxdWVyeSIsInZlcmJhdGltX3F1ZXJ5IiwiZ2V0X3F1ZXJ5X3BhcmFtIiwiZ2V0X3F1ZXJ5X3BhcmFtJDAiLCJ3aXRoX3F1ZXJ5IiwicV9zIiwid2l0aF9xdWVyeSQwIiwiYWRkX3F1ZXJ5X3BhcmFtIiwiYWRkX3F1ZXJ5X3BhcmFtJDAiLCJhZGRfcXVlcnlfcGFyYW1zIiwiYWRkX3F1ZXJ5X3BhcmFtcyQwIiwicmVtb3ZlX3F1ZXJ5X3BhcmFtIiwicGF0aF9hbmRfcXVlcnkiLCJtYXRjaCIsInNjaGVtZSQwIiwicmVzb2x2ZSIsImJhc2UiLCJzY2hlbWUkMSIsInNjaGVtJDAiLCJwYXRoX3N0ciIsInJlbHBhdGgiLCJicGF0aCIsImJob3N0IiwicmJwYXRoIiwiY2Fub25pY2FsaXplIiwidXJpJDAiLCJwcCIsInBwZiIsInBwX2h1bSIsInN0cmluZ19vZl9jaGFyIiwic3RyaW5nX29mX2NoYXJfbGlzdCIsImNoYXJzIiwiaXNfZGlnaXQiLCJoZXhfZGlnaXQiLCJoZXhhZGVjaW1hbCIsImNfZG90IiwiY19hdCIsImNfY29sb24iLCJkZWNfb2N0ZXQiLCJudW0iLCJpcHY0X2FkZHJlc3MiLCJ0aHJlZSIsIm9uZSIsImFmdGVyX2RvdWJsZV9jb2xvbiIsImRvdWJsZV9jb2xvbiIsImNvdW50IiwiZmlsbGVyX2xlbmd0aCIsInBhcnQiLCJoZXhfcGFydCIsInNwbGl0X3dpdGgiLCJ0cyIsInpzIiwiZm9ybWF0X2FkZHIiLCJzZWdtZW50cyIsInNlZ21lbnQiLCJiZWZvcmVfZG91YmxlX2NvbG9uIiwiYmVmb3JlIiwicmVzIiwiaXB2NiIsImlwdjZfYWRkcmVzcyIsInBjdF9lbmNvZGVkIiwicGN0IiwiZGlnaXRzIiwic3ViX2RlbGltcyQwIiwidW5yZXNlcnZlZCIsInJlZ19uYW1lIiwicG9ydCQwIiwiZGVjb2RlZCIsImF1dGhvcml0eSIsInF1ZXJ5JDAiLCJmcmFnbWVudCQwIiwidXJpX3JlZmVyZW5jZSIsInVyaV9yZWZlcmVuY2UkMCIsImRlY29kZV9ob3N0IiwicGFyc2VkIiwicGFyc2VkJDAiLCJtYWtlIiwicGF0aCQxIiwid2l0aF9ob3N0Iiwid2l0aF91cmkiLCJ3aXRoJDAiLCJvIiwib2Zfc3RyaW5nIiwibGV0JDAiLCJ0b191cmkiLCJvZl91cmkiLCJ1bnN1cHBvcnRlZF9zY2hlbWUiLCJvZl9zdHJpbmckMCIsImVycm9yIiwidG9fc3RyaW5nJDAiLCJtYWtlJDAiLCJob3N0JDIiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAxOCIsImRlZmF1bHRfMDM0IiwiZXJyb3Jfc291cmNlXzAyNyIsImRlZmF1bHRfMDYyIiwiY29tcG9uZW50X29mX3NleHAiLCJzZXhwXzAxNyIsImF0b21fMDAyIiwic2V4cF9hcmdzXzAwNSIsImF0b21fMDAyJDAiLCJhcmcwXzAxNSIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInJlczBfMDExIiwicmVzMV8wMTIiLCJyZXMyXzAxMyIsInJlczBfMDE2Iiwic2V4cF9vZl9jb21wb25lbnQiLCJ2XzAxOSIsImFyZzJfMDIyIiwiYXJnMV8wMjEiLCJhcmcwXzAyMCIsInJlczBfMDIzIiwicmVzMV8wMjQiLCJyZXMyXzAyNSIsImRlZmF1bHRfMDI4IiwiZGVmYXVsdF8wMzUiLCJkZWZhdWx0XzAzNiIsImRlZmF1bHRfMDM3IiwiZGVmYXVsdF8wMzgiLCJkZWZhdWx0XzA0MiIsImRlZmF1bHRfMDQ3IiwiZGVmYXVsdF8wNTIiLCJkZWZhdWx0XzA1NyIsImRlZmF1bHRfMDc1IiwidF9vZl9zZXhwIiwieF8wMzkiLCJzZXhwXzAzMyIsImFyZzFfMDMwIiwiYXJnMF8wMjkiLCJyZXMwXzAzMSIsInJlczFfMDMyIiwidCIsImZyYWdtZW50IiwicXVlcnkiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJ1c2VyaW5mbyIsInNjaGVtZSIsInNleHBfb2ZfdCIsImZyYWdtZW50XzA3NiIsInF1ZXJ5XzA2NyIsInBhdGhfMDYzIiwicG9ydF8wNTgiLCJob3N0XzA1MyIsInVzZXJpbmZvXzA0OCIsInNjaGVtZV8wNDMiLCJibmRzXzA0MCIsImFyZ18wNzgiLCJibmRzXzA0MCQwIiwiYm5kXzA3NyIsImJuZHNfMDQwJDEiLCJhcmdfMDczIiwiYXJnMV8wNjkiLCJhcmcwXzA2OCIsInJlczBfMDcwIiwicmVzMV8wNzEiLCJibmRfMDcyIiwiYXJnXzA2NSIsImJuZHNfMDQwJDIiLCJibmRfMDY0IiwiYXJnXzA2MCIsImJuZHNfMDQwJDMiLCJibmRfMDU5IiwiYXJnXzA1NSIsImJuZHNfMDQwJDQiLCJibmRfMDU0IiwiYXJnXzA1MCIsImJuZHNfMDQwJDUiLCJibmRfMDQ5IiwiYXJnXzA0NSIsImJuZHNfMDQwJDYiLCJibmRfMDQ0IiwiY29tcGFyZSIsImEiLCJiIiwiZXF1YWwiLCJpc192YWxpZF9maWVsZF9uYW1lIiwic2VlbiIsIm5hbWUiLCJhbnlfb2Zfc2V4cCIsInMiLCJsaXN0JDAiLCJ2JDAiLCJuYW1lJDEiLCJzZWVuJDIiLCJyZXZfYWNjIiwibGlzdCIsInJlc3QiLCJyZXZfYWNjJDAiLCJzZWVuJDAiLCJyZXN0JDAiLCJ2IiwibmFtZSQwIiwicmV2X2FjYyQxIiwic2VlbiQxIiwibCIsImxvZ19zIiwic2V4cCIsImxvZ19zX2FzX3N0cmluZyIsInNleHBfb2ZfdCIsImZpZWxkMl8wMTYiLCJmaWVsZDFfMDE0IiwiYXJnXzAxNyIsImJuZHNfMDEzIiwic29tZV9uYW1lXzAwNSIsImFyZ18wMDYiLCJibmRzXzAwNCIsImFyZ18wMTUiLCJibmRzXzAxMyQwIiwidG9fc3RyaW5nIiwic2V4cF93aXRoX2R1cGxpY2F0ZV9rZXlzIiwieF8wMjIiLCJpIiwiYXJnMV8wMTkiLCJhcmcwXzAxOCIsInJlczBfMDIwIiwicmVzMV8wMjEiLCJjb21wYXJlX2Nsb3NlX2V2ZW50X2NvZGUiLCJzZXhwX29mX2Nsb3NlX2V2ZW50X2NvZGUiLCJhbGxfb2ZfY2xvc2VfZXZlbnRfY29kZSIsImNvbXBhcmUiLCJhXzAwNCIsImJfMDA1IiwiYV8wMDYiLCJiXzAwNyIsImFfMDA4IiwiYl8wMDkiLCJhY2MiLCJsJDAiLCJlbnVtZXJhdGVfMDExIiwiYWNjJDAiLCJsJDEiLCJhY2MkMSIsImwkMiIsImVudW1lcmF0ZV8wMTAiLCJhY2MkMiIsImFsbCIsIm9mX2ludCIsImNvZGUiLCJ0b19pbnQiLCJjb2RlJDAiLCJ4XzAzMSIsInhfMDMwIiwibm9ybWFsX2Nsb3N1cmUiLCJjbGllbnQiLCJoZWFydGJlYXRfY29uZmlnIiwiZGVzY3JpcHRpb24iLCJpbXBsZW1lbnRhdGlvbnMiLCJ1cmkiLCJzY2hlbWUiLCJwb3J0IiwicG9ydCQwIiwiaG9zdCIsIm1hdGNoJDEiLCJyZXMiLCJoIiwiZGVzY3JpcHRpb24kMCIsImZyb21fc2VydmVyX3ciLCJmcm9tX3NlcnZlcl9yIiwidG9fc2VydmVyX3ciLCJ0b19zZXJ2ZXJfciIsImVycm9yIiwidHJhbnNwb3J0IiwiY3JlYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsImNvbm5lY3Rpb24iLCJleG4iLCJpbXBsZW1lbnRhdGlvbnMkMCIsImV4biQxIiwiZXhuJDAiLCJjb25uZWN0ZWRfaXZhciIsImNsZWFudXAiLCJyZWFzb24iLCJyZWFzb24kMCIsImNsb3NlIiwib25jbG9zZSIsImNsb3NlX2V2ZW50Iiwid2hhdF9oYXBwZW5lZCIsImN1c3RvbV9wcmludGZfMDM0IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvbm1lc3NhZ2UiLCJkYXRhIiwiY29ubmVjdGVkIiwiY29ubmVjdGVkX2RlZmVycmVkIiwiY2xlYW51cF93aGVuX2FfcGlwZV9pc19jbG9zZWQiLCJjbGllbnRfZXhuIiwiY3JlYXRlX2Zyb21fdXJpIiwiZXF1YWwkMCIsImFfMDAxIiwiYl8wMDIiLCJhXzAwMyIsImJfMDA0Iiwic2V4cF9vZl90JDEiLCJ4XzAwNyIsImNyZWF0ZV9mcm9tX3VyaV9vcHRpb24iLCJtZXRob2Rfc3RyaW5nJDAiLCJyZXF1ZXN0Iiwib25fcHJvZ3Jlc3MiLCJvbl91cGxvYWRfcHJvZ3Jlc3MiLCJ1cmwiLCJyZXNwb25zZV90eXBlIiwibWV0aG9kX3dpdGhfYXJncyIsImhlYWRlcnMiLCJhcmdzIiwibWV0aG9kX3N0cmluZyQxIiwidXJsJDAiLCJ2YWx1ZSIsInJlc3BvbnNlIiwiZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IiLCJjb250ZW50IiwiZ2V0X2hlYWRlciIsImJvZHkiLCJib2R5JDAiLCJnZXQiLCJhcmd1bWVudHMkMCIsInJlc3AiLCJwb3N0IiwicmVhZHlfc3RhdGVfY2hhbmdlIiwiY29tcGxldGUiLCJzbGVlcCIsImQiLCJ5aWVsZCQwIiwiZXh0cmFjdF9qc19lcnJvciIsIm1zZyIsImpzX2Vycm9yIiwibWVzc2FnZXMiLCJqc19lcnJvciQwIiwicHJldHR5X3ByaW50X2V4Y2VwdGlvbiIsImVyciIsImNsYXNzaWZpY2F0aW9uIiwiZXJyJDIiLCJlcnIkMCIsImV4biQyIiwiaGQiLCJtZXNzYWdlIiwic3RhdGUiLCJ0aW1lb3V0cyIsInJ1bl9hZnRlciIsImYiLCJtcyIsImxvb3AiLCJ0IiwibmV4dF93YWtldXAiLCJuZXh0Iiwibm93IiwiZF9tcyQwIiwiZF9tcyIsImF0IiwicnVuX3RpbWVvdXQiLCJydW4iLCJpbml0aWFsaXplZF9yZWYiLCJpbml0aWFsaXphdGlvbiIsImluaXQiLCJpbml0aWFsaXplZCIsImpzX3N0cmluZ19jb21wYXJlIiwicmVhZHlzdGF0ZWNoYW5nZV9ldiIsImFkZF9ldmVudCIsInRhcmdldCIsImV2dCIsImhhbmRsZXIiLCJkb2N1bWVudF9sb2FkZWQiLCJsb2FkZWQiLCJsZWZ0X2NoaWxkX2luZGV4IiwicGFyZW50X2luZGV4IiwibnVtX2JyYW5jaGVzIiwidCIsImluZGV4X2lzX2xlYWYiLCJpIiwibGVhZl9pbmRleCIsIm9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbiIsInJvdGF0ZWRfaW5kZXgiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwiZGF0YSIsImkkMCIsImEiLCJsZWZ0X2NoaWxkX2luZGV4JDAiLCJyaWdodCIsImxlZnRfaXNfbm9uZSIsInJpZ2h0X2lzX25vbmUiLCJjcmVhdGVfZXhuIiwibnVtX2xlYXZlcyIsInJlZHVjZSIsIm51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCIsInZhbGlkYXRlX2luZGV4IiwibGVuZ3RoIiwic2V0X2V4biIsImNoaWxkX2luZGV4IiwicGFyZW50IiwiZ2V0X2V4biIsInhfMDAyIiwiY29tcHV0ZV9leG4iLCJzZXhwX29mX3QiLCJzdGVwcyIsInIiLCJpbml0Iiwic2V4cF9vZl90JDAiLCJvZl9hXzAwMSIsInN0ZXBzXzAwNSIsImluaXRfMDAzIiwiYXJnXzAwNiIsImFyZzFfMDA4IiwiYXJnMF8wMDciLCJyZXMwXzAwOSIsInJlczFfMDEwIiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsImludmFyaWFudCIsImludmFyaWFudF9hIiwidmFsdWUiLCJ0JDAiLCJhdCIsInN0ZXBzJDEiLCJpbml0JDEiLCJzdGVwcyQwIiwiaW5pdCQwIiwidCIsImNvbnN0YW50IiwiY3JlYXRlX2V4biIsInRpbWUyIiwidGltZTEiLCJ4XzAxMSIsImNyZWF0ZV9mcm9tX3NlcXVlbmNlIiwiY3JlYXRlIiwibGVuIiwibGVuZ3RoIiwidCIsInNldCIsInNldF9leG4iLCJpIiwieCIsImdldCIsImlzX3NvbWUiLCJpc19ub25lIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpdGVyIiwiZiIsInYiLCJpdGVyaSIsImJsaXQiLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNyZWF0ZSIsImluZGV4IiwiZ2V0IiwidCIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInhfMDAxIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJzZXQiLCJibG9jayIsInNleHBfb2ZfdCIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJrZXlzX3dpdGhfdW51c2VkX2RhdGFfMDA2IiwiZW50cnlfYnlfa2V5XzAwNCIsImFyZ18wMDkiLCJibmRzXzAwMyIsImFyZ18wMDciLCJibmRzXzAwMyQwIiwiYXJnXzAwNSIsImJuZHNfMDAzJDEiLCJjcmVhdGUiLCJncm93dGhfYWxsb3dlZCIsInNpemUiLCJoYXNoYWJsZSIsImNyZWF0ZSQwIiwibSIsInNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSIsInQiLCJ0aHJlYWRfc2FmZV9mIiwicmVtb3ZlIiwia2V5IiwicmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VuIiwiZW50cnkiLCJnZXRfZW50cnkiLCJtZW0iLCJrZXlfaXNfdXNpbmdfc3BhY2UiLCJzZXRfZGF0YSIsImRhdGEiLCJjbGVhbnVwIiwicmVwbGFjZSIsImFkZF9leG4iLCJ4XzAxMCIsImZpbmQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsInYiLCJzZXhwX29mX3QiLCJjb25jYXQiLCJ0YWciLCJhcmcwXzAwMSIsImFyZzFfMDAyIiwic2V4cF9vZl9hIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsInJlYWxsb2MiLCJ0IiwibGVuIiwiYSIsIm5ld190IiwicmVhbGxvYyQwIiwicmVzMF8wMDUiLCJyZXMwXzAwNyIsImludmFyaWFudCIsInhfMDA5IiwiY3JlYXRlIiwiZiIsIm9mX2NvbXBhcmUiLCJvZl9lcXVhbCIsInBvbHlfZXF1YWwiLCJzaG91bGRfY3V0b2ZmIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiZiQwIiwiZiQxIiwiZXF1YWwiLCJ0MSIsInQyIiwiZjEiLCJmMiIsImYxJDAiLCJmMiQwIiwiZjEkMSIsImYyJDEiLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJ4XzAwNSIsInNleHBfb2ZfZG90IiwiYXR0cmlidXRlc18wMDkiLCJsYWJlbF8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsInNleHBfb2ZfdCQwIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJuZXdfMDE4IiwicHJpb3JfMDE2IiwiYXJnXzAxOSIsImJuZHNfMDE1IiwiYXJnXzAxNyIsImJuZHNfMDE1JDAiLCJpbmZvIiwiYXBwZW5kIiwicHJpb3IiLCJuZXckMCIsImRvdCIsImxhYmVsIiwiYXR0cmlidXRlcyIsImxhYmVsJDAiLCJ0b19kb3QiLCJpIiwicHJpb3IkMCIsIm5ldyQxIiwibGVmdCIsInJpZ2h0IiwiZXNjYXBlX2RvdF9zdHJpbmciLCJzIiwiZXNjYXBlX3JlY29yZF9sYWJlbCIsImMiLCJ0b19zdHJpbmciLCJuYW1lIiwiY29scyIsInYiLCJrIiwiYXR0cmlidXRlcyQwIiwiciIsIm5leHQiLCJub25lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJhZGQxIiwiY21wX2EiLCJhXzAwNyIsImFfMDA1IiwiYl8wMDgiLCJiXzAwNiIsIm4iLCJvZl9hXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwicmVzMV8wMTUiLCJvZl9hXzAxNyIsInByZXZpb3VzX3VwZGF0ZV9raW5kXzAyMSIsImNyZWF0ZWRfYXRfMDIzIiwiYXJnXzAyNCIsImJuZHNfMDE4IiwiYXJnXzAyMiIsImJuZHNfMDE4JDAiLCJhcmdfMDIwIiwiYm5kc18wMTgkMSIsImNyZWF0ZWRfYXQiLCJyZWFsbHlfcnVuIiwibm9kZV91cGRhdGUiLCJydW4iLCJub3ciLCJiYWNrdHJhY2VfMDA0IiwiZXhuXzAwMiIsImFyZ18wMDUiLCJibmRzXzAwMSIsImFyZ18wMDMiLCJibmRzXzAwMSQwIiwiZXhuIiwicmVyYWlzZV93aXRoX21lc3NhZ2UiLCJtc2ciLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwic2V4cF9vZl9ub2RlIiwieF8wMDMiLCJpc192YWxpZCIsImlzX25lY2Vzc2FyeSIsInR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIiwiYmluZCIsInhfMDA0Iiwid2F0Y2giLCJzZXRfYXQiLCJzZXRfc2V0X2F0IiwidmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIiwic2V0X3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphIiwidmFsdWUiLCJzZXRfdmFsdWUiLCJ3YXRjaCQwIiwic2V0X2F0JDAiLCJ2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsInZhbHVlJDAiLCJzZXhwX29mX3ZhciIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwic2V0X2F0XzAwNyIsIndhdGNoXzAwOSIsImJuZHNfMDAyIiwiYm5kc18wMDIkMCIsImFyZ18wMDYiLCJibmRzXzAwMiQxIiwiYXJnXzAwNCIsImJuZHNfMDAyJDIiLCJpbnZhcmlhbnRfYSIsInhfMDExIiwiY2hlY2siLCJ3YXRjaF9mdW4iLCJ0JDAiLCJzZXRfYXRfZnVuIiwidmFsdWVfZnVuIiwiaW5jcl9zdGF0ZSIsInBhcmFtIiwicmVzMF8wMTUiLCJsYXRlc3RfdmFsdWUiLCJwb3MiLCJyZXMwXzAwNCIsInJlczBfMDA2IiwibnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvIiwic2V0X251bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsIiwiZm9sZF92YWx1ZSIsInNldF9mb2xkX3ZhbHVlIiwiY2hpbGRyZW4iLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIiwiaW5pdCIsIm1haW4iLCJudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY28kMCIsImZvbGRfdmFsdWUkMCIsImNoaWxkcmVuJDAiLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzJDAiLCJpbml0JDAiLCJtYWluJDAiLCJvZl9hY2NfMDEwIiwiY2hpbGRyZW5fMDIyIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc18wIiwiaW5pdF8wMTQiLCJtYWluXzAxMiIsImZvbGRfdmFsdWVfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDExIiwiYXJnXzAyNSIsImJuZHNfMDExJDAiLCJhcmdfMDIzIiwiYm5kc18wMTEkMSIsImFyZ18wMjEiLCJibmRzXzAxMSQyIiwiYm5kc18wMTEkMyIsImJuZHNfMDExJDQiLCJhcmdfMDE1IiwiYm5kc18wMTEkNSIsImFyZ18wMTMiLCJibmRzXzAxMSQ2IiwiaW52YXJpYW50X2FjYyIsInhfMDI4IiwiZm9sZF92YWx1ZV9mdW4iLCJnb3QiLCJleHBlY3QiLCJzZXhwaWZpZXIiLCJjb21wYXJhdG9yIiwiYV8wMjkiLCJiXzAzMCIsImNoaWxkcmVuX2Z1biIsImNoaWxkIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc19mIiwiaW5pdF9mdW4iLCJtYWluX2Z1biIsInVwZGF0ZSQwIiwiZl9pbnZlcnNlIiwidXBkYXRlIiwiY29tcHV0ZSIsInJlc3VsdCIsImZvcmNlX2Z1bGxfY29tcHV0ZSIsImNoaWxkX2NoYW5nZWQiLCJ4XzAzMSIsImNoaWxkX2luZGV4Iiwib2xkX3ZhbHVlX29wdCIsImNoaWxkX2F0X2luZGV4IiwieF8wMDEiLCJudWxsJDAiLCJhbGFybV92YWx1ZSIsInNldF9hbGFybV92YWx1ZSIsImFsYXJtIiwic2V0X2FsYXJtIiwiYWxhcm1fdmFsdWUkMCIsImFsYXJtJDAiLCJtYWluXzAwMyIsImNoaWxkXzAwNSIsImV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fYyIsInZhbHVlXzAwOSIsInVwY29taW5nX3N0ZXBzXzAxMSIsImFsYXJtXzAxNyIsImFsYXJtX3ZhbHVlXzAxOSIsImNsb2NrXzAyMSIsImFyZ18wMTgiLCJhcmdfMDEyIiwiYXJnMV8wMTQiLCJyZXMxXzAxNiIsImJuZHNfMDAyJDMiLCJibmRzXzAwMiQ0IiwiYm5kc18wMDIkNSIsImJuZHNfMDAyJDYiLCJ4XzAyMyIsImFsYXJtX3ZhbHVlX2Z1biIsImFsYXJtX2Z1biIsImFkdmFuY2UiLCJ0byIsInN0ZXBzJDAiLCJhMSQwIiwiYTEiLCJzdGVwcyIsInN0ZXBzMiIsImEyIiwic3RlcF9hdCIsIm9mX2FjY18wMDIiLCJjaGlsZHJlbl8wMDgiLCJpbml0XzAwNCIsImFyZ18wMDkiLCJibmRzXzAwMyIsImFyZ18wMDciLCJibmRzXzAwMyQwIiwiYm5kc18wMDMkMSIsInhfMDEwIiwiYXRfMDA0IiwibWFpbl8wMDIiLCJhbGFybV8wMDYiLCJjbG9ja18wMDgiLCJibmRzXzAwMSQxIiwiYm5kc18wMDEkMiIsImludGVydmFsIiwiaW50ZXJ2YWwkMCIsImludGVydmFsXzAwNiIsImJhc2VfMDA0IiwiYWxhcm1fMDA4IiwiY2xvY2tfMDEwIiwiYXJnXzAxMSIsImJuZHNfMDAxJDMiLCJpbnRlcnZhbF9mdW4iLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJzZXRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwicmhzX3Njb3BlIiwic2V0X3Joc19zY29wZSIsImxoc19jaGFuZ2UiLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMkMCIsInJoc19zY29wZSQwIiwibGhzX2NoYW5nZSQwIiwib2ZfYl8wMDIiLCJtYWluXzAwNCIsImxoc19jaGFuZ2VfMDEwIiwibGhzXzAwOCIsInJoc18wMTIiLCJyaHNfc2NvcGVfMDE0IiwiYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXzAxNiIsImJuZHNfMDAzJDIiLCJibmRzXzAwMyQzIiwiYm5kc18wMDMkNCIsImJuZHNfMDAzJDUiLCJpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwibWF0Y2giLCJpbnZhcmlhbnRfYiIsInhfMDE4IiwiYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzX2Z1biIsIm5vZGUiLCJyaHNfc2NvcGVfZnVuIiwibGhzX2NoYW5nZV9mdW4iLCJwb3MkMCIsInBvcyQxIiwic2V4cF9vZl9lZGdlIiwiY2hpbGRfMDAzIiwiaW5kZXhfMDA3Iiwic2V4cF9vZl9wYWNrZWRfZWRnZSIsInJlczBfMDEwIiwib2ZfYV8wMTEiLCJjaGlsZHJlbl8wMTciLCJudW1fY2hpbGRyZW5fMDE5IiwiZm9yY2Vfc3RhbGVfMDIxIiwibnVtX2ludmFsaWRfY2hpbGRyZW5fMDIzIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3NfMDI1IiwiYXJnXzAyNiIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJibmRzXzAxMiQyIiwiYm5kc18wMTIkMyIsImFyZ18wMTYiLCJibmRzXzAxMiQ0IiwiYXJnXzAxNCIsImJuZHNfMDEyJDUiLCJudW1fY2hpbGRyZW4iLCJ1b3B0IiwiYV8wMjciLCJiXzAyOCIsImludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaCIsIm51bV9pbnZhbGlkX2NoaWxkcmVuIiwic2V4cGlmaWVyJDAiLCJjb21wYXJhdG9yJDAiLCJjb3VudF9pbnZhbGlkX2NoaWxkcmVuIiwiYV8wMzEiLCJiXzAzMiIsIm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIiwibWFrZV9zdGFsZSIsImluY3JfaW52YWxpZF9jaGlsZHJlbiIsImRlY3JfaW52YWxpZF9jaGlsZHJlbiIsImFkZF9jaGlsZF9lZGdlIiwicGFja2VkX2VkZ2UiLCJuZXdfbWF4IiwibmV3X2NoaWxkX2luZGV4Iiwic3dhcF9jaGlsZHJlbiIsImNoaWxkX2luZGV4MSIsImNoaWxkX2luZGV4MiIsImVkZ2UxIiwibGFzdF9jaGlsZF9lZGdlX2V4biIsImxhc3RfaW5kZXgiLCJyZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biIsInBhY2tlZF9lZGdlX29wdCIsImJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3MiLCJvYnNlcnZhYmlsaXR5X2NoYW5nZSIsImlzX25vd19vYnNlcnZhYmxlIiwicnVuX2VkZ2VfY2FsbGJhY2siLCJpc190b3AiLCJoZWlnaHQiLCJhZGRfbm9kZSIsImN1cnJlbnRfYnJhbmNoIiwic2V0X2N1cnJlbnRfYnJhbmNoIiwidGVzdF9jaGFuZ2UiLCJjdXJyZW50X2JyYW5jaCQwIiwidGVzdF9jaGFuZ2UkMCIsInRlc3RfY2hhbmdlXzAwNyIsInRlc3RfMDA1IiwiY3VycmVudF9icmFuY2hfMDA5IiwiZWxzZV8wMTMiLCJ0aGVuXzAxMSIsInhfMDE1IiwiY3VycmVudF9icmFuY2hfZnVuIiwidGVzdF9jaGFuZ2VfZnVuIiwibGhzX2NoYW5nZV8wMDciLCJsaHNfMDA1IiwicmhzXzAwOSIsImJlZm9yZSIsImJlZm9yZSQwIiwiY2xvY2tfMDExIiwidmFsdWVfYXRfMDA5IiwiYmVmb3JlXzAwNyIsImF0XzAwNSIsInhfMDEzIiwiYmVmb3JlX2Z1biIsImFyZzBfMDAyIiwiYXJnMF8wMDQiLCJhcmcwXzAwNiIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMl8wNDAiLCJhcmcxXzAzOSIsInJlczBfMDQxIiwicmVzMV8wNDIiLCJyZXMyXzA0MyIsImFyZzNfMDQ3IiwiYXJnMl8wNDYiLCJhcmcxXzA0NSIsInJlczBfMDQ4IiwicmVzMV8wNDkiLCJyZXMyXzA1MCIsInJlczNfMDUxIiwiYXJnNF8wNTYiLCJhcmczXzA1NSIsImFyZzJfMDU0IiwiYXJnMV8wNTMiLCJyZXMwXzA1NyIsInJlczFfMDU4IiwicmVzMl8wNTkiLCJyZXMzXzA2MCIsInJlczRfMDYxIiwiYXJnNV8wNjciLCJhcmc0XzA2NiIsImFyZzNfMDY1IiwiYXJnMl8wNjQiLCJhcmcxXzA2MyIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMyXzA3MCIsInJlczNfMDcxIiwicmVzNF8wNzIiLCJyZXM1XzA3MyIsImFyZzZfMDgwIiwiYXJnNV8wNzkiLCJhcmc0XzA3OCIsImFyZzNfMDc3IiwiYXJnMl8wNzYiLCJhcmcxXzA3NSIsInJlczBfMDgxIiwicmVzMV8wODIiLCJyZXMyXzA4MyIsInJlczNfMDg0IiwicmVzNF8wODUiLCJyZXM1XzA4NiIsInJlczZfMDg3IiwiYXJnN18wOTUiLCJhcmc2XzA5NCIsImFyZzVfMDkzIiwiYXJnNF8wOTIiLCJhcmczXzA5MSIsImFyZzJfMDkwIiwiYXJnMV8wODkiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwicmVzMl8wOTgiLCJyZXMzXzA5OSIsInJlczRfMTAwIiwicmVzNV8xMDEiLCJyZXM2XzEwMiIsInJlczdfMTAzIiwiYXJnOF8xMTIiLCJhcmc3XzExMSIsImFyZzZfMTEwIiwiYXJnNV8xMDkiLCJhcmc0XzEwOCIsImFyZzNfMTA3IiwiYXJnMl8xMDYiLCJhcmcxXzEwNSIsInJlczBfMTEzIiwicmVzMV8xMTQiLCJyZXMyXzExNSIsInJlczNfMTE2IiwicmVzNF8xMTciLCJyZXM1XzExOCIsInJlczZfMTE5IiwicmVzN18xMjAiLCJyZXM4XzEyMSIsImFyZzlfMTMxIiwiYXJnOF8xMzAiLCJhcmc3XzEyOSIsImFyZzZfMTI4IiwiYXJnNV8xMjciLCJhcmc0XzEyNiIsImFyZzNfMTI1IiwiYXJnMl8xMjQiLCJhcmcxXzEyMyIsInJlczBfMTMyIiwicmVzMV8xMzMiLCJyZXMyXzEzNCIsInJlczNfMTM1IiwicmVzNF8xMzYiLCJyZXM1XzEzNyIsInJlczZfMTM4IiwicmVzN18xMzkiLCJyZXM4XzE0MCIsInJlczlfMTQxIiwiYXJnMTBfMTUyIiwiYXJnOV8xNTEiLCJhcmc4XzE1MCIsImFyZzdfMTQ5IiwiYXJnNl8xNDgiLCJhcmc1XzE0NyIsImFyZzRfMTQ2IiwiYXJnM18xNDUiLCJhcmcyXzE0NCIsImFyZzFfMTQzIiwicmVzMF8xNTMiLCJyZXMxXzE1NCIsInJlczJfMTU1IiwicmVzM18xNTYiLCJyZXM0XzE1NyIsInJlczVfMTU4IiwicmVzNl8xNTkiLCJyZXM3XzE2MCIsInJlczhfMTYxIiwicmVzOV8xNjIiLCJyZXMxMF8xNjMiLCJhcmcxMV8xNzUiLCJhcmcxMF8xNzQiLCJhcmc5XzE3MyIsImFyZzhfMTcyIiwiYXJnN18xNzEiLCJhcmc2XzE3MCIsImFyZzVfMTY5IiwiYXJnNF8xNjgiLCJhcmczXzE2NyIsImFyZzJfMTY2IiwiYXJnMV8xNjUiLCJyZXMwXzE3NiIsInJlczFfMTc3IiwicmVzMl8xNzgiLCJyZXMzXzE3OSIsInJlczRfMTgwIiwicmVzNV8xODEiLCJyZXM2XzE4MiIsInJlczdfMTgzIiwicmVzOF8xODQiLCJyZXM5XzE4NSIsInJlczEwXzE4NiIsInJlczExXzE4NyIsImFyZzEyXzIwMCIsImFyZzExXzE5OSIsImFyZzEwXzE5OCIsImFyZzlfMTk3IiwiYXJnOF8xOTYiLCJhcmc3XzE5NSIsImFyZzZfMTk0IiwiYXJnNV8xOTMiLCJhcmc0XzE5MiIsImFyZzNfMTkxIiwiYXJnMl8xOTAiLCJhcmcxXzE4OSIsInJlczBfMjAxIiwicmVzMV8yMDIiLCJyZXMyXzIwMyIsInJlczNfMjA0IiwicmVzNF8yMDUiLCJyZXM1XzIwNiIsInJlczZfMjA3IiwicmVzN18yMDgiLCJyZXM4XzIwOSIsInJlczlfMjEwIiwicmVzMTBfMjExIiwicmVzMTFfMjEyIiwicmVzMTJfMjEzIiwiYXJnMTNfMjI3IiwiYXJnMTJfMjI2IiwiYXJnMTFfMjI1IiwiYXJnMTBfMjI0IiwiYXJnOV8yMjMiLCJhcmc4XzIyMiIsImFyZzdfMjIxIiwiYXJnNl8yMjAiLCJhcmc1XzIxOSIsImFyZzRfMjE4IiwiYXJnM18yMTciLCJhcmcyXzIxNiIsImFyZzFfMjE1IiwicmVzMF8yMjgiLCJyZXMxXzIyOSIsInJlczJfMjMwIiwicmVzM18yMzEiLCJyZXM0XzIzMiIsInJlczVfMjMzIiwicmVzNl8yMzQiLCJyZXM3XzIzNSIsInJlczhfMjM2IiwicmVzOV8yMzciLCJyZXMxMF8yMzgiLCJyZXMxMV8yMzkiLCJyZXMxMl8yNDAiLCJyZXMxM18yNDEiLCJhcmcxNF8yNTYiLCJhcmcxM18yNTUiLCJhcmcxMl8yNTQiLCJhcmcxMV8yNTMiLCJhcmcxMF8yNTIiLCJhcmc5XzI1MSIsImFyZzhfMjUwIiwiYXJnN18yNDkiLCJhcmc2XzI0OCIsImFyZzVfMjQ3IiwiYXJnNF8yNDYiLCJhcmczXzI0NSIsImFyZzJfMjQ0IiwiYXJnMV8yNDMiLCJyZXMwXzI1NyIsInJlczFfMjU4IiwicmVzMl8yNTkiLCJyZXMzXzI2MCIsInJlczRfMjYxIiwicmVzNV8yNjIiLCJyZXM2XzI2MyIsInJlczdfMjY0IiwicmVzOF8yNjUiLCJyZXM5XzI2NiIsInJlczEwXzI2NyIsInJlczExXzI2OCIsInJlczEyXzI2OSIsInJlczEzXzI3MCIsInJlczE0XzI3MSIsImFyZzE1XzI4NyIsImFyZzE0XzI4NiIsImFyZzEzXzI4NSIsImFyZzEyXzI4NCIsImFyZzExXzI4MyIsImFyZzEwXzI4MiIsImFyZzlfMjgxIiwiYXJnOF8yODAiLCJhcmc3XzI3OSIsImFyZzZfMjc4IiwiYXJnNV8yNzciLCJhcmc0XzI3NiIsImFyZzNfMjc1IiwiYXJnMl8yNzQiLCJhcmcxXzI3MyIsInJlczBfMjg4IiwicmVzMV8yODkiLCJyZXMyXzI5MCIsInJlczNfMjkxIiwicmVzNF8yOTIiLCJyZXM1XzI5MyIsInJlczZfMjk0IiwicmVzN18yOTUiLCJyZXM4XzI5NiIsInJlczlfMjk3IiwicmVzMTBfMjk4IiwicmVzMTFfMjk5IiwicmVzMTJfMzAwIiwicmVzMTNfMzAxIiwicmVzMTRfMzAyIiwicmVzMTVfMzAzIiwiYXJyYXlfZm9sZCIsImF0IiwiYXRfaW50ZXJ2YWxzIiwiYmluZCQwIiwiZSIsImZyZWV6ZSIsImlmX3RoZW5fZWxzZSIsImlmX3RoZW5fZWxzZSQwIiwiam9pbiIsImpvaW4kMCIsInNuYXBzaG90Iiwic3RlcF9mdW5jdGlvbl9ub2RlIiwidW5vcmRlcmVkX2FycmF5X2ZvbGQiLCJ2YXIkMCIsImluaXRpYWxfbnVtX2NoaWxkcmVuIiwiaXRlcmlfY2hpbGRyZW4iLCJyaHMiLCJpJDAiLCJ0ZXN0IiwibGhzIiwicmhzJDAiLCJub2RlMCIsImNoaWxkJDAiLCJjaGlsZHJlbiQxIiwiaSQxIiwibm9kZTEiLCJub2RlMCQwIiwibm9kZTIiLCJub2RlMSQwIiwibm9kZTAkMSIsIm5vZGUzIiwibm9kZTIkMCIsIm5vZGUxJDEiLCJub2RlMCQyIiwibm9kZTQiLCJub2RlMyQwIiwibm9kZTIkMSIsIm5vZGUxJDIiLCJub2RlMCQzIiwibm9kZTUiLCJub2RlNCQwIiwibm9kZTMkMSIsIm5vZGUyJDIiLCJub2RlMSQzIiwibm9kZTAkNCIsIm5vZGU2Iiwibm9kZTUkMCIsIm5vZGU0JDEiLCJub2RlMyQyIiwibm9kZTIkMyIsIm5vZGUxJDQiLCJub2RlMCQ1Iiwibm9kZTciLCJub2RlNiQwIiwibm9kZTUkMSIsIm5vZGU0JDIiLCJub2RlMyQzIiwibm9kZTIkNCIsIm5vZGUxJDUiLCJub2RlMCQ2Iiwibm9kZTgiLCJub2RlNyQwIiwibm9kZTYkMSIsIm5vZGU1JDIiLCJub2RlNCQzIiwibm9kZTMkNCIsIm5vZGUyJDUiLCJub2RlMSQ2Iiwibm9kZTAkNyIsIm5vZGU5Iiwibm9kZTgkMCIsIm5vZGU3JDEiLCJub2RlNiQyIiwibm9kZTUkMyIsIm5vZGU0JDQiLCJub2RlMyQ1Iiwibm9kZTIkNiIsIm5vZGUxJDciLCJub2RlMCQ4Iiwibm9kZTEwIiwibm9kZTkkMCIsIm5vZGU4JDEiLCJub2RlNyQyIiwibm9kZTYkMyIsIm5vZGU1JDQiLCJub2RlNCQ1Iiwibm9kZTMkNiIsIm5vZGUyJDciLCJub2RlMSQ4Iiwibm9kZTAkOSIsIm5vZGUxMSIsIm5vZGUxMCQwIiwibm9kZTkkMSIsIm5vZGU4JDIiLCJub2RlNyQzIiwibm9kZTYkNCIsIm5vZGU1JDUiLCJub2RlNCQ2Iiwibm9kZTMkNyIsIm5vZGUyJDgiLCJub2RlMSQ5Iiwibm9kZTAkMTAiLCJub2RlMTIiLCJub2RlMTEkMCIsIm5vZGUxMCQxIiwibm9kZTkkMiIsIm5vZGU4JDMiLCJub2RlNyQ0Iiwibm9kZTYkNSIsIm5vZGU1JDYiLCJub2RlNCQ3Iiwibm9kZTMkOCIsIm5vZGUyJDkiLCJub2RlMSQxMCIsIm5vZGUwJDExIiwibm9kZTEzIiwibm9kZTEyJDAiLCJub2RlMTEkMSIsIm5vZGUxMCQyIiwibm9kZTkkMyIsIm5vZGU4JDQiLCJub2RlNyQ1Iiwibm9kZTYkNiIsIm5vZGU1JDciLCJub2RlNCQ4Iiwibm9kZTMkOSIsIm5vZGUyJDEwIiwibm9kZTEkMTEiLCJub2RlMCQxMiIsIm5vZGUxNCIsIm5vZGUxMyQwIiwibm9kZTEyJDEiLCJub2RlMTEkMiIsIm5vZGUxMCQzIiwibm9kZTkkNCIsIm5vZGU4JDUiLCJub2RlNyQ2Iiwibm9kZTYkNyIsIm5vZGU1JDgiLCJub2RlNCQ5Iiwibm9kZTMkMTAiLCJub2RlMiQxMSIsIm5vZGUxJDEyIiwibm9kZTAkMTMiLCJzbG93X2dldF9jaGlsZCIsImluZGV4IiwiYXJnMV8zMDYiLCJhcmcwXzMwNSIsInJlczBfMzA3IiwicmVzMV8zMDgiLCJwb3MkNCIsInBvcyQzIiwicG9zJDIiLCJteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW4iLCJzZXRfbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2EiLCJteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW4iLCJzZXRfbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2EiLCJvYnNlcnZlcnMiLCJzZXRfb2JzZXJ2ZXJzIiwic2V0X29sZF92YWx1ZV9vcHQiLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAiLCJzZXRfbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWEiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCIsInNldF9oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaCIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCIsInByZXZfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfcHJldl9pbl9yZWNvbXB1dGVfaGVhcCIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCIsInNldF9oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfaGVpZ2h0IiwibmV4dF9ub2RlX2luX3NhbWVfc2NvcGUiLCJzZXRfbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUiLCJjcmVhdGVkX2luIiwic2V0X2NyZWF0ZWRfaW4iLCJwYXJlbnQwIiwic2V0X3BhcmVudDAiLCJwYXJlbnQxX2FuZF9iZXlvbmQiLCJzZXRfcGFyZW50MV9hbmRfYmV5b25kIiwibnVtX3BhcmVudHMiLCJzZXRfbnVtX3BhcmVudHMiLCJudW1fb25fdXBkYXRlX2hhbmRsZXJzIiwic2V0X251bV9vbl91cGRhdGVfaGFuZGxlcnMiLCJjaGFuZ2VkX2F0Iiwic2V0X2NoYW5nZWRfYXQiLCJjdXRvZmYiLCJzZXRfY3V0b2ZmIiwia2luZCIsInNldF9raW5kIiwidmFsdWVfb3B0Iiwic2V0X3ZhbHVlX29wdCIsInJlY29tcHV0ZWRfYXQiLCJzZXRfcmVjb21wdXRlZF9hdCIsImlkIiwibXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luJDAiLCJteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW4kMCIsIm9ic2VydmVycyQwIiwib2xkX3ZhbHVlX29wdCQwIiwibmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwJDAiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCQwIiwibmV4dF9pbl9yZWNvbXB1dGVfaGVhcCQwIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcCQwIiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwJDAiLCJoZWlnaHQkMCIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlJDAiLCJjcmVhdGVkX2luJDAiLCJwYXJlbnQwJDAiLCJwYXJlbnQxX2FuZF9iZXlvbmQkMCIsIm51bV9wYXJlbnRzJDAiLCJudW1fb25fdXBkYXRlX2hhbmRsZXJzJDAiLCJjaGFuZ2VkX2F0JDAiLCJjdXRvZmYkMCIsImtpbmQkMCIsInZhbHVlX29wdCQwIiwicmVjb21wdXRlZF9hdCQwIiwiaWQkMCIsInN0YXRlXzAwNSIsImlkXzAwMyIsInJlY29tcHV0ZWRfYXRfMDA3IiwidmFsdWVfb3B0XzAwOSIsImtpbmRfMDExIiwiY3V0b2ZmXzAxMyIsImNoYW5nZWRfYXRfMDE1IiwibnVtX29uX3VwZGF0ZV9oYW5kbGVyc18wMTciLCJudW1fcGFyZW50c18wMTkiLCJwYXJlbnQxX2FuZF9iZXlvbmRfMDIxIiwicGFyZW50MF8wMjMiLCJjcmVhdGVkX2luXzAyNSIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXzAyNyIsImhlaWdodF8wMjkiLCJoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBfMDMxIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcF8wMzMiLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwXzAzNSIsImhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXyIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF8wMyIsIm9sZF92YWx1ZV9vcHRfMDQxIiwib2JzZXJ2ZXJzXzA0MyIsImlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aSIsIm9uX3VwZGF0ZV9oYW5kbGVyc18wNDciLCJmb3JjZV9uZWNlc3NhcnlfMDUzIiwidXNlcl9pbmZvXzA1NSIsImNyZWF0aW9uX2JhY2t0cmFjZV8wNTciLCJhcmdfMDU4IiwiYXJnXzA1NiIsImFyZ18wNTQiLCJhcmdfMDUyIiwiYXJnXzA1MCIsImFyZ18wNDgiLCJhcmdfMDQ2IiwiYXJnXzA0NCIsImFyZ18wNDIiLCJibmRzXzAwMiQ3IiwiYXJnXzA0MCIsImJuZHNfMDAyJDgiLCJhcmdfMDM4IiwiYm5kc18wMDIkOSIsImFyZ18wMzYiLCJibmRzXzAwMiQxMCIsImFyZ18wMzQiLCJibmRzXzAwMiQxMSIsImFyZ18wMzIiLCJibmRzXzAwMiQxMiIsImFyZ18wMzAiLCJibmRzXzAwMiQxMyIsImFyZ18wMjgiLCJibmRzXzAwMiQxNCIsImJuZHNfMDAyJDE1IiwiYm5kc18wMDIkMTYiLCJibmRzXzAwMiQxNyIsImJuZHNfMDAyJDE4IiwiYm5kc18wMDIkMTkiLCJibmRzXzAwMiQyMCIsImJuZHNfMDAyJDIxIiwiYm5kc18wMDIkMjIiLCJibmRzXzAwMiQyMyIsImJuZHNfMDAyJDI0IiwiYm5kc18wMDIkMjUiLCJibmRzXzAwMiQyNiIsInNhbWUiLCJ1c2VyX2luZm8iLCJvdGhlciIsInNldF91c2VyX2luZm8iLCJhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IiwiYXR0cnMiLCJlZGdlX2lzX3N0YWxlIiwicGFyZW50IiwiaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpIiwiaXNfc3RhbGUiLCJmb3JjZV9zdGFsZSIsImZvcmNlX3N0YWxlJDAiLCJuZWVkc190b19iZV9jb21wdXRlZCIsImlzX2luX3JlY29tcHV0ZV9oZWFwIiwiaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCIsImdldF9wYXJlbnQiLCJpdGVyaV9wYXJlbnRzIiwiaGFzX2NoaWxkIiwiaGFzIiwiaGFzX3BhcmVudCIsInBhcmVudCQwIiwic2hvdWxkX2JlX2ludmFsaWRhdGVkIiwibGhzJDAiLCJmb2xkX29ic2VydmVycyIsImFjIiwib2JzZXJ2ZXIiLCJ4XzA1OSIsInQxJDAiLCJhXzA2MCIsImJfMDYxIiwiYV8wNzAiLCJiXzA3MSIsInBhcmVudF9pbmRleCIsIngiLCJhXzA2OCIsImJfMDY5Iiwib2JzZXJ2ZXJzX2Z1biIsInN0YXRlIiwib2JzZXJ2aW5nIiwib2xkX3ZhbHVlX29wdF9mdW4iLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBfZnUiLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwX2Z1biIsInByZXZfaW5fcmVjb21wdXRlX2hlYXBfZnVuIiwicHJldiIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF9mdW4iLCJoZWlnaHRfZnVuIiwibmV4dF9ub2RlX2luX3NhbWVfc2NvcGVfZnVuIiwiY3JlYXRlZF9pbl9mdW4iLCJwYXJlbnQwX2Z1biIsImFfMDY2IiwiYl8wNjciLCJwYXJlbnQxX2FuZF9iZXlvbmRfZnVuIiwiYV8wNjQiLCJiXzA2NSIsIm51bV9wYXJlbnRzX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVycyIsIm51bV9vbl91cGRhdGVfaGFuZGxlcnNfZnVuIiwiZXRhIiwiYV8wNjIiLCJiXzA2MyIsImNoYW5nZWRfYXRfZnVuIiwiY3V0b2ZmX2Z1biIsImtpbmRfZnVuIiwidmFsdWVfb3B0X2Z1biIsInJlY29tcHV0ZWRfYXRfZnVuIiwiaWRfZnVuIiwidW5zYWZlX3ZhbHVlIiwidmFsdWVfZXhuIiwieF8wNzIiLCJnZXRfY3V0b2ZmIiwic2V0X2N1dG9mZiQwIiwiaXNfY29uc3QiLCJvbl91cGRhdGUiLCJvbl91cGRhdGVfaGFuZGxlciIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnMiLCJyZXN0JDAiLCJvbl91cGRhdGVfaGFuZGxlciQwIiwiciQwIiwiciQxIiwicmVzdCIsInNldF9raW5kJDAiLCJtYXhfbnVtX3BhcmVudHMiLCJzZXRfcGFyZW50IiwibGluayIsImFkZF9wYXJlbnQiLCJuZXdfbWF4X251bV9wYXJlbnRzIiwibWF4X251bV9jaGlsZHJlbiIsIm5ld19tYXhfbnVtX2NoaWxkcmVuIiwicmVtb3ZlX3BhcmVudCIsImxhc3RfcGFyZW50X2luZGV4Iiwic3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZCIsImNoaWxkMSIsImNoaWxkMiIsInQyJDAiLCJpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxIiwiaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMiIsInhfMDczIiwiaW52YXJpYW50JDAiLCJpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIiwidHMiLCJzZWVuIiwiaXRlcl9kZXNjZW5kYW50cyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXokMCIsInNhdmVfZG90Iiwib3V0Iiwibm9kZV9uYW1lIiwiYmluZF9lZGdlcyIsImRlZmF1bHQkMCIsImZyb20iLCJzYXZlX2RvdF90b19maWxlIiwiZmlsZSIsImZvbGQiLCJwYWNrZWRfbm9kZSIsIml0ZXIiLCJsZW5ndGgiLCJ4XzA3NCIsIm5vZGVzX2J5X2hlaWdodCIsInNldF9ub2Rlc19ieV9oZWlnaHQiLCJoZWlnaHRfbG93ZXJfYm91bmQiLCJzZXRfaGVpZ2h0X2xvd2VyX2JvdW5kIiwic2V0X2xlbmd0aCIsIm5vZGVzX2J5X2hlaWdodCQwIiwiaGVpZ2h0X2xvd2VyX2JvdW5kJDAiLCJsZW5ndGgkMCIsImxlbmd0aF8wMDMiLCJoZWlnaHRfbG93ZXJfYm91bmRfMDA1Iiwibm9kZXNfYnlfaGVpZ2h0XzAwNyIsIm1heF9ub25lbXB0eV9pbmRleCIsImwiLCJtYXhfaGVpZ2h0X2FsbG93ZWQiLCJub2Rlc19ieV9oZWlnaHRfZnVuIiwiaGVpZ2h0X2xvd2VyX2JvdW5kX2Z1biIsImxlbmd0aF9mdW4iLCJhY3R1YWxfbGVuZ3RoIiwiYV8wMDkiLCJiXzAxMCIsImNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQiLCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkIiwic3JjIiwiZHN0Iiwic2V0X3ByZXYiLCJ1bmxpbmsiLCJhZGQiLCJyZW1vdmUiLCJ4XzAxMiIsImluY3JlYXNlX2hlaWdodCIsIm1pbl9oZWlnaHQiLCJyZW1vdmVfbWluIiwibm9kZSQwIiwibm9kZXMiLCJtYXhfaGVpZ2h0X3NlZW4iLCJzZXRfbWF4X2hlaWdodF9zZWVuIiwibWF4X2hlaWdodF9zZWVuJDAiLCJtYXhfaGVpZ2h0X3NlZW5fMDA3Iiwibm9kZXNfYnlfaGVpZ2h0XzAwOSIsImlzX2VtcHR5IiwibWF4X2hlaWdodF9zZWVuX2Z1biIsImNyZWF0ZSQwIiwidl8wMTEiLCJhcmcxXzAxOSIsInZfMDE2IiwicmVzMF8wMjAiLCJ2XzAxNyIsInJlczFfMDIxIiwiZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCIsIm9yaWdpbmFsX2NoaWxkIiwib3JpZ2luYWxfcGFyZW50IiwiYXJnMV8wMjUiLCJ2XzAyMiIsInJlczBfMDI2Iiwidl8wMjMiLCJyZXMxXzAyNyIsImFkanVzdF9oZWlnaHRzIiwicmVjb21wdXRlX2hlYXAiLCJub2RlX29uX3JocyIsImFjdGlvbiIsImFjdGlvbiQwIiwiYWN0aW9uXzAxMCIsIm5leHRfZmlyZWRfMDEyIiwiYm5kc18wMDkiLCJyZXMwXzAwMiIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYm5kc18wMDkkMCIsImFjdGlvbl9mdW4iLCJuZXh0X2luX2FsbCIsInNldF9wcmV2X2luX2FsbCIsIm5leHRfaW5fb2JzZXJ2aW5nIiwic2V0X25leHRfaW5fb2JzZXJ2aW5nIiwicHJldl9pbl9vYnNlcnZpbmciLCJzZXRfcHJldl9pbl9vYnNlcnZpbmciLCJuZXh0X2luX2FsbCQwIiwic2V0X25leHRfaW5fYWxsIiwicHJldl9pbl9hbGwiLCJzZXRfcHJldl9pbl9hbGwkMCIsInNldF9vbl91cGRhdGVfaGFuZGxlcnMiLCJuZXh0X2luX29ic2VydmluZyQwIiwicHJldl9pbl9vYnNlcnZpbmckMCIsIm5leHRfaW5fYWxsJDEiLCJwcmV2X2luX2FsbCQwIiwib25fdXBkYXRlX2hhbmRsZXJzJDAiLCJvYnNlcnZpbmckMCIsInNleHBfb2ZfaW50ZXJuYWxfb2JzZXJ2ZXIiLCJvZl9hXzAwMiIsInN0YXRlXzAwNCIsIm9ic2VydmluZ18wMDYiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDA4IiwicHJldl9pbl9hbGxfMDEwIiwibmV4dF9pbl9hbGxfMDEyIiwicHJldl9pbl9vYnNlcnZpbmdfMDE0IiwibmV4dF9pbl9vYnNlcnZpbmdfMDE2IiwidXNlX2lzX2FsbG93ZWQiLCJ4XzAyMCIsIm5leHRfaW5fb2JzZXJ2aW5nX2Z1biIsInByZXZfaW5fb2JzZXJ2aW5nX2Z1biIsIm5leHRfaW5fYWxsX2Z1biIsInByZXZfaW5fYWxsX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvYnNlcnZpbmdfZnVuIiwieF8wMjIiLCJ4XzAyMSIsIm9uX3VwZGF0ZV9leG4iLCJ4XzAyNCIsInByZXYkMCIsIm5leHQkMCIsInhfMDI1IiwieF8wMDIiLCJuYW1lcyIsIm5hbWVzJDAiLCJuYW1lcyQxIiwiZXJyb3Jfc291cmNlXzA3OSIsInNleHBfb2Zfc3RhdHVzIiwiYXJnMV8wMDQiLCJyZXMxXzAwNiIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiIsInNldF9leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdSIsImN1cnJlbnRseV9ydW5uaW5nX25vZGUiLCJzZXRfY3VycmVudGx5X3J1bm5pbmdfbm9kZSIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiQwIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZSQwIiwibWFrZV9jcmVhdG9yIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW4kMSIsImFjYyIsIm1hcCIsIm1hcF9wb2x5IiwicmVjb3JkIiwiZm9yX2FsbCIsImV4aXN0cyIsInRvX2xpc3QiLCJpdGVyJDAiLCJmb2xkJDAiLCJmb3JfYWxsJDAiLCJleGlzdHMkMCIsInRvX2xpc3QkMCIsIm1hcCQwIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyIsInJlY29yZCQwIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZV8wMDgiLCJibmRzXzAwNyIsImJuZHNfMDA3JDAiLCJzZXhwX29mX3QkMSIsIm51bV92YXJfc2V0cyIsInNldF9udW1fdmFyX3NldHMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8iLCJzZXRfbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMCIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlYyQwIiwibnVtX25vZGVzX3JlY29tcHV0ZWQiLCJzZXRfbnVtX25vZGVzX3JlY29tcHV0ZWQiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWQiLCJzZXRfbnVtX25vZGVzX2ludmFsaWRhdGVkIiwibnVtX25vZGVzX2NyZWF0ZWQiLCJzZXRfbnVtX25vZGVzX2NyZWF0ZWQiLCJudW1fbm9kZXNfY2hhbmdlZCIsInNldF9udW1fbm9kZXNfY2hhbmdlZCIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkiLCJzZXRfbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2EiLCJudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSIsInNldF9udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UiLCJzZXRfa2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmEiLCJ3ZWFrX2hhc2h0YmxzIiwib25seV9pbl9kZWJ1ZyIsInNldF9vbmx5X2luX2RlYnVnIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24iLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24iLCJkaXNhbGxvd2VkX29ic2VydmVycyIsIm5ld19vYnNlcnZlcnMiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzIiwiYWxsX29ic2VydmVycyIsInNldF9hbGxfb2JzZXJ2ZXJzIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnMiLCJzZXRfbnVtX2FjdGl2ZV9vYnNlcnZlcnMiLCJwcm9wYWdhdGVfaW52YWxpZGl0eSIsImFkanVzdF9oZWlnaHRzX2hlYXAiLCJjdXJyZW50X3Njb3BlIiwic2V0X2N1cnJlbnRfc2NvcGUiLCJzdGFiaWxpemF0aW9uX251bSIsInNldF9zdGFiaWxpemF0aW9uX251bSIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCIsInN0YXR1cyIsInNldF9zdGF0dXMiLCJudW1fdmFyX3NldHMkMCIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQxIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDIiLCJudW1fbm9kZXNfcmVjb21wdXRlZCQwIiwibnVtX25vZGVzX2ludmFsaWRhdGVkJDAiLCJudW1fbm9kZXNfY3JlYXRlZCQwIiwibnVtX25vZGVzX2NoYW5nZWQkMCIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkkMCIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5JDAiLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlJDAiLCJ3ZWFrX2hhc2h0YmxzJDAiLCJvbmx5X2luX2RlYnVnJDAiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzJDAiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiQwIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uJDAiLCJkaXNhbGxvd2VkX29ic2VydmVycyQwIiwibmV3X29ic2VydmVycyQwIiwiZmluYWxpemVkX29ic2VydmVycyQwIiwiYWxsX29ic2VydmVycyQwIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnMkMCIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5JDAiLCJhZGp1c3RfaGVpZ2h0c19oZWFwJDAiLCJyZWNvbXB1dGVfaGVhcCQwIiwiY3VycmVudF9zY29wZSQwIiwic3RhYmlsaXphdGlvbl9udW0kMCIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCQwIiwic3RhdHVzJDAiLCJtYWtlX2NyZWF0b3IkMCIsInN0YXR1c19mdW4iLCJzdGFiaWxpemF0aW9uX251bV9mdW4iLCJjdXJyZW50X3Njb3BlX2Z1biIsInJlY29tcHV0ZV9oZWFwX2Z1biIsImFkanVzdF9oZWlnaHRzX2hlYXBfZnVuIiwicHJvcGFnYXRlX2ludmFsaWRpdHlfZnVuIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnNfZnVuIiwiYWxsX29ic2VydmVyc19mdW4iLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzX2Z1biIsIm5ld19vYnNlcnZlcnNfZnVuIiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfZnVuIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uX2Z1biIsImhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uX2Z1biIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfZnVuIiwib25seV9pbl9kZWJ1Z19mdW4iLCJ3ZWFrX2hhc2h0YmxzX2Z1biIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2VfZiIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5X2Z1biIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnlfZiIsIm51bV9ub2Rlc19jaGFuZ2VkX2Z1biIsIm51bV9ub2Rlc19jcmVhdGVkX2Z1biIsIm51bV9ub2Rlc19pbnZhbGlkYXRlZF9mdW4iLCJudW1fbm9kZXNfcmVjb21wdXRlZF9mdW4iLCJudW1fdmFyX3NldHNfZnVuIiwic3RhdHVzX2dlbiIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCQxIiwiY29tcGlsZV9hY2MkMiIsInN0YWJpbGl6YXRpb25fbnVtX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJjdXJyZW50X3Njb3BlX2dlbiIsImNvbXBpbGVfYWNjJDQiLCJyZWNvbXB1dGVfaGVhcF9nZW4iLCJjb21waWxlX2FjYyQ1IiwiYWRqdXN0X2hlaWdodHNfaGVhcF9nZW4iLCJjb21waWxlX2FjYyQ2IiwicHJvcGFnYXRlX2ludmFsaWRpdHlfZ2VuIiwiY29tcGlsZV9hY2MkNyIsIm51bV9hY3RpdmVfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJhbGxfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDkiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDEwIiwibmV3X29ic2VydmVyc19nZW4iLCJjb21waWxlX2FjYyQxMSIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDEyIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uX2dlbiIsImNvbXBpbGVfYWNjJDEzIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzX2dlbiIsImNvbXBpbGVfYWNjJDE1Iiwib25seV9pbl9kZWJ1Z19nZW4iLCJjb21waWxlX2FjYyQxNiIsIndlYWtfaGFzaHRibHNfZ2VuIiwiY29tcGlsZV9hY2MkMTciLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlX2ciLCJjb21waWxlX2FjYyQxOCIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5X2dlbiIsImNvbXBpbGVfYWNjJDE5IiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV9nIiwiY29tcGlsZV9hY2MkMjAiLCJudW1fbm9kZXNfY2hhbmdlZF9nZW4iLCJjb21waWxlX2FjYyQyMSIsIm51bV9ub2Rlc19jcmVhdGVkX2dlbiIsImNvbXBpbGVfYWNjJDIyIiwibnVtX25vZGVzX2ludmFsaWRhdGVkX2dlbiIsImNvbXBpbGVfYWNjJDIzIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjQiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMyIsImNvbXBpbGVfYWNjJDI1IiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDQiLCJjb21waWxlX2FjYyQyNiIsIm51bV92YXJfc2V0c19nZW4iLCJjcmVhdGUkMSIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQyIiwic3RhdHVzXzAxNSIsInN0YWJpbGl6YXRpb25fbnVtXzAxOSIsImN1cnJlbnRfc2NvcGVfMDIxIiwicHJvcGFnYXRlX2ludmFsaWRpdHlfMDI3IiwiYWRqdXN0X2hlaWdodHNfaGVhcF8wMjUiLCJyZWNvbXB1dGVfaGVhcF8wMjMiLCJudW1fYWN0aXZlX29ic2VydmVyc18wMjkiLCJhbGxfb2JzZXJ2ZXJzXzAzMSIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfMDQzIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fMDQxIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXzAzOSIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzXzAzNyIsIm5ld19vYnNlcnZlcnNfMDM1IiwiZmluYWxpemVkX29ic2VydmVyc18wMzMiLCJvbmx5X2luX2RlYnVnXzA0NSIsIndlYWtfaGFzaHRibHNfMDQ3Iiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZV8wIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfMDUxIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV8wIiwibnVtX25vZGVzX2NoYW5nZWRfMDU1IiwibnVtX25vZGVzX2NyZWF0ZWRfMDU3IiwibnVtX25vZGVzX2ludmFsaWRhdGVkXzA1OSIsIm51bV9ub2Rlc19yZWNvbXB1dGVkXzA2MSIsIm51bV92YXJfc2V0c18wNjciLCJhcmdfMDY4IiwiYm5kc18wMTQiLCJhcmdfMDY2IiwiYm5kc18wMTQkMCIsImFyZ18wNjQiLCJibmRzXzAxNCQxIiwiYXJnXzA2MiIsImJuZHNfMDE0JDIiLCJhcmdfMDYwIiwiYm5kc18wMTQkMyIsImJuZHNfMDE0JDQiLCJibmRzXzAxNCQ1IiwiYm5kc18wMTQkNiIsImJuZHNfMDE0JDciLCJibmRzXzAxNCQ4IiwiYm5kc18wMTQkOSIsImJuZHNfMDE0JDEwIiwiYm5kc18wMTQkMTEiLCJibmRzXzAxNCQxMiIsImJuZHNfMDE0JDEzIiwiYm5kc18wMTQkMTQiLCJibmRzXzAxNCQxNSIsImJuZHNfMDE0JDE2IiwiYm5kc18wMTQkMTciLCJibmRzXzAxNCQxOCIsImJuZHNfMDE0JDE5IiwiYm5kc18wMTQkMjAiLCJibmRzXzAxNCQyMSIsImJuZHNfMDE0JDIyIiwiYm5kc18wMTQkMjMiLCJibmRzXzAxNCQyNCIsImJuZHNfMDE0JDI1IiwiZmlyZWRfYWxhcm1fdmFsdWVzIiwic2V0X2ZpcmVkX2FsYXJtX3ZhbHVlcyIsImhhbmRsZV9maXJlZCIsInRpbWluZ193aGVlbCIsImZpcmVkX2FsYXJtX3ZhbHVlcyQwIiwiaGFuZGxlX2ZpcmVkJDAiLCJub3ckMCIsInRpbWluZ193aGVlbCQwIiwibWFrZV9jcmVhdG9yJDEiLCJ0aW1pbmdfd2hlZWxfZnVuIiwibm93X2Z1biIsImhhbmRsZV9maXJlZF9mdW4iLCJmaXJlZF9hbGFybV92YWx1ZXNfZnVuIiwidGltaW5nX3doZWVsX2dlbiIsIm5vd19nZW4iLCJoYW5kbGVfZmlyZWRfZ2VuIiwiZmlyZWRfYWxhcm1fdmFsdWVzX2dlbiIsImNyZWF0ZSQyIiwibWFwJDMiLCJpdGVyJDMiLCJmb2xkJDMiLCJtYXBfcG9seSQxIiwiZm9yX2FsbCQzIiwiZXhpc3RzJDMiLCJ0b19saXN0JDMiLCJpdGVyJDQiLCJmb2xkJDQiLCJmb3JfYWxsJDQiLCJleGlzdHMkNCIsInRvX2xpc3QkNCIsIm1hcCQ0Iiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyQxIiwic2V4cF9vZl90JDMiLCJub3dfMDcyIiwidGltaW5nX3doZWVsXzA3MCIsImZpcmVkX2FsYXJtX3ZhbHVlc18wNzYiLCJhcmdfMDc3IiwiYm5kc18wNjkiLCJhcmdfMDc1IiwiYm5kc18wNjkkMCIsImFyZ18wNzMiLCJibmRzXzA2OSQxIiwiYXJnXzA3MSIsImJuZHNfMDY5JDIiLCJpbnZhcmlhbnQkMSIsIm5vdyQxIiwiY2xvY2siLCJ0aW1pbmdfd2hlZWxfbGVuZ3RoIiwibnVtX3N0YWJpbGl6ZXMiLCJpdGVyX29ic2VydmVycyIsImRpcmVjdGx5X29ic2VydmVkIiwiaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyIsInRfb2Zfc2V4cCIsInhfMDg1Iiwic2V4cF8wODQiLCJhcmcxXzA4MSIsImFyZzBfMDgwIiwicmVzMF8wODIiLCJyZXMxXzA4MyIsInBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhciIsInNleHBfb2ZfdCQ0IiwibWF4X251bV9wYXJlbnRzXzA4NyIsImFyZ18wOTAiLCJhcmcxXzA5MiIsImFyZzBfMDkxIiwicmVzMF8wOTMiLCJyZXMxXzA5NCIsImJuZHNfMDg2IiwiYXJnXzA4OCIsImJuZHNfMDg2JDAiLCJzdGF0cyIsIm51bV9uZWNlc3Nhcnlfbm9kZXMiLCJtYXhfbnVtX3BhcmVudHMkMCIsIm51bV9ub2Rlc19ieV9udW1fcGFyZW50cyIsIm51bV9ub2RlcyIsImFtX3N0YWJpbGl6aW5nIiwicmFpc2VkX2V4biIsImludmFyaWFudCQyIiwiaW50ZXJuYWxfb2JzZXJ2ZXIiLCJ4XzA5NSIsInBhY2tlZCIsImVuc3VyZV9ub3Rfc3RhYmlsaXppbmciLCJhbGxvd19pbl91cGRhdGVfaGFuZGxlciIsImJhY2t0cmFjZSQwIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24kMSIsInJlbW92ZV9jaGlsZHJlbiIsInJlbW92ZV9jaGlsZCIsImNoZWNrX2lmX3VubmVjZXNzYXJ5IiwiYmVjYW1lX3VubmVjZXNzYXJ5IiwicCIsInUiLCJyZW1vdmVfYWxhcm0iLCJpbnZhbGlkYXRlX25vZGUiLCJpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmgiLCJyZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwiZmlyc3Rfbm9kZV9vbl9yaHMiLCJuZXdfc2NvcGUiLCJwcm9wYWdhdGVfaW52YWxpZGl0eSQxIiwiZXhwZXJ0IiwiYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oIiwid2FzX25lY2Vzc2FyeSIsInhfMDk2IiwiYmVjYW1lX25lY2Vzc2FyeSIsInJ1bl93aXRoX3Njb3BlIiwic2NvcGUiLCJzYXZlZCIsImV4biQwIiwid2l0aGluX3Njb3BlIiwiY2hhbmdlX2NoaWxkIiwib2xkX2NoaWxkIiwibmV3X2NoaWxkIiwib2xkX2NoaWxkJDAiLCJhZGRfYWxhcm0iLCJyZWNvbXB1dGUiLCJtYXliZV9jaGFuZ2VfdmFsdWUiLCJvbGRfcmhzIiwib2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3JocyIsImNvcHlfY2hpbGQiLCJvbmx5X2ZyZWV6ZV93aGVuIiwiZWxzZSQwIiwidGhlbiIsImRlc2lyZWRfYnJhbmNoIiwibWFpbiQxIiwib2xkX3JocyQwIiwicmhzJDEiLCJyaHMkMiIsIm4xIiwiY2xvY2skMCIsImF0JDAiLCJjbG9jayQxIiwiY2hpbGQkMSIsInN0ZXBfZnVuY3Rpb24iLCJzdGVwX2Z1bmN0aW9uX3ZhbHVlIiwiYXQkMSIsIm4yIiwibjEkMCIsIm4zIiwibjIkMCIsIm4xJDEiLCJmJDIiLCJuNCIsIm4zJDAiLCJuMiQxIiwibjEkMiIsImYkMyIsIm41IiwibjQkMCIsIm4zJDEiLCJuMiQyIiwibjEkMyIsImYkNCIsIm42IiwibjUkMCIsIm40JDEiLCJuMyQyIiwibjIkMyIsIm4xJDQiLCJmJDUiLCJuNyIsIm42JDAiLCJuNSQxIiwibjQkMiIsIm4zJDMiLCJuMiQ0IiwibjEkNSIsImYkNiIsIm44IiwibjckMCIsIm42JDEiLCJuNSQyIiwibjQkMyIsIm4zJDQiLCJuMiQ1IiwibjEkNiIsImYkNyIsIm45IiwibjgkMCIsIm43JDEiLCJuNiQyIiwibjUkMyIsIm40JDQiLCJuMyQ1IiwibjIkNiIsIm4xJDciLCJmJDgiLCJuMTAiLCJuOSQwIiwibjgkMSIsIm43JDIiLCJuNiQzIiwibjUkNCIsIm40JDUiLCJuMyQ2IiwibjIkNyIsIm4xJDgiLCJmJDkiLCJuMTEiLCJuMTAkMCIsIm45JDEiLCJuOCQyIiwibjckMyIsIm42JDQiLCJuNSQ1IiwibjQkNiIsIm4zJDciLCJuMiQ4IiwibjEkOSIsImYkMTAiLCJuMTIiLCJuMTEkMCIsIm4xMCQxIiwibjkkMiIsIm44JDMiLCJuNyQ0IiwibjYkNSIsIm41JDYiLCJuNCQ3IiwibjMkOCIsIm4yJDkiLCJuMSQxMCIsImYkMTEiLCJuMTMiLCJuMTIkMCIsIm4xMSQxIiwibjEwJDIiLCJuOSQzIiwibjgkNCIsIm43JDUiLCJuNiQ2IiwibjUkNyIsIm40JDgiLCJuMyQ5IiwibjIkMTAiLCJuMSQxMSIsImYkMTIiLCJuMTQiLCJuMTMkMCIsIm4xMiQxIiwibjExJDIiLCJuMTAkMyIsIm45JDQiLCJuOCQ1IiwibjckNiIsIm42JDciLCJuNSQ4IiwibjQkOSIsIm4zJDEwIiwibjIkMTEiLCJuMSQxMiIsImYkMTMiLCJuMTUiLCJuMTQkMCIsIm4xMyQxIiwibjEyJDIiLCJuMTEkMyIsIm4xMCQ0IiwibjkkNSIsIm44JDYiLCJuNyQ3IiwibjYkOCIsIm41JDkiLCJuNCQxMCIsIm4zJDExIiwibjIkMTIiLCJuMSQxMyIsImYkMTQiLCJjaGlsZF9pbmRleCQwIiwidSQwIiwiY2FuX3JlY29tcHV0ZV9ub3ciLCJiIiwiaiIsInJlY29tcHV0ZV9maXJzdF9ub2RlX3RoYXRfaXNfbiIsInhfMDk3IiwidW5saW5rX2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSIsImRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMiLCJvYnNlcnZlcl9maW5hbGl6ZXIiLCJjcmVhdGVfb2JzZXJ2ZXIiLCJzaG91bGRfZmluYWxpemUiLCJhZGRfbmV3X29ic2VydmVycyIsIm9sZF9hbGxfb2JzZXJ2ZXJzIiwib2xkX29ic2VydmVycyIsIm9ic2VydmVyX3ZhbHVlX2V4biIsInhfMDk4Iiwib2JzZXJ2ZXJfdmFsdWUiLCJub2RlX29uX3VwZGF0ZSIsIm9ic2VydmVyX29uX3VwZGF0ZV9leG4iLCJzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyIsInNldF92YXIiLCJyZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMiLCJ3ZWFrX2hhc2h0YmwiLCJzdGFiaWxpemVfc3RhcnQiLCJzdGFiaWxpemVfZW5kIiwibWF0Y2gkMCIsIm5vZGVfdXBkYXRlJDAiLCJyYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiIsInJhaXNlZCIsInN0YWJpbGl6ZSIsInNleHBfb2ZfdCQ1IiwiZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIiwiY3JlYXRlX25vZGVfaW4iLCJjcmVhdGVfbm9kZSIsImNyZWF0ZV9ub2RlX3RvcCIsImNyZWF0ZV92YXIiLCJ1c2VfY3VycmVudF9zY29wZSIsImNvbnN0JDAiLCJtYXAkNSIsIm1hcDIiLCJib3RoIiwibWFwMyIsIm1hcDQiLCJtYXA1IiwibWFwNiIsIm1hcDciLCJtYXA4IiwibWFwOSIsIm1hcDEwIiwibWFwMTEiLCJtYXAxMiIsIm1hcDEzIiwibWFwMTQiLCJtYXAxNSIsInByZXNlcnZlX2N1dG9mZiIsImlucHV0Iiwib3V0cHV0IiwiZGVwZW5kX29uIiwibmVjZXNzYXJ5X2lmX2FsaXZlIiwiYmluZDIiLCJ2MSIsInYyIiwiYmluZDMiLCJ2MyIsImJpbmQ0IiwidjQiLCJpZiQwIiwibGF6eV9mcm9tX2Z1biIsImRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpeiIsIm1lbW9pemVfZnVuX2J5X2tleSIsImhhc2hhYmxlIiwicHJvamVjdF9rZXkiLCJpbml0aWFsX3NpemUiLCJ0YWJsZSIsImtleSIsImIkMCIsImFsbCIsIm9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCIsIm51bV9pbnZhbGlkIiwiYWNjdW0iLCJ4JDAiLCJmX2ludmVyc2UkMCIsImF0X2xlYXN0X2tfb2YiLCJib29sX3RvX2ludCIsIm51bV90cnVlIiwiZXhpc3RzJDUiLCJmb3JfYWxsJDUiLCJzdW0iLCJ6ZXJvIiwic3ViIiwib3B0X3N1bSIsInN1bV9pbnQiLCJzdW1fZmxvYXQiLCJzZXRfZnJlZXplIiwidGltZSIsImFmdGVyIiwic3BhbiIsIm5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IiwiYmFzZSIsInZhbHVlX2F0IiwiaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiIsImFkdmFuY2VfY2xvY2siLCJtYWluJDIiLCJjcmVhdGVfY2xvY2siLCJ0aW1pbmdfd2hlZWxfY29uZmlnIiwic3RhcnQiLCJjcmVhdGUkMyIsIkNvbmZpZyIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5IiwiZXhwZXJ0X2tpbmRfb2Zfbm9kZSIsInhfMDk5IiwiY3JlYXRlJDQiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biIsImN1cnJlbnQiLCJhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV8iLCJ4XzEwMSIsInhfMTAwIiwiYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfJDAiLCJ4XzEwMyIsInhfMTAyIiwibWFrZV9zdGFsZSQwIiwiZV9vcHQiLCJpbnZhbGlkYXRlIiwiYWRkX2RlcGVuZGVuY3kiLCJkZXAiLCJyZW1vdmVfZGVwZW5kZW5jeSIsImVkZ2UiLCJlZGdlX2luZGV4IiwibGFzdF9lZGdlIiwibGFzdF9lZGdlX2luZGV4Iiwib25fY2hhbmdlIiwicmVkdWNlIiwicmVkdWNlciIsImxldmVsX2JpdHMiLCJjcmVhdGVfaW50ZXJuYWwiLCJkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCIsInNleHBfb2Zfc3RhdGVfd2l0bmVzcyIsIndpdGhpbiIsInBhY2siLCJyZXR1cm4kMCIsIm1hcDIkMCIsIm1hcDMkMCIsIm1hcDQkMCIsIm1hcDUkMCIsIm1hcDYkMCIsIm1hcDckMCIsIm1hcDgkMCIsIm1hcDkkMCIsIm1hcDEwJDAiLCJtYXAxMSQwIiwibWFwMTIkMCIsIm1hcDEzJDAiLCJtYXAxNCQwIiwibWFwMTUkMCIsImJpbmQyJDAiLCJiaW5kMyQwIiwiYmluZDQkMCIsInN5bWJvbF9tYXAiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDAiLCJsYXp5X2Zyb21fZnVuJDAiLCJtZW1vaXplX2Z1biIsImFycmF5X2ZvbGQkMCIsInJlZHVjZV9iYWxhbmNlZCIsInJlcGxhY2UiLCJ4XzAxNyIsImRpc2FsbG93X2Z1dHVyZV91c2UkMCIsImluY3Jfc3RhdGUkMSIsImFsYXJtX3ByZWNpc2lvbiIsImRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyIsInN0YXJ0JDAiLCJhbGFybV9wcmVjaXNpb24kMCIsIndhdGNoX25vdyIsImFkdmFuY2VfY2xvY2tfYnkiLCJmcmVlemUkMCIsIndoZW4iLCJkZXBlbmRfb24kMCIsInN0YWJpbGl6ZSQwIiwiYW1fc3RhYmlsaXppbmckMCIsIm9mX2FfMDE4IiwiYXJnMF8wMTkiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwibm9kZV92YWx1ZSIsInNleHBfb2ZfdCQ2IiwiYm90aCQwIiwieDEiLCJ4MiIsIm1hcDIkMSIsIm1hcDMkMSIsIm1hcDQkMSIsIm1hcDUkMSIsIm1hcDYkMSIsIm1hcDckMSIsIm1hcDgkMSIsIm1hcDkkMSIsIm1hcDEwJDEiLCJtYXAxMSQxIiwibWFwMTIkMSIsIm1hcDEzJDEiLCJtYXAxNCQxIiwibWFwMTUkMSIsImJpbmQyJDEiLCJiaW5kMyQxIiwiYmluZDQkMSIsIndlYWtfbWVtb2l6ZV9mdW4iLCJkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUkMCIsImNvbnN0JDEiLCJyZXR1cm4kMSIsImFsbCQwIiwibWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJtZW1vaXplX2Z1biQwIiwicmVkdWNlX2JhbGFuY2VkJDAiLCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCQwIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkJDAiLCJzdW0kMCIsIm9wdF9zdW0kMCIsInN1bV9pbnQkMCIsInN1bV9mbG9hdCQwIiwic2F2ZV9kb3QkMCIsInNhdmVfZG90X3RvX2ZpbGUkMCIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJ3ZWFrX21lbW9pemVfZnVuJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQ1Iiwic2V4cF9vZl90JDkiLCJpbnZhcmlhbnQkNiIsInNleHBfb2ZfdCQxMSIsInNleHBfb2ZfdCQxMiIsImludmFyaWFudCQ3Iiwib25fdXBkYXRlX2V4biQwIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQxIiwidmFsdWUkMSIsInNleHBfb2ZfdCQxMyIsImludmFyaWFudCQ4Iiwic2V4cF9vZl90JDE0Iiwic2V4cF9vZl90JDE1IiwiZGVidWciLCJub19pbnN0cnVtZW50YXRpb24iLCJmIiwid2l0aF9vbGQiLCJpbnN0cnVtZW50YXRpb24iLCJpIiwib2xkIiwiYSIsImIiLCJjdXRvZmYiLCJtYXAiLCJkYXRhX2VxdWFsIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiY3VyIiwib2xkJDAiLCJhY2MiLCJjaGFuZ2UiLCJrZXkiLCJuZXckMCIsInVub3JkZXJlZF9mb2xkIiwidXBkYXRlIiwic3BlY2lhbGl6ZWRfaW5pdGlhbCIsImluaXQiLCJhZGQiLCJyZW1vdmUiLCJmaW5hbGl6ZSIsInJldmVydF90b19pbml0X3doZW5fZW1wdHkiLCJkZWZhdWx0JDAiLCJvbGRfZGF0YSIsIm5ld19kYXRhIiwidXBkYXRlJDAiLCJuZXdfaW4iLCJvbGRfb3V0Iiwib2xkX2luIiwiaW5pdCQwIiwibmV3JDEiLCJpbml0aWFsIiwidW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHMiLCJpbmNyX21hcCIsInVwZGF0ZSQxIiwib3V0ZXJfa2V5IiwiaW5uZXJfa2V5Iiwib2xkX2lubmVyX21hcCIsIm5ld19pbm5lcl9tYXAiLCJkaWZmIiwiZGF0YV9yZW1vdmVkIiwiZGF0YV9hZGRlZCIsImlubmVyX21hcCIsImRhdGEiLCJ3aXRoX2NvbXBhcmF0b3IiLCJnZXRfY29tcGFyYXRvciIsIngiLCJ3aXRoX2NvbXBhcmF0b3IkMCIsIm9mX3NldCIsInNldCIsImNvbXBhcmF0b3IiLCJvbGRfaW5wdXQiLCJvbGRfb3V0cHV0IiwibmV3X2lucHV0IiwibmV3X291dHB1dCIsIm91dHB1dCIsImsiLCJrJDAiLCJnZW5lcmljX21hcGkiLCJ3aXRuZXNzIiwiaW5wdXQiLCJyZXMiLCJvdXRwdXRfZGF0YSIsIm1hcGkiLCJmaWx0ZXJfbWFwaSIsImZpbHRlcl9tYXAiLCJ3aXRoX29sZDIiLCJpMSIsImkyIiwiYTEiLCJhMiIsInVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmEiLCJleHRyYSIsImV4dHJhX2NoYW5nZWQiLCJleHRyYV9lcXVhbCIsIm5ld19leHRyYSIsIm9sZF9leHRyYSIsImFjYyQwIiwibWFwaV9jb3VudCIsIm5ld19rZXkiLCJuIiwicHJldl9rZXkiLCJtYXBfY291bnQiLCJtaW5faGVscGVyIiwibWluIiwibWF4X2hlbHBlciIsIm1heCIsImJvdW5kc19oZWxwZXIiLCJtYXBpX21pbiIsIm1hcGlfbWF4IiwibWFwaV9ib3VuZHMiLCJtYXBfbWluIiwibWFwX21heCIsIm1pbl92YWx1ZSIsIm1heF92YWx1ZSIsIm1hcF9ib3VuZHMiLCJ2YWx1ZV9ib3VuZHMiLCJtZXJnZV9zaGFyZWRfaW1wbCIsIm5ld19sZWZ0X21hcCIsIm5ld19yaWdodF9tYXAiLCJkYXRhX2VxdWFsX2xlZnQiLCJkYXRhX2VxdWFsX3JpZ2h0Iiwib2xkX3JpZ2h0X21hcCIsIm9sZF9sZWZ0X21hcCIsIm9sZF9sZWZ0X21hcCQwIiwibGVmdF9kaWZmIiwicmlnaHRfZGlmZiIsInJpZ2h0X2tleSIsImxlZnRfa2V5IiwiZGlmZl9lbGVtZW50Iiwia2V5JDAiLCJuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCIsIm1lcmdlIiwibGVmdF9tYXAiLCJyaWdodF9tYXAiLCJyaWdodF9kYXRhX29wdCQwIiwibGVmdF9kYXRhX29wdCIsInJpZ2h0X2RpZmYkMCIsImxlZnRfZGlmZiQwIiwicmlnaHRfZGF0YV9vcHQkMiIsImxlZnRfZGF0YV9vcHQkMCIsInkiLCJvdXRwdXRfZGF0YV9vcHQiLCJ5JDAiLCJtZXJnZV9ib3RoX3NvbWUiLCJvdXRfZXF1YWwiLCJlbXB0eSIsImxlZnRfYW5kX3JpZ2h0X2RhdGFfb3B0IiwibGVmdF9kYXRhIiwicmlnaHRfZGF0YSIsInByZXZfb3V0IiwicHJldl9vdXQkMCIsImdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3IiLCJsaHMiLCJpbmNyZW1lbnRhbF9zdGF0ZSIsImVtcHR5X21hcCIsInByZXZfbWFwIiwicHJldl9ub2RlcyIsInJlc3VsdCIsIm9uX2lubmVyX2NoYW5nZSIsIm9wdCIsImxoc19jaGFuZ2UiLCJuZXdfbm9kZXMiLCJub2RlcyIsImNoYW5nZWQiLCJkZXAiLCJub2RlIiwibm9kZXMkMCIsIm5vZGUkMCIsIm5vZGUkMSIsImMiLCJ1c2VyX2Z1bmN0aW9uX2RlcCIsImZpbHRlcl9tYXBpJDAiLCJtYXBpJDAiLCJtYXAkMCIsImZpbHRlcl9tYXAkMCIsIm1lcmdlJDAiLCJtYXAxIiwibWFwMiIsInVuemlwX21hcGkiLCJsZWZ0X3Jlc3VsdF9lcXVhbCIsInJpZ2h0X3Jlc3VsdF9lcXVhbCIsInBhaXIiLCJkYXRhX2VxdWFsJDAiLCJsZWZ0X3Jlc3VsdF9lcXVhbCQwIiwicmlnaHRfcmVzdWx0X2VxdWFsJDAiLCJsZWZ0X2FjYyIsImxlZnRfcmVzdWx0IiwicmlnaHRfYWNjIiwicmlnaHRfcmVzdWx0IiwiaW5wdXRfY2hhbmdlIiwibGVmdCQwIiwibCIsInJpZ2h0JDAiLCJyIiwicmlnaHQiLCJsZWZ0IiwicHJldiIsInByZXZfYiIsInByZXZfYSIsIm5ld19iIiwibmV3X2EiLCJlbGVtZW50IiwidW56aXAiLCJ1bnppcF9tYXBpJDAiLCJyaWdodF9kZXAiLCJsZWZ0X2RlcCIsInJpZ2h0X2luY3IiLCJsZWZ0X2luY3IiLCJsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwIiwicmlnaHRfdXNlcl9mdW5jdGlvbl9kZXAiLCJrZXlzIiwicGFydGl0aW9uX21hcGkiLCJzZWNvbmQiLCJmaXJzdCIsImRhdGEkMCIsImRhdGEkMSIsInBhcnRpdGlvbl9tYXBpJDAiLCJmbGF0dGVuIiwic3RhdGUiLCJpbmNyIiwiam9pbiIsIm1hcF9pbmNyIiwicmVzdWx0X21hcCIsIm9sZF9tYXBfb2ZfaW5jcnMiLCJjdXJyZW50X2RlcGVuZGVuY2llcyIsImFkZF9zdWJub2RlIiwiZGF0YV9ub2RlIiwibmV3X2RlcCIsInJlbW92ZV9zdWJub2RlIiwibWFwX29mX2luY3JzIiwibmV3X2RlcGVuZGVuY3lfbWFwIiwiZGF0YV9ub2RlJDAiLCJzZXBhcmF0ZSIsImlucHV0X21hcCIsIm91dHB1dF9tYXBfbm9kZSIsIm1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwXyIsImlucHV0X21hcF9jaGFuZ2VkIiwiZGVwZW5kZW5jeSIsInByZXZfaW5wdXRfbWFwIiwib3V0cHV0X21hcCIsImV4cGVydF9ub2RlcyIsIm9sZF9ub2RlIiwic3VicmFuZ2UiLCJyYW5nZSIsImNvbXBhcmUiLCJlcXVhbCIsIm1heWJlX2JvdW5kX2VxdWFsIiwiYV8wMDgiLCJiXzAwOSIsImFfMDEwIiwiYl8wMTEiLCJhXzAxMiIsImJfMDEzIiwicmFuZ2VfaXNfZW1wdHkiLCJtaW4kMCIsIm1heCQwIiwibWF4JDEiLCJtaW4kMSIsInJhbmdlX2luY2x1ZGVzIiwicmFuZ2UkMCIsImZyb21fc2NyYXRjaCIsIm9sZF9yYW5nZSIsIm9sZF9taW4iLCJvbGRfbWFwIiwib2xkX21heCIsIm9sZF9yZXMiLCJvbGRfbWF4JDAiLCJwYXJhbSIsImFwcGx5X2RpZmZfaW5faW50ZXJzZWN0aW9uIiwib3V0c2lkZSIsIm91dHNpZGUkMCIsIm91dHNpZGVfY3V0b2ZmIiwid2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlIiwid2l0aG91dF9rZXlzX291dF9vZl9yYW5nZSIsIm1hcF9hcHBlbmRfZXhuIiwibG93ZXJfcGFydCIsInVwcGVyX3BhcnQiLCJvbGRfbWluJDAiLCJvbGRfbWluJDEiLCJvbGRfbWF4JDEiLCJ3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSIsInJla2V5Iiwib3V0ZXJfY29tcGFyYXRvciIsImFkZHMiLCJvdXRwdXQkMCIsIm5ld19lbnRyeSIsImluZGV4X2J5aSIsImluZGV4IiwiaW5uZXJfY29tcGFyYXRvciIsIm91dGVyX21hcCIsImlubmVyX21hcCQwIiwiaW5kZXhfYnkiLCJpc19rbm93biIsInRvX29wdGlvbiIsImZpbmRfa2V5X3JhbmdlX2xpbmVhciIsImZyb20iLCJ0byIsImxlbiIsImJlZ2luX2tleSIsImVuZF9rZXkiLCJmaW5kX2tleXMiLCJmb2xkIiwic3RhcnRfcG9zIiwiYWR2YW5jZV9wb3MiLCJwb3MiLCJiZWdpbl9rZXkkMCIsImVuZF9rZXkkMCIsImZpbmRfb2Zmc2V0IiwiY2hhbmdlZF9rZXkiLCJyYW5rIiwiY29tcGFyZV9rZXkiLCJzYW1lX2tleSIsInByb2Nlc3MiLCJuZXdfbWFwIiwib2xkX3JhbmsiLCJvbGRfa2V5Iiwib2xkX3JhbmskMCIsImRpZmZfa2V5Iiwib2xkX3JhbmskMSIsIm9sZCQxIiwidXBwZXJfYm91bmQiLCJsb3dlcl9ib3VuZCIsInVwcGVyX2JvdW5kJDAiLCJsb3dlcl9ib3VuZCQwIiwic3VicmFuZ2UkMCIsInN1YnJhbmdlX2J5X3JhbmsiLCJmaW5kX2tleV9yYW5nZSIsImVuZF9rZXlfb3B0JDAiLCJvbGRfdG8iLCJvbGRfZnJvbSIsInJhbmdlX29mZnNldF9iZWdpbiIsInJhbmdlX29mZnNldF9lbmQiLCJhZGp1c3RfYW5kX29mZnNldCIsImJ5JDEiLCJrZXkkMSIsImJ5JDIiLCJieSIsImNsb3Nlc3RfZGlyIiwiYnkkMCIsIm9mZnNldF9lbmQiLCJvZmZzZXRfYmVnaW4iLCJtYXBfb2Zmc2V0X2VuZCIsIm1hcF9vZmZzZXRfYmVnaW4iLCJlbmRfa2V5X29wdCQyIiwiYmVnaW5fa2V5X29wdCIsIm1hcF9vZmZzZXRfYmVnaW4kMCIsImVuZF9rZXlfb3B0IiwiYmVnaW5fa2V5X29wdCQwIiwic3ltYm9sIiwiYm91bmQiLCJyZXR1cm4kMCIsImtleV9yYW5nZSIsInBhdHRlcm5fc3ludGF4XzAxNCIsImxiIiwicGF0dGVybl9zeW50YXhfMDE1IiwidSIsInBhdHRlcm5fc3ludGF4XzAxNiIsInViIiwicGF0dGVybl9zeW50YXhfMDE3IiwibGV0X3N5bnRheF8wMjIiLCJsJDAiLCJwYXR0ZXJuX3N5bnRheF8wMTgiLCJsYiQwIiwicGF0dGVybl9zeW50YXhfMDE5IiwibGV0X3N5bnRheF8wMjYiLCJ1JDAiLCJwYXR0ZXJuX3N5bnRheF8wMjAiLCJ1YiQwIiwicGF0dGVybl9zeW50YXhfMDIxIiwibGV0X3N5bnRheF8wMjkiLCJ0cmFuc3Bvc2UiLCJrMl9jb21wYXJhdG9yIiwibSIsImsxX2NvbXBhcmF0b3IiLCJrMSIsImsyIiwidmFsdWUiLCJhY2NfaW5uZXIiLCJhY2NfaW5uZXIkMCIsImNvbGxhcHNlX2J5IiwibWVyZ2Vfa2V5cyIsImNvbGxhcHNlIiwiaW5uZXJfY29tcGFyYXRvciQwIiwiZXhwYW5kIiwiY291bnRpIiwiY291bnQiLCJleGlzdHNpIiwiZXhpc3RzIiwic3VtIiwiR3JvdXAiLCJ2IiwiZm9yX2FsbGkiLCJmb3JfYWxsIiwidW5vcmRlcmVkX2ZvbGQkMCIsInVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzJDAiLCJjcmVhdGUiLCJzZWxmIiwidXBkYXRlcl9ub2RlIiwic2VsZiQwIiwiY2hhbmdlZF92YWx1ZSIsImVudHJpZXMiLCJlbnRyeSIsImZpbmQiLCJ0IiwiaXNfbm93X29ic2VydmFibGUiLCJlbnRyeSQwIiwiY3VycmVudF9lbnRyaWVzIiwiaXNfbGlua2VkIiwib3RoZXJfZW50cmllcyIsIm90aGVyX2VudHJ5IiwibmV3X2VudHJpZXMiLCJzZXhwX29mX3QiLCJzZXhwX29mX2tleSIsInNleHBfb2ZfdmFsdWUiLCJpbmZvX3Blcl9rZXkiLCJhY3R1YWxfdmFsdWUiLCJlbnRyaWVzJDAiLCJhY3R1YWxfdmFsdWUkMCIsIngkMCIsIm1hdGNoJDAiLCJzYXZlZF92YWx1ZSIsIm1hdGNoJDIiLCJtYXRjaCQzIiwidiQwIiwibWF0Y2gkNCIsInYkMSIsIm1hdGNoJDUiLCJ2JDIiLCJmbGF0dGVuJDAiLCJoYXNodGJsX3NpemUiLCJzZXR1cF9nZW5lcmF0b3IiLCJoYXNoYWJsZSIsImNvbXB1dGVfb3V0cHV0IiwibWFrZV9pbnB1dF9ub2RlIiwibmVjZXNzYXJ5X2RlcGVuZGVuY2llcyIsIm1ha2Vfa2V5X3N0YWxlIiwia2V5IiwiaW5wdXRfbm9kZSIsImlucHV0X2RlcCIsIm91dHB1dF9ub2RlIiwiaXNfbm93X29ic2VydmFibGUiLCJsIiwibCQwIiwib3V0cHV0X25vZGUkMCIsInVwZGF0ZV9vbmUiLCJpbnB1dCIsInNlbGVjdGVkIiwibWFrZV9zdGFsZSIsImlucCIsInNlbGVjdF9vbmUiLCJIIiwia2V5JDAiLCJzZWxlY3Rfb25lJDAiLCJoIiwic2VsZWN0X29uZV92YWx1ZSIsImRlZmF1bHQkMCIsImRhdGEiLCJzZWxlY3Rfb25lX3ZhbHVlJDAiLCJzZWxlY3RfbWFueV92YWx1ZXMiLCJzZWxlY3RfbWFueSIsIm9sZF9zZXQiLCJtYXJrIiwibmFtZSIsIm1lYXN1cmUiLCJzdGFydCIsImVuZCIsInJlY29yZCIsImYiLCJiZWZvcmVfbmFtZSIsImFmdGVyX25hbWUiLCJyZXMiLCJjbGVhcl9tYXJrcyIsImNsZWFyX21lYXN1cmVzIiwiY3JlYXRlIiwiZmlsZW5hbWUiLCJtaW1ldHlwZSIsImNvbnRlbnRzIiwic2V4cF9vZl90IiwidCIsInRyaWdnZXIiLCJjb250ZW50c19iaWdzdHIiLCJjcmVhdGUkMCIsImdldF9kb3dubG9hZCIsImJ1dHRvbl90ZXh0IiwiZW5hYmxlZCIsIm9uX2NsaWNrIiwiZXh0cmFfYXR0cnMiLCJ0cmlnZ2VyX2Nzdl9kb3dubG9hZCIsImV2IiwiZW5hYmxlZF9kaXNhYmxlZCIsImF0dHJzIiwiY2xvY2siLCJleHRyYSIsInIiLCJvbl9kaXNwbGF5IiwidmlldyIsInVwZGF0ZV92aXNpYmlsaXR5IiwiYXBwbHlfYWN0aW9uIiwiY3JlYXRlX3dpdGhfZXh0cmEiLCJtb2RlbCIsImFwcGx5X2FjdGlvbiQwIiwidXBkYXRlX3Zpc2liaWxpdHkkMCIsIm9uX2Rpc3BsYXkkMCIsImNyZWF0ZSIsImVycm9yX3NvdXJjZV8wMDMiLCJuYW1lcyIsImVycm9yX3NvdXJjZV8wMTkiLCJkZXNjcmlwdGlvbnMiLCJ0X29mX3NleHAiLCJvZl9hXzAwMSIsInhfMDA0IiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwidG9wIiwic2V4cF9vZl90Iiwib2ZfYV8wMDUiLCJyaWdodF8wMTMiLCJib3R0b21fMDExIiwibGVmdF8wMDkiLCJ0b3BfMDA3IiwiYXJnXzAxNCIsImJuZHNfMDA2IiwiYXJnXzAxMiIsImJuZHNfMDA2JDAiLCJhcmdfMDEwIiwiYm5kc18wMDYkMSIsImFyZ18wMDgiLCJibmRzXzAwNiQyIiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImEiLCJiaW5fc2l6ZV90Iiwic2l6ZV9vZl9hIiwidjQiLCJ2MyIsInYyIiwidjEiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwicG9zIiwicG9zJDAiLCJwb3MkMSIsInBvcyQyIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJ2X3RvcCIsInZfbGVmdCIsInZfYm90dG9tIiwidl9yaWdodCIsImJpbl9yZWFkZXJfdCIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCIsImJpbl9hIiwiY29tcGFyZSIsImNtcF9hIiwiYV8wMTUiLCJiXzAxNiIsIm4iLCJuJDAiLCJuJDEiLCJyaWdodCQwIiwiYm90dG9tJDAiLCJsZWZ0JDAiLCJ0b3AkMCIsIm1ha2VfY3JlYXRvciIsInRvcF9mdW4iLCJsZWZ0X2Z1biIsImJvdHRvbV9mdW4iLCJyaWdodF9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJ0b3BfZ2VuIiwiY29tcGlsZV9hY2MkMSIsImxlZnRfZ2VuIiwiY29tcGlsZV9hY2MkMiIsImJvdHRvbV9nZW4iLCJjb21waWxlX2FjYyQzIiwicmlnaHRfZ2VuIiwiYWNjIiwibWFwIiwiaXRlciIsImZvbGQiLCJpbml0IiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwibWFwJDEiLCJ0IiwiZiIsImludF9oZWlnaHQiLCJpbnRfd2lkdGgiLCJmbG9hdF9oZWlnaHQiLCJmbG9hdF93aWR0aCIsInJvdW5kX2Zsb2F0X3JlY3QiLCJyb3VuZCIsInJvd3Nfb3JfY29sdW1uc19vZl9zZXhwIiwic2V4cF8wMjAiLCJzZXhwX29mX3Jvd3Nfb3JfY29sdW1ucyIsImdyb3VwJDAiLCJiaW5fc2hhcGVfcm93c19vcl9jb2x1bW5zIiwiYmluX3NpemVfcm93c19vcl9jb2x1bW5zIiwiYmluX3dyaXRlX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl93cml0ZXJfcm93c19vcl9jb2x1bW5zIiwiYmluX3JlYWRfcm93c19vcl9jb2x1bW5zIiwiYmluX3JlYWRfcm93c19vcl9jb2x1bW5zJDAiLCJiaW5fcmVhZGVyX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yb3dzX29yX2NvbHVtbnMiLCJyb3dzIiwiY29sdW1ucyIsImlzX3Jvd3MiLCJpc19jb2x1bW5zIiwicm93c192YWwiLCJjb2x1bW5zX3ZhbCIsInJvd3MkMCIsImNvbHVtbnMkMCIsImZvbGQkMSIsInJvd3NfZnVuIiwiY29sdW1uc19mdW4iLCJpdGVyJDEiLCJtYXAkMiIsIm1ha2VfbWF0Y2hlciIsInJvd3NfZ2VuIiwiY29sdW1uc19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsImNvbXBhcmVfcm93c19vcl9jb2x1bW5zIiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiZWxlbWVudF9pc19pbl92aWV3cG9ydCIsInNjcm9sbCIsImlkIiwidmlld3BvcnRfcmVjdF9vZl9lbGVtZW50Iiwidmlld3BvcnRfcmVjdCIsImNsaWVudF9yZWN0X29mX2VsZW1lbnQiLCJib3VuZGluZ19yZWN0IiwiY2xpZW50X3JlY3QiLCJmaW5kX3Zpc2libGVfcmFuZ2UiLCJsZW5ndGgiLCJudGhfZWxlbWVudF9pZCIsImxheW91dCIsImVsZW1lbnRfc2VhcmNoIiwic2VhcmNoX2J5IiwibW9kZSIsIngiLCJudGhfZWxlbWVudCIsImVsdCIsImZpcnN0IiwibGFzdCIsImdldCIsImlzX2FzY2VuZGluZyIsImxlbmd0aCQwIiwidmlld3BvcnRfcmVjdCQwIiwidGFyZ2V0IiwidGFyZ2V0JDAiLCJzZWFyY2hfYnkkMCIsImdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIiLCJnZXRfc2Nyb2xsX2NvbnRhaW5lciIsImVsIiwiZmlsZW5hbWUiLCJwcmludF9lcnJvcmYiLCJmbXQiLCJzIiwicmVxdWVzdF9hbmltYXRpb25fZnJhbWUiLCJjYWxsYmFjayIsImN1cnJlbnRfY29udGV4dCIsInJlcXVlc3RfaWRzIiwiY2FsbGJhY2skMCIsImFuaW1hdGlvbl9mcmFtZV9pZCIsInNldF90aW1lb3V0X2lkIiwiYXNfZm9jdXNhYmxlIiwibWFya19kaXJ0eSIsImlzX2RpcnR5IiwieF8wMDIiLCJ4XzAwMyIsImFfMDA0IiwiYl8wMDUiLCJhXzAwNiIsImJfMDA3Iiwic2V0X2xvZ2dpbmdfZmlsdGVyIiwibG9nZ2luZ19maWx0ZXIiLCJnbG9iYWxfaXNfaW5pdGlhbGl6ZWQiLCJhcHBfc3RhdGVzIiwic2luZ2xlX2xpbmVfc3RyaW5nX2xpc3QiLCJzdHJpbmdzIiwic3RyIiwibXVsdGlfbGluZV9zdHJpbmdfbGlzdCIsImdldF90YWdfbmFtZSIsIm5vZGUiLCJub2RlJDAiLCJlIiwibm9kZSQxIiwic3RhcnRfYm9uc2FpIiwiYmluZF90b19lbGVtZW50X3dpdGhfaWQiLCJpbml0aWFsX21vZGVsIiwiQXBwIiwiZGVidWciLCJzdG9wIiwibmFtZWRfbG9nZ2luZ19maWx0ZXJzIiwibW9kZWxfdiIsIm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YiLCJtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSIsImN1dG9mZiIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsImFjdGlvbl9xdWV1ZSIsImhhbmRsZSIsImFjdGlvbiIsInZpc2liaWxpdHkiLCJ2aWV3cG9ydF9jaGFuZ2VkIiwib2JzIiwiZmV0Y2giLCJuYW1lZF9sb2dnaW5nX2ZpbHRlcnMkMCIsImZpbHRlcl9uYW1lcyIsImFwcF9pbml0X21lc3NhZ2UiLCJ3aXRoX2FwcF9pZF9vcHQiLCJ1cGRhdGVfc3RhdGUiLCJhcHBfaWRfb3B0IiwiYXBwX2lkX29wdCQwIiwiYXBwX2lkIiwic3RhdGUiLCJ1cGRhdGVfbG9nZ2luZ19maWx0ZXIiLCJ1cGRhdGVfc2hvdWxkX3Byb2ZpbGUiLCJzaG91bGRfcHJvZmlsZSIsInVwZGF0ZV9zaG91bGRfZGVidWciLCJzaG91bGRfZGVidWciLCJibGFuZ19zdHIiLCJibGFuZ19zdHIkMCIsImFwcF9zdGF0ZSIsImJsYW5nIiwiaW52YWxpZF9uYW1lcyIsIm5hbWUiLCJmaWx0ZXIiLCJmaWx0ZXIkMCIsImFjdGlvbl9zZXhwIiwiY29udGVudHMiLCJsb2ciLCJodG1sIiwiaHRtbF9kb20iLCJwYXJlbnQiLCJjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQiLCJldmVudF9uYW1lIiwid2hlcmUiLCJwcmV2X2h0bWwiLCJwcmV2X2VsdCIsInJlZm9jdXNfcm9vdF9lbGVtZW50IiwiZWxlbWVudCIsInRpbWVyX3N0YXJ0IiwicHJvZmlsZSIsInRpbWVyX3N0b3AiLCJiZWZvcmUiLCJhZnRlciIsInJlbGF0ZWRfdGFyZ2V0Iiwic2FmZV9maWx0ZXIiLCJzaG91bGRfbG9nIiwiZXJyIiwiY3VzdG9tX3ByaW50Zl8wMTAiLCJuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUiLCJjdXN0b21fcHJpbnRmXzAxMiIsInBlcmZvcm1fdXBkYXRlIiwibm93IiwibmV3X21vZGVsIiwic2hvdWxkX2xvZ19hY3Rpb24iLCJuZXdfbW9kZWwkMCIsInJvb3QiLCJhZGRfbmV3X2F0dHJzIiwiYXR0cnMiLCJwYXRjaCIsIm9sZF90YWdfbmFtZSIsIm5ld190YWdfbmFtZSIsInRhZ3NfdGhlX3NhbWUiLCJzdGFydCIsImFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIiwib2xkX21vZGVsIiwiaW5qZWN0IiwiY29tcG9uZW50Iiwic2NoZWR1bGVfZXZlbnQiLCJzY2hlZHVsZV9hY3Rpb24iLCJlcnJvcl9zb3VyY2VfMDE0IiwiaW52YXJpYW50IiwidCIsIm9mX3N0cmluZyIsInMiLCJ0b19zdHJpbmciLCJlcXVhbCIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsImFfMDA1IiwiYl8wMDYiLCJhXzAwOSIsImJfMDEwIiwidXBkYXRlX29mX3NleHAiLCJvZl9hXzAxMSIsInNleHBfMDE2Iiwic2V4cHNfMDE3IiwidmFsdWUiLCJpbnB1dCIsInNleHBzXzAxOSIsImVycm9yIiwibGFzdF92YWxpZCIsInNleHBfb2ZfdXBkYXRlIiwib2ZfYV8wMjEiLCJ2YWx1ZV8wMjUiLCJpbnB1dF8wMjMiLCJhcmdfMDI2IiwiYm5kc18wMjIiLCJhcmdfMDI0IiwiYm5kc18wMjIkMCIsImVycm9yXzAzMiIsImxhc3RfdmFsaWRfMDMwIiwiaW5wdXRfMDI4IiwiYXJnXzAzMyIsImJuZHNfMDI3IiwiYXJnXzAzMSIsImJuZHNfMDI3JDAiLCJhcmdfMDI5IiwiYm5kc18wMjckMSIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsInYyIiwidjEiLCJzaXplIiwidjMiLCJ2MiQwIiwidjEkMCIsInNpemUkMCIsInNpemUkMSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJ1ZiIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QiLCJiaW5fd3JpdGVyX2EiLCJ2IiwiYmluX3JlYWRfdCIsIm9mX2EiLCJwb3NfcmVmIiwidmludCIsImJpbl9yZWFkX3QkMCIsInZfaW5wdXQiLCJ2X3ZhbHVlIiwidl9pbnB1dCQwIiwidl9sYXN0X3ZhbGlkIiwidl9lcnJvciIsImJpbl9yZWFkZXJfdCIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCIsImJpbl9hIiwiY29tcGFyZSIsImFfMDM1IiwiYl8wMzYiLCJuIiwiYV8wMzkiLCJiXzA0MCIsIm4kMCIsIm4kMSIsImFfMDQzIiwiYl8wNDQiLCJlcXVhbF91cGRhdGUiLCJhXzA0NSIsImJfMDQ2IiwiYV8wNDciLCJiXzA0OCIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdXBkYXRlIiwiYmluX3NpemVfdXBkYXRlIiwiYmluX3dyaXRlX3VwZGF0ZSIsImJpbl93cml0ZXJfdXBkYXRlIiwiYmluX3JlYWRfdXBkYXRlIiwiYmluX3JlYWRfdXBkYXRlJDAiLCJiaW5fcmVhZGVyX3VwZGF0ZSIsImJpbl91cGRhdGUiLCJjb21wYXJlX3VwZGF0ZSIsImFfMDU0IiwiYl8wNTUiLCJhXzA1NiIsImJfMDU3IiwibGlmdCIsIk0iLCJpbnB1dCQxIiwiaW5wdXQkMCIsImV4biQwIiwiZXhuIiwicmV0dXJuJDAiLCJnZXRfY3VycmVudCIsImdldF9sYXN0IiwiZ2V0X2Vycm9yIiwiaXNfaW5pdGlhbF9lbXB0eSIsInVwZGF0ZSIsIm9sZCIsIm5ldyQwIiwib2xkJDAiLCJlcnJvciQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsIm1heWJlX2Rpc2FibGVkIiwiZGlzYWJsZWQiLCJhdHRycyIsImFkZF9hdHRycyIsImF0dHJzJDAiLCJtZXJnZSIsInN0cnVjdHVyYWxfbGlzdCIsImNoaWxkcmVuIiwib3JpZW50YXRpb24iLCJtZXJnZV9iZWhhdmlvciIsImxheW91dF9zdHlsZSIsImNoaWxkIiwic2V4cF9vZl90IiwiY29tYmluZSIsImxlZnQiLCJyaWdodCIsImluaXQiLCJlbGVtZW50IiwiZiIsImRvY3VtZW50X2FjdGl2ZV9lbGVtZW50IiwidmFsdWUkMCIsImNoYW5nZV9oYW5kbGVyIiwibm9ybWFsaXplZCIsImNoYW5nZV9oYW5kbGVyJDAiLCJldmVudF9pZCIsIm9uX21vdW50Iiwic3RhdGUiLCJkZXN0cm95IiwidXBkYXRlJDAiLCJvbGRfaW5wdXQiLCJuZXdfaW5wdXQiLCJjcmVhdGUiLCJpbXBsIiwidmFsdWVzIiwic2VsZWN0ZWQiLCJvbl9jaGFuZ2UiLCJleHRyYV9hdHRycyIsImV4dHJhX29wdGlvbl9hdHRycyIsImluZGV4Iiwib2ZfdmFsdWVzIiwib2ZfdmFsdWVzX29wdCIsInBsYWNlaG9sZGVyIiwidmFsdWVzJDAiLCJleHRyYV9vcHRpb25fYXR0cnMkMCIsImFfMDU4IiwiYl8wNTkiLCJhXzA2MCIsImJfMDYxIiwib2ZfZW51bSIsIm9mX2VudW1fb3B0IiwiYV8wNjIiLCJiXzA2MyIsImFfMDY0IiwiYl8wNjUiLCJiYXJlYm9uZXNfYnV0dG9uX2xpa2UiLCJjaGVja2VkIiwiaGlkZV9uYXRpdmVfaW5wdXRzIiwic2ltcGxlIiwiZXh0cmFfYXR0cnMkMCIsImRpc2FibGVkJDAiLCJpc19jaGVja2VkIiwibGFiZWwiLCJvbl90b2dnbGUiLCJldiIsImltcGwkMCIsImxheW91dCIsInN0eWxlIiwibGFiZWxfYXR0cnMiLCJpbnB1dF9hdHRycyIsImxhYmVsX2F0dHJzJDAiLCJpdGVtIiwib2ZfdmFsdWVzJDAiLCJvZl9lbnVtJDAiLCJpbXBsJDEiLCJyZXBlYXRlZF9jbGlja19iZWhhdmlvciIsInRhcmdldCIsIm9wdGlvbnMiLCJzZWxlY3RlZF92YWx1ZXMiLCJpc19zZWxlY3RlZCIsIndhc19yZXBlYXRlZF9jbGljayIsIm9mX3ZhbHVlcyQxIiwib2ZfZW51bSQxIiwibGlzdGVuZXIiLCJub3JtYWxpemUiLCJtYXliZV9vbl9yZXR1cm4iLCJvbl9yZXR1cm4iLCJvbl9yZXR1cm4kMCIsImlucHV0X25vZGUiLCJyYXciLCJvbl9pbnB1dCIsInN0cmluZ2FibGVfaW5wdXRfb3B0IiwidHlwZV9hdHRycyIsImNhbGxfb25faW5wdXRfd2hlbiIsInNob3VsZF9ub3JtYWxpemUiLCJ2YWx1ZSQxIiwib2Zfc3RyaW5nYWJsZSIsInZhbGlkYXRlZCIsIlYiLCJ2YWx1ZV9hdHRyIiwidGV4dCIsInBhc3N3b3JkIiwibnVtYmVyIiwic3RlcCIsInJhbmdlIiwidGltZSIsImRhdGUiLCJkYXRldGltZV9sb2NhbCIsInV0Y19vZmZzZXQiLCJob3VycyIsInpvbmUiLCJwYXJ0cyIsImhyIiwibWluIiwib2ZkYXkiLCJab25lZF90aW1lIiwidGV4dF9hcmVhIiwiY29sb3JfcGlja2VyIiwiZXh0cmFfYXR0ciIsIndpdGhfdmFsaWRhdGlvbiIsInZhbGlkYXRpb24iLCJvbl9jbGljayIsInJlc3VsdCIsInJlYXNvbiIsInNpbXBsZSQwIiwiaW1wbCQyIiwibmFtZSIsIm9mX3ZhbHVlcyQyIiwiRSIsIm9mX3ZhbHVlc19ob3Jpem9udGFsIiwiYWNjZXB0X2F0dHJzIiwiYWNjZXB0cyIsInMkMCIsImxpc3QiLCJhY2NlcHQiLCJmaWxlcyIsInNpbmdsZSIsImZpbGUiLCJlbXB0eSIsImlzX2VtcHR5IiwidCIsInplcm9fYml0IiwiayIsIm0iLCJtZW0iLCJqIiwiciIsImwiLCJsJDAiLCJmaW5kIiwieCIsImZpbmRfb3B0IiwiZmluZF9maXJzdF9vcHQiLCJmIiwicnYiLCJyayIsImx2IiwibGsiLCJ2JDAiLCJmaW5kX2ZpcnN0IiwiZmluZF9sYXN0X29wdCIsImZpbmRfbGFzdCIsIm1hc2siLCJwIiwiam9pbiIsInQxIiwicDEiLCJ0MCIsInAwIiwibWF0Y2hfcHJlZml4IiwiYWRkIiwiaW5zIiwic2luZ2xldG9uIiwidiIsImJyYW5jaCIsInQkMCIsInJlbW92ZSIsInJtdiIsImNhcmRpbmFsIiwiaXRlciIsIm1hcCIsIm1hcGkiLCJmb2xkIiwicyIsImFjY3UiLCJzJDAiLCJhY2N1JDAiLCJhY2N1JDEiLCJmb3JfYWxsIiwiZXhpc3RzIiwiZmlsdGVyIiwicHIiLCJmaWx0ZXJfbWFwIiwicGFydGl0aW9uIiwicGFydCIsImFjYyQwIiwiY2hvb3NlIiwiY2hvb3NlX29wdCIsInNwbGl0IiwiY29sbCIsImIiLCJtaW5fYmluZGluZyIsImJzIiwia3MiLCJidCIsImt0IiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJiaW5kaW5ncyIsImFjYyIsImNvbXBhcmUiLCJjbXAiLCJ0MiIsImNvbXBhcmVfYXV4IiwidDEkMCIsInQyJDAiLCJ4MSIsImsxIiwieDIiLCJrMiIsImMiLCJyMSIsImwxIiwibTEiLCJyMiIsImwyIiwibTIiLCJwMiIsImMkMCIsImMkMSIsImMkMiIsImVxdWFsIiwiZXEiLCJlcXVhbF9hdXgiLCJtZXJnZSIsImFkZCQwIiwidjEiLCJ2MiIsInVwZGF0ZSIsInoiLCJ1bnNpZ25lZF9sdCIsIm4iLCJ0JDIiLCJzMSIsInMwIiwiayQwIiwicSIsInQkMSIsInVuaW9uIiwidG9fc2VxIiwicHJlcGVuZF9zZXEiLCJtJDAiLCJzJDEiLCJ0b19zZXFfZnJvbSIsImtleSIsImFkZF9zZXEiLCJvZl9zZXEiLCJ1dGY4X29mX2NvZGUiLCJidWYiLCJ4IiwiYWRkIiwibWF4Yml0cyIsIm4iLCJ1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIiwiaSIsImoiLCJoaWdoMTAiLCJsb3cxMCIsInZlcnNpb24iLCJqc29uX2Vycm9yIiwicyIsImluaXRfbGV4ZXIiLCJmbmFtZSIsImxudW0iLCJidWYkMCIsImJ1ZiQxIiwib2NhbWxfbGV4X3RhYmxlcyIsInJlYWRfanVuayQwIiwibGV4YnVmIiwib2NhbWxfbGV4X3JlYWRfanVua19yZWMkMCIsInJlYWRfanVuayIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyIsImhleCIsIndyaXRlX3NwZWNpYWwiLCJzcmMiLCJzdGFydCIsInN0b3AiLCJvYiIsInN0ciIsIndyaXRlX3N0cmluZyIsImMiLCJleGMkMCIsImV4YyIsImpzb25fc3RyaW5nX29mX3N0cmluZyIsIndyaXRlX251bGwiLCJ3cml0ZV9ib29sIiwid3JpdGVfZGlnaXRzIiwiZCIsIndyaXRlX2ludCIsImZsb2F0X25lZWRzX3BlcmlvZCIsIndyaXRlX2Zsb2F0IiwiczEiLCJ3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyIsInNpZ25pZmljYW50X2ZpZ3VyZXMiLCJzcHJpbnRmIiwid3JpdGVfZmxvYXRfcHJlYyIsIndyaXRlX3N0ZF9mbG9hdCIsIndyaXRlX3N0ZF9mbG9hdF9wcmVjIiwiaXRlcjIiLCJmX2VsdCIsImZfc2VwIiwibCQwIiwieSQwIiwibCIsInkiLCJ3cml0ZV9qc29uIiwid3JpdGVfYXNzb2MiLCJ3cml0ZV9saXN0IiwiYiIsImYiLCJ3cml0ZV9zdGRfanNvbiIsInRvX2J1ZmZlciIsInN1ZiIsInN0ZCIsInRvX3N0cmluZyIsImxlbiIsIm9iJDAiLCJ0b19jaGFubmVsIiwib2MiLCJ0b19vdXRwdXQiLCJvdXQiLCJ0b19maWxlIiwiZmlsZSIsImUkMCIsImUiLCJzZXFfdG9fYnVmZmVyIiwic3QiLCJzZXFfdG9fc3RyaW5nIiwic2VxX3RvX2NoYW5uZWwiLCJzZXEiLCJqc29uIiwic2VxX3RvX2ZpbGUiLCJzb3J0IiwidiIsImsiLCJsJDEiLCJhIiwicHBfbGlzdCIsInNlcCIsInBweCIsInBwX3NlcCIsImlzX2F0b20iLCJmb3JtYXQiLCJpbnNpZGVfYm94IiwieCQyIiwicyQwIiwieCQwIiwieCQxIiwibmFtZSIsInBwIiwidG9fc3RyaW5nJDAiLCJwcCQwIiwiZm10IiwieHMiLCJ2YWx1ZSIsImtleSIsInhzJDAiLCJzaG93IiwiZXF1YWwiLCJiJDAiLCJhJDAiLCJ5cyIsInJlc3VsdCIsInlzJDAiLCJjb21wYXJlX2tleXMiLCJrZXkkMCIsInhzJDEiLCJ5cyQxIiwicmVzdWx0JDAiLCJ2YWx1ZSQwIiwiYiQxIiwiYSQxIiwiYiQyIiwiYSQyIiwiYiQzIiwiYSQzIiwicHJldHR5X3ByaW50IiwicHJldHR5X3RvX3N0cmluZyIsInByZXR0eV90b19jaGFubmVsIiwid3JpdGVfaW50bGl0Iiwid3JpdGVfZmxvYXRsaXQiLCJ3cml0ZV9zdHJpbmdsaXQiLCJ3cml0ZV90dXBsZSIsIm8iLCJ3cml0ZV92YXJpYW50IiwicyQxIiwicyQyIiwid3JpdGVfc3RkX3R1cGxlIiwid3JpdGVfc3RkX3ZhcmlhbnQiLCJ2JDAiLCJsJDIiLCJ4JDMiLCJvcCIsInJlcHJlc2VudGF0aW9uIiwieCQ0IiwicmVwcmVzZW50YXRpb24kMCIsInR1cCIsImIkNCIsImEkNCIsIm5hbWUkMCIsInRvX2Jhc2ljIiwieCQ2IiwieCQ1IiwiYiQ1IiwiYSQ1IiwicyQzIiwiYiQ2IiwiYSQ2IiwiYiQ3IiwiYSQ3IiwicyQ0IiwieW9qc29uX29mX3VuaXQiLCJ5b2pzb25fb2ZfYm9vbCIsImIiLCJ5b2pzb25fb2Zfc3RyaW5nIiwic3RyIiwieW9qc29uX29mX2J5dGVzIiwiYnl0ZXMiLCJ5b2pzb25fb2ZfY2hhciIsImMiLCJ5b2pzb25fb2ZfaW50IiwibiIsInlvanNvbl9vZl9mbG9hdCIsInlvanNvbl9vZl9pbnQzMiIsInlvanNvbl9vZl9pbnQ2NCIsInlvanNvbl9vZl9uYXRpdmVpbnQiLCJ5b2pzb25fb2ZfcmVmIiwieW9qc29uX29mX2EiLCJyZiIsInlvanNvbl9vZl9sYXp5X3QiLCJsdiIsInlvanNvbl9vZl9vcHRpb24iLCJ4IiwieW9qc29uX29mX3BhaXIiLCJ5b2pzb25fb2ZfYiIsImEiLCJ5b2pzb25fb2ZfdHJpcGxlIiwieW9qc29uX29mX2MiLCJ5b2pzb25fb2ZfbGlzdCIsImxzdCIsInlvanNvbl9vZl9hcnJheSIsImFyIiwibHN0X3JlZiIsImkiLCJ5b2pzb25fb2ZfaGFzaHRibCIsInlvanNvbl9vZl9rZXkiLCJ5b2pzb25fb2ZfdmFsIiwiaHRibCIsImNvbGwiLCJrIiwidiIsImFjYyIsInlvanNvbl9vZl9vcGFxdWUiLCJ5b2pzb25fb2ZfZnVuIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3lvanNvbl9lcnJvcl9leG4iLCJleGMiLCJ5b2pzb24iLCJvZl95b2pzb25fZXJyb3IiLCJ3aGF0IiwidW5pdF9vZl95b2pzb24iLCJib29sX29mX3lvanNvbiIsInN0cmluZ19vZl95b2pzb24iLCJieXRlc19vZl95b2pzb24iLCJjaGFyX29mX3lvanNvbiIsImludF9vZl95b2pzb24iLCJmbG9hdF9vZl95b2pzb24iLCJpbnQzMl9vZl95b2pzb24iLCJpbnQ2NF9vZl95b2pzb24iLCJuYXRpdmVpbnRfb2ZfeW9qc29uIiwicmVmX29mX3lvanNvbiIsImFfb2ZfeW9qc29uIiwibGF6eV90X29mX3lvanNvbiIsIm9wdGlvbl9vZl95b2pzb24iLCJwYWlyX29mX3lvanNvbiIsImJfb2ZfeW9qc29uIiwiYl95b2pzb24iLCJhX3lvanNvbiIsInRyaXBsZV9vZl95b2pzb24iLCJjX29mX3lvanNvbiIsImNfeW9qc29uIiwibGlzdF9vZl95b2pzb24iLCJyZXZfbHN0IiwiYXJyYXlfb2ZfeW9qc29uIiwidCIsImgiLCJsZW4iLCJyZXMiLCJ0JDAiLCJoJDAiLCJoYXNodGJsX29mX3lvanNvbiIsImtleV9vZl95b2pzb24iLCJ2YWxfb2ZfeW9qc29uIiwiYWN0Iiwidl95b2pzb24iLCJrX3lvanNvbiIsIm9wYXF1ZV9vZl95b2pzb24iLCJmdW5fb2ZfeW9qc29uIiwic3ByaW50ZiIsInR1cGxlX29mX3NpemVfbl9leHBlY3RlZCIsImxvYyIsInN0YWdfbm9fYXJncyIsInN0YWdfaW5jb3JyZWN0X25fYXJncyIsInRhZyIsIm1zZyIsInN0YWdfdGFrZXNfYXJncyIsIm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIiwiZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSIsInVuZXhwZWN0ZWRfc3RhZyIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsInJlc3QiLCJmaWVsZCIsInJlc3QkMCIsInJlY29yZF91bmRlZmluZWRfZWxlbWVudHMiLCJ1bmRlZmluZWQkMCIsInJlY29yZF9saXN0X2luc3RlYWRfYXRvbSIsInJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlIiwibm9fdmFyaWFudF9tYXRjaCIsIm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmQiLCJwdGFnX25vX2FyZ3MiLCJwdGFnX2luY29ycmVjdF9uX2FyZ3MiLCJjbnN0ciIsInB0YWdfdGFrZXNfYXJncyIsIm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIiLCJlbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXIiLCJlbXB0eV90eXBlIiwic3ltYm9sIiwiZXF1YWwiLCJ4IiwieSIsImNvbXBhcmUiLCJ0b19pbnQiLCJwcCIsImludGVyc2VjdCIsInN5bWJvbCIsImxldHRlciIsIm5vdF9sZXR0ZXIiLCJmcm9tX2NoYXIiLCJzZXhwIiwiZm10IiwicyIsInBhaXIiLCJwcDEiLCJwcDIiLCJ2MiIsInYxIiwidHJpcGxlIiwicHAzIiwidjMiLCJvcHRpbnQiLCJpIiwicXVvdGUiLCJwcF9vbGlzdCIsInBwX2VsZW0iLCJwcF9zdHJfbGlzdCIsInRvX3RvX3N0cmluZyIsImIiLCJjYW55IiwidW5pb24iLCJsJDAiLCJsIiwibCQyIiwibCQxIiwiciIsImMyIiwiYzEiLCJyJDAiLCJjMiQwIiwiYzEkMCIsImwkMyIsImwkNCIsImludGVyIiwiZGlmZiIsInIkMSIsInNpbmdsZSIsImMiLCJhZGQiLCJzZXEiLCJjJDAiLCJvZmZzZXQiLCJvIiwibWVtIiwicyQwIiwicmVtIiwiaGFzaF9yZWMiLCJqIiwiaGFzaCIsInByaW50X29uZSIsImNoIiwiaXRlciIsInQiLCJmIiwidCQwIiwieHMiLCJvbmVfY2hhciIsInYiLCJ1IiwiZm9sZF9yaWdodCIsImluaXQiLCJjc2luZ2xlIiwiaXNfZW1wdHkiLCJwcmVwZW5kIiwieCQwIiwiZCIsImQkMCIsInBpY2siLCJnZW4iLCJlcHNfZXhwciIsImhhc2hfY29tYmluZSIsImgiLCJhY2N1IiwiZW1wdHkiLCJtZXJnZV9tYXJrc19vZmZzZXQiLCJvbGQiLCJudyIsIm1lcmdlIiwibSIsImFjY3UkMSIsImFjY3UkMiIsImEiLCJhY2N1JDAiLCJpZHgiLCJtYXJrcyIsIm1hcmtzX3NldF9pZHgiLCJwcF9tYXJrcyIsInBwX3NlbSIsImsiLCJwcF9yZXBfa2luZCIsImUiLCJlJDAiLCJlJDEiLCJlJDIiLCJrJDAiLCJlJDMiLCJpJDAiLCJmaXJzdCIsInJlcyIsImNyZWF0ZV9pZHMiLCJta19leHByIiwiaWRzIiwiZGVmIiwiZW1wdHkkMCIsImNzdCIsImFsdCIsImtpbmQiLCJpc19lcHMiLCJleHByIiwiZXBzIiwicmVwIiwic2VtIiwibWFyayIsInBtYXJrIiwiZXJhc2UiLCJtJDAiLCJiZWZvcmUiLCJhZnRlciIsInJlbmFtZSIsInoiLCJ5JDAiLCJnIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwicjEiLCJlMSIsImwxJDEiLCJyMiIsImUyIiwibDIkMSIsInIxJDAiLCJlMSQwIiwibWFya3MxIiwicjIkMCIsImUyJDAiLCJtYXJrczIiLCJyMSQxIiwibWFya3MxJDAiLCJyMiQxIiwibWFya3MyJDAiLCJoYXNoJDAiLCJtYXJrcyQwIiwiYWNjdSQzIiwidHNlcSIsInByaW50X3N0YXRlX3JlYyIsInByaW50X3N0YXRlX2xzdCIsInBwJDAiLCJkdW1teSIsIm1rIiwiY2F0IiwiZGVzYyIsImNyZWF0ZSIsImVxdWFsJDAiLCJoYXNoJDEiLCJjcmVhdGVfd29ya2luZ19hcmVhIiwiaW5kZXhfY291bnQiLCJ3IiwibWFya191c2VkX2luZGljZXMiLCJ0YmwiLCJmcmVlX2luZGV4IiwidGJsX3JlZiIsImxlbiIsImlkeCQwIiwicmVtb3ZlX21hdGNoZXMiLCJzcGxpdF9hdF9tYXRjaCIsInJlbW92ZV9kdXBsaWNhdGVzIiwicHJldiIsInByZXYkMCIsInByZXYkMSIsInByZXYkMiIsInIkMiIsInIkMyIsIngkMSIsInByZXYkMyIsInIkNCIsInNldF9pZHgiLCJmaWx0ZXJfbWFya3MiLCJkZWx0YV8xJDAiLCJuZXh0X2NhdCIsInByZXZfY2F0IiwiZGVsdGFfMiQwIiwiZGVsdGFfMSIsImRlbHRhX3NlcSQwIiwieSQxIiwia2luZCQwIiwicmVwX2tpbmQiLCJ5JDIiLCJtYXJrcyQxIiwieSQzIiwibWFya3MkMiIsImNhdCQwIiwibWFya3MkMyIsImRlbHRhXzIiLCJkZWx0YV9zZXEiLCJkZWx0YV80IiwicmVtJDAiLCJkZWx0YSIsImNoYXIkMCIsInN0IiwiZXhwciQwIiwicmVkX3RyIiwidHIyIiwic3QyIiwiczIiLCJ0cjEiLCJzdDEiLCJzMSIsInByZXBlbmRfZGVyaXYiLCJyZXN0cmljdCIsInMkMSIsInByZXBlbmRfbWFya3NfZXhwcl9sc3QiLCJtJDEiLCJkZXJpdl8xJDAiLCJhbGxfY2hhcnMiLCJjYXRlZ29yaWVzIiwicmVtJDEiLCJkZXJpdl8yJDAiLCJkZXJpdl8xIiwiZGVyaXZfc2VxIiwieiQwIiwicmVtJDIiLCJjYXQkMSIsImRlcml2XzIiLCJ4bCIsInokMSIsImRlcml2XzQiLCJkZXJpdiIsImRlciIsImV4cHIkMSIsInN0YXR1cyIsIm1hIiwic3QkMCIsIm1ha2UiLCJmbGF0dGVuIiwiY20iLCJjb2xvcl9yZXByIiwic3BsaXQiLCJkdW1teV9vZmZzZXQiLCJtMSIsInAxIiwicDIiLCJnZXQiLCJzdGFydCIsInN1YnMiLCJzdG9wIiwidGVzdCIsImdldF9vcHQiLCJhbGxfb2Zmc2V0IiwiYWxsIiwib2Zmc2V0cyIsInN0cnMiLCJtYXRjaGVzIiwicHBfbWF0Y2giLCJzdHIiLCJuYl9ncm91cHMiLCJuIiwibiQwIiwidiQwIiwidiQxIiwibiQxIiwicHBfcmUiLCJyZSIsImdyb3VwX2NvdW50IiwiZ3JvdXBfbmFtZXMiLCJjYXRlZ29yeSIsImNvbG9yIiwiZHVtbXlfbmV4dCIsInVua25vd25fc3RhdGUiLCJicmVhayQwIiwiZmluZF9zdGF0ZSIsIm5jb2wiLCJicmVha19zdGF0ZSIsImluZm8iLCJwb3MiLCJ2YWxpZGF0ZSIsImdldF9jb2xvciIsInNsZW4iLCJzY2FuX3N0ciIsImluaXRpYWxfc3RhdGUiLCJncm91cHMiLCJwb3MkMyIsImxhc3QiLCJpbmZvJDAiLCJzdCQ1IiwicG9zJDQiLCJzdCQzIiwicmVhbF9jIiwic3QkNCIsInBvcyQwIiwicG9zJDEiLCJzdCQxIiwic3QkMiIsInBvcyQyIiwiZmluYWxfYm91bmRhcnlfY2hlY2siLCJmaW5hbF9jYXQiLCJyZXMkMCIsIm1hdGNoX3N0ciIsInBhcnRpYWwiLCJpbml0aWFsX2NhdCIsInN0YXR1cyQwIiwicG1hcmtzIiwibm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSIsImNzZXEiLCJjYWRkIiwidmlldyIsInZhciQwIiwicmVsIiwic3EiLCJyZSQwIiwicmUkMSIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImlzX2NoYXJzZXQiLCJjdXBwZXIiLCJjbG93ZXIiLCJjYWxwaGEiLCJjZGlnaXQiLCJjYWxudW0iLCJjd29yZCIsIngxIiwieDIiLCJ4MSQwIiwieDIkMCIsImVxX2xpc3QiLCJqMiIsImkyIiwieDIkMSIsImoxIiwiaTEiLCJ4MSQxIiwieDIkMiIsInNlbTIiLCJ4MSQyIiwic2VtMSIsIngyJDMiLCJrMiIsIngxJDMiLCJrMSIsIngyJDQiLCJ4MSQ0IiwieDIkNSIsIngxJDUiLCJ4MiQ2IiwieDEkNiIsIngyJDciLCJ4MSQ3IiwibDIkMiIsImwxJDIiLCJ4MiQ4IiwieDIkOSIsIngxJDgiLCJ4MSQ5IiwibTIiLCJzZXF1ZW5jZSIsIm1lcmdlX3NlcXVlbmNlcyIsImVuZm9yY2Vfa2luZCIsImNyIiwidHJhbnNsYXRlIiwiaWduX2Nhc2UiLCJuYW1lcyIsImNhY2hlIiwiaWduX2dyb3VwJDAiLCJncmVlZHkkMCIsInRyYW5zX3NlcSIsIm1lcmdlZF9zZXF1ZW5jZXMiLCJraW5kJDEiLCJjciQwIiwiaiQwIiwia2luZCQyIiwia2luZCQzIiwiY3IkMSIsImdyZWVkeSQxIiwicCIsIm5hbWUiLCJraW5kJDQiLCJjciQyIiwiciQ1Iiwia2luZCQ1IiwiY3IkMyIsInIkNiIsImkkMSIsImtpbmQkNiIsImNyJDQiLCJpZ25fZ3JvdXAiLCJncmVlZHkiLCJhc19zZXQiLCJoYW5kbGVfY2FzZSIsImlnbl9jYXNlJDAiLCJyJDciLCJyJDgiLCJyJDkiLCJyJDEwIiwiciQxMSIsInIkMTIiLCJsJDUiLCJyJDEzIiwiciQxNCIsInIkMTUiLCJhbmNob3JlZCIsImVwc2lsb24iLCJyZXBuIiwicmVwMSIsIm9wdCIsImJvdyIsImVvdyIsIndvcmQiLCJib3MiLCJlb3MiLCJ3aG9sZV9zdHJpbmciLCJsb25nZXN0Iiwic2hvcnRlc3QiLCJub25fZ3JlZWR5IiwiZ3JvdXAiLCJub19ncm91cCIsIm5lc3QiLCJzZXQiLCJyZyIsImNvbXBsIiwiYW55Iiwibm90bmwiLCJsb3dlciIsInVwcGVyIiwiYWxwaGEiLCJkaWdpdCIsImFsbnVtIiwid29yZGMiLCJhc2NpaSIsImJsYW5rIiwiY250cmwiLCJncmFwaCIsInByaW50IiwicHVuY3QiLCJzcGFjZSIsInhkaWdpdCIsImNhc2UkMCIsIm5vX2Nhc2UiLCJjb21waWxlIiwicmVnZXhwJDAiLCJyZWdleHAiLCJsbmwiLCJjb2xvcml6ZSIsInJlZ2V4cCQxIiwicmVnZXhwJDIiLCJuZWVkX2xubCIsIm5jb2xvciIsImNvbG9ycyIsImxubCQwIiwibmNvbG9yJDAiLCJpbml0aWFsIiwiZXhlY19pbnRlcm5hbCIsImV4ZWMiLCJzdWJzdHIiLCJleGVjX29wdCIsImV4ZWNwIiwiZXhlY19wYXJ0aWFsIiwiZXhlY19wYXJ0aWFsX2RldGFpbGVkIiwibWFya2VkIiwibWFya19zZXQiLCJhbGxfc2VxIiwibGltaXQiLCJhdXgiLCJtYXRjaGVzX3NlcSIsInN1YiIsInNwbGl0X2Z1bGxfc2VxIiwic3RhdGUiLCJvbGRfaSIsInRleHQiLCJ0ZXh0JDAiLCJzdGF0ZSQwIiwic3BsaXRfc2VxIiwiZmlsdGVyIiwic2VxJDAiLCJ0bCIsInNlcSQxIiwibGlzdF9vZl9zZXEiLCJzcGxpdF9mdWxsIiwiZ2VuX29mX3NlcSIsInNwbGl0X2dlbiIsInNwbGl0X2Z1bGxfZ2VuIiwiYWxsX2dlbiIsIm1hdGNoZXNfZ2VuIiwicmVwbGFjZSIsImJ1ZiIsInJlcGxhY2luZyIsInJlcGxhY2Vfc3RyaW5nIiwiYnkiLCJ3aXRuZXNzIiwiZnJvbSIsImdldF9vZnMiLCJnZXRfYWxsIiwiZ2V0X2FsbF9vZnMiLCJ0ZXN0MiIsImFjY2VwdCIsImFjY2VwdDIiLCJsZWZ0IiwiYnJhbmNoIiwibGVmdCQwIiwibGVmdCQxIiwiYnJhY2tldCIsInMkMiIsImNvbXBpbGVfcGF0IiwiY29tcGlsZV9yZWdleHAiLCJzdHJpbmdfbWF0Y2giLCJzdHJpbmdfcGFydGlhbF9tYXRjaCIsInNlYXJjaF9mb3J3YXJkIiwic2VhcmNoX2JhY2t3YXJkIiwicCQwIiwicCQxIiwidmFsaWRfZ3JvdXAiLCJvZmZzZXRfZ3JvdXAiLCJyZXBsYWNlbWVudF90ZXh0IiwicmVwbCIsIm9yaWciLCJxIiwicSQwIiwicSQxIiwicCQyIiwibGVuJDAiLCJwJDMiLCJxJDIiLCJxJDMiLCJwJDQiLCJiJDAiLCJxJDUiLCJwJDYiLCJxJDQiLCJwJDUiLCJxJDYiLCJwJDciLCJzdHJpbmdfYmVmb3JlIiwic3RyaW5nX2FmdGVyIiwiZmlyc3RfY2hhcnMiLCJsYXN0X2NoYXJzIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImdyb3VwX2JlZ2lubmluZyIsImdyb3VwX2VuZCIsIm1hdGNoZWRfZ3JvdXAiLCJ0eHQiLCJyZXBsYWNlX21hdGNoZWQiLCJtYXRjaGVkIiwibWF0Y2hfYmVnaW5uaW5nIiwibWF0Y2hfZW5kIiwibWF0Y2hlZF9zdHJpbmciLCJzdWJzdGl0dXRlX2ZpcnN0IiwicmVwbF9mdW4iLCJnbG9iYWxfc3Vic3RpdHV0ZSIsImxhc3Rfd2FzX2VtcHR5Iiwic3RhcnRwb3MiLCJlbmRfcG9zIiwicmVwbF90ZXh0IiwibGFzdF93YXNfZW1wdHkkMCIsImdsb2JhbF9yZXBsYWNlIiwicmVwbGFjZV9maXJzdCIsInNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIiwiYm91bmRlZF9zcGxpdCIsIm51bSIsImJvdW5kZWRfc3BsaXRfZGVsaW0iLCJzcGxpdF9kZWxpbSIsImJvdW5kZWRfZnVsbF9zcGxpdCIsImZ1bGxfc3BsaXQiLCJiZWciLCJtdWwiLCJleHBsaWNpdF9wZXJpb2QiLCJzbGFzaGVzIiwiYXBwZW5kIiwicGllY2UiLCJhbV9hdF9zdGFydF9vZl9jb21wb25lbnQiLCJuZXh0IiwicmVtYWluaW5nIiwib25lIiwiZXhwbGljaXRfc2xhc2giLCJlbmNsb3NlZCIsImhpZ2giLCJsb3ciLCJlbmNsb3NlZF9zZXQiLCJzZXQkMCIsImVuY2xvc3VyZSIsImV4YWN0bHkiLCJzbGFzaGVzJDAiLCJjaGFycyIsIm1hbnlfbWFueSIsImV4cGxpY2l0X3BlcmlvZCQwIiwiZmlyc3RfZXhwbGljaXRfcGVyaW9kIiwibWF0Y2hfY29tcG9uZW50IiwiZ2xvYiIsInBhdGhuYW1lIiwibWF0Y2hfYmFja3NsYXNoZXMiLCJwZXJpb2QiLCJleHBhbmRfYnJhY2VzIiwiZG91YmxlX2FzdGVyaXNrIiwidG9fcmUiLCJyZWFkIiwicGllY2VzIiwiZm91bmQiLCJwaWVjZXMkMCIsInN0YXRlJDgiLCJzdGF0ZSQ5IiwiZXhwbGljaXRfcGVyaW9kJDEiLCJzbGFzaGVzJDEiLCJzdGF0ZSQxMCIsImV4cGxpY2l0X3NsYXNoJDAiLCJub3RfZW1wdHkiLCJtYXliZV9lbXB0eSIsIm5vdF9lbXB0eSQxIiwiZW5jbG9zZWRfc2V0JDAiLCJzdGF0ZSQyIiwic3RhdGUkNCIsIm5vdF9lbXB0eSQwIiwic3RhdGUkNSIsInN0YXRlJDYiLCJlbmNsb3NlZCQwIiwic3RhdGUkNyIsImVuY2xvc2VkJDEiLCJzdGF0ZSQzIiwic3RhdGUkMSIsImVuY2xvc2VkJDIiLCJlbmNsb3NlZCQzIiwiZXhwbCIsImlubmVyIiwiYWNjIiwiYmVnJDAiLCJhY2MkMCIsImJlZyQxIiwiYWNjJDEiLCJpJDMiLCJiZWckMiIsImkkNCIsImkkMiIsImdsb2IkMCIsImdsb2J4IiwiZ2xvYngkMCIsInBvc2l4X2NsYXNzX3N0cmluZ3MiLCJvcHRzIiwidW5ncmVlZHkiLCJkb3RhbGwiLCJkb2xsYXJfZW5kb25seSIsIm11bHRpbGluZSIsImFjY2VwdF9zIiwidW5nZXQiLCJncmVlZHlfbW9kIiwiZ3IiLCJnciQwIiwiYXRvbSIsImludGVnZXIiLCJoZXhkaWdpdCIsImNvZGUiLCJzJDMiLCJzJDQiLCJjbGFzcyQwIiwicG9zaXhfY2xhc3MiLCJwYXQiLCJmbGFncyIsImV4dHJhY3QiLCJyZXgiLCJnZXRfc3Vic3RyaW5nIiwiZ2V0X25hbWVkX3N1YnN0cmluZyIsImdldF9zdWJzdHJpbmdfb2ZzIiwicG1hdGNoIiwic3Vic3RpdHV0ZSIsInN1YnN0Iiwic3MiLCJmaW4iLCJtYXgiLCJyZXN1bHRzIiwiZGVsaW0iLCJuZXdsaW5lIiwibmV3X3N0b3JlIiwiY29weSIsIm1ha2UiLCJzIiwidiIsImZpbmQiLCJ4IiwieSIsInoiLCJsaW5rX3RvX3oiLCJpc19yZXByZXNlbnRhdGl2ZSIsImVxIiwiZ2V0IiwieCQwIiwidiQxIiwidiQwIiwic2V0IiwiciQxIiwiciQwIiwiciIsInVuaW9uIiwieSQwIiwidngiLCJyeCIsInJ5IiwibWVyZ2UiLCJmIiwidnkiLCJsaW5rIiwibWF0Y2giLCJyb290eCIsInJvb3R5IiwiY2hlY2siLCJjb21wYXJlIiwiY3VycmVudCIsInN0YWNrIiwiY29tbWl0Iiwicm9sbGJhY2siLCJ0ZW50YXRpdmVseSIsImIkMCIsImUkMCIsImUiLCJiIiwiZGVmYXVsdF9pbml0aWFsX2xlbmd0aCIsImNvbnRlbnQiLCJsZW5ndGgiLCJsZW5ndGgkMCIsImNvbnRlbnQkMCIsIm5ic3AiLCJsZW5ndGgiLCJzIiwic3RvcCIsInN0YXJ0IiwiY291bnQiLCJuIiwiY291bnQkMCIsInN0YXJ0JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwic3RhcnQkMyIsInNpbmdsZXRvbiIsInBvcyIsIngiLCJ1bmlvbiIsImYiLCJ0MSIsInQyIiwieHMyIiwieDIiLCJwMiIsInhzMSIsIngxIiwicDEiLCJtYXAiLCJyZXN0IiwibWFwaSIsIm1hcGsiLCJmb2xkX2xlZnQiLCJ6JDAiLCJlcnJvcl9zb3VyY2VfMDAyIiwiemVybyIsInRfb2Zfc2V4cCIsInhfMDAzIiwiY29sIiwicm93Iiwic2V4cF9vZl90IiwiY29sXzAwNyIsInJvd18wMDUiLCJhcmdfMDA4IiwiYm5kc18wMDQiLCJhcmdfMDA2IiwiYm5kc18wMDQkMCIsImNvbXBhcmUiLCJwb3MxIiwicG9zMiIsImVycm9yX3NvdXJjZV8wMDQiLCJvZl9hbm5vdF8wMDEiLCJzZXhwXzAwNiIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMjUiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInNleHBfYXJnc18wMTMiLCJhcmcxXzAxNSIsImFyZzBfMDE0IiwicmVzMF8wMTYiLCJyZXMxXzAxNyIsInNleHBfYXJnc18wMDgiLCJhcmcwXzAwOSIsInJlczBfMDEwIiwib2ZfYW5ub3RfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNiIsInJlczFfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJyZXMwXzA0MiIsInJlczFfMDQzIiwiYWxpZ24iLCJsIiwiYW5ub3QiLCJyZW1vdmVfYW5ub3RzIiwibGF5b3V0IiwibGF5b3V0JDAiLCJzdHJpbmciLCJsMiIsImwxIiwibGF5b3V0JDEiLCJta19vZl9sYXlvdXQiLCJ0ZXh0IiwiY29sdW1uIiwiZ28iLCJpbmRlbnQiLCJpbmRlbnQkMCIsImltcDEiLCJpbXAyIiwiaW5kZW50JDEiLCJzdHJpbmdfb2ZfbGF5b3V0IiwicmVjb3JkIiwiczEiLCJzMiIsImltcCIsInN0cmluZ3Nfb2ZfbGF5b3V0IiwicmVzdDIiLCJmaXJzdF9zdHJpbmdfMiIsImZpcnN0X2luZGVudF8yIiwicmVzdDEiLCJsYXN0X3N0cmluZ18xIiwibGFzdF9pbmRlbnRfMSIsInNwbGl0X2ZpcnN0IiwieHMiLCJ0cmFpbGluZyIsImZpcnN0Iiwic3BsaXRfbGFzdF9vcHQiLCJ5cyIsInkiLCJzcGxpdF9sYXN0IiwiciIsImJveCIsImVycm9yX3NvdXJjZV8wMTEiLCJlcnJvcl9zb3VyY2VfMDE2IiwiYm94X29mX3NleHAiLCJ3aWR0aCIsImhlaWdodCIsInNleHBfb2ZfYm94Iiwid2lkdGhfMDA3IiwiaGVpZ2h0XzAwNSIsIm9mX2Fubm90XzAwOSIsInhfMDEyIiwidF9vZl9zZXhwJDAiLCJtZXRyaWNzIiwib2ZfYW5ub3RfMDEzIiwic2V4cF8wMTgiLCJ0YWdfMDE5IiwicmVzMF8wMjciLCJzZXhwX2FyZ3NfMDM3IiwiYXJnMV8wMzkiLCJyZXMwXzA0MCIsInJlczFfMDQxIiwic2V4cF9hcmdzXzAzMCIsImFyZzFfMDMyIiwiYXJnMF8wMzEiLCJyZXMxXzAzNCIsIm9mX2Fubm90XzA0MyIsIm1ldHJpY3NfMDQ3IiwibGF5b3V0XzA0NSIsImFyZ18wNDgiLCJibmRzXzA0NCIsImFyZ18wNDYiLCJzZXhwX29mX3QkMCIsImJuZHNfMDQ0JDAiLCJvZl9hbm5vdF8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzFfMDU1IiwiYXJnMF8wNTQiLCJyZXMwXzA1NiIsInJlczFfMDU3IiwiYXJnMV8wNTkiLCJhcmcwXzA1OCIsInJlczBfMDYwIiwicmVzMV8wNjEiLCJtIiwib2Zmc2V0IiwiZm9sZCIsImxpbmVicmVhayIsImNhdCIsIm0kMCIsIm0yIiwibTEiLCJhY2MxIiwiYWNjMiIsIm0kMSIsImFubiIsIm5leHRfcG9zaXRpb24iLCJ1cGRhdGVkX3JvdyIsImxhc3QiLCJsZWFkaW5nIiwidXBkYXRlZF9jb2wiLCJwb3NfZm9sZCIsIm1pZCIsInRhYmxlIiwibWsiLCJtaWRfYm94IiwibCQwIiwiYm91bmRpbmdfYm94IiwiYnciLCJiaCIsImwkMSIsIm0kMiIsIm92ZXJmbG93X2Nvc3QiLCJoZWlnaHRfY29zdCIsIm1rX2hlaWdodCIsIm1rX292ZXJmbG93IiwiaW5mIiwiYWRkIiwiYzEiLCJjMiIsImVxIiwibHQiLCJsZXEiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZXJyb3Jfc291cmNlXzAwOCIsImVycm9yX3NvdXJjZV8wNjgiLCJlcnJvcl9zb3VyY2VfMDczIiwiaGFzaCIsImVxdWFsIiwidzIiLCJ3MSIsIm9mX2Fubm90XzA2NiIsInhfMDY5IiwiZG9jIiwibWVtIiwib2ZfYW5ub3RfMDcwIiwic2V4cF8wNzUiLCJ0YWdfMDc2Iiwic2V4cF9hcmdzXzA4OSIsImFyZzBfMDkwIiwicmVzMF8wOTEiLCJzZXhwX2FyZ3NfMDk0IiwiYXJnMV8wOTYiLCJhcmcwXzA5NSIsInJlczBfMDk3IiwicmVzMV8wOTgiLCJzZXhwX2FyZ3NfMDgyIiwiYXJnMV8wODQiLCJhcmcwXzA4MyIsInJlczBfMDg1IiwicmVzMV8wODYiLCJzZXhwX2FyZ3NfMTAxIiwiYXJnMV8xMDMiLCJhcmcwXzEwMiIsInJlczBfMTA0IiwicmVzMV8xMDUiLCJzZXhwX2FyZ3NfMDc3IiwiYXJnMF8wNzgiLCJyZXMwXzA3OSIsIm9mX2Fubm90XzEwNyIsImRvY18xMTEiLCJtZW1fMTA5IiwiYXJnXzExMiIsImJuZHNfMTA4IiwiYXJnXzExMCIsImJuZHNfMTA4JDAiLCJvZl9hbm5vdF8xMTMiLCJhcmcwXzExNCIsInJlczBfMTE1IiwiYXJnMV8xMTciLCJhcmcwXzExNiIsInJlczBfMTE4IiwicmVzMV8xMTkiLCJhcmcwXzEyMCIsInJlczBfMTIxIiwiYXJnMV8xMjMiLCJhcmcwXzEyMiIsInJlczBfMTI0IiwicmVzMV8xMjUiLCJhcmcxXzEyNyIsImFyZzBfMTI2IiwicmVzMF8xMjgiLCJyZXMxXzEyOSIsInRfb2ZfdCIsInQiLCJmYWlsIiwiZW1wdHkiLCJzcGFjZSIsImluZGVudF9hbmRfYWxpZ24iLCJoY2F0IiwiaGNhdHMiLCJkb2NzIiwiaHNlcCIsImhzZXBzIiwidnNlcCIsInZzZXBzIiwiY2hvaWNlIiwiY2hvaWNlcyIsIm1hcF90IiwiZCIsIm1hcF9hbm5vdCIsImQyIiwiZDEiLCJkJDAiLCJkJDEiLCJkMiQwIiwiZDEkMCIsImFsbCIsImxzMSIsImxzMiIsIm1fdW5pb24iLCJjb3N0X3VuaW9uIiwiY29zdDIiLCJjb3N0MSIsImxheW91dF9vZl9kb2MiLCJoIiwicG9zJDAiLCJrZXkiLCJ2YWx1ZSIsInZhbHVlJDAiLCJjb3N0Iiwib3ZlcmZsb3ciLCJ6IiwibGF5b3V0MSIsImxheW91dHMiLCJsYXlvdXQyIiwicCIsImMiLCJsMSQwIiwibGF5b3V0X29mX2RvYyQwIiwieF9jb3N0IiwieF9wb3MiLCJzZXhwX2FyZ3NfMDE4IiwiYXJnMF8wMTkiLCJyZXMwXzAyMCIsInJlczBfMDE1Iiwic2V4cF9hcmdzXzAyMyIsImFyZzFfMDI1IiwiYXJnMF8wMjQiLCJyZXMwXzAyNiIsInJlczFfMDI3Iiwib2ZfYW5ub3RfMDI5IiwiYXJnMF8wMzAiLCJyZXMwXzAzMSIsInJlczBfMDM1IiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJoZWlnaHRfdGJsIiwiaCQwIiwiYnMiLCJicyQwIiwiYiIsImFubm90cyIsImFubm90cyQwIiwiYm94JDAiLCJhbm5vdHMkMSIsImJveCQxIiwiYXBwZW5kX2JveCIsImJveDIiLCJib3gxJDAiLCJhcHBlbmRfbGFzdCIsImJzMSIsImIxIiwiYnMxJDAiLCJhcHBlbmRfbGFzdCQwIiwiYm94MSQxIiwiYW5ub3QkMCIsImJveGVzIiwiYm94ZXMxIiwibGVhZGluZyQwIiwiYm94ZXMyIiwiZXJyb3Jfc291cmNlXzAwMiIsInRwX2xvYyIsImVycm9yX3NvdXJjZV8wMTEiLCJ0cF9sb2MkMCIsImZtdCIsIngiLCJ4JDAiLCJzZXAiLCJzeW50YXhfcmVzdWx0X29mX3NleHAiLCJ4XzAwMyIsInBlcmNlbnRhZ2UiLCJyZXN1bHRzIiwic2V4cF9vZl9zeW50YXhfcmVzdWx0IiwicGVyY2VudGFnZV8wMDciLCJyZXN1bHRzXzAwNSIsImFyZ18wMDgiLCJibmRzXzAwNCIsImFyZ18wMDYiLCJibmRzXzAwNCQwIiwic3ludGF4X3Jlc3VsdF9vZl95b2pzb24iLCJ5b2pzb24iLCJmaWVsZF95b2pzb25zIiwicmVzdWx0c19maWVsZCIsInBlcmNlbnRhZ2VfZmllbGQiLCJkdXBsaWNhdGVzIiwiZXh0cmEiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwicGVyY2VudGFnZV92YWx1ZSIsInJlc3VsdHNfdmFsdWUiLCJ5b2pzb25fb2Zfc3ludGF4X3Jlc3VsdCIsInZfcGVyY2VudGFnZSIsInZfcmVzdWx0cyIsImFyZyIsImJuZHMiLCJhcmckMCIsImJuZHMkMCIsImZpbmRfdmFyX3VwYXQiLCJuYW1lIiwidXBhdCIsInVwYXQkMCIsInVwYXQkMSIsInVwMSIsInVwYXQkMiIsInVwYXQkMyIsInVwMSQwIiwidXBhdCQ0IiwibCIsImFjYyIsInVwIiwiZmluZF9pbl9sZXQiLCJkZWYiLCJkZWYkMCIsInBsIiwidWwiLCJ1ZSIsImRlZiQyIiwiZGVmJDEiLCJmaW5kX2ZuIiwidWV4cCIsInVleHAkMCIsImwkMCIsImJvZHkkMCIsImwkMSIsImFyZ3MiLCJmbiIsInUiLCJ1ZXhwJDMiLCJ1MiIsInUxJDAiLCJsJDIiLCJ1ZXhwJDEiLCJ1ZXhwJDIiLCJ1MSIsInVsJDAiLCJ1MSQxIiwiYm9keSIsImwkMyIsInZhcl9tZW50aW9uX3VwYXQiLCJ2YXJfbWVudGlvbiIsInAiLCJ1cyIsImciLCJwZSIsImUiLCJ2YXJfYXBwbGllZCIsIngkMSIsInVleHAkNCIsInVleHAkNSIsIngkMiIsInVleHAkNiIsInVleHAkNyIsInUxJDIiLCJpc19yZWN1cnNpdmUiLCJmbl9ib2RpZXMiLCJ0YWlsX2NoZWNrIiwiYXJncyQwIiwidTIkMCIsInUyJDEiLCJpc190YWlsX3JlY3Vyc2l2ZSIsImNoZWNrIiwicHJlZGljYXRlcyIsInByZWQiLCJsZW5ndGgiLCJwYXNzaW5nIiwicmVzIiwicHJlZGljYXRlX29mX3NleHAiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDE1IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsInNleHBfYXJnc18wMzAiLCJhcmcwXzAzMSIsInJlczBfMDMyIiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJzZXhwX2FyZ3NfMDI1IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsInNleHBfb2ZfcHJlZGljYXRlIiwiYXJnMF8wMzMiLCJyZXMwXzAzNCIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJhcmcwXzAzNyIsInJlczBfMDM4IiwiYXJnMF8wMzkiLCJyZXMwXzA0MCIsInByZWRpY2F0ZV9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wcmVkaWNhdGUiLCJwcmVkaWNhdGVfZm4iLCJwcmVkaWNhdGUiLCJuYW1lJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJwcmVmaXgiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZXJyb3Jfc291cmNlXzAxMyIsImVycm9yX3NvdXJjZV8wMjgiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wMzgiLCJ0cF9sb2MkMiIsImVycm9yX3NvdXJjZV8wNDkiLCJ0cF9sb2MkMyIsImVycm9yX3NvdXJjZV8wNjAiLCJ0cF9sb2MkNCIsImVycm9yX3NvdXJjZV8wOTQiLCJ0cF9sb2MkNSIsImVycm9yX3NvdXJjZV8xMDEiLCJ0cF9sb2MkNiIsImVycm9yX3NvdXJjZV8xMjAiLCJ0cF9sb2MkNyIsImVycm9yX3NvdXJjZV8xMzMiLCJ0cF9sb2MkOCIsInByZWx1ZGVfa2V5IiwidGVzdF92YWxpZGF0aW9uX2tleSIsInVzZXJfaW1wbF9rZXkiLCJ1c2VyX3Rlc3RzX2tleSIsImluc3RydWN0b3Jfa2V5IiwiaGlkZGVuX3Rlc3RzX2tleSIsImVycm9yX3NvdXJjZV8xNDgiLCJ0cF9sb2MkOSIsIm91dHB1dF9oZWFkZXJfZ3JhZGluZyIsIm1vZHVsZV9uYW1lIiwid3JvbmdfaW1wbF9vZl9zZXhwIiwib2ZfY29kZV8wMDEiLCJ4XzAwNCIsImhpbnQiLCJpbXBsIiwic2V4cF9vZl93cm9uZ19pbXBsIiwib2ZfY29kZV8wMDUiLCJoaW50XzAwOSIsImltcGxfMDA3IiwiYXJnXzAxMCIsImJuZHNfMDA2IiwiYm5kc18wMDYkMCIsIndyb25nX2ltcGxfb2ZfeW9qc29uIiwib2ZfY29kZSIsImltcGxfZmllbGQiLCJoaW50X2ZpZWxkIiwiaGludF92YWx1ZSIsImltcGxfdmFsdWUiLCJ5b2pzb25fb2Zfd3JvbmdfaW1wbCIsInZfaGludCIsInZfaW1wbCIsImhpZGRlbl90ZXN0c19vZl9zZXhwIiwib2ZfY29kZV8wMTEiLCJ4XzAxNCIsImhpbnRzIiwidGVzdHMiLCJzZXhwX29mX2hpZGRlbl90ZXN0cyIsIm9mX2NvZGVfMDE1IiwiaGludHNfMDE5IiwidGVzdHNfMDE3IiwiYXJnXzAyMCIsImJuZHNfMDE2IiwiYXJnXzAxOCIsImJuZHNfMDE2JDAiLCJoaWRkZW5fdGVzdHNfb2ZfeW9qc29uIiwidGVzdHNfZmllbGQiLCJoaW50c19maWVsZCIsImhpbnRzX3ZhbHVlIiwidGVzdHNfdmFsdWUiLCJ5b2pzb25fb2ZfaGlkZGVuX3Rlc3RzIiwidl9oaW50cyIsInZfdGVzdHMiLCJoaW50X29mX3NleHAiLCJzZXhwX29mX2hpbnQiLCJoaW50X29mX3lvanNvbiIsInlvanNvbl9vZl9oaW50Iiwic3ludGF4X3Rlc3Rfb2Zfc2V4cCIsInNleHBfMDI3IiwiYXJnMV8wMjQiLCJhcmcwXzAyMyIsInJlczBfMDI1IiwicmVzMV8wMjYiLCJzZXhwX29mX3N5bnRheF90ZXN0IiwiYXJnMV8wMzAiLCJhcmcwXzAyOSIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJzeW50YXhfdGVzdF9vZl95b2pzb24iLCJ2MSIsInYxJDAiLCJ5b2pzb25fb2Zfc3ludGF4X3Rlc3QiLCJzeW50YXhfdGVzdHNfb2Zfc2V4cCIsInhfMDM0Iiwic2V4cF9vZl9zeW50YXhfdGVzdHMiLCJ4XzAzNSIsInN5bnRheF90ZXN0c19vZl95b2pzb24iLCJ0IiwieW9qc29uX29mX3N5bnRheF90ZXN0cyIsInYiLCJ5b3VyX3Rlc3RzX29mX3NleHAiLCJvZl9jb2RlXzAzNiIsInhfMDM5IiwicHJvdmlkZWQiLCJyZXF1aXJlZCIsInNleHBfb2ZfeW91cl90ZXN0cyIsIm9mX2NvZGVfMDQwIiwicHJvdmlkZWRfMDQ2IiwicmVxdWlyZWRfMDQ0IiwidGVzdHNfMDQyIiwiYXJnXzA0NyIsImJuZHNfMDQxIiwiYXJnXzA0NSIsImJuZHNfMDQxJDAiLCJhcmdfMDQzIiwiYm5kc18wNDEkMSIsInlvdXJfdGVzdHNfb2ZfeW9qc29uIiwicmVxdWlyZWRfZmllbGQiLCJwcm92aWRlZF9maWVsZCIsImZ2YWx1ZSQxIiwicHJvdmlkZWRfdmFsdWUiLCJyZXF1aXJlZF92YWx1ZSIsInlvanNvbl9vZl95b3VyX3Rlc3RzIiwidl9wcm92aWRlZCIsInZfcmVxdWlyZWQiLCJhcmckMSIsImJuZHMkMSIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl9zZXhwIiwieF8wNTAiLCJpbXBsX2dyYWRpbmciLCJtdXRhdGlvbl90ZXN0aW5nIiwidGVzdF92YWxpZGF0aW9uIiwic2V4cF9vZl9wb2ludF9kaXN0cmlidXRpb24iLCJpbXBsX2dyYWRpbmdfMDU2IiwibXV0YXRpb25fdGVzdGluZ18wNTQiLCJ0ZXN0X3ZhbGlkYXRpb25fMDUyIiwiYXJnXzA1NyIsImJuZHNfMDUxIiwiYXJnXzA1NSIsImJuZHNfMDUxJDAiLCJhcmdfMDUzIiwiYm5kc18wNTEkMSIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl95b2pzb24iLCJ0ZXN0X3ZhbGlkYXRpb25fZmllbGQiLCJtdXRhdGlvbl90ZXN0aW5nX2ZpZWxkIiwiaW1wbF9ncmFkaW5nX2ZpZWxkIiwiaW1wbF9ncmFkaW5nX3ZhbHVlIiwibXV0YXRpb25fdGVzdGluZ192YWx1ZSIsInRlc3RfdmFsaWRhdGlvbl92YWx1ZSIsInlvanNvbl9vZl9wb2ludF9kaXN0cmlidXRpb24iLCJ2X2ltcGxfZ3JhZGluZyIsInZfbXV0YXRpb25fdGVzdGluZyIsInZfdGVzdF92YWxpZGF0aW9uIiwidmFsaWRhdGVfcG9pbnRfZGlzdHJpYnV0aW9uIiwicF9vZl9zZXhwIiwib2ZfY29kZV8wNTgiLCJ4XzA2MSIsInN5bnRheF90ZXN0cyIsImhpZGRlbl90ZXN0cyIsImhpZGRlbl9idWdzIiwieW91cl9pbXBsIiwieW91cl90ZXN0cyIsImNvcnJlY3RfaW1wbCIsInByZWx1ZGUiLCJwb2ludF9kaXN0cmlidXRpb24iLCJwcm9tcHQiLCJ2ZXJzaW9uIiwidGl0bGUiLCJzZXhwX29mX3AiLCJvZl9jb2RlXzA2MiIsInN5bnRheF90ZXN0c18wODYiLCJoaWRkZW5fdGVzdHNfMDg0IiwiaGlkZGVuX2J1Z3NfMDgyIiwieW91cl9pbXBsXzA4MCIsInlvdXJfdGVzdHNfMDc4IiwiY29ycmVjdF9pbXBsXzA3NiIsInByZWx1ZGVfMDc0IiwicG9pbnRfZGlzdHJpYnV0aW9uXzA3MiIsInByb21wdF8wNzAiLCJtb2R1bGVfbmFtZV8wNjgiLCJ2ZXJzaW9uXzA2NiIsInRpdGxlXzA2NCIsImFyZ18wODciLCJibmRzXzA2MyIsImFyZ18wODUiLCJibmRzXzA2MyQwIiwiYXJnXzA4MyIsImJuZHNfMDYzJDEiLCJhcmdfMDgxIiwiYm5kc18wNjMkMiIsImFyZ18wNzkiLCJibmRzXzA2MyQzIiwiYXJnXzA3NyIsImJuZHNfMDYzJDQiLCJhcmdfMDc1IiwiYm5kc18wNjMkNSIsImFyZ18wNzMiLCJibmRzXzA2MyQ2IiwiYXJnXzA3MSIsImJuZHNfMDYzJDciLCJhcmdfMDY5IiwiYm5kc18wNjMkOCIsImFyZ18wNjciLCJibmRzXzA2MyQ5IiwiYXJnXzA2NSIsImJuZHNfMDYzJDEwIiwicF9vZl95b2pzb24iLCJ0aXRsZV9maWVsZCIsInZlcnNpb25fZmllbGQiLCJtb2R1bGVfbmFtZV9maWVsZCIsInByb21wdF9maWVsZCIsInBvaW50X2Rpc3RyaWJ1dGlvbl9maWVsZCIsInByZWx1ZGVfZmllbGQiLCJjb3JyZWN0X2ltcGxfZmllbGQiLCJ5b3VyX3Rlc3RzX2ZpZWxkIiwieW91cl9pbXBsX2ZpZWxkIiwiaGlkZGVuX2J1Z3NfZmllbGQiLCJoaWRkZW5fdGVzdHNfZmllbGQiLCJzeW50YXhfdGVzdHNfZmllbGQiLCJmdmFsdWUkMiIsImZ2YWx1ZSQzIiwiZnZhbHVlJDQiLCJmdmFsdWUkNSIsImZ2YWx1ZSQ2IiwiZnZhbHVlJDciLCJmdmFsdWUkOCIsImZ2YWx1ZSQ5IiwiZnZhbHVlJDEwIiwic3ludGF4X3Rlc3RzX3ZhbHVlIiwiaGlkZGVuX3Rlc3RzX3ZhbHVlIiwiaGlkZGVuX2J1Z3NfdmFsdWUiLCJ5b3VyX2ltcGxfdmFsdWUiLCJ5b3VyX3Rlc3RzX3ZhbHVlIiwiY29ycmVjdF9pbXBsX3ZhbHVlIiwicHJlbHVkZV92YWx1ZSIsInBvaW50X2Rpc3RyaWJ1dGlvbl92YWx1ZSIsInByb21wdF92YWx1ZSIsIm1vZHVsZV9uYW1lX3ZhbHVlIiwidmVyc2lvbl92YWx1ZSIsInRpdGxlX3ZhbHVlIiwieW9qc29uX29mX3AiLCJ2X3N5bnRheF90ZXN0cyIsInZfaGlkZGVuX3Rlc3RzIiwidl9oaWRkZW5fYnVncyIsInZfeW91cl9pbXBsIiwidl95b3VyX3Rlc3RzIiwidl9jb3JyZWN0X2ltcGwiLCJ2X3ByZWx1ZGUiLCJ2X3BvaW50X2Rpc3RyaWJ1dGlvbiIsInZfcHJvbXB0Iiwidl9tb2R1bGVfbmFtZSIsInZfdmVyc2lvbiIsInZfdGl0bGUiLCJhcmckMiIsImJuZHMkMiIsImFyZyQzIiwiYm5kcyQzIiwiYXJnJDQiLCJibmRzJDQiLCJhcmckNSIsImJuZHMkNSIsImFyZyQ2IiwiYm5kcyQ2IiwiYXJnJDciLCJibmRzJDciLCJhcmckOCIsImJuZHMkOCIsImFyZyQ5IiwiYm5kcyQ5IiwiYXJnJDEwIiwiYm5kcyQxMCIsImtleV9vZl9zZXhwIiwic2V4cF8wOTMiLCJhcmcxXzA5MCIsImFyZzBfMDg5IiwicmVzMF8wOTEiLCJyZXMxXzA5MiIsInNleHBfb2Zfa2V5IiwiYXJnMV8wOTYiLCJhcmcwXzA5NSIsInJlczBfMDk3IiwicmVzMV8wOTgiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsImtleV9vZiIsImZpbmRfa2V5X29wdCIsImtleSIsInNwZWNzIiwic3BlYyIsInBvc19vZl9zZXhwIiwic2V4cF8xMDMiLCJ0YWdfMTA0Iiwic2V4cF9hcmdzXzEwNSIsImFyZzBfMTA2IiwicmVzMF8xMDciLCJzZXhwX29mX3BvcyIsImFyZzBfMTA4IiwicmVzMF8xMDkiLCJwb3Nfb2ZfeW9qc29uIiwieW9qc29uX29mX3BvcyIsInNwZWNfb2Zfc2V4cCIsInhfMTExIiwic2V4cF9vZl9zcGVjIiwieF8xMTIiLCJzcGVjX29mX3lvanNvbiIsInlvanNvbl9vZl9zcGVjIiwidHJhbnNpdGlvbmFyeV9zcGVjX29mX3NleHAiLCJ4XzExNCIsInNleHBfb2ZfdHJhbnNpdGlvbmFyeV9zcGVjIiwieF8xMTUiLCJ0cmFuc2l0aW9uYXJ5X3NwZWNfb2ZfeW9qc29uIiwieW9qc29uX29mX3RyYW5zaXRpb25hcnlfc3BlYyIsIm1hcCIsImYiLCJ3cm9uZ19pbXBsIiwiZWRzX29mX3NleHAiLCJ4XzExNyIsInNleHBfb2ZfZWRzIiwieF8xMTgiLCJlZHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2VkcyIsInN0YXRlX29mX3NleHAiLCJ4XzEyMSIsImVkcyIsInBvcyIsInNleHBfb2Zfc3RhdGUiLCJlZHNfMTI1IiwicG9zXzEyMyIsImFyZ18xMjYiLCJibmRzXzEyMiIsImFyZ18xMjQiLCJibmRzXzEyMiQwIiwic3RhdGVfb2ZfeW9qc29uIiwicG9zX2ZpZWxkIiwiZWRzX2ZpZWxkIiwiZWRzX3ZhbHVlIiwicG9zX3ZhbHVlIiwieW9qc29uX29mX3N0YXRlIiwidl9lZHMiLCJ2X3BvcyIsImtleV9vZl9zdGF0ZSIsImExIiwicGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwIiwic2V4cF8xMzgiLCJhcmcxXzEzNSIsImFyZzBfMTM0IiwicmVzMF8xMzYiLCJyZXMxXzEzNyIsInNleHBfMTMyIiwiYXJnMV8xMjkiLCJhcmcwXzEyOCIsInJlczBfMTMwIiwicmVzMV8xMzEiLCJzZXhwX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJhcmcxXzE0NCIsImFyZzBfMTQzIiwicmVzMF8xNDUiLCJyZXMxXzE0NiIsImFyZzFfMTQwIiwiYXJnMF8xMzkiLCJyZXMwXzE0MSIsInJlczFfMTQyIiwicGVyc2lzdGVudF9zdGF0ZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcGVyc2lzdGVudF9zdGF0ZSIsImVkaXRvcl9vZl9zdGF0ZSIsImkiLCJwdXRfZWRpdG9yIiwic3RhdGUiLCJlZGl0b3IiLCJuIiwiZWRpdG9ycyIsImVkaXRvcl9wb3NpdGlvbnMiLCJwb3NpdGlvbmVkX2VkaXRvcnMiLCJpZHhfb2ZfcG9zIiwicG9zX29mX2lkeCIsImlkeCIsInN3aXRjaF9lZGl0b3IiLCJpbnN0cnVjdG9yX21vZGUiLCJleGVyY2lzZSIsInppcHBlcl9vZl9jb2RlIiwiY29kZSIsInppcHBlciIsInRyYW5zaXRpb24iLCJwcmVsdWRlJDAiLCJjb3JyZWN0X2ltcGwkMCIsInlvdXJfdGVzdHMkMCIsInlvdXJfaW1wbCQwIiwiaGlkZGVuX2J1Z3MkMCIsImltcGwkMCIsInRlc3RzJDAiLCJ0ZXN0cyQxIiwiaGlkZGVuX3Rlc3RzJDAiLCJlZHNfb2Zfc3BlYyIsInNldHRpbmdzIiwic2V0X2luc3RydWN0b3JfbW9kZSIsIm5ld19tb2RlIiwidmlzaWJsZV9pbiIsInN0YXRlX29mX3NwZWMiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlIiwiemlwcGVycyIsInVucGVyc2lzdF9zdGF0ZSIsInBvc2l0aW9uZWRfemlwcGVycyIsImxvb2t1cCIsImRlZmF1bHQkMCIsInBlcnNpc3RlZF96aXBwZXIiLCJ5b3VyX3Rlc3RzX3Rlc3RzIiwiaGlkZGVuX3Rlc3RzX3Rlc3RzIiwid3JhcF9maWx0ZXIiLCJhY3QiLCJ0ZXJtIiwidGVybV9vZiIsInN0aXRjaDMiLCJlZDEiLCJlZDIiLCJlZDMiLCJzdGl0Y2hfdGVybSIsImluc3RydWN0b3IiLCJ5b3VyX2ltcGxfdGVybSIsInByZWx1ZGVfdGVybSIsInVzZXJfaW1wbF90ZXJtIiwidGVzdF92YWxpZGF0aW9uX3Rlcm0iLCJ1c2VyX3Rlc3RzX3Rlcm0iLCJoaWRkZW5fdGVzdHNfdGVybSIsInN0aXRjaF90ZXJtJDAiLCJzdGl0Y2hfc3RhdGljIiwibWsiLCJpbmZvX21hcCIsInN0aXRjaF9zdGF0aWMkMCIsImhpZGRlbl9idWdzX2tleSIsImtleV9mb3Jfc3RhdGljcyIsInNwbGljZWRfZWxhYnMiLCJ1c2VyX3Rlc3RzIiwidXNlcl9pbXBsIiwiZWxhYiIsInMiLCJoaWRkZW5fYnVnIiwiZW1wdHkiLCJzdGF0aWNzX29ubHkiLCJzdGF0aWNzIiwic3RhdGljc19vZl9zdGljaGVkX2R5bmFtaWNzIiwic3RpdGNoX2R5bmFtaWMiLCJyZXN1bHRfb2YiLCJyZXN1bHRzJDAiLCJ0ZXN0X3ZhbGlkYXRpb24kMCIsInVzZXJfaW1wbCQwIiwidXNlcl90ZXN0cyQwIiwiaW5zdHJ1Y3RvciQwIiwic3RpdGNoX2R5bmFtaWMkMCIsImVkaXRvcl9wcCIsInNlcmlhbGl6YXRpb24iLCJleHBvcnRfbW9kdWxlIiwicmVjb3JkIiwiZGF0YSIsInRyYW5zaXRpb25hcnlfZWRpdG9yX3BwIiwiZXhwb3J0X3RyYW5zaXRpb25hcnlfbW9kdWxlIiwiZXhwb3J0X2dyYWRpbmdfbW9kdWxlIiwiaGVhZGVyIiwiYmxhbmtfc3BlYyIsInJlcXVpcmVkX3Rlc3RzIiwicHJvdmlkZWRfdGVzdHMiLCJudW1fd3JvbmdfaW1wbHMiLCJleGVyY2lzZV9leHBvcnRfb2Zfc2V4cCIsInhfMTU0Iiwic2V4cF8xNTMiLCJhcmcxXzE1MCIsImFyZzBfMTQ5IiwicmVzMF8xNTEiLCJyZXMxXzE1MiIsImV4ZXJjaXNlX2RhdGEiLCJjdXJfZXhlcmNpc2UiLCJzZXhwX29mX2V4ZXJjaXNlX2V4cG9ydCIsImV4ZXJjaXNlX2RhdGFfMTU4IiwiY3VyX2V4ZXJjaXNlXzE1NiIsImFyZ18xNTkiLCJhcmcxXzE2MSIsImFyZzBfMTYwIiwicmVzMF8xNjIiLCJyZXMxXzE2MyIsImJuZHNfMTU1IiwiYXJnXzE1NyIsImJuZHNfMTU1JDAiLCJleGVyY2lzZV9leHBvcnRfb2ZfeW9qc29uIiwiY3VyX2V4ZXJjaXNlX2ZpZWxkIiwiZXhlcmNpc2VfZGF0YV9maWVsZCIsImV4ZXJjaXNlX2RhdGFfdmFsdWUiLCJjdXJfZXhlcmNpc2VfdmFsdWUiLCJ5b2pzb25fb2ZfZXhlcmNpc2VfZXhwb3J0Iiwidl9leGVyY2lzZV9kYXRhIiwidl9jdXJfZXhlcmNpc2UiLCJzZXJpYWxpemVfZXhlcmNpc2UiLCJkZXNlcmlhbGl6ZV9leGVyY2lzZSIsImRlc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCIsImVycm9yX3NvdXJjZV8wMDkiLCJwZXJjZW50YWdlX29mX3NleHAiLCJzZXhwX29mX3BlcmNlbnRhZ2UiLCJwZXJjZW50YWdlX29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJjZW50YWdlIiwicG9pbnRzX29mX3NleHAiLCJzZXhwX29mX3BvaW50cyIsInBvaW50c19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9pbnRzIiwic2NvcmVfb2Zfc2V4cCIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJzZXhwX29mX3Njb3JlIiwiYXJnMV8wMTEiLCJhcmcwXzAxMCIsInJlczBfMDEyIiwicmVzMV8wMTMiLCJzY29yZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc2NvcmUiLCJzY29yZV9vZl9wZXJjZW50IiwicGVyY2VudCIsIm1heF9wb2ludHMiLCJ0ZXN0X3Jlc3VsdHMiLCJyZXBvcnQiLCJudW1fdGVzdHMiLCJudW1fcGFzc2luZyIsInRlc3Rfc3VtbWFyeV9zdHIiLCJoaWRkZW5fYnVnX3N0YXR1cyIsInRlc3RfdmFsaWRhdGlvbl9kYXRhIiwiaGlkZGVuX2J1Z19kYXRhIiwiaGlkZGVuX2J1Z19kYXRhJDAiLCJ0ZXN0X3ZhbGlkYXRpb25fZGF0YSQwIiwidmFsaWRhdGlvbl90ZXN0X21hcCIsImhpZGRlbl9idWdfdGVzdF9tYXAiLCJmb3VuZCIsImluc3RhbmNlX3JlcG9ydHMiLCJpZCIsInN0YXR1cyIsInZhbGlkYXRpb25fdGVzdF9yZXBvcnRzIiwicmVwb3J0cyIsInN0YXR1cyQwIiwibWskMCIsImhpZGRlbl9idWdzX3N0YXRlIiwicGVyY2VudGFnZSQwIiwibnVtX3Bhc3NlZCIsInN1bW1hcnlfc3RyIiwidG90YWwiLCJtayQxIiwiaCIsInN5bnRheF9yZXN1bHRzIiwiciIsIm1rJDIiLCJ0ZXN0X3Jlc3VsdHMkMCIsInN0YXR1c2VzIiwiaGludGVkX3Jlc3VsdHMiLCJwZXJjZW50YWdlJDEiLCJzeW50YXhfcmVwb3J0IiwidGVzdF9zdW1tYXJ5X3N0ciQwIiwibWskMyIsInN0aXRjaGVkX2R5bmFtaWNzIiwib3ZlcmFsbF9zY29yZSIsImltcGxfZ3JhZGluZ19yZXBvcnQiLCJtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCIsInRlc3RfdmFsaWRhdGlvbl9yZXBvcnQiLCJ0dl9tYXgiLCJ0dl9wb2ludHMiLCJtdF9tYXgiLCJtdF9wb2ludHMiLCJpZ19tYXgiLCJpZ19wb2ludHMiLCJ0b3RhbF9wb2ludHMiLCJvdXRwdXRfaGVhZGVyIiwiREVCVUciLCJPTURfREVCVUciLCJkZWJ1ZyIsIndhcm4iLCJtc2ciLCJ3ZSIsInRyYWNrZml4IiwicmFpc2UiLCJlIiwib2ZfbGlzdCIsImwiLCJyIiwiZnNwbGl0X3JldiIsImYiLCJleGNsIiwiYWNjdSIsImwkMCIsInRsIiwicmlnaHQiLCJsZWZ0JDAiLCJ0bCQwIiwibGVmdCIsInJpZ2h0JDAiLCJsZWZ0JDIiLCJ0bCQxIiwibGVmdCQxIiwiZnNwbGl0IiwicmV2IiwiaWRfb2Zfc3RyaW5nIiwiaWRzIiwicyIsIm4iLCJvdXQiLCJzdGFydGVkIiwiaSIsImMiLCJpJDIiLCJpJDAiLCJpJDEiLCJzJDAiLCJpJDQiLCJsYXN0X3RyYWlsaW5nIiwiaSQzIiwiaHRtbGVudGl0aWVzIiwibWQiLCJiIiwiaiQxIiwiaiIsImokMCIsImokNCIsImokMiIsImokMyIsIm1pbmltYWxpemVfYmxhbmtzIiwiZiQwIiwiZWF0IiwiZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXMiLCJodG1sIiwiaHRtbCQwIiwiY3V0X29uX2NoYXJfZnJvbSIsInJlbW92ZV9wcmVmaXhfc3BhY2VzIiwiaHRtbCQyIiwicmVzIiwiYWZ0ZXJfZXEiLCJuYW1lIiwibmFtZSQwIiwiYWZ0ZXJfZXEkMCIsInJlc3QiLCJ2YWx1ZSIsIm5ld19zIiwiYSIsInJlcyQwIiwiaHRtbCQxIiwiZXh0cmFjdF9pbm5lcl9odG1sIiwicCIsImh0bWxfdm9pZF9lbGVtZW50cyIsInN5bWJvbCIsImwxIiwibDIiLCJzZWxmXzEiLCJ0aXRsZSIsInVybCIsImxuIiwibG9vc2VfY29tcGFyZSIsInQxIiwidDIiLCJ0MSQwIiwidDIkMCIsImUxIiwidGwyJDAiLCJlMiQwIiwidGwxJDAiLCJlMSQwIiwidGwyIiwiZTIiLCJ0bDEiLCJ0bDIkMSIsImUyJDEiLCJ0bDEkMSIsImUxJDEiLCJ0bDEkMiIsImMxIiwidGwyJDIiLCJjMiIsImkkNSIsInRsMSQzIiwidGl0bGUxIiwidDEkMSIsImhyZWYxIiwidGwyJDMiLCJ0aXRsZTIiLCJ0MiQxIiwiaHJlZjIiLCJpJDYiLCJpJDciLCJpJDgiLCJ0bDIkNCIsImZhbGxiYWNrMiIsIngyIiwibmFtZTIiLCJyZWZfY29udGFpbmVyMiIsInRsMSQ0IiwiZmFsbGJhY2sxIiwieDEiLCJuYW1lMSIsInJlZl9jb250YWluZXIxIiwiZTEkMiIsInRsMiQ1IiwiZTIkMiIsInRsMSQ1IiwiaSQxMSIsImkkMTIiLCJpJDkiLCJjZmYiLCJpJDEwIiwibDEkMCIsImwyJDAiLCJ0bDIkNiIsImUyJDMiLCJ0bDEkNiIsImUxJDMiLCJpJDEzIiwic2VsZl8yIiwiZW1wdHlfZXh0ZW5zaW9uIiwibm9ybWFsaXNlX21kIiwibG9vcCIsInYiLCJ0bCQyIiwidiQwIiwibG9vcCQwIiwidGwkMyIsInYkMSIsInRsJDQiLCJ2JDIiLCJ0bCQ1IiwidiQzIiwidGwkNiIsInYkNCIsInRsJDciLCJ2JDUiLCJ0bCQxMCIsInRsJDkiLCJ0bCQ4IiwidGwkMTEiLCJ0bCQxMiIsInYkNiIsInRsJDEzIiwidiQ3IiwidGwkMTQiLCJ2JDgiLCJ0bCQxNSIsInYkOSIsInRsJDE2IiwidiQxMCIsInRsJDE3IiwidiQxMSIsInRsJDE4IiwidiQxMiIsImhyZWYiLCJ0bCQxOSIsInYkMTMiLCJzZWxmXzMiLCJ2aXNpdCIsImwkMSIsImwkMiIsImwkMyIsImwkNCIsImwkNSIsImwkNiIsImwkNyIsImwkOCIsImwkOSIsImwkMTAiLCJsJDExIiwibCQxMiIsImwkMTMiLCJsJDE0IiwibCQxNSIsImwkMTYiLCJsJDE3IiwibCQxOCIsImwkMTkiLCJ0bCQyMCIsImwkMjAiLCJ0bCQyMSIsImwkMjEiLCJ0bCQyMiIsImwkMjIiLCJ0bCQyMyIsImwkMjMiLCJ0bCQyNCIsImwkMjQiLCJ0bCQyNSIsImwkMjUiLCJ0bCQyNiIsImwkMjYiLCJ0bCQyNyIsImwkMjciLCJ0bCQyOCIsImwkMjgiLCJkZWZhdWx0X2xhbmd1YWdlIiwidGV4dF9vZl9tZCIsIm1kJDAiLCJ0IiwibWQkMSIsIm1kJDIiLCJjJDAiLCJib2R5IiwiYm9keSQwIiwidCQwIiwidCQxIiwicSIsImFsdCIsIml0ZW0iLCJkZWZhdWx0X2NvZGVfc3R5bGlzdCIsImxhbmciLCJjb2RlIiwiZmlsdGVyX3RleHRfb21kX3JldiIsInJlbW92ZV9saW5rcyIsImh0bWxfYW5kX2hlYWRlcnNfb2ZfbWQiLCJyZW1vdmVfaGVhZGVyX2xpbmtzIiwib3ZlcnJpZGUiLCJwaW5kZW50IiwibmwyYnIiLCJjb2RlX3N0eWxlIiwiaWQiLCJpZHgiLCJoZWFkZXJzIiwiaW5kZW50IiwicyQxIiwiZSQwIiwiZSQxIiwicyQyIiwiaWgiLCJodG1sX29mX21kIiwibWQkMyIsIm1kJDQiLCJlJDIiLCJtZCQ1IiwiZSQzIiwicyQzIiwiaWgkMCIsImlkJDAiLCJtZCQ2IiwibWQkNyIsImUkNCIsIm1kJDgiLCJlJDUiLCJzJDQiLCJpaCQxIiwiaWQkMSIsIm1kJDkiLCJtZCQxMCIsImUkNiIsIm1kJDExIiwiZSQ3IiwicyQ1IiwiaWgkMiIsImlkJDIiLCJtZCQxMiIsIm1kJDEzIiwiZSQ4IiwibWQkMTQiLCJlJDkiLCJzJDYiLCJpaCQzIiwiaWQkMyIsIm1kJDE1IiwibWQkMTYiLCJlJDEwIiwibWQkMTciLCJlJDExIiwicyQ3IiwiaWgkNCIsImlkJDQiLCJtZCQxOCIsInMkOCIsInMkOSIsInMkMTAiLCJtZCQxOSIsInMkMTEiLCJtZCQyMCIsInMkMTIiLCJzJDE0IiwibmV3X2MiLCJsYW5nJDAiLCJzJDE1IiwibmV3X2MkMCIsInMkMTYiLCJzJDE3IiwicyQxOCIsImZhbGxiYWNrIiwidGV4dCIsInJjIiwicyQxOSIsInRpdGxlJDAiLCJocmVmJDAiLCJmYWxsYmFjayQwIiwicmMkMCIsInMkMjAiLCJ0aXRsZSQxIiwic3JjIiwidGFnbmFtZSIsImF0dHJzJDEiLCJhdHRycyQyIiwicyQyMiIsInN0cmluZ19vZl9hdHRycyIsImF0dHJzIiwiYXR0cnMkMCIsInMkMjEiLCJhdHRycyQzIiwidGFnbmFtZSQwIiwiYXR0cnMkNCIsInMkMjMiLCJzJDI0IiwicyQyNSIsInMkMjYiLCJzJDI3IiwicyQyOCIsInMkMjkiLCJzJDMwIiwidGl0bGUkMiIsInNyYyQwIiwiYWx0JDAiLCJzJDMxIiwieCIsInMkMzIiLCJzJDMzIiwicyQxMyIsImxpIiwiY3MiLCJoZWFkZXJzX29mX21kIiwic2V4cHJfb2ZfbWQiLCJ0bCQyOSIsInRsJDMwIiwiZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMiLCJtYXJrZG93bl9vZl9tZCIsImFkZF9zcGFjZXMiLCJyZWZlcmVuY2VzIiwibGlzdF9pbmRlbnQiLCJmc3RfcF9pbl9saSIsImlzX2luX2xpc3QiLCJmc3RfcF9pbl9saSQwIiwiaXNfaW5fbGlzdCQwIiwiYyQxIiwiYyQyIiwiZmlsdGVyIiwiYiQxIiwiYiQyIiwieCQwIiwiaGQiLCJjJDMiLCJmaWx0ZXIkMCIsImIkMyIsImIkNCIsImhkJDAiLCJuJDAiLCJvdXRwdXRfaW5kZW50ZWRfYmxvY2siLCJwJDAiLCJwJDEiLCJuZWVkc19uZXdsaW5lcyIsImEkMCIsImIkMCIsIm5sIiwieCQxIiwic3RyaW5nX29mX3Rva2VuIiwibiQxIiwibiQyIiwibiQzIiwibiQ0IiwibiQ1IiwibiQ2IiwibiQ3IiwibiQ4IiwibiQ5IiwibiQxMCIsIm4kMTEiLCJuJDEyIiwibiQxMyIsIm4kMTQiLCJuJDE1IiwibiQxNiIsIm4kMTciLCJuJDE4IiwibiQxOSIsIm4kMjAiLCJuJDIxIiwibiQyMiIsIm4kMjMiLCJuJDI0IiwibiQyNSIsIm4kMjYiLCJuJDI3IiwibiQyOCIsIm4kMjkiLCJuJDMwIiwibiQzMSIsIm4kMzIiLCJuJDMzIiwibyIsImxlbmd0aCIsInNwbGl0X2ZpcnN0IiwibGV4IiwicmVzdWx0Iiwid29yZCIsInN0YXJ0Iiwibl9vY2MiLCJyJDAiLCJybiIsInciLCJnZXQiLCJsZW5ndGgkMCIsInN1YiIsImFyciIsInBvcyIsImxlbiIsImxleF9iaWdhcnJheSIsIm1ha2Vfc3BhY2UiLCJzdHJpbmdfb2ZfdG9rZW5zIiwiZGVzdHJpbmdfb2ZfdG9rZW5zIiwidGxpc3QiLCJsaW1pdCIsInRsaXN0JDAiLCJ0bGlzdCQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQxMSIsInByZXZpb3VzJDEwIiwicHJldmlvdXMkMTMiLCJwcmV2aW91cyQxMiIsInByZXZpb3VzJDE1IiwicHJldmlvdXMkMTQiLCJwcmV2aW91cyQxNyIsInByZXZpb3VzJDE2IiwicHJldmlvdXMkMTkiLCJwcmV2aW91cyQxOCIsInByZXZpb3VzJDIxIiwicHJldmlvdXMkMjAiLCJwcmV2aW91cyQyMyIsInByZXZpb3VzJDIyIiwicHJldmlvdXMkMjUiLCJwcmV2aW91cyQyNCIsInByZXZpb3VzJDI3IiwicHJldmlvdXMkMjYiLCJwcmV2aW91cyQyOSIsInByZXZpb3VzJDI4IiwicHJldmlvdXMkMzEiLCJwcmV2aW91cyQzMCIsInByZXZpb3VzJDMzIiwicHJldmlvdXMkMzIiLCJwcmV2aW91cyQzNSIsInByZXZpb3VzJDM0IiwicHJldmlvdXMkMzciLCJwcmV2aW91cyQzNiIsInByZXZpb3VzJDM5IiwicHJldmlvdXMkMzgiLCJwcmV2aW91cyQ0MSIsInByZXZpb3VzJDQwIiwicHJldmlvdXMkNDMiLCJwcmV2aW91cyQ0MiIsInByZXZpb3VzJDkiLCJwcmV2aW91cyQ0NCIsInByZXZpb3VzJDQ4IiwicHJldmlvdXMkNDkiLCJwcmV2aW91cyQ3IiwicHJldmlvdXMkNiIsInByZXZpb3VzJDgiLCJwcmV2aW91cyQ1IiwicHJldmlvdXMkNCIsInByZXZpb3VzJDMiLCJwcmV2aW91cyQyIiwicHJldmlvdXMkMCIsInByZXZpb3VzJDEiLCJwcmV2aW91cyQ0NyIsInByZXZpb3VzJDQ2IiwicHJldmlvdXMkNDUiLCJpbmRlbnRzJDEiLCJpbmRlbnRzJDAiLCJpbmRlbnRzJDIiLCJpbmRlbnRzIiwiZGVmYXVsdF9sYW5nIiwiZXh0ZW5zaW9ucyIsImdoX3VlbXBoX29yX2JvbGRfc3R5bGUiLCJibGluZF9odG1sIiwic3RyaWN0X2h0bWwiLCJ3YXJuX2Vycm9yIiwiaHRtbGNvZGVzX3NldCIsImlubGluZV9odG1sdGFnc19zZXQiLCJub3RpbmJvZHl0YWdzIiwiaHRtbHRhZ3Nfc2V0IiwiZml4IiwiYWNjdSQwIiwidGwkMzEiLCJ0bCQzMiIsInRsJDMzIiwidGwkMzQiLCJ0bCQzNSIsInRsJDM2IiwidGwkMzciLCJ0bCQzOCIsInRsJDM5IiwidGwkNDAiLCJ0bCQ0MSIsInRsJDQyIiwidGwkNDMiLCJ0bCQ0NCIsInRsJDQ1IiwidGwkNDYiLCJ0bCQ0NyIsInRsJDQ4IiwidGwkNDkiLCJ0bCQ1MCIsInRsJDUxIiwidGwkNTIiLCJ0bCQ1MyIsInRsJDU0IiwidGwkNTUiLCJ0bCQ1NiIsInRsJDU3IiwidGwkNTgiLCJ0bCQ1OSIsInRsJDYwIiwidGwkNjEiLCJ0bCQ2MiIsInRsJDYzIiwidGwkNjQiLCJ0bCQ2NSIsInRsJDY2IiwidGwkNjciLCJ0bCQ2OCIsInRsJDY5IiwibiQzNCIsInRsJDcwIiwidGwkNzEiLCJuJDM1IiwidGwkNzIiLCJ0bCQ3MyIsIm4kMzYiLCJ0bCQ3NCIsInRsJDc1IiwibiQzNyIsInRsJDc2IiwidGwkNzciLCJuJDM4IiwidGwkNzgiLCJ0bCQ3OSIsIm4kMzkiLCJ0bCQ4MCIsInRsJDgxIiwibiQ0MCIsInRsJDgyIiwidGwkODMiLCJiJDUiLCJuJDQxIiwidGwkODQiLCJ0bCQ4NSIsImIkNiIsIm4kNDIiLCJ0bCQ4NiIsInRsJDg3IiwiYiQ3IiwibiQ0MyIsInRsJDg4IiwidGwkODkiLCJiJDgiLCJuJDQ0IiwidGwkOTAiLCJ0bCQ5MSIsImIkOSIsIm4kNDUiLCJ0bCQ5MiIsInRsJDkzIiwiYiQxMCIsIm4kNDYiLCJ0bCQ5NCIsInRsJDk1IiwiYiQxMSIsIm4kNDciLCJ0bCQ5NiIsInRsJDk3IiwiYiQxMiIsIm4kNDgiLCJ0bCQ5OCIsInRsJDk5IiwiYiQxMyIsIm4kNDkiLCJ0bCQxMDAiLCJ0bCQxMDEiLCJiJDE0IiwibiQ1MCIsInRsJDEwMiIsInRsJDEwMyIsImIkMTUiLCJuJDUxIiwidGwkMTA0IiwidGwkMTA1IiwiYiQxNiIsIm4kNTIiLCJ0bCQxMDYiLCJ0bCQxMDciLCJiJDE3IiwibiQ1MyIsInRsJDEwOCIsInRsJDEwOSIsImIkMTgiLCJuJDU0IiwidGwkMTEwIiwidGwkMTExIiwiYiQxOSIsIm4kNTUiLCJ0bCQxMTIiLCJ0bCQxMTMiLCJiJDIwIiwibiQ1NiIsInRsJDExNCIsInRsJDExNSIsImIkMjEiLCJuJDU3IiwidGwkMTE2IiwidGwkMTE3IiwiYiQyMiIsIm4kNTgiLCJ0bCQxMTgiLCJ0bCQxMTkiLCJiJDIzIiwibiQ1OSIsInRsJDEyMCIsInRsJDEyMSIsImIkMjQiLCJuJDYwIiwidGwkMTIyIiwidGwkMTIzIiwiYiQyNSIsIm4kNjEiLCJ0bCQxMjQiLCJ0bCQxMjUiLCJiJDI2IiwibiQ2MiIsInRsJDEyNiIsInRsJDEyNyIsImIkMjciLCJuJDYzIiwidGwkMTI4IiwidGwkMTI5IiwiYiQyOCIsIm4kNjQiLCJ0bCQxMzAiLCJ0bCQxMzEiLCJiJDI5IiwibiQ2NSIsInRsJDEzMiIsInRsJDEzMyIsImIkMzAiLCJuJDY2IiwidGwkMTM0IiwidGwkMTM1IiwiYiQzMSIsIm4kNjciLCJ0bCQxMzYiLCJ0bCQxMzciLCJiJDMyIiwibiQ2OCIsInRsJDEzOCIsInRsJDEzOSIsImIkMzMiLCJyZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyIsIm1ha2VfcGFyYWdyYXBocyIsImNwJDAiLCJjcCQ1IiwiYWNjdSQxNyIsImIxIiwiYjIiLCJjbGVhbl9wYXJhZ3JhcGhzIiwiYXNzZXJ0X3dlbGxfZm9ybWVkIiwiZXh0cmFjdF9mYWxsYmFjayIsIm1haW5fbG9vcCIsInJlbWFpbnMiLCJyJDEiLCJhY2N1JDIiLCJyJDIiLCJtIiwiYWNjdSQzIiwidW5pbmRlbnRfcmV2IiwibGV4ZW1lcyIsImNsJDAiLCJ5IiwidW5pbmRlbnQiLCJzbmQiLCJmc3QiLCJpc19ibGFuayIsInNlbXBoX29yX2JvbGQiLCJzbV91ZW1waF9vcl9ib2xkIiwiZ2hfdWVtcGhfb3JfYm9sZCIsInVlbXBoX29yX2JvbGQiLCJlYXRfYmxhbmsiLCJzZXRleHRfdGl0bGUiLCJkZXRlY3RfYmFsYW5jZWRfYnFzIiwiciQzIiwiciQ0IiwiciQ1IiwiciQ2IiwiciQ3IiwiYmwiLCJibCQwIiwidGFnX21heWJlX2gxIiwidGFnX21heWJlX2gyIiwidGFnX21kIiwic2VsZl80IiwidGFnX3NldGV4dCIsInBsJDAiLCJybGVmdCQwIiwicmlnaHQkMSIsInJpZ2h0JDIiLCJybGVmdCIsImhyX20iLCJocl9zIiwiaHIiLCJiY29kZSIsImRlZmF1bHRfbGFuZyQwIiwiYWNjdSQxIiwiY2IiLCJjb2RlJDAiLCJjb2RlJDIiLCJjb2RlJDMiLCJjb2RlJDEiLCJjbGVhbl9iY29kZSIsImNvZGUkNCIsInJlYWRfdW50aWxfZ3QiLCJicSIsIm5vX25sIiwiYWNjdSQxOSIsImFjY3UkMjAiLCJ4JDIiLCJyZWFkX3VudGlsX2x0IiwiYWNjdSQxNiIsInJlYWRfdW50aWxfY3BhcmVudGgiLCJyZWFkX3VudGlsX29wYXJlbnRoIiwicmVhZF91bnRpbF9kcSIsInJlYWRfdW50aWxfcSIsInJlYWRfdW50aWxfb2JyYWNrZXQiLCJyZWFkX3VudGlsX2NicmFja2V0IiwicmVhZF91bnRpbF9zcGFjZSIsInJlYWRfdW50aWxfbmV3bGluZSIsInJlYWRfdGl0bGUiLCJoIiwiaCQwIiwibWF5YmVfZXh0ZW5zaW9uIiwibnAiLCJuciIsImsiLCJlbWFpbHN0eWxlX3F1b3RpbmciLCJibG9jayQwIiwiY2wkMiIsImJsb2NrIiwibWF5YmVfcmVmZXJlbmNlIiwibWF5YmVfZGVmIiwicmVtYWlucyQwIiwicmVtYWlucyQxIiwicmVtYWlucyQyIiwidXJsJDAiLCJ1cmwkMSIsImJsYW5rIiwiZmxhZyIsInJlbWFpbnMkMyIsInRleHQkMCIsImZhbGxiYWNrJDEiLCJtYXliZV9saW5rIiwicmVhZF91cmwiLCJyX2NwIiwibF9jcCIsInJfZHEiLCJsX2RxIiwicmVzdCQwIiwiaGFzX3BhcmFncmFwaHMiLCJwYXJzZV9saXN0IiwiZW5kX29mX2l0ZW0iLCJzZWxmXzYiLCJzZWxmXzUiLCJibG9jayQ1IiwicmVzdCQ2IiwiYmxvY2skNiIsInJlc3QkNyIsImJsb2NrJDciLCJyZXN0JDUiLCJibG9jayQ4IiwicmVzdCQ5IiwiYmxvY2skOSIsInJlc3QkMTAiLCJibG9jayQxMCIsInJlc3QkOCIsInJlc3QkMSIsImJsb2NrJDEiLCJibG9jayQyIiwicmVzdCQzIiwiYmxvY2skMyIsInJlc3QkNCIsImJsb2NrJDQiLCJyZXN0JDIiLCJyZXZfdG9fdCIsImFkZCIsInN1Ymxpc3QiLCJpdGVtcyIsIml0ZW0kMCIsIm1ha2VfdXAiLCJpdGVtcyQwIiwibGlzdF9pdGVtcyIsImluZGVudHMkMyIsImluZGVudHMkNCIsIm5ld19pdGVtJDAiLCJwJDIiLCJpdGVtcyQ1IiwiaXRlbXMkMyIsIml0ZW1zJDQiLCJuZXdfaXRlbSQxIiwicCQzIiwiaXRlbXMkOCIsIml0ZW1zJDYiLCJzdWJsaXN0JDAiLCJpdGVtcyQ3IiwibmV3X2l0ZW0iLCJpdGVtcyQxIiwiaXRlbXMkMiIsIm5ld19pdGVtJDIiLCJwJDQiLCJpdGVtcyQ5IiwiaXRlbXMkMTAiLCJuZXdfaXRlbSQzIiwicCQ1IiwiaXRlbXMkMTEiLCJzdWJsaXN0JDEiLCJpdGVtcyQxMiIsIml0ZW1zJDEzIiwiaW5kZW50cyQ1IiwibmV3X2l0ZW0kNCIsInAkNiIsIml0ZW1zJDE0Iiwic3VibGlzdCQyIiwiaXRlbXMkMTUiLCJpdGVtcyQxNiIsImluZGVudHMkNiIsInN0cmluZ19vZl9pdGVtcyIsImluZGVudCQwIiwicnAiLCJpY29kZSIsInNlbGZfNyIsImR1bW15X3RhZyIsInNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSIsInNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbiIsIm5ld2xpbmVzIiwibWF5YmVfYXV0b2VtYWlsIiwiZG9tYWluIiwiZW1haWwiLCJpc19oZXgiLCJtZWRpYXR5cGV0ZXh0b21kIiwibWFpbl9pbXBsX3JldiIsInByZXZpb3VzJDUwIiwicHJldmlvdXMkNTEiLCJsZXhlbWVzJDAiLCJsZXhlbWVzJDEiLCJsZXhlbWVzJDIiLCJwcmV2aW91cyQ1MiIsImxleGVtZXMkMyIsInByZXZpb3VzJDUzIiwibGV4ZW1lcyQ0IiwicHJldmlvdXMkNTQiLCJ3JDAiLCJsZXhlbWVzJDUiLCJwcmV2aW91cyQ1NSIsImxleGVtZXMkNiIsInByZXZpb3VzJDU2IiwiciQ4IiwibGV4ZW1lcyQ3IiwicHJldmlvdXMkNTciLCJyJDkiLCJ3JDEiLCJsZXhlbWVzJDgiLCJyJDEzIiwicHJldmlvdXMkNTgiLCJyJDEwIiwibGV4ZW1lcyQ5IiwicHJldmlvdXMkNTkiLCJyJDExIiwibGV4ZW1lcyQxMCIsInByZXZpb3VzJDYwIiwiciQxMiIsImxleGVtZXMkNjEiLCJyJDExNiIsInQkMyIsImxleGVtZXMkNjIiLCJwcmV2aW91cyQxMDciLCJyJDY1IiwibGV4ZW1lcyQ2MyIsInByZXZpb3VzJDEwOCIsInIkNjYiLCJsZXhlbWVzJDY0IiwicHJldmlvdXMkMTA5IiwiciQ2NyIsImxleGVtZXMkNjUiLCJwcmV2aW91cyQxMTAiLCJyJDY4IiwibGV4ZW1lcyQ2NiIsInByZXZpb3VzJDExMSIsInIkNjkiLCJsZXhlbWVzJDY3IiwicHJldmlvdXMkMTEyIiwiciQ3MCIsImxleGVtZXMkNjgiLCJwcmV2aW91cyQxMTMiLCJyJDcxIiwibGV4ZW1lcyQ2OSIsInByZXZpb3VzJDExNCIsInIkNzIiLCJsZXhlbWVzJDcwIiwicHJldmlvdXMkMTE1IiwiciQ3MyIsImxleGVtZXMkNzEiLCJwcmV2aW91cyQxMTYiLCJyJDc0IiwibGV4ZW1lcyQ3MiIsInByZXZpb3VzJDExNyIsInIkNzUiLCJsZXhlbWVzJDczIiwicHJldmlvdXMkMTE4IiwiciQ3NiIsImxleGVtZXMkNzQiLCJwcmV2aW91cyQxMTkiLCJyJDc3IiwibGV4ZW1lcyQ3NSIsInByZXZpb3VzJDEyMCIsInIkNzgiLCJsZXhlbWVzJDc2IiwicHJldmlvdXMkMTIxIiwiciQ3OSIsImxleGVtZXMkNzciLCJwcmV2aW91cyQxMjIiLCJyJDgwIiwibGV4ZW1lcyQ3OCIsInByZXZpb3VzJDEyMyIsInIkODEiLCJsZXhlbWVzJDc5IiwiciQ4MiIsImxleGVtZXMkODAiLCJyJDgzIiwibGV4ZW1lcyQ4MSIsInIkODQiLCJsZXhlbWVzJDgyIiwiciQ4NSIsImxleGVtZXMkODMiLCJyJDg2IiwibGV4ZW1lcyQ4NCIsInIkODciLCJsZXhlbWVzJDg1IiwiciQ4OCIsImxleGVtZXMkODYiLCJyJDg5IiwibGV4ZW1lcyQ4NyIsInIkOTAiLCJsZXhlbWVzJDg4IiwiciQ5MSIsImxleGVtZXMkODkiLCJyJDkyIiwibGV4ZW1lcyQ5MCIsInIkOTMiLCJsZXhlbWVzJDkxIiwiciQ5NCIsImxleGVtZXMkOTIiLCJyJDk1IiwibGV4ZW1lcyQ5MyIsInIkOTYiLCJsZXhlbWVzJDk0IiwiciQ5NyIsImxleGVtZXMkOTUiLCJyJDk4IiwibGV4ZW1lcyQ5NiIsInIkOTkiLCJsZXhlbWVzJDk3IiwiciQxMDAiLCJsZXhlbWVzJDk4IiwiciQxMDEiLCJsZXhlbWVzJDk5IiwiciQxMDIiLCJsZXhlbWVzJDEwMCIsInIkMTAzIiwibGV4ZW1lcyQxMDEiLCJyJDEwNCIsImxleGVtZXMkMTAyIiwiciQxMDUiLCJsZXhlbWVzJDEwMyIsInIkMTA2IiwibGV4ZW1lcyQxMDQiLCJyJDEwNyIsImxleGVtZXMkMTA1IiwiciQxMDgiLCJsZXhlbWVzJDEwNiIsInIkMTA5IiwibGV4ZW1lcyQxMDciLCJyJDExMCIsImxleGVtZXMkMTA4IiwiciQxMTEiLCJsZXhlbWVzJDEwOSIsInIkMTEyIiwibGV4ZW1lcyQxMTAiLCJyJDExMyIsImxleGVtZXMkMTExIiwiciQxMTQiLCJsZXhlbWVzJDExMiIsInIkMTE1IiwiciQ2NCIsImxleGVtZXMkMTEzIiwibGV4ZW1lcyQxMTQiLCJwcmV2aW91cyQxMjQiLCJyJDExNyIsInByZXZpb3VzJDEyNSIsInIkMTE4IiwibGV4ZW1lcyQxMTkiLCJnIiwibGV4ZW1lcyQxMjMiLCJjb21tZW50cyIsInIkMTMyIiwibGV4ZW1lcyQxMjQiLCJwcmV2aW91cyQxMzIiLCJyJDEzMyIsInByZXZpb3VzJDEzMyIsInIkMTM0IiwidyQ1IiwidyQ2IiwibGV4ZW1lcyQxMjUiLCJnJDAiLCJsZXhlbWVzJDEyNiIsInIkMTM2IiwibGV4ZW1lcyQxMjciLCJyJDEzNyIsInIkMTM1IiwibGV4ZW1lcyQxMjgiLCJyJDEzOCIsImxleGVtZXMkMTI5IiwibGV4ZW1lcyQxMzAiLCJwcmV2aW91cyQxMzQiLCJyJDEzOSIsImxleGVtZXMkMTMxIiwicHJldmlvdXMkMTM1IiwiciQxNDAiLCJsZXhlbWVzJDEzMiIsInByZXZpb3VzJDEzNiIsInIkMTQxIiwicHJldmlvdXMkMTM3IiwiciQxNDIiLCJsZXhlbWVzJDEzMyIsImxleGVtZXMkMTM0IiwieCQzIiwicHJldmlvdXMkMTM4IiwiciQxNDMiLCJtYWluX2ltcGwiLCJsZXhlbWVzJDEzNSIsInByZXZpb3VzJDEzOSIsInIkMTQ0IiwicHJldmlvdXMkMTQwIiwiciQxNDUiLCJsZXhlbWVzJDEzNiIsInIkMTQ2IiwibGV4ZW1lcyQxMzciLCJyJDE0NyIsImxleGVtZXMkMTM4IiwicHJldmlvdXMkMTQxIiwiciQxNDgiLCJsZXhlbWVzJDEzOSIsInByZXZpb3VzJDE0MiIsInIkMTQ5IiwibGV4ZW1lcyQxNDAiLCJwcmV2aW91cyQxNDMiLCJyJDE1MCIsImxleGVtZXMkMTQxIiwiciQxNTEiLCJsZXhlbWVzJDE0MiIsImxleGVtZXMkMTQzIiwieCQ0IiwicHJldmlvdXMkMTQ0IiwiciQxNTIiLCJwcmV2aW91cyQxNDUiLCJyJDE1MyIsImxleGVtZXMkMTQ0IiwicHJldmlvdXMkMTQ2IiwiciQxNTQiLCJwcmV2aW91cyQxNDciLCJyJDE1NSIsImxleGVtZXMkMTQ1IiwidyQ3IiwicHJldmlvdXMkMTQ4IiwiciQxNTYiLCJsZXhlbWVzJDE0NiIsImxleGVtZXMkMTQ3IiwicHJldmlvdXMkMTQ5IiwiciQxNTciLCJsZXhlbWVzJDU4IiwibGV4ZW1lcyQ1OSIsInByZXZpb3VzJDEwNCIsInIkNjEiLCJsZXhlbWVzJDYwIiwicHJldmlvdXMkMTA1IiwiciQ2MiIsInByZXZpb3VzJDEwNiIsInIkNjMiLCJ3JDQiLCJsZXhlbWVzJDEyMCIsInVybCQyIiwibGV4ZW1lcyQxMjIiLCJwcmV2aW91cyQxMzAiLCJyJDEzMCIsInByZXZpb3VzJDEzMSIsInIkMTMxIiwibGV4ZW1lcyQxMjEiLCJ1cmwkMyIsInIkMTI4IiwiciQxMjkiLCJsZXhlbWVzJDExNSIsImxleGVtZXMkMTE2IiwiciQxMjEiLCJ0bHMiLCJsZXhlbWVzJDExNyIsInByZXZpb3VzJDEyNiIsInIkMTE5IiwicHJldmlvdXMkMTI3IiwiciQxMjAiLCJudGwkMCIsIm50bCQxIiwiYWx0JDIiLCJhbHQkMSIsInIkMTI3IiwibnRsIiwicGF0aF90aXRsZSIsInBhdGgiLCJub3RoaW5nIiwiciQxMjUiLCJwYXRoJDAiLCJ0aXRsZSQzIiwiciQxMjQiLCJyJDEyNiIsImxleGVtZXMkMTE4IiwicHJldmlvdXMkMTI4IiwiciQxMjIiLCJwcmV2aW91cyQxMjkiLCJyJDEyMyIsInNwIiwibGV4ZW1lcyQzNyIsInByZXZpb3VzJDg4IiwiciQ0MyIsImxleGVtZXMkMzgiLCJwcmV2aW91cyQ4OSIsInIkNDQiLCJsZXhlbWVzJDQ1IiwicHJldmlvdXMkOTUiLCJsZXhlbWVzJDQ3IiwibGV4ZW1lcyQ1MSIsInIkNTYiLCJsZXhlbWVzJDUyIiwicHJldmlvdXMkOTkiLCJsZXhlbWVzJDQ4IiwiciQ1MiIsImxleGVtZXMkNDkiLCJwcmV2aW91cyQ5NiIsInIkNTMiLCJsZXhlbWVzJDUwIiwicHJldmlvdXMkOTciLCJyJDU0IiwicHJldmlvdXMkOTgiLCJyJDU1IiwibGV4ZW1lcyQ1MyIsInR0bCIsImxleGVtZXMkNTQiLCJwcmV2aW91cyQxMDAiLCJyJDU3IiwicHJldmlvdXMkMTAxIiwiciQ1OCIsImxleGVtZXMkNTUiLCJwcmV2aW91cyQxMDIiLCJyJDU5IiwibGV4ZW1lcyQ1NiIsInByZXZpb3VzJDEwMyIsImxleGVtZXMkNTciLCJyJDYwIiwibGV4ZW1lcyQzOSIsImxleGVtZXMkNDIiLCJyJDQ4IiwibGV4ZW1lcyQ0MyIsInByZXZpb3VzJDkyIiwibGV4ZW1lcyQ0NCIsInByZXZpb3VzJDkzIiwiciQ0OSIsInByZXZpb3VzJDk0IiwiciQ1MCIsImxleGVtZXMkNDAiLCJyJDQ1IiwibGV4ZW1lcyQ0MSIsInByZXZpb3VzJDkwIiwiciQ0NiIsInByZXZpb3VzJDkxIiwiciQ0NyIsImZvbyQxIiwibGV4ZW1lcyQ0NiIsImZvbyQwIiwiZm9vIiwibmV3X3IiLCJyJDUxIiwibGV4ZW1lcyQzNSIsInIkNDEiLCJsZXhlbWVzJDM2IiwicHJldmlvdXMkODciLCJyJDQyIiwidGsiLCJsZXhlbWVzJDMwIiwibGV4ZW1lcyQzMSIsInByZXZpb3VzJDgxIiwiciQzNSIsInByZXZpb3VzJDgyIiwiciQzNiIsImxleGVtZXMkMzIiLCJsZXhlbWVzJDMzIiwicHJldmlvdXMkODMiLCJyJDM3IiwicHJldmlvdXMkODQiLCJyJDM4IiwibGV4ZW1lcyQzNCIsInByZXZpb3VzJDg1IiwiciQzOSIsInByZXZpb3VzJDg2IiwiciQ0MCIsImxleGVtZXMkMjgiLCJwcmV2aW91cyQ3OSIsInIkMzMiLCJ0a3MiLCJ0azAiLCJ0ZXh0JDEiLCJsZXhlbWVzJDI5IiwicHJldmlvdXMkODAiLCJyJDM0IiwibGV4ZW1lcyQyNSIsImxleGVtZXMkMjYiLCJwcmV2aW91cyQ3NiIsInIkMzAiLCJsZXhlbWVzJDI3IiwicHJldmlvdXMkNzciLCJyJDMxIiwicHJldmlvdXMkNzgiLCJyJDMyIiwibGV4ZW1lcyQyMCIsImxleGVtZXMkMjEiLCJwcmV2aW91cyQ3MSIsInIkMjUiLCJwcmV2aW91cyQ3MiIsInIkMjYiLCJsZXhlbWVzJDIyIiwibGV4ZW1lcyQyMyIsInByZXZpb3VzJDczIiwiciQyNyIsInByZXZpb3VzJDc0IiwiciQyOCIsImxleGVtZXMkMjQiLCJwcmV2aW91cyQ3NSIsInIkMjkiLCJsZXhlbWVzJDExIiwidyQyIiwiaHRtbF9zdHVmZiIsInRhZ25hbWV0b3AiLCJtZF9vZl9pbnRlcm1fbGlzdCIsIm1kX29mX2ludGVybV9saXN0JDAiLCJzdHJpbmdfb2ZfdGFnc3RhdHVzIiwidGFnc3RhdHVzIiwidG9rZW5zIiwiYm9keSQxIiwidGFnc3RhdHVzJDAiLCJ0b2tlbnMkMCIsInN0cmluZ19vZl90YWdzdGF0dXMkMCIsInQkNSIsInRva2VucyQ1IiwiYm9keSQ1IiwidG9rZW5zJDE5IiwiYm9keSQ3IiwidGFnc3RhdHVzJDEiLCJ0b2tlbnMkMjAiLCJib2R5JDYiLCJ0b2tlbnMkMjEiLCJ0JDIiLCJib2R5JDgiLCJ0b2tlbnMkMjIiLCJ0b2tlbnMkMjMiLCJ0JDQiLCJ0b2tlbnMkMjQiLCJib2R5JDkiLCJ0b2tlbnMkMjUiLCJ0YWdzdGF0dXMkMiIsInRhZ25hbWUkMSIsImJvZHkkMTAiLCJib2R5JDExIiwidG9rZW5zJDI2IiwiYm9keSQxMiIsInRva2VucyQyNyIsInRva2VucyQyOCIsInRva2VucyQ2IiwidG9rZW5zJDciLCJ0b2tlbnMkOCIsInRva2VucyQxMCIsInRva2VucyQ5IiwidG9rZW5zJDExIiwiYXR0cmlidXRlbmFtZSIsInRva2VucyQxMiIsImF0dHJpYnV0ZW5hbWUkMCIsInRva2VucyQxMyIsInRva2VucyQxNCIsImF0X3ZhbCIsInRva2VucyQxNSIsInRva2VucyQxNiIsImF0X3ZhbCQwIiwidG9rZW5zJDE3IiwidG9rZW5zJDE4IiwiYXR0cnMkNSIsInRva2VucyQzIiwidG9rZW5zJDQiLCJib2R5JDQiLCJib2R5JDMiLCJ0b2tlbnMkMSIsInRva2VucyQyIiwidGFnIiwidGFnJDAiLCJib2R5JDIiLCJsZXhlbWVzJDE1IiwiciQxNyIsInByZXZpb3VzJDY0IiwiciQxOCIsImxleGVtZXMkMTYiLCJwcmV2aW91cyQ2NSIsInIkMTkiLCJwcmV2aW91cyQ2NiIsInIkMjAiLCJsZXhlbWVzJDE3IiwidyQzIiwiaHRtbF9zdHVmZiQwIiwidGFnbmFtZXRvcCQwIiwibGV4ZW1lcyQxOSIsInByZXZpb3VzJDY5IiwiciQyMyIsInByZXZpb3VzJDcwIiwiciQyNCIsImZfYSIsImFkZF90b2tlbl90b19ib2R5IiwidCQ2IiwiYWRkX3Rva2VuX3RvX2JvZHkkMCIsImRlbGltaXRlciIsImJlZm9yZSIsInRhZ25hbWUkMiIsImxleGVtZXMkMTgiLCJoJDEiLCJwcmV2aW91cyQ2NyIsInIkMjEiLCJwcmV2aW91cyQ2OCIsInIkMjIiLCJsZXhlbWVzJDEyIiwibGV4ZW1lcyQxMyIsInByZXZpb3VzJDYxIiwiciQxNCIsImxleGVtZXMkMTQiLCJwcmV2aW91cyQ2MiIsInIkMTUiLCJwcmV2aW91cyQ2MyIsInIkMTYiLCJtYWluX2xvb3BfcmV2IiwibWFpbl9wYXJzZSIsInBhcnNlIiwiZGVmYXVsdF9wYXJzZSIsImQiLCJ3YXJuaW5nIiwibGV4X2Zyb21faW5jaGFubmVsIiwiaWMiLCJpY19jb250ZW50IiwidG9fc3RyaW5nIiwicHAiLCJhdHRyaWJ1dGVzIiwibm9kZW5hbWUiLCJvZl9pbnB1dCIsIm9mX3N0cmluZyIsIm9mX2JpZ2FycmF5Iiwic2V0X2RlZmF1bHRfbGFuZyIsInQkNyIsInQkOCIsInQkOSIsInQkMTAiLCJ0JDExIiwidCQxMiIsInQkMTMiLCJmaW5kX3N0YXJ0JDAiLCJsZXZlbCIsIm51bWJlciIsInN1YnNlY3Rpb25zIiwiZGVhbF93aXRoX2hlYWRlciIsImZpbmRfc3RhcnQiLCJoX2xldmVsIiwic3Vic2VjdGlvbnMkMCIsInN1YnNlY3Rpb25zJDEiLCJtYWtlX3RvYyQwIiwibWluX2xldmVsIiwibWF4X2xldmVsIiwidG9jX2VudHJ5IiwibWFrZV90b2MiLCJzdWJfdG9jIiwidG9jIiwic3ViX3RvYyQwIiwidG9jJDAiLCJkZXB0aCIsImhlYWRlcnMkMCJdLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0cmZ0aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL3ZpcnR1YWxkb20uY29tcGlsZWQuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdGh1bmsuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vaG9va3MuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK29iai5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvYnVpbHRpbi8raWVlZV83NTQuanMiLCIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rZmFpbC5qcyIsIi9idWlsdGluLytzdGRsaWIuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytiaWdhcnJheS5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYXNlX2ludGVybmFsaGFzaF90eXBlcy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3VuaXguanMiLCIvYnVpbHRpbi8rZnMuanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytzeW5jLmpzIiwiL2J1aWx0aW4vK25hdC5qcyIsIi9idWlsdGluLytmc19ub2RlLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2VfYmlnc3RyaW5nL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaWdzdHJpbmdhZi9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3QvcnVudGltZS5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9idWlsdGluLytibGFrZTIuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK2VmZmVjdC5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rcnVudGltZV9ldmVudHMuanMiLCIvYnVpbHRpbi8renN0ZC5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3BhcnNpbmcuanMiLCIvYnVpbHRpbi8rc3RyLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGVhcF9ibG9jay9ydW50aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2phdmFzY3JpcHRfcHJvZmlsaW5nL3J1bnRpbWUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdGltZV9ub3cvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VpdGhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zeXMubWwuaW4iLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3R5cGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYXRvbWljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbExhenkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9ib29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYnl0ZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbWFyc2hhbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGV4aW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3BhcnNpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zdGFjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbXV0ZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2VtYXBob3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2RvbWFpbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2R5bmFycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9wcmludGV4Yy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvaW5fY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9vdXRfY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9kaWdlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYmlnYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2hhc2h0YmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvd2Vhay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2NhbmYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FsbGJhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FtbGludGVybmFsTW9kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VwaGVtZXJvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIwL3NleHBfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnZfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYjAvc2V4cF9jb252X2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIwL3NleHBfY29udl9yZWNvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9nbG9iYWxpemUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9wb2x5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ltcG9ydDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbnQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc3lzMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NoYXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbGlzdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9oYXNoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHB4X2NvbXBhcmVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHB4X2hhc2hfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3dvcmRfc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3ByZXR0eV9wcmludGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZXhuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvd2l0aF9yZXR1cm4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9mbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL21vbmFkX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9tb25hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FwcGxpY2F0aXZlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29tcGFyYXRvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2VpdGhlcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9maWVsZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0cmluZzAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9saXN0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NvbnRhaW5lcl9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29udGFpbmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW5kZXhlZF9jb250YWluZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9yYW5kb21fcmVwci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5X3Blcm11dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbnZhcmlhbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NpZ24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2hhc2hhYmxlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pZGVudGlmaWFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS91bml0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2JpbmFyeV9zZWFyY2gubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iaW5hcnlfc2VhcmNoYWJsZV9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvYmluYXJ5X3NlYXJjaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ieXRlczAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ibGl0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2VxdWVuY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zZXhwYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb2JqX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvdW5pZm9ybV9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2Zsb2F0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ieXRlc190ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0YWdlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaGV4X2xleGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50X2NvbnZlcnNpb25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcG93X292ZXJmbG93X2JvdW5kcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludF9tYXRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcG9wY291bnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zaWduLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3B0aW9uX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NpZ25fb3JfbmFuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWF5YmVfYm91bmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9tYXBfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ub3RoaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbGlua2VkX3F1ZXVlMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2xpbmtlZF9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50NjNfZW11bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludDMyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50NjMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9oYXNodGJsX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9hdmx0cmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYWNrdHJhY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvc3RkbGliMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbG9uZ2lkZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL3BwcmludGFzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF81MDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNTAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDJfNTAxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDFfNTAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAxXzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzUwMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDE0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxNF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxM180MTQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTNfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTJfNDEzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEyXzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDExXzQxMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMV80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMF80MTEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTBfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDlfNDEwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA5XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA4XzQwOS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwN180MDgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDdfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDZfNDA3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA2XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA1XzQwNi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNV80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNF80MDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDRfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDNfNDA0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAzXzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAyXzQwMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2tleXdvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC9zdGRsaWIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvYXN0X2hlbHBlcl9saXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvdmVyc2lvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC93YXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvYXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvbG9jYXRpb25fZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwtY29tcGlsZXItbGlicy9zaGFkb3cvb2NhbWxfc2hhZG93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9wcmludF9kaWZmL3BweGxpYl9wcmludF9kaWZmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9kZXJpdmVycy9wcHhfZGVyaXZlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3RyYXZlcnNlX2J1aWx0aW5zL3BweGxpYl90cmF2ZXJzZV9idWlsdGlucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc3RkcHB4L3N0ZHBweC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXJfZ2VuZXJhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9sb2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2xvbmdpZGVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2NhbGxlcl9pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc3BlbGxjaGVjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RfcGF0dGVybl9nZW5lcmF0ZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hdHRyaWJ1dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2NvZGVfcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvZXhwYW5zaW9uX2NvbnRleHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF90cmF2ZXJzZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc2tpcF9oYXNoX2JhbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9jb2RlX21hdGNoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2V4dGVuc2lvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvY29udGV4dF9mcmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9yZWNvbmNpbGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3F1b3Rlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbWVybGluX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2xvY2F0aW9uX2NoZWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9kcml2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2lnbm9yZV91bnVzZWRfd2FybmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvZGVyaXZpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2V4cGFuc2lvbl9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9wcHhsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL2F0dHJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF95b2pzb25fY29udi9leHBhbmRlci9sYWJlbF93aXRoX25hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL3BweF95b2pzb25fY29udl9leHBhbmRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC1jb21waWxlci9ydW50aW1lL2pzb29fcnVudGltZV9fLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzX29mX29jYW1sX18ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2RvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC90eXBlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2RvbV9odG1sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2Zvcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwveG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvd29ya2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL3dlYlNvY2tldHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvd2ViR0wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcmVnZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL3VybC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9zeXNfanMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcmVzaXplT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcGVyZm9ybWFuY2VPYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9tdXRhdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvanNvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9jU1MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvZG9tX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9kb21fc3ZnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2V2ZW50U291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2ZpcmVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvZ2VvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW50ZXJzZWN0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW50bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi90YWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9wcm9taXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2V6anNfbWluL2xvZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9iaWdJbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvZXpqc19taW4vZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2V6anNfaWRiL2V6anNfaWRiLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3N0ZGlvL2luX2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc3RkaW8vb3V0X2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3NleHBfY29udi9ydW50aW1lLWxpYi9wcHhfc2V4cF9jb252X2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZW51bWVyYXRlL3J1bnRpbWUtbGliL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9hc3NlcnQvcnVudGltZS1saWIvcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfYmVuY2gvcnVudGltZS1saWIvYmVuY2htYXJrX2FjY3VtdWxhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWQ1L21kNV9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2hhcGUvYmluX3NoYXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3N0YWJsZV93aXRuZXNzL3N0YWJsZV93aXRuZXNzL3N0YWJsZV93aXRuZXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC9uYXQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L3dyaXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L3JlYWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC90eXBlX2NsYXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3QvdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC9ibG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9pbmxpbmVfdGVzdC9jb25maWcvaW5saW5lX3Rlc3RfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3RpbWVfbm93L3RpbWVfbm93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9pbmxpbmVfdGVzdC9ydW50aW1lLWxpYi9wcHhfaW5saW5lX3Rlc3RfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9tb2R1bGVfdGltZXIvcnVudGltZS9wcHhfbW9kdWxlX3RpbWVyX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC92YXJpYW50X2FuZF9yZWNvcmRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi90eXBlcmVwL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi90eXBlcmVwL3R5cGVyZXBfb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZV9nZW5lcmljX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC90eXBlX2dlbmVyaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC9tYWtlX3R5cGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZV9hYnN0cmFjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbW1vbi9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0YXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0X3Rlc3RfY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29sbGVjdG9yL2V4cGVjdF90ZXN0X2NvbGxlY3Rvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbmZpZy9leHBlY3RfdGVzdF9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wb3NpdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9jc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhdGVfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL3BhcnNlX2Vycm9yX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wYXJzZV9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9hY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9vbGRfcGFyc2VyX2NvbnRfc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fdGFibGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvYXV0b21hdG9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvb2Zfc2V4cF9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvcGFyc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL3NyY19wb3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi90eXBlX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvbGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi9wcmVfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL3NleHBfd2l0aF9sYXlvdXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvc2V4cF9ncmFtbWFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL2V4bl9tYWdpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zcGxpdHRhYmxlX3JhbmRvbS9zcGxpdHRhYmxlX3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQ2NC5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL2JpZ2FycmF5X2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlX3F1aWNrY2hlY2svZ2VuZXJhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlX3F1aWNrY2hlY2svc2hyaW5rZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9iYXNlX3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdWlfZWZmZWN0L3VpX2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbF9wYXRjaGVzL2pzX29mX29jYW1sX3BhdGNoZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW50X3JlcHIvaW50X3JlcHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9iaWdzdHJpbmcvYmFzZV9iaWdzdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JsaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JpbmFyeV9zZWFyY2hhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZmlsZW5hbWVfYmFzZS9maWxlbmFtZV9iYXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pdl9tYXAvdW5pdl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmQvZW52X3Zhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmQvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kL2NvbW1hbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oZWFwX2Jsb2NrL2hlYXBfYmxvY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS92YWxpZGF0ZS92YWxpZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NleHBhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYmluYWJsZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9wZXJtcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbXBhcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9laXRoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdGFibGVfbW9kdWxlX3R5cGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaW5mby5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX3VuaXRfdGVzdF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9xdWlja2NoZWNrYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL29yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2xpc3QwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYXliZV9ib3VuZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS91bmlvbl9maW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZG91Ymx5X2xpbmtlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oYXNoX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGFzaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oZXhkdW1wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaWRlbnRpZmlhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX2NvbXBhcmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdHJpbmcubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY2hhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NpZ24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaW50MzIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludDYzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX2ludDYzYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbm90aGluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL25ldmVyX3JldHVybnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3JlZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVfdW5pdHMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYmlnc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29yZV9iaW5fcHJvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS96b25lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdmFsaWRhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pdF9vZl90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pcXVlX2lkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdHlwZV9pbW1lZGlhY3kubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90dXBsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RheV9vZl93ZWVrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGlnaXRfc3RyaW5nX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tb250aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RhdGUwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb2ZkYXlfaGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0YWJsZV9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2Zsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3BlcmNlbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zcGFuX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zcGFuX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb2ZkYXlfZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdGltZV9mbG9hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90aW1lX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NwYW5fbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vZmRheV9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYWtlX3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0cmluZ19pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0YWJsZV91bml0X3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9ibGFuZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVfdW5pdHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9mZGVxdWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ZxdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2djLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaG9zdF9hbmRfcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL21ha2Vfc3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcGlkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zaWduYWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zaWduX29yX25hbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NldF9vbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcHJpbnRleGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcHRpb25fYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9sYXp5Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL25vX3BvbHltb3JwaGljX2NvbXBhcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbGlua2VkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGVyaXZpbmdfaGFzaC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RlcXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb3JlX3N5cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JhZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ2J1ZmZlcl9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVzLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JvdW5kZWRfaW5kZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29yZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmRfc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vY3NzX2dlbi9jc3NfdG9rZW5pemVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2Nzc19nZW4vY3NzX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9jc3NfZ2VuL2Nzc19nZW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vZG9tX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9ob29rcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9qc19tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vcmF3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2F0dHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vZ2xvYmFsX2xpc3RlbmVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS90aHVuay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL3Zkb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdmlydHVhbF9kb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5L3RocmVhZF9wb29sX2NwdV9hZmZpbml0eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC90dXBsZV9wb29sL3R1cGxlX3R5cGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdHVwbGVfcG9vbC90dXBsZV9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3RpbWluZ193aGVlbC90aW1pbmdfd2hlZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2NvbmZpZy9hc3luY19rZXJuZWxfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL21vcHRpb24vbW9wdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC9wYWlyaW5nX2hlYXAvcGFpcmluZ19oZWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3NleHBfaGlkZGVuX2luX3Rlc3Qvc2V4cF9oaWRkZW5faW5fdGVzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC91b3B0L3VvcHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3NhZmVfcXVldWUvdGhyZWFkX3NhZmVfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlYnVnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3ByaW9yaXR5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbW9uaXRvcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2V4ZWN1dGlvbl9jb250ZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9leHRlcm5hbF9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9vcl9ldmVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvc2NoZWR1bGVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvam9iX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9zeW5jaHJvbm91c190aW1lX3NvdXJjZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlcjEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL21vbmFkX3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3N0ZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvaXZhcl9maWxsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3RhaWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL21vbml0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYnZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2N5Y2xlX2hvb2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvdGhyb3R0bGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9zdGFja19vcl9jb3VudGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC90aHJvdHRsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2tlcm5lbF9zY2hlZHVsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvcGlwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbXZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbGF6eV9kZWZlcnJlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfY29uZGl0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19nYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfaW52YXJpYW50X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2ludmFyaWFudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfa2VybmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9lYWdlcl9kZWZlcnJlZC9lYWdlcl9kZWZlcnJlZDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2VhZ2VyX2RlZmVycmVkL2VhZ2VyX2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZWFnZXJfZGVmZXJyZWQvZWFnZXJfZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2VhZ2VyX2RlZmVycmVkL2VhZ2VyX2RlZmVycmVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL2J1cy9idXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3BlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9rbm93bl9wcm90b2NvbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9saXN0X3dpdGhfbWF4X2xlbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL25hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC93cml0ZXJfd2l0aF9sZW5ndGgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9kZXNjcmlwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL29yX25vdF9hdXRob3JpemVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcHJvdG9jb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9ycGNfc2hhcGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdHJhbnNwb3J0X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC90cmFuc3BvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbl90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL29uX2V4Y2VwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL2ltcGxlbWVudGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX21ldGFkYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdmVyc2lvbmVkX3JwYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL3BpcGVfdHJhbnNwb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvYXN5bmNfcnBjX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zdHJpbmdleHQvc3RyaW5nZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2JpZ3N0cmluZ2FmL2JpZ3N0cmluZ2FmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL2V4cG9ydGVkX3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL2lucHV0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hbmdzdHJvbS9idWZmZXJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYW5nc3Ryb20vYW5nc3Ryb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdXJpL3VyaS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91cmktc2V4cC91cmlfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19qcy9kZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19qcy9ycGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfanMvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2pzL2h0dHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfanMvYXN5bmNfanMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2pzL2FzeW5jX2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL2JhbGFuY2VkX3JlZHVjZXIvYmFsYW5jZWRfcmVkdWNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9pbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uL2luY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvd2Vha19hcnJheS93ZWFrX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3dlYWtfcG9pbnRlci93ZWFrX3BvaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvd2Vha19oYXNodGJsL3dlYWtfaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9iZWZvcmVfb3JfYWZ0ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2N1dG9mZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9kb3RfdXNlcl9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL25vZGVfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RhYmlsaXphdGlvbl9udW0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvb25fdXBkYXRlX2hhbmRsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvcmFpc2VkX2V4bi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC92YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvdW5vcmRlcmVkX2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYWxhcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RlcF9mdW5jdGlvbl9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYXRfaW50ZXJ2YWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2JpbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL3Njb3BlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2ZyZWV6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9pZl90aGVuX2Vsc2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvam9pbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9zbmFwc2hvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9raW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL25vZGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvcmVjb21wdXRlX2hlYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYWRqdXN0X2hlaWdodHNfaGVhcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9hbGFybV92YWx1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW50ZXJuYWxfb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9yZWR1Y2VfYmFsYW5jZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW5jcmVtZW50YWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYWJzdHJhY3RfYWxnZWJyYS9hYnN0cmFjdF9hbGdlYnJhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfbWFwL2luY3JfbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9tYXAvaW5jcl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9zZWxlY3QvaW5jcl9zZWxlY3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vamF2YXNjcmlwdF9wcm9maWxpbmcvamF2YXNjcmlwdF9wcm9maWxpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vdmRvbV9maWxlX2Rvd25sb2FkL3Zkb21fZmlsZV9kb3dubG9hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyX2RvbS91aV9pbmNyL3VpX2luY3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vY29tcG9uZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2FwcF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2pzX21pc2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vc3RhcnRfYXBwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2lucHV0X3dpZGdldHMvdmRvbV9pbnB1dF93aWRnZXRzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3B0bWFwL3B0bWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3lvanNvbi9jb2RlYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3lvanNvbi9sZXhlcl91dGlscy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vYmFzaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIveW9qc29uL3Jhdy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vc2FmZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfeW9qc29uX2NvbnZfbGliL3lvanNvbl9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF95b2pzb25fY29udl9saWIveW9qc29uX2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252X2xpYi9wcHhfeW9qc29uX2NvbnZfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9kZXJpdmluZy9ydW50aW1lL3BweF9kZXJpdmluZ19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2NhdGVnb3J5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2ZtdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9jc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3BtYXJrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2F1dG9tYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2NvbG9yX21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9ncm91cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9jb3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2VtYWNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3N0ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9nbG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3BlcmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcmUvcGNyZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9wb3NpeC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91bmlvbkZpbmQvVW5pb25GaW5kT3ZlclN0b3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3VuaW9uRmluZC9VbmlvbkZpbmRCYXNpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91bmlvbkZpbmQvU3RvcmVNYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdW5pb25GaW5kL1N0b3JlUmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3VuaW9uRmluZC9TdG9yZVRyYW5zYWN0aW9uYWxSZWYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdW5pb25GaW5kL1N0b3JlVmVjdG9yLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvVW5pY29kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L1Bvc01hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkUG9zaXRpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MYXlvdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MaXN0VXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkTGF5b3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQ29zdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0RvYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0xheW91dE9mRG9jLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQm94LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9TeW50YXhUZXN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9FeGVyY2lzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGluZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGVQcmVsdWRlLnJlIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29tZC9vbWRfdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb21kL29tZF9yZXByZXNlbnRhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX2JhY2tlbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb21kL29tZF9sZXhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX2xleGVyX2ZzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29tZC9vbWRfaHRtbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0ZF9leGl0Lm1sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QSxDOztHOzs7UTtTOzs7RztJO0k7STtHO0U7Ozs7R0FXQyxDQUFDO01BRUU7T0FBSUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJBQyxzQkFBc0JDLFNBQVNGO09BQy9CRyxvQkFBb0JDO09BQ3BCQztNQUdKLEdBQUlGLFdBQVk7T0FDWkUsWUFBWUQsaUJBQWlCRTtP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O09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDOzs7O09BNkpFMnRHO09BQ0FDO09BRUFDO09BU0FDO09BSUFDO09BSUFDO09BV0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BT0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BSUFDO09BR0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUFDO09BU0FDO09BVUFDO09BSUFDO09BSUFDO09BV0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BRUNDO09BU0RDO09BSUFDO09BSUFDO09BU0FDO09BVUFDO09BSUFDO09BSUFDO09BVUFDO09BQ0FDO09BRUFDO09BT0FDO09BSUFDO09BSUFDO09BU0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BSURDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBDRDFzRztPQVlBd1k7T0FDQUU7T0FPQTlYO09BQ0FFO09BQ0E2ckc7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTtJLE07SSxNO0ksc0I7SSxNO0ksTTtJLE07SSxvQjs7Ozs7Ozs7Ozs7SSxVO0ksVTtJLFU7SSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSSxNOzs7OztJO0ssSSxNOzs7Ozs7Ozs7Rzs7STs7OztJOzs7Szs7Ozs7Ozs7Ozs7O0ksaUIsc0I7SSxxQixzQjtJLHNCLHNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7eUIsTzs7eUIsTzs7eUIsTzs7Ozs7O0ssTzs7STtJO0ksTztHOztJO0s7SyxRO2dCOztJOzs7OzJCO21DOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTyw0QyxnQjtHOztJLFU7STtLO2U7OztpQjs7O21CO21CO0k7STtJLE87Rzs7SSxVOztLO0s7O08sVztNLEksSSwyQjs7Ozs7O1k7WTtXOzZCO1MsTztRO1MsTTtTOzs7O1k7O1k7O1k7O1EsTzs7O3NDLE87TTtNOzs7STtJO0c7O0k7Ozs7SztJLE87OztJLEksZ0I7OzsyQixPOzs7STtLLGlCO0s7Tzs7Ozs7SztLOzs7OztNOzs7Ozs7STtHOzs7SyxZOztLO0k7SSxVO0ksTyxXO0c7O0k7O0ssbUI7Szs0Qzs7SyxNO0k7SSxZO0ksSSxVOzs7OztLOztJO0c7O0ksWTs7Ozs7O3dDOztLO007UTtrQjs7O0ksZ0I7STs7Tzs7Ozs7SSxXOzs7SSxVO0ksTzs7MkI7O0c7O0ksVTtJLE87OzJCOztHOztJO2dCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssTztJLE87OztjLE07YTs7O0c7NkIsTyxtQzs7OytDLE87b0QsTztJLEksYTs7Szs7TSxVO0ssSTs7TTs7TyxZO007O00sTTs7Szs7SyxNOztJLEksdUI7O0s7O00sYztLOztLLE07Ozs7SSxTO0k7O0ksTTtHOztJLE87OztjOzs7YTs7RztHO0k7O087O3lCLGtCLG9COztJO0ksTzs0Qyx3QjtHOztJLFM7SSw0QjtJLFc7Rzs7STs7aUI7Szs7O00sYTs7OztHOztJLFk7SSxrQyxNO0k7OztJO0k7OztPOzs7OztRLE87TyxXOzs7Ozs7cUI7Szs7Rzs7STtHOztJLFk7O0ksTzs7O0k7SyxNOzttQjtJOztLOzs7STtHOztJO0k7OztnQjtLLGdDLEk7SyxZOzs7O0c7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7OztxQjtLOztHOztJO0k7Z0IsVzs7O00sTTtLOzs7TSxJO007Ozs7O0c7O0k7STs7OztPOzs7Ozs7OzttQjtLLE07O0c7O0k7STtlLFc7O2lCO0ssOEI7Ozs7Rzs7STtJO21CLFc7O00sTTtLLDRCLHFCOzs7OztHOztJO0ssTTtJO0ssYzs7OztJO3lCLE87d0IsTztLO007Ozs7TTs7Ozs7Rzs7STtJOzs7Z0I7SyxrQyxPO0ssVzs7OztHOztJO0k7OztNLEc7Tzs7Ozs7OztLO2E7Ozs7Rzs7SSxRLE87O0ksTztHO0c7STs7O0k7O0s7O0k7aUI7SyxHLHFDO0s7OztHOztJO0k7aUI7SyxLLDRCO0s7OztHOztJO0s7OztTOzs7WSxZOztZO1c7O0s7Ozs7NEI7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7O00sVyxjO007Ozs7O0c7NEIsTyxzQzs7SSxLO0ssRyw0QjtLLE07OztJO2lCLE07Szs7O00sVztLLEcsZ0M7OztHOztJO0s7SztNO08sTztPLE07TSxlO007TztPLE87Ozs7STs7STtpQixNO0s7OztNLG9CO0ssRyxnQzs7O0c7OztJLEksUTtJO2lCLE07Szs7O00sVztNLFk7SyxHLGlDO0ssRyxnQzs7O0c7O0k7SztNLE87TSxjO0s7Ozs7Z0M7OztHOztJLDBDO0s7O1E7SyxPOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7O0ksVTtJOzs7TztPLE87TTs7STtHOztJLFc7STtLLFE7SyxZO0s7O0c7O0ksSSxPO0k7Z0I7SztNLE87TSxJO0ssWSxNO0s7Ozs7Rzs7STtLLEk7SyxPO0k7SyxRO0ssWSxPO0s7O0c7O0k7O0ssTztLLFc7SztPOzs7SSxJLFU7OztLO0s7SyxNOztJO0ksSSxrRDs7O0s7SyxNOzs7O0ksYztJO2lDLE8sZ0M7aUMsNkI7NkIsTyx1QjtHO29CLHdDOztJO0c7O0ksb0I7Rzs7SSxZO0c7O0k7Ozs7Ozs7Ozs7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLE87SyxTOztJLGM7SSxXO0ksTztHOztJLDhDO0ssTzttQixzQjtJLE87Rzs7STsrQjtHOztJOytCO0c7O0k7O0c7O0k7K0I7Rzs7SSxHLGtCO0ksSTtJO2dDOzs7Ozs7Yzs7Ozs7O087USxZOzs7Ozs7OztHOztJLGM7Ozs7O0s7O007Ozs7Szs7Ozs7TyxxQjs7Ozs7Ozs7TTs7O0k7Rzs7SSxRO0ksVztJLE87Rzs7STtLLFU7SyxXO0k7SztNLE07TSxhOzs7TTtRO3VCOztLOzs7OzRCOzs7Rzs7STtJO3lDOztNLE07SyxXO1EsMEM7OztHOztJO0k7SyxJOzs7O007TztTOzs7OztPLE87TSxPOztLO00sUztzQjtNOzs7O0c7O0k7STt1QztLLFc7Ozs7Ozs7TTs7Ozs7Tzs7UyxXO1EsVzs7Ozs7UTs7Ozs7TTtPO08sWTs7Ozs7Szs7O0c7dUIsd0IsUzs7SSxZO2dCOzs7O0c7MEM7MEM7MEM7MEM7MEM7MEM7MEM7O0k7SyxNO0s7Tzs7Ozs7SSxXO0c7O0k7Ozs7OztRLFc7O1EsVztnQixXOztJO0c7Ryx5Qjs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztLLGtCO0ssTzs7SSxvQjtJLE87Rzs7STs7TTtPLE87Yzs7Ozs7OztJLFc7SSxPO0c7RztJO0k7Ozs7Ozs7STs4QixxQjswQiw0Qjs7STs7Ozs7Ozs7dUIsTTs7STtHOztJOztJO0ksTztHOztJO0c7O0k7SyxZOzs7Szs7O1M7VTtXOztVOzs7O2lDLE87Ozs7O1M7VTtXOztVOzs7O2lDLE87Ozs7OztJO0k7STtHO0c7STtJOzs7O0c7STs7TyxJLEksTzs7Ozs7O087TztRO1M7UyxjOzs7Tzs7TztlOztHOztJOztLO0s7Ozs7Ozs7STtHOztJOzs7SyxPO0ssVztrQixxQztJO1M7STtJOzs7O007TTs7Ozs7STs7OztNO007Ozs7O0k7Ozs7TTtPLE87TyxPOzs7O1E7UyxPO2dCO1M7UztTO1M7Ozs7O1M7Uzs7Uzs7b0I7UyxPOzs7O1UsVzthO1csVztXLEc7WTthO2E7YTs7Ozs7c0I7Ozs7Ozs7UTtROzs7OztNOzs7OztJOzs7Rzs7STs7Ozs7STs7Tzs7MEIsTyxzQzs7SSxPOzs7ZTsyQjtlLHFCOzs7Ozs7Ozs7OztHOztJO0ksYztrQjtJLEk7STtLLE87STtJOztLLE87SSxPOzs7Ozs7Ozs7RztHOztJO0ssSTs7Szs7OztnQjtPLFc7Tzs7TTs7Ozs7SSxPO0c7O0k7O0ssTTs7O0k7OztNLFE7O087TyxJOzs7Ozs7Ozs7Tzs7USxlOzs7Ozs7Ozs7TztPLEk7Ozs7O007Ozs7UTs7O1U7UTs7Ozs7Ozs7OztLLE87O0c7O0k7O0s7Tzs7O1U7VSxPLGdDO1M7OztLLFc7Ozs7OztPO1E7Ozs7Ozs7Ozs7STtJOzs7TztnQztxRDtPLE87Ozs7Ozs7O007O0ksTzs7O0k7SSxPO0c7O0ksWTtnQixPOztJO0ksTztHO0csSSxpQjs7STs7O0ssSSxrQjs7Ozs7O0ssWTs7Ozs7OEI7OztHOztJLGdCO0k7Z0I7O0ksTzs7O2MsZTtjOzs7O2UsTztlLE87YyxXO2E7OztHOztJLFk7STtHOztJOztPOztnQyxPLHFDOztJLE87RztHO0k7STtNOzt1QixpQjs7SSxNO0k7TTs7dUIsaUI7O0ksTTtJLFk7O0k7Ozs7Ozt5QjtxQztxQztxQztxQzs7OztxQzs7c0M7c0M7c0M7c0M7Ozs7O007O0s7O0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Ozs7O0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Rzs7STtJO0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Syx1QjtLLE87O0kseUI7SSxPO0c7RyxJOztJOzs7Ozs7STs7Tzs7SSxPO0c7O0k7SztNO1E7OztTO1U7VSxPO1MsTzs7O1E7SyxPOzs7O0k7SyxhO0s7TztLO2dCOztJLEksYztnQjtJO0c7O0ksYTtJLEk7Ozs7O0ksYTtHOztJLHlDO0ksTzs7O0k7OztROztROztROztROztROztROztRO2dCOzs7O0ssRyx1QztLO007TSxNO007UTs7Ozs7SyxPOzs7SSxHLHlDO0k7SztLLFE7SztPOzs7OztJLE87Rzs7STtJO0s7O1E7VTtLOzs7SyxNOztHOztJO0s7Ozs7TTtNO007TTtLLE87O0k7Ozs7OztLO0s7SSxPO0c7OztJLEc7SztJOzs7O0k7NkM7STs7SyxPO0s7eUI7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7O00sSTtLLGlCOzs7O0ssTzs7O0s7OztNLE07TSxVO0ssTzs7O0s7Ozs7O00sTTtLOzs7O0ssTzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssTzs7O2U7ZSxPO2M7OztJOztLLE87OztlO3VDOzs7ZSxPOzs7OzttQjs7Ozs7Ozs7OzswQjtlLE87Yzs7O0k7O0ssTzs7O2U7OzRCO2U7Yzs7O0k7Z0MsMkI7OztNOzs7USxXOzs7Ozs7TTtLO0ssTztJOztLLEksVSx3Qjs7OzRCOzs7STs7SyxVO0s7Yzs7O2lCO2lCLFc7Z0I7O0k7OztNLE87OztnQixPOztlOztLO0ssTztJOzs7SyxPOztzQyxPLDZCOzs7STs7SyxVO0ssTywwQztJOztLLE87OztlLE8sbUI7Yzs7O0k7O0ssTzs7Z0MsTyx5Qjs7O0k7O0ssTzs7O2U7O2dCLEksWTs7Ozs7MkI7OzswQjs7ZSxPO2M7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzt1QixPLCtDOztTLE87UTs7O1UsTzs7O29CLE87bUI7O1M7UyxPO1E7O1MsTztROztTOztvQixPO1MsYyxNO1MsTzs7bUMsTyx3Qjs7O1E7O1MsVTtTLGU7UTtRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7O21CO2tCOzs7UTs7UyxRO1M7OztZO1ksTztXOztTO1E7MkIsaUQ7O1MsUSxtQjtTO3FDLE8sMkI7UztROztTO1UsSSxVLDRCOzs7O1csUTtXO1c7VztROztTO1MsYztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OzswQixpQjswQixPLHlDO29CLFM7d0IsdUI7Ozs7Ozs7Ozs7Ozs7OztJO0k7SSxPO0c7eUIsTyw4QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLDBCO0ksTztHO3NCLFM7RztJOzs7Ozs7SSw4QjtJLE87RztHO0k7TSx1QjtJO007UTs7Ozs7Ozs7STtXO2M7O0ksTztHO3dCLFM7Ozs7NEIsTyx5QztzQixPLGtDOzBCLHNCO0c7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4Qix5Qzs7UztROztTOzs7VSxNO1M7UTs7UztROztTO1E7O1MsVTtTO1E7UTs7OztTO1UsTTtVO1k7YzsrQzs7VTtZOzs7ZTtnQjswQjs7Ozs7O2dCLEksWTs7O2lCLE07O2dCOztlLGE7OztpQixNOzs7OztnQjs7bUI7Z0IsSSxZOzs7aUIsTTs7O2dCOzttQjs7Ozs7Z0IsSSxjOzs7aUIsTTs7O2dCOztlLE07Yzs7Ozs7UTs7UyxJOzs7OztVOztXLE07VyxNO1U7VSxPOztTO1E7O1MsSTs7Ozs7O1U7O1M7UTs7UztVLGM7VTs7Ozs7OzBDO1U7VyxjO1c7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0k7Ozs7OzRCLDBCOztJO0ssTzs7O2U7O3lCOzs7Ozs7Yzs7SSxNO0c7O3lCLE8seUI7SSxjO0k7SyxNOztJO0c7O0k7STtLLE07O0k7Rzs7STs7Tzs7O1U7O1csZ0I7OztVO1M7OztJO0c7O0k7SyxNOztJOzs7Tzs7O007O0ksTzs7O2M7O2dDLGlDOzs7O2E7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7SSxzQjtJLGU7SSxxQjtvQixZO3FCLFk7c0IsWTs7SSxPO2tCOztHOztJLFc7O0ssTzttQjs7STtJLE87Rzs7STtLO007TSxNOzs7Ozs7OztJLGlCO0c7RztJLGU7SSxjOztJLE07RztHO0k7Ozs7OztJLG1CO0ssTTtJO0k7STtJOzs7OztHOztJO0c7O0ksVTtJLE87Rzs7SSxVO0ksVztHOztJLE87OztjO2UsSztlLFc7O3lCOzt3Qjs7eUI7O3dCOzthOztHOztJOzs7SztzQzs7O0s7c0M7STtJOzs7Rzs7SSxtQjtLLE07STtLO087O3FCLDRCOztLO087O3FCLDRCOztpQjs7O2lCOzs7Ozs7YztjOztHOztJLG1CO0ssTTs7SyxlO00sTztLLGM7O2U7O0k7STs7O08sUztPO08sWTtPO007Ozs7O0c7aUMsZ0M7O0ksbUI7SyxNO0k7Ozs7Z0I7Ozs7Z0I7O0c7O0ksTztHO0c7SSxTO0k7TTs7O1M7Ozs7bUI7K0IsbUI7O1E7Ozs7Rzs7Ozs7Ozs7OztLLFc7O007TTtLO0s7Szs7SSxZO2dCLE07O0k7OztJO0ssYztLOzs7OztNLFc7OztHOztJLG1CO0ssTTtJOzs7Ozs7O00sSSw4Qjs7Szs7Ozs7TSxPOzs7Rzs7SSxtQjtLLE07STs7Ozs7OztZOzs7TTtPOztRLFU7Ozs7Ozs7O2tCOzs7Szs7Ozs7SyxlO0s7YTs7O0c7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7SSxzQjtJLFU7SSxPO0c7O0k7RztHO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7O0k7RztHOztJOzs7Ozs7Ozs7O0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtJO0k7STtJO0k7O0k7Szs7OztLOztlOzs7SyxVO2M7OztJO0s7Ozs7Szs7ZTs7O0ssVTtjOzs7STtJO0k7STtJO0k7STtJO0k7STtJOzs7O0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7OztJO0k7O0ksRzs7SSxNO0c7O0ksVTtJO0s7TTtROzt3Qjs7TTs7Ozs7OztHO0c7STtJO0k7STs7O1E7OztPOztROztXOztXO21COztPOzs7STtJOzs7UTs7O087dUIsMEM7OztJO3lCLE8sc0M7O0k7O087O087O087O087ZTs7Rzs7STs7Ozs7Ozs7Ozs7O0c7O0k7O087O087O087O087ZTs7Rzt1QyxTO3FDLDJCOztJO0s7TztTOzs7WTs7YTthO1k7OztLLE0sVztJLE8sVztHOztJO0ksTztHOztJLFksTztJO0ksTztHOztJO0ssTTtLLFU7STtLOzs7UztVO1UsUTs7OztvQjs7UztRO00sSztLO007O087TyxROzs7OztXOzs7Ozs7O0c7Rzs7STt5Qzs7Z0I7SSxxQjtJO0c7Rzs7STtHOztJO0s7Tzs7dUI7O0s7OztHO0csSSxtQjs7STs7O0c7O0ksTzs7O2M7YztlO3VCO2U7ZTtlLFU7ZTs7Ozs7OzZCOztnQjs7O2E7O0c7O0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0s7SztJLFc7RztHOzBCLFEsNEI7O0k7Ozs7O0c7NEIsTyxvQztHO0k7STs7Ozs7O0k7OztHOztJOztLO0s7Ozs7SyxJLFU7Ozs7TTtPLGE7Ozs7OztLOzs7O0s7TSxlO007Ozs7SSxPOzs7O2U7ZTtnQjtnQjs7ZSxPOzs7OztjOzs7OztJOytDLE8saUI7Rzs7STtLLE87STs7SztLLE87STs7SyxPO0k7STtHO2tDLHVDO0c7STtLO0ssWTtLLFE7SyxlOztLLGtCO0ksTztHO0c7STs7OztJLEksK0I7O2dDO0ssb0I7SyxXOztHOzs7SztNOzs7d0I7TTtLLE87STs7Szs7TTtROzs7OztPLHFCO087Ozs7OztLO0k7STtHOztJO0s7Tzs7MkIseUI7OztLO087OztVOztTOzs7OztLLEksZ0I7Szs7O1EsbUI7OztPOzs7O1E7O0k7SSxPOzs7Yzs7Ozs7O2U7Ozs7O2UsUTs7O2U7O2M7YTs7Rzs7SSxjOzs7Ozs7STtLO0s7OztLOzs7Syx3QixrQixzQjtLO2E7OztnQjs7OztnRDs7OzhDO2dCO2dCOzt1QztlOzs7STtJOzs7OzswQzs7O0ksVztJOztLOzs7UTtRLE87OztpQiw2QjtPOztLLE87O0k7STtLOztNLGUsaUI7TTs7VyxpQjtXO0s7O0ksYTs7O0s7OztROztTO1E7UyxnQztRO087O0ssTzs7STs7Szs7OztNO1E7VTs7O2E7WTs7TSxROzs7SyxHLHdDLFM7TSxVO007O0ssVTtLLE87NkM7O0ksTzs0QztHO0c7STtNO3VDO0ksTTtJO007Ozs7Ozs7O0k7TTt1Qzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7SSxJLEksTTs7Ozs7O0ksd0M7SztJO0c7O0ksVztJO0c7O0k7aUI7Rzs7STtpQjtHOztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0s7SztLOztJLFU7O0ssTTtJO0c7aUMsa0IsUzs7STtLO087c0MsNEI7SyxTO0ssSTs7O0s7Ozs7SztNLFE7OztLOzttQixPLHlDOztLO0s7O3VCLE8sbUM7SyxPOztJO0c7O0k7SztPO3NDLDRCO0s7Tzs7cUIsTyw4Qjs7STtHOztJLFk7O0ksTztHOzs7Ozs7TTtPO1E7VTs7O087TztRLE07USxNOzs7Ozs7Ozs7Ozs7TTs4Qjs7Ozs7O0k7SyxNO0ssTTtLLE07SyxNO0ssTTtLLGlDO0ssTTtLLE07OztLOzs7OzhCOzs7Ozs7Ozs7UTs7OztJOzs7Uzs7Ozs7Ozs7Ozs7OztJO0ssUTtLO00sWTtNLGE7TztNO08sVTtPOzs7Z0IsMkI7O0k7OztJO0kscUI7SSxvQjs7SztLLGU7OztLLE07STtJO2E7O0c7O0ksTzs7Ozs7Yzs7Ozs7O21CO3FCOzs7d0IsSzt5Qjt3Qjt5Qjt5QjsyQjs7Ozs7eUIsTTt5QixVO3dCO3lCLFU7eUI7Ozs7K0M7Ozt1Qjs7O2U7Z0I7OztvQjtzQjs7O3lCOzt3QzswQjs7NkI7Ozs7OzBCLE87OytDLHlCOzs7eUI7d0I7O2dCLGtDO2dCLE07O2tCOzs7O2U7Z0I7Z0IsTTtnQixNO2dCLGlDO2dCLE07Ozs7Ozs7Ozs7Ozs7bUIsTTs7Ozs7a0I7Ozs7Ozs7Ozs7O2M7YTtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7RztnQyxvQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSTtHOzs7TTtNLE87OztnQixPO2U7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCLE8sb0M7O0k7O0ssTTs7O08sdUIsNkM7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7STs7O1E7UTs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7MEIsa0I7dUIseUI7O0k7O0s7TTs7OztJO0c7O0k7O0s7TTs7OztJO0c7O0k7STtJLEksUSxrQixlOzs7SztLLE07O0c7O0k7SSw0QjtHOztJO0s7TTs7OztnQjs7O0k7Ozs7Ozs7O0c7O0k7O0ssWTs7TSxNOztLO00sUTtNLFU7OztPO1E7MkIsb0IsMEI7TyxrQixPOztPOzs7Ozs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOzs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOztLLE07O0k7cUI7O0s7Szs7TyxZOzs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztPLFM7OztPLE07O00sUztNO00sa0IsTzs7TTs7STtJO0c7O0ksSSx5QjtJO0c7O0k7SyxRO0ssUzs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLO00sZ0MsSztNOzs7O007TSxPOzs4Qjs7O0s7Ozs7TSxPOzs7O087Tzs7Ozs7O0k7O0s7TSxNOztLO0s7TTtNOzJDO2Msb0M7TztRO2dDOzs7O0s7O007TTs7USxPO08sWTs7Ozs7Ozs7UztVO1UsbUI7Ozs7Ozs7VSxJO1U7VyxPOzs7VTs7Ozs7O1ksSTtZO2EsTzs7O1k7OztZLEk7WTthLE87OztZOzs7Tzs7Szs4Qjs7TSxvQztNLFc7OztRLEk7OztTO3lCOzttQjtzQjtVO1c7OztzQjs7Ozs7O1E7OztTO1E7UyxPOztROzs7O087UTtRLGU7TztRLE87O087O007SztLO0s7SztNOztTLE87O1MsTztpQixPOzs7SztNLHNCLFc7TTs7Szs7OztPOztNOztLO007UTs7O007SywwQjtLOztNO0s7TTs7Uzs7O1ksVztZLE87Vzs7O00sMEI7SztLO007UTs7OEIsc0IsVzs7TTtROzs7Ozs7VyxPOzs7cUI7OztnQzs7Z0M7Ozs7OztzQixPOzs7cUI7c0IsWTs7cUIsTzs7O1U7O0s7STtJOzs7O0s7Ozs7OztLO007UTtNLFU7TTs7OztPOzs7Ozs7Ozs7O1U7Ozs7Ozs7OztVOzs7Ozs7O0k7O0k7RztHO0c7O0c7O29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7USxPOztROztROztROztROztROztROztROztRO2dCOzs7Ozt3QjtPLFc7TyxPOzs7O1EsTTs7UTtTLE87UyxPO1EsTzs7Tzs7USxPO08sTzs7OztRLE07Ozs7USxPOzs7Ozs7O08sVztPLE87Ozs7aUI7OztPOztRLE87TyxPOzs7O1EsTTs7OztRLE87Ozs7Ozs7TyxXO08sTzs7Tzs7USxPO1EsTztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OzJCOztPOztRLE87TyxPOzs7TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VTs7YTtVLE87OztPOzs7O1E7USxPO1EsTztPOztVLE87O1UsTzs7O1UsTzs7Ozs7O1E7O1MsTztTLE87USxPOzs7USxNO087USxPO1EsTztRLE87USxPO08sTzs7OztROzs7O1M7Vzs7UyxPO1MsTztTLE87USxPOzs7O1EsTTtPOztRO1U7USxPO1EsTztPLE87O087O1EsTztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OztPLE87OztPLE87O087O1EsTztRLGE7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7OztPLGtCO08sTzs7O08sTzs7O08sTzs7O08sTzs7Tzs7USxTO087USxNOzs7UTtTLFM7UyxPO1MsTzs0Qjs7UTtTLE87UyxPOzRCO08sTzs7Ozs7Ozs7TyxPOztPLHFCLE87TyxPOzt5QixPOztPOztRLE87TyxPOzs7TyxPOztPLHFCLE87TyxPOztPLHFCLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VSxXO1UsTzs7O08sa0IsTztPLE87O0c7RztJOzs7OztJLG1CO0k7STtLO0s7SztLO087O3lCLG1EOzs7O0s7Ozs7a0M7Ozs7Z0I7O0k7Rzs7STs7Ozs7O2dCOzs7a0I7Ozs7Ozs7O1E7OztJO0ksYzs7Ozs7Ozs7Ozs7OztJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytCLHlCOztJOzs7SSxNO0c7O0k7OztPOzs7OztPO1E7O1MsTztnQjs7O08sTzs7Ozs7OztpQixPOzs7Ozs7Ozs7Z0I7O007O0k7OztLLEksSSwrQjs7O087USxPO1EsTztRLE87Tzs7O08sYyxPO087O0s7bUIsTzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7K0IsTyxrQztROztTOztTOzs7UztVLFE7OztVLE07UztVLE07O1M7UTs7UyxJLHlDOzs7O1csTzs7O1E7O1MsSSx5Qzs7OztXLE07OztROztTLE87UTs7UyxVO1MsTzs7O21CO29COzJCO3FCO29COzs7OzBDOzs7a0I7OztROztTLE87OzttQjtvQjsyQjtxQixNO29COzs7OztxQixPOzs7a0I7OztROztTO1M7OztZO2EsVTs7O1c7O1MsTzs7O21CO29CLEs7b0I7O2tCOztROzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VSxTO1UsVztVLEk7VTtZLDJDO1U7VTtVOzs7O1csbUI7cUI7Vzs7Ozs7Uzs7VTtZOzs7O2U7ZSxPOzs7eUIsSSxJLE07Ozs7O2tDOzt5Qjt3Qjs7O2M7O1UsUztVLFE7VTs7VTtvQjtVO1U7VTs7VTs7O1M7UywwQjs7O2tCLFE7O1M7OztVLGE7Uzs7O1ksTzs7O3NCOztzQjtxQjs7Vzs7UztVLFc7VSxhO1U7O1U7b0I7VTs7VTtVO1UsTztTO1M7Ozs7Vzs7WTs7O1c7Ozs7O1M7O1UsOEI7VSxrQjtTOzs7WTs7Ozs7WTthO2E7WTthOzs7Z0I7Z0IsTztlOzs7WTtXOztTOztZO1MsTzs7O21CO29CLE07Ozs7b0I7OztvQjs7NkI7OztnQzsrQjs7OzttQjtvQjs7b0I7b0I7c0I7OzttQjtrQjs7UTs7UztTLE87a0Q7UTs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUM7OztLLE07Ozs7USxrRDtRLE87Tzs7d0IsUzt3QixTOztvQixjOzBCLE8sNEM7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixTOzBCLFM7c0IsYzs7SSxPO0c7Ozs7Ozs7O3NCOzJCOzJCOzs7Ozs7Ozs7OzsyQjsyQjsyQjs7MkI7MkI7MkI7c0I7O3NCO3NCO3NCOzs7Ozs7Ozs7Ozs7OztLLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7OzZCOytCOytCOytCOytCOytCOzs7Ozs7OztFOzs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksOEI7OztPOztRO1U7Ozs7YSxRO2EsTztZO1EsTTtPLE87OztPLE87OzJCLE87O0c7RztJOzs7O0k7Ozs7SyxNOzRCOzs7OztROzs7O0k7SywwQiwwQjtLLE87O0c7O0k7STsyQjtLLFE7VztLOzs7Rzs7STt5QixPLDhCO0c7O0ksVTtJO0k7Rzs7SSxPLHVCO0c7NkIsd0I7OztJO2M7Yzs7OztJO2M7Yzs7O0ksSSw2QixROztLLE07K0I7O0k7Rzs7O0k7YztjOzs7STs7O0c7O0ksWTtnQixNOztJO0c7O0k7STtHOzs7STs7Ozs7Ozs7O0s7O0k7Rzs7O0s7O0k7STtHOzs7OzswQiw0Qjt5QixPLHVDOzs7Ozs7OztLOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O2M7YzthOztHOztJO0k7SyxVO0ssVTtLLFU7SyxVO0ssVzs7Ozs7Ozs7Ozs7Ozs7TTtNO087TyxVOzs7Ozs7Ozs7OztPLE07OEI7O00sSTs7Ozs7OzswQztTOzs7Ozs7O007TztPO087TztPO3lCO087OztVO1c7Vzs7OztXO1k7WTtZO1k7OztVO1M7TyxnQjtPOzs7WSxZOztZO1c7OztPOzs7Ozs7UTs7UTtROzs7Vzs7WTs7WSxTO1k7VztVO29COzs7TTtPOztVO1c7VztzQjs7VTs7Tzs7VTtXO1c7VSxPOztNOzs7O087TztRO1EsNEI7TztPO1E7USxVO087USxNO08sVTs7Ozs7Ozs7Ozs7USxNO2dEOztPOztRO1E7UTtPOztRLE07TztROzs7WSx5Qjs7UTs7UTtTOzs7O1MsTTs7O2lEOzs7O087UTs7O1k7d0I7Ozs7Vzs7WTtZOztZOztZOztZOztXOzs7Ozs7VTtRLGE7UTs7UTs7Ozs7UztTO1M7OztZO2E7OzthOzs7YTtlOzBCO2E7O1k7VztxQjs7O087Ozs7Ozs7O1k7Ozs7a0I7a0I7aUI7O3dCOztZO29COztzQjtpQztXOzs4QjtPOzs7VyxPOzs7cUI7cUI7b0I7OztPOzs7OztNO007TztPLEk7Ozs7Ozs7Ozs7TyxVOzs7Ozs7Ozs7O1E7UztTO1M7UztTO1M7UztRLEc7OztTO1U7Z0M7VTtTOzs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztVO1U7OzthOztjO2M7OztjO2M7O2M7Ozs7O2M7Ozs7O2E7Ozs7Ozs7O1k7VSxXO1M7OztVO1c7Ozs7O2M7Yzs7Ozs7Ozs7YTt3Qjs7UTs7OztVLE07Uzs7VTs7VztXO1c7OztjOztlOztlOztlO2M7YTs7cUI7Ozs7OztRO1M7O1k7d0I7WTs7OzthO2U7OztZLFc7O1M7O1k7WSxPOztROztPLE07MkM7O00sTTsyQzs7O0ksTTtHOztJO0s7TSxLO007UTs7MEIsTywyQjswQixhOzs7OzRCOzs7Szs7STtHOzs7SSxPOzs7O0ksTzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7O0k7OzsyQjs7eUIsTTs7O08sSSxROzs7O1EsTTs7O087O0c7O0k7dUI7O0k7Rzs7STs7O3lCOzt5QixNO2lDOztHO3NCLG1COzZCLG1COzZCLG1CO3VCLGM7O0k7OzsyQjs7eUIsTTs7O08sSSxVOzs7O1EsTTs7Ozs7O0c7O0k7STtpQjs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O087O087O087ZTs7Rzs7SSxrQztJO0k7SSxPOzs7Ozs7d0IsTyxtQzt3QixPLG1DOztJOztPOztPOztPO2U7O0c7Ozs7Ozs7OytCLDRDOztTLE87OzsrQix5QjtROztTLE87OzsrQix5QjtROztTO1E7O1M7UTs7UztROzBCLHVCOztTO1M7UztTO1E7O1M7Ozs7bUI7bUI7a0I7UTs7UztVO1U7O1U7Ozs7VyxzQjs7OzthOzs7Ozs7Ozs7YTtjOzs7OztlOzs7Ozs7O2E7Ozs7O1c7Ozs7Ozs7VSxNOzs7O3FDO1U7O1csTTs7VTs7Ozs7OztVOzs7O1E7OztVOzs7b0I7Ozs4QjsrQjsrQixNOytCOzhCOzs7Ozt1Qzs7NkI7bUI7Uzs7VTs7O29COzs7OEI7K0I7K0IsTTsrQjs4Qjs7Ozs7dUM7OzZCO21CO1M7OztXLE87Ozs7cUI7OzsrQjsrQjt1Qzs7OEI7b0I7VTtVO1csa0QsYztXO1c7MEQsYztXO1c7YTs7OztnQixPOzs7OzBCLE87Ozs7b0MsWTs7O3FDOzs7b0M7bUM7eUI7ZTtXO1c7VTtXOzthOzs7Ozs7O2M7Z0I7OzthOzs7Ozs7VztVO1U7bUI7O29COzs7OztxQixRO29CO21CO1M7O1Usd0I7Ozs7O3NCO1U7Uzs7VTs7O1c7YTs7VzthOzs7OztXOztjOzs7Ozs7VTs7VTtXO1k7WTtZOztZOzs7O2Esa0I7Ozs7O2U7OztrQjs7Ozs7O2lCO2U7Ozs7O2E7Ozs7OztnRTs7Vzs7O2UsTzs7Ozt5QixPOzs7O21DO29DOzs7a0M7d0I7YztZO1k7WTtZOzs7O2E7Ozs7ZTtlOzs7OzthOzs7Ozs7O1M7Uzs7OztzQjs7Ozs7O2tCLFU7a0I7aUI7OztrQjtrQjtpQjs7Ozs7O2tCO21CLFE7Ozs7a0I7aUI7OztrQjtrQjtpQjs7Ozs7O2tCO21CLFE7OzttQjtrQjtpQjs7O2tCO2tCO2lCOzs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87OytCLDRCOztHOztJOzs7Ozs7O0k7SyxVO0s7SyxPOzs0QixPLHNDOzs7STtJOzs7OztPLE87OztPLE87OztJLE87Rzs7SSxPO0c7Ozs7Ozs7OztRLEk7Ozs7a0IsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0I7OzttQjs7a0I7aUI7O2tCOzBDOzswQztrQixZOzs7Ozs7OztpQzs7Ozs7a0I7aUI7O2tCO21CO21COzttQixNO21CLE07bUIsVTs7Ozs7OzttQjs7c0I7O3VCO3VCLE07Ozs7MEI7OzswQzs7OztzQjs7dUIsTTt1Qjs7OzswQjs7OzBDOzs7Ozs7c0I7Ozt1QixLO3VCLEs7dUI7eUI7Ozt1Qjs7OzBCOzs7MEM7Ozs7bUIsVzs7OztxQjs7Ozs7Ozs7O21COzs7OztzQixvQjs7O3NCOztzQjs7Ozt1QixLO3VCLEs7dUI7dUIsUTs7Ozs7O3lCOzs7Ozs7OzswQixVOzBCLFU7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7O2tCO2tCLE87aUI7Ozs7OztFOzs7Ozs7O0c7Ozs7SSx3Qjs7Z0MsTyxzQzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzt1QixPLG9CO3lCLHNDO2dDLDJDOztJLFc7SSxXO0c7O0ksVztJLFc7Rzs7SSxXO0ksVztHOztJLFc7SSxXO0c7O0k7Rzs0QixxQjt5QixzQjtHO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCLCtCOztJOzs7Rzs7STtLOzs7Vzs7O0c7O0k7Rzs7SSxZO2dCOztJLE87Rzs7SSxZO2dCLE87STs7SyxVOztrQjtjO0c7O0k7SztNLE87TSxjO0s7STtJLFk7Z0I7STs7SyxVO2tCO0ksYztnQjtJLE07Rzs7SSxHO0s7TSxPO1k7OztJO0k7SztLO007TyxPO08sTTtNLGU7TTtPO1E7USxPOztPO08sTzs7OztJO0k7Rzs7STtHOztJO0ksTztHOztJO0k7Szs7Ozs7SztJO0ssaUM7STs7SyxhO0ssTztJO0k7Ozs7Ozs7Ozs7STtLO0s7O0k7STtLO0s7O0s7Szs7O0s7Szs7Ozs7STtLO0s7Szs7SSxPO0c7O0ksTzs7OztlLE87Yzs7OztHOztJLE87OztjOzs7ZSxPO2UsYztjO2E7O0c7O0k7Szs7a0IsTTtLLEk7Ozs7aUI7Tzs7Ozs7SyxXOzBCLE07SztLO0s7SztLLHVDOzs7O2tCOztPO1M7O3lCLG1DOztROztPO1M7O3lCLG1DOztRO08sUTtPOztPOzs7OztLO0s7SyxXO0s7Ozs7NEI7OztHOztJO0k7SztLO0s7SyxJOztLO00sVztNOzs7OztJO0k7O00sWTs7O087b0I7O087OztNOzs7O0c7OztJLE87K0MscUI7OztJOzs7Szs7SztNO007OztJO0c7O0k7Ozs7Ozs7Ozs7OztLOzs7OztpQjtLO0ssVztLO007TTtROzs7Vzs7WTtXO1U7O007UTs7O1c7Ozs7Ozs7VyxPOzs7VTs7TSxPO007UTtVOzs7YTthLG1CLDJCO2E7YSxPO1k7O007UTs7O1c7Ozs7O1c7O2E7O1k7OztZLE07OzZCOztXO1U7Ozs7O007SztNLE07SyxXOzs7O007TyxPO08sTzt5QjttQjs7Ozs7Ozs7Ozs7OztRO1M7UyxxQix1Qjs7O1ksVztpQztZLFE7WTtZO1c7Ozs7OzsyQyxxQjtPO1E7Uzs0Qiw0Qjs7O1ksc0I7WSxRO1k7WTtXOzs7Ozs7OztLO007UTtVOzs7YTs7O3FDO2M7Z0I7OzttQjs7Ozs7OzttQjtxQixnQztvQjttQjtxQixnQztvQjttQjtrQjs7Ozs7O2E7WTs7TTtROzs7Vzs7Ozs7VyxXOzt3QjtXOztZO1c7VTs7Ozs7Ozs7Ozs7VTs7O2E7YTtZOzs7Ozs7Szs7UTtVOzs7YTs7Ozs7YTs7cUI7O1k7O0s7Ozs7Ozs7O1E7UTs7USx5RDs7Ozs7Ozs7O2E7OztnQjtnQixPO2U7O1c7VTtXOztXLFM7WTs7WTs7Ozs7YTs7O2dCO2dCLE87ZTs7VztVOzs7OztROzs7OztNOztTOzs7WTs7OzthO2U7OztrQjtpQjs7WTtXOztNLFc7OztLLE87STtJLE87O0c7RztJLE87Rzs7STtJO0ksb0I7O0s7Szs7O08sTzs7TSxVO08sSTs7Ozs7O0k7STs7Ozs7Ozs7O0k7OztLLE87O0ssTzs7O0ssTzs7SyxPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHO0c7STtLLE87Ozt5QixPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ryw2QztHO0csNEMsd0I7RztJLE87OztjLFc7YyxPO2E7O0c7RztJOzs7SyxPO0ssTztJLE87O0c7STs7RztHLDhDLHdCO0c7STs7Ozs7Ozs7Ozs7OztLO0s7TTtROzswQixvQixXOztNO007UTtLO0ssTztJO0ksOEMsUztJO0s7O2U7O0k7STs7Ozs7Ozs7O0c7O0ksZ0M7Ozs7Szs7STtHOztJOzs7RztHOztJLGM7SSxPO0c7bUMsa0M7OztJLE87OzRCOzs7O0k7Ozs7YyxPO2E7Ozs7SSx1QyxPLHVCOzs7STtpQjtHOztJLFk7a0M7Ozs7Ozs7STtLLHFCLE8sd0M7STtJO0ssTztLO0s7Tzs7O1U7VTtTOztJO0c7OEIsb0M7RztHO0k7O0c7O0ksTztHO0c7O0k7Z0I7O0k7Rzs7STtHOzhCLG9DO0c7RztJOztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJO2dCOztJO0c7O0k7Rzs7O0k7OztJO0c7O0k7SyxNOzs7SyxNOzs7SyxPO0s7Tzs7Ozs7Ozs7Ozs7Ozs7O0s7OztROzs7STtHOztJO0ssTTs7SyxNOztLLE07SztPOzs7Ozs7Ozs7OztLOzs7UTs7O0k7RztHO3FDLGtDOzs7Ozs7SSxvQzs7STtpQjtLLG1DLFE7cUM7OztHO0c7O00sNEI7O007YzsyQjtLOztJO0k7SyxJOzs7TTs7Ozs7O2UsTTs7bUM7O0s7O0c7RztHOztNLHVCOztNO0s7OztJLE87OztjLE07O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OzJCLFk7dUIsWTtzQixZO3dCLE8saUM7Ozs7Ozs7Ozs7Ozs7O0ksZTs7O0ssSSxjOzs7Ozs7O2U7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJOztvQjtLLFEsTzs7Ozs7STtHOztJO2M7SSxJLHFCLE07SSxPO0c7O0k7O0s7SztJLGtCO0k7OzZCLFk7d0IsWTt5QixZO3dCLE8sc0M7O0k7STtHOztJLGdCLE07STtHOztJLGdCLG1CLE07STtHO21CLCtCO21CLCtCO21CLCtCO21CLGtDO21CLCtCO29CLGdDO3FCLGlDOzZCLHlDOzZCLHdDOztJO0ssUzs7SyxNO0k7Rzs7SSx5QjtJLE87Rzs7SSxhO0ksTztHO3NCLE8sZ0Q7O0k7SyxXO0ssYTtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7OzswQjs7USxvQzs7OztnQixPOztHOztJOzt5Qjs7MkI7ZSxPOztHOztJO0s7TSxNO007TSxVO0s7Ozs7O007Yzs7Ozs7Ozs7Rzs7SSxROztJO1k7OEMsaUI7Rzs7STtnQjs7STtHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7O0k7Ozs7O0ksVTtJLFU7SSxVO0ksTzs7O2M7O2lCLE87O2lCOztxQzs7YTs7RztpQywrQixVO3lCLGlEOytCLGE7OEIsYTtHOztJOztLO0s7SztJO0c7O0k7Ozs7Ozs7OztJOzs7Ozs7TztRO2tCOzs7Ozs7STtHOztJOzs7TTtNLE87OztJO0c7Rzs7STs7SztLO0s7STtHOztJO0s7Tzs7eUIsZ0M7O0ssTTtJLE87Rzs7STtJO2lCOzswRDs7OztHOztJOztpQixPOzs7Ozs7Ozs7TTs7Ozs7Rzs7SSxPOzswQiwrQzs7RztHLGdCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLLFU7SztLOzs7OzJCOzs7RztHLGlCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7RyxxQjs7STtpQjtHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHNCOztJOztjOztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7Ryx1Qjs7STs7Yzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJLHdCO0ksd0I7Rzs7STtLLEs7SyxLO0k7O2E7YTs7Rzs7SSx3QjtJLHdCO0c7O0k7SyxLO0ssSztJOzthO2E7O0c7O0ksYztJLHNCO0c7O0ksYztJLHNCO0c7O0ksZ0I7Rzs7SSxnQjtHOztJLGdCO0c7O0ksVTtJLDJCO0c7O0ksZ0I7Rzs7SSxxQjtHOztJLFk7SSwyQjtHOztJLDBCO0c7O0ksMkI7Rzs7SSwwQjtHOztJLDJCO0c7O0ksNEM7STs7OztJOzthO2E7Ozs7STtJO0c7O0k7O2E7YTs7Rzs7O0k7STtJOzs7STtJO0k7RztrQyx3QjsrQix3QjtvQywwQjs7SSwyQjtHOzRCLHFCO2lDLDBCOztJLDJCO0c7OEM7Rzs2QztHO3NDLCtCO3VDLGdDOztJO0k7STtJO0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Rzs7OztJO0k7cUMsa0IsUzs7SSxNO0c7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOztJLE87RzsrQixzQjs7SSxVO0k7Rzs7STs7SyxNO0s7STs7O0k7O0ssTTtLO0k7OztJOztLLE07SztJOzsrQixzQjtzQixjOzs7STs7OztJOztHOzs7STs7O0ksVztJO0c7bUMsMkI7aUMsZ0M7dUMsc0M7aUMsZ0M7cUMsbUM7cUMsbUM7c0MsbUM7b0MsbUM7O0k7RzttQyxtQzs7STtHO3FDLGlDOztJO0c7O0k7a0Q7STtHOztJO0ssVztLO00sTTtLO0k7STs7Tyx3QyxZOztLOzs7Ozs7O1M7Ozs7Uzs7OztVOzs7Ozs7cUI7Ozs7Ozs7O1csRzs7OztpQzs7Ozs7Ozs7cUI7Ozs7OztrQzs7OztTOzs7Ozs7Ozs7O2E7Ozs7OztTOzt1QiwrQzs7Ozs7Ozs7Ozs7OztjOzs7aUI7aUI7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOztLOzs7Ozs7bUM7OztLO0k7O0s7Ozs7O0s7STtJO0c7OztJOzs7SSxXO0k7RztxQywyQjtpQyxnQztzQyxtQztvQyxnQzt1QyxtQzttQyxnQzt3QyxtQzt3QyxtQztxQyxtQztpQyxnQztpQyxtQzt5QyxvQztnQyxpQztnQyxpQztrQyxpQztxQyxvQztxQyxpQzt1QyxpQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztJLFc7STtHO2lDLGdDO3NDLGdDO3VDLHNDOzRDO0c7b0MsbUM7b0MsbUM7bUMsZ0M7MEMsbUM7d0MsbUM7dUMsb0M7b0Msb0M7O0k7RzttQyxpQzs0QztHO3VDLG9DO3NDLG9DOztJO0c7MkM7Rzs7STtHO21DLG9DO2lDLGlDO3lDLG9DO29DLGlDOztJO0c7MkM7RztrQyxpQztrQyxpQztxQyxvQztvQyxpQztzQyxvQztnQyxpQztxQyxvQzs7STtHO3VDLGlDOzJDLDJCO29DLDRCOzBDLDhCOzs7STs7O0ksVztJO0c7bUMsZ0M7bUMsZ0M7cUMsZ0M7c0MsbUM7cUMsbUM7b0MsZ0M7dUMsZ0M7Rzs7Ozs7Ozs7Ozs7Ozs7STs7O0ksVztJO0c7bUMsZ0M7cUMsZ0M7NkM7Rzt3QyxxQzt1QyxpQzs2QztHO29DLGdDO3VDLGdDO0c7Ozs7Ozs7Ozs7Ozs7OztJOzswQix5QjtxQyxtQzsrQix5QjttQyx5QjtnQyx5QjsyQix5Qjs4Qix5QjsrQix5Qjs0Qix5QjtrQyx5QjsyQiwwQjs0QiwwQjs0QiwwQjsrQiwwQjs7O0k7OzhCLDBCOztJOztPOztzQixPLDhDOztJLE87OztjLFc7YyxxQjthOztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7K0IsNEI7OEIseUI7cUMsbUM7cUMseUI7Z0MseUI7NkIseUI7aUMseUI7OEIseUI7MkIseUI7NEIsMEI7aUMsMEI7OEIsMEI7OztJOztnQywwQjs7STs7Tzs7c0IsTyw4Qzs7SSxPOzs7YyxXO2MsdUI7YTs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztJLFc7STtHO3VDLG1DO3VDLGdDOztJO0c7c0MsbUM7dUMsc0M7MkM7Rzt1QyxnQztxQyxtQztHOzs7Ozs7Ozs7Ozs7Ozs7STs7O0ksVztJO0c7dUMsbUM7dUMsZ0M7O0k7Rzt1QyxnQztxQyxtQztHOzs7Ozs7OztJLG1COzttQyxtQzs7STtHOztJO0c7O0k7Rzt1QyxtQztnQywrQjs7STs7Tzs7c0IsTyw4Qzs7SSxPOzs7YyxXO2MsdUI7YTs7Rzs7SSxXO0k7Rzs7Ozs7O0ksbUI7OztJO0c7O0k7Rzs7STtHOztJO0c7dUMsb0M7dUMsb0M7Z0MsZ0M7O0k7O087O3NCLE8sOEM7O0ksTzs7O2MsVztjLHVCO2E7O0c7d0IsZTsyQixpQjs7SSxXO0k7Rzs7Ozs7OztJLDRCOztHOztJOzs7OztLLE87SSxzQjs7Rzs7STs7Ozs7SyxPO0ksc0I7O0c7O0k7Ozs7O0ssTztJLHNCOztHOztJOzs7OztLLE87SSx1Qjs7Rzs7Ozs7OztJLGdDOztHOzs7Ozs7SSx1Qjs7Rzs7STs7Ozs7SyxNO0k7Ozs7WTs7O0c7O0k7Ozs7Ozs7SyxNO0k7Ozs7OztZOztHLEk7O0k7Ozs7Ozs7OztLLE07STs7Ozs7OztZOzs7Ozs7Ozs7O0k7Ozs7OztZOzs7Ozs7OztJLGdDOztHLEk7Ozs7Ozs7O0k7Ozs7OztZOzs7Ozs7O0ksNkI7OztJOzs7OztLLE07SSw0Qjs7O0k7Ozs7Ozs7SyxNO0k7Ozs7WTs7O0k7Ozs7O0ssTTtJLGdDOztHO2dDLHlCO0c7Z0MseUI7Rzs7O0k7OztJO0c7K0IsOEI7Rzs7O0k7OztJO0c7K0IsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DLG1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7aUQsTztpRCxPOzs7STtJLE87OztJLFk7O0ksTzs7OztJLE87Ozs7STtJOztLLHNCLE87SyxPOzs7SSxPOzs7O0k7STs7O0ssTzs7O0ksTzs7OztJO0k7Ozs7O1E7USxPOztRLG1CLE87USxPOzs7UTtRLFc7USxPOzs7USxPOztnQzs7OztRO1EsVztRLE87O3lCLE87OztRLE87O2dDOzs7MkIsTzs7O1E7UTtTLE87UyxzQjtRLE87O2dDOzs7O1E7USxPOzt5QixPOztJOzs7Ozs7Ozs7OztJO0ksVztJOztxQjs7STtLLEs7SyxLO0ssSztJOzs7O087TztPLE87OztJO0ksUztJO0ksTzs7O0k7O0ssa0IsTztLLE87O0ksb0IsTztJLE87OztJO0ssa0IsTztLLE87O0ksb0IsTztJLE87Ozs7Ozs7OztJO0ksVztJO0ksVztJOztxQjs7STtJLE87Ozs7Ozs7STtJO0ksTzs7Ozs7Ozs7STs7O0s7dUM7SztLLFM7O2dDO0k7SSxPOzs7O0k7STs7OztPO08sVTtPLE87O3dCLE87OztPO08sTzs7MEIsTzs7O087TyxPOzs7OztJO0k7Ozt5QixPOzsyQixPOzs2QixPOzs7TztPLE87O3dCLE87a0MsTzs7Ozs7STtJLFU7SSxPOzs7SSxZOztJO0ksTzs7OztJO0k7Ozt3Qjs7eUIsTzs7O087TyxPOzs7TztPLFU7TyxPOzt5QixPOzt3QixPO2tDOzs7O0k7OztPO08sTzs7O087Tzs7O087TyxPOzs7TztPLE87OztPO08sTzs7O087Tzs7Ozs7STs7O3lCLE87Ozs7Ozt5QixPOzt5QixPOzt3QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzs7TztPLE87a0MsTzs7SSxVO0ksTzs7OztJO0k7Ozt3Qjs7MEIsTzs7O087TyxPOzs7TztPLE87OzJCLE87OztPO08sTzs7d0IsTztrQyxPOzs7OztJOzs7O087TyxPOztPLG1CLE07TyxPOzt5QixPOztPLGlCLE07TyxPOzt5QixPOzt5QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzswQixPOzs7TztPLE87Ozs7O0k7STtpQzs7O3dCOztPOztPLGtDLE07TztPLE87OztPOzs7O1U7OztXLFM7VyxPOzs7VTs7Ozs7OztTOzs7O1MsUztTOzs7MEMsTzs7TztPO08sTzs7O087TyxVO08sTzsrQzs7O087TyxPOzs7TztPLE87O08sa0IsTTtPLE87OztPO08sZ0I7O3lCLGdCOztPOzs7USxNO1Esb0I7Tzs7dUI7O08sZ0I7OztPO087OztPO087TyxPOztPLG9CLE07TyxPOzs7TztPO08sZ0I7OztPO08sTzs7O087TyxPOzs7TztPO087TyxPOzs7TztPLE87OztPO08sUztPLE87OzBCLE87OzRCOzs7TztPLE87O087O1EsTTtRLG9CO08sTzs7OEI7Ozs7TztPO08sTzs7O087TyxPOzsyQixPOzsyQixPOzs7TztPLGdCOzswQixPOzsyQixPOzsyQixPOzs7TztPLE87Ozs7Ozs7TztPLFU7TztPLE87a0MsTzs7Ozs7Ozs7O0k7STtJO0ksTzs7OztJO0k7aUM7Ozt3Qjs7O087Tzs7Tzs7Tzs7TyxrQixNO08sTzs7O087aUI7O087d0M7TyxPOzswQixnQjs7Tzs7USxNO1Esb0I7TyxPOzs4Qjs7O08sb0IsTTtPLE87OztPO08sTzs7O087TyxPOzswQjs7MEIsTzs7MEI7OzBCLE87O3dCLE87OztPO08sTzs7Ozs7STtJOzs7O087TyxVO08sTzs7d0IsTzs7O08sUztPO08sTzs7O087TyxVO08sTzsrQzs7TyxtQyxNO087TyxPOzs7TztPLE87O3dCLE87OztPO08sTzs7OztJLHFDLE87O0ksTzs7OztJO0k7Ozt5QixPOzs7TztPOzs7TztPOzs7TztPLE87O3dCLE87O3dCLE87a0MsTzs7Ozs7STtJLFU7SSxPOzs7Ozs7Ozs7SyxNO0ksMEM7STtJO0k7SSxPOztHO0k7OztRO1E7O087O1EsVTtRLE87Tzs7O1E7UTtRLFM7USxPO087O1EsVTtRLE87Tzs7USxVO1EscUI7Tzs7USxVO1EscUI7Tzs7Ozs7OztRLFU7USxxQjtPOzs7UTs7Ozs7OztRO1E7O3dCOztRO1EsUztRO1EsTztPOzJCLDRDOzs7UTtRO1EsTztPOzs7UTs7OztRO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7OztRO1E7UTtRLE87TzsyQixTOztROzs7OztRO1E7UTtRLE87Tzs7UTs7Ozs7UTtRO1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7O1E7Ozs7O1E7USxTO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7O1E7UTtRLE87Tzs7O1E7OzZCLE87OytCLE87OytCLE87OztXO1csZ0I7O087O1EsVTtRLE87Tzs7O1EsVTtRLE87Tzs7O1E7O1EsUzs7Tzs7UTs7UyxPOzs7USxPO087Ozs7Ozs7OztROzs7Ozs7UTtRO1E7OztXOztZOzs0Qjs7WSxPOztXOzs7WSxNO1c7VyxPO1U7O1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7O0ksTztHOztJLFE7O0c7O0k7SyxPO0ssTztLLFM7SSxPOzs7YyxPO2E7O0c7RyxzQjtHOzs7TSxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksNEM7Ozs7UTtpQjs7Ozs7SSxXO0k7Yzs7Rzs7STs7Ozs7Ozs7Ozt1Qjs7UTs7Ozs7STtHOztJO2dCOztJO0c7O0ksSTs7O0ssTzs7Ozs7O2dCLE07Ozs7Ozs7Tzs7O1E7VTs7Ozs7Yzs7dUIsTztzQjs7Ozs7Yzs7dUIsTztzQjs7Ozs7Ozs7Ozs7Ozs7OztpQjs7MEIsTzt5Qjs7Ozs7O2E7O3NCLE87cUI7Ozs7TyxPOzs7Ozs7Ozs7SSxPO0c7O0ksdUI7STs7Ozs7Ozs7O00sVztNOzs7Ozs7STs7O0k7SztLO0k7Rzs7SSxPO0c7O0ksTzs7O2M7YzthOztHOztJLE87OztjO2M7YTs7Rzs7STtLO0s7OztTO1MsTztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7O0k7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7OztJO0c7O0ksZ0I7SSxVO0ksTztHOztJO0s7SSwwQztJO2dCOztJO0c7O0ksVTtJLE87OztjOztlOztnQzs7ZTtjO2MsTzthOzs7Rzs7STtJLE87OztjO2MsTzthOztHOztJLEksOEI7SSxPOzs7YyxjO3dCO2M7YyxPOzthOztHOztJO0k7bUI7O0s7TTs7OztHOztJO2dCO0k7O0s7SyxNO0ksTztHOztJO0s7SztJO0s7O007TSxNO0ssTzs7STtHOztJOzs7O007OztJO0c7OEIseUM7O0k7Ozs7TTs7O0k7RzsrQiwwQzs7SSxPO0c7Ozs7SztLOztNOztLO007TyxNO08sTTtPLE07TTs7Ozs7O007O0k7STtLO0s7TTtLO007Szs7Ozs7Ozs7Ozs7OztVO1UsSSxVLDRCOzs7Ozs7Vzs7Ozs7O007Ozs7Ozs7Ozs7Ozs7OztLLFU7Ozs7Ozs7Ozs7Ozs7UztTLE87Ozs7O0s7Szt3RTs7O0ksVztJO0s7TSxNO007SztLLFU7SztLOzs7O0s7SyxNOztHOztJLE87OztjO2E7O0c7O0ksTzs7O2MsTzs7O3dCOzs7eUI7eUI7O3VCOzthOztHOztJO0c7O0k7Rzs2QiwyQzsrQiw2QzsrQix5Qzs2Qix1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssaUM7OztJO0c7O0k7STttQjtnQjtLLG9COzs7O0c7O0k7STtnQjs7SyxTLHVCOzs7Rzs7SSxTOztJO0c7O0ksaUI7Rzs7STs7Ozs7Ozs7Z0I7OztHOztJOzs7Ozs7OztnQjs7SSxPO0c7O0k7SyxhOztNLFk7bUI7bUI7TSxPO0s7SyxPLG9DO0c7O0k7O00sWTtNLE87SztLLE8sNEI7Rzs7STs2QixzQixhOzZCLHVCLGM7NkIscUIsWTs7Rzs7STsyQyxnQzs7RztHO0k7STtJO0k7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7O0ssTTs7Syx3QixPO0ssTzs7STs7O0ssTztLLE87SSxPO0c7O0k7O0ssTTs7STtHOztJO0k7OzthLFk7YTthO1k7Rzs7STtJOzs7YTtjLFM7OzthO2E7WTtHOztJOzs7Szs7O0k7SyxXO0s7Ozs7K0I7Ozs7O0ksTzs0Qyx3QjtHOztJO0ssSTtLLEk7Ozs7STtnQixPO0ssSSxpQixJLDhCOzs7Ozs7O007TTs7Ozs7O0ssMEI7Ozs7O0c7O0k7bUM7STtLLE87SyxPO0ssTztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0ssSTs7STtnQixPO0ssSSxpQixJO0s7bUIsTTtNOzs7TztRLE07OztPOzs7dUIsTTtNO087UztXO08sTztNOzs7Ozs7TTs7Ozs7Rzs7STtJO0c7O0k7SyxJO0ssTztLLE87STtJLGE7STtHOztJOzs7Rzs7Ozs7Ozs7O0ksUyxPO0k7O0s7OztJLE87O29CLGMsNkI7O0ksVSxNO0ksa0I7OztLOztPLGM7Tzs7Ozs7Ozs7O0c7c0IsYyxtQjs7STtJOzs7RztzQixZO3NCLGtEOztJOztLO087OztVOztXOzs7Ozs7Ozs7Ozs7O1UsTztTOzs7STs7TSxNO0s7OztNLEk7TTtNOzs7O08sSSx3Qzs7OztTOzs7Vzs7Uzs7Ozs7Tzs7Ozs7SyxjOzs7SyxNO0k7Ozs7SyxNO0s7Szs7Ozs7TSxJLFk7Ozs7Ozs7O1M7Ozs7O1E7Ozs7O00sdUI7TTs7Ozs7SSxjO0c7O0k7OztrQjs7STtHOztJLGdDOzs7O1E7Ozs7OzJCOztROzs7Ozs2Qjs7UTs7OztRLHFCOzs7Ozs7SyxNO0ksbUI7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O0c7O0k7SyxNO0ksc0I7Ozs7O08sTTtNOzs7Ozs7SyxJO0s7Z0I7TTtNLEc7O087UTs7Ozs7Ozs7STtJLFc7STs7O087O007O0ksSSxlLHNCO0k7OztPOzs7UTs7Ozs7Ozs7O1k7Ozs7YyxNOzthO2EsSyxrQzs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7OztROzs7TTs7STtHOzs7O0s7OztNOztLLE07O0ksTTs7O0k7OztLLFc7Ozs7STs7SztLO087Ozs7VTs7O1U7UztLOztLLE07STtLO0s7SztPOzs7O1U7Vzs7WTs7WTs7O2E7Ozs7WTs7Ozs7UztJO0c7a0Q7O0k7O0s7SztJOzs7SSxXO0ksTztHOzs7O0s7Szs7SSxNOzs7STtLLE8scUI7SSxNO0c7Ozs7SztLO0s7O0ksTTs7O0ksWTtJO0ksVztHOztJLFc7SSxtQztHOzs7STs0Qjs0Qjs7O0csSSxtQjt1QixXO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1UsUTs7Uzs7VSxPOztTOztVO1c7O1ksTztZLE87VyxPOzs7Ozs7Ozs7O2tCO1U7Uzs7VSxRO1U7Ozs7VztXO1U7Uzs7VSxLLHlCO2tCOztVO1M7O1UsUTtVLEksWTs7OzhCOzs7VTtXLFU7VztVO1M7O1UsUTtVO1U7Uzs7VTs7O1U7VTtTOztVOztXO1k7YTs7OztjLE87YTs7WTtZOztVLE87Uzs7VTtVO1c7OztjOzs7Yzs7OztlLE87Ozs7Ozt5QixHLDhCO2tDOzs7OzBCOzt5QixNOzs7O3lCLFE7Ozs7Ozt5QiwyQjt5QixxQjsyQzt5Qjt5Qjs7O2MsTTs7VSxPO1M7O1U7VztZLFE7WTs7VyxnQztTOztVO1U7O1c7WSxNO1c7O2M7ZSxTO2UsZTtlOzs7Ozt1Qzs7YztlO2U7Ozs7O1M7O1UsMEI7VTs7OztTOztVO1U7Ozs7ZTtnQixTO2dCLGU7Ozs7d0MsTzs7O2U7Ozs7VyxPOztTOztVOzs7Ozs7VyxNOzs7O1c7WTs7ZTtnQixTO2dCLGE7Ozs7dUMsTzs7O2U7Ozs7VyxPOztTOztVO1U7Ozs7MEM7O2U7Ozs7ZTs7VyxNOztTOztVO1c7VyxlOztTOztVOzs7cUM7bUI7bUI7O1M7NkIsNEI7O1UsbUI7Ozs7Uzs7VTs7VztZLE87bUI7OztVO1M7O1U7Uzs7O1U7OztVLE87Ozt1QyxTO2lDLFM7O1M7O1U7Uzs7VSxtQjs7Uzs7VSxLO1csTztVLEc7VyxNO1U7VyxRO1csVTtVO1M7b0MsZ0I7O1U7VTt5QjtXO3VCO1csc0I7Ozs7Uzs7VTtzQjs7VTtTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7VTs7WTtZOzs7OzRCOztZO1k7Ozs7O1M7O1Usb0IsVztVLE87Uzs7Ozs7OztVO1csUTtXLFU7OztXO1c7VyxPOztVO1M7O1U7O1M7O1UsbUMsTztVO1U7VSxpQjs7OzJDLGtDO3lDLGlDOztVO1UsWTs7Vzs7WSxPO1ksTztXO1c7VyxXO1csTzs7VTs7Uzs7VTtVOztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTtrQztrQzs7OztVO1csTTs7VTtvQjtvQjtTOztVO1UsRyxXO1c7VSxNO1M7O1UsRyxXO1c7VSxNO1M7O1U7VTtTOztVO1U7Uzs7VTs7OzhCOztXOzs7K0I7O1U7UztvRCx5Qjs7Ozs7Ozs7VTs7O1U7VztXO1c7VTtTOztVO1UsTztTOztVO1UsTztTOzhCLHVDOztVO1c7VztVLE87Uzs7VTtXLE07O1M7O1U7VTtTOztVLEksYztVO1M7O1U7Ozs7OztVO1M7O1U7VTt5QjtXLEksUzs7OztTOztVO1U7Ozs7b0IsTyxjO21COztTOztVO1U7Ozs7b0I7OzhCLGM7bUI7O1M7O1UsTztTO29DLHVCO2dDLHVCOztVO1c7O1k7O1csTzs7Ozs7O3FCO3FCO29COzs7OztVOztXOztXLFE7c0I7VTs7VztVO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLFM7OztVO1U7dUI7VyxJLFM7Ozs7Uzs7VTtVLE07UztzQyx5QixTO3FDLHlCLFM7O1U7VTtvQjtvQjtTO2lDLDJCOztVOztXOztZOzs7VyxlLE87O1csTzs7O3NCLE87VSxNO1M7O1Usa0I7VTtTOztVO1M7O1Usa0I7VTtVLE07Uzs7O1U7VTtTOztVO1U7Vzs7cUI7Ozs7OztvRSxTO3dELCtCO2dELFM7O29COztVOztTOzs7VTtvQjs7Uzs7VTtvQjtVOztXO1UsTztTOztVO29CO1U7O1c7VSxPO1M7O1U7b0I7VTs7Vzs7VztVLE87Uzs7VSxlO1M7O1UsZTtTOztVO29COztTO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7STtJLE87Rzs7STtJLE87Rzs0QixPLHNDOzRCLE8sdUM7NkIsZ0M7O0ksaUIsNkI7STtHOztJO0c7Z0MseUM7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7MEIsOEI7O0k7SSxPO0c7O0k7Rzs7SSwwQzs7O0ksTztHOztJOzs7Ozs7Ozs7O087Ozs7Ozs7Tzs7OztJOzRCOztHOztJOzs7Ozs7Ozs7Ozs7O0s7O0k7NEI7O0c7O0k7SSxPO0c7O0k7Rzs7STtHOztJO0s7TTs7O087OztPO087TTs7SztLLGdDO0c7O0k7SztNOzs7Tzs7O087TztNOztLO0ssZ0M7RzsrQixnQzs7SSwrQjs7STtHOztJO0c7O0ksWTs7STs7O0ksWTs7STs7O0ksTTtHOztJO0s7SztJLE07Rzs7STtJLE07Rzs7STtJLE07Rzs7STs7O3dCO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7USxNOzs7O0k7Rzs7SSxxQjs7Ozs7Ozs7Ozs7O2dCOztnQjs7O007OztJO0c7RztJOzs7Ozs7SSxzQixtQixvQjs7Rzs7STs7O0s7SztLOzs7SztPOzs7Ozs7STs7OztJOzs7STs7Szs7STtHO0c7STs7Ozs7STs7Ozs7O0s7SyxROzs7SyxLO0k7Ozs7SSxXO0k7OztJLEk7STtHOztJO0ksVztHOztJO0k7Rzt5QixpQzs7STs7NEIsVyw4QjtJLE87Rzs7SSxtQyxjO0ksTztHOztJO0ksTztHOztJOztLO087O2dDLHNDOzs7STs7Ozs7O2U7Rzs7STtLOzs7SyxPO0s7SSxVOzs7Rzs7STtLOzs7SyxPO0s7SSxVOztJO0c7O0kscUM7Yzs7STs7O0kscUM7YztJOztLO0s7SSxPOzs7STs7Ozs7O0ssUztLO0k7OztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLLE87SyxPO0ksTzs0Qyx3QjtHOztJO0s7TSxhO00sYztNLE87TSxPO00sTztLLE87O0k7SyxPO0ssZ0I7SyxPO0ssTztJLE87Rzs7STtHOztJO0c7O0k7Rzs7STs7OztjLFc7YyxPOztxQyx3Qjs7YTs7Rzs7STtLLE87SyxPO0k7Rzs7STs7Ozs7SztxQztJOzs7Ozs7WTs7Ozs7STthO0k7Rzs7STtJO0c7OztJOztHOztJLHlCOztJOzs7SSxrQjtJOztLO087Yzs7Z0I7OztLOztNO007TTtxQjs7O0k7O087OztVOzs7VztVO1M7OztJO0c7O0k7SyxNO0k7O0ssbUI7SyxxQzt1Qjt1Qjt1Qjs7TSxNOztNLE07OztNLE07O0s7STtJOzs7MkI7Ozs7USwwQztRLGtCOzs7O0k7RztxQyw2Qjs7STtHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOzs7d0I7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjttQzs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7UztTLFE7UztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7OztTO1M7UTtPOztROztTOzs7OztTO1MsSTtRO087O1E7Ozs7Ozs7OztTLE87UyxPO1M7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtRO087O1E7O1M7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7O1MsTztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7O2E7OztTLE07UTtTLE87UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsSztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTLE87Uzs7O2lCOzs7UTs7O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7O1M7UyxPO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7UztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOztTLE87Uzs7O2lCOzs7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7OztTO1MsTztTO1E7OztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTLEs7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1E7UTtTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UyxLO1M7UTs7O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1MsSztTO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7Ozs7OztROzs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7OztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Uzs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7UztRO087O1E7O1M7Ozs7O1M7O1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7UztROzs7UTs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTLE07UztRO087O1E7Ozs7Ozs7OztTO1MsTTtTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7O1M7Uzs7Uyw0QjtROzs7O1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UyxTO1M7UztTO1E7OztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1MsUztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1MsTztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLE87UztTO1c7O1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsTztTO1M7Vzs7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UTtRO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7Ozs7O1MsSztTO1M7Uzs7UTtTO1U7Ozs7UTs7O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7OztTO1M7Vzs7Ozs7Ozs7OztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztXLHlDLGM7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztROzs7UTs7Ozs7OztTO1M7Uzs7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLE87UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UyxPO1M7UztTO1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLE87UztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEs7UztTO1M7UTtPOztROztTOzs7OztTLEs7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7O2E7O1M7UyxPO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1MsTztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7Uzs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7OztROzs7UTs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO1MsTTtROztTO1c7O3lCLHdCOztROzs7UTs7Uzs7Ozs7UztTOzs7UztRO087O1E7O1M7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7OztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7UyxLO1M7UTs7O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7OztTLEs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UyxPO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTOzs7UyxPO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7Uzs7O1k7Ozs7Ozs7Ozs7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7UTtPOztROztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTOzs7UztTLE87UztTO1c7Ozs7Ozs7O1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7O1M7UyxtQjs7O2M7UyxXO1M7UztXOztROzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7O1M7UztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7UTs7O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7O1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztROzs7O1E7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1MsUTtTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztROzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UTtPOztROztTOzs7OztTOztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1M7O1M7UztTO1E7Ozs7Ozs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UyxPO1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1MsTztTO1c7Ozs7Ozs7Ozs7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTLE87UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UyxRO1MsTztTLE87UztXOzs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UyxPO1M7UyxPO1M7Vzs7Ozs7Ozs7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UyxLO1E7UTtTO1MsSTtTO1E7OztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsTztTLE87UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsTztTLE87UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1MsSTtTO1E7OztROztTOzs7Ozs7O1M7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7O1E7UTtTO1MsSTtTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTOztTO1E7OztROzs7Ozs7Ozs7UyxJO1E7Tzs7UTs7Ozs7Ozs7Ozs7UyxJO1E7OztROzs7Ozs7Ozs7UztTO1MsTztTLEk7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsbUI7OztjO1MsTztTLFE7UztTO1c7Uzs7UztROzs7UTs7Ozs7Ozs7OztTO1M7UyxPO1M7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxtQjs7O2M7UyxPO1MsUTtTO1M7VztTO1E7OztROztTOzs7Ozs7O1M7UztTLE87UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UyxPO1MsUTtTO1M7VztTO1E7OztROztTOzs7OztTO1M7UyxPO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7O1M7UztTOzs7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7Ozs7OztTO1M7Uzs7O1M7UztROzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UTs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTOztTO1M7O1E7USxNO087O1E7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7Vzs7O2M7YzthOzs7UyxPO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTs7O1E7Ozs7Ozs7Ozs7OztTO1E7UTtTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1c7OztjO2M7YTs7O1MsTztTO1E7OztROztTOzs7Ozs7OztTO1M7UTs7O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7OztTLGU7UztTO1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1E7OztROztTOzs7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7Tzs7UTs7Ozs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTs7O1E7O1M7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtRO087O1E7Ozs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7OztROztTOzs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTtPOztROzs7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzs7O1M7UztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztRO1E7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7UTtTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7UTtTO1M7UztROzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztROzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7UyxPO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7Ozs7Ozs7O1E7OztROztTO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1M7UTs7Ozs7O087O1E7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7UztROzs7UTs7Uzs7Ozs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTLE87UztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTO1MsSTtRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7O1M7Uzs7OztTO1U7OztRLEksdUI7UTtPOztROztTOzs7Ozs7Ozs7UztTOzs7O1M7VTs7O1EsSSx1QjtRO087O1E7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztVOzs7USxJLHVCO1E7OztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7OztTO1U7Ozs7UTtTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTO1E7OztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UztTLE87UyxXO1M7Vzs7Ozs7Ozs7OztTO2U7UTs7O1E7O1M7Ozs7O1MsUTtTO1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLHlCO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOztTOzs7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7O1M7OztRO1MsTTtRO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1E7UTtTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1MsTztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7Uzs7UyxRO1E7Tzs7UTs7Uzs7Ozs7O1M7O1MsUTtRO087O1E7O1M7Ozs7OztTOztTO1E7Tzs7UTs7Uzs7Ozs7O1M7O1M7UTtPOztROztTOzs7Ozs7O1M7O1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTOztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1MsaUI7O1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTLFc7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UyxLO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7Uzs7UztROzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UyxLO1MsSztTO1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Uzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7Uzs7Uzs7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7Uzs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UztTO1MsSztTLEs7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1MsSztTLEs7UztTOzs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTOzs7O1M7UTtRO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UyxPO1MsVztTO1c7O1M7ZTtROzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UyxLO1MsSztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTLEs7UztTO1MsSztRO1E7UyxPO1M7UTs7O1E7O1M7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7OzthOztTLE87UztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLGdCO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Uzs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1E7UTtTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxPO1M7UyxRO1M7Vzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTLFE7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztTLE87UztXOztTO1M7UztROzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7UztTLEk7UTs7O1E7O1M7Ozs7Ozs7O1M7UztTO1MsTztTLFE7UztTLEk7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1M7O1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1MsTztTO1M7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UTtPOztROztTOzs7Ozs7UTtPOzRCLE0sMkM7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UyxNO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UztTOzs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEs7UyxLO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTLEs7UztTO1M7UyxLO1MsTztTO1E7OztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTOzs7WTs7Ozs7Ozs7Ozs7O1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7d0QsTztHOztJLE87Rzs7SSxPO0c7dUQsTztHOztJLE87Rzs7SSxPO0c7O0ksTztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOztJLE87Rzs7STtHOztJLE87Rzs7SSxPO0c7O0ksb0I7Rzs7STtJLGM7STtJLE87RztHLEkscUM7OEIsMEM7Rzs2Qix1QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7SztLOzs7Ozs7STs7O0k7STs7OzBCO0ksYzs7O0k7STtHOztJLGdCOztJO0ksSSxVLDZCO0k7STtHOztJLE07MEI7Rzs7SSxNO0c7O0k7Ozs7TSxVOzs7Ozs7Ozs7O08sTTs7O08sTTs7TTs7Ozs7O0c7O0k7Ozs7Uzs7Uzs7Uzs7O3NCO0k7Rzs7SSxnQjtJLE07OEI7Rzs7STsyQixPO0k7O3FDO0c7O0k7MkIsTztJOztxQztHOztJO0ksTztHOztJLE87Rzs7STtJO0c7O0k7STs7Ozs7OztHO0c7STtJOzs7SSxXO0ksTzs7RztHO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztHOztJO0c7Rzs7O00sdUI7Ozs7bUI7O1E7UyxVO2dCOzs7O1U7O1csTztrQjs7Ozs7OzthOzs7Ozs7O2dCLGtCOztnQixPO2U7Ozs7Ozs7YTs7Ozs7OztnQixvQjs7Z0IsTztlOzs7cUI7O1U7O1csZTtrQjs7Ozs7a0I7Ozs7O2tCOzs7Ozs7O2E7Ozs7Ozs7Z0Isb0I7O2dCLE87ZTs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxhO0k7STtLLE87O0k7RzswQjs7STtJO0s7O1E7Ozs7Ozs7VTs7VTs7VTs7VTs7YTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVOztVLG1CO1U7Ozs7UyxTO3FDO1M7UztVLE87O1M7O1MsZ0M7O1M7VSxPOztTOztTOztTOztTOztTOztZOztTOztTOztZOztTO1M7O1M7O1k7O1M7Uzs7Uzs7Uzs7WTs7Uzs7Uzs7WTs7UztTOztTOztZOztTO1M7O1M7O1k7O1M7O1M7bUI7UztVLFc7VTs7OztpQzs7OztTO21CO1M7Uzs7UzttQjtTOztTO21CO1M7Uzs7UztnQjtTOztTO1U7WTs7VSxRO1M7O1M7a0I7Uzs7UztVO1k7O1UsVTtTOztTOztZO1M7O1M7VTs7O1M7O1M7VTtZOztVOzs2Qjs7O1M7O1M7VTtZOztVLFc7VTs7NkI7OztVO1M7O1M7VTtVO1k7O1U7VSxVO1UsYTtVOzs2Qjs7O1U7Uzs7UztVO1k7O1UsYTtVOzs2Qjs7O1U7Uzs7UztVO1U7WTs7VTtVLFU7VSxhO1U7OzZCOzs7VTtTOztTLGdDOztTLFE7Uzs7UyxVO1M7O1M7O1M7O1M7O1M7O1k7O1M7O1M7O1M7VTs7O1M7O1M7VTs7Ozt3Qjs0Qjs7UztVO1k7O1U7OztlLGE7ZTtjOzs7O1M7OztVLFc7VTs7UztVOzs7Uzs7Uzs7WTs7UztVLFc7VSxZOztTLHlCOztTLFk7Uzs7OztTOztTO1Msc0I7Uzt1Qjs7VTs7VTtXOztjOzs7Ozs7Vzs7O1U7VztXO1csTTtXO1c7VyxVO1c7VyxZOzs7VyxJLGU7Ozs7Ozs7a0I7Ozs7Vzs7O1U7Ozs7b0M7Ozs7Uzs7Uzs7Uzs7Uzs7Uzs7Uzs7UztpQjs7O0s7OztHOztJO2tCOztLO007O1M7OztNOzs7Ozs7bUM7UTs7Ozs7UyxNOzs7UyxPOzs7O1E7Ozs4QjtROzs7WTs7Ozs7O1csd0I7O1ksTTtXOztZLE87WSxROztXOzs7Ozs7O1E7OztROztTO1MsUTs4QjtROzs7WTs7Ozs7O1csNEI7O1ksTTtXOztZLE87WSxVOztXOzs7Ozs7O1E7UTtROzs7UTs7UTs7Vzs7UTtRO1E7UTs7O1E7O1E7O1E7O1E7O1E7Ozs7UyxNO1E7O1MsTztTLFU7O1E7O1E7Z0I7UTtROzs7UTtnQjs7O0c7O0k7a0I7O0s7TTs7Uzs7O007Ozs7Ozs7UTtTO1MsSzs7UztTLFE7UTtRO1M7UztTOzs7O1EsUTtROzs7UTs7UTs7UTs7O1E7UyxNO1MsTTtTOzs7Ozs7UztVO1U7WTtlO3NDO1E7Uzs7Uzs7OztTLFU7Uzs7UTs7O1E7Z0I7UTtROzs7NkI7O1EsVTtROzs7Rzs7STs7SztNOztTOzs7TTs7Ozs7USxTO1E7UTs7OzZCOztROztXOztRO1E7OztRLFE7UTs7O0c7O0k7STtLOztROzs7OztTOztTO2lCOztLOzs7Rzs7STtjOztJLE87Rzs7SSxlOztLO0s7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7VTtXLE07VyxNO1csVTtVO1UsRzs7Ozs7Ozs7OzsrQjs7Ozs7Ozs7Ozs7Ozs7OzswQjs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7TSxjOzs7OztTLFU7UztTLFU7Uzs7O1MsVTtTO1M7Ozs7OztTLFU7UztTO1UsTTtVLE07UztTO1UsTTtVLE07UztTLFU7Uzs7O1MsVTtTO1M7VSxNO1UsTTtTO1MsVTtTO1MsVTtTO1M7OztNOztJO0k7Rzs7STs7OztjOztJLE87Rzs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7OztHOzs7Ozs7O0c7Ozs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjtJLEc7SztJLFc7SSxHO0s7SSxXO0ksRztLO0ksVSx1Qjs7Ozs7eUI7OzBCOzsyQjs7UztVLE87aUI7Ozs7Ozs7Ozs7Ozs7OztJLFM7Ozs7O3dCOzswQjs7MkI7O1M7VSxPOzs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLO0ssYztJO0c7O0k7SztLOztVOzs7Ozs7STtHOztJOzs7Ozs7STs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7TTtPO08sVztPLFc7TyxPOzs7OztJO0c7O0k7STtHOztJOztPOzs7SSxPO0c7c0MsZ0M7NEIsMkI7O0k7Ozs7OzBCOzsyQjs4Qjs2Qjs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1ksbUM7Ozs7Ozs7Ozs7MEI7Ozs7d0I7OztPOzs7bUI7O0k7Rzs7STs7Ozs7O0s7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix5Qzs7STs7O2E7aUMsTztJOzs7O00sTTs7b0Isd0IsTzs7SztLOzs7Rzs7STs7SSxROztJO0k7SSxPO0c7O0k7STtlOztjO2M7YztjO2M7Rzs7STs7eUI7OztPOzs7bUI7Ozs7Ozs7bUI7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7TyxPOzs7OztJLE87Rzs7STs7OztROzs7OzZCLE8sdUI7Ozs7Tzs7Ozs7aUI7aUIsTztnQjs7OzsyQixPOzs7cUIsTzs7TyxPOzs7O1E7Ozs7NkIsTyx1Qjs7OztPOzs7OztpQjtpQixPO2dCOzs7OzttQyxlO21DLG1COzRCLFksMkI7K0IsZ0IsdUI7O0ksZSx5Qjs7bUMsbUI7a0MsTywwQjs7SSwyQztLLE87SSxPO2M7Yzs7O2dCO0c7O0k7SSxPO0c7OEIsd0I7O0ksTztHOztJLFE7SSwwQjtRO0ksTzs7Ozs7Yzs7Ozs7O0ksOEI7STs7SyxPOzs7Ozs7bUM7Ozs7SSxPOzs7Ozs7a0M7Ozs7STtJOztNLE87Ozs7b0M7O29DOzs7Ozs7O1MsTzs7Ozs7bUI7Ozt1Qzs7OztTLE87Ozs7dUM7Ozs7Ozs7O1UsTzs7Ozs7b0IsUTs7b0IsTzs7Ozs7OEI7OzttQjs7d0M7Ozs7Ozs7SyxPOzs7O21DOzs7Rzs7SSxlOztrQyxPOzs7eUI7Ozs7USw0QjtROztPLE87Ozs7O2lCOzs7OztPLE87Ozs7O2lCLFE7O2tCOzs7O2dEOzs7O2lCLE87Ozs7K0M7O2dCOzs7Ozs7Ozs7O1c7OztZLE87Ozs7OzswQzs7MEM7Ozs7VyxPOzs7O3lDOztVOzs7VzsyQiwwQjs7Ozs7TyxPOzs7OztpQjs7Ozs7O087OztRLDRCO08sTzs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7OztXOzs7WSxPOzs7Ozs7c0IsTzs7OztzQixRO3NCO3VCOzswQjtzQixPOzs7OztnQzs7O3FCOzswQzs7OztXO1U7TyxPOzs7OztpQix3Qjs7aUI7a0I7Ozs7Ozs7O2lCLE87Z0I7OztpQjs7OzttQixPOzs7Ozs2Qjs7Ozs7aUI7Z0I7Ozs7Ozs7Ozs7VyxPOzs7Ozs7eUM7OztPLFksTzs7TyxPOzs7Ozs7O2lCOzs7OztPLE87Ozs7OztxQzs7O3lCOztPOzs7O3FDOzs7O0c7O0k7SyxPOzs7O21DOzttQzs7Ozs7SyxPOzs7O21DOzs7Ozs7Ozs7O0s7Ozs7O00sZ0M7Ozs7OztJOzs7TSw0QjtNOztLLE87Ozs7O2U7Ozs7O0k7SyxPOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7OztxQzs7Ozs7OztLOzs7SztNLE87O0s7Ozs7Ozs7Ozs7Ozs7O1M7VSxPOztTOzs7USxHO1MsTztpQixPOzs7O1MsTzs7Ozs7OzttQjs7OzttQjs7Ozs7USxPOzs7Ozs7O2tCOzs7Ozs7O1MsTzs7Ozs7OzttQjs7Ozs7O0k7SyxPOztJO0c7O0k7OztJO0s7TSxPOztLOzs7a0MsTzs7OzhCOzt5QixPOzs7TyxPOzs7O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7Ozs7Ozs7dUIsTzs7Ozs7O1EsTzs7Ozs7Ozs7O1csaUM7Ozs7Ozs7YSxhLE87Ozs7VyxPOzs7Ozs7eUM7OztPOztRLE87Ozs7O2tCOzs7Ozs7TyxPOzs7OztpQjs7Ozs7OztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7O08sTzs7OztxQzs7cUM7OzswQixPOzs7TyxPOzs7O3FDOzs7O3FCLE87O08sTzs7O08sTzs7OztxQzs7O3lCOztPLG9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRLDRCOzs7TyxPOzs7Ozs7O2lCOzs7O0k7Ozs7a0M7OztHOztJOzs7O0k7SyxPOzs7O21DOztJO0ssZ0I7Ozs7O00sZSxPOzs7SyxPOzs7Ozs7bUM7OztJLGlCOzs7OztLO2UsTzs7SyxPOzs7Ozs7bUM7Ozs7SyxPOzs7Ozs7bUM7OztJLE87Ozs7OztrQzs7a0M7Ozs7SSxlOzs7Ozs7OztNOztROzswQiw2Qzs7O007Ozs7Ozs7Ozs7Ozs7VyxZOztXLE87O1U7O3FEO1k7Ozs7bUM7Ozs7OztlOzs7O21DOztZOzs7O21DO1c7Ozs7a0M7Ozs7OztjOzs7O1c7O1U7O087UywyQzs7Ozs7Ozs7Vzs7OztrQzs7Vzs7Ozs7Ozs7OztZOzs7YTthO1k7Ozs7Ozs7Ozs7Ozs7K0M7Ozs7Ozs7Ozs7Ozs7OzhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUQ7Ozs7Ozs7Ozs7Ozs7OzsrQzs7Ozs7OztZOzs7Ozs7Ozs7OztTO1U7VyxnQjtXOzs7OztZOzs7O1U7VztXLEk7Vzs7Z0I7Z0I7Ozs7Ozs7WSxNOzs7Ozs7O1U7c0I7VyxTOzs7cUM7cUM7VTs7Ozs7Ozs7Ozs7Ozs7TTs7O0k7OztJOztLOzs7SSxPOzs7O2tDOztrQzs7Rzs7STs7SyxPOzs7O21DOzs7O0ksMEI7STtJLE87Ozs7O2M7OztrQzs7Rzs7O0k7SSwwQjtRO0k7Ozs7TTs7O0ssTzs7UTtJLE87Ozs7O2M7Ozs7Yzs7OztrQzs7Rzs7STs7TSxPOzs7O29DOztvQzs7O21DLE87Ozs7O1M7OztVO29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7OztlLE87Ozs7O3lCOzs7Ozt5Qjs7Ozs7OztZOztlOztZOzs7VyxPOzs7O3lDOzs7cUI7Ozs7Ozs7O1ksRzs7Ozs7Ozs7Ozs7OztpQjs7Ozs7Ozs7OztXOzs7O2EsTzs7Ozs7MkM7Ozs7O1k7O2U7O1k7OztXLE87Ozs7eUM7OztxQjs7Ozs7UyxPOzs7OzttQjttQjtvQjs7dUI7bUIsTzs7OztpRDs7OzZCOzs7a0I7Ozs7OztTO1M7OztXLE87Ozs7Ozt5Qzs7Ozs7VTs7Ozt3Qzs7OztTLE07Ozs7O1MsTzs7Ozs7O3VDOzs7O1MsTzs7Ozt1Qzs7Ozt1Qzs7OztTLE87OztTLE87Ozs7Ozt1Qzs7Ozs7Ozs7YSxPOzs7Ozs7MkM7Ozs7O1MsTzs7Ozs7bUI7Ozs7OztTLE87Ozs7dUM7Ozs7UyxPOzs7O3VDOzs7OztVLE87Ozs7d0M7OztTLE87Ozs7dUM7O3VDOzs7OEI7Ozs7Ozs7O1M7Ozs7dUM7Ozs7Ozs7OztVOzs7O3dDOzs7Ozs7Ozs7O1U7VyxPOzs7OztxQjs7b0I7Ozs7VyxPOzs7OztxQjs7OztxQjs7OztVOztXO1c7a0M7OztVLE87Ozs7O29COzs7OztVLE87Ozs7d0M7O3dDOzs7O1UsTzs7Ozt3Qzs7d0M7Ozs7VSxPOzs7O21COztvQjs7O3dDOzs7O1UsTzs7Ozs7b0I7Ozt3Qzs7OztVLE87Ozs7Ozt3Qzs7OztVLE87Ozs7O3dDOzt3Qzs7Ozs7Ozs7Vyw0QjtXOztVLE87Ozs7d0M7OztvQjs7O3dDOzs7OztXOzs7O3lDOzs7Ozs7YTs7OztjO2M7cUM7YSxPOzs7Ozs7Ozs7dUIsUztzQzt1QixPOzs7O3FEOztzQjs7Ozs7Ozs7Ozs7OztlLG9DOzs7Ozs7YTtjLE07YztjLDRCO2M7O2EsTzs7Ozs7dUI7Ozs7Ozs7TSxPOzs7O29DOztvQzs7Ozs7OztPLE87Ozs7O2lCOzs7O007TyxPOztNOzs7Rzs0Qjs7STs7Ozs7O1MsTzs7Ozt1Qzs7Ozs7O1MsTzs7Ozt1Qzs7Ozs7SztNLE87O0s7O0ksa0IsTzs7STtHOztJOzs7STtLLGtCLE87O0s7Ozs7OzsyQjs7MEI7Ozs7Uyw0QjtTOztRLE87Ozs7O2tCOzs7O1E7Uzs7O3FDLE87cUMsTzs7O21DLE87b0MsTzs7Ozs7OztZO1ksNEI7WTs7VyxPOzs7OztxQjs7Ozs7O1c7OztTLE07Ozs7OztTLE87Ozs7Ozs7OztZLGlDOzs7OzthLEc7YyxPOzs7WSxPOzs7Ozs7MEM7Ozs7O1MsNEI7O1EsTzs7Ozs7a0I7Ozs7a0I7Ozs7Ozs7UztTLDRCO1M7O1EsTzs7Ozs7a0I7Ozs7O1EsTzs7OztzQzs7c0M7OztROzs7Ozs7UyxrQztRLE87Ozs7c0M7Ozs7Ozs7Ozs7OztRLE87Ozs7c0M7O3NDOzs7UTs7OztTLDRCO1EsTzs7OztzQzs7O2tCOzs7c0M7Ozs7USxPOzs7O3NDOzs7STs7OztrQzs7O0c7O0k7OztJLE87OztjLE87Ozs7OzRDOzs7O0c7O0ksTzs7O2MsTzs7Ozs7NEM7Ozs7Rzs7SSxPOzs7OztrQzs7Rzs7SSxPOzs7O2tDOzs7Yzs7O2MsTzs7Ozs7d0I7OzthOztHOzs7SSxPOzs7OztrQzs7Ozs7SSxPOzs7OztrQzs7OztJLE87Ozs7O2M7OztrQzs7Rzs7STs7OztPLE87Ozs7cUM7OztpQjs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7cUM7OztpQjs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7O2lCOzs7O3lCOzs7Tzs7O0c7O0k7Ozs7TyxPOzs7OztpQixRO2lCO2tCOztxQjtpQixPOzs7OzsyQjs7O2dCOzs7O3FDOzs7Ozs7O1E7K0I7UTs7Tzs7Ozs7VSx5QztVLE87Ozs7d0M7O1M7OztVOzs7Ozs7TyxPOzs7OztpQjs7O3FDOzs7O087Ozs7TyxPOzs7Ozs7O3FDOzs7Rzs7O0s7SyxPOzs7Ozs7O21DOzs7O21DOzttQzs7STtJLFE7O2U7O0k7Szs7UTtJLE87Ozs7O2M7Ozs7Yzs7O0c7O0k7OztPLGtEO08sTzs7Ozs7cUM7OztpQixTOztpQixPO2dCOzs7aUI7Ozs7Ozs7USxPOzs7Ozs7OztzQzs7O2tCOzs7O08sd0M7TyxPOzs7Ozs7Ozs7cUM7OztpQjs7Ozs7OztRLE87Ozs7Ozs7O3NDOzs7a0I7Ozs7Tzs7Ozs7Vzs7OztVO1E7TyxPOzs7Ozs7OztpQjs7Ozs7OzttQixPOzs7Ozs7aUQ7O2lEOzs7O2tCOzs7Z0I7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7O2lCOzs7OztPLE87Ozs7cUM7OztpQjs7Ozt5Qjs7O087OztHOzs7SSwwQjtRO0ksTzs7Ozs7Yzs7Ozs7MEI7Ozs7Z0Q7OzBCOzs7O2dEOzthOzs7Yzs7Ozs7STtLLE87Ozs7bUM7O21DOzs7Ozs7TyxPOzs7OztpQjs7aUI7a0I7O3FCO2lCLE87Ozs7OzJCOzs7Z0I7Ozs7OzBCOzs7TyxPOzs7O3FDOztxQzs7Ozs7O1E7O1c7O1E7OztPLE87Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7OztPLE87Ozs7cUM7O3FDOzs7MkI7OztPLE87Ozs7Ozs7cUM7OztHOztJO0k7O00sTzs7OztvQzs7b0M7Ozs7Ozs7O1MsTzs7Ozt1Qzs7O1EsaUQ7O1MsTzs7Ozt1Qzs7dUM7OztRLE87Ozs7O3NDOztzQzs7Ozs7OztVOzthOzs7Z0IsTzs7Ozs4Qzs7Ozs7MEI7Ozs7O2dCLE87Ozs7Z0IsTzs7Ozs7OzhDOzs7O2dCLE87Ozs7Ozs4Qzs7OztnQixPOzs7OzhDOzs7OzswQjs7Ozs7Z0IsTzs7OztVOztTLE87Ozs7dUM7OzttQjs7Ozs7OztRO1MsTzs7UTs7O0c7O0k7OztJOzs7OzJCLE87Ozs7Uyw0QjtTOzs7USxPOzs7OztrQjs7Ozs7USxPOzs7O3NDOzs7MEI7OztRLE87O1E7Ozs7c0M7Ozs7O0k7SyxPOztJO0c7O0k7OztJOzs7O2tDOzs7Rzs7STs7OztPLE87Ozs7Ozs7O2lCOzs7O2lCOzs7OztPOzsyQjs7MEI7OzBCOzs7O1EscUI7USxPOzs7O2lCOzs7O2tCOzs7O08sSTtPLE87Ozs7Z0I7cUM7OztpQjs7Ozs7TyxPOzs7Ozs7OztpQjs7Ozs7OztRLFU7O1E7O1M7Ozs7VztnQzs7Z0M7Ozs7O1M7Ozs7VztnQzs7Z0M7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7aUIsUzs7aUI7aUIsTzs7OzsrQzs7Z0I7OztpQjs7Ozs7Ozs7O087USxNOztPLE87Ozs7O3FDOzs7aUI7Ozs7TyxtQjtPLE87Ozs7Ozs7O2lCOzs7OztPLE87Ozs7cUM7OztpQjs7Ozs7Ozs7O1csTzs7Ozs7Ozs7cUI7Ozs7O3lDOzs7cUI7Ozs7TyxVOztvQjs7O1E7O1c7O1E7O08sTzs7Ozs7aUI7Ozs7aUI7Ozs7MkI7O3lCOzs7TztPOztHOztJO0ssTzs7OzttQzs7bUM7Ozs7OzBCLE87Ozs7USw0QjtROztPLE87Ozs7O2lCOzs7Ozs7O1EsTzs7OztpQjtzQzs7c0M7Ozs7TyxPOzs7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzttQzs7Rzs7STs7OztrQzs7O0c7O0k7Ozs7Ozs7UyxPOzs7O3VDOzs7bUI7Ozs7O087OztPO087OztPO087Ozs7O1E7UTtRO1E7O087Tzs7Ozs7O0s7TSxPOzs7O29DOzs7Ozs7O1M7OztTLE87Ozs7Ozs7OztLLE87Ozs7bUM7O0k7Ozs7OztPOztRLE8sd0MsWTs7OztPLE87Ozs7cUM7OztpQjs7O3FDOztxQzs7OztNLE87Ozs7b0M7O29DOztvQzs7Ozs7O00sTzs7OztvQzs7b0M7O29DOztvQzs7OztLLE87Ozs7bUM7O21DOzttQzs7Ozs7OztLLE87Ozs7bUM7Ozs7O0ksTzs7OztrQzs7a0M7Ozs7OztLLE87Ozs7Ozs7bUM7O21DOztJO0ksUTs7ZTs7SSwwQjtRO0ksTzs7OztrQzs7O2M7Ozs7O0k7Ozs7Ozs7Ozs7TSxpQixPOzs7OztJLE87Ozs7O2tDOztrQzs7Rzs7STs7OztPLE87Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOzs7O08sTzs7Ozs7OztpQjs7OztpQjs7Ozs7O1EsTTs7Tzs7MEI7OzBCOzs7TyxPOzs7O2dCOztpQjs7OztrQjs7Ozs7bUI7O29COzs7O3NCOzJDOzs7O29COzs7OztpQjs7OzttQixPOzs7O2lEOztpRDs7O2lCLE87Ozs7K0M7O2dCOzs7aUI7Ozs7Ozs7Ozs7WSxxQztZLE87Ozs7cUI7MEM7OzBDOzs7c0I7Ozs7VyxJO1csTzs7OztvQjt5Qzs7O3FCOzs7O087USxNOzs7Ozs7OztRLE87Ozs7aUI7c0M7O3NDOzs7a0I7Ozs7a0IsTzsyRDtpQjs7OztPLE87Ozs7Z0I7cUM7OztpQjs7OztpQixPOzBEO2dCOzs7Ozs7OztPLE87Ozs7OztpQixTOztpQjtpQixPOzs7OytDOztnQjs7O2lCOzs7O08sbUI7TyxPOzs7OztxQzs7O2lCOzs7Ozs7OztXLE87Ozs7eUM7O1U7OztXLDhCOzs7Ozs7Ozs7YTs7Ozs7Yzs7Ozs7O1csSSxPOzs7Ozs7Ozs7O1csMEI7ZTtXLE87Ozs7Ozs7O3FCOzs7Ozs7cUI7Ozs7cUI7Ozt5Qzs7O3FCOzs7O08sVTs7b0I7OztROztXOztROztPLE87Ozs7O2lCOzs7O2lCOzs7OzJCOzs7TyxPOzs7O3FDOzs7aUI7Ozs7eUI7OztPO087O0c7OztJLDBCOzs7Ozs7Ozs7SSxPOzs7SSxRO0ksMEI7SSxPOzs7OztjOzs7Ozs7O0s7Ozs7O0ssTzs7Ozs7OzttQzs7Ozs7bUM7O21DOztJO0ksUSxNOztlOztJLDBCO1E7SSxPOzs7O2tDOzs7Yzs7Ozs7O0ssTzs7Ozs7Ozs7bUM7O21DOztJOztJLE87Ozs7O2M7OztHOztxQixrQix3Qjs7SztpQjs7O2U7Ozs7O3FDOztlOzs7O3FDOztJOztLO0s7O0k7O3VCLHdCLHdCO0s7OytCOzs7Ozs7VSxhLE87O1UsTzs7Ozs7b0I7Ozs7UztNLE87OztLLE87Ozs7Ozs7ZTs7O0k7O0ssTzs7O2U7ZSxPOzs7OzZDOzs2Qzs7Yzs7STtJLE87Rzs7O0ssTzs7Ozs7ZTs7O0k7O0ksTzs7Ozs7YyxRO2MsMEI7YyxPOzs7Ozt3Qjs7O2E7Ozs7Ozs7Yzs7OztrQzs7Rzs7Ozs7Ozs7OztLLFM7O0ssTzs7Ozs7ZTs7O0k7STtLLE87Ozs7OztlOztnQixPOzs7OzswQjs7Ozs7dUI7ZSwwQjttQjtlLE87Ozs7O3lCOzs7Yzs7bUM7OztJLE87Ozs7Ozs7O2M7O2UsTzs7Ozs7eUI7Ozs2Qzs7Ozs7YywwQjtrQjtjLE87Ozs7O3dCOzs7NEM7O2E7O2tDOzs7O0k7OztLOzs7SSxPOzs7Ozs7O2tDOztHOzs7Ozs7O007SywwQjtLO0ssTzs7OzttQzs7O2U7OzttQzs7O0k7Rzs7SSxnQzs7Ozs7Ozs7Ozs7OztJLDBCO0k7O0ssTztlO2U7Ozs7OztxQzs7OztJLE87YztjOzs7Ozs7b0M7Ozs7STs7O3lCLE87OztxQixPOztPLE87OzBCLE87OztPLE8sd0I7O0c7O0k7OztNOzZCO007OztLLE87Ozs7O2U7Ozs7O2dCLE87O0ksTztHOztJLE87Ozs7a0M7O0c7O0k7STtJO0ksTztHOztJO0k7STtJLE87Rzs7STtJO0k7SSxPO0c7RyxpQztHLCtCO0csaUM7RyxpQztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RywrQjtHLCtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STs7SSxZOztJO0c7O0k7SyxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7O0c7O0k7O3NFO0k7Rzs7STtLO0s7SyxVO0s7Szs7Szs7Ozs7Ozs7TztPO08sTTs7Ozs7O08sVTtPLG9DO08sTTs7TTtPO08sTTs7Ozs7Rzs7Ryw2QjtHO0csMEI7RztHLDhCO0c7Ryx1QjtHO0csd0I7RztHLHlCO0c7RyxzQjtHO0csMEI7RztHLDBCO0c7Ryx3QjtHO0csd0I7RztHLDJCO0c7RyxtQztHO0csaUM7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHLHlCO0c7OztNLDhCOzs7O1M7Ozs7OztVOzs7Yzs7OztZOzs7Ozs7O1k7Ozs7Ozs7WTs7Ozs7OztZOzs7Ozs7Ozs7OztTOzs7O1UsTTs7WTs7Ozs7O2dCOzs7Ozs7Z0I7OztTOzs7VTs7YTs7Z0IsTzs7Z0IsTzs7Z0IsTzs7Z0IsTzs7O2dCLE87OztZO2dCOzs7Ozs7WTs7O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O0c7O0kscUI7SSxJO0k7Ozs7MkI7OzJCOzs7a0I7Rzs7STs7cUIsTzs7O08sTzs7OztPLE87Ozs7Ozs7OztHOztJLE87Rzs7STs7Ozs7Ozs7Rzs7STtHOztJLGlCLE87O0c7O0ksWSxPOztJLE87OztJOzs7TyxPOztxQixPOzs7O1EsTzs7TyxPOzs7O08sTzs7O0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSxPO0c7O0ksTztHOztJLDhCOzs7SyxPOzs7SSxPOzs7SSxPOzs7Yzs7YTs7Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7MEIsTzs7O1E7UTtROzs7Ozs7UTtROzs7UTtROzs7UTtRO1EsTzs7O2tCOzs7bUI7bUI7bUI7OztrQjtrQjtpQjs7OztRO1E7OztROzs7Ozs7UTtRO2tCOztROztRLDRCOzs7O1E7Ozs7OztRO1E7OztROzs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztROzs7Ozs7USxPOzs7USxPOzs7O1E7UTs7O1E7aUI7O1E7O1E7UTtTLE87O1E7OztRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7OztRO1E7UTtTLE87O1E7OztRO1E7OzRCOzs7USxPOzs0Qjs7Ozs7OztRO1E7UyxPOztROzs7UTs7Ozs7Rzs7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztRLE87OztRO1E7Ozs7OztRO1E7OztTOzs7O1U7VTs7OztVO1U7VTs7OztTOzs7UztTO1M7OztROzs7Ozs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTs7O1E7UTs7O1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtRO1E7Ozs7OztRO1E7UTtTLE87O1E7OztRO1E7UTtRO1MsTzs7UTs7O1E7Ozs7OztRLE87OztROzs7Ozs7UTtROzs7UTtROzs7Ozs7UTtROzs7Ozs7UTs7Ozs7O1E7Ozs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7OztRO1E7UyxPOztROzs7UTtROzs7Ozs7Ozs7O1E7UTtROzs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7O0s7SztLO0s7OztJLE87OztJO0k7STtJOztHOzs7STs7O0k7STtJO0k7STtJO0k7STtJO0ksZ0I7O21CLDJCOzs7SztLOzs7O0s7Szs7O0k7STs7Rzs7STtJOztHOztJO0ksTzs7O2M7YztjO2E7O0c7O0k7O3lCOzsyQjs7O087USxPOztPOzs7OztRO1E7O1E7UyxPOztROztPO1EsTzs7Tzs7OztJOzs7STtJO0ksSTtJO0k7STtJO0k7OztHOztJO0k7STtJO0k7STtHOztJO0k7STtJLEk7STtJO0ksZ0I7OztLO0ssTzs7O0k7Z0I7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7UTs7OztRO1E7UTs7Ozs7O1E7UTs7O1E7Ozs7Ozs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOzs7Ozs7O087Tzs7Rzs7STtJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTtROzs7Ozs7UTtRO1E7OztRO1E7Ozs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7Ozs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087Ozs7Ozs7TztPO087Ozs7Ozs7TztPO087OztPO087Tzs7O087Tzs7eUI7Ozs7Ozs7TztPOztHOztJOztLO0s7OztJO0k7OztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztRO1E7Ozs7O1M7Uzs7Ozs7O1M7Ozs7Ozs7UTtRO1E7OztRO1E7UyxPOztROzs7Ozs7O1E7UTtTLE87O1E7OztRLE87OztHOztJOzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087O087OztPO087OztPO087Tzs7O087TztPOzs7Tzs7Ozs7O087OztPO087Tzs7O087Tzs7O087Tzs7eUI7Ozs7Ozs7O087TztPOztHOztJLFk7O0k7OztJOzs7TztPOzs7TyxPOzs7Ozs7OztPO087OztPO087OztPO087OztPLE87Ozs7Ozs7Rzs7STtJOztLO0s7SyxJLG1COzs7O1EsTzs7O1E7UTs7Ozs7UztTOzs7O2tDOzs7OztRO1E7Ozs7OztROzs7Ozs7UTtRO1E7UyxPOztROzs7UTtRO1MsTzs7UTs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STs7aUMsdUM7O0k7STtJLEksaUI7Ozs7TztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087O3lCOzs7Ozs7OztPO087Tzs7Rzs7STtJOztHOztJO0k7O0c7OztJO0k7STs7Ozs7Ozs7OztJO0k7O0s7STtJO0k7OztJLHFDOztJOzs7Ozs7Ozs7STtJO0k7STtJOzs7O0k7STs7OztJO0k7OztLO0s7O0k7OztJO0k7STs7STs7O087USxPO087Tzs7VTtPOztRO1E7UTs7Ozs7UTtROzs7Tzs7OztHOztJO0k7STs7Rzs7O0k7STs7OztJO0k7Ozs7STtJO0k7OztJOztLOzs7O00sTzs7SztLO0s7OztJO0k7RztnQyx1QzttQyx1Qzs7STs7O0s7Szs7Ozs7OztJO21COzs7OzZCLE87OztxQixPOztPLE87OztPLE87O08sb0IsTztPLE87O0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFc7Ozs7SSxjOzs7SSxnQyxPO0ksVzs7O0ksWTs7SSxXOzs7O0ksZ0I7OztJLGU7STs7OztLLFE7SSxPO0c7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOzs7TyxPOztPOzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLE87USxPO1E7TyxPOzs7Tzs7O1E7VTs7O2E7Ozs7YyxNO2MsUTthO2M7OztlLE87Ozs7OzBCO2EsTzs7O08sTzs7Tzs7O1EsTztRLE87UTtPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRO1U7OzthOzs7O2MsTTtjLFE7YTtjOzs7O2UsTztlLE87Ozs4QzthLE87OztPLE87OztPOzs7USxPO1E7VTs0QztPLE87OztPOzs7O1EsTztRLHNCO1E7VTs7MkI7O1E7TyxPOzs7Tzs7O1EsTztRO08sTzs7O08saUIsTztPLE87Ozs7STs7Ozs7Ozs7O0ssTTtLLFE7SztLLGU7SyxXO0ssSztLLEs7SyxLO0s7O1E7OztXOzs7O1ksTztZLE87VyxXOzs7SyxPO0s7O1E7O3lCOztJLE87Ozs7Ozs7Ozs7Ozs7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJO0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0ssTztLO0ssTztLOztROzt5Qjs7SSxPOzs7Ozs7Ozs7OztJOzs7O0ssTTtLLFE7SyxPO0ksTzs7O0k7Ozs7O0ssTTtLLFE7O0s7Ozs7TSxlO007OztTOzJDOzs7OztJO0ksTzs7OztJOzs7O0ssUTtLLFU7STs7Tzs7O1EsTztRLE87UTtPLE87OztPLGlCLE87TyxPOztPOzs7O1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7OztJOzs7O0ssUTtLLFU7STs7TyxrQixPO08sTzs7Tzs7Ozs7O1EsTztRO08sTzs7O087Ozs7OztRLE87UTtPLE87Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztLLE87SSxPOzs7SSxZO0ksaUMsTztJOzs7STs7OztLLFE7SyxVO0k7O08saUI7TyxPOztPLGtCLE87TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7O1EsTztRLE87USxPO08sTzs7O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUI7TyxPOzs7O0k7O08sa0MsTztPOztPLHVDO087O087OztRLE87Tzs7Tzs7O1EsTztPOztPOzs7USxPO087O08sb0M7Tzs7OztJOzs7SyxRO0k7O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O087OztRLFU7USxPO08sTzs7OztJOzs7O0ssUTtLLFU7STs7TyxpQjtPLE87O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPOzs7USxPO1EsTztPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPLG1CLE87TyxPOzs7O0k7OztLLFE7STs7Tzs7O1EsVTtRLE87TyxPOztPOzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7TyxrQixPO08sTzs7TyxrQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7Tzs7O1EsVTtRLE87TyxPOzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7TyxtQixPO08sTzs7Tzs7OztRLE87USxPO1EsTztPLE87Ozs7O29DOztROzs7O1MsVTtTLFE7UyxlOztPO1E7OzthOztjLFc7O2EsNEIsTzthLG1COzs7UTtVOzs7YTs7O2MsUTthO2M7Ozs7ZSxPO3lDOzs7YTs7O08sTzs7O087OztRLE87UTtVOzRDO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7O1EsZTtRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsZTtRLE87USxzQjtRO1U7OzJCOztPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRLE87UTtRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087Ozs7USxlO1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7Ozs7O1EsTztRLE87USxPO1EsTztPLE87Ozs7Ozs7Ozs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7OztRLE87USxlO1EsTztPLE87OztPOzs7UTtRLE87TyxPOzs7TyxxQjtPLE87O087OztRLE87UTtPLE87OztPOztRLE87USxzQjtRO1U7OzJCOztPLE87O087Ozs7USxPO1EsTztRO08sTzs7O087OztRLE87USxPO08sTzs7O08sb0IsTztPLE87O08sb0IsTztPLE87O087OztRLGU7USxPO08sTzs7O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7OztRLE87USxPO1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7OztJOzs7OztLO0ssTTtLLE07SyxNO0ksTzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7Tzs7O1E7USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7UTs7O2E7OztjLE87YTtxQjs7c0M7OztZOztRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsTztRLHNCO1E7VTs7MkI7O08sTzs7O087O1EsTztRLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPLG1CO08sTzs7TyxtQixPO08sTzs7TyxtQjtPLE87O08sbUIsTztPLE87O08saUIsTztPLE87O087OztRLE87UTtPLE87Ozs7O0k7Ozs7SyxRO0ssVTtJOztPOzs7USxPO1EsTztRO08sTzs7O08saUIsTztPLE87O087Ozs7O1EsTztRLE87USxlO08sTzs7Ozs7Ozs7O087OztRLE87UTtVOzRDO1EsTztPLE87OztPOzs7O1EsTztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7Ozs7STs7SyxXOzs7SSxjOzs7STs7OztLLFE7SyxVO0k7O087Ozs7USw4QjtRLE87TyxPOzs7Tzs7Ozs7UTtRO08sTzs7O087Ozs7O1E7UTtPLE87OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0s7SyxPO0s7O1E7MEM7SSxPOzs7Ozs7Ozs7OztHO0k7OztRO1MsTztTLE87UTtPOztRLFc7USxPO087OztROzs7O1MsTztTLGU7USxXO087O1EsVztRLE87Tzs7USxXO1Esc0I7Tzs7USxXO1Esc0I7Tzs7Ozs7OztRLFc7USxzQjtPOzs7O1E7Ozs7Ozs7UztTLGU7UztTOztZOzs2Qjs7UyxXO1MsVztRLE87O087O1EsVztRO087OztROzs7UyxPO1E7Tzs7O1E7Ozs7UyxPO1MsVztTLFc7USxPO087O1E7Ozs7UyxPO1MsVztTLFc7USxPO087O1E7Ozs7OztTLE87UztTLFc7UyxXO1EsTzs7Ozs7Ozs7TzsyQixTOztROzs7OztTLE87UztTLFc7UyxXO1EsTztPOztROzs7OztTLE87UztTLFc7UyxXO1EsTztPOztROzs7OztTO1M7UyxXO1MsVztRLE87Tzs7OztROzs7OztTO1MsZTtTLFc7UyxXO1EsTztPOztROzs7OztTLE87UyxXO1MsVztRLE87O087O1E7Ozs7O1M7UyxXO1MsVztRLE87O087OztROzs2QixXOzs7VyxXOzs7VyxXOztXOzs7WSxlO1csVzs7Tzs7USxXO1EsTztPOzs7USxXO1EsTztPOzs7UTtTLE87O1MsZTtRO087O1E7O1MsVzs7O1EsVztPOzs7Ozs7O1E7Ozs7Ozs7UztVOzs7VyxPO1U7a0I7O21DOzs7O1M7OztVLE87VSxPO1MsVztRO1E7UyxPO1MsTztTLE87UyxXO1MsVztRLE87O087O1E7Ozs7OztTLE87UztTLFc7UyxXO1EsTzs7Tzs7Ozs7Ozs7Ozs7SyxNOztJO0ssTztJO0k7SztPOzs7VTs7VztXLE87VyxlO1UsTzs7Ozs7Uzs7O0s7SyxPO0ssZTtJOzs7STtLLE87SyxlO0ksTzs7RztHOztJO0ssZTtLOzs7OzRCOzs7Rzs7SSxhOztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3QjtzQixtQzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTztHOztJO0s7Ozs7TSxXO00sVztNO0ssTzs7STtJLE87Rzs7STs7O2dCO0ssVztJLE87OztxQixTO0k7Ozt3QjtTO0k7Rzs7STtLO0ssTztLLGU7STtHOztJO0ssUTs7OztLOztLOztLOztLOztLOztLOztLOztLOzs7O0s7O007TTthOztLO007YTtJOztLOztLOzt3Qjt3Qjs7O0s7O0s7O0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztROzs7OztJLE87Rzs7SSxPOzs7YzttQzs7O2U7Ozs7Ozs7Z0I7O2UsTztjOztlOzs7Ozs7Ozs7aUI7OztnQjs7ZSxPO2M7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7OztpQjs7O2tCO2lCLFc7Ozs7ZSxPOzs7Ozs7Ozs7OztnQixnQyxPO2dCLFc7O2UsTzs7Ozs7O2dCOzs7OztnQjs7Ozs7Ozs7O2dCOzs7OztnQjs7Ozs7Z0I7Ozs7O2dCO2dCLGE7Ozs7O2dCO21DLFM7aUI7O29DOzs7aUI7OztvQjtvQixPO21COzs7Ozs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQjs7Ozs7O2dCOzs7OztnQjs7Ozs7Z0I7aUI7O29CO3FCLE07b0I7b0IsTzttQjtpQjs7bUM7bUM7Ozs7Z0IsTzs7O2dCOzs7OztjO2E7O0c7O0k7SztPOzs7VTt1RDtVO1M7O0s7SSxPO0c7O0ksWTtnQixNOzs7Szs7STtHOzs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO007TyxXO08sTTs7OztNOztPOzs7SyxJLG1DO0ssVztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7TTtPLFc7TyxNOzs7O007O087OztLLEksbUM7SyxXO0k7STtLLEs7SztPLDJCOztLLFU7O0ssVTtLO0s7TSxRO00sSztLO0s7SztLLE87STtJOzs7OztpQjs7Z0I7Rzs7STs7Ozs7O08sYztPOzs7O0k7OztJOzs7Ozs7TyxjO087Ozs7STs7O0k7SSxXO0c7O0k7SSxXO0c7O0ksa0QsYztHOztJO0ssa0M7SztNOzs7VTtXO1ksTTtZLE0sbUI7Vzs7O1c7O1k7bUMsTSxvQztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TztPO087OztNO2dCOztLOzs7Szs7TSxNO0s7SyxPOztHO0csOEMsbUI7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7STs7Ozs7Ozs7OztJO0s7SyxRO2dCOzsrQzs7O0ssTTs7SSxNOztHOztJO0c7O0k7O0ssTzs7O0ksTzs7Rzs7O00sdUI7O00sVztLOzs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7Ozs7OztLO2U7O0ssTzs7Rzs7Ozs7Ozs7Ozs7STtJLGlCOztLLE87STtHOztJO0ksaUI7Ozs7OztRLE87OztRLE87OztrQjtrQjtpQjs7O0k7Rzs7STs7Ozs7Ozs7O1EsSztROzs7OztLOztJLGtCOzs7Ozs7USxPOzsyQjs7OztrQjs7O29CO29CO21COztrQjs7STtHOztJOzs7Ozs7Ozs7USxLO1E7Ozs7O0s7O0ksa0I7Ozs7OztRLE87Ozs7UTs7Vzs7NkIsaUM7O1E7a0I7Ozs7USxPOzs7O1EsTzs7OztrQjs7O29CO29CO21COztrQjs7Ozs7Ozs7OztLOztJO0c7O0k7O3VCOztJO0c7O0k7SSxpQjs7OzBCOzs7USxPOzs7STtHOztJOzt1Qjs7STtHO0c7SSxPO0c7O0k7a0I7O0k7Rzs7STs7dUI7O0k7Rzs7STtJLGlCOzs7b0IsTzs7OztRLE87OztJO0c7O0k7SSxpQjs7OztRLE87Ozs7USxPOzs7STtHOztJOzs7Ozs7O2dCO0c7O0k7Ozs7Ozs7Z0I7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixPLHVDOzBCLE8sdUM7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7STtJOztJO0ksVztHO3lCLGtDOztJOzs7SztPOzZDO0ksVzs7OztJLE87OztjO2MsTzthOzs7OztJLFEsTTtJOzs7SyxROzs7SSxJLGlDOzs7MkI7OztHOztJOzt1QixPOzs7TyxPO2UsTTs7RztHOztJO0s7O0c7Ozs7Ozs7O1EsSSxJOzs7O29COztROztRLHNDOzs7Ozs7UTs7Ozs7OztJLEk7Ozs7SztLOzs7STtJLE87Rzs7STt1Qjs7STtHO3FDLCtCOztJO2lEO0ksVTtJLE07Rzs7STtJOzttQzs7O1E7OztROzs7OztRLE87OytCOzs7O1E7USxPOzsrQjs7OztRLE87OztrQjtrQjs7bUI7OztrQjtpQjs7OztRO1EsTzs7K0I7Ozs7OztRLE87OztrQjtrQjs7bUIsTzs7MEM7Ozs7a0I7aUI7Ozs7OztRO1E7O1c7OEMsa0IsUztRLE87OytCOzs7UTs7O1M7Ozs7a0M7OztHOztJLFk7O0ksTzs7O0k7O0ssTzs2Qzs7O0ksTzswQywwQjs7O0k7OztPO087TztNOztJO0k7Ozs7SyxPOzs7ZTtlLE87O3NDOzs7Ozs7SSxPOzsyQiw0Qjs7Rzs7STs7O0s7SyxPOzhDOzs7STtHOztJO0ksTzs7MkI7O0c7O0k7RztHOztJO0k7O21DOzs7UTs7Ozs7USxPO2dEOzs7UTtrQjs7USxrQixPOztROzsyQjs7O1EsTzs7O2tCO2tCO2tCO2lCOzs7O1EsTztnRDs7O1E7Ozs7O1E7UTs7MkI7Ozs7O1EsTzs7O2tCO21COztpQjs7Ozs7MEI7O1Esb0M7Ozs7Z0I7OztHO3lCOztJO0k7O0c7O0k7STs7bUM7OzswQjs7UTs7UTs7OztTOzs7OztROzs7O1MsTzs7Ozs7VTs7OztVO1U7OzsrQzs7Ozs7OztRO1EsTzs7aUMsa0IseUI7Ozs7UTtROzs7UTtROzs7USxPOzsrQjs7OztRO1E7OytCOzs7UTs7O1c7VztXO1U7O1E7OztRO1E7OztRO1E7Ozs7O1EsTzs7K0I7Ozs7UTtRO1E7OztROzs7OztROzs7OztRO1E7Ozs7O1E7UTs7O1E7UTtROzs7OzJCOzs7OztRLE87O2lDLGtCLHlCOzs7UTs7OztTO1M7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7O1E7UTs7UTs7OztTO1EsTzs7K0I7Ozs7OztRO1MsTzs7UTs7USxxQzs7Ozs7UTs7Ozs7Uzs7UTs7Vzs7Z0M7Ozs7Ozs7Ozs7Ozs7Ozs7OztXLG1COzs7Ozs7O2E7OztXOzs7O1E7OztHOzhCOztJO3VCOztJO0k7Rzs7SSxPOzs7Yzs7OztlO2M7Yzs7O0c7O0k7SztPOzt5Qiw2Qjs7O0s7O0ssdUM7O0s7dUM7SztJOzs7SztLLE87O0k7STtHOztJOztHOztJO0k7Ozs7MEI7OzBCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7OztRO1EsTzs7O2tCOzt3Qzs7eUM7O3lDOzsyQzs7O3FCOzsyQzs7aUI7Ozs7UTtTLE87O1E7OzBCO29DOzs7Rzs7STs7O0k7STtJLEksZ0M7Ozs7OzBDO0s7Szs7Rzs7STs7O3lCOzs0Qjs7eUI7ZSxzQjs7RztrQywrQixTOztJLE87OztHOztJLGlDOzs7MEIscUI7Ozs7OzswQiw0Qjs7NEIsOEI7O087O1E7OztXO3VCOztXLE87VTtRO087O087O1E7USxRO1EsTTtPLFc7O087O1E7VTs7O2E7eUI7O2EsTztZOztRLE87USxNO087O3VCLGlDOztPOzswQjs7Tzs7UTs7O087TztRLFE7USxNO08sVzs7O087O3VCOztPOzs7Tzs7eUI7O087O087O3lCLHFCOztPLGtCO3lDO087O0k7O29COztJOzs7SSxJO0k7SSxPO0c7O0ksSTtJO0ksTztHOztJOzs7eUI7O3lCO2UsMkI7O0c7O0k7STs7OzswQjs7MEIsd0I7OztROztTOzs7OztpQjs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O1E7UyxPOztRO29DOzs7Rzs7STs7O0k7STs7Ozs7UTtRLE87OytCOzs7O1E7USxPOzs7Ozs7eUM7OzJDOzs2Qzs7O3FCO3FCOztxQjsrQzs7Ozs7O1E7Ozs7MEI7O1Esb0M7Ozs7O0c7NkM7Rzs7STtLOzs7STtJO0c7O0ksTzs7Ozs7Rzs7SSxpQzs7O3lCLGlCOztPLG1DO087OzBCLHFCOzs7Tzs7dUI7O087OzBCLDRCOzs0Qiw4Qjs7Tzs7UTs7O1c7dUI7O1csTztVO1E7Tzs7Tzs7UTtVOzs7YTt5Qjs7YSxPO1k7O1EsTztRLE07Tzs7cUIsbUM7O087O08sb0I7eUM7Tzs7MEI7OztPOzt3Qjs7Tzs7O087O3lCOztPOztPOztROzs7MEIsbUI7TztRLFE7USxNO08sVzs7TzttQyx1Qjs7OztJO0k7RztzQyw4QixTOzhDO0c7O0ksbUI7O0k7OztJO0k7Ozs7O1E7USxPOzsrQjs7O1E7Ozs7UztRLE87OytCOzs7O1E7UTs7Ozs7O1E7USxPOztpQyxrQix5Qjs7O1E7Ozs7Uzs7Ozs7O1E7UTs7MEI7O1EsbUM7Ozs7O0c7O0k7Ozs7OzJCOzs7Ozs7Ozs7Ozs7O1E7UTs7NEI7O1E7b0M7O0s7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7SSxjOzs7O0k7STtHOztJO0k7Rzs2QixrQiw4QjtpQyxjO3dCLHFCLFk7O0k7O0ssTzs7O0k7STtHOztJOzs4QixPOzs4Qjs7Tzs7O1EsTTtRLE07TyxPOztHOztJLHdDO0k7OztLLE07SyxNO0ksTztHOzhCLDhCOztJOzs7Ozs7Ozs7Ozs7Szs7STtHOztJOzs7Ozs7Ozs7O1M7Ozs7O0s7OztHOztJOztPOzs2Qjs7O0c7RztJOzs7Ozs7Ozs7O0k7OztHOzBCLDRCOzZCLDhCOztJO0s7Ozs7O2dDO1EsTzs7UTs7OztTLG1COzs0QjtRLE87OztRLE87Ozs7Ozs0QjtRLE87TTtHO3NDLHVCOzJCLHVCOzs7Ozs7Ozs7O0k7OztJO0c7O0k7Ozs7O007O3FCOztPLDJDO087OztLLE07OzJCOzs7Szs7b0I7O007Ozs7OztPO007OztJLE07Rzs7SSxZO0k7Ozs7Ozs7SyxJO0k7Ozs7Ozs7O0ksWSxPOzs7O0s7OztJO0c7O0ksUTtJOzs7Ozs7O0ssSTtJOztNOzs7Szs7OztrQzthO2E7O0k7aUIsTTs7K0I7Ozs7Ozs7bUIsTTtLOzs7Ozs7TSxJO0s7TTs7O21CLE07O087Ozs7Ozs7Ozs7bUIsTTtLOzs7OztNLEk7SyxZOzs7Ozs7SSxZO0ksa0I7STtHOzs7O21CO0s7Ozs7O00sSTtLLFkseUI7Ozs7OztJO0k7aUI7Szs7Ozs7TSxJO0s7O007OztlOztrQjs7Z0Msa0M7ZSxPOzs7Ozs7Rzs7Ozs7TTs7OztPLFM7Tzs7Ozs7O29COzs7Ozs7O0k7eUIsaUM7Rzs7SSxRO0ksYztJLE87Rzs7STs7YztjLHFCO2E7Ozs7Rzs7OzttQjs7SztLOzs7OztJO0k7Szs7TSxPOzs7SztLLDRCO0c7O0k7Ozs7dUI7O1EsaUI7Ozs7O1csbUI7OzttQjs7Ozs7Ozs7OzJCLE87bUI7Ozs7Ozs7Ozs7Vzs7OztLOztJO0c7O0k7SSxPO0c7O0k7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7OztVLE87Ozs7O1U7Ozs7O1c7VSxVOzs7Ozs7OztVOzs7OztXO1UsVTs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7OztVLGlCOzs7Ozs7Ozs7O0c7O0k7STt1Qjs7Ozs7Ozs7O1MsTzs7Ozs7O1ksa0M7WSxpQjs7Ozs7Ozs7WSxvQztZLGM7Ozs7Ozs7Ozs7Ozs7O1ksa0M7WSxjOzs7Ozs7TTs7Szs7Rzs7STs7YTs7SSxPO0c7Ozs7OztRLHFCLE07USxPOztRLHNDO2dCOzs7Ozs7Z0MscUM7O0k7STs7OzZCLE87O1E7OztTO1M7USxPOzs7RzswQixTOztJLE8sMEI7Rzs7Ozs7Ozs2QixvQjs7OztROzs7UztTLE07UyxNO1M7USxPOzs7O1M7Ozs7Ozs7SztLLEc7TTtPLE07YTs7Z0I7SztLLE87Ozs7Ozs7OzZCLE87Ozs7O1EsTzs7Ozs7O0ssTzs7OztJO0k7Ozs2Qjs7USxNOzs7Rzs7STs7OzsyQjs7OztROzs7Ozs7Szs7OztHOztJO0s7Szs7OzBCOztTLDhCOzs7Ozs7STtJO0c7O0k7STs7Ozs7OEIsTzs7Ozs7Ozs7Ozs7OztLOztHO3FDLDBCO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHlDO0k7Rzs7SSw2QztJO0c7O0ksNEM7STtHOztJO0c7O0k7Rzs7STs7WTs7Ozs7Rzs7STtLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO3lCO0k7SztNLE07TTs7OztZLE07Ozs7O0ssTTtJO0k7Szs7O0s7O0k7STtLO00sTTtNOzs7O1ksTTtJOzs7Ozs7Ozs7STs7Ozs7OztHOztJOzs7O007Ozs7OztPO007Ozs7TTs7OzsrQzs7O0k7TSx3Qyx1QjtLO0ksTTtHOztJO0s7SyxNO0s7SyxNO0s7O0s7Ozs7O0s7OztTOzs7OztJO0k7SztLLE07SyxhO0s7STtHOzJCLG9DO3lCLFk7O0k7Ozs7Ozs7OztLOztJO0c7O0k7Ozs2QyxVOztpRCxVO3dELFU7OztnQzs7STtHOztJO0s7SztLLG1COztHOztJOztPLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O0c7Rzs7O00sdUI7O00sVztLOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7OztJOzs7OztJOzs7Ozs7NEI7Ozs7OztnQjs7STtHOztJO0ssUTtLLFU7O0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQixPLGtDOztJO0ssTzs7O3lCLE87OztPLE87OztPLE87Ozs7SSxVO0k7RztHOzs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7OzBCLHFCOzZCLFMsZ0M7O0ksTztLLFU7Szs7SSxXO0c7O0ksTztLLFU7Szs7SSxXO0c7Ozs7Ozs7Ozs7OztJLGdEO0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJLHlCO0k7RztHO0k7Ozs2Qzs2QzswQixvQjtzQixXLDhCO3FCLFcsOEI7dUIsVyw4QjtzQixXLDhCO3VCLFcsOEI7NEIsVyw4Qjs7SSxXO0c7d0IsVyw4QjsyQixXLDhCOztJOzs7SyxNO0ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Tzs7OztVO1M7OztLO00sVTtNLE87O0s7O1Esa0IsTTtRLE87OztROzs7Uzs7WTs7O2M7OztlOzs7Yzs7O1k7VztTOzs7Uzs7WSxtQjtZO2EsTztZO1ksTzs7Ozs7O1c7USxPOzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7WSxPOzs7c0IsTzs7cUI7VztRLE87a0I7a0I7Ozs7Ozs7Ozs7USxPOzs7O1E7UyxPOzs7USxPOzs7Ozs7Ozs7Ozs7USxPOzt5QixPOzs7O2M7YztHOztJO0k7OztLOztHOztJOztLLFE7STs7RyxnQzsyQixpQztrQyxxQzswQiw2QjswQiwyQjtzQiwyQjtzQiwwQjs7STtrQzt1Qjs7SSxJLFUsa0M7OzsyQjs7O0c7NkIsZ0M7O0k7OztLOztJO0c7Rzs7O0s7Szs7OzhCLE87O1M7OztVO1M7O1Msc0M7Uzs7O1M7O1U7Ozs7O0k7STtHOztJO3VDOzs7Rzs7STtHOztnQyxPLHFDOztJLEksaUI7SSxPO0c7O0ksSSxrQjtJLE87Rzs7STtJLE87Rzs7SSxJLGlCO0ksTztHOztJO0ksTztHOztJLEksbUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLGtCO0ksTztHOztJO0ksTztHOztJLEksbUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLHdCO0ksTztHOztJO0ksTztHOztJLEksa0M7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLG9CO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSx1QjtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLHlCO29CLFk7MEIseUI7O0k7O087O087O087O087O087O087ZTs7RzswQixlOzBCLGU7MkIsZ0M7dUIseUI7dUIsbUM7NEIseUI7O0k7SSxzQjtHO0c7OztJO0k7Ozs7Ozs7Ozs7STtJO0c7O0ksSSxnQjtJO0c7O0k7SSxJLGtCO0k7OztLLEksa0I7SSxJLGtCO0k7OztLLEksa0I7SSxJLGtCOzs7OztJO0s7SztLO0s7STs7O0ssSSxrQjtJLEksa0I7STs7O0ssSSxrQjtJLE87OztjO2M7YTs7Ozs7Ozs7O0c7MEIsa0Q7eUIscUIsMkI7O0ksSSxpQjtJO0c7O0k7SSxPO0c7eUIseUI7O0ksc0IsaUIsa0I7O0c7O0k7SSxPO0c7d0IscUQ7O0k7O08sTzs7TyxPO2UsTzs7OztJO0ssTztJO0ksVTtJLE87Rzs7STtJLE87Rzs7STtnQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7VSxNO1U7Ozs7STtHOztJOzs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0k7Rzs7STtJO21COzs7Ozs7Uzs7Ozs7UTs7OztTOzs7OztROzs7OztHO3FDLG1CLFU7RyxZLHlDOztJOzs7O0c7O0k7STs7Ozs7Ozs7Szs7Rzs7STs7RztpQyxjOzs7Ozs7Ozs7Ozs7OzZCLGM7Ozs7Ozs7Ozs7Uzs7Ozs7OztLOztLOzs7Ozs7Ozs7O1Esc0M7Ozt3Qjs7STs7O0k7Ozs7O1Esc0M7Ozs0Qjs7STtHO3dCLGtCO3lCLGtCO3lCLGtCO3NCLGtCO2dEO0c7NEIsb0I7O0ksSztLLE07OztHOzhCLHFCOzhCLHFCO3VCLFU7MEIsVTs7STs7OztLLEk7O0c7O0k7SSxPO0c7MEQ7Rzs7STs7SyxzQjtLLE87OztHOztJO0k7Szs7O0s7O0c7MEIsa0M7NEIsa0M7MkIsa0M7MEIsa0M7O0k7STs7Szs7O00saUI7OztLOztLOztHOztJLEksZ0M7STtHOztJLEksMEI7STtHOztJOzs7Ozs7OztPOzs7USxNOzs7O00sVzs7Ozs7MEI7Ozs7O2tDO3lDOztJO0c7O0k7STs7O3VDOzs7O0ssTzs7Rzs0QixnQjs7STs7OztJO0c7O0ksWTs7STtHOztJO0k7Rzs7SSxXO0k7SSxPOzBDLDBCO0c7O0ksMEIsTztpQyxPO0k7Ozs7O0s7OztJLE87RztHLGE7O0k7O0k7RztnQyxzQzs7STs7MkM7OytDOzs4Qzs7OEM7Ozs7Ozs7Ozs7O0c7RztJLGdCOzs7Ozs7O0k7O0c7O0ksSSxtQjtzQjtJOztJOzs7Ozs7Szs7Ozs7SztLOztJO0c7O0ksSTs7Rzs7SSxJOztvQztJO0c7O0ksSTs7b0M7STtHOztJOzs7Rzs0QixnRDs7STtJOzs7bUQ7Ozs7SyxPOztHOztJO0k7O00sTzs7O007Tzs7Ozs7OztHOztJO0k7O00sTzs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0c7NEIsd0I7O0k7O0k7Rzs7SSw0Qzs7O2U7O0k7Ozs7O08sTTtNOzs7Ozs7SyxvQzs7Szs7Ozs7O0ksd0I7a0M7O0k7Ozs7dUM7O0k7Ozs7TSxxQjs7Ozs7O0ksTzs7O2M7Ozs7Ozs7OztnQzs7O2M7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE8sYztHOztJLE8sYztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHLHFCO0cscUI7RywyQjs7SSxPOzs0QjtHOztJLFc7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLDBCO3VCLDBCOzRCLDBCOztJLE87OzRCO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxPOzs0QjtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QixXLHlDOztJOztHOztJLGtDLE87SSxXOzs7STtJLE87O2U7Ozs7Rzs7STtJLE87Rzs7SSxXO0ksTzthOzs7Z0I7OztpQixPO2dCLE8sa0I7ZTs7RztHO0k7OztRLE07TztJOzs7Ozs7Ozs7OzsyQixPLDJDO21DLDJCOztJLE87Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7STtrRDtJO0c7O0k7MkU7STtHOztJOzs7Ozs7dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087O007O0s7O0k7Rzs7SSxRO1U7SSxJLEssNEIsUTs7OzswQjs7UTs7O1EsTTs7STtHOzBCLE8sbUM7O0k7Rzs7SSxXO0ksVztJLFc7SSxPOzs7YyxrQixROzhEO2M7YTs7Rzs7SSxJLHdEOzs7O00sVzs7TTs7Ozs7OztHOztJLFk7Ozs7O1E7UyxjO3lDOzs7Ozs7O1k7O1ksTTs7Ozs7O1Esc0IsTzs7O0k7Rzs7SSxZOzs7OztRO1MsYzs7Uzs7OzRCLE87O0k7Rzs7STs7Rzs7STs7Ozs7VTs7STtHOztJLFk7Ozs7OztRLGdCLG1COzs7NEI7OztJO0c7O0k7Z0I7SSxtQixVOzs7SztNLFk7TSxPOzs7STtHOztJO0ssTztLO087OztVLG1CLFE7Ozs7WSxPOzs7NEMsTzs7VTtTOzs7SyxPO0ssUTs7Ozs7Ozs7USxNOztJO0ssTztLO087OztVO1UsTztTOztrQjs7STtHOztJLG1DLE8saUI7Rzs7SSxZO2tDOzs7Tzs7TyxvQyxTO08sTzs7eUIsTzs7MkIsTzs7O2tCLE87TyxvQixXO08sTzs7Tzs7O1EsVztPLE87O08sb0I7TyxPLHdCOztPOztPOzs7USxXO08sTzs7O08sTzs7O2lCO2lCLE87Z0I7OztlLE07O0c7O0kseUMsTyxpQjtHOzs7O3FDOzs7TTtNOzs7Ozs7O0k7O0ssTzs7O0ksTzswQyxPLG9COzs7STs7SyxXOzs7STtZOzs7ZTs7OztnQixPO2U7Yzs7OztJLDhCOzs7Tzs7O08sTzs7NEIsTyxvQjs7OztPLE87OztpQjtpQixPO2dCOzs7OztJLFc7SSxPO0c7O0k7OzBCLE87OzBCLE87OzRCLE87OzBCLE87OzJCLE87OzBCLE87bUMsTzs7OztJO0c7O0ksa0IsTztJO0ksa0IsTztJOztHOztJO0ksa0IsTztJOztJLHlCO0ksa0IsTztJLE87RzswQztHOztJLG1CLE87SSxPO0c7O0ksaUIsTTtJO0k7SSxrQixPO0k7O0c7O0ksa0IsTTtJO0k7O0c7O0ksWTs7SSxPOzs7STs7MEIsTzs7O087TyxPO2lDLE87Ozs7STs7O087TyxVO087TyxPOzs7TztPO087OztVO1UsTztTOztPLE87OztpQjtpQixPO2dCOzs7O087TyxPOzs7O0ksMkI7Rzs7SSxlO0ksWTs7Ozs7OztRLG9CLE07USxPOzs7a0I7a0IsTztpQjs7Ozs7OztLLE87O0k7Rzt1QixTOztJO0ssUTs7Ozs7SztPOzs7VSxpQyxROzs7O1c7O1ksTTtrQjs7Vzs7OztZO1k7WSxPO2tCO1U7Uzs7STs7Ozs7MkI7OztJO0ksTztHOzs7OztrQzs7Ozs7UTs7Ozs7UyxNLHFDO1MsTTtRLGM7O3lCLFc7OztRLGdCOzs7a0IsVztROzs7O1MsdUI7USxXOztROzs7OztTLE07UyxNO1EsZ0I7O1Esb0IsTzs7Ozs7USxNOztRLE07O1E7O1E7OztTLFE7USxZOzs7UTs7Z0I7OzttQjttQixjO2tCOzs7Ozs7SSxXOztJLE87Rzs7SSxJLGdCLE07STs7O087TyxPO007O0k7RztHOzs7O3FDOzs7OztNLFUsNkI7Ozs7Ozs7RyxXOztJO3NDLHNCOzs7Rzs7STs7O0c7O0ksNEI7Ozs7SyxNOzs7SSxHLG1DOztJO0c7O0k7OzsyQjs7O0c7Rzs7SSxZOzs7O0ksZ0Q7STtHOztJLDhCOztJO0c7O0ksOEI7OztLLE87OztJLE87Rzs7STs7aUI7O0s7TTswQztLOzs7O0c7O0k7STs7Ozs7K0I7OztHOztJO0k7OztROztROzs7Rzs7STtJO3dCOzs7O0c7O0k7STs7Ozs7UTs7OztHOztJLGlCOztJO0c7MkIsdUM7K0IsdUM7O0ksTzs7c0Msb0I7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7O2M7YyxZO2E7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7c0Msb0I7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7O2M7YyxZO2E7OztHOztJLEksVTs7OztNLE07Ozs7STtHOztJLEksVTs7OztNLE07Ozs7STtHOztJLHVCO0c7O0ksVztJLE87Rzs7SSx3Qjs7Rzs7SSxJLDJCO0k7Rzs7STtLO0s7STtHOztJO0k7RztpQyxxQzs7STtJLGE7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFU7O0c7bUMsdUI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtJOztHOztJO0k7STs7eUIsa0Isc0I7O0ksTzs7Z0Msa0Isc0I7O0c7O0ksTztHOztJLFk7c0U7SSxNO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztJLEksVyx5Qjs7OzJCLE87OztHOztJO2M7O2dCO2dCO2M7OztJOzs7TyxPOzs7Ozs7Ozs7O087TztPO21DOzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0k7Ozs7Szs7TyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sUzs7Ozs7Ozs7O0k7Rzs7STtjO2M7O2dCO2dCO0c7O0ksYzs7cUI7SSxTO1k7OztLO00sSzs7YTs7Vzs7O0k7Z0IsTztLLFk7Ozs7TTs7Szs7O0c7O0ksVTtJO21CO0c7O0k7Ozs7SyxPOztJO0c7OztLOzs7Ozs7O29COzs7Ozs7O3NCOzs7b0I7Ozs7Ozs7Ozs7Ozs7O1UsTzs7Ozs7Ozs7Ozs7UyxPOzs7Szs7O0s7Ozs7Ozs7Ozs7Ozs7UywwQzs7O1MsMEM7OztTLDBDOzs7VTtVO1UsTzs7OztLOzs7SztNLE07Ozs7USxPOzs7OztrQjs7Ozs7USxPOzswQzs7O1EsbUI7USxPOzs7USxPOzs7USxPOzs7USxPOzs7USxPOzs7USxPOzs7OztrQjs7OzsyQixPOztROztTO1M7Ozs7eUI7Ozs7Ozs2QjthOzs7Ozs7O2dCOzs7Ozs7O1EsTzs7OztzQzs7OztRO1M7O1UsVzs7O2U7O1M7VTs7VSxjOztXLG9CLFU7Ozs7OztVO1c7WTs7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthOzs7Ozs7OztZLFE7O1ksK0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2UsVzs7O2U7O2tCOzs7ZSxXOzs7O2M7Ozs7O3VCOztXOzs7Vzs7Ozt3QjtTOzs7OztVLE87Ozs7MkIsTzs7O1EsTzs7Ozs7a0I7Ozs7OztTLE87Ozs7SyxPOzs7O21DOzs7O0s7Szs7Ozs0Qjs7Z0M7Z0I7Ozs7Ozs7STtJO0c7RztJOzs7Ozs7bUI7O3NCLE87O0s7Szs7OztxQixPLHlDO3dCLE8sNEM7RyxnQztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0kscUI7SSxPO0c7cUIsTyx5QztHLDZCOztJLDRCOzs7SyxPOzs7SSxPO0c7O0k7Ozs7USxPOzs7Ozs7c0M7Ozs7USxPOzs7Ozs7Ozs7STs7O0k7O0s7SztLO0s7SztLO0ssTzs7STs7O0k7O0ssTzs7Ozs7ZTs7OztJOzs7STs7OztRLE87Ozs7Ozs7Ozs7UTtRO1E7USxPOzs7USxPOzs7OztrQjs7OzswQjs7dUIsTzs7MEM7O1E7Ozs7Uzs7WTs7O2MsTzs7WTs7OztZOzthOzs7dUIsTztzQjs7Ozs7WTs7OztRLE87Ozs7Ozs7Ozs7O1E7UTtROzs7Vzs7OztXLE87O1U7O1EsTzs7O1EsTzs7Ozs7UTtRO1E7UTtRLE87O0k7OztJLE87Ozs7Ozs7MkI7O2U7ZTs7Ozs7Rzs7Ozs7d0I7Ozs7TSxPOzs7Ozs7OztnQjs7Ozs7Szs7a0I7Ozs7Ozs7SztlOzs7aUI7aUI7STtJLE87Ozs7Ozs7O2M7Ozs7Ozs7bUI7O3NCLE87O0s7SztLOzs7OztJLFU7O0s7SztLO0s7SztLLE87OztJO0ksTzs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0c7STtJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Yzs7Ozs7Ozs7OztLO0ksMEI7Ozs7Ozs7OztJLE87OztJLFU7dUIsTywwQztJLE87Ozs7O2M7Ozs7O0k7Ozs7Ozs7VyxVOztXLE87Ozs7O3FCOzs7O08sTzs7OztPLE87Ozs7Ozs7Ozs7O087OztROztXLFk7O1csTzs7O3dCLE8sMEM7TyxPOzs7Ozs7O2lCOzs7Ozs7STs7O08sTzs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7O0c7STs7STs7O1EsTztPOztJOzt1QixPLCtDOztJOzs7USxPO087O0k7OztRLE87Tzs7STs7O1EsTztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dEO0c7O0k7OztNLG9DOzs7OztLLGE7SyxPOzs7Ozs7Ozs7Rzs7O0ssWSxPO0s7OztNLE87SyxPOzs7O0ssNEI7Ozs7OztPLE87Ozs7Ozs7Ozs7SztNLFE7OztLOzs7Ozs7Uzs7O1U7Ozs7Ozs7TTtPLE87TztTOztNLE87Ozs7STtHOztJLG1DOzs7TyxPOzs7Ozs7OztPLE87OztPO2lCOztpQjs7O08sTzs7OztJLFk7O21CLE87Ozs7Szs7O007OztLOzs7Ozs7UTs7O1M7Ozs7OztNO08sTztPO00sTzs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0k7SyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Ozs7O1E7USxPOzs7Tzs7O1c7Ozs7Ozs7O2dCLE87ZTs7Ozs7aUI7Ozs7Ozs7c0I7Ozs7Ozs7VyxPOzs7OztxQjs7Ozs7VTtROztPLE87Ozs7Ozs7Ozs7O1EsTzs7TyxPOzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Tzs7O1csTzs7O3FCO3FCLE87Ozs7Ozs7O29COztVOzs7Vzs7O1ksTzs7Ozs7Ozs7O1ksTztXOzs7Ozs7cUI7Ozs7O1U7UTs7Vzs7WSxPOztXOzs7O1c7Ozs7Ozs7O1U7UTs7Ozs7O087UTs7VyxtQjs7UTs7Vzs7Yzs7YyxPO3NCLE87O1U7UTs7VyxlO1U7OztXOzs7Ozs7OztjLE87Ozs7Ozs7Ozs7Ozs7a0I7bUIsTzs7bUIsTztrQjtrQixPOzs7Ozs0Qjs7O2lCO2MsTzs7Ozs7Ozs7O2MsTzs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O087OztROztXLFk7O1c7VyxPOzs7cUIsTztvQjs7O08sTzs7Ozs7Ozs7Ozs7O2lCLE87OzsyQixPOzBCO2dCOzs7OztJOzs7OztJOztlOzs7Ozs7aUI7Ozs7ZTs7STtjOzs7Ozs7Z0I7Ozs7OztjOzs7Ozs7O0c7OztLOzs7O00sTzs7Ozs7Z0I7Ozs7O3dCLE8sMEM7Ozs0Qjs7Ozs7O21DOzs7O0k7dUIsTywwQztJO0k7Szs7O0ksTzs7Ozs7Ozs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOzs7Szs7O007OztLOzs7Ozs7O1E7OztTOzs7Ozs7TTtPLE87TztNOzs7Z0I7Ozs7OztJOztLOzs7O0s7OztjOzs7O0k7OztPLE87Ozs7Ozs7Ozs7O2lCOzs7OztRLE87NkIsTzs7USxPO08sWTs7USxPOztPLE87OztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0k7STtZOzs7OztHOytCLG9DOztJO0k7WTs7Ozs7Rzs7STs7OztLLE87STtHO2lDLHNDOztJLDhCLE87STtHO21DLHdDOzBCLHNDO2dDLDZDOztJO2dDO2tDO0k7RztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCLG1COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7OztnQjs7Ozs7O0ssTztJO0c7O0ksSSxXLHNDOzs7Ozs7Uzs7dUM7O1MsZ0M7UztpQixPOzs7O0c7O0ksSSxVOzs7Ozs7Uzs7dUM7aUIsTzs7OztxQixPOztJO0c7O0ksSSxVOzs7Ozs7UTs7O1E7O1EsTzs7O1EsVTs7Ozs7Ozs4Qjs7UTs7OztLLE07O0k7Rzs7SSxJLFU7Ozs0Qjs7OztHO0c7SSxTOzs7Ozs7OztvQyx5Qjs7STs7Rzs7STs7Ozs7OztJO0c7O0ksVztJO0s7OztRLHVDOztZLGtDOzs7OzRCOzs7USxrQiwyQjs7OztTO1UsTztpQjtRO1E7O0k7SyxLO0ssVzs0Qjs7OztLLEksTyxrQztJOzs7O00sWTs7OztROzs7O1M7Vzs7OzthOzs7OztNLE07Ozs7O1M7OztVO1k7OzZCOzs7O1UsSSxVOzs7Ozs7Ozs7Ozs7Ozs7ZTs7O2tCOzs7cUIsTzs7b0I7Ozs7bUI7c0I7b0IsTTs7bUIsVzs7OzsyQzs7dUI7O3dCLE87d0IsTTt1Qjt1QixJLE8sNEI7MEI7d0IsTTs7dUIsWTs7O3dCOzs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7OzswQzs7MEIsTTs7Ozs7d0IsWTs7Ozs7MEIsSzsyQjs0QixVOzs7Ozs7OEI7Ozs7Ozs7d0I7Ozs7K0I7O3VCO3VCOzttQjtvQixPO29CLEk7bUI7bUIsYTttQjttQjtrQjtrQjtpQjs7Ozs7O1M7OztVO1U7OztVOzs7VztZO2M7OytCOzs7Ozs7Ozs7OztTLFM7Ozs7OztTOztVLE87VSxROzs7VTs7OztZOzs7Ozs7Ozs7Vzs7WSxPO1c7OztZO2EsTzthLGM7Ozs7OztZOzs7Ozs7Ozs7ZSxVOzZCOzs7Ozs7WSxNOzs7O1U7VTtXO2E7OzhCOzs7OztXLFU7O1c7Ozs7WTs7Ozt1Qjs7Ozs7Ozs7Uzs7O1U7WTs7O2U7ZTtjOzs7Ozs7O1E7Ozt5Qjs7O0k7STtHOztJLE87O2tDLGlDO0c7O0k7O0s7SztLO0k7Rzs7STs7SzthOzs4Qjs7OztJO1k7OzZCOzs7O0k7Ozs7SztLOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs7NkI7Ozs7Ozs7Ozs7WTs7O2U7O2dCO2dCO2dCO2tCOzttQzs7Z0I7ZTs7Ozs7O0k7WTs7NkI7Ozs7Ozs7Ozs7Ozs7OztHOztJLE87OztjO2E7Rzs7STs7Tzs7OztRO1E7VTs7MkI7O1E7Tzs7Tzs7UTtVOzs7YTthO1k7O1E7VTs7O2E7YTtZOztRO087O087Ozs7UTtPOzs7O0k7O0s7Szs7Ozs7OztJLEksOEI7STtZOzs2Qjs7Ozs7Ozs7O0c7O0ksTzs7O2M7YTtHOztJOztLO0s7O0s7SztLO0k7WTs7NkI7Ozs7Ozs7OztHOztJLE87OztjO2E7Rzs7SSxPOztrQywrQjtHOztJOztLO0s7O0k7Rzs7SSxPOzs7YzthO0c7O0k7O0s7OztLO087O3dCOztLO0s7Tzs7d0I7O0k7Rzs7SSxPOzs7YzthO0c7O0ksTzs7O2MsVTtjLE87YTs7O0c7O0k7STtHOztJO0s7SztLO0k7Rzs7STtJO0c7O0k7O3lCOzswQixXOzs7O1E7Ozs7UztROzs7TzttQzs7Rzs7STs7O08sSSxVOzs7Ozs7WTs7c0M7b0IsTzs7OztPOzswQjs7Ozs7UTs7OztROzs7O1MsTztTO1E7O087OztRO087bUM7Ozs7STs7eUI7OzBCOzs7Tzs7Ozs7OztPO21DOztHOztJLGdCO0k7Rzs7SSxrQixzQjtJO1k7OzRCOzs7OztHOztJLGU7STtHOztJLFk7OztLLE87Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksTztHOztJO2E7Rzs7STs7SyxPOzs7STtHOztJOzs7O0s7Ozs7Ozs7O1c7WSxNO1ksTTtXLE87VTs7Ozs7O1MsVTtTLE87UTs7Ozs7OztROzs7OztTLE87Uzs7Ozs7UTs7Ozs7O1MsTztTO1M7Ozs7OztROzs7Ozs7UyxPO1M7Ozs7O1E7Ozs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7O1MsTztTO1M7Ozs7OztROzs7Ozs7UyxRO1M7Uzs7Ozs7O1E7Ozs7OztTLFE7UztTOzs7Ozs7SSxPOzs7YztzQjs7O3lCOzs7O2E7OztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Tzs7O087OztPOztHOztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Ozs7OztPOzs7Tzs7O087O0c7O0k7OztPOzs7Tzs7O087Ozs7Ozs7O087OztPOzs7Tzs7O087O0c7O0k7Rzs7SSxvQjt3QjtJOzs7Ozs7O0s7O3VCO0s7O3VCO0k7OztlOztnQjs7O2UsTzs7O3lCOzBCOzRCOzs0Qzs7MEI7eUI7d0I7Ozs7Ozs7O0c7O0ksTzs7O2M7YTtHOzZCLE8sdUM7O0ksTztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTTtLLE0sVztJLE87Rzs7STtLLE07SyxNLFc7SSxPO0c7O0k7SyxNO0ssTSxXO0ksTztHOztJO0ssTTtLLE0sVztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7RztJLFM7O0k7O0c7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJLFc7SSxZO0ksYTtJLGE7SSxZO0ksWTtJLFc7O0ksTztHOztJLE87Rzs7SSxPO0c7RztJLGlCO0ksYTtJLGE7O0ksTztHO0c7SSxjO0k7TTtJLGtCO0k7STtJO0k7STtJO0k7STtJO0k7STtJOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0ksVTtJO0c7RztJO0k7STtJO0k7STtJOzs7Ozs7Ozs7OztJO0s7OztNLE07TTs7Ozs7Ozs7Ozs7Ozs7OztLLE87OztLOzRDLFc7TSxRO00sTTs7O007Ozs7Uzs7Ozs7Ozs7Ozs7O0ssTzs7O0s7TSxNO00sTTtNLFU7SyxPOzs7O0k7SSwwQix1QjtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O2E7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlO2U7Yzs7Ozs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SztPO0s7Tzs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SyxNO0ssTTtLO087SSxPOzs7O2dCOzs7Ozs7RztJO007O3FCLFcsK0I7O0ksbUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4Qjs7SztLO00sVTtNLFU7TSxZOzs7O21COzs7VTtVLGM7b0I7VTtXLE07VyxVO2dGO1UsVzs7OztNLE87O0k7STtJOzs7O0ksTztHOztJOzs7OztZLHdDLFk7STtLOztNLDRCO007TSxNO3FCOzs7STtHOztJO0s7OztJLHlDO0k7O0ssOEI7SyxjO0ssUTtLLE07OztLLE07Szs7Ozs7OztROzs7Ozs7Ozs7STs7OztHOztJOzs7OztJO0s7Ozs7Ozs7Ozs7O0s7Ozs7O0ssTTtJO1k7Ozs7Ozs7Ozs7Ozs7O0c7RztJLE87STs7STs7Ozs7O0k7O2lCLE07Ozs7TSxHLGlDOzs7Ozs7O1U7Ozs7OztLOztHOztJOztLOzs7TTtNO007Szs7O1E7USxPOzs7Tzs7Ozs7UyxZOzs7Ozs7Ozs7O1M7Ozs7Ozs7VyxNOzs7Ozs7Ozs7OztVO1c7O1c7Ozs7UztVLFk7VTtVOzs7Ozs7Ozs7Ozs7OztVOzs7Ozs7YTs7Ozs7Ozs7OztTOztLOztJO0c7O0k7O0s7OztNO007TTtRO1U7OztTLFk7Uzs7O1U7Ozs7O1U7O2E7Ozs7Ozs7Ozs7O1M7UztTOztLOztJO0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFE7OztLLE87SyxRO0k7Rzs7SSxTO0k7SztlO0s7TTtNO007O0s7Szs7TSxNO0ssRztNLE07Szs7UTs7O0ssTTs7Ozs7OztNO00sTTs7SztLLE07O0c7O0k7STtJO0k7SyxNO0s7STtJO0k7Rzs7STs7Tyx5QixNO08sTzs7Tzs7O1EsTTtPLE87OztPLDJCLE07TyxPOzs7Rzs7O00sdUI7O00sVztLOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJOzt1QixNLGdEO0c7STs7O1E7O1M7VTtXLE07VyxNOzs7Ozs7OztTO1U7OzttQjs7O1UseUI7O1E7TztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE07SztLO0ksVztHOztJOzs7Ozs7STs7O0k7O0k7Rzs7STs7SztPOztnQyxzQzs7O0ssTTtJLE87Ozs7d0I7Ozs7OztLOzs7OztJLEksVTs7OzJCOzs7Yzs7STs7O0k7OztLLFc7O0s7SyxPOztJLE87RztnQyxrQjs2QywrQjs7STtLLE07SztPOzs7eUIsTyxpQjtJO0k7Rzs7O0ksTzs7O2MsVTs7YyxPO2E7Ozs7O0k7Ozs7SztLO0s7SztJLHNCO0k7OztPLDhCOzs7O007OztLLEk7Ozs7O007OztJO0k7Rzs7STtJLHVCLE07SSxJLFU7Ozs7NkIsTTtLLFk7OztNO007TyxLO087TTs7O007SyxNOztjLE07OztLLE07STtHOztJO0ssVTtLLFc7STtJO0ssTTtLO0ssSztJO0k7Rzs7STtHOztJOztLLFU7O0s7SyxVO0s7TSxPOzs7Z0I7aUI7aUI7aUI7Ozs7O2tCO2tCLE87OztrQjs7bUI7cUI7bUI7a0IsTzs7Ozs7aUI7O29COzs7Ozs7cUIsTTs7dUI7Ozs7Ozs7Ozs7O29CLE07Ozs7Ozt1Qjs7aUI7aUIsTzs7ZTs7Ozs7STtHOztJO0ksSSxXOzs7O00sTTs7O0ksVyxNOztJO0c7O0k7OztLLE07SSxPOzs7O0ksTzs7OztJLE87Ozs7SSxPOzs7STs7Ozs7SyxRO0s7STtHOztJO0ksTzs7O2lDLE8sK0I7O2M7Ozs7ZTtpQjs7Ozs7b0IsTzttQjtlOzs7Ozs7Ozs7ZTtjOzs7OztjOzs7aUI7OztnQjs7YztjO2E7Rzs7STtLOztROzs7Ozs7UyxNO1EsTzs7Ozs7Ozs7Ozs7UTs7Ozs7UyxNO1MsTTtRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7O007RztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087SSxxQjtJLG9CO0ksc0I7Ozs7OztJOzs7Ozs7Ozs7RztzQyxvQjs7STs7OztzQztJO0c7RztJLG9CO0ksYzs7SSw4Qjs7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7O3lDLFc7OzJCLFk7OztPLFk7OztPLFk7OztPLFk7OztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O2lCLE07Ozs7RzsyQixTOztJOztLOzs7OztNO007OztNLEksYTs7Ozs7OztNO087Uzs7O1k7Ozs7O2lCLFcsTzs7aUIsTztnQjs7O1k7Vzs7Z0I7Ozs7OztJO0ssTztLO087O3lCLHFCLDBCOztJLE87RztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O29DLE07OztPLE87Ozs7O0c7Ozs7SztNO08sVTs7O087TTs7Ozs7O29DLE07O087OztROzs7TyxjOzs7Ozs7O007TztRO1UsaUI7UTs7Ozs7UyxJOzs7O1U7Ozs7Uzs7O087Ozs7Ozs7Ozs7STs7Ozs7SztNO087UyxpQjtPOzs7Ozs7Ozs7OztLOzs7TTs7UTs7O1c7VyxjO1U7O0k7SyxPO0s7Tzs7O1U7VTtTOztJLE87Rzs7STtLLE87SztPO1M7OzJCLG1CLGU7OztLO21DOzs7TSxPOzs7K0I7Ozs7SztJO0ksTztHOztJO0k7O0s7TTtROzs7VyxPLGM7VTs7O007bUM7Ozs7TTs7UztXOzs7YyxPO3VEO2E7Ozs7Ozs7Ozs7OztVO1UsTyw4QjtTOzs7Ozs7Rzs7STtJOztLOzswQixPLHNDOzs7bUM7Ozs7TTs7O1M7VSxhO1UsMkI7UyxPLGM7UTs7Ozs7Ozs7OztVO1UsTyw0QjtTOzs7OztHOztJO0k7SztNO1E7O21DLG9COzs7TTs7Ozs7O0ksTzs7O2MsSSx1QixjOzs7c0M7OzthOztHO0c7STs7Ozs7Ozs7Ozs7STs7dUIsTSxnRDt3QyxpQzs7STs7Ozs7Ozs7RztHO0k7OztRLE07Tzs7STs7O1EsTTtPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztLO00sTzs7STs7Ozs7Ozs7Ozs7OztHO2lDLG1DOztJLFc7Rzs7STtrRDtJO0c7O0k7SztLO0ssTzs7Ozs7STtLO007UTs7bUMsb0I7OztNOzs7Ozs7STtLO087OztVLEk7Ozs7O1k7Ozs7OztVLFc7YyxxQixjOzs7a0M7OztTOztLLE87SztJLE87Rzs2QixTOzRCLGdCOzZCLGdCO0c7STs7O1EsTTtPOztJOzs7USxNO087O0k7OztRLE07Tzs7STs7O1EsTTtPOzs7d0IsaUQ7O0k7SyxtQixPO0ssTzs7O0ksTzs7RztJOztpQyx1QjtnQyxpQztxQix1Qzs7SSxXO0ksaUI7Rzs7SSxPO0s7SSxpQjs7Ozs7TTtPOztRLGdDOzs7Ozs7Ozs7OztJOzs7Ozs7STs7Ozs7Ozs7Ozs7OztHOztJOzs7WTs7Rzs7STs7SztLO0s7SyxLO0s7SztPOzs7VSw4Qjs7VTtTOzs7SyxPO0s7SyxjO0ssTztLLGtCO0ssWTtLLE07STtLOztNLFc7Yzs7O0k7Ozs7Ozs7Ozs7O0k7OztHLGdDO0c7SSxpQjs7Ozs7SSxPO0c7O0k7Rzs7SSxPO0c7O0k7STtLO0c7O0ksTzs7Rzs7SSxPO0c7O0ksTztHOztJO0k7STtJO0k7STtHOztJO0k7STtJO0c7O0k7STtJO0c7O0ksWTs7OztJLE87O0c7O0k7dUI7O0k7Rzs7STtxQjtJLEksVyw2Qzs7OztLLEksUSxrQzs7Ozs7O29COzs7Ozs7SyxZO0s7Szs7Rzs7STs7USxJOzs7Syx3Qjs7OztLLHFCO3VCLE07O0k7Rzs7STs7eUI7O08sOEI7TyxPOztPOzs7UTtRLE07TyxPOztlLE07O0c7O0k7dUIsTTs7STtHOztJO3VCLE07O0k7Rzs7STs7TyxrQixtQzs7Tzs7O1E7USxTO087O087OztRO1E7TyxPO2UsTTs7Rzs7STtLO0ssTTtJLE87Rzs7STs7TyxrQjswQixNOztPOztPLDhCO08sTztlLE07O0c7Ozs7SyxNO0k7O0ssTztLO08sMkM7Szs7O0s7Szs7SSxNOzs7SSxJLFc7Ozs7Ozs0Qjs7UTs7O1M7USxPOztRLE07OztRO1M7O1U7VTs7VTs7VzthOzs4QiwrQjs7VTs7UyxNOzs7Ozs7Vzs7O1k7WSxRO1ksTzs7VyxNO21CLE07O1E7OztJO0kscUI7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STtJLE87Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7RztrQyxxQztrQyxxQzs0QyxnQztzQyw2Qjs4QixpQztxQyxpQzs7STs7eUI7O08sOEI7TyxtQjtlLE07O0c7O0k7O0s7OztJO0c7O0ksTztHOztJO0c7O0k7Rzs7STs7TyxrQiwrQjtxQixNOztPOztPOzs7UTtnQjtPO29CLE07USxxQztvQzs7OztlLE07O0c7O0k7O087O1EsTzs7OztPOzs7UTtRLFU7O2UsTTs7Rzs7SSxPOzs7Yzs7aUI7O2tCLE07O2lCOztpQjs7Ozs7aUI7aUIsTzs7aUIsSTs7O2tCOzt1QjttQixXO21CLE87Ozs7O2tCLFc7a0IsTzs7O2tCLE07OztpQjs7aUI7O2lCOztpQjt5Qjs7OztHOztJLFksTzs7STs7RztJLG1COzs7OzBDLGtDO3dDLDJCOztJLFc7STs7O007O08sTztrQjs7Ozs7Ozs7OztHOztJOzs7TyxVLDJCO087O08sOEI7Ozs7O087OztRO1E7O1E7TztlLE07Ozs7STs7O00sc0I7OztPO1EsTztRLE87TztRO1MsTztvQjs7O2dCOzs7Ozs7O0s7Ozs7OztNOztxQzs7Ozs7TTs7OztHOztJLEksK0M7Ozs7O00sTTs7Szs7Rzs7STs7Tzs7Tyw4Qjs7O08sTTs7Tzs7O1E7OztHOztJO0k7Szs7O00sSTs7Ozs7Ozs7Ozs7Szs7Rzs7STs7TyxrQjtPLE87O087OztRO1EsUztPLE87O08sZ0M7TztlLE07O0c7O0k7Rzs7SSxJLDZCOzs7O0s7O1UsaUM7O0s7O0ksTTtHOztJLEksNkI7Z0IsTTs7STtHOztJO2dCLE07O0k7Rzs7STtJLE87Rzs7STtJOzs7O1EsSSxtQyxjOzs7Z0M7Ozs7UTs7O0c7O0ksVztJO0ssbUI7Szs7TTs7Ozs7O0s7TTtPLE87TyxPOzs7Ozs7TTtPLEs7TyxPO007OztLO0s7STtJLEksZ0I7STtLOzs7Ozs7Ozs7Ozs7c0I7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksaUI7O0k7O0ssRztNLFc7TSxLLHlEOzs7STtLO0s7Ozs7NEI7OztHOztJO0ksd0MsTyxpQjtJLFc7O0k7Rzs7O0s7SyxPO0k7STtLLG9DLHVCOzs7TyxZOzs7OztPLFk7Tzs0Qjs7Tzs7d0IsaUQ7O08sTzs7O2lCO2dCOztNOzs7SztLOzs7ZTtlO2dCO2lCLFU7aUI7bUI7NEI7O2dCOztlLG1COztlO2M7O0c7O0k7Ozs7Rzs7SSxPOzs7K0IsTyxxQzs7Rzs7SSxrQzt1Qjs7STtLO00sTztNLEk7TSwwQjtLOzs7OzRCOzs7OztJOztPOztRO1EsK0I7TyxPOzs7aUI7aUIsK0Q7aUI7Z0I7OztPOzs7UTsrQixnQjtRO1U7OzthOzs7TyxPO2U7O0c7OzBCLGdCOzs7Ozs7eUM7OztPOzs7UTtRO1U7OzthOzs7ZTs7OztJLE8sMkM7Rzs7STs7O087UTtROzs7OytCOzs7OztPO1E7UTs7OzsrQjs7OztrQjs7TyxPOztHOztJLEksSSxPOzs7Ozs7SSxPO0c7O0k7O0ssTztJLE87RzsyRCxPO0c7dUQsTztHOztJLGUsTzs7O0ssTTs7SSxPO0c7O0k7Ozs7Ozs7Szs7O087O087O1E7Ozs7Ozs7Ozs7USxLOzs7Ozs7Ozs7Vzs7O1ksaUI7WTs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztXOzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7O1ksbUI7WTtjO1k7Ozs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztPO1Esb0I7UTtROzs7VztXO1csTztVO087OztVO1U7O2E7OztjLFM7Yzs7OzswQjs7Ozs7YTtjLE87YyxZO2M7YztjLE87b0I7OzthOzs7YyxhO2MsTzthOzs7Ozs7Ozs7aUI7O2tCLE87a0I7b0I7c0Q7aUI7OztvQjs7bUI7Ozs7O2lCOztrQjtvQjtrQjtvQjtzRDtpQjs7O29CO3FCLFk7cUI7OzttQjs7OzthO2MsTztjLFk7YztjO2MsTztvQjthOztjO2dDOzs7Yzs7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7OztjLFE7YyxRO2M7YyxPO2MsWTtjO2M7K0I7OzthOzs7O2MsVztjLE87YTs7O2UsTTs7O3dCOzs7O2E7YyxTO2MsTztjLFE7Yzs7Ozs7Ozs7OztjO2M7YyxPO29COzs7OzthOzs7YyxXO2M7Z0I7YyxPO2MsVTtjO2M7YyxPO29COzs7O2E7OztjLFM7YztjLE87YyxVO2M7YztjLE87b0I7OzthOzs7YyxTO2MsTztjLFU7YztjO2MsTztvQjs7O1M7O087O087OztRLGM7USxPO1EsTztRLE87USxPOztROzs7UyxPOzZCOzs7TzttQzs7OztJOztLLFc7SztNO08sTztjOzs7Ozs7STtLLFc7SyxHLHdDO0s7SztrRCxzQjtLO0s7Ozs7cUI7OEI7OztNLE87OztnQjs7Z0IsVztnQixPO2U7Ozs7OztHOztJOztLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLGdEOzs7O2lCLDBCO087Ozs7Ozs7Ozs7Rzs7STtJLGlCO0k7STs7O087TTs7STtLOzs7Szs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtJO0s7Ozs7bUIsZTs7SSxJLHFCOzs7Ozs7OztROztTLFM7UztXOzs7YztjOzs7OztpQjs7O2lDOzs7aUI7a0I7bUIsVTttQjttQjttQjttQjttQjttQixXOzttQjttQjs7Ozs7c0I7Ozs7Ozs7Ozs7OzttQjttQjs7OzttQzs0Qzs7O29CLE87Ozs4Qjs7Ozs7Ozs7Ozs7Ozs7OzhCLE87Ozt3Qzs7a0Q7O3VDOzs2Qjs7Ozs7Ozs7OztnQjtjOytCO2M7Ozs7Ozs7Ozs7ZTtjOzs7Ozs7Ozs7Ozs7O2E7Ozs7OztZOzhDOzs7O1E7O1M7VztTO1c7OztjO2M7Ozs7O2lCOzs7aUM7OztpQjtrQjttQixVO21CO21CO21CO21CO21CO3lCOzttQjttQjs7OztvQzttQjtvQjtvQix1Qjs7O29CLE87Ozs4Qjs4QixPOzs7d0M7O2tEOzt1Qzs7NkI7Ozs7Ozs7Ozs7Z0I7YztjO2M7ZSxZOzs7Ozs7Ozs7OztlO2M7Ozs7Ozs7Ozs7Ozs7YTs7O1M7O1k7OEM7Ozs7O0k7STtJOzs7Szs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJOztLLE87SztJO0k7STs7Ozs7Tzs7O3VCOzs7TztROztTLGU7UztTO1MsVzs7UztTOzs7OzBCO1MsTzs7O21CO21CLE87Ozs2Qjs7dUM7Ozs0Qjs7a0I7Ozs7OztPO007STs7O0s7Ozs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJLHVDO0k7OztPO007O0k7STtLLFM7Szs7O0s7STtLO00sTzs7OztJOzs7Ozs7O0s7STs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtLO00sTzs7OztJOzs7Ozs7SztJOzs7Ozs7Ozs7Ozs7Ozs7STtJO0s7OztLOzs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7STtLOzs7Szs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSSxRLCtDOzs7O0ssSSxzQjs7Ozs7O2tCOzs7Ozs7SztNO00sVztNLE07TSxPO00sTztNLE87SztLO00sWTtNLFE7TSxPO007Ozs7Ozs7Ozs7SztLOztHOzs7O0k7OztLO0ssTztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SztLO0k7Rzs7STtJO0c7O0k7SztLO0k7Rzs7Ozs7SztvQyxlOzs7bUMsZTs7OztJO0ssTztLO0s7SztJOzs7STtLO0ssUTtLOzs7STtHOztJO0ksNEI7Rzs7SSxZO0k7Rzs7STtLO0s7STtHOztJO0k7Rzs7STtHOztJO0k7Rzs7SSxvQixPO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxJLFEsK0I7SSxPO0c7O0k7SyxLO0s7SzswQztJO0c7O0k7SyxLO0ssZ0M7STtHOztJO0ssSztLO0ssUTtLO0k7Rzs7SSxTO0k7OztHOztJO0ssSztLLFE7Syw2QjtJO0c7O0k7SyxLO0s7SyxvQztJO0c7O0k7SyxLO0ssK0I7STtHOztJO0c7Ozs7O0ssVzs7Ozs7O1Msa0I7Uzs7VSxRO1MsVztRO0s7O1E7OztTLG1COzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7O1E7Ozs7UyxxQjs7Ozs7Ozs7O1E7OztTLHFCOzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7Ozs7Ozs7O0k7SyxPO0s7OztJO0c7O0k7Szs7O0k7RzsrRTtHOzs7O0s7O0c7RztJOztHO0c7STs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7O0c7STs7O0k7STtHOztJO0ssSzs7O0s7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SyxLOzs7Szs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSTs7OzRCOzs7cUI7O3VCOzs7Szs7Ozs0QixPLGlCLHFCOzs7SztJOztLOzs7OzRCLE8saUIscUI7OztLO0k7STtLO3lCLHlCO0ssMkIsd0I7Syx5QiwwQjtLLHdCLHlCO0ssMkIseUI7SywwQiwwQjtLLDBCLHlCO0ssMEIsMEI7STs7Ozs7Ozs7Ozs7Ozs7Rzs7O0s7TSxNOzBCOztLLEcsOEI7SyxNO0k7SSxJOzs7NEI7Ozs7Szs7O00sRzs7TyxXOzs7SyxNO0k7O0s7OztNLEc7O08sVzs7O0ssTTtJO0k7Ozs7SztLO0s7SztLO0s7SztJOzs7Ozs7Ozs7Ozs7OztHOztJLHFCOztLLE07STtHOztJOzs7O0s7O2U7ZTtLLGM7SyxpQjtLLGlCOzs7O0s7TTs7O1M7O3NDOztRO0s7TTs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLEc7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOztpQjs7Ozs7OztXOzs7Ozs7UTtLOztJOzs7STtLO087SyxLO0s7O0ssTTs7STtHOztJLEcsZ0Q7SSxjO0ksTztHOztJO0ssTztLLE87SztPLFc7SSxPO0c7O0k7STtJO0ssTztLLE87SyxPO0s7Tzs7UztLLFc7Szs7STtJO0c7O0k7MkIsVztHOzsrQiw0QztJO0c7Rzs7O0k7TTs7Ozs7VTs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEk7Ozs0Qjs7O0k7Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxPO0c7O0ksVztJLFc7STtLO00sTzs7Ozs7OzhCOztJLE87Ozs7NkIsTywwQjtHOztJLGtCO0ksTTtHOztJLFU7O0k7SSxPOzs7YztlOzs7b0I7ZSxPO2UsTztjLE87YTs7Rzs7SSxVOztJO0ksVztJLE87Rzs7SSxVOztJO0ksVztJLE87Rzs7SSxVO0ksVztJLE87Rzs7SSxVO0ksb0I7OztLLEksVzs7Ozs7O0s7O0ksVztJLE87Rzs7SSxVOzs7O0ssSSxXOzs7Ozs7Szs7SSxXO0ksTztHOztJOzs7TSxZOzs7Tzs7O1EsSSxXOzs7Ozs7UTs7Tzs7Tzs7Ozs7TSxNOzs7O0k7Rzs7SSxVO0ksYztJOzs7SztNLFc7Ozs7Ozs7Szs7O0c7O0k7Rzs7STs7O1MsSTs7O007TyxJLFc7Ozs7Ozs7Ozs7Ozs7STtLLGtCOztLOzs7Ozs7Szs7SSxJOzs7O007OztJO0k7Rzs7STs7Yzs7O2dCOztpQjtpQixPO2dCO2dCO2U7OztHOztJOztPOztROzs7Tzs7Tzs7O1E7OztPOztPO1E7Ozs7UTtVOztPOztHOztJO0s7OztLOzs7O007O0s7OztrQjs7STtHOztJOzs7Szs7O007OztNOzs7O0k7SztPOzs7VTtVO1M7O0s7Ozs7O0s7Ozs7OztPLHVCOzs7Ozs7Ozs7Ozs7Ozs7OztZO007Ozs7Ozs7Ozs7O0s7STs7O2lCLE87OztNOzs7Tzs7Ozs7TTs7Szs7OztNOzs7OztNO1E7Ozs7Ozs7TTs7Ozs7Rzs7STs7Tzs7UTs7O1EsTztPOztPOzs7UTs7O1EsTztPOztPO1E7Ozs7UTtPOztHOztJO0s7OztJLEksVTs7OztNOzs7STtJO0k7Rzs7STs7O08sSTs7OztTOzs7Ozs7UTtROztPLHVCOzs7O1c7O1c7bUI7O087Ozs7UTtPOztPOzs7UTs7O08sSSxZOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7Ozs7OztPOzs7O087OztROzs7TyxJLFU7Ozs7Ozs7TztPOzs7O08sTTs7O0k7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksVTs7OztTOzs7TztPO087O08sTTs7Rzs7STtLOzs7SSxpQjtHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxhOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxjOzs7O1M7OztPO087Tzs7TyxNOztHOztJOztPLGdCOztpQjs7O21COztvQjtvQixPO21CO21CO2tCOzs7Ozs7Ozs7O1EsSSxhOzs7Ozs7O1MsTzs7OztvQjttQjttQjtrQjs7O087O08sTTs7Rzs7STs7SyxNOztJO0k7Rzs7STs7O087Ozs7UTs7Ozs7USxJLFk7Ozs7Ozs7UyxPOzs7O29CO21CO21CO2tCOzs7Tzs7TyxNOztHOztJOztLLE07O0k7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFc7SSxtQjtJOztLLFE7O0ssTzs7STtZLDBDLGlCO0ksTyxXO0c7c0Msa0M7cUMsa0M7dUMsa0M7d0Msa0M7c0Msa0M7dUMsa0M7Ozs7Ozs7UTtPOzs7Tzs7TztROzs7Tzs7Ozs7STs7OztJLGlCO0k7Ozs7STs7OztJOzs7O0k7Ozs7STs7OztJOzs7O0ksSTs7Ozs7OztPOzs7OztJOzs7O0ksc0I7Ozs7SSxJOzs7NEI7Ozs7O0ssTzs7OztnQjtlO2U7Yzs7O0k7Ozs7SSxJOzs7Ozs7O087Ozs7O0k7Ozs7SSxzQjs7OztJLEk7Ozs0Qjs7Ozs7SyxPOzs7O2dCO2U7ZTtjOzs7STs7OztJLEk7Ozs0Qjs7Ozs7Ozs7O1M7O1M7aUI7O0s7O0ksb0IsZTs7O0s7Szs7STs7O0ksSTs7OztLLGE7SyxJOzs7NkI7OztLOztJO0c7O0ksSSx5Qjs7OzRCOzs7STtHOztJLHVDLGM7Rzs7SSwwQyxjO0c7O0ksMEMsYztHOztJLDBDLGM7Rzs7SSwwQyxjO0c7O0k7Szs7O2U7ZSxPO2M7Yzs7STs7Szs7O0s7eUI7SSxvQixPO0ksTzs7O2MsTyw0QjthOzs7Rzs7STtLOzs7TTswQjtLLG9CLE87SyxPOzs7ZSxZOztlLE87Yzs7OztJLFk7NEIsTyx5Qjs7STtLO007UTs7O1cscUIsTztVOzs7TTtnQjtLOzs7O007UTtVOzsyQix3Qzs7Ozs7O0c7O0k7Szs7O2U7ZTtnQjs7bUI7NEI7Z0Isb0IsSztnQixPOztlLG1CO2U7O2dCLE87ZSxPO2M7OztJOztLOzs7Szt5Qjs7SSxPOzs7YyxTO2MsTzthOzs7Rzs7O0ssZ0I7O0ssTztJO3NCLGE7dUIsYztJO0s7Rzs7NEIsTywyQjtzQixhO3VCLGM7STtLO0c7O3NCLGE7dUIsYztJO0s7Rzs7a0MsTyxpQztzQixhO3VCLGM7STtLO0c7O0k7SztLLE8sdUI7STtzQixhO3VCLGM7STtLO0c7O21DLE8sa0M7c0IsYTt1QixjO0k7SztHOzs7SyxPO0k7c0IsYTt1QixjO0k7SztHOztJOzs7OztVO1U7b0I7OztzQjsyQjs7d0I7O1M7OztJO0s7SztNLEcsd0M7O087OztRLE87TyxHO1E7UyxPO1MsUTs7Ozs7O007MkIsZ0M7O0k7STs7O0s7Ozs7OztLO087OztVLEksSztVLFc7Uzs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxPO0c7RztJLFc7SSxtQjs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJLGM7STs7Ozs7Ozs7Ozs7OztHO0c7STs7O1EsTTtPOztJOzs7USxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssVztLLE87STtJOzs7TyxPOytDLHFCOzs7TyxPOytDLDRCO2U7O0c7O0ksTzs7OztjLFc7YyxPO2E7Rzs7STsrQyxzQjs7Rzs7STsrQyxzQjs7Rzs7STs4QyxzQjs7OztHOztJLDZDLHlCOztHOztJLHVDLHlCOztHOztJOytDLHNCOztHOztJOytDLHNCOztHOztJOytDLHNCOztHOztJOztlOztnQjtlO2M7O0c7O0k7SyxPOzs7Tzs7O1EsTztPO087a0I7cUM7TyxPOzs7Tzs7USxPO087Tzs7Tzs7USxPO087Tzs7Tzs7USxPO087Tzs7Tzs7USxPO087TyxJOzs7O1M7OztPLFc7TyxPOzs7Ozs7OztPOztRLE87TztPLEk7Ozs7Uzs7O08sVztPLE87Ozs7Ozs7O087O1EsTztPO08sSTs7OztTOzs7TyxXO08sTzs7Ozs7Ozs7Tzs7USxPO087Tzs7O087Tzs7O087Tzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O087O1EsTztPLE87O087O1EsTztPLE87Ozs7TztRO1EsTztRLE87TyxPOzs7OztJOzs7TztPLEc7USxXO1E7OztRO1MsTzs7UyxPO1E7OztPO1EsTztRLE87TyxPOzs7Ozs7Ozs7O08sTzs7O087OztHOzs7TSx1QjtNOztPO087Uzs7WTtNLFc7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7aUMscUI7O0k7YztjOztrQyxtQjs7SSxJLE0scUIsVztJO0c7eUIsdUI7O0k7Ozs7OytCOzs7OztJO0c7O0ksWTtJO2lCOztlLE87SyxtQixJO1c7OztHOztJLE87OztjOztpQzs7Ozs7a0IsbUI7Ozs7Yzs7O0c7cUQ7Rzs7STs7dUI7Ozs7Ozs7Vzs7O1c7Ozs7Ozs7O1M7OztROzs7O3FDOztJOzswQixPLHlDOztJO0ssTTtJO0c7O0k7SyxNO0k7Rzs7STtLLE07STtHOzBDOztJO0ssTTtJO0c7O0ksTzs7K0M7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STtHOztJLDhCOzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TyxrQztPOzs7O2tDLHFDOztJOzs7MEIsTzs7NkIsTzs7O1EsTzs7NEIsTzs7O1EsTzs7O2tCO2tCLE87aUI7Ozs7USxPOzs0QixPOzs0QixPOzs0QixPOzs7UTtRLE87O0k7OztJOzs7O1EsVzs7eUIsVzs7O1EsbUI7Ozs7O1MsbUI7Ozs7O1E7Z0I7OzttQjttQixtQjtrQjs7Ozs7USxXOzt5QixXOztzQixXOzt3QixZOztRLHlDLE07USxZOztJO0c7O0k7STs2QixrQztHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7O0s7OztTLEcscUIsTTtTO1E7Ozs7O3VCOzs7STtHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7STs7Ozs7O1MsTzs7O1M7UyxPOzs7O0s7OEIsK0I7O0c7O0k7STtLOztJO0k7O0c7O0ksTzs7NkIsbUIsVTs7Rzs7STtJLE87Rzs7STtHOztJO0k7Szs7STtJOzttQixxQzs7O0c7O0k7SSxPO0c7O0k7RzsrQixPLHFDOztJOzs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7O1E7O1E7Ozs7O1M7UTtTOzs7Ozs7VTs7Ozs7Ozs7Uzs7OzsrQjs7OztJOzs7eUIseUI7STtHOzs7STtLOzsrQixXOzs7bUI7SztJO0k7SztJOztLOzs7OzZCOztTOzs7VTs7O1U7OztVOztpQztTOztzQzs7Ozs7O0s7STtJO0c7O0k7STs7d0I7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Szs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7dUIsdUI7O0kscUM7O0k7Rzs7SSxZOzs7Ozs7Ozs7Ozs7Ozs7O08sTTs7ZSxNOzs7OztJO0c7O0k7Ozs7Ozs7O2U7O0k7Rzs7STtLLGtCO0ssbUI7STs7OztLO007O3FCO08sTTs7TTs7OztPOztNOzs7O08sTTtNLEs7TTs7Ozs7TSxJO007TztxQjtPOzs7O1E7O1E7Ozs7O087Ozs7SSxpQjtJO0c7bUIsTyxvQzs7STtJLE87Rzs7STtJLE87Rzs7STs7STtLO2lCO0s7Ozs7TTs7OztLOzs7OztVLFU7VSxPO1M7TTtNOzs7TyxVOztNOztTOzs7O0s7Ozs7STs7Ozs7O0ssTTtLLFE7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztJLFM7STtHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztHOztJLHFCO0k7OztrQjtHOztJOztxQixPOzs7TyxPOzs7O08sTzs7Ozs7Ozs7O0c7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZLE87O0ksTzs7O0k7STs7OztRLE87Ozs7O1EsTzs7Ozs7Ozs7Ozs7OztLLE87O0c7O0ksTztHOztJOztxQixPOztxQixPOzs7O1EsTzs7TyxPOzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7SSxlO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSw4Qjs7O0ssTzs7O0ksTzs7O0ksTzs7O2M7O2E7O0c7O0k7STs7Rzs7STtJLE87OztjO2M7YyxPO2E7O0c7O0k7STs7SztLO0ssSSxtQjttQzs7OzBCLE87OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTs7O1E7UTtRLE87OztrQjtrQjs7bUI7bUI7bUI7OztrQjtrQjtpQjs7OztRO1E7OztROzs7Ozs7UTtRO2tCOztROztRLDRCOzs7O1E7OztXLE87OztxQixPO29CO1U7Ozs7Ozs7UTtROzs7UTs7Ozs7Rzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjs7TTtNOztNOzs7O1M7VTs7O2E7YTthOzs7YTthOzs7YTthOztTO1M7Ozs7O21DOzs7O1EsTzs7O1E7Ozs7OztRLE87OztRO1E7OztRO1E7a0I7O1E7UTs7OztTO1c7OztjOztlLE87ZSxPO2MsTzthOztTLE87UTtROzs7UTtROzs7UTtROzs7UTtROzs0Qjs7NEI7OzRCOzs7UTtROzs7OztHOztJOzs7TztPO087OztPO087TztPOzs7TztPO087OztPO087O0c7O0k7STs7SztLO0ssSSxtQjs7TTs7TTs7O1M7UztROzs7O21DOzs7O1EsTzs7O1EsTzs7O1E7O1E7OztXOzs7Ozs7Ozs7UTtROzs7Ozs7OztTOztTO1M7O3VCLGdEOztTOzs7UTs7Ozs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7OztRO1E7UTtROztTOztTOztTOzs7OytCOztZO1k7OztTOztRO1E7OztVOztVOzs7OztZOzs7O1k7Ozs7WTs7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtROzs7Ozs7Ozs7Vzs7Ozs7O1c7Ozs7OztXOzs7Ozs7O1EsTzs7O1EsTzs7O1E7Ozs7OztRO1E7OztRO1E7Ozs7OztRO1E7Ozs7OzRCOzs7UTs7Ozs7O1E7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1E7UTtTLE87O1E7OztRLE87OztRO1E7UTs7Ozs7Rzs7STs7O0k7STtJO0k7O0c7O0k7STs7Rzs7STtJOzs7O0s7Szs7O0k7STtJO0c7OztJOzs7STtJO0k7STtJO0k7STtJO0k7SSxnQjs7bUIsMkI7OztLO0s7Ozs7SztLOzs7STtJOztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SyxPOzs7STtnQjtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7O1E7UTtROzs7UTtRO1E7Ozs7OztROzs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7OztPOztPOzs7Ozs7OztPOzs7Ozs7O087OztPO087Tzs7eUI7O0c7O0k7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTs7O1E7UTtROzs7Ozs7UTtRO1E7OztROztROzs7Vzs7OztROzs7Ozs7OztTO1M7Uzs7Ozs7OztROzs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7eUI7O0c7O0k7O0s7Szs7O0k7STs7O0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7Ozs7Uzs7Ozs7OztRO1E7UTs7O1E7UTtTLE87O1E7OztRLE87OztHOztJOzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPO087OztPOztPOzs7TztPO087OztPO087OztPO087O3lCOztHOztJO0k7STs7Rzs7STtJO0k7O0c7O0ksWTs7STs7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7O2tDOzs7OztRO1E7Ozs7OztROzs7Ozs7OztTO1M7UztVLE87O1M7Ozs7Ozs7UTtRO1MsTzs7UTs7O0c7O0k7OztJO0k7SSxJLGlCOzs7O087TztPOzs7TztPOzs7aUI7Ozs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7O2dCOztrQyxtQixVOzs7O087Tzs7OztnQjs7a0MsbUIsVTs7OztPO087Tzs7eUI7O0c7OztJOzs7OztPO087O3VCLE87OztPO087OztPO087OztPLE87OztPO087Ozs7O0k7STtJOzs7Ozs7Ozs7O0k7STs7SztJO0k7STs7O0kscUM7O0k7Ozs7Ozs7OztJO0k7STtJO0k7Ozs7STtJOzs7O0k7STs7O0s7Szs7O0k7SyxPOztJOzs7STs7O0k7O2MseUI7O0s7STtJOztHOzs7STtJOzs7O0k7STtZOztJOzs7O0k7STs7O0k7O0s7Ozs7TSxPOztLO0s7Szs7O0k7STtHO2dDLDBDO21DLDBDOzs7STs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7O0k7O08sTTs7TyxNO2UsTTs7RzswQyxrQztpQywwQztHOzs7eUIsb0I7NkIsaUM7O0ksTTtHOztJLE07RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7OztNLHNCOztNO08sTztNO007TyxhO08sVztNO2M7O0s7RztJO0k7STtJOztJO0k7SSxnQjtJLGU7SSxlO0ksYztxQyx3Qjs7STs7O0c7O0k7Ozs7O0c7O0k7SyxROzs7cUI7Ozs7Rzs7STs7Rzs0QixPLHdDOztJO0k7STtvQyxPLHNCO0k7Rzs7SSwrQztHOztJO0ksSTtJO0k7Rzs7SSwrQztHOztJO0c7O0k7Rzs7STtJO0k7STtHOztJLHFDO0c7O0k7OztJO0k7b0MsTyxzQjtJO0c7O0k7OztJO0c7O0k7O0c7O0k7O0k7RztxQywrQjtHOztJOztLO00sTztNOzt5Qzs7OztJO0c7O0k7O0c7O0ksSSxxQyxJO0k7STtHO0csSTs7STtLO0k7Rzt3QixPLDhDOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7MkIsa0M7aUMscUM7RztrRTtHOztJOzs7O0k7RzsrQix3QjtHO0k7Ozs7Ozs7OztJLHVDOztJO0c7O0ksa0IsTzs7SSxPO0c7bUMsOEI7O0k7Yzs7Rzs7SSxXO1c7Rzs7SSxXO0ksUztzQjtJO0ksTztHOztJLG1COztJO0c7O0ksK0I7STtHOztJOzs7O00sTzs7O0ksTztHOztJLGtCOztJO0c7O0k7O0c7O0k7STs7O1E7OztnQjs7Rzs7STtrRDtJO0c7O0ksWTsyRTtJLE07Rzs7STs7O0s7TSxZOzs7TTs7Ozs7Tzs7Ozs7STtZOzs7ZTtlLE87Yzs7O0c7O0ksTzs7O2M7YyxPO2E7Rzs7STs7OztNO08sTztPLE87TyxPO00sVzs7O007O08sTztPLE87TyxPO00sVzs7Ozs7Ozs7Ozs7Ozs7SyxHO007Ozs7YTtNOzs7OztNOzs7O087Ozs7O0c7O0k7STtLLFk7Ozs7Ozs7O0s7O0c7O0ksSSx1QixROzs0QztJO0c7O0ksSSx1QixRO29EO0k7Rzs7SSxjOzs7O1E7OztRO1MsWTs7OzthLE87Ozs7O1MsTTs7O0ksTztHOztJLFk7Ozs7UTs7MkIsTzs7SSxPO0c7Rzs7TTs7O1M7UyxPO1E7O0k7OztNLEs7Tzs7OztNLEs7Tzs7SztNLFE7TSxROzs7Ozs7Szs7TyxXO08sVzs7O08sVztPLFc7Ozs7Ozs7Ozs7O00sRztPOzs7OztjO087Ozs7Vzs7O0k7Rzs7SSxZO0k7Ozs7SztLLFE7a0M7O0s7Szs7STs7Rzs7O0s7SztNLEssNkI7TSxZOzs7O1U7Ozs7OztZLEksVTs7Ozs7Ozs7Ozs7O2U7Ozs7OztXLE87O3lDOzs7Ozs7OztVLG9DOzs7Ozs7OztVOzthOztvQzs7O1UsRyw0QjtVLFc7Ozs7OztNLE87O29DOzs7O0k7STtHOztJO0s7SyxLLDJDO0k7STtHOztJO2dCOztJLE07Rzs7STtLOzs7Ozs7O1M7d0MseUI7Ozs7Uzs7O1k7WSxXOzs7YSxPOzs7WSxPOztpQyx5Qjs7Vzs7Ozt3QztLO0s7Szs7Ozs7O0s7Szs7Rzs7STtLO2tCO0s7SztLOzs7Ozs7SztLOztHO0c7STs7O0k7STtJO0s7OztROztRLEksNEI7Ozs7O1MsTTs7O087O0s7SztLO0s7Ozs7OztLO0s7Szs7RzsrQixPLG9DOztJO0ssUTs7OztJO0ksWTs7OztLOzs7SSxPO0c7NkIsdUIsc0I7O0ksSSxROztROzs7O00sWTs7OztNO00sTzs7Ozs7OztHOztJO0k7Rzs7STtJO0ssWTs7TSxZOzs7OztVO1U7Ozs7O1U7VSxPOzs7VTs7VSxPOzs7VTs7Ozs7VTtVLE87OztvQjtvQjttQjs7O007O0s7O0c7Rzs7OztRLE07Tzs7STtJO0ssSSxJLE87Ozs7OztLOzs7O3NCO0ssNkIsTztLLEcsK0I7Szs7O0c7O0k7STtLO00sYTtNLE87SyxXO2dCLDZCO0ssWTs7Ozs7b0I7VSxJLFc7OztzQzs7Ozs7Ozs7O29CO1U7VSxHLCtCO1UsVzs7Ozs7O0ssTzt3Qzs7Rzs7SSxXO0k7SztLLFc7Szs7Ozs7O0s7SyxNOztHOztJLFc7O1EsbUM7Szs7O00sTzs7OEI7Ozs7Ozs7Rzs7SSxJLG9DOzs7OztLOztHOztJO0ssbUI7Z0I7Z0IsMkI7SyxZOzs7OztvQjtVO1csVztXO1c7Vzs7OztzQzs7OztVLEksSSxPOzs7Ozs7YztpRCxvQjs7VTs7OztjOzs7aUI7a0IsTztrQjttQztpQjtnQjs7O1U7O1ksTTtXLFc7VztXO1c7Ozs7OztXO1csTzs7bUM7Ozs7Ozs7OztxQjtXOzs7Ozs7O3dDO1U7OztTLG9CLFU7Ozs7cUI7VyxlO1c7Ozs7UztTLE87O2lDOzs7O29CO1U7VSxHLCtCO1U7Ozs7O0s7SyxPOzs2Qjs7O0c7O0ksbUI7ZTtJLFc7SSxJLHdCOzs7O0s7Szs7Rzs7SSxJLDhCOzs7OztLOztHOztJO0k7Syx1Qjs7OztPO1EsTztRLGM7Ozs7Ozs7O00sSTs7OztLLGlCO0ssVztLO0ssWTs7Ozt5Qjs7Ozs7Ozs7d0I7OztVO1csTTtXLE87Ozs7Ozs7Ozs7O2E7Z0Qsb0I7OztTO1c7OzRCOztVOzs7OzthLE87Ozt1QixPOztpQzs7OztzQjs7O1k7UyxtQjtTLEksVzs7O3FDOzs7Ozs7O1MsTzs7O21COztrQjs7O0ssTzs7O2U7Ozs7Rzs7STtJLHVCO0c7O0k7SSxXO0k7Rzs7Ozs7OztROzs7OztRO1E7UTs7O1c7VyxPO1U7O1EsTzs7O2tCO2tCLE87aUI7Ozs7UTs7Ozs7STtHOztJO0c7K0IsMEI7O0ksSSxRLDZCOztLLFk7OzttQjs7O0s7TSxROzs7Szs7O3FCO0s7SztLLE87d0M7STs7Szs7Ozs7bUI7O007TSxjLE87TTs7dUI7O00sWTs7Tzs7USxPO1EsSztRLE87UTs7cUI7Ozs7OztLO0k7STs7STs7cUI7O0ksTzs7O2M7ZTtlLE87O2E7O0c7O0k7NEI7Rzs7STtLLFk7Z0I7Ozs7Ozs7SztLO0s7SyxPOzs2Qjs7O0c7O0ksZTtJO0ksbUI7STtLLFk7O007O08sTztPLE87TSxHLHlDOztLO007TyxRO08sVzs7Ozs7YztZOzs2Qjs7O007Ozs7O00sZTtNO00sTzs7OEI7OztJO0k7OztPLFc7TztNOztJO0s7TSxXO007Ozs7OztNO0c7O0k7SyxXO0ssVztLO1E7TSxNO0s7SyxPO0k7SSxJLFMsSTs7Ozs7O0k7STtHO0c7STs7Ozs7Ozs7OztJLG9CO0ksVztzRTtJLFk7NEM7Ozs7O00sTTtLOzs7O00sTztNO1E7Ozs7OzRCLE87SSxnQjtJOzs7Ozs7Uzs7O1U7Ozs7Ozs7Ozs7O2MsRzs7Ozs7Ozs7Ozs7Ozs7OztXLEs7Ozs7Ozs7Ozs7cUI7Ozs7OztTOzs7Ozs7O1M7O1UsTztVLFE7OztVOzs7O1k7Ozs7O1U7VztXLE87Ozs7OztZOzs7Ozs7Ozs7Ozs7WSxNOzs7O1UsYzs7Ozs7WSxLO2E7YyxVOzs7Ozs7Z0I7Ozs7Ozs7Ozs7OzthOztjOztpQixrQixRO2lFO2lCOztjLFM7YTtlLGtDO2MsVztjO2dCO3FCO2U7Z0I7Z0IsTzt3Qjs7Ozs7Ozs7Ozs7VTt5Qjs7Ozs7a0I7O0k7STs7O0k7Ozs7SSxPOzs7YzthO0c7O0k7O0k7O0k7Rzs7SSxPOzs7YyxPOzttQyxtQzs7YTtHOzs7Szs7OztrQjtNO0ssTztJOztLLEksNkI7Ozs2Qjs7O0s7STtJLFk7STtHOzs7Ozs7Ozs7OztLO007OztJLFc7STs7Ozs7Ozs7Ozs7Ozs7WTs7O0ksTzs7O2M7Yzs7Ozs7bUI7O29CO29CO29CLFE7Ozs7Ozs7Ozs7b0IsVztvQjs7O21CO29CLFM7b0I7b0I7c0I7OzttQjttQjtvQjtvQjttQixLO29CLE07O21CO21CO2tCOzs7Ozs7aUM7YztlLFE7ZTs7O2U7aUI7O2tDOztjO2E7Rzs7SSxPOzs7YztlO2lCOzsrQiw0Qzs7ZTtjO2E7Rzs7SSw4Qjs7O3lCOzs7TztlOzs7a0I7Ozs7bUIsTztrQjtpQjs7Ozs7TztlOzs7a0I7Ozs7bUIsTzttQixPO2tCO2lCOzs7Ozs7SSxPOzs7Yzs7Ozs7Ozs7Ozs7O2U7aUI7O2tDOzs7OztlOzs7b0I7Ozs7OztjO3NCOzt1Qzs7Ozs7Ozs7Ozs7Ozs7O2E7Rzs7STs7STs7STtHOzs7Szs7UTs7Ozs7O1M7Vzs7NEI7O1M7UTs7UTs7UztXOzs7YztjO2E7O1M7Vzs7O2M7YzthOztTO1E7O1E7Ozs7UztROzs7SSxPOzs7Yzs7O2U7aUI7O2tDOztlO2M7YTtHOzs7SyxZOzs7TTs7SyxNO0k7STtLLE87SyxVO0ssTztJO0ksSSw2Qjs7Szs7O1E7USxPO087OztJOztLOztVO00sZ0I7TSxJLFcsdUM7Ozs7TyxrQjtPO08sVzs7Ozs7O1k7Ozs7O2E7YTs2Qjs7O1k7O2EsTzthLE87WTs7O3FCOzs7WTthOzs7O2E7YTtjO2UsTztlLGtCOzs7YTs7YztnQjs7aUM7Ozs7Ozs7Ozs7Ozs7VzswQzs7TztPOzs7SztRLG9DO0ssZ0I7SztLO0k7STtJOztzQixPLHFCOztJO0c7OztJLE87OztjOzthOzs7SSxPOzs7YyxZOzs7Ozs7Ozs7Ozs7ZTtnQjs7OztjO2M7YTtHO0c7STs7O1EsTTtPOzs7SSxXO087SyxNOzs7STs7O0s7TSxpQixROztPOzs7UTtPOzs7MEIsTyxzQzs7O00sTTs7dUMsTzs7O0k7Szs7OztJO0k7SztLLFc7Szs7Szs7Ozs7O0s7SyxNOztHOzs7OztJO0s7Szs7Ozs7TSxNOzs7O0c7STs7OztJLFk7OztZO007OztLO00sUTtNLFE7TTtNLFU7OztNOzhCO087TyxJOzs7OztPOzs7Ozs7O0ssdUM7SyxJLFU7Ozs7TSxhO00sRztPLE07TSxPOzs7SztNO087Ozs7Ozs7O0s7TSxPO00sVTtLO0s7Szs7SSxNOzs7STtHOztJLEksbUM7Ozs7O0ssTTs7Rzs7SSxXO0ksSSx3QixjOzs7Z0MsNkI7O0s7SztLOztHOztJLFk7O0s7SSxNO0c7O0ksVztJLEkscUM7Ozs7SztLO0ssTTs7Rzs7SSxXO0ksSSxpRDs7O2dDOzs7Rzs7SSxJLHNEOzs7K0I7OztLOztHOztJLEksc0Q7OztnQzs7O0c7Ozs7STtJO0ssWTs7Ozs7UyxJLFc7OztpQzs7O1MsSyw2QjtTLEk7OztxQzs7O1M7OztTOzs7OztTOzs7UyxNOztLOztHOztJO0c7O0ksWTs7SztJLE07Rzs7SSxXO0ksSSx5Qzs7OztLO0ssTTs7Rzs7SSxJLDBEOzs7O2dDOzs7Rzs7STtLLEksSTs7Ozs7OztXOztZO2E7O2E7Ozs7d0M7OztXOzs7O0ksWTs7Ozs7OztPLEc7USxXO1EsTzs7Ozs7STtHOztJO0s7YTs7TSxPO0s7Ozs7NEI7OztHOztJO0ssSSxPLDZCO0s7VSxnQyxJOzs7Ozs7OztLO007Ozs7Ozs0Qjs7O0c7Rzs7SSxHO0ssTTtJLFk7Ozs7O1EsOEM7UTtTLEc7VSxNO1M7VSxZO1U7WTs7O2U7OztTOzs7OztTO1U7VztXO1U7Ozs7O1csTTs7Ozs7O1E7O0ksMEI7SyxnQjtLLE87OztlOzs7O0k7RztHLEk7d0IsdUI7O0k7SztLO0s7STs7O2E7Tzs0QiwwQjs7Ozs7SztLLE07O0c7O0ksSSxxQjs7O3dCOzs7Rzs7SSxJLDRCLGM7Ozt3Qjs7O0c7O0k7SyxPO0ssVzs7SyxZOzs7OztTLEc7VSxNO1Msc0Q7UyxvQjtTO1U7Ozs7Ozs7OztVOzs7Ozs7VSxJLEksTzs7Ozs7O1UsTzs7O29CLDZCO29CO21COzs7Ozs7UyxhOztLOztNLEksZ0I7TSxPOzs7Z0I7Ozs7Ozs7O0k7Rzs7Ozs7TSxNO0s7Ozs7O007O1MsTzs7O21CO21CLE87a0I7O1E7TTtNOzs7Ozs7USxHLGdDOzs7Ozs7UTtRLE87Ozs7O0ssTTs7OztJLEksK0M7Ozs7TTs7O0c7O0ksaUM7O0ssVztLLFc7SyxHO007TTtPLE87O007O0s7TTtPLFU7TyxXOztPLHVCLE87b0I7Ozs7O007Ozs7O21CO007TyxPOztNOztJOztLOzs7SyxZOzs7Ozt3Qjs7UztVO1csSztXO2E7OztnQjs7O3NCOzBCOztlOzs7VTs7Ozs7OztvQjs7b0M7Ozs7O1MsZTs7O1M7OztVLFU7UztVLE87O1M7O0ssTzt3QztJOztLOztJLE87O2lDLGlDOzs2QixrQzs7O0ksSSw0QixjOzs7NEI7OztHOztJLEksNEIsYzs7OzRCOzs7Rzs7SSxJLDBCOzs7OztLOztHO0c7O007OztTO1MsTztROztJOzs7Szs7OzttQjs7UyxPOzs7b0I7b0IsTzttQjs7bUI7OztNLEk7ZTtJOztLO0s7TSxHLDJDO21CO00sWTs7Ozs7eUI7O1U7VztZLEs7WTtjOzs7aUIsZTs7Z0I7OztXOzs7OztZLE87Ozs7VSxXO1U7OztVO1k7OzBCLE8sb0M7O1c7Ozs7TSxPOztJO0k7Rzs7STs7SztPOzs7VTtVLE87Uzs7O0k7TTs7b0IsTywyQzs7SztJO007O29CLE8sMkM7O0s7STtLO08sd0Msc0I7SztPLHdDLHNCOztJLE87O2lDLHdDOzs2QixPLHNCO0c7O0k7SztLOzs7Ozs7Szs7RztHO0k7Ozs7Ozs7STtLO087O3dCOztLO087O3dCOztJLE87OztjO2U7aUI7OztvQixZOzs7d0I7c0I7c0I7c0I7OztvQjs7O2U7ZSxPO2UsTztlLE87ZSxXO2M7YTtHOztJLEk7STtHOztJO0k7c0M7O007OztPLE87TSxTOzs7VSx1Qjs7RztpQyx3Qzs7SSxPO2lDO0c7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJLE87Rzs7STtZOzs2Qjs7Rzs7SSxXO0c7OztLO00sTztNLGU7b0I7SyxXO0ssRztNLE07SyxPO0k7SSxJLGUsMkIsYzs7OztLO0s7O0c7O0k7O0s7Z0M7OztLO007TTtNOztNLFE7OztNO00sSTtLO0s7STtJOztLLEcsMEM7a0I7SyxZOzs7O1M7O1UsUTtVOzs7Uzs7Ozs7O2dCO1UsSztXO1ksSTtZLFU7O1k7O2EsVTthOzs7YTthLE87YSxPO2EsTTthLE87WTs7YTs7O1csTTs7VSxTOztTLE87O0ssTztJO0k7Rzs7STs7SyxJLFc7Ozs7Ozs7O0k7Rzs7SSxJLDZCOztHOztJO0s7TSxPO00sTztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7NEI7OztHOztJLFk7OztLO007TyxtQjtPO007Ozs7OztNOzs7STtHOzs7O0ssRyxtQztLO00sUTtNLFU7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQixHLGlDOzs7Ozs7Ozs7OztNOztLLEksbUM7SyxHLG1DO0ssZTtnQjtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7OzJDOzs7Ozs7Ozs7Ozs7Ozs7O3VCO21CO3VCLCtCOzs7O2tCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7O2tCO21CO29CLFM7b0IsUztvQixPOzs7b0I7OztxQjtzQixPO3NCLGM7cUI7OztzQixXO3NCOzs7Ozs7Ozs7bUI7b0I7cUI7c0IsTztzQixPO3NCLE87Ozs7Ozs7Ozt3QjsyRCxTOztvQjtxQixPOzt1Qjs7OzBCOzBCO3lCOzs7OztvQjtxQixNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEI7Ozs7Ozs7Ozs7OzhCLEs7OEI7Ozs7Ozs7Ozs7Ozs7Ozs7OEI7OzhCOzs7Ozs7Ozs7Ozs7Ozs7b0M7Ozs7O2tDLE07Ozs7Ozs7OztvQzs7Ozs7Ozs7b0M7Ozs7a0MsTTs7aUMsVztpQyxHO2tDLE07Ozs7Ozs7K0IsTTs7Ozs7c0I7Ozs7cUIsTTs7OzttQjs7OzswQzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzttQixPO21CO3NDOzs7O21COztzQixrQixRO3NFO3NCOzttQixPO21COzRCO2tCOzs7bUI7b0IsTztvQjs2QjtrQixTLE07a0IsTzs7OzRCOzs7NkIsUTs2QixVOzs7Ozs7Ozs7Ozs7Ozs7OzttQzs7OztrQyxPOzswRDs7Ozs7Ozs7Ozs7Ozs7O2tDLE87OzBEOzs7Ozs7Ozs7Ozs7Ozs7OzZCLE07OzRCOzJCOzs7Ozs7OztpQjtrQjtrQjs7Ozs7bUIsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21COzs7Ozs7Ozs7O3lCOzttQjs7Ozs7b0IsTTs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Uzs7Ozs7USxxQzs7Tzs7OztROzs7Ozs7Ozs7TTtPO1EsTztRO1E7TyxTLE07Tzs7Ozs4Qjs7OztLLE07Ozs7SSxXO087SyxNO0ksTzs7a0M7OztHOztJO0s7Szs7SyxNO0k7Szs7O0s7OztLOzs7O0s7Tzs7O1U7dUI7UztJO0ksVztJO0s7TTttQjs7Ozs7O0ssVztLO007TztvQjs7OzthLE07SSxPOzs7Yzs7Ozs7ZSxPO2UsTzs7O2U7Ozs7Ozs7ZSxNOztjO2E7O0c7OztLO0s7Ozs7UTtRLFc7VztRLE07OztxQjtNLE07O0k7STtHOztJLFc7Rzs7SSxJLG9COzs7K0I7OztHOztJO0k7SyxXO0ssVztLLFk7O0s7SyxPO0k7STtJOztHOztJO0k7SztJLEkscUI7STs7Szs7c0I7O0ssSTs7Ozs7OztJLFc7STtLO0s7SyxPO0ssa0I7SSxJLFc7Ozs7TSxNOzs7STtLLGM7Szs7O0ksZ0I7SSxPO0c7O0ksVztJLFM7STtLO0s7SSxPO0c7RztJOzs7USxNO087O0k7OztRLE07TztJOzs7OztJO0s7OzBCOzs7UTs7O1E7TTtHOztJOztLLE07SyxROztLO0s7a0I7Ozs7TyxHO1EsVztROzs7TSxzQjtNLEksVTs7Ozs7Ozs7Ozs7Ozs7O1E7UyxTOzs7Ozs7VTs7Ozs7Ozs7OzRCLE07Ozs7UTs7O00sTTs7STtJLEksOEI7Ozs0QixNOzs7OztJO0s7SztLLE8sMkM7STs7TSwyQzs7OztLO087VTs7SyxNOztJO0c7RztJOzs7Ozs7Ozs7OztJLEs7SyxNO0k7STtJLEk7OztLLG9EOzs7STtLLGtCO0ssYTs7Ozs7O0s7O0k7STtHOztJO0ksSTs7O0s7TTtNO007TTs7Ozs7Ozs7SSxPO0c7O0ksMkI7STtJOztLLEksUSwwQixVOzs7Ozs7Ozs7Vzs7O1k7OztXO1c7Ozs7Ozs7Ozs7Z0I7Z0I7Ozs7O2lCO21COzs7OztrQixXO2tCO2tCLG9CO2tCOzs7O2dCO2dCLEs7Z0I7Ozs7Ozs7Ozs7OztjO2MsVztjO2Msb0I7Yzs7Ozs7Ozs7UTtROzs7O007O0s7Szs7Ozs7O0s7Szs7Rzs7SSwyQjtJO0ssSSxRLDBCLFU7Ozs7Ozs7Ozs7Ozs7TztTOzs7Ozs7Ozs7USxXO1E7USxvQjtROzs7TyxJLHFCOztROztROztNOztLLE07Ozs7Z0M7OztHOztJO0k7STtJO0s7SztLLE87SyxPO0ssSztLLE87SyxPO0ssUTtJO0k7STtJO0ksK0I7Ozs7Ozs7TSxZOzs7Ozs7TSxjOzs7Ozs7Ozs7OztJO0ssSSxzQzs7Ozs7TSwwQjs7STtHOztJO0ssTTtLO0ssSztLLFc7Ozs7SztNOztTOzs7OztZOzs7Ozs7Ozs7WTtZLE87Ozs7Ozs7TTs7STs7TTs7TTtNOztTLGdDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7O2tCO2tCO3NCLCtCOzs7OztnQjtnQjtnQjtpQixVO2lCLFU7OytCOzs7aUI7O2lCOzs7Ozs7Ozs7OztpQzs7Ozs7Ozs7Ozs7YyxHOzs7Ozs7O2dCOztrQjs7a0I7a0I7OztpQjtrQjtrQjs7b0I7O3FDOzttQjtvQjtxQjtxQixPO3FCLE87cUIsTzs7Ozs7Ozs7O3VCOzBELFM7O21CLFc7bUI7OztzQjtzQixNOzt1QixXO3VCLEksOEI7Ozs7O3dCO3dCO3dCOztzQjs7OztxQjs7Ozs7O2lCOzs7O2dCOzs7Ozs7Yzs7ZTtlO2M7ZTtnQjtnQjs7OztlLFc7eUI7Ozs7ZTtlOzs7O2E7OztjO2M7Yzs7Ozs7Ozs7Ozs7Ozs7Z0I7Z0IsYzs7Ozs7OzttQixxQixVOzs7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0I7aUIsVztpQixJOzs7OztrQjtrQjtrQjtrQjttQjttQjs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7OztpQjs7Ozs7Ozs7d0M7Ozs7Ozs7Ozs7Ozs7O2dCO2lCO2tCLE87a0IsTztpQjs7d0M7Ozs7Ozs7Ozs7OztpRDtpQixXO2lCOzs7b0I7b0I7bUI7Ozs7Ozs7Ozs7O1U7Ozs7OztXO1c7Vzs7Ozs7Ozs7UTtRO1E7UTtRO1E7Ozs7O1EsSztTO3NCO1MsWTs7O1E7Uzs7Uzs7Uzs7Ozs7aUQ7O3FEO007Ozs7TSxZOzs7O087TztPO08sSSxtQixJOzs7Ozs7TztPO2tCOzs7O0s7Ozs7OztLO0s7Ozs7SSxXO08sMEM7SSxPOztrQzs7O0c7O0k7Szs7O0s7OztLOzs7O0ssSztLLEs7OztLLFE7STtLLFk7O00sTztLO0k7STtLLFE7SyxVOzs7Ozs7Ozs7OztVO1csTztxQjs7Ozs7USxTOzs7Ozs7Ozs7O2dCOzs7Ozs7O0k7SztxQztLLE07SyxNO0s7O0k7SyxVO0ssaUI7Szs7O1E7Ozs7OztRO1E7Ozs7O1UsVztVO1Usb0I7O1M7Uzs7Ozs7O1M7eUI7O087O0s7Ozs7SztLO0ssTTs7OztJLEksUSwwQixVOzs7dUIsTzs7OztVLE87O1U7Ozs7SSxNO0c7O0k7SyxROzs7OztLLFU7Ozs7O0ksNkI7STtLOzs7Ozs7O0s7TSxPO00sSztLOzs7USxrQixPO1EsTztPOztLOzs7UTtRO1MsVztTLE07OEI7Ozs7Z0M7OztPOzs7STtLLFM7SyxTO0k7O007TyxPO2M7Ozs7OztLO00sTztNLE87TSxPO2E7STtLLFE7SztJO0ssTzs7O2U7OztnQixROzs7NkI7c0M7O2M7O0k7STtLLE87OztlOzRCO2M7O0k7STtLLEksa0I7O007TztPOzs7WTs7O2M7Ozs0QjtxQzs7YTs7Ozs7Ozs7SSxTOzs7OztNO007O29DLG1COzs7Ozs7O007TTs7b0MsbUI7Ozs7Ozs7O0s7O21DO00sUTs7Ozs7TyxlO1E7Ozs7UTs7O1k7OEM7UTs7Ozs7OztxQjtNLFM7O0s7TSxLO007OztNO08sTztPLE87TTs7SyxLO007TyxXO08sSztPLE87TTtNLG9CO00sTzs7SyxHLGlDO0ssTztlOztJO0k7SyxNO0ssTTtLOztJO0s7SztLOzs7UTtRO1M7O1M7Ozs7OztTOztPOztLLEc7TSxTO00sRztPO1EsTztRLE87Tzs7O0s7Ozs7SztLO0ssTTs7OztJO0s7Ozs7UyxZLE87UyxvQjtTOztNO007Ozs7OzttQjtLO00sUTtNLFU7O3NDOztPOztnQyxPLDhCO007Ozs7Ozs7Ozs7OzJDOzs7O1U7OztvQixRO29CO29CLFc7b0I7b0Isb0I7b0I7cUI7O3dCOzt5Qzs7cUI7Ozs7cUI7cUIsTTs7bUI7Ozs7OzsyQjs7O1U7O21DLE8sOEI7Ozs7OztTOztrQyxPLDhCOzs7OztTLEcsK0I7UyxJO1M7VSxXO2E7VyxRO1c7VztXLE87O3lDOzs7OztTOzs7Ozs7Ozs7O3lCO2tDOzs7OztVLGM7OztXLFc7Ozs7Yzs7OztpQixPOzt5Qzs7Z0I7Ozs7Ozs7O1M7UztVOzthLE87Ozt1QixXO3VCLFc7c0I7WTtVLFE7VSxRO1U7VTtZOzs2Qjs7OztVO1k7OzZCOzs7Ozs7VTs7O1ksc0IsTztZOzs2Qjs7Ozs7OztVOzs7OzthO2EsTzs7O3VCLHlCO3VCLDJCO3NCO1k7UztTO1M7VSxPO1UsTztTO1MsTzs7OztVOzttQyxPLDhCOzs7Ozs7VTs7O29CLFE7b0I7b0IsVztvQjtvQixvQjtvQjtxQjs7d0I7O3VDLDJCOztxQjs7OztxQjtxQixNOzttQjs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OztNOztLOzs7O0ksVztJLEksZ0M7Ozs7O0s7SyxNOzs7Rzs7STtJO0ssZ0I7SztLLDBDO0k7STtHOztJLEcsK0I7SSxJLFEsMEIsVTs7SztNO0ssSSxxQjtLO007TSx5QjtNLG9CO007TTtNOzs7Ozs7TTtNLE07Ozs7Ozs7STtHOzt1QyxrQzs7STtJO0c7aUMscUM7O0k7Rzs7STtLO0s7STtJO0c7Rzs7Ozs7SztNO007TSxJO0s7STtJLEk7Ozs7NkM7SyxNOzs7Ozs7O0ksWTs7OztRO1Msd0I7Ozs7UTtROzs7O2E7UyxrQzs7UyxNOzs7UTs7SSxNO0c7Rzs7OztJO0k7Ozs7UztVO1U7VSxLO1M7UTtLLEk7Ozs7TTs7TyxROztNLE07Ozs7Ozs7O0ssWTs7OztTO1UsVTtVOzs7UztTOzs7UyxjLDRCOzs7O0ssTTs7Rzs7O0s7TTtNLEs7TTtLO0k7SSxJOzs7O0s7O00sUTtNLFE7O0ssTTs7Ozs7Ozs7SSxZOzs7O1E7UyxVO1MsVTtTOzs7UTtROzswQjs7SSxNO0c7RztJOzs7O0ksSSw2QixROztLO00sTTtjLE07SyxJLFEsNkI7Szs7OztPO1EsVTtRO1E7Ozs7UTtTLFM7Uzs7O087ZTtPO087OztPOztROztPO1EsVTtROzs7O1EsUTtPO2UsTTs7Rzs7SSxJLG9CO0k7Rzs7STtLOzs7STs7O0c7RztJOzs7Ozs7UyxZOzs7O00sSTs7OztRLE07Ozs7TSxJOzs7OztPLE07Ozs7Ozs7O0s7O007Yzs7VTs7O1UsTTs7Ozs7Ozs7OztLO0ssSTs7Ozs7TSxNOzs7O0k7ZTs7OztHOzs7O0k7OztLLEksVTs7Ozs7OztLOzs7O007Szs7OztPLE07OztNLEk7Ozs7O08sTTs7Ozs7O0ksYTs7O0c7RztJOzs7Ozs7Ozs7Ozs7SSwyQjtJLEk7Ozs7Ozs7Ozs7UTs7O1MsUTtTO1EsTTs7Ozs7SyxNOzs7STs7O087Tzs7USxTO1MsTTs7Ozs7TyxJOzs7OztRLHNCO1EsTTs7O087TTs7SSxPOzs7YztjO2U7Ozs7OztlLHNCO2UsTTs7O2M7YTs7Rzs7STtLO0s7OztLO087OztVOzs7Ozs7O1U7VztVLEksVTs7OztrQjs7YztlO2lCO2U7Ozs7O2M7ZSxVO2U7Ozs7Ozs7OztXOztVOzs7O1csUTs7VztZLFU7WTs7Ozs7VTtTOzs7Ozs7OztJO0c7O0k7Szs7SSxPOzs7YztxQjs7d0I7YTs7Rzs7STtLO0s7O0k7SyxJLDZCLFE7bUM7OztRO1MsUTtTLE87UTtROzs7USxxQjs7Ozs7USxNOzs7Rzs7STtJOzs0QixtQiw0Qjs7STs7Tzs7O1U7VTtTOztJOzs7TztPO007Ozs7Rzs7O0ssUztxQjtRO00sTTtLLFc7SyxjO0k7SSxJLFc7Ozs7SztLOztJO0k7Rzs7SSxZO0k7OztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7VTtXLG1CO1csb0I7VztzQjs7Ozs7Ozs7VyxLOzs7Ozs7TSxJLDZCO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7YTtjLG1CO2Msb0I7eUI7Ozs7Ozs7Ozs7Ozs7O21CO2U7O3NCLCtCOzs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7ZSxVOzs7O2UsVTs7Ozs7YyxHOzs7ZTtnQixPO2dCO2dCLDBCO2dCOzs7OztnQjtpQjs7Ozs7OEI7OzswQjs7O2lCO2U7Z0IsTTtnQixVOzs7Ozs7OztrQjs7OztpQixHOztrQjttQjs7c0I7bUIsTTtrQixtQjtrQixvQjtrQjs7Ozs7Ozs7a0I7OztpQjs7O2dCOztlO2dCO2lCO21COzs7c0I7b0M7c0I7dUIsUTt1QixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MkI7NEI7NEI7Ozs7Ozs7NEI7Ozs7Ozt1RTs7eUI7O3dCOzs7Ozs7OzJCLE87Ozs7OzsyQjs0Qjs2Qjs2Qjs7Z0M7OzttQztrQzs7NkI7Ozs7Ozs7NkI7Ozs7eUI7Ozt3Qjt5QixlOzs7bUM7MEIsVzswQjswQixXOzZCOzs7OEI7OztpQzs7Ozs7Ozs7OEI7OztpQztnQzs7Ozs7Ozs7Ozt5Qjs7Ozs7Ozt5Qjs7O29DLE87O3NCO3FCOzs7Ozs7Z0I7Z0IsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE87Z0I7Ozs7cUI7OztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Szs7OztJLFc7TywwQztJLE87OztjOzs7O0c7O0k7Szs7O0s7OztLOzs7O0ksK0I7STs7Ozs7TSx3QjtJLE87OztjOzs7Ozs7ZSxRO2UsVTs7Ozs7a0M7Ozs7O3FCLE07Ozs7Ozs7ZSxNOztjO2U7ZTs7Ozs7OztlOytCOzthOztHOztJO0k7Rzs7STs7SSxJLG1DOztJO0ksTzs7aUMsdUM7OztjO2U7OztpQztlOzs7Ozs7OztlO2UsTTs7O2E7Rzs7SSxJOzs7NkI7OztJO0c7O0k7STtLLFc7SyxXO0ssWTs7OztTO1UsVzs7OzBCOzs7O1M7O1UsVTs7OztVLE87VSxrQjs7VTtXLE87VyxPO1csUztXLFE7VyxPO1csTztVOztTO3FDO1MsZTtvQjtTLFc7Ozs7SyxPOzs2Qjs7O0c7O0k7STtJOztHOztJO0ksTzs7O2M7YyxPOzs7OzBCO3dCO2E7O0c7O0ksSSxPLDBCO0k7SSxJOzs7OztLO0ssTTs7O0ssTztJOzs7Ozs7SSxNOzs7O2E7O0c7O0ksSTs7O3FDOzs7STtHOztJOztJOztJO0c7O0ksTzs7O2U7OztnQixTO2dCLFM7b0M7d0M7ZTtjOzs7Ozs7YztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7Ozs7Ozs7O1csSzs7Ozs7O007TztPO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUI7ZTs7c0IsK0I7Ozs7Yzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2MsSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlO2dCO2lCLDhCO2lCLFU7Ozs7Ozs7YztlLE87ZSwyQjs7OztlLE87aUI7ZSxXO2U7O3FCOztnQjsyQjtjO3VCO2M7dUI7cUI7ZSxXO2U7Ozs7O2lCOzs7OztpQjs7OztrQztvQjtxQixRO3FCLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QjswQjswQjs7Ozs7OzswQjs7Ozs7O3FFOzt1Qjs7Ozs7Ozs7Ozs7OzsyQjs0Qjs0Qjs2QixPOzsrQjtrQzs7O29DOzs7O21DOzs7cUM7OztrQzs7O3FDO29DOzs0Qjs7Ozs7Ozs0Qjs7Ozs7Ozs7O3lDOzs7O3VCOzs7O3FCOztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7OztjO2U7Z0IsTztnQjs7OztxQjs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7Ozs7SSxXO08sMEM7SSxPOzs7Yzs7OztHOzs7O0s7TTs7O007OztNLE87TTtnQjtLLGE7SztNO00sVTs7SztNOzs7O0s7b0M7O00sTzs7O2dCOzs7Ozs7aUIsTztpQixPOzs7O2lCOztvQjs7OztpQjs7O2dCO2lCO2lCOzs7Ozs7O2lCO2lDOztlOzs7Szs7OztJO0ksVztJLE87O2lDLE8sNEI7OztjO2E7Rzs7STtHOztJO0k7Szs7O2tCO0s7Ozs7OztLLE07OztHOztJLEk7Ozs4Qjs7O0k7Rzs7STtJO0s7TSxXO00sYzs7Ozs7TSxJOzs7a0MsTTs7Ozs7O0s7O0c7RztJOzs7Ozs7Ozs7O0k7SztPOzs7VTtVLEksVTs7O2tDOzs7O1U7Z0M7O3dCOzJCO1U7Uzs7O0s7Tzs7O1U7VSxHLDBDOztVO1M7OztLO087OztVO1UsSSxVOzs7a0M7Ozs7NkI7MkI7VTtTOzs7SSxPOzs7YztjLGlCO2U7YzthOzs7Rzs7STs7Ozs7Ozs7VTs7Ozs7Ozs7O2E7OztnQjtnQixJLFU7Ozs7a0IsTTs7Ozs7Z0IsSTs7Ozs7O2lCLE07Ozs7Ozs7O2dCO2U7O2E7OztnQjtnQixJLFU7Ozs7a0IsTTs7Ozs7Z0IsSTs7Ozs7O2lCLE07Ozs7Ozs7O2dCO2U7Ozs7Ozs7Ozs7Ozs7YSxHO2M7YyxJOzs7Ozs7ZSxNOzs7Ozs7Ozs7OztjOzs7OztPLE07OztNOztLOzs7Ozs7OztNLE07Ozs7Ozs7STs7SyxRO0ssUTtLO0ksVzs7O0k7O0ssTzs7STs7SyxhO0ssVTtLLFU7SztLO0s7SztJO0k7OztLLEk7Ozs7OztNOzs7Ozs7O0k7Ozs7STtLLFE7SyxRO0s7SSxXO0k7SztNO00sYTtNO007TTtNO0s7SztLO00sSztNLEs7O00sTTtLOzs7USxJLG9EOzs7Ozs7UyxNOzs7Ozs7Ozs7OztPOzs7SztNOzs7UztTLEksVTs7OztXLE07Ozs7UyxJOzs7Ozs7VSxNOzs7Ozs7Ozs7OztTO1E7O007OztTO1MsSSxVOzs7O1csTTs7OztTLEk7Ozs7OztVLE07Ozs7Ozs7Ozs7O1M7UTs7Ozs7Ozs7SztNO1E7NkMsMEI7TSxPO007O3FCO0s7Ozs7OztLOzs7RztJOzs7Ozs7Ozs0Qix5Qzs7STs7aUM7O0s7O0k7Rzs7SSxPOzs7YztjO2E7OztHOztJO0k7ZTs7aUU7Ozs7Rzs7SSxPO0c7O0ksSSxVLDZCOztLLE07SSxtQixVOzs7OztNLEcsNkI7OztJLE07Rzs7STtJLE87Rzs7SSxZOztjLHNCOztLOzs7O2tCO087UTtTLE87UyxNOztRO1E7Ozs7K0I7Ozs7Tzs7OztRLEs7TywyQjtPO1E7UTs7O1E7OztRO087O08sc0IsTztPLDZCO087UTtRO1U7OzthOzs7UTtPOzs7O29CO3NEOzs7OztPOzs7OztROzs7Ozs7O1E7UyxjO1M7OztVO1c7OztVO1c7Ozs7Ozs7WSxNOzs7VSxjOzs7OztZLEc7YTtlOztnQzs7YyxNO2E7YTtjO2Msa0I7YztjOzs7c0I7Ozs7Ozs7YSxLO2MsTTs7O2M7OzthO2EsSTs7OztlLE07OzthO2E7Ozs7VSxNOztTLE07Ozs7O1M7VTs7O1M7OztPLHFCLE87Tyw2QjtPO087USxJLE87O1M7UztVO1c7Vzs7Ozs7OztRO1M7Vzs7O2M7ZSxROzs7Yzs7Ozs7OzthOzs7UztTOzs7OztnQjtrRDs7O1E7Ozs7K0I7Ozs7TyxxQixPO087UTtTOztTO1M7OztROztPOztPOzs7O1E7OztROzs7UTtPOzs7O08sb0IsTztPLGlDO1E7Uzs7UztTLDhCO1M7Vzs7O2MsOEIsUTs7Ozs7cUM7O2U7O2dCOzs7Ozs7OzJCOzs7MEI7O2U7O2MsTTthOztTOzhCO1M7UztXOzZDO1MsUTtROztPOztPOzs7UTs7O087OztPLE07ZTs7OztJOztJO0c7RztJLFc7Ozs7OztJO0ssVTtLO0ksTTs7O2E7O0c7Ozs7SyxHLG1DO0ssRyxvRDtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCO2tCOzs7dUIsK0I7Ozs7aUI7a0I7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztrQixPO29CO2tCO2lCLE87OzsyQjs7MEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQixHLGlDOzs7Ozs7Ozs7Ozs7Ozs7aUIsc0I7aUIsRztrQjtrQixHO21COzs7O2lCO2tCOzs7a0I7OztrQjs7OztpQixTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7dUI7c0M7Ozs7aUI7OztrQjs7bUI7Ozs7Ozt1QjtzQzs7O2lCLE87OzsyQjsyQjs7MEI7Ozs7Ozs7Ozs7Ozs7OztpQjtrQjttQixVOzs7O21CLFU7Ozs7bUI7Ozs7bUI7bUI7bUIsVTttQixXOzs7Ozs7Ozs7Ozt5QixHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO3lCOzs7Ozs7OzsyQjs7OzhCOzs7K0IsUTsrQixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lDOzs7OzsrQjs7OEIsTTs2Qjs7Ozs7Ozs7Ozs7O3dCOzs7MkI7Ozs0QixROzRCLFU7eUQ7Ozs7Ozs7Ozs7OytCOzs7Ozs7Ozs7Ozs7Ozs4Qjs7Ozs7Ozs7NkI7OzJCLE07MEI7Ozs7OzttQixNOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCO2tCOzs7Ozs7Ozs7O3dCO3VCO2tCOzs7OzttQjs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7a0I7bUI7O29DO21COzs7Ozt1Qjs7O21CO3FCOzs7d0Isa0M7d0I7O2dDOzs7dUI7Ozs7bUI7b0IsYTs7O3FCO3NCOzs7eUI7eUI7d0I7Ozs7Ozs7O3FCO3VCO3NCO2lDOzs7O29CO29CLE07OzhCOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7OztROzs7O1E7Uzs7Ozs7Ozs7TztROzs7Ozs7Ozs7USxHO1M7VTtXLE87VyxPO1c7YTs7O2dCOzs7aUIsUTs7O2dCOzs7Ozs7aUI7O2dCOztpQixPO2lCLE87aUIsTztnQjs7O3lCOzs7O2U7Ozs7VTs7Ozs7Vzs7OztPO1EsSSxROzs7Ozs7Ozs7OztrQjs7Ozs7Ozs7Ozs7O087USxXO1EsSSw4QixJOzs7OztTOzs7UTtTOzs7Ozs7O0s7Ozs7STs7STtJO0k7SyxXO0ssTzs7O2U7Ozs7O2UsSSw0Qzs7OztpQjt1Qzs7O2M7b0I7Rzs7SSxJLFEsMkIsTzs7OztROztROzs7OztTO1EsTzs7UTs7O1EsTTs7SSxPO0c7O0ksSSxRLDJCLE87Ozs7UTs7O1M7USxPOztROztTLFE7Ozs7OztTLE87UyxPO1MsTztTLFc7USxPOzs7UTs7SSxPO0c7O0ksWTs7STtHOzs7OztLLEcseUM7SztNLFk7TSxROzs7O1M7WTtVLHNCOzs7UztVO1k7O21DOzs7OztVO1M7VTs7Ozs7O1U7Ozs7cUM7Ozs7O2tCOzs7Ozs7Ozs7Uzs7Ozs7Uzs7VTtZOzttQzs7Ozs7UyxHLDRCO1M7VSxPO1U7Ozs7O0ssTzs7bUM7Ozs7OztJO0k7Rzs7STtJLE87Rzs7STtHO0c7OztLOztJLE87Rzs7STs7SztPOzs7VTs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7O1M7OztVOzs7Ozs7OztROzs7Vzs7Ozs7SSxPO0c7O0ksZTtlO2lCO0ksUzs7O0ssSyw2QjtNLGM7Ozs7UTs7OztTO1c7c0M7UTs7OztNLE07O0ssWTs7Ozs7UyxrQzs7Ozs7VyxrQjtZOztZLGM7O2E7Ozs7O3dCOzs7OztXOztTLFk7O1U7Vzs7O1csTztXLE87VTs7OztTOztVLFU7Ozs7OztVO1k7OztlOzs7Z0IsUTs7Ozs7Ozs7bUI7Ozs7b0I7c0I7Ozt5QixPOzs7b0M7bUM7Ozs7d0I7OztvQixPO3NCO29CO3FCLE87NEI7Ozs7Ozs7Ozs7ZTtjOztVO1k7OztlOzRCO2M7O1U7WTs7O2U7ZSxPO2M7O1U7Z0I7Uzs7OztJLE87OzRCOztHOztJO0c7RztJLGM7SSxrQjs7STtJLE87Rzs7SSx1QyxRO2tFO0ksSSxXLDJDOzs7O0ssSSxPLDJCLE87SztLO00sVzs7Ozs7OztXO1ksYzs7O2EsTTs7O1k7O2E7OztnQjs7O21COzs7Ozs7Ozs7O1k7YTtjLE87YyxJOzs7OztjOzs7Ozs7YyxNOzs7Ozs7O1csa0M7OztZLEc7Ozs7Ozs7OztrQjs7O3FCOzs7Ozs7Ozs7O1csbUIsTztXO1ksVTtZO1ksSTs7Ozs7WTtZO2EsVzthOztrQjs7O2E7ZTs7Z0M7Ozs7O2EsVTs7Ozs7YyxHOzhCOzs7Ozs7Ozs7Ozs7VyxHO1k7YTthLFU7OzthLE07Ozs7Ozs7Z0I7Ozt5Qjs7Ozs7Ozs7VTs7OzJCOzs7Ozs7TTtNLE07O0s7Szs7OztJO0s7SztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7O0k7Szs7TTtROzt5Qjs7OztNOztPOzswQjs7Ozs7Ozs7Ozs7OztNO087O1E7Ozs7Ozs7UTtRO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztPLEc7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7SyxNOzs7O0k7SyxZOzs7O087O1EsSztRO1EsVTs7Ozs7TyxNOztNOztPO1M7OzBCOzs7OztLOztNO1E7O3lCOzs7TTtROzt5Qjs7SztLOzs7Ozs7Ozs7OztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7USxLO1M7Ozs7VTtTOztpQjs7O29COzs7Ozs7OztROztTO1c7OztjO2M7YTs7UztXOzs7YztjO2E7O1M7UTs7O1E7Ozs7UztROzs7O0ksRztLLE07Ozs7Ozs7Ozs7O0k7O0s7O0s7O1E7O3lCOzs7Ozs7Ozs7STtJO0c7O0ksRztLLE07STs7Ozs7Szs7Szs7Szs7UTs7eUI7Ozs7Ozs7OztJO0k7Rzs7SSxTO0ksRywwQztJLEksOEIsUTs7SyxvQixPO0s7OztRLG1CLFE7Ozs7Ozs7VyxPOzttQzs7Ozs7UTtPOztLLE87OzZCOzs7SSxPOzs0Qjs7Rzs7STtJLE87OzRCOztHOztJO0s7SztLLFE7SyxVOzs7OztLLE87O0k7Rzs7O0ksWTs7Ozs7UTtTLEksWSw2QjtTOzs7O2dDOzs7OztRLEc7UyxXO1M7O1c7OztjLGtCLFE7Ozs7Ozs7ZTs7YzthOztVOztROztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLGM7cUIsWTtHLEksK0I7O0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7SSxXO0ksTztHOztJLHVCO0c7RztJOzs7UTtRLHNCOztRO1Esc0I7O1E7USxzQjs7UTtRLHNCOztRO1Esc0I7O0ksdUIsTSwwQztHOztJO0k7Ozs7Ozs7cUM7O3FDOztxQzs7cUM7O3FDOzs7Ozs7OztLO0s7Ozs7NEI7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtnQjtJOztLLG1DOztLOztHOztJLHFDLE87Ozs7Ozs7Ozs7Rzs7SSxXO0ksTztHO3lCLCtDOztJO0k7STtLLE87SztPO1MsMkM7SSxPLFc7Rzs7SSwwQiw0QztJO0s7SyxROzs7STtLO0k7SyxPO0k7STtLLE87STtJO0s7Tyx3Qyx1QjtLLG9CO0ssVTtJOzs7Tzs7UTtRO1E7TztPO007O0ksTzs7O2MsWTs7O2UsTzs7Ozs7Ozs7OztjO2U7aUI7bUQ7ZSxPO2MsTzs7Ozs7Ozs7Ozs7O0c7O0ksVztHO0c7c0IseUI7RztJO0k7OztJO0ssa0IsTztLLE87STtJO2U7SSxPO0c7O0k7Ozs7TTs7TyxPO2M7OztLO00sVztNLE87O0s7TTs7Uzs7WSxPOztZLE87O1ksTzs7WSxPOztZLE87b0I7O1E7TTtNLE87TSxROzs7TSxHOzs7TztRO3lDOztVOzZDOzs7Ozs7d0M7SyxjOztpQjs7TTtPO2tCO08sVztjO0s7TSxZO007TTs7ZTs7OztNO2E7OztRLEk7Ozs7Ozs7O1M7Ozs7O0ssTzs7SSxXO0ksTztHOztJLEksMEIsTztJLE87Rzs7STtJLE87RztHO0ksZTs7Ozs7Ozs7STtJOzRCO0ssVSxnQztNO0s7OztHOztJOztPOztRLE87UTtxQjtPOztRO1U7Ozs7O1EsTztRLHFCO08sSSxZOzs7K0I7Ozs7Tzs7O1MsSSxVOzs7Ozs7Ozs7VSx1QixPO1U7Ozs7OztROzs7NkM7O08sc0M7Tzs7O087O0c7bUQ7Rzs7OztLO0k7STtJOzs2Qjs7Ozs7Ozs7VTs7O1csTztVO2M7Ozs7Ozs7cUI7Ozs7OztPLFMsVzs7Tzs7Tzs7O1E7UTtPOzs7TyxZOztPOzs7O0k7Ozs7Rzs7STtJLE87Rzs7SSxPO0c7O0k7O0s7Tzs7d0I7O0ssTztJLE87Rzs7Ozs7Ozs7Ozs7O0ksc0IsaUIsa0I7O0c7O0ksWSxPOztJLE87Ozs7Ozs7YyxPOzs7d0IsTzt1Qjs7YTs7RztJOzs7O0k7STtxQzs7O007Ozs7O0c7O0ksWSxPOztJLE87OztJLDhCO3lDOztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7SyxJLEs7Ozs7TSxHO007Ozs7O0ssTzs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksc0I7Rzs7O0s7SyxPOztJO0ksc0I7Rzs7STtLLE87Ozs7TyxPOztPOzs7OztRLE87UTtPLE87Ozs7Ozs7Ozs7OztPLE87O087Ozs7UTtPLE87Ozs7Ozs7O3FDOzs7O08sTzs7Ozs7OztpQjs0QixPOztpQixPOztnQjs7O2M7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7USxVOzs7Ozs7OztXO1csTztVO08sTzs7Ozs7cUM7Ozs7Ozs7Ozs7OztpQixhLE87O2lCLE87O2dCOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7SSxZLE87Ozs7ZTtlOzs7SyxPOzs7SSxPOzs7SSxPOzs7YyxZLE87O2MsTzthOztjLE87YTs7YyxPOzs7Ozs7Ozs7d0IsUSxPOzt3QixPOzt1QjthOztHOztJOztJOzs7O0c7OztJLGdEO0k7Rzs7SSxjOytCOzs7SyxXOztJLGdCLE87SSxPO0c7RztJO0k7STtJO0k7Ozs7Ozs7SSxRLE07O0ksTztHOzs7STtLO00sUTs7O00sVTs7OztPOzs7USxPOzs7UTtVO2E7Ozs7UTtTLFc7UyxHOzs7Ozt3QjtZOzthOzs7YyxXOzs7Ozs7Ozs7VTtXO1k7Yzs7K0I7O1k7Ozs7OztzQzs7WTs7YSxPO3dCOzs7Ozs7Ozs7Ozs7O0s7Ozs7NEIsVzs7Ozs7STtJOzs7UTs7UyxTO1MsSTs7O1MseUI7OztROzs7O1E7OztTOzs7UTs7Ozs7O0ssSTtLOztHOztJO0ssWTtLLE87STtjOztHOztJO0k7Ozs7O3dCOzs7Szs7UTs7O1c7O1k7Ozs7O1c7WTthLEk7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O1U7Ozs7O0k7Rzs7STtJLE87O2lDLGdDOzs7Rzs7STtjLG1DOztHOztJO0k7Ozs2QixXOzs7O1Esd0M7UTs7Ozs7O0s7O0c7O0ksK0I7dUI7STtLOzs7O0ssUTtLOzsyQzs7YyxNOztNOzs7Uzs7VSxvQjtVLEcsa0Q7O1M7O1UsSTtVLE87VSxPOzs7VTs7OztZOzs7OzJCLDRDO2E7YTtlOzs7a0I7a0IsTztpQjs7WTs7O2E7YztjO2dCOzs4QixPLCtCOzthO2M7ZSxPO3NCOzs7Ozs7Ozs7Ozs7Uzs7UTs7O0k7Ozs7Ozs7Ozs7Ozs7O007TyxXOztRLDJDOzs7OztLLEksSTs7Ozs7O0s7O0c7O0ksTzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksVztJO2lDOzs7STtHOztJLGlCOztJLFc7SSxPOzs7YyxrQixROztlOzs7Z0IsTztlOztpQzs7Ozs7O2M7YTs7Rzs7SSxZOzs7O1E7Ozs7UztRLE87O1Esa0M7O1Msb0IsTztTLE87O3FCO1EsTzs7O2tCOzs7Z0M7Z0M7aUI7Ozs7aUIsNEI7USxPOztRLG9CLFU7OztTLHNCLE87O1EsTzs7SSxPO0c7Rzs7SSxlO0k7O0ssTztnQjswQjt3Qjs7RztHO0k7STtJO0k7STtJO0k7STs7O0k7SyxNO0s7SyxXO2U7Ozs7Ozs7Ozs7Ozs7OzthLE87Ozs7OztROztJO0c7O0k7STtLLEksVzs7OzZCOzs7OztHOztJLFc7STs7O0s7O1E7OztXO1c7VTs7Szs7OztJO0c7O0k7SyxXO0s7SyxpQzs7Rzs7SSxjO0k7SztNLE87TSxPO0s7Szs7Tzt3QjtNOzs7Rzs7STtJLEksVyw4Qzs7OztLO00sVztNOzs7Ozs7Ozs7Ozs7OztZOzthOztnQixPOzs7MEI7MEI7eUI7O2U7WTs7O2E7OztpQixXO2lCLE87Z0I7YztnQjt3Qyw4Qjs7Ozs7OztrQjs7TTtNOzs7Rzs7SSxZOztLOzs7UTtRLFc7Tzs7O0c7O0ksNEI7OztJLE87Ozs7ZTs7O2M7OztHOztJO0k7RztHO0k7STtJO0k7O0k7SyxXOzs7Rzs7STtHOztJO0s7OztHOzBCLGtDOztJLFc7SSx3QjtJOzs7Rzs7STtJLHNCO0c7O0ksWTs7OzswQjs7OztROztJO0c7O0k7STtLO0ssRztNO0s7TSxNO007TTs7Ozs7Uzs7Ozs7O1MsRztVO1MsWTs7Ozs7O3lCOzs2Qzs7Ozs7UztTO2lDOzs7Szs2Qjs7RzsyQiw2Qjs2QixtQixzQjs7STs7Ozs7Rzs7STs7Ozs7STs7O0c7MkIsVSwrQjs7STtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtNO1c7SztNLDZCO007O3lCO0s7OztLLEksTSw4Qjs7OztTO1U7VSwwQjtTOzs7OztVLDBCOzs7UyxHO1UsYzs7Ozs7OzthLEc7Ozs7Ozs7Ozs7OztTOzs2Qjs7Uzs7O1U7OztVOztVLDRCO1M7UztTOzs7Uzs7UyxPOztTOztTOztVLFU7Ozs7VTs7ZTs7O2lCOzhCO2dCOzs7VTtZOzs7ZSxrQixROytEO2U7Yzs7VSxPO1UsYztTOztVO1c7WTs7O1k7WTtZOzRCO3FDOzs7Ozs7aUI7bUQ7Vzs7O1M7VTtZOzs7ZTs7O2dCLFE7NkM7Ozs7Ozs7aUI7Ozs7Ozs7aUI7OztlOzs7VTs7OztlO2lEO1M7O1M7Ozt3Qjs7UyxnQjtTO1UsUTtVO1M7UztVO1k7OzZCOztVO1M7O1M7O1M7OztVO1k7OztlOzs7Z0I7Z0IsTztlLFc7Yzs7Uzs7SztJO0ksRzs7TTs7dUI7O0ksWTs7Ozs7O1Esc0I7UTs7O0k7SywrQjtLO0s7Ozt5QjtLOztJO0c7O0ksTzs7NEI7O0c7O0k7SztNLFU7OztNO1E7OztXO3dCO1U7OztNO1E7OztXO1csTztVOztNOzs7Szs7O2dCLE87STs7O0s7Szs7O0ksWTtJLE07Rzs7STtLOzs7OztNO007OztLOztJLGM7Ozs7Ozs7OzsrQjs7STs7O0k7SSxPO0c7d0MsMEI7O0k7STtHOztJO0k7STtHOztJO0k7RzswQywwQjs7STtJO0c7O0k7Szs7O0s7SztJLE87Rzs7STtJO0c7O0ksTzs7O2MsSSxPLDRCO3FDO2M7YzthOzs7Rzs7STs7Tzs7O1UsVztVLE87d0I7O1M7OztJLE87Rzs7STs7SyxPOzs7SSxPOzBDLDBCO0c7O0ksSTtJLFc7Rzs7SSxxQzs7SSxlO0c7O0k7SyxPOztLO087O3dCOztLO0k7Rzs7STs7K0Isc0M7O0c7O0ksSSxpQzs7SyxtQixPO0s7OztRLFcsVztRO1M7VSxPO2lCOzs7USxjO087OztJO0k7STs7cUI7Ozs7Syx1QixVOzs7O08sc0IsVTs7Ozs7OztVLEc7VztZLFc7bUI7Ozs7Ozs7Ozs7OztLOzs7OztJOzs7Ozs7UTt1QywwQjs7OztROzs7Vzs7VTs7O0k7Rzs7STtLOzs7O0ssa0I7O0s7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs0QywyQjs7O0k7SztPOzs7VSxhO1Usc0I7VSxXO1U7VyxXO1c7Ozs7O2M7ZSxPO3NCOzs7Ozs7Ozs7Ozs7OztVO1csVTs7O1c7O1U7Uzs7O0s7Tzs7O1U7OztXOztVO1M7OztLLE87Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7OztpQjs7O1E7Ozs7O1M7OztjOzs7OztJOzs7OztZOzs7Rzs7STs7Rzs7STtJLE87Rzs7STtJO0k7Rzs7STtJO0k7SSxPO0c7O0k7STtJO0c7O0k7SSxPO0c7cUQsd0I7Rzs7SSxJLHVCO0ksTztHOztJO0ksTztHOztJOztLO087O3dCOztLO0k7Rzs7STtJO0k7STs7Rzs7STtLLFU7Szs7Szs7c0I7O0ssTzs7O2U7bUY7ZTtjOztJO0k7O0ssTztLOzs7SztJOzs7Ozs7O0k7Rzs7STtJO0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJO0k7STtLLE87Szs7O0ksTzs7Ozs7O0c7O0k7SyxPO0s7SztLOzs7OytCOzs7OztJO0c7O0k7SSxPO0c7O0ksWTs7O0s7O0k7Rzs7O0k7Ozs7Ozs7UTs7O1MsTTtTO1M7UTs7VTthO1MsVztTLEs7VSxPOzs7OztRLHVCO1EsRztTOzs7UTs7Z0MsbUIsd0I7Ozs7O1E7Ozs7Ozs7OztROzs7O1MsTTtTO1M7UTs7VTthOzs7OztZLE07OztTO1M7Ozs7O1E7O1M7Uzs7UztTO1c7OztjO2M7YTs7O1M7Vzs7O2M7YzthOzs7UyxhO1M7Vzs7O2M7Yzs7Ozs7OzthOzs7UztXOzs7YztjO2E7OztTLGM7UztXOzs7Yzs7Ozs7ZTs7O2U7YyxhOztjO2E7OztRLG9COzs7OztTLDBCOzs7USxHO1MsWTs7Ozs7OztZLEc7Ozs7Ozs7Ozs7OztROzs7O0k7STtJO0ksTztHOztJO0ssYztLOzs7Szs7STtHO0c7O007OztTO1U7VTtZO2U7O1M7UTs7STtJO0k7STtJLGU7STtJOztxQjs7SSx5QjtJOztLO0s7SyxPO0ssTztJLHFCO0c7O0k7SSxPO0c7O0k7STtJO0k7SSxlO0k7STs7cUI7O0k7STtLLE87SztPOzs7VTs7Uzs7O0s7Tzs7O1U7O1M7OztLO0s7SyxPO0ssTztLLE87SztJO0c7O0k7SSxPO0c7O0k7O0s7SztLO0s7SSxpQjtJLFc7Ozs7Ozs7Ozs7STtJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztpQixjO2tCLFc7a0IsTzs7aUI7Z0I7Z0IsTzs7OEI7O0c7O0ksVztJLE87Rzs7Ozs7eUI7O08sbUI7Tzs7Ozs7O1M7O1UsUTs7cUI7O1MsSSxzQixXOzs7O3VDLFM7Tzs7UTs7UTs7Z0M7TzttQzs7OztJOzJCLFc7O2M7YyxPOzs7d0I7d0IsTztpRTt1Qjs7YTs7Rzs7STtLLE87SyxhOztLOztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1U7WTs7O2U7OytDOztlO2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNO0s7SztNLFE7TTs7TTs7Tzs7O007O087Uzs7O1k7OzthOzs7WTtXOztPOzs7O1ksTztXOzthOztLO0s7STtJO0ksTztHOztJOzs7OztJLFc7Rzs7SSxJLHdCO0ksVztHOztJLFksc0I7OztLOzs7TTtNLE87SyxPOztJOztLO0ssTztJLE87OztJLFM7O3NCLGtEO0k7O0ssTztLLHNCO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7O0ssdUI7SyxXO0ssVzs7STtLO087Ozs7Ozs7OztJO0k7O0ssTzs7OztlLG9COzs7O0k7SSxPLFc7Rzs7SSxPO0c7O0k7SSxPO0c7O0k7STtLO0ssTztLO0k7SztNLFk7TSxPO0s7Szs7SSxPO0c7O0ksVztJOzs7SyxJLFEsMkIsVTs7OztNOzs7OztPOzs7Tzs7Ozs7Tzs7Ozt1Qjs7Ozs7O08sRztRO1M7UztTLE87UyxPOztrQjs7OztNOzs7O0k7Rzs7O0k7STtJO0s7Szs7STtJO0s7aUM7SztLO0ksTzs7O0k7O0ssTzs7STs7O0ssTztLLE87SSxPOzs7STs7Tzs7d0I7SSxPO0c7OztJLEcsK0I7STtJOzs7STs7SyxPOztJOzs7SyxPO0ssTztJLE87OztJLFk7O2dCOztJLE87Ozs7Ozs7OztrQzs7Ozs7Ozs7Ozs7SSxLLGtDLDhCLCtDLFU7STs7O0k7O3lCOzs7NEM7OztJO0c7OztLLE87O1E7O29COztLO0k7SSxTOztJLGdCO0c7O0k7OEI7Rzs7OzttQjs7OztNOzs7TTs7Ozs7O0c7STtNOzs7O1UsTztTOzs7O0ksWTs7Szs7TSxVOzs7Ozs7SyxlO0s7TSxPO00sTztNLFc7TSxPO0ssTzs7STtHOztJOzs7SztJO3NDO0k7OztJLFc7SSxPO0c7O0ksTztHO0c7SSxhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFE7OztLLE87O0k7Rzs7SSxXO0ksSSxzQyxJOzs7Ozs7STtJO0c7O0ksWSxPOztJLE87OztJO0k7STs7SyxPOztLLE87Ozs7Ozs7Ozs7Rzs7STs7Tzs7OztROztRLFE7USxVOzs7UTtTOztrQixPOztpQjs7OztRO1M7O2tCLE87O2lCOztPOzs7O1EsVzs7OztVLFc7O1U7OztXO2E7K0M7VTtrQjs7Ozs7Ozs7OytDOzs7OztpQjtnQzs7O1c7VztZLE87O2M7Ozs7Vzs7WTtjOzs7aUI7aUI7aUIsTzswQjs7Z0I7O2M7O1U7a0I7OztVOzs7O1csTztVO2tCOzs7Ozs7Ozs7O1Usa0IsTztVO2tCOzs7Ozs7Ozs7OztRLFc7OztRO2dCOzs7Ozs7Ozs7TyxXOzs7Ozs7UTtRO1MsTztlOzs7Ozs7Ozs7Ozs7O2lDOzs7Z0M7OztVLG1CLE87VSxXOzs7VTtVLFc7VSxXOztVLG1CLE87VSxXOzs7VTtVLFc7VTtrQjs7Ozs7Ozs7OztPOzs7TztPO08sYzs7Ozs7Vzs7b0I7b0I7b0I7b0I7cUIsTztxQixPO29CLE87O21COztPLDBCOzs7O0ksTzs7OytCLHdDO0c7O0ksVTs7SSxPO0c7O0ksWTs7O0ssSSxXOzs7O00sVztNLE87O2lCO0ssYzs7TSxXO00sTzs7Szs7STtHOzs7OztnRSxTO0k7Ozs7YztjO2U7aUI7OztvQjtvQjttQjs7O2U7aUI7OztvQjs7O3FCLE87b0IsVzttQjs7OEI7YztlOzs7b0I7b0I7bUI7O2U7YztlLE07O2M7O2U7Z0I7Ozs7Ozs7b0I7Ozt1Qjs7O3dCLFE7Ozs7O3dDLG1COzt1Qjs7Ozs7ZTtnQixPO2dCLE87O2dCOztpQjttQjs7b0M7OzttQjs7Ozs7Ozs7OztnRDtlO2dCLE87Z0Isc0I7Ozs7Ozs7O2U7ZTs7Ozs7O3NDOzs7a0I7O2dCO2dCOztlOztrQjs7O3FCO3FCLEksVzs7OzZDOzs7cUIsWTttRDtxQjs7c0IsTztzQixTO3NCO3FCLE87b0I7OztlOzs7a0IsaUI7OzttQjs7O29CLE87b0IsTztvQixPO29CO3NCOzs7OzBCLE87eUI7O21CLE87Ozs7Ozs7Ozs7O2tCOzttQixPO2tCLE87Ozs7Ozs7O2lCOztlOzs7Ozs7OztlLE07O2E7Ozs7STtLOzs7Ozs7O0s7O0k7Szs7O2tCO0k7Szs7O0k7O0s7OztJOzs7STtJO0c7O0k7STs7TTs7O08sYTtPLE87TyxPO08sTyxXO08sTzs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O0ssTTs7Rzs7SSxZOztJOzs7STs7O0ksbUI7eUI7STtZOzs2Qjs7Rzs7SSxxQjtJO1k7OzZCOztHOzs7STs7OztjO2M7ZTs7O21CO2U7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2lCOzs7Ozs7Ozs7OztlLE87YztlOzttQjs7O2MsTzs7Ozs7d0I7Ozs7Ozs7Ozs7c0M7O2E7OztJOzs7O2M7YztjO2UsTTs7ZTs7a0I7O2UsTzs7Ozs7Ozs7Ozs7YyxpQjtjLE87Ozs7Ozs7Ozs7YTtHOztHLDhCO0csaUM7O0k7Rzs7STs7NkIsK0M7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksVTtJOzs7Rzs7STt5Qjs7Rzs7STtLLE87OztPLE87OztPLE87Ozs7Ozs7aUIsVTtpQixPO2dCOztpQixPO2dCOzs7TyxPOzs7OztpQixPOzs7Ozs7Ozs7Z0I7OztPLE87Ozs7Ozs7aUIsVTtpQixPO2dCOztpQixPO2dCOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPLE87Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7OztJLFk7OztLLE87OztlLE87Ozs7MkM7O2M7O0k7SSxPOzs7O2dDOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7SSxJLDRCLDhCOzs7OzRCOzs7Rzs7SSxpQjtJLGdCO0ksTztHOztJLE87Rzs7STs7O087O1EsTztRO08sVzs7Ozs7Ozs7VSxZO1U7Ozs7Ozs7O1U7VyxPO1csVTtVOzs7Ozs7OztJO0c7Ozs7Z0I7Ozs7O1E7Ozs7O1MscUIsTztTLEs7Ozs7Ozs7Ozs7Ozs7O1M7O1Usa0I7VSxZO1U7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1E7O1E7Ozs7Ozs7Uzs7d0M7UyxRO1E7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7NEI7Ozs7O1EsWTtROzs7OztROzs7UTs7Ozs7STtxQjtrQjs7STtHOzs7O0k7NkM7SSxPO0c7O0k7OzRDO0ksTztHOztJOztPOzt3Qjs7O087ZTs7Rzs7SSxTOzs7Szs7Ozs7OztNOzs7TTtLOzs7OztJO0c7O0k7STs7O1Esa0IsUTtvQjs7USxJLGdCOzs7O1UsTTs7Ozs7O1E7O1MsUTtTLFU7OztTOztZOzs2Qjs7UTs7Ozs7Uzs7Ozs7OztTO1U7b0I7VTtVO1M7OztROztRLG9CLFU7c0I7O1EsSSxrQjs7OztVLE07OztROzs7O0c7O0k7Rzs7STs7Ozs7Ozs7OztPOzs7Z0I7Ozs7Ozs7O087O2U7Ozs7O08saUI7O087Ozs7OztROzs7Tzs7O087UTs7Ozs7Uzs7OzthOzs4Qjs7Ozs7O1E7Ozs7O2UsTTtROzs7O08saUI7OztPLGlCOzs7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZO0ksSSxnQjs7OzJCOzs7aUM7STtLLE07SyxVO0ssTTtLLFM7SyxRO0ksSTs7OzRCOzs7SSxnQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxpQjs7STtZOzs7ZTs7Ozs7OztrQjs7O3dDOzs7Ozs7Ozs7Ozs7OztrQjs7Ozs7eUM7Ozs7OzswQjs7OztHOztJOzs7Tzs7MEI7O087ZTs7Rzs7STtJO2dCOzs7O1E7OztTO1Esa0I7O1E7Ozs7O1M7O2E7O1MsK0I7USxPOztROzs7O1MsUTs7Ozs7OztHOztJLFM7STs7O087OzBCOztPO2U7O0c7O0k7STtnQjs7OztRLG9DOztROztROzs7OztTO1EsVTtRLFk7Ozs7OztROzs7O0c7cUMsdUM7Ozs7Ozs7UTtTLFk7cUIsTTtTLG9CO1M7Ozs7O1UsTTs7Ozs7USxPO2lCOzs7b0I7Ozs7Ozs7Ozs7Ozs7OytDOzs7O3FCLE07O29COzs7OztnQjs7OztJLEksZSxhOzs7MkI7OztHOztJO0ksa0I7SSxPO0c7O0k7STs7Ozs7UTs7O1M7UztTLE07UztTLE07USxPOzs7Rzs7STtJO0ssSSxjLHVDOzs7Ozs7Uyw2QjtTLEcsK0I7Uzs7OztTLG1DO1MsRyxpQztTOzs7aUI7OztHOztJOzs7STtLO00sbUM7Ozs7Ozs7O0ksTztHOztJO0s7SyxROzs7Ozs7OztPO1EsUTtRO1U7Ozs7Ozs7O0c7O0ksUzs7Ozs7Ozs7Ozs7Ozs7OztTLEc7Ozs7Ozs7Ozs7OztPOzs7WTtPOzs7OztPOzs7aUI7O3dCOztHOzs7SyxJLDZCLGE7Ozs0Qjs7O0k7O0k7Rzs7STtLO007TTtNOzs7UyxvQjtvQjs7UTs7O1M7Ozs7OzthLE87Ozt1QixtQjt1Qjs7d0I7d0IsbUI7a0M7O3NCOzs7OzJCOzs7O1M7UTs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO007UTs7O1c7VyxPO1U7OztNLDBCLE8sbUM7TSw4QixXOztLOzs7Szs7TTtPO1EsSztRO087Ozs7NkI7Ozs7Z0I7O0s7STs7STtHOzs7SyxZOztNO08sUTs7O21COztLLE87STtJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O0k7SSxZOzs7Ozs7Ozs7OztJO0ksTztHOztJO0ssVTtLOzs7Ozs7Ozs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7O1U7VSxTO1UsUTs7O1csTTtVLE07Ozs7Ozs7Ozs7Ozs7VSxHO1c7WTtZLE07a0I7Ozs7UyxNOztTOzs7VTs7WTs7O2U7Z0IsTTtnQixNO2UsTztjOzs7OztTOztVO2dCOzs7Uzs7O1U7Z0I7OztTOzs7O1U7Z0I7OztTOzs7O1U7Z0I7O0s7Szs7Rzs7SSxPO0c7O0ksa0IsTTtJLE87O0c7OztNLHVCOztNLFc7Szs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLEk7Ozs7O0ssTTs7SSxJOzs7Ozs7UztPLEc7OztRLEc7UyxHOzs7Ozs7O1U7OzthLE07Ozs7OztZLE07O1csSztXOzs7Ozs7Ozs7Ozs7Ozs7b0I7O00sTTs7SztLOzs7SyxNO0k7Rzs7SSxZOztLO00sTztNLFU7O3dDO0s7O0k7Rzt1Qyw0Qjs7STtHOztJLDhCOzZCLGlCLGtCOztHOzt1QixPLHlDO0k7Z0M7OztLLE87Ozs7Ozs0QixPLHlDOzRCLE8seUM7OztxQixPLHlDO0k7Szs7UTs7UTs7UTtnQjs7STtLOztNOztNO00sTztLLE87O0ksa0IsTztJLE87Rzs7SSxPOzs7Ozs7MkIsTyx5QzsyQixPLHlDO0c7O0k7Ozs7USxPOzs7Ozs7Ozs7O087Ozs7USxPO1EsTztPLE87Ozs7Ozs7Ozs7O2lCOztrQjs7aUI7O2tCO2tCO2tCLE87aUIsTzs7OztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O08sVztPLE87Ozs7Ozs7Ozs7O08sVztPLE87Ozs7Ozs7Ozs7O0c7O0ksd0IsTyx5QztJLCtCLFM7O0s7O00sTztLLE87O0k7SztPO0ssTztJLE87Rzs7cUIsTyx5QztJLDRCO0k7OzJCOzs7Tzs7O087O1E7UTtRLE87TyxPOztPOztRO1E7USxPO08sTzs7Rzs7STs7OztRLE87Ozs7Ozs7Ozs7Tzs7OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7aUI7Ozs7O08sTzs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7Ozs7Rzs7cUIsTyx5QztJLFU7STs7Ozs7SyxPO0ssYztJLE87Ozs7Ozs7Yzs7OztHOzt1QixPLHlDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Tzs7OztROztXOztjOztjOztjO3NCOztVO1E7UTtRLE87TyxPO2dCOzs7Ozs7O087Tzs7NkI7O087OzJCLE8seUM7UTs7VyxPO1U7TztROztXOzs7WTs7VyxPOztXLHFCLE87VyxPOztrQyxPOzs7Vzs7TyxXO08sTzs7O087O1EsTztpQjs7O087OztPOztROzs7TyxvQjtPLE87Z0I7Ozs7OztPOzs7TyxzQjtPLE87OztPOztRLFU7TztpQjtpQjs7Rzs7STs7Szs7STtLLE07SyxNO0ksSTs7Ozs7Szs7STtHOztJOzs7OztJOzs7Tzs7Ozs7USxPO08sRyx3QztPLFc7Tzs7K0Q7TztRO1E7Ozs7Ozs7OzBCO0s7O0c7RztJOzs7Ozs7Ozs7O0ksZTs7STs7O0k7O087O087O087Ozs7RzttQixtQzs7STtLOzs7Ozs7TSxRO00sUTtLOzs7TTs7SztpQjs7Szs7SSxPOzs7OztHOzs7STs7dUI7SyxzQixPO1EsNkM7SztNO08sTztPLE87TTs7Ozs7O007O0s7OztzQjtJOztLOzs7O0ksTztpRCxvQjtHOzs7STs7Ozs7O2U7O0ksSTs7Ozs7Szs7STs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0MsVTs7STs7Tzs7Tzs7Tzs7OztHOztJO0ssUTtLLFE7SyxVO0ssVTs7Ozs7O1Msa0I7VTtXLFU7OztxQjtVOztZOztXLE07VTtXLFU7OztVOzs7Ozs7VztZO2M7OztpQjtpQjtnQjs7WSxVOzs7VztZO2EsTzthLE87WTs7Ozs7Ozs7Ozs7Ozt5Qjs7VTs7Ozs7OztTLGtCO1UsZTtVLEs7VyxNO1U7VyxPO1csTztXLFE7Ozs7VyxjO1csYzs7O1c7VyxjOzs7Ozs7Ozs7Ozs7O1c7O2M7OztpQixrQixRO2lFO2lCO2dCOztXOzs7O1c7O1k7O2E7Ozs7OztjLFU7YyxVOzs7Ozs7Ozs7OztnQixXO21CO2lCO2tCLFE7a0IsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7aUI7OztrQjtrQjs7Ozs7Ozs7Ozs7O2M7O2dCOzs7aUI7aUI7Ozs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7Ozs7Ozs7Ozs7O3lCOztVOzs7Ozs7OztNLGM7Ozs7Ozs7O3NDOzs7OztzQzs7Ozs7Ozs7OztJOztNOztNO08sTztPLE87TTs7Ozs7OztLOztJO0c7OztJOzs7Ozs7Ozs4Qjs7Ozs7Ozs7Ozs7O1U7O2dDOzs7Vzs7WSxRO1ksVTs7OztlLHFCLE87ZSxHOzs7ZSxzQixPO2UsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7TTs7TyxROzs7TyxJOzs7Ozs7Ozs7USxJOzs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7Ozs7Ozs7SSxnQjs7Ozs7Ozs7Ozs7Ozs7VTtXO1k7O2UsVztlLE87Yzs7Vzt3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLE07Ozs7Ozs7Ozs7O1c7WTs7Ozs7Ozs7OztVO1c7WTs7ZSxXO2UsTztjOztXO3dCOztVOzs7VyxPO1csTzs7O2dCOzs7a0I7bUIsTzttQixPO2tCO21CLFc7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7a0I7aUI7Ozs7VTs7O1c7WSxrQixtQztZOztlOzs7Ozs7Z0IsUTtnQixRO2U7Ozs7Ozs7Z0I7O2U7Ozs7MkI7O2U7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNOzs7SSxnQjtJO0ssTztLO0k7SyxjOzs7Ozs7Ozs7SSxnQjtJOzs7Ozs7SSxvQjtJO0s7OztLLE87SSxPOzs7ZTtlO2dCOztlO2U7Z0IsUTs7O2dCLFU7Ozs7O2dCLEksc0I7O2dCLG1COzs7OzswQjtlO2dCLFU7Ozs7Z0IsVTs7OztnQjtlO2dCLEksb0I7OztlO2M7Ozs7Ozs7STs7Szs7STtLLE07SyxNO0s7SztJLEk7Ozs7O0s7O0k7Ozs7SSxzQjs7MEI7STtHOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksTzs7NkIsUzs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QixPLDRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7O0ksTzs2QztHOztJOzs7SyxNO0k7SSxPOzs7STtJO0k7STs7c0IsbUIsTyw2Qjs7O0c7O0k7STtJO0k7SSxnQixNO0ksTztHOztJOzs7OztJO0k7STtJO0ksTztHOztJOzs7OztJO0k7STtJO0k7Rzs7O0k7STtJLE87OztJO0ksd0I7Rzs7STtJLHdCO0c7OztJO0k7Ozs7TztPLE87OztPLE87OzRCLE87OztPLE87OzZCLE87OzhCLE87OzZCLE87O08sMEIsTTtPLE87OzRCLE87OzZCLE87OztPLE87OztpQjtpQixPO2dCOzs7O08sTzs7O2lCO2lCO2lCLE87Z0I7Ozs7TywwQjt1QyxPOzs7O0k7STtJO0k7O0c7Ozs7Ozs7STtJO0k7STtJLE87OztJO0ssa0IsTTtLLE87OztJLE87OzJCOzs7O0k7OztLLE87OztlO2U7ZTtlO2U7OytCOztlO2UsZ0IsTTtlLE87Ozs7O0ksTzs7MkI7Ozs7STtJO0k7STtJOzs7TztPO087TyxPO007O0k7SSxnQixNO0k7SSxPOzs7YztjLE87YTs7Rzs7SSxxQixNO0ksTzs7O0k7STtJO0k7O3NCLGtCLE8sNEI7O0ksZ0IsTTtJLE87Rzs7Ozs7O0k7STtJLE87OztJOzs7OztJO0k7STtJOzs7SztzQztLO0ssVTtLLE87OztJO0c7Ozs7Ozs7O0k7STtJO0k7Ozs7TztPO2lDOzs7eUIsTzs7MEI7OztVO1UsTzs7OztxQzs7OzRCOzs7TztPOztPOztPLHFCLE07TyxPOzs7TztPLFU7TztPLE87OztpQjtpQjs7aUM7O2lCLE87Z0I7OztPLHNCLE07TyxPOzs7TyxPOzs7aUI7aUI7aUIsTztnQjs7O08sdUIsTTtPLE87OzhCLE87OzhCLE87OzhCLE87OztPO08sTzs7OztJOzsyQixPOztPLHNDLE07TztPLE87O08sb0IsTTtPLE87ZTs7Ozs7Ozs7OztJO0k7STs7O087TztPLE87TTs7STtxQzs7OzhCOztPOzs7TztPLE87OztPOzs7VTs7OztXLE87OztVO1UsTzs7Ozs7USxPOztPOzs7OztRLE07TztPO087eUM7TyxPOzs7TztPLE87OztpQixrQixNO2lCLE87Z0I7Ozs7TztPLFU7TyxPOzs7TztPLFU7TyxPOztPLDBCLE07TyxPOzs7TztPLFU7TyxPOztPLHdCLE07TyxPOzs7Tzs7O1U7NkI7O1U7VSxPO1M7O08sVTtPLE87OztPO08sTzs7O087TztPLE87O08sMEIsTTtPLE87OztPO087TyxVO08sTzs7O087TyxPOzs7TztPLE87OztPO087TyxPOztnQyxPOztnQzs7NEI7OztPO08sTzs7O08sTzs7O2lCO2lCO2lCLE87Z0I7Ozs7TztPO08sTzs7O087TyxPOztnQyxPOztnQyxPOzs2QixPOztrQyxPOzs7TztPLFU7TztPLE87O2dDOzs7TztPLE87Ozs7O0k7OztPO087TyxPO007O0k7Ozs7STtJO0ksTzs7OztJO0ksVTtJLE87Ozs7STtJOzs7NEIsTzs7O08sTzs7K0IsTzs7NkIsTzs7OEIsTzs7NEIsTzs7OEIsTzs7TywwQixNO08sTzs7OEIsTzs7OEIsTzs7NkIsTzs7O08sMEI7O08sMEIsTTtPLE87O08sMEIsTTtPLE87ZTs7OztJO0ksd0I7Rzs7SSxZOztJO0ksTzs7Ozs7Ozs7STtJO0k7Ozs4Qjs7NkIsTzs7O087TyxPOzs7TztPLE87OztpQjtpQjtpQixPO2dCOzs7Z0MsTzt3Qzs7OztJOzs0QixPOzsyQjs7MkIsTzs7OEIsTzs7NkI7cUMsTzs7Ozs7Ozs7O0k7STs7O0ksTzs7Ozs7Ozs7STtJO0k7SSxPOzs7SSw4Qjs7OztPOzs7VTtVLE87Uzs7TyxPOzs7aUI7aUIsTztnQjs7OztPO08sTzs7O087TyxPOzs7TztPLE87Ozs7Ozs7OztJO0k7STs7OzhCOzs2QixPOzs7TztPLE87OztPO087TyxPOztrQyxPOzs7OztRO1E7USxPOzs7TztPLE87c0MsTzs7Ozs7Ozs7O0k7STtJO0k7SSxPOzs7Ozs7OztJO0k7STs7OztPO08sVTtPLE87OytCLE87OztPO087OztVO1UsTztTOztPLE87OztPO08sTzs7O2lCLGtCLE07aUIsTztnQjs7Ozs7Ozs7TztPOzs7VTtVLE87Uzs7TyxPOzs7TztPLFU7TyxPOzs7TztPLE87Ozs7Ozs7OztJO0k7STs7OztPO08sVTtPLE87O2dDLE87OztPO08sTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STtJOzs7NkIsTzs7a0MsTzs7a0MsTzs7O087TyxPO3VDLE87Ozs7Ozs7OztJO0k7STtzQzs7O087OztPO08sTzs7Tyx5QixNO08sTzs7O087TyxVO08sTzs7TywyQixNO08sTzs7O087TyxVO08sTzs7OEIsTzs7TywyQixNO08sTzs7Z0MsTzs7Z0MsTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STtJOzs7SztLLFU7SyxPOzs7SSxPOzs7O0k7STs7O0s7SyxPOzs7SSxPOzs7STs7SyxPOzs7SSxPOzs7O0k7STs7OzRCLE87OztPO087OztPO087OztPO08sTzs7NkIsTztzQyxPOzs7O0kscUIsTTtJLE87Ozs7STtJLFU7STtJLE87Ozs7Ozs7O0k7STtJO0k7SSxPOzs0QixTO3lDLFM7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7a0IsUzs7SSxnQyxPO0ksVzs7O0k7Ozs7SyxPO0ssTztJLFc7Ozs7SSxnQjs7NkIsUzs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NEIsTyw0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE87SyxPO0k7OztJLE87NkM7Rzs7STs7OztLLE87SyxPO0ksVzs7O0k7SyxPO0ssTzs7O0ssTzs7OztLOztLLE87SztPOzt3Qjs7STs7Ozs7Ozs7Ozs7O0c7O0k7SyxVO0s7SztLLE87SyxXO0ssaUI7STtHOztJO0ssUztLO0ssVTtLLGdCO0k7Rzs7STtLLFM7SztLO0ssZ0I7STtHOztJO0ssVztLLGtCOztJLFc7Rzs7SSx3QjtHOztJLHdCO0c7O0k7Ozs7SyxZO0ssWTtJOztPOzs7USxPO3lCOzs7Tzs7O1EsUTs7Ozs7OzZDOzs7Tzs7O1EsVTs7Ozs7OzhDOzs7K0M7Ozs4Qzs7O087O1EsTzt5Qjs7OzZDOzs7OEM7Ozs7O1EsTzs7O1c7OzRCOzs7O087O1EsTztRLHNCOzs7Vzs7NEI7Ozs7Ozs2Qzs7Ozs7MEI7O0k7OztJO0ssVTtLO0ssVztLLGlCO0k7Rzs7STtLLFM7SztLLFU7SyxnQjtJO0c7O0k7SyxrQixPO0ssVzs7O0k7WTs7NkI7Ozs7STs7O0s7YTs7O2dCO2lCLFM7aUI7aUI7bUI7O29DOztpQjtpQjtpQixPO2lCLFM7aUIsZ0I7Z0I7Ozs7Ozs7Ozs7Ozs7STtZOzs2Qjs7OztJO0ssVTtLO0s7SyxPO0ssTztLLE87SztPOzt3Qjs7SyxXO0s7SyxPO0ssZTtLO0ssTztLO087O3dCOztLLGlCO0k7Ozs7Ozs7Ozs7O0c7O0ksMEMsTztJLHFCOzs7STtLLFk7SztLO0ssTztLO087O3dCOztLO0ssTztLLHFCO0ssbUI7STs7Ozs7Ozs7Rzs7STtLLFk7SyxvQjtLLG1CO0k7Rzs7STtLLFU7SztLOztLOzs7O00sTztNLE87TTs7O1M7MkM7Ozs7Ozs7O0kscUI7STtHOztJO0ssVTtLLFU7SztLLE87STtLLDBCOzs7dUIsVzs7cUM7O1E7Ozs7UyxPO1E7OztJO0s7Tzs7d0I7O0s7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7VTt5Qjs7O1M7O1UsTzt5Qjs7O1M7Ozs7O1U7WTs7O2U7OztnQixPO2U7dUI7O3dDOzs7Yzs7VSxPO1UsTzs7OztTOzs7O1UsTzs4Qjs7O1M7OztVLE87VSxzQjs7O2E7OzhCOzs7OztTOztVLE87eUI7Ozs0Qzs7O1M7O1UsTztxQjs7OzZDOzs7Uzs7OztVLE87MEI7Ozs7O0kscUI7STtHOztJOzt1QixXOztPOzs7USxPO1EsTztPLFc7O08sZ0IsTztPLFc7ZTs7Ozt3QixxQjtJO0ssVTtLO0ssTztLO087O3dCOztLLFU7Szs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7UyxROzs7NEM7OztROzs7UztXOzs7Ozs7OzhCOztlOzs7Z0IsUTtnQixTOztjLGE7Yzs7Ozs0Qzs7Uzs7Ozs7OztVLFE7VSxPO1UsVTtVO1k7OzZCOztVLGU7Ozs7OztROzs7UyxPO1MsTztTO1c7OzRCOzt3Qjs7O1E7Ozs7UyxPO1MsTzt3Qjs7O1E7OztTLE87UyxPO3dCOzs7UTs7UyxPO3dCOzs7UTs7OztTLE87UyxPOzs7O1E7OztTLE87MkI7OztROzs7O1M7Vzs7O2M7OztlOztjOzs7ZSxPO2M7YTs7UyxPOzs7OztZOzs7UTs7OztTO3lCOzs7UTs7Ozs7UyxPO1M7eUI7OztROztTLE87eUI7OztROzs7O1MsTztTLE87UyxPO3lCOzs7UTs7O1MsTzt5Qjs7O1E7OztTLE87eUI7OztROzs7Ozs7O1MsTztTLE87OzJCOzs7Ozs7eUI7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1MsTzs7OztROzs7UyxPO1Msc0I7Ozs7WTs7NkI7Ozs7UTs7Ozs7O1MsTztTLE87Ozs7UTs7O1MsTzt5Qjs7Ozs7O3lCOzs7MEM7Ozs7Ozt5Qjs7Ozs7eUI7OztROzs7Ozs7UyxPO1MsTztTLE87OztZOzs7Ozs7Ozs7Ozs7O1E7OztTLE87eUI7O0kscUI7STtHOztJO0s7SztLLE87SSxvQjtJOztPOzt3Qjs7STtHOztJO0ssVTtLO0ssTztJO0c7O0k7SyxnQjtLO0ssTztLLFk7STtHOztJO0ssVTtLLFU7Szs7O3dDOztPOzs7USxVOzs7Ozs7OztpQjs7Ozt5Qzs7MEM7OzswQzs7OzBDOzs7Tzs7USxPO3VCOzs7MEM7OzswQzs7OzBDOzs7OzsyQzs7O087O1EsTzt3Qjs7O087O1EsTzt3Qjs7OzRDOztJO0c7O0ksd0I7Rzs7SSxZO0k7Ozs7SyxPO0k7OztJO0ssVTtLLFU7Szs7Ozs7Ozs7O3lDOztPOzs7USxPOzs7O087OztRLE87USxzQjtRO1U7OzJCOzt1Qjs7OzRDOzs7Ozs7OztJLHFCO0k7Rzs7STs7NEIsVzs7O087OzJCLFc7OzhCLFc7OztPOzs2QixXOzs7O0k7SyxPO0ssTztLLE87OztJO3NDOzs7Ozs7Rzs7STtLLE87SyxPO0ssTzs7O0ksVztHOztJLDhCOzs7Tzs7O1E7VTs7O2E7YSxjO1k7O1E7VTs7O2E7YSxrQjtZOztPOztPLGtDLE07TyxXOztPOztRLE07USxNO087O087Ozs7USxPO08sVzs7OztJO0ssVTtLLFU7Szs7Ozs7Ozs7O3lDOztPOzs7USxNOzs7O087Ozs7USxNO1EsTTt1Qjs7Ozs7dUI7Ozs7O1E7OztTLE07UyxVO21COztROztTLE07bUI7Ozs7Ozs7dUI7O0kscUI7STtHOztJO0ssUztLO0ssVTtLLGdCO0k7Rzs7STtLLFM7SyxTO0s7OztPOzs7O1EsTTtRLE07Ozs7MkM7OztPOzs7Ozs7USxNO1EsTTtRO1U7OzBCOzs2Qjs7O087OztRLE07USxNO1E7VTs7MEI7O3NCOzs7Tzs7Ozs7USxVOzs7USxNO1EsTTs7Ozs7Vzs7MkI7Ozs7O087Ozs7OztRLE07USxNO3NCOzs7Tzs7O1EsTTtzQjs7SSxvQjtJO0c7O0k7SyxZO0ssWTtLOzs7Tzs7OztRLE07USxNOzs7OzRDOzs7Tzs7OztRLE07Z0M7OztPOzs7USxNO3lCOztJLHVCO0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7SSxJLFUsZ0M7Ozt5Qzs7Ozs7Ozs7eUM7Ozs7Ozs7Ozs4Qzs7O087Ozs7USxNOzJCOzs7MkM7O0kscUI7STtHOztJO0ssVztLLFc7Szs7Ozs7O1M7Ozs7VSxNO2lDOzs7Uzs7VSxNOzBCOzs7Uzs7OztVLE07VSxNOzs7O1M7OztVLE07MEI7OztTOzs7O1UsTTtVLE07Ozs7Ozs7MEI7OztTOzs7O1UsTTs7Z0I7Ozs7Ozs4Qjs7OzBDOzs7Uzs7OztVLE07Ozs7OztJLHNCO0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7SSxJLFMsZ0M7O0s7Ozs7TSxNO00sTTs7O3NDO0ksb0I7STtHOztJLEksUyxnQzs7Szs7O00sTTs7O3dDO0ksb0I7STtHOztJOztLLFc7OztJLGdCOzs7SSxJLFMsZ0M7Ozs7Ozs7OzsyQjs7O087Ozs7OztROzs7O087Ozs7UTs7OztPOzs7USxNO3NCOzs7eUM7OzswQzs7SSxvQjtJO0c7O0ksMEMsTTtJLHFCOzs7STs7OztLLE07SyxNO0ssTTtJLFc7OztJO0ssUztLLFM7SyxVO0ssZ0I7SztJO0c7d0IsUztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksTztHOztJOztzQjs7c0I7O3NCOztzQjs7c0I7Z0M7O0c7RztJO0k7Ozs7Ozs7Ozs7OztJOzs7OztHOztJOzs7O0c7O0k7O0c7O0k7STtHOztJLEc7SyxPO0k7SSxVO0k7STtJO0k7STtJOztHOztJO0k7O0c7O0k7WTs7STtHOztJOztLO007TTtROzt5QixpQzs7Ozs7O0s7Ozs7TTs7Ozs7O0s7OztROzs7Ozs7O1csRztZO1k7O1c7Ozs7Ozs7O1c7VztXOzs7VyxHO1k7WTs7Vzs7WTtZO1k7Ozs7WTtZO1k7WTtZOzs7O1k7WTtZO1k7WTs7VztXO21COztRLEc7UztTOztROzs7Ozs7O1M7OztRO1E7Ozs7O1csTztVO1E7USxRO1E7UTtROzs7O0s7STtJOztLOzs7Szs7O0c7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPOzs7O08sTzs7O08sTzs7Ozs7Ozs7OztPLE87OzttQixPOztPLE87O0c7OzJCLDRCOztLO00sWTtNOzs7OztNLFU7TTtNOztJOztLOzs7TSxNO0s7STs7Syx3QjtLOzhDO0k7OztLOzs7O0ssOEIsc0I7Syx3Qiw2Qjs7TTtNOzs7USwyQjs7OztPOztLOztNOztLO3FCOzttQzs7OztRLEksVTs7OztTLEksVTs7O2dDOzs7UyxPOzs7O2tCO1Esa0I7OztROzs7UztROztROzs7UztTOztTOzs7O1U7VTs7Ozs7Uzs7UTtROztROztTO1c7OzJCOztROzs0Qjs7UTs7O1M7aUMsa0M7Uzs7O1MsSSxXOzs7Z0M7OztTOztROztRLDBCLFU7c0I7O1E7a0M7Ozs7Szt3QztJOztLLGlCO0s7STs7O007TTtLO0ssNkI7Szs7eUI7O1Esa0M7UTs7dUM7OztRLFc7OzRCOzs7UTs7eUI7bUM7O0k7STs7SztPO3VDOztLO087dUM7O0s7TTtNO007Ozs7Ozs7O0k7O0s7Szs7b0M7OztTOztTOztTOztTOzs7O2lCOzs7STs7Szs7Ozs7O087O1E7Tzs7a0I7O3NCO0s7STs7SztNO007TTs7Ozs7OztNO0s7OztJO0k7O21DLFM7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJOzt5QixPOzsyQixPOzt5QixPOzt5QixPOzswQixPOzsyQixPOzsyQixPO21DLE87Ozs7STs7Tzs7eUIsTzs7MkIsTzs7O08sTzs7OEI7Ozs7TyxPOzs4Qjs7Ozs7O0k7SSxJOzs7Ozs7O0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7MEIsTyxtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7eUIsVzs7MkIsVzs7eUIsVzs7O08scUI7OzBCLFc7OzJCLFc7OzJCLFc7OzJCLFc7O0c7RzswQixPLCtCOztJLFM7SSxPOztpQyxPLDJCOzs7YztjOzs7ZTtnQixNOztlLFk7ZTtnQjtnQjtpQixJOzs7Ozs7OztjO2E7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHO0csSSxzQjt5QixnRDs7STs7RzttQyxzQjsrQiw2Qjs7STtLLE07Szs7Rzs7STs7SyxVO0s7Ozs7O1E7Ozt5Qjs7O1EsaUI7O1M7VTtVOzthLDJCO2E7YyxJLGlCOzs7cUM7Ozs7OzsyRDs7YyxhOzs7Ozs7O1k7VTs7YSxZOzs7Yzs7YTtZOzs7Ozs7Yzs7OztjOztlLEs7Yzs7YTs7YzthLE87O3FDLDhCOzs7OzthOzs7YzthLE87O3FDLDhCOzs7O1M7Ozs7O2E7Ozs7YzthO2EsTztZOzs7OzthO2E7O2M7O2EsTztZOzs7OzthO2E7O2M7O2EsTztZOzs7OzthOzs7Yzs7O2lCOzs7O2lCOzs7O2lCOzs7b0I7OztvQixxQzs7Ozs7O29COzs7O3VCOzBCO3FCO3FCOztvQjttQjs7Ozs7aUI7OztpQjs7O2tCO2lCOzs7aUI7OztrQjtpQjs7OztpQjs7O29COzs7cUI7b0I7bUI7Ozs7O2lCOzs7OztpQjs7O2EsTztZOzs7Ozs7OzthO2E7O2M7O2EsTztZOzthO2E7OztnQjs7OztnQjs7OzttQjs7OztzQjs4Qjs7Ozs7OztnQjs7O2EsTztZOzs7O2E7OztjOzs7aUI7Ozs7aUI7OztvQjs7O3FCOzs7O3dCOzJCOzs7Ozs7OztvQjttQjs7OzthOzs7Z0I7Z0I7aUI7OztvQjs7O29COztnQjtlOzthLE87WTs7Ozs7YTs7Ozs7YTthLE87WTs7O2E7Ozs7Ozs7O2dCOzs7Ozs7aUI7Ozs7Ozs7OztnQjs7O2EsTztZOzs7YTs7Ozs7Ozs7Z0I7Ozs7OztpQjs7Ozs7YSxPO1k7O2E7OztjOzs7aUI7Ozs7aUI7Ozs7Ozs7aUI7Ozs7aUI7OzthLE87WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUM7Ozs7O21DOzs7Ozs7bUI7Ozs7OzttQjs7OztRLHNCO1E7UyxPO1E7UTtROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOztpQzs7ZTs7Z0IsZTtlLE87O3dDLG9CLG9COzs7ZTs7Z0IsTTtnQixVOzs7aUM7O2lDOztpQzs7aUM7O2lDOztpQzs7a0M7O21DO3lDOztXOztRO1M7VztTLE07UyxNOzs7Yzs7UyxNO1MsTTtTLE07O1MsTTs7Uzs7WTs7Ozs7Ozs7Ozs7Ozs7OztRO1EsTztPOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7OztNLFU7TTs7O0ssTztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLG1CLE8sOEI7Rzs7STtJLE8sd0MsZTtHOztJLE87OztjO2M7ZTs7Z0I7Ozs7YzthOztHOztJLFU7SSxPO0c7O0k7STtLO0ssTztJOztLO0s7SyxPO0k7O0s7Ozs7O1M7O1UsWTtVLG9CO1M7VTtXLE87Vzs7Ozs7Ozs7O1M7Ozs7O1U7Ozs7VTs7Ozs7Uzs7Ozs7O2E7OztZOzs7Ozs0Qjs7MkI7O1M7OztVO1UsTTtTOzs7SztLLE87STs7SyxjO0s7SyxPO0k7O0ssa0I7Ozs7Ozs7O1k7VztRO1M7MkMscUI7Ozs7UTs7OzRCO1E7O3dCOzs7O0s7SyxPO0k7SSxnQyxxQztJO0s7SztrQjs7TTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7b0M7OztJO0k7OztPO08sTzs7O087OztVOzs2QixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPO3VDLE87Ozs7TyxPO2U7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztVOztJO0c7O0k7STs7OzZCLFc7Ozs7USxzQztROzs7Ozs7Szs7Rzs7O0ksZ0I7OztJLFk7Ozs7Ozs7Tzs7O1E7OztPOzs7OztLLFk7SztLO0k7STtJO0c7O0k7O3lCLFc7O3lCOzt1RDs7eUI7OzJCLFc7OzJCLFc7OztPLFc7O0c7O0k7STtHOztJLFc7SSxPO0c7O0ksbUIsTztJLE87Rzs7STtLLE07SyxROzs7Rzs7STtLLE07SyxRO0ssTztJLE87O0c7O0ksSSxNLG1DOzs7Ozs7bUI7OztPOzs7USxPOzZCOzs7cUM7O087OztRLE87K0I7Ozt3Qzs7O3NDOztxQzs7Tzs7USxPO21COzs7c0M7O3FDOzs7Ozs7Vzs7O2M7YyxPO2E7Ozs7Ozs7O1c7OztjO2MsTzthOzs7O3dDOzs7O0ksTztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOzs7SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztLLFc7Szs7UTs7O1c7Ozs7WSxPO1ksTztXLFc7VTs7Szs7UTs7eUI7O0ksTzs7Ozs7Ozs7Ozs7O0c7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7Rzs7STtLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztJLE87Ozs7Ozs7OztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOzs7Ozs7OztHOztJO0ssUTtLO0ssTztLLE87SztLO0s7O1E7O3lCOztJLE87O0c7O0k7SyxRO0ssTztJLE87Rzs7STtLLE07SyxRO0s7O0s7Ozs7TSxPO00sTzs7OztJO0ksTzs7Rzs7STtLLE07SyxRO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7OztZLE87OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yyx3Qjs7Ozs7Ozs7Ozs7VyxHOzs7O3NCOzs7Ozs7O1M7O1UsTztxQjs7OztTO1U7Ozs7VzthOzs7Z0I7Z0IsVztlOzsrQjs7O1M7O1c7WSxPO1ksTzt1Qjs7MkM7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Uzs7O1UsTzs0Qjs7Ozs7Ozs7YTs7O2dCOzs7aUIsTztnQjtlOzs7OztTOztVLE87cUI7Ozt1Qzs7b0M7O3lDOzs7Uzs7O1UsTztxQjs7OztJLE87Rzs7STs7OztLLE87SyxPO0ssTztJLFc7OztJO0ssTTtLLFE7SyxPO0ssTztJLE87O0c7O0k7SyxNO0ssUTtLOzs7Ozs7Ozs7O1E7Ozs7UyxPO1MsTzs4Qjs7Ozs7Ozs7dUI7O1M7Ozs7O1UsTztVLFU7Ozs7Ozs7Ozs7OEI7OztjOzs7ZSxPO2UsTzs4Qjs7Ozs7Ozs7Ozs7OztRO1M7Vzs7O2M7Ozs7ZTs7O2dCOzs7YztlLFE7ZSxPO2UsZ0I7ZTtpQjs7K0IseUI7O2U7YzthOzs7OztROzs7UztXOzs7YztjLFc7O2Msc0I7YTs7O29COzs7UTs7O1MsTztTLE87b0I7OztROzs7UyxPO1MsTztvQjs7O1E7O1MsTztvQjs7OztROztVO1csTztXLE87c0I7O3dDOzs7Ozs7OztROzs7UyxPOzJCOzs7UTs7O1M7Vzs7O2M7aUM7O2Msb0I7YTs7O1MsTzs7OztZOzs7UTs7O1M7cUI7OztROzs7O1MsTztTO3FCOzs7UTs7UyxPO3FCOzs7UTs7OztTLE87UyxPO1MsTztxQjs7O1E7OztTLE87cUI7OztROzs7UyxPO3FCOzs7UTs7Ozs7O1MsTztTLE87MkI7Ozs7UTs7OzttQjs7O1c7O1ksTzttQjs7O1c7O1ksTzttQjs7d0I7Ozs7O1E7OztTLE87Ozs7UTs7O1MsTzs7Ozs7Ozs7WTs7O2U7OztnQixPO2U7Yzs7OztROzs7O1MsTzs2Qjs7O1E7OztTLE87cUI7OzswQzs7OzJDOzs7dUM7Ozs7cUI7OztROzs7O1M7UztrQzs7O1MsUTtTLE87UyxTO1MsUzs7OztROztTO1MsTzs7Ozs7cUI7OztROzs7UyxPO3FCOztJLFc7SSxPOzs7Yzs7OztlLFE7ZSxVO2M7Ozs7b0M7OztpQjs7O2tCLE87a0IsTzs7K0I7OztpQjs7a0IsTztvQzs7Ozs7OEI7O2MsTzs7Ozs7Rzs7STs7SyxXO0ssVztLO0k7Rzs7STs7Tzs7O1U7VSxjO1M7O0k7Rzs7STtLLE07SyxRO0s7O0ssTztLLE87SSxPOztHOztJLGtCLE87SSxPO0c7O0ksSSxNLG1DOzs7b0M7O087OztRLE87NkI7OztPOztRLE87bUI7Ozt3Qzs7O3NDOztxQzs7cUM7O087O1EsTzttQjs7O3NDOzt3Qzs7O3NDOzt3Qzs7O087O1EsTztvQjs7O087O1EsTztvQjs7OztJLE87Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7STtLLE07SyxRO0s7SztJLE87O0c7O0k7SyxNO0ssUTtLLE87SSxPO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7STtLLE07SyxRO0ssTztLO0s7O1E7O3lCOztJLE87Ozs7Ozs7Ozs7Rzs7STtJLHNCO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZOztJLGlCOzs7STtLLE07SyxRO0s7Ozs7O3FDOztPOzs7USxPOzs7O087OztRLE87USxPO21COzs7d0M7Ozs7SSxPO0c7OztJOztPLG9CLE07Tzs7TyxvQjtPOztPLG1CLFE7Tzs7TyxzQixNO087O08sc0I7Tzs7TyxxQixRO087Ozs7STtLLE07SyxRO0s7OztLLE87Ozs7Ozs7cUM7O087OztRLE07Ozs7Tzs7O1EsTTttQjs7OzBDOzs7OztRLE07Tzs7USxNO21COzs4Qzs7SSxPO0c7O0k7SyxNO0ssUTtLOzs7TyxNOzt3Qzs7O087Ozs7USxNOzZCOzs7Tzs7O1E7VTs7O2E7YSxXOzthLHNCO1k7OzttQjs7O087Ozs7USxNO1EsTTs2Qjs7Ozs7OztTOzs7VSxNO1UsTTs7Ozs7O1MsTTtROztTLE07bUI7Ozs7O087OztRLE07bUI7O0ksTztHOztJO0ssTTtLLFE7Szs7O087OztRLE07USxNOzs7O3NDOztPOzs7O1EsTTswQjs7O087OztRLE07bUI7O0ksTztHOztJOztLLE07SyxNO0ksVztHOztJO0ssTTtLLFE7Szs7O3FDOztPOzs7Ozs7USxNO3VCOzs7Tzs7Ozs7O1EsTTs7a0I7OztPOzs7O1EsTTt1Qjs7OztJLE87Rzs7STtLLE07SyxRO0s7Ozs7Ozs7O1E7Ozs7UyxNOzJCOzs7UTs7UyxNO29COzs7UTs7O1MsTTtTLE07Ozs7UTs7O1MsTTtvQjs7O1E7OztTLE07UyxNOzs7Ozs7O29COzs7UTs7OztTLE07b0I7OztROzs7UztXOzt5QixPLGtDOzs0Qjs7O3dDOzs7Ozs7Z0M7O0ksTztHOztJOztLLE07SyxNOzs7STs7Ozs7TSxtQzs7OztLLFc7O0c7O0k7Ozs7SyxNO0ssUTtJO0s7Ozs7TSxNOzhCOztxQztJLE87OztJOzs7O0ssTTtLLFE7STs7Ozt3Qjs7dUM7SSxPOzs7STs7Ozs7Ozs7Ozs7Ozs7O3lDOzs7OztLO3lEO0s7O0k7Rzs7STtLLE07SyxRO0s7OztPOzs7O1E7VTs7d0IsTyxrQzs7d0I7Ozs7Ozs7cUM7Ozs7O3dDOzs7Ozs7Ozt3Qzs7UTs7O1M7O3lDOzs7O087OztRLE07dUI7OztPOztRO21COzs7O0ksTztHOzZCLFM7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7SSxPOzs7O0ksTzs7OztJLE87Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCLG9COztJOztPOztPOztPO2U7O0c7aUMsMEI7O0k7SSxXO0k7SyxVO0ssTztLO087O2dCOztJO0c7O0ksSSxROzs7NEI7OztJO0c7O0k7Ozs7VztXOzs7OzRCOzs7STtHOztJOztPOztPOztPOztPOztPOztPOztPO2U7O0c7aUMsVyxpQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7TyxpQztPOztPLHFDO087O087OztRLE87UTtPOztPLHFDO087O08scUM7Tzs7TyxxQztPOztPLHFDO087O0c7O0k7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJLE87Ozs7Ozs7MkI7OzhCLE87O2U7ZTs7Ozs7Rzs7cUIsTyx5QztJLDBCO0k7OztPLE87OztpQjs7OztpQjs7Ozs7TyxPOztPOzs7O1E7O08sTzs7O08sTzs7Rzs7O0ksTzs7O0k7Ozs7SyxPO0ksTzs7OztJLFc7SSxTO0k7SyxPO0ssTztLLE87SSxPO0c7O0k7Ozs7USxnQjtvQixXOzs7OztRLFc7O1Esa0M7Ozs7O1Esa0I7O1MsVzs7OztHOztJLE87K0MscUI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7b0I7SSxvQixTO0k7Rzs7Ozs7Ozs7OztVO1csTztXO3dCOzs7OztTOztVLE87VSxPO1UsTztTLEcsaUM7UztVO1U7Ozs7Ozs7Uzs7Ozs7WTs7YTs7OzRCOztZOztZOzs7Ozs7OztZOzs7YTs7Ozs7O2EsVTs7Ozs7Ozs7O2E7YyxXOzs7YyxjOzs7WTs7Ozs7Ozs7Ozs7Ozs7OztxQjtlOzs7Ozs7Ozs7OztvQjtjOzs7Ozs7OztlOztnQjs7O2dCOzs7Z0I7Ozs7ZTs7Ozs7O2E7O1k7YTs7O2E7OzthOzs7O1k7Ozs7Ozs7O1UsRyxnQztVLFc7VTs7O1c7WSxPO1ksTztZLE87bUI7VTs7UyxJLFc7Ozs7Ozs7WTs7Ozs7UztzRDtTOztVOzs7Ozs7Ozs7Ozs7d0I7O1M7OztPOztRLE87USxPO1E7OzJCO087UTtRO087OztLO007TTtNO0s7Ozs7STs7TTs7Ozs7TyxTO087Ozs7OztNO087OztNOzs7c0I7STtHOztJOzs7TSxXO0ssb0IsTztLLFc7O2dCO0k7O0ssUTtLLE87SSxXO0c7OztJOztLLDRDOztJLGE7STtHOztJO0ssTztLLFU7O087OztXOzs7WTs7VztXO1U7Ozs7Ozs7Ozs7OztLOzs7O1E7Ozs7O007Tzs7O08sTTs7Ozs7Ozs7STtLO087OztVOzs7a0I7VztVO1M7Ozs7Ozs7Ozs7O0s7OztNOzs7Ozs7O08sRzs7Ozs7WTs7Ozs7Ozs7Ozs7SyxJLFU7Ozs7Ozs7Ozs7Szs7d0I7O3dCOzt3Qjs7OztLOzs7OztJO0ssTztLOzs7Ozs7Ozs7OztLOzs7Ozs7O2tCOzs7TTs7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7TTtNOzs7STs7Ozs7SSxhO0k7Ozs7OztLOzs7Ozs7O1M7UywwQjtTLFU7UztVO1csTztXO2lCOzs7Ozs7Ozs7UztVO1k7OzhCLHFCOztVOzs7Ozs7UztVLGM7Ozs7Ozs7Ozs7Uzs7OztVOzs7VTtVLGM7Ozs7Ozs7Ozs7Uzs7OztVO1UsTztVO1k7Ozs7Ozs7UztVO1U7WTs7Ozs7Ozs7OztTOzs7Ozs7VSxPO1UsZTtVLE87Uzs7Ozs7Ozs7UztTLDBCO1M7Ozs7Ozs7Ozs7Ozs7Ozs7VTtXLFk7O2E7Ozs7VTs7VzthO1c7Ozs7Ozs7OzthLE07Ozs7ZTs7NkIsdUI7Ozs7Ozs7Ozs7OztTO1U7Ozs7Ozs7Ozs7Uzs7OztVLE87Uzs7Ozs7Ozs7UztVLFU7VTs7Ozs7Ozs7Ozs7Ozs7VTs7Vzs7OztTOzs7O1M7VTtZO1U7Ozs7Ozs7Ozs7Uzs7OztVLFU7VSxXOzs7VTtZO1U7Ozs7Ozs7Ozs7Uzs7OztVLFE7VSxTOztVO1U7WTs7Ozs7Ozs7SyxNOzs7STtLOztNOzs7O0k7Ozs7STtLOzs7Ozs7Ozs7Ozs7O0ssTztLLE87OztJO1k7Ozs7Ozs7STtJOzs7SztNOztJOzs7Ozs7Tzs7O0s7Ozs7Ozs7OztLOzs7OzBDOztJO0c7O0k7STs7Ozs7Ozs7SyxzQjtLOztHO0c7STtJOztJO0s7Szs7O0ksTzthLDRDOztHOztJO3VCOztJO0c7Ozs7Ozs7Ozs7O0k7Ozs7SztpQixNOztLOzs7TTtNLE07Szs7STtLLFE7SyxTO0s7SSxNOztHOzs7O0k7O0s7OztTOzs7Ozs7O3lDO0ksd0I7SSxNO0c7RyxJOztJLFk7O0k7Rzs7STs7Tzs7Tzs7Tzs7O1E7UTs7O1M7OztVLE87VSxPO1MsTzs7OzBCO087ZTs7Rzs7SSw4Qix5Qjs7Rzs7STtJO0s7O007OztNOztPLE87Ozs7Ozs7a0I7O0k7Rzs7STtJOzs7Ozs7O1U7Ozs7VyxRO1c7Ozs7VTs7Ozs7UTs7OztTOzs7Ozs7Ozs7VTs7O1csTTtXLE07VTs7OztLOztHOzs7STtLO007O0s7STtJOztLLFM7SyxTO0s7SztJLE87O0c7STs7Ozs7OztJOztPOztPOztPOzs7UTtRO3FDLFk7Ozs7Uzs7O1UsTTtVLE07UyxHLHdDOztrQjs7TztlOztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7O1k7Yzs7O2lCO2tCLFE7a0IsUTtpQixPO2dCOztZLFE7Vzs7Ozs7O1M7OztVLFE7VSxRO1U7VSxNO1UsTTtTOzs7Ozs7Ozs7OztLOztJO0ssTTtLLE07STtHOztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7O0s7O0k7O0ssUztLLFc7SztLO0ksTztHOztJOzs7Szs7O0ksTTtHOztJOzZDOztJLE07Rzs7STs7OzZDOztJLE07Rzs7STs7dUI7OztLLE07O0ksTTs7Rzs7O0k7Ozs7O007OztLO00sTTs7O2dEOztJLE07Rzs7STs7SyxNOzs7STtHOztJO3VCOztJLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7TTs7O087Ozs7cUI7OztRLE07Tzs7O1EsbUI7Ozs7OztJLE07Rzs7SSxZLE87Ozs7O08sTzs7OztPLE87Ozs7Ozs7OztPLG9DO08sTzs7O08sc0M7TyxPOzs7OztJO0ssTztJOzs7STs7OztRLGdDO1EsTzs7O1Esb0M7USxPOzs7SSxPOzs7SSxZOztnQjs7SSxPO0c7O0ksYztJO007eUMsOEI7SztNO00sTztLLE87O0ksVztJLE87Rzs7SSxjO0k7TTt5Qyw4QjtLO007TSxPO0ssTzs7SSxXO0ksTztHOztJLDhCOzs7TyxzQzs7Ozs7Ozs7OzsyQjs7Ozs7OztPOzs7UTs7YTs7Ozs7ZSxNOztHOztJOzs7OzttQjs7O007OztPOztZOzs7Ozs7SyxvQjs7Ozs7O0k7Ozs7O21CLE07O0ssRztvQjs7Ozs7Ozs7OztJO0ksTztHOztJOzs7SyxPOztLLE87SSxPOzs7O0k7SztpQixNOzs7Ozs7Ozs7Szs7Ozs7VTtXLFE7VztXO1c7YTs7Ozs7Ozs7OztVOzs7O1U7OztXOztXLE07VTs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7VyxxQzs7Ozs7Ozs7OztXLG9DOzs7Ozs7Ozs7UyxlLFU7dUIsTTs7Ozs7TSxNOzs7Ozs0QixPOzs7O0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPOztjO0c7OztJO0k7OztJLFc7SSxPO0c7O0ksTztHO2lDLG1COztJOzs7OztLOztJO0c7O0k7Z0I7O0k7Rzs7SSxxQyxPOztJLE87OztJO2dCLE87O0ksK0M7STs7OztLO0ksTztHOztJO2dCLE87O0k7Rzs7STtnQixPOzs7Szs7O007TSxPO0ssTzs7Ozs7O00sTzs7STtHOztJOztLOztNOztNO0ssTzs7OztPO087O1E7O087Ozs7UTtPLE87O08sTztlLE87O0c7O0k7Ozs7UTtROztRLE87Z0IsTzs7O0kscUIsTyxnQztHOztJO3dDO0k7Rzs7O0s7OztNLE87TSxNO007TSxPO0ssTzs7Ozs7Ozs7O0k7SztPLDJDO0ssUyxXO0ksTztHOzs7Szs7UTs7Ozs7SztJO0k7Rzs7STtLLGE7Ozs7TTs7Ozs7OzthOzs7OztLOzttQjs7bUI7OztLO0k7O0s7Szs7Ozs7Ozs7O1E7Ozs7Uzs7OztROzs7O1M7OztLO0k7SSxPO0c7O0k7SSxPO0c7O0k7OztRLE87O1EsTTs7SSxPO0c7O0k7OztLO0s7Tzs7Ozt5QixtRDs7SyxnQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Szs7O007UTs7OzswQixPLDRDO0s7YTs7Ozs7aUI7OztLOztNOzs7O0k7O0s7SSxPOzs4Qix5Qzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0s7Ozs7Ozs7bUI7TTtPO08sSTs7Ozs7Ozs7O0k7YztzQztHOztJLFE7STtLLE87SztPOzs7MEIsTyxzQjtJLE87Rzs7STs7Tzs7UTtROztRLE87USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Tzs7UTtROztRO1U7Ozs7OztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOztRO1E7O1E7VTs7Ozs7O1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O087O1E7O1EsTztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7O1EsSztRLEs7UTtRLE87TyxPOzs7Ozs7Ozs7OztHOztJO0ssUTs7OztLLE87SyxPO0ksTzs7Ozs7Ozs7Yzs7O0c7O0k7OztLLE87O0ssTztJLE87Ozs7STs7O0ssTzs7SyxPO0ksTzs7OztJOzs7Ozs7OztHOztJO0ssTztJLGlCLE87SSxXO0c7OztJOzs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7OztLO0s7STtLLE87Ozs7STs7Rzs7STs7Ozs7STs7TyxxQjttQjs7TyxXOzs7Tzs7Ozs7UTs7O087USxPOzs7O087OztPOztRLE87USxVO087OztPO1EsTzs7OztPOzs7Ozs7STs7Ozs7Ozs7OztlOztLLGU7O0s7STtJO0s7SztLLE87SztLOztJLE87OztJLE87Ozs7O2M7O2U7ZTtnQixVOzs7Z0I7O2dCLE87Z0IsTztnQixPO2UsTzs7O2UsTTs7Yzs7O2lCOztpQjs7a0I7Ozs7O3VCOzs7d0IsTzs7d0IsTzt1QixPOzs7O2tCO2tCOzs7OztxQixNOzs7b0I7Ozs7bUQ7Ozs7b0I7O3FCLGU7b0I7Ozs7Ozs7O29COztxQixlO29COzs7Ozs7OztvQjs7Ozs7Ozs7OztpQjs7Ozs7Ozs7YTtHOztJOztPLG9CO08sTzs7NkI7O08sZ0MsaUI7TyxPOzs7Ozs7a0I7a0I7O087O1E7UTtRO08sTzs7Ozs7K0I7O0c7O0k7O08sc0I7TyxPOzs2Qjs7TyxnQzs7Ozs7O1U7O1c7MEI7Ozs7MEM7O087TyxPOzs7Z0Q7Tzs7UTtRO1E7TyxPOzs7OzsrQjs7Rzs7O0k7SSxPOzs7OztjOztpQjs7a0I7b0I7Ozs7Ozs7Ozs7Ozs7OztvQjs7cUI7cUI7Ozs7OEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOzs7a0I7NkI7OztpQixtQjs7a0IsTTs7Ozs2Qjs7YyxhOzJCLHNCOztlLE87Ozt5QyxPLHNCOzs7YztjO2E7OztJLE87OztjO2U7O2dCO2dCLFc7ZSxXOzs4Qzs7Ozs7OztjO3NCOzs7Ozt5Qjs7O29DO3lCOzs7Ozs7NkIsaUI7NkIsTzs7Ozs0Qix1Qzs7OztxQzs0Qjs2Qjs2Qjs2QjsrQjs7Ozs7Z0Q7NEIsTzs7Ozt5Qjs7NEI7OzhDLGlDOzt5QjswQjs7OzhCOytCLE87OytCOztnQyxPOytCLE87OzhCOzsrQixPOzhCLE87OzZCOzJCOzs4QixlOzs4Qjs2QjsyQjsyQjsyQjsyQixNOzBCLE87Ozs7Ozs7Ozs7MEI7OzJCLE87MEIsTzs7O3lCLE87d0I7YTtHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0k7SSxPO0c7RztJO0k7STs7O0k7TTs7d0Isa0IseUI7OztJLE07RztHO0k7Ozs7Ozs7STs7O0c7O0k7Rzs7STtLLE07O0s7O0c7O0ksNEIsSztJLE87OztjOzs7YTs7Rzs7SSxPOzs7YyxxQjthOztHOztJLE87OztjLFk7OztrQjtnQjtnQjs7O2M7YTs7O0c7O0k7TTs7d0Isa0IsTyw0Qjs7STs7TztTOzs7WTs7O2EsSTthLFE7OztnQjtjO2M7OztZLE07O1c7O0k7Szs7TTtRLDJDO0s7O0ksTztHOztJO0k7TTs7O1MsWTs7O1UsTzs7UyxNO1E7O0k7Rzs7O0k7Ozs7OztJO0s7TSxJO007O1MsTztRO1k7Ozs7Ozs7SyxXO0ssTzs7Rzs7STtLLE07O0s7O0c7O0ksZTtJO0ssTTs7Ozs7SSxTO0k7STtHOztJLGlEO0k7OztPOzs7OztPO1EsSSxJLDZCLE87USxJLG1DLEk7b0I7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCO1U7VztZOztlOzs2QjtjO1k7YztXLE07Ozs7O3dCOzs7VSxTOztVOzs7Ozs7TztNOzs7STtLLE87OztlO2UsSSxXLG9DOzs7Ozs7O2dCLE07OztjO29COztHO0k7OztRLE07Tzs7STs7O1EsTTtPOztJOzs7USxNO087Ozs7aUMscUM7O0ksUTs7STtLLEksSTs7Ozs7Ozs7OztLLFM7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtLO0sscUI7O0c7O0ksTzs7Ozs7YyxtQjs7ZTtlOzs7ZSxNOzs7ZSxnQjtlLE07OztjO2UsTTtjO2M7YzthO0c7RztJOzs7USxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7OztjO2E7Ozs7O0s7STtJOzs7O00sTTtLO0s7Ozs7OztRLGdCO1EsTTs7TyxJLEk7Ozs7UTtROzs7Tzs7Tzs7OztRO1E7UTtRO1U7YTs7USxPO087OztPLE87USxNO087UTtVOzswQjs7UTs7VywyQyxlO1EsTztPOztPOzs7USxVOzs7OztROzs7OzthLDRDLFM7Ozs7OztPO1U7USxXO1EsTTs7O087UTtVOzswQjs7USxTO1E7Ozs7O2dCOzs7O08sVztPOzs7VTtVO1csVztXOzs7OztXLGtCLFE7VyxNOzs7Uzs7O087UTtVLDJDLGU7USxTO087O087OztRLFk7OztXO1ksVztZLEs7YSxJOzs7O2UsTTs7OztZOzs7OzthLE87OztVOzs7Ozs7Ozs7WTthOztjO2MsUTs7Ozs7O2E7YyxJO2MsVTs7Ozs7O2tCLE07Ozs7O2lCLHFCLFU7Ozs7Ozs7a0IsRzttQixNOzs7a0I7bUIsYzs7Ozs7O29CLE07OzttQjs7Ozs7O2EsTTs7O1k7OzthO2U7Ozs7O2tCOzs7OzsyQjtpQjthO1k7OztXOztRLGdCO1E7VTs7K0IsMEI7OztRLG1DO1E7VTs7O2E7YSxPO1k7OztPLG1DOztPOzs7USxVOzs7UTtRO1U7USxXO1EsTTs7O087UTtVOzswQjs7USxPO1EsVTs7O1EsTztPOzs7VTtVLEksVyx3Qzs7OztXLGtCLFE7VyxNOzs7Uzs7O087UTtVLDJDLGU7USxPO1EsVTs7a0M7UTtROztPLE07OztPO1E7UztTO1EsSTs7OztTLGtCLFE7UyxNOzs7Ozs7OztRO1M7Vzs7O2M7YztjO2MsSTs7Ozs7ZSxrQixRO2UsTTs7O2M7YTs7YztjLE87YTs7O1MsTTtTLEs7UyxVOzs7Ozs7YTs7Ozs7O2E7Ozs7Ozs7Tzs7Tzs7OztRO1E7O1c7WTtZO2tCO1csTztVO1EsVTs7O1csUTtXO1k7YSxROzs7WTthLE07O1ksSSxvQjtZLEc7OzthLEksSSxPOzs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTtRO1E7UTtVOzs7YTs7YztjOzs7O2U7O2dCO2dCO2dCLFU7Ozs7Ozs7Ozs7OztlOzZCOztlO2dCLE87Z0IsVTs7Ozs7O29CLE07Ozs7OzttQixHO29CLFM7b0I7Ozt1Qjs7O3dCOzt5QixLOzBCLFk7O3FEOzs7MEIsTTs7Ozs7O3VCO3NCOzs7Ozs7O2UsTTs7Ozs7Yzs7aUI7Ozs7O29CLE87Ozs4Qjs7O21COzs7ZTs7Z0IsSztpQjtrQjtvQjtxRCxjO3NCOzs7OzsyQjs7O2dCLE07OztvQzs7d0I7O2M7OzthOzs7UTtVOztrQyxpQjs7O1EsVztPOztROzs7VyxlOztZLE07O1c7VTs7O087Ozs7VyxPOztVO1E7UTtVO2E7OztPLEksNEIsTztPOztPOzs7USxTLHdDLFk7UTtVOzs7NkIsb0IsNEI7O2E7K0IsOEM7YTs7MEI7YTs7Z0I7O2tDLG1DOzthO1k7OztRO1E7UTtVOzt3QixPLCtCOztRLE87UTtPO087O087Ozs7UTtRO1U7OzthO2EsRztjLE07O2EsTztZOztRLE07UTs7NEIsTyx3QztRO1U7OzthO2E7WTs7UTs7O2E7O1EsUztROzs7Vzs7O2M7YzthOztRLFE7Tzs7Tzs7O1EsVTs7O1E7Tzs7O08sTTtrQzs7OztJLFc7SSxXO0ksWTs7Szs7TSxVOzs7OztNLE87SyxXO0s7TTtROzs7Vyx3QixROzs7WSxjOztXO1U7O007O1M7SztLLE87O0ksTztHOzJDO0c7O0k7SSxPO0c7O0k7STs7SztJO0k7STtHOztJOztJO0s7Tzs7OztVO1U7VTtTO0s7STtJOzs7O0ssTztLLE87STtHOztJO0k7SztPOzs7MEIsb0IsNEI7O1U7VTtVO1U7Uzs7O0ksZ0I7Rzs7STs7Szs7O00sUyx3QyxZO007UTs7OzJCLG9CLDRCOztXO1c7WTtZO1c7VTs7O0s7Szs7SSxPOzs7O2M7YzthO0c7O0ksTztHOztJOztlO2U7Ozs7TyxPOzs7Ozs7OztpQixPO2dCOztPLGtCLE07TyxPOztPOzs7O1EsTTtPLE87OztPLHVCLE07TyxPOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPLE87Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7Tzs7USxNOzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOzs7UTs7VyxPO1U7TyxPOzs7OztpQjtpQjtrQixPO2tCLE87aUIsTzs7Ozs7Ozs7OztnQjs7TyxxQixPO087TyxZOzs7OztTLE87Ozs7bUIsVztrQjs7O087O087OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOzs7USxPO087TyxHO1E7ZTtROztRLFc7UTs7TyxPOztPLG9CLE87TyxPOzs7TyxPOzs7OztpQjtrQixPO2tCLE87aUIsTzs7Ozs7Ozs7OztnQjs7O08sTzs7Ozs7aUIsWSxPO2lCOztrQixPO2lCLE87Z0I7OztPLHFCLE87TyxPOzs7Rzs7O007O087ZTs7OztvQzs7O3FDOztNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkIsa0M7O0k7O3FCLE87O3VCLE87O3FCLE87O3FCLE87O3VCLE87O3VCLE87K0IsTzs7Rzs7STs7Szs7O007O0s7TSxPO0s7O1EsTzs7USxPOztRLE87Ozs7O0ssTzs7O08sb0IsTztPLE87OztPLE87OztPLG9CO08sTzs7O08sTzs7OztxQzs7Ozs7OztRLE87OztPOzs7O1E7Ozs7O1MsTzs7Ozs7Ozs7Ozs7USxPOzs7OztzQzs7OztRLE87Ozs7O3NDOztPO1E7VTs7d0IsbUM7O1EsTztPLE87Ozs7OztxQzs7OztxQixPOztPLE87O087O1E7VTs7NEIsK0M7O08sbUIsTzs7Ozs7O1csZTs7cUI7O1U7TyxPOzs7Ozs7Ozs7TyxPOzs7O3FDOzs7O08sTzs7O08sTzs7O08sTztlLE87O0c7O0k7Ozs7Ozs7TztRLE87Ozs7STtHOztJOzs7Ozs7O087USxPOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SyxPOztJO0c7O0k7OztLLE87OztJO0c7O0ksWTs7bUI7O0ksTzs7Ozs7OztnQzs7OztJLFk7Ozs7SyxPOzs7Ozs7Ozs7OztJLE87Ozs7SSxPO0c7O0k7STs7O08sTztNOztJLE87Rzs7STtXO0ksTztHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7STs7c0IsaUQ7O0ksTyw0QyxhO0c7O0k7SyxNOztJO0c7OztJLFc7O0c7STtJO0k7STs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0k7Ozs7O087O08sd0I7Ozs7O0s7O0c7O0k7Ozs7Ozs7Ozs7MkI7Ozs7Tzs7UTtVOzs0QixvQixXOztRO1U7OzRCLG9CLFc7Ozs7OzswQjs7Ozs7Ozs7Ozs7Ozs7OztVO1csTTtXLFE7bUY7VSxNO1M7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozt5Qjs7Tzs7eUIsTzs7K0I7aUM7O0c7O3NCLHlDO0k7Ozs7OztROztTOzs7Ozs7OztROztTO1c7OztjO2M7YTs7Ozs7UTs7OztTOzs7OztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxrQjs7Ozs7Ozs7SSxtQjs7O0k7RztHOzs7Ozs7O0ksTTtJO21COztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7Ozs7Ozs7WTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7SztJO0k7Szs7UTs7O1c7a0Q7VztVOzs7Ozs0Qjs7O0ksTzs7NEI7O0c7O0ksTzs7NkIsd0IsWTs7Rzs7SSxXO2lCO0c7O0k7OztLOztJO0c7O0k7Ozs7O1EsTzs7Ozs7O1EsZSxPO1EsTywyQjs7OztJLE87Rzs7STtJOzs7Ozs7USxJLHVCOzs7Ozs7USxJLG9COzs7Ozs7USxJLG9COzs7Ozs7OztPLEksdUI7Ozs7Ozs7OztPLFc7TyxXOztNOzs7TztPOzs7Ozs7Rzs7O0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7OztpQjs7O2tCLE87aUI7Ozs7Ozs7Ozs7Ozs7O2lCLG1DO2lCLFc7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQjs7a0I7OztpQjs7Ozs7Ozs7Ozs7Ozs7aUI7O2tCLE87a0IsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1MsZ0M7UyxTOzs7Ozs7USxrQztRLFM7Ozs7O007O0k7MEI7O0s7OztPLGtCLE87O087OzttQjtLO0k7O0s7Szs7O1E7Ozs7O1M7USxXOzs7Ozs7c0I7TTs7STtJOzswQiwyQztHOzs7O0k7Ozs7Ozs7OztJO0s7O087O1U7SyxPO0ssUTt5RTtJLE07Rzs7STs7Ozs7Ozs7Ozs7O1csTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7OztxRDs7Ozs7Ozs7Ozs7O2lCOzs7OEM7O0k7Rzs7STtrRDtpRDtJLE87Rzs7STs7Ozs7Ozs7OztrQyxPOztrQyxPOzs7O3lDLE87O087O007Ozs7OztROztROztTLE07UztRLE87OztrQjtrQjttQjs7c0I7Ozt5Qjs7d0I7Ozs7Ozs7OztrQjtpQjs7O0k7Rzs7SSxZLGtDOzs7Ozs7O2tCO00sNEM7Ozs7Ozs7VTs7VztXO2E7OztnQixPOztzQywrQjs7OztlOzs7Vzs7Ozs7O2tCOztNOzs7STtHOztJLFM7WSxPO0k7Ozs7Szs7O0k7Rzs7STs7OztROztTOzs7UTs7UTs7OztTOzs7UTs7Ozs7VSxNOzs7OztROztROzs7Uzs7Ozs7UTs7O21COzs7c0I7c0I7O2dDOztzQjtxQjs7Ozs7Ozs7UTs7Uzs7O1M7UTs7Z0IsTzs7UTs7Z0IsTzs7STtHOzJCLDRCO3lDLDRCOzs7SztLO007TyxPO08sTzs7Tzs7OztROzs7OztNLE87O2U7Ozs7OztJO0k7Rzs7SSxZOzs7SyxNOztJLDhCLDBCO0k7Rzs7O0s7SztvQjs7Ozs7Ozs7TTtPO087ZTs7Ozs7O0k7STtHOzs7SyxVO0s7STs7SyxZOztLOzs7OztLLE87OztlO2U7Yzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7OztNO0s7TTs7Ozs7Szs7OztJO0ssWTtLO087SztPO1M7OztZO1ksa0I7Vzs7STtHO0c7STs7STtNOzs7UyxtQjtTLHVDOztVO1csTTs7eUIsVzs7VTtTOztxQixXOztTO1E7Ozs7O0ksVTtJLHVCOzs7Ozs7O3VEOztTLE87Ozt5Qjs7O1M7O1U7WTs7O2Usa0I7bUY7ZSxNO2M7O1UsTTtTLGdCO1UsVztVLE87OztvQjs7O3FCLFE7Ozs7cUIsTzs7b0I7bUI7OztTLFc7UyxXO1MsVztTLE87OzttQjs7O2lDOzs7NkI7a0I7Ozs7O007OztNLE07O0k7Rzs7STs7Ozs7O0ssTztJO2dCOzs7Ozs7Rzs7STtLLE07O21CO0ksbUI7STtHOztJLFk7O0s7TTtPLE87TyxVOzs7Tzs7cUIsbUI7Ozs7O007Ozs7OztNLGM7Ozs7VTs7VzthOzs7Z0IsVztlOztVOzs7VTtnQjs7O2EseUMsYTs7VTtVLE87O2tDOzs7TTs7O0k7Rzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0s7O0ssUTs7Ozs7O08scUIsVTs7cUI7Ozs7bUI7O0k7SyxpQjtLO087OztVLFc7Uzs7SztPOzt5Qiw4Qjs7OztJLE87Rzs7STs7O21EO0s7TTs7Ozs7Ozs7TTtROzs7Vzs2RTtXLE87VTs7TTtNLFM7SyxnQixNO0s7Yzs7K0I7OztJO0c7O0k7SztPOzt5QixrQixPLHVCOzs7STtLLEs7O00sZ0I7O0ssVTs7O0c7O0k7STs7Ozs7Ozs7Ozs7OztVLG9COzs7Ozs7VTttQjs7cUMsa0IsUzs7Ozs7VSxrQztVLFM7Ozs7Ozs7O087Ozs7O0s7O0c7O0k7STttQjtLLHNDO0ssVzs7O0c7O0k7STtpQjtnQjtLOzs7TSxPO00sTzs7TTtNLHdDO007TztPOzs7TTtPLE87OztpQjs7O2tCOzRCO2lCO2lCLHdCO2dCOzs7Ozs7OztPOzs7O1E7TyxTO087Ozs7OztRLG9COztPO1E7UTtRLFU7OztPLGlEO087UTtRO1EsTztROzs7Ozs7Rzs7SSxVO2E7STs7O0ssTztLLE87O0s7Syx3QztLO007OztTO1MsTztnRCxrQjtRO007Ozs7Ozs7O1M7O1k7OztlO2UscUI7ZTtnQjtnQjs7eUI7Z0IsTTtlLE87O3VDOztjOztTLE87UTtLLDJCOzs7TTtPO087TSxPOztLOzs7O0s7Ozs7TTtNO0ssTzs7OztLLG9COztJO0s7SyxVOzs7SztJLGlEO0k7SztLO0ssTztLOzs7SyxPO0ksTzs7NEI7O0c7O0k7STt3QyxVO0s7OztNLE87TSxPOztNOzs7VTs7OztZOzs7VTtTOztNOzs7OztNOzs7O087TSxTO007Ozs7TTtPO08sVTs7O087TyxPO087Ozs7O0c7O0k7SyxXO0ssTzs7O2U7ZTtJOzs7SyxPO0ksTzthOzs7Z0I7aUI7O2tCO2lCLE87O3dDLHFCOzs7Z0I7OztnQixPOzs7MEIsVzswQixPO3lCOztlOztHOztJO0ksd0M7STtLO0s7OztLOzs7O1M7Ozs7VztZLE07Vyx1Qjs7O2EsTTs7Ozs7WTthO29COzs7Ozs7O1UsVzs7UztTOzs7Vyx1Qjs7Ozs7O2dCO2lCOzs7aUI7Ozt5Qjs7Ozs7O2U7O2dCO2UsRzs7Ozs7Ozs7Ozt3Qjs7OEQ7O3dCLE07O3VCO21DLG1COztzQzs7Ozs7a0I7bUI7cUI7Ozt3QixrQjs7OzhEOzt3QixNOzt1Qjs7bUIsTzs7Ozs7Ozs7eUM7a0I7Ozs7Ozs7bUI7O29COztzQixNO3FCLFM7cUIsSzs7OztvQixJOzs7Ozs7Ozs7Ozs7Ozs7Ozt3Qjs7OzswQixPOzs7d0IsTTs7dUI7O3dCO3dCO29DO3VCOztzQzs7Ozs7Ozs7O3dCOzs7OzBCLE87Ozt3QixNOzt1QjttQyxlLDRCOzttQyxjOzs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7ZTs7O2dCO2tCOzs7cUIsa0I7eUY7cUIsTTs7b0I7Ozs7bUI7bUI7a0I7Z0IsTTtnQixPO2dCO2tCOzs7cUI7cUIsRyx3QztxQixZO21EOzs7c0I7OztxQjtvQjs7Ozs7Ozs7bUI7OztzQjtxQjs7Ozs7ZSxHOzs7O2dCO2lCLEs7aUIsWTs7Ozs7Ozs7ZTtnQjtrQjs7O3FCLGtCO3lGO3FCLE07O29COzs7ZTtnQixLO2dCOzs7Ozs7bUM7Ozs7Ozs7Ozs7NkIsTzs7O1MsTzs7aUMsc0I7O1E7TTtROzsrQix1Qjs7TSxPO00sTztLLE87Yzs7O2lCLFk7Ozs7O2lCLHFCO2lCO2tCO2tCOzs7O3VCO2tCLE07aUIsTzs7eUM7O2dCOzs7STtLO0ssTztJLE87OzJCLHNCOztHOztJO0ksTzthOzs7Z0IsMEM7Z0IsTTtlOztHOzs7O2lCO29CO0s7Syx3QztLO007TTs7Ozs7Ozs7VSxZO1U7OztXO1c7VztVO1M7O007Tzs7TztPOzs7UTtTLE87Ozs7OztRLHlDOzs7UywyQixNOztjO1U7VyxROzs7Ozs7VzthOzs7Z0I7Ozs7aUIsUTs7Ozs0QjtnQjtlOzs7OztXO1c7O1c7O3lCLDBCO1ksVztZLE87Vzs7Ozs7Ozs7Tzs7Ozs7Ozs7O3lCLHFCOztJOztLLE07O0k7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHOztJLE87Rzs7SSxZO0kscUM7O0ssTTs7STtLO0k7STs7RzsyQix5Qzs7O0ssWTtLOzs7TTs7TSxPO0ssZTs7O0c7O0k7STs7OztPO087aUI7Ozs7TSxJLFU7O08sVzs7USxNO087OztRLEksd0MsaUI7USxPLDJDLGlCO2U7Ozs7O1UsNEMsUztNLE87OztnQixpQzs7Ozs7aUI7Ozs7Ozs7OztrQixNOzs7aUI7OztrQjtrQjtrQjtrQjtrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Z0M7Ozs7Ozs7OztvQixXOzsrQjs7O2tCOztpQjs7Z0IsTTtlOzs7OztLOzs7TSxPO00sTzs7TTtROzs7Vzs7WSxNO1c7O1ksTztZLE87NEQ7VztVOztPO1E7USxNOzs7OztPLEkseUI7Ozs7Ozs7OztRLEkseUI7Ozs7O087UTtRLFE7Ozs7Ozs7USxzQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTtROzs7YSxXO2E7WTs7Ozs7Ozs7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7Ozs7Yzs7O2UsTztjOzs7Ozs7Ozs7Ozs7Ozs7O2dCLG9DO2dCLFc7Ozs7Ozs7Ozs7Ozs7O2U7Ozs7VTs7Ozs7Ozs7Yzs7ZTs7O2M7Ozs7Ozs7Ozs7Yzs7ZSxPO2UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztHOztJO0k7O007Ozs7O087TSxXOzs7OztLOztHOzs7OztvQjs7O007UTt3QyxPLHdCOztXOzs7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsZ0M7Ozs7Ozs7Ozs7Ozs7OztnQixtQjtnQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEs7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7OztnQixlOzs7Ozs7Ozs7Ozs7Ozs7Z0I7Ozs7b0IsUzs2Qjs7Ozs7Ozs7Ozs7OztxQjs7cUI7b0I7b0I7bUI7aUI7Z0I7Ozs7Ozs7Ozs7Ozs7O2dCLHFCLE87bUI7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7O2dCLG9CO2dCOzs7Ozs7Ozs7UTs7Ozs7O1E7UyxPOztROztPOzs7O087USxPOztPOzs7SyxNOztHO3NCOztJO0s7SztNOzs7Ozs7Tzs7Ozs7Ozs7Szs7Ozs7SyxrQixPOztLOztHOztJO0s7Ozs7O007Szs7STtHOztJOztNO3FDLDZCO0k7Rzs7STtLLFk7O0s7STtJO0s7Tzs7O1U7OztXLFE7OztXO1U7Uzs7Ozs7STtJO0c7O0k7STttQjs7OztNOzs7OztHOztJO0k7bUI7Ozs7TTs7Ozs7Rzs7SSxZOztJLE87OztJO0k7Ozs7Ozs7Ozs7OztVOztXO1csTztVOzs7VyxXO1c7OztZO2EsTzthLGU7O1U7VSxPOzs7Ozs7VSxPOzs7b0I7b0I7bUI7Ozs7OztVOzs7Vzs7Ozs7Ozs7O08sTzs7Ozs7Szs7Rzs7STtLLE87SztlLHlDLGE7SSxXOzs7aUI7Szs7Ozs7O007Szs7TTtPLE87Ozs7VzthOzs7O087Tzs0Qjs7Ozs7Ozs7Ozs7OzsrQjs7O087OztRO1E7OztTO1U7WTs7O2UsMEM7ZSxNO2M7O1U7VTs7O1UsSztXOzs7Ozs7Ozs7OztnQjs7OztROztzQixPLGtDOzs7Ozs7Ozs7TSxNOzs7O1U7O0c7NkIsMEI7O0ksYztJO0s7Szs7Ozs7Ozs7OztXOzs7Ozs7Ozs7Ozs7VyxPOzs7cUI7Ozs7O29COzs7VyxvQztXLFc7Ozs7O1c7OztRLE8sd0MsZTs7Ozs7TTs7STtJO0c7O0ksSSw2Qjs7Szs7TSx5QjtNLG1CLFc7TSxROzs7TSxHO087UTtTLE07UyxNO1E7UTtTO1E7VTs7O2E7Ozs7Yzs7YTtZOztTO1EsSSxPOzs7Tzs7Ozs7Ozs7SyxZO007Ozs7O21CO0k7Szs7UTs7eUIsdUM7Ozs7O007OztTOztxQztZLDBCO1MsZTtTLE87UTs7OztJO0c7O0ksWTs7Ozs7TTs7Ozs7Tzs7OztVO1U7VyxXOzs7O2E7Ozs7Yzs7Ozs7O2E7OztjO2dCOzs7Ozs7YTs7OztjO2dCOzs7Ozs7VztZO1k7Yzs7O1c7O1M7TTs7Ozs7O007Ozs7TyxnQywrQjtNOzs7O0ksTTtHOztJOzs7TSxXOzs7Ozs7STtHOztJLGlCOzs7OztLO00sbUQ7OztTOzs7VSxNOzs7UyxZLE07UyxNO1E7SztNLG1COzs7O3NDOzs7SyxROzs7Ozs0Qjs7K0I7SzthOzs7SSw0Qiw4QjtJLEcsc0Q7STtJLG9DO0k7Szs7TSxlOzs7SyxXOztJO0s7Szs7O0s7TywyQztLOztLO087SSxPO0c7O0ksVTtJOzs7O1M7dUI7UyxzQjtTO1U7O1cscUIsTztXLE87OztxQixTOztvQjs7O1UsTztTO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7VSxNO1UsTztVLE07Z0I7VTs7O2U7O2dDLHNCOzs7O1c7O1ksWTtrQjtZO2EsTzthLE0sVzthO1k7Ozs7UztRO0s7Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7SztPOzs7VTtVLE87Uzs7O0k7SztNO1E7OztXO1csZTtVOzs7TTtROzs7VztXLE87Ozs7O3FCLE87b0I7VTs7OztLO00sTTtNO1E7OztXOzs7O1ksVztXLE87VTs7O0ssRzs7O0k7OztPO08sTztNOzs7STtHOztJLFUsNEMsUztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7SSxJLFcsMEM7Ozs7OztHOzs7SztLO007TSxHLDBDO00sYTttQjs7TTtPLDhCO08sUTs7Ozs7VSxxQjs7Ozs7O1UsTzs7O1UsZTtVO1c7WSxPO1k7Yzs7O2lCOzBCO2dCOzs7Vzs7Ozs7O1csTzs7bUM7Ozs7Ozs7Ozs7OztVLE07Ozs7VSxXO1U7OzthLGtCLFE7OztlOztnQixJO2UsTzs7dUM7Ozs7Ozs7OzthO1k7O1UsVzs7Ozs7OztVOztXLEk7VSxPOzs7b0I7b0I7bUI7OztNOztJO0k7Rzs7STtLLE07SyxNO0ksTztHO0csZ0I7O0k7OztLLG9CO0s7Tzs7O1U7Ozs7Vzt5QjtVO1M7O0s7SztJOzs7Tzs7OztPO007OztLOzs7USxLO1M7UyxLO1U7Vzs7O2M7YztlLEcsNEM7NEI7ZTtlLEcsbUM7ZSxZOzs7O21CLE07OzttQjtvQixVO29COzs7Ozs7O29CLFc7b0IsRztxQixNOzs7OztlLE87O2E7VTtXO1c7Vzs7OztpQzs7Ozs7UTtPOzs7Syx3QjtLOzs7UTtRO1E7UztTLFE7OztTLEs7UyxNO1E7Ozs7OztTLE07Ozs7Ozs7Tzs7O0s7TSxPO00sTTtNO1E7OztXLFU7VyxXO1U7O0s7TTtNOzs7UztTLEcsMkI7Ozs7O2U7UztROzs7TTtPOzs7VSxHLDBDO1UsZ0I7O1U7VztXLE87VzthOzs7Z0IsTzswQjs7ZTs7O1U7VTtXLFE7OztXLFU7Ozs7Vzs7O1U7VyxNO1csVTt3QixPOzs7Ozs7Ozs7VTtVLE07Ozs7OztTO007O3dCLG1CLG1COzs7O0ksTzs7O2M7OztlO2U7ZSxZOzs7ZSxlOzs7YztlO2UsTTtjLGM7Ozs7O3FCO2UsTzs7YzthOzs7O0c7SSxZLHlDLGtCOzs7OztJLHFDLE87O0ksTzs7O2M7YzthOztHOzs7Ozs7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxnQyxROztLOztNLE07TSxNO0s7OztRO1E7UyxNO1EsaUM7O1M7VSxPO1UsUTs7OztXO1ksTTtZLE07a0I7Ozs7Ozs7OztRLFEsTTtRO087Ozs7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzs7STs7SztPO3dDLHFCO0ssYTs7Ozs7TSxPOzs7Z0I7Ozs7aUI7aUI7Z0I7ZTs7Ozs7STs7Ozs7O1M7O1U7WTs7O2U7ZTtjOzs7O3dDOzs7O1M7VzswQywwQjtVO1c7YTs0Qyx3QjtXLE07Ozt5Qzs7VTtXLE07VzthOzs7Z0IsVTtnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7VzthOzs7O2dCOzs7O1csVTs7VyxNO1U7OztXLE07aUI7Ozs7Ozs7SSwyQjtJLE87OztJLEksc0M7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7SyxVO0s7O2U7RztHO0ksTztHO0c7SSxPOzhDLG9CO0c7RyxpQyx1QztHO0k7Ozs7Ozs7Ozs7Ozs7OztHOztJO0ssSTtlO3dCO0k7Ozs7O0c7RztJOzs7Ozs7Ozs7Ozs7STs7O0k7O087d0M7SSxPO0c7cUMsb0M7O0ksZTtJLE87Rzs7STtLO087OztVOzs7Ozs7VTs7O1M7Ozs7O0s7TztJLE87OztjOzs7O2U7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJO0k7a0I7SztNLE87TSxROzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxjOzs7Ozs7TztRO1EsTzs7Ozs7TTs7Szs7Rzs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7STs7O0k7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7USxPOzs4QixPLGlDOzs7OztLLGM7bUI7O0ssTzs7STtHOztHLGdDLGdCO0cseUIsUztHLG1DLCtCO0c7STs7Ozs7Ozs7Ozs7Ozs7O0c7RztJO0ssa0I7SyxRO3VCOztJLE07RztHOztJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJOzs7NEIsOEM7Rzs7STtNOztnQyxXLDhCOzs7O0k7STtLLFk7bUM7d0I7SyxzQzs7OztHOztJLFU7SSxPO2E7OztnQixZOzs7aUIsaUI7O2dCLE07ZTs7RztHOztJOzs7Ozs7STs7STtHOztJLE87OztjLEksbUI7YyxXO2E7OztHOzs7Ozs7O0k7OztJLEksVSxtQzs7Ozs7O0c7OztLO0s7TSxJLDZCLFU7O087O1EsTTtxQjs7O007Ozs7OztVO1UsTztTO00sRztPOzs4QixPLHFDO1E7TyxPOztNO08sTTtPLFE7O087TztPLFU7Ozs7Ozs7Ozs7Ozs7O1ksTTs7WSxNOzs7Ozs7Ozs7O1k7O2EsaUI7WSxPOztZOzs7YSxPOzs7O2dCOzs7Ozs7bUI7Ozs7b0I7Ozs7Ozs7Ozs7Z0IsTzs7O2EsTTtZLE87Ozs7Ozs7O08sWTs7Ozs7Ozs7Ozs7OztZLHlDOzs7Ozs7Ozs7Ozs7YTtjOzs7a0IsbUIsUTs7OztvQixPOzs7b0Q7O2tCOztlLE07ZSxRO2UsUTtlLFU7Ozs7Ozs7Ozs7Ozs7dUM7Ozs7O1ksTTs7Ozs7Ozs7VyxPO1U7TyxPOzs7O0k7STtHOztJLE8sNEMsUztHOzs7O0s7TSxJLFUseUM7Ozs2Qjs7O0s7SztNLE87SztLLFk7O007O08sa0I7TztNOztLO0ssTzs7K0I7Ozs7O2U7O0k7SztPOzs7O0ssaUI7O0s7TSxNO00sWTs7TSxNO0s7STtJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7VSx1QixVOztVLE07Ozs7Ozs7Ozs7Ozs7Ozs7aUI7bUQsUzs7O0ssOEI7OztJLDhCOztHOztJLGU7SSxJLGdDOzs7MEI7OztHOztJO0ssTTtLLE07O0c7RyxrQyxnQjtHLHlCLHVCO0csbUMsK0I7RztJOzs7Ozs7Ozs7Ozs7Ozs7RztHLHFDLFM7Rzs7SSxPO0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOztLO00sTTtNLE87TSxVOzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7OztPLGM7cUI7O087O007O0s7O0k7Rzs7STtJLE87Rzs7STs7O0s7O0k7Rzs7STs7O0ssTzs7STtHOztJOztPOztPOzs7Ozs7O0c7O0k7SSxvQjtHOytCLDBDOztJO0ksd0M7SSxZOzs7OztRLEcsb0M7USxHLG9DO1E7O1U7OztXOzs7WTs7O2E7OztjO21CO1M7VSxVOzs7Ozs7VTs7OztnQzs7O1E7OztROzs7OztRLE07O0k7Rzs7SSxJLDJCLEk7Ozs7K0I7Ozs7Ozs7Ozs7TyxHOzs7Vzs7Ozs7bUI7Ozs7YSxvQzs7STtHOzRCLHVDO29DLHVDOztJOzs7Ozs7O08sRztRLEksVSw2Qzs7OzsrQjs7Ozs7O0k7Rzs7STs7Ozs7Ozs7UTs7O1M7UTs7Ozs7STtHOztJO0ksZ0Isb0M7SSxZOzs7SyxHLG9DO0ssRyxvQztLLEcsb0M7SyxHLG9DOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7O0s7O0k7Rzs7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxPOzs7OztjLE87YTtHOzs7STs7Ozs7OztNOzs7UztrQixNOztROzs7O0s7TSxPO2U7O0ksWTtJLGE7Ozs7Ozs7OzsyQjs7OztJOzs7O0ssTztLLE87O0s7O1E7OzBCLE8sMkI7Ozs7Ozs7Ozs7Ozs7OztJOzs7STtrQjs7Ozs7O007Ozs7Ozs7Ozs7Ozs7O1E7O087Ozs7Ozs7O0c7O0k7O0ssTTtJOztLLEs7SyxVOzs7OztRLHFCLEk7ZTtTLE07Ozs7UTs7UyxVOzs7OztTLFc7UTtRLEc7UyxNOzs7OztLLE87O0ksTTtHOzs7O0ssSSxlLHVDOzs7O08sTTs7OztJLE87Rzs7STtLLE07STtJOzs7TztPLEc7USxNO3VCOztNOzs7Ozs7Ozs7SyxPOzs7OztlO2dCLFE7Z0IsTTtnQixPO2dCLE87ZTt1Qjs7Ozs7OztjOztJO0ssUztLO087OztVLG1CLFE7Ozs7OztVO1M7O0k7Rzs7STtLOztNLE87TSxNO0s7aUIsd0MsWTs7O0k7O0s7OztJOzs7O0k7O0ssTzs7O2U7O2dCO2tCOzs7O3FCO3FCO3NCO3dCO3VELFk7c0IsYztzQjtzQjs7OztzQjt3QjtzQjtzQixVOzs7c0IsRzt1Qjs7cUI7c0IsTztzQixZO3NCLGdCO3FCLE07O29COztxQjs7OztxQjtxQjtxQjtxQixzQixPLDhCO3FCO3FCO29COzs7OztlO2M7O0k7Szs7O0k7RztHO0k7TTs7O1M7UyxPO1E7O0k7TTs7O1M7Uzs7OztTO1UsaUI7VSxPO1MsTyxXO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Z0I7O0ksTztHOztJO0k7SyxHLDRDO2tCO0ssWTs7Ozs7UyxJLFc7Ozs7VyxNOzs7UztVLE87VSxPO1MsSTs7Ozs7VSxNOzs7UyxPOzs7bUI7Ozs7Ozs7aUI7Ozs7SyxPOzs7ZTs7OztHOztJLE87OztjOzs7ZSxTOzs7O2dCLE07O2U7Z0I7OzthOztHOzs7Ozs7OztNLG1CLFU7OztPO1E7UyxTO1MsTzs7Vzs7O1MsSTs7Ozs7OztTO1UsTztVLE87VSxPOztZOzs7OztTLE07Ozs7Ozs7UyxNOzs7O00sTTs7O0k7Ozs7O0s7SztNLEs7O1EsVztRLEc7OztTLGdCO3NCOzs7Ozs7O3FCOzs7Z0I7TyxjOzs7Ozs7WTs7YTsyQjs7Ozs7Ozs7O08sVztPO1EsWTtRLFU7O1E7OztTLGE7UTs7Uzs7MEI7OztRLEksVzs7Ozs7O21COzs7cUI7Ozs7O1E7Ozs7OztPLE87OztpQjs7Ozs7TyxNOzs7OztROzs7UyxVOzs7O3FDOzs7Ozs7OzswQjs7Ozs7O3dCOzs7OztnQjtnQjtNLE07O0k7O0s7STtJLFc7STtLOzs7TTtROzs7eUI7O0s7Ozs7OEIsTzs7O0c7O0k7SztLO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxPOzs7O2dDO21CO1E7O0ssTztJLE87Rzs7SSxrQjtJOztLO0s7TSxlO2lCO21CO00sWTs7Ozs7VSxHO2tCO1ksVztZLE07Ozs7cUM7Ozs7O1c7WSxPO1k7eUI7O1k7YTtjLFU7OztjLFU7OzthO2MsVztjOzs7Ozs7O2MsTTs7O2E7Ozs7Ozs7Ozs7Ozs7VSxPOzs7b0I7Ozs7Ozs7O2tCOzs7O00sTzs7O2dCOzs7O0k7O0s7SztJO0ksTzs7O2M7ZSxROzs7OztjOzs7aUI7OztjO2E7O0c7O0k7Ozs7Ozs7SztLO00sTztNLE87TSxPO0ssSyxpQztLO007TSxPO00sTztLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7Ozs7OztLLHFCLE87OztJO0c7O0ksTzs7O2M7YzthOzs7O0c7O0k7STtLLGM7SztPOzs7VTs7VztXLE87VyxhO1c7VztVOzs7Ozs7Ozs7Uzs7SyxlO0ssUTtLO087OztVO1csTztXLE87VSxXO1M7O0s7Tzs7O1U7O1c7YTs7O2dCOzs7OztXO1csYzs7OztZLEksZSxLO1k7Ozs7ZTs7Ozs7O2UsVztlO2UsTztjO1k7O1c7Ozs7O1csTzs7Ozs7cUI7cUIsTzs7OzsrQjsrQjtnQztnQztrQzs7b0Qsb0IsYzs7Z0M7a0M7OztxQzs7OztzQyxPO3FDOzZDOzs7b0M7O2dDLFU7Z0MsUTsrQjs7aUMsTTs7Ozs7Ozs7Z0M7OztvQyxNOzttQztpQzs7O2tDOztrQzs7O2lDOzs7bUM7Ozs7OztpRDs7O3FDOzs7Ozs7O3NDO3NEOzs7cUM7Ozs7O2tDOzs7O2lDOzs7bUM7bUQ7OztrQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7a0M7b0M7a0M7b0M7Ozs7Ozs7Ozs7Ozs7Ozs7a0M7O21ELDZCOzs7O2lDOztnQztnQzs7O21DO21DLEc7b0MsTTs7O29DOztrQzs7Z0M7aUM7aUM7bUM7O2tELE8sa0M7OzBDO2lDLE07O2dDO2lDOztvQyxPOzs7Ozs4QzsrQyxPOytDOzs7Ozs7Ozs7Ozs7OytDOzs7K0MsTzsrQyxPOytDOzs7Ozs7Ozs7OytDOzs4Qzs2QzttQztpQztpQyxPO2lDLFU7Ozs7Ozs7Z0M7O2lDOzs7aUM7OztzQzs7O3lDOzswQyxRO3FEO3lDLG1CLFU7OzswQyxPOzt5Qzt3Qzs7OztpQztpQzs7Ozs7Z0M7O2lDO2lDLE07Ozs7OytCO2dDLFE7Ozs7Z0MsTztnQyxPO2dDOzs7Ozs7Ozs7Ozs7Ozs7OytCOzs7a0M7Ozs7bUM7bUM7a0M7bUMsVzttQzs7Ozs7OzttQyxNOzs7aUM7OytCO2dDO2lDO2tDLE87a0MsVztrQyxVOzs7OztrQyxNOzs7OztnQzs7K0I7Z0M7Ozs7Ozs7Ozs7Ozs7Z0M7O2dEOztnQzs7aUMsTzs2Qzs7Z0M7O2lDLE87NkM7K0I7OEI7b0I7O1U7VyxPO1c7YTs7VzthOzs7Z0I7Z0I7ZTs7VyxROzs7O1U7VyxTO1csVTtVOzs7YTs7OztjLE87Ozt3Qjt5QjswQixPOzBCOzRCOzs7O3lCOzs7OzswQixPOzs7O3VCOzs7O2EsTzs7O3VCO3VCO3dCO3lCLE87eUI7MkI7Ozs7d0I7Ozs7O3lCLE87Ozs7c0I7O1k7O1U7VTs7a0I7b0Q7Uzs7Ozs7O0s7Tzs7Z0MsbUIseUI7OztLO087OztVOzs7OztJOzs7Tzs7O1E7USxNO3lCO087UTtVOzs0QixPLDRCOztRO1EsTztPOzs7OztnQjs7O007OztLLG1COztLLE87STtJOzs7TztPOzs7Z0I7Ozs7TTs7STs7O08sdUM7Tzs7O2dCOzs7O007O0k7OztPOztRO1EsUTttQjs7TyxNOztNOzs7STs7O08sdUI7Tzs7O1U7VTtTOzs7Ozs7OztXLGtCOzs7WTs7O1csTTs7VyxvQjs7WTs7YTs7Z0IsTztlO2E7ZTtZOzs7ZTtlO2dCO2lCLE87aUIsUTs7Ozs7aUIsTTs7Ozs7OztnQjs7OztrQjs7O3FCO29COzs7Ozs7Ozs7O2tCOzs7O2dCLE07Ozs7Z0I7O2U7Yzs7OztXLE07OztxQjtPLHFCOztRLE07O087Ozs7STtLO007UTs7O1c7VztVOzs7TTtRLFc7TSxPLFc7TSxVLFc7Ozs7OztNLE07Ozs7TSxNOzs7OztLLE07O0k7STs7OztPOzs7O0k7O087OztVO1U7Ozs7Ozs7Ozs7O1M7OztJO0c7O0ksSSxLOzs7O007O087TyxTO08sVTs7OztPO1EsUztRLE07USxpQjs7OztPO1EsUTs7O00sSTs7Ozs7TyxNOzs7O087USxPO1EsTztPOzs7VSxXLG1CO1U7VztZLE87bUI7OztVLGM7Uzs7O007TyxpQjtPLG1CO087O1U7O087O1U7O2E7TyxNOzs7TyxNOzs7Tyx1Qjs7OztTOztVLFU7Ozs7OztXOztZLFM7WSxPO2M7WSxNO1csc0IsTztXOzs7Ozs7Ozs7VyxNOzs7UyxNOzs7O087UTs7Ozs7O00sTTs7Szs7OztNOzs7Ozs7Ozs7OztJO0ssTztLLE87Szs7Ozs7Ozs7OztLO0s7Ozs7OztvQzs7Ozs7O0ksWTtJOzs7O0ksTzs7Ozs7Yzs7Ozs7Ozs7YTtHOzJCLCtCOztJLE87Ozs7O2M7O2UsUTs7OztlLE07Ozs7ZTtnQjs7bUI7O3FDLGlDOzs7Ozs7Ozs7ZSxNOzs7YztlO2lCOzs7b0I7cUIsUTs7O29CO21COztlLE87Ozs7ZTtnQixPO2dCO2tCOzs7c0I7Ozs7O3VCO3VCOzs7Ozs7cUI7Ozs7O2M7O2UsTTs7O2M7ZSxRO2U7aUI7Ozs7cUI7cUI7cUIsTzs7OytCOytCOzs4Qjs7b0I7O29CO29CO3FCO3FCO3VCOzt5QyxvQixjOztxQixPO3FCLE87b0I7b0I7OztxQjt1Qjs7OzBCOzs7O29CO21COzs7Yzs7O2lCLG9CLFE7NkI7O2lCLE07O2dCOztjOzs7aUI7aUI7a0I7O3FCOzs7Ozs7a0I7Ozs7Ozs7a0IsTTs7O2dCOztjO2U7aUI7OztvQjs7O3FCO29CLE87O21COzs7ZSxVOzs7ZTs7Ozs7Ozs7O2M7YTtHOztJO0ssUTtLO087Ozs7VztXOztVOztVO1U7O1M7OztLLFU7OztLLE07OztJO0s7SyxTO0k7Rzs7STtLO087Ozs7eUIsbUM7Ozs7STtHOztJO0ssUTtLLFU7OztvQzs7Ozs7d0I7O007O3VCOzs7SSxNO0c7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7VSxPOztTLE07O1E7Ozs7Ozs7Ozs7STtJO2tCO0k7O0ssTztLLFE7Ozs7TTs7bUM7Ozs7TSxHO00sRztNLEc7TSxHOzs7OztLLE07OztJO0c7O0k7STtLOztNLFU7TTs7Ozs7Ozs7Ozs7O1csTTs7O1U7OztXO1c7OztVOzs7Ozs7Ozs7OztNOztLLE07O0c7O0ksTzs7Ozs7YyxJLE0sMEM7O2U7Ozs7O2U7Z0I7Ozs7O2dCO2tCOzs7O2dCO2lCO2lCO21DOzs7O2dCLE07Ozs7Ozs7OztlO2dCLE07O2U7OzttQixXO21CO29CLFk7Ozs7c0I7O3VCLFM7MkM7Ozs7OztvQjs7OzsyQzs7O2tCO2dCO2tCO2U7OztrQixnQjtrQixPO2lCOzs7ZTtnQixPO2dCLE87Ozs7ZSxLO2dCLE07O2U7Z0IsTztnQixPOzs7YztlO2lCOzttQyxlOzs7Ozs7ZTs7Ozs7Ozs7O2M7YTtHOzs7STtJLE87O2dDLGdDOztjO2M7ZTtlO2U7aUI7O21DLG9CLGM7O2UsUTtlO2lCOzs7b0I7Ozs7cUIsTTtxQixRO29CO21COztlOzs7ZTs7Z0IsTTs7Ozs7Ozs7OztjO2UsYTs7YztlOzs7a0I7a0I7bUIsVzttQjs7Ozs7OzttQixNOzs7aUI7OztjOzs7aUI7aUI7a0IsVztrQjs7Ozs7OztrQixNOzs7Z0I7O2Msd0I7Ozs7O2U7Ozs7Yzs7Ozs7OztlOzs7Ozs7OztjO2UsTztlLE87OztlOzs7Ozs7OztrQjs7Ozs7Ozs7Yzs7O2lCO2dCOztjLGM7OztlLE07OztjO2U7ZSxXO2M7ZTs7a0I7Ozs7Ozs7Ozs7OztlLE07OztjOztpQjtjO2U7O2tCOzs7Ozs7O2UsTTs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7OztHOztJO0ssTztLLE87Szs7SyxxQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLFc7SztLLFc7STtJLE87Ozs7Yzs7OztlLE87ZSxPO2M7Ozs7Ozs7Ozs7Ozs7OzthO0c7O0ksWTtJLE87OztjOztlOzs4QjtjLFc7YTs7Rzs7NEIsTyxzQztJO0k7STtHOztJO0s7TTtROzs7VyxXO1csTztVOztNLE07TSxXO0s7SztNLE87TSxPO0s7Szs7Ozs0Qjs7O0c7O0k7Ozs7Ozs7YztlLE87ZTtlLE87YyxPOzthO0c7O0ksc0M7O0ksTyx3QyxZO0c7O0k7SztLO29COzs7Ozs7Ozs7Ozs7OztNOztJO0k7Rzs7SSxPOzs7YztjLE87O2E7O0c7O0k7SztNOzs7TyxPO08sTztNLE87O0s7OztNLE87TSxPO0ssTzs7STtLLE87STtJLE87YTs7O0c7O0ksTztHOztJOzs7USxPOztRLE87Ozs7Ozs7USxPOztRLE87O1EsTzs7USxPOzs7Ozs7Ozs7USxPOztRLE87Ozs7OztPLE87OztPLE87O087Ozs7UTtPLE87Z0I7O2lCO2lCO2lCLE87Ozs7Ozs7O2dCOztPOzs7O1E7TyxPO2dCOztpQjtpQjtpQixPOzs7Ozs7OztnQjs7OztROztTO1c7Ozs7OztTLE87USxPOzs7Ozs7Ozs7OztPLFc7TyxPOzs7Ozs7Ozs7O087Tzs7Ozs7O3VCLE8sMEM7dUIsTywwQztPLE87OztPO087Ozs7Ozt1QixPLDBDO3VCLE8sMEM7TyxPOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7O087Ozs7O1E7UTs7VyxPO1U7TztPO087USxPO1EsTztRLE87TyxPOzs7Ozs7Ozs7OztpQiw2Qiw4QjtpQixPOzsyQjs7MkI7Z0I7OztPOzs7Ozs7O1k7Ozs7Z0I7Ozs7cUMsUzs7eUMsVztlO2EsUTs7Ozs7O2lCOztrQixVOzs7aUIsRyxpQztpQjs7OzttQyxrQixTOzs7b0I7b0IsTzttQjs7O2lCLG9CLE87aUIsRyxtQztpQjs7O21COztvQixrQixROzs7OytEOztzQixPOzs7cUQ7O29CLE87bUI7OztvQjs7cUIsTztvQixPO21COzs7YTs7Ozs7OztXOzs7O3lCLFk7OztjLFc7YyxPO2E7Ozs7Vzs7Ozs7YztjLE87YTs7O2M7Ozs7Ozs7O2E7OztPLE87OztPLE87Ozs7Ozs7O08sdUIsTztPLE87Ozs7Ozs7OztPOzs7O1E7VTs7Ozs7O1EsTztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7aUIsVztpQixPO2dCOztpQixPO2dCOztPOzs7O1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7TyxzQixPO08sTzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7O087Ozs7UTs7Vzs7OztZO1c7O3VCO3VCOzt1Qjs7O087USxnQixPO1E7Ozs7Ozs7Ozs7O1E7Ozs7VztXO1ksTztZLE87Vzs7Ozs7Ozs7OztXO1csVztXOzs7Ozs7Ozs7O1c7VyxXO1c7Ozs7Ozs7Ozs7VyxXO1c7Ozs7Ozs7Ozs7O1csVztXOzs7Ozs7Ozs7OztXLFc7Vzs7Ozs7Ozs7Ozs7Z0M7TyxJLHFCO08sTzs7TyxvQixPO08sTzs7O087TztPOzs7O3FCLFM7O3lCLGE7TyxPOzs7aUI7O2lCOzs7Ozs7Ozs7Ozs7O08scUI7TyxPOzs7TztpQjs7Ozs7Ozs7aUI7Ozs7Ozs7OztPOztROztXLFksTztXLG9CLE87VyxPOztPLE87Ozs7Ozs7Ozs7TyxPOztPOztROztXLE87VTtRLE87USxPO08sTzs7OztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozt1Qjs7O0k7RztxQyx3Qjs7STtJOzttQzs7OzZCOzs7O1E7OztZOzthLG1CO2EsTzs7WTtXO1M7Vzs7Ozs7UTs7O2lGLGU7O1EsTzs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UTs7OztTOzs7O1U7VSxROzs7Ozs7OztRLG9CLFU7OztpQzs7O1E7OztRO1MsTzs7O1E7Ozs7Ozs7OztROzs7OztRO2dCOzs7O0c7O0k7OztJLG1COztJLEksVywrQjs7OzRCOzs7OztJO0k7Ozs7NkI7O1E7O1E7O1E7O1E7OztRO1M7O1k7O1k7O1ksTzs7WSxPOzs7Ozs7UTtTLE87O1E7OztHOztJOzs4Qjs7STs7Tzs7Tzs7Tzs7TztlOztHOztJOztHOztJOzs7O29CLGdCOztvQixnQjs7Ozs7O0k7RztHO0k7O0ksVTs7SSxJLFcsNEI7Ozs0Qjs7O0c7OztJLE87OztjLEkscUI7YyxPO2E7OztHOztJLE87Rzs7SSxPLGlDO0c7O0ksTzs7O2M7YzthOztHOzs7SSxPOzsrQixPLDBCOzs7Rzs7SSxtQjtHOztJLE87Rzs7STs7SSxPO0c7O0ksTzs7aUMsbUIsd0I7OztHOztJO2E7NEMsd0I7RzsyQixhOztJO0ssTywrQztHOztJO2tDOzs7MkI7O087O087Ozs7UTtPO1E7O087OztROztXO2tEOztXO1U7OztXOzhCOztXO1U7USxXO1EsVzs7Ozs7O1M7Vzs7K0IsMEI7O2lDO087UTtRLDBCO087UTtRLHFDOzs7Ozs7Ozs7OztRLGU7OztPOztROzs7OzBCOzs7YTs7O2M7OzthOzs7Ozs7Ozs7UTs7O1E7OztpQzs7OztpQzs7UTtPLHNCOzs7TztRO1M7VzswQyx1QjtTLFE7OztTLE87UztRLHVDOztPOzs7USwwQix1QjtROzs7OEI7TyxzQjs7O08sNkI7O08seUM7Ozs7Ozs7Ozs7O1E7Ozs7a0M7O08sc0I7OztPLDZCOzs7OztRO1M7Ozs7Ozs7O2lDOztROzs7O2MsTzs7O3dCO3dCOzs7O3dCO3VCOzs7Ozs7TyxzQjs7MkI7Ozs7OztRO08sc0I7O087O1EsVTs7TzsrQjs7Ozs7Ozs7Ozs4QjtRO08sc0I7Ozs7OztRO08sc0I7Ozs7OztRO08sc0I7Ozs7Ozs7O1E7TyxzQjs7NEI7TyxzQjs7NkI7Ozs7OztRO08sc0I7Ozs7OztRO08sc0I7O087OztRLDRDOztvQztRO08sc0I7O087Ozs7UTtRO087UTs7TywwQztPLG1CLE87OzJCOztPLG9CLFU7Ozs7OztPOztnQzs7O08sa0IsTzs7Tzs7Ozs7O1E7c0M7UTs7aUM7O08sc0I7OzZCOztPLG1DO087UTs7Rzs0Qjs7SSxzQztJLHFCO0c7O0k7SSxxQjtHOztJOzs7MEI7OzJCOzs2Qjs7Tzs7eUI7ZTs7Rzs7SSxpQjs7STtHOztJOzs7MkI7OztPO1EsTzs7O2tCOzs7cUIsa0I7cUI7OztxQjs7cUI7O3FCOztxQjs7c0I7d0I7OzBDLG1CLFU7O3NCO3FCOztxQjs7c0IsTTtxQjs7Ozs7O3FCOztxQjs7c0I7d0I7OzsyQjsyQjswQjs7c0I7d0I7eUQ7Ozs7eUI7MEI7OzJCOzJCOzs7O3lCOztzQjtxQjs7d0M7O3FCOztzQixpRDtzQixZOzs7O3lCOztzQjtxQjs7cUI7Ozs7c0IsZTtzQjtxQjs2Qjs7aUI7Ozs7eUI7Ozs7OztRO08scUI7OzJCOzs7OzswQixpQzs7O087c0M7OztXOzs7O2lDLDRCOzs7O21COzs7Ozs7TztRLE87O087O0c7eUI7O0k7STs7OztRLHNCOzswQjs7Ozs7O1M7USxxQjs7O0c7O0k7O0s7O00sTTtNO007TTs7OztLO007OztJO0c7O0k7OztLO0ssWTtLO0k7Rzs7STtJOzs7OzRCOzsyQjs7UTs7O1M7VywwQztTO1EsbUI7Ozs7Ozs7O1kscUI7OztvQztTO1EscUI7O1E7Ozs7UztRO1M7Ozs7OztHOztJO3VCOztJO0c7O0k7SztPLHlDLGE7SztJO0s7OztTOzs7VTtVO1U7OztVOztTO1UsZTtVO1M7O00sTTtNLFE7Ozs7Szs7TTs7O1U7OztxQjtTO08sUTtNLEc7Ozs7Ozs7O1M7OztVO1M7OztJO0c7O0k7Ozs7O0s7OzZCOztJO0ssMEI7Syx3QztHOztJO0s7SyxNO0s7TztTLHlDLHFCOztLLFEsVztJO0c7O0k7STs7bUM7OztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7USxvQztRLFE7Ozs7Rzs7STtnRDs7STtLO007Ozs7OztZOzs7ZTtlO2M7Ozs7Ozs7SztNOztJO0c7OztLO0s7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7OztJOztHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3Qzs4QiwyQztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7RztJO0k7O0k7OztRLE07Tzs7STs7O1EsTTtPOztJOzs7USxNO087O0k7OztRLE07Tzs7STs7O1EsTTtPOzs7Ozs7cUIsc0MsWTtxQix5QyxZO3lDLDRCOzZCLHdCOztJOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPO2UsTzs7Rzs7STs7OztRLEksbUIsOEI7OzttQzs7Ozs7Ozs7WSxJLG1CLDhCOzs7dUM7Ozs7O1ksSSxtQiw4Qjs7O3VDOzs7Ozs7USxJLG1CLDhCOzs7bUM7OztPOzsyQjs7O087OzttQjs7Tzs7Rzs7STt5Qzs7SSxNO0c7O0ksTztHOztJO0c7O0ksWTtJLGlCO0c7O0k7SyxRO0s7O0s7STtpQjs7OztHOztJO0ssTztLLFE7Ozs7O00sRyx1Qzs7O0ksTTtHOztJLE8sMkI7Rzs7STtJLE87Rzs7STs0Qzs7Ozs7TTs7O0k7Rzs7STs0Qzs7O3FDO2tEOztJO0c7O0k7Ozs7aUM7O0c7O0ksSSxXLDZDOzs7OztNLE07Ozs7O0ssTTs7O0c7O0ksSSxXLHNDOzs7OztNLE07Ozs7SyxNOzs7RztHO0ksa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7VztZO0s7Ozs7OztNLE07Ozs7O0ssTTs7O0c7O0k7STtHOztJO0s7Szs7Ozs7Ozs7OztPLE07Ozs7OztHOztJLE87Ozs7ZTs2RDtlO2M7O0c7O0ksTzs7OztlOztnQjs7OztpQixPO2lCLFE7Ozs7aUI7a0IsSTtrQixVO2lEOzs7O21CLHFCO29CLFc7b0IsTzs7Ozs7OztvQixLO3FCLFc7cUI7O3NCLE07OztxQixPOzs2Qzs7Ozs7a0IsbUI7bUIsVzttQixPOzs7aUI7O2dCLE07O2U7Yzs7Rzs7STs7OztJO0c7Ozs7OztJOzs7O0k7TTs7O1Msc0I7UyxPO1E7O0ssTTs7Ozs7O08sTTtpQjs7O007OztPLE87TyxPO087OytCOzs7Ozs7OztjO0k7SyxPO0ssUzs7STs7O0ksTzs7O2MsK0IsTztjLE87dUI7YTs7Rzs7STs7Ozs7Rzs7STs7Ozs7Ozs7Ozs7VTtXLE87O1U7O1U7O1c7YTs7OEI7O1UsTzs7Ozs7Ozs7Ozs7OztVO1U7VzthOzs4Qjs7VyxVOzs7VyxPO1U7OzthOzs7Yzs7YSxzQjtZOzs7VTs7VTs7O1c7YTs7OEI7O1csb0I7VyxPO1csVztVLE87O1U7O1csTztXLE07O1U7VyxPO1c7YTs7O2dCO2dCO2U7Ozs7YztlLFE7OztjOzs7O2UsVztlO2dCLGM7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE07OztnQjtlOzs7Ozs7YztlLFU7OztjO2M7YTtVO1U7OztVO1c7O1ksVTs7OztZLE87WSxXO1csTzs7VSxJLGdDO1U7VTs7Ozs7OztNLFM7TyxPO007TztPO1M7OzsyQixPLDZCO08sTztPLE87TTtNOzs7Ozs7O0k7OztJO0s7Tzs7eUIsTywyQjs7SyxLO0ssZ0I7STtJO0c7Ozs7Ozs7Ozs7STtLO00sTztNLE87TSxPO00sTztNLEs7Szs7O0s7Ozs7OztLOztJO0k7SztPOzs7VSxvQjs7Vzs7OztZO1ksVTs7OztZOztZO2M7OztpQjtrQixPO2tCO29COzs7O2lCO2lCO2dCOztZO2M7Ozs7a0I7a0IsTztpQjtnQyxPLHNDOzs7OztXO1ksTTtZLE07VztZLE07Ozs7YSxXO2E7YTtjLE87YyxVOzthLE07OztZOzs7O1k7YTtlLHdDLFk7YTtlOzs7a0IsWTs7Ozs7b0IsRztxQixPOzs7a0IsTTs7aUI7Ozs7YSxNOzs7VztZOzs7Ozs7O1c7WSxVOzs7WTs7Ozs7O1c7VTs7O1M7Ozs7O0s7OztLOztNOzs7UztTO1M7UztVLE87VSxjO1U7b0I7Uzs7WTs7UztTLE07UTs7Ozs7Ozs7STtHOzs7SSxPOzs7YztlLFE7OztjO2U7Ozs7O2lCOzs7Ozs7OztpQixNOzs7Ozs7O2M7YTs7Rzs7STtLLFM7SyxnQjtJO3dCO0k7Rzs7STtLLEs7SyxPO0kseUM7STtHOztJO2lDO0ssc0I7STtLLE87STtJO0ssZTtLLGdCO0k7Szt5QjtJLFc7SSw4QjtHOztJO0k7SyxJLEksVzs7Ozs7O0s7OztPLG1CLFU7O08sTTs7O0ssVTtLLEcsK0I7OztHOztJLEksaUM7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7SSxZO3NFO0ksTTtHOzs7Syw0QjtJOztLO00sUztNO3dCLE07O0s7TTs7Uzs7O1k7WSxPO1c7Ozs7OztNOztTOzsyQixtQixPLHdCOztNLE07Ozs7Ozs7O0s7SztJOzs7O29CLE87TSxzQyxPO00sRzs7Vzs7OztLO007TTtROzswQixvQiwwQjs7TTs7K0I7OzsrQjtLLE87Ozs7O2U7ZSxPO2M7STs7SyxrQixNOzs7TSxvQjtNOztLLE87STs7SyxHO007TTtPO08sWTs7Tzs7bUI7TyxPOzs7O0k7O0s7TSxPO00sTztNLFc7SyxPO0k7O0ssVztLLFc7SztNO1E7Ozs7MEIsTywrQjtNLHdCO0ssTztJOztLOzt1RDs7SyxnQjtLLE87STs7Syx3Qzs7SyxPO0k7Ozs7OztLOzs7Ozs7OztPLEk7Ozs7USxJOzs7O1M7aUI7VTtVO1k7OztlOztnQjtnQjtlO2M7O1MsTTs7O1EsRywwQjswQjs7Ozs7Tzs7O1M7O1UsVTs7OztXLE07VTs7O1c7VTtXOztXOzs7VTs7O1M7Ozs7OztNLGM7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O08sTTs7OztLLEc7TTtLOztJOzs7SSxJLFcsa0I7Ozs7OztLLE07OztHOzBCLGM7MEIsYzs7SSxPO0c7O0k7Ozs7Szs7STtHOzs7Ozs7SSxPOzs7YyxPO3lDLE8sMEI7YTs7O2MsTyxjO2E7O0c7OztJO0s7Tzs7O1U7VSxPO1M7O0s7SztLO0s7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxPO0k7O0ssWTtLOztPLG9CLE87Tzs7dUIsTywrQzs7TyxXO08sTzs7O08sb0I7Tzs7Ozs7Z0I7Tzs7TSxhO21CO00sZTs7O0s7Ozs7Ozs7OztJO0k7SztPOzs7VTs7Uzs7SztPOzs7VTs2Qjs7VTtTOztLO087OztVOztXOztVLHNDOzs7Ozs7Ozs7Ozs7VTtTOzs7O0s7O0ssVTs7TTs7OztPO1M7OztZO1k7Vzs7TyxPO08seUM7TyxPO007UTs7eUI7O08sZ0I7Tzs7O087OztVO1UsTztTOzs7OztLLFc7Szs7STs7Tzs7O1U7O1M7O0ksTztHOzZCLGU7NkIsZTs7SSxRO1U7YyxnRDtJO0s7NEM7O0k7SSxPO0c7NEIsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7Ozs7O1MsTzs7O21CO21CO2tCOzs7UyxrQztTLFM7Ozs7Ozs7O1MsTzs7O1M7Ozs7Ozs7Ozs7O0s7O0c7O0ksSSxXLHVDOzs7O0s7O00sZ0I7SyxNO3NDOzs7Rzs7SSxrQjtHOztJLHdCO0c7O0ksTzs7Ozs7Yzs7YTtHOzs7OztLO007O0k7O0ssVztLO0s7STs7SztnQjs7STtvQiw4QjtJOzs7Szs7Ozs7ZTs7Ozs7O087O1EsTztROzs7Tzs7Tzs7O1E7O1E7VTs7OzRCLG1DO1E7Ozs7Tzs7Ozs7Ozs7O087O1E7UTs7Tzs7Ozs7Ozs7Uzs7O1U7VTs7YTtjLE87YTtjLFk7YyxPO2EsTztZOztVO1M7OztPLE07OztPLE87USxNO087UTs7UTtVOzs7Ozs7OztROztRLFcsd0MsWTtPO3FDOztPOzs7UTs7O1M7VTtVO1MsTTs7Ozs7Ozs7O087USxhOzs7Ozs7UTs7Ozs7Ozs7O1E7O1EsOEI7USxNOzs7Ozs7Ozs7Ozs7Ozs7UyxNOzs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7O3VCOzs7Ozs7Vyx1Qjs7Ozs7Ozs7Ozs7Ozs7TyxHO1E7b0I7OztTOzs7O1U7USxXO1EsTTs7O087UTs7Ozs7Ozs7Ozs7Ozs7VztXOzs7Ozs7OztnQjs7OztnQixNOzs7WTs7VTs7UTtROzs7VztXO1U7OztPOztRO1U7Ozs7Ozs7O1E7O087Ozs7O2lCOzs7OztPO1EsTTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7TztRLE07Tzs7O1M7UyxNOzs7d0I7OztROzs7UyxjO1M7OztPOzs7Vzs7OztZOzs7Vzs7O1E7O1E7Ozs7O2E7Ozs7Ozs7Ozs7OztROztTO1MsVTs7O1ksc0I7WTthLE07OztZO1k7O1E7Ozt1QjtRO1MsSSxpRDs7Ozs7Ozs7Vzs7Ozs7O1U7VyxPO1csSTtVOzs7Ozs7Tzs7Ozs7O21COzs7O087O1E7UTtVOzt3QixzQzs7UTs7Tzs7Ozs7aUI7Ozs7Tzs7O1E7UTtRO1E7VTs7Ozs7YzthO2E7YyxXO2MsUTtjLFE7YztjO2E7WTs7Ozs7UTtRO1EsWTtPOzs7VTtVO1M7O087OztVO1U7Uzs7Tzs7UTtROzs7VztXO1k7OztnQixPOzt5QyxzQixhOztlO1k7Ozs7Ozs7Ozs7YyxLO2U7Z0IsTztnQjtrQjtxQjs7O2UsTTs7OztjO2UsVztlO2U7Ozs7Ozs7ZSxNOzs7Yzs7OzsrQjtZLE07OztVO1E7O1EsTzs7OztPO1EsTztROztPOzs7OztpQjs7Ozs7Ozs7O1M7Ozs7O1UsUTs7OztTOzRCOztTLGM7O1U7Ozs7YTs7OztpQixPO2dCOztXOzs7VTs7Ozs7Ozs7O1MsTTs7OztPOzs7UTtVOzs7O2M7YyxPO2E7NEIsTyxzQzs7Ozs7TyxXO087MkI7TztRO1E7Tzs7OztTOzs7Ozs7Ozs7Ozs7O087O087OztRLFU7OztRO1U7OzRCLE8sNEI7O1EsTztRLE87USxVOzs7USxHO1M7VSxPO1U7WTs7O2U7Ozs7O2dCLFE7Ozs7aUI7O2tCLE07aUI7Ozs7Z0IsVTtnQjs7ZTtjOzs7OztVLFc7VTs7O2EsTztZO1Usb0I7VSxPO1U7VSxtQjtVO1k7OztlO2U7Yzs7UztVLE07O1M7OztVO1k7OztlO2M7OztVOzs7Ozs7Ozs7Ozs7O08sTTs7O087O1E7UTtROztPOzs7OztpQjs7OztPOztRLEk7UTs7UTs7Ozs7Ozs7Tzs7UTtROzs7Tzs7Ozs7Ozs7O087OztRO1E7b0I7TyxNOzs7TyxNO2tDOztPOzs7USxXOzs7TztPO1E7O1EsVzs7USxNOztPO087Ozs7Ozs7Ozs7SSxPOzs7YztjLE87YTtHOztJLE87OztjOzs7Ozs7O2U7YyxPOzs7Ozs7YTs7O0c7O0k7OztJLE87OztjOzs7OztjLE87Ozt3Qjt5QjsyQjt5QjsyQjt5QixPO3lCLFE7Ozs7eUI7d0IsTzs7dUI7YTs7O0c7O0k7SztHOztJO0s7SyxLO0ssa0I7SyxXO0s7STtLO0s7O0ksd0MsTyxpQjtJLEc7Syx1QztJO0s7Tzs7O1U7Ozs7Ozs7OztVLGtCLHFDO1U7VyxLO1csTztXLFU7VzthOzs7Ozs7VzthOzs7Ozs7VTtTOzs7Ozs7STtHOztJO0ssaUI7SyxTO0s7SyxLO0ssa0I7SyxXO0s7SSx3QyxPLGlCO0k7RztHO0k7STs7Ozs7OztJO0ksVztHOztJOztHOztJO0k7Ozs7TSxJLDBDOzs7Ozs7Ozs7SyxPOztHOzs7O0s7TTs7SSxJOzs7Syx5Qjs7SSxnQyxPLGtDO0k7Ozs7Ozs7STs7Ozs0Qjs7UTs7UyxPO1M7UztTLE87UTtRLE87OztRLE87UyxNO1E7Uzs7UyxVO1E7O2tCLGdDO2tCOzs7aUI7OztrQjs7O3NCLHdDLFk7a0Isa0I7aUI7O1E7Ozs7Uzs7O1MsTTtRO1M7Ozs7O1E7O2tCLGdDO2tCOzs7aUI7aUI7O2tCOztpQjs7UTs7OztTOzs7Ozs7O1k7Vzs7O1MsNEMsbUI7O1E7O1E7OztTLFk7OztZOzs7O2E7OztZOzs7O3NCLE87cUI7O1E7OztrQyxzQzs7UTs7UztROztrQjtrQjs7O2lCOzs4QiwwQjs7UTs7UztRO3VDLDBCOztROzs7O1M7Ozs7YTthO1k7WTtXO1EsZTtROzs7WTthLE07WTtZO2E7OzsrQyxTOzs7O3lDO3VDOzs7WTtXO1Msc0I7UyxzQjs7O1M7Ozs7O2EsTTs7Ozs7Ozs7Ozs7O1U7VyxNO1U7Ozs7O1U7Ozs7USxPOzt3Qix3QjtxQjt5QixxQztJLGM7a0IsTTs7O3NCOzs7Szs7STtLLE07STs7Tzs7O1U7Ozs7Ozs7Uzs7O0k7OztJOztLLE87SztLO0k7SztNO007Ozs7Ozs7c0IsUztLO0s7Szs7Ozs7O0s7Szs7Ozs2Qjs7O0k7SSxPOzs7Yzs7Ozs7Ozs2QjtJLE87OztjOzs7ZTtnQixNOzs7YzthOzs7RztJOzs7d0MsZ0M7O0k7bUM7O0c7O0k7SyxPO0ssUTtLLE87STs7O087TztPLE87TTs7STtJO0ksTztHOztJO0k7Ozs7Ozs7O1U7OztXO2E7OzRCLDhCOztVLFc7Ozs7Ozs7O1ksa0I7WSxXO1k7O2U7aUQ7WSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVLHNDO1U7b0I7OztzQjs7Ozt1QjtzQjt1Qjt3Qjt3Qjs7Ozs2Qjs7OztpQztnRjtpQztnQzs7Ozs7c0I7cUI7Ozs7O1UsTzs7O1UsTzs7O1U7VyxPOztVOztVOzs7VzthOzs7Z0I7Z0Isd0I7OztlOztVLFc7Ozs7Ozs7Ozs7O1UsdUM7VSxXOzs7Ozs7Ozs7cUI7Ozs7Ozs7O1U7Ozs7VztXO2E7OztnQjs7O21COzs7b0Q7O21CO21COzttQjs7bUI7O3VDOzJCOztlOztVO1c7WTtjOzs7aUI7aUI7OztnQjs7O1k7Ozs7OztVO1csTzs7VTs7Ozs7Ozs7O087TyxXOzs7O007O0s7O0c7O0k7OztJO0k7Ozs7O1EsTzs7O2tCOzs7O3FCLE87OzJDLDhCOzs7O3FCLE87OzhDLGlDOzs7Ozs7OztxQixPOzs7K0I7K0I7OEI7OztxQjs7cUI7Ozs7NkI7O2tCO2lCOzs7Ozs7UTtTLE87O1E7OztRO2dCOzs7Rzs7STs7O0ksWTs7STtLLE87O0k7Rzs7STs7K0IsOEI7O0ksVTtJLE87OztjOzs7OztlLFE7O2UsTTs7O2M7YTs7Rzs7SSxPOzs7YyxlOztlLE07O2M7YTs7Rzs7STs7Ozs7TTs7O0k7Rzs7STtJOzs7OztTOzs7VTtZOzJCO2U7VTtVO1MsTzs7Uzs7VTs7YTs7OEI7O1MsTzs7Uzs7O1UsVTs7O1U7WTtVLE87Uzs7WTs7NkI7O1MsTzs7OztLLE87O0c7O0k7Szs7TTtLLEksOEM7Ozs7O00sTTs7Ozs7Ozs7MEI7STtJLEksZ0Q7Ozs7O0ssTTs7O0c7O0k7STtLLHFCOzs7Ozs7O1M7Ozs7Ozs7O1M7O1U7O2E7OzhCOztTLE87Ozs7OztTLGtDO1M7O1M7Ozs7VTtTOztLLE87O0c7O0k7Ozs7OztPOzs7UTtRLGM7ZTs7a0I7Ozt3Qjs7Szs7O3lCLE87STs7Ozs7Szs7Ozs7Ozs7Yzs7OztLOztNLHVCO007Ozs7OztJLE87Rzs7STtJLE87Ozs7O2M7ZSxTO2UsRztnQixXO2UsWTs7Z0I7OztpQjtpQixZOzs7Ozs7ZSxXO2UsVzs7OztHOzs7STtJO0k7STtLLE07SztPOzs7VSxZOztXOzs7aUI7WSxVOzs7VztXOztVLE07Uzs7OztLLFU7OztLO2U7STtLLGM7SyxXO0ssa0I7SSxNO0c7OztLO0s7TSxPO00sSztLO007O1M7OztTLEcsb0M7Ozs7Ozs7O087Tzs7Ozs7Ozs7Ozs7OztLOztROzswQixpQzs7O0ssTztJOztLO00sTztNLEs7Szs7Ozs7Ozs7OztXO2E7OytCLGlDOztZOzs7Ozs7OztlLE87O3dDLHNCLG9COzs7O2U7ZSxPOzt3QyxzQixvQjs7Ozs7O2U7Ozs7Ozs7Ozs7Ozs7ZSxPOzs7Ozs7Vzs7O007O0s7STtJO0ssTztLLEs7SSwwQztJO0c7O0k7SztLO007Ozs7VTs7O2E7MkQ7YTtZOztpQjs7b0M7Ozs7O1M7O1Msa0M7UyxXOzs7aUI7OztJO0k7Rzs7O0ssVztLLFc7UTtNLE07SztLLE87STtJLEksVywyQixjOzs7O0s7Szs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7SyxHLG9CLE07Ozs7Ozs2QixPOzs7OzZCLE87OztTLE87O2tDLGtCLGU7Ozs4QixPOzs7UztTLGtCLE87O1M7Ozs7Ozs7Ozs7TSxrQixPOztNOztLO0k7cUI7SSxJOzs7d0I7OztJO0c7O0k7O2M7OytDO2M7YTs7Rzs7STs7Yzs0RDtjO2E7O0c7O0k7O2M7NkQ7YzthOztHOztJO0k7Ozs0Qzs7OztHOzs7O21CLE87SyxzQzs7Ozs0Qjs7OEI7Ozs7OztJOzthLHdDLFk7Rzs7STtJO0s7Szs7Ozs7Ozs7OztPLE07Ozs7OztHOztJO0k7Ozs7Ozs7VSx3QztVLFc7Ozs7Ozs7Ozs7Ozs7OztTOztLOztHOztJLFk7Ozs7SyxnQyxVOzs7Ozs7TSxjOzs7O08sc0MsTztPO1EsVztRO1MsVztTO1UsVztVO1csVztXLFMsTzs7Ozs7Ozs7Ozs7Ozs7Tzs7TTs7Szs7STtHOztJLGtCLE87O0ksSSxXLGtCOzs7Ozs7Ozs7TztPO08sTTs7Ozs7RzswQztHOztJLHlCOztHOzs7SSxTOzs7Szs7O007TTtLLE87Ozs7O0s7OztNO00sUztNLE07SyxPOzs0Qjs7OztJLHNCO2tEO0ksb0I7SSxPOzs7SSw4Qjs7Ozs7Ozs7O1E7O1MsVztTLEk7O1M7Z0I7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7OztJOzs7SSxTO0k7Rzs7STtLLHVCO0s7Tzs7Ozs7VTtTO0k7STtHOztJOztLOztLO0s7O0s7OztRLFc7UTtPO0s7STtJOztLOzZCOztJOztPOztROzs7UTs7Ozs7O1k7O2EsVzt5QjthOzthLE07Ozs7OztZOzthLFc7c0I7Ozs7OztPO087Ozs7O2lCOzs7Ozs7USxJLDBDO1E7O087O1E7UTtRLFM7UTs7ZTs7USxVOzs7OztTLEc7Ozs7O21COzs7bUI7Ozs7Ozs7Tzs7UTs7Ozs7a0I7Ozs7TztPO1E7MEMsbUM7OztZO1k7Ozs7Ozs7WTtXO1MsdUIsNEI7Uzt1QixrQixtQzttQyxrQztpQyx3Qjs7O1k7WTtXOzs7WTs7ZTs7ZTt1Qjs7Vzs7O1k7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7dUI7O1c7OztZOztlOztlO3VCOztXOzs7WTthLGtCO2E7O1k7WTtXOzs7WTthOzs7O2U7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O2U7OztlOzs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7OztlOzs7ZTs7O2U7OztXOzs7WSw0Qjs7O2E7OztZO1c7OztZOzs7OztZO1c7OztZO2E7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7ZTs7Ozs7Ozs7ZTs7Ozs7OztlOzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7ZSxNOztXOzs7Vzs7Uzs7Ozs7OztRLE07OztPO087Ozs7Ozs7OztVO1c7WTs7OztXOzs7Ozs7MEI7Ozs7Ozs7OztPOzs7UTs7O2lCO1E7VTs7MEIsbUM7O1EsYztRO1U7Ozs7YTtjO2UsUTs7OzthO2M7Ozs7Ozs7Ozs7O2M7Yzs7Ozs7OztjOzs7aUI7aUI7aUI7a0IsaUI7a0I7a0IsWTtpQjs7Z0I7O2E7WTs7YTthLG1DO1k7OztPOzs7Ozs7Ozs7Tzs7OztRO1E7Ozs7Ozs7O087O29COztTO1U7VSxPO1UsYztpQjtROztXOzs7YyxJLGlCLE87YyxPO2E7OztRLEk7Ozs7Uzs7VTtVLGtCO1U7UyxNOzs7O087Ozs7aUI7OztvQjtvQjttQjs7Ozs7OztPO1EsTTtPOzs7Vzs7WTtjOzs7OztpQjtrQixTO2tCLEcsc0M7a0IsWTs7O21CLEk7Ozs7cUIsTTs7OzttQixhOzs7OztrQjs7O1csTzs7O3FCO3NCO3dCOzswQyxnQzs7c0IsSztxQjtvQjs7VTtRO1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztXO1c7WTs7Ozs7Ozs7Ozs7Ozs7O1U7VztZOzs7Ozs7Ozs7O087UTs7VyxPOzs7cUI7cUIsTzs7b0I7OztVO1E7UTs7O1c7Ozs7O1ksVztZLEs7Ozs7O2U7Z0IsSztnQixLO2dCLE87Z0IsZTs7d0I7ZTtnQix3QjtnQixPO2U7Ozs7OztvQjtnQixvQzs7Ozs7Ozs7Ozs7Z0I7Z0IsRztpQjs0QztnQjtlO1k7Ozs7Ozs7NEI7Ozs7O1c7WTs7Z0I7Ozs7O1ksVTs7O2E7Yzs7O2M7YTtjLE07OztZLE07OztXO1k7YztnQjs7O21COzhCOzttQjtrQjs7O1k7WSxPO1k7OztlOzs7O1csTTs7O1E7Tzs7O1E7Uzs7O1M7O1M7VTtZOzswQixXLHlCOztVLE87VSxPOztVOzthOzsrQix5Qzs7VTtXOztjOzZDLHVCO1c7WTthO2U7O2dDOzthLFc7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7TztRO1E7VTs7OzthOzs7ZSxzQjtlOztpQixXO2lCO2lCLEk7Ozs7Ozs7Ozs7ZTtnQjtpQixPO2lCLFU7OztpQjtnQjtnQjs7OzthOztjLFk7Ozs7Ozs7Ozs7a0I7bUI7cUI7Ozs7Ozs7bUIsTzttQjtxQjs7O3dCO21DOzt3QixrQjt1Qjs7bUI7bUIsWTtrQjtpQjtjLGdCO2M7ZSxXO2UsUTtlLE87ZSxVOzs7Ozs7Ozs7Ozs7O2UsRztnQixTOztnQjs7O29COzs7Ozs7Ozs4Qzs7bUI7aUIsTztpQixXOzs7Ozs7Ozs7O29CLG1CO3FCO3FCO3NCO3NCOzs7eUY7O29CO3FCLG1EO21COzs7b0I7OztvQjtxQjtxQjttQyxzQzttQjs7OztrQixNOzs7Ozs7Ozs0Qjs7OzttQjs7cUI7Ozt3Qjt3QixpQjt1Qjs7O3NCOzs7eUI7d0I7O29CO3FCOzs7Ozs7a0IsTTs7O2lCO2tCOzs7OztpQixjOzs7Ozs7OztrQixhOzs7aUM7a0I7bUIsZ0I7bUI7O2tCO21COzs7Ozs7O21CLGU7Ozs7bUI7Ozs7Ozs7O2dCOzs7Ozs7OztjOztZOzs7Tzs7Tzs7O1E7VTs7OzRCOzRCLGdDO1E7Ozs7TztTOzt1Qiw0Qzs7UTs7Tzs7Ozs7aUI7Ozs7Tzs7O1E7Ozs7O087OztPLE87USxNO087UTtVOzs0QixPLDJCOztRLFc7Ozs7VTt1QztTO087UTtVOzsrQiw2Qzs7O1E7UTtjLHdDLFk7Tzt1Qzs7O087OztPOzs7UTtRLGU7TztRO1MsTztTLFU7UyxPO1MsVTs7Ozs7Ozs7Uzs7OztVLE87VSxVO1UsTztVLFU7Ozs7Ozs7OztZOzthO2E7O1k7Ozs7UyxNOztRLE07Ozs7O1E7O1M7Vzs7NEI7O1M7VywyQyxjO1MsTztTLGtCO1MsTTtTO1E7Ozs7O2tCOzs7Ozs7TztRLE07O1E7O1M7Vzs7NkIsMEM7Ozs7O087OztTO1MsTTs7Ozs7Ozs7O087UTs7Uzs7O1U7VSxNOzs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7OzRDOzs7UTs7UyxPO1M7Vzs7OztjLFc7YyxPO2E7Ozs7Tzs7O1E7O1c7O1E7UTs7Ozs7YTs7Ozs7OztVLFc7VTs2QjtTOztPOzs7Ozs7VSxNOzs7Ozs7TztjO1E7O1csTzs7O3FCOztvQjs7VTtPO1E7O1MsVzs7O1k7YSxROzs7WTtZLEk7Ozs7O2E7YyxVOzs7YTs7OztnQjttQztlO2E7OztZO1c7UyxvQjs7Ozs7O1E7UztXOzs7YyxJOzs7OztlO2dCO2tCOztvQyxvQixjOztnQjs7Z0IsTTtlOztnQjtrQjtpRCxZO2dCOzs7O2tDOztvQixLO3FCO29COzs7OztnQjtlLE07Ozs7YzthOzs7OztRLE07Ozs7Ozs7YTs7Z0I7TzttQjs7O1E7VTs7aUMsdUI7OztRO087Ozs7O2lCOzs7O087OztROzs7USxXOzs7TztPOzs7Tzs7OztROzs7O1E7a0M7UTs7Ozs7O087O1EsTTs7O087Ozs7O2lCOzs7O087O1EsTztRLGE7Ozs7VTt5QztTO087UTtVOzsyQiwrQzs7UTtPOzs7OztpQjs7OztPOzs7OztRO087UTs7UztTO1E7UTs7Ozs7Ozs7O087O1E7Tzs7Tzs7O1E7UTtPOztPOzs7O1E7UTs7OztpRzt5Qjs7TztPOztPOzs7Ozs7O1E7O1E7OztnQzs7O1MsTTtROztTLE87UyxPO1MsVzs7O3VDLGU7Ozs7OztPLEksaUQ7Tzs7Ozs7aUI7Ozs7Tzs7O1E7OztROztxQztRO1EsTztPOzs7Ozs7Ozs7Tzs7Ozs7UTs7Ozs7O087Ozs7Ozs7OztPOzs7UTtVOzs7YSxJOzs7Ozs7Ozs7Ozs7b0IsSSxTOzs7OztxQjs7d0I7O29ELHFCOzs7cUIsTTs7O29CO3FCLFE7Ozs7OztvQixJLFc7Ozs7OztxQjtzQixPO3NCLE87O3NCO3FCO3FCOzs7O29CO3FCLFE7Ozs7Ozs7Ozs7O21CLEksVzs7Ozs7b0I7O3VCOzttRCxxQjs7O29CLE07OzttQjtvQixRO29CLFc7Z0M7Ozs7OztjLEksVTs7Ozs7O2U7Z0I7aUIsTztpQixROzs7O2tCOzs4QjttQjs7O3NCLGE7Ozs7OztzQjs7Ozs7Ozs7Ozs7ZSxNOzs7YyxJOzthO1k7O2E7YSxPO1k7Ozs7USxXOzs7OztXO1ksTztZLE87WSxPO1c7Ozs7OztZLHNCOzs7O3FCOzs7cUI7dUI7Ozt1Qjs7Ozs7UTs7TyxNOztPOztRLFc7OztROztRLE07O08seUI7Tzs7Ozs7aUI7Ozs7Tzs7O1EsVzs7Ozs7TztRLE07O087USxRO1E7USxXO29CO1E7Tzs7Ozs7aUI7Ozs7O087OztVO1U7WTsyQyw4QjtXLE07O1U7Uzs7O087UTtTLFc7UyxPOzs7OztTLE07Ozs7O1E7Ozs7Ozs7O1k7YTtjLEs7YyxLO2MsTztjO2E7Ozs7OzthOztnQjs7NkMsc0I7OzthLE07Ozs7UyxTO1E7OztPLE07O087Ozs7USxLO1E7VTs7OztjO2MsTzthOzthO2M7Z0I7OzttQjtvQixROzs7bUI7bUI7O29CLFE7b0IsTztvQixTO29CLGE7b0I7OztvQjs7cUI7dUI7Ozs7Ozs7O21CO2tCOzs7OztjO2E7WTs7Ozs7Tzs7Ozs7Ozs7O087OztRLFc7OztRO087O087OztRO1E7Ozs7OzswQjs7O3lCOzs7Ozs7O087Ozs7Ozs7Ozs7OztROzs7Tzs7USxRO1EsYTs7OztVO3lDO1M7TyxJLGlEO087Ozs7O2lCOzs7O087OztRO1U7OzthLFk7YTs7YyxRO2MsTTthO1k7O2E7YSxPO1k7Ozs7Ozs7VyxXO1c7OEI7VTtPO1EsTztRLFc7Ozs7O1c7WTs7O1ksTztZO1c7Ozs7OztZOzs7ZTs7OztvQjtvQjs7bUI7O21CO29CO3NCOzs7eUIsTzt3Qjs7eUI7eUIsTzt3Qjs7O29CO21CO2tCOzs7O2EsTzs7O1k7YTs7O2EsTzs7Ozs7O1E7Ozs7Ozs7OztPLE07O087O1EsVzs7O087OztPOzs7UTs7Ozs7O2E7YTtZOzs7Tzs7Ozs7Ozs7O087O1EsTztRLE87USxXOzs7O1csTTs7Vyx5Qzs7WTs7YTthLE87b0I7OztvQjtXO1ksVzs7O1k7Vzs7Ozs7cUI7Ozs7TyxNOzs7Tzs7O1EsSztRLFc7OztRO087Tzs7Tzs7Ozs7UTtVOzs7YTs7Yzs7O2MsVTtjLFc7Ozs7O2E7O2M7OztlLEs7O2U7ZTtpQjs7Ozs7ZSxTOzs7OzthO2MsaUI7YztnQjs7YyxZO2MsWTtjO2M7Ozs7aUI7O2MsUTthLEk7Ozs7OztjLE07OzthOzs7Ozs7Ozs7Ozs7O1k7Ozs7Ozs7Ozs7Ozs7VztZO1c7Ozs7OztZO2M7OztpQjtrQjs7O2tCLFU7a0IsUztrQixVO2tCLFk7a0I7b0I7a0I7b0I7O2lCLEk7Ozs7OztrQixNOzs7aUI7OztnQjs7Ozs7Ozs7WTs7O1k7VztZO2EsTzthLE87WTs7Ozs7O1ksTTs7O1c7Vzs7UTs0Qjs7O1EsTztRLFE7UTs7Ozs7O1E7O1M7UztTO1M7UyxPO1E7O08sTTs7Ozs7O1EsTTttQzs7Ozs7Ozs7Ozs7OztXOztZLE87WTs7WSwwQjtZOzs7OztzQjs7OztXLE07Ozs7O08sTTs7OztJOzthO2E7WTs7YTsyQztZOzthOzs7NEQ7O2E7WTtHOzs7Ozs7STtLOztNO1E7OztXO1ksUTs7OztZLFU7Ozs7Vzs7O1U7Ozs7Ozs7O0s7TTtPLE87TyxPO08sVTtNO007TTs7Ozs7O00sTTs7SyxXO0s7YTs7OztJO0ssVTs7OztLLEs7SztPOzs7O1c7VyxPO1U7O1U7VyxROzs7VTtTOzs7O0s7SyxVOzs7Ozs7Ozs7TSxHLDRCLDBEOztLO2E7Z0I7TTtPO1EsTztlO087UTtRO1EsSTs7Ozs7UTs7Ozs7TTtPLGM7TztPOztnQjs7Ozs7OztPLE07OztLO00sVTs7O0s7SyxJOzs7O00sc0IsVztNLE07Ozs7O0k7OztJOztPOzsyQixxQzt5QixPLHdDO0k7Rzs7O0k7Szs7TTs7Ozs7WTs7Ozs7Ozs7Ozs7Ozs7SSxnQztJO0c7O0k7O087VTtVO0ksTzs7OztjO2UsTztlLFE7ZSxROzs7ZSxVOzs7ZSxPOztlLFc7ZSxHLDJDO2UsVztlO2UsWTs7Ozs7aUMsTzs7O2UsTztjO2MsVTtjO2M7YTtHOztJOztLLFE7OztLLFU7Ozs7c0M7Ozs7O0ksYzs7Ozs7Ozs7Ozs7Ozs7SyxNOztJOzs7STs7SyxNO0s7OztLOzs7Ozs7c0I7OztTOztVLFc7bUI7Ozs7OztJO0c7O0k7Ozs7O0s7SyxtQjtJLE87Ozs7YztlO2dCLE87Z0IsUTs7Ozs7OztlOzs7Ozs7Ozs7Ozs7OztlLE07Ozs7YyxHO2UsUztlO2dCO2dCOzs7OztpQixNOzs7Ozs7OztjO2E7O0c7Ozs7Ozs7Ozs7STs7Ozs7O0k7OztNO087O1E7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7UTs7O1k7YSxjOzs7Ozs7O1k7Vzs7WTs7Ozs7O1k7VzsyQixTO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Tzs7Ozs7Ozs7Ozs7Szs7OztLOzs7TTs7Ozs7O1c7WTs7Ozs7O2dCOzs7Ozs7OztXO1U7Ozs7Ozs7Szs7O1E7dUM7TztLOzs7Ozs7O0k7Ozs7O0s7Ozs7OztLLEs7TSxNO0ssaUI7SztNO007Ozs7O08sTTs7Ozs7OztPOztRO1E7O1U7Ozs7O0s7TTs7Ozs7O0k7Szs7Ozs7Ozs7OztVO1c7Ozs7Ozs7Ozs7Ozs7VztVO1M7Ozs7Szs7Ozs7Ozs7TSxPO00sVztLOzs7UTtxQztPO0ssVztLO007Tzs7O087Uzs7MEI7O087Ozs7SyxTOzs7O2tCOzs7TTtPO087OztLOzs7Ozs7Ozs7SSxNOzs7STtLO087O3lCLG9DOztLO0s7OztNO00sTTs7Ozs7Ozs7O0k7SyxTOzs7O0s7Ozs7Ozs7OztJO0c7O0k7Ozs7SztLLG1CO0s7Tzs7OztVO1c7YTs7OztnQjtpQjttQjs7OztzQjt1QixJOzs7c0I7cUI7Ozs7O2dCO2lCO2tCLE87a0IsTztpQjs7Ozs7OztpQixNOzs7Z0IsZTtnQjtlOzs7OztXO3dDO1k7O3lDO1c7OztXLE07O1UsTTs7Uzs7Ozs7STs7OztNLHlCO007O007OztPLE87Ozs7Ozs7Szs7SztNO007TztTOzs2QixPLG1DOzJCLDhCO087Uzs7OzthOztZOztZOzs7YSxPO2E7WSx1QjtZO1c7OztPLE87Tzs7Ozs7Ozs7USxNOztNLE07OztJOzs7OztLO007OztNO2dCOztLLE87OzZCOztJO0k7Ozs7UztVLEs7VSxROzs7O1Usd0IsTztVOztTO1E7SyxHO007TyxPOztTOzsrQixPLDRCOzs7Ozs7Ozs7STtLOztLO0s7O0k7Ozs7SztPOzt5Qiw4Qjs7Ozs7Ozs7Ozs7O087UTtTLE87UyxVOzs7Ozs7O1csSztXOztZLHNCO1k7Ozs7Ozs7OztPO1E7c0I7Ozt3Qjs7Ozs7STs7Ozs7O0ssTztLOztLO0s7Ozs7Ozs7Ozs7Yzs7OztJO0ssVztLLE87SyxVOzs7OztLOzs7OztzQjtLOzs7UztVLEs7VSxPO1UsTztVO1UsVTs7VTs7MEI7Ozs7Ozs7O1M7OzBCOzs7Ozs7O1E7TTs7O007O1M7OztZO1ksTztXOztLO2M7SztNOzs7Ozs7Ozs7OztNOzs7O1U7Ozs7OztNO007TTtNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE07OztJOzs7Szs7O007TztPO087TSxNOzs7Ozs7Ozs7STtLLFU7Ozs7O0s7Ozs7Ozs7OztJOzs7Ozs7O08sdUI7Ozs7Ozs7Ozs7O0k7TztLLFc7SyxNOzs7STs7d0I7SztPOzs7O1U7VzthOzs7O2dCO2lCLFE7OztpQjs7Z0I7ZTs7Z0I7Z0I7Z0I7OzswQjsyQixPOzs7MkIsTzswQjs7Ozs7eUI7ZTs7OztVO1M7Ozs7O0ssVTs7SyxNO0k7OztLOztLLDBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxNOzs7O0k7SyxPO0s7Tzs7O1U7VTtTOzs7O0s7Ozs7Ozs7OztLLE07O0ksTTs7O0k7O087dUMsOEI7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssSztLLE87STtLO00sTztNLGM7Ozs7Ozs7Ozs7Ozs7OzthOztLLGtCO0s7O3VCLDZDO0s7O0k7STtJO0c7Ozs7Ozs7Ozs7O0k7SztPOzt5QixrQixZOztLO087STtLOzs7UyxXO1MsVztTLFk7OztpQjtXLFc7Vzs7O2Msa0IsUTs7ZSxNO2M7YTs7O1UsTzs7UyxPO1E7SztNO007TSxJOzs7OztNOzs7Ozs7O0k7SztPO0s7TztLOzs7Ozs7O3NCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Ozs7OztJLGtCO0ksTzs7OztjO2UsTTtlO2U7ZTtpQjs7OztxQjtxQjtxQixPOzs7K0I7K0IsTzs7OEI7O29COztvQjtxQjtxQjt1Qjs7OzBCOzs7OzJCOzZCOzs7Z0M7aUM7bUM7Ozs7c0MsTzs7cUM7aUM7aUMsVztpQzs7aUM7Ozs7O2lDO2dDO2dDOzs7Ozs7Ozt3Qzs7Ozs0Qzt5SDs0QzsyQzs7K0I7O2dDO2dDLE87OytCOzBCOzBCOzs7Ozs7Ozs7OzsyQixPOzBCOzs7Ozs7Ozs7eUI7O3FCO3VCOzt5QywwQixpQjs7cUI7dUI7OzswQjswQjt5Qjs7Ozs7c0I7dUIsa0I7O2tDOzs7cUI7c0IsOEIsVzs7OztvQixhOztxQixPOzs7K0I7K0I7OEI7O29CO29CO29CLEc7cUI7O3dCOzt5Qzs7cUI7cUI7O29COztrQyxPLGlCOzs7cUIsVztvQjs7O3VCO3VCLE87NEQ7O3NCOztvQjs7Ozs7bUI7Ozs7O2UsVztlO2lCOzs7b0IsTzs7OzhCOzs7Ozs7OytCO2lEOytCOzttRCxlO21ELGU7OzsrQjs7OztrRDs7Ozs7OEIsTzs7Ozs7Ozs7NkI7O21CO2tDO2U7YztlO2dCLE87K0I7Ozs7ZTtnQjtrQjtnQjs7bUIsWTs7bUI7O2dCO2tCOzs7cUI7Ozs7O3NCO3NCLFE7OztzQixNOztxQixtQjtxQjtvQjs7Ozs7O2U7Z0I7a0I7OztxQjtxQjtvQjs7Ozs7YztlO2lCOztrQzs7ZTtpQjs7a0M7Ozs7O2UsTTs7Ozs7OztlOzs7a0I7OzttQjtrQixPOzJCOzs7OytCOztnQzs7OztpQztpQyxPOzs7O2tDOzs7cUM7OztzQztzQyxvQjs7b0M7O2lDOzttQzt3Qzs7Ozs7Z0Q7OztpQztrQzs7OztzQzs7a0MsTztrQyxRO2tDLE87OztrQyxPO2lDOzs7Ozs7Z0M7OytCOzhCOztpQjs7ZSxPOzs7Ozt5Qjt5Qjt3QjtjO2M7ZSxrQyx1Qjs7ZTs7O2U7ZTs7Yzs7O2M7eUM7YTs7OztJOzs7SztPOzs7VSxXO1M7O0k7OztlOztrQjs7O3FCO3FCO29COztlLE87Yzs7Ozs7Ozs7YztjOzs7Ozs7OztjOzs7O2M7Ozs7YTs7Rzs7O0ksTzs7Ozs7YztlOzs7O2U7Ozs7ZSxPO2UsUztjO2tDO2M7YTtHOzs7Ozs7Ozs7STtLLFE7SztPLDJDOztLO087Ozs7VztXOzs7YyxvQjtjLGM7YTs7O1c7VyxPOzs7cUI7cUI7O3FCLHlCO3FCOztvQjs7O1U7O1UsOEI7VTtXO2E7OztnQjtpQjttQjs7cUMsTyw0Qjs7aUI7aUIsa0I7aUIsVzs7OztpQixPOzs7OzsyQjs7OzBCOztnQjtpQjttQjtpQjs7O2lCOztnQjtpQjs7O29CLFk7Ozs7c0I7Ozs7O3VCLE87Ozs7OztvQjtvQjs7bUI7OztnQjs7O21CO21COzhCOzs7O2tCOztnQjtlOztnQjtnQjtnQixPOzt1QyxxQzs7ZTs7Ozs7O1c7VzthOzs7Z0I7OztpQixPO2dCO2U7O1U7eUMsTyxpQjs7O29ELGU7OzBELGU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVO1c7VzthOzs7Z0IsTzs7Ozs7MEI7MkIsTzsyQixPOzBCOzs7MkI7NEIsTzs0QixPOzJCOzs7Ozs7OzBCO3lCO2U7O1U7VyxxQjt5RDtXOzs7O1c7OztnQjs7YSxNOzs7O2U7OztrQixzQixPO2tCLE87OzRCO2lCOzs7Ozs7O1U7VztXO1c7YTs7O2dCLE87Ozs7OzBCLGlDOzBCOzJCOzJCOzJCLE87MEI7Ozs2Qjs4QixLOzhCLE87OEI7OEI7NkI7Ozs7NkM7c0Q7OzhCOztpQzs7aUM7O2tDLE87aUMsTztnQzs2QixPOzs7O3VDOzs7Ozs7O3VDLFc7dUM7Ozs7c0M7NEI7OzBCO3lCO2U7OztXO2E7OztnQjtnQjtnQjs7aUI7aUIsUTs7aUI7OztrQjtvQjs7O3VCO3NCOzt1Qjt1QixPO3NCOzs7a0I7b0I7Ozs7O3VCO3NCO2lCOztnQjs7bUI7Ozs7O3NCO3NCO3FCO2dCO2U7Ozs7OztXO1ksVTs7O1c7Ozs7NkIsTyx5Qzs7VTs7YTs7O2dCO2dCO2U7OztVOzs7YTthLE87Ozs7O3VCO3dCO3dCLFM7dUI7dUI7c0I7WTs7O1U7Ozs7O2tCOzs7cUI7Ozs7O3NCLE87cUI7b0I7O1M7Ozs7O0ssSTtLO087OztVO1U7Uzs7O0k7Szs7O1Esb0I7Ozs7WTs7K0M7O1EsTTtPOztJOzs7TztPO007O0k7STs7O0k7Szs7eUIsZTt5QixlOzs7Ozs7OztJO0c7O0k7Szs7O0k7Rzs7STtLO087Ozt5Qjs7VTtVO1M7Szs7Szs7TTthO0s7O0k7Rzs7SSxPOzs7O2MsTzthO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7YyxtQjs7YzthO0c7O0ksWTtJLG1CLFE7Ozs7Ozs7SztNO1E7O1c7OzthOzs7ZTtNOzs7UyxPOzs7TTs7O08sTztNLFc7O0s7O0k7OztJLFc7OztLLE87STtJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7OztJLE87Ozs7O2M7Ozs7Ozs7O2E7O0c7O0ksSztLLE87STtLLE87SyxPO0ksTztHOztJOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87Ozs7Ozs7O1EsTzs7USxPOzs7USxPOzs7USxPOztRLE87Ozs7Ozs7Ozs7Tzs7OztRLE87TyxPOzs7Ozs7Ozs7OztPOzs7Ozs7O2lCLFc7aUIsTztnQjs7aUIsTztnQjs7Tzs7O1E7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsVztpQixPOztnQjs7aUIsTztnQjs7O08sTzs7O08sTzs7Ozs7aUI7O2tCLE87aUI7Ozs7Ozs7O2lCO3lCO2lCLHVCO2dCOzs7Tzs7OztROzs7Ozs7Ozs7Ozs7OzthLG9CLFE7OzhCOzs7Ozs7Ozs7Tzs7Ozs7OztrQjs7O2lCLE87Z0I7O2lCLE87Z0I7O087OztRLE87UTtVOzs7YSxtQjs7YTtZOztPOzs7Ozs7Tzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7aUI7a0IsTztrQixPO2lCLE87O2dCOztPOzs7Ozs7USxVOztRLGM7Ozs7OzswQjs7Ozs7UTtTOztZO1c7Uzs7UztTO1M7O2tCOztTLFc7UyxNO1EsTzs7Ozs7Ozs7OztPLFc7TyxPOzs7Ozs7Ozs7Tzs7OztROztXO1ksTztXLFc7VyxPOztROzJCO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOztROztXLFc7VyxPO1U7UTs7VzttQjtXLE87VTtPLE87OztPLHNCLE87TyxPOzs7Ozs7Ozs7O08sTzs7Ozs7aUIsTzs7Ozs7MkI7MkIsRzs0QixXOzRCOzs7Ozs7Ozs7OzRCOzZCLE87Ozs2QixPOzZCLE87NEI7Ozs7Ozs7OytCOzs7Ozs7OzsyQjswQjtnQjs7O087Ozs7O1EsWTtRLFM7TyxPOzs7OztpQixPOzs7Ozs7OzJCLFc7MkIsTzs7Ozs7Ozs7MEI7OzJCLFc7MkIsTzs7Ozs7Ozs7MEI7OzJCLE87OzBCO2dCOzs7O08sTzs7O08sTzs7Ozs7aUIsVztpQjtpQjtnQjs7OztPLE87Ozs7O2lCLE87Ozs7OzJCOzs0QixPOzJCOzsrQzs7MkI7MEI7Z0I7Ozs7TyxPOzs7OztpQjtpQjtnQjs7O08sbUIsTztPLE87O08scUIsTztPLE87O087OztRLE87USxPO08sTzs7O087OztRLE87TyxPOzs7Ozs7Ozs7OztPLE87Ozs7O2lCO2lCO2dCOzs7O08sTzs7O08sTzs7Ozs7aUIsTzs7Z0I7Ozs7TyxPOzs7TyxPOzs7OztpQjs7Ozs7OztvQjtxQixXO3FCLE87cUIsTztvQixPOzttQjs7b0IsTzttQjs7MkI7Ozs7Ozs7Z0I7OztPOzs7USxPO08sTzs7Ozs7Ozs7aUI7OztPOzs7USxPO08sTzs7Ozs7Ozs7aUI7OztPOzs7OztROztXO1ksTzs7WSxXO1ksTzs7O1csVztXLE87Ozs7Ozs7TztRLDRCOzs7USxPO08sTzs7Ozs7Ozs7aUI7O3FDOzs7Ozs7Tzs7OztRLE87TyxPOzs7Ozs7Ozs7Ozs7TyxzQixPO08sTzs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7TyxxQixPO08sTzs7O087OzJCOzs7O2E7OzsyQjs7MkI7OzJCOzsyQjttQzs7TyxPOzs7Ozs7Ozs7TyxzQixPO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOzs7UTs7O1csTzs7USxPO1EsTztPLE87Ozs7Tzs7Ozs7OztpQixPOztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsTzs7Z0I7O2lCLE87Z0I7OztPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7O087OztROztXLFc7VyxPO1U7UTs7Vzs7O1k7WTtjO1csTzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7OztpQjs7O08sc0IsTztPLE87Ozs7SSxPOzs7OzZCLDJCO0c7Rzs7O007O087O3FDOztNO0s7Ozs7STsyQjtHO3NDLGtDOytCLDJCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOztJOzs7USxNO087SSxvQjs7Ozs7O0k7SyxPO0ssTztLLE87SSxXO0c7cUIsc0MsWTs7O0k7SyxROzs7O0ssTTs7Ozs7OztrQjtHOztJO0ksTztHOztJLFc7STtHOztJLFc7STtLLFE7SyxRO0ksdUI7SSxNOztHOztJO0k7OztNOzs7OztHOztJO0k7Ozs7O1E7O1E7Ozs7O1M7USxPOztHOztJO0ssTTs7O0ksTTs7Rzs7STs7SyxNOzs7O0ksTTs7Rzs7SSxJLDBEOzs7OztLOztHOzs7STtLO0s7Ozs7OztLOztHOztJLFk7O0ssTTs7SSxJLG1EOzs7Ozs7OztRLE07Ozs7UTs7O1E7OztHOztJO0ssTTtLO0ssUTtLO0ksSTs7Ozs7SyxNOztJO0c7O3FCLE8sa0M7STtLLFk7SztLLE87SyxNO0ksTzs7Ozs7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7Ozs7O2U7YztjOzs7aUI7OztrQixVOzs7aUIsRztrQixNOztpQjtrQixVOzs7a0IsTztpQjtpQixXO29CO2tCO21CLE87bUIsTztrQixNOzs7aUI7a0I7b0I7Ozt1Qjt3QixNO3dCO3VCLEksc0M7Ozs7Ozt3QixNOzs7c0I7OztrQjtpQjtpQjs7aUI7Ozs7O2tCLE87aUI7aUI7a0IsVztrQjtpQixJOzs7O21CLE07Ozs7aUI7O29COzs7Ozt1QixPOzs7O3NELDhCOztrQyxPOzs7OzJELGEsa0I7aUM7aUM7Ozs7b0M7OzhDOzhDOzhDOzhDOzZDOzs7Ozs7OztvQzs7OEM7K0MsTTsrQzs4Qzs4Qzs2Qzs7Ozs7Ozs7b0M7OzhDOytDLE07K0M7Ozs7K0M7O2dELGM7K0M7K0M7Z0QsTTtnRDtnRDs7O2lEOzs7b0QsSSxNLHFDO29ELEk7Ozs7OztxRCxNOzs7Ozs7bUQ7OytDOzs4QzsrQyxNOytDOzhDOzhDOzZDOzs7Ozs7b0M7OzhDOytDOzs7OEM7NkM7OztvQztvQzs7O29DLE07K0Q7Ozs7O3NCO2lCO2lCO2tCO2tCO2lCOztpQjs7OztrQixNO2tCO2tCO29CO3VCOztrQjtrQjtpQjs7O2lCLE07NEM7OztpQjs7O2tCLFU7OztrQjtpQjs7YTtHOztJO0k7SztLLE87STs7Ozs7Ozs7OztJO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksSSxVOzs7O00sTTs7O0k7OztLO0ssTztLLGlDO0ksTztHOzs7STs7O0s7SztLLE87SSxZO0k7SyxROzs7SztPOzs7VTs7OztXLE87VztXO1U7Uzs7Ozs7SSxJOzs7O00sTTs7OztJO0s7SztLO0s7SztLOzs7Ozs7Ozs7O0s7Tzs7Ozs7VSxPOzs7b0I7Ozs7Ozs7OztxQjtxQjtvQjtxQixPO29CO29COzs7Ozs7O3VCOztpQzs7O2lDO2lDO2lDO2tDLGM7a0MscUI7a0Msb0I7a0M7b0M7a0M7b0M7aUM7Ozs2RDs7O3lDO21DOztxRDttQzs7eUM7bUM7MEQ7bUM7Ozs7a0M7bUMsTzttQyxjO2tDO21DLE07OztpQztrQztvQztrQztvQztrQztvQzs7O3VDOzs7Ozt3Qzt3Qzt3QyxLO3dDO3dDLFM7dUM7c0M7Ozs7Ozs7a0M7b0M7Ozt1QyxzQjtzQzs7OztrQzs7bUM7bUM7Ozs7Ozs7OztpQztrQzs7Ozs7Ozs7O2tDO2lDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7d0I7O2tDOztxQzs7O3dDLE87dUM7cUQscUM7a0M7Ozs7dUMsVzs7Ozs7b0M7O3FDO3FDO3FDLEs7cUMsUzs7Ozs7Ozs7Ozs7Ozs7O2tDO21DOzs7Ozs7Ozs7bUM7a0M7Ozs7Ozs7OztpQzs7O3VCOztpQyxHO2tDLE07Ozs7Ozs7aUMsRzs7bUM7OztrQyxNOzs7Ozs7O2lDOztvQzs7O3VDLE87c0M7O2lDOzs7O3NDLFc7Ozs7O21DOztvQztvQztvQyxLO29DLFM7Ozs7Ozs7Ozs7Ozs7OztpQztrQzs7Ozs7Ozs7OztrQztrQztvQztrQztvQztpQzs7Ozs7Ozs7O2dDOzs7Ozs7Ozs7d0I7O2tDO21DLFE7bUMsTTttQztrQztrQzttQzttQztrQzs7Ozs7Ozs7O2lDOzs7dUI7O2lDLEc7a0MsTTs7O2lDLEc7O21DOzs7a0MsTTs7Ozs7Ozs7O3FDOztpQzs7O2tDO21DOztvQyxRO29DLE07Ozs0QztrQzs7O21DLGM7Ozs7O3VDO3dDLE87d0MsTzt1Qzt1QyxXO3VDOzs7dUM7OztnRDt3QyxNO3VDOzs7Ozs7bUMsTTs7Ozs7Ozs7bUMsTTs7Ozs7Ozs7a0M7bUM7bUMsZ0I7bUM7Ozs7Ozs7OzttQzttQztxQzttQztxQztrQzs7Ozs7Ozs7OztpQyxNOztnQzs7Ozs7O3VCOztpQztrQzs7O2tDO2tDO2lDOzs7Ozs7Ozs7Z0M7Ozt1Qjs7aUM7a0M7a0MsZ0I7a0M7a0M7aUM7Ozs7Ozs7OztnQzs7O3VCO3VCO3dCO3dCO3VCOzs7Ozs7Ozs7Ozt1QixNO2tEOzs7Ozs7UztLO0ssUzs7STtJO0k7O087OztVLFc7VSxPO1M7Ozt3QjtLLE07O0k7STs7SztPOzs7VTs7Ozs7Ozs7NEIsZTs0QixlO1c7VyxPO1c7Ozs7OztjO1UsTztTOzs7O087OztXO1c7O2M7Ozs7Ozs7O2U7aUI7OztvQjtvQjs7bUI7OztjO2U7O2dCO2tCOzs7cUI7cUIsTztvQjs7O2dCLEs7Z0Isb0IsZTtnQjtnQixPO2dCLDZCOztrQjs7OztjO2U7Ozs7O2M7Ozs7Ozs7O2U7Ozs7O2U7ZTs7OztjOzs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7ZTtlOzs7O2M7Ozs7OztlO2U7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7b0I7cUIsSztxQjtxQixPO3FCLFk7cUI7dUI7OzswQixPOzt5QjtxQjtxQjtvQjttQjs7O2M7Ozs7O2U7Ozs7Ozs7Ozs7aUI7Ozs7b0I7cUIsWTtxQjtxQjt1Qjs7cUIsWTtxQjt1Qjs7OzBCLE87eUI7cUI7b0I7bUI7OztjOzs7O2U7Ozs7VztVOzs7O0ssVztJOzs7OztJOzs7SSxPOzs7OztjOzthO0c7Ozs7O087OztRLFU7OztPLEc7USxNOztPO1E7VTs7MEIsTyw0Qzs7USxVOzs7USxTO1EsTztPO08sVztVO1E7UyxPO1MsTztRLE07OztPOzs7VTtVO1csVztXOzs7Ozs7VyxNOzs7Uzs7O087TztRO1E7Ozs7Tzs7Ozs7Ozs7Tzs7UTs7O087Ozs7UTs7OztTO1MsTztTLE87b0I7UyxPO1MsTztTLE87UyxrQjtTLE87UyxPO1MsYTtTLE87UyxPO1MsUztTO2U7UyxPO1MsTztTLE87UztXO1E7O087OztRO1U7OzthLE87O1k7O2E7YTs7YyxPOzthLE87WTs7Ozs7UTtVOzs7YTs7O2M7YyxLO2MsTzs7YyxXO2E7OztnQzs7Ozs7O1k7O1EsTztRLFE7UTtVOzs7Ozs7O1E7VTs7O2E7O1k7USxPO087Ozs7OztVOzs7Ozs7Ozs7Ozs7Ozs7TyxTO087OztRLGM7Tzs7Ozs7Ozs7O087USxNO087UTtVOzs7YTs7WTt5QixvQzs7Ozs7O1E7OztTLEc7O2M7O1E7UyxPO1MsTzs7Uzs7WTs7OEIseUM7O1M7VTs7YTs0Qyx1QjtVO1c7WTtjOzsrQjs7WSxXO1c7Ozs7Ozs7Ozs7Ozs7O29COzs7Ozs7Ozs7OztROzs7OztTO1M7VSxPO1UsVzs7Ozs7YTs7YyxtQjtlO2dCLEs7Z0IsTTtnQixNO3VCOzs7eUI7O2E7WTs7O2EsVztZOzs7O1csTTs7Ozs7OztxQjs7OztZOztjOzs7aUI7aUIsaUI7Z0I7Ozs7OztXLE07Ozs7OztVLGM7O1c7Ozs7O1k7MEI7VztZLGdCO1k7Ozs7Ozs7OztZO2M7aUI7Ozs7Ozs7OztTOztVOzs7Ozs7Ozs7O1E7UztXOzs7YztjO2E7OztTLFM7UTs7O087USxNOztPLE07OztPOzs7O1EsVTs7O1EsTztRO1U7OzthOzs7O2M7YyxLO2M7Z0I7OztrQyx1Qzs7YyxXO2M7OzJCOzs7Ozs7YztjLE87YyxPO2E7O3FCO1k7Ozs7O1E7O1Esb0I7Tzs7Ozs7Ozs7Tzs7O1E7VTs7OztjOzs7ZSxPO2M7YyxXO2MsTzthOzthO2M7Z0I7OzttQjs7OzttQjttQjtrQjtjO2dCOzs7bUI7bUI7bUI7a0I7YTtZOzs7USxROztRLE07O087UTs7OztRLE87USxPO087Tzs7Ozs7Ozs7O08sTTtrQzs7Tzs7O1E7UTtVOzs7O1U7UTs7Tzs7O0c7SSxNO0ksYTs7Ozs7STtJOzs7O1E7OztTO1c7YztjO1M7UztRLE87Ozs7O2dCLE87OztHOztJO3VCLE87STs7O0s7TztVO1U7SztLO0ksTztHOztJLEksaUI7Ozs7O3NCO007Ozs7O0k7SyxPO0ssSzs7SyxPO0ssTztLOzs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7SztPOzs7O1c7Ozs7WSxPO1c7VyxPO1U7O1U7OztXO1ksZTtZOzs7OzthLE07Ozs7VTtXLFk7VzthOzsrQixvQixjOztXO1U7OztXO1ksTTtZLE87Ozs7OztXLE07O1UsaUMsTztVO1M7Ozs7Ozs7SyxVOzs7SyxTO0ssTTtLLE87STtJO0ssVztLOzs7OztNLE07Ozs7O0ksUztJLEk7Ozs7SywyQjtLLE07O0ksVztJO0k7SyxVOzs7SyxPO0k7SyxXO0s7Ozs7O00sTTs7OztJLEk7Ozs7SyxrQjtLLE07OztJO0s7TSxPO007Szs7Ozs7O0ssTTs7O0k7SyxPO0ssZTtLOzs7Szs7O1E7Ozs7Ozs7Ozs7O0s7OztJOzJCO0ssUTtLLFE7SyxZO0ssVTs7O0s7Ozt3QjtLOztLLFU7Szs7O0ssTztLOzs7Ozs7O1E7Ozs7Ozs7OztLLE87SyxVOzs7STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7O0s7OztROzs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Ozs7Ozs7O0k7Ozs7STs7Ozs7Ozs7Ozs7Ozs7STtLLFE7SztPOzs7VTtXLE87VyxPO1csTztXLE87VTs7a0I7Ozs7Uzs7SztPOzs7O1U7VzthOzs7Z0I7Ozs7Ozs7O2lCLFE7aUI7Ozs7aUIsUTtpQjs7OztpQjttQjs7cUMsaUM7O2lCLGdCO2lCOzs7O2lCOzs7Ozs7Ozs7O2lCOztzQjs7aUI7bUI7Ozs7Ozs7Ozs7Ozs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXO2E7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCLE87Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7O3lCOzs7Ozs7VTtTOzs7SztPOzs7VTs7Ozs7Ozs7Ozs7OztXO1UsSTs7Ozs7VyxNOzs7VTtVO1U7VTtVO1U7VTtVLFc7VTtZOzs7ZSxrQjtlLE07O2M7O1U7VyxPO1csUTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTs7Vzs7OEIsTyx3Qzs7O2dCLE87ZTtVLE07Ozs7SyxRO0ksSSxjOzs7Ozs7SyxNOztJO0ssUTtLO087Ozs7Ozs7Ozs7VTtXO1ksTzttQjs7O1U7VyxPO1csTztXLE87VSxPOzs7O0s7Tzs7O1U7Ozs7Ozs7Ozs7OztXOzs7VyxrQjs7WTs7O2EsVTs7O2EsVTs7O2EsTztZO1ksSTs7Ozs7O2EsTTs7O21CO2EsTTs7OztXLE07O1U7Ozs7Ozs7Ozs7Ozs7O0k7RztHOztJO0k7SyxhO0s7O1M7Ozs7OztJO0k7Rzs7STtLLGE7SztJO0k7Rzs7STtLOzs7SztPO3VDLDZCO0ssVTs7O0k7STtHOztJO0c7O0k7Szs7O0k7WTs7O2U7Ozs7Ozs7O2M7OztHOztJO0k7O0s7O1M7Ozs7Ozs7O0k7SSxZO0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Ozs7UTtROzs7USxPOzs7a0I7cUM7O2tCO2lCOzs7OztROzs7OztpQjs7Ozs7Rzs7STtLLE87SyxPO0ssTztJO0c7O0k7Szs7Yzs7O0k7O3NCOztJO0c7O0k7O087O087ZTs7Rzs7SSxPOzs7OztjO2U7Z0IsTztnQixTO2UsTztjO2M7dUI7d0IsTzs7OzswQjswQjs7Ozs7Ozs2QixPOzRCOzs2QixPOzRCOzBCLE87OzswQixPOzs7Ozs7O29DLE87O21DOztvQyxPO21DOzswQjs7OzsyQixPOzBCLE87OzswQjs7MkIsTzswQixPOzswQixPOzswQjs7MkI7OzhCOytCLE87OEIsVzs4QixPOzs7MEIsTzs7OzBCOzsyQixPOzBCLE87Ozs7Ozs7OzBCOzsyQixPOzBCLE87OzBCOzsyQixPOzBCLE87Ozs7OzswQjs7MEI7MkIsTzsyQixPOzJCLE87MkIsTzsyQixPOzJCLE87MEIsTzs7Ozs7Ozs7Ozs7OzBCLE87Ozs7Ozs7b0MsVztvQyxPOzttQzs7b0MsTzttQzs7MEI7Ozs7MkI7MkI7Ozs7MkIsTzsyQjs2Qjs7MEIsTzs7Ozs7Ozs7OzswQjs7OzJCOzJCOzZCOzswQixPOzs7MEI7Ozs7MkIsTzswQixPOzs7Ozs7Ozs7OzBCLE87Ozs7Ozs7b0MsTzttQzs7b0MsTzttQzs7MEI7Ozs7MkIsTzswQjswQixXOzBCLE87Ozs7Ozs7Ozs7OzBCOzs7OzJCOzs4QixPOzs2QjsyQixPOzBCOzBCLFc7MEIsTzs7Ozs7Ozs7Ozs7OzBCLE87OzswQixPOzs7MEI7OzsyQjs7OEI7Ozs7K0I7OytCLG1COzhCOzhCOzhCOytCLE87OEI7OEI7K0IsTzsrQixPOzhCLE87Ozs7Ozs7Ozs7OzBCLE87Ozs7Ozs7Ozs7OzswQjswQjs7MkIsTzsyQjs2Qjs7OztpQyxPO2dDOzsyQixPOzJCLE87MEIsTzs7Ozs7Ozs7Ozs7MEI7OzJCLE87MEIsTzs7MEI7Ozs7MkIsTzsyQixPOzBCLE87Ozs7Ozs7b0MsTzs7Ozs7Ozs4QyxPOzZDOzs4QyxPOzZDO21DOzs7MEIsTzs7Ozs7OztvQyxPO21DOztvQyxPO21DOzs7Ozs7OzBCLE87Ozs7OzJCLE87OzswQixPOzs7OzBCLE87OzswQjs7MkI7MkIsTzswQixPOztzQjs7YTtHO0c7OztNOztPO2U7Ozs7c0M7OztxQzs7TTtLOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHO0c7STtJOzs7Ozs7Ozs7STs7d0Isc0I7O2lDOztPLE07OztPOztHOztJLFk7OzswQjs7O08sTTtlLE07O0c7O0ksWTs7OzBCOzs7TyxNOztPLE07O0c7O0k7SyxPO0s7Tzs2QztJLFM7STtJLE07Rzs7STs7SztNLFM7TSxPO0s7SyxVO0s7STtJO0ssTzs7O2UsVztlLE87Yzs7O0k7STtLLE87SyxROzs7Szs7O08sSztROzs7Ozs7OzJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksWTtJLE87O0c7O0k7SztPOzs7OztVO1M7OztLO0k7RztHO0k7OztRLE07Tzs7OztJOztPLDJDO0ksTzs7O2M7OztlLE87YyxPOzs7d0IsVzt3QixPOzt1Qjs7YTs7Rzs7STtLLFc7SztLLE07O0s7O00sbUI7TSxROzs7OztJO0ssWTtLLFM7SyxPO0ssTztLLFE7STs7O2M7OztJLFk7STtJLE87OztJO0k7OztROzs7OztRO1E7USxPOztRLE07O0c7O0k7SyxRO0ssVTs7OztLOzs7Ozs7O00sTztLLFc7O0s7OzttQjtNOzs7TyxPO00sVzs7Ozs7STtHOztJLEkseUI7STs7OztjOzs7Ozs7Ozs7Ozs7O2lCLE87O2M7OzthOzs7Ozs7Ozs7OztjLGlCLE87Yyx1QztjOztlOzs7Ozs7Ozs7Ozs7Ozs7bUIsTzs7OztjOzs7YTs7Ozs7O0c7OztLLFk7O007O08sTztPLFU7b0IsTztNOztPLE87Ozs7Ozs7Ozs7TSxNOztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7OztHOztJOzs7TTs7OztPOzs7TTs7O0k7Rzs7STtLOzs7Szs7O1M7O1U7Ozs7Ozs7Ozs7OztjLE87Ozs7c0I7OztXOzs7O1k7OztXOzs7O2E7Ozs7Ozs7O1k7Ozs7Ozs7OzthOzs7Ozs7OztZLE07Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7OzJCLFM7O0ksTztHOzs7Ozs7Ozs7Ozs7O0k7STttQjtLLHNDLFE7O00sVztNLFM7Ozs7Szs7Rzs7STs7Ozs7OztJLEksbUI7STtLO00sTzs7OztrQjs7OztPLEc7UTs7TSxxQjs7OztJOzs7OztNOztLO0s7Ozs7Ozs7Ozs7OztZOzs7Ozs7Z0I7bUI7YTtjLFE7YyxPO2MsTzs7O2MsTztjO2dCOzs7bUI7Ozs7Ozs7O21COzs7O29CLE87b0IsTzttQixPO2tCOztjOztpQjs7bUMsTywyQjs7Ozs7Ozs7Ozs7Ozs7O2MsTztjLFM7YztnQjtjLFk7YztnQjs7Ozs7Ozs7YztjOzs7O2E7Ozs7Ozs7O2E7Yzs7Ozs7Ozs7Ozs7Ozs7OztjO2M7Z0I7Ozs7YTs7Ozs7Ozs7Ozs7WSxHOzs7O2EsTTs7O1ksYztZOztZOzs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7UyxHO1U7VyxVO1c7YTs7Vzs7Vzs7OztXLFc7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxHO2M7ZSxZO2U7ZSxRO2U7ZSxVO2M7Yzs7Ozs7Ozs7YSxHO2M7ZSxZO2UsZ0I7Yzs7O2M7Ozs7OztTLEc7VTtXLFk7VztXOzs7OztXOzs7Ozs7VztZOzs7VTs7Ozs7Ozs7Ozs7Ozs7O1ksRzthO2MsWTtjOzs7Yzs7O2E7YztlLE87ZSxPO2U7Yzs7Ozs7YTs7OzthOzs7Ozs7O0s7OztLOztROzs7Vzs7OztNLE07OztLO0k7STtLO00sUTtNOzs7Szs7Ozs7TztROzs7USxVOztRLE07Tzs7O1E7O1EsTTs7Ozs7OztjOzs7O2dCO2tCOzs7cUI7b0I7O2lCO2tCOzs7Ozs7Ozs7O2lCLE07Ozs7O2MsTzthOzs7Ozs7Ozs7Ozs7Ozs7Yzs7O3dCOzsyQjs7NEMsd0M7Ozs7eUI7Ozs7Ozs7OzswQjsyQixjOzJCLFU7MkIsUTs7Ozs0Qjs7NkI7K0I7Ozs7NkIsTTs7Ozs7Ozs7Ozs7OzBCLE07Ozs7O3dCO3VCO2E7O087UTs7UyxvQixvQjs7Ozs7TztPLFc7Ozs7Ozs7Ozs7OztVO1csTTs7Ozs7Ozs7YTs7O2MsTztnQjthO2M7OztpQixrQjs7Ozs7O21CLGE7Ozs7O2lCLE07Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxJLGM7Ozs7YSxNOzs7Ozs7O2UsTztjOzs7VztZLE87O1c7WSxNOzs7OztlLE87Yzs7VTtXLE07VzthOztrQjs7O1U7O1csUTtXO2E7OztnQixPO2U7OztrQjs7O1U7O1cscUIsTyxvQztXLFE7VyxRO2tCOzs7Ozs7Ozs7Szs7SztLOzs7Ozs7SyxNOzs7OztJO0s7SztPOzs7VTs7OztVO1M7OztLLFE7SSxPO0c7Ozs7Ozs7Ozs7Ozs7OztJLFk7STs7O0ssTztLLE87SSxXO0c7O0ksWTtJOzs7SztLLE87SyxPO0ksVztHOztJLFk7SSxrQyxPO0ksSztLO0k7SSxXO0c7O0ksVztJOzs7SyxPO0ssTztJLFc7Rzs7STs7O087O1EsTztPOzsyQjs7OztROzs7UztTOztTOztVLE87VSxRO1UsVTs7Ozs7Ozs7OztPO087O08sOEM7Tzs7O1U7OzthO2E7OzthO2E7cUI7O1M7O087Ozs7YztPOzs7TyxNO2tDOztPOztRLFM7Tzs7Rzs7STtJO0c7O0k7STtpQjtLLHNDOzs7UTs7O1MsUTtTO1E7OztrQjtrQjtpQjs7Ozs7Ozs7UztVLFE7VTs7VSxPO1UsVTs7O1M7Ozs7O1E7O1MsVTtnQjs7O1c7Ozs7OztROztTLFU7UztXOzs7YyxPOzs7d0I7d0IsVzt1Qjs7YTs7UztXOzs7YztjLE87YTs7O1E7O2tCO2tCO2lCOzs7O1E7O1M7UyxVO1MsVTs7O1E7O1E7O1M7UyxVO29COzs7Ozs7Ozs7O1E7O1M7UztTLFU7UztTLFU7OztTO1EsTzs7O1E7O1MsVTs7O1M7Uzs7O2M7OzthOzs7USxPOzs7O0c7O0k7STtZOzs2Qjs7Ozs7Rzs7STtLO0ssTztLLE87SyxPO0ssTztLLE87SyxPO0k7O2E7Ozs7Ozs7O0c7O0k7Ozs7Tzs7Ozs7Ozs7eUI7Ozs7O3lCO3lCOzs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxRO2dCLE87OztLLE07OztJO0k7SSxPOzs7YztlOzs7Ozs7YTs7Rzs7STs7OztJO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7O0k7Ozs7STs7O0k7OzBCOzs0Qjs7NEI7OzRCOzs0Qjs7NEI7b0M7O0c7O0ksVztJLE87OztjO2UsTztlLE07ZTtpQjttRDtjLE87Ozt3Qjs7Ozs7d0I7dUI7Ozs7Rzs7STs7SztPOzs7VTtVLE87Uzs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROzs7Uzs7Ozs7SyxHLGlEOzs7O2E7TztRLG9CLGU7USxPO1E7VSx5QyxlO1E7OztPO08sVzs7d0I7O0s7TTtPO1EsTzs7Ozs7O087O1EsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7O0s7STtJLE87Rzs7SSxxQjtJO0c7b0QsTztHOztJO0k7STtHOztJO0k7STtHOztJLE87Ozs7O2MsbUI7OztpQjs7a0I7aUI7OztpQixvQjtpQjs7OztrQjs7O21COzs7bUI7O29CLFE7b0IsTztvQixPO29CO29CO3NCOzs7Ozs7Ozs7Ozs7OztpQjtpQjs7O2lCOzs7a0I7a0I7a0I7O2tCO29COzs7Ozs7Ozs7Ozs7OzBCOzs7MkIsVTs7Ozs7OzswQjs7OzJCOzs7OzswQjs7OzJCOzs7Ozs7Ozs7Ozs7MEI7OzsyQixVOzs7MkI7Ozs7dUI7d0I7Ozs7Ozt3QixVO3VCOzs7Ozs7a0IsVTtrQjtrQixPO2lCO29DOzs7Ozs7aUI7O2tCLFE7a0I7b0I7OztpQjs7O2lCLE07NEM7OztpQjs7a0I7a0IsTztpQjs7YTtHOztJO0s7Ozs7SyxPO0k7Rzs7SSxpQzs7SyxTO0ssZ0MsZTs7O1E7O1MsVTs7O1E7UTtTOzs7O1M7UTs7UTs7O1MsVTs7O1E7O3VCLDBDOztRO1M7Ozs7Uzs7OzhCLGdDOzs7UTs7Ozs7UTs7UyxVOzs7UTs7O1c7Ozs7Ozs7O1ksTTs7VztZLE07Vzs7WSxPO1ksUTtZO1c7VTs7UTtTOzs7O1E7Ozs7O1E7O1MsVTs7O1M7UTs7d0IsOEM7O1E7Uzs7OztTOzsrQixrQzs7O1E7Ozs7O1E7O1MsVTs7O1M7UTtRO1M7Ozs7UztROztROztTLFE7UztXOzs7OzZCLG1DOztTLE87UyxPO1M7OztTOztVLFc7OztTOzs7OztRO1M7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UyxVO1MsVzs7O1MsZ0I7UTtTO1UsTztVLE87Ozs7UTs7UztXOzs7Uyx1QjtRO1E7Uzs7OztROzs7Ozs7Ozs7OztROztTOzs7UztXOzs7YyxtQzswQjs7YzthOztROzs7VztXO1U7O1E7Uzs7OztTOzs7Yzs7OztlO2M7YTs7O1E7Ozs7b0I7O3NDLG1CLFU7Ozs7Ozs7O1E7O1M7Ozs7UTtRO1M7Ozs7UztROztROztTOzs7Uzs7UyxNO1E7O1M7UyxRO1M7Ozs7UTtRO1M7Ozs7UTs7Ozs7UTs7Uzs7O1M7Ozs7UTs7UTs7UztTO1c7Ozs7NkIsaUM7UztTLFU7UztTLFc7Ozs7O1E7O3lCOztRO1M7Uzs7OztTLE87UTs7Ozs7UTs7UyxXOzs7UTs7O1c7VztXOztVOztRO1M7Ozs7Uzs7O2M7Ozs7O2E7OztTLE87Uzs7OztlO2lELGdCOzs7O1E7O1E7O1MsVzs7O1E7OztXO1c7O1U7O1E7Uzs7OztTOzs7Yzs7O2E7OztTLE87Uzs7OztlO2lELGU7Ozs7UTs7O1E7USxpQzt1QjtRO1M7Ozs7UTs7Ozs7O1EsTTttQzs7OztJLDJCO0ksTzs7Ozs7YztlLG1COzs7O2U7ZTtjO2M7YTs7O0ksTzs7Ozs7Yzs7Ozs7ZSxPO2U7aUI7O2tDOztlLE87ZSxPO2U7O2tCO2tELFk7Ozs7ZSxRO2UsUTs7O2U7O2M7YTtHOzs7SyxPOzs7ZTtlLE87Ozs7eUI7eUIsTzs7d0I7O2M7OztJOztLLE87OztlOzs7O2dCO2tCOzs7O29DLHFDO2dCO2U7Yzs7O0k7STtLLE87OztlO2UsTzs7d0MsbUIsbUI7O2M7O0k7STtLLFE7SztPOzs7VSxvQixPO1UsTztTOztLO087OztVLE87Ozs7b0IsVztvQixPO21CO1M7OztLO087OztVO1csTztXLFM7Ozs7Vzs7Yzs2Qyw2Qjs7OztXO2E7OzRCLGUsa0M7O1U7Uzs7O0s7SztPO3NDLDhCO0s7STtJLEksK0I7STtJOztPOzs7VTs7Ozs7Vzs7O1c7O2M7aUQ7Ozs7Ozs7VzthO2dEO1U7Uzs7O0k7RztHO0k7OztJO0k7Ozs7MEI7Ozs7UztTOzs7Ozs7SyxNOztHOztJLEksc0M7Ozs2Qjs7O0c7Ozs7OztROztRLHFCLFE7USxPOzs7a0I7O3FCOztzQixPO3FCLE87OEI7aUUsdUI7Ozt3Qzs2Qjs7Ozs7Ozs7Uzs7Ozs7b0I7Ozs7Ozs7OztnQjs7OztJO0ksTzthOzs7Z0I7OztpQixTO2lCO2dCLE07O2U7O0c7O0ksTzs7O2M7O2lCOztrQixPO2lCLE87MEI7Ozs2Qjs4QixTOzhCOzZCLE07OzRCOzs7O2lCO3lCOzs7O0c7RztJO00sMEMsZTs7O0k7O0ssTzs7STtHOztJLGtCO0ksWTs7OztPLE07OztPO2U7OztrQjs7OztzQjs7Ozt1QixXO3NCLEc7dUI7d0IsVzt3QixLO3dCOzs7Ozs7Ozs7Ozs7Ozs7O3dCOzBCO3VCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7Ozs7O3NCOzt5Qjt5Qjt3Qzs7Ozs7OzRCLFE7NkI7Ozs7Ozt3Qjs7OztzQjtzQjs7Ozs7O3FCOztrQjtpQjs7ZSxNOztHOztJOzs7Ozs7Uzs7O1ksZ0MsTztZLFc7Vzs7SSxPO0c7OztLOztROzs7Vzt3QjtVOztLO0k7USxJLHVCOzs7OztxRDs7Ozs7OztLLEksVTs7Ozs7O2lDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0s7O1E7Ozs7OztLLE07OztJOzs7Rzs7STtnQjs7ZTtrQjs7STtHOzs7SSxPOzs7OztjOzthOzs7Ozs7Tzs7USxPO1E7USxnQjtRLFE7Ozs7dUI7Ozs7Ozs7O1MsVztTOzs7Ozs7O2M7Yzs7O1M7O1U7VztZLE87WSxROzs7Ozs7Ozs7Ozs7Ozs7Tzs7Tzs7UTs7Ozs7O1E7UTtRLE87Yzs7Ozs7OztROzs7UztTLFE7OztTOztVLE87VSxTO1U7VSxLO1UsVTtVO1k7Ozs7O1MsSTs7Ozs7Ozs7Ozs7Ozs7OztPO1E7OztRLE87Tzs7Ozs7Ozs7O087OztROzs7UTtROzs7OztPOzs7O087O1E7VTs7NEIsTyxvQzs7USxPO1EsVTs7OztXLE07Ozs7VzthOzs7Z0I7NkI7ZTs7WSxNOzs7Ozs7cUI7O29CO1c7WTtZLG9CO1c7WSxNO1c7Ozs7TyxNOzs7O08sTTtrQzs7OztPOzs7O1c7OztZOzs7WTtZOzs7Ozs7b0I7WTs7Ozs7Vzs7WTtZOzs7Ozs7O087UTs7O2dDO1c7O1E7O2E7O1E7OztPLE87OztpQjs7O2tCLGM7Ozs7O3FCLGdDOzs7O3VCLE07O3NCO3dCOzt5QixPO3dCOzs7OzsyQjs7cUI7c0IsTTs7cUIsVztxQjs7OztvQjs7Ozs7O3dCO3lCOzJCO3lCO3lCOzs7Ozt3QixNOzs7dUI7cUI7OzsrQjs7Ozs7O29CO3FCO3NCO3dCOzs7Ozs7Ozs7b0I7cUIsd0IsUTtxQjs7OytCOzs7O2lDOzs7O3NCOzt1QixRO3NCOztzQjt1Qjt3QixPOzs7Ozs7Ozt1Qjt1QixNOzs7Ozs7OztzQjt1Qjs7MEI7Ozs7Ozs7dUI7Ozs7dUI7Ozs7b0I7O29COzs7Ozs7OzRCOzs7b0IsTTs7O29CO3FCO3VCO3FCO3FCOzs7OztvQixNOzs7Ozs7Ozs7O0ksTzs7Ozs7Yzs7ZTs7Z0I7Ozs7Z0I7Z0I7ZTs7YztlOzs7ZSxRO2U7ZTtpQjs7Ozs7Ozs7Ozs7Yzs7O2lCOzs7YztlO2lCOzs7b0I7Ozt1Qjs7O3VCOzs7dUI7Ozs7Ozs7dUI7Ozt1Qjs7O3VCOzs7dUI7O21COztlO2M7YTtHOztJLGlDOzs7Szs7UTs7O1M7Vzs7Ozs2QixPLHVDO1E7O1E7OztTLFE7OztTLG9CO1MsTztTO1c7OztjOzs7OztjO2MsUztjOztzQjthOzs7OztROztnQjs7OztROztTLFU7OztRO1E7Z0I7UTs7Ozs7O1E7OztTLFU7Ozs7UTs7dUIsMEM7O1E7Uzs7O2dDLG9DOzs7UztXOzs7YztjLE87YTs7Ozs7Ozs7WTs7O2U7OztnQixjO2dCLFM7ZSxPO2M7Ozs7O1E7O1E7O1MsVTs7OztTO1M7Vzs7O2M7YyxPO2E7Ozs7UTs7O29DLGtDOzs7Ozs7UTs7UyxVOzs7O1M7UTtRO2dCO1E7Ozs7OztROzs7Ozs7UyxjO1MsVTtTO1c7Ozs7O2M7Ozs7Ozs7Ozs7OztjO2E7Ozs7UyxPO1MsUztTOzs7Ozs7UyxhO1E7OztTOztVO1k7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7d0I7OztROzs7Ozs7UTs7UztXOzs7Yzs7ZSxNOzs7Ozs7OztjO2E7O1M7OzthOzs7Z0I7Ozs7O2dCO2U7Ozs7UTs7O1c7VyxPOzs7cUI7OztVOztRO1M7Vzs7O2M7Ozs7Ozs7OztlO2lCOzs7OztvQjs7Ozs2Qjs7O21COzs7ZTtjO2E7OztTO1c7OztjOzs7Ozs7O2MsYTtjLG9CO2MsTzthOzs7Uzs7WSxZO1ksUztZLGtCLE87WSxPO1c7UztTLE07Ozs7O1E7UyxZO1M7O1M7O1k7OztlOzs7O2dCO2tCOzs7cUIsVztxQixlO29COztlO2M7OztTO1U7WTs7O2U7ZSxVO2U7Ozs7Z0I7Ozs7O2UsTzs7Yzs7O1U7WTs7O2U7ZSxVOztlLE87Yzs7Ozs7Ozs7O1E7OztZOzs7Ozs7Ozs7O2EsYTthOztZO2E7O2dCOzs7Ozs7Ozs7Ozs7OzthLE07OztZOzs7YTs7Ozs7OzthO1k7O1MsWTtTO1c7OztjO2MsTzs7b0MsK0I7O2E7O1M7Vzs7O2M7YyxPO2E7OztTOzs7YztjO2E7OztROztpQjs7bUMsbUIsVTs7Ozs7O1E7O1M7Ozs7UTtROztTLE07UTs7UTs7Uzs7Ozs7UTs7UTs7UyxXOzs7UztXOzs7YztjO2M7YztjOzs7O2UsUTs7O2UsUTtlLEk7OztjLE87YTs7O1M7OztjOzs7OzthOzs7UyxPO1E7O2lCOztpQyw2Qjs7Ozs7O1E7O1MsVzs7O1M7Vzs7O2M7YztjO2M7Ozs7ZSxRO2UsSTs7O2MsTzthOzs7Uzs7O2M7OzthOzs7UyxPO1E7O2lCOztnQyxnQzs7Ozs7O1E7O1M7UztXOzs7OztjO2E7OztTLFU7UztTO1c7Ozs7O1E7O3lCOztRO1E7OztRO3lDO3VCO1E7OztRLE07bUM7Ozs7STtLLFc7Szs7O00sdUI7TTs7Ozs7TTtLO0s7TTs7Ozs7Szs7YTs7O0k7SSwyQjs7SztNOzs7OztNO0s7Szs7OzthOztJO0ksMkI7OztJO0k7Rzs7RztJOzs7RztJOztHO0k7Ozs7OztHO0k7OztJLE87Rzs7STs7OEIsTzs7O087Ozs4Qjs7O21COzs7ZTs7Rzs7STtLO0s7O0s7O00sVTs7Ozs7O0ksVTtJO0k7Rzs7STtLOzsyQjs7O1E7O1EsTTtNO0c7O0k7SztPOzs7VSxPOzs7O29COztxQixRO29CO21CO1M7Ozs7Ozs7Ozs7Ozs7Ozs7O087UTtRLFU7OztRO1U7OzthOztnQjs7aUI7O2lCLE87aUIsVTtnQjs7Z0I7O2lCOztpQixPO2lCO21CO2dCO3dCOztZOzs7OztROztXOzs7YyxXOzs7Yzs7YyxNOztVOzs7O1c7OztjLFc7OztjOztjLE07O1U7OztNLEk7O0s7TTtROzs7VztXLEk7OzttQzs7O1csSSxXOzs7bUM7OzsyQjtXLFE7VztVOzs7Ozs7Ozs7O0k7OztPO087UTtTLE87UyxPO1E7Ozs7O1MsTTs7OztNOztJO0ssTztLLE87O0s7STtLO2lCOzs7Ozs7SyxNOzs7STs7O0k7Rzs7STtHOztJO0c7Ozs7Ozs7SztNOzs7OztLO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxRO0ssTztLLFc7SSxPO0c7O0ksaUI7STtLLFc7SztLO0k7STtJLE87Ozs7O2U7Z0IsTztnQixhO2U7Yzs7YztjOztlO2M7Ozs7Ozs7ZSxPO2UsSztlLE87ZSxVO2U7O2U7ZSxjO2U7Ozs7O2tCO21CLE87bUIsTztrQixPOzs7Ozs7aUI7ZTtlOztjLGtCO2MsNkI7ZTtnQixPO2dCLE87ZTtlO2dCO2tCOzs7Ozs7Ozs7OztlO2U7ZTtlLGM7O2dCO2lCLFM7aUIsTztpQixNO2lCO2dCOzs7ZTs7Ozs7O3FDOztlO2dCO2lCLE87Ozs7Ozs7Z0I7Z0IsTTs7O3lCOzs7OztjO2UsUztlO2lCOzs7Ozs7Ozs7OztjO2M7ZSxVO2U7YztjO2E7Rzs7SSxXO0ksTztHO3FDLHVDOztJO0c7O0k7O087OztVO1csVztXLE87VyxLO1csTztXLGtCOztXLE07O1UsVztTOztJO0k7SztPOzs7VTs7O1csUTtXLFE7VTtTOztLO087OztVO1UsTztTOzs7SztPOzs7VTs7O1csTztXLE87VyxPO1c7VTtTOztLLFM7SyxPO0ssVztLO087OztVOztXLEs7VyxPO1UsTztTOzs7SyxRLFc7SyxNO0ksRztZLHFCO007TSxNO3lCOztLO00sUzs7UTs7Ozs7Ozs7OztNLE87Szs7Szs7STtLO08sMkM7SyxPO0s7Tzs7O1U7VSxXO1M7OztLO00sTTtNO00sTztLOztJO0c7O0k7OztRLE87O1EsTzs7USxPOzs7Ozs7O1EsTzs7USxPOztRLE87Ozs7TyxvQixPO08sTzs7Tzs7USxPO08sTzs7TyxzQixPO08sTzs7TyxzQixPO08sTzs7TyxvQixPO08sTzs7Ozs7Ozs7OztPOzs7USxTO1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7USxTO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7OztPOzs7O1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7Ozs7Tzs7OztRLE87TyxPOzs7TztPO087O1EsTztRO1U7Ozs7YyxPO2E7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7TztPO087USxPO1E7VTtZOzs7O2dCLE87ZTs7O1EsTztROztXOzs7TyxPOzs7Ozs7Ozs7OztPLE87Ozs7TyxPOzs7TyxxQixPO08sTzs7TyxxQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7TyxrQixPO08sTzs7TyxvQixPO08sTzs7O08sTzs7Ozs7UTs7Ozs7Ozs7UztXO1MsVztTLHVCOztTLE87UztXOzs7UyxPOztTLE87UztXOzs7Ozs7Ozs7USxPOzs7Ozs7Ozs7OztPOzs7Ozs7USxxQjtRLFk7O1EsTzs7USxPO1E7VTs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O087O1E7USxPO08sTzs7Ozs7Ozs7OztPOzs7OztXLHlCLE87VyxPO1U7UTtRLE87TyxPOzs7Ozs7Ozs7Ozs7OztJLE87Ozs7NkIsMEI7RztHOzs7TTs7Tzs7cUM7O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksc0I7Rzs7Ozs7O0ssWTs7Ozs7Ozs7Ozs7TTtPLE07YTs7Ozs7OztJLGE7SSxxQixNO0ksTzs7O0k7STtHOztJLDhCO0c7O0ksOEI7Rzs7SSw4QjtHOztJOzs7OztJO0c7O0ksWTs7STtHOztJLE87Rzs7SSxZOztJO0c7O0ksWTs7STtHOzs7Ozs7Ozs7Ozs7OzsyQixxQjs7SSxVO0k7SztPOzs7VTtTOztLLE07SyxNO0ksTztHOztJLFk7O0ksRztLLE07STtLLGU7Szs7Ozs7O0k7Ozs7Ozs7Ozs7O0c7O0ksWTtJOztLO0s7STtHOytCLE8sbUM7O0k7SyxRO0ssUTs7O0k7OztlO0s7OztNLEk7SyxHLHFEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEOzs7O0c7O0ksTzs7O2MsTzthOzs7Rzs7STtJOzs7O1M7O1MsVTtTOzs7UTtLLFU7O2tCOztLO0s7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozt5Qzs7NkM7b0Q7Ozs7OztNLE87OztJO0c7O0k7Ozs7Ozs7Ozs7OztNOzs7OztJO0c7O0k7Ozs7Ozs7OztLOztJO0c7O0k7O2U7O21COzBCOztJO0c7eUIsbUI7RztJO0k7OzZCLDBDOztJO087SztJLE07Rzs7STtHO0c7STtJOzs7Ozs7Ozs7Ozs7OztJO0s7SztLLFc7O0s7Szs7d0IsTTs7Ozs7VSxNO1M7O1M7Ozs7O1U7Uzs7Ozs7OztXLEc7O1U7Ozs7O1c7VyxJO1U7Ozs7O3lCOztTOzs7O1U7VSxROzs7OztTOzs7OztVO1UsTTtTOzs7O3dCOztzQzs7Uzs7OztVO1U7WTs7O2U7ZTtjOzs7VTtZOzs7ZTtlO2M7O1U7Uzs7Uzs7OztVO1U7WTs7O2U7ZTtjOztTOzt3Qzs7UywyQztTOztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7UyxrQztTOzt5Qzs7Uzs7Ozs7VTtVO1M7OztTOzs7O1MsSSxXLGtDOzs7aUM7OztpQixNOzs7STs7SyxPOzhDO0k7O0ssWTs7Szs7SSxJLHNDOzs7NkI7OztHOztJLGtDLE87SSxXO0ksaUM7Rzs7Ozs7O08sTyxlOzs7Tyx3QixLO087O00sc0I7Ozs7O0k7Rzs7SSxZOztJLE87OztJOzs7TztPLE87OytCLE87Ozs7Ozs7TztPLE87OztpQjtpQixPO2dCOzs7Ozs7Ozs7O1U7VSxPOzs7OztPLE87OztPO087OztVO1UsTztTOztPOzs7VTtVLE87Uzs7Ozs7TztPOzt5QixvQixPLHNCOztPOzs4QixPOzs7TztPLE87OztPO08sTzs7O087TztPLE87OztPO08sTzs7O087TyxPOzs7TztPO08sTzs7eUIsTzs7O08sTzs7MkIsTzs7MkIsTztlOztJO0ksTzs7d0MsNkI7O0k7STs7Ozs7O1E7O1E7Ozs7UztXOzZDO1MsTztTO1EsTzs7Ozs7O1E7OztTO1c7OzZCLG9CLGdCOztTO1M7Vzs7NkIsbUIsVTs7UyxPO1EsTzs7O1E7O1E7OztTO1csMkM7UztXLDJDO1M7OztTO3NCO1EsNkI7USxPOztROzs7O1M7VywyQztTO1EsZ0I7USw4QjtRLE87OztROztROzs7O1M7UztXOzZDO1MsTztTO1MsTztRLE87O1E7Ozs7UztTO1MsTztRLE87O1E7Ozs7UztTO1M7UyxPO1EsTzs7UTs7O1M7UztRLE87O1E7OztTO1M7USxPOztROzs7OztTO1M7UyxRO1M7UyxPO1EsTzs7USx1QztRLE87O1E7Ozs7UztTO1E7aUI7Ozs7O3FDLE87O0s7TTtNLE87TTtLLE87O0c7O0ksTzs7O2M7YyxPO2E7OztHO0c7STs7Ozs7O29DLHdDOztJO0k7Ozs7Ozt5RDs7Ozs7Szs7Rzs7STs7Ozs7Ozs7Tzs7Ozs7UTs7Ozs7Tzs7SSxPOzs7STs7SyxPOzs7STs7O0ksSSxXOzs7O0s7TSxPO00sTztLLE87O0k7Rzs7STtHOztJO0c7a0Q7Rzs7STtHOztJO0ssTztLLE07SztJLEksVTs7OztLO00sTztNLE87SyxPOzs7STtHOztJOzttQixPO0ksb0IsTTtJOzs7O0k7SyxxQztLLGlCO0k7STtLLE87OztlOzs7OztnQjs7O2U7Yzs7O0k7O0s7OztRLEksVzs7OztTLEksVSxpQzs7O2dDOzs7O1E7OztRLEksVzs7OztTLEksVSxtQzs7O2dDOzs7O1E7O1E7O1E7Ozs7OztTO1E7O3lCOztROzs7Ozs7Uzs7O1M7UTs7UTs7Ozs7Uzs7O1M7UTs7UTs7O1M7Vzs7O2M7OztlOzs7YzthOzs7OztTO1E7Z0I7OzttQjttQjs7Ozs7O1E7O1E7Ozs7UztTO1c7OzRCOzs7UztXOzs0Qjs7UztROztROzs7OztTO1M7Vzs7OztjOzs7UTs7O1E7O1E7Ozs7OztTOzs7UztROztROzs7O1M7OztTO1E7O1E7Ozs7UztTO1E7O1Esa0M7UTs7USxrQztROztROzs7Ozs7Uzs7O1M7UztROzs7USxHO1MsTTtRLEksSSxPOzs7Ozs7UTs7UTs7Ozs7O1M7UztROztROzs7UztTO3dCLE8sc0M7UztXOzs7Yzs7OzswQixJOzs7a0Q7OzswQixPOzs7O2MsTzs7Ozt5QixJOzs7aUQ7Ozt5QixPOzthOzs7UztXOzt1QyxPLHdCOzs7UztROzs7USxJLEksTzs7Ozs7O1E7O0k7O0ssTzs2QztJOztLO007Ozs7O007SztJOzs7Szs7O0ssWTs7Szs7STswQixrQzsyQix3Qzs7O0k7Rzs7O0ssWTtLLE87STtJOztPLDBDLG1CO0k7RztHO0k7O21DLFc7Ozs7OztJOzs7Ozs7O0ssUztJOzs7STs7Tzs7Ozs7Ozs7USxNO087O2dCOzs7Ozs7OzBCOztPOzs7Ozs7USxNO08sc0I7O087Ozs7O1EsTTtPLHFCOztPLGtDLE07TztlOzs7a0I7a0I7aUI7Ozs7O08sYzs7Tzs7OztRLE07UTtVOzs7YTthLGM7WTs7O1E7VTs7O2E7YSxjO1k7O1E7TyxXOztPOzs7OztRLE07UTtVOzs7YTthLGM7WTs7TyxZOzs7TyxlOztPOzs7O1EsTTtPLFk7O087Ozs7USxNO08sWTs7Tzs7OztRLE07USxNO08sWTs7TyxrQyxNO08sWTs7TyxrQyxNO08sWTs7Tzs7Ozs7O1EsTTtRLE07TyxpQjs7dUMsaUI7O087Ozs7OztRLE07USxNO08saUI7O29DLFk7O3VDLGlCO2U7Ozs7b0IsTyxtQztJO0c7OztJOztLLEcscUM7O0k7OztJO0c7O0k7O087O087O087O087O087ZTs7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087O087O087O087O087O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJLDRDO2dEO0ksTztHO3NDLHVCOztJO3NCOzs7Ozs7OzswQjs7O21COzttQyxnQjs7Ozs7Ozs7OzBCOzs7Ozs7O0k7Rzt5Qiw2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7O3FCLE87Tzs7O1E7O1csTzs7O3FCLE87O29COztVO08sTzs7Ozs7Ozs7Ozs7cUIsTztPOzs7UTs7VyxPOzs7cUIsTztvQjs7VTtPLE87OztPLE87Ozs7STs7Tzs7Tzs7TztlOztHOztJOztPOztPO2U7O0c7O0k7OztROztRLE87Z0IsTzs7SSxtQjtJLE87OztJOzs7UTs7USxPO2dCLE87O0ksbUI7SSxPOzs7STs7O1E7O1E7Z0I7OztJO0c7O0k7O2tCOztrQjswQjs7SSxPO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtJLE87Rzs7STs7ZTtlOzs7O2lCO2lCOztxQixPOzs7TyxPOztHOztJOzs7O007UTs7eUI7O087OztPLGM7TztPOzs7VTtVLE87Uzs7TyxPOztNO00sTzs7O0k7Rzs7STs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7OztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTztnQixPOzs7Ozs7NkI7Ozs7Ozs7Ozs7Ozs2Qjs7NkI7OzZCOzs2Qjs7OEI7OzhCOzs7OztXOztXOztXOztXOztXO21COzs7O1E7OztROzs7USxPOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7USxPOzs7UTs7O1E7a0I7a0I7Ozs7O08sTzs7O08sTzs7Ozs7USxPOzs7O08sTzs7O087Ozs7UTtPLE87O087Ozs7UTtPOzs7Ozs7O08sTzs7Tzs7O1E7Tzs7Ozs7OztPLE87OztPLE87OztPOzs7Ozs7O08sTzs7O08sTzs7O08sTzs7TyxrQixPO08sTzs7O2lCO2lCOzs7aUI7aUI7OzJCOztPLG1CO08sTzs7O08sTzs7O08sTzs7NkI7Ozs7UTtRLE87O087TyxPOzs7O1E7USxPOztPO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOztPLG9CO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOzs0Qjs7NEI7O087OztRO1E7TyxPOzs0Qjs7NEI7OzRCOzs7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7O1E7Ozs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0ksUzthOzs7OztROztROztROzsyQjs7O087O087Ozs7Tzs7Tzs7YTtzQjtHOztJOzs7Z0I7Z0I7Ozs7STs7O1EsTzs7USxPOztRLE87Z0I7OztJLE87OztJOztPLE87O08sTztlOzs7Ozs7Ozt5QixPOzs7USxPOzswQjs7UTs7Uzs7WSxPOzs7c0IsTztxQjs7VztRLE87Ozs7Ozs7Ozs7Ozs7OzsyQjs7Ozs7O1E7OztTOztZO1ksTzs7O3NCOzt1Qjs7O3NCLE87Ozs7Ozs7O3FCOztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZLE87OztzQixPO3FCOztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZO1k7OztlOztnQjs7O2UsTztjOztZOzs7ZTs7Z0I7OztlLE87Yzs7O3dCOzs7YTs7O1ksTztXOztRLE87Ozs7Ozs7OztZO1k7OztlOztnQjs7O2UsVztlLE87Yzs7NEI7OzthOzs7WSxPO1c7USxPOzs7UTs7O1M7O1ksTzs7O3NCLE87cUI7O1c7USxPOzs7Ozs7OztRLE87Ozs7Ozs7O2tCLE87Ozs0Qjs0QixPOzsyQjs7aUI7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O1E7Ozs7O1M7O1ksTzs7O3NCLE87cUI7O1c7UztRLE87Ozs7Ozs7Ozs7OztRLGtDOzs7Ozs7Ozs7OztROzs7UyxPO1E7Ozs7Ozs7O1MsTztRLE87Ozs7Ozs7Ozs7Ozs7OztRLE87OztLO007O1M7OztZOztlOztlO3VCOzs7WTs7WSxNOztRO007Szs7Ozs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsTzs7TTtNOzs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7O0ksTzs7Ozs7Ozs7Ozs7SztNLE87OztnQjtnQixPOzs7Ozs7OztlOztLO0s7Szs7O1E7Ozs7UztRO1E7Tzs7SyxPO0k7SSxPOzs7Ozs7Ozs7Ozs7O3FEOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7TTs7O007Szs7TSxZO2tCOztNO087USxVOzs7OEI7Tzs7Ozs7TztlO087O0s7O007O1M7OzJCLG9CLFc7O00sTztLOztNO087Uzs7O1k7WTtXOztPLE87TTs7O1M7UztTOzRCOztTO1M7UTs7TTtLO21CO0s7OztrQztrQztJO0k7Ozs7O3NCOzs7aUMsWTs7Ozs7O1M7UztRO1E7O1M7OztROzs7Ozs7Ozs7Uzs7O1M7OztROztTOztVO1k7UyxjO1E7O1M7Ozs7VTtZOztVLEs7OztTOzs7OztVOztXOzs7O1c7Ozs7VSxHO1c7WTtjOztZO1k7Ozs7YTthO2E7Ozs7OztZO2E7O2lCOzs7Ozs7bUI7OztXO1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7VztZLE07WTtZOzs7O2E7YTthOzs7OztXO1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7VztZLE07WTtZOzs7O2E7YTthOzs7OztXO1cseUI7Ozs7YTs7YzthO2E7Ozs7Ozs7O3NCOztTOzs7aUI7OztRO1EsSSxJLHNDOztTLEksZTs7Ozs7OztZO1k7Ozs7Ozs7VyxHLHVCOzs7OztVLE87OztTOztVLFU7VTtXOzs7OztXO1c7O1U7VTtTO1M7O1U7Ozs7VTtVO1MsSSxXLHVDOzs7OztVO1csTTtVOztXO1c7Ozs7OztZOzthLEksdUIsTzthOzs7Ozs7Ozs7VTs7O1c7O1k7WTtZO1k7Ozs7YTtjOzs7YztjOzs7Ozs7O2E7YTthO2M7O2M7YTs7OzthOzs7Ozs7O1k7YTthO2E7YTthOzs7Ozs7OztnQjtpQjs7Ozs7Ozs7Ozs7O2lCOztpQjtnQjtnQjtnQjtpQjs7aUI7Z0I7Ozs7O2dCOzs7OztjOzs7Ozs7Ozs7Ozs7OztZO2E7YTthO2E7YTs7OztjO2U7Ozs7OztlOzs7Ozs7O2dCO2dCO2U7ZTtlO2dCOztnQjtlOzs7Ozs7Yzs7Ozs7Ozs7OztXLEksaUM7Vzs7Ozs7OztXOztZOzs7Ozs7OztZLEc7YTtjOzs7Ozs7Ozs7Ozs7Yzs7YzthO2E7YTtjOztjOzs7Ozs7O1k7YTs7O1c7WTs7Ozs7O1U7VTs7UTs7Uzs7O1U7OztVO1U7Ozs7Ozs7UztTO1MseUIsd0I7UztROztTO1Usb0I7VSxPO1MsTztROztTLFc7UyxPO1E7O1MsVztTLE87UTs7UyxrQztTO1UsTTs7VTtVLE87OztTO1U7VSxPOztTO1U7OztXOzs7Ozs7OztXO1k7YTthOzs7WTs7VztZO1k7OztXOztVOztvQyx1QztvQyxzQzs7OztZLEksb0I7WSxxQjs7VyxVO1csTzs7OztxQjtzQjtzQjtzQjtxQixxQjtvQjs7O3FDLHNDO3FDLHVDOzs7O1csSSxzQjtXLHNCOztVLFU7VSxPOzs7O29CO3FCO3FCO3FCO29COzZCO21COztTOztVOzs7Ozs7VTtVOzs7Ozs7O2E7YztjOztjLE07YSxPOzs7VztZO1k7O1ksTTtXLE87OztTO1U7VztXOzs7Ozs7O1M7VTtVOzs7Ozs7OztTOzs7VTtVLE07c0I7O29DO1M7O1UsZTtVLEk7UztVO1M7UyxJOzs7O1c7Ozs7Ozs7Ozs7Ozs7OzRCOzs7Ozs7ZTtnQjs7Ozs7O2dCOzs7Ozs7Ozs7OzhCOzs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7O2E7YztlOzs7OztjO2M7Yzs7YTs7Ozs7Vzs7Ozs7Uzs7VTtVO1UsSTtVLE07VTtVO1U7VTs7O1M7VTs7VztZOzs7O1c7c0I7Ozs7OztZOztZOzs7Ozs7O2dCO2U7OztXOzs7Vzs7Ozs7WSxNO1ksTTtZOzs7O2E7Yzs7OzthO2M7ZSxNOzs7Ozs7O2M7Yzs7Ozs7OztlO2U7Ozs7O2E7Ozs7O1c7WTtZLE87O1c7OztjO2M7YzthOzs7Ozs7ZTtnQixPO2U7c0I7ZSxPOzs7O3lCLE87d0I7Yzs7Vzs7VztXOzs7VSxJLG1COzs7O1M7O1k7OztlLE07YztTOzs7WTtZO1k7Vzs7UztTOzs7UztVLDJCLFM7VTtZOzs7ZTtnQjs7aUIsUTs7O2lCOzsrQixPLGMscUI7Z0IsTzs7O2U7Yzs7UztROztTO1UsTTtTO1UsWTtVOzs7UyxPO1E7O1M7VSxNO1M7VSxZO1U7OztVOztvQztTOzs7O2E7OzZCLHVCLFcsRTs7UyxPO1E7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtjO2M7Ozs7Ozs7Ozs7O0ksVyxPO0k7O0s7Tzs7O1U7VSxXO1M7O0k7OztPO087TztNOztJLE87Rzs7STs7O2dCLE87Ozs7Ozs7O0s7aUI7Ozs7Ozs7STtHOztJLFE7SSxPO0c7O0k7Rzs7O0ksVzs7O0ksTzs2QztHOzs7STs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7UTs7O1M7UTs7UTs7OztTO1M7USxPOzs7O2dCOztJO0c7RztJOztvQixPLGlDOztJLE87MkMsNEI7Rzs7SSxXO2EsTTtJOzs7Szs7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFM7SyxROzs7d0IsTyxrQztJLG1CLE0sd0M7c0IsMEI7SSxJOztvQjtxQztpQjs7Ozs7Ozs7O1MsYTs7UTs7Ozs7OzRCOztROzs7Ozs7OztROzs7OztTLHNCLE87UyxhOztROzs7OztTOzs7VTtVOzs7UTs7Ozs7Ozs7UTs7SSxPO0c7O0ksWTs7SSxPO0c7OztJLE87Ozs7Ozs7Ozs7SSxXO0k7Rzs7O0k7SyxNOztJOzs7O0k7SyxNOztJOzs7O0ksVyxNOztJOzs7O0ksVyxNOztJLGU7Ozs7Ozs7O3FCLGtCLGdDOzRCLHFCOztJLE87O0c7O0k7TztLLE87SSxXO0ksTztHOzBCLE8seUM7O0ksTzs7O2M7OztlOzs7YyxtQjs7O0c7MkIsTywwQzs7STtLO2lCLE87O0s7STtJLFk7O0s7SztvQjtNOzs7Ozs7TyxNO087Ozs7Ozs7Ozs7Ozs7Ozs7OztNO00sSTs7Ozs7OztNLGlCO007O0k7STtHOztJLE87OztjO2M7ZSxPOztjO2U7eUM7ZTs7Ozt3Qzs7O2E7O0c7O0ksVztJLE87Rzs7STtJOzs7Ozs7OzhCOztTOzs7VTs7Ozs7aUIsTzs7SyxXOztHOztJLE87OztjOztlOztjLE87YTs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOzs7SztLO29COzs0QjtNOzs7Tzs7VTtXLE07O1U7UztPLFE7OztVO1U7eUI7Vzs7Ozs7WSxNO1k7Ozs7OztjOztlO2UsTzs7Ozs7Ozs7O2E7YztjOzs7Ozs7Z0Isb0M7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCLE07OztlLE07Ozs7OzthO2EsTzs7Ozs7Ozs7Ozs7O1c7VyxJLGtCOzs7Ozs7O1csVztjO1k7VyxNOztTO29DLHdDOztNOzs7OztJO0k7Rzs7STthO2tDOztHOztJLFk7O0k7Rzs7SSxPOzs7OztjO3dCO3dCOzs7OzBCOzBCLE87O3lCOzs7YTs7Rzs7STtjO2M7Ozs7Z0I7Z0IsTztlOzs7Rzs7SSxVOztJLEcsa0I7SSxHLHFCO0ksSTtJOzs7SSxZOztJLEcsa0I7O0k7Ozs4QixxQjs4QiwrQzs7SSxXO2U7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJOzs7TSxxRDtNOzs7STtHOztJLE87OztjO2MsYzthOztHO0c7O0k7O3lCLGtCOztJO0k7Ozs7Ozs2Qzs7Szs7Rzs7STtnQyw0QixXO0ksVTtJOzs7YSxtQjs7O1k7Rzs7SSxZOztzQztJOzs7SyxXO21COzs7SyxPLFc7O0ksTztHOzs7SSxPOzs7Yzs7Ozs7ZSxRO2UsVTs7Ozs7Ozt3Qjs7Ozs7Yzs7O2U7Z0IsVzs7OzttQiw0QjtjO2E7Ozs7SSxvQjs7Ozs7Ozs7OztNOzs7VTs7OztTOzs7VTs7O1M7TztxQzs7OztROzs7O1M7MEI7Ozs7O21CO1E7O1M7UTs7Ozs7UTtTLFEsbUM7Uzs7UztROzs7Ozs7OztROzs7TTs7O0k7Rzs7STtJOztLOzs7TTtNOztLOztHOzs7Ozs7Ozs7Ozs7Ozs7SSxzQjs7Ozs7Ozs7UTs7O087Ozs7Ozs7OztZLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztJO0c7O0k7STs7Ozs7OztTLGtDO1MsUzs7OztpQjs7Szs7Rzs7STtJLHVDO0k7Rzs7SSxXO0k7Rzs7SSxROztJLGtCLHVCO0k7Szs7O0k7RzsyQixXLDZCOztJLG1DLFc7Ozs7STs7Tzs7O1U7VSxXO1M7O0ksTztHOzs7Ozs7Ozs7O087USxLO1EsUTtRLE07O1E7Uzs7Ozs7O1MsTztTOzs7OzttQjtPOzs7VyxZO1c7Ozs7Ozs7WTs7WTthLE07YTs7Ozs7Z0IsRyw0QjtpQjtnQixNO2U7YTs7YSxNO1k7O2E7Ozs7aUI7OztvQjtvQjttQjs7Ozs7YTtlOzs7a0Isb0IsTztrQixPO2lCOzs7YSxPO2E7ZTtpQjs7O29CO29CLE87bUI7O2E7ZTtpQjs7O29CO29CLGU7bUI7O2EsUzthLFc7YTtlOztnQzs7OztnQjtnQjtpQjs7O3FCLGU7b0I7a0I7Ozs7O21COzs7O21COzs7OztvQjs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7Ozs7Ozs7O3VCO3dCOzJDLE8sa0M7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrQjs7Z0Q7Ozs7Ozs7Ozs7Ozs7OzsrQjs7OztrQzs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7dUI7d0I7d0IsTzt3Qjs7OzJCOzBELGM7dUI7OztzQixHOzs7Ozt5QjswQixPOzBCOzBCOzs7Ozt5Qjs7Ozt1Qjs7Ozs7dUI7d0IsVzt3Qjt3Qjs7Ozs7OztpQjs7OztlO2E7YTtlO2lCOzs7b0I7b0I7bUI7O2E7O2E7OztZO29COzs7VztZOzs7Vzs7Ozs7Ozs7UTs7O1EscUI7USxXO087Ozs7O007Tzs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7WSxJO1ksTTs7Ozs7OztXO1k7b0I7dUI7O1k7WTs7Ozs7Vzs7Ozs7Ozs7Ozs7OztROztXOzs7Yzs7Ozs7ZSxNO2U7O2U7ZTs7YzthOztROzs7O1k7OztlO2UscUI7Yzs7Ozs7UTs7OztjOzs7Ozs7Ozs7Ozs7O087Ozs7OztJO0c7OztLOzs7Ozs7O087USxRO1EsSztPOzs7OztPOzs7a0M7UTs7Ozs7OztNO087Ozs7Ozs7Ozs7Ozs7O007O1EsTTtPLFU7Tzs7TTs7OztJOztLOzs7Ozs7Ozs7SyxTO0s7TTs7Ozs7O00sTztLOzs7OztJO0k7Rzs7SSxXLE07Ozs7OzswQjtNO087TztTOzs7WTtZO2EsTTtZLEk7OztXOztPLDJDLFc7Tzs7Ozs7TSxZO007OztVOztnQzs7YTtzQzs7UztPO1M7OztZOzs7YTtZLHNCO1c7OztPO087Uzs7O1k7WTtXOzs7TTs7O0k7Rzs7STtHOztJO0s7OztJO0c7O0ksWSxPO0k7OztLO0ssTztLO0k7OztJOztPOzt5QixrQixPLDJCOzs7Ozs7OztLLGE7Ozs7STtHOzs7Szs7Ozs7TTtNLE07TSxXO00sTzs7Szs7ZTs7Ozs7OztJLE87Rzs7O0s7Ozs7O00sTTtNLGtCOztLOzs7O0s7OztNO29COztnQjtJLFc7SSxpQjtHO2lDLFc7MEMsVzs7STs7O2MsYTthOzs7a0Y7YyxPOzs7OztHOztJO3lFO0ksTTtHOztJOzs7SyxPOztJLE07Rzs7STs7Rzs7STtrQzs7SyxNOztJO0c7RztJLGU7Ozs7Ozs7Ozs7STs7YTtjLFk7YyxNO2MsUTs7O2EsSSxVOzs7O2UsTzs7OzthLE87O0c7RztJOztJOzs7Ozs7Ozs7OztJOzs7Ozs7Ozs7OztJOztHOztJOztNO08sVTtPO087O087TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNLFE7TTtNLE07OztTO1E7TTs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxJLDhCOzs7Ozs7OztJO0c7O0ksVztJOzs7TztPO087TTs7SSxPO0c7O0k7OztLLE87O0ksTTtHOztJOzs7SyxPOztJLE07RztHO0k7VTtJO1U7Ozs7Ozs7Ozs7O0ksaUIsTztJLFM7SSwwQjtHOztJLFMsTTs7SSxXO0k7Szs7OztJO0c7O0ksVTs7SztNOzs7Ozs7Szs7O2U7Z0I7Z0I7ZTs7OztjOzs7Ozs7TSxNOzs7STs7O2MsTzs7O3dCO3dCOzs7Ozs7O3VCOzs7YTtHOztJO0s7OztlO2M7O0k7Ozs7ZTtjO3dDO2MsVTtjO2E7Rzs7SSx5QixTOztLO007O087OztPOzRCLFMsc0I7TTs7O0s7STtJO0c7O0ksWTtJOytCOzs7STtLO087OztVO1UsZ0I7Uzs7SyxPO0s7OztLLFM7STs7OztJOztPOzs7VTtVO1M7O0k7Rzs7STtJOzs7OztPLFM7UTtPOzs7OztLOztHOztJOztPOzs7VTtVLE87Uzs7STtHOztJLFk7O0k7Ozs7OztJLFksTzs7OztLOzs7Ozs7STs7O0k7SztLOzs7OztLLFE7TTtPOztXOzs7O087TztNOzs7Ozs0Qjs7Ozs7a0I7O0s7STtJLE87RzsrQix1Qjs7STtHOztJOzs7SztNLFc7OztJLFc7SSxPO0c7MEIsd0I7K0IsdUM7OEIsOEM7O0k7Rzs2QixXO3VDLCtCOztJO0ssVzs7Szs7OztNO087TztPO007TTs7Ozs7STtLLDRCLFc7O0s7Ozs7O087UTs7O087Ozs7c0IsYyxpQzs7TTs7Ozs7SSxJLFk7Ozs7TSxpQjs7TTs7Ozs7SSxPOztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7YztjLE87O3dCO2E7O0c7O0k7STtLOztNLFE7TTsyQixRLDhCLFM7Ozs7Ozs7Ozs7O1U7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtVOzs7OztXO1U7Vzs7Ozs7OztLO00sTTs7TTs7Ozs7TztPOzs7Ozs7Ozs7b0I7OztLO00sVTs7Ozs7d0I7VTs7Ozs7VyxZOztXOzs7Ozs7OztNLE07Ozs7Ozs7OztROzs7Ozs7Ozs7Ozs7Ozs7OztLOztlLGlDO0s7TSxNO0s7TTtpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLOzs7OztJLE87Rzs7SSxZLE87O21COzs7Ozs7OztJO0c7O0k7Z0I7STtnQjs7STtHOztJO0ssWTtLOzs7OztNOzs7SztNO0s7OzZCOzs7UTs7USxNOztJO0k7Szs7O0s7STtHOztJOzs7Rzs7OztJOztLOztJOztLO007OztNO1E7TTs7UyxZO1M7Ozs7O1U7OztTOzs7Ozs7UyxNO1E7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTTs7Ozs7Ozs7O007TyxNO087Uzs7O1k7OzthLE07WTtXOzs7Ozs7Szs7UTs7O1c7OztZLE07VztVOzs7Szs7STtLLFM7Ozs7OztLOztROzs7VztXO1U7Ozs7TSxNO0s7O00sbUMsbUI7TTs7UyxPOzs7Ozs7Ozs7UTtNLE87TSxPO00sWTtNO1E7TTtPO1M7O3lCLCtCOzs7OztNO087Ozs7Ozs7Ozs7TztRO1U7OzthO2EsTzs7O3VCO3VCLE87OzZDLE8sZ0M7O3NCOztZOzs7O087UTs7Ozs7YSwyQzs7Ozs7Ozs7O007TztTOzs7WTs7Ozs7YTthO2U7OztrQjtpQjs7O2E7O2EsVTs7YSxPOzt1Qjs7OztZO1k7WTtXOzs7OztPO1M7TTs7Ozs7Ozs7Ozs7OztNO087OztNOzs7OztTLGEsTzs7UyxPO1E7Ozs7Ozs7Ozs7O0k7SyxzQjtLOztTOzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7O1c7Ozs7Ozs7OztNOzs7Ozs7Ozs7TyxvQyxROzs2Qzs7O087UTtVOzs7YTthLGM7WTs7UTtVOzs7YTthLGM7WTs7USxPO1E7OztRLFM7Tzs7Ozs7O087UTtVOzs7YTthO1k7O1E7OztXOzs7YztjO2E7Ozs7Ozs7OztRO1MsSTs7O1ksa0I7d0I7O1ksSSxJLE87Ozs7Ozs7WSxPOztRO1E7USxJLGlCO1E7OztXOzs7O1U7OztTOztVO1k7OztlLG9COzJCOzs7YztVO1UsTzs7VSxPOzs7OztrQjs7Ozs7O0k7OztJLFE7STs7Ozs7OztHOztJOzs7Ozs7Ozs7UTs7UTs7O1E7UTtnQixPOztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztpQjtLOzs7Ozs7O007O0s7OztTLE87OzttQjs7O29COzs7bUIsSSxZOzs7NkM7OzttQjsrQjs7O1E7TSxPO00sTTtLLEksVTs7OztvQjtNOzs7Ozs7bUI7SyxZOzs7Ozs7OztNO007TywwQjtPO087Ozs7OztJO0s7SywwQjtLLE87SSxXO0c7O0k7SyxXO0s7Ozs7O08sbUI7Tzs7cUI7Ozs7O1E7Ozs7Ozs7O007TyxJLFU7Ozs7c0I7Ozs7O3FCO087UTs7OztPOzs7bUI7Ozs7O0k7aUIsTztJLEk7Z0IsTTs7STtHOzs7Ozs7NkIsTzs7UTs7O1Msc0M7UyxTOzs7Ozs7O1EsTzs7K0IsOEI7Ozs7USxPOzsrQiw4Qjs7O0s7Ozs7STs7OztRO2tCOzs7Ozs7Ozs7UztVOzs7O1c7VTs7Ozs7Ozs7Ozs7O1M7VTs7VztVOzs7Ozs7Tzs7OztRO1E7UTtPOzs7USxXOztPLE87O0ksTztHOztJO2dCLE87O0k7Rzs7O0k7STs7TSxPOzs7O0ssSSxZOzs7O007Ozs7Ozs7Ozs7OztrQjs7TTtNO087OztNOzs7O08sSSxVOzs7O1E7Ozs7OztPOzs7UTtROzs7Ozs7O0c7O0k7Ozs7O00sRztPO1E7Ozs7OzhCOzs7O007OztTLFc7UyxjO1E7TTs7OztJOzs7Ozs7Yzs7O0c7O0kscUI7OztLLE07STs7Ozs7Szs7Ozs7Ozs7Ozs7OztTLDBDOzs7OztrQjs7Ozs7Ozs7OztJOzs7SztLO087O3dCOztLO0s7OztJOzs7Ozs7Ozs7OztJOzs7O0s7OztVOzs7Ozs7Ozs7O1U7Ozs7WTtJOzs7STs7Ozs7Ozs7Ozs7OztVOzs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7O1EsTTs7O087O2lCOzs7Ozs7O087O1E7Ozs7Tzs7TyxpQjs7USxNO087OztRLFM7UTtROzs7Ozs7OztvQjs0Qzs7OEIsb0I7OEI7Ozs7Ozs7Ozs7Ozs7OztVOztvQjs7OztvQjs7OEIsb0I7Ozs7Ozt1Qzs7OEI7Ozs7Z0M7Ozs7OytCOytCOzhCO2lEOzs7Ozs7Ozs7OzhCOzZCOzs7Ozs7O29COzs7Ozs7O1U7O29COzs7OztvQjs7O3FCOzs7b0I7O3VCO3dCOzBCOzs7NkI7OzhCLE07Ozs2Qjs0Qjs7Ozs7Ozs7Ozs7O3VCO3dCOzBCOzs7NkI7OzhCLE07Ozs2Qjs0Qjs7Ozs7Ozt1Qjt3Qjt3QjswQjs7OzZCOzZCOzhCLE07Ozs2Qjs0Qjs7d0I7Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7VTs7O29CLFk7b0I7NEM7OzhCOzsrQjsrQixROzsrQjs7Ozs7OEI7OEI7Ozs7OytCLFc7K0IsTzs7OytCLE07Ozs4QixPOzs7Ozs7Ozs7Ozs7OztXLE07O1U7OztvQjtxQjs7b0I7NEM7OzhCOzsrQjsrQjs7OztnQzs7aUM7OztvQztvQztxQztxQyxNO3FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQzttQztnQzs7OzhCLE07Ozs7OzsrQjsrQixPOzs7K0IsTTs7OEI7OytCOzhCLE87Ozs7Ozs7Ozs7Ozs7VTs7b0I7Ozs7OztxQixZO3FCOzs7Ozs7O3NCOztzQjs7Ozt1Qjt1Qjt1QixPO3NCLFMsNkI7c0IsVTtzQjt1Qjs7aUM7Ozs7OztzQjs7dUI7OzBCLG9COzBCOztzQjs7Z0M7Ozs7Ozs7cUIsTTs7O29COzs7b0I7OztxQjtvQixHO3FCLFc7cUI7Ozt3QixrQixROzs7Ozs7O3dCO3VCOzs7Ozs7cUI7b0I7b0I7cUI7cUI7dUI7cUI7OztxQjs7Ozs7Ozs7Ozs7Ozs7b0I7cUI7Ozs7Ozs7Ozs7Ozs7O3VCOzs7Ozt1Qjs7Ozs7O3dCLE07dUI7Ozs7Ozs7Ozs7dUI7Ozs7dUI7Ozs7Ozs7Ozs7cUI7c0I7Ozs7Ozs7O3NCOzs7Ozs7b0I7Ozs7O1UsVztVOztvQjs7OztvQjs7OEIsb0I7OytCOztnQzs7O21DOzs7Ozs7O2tDOytCOzs4QixNOzs7a0Q7Ozs7Ozs7b0I7OztxQjs7O3FCLFM7cUI7OztxQjt1Qjs7Ozs7O29COzs7Ozs7Rzs7O0k7SyxROzs7Szs7O0k7Rzs7STtrRDtJO0c7d0IsTyx5Qzs7STs7O0ssTzs7OEIsMEM7OztJO0c7O0ksTztHOztJLFk7STs7OztPOzs7VTs7O1csTztVO1csVztXOzs7OztVO1M7O0s7STs7O0k7SztHOzs7O0s7SyxhO0s7SztJOztLO007TTs7O0ssd0I7SyxNOztJO0ssWTtLO2dCO0s7SSxJOzs7O00sTTs7OztJLHNCOzs7O0s7TSxPO00sTztNLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7O0k7SztLO0s7TzttQyxtQjtJOzs7Ozs7OztjOzthO0c7O0k7O0c7O0k7O0c7O0k7O0c7O0k7Ozs7O1E7OztROztzQzs7Ozs7O1E7Ozs7OztZLE87OztzQjtzQjtxQjs7VztTO1c7OzRCOztTOztTO1E7O1E7Ozs7O1M7Vzs7NEI7O1E7O2dCOzs7bUI7bUI7a0I7Ozs7O1Esd0M7UTs7USwyQztROztROzs7O1M7UTs7c0M7O21DOzs7O0s7O0ksTzs7O0k7aUM7Ozs7Ozs7OztLO007TSxTO00sWTtNO1E7OztXO1csZTtVOztNO1E7OzBCLG1CLFU7O007Ozs7WTs7Ozs7Ozs7Ozs7MkMsa0M7aUIsTzs7Ozs7Ozs7O2lCLE87Ozs7O1k7YSxVO2E7ZTs7OEIsZSwyQjs7WTs7O3FCOzs7VztXO1k7WSxjO1c7O1ksTzs7Vzs7WSxPOztXO2tCO1csdUIsVyxnQztXOzs7O2U7OztZOztXLE87Ozs7Ozs7SSxRO0k7Rzs7STtLLE87OztTOzs7O0s7Tzt1Qyx1Qjs7Ozs7Ozs7O2M7Ozs7NkI7O2E7Rzs7STtrQyxPO3VCLE07O0k7Rzs7STs7SztPOzs7VTtVO1M7OztJO1k7OztlOztnQixPOzs7OEI7Ozs7Z0I7aUIsTzsyQjs7Z0IsTTs7O2U7Yzs7OztHOztJOztPOzs7O1E7VTs7OzthOzs7Tzs7TyxNO2dDOztHOztJO0ssVzs7STtHOzs7SSxTOztJLE87OztJO0ssVztLO087O3lCLGtCLGM7O0s7SyxPO0s7SztLO08sbUMsaUI7Ozs7Ozs7Ozs7VTs7O1c7O2M7OytCOzs7O1c7OztXLE87VzthOzs7Z0IsbUIsTzs7Z0I7ZTs7VzthOzZDLHVCO1c7VzthOzs7Z0I7Z0I7ZTs7Vzs7O2dCO2lCOzs7O2tCOzs7O2lCOzsyQjs7Ozs7Ozs7Z0I7Ozs7Ozs7O1csTztVO2tCOztTO0ksTztHOzs7STs7OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STs7OztLOztJO0c7O0ksVTs7SSxpQjtHOzs7Ozs7Ozs7Ozs7O0k7O087O1EsUTtROztRO1E7VTs7UTtPOzs7O087O1EsWTtRLGtCO1E7VTs7O2E7Ozs7Yzs7Ozs7YTs7cUI7O1k7Ozs7OztRO1U7O3NDLFc7Ozs7Ozs7OztRO1U7UTtROzs7Vzs7Tzs7Ozs7Ozs7Tzs7O2tCOzsrQiwyQzs7O087OztrQjs7K0Isd0M7O087OztRO1U7OzthO2EsTztZOzs7Tzs7K0IsMkI7OztvRDs7O087Ozs7UTtRO1E7VTs7O2E7Ozs7O1E7Ozs7VTs7Ozs7OztXOzs7WTs7Ozs7Vzs7O1M7Ozs7O1M7Ozs7O08sTzs7Tzs7Ozs7UTtRO1U7OzthOzs7Tzs7O1MsTztROzs7Ozs7Uzs7O087O087O087Ozs7OztRO1E7VTs7O2E7YSxPO1k7OztROztPOzs7a0I7Ozt5Qjs7Tzs7Tzs7OztRO1E7OztZOztPOzs7a0I7OzsyQjs7Tzs7Tzs7OztRO1E7Tzs7O2tCOzs7dUI7O087OztPOzs2QixvQjs7O087OzhCLHNCOztJLE87Rzs7SSxXO0k7Ozs7O0s7SztJOzs7ZTs7O2M7O0k7RztHO0ksYTtJO007SSxjOzs7Ozs7STtLO087OztVO1UsTztTOzs7SztPOzs7VTtVO1c7Ozs7O1c7Vzs7OztlLGtCLFE7MkI7O2UsTzs7O3lCO3lCO3dCOzs7ZTs7ZTs7ZTs7ZTs7ZTs7OztnQixNO2dCLFE7Ozs7Ozs7ZTs7O2dCO2tCOzs7cUIsbUIsTTtxQixPO29COzs7Ozs7Ozs7Ozs7Ozs7b0IsZTs7O29CO3FCLGlCOzs7cUIsTztvQjs7b0I7O29CLGlCLFM7b0I7Ozs7Ozs7b0IsTzs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCOztlOztlLG1COzs7OztlOzs7O2U7Ozs7OztlOzs7ZTs7O2U7Ozs7ZTs7OztlOzs7O2U7O3VCOztVOztXLE87OztxQjs7b0I7OztVOztXLE87OztxQixPOzs7K0I7K0I7OzhCOzs7b0I7OztVO1U7OztXOzs7Ozs7Vzs7Yzs7MEMsVzs7OztXOzs7Ozs7O1c7Ozs7O1U7VyxTO1c7O1csTztVOzs7OztXO1c7O1U7Uzs7O0s7Tzs7O1U7OztXO1U7Uzs7O0s7O0s7TTtROzs7VztXO1U7Ozs7O0k7SztPOzs7VTtVO1M7OztLO087OztVOzs7Ozs7OztVOzs7O3NCOztVO1M7OztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksVTtJLFM7OztJOztLO00sSSxjLDJDOzs7OztPLFM7TztPOzs7STtHO0c7STtJO0k7STs7STtJO0k7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2Esa0M7YSxVOzs7Ozs7Ozs7TTs7Szs7Rzs7SSxzQjs7SyxtQjtLO00sUTtNO08sSSxlOzs7OztPOzs7O007Ozs7O007O007OztJO0c7O0k7Ozs7RztxQix3QjtHO0ksaUI7Ozs7OztJO0ssUTs7O0s7Tzs7K0IsbUM7OztJO0k7Rzs7STtLLE07O0ssTTs7SSxXOzs7O0s7O007Ozs7Ozs7Ozs7O007OztJO0s7aUQsMkI7OztJO0c7O0ksc0I7O0ssTTtJLHNCOztJLEksUTs7Ozs7Ozs7Ozs7OztJOzZCLHlCO0c7RztJO0k7STtJOzs7STtJO0c7O0k7OztnQjtnQjs7O2lDLE8saUI7Yzs7OztnQjs7O2dCO2lCLFE7OztpQjttQjs7O3NCOzs7Ozs7Ozs7cUI7OztnQjtlO0c7O0k7O3lDLFcscUI7O0k7Rzs7STs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STtJOztJLHVCO0k7Ozs7TTs7Ozs7Ozs7O0k7Rzs7STtLOzs7Ozs7USxPOzs7O0ssVztHOztJO0ssaUM7SztLLE8sb0Q7Rzs7STs7Ozs7O0s7O0k7Rzs7STs7Ozs7OztLLEksUTs7OytCOzs7Szs7STtHOztJOzs7OztNOzs7VTtTOzs7Ozs7Ozs7OztJLE87Rzs7O0s7TSxJO007UTtVO3lDLE87O00sTSxXO00sTSxXO0s7O0k7STt1Qjs7a0I7SSxxQixVO2tCOztJO0c7O0ksVzs7Ozs7OztJLEs7SztJOzZDO0k7STtHOztJLFc7Ozs7Ozs7STtHOztJO0k7Rzs7STtJO0c7O0k7ZTs7Ozs7OztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7MkIsTztJO0c7Ozs7Ozs7O0ksTzs7O0k7OztNO29EOzs7OztPOztNOzs7Ozs7Ozs7OztNO007TTs7O0k7Rzs7STs7O007MEI7c0I7TTs7Ozs7Ozs7Ozs7TTs7O0k7Rzs7STs7O007cUI7c0I7TTs7Ozs7Ozs7Ozs7TTtNO007OztJO0c7O0k7STtHOzs7SztNO007TTs7TSxtQjs7Ozs7Ozs7OztLO0k7STtHOztJO0k7Rzs7STtJLFc7STs7Ozs7O0s7O0s7Szs7O3dCO0k7Rzs7STtLO0s7Szs7Szs7TTtLO3NCO007O087Ozs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O2U7c0I7TTs7Ozs7Ozs7Ozs7TTtNO007Ozs7Ozs7Ozs7O007OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLGtCOztLO0k7Rzs7STtLO0k7RztHLHNCOztJO0c7O0ksTzs7d0Msc0I7OztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7STtNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxXO0s7Ozs7Ozs7MkI7O00sTTtLOztHOztJOzs7Ozs7TztRLFM7USxPO1EsTztROztpQjs7O087Ozs7Szs7STtHOztJOzs7Ozs7Ozs7Ozs2Qjs7Ozs2Qjs7Ozs4Qzs7Szs7STtHOztJLFk7O0s7Ozs7TSxVOzs7Ozs7Ozs7STtLO0s7Ozs7Ozs7WTs7OzthLE87YSxRO2E7ZTs7K0IseUI7O1k7OztZOzs7O2EsVTs7Ozt1Qjs7O1k7Ozs7Ozs7Ozs7OzttQjs7Ozs7O1k7Ozs7YSwrQjs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7Ozs7O1k7Ozs7O2EsVTs7OzJCO1k7Ozs7O1k7Ozs7O2EsVTs7OytCO1k7OztZLHVCLFU7Ozs7eUI7OztZOzs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztVLFM7O1M7O1c7OztZO3FCO1UsTzs7b0I7OztzQjs7O3dCOzs7MEI7Ozs0Qjs7OztTOzs7O0k7RztHO0ksYTtJLG9CO0ksbUI7SSxnQjtJO007STtNO0ksaUI7STtNO0k7TTtJLGdCO0k7TTtJO007SSxvQjtJO007STtNO0ksbUI7STtNO0k7TTtJLGU7STtNO0k7TTs7STs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7Rzs7STtLLE07SztLLFE7Ozs7SztPOztVOztJOztPOztPOztPO1EsVztRLE87TztRO1MsTzt1Qjs7O087O087Z0I7Tzs7Tzs7Ozs7Ozs7O08saUI7Tzs7RztHO0k7TTtJLFU7O0ksTztHOztJLE87Rzs7STs7Ozs7Ozs7O1M7OztVLE87OztVOzs7Ozs7Ozs7OztXLE07Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7Ozs7OztTOzs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxXOzs7OztTOzs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7cUI7Uzs7OztRLE87OzswQjs7Ozs7Ozs7VSxtQjtVOzs7Ozs7Ozs7Ozs7VyxHOzs7Ozs7VTs7Ozs7O1csTTs7OztTOzs7OzttQjs7UyxxQjtTOzs7O0ksTTt1QjtHOztJO0k7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7O0k7YSxNO0k7Rzs7STtLOztTO0s7O0k7SyxXO0s7SyxlO0k7STtLO0s7Tzs7eUIsbUIsZTs7SztJO2M7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOztJO0c7OztJOzs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOztLLE87OztJLE87O0c7OztNLHVCOztNLFc7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STs7O1EsTTtPOztJOzs7USxNO087SSx1Qjs7O0k7SztPOzs7OztVLFc7VSxPO1M7Szs7OztNOztPLE87Yzs7aUI7Ozs7Z0I7SSxJLE0sNkM7Ozs7O3VDOztLOzs7Ozs7SSxPO0c7RztJOzs7OztJLG1CLE07O0k7Rzs7STs7MEM7O0ksTztHOztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLO007TSxROzs7TTtLOzs7O2tCOztJLE87Rzs7STtLLE87SyxROzs7O0ssUTtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZO1ksTztJOzs7Szs7O0k7Rzs7STtJOzs7Ozs0QixPOzs7Uzs7OztLOztHOztJOzs7OztRLE87O1EsTzs7USxNOzJCOztJLE87Rzs7STtJO0ssTzs7STtHOztJOzs7STs7Ozs7OztJO0ssTzs7Ozs2Qjs7STtLLE87OztJO0c7O0k7Ozs7O0ssTTs7OztPO2dCOzs7Ozs7MkI7O087Ozs7UTtPOztPOzs7USxtQztROzs7OzthOzs7Ozs7Ozs7O2dCOztrQjs7b0MsaUM7Ozs7OztvQjs7Ozs7Ozs7YTs7WTs7Ozs7O1EsUztRO1U7Ozs7Ozs7O1E7VTs7O2E7YTt1Qjs7WTs7O08sTzs7Ozs7OztTOzs7OztVO1M7bUI7O1k7OzhCLDZDOztVO1c7OztXO2E7OztnQjs7aUIsTTs7O2dCO2U7O1c7Vzs7VyxPO1c7YTs7Ozs7Ozs7OztVLHFCO1U7VyxhO1csWTtXLGdCO1c7VTs7Ozs7Ozs7OztxQjs7Ozs7O087O1EsVztRLFU7USxjO1E7USxPO087Ozs7Ozs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OzhCO1c7WSxROzs7Vzs7YSxNO1k7O2E7O1k7Ozs7WTtZOzs7VztZLE07VyxVO1c7WTs7b0I7b0QsZTtXO1c7WSxXO1k7Yzs7Z0MsbUIsVTs7WTtjOzs7aUI7aUIsZTtnQjs7WSxPO1ksTztZLE87VztXO1k7Yzs7O2lDLHlDOzs7aUI7Z0I7WTtXOzs7OztRO1U7Ozs7USxrQjtRLFk7USxZOzs7VztZO2M7Z0Q7WSxLO1ksc0I7Vzs7OztvQjs7O1U7UTs7Ozs7O1U7VzthOzs7Z0IsVztnQixXO2U7O1c7YTs7K0IsbUIsZTs7VzthOzs7O1csTTtVO1c7O2E7Ozs7OztTO1U7WTs4QztVLFM7VSxJO1U7WTs7Ozs7O1M7VSxNO1M7VTs7WTs7O08sTzs7O2lCOzs7O2lCO2dCOzs7O087OztRLEs7UTtVOzt3Qiw2Qjs7UTtVOzsyQjs7USxPO087O087O1E7OztPO1E7MkI7UTs7Ozs7Uzs7O2lCOzs7O087OztROzs7Ozs7OztnQyxXOzs7WTthOzs7MEI7YTs7Ozs7Yzs7O3NCOzs7O1k7Ozs7YSxPO2EsUTtZOzs7OztzQjs7K0M7USxNOzs4QztPLE07O08sb0MsTTtPLFksVztPLHNCO087UTs7UyxzQjtROzs7OztRLFc7UTs7d0I7Ozs7Tzs7Ozs7OztROztRO1MsVTs7OztZLHdCOzs7O2E7Yzs7O2M7O2lCLE07OztpQjtrQixPOzs7O2E7YyxPOzs7WSxXO1k7Ozs7Ozs7UTtTLE07UTs7UztXO1MsTztROzs7Ozs7Ozs7O087USxVO1E7VTs7O2E7YTtjOztlLGU7Yzs7YTs7O2MsYTs7O2M7ZTs7O2U7O2tCLE07Ozs7O29DOzs7a0M7O2E7Ozs7c0I7O1k7O1EsTztRLFU7OztRO1U7OzZCLGdEOzs7O087c0IsTTtRLFc7UTtTOzs7O3VCOztTOzs7WSxNOzs7O29CLE07Ozs7Ozs7USxhO1E7Uzs7Ozs7O1M7OztZLE07Ozs7Ozs7WTs7YSxPOzs7Ozs7TywwQjs7Tzs7Tzs7O1E7UTs7O1MsVztTOzs7Ozs7Vzs7VztZLE87O1ksTztXOztPO1EsTzs7USxPO087O087Ozs7UTs7Ozs7Ozs7O1ksTTs7WTthLE87Ozs7UTtTLE87OztPO1EsTzs7Tzs7Tzs7USxPO1E7TztXO1MsTTs7O1MsSSxTOzs7O1c7WTs7OztlOzs7OztlOzs7OztTLFcsTTs7Ozt1Qjs7Ozs7O2E7O1E7Ozs7O1M7OztpQjs7Ozs7O1E7O1M7UztROztPOztRO087O087OztRO087O087OztRO087O087Ozs7OztRO1E7Tzs7Tzs7O1EsUTtPOztVOztXO1csVTs7O1c7Ozs7VTs7Vzs7OztVOzs7VyxPOzs7Tzs7Tzs7O1EsUTtRO087Ozs7cUI7Ozs7Ozs7O087OztRLFE7USxTO1EsUTtPOztPOzs7O1EsUTtRLFM7USxRO087O087OztRLFE7USxTO1EsTTtRO1U7OzthO2E7OztZOzs7Tzs7Ozs7O2lCOzs7Ozs7Ozs7OztTOzs7O1UsYTtVLGdCO1M7Ozs7UTs7OztTLFE7UztROzs7O2lCOzs7O087USxPOztPOztPOzs7UTtRO087Ozs7Ozs7UTs7OzBCO08sSSx3QztPOztPLG9CLFU7OztTO1UsTztVLE87VTtTOzs7OztRO1MsTzs7UTs7O1E7UyxPOztROzs7UTtTLE87UztROztPO1EsTztRO1EsZTtRO1U7Ozs7Ozs7O1EsTztPOztPOzs7UTtRLE87TyxPOzs7Ozs7OztPLE87O087Ozs7Ozs7OztXLFk7Vzs7O1ksVTtZLFc7Ozs7WTs7Z0I7Ozs7O1k7WTs7Ozs7Z0I7Ozs7WSxNO1k7VyxPOzs7Ozs7UTs7WTs7Ozs7UTtROzs7OzthLHdCO2E7Ozs7OztZOzs7Ozs7USxTO1E7VTs7Ozs7Ozs7Tzs7Ozs7OztrQjs7Ozs7Tzs7O1EsTztPLE87O08sbUM7O1E7UyxPOztROztPO1EsTTtRLE87UTs7VTs7O2M7Yzs7Ozs7Ozs7d0I7OzthOzs7O087Ozs7ZTs7Ozs7STs7O0k7STs7OztROzs7Z0I7OztHOztJLE87OzRCOztHOzs7SyxZO0s7STtJLFc7SSxPO0c7O0k7SSxZOztJOztHOzs7STs7OztJO0ksTzs7OzhCLDRDOzs7YzthOzs7Ozs7OztLOztROzs7OztTLE87UTs7O1EsMkI7Ozs7Ozs7OztTOzs7O2lCOzs7OztLO0k7Ozs7O087O2dCO2tEOzs7Tzs7O1E7UTs7Vzs7O2M7O2MsUzs7Yzs7VTtPO1M7OzJCLG9CLFc7Ozs7O087Ozs7OztjO2dEO1E7UTtVOzs7YTthO1k7O1E7VTs7O2E7YTtxQjs7c0M7OztZOztRLFM7UTs7Ozs7OztVOzs7Ozs7VyxPO2E7OztjOzs7Ozs7Ozs7Ozs7OztXOzs7TyxPOzs7aUI7aUI7Z0I7Ozs7TTs7OztPOzs7OztJOzs7YTs7O2dCOzs7aUIsTTtnQjt3Qjs7d0M7OztlOzs7O0k7OztpQjs7OzttQzs7Ozs7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1EsVTtXO1M7VTtXLE87VzthOzs7Z0I7Z0I7d0I7OztlOztVO1csTTtVOzs7VzthOzs2Qiw4Qzs7VzthOzs7Z0I7Z0IsTzs7OzBCLFU7MEIsTzt5Qjs7O2U7OztXO2E7OztnQixXO2U7O1c7YTs4QztXO2E7OytCLDRDOztXO2E7OztnQjtnQjtlOztXOzs7YztVOzs7OztXOzs7Ozs7Ozs7STtHOztJOzs7Ozs7Ozs7OztLO007OztPLE07O1M7OztZLG9CLE07WSxPO1c7Ozs7O0s7TTtROztzQiw2Qjs7TTtROzt3Qjs7TTtROztNOzs7O0k7SyxrQjtLO087OztVOzs7VztXO1c7O1c7O1ksTztZO2M7Ozs7Ozs7O1c7O1U7OztXOzs7VzthOzs7Ozs7OztVO1M7Ozs7O0ssTTtLLFU7O0s7OztNO1E7OztXOzs7WSxRO1k7Yzs7Ozs7Ozs7VztVOzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7NEM7Rzs7STs7Ozs7O0ksWTs7O0s7TSx5Qjs7STtHOzs7STtLO007UTs7O1csb0I7Ozs7a0M7O3dFOzs7VyxNO1U7Ozs7Uzs7Ozs7O1U7VSxRO1M7O007UTtLO00sTyxpRDs7O0ssWSxzQixZO0s7Ozs7Ozs7TTtNLFE7TTtLO007TSxPLHlEO0k7STs7O0k7SSxlO0c7O0k7YztjOztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7Ozs7O087USxPO1EsTztXO1EsVztRLE87Ozs7O0ksTztHOzs7STs7O0ksTztHO3lCLDRDOzRCLE8saUM7O0ksYyxXO0k7Ozs7USwwQyxnQjtJLE87Rzs7STs7Ozt5QjtJLGU7Rzs7SSxPOzs7Yzs7O2U7O2M7Ozs7aUM7O2E7OztHOzs7STs7Ozs7YTs7O2dCO2dCO2U7Ozs7O0k7Ozs7MkI7OzZCOztJLE87Rzs7O0k7STs7OztROztTLGE7Uzs7UTs7Ozs7O2tCOzs7Ozs7UTtTLE07UyxXO1E7Ozs7O21COztROztTLE07UyxxQjtTO1c7OztjOzs7O2U7OztpQjs7a0I7Ozs7Ozs7c0Msa0I7Ozs7aUI7Ozs7O2tCOzs7Ozs7O2lCOztjO2E7Ozs7OztTO1c7OztjO2M7O2E7OztRLEc7UztVOzs7Uzs7NEI7O1E7Ozs7O2dCOzs7UTs7Ozs7Ozs7b0I7Ozs7UTs7Ozs7Uzs7Ozs7YTs7Ozs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7OztROztnQjs7O1E7Ozs7O1M7Ozs7O2E7Ozs7OztROztnQjs7Ozs7Ozs7Rzs7SSxjOzs7O0s7OztpQjs7OztJOzs7Z0I7OztHOztJLFksTTs7SSxPOztxRDs7Ozs7Ozs7O1MsTTtROzs7OztTOztROzs7Ozs7Ozs7O1E7O1M7UztXOzs7Yzs7Ozs7ZTs7O2lCOzs7O2tCOztrQjs7Ozs7Ozt1Qjs7OzBCOzBCOzJCOzRCOzs7dUM7NEI7Ozs7OzJDOzsyQjs7OztrRDs7O3lCOzs7Ozs7Ozs7O2lCOztpQjs7OztrQjtpQjs7OztrQjs7bUIsVzttQjtxQjtrQzs7O21COzs4QjtvQjtxQixPO3FCLE07Ozs7Ozs7eUI7Ozs7Ozs7a0I7OzswQjs7a0I7OzswQjs7Ozs7aUI7O2tCOzs7cUI7a0M7aUI7Ozs7Z0M7Ozs7O2lCOztjO2E7Ozs7Ozs7Uzs7UztXOzttQyw2Qjs7O1MsTTtTLFE7Ozs7OzthOzs7Z0I7Z0I7Ozs7OzhCOzs7Ozs7Ozs7OztTLEksTSxnQzs7OztVO1c7OztnQjtrRDs7OztTO1UsTztVO1k7OztlO2U7ZTtjOzs7VTs7Ozs7Z0I7a0Q7O1UsTzs7Ozs7O3dCOzs7UTs7UTs7O1M7Ozs7O1MsUztROzs7O1E7OztTOzs7OztTLFM7UTs7UTs7Ozs7UztXOzs7YyxXO2E7O1MsZ0I7OztTOzs7UTs7Ozs7Ozs7OztROzs7Ozs7Ozs7UyxLO1UsTTtTO1UsTTtVLE07OztVO1k7OztlO2U7Ozs7OztjOzs7VTtZOzs7ZTtlOzs7Ozs7Yzs7O1U7VTs7VSwrQjtVLE87Uzs7Ozs7OzZCOzs7Ozs7WTs7Ozs7Ozs7OztXO1EsUztRO1M7Ozs7b0I7Ozs7UTs7Ozt1Qjs7Ozs7OztJOztLLHlDLG9CO0k7Ozs7Szs7O0k7OzthLEk7YTtxQjs7WTtHOztJO0k7Ozs7OztTO21CO1csTTs7Ozs7VyxNOzs7UTtTLFM7UyxXO1E7O1EsTTs7UTs7OztTOzs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7O1E7OztnQjs7O1E7Ozs7Uzs7OztROzs7Z0I7OztROztTOzs7OztROzs7O1ksRzthOzs7OztTLE07Ozs7O0c7O0k7O0s7Ozs7TTs7O0s7OzthOztJO0s7OztJO0c7O0k7STtLOztLO007O1M7OztZLFc7O1k7Ozs7YSxvQixLO2EsTzs7a0MsVyxnQzs7Ozs7Uzs7OztTLG9COzs7Ozs7Ozs7Ozs7OztnQixHO2lCOztnRDs7Ozs7Ozs7Ozs7OztnQixHO2lCOzs7Ozs7Ozs7YyxHO2U7Ozs7O1MsTTtROztLOzs7Ozs7OztXO1k7YTs7O2EsTzthLE87WSxXOztXO1ksSTtZO29COzs7Ozs7VSxJO1UsVzs7Ozs7Ozs7O1U7OztXOzs7Ozs7Ozs7bUIsRztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CO3FCO3dCO29COzs7OztlLE07OztVOzs7USxNOzs7OztTLEc7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsSzthLEk7YTtxQjs7Ozs7OztZLEc7YTs7Ozs7WTs7O2E7OztZO29COzs7Ozs7Ozs7YTs7O2M7OzthO3FCOzs7Ozs7O0ssSTtLLFc7O0c7O0k7SztNLGE7TSxTO007OztNOzs7Ozs7TyxNOzs7O0s7TTs7O007UTtLOzs7TTtPLE07TyxXO08sVztPLFE7TyxTOzs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEcsMkM7STtLLFc7SyxNO0ssTTtLLFM7SyxVOzs7SztLOzs7SyxvQjtLLE87Ozs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzsyQixtQjs7Ozs7Ozs7SztNLE87TSxPO007SztNOzs7O1MsTzs7O21CLFE7O2tCOzs7Ozs7OztTLE87OzttQjsyQjs7a0I7Ozs7UyxPOzs7bUI7MkI7O2tCOzs7O2lCOzs7K0I7Ozs7OzttQjs7OztTO2lCOztjOztLOztLO0s7TSxPO00sTzs7SztNO1E7TSxPO00sTztvQjtLO0ssTzs7O2U7ZTtlLE87Yzs7O0k7STtJLHlDLFc7O0s7Ozs7Ozs7Uzs7OztVLE07Uzs7O1U7VztvQjtTOzttQixNO1U7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxtQjtXOztVLE07Ozs7O1U7VyxPO1c7VzthOzs7Ozs7OztVOzs7Ozs7SyxNOztJO0s7SyxPO0ssUzs7Szs7Ozs7Ozs7STtJLEksVztJOzs7Szs7O00sVzs7OztJO0ssTztLLE87SztLO0s7Ozs7O0s7Ozs7O0s7TTtNLE07O007OztJO0s7SyxhO0s7Ozs7Ozs7Ozs7Ozs7STtLLE07STtLLFU7SyxNO0ssTTtLLGE7SyxhO0ssYTtLO087OztVLFc7VSxPLHlCO1M7O0ssTztLLFU7STs7O087USxTO1E7TztRLE07O087TTs7OztLO0s7Ozs7d0I7O0k7O0s7Szs7Ozs7Ozs7Ozs7O3NCOzs7Ozs7O0s7Ozs7WTs7Ozs7Ozs7OztNLEs7SztPOztzQixXLGlDOztNO087O3dCOztNOztPOzs7OztPOzs7O2E7Ozs7Ozs7Ozs7Ozs7OztLOzs7SztNOzs7O1M7OztLOztJO0ssUztLLFM7Ozs7OztJOzs7Ozs7VTswQyxlOzs7Ozs7Ozs7VzsyQyxlOztLLE07SztPOzs7VTtVO1M7OztLO0s7Ozs7d0I7O0k7STtLO087OztVLHFCLE87VSxPO1M7O0s7Tzs7O1U7VTtTOzs7SztJO0k7SztNO007Ozs7WTs7Ozs7OztLO007Ozs7TTttQjs7TTs7Ozs7O1M7OztLOztNOzs7OztVOzs7Ozs7Ozs7Ozs7STs7O0ssSTs7Ozs7Ozs7Ozs7OztJOzs7O0s7SztLOzs7Ozs7Ozs7YTs7O0k7OztJLE87Ozs7MkI7O0c7OztLO0s7STs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0c7OztNLHVCOztNLFc7Szs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7OEIsc0I7O0ksVzs7STtHOztJLFc7O0ksa0I7Rzs7SSxPOzs7YztlO2UsTTtjO2E7OztHOztJLDhCOzs7O08sTzs7Ozs7O2tCOzs7aUI7aUI7Ozs7cUI7Ozs7d0I7Ozs7aUI7Z0I7O087OztRLFE7UTtRO1E7Ozs7UTs7O1M7OztVLFU7VTtVO1U7Ozs7OztPLE87Ozs7O2lCOztrQjs7a0I7Ozs7Ozs7O3dCOzs7OztrQixPOztnQjs7Ozs7OztPLE87O087Ozs7USxNO08sTzs7OztnQyx1Qzs7Rzs7STtLLEs7SztPOzs7VTs7Ozs7OztVLEssa0M7VTtXLE87VyxPO1csZ0M7VyxTO1csTztVOztrQjs7Uzs7Ozs7dUM7Rzs7SSwyQjs7Ozs7Ozs7OztZOzs7YSxLO2E7ZTs7O2tCO2tCLGE7a0I7bUI7OztrQjtpQjs7YSxPO1k7b0I7Ozt1QjttRTt1Qjs7d0I7Ozt1QjtzQjs7Ozs7Ozs7Ozs7O1k7OzthO1k7Ozs7O2dDOzs7TTs7O0ksTztHO0c7O0k7OztLOzs7O0k7RztHO0ksVztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLO087OztVOzs7Ozs7ZSxZOzs7O2tCOztrQixNOzs7a0IsTTs7O2M7OztlO2U7MkI7Ozs7Ozs7Ozs7b0I7OztxQixPO3FCLFU7Ozs7O3FDOzs7d0IsSztxQzs7OztxQjs7b0I7b0IsTTs7OztvQixNOzs7Ozs7bUI7Ozs7b0IsUTs7Ozs7O21CLE07Ozs7O29COzs7cUI7O3lCO29COzs7O21COzs7b0IsUTs7Ozs7bUI7Ozs7b0IsUTs7Ozs7bUIscUI7bUIsVzs7OztjO1c7WTthOzthLFE7Ozs7d0I7YTs7Ozs7Ozs7d0I7Ozs7Ozs7Ozs7Ozs7VztZLFE7WTs7O1UsVztVO1M7O0s7Tzs7eUIsbUIsVTs7SyxLO0s7Tzs7eUIsb0IsVzs7SyxNO0s7Tzs7eUIscUIsWTs7SyxPO0s7Tzs7eUIsb0IsVzs7SyxNO0ssSztLO0ssUztLOztLOztNOzs7O1U7O1csTTtVLGtCOztXLE07O1U7Uzs7O007Tzs7Ozs7O1U7VSxNOzs7Ozs7O1M7Ozs7OztPLE07OztpQjs7OztLO007TSxJLDZCOzs7O1E7OztTOztVO1MsRztVOzs7O1E7Ozs7OztLOztNO007Ozs7Ozs7Ozs7Ozs7SztLO0k7SSxJLDZCOzs7O007O08sTTtrQjtNOzs7Ozs7O0s7Szs7Ozs7O1E7Ozs7OztTO1E7Ozs7OztrQjs7Ozs7Ozs7Ozs7Ozs7STs7SztLOzs7Ozs7UTs7Ozs7Tzs7Ozs7STs7SztLO29COzs7OztROzs7OztTO1E7OztrQjs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O0k7O087O3lCLG1CLGE7O0k7O1k7OztlOzs7Ozs7Z0I7a0I7OztlO2M7O0c7O0k7STtLO00sTTtNOzs7O1E7Ozs7aUI7OztROztRLE87Ozs7O2tCOzs7Ozs7a0I7bUI7O21COzs7b0IscUI7Ozs7Ozs7Ozs7Ozs7O21CLFk7Ozs7Ozs7OztxQjtzQixPOzs7OztrQzttQjs7c0I7OztvQixNO3VDO21COztvQjs7Ozs7Ozs7a0IsTzttQixNOztrQjttQjs7bUI7cUI7Ozt3Qjs7Ozs7O3lCLFU7eUI7eUI7eUI7d0I7dUI7Ozs7O2tCLE87Ozs7Ozs7O2lCOzs7UTs7OztTO1E7Ozs7UTs7O1E7OztTOzs7Ozs7UTttQzs7O0c7O0k7SyxvQjs7Szs7Ozs7Ozs7O0ksTzs7Ozs0Qjs7Rzs7O0k7Ozs7Ozs7OztPO1EsUztRLE87Ozs7O1cseUMsZTs7O087OztRLE87USxJO1E7O1c7OztVO1EsUTtROzs7Vzs7O2M7YztlOzs7OztnQixPO2UsTzs7YzthOzs7UTtVOzs7YTthLFc7WTs7USxVO1E7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Syx5Qzs7O1E7O1M7Ozs7USxnQjs7UTs7O1M7VztTLE87UyxhO1M7Ozs7O1EsVzs7O1E7Ozs7OztROztTO1c7NEMsYztTOzs7O2E7Ozs7Ozs7UTs7Ozs7UTs7O1M7Uzs7Ozs7UTs7Ozs7aUI7Ozs7Ozs7Uzs7O3VCOzs7Uzs7VTs7OztjOzs7K0I7O1U7WTs7Ozs7UztVOzs7O1M7VTs7Ozs7b0I7Ozs7Uzs7a0I7Ozs7Ozs7Ozs7UTs7UztXLHlDLGE7UyxlO1M7Ozs7O1M7Ozs7YyxTO2Msa0I7Yzt1QjthOzs7UTs7USxtQixPOztRO1MsUTtTLE07OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UTs7OztROztTOzs7Uzs7OzthOzs7Ozs7O1E7Z0I7OztROztTLFE7UztTLFE7OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UztRO29COzs7Ozs7OztJOztLOzs7Ozs7TyxVO29COzs7O0s7STtJOzs7SyxnQix5QztLLE87STtJO0ssTzs7SztPOzs7VSxrQjtTOzs7SyxPO0ssYTtJO0k7STtHOzs7STs7STtJO0ssWTtLLFM7SztPOzs7VTtTOzs7STs7O0k7OztLO0s7STs7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTO1M7Vzs0QyxjO1EsTzs7USxvQjtROzs7OztTOzs7OztROztTO1M7Vyx5QyxhO1EsTzs7OztROztTO1MsTztRLE87O1E7O1M7UztXOzs2QixtQixhOztRLE87Ozs7UTs7UztTLE87USxPOzs7O0c7O0k7STttQjtLLHlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEkseUI7UyxPOzs7Ozs7Ozs7USxtQjs2QjtRLHdCO1EsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEkseUI7UyxPOzs7Ozs7O0c7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTO1M7Vzs0QyxjO1EsTzs7USxvQjtROzs7Ozs7Ozs7Ozs7Ozs7OztVLEksd0I7VSxPOztTOzs7OztROztTO1M7Vyx5QyxhO1EsTzs7OztRLG1COztTOztVO1UsTztVLE87UyxPOztRLFc7USxPOztROztTO1M7Vzs7NkIsbUIsYTs7USxPOzs7Ozs7Ozs7Ozs7Ozs7OztTOztVO1U7VSxPO1UsTztTLE87O1EsSSx3QixPO1EsTzs7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7O0k7SyxZOzs7Ozs7Ozs7Ozs7O1EsbUM7UTs7Ozs7SyxNOzs7OztLO00sTztNLE87SyxPOztHOztJO0s7SyxNO0k7SztLO007Ozs7Ozs7UyxPOztTOzs7O1UsTTtTOztLO29FO0c7OztJOztJO0k7SyxZO0s7SztJOzs7b0I7TTs7O08sUTtPOzs7Ozs7Ozs7Szs7TSxVOzs7Ozs7Ozs7Ozs7OztVOzs7Vzs7Ozs7OztVOzs7OztXOzs7Ozs7O007OztPO08sVTtPLFE7Tzs7Ozs7Ozs7O2lCO0k7Ozs7O0s7Ozs7OztLOzs7O087O1MsTTtRLFc7USxPOzs0QyxXOzs7Ozs7O0sseUMsVzs7Ozs7O1EsTzs7Tyx5Qzs7O1U7O1c7VyxPO1U7a0I7OztVOzs7VyxNO1c7VzthOztXOzs7VTtrQjs7OztVOzs7Ozs7VTs7VzthOzhDLGM7VztXOztXOzs7VTtrQjs7O1U7OztXO1csTTtXLFE7Vzs7O1c7VTs7Ozs7bUI7Ozs7Ozs7Ozs7ZTs7O2dCLFE7OztnQjtnQjs7b0I7Ozs7O2dCO2dCOzs7Z0I7Z0I7Z0I7OzttQjttRCxlOztlOzs7Ozs7d0I7Ozs7Ozs7aUI7Ozs7a0IsUTs7O2tCO2tCOztzQjs7Ozs7a0I7a0I7a0I7OztrQjtrQjs2QjtpQjs7Ozs7OzBCOzs7Ozs7WTs7O2E7YTs7aUI7YTtlO2E7OzthOzs0Qjs7WTs7OztvQjs7Ozs7Vzs7Ozs7WTtZO2M7WTtZLE87Vzs7OztxQjs7Ozs7Ozs7VTs7VzthOzZDLGE7Vzs7O1U7OztvQjtxQjs7c0I7OzswQjs7O29CLE87bUI7Ozs7OztXOztZOztZLFE7WTtZLFE7WSxPO1k7OztlOzs7ZTs7O2dCO2dCO2U7Ozs7Ozs7WTtXOzttQjs7VSxXOztVO1csUTtXLE07VyxROzs7Yzs7O2M7OztlO2M7Ozs7Ozs7VztXO1U7Ozs7a0I7OztVOztXOzs7VztXLFE7Vzs7O1U7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztXOzs7WTtZO1k7MkI7WSxTOzs7ZTs7aUI7Ozs7O2tCO2tCOztpQzs7a0I7aUI7Ozs7eUI7Ozs7Ozs7Ozs7O2UsTTtjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxNOztZO2EsTzs7ZTtvRCxpQjs7Vzs7VTtXLFE7VztXLFE7Vzs7O2M7OztjOzs7ZTtlOzs4Qjs7Yzs7Ozs7Ozt1Qjs7O1c7VztVOzs7O2tCOzs7Ozs7O007TztRLFE7OztRO1E7Ozs7O087Ozs7O087USxPO1EsTztPLE87O0s7O00sTzs7OEI7O0s7O007TztRLFE7Ozs7OztXOzs7Ozs7O1MsTTs7O087Ozs7O1EsTTs7O0s7O00sTzs7b0M7OztLOzs7TTs7Ozs7O2lCOzs7Ozs7TTs7Ozs7TyxXO087TTs7Ozs7SztNLFU7O007SyxPO0k7SSxPOzs7STtLLE87SyxTO0k7Rzs7SSxzQzs7STtLLGU7SyxTO0s7Ozs7STs7RztJLGdCO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4QixPO3dCOztHOztJLEksVyw4Qzs7OzRCLE87OztHOztJO0k7Ozs7Ozs7Ozs7O0c7b0MscUM7O0k7STs7SSxPOzs7Yzs7aUI7OztxQjs7O3NCOzs7Ozs7Ozs7Ozs7O3lCOzswQixTOzBCLE07OzRCOzs7Ozt5Qjs7Ozt5Qjs7MEI7NEI7NkQsYzt5Qjs7eUI7MEIsTTs7Ozs7eUI7eUI7MEIsTTs7Ozs7Ozs7MkI7MkI7NEI7O2dDOzs7Ozs7Ozs7Ozs7Ozs7Ozt5Qjs7MEI7NEI7NEQsYTs7Ozs7K0IsUzs7K0I7d0M7Ozs7OEI7OzhCOzs7eUIsbUIsTzs7eUI7MEIsTTswQixNOzs7NkIsWTs2Qjs7OzhCOzZCOzs7OzswQjs7Ozs7eUI7OzBCOzs7eUI7eUI7MEIsTzs7NEI7Ozt5Qjs7MEIsUTswQjswQixROzs7NkIsWTs2Qjs7OzhCOzZCOzs7OzswQjs7Ozs7O2lDOztxQjtvQjs7ZSxNO2MsTzs7O3dCO3dCOzs7Ozs7Ozs7Ozs7Ozs7O3VCOzs7OztHOztJLFk7O0k7Rzs7STtnQjs7O00sTTtpQzs7STs7Ozs7Ozs7ZTs7Rzs7STs7OztROztJOzs7O0c7O0k7SyxVO0ssOEI7SyxZO0k7O0s7Ozs7Vzs7OztVOzs7SyxXOzs7SyxNO0k7O0s7OztROztLLE07Szs7O1U7Ozs7OztTOzs7SztJLFc7Rzs7STtLLGtCLE07SyxPOztJO0ssTztJO0k7SyxNO0ssTTtLLE07SSxPOztHOzs7STtLLE07OztLO00sTTs7TSxNO007UTtLLE87STtJOztPOztPOztPO2U7Ozs7STtLLE87STs7SztLLFU7SSxPOzs7Ozs7Ozs7O0c7OztNLHVCOztNO0s7O0k7OztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJO0s7SyxhLFc7STtHOzs7Ozs7Ozs7O0k7Szs7OztLLGtCO0s7SyxZO0k7Ozs7O1k7O0c7O0k7SztPO1M7OztZOzs7Ozs7WSxTO1k7YTtlO2EsSTtZO1c7O0ssUTs7O0ssTztJLE87OztjLGM7O2M7YTs7O0c7O0k7SztPOzs2Qix3Qjs7Ozs7OztJO0c7RywyQyxTOztJLDJCLE8sK0I7Rzs7STs7YSxjLE87Ozs7O3VCLFc7dUI7c0I7WTs7Rzs7STs7O2M7YTs7NEIsUzs7OztHO3NCLE8sb0I7OEIsNEI7O0k7OztLO0s7OztLLE87OztJOzs7YyxXO2MsVzthOzs7YSxXO2EsVztZOzs7OztHO0ksbUMsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7YyxPLGM7YTs7NEIsTyxjLHFCOzs7O0c7d0IseUI7O0ksUSxxQyxTOztJOzs7YztjO2E7Rzs7SSxPOzs7YztjO2E7OztHOztJLHVEO0k7Rzs7SSxzQztnQjtJOztLLFE7SyxPO0ssTztLLFM7SztLO0ksVzs7O0k7O087Ozs7OztROzs7UTtPOztPOzs7UTs7O087O08sTzsyQzs7OztJO0s7Szs7Szs7TTs7UTs7O1c7VztVOzs7O0k7Rzs7STtLO087OztVO1U7Uzs7O0s7Tzs7Ozs7Vzs7O29COztxQzs7O1U7VSxPOzs7b0I7b0I7bUI7Ozs7STtHOztJLEksVTs7Szs7USxvQjs7Ozt1QixNOzs7OztTOzhCLE07O1MsSSxrQjs7Ozs7VyxVO1c7O1UsTTs7UztVOztVLFU7dUIsTTtTOztVLDBCLHNCOzs7YTs7O2M7Ozs7YTs7Ozs7Ozs7WTtVO1U7Ozs7Yyx3QztjOzthOzs7O1M7Ozs7Ozs7Ozs7O1M7VTs7Ozs7Ozs7VTtTOztpQyw2Qjs7Ozs7O1E7Ozs7OztTOzs7UTs7Z0MscUM7O1E7Ozs7O1M7UTs7Z0MscUM7O1E7OztTOzs7UTs7Z0MsNkI7Ozs7Ozs7Ozs7O3NCOztVOztnQyxnQzs7OztTOzs7O1U7VTtZOzs0Qjs7VSw0QiwwQjtVLDBCLFk7OzthOzs7ZSxNOzs7O2U7ZTs7O3VCOztjOzs7O1k7VTtZOzJDLHdCO1M7O1c7WTtjO1k7Ozs7Ozs7Ozs7NEI7Ozs7WTs7WTs7Ozs7YTs7Ozs7Z0I7Ozs7YSxNOzs7Ozs7OztnQjs7Ozs0Qjs0QjsyQjs7ZTs7WTs7O3NCLGU7Ozs7OztnQzs4Qzs7Ozs7OzBDOzs7Ozs7Ozs7MEMsTzt5QzsrQjtxQjs7Ozs7OztZOzs7YTs7O2dDLDZDOzs7Z0IsaUIsaUI7Z0I7Ozs7b0I7Z0IsTTs7O3lCOzs7ZTs7Ozs7WTs7O1E7UTs7UTs7OztTLFU7OztTLFU7OztTO1M7O1E7OztrQjs7Ozs7bUI7cUI7bUI7cUI7bUI7O2tCO2lCOztROzs7OztTLFU7OztTO1M7UTs7O2tCOzs7bUIsUTtrQjtpQjs7USwwQjtROztROzs7O1M7UTs7O2tCO2tCO2lCOztROzs7O1M7UTs7O2tCO2tCO2lCOztROzs7O1M7UztROzs7a0I7a0I7aUI7O1EsOEI7UTs7OEIsc0I7OztROzsrQixzQjs7O1E7OytCLG9CO2dCLDRCOztJOztLO2M7OzhCOztJOztLOztROzBDO2UscUMsUzs7Syw0QixjO0k7OztLLFU7Szs7STs7Ozs7O0s7SztPO0s7SyxTO0ssUTtLOzs7Szs7SztPOzs7Ozs7OztLLFE7SztJO0c7O0ksTzs7MkI7O0c7dUIsNEIsd0I7Rzs7O00sdUI7OztPOztROztXLE87Ozs7OztVO1E7O1csVTtXLE87VTtRO1U7WSx3QyxZOztRLE07UTtVO1ksMkMsZTtRLFMsVztPO2U7OztNO08sTzs7Ozs7Ozs7OztNO007TyxVO08sTztNO007TztTO1csd0MsWTs7TyxNO08sVyxXO007Yzs7Szs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Z0MsTztJLEc7SyxNO0k7SyxPO0ssTztJLFMsTTtJO0c7O0k7OztPLEc7USxNO087O087Ozs7OztRO1U7OzJCOztPOzswQixpQzs7Tzs7Ozs7O1E7Tzs7Tzs7Ozs7UTtPOzs7Tzs7c0Isd0M7O087Ozs7Ozs7Ozs7OztjLEcsZ0M7Ozs7Ozs7Ozs7Ozs7O2UsRztnQjs7Ozs7Ozs7Ozs7O2EsRztjOzs7Ozs7Tzs7ZTs7Z0M7Ozs7Tzs7OztRO1U7OzJCOztRO1U7OzthO2E7WTs7O1E7VTs7O2E7YTtZOztRO087O087Ozs7O1E7VTs7MkI7O1E7VTs7O2E7YTtZOztPOzs7Tzs7ZTs7Z0M7OztPOzs7O1E7Tzs7Tzs7OztRO087O087Ozs7UTtRO087O08sa0M7Tzs7TyxrQztPOztPOzs7Ozs7UTtRO087OztPOztPOzs7Ozs7UTtVOzsyQjs7UTtPOztvQzs7O087ZTs7OztJOzs7SyxRO0ksTzs7O0ksTzs7O2M7YzthOzs7O0c7O0k7STs7O1E7O1E7O1E7O1Esc0I7Ozs7VSxXO1U7OztROzs7OztRO1MsTzs7O1E7Ozs7Ozs7O1E7OztXO1c7VTs7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7Ozs7Ozs7OztRLE87OztROztRO2tEOzs7UTtrRDs7USxPOztnQzs7OztRO1E7OztXO1c7VTs7USxPOztnQzs7OztRLE87OztROzs7OztROzs7OztRO1E7Ozs7O1E7Ozs7O1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtRLE87Ozs7O0s7OztHOztJOzs7SSxPOzt5QixnQyxrQjtHOztJLE87OzRCO0c7O0k7Ozs7O0c7O0k7Ozs7O0s7Ozs7Ozs7Ozs7OztXO2E7O2M7bUI7WTthOzs7WTs7Ozs7Ozs7bUIsTTtLLFM7Szs7O1EsbUIsTztRLFMsTTtRO087O0s7TSxPO00sTztNLFc7SztNLEksVyxxQzs7OzhCOzs7SztLO007UTs7MEIsa0IseUI7O007TTtRLDJDO00sZTtNLFU7TTtROzs7VyxPO1U7Ozs7TSxTO007USx5QyxrQjtNLFk7Szs7STtLO007Ozs7TTs7OztVOztLOzs7OztNOzs7ZTs7OztHOzhCO0c7STs7Ozs7Ozs7OztJO0ssUTtLLFk7SyxXO0s7SztJO0s7O0ssVztLLE87STs7Szs7eUIsTzs7OztTOzs7VSxVOzs7Ozs7Ozs7OztXOzs7OzthOzs7OztZOzs7OztTLE87Ozs7eUIsa0I7Ozs7Uzs7OztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VTtVO1U7VSxjOzs7O1k7O2EsSzs7WTtZOzs7O1U7VTs7Ozs7SyxPO0k7MkIsNEI7O0s7OztLOzs7STs7Szs7Szs7O0k7STs7Szs7Ozs7OztVLEc7VztZLEs7WSxPO1k7O1ksTTs7OzJCOzs7Ozs7O1MsRzs7O2dCOztLLFc7SyxPOzs7ZSxrQztlO2M7OztJO0ksYTtHOztJOzs7K0I7Ozs7O0ksSSxvQixRO0k7SyxJLFcseUM7Ozs2Qjs7O0k7O0ssWTs7OzthOzs7SztLLE87STs7Ozs7OztTO1MsTzs7aUM7Ozs7Ozs7Ozs7Uzs7O1k7WTtXOzs7Ozs7UyxPOztpQzs7Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7UztTOzsyQixrQiwyQjs7UyxPOzs7bUI7bUI7a0I7Ozs7UztTOzsyQixrQiwyQjs7aUI7OzZCOzs7OztTO1MsTzs7aUM7Ozs7Ozs7O1c7VztZO1ksTztXOzs7O1M7Ozs7Ozs7Uzs7Ozs7UztTOzs7OztTOzs7OztTOzs7OztTO1M7Ozs7Ozs7UyxPOztpQzs7Ozs7O2lCOztNOzs7O0k7SSxZOzs7Ozs7Uzs7Ozs7O1U7WTs7NkI7O1M7Ozs7UztpQjs7a0M7OztTOzs7Ozs7VTtTOztTOzs7OztVO1M7O1M7OztVO1k7OztlOzs7Ozs7OztnQjtnQjtrQjs7ZTtjOztTOztTOzs7O1U7WTs7NkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7OztrQjs7Ozs7Ozs7O1M7O1M7Ozs7VTtVO1k7OztlO2U7Yzs7VTtZOzs7ZTtlO2M7O1U7WTs7NkI7O1M7Ozs7O1M7Ozs7O1U7WTs7NkI7O1U7WTs7O2U7ZTtjOztTOzs7O1U7MkI7Ozs7O2tDOzs7Uzs7VTtZOzs2Qjs7UztVO1csUTs7O1c7YTs7O2dCO2dCLFc7ZTs7VzthOzs7Z0I7Z0IsTztlOzs7O1csTztXO2E7OztnQjtnQjtlOzs7O1U7Ozs7aUM7Ozs7Ozs7O1c7Vzs7Ozs7Uzs7O1U7OztTOzs7WSxNO1c7Vzs7OztVO1U7Ozs7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOztTLGtDO1M7O1Msa0M7Uzs7Uzs7Ozs7O1U7VTtTOzs7Uzs7Uzs7Ozs7O1U7WTs7NkI7O1U7Uzs7O1M7OztTO2lCOzs7STtLOzs7SyxNO0k7SyxJLFcsMEM7Ozs2Qjs7O0k7O0s7SztLLE87STs7SztNLFU7Ozs7Ozs7O007TyxROzs7Ozs7OzhCOzs7O0k7Ozs7Ozs2Qjs7Uzs7Uzs7Ozs7OzthO2EsTzs7cUM7O1k7Uzs7VTtXO3lCOzs7Ozs7Uzs7Ozs7Ozs7OztVO1c7Vzs7OztTOzs7Ozs7Ozs7Uzs7Ozs7O1M7OzJCLG9CLDZCOzs7Ozs7UyxPOztpQzs7Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7UztTOzsyQixrQix3Qjs7UyxPOztrQyxrQix3Qjs7OztTOztTOzsyQixrQixzQjs7aUI7OzZCOzs7OztTLE87O2lDOzs7O1M7Ozs7O1M7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7Uzs7Ozs7OztTO1M7Ozs7Ozs7OztTLE87O2lDOzs7Ozs7Ozs7Ozs7O0k7SSxjO0k7Szs7TSxlLDZCOztLO0k7STtLOztNLGUsNkI7O0s7STs7Ozs7OztTLEksVSwyQzs7O2dDOzs7Ozs7Ozs7YTs7Ozs7YyxNO2E7WTtTOztVO1c7dUI7Vzs7WTs7Ozs7Uzs7Uzs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7WTthLE07YSxNO2dCO2EsVTthLE87Ozs7OztTLE87Ozs7OztVO1c7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7YyxJLDJCO2M7Ozs7Ozs7OztpQixNOzs7OztlOzs7ZTs7Ozs7Z0I7Ozs7OztZOzs7OzthO1k7O1k7Ozs7O2E7OztjO2M7Ozs7YTthOzs7Ozs7O2E7YTs7Ozs7O1M7Ozs7O1U7Uzs7Uzs7O1U7WTs7O2UsVTtlO2M7O1M7OztTLGM7O1M7Ozs7VTtVO1k7OztlO2U7Yzs7VTtZOzs7ZTtlO2M7O1UsVztTOzs7OztTOzs7OztVLE07VTtZOzs7ZTtlO2M7O1M7OztTLGU7O1M7Ozs7OztVO1M7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOzs7O1UsbUI7VTs7O1M7VTtVOzs7OztTLGtDO1M7O1M7Ozs7OztVO1U7Uzs7eUM7O1M7Ozs7OztVLE07VTtTOzt3Qzs7O1MseUI7OztpQjs7O0k7SztLLFE7SztLLGE7SSxRO0k7Rzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHdCOzRCOzRCOzRCOzRCOzRCOzRCOzRCOzRCO2E7SztJO0c7O0k7OztROztROztROztROztROztROztROztRO2dCOzs7STtHO0c7STs7Ozs7SSxVO0k7Rzs7SSxVO21CO0k7Ozs7Rzs7SSxvQjtJOzs7Tzs7O1EsUztnQjtRLE07TztPLE87TTs7SSxVO0k7SSxPO0c7Rzs7OztJLGtCO0k7STtLLGU7SyxTLDJCO0k7SyxNOztJO0ksSSw0Qjs7OztNO08sTTtPLE87TyxNOztNOzs7OztJO0s7Tzs7O1U7Ozs7O1c7VTtTOzs7OztJO0c7bUIsWTtpQyxZOztJO0k7aUIsTTs7Ozs7OztLLEc7TTtNOzs7O0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7STtJOzs7O0ksaUI7O0c7O0k7Szs7bUIsVyxxQzs7O0c7O0ksRztLLE87STs7UztLOztROztLLE87O0k7Rzs7SSxPOzs7YyxXO2M7ZTtnQixhO2dCO2tCO3FCOzs7Ozs7Ozs7OztjO3lCOzt1QzswQjs7O2UsWTs7Ozs7O2U7O2dCLE07Z0IsTTtnQixNO2UsTzs7YyxJLFU7Ozs7O2U7O2dCLE07Z0IsTTtlLE87O2M7Ozs7b0I7Ozs7O0c7O0k7OztPOzBCOztPLE87TTs7OztHOztJOztpQjs7OztNLEcsdUM7TTs7Ozs7TTs7O08sTztNOzttQztPOztNOzs7OztHO0c7STs7OztJOztJLGlCOztJLE07Rzs7STs7O0s7SztNO08sTTtPLEs7TTs7O3NCOzs7Ozs7Tzs7Ozs7Ozs7Ozs7SyxJLFE7Ozs7Ozs7ZTs7cUI7O0c7O0k7STtLLE07SyxNOztLO3NDLDRCOzs7Rzs7STs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCOzZCLE87NEIsTztHOzs7OztJOzs7Ozs7STs7OzswQiw0Qzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTzs7O0ksVztJLE87O2M7RztHOzs7OztJOztJOzJCLHFDOztLOzRCO0s7STs7Szs7SztJO0k7O0c7OztJO0k7O0k7Rzs7STtLO0s7Ozs7O00sTTs7O0c7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Rzs7SSxJLHdEOzs7OztNLFk7a0IsTTs7b0I7TSx1QjtNO007O0s7O0c7O0k7a0I7O0k7Rzs7SSxXO0k7OztPO087TTs7STtHOztJO0ksTztHOztJLEksK0IsTTtJLE87Rzs7SSxJLHFEOzs7O007TTtNOzs7OztJO0k7STtJO0k7SSwrQjs7OztNO007TTs7Ozs7STtJO0k7STtJO0ksK0I7Ozs7TTtNO007Ozs7O0ksTztHOztJOzs7Ozs0Qjs7NEI7OzRCOzs0QixPOzs4Qjs7OEI7c0M7OztPOzs7UTtVLDRCOzs2QixvQyxTO087Tzs7Tzs7UTtVLCtCO087OztVLE8sK0I7Uzs7TzttQzs7Rzs7STs7O08sTztRO087UTtRO1E7Ozs7OztROzs7TTs7O0ssUztLLE87O2tDLE8sMkI7OztlLEksUSxlOzs7dUM7OztjO0k7Ozs7SyxPO0ksZTtJLE87O2lDLE8sK0I7OztjOztpQjs7Ozs7OztpQzt1QjtlLE07O2M7YTtHOztJO0k7STtJLE87Rzs7SSxPOzs7Yzs7O2lCOzs7a0I7O2lCOztpQixxQztpQjs7aUIscUM7aUI7O2lCLHVDO2lCOzs7aUI7O2E7O0c7O0ksVztJOzs7TztPO087TTs7O0k7Rzs7STtHO21DLHVCOztJO087SztJLFc7STs7O087TztPO007Ozs7Rzs7SSxXOzs7STtJOztHOztJO0ksd0I7Rzs7STtJLGlCO0k7Rzs7SSxPOzs7YztpQzs7YzthOzs7Rzs7SSxPOzs7YztpQzs7YzthOzs7Rzs7STs7O0ssaUI7Szs7TTtNLFU7O2EsTTtLOztJLE87RztpQyx1Qjs4QiwrQjs7STtLOzs7Rzs7STtJOzs7TztRLE07UTs7MEI7OztNOztJO0c7O0k7RzttRDtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Rzs7O00sdUI7O00sVztLOztJOzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7STtLLFU7SyxNO0ssTzthLDRCO0k7SSxNO0c7O0k7Z0I7O0ksTzs7Ozs7Yzs7O0c7O0ksd0I7RztpQzs7SSxJLEssNEI7STtJO0k7SSxPO0c7O0ksUztJLE87Ozs7ZTs7Yzs7O2M7ZTtlO2lCLDJCO2M7ZSxNO2MsVTs7YyxPO2E7Rzs7SSxTO0k7STtLLE07SztPOzs7VTtXO1csUztXLE07VyxNO1csTztzQjtVOztXO1csTTs7aUI7VyxNO1UsUztVO1c7WSxNOzs7Ozs7OztVO1UscUI7VTtVLE07Ozs7STtHOztJLGdDO2U7STs7O2tCLFc7SyxRLFc7STtJOzs7SSxnQztlO0k7OztrQixXO0ssUSxXO0k7STs7O0k7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFM7STtLO2U7Szs7O00sVTtNLEc7TyxNOzs7Ozs7Ozs7O1c7Ozs7STtHOztJLGMsK0I7Rzs7STtLLFM7SyxTOztJO0c7OztJO0s7Szs7O0kseUIsTywyQjtJO0s7O1E7VTs7VyxVOztXO1k7Ozs7Ozs7OztZLFU7WTs7VyxPO1U7OEI7Ozs7Szs7UTtVOztXO1c7VTtLOzs7UTs7OzswQixPLDhCOztJLE87Ozs7O2M7YTtHOztJOzs7OzsyQjs7Rzs7STs7SyxPOzs7SSxPOztHOzs7TSx1Qjs7TSxXO0s7OztJO0k7SSxPOztpQyxzQzs7O2MsTzt1Qjs7d0I7Ozs7Ozs7dUI7YTtHOztJO0k7OzsyQjs7O0c7O0k7STs7OzJCOzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7STs7Ozs7Ozs7SSxPO0c7O0k7STtJO0k7STtJO0ksTTtHOztJO0k7SSxNO0c7O0k7STtJLE07Rzs7STtJLE07Rzs7SSxZOztJO0c7O0ksWTs7STtHO0c7STtJO0k7STtJO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87O0c7O0k7O3NCLE07Ozs7O0s7O1E7O3NCLE8sOEI7O0s7Ozs7O00sTzs7OEI7Ozs7OztHOztJLGdCOztLLE87OzZCOzs7OztHOztJOzs7aUI7O2lDOzs7Ozs7O0c7O0k7SyxTO0ssTztLLFE7a0MsTztJLFc7STs7cUI7Ozs7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxPO0ksTyxXO0c7OztLLCtCLFM7STs7SywrQixhO0k7Ozs7Ozs7Ozs7USxvQjs7O1MsTzs7aUM7Ozs7Ozs7OzBCOzs7O1U7O1U7O1U7O1U7O1M7OzBCOzs7VTs7Uzs7UTs7Ozs7O1M7Ozs7O2E7O3dCOzt3Qzs7OztZO1M7Ozs7Uzs7OztTOztVOzs7VSxPOzs7Ozs7UTs7eUI7O1E7Uyx5QixTO1M7UztvQjtRLHFCOzs7O21COzttQzs7Ozs7Ozs7O1E7O1E7O1E7Ozs7Ozs7OztVOztVOztVOztVOztVOztTOzs7Uzs7Uzs7Uzs7Uzs7UTs7eUI7Ozs7Uzs7Uzs7Uzs7Uzs7VSxPO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTOztROzs7TTtPO087Ozs7Ozt3Qjs7OztRLE87Ozs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7Ozs7Ozs7O1M7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7OztTOztTOztTOytCOztTLGM7dUI7UyxzQixPO1MsTzs7aUM7Ozs7OztTLE87Ozs7Ozs7O1M7O1M7Ozs7UyxjOztVLE87O2tDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDO1M7O1UsTztVLE87Ozs7OztTOzs7Ozs7Ozs7OztTOzs7O1UsYzs7VyxPOzttQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7UTs7UTs4QixPOztROztROzs7Ozs7Ozs7Ozs7UTtROzs7OztrQjtrQjs7OztRO1E7Ozs7O2tCO2tCO2tCOzs7O1E7OEI7Ozs7SSxlOzs7OztjOzsrQjs7OztHOztJOzs7O0k7O087O0ksRztLLEksUzs7TTs7TyxNO08sVztPLE87TSxXO00sTTs7SztNLE07Ozs7SztNO087O1U7Ozs7O2E7YTtZOzs7TTtPO08sZTtPOzs7Ozs7OztNOztPO21EO087TyxPO00sVztNO00sTTs7Szs7Ozs7Ozs7UTs7O1c7O1U7Ozs7OztROzs7O1csYztXOztZLGE7WSxZO1c7OztJOzs7TztPO007O0k7SyxRO0s7OztPOzs7USxROzs7Ozs7Ozs7b0I7OztTO1UsTTtnQjs7Ozs7Tzs7Ozs7O1UsSSxjOzs7O1ksTTs7O3FCOzs7O1U7Vzs7Ozs7Vzs7Ozs7OztVO1csTTs7Ozs7OztPO1EsTTs7TztRLE07USxNOzs7Ozs7OztPOzs7Ozs7OztNOzs7UztTO1E7Ozs7Ozs7O0ksVzs7SSxXOzs7Rzs7STtJO0ssTTtLLE07SSxPO0c7RyxJOztJO0s7SyxNO0ssTTtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0c7O0k7O0s7O087WTtNLEc7TSxHOzs7Ozs7STtHOzJCLDRCOzJCLDRCOztJOzs7Szs7UTs7MEIsNEI7O1k7TTs7O0s7Tzs7O1UsbUI7O1UsTztTOztNOzt1QztJLFU7STs7Ozs7Ozs7OztRO1E7UTtROztTLFU7OztPO087O2dDOzs7VTtVO1U7OztXOztZLFU7Ozs7Ozs7OztVOzs7Ozs7O21CO1csTTs7Ozs7VTs7WTtpQjs7YTs7Ozs7Vzs7YTtrQjtZOzs7aUI7Ozs7WSxjOzs7O2E7O1k7O2U7WSxNOzs7Ozs7Ozs7VTs7VyxNOzs7O1U7O1csTTs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7O0c7OztJO0s7WTtLOzs7OztNOztPLFk7TyxNLFc7TyxNO08sWTtNO00sTTs7O0s7O00sTSxXO00sWSxXO00sVztLO0ssTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQiwrQzs7SSw4QjtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7RztvQix3RDs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7O08sNEMsUztJOzs7O0c7O0k7Rzs7STtHO29CLHdEOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7OztZO0c7O0ksd0M7Rzs7STtHOztJOztLO087O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0ksVztJLFc7RztHOztJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHO0c7STs7OzJCLFM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOzJCLDZDOztJO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJO0c7O0ksTTs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0ksMEI7Rzs7STs7O1k7Rzs7STtHOztJLG9DO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7eUIsbUQ7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHO3lCLG9EOztJO0c7dUIsa0Q7dUIsa0Q7O0k7Rzt1QixrRDt3QixtRDt5QixvRDt5QixvRDs7STtHOztJO0c7eUIsb0Q7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7RztrQiwwRDs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxhOzs7Ozs7Ozs7Ozs7Ozs7O0s7TTs7UyxNOztROztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJO0ksTzs7O2M7O2U7OzswQyxpQzs7NEM7ZTtnQjsyQjs7ZTsyQyxXLGM7ZTs7O2tCLHVCLGtCLGlCOzs7a0I7OzJCOzJCLHVCOzBCOzs7a0IsMkIsWSxpQjs7O2tCLDJCLFksaUI7OztrQjtzQyxvQiwwQjs7O2tCO3NDLFksMEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7Ozs4QjtrQjs7O21CO21CO3FCOztzQzs7a0I7OztrQjs7c0Msb0IsMEI7OztrQjs7MkI7b0U7MkI7MEI7OztrQjs7MkI7MkI7MkIsTzswQjs2Qzs7YztjO2E7O0c7MEIsbUI7NEIsbUI7O0csdUI7RyxJO0csMEI7RztHLHlCO0c7RyxzQjtHO0csMEI7RztHLDZCO0c7Ryw0QjtHO0csNEI7RztHLDJCO0c7RyxpQztHO0csa0M7RztHLGdDO0c7Ryx3QjtHO0csd0I7RztHLHdCO0c7RyxxQjtvQixrRDs7Ryx5QjtHO0csd0I7RztHLDhCO0c7RywyQjtHO0csOEI7RztHLCtCO0c7Ryw2Qjs7STtLLE87SyxPO0ksTyxXO0c7O21CLG9EO21CLG9EO0c7SSxRO0k7Ryx1QjtHO0csMEI7RztHLDBCO0c7Ryx1QjtHO0csMEI7RztHLHNCO0c7RywyQjtHO0csOEI7RztHLDBCO0c7Ryw2QjtHO0ksYztJO0csNEI7bUIsa0Q7O0csc0I7O0k7SyxPO0ssTztJLE8sVztHOztHLGlCO2tDLDhCO29DLDhCOztHLHVCO0c7RyxzQjtHO0csd0I7RztHLG9CO0c7RywrQjtHO0csd0I7RztHLG9CO0c7Ryx3QjtHO0csbUM7Z0Msc0M7O0csc0M7O0k7STtHOztHLHlCO0c7Ryx1QjtHO0csdUI7eUIsNkI7O0csdUI7RztHLDJCO0c7RywyQjtHO0csdUI7RztHLDJCO0c7RyxvQjtHO0csc0I7RztHLHNCOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0csd0I7NEIsTyxrQzs7SSxPOztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7bUMsOEI7O0csMEI7RztHLDZCO0c7Ryx1QjtHO0csbUM7RztHLDhDO087Ryx5Qzs7STtJO0ksTztHOztJO0k7STtJLE87Rzs7Ryx1QztzQixtQzs7Ryw4QjtxQyw4Qjs7Ryx1Qjs7RyxpQjtHO0cscUI7RyxJO0csd0I7RztHLG9DO0c7RyxpQjtrQixrQzs7SSxlO0ksTztHO3FCLGdEO3dCLGtDOzs0Qix1Qzs0QixpQzs7Ryw4Qjt3QixtQzt3QixrQzs7RyxpQjtHO0csb0I7RztHLGlCO0csSTsyQiw0Qjs7Ryx5QjtHO0cseUI7RztHLHVCO2tDLDZCOztHLDRCO0c7Ryw0QjtHO0csMEI7aUIsa0M7O0csc0I7O0k7OztHLG9CO3NCLDZCO2tCLGtDOytCLDhCOztJLFk7Z0I7SSx1Qjs7OztlOzs7OztHOztJLFk7Z0I7O0ksTztHOztHLHNCO0c7Ryx5QjsyQixPLDBCO3dCLE8sMEI7eUIsTywwQjs7Ryw0QjtHO0csK0I7MEIsVzsyQixXO29CLGtDOztHLDBCO0c7RyxzQjtHO0csc0I7RztHLHdCOzs7Ozs7O0k7Ryw0Qjt5QixTOztJO0ksTTtHOztJO0ksTTtHOzBCLFM7O0csc0I7OEIsOEI7Ozs7O0csOEI7O0k7SyxNOzs7O0c7O0cseUI7O0k7STtHOzs7Ozs7RywwQjs7SSxPO0c7MEIsbUQ7cUIsTyxpRDt1QixTO3VCLFM7MEIsUzswQixTOzZCLDRCO29CLGtDO3FCLGtEOzs7O0csd0I7O0ksTztHOztHLHlCO0c7MkI7RyxJO0cseUI7RztHLHNCO0c7RywwQjtHO0csd0I7O0ksZTtJLE87Rzs7SSxXOzs7Rzs7STs7OztHOztHLDhCOztJOzs7O0c7O0k7OztHOztJOzs7Rzt5Qiw2QjsyQiw2Qjt1QixPLHFDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksbUIsTTtJO0ksTztHOztJOzs7OztLO087Ozs7O0ssTTtLLFk7SyxNO0ssTTs7SyxZO0s7SyxNO0ssUztJO0ksTzs7O0k7STtJOztLLE07SyxNO0ksTztHOzs7STtLLFksa0I7Ozs7Z0I7Szs7OzsyQjs7Ozs7STtJLFU7STtLLFk7Ozs7Ozs7STtJO0k7Rzs7SSxHLG1DO0ksZTtJO0k7Rzs7STtLLFU7Szs7O2M7YyxPO2E7STs7O0s7O00sTSxXO0ssZTtLO00sTTtXOzs7Ozs7SztNLE07b0I7Ozs7SztNLDBCO007OztJLE87Ozs7NkIsTyx3QjtHOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7dUIsZ0M7a0MsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssWTtLO007TyxPOzs7Ozs7TSxJLEksTzs7Ozs7TztPOzs7Z0I7OztLO0s7Ozs7OztLO0s7O0c7O0ksK0M7SztJO0k7Rzs7O0k7SztNLE87TTtROzt3QixPLHFDOztNLFE7TSxPO007UTs7d0IsTyxtQzs7O0s7a0IsTTtNOzs7Ozs7O1UsVztVLHFCO1M7TyxVOzs7O0s7O007OztXOzs7OzRCOzs7STtLLFc7SyxXO0ssVztLO087OztVLE8scUI7Uzs7SztPOzs7VSxPLHFCO1M7O0k7Ozs7TTtPOzt1QjtLOzs7OztNLE87SyxXOzs7Ozs7Ozs7OztJOztZOzs7STtLO007OztXO3lDLHlCOzs7O0ksSztLLE87O0k7O0ssVTtNLEk7Ozs7VTs7STtLO087OztJOztNLE87SyxVO007TTtNLEk7Ozs7O00sMEI7TSxJOzs7OztHOztJOztLLGlCO0s7OztJOztLO0s7OztJOztLOzs7O007SztJOztLO0k7STtJO0k7O0k7SSxPO0c7O0ksTztHOzRCLFEsNEI7OztJOztJO0s7TSxhO007UTtVOzs0QixPLGtDOztXO1k7Yzs7WSxPO1k7Yzs7O2lCO2tCLFM7a0IsTztpQjtpQixVO2lCLE87Z0I7OztZLEk7VztVO0s7Ozs7Szs7TTtNOzs7SztNO1E7O1M7O1MsYTtTO1M7VTs7VztZLFk7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCO2lCLGM7O2lCOzs7Ozs7Ozs7OztjOzs7O2dCOztpQixPOzs7Ozs7Ozs7Ozs7Ozs7O1E7O3dEO0s7O0c7Ozs7Ozs7O0s7SztLOzs7UTs7UyxZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CLDRCOztPOztLLE87OztLO00sYTs7O1E7O2dDOzs7O00sTztLO2tCOztJO0ssVztLLG1COzs7aUI7MkI7OzhCO0k7SyxxQjs7SyxXO0k7TTs7O1MsTyxxQjtROzs7Ozs7Szs7TTs7O0k7O0s7Tzs7OEI7Ozs7OztLLFc7SztPOzs7O0ssVztLO087OztNLFc7TTtlOzs7Ozs7Ozs7STtLLGMsZSx3QixTO0ssVztLLE87STs7Ozs7O0k7O0c7O0k7OztJOztHOztJOztJOztLLE87SyxPO0ssTztLLE87STs7STtLOztRO1c7O0s7O2lELGU7Rzs7STs7SyxPO0ksRztLO0k7O0ssTztJLE87OztHOztJLE87OztjOzs7ZSxJO2MsRztlLFc7ZSxPOzs7Ozs2Qzs7O2MsVztjLE87YTs7Rzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztJOzs7STs7O0s7TTs7Ozs7Ozs7O0ssYztLLEc7TTtjO007O0ssUzs7TTtjO007Ozs7O1MsVztTLE87UTs2Qjs7O0s7TSxPO00sTzs7TTs7Ozs7Szs7Ozs7TTs7O1M7Ozs7TTs7O1M7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STs7SyxxQztJOztJO0s7Szs7Ozt3QixjO3dCLG1CO3dCLG1COzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDOzs7OzttQzs7Ozs7OztxQzs7Ozs7c0M7Ozs7O3VDOzs7Ozs7O3VCOzs7Ozs7Ozt3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEM7Ozs7OzRDLDZCOzs7Ozs2QyxrQzs7Ozs7aUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNO00sVTt3QixpQjtLOzs7O3NCOztLLGU7SztLOztNOztPLEk7TztPO1M7OztZOzs7OzthLFU7YTthO1k7WTtZO1c7O007OztTOzs7Ozs7VTtTO1M7OztZO2EsRztjO2EsVzthOztZLEc7YTtZLFc7WTtXOzs7O1UsVTtVLFE7Ozs7O1M7UTs7TTs7Ozs7OztPOzs7VTtXLFE7OztXOztVOzs7YSxVO2E7WTs7Ozs7O29CO29COztTOzs7O087YztPLFc7TztPOztvQyxzQzs7Tzs7VTs7O2E7YSxPO1k7O087OztVO1U7VTs7O2E7OztjO2EsTztZOztVO1UsTztTOztPOztNOzs7TSxVO007O0s7Szs7OzsrQztLO0s7O0c7O0k7SSxPO0c7O0k7SztLOztJOzs7ZTtLO0ssYztLLE87SztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7SyxTO0ssTTtJO0k7SyxNO0s7TztJLE87YTs7YyxPOzthO0c7O0k7SyxNO0ssTTtLO08sVztJLE87YTtHOztJLE87YTs7YztlLE0sVztlO2lCO21COztlOztlOzs7OztrQjttQixNO21CLE07a0IsTzsyQjs7OztpQjtjO2M7YztjO2M7YTtHOztJO0ssUztLLE07SyxLO0ksTztHOztJLFU7SSxPO2E7O2M7YyxHLDZCO2MsSTs7YTtHOztJO0ssYTtLLE07SztPLFc7SSxPO2E7Rzs7STtLLE07SztPO1MsVztLO08sVztJLE87YTs7Ozs7Z0I7Z0IsTztlOztHOztJLFU7SSxPO2E7OztlOzs7OztlLE87Ozt5QjswQixNOzBCLE07eUIsTzt3Qjs7YztjLE87Ozs7O3dCO3dCLEs7eUI7eUIsSzswQjs7d0I7d0IsTzt1QjthO0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0dtR3JvQk07Ozs7SUFBQTtJQThITTtJQU1abzZIO0lBRUFDO0lBcENPLGtCQWtDUEQsU0FFQUM7SUE0Qko7R0FFUTtHQUVlLFNBQW5CQyxXLFU7R0FQQTtJQUFBOztPQU9BQTs7OztJQVMwQjtJQW9DWDtJQWxCQTtJQWlDTjs7Ozs7RTs7Ozs7Ozs7Ozs7O0dFaE5EOzs7OztJQUFBO1lBbUNSQyxJQUFLQyxHQUFTQyxHQUFJLE9BQUpBLEtBQVRELElBQUFBLElBQVNDLEVBQTJCO1lBRXpDQyxJQUFLRixHQUFTQyxHQUFJLE9BQWJELEtBQVNDLElBQVRELElBQVNDLEVBQTJCO0dBbkJOO0lBQUEscUNBaUJuQ0YsS0FFQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUFiOztHQUF3QjtZQUM1RHlDO0lBQVUsT0FBQTtHQUEyQjtHQUp3QjtJQUFBLGFBRzdERCxTQUNBQzs7O09BalFGNUU7T0FLQUM7T0FNQUM7T0FDQUM7T0FFQUM7T0FFQUM7T0FRQVE7T0FRQUU7T0FLQUM7T0FXQU87T0FFQUM7T0FLQUc7T0FJQUU7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7O0c7OEIsTyx1Qzs7SSxPOztHOztJOzs7Ozs7O0s7O0k7RztHLFc7OEIsTyxtQzs7SSxXO0ksTywrQjtHO3lCLHVCLFcsUzs7SSxJLEk7O0ssVztLLHFCO0s7a0I7OztHOztJLEksSTs7SyxJLE8sdUIsTztLLHFCO0s7a0I7OztHOztJOzs7TSxXO2dCO08sTTs7bUIsYzs7Ozs7OzRCOzs7Rzs7STs7SyxROzs7OztRLGU7Tzs7Ozs7Szs7OztHOztJO0k7O087Tzs7Ozs7Ozs7Ozs7Ozs7TztNOztJO0c7Ozs7Ozs7Ozs0QixzQjs4QixpQzs7STtJOzs4QixpQixrQjs7O1E7OzRCOztROzs7USxPOztRLHNDO1EsUTs7OztROzs7O1E7OztnQjs7O0c7O0k7STs7Ozs7Ozs7Ozs7NEI7OztRLHFDOzs7UTs7O1Esa0IsTzs7UTs7USxzQztROzs7Ozs7Ozs7Ozs7Rzt5Qjs7STtJOzs7Ozs7UyxtQztTOztTLG1DO1M7O1Msa0IsTzs7Uzs7Ozs7Rzs2Qjs7STs7Ozs7Ozs7O0s7O007SyxPOztJLE07RztHO0ksSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNDO0k7Ozs7RztJLGtCOzs7O0k7SyxXO0s7SztLO0s7Szs7SztNOzs7USxZO1E7Ozs7Ozs7SyxJO0s7OztJOztLO0s7SztJOztLO0s7SztJOztLLEksVSx3Qzs7Ozs7aUI7O007O0k7O0sscUI7O2lCOztLO0k7O0s7OztTOztTO2lCOzs7OztROzs7O1Esa0IsUTt3Qjs7OztrRDt1QztRO1MsUTtTO1M7UztTOzs7Ozs7Ozs7dUI7Ozs7O1E7OztTO1M7UTsyQzs7O1E7dUI7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Uzs7Ozs7USxrQztRO1EsSSw2QjtROztRO1E7O1E7O1M7Uzt1QjtRO3VCO1E7O1E7O1E7O1M7UztRO3lCO1E7eUI7UTs7UTs7USxvQjtROztROzs7UTtRO1E7dUI7Ozs7UTt1Qjs7O0k7O0ssa0I7SztLO0k7STtJO0ksSSxtQjtJLEc7OztLLFE7SyxpQixPLHdCO2lDOztJLG1CO0k7OztPO087TTs7Ozs7O0k7WTs7Ozs7Ozs7SSxRO0k7O29COzs7c0I7Ozs7O0c7Rzs7SSxvQzs7SyxJO0s7TTs7O2dCO29CO087UTs7O1E7Ozs7O007O0k7O0ssSSxVO0s7OztPLGtDO1E7UyxNOzs7OztPLFU7Ozs7Ozs7OzthOzs7Yyx1QjtlO2dCOzs7Ozs7YztlOzs7Ozs7Ozs7Ozs7YTs7Ozs7YyxVOzs7Ozs7OztnQjs7Ozs7Ozs7aUI7aUI7a0I7OztpQjs7OzJCOzhCOzs7OzJCOzs7O2UsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7O1MsZTs7O1UsSSxtQjs7Ozs7VSxJLG1COzs7O2MsSSxtQjs7Ozs7Ozs7Uzs7O1E7Ozs7OztNO00sZTs7STs7SyxJO0s7cUI7Z0Isd0MscUI7TSxTO007OztnQjttQjtPLFM7Ozs7UyxPO1M7Ozs7O087Ozs7TTtNOzs7STtJLEk7OztjO0c7c0IsNEI7Z0MsNEI7O0k7O0ssTTtLO0s7Szs7OztNLEksSSx1Qjs7Ozs7O1M7Ozs7OztRO1E7Ozs7Tzs7O007Ozs7O0ksTztHOzZCLDBCO3VDLDBCO0c7O00sb0QsVzs7SSxVO0k7O0c7O0ksVTtJOztHOztJLFU7STs2QixNO0k7Rzs7SSxVO0k7NkIsTTtJO0c7O0k7SztPOzs7SztLLGUsTTtLOztJLE87Rzs7STtLO087OztLO007TTtLLGUsTTtLOztJLE87Rzs7STtLO087OztLO007TTtNO0ssYSxNO0ssTzs7SSxPO0c7bUMsMEI7NkIsb0I7Z0MsNkI7O0k7O087SSxPO0c7O0k7SztNOztnQjtNO00sTTtLOzs7OzJCOzs7Rzs7SSxJLDJDOzs7MkI7OztHOztJO0k7O1E7OztNOztPOztRO1EsWTs7UTs7OztZOzs7Ozs7Ozs7SyxVO0ssTzs7Rzs7STtpQztHOztJO2lDO0c7O0k7Z0I7Ozs7Ozs7O0c7O0k7Szs7OztJOzs7Ozs7TTs7Tzs7UTtRO1E7O1c7Ozs7Ozs7OztLLE87O0c7OEIsb0M7O0ksa0I7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs7STtHOztJO0k7Ozs7OztNOztPLG9COztRO1M7UztTOzs7O2lCOzs7Ozs7O087UTtRO1E7Ozs7Ozs7O0ssTzs7RzttQyx5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJQ3JFRWdEOzs7Ozs7OztZQVBGQyxNQUFPQyxJQUFRQyxJQUFLLE9BQWJELE9BQVFDLFdBQXFCOztJQUNwQ0M7SUFDQUM7SUFDQUM7SUFDQUM7WUFFQUMsWUFBd0JDO0lBRTFCLElBRldDLDJCQUVQQyxVQUZPRCxnQkFDUFYsU0FBQUE7SUFFSixPQUFBLHVCQURJVyxZQUZzQkY7O09BTXhCRztZQUNBQyxVQUFXSCxRQUFPRCxNQUFNSztJQUFpQixVQVB6Q04sT0FPV0UsUUFBT0Q7b0NBQU1LLFFBRHhCRjtHQUNnRjtZQUVoRkcsUUFBUUQ7SUFDVixJQUFJLGNBQUssV0FEQ0EsUUFDTjs7OzRCQUNhOzs7R0FBSTtZQUduQkUsTUFBTUMsR0FBR0MsS0FBS2IsS0FBS2M7SUFBTSxPQUFBLHVCQUFuQkYsR0FBR0MsS0FBS2IsS0FBS2M7R0FBZ0M7WUFDbkRDLGFBQWFILEdBQUdDLEtBQUtiLEtBQUtjO0lBQU0sT0FOaENKOzZCQU1tRCxPQUFuQix1QkFBbkJFLEdBQUdDLEtBQUtiLEtBQUtjLEtBQTBEO0dBQUM7WUFDckZFLGlCQUFpQkosR0FBR0MsS0FBS2IsS0FBS2M7SUFBTSxPQUFBLHVCQUFuQkYsR0FBR0MsS0FBS2IsS0FBS2M7R0FBdUM7WUFDckVH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O09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkVBUztPQTdFQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxRkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BRUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdEVBVDtPQXNFQVM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FHQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BU0FDO09Ba0JBRTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FvQ0FJO09BVUFDO09BOUNBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQXVEQU07T0FVQUM7T0FqRUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkVBUTtPQTNFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxRkFTO09BckZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FTQUM7T0FrQkFFO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQW9DQUk7T0FVQUM7T0E5Q0FMO09BQUFBO09BQUFBO09BQUFBO09BdURBTTtPQVVBQztPQWpFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyRUFRO09BM0VBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThGQVU7T0E5RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQVNBQztPQWtCQUU7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09Bb0NBSTtPQTBEQU07T0E5RkFWO09BQUFBO09BQUFBO09BQUFBO09BdURBTTtPQVVBQztPQWpFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyRUFRO09BM0VBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFGQVM7T0FyRkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0dBVztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkJBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQVVBQztPQXBCQUY7T0FVQUM7T0FvQkFFO09BOUJBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQVZBRDtPQXdDQUk7T0FXQUM7T0FuREFMO09BQUFBO09BQUFBO09BQUFBO09BNkRBTTtPQVdBQztPQXhFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FtRkFRO09BbkZBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTRGQVM7T0E1RkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUdBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkJBRztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyQkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkNBSztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXBDQUo7T0FvQ0FJO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BVUFDO09BVkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0JBRTtPQXBCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0JBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BMkJBRztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZDQUs7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BU0FDO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQTJCQUc7T0E3Q0FMO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BU0FDO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXJOQXhCO09BcU5Bd0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FsQkFGO09Ba0JBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZDQUs7T0E3Q0FMO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bc0RBTTtPQXREQU47T0FBQUE7T0ErREFPO09BL0RBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdFQVE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F4RUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BaUZBUztPQWpGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EwRkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcENBSjtPQW9DQUk7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXpNQXZCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb09BMEI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FwT0ExQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZPQTJCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BN09BM0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOE5BeUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E5TkF6QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThOQXlCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOU5BekI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4TkF5QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTlOQXpCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXZGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F1RkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdkZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXVGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F2RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BaUxBb0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FzREFNO09BU0FDO09BL0RBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXNEQU07T0F0REFOO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7SUE0Mk5BaUI7O09BcnlOQVQ7T0FFQUM7T0FFQUM7T0FHQUM7T0FBQUE7T0FBQUE7T0FPQUM7T0FPQUM7T0FPQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FFQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7SUFzeU5BRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQW55TkFGLGFBb3dOQUMsaUJBK0JBQzs7OztFOzs7Ozs7Ozs7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RW9CVSxPQUZWaEI7S0FDdkI7VUFDOENPO01BQy9DO09BQU07UUFEeUNDO1VBQ3pDOytCQXBYSkgsa0JBbVg2Q0UsaUJBRnZCUDtlQUV1QlE7T0ErSXhCLFdBakpDUixXQUFBQTtPQUV1Qk8sa0JBQUFDOzthQUFBQTs7UyxvQkFGakNGLEtBQVVOLFM7O1MscUJBQUFBO1MsY0FBQUE7UyxvQkFBVk0sS0FBVU47OztTLHVCQUFBQTtTLGNBQUFBO1Msb0JBQVZNLEtBQVVOOzs7U0FrQ3hCLFFBQUEsOEJBbEN3QkEsUUFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O1Msb0JBQVZNO1Msb0JBQUFBLEtBQVVOOzs7U0FnRHhCO1VBQUEsS0FBQSw4QkFoRHdCQSxRQUFBQTtVQXFEeEIsS0FBQSw4QkFyRHdCQSxRQUFBQTtVQTBEeEIsS0FBQSw4QkExRHdCQSxRQUFBQTs7Ozs7O1U7VyxRLDhCQUFBQTs7OztXO2E7Ozs7Ozs7O1U7O1MsVTtTLG9CQUFWTTtTLG9CQUFBQSxLQUFVTjs7O1NBa0Z4QjtVQUFBLE9BQUEsOEJBbEZ3QkEsUUFBQUE7VUF1RnhCLE9BQUEsOEJBdkZ3QkEsUUFBQUE7VTs7OztVOzs7OztVLE07UyxvQkFBVk07UyxvQkFBQUEsS0FBVU47OztTQXNHeEIsVUFBQSw4QkF0R3dCQSxRQUFBQTtTLG9CQUFWTTtTLG9CQUFBQTtTLG9CQUFBQSxLQUFVTjs7O1MsY0FBQUE7UyxvQkFBVk07UyxvQkFBQUEsS0FBVU47OzttQkFBQUEsbUJBQUFBO1Msb0JBQVZNLEtBQVVOO1Msb0JBQVZNLEtBQVVOOzs7Uzs7WTtxQ0FFVWdCLFVBQUFBLFdBQUFBO1MsTzs7O0lBRGM7O0s7O007a0I7OztrQjtLLHFCO0k7STs7Ozs7OzttQyxTO3lCLFM7NkIsYzs7SSxXO0c7a0QsTztHOzZDLE87Rzs7Ozs7Ozs7SSxVO0ksVztHOztJLHFCO0c7OEIsTyx3Qzs7SSxPO0c7O0ksVTtJLE87Rzs7STs7RzsrQixzQjs7STs7O0ssbUI7SSxlOzs7O0ksZTs7Z0QseUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7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QUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7NkI7NkI7Ozt3Qjs7NkI7NkI7NkI7NkI7NkI7NkI7O3dCOzs7Ozs2Qjs2Qjs2Qjs7NkI7NkI7NkI7U0F4SU52Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQU1BRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQVlBRTtJQzlMSTBGO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFB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OzhCOzhCOzs7d0I7d0I7Ozs7Ozs4Qjs4Qjs4Qjs7OEI7OEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCOzs7Ozs7Ozs7OytCOytCOzs7eUI7OytCOytCOytCOytCOytCOytCOzt5Qjs7Ozs7K0I7K0I7K0I7OytCOytCOytCO1NBREFkO1NBQ0FjO0lBR0pYO0lBQ0FZO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0lDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBREFEO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0lDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBREFEO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lDcGFJQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7O0lBV05DO0lBVUFDO0lBQ0FDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lEOFlNQztJQUNBQzs7OztTQzFhQTdFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOzs7Ozs7O1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOztTQUFBQztTQUFBQztTQXdCTjBDO1NBeEJNekM7U0FBQUM7Ozs7U0FXTnFDOzs7U0FlQUs7U0FEQUQ7O1NBekJNeEM7U0EyQk4wQzs7OztTQU5BTDs7O1NBckJNcEM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FzQk5pQztTQXRCTWhDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NEeWFBUTtTQUNBQztJQUdKQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUtFO1FBRUFFO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQUtFO1FBR0FFO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQUtFO1FBR0dFO1FBQVJDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFyRTtRQUFBZDtRQUFBVTtRQUFBVDtRQUFRdUY7OztTQTdCSHZJO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBQ0FFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQUtLRTtVQUFSQztVQUFBQztVQUFBRztVQUFBRDtVQUFBRDtVQUFBRztVQUFBQztVQUFBQztVQXVCRk87VUFBQUM7VUFBQVM7VUFyQk01RDs7U0FVRGtFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBR0xDO1NBQUFDO1NBQUFFO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUtFO1NBRUFFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBR0FFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTRCVnArRDtJQUNBbXFLO0lBQ0FsckQ7SUFDQWhzQztHQU9LO0dBR2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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R0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBSDtnQkFBQUc7Z0JBQUFBO2dCQUFBQTs7SUFEQWlxQzs7dUJBQUEsU0FBcUI7O1dBQXJCcEM7T0FBQUQ7Z0JBQUE1bkMsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFIO2dCQUFBRztnQkFBQUE7Z0JBQUFBO2dCQUFBQTs7SUFEQWtxQzs7dUJBQUEsU0FBaUI7O1dBQWpCbkM7T0FBQUQ7Z0JBQUE5bkMsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUg7Z0JBQUFHO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTs7SUFEQW1xQzs7dUJBQUEsU0FBaUI7O1dBQWpCbEM7T0FBQUQ7Z0JBQUFob0MsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBSDtnQkFB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O1NBT2dCLE9BQUEsV0FBaEJzQyxLQUFXRDs7Ozs7bUJBUFR0QyxtQ0FBQUE7WUFLUzRDLE1BTFQ1QyxRQUtGNkMsTUFMQTVDO1FBS2dCLE9BQUEsV0FBaEI0QyxLQUFXRDs7O0tBOEJkOztHQUFLO1lBRVozQixhQUFjL0QsS0FBSU8sS0FBSTFFLEdBQUksT0E3SDFCdUcsR0E2SGNwQyxLQUFJTyxLQUFJMUUsR0FBd0I7WUFDOUNtSSxpQkFBa0JoRSxLQUFJbkUsR0FBSSxPQTNIMUJ3RyxZQTJIa0JyQyxLQUFJbkUsR0FBMkI7WUFDakRvSSxrQkFBbUJqRSxLQUFJSyxJQUFHeEU7SUF4SGxCLElBQU4wRyxNQUFNLCtCQXdIZWxDO0lBdkh6QixPQUFBOzthQURJa0M7O2tDLE9BUEZILEdBK0htQnBDO2FBQU9uRTtHQUErQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxNO0c7O0k7O0s7O0ssTztLOzttQzs7O0k7OztVO1U7SyxNO0ksTztHOztJLFc7STthO0c7O0k7SyxPO0s7SyxNO0k7SSxpQjtJO2E7OztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STs7SztLO0s7Szs7Ozt3QixNO00sUTs7TTs7Ozs7O0ksTTtHOztJOztLO0s7SztLOzs7O3dCLE07TSxROztNOzs7OztpQixNOztHOztJOzs7Rzs7STtJLE87Rzs7STs7SztNOztTOztNOzs7OztROztROztROztROztROztROztRO1E7O1E7UztTOzs7OztVLHVCOzs7O1E7UztTOzs7OztVLHVCOzs7O1E7O2dCLHFCOztRO1E7UztTO1M7UztTO1M7Ozs7VTtVO1U7VTtVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1M7Uzs7OztVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1M7Uzs7OztVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1E7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STs7SztNOztTOztNOzs7Ozs7O1E7O1E7Z0I7OztHOztJOztLO007O1M7O007Ozs7O1EsYyxPO1EsTyxjOztROztRO2dCOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O08sUTtPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPO1EsSTtRLEk7USxNO1EsSTtRO1E7UTs7OztRO1M7O1k7O1M7Ozs7O1c7WSxNO1ksTTtZLE07WSxNO1k7WTtZOzs7WSxPO1c7O1c7O1c7OztPLE87O087ZTs7Rzs7STtJO0s7O1E7Ozs7Uzs7VSxJO1M7UztTLE87O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxvQzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxJLHlDOzs7O1c7Ozs7UyxJLHlDOzs7O1c7Ozs7UztTO1MsSSxXLHVCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7VSxXLG1CO1U7O3FCOztTO1M7UyxJLFcsdUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztVLFcscUI7VTs7cUI7O1M7UztTLEksVyx5Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTLE8scUI7O1M7UztTLEksVyx5Qjs7Ozs7Ozs7Ozs7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1Msb0M7O1MsUTtTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7O1MsTzs7a0I7Ozs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPO087UTtRO2lCOztTO1M7UztrQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROztLOzs7OztPO087UTtROztxQjs7UztTO1M7O3NCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O08sSSxjO087UTtRO2lCOzs7UztTO1M7a0I7Ozs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7aUI7UyxNOztpQixNO1M7aUI7O0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztpQjtTLE07O2lCLE07Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPO087UTtRO1EsaUI7UTtRO1E7aUI7O1M7UztTO1MsbUI7UztTO1M7a0I7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztROztROztROztROztROztROztROztRO1M7UztTO1M7UztTO1M7UztVO1U7VTtVO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7UztTO1M7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTO1M7UztVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtRO1E7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1M7UztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1U7O1U7Vzs7Yzs7Vzs7Ozs7YTs7YTthLE07O2E7cUI7O1U7VTs7Ozs7dUM7Ozs7O1E7UTtRO1E7O1E7Uzs7WTs7Uzs7Ozs7VztXO1c7O1c7WTs7ZTs7OztnQixPOztnQjs7Z0I7O1k7Ozs7O1csTzs7Vzs7Vzs7OztROztRO1E7OztRLHlDOztROztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7UztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USwwQjs7UTtROzs7USx5Qzs7UTtnQjs7O0c7O0k7STtLOztROzs7O1MsTzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USxPOztROztRLHlDO2dCOzs7Rzs7STsyQixPO0k7Rzs7STtJLE87Rzs7STtZO0k7OztLLE07SyxJO0s7Szs7OztNLFc7TTthO007Ozs7O0k7Rzs7STtLO0c7Ozs7STtJO0ssTTtJOztLOztNOztJOzs7STtLO00sUztNLEk7TTtLOzs7OztNLE87OztHOztJO0s7TSxTO00sSTtNO0s7Ozs7O00sTzs7O0c7O0ksUztJO0s7SztLOzs7O0s7SyxNOztHO0c7OzZDLE87O0ssSSxtRDs7O2lDLG9CO00sSTs7O08sTTs7TSxNOztJO0k7OztJLFE7SSw2QjtHOztJO0ssUztLLEk7STtHOztJLFM7SSxvQixPLDJCO0k7SztLLFM7SyxJO0k7Rzs7STs0QyxPOztLLG1COztLO007TztRLE87UTtROzs7O087Ozs7O2tCOztPO0k7STs7O0ksUztJLG9CLE8sMkI7STtJO0c7cUJBRHZDbUU7SSxJQUFJbkU7SUFBSSxPQTNIMUJ3RyxZQTJIa0JyQyxLQUFJbkU7Rzs7SSxPQXRXdEJvRTtHO0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzRCO0c7Rzs7STs7SyxJLFcsd0M7Ozs2Qjs7OztJLFc7SSxjOzs7STtJO2U7Ozs7TSxJLFk7Ozs4Qjs7Ozs7OztLOztHOztJO0s7O00sTTtNOztNLE87SztNLE87TSxPO0ssTTs0Qjs7STtLLE87SyxPO0ksYzs7O0k7O0ssc0I7O0k7OztJLG1FO0k7Rzs7SSw2QztJLFc7OztJLGlFO0k7Rzs7STswQjs7Z0Q7STtHOztJOzt5QzsyQzs7STtHOztJOzBCOzs7O3lDOzJDOztJO0c7O0ksaUU7STtHOztJOzBCOztnRDtJO0c7O0ksK0Q7STtHOztJOzBCOzs4QztJO0c7O0ksaUU7STtHOztJLGtFO0k7Rzs7STswQjs7aUQ7STtHOztJOztLLE87O0k7OztJO0k7YSxPO0sseUIsUTs7TSxrQjs7Ozs7OztHOztJO0k7YSxPOzs7TSxlLFE7Ozs7Ozs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2Msd0U7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7c0Q7MEQ7O2M7YTs7Rzs7STs7YywyRTtjO2E7O0c7O0k7SSxPO2E7OytCLG9CLFc7O0c7O0k7SSxPO2E7OytCLHNCLGE7O0c7O0k7Ozs7OztLLHNCOztJLE07O0c7Ozs7T0FtUElxQztPQTBFSk07T0FHSUM7T0F4b0JB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STtJO0k7STs7SztLO0s7Szs7STtJO0k7STtJO0ssSTtLO0s7SztLO0s7SztLO0s7SztLOztLOzs7Ozs7Tzs7USxNO2M7YztjO087Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7OztROztTOztTOztTO1E7OztPO1E7Ozs7Ozs7O087Ozs7Ozs7OztNOzs7OztJLFE7O0s7SztLO0s7SztJO0k7STtJO0k7STtJLE87OztJO0ssTSxtQjtLLE07SyxJO2tDOytCO0ksTztHO3NCLCtCO3NCLGlDOztJO0ssSTtlO2dCO0k7STtJLE87Rzs7SSx1QixPLG9DO0c7Ryx3Qjs7STtLLEs7SyxLO0ssSztLLEs7SyxLO0ssSTs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7SSx1QixvQztHOztJLDhCOzs7Szs7O0k7RzswQixhLG9DOzs7O3dCLFM7O0ksNEIsTTs2QjtnQztJLFc7OztJO0ssUTtLLHFCO0s7SztJO0ksUTtJO0k7STtJO0ksTztHO3FDLHNCOztJO2dCOztJO0c7K0IsUzsrQixTOztJLDRCLE07STs7O2M7O2U7O2dCO21CO0s7TTtPLEk7TztPO087O1UsVyxNO3NCO3FCLE07c0I7cUIsTTtzQixNO1U7UztPOztVLGU7c0I7Uzs7O087Tzs7Ozs7OztPO087Ozs7Ozs7TztPOzs7Ozs7O087Tzs7Ozs7OztRLGM7UTs7TztPOzs7Ozs7OzRCOzs7STs7O0ksOEI7SSx1Qiw0QztJO0ssSTtLO0s7O0s7OztJOzs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7OztvQixPO0ssVTtLOzs7Ozs7STtJLE87Rzs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDQ3JHQXFDO1lBR0FDLE9BQVVDO0lBQW1CLElBQzNCQyxxQ0FEUUQsSUFFWUUsV0FBWUM7SUFDbEM7UUFGRUYsU0FDb0JDLFFBQVlDLG1CQURoQ0YsT0FDZ0NFO1NBSTVCQyxtQ0FOSUosR0FFWUUsUUFBWUM7S0FLaEMsVUFESUM7Z0JBQUFBO2lCQUFBQTtRQU9HLElBWHlCQyxVQUFBRixl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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQ2xWVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQSt1RnVCSztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7O0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOzs7SUFBQUM7OztJQUFBQzs7Ozs7OztJQXZWWEM7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUFuNUVwQkM7Ozs7Ozs7Ozs7Ozs7O0lBTFE7O1FBR1IxTDtJQURvQyxXQUNwQ0EsT0FFQTBMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7Ozs7O0dDdElJO0dBQUE7OztFIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vIHN0cmZ0aW1lXG4vLyBnaXRodWIuY29tL3NhbXNvbmpzL3N0cmZ0aW1lXG4vLyBAX3Nqc1xuLy9cbi8vIENvcHlyaWdodCAyMDEwIC0gMjAxNSBTYW1pIFNhbWh1cmkgPHNhbWlAc2FtaHVyaS5uZXQ+XG4vL1xuLy8gTUlUIExpY2Vuc2Vcbi8vIGh0dHA6Ly9zanMubWl0LWxpY2Vuc2Uub3JnXG4vL1xuXG47KGZ1bmN0aW9uKCkge1xuXG4gICAgdmFyIERlZmF1bHRMb2NhbGUgPSB7XG4gICAgICAgICAgICBkYXlzOiBbJ1N1bmRheScsICdNb25kYXknLCAnVHVlc2RheScsICdXZWRuZXNkYXknLCAnVGh1cnNkYXknLCAnRnJpZGF5JywgJ1NhdHVyZGF5J10sXG4gICAgICAgICAgICBzaG9ydERheXM6IFsnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0J10sXG4gICAgICAgICAgICBtb250aHM6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddLFxuICAgICAgICAgICAgc2hvcnRNb250aHM6IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXSxcbiAgICAgICAgICAgIEFNOiAnQU0nLFxuICAgICAgICAgICAgUE06ICdQTScsXG4gICAgICAgICAgICBhbTogJ2FtJyxcbiAgICAgICAgICAgIHBtOiAncG0nLFxuICAgICAgICAgICAgZm9ybWF0czoge1xuICAgICAgICAgICAgICAgIEQ6ICclbS8lZC8leScsXG4gICAgICAgICAgICAgICAgRjogJyVZLSVtLSVkJyxcbiAgICAgICAgICAgICAgICBSOiAnJUg6JU0nLFxuICAgICAgICAgICAgICAgIFQ6ICclSDolTTolUycsXG4gICAgICAgICAgICAgICAgWDogJyVUJyxcbiAgICAgICAgICAgICAgICBjOiAnJWEgJWIgJWQgJVggJVknLFxuICAgICAgICAgICAgICAgIHI6ICclSTolTTolUyAlcCcsXG4gICAgICAgICAgICAgICAgdjogJyVlLSViLSVZJyxcbiAgICAgICAgICAgICAgICB4OiAnJUQnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRTdHJmdGltZSA9IG5ldyBTdHJmdGltZShEZWZhdWx0TG9jYWxlLCAwLCBmYWxzZSksXG4gICAgICAgIGlzQ29tbW9uSlMgPSB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyxcbiAgICAgICAgbmFtZXNwYWNlO1xuXG4gICAgLy8gQ29tbW9uSlMgLyBOb2RlIG1vZHVsZVxuICAgIGlmIChpc0NvbW1vbkpTKSB7XG4gICAgICAgIG5hbWVzcGFjZSA9IG1vZHVsZS5leHBvcnRzID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgICAgICBuYW1lc3BhY2Uuc3RyZnRpbWUgPSBkZXByZWNhdGVkU3RyZnRpbWU7XG4gICAgICAgIGlmKGpvb19nbG9iYWxfb2JqZWN0KSBqb29fZ2xvYmFsX29iamVjdC5zdHJmdGltZSA9IGFkYXB0ZWRTdHJmdGltZTtcbiAgICB9XG4gICAgLy8gQnJvd3NlcnMgYW5kIG90aGVyIGVudmlyb25tZW50c1xuICAgIGVsc2Uge1xuICAgICAgICAvLyBHZXQgdGhlIGdsb2JhbCBvYmplY3QuIFdvcmtzIGluIEVTMywgRVM1LCBhbmQgRVM1IHN0cmljdCBtb2RlLlxuICAgICAgICBuYW1lc3BhY2UgPSBqb29fZ2xvYmFsX29iamVjdCB8fCAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzIHx8ICgxLGV2YWwpKCd0aGlzJyk7IH0oKSk7XG4gICAgICAgIG5hbWVzcGFjZS5zdHJmdGltZSA9IGFkYXB0ZWRTdHJmdGltZTtcbiAgICB9XG5cbiAgICAvLyBEZXByZWNhdGVkIEFQSSwgdG8gYmUgcmVtb3ZlZCBpbiB2MS4wXG4gICAgdmFyIF9yZXF1aXJlID0gaXNDb21tb25KUyA/IFwicmVxdWlyZSgnc3RyZnRpbWUnKVwiIDogXCJzdHJmdGltZVwiO1xuICAgIHZhciBfZGVwcmVjYXRpb25XYXJuaW5ncyA9IHt9O1xuICAgIGZ1bmN0aW9uIGRlcHJlY2F0aW9uV2FybmluZyhuYW1lLCBpbnN0ZWFkKSB7XG4gICAgICAgIGlmICghX2RlcHJlY2F0aW9uV2FybmluZ3NbbmFtZV0pIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUud2FybiA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiW1dBUk5JTkddIFwiICsgbmFtZSArIFwiIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDEuMC4gSW5zdGVhZCwgdXNlIGBcIiArIGluc3RlYWQgKyBcImAuXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX2RlcHJlY2F0aW9uV2FybmluZ3NbbmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmFtZXNwYWNlLnN0cmZ0aW1lVFogPSBkZXByZWNhdGVkU3RyZnRpbWVUWjtcbiAgICBuYW1lc3BhY2Uuc3RyZnRpbWVVVEMgPSBkZXByZWNhdGVkU3RyZnRpbWVVVEM7XG4gICAgbmFtZXNwYWNlLmxvY2FsaXplZFN0cmZ0aW1lID0gZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkO1xuXG4gICAgLy8gQWRhcHQgdGhlIG9sZCBBUEkgd2hpbGUgcHJlc2VydmluZyB0aGUgbmV3IEFQSS5cbiAgICBmdW5jdGlvbiBhZGFwdEZvcndhcmRzKGZuKSB7XG4gICAgICAgIGZuLmxvY2FsaXplID0gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplLmJpbmQoZGVmYXVsdFN0cmZ0aW1lKTtcbiAgICAgICAgZm4udGltZXpvbmUgPSBkZWZhdWx0U3RyZnRpbWUudGltZXpvbmUuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgICAgICBmbi51dGMgPSBkZWZhdWx0U3RyZnRpbWUudXRjLmJpbmQoZGVmYXVsdFN0cmZ0aW1lKTtcbiAgICB9XG5cbiAgICBhZGFwdEZvcndhcmRzKGFkYXB0ZWRTdHJmdGltZSk7XG4gICAgZnVuY3Rpb24gYWRhcHRlZFN0cmZ0aW1lKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIC8vIGQgYW5kIGxvY2FsZSBhcmUgb3B0aW9uYWwsIGNoZWNrIGlmIHRoaXMgaXMgKGZvcm1hdCwgbG9jYWxlKVxuICAgICAgICBpZiAoZCAmJiBkLmRheXMpIHtcbiAgICAgICAgICAgIGxvY2FsZSA9IGQ7XG4gICAgICAgICAgICBkID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIoZm9ybWF0LCBbZGF0ZV0sIFtsb2NhbGVdKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgYWRhcHRGb3J3YXJkcyhkZXByZWNhdGVkU3RyZnRpbWUpO1xuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZShmbXQsIGQsIGxvY2FsZSkge1xuICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lKGZvcm1hdCwgW2RhdGVdLCBbbG9jYWxlXSlgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKTsgcyhmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lKGZvcm1hdCwgW2RhdGVdKWBcIiwgX3JlcXVpcmUgKyBcIihmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gbG9jYWxlID8gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiBkZWZhdWx0U3RyZnRpbWU7XG4gICAgICAgIHJldHVybiBzdHJmdGltZShmbXQsIGQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZVRaKGZtdCwgZCwgbG9jYWxlLCB0aW1lem9uZSkge1xuICAgICAgICAvLyBsb2NhbGUgaXMgb3B0aW9uYWwsIGNoZWNrIGlmIHRoaXMgaXMgKGZvcm1hdCwgZGF0ZSwgdGltZXpvbmUpXG4gICAgICAgIGlmICgodHlwZW9mIGxvY2FsZSA9PSAnbnVtYmVyJyB8fCB0eXBlb2YgbG9jYWxlID09ICdzdHJpbmcnKSAmJiB0aW1lem9uZSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aW1lem9uZSA9IGxvY2FsZTtcbiAgICAgICAgICAgIGxvY2FsZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVUWihmb3JtYXQsIGRhdGUsIGxvY2FsZSwgdHopYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSkudGltZXpvbmUodHopOyBzKGZvcm1hdCwgW2RhdGVdKWAgb3IgYHZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSk7IHMudGltZXpvbmUodHopKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVUWihmb3JtYXQsIGRhdGUsIHR6KWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi50aW1lem9uZSh0eik7IHMoZm9ybWF0LCBbZGF0ZV0pYCBvciBgXCIgKyBfcmVxdWlyZSArIFwiLnRpbWV6b25lKHR6KShmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3RyZnRpbWUgPSAobG9jYWxlID8gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiBkZWZhdWx0U3RyZnRpbWUpLnRpbWV6b25lKHRpbWV6b25lKTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgdmFyIHV0Y1N0cmZ0aW1lID0gZGVmYXVsdFN0cmZ0aW1lLnV0YygpO1xuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZVVUQyhmbXQsIGQsIGxvY2FsZSkge1xuICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lVVRDKGZvcm1hdCwgZGF0ZSwgbG9jYWxlKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpLnV0YygpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVVVEMoZm9ybWF0LCBbZGF0ZV0pYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLnV0YygpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBsb2NhbGUgPyB1dGNTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpIDogdXRjU3RyZnRpbWU7XG4gICAgICAgIHJldHVybiBzdHJmdGltZShmbXQsIGQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZUxvY2FsaXplZChsb2NhbGUpIHtcbiAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZWRTdHJmdGltZShsb2NhbGUpYFwiLCBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSlcIik7XG4gICAgICAgIHJldHVybiBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKTtcbiAgICB9XG4gICAgLy8gRW5kIG9mIGRlcHJlY2F0ZWQgQVBJXG5cbiAgICAvLyBQb2x5ZmlsbCBEYXRlLm5vdyBmb3Igb2xkIGJyb3dzZXJzLlxuICAgIGlmICh0eXBlb2YgRGF0ZS5ub3cgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgRGF0ZS5ub3cgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gK25ldyBEYXRlKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gU3RyZnRpbWUobG9jYWxlLCBjdXN0b21UaW1lem9uZU9mZnNldCwgdXNlVXRjVGltZXpvbmUpIHtcbiAgICAgICAgdmFyIF9sb2NhbGUgPSBsb2NhbGUgfHwgRGVmYXVsdExvY2FsZSxcbiAgICAgICAgICAgIF9jdXN0b21UaW1lem9uZU9mZnNldCA9IGN1c3RvbVRpbWV6b25lT2Zmc2V0IHx8IDAsXG4gICAgICAgICAgICBfdXNlVXRjQmFzZWREYXRlID0gdXNlVXRjVGltZXpvbmUgfHwgZmFsc2UsXG5cbiAgICAgICAgICAgIC8vIHdlIHN0b3JlIHVuaXggdGltZXN0YW1wIHZhbHVlIGhlcmUgdG8gbm90IGNyZWF0ZSBuZXcgRGF0ZSgpIGVhY2ggaXRlcmF0aW9uIChlYWNoIG1pbGxpc2Vjb25kKVxuICAgICAgICAgICAgLy8gRGF0ZS5ub3coKSBpcyAyIHRpbWVzIGZhc3RlciB0aGFuIG5ldyBEYXRlKClcbiAgICAgICAgICAgIC8vIHdoaWxlIG1pbGxpc2Vjb25kIHByZWNpc2UgaXMgZW5vdWdoIGhlcmVcbiAgICAgICAgICAgIC8vIHRoaXMgY291bGQgYmUgdmVyeSBoZWxwZnVsIHdoZW4gc3RyZnRpbWUgdHJpZ2dlcmVkIGEgbG90IG9mIHRpbWVzIG9uZSBieSBvbmVcbiAgICAgICAgICAgIF9jYWNoZWREYXRlVGltZXN0YW1wID0gMCxcbiAgICAgICAgICAgIF9jYWNoZWREYXRlO1xuXG4gICAgICAgIGZ1bmN0aW9uIF9zdHJmdGltZShmb3JtYXQsIGRhdGUpIHtcbiAgICAgICAgICAgIHZhciB0aW1lc3RhbXA7XG5cbiAgICAgICAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50VGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFRpbWVzdGFtcCA+IF9jYWNoZWREYXRlVGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICAgIF9jYWNoZWREYXRlVGltZXN0YW1wID0gY3VycmVudFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgICAgICAgX2NhY2hlZERhdGUgPSBuZXcgRGF0ZShfY2FjaGVkRGF0ZVRpbWVzdGFtcCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wID0gX2NhY2hlZERhdGVUaW1lc3RhbXA7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvdyB0byBhdm9pZCBkdXBsaWNhdGlvbiBvZiBkYXRlIGluc3RhbnRpYXRpb24gZm9yIHV0YyBoZXJlP1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgdGllZCB0byBnZXRUaW1lem9uZU9mZnNldCBvZiB0aGUgY3VycmVudCBkYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBfY2FjaGVkRGF0ZSA9IG5ldyBEYXRlKF9jYWNoZWREYXRlVGltZXN0YW1wICsgZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IoX2NhY2hlZERhdGUpICsgX2N1c3RvbVRpbWV6b25lT2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkYXRlID0gX2NhY2hlZERhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBkYXRlLmdldFRpbWUoKTtcblxuICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSArIGdldFRpbWVzdGFtcFRvVXRjT2Zmc2V0Rm9yKGRhdGUpICsgX2N1c3RvbVRpbWV6b25lT2Zmc2V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBfcHJvY2Vzc0Zvcm1hdChmb3JtYXQsIGRhdGUsIF9sb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBfcHJvY2Vzc0Zvcm1hdChmb3JtYXQsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0U3RyaW5nID0gJycsXG4gICAgICAgICAgICAgICAgcGFkZGluZyA9IG51bGwsXG4gICAgICAgICAgICAgICAgaXNJblNjb3BlID0gZmFsc2UsXG4gICAgICAgICAgICAgICAgbGVuZ3RoID0gZm9ybWF0Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICBleHRlbmRlZFRaID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50Q2hhckNvZGUgPSBmb3JtYXQuY2hhckNvZGVBdChpKTtcblxuICAgICAgICAgICAgICAgIGlmIChpc0luU2NvcGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gJy0nXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDQ1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyAnXydcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJDb2RlID09PSA5NSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vICcwJ1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDQ4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gJzAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gJzonXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNTgpIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZXh0ZW5kZWRUWikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS53YXJuID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiW1dBUk5JTkddIGRldGVjdGVkIHVzZSBvZiB1bnN1cHBvcnRlZCAlOjogb3IgJTo6OiBtb2RpZmllcnMgdG8gc3RyZnRpbWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkVFogPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjdXJyZW50Q2hhckNvZGUpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhhbXBsZXMgZm9yIG5ldyBEYXRlKDApIGluIEdNVFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnVGh1cnNkYXknXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5kYXlzW2RhdGUuZ2V0RGF5KCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnSmFudWFyeSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLm1vbnRoc1tkYXRlLmdldE1vbnRoKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTknXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKE1hdGguZmxvb3IoZGF0ZS5nZXRGdWxsWWVhcigpIC8gMTAwKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMS8wMS83MCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2ODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuRCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTk3MC0wMS0wMSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0YnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3MDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuRiwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdIJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNzI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0SG91cnMoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxMidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0knOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3MzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoaG91cnMxMihkYXRlLmdldEhvdXJzKCkpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3NjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDMoTWF0aC5mbG9vcih0aW1lc3RhbXAgJSAxMDAwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRNaW51dGVzKCksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnYW0nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdQJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGRhdGUuZ2V0SG91cnMoKSA8IDEyID8gbG9jYWxlLmFtIDogbG9jYWxlLnBtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDA6MDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdSJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLlIsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnUyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDgzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldFNlY29uZHMoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMDowMDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4NDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuVCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdVJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKHdlZWtOdW1iZXIoZGF0ZSwgJ3N1bmRheScpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMih3ZWVrTnVtYmVyKGRhdGUsICdtb25kYXknKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxNjowMDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4ODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuWCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTk3MCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1knOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4OTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnR01UJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDkwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlICYmIF9jdXN0b21UaW1lem9uZU9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gXCJHTVRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpeG1lIG9wdGltaXplXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0elN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5tYXRjaCgvXFwoKFtcXHdcXHNdKylcXCkvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHR6U3RyaW5nICYmIHR6U3RyaW5nWzFdIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ1RodSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2EnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLnNob3J0RGF5c1tkYXRlLmdldERheSgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0phbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5ODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLnNob3J0TW9udGhzW2RhdGUuZ2V0TW9udGgoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdjJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLmMsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXREYXRlKCksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldERhdGUoKSwgcGFkZGluZyA9PSBudWxsID8gJyAnIDogcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdKYW4nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnRNb250aHNbZGF0ZS5nZXRNb250aCgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2onOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXkgPSBNYXRoLmNlaWwoKGRhdGUuZ2V0VGltZSgpIC0geS5nZXRUaW1lKCkpIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDMoZGF5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJyAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnayc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwNzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRIb3VycygpLCBwYWRkaW5nID09IG51bGwgPyAnICcgOiBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoaG91cnMxMihkYXRlLmdldEhvdXJzKCkpLCBwYWRkaW5nID09IG51bGwgPyAnICcgOiBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRNb250aCgpICsgMSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdcXG4nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICduJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTEwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAnXFxuJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzFzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ28nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IFN0cmluZyhkYXRlLmdldERhdGUoKSkgKyBvcmRpbmFsKGRhdGUuZ2V0RGF0ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0FNJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAncCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXRIb3VycygpIDwgMTIgPyBsb2NhbGUuQU0gOiBsb2NhbGUuUE07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxMjowMDowMCBBTSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLnIsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE1OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBNYXRoLmZsb29yKHRpbWVzdGFtcCAvIDEwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnXFx0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gJ1xcdCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICc0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF5ID09PSAwID8gNyA6IGRheTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gMSAtIDcsIE1vbmRheSBpcyBmaXJzdCBkYXkgb2YgdGhlIHdlZWtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJyAxLUphbi0xOTcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMudiwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnNCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGRhdGUuZ2V0RGF5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIDAgLSA2LCBTdW5kYXkgaXMgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxMi8zMS82OSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLngsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gKCcnICsgZGF0ZS5nZXRGdWxsWWVhcigpKS5zbGljZSgyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJyswMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAneic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3VzZVV0Y0Jhc2VkRGF0ZSAmJiBfY3VzdG9tVGltZXpvbmVPZmZzZXQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGV4dGVuZGVkVFogPyBcIiswMDowMFwiIDogXCIrMDAwMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9mZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9jdXN0b21UaW1lem9uZU9mZnNldCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gX2N1c3RvbVRpbWV6b25lT2Zmc2V0IC8gKDYwICogMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSAtZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaWduID0gb2ZmIDwgMCA/ICctJyA6ICcrJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlcCA9IGV4dGVuZGVkVFogPyAnOicgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhvdXJzID0gTWF0aC5mbG9vcihNYXRoLmFicyhvZmYgLyA2MCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWlucyA9IE1hdGguYWJzKG9mZiAlIDYwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHNpZ24gKyBwYWRUaWxsMihob3VycykgKyBzZXAgKyBwYWRUaWxsMihtaW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGZvcm1hdFtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gJyUnXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gMzcpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNJblNjb3BlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGZvcm1hdFtpXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFN0cmluZztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdHJmdGltZSA9IF9zdHJmdGltZTtcblxuICAgICAgICBzdHJmdGltZS5sb2NhbGl6ZSA9IGZ1bmN0aW9uKGxvY2FsZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJmdGltZShsb2NhbGUgfHwgX2xvY2FsZSwgX2N1c3RvbVRpbWV6b25lT2Zmc2V0LCBfdXNlVXRjQmFzZWREYXRlKTtcbiAgICAgICAgfTtcblxuICAgICAgICBzdHJmdGltZS50aW1lem9uZSA9IGZ1bmN0aW9uKHRpbWV6b25lKSB7XG4gICAgICAgICAgICB2YXIgY3VzdG9tVGltZXpvbmVPZmZzZXQgPSBfY3VzdG9tVGltZXpvbmVPZmZzZXQ7XG4gICAgICAgICAgICB2YXIgdXNlVXRjQmFzZWREYXRlID0gX3VzZVV0Y0Jhc2VkRGF0ZTtcblxuICAgICAgICAgICAgdmFyIHRpbWV6b25lVHlwZSA9IHR5cGVvZiB0aW1lem9uZTtcbiAgICAgICAgICAgIGlmICh0aW1lem9uZVR5cGUgPT09ICdudW1iZXInIHx8IHRpbWV6b25lVHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICB1c2VVdGNCYXNlZERhdGUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgLy8gSVNPIDg2MDEgZm9ybWF0IHRpbWV6b25lIHN0cmluZywgWy0rXUhITU1cbiAgICAgICAgICAgICAgICBpZiAodGltZXpvbmVUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2lnbiA9IHRpbWV6b25lWzBdID09PSAnLScgPyAtMSA6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3VycyA9IHBhcnNlSW50KHRpbWV6b25lLnNsaWNlKDEsIDMpLCAxMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzID0gcGFyc2VJbnQodGltZXpvbmUuc2xpY2UoMywgNSksIDEwKTtcblxuICAgICAgICAgICAgICAgICAgICBjdXN0b21UaW1lem9uZU9mZnNldCA9IHNpZ24gKiAoKDYwICogaG91cnMpICsgbWludXRlcykgKiA2MCAqIDEwMDA7XG4gICAgICAgICAgICAgICAgICAgIC8vIGluIG1pbnV0ZXM6IDQyMFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aW1lem9uZVR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbVRpbWV6b25lT2Zmc2V0ID0gdGltZXpvbmUgKiA2MCAqIDEwMDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKF9sb2NhbGUsIGN1c3RvbVRpbWV6b25lT2Zmc2V0LCB1c2VVdGNCYXNlZERhdGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHN0cmZ0aW1lLnV0YyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJmdGltZShfbG9jYWxlLCBfY3VzdG9tVGltZXpvbmVPZmZzZXQsIHRydWUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBzdHJmdGltZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYWRUaWxsMihudW1iZXJUb1BhZCwgcGFkZGluZ0NoYXIpIHtcbiAgICAgICAgaWYgKHBhZGRpbmdDaGFyID09PSAnJyB8fCBudW1iZXJUb1BhZCA+IDkpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJUb1BhZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFkZGluZ0NoYXIgPT0gbnVsbCkge1xuICAgICAgICAgICAgcGFkZGluZ0NoYXIgPSAnMCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhZGRpbmdDaGFyICsgbnVtYmVyVG9QYWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFkVGlsbDMobnVtYmVyVG9QYWQpIHtcbiAgICAgICAgaWYgKG51bWJlclRvUGFkID4gOTkpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJUb1BhZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobnVtYmVyVG9QYWQgPiA5KSB7XG4gICAgICAgICAgICByZXR1cm4gJzAnICsgbnVtYmVyVG9QYWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcwMCcgKyBudW1iZXJUb1BhZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBob3VyczEyKGhvdXIpIHtcbiAgICAgICAgaWYgKGhvdXIgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAxMjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChob3VyID4gMTIpIHtcbiAgICAgICAgICAgIHJldHVybiBob3VyIC0gMTI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgfVxuXG4gICAgLy8gZmlyc3RXZWVrZGF5OiAnc3VuZGF5JyBvciAnbW9uZGF5JywgZGVmYXVsdCBpcyAnc3VuZGF5J1xuICAgIC8vXG4gICAgLy8gUGlsZmVyZWQgJiBwb3J0ZWQgZnJvbSBSdWJ5J3Mgc3RyZnRpbWUgaW1wbGVtZW50YXRpb24uXG4gICAgZnVuY3Rpb24gd2Vla051bWJlcihkYXRlLCBmaXJzdFdlZWtkYXkpIHtcbiAgICAgICAgZmlyc3RXZWVrZGF5ID0gZmlyc3RXZWVrZGF5IHx8ICdzdW5kYXknO1xuXG4gICAgICAgIC8vIFRoaXMgd29ya3MgYnkgc2hpZnRpbmcgdGhlIHdlZWtkYXkgYmFjayBieSBvbmUgZGF5IGlmIHdlXG4gICAgICAgIC8vIGFyZSB0cmVhdGluZyBNb25kYXkgYXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgdmFyIHdlZWtkYXkgPSBkYXRlLmdldERheSgpO1xuICAgICAgICBpZiAoZmlyc3RXZWVrZGF5ID09PSAnbW9uZGF5Jykge1xuICAgICAgICAgICAgaWYgKHdlZWtkYXkgPT09IDApIC8vIFN1bmRheVxuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSA2O1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHdlZWtkYXktLTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBmaXJzdERheU9mWWVhclV0YyA9IERhdGUuVVRDKGRhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSksXG4gICAgICAgICAgICBkYXRlVXRjID0gRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKSxcbiAgICAgICAgICAgIHlkYXkgPSBNYXRoLmZsb29yKChkYXRlVXRjIC0gZmlyc3REYXlPZlllYXJVdGMpIC8gODY0MDAwMDApLFxuICAgICAgICAgICAgd2Vla051bSA9ICh5ZGF5ICsgNyAtIHdlZWtkYXkpIC8gNztcblxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih3ZWVrTnVtKTtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIG9yZGluYWwgc3VmZml4IGZvciBhIG51bWJlcjogc3QsIG5kLCByZCwgb3IgdGhcbiAgICBmdW5jdGlvbiBvcmRpbmFsKG51bWJlcikge1xuICAgICAgICB2YXIgaSA9IG51bWJlciAlIDEwO1xuICAgICAgICB2YXIgaWkgPSBudW1iZXIgJSAxMDA7XG5cbiAgICAgICAgaWYgKChpaSA+PSAxMSAmJiBpaSA8PSAxMykgfHwgaSA9PT0gMCB8fCBpID49IDQpIHtcbiAgICAgICAgICAgIHJldHVybiAndGgnO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoaSkge1xuICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gJ3N0JztcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuICduZCc7XG4gICAgICAgICAgICBjYXNlIDM6IHJldHVybiAncmQnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IoZGF0ZSkge1xuICAgICAgICByZXR1cm4gKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSB8fCAwKSAqIDYwMDAwO1xuICAgIH1cblxufSgpKTtcbiIsIihmdW5jdGlvbihmKXtpZih0eXBlb2YgZXhwb3J0cz09PVwib2JqZWN0XCImJnR5cGVvZiBtb2R1bGUhPT1cInVuZGVmaW5lZFwiKXttb2R1bGUuZXhwb3J0cz1mKCl9ZWxzZSBpZih0eXBlb2YgZGVmaW5lPT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kKXtkZWZpbmUoW10sZil9ZWxzZXt2YXIgZztpZih0eXBlb2Ygd2luZG93IT09XCJ1bmRlZmluZWRcIil7Zz13aW5kb3d9ZWxzZSBpZih0eXBlb2YgZ2xvYmFsIT09XCJ1bmRlZmluZWRcIil7Zz1nbG9iYWx9ZWxzZSBpZih0eXBlb2Ygc2VsZiE9PVwidW5kZWZpbmVkXCIpe2c9c2VsZn1lbHNle2c9dGhpc31nLlZpcnR1YWxEb20gPSBmKCl9fSkoZnVuY3Rpb24oKXt2YXIgZGVmaW5lLG1vZHVsZSxleHBvcnRzO3JldHVybiAoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSh7MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoXCIuL3Zkb20vY3JlYXRlLWVsZW1lbnQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVFbGVtZW50XG5cbn0se1wiLi92ZG9tL2NyZWF0ZS1lbGVtZW50LmpzXCI6MjR9XSwyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkaWZmID0gcmVxdWlyZShcIi4vdnRyZWUvZGlmZi5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRpZmZcblxufSx7XCIuL3Z0cmVlL2RpZmYuanNcIjo0N31dLDM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuLyohXG4gKiBDcm9zcy1Ccm93c2VyIFNwbGl0IDEuMS4xXG4gKiBDb3B5cmlnaHQgMjAwNy0yMDEyIFN0ZXZlbiBMZXZpdGhhbiA8c3RldmVubGV2aXRoYW4uY29tPlxuICogQXZhaWxhYmxlIHVuZGVyIHRoZSBNSVQgTGljZW5zZVxuICogRUNNQVNjcmlwdCBjb21wbGlhbnQsIHVuaWZvcm0gY3Jvc3MtYnJvd3NlciBzcGxpdCBtZXRob2RcbiAqL1xuXG4vKipcbiAqIFNwbGl0cyBhIHN0cmluZyBpbnRvIGFuIGFycmF5IG9mIHN0cmluZ3MgdXNpbmcgYSByZWdleCBvciBzdHJpbmcgc2VwYXJhdG9yLiBNYXRjaGVzIG9mIHRoZVxuICogc2VwYXJhdG9yIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdCBhcnJheS4gSG93ZXZlciwgaWYgYHNlcGFyYXRvcmAgaXMgYSByZWdleCB0aGF0IGNvbnRhaW5zXG4gKiBjYXB0dXJpbmcgZ3JvdXBzLCBiYWNrcmVmZXJlbmNlcyBhcmUgc3BsaWNlZCBpbnRvIHRoZSByZXN1bHQgZWFjaCB0aW1lIGBzZXBhcmF0b3JgIGlzIG1hdGNoZWQuXG4gKiBGaXhlcyBicm93c2VyIGJ1Z3MgY29tcGFyZWQgdG8gdGhlIG5hdGl2ZSBgU3RyaW5nLnByb3RvdHlwZS5zcGxpdGAgYW5kIGNhbiBiZSB1c2VkIHJlbGlhYmx5XG4gKiBjcm9zcy1icm93c2VyLlxuICogQHBhcmFtIHtTdHJpbmd9IHN0ciBTdHJpbmcgdG8gc3BsaXQuXG4gKiBAcGFyYW0ge1JlZ0V4cHxTdHJpbmd9IHNlcGFyYXRvciBSZWdleCBvciBzdHJpbmcgdG8gdXNlIGZvciBzZXBhcmF0aW5nIHRoZSBzdHJpbmcuXG4gKiBAcGFyYW0ge051bWJlcn0gW2xpbWl0XSBNYXhpbXVtIG51bWJlciBvZiBpdGVtcyB0byBpbmNsdWRlIGluIHRoZSByZXN1bHQgYXJyYXkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IEFycmF5IG9mIHN1YnN0cmluZ3MuXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIEJhc2ljIHVzZVxuICogc3BsaXQoJ2EgYiBjIGQnLCAnICcpO1xuICogLy8gLT4gWydhJywgJ2InLCAnYycsICdkJ11cbiAqXG4gKiAvLyBXaXRoIGxpbWl0XG4gKiBzcGxpdCgnYSBiIGMgZCcsICcgJywgMik7XG4gKiAvLyAtPiBbJ2EnLCAnYiddXG4gKlxuICogLy8gQmFja3JlZmVyZW5jZXMgaW4gcmVzdWx0IGFycmF5XG4gKiBzcGxpdCgnLi53b3JkMSB3b3JkMi4uJywgLyhbYS16XSspKFxcZCspL2kpO1xuICogLy8gLT4gWycuLicsICd3b3JkJywgJzEnLCAnICcsICd3b3JkJywgJzInLCAnLi4nXVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IChmdW5jdGlvbiBzcGxpdCh1bmRlZikge1xuXG4gIHZhciBuYXRpdmVTcGxpdCA9IFN0cmluZy5wcm90b3R5cGUuc3BsaXQsXG4gICAgY29tcGxpYW50RXhlY05wY2cgPSAvKCk/Py8uZXhlYyhcIlwiKVsxXSA9PT0gdW5kZWYsXG4gICAgLy8gTlBDRzogbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXBcbiAgICBzZWxmO1xuXG4gIHNlbGYgPSBmdW5jdGlvbihzdHIsIHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAvLyBJZiBgc2VwYXJhdG9yYCBpcyBub3QgYSByZWdleCwgdXNlIGBuYXRpdmVTcGxpdGBcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHNlcGFyYXRvcikgIT09IFwiW29iamVjdCBSZWdFeHBdXCIpIHtcbiAgICAgIHJldHVybiBuYXRpdmVTcGxpdC5jYWxsKHN0ciwgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfVxuICAgIHZhciBvdXRwdXQgPSBbXSxcbiAgICAgIGZsYWdzID0gKHNlcGFyYXRvci5pZ25vcmVDYXNlID8gXCJpXCIgOiBcIlwiKSArIChzZXBhcmF0b3IubXVsdGlsaW5lID8gXCJtXCIgOiBcIlwiKSArIChzZXBhcmF0b3IuZXh0ZW5kZWQgPyBcInhcIiA6IFwiXCIpICsgLy8gUHJvcG9zZWQgZm9yIEVTNlxuICAgICAgKHNlcGFyYXRvci5zdGlja3kgPyBcInlcIiA6IFwiXCIpLFxuICAgICAgLy8gRmlyZWZveCAzK1xuICAgICAgbGFzdExhc3RJbmRleCA9IDAsXG4gICAgICAvLyBNYWtlIGBnbG9iYWxgIGFuZCBhdm9pZCBgbGFzdEluZGV4YCBpc3N1ZXMgYnkgd29ya2luZyB3aXRoIGEgY29weVxuICAgICAgc2VwYXJhdG9yID0gbmV3IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCBmbGFncyArIFwiZ1wiKSxcbiAgICAgIHNlcGFyYXRvcjIsIG1hdGNoLCBsYXN0SW5kZXgsIGxhc3RMZW5ndGg7XG4gICAgc3RyICs9IFwiXCI7IC8vIFR5cGUtY29udmVydFxuICAgIGlmICghY29tcGxpYW50RXhlY05wY2cpIHtcbiAgICAgIC8vIERvZXNuJ3QgbmVlZCBmbGFncyBneSwgYnV0IHRoZXkgZG9uJ3QgaHVydFxuICAgICAgc2VwYXJhdG9yMiA9IG5ldyBSZWdFeHAoXCJeXCIgKyBzZXBhcmF0b3Iuc291cmNlICsgXCIkKD8hXFxcXHMpXCIsIGZsYWdzKTtcbiAgICB9XG4gICAgLyogVmFsdWVzIGZvciBgbGltaXRgLCBwZXIgdGhlIHNwZWM6XG4gICAgICogSWYgdW5kZWZpbmVkOiA0Mjk0OTY3Mjk1IC8vIE1hdGgucG93KDIsIDMyKSAtIDFcbiAgICAgKiBJZiAwLCBJbmZpbml0eSwgb3IgTmFOOiAwXG4gICAgICogSWYgcG9zaXRpdmUgbnVtYmVyOiBsaW1pdCA9IE1hdGguZmxvb3IobGltaXQpOyBpZiAobGltaXQgPiA0Mjk0OTY3Mjk1KSBsaW1pdCAtPSA0Mjk0OTY3Mjk2O1xuICAgICAqIElmIG5lZ2F0aXZlIG51bWJlcjogNDI5NDk2NzI5NiAtIE1hdGguZmxvb3IoTWF0aC5hYnMobGltaXQpKVxuICAgICAqIElmIG90aGVyOiBUeXBlLWNvbnZlcnQsIHRoZW4gdXNlIHRoZSBhYm92ZSBydWxlc1xuICAgICAqL1xuICAgIGxpbWl0ID0gbGltaXQgPT09IHVuZGVmID8gLTEgPj4+IDAgOiAvLyBNYXRoLnBvdygyLCAzMikgLSAxXG4gICAgbGltaXQgPj4+IDA7IC8vIFRvVWludDMyKGxpbWl0KVxuICAgIHdoaWxlIChtYXRjaCA9IHNlcGFyYXRvci5leGVjKHN0cikpIHtcbiAgICAgIC8vIGBzZXBhcmF0b3IubGFzdEluZGV4YCBpcyBub3QgcmVsaWFibGUgY3Jvc3MtYnJvd3NlclxuICAgICAgbGFzdEluZGV4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gICAgICBpZiAobGFzdEluZGV4ID4gbGFzdExhc3RJbmRleCkge1xuICAgICAgICBvdXRwdXQucHVzaChzdHIuc2xpY2UobGFzdExhc3RJbmRleCwgbWF0Y2guaW5kZXgpKTtcbiAgICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGAgZm9yXG4gICAgICAgIC8vIG5vbnBhcnRpY2lwYXRpbmcgY2FwdHVyaW5nIGdyb3Vwc1xuICAgICAgICBpZiAoIWNvbXBsaWFudEV4ZWNOcGNnICYmIG1hdGNoLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBtYXRjaFswXS5yZXBsYWNlKHNlcGFyYXRvcjIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMjsgaSsrKSB7XG4gICAgICAgICAgICAgIGlmIChhcmd1bWVudHNbaV0gPT09IHVuZGVmKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2hbaV0gPSB1bmRlZjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtYXRjaC5sZW5ndGggPiAxICYmIG1hdGNoLmluZGV4IDwgc3RyLmxlbmd0aCkge1xuICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KG91dHB1dCwgbWF0Y2guc2xpY2UoMSkpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RMZW5ndGggPSBtYXRjaFswXS5sZW5ndGg7XG4gICAgICAgIGxhc3RMYXN0SW5kZXggPSBsYXN0SW5kZXg7XG4gICAgICAgIGlmIChvdXRwdXQubGVuZ3RoID49IGxpbWl0KSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzZXBhcmF0b3IubGFzdEluZGV4ID09PSBtYXRjaC5pbmRleCkge1xuICAgICAgICBzZXBhcmF0b3IubGFzdEluZGV4Kys7IC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3BcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGxhc3RMYXN0SW5kZXggPT09IHN0ci5sZW5ndGgpIHtcbiAgICAgIGlmIChsYXN0TGVuZ3RoIHx8ICFzZXBhcmF0b3IudGVzdChcIlwiKSkge1xuICAgICAgICBvdXRwdXQucHVzaChcIlwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2goc3RyLnNsaWNlKGxhc3RMYXN0SW5kZXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dC5sZW5ndGggPiBsaW1pdCA/IG91dHB1dC5zbGljZSgwLCBsaW1pdCkgOiBvdXRwdXQ7XG4gIH07XG5cbiAgcmV0dXJuIHNlbGY7XG59KSgpO1xuXG59LHt9XSw0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIE9uZVZlcnNpb25Db25zdHJhaW50ID0gcmVxdWlyZSgnaW5kaXZpZHVhbC9vbmUtdmVyc2lvbicpO1xuXG52YXIgTVlfVkVSU0lPTiA9ICc3Jztcbk9uZVZlcnNpb25Db25zdHJhaW50KCdldi1zdG9yZScsIE1ZX1ZFUlNJT04pO1xuXG52YXIgaGFzaEtleSA9ICdfX0VWX1NUT1JFX0tFWUAnICsgTVlfVkVSU0lPTjtcblxubW9kdWxlLmV4cG9ydHMgPSBFdlN0b3JlO1xuXG5mdW5jdGlvbiBFdlN0b3JlKGVsZW0pIHtcbiAgICB2YXIgaGFzaCA9IGVsZW1baGFzaEtleV07XG5cbiAgICBpZiAoIWhhc2gpIHtcbiAgICAgICAgaGFzaCA9IGVsZW1baGFzaEtleV0gPSB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzaDtcbn1cblxufSx7XCJpbmRpdmlkdWFsL29uZS12ZXJzaW9uXCI6Nn1dLDU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xuJ3VzZSBzdHJpY3QnO1xuXG4vKmdsb2JhbCB3aW5kb3csIGdsb2JhbCovXG5cbnZhciByb290ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgP1xuICAgIHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID9cbiAgICBnbG9iYWwgOiB7fTtcblxubW9kdWxlLmV4cG9ydHMgPSBJbmRpdmlkdWFsO1xuXG5mdW5jdGlvbiBJbmRpdmlkdWFsKGtleSwgdmFsdWUpIHtcbiAgICBpZiAoa2V5IGluIHJvb3QpIHtcbiAgICAgICAgcmV0dXJuIHJvb3Rba2V5XTtcbiAgICB9XG5cbiAgICByb290W2tleV0gPSB2YWx1ZTtcblxuICAgIHJldHVybiB2YWx1ZTtcbn1cblxufSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pXG59LHt9XSw2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIEluZGl2aWR1YWwgPSByZXF1aXJlKCcuL2luZGV4LmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gT25lVmVyc2lvbjtcblxuZnVuY3Rpb24gT25lVmVyc2lvbihtb2R1bGVOYW1lLCB2ZXJzaW9uLCBkZWZhdWx0VmFsdWUpIHtcbiAgICB2YXIga2V5ID0gJ19fSU5ESVZJRFVBTF9PTkVfVkVSU0lPTl8nICsgbW9kdWxlTmFtZTtcbiAgICB2YXIgZW5mb3JjZUtleSA9IGtleSArICdfRU5GT1JDRV9TSU5HTEVUT04nO1xuXG4gICAgdmFyIHZlcnNpb25WYWx1ZSA9IEluZGl2aWR1YWwoZW5mb3JjZUtleSwgdmVyc2lvbik7XG5cbiAgICBpZiAodmVyc2lvblZhbHVlICE9PSB2ZXJzaW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuIG9ubHkgaGF2ZSBvbmUgY29weSBvZiAnICtcbiAgICAgICAgICAgIG1vZHVsZU5hbWUgKyAnLlxcbicgK1xuICAgICAgICAgICAgJ1lvdSBhbHJlYWR5IGhhdmUgdmVyc2lvbiAnICsgdmVyc2lvblZhbHVlICtcbiAgICAgICAgICAgICcgaW5zdGFsbGVkLlxcbicgK1xuICAgICAgICAgICAgJ1RoaXMgbWVhbnMgeW91IGNhbm5vdCBpbnN0YWxsIHZlcnNpb24gJyArIHZlcnNpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBJbmRpdmlkdWFsKGtleSwgZGVmYXVsdFZhbHVlKTtcbn1cblxufSx7XCIuL2luZGV4LmpzXCI6NX1dLDc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xudmFyIHRvcExldmVsID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOlxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDoge31cbnZhciBtaW5Eb2MgPSByZXF1aXJlKCdtaW4tZG9jdW1lbnQnKTtcblxuaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGRvY3VtZW50O1xufSBlbHNlIHtcbiAgICB2YXIgZG9jY3kgPSB0b3BMZXZlbFsnX19HTE9CQUxfRE9DVU1FTlRfQ0FDSEVANCddO1xuXG4gICAgaWYgKCFkb2NjeSkge1xuICAgICAgICBkb2NjeSA9IHRvcExldmVsWydfX0dMT0JBTF9ET0NVTUVOVF9DQUNIRUA0J10gPSBtaW5Eb2M7XG4gICAgfVxuXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBkb2NjeTtcbn1cblxufSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pXG59LHtcIm1pbi1kb2N1bWVudFwiOjE3fV0sODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgZG9tV2FsayA9IHJlcXVpcmUoXCJkb20td2Fsa1wiKVxuXG52YXIgQ29tbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1jb21tZW50LmpzXCIpXG52YXIgRE9NVGV4dCA9IHJlcXVpcmUoXCIuL2RvbS10ZXh0LmpzXCIpXG52YXIgRE9NRWxlbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1lbGVtZW50LmpzXCIpXG52YXIgRG9jdW1lbnRGcmFnbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1mcmFnbWVudC5qc1wiKVxudmFyIEV2ZW50ID0gcmVxdWlyZShcIi4vZXZlbnQuanNcIilcbnZhciBkaXNwYXRjaEV2ZW50ID0gcmVxdWlyZShcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIilcbnZhciBhZGRFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG52YXIgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IERvY3VtZW50O1xuXG5mdW5jdGlvbiBEb2N1bWVudCgpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRG9jdW1lbnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmhlYWQgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJoZWFkXCIpXG4gICAgdGhpcy5ib2R5ID0gdGhpcy5jcmVhdGVFbGVtZW50KFwiYm9keVwiKVxuICAgIHRoaXMuZG9jdW1lbnRFbGVtZW50ID0gdGhpcy5jcmVhdGVFbGVtZW50KFwiaHRtbFwiKVxuICAgIHRoaXMuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaGVhZClcbiAgICB0aGlzLmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJvZHkpXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW3RoaXMuZG9jdW1lbnRFbGVtZW50XVxuICAgIHRoaXMubm9kZVR5cGUgPSA5XG59XG5cbnZhciBwcm90byA9IERvY3VtZW50LnByb3RvdHlwZTtcbnByb3RvLmNyZWF0ZVRleHROb2RlID0gZnVuY3Rpb24gY3JlYXRlVGV4dE5vZGUodmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IERPTVRleHQodmFsdWUsIHRoaXMpXG59XG5cbnByb3RvLmNyZWF0ZUVsZW1lbnROUyA9IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2UsIHRhZ05hbWUpIHtcbiAgICB2YXIgbnMgPSBuYW1lc3BhY2UgPT09IG51bGwgPyBudWxsIDogU3RyaW5nKG5hbWVzcGFjZSlcbiAgICByZXR1cm4gbmV3IERPTUVsZW1lbnQodGFnTmFtZSwgdGhpcywgbnMpXG59XG5cbnByb3RvLmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiBjcmVhdGVFbGVtZW50KHRhZ05hbWUpIHtcbiAgICByZXR1cm4gbmV3IERPTUVsZW1lbnQodGFnTmFtZSwgdGhpcylcbn1cblxucHJvdG8uY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSB7XG4gICAgcmV0dXJuIG5ldyBEb2N1bWVudEZyYWdtZW50KHRoaXMpXG59XG5cbnByb3RvLmNyZWF0ZUV2ZW50ID0gZnVuY3Rpb24gY3JlYXRlRXZlbnQoZmFtaWx5KSB7XG4gICAgcmV0dXJuIG5ldyBFdmVudChmYW1pbHkpXG59XG5cbnByb3RvLmNyZWF0ZUNvbW1lbnQgPSBmdW5jdGlvbiBjcmVhdGVDb21tZW50KGRhdGEpIHtcbiAgICByZXR1cm4gbmV3IENvbW1lbnQoZGF0YSwgdGhpcylcbn1cblxucHJvdG8uZ2V0RWxlbWVudEJ5SWQgPSBmdW5jdGlvbiBnZXRFbGVtZW50QnlJZChpZCkge1xuICAgIGlkID0gU3RyaW5nKGlkKVxuXG4gICAgdmFyIHJlc3VsdCA9IGRvbVdhbGsodGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAoU3RyaW5nKG5vZGUuaWQpID09PSBpZCkge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gcmVzdWx0IHx8IG51bGxcbn1cblxucHJvdG8uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IERPTUVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWVcbnByb3RvLmdldEVsZW1lbnRzQnlUYWdOYW1lID0gRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWVcbnByb3RvLmNvbnRhaW5zID0gRE9NRWxlbWVudC5wcm90b3R5cGUuY29udGFpbnNcblxucHJvdG8ucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcbnByb3RvLmFkZEV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyXG5wcm90by5kaXNwYXRjaEV2ZW50ID0gZGlzcGF0Y2hFdmVudFxuXG59LHtcIi4vZG9tLWNvbW1lbnQuanNcIjo5LFwiLi9kb20tZWxlbWVudC5qc1wiOjEwLFwiLi9kb20tZnJhZ21lbnQuanNcIjoxMSxcIi4vZG9tLXRleHQuanNcIjoxMixcIi4vZXZlbnQuanNcIjoxMyxcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTQsXCIuL2V2ZW50L2Rpc3BhdGNoLWV2ZW50LmpzXCI6MTUsXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiOjE2LFwiZG9tLXdhbGtcIjoxOH1dLDk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBDb21tZW50XG5cbmZ1bmN0aW9uIENvbW1lbnQoZGF0YSwgb3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQ29tbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tZW50KGRhdGEsIG93bmVyKVxuICAgIH1cblxuICAgIHRoaXMuZGF0YSA9IGRhdGFcbiAgICB0aGlzLm5vZGVWYWx1ZSA9IGRhdGFcbiAgICB0aGlzLmxlbmd0aCA9IGRhdGEubGVuZ3RoXG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxufVxuXG5Db21tZW50LnByb3RvdHlwZS5ub2RlVHlwZSA9IDhcbkNvbW1lbnQucHJvdG90eXBlLm5vZGVOYW1lID0gXCIjY29tbWVudFwiXG5cbkNvbW1lbnQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gX0NvbW1lbnRfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBDb21tZW50XVwiXG59XG5cbn0se31dLDEwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb21XYWxrID0gcmVxdWlyZShcImRvbS13YWxrXCIpXG52YXIgZGlzcGF0Y2hFdmVudCA9IHJlcXVpcmUoXCIuL2V2ZW50L2Rpc3BhdGNoLWV2ZW50LmpzXCIpXG52YXIgYWRkRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L2FkZC1ldmVudC1saXN0ZW5lci5qc1wiKVxudmFyIHJlbW92ZUV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKFwiLi9ldmVudC9yZW1vdmUtZXZlbnQtbGlzdGVuZXIuanNcIilcbnZhciBzZXJpYWxpemVOb2RlID0gcmVxdWlyZShcIi4vc2VyaWFsaXplLmpzXCIpXG5cbnZhciBodG1sbnMgPSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIlxuXG5tb2R1bGUuZXhwb3J0cyA9IERPTUVsZW1lbnRcblxuZnVuY3Rpb24gRE9NRWxlbWVudCh0YWdOYW1lLCBvd25lciwgbmFtZXNwYWNlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERPTUVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lKVxuICAgIH1cblxuICAgIHZhciBucyA9IG5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkID8gaHRtbG5zIDogKG5hbWVzcGFjZSB8fCBudWxsKVxuXG4gICAgdGhpcy50YWdOYW1lID0gbnMgPT09IGh0bWxucyA/IFN0cmluZyh0YWdOYW1lKS50b1VwcGVyQ2FzZSgpIDogdGFnTmFtZVxuICAgIHRoaXMubm9kZU5hbWUgPSB0aGlzLnRhZ05hbWVcbiAgICB0aGlzLmNsYXNzTmFtZSA9IFwiXCJcbiAgICB0aGlzLmRhdGFzZXQgPSB7fVxuICAgIHRoaXMuY2hpbGROb2RlcyA9IFtdXG4gICAgdGhpcy5wYXJlbnROb2RlID0gbnVsbFxuICAgIHRoaXMuc3R5bGUgPSB7fVxuICAgIHRoaXMub3duZXJEb2N1bWVudCA9IG93bmVyIHx8IG51bGxcbiAgICB0aGlzLm5hbWVzcGFjZVVSSSA9IG5zXG4gICAgdGhpcy5fYXR0cmlidXRlcyA9IHt9XG5cbiAgICBpZiAodGhpcy50YWdOYW1lID09PSAnSU5QVVQnKSB7XG4gICAgICB0aGlzLnR5cGUgPSAndGV4dCdcbiAgICB9XG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnR5cGUgPSBcIkRPTUVsZW1lbnRcIlxuRE9NRWxlbWVudC5wcm90b3R5cGUubm9kZVR5cGUgPSAxXG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkID0gZnVuY3Rpb24gX0VsZW1lbnRfYXBwZW5kQ2hpbGQoY2hpbGQpIHtcbiAgICBpZiAoY2hpbGQucGFyZW50Tm9kZSkge1xuICAgICAgICBjaGlsZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNoaWxkKVxuICAgIH1cblxuICAgIHRoaXMuY2hpbGROb2Rlcy5wdXNoKGNoaWxkKVxuICAgIGNoaWxkLnBhcmVudE5vZGUgPSB0aGlzXG5cbiAgICByZXR1cm4gY2hpbGRcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9yZXBsYWNlQ2hpbGQoZWxlbSwgbmVlZGxlKSB7XG4gICAgICAgIC8vIFRPRE86IFRocm93IE5vdEZvdW5kRXJyb3IgaWYgbmVlZGxlLnBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgICAgICBpZiAoZWxlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSlcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpbmRleCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKG5lZWRsZSlcblxuICAgICAgICBuZWVkbGUucGFyZW50Tm9kZSA9IG51bGxcbiAgICAgICAgdGhpcy5jaGlsZE5vZGVzW2luZGV4XSA9IGVsZW1cbiAgICAgICAgZWxlbS5wYXJlbnROb2RlID0gdGhpc1xuXG4gICAgICAgIHJldHVybiBuZWVkbGVcbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkID0gZnVuY3Rpb24gX0VsZW1lbnRfcmVtb3ZlQ2hpbGQoZWxlbSkge1xuICAgIC8vIFRPRE86IFRocm93IE5vdEZvdW5kRXJyb3IgaWYgZWxlbS5wYXJlbnROb2RlICE9PSB0aGlzXG5cbiAgICB2YXIgaW5kZXggPSB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihlbGVtKVxuICAgIHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UoaW5kZXgsIDEpXG5cbiAgICBlbGVtLnBhcmVudE5vZGUgPSBudWxsXG4gICAgcmV0dXJuIGVsZW1cbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9pbnNlcnRCZWZvcmUoZWxlbSwgbmVlZGxlKSB7XG4gICAgICAgIC8vIFRPRE86IFRocm93IE5vdEZvdW5kRXJyb3IgaWYgcmVmZXJlbmNlRWxlbWVudCBpcyBhIGRvbSBub2RlXG4gICAgICAgIC8vIGFuZCBwYXJlbnROb2RlICE9PSB0aGlzXG5cbiAgICAgICAgaWYgKGVsZW0ucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW0pXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaW5kZXggPSBuZWVkbGUgPT09IG51bGwgfHwgbmVlZGxlID09PSB1bmRlZmluZWQgP1xuICAgICAgICAgICAgLTEgOlxuICAgICAgICAgICAgdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YobmVlZGxlKVxuXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKGluZGV4LCAwLCBlbGVtKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGlsZE5vZGVzLnB1c2goZWxlbSlcbiAgICAgICAgfVxuXG4gICAgICAgIGVsZW0ucGFyZW50Tm9kZSA9IHRoaXNcbiAgICAgICAgcmV0dXJuIGVsZW1cbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHZhciBwcmVmaXggPSBudWxsXG4gICAgICAgIHZhciBsb2NhbE5hbWUgPSBuYW1lXG4gICAgICAgIHZhciBjb2xvblBvc2l0aW9uID0gbmFtZS5pbmRleE9mKFwiOlwiKVxuICAgICAgICBpZiAoY29sb25Qb3NpdGlvbiA+IC0xKSB7XG4gICAgICAgICAgICBwcmVmaXggPSBuYW1lLnN1YnN0cigwLCBjb2xvblBvc2l0aW9uKVxuICAgICAgICAgICAgbG9jYWxOYW1lID0gbmFtZS5zdWJzdHIoY29sb25Qb3NpdGlvbiArIDEpXG4gICAgICAgIH1cbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV0gfHwgKHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXSA9IHt9KVxuICAgICAgICBhdHRyaWJ1dGVzW2xvY2FsTmFtZV0gPSB7dmFsdWU6IHZhbHVlLCBwcmVmaXg6IHByZWZpeH1cbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9nZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV07XG4gICAgICAgIHZhciB2YWx1ZSA9IGF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlc1tuYW1lXSAmJiBhdHRyaWJ1dGVzW25hbWVdLnZhbHVlXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV07XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBkZWxldGUgYXR0cmlidXRlc1tuYW1lXVxuICAgICAgICB9XG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5oYXNBdHRyaWJ1dGVOUyA9XG4gICAgZnVuY3Rpb24gX0VsZW1lbnRfaGFzQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lKSB7XG4gICAgICAgIHZhciBhdHRyaWJ1dGVzID0gdGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdXG4gICAgICAgIHJldHVybiAhIWF0dHJpYnV0ZXMgJiYgbmFtZSBpbiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0QXR0cmlidXRlTlMobnVsbCwgbmFtZSwgdmFsdWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEF0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXR0cmlidXRlTlMobnVsbCwgbmFtZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfcmVtb3ZlQXR0cmlidXRlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhudWxsLCBuYW1lKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5oYXNBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9oYXNBdHRyaWJ1dGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLmhhc0F0dHJpYnV0ZU5TKG51bGwsIG5hbWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSByZW1vdmVFdmVudExpc3RlbmVyXG5ET01FbGVtZW50LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lclxuRE9NRWxlbWVudC5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudCA9IGRpc3BhdGNoRXZlbnRcblxuLy8gVW4taW1wbGVtZW50ZWRcbkRPTUVsZW1lbnQucHJvdG90eXBlLmZvY3VzID0gZnVuY3Rpb24gX0VsZW1lbnRfZm9jdXMoKSB7XG4gICAgcmV0dXJuIHZvaWQgMFxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIF9FbGVtZW50X3RvU3RyaW5nKCkge1xuICAgIHJldHVybiBzZXJpYWxpemVOb2RlKHRoaXMpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBmdW5jdGlvbiBfRWxlbWVudF9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNsYXNzTmFtZXMpIHtcbiAgICB2YXIgY2xhc3NlcyA9IGNsYXNzTmFtZXMuc3BsaXQoXCIgXCIpO1xuICAgIHZhciBlbGVtcyA9IFtdXG5cbiAgICBkb21XYWxrKHRoaXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgICAgICB2YXIgbm9kZUNsYXNzTmFtZSA9IG5vZGUuY2xhc3NOYW1lIHx8IFwiXCJcbiAgICAgICAgICAgIHZhciBub2RlQ2xhc3NlcyA9IG5vZGVDbGFzc05hbWUuc3BsaXQoXCIgXCIpXG5cbiAgICAgICAgICAgIGlmIChjbGFzc2VzLmV2ZXJ5KGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVDbGFzc2VzLmluZGV4T2YoaXRlbSkgIT09IC0xXG4gICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgICAgIGVsZW1zLnB1c2gobm9kZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gZWxlbXNcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBmdW5jdGlvbiBfRWxlbWVudF9nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdOYW1lKSB7XG4gICAgdGFnTmFtZSA9IHRhZ05hbWUudG9Mb3dlckNhc2UoKVxuICAgIHZhciBlbGVtcyA9IFtdXG5cbiAgICBkb21XYWxrKHRoaXMuY2hpbGROb2RlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEgJiYgKHRhZ05hbWUgPT09ICcqJyB8fCBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGFnTmFtZSkpIHtcbiAgICAgICAgICAgIGVsZW1zLnB1c2gobm9kZSlcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gZWxlbXNcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiBfRWxlbWVudF9jb250YWlucyhlbGVtZW50KSB7XG4gICAgcmV0dXJuIGRvbVdhbGsodGhpcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQgPT09IG5vZGVcbiAgICB9KSB8fCBmYWxzZVxufVxuXG59LHtcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTQsXCIuL2V2ZW50L2Rpc3BhdGNoLWV2ZW50LmpzXCI6MTUsXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiOjE2LFwiLi9zZXJpYWxpemUuanNcIjoxOSxcImRvbS13YWxrXCI6MTh9XSwxMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgRE9NRWxlbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1lbGVtZW50LmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gRG9jdW1lbnRGcmFnbWVudFxuXG5mdW5jdGlvbiBEb2N1bWVudEZyYWdtZW50KG93bmVyKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRG9jdW1lbnRGcmFnbWVudCgpXG4gICAgfVxuXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW11cbiAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsXG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxufVxuXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS50eXBlID0gXCJEb2N1bWVudEZyYWdtZW50XCJcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLm5vZGVUeXBlID0gMTFcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLm5vZGVOYW1lID0gXCIjZG9jdW1lbnQtZnJhZ21lbnRcIlxuXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5hcHBlbmRDaGlsZCAgPSBET01FbGVtZW50LnByb3RvdHlwZS5hcHBlbmRDaGlsZFxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkID0gRE9NRWxlbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZCAgPSBET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZFxuXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS50b1N0cmluZyA9XG4gICAgZnVuY3Rpb24gX0RvY3VtZW50RnJhZ21lbnRfdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKG5vZGUpXG4gICAgICAgIH0pLmpvaW4oXCJcIilcbiAgICB9XG5cbn0se1wiLi9kb20tZWxlbWVudC5qc1wiOjEwfV0sMTI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBET01UZXh0XG5cbmZ1bmN0aW9uIERPTVRleHQodmFsdWUsIG93bmVyKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERPTVRleHQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRE9NVGV4dCh2YWx1ZSlcbiAgICB9XG5cbiAgICB0aGlzLmRhdGEgPSB2YWx1ZSB8fCBcIlwiXG4gICAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoXG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxufVxuXG5ET01UZXh0LnByb3RvdHlwZS50eXBlID0gXCJET01UZXh0Tm9kZVwiXG5ET01UZXh0LnByb3RvdHlwZS5ub2RlVHlwZSA9IDNcbkRPTVRleHQucHJvdG90eXBlLm5vZGVOYW1lID0gXCIjdGV4dFwiXG5cbkRPTVRleHQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gX1RleHRfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVxufVxuXG5ET01UZXh0LnByb3RvdHlwZS5yZXBsYWNlRGF0YSA9IGZ1bmN0aW9uIHJlcGxhY2VEYXRhKGluZGV4LCBsZW5ndGgsIHZhbHVlKSB7XG4gICAgdmFyIGN1cnJlbnQgPSB0aGlzLmRhdGFcbiAgICB2YXIgbGVmdCA9IGN1cnJlbnQuc3Vic3RyaW5nKDAsIGluZGV4KVxuICAgIHZhciByaWdodCA9IGN1cnJlbnQuc3Vic3RyaW5nKGluZGV4ICsgbGVuZ3RoLCBjdXJyZW50Lmxlbmd0aClcbiAgICB0aGlzLmRhdGEgPSBsZWZ0ICsgdmFsdWUgKyByaWdodFxuICAgIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aFxufVxuXG59LHt9XSwxMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50XG5cbmZ1bmN0aW9uIEV2ZW50KGZhbWlseSkge31cblxuRXZlbnQucHJvdG90eXBlLmluaXRFdmVudCA9IGZ1bmN0aW9uIF9FdmVudF9pbml0RXZlbnQodHlwZSwgYnViYmxlcywgY2FuY2VsYWJsZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGVcbiAgICB0aGlzLmJ1YmJsZXMgPSBidWJibGVzXG4gICAgdGhpcy5jYW5jZWxhYmxlID0gY2FuY2VsYWJsZVxufVxuXG5FdmVudC5wcm90b3R5cGUucHJldmVudERlZmF1bHQgPSBmdW5jdGlvbiBfRXZlbnRfcHJldmVudERlZmF1bHQoKSB7XG4gICAgXG59XG5cbn0se31dLDE0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gYWRkRXZlbnRMaXN0ZW5lclxuXG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgdmFyIGVsZW0gPSB0aGlzXG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzKSB7XG4gICAgICAgIGVsZW0ubGlzdGVuZXJzID0ge31cbiAgICB9XG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzW3R5cGVdKSB7XG4gICAgICAgIGVsZW0ubGlzdGVuZXJzW3R5cGVdID0gW11cbiAgICB9XG5cbiAgICBpZiAoZWxlbS5saXN0ZW5lcnNbdHlwZV0uaW5kZXhPZihsaXN0ZW5lcikgPT09IC0xKSB7XG4gICAgICAgIGVsZW0ubGlzdGVuZXJzW3R5cGVdLnB1c2gobGlzdGVuZXIpXG4gICAgfVxufVxuXG59LHt9XSwxNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGRpc3BhdGNoRXZlbnRcblxuZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChldikge1xuICAgIHZhciBlbGVtID0gdGhpc1xuICAgIHZhciB0eXBlID0gZXYudHlwZVxuXG4gICAgaWYgKCFldi50YXJnZXQpIHtcbiAgICAgICAgZXYudGFyZ2V0ID0gZWxlbVxuICAgIH1cblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnMpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnMgPSB7fVxuICAgIH1cblxuICAgIHZhciBsaXN0ZW5lcnMgPSBlbGVtLmxpc3RlbmVyc1t0eXBlXVxuXG4gICAgaWYgKGxpc3RlbmVycykge1xuICAgICAgICByZXR1cm4gbGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24gKGxpc3RlbmVyKSB7XG4gICAgICAgICAgICBldi5jdXJyZW50VGFyZ2V0ID0gZWxlbVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyKGV2KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsaXN0ZW5lci5oYW5kbGVFdmVudChldilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoZWxlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgIGVsZW0ucGFyZW50Tm9kZS5kaXNwYXRjaEV2ZW50KGV2KVxuICAgIH1cbn1cblxufSx7fV0sMTY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSByZW1vdmVFdmVudExpc3RlbmVyXG5cbmZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICB2YXIgZWxlbSA9IHRoaXNcblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnMpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVyc1t0eXBlXSkge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgbGlzdCA9IGVsZW0ubGlzdGVuZXJzW3R5cGVdXG4gICAgdmFyIGluZGV4ID0gbGlzdC5pbmRleE9mKGxpc3RlbmVyKVxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgbGlzdC5zcGxpY2UoaW5kZXgsIDEpXG4gICAgfVxufVxuXG59LHt9XSwxNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgRG9jdW1lbnQgPSByZXF1aXJlKCcuL2RvY3VtZW50LmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IERvY3VtZW50KCk7XG5cbn0se1wiLi9kb2N1bWVudC5qc1wiOjh9XSwxODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2VcblxubW9kdWxlLmV4cG9ydHMgPSBpdGVyYXRpdmVseVdhbGtcblxuZnVuY3Rpb24gaXRlcmF0aXZlbHlXYWxrKG5vZGVzLCBjYikge1xuICAgIGlmICghKCdsZW5ndGgnIGluIG5vZGVzKSkge1xuICAgICAgICBub2RlcyA9IFtub2Rlc11cbiAgICB9XG4gICAgXG4gICAgbm9kZXMgPSBzbGljZS5jYWxsKG5vZGVzKVxuXG4gICAgd2hpbGUobm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBub2RlID0gbm9kZXMuc2hpZnQoKSxcbiAgICAgICAgICAgIHJldCA9IGNiKG5vZGUpXG5cbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgICAgcmV0dXJuIHJldFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vZGUuY2hpbGROb2RlcyAmJiBub2RlLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBub2RlcyA9IHNsaWNlLmNhbGwobm9kZS5jaGlsZE5vZGVzKS5jb25jYXQobm9kZXMpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbn0se31dLDE5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gc2VyaWFsaXplTm9kZVxuXG52YXIgdm9pZEVsZW1lbnRzID0gL2FyZWF8YmFzZXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGtleWdlbnxsaW5rfG1lbnVpdGVtfG1ldGF8cGFyYW18c291cmNlfHRyYWNrfHdici9pO1xuXG5mdW5jdGlvbiBzZXJpYWxpemVOb2RlKG5vZGUpIHtcbiAgICBzd2l0Y2ggKG5vZGUubm9kZVR5cGUpIHtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIGVzY2FwZVRleHQobm9kZS5kYXRhKVxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gXCI8IS0tXCIgKyBub2RlLmRhdGEgKyBcIi0tPlwiXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplRWxlbWVudChub2RlKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplRWxlbWVudChlbGVtKSB7XG4gICAgdmFyIHN0cmluZ3MgPSBbXVxuXG4gICAgdmFyIHRhZ25hbWUgPSBlbGVtLnRhZ05hbWVcblxuICAgIGlmIChlbGVtLm5hbWVzcGFjZVVSSSA9PT0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIpIHtcbiAgICAgICAgdGFnbmFtZSA9IHRhZ25hbWUudG9Mb3dlckNhc2UoKVxuICAgIH1cblxuICAgIHN0cmluZ3MucHVzaChcIjxcIiArIHRhZ25hbWUgKyBwcm9wZXJ0aWVzKGVsZW0pICsgZGF0YXNldGlmeShlbGVtKSlcblxuICAgIGlmICh2b2lkRWxlbWVudHMudGVzdCh0YWduYW1lKSkge1xuICAgICAgICBzdHJpbmdzLnB1c2goXCIgLz5cIilcbiAgICB9IGVsc2Uge1xuICAgICAgICBzdHJpbmdzLnB1c2goXCI+XCIpXG5cbiAgICAgICAgaWYgKGVsZW0uY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHN0cmluZ3MucHVzaC5hcHBseShzdHJpbmdzLCBlbGVtLmNoaWxkTm9kZXMubWFwKHNlcmlhbGl6ZU5vZGUpKVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW0udGV4dENvbnRlbnQgfHwgZWxlbS5pbm5lclRleHQpIHtcbiAgICAgICAgICAgIHN0cmluZ3MucHVzaChlc2NhcGVUZXh0KGVsZW0udGV4dENvbnRlbnQgfHwgZWxlbS5pbm5lclRleHQpKVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW0uaW5uZXJIVE1MKSB7XG4gICAgICAgICAgICBzdHJpbmdzLnB1c2goZWxlbS5pbm5lckhUTUwpXG4gICAgICAgIH1cblxuICAgICAgICBzdHJpbmdzLnB1c2goXCI8L1wiICsgdGFnbmFtZSArIFwiPlwiKVxuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmdzLmpvaW4oXCJcIilcbn1cblxuZnVuY3Rpb24gaXNQcm9wZXJ0eShlbGVtLCBrZXkpIHtcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiBlbGVtW2tleV1cblxuICAgIGlmIChrZXkgPT09IFwic3R5bGVcIiAmJiBPYmplY3Qua2V5cyhlbGVtLnN0eWxlKS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBlbGVtLmhhc093blByb3BlcnR5KGtleSkgJiZcbiAgICAgICAgKHR5cGUgPT09IFwic3RyaW5nXCIgfHwgdHlwZSA9PT0gXCJib29sZWFuXCIgfHwgdHlwZSA9PT0gXCJudW1iZXJcIikgJiZcbiAgICAgICAga2V5ICE9PSBcIm5vZGVOYW1lXCIgJiYga2V5ICE9PSBcImNsYXNzTmFtZVwiICYmIGtleSAhPT0gXCJ0YWdOYW1lXCIgJiZcbiAgICAgICAga2V5ICE9PSBcInRleHRDb250ZW50XCIgJiYga2V5ICE9PSBcImlubmVyVGV4dFwiICYmIGtleSAhPT0gXCJuYW1lc3BhY2VVUklcIiAmJiAga2V5ICE9PSBcImlubmVySFRNTFwiXG59XG5cbmZ1bmN0aW9uIHN0eWxpZnkoc3R5bGVzKSB7XG4gICAgaWYgKHR5cGVvZiBzdHlsZXMgPT09ICdzdHJpbmcnKSByZXR1cm4gc3R5bGVzXG4gICAgdmFyIGF0dHIgPSBcIlwiXG4gICAgT2JqZWN0LmtleXMoc3R5bGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gc3R5bGVzW2tleV1cbiAgICAgICAga2V5ID0ga2V5LnJlcGxhY2UoL1tBLVpdL2csIGZ1bmN0aW9uKGMpIHtcbiAgICAgICAgICAgIHJldHVybiBcIi1cIiArIGMudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfSlcbiAgICAgICAgYXR0ciArPSBrZXkgKyBcIjpcIiArIHZhbHVlICsgXCI7XCJcbiAgICB9KVxuICAgIHJldHVybiBhdHRyXG59XG5cbmZ1bmN0aW9uIGRhdGFzZXRpZnkoZWxlbSkge1xuICAgIHZhciBkcyA9IGVsZW0uZGF0YXNldFxuICAgIHZhciBwcm9wcyA9IFtdXG5cbiAgICBmb3IgKHZhciBrZXkgaW4gZHMpIHtcbiAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IFwiZGF0YS1cIiArIGtleSwgdmFsdWU6IGRzW2tleV0gfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHMubGVuZ3RoID8gc3RyaW5naWZ5KHByb3BzKSA6IFwiXCJcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5KGxpc3QpIHtcbiAgICB2YXIgYXR0cmlidXRlcyA9IFtdXG4gICAgbGlzdC5mb3JFYWNoKGZ1bmN0aW9uICh0dXBsZSkge1xuICAgICAgICB2YXIgbmFtZSA9IHR1cGxlLm5hbWVcbiAgICAgICAgdmFyIHZhbHVlID0gdHVwbGUudmFsdWVcblxuICAgICAgICBpZiAobmFtZSA9PT0gXCJzdHlsZVwiKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHN0eWxpZnkodmFsdWUpXG4gICAgICAgIH1cblxuICAgICAgICBhdHRyaWJ1dGVzLnB1c2gobmFtZSArIFwiPVwiICsgXCJcXFwiXCIgKyBlc2NhcGVBdHRyaWJ1dGVWYWx1ZSh2YWx1ZSkgKyBcIlxcXCJcIilcbiAgICB9KVxuXG4gICAgcmV0dXJuIGF0dHJpYnV0ZXMubGVuZ3RoID8gXCIgXCIgKyBhdHRyaWJ1dGVzLmpvaW4oXCIgXCIpIDogXCJcIlxufVxuXG5mdW5jdGlvbiBwcm9wZXJ0aWVzKGVsZW0pIHtcbiAgICB2YXIgcHJvcHMgPSBbXVxuICAgIGZvciAodmFyIGtleSBpbiBlbGVtKSB7XG4gICAgICAgIGlmIChpc1Byb3BlcnR5KGVsZW0sIGtleSkpIHtcbiAgICAgICAgICAgIHByb3BzLnB1c2goeyBuYW1lOiBrZXksIHZhbHVlOiBlbGVtW2tleV0gfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIG5zIGluIGVsZW0uX2F0dHJpYnV0ZXMpIHtcbiAgICAgIGZvciAodmFyIGF0dHJpYnV0ZSBpbiBlbGVtLl9hdHRyaWJ1dGVzW25zXSkge1xuICAgICAgICB2YXIgcHJvcCA9IGVsZW0uX2F0dHJpYnV0ZXNbbnNdW2F0dHJpYnV0ZV1cbiAgICAgICAgdmFyIG5hbWUgPSAocHJvcC5wcmVmaXggPyBwcm9wLnByZWZpeCArIFwiOlwiIDogXCJcIikgKyBhdHRyaWJ1dGVcbiAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IG5hbWUsIHZhbHVlOiBwcm9wLnZhbHVlIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVsZW0uY2xhc3NOYW1lKSB7XG4gICAgICAgIHByb3BzLnB1c2goeyBuYW1lOiBcImNsYXNzXCIsIHZhbHVlOiBlbGVtLmNsYXNzTmFtZSB9KVxuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5sZW5ndGggPyBzdHJpbmdpZnkocHJvcHMpIDogXCJcIlxufVxuXG5mdW5jdGlvbiBlc2NhcGVUZXh0KHMpIHtcbiAgICB2YXIgc3RyID0gJyc7XG5cbiAgICBpZiAodHlwZW9mKHMpID09PSAnc3RyaW5nJykgeyBcbiAgICAgICAgc3RyID0gczsgXG4gICAgfSBlbHNlIGlmIChzKSB7XG4gICAgICAgIHN0ciA9IHMudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyXG4gICAgICAgIC5yZXBsYWNlKC8mL2csIFwiJmFtcDtcIilcbiAgICAgICAgLnJlcGxhY2UoLzwvZywgXCImbHQ7XCIpXG4gICAgICAgIC5yZXBsYWNlKC8+L2csIFwiJmd0O1wiKVxufVxuXG5mdW5jdGlvbiBlc2NhcGVBdHRyaWJ1dGVWYWx1ZShzdHIpIHtcbiAgICByZXR1cm4gZXNjYXBlVGV4dChzdHIpLnJlcGxhY2UoL1wiL2csIFwiJnF1b3Q7XCIpXG59XG5cbn0se31dLDIwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzT2JqZWN0KHgpIHtcblx0cmV0dXJuIHR5cGVvZiB4ID09PSBcIm9iamVjdFwiICYmIHggIT09IG51bGw7XG59O1xuXG59LHt9XSwyMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgbmF0aXZlSXNBcnJheSA9IEFycmF5LmlzQXJyYXlcbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVJc0FycmF5IHx8IGlzQXJyYXlcblxuZnVuY3Rpb24gaXNBcnJheShvYmopIHtcbiAgICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09PSBcIltvYmplY3QgQXJyYXldXCJcbn1cblxufSx7fV0sMjI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHBhdGNoID0gcmVxdWlyZShcIi4vdmRvbS9wYXRjaC5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGNoXG5cbn0se1wiLi92ZG9tL3BhdGNoLmpzXCI6Mjd9XSwyMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKFwiaXMtb2JqZWN0XCIpXG52YXIgaXNIb29rID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZob29rLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gYXBwbHlQcm9wZXJ0aWVzXG5cbmZ1bmN0aW9uIGFwcGx5UHJvcGVydGllcyhub2RlLCBwcm9wcywgcHJldmlvdXMpIHtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wcykge1xuICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdXG5cbiAgICAgICAgaWYgKHByb3BWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZW1vdmVQcm9wZXJ0eShub2RlLCBwcm9wTmFtZSwgcHJvcFZhbHVlLCBwcmV2aW91cyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNIb29rKHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKVxuICAgICAgICAgICAgaWYgKHByb3BWYWx1ZS5ob29rKSB7XG4gICAgICAgICAgICAgICAgcHJvcFZhbHVlLmhvb2sobm9kZSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcE5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzID8gcHJldmlvdXNbcHJvcE5hbWVdIDogdW5kZWZpbmVkKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBwYXRjaE9iamVjdChub2RlLCBwcm9wcywgcHJldmlvdXMsIHByb3BOYW1lLCBwcm9wVmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IHByb3BWYWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVQcm9wZXJ0eShub2RlLCBwcm9wTmFtZSwgcHJvcFZhbHVlLCBwcmV2aW91cykge1xuICAgIGlmIChwcmV2aW91cykge1xuICAgICAgICB2YXIgcHJldmlvdXNWYWx1ZSA9IHByZXZpb3VzW3Byb3BOYW1lXVxuXG4gICAgICAgIGlmICghaXNIb29rKHByZXZpb3VzVmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAocHJvcE5hbWUgPT09IFwiYXR0cmlidXRlc1wiKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgYXR0ck5hbWUgaW4gcHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BOYW1lID09PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5zdHlsZVtpXSA9IFwiXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcmV2aW91c1ZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBcIlwiXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHByZXZpb3VzVmFsdWUudW5ob29rKSB7XG4gICAgICAgICAgICBwcmV2aW91c1ZhbHVlLnVuaG9vayhub2RlLCBwcm9wTmFtZSwgcHJvcFZhbHVlKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBwYXRjaE9iamVjdChub2RlLCBwcm9wcywgcHJldmlvdXMsIHByb3BOYW1lLCBwcm9wVmFsdWUpIHtcbiAgICB2YXIgcHJldmlvdXNWYWx1ZSA9IHByZXZpb3VzID8gcHJldmlvdXNbcHJvcE5hbWVdIDogdW5kZWZpbmVkXG5cbiAgICAvLyBTZXQgYXR0cmlidXRlc1xuICAgIGlmIChwcm9wTmFtZSA9PT0gXCJhdHRyaWJ1dGVzXCIpIHtcbiAgICAgICAgZm9yICh2YXIgYXR0ck5hbWUgaW4gcHJvcFZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgYXR0clZhbHVlID0gcHJvcFZhbHVlW2F0dHJOYW1lXVxuXG4gICAgICAgICAgICBpZiAoYXR0clZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIGF0dHJWYWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmKHByZXZpb3VzVmFsdWUgJiYgaXNPYmplY3QocHJldmlvdXNWYWx1ZSkgJiZcbiAgICAgICAgZ2V0UHJvdG90eXBlKHByZXZpb3VzVmFsdWUpICE9PSBnZXRQcm90b3R5cGUocHJvcFZhbHVlKSkge1xuICAgICAgICBub2RlW3Byb3BOYW1lXSA9IHByb3BWYWx1ZVxuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIWlzT2JqZWN0KG5vZGVbcHJvcE5hbWVdKSkge1xuICAgICAgICBub2RlW3Byb3BOYW1lXSA9IHt9XG4gICAgfVxuXG4gICAgdmFyIHJlcGxhY2VyID0gcHJvcE5hbWUgPT09IFwic3R5bGVcIiA/IFwiXCIgOiB1bmRlZmluZWRcblxuICAgIGZvciAodmFyIGsgaW4gcHJvcFZhbHVlKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHByb3BWYWx1ZVtrXVxuICAgICAgICBub2RlW3Byb3BOYW1lXVtrXSA9ICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IHJlcGxhY2VyIDogdmFsdWVcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldFByb3RvdHlwZSh2YWx1ZSkge1xuICAgIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSlcbiAgICB9IGVsc2UgaWYgKHZhbHVlLl9fcHJvdG9fXykge1xuICAgICAgICByZXR1cm4gdmFsdWUuX19wcm90b19fXG4gICAgfSBlbHNlIGlmICh2YWx1ZS5jb25zdHJ1Y3Rvcikge1xuICAgICAgICByZXR1cm4gdmFsdWUuY29uc3RydWN0b3IucHJvdG90eXBlXG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXZob29rLmpzXCI6MzgsXCJpcy1vYmplY3RcIjoyMH1dLDI0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoXCJnbG9iYWwvZG9jdW1lbnRcIilcblxudmFyIGFwcGx5UHJvcGVydGllcyA9IHJlcXVpcmUoXCIuL2FwcGx5LXByb3BlcnRpZXNcIilcblxudmFyIGlzVk5vZGUgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdm5vZGUuanNcIilcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZ0ZXh0LmpzXCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCIpXG52YXIgaGFuZGxlVGh1bmsgPSByZXF1aXJlKFwiLi4vdm5vZGUvaGFuZGxlLXRodW5rLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlRWxlbWVudFxuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50KHZub2RlLCBvcHRzKSB7XG4gICAgdmFyIGRvYyA9IG9wdHMgPyBvcHRzLmRvY3VtZW50IHx8IGRvY3VtZW50IDogZG9jdW1lbnRcbiAgICB2YXIgd2FybiA9IG9wdHMgPyBvcHRzLndhcm4gOiBudWxsXG5cbiAgICB2bm9kZSA9IGhhbmRsZVRodW5rKHZub2RlKS5hXG5cbiAgICBpZiAoaXNXaWRnZXQodm5vZGUpKSB7XG4gICAgICAgIHJldHVybiB2bm9kZS5pbml0KClcbiAgICB9IGVsc2UgaWYgKGlzVlRleHQodm5vZGUpKSB7XG4gICAgICAgIHJldHVybiBkb2MuY3JlYXRlVGV4dE5vZGUodm5vZGUudGV4dClcbiAgICB9IGVsc2UgaWYgKCFpc1ZOb2RlKHZub2RlKSkge1xuICAgICAgICBpZiAod2Fybikge1xuICAgICAgICAgICAgd2FybihcIkl0ZW0gaXMgbm90IGEgdmFsaWQgdmlydHVhbCBkb20gbm9kZVwiLCB2bm9kZSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHZhciBub2RlID0gKHZub2RlLm5hbWVzcGFjZSA9PT0gbnVsbCkgP1xuICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCh2bm9kZS50YWdOYW1lKSA6XG4gICAgICAgIGRvYy5jcmVhdGVFbGVtZW50TlModm5vZGUubmFtZXNwYWNlLCB2bm9kZS50YWdOYW1lKVxuXG4gICAgdmFyIHByb3BzID0gdm5vZGUucHJvcGVydGllc1xuICAgIGFwcGx5UHJvcGVydGllcyhub2RlLCBwcm9wcylcblxuICAgIHZhciBjaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZE5vZGUgPSBjcmVhdGVFbGVtZW50KGNoaWxkcmVuW2ldLCBvcHRzKVxuICAgICAgICBpZiAoY2hpbGROb2RlKSB7XG4gICAgICAgICAgICBub2RlLmFwcGVuZENoaWxkKGNoaWxkTm9kZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub2RlXG59XG5cbn0se1wiLi4vdm5vZGUvaGFuZGxlLXRodW5rLmpzXCI6MzYsXCIuLi92bm9kZS9pcy12bm9kZS5qc1wiOjM5LFwiLi4vdm5vZGUvaXMtdnRleHQuanNcIjo0MCxcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiOjQxLFwiLi9hcHBseS1wcm9wZXJ0aWVzXCI6MjMsXCJnbG9iYWwvZG9jdW1lbnRcIjo3fV0sMjU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuLy8gTWFwcyBhIHZpcnR1YWwgRE9NIHRyZWUgb250byBhIHJlYWwgRE9NIHRyZWUgaW4gYW4gZWZmaWNpZW50IG1hbm5lci5cbi8vIFdlIGRvbid0IHdhbnQgdG8gcmVhZCBhbGwgb2YgdGhlIERPTSBub2RlcyBpbiB0aGUgdHJlZSBzbyB3ZSB1c2Vcbi8vIHRoZSBpbi1vcmRlciB0cmVlIGluZGV4aW5nIHRvIGVsaW1pbmF0ZSByZWN1cnNpb24gZG93biBjZXJ0YWluIGJyYW5jaGVzLlxuLy8gV2Ugb25seSByZWN1cnNlIGludG8gYSBET00gbm9kZSBpZiB3ZSBrbm93IHRoYXQgaXQgY29udGFpbnMgYSBjaGlsZCBvZlxuLy8gaW50ZXJlc3QuXG5cbnZhciBub0NoaWxkID0ge31cblxubW9kdWxlLmV4cG9ydHMgPSBkb21JbmRleFxuXG5mdW5jdGlvbiBkb21JbmRleChyb290Tm9kZSwgdHJlZSwgaW5kaWNlcywgbm9kZXMpIHtcbiAgICBpZiAoIWluZGljZXMgfHwgaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHt9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaW5kaWNlcy5zb3J0KGFzY2VuZGluZylcbiAgICAgICAgcmV0dXJuIHJlY3Vyc2Uocm9vdE5vZGUsIHRyZWUsIGluZGljZXMsIG5vZGVzLCAwKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVjdXJzZShyb290Tm9kZSwgdHJlZSwgaW5kaWNlcywgbm9kZXMsIHJvb3RJbmRleCkge1xuICAgIG5vZGVzID0gbm9kZXMgfHwge31cblxuXG4gICAgaWYgKHJvb3ROb2RlKSB7XG4gICAgICAgIGlmIChpbmRleEluUmFuZ2UoaW5kaWNlcywgcm9vdEluZGV4LCByb290SW5kZXgpKSB7XG4gICAgICAgICAgICBub2Rlc1tyb290SW5kZXhdID0gcm9vdE5vZGVcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB2Q2hpbGRyZW4gPSB0cmVlLmNoaWxkcmVuXG5cbiAgICAgICAgaWYgKHZDaGlsZHJlbikge1xuXG4gICAgICAgICAgICB2YXIgY2hpbGROb2RlcyA9IHJvb3ROb2RlLmNoaWxkTm9kZXNcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmVlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcm9vdEluZGV4ICs9IDFcblxuICAgICAgICAgICAgICAgIHZhciB2Q2hpbGQgPSB2Q2hpbGRyZW5baV0gfHwgbm9DaGlsZFxuICAgICAgICAgICAgICAgIHZhciBuZXh0SW5kZXggPSByb290SW5kZXggKyAodkNoaWxkLmNvdW50IHx8IDApXG5cbiAgICAgICAgICAgICAgICAvLyBza2lwIHJlY3Vyc2lvbiBkb3duIHRoZSB0cmVlIGlmIHRoZXJlIGFyZSBubyBub2RlcyBkb3duIGhlcmVcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXhJblJhbmdlKGluZGljZXMsIHJvb3RJbmRleCwgbmV4dEluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICByZWN1cnNlKGNoaWxkTm9kZXNbaV0sIHZDaGlsZCwgaW5kaWNlcywgbm9kZXMsIHJvb3RJbmRleClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByb290SW5kZXggPSBuZXh0SW5kZXhcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub2Rlc1xufVxuXG4vLyBCaW5hcnkgc2VhcmNoIGZvciBhbiBpbmRleCBpbiB0aGUgaW50ZXJ2YWwgW2xlZnQsIHJpZ2h0XVxuZnVuY3Rpb24gaW5kZXhJblJhbmdlKGluZGljZXMsIGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGluZGljZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHZhciBtaW5JbmRleCA9IDBcbiAgICB2YXIgbWF4SW5kZXggPSBpbmRpY2VzLmxlbmd0aCAtIDFcbiAgICB2YXIgY3VycmVudEluZGV4XG4gICAgdmFyIGN1cnJlbnRJdGVtXG5cbiAgICB3aGlsZSAobWluSW5kZXggPD0gbWF4SW5kZXgpIHtcbiAgICAgICAgY3VycmVudEluZGV4ID0gKChtYXhJbmRleCArIG1pbkluZGV4KSAvIDIpID4+IDBcbiAgICAgICAgY3VycmVudEl0ZW0gPSBpbmRpY2VzW2N1cnJlbnRJbmRleF1cblxuICAgICAgICBpZiAobWluSW5kZXggPT09IG1heEluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudEl0ZW0gPj0gbGVmdCAmJiBjdXJyZW50SXRlbSA8PSByaWdodFxuICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRJdGVtIDwgbGVmdCkge1xuICAgICAgICAgICAgbWluSW5kZXggPSBjdXJyZW50SW5kZXggKyAxXG4gICAgICAgIH0gZWxzZSAgaWYgKGN1cnJlbnRJdGVtID4gcmlnaHQpIHtcbiAgICAgICAgICAgIG1heEluZGV4ID0gY3VycmVudEluZGV4IC0gMVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gYXNjZW5kaW5nKGEsIGIpIHtcbiAgICByZXR1cm4gYSA+IGIgPyAxIDogLTFcbn1cblxufSx7fV0sMjY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGFwcGx5UHJvcGVydGllcyA9IHJlcXVpcmUoXCIuL2FwcGx5LXByb3BlcnRpZXNcIilcblxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiKVxudmFyIFZQYXRjaCA9IHJlcXVpcmUoXCIuLi92bm9kZS92cGF0Y2guanNcIilcblxudmFyIHVwZGF0ZVdpZGdldCA9IHJlcXVpcmUoXCIuL3VwZGF0ZS13aWRnZXRcIilcblxubW9kdWxlLmV4cG9ydHMgPSBhcHBseVBhdGNoXG5cbmZ1bmN0aW9uIGFwcGx5UGF0Y2godnBhdGNoLCBkb21Ob2RlLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHR5cGUgPSB2cGF0Y2gudHlwZVxuICAgIHZhciB2Tm9kZSA9IHZwYXRjaC52Tm9kZVxuICAgIHZhciBwYXRjaCA9IHZwYXRjaC5wYXRjaFxuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgVlBhdGNoLlJFTU9WRTpcbiAgICAgICAgICAgIHJldHVybiByZW1vdmVOb2RlKGRvbU5vZGUsIHZOb2RlKVxuICAgICAgICBjYXNlIFZQYXRjaC5JTlNFUlQ6XG4gICAgICAgICAgICByZXR1cm4gaW5zZXJ0Tm9kZShkb21Ob2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucylcbiAgICAgICAgY2FzZSBWUGF0Y2guVlRFWFQ6XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nUGF0Y2goZG9tTm9kZSwgdk5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5XSURHRVQ6XG4gICAgICAgICAgICByZXR1cm4gd2lkZ2V0UGF0Y2goZG9tTm9kZSwgdk5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5WTk9ERTpcbiAgICAgICAgICAgIHJldHVybiB2Tm9kZVBhdGNoKGRvbU5vZGUsIHZOb2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucylcbiAgICAgICAgY2FzZSBWUGF0Y2guT1JERVI6XG4gICAgICAgICAgICByZW9yZGVyQ2hpbGRyZW4oZG9tTm9kZSwgcGF0Y2gpXG4gICAgICAgICAgICByZXR1cm4gZG9tTm9kZVxuICAgICAgICBjYXNlIFZQYXRjaC5QUk9QUzpcbiAgICAgICAgICAgIGFwcGx5UHJvcGVydGllcyhkb21Ob2RlLCBwYXRjaCwgdk5vZGUucHJvcGVydGllcylcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgICAgIGNhc2UgVlBhdGNoLlRIVU5LOlxuICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VSb290KGRvbU5vZGUsXG4gICAgICAgICAgICAgICAgcmVuZGVyT3B0aW9ucy5wYXRjaChkb21Ob2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucykpXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZG9tTm9kZVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlTm9kZShkb21Ob2RlLCB2Tm9kZSkge1xuICAgIHZhciBwYXJlbnROb2RlID0gZG9tTm9kZS5wYXJlbnROb2RlXG5cbiAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRvbU5vZGUpXG4gICAgfVxuXG4gICAgZGVzdHJveVdpZGdldChkb21Ob2RlLCB2Tm9kZSk7XG5cbiAgICByZXR1cm4gbnVsbFxufVxuXG5mdW5jdGlvbiBpbnNlcnROb2RlKHBhcmVudE5vZGUsIHZOb2RlLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIG5ld05vZGUgPSByZW5kZXJPcHRpb25zLnJlbmRlcih2Tm9kZSwgcmVuZGVyT3B0aW9ucylcblxuICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQobmV3Tm9kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyZW50Tm9kZVxufVxuXG5mdW5jdGlvbiBzdHJpbmdQYXRjaChkb21Ob2RlLCBsZWZ0Vk5vZGUsIHZUZXh0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIG5ld05vZGVcblxuICAgIGlmIChkb21Ob2RlLm5vZGVUeXBlID09PSAzKSB7XG4gICAgICAgIGRvbU5vZGUucmVwbGFjZURhdGEoMCwgZG9tTm9kZS5sZW5ndGgsIHZUZXh0LnRleHQpXG4gICAgICAgIG5ld05vZGUgPSBkb21Ob2RlXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcbiAgICAgICAgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZUZXh0LCByZW5kZXJPcHRpb25zKVxuXG4gICAgICAgIGlmIChwYXJlbnROb2RlICYmIG5ld05vZGUgIT09IGRvbU5vZGUpIHtcbiAgICAgICAgICAgIHBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld05vZGUsIGRvbU5vZGUpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Tm9kZVxufVxuXG5mdW5jdGlvbiB3aWRnZXRQYXRjaChkb21Ob2RlLCBsZWZ0Vk5vZGUsIHdpZGdldCwgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciB1cGRhdGluZyA9IHVwZGF0ZVdpZGdldChsZWZ0Vk5vZGUsIHdpZGdldClcbiAgICB2YXIgbmV3Tm9kZVxuXG4gICAgaWYgKHVwZGF0aW5nKSB7XG4gICAgICAgIG5ld05vZGUgPSB3aWRnZXQudXBkYXRlKGxlZnRWTm9kZSwgZG9tTm9kZSkgfHwgZG9tTm9kZVxuICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld05vZGUgPSByZW5kZXJPcHRpb25zLnJlbmRlcih3aWRnZXQsIHJlbmRlck9wdGlvbnMpXG4gICAgfVxuXG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcblxuICAgIGlmIChwYXJlbnROb2RlICYmIG5ld05vZGUgIT09IGRvbU5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgZG9tTm9kZSlcbiAgICB9XG5cbiAgICBpZiAoIXVwZGF0aW5nKSB7XG4gICAgICAgIGRlc3Ryb3lXaWRnZXQoZG9tTm9kZSwgbGVmdFZOb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIHZOb2RlUGF0Y2goZG9tTm9kZSwgbGVmdFZOb2RlLCB2Tm9kZSwgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciBwYXJlbnROb2RlID0gZG9tTm9kZS5wYXJlbnROb2RlXG4gICAgdmFyIG5ld05vZGUgPSByZW5kZXJPcHRpb25zLnJlbmRlcih2Tm9kZSwgcmVuZGVyT3B0aW9ucylcblxuICAgIGlmIChwYXJlbnROb2RlICYmIG5ld05vZGUgIT09IGRvbU5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgZG9tTm9kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Tm9kZVxufVxuXG5mdW5jdGlvbiBkZXN0cm95V2lkZ2V0KGRvbU5vZGUsIHcpIHtcbiAgICBpZiAodHlwZW9mIHcuZGVzdHJveSA9PT0gXCJmdW5jdGlvblwiICYmIGlzV2lkZ2V0KHcpKSB7XG4gICAgICAgIHcuZGVzdHJveShkb21Ob2RlKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVvcmRlckNoaWxkcmVuKGRvbU5vZGUsIG1vdmVzKSB7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBkb21Ob2RlLmNoaWxkTm9kZXNcbiAgICB2YXIga2V5TWFwID0ge31cbiAgICB2YXIgbm9kZVxuICAgIHZhciByZW1vdmVcbiAgICB2YXIgaW5zZXJ0XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1vdmVzLnJlbW92ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVtb3ZlID0gbW92ZXMucmVtb3Zlc1tpXVxuICAgICAgICBub2RlID0gY2hpbGROb2Rlc1tyZW1vdmUuZnJvbV1cbiAgICAgICAgaWYgKHJlbW92ZS5rZXkpIHtcbiAgICAgICAgICAgIGtleU1hcFtyZW1vdmUua2V5XSA9IG5vZGVcbiAgICAgICAgfVxuICAgICAgICBkb21Ob2RlLnJlbW92ZUNoaWxkKG5vZGUpXG4gICAgfVxuXG4gICAgdmFyIGxlbmd0aCA9IGNoaWxkTm9kZXMubGVuZ3RoXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBtb3Zlcy5pbnNlcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGluc2VydCA9IG1vdmVzLmluc2VydHNbal1cbiAgICAgICAgbm9kZSA9IGtleU1hcFtpbnNlcnQua2V5XVxuICAgICAgICAvLyB0aGlzIGlzIHRoZSB3ZWlyZGVzdCBidWcgaSd2ZSBldmVyIHNlZW4gaW4gd2Via2l0XG4gICAgICAgIGRvbU5vZGUuaW5zZXJ0QmVmb3JlKG5vZGUsIGluc2VydC50byA+PSBsZW5ndGgrKyA/IG51bGwgOiBjaGlsZE5vZGVzW2luc2VydC50b10pXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZXBsYWNlUm9vdChvbGRSb290LCBuZXdSb290KSB7XG4gICAgaWYgKG9sZFJvb3QgJiYgbmV3Um9vdCAmJiBvbGRSb290ICE9PSBuZXdSb290ICYmIG9sZFJvb3QucGFyZW50Tm9kZSkge1xuICAgICAgICBvbGRSb290LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld1Jvb3QsIG9sZFJvb3QpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld1Jvb3Q7XG59XG5cbn0se1wiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDEsXCIuLi92bm9kZS92cGF0Y2guanNcIjo0NCxcIi4vYXBwbHktcHJvcGVydGllc1wiOjIzLFwiLi91cGRhdGUtd2lkZ2V0XCI6Mjh9XSwyNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKFwiZ2xvYmFsL2RvY3VtZW50XCIpXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoXCJ4LWlzLWFycmF5XCIpXG5cbnZhciByZW5kZXIgPSByZXF1aXJlKFwiLi9jcmVhdGUtZWxlbWVudFwiKVxudmFyIGRvbUluZGV4ID0gcmVxdWlyZShcIi4vZG9tLWluZGV4XCIpXG52YXIgcGF0Y2hPcCA9IHJlcXVpcmUoXCIuL3BhdGNoLW9wXCIpXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGNoXG5cbmZ1bmN0aW9uIHBhdGNoKHJvb3ROb2RlLCBwYXRjaGVzLCByZW5kZXJPcHRpb25zKSB7XG4gICAgcmVuZGVyT3B0aW9ucyA9IHJlbmRlck9wdGlvbnMgfHwge31cbiAgICByZW5kZXJPcHRpb25zLnBhdGNoID0gcmVuZGVyT3B0aW9ucy5wYXRjaCAmJiByZW5kZXJPcHRpb25zLnBhdGNoICE9PSBwYXRjaFxuICAgICAgICA/IHJlbmRlck9wdGlvbnMucGF0Y2hcbiAgICAgICAgOiBwYXRjaFJlY3Vyc2l2ZVxuICAgIHJlbmRlck9wdGlvbnMucmVuZGVyID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIgfHwgcmVuZGVyXG5cbiAgICByZXR1cm4gcmVuZGVyT3B0aW9ucy5wYXRjaChyb290Tm9kZSwgcGF0Y2hlcywgcmVuZGVyT3B0aW9ucylcbn1cblxuZnVuY3Rpb24gcGF0Y2hSZWN1cnNpdmUocm9vdE5vZGUsIHBhdGNoZXMsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgaW5kaWNlcyA9IHBhdGNoSW5kaWNlcyhwYXRjaGVzKVxuXG4gICAgaWYgKGluZGljZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiByb290Tm9kZVxuICAgIH1cblxuICAgIHZhciBpbmRleCA9IGRvbUluZGV4KHJvb3ROb2RlLCBwYXRjaGVzLmEsIGluZGljZXMpXG4gICAgdmFyIG93bmVyRG9jdW1lbnQgPSByb290Tm9kZS5vd25lckRvY3VtZW50XG5cbiAgICBpZiAoIXJlbmRlck9wdGlvbnMuZG9jdW1lbnQgJiYgb3duZXJEb2N1bWVudCAhPT0gZG9jdW1lbnQpIHtcbiAgICAgICAgcmVuZGVyT3B0aW9ucy5kb2N1bWVudCA9IG93bmVyRG9jdW1lbnRcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5vZGVJbmRleCA9IGluZGljZXNbaV1cbiAgICAgICAgcm9vdE5vZGUgPSBhcHBseVBhdGNoKHJvb3ROb2RlLFxuICAgICAgICAgICAgaW5kZXhbbm9kZUluZGV4XSxcbiAgICAgICAgICAgIHBhdGNoZXNbbm9kZUluZGV4XSxcbiAgICAgICAgICAgIHJlbmRlck9wdGlvbnMpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJvb3ROb2RlXG59XG5cbmZ1bmN0aW9uIGFwcGx5UGF0Y2gocm9vdE5vZGUsIGRvbU5vZGUsIHBhdGNoTGlzdCwgcmVuZGVyT3B0aW9ucykge1xuICAgIGlmICghZG9tTm9kZSkge1xuICAgICAgICByZXR1cm4gcm9vdE5vZGVcbiAgICB9XG5cbiAgICB2YXIgbmV3Tm9kZVxuXG4gICAgaWYgKGlzQXJyYXkocGF0Y2hMaXN0KSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGNoTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbmV3Tm9kZSA9IHBhdGNoT3AocGF0Y2hMaXN0W2ldLCBkb21Ob2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgICAgICAgICBpZiAoZG9tTm9kZSA9PT0gcm9vdE5vZGUpIHtcbiAgICAgICAgICAgICAgICByb290Tm9kZSA9IG5ld05vZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld05vZGUgPSBwYXRjaE9wKHBhdGNoTGlzdCwgZG9tTm9kZSwgcmVuZGVyT3B0aW9ucylcblxuICAgICAgICBpZiAoZG9tTm9kZSA9PT0gcm9vdE5vZGUpIHtcbiAgICAgICAgICAgIHJvb3ROb2RlID0gbmV3Tm9kZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvb3ROb2RlXG59XG5cbmZ1bmN0aW9uIHBhdGNoSW5kaWNlcyhwYXRjaGVzKSB7XG4gICAgdmFyIGluZGljZXMgPSBbXVxuXG4gICAgZm9yICh2YXIga2V5IGluIHBhdGNoZXMpIHtcbiAgICAgICAgaWYgKGtleSAhPT0gXCJhXCIpIHtcbiAgICAgICAgICAgIGluZGljZXMucHVzaChOdW1iZXIoa2V5KSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpbmRpY2VzXG59XG5cbn0se1wiLi9jcmVhdGUtZWxlbWVudFwiOjI0LFwiLi9kb20taW5kZXhcIjoyNSxcIi4vcGF0Y2gtb3BcIjoyNixcImdsb2JhbC9kb2N1bWVudFwiOjcsXCJ4LWlzLWFycmF5XCI6MjF9XSwyODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gdXBkYXRlV2lkZ2V0XG5cbmZ1bmN0aW9uIHVwZGF0ZVdpZGdldChhLCBiKSB7XG4gICAgaWYgKGlzV2lkZ2V0KGEpICYmIGlzV2lkZ2V0KGIpKSB7XG4gICAgICAgIGlmIChcIm5hbWVcIiBpbiBhICYmIFwibmFtZVwiIGluIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBhLmlkID09PSBiLmlkXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYS5pbml0ID09PSBiLmluaXRcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiOjQxfV0sMjk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEF0dHJpYnV0ZUhvb2s7XG5cbmZ1bmN0aW9uIEF0dHJpYnV0ZUhvb2sobmFtZXNwYWNlLCB2YWx1ZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBBdHRyaWJ1dGVIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IEF0dHJpYnV0ZUhvb2sobmFtZXNwYWNlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xufVxuXG5BdHRyaWJ1dGVIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3AsIHByZXYpIHtcbiAgICBpZiAocHJldiAmJiBwcmV2LnR5cGUgPT09ICdBdHRyaWJ1dGVIb29rJyAmJlxuICAgICAgICBwcmV2LnZhbHVlID09PSB0aGlzLnZhbHVlICYmXG4gICAgICAgIHByZXYubmFtZXNwYWNlID09PSB0aGlzLm5hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbm9kZS5zZXRBdHRyaWJ1dGVOUyh0aGlzLm5hbWVzcGFjZSwgcHJvcCwgdGhpcy52YWx1ZSk7XG59O1xuXG5BdHRyaWJ1dGVIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcCwgbmV4dCkge1xuICAgIGlmIChuZXh0ICYmIG5leHQudHlwZSA9PT0gJ0F0dHJpYnV0ZUhvb2snICYmXG4gICAgICAgIG5leHQubmFtZXNwYWNlID09PSB0aGlzLm5hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGNvbG9uUG9zaXRpb24gPSBwcm9wLmluZGV4T2YoJzonKTtcbiAgICB2YXIgbG9jYWxOYW1lID0gY29sb25Qb3NpdGlvbiA+IC0xID8gcHJvcC5zdWJzdHIoY29sb25Qb3NpdGlvbiArIDEpIDogcHJvcDtcbiAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZU5TKHRoaXMubmFtZXNwYWNlLCBsb2NhbE5hbWUpO1xufTtcblxuQXR0cmlidXRlSG9vay5wcm90b3R5cGUudHlwZSA9ICdBdHRyaWJ1dGVIb29rJztcblxufSx7fV0sMzA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZTdG9yZSA9IHJlcXVpcmUoJ2V2LXN0b3JlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gRXZIb29rO1xuXG5mdW5jdGlvbiBFdkhvb2sodmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRXZIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IEV2SG9vayh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xufVxuXG5Fdkhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgdmFyIGVzID0gRXZTdG9yZShub2RlKTtcbiAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eU5hbWUuc3Vic3RyKDMpO1xuXG4gICAgZXNbcHJvcE5hbWVdID0gdGhpcy52YWx1ZTtcbn07XG5cbkV2SG9vay5wcm90b3R5cGUudW5ob29rID0gZnVuY3Rpb24obm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgdmFyIGVzID0gRXZTdG9yZShub2RlKTtcbiAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eU5hbWUuc3Vic3RyKDMpO1xuXG4gICAgZXNbcHJvcE5hbWVdID0gdW5kZWZpbmVkO1xufTtcblxufSx7XCJldi1zdG9yZVwiOjR9XSwzMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gU29mdFNldEhvb2s7XG5cbmZ1bmN0aW9uIFNvZnRTZXRIb29rKHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNvZnRTZXRIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IFNvZnRTZXRIb29rKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cblNvZnRTZXRIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BlcnR5TmFtZSkge1xuICAgIGlmIChub2RlW3Byb3BlcnR5TmFtZV0gIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgbm9kZVtwcm9wZXJ0eU5hbWVdID0gdGhpcy52YWx1ZTtcbiAgICB9XG59O1xuXG59LHt9XSwzMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBpc0FycmF5ID0gcmVxdWlyZSgneC1pcy1hcnJheScpO1xuXG52YXIgVk5vZGUgPSByZXF1aXJlKCcuLi92bm9kZS92bm9kZS5qcycpO1xudmFyIFZUZXh0ID0gcmVxdWlyZSgnLi4vdm5vZGUvdnRleHQuanMnKTtcbnZhciBpc1ZOb2RlID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdm5vZGUnKTtcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdnRleHQnKTtcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXdpZGdldCcpO1xudmFyIGlzSG9vayA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXZob29rJyk7XG52YXIgaXNWVGh1bmsgPSByZXF1aXJlKCcuLi92bm9kZS9pcy10aHVuaycpO1xuXG52YXIgcGFyc2VUYWcgPSByZXF1aXJlKCcuL3BhcnNlLXRhZy5qcycpO1xudmFyIHNvZnRTZXRIb29rID0gcmVxdWlyZSgnLi9ob29rcy9zb2Z0LXNldC1ob29rLmpzJyk7XG52YXIgZXZIb29rID0gcmVxdWlyZSgnLi9ob29rcy9ldi1ob29rLmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gaDtcblxuZnVuY3Rpb24gaCh0YWdOYW1lLCBwcm9wZXJ0aWVzLCBjaGlsZHJlbikge1xuICAgIHZhciBjaGlsZE5vZGVzID0gW107XG4gICAgdmFyIHRhZywgcHJvcHMsIGtleSwgbmFtZXNwYWNlO1xuXG4gICAgaWYgKCFjaGlsZHJlbiAmJiBpc0NoaWxkcmVuKHByb3BlcnRpZXMpKSB7XG4gICAgICAgIGNoaWxkcmVuID0gcHJvcGVydGllcztcbiAgICAgICAgcHJvcHMgPSB7fTtcbiAgICB9XG5cbiAgICBwcm9wcyA9IHByb3BzIHx8IHByb3BlcnRpZXMgfHwge307XG4gICAgdGFnID0gcGFyc2VUYWcodGFnTmFtZSwgcHJvcHMpO1xuXG4gICAgLy8gc3VwcG9ydCBrZXlzXG4gICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KCdrZXknKSkge1xuICAgICAgICBrZXkgPSBwcm9wcy5rZXk7XG4gICAgICAgIHByb3BzLmtleSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0IG5hbWVzcGFjZVxuICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eSgnbmFtZXNwYWNlJykpIHtcbiAgICAgICAgbmFtZXNwYWNlID0gcHJvcHMubmFtZXNwYWNlO1xuICAgICAgICBwcm9wcy5uYW1lc3BhY2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gZml4IGN1cnNvciBidWdcbiAgICBpZiAodGFnID09PSAnSU5QVVQnICYmXG4gICAgICAgICFuYW1lc3BhY2UgJiZcbiAgICAgICAgcHJvcHMuaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykgJiZcbiAgICAgICAgcHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAhaXNIb29rKHByb3BzLnZhbHVlKVxuICAgICkge1xuICAgICAgICBwcm9wcy52YWx1ZSA9IHNvZnRTZXRIb29rKHByb3BzLnZhbHVlKTtcbiAgICB9XG5cbiAgICB0cmFuc2Zvcm1Qcm9wZXJ0aWVzKHByb3BzKTtcblxuICAgIGlmIChjaGlsZHJlbiAhPT0gdW5kZWZpbmVkICYmIGNoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgICAgIGFkZENoaWxkKGNoaWxkcmVuLCBjaGlsZE5vZGVzLCB0YWcsIHByb3BzKTtcbiAgICB9XG5cblxuICAgIHJldHVybiBuZXcgVk5vZGUodGFnLCBwcm9wcywgY2hpbGROb2Rlcywga2V5LCBuYW1lc3BhY2UpO1xufVxuXG5mdW5jdGlvbiBhZGRDaGlsZChjLCBjaGlsZE5vZGVzLCB0YWcsIHByb3BzKSB7XG4gICAgaWYgKHR5cGVvZiBjID09PSAnc3RyaW5nJykge1xuICAgICAgICBjaGlsZE5vZGVzLnB1c2gobmV3IFZUZXh0KGMpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjID09PSAnbnVtYmVyJykge1xuICAgICAgICBjaGlsZE5vZGVzLnB1c2gobmV3IFZUZXh0KFN0cmluZyhjKSkpO1xuICAgIH0gZWxzZSBpZiAoaXNDaGlsZChjKSkge1xuICAgICAgICBjaGlsZE5vZGVzLnB1c2goYyk7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KGMpKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYWRkQ2hpbGQoY1tpXSwgY2hpbGROb2RlcywgdGFnLCBwcm9wcyk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGMgPT09IG51bGwgfHwgYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBVbmV4cGVjdGVkVmlydHVhbEVsZW1lbnQoe1xuICAgICAgICAgICAgZm9yZWlnbk9iamVjdDogYyxcbiAgICAgICAgICAgIHBhcmVudFZub2RlOiB7XG4gICAgICAgICAgICAgICAgdGFnTmFtZTogdGFnLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHByb3BzXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtUHJvcGVydGllcyhwcm9wcykge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcblxuICAgICAgICAgICAgaWYgKGlzSG9vayh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHByb3BOYW1lLnN1YnN0cigwLCAzKSA9PT0gJ2V2LScpIHtcbiAgICAgICAgICAgICAgICAvLyBhZGQgZXYtZm9vIHN1cHBvcnRcbiAgICAgICAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBldkhvb2sodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc0NoaWxkKHgpIHtcbiAgICByZXR1cm4gaXNWTm9kZSh4KSB8fCBpc1ZUZXh0KHgpIHx8IGlzV2lkZ2V0KHgpIHx8IGlzVlRodW5rKHgpO1xufVxuXG5mdW5jdGlvbiBpc0NoaWxkcmVuKHgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHggPT09ICdzdHJpbmcnIHx8IGlzQXJyYXkoeCkgfHwgaXNDaGlsZCh4KTtcbn1cblxuZnVuY3Rpb24gVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50KGRhdGEpIHtcbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKCk7XG5cbiAgICBlcnIudHlwZSA9ICd2aXJ0dWFsLWh5cGVyc2NyaXB0LnVuZXhwZWN0ZWQudmlydHVhbC1lbGVtZW50JztcbiAgICBlcnIubWVzc2FnZSA9ICdVbmV4cGVjdGVkIHZpcnR1YWwgY2hpbGQgcGFzc2VkIHRvIGgoKS5cXG4nICtcbiAgICAgICAgJ0V4cGVjdGVkIGEgVk5vZGUgLyBWdGh1bmsgLyBWV2lkZ2V0IC8gc3RyaW5nIGJ1dDpcXG4nICtcbiAgICAgICAgJ2dvdDpcXG4nICtcbiAgICAgICAgZXJyb3JTdHJpbmcoZGF0YS5mb3JlaWduT2JqZWN0KSArXG4gICAgICAgICcuXFxuJyArXG4gICAgICAgICdUaGUgcGFyZW50IHZub2RlIGlzOlxcbicgK1xuICAgICAgICBlcnJvclN0cmluZyhkYXRhLnBhcmVudFZub2RlKVxuICAgICAgICAnXFxuJyArXG4gICAgICAgICdTdWdnZXN0ZWQgZml4OiBjaGFuZ2UgeW91ciBgaCguLi4sIFsgLi4uIF0pYCBjYWxsc2l0ZS4nO1xuICAgIGVyci5mb3JlaWduT2JqZWN0ID0gZGF0YS5mb3JlaWduT2JqZWN0O1xuICAgIGVyci5wYXJlbnRWbm9kZSA9IGRhdGEucGFyZW50Vm5vZGU7XG5cbiAgICByZXR1cm4gZXJyO1xufVxuXG5mdW5jdGlvbiBlcnJvclN0cmluZyhvYmopIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqLCBudWxsLCAnICAgICcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyhvYmopO1xuICAgIH1cbn1cblxufSx7XCIuLi92bm9kZS9pcy10aHVua1wiOjM3LFwiLi4vdm5vZGUvaXMtdmhvb2tcIjozOCxcIi4uL3Zub2RlL2lzLXZub2RlXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dFwiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0XCI6NDEsXCIuLi92bm9kZS92bm9kZS5qc1wiOjQzLFwiLi4vdm5vZGUvdnRleHQuanNcIjo0NSxcIi4vaG9va3MvZXYtaG9vay5qc1wiOjMwLFwiLi9ob29rcy9zb2Z0LXNldC1ob29rLmpzXCI6MzEsXCIuL3BhcnNlLXRhZy5qc1wiOjMzLFwieC1pcy1hcnJheVwiOjIxfV0sMzM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgc3BsaXQgPSByZXF1aXJlKCdicm93c2VyLXNwbGl0Jyk7XG5cbnZhciBjbGFzc0lkU3BsaXQgPSAvKFtcXC4jXT9bYS16QS1aMC05XFx1MDA3Ri1cXHVGRkZGXzotXSspLztcbnZhciBub3RDbGFzc0lkID0gL15cXC58Iy87XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2VUYWc7XG5cbmZ1bmN0aW9uIHBhcnNlVGFnKHRhZywgcHJvcHMpIHtcbiAgICBpZiAoIXRhZykge1xuICAgICAgICByZXR1cm4gJ0RJVic7XG4gICAgfVxuXG4gICAgdmFyIG5vSWQgPSAhKHByb3BzLmhhc093blByb3BlcnR5KCdpZCcpKTtcblxuICAgIHZhciB0YWdQYXJ0cyA9IHNwbGl0KHRhZywgY2xhc3NJZFNwbGl0KTtcbiAgICB2YXIgdGFnTmFtZSA9IG51bGw7XG5cbiAgICBpZiAobm90Q2xhc3NJZC50ZXN0KHRhZ1BhcnRzWzFdKSkge1xuICAgICAgICB0YWdOYW1lID0gJ0RJVic7XG4gICAgfVxuXG4gICAgdmFyIGNsYXNzZXMsIHBhcnQsIHR5cGUsIGk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgdGFnUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcGFydCA9IHRhZ1BhcnRzW2ldO1xuXG4gICAgICAgIGlmICghcGFydCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB0eXBlID0gcGFydC5jaGFyQXQoMCk7XG5cbiAgICAgICAgaWYgKCF0YWdOYW1lKSB7XG4gICAgICAgICAgICB0YWdOYW1lID0gcGFydDtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnLicpIHtcbiAgICAgICAgICAgIGNsYXNzZXMgPSBjbGFzc2VzIHx8IFtdO1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKHBhcnQuc3Vic3RyaW5nKDEsIHBhcnQubGVuZ3RoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJyMnICYmIG5vSWQpIHtcbiAgICAgICAgICAgIHByb3BzLmlkID0gcGFydC5zdWJzdHJpbmcoMSwgcGFydC5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzZXMpIHtcbiAgICAgICAgaWYgKHByb3BzLmNsYXNzTmFtZSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKHByb3BzLmNsYXNzTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9wcy5jbGFzc05hbWUgPSBjbGFzc2VzLmpvaW4oJyAnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHMubmFtZXNwYWNlID8gdGFnTmFtZSA6IHRhZ05hbWUudG9VcHBlckNhc2UoKTtcbn1cblxufSx7XCJicm93c2VyLXNwbGl0XCI6M31dLDM0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIERFRkFVTFRfTkFNRVNQQUNFID0gbnVsbDtcbnZhciBFVl9OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMS94bWwtZXZlbnRzJztcbnZhciBYTElOS19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayc7XG52YXIgWE1MX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnO1xuXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkdUaW55MTIvYXR0cmlidXRlVGFibGUuaHRtbFxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2F0dGluZGV4Lmh0bWxcbnZhciBTVkdfUFJPUEVSVElFUyA9IHtcbiAgICAnYWJvdXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWNjZW50LWhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhY2N1bXVsYXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FkZGl0aXZlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FsaWdubWVudC1iYXNlbGluZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhbHBoYWJldGljJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FtcGxpdHVkZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhcmFiaWMtZm9ybSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhc2NlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXR0cmlidXRlTmFtZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhdHRyaWJ1dGVUeXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2F6aW11dGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFuZHdpZHRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Jhc2VGcmVxdWVuY3knOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFzZVByb2ZpbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFzZWxpbmUtc2hpZnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmJveCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiZWdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiaWFzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2J5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NhbGNNb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NhcC1oZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xhc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwLXBhdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcC1ydWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsaXBQYXRoVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3ItaW50ZXJwb2xhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3ItcHJvZmlsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1yZW5kZXJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29udGVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb250ZW50U2NyaXB0VHlwZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb250ZW50U3R5bGVUeXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N1cnNvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RhdGF0eXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RlZmF1bHRBY3Rpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGVzY2VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaWZmdXNlQ29uc3RhbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGlyZWN0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Rpc3BsYXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGl2aXNvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkb21pbmFudC1iYXNlbGluZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkdXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZHgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZWRnZU1vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZWRpdGFibGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZWxldmF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2VuYWJsZS1iYWNrZ3JvdW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2VuZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdldjpldmVudCc6IEVWX05BTUVTUEFDRSxcbiAgICAnZXZlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZXhwb25lbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWxsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwtb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWxsLXJ1bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsdGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbHRlclJlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWx0ZXJVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmbG9vZC1jb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmbG9vZC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvY3VzSGlnaGxpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvY3VzYWJsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LWZhbWlseSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXNpemUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC1zaXplLWFkanVzdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXN0cmV0Y2gnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC1zdHlsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXZhcmlhbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC13ZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9ybWF0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zyb20nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZngnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZnknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZzEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZzInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGgtbmFtZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoUmVmJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dyYWRpZW50VHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dyYWRpZW50VW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaGFuZGxlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdoYW5naW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdob3Jpei1hZHYteCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdob3Jpei1vcmlnaW4teCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdob3Jpei1vcmlnaW4teSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpZGVvZ3JhcGhpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbWFnZS1yZW5kZXJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW4yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2luaXRpYWxWaXNpYmlsaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ludGVyY2VwdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2sxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2syJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2szJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2s0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tlcm5lbE1hdHJpeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXJuZWxVbml0TGVuZ3RoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tlcm5pbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2V5UG9pbnRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tleVNwbGluZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2V5VGltZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGFuZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsZW5ndGhBZGp1c3QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGV0dGVyLXNwYWNpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGlnaHRpbmctY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGltaXRpbmdDb25lQW5nbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbG9jYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyLWVuZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXItbWlkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlci1zdGFydCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJIZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyV2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFzayc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXNrQ29udGVudFVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hc2tVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXRoZW1hdGljYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWF4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhQ2hhcmFjdGVyRW5jb2RpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFDb250ZW50RW5jb2RpbmdzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhU2l6ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYVRpbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWV0aG9kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21pbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LWRvd24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LWRvd24tbGVmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bi1yaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtbGVmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtbmV4dCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtcHJldic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtcmlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi11cC1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi11cC1yaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdudW1PY3RhdmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29ic2VydmVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29mZnNldCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29wZXJhdG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yZGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcmllbnRhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcmlnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3ZlcmZsb3cnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3ZlcmxheSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVybGluZS1wb3NpdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVybGluZS10aGlja25lc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGFub3NlLTEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXRoTGVuZ3RoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdHRlcm5Db250ZW50VW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0dGVyblRyYW5zZm9ybSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXR0ZXJuVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGhhc2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGxheWJhY2tPcmRlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludGVyLWV2ZW50cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRzQXRYJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50c0F0WSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHNBdFonOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJlc2VydmVBbHBoYSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ByaW1pdGl2ZVVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Byb3BhZ2F0ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcm9wZXJ0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JhZGl1cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZWZYJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlZlknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlbmRlcmluZy1pbnRlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVwZWF0Q291bnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVwZWF0RHVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRXh0ZW5zaW9ucyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXF1aXJlZEZlYXR1cmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRm9udHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRGb3JtYXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Jlc291cmNlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Jlc3RhcnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzdWx0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Jldic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyb2xlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JvdGF0ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzY2FsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzZWVkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NoYXBlLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzbG9wZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzbmFwc2hvdFRpbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3BhY2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcGVjdWxhckNvbnN0YW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NwZWN1bGFyRXhwb25lbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3ByZWFkTWV0aG9kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0YXJ0T2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZERldmlhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGVtaCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGVtdic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGl0Y2hUaWxlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdG9wLWNvbG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0b3Atb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJpa2V0aHJvdWdoLXBvc2l0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cmlrZXRocm91Z2gtdGhpY2tuZXNzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLWRhc2hhcnJheSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtZGFzaG9mZnNldCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtbGluZWNhcCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtbGluZWpvaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLW1pdGVybGltaXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLW9wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLXdpZHRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N1cmZhY2VTY2FsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jQmVoYXZpb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY0JlaGF2aW9yRGVmYXVsdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jTWFzdGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNUb2xlcmFuY2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY1RvbGVyYW5jZURlZmF1bHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3lzdGVtTGFuZ3VhZ2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFibGVWYWx1ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFyZ2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RhcmdldFgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFyZ2V0WSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0LWFuY2hvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0LWRlY29yYXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGV4dC1yZW5kZXJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGV4dExlbmd0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0aW1lbGluZUJlZ2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RpdGxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RvJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RyYW5zZm9ybSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0cmFuc2Zvcm1CZWhhdmlvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0eXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3R5cGVvZic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1MSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1Mic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmRlcmxpbmUtcG9zaXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5kZXJsaW5lLXRoaWNrbmVzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmljb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUtYmlkaSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmljb2RlLXJhbmdlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaXRzLXBlci1lbSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LWFscGhhYmV0aWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1oYW5naW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3YtaWRlb2dyYXBoaWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1tYXRoZW1hdGljYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmFsdWVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnNpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVydC1hZHYteSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2ZXJ0LW9yaWdpbi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnQtb3JpZ2luLXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmlld0JveCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2aWV3VGFyZ2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Zpc2liaWxpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd2lkdGhzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3dvcmQtc3BhY2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3cml0aW5nLW1vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4LWhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4MSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4Mic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4Q2hhbm5lbFNlbGVjdG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOmFjdHVhdGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOmFyY3JvbGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOmhyZWYnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnJvbGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnNob3cnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnRpdGxlJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bGluazp0eXBlJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bWw6YmFzZSc6IFhNTF9OQU1FU1BBQ0UsXG4gICAgJ3htbDppZCc6IFhNTF9OQU1FU1BBQ0UsXG4gICAgJ3htbDpsYW5nJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOnNwYWNlJzogWE1MX05BTUVTUEFDRSxcbiAgICAneSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd5MSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd5Mic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd5Q2hhbm5lbFNlbGVjdG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3onOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnem9vbUFuZFBhbic6IERFRkFVTFRfTkFNRVNQQUNFXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNWR0F0dHJpYnV0ZU5hbWVzcGFjZTtcblxuZnVuY3Rpb24gU1ZHQXR0cmlidXRlTmFtZXNwYWNlKHZhbHVlKSB7XG4gIGlmIChTVkdfUFJPUEVSVElFUy5oYXNPd25Qcm9wZXJ0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gU1ZHX1BST1BFUlRJRVNbdmFsdWVdO1xuICB9XG59XG5cbn0se31dLDM1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCd4LWlzLWFycmF5Jyk7XG5cbnZhciBoID0gcmVxdWlyZSgnLi9pbmRleC5qcycpO1xuXG5cbnZhciBTVkdBdHRyaWJ1dGVOYW1lc3BhY2UgPSByZXF1aXJlKCcuL3N2Zy1hdHRyaWJ1dGUtbmFtZXNwYWNlJyk7XG52YXIgYXR0cmlidXRlSG9vayA9IHJlcXVpcmUoJy4vaG9va3MvYXR0cmlidXRlLWhvb2snKTtcblxudmFyIFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN2ZztcblxuZnVuY3Rpb24gc3ZnKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKSB7XG4gICAgaWYgKCFjaGlsZHJlbiAmJiBpc0NoaWxkcmVuKHByb3BlcnRpZXMpKSB7XG4gICAgICAgIGNoaWxkcmVuID0gcHJvcGVydGllcztcbiAgICAgICAgcHJvcGVydGllcyA9IHt9O1xuICAgIH1cblxuICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzIHx8IHt9O1xuXG4gICAgLy8gc2V0IG5hbWVzcGFjZSBmb3Igc3ZnXG4gICAgcHJvcGVydGllcy5uYW1lc3BhY2UgPSBTVkdfTkFNRVNQQUNFO1xuXG4gICAgdmFyIGF0dHJpYnV0ZXMgPSBwcm9wZXJ0aWVzLmF0dHJpYnV0ZXMgfHwgKHByb3BlcnRpZXMuYXR0cmlidXRlcyA9IHt9KTtcblxuICAgIGZvciAodmFyIGtleSBpbiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgIGlmICghcHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuYW1lc3BhY2UgPSBTVkdBdHRyaWJ1dGVOYW1lc3BhY2Uoa2V5KTtcblxuICAgICAgICBpZiAobmFtZXNwYWNlID09PSB1bmRlZmluZWQpIHsgLy8gbm90IGEgc3ZnIGF0dHJpYnV0ZVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdmFsdWUgPSBwcm9wZXJ0aWVzW2tleV07XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmFtZXNwYWNlICE9PSBudWxsKSB7IC8vIG5hbWVzcGFjZWQgYXR0cmlidXRlXG4gICAgICAgICAgICBwcm9wZXJ0aWVzW2tleV0gPSBhdHRyaWJ1dGVIb29rKG5hbWVzcGFjZSwgdmFsdWUpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBhdHRyaWJ1dGVzW2tleV0gPSB2YWx1ZVxuICAgICAgICBwcm9wZXJ0aWVzW2tleV0gPSB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gaCh0YWdOYW1lLCBwcm9wZXJ0aWVzLCBjaGlsZHJlbik7XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGRyZW4oeCkge1xuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgfHwgaXNBcnJheSh4KTtcbn1cblxufSx7XCIuL2hvb2tzL2F0dHJpYnV0ZS1ob29rXCI6MjksXCIuL2luZGV4LmpzXCI6MzIsXCIuL3N2Zy1hdHRyaWJ1dGUtbmFtZXNwYWNlXCI6MzQsXCJ4LWlzLWFycmF5XCI6MjF9XSwzNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuL2lzLXZub2RlXCIpXG52YXIgaXNWVGV4dCA9IHJlcXVpcmUoXCIuL2lzLXZ0ZXh0XCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi9pcy13aWRnZXRcIilcbnZhciBpc1RodW5rID0gcmVxdWlyZShcIi4vaXMtdGh1bmtcIilcblxubW9kdWxlLmV4cG9ydHMgPSBoYW5kbGVUaHVua1xuXG5mdW5jdGlvbiBoYW5kbGVUaHVuayhhLCBiKSB7XG4gICAgdmFyIHJlbmRlcmVkQSA9IGFcbiAgICB2YXIgcmVuZGVyZWRCID0gYlxuXG4gICAgaWYgKGlzVGh1bmsoYikpIHtcbiAgICAgICAgcmVuZGVyZWRCID0gcmVuZGVyVGh1bmsoYiwgYSlcbiAgICB9XG5cbiAgICBpZiAoaXNUaHVuayhhKSkge1xuICAgICAgICByZW5kZXJlZEEgPSByZW5kZXJUaHVuayhhLCBudWxsKVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGE6IHJlbmRlcmVkQSxcbiAgICAgICAgYjogcmVuZGVyZWRCXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJUaHVuayh0aHVuaywgcHJldmlvdXMpIHtcbiAgICB2YXIgcmVuZGVyZWRUaHVuayA9IHRodW5rLnZub2RlXG5cbiAgICBpZiAoIXJlbmRlcmVkVGh1bmspIHtcbiAgICAgICAgcmVuZGVyZWRUaHVuayA9IHRodW5rLnZub2RlID0gdGh1bmsucmVuZGVyKHByZXZpb3VzKVxuICAgIH1cblxuICAgIGlmICghKGlzVk5vZGUocmVuZGVyZWRUaHVuaykgfHxcbiAgICAgICAgICAgIGlzVlRleHQocmVuZGVyZWRUaHVuaykgfHxcbiAgICAgICAgICAgIGlzV2lkZ2V0KHJlbmRlcmVkVGh1bmspKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0aHVuayBkaWQgbm90IHJldHVybiBhIHZhbGlkIG5vZGVcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbmRlcmVkVGh1bmtcbn1cblxufSx7XCIuL2lzLXRodW5rXCI6MzcsXCIuL2lzLXZub2RlXCI6MzksXCIuL2lzLXZ0ZXh0XCI6NDAsXCIuL2lzLXdpZGdldFwiOjQxfV0sMzc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBpc1RodW5rXHJcblxyXG5mdW5jdGlvbiBpc1RodW5rKHQpIHtcclxuICAgIHJldHVybiB0ICYmIHQudHlwZSA9PT0gXCJUaHVua1wiXHJcbn1cclxuXG59LHt9XSwzODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGlzSG9va1xuXG5mdW5jdGlvbiBpc0hvb2soaG9vaykge1xuICAgIHJldHVybiBob29rICYmXG4gICAgICAodHlwZW9mIGhvb2suaG9vayA9PT0gXCJmdW5jdGlvblwiICYmICFob29rLmhhc093blByb3BlcnR5KFwiaG9va1wiKSB8fFxuICAgICAgIHR5cGVvZiBob29rLnVuaG9vayA9PT0gXCJmdW5jdGlvblwiICYmICFob29rLmhhc093blByb3BlcnR5KFwidW5ob29rXCIpKVxufVxuXG59LHt9XSwzOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxubW9kdWxlLmV4cG9ydHMgPSBpc1ZpcnR1YWxOb2RlXG5cbmZ1bmN0aW9uIGlzVmlydHVhbE5vZGUoeCkge1xuICAgIHJldHVybiB4ICYmIHgudHlwZSA9PT0gXCJWaXJ0dWFsTm9kZVwiICYmIHgudmVyc2lvbiA9PT0gdmVyc2lvblxufVxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gaXNWaXJ0dWFsVGV4dFxuXG5mdW5jdGlvbiBpc1ZpcnR1YWxUZXh0KHgpIHtcbiAgICByZXR1cm4geCAmJiB4LnR5cGUgPT09IFwiVmlydHVhbFRleHRcIiAmJiB4LnZlcnNpb24gPT09IHZlcnNpb25cbn1cblxufSx7XCIuL3ZlcnNpb25cIjo0Mn1dLDQxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gaXNXaWRnZXRcblxuZnVuY3Rpb24gaXNXaWRnZXQodykge1xuICAgIHJldHVybiB3ICYmIHcudHlwZSA9PT0gXCJXaWRnZXRcIlxufVxuXG59LHt9XSw0MjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IFwiMlwiXG5cbn0se31dLDQzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxudmFyIGlzVk5vZGUgPSByZXF1aXJlKFwiLi9pcy12bm9kZVwiKVxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4vaXMtd2lkZ2V0XCIpXG52YXIgaXNUaHVuayA9IHJlcXVpcmUoXCIuL2lzLXRodW5rXCIpXG52YXIgaXNWSG9vayA9IHJlcXVpcmUoXCIuL2lzLXZob29rXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbE5vZGVcblxudmFyIG5vUHJvcGVydGllcyA9IHt9XG52YXIgbm9DaGlsZHJlbiA9IFtdXG5cbmZ1bmN0aW9uIFZpcnR1YWxOb2RlKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuLCBrZXksIG5hbWVzcGFjZSkge1xuICAgIHRoaXMudGFnTmFtZSA9IHRhZ05hbWVcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzIHx8IG5vUHJvcGVydGllc1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbiB8fCBub0NoaWxkcmVuXG4gICAgdGhpcy5rZXkgPSBrZXkgIT0gbnVsbCA/IFN0cmluZyhrZXkpIDogdW5kZWZpbmVkXG4gICAgdGhpcy5uYW1lc3BhY2UgPSAodHlwZW9mIG5hbWVzcGFjZSA9PT0gXCJzdHJpbmdcIikgPyBuYW1lc3BhY2UgOiBudWxsXG5cbiAgICB2YXIgY291bnQgPSAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoKSB8fCAwXG4gICAgdmFyIGRlc2NlbmRhbnRzID0gMFxuICAgIHZhciBoYXNXaWRnZXRzID0gZmFsc2VcbiAgICB2YXIgaGFzVGh1bmtzID0gZmFsc2VcbiAgICB2YXIgZGVzY2VuZGFudEhvb2tzID0gZmFsc2VcbiAgICB2YXIgaG9va3NcblxuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKHByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW3Byb3BOYW1lXVxuICAgICAgICAgICAgaWYgKGlzVkhvb2socHJvcGVydHkpICYmIHByb3BlcnR5LnVuaG9vaykge1xuICAgICAgICAgICAgICAgIGlmICghaG9va3MpIHtcbiAgICAgICAgICAgICAgICAgICAgaG9va3MgPSB7fVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGhvb2tzW3Byb3BOYW1lXSA9IHByb3BlcnR5XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpKSB7XG4gICAgICAgICAgICBkZXNjZW5kYW50cyArPSBjaGlsZC5jb3VudCB8fCAwXG5cbiAgICAgICAgICAgIGlmICghaGFzV2lkZ2V0cyAmJiBjaGlsZC5oYXNXaWRnZXRzKSB7XG4gICAgICAgICAgICAgICAgaGFzV2lkZ2V0cyA9IHRydWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFoYXNUaHVua3MgJiYgY2hpbGQuaGFzVGh1bmtzKSB7XG4gICAgICAgICAgICAgICAgaGFzVGh1bmtzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWRlc2NlbmRhbnRIb29rcyAmJiAoY2hpbGQuaG9va3MgfHwgY2hpbGQuZGVzY2VuZGFudEhvb2tzKSkge1xuICAgICAgICAgICAgICAgIGRlc2NlbmRhbnRIb29rcyA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghaGFzV2lkZ2V0cyAmJiBpc1dpZGdldChjaGlsZCkpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGQuZGVzdHJveSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgaGFzV2lkZ2V0cyA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghaGFzVGh1bmtzICYmIGlzVGh1bmsoY2hpbGQpKSB7XG4gICAgICAgICAgICBoYXNUaHVua3MgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jb3VudCA9IGNvdW50ICsgZGVzY2VuZGFudHNcbiAgICB0aGlzLmhhc1dpZGdldHMgPSBoYXNXaWRnZXRzXG4gICAgdGhpcy5oYXNUaHVua3MgPSBoYXNUaHVua3NcbiAgICB0aGlzLmhvb2tzID0gaG9va3NcbiAgICB0aGlzLmRlc2NlbmRhbnRIb29rcyA9IGRlc2NlbmRhbnRIb29rc1xufVxuXG5WaXJ0dWFsTm9kZS5wcm90b3R5cGUudmVyc2lvbiA9IHZlcnNpb25cblZpcnR1YWxOb2RlLnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsTm9kZVwiXG5cbn0se1wiLi9pcy10aHVua1wiOjM3LFwiLi9pcy12aG9va1wiOjM4LFwiLi9pcy12bm9kZVwiOjM5LFwiLi9pcy13aWRnZXRcIjo0MSxcIi4vdmVyc2lvblwiOjQyfV0sNDQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cblZpcnR1YWxQYXRjaC5OT05FID0gMFxuVmlydHVhbFBhdGNoLlZURVhUID0gMVxuVmlydHVhbFBhdGNoLlZOT0RFID0gMlxuVmlydHVhbFBhdGNoLldJREdFVCA9IDNcblZpcnR1YWxQYXRjaC5QUk9QUyA9IDRcblZpcnR1YWxQYXRjaC5PUkRFUiA9IDVcblZpcnR1YWxQYXRjaC5JTlNFUlQgPSA2XG5WaXJ0dWFsUGF0Y2guUkVNT1ZFID0gN1xuVmlydHVhbFBhdGNoLlRIVU5LID0gOFxuXG5tb2R1bGUuZXhwb3J0cyA9IFZpcnR1YWxQYXRjaFxuXG5mdW5jdGlvbiBWaXJ0dWFsUGF0Y2godHlwZSwgdk5vZGUsIHBhdGNoKSB7XG4gICAgdGhpcy50eXBlID0gTnVtYmVyKHR5cGUpXG4gICAgdGhpcy52Tm9kZSA9IHZOb2RlXG4gICAgdGhpcy5wYXRjaCA9IHBhdGNoXG59XG5cblZpcnR1YWxQYXRjaC5wcm90b3R5cGUudmVyc2lvbiA9IHZlcnNpb25cblZpcnR1YWxQYXRjaC5wcm90b3R5cGUudHlwZSA9IFwiVmlydHVhbFBhdGNoXCJcblxufSx7XCIuL3ZlcnNpb25cIjo0Mn1dLDQ1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IFZpcnR1YWxUZXh0XG5cbmZ1bmN0aW9uIFZpcnR1YWxUZXh0KHRleHQpIHtcbiAgICB0aGlzLnRleHQgPSBTdHJpbmcodGV4dClcbn1cblxuVmlydHVhbFRleHQucHJvdG90eXBlLnZlcnNpb24gPSB2ZXJzaW9uXG5WaXJ0dWFsVGV4dC5wcm90b3R5cGUudHlwZSA9IFwiVmlydHVhbFRleHRcIlxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZShcImlzLW9iamVjdFwiKVxudmFyIGlzSG9vayA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12aG9va1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRpZmZQcm9wc1xuXG5mdW5jdGlvbiBkaWZmUHJvcHMoYSwgYikge1xuICAgIHZhciBkaWZmXG5cbiAgICBmb3IgKHZhciBhS2V5IGluIGEpIHtcbiAgICAgICAgaWYgKCEoYUtleSBpbiBiKSkge1xuICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgIGRpZmZbYUtleV0gPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBhVmFsdWUgPSBhW2FLZXldXG4gICAgICAgIHZhciBiVmFsdWUgPSBiW2FLZXldXG5cbiAgICAgICAgaWYgKGFWYWx1ZSA9PT0gYlZhbHVlKSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KGFWYWx1ZSkgJiYgaXNPYmplY3QoYlZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKGdldFByb3RvdHlwZShiVmFsdWUpICE9PSBnZXRQcm90b3R5cGUoYVZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICAgICAgZGlmZlthS2V5XSA9IGJWYWx1ZVxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0hvb2soYlZhbHVlKSkge1xuICAgICAgICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgICAgICBkaWZmW2FLZXldID0gYlZhbHVlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBvYmplY3REaWZmID0gZGlmZlByb3BzKGFWYWx1ZSwgYlZhbHVlKVxuICAgICAgICAgICAgICAgIGlmIChvYmplY3REaWZmKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICAgICAgICAgIGRpZmZbYUtleV0gPSBvYmplY3REaWZmXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgIGRpZmZbYUtleV0gPSBiVmFsdWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGJLZXkgaW4gYikge1xuICAgICAgICBpZiAoIShiS2V5IGluIGEpKSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZltiS2V5XSA9IGJbYktleV1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkaWZmXG59XG5cbmZ1bmN0aW9uIGdldFByb3RvdHlwZSh2YWx1ZSkge1xuICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSlcbiAgfSBlbHNlIGlmICh2YWx1ZS5fX3Byb3RvX18pIHtcbiAgICByZXR1cm4gdmFsdWUuX19wcm90b19fXG4gIH0gZWxzZSBpZiAodmFsdWUuY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gdmFsdWUuY29uc3RydWN0b3IucHJvdG90eXBlXG4gIH1cbn1cblxufSx7XCIuLi92bm9kZS9pcy12aG9va1wiOjM4LFwiaXMtb2JqZWN0XCI6MjB9XSw0NzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoXCJ4LWlzLWFycmF5XCIpXG5cbnZhciBWUGF0Y2ggPSByZXF1aXJlKFwiLi4vdm5vZGUvdnBhdGNoXCIpXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12bm9kZVwiKVxudmFyIGlzVlRleHQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdnRleHRcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXRcIilcbnZhciBpc1RodW5rID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXRodW5rXCIpXG52YXIgaGFuZGxlVGh1bmsgPSByZXF1aXJlKFwiLi4vdm5vZGUvaGFuZGxlLXRodW5rXCIpXG5cbnZhciBkaWZmUHJvcHMgPSByZXF1aXJlKFwiLi9kaWZmLXByb3BzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlxuXG5mdW5jdGlvbiBkaWZmKGEsIGIpIHtcbiAgICB2YXIgcGF0Y2ggPSB7IGE6IGEgfVxuICAgIHdhbGsoYSwgYiwgcGF0Y2gsIDApXG4gICAgcmV0dXJuIHBhdGNoXG59XG5cbmZ1bmN0aW9uIHdhbGsoYSwgYiwgcGF0Y2gsIGluZGV4KSB7XG4gICAgaWYgKGEgPT09IGIpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGFwcGx5ID0gcGF0Y2hbaW5kZXhdXG4gICAgdmFyIGFwcGx5Q2xlYXIgPSBmYWxzZVxuXG4gICAgaWYgKGlzVGh1bmsoYSkgfHwgaXNUaHVuayhiKSkge1xuICAgICAgICB0aHVua3MoYSwgYiwgcGF0Y2gsIGluZGV4KVxuICAgIH0gZWxzZSBpZiAoYiA9PSBudWxsKSB7XG5cbiAgICAgICAgLy8gSWYgYSBpcyBhIHdpZGdldCB3ZSB3aWxsIGFkZCBhIHJlbW92ZSBwYXRjaCBmb3IgaXRcbiAgICAgICAgLy8gT3RoZXJ3aXNlIGFueSBjaGlsZCB3aWRnZXRzL2hvb2tzIG11c3QgYmUgZGVzdHJveWVkLlxuICAgICAgICAvLyBUaGlzIHByZXZlbnRzIGFkZGluZyB0d28gcmVtb3ZlIHBhdGNoZXMgZm9yIGEgd2lkZ2V0LlxuICAgICAgICBpZiAoIWlzV2lkZ2V0KGEpKSB7XG4gICAgICAgICAgICBjbGVhclN0YXRlKGEsIHBhdGNoLCBpbmRleClcbiAgICAgICAgICAgIGFwcGx5ID0gcGF0Y2hbaW5kZXhdXG4gICAgICAgIH1cblxuICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5SRU1PVkUsIGEsIGIpKVxuICAgIH0gZWxzZSBpZiAoaXNWTm9kZShiKSkge1xuICAgICAgICBpZiAoaXNWTm9kZShhKSkge1xuICAgICAgICAgICAgaWYgKGEudGFnTmFtZSA9PT0gYi50YWdOYW1lICYmXG4gICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgPT09IGIubmFtZXNwYWNlICYmXG4gICAgICAgICAgICAgICAgYS5rZXkgPT09IGIua2V5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb3BzUGF0Y2ggPSBkaWZmUHJvcHMoYS5wcm9wZXJ0aWVzLCBiLnByb3BlcnRpZXMpXG4gICAgICAgICAgICAgICAgaWYgKHByb3BzUGF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLlBST1BTLCBhLCBwcm9wc1BhdGNoKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXBwbHkgPSBkaWZmQ2hpbGRyZW4oYSwgYiwgcGF0Y2gsIGFwcGx5LCBpbmRleClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guVk5PREUsIGEsIGIpKVxuICAgICAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WTk9ERSwgYSwgYikpXG4gICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1ZUZXh0KGIpKSB7XG4gICAgICAgIGlmICghaXNWVGV4dChhKSkge1xuICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guVlRFWFQsIGEsIGIpKVxuICAgICAgICAgICAgYXBwbHlDbGVhciA9IHRydWVcbiAgICAgICAgfSBlbHNlIGlmIChhLnRleHQgIT09IGIudGV4dCkge1xuICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guVlRFWFQsIGEsIGIpKVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpZGdldChiKSkge1xuICAgICAgICBpZiAoIWlzV2lkZ2V0KGEpKSB7XG4gICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guV0lER0VULCBhLCBiKSlcbiAgICB9XG5cbiAgICBpZiAoYXBwbHkpIHtcbiAgICAgICAgcGF0Y2hbaW5kZXhdID0gYXBwbHlcbiAgICB9XG5cbiAgICBpZiAoYXBwbHlDbGVhcikge1xuICAgICAgICBjbGVhclN0YXRlKGEsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRpZmZDaGlsZHJlbihhLCBiLCBwYXRjaCwgYXBwbHksIGluZGV4KSB7XG4gICAgdmFyIGFDaGlsZHJlbiA9IGEuY2hpbGRyZW5cbiAgICB2YXIgb3JkZXJlZFNldCA9IHJlb3JkZXIoYUNoaWxkcmVuLCBiLmNoaWxkcmVuKVxuICAgIHZhciBiQ2hpbGRyZW4gPSBvcmRlcmVkU2V0LmNoaWxkcmVuXG5cbiAgICB2YXIgYUxlbiA9IGFDaGlsZHJlbi5sZW5ndGhcbiAgICB2YXIgYkxlbiA9IGJDaGlsZHJlbi5sZW5ndGhcbiAgICB2YXIgbGVuID0gYUxlbiA+IGJMZW4gPyBhTGVuIDogYkxlblxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICB2YXIgbGVmdE5vZGUgPSBhQ2hpbGRyZW5baV1cbiAgICAgICAgdmFyIHJpZ2h0Tm9kZSA9IGJDaGlsZHJlbltpXVxuICAgICAgICBpbmRleCArPSAxXG5cbiAgICAgICAgaWYgKCFsZWZ0Tm9kZSkge1xuICAgICAgICAgICAgaWYgKHJpZ2h0Tm9kZSkge1xuICAgICAgICAgICAgICAgIC8vIEV4Y2VzcyBub2RlcyBpbiBiIG5lZWQgdG8gYmUgYWRkZWRcbiAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LFxuICAgICAgICAgICAgICAgICAgICBuZXcgVlBhdGNoKFZQYXRjaC5JTlNFUlQsIG51bGwsIHJpZ2h0Tm9kZSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3YWxrKGxlZnROb2RlLCByaWdodE5vZGUsIHBhdGNoLCBpbmRleClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1ZOb2RlKGxlZnROb2RlKSAmJiBsZWZ0Tm9kZS5jb3VudCkge1xuICAgICAgICAgICAgaW5kZXggKz0gbGVmdE5vZGUuY291bnRcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcmRlcmVkU2V0Lm1vdmVzKSB7XG4gICAgICAgIC8vIFJlb3JkZXIgbm9kZXMgbGFzdFxuICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFxuICAgICAgICAgICAgVlBhdGNoLk9SREVSLFxuICAgICAgICAgICAgYSxcbiAgICAgICAgICAgIG9yZGVyZWRTZXQubW92ZXNcbiAgICAgICAgKSlcbiAgICB9XG5cbiAgICByZXR1cm4gYXBwbHlcbn1cblxuZnVuY3Rpb24gY2xlYXJTdGF0ZSh2Tm9kZSwgcGF0Y2gsIGluZGV4KSB7XG4gICAgLy8gVE9ETzogTWFrZSB0aGlzIGEgc2luZ2xlIHdhbGssIG5vdCB0d29cbiAgICB1bmhvb2sodk5vZGUsIHBhdGNoLCBpbmRleClcbiAgICBkZXN0cm95V2lkZ2V0cyh2Tm9kZSwgcGF0Y2gsIGluZGV4KVxufVxuXG4vLyBQYXRjaCByZWNvcmRzIGZvciBhbGwgZGVzdHJveWVkIHdpZGdldHMgbXVzdCBiZSBhZGRlZCBiZWNhdXNlIHdlIG5lZWRcbi8vIGEgRE9NIG5vZGUgcmVmZXJlbmNlIGZvciB0aGUgZGVzdHJveSBmdW5jdGlvblxuZnVuY3Rpb24gZGVzdHJveVdpZGdldHModk5vZGUsIHBhdGNoLCBpbmRleCkge1xuICAgIGlmIChpc1dpZGdldCh2Tm9kZSkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2Tm9kZS5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHBhdGNoW2luZGV4XSA9IGFwcGVuZFBhdGNoKFxuICAgICAgICAgICAgICAgIHBhdGNoW2luZGV4XSxcbiAgICAgICAgICAgICAgICBuZXcgVlBhdGNoKFZQYXRjaC5SRU1PVkUsIHZOb2RlLCBudWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1ZOb2RlKHZOb2RlKSAmJiAodk5vZGUuaGFzV2lkZ2V0cyB8fCB2Tm9kZS5oYXNUaHVua3MpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHZOb2RlLmNoaWxkcmVuXG4gICAgICAgIHZhciBsZW4gPSBjaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICAgICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICAgICAgZGVzdHJveVdpZGdldHMoY2hpbGQsIHBhdGNoLCBpbmRleClcblxuICAgICAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpICYmIGNoaWxkLmNvdW50KSB7XG4gICAgICAgICAgICAgICAgaW5kZXggKz0gY2hpbGQuY291bnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUaHVuayh2Tm9kZSkpIHtcbiAgICAgICAgdGh1bmtzKHZOb2RlLCBudWxsLCBwYXRjaCwgaW5kZXgpXG4gICAgfVxufVxuXG4vLyBDcmVhdGUgYSBzdWItcGF0Y2ggZm9yIHRodW5rc1xuZnVuY3Rpb24gdGh1bmtzKGEsIGIsIHBhdGNoLCBpbmRleCkge1xuICAgIHZhciBub2RlcyA9IGhhbmRsZVRodW5rKGEsIGIpXG4gICAgdmFyIHRodW5rUGF0Y2ggPSBkaWZmKG5vZGVzLmEsIG5vZGVzLmIpXG4gICAgaWYgKGhhc1BhdGNoZXModGh1bmtQYXRjaCkpIHtcbiAgICAgICAgcGF0Y2hbaW5kZXhdID0gbmV3IFZQYXRjaChWUGF0Y2guVEhVTkssIG51bGwsIHRodW5rUGF0Y2gpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBoYXNQYXRjaGVzKHBhdGNoKSB7XG4gICAgZm9yICh2YXIgaW5kZXggaW4gcGF0Y2gpIHtcbiAgICAgICAgaWYgKGluZGV4ICE9PSBcImFcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxufVxuXG4vLyBFeGVjdXRlIGhvb2tzIHdoZW4gdHdvIG5vZGVzIGFyZSBpZGVudGljYWxcbmZ1bmN0aW9uIHVuaG9vayh2Tm9kZSwgcGF0Y2gsIGluZGV4KSB7XG4gICAgaWYgKGlzVk5vZGUodk5vZGUpKSB7XG4gICAgICAgIGlmICh2Tm9kZS5ob29rcykge1xuICAgICAgICAgICAgcGF0Y2hbaW5kZXhdID0gYXBwZW5kUGF0Y2goXG4gICAgICAgICAgICAgICAgcGF0Y2hbaW5kZXhdLFxuICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goXG4gICAgICAgICAgICAgICAgICAgIFZQYXRjaC5QUk9QUyxcbiAgICAgICAgICAgICAgICAgICAgdk5vZGUsXG4gICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZEtleXModk5vZGUuaG9va3MpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZOb2RlLmRlc2NlbmRhbnRIb29rcyB8fCB2Tm9kZS5oYXNUaHVua3MpIHtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHZOb2RlLmNoaWxkcmVuXG4gICAgICAgICAgICB2YXIgbGVuID0gY2hpbGRyZW4ubGVuZ3RoXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICAgICAgICAgICAgICBpbmRleCArPSAxXG5cbiAgICAgICAgICAgICAgICB1bmhvb2soY2hpbGQsIHBhdGNoLCBpbmRleClcblxuICAgICAgICAgICAgICAgIGlmIChpc1ZOb2RlKGNoaWxkKSAmJiBjaGlsZC5jb3VudCkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCArPSBjaGlsZC5jb3VudFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUaHVuayh2Tm9kZSkpIHtcbiAgICAgICAgdGh1bmtzKHZOb2RlLCBudWxsLCBwYXRjaCwgaW5kZXgpXG4gICAgfVxufVxuXG5mdW5jdGlvbiB1bmRlZmluZWRLZXlzKG9iaikge1xuICAgIHZhciByZXN1bHQgPSB7fVxuXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgICByZXN1bHRba2V5XSA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbn1cblxuLy8gTGlzdCBkaWZmLCBuYWl2ZSBsZWZ0IHRvIHJpZ2h0IHJlb3JkZXJpbmdcbmZ1bmN0aW9uIHJlb3JkZXIoYUNoaWxkcmVuLCBiQ2hpbGRyZW4pIHtcbiAgICAvLyBPKE0pIHRpbWUsIE8oTSkgbWVtb3J5XG4gICAgdmFyIGJDaGlsZEluZGV4ID0ga2V5SW5kZXgoYkNoaWxkcmVuKVxuICAgIHZhciBiS2V5cyA9IGJDaGlsZEluZGV4LmtleXNcbiAgICB2YXIgYkZyZWUgPSBiQ2hpbGRJbmRleC5mcmVlXG5cbiAgICBpZiAoYkZyZWUubGVuZ3RoID09PSBiQ2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjaGlsZHJlbjogYkNoaWxkcmVuLFxuICAgICAgICAgICAgbW92ZXM6IG51bGxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE8oTikgdGltZSwgTyhOKSBtZW1vcnlcbiAgICB2YXIgYUNoaWxkSW5kZXggPSBrZXlJbmRleChhQ2hpbGRyZW4pXG4gICAgdmFyIGFLZXlzID0gYUNoaWxkSW5kZXgua2V5c1xuICAgIHZhciBhRnJlZSA9IGFDaGlsZEluZGV4LmZyZWVcblxuICAgIGlmIChhRnJlZS5sZW5ndGggPT09IGFDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBiQ2hpbGRyZW4sXG4gICAgICAgICAgICBtb3ZlczogbnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTyhNQVgoTiwgTSkpIG1lbW9yeVxuICAgIHZhciBuZXdDaGlsZHJlbiA9IFtdXG5cbiAgICB2YXIgZnJlZUluZGV4ID0gMFxuICAgIHZhciBmcmVlQ291bnQgPSBiRnJlZS5sZW5ndGhcbiAgICB2YXIgZGVsZXRlZEl0ZW1zID0gMFxuXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGEgYW5kIG1hdGNoIGEgbm9kZSBpbiBiXG4gICAgLy8gTyhOKSB0aW1lLFxuICAgIGZvciAodmFyIGkgPSAwIDsgaSA8IGFDaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYUl0ZW0gPSBhQ2hpbGRyZW5baV1cbiAgICAgICAgdmFyIGl0ZW1JbmRleFxuXG4gICAgICAgIGlmIChhSXRlbS5rZXkpIHtcbiAgICAgICAgICAgIGlmIChiS2V5cy5oYXNPd25Qcm9wZXJ0eShhSXRlbS5rZXkpKSB7XG4gICAgICAgICAgICAgICAgLy8gTWF0Y2ggdXAgdGhlIG9sZCBrZXlzXG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gYktleXNbYUl0ZW0ua2V5XVxuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2goYkNoaWxkcmVuW2l0ZW1JbmRleF0pXG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIG9sZCBrZXllZCBpdGVtc1xuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCA9IGkgLSBkZWxldGVkSXRlbXMrK1xuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2gobnVsbClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE1hdGNoIHRoZSBpdGVtIGluIGEgd2l0aCB0aGUgbmV4dCBmcmVlIGl0ZW0gaW4gYlxuICAgICAgICAgICAgaWYgKGZyZWVJbmRleCA8IGZyZWVDb3VudCkge1xuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCA9IGJGcmVlW2ZyZWVJbmRleCsrXVxuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2goYkNoaWxkcmVuW2l0ZW1JbmRleF0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBubyBmcmVlIGl0ZW1zIGluIGIgdG8gbWF0Y2ggd2l0aFxuICAgICAgICAgICAgICAgIC8vIHRoZSBmcmVlIGl0ZW1zIGluIGEsIHNvIHRoZSBleHRyYSBmcmVlIG5vZGVzXG4gICAgICAgICAgICAgICAgLy8gYXJlIGRlbGV0ZWQuXG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gaSAtIGRlbGV0ZWRJdGVtcysrXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChudWxsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxhc3RGcmVlSW5kZXggPSBmcmVlSW5kZXggPj0gYkZyZWUubGVuZ3RoID9cbiAgICAgICAgYkNoaWxkcmVuLmxlbmd0aCA6XG4gICAgICAgIGJGcmVlW2ZyZWVJbmRleF1cblxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBiIGFuZCBhcHBlbmQgYW55IG5ldyBrZXlzXG4gICAgLy8gTyhNKSB0aW1lXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBiQ2hpbGRyZW4ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG5ld0l0ZW0gPSBiQ2hpbGRyZW5bal1cblxuICAgICAgICBpZiAobmV3SXRlbS5rZXkpIHtcbiAgICAgICAgICAgIGlmICghYUtleXMuaGFzT3duUHJvcGVydHkobmV3SXRlbS5rZXkpKSB7XG4gICAgICAgICAgICAgICAgLy8gQWRkIGFueSBuZXcga2V5ZWQgaXRlbXNcbiAgICAgICAgICAgICAgICAvLyBXZSBhcmUgYWRkaW5nIG5ldyBpdGVtcyB0byB0aGUgZW5kIGFuZCB0aGVuIHNvcnRpbmcgdGhlbVxuICAgICAgICAgICAgICAgIC8vIGluIHBsYWNlLiBJbiBmdXR1cmUgd2Ugc2hvdWxkIGluc2VydCBuZXcgaXRlbXMgaW4gcGxhY2UuXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChuZXdJdGVtKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGogPj0gbGFzdEZyZWVJbmRleCkge1xuICAgICAgICAgICAgLy8gQWRkIGFueSBsZWZ0b3ZlciBub24ta2V5ZWQgaXRlbXNcbiAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2gobmV3SXRlbSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzaW11bGF0ZSA9IG5ld0NoaWxkcmVuLnNsaWNlKClcbiAgICB2YXIgc2ltdWxhdGVJbmRleCA9IDBcbiAgICB2YXIgcmVtb3ZlcyA9IFtdXG4gICAgdmFyIGluc2VydHMgPSBbXVxuICAgIHZhciBzaW11bGF0ZUl0ZW1cblxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgYkNoaWxkcmVuLmxlbmd0aDspIHtcbiAgICAgICAgdmFyIHdhbnRlZEl0ZW0gPSBiQ2hpbGRyZW5ba11cbiAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cblxuICAgICAgICAvLyByZW1vdmUgaXRlbXNcbiAgICAgICAgd2hpbGUgKHNpbXVsYXRlSXRlbSA9PT0gbnVsbCAmJiBzaW11bGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlbW92ZXMucHVzaChyZW1vdmUoc2ltdWxhdGUsIHNpbXVsYXRlSW5kZXgsIG51bGwpKVxuICAgICAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2ltdWxhdGVJdGVtIHx8IHNpbXVsYXRlSXRlbS5rZXkgIT09IHdhbnRlZEl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAvLyBpZiB3ZSBuZWVkIGEga2V5IGluIHRoaXMgcG9zaXRpb24uLi5cbiAgICAgICAgICAgIGlmICh3YW50ZWRJdGVtLmtleSkge1xuICAgICAgICAgICAgICAgIGlmIChzaW11bGF0ZUl0ZW0gJiYgc2ltdWxhdGVJdGVtLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiBhbiBpbnNlcnQgZG9lc24ndCBwdXQgdGhpcyBrZXkgaW4gcGxhY2UsIGl0IG5lZWRzIHRvIG1vdmVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJLZXlzW3NpbXVsYXRlSXRlbS5rZXldICE9PSBrICsgMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgc2ltdWxhdGVJdGVtLmtleSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHJlbW92ZSBkaWRuJ3QgcHV0IHRoZSB3YW50ZWQgaXRlbSBpbiBwbGFjZSwgd2UgbmVlZCB0byBpbnNlcnQgaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2ltdWxhdGVJdGVtIHx8IHNpbXVsYXRlSXRlbS5rZXkgIT09IHdhbnRlZEl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cy5wdXNoKHtrZXk6IHdhbnRlZEl0ZW0ua2V5LCB0bzoga30pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpdGVtcyBhcmUgbWF0Y2hpbmcsIHNvIHNraXAgYWhlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRlSW5kZXgrK1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cy5wdXNoKHtrZXk6IHdhbnRlZEl0ZW0ua2V5LCB0bzoga30pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydHMucHVzaCh7a2V5OiB3YW50ZWRJdGVtLmtleSwgdG86IGt9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBrKytcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGEga2V5IGluIHNpbXVsYXRlIGhhcyBubyBtYXRjaGluZyB3YW50ZWQga2V5LCByZW1vdmUgaXRcbiAgICAgICAgICAgIGVsc2UgaWYgKHNpbXVsYXRlSXRlbSAmJiBzaW11bGF0ZUl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgc2ltdWxhdGVJdGVtLmtleSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzaW11bGF0ZUluZGV4KytcbiAgICAgICAgICAgIGsrK1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIGFsbCB0aGUgcmVtYWluaW5nIG5vZGVzIGZyb20gc2ltdWxhdGVcbiAgICB3aGlsZShzaW11bGF0ZUluZGV4IDwgc2ltdWxhdGUubGVuZ3RoKSB7XG4gICAgICAgIHNpbXVsYXRlSXRlbSA9IHNpbXVsYXRlW3NpbXVsYXRlSW5kZXhdXG4gICAgICAgIHJlbW92ZXMucHVzaChyZW1vdmUoc2ltdWxhdGUsIHNpbXVsYXRlSW5kZXgsIHNpbXVsYXRlSXRlbSAmJiBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgb25seSBtb3ZlcyB3ZSBoYXZlIGFyZSBkZWxldGVzIHRoZW4gd2UgY2FuIGp1c3RcbiAgICAvLyBsZXQgdGhlIGRlbGV0ZSBwYXRjaCByZW1vdmUgdGhlc2UgaXRlbXMuXG4gICAgaWYgKHJlbW92ZXMubGVuZ3RoID09PSBkZWxldGVkSXRlbXMgJiYgIWluc2VydHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjaGlsZHJlbjogbmV3Q2hpbGRyZW4sXG4gICAgICAgICAgICBtb3ZlczogbnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2hpbGRyZW46IG5ld0NoaWxkcmVuLFxuICAgICAgICBtb3Zlczoge1xuICAgICAgICAgICAgcmVtb3ZlczogcmVtb3ZlcyxcbiAgICAgICAgICAgIGluc2VydHM6IGluc2VydHNcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlKGFyciwgaW5kZXgsIGtleSkge1xuICAgIGFyci5zcGxpY2UoaW5kZXgsIDEpXG5cbiAgICByZXR1cm4ge1xuICAgICAgICBmcm9tOiBpbmRleCxcbiAgICAgICAga2V5OiBrZXlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGtleUluZGV4KGNoaWxkcmVuKSB7XG4gICAgdmFyIGtleXMgPSB7fVxuICAgIHZhciBmcmVlID0gW11cbiAgICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldXG5cbiAgICAgICAgaWYgKGNoaWxkLmtleSkge1xuICAgICAgICAgICAga2V5c1tjaGlsZC5rZXldID0gaVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnJlZS5wdXNoKGkpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBrZXlzOiBrZXlzLCAgICAgLy8gQSBoYXNoIG9mIGtleSBuYW1lIHRvIGluZGV4XG4gICAgICAgIGZyZWU6IGZyZWUgICAgICAvLyBBbiBhcnJheSBvZiB1bmtleWVkIGl0ZW0gaW5kaWNlc1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYXBwZW5kUGF0Y2goYXBwbHksIHBhdGNoKSB7XG4gICAgaWYgKGFwcGx5KSB7XG4gICAgICAgIGlmIChpc0FycmF5KGFwcGx5KSkge1xuICAgICAgICAgICAgYXBwbHkucHVzaChwYXRjaClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcGx5ID0gW2FwcGx5LCBwYXRjaF1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhcHBseVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwYXRjaFxuICAgIH1cbn1cblxufSx7XCIuLi92bm9kZS9oYW5kbGUtdGh1bmtcIjozNixcIi4uL3Zub2RlL2lzLXRodW5rXCI6MzcsXCIuLi92bm9kZS9pcy12bm9kZVwiOjM5LFwiLi4vdm5vZGUvaXMtdnRleHRcIjo0MCxcIi4uL3Zub2RlL2lzLXdpZGdldFwiOjQxLFwiLi4vdm5vZGUvdnBhdGNoXCI6NDQsXCIuL2RpZmYtcHJvcHNcIjo0NixcIngtaXMtYXJyYXlcIjoyMX1dLDQ4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbihmdW5jdGlvbiAoZ2xvYmFsKXtcbnZhciB2ZG9tID0ge1xuICBWTm9kZTogcmVxdWlyZSgndmlydHVhbC1kb20vdm5vZGUvdm5vZGUnKSxcbiAgVlRleHQ6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL3Zub2RlL3Z0ZXh0JyksXG4gIGRpZmY6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL2RpZmYnKSxcbiAgcGF0Y2g6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL3BhdGNoJyksXG4gIGNyZWF0ZUVsZW1lbnQ6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL2NyZWF0ZS1lbGVtZW50JyksXG4gIHN2ZzogcmVxdWlyZShcInZpcnR1YWwtZG9tL3ZpcnR1YWwtaHlwZXJzY3JpcHQvc3ZnXCIpLFxufTtcblxuZ2xvYmFsLlZpcnR1YWxEb20gPSB2ZG9tO1xubW9kdWxlLmV4cG9ydHMgPSB2ZG9tO1xuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se1widmlydHVhbC1kb20vY3JlYXRlLWVsZW1lbnRcIjoxLFwidmlydHVhbC1kb20vZGlmZlwiOjIsXCJ2aXJ0dWFsLWRvbS9wYXRjaFwiOjIyLFwidmlydHVhbC1kb20vdmlydHVhbC1oeXBlcnNjcmlwdC9zdmdcIjozNSxcInZpcnR1YWwtZG9tL3Zub2RlL3Zub2RlXCI6NDMsXCJ2aXJ0dWFsLWRvbS92bm9kZS92dGV4dFwiOjQ1fV19LHt9LFs0OF0pKDQ4KVxufSk7XG4iLCJmdW5jdGlvbiBWZG9tVGh1bmsoZm4sIGFyZ3MsIGtleSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBWZG9tVGh1bmspKSB7XG4gICAgICAgIHJldHVybiBuZXcgVmRvbVRodW5rKGZuLCBhcmdzLCBrZXkpO1xuICAgIH1cblxuICAgIGlmIChrZXkpIHtcbiAgICAgIHRoaXMua2V5ID0ga2V5O1xuICAgIH1cblxuICAgIHRoaXMuZm4gPSBmbjtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xufTtcblxuam9vX2dsb2JhbF9vYmplY3QuVmRvbVRodW5rID0gVmRvbVRodW5rO1xuXG5WZG9tVGh1bmsucHJvdG90eXBlLnR5cGUgPSAnVGh1bmsnO1xuVmRvbVRodW5rLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAocHJldikge1xuICBpZiAocHJldiAmJiB0aGlzLmFyZ3MgPT09IHByZXYuYXJncyAmJiB0aGlzLmZuID09PSBwcmV2LmZuKSB7XG4gICAgcmV0dXJuIHByZXYudm5vZGU7XG4gIH1cblxuICByZXR1cm4gdGhpcy5mbih0aGlzLmFyZ3MpO1xufTtcblxuXG4iLCIvLyBVc2VkIGJ5IHdvcmthcm91bmQgZm9yIGlucHV0IGVsZW1lbnQgdmFsdWUgZmllbGRcbi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9NYXR0LUVzY2gvdmlydHVhbC1kb20vYmxvYi85NDdlY2Y5MmI2N2QyNWJiNjkzYTBmNjI1ZmE4ZTkwYzA5OTg4N2Q1L3ZpcnR1YWwtaHlwZXJzY3JpcHQvaG9va3Mvc29mdC1zZXQtaG9vay5qc1xuXG5qb29fZ2xvYmFsX29iamVjdC5Tb2Z0U2V0SG9vayA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNvZnRTZXRIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IFNvZnRTZXRIb29rKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59O1xuXG5qb29fZ2xvYmFsX29iamVjdC5Tb2Z0U2V0SG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICBpZiAobm9kZVtwcm9wZXJ0eU5hbWVdICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgIG5vZGVbcHJvcGVydHlOYW1lXSA9IHRoaXMudmFsdWU7XG4gICAgfVxufTtcblxuXG52YXIgR2VuZXJpY0hvb2sgPSBmdW5jdGlvbiAoaW5pdCwgdXBkYXRlLCBkZXN0cm95LCBpZCwgZXh0cmEpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgR2VuZXJpY0hvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgR2VuZXJpY0hvb2soaW5pdCwgdXBkYXRlLCBkZXN0cm95LCBpZCwgZXh0cmEpO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdCA9IGluaXQ7XG4gICAgdGhpcy51cGRhdGUgPSB1cGRhdGU7XG4gICAgdGhpcy5kZXN0cm95ID0gZGVzdHJveTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5leHRyYSA9IGV4dHJhO1xufTtcblxudmFyIGhvb2tfc3RhdGVfa2V5ID0gXCJ2ZG9tX2hvb2tfc3RhdGVfa2V5XCI7XG5cbmlmICh0aGlzLlN5bWJvbCkge1xuICAgIGhvb2tfc3RhdGVfa2V5ID0gU3ltYm9sKGhvb2tfc3RhdGVfa2V5KTtcbn1cblxuR2VuZXJpY0hvb2sud3JpdGVfc3RhdGUgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIHN0YXRlKSB7XG4gICAgaWYgKCFub2RlW2hvb2tfc3RhdGVfa2V5XSkge1xuICAgICAgICBub2RlW2hvb2tfc3RhdGVfa2V5XSA9IHt9O1xuICAgIH1cbiAgICBub2RlW2hvb2tfc3RhdGVfa2V5XVtwcm9wTmFtZV0gPSBzdGF0ZTtcbn1cblxuR2VuZXJpY0hvb2sucmVhZF9zdGF0ZSA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSkge1xuICAgIHJldHVybiBub2RlW2hvb2tfc3RhdGVfa2V5XVtwcm9wTmFtZV07XG59XG5cbkdlbmVyaWNIb29rLnJlbW92ZV9zdGF0ZSA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSkge1xuICAgIGRlbGV0ZSBub2RlW2hvb2tfc3RhdGVfa2V5XVtwcm9wTmFtZV07XG59XG5cbkdlbmVyaWNIb29rLmNhblRyYW5zaXRpb24gPSBmdW5jdGlvbiAoZnJvbSwgdG8pIHtcbiAgICByZXR1cm4gZnJvbSBpbnN0YW5jZW9mIHRoaXMgJiYgdG8gaW5zdGFuY2VvZiB0aGlzICYmIGZyb20uaWQgPT09IHRvLmlkICYmIHRvLnVwZGF0ZTtcbn07XG5cbkdlbmVyaWNIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lLCBwcmV2KSB7XG4gICAgaWYgKEdlbmVyaWNIb29rLmNhblRyYW5zaXRpb24ocHJldiwgdGhpcykpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gR2VuZXJpY0hvb2sucmVhZF9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgICAgIHN0YXRlID0gdGhpcy51cGRhdGUoc3RhdGUsIG5vZGUpO1xuICAgICAgICBHZW5lcmljSG9vay53cml0ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSwgc3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuaW5pdChub2RlKTtcbiAgICAgICAgR2VuZXJpY0hvb2sud3JpdGVfc3RhdGUobm9kZSwgcHJvcE5hbWUsIHN0YXRlKTtcbiAgICB9XG59O1xuXG5HZW5lcmljSG9vay5wcm90b3R5cGUudW5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lLCBuZXh0KSB7XG4gICAgaWYgKEdlbmVyaWNIb29rLmNhblRyYW5zaXRpb24odGhpcywgbmV4dCkpIHtcbiAgICAgICAgLy8gRG8gbm90aGluZywgdGhlIGltcGVuZGluZyBbaG9va10gd2lsbCBoYW5kbGUgdGhlIGNhbGwgdG8gdXBkYXRlLlxuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IEdlbmVyaWNIb29rLnJlYWRfc3RhdGUobm9kZSwgcHJvcE5hbWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3koc3RhdGUsIG5vZGUpO1xuICAgICAgICBHZW5lcmljSG9vay5yZW1vdmVfc3RhdGUobm9kZSwgcHJvcE5hbWUpO1xuICAgIH1cbn07XG5cbmpvb19nbG9iYWxfb2JqZWN0LkdlbmVyaWNIb29rID0gR2VuZXJpY0hvb2s7XG4iLCIvL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudCBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnQodikge1xuICB2ID0gdiAtICgodiA+Pj4gMSkgJiAweDU1NTU1NTU1KTtcbiAgdiA9ICh2ICYgMHgzMzMzMzMzMykgKyAoKHYgPj4+IDIpICYgMHgzMzMzMzMzMyk7XG4gIHJldHVybiAoKHYgKyAodiA+Pj4gNCkgJiAweEYwRjBGMEYpICogMHgxMDEwMTAxKSA+Pj4gMjQ7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIGNvbnN0XG5mdW5jdGlvbiBCYXNlX2NsZWFyX2NhbWxfYmFja3RyYWNlX3Bvcyh4KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4biBjb25zdFxuZnVuY3Rpb24gQmFzZV9jYW1sX2V4bl9pc19tb3N0X3JlY2VudF9leG4oeCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHogY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50MzJfY2x6KHgpIHtcbiAgdmFyIG4gPSAzMjtcbiAgdmFyIHk7XG4gIHkgPSB4ID4+MTY7IGlmICh5ICE9IDApIHsgbiA9IG4gLTE2OyB4ID0geTsgfVxuICB5ID0geCA+PiA4OyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0gODsgeCA9IHk7IH1cbiAgeSA9IHggPj4gNDsgaWYgKHkgIT0gMCkgeyBuID0gbiAtIDQ7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDI7IGlmICh5ICE9IDApIHsgbiA9IG4gLSAyOyB4ID0geTsgfVxuICB5ID0geCA+PiAxOyBpZiAoeSAhPSAwKSByZXR1cm4gbiAtIDI7XG4gIHJldHVybiBuIC0geDtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NselxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfY2x6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY2x6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2NseiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2Nseih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2Nseih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDY0X2NseiBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCwgY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX2ludDY0X3RvX2ludDMyXG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDY0X2Nseih4KSB7XG4gIHZhciBuID0gNjQ7XG4gIHZhciB5O1xuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAzMik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0zMjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMTYpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtMTY7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDgpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtIDg7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDQpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtIDQ7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDIpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtIDI7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDEpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgcmV0dXJuIG4gLSAyO1xuICByZXR1cm4gbiAtIGNhbWxfaW50NjRfdG9faW50MzIoeCk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY3R6IGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eih4KSB7XG4gIGlmICh4ID09PSAwKSB7IHJldHVybiAzMjsgfVxuICB2YXIgbiA9IDE7XG4gIGlmICggKHggJiAweDAwMDBGRkZGKSA9PT0gMCkgeyBuID0gbiArIDE2OyB4ID0geCA+PiAxNjsgfVxuICBpZiAoICh4ICYgMHgwMDAwMDBGRikgPT09IDApIHsgbiA9IG4gKyAgODsgeCA9IHggPj4gIDg7IH1cbiAgaWYgKCAoeCAmIDB4MDAwMDAwMEYpID09PSAwKSB7IG4gPSBuICsgIDQ7IHggPSB4ID4+ICA0OyB9XG4gIGlmICggKHggJiAweDAwMDAwMDAzKSA9PT0gMCkgeyBuID0gbiArICAyOyB4ID0geCA+PiAgMjsgfVxuICByZXR1cm4gbiAtICh4ICYgMSk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X2N0eiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X2N0eih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY3R6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHogY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQsIGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9pbnQ2NF90b19pbnQzMlxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hbmQsIGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDY0X2N0eih4KSB7XG4gIGlmIChjYW1sX2ludDY0X2lzX3plcm8oeCkpIHsgcmV0dXJuIDY0OyB9XG4gIHZhciBuID0gMTtcbiAgZnVuY3Rpb24gaXNfemVybyAoeCkgICAgeyByZXR1cm4gY2FtbF9pbnQ2NF9pc196ZXJvKHgpOyB9XG4gIGZ1bmN0aW9uIGxhbmQgKHgseSkgICAgIHsgcmV0dXJuIGNhbWxfaW50NjRfYW5kKHgsIHkpOyB9XG4gIGZ1bmN0aW9uIHNtYWxsX2ludDY0KHgpIHsgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKHgsMCwwKTsgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDB4RkZGRkZGLCAweDAwMDBGRiwgMHgwMDAwKSkpKSB7XG4gICAgbiA9IG4gKyAzMjsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMzIpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMEZGRkYpKSkpIHtcbiAgICBuID0gbiArIDE2OyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAxNik7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDBGRikpKSkge1xuICAgIG4gPSBuICsgIDg7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDgpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwMEYpKSkpIHtcbiAgICBuID0gbiArICA0OyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCA0KTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMDAzKSkpKSB7XG4gICAgbiA9IG4gKyAgMjsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMik7XG4gIH1cbiAgcmV0dXJuIG4gLSAoY2FtbF9pbnQ2NF90b19pbnQzMihjYW1sX2ludDY0X2FuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDAwMSkpKSk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViIGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YihiYXNlLCBleHBvbmVudCkge1xuICB2YXIgb25lID0gMTtcbiAgdmFyIG11bCA9IFtvbmUsIGJhc2UsIG9uZSwgb25lXTtcbiAgdmFyIHJlcyA9IG9uZTtcbiAgd2hpbGUgKCFleHBvbmVudD09MCkge1xuICAgIG11bFsxXSA9IChtdWxbMV0gKiBtdWxbM10pIHwgMDtcbiAgICBtdWxbMl0gPSAobXVsWzFdICogbXVsWzFdKSB8IDA7XG4gICAgbXVsWzNdID0gKG11bFsyXSAqIG11bFsxXSkgfCAwO1xuICAgIHJlcyA9IChyZXMgKiBtdWxbZXhwb25lbnQgJiAzXSkgfCAwO1xuICAgIGV4cG9uZW50ID0gZXhwb25lbnQgPj4gMjtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViKGJhc2UsIGV4cG9uZW50KSB7XG4gIHZhciBvbmUgPSBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSgxLDApO1xuICB2YXIgbXVsID0gW29uZSwgYmFzZSwgb25lLCBvbmVdO1xuICB2YXIgcmVzID0gb25lO1xuICB3aGlsZSAoIWNhbWxfaW50NjRfaXNfemVybyhleHBvbmVudCkpIHtcbiAgICBtdWxbMV0gPSBjYW1sX2ludDY0X211bChtdWxbMV0sIG11bFszXSk7XG4gICAgbXVsWzJdID0gY2FtbF9pbnQ2NF9tdWwobXVsWzFdLCBtdWxbMV0pO1xuICAgIG11bFszXSA9IGNhbWxfaW50NjRfbXVsKG11bFsyXSwgbXVsWzFdKTtcbiAgICByZXMgPSBjYW1sX2ludDY0X211bChyZXMsIG11bFtjYW1sX2ludDY0X2xvMzIoZXhwb25lbnQpICYgM10pO1xuICAgIGV4cG9uZW50ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZChleHBvbmVudCwgMik7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogQmFzZV9oYXNoX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hcbmZ1bmN0aW9uIEJhc2VfaGFzaF9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9oYXNoKDEsMSwwLHMpXG59XG4vL1Byb3ZpZGVzOiBCYXNlX2hhc2hfZG91YmxlIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hcbmZ1bmN0aW9uIEJhc2VfaGFzaF9kb3VibGUoZCkge1xuICByZXR1cm4gY2FtbF9oYXNoKDEsMSwwLGQpO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2FtX3Rlc3RpbmcgY29uc3Rcbi8vV2Vha2RlZlxuZnVuY3Rpb24gQmFzZV9hbV90ZXN0aW5nKHgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3NlbF92YWx1ZVxuZnVuY3Rpb24gY2FtbF9jc2VsX3ZhbHVlKHZfY29uZCwgdl90cnVlLCB2X2ZhbHNlKSB7XG4gICAgaWYgKHZfY29uZClcbiAgICAgICAgcmV0dXJuIHZfdHJ1ZTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB2X2ZhbHNlO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX3Vuc2FmZV9jcmVhdGVfbG9jYWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzXG5mdW5jdGlvbiBCYXNlX3Vuc2FmZV9jcmVhdGVfbG9jYWxfYnl0ZXModl9sZW4pIHtcbiAgICAvLyBUaGlzIGRvZXMgYSByZWR1bmRhbnQgYm91bmRzIGNoZWNrIGFuZCAoc2luY2UgdGhpcyBpc1xuICAgIC8vIGphdmFzY3JpcHQpIGRvZXNuJ3QgYWxsb2NhdGUgbG9jYWxseSwgYnV0IHRoYXQncyBmaW5lLlxuICAgIHJldHVybiBjYW1sX2NyZWF0ZV9ieXRlcyh2X2xlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9sb2NhbF92ZWN0XG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfdmVjdFxuZnVuY3Rpb24gY2FtbF9tYWtlX2xvY2FsX3ZlY3Qodl9sZW4sIHZfZWx0KSB7XG4gICAgLy8gSW4gamF2YXNjcmlwdCB0aGVyZSdzIG5vIGxvY2FsIGFsbG9jYXRpb24uXG4gICAgcmV0dXJuIGNhbWxfbWFrZV92ZWN0ICh2X2xlbiwgdl9lbHQpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF91cGRhdGVfZHVtbXlcbmZ1bmN0aW9uIGNhbWxfdXBkYXRlX2R1bW15ICh4LCB5KSB7XG4gIGlmKCB5LmZ1biApIHsgeC5mdW4gPSB5LmZ1bjsgcmV0dXJuIDA7IH1cbiAgaWYoIHR5cGVvZiB5PT09XCJmdW5jdGlvblwiICkgeyB4LmZ1biA9IHk7IHJldHVybiAwOyB9XG4gIHZhciBpID0geS5sZW5ndGg7IHdoaWxlIChpLS0pIHhbaV0gPSB5W2ldOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19kdW1teV9pbmZpeFxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9hbGxvY19kdW1teV9pbmZpeCAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBmICh4KSB7IHJldHVybiBjYW1sX2NhbGxfZ2VuKGYuZnVuLCBbeF0pIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfaXNfYmxvY2sgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfYmxvY2sgKHgpIHsgcmV0dXJuICsoeCBpbnN0YW5jZW9mIEFycmF5KTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfb2JqX3RhZyAoeCkge1xuICBpZiAoKHggaW5zdGFuY2VvZiBBcnJheSkgJiYgeFswXSA9PSAoeFswXSA+Pj4gMCkpXG4gICAgcmV0dXJuIHhbMF1cbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh4KSlcbiAgICByZXR1cm4gMjUyXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoKHggaW5zdGFuY2VvZiBGdW5jdGlvbikgfHwgdHlwZW9mIHggPT0gXCJmdW5jdGlvblwiKVxuICAgIHJldHVybiAyNDdcbiAgZWxzZSBpZiAoeCAmJiB4LmNhbWxfY3VzdG9tKVxuICAgIHJldHVybiAyNTVcbiAgZWxzZVxuICAgIHJldHVybiAxMDAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF90YWcgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3RhZyAoeCwgdGFnKSB7IHhbMF0gPSB0YWc7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX29ial9ibG9jayBjb25zdCAoY29uc3QsY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9ibG9jayAodGFnLCBzaXplKSB7XG4gIHZhciBvID0gbmV3IEFycmF5KHNpemUrMSk7XG4gIG9bMF09dGFnO1xuICBmb3IgKHZhciBpID0gMTsgaSA8PSBzaXplOyBpKyspIG9baV0gPSAwO1xuICByZXR1cm4gbztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfd2l0aF90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3dpdGhfdGFnKHRhZyx4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gdGFnO1xuICBmb3IodmFyIGkgPSAxOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9kdXAgbXV0YWJsZSAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfb2JqX2R1cCAoeCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdHJ1bmNhdGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX29ial90cnVuY2F0ZSAoeCwgcykge1xuICBpZiAoczw9MCB8fCBzICsgMSA+IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJPYmoudHJ1bmNhdGVcIik7XG4gIGlmICh4Lmxlbmd0aCAhPSBzICsgMSkgeC5sZW5ndGggPSBzICsgMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX21ha2VfZm9yd2FyZFxuZnVuY3Rpb24gY2FtbF9vYmpfbWFrZV9mb3J3YXJkIChiLHYpIHtcbiAgYlswXT0yNTA7XG4gIGJbMV09djtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcFxuZnVuY3Rpb24gY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcCh4LGksb2xkLG4pe1xuICBpZih4W2krMV0gPT0gb2xkKSB7XG4gICAgeFtpKzFdID0gbjtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19zaGFyZWRcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX3NoYXJlZCh4KXtcbiAgcmV0dXJuIDFcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X21ha2VfZm9yd2FyZCBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQgKHYpIHsgcmV0dXJuIFsyNTAsIHZdOyB9XG5cbi8vLy8vLy8vLy8vLy8gQ2FtbGludGVybmFsT09cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgY29uc3RcbnZhciBjYW1sX21ldGhvZF9jYWNoZSA9IFtdO1xuZnVuY3Rpb24gY2FtbF9nZXRfcHVibGljX21ldGhvZCAob2JqLCB0YWcsIGNhY2hlaWQpIHtcbiAgdmFyIG1ldGhzID0gb2JqWzFdO1xuICB2YXIgb2ZzID0gY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF07XG4gIGlmIChvZnMgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyYXkgaXMgbm90IHNwYXJzZVxuICAgIGZvciAodmFyIGkgPSBjYW1sX21ldGhvZF9jYWNoZS5sZW5ndGg7IGkgPCBjYWNoZWlkOyBpKyspXG4gICAgICBjYW1sX21ldGhvZF9jYWNoZVtpXSA9IDA7XG4gIH0gZWxzZSBpZiAobWV0aHNbb2ZzXSA9PT0gdGFnKSB7XG4gICAgcmV0dXJuIG1ldGhzW29mcyAtIDFdO1xuICB9XG4gIHZhciBsaSA9IDMsIGhpID0gbWV0aHNbMV0gKiAyICsgMSwgbWk7XG4gIHdoaWxlIChsaSA8IGhpKSB7XG4gICAgbWkgPSAoKGxpK2hpKSA+PiAxKSB8IDE7XG4gICAgaWYgKHRhZyA8IG1ldGhzW21pKzFdKSBoaSA9IG1pLTI7XG4gICAgZWxzZSBsaSA9IG1pO1xuICB9XG4gIGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdID0gbGkgKyAxO1xuICAvKiByZXR1cm4gMCBpZiB0YWcgaXMgbm90IHRoZXJlICovXG4gIHJldHVybiAodGFnID09IG1ldGhzW2xpKzFdID8gbWV0aHNbbGldIDogMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb29fbGFzdF9pZFxudmFyIGNhbWxfb29fbGFzdF9pZCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X29vX2lkXG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfc2V0X29vX2lkIChiKSB7XG4gIGJbMl09Y2FtbF9vb19sYXN0X2lkKys7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXNoX29vX2lkIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfZnJlc2hfb29faWQoKSB7XG4gIHJldHVybiBjYW1sX29vX2xhc3RfaWQrKztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9yYXdfZmllbGQobyxpKSB7IHJldHVybiBvW2krMV0gfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkKG8saSx2KSB7IHJldHVybiBvW2krMV0gPSB2IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXG5mdW5jdGlvbiBjYW1sX29ial9yZWFjaGFibGVfd29yZHMobykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9hZGRfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX29ial9hZGRfb2Zmc2V0KHYsb2Zmc2V0KSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJPYmouYWRkX29mZnNldCBpcyBub3Qgc3VwcG9ydGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX29ial91cGRhdGVfdGFnKGIsbyxuKSB7XG4gICAgaWYoYlswXT09bykgeyBiWzBdID0gbjsgcmV0dXJuIDEgfVxuICAgIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZ1xuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nKG8pIHtcbiAgaWYgKChvIGluc3RhbmNlb2YgQXJyYXkpICYmIG9bMF0gPT0gKG9bMF0gPj4+IDApICYmXG4gICAgICBjYW1sX29ial91cGRhdGVfdGFnKG8sIDI0NiwgMjQ0KSkge1xuICAgIHJldHVybiAwO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZFxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuICBmdW5jdGlvbiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmQobykge1xuICBjYW1sX29ial91cGRhdGVfdGFnKG8sMjQ0LDI1MCk7XG4gIHJldHVybiAwOyAvLyB1bml0XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenlcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZXNldF90b19sYXp5KG8pIHtcbiAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLDI0NCwyNDYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3JlYWRfcmVzdWx0XG4vL1JlcXVpcmVzOiBjYW1sX29ial90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZWFkX3Jlc3VsdChvKSB7XG4gIHJldHVybiAoY2FtbF9vYmpfdGFnKG8pID09IDI1MCk/b1sxXTpvO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA8IDVcbmZ1bmN0aW9uIGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbi8vVmVyc2lvbjogPj0gNVxuZnVuY3Rpb24gY2FtbF9pc19jb250aW51YXRpb25fdGFnKHQpIHtcbiAgcmV0dXJuICh0ID09IDI0NSkgPyAxIDogMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2ludCBjb25zdCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcsIGNhbWxfc3RyX3JlcGVhdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfaW50KGZtdCwgaSkge1xuICBpZiAoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpID09IFwiJWRcIikgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIitpKTtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoaSA8IDApIHsgaWYgKGYuc2lnbmVkY29udikgeyBmLnNpZ24gPSAtMTsgaSA9IC1pOyB9IGVsc2UgaSA+Pj49IDA7IH1cbiAgdmFyIHMgPSBpLnRvU3RyaW5nKGYuYmFzZSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gcy5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBzID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgcztcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocykge1xuICB2YXIgaSA9IDAsIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSwgYmFzZSA9IDEwLCBzaWduID0gMTtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKSkge1xuICAgIGNhc2UgNDU6IGkrKzsgc2lnbiA9IC0xOyBicmVhaztcbiAgICBjYXNlIDQzOiBpKys7IHNpZ24gPSAxOyBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGkgKyAxIDwgbGVuICYmIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkgPT0gNDgpXG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKSkge1xuICAgIGNhc2UgMTIwOiBjYXNlIDg4OiBiYXNlID0gMTY7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTE6IGNhc2UgNzk6IGJhc2UgPSAgODsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlICA5ODogY2FzZSA2NjogYmFzZSA9ICAyOyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTE3OiBjYXNlIDg1OiBpICs9IDI7IGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIFtpLCBzaWduLCBiYXNlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9kaWdpdFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9kaWdpdChjKSB7XG4gIGlmIChjID49IDQ4ICYmIGMgPD0gNTcpICByZXR1cm4gYyAtIDQ4O1xuICBpZiAoYyA+PSA2NSAmJiBjIDw9IDkwKSAgcmV0dXJuIGMgLSA1NTtcbiAgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMjIpIHJldHVybiBjIC0gODc7XG4gIHJldHVybiAtMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX3BhcnNlX2RpZ2l0LCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2ludF9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIHRocmVzaG9sZCA9IC0xID4+PiAwO1xuICB2YXIgYyA9IChpIDwgbGVuKT9jYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpOjA7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBkO1xuICBmb3IgKGkrKztpPGxlbjtpKyspIHtcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgcmVzID0gYmFzZSAqIHJlcyArIGQ7XG4gICAgaWYgKHJlcyA+IHRocmVzaG9sZCkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgLy8gRm9yIGJhc2UgZGlmZmVyZW50IGZyb20gMTAsIHdlIGV4cGVjdCBhbiB1bnNpZ25lZCByZXByZXNlbnRhdGlvbixcbiAgLy8gaGVuY2UgYW55IHZhbHVlIG9mICdyZXMnIChsZXNzIHRoYW4gJ3RocmVzaG9sZCcpIGlzIGFjY2VwdGFibGUuXG4gIC8vIEJ1dCB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCBiYWNrIHRvIGEgc2lnbmVkIGludGVnZXIuXG4gIHJlcyA9IHNpZ24gKiByZXM7XG4gIGlmICgoYmFzZSA9PSAxMCkgJiYgKChyZXMgfCAwKSAhPSByZXMpKVxuICAgIC8qIFNpZ25lZCByZXByZXNlbnRhdGlvbiBleHBlY3RlZCwgYWxsb3cgLTJeKG5iaXRzLTEpIHRvIDJeKG5iaXRzLTEpIC0gMSAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tdWwgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbXVsKGEsYil7XG4gIHJldHVybiBNYXRoLmltdWwoYSxiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kaXZcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfZGl2KHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4gKHgveSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb2Rcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfbW9kKHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4geCV5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Jzd2FwMTZcbmZ1bmN0aW9uIGNhbWxfYnN3YXAxNih4KSB7XG4gIHJldHVybiAoKCgoeCAmIDB4MDBGRikgPDwgOCkgfFxuICAgICAgICAgICAoKHggJiAweEZGMDApID4+IDgpKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Jzd2FwXG5mdW5jdGlvbiBjYW1sX2ludDMyX2Jzd2FwKHgpIHtcbiAgcmV0dXJuICgoKHggJiAweDAwMDAwMEZGKSA8PCAyNCkgfFxuICAgICAgICAgICgoeCAmIDB4MDAwMEZGMDApIDw8IDgpIHxcbiAgICAgICAgICAoKHggJiAweDAwRkYwMDAwKSA+Pj4gOCkgfFxuICAgICAgICAgICgoeCAmIDB4RkYwMDAwMDApID4+PiAyNCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9ic3dhcFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9ic3dhcCh4KSB7XG4gIHZhciB5ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh4KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW3lbN10sIHlbNl0sIHlbNV0sIHlbNF0sIHlbM10sIHlbMl0sIHlbMV0sIHlbMF1dKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSGFzaHRibFxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF91bml2X3BhcmFtIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9WZXJzaW9uOiA8IDQuMTJcbmZ1bmN0aW9uIGNhbWxfaGFzaF91bml2X3BhcmFtIChjb3VudCwgbGltaXQsIG9iaikge1xuICB2YXIgaGFzaF9hY2N1ID0gMDtcbiAgZnVuY3Rpb24gaGFzaF9hdXggKG9iaikge1xuICAgIGxpbWl0IC0tO1xuICAgIGlmIChjb3VudCA8IDAgfHwgbGltaXQgPCAwKSByZXR1cm47XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5ICYmIG9ialswXSA9PT0gKG9ialswXXwwKSkge1xuICAgICAgc3dpdGNoIChvYmpbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9ialsyXSkgfCAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIGxpbWl0Kys7IGhhc2hfYXV4KG9iaik7IGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIG9ialswXSkgfCAwO1xuICAgICAgICBmb3IgKHZhciBpID0gb2JqLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIGhhc2hfYXV4IChvYmpbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhvYmopKSB7XG4gICAgICBjb3VudCAtLTtcbiAgICAgIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KG9iaik7XG4gICAgICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBmb3IgKHZhciBiID0gY29udGVudCwgbCA9IGIubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICAgIH0gZWxzZSB7IC8qIEFSUkFZICovXG4gICAgICAgIGZvciAodmFyIGEgPSBjb250ZW50LCBsID0gYS5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGFbaV0pIHwgMDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKG9iaikpIHtcbiAgICAgIHZhciBqc2J5dGVzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvYmopO1xuICAgICAgZm9yICh2YXIgYiA9IGpzYnl0ZXMsIGwgPSBqc2J5dGVzLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZm9yICh2YXIgYiA9IG9iaiwgbCA9IG9iai5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gKG9ianwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgY291bnQgLS07XG4gICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmopIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gK29iaikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGNvdW50LS07XG4gICAgICB2YXIgcCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAob2JqKSk7XG4gICAgICBmb3IgKHZhciBpID0gNzsgaSA+PSAwOyBpLS0pIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIHBbaV0pIHwgMDtcbiAgICB9IGVsc2UgaWYob2JqICYmIG9iai5jYW1sX2N1c3RvbSkge1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaCA9IGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gob2JqKSB8IDA7XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIGgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaGFzaF9hdXggKG9iaik7XG4gIHJldHVybiBoYXNoX2FjY3UgJiAweDNGRkZGRkZGO1xufVxuXG4vL2Z1bmN0aW9uIFJPVEwzMih4LG4pIHsgcmV0dXJuICgoeCA8PCBuKSB8ICh4ID4+PiAoMzItbikpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludChoLGQpIHtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4Y2M5ZTJkNTF8MCk7XG4gIGQgPSAoKGQgPDwgMTUpIHwgKGQgPj4+ICgzMi0xNSkpKTsgLy8gUk9UTDMyKGQsIDE1KTtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4MWI4NzM1OTMpO1xuICBoIF49IGQ7XG4gIGggPSAoKGggPDwgMTMpIHwgKGggPj4+ICgzMi0xMykpKTsgICAvL1JPVEwzMihoLCAxMyk7XG4gIHJldHVybiAoKChoICsgKGggPDwgMikpfDApICsgKDB4ZTY1NDZiNjR8MCkpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpIHtcbiAgaCBePSBoID4+PiAxNjtcbiAgaCA9IGNhbWxfbXVsIChoLCAweDg1ZWJjYTZifDApO1xuICBoIF49IGggPj4+IDEzO1xuICBoID0gY2FtbF9tdWwgKGgsIDB4YzJiMmFlMzV8MCk7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaGFzaF9taXhfaW50NjRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQgKGgsIHYwKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2ludDY0KGgsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAodjApKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2xvMzIsIGNhbWxfaW50NjRfaGkzMlxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQ2NCAoaCwgdikge1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9sbzMyKHYpKTtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfaGkzMih2KSk7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHMuY2hhckNvZGVBdChpKVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgOClcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzIpIDw8IDE2KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMykgPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHMuY2hhckNvZGVBdChpKzEpIDw8IDg7XG4gIGNhc2UgMTpcbiAgICB3IHw9IHMuY2hhckNvZGVBdChpKTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzW2ldXG4gICAgICB8IChzW2krMV0gPDwgOClcbiAgICAgIHwgKHNbaSsyXSA8PCAxNilcbiAgICAgIHwgKHNbaSszXSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHNbaSsyXSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHNbaSsxXSA8PCA4O1xuICBjYXNlIDE6IHcgfD0gc1tpXTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdikge1xuICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudCh2KTtcbiAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjb250ZW50KVxuICBlbHNlIC8qIEFSUkFZICovXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIGNvbnRlbnQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLCB2KSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZyh2KSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9mbG9hdCwgY2FtbF9oYXNoX21peF9zdHJpbmcsIGNhbWxfaGFzaF9taXhfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfaGFzaCAoY291bnQsIGxpbWl0LCBzZWVkLCBvYmopIHtcbiAgdmFyIHF1ZXVlLCByZCwgd3IsIHN6LCBudW0sIGgsIHYsIGksIGxlbjtcbiAgc3ogPSBsaW1pdDtcbiAgaWYgKHN6IDwgMCB8fCBzeiA+IDI1Nikgc3ogPSAyNTY7XG4gIG51bSA9IGNvdW50O1xuICBoID0gc2VlZDtcbiAgcXVldWUgPSBbb2JqXTsgcmQgPSAwOyB3ciA9IDE7XG4gIHdoaWxlIChyZCA8IHdyICYmIG51bSA+IDApIHtcbiAgICB2ID0gcXVldWVbcmQrK107XG4gICAgaWYgKHYgJiYgdi5jYW1sX2N1c3RvbSl7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGhoID0gY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2godik7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludCAoaCwgaGgpO1xuICAgICAgICBudW0gLS07XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgc3dpdGNoICh2WzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2WzJdKTtcbiAgICAgICAgbnVtLS07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgcXVldWVbLS1yZF0gPSB2WzFdO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh2WzBdKSkge1xuICAgICAgICAgIC8qIEFsbCBjb250aW51YXRpb25zIGhhc2ggdG8gdGhlIHNhbWUgdmFsdWUsXG4gICAgICAgICAgICAgc2luY2Ugd2UgaGF2ZSBubyBpZGVhIGhvdyB0byBkaXN0aW5ndWlzaCB0aGVtLiAqL1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0YWcgPSAoKHYubGVuZ3RoIC0gMSkgPDwgMTApIHwgdlswXTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHRhZyk7XG4gICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICBpZiAod3IgPj0gc3opIGJyZWFrO1xuICAgICAgICAgIHF1ZXVlW3dyKytdID0gdltpXTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodiA9PT0gKHZ8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2K3YrMSk7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCx2KTtcbiAgICAgIG51bS0tO1xuICAgIH1cbiAgfVxuICBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsLCBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfaGFzaChoLCB2KXtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpO1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBqc29vX2Zsb29yX2xvZzJcbnZhciBsb2cyX29rID0gTWF0aC5sb2cyICYmIE1hdGgubG9nMigxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNykgPT0gMTAyMFxuZnVuY3Rpb24ganNvb19mbG9vcl9sb2cyKHgpIHtcbiAgaWYobG9nMl9vaykgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5sb2cyKHgpKVxuICB2YXIgaSA9IDA7XG4gIGlmICh4ID09IDApIHJldHVybiAtSW5maW5pdHk7XG4gIGlmKHg+PTEpIHt3aGlsZSAoeD49Mikge3gvPTI7IGkrK30gfVxuICBlbHNlIHt3aGlsZSAoeCA8IDEpIHt4Kj0yOyBpLS19IH07XG4gIHJldHVybiBpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMiwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAoeCkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDEsIDAsIDB4N2ZmMCk7XG4gICAgaWYgKHggPiAwKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4N2ZmMClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHhmZmYwKVxuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MHg4MDAwOih4Pj0wKT8wOjB4ODAwMDtcbiAgaWYgKHNpZ24pIHggPSAteDtcbiAgLy8gSW50NjQuYml0c19vZl9mbG9hdCAxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNyA9IDB4N2ZiMDAwMDAwMDAwMDAwMExcbiAgLy8gdXNpbmcgTWF0aC5MT0cyRSpNYXRoLmxvZyh4KSBpbiBwbGFjZSBvZiBNYXRoLmxvZzIgcmVzdWx0IGluIHByZWNpc2lvbiBsb3N0XG4gIHZhciBleHAgPSBqc29vX2Zsb29yX2xvZzIoeCkgKyAxMDIzO1xuICBpZiAoZXhwIDw9IDApIHtcbiAgICBleHAgPSAwO1xuICAgIHggLz0gTWF0aC5wb3coMiwtMTAyNik7XG4gIH0gZWxzZSB7XG4gICAgeCAvPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgICBpZiAoeCA8IDE2KSB7XG4gICAgICB4ICo9IDI7IGV4cCAtPTE7IH1cbiAgICBpZiAoZXhwID09IDApIHtcbiAgICAgIHggLz0gMjsgfVxuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwyNCk7XG4gIHZhciByMyA9IHh8MDtcbiAgeCA9ICh4IC0gcjMpICogaztcbiAgdmFyIHIyID0geHwwO1xuICB4ID0gKHggLSByMikgKiBrO1xuICB2YXIgcjEgPSB4fDA7XG4gIHIzID0gKHIzICYweGYpIHwgc2lnbiB8IGV4cCA8PCA0O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkocjEsIHIyLCByMyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheSgxKTtcbiAgZmxvYXQzMmFbMF0gPSB4O1xuICB2YXIgaW50MzJhID0gbmV3IEludDMyQXJyYXkoZmxvYXQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGludDMyYVswXSB8IDA7XG59XG5cbi8vRlAgbGl0ZXJhbHMgY2FuIGJlIHdyaXR0ZW4gdXNpbmcgdGhlIGhleGFkZWNpbWFsXG4vL25vdGF0aW9uIDB4PG1hbnRpc3NhIGluIGhleD5wPGV4cG9uZW50PiBmcm9tIElTTyBDOTkuXG4vL2h0dHBzOi8vZ2l0aHViLmNvbS9kYW5rb2dhaS9qcy1oZXhmbG9hdC9ibG9iL21hc3Rlci9oZXhmbG9hdC5qc1xuLy9Qcm92aWRlczogY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0ICh4LCBwcmVjLCBzdHlsZSkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJuYW5cIik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nICgoeCA+IDApP1wiaW5maW5pdHlcIjpcIi1pbmZpbml0eVwiKTtcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzE6KHg+PTApPzA6MTtcbiAgaWYoc2lnbikgeCA9IC14O1xuICB2YXIgZXhwID0gMDtcbiAgaWYgKHggPT0gMCkgeyB9XG4gIGVsc2UgaWYgKHggPCAxKSB7XG4gICAgd2hpbGUgKHggPCAxICYmIGV4cCA+IC0xMDIyKSAgeyB4ICo9IDI7IGV4cC0tIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoeCA+PSAyKSB7IHggLz0gMjsgZXhwKysgfVxuICB9XG4gIHZhciBleHBfc2lnbiA9IGV4cCA8IDAgPyAnJyA6ICcrJztcbiAgdmFyIHNpZ25fc3RyID0gJyc7XG4gIGlmIChzaWduKSBzaWduX3N0ciA9ICctJ1xuICBlbHNlIHtcbiAgICBzd2l0Y2goc3R5bGUpe1xuICAgIGNhc2UgNDMgLyogJysnICovOiBzaWduX3N0ciA9ICcrJzsgYnJlYWs7XG4gICAgY2FzZSAzMiAvKiAnICcgKi86IHNpZ25fc3RyID0gJyAnOyBicmVhaztcbiAgICBkZWZhdWx0OiBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHByZWMgPj0gMCAmJiBwcmVjIDwgMTMpIHtcbiAgICAvKiBJZiBhIHByZWNpc2lvbiBpcyBnaXZlbiwgYW5kIGlzIHNtYWxsLCByb3VuZCBtYW50aXNzYSBhY2NvcmRpbmdseSAqL1xuICAgIHZhciBjc3QgPSBNYXRoLnBvdygyLHByZWMgKiA0KTtcbiAgICB4ID0gTWF0aC5yb3VuZCh4ICogY3N0KSAvIGNzdDtcbiAgfVxuICB2YXIgeF9zdHIgPSB4LnRvU3RyaW5nKDE2KTtcbiAgaWYocHJlYyA+PSAwKXtcbiAgICB2YXIgaWR4ID0geF9zdHIuaW5kZXhPZignLicpO1xuICAgIGlmKGlkeDwwKSB7XG4gICAgICB4X3N0ciArPSAnLicgKyBjYW1sX3N0cl9yZXBlYXQocHJlYywgJzAnKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB2YXIgc2l6ZSA9IGlkeCsxK3ByZWM7XG4gICAgICBpZih4X3N0ci5sZW5ndGggPCBzaXplKVxuICAgICAgICB4X3N0ciArPSBjYW1sX3N0cl9yZXBlYXQoc2l6ZSAtIHhfc3RyLmxlbmd0aCwgJzAnKTtcbiAgICAgIGVsc2VcbiAgICAgICAgeF9zdHIgPSB4X3N0ci5zdWJzdHIoMCxzaXplKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzaWduX3N0ciArICcweCcgKyB4X3N0ciArICdwJyArIGV4cF9zaWduICsgZXhwLnRvU3RyaW5nKDEwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBsbyA9IHgubG87XG4gIHZhciBtaSA9IHgubWk7XG4gIHZhciBoaSA9IHguaGk7XG4gIHZhciBleHAgPSAoaGkgJiAweDdmZmYpID4+IDQ7XG4gIGlmIChleHAgPT0gMjA0Nykge1xuICAgIGlmICgobG98bWl8KGhpJjB4ZikpID09IDApXG4gICAgICByZXR1cm4gKGhpICYgMHg4MDAwKT8oLUluZmluaXR5KTpJbmZpbml0eTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTmFOO1xuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwtMjQpO1xuICB2YXIgcmVzID0gKGxvKmsrbWkpKmsrKGhpJjB4Zik7XG4gIGlmIChleHAgPiAwKSB7XG4gICAgcmVzICs9IDE2O1xuICAgIHJlcyAqPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgfSBlbHNlXG4gICAgcmVzICo9IE1hdGgucG93KDIsLTEwMjYpO1xuICBpZiAoaGkgJiAweDgwMDApIHJlcyA9IC0gcmVzO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25leHRhZnRlcl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X3N1YixjYW1sX2ludDY0X29mX2ludDMyXG5mdW5jdGlvbiBjYW1sX25leHRhZnRlcl9mbG9hdCAoeCx5KSB7XG4gIGlmKGlzTmFOKHgpIHx8IGlzTmFOKHkpKSByZXR1cm4gTmFOO1xuICBpZih4PT15KSByZXR1cm4geTtcbiAgaWYoeD09MCl7XG4gICAgaWYoeSA8IDApXG4gICAgICByZXR1cm4gLU1hdGgucG93KDIsIC0xMDc0KVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBNYXRoLnBvdygyLCAtMTA3NClcbiAgfVxuICB2YXIgYml0cyA9IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh4KTtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoMSk7XG4gIGlmICgoeDx5KSA9PSAoeD4wKSlcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9hZGQoYml0cywgb25lKVxuICBlbHNlXG4gICAgYml0cyA9IGNhbWxfaW50NjRfc3ViKGJpdHMsIG9uZSlcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhiaXRzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF90cnVuY19mbG9hdFxuZnVuY3Rpb24gY2FtbF90cnVuY19mbG9hdCh4KXtcbiAgcmV0dXJuIE1hdGgudHJ1bmMoeCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBpbnQzMmEgPSBuZXcgSW50MzJBcnJheSgxKTtcbiAgaW50MzJhWzBdID0geDtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheShpbnQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGZsb2F0MzJhWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NsYXNzaWZ5X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPj0gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHJldHVybiAwO1xuICAgIGlmICh4ICE9IDApIHJldHVybiAxO1xuICAgIHJldHVybiAyO1xuICB9XG4gIHJldHVybiBpc05hTih4KT80OjM7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21vZGZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbW9kZl9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgdmFyIG5lZyA9ICgxL3gpIDwgMDtcbiAgICB4ID0gTWF0aC5hYnMoeCk7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yICh4KTtcbiAgICB2YXIgZiA9IHggLSBpO1xuICAgIGlmIChuZWcpIHsgaSA9IC1pOyBmID0gLWY7IH1cbiAgICByZXR1cm4gWzAsIGYsIGldO1xuICB9XG4gIGlmIChpc05hTiAoeCkpIHJldHVybiBbMCwgTmFOLCBOYU5dO1xuICByZXR1cm4gWzAsIDEveCwgeF07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xkZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xkZXhwX2Zsb2F0ICh4LGV4cCkge1xuICBleHAgfD0gMDtcbiAgaWYgKGV4cCA+IDEwMjMpIHtcbiAgICBleHAgLT0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIGlmIChleHAgPiAxMDIzKSB7ICAvLyBpbiBjYXNlIHggaXMgc3Vibm9ybWFsXG4gICAgICBleHAgLT0gMTAyMztcbiAgICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgfVxuICB9XG4gIGlmIChleHAgPCAtMTAyMykge1xuICAgIGV4cCArPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpO1xuICB9XG4gIHggKj0gTWF0aC5wb3coMiwgZXhwKTtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXhwX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfZnJleHBfZmxvYXQgKHgpIHtcbiAgaWYgKCh4ID09IDApIHx8ICFpc0Zpbml0ZSh4KSkgcmV0dXJuIFswLCB4LCAwXTtcbiAgdmFyIG5lZyA9IHggPCAwO1xuICBpZiAobmVnKSB4ID0gLSB4O1xuICB2YXIgZXhwID0gTWF0aC5tYXgoLTEwMjMsIGpzb29fZmxvb3JfbG9nMih4KSArIDEpO1xuICB4ICo9IE1hdGgucG93KDIsLWV4cCk7XG4gIHdoaWxlICh4IDwgMC41KSB7XG4gICAgeCAqPSAyO1xuICAgIGV4cC0tO1xuICB9XG4gIHdoaWxlICh4ID49IDEpIHtcbiAgICB4ICo9IDAuNTtcbiAgICBleHArKztcbiAgfVxuICBpZiAobmVnKSB4ID0gLSB4O1xuICByZXR1cm4gWzAsIHgsIGV4cF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbG9hdF9jb21wYXJlICh4LCB5KSB7XG4gIGlmICh4ID09PSB5KSByZXR1cm4gMDtcbiAgaWYgKHggPCB5KSByZXR1cm4gLTE7XG4gIGlmICh4ID4geSkgcmV0dXJuIDE7XG4gIGlmICh4ID09PSB4KSByZXR1cm4gMTtcbiAgaWYgKHkgPT09IHkpIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29weXNpZ25fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29weXNpZ25fZmxvYXQgKHgsIHkpIHtcbiAgaWYgKHkgPT0gMCkgeSA9IDEgLyB5O1xuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHJldHVybiAoeSA8IDApPygteCk6eDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zaWduYml0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpZ25iaXRfZmxvYXQoeCkge1xuICBpZiAoeCA9PSAwKSB4ID0gMSAvIHg7XG4gIHJldHVybiAoeCA8IDApPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9leHBtMV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHBtMV9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5leHBtMSh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9leHAyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cDJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5wb3coMiwgeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMXBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMXBfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cxcCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cyKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2h5cG90X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2h5cG90X2Zsb2F0ICh4LCB5KSB7IHJldHVybiBNYXRoLmh5cG90KHgsIHkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzEwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzEwX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmxvZzEwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Nvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Fjb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Fjb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFjb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3NpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5zaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2FzaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2FzaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFzaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3RhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC50YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2F0YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2F0YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmF0YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JvdW5kX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3JvdW5kX2Zsb2F0ICh4KSB7XG4gIGlmICh4ID49IDApIHtcbiAgICB2YXIgeSA9IE1hdGguZmxvb3IoeCk7XG4gICAgcmV0dXJuICh4IC0geSA+PSAwLjUpPyh5ICsgMSk6eVxuICB9IGVsc2Uge1xuICAgIHZhciB5ID0gTWF0aC5jZWlsKHgpO1xuICAgIHJldHVybiAoeSAtIHggPj0gMC41KT8oeSAtIDEpOnlcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jYnJ0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NicnRfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY2JydCh4KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9lcmZfZmxvYXQoeCkge1xuICB2YXIgYTEgPSAwLjI1NDgyOTU5MjtcbiAgdmFyIGEyID0gLTAuMjg0NDk2NzM2O1xuICB2YXIgYTMgPSAxLjQyMTQxMzc0MTtcbiAgdmFyIGE0ID0gLTEuNDUzMTUyMDI3O1xuICB2YXIgYTUgPSAxLjA2MTQwNTQyOTtcbiAgdmFyIHAgPSAwLjMyNzU5MTE7XG5cbiAgdmFyIHNpZ24gPSAxO1xuICBpZiAoeCA8IDApIHtcbiAgICBzaWduID0gLTE7XG4gIH1cbiAgeCA9IE1hdGguYWJzKHgpO1xuICB2YXIgdCA9IDEuMCAvICgxLjAgKyBwICogeCk7XG4gIHZhciB5ID0gMS4wIC0gKCgoKGE1ICogdCArIGE0KSAqIHQgKyBhMykgKiB0ICsgYTIpICogdCArIGExKSAqIHQgKiBNYXRoLmV4cCgteCAqIHgpO1xuXG4gIHJldHVybiBzaWduICogeTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZjX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2VyZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9lcmZjX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIDEgLSBjYW1sX2VyZl9mbG9hdCh4KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZtYV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbWFfZmxvYXQoeCwgeSwgeikge1xuICB2YXIgU1BMSVQgPSBNYXRoLnBvdygyLCAyNykgKyAxO1xuICB2YXIgTUlOX1ZBTFVFID0gTWF0aC5wb3coMiwgLTEwMjIpO1xuICB2YXIgRVBTSUxPTiA9IE1hdGgucG93KDIsIC01Mik7XG4gIHZhciBDID0gNDE2O1xuICB2YXIgQSA9IE1hdGgucG93KDIsICtDKTtcbiAgdmFyIEIgPSBNYXRoLnBvdygyLCAtQyk7XG5cbiAgZnVuY3Rpb24gbXVsdGlwbHkgKGEsIGIpIHtcbiAgICB2YXIgYXQgPSBTUExJVCAqIGE7XG4gICAgdmFyIGFoaSA9IGF0IC0gKGF0IC0gYSk7XG4gICAgdmFyIGFsbyA9IGEgLSBhaGk7XG4gICAgdmFyIGJ0ID0gU1BMSVQgKiBiO1xuICAgIHZhciBiaGkgPSBidCAtIChidCAtIGIpO1xuICAgIHZhciBibG8gPSBiIC0gYmhpO1xuICAgIHZhciBwID0gYSAqIGI7XG4gICAgdmFyIGUgPSAoKGFoaSAqIGJoaSAtIHApICsgYWhpICogYmxvICsgYWxvICogYmhpKSArIGFsbyAqIGJsbztcbiAgICByZXR1cm4ge1xuICAgICAgcDogcCxcbiAgICAgIGU6IGVcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHZhciBzID0gYSArIGI7XG4gICAgdmFyIHYgPSBzIC0gYTtcbiAgICB2YXIgZSA9IChhIC0gKHMgLSB2KSkgKyAoYiAtIHYpO1xuICAgIHJldHVybiB7XG4gICAgICBzOiBzLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRqdXN0ICh4LCB5KSB7XG4gICAgcmV0dXJuIHggIT09IDAgJiYgeSAhPT0gMCAmJiBTUExJVCAqIHggLSAoU1BMSVQgKiB4IC0geCkgPT09IHggPyB4ICogKDEgKyAoeCA8IDAgPyAtMSA6ICsxKSAqICh5IDwgMCA/IC0xIDogKzEpICogRVBTSUxPTikgOiB4O1xuICB9O1xuXG4gIGlmICh4ID09PSAwIHx8IHggIT09IHggfHwgeCA9PT0gKzEgLyAwIHx8IHggPT09IC0xIC8gMCB8fFxuICAgICAgeSA9PT0gMCB8fCB5ICE9PSB5IHx8IHkgPT09ICsxIC8gMCB8fCB5ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKyB6O1xuICB9XG4gIGlmICh6ID09PSAwKSB7XG4gICAgcmV0dXJuIHggKiB5O1xuICB9XG4gIGlmICh6ICE9PSB6IHx8IHogPT09ICsxIC8gMCB8fCB6ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciBzY2FsZSA9IDE7XG4gIHdoaWxlIChNYXRoLmFicyh4KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHggKj0gQjtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB5ICo9IEI7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAxIC8gMCkge1xuICAgIHJldHVybiB4ICogeSAqIHNjYWxlO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh4KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHggKj0gQTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB5ICo9IEE7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAwKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgeHMgPSB4O1xuICB2YXIgeXMgPSB5O1xuICB2YXIgenMgPSB6IC8gc2NhbGU7XG5cbiAgaWYgKE1hdGguYWJzKHpzKSA+IE1hdGguYWJzKHhzICogeXMpICogNCAvIEVQU0lMT04pIHtcbiAgICByZXR1cm4gejtcbiAgfVxuICBpZiAoTWF0aC5hYnMoenMpIDwgTWF0aC5hYnMoeHMgKiB5cykgKiBFUFNJTE9OIC8gNCAqIEVQU0lMT04gLyA0KSB7XG4gICAgenMgPSAoeiA8IDAgPyAtMSA6ICsxKSAqIE1JTl9WQUxVRTtcbiAgfVxuXG4gIHZhciB4eSA9IG11bHRpcGx5KHhzLCB5cyk7XG4gIHZhciBzID0gYWRkKHh5LnAsIHpzKTtcbiAgdmFyIHUgPSBhZGQoeHkuZSwgcy5lKTtcbiAgdmFyIGkgPSBhZGQocy5zLCB1LnMpO1xuXG4gIHZhciBmID0gaS5zICsgYWRqdXN0KGkuZSwgdS5lKTtcbiAgaWYgKGYgPT09IDApIHtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIHZhciBmcyA9IGYgKiBzY2FsZTtcbiAgaWYgKE1hdGguYWJzKGZzKSA+IE1JTl9WQUxVRSkge1xuICAgIHJldHVybiBmcztcbiAgfVxuXG4gIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgd2FzIGV4dHJhIHJvdW5kaW5nIGZvciBhIGRlbm9ybWFsaXplZCB2YWx1ZS5cbiAgcmV0dXJuIGZzICsgYWRqdXN0KGYgLSBmcyAvIHNjYWxlLCBpLmUpICogc2NhbGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZmxvYXQgKGZtdCwgeCkge1xuICBmdW5jdGlvbiB0b0ZpeGVkKHgsZHApIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPCAxLjApIHtcbiAgICAgIHJldHVybiB4LnRvRml4ZWQoZHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZSA9IHBhcnNlSW50KHgudG9TdHJpbmcoKS5zcGxpdCgnKycpWzFdKTtcbiAgICAgIGlmIChlID4gMjApIHtcbiAgICAgICAgZSAtPSAyMDtcbiAgICAgICAgeCAvPSBNYXRoLnBvdygxMCxlKTtcbiAgICAgICAgeCArPSAobmV3IEFycmF5KGUrMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgaWYoZHAgPiAwKSB7XG4gICAgICAgICAgeCA9IHggKyAnLicgKyAobmV3IEFycmF5KGRwKzEpKS5qb2luKCcwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgICB9XG4gICAgICBlbHNlIHJldHVybiB4LnRvRml4ZWQoZHApXG4gICAgfVxuICB9XG4gIHZhciBzLCBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgdmFyIHByZWMgPSAoZi5wcmVjIDwgMCk/NjpmLnByZWM7XG4gIGlmICh4IDwgMCB8fCAoeCA9PSAwICYmIDEveCA9PSAtSW5maW5pdHkpKSB7IGYuc2lnbiA9IC0xOyB4ID0gLXg7IH1cbiAgaWYgKGlzTmFOKHgpKSB7IHMgPSBcIm5hblwiOyBmLmZpbGxlciA9ICcgJzsgfVxuICBlbHNlIGlmICghaXNGaW5pdGUoeCkpIHsgcyA9IFwiaW5mXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2VcbiAgICBzd2l0Y2ggKGYuY29udikge1xuICAgIGNhc2UgJ2UnOlxuICAgICAgdmFyIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyk7XG4gICAgICAvLyBleHBvbmVudCBzaG91bGQgYmUgYXQgbGVhc3QgdHdvIGRpZ2l0c1xuICAgICAgdmFyIGkgPSBzLmxlbmd0aDtcbiAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICBzID0gcy5zbGljZSAoMCwgaSAtIDEpICsgJzAnICsgcy5zbGljZSAoaSAtIDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZic6XG4gICAgICBzID0gdG9GaXhlZCh4LCBwcmVjKTsgYnJlYWs7XG4gICAgY2FzZSAnZyc6XG4gICAgICBwcmVjID0gcHJlYz9wcmVjOjE7XG4gICAgICBzID0geC50b0V4cG9uZW50aWFsKHByZWMgLSAxKTtcbiAgICAgIHZhciBqID0gcy5pbmRleE9mKCdlJyk7XG4gICAgICB2YXIgZXhwID0gK3Muc2xpY2UoaiArIDEpO1xuICAgICAgaWYgKGV4cCA8IC00IHx8IHggPj0gMWUyMSB8fCB4LnRvRml4ZWQoMCkubGVuZ3RoID4gcHJlYykge1xuICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgemVyb2VzXG4gICAgICAgIHZhciBpID0gaiAtIDE7IHdoaWxlIChzLmNoYXJBdChpKSA9PSAnMCcpIGktLTtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSkgKyBzLnNsaWNlKGopO1xuICAgICAgICBpID0gcy5sZW5ndGg7XG4gICAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHAgPSBwcmVjO1xuICAgICAgICBpZiAoZXhwIDwgMCkgeyBwIC09IGV4cCArIDE7IHMgPSB4LnRvRml4ZWQocCk7IH1cbiAgICAgICAgZWxzZSB3aGlsZSAocyA9IHgudG9GaXhlZChwKSwgcy5sZW5ndGggPiBwcmVjICsgMSkgcC0tO1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICB2YXIgaSA9IHMubGVuZ3RoIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSAnLicpIGktLTtcbiAgICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHJlcztcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocylcbiAgcmVzID0gK3M7XG4gIGlmICgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKSByZXR1cm4gcmVzO1xuICBzID0gcy5yZXBsYWNlKC9fL2csXCJcIik7XG4gIHJlcyA9ICtzO1xuICBpZiAoKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHx8IC9eWystXT9uYW4kL2kudGVzdChzKSkgcmV0dXJuIHJlcztcbiAgdmFyIG0gPSAvXiAqKFsrLV0/KTB4KFswLTlhLWZdKylcXC4/KFswLTlhLWZdKikocChbKy1dP1swLTldKykpPy9pLmV4ZWMocyk7XG4gIC8vICAgICAgICAgIDEgICAgICAgIDIgICAgICAgICAgICAgMyAgICAgICAgICAgNVxuICBpZihtKXtcbiAgICB2YXIgbTMgPSBtWzNdLnJlcGxhY2UoLzArJC8sJycpO1xuICAgIHZhciBtYW50aXNzYSA9IHBhcnNlSW50KG1bMV0gKyBtWzJdICsgbTMsIDE2KTtcbiAgICB2YXIgZXhwb25lbnQgPSAobVs1XXwwKSAtIDQqbTMubGVuZ3RoO1xuICAgIHJlcyA9IG1hbnRpc3NhICogTWF0aC5wb3coMiwgZXhwb25lbnQpO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgaWYoL15cXCs/aW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIEluZmluaXR5O1xuICBpZigvXi1pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gLUluZmluaXR5O1xuICBjYW1sX2ZhaWx3aXRoKFwiZmxvYXRfb2Zfc3RyaW5nXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG52YXIgY2FtbF9pbnQ2NF9vZmZzZXQgPSBNYXRoLnBvdygyLCAtMjQpO1xuXG4vL1Byb3ZpZGVzOiBNbEludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gTWxJbnQ2NCAobG8sbWksaGkpIHtcbiAgdGhpcy5sbyA9IGxvICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSBtaSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gaGkgJiAweGZmZmY7XG59XG5NbEludDY0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX2pcIlxuTWxJbnQ2NC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8sdGhpcy5taSx0aGlzLmhpKTtcbn1cblxuTWxJbnQ2NC5wcm90b3R5cGUudWNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICBpZiAodGhpcy5oaSA+IHguaGkpIHJldHVybiAxO1xuICBpZiAodGhpcy5oaSA8IHguaGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgaGkgPSB0aGlzLmhpIDw8IDE2O1xuICB2YXIgeGhpID0geC5oaSA8PCAxNjtcbiAgaWYgKGhpID4geGhpKSByZXR1cm4gMTtcbiAgaWYgKGhpIDwgeGhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICBpZiAodGhpcy5sbyA8IHgubG8pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsbyA9IC0gdGhpcy5sbztcbiAgdmFyIG1pID0gLSB0aGlzLm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gLSB0aGlzLmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyArIHgubG87XG4gIHZhciBtaSA9IHRoaXMubWkgKyB4Lm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gdGhpcy5oaSArIHguaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvIC0geC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSAtIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpIC0geC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gKiB4LmxvO1xuICB2YXIgbWkgPSAoKGxvICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLm1pICogeC5sbyArIHRoaXMubG8gKiB4Lm1pO1xuICB2YXIgaGkgPSAoKG1pICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLmhpICogeC5sbyArIHRoaXMubWkgKiB4Lm1pICsgdGhpcy5sbyAqIHguaGk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICh0aGlzLmxvfHRoaXMubWl8dGhpcy5oaSkgPT0gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMuaGkgPDwgMTYpIDwgMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvICYgeC5sbywgdGhpcy5taSAmIHgubWksIHRoaXMuaGkgJiB4LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG98eC5sbywgdGhpcy5taXx4Lm1pLCB0aGlzLmhpfHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG9eeC5sbywgdGhpcy5taV54Lm1pLCB0aGlzLmhpXnguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfbGVmdCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICBpZiAocyA8IDI0KSB7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICh0aGlzLmxvIDw8IHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCBzKSB8ICh0aGlzLmxvID4+ICgyNCAtIHMpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmhpIDw8IHMpIHwgKHRoaXMubWkgPj4gKDI0IC0gcykpKTtcbiAgfVxuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG8gPDwgKHMgLSAyNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCAocyAtIDI0KSkgfCAodGhpcy5sbyA+PiAoNDggLSBzKSkpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoMCwgMCwgdGhpcy5sbyA8PCAocyAtIDQ4KSlcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X3JpZ2h0X3Vuc2lnbmVkID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAodGhpcy5oaSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5oaSA+PiBzKSk7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IChzIC0gMjQpKSxcbiAgICAgIDApO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMuaGkgPj4gKHMgLSA0OCksIDAsIDApO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgdmFyIGggPSAodGhpcy5oaSA8PCAxNikgPj4gMTY7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAoaCA8PCAoMjQgLSBzKSksXG4gICAgICAoKHRoaXMuaGkgPDwgMTYpID4+IHMpID4+PiAxNik7XG4gIHZhciBzaWduID0gKHRoaXMuaGkgPDwgMTYpID4+IDMxO1xuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5taSA+PiAocyAtIDI0KSkgfCAodGhpcy5oaSA8PCAoNDggLSBzKSksXG4gICAgICAodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAyNCkgPj4gMTYsXG4gICAgICBzaWduICYgMHhmZmZmKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0ICgodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAzMiksIHNpZ24sIHNpZ24pO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNsMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5oaSA9ICh0aGlzLmhpIDw8IDEpIHwgKHRoaXMubWkgPj4gMjMpO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pIDw8IDEpIHwgKHRoaXMubG8gPj4gMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmxvID0gKHRoaXMubG8gPDwgMSkgJiAweGZmZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxzcjEgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG8gPSAoKHRoaXMubG8gPj4+IDEpIHwgKHRoaXMubWkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pID4+PiAxKSB8ICh0aGlzLmhpIDw8IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IHRoaXMuaGkgPj4+IDE7XG59XG5NbEludDY0LnByb3RvdHlwZS51ZGl2bW9kID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIG9mZnNldCA9IDA7XG4gIHZhciBtb2R1bHVzID0gdGhpcy5jb3B5KCk7XG4gIHZhciBkaXZpc29yID0geC5jb3B5KCk7XG4gIHZhciBxdW90aWVudCA9IG5ldyBNbEludDY0KDAsMCwwKTtcbiAgd2hpbGUgKG1vZHVsdXMudWNvbXBhcmUoZGl2aXNvcikgPiAwKSB7XG4gICAgb2Zmc2V0Kys7XG4gICAgZGl2aXNvci5sc2wxKCk7XG4gIH1cbiAgd2hpbGUgKG9mZnNldCA+PSAwKSB7XG4gICAgb2Zmc2V0IC0tO1xuICAgIHF1b3RpZW50LmxzbDEoKTtcbiAgICBpZiAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+PSAwKSB7XG4gICAgICBxdW90aWVudC5sbyArKztcbiAgICAgIG1vZHVsdXMgPSBtb2R1bHVzLnN1YihkaXZpc29yKTtcbiAgICB9XG4gICAgZGl2aXNvci5sc3IxKCk7XG4gIH1cbiAgcmV0dXJuIHsgcXVvdGllbnQgOiBxdW90aWVudCwgbW9kdWx1cyA6IG1vZHVsdXMgfTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGkgXiB5LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHEgPSB4LnVkaXZtb2QoeSkucXVvdGllbnQ7XG4gIGlmIChzaWduICYgMHg4MDAwKSBxID0gcS5uZWcoKTtcbiAgcmV0dXJuIHE7XG59XG5NbEludDY0LnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiAoeSlcbntcbiAgdmFyIHggPSB0aGlzO1xuICBpZiAoeS5pc1plcm8oKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgdmFyIHNpZ24gPSB4LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHIgPSB4LnVkaXZtb2QoeSkubW9kdWx1cztcbiAgaWYgKHNpZ24gJiAweDgwMDApIHIgPSByLm5lZygpO1xuICByZXR1cm4gcjtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvSW50ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICh0aGlzLm1pIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvRmxvYXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMuaGkgPDwgMTYpICogTWF0aC5wb3coMiwgMzIpICsgdGhpcy5taSAqIE1hdGgucG93KDIsIDI0KSkgKyB0aGlzLmxvO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFt0aGlzLmhpID4+IDgsXG4gICAgICAgICAgdGhpcy5oaSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSA+PiAxNixcbiAgICAgICAgICAodGhpcy5taSA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyA+PiAxNixcbiAgICAgICAgICAodGhpcy5sbyA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyAmIDB4ZmZdO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubG8zMiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubG8gfCAoKHRoaXMubWkgJiAweGZmKSA8PCAyNCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5oaTMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKCh0aGlzLm1pID4+PiA4KSAmIDB4ZmZmZikgfCAodGhpcy5oaSA8PCAxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdWx0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3VsdCh4LHkpIHsgcmV0dXJuIHgudWNvbXBhcmUoeSkgPCAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jb21wYXJlKHgseSwgdG90YWwpIHsgcmV0dXJuIHguY29tcGFyZSh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbmVnIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X25lZyAoeCkgeyByZXR1cm4geC5uZWcoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYWRkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FkZCAoeCwgeSkgeyByZXR1cm4geC5hZGQoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3N1YiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zdWIgKHgsIHkpIHsgcmV0dXJuIHguc3ViKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tdWwgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2ludDY0X211bCh4LHkpIHsgcmV0dXJuIHgubXVsKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc196ZXJvIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX3plcm8oeCkgeyByZXR1cm4gK3guaXNaZXJvKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSB7IHJldHVybiAreC5pc05lZygpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYW5kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FuZCAoeCwgeSkgeyByZXR1cm4geC5hbmQoeSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vciAoeCwgeSkgeyByZXR1cm4geC5vcih5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3hvciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF94b3IgKHgsIHkpIHsgcmV0dXJuIHgueG9yKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfbGVmdChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHRfdW5zaWduZWQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0ICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X3JpZ2h0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9kaXYgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZGl2ICh4LCB5KSB7IHJldHVybiB4LmRpdih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbW9kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X21vZCAoeCwgeSkgeyByZXR1cm4geC5tb2QoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2ludDMyIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2ludDMyICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh4ICYgMHhmZmZmZmYsICh4ID4+IDI0KSAmIDB4ZmZmZmZmLCAoeCA+PiAzMSkgJiAweGZmZmYpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9faW50MzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9faW50MzIgKHgpIHsgcmV0dXJuIHgudG9JbnQoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fZmxvYXQgKHgpIHsgcmV0dXJuIHgudG9GbG9hdCAoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2Zsb2F0ICh4KSB7XG4gIGlmICh4IDwgMCkgeCA9IE1hdGguY2VpbCh4KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KFxuICAgIHggJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCkgJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZm9ybWF0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdG9faW50MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zvcm1hdCAoZm10LCB4KSB7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGYuc2lnbmVkY29udiAmJiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpKSB7XG4gICAgZi5zaWduID0gLTE7IHggPSBjYW1sX2ludDY0X25lZyh4KTtcbiAgfVxuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgdmFyIHdiYXNlID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihmLmJhc2UpO1xuICB2YXIgY3Z0YmwgPSBcIjAxMjM0NTY3ODlhYmNkZWZcIjtcbiAgZG8ge1xuICAgIHZhciBwID0geC51ZGl2bW9kKHdiYXNlKTtcbiAgICB4ID0gcC5xdW90aWVudDtcbiAgICBidWZmZXIgPSBjdnRibC5jaGFyQXQoY2FtbF9pbnQ2NF90b19pbnQzMihwLm1vZHVsdXMpKSArIGJ1ZmZlcjtcbiAgfSB3aGlsZSAoISBjYW1sX2ludDY0X2lzX3plcm8oeCkpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBidWZmZXIgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBidWZmZXI7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgYnVmZmVyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9mYWlsd2l0aCwgY2FtbF9wYXJzZV9kaWdpdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF91bHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCxjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX3N0cmluZyhzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBiYXNlNjQgPSBjYW1sX2ludDY0X29mX2ludDMyKGJhc2UpO1xuICB2YXIgdGhyZXNob2xkID1cbiAgICAgIG5ldyBNbEludDY0KDB4ZmZmZmZmLCAweGZmZmZmZmYsIDB4ZmZmZikudWRpdm1vZChiYXNlNjQpLnF1b3RpZW50O1xuICB2YXIgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICBmb3IgKDs7KSB7XG4gICAgaSsrO1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gbXVsdGlwbGljYXRpb24gYmFzZSAqIHJlcyAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdCh0aHJlc2hvbGQsIHJlcykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAgIGQgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfYWRkKGNhbWxfaW50NjRfbXVsKGJhc2U2NCwgcmVzKSwgZCk7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIGFkZGl0aW9uIChiYXNlICogcmVzKSArIGQgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQocmVzLCBkKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKGJhc2UgPT0gMTAgJiYgY2FtbF9pbnQ2NF91bHQobmV3IE1sSW50NjQoMCwgMCwgMHg4MDAwKSwgcmVzKSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKHNpZ24gPCAwKSByZXMgPSBjYW1sX2ludDY0X25lZyhyZXMpO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkobG8sIG1pLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKVxufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGxvLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgbG8gJiAweGZmZmZmZixcbiAgICAoKGxvID4+PiAyNCkgJiAweGZmKSB8ICgoaGkgJiAweGZmZmYpIDw8IDgpLFxuICAgIChoaSA+Pj4gMTYpICYgMHhmZmZmKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbG8zMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9sbzMyKHYpeyByZXR1cm4gdi5sbzMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hpMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGkzMih2KXsgcmV0dXJuIHYuaGkzMigpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChhWzddIDw8IDAgfCAoYVs2XSA8PCA4KSB8IChhWzVdIDw8IDE2KSxcbiAgICAgICAgICAgICAgICAgICAgIGFbNF0gPDwgMCB8IChhWzNdIDw8IDgpIHwgKGFbMl0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVsxXSA8PCAwIHwgKGFbMF0gPDwgOCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19ieXRlcyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19ieXRlcyh4KSB7IHJldHVybiB4LnRvQXJyYXkoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGFzaCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oYXNoKHYpe1xuICByZXR1cm4gKHYubG8zMigpKSBeICh2LmhpMzIoKSlcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUmFpc2UgZXhjZXB0aW9uXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9jb25zdGFudCAodGFnKSB7IHRocm93IHRhZzsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnIChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX2FyZyAodGFnLCBhcmcpIHsgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLCB0YWcsIGFyZ10pOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmdzIChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX2FyZ3MgKHRhZywgYXJncykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZ10uY29uY2F0KGFyZ3MpKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nICh0YWcsIG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobXNnKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmFpbHdpdGggKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9mYWlsd2l0aCAobXNnKSB7XG4gIGlmKCFjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUpXG4gICAgY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlPVsyNDgsY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkZhaWx1cmVcIiksLTNdO1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSwgbXNnKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkludmFsaWRfYXJndW1lbnQsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRW5kX29mX2ZpbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLkRpdmlzaW9uX2J5X3plcm8pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfZm91bmQgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuTm90X2ZvdW5kKTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiAhZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpO1xuICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICBpZiAoZCA9PSAwKVxuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciBnID0gZi5hcHBseShudWxsLGFyZ3Muc2xpY2UoMCxuKSk7XG4gICAgaWYodHlwZW9mIGcgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGc7XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZyxhcmdzLnNsaWNlKG4pKTtcbiAgfVxuICBlbHNlIHtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICBjYXNlIDE6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDEpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIDI6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHkpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDIpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICgpe1xuICAgICAgICB2YXIgZXh0cmFfYXJncyA9IChhcmd1bWVudHMubGVuZ3RoID09IDApPzE6YXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3MubGVuZ3RoK2V4dHJhX2FyZ3MpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIG5hcmdzW2FyZ3MubGVuZ3RoK2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBuYXJncylcbiAgICAgIH07XG4gICAgfX1cbiAgICBnLmwgPSBkO1xuICAgIHJldHVybiBnO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbF9nZW4gKGNvbnN0LCBzaGFsbG93KVxuLy9JZjogZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpO1xuICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICBpZiAoZCA9PSAwKSB7XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgcmVzdCA9IGFyZ3Muc2xpY2UobiAtIDEpO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbiAtIDFdO1xuICAgIGFyZ3MgPSBhcmdzLnNsaWNlKDAsIG4pO1xuICAgIGFyZ3NbbiAtIDFdID0gZnVuY3Rpb24gKGcpIHtcbiAgICAgIGlmICh0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gayhnKTtcbiAgICAgIHZhciBhcmdzID0gcmVzdC5zbGljZSgpO1xuICAgICAgYXJnc1thcmdzLmxlbmd0aCAtIDFdID0gaztcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGcsIGFyZ3MpOyB9O1xuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGFyZ3NMZW4tLTtcbiAgICB2YXIgayA9IGFyZ3MgW2FyZ3NMZW5dO1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSwgeil7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDJdID0gejtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIGV4dHJhX2FyZ3MpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrIClcbiAgICAgICAgICBuYXJnc1thcmdzTGVuICsgaV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQgKyAxO1xuICAgIHJldHVybiBrKGcpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG52YXIgY2FtbF9uYW1lZF92YWx1ZXMgPSB7fTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSAoY29uc3QsbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlKG5tLHYpIHtcbiAgY2FtbF9uYW1lZF92YWx1ZXNbY2FtbF9qc2J5dGVzX29mX3N0cmluZyhubSldID0gdjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG5mdW5jdGlvbiBjYW1sX25hbWVkX3ZhbHVlKG5tKSB7XG4gIHJldHVybiBjYW1sX25hbWVkX3ZhbHVlc1tubV1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9nbG9iYWxfZGF0YVxudmFyIGNhbWxfZ2xvYmFsX2RhdGEgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnVpbGRfc3ltYm9scyhzeW1iKSB7XG4gIHZhciByID0ge307XG4gIGlmKHN5bWIpIHtcbiAgICBmb3IodmFyIGkgPSAxOyBpIDwgc3ltYi5sZW5ndGg7IGkrKyl7XG4gICAgICByW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN5bWJbaV1bMV0pXSA9IHN5bWJbaV1bMl1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChjb25zdCwgc2hhbGxvdywgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX2NhbGxiYWNrLCBjYW1sX2J1aWxkX3N5bWJvbHNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChuLCB2LCBuYW1lX29wdCkge1xuICBpZiAobmFtZV9vcHQpIHtcbiAgICB2YXIgbmFtZSA9IG5hbWVfb3B0O1xuICAgIGlmKGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYykge1xuICAgICAgbiA9IGNhbWxfY2FsbGJhY2soZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jLCBbbmFtZV0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMpIHtcbiAgICAgIGlmKCFjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCkge1xuICAgICAgICBjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCA9IGNhbWxfYnVpbGRfc3ltYm9scyhjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMpXG4gICAgICB9XG4gICAgICB2YXIgbmlkID0gY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHhbbmFtZV1cbiAgICAgIGlmKG5pZCA+PSAwKVxuICAgICAgICBuID0gbmlkXG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImNhbWxfcmVnaXN0ZXJfZ2xvYmFsOiBjYW5ub3QgbG9jYXRlIFwiICsgbmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNhbWxfZ2xvYmFsX2RhdGFbbiArIDFdID0gdjtcbiAgaWYobmFtZV9vcHQpIGNhbWxfZ2xvYmFsX2RhdGFbbmFtZV9vcHRdID0gdjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfZ2xvYmFsX2RhdGEgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9nZXRfZ2xvYmFsX2RhdGEgKCkgeyByZXR1cm4gY2FtbF9nbG9iYWxfZGF0YTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3ByaW50YWJsZSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2lzX3ByaW50YWJsZShjKSB7IHJldHVybiArKGMgPiAzMSAmJiBjIDwgMTI3KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21heWJlX3ByaW50X3N0YXRzXG5mdW5jdGlvbiBjYW1sX21heWJlX3ByaW50X3N0YXRzKHVuaXQpIHsgcmV0dXJuIDAgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwLTIwMTQgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQW4gT0NhbWwgc3RyaW5nIGlzIGFuIG9iamVjdCB3aXRoIHRocmVlIGZpZWxkczpcbi8vIC0gdGFnICd0J1xuLy8gLSBsZW5ndGggJ2wnXG4vLyAtIGNvbnRlbnRzICdjJ1xuLy9cbi8vIFRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nIGNhbiBiZSBlaXRoZXIgYSBKYXZhU2NyaXB0IGFycmF5IG9yXG4vLyBhIEphdmFTY3JpcHQgc3RyaW5nLiBUaGUgbGVuZ3RoIG9mIHRoaXMgc3RyaW5nIGNhbiBiZSBsZXNzIHRoYW4gdGhlXG4vLyBsZW5ndGggb2YgdGhlIE9DYW1sIHN0cmluZy4gSW4gdGhpcyBjYXNlLCByZW1haW5pbmcgYnl0ZXMgYXJlXG4vLyBhc3N1bWVkIHRvIGJlIHplcm9lcy4gQXJyYXlzIGFyZSBtdXRhYmxlIGJ1dCBjb25zdW1lcyBtb3JlIG1lbW9yeVxuLy8gdGhhbiBzdHJpbmdzLiBBIGNvbW1vbiBwYXR0ZXJuIGlzIHRvIHN0YXJ0IGZyb20gYW4gZW1wdHkgc3RyaW5nIGFuZFxuLy8gcHJvZ3Jlc3NpdmVseSBmaWxsIGl0IGZyb20gdGhlIHN0YXJ0LiBQYXJ0aWFsIHN0cmluZ3MgbWFrZXMgaXRcbi8vIHBvc3NpYmxlIHRvIGltcGxlbWVudCB0aGlzIGVmZmljaWVudGx5LlxuLy9cbi8vIFdoZW4gY29udmVydGluZyB0byBhbmQgZnJvbSBVVEYtMTYsIHdlIGtlZXAgdHJhY2sgb2Ygd2hldGhlciB0aGVcbi8vIHN0cmluZyBpcyBjb21wb3NlZCBvbmx5IG9mIEFTQ0lJIGNoYXJhY3RlcnMgKGluIHdoaWNoIGNhc2UsIG5vXG4vLyBjb252ZXJzaW9uIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCkgb3Igbm90LlxuLy9cbi8vIFRoZSBzdHJpbmcgdGFnIGNhbiB0aHVzIHRha2UgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4vLyAgIGZ1bGwgc3RyaW5nICAgICBCWVRFIHwgVU5LTk9XTjogICAgICAwXG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgQVNDSUk6ICAgICAgICA5XG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgTk9UX0FTQ0lJOiAgICA4XG4vLyAgIHN0cmluZyBwcmVmaXggICBQQVJUSUFMOiAgICAgICAgICAgICAyXG4vLyAgIGFycmF5ICAgICAgICAgICBBUlJBWTogICAgICAgICAgICAgICA0XG4vL1xuLy8gT25lIGNhbiB1c2UgYml0IG1hc2tpbmcgdG8gZGlzY3JpbWluYXRlIHRoZXNlIGRpZmZlcmVudCBjYXNlczpcbi8vICAga25vd25fZW5jb2RpbmcoeCkgPSB4Jjhcbi8vICAgaXNfYXNjaWkoeCkgPSAgICAgICB4JjFcbi8vICAga2luZCh4KSA9ICAgICAgICAgICB4JjZcblxuLy9Qcm92aWRlczogY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX3N0cl9yZXBlYXQobiwgcykge1xuICBpZihuID09IDApIHJldHVybiBcIlwiO1xuICBpZiAocy5yZXBlYXQpIHtyZXR1cm4gcy5yZXBlYXQobik7fSAvLyBFQ01Bc2NyaXB0IDYgYW5kIEZpcmVmb3ggMjQrXG4gIHZhciByID0gXCJcIiwgbCA9IDA7XG4gIGZvcig7Oykge1xuICAgIGlmIChuICYgMSkgciArPSBzO1xuICAgIG4gPj49IDE7XG4gICAgaWYgKG4gPT0gMCkgcmV0dXJuIHI7XG4gICAgcyArPSBzO1xuICAgIGwrKztcbiAgICBpZiAobCA9PSA5KSB7XG4gICAgICBzLnNsaWNlKDAsMSk7IC8vIGZsYXR0ZW4gdGhlIHN0cmluZ1xuICAgICAgLy8gdGhlbiwgdGhlIGZsYXR0ZW5pbmcgb2YgdGhlIHdob2xlIHN0cmluZyB3aWxsIGJlIGZhc3RlcixcbiAgICAgIC8vIGFzIGl0IHdpbGwgYmUgY29tcG9zZWQgb2YgbGFyZ2VyIHBpZWNlc1xuICAgIH1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbi8vV2Vha2RlZlxuLy8gUHJlIEVDTUFTY3JpcHQgNSwgW2FwcGx5XSB3b3VsZCBub3Qgc3VwcG9ydCBhcnJheS1saWtlIG9iamVjdC5cbi8vIEluIHN1Y2ggc2V0dXAsIFR5cGVkX2FycmF5IHdvdWxkIGJlIGltcGxlbWVudGVkIGFzIHBvbHlmaWxsLCBhbmQgW2YuYXBwbHldIHdvdWxkXG4vLyBmYWlsIGhlcmUuIE1hcmsgdGhlIHByaW1pdGl2ZSBhcyBXZWFrZGVmLCBzbyB0aGF0IHBlb3BsZSBjYW4gb3ZlcnJpZGUgaXQgZWFzaWx5LlxuZnVuY3Rpb24gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChhLCBpLCBsZW4pIHtcbiAgdmFyIGYgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuICBpZiAoaSA9PSAwICYmIGxlbiA8PSA0MDk2ICYmIGxlbiA9PSBhLmxlbmd0aCkgcmV0dXJuIGYuYXBwbHkgKG51bGwsIGEpO1xuICB2YXIgcyA9IFwiXCI7XG4gIGZvciAoOyAwIDwgbGVuOyBpICs9IDEwMjQsbGVuLT0xMDI0KVxuICAgIHMgKz0gZi5hcHBseSAobnVsbCwgYS5zbGljZShpLGkgKyBNYXRoLm1pbihsZW4sIDEwMjQpKSk7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0Zjhfb2ZfdXRmMTZcbmZ1bmN0aW9uIGNhbWxfdXRmOF9vZl91dGYxNihzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gYiwgYywgZCwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgaWYgKGMgPCAweDgwMCkge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4YzAgfCAoYyA+PiA2KSk7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA8IDB4ZDgwMCB8fCBjID49IDB4ZGZmZikge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZTAgfCAoYyA+PiAxMiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPj0gMHhkYmZmIHx8IGkgKyAxID09IGwgfHxcbiAgICAgICAgICAgICAgIChkID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgZCA+IDB4ZGZmZikge1xuICAgICAgLy8gVW5tYXRjaGVkIHN1cnJvZ2F0ZSBwYWlyLCByZXBsYWNlZCBieSBcXHVmZmZkIChyZXBsYWNlbWVudCBjaGFyYWN0ZXIpXG4gICAgICB0ICs9IFwiXFx4ZWZcXHhiZlxceGJkXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGkrKztcbiAgICAgIGMgPSAoYyA8PCAxMCkgKyBkIC0gMHgzNWZkYzAwO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZjAgfCAoYyA+PiAxOCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiAxMikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH1cbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gY2FtbF91dGYxNl9vZl91dGY4KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBcIlwiLCBjLCBjMSwgYzIsIHYsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjMSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYzEgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMxID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIHYgPSAxO1xuICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICBjID0gYzIgKyAoYzEgPDwgNik7XG4gICAgICBpZiAoYzEgPCAweGUwKSB7XG4gICAgICAgIHYgPSBjIC0gMHgzMDgwO1xuICAgICAgICBpZiAodiA8IDB4ODApIHYgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdiA9IDI7XG4gICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICAgICAgYyA9IGMyICsgKGMgPDwgNik7XG4gICAgICAgICAgaWYgKGMxIDwgMHhmMCkge1xuICAgICAgICAgICAgdiA9IGMgLSAweGUyMDgwO1xuICAgICAgICAgICAgaWYgKCh2IDwgMHg4MDApIHx8ICgodiA+PSAweGQ3ZmYpICYmICh2IDwgMHhlMDAwKSkpIHYgPSAyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ID0gMztcbiAgICAgICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpICYmXG4gICAgICAgICAgICAgICAgKGMxIDwgMHhmNSkpIHtcbiAgICAgICAgICAgICAgdiA9IGMyIC0gMHgzYzgyMDgwICsgKGMgPDwgNik7XG4gICAgICAgICAgICAgIGlmICh2IDwgMHgxMDAwMCB8fCB2ID4gMHgxMGZmZmYpIHYgPSAzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodiA8IDQpIHsgLy8gSW52YWxpZCBzZXF1ZW5jZVxuICAgICAgaSAtPSB2O1xuICAgICAgdCArPSBcIlxcdWZmZmRcIjtcbiAgICB9IGVsc2UgaWYgKHYgPiAweGZmZmYpXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhkN2MwICsgKHYgPj4gMTApLCAweGRjMDAgKyAodiAmIDB4M0ZGKSlcbiAgICBlbHNlXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodik7XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2lzX2FzY2lpXG5mdW5jdGlvbiBqc29vX2lzX2FzY2lpIChzKSB7XG4gIC8vIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZ2V0cyBiZXR0ZXIgYXQgYXJvdW5kIHRoaXMgcG9pbnQgZm9yIGFsbCBicm93c2Vyc1xuICBpZiAocy5sZW5ndGggPCAyNCkge1xuICAgIC8vIFNwaWRlcm1vbmtleSBnZXRzIG11Y2ggc2xvd2VyIHdoZW4gcy5sZW5ndGggPj0gMjQgKG9uIDY0IGJpdCBhcmNocylcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIGlmIChzLmNoYXJDb2RlQXQoaSkgPiAxMjcpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlXG4gICAgcmV0dXJuICEvW15cXHgwMC1cXHg3Zl0vLnRlc3Qocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBpZiAoaSA+PSBzLmMubGVuZ3RoKSByZXR1cm4gMDtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmMuY2hhckNvZGVBdChpKTtcbiAgY2FzZSA0OiAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBzLmNbaV1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIC8vIFRoZSBPQ2FtbCBjb21waWxlciB1c2VzIENoYXIudW5zYWZlX2NociBvbiBpbnRlZ2VycyBsYXJnZXIgdGhhbiAyNTUhXG4gIGMgJj0gMHhmZjtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSB7XG4gICAgaWYgKGkgPT0gcy5jLmxlbmd0aCkge1xuICAgICAgcy5jICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgaWYgKGkgKyAxID09IHMubCkgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKTtcbiAgfVxuICBzLmNbaV0gPSBjO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDEpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDcpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIyID0gMHhGRiAmIGkxNiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTE2O1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQxNlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiNCA9IDB4RkYgJiBpMzIgPj4gMjQsXG4gICAgICBiMyA9IDB4RkYgJiBpMzIgPj4gMTYsXG4gICAgICBiMiA9IDB4RkYgJiBpMzIgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkzMjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDIsIGIzKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMywgYjQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDMyXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQzMlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCl7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGk2NCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyA3IC0gaiwgYVtqXSk7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQ2NFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0Zjhfb2ZfdXRmMTYsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmcgKHMpIHtcbiAgdmFyIHRhZyA9IDkgLyogQllURVMgfCBBU0NJSSAqLztcbiAgaWYgKCFqc29vX2lzX2FzY2lpKHMpKVxuICAgIHRhZyA9IDggLyogQllURVMgfCBOT1RfQVNDSUkgKi8sIHMgPSBjYW1sX3V0Zjhfb2ZfdXRmMTYocyk7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0YWcsIHMsIHMubGVuZ3RoKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEJ5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBqc29vX2lzX2FzY2lpLCBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIE1sQnl0ZXMgKHRhZywgY29udGVudHMsIGxlbmd0aCkge1xuICB0aGlzLnQ9dGFnOyB0aGlzLmM9Y29udGVudHM7IHRoaXMubD1sZW5ndGg7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCl7XG4gIHN3aXRjaCAodGhpcy50KSB7XG4gIGNhc2UgOTogLypCWVRFUyB8IEFTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICBkZWZhdWx0OlxuICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXModGhpcyk7XG4gIGNhc2UgMDogLypCWVRFUyB8IFVOS09XTiovXG4gICAgaWYgKGpzb29faXNfYXNjaWkodGhpcy5jKSkge1xuICAgICAgdGhpcy50ID0gOTsgLypCWVRFUyB8IEFTQ0lJKi9cbiAgICAgIHJldHVybiB0aGlzLmM7XG4gICAgfVxuICAgIHRoaXMudCA9IDg7IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICBjYXNlIDg6IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIH1cbn07XG5NbEJ5dGVzLnByb3RvdHlwZS50b1V0ZjE2ID0gZnVuY3Rpb24gKCl7XG4gIHZhciByID0gdGhpcy50b1N0cmluZygpO1xuICBpZih0aGlzLnQgPT0gOSkgcmV0dXJuIHJcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChyKTtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gKCl7XG4gIHZhciBjb250ZW50ID0gdGhpcy50ID09IDQgPyB0aGlzLmMuc2xpY2UoKSA6IHRoaXMuYztcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRoaXMudCxjb250ZW50LHRoaXMubCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEJZVEVTICovXG4gIGlmIChzLnQgPT0gMiAvKiBQQVJUSUFMICovKVxuICAgIHMuYyArPSBjYW1sX3N0cl9yZXBlYXQocy5sIC0gcy5jLmxlbmd0aCwgJ1xcMCcpXG4gIGVsc2VcbiAgICBzLmMgPSBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKHMuYywgMCwgcy5jLmxlbmd0aCk7XG4gIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocykge1xuICAvKiBBc3N1bWVzIG5vdCBBUlJBWSAqL1xuICB2YXIgYSA9IG5ldyBVaW50OEFycmF5KHMubCk7XG4gIHZhciBiID0gcy5jLCBsID0gYi5sZW5ndGgsIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGIuY2hhckNvZGVBdChpKTtcbiAgZm9yIChsID0gcy5sOyBpIDwgbDsgaSsrKSBhW2ldID0gMDtcbiAgcy5jID0gYTtcbiAgcy50ID0gNDsgLyogQVJSQVkgKi9cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIChzKSB7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICByZXR1cm4gcy5jO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIGwgPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkobCk7XG4gIHZhciBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSk7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBpZihsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJ5dGVzLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9hcnJheSAoYSkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoYSwwLGEubGVuZ3RoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGEpIHtcbiAgaWYoISAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgYSA9IG5ldyBVaW50OEFycmF5KGEpO1xuICB9XG4gIHJldHVybiBuZXcgTWxCeXRlcyg0LGEsYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2NvbXBhcmUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19jb21wYXJlKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8tMTooczEuYyA+IHMyLmMpPzE6MDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA9PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDw9IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzdGhhbiBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczIsczEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMyLHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmlsbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vQWxpYXM6IGNhbWxfZmlsbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmlsbF9ieXRlcyhzLCBpLCBsLCBjKSB7XG4gIGlmIChsID4gMCkge1xuICAgIGlmIChpID09IDAgJiYgKGwgPj0gcy5sIHx8IChzLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGwgPj0gcy5jLmxlbmd0aCkpKSB7XG4gICAgICBpZiAoYyA9PSAwKSB7XG4gICAgICAgIHMuYyA9IFwiXCI7XG4gICAgICAgIHMudCA9IDI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMuYyA9IGNhbWxfc3RyX3JlcGVhdCAobCwgU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gICAgICAgIHMudCA9IChsID09IHMubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgICAgIGZvciAobCArPSBpOyBpIDwgbDsgaSsrKSBzLmNbaV0gPSBjO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgaWYgKChpMiA9PSAwKSAmJlxuICAgICAgKGxlbiA+PSBzMi5sIHx8IChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsZW4gPj0gczIuYy5sZW5ndGgpKSkge1xuICAgIHMyLmMgPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIGlmIChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBpMiA9PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSB7XG4gICAgaWYgKHMyLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMyKTtcbiAgICB2YXIgYzEgPSBzMS5jLCBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT0gNCAvKiBBUlJBWSAqLykge1xuICAgICAgaWYgKGkyIDw9IGkxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4gKGxlbiwgYzEubGVuZ3RoIC0gaTEpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIGMyIFtpMiArIGldID0gYzEuY2hhckNvZGVBdChpMSArIGkpO1xuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLGIsYyxkLGUpIHtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGEpLGIsYyxkLGUpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykgeyByZXR1cm4gcy5sIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29uY2F0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbmNhdChhLGIpIHsgcmV0dXJuIGEgKyBiIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29uY2F0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBNbEJ5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb25jYXQoczEsczIpe1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMoczEudCxzMS5jK3MyLmMsczEubCtzMi5sKVxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSkge1xuICByZXR1cm4gcy5jaGFyQ29kZUF0KGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gcy5sZW5ndGhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZSBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPy0xOihzMSA+IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8PSBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhbiBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMuYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNhbWxfanNieXRlc19vZl9zdHJpbmcocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoeCkgeyByZXR1cm4geCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSB7XG4gIGlmKGpzb29faXNfYXNjaWkocykpXG4gICAgcmV0dXJuIHM7XG4gIHJldHVybiBjYW1sX3V0ZjE2X29mX3V0Zjgocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICBpZiAoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKVxuICBlbHNlIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfdXRmOF9vZl91dGYxNihzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIG5ldyBNbEJ5dGVzKDAscyxzLmxlbmd0aCk7IH1cblxuXG4vLyBUaGUgc2VjdGlvbiBiZWxvdyBzaG91bGQgYmUgdXNlZCB3aGVuIHVzZS1qcy1zdHJpbmc9ZmFsc2VcblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocyxpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocyxpLGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19jb21wYXJlXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19jb21wYXJlKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHsgcmV0dXJuIHMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB7IHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIChzLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gcy5jIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKXtcbiAgcmV0dXJuIHMudG9VdGYxNigpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyhzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9pc19tbF9ieXRlcyhzKSB7XG4gIHJldHVybiAocyBpbnN0YW5jZW9mIE1sQnl0ZXMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfYnl0ZXNfY29udGVudChzKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICBkZWZhdWx0OiAvKiBQQVJUSUFMICovXG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmM7XG4gIGNhc2UgNDpcbiAgICByZXR1cm4gcy5jXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWlcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gKHR5cGVvZiBzID09PSBcInN0cmluZ1wiICYmICEvW15cXHgwMC1cXHhmZl0vLnRlc3QocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9pc19tbF9ieXRlcyhzKTtcbn1cblxuLy8gVGhlIGZ1bmN0aW9ucyBiZWxvdyBhcmUgZGVwcmVjYXRlZFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nKHMpIHsgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbmV3X3N0cmluZyAocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19mcm9tX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RvX2pzX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3RvX2pzX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdG9fc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9ieXRlcyh4KSB7IHJldHVybiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHgpIH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkLCBBbmR5IFJheVxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuLy9cbi8vIEJpZ2FycmF5LlxuLy9cbi8vIC0gYWxsIGJpZ2FycmF5IHR5cGVzIGluY2x1ZGluZyBJbnQ2NCBhbmQgQ29tcGxleC5cbi8vIC0gZm9ydHJhbiArIGMgbGF5b3V0c1xuLy8gLSBzdWIvc2xpY2UvcmVzaGFwZVxuLy8gLSByZXRhaW4gZmFzdCBwYXRoIGZvciAxZCBhcnJheSBhY2Nlc3NcblxuLy9Qcm92aWRlczogY2FtbF9iYV9pbml0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2JhX2luaXQoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemUoZGltcykge1xuICB2YXIgbl9kaW1zID0gZGltcy5sZW5ndGg7XG4gIHZhciBzaXplID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuX2RpbXM7IGkrKykge1xuICAgIGlmIChkaW1zW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmNyZWF0ZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIHNpemUgPSBzaXplICogZGltc1tpXTtcbiAgfVxuICByZXR1cm4gc2l6ZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKXtcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDc6IGNhc2UgMTA6IGNhc2UgMTE6IHJldHVybiAyO1xuICBkZWZhdWx0OiByZXR1cm4gMTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpe1xuICB2YXIgdmlldztcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDA6ICB2aWV3ID0gRmxvYXQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxOiAgdmlldyA9IEZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMjogIHZpZXcgPSBJbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDM6ICB2aWV3ID0gVWludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgNDogIHZpZXcgPSBJbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA1OiAgdmlldyA9IFVpbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA2OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDc6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgODogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA5OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDEwOiB2aWV3ID0gRmxvYXQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxMTogdmlldyA9IEZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTI6IHZpZXcgPSBVaW50OEFycmF5OyBicmVhaztcbiAgfVxuICBpZiAoIXZpZXcpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmNyZWF0ZTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgdmFyIGRhdGEgPSBuZXcgdmlldyhzaXplICogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSk7XG4gIHJldHVybiBkYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1ZlcnNpb246IDwgNC4xMVxudmFyIGNhbWxfYmFfY3VzdG9tX25hbWUgPSBcIl9iaWdhcnJheVwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPj0gNC4xMVxudmFyIGNhbWxfYmFfY3VzdG9tX25hbWUgPSBcIl9iaWdhcnIwMlwiXG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpLCBjYW1sX2ludDY0X2hpMzIsIGNhbWxfaW50NjRfbG8zMlxuZnVuY3Rpb24gTWxfQmlnYXJyYXkgKGtpbmQsIGxheW91dCwgZGltcywgYnVmZmVyKSB7XG5cbiAgdGhpcy5raW5kICAgPSBraW5kIDtcbiAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gIHRoaXMuZGltcyAgID0gZGltcztcbiAgdGhpcy5kYXRhID0gYnVmZmVyO1xufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBjYW1sX2JhX2N1c3RvbV9uYW1lO1xuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24gKGFyZykge1xuICB2YXIgb2ZzID0gMDtcbiAgaWYodHlwZW9mIGFyZyA9PT0gXCJudW1iZXJcIikgYXJnID0gW2FyZ107XG4gIGlmICghIChhcmcgaW5zdGFuY2VvZiBBcnJheSkpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ2FycmF5LmpzOiBpbnZhbGlkIG9mZnNldFwiKTtcbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYXJnLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5nZXQvc2V0OiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIGlmKHRoaXMubGF5b3V0ID09IDAgLyogY19sYXlvdXQgKi8pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFyZ1tpXSA8IDAgfHwgYXJnW2ldID49IHRoaXMuZGltc1tpXSlcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyBhcmdbaV07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmRpbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmIChhcmdbaV0gPCAxIHx8IGFyZ1tpXSA+IHRoaXMuZGltc1tpXSl7XG4gICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIG9mcyA9IChvZnMgKiB0aGlzLmRpbXNbaV0pICsgKGFyZ1tpXSAtIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2ZzO1xufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGwgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBoID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobCxoKTtcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciByID0gdGhpcy5kYXRhW29mcyAqIDIgKyAwXTtcbiAgICB2YXIgaSA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgcmV0dXJuIFsyNTQsIHIsIGldO1xuICBkZWZhdWx0OlxuICAgIHJldHVybiB0aGlzLmRhdGFbb2ZzXVxuICB9XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IGNhbWxfaW50NjRfaGkzMih2KTtcbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSB2WzFdO1xuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSB2WzJdO1xuICAgIGJyZWFrO1xuICBkZWZhdWx0OlxuICAgIHRoaXMuZGF0YVtvZnNdID0gdjtcbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMFxufVxuXG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKHYpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHZhciBhID0gY2FtbF9pbnQ2NF9sbzMyKHYpO1xuICAgIHZhciBiID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGlmKGEgPT0gYil7XG4gICAgICB0aGlzLmRhdGEuZmlsbChhKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHRoaXMuZGF0YVtpXSA9IChpJTIgPT0gMCkgPyBhIDogYjtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB2YXIgaW0gPSB2WzFdO1xuICAgIHZhciByZSA9IHZbMl07XG4gICAgaWYoaW0gPT0gcmUpe1xuICAgICAgdGhpcy5kYXRhLmZpbGwoaW0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGltIDogcmU7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBkZWZhdWx0OlxuICAgIHRoaXMuZGF0YS5maWxsKHYpO1xuICAgIGJyZWFrO1xuICB9XG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAoYiwgdG90YWwpIHtcbiAgaWYgKHRoaXMubGF5b3V0ICE9IGIubGF5b3V0IHx8IHRoaXMua2luZCAhPSBiLmtpbmQpIHtcbiAgICB2YXIgazEgPSB0aGlzLmtpbmQgfCAodGhpcy5sYXlvdXQgPDwgOCk7XG4gICAgdmFyIGsyID0gICAgYi5raW5kIHwgKGIubGF5b3V0IDw8IDgpO1xuICAgIHJldHVybiBrMiAtIGsxO1xuICB9XG4gIGlmICh0aGlzLmRpbXMubGVuZ3RoICE9IGIuZGltcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gYi5kaW1zLmxlbmd0aCAtIHRoaXMuZGltcy5sZW5ndGg7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKHRoaXMuZGltc1tpXSAhPSBiLmRpbXNbaV0pXG4gICAgICByZXR1cm4gKHRoaXMuZGltc1tpXSA8IGIuZGltc1tpXSkgPyAtMSA6IDE7XG4gIHN3aXRjaCAodGhpcy5raW5kKSB7XG4gIGNhc2UgMDpcbiAgY2FzZSAxOlxuICBjYXNlIDEwOlxuICBjYXNlIDExOlxuICAgIC8vIEZsb2F0c1xuICAgIHZhciB4LCB5O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICB4ID0gdGhpcy5kYXRhW2ldO1xuICAgICAgeSA9IGIuZGF0YVtpXTtcbiAgICAgIGlmICh4IDwgeSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHggPiB5KVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGlmICh4ICE9IHkpIHtcbiAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgaWYgKHggPT0geCkgcmV0dXJuIDE7XG4gICAgICAgIGlmICh5ID09IHkpIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSs9Mikge1xuICAgICAgLy8gQ2hlY2sgaGlnaGVzdCBiaXRzIGZpcnN0XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPCBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHRoaXMuZGF0YVtpKzFdID4gYi5kYXRhW2krMV0pXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApIDwgKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICgodGhpcy5kYXRhW2ldID4+PiAwKSA+IChiLmRhdGFbaV0gPj4+IDApKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMjpcbiAgY2FzZSAzOlxuICBjYXNlIDQ6XG4gIGNhc2UgNTpcbiAgY2FzZSA2OlxuICBjYXNlIDg6XG4gIGNhc2UgOTpcbiAgY2FzZSAxMjpcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZGF0YVtpXSA8IGIuZGF0YVtpXSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHRoaXMuZGF0YVtpXSA+IGIuZGF0YVtpXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBNbF9CaWdhcnJheV9jXzFfMVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gTWxfQmlnYXJyYXlfY18xXzEoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcbiAgdGhpcy5raW5kICAgPSBraW5kIDtcbiAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gIHRoaXMuZGltcyAgID0gZGltcztcbiAgdGhpcy5kYXRhICAgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZSA9IG5ldyBNbF9CaWdhcnJheSgpXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24gKGFyZykge1xuICBpZih0eXBlb2YgYXJnICE9PSBcIm51bWJlclwiKXtcbiAgICBpZigoYXJnIGluc3RhbmNlb2YgQXJyYXkpICYmIGFyZy5sZW5ndGggPT0gMSlcbiAgICAgIGFyZyA9IGFyZ1swXTtcbiAgICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIk1sX0JpZ2FycmF5X2NfMV8xLm9mZnNldFwiKTtcbiAgfVxuICBpZiAoYXJnIDwgMCB8fCBhcmcgPj0gdGhpcy5kaW1zWzBdKVxuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFyZztcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChvZnMpIHtcbiAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9mcyx2KSB7XG4gIHRoaXMuZGF0YVtvZnNdID0gdjtcbiAgcmV0dXJuIDBcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jb21wYXJlXG5mdW5jdGlvbiBjYW1sX2JhX2NvbXBhcmUoYSxiLHRvdGFsKXtcbiAgcmV0dXJuIGEuY29tcGFyZShiLHRvdGFsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBNbF9CaWdhcnJheV9jXzFfMSwgY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKXtcbiAgdmFyIHNpemVfcGVyX2VsZW1lbnQgPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpO1xuICBpZihjYW1sX2JhX2dldF9zaXplKGRpbXMpICogc2l6ZV9wZXJfZWxlbWVudCAhPSBkYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImxlbmd0aCBkb2Vzbid0IG1hdGNoIGRpbXNcIik7XG4gIH1cbiAgaWYobGF5b3V0ID09IDAgJiYgLy8gY19sYXlvdXRcbiAgICAgZGltcy5sZW5ndGggPT0gMSAmJiAvLyBBcnJheTFcbiAgICAgc2l6ZV9wZXJfZWxlbWVudCA9PSAxKSAvLyAxLXRvLTEgbWFwcGluZ1xuICAgIHJldHVybiBuZXcgTWxfQmlnYXJyYXlfY18xXzEoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlKGtpbmQsIGxheW91dCwgZGltc19tbCkge1xuICB2YXIgZGltcyA9IGNhbWxfanNfZnJvbV9hcnJheShkaW1zX21sKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfY2hhbmdlX2xheW91dChiYSwgbGF5b3V0KSB7XG4gIGlmKGJhLmxheW91dCA9PSBsYXlvdXQpIHJldHVybiBiYTtcbiAgdmFyIG5ld19kaW1zID0gW11cbiAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIG5ld19kaW1zW2ldID0gYmEuZGltc1tiYS5kaW1zLmxlbmd0aCAtIGkgLSAxXTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBsYXlvdXQsIG5ld19kaW1zLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kXG5mdW5jdGlvbiBjYW1sX2JhX2tpbmQoYmEpIHtcbiAgcmV0dXJuIGJhLmtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbGF5b3V0XG5mdW5jdGlvbiBjYW1sX2JhX2xheW91dChiYSkge1xuICByZXR1cm4gYmEubGF5b3V0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX251bV9kaW1zXG5mdW5jdGlvbiBjYW1sX2JhX251bV9kaW1zKGJhKSB7XG4gIHJldHVybiBiYS5kaW1zLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1cbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9kaW0oYmEsIGkpIHtcbiAgaWYgKGkgPCAwIHx8IGkgPj0gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuZGltXCIpO1xuICByZXR1cm4gYmEuZGltc1tpXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fMVxuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzEoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fMlxuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzIoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fM1xuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzMoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9nZW5lcmljKGJhLCBpKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKTtcbiAgcmV0dXJuIGJhLmdldChvZnMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDE2KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMSA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcyArIDEpO1xuICByZXR1cm4gKGIxIHwgKGIyIDw8IDgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQzMihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDMgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyswKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcysxKTtcbiAgdmFyIGIzID0gYmEuZ2V0KG9mcysyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyszKTtcbiAgcmV0dXJuICggKGIxIDw8IDApICB8XG4gICAgICAgICAgIChiMiA8PCA4KSAgfFxuICAgICAgICAgICAoYjMgPDwgMTYpIHxcbiAgICAgICAgICAgKGI0IDw8IDI0KSApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDY0KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgNyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICB2YXIgYjUgPSBiYS5nZXQob2ZzKzQpO1xuICB2YXIgYjYgPSBiYS5nZXQob2ZzKzUpO1xuICB2YXIgYjcgPSBiYS5nZXQob2ZzKzYpO1xuICB2YXIgYjggPSBiYS5nZXQob2ZzKzcpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbYjgsYjcsYjYsYjUsYjQsYjMsYjIsYjFdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMShiYSwgaTApIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoaTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMihiYSwgaTAsIGkxKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMV0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfM1xuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMyhiYSwgaTAsIGkxLCBpMikge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfZ2VuZXJpYyhiYSwgaSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSksIHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDE2KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMSA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzEsICh2ID4+PiA4KSAmIDB4ZmYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQzMihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDMgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYmEuc2V0KG9mcyswLCAgdiAgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzIsICh2ID4+PiAxNikgJiAweGZmKTtcbiAgYmEuc2V0KG9mcyszLCAodiA+Pj4gMjQpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDY0KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgNyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgdiA9IGNhbWxfaW50NjRfdG9fYnl0ZXModik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCA4OyBpKyspIGJhLnNldChvZnMraSwgdls3LWldKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMShiYSwgaTAsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChpMCksIHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8yXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8yKGJhLCBpMCwgaTEsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTFdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8zXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8zKGJhLCBpMCwgaTEsIGkyLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLGkxLGkyXSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9maWxsXG5mdW5jdGlvbiBjYW1sX2JhX2ZpbGwoYmEsIHYpIHtcbiAgYmEuZmlsbCh2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2JsaXQoc3JjLCBkc3QpIHtcbiAgaWYgKGRzdC5kaW1zLmxlbmd0aCAhPSBzcmMuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRzdC5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmIChkc3QuZGltc1tpXSAhPSBzcmMuZGltc1tpXSlcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmJsaXQ6IGRpbWVuc2lvbiBtaXNtYXRjaFwiKTtcbiAgZHN0LmRhdGEuc2V0KHNyYy5kYXRhKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc3ViXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zdWIoYmEsIG9mcywgbGVuKSB7XG4gIHZhciBjaGFuZ2VkX2RpbTtcbiAgdmFyIG11bCA9IDE7XG4gIGlmIChiYS5sYXlvdXQgPT0gMCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIG11bCA9IG11bCAqIGJhLmRpbXNbaV07XG4gICAgY2hhbmdlZF9kaW0gPSAwO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgKGJhLmRpbXMubGVuZ3RoIC0gMSk7IGkrKylcbiAgICAgIG11bCA9IG11bCAqIGJhLmRpbXNbaV07XG4gICAgY2hhbmdlZF9kaW0gPSBiYS5kaW1zLmxlbmd0aCAtIDE7XG4gICAgb2ZzID0gb2ZzIC0gMTtcbiAgfVxuICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8IChvZnMgKyBsZW4pID4gYmEuZGltc1tjaGFuZ2VkX2RpbV0pe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnN1YjogYmFkIHN1Yi1hcnJheVwiKTtcbiAgfVxuICB2YXIgbmV3X2RpbXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIG5ld19kaW1zW2ldID0gYmEuZGltc1tpXTtcbiAgbmV3X2RpbXNbY2hhbmdlZF9kaW1dID0gbGVuO1xuICBtdWwgKj0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBtdWwsIChvZnMgKyBsZW4pICogbXVsKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIG5ld19kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2xpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc2xpY2UoYmEsIHZpbmQpIHtcbiAgdmluZCA9IGNhbWxfanNfZnJvbV9hcnJheSh2aW5kKTtcbiAgdmFyIG51bV9pbmRzID0gdmluZC5sZW5ndGg7XG4gIHZhciBpbmRleCA9IFtdO1xuICB2YXIgc3ViX2RpbXMgPSBbXTtcbiAgdmFyIG9mcztcblxuICBpZiAobnVtX2luZHMgPiBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5zbGljZTogdG9vIG1hbnkgaW5kaWNlc1wiKTtcblxuICAvLyBDb21wdXRlIG9mZnNldCBhbmQgY2hlY2sgYm91bmRzXG4gIGlmIChiYS5sYXlvdXQgPT0gMCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2ldID0gdmluZFtpXTtcbiAgICBmb3IgKDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDA7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKG51bV9pbmRzKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzICsgaV0gPSB2aW5kW2ldO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSAxO1xuICAgIHN1Yl9kaW1zID0gYmEuZGltcy5zbGljZSgwLCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzKTtcbiAgfVxuICBvZnMgPSBiYS5vZmZzZXQoaW5kZXgpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoc3ViX2RpbXMpO1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogc2l6ZV9wZXJfZWxlbWVudCwgKG9mcyArIHNpemUpICogc2l6ZV9wZXJfZWxlbWVudCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBzdWJfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3Jlc2hhcGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbmZ1bmN0aW9uIGNhbWxfYmFfcmVzaGFwZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbmV3X2RpbSA9IFtdO1xuICB2YXIgbnVtX2RpbXMgPSB2aW5kLmxlbmd0aDtcblxuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgfVxuICB2YXIgbnVtX2VsdHMgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIHtcbiAgICBuZXdfZGltW2ldID0gdmluZFtpXTtcbiAgICBpZiAobmV3X2RpbVtpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgbnVtX2VsdHMgPSBudW1fZWx0cyAqIG5ld19kaW1baV07XG4gIH1cblxuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIC8vIENoZWNrIHRoYXQgc2l6ZXMgYWdyZWVcbiAgaWYgKG51bV9lbHRzICE9IHNpemUpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogc2l6ZSBtaXNtYXRjaFwiKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIG5ld19kaW0sIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NlcmlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2ludDY0X3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfYmFfc2VyaWFsaXplKHdyaXRlciwgYmEsIHN6KSB7XG4gIHdyaXRlci53cml0ZSgzMiwgYmEuZGltcy5sZW5ndGgpO1xuICB3cml0ZXIud3JpdGUoMzIsIChiYS5raW5kIHwgKGJhLmxheW91dCA8PCA4KSkpO1xuICBpZihiYS5jYW1sX2N1c3RvbSA9PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZihiYS5kaW1zW2ldIDwgMHhmZmZmKVxuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRpbXNbaV0pO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgMHhmZmZmKTtcbiAgICAgICAgd3JpdGVyLndyaXRlKDMyLCAwKTtcbiAgICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIGVsc2VcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgd3JpdGVyLndyaXRlKDMyLGJhLmRpbXNbaV0pXG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSg4LCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHdyaXRlci53cml0ZSg4LDApO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6ICAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGJhLmdldChpKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGJhLmdldChpKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGIpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBqID0gYmEuZ2V0KGkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoalsxXSkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoalsyXSkpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBjb21wbGV4ID0gYmEuZ2V0KGkpO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzFdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsyXSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHN6WzBdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA0O1xuICBzelsxXSA9ICg0ICsgYmEuZGltcy5sZW5ndGgpICogODtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kZXNlcmlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzLCBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG5mdW5jdGlvbiBjYW1sX2JhX2Rlc2VyaWFsaXplKHJlYWRlciwgc3osIG5hbWUpe1xuICB2YXIgbnVtX2RpbXMgPSByZWFkZXIucmVhZDMycygpO1xuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB3cm9uZyBudW1iZXIgb2YgYmlnYXJyYXkgZGltZW5zaW9uc1wiKTtcbiAgdmFyIHRhZyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBraW5kID0gdGFnICYgMHhmZlxuICB2YXIgbGF5b3V0ID0gKHRhZyA+PiA4KSAmIDE7XG4gIHZhciBkaW1zID0gW11cbiAgaWYobmFtZSA9PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgICAgdmFyIHNpemVfZGltID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICAgIGlmKHNpemVfZGltID09IDB4ZmZmZil7XG4gICAgICAgIHZhciBzaXplX2RpbV9oaSA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIHZhciBzaXplX2RpbV9sbyA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIGlmKHNpemVfZGltX2hpICE9IDApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBiaWdhcnJheSBkaW1lbnNpb24gb3ZlcmZsb3cgaW4gMzJiaXRcIik7XG4gICAgICAgIHNpemVfZGltID0gc2l6ZV9kaW1fbG87XG4gICAgICB9XG4gICAgICBkaW1zLnB1c2goc2l6ZV9kaW0pO1xuICAgIH1cbiAgZWxzZVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykgZGltcy5wdXNoKHJlYWRlci5yZWFkMzJ1KCkpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoZGltcyk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpO1xuICB2YXIgYmEgPSBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICB2YXIgc2l4dHkgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgaWYoc2l4dHkpIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY2Fubm90IHJlYWQgYmlnYXJyYXkgd2l0aCA2NC1iaXQgT0NhbWwgaW50c1wiKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OiAvLyAoaW50NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGludDY0ID0gY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KTtcbiAgICAgIGJhLnNldChpLGludDY0KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBmID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksZik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIHZhciBmID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksZik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIHZhciByZSA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIHZhciBpbSA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIGJhLnNldChpLFsyNTQscmUsaW1dKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciByZSA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBpbSA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGJhLnNldChpLFsyNTQscmUsaW1dKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgfVxuICBzelswXSA9ICg0ICsgbnVtX2RpbXMpICogNDtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL0RlcHJlY2F0ZWRcbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2Zyb21cbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9mcm9tKGRhdGExLCBkYXRhMiwganN0eXAsIGtpbmQsIGxheW91dCwgZGltcyl7XG4gIGlmKGRhdGEyIHx8IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCkgPT0gMil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9jcmVhdGVfZnJvbTogdXNlIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcIik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGExKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9oYXNoIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9oYXNoKGJhKXtcbiAgdmFyIG51bV9lbHRzID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgdmFyIGggPSAwO1xuICBzd2l0Y2goYmEua2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDI1NikgbnVtX2VsdHMgPSAyNTY7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDQgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgOCkgfCAoYmEuZGF0YVtpKzJdIDw8IDE2KSB8IChiYS5kYXRhW2krM10gPDwgMjQpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIHcgPSAwO1xuICAgIHN3aXRjaCAobnVtX2VsdHMgJiAzKSB7XG4gICAgY2FzZSAzOiB3ICA9IGJhLmRhdGFbaSsyXSA8PCAxNjsgICAgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlIDI6IHcgfD0gYmEuZGF0YVtpKzFdIDw8IDg7ICAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMTogdyB8PSBiYS5kYXRhW2krMF07XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgaWYobnVtX2VsdHMgPiAxMjgpIG51bV9lbHRzID0gMTI4O1xuICAgIHZhciB3ID0gMCwgaSA9MDtcbiAgICBmb3IoaSA9IDA7IGkgKyAyIDw9IGJhLmRhdGEubGVuZ3RoOyBpKz0yKXtcbiAgICAgIHcgPSBiYS5kYXRhW2krMF0gfCAoYmEuZGF0YVtpKzFdIDw8IDE2KTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLHcpO1xuICAgIH1cbiAgICBpZiAoKG51bV9lbHRzICYgMSkgIT0gMClcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDc6ICAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBudW1fZWx0cyAqPSAyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBudW1fZWx0cyAqPTI7IC8qIGZhbGx0aHJvdWdoICovXG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV90b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJhKXtcbiAgcmV0dXJuIGJhLmRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSl7XG4gIHZhciBraW5kO1xuICBpZiAgICAgICh0YSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSkga2luZCA9IDA7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSBraW5kID0gMTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQ4QXJyYXkpIGtpbmQgPSAyO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQxNkFycmF5KSBraW5kID0gNDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MTZBcnJheSkga2luZCA9IDU7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgcmV0dXJuIGtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGtpbmQgPSBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpO1xuICB2YXIgdGEgPVxuICAgICAgLyogTmVlZGVkIHRvIGF2b2lkIHVuc2lnbmVkIHNldHRlcnMgb3ZlcmZsb3dpbmdcbiAgICAgICAgIHRoZSByYW5nZSBvZiBPQ2FtbCBbaW50MzJdIHZhbHVlcy4gKi9cbiAgICAgIHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXkgP1xuICAgICAgbmV3IEludDMyQXJyYXkodGEuYnVmZmVyICx0YS5ieXRlT2Zmc2V0LCB0YS5sZW5ndGgpIDogdGE7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gU3lzXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLlN5c19lcnJvciwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N5c19leGl0IChjb2RlKSB7XG4gIGlmKGdsb2JhbFRoaXMucXVpdCkgZ2xvYmFsVGhpcy5xdWl0KGNvZGUpO1xuICAvL25vZGVqc1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQpXG4gICAgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQoY29kZSk7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkZ1bmN0aW9uICdleGl0JyBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuKXtcbiAgc3dpdGNoKGV4blsyXSkge1xuICBjYXNlIC04OiAvLyBNYXRjaF9mYWlsdXJlXG4gIGNhc2UgLTExOiAvLyBBc3NlcnRfZmFpbHVyZVxuICBjYXNlIC0xMjogLy8gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcbiAgICByZXR1cm4gMTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihleG4pe1xuICB2YXIgciA9IFwiXCI7XG4gIGlmKGV4blswXSA9PSAwKSB7XG4gICAgciArPSBleG5bMV1bMV07XG4gICAgaWYoZXhuLmxlbmd0aCA9PSAzICYmIGV4blsyXVswXSA9PSAwICYmIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuWzFdKSkge1xuXG4gICAgICB2YXIgYnVja2V0ID0gZXhuWzJdO1xuICAgICAgdmFyIHN0YXJ0ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHN0YXJ0ID0gMlxuICAgICAgdmFyIGJ1Y2tldCA9IGV4bjtcbiAgICB9XG4gICAgciArPSBcIihcIjtcbiAgICBmb3IodmFyIGkgPSBzdGFydDsgaSA8IGJ1Y2tldC5sZW5ndGg7IGkgKyspe1xuICAgICAgaWYoaSA+IHN0YXJ0KSByKz1cIiwgXCI7XG4gICAgICB2YXIgdiA9IGJ1Y2tldFtpXVxuICAgICAgaWYodHlwZW9mIHYgPT0gXCJudW1iZXJcIilcbiAgICAgICAgcis9IHYudG9TdHJpbmcoKTtcbiAgICAgIGVsc2UgaWYodiBpbnN0YW5jZW9mIE1sQnl0ZXMpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIGlmKHR5cGVvZiB2ID09IFwic3RyaW5nXCIpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIHIgKz0gXCJfXCI7XG4gICAgfVxuICAgIHIgKz0gXCIpXCJcbiAgfSBlbHNlIGlmIChleG5bMF0gPT0gMjQ4KXtcbiAgICByICs9IGV4blsxXVxuICB9XG4gIHJldHVybiByXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX2Zvcm1hdF9leGNlcHRpb24sIGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycil7XG4gIGlmKGVyciBpbnN0YW5jZW9mIEFycmF5ICYmIChlcnJbMF0gPT0gMCB8fCBlcnJbMF0gPT0gMjQ4KSkge1xuICAgIHZhciBoYW5kbGVyID0gY2FtbF9uYW1lZF92YWx1ZShcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIik7XG4gICAgaWYoaGFuZGxlcikgY2FtbF9jYWxsYmFjayhoYW5kbGVyLCBbZXJyLGZhbHNlXSk7XG4gICAgZWxzZSB7XG4gICAgICB2YXIgbXNnID0gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGVycik7XG4gICAgICB2YXIgYXRfZXhpdCA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIik7XG4gICAgICBpZihhdF9leGl0KSBjYW1sX2NhbGxiYWNrKGF0X2V4aXQsIFswXSk7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiBcIiArIG1zZyk7XG4gICAgICBpZihlcnIuanNfZXJyb3IpIHRocm93IGVyci5qc19lcnJvcjtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgZXJyXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfc3RhdGljX2VudlxuZnVuY3Rpb24gY2FtbF9zZXRfc3RhdGljX2VudihrLHYpe1xuICBpZighZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYpXG4gICAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYgPSB7fVxuICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltrXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3N5c19nZXRlbnYgKGNvbnN0KVxuZnVuY3Rpb24ganNvb19zeXNfZ2V0ZW52KG4pIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIC8vbm9kZWpzIGVudlxuICBpZihwcm9jZXNzXG4gICAgICYmIHByb2Nlc3MuZW52XG4gICAgICYmIHByb2Nlc3MuZW52W25dICE9IHVuZGVmaW5lZClcbiAgICByZXR1cm4gcHJvY2Vzcy5lbnZbbl07XG4gIGlmKGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52XG4gICAgICYmIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dKVxuICAgIHJldHVybiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRlbnYgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG5mdW5jdGlvbiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpIHtcbiAgdmFyIHIgPSBqc29vX3N5c19nZXRlbnYoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSkpO1xuICBpZihyID09PSB1bmRlZmluZWQpXG4gICAgY2FtbF9yYWlzZV9ub3RfZm91bmQgKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52XG4vL1JlcXVpcmVzOiBjYW1sX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYobmFtZSl7XG4gIHJldHVybiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgY2FtbF9hcmd2ID0gKChmdW5jdGlvbiAoKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICB2YXIgbWFpbiA9IFwiYS5vdXRcIjtcbiAgdmFyIGFyZ3MgPSBbXVxuXG4gIGlmKHByb2Nlc3NcbiAgICAgJiYgcHJvY2Vzcy5hcmd2XG4gICAgICYmIHByb2Nlc3MuYXJndi5sZW5ndGggPiAxKSB7XG4gICAgdmFyIGFyZ3YgPSBwcm9jZXNzLmFyZ3ZcbiAgICAvL25vZGVqc1xuICAgIG1haW4gPSBhcmd2WzFdO1xuICAgIGFyZ3MgPSBhcmd2LnNsaWNlKDIpO1xuICB9XG5cbiAgdmFyIHAgPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhtYWluKTtcbiAgdmFyIGFyZ3MyID0gWzAsIHBdO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKylcbiAgICBhcmdzMi5wdXNoKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGFyZ3NbaV0pKTtcbiAgcmV0dXJuIGFyZ3MyO1xufSkoKSlcblxuLy9Qcm92aWRlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxudmFyIGNhbWxfZXhlY3V0YWJsZV9uYW1lID0gY2FtbF9hcmd2WzFdXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9hcmd2IChhKSB7XG4gIHJldHVybiBbMCwgY2FtbF9hcmd2WzFdLCBjYW1sX2FyZ3ZdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2FyZ3YgKGEpIHtcbiAgcmV0dXJuIGNhbWxfYXJndjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbW9kaWZ5X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfbW9kaWZ5X2FyZ3YoYXJnKXtcbiAgY2FtbF9hcmd2ID0gYXJnO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuZnVuY3Rpb24gY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lKGEpe1xuICByZXR1cm4gY2FtbF9leGVjdXRhYmxlX25hbWVcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICB2YXIgY21kID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoY21kKTtcbiAgaWYgKHR5cGVvZiByZXF1aXJlICE9IFwidW5kZWZpbmVkXCIpe1xuICAgIHZhciBjaGlsZF9wcm9jZXNzID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpO1xuICAgIGlmKGNoaWxkX3Byb2Nlc3MgJiYgY2hpbGRfcHJvY2Vzcy5leGVjU3luYylcbiAgICAgIHRyeSB7XG4gICAgICAgIGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMoY21kLHtzdGRpbzogJ2luaGVyaXQnfSk7XG4gICAgICAgIHJldHVybiAwXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiAxXG4gICAgICB9XG4gIH1cbiAgZWxzZSByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWUgbXV0YWJsZVxudmFyIGNhbWxfaW5pdGlhbF90aW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAqIDAuMDAxO1xuZnVuY3Rpb24gY2FtbF9zeXNfdGltZSAoKSB7XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICByZXR1cm4gbm93ICogMC4wMDEgLSBjYW1sX2luaXRpYWxfdGltZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuXG4vL1JlcXVpcmVzOiBjYW1sX3N5c190aW1lXG5mdW5jdGlvbiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4oYikge1xuICByZXR1cm4gY2FtbF9zeXNfdGltZSgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yYW5kb21fc2VlZCBtdXRhYmxlXG4vL1RoZSBmdW5jdGlvbiBuZWVkcyB0byByZXR1cm4gYW4gYXJyYXkgc2luY2UgT0NhbWwgNC4wLi4uXG5mdW5jdGlvbiBjYW1sX3N5c19yYW5kb21fc2VlZCAoKSB7XG4gIGlmIChnbG9iYWxUaGlzLmNyeXB0bykge1xuICAgICBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgICAgdmFyIGEgPSBnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDMyQXJyYXkoNCkpO1xuICAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgIH0gZWxzZSBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMpIHtcbiAgICAgICB2YXIgYSA9IG5ldyBJbnQzMkFycmF5KGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKDE2KS5idWZmZXIpO1xuICAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgIH1cbiAgfVxuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgdmFyIHggPSBub3deMHhmZmZmZmZmZipNYXRoLnJhbmRvbSgpO1xuICByZXR1cm4gWzAseF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfaW50X3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSBjb25zdFxuLy8gbWF4X2ludCAvIDQgc28gdGhhdCB0aGUgZm9sbG93aW5nIGRvZXMgbm90IG92ZXJmbG93XG4vL2xldCBtYXhfc3RyaW5nX2xlbmd0aCA9IHdvcmRfc2l6ZSAvIDggKiBtYXhfYXJyYXlfbGVuZ3RoIC0gMTs7XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplICgpIHsgcmV0dXJuICgweDdGRkZGRkZGLzQpIHwgMDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCAoKSB7IHJldHVybiBvc190eXBlID09IFwiVW5peFwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJXaW4zMlwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIkN5Z3dpblwiID8gMSA6IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJqc19vZl9vY2FtbFwiKV07XG59XG5cbi8vUHJvdmlkZXM6IG9zX3R5cGVcbnZhciBvc190eXBlID0gKGdsb2JhbFRoaXMucHJvY2VzcyAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT0gXCJ3aW4zMlwiKSA/IFwiQ3lnd2luXCIgOiBcIlVuaXhcIjtcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfY29uZmlnIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfY29uZmlnICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG9zX3R5cGUpLCAzMiwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzYXR0eVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNhdHR5KF9jaGFuKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfdmFyaWFudFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3ZhcmlhbnQoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVyc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3BhcmFtZXRlcnMoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyKCl7cmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xudmFyIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyAoYm9vbCkge1xuICBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSBib29sO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3J1bnRpbWVfd2FybmluZ3M7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9lbmFibGVkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lKF9jaGFubmVsKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJTcGFjZXRpbWUgcHJvZmlsaW5nIG9ubHkgd29ya3MgZm9yIG5hdGl2ZSBjb2RlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3hkZ19kZWZhdWx0c1xuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfeGRnX2RlZmF1bHRzKF91bml0KSB7XG4gIHJldHVybiAwOyAvLyBlbXB0eSBsaXN0XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZShuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5pc0ZpbGUocm9vdC5yZXN0KTtcbn1cbi8vQWx3YXlzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIGlmKHByb2Nlc3MgJiYgcHJvY2Vzcy5vbikge1xuICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZnVuY3Rpb24gKGVyciwgb3JpZ2luKSB7XG4gICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpO1xuICAgICAgcHJvY2Vzcy5leGl0ICgyKTtcbiAgICB9KVxuICB9XG4gIGVsc2UgaWYoZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKXtcbiAgICBnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZnVuY3Rpb24oZXZlbnQpe1xuICAgICAgaWYoZXZlbnQuZXJyb3Ipe1xuICAgICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihldmVudC5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbmNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKTtcblxuXG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbnZhciBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IEZMQUcoXCJ3aXRoLWpzLWVycm9yXCIpO1xuXG4oZnVuY3Rpb24gKCkge1xuICB2YXIgciA9IGpzb29fc3lzX2dldGVudihcIk9DQU1MUlVOUEFSQU1cIilcbiAgaWYociAhPT0gdW5kZWZpbmVkKXtcbiAgICB2YXIgbCA9IHIuc3BsaXQoXCIsXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBsLmxlbmd0aDsgaSsrKXtcbiAgICAgIGlmKGxbaV0gPT0gXCJiXCIpIHsgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSAxOyBicmVhayB9XG4gICAgICBlbHNlIGlmIChsW2ldLnN0YXJ0c1dpdGgoXCJiPVwiKSkge1xuICAgICAgICBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9ICsobFtpXS5zbGljZSgyKSl9XG4gICAgICBlbHNlIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxufSkgKClcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYmFja3RyYWNlX3N0YXR1c1xuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfYmFja3RyYWNlX3N0YXR1cyAoX3VuaXQpIHsgcmV0dXJuIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9yZWNvcmRfYmFja3RyYWNlIChiKSB7IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gYjsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90KCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Q6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UoZXhuLCBidCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QoKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWJcblxuLy9Qcm92aWRlczogY2FtbF9qc19wdXJlX2V4cHIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfcHVyZV9leHByIChmKSB7IHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFswXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9qc19zZXQobyxmLHYpIHsgb1tmXT12O3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9qc19nZXQgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19nZXQobyxmKSB7IHJldHVybiBvW2ZdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2RlbGV0ZSAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2RlbGV0ZShvLGYpIHsgZGVsZXRlIG9bZl07IHJldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2luc3RhbmNlb2YgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfaW5zdGFuY2VvZihvLGMpIHsgcmV0dXJuIChvIGluc3RhbmNlb2YgYykgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3R5cGVvZiAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3R5cGVvZihvKSB7IHJldHVybiB0eXBlb2YgbzsgfVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZVxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lKHJlcykge1xuICB2YXIgYyA9IDE7XG4gIHdoaWxlKHJlcyAmJiByZXMuam9vX3RyYW1wKXtcbiAgICByZXMgPSByZXMuam9vX3RyYW1wLmFwcGx5KG51bGwsIHJlcy5qb29fYXJncyk7XG4gICAgYysrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lX3JldHVyblxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpIHtcbiAgcmV0dXJuIHtqb29fdHJhbXA6Zixqb29fYXJnczphcmdzfTtcbn1cblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG52YXIgY2FtbF9zdGFja19kZXB0aCA9IDA7XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19jaGVja19kZXB0aFxuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoXG5mdW5jdGlvbiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCkge1xuICAgIHJldHVybiAtLWNhbWxfc3RhY2tfZGVwdGggPiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiAhZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX2NhbGxfZ2VuXG52YXIgY2FtbF9jYWxsYmFjayA9IGNhbWxfY2FsbF9nZW47XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6IGVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9zdGFja19kZXB0aCwgY2FtbF9jYWxsX2dlbiwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2ssIGNhbWxfd3JhcF9leGNlcHRpb24sIGNhbWxfcmVzdW1lX3N0YWNrLCBjYW1sX2ZyZXNoX29vX2lkLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50XG5mdW5jdGlvbiBjYW1sX2NhbGxiYWNrKGYsYXJncykge1xuICBmdW5jdGlvbiB1bmNhdWdodF9lZmZlY3RfaGFuZGxlcihlZmYsayxtcykge1xuICAgIC8vIFJlc3VtZXMgdGhlIGNvbnRpbnVhdGlvbiBrIGJ5IHJhaXNpbmcgZXhjZXB0aW9uIFVuaGFuZGxlZC5cbiAgICBjYW1sX3Jlc3VtZV9zdGFjayhrWzFdLG1zKTtcbiAgICB2YXIgZXhuID0gY2FtbF9uYW1lZF92YWx1ZShcIkVmZmVjdC5VbmhhbmRsZWRcIik7XG4gICAgaWYoZXhuKSBjYW1sX3JhaXNlX3dpdGhfYXJnKGV4biwgZWZmKTtcbiAgICBlbHNlIHtcbiAgICAgIGV4biA9IFsyNDgsY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkVmZmVjdC5VbmhhbmRsZWRcIiksIGNhbWxfZnJlc2hfb29faWQoMCldO1xuICAgICAgY2FtbF9yYWlzZV9jb25zdGFudChleG4pO1xuICAgIH1cbiAgfVxuICB2YXIgc2F2ZWRfc3RhY2tfZGVwdGggPSBjYW1sX3N0YWNrX2RlcHRoO1xuICB2YXIgc2F2ZWRfZXhuX3N0YWNrID0gY2FtbF9leG5fc3RhY2s7XG4gIHZhciBzYXZlZF9maWJlcl9zdGFjayA9IGNhbWxfZmliZXJfc3RhY2s7XG4gIHRyeSB7XG4gICAgY2FtbF9leG5fc3RhY2sgPSAwO1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPVxuICAgICAge2g6WzAsIDAsIDAsIHVuY2F1Z2h0X2VmZmVjdF9oYW5kbGVyXSwgcjp7azowLCB4OjAsIGU6MH19O1xuICAgIHZhciByZXMgPSB7am9vX3RyYW1wOiBmLFxuICAgICAgICAgICAgICAgam9vX2FyZ3M6IGFyZ3MuY29uY2F0KGZ1bmN0aW9uICh4KXtyZXR1cm4geDt9KX07XG4gICAgZG8ge1xuICAgICAgY2FtbF9zdGFja19kZXB0aCA9IDQwO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzID0gY2FtbF9jYWxsX2dlbihyZXMuam9vX3RyYW1wLCByZXMuam9vX2FyZ3MpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvKiBIYW5kbGUgZXhjZXB0aW9uIGNvbWluZyBmcm9tIEphdmFTY3JpcHQgb3IgZnJvbSB0aGUgcnVudGltZS4gKi9cbiAgICAgICAgaWYgKCFjYW1sX2V4bl9zdGFjaykgdGhyb3cgZTtcbiAgICAgICAgdmFyIGhhbmRsZXIgPSBjYW1sX2V4bl9zdGFja1sxXTtcbiAgICAgICAgY2FtbF9leG5fc3RhY2sgPSBjYW1sX2V4bl9zdGFja1syXTtcbiAgICAgICAgcmVzID0ge2pvb190cmFtcDogaGFuZGxlcixcbiAgICAgICAgICAgICAgIGpvb19hcmdzOiBbY2FtbF93cmFwX2V4Y2VwdGlvbihlKV19O1xuICAgICAgfVxuICAgIH0gd2hpbGUocmVzICYmIHJlcy5qb29fYXJncylcbiAgfSBmaW5hbGx5IHtcbiAgICBjYW1sX3N0YWNrX2RlcHRoID0gc2F2ZWRfc3RhY2tfZGVwdGg7XG4gICAgY2FtbF9leG5fc3RhY2sgPSBzYXZlZF9leG5fc3RhY2s7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9IHNhdmVkX2ZpYmVyX3N0YWNrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfanNcbmZ1bmN0aW9uIGNhbWxfaXNfanMoKSB7XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmcodW5pdCl7XG4gIHJldHVybiBGTEFHKFwidXNlLWpzLXN0cmluZ1wiKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzb29fZmxhZ3NfZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHModW5pdCl7XG4gIHJldHVybiBGTEFHKFwiZWZmZWN0c1wiKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dyYXBfZXhjZXB0aW9uIGNvbnN0IChtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyxjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBjYW1sX3dyYXBfZXhjZXB0aW9uKGUpIHtcbiAgaWYgKEZMQUcoXCJleGN3cmFwXCIpKSB7XG4gICAgaWYoZSBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gZTtcbiAgICB2YXIgZXhuO1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGNocm9tZSwgc2FmYXJpXG4gICAgaWYoZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICAgJiYgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAgICYmIGUubWVzc2FnZVxuICAgICAgICYmIGUubWVzc2FnZS5tYXRjaCgvbWF4aW11bSBjYWxsIHN0YWNrL2kpKVxuICAgICAgZXhuID0gY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdztcbiAgICAvL1N0YWNrX292ZXJmbG93OiBmaXJlZm94XG4gICAgZWxzZSBpZihnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICAgJiYgZS5tZXNzYWdlXG4gICAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC90b28gbXVjaCByZWN1cnNpb24vaSkpXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vV3JhcCBFcnJvciBpbiBKcy5FcnJvciBleGNlcHRpb25cbiAgICBlbHNlIGlmKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yICYmIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpKVxuICAgICAgZXhuID0gWzAsY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIiksZV07XG4gICAgZWxzZVxuICAgICAgLy9mYWxsYmFjazogd3JhcHBlZCBpbiBGYWlsdXJlXG4gICAgICBleG4gPSBbMCxjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKFN0cmluZyhlKSldO1xuICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhbiBlcnJvciBhdCBoYW5kLCBsZXQncyB1c2UgaXQuXG4gICAgaWYgKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yKVxuICAgICAgZXhuLmpzX2Vycm9yID0gZTtcbiAgICByZXR1cm4gZXhuO1xuICB9IGVsc2VcbiAgICByZXR1cm4gZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIGlmKGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnKVxuICAgIHJldHVybiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKTtcbiAgZWxzZSByZXR1cm4gZXhuXG59XG5cbi8vIEV4cGVyaW1lbnRhbFxuLy9Qcm92aWRlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgLy9uZXZlciByZXJhaXNlIGZvciBjb25zdGFudCBleG5cbiAgaWYoIWV4bi5qc19lcnJvciB8fCBmb3JjZSB8fCBleG5bMF0gPT0gMjQ4KSBleG4uanNfZXJyb3IgPSBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIkpzIGV4Y2VwdGlvbiBjb250YWluaW5nIGJhY2t0cmFjZVwiKTtcbiAgcmV0dXJuIGV4bjtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBbMCwgZXhuLmpzX2Vycm9yXTsgfVxuICByZXR1cm4gMDtcbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9ib29sKHgpIHsgcmV0dXJuICEheDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYm9vbCh4KSB7IHJldHVybiAreDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Zsb2F0IGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfZnJvbV9pbnQzMlxuLy9BbGlhczogY2FtbF9qc19mcm9tX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fZmxvYXQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19mbG9hdCh4KSB7IHJldHVybiB4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2ludDMyIGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfdG9fbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2pzX3RvX2ludDMyKHgpIHsgcmV0dXJuIHh8MDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9hcnJheShhKSB7XG4gIHJldHVybiBhLnNsaWNlKDEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc190b19hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc190b19hcnJheShhKSB7XG4gIHZhciBsZW4gPSBhLmxlbmd0aDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBiWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxsZW47aSsrKSBiW2krMV0gPSBhW2ldO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X29mX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X29mX2pzX2FycmF5KGEpe1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgaT1hLmxlbmd0aCAtIDE7IGk+PTA7IGktLSl7XG4gICAgdmFyIGUgPSBhW2ldO1xuICAgIGwgPSBbMCxlLGxdO1xuICB9XG4gIHJldHVybiBsXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF90b19qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF90b19qc19hcnJheShsKXtcbiAgdmFyIGEgPSBbXTtcbiAgZm9yKDsgbCAhPT0gMDsgbCA9IGxbMl0pIHtcbiAgICBhLnB1c2gobFsxXSk7XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdmFyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX3Zhcih4KSB7XG4gIHZhciB4ID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoeCk7XG4gIC8vQ2hlY2tzIHRoYXQgeCBoYXMgdGhlIGZvcm0gaWRlbnRbLmlkZW50XSpcbiAgaWYoIXgubWF0Y2goL15bYS16QS1aXyRdW2EtekEtWl8kMC05XSooXFwuW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKSokLykpe1xuICAgIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX3ZhcjogXFxcIlwiICsgeCArIFwiXFxcIiBpcyBub3QgYSB2YWxpZCBKYXZhU2NyaXB0IHZhcmlhYmxlLiBjb250aW51aW5nIC4uXCIpO1xuICAgIC8vY29uc29sZS5lcnJvcihcIkpzLlVuc2FmZS5ldmFsX3N0cmluZ1wiKVxuICB9XG4gIHJldHVybiBldmFsKHgpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19jYWxsIChjb25zdCwgbXV0YWJsZSwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19jYWxsKGYsIG8sIGFyZ3MpIHsgcmV0dXJuIGYuYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5fY2FsbCAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfZnVuX2NhbGwoZiwgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIGYoKTtcbiAgY2FzZSAyOiByZXR1cm4gZiAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIGYgKGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgcmV0dXJuIGYuYXBwbHkobnVsbCwgY2FtbF9qc19mcm9tX2FycmF5KGEpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbWV0aF9jYWxsIChtdXRhYmxlLCBjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbWV0aF9jYWxsKG8sIGYsIGFyZ3MpIHtcbiAgcmV0dXJuIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoZildLmFwcGx5KG8sIGNhbWxfanNfZnJvbV9hcnJheShhcmdzKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX25ldyAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbmV3KGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDE6IHJldHVybiBuZXcgYztcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdLGFbN10pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7IHJldHVybiBjLmFwcGx5KHRoaXMsIGNhbWxfanNfZnJvbV9hcnJheShhKSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9vanNfbmV3X2FyciAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb2pzX25ld19hcnIoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMDogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDE6IHJldHVybiBuZXcgYyAoYVswXSk7XG4gIGNhc2UgMjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgYSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgaWYobGVuID4gMCl7XG4gICAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJncyA9IFt1bmRlZmluZWRdO1xuICAgIH1cbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgICByZXR1cm4gKHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKT9jYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKTpyZXM7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1xuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgW2FyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTsgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc193cmFwX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsYXJncyk7XG4gICAgcmV0dXJuIChyZXMgaW5zdGFuY2VvZiBGdW5jdGlvbik/Y2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcyk6cmVzO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZixbdGhpcyxhcmdzXSk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkgKyAxKTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikgLSAxO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTsgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiAhZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSB7XG4gIHJldHVybiAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICAvLyBGdW5jdGlvbnMgaGF2ZSBhbiBhZGRpdGlvbmFsIGNvbnRpbnVhdGlvbiBwYXJhbWV0ZXIuIFRoaXMgc2hvdWxkXG4gIC8vIG5vdCBiZSB2aXNpYmxlIHdoZW4gY2FsbGluZyB0aGVtIGZyb20gSmF2YVNjcmlwdFxuICByZXR1cm4gKChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCkpIC0gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2VxdWFscyBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09IHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfc3RyaWN0X2VxdWFscyBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3N0cmljdF9lcXVhbHMgKHgsIHkpIHsgcmV0dXJuICsoeCA9PT0geSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19ldmFsX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19ldmFsX3N0cmluZyAocykge3JldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXhwciAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19leHByKHMpIHtcbiAgY29uc29sZS5lcnJvcihcImNhbWxfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1cmVfanNfZXhwciBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9wdXJlX2pzX2V4cHIgKHMpe1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9wdXJlX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgcmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19vYmplY3QgKG9iamVjdF9saXRlcmFsKVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfb2JqZWN0IChhKSB7XG4gIHZhciBvID0ge307XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwID0gYVtpXTtcbiAgICBvW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBbMV0pXSA9IHBbMl07XG4gIH1cbiAgcmV0dXJuIG87XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2NvbnN0YW50c1xudmFyIGNhbWxfbWFyc2hhbF9jb25zdGFudHMgPSB7XG4gIFBSRUZJWF9TTUFMTF9CTE9DSzogICAgICAgICAweDgwLFxuICBQUkVGSVhfU01BTExfSU5UOiAgICAgICAgICAgMHg0MCxcbiAgUFJFRklYX1NNQUxMX1NUUklORzogICAgICAgIDB4MjAsXG4gIENPREVfSU5UODogICAgICAgICAgICAgICAgICAweDAwLFxuICBDT0RFX0lOVDE2OiAgICAgICAgICAgICAgICAgMHgwMSxcbiAgQ09ERV9JTlQzMjogICAgICAgICAgICAgICAgIDB4MDIsXG4gIENPREVfSU5UNjQ6ICAgICAgICAgICAgICAgICAweDAzLFxuICBDT0RFX1NIQVJFRDg6ICAgICAgICAgICAgICAgMHgwNCxcbiAgQ09ERV9TSEFSRUQxNjogICAgICAgICAgICAgIDB4MDUsXG4gIENPREVfU0hBUkVEMzI6ICAgICAgICAgICAgICAweDA2LFxuICBDT0RFX0JMT0NLMzI6ICAgICAgICAgICAgICAgMHgwOCxcbiAgQ09ERV9CTE9DSzY0OiAgICAgICAgICAgICAgIDB4MTMsXG4gIENPREVfU1RSSU5HODogICAgICAgICAgICAgICAweDA5LFxuICBDT0RFX1NUUklORzMyOiAgICAgICAgICAgICAgMHgwQSxcbiAgQ09ERV9ET1VCTEVfQklHOiAgICAgICAgICAgIDB4MEIsXG4gIENPREVfRE9VQkxFX0xJVFRMRTogICAgICAgICAweDBDLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfQklHOiAgICAgMHgwRCxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTogIDB4MEUsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfQklHOiAgICAweDBGLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTogMHgwNyxcbiAgQ09ERV9DT0RFUE9JTlRFUjogICAgICAgICAgIDB4MTAsXG4gIENPREVfSU5GSVhQT0lOVEVSOiAgICAgICAgICAweDExLFxuICBDT0RFX0NVU1RPTTogICAgICAgICAgICAgICAgMHgxMixcbiAgQ09ERV9DVVNUT01fTEVOOiAgICAgICAgICAgIDB4MTgsXG4gIENPREVfQ1VTVE9NX0ZJWEVEOiAgICAgICAgICAweDE5XG59XG5cblxuLy9Qcm92aWRlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIFVJbnQ4QXJyYXlSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gczsgdGhpcy5pID0gaTsgfVxuVUludDhBcnJheVJlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDgpIHwgc1tpICsgMV1cbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDI0ID4+IDE2KSB8IHNbaSArIDFdO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzW2ldIDw8IDI0KSB8IChzW2krMV0gPDwgMTYpIHxcbiAgICAgICAgICAgIChzW2krMl0gPDwgOCkgfCBzW2krM10pID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkodGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKTtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBNbFN0cmluZ1JlYWRlciAocywgaSkgeyB0aGlzLnMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpOyB0aGlzLmkgPSBpOyB9XG5NbFN0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCA+PiAxNikgfCBzLmNoYXJDb2RlQXQoaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5zLnN1YnN0cmluZyhpLCBpICsgbGVuKSk7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgdmFyIHMgPSB0aGlzLnM7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBiW2pdID0gcy5jaGFyQ29kZUF0KGkgKyBqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gYjtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBCaWdTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBCaWdTdHJpbmdSZWFkZXIgKGJzLCBpKSB7IHRoaXMucyA9IGJzOyB0aGlzLmkgPSBpOyB9XG5CaWdTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCA4KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgMjQgPj4gMTYpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMykgICAgICAgICApID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgYXJyID0gbmV3IEFycmF5KGxlbilcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspe1xuICAgICAgYXJyW2pdID0gY2FtbF9iYV9nZXRfMSh0aGlzLnMsIGkraik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoaSk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLmRhdGEuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICB9XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoY2FtbF9pbnQ2NF9vZl9ieXRlcyAoYSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKHMsIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocyksIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gIHNpemVbMF0gPSA4O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyAodCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tYXJzaGFsKHdyaXRlciwgdiwgc2l6ZXMpIHtcbiAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzICh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSAoOCwgYltpXSk7XG4gIHNpemVzWzBdID0gODsgc2l6ZXNbMV0gPSA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX3VubWFyc2hhbFxuZnVuY3Rpb24gY2FtbF9pbnQzMl91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1ICgpKSB7XG4gIGNhc2UgMTpcbiAgICBzaXplWzBdID0gNDtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gIGNhc2UgMjpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IG5hdGl2ZSBpbnRlZ2VyIHZhbHVlIHRvbyBsYXJnZVwiKTtcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG5hdGl2ZSBpbnRlZ2VyXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF91bm1hcnNoYWwsIGNhbWxfaW50NjRfbWFyc2hhbCwgY2FtbF9pbnQ2NF9jb21wYXJlLCBjYW1sX2ludDY0X2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsLCBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2VyaWFsaXplLCBjYW1sX2JhX2Rlc2VyaWFsaXplLCBjYW1sX2JhX2NvbXBhcmUsIGNhbWxfYmFfaGFzaFxudmFyIGNhbWxfY3VzdG9tX29wcyA9XG4gICAge1wiX2pcIjoge1xuICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDY0X3VubWFyc2hhbCxcbiAgICAgIHNlcmlhbGl6ZSAgOiBjYW1sX2ludDY0X21hcnNoYWwsXG4gICAgICBmaXhlZF9sZW5ndGggOiA4LFxuICAgICAgY29tcGFyZSA6IGNhbWxfaW50NjRfY29tcGFyZSxcbiAgICAgIGhhc2ggOiBjYW1sX2ludDY0X2hhc2hcbiAgICB9LFxuICAgICBcIl9pXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50MzJfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX25cIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycmF5XCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnJheVwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9LFxuICAgICBcIl9iaWdhcnIwMlwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyMDJcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfVxuICAgIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcykge1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdGKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cbiAgdmFyIG1hZ2ljID0gcmVhZGVyLnJlYWQzMnUgKClcbiAgc3dpdGNoKG1hZ2ljKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgY29tcHJlc3NlZCA9IDA7XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IGRhdGFfbGVuO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV82NCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByZWFkZXIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBjb21wcmVzc2VkID0gMTtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciB1bmNvbXByZXNzZWRfZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfMzIgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZHZscSAob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIHRoaXMgcGxhdGZvcm1cIik7XG4gICAgfVxuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRjogLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gYSAzMi1iaXQgcGxhdGZvcm1cIik7XG4gICAgYnJlYWtcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogYmFkIG9iamVjdFwiKTtcbiAgICBicmVhaztcbiAgfVxuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGludGVybl9vYmpfdGFibGUgPSAobnVtX29iamVjdHMgPiAwKT9bXTpudWxsO1xuICB2YXIgb2JqX2NvdW50ZXIgPSAwO1xuICBmdW5jdGlvbiBpbnRlcm5fcmVjIChyZWFkZXIpIHtcbiAgICB2YXIgY29kZSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgaWYgKGNvZGUgPj0gMHg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8pIHtcbiAgICAgIGlmIChjb2RlID49IDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8pIHtcbiAgICAgICAgdmFyIHRhZyA9IGNvZGUgJiAweEY7XG4gICAgICAgIHZhciBzaXplID0gKGNvZGUgPj4gNCkgJiAweDc7XG4gICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlXG4gICAgICAgIHJldHVybiAoY29kZSAmIDB4M0YpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSA+PSAweDIwLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyAqLykge1xuICAgICAgICB2YXIgbGVuID0gY29kZSAmIDB4MUY7XG4gICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2goY29kZSkge1xuICAgICAgICBjYXNlIDB4MDA6IC8vY3N0LkNPREVfSU5UODpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQ4cyAoKTtcbiAgICAgICAgY2FzZSAweDAxOiAvL2NzdC5DT0RFX0lOVDE2OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDE2cyAoKTtcbiAgICAgICAgY2FzZSAweDAyOiAvL2NzdC5DT0RFX0lOVDMyOlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgICAgICAgY2FzZSAweDAzOiAvL2NzdC5DT0RFX0lOVDY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW50ZWdlciB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwNDogLy9jc3QuQ09ERV9TSEFSRUQ4OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA1OiAvL2NzdC5DT0RFX1NIQVJFRDE2OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDE2dSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNjogLy9jc3QuQ09ERV9TSEFSRUQzMjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDg6IC8vY3N0LkNPREVfQkxPQ0szMjpcbiAgICAgICAgICB2YXIgaGVhZGVyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgdmFyIHRhZyA9IGhlYWRlciAmIDB4RkY7XG4gICAgICAgICAgdmFyIHNpemUgPSBoZWFkZXIgPj4gMTA7XG4gICAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEzOiAvL2NzdC5DT0RFX0JMT0NLNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogZGF0YSBibG9jayB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwOTogLy9jc3QuQ09ERV9TVFJJTkc4OlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQTogLy9jc3QuQ09ERV9TVFJJTkczMjpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBDOiAvL2NzdC5DT0RFX0RPVUJMRV9MSVRUTEU6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFs3IC0gaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEI6IC8vY3N0LkNPREVfRE9VQkxFX0JJRzpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0W2ldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBFOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEQ6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwNzogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEY6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTA6IC8vY3N0LkNPREVfQ09ERVBPSU5URVI6XG4gICAgICAgIGNhc2UgMHgxMTogLy9jc3QuQ09ERV9JTkZJWFBPSU5URVI6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogY29kZSBwb2ludGVyXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MTI6IC8vY3N0LkNPREVfQ1VTVE9NOlxuICAgICAgICBjYXNlIDB4MTg6IC8vY3N0LkNPREVfQ1VTVE9NX0xFTjpcbiAgICAgICAgY2FzZSAweDE5OiAvL2NzdC5DT0RFX0NVU1RPTV9GSVhFRDpcbiAgICAgICAgICB2YXIgYywgcyA9IFwiXCI7XG4gICAgICAgICAgd2hpbGUgKChjID0gcmVhZGVyLnJlYWQ4dSAoKSkgIT0gMCkgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW3NdO1xuICAgICAgICAgIHZhciBleHBlY3RlZF9zaXplO1xuICAgICAgICAgIGlmKCFvcHMpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHVua25vd24gY3VzdG9tIGJsb2NrIGlkZW50aWZpZXJcIik7XG4gICAgICAgICAgc3dpdGNoKGNvZGUpe1xuICAgICAgICAgIGNhc2UgMHgxMjogLy8gY3N0LkNPREVfQ1VTVE9NIChkZXByZWNhdGVkKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE5OiAvLyBjc3QuQ09ERV9DVVNUT01fRklYRURcbiAgICAgICAgICAgIGlmKCFvcHMuZml4ZWRfbGVuZ3RoKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGV4cGVjdGVkIGEgZml4ZWQtc2l6ZSBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gb3BzLmZpeGVkX2xlbmd0aDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxODogLy8gY3N0LkNPREVfQ1VTVE9NX0xFTlxuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgICAgLy8gU2tpcCBzaXplNjRcbiAgICAgICAgICAgIHJlYWRlci5yZWFkMzJzKCk7IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSByZWFkZXIuaTtcbiAgICAgICAgICB2YXIgc2l6ZSA9IFswXTtcbiAgICAgICAgICB2YXIgdiA9IG9wcy5kZXNlcmlhbGl6ZShyZWFkZXIsIHNpemUpO1xuICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gc2l6ZVswXSlcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbmNvcnJlY3QgbGVuZ3RoIG9mIHNlcmlhbGl6ZWQgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBtZXNzYWdlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmKGNvbXByZXNzZWQpIHtcbiAgICBpZihjYW1sX2RlY29tcHJlc3NfaW5wdXQpIHtcbiAgICAgIHZhciBkYXRhID0gcmVhZGVyLnJlYWR1aW50OGFycmF5KGRhdGFfbGVuKTtcbiAgICAgIHZhciByZXMgPSBuZXcgVWludDhBcnJheSh1bmNvbXByZXNzZWRfZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IGNhbWxfZGVjb21wcmVzc19pbnB1dChkYXRhLCByZXMpO1xuICAgICAgdmFyIHJlYWRlciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKHJlcywgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY29tcHJlc3NlZCBvYmplY3QsIGNhbm5vdCBkZWNvbXByZXNzXCIpO1xuICAgIH1cbiAgfVxuICB2YXIgcmVzID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgc2l6ZSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2ID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIGQgPSB2Lmxlbmd0aDtcbiAgICBpZiAoZCA8IHNpemUpIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgdltkXSA9IGludGVybl9yZWMgKHJlYWRlcik7XG4gIH1cbiAgaWYgKHR5cGVvZiBvZnMhPVwibnVtYmVyXCIpIG9mc1swXSA9IHJlYWRlci5pO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDIwXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA+PSA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDE2XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG5mdW5jdGlvbiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChzLCBvZnMpIHtcbiAgdmFyIHIgPSBuZXcgVUludDhBcnJheVJlYWRlcihjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpLCBvZnMpO1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N0Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT0gMCkge1xuICAgICAgYyA9IHIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPSBuNyA+PiA3KSBvdmVyZmxvd1swXSA9IHRydWU7XG4gICAgICBuID0gbjcgfCAoYyAmIDB4N0YpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuXG4gIHN3aXRjaChyLnJlYWQzMnUoKSl7XG4gIGNhc2UgMHg4NDk1QTZCRTogLyogSW50ZXh0X21hZ2ljX251bWJlcl9zbWFsbCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gMjA7XG4gICAgdmFyIGRhdGFfbGVuID0gci5yZWFkMzJ1KCk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByLnJlYWQ4dSgpICYgMHgzRjtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gdGhpcyBwbGF0Zm9ybVwiKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJGOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2JpZyAqL1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogYmFkIG9iamVjdFwiKTtcbiAgICBicmVha1xuICB9XG4gIHJldHVybiBoZWFkZXJfbGVuIC0gY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplICsgZGF0YV9sZW47XG59XG5cbi8vUHJvdmlkZXM6IE1sT2JqZWN0VGFibGVcbnZhciBNbE9iamVjdFRhYmxlO1xuaWYgKHR5cGVvZiBnbG9iYWxUaGlzLk1hcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIC8qIHBvbHlmaWxsICh1c2luZyBsaW5lYXIgc2VhcmNoKSAqL1xuICAgIGZ1bmN0aW9uIE5haXZlTG9va3VwKG9ianMpIHsgdGhpcy5vYmpzID0gb2JqczsgfVxuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbih2KSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub2Jqcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGhpcy5vYmpzW2ldID09PSB2KSByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9O1xuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIC8vIERvIG5vdGhpbmcgaGVyZS4gW01sT2JqZWN0VGFibGUuc3RvcmVdIHdpbGwgcHVzaCB0byBbdGhpcy5vYmpzXSBkaXJlY3RseS5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgTmFpdmVMb29rdXAodGhpcy5vYmpzKTtcbiAgICB9O1xuICB9KCk7XG59XG5lbHNlIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IGdsb2JhbFRoaXMuTWFwKCk7XG4gIH07XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnN0b3JlID0gZnVuY3Rpb24odikge1xuICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gIHRoaXMub2Jqcy5wdXNoKHYpO1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5yZWNhbGwgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICByZXR1cm4gKGkgPT09IHVuZGVmaW5lZClcbiAgICA/IHVuZGVmaW5lZCA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAgIC8qIGluZGV4IGlzIHJlbGF0aXZlICovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBNbE9iamVjdFRhYmxlLCBjYW1sX2xpc3RfdG9fanNfYXJyYXksIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IGZ1bmN0aW9uICgpe1xuICBmdW5jdGlvbiBXcml0ZXIgKCkgeyB0aGlzLmNodW5rID0gW107IH1cbiAgV3JpdGVyLnByb3RvdHlwZSA9IHtcbiAgICBjaHVua19pZHg6MjAsIGJsb2NrX2xlbjowLCBvYmpfY291bnRlcjowLCBzaXplXzMyOjAsIHNpemVfNjQ6MCxcbiAgICB3cml0ZTpmdW5jdGlvbiAoc2l6ZSwgdmFsdWUpIHtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2F0OmZ1bmN0aW9uIChwb3MsIHNpemUsIHZhbHVlKSB7XG4gICAgICB2YXIgcG9zID0gcG9zO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2NvZGU6ZnVuY3Rpb24gKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX3NoYXJlZDpmdW5jdGlvbiAob2Zmc2V0KSB7XG4gICAgICBpZiAob2Zmc2V0IDwgKDEgPDwgOCkpIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgKDEgPDwgMTYpKSB0aGlzLndyaXRlX2NvZGUoMTYsIDB4MDUgLypjc3QuQ09ERV9TSEFSRUQxNiovLCBvZmZzZXQpO1xuICAgICAgZWxzZSB0aGlzLndyaXRlX2NvZGUoMzIsIDB4MDYgLypjc3QuQ09ERV9TSEFSRUQzMiovLCBvZmZzZXQpO1xuICAgIH0sXG4gICAgcG9zOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuY2h1bmtfaWR4IH0sXG4gICAgZmluYWxpemU6ZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSB0aGlzLmNodW5rX2lkeCAtIDIwO1xuICAgICAgdGhpcy5jaHVua19pZHggPSAwO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIDB4ODQ5NUE2QkUpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLm9ial9jb3VudGVyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfMzIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gKGZsYWdzLmluZGV4T2YoMCAvKk1hcnNoYWwuTm9fc2hhcmluZyovKSAhPT0gLTEpLFxuICAgICAgICBjbG9zdXJlcyA9ICAoZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTEpO1xuICAgIC8qIE1hcnNoYWwuQ29tcGF0XzMyIGlzIHJlZHVuZGFudCBzaW5jZSBpbnRlZ2VycyBhcmUgMzItYml0IGFueXdheSAqL1xuXG4gICAgaWYgKGNsb3N1cmVzKVxuICAgICAgY29uc29sZS53YXJuKFwiaW4gY2FtbF9vdXRwdXRfdmFsOiBmbGFnIE1hcnNoYWwuQ2xvc3VyZXMgaXMgbm90IHN1cHBvcnRlZC5cIik7XG5cbiAgICB2YXIgd3JpdGVyID0gbmV3IFdyaXRlciAoKTtcbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICB2YXIgaW50ZXJuX29ial90YWJsZSA9IG5vX3NoYXJpbmcgPyBudWxsIDogbmV3IE1sT2JqZWN0VGFibGUoKTtcblxuICAgIGZ1bmN0aW9uIG1lbW8odikge1xuICAgICAgaWYgKG5vX3NoYXJpbmcpIHJldHVybiBmYWxzZTtcbiAgICAgIHZhciBleGlzdGluZ19vZmZzZXQgPSBpbnRlcm5fb2JqX3RhYmxlLnJlY2FsbCh2KTtcbiAgICAgIGlmIChleGlzdGluZ19vZmZzZXQpIHsgd3JpdGVyLndyaXRlX3NoYXJlZChleGlzdGluZ19vZmZzZXQpOyByZXR1cm4gdHJ1ZTsgfVxuICAgICAgZWxzZSB7IGludGVybl9vYmpfdGFibGUuc3RvcmUodik7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVybl9yZWMgKHYpIHtcbiAgICAgIGlmICh2LmNhbWxfY3VzdG9tKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBuYW1lID0gdi5jYW1sX2N1c3RvbTtcbiAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tuYW1lXTtcbiAgICAgICAgdmFyIHN6XzMyXzY0ID0gWzAsMF07XG4gICAgICAgIGlmKCFvcHMuc2VyaWFsaXplKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEN1c3RvbSlcIik7XG4gICAgICAgIGlmKG9wcy5maXhlZF9sZW5ndGggPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTggLypjc3QuQ09ERV9DVVNUT01fTEVOKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIGhlYWRlcl9wb3MgPSB3cml0ZXIucG9zICgpO1xuICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MsIDMyLCBzel8zMl82NFswXSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA0LCAzMiwgMCk7IC8vIHplcm9cbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDgsIDMyLCBzel8zMl82NFsxXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE5IC8qY3N0LkNPREVfQ1VTVE9NX0ZJWEVEKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSB3cml0ZXIucG9zKCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCAhPSB3cml0ZXIucG9zKCkgLSBvbGRfcG9zKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogaW5jb3JyZWN0IGZpeGVkIHNpemVzIHNwZWNpZmllZCBieSBcIiArIG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDIgKyAoKHN6XzMyXzY0WzBdICsgMykgPj4gMik7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDIgKyAoKHN6XzMyXzY0WzFdICsgNykgPj4gMyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgICAgaWYgKHZbMF0gPT0gMjUxKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEFic3RyYWN0KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxICYmIG1lbW8odikpIHJldHVybjtcbiAgICAgICAgaWYgKHZbMF0gPCAxNiAmJiB2Lmxlbmd0aCAtIDEgPCA4KVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLyArIHZbMF0gKyAoKHYubGVuZ3RoIC0gMSk8PDQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDA4IC8qY3N0LkNPREVfQkxPQ0szMiovLCAoKHYubGVuZ3RoLTEpIDw8IDEwKSB8IHZbMF0pO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSB2Lmxlbmd0aDtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gdi5sZW5ndGg7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEpIHN0YWNrLnB1c2ggKHYsIDEpO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICAgIGlmKCEoY2FtbF9pc19tbF9ieXRlcyhjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpKSkpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBbQnl0ZXMudF0gY2Fubm90IHNhZmVseSBiZSBtYXJzaGFsZWQgd2l0aCBbLS1lbmFibGUgdXNlLWpzLXN0cmluZ11cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodiAhPSAodnwwKSl7XG4gICAgICAgICAgdmFyIHR5cGVfb2ZfdiA9IHR5cGVvZiB2O1xuICAgICAgICAgIGlmKHR5cGVfb2ZfdiAhPSBcIm51bWJlclwiKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKFwiK3R5cGVfb2ZfditcIilcIik7XG4gICAgICAgICAgLy8gSWYgYSBmbG9hdCBoYXBwZW5zIHRvIGJlIGFuIGludGVnZXIgaXQgaXMgc2VyaWFsaXplZCBhcyBhbiBpbnRlZ2VyXG4gICAgICAgICAgLy8gKEpzX29mX29jYW1sIGNhbm5vdCB0ZWxsIHdoZXRoZXIgdGhlIHR5cGUgb2YgYW4gaW50ZWdlciBudW1iZXIgaXNcbiAgICAgICAgICAvLyBmbG9hdCBvciBpbnRlZ2VyLikgVGhpcyBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgY3Jhc2hlcyB3aGVuXG4gICAgICAgICAgLy8gdW5tYXJzaGFsbGluZyB1c2luZyB0aGUgc3RhbmRhcmQgcnVudGltZS5cbiAgICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICAgIHZhciB0ID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQodikpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgwQyAvKmNzdC5DT0RFX0RPVUJMRV9MSVRUTEUqLyk7XG4gICAgICAgICAgZm9yKHZhciBpID0gMDsgaTw4OyBpKyspe3dyaXRlci53cml0ZSg4LHRbNyAtIGldKX1cbiAgICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAzXG4gICAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMlxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHYgPj0gMCAmJiB2IDwgMHg0MCkge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMFg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8gKyB2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodiA+PSAtKDEgPDwgNykgJiYgdiA8ICgxIDw8IDcpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoOCwgMHgwMCAvKmNzdC5DT0RFX0lOVDgqLywgdik7XG4gICAgICAgICAgZWxzZSBpZiAodiA+PSAtKDEgPDwgMTUpICYmIHYgPCAoMSA8PCAxNSkpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgxNiwgMHgwMSAvKmNzdC5DT0RFX0lOVDE2Ki8sIHYpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDAyIC8qY3N0LkNPREVfSU5UMzIqLywgdik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZXh0ZXJuX3JlYyAodik7XG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBpID0gc3RhY2sucG9wICgpO1xuICAgICAgdmFyIHYgPSBzdGFjay5wb3AgKCk7XG4gICAgICBpZiAoaSArIDEgPCB2Lmxlbmd0aCkgc3RhY2sucHVzaCAodiwgaSArIDEpO1xuICAgICAgZXh0ZXJuX3JlYyAodltpXSk7XG4gICAgfVxuICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSB3cml0ZXIub2JqX2NvdW50ZXIgPSBpbnRlcm5fb2JqX3RhYmxlLm9ianMubGVuZ3RoO1xuICAgIHdyaXRlci5maW5hbGl6ZSgpO1xuICAgIHJldHVybiB3cml0ZXIuY2h1bms7XG4gIH1cbn0gKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9mYWlsd2l0aCwgY2FtbF9ibGl0X2J5dGVzXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIgKHMsIG9mcywgbGVuLCB2LCBmbGFncykge1xuICB2YXIgdCA9IGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpO1xuICBpZiAodC5sZW5ndGggPiBsZW4pIGNhbWxfZmFpbHdpdGggKFwiTWFyc2hhbC50b19idWZmZXI6IGJ1ZmZlciBvdmVyZmxvd1wiKTtcbiAgY2FtbF9ibGl0X2J5dGVzKHQsIDAsIHMsIG9mcywgdC5sZW5ndGgpO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0ID0gY2FtbF9oYXNoX21peF9pbnQ2NDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50ID0gY2FtbF9oYXNoX21peF9pbnQ7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0XG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdCA9IGNhbWxfaGFzaF9taXhfZmxvYXQ7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9zdHJpbmdcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX3N0cmluZyA9IGNhbWxfaGFzaF9taXhfc3RyaW5nO1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbmZ1bmN0aW9uIEJhc2VfaW50ZXJuYWxoYXNoX2dldF9oYXNoX3ZhbHVlKHNlZWQpIHtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKHNlZWQpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG4iLCIvL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5XG4vL0FsaWFzOiB1bml4X2dldHRpbWVvZmRheVxuZnVuY3Rpb24gY2FtbF91bml4X2dldHRpbWVvZmRheSAoKSB7XG4gIHJldHVybiAobmV3IERhdGUoKSkuZ2V0VGltZSgpIC8gMTAwMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X3RpbWUgKCkge1xuICByZXR1cm4gTWF0aC5mbG9vcihjYW1sX3VuaXhfZ2V0dGltZW9mZGF5ICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dtdGltZVxuLy9BbGlhczogdW5peF9nbXRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9nbXRpbWUgKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSAodCAqIDEwMDApO1xuICB2YXIgZF9udW0gPSBkLmdldFRpbWUoKTtcbiAgdmFyIGphbnVhcnlmaXJzdCA9IChuZXcgRGF0ZShEYXRlLlVUQyhkLmdldFVUQ0Z1bGxZZWFyKCksIDAsIDEpKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRVVENTZWNvbmRzKCksIGQuZ2V0VVRDTWludXRlcygpLCBkLmdldFVUQ0hvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RhdGUoKSwgZC5nZXRVVENNb250aCgpLCBkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgZmFsc2UgfCAwIC8qIGZvciBVVEMgZGF5bGlnaHQgc2F2aW5ncyB0aW1lIGlzIGZhbHNlICovKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbG9jYWx0aW1lXG4vL0FsaWFzOiB1bml4X2xvY2FsdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X2xvY2FsdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgdmFyIGphbiA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gIHZhciBqdWwgPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDYsIDEpO1xuICB2YXIgc3RkVGltZXpvbmVPZmZzZXQgPSBNYXRoLm1heChqYW4uZ2V0VGltZXpvbmVPZmZzZXQoKSwganVsLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRTZWNvbmRzKCksIGQuZ2V0TWludXRlcygpLCBkLmdldEhvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldERhdGUoKSwgZC5nZXRNb250aCgpLCBkLmdldEZ1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXREYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgKGQuZ2V0VGltZXpvbmVPZmZzZXQoKSA8IHN0ZFRpbWV6b25lT2Zmc2V0KSB8IDAgLyogZGF5bGlnaHQgc2F2aW5ncyB0aW1lICBmaWVsZC4gKi8pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbWt0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWt0aW1lKHRtKXtcbiAgdmFyIGQgPSAobmV3IERhdGUodG1bNl0rMTkwMCx0bVs1XSx0bVs0XSx0bVszXSx0bVsyXSx0bVsxXSkpLmdldFRpbWUoKTtcbiAgdmFyIHQgPSBNYXRoLmZsb29yKGQgLyAxMDAwKTtcbiAgdmFyIHRtMiA9IGNhbWxfdW5peF9sb2NhbHRpbWUodCk7XG4gIHJldHVybiBCTE9DSygwLHQsdG0yKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGFydHVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fc3RhcnR1cFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXJ0dXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xlYW51cCBjb25zdFxuLy9BbGlhczogd2luX2NsZWFudXBcbmZ1bmN0aW9uIGNhbWxfdW5peF9jbGVhbnVwKCkge31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCBjb25zdFxuLy9BbGlhczogd2luX2hhbmRsZV9mZFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCh4KSB7cmV0dXJuIHg7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaXNhdHR5XG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9BbGlhczogdW5peF9pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciB0dHkgPSByZXF1aXJlKCd0dHknKTtcbiAgICByZXR1cm4gdHR5LmlzYXR0eShmaWxlRGVzY3JpcHRvcik/MTowO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2lzYXR0eVxuLy9BbGlhczogdW5peF9pc2F0dHlcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciB1bml4X2Vycm9yID0gW1xuICAvKiA9PT1Vbml4LmVycm9yPT09XG4gICAqXG4gICAqIFRoaXMgYXJyYXkgaXMgaW4gb3JkZXIgb2YgdGhlIHZhcmlhbnQgaW4gT0NhbWxcbiAgICovXG4gIFwiRTJCSUdcIiwgXCJFQUNDRVNcIiwgXCJFQUdBSU5cIiwgXCJFQkFERlwiLCBcIkVCVVNZXCIsIFwiRUNISUxEXCIsIFwiRURFQURMS1wiLCBcIkVET01cIixcbiAgXCJFRVhJU1RcIiwgXCJFRkFVTFRcIiwgXCJFRkJJR1wiLCBcIkVJTlRSXCIsIFwiRUlOVkFMXCIsIFwiRUlPXCIsIFwiRUlTRElSXCIsIFwiRU1GSUxFXCIsXG4gIFwiRU1MSU5LXCIsIFwiRU5BTUVUT09MT05HXCIsIFwiRU5GSUxFXCIsIFwiRU5PREVWXCIsIFwiRU5PRU5UXCIsIFwiRU5PRVhFQ1wiLCBcIkVOT0xDS1wiLFxuICBcIkVOT01FTVwiLCBcIkVOT1NQQ1wiLCBcIkVOT1NZU1wiLCBcIkVOT1RESVJcIiwgXCJFTk9URU1QVFlcIiwgXCJFTk9UVFlcIiwgXCJFTlhJT1wiLFxuICBcIkVQRVJNXCIsIFwiRVBJUEVcIiwgXCJFUkFOR0VcIiwgXCJFUk9GU1wiLCBcIkVTUElQRVwiLCBcIkVTUkNIXCIsIFwiRVhERVZcIiwgXCJFV09VTERCTE9DS1wiLFxuICBcIkVJTlBST0dSRVNTXCIsIFwiRUFMUkVBRFlcIiwgXCJFTk9UU09DS1wiLCBcIkVERVNUQUREUlJFUVwiLCBcIkVNU0dTSVpFXCIsXG4gIFwiRVBST1RPVFlQRVwiLCBcIkVOT1BST1RPT1BUXCIsIFwiRVBST1RPTk9TVVBQT1JUXCIsIFwiRVNPQ0tUTk9TVVBQT1JUXCIsXG4gIFwiRU9QTk9UU1VQUFwiLCBcIkVQRk5PU1VQUE9SVFwiLCBcIkVBRk5PU1VQUE9SVFwiLCBcIkVBRERSSU5VU0VcIiwgXCJFQUREUk5PVEFWQUlMXCIsXG4gIFwiRU5FVERPV05cIiwgXCJFTkVUVU5SRUFDSFwiLCBcIkVORVRSRVNFVFwiLCBcIkVDT05OQUJPUlRFRFwiLCBcIkVDT05OUkVTRVRcIiwgXCJFTk9CVUZTXCIsXG4gIFwiRUlTQ09OTlwiLCBcIkVOT1RDT05OXCIsIFwiRVNIVVRET1dOXCIsIFwiRVRPT01BTllSRUZTXCIsIFwiRVRJTUVET1VUXCIsIFwiRUNPTk5SRUZVU0VEXCIsXG4gIFwiRUhPU1RET1dOXCIsIFwiRUhPU1RVTlJFQUNIXCIsIFwiRUxPT1BcIiwgXCJFT1ZFUkZMT1dcIlxuXTtcbmZ1bmN0aW9uIG1ha2VfdW5peF9lcnJfYXJncyhjb2RlLCBzeXNjYWxsLCBwYXRoLCBlcnJubykge1xuICB2YXIgdmFyaWFudCA9IHVuaXhfZXJyb3IuaW5kZXhPZihjb2RlKTtcbiAgaWYgKHZhcmlhbnQgPCAwKSB7XG4gICAgLy8gRGVmYXVsdCBpZiB1bmRlZmluZWRcbiAgICBpZiAoZXJybm8gPT0gbnVsbCkge1xuICAgICAgZXJybm8gPSAtOTk5OVxuICAgIH1cbiAgICAvLyBJZiBub25lIG9mIHRoZSBhYm92ZSB2YXJpYW50cywgZmFsbGJhY2sgdG8gRVVOS05PV05FUlIoaW50KVxuICAgIHZhcmlhbnQgPSBCTE9DSygwLCBlcnJubyk7XG4gIH1cbiAgdmFyIGFyZ3MgPSBbXG4gICAgdmFyaWFudCxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzeXNjYWxsIHx8IFwiXCIpLFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGggfHwgXCJcIilcbiAgXTtcbiAgcmV0dXJuIGFyZ3M7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9zdGF0XG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uuc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5zdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9zdGF0LCBjYW1sX2ludDY0X29mX2ludDMyXG4vL0FsaWFzOiB1bml4X3N0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGF0XzY0KG5hbWUpIHtcbiAgdmFyIHIgPSBjYW1sX3VuaXhfc3RhdChuYW1lKTtcbiAgcls5XSA9IGNhbWxfaW50NjRfb2ZfaW50MzIocls5XSk7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbHN0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X2xzdGF0XG5mdW5jdGlvbiBjYW1sX3VuaXhfbHN0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLmxzdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9sc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5sc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X2xzdGF0LCBjYW1sX2ludDY0X29mX2ludDMyXG4vL0FsaWFzOiB1bml4X2xzdGF0XzY0XG5mdW5jdGlvbiBjYW1sX3VuaXhfbHN0YXRfNjQobmFtZSkge1xuICB2YXIgciA9IGNhbWxfdW5peF9sc3RhdChuYW1lKTtcbiAgcls5XSA9IGNhbWxfaW50NjRfb2ZfaW50MzIocls5XSk7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X21rZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWtkaXIobmFtZSwgcGVybSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm1rZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9ta2Rpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QsIHBlcm0sIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcm1kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ybWRpcihuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uucm1kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JtZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N5bWxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3N5bWxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9zeW1saW5rKHRvX2Rpciwgc3JjLCBkc3QpIHtcbiAgdmFyIHNyY19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uoc3JjKTtcbiAgdmFyIGRzdF9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZHN0KTtcbiAgaWYoc3JjX3Jvb3QuZGV2aWNlICE9IGRzdF9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IGNhbm5vdCBzeW1saW5rIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1zXCIpO1xuICBpZiAoIXNyY19yb290LmRldmljZS5zeW1saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zeW1saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHNyY19yb290LmRldmljZS5zeW1saW5rKHRvX2Rpciwgc3JjX3Jvb3QucmVzdCwgZHN0X3Jvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRsaW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9yZWFkbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRsaW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5yZWFkbGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcmVhZGxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UucmVhZGxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdW5saW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF91bmxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF91bmxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnVubGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfdW5saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL0FsaWFzOiB1bml4X2dldHVpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldHVpZCh1bml0KSB7XG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKXtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCgpO1xuICB9XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXRwd3VpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0cHd1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXRwd3VpZCh1bml0KSB7XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9oYXNfc3ltbGlua1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vQWxpYXM6IHVuaXhfaGFzX3N5bWxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9oYXNfc3ltbGluayh1bml0KSB7XG4gIHJldHVybiBmc19ub2RlX3N1cHBvcnRlZCgpPzE6MFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfb3BlbmRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfb3BlbmRpclxuZnVuY3Rpb24gY2FtbF91bml4X29wZW5kaXIocGF0aCkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHBhdGgpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm9wZW5kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X29wZW5kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICB2YXIgZGlyX2hhbmRsZSA9IHJvb3QuZGV2aWNlLm9wZW5kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xuICByZXR1cm4geyBwb2ludGVyIDogZGlyX2hhbmRsZSwgcGF0aDogcGF0aCB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZVxuLy9BbGlhczogdW5peF9yZWFkZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKSB7XG4gIHZhciBlbnRyeTtcbiAgdHJ5IHtcbiAgICAgIGVudHJ5ID0gZGlyX2hhbmRsZS5wb2ludGVyLnJlYWRTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcInJlYWRkaXJcIiwgZGlyX2hhbmRsZS5wYXRoKSk7XG4gIH1cbiAgaWYgKGVudHJ5ID09PSBudWxsKSB7XG4gICAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZW50cnkubmFtZSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL0FsaWFzOiB1bml4X2Nsb3NlZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSkge1xuICB0cnkge1xuICAgICAgZGlyX2hhbmRsZS5wb2ludGVyLmNsb3NlU3luYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCBkaXJfaGFuZGxlLnBhdGgpKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmV3aW5kZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXIsIGNhbWxfdW5peF9vcGVuZGlyXG4vL0FsaWFzOiB1bml4X3Jld2luZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3Jld2luZGRpcihkaXJfaGFuZGxlKSB7XG4gIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbiAgdmFyIG5ld19kaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIoZGlyX2hhbmRsZS5wYXRoKTtcbiAgZGlyX2hhbmRsZS5wb2ludGVyID0gbmV3X2Rpcl9oYW5kbGUucG9pbnRlcjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kZmlyc3Rcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91bml4X29wZW5kaXIsIGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZGZpcnN0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGZpcnN0KHBhdGgpIHtcbiAgLy8gVGhlIFdpbmRvd3MgY29kZSBhZGRzIHRoaXMgZ2xvYiB0byB0aGUgcGF0aCwgc28gd2UgbmVlZCB0byByZW1vdmUgaXRcbiAgdmFyIHBhdGhfanMgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwYXRoKTtcbiAgcGF0aF9qcyA9IHBhdGhfanMucmVwbGFjZSgvKF58W1xcXFxcXC9dKVxcKlxcLlxcKiQvLCBcIlwiKTtcbiAgcGF0aCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGhfanMpO1xuICAvLyAqLiogaXMgbm93IHN0cmlwcGVkXG4gIHZhciBkaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIocGF0aCk7XG4gIHZhciBmaXJzdF9lbnRyeSA9IGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpO1xuICAvLyBUaGUgV2luZG93cyBiaW5kaW5ncyB0eXBlIGRpcl9oYW5kbGUgYXMgYW4gYGludGAgYnV0IGl0J3Mgbm90IGluIEpTXG4gIHJldHVybiBbMCwgZmlyc3RfZW50cnksIGRpcl9oYW5kbGVdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZG5leHRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZG5leHRcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kbmV4dChkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRjbG9zZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL0FsaWFzOiB3aW5fZmluZGNsb3NlXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGNsb3NlKGRpcl9oYW5kbGUpIHtcbiAgcmV0dXJuIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyBjb25zdFxuLy9BbGlhczogdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyAoKSB7cmV0dXJuIDA7fVxuXG5cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRHVtbXkgZmlsZXN5c3RlbVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpe1xuICByZXR1cm4gKG5hbWUuc2xpY2UoLTEpICE9PSBcIi9cIikgPyAobmFtZSArIFwiL1wiKSA6IG5hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5pZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZClcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKCkucmVwbGFjZSgvXFxcXC9nLCcvJyk7XG5lbHNlXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gIFwiL3N0YXRpY1wiO1xuY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2goY2FtbF9jdXJyZW50X2Rpcik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3Jvb3Rcbi8vUmVxdWlyZXM6IHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfZ2V0X3Jvb3QocGF0aCl7XG4gIHZhciB4ID0gcGF0aF9pc19hYnNvbHV0ZShwYXRoKTtcbiAgaWYgKCF4KSByZXR1cm47XG4gIHJldHVybiB4WzBdICsgXCIvXCJ9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcm9vdFxuLy9SZXF1aXJlczogY2FtbF9nZXRfcm9vdCwgY2FtbF9jdXJyZW50X2RpciwgY2FtbF9mYWlsd2l0aFxudmFyIGNhbWxfcm9vdCA9IGNhbWxfZ2V0X3Jvb3QoY2FtbF9jdXJyZW50X2RpcikgfHwgY2FtbF9mYWlsd2l0aChcInVuYWJsZSB0byBjb21wdXRlIGNhbWxfcm9vdFwiKTtcblxuXG4vL1Byb3ZpZGVzOiBNbEZpbGVcbmZ1bmN0aW9uIE1sRmlsZSgpeyAgfVxuXG4vL1Byb3ZpZGVzOiBwYXRoX2lzX2Fic29sdXRlXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCkge1xuICBmdW5jdGlvbiBwb3NpeChwYXRoKSB7XG4gICAgaWYgKHBhdGguY2hhckF0KDApID09PSAnLycpIHJldHVybiBbXCJcIiwgcGF0aC5zdWJzdHJpbmcoMSldO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdpbjMyKHBhdGgpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9iM2ZjYzI0NWZiMjU1Mzk5MDllZjFkNWVhYTAxZGJmOTJlMTY4NjMzL2xpYi9wYXRoLmpzI0w1NlxuICAgIHZhciBzcGxpdERldmljZVJlID0gL14oW2EtekEtWl06fFtcXFxcL117Mn1bXlxcXFwvXStbXFxcXC9dK1teXFxcXC9dKyk/KFtcXFxcL10pPyhbXFxzXFxTXSo/KSQvO1xuICAgIHZhciByZXN1bHQgPSBzcGxpdERldmljZVJlLmV4ZWMocGF0aCk7XG4gICAgdmFyIGRldmljZSA9IHJlc3VsdFsxXSB8fCAnJztcbiAgICB2YXIgaXNVbmMgPSBCb29sZWFuKGRldmljZSAmJiBkZXZpY2UuY2hhckF0KDEpICE9PSAnOicpO1xuXG4gICAgLy8gVU5DIHBhdGhzIGFyZSBhbHdheXMgYWJzb2x1dGVcbiAgICBpZiAoQm9vbGVhbihyZXN1bHRbMl0gfHwgaXNVbmMpKSB7XG4gICAgICB2YXIgcm9vdCA9IChyZXN1bHRbMV0gfHwgJycpO1xuICAgICAgdmFyIHNlcCA9IChyZXN1bHRbMl0gfHwgJycpO1xuICAgICAgcmV0dXJuIFtyb290LCBwYXRoLnN1YnN0cmluZyhyb290Lmxlbmd0aCArIHNlcC5sZW5ndGgpXVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyB3aW4zMiA6IHBvc2l4O1xuICB9XG4gIGVsc2UgcmV0dXJuIHBvc2l4XG59XG52YXIgcGF0aF9pc19hYnNvbHV0ZSA9IG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfcGF0aFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfbWFrZV9wYXRoIChuYW1lKSB7XG4gIG5hbWU9Y2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKCAhcGF0aF9pc19hYnNvbHV0ZShuYW1lKSApXG4gICAgbmFtZSA9IGNhbWxfY3VycmVudF9kaXIgKyBuYW1lO1xuICB2YXIgY29tcDAgPSBwYXRoX2lzX2Fic29sdXRlKG5hbWUpO1xuICB2YXIgY29tcCA9IGNvbXAwWzFdLnNwbGl0KFwiL1wiKTtcbiAgdmFyIG5jb21wID0gW11cbiAgZm9yKHZhciBpID0gMDsgaTxjb21wLmxlbmd0aDsgaSsrKXtcbiAgICBzd2l0Y2goY29tcFtpXSl7XG4gICAgY2FzZSBcIi4uXCI6IGlmKG5jb21wLmxlbmd0aD4xKSBuY29tcC5wb3AoKTsgYnJlYWs7XG4gICAgY2FzZSBcIi5cIjogYnJlYWs7XG4gICAgY2FzZSBcIlwiOiBicmVhaztcbiAgICBkZWZhdWx0OiBuY29tcC5wdXNoKGNvbXBbaV0pO2JyZWFrXG4gICAgfVxuICB9XG4gIG5jb21wLnVuc2hpZnQoY29tcDBbMF0pO1xuICBuY29tcC5vcmlnID0gbmFtZTtcbiAgcmV0dXJuIG5jb21wO1xufVxuXG4vL1Byb3ZpZGVzOmpzb29fbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgTWxOb2RlRGV2aWNlLCBjYW1sX3Jvb3QsIGZzX25vZGVfc3VwcG9ydGVkXG52YXIganNvb19tb3VudF9wb2ludCA9IFtdXG5pZiAoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn0gZWxzZSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoY2FtbF9yb290KX0pO1xufVxuanNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOlwiL3N0YXRpYy9cIiwgZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoXCIvc3RhdGljL1wiKX0pO1xuXG4vL1Byb3ZpZGVzOmNhbWxfbGlzdF9tb3VudF9wb2ludFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9saXN0X21vdW50X3BvaW50KCl7XG4gIHZhciBwcmV2ID0gMFxuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKyl7XG4gICAgdmFyIG9sZCA9IHByZXY7XG4gICAgcHJldiA9IFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCksIG9sZF1cbiAgfVxuICByZXR1cm4gcHJldjtcbn1cblxuLy9Qcm92aWRlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9nZXRfcm9vdCwgTWxOb2RlRGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gcGF0aC5qb2luKFwiL1wiKTtcbiAgdmFyIG5hbWVfc2xhc2ggPSBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpO1xuICB2YXIgcmVzO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtID0ganNvb19tb3VudF9wb2ludFtpXTtcbiAgICBpZihuYW1lX3NsYXNoLnNlYXJjaChtLnBhdGgpID09IDBcbiAgICAgICAmJiAoIXJlcyB8fCByZXMucGF0aC5sZW5ndGggPCBtLnBhdGgubGVuZ3RoKSlcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gIH1cbiAgaWYoICFyZXMgJiYgZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciByb290ID0gY2FtbF9nZXRfcm9vdChuYW1lKTtcbiAgICBpZiAocm9vdCAmJiByb290Lm1hdGNoKC9eW2EtekEtWl06XFwvJC8pKXtcbiAgICAgIHZhciBtID0ge3BhdGg6cm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShyb290KX07XG4gICAgICBqc29vX21vdW50X3BvaW50LnB1c2gobSk7XG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICAgIH1cbiAgfVxuICBpZiggcmVzICkgcmV0dXJuIHJlcztcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJubyBkZXZpY2UgZm91bmQgZm9yIFwiICsgbmFtZV9zbGFzaCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW91bnRfYXV0b2xvYWRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfbW91bnRfYXV0b2xvYWQobmFtZSxmKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6bmFtZSxkZXZpY2U6bmV3IE1sRmFrZURldmljZShuYW1lLGYpfSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5tb3VudFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9tYWtlX3BhdGgsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdW5tb3VudChuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICB2YXIgaWR4ID0gLTE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKVxuICAgIGlmKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCA9PSBuYW1lKSBpZHggPSBpO1xuICBpZihpZHggPiAtMSkganNvb19tb3VudF9wb2ludC5zcGxpY2UoaWR4LDEpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRjd2Rcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGN3ZCgpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9jdXJyZW50X2Rpcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NoZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX2NoZGlyKGRpcikge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRpcik7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgaWYocm9vdC5yZXN0KSBjYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChyb290LnBhdGggKyByb290LnJlc3QpO1xuICAgIGVsc2UgY2FtbF9jdXJyZW50X2RpciA9IHJvb3QucGF0aDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGRpcikpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfYV9kaXIobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmlsZV9leGlzdHNcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19maWxlX2V4aXN0cyAobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9hX2RpciwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLnJlYWRkaXIocm9vdC5yZXN0KTtcbiAgdmFyIGwgPSBuZXcgQXJyYXkoYS5sZW5ndGggKyAxKTtcbiAgbFswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8YS5sZW5ndGg7aSsrKVxuICAgIGxbaSsxXSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYVtpXSk7XG4gIHJldHVybiBsO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW1vdmVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfcmVtb3ZlKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgb2sgPSByb290LmRldmljZS51bmxpbmsocm9vdC5yZXN0KTtcbiAgaWYob2sgPT0gMCkgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UuaXNfZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiBhPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVuYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVuYW1lKG8sbil7XG4gIHZhciBvX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShvKTtcbiAgdmFyIG5fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG4pO1xuICBpZihvX3Jvb3QuZGV2aWNlICE9IG5fcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogY2Fubm90IG1vdmUgZmlsZSBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtXCIpO1xuICBpZighb19yb290LmRldmljZS5yZW5hbWUpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogbm8gaW1wbGVtZW50ZWRcIik7XG4gIG9fcm9vdC5kZXZpY2UucmVuYW1lKG9fcm9vdC5yZXN0LCBuX3Jvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfc3lzX21rZGlyKG5hbWUsIHBlcm0pe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QscGVybSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vdF9hX2RpclxuZnVuY3Rpb24gY2FtbF9zeXNfcm1kaXIobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlKHZmZCwga2luZCwgbGF5b3V0LCBzaGFyZWQsIGRpbXMsIHBvcykge1xuICAvLyB2YXIgZGF0YSA9IGNhbWxfc3lzX2Zkc1t2ZmRdO1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9iYV9tYXBfZmlsZSBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUoYXJndixhcmduKXtcbiAgcmV0dXJuIGNhbWxfYmFfbWFwX2ZpbGUoYXJndlswXSxhcmd2WzFdLGFyZ3ZbMl0sYXJndlszXSxhcmd2WzRdLGFyZ3ZbNV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlX2V4dGVyblxuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZV9leHRlcm4obmFtZSxjb250ZW50KXtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKVxuICAgIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpO1xuICBlbHNlIHtcbiAgICBpZighZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCkgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICAgIGdsb2JhbFRoaXMuY2FtbF9mc190bXAucHVzaCh7bmFtZTpuYW1lLGNvbnRlbnQ6Y29udGVudH0pO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZzX2luaXRcbi8vUmVxdWlyZXM6IGpzb29fY3JlYXRlX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfZnNfaW5pdCAoKXtcbiAgdmFyIHRtcD1nbG9iYWxUaGlzLmNhbWxfZnNfdG1wXG4gIGlmKHRtcCl7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7IGkrKyl7XG4gICAgICBqc29vX2NyZWF0ZV9maWxlKHRtcFtpXS5uYW1lLHRtcFtpXS5jb250ZW50KTtcbiAgICB9XG4gIH1cbiAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlID0ganNvb19jcmVhdGVfZmlsZTtcbiAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKCEgcm9vdC5kZXZpY2UucmVnaXN0ZXIpIGNhbWxfZmFpbHdpdGgoXCJjYW5ub3QgcmVnaXN0ZXIgZmlsZVwiKTtcbiAgcm9vdC5kZXZpY2UucmVnaXN0ZXIocm9vdC5yZXN0LGNvbnRlbnQpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9maWxlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgbmFtZSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk7XG4gIHZhciBjb250ZW50ID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjb250ZW50KTtcbiAgcmV0dXJuIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSwgY29udGVudCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWFkX2ZpbGVfY29udGVudFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWFkX2ZpbGVfY29udGVudCAobmFtZSkge1xuICB2YXIgbmFtZSA9ICh0eXBlb2YgbmFtZSA9PSBcInN0cmluZ1wiKT9jYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpOm5hbWU7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCx7cmRvbmx5OjF9KTtcbiAgICB2YXIgbGVuICA9IGZpbGUubGVuZ3RoKCk7XG4gICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgZmlsZS5yZWFkKDAsYnVmLDAsbGVuKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYnVmKVxuICB9XG4gIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogTWxGYWtlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBNbEZha2VGZCwgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXksIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZXNcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuZnVuY3Rpb24gTWxGYWtlRGV2aWNlIChyb290LCBmKSB7XG4gIHRoaXMuY29udGVudD17fTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbiAgdGhpcy5sb29rdXBGdW4gPSBmO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY3JlYXRlX2Rpcl9pZl9uZWVkZWQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBjb21wID0gbmFtZS5zcGxpdChcIi9cIik7XG4gIHZhciByZXMgPSBcIlwiO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgY29tcC5sZW5ndGggLSAxOyBpKyspe1xuICAgIHJlcyArPSBjb21wW2ldICsgXCIvXCI7XG4gICAgaWYodGhpcy5jb250ZW50W3Jlc10pIGNvbnRpbnVlO1xuICAgIHRoaXMuY29udGVudFtyZXNdID0gU3ltYm9sKFwiZGlyZWN0b3J5XCIpO1xuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnNsYXNoID0gZnVuY3Rpb24obmFtZSl7XG4gIHJldHVybiAvXFwvJC8udGVzdChuYW1lKT9uYW1lOihuYW1lICsgXCIvXCIpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5sb29rdXAgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKCF0aGlzLmNvbnRlbnRbbmFtZV0gJiYgdGhpcy5sb29rdXBGdW4pIHtcbiAgICB2YXIgcmVzID0gdGhpcy5sb29rdXBGdW4oY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnJvb3QpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpKTtcbiAgICBpZihyZXMgIT09IDApIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV09bmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcocmVzWzFdKSk7XG4gICAgfVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgLy8gVGhlIHJvb3Qgb2YgdGhlIGRldmljZSBleGlzdHNcbiAgaWYobmFtZSA9PSBcIlwiKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBkaXJlY3RvcnkgZXhpc3RzXG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVfc2xhc2hdKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBmaWxlIGV4aXN0c1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzRmlsZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkgJiYgIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gMFxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSxtb2RlLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUVYSVNUXCIsIFwibWtkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogRmlsZSBleGlzdHNcIik7XG4gICAgfVxuICB9XG4gIHZhciBwYXJlbnQgPSAvXiguKilcXC9bXi9dKy8uZXhlYyhuYW1lKTtcbiAgcGFyZW50ID0gKHBhcmVudCAmJiBwYXJlbnRbMV0pIHx8ICcnO1xuICBpZighdGhpcy5leGlzdHMocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHRoaXMuc2xhc2gobmFtZSkpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICBpZihuLm1hdGNoKHIpKSB7XG4gICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URU1QVFlcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCI6IERpcmVjdG9yeSBub3QgZW1wdHlcIik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF07XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgfVxuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICB2YXIgc2VlbiA9IHt9XG4gIHZhciBhID0gW107XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICB2YXIgbSA9IG4ubWF0Y2gocik7XG4gICAgaWYobSAmJiAhc2VlblttWzFdXSkge3NlZW5bbVsxXV0gPSB0cnVlOyBhLnB1c2gobVsxXSl9XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW5kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcblxuICB2YXIgYSA9IHRoaXMucmVhZGRpcihuYW1lKTtcbiAgdmFyIGMgPSBmYWxzZTtcbiAgdmFyIGkgPSAwO1xuICByZXR1cm4geyByZWFkU3luYyA6IChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGMpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogY2xvc2VkaXIgZmFpbGVkXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZihpID09IGEubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgZW50cnkgPSBhW2ldO1xuICAgIGkrKztcbiAgICByZXR1cm4geyBuYW1lOiBlbnRyeSB9XG4gIH0pXG4gICAgLCBjbG9zZVN5bmM6IChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoYykge1xuICAgICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogY2xvc2VkaXIgZmFpbGVkXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjID0gdHJ1ZTtcbiAgICAgIGEgPSBbXTtcbiAgICB9KVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYobmFtZSA9PSBcIlwiKSAgcmV0dXJuIHRydWU7XG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG9rID0gdGhpcy5jb250ZW50W25hbWVdP3RydWU6ZmFsc2U7XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIHJldHVybiBvaztcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmKSB7XG4gIHZhciBmaWxlO1xuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgaWYgKHRoaXMuaXNfZGlyKG5hbWUpKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBpcyBhIGRpcmVjdG9yeVwiKTtcbiAgICBpZiAoZi5jcmVhdGUgJiYgZi5leGNsKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gICAgaWYoZi50cnVuY2F0ZSkgZmlsZS50cnVuY2F0ZSgpO1xuICB9IGVsc2UgaWYgKGYuY3JlYXRlKSB7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSAodGhpcy5ubShuYW1lKSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEZha2VGZCh0aGlzLm5tKG5hbWUpLCBmaWxlLCBmKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5yZWdpc3Rlcj0gZnVuY3Rpb24gKG5hbWUsY29udGVudCl7XG4gIHZhciBmaWxlO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV0pIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gIGlmKGNhbWxfaXNfbWxfYnl0ZXMoY29udGVudCkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNvbnRlbnQpO1xuICBpZihjYW1sX2lzX21sX3N0cmluZyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcoY29udGVudCkpO1xuICBlbHNlIGlmKGNvbnRlbnQgaW5zdGFuY2VvZiBBcnJheSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9hcnJheShjb250ZW50KSk7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudC50b1N0cmluZykge1xuICAgIHZhciBieXRlcyA9IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNvbnRlbnQudG9TdHJpbmcoKSkpO1xuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShieXRlcyk7XG4gIH1cbiAgaWYoZmlsZSl7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBmaWxlO1xuICB9XG4gIGVsc2UgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogcmVnaXN0ZXJpbmcgZmlsZSB3aXRoIGludmFsaWQgY29udGVudCB0eXBlXCIpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZpbGVcbi8vUmVxdWlyZXM6IE1sRmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIE1sRmFrZUZpbGUoY29udGVudCl7XG4gIHRoaXMuZGF0YSA9IGNvbnRlbnQ7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbEZha2VGaWxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZUZpbGVcbk1sRmFrZUZpbGUucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24obGVuKXtcbiAgdmFyIG9sZCA9IHRoaXMuZGF0YTtcbiAgdGhpcy5kYXRhID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVufDApO1xuICBjYW1sX2JsaXRfYnl0ZXMob2xkLCAwLCB0aGlzLmRhdGEsIDAsIGxlbik7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aCh0aGlzLmRhdGEpO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihvZmZzZXQsYnVmLHBvcyxsZW4pe1xuICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gIGlmKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgdmFyIG5ld19zdHIgPSBjYW1sX2NyZWF0ZV9ieXRlcyhvZmZzZXQgKyBsZW4pO1xuICAgIHZhciBvbGRfZGF0YSA9IHRoaXMuZGF0YTtcbiAgICB0aGlzLmRhdGEgPSBuZXdfc3RyO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhvbGRfZGF0YSwgMCwgdGhpcy5kYXRhLCAwLCBjbGVuKTtcbiAgfVxuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBwb3MsIHRoaXMuZGF0YSwgb2Zmc2V0LCBsZW4pO1xuICByZXR1cm4gMFxufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICBsZW4gPSBjbGVuIC0gb2Zmc2V0O1xuICB9XG4gIGlmKGxlbikge1xuICAgIHZhciBkYXRhID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVufDApO1xuICAgIGNhbWxfYmxpdF9ieXRlcyh0aGlzLmRhdGEsIG9mZnNldCwgZGF0YSwgMCwgbGVuKTtcbiAgICBidWYuc2V0KGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoZGF0YSksIHBvcyk7XG4gIH1cbiAgcmV0dXJuIGxlblxufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sRmFrZUZkX291dChmZCxmbGFncykge1xuICBNbEZha2VGaWxlLmNhbGwodGhpcywgY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICB0aGlzLmxvZyA9IChmdW5jdGlvbiAocykgeyByZXR1cm4gMCB9KTtcbiAgaWYoZmQgPT0gMSAmJiB0eXBlb2YgY29uc29sZS5sb2cgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5sb2c7XG4gIGVsc2UgaWYoZmQgPT0gMiAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmVycm9yO1xuICBlbHNlIGlmKHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZ1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMCB9XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKG9mZnNldCxidWYscG9zLGxlbikge1xuICBpZih0aGlzLmxvZykge1xuICAgIGlmKGxlbiA+IDBcbiAgICAgICAmJiBwb3MgPj0gMFxuICAgICAgICYmIHBvcytsZW4gPD0gYnVmLmxlbmd0aFxuICAgICAgICYmIGJ1Zltwb3MrbGVuLTFdID09IDEwKVxuICAgICAgbGVuIC0tO1xuICAgIC8vIERvIG5vdCBvdXRwdXQgdGhlIGxhc3QgXFxuIGlmIHByZXNlbnRcbiAgICAvLyBhcyBjb25zb2xlIGxvZ2dpbmcgZGlzcGxheSBhIG5ld2xpbmUgYXQgdGhlIGVuZFxuICAgIHZhciBzcmMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgc3JjLCAwLCBsZW4pO1xuICAgIHRoaXMubG9nKHNyYy50b1V0ZjE2KCkpO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMuZmQgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGlzIHdyaXRlIG9ubHlcIik7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmxvZyA9IHVuZGVmaW5lZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGZFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sRmFrZUZkKG5hbWUsIGZpbGUsZmxhZ3MpIHtcbiAgdGhpcy5maWxlID0gZmlsZTtcbiAgdGhpcy5uYW1lID0gbmFtZTtcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuXG5NbEZha2VGZC5wcm90b3R5cGUuZXJyX2Nsb3NlZCA9IGZ1bmN0aW9uICgpIHtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5uYW1lICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgYWxyZWFkeSBjbG9zZWRcIik7XG59XG5NbEZha2VGZC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5sZW5ndGggKClcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS53cml0ZShvZmZzZXQsYnVmLHBvcyxsZW4pXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAob2Zmc2V0LCBidWYsIHBvcywgbGVuKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5yZWFkKG9mZnNldCwgYnVmLCBwb3MsIGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuZmlsZSA9IHVuZGVmaW5lZDtcbn1cbiIsIlxuLy9Qcm92aWRlczogTWxNdXRleFxuZnVuY3Rpb24gTWxNdXRleCgpIHtcbiAgdGhpcy5sb2NrZWQgPSBmYWxzZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X25ld1xuLy9SZXF1aXJlczogTWxNdXRleFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9uZXcodW5pdCkge1xuICByZXR1cm4gbmV3IE1sTXV0ZXgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF9sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X2xvY2sodCkge1xuICBpZih0LmxvY2tlZClcbiAgICBjYW1sX2ZhaWx3aXRoKFwiTXV0ZXgubG9jazogbXV0ZXggYWxyZWFkeSBsb2NrZWQuIENhbm5vdCB3YWl0LlwiKTtcbiAgZWxzZSB0LmxvY2tlZCA9IHRydWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3RyeV9sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3RyeV9sb2NrKHQpIHtcbiAgaWYoIXQubG9ja2VkKSB7XG4gICAgdC5sb2NrZWQgPSB0cnVlO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF91bmxvY2sodCkge1xuICB0LmxvY2tlZCA9IGZhbHNlO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vUHJvdmlkZXM6IGluaXRpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IHNlcmlhbGl6ZV9uYXQsIGRlc2VyaWFsaXplX25hdCwgY2FtbF9oYXNoX25hdFxuZnVuY3Rpb24gaW5pdGlhbGl6ZV9uYXQoKSB7XG4gIGNhbWxfY3VzdG9tX29wc1tcIl9uYXRcIl0gPVxuICAgIHsgZGVzZXJpYWxpemUgOiBkZXNlcmlhbGl6ZV9uYXQsXG4gICAgICBzZXJpYWxpemUgOiBzZXJpYWxpemVfbmF0LFxuICAgICAgaGFzaCA6IGNhbWxfaGFzaF9uYXRcbiAgICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sTmF0XG5mdW5jdGlvbiBNbE5hdCh4KXtcbiAgdGhpcy5kYXRhID0gbmV3IEludDMyQXJyYXkoeCk7XG4gIC8vIEZvciBudW0gPCAxLjVcbiAgLy8gbGVuZ3RoX25hdCBpc24ndCBleHRlcm5hbCwgc28gd2UgaGF2ZSB0byBtYWtlIHRoZSBPYmouc2l6ZVxuICAvLyB3b3JrIG91dCByaWdodC5cbiAgLy8gV2UgYWRkICsyIHRvIHRoZSBhcnJheSBsZW5ndGg6XG4gIC8vIC0gKzEgZm9yIHRoZSB0YWdcbiAgLy8gLSArMSBmb3IgdGhlIGN1c3RvbV9vcHMgc2xvdFxuICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGggKyAyXG59XG5cbk1sTmF0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX25hdFwiO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9uYXQoeCkge1xuICB2YXIgbGVuID0gbnVtX2RpZ2l0c19uYXQoeCwgMCwgeC5kYXRhLmxlbmd0aCk7XG4gIHZhciBoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB4LmRhdGFbaV0pO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBsZW5ndGhfbmF0XG5mdW5jdGlvbiBsZW5ndGhfbmF0KHgpIHtcbiAgcmV0dXJuIHguZGF0YS5sZW5ndGg7XG59XG5cbi8vUHJvdmlkZXM6IG5hdF9vZl9hcnJheVxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIG5hdF9vZl9hcnJheShsKXtcbiAgcmV0dXJuIG5ldyBNbE5hdChsKTtcbn1cblxuLy9Qcm92aWRlczogY3JlYXRlX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGNyZWF0ZV9uYXQoc2l6ZSkge1xuICB2YXIgYXJyID0gbmV3IE1sTmF0KHNpemUpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgYXJyLmRhdGFbaV0gPSAtMTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfdG9femVyb19uYXRcbmZ1bmN0aW9uIHNldF90b196ZXJvX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJsaXRfbmF0XG5mdW5jdGlvbiBibGl0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBuYXQyLmRhdGFbb2ZzMitpXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdFxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdChuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdFxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdChuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBudW1fZGlnaXRzX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYobmF0LmRhdGFbb2ZzK2ldICE9IDApIHJldHVybiBpKzE7XG4gIH1cbiAgcmV0dXJuIDE7IC8vIDAgY291bnRzIGFzIDEgZGlnaXRcbn1cblxuLy9Qcm92aWRlczogbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0XG5mdW5jdGlvbiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0LCBvZnMpIHtcbiAgdmFyIGEgPSBuYXQuZGF0YVtvZnNdO1xuICB2YXIgYiA9IDA7XG4gIGlmKGEgJiAweEZGRkYwMDAwKSB7IGIgKz0xNjsgYSA+Pj49MTY7IH1cbiAgaWYoYSAmIDB4RkYwMCkgICAgIHsgYiArPSA4OyBhID4+Pj0gODsgfVxuICBpZihhICYgMHhGMCkgICAgICAgeyBiICs9IDQ7IGEgPj4+PSA0OyB9XG4gIGlmKGEgJiAxMikgICAgICAgICB7IGIgKz0gMjsgYSA+Pj49IDI7IH1cbiAgaWYoYSAmIDIpICAgICAgICAgIHsgYiArPSAxOyBhID4+Pj0gMTsgfVxuICBpZihhICYgMSkgICAgICAgICAgeyBiICs9IDE7IH1cbiAgcmV0dXJuIDMyIC0gYjtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfaW50XG5mdW5jdGlvbiBpc19kaWdpdF9pbnQobmF0LCBvZnMpIHtcbiAgaWYgKG5hdC5kYXRhW29mc10gPj0gMCkgcmV0dXJuIDFcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X3plcm9cbmZ1bmN0aW9uIGlzX2RpZ2l0X3plcm8obmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSA9PSAwKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X29kZFxuZnVuY3Rpb24gaXNfZGlnaXRfb2RkKG5hdCwgb2ZzKSB7XG4gIGlmKG5hdC5kYXRhW29mc10gJiAxKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBpbmNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICh4IHwgMCk7XG4gICAgaWYoeCA9PSAoeCA+Pj4gMCkpIHtcbiAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBhZGRfbmF0XG4vL1JlcXVpcmVzOiBpbmNyX25hdFxuZnVuY3Rpb24gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHhcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmNyX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgY2FycnkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wbGVtZW50X25hdFxuZnVuY3Rpb24gY29tcGxlbWVudF9uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAoLTEgPj4+IDApIC0gKG5hdC5kYXRhW29mcytpXSA+Pj4gMCk7XG4gIH1cbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vUHJvdmlkZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBkZWNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcytpXSA+Pj4wKSAtIGJvcnJvdztcbiAgICBuYXQuZGF0YVtvZnMraV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChib3Jyb3cgPT0gMSkgPyAwIDogMTtcbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogc3ViX25hdFxuLy9SZXF1aXJlczogZGVjcl9uYXRcbmZ1bmN0aW9uIHN1Yl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGJvcnJvdyA9IChjYXJyeV9pbiA9PSAxKSA/IDAgOiAxO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIC0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAtIGJvcnJvdztcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCAoYm9ycm93PT0xKT8wOjEpO1xufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzW29mczNdXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IG11bHRfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBhZGRfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGEgPSAobmF0My5kYXRhW29mczNdID4+PiAwKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4MSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICogKGEgJiAweDAwMDBGRkZGKSArIGNhcnJ5O1xuICAgIHZhciB4MiA9IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSA+Pj4gMTYpO1xuICAgIGNhcnJ5ID0gTWF0aC5mbG9vcih4Mi82NTUzNik7XG4gICAgdmFyIHgzID0geDEgKyAoeDIgJSA2NTUzNikgKiA2NTUzNjtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHgzO1xuICAgIGNhcnJ5ICs9IE1hdGguZmxvb3IoeDMvNDI5NDk2NzI5Nik7XG4gIH1cblxuICBpZihsZW4yIDwgbGVuMSAmJiBjYXJyeSkge1xuICAgIHJldHVybiBhZGRfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBuYXRfb2ZfYXJyYXkoW2NhcnJ5XSksIDAsIDEsIDApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjYXJyeTtcbiAgfVxufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzXG4vLyBsZW4xID49IGxlbjIgKyBsZW4zLlxuLy9Qcm92aWRlczogbXVsdF9uYXRcbi8vUmVxdWlyZXM6IG11bHRfZGlnaXRfbmF0XG5mdW5jdGlvbiBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzLCBsZW4zKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4zOyBpKyspIHtcbiAgICBjYXJyeSArPSBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxK2ksIGxlbjEtaSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMytpKTtcbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIG5hdDEgPSAyICogbmF0MSArIG5hdDIgKiBuYXQyXG4vLyBsZW4xID49IDIgKiBsZW4yXG4vL1Byb3ZpZGVzOiBzcXVhcmVfbmF0XG4vL1JlcXVpcmVzOiBtdWx0X25hdCwgYWRkX25hdFxuZnVuY3Rpb24gc3F1YXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGNhcnJ5ICs9IGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0MSwgb2ZzMSwgbGVuMSwgMCk7XG4gIGNhcnJ5ICs9IG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpO1xuICByZXR1cm4gY2Fycnk7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9sZWZ0X25hdFxuZnVuY3Rpb24gc2hpZnRfbGVmdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbmJpdHMpIHtcbiAgaWYobmJpdHMgPT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMTsgaSsrKSB7XG4gICAgdmFyIGEgPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPDwgbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA+Pj4gKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vLyBBc3N1bWluZyBjID4gYSwgcmV0dXJucyBbcXVvdGllbnQsIHJlbWFpbmRlcl0gb2YgKGE8PDMyICsgYikvY1xuLy9Qcm92aWRlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2hlbHBlcihhLCBiLCBjKSB7XG4gIHZhciB4ID0gYSAqIDY1NTM2ICsgKGI+Pj4xNik7XG4gIHZhciB5ID0gTWF0aC5mbG9vcih4L2MpICogNjU1MzY7XG4gIHZhciB6ID0gKHggJSBjKSAqIDY1NTM2O1xuICB2YXIgdyA9IHogKyAoYiAmIDB4MDAwMEZGRkYpO1xuICByZXR1cm4gW3kgKyBNYXRoLmZsb29yKHcvYyksIHcgJSBjXTtcbn1cblxuLy8gbmF0MVtvZnMxK2xlbl0gPCBuYXQyW29mczJdXG4vL1Byb3ZpZGVzOiBkaXZfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfZGlnaXRfbmF0KG5hdHEsIG9mc3EsIG5hdHIsIG9mc3IsIG5hdDEsIG9mczEsIGxlbiwgbmF0Miwgb2ZzMikge1xuICB2YXIgcmVtID0gKG5hdDEuZGF0YVtvZnMxK2xlbi0xXSA+Pj4wKTtcbiAgLy8gbmF0cVtvZnNxK2xlbi0xXSBpcyBndWFyYW50ZWVkIHRvIGJlIHplcm8gKGR1ZSB0byB0aGUgTVNEIHJlcXVpcmVtZW50KSxcbiAgLy8gYW5kIHNob3VsZCBub3QgYmUgd3JpdHRlbiB0by5cbiAgZm9yKHZhciBpID0gbGVuLTI7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHggPSBkaXZfaGVscGVyKHJlbSwgKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDIuZGF0YVtvZnMyXSA+Pj4gMCkpO1xuICAgIG5hdHEuZGF0YVtvZnNxK2ldID0geFswXTtcbiAgICByZW0gPSB4WzFdO1xuICB9XG4gIG5hdHIuZGF0YVtvZnNyXSA9IHJlbTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIG5hdDFbbmF0MjpdIDo9IG5hdDEgLyBuYXQyXG4vLyBuYXQxWzpuYXQyXSA6PSBuYXQxICUgbmF0MlxuLy8gbGVuMSA+IGxlbjIsIG5hdDJbb2ZzMitsZW4yLTFdID4gbmF0MVtvZnMxK2xlbjEtMV1cbi8vUHJvdmlkZXM6IGRpdl9uYXRcbi8vUmVxdWlyZXM6IGRpdl9kaWdpdF9uYXQsIGRpdl9oZWxwZXIsIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdCwgc2hpZnRfbGVmdF9uYXQsIHNoaWZ0X3JpZ2h0X25hdCwgY3JlYXRlX25hdCwgc2V0X3RvX3plcm9fbmF0LCBtdWx0X2RpZ2l0X25hdCwgc3ViX25hdCwgY29tcGFyZV9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gZGl2X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIGlmKGxlbjIgPT0gMSkge1xuICAgIGRpdl9kaWdpdF9uYXQobmF0MSwgb2ZzMSsxLCBuYXQxLCBvZnMxLCBuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciBzID0gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdDIsIG9mczIrbGVuMi0xKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG5cbiAgdmFyIGQgPSAobmF0Mi5kYXRhW29mczIrbGVuMi0xXSA+Pj4gMCkgKyAxO1xuICB2YXIgYSA9IGNyZWF0ZV9uYXQobGVuMisxKTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IGxlbjI7IGktLSkge1xuICAgIC8vIERlY2VudCBsb3dlciBib3VuZCBvbiBxdW9cbiAgICB2YXIgcXVvID0gZCA9PSA0Mjk0OTY3Mjk2ID8gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA6IGRpdl9oZWxwZXIoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDEuZGF0YVtvZnMxK2ktMV0gPj4+MCksIGQpWzBdO1xuICAgIHNldF90b196ZXJvX25hdChhLCAwLCBsZW4yKzEpO1xuICAgIG11bHRfZGlnaXRfbmF0KGEsIDAsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFtxdW9dKSwgMCk7XG4gICAgc3ViX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMisxLCBhLCAwLCBsZW4yKzEsIDEpO1xuXG4gICAgd2hpbGUgKG5hdDEuZGF0YVtvZnMxK2ldICE9IDAgfHwgY29tcGFyZV9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpID49IDApIHtcbiAgICAgIHF1byA9IHF1byArIDE7XG4gICAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIG5hdDIsIG9mczIsIGxlbjIsIDEpO1xuICAgIH1cblxuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gcXVvO1xuICB9XG5cbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gc2hpZnQgcmVtYWluZGVyXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHJlc3RvcmVcbiAgcmV0dXJuIDA7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9yaWdodF9uYXRcbmZ1bmN0aW9uIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IGxlbjEtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgYSA9IG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPj4+IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPDwgKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfZGlnaXRzX25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA+IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIDE7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA8IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRcbi8vUmVxdWlyZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBhID0gbnVtX2RpZ2l0c19uYXQobmF0MSwgb2ZzMSwgbGVuMSk7XG4gIHZhciBiID0gbnVtX2RpZ2l0c19uYXQobmF0Miwgb2ZzMiwgbGVuMik7XG4gIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgZm9yKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgPiAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApKSByZXR1cm4gMTtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA8IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAtMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRfcmVhbFxuLy9SZXF1aXJlczogY29tcGFyZV9uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0X3JlYWwobmF0MSxuYXQyKXtcbiAgcmV0dXJuIGNvbXBhcmVfbmF0KG5hdDEsMCxuYXQxLmRhdGEubGVuZ3RoLG5hdDIsMCxuYXQyLmRhdGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogbGFuZF9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxhbmRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdICY9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGxvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gfD0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbHhvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGx4b3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIF49IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogc2VyaWFsaXplX25hdFxuZnVuY3Rpb24gc2VyaWFsaXplX25hdCh3cml0ZXIsIG5hdCwgc3ope1xuICB2YXIgbGVuID0gbmF0LmRhdGEubGVuZ3RoO1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgd3JpdGVyLndyaXRlKDMyLCBuYXQuZGF0YVtpXSk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICBzelsxXSA9IGxlbiAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGRlc2VyaWFsaXplX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGRlc2VyaWFsaXplX25hdChyZWFkZXIsIHN6KXtcbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBuYXQgPSBuZXcgTWxOYXQobGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBuYXQuZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICByZXR1cm4gbmF0O1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIGZzX25vZGVfc3VwcG9ydGVkICgpIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbnMubm9kZSAhPT0gJ3VuZGVmaW5lZCcpXG59XG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gZmFsc2Vcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sTm9kZUZkLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV93aXRoX2FyZ3Ncbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIE1sTm9kZURldmljZShyb290KSB7XG4gIHRoaXMuZnMgPSByZXF1aXJlKCdmcycpO1xuICB0aGlzLnJvb3QgPSByb290O1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc0ZpbGUgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNGaWxlKCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLCBtb2RlLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ta2RpclN5bmModGhpcy5ubShuYW1lKSx7bW9kZTptb2RlfSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJtZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMucmVhZGRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRGlyZWN0b3J5KCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBiID0gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgICB0aGlzLmZzLnVubGlua1N5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIGI7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIGNvbnN0cyA9IHJlcXVpcmUoJ2NvbnN0YW50cycpO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBrZXkgaW4gZil7XG4gICAgc3dpdGNoKGtleSl7XG4gICAgY2FzZSBcInJkb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19SRE9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJ3cm9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fV1JPTkxZOyBicmVhaztcbiAgICBjYXNlIFwiYXBwZW5kXCIgIDpcbiAgICAgIHJlcyB8PSBjb25zdHMuT19XUk9OTFkgfCBjb25zdHMuT19BUFBFTkQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiY3JlYXRlXCIgICA6IHJlcyB8PSBjb25zdHMuT19DUkVBVDsgICAgYnJlYWs7XG4gICAgY2FzZSBcInRydW5jYXRlXCIgOiByZXMgfD0gY29uc3RzLk9fVFJVTkM7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJleGNsXCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX0VYQ0w7ICAgICBicmVhaztcbiAgICBjYXNlIFwiYmluYXJ5XCIgICA6IHJlcyB8PSBjb25zdHMuT19CSU5BUlk7ICAgYnJlYWs7XG4gICAgY2FzZSBcInRleHRcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fVEVYVDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJub25ibG9ja1wiIDogcmVzIHw9IGNvbnN0cy5PX05PTkJMT0NLOyBicmVhaztcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICB2YXIgZmQgPSB0aGlzLmZzLm9wZW5TeW5jKHRoaXMubm0obmFtZSksIHJlcyk7XG4gICAgdmFyIGlzQ2hhcmFjdGVyRGV2aWNlID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNDaGFyYWN0ZXJEZXZpY2UoKTtcbiAgICBmLmlzQ2hhcmFjdGVyRGV2aWNlID0gaXNDaGFyYWN0ZXJEZXZpY2U7XG4gICAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZCwgZik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZW5hbWUgPSBmdW5jdGlvbihvLCBuLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5yZW5hbWVTeW5jKHRoaXMubm0obyksIHRoaXMubm0obikpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXQgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5sc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zeW1saW5rID0gZnVuY3Rpb24odG9fZGlyLCB0YXJnZXQsIHBhdGgsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnN5bWxpbmtTeW5jKHRoaXMubm0odGFyZ2V0KSwgdGhpcy5ubShwYXRoKSwgdG9fZGlyID8gJ2RpcicgOiAnZmlsZScpO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRsaW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBsaW5rID0gdGhpcy5mcy5yZWFkbGlua1N5bmModGhpcy5ubShuYW1lKSwgJ3V0ZjgnKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobGluayk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5vcGVuZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yYWlzZV9ub2RlanNfZXJyb3IgPSBmdW5jdGlvbihlcnIsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKFwiVW5peC5Vbml4X2Vycm9yXCIpO1xuICBpZiAocmFpc2VfdW5peCAmJiB1bml4X2Vycm9yKSB7XG4gICAgdmFyIGFyZ3MgPSBtYWtlX3VuaXhfZXJyX2FyZ3MoZXJyLmNvZGUsIGVyci5zeXNjYWxsLCBlcnIucGF0aCwgZXJyLmVycm5vKTtcbiAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdHNfZnJvbV9qcyA9IGZ1bmN0aW9uKGpzX3N0YXRzKSB7XG4gIC8qID09PVVuaXguZmlsZV9raW5kPT09XG4gICAqIHR5cGUgZmlsZV9raW5kID1cbiAgICogICAgIFNfUkVHICAgICAgICAgICAgICAgICAgICAgICAoKiogUmVndWxhciBmaWxlICopXG4gICAqICAgfCBTX0RJUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIERpcmVjdG9yeSAqKVxuICAgKiAgIHwgU19DSFIgICAgICAgICAgICAgICAgICAgICAgICgqKiBDaGFyYWN0ZXIgZGV2aWNlICopXG4gICAqICAgfCBTX0JMSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIEJsb2NrIGRldmljZSAqKVxuICAgKiAgIHwgU19MTksgICAgICAgICAgICAgICAgICAgICAgICgqKiBTeW1ib2xpYyBsaW5rICopXG4gICAqICAgfCBTX0ZJRk8gICAgICAgICAgICAgICAgICAgICAgKCoqIE5hbWVkIHBpcGUgKilcbiAgICogICB8IFNfU09DSyAgICAgICAgICAgICAgICAgICAgICAoKiogU29ja2V0ICopXG4gICAqL1xuICB2YXIgZmlsZV9raW5kO1xuICBpZiAoanNfc3RhdHMuaXNGaWxlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAwO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBmaWxlX2tpbmQgPSAxO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAyO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQmxvY2tEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDM7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgIGZpbGVfa2luZCA9IDQ7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNGSUZPKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA1O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU29ja2V0KCkpIHtcbiAgICBmaWxlX2tpbmQgPSA2O1xuICB9XG4gIC8qID09PVVuaXguc3RhdHM9PT1cbiAgICogdHlwZSBzdGF0cyA9XG4gICAqICB7IHN0X2RldiA6IGludDsgICAgICAgICAgICAgICAoKiogRGV2aWNlIG51bWJlciAqKVxuICAgKiAgICBzdF9pbm8gOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIElub2RlIG51bWJlciAqKVxuICAgKiAgICBzdF9raW5kIDogZmlsZV9raW5kOyAgICAgICAgKCoqIEtpbmQgb2YgdGhlIGZpbGUgKilcbiAgICogICAgc3RfcGVybSA6IGZpbGVfcGVybTsgICAgICAgICgqKiBBY2Nlc3MgcmlnaHRzICopXG4gICAqICAgIHN0X25saW5rIDogaW50OyAgICAgICAgICAgICAoKiogTnVtYmVyIG9mIGxpbmtzICopXG4gICAqICAgIHN0X3VpZCA6IGludDsgICAgICAgICAgICAgICAoKiogVXNlciBpZCBvZiB0aGUgb3duZXIgKilcbiAgICogICAgc3RfZ2lkIDogaW50OyAgICAgICAgICAgICAgICgqKiBHcm91cCBJRCBvZiB0aGUgZmlsZSdzIGdyb3VwICopXG4gICAqICAgIHN0X3JkZXYgOiBpbnQ7ICAgICAgICAgICAgICAoKiogRGV2aWNlIElEIChpZiBzcGVjaWFsIGZpbGUpICopXG4gICAqICAgIHN0X3NpemUgOiBpbnQ7ICAgICAgICAgICAgICAoKiogU2l6ZSBpbiBieXRlcyAqKVxuICAgKiAgICBzdF9hdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgYWNjZXNzIHRpbWUgKilcbiAgICogICAgc3RfbXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IG1vZGlmaWNhdGlvbiB0aW1lICopXG4gICAqICAgIHN0X2N0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBzdGF0dXMgY2hhbmdlIHRpbWUgKilcbiAgICogIH1cbiAgICovXG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGpzX3N0YXRzLmRldixcbiAgICBqc19zdGF0cy5pbm8sXG4gICAgZmlsZV9raW5kLFxuICAgIGpzX3N0YXRzLm1vZGUsXG4gICAganNfc3RhdHMubmxpbmssXG4gICAganNfc3RhdHMudWlkLFxuICAgIGpzX3N0YXRzLmdpZCxcbiAgICBqc19zdGF0cy5yZGV2LFxuICAgIGpzX3N0YXRzLnNpemUsXG4gICAganNfc3RhdHMuYXRpbWVNcyxcbiAgICBqc19zdGF0cy5tdGltZU1zLFxuICAgIGpzX3N0YXRzLmN0aW1lTXNcbiAgKTtcbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZURldmljZSgpIHtcbn1cblxuLy9Qcm92aWRlczogTWxOb2RlRmRcbi8vUmVxdWlyZXM6IE1sRmlsZSwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfc2V0LCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxOb2RlRmQoZmQsIGZsYWdzKXtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMuZmQgPSBmZDtcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuTWxOb2RlRmQucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sTm9kZUZkLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZUZkO1xuXG5NbE5vZGVGZC5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB0cnkge1xuICAgIHRoaXMuZnMuZnRydW5jYXRlU3luYyh0aGlzLmZkLGxlbnwwKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmZzdGF0U3luYyh0aGlzLmZkKS5zaXplO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYsYnVmX29mZnNldCxsZW4pe1xuICB0cnkge1xuICAgIGlmKHRoaXMuZmxhZ3MuaXNDaGFyYWN0ZXJEZXZpY2UpXG4gICAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWYsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgZWxzZVxuICAgICAgdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGEsYnVmX29mZnNldCxsZW4pe1xuICB0cnkge1xuICAgIGlmKHRoaXMuZmxhZ3MuaXNDaGFyYWN0ZXJEZXZpY2UpXG4gICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuKTtcbiAgICBlbHNlXG4gICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuLCBvZmZzZXQpO1xuICAgIHJldHVybiByZWFkO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCl7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5jbG9zZVN5bmModGhpcy5mZCk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogTWxOb2RlRmRcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZUZkKCl7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9SZXF1aXJlczogTWxOb2RlRmRcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKXtcbiAgaWYoZmxhZ3MubmFtZSkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgZnMgPSByZXF1aXJlKFwiZnNcIik7XG4gICAgICB2YXIgZmQyID0gZnMub3BlblN5bmMoZmxhZ3MubmFtZSwgXCJyc1wiKTtcbiAgICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQyLCBmbGFncyk7XG4gICAgfSBjYXRjaChlKSB7ICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZCwgZmxhZ3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyl7XG4gIHJldHVybiBudWxsO1xufVxuIiwiLy8vLy8vLy8vIEJJR1NUUklOR1xuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYWxsb2Ncbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlXG5mdW5jdGlvbiBiaWdzdHJpbmdfYWxsb2MoXyxzaXplKXtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlKDEyLCAwLCBbMCxzaXplXSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWJcbmZ1bmN0aW9uIGJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWIoeCl7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9zdHViKHMxLCBpMSwgczIsIGkyLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShzMSxpMSxzMixpMixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nX2JsaXRfYnl0ZXNfYmlnc3RyaW5nX3N0dWIoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhKHNyYyxzcmNfcG9zLGRzdCxkc3RfcG9zLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YihzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbXNldF9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtc2V0X3N0dWIoYmlnc3RyaW5nLCB2X3Bvcywgdl9sZW4sIHZfY2hhcikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZfbGVuOyBpKyspIHtcbiAgICBjYW1sX2JhX3NldF8xKGJpZ3N0cmluZywgdl9wb3MgKyBpLCB2X2NoYXIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19tZW1jbXBfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gYmlnc3RyaW5nX21lbWNtcF9zdHViKHZfczEsIHZfczFfcG9zLCB2X3MyLCB2X3MyX3Bvcywgdl9sZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZfbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEodl9zMSx2X3MxX3BvcyArIGkpO1xuICAgIHZhciBiID0gY2FtbF9iYV9nZXRfMSh2X3MyLHZfczJfcG9zICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbWNtcF9ieXRlc19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xLCBjYW1sX2J5dGVzX2dldFxuZnVuY3Rpb24gYmlnc3RyaW5nX21lbWNtcF9ieXRlc19zdHViKHZfczEsIHZfczFfcG9zLCB2X3MyLCB2X3MyX3Bvcywgdl9sZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2X2xlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHZfczEsIHZfczFfcG9zICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2J5dGVzX2dldCh2X3MyLCB2X3MyX3BvcyArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZ1xudmFyIGludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZyA9IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19maW5kXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfZmluZChicywgY2hyLCBwb3MsIGxlbil7XG4gIHdoaWxlKGxlbiA+IDApe1xuICAgIGlmKGNhbWxfYmFfZ2V0XzEoYnMscG9zKSA9PSBjaHIpIHJldHVybiBwb3M7XG4gICAgcG9zKys7XG4gICAgbGVuLS07XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtbWVtX2J5dGVjb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtbWVtX2J5dGVjb2RlKGhheXN0YWNrLCBuZWVkbGUsIGhheXN0YWNrX3BvcywgaGF5c3RhY2tfbGVuLCBuZWVkbGVfcG9zLCBuZWVkbGVfbGVuKXtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbGltID0gaGF5c3RhY2tfbGVuIC0gbmVlZGxlX2xlbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8PSBsaW07ICsraSkge1xuICAgIHZhciBtYXRjaGVzID0gdHJ1ZTtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5lZWRsZV9sZW47ICsraikge1xuICAgICAgaWYgKGNhbWxfYmFfZ2V0XzEoaGF5c3RhY2ssIGhheXN0YWNrX3BvcyArIGkgKyBqKSAhPSBjYW1sX2JhX2dldF8xKG5lZWRsZSxuZWVkbGVfcG9zICsgaikpIHtcbiAgICAgICAgbWF0Y2hlcyA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG1hdGNoZXMpIHJldHVybiAoaGF5c3RhY2tfcG9zICsgaSk7XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuIiwiLy8vLy8vLy8vIEJJR1NUUklOR1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nKGgsIGJzKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLGJzLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGEuYnVmZmVyXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGFcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIoYWIpIHtcbiAgdmFyIHRhID0gbmV3IFVpbnQ4QXJyYXkoYWIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoYmEpIHtcbiAgdmFyIHRhID0gbmV3IFVpbnQ4QXJyYXkoYmEuYnVmZmVyLCBiYS5ieXRlT2Zmc2V0LCBiYS5sZW5ndGggKiBiYS5CWVRFU19QRVJfRUxFTUVOVCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX21lbWNtcFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfbWVtY21wKHMxLCBwb3MxLCBzMiwgcG9zMiwgbGVuKXtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMShzMSxwb3MxICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2JhX2dldF8xKHMyLHBvczIgKyBpKTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoYmExLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMS5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKG9mczEgKyBsZW4gPiBiYTEuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gYmExLmRhdGEuc3ViYXJyYXkob2ZzMSxvZnMxK2xlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxwb3MyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKHBvczEgKyBsZW4gPiBjYW1sX21sX3N0cmluZ19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKHBvczEgKyBsZW4gPiBjYW1sX21sX2J5dGVzX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoc3RyMSkuc2xpY2UocG9zMSxwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLG9mczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoYmExLCBwb3MxLCBieXRlczIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMS5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMxID0gYmExLm9mZnNldChwb3MxKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKHBvczIgKyBsZW4gPiBjYW1sX21sX2J5dGVzX2xlbmd0aChieXRlczIpKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gYmExLmRhdGEuc2xpY2Uob2ZzMSwgb2ZzMStsZW4pO1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShzbGljZSksIDAsIGJ5dGVzMiwgcG9zMiwgbGVuKTtcbiAgcmV0dXJuIDBcbn1cbiIsIi8vLy8vLy8vLyBDT1JFXG5cbi8vUHJvdmlkZXM6IGNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbnZhciBjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCA9IGNhbWxfYXJyYXlfYmxpdFxuLy9Qcm92aWRlczogY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG52YXIgY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdCA9IGNhbWxfYXJyYXlfYmxpdFxuXG4vL1Byb3ZpZGVzOiBjb3JlX3RpbWVfbnNfZm9ybWF0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjb3JlX3RpbWVfbnNfZm9ybWF0KHRpbWUsZm9ybWF0KXtcbiAgdmFyIGQgPSBuZXcgRGF0ZSh0aW1lICogMTAwMCk7XG4gIHZhciBmb3JtYXRqcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm9ybWF0KTtcbiAgdmFyIGpzdHJpbmcgPSBqb29fZ2xvYmFsX29iamVjdC5zdHJmdGltZShmb3JtYXRqcywgZCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGpzdHJpbmcpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb3JlX2djX2NvbXBhY3Rpb25zXG5mdW5jdGlvbiBjb3JlX2djX2NvbXBhY3Rpb25zICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19oZWFwX2NodW5rc1xuZnVuY3Rpb24gY29yZV9nY19oZWFwX2NodW5rcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfaGVhcF93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19oZWFwX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19tYWpvcl9jb2xsZWN0aW9uc1xuZnVuY3Rpb24gY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19tYWpvcl93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19tYWpvcl93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21pbm9yX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19wcm9tb3RlZF93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19wcm9tb3RlZF93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfdG9wX2hlYXBfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfdG9wX2hlYXBfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrc1xuZnVuY3Rpb24gY29yZV9nY19ydW5fbWVtcHJvZl9jYWxsYmFja3MgKCkgeyByZXR1cm4gMCB9XG5cbi8vUHJvdmlkZXM6IGNvcmVfbWQ1X2ZkXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiwgY2FtbF9tZDVfY2hhbiwgY2FtbF9tbF9jbG9zZV9jaGFubmVsXG5mdW5jdGlvbiBjb3JlX21kNV9mZChmZCl7XG4gICAgdmFyIGljID0gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4oZmQpO1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBjYW1sX21kNV9jaGFuKGljLCAtMSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgY2FtbF9tbF9jbG9zZV9jaGFubmVsKGljKTtcbiAgICB9XG59XG5cbi8vUHJvdmlkZXM6IGNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWQ1X3N0cmluZywgY2FtbF9ibGl0X3N0cmluZywgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuZnVuY3Rpb24gY29yZV9tZDVfZGlnZXN0X3N1YmJpZ3N0cmluZyhidWYsIG9mcywgbGVuLCByZXMpe1xuICAgIHZhciBieXRlcyA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gICAgYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIoYnVmLCBvZnMsIGJ5dGVzLCAwLCBsZW4pO1xuICAgIHZhciByZXMyID0gY2FtbF9tZDVfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2J5dGVzKGJ5dGVzKSwgMCwgbGVuKTtcbiAgICBjYW1sX2JsaXRfc3RyaW5nKHJlczIsIDAsIHJlcywgMCwgMTYpO1xuICAgIHJldHVybiAwO1xufVxuXG4vL0JpZ3N0cmluZ1xuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfZGVzdHJveV9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGJpZ3N0cmluZ19kZXN0cm95X3N0dWIodl9ic3RyKSB7XG4gIGlmICh2X2JzdHIuaGFzT3duUHJvcGVydHkoJ19faXNfZGVhbGxvY2F0ZWQnKSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ3N0cmluZ19kZXN0cm95OiBiaWdzdHJpbmcgaXMgYWxyZWFkeSBkZWFsbG9jYXRlZFwiKTtcbiAgfVxuICAvLyBNdXRhdGUgdGhlIG9yaWdpbmFsIGJpZ3N0cmluZyBpbi1wbGFjZSwgdG8gc2ltdWxhdGUgd2hhdCB0aGUgQyB2ZXJzaW9uIGRvZXNcbiAgdl9ic3RyLl9faXNfZGVhbGxvY2F0ZWQgPSB0cnVlO1xuICB2X2JzdHIuZGF0YSA9IG5ldyB2X2JzdHIuZGF0YS5fX3Byb3RvX18uY29uc3RydWN0b3IoMCk7XG4gIHZfYnN0ci5kaW1zID0gWyAwIF07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfcmVhbGxvY1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGJpZ3N0cmluZ19kZXN0cm95X3N0dWJcbmZ1bmN0aW9uIGJpZ3N0cmluZ19yZWFsbG9jKGJpZ3N0cmluZywgc2l6ZSkge1xuICAgIGlmIChiaWdzdHJpbmcuaGFzT3duUHJvcGVydHkoJ19faXNfZGVhbGxvY2F0ZWQnKSkge1xuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJiaWdzdHJpbmdfcmVhbGxvYzogYmlnc3RyaW5nIGlzIGFscmVhZHkgZGVhbGxvY2F0ZWRcIik7XG4gICAgfVxuXG4gICAgdmFyIG5ld19kYXRhID0gbmV3IGJpZ3N0cmluZy5kYXRhLl9fcHJvdG9fXy5jb25zdHJ1Y3RvcihzaXplKTtcbiAgICBuZXdfZGF0YS5zZXQoYmlnc3RyaW5nLmRhdGEuc2xpY2UoMCwgc2l6ZSkpO1xuICAgIHZhciBuZXdfYmlnc3RyaW5nID0gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJpZ3N0cmluZy5raW5kLCBiaWdzdHJpbmcubGF5b3V0LCBbc2l6ZV0sIG5ld19kYXRhKTtcbiAgICBiaWdzdHJpbmdfZGVzdHJveV9zdHViKGJpZ3N0cmluZyk7XG5cbiAgICByZXR1cm4gbmV3X2JpZ3N0cmluZztcbn1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIENvcHlyaWdodCAoYykgMjAxNyBJbmhhYml0ZWQgVHlwZSBMTEMuXG5cbiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gICAgYXJlIG1ldDpcblxuICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuXG4gICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGhpcyBjb250cmlidXRvcnNcbiAgICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmVcbiAgICAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cblxuICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTXG4gICAgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAgICBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gICAgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SXG4gICAgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICAgIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTXG4gICAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pXG4gICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULFxuICAgIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTlxuICAgIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRVxuICAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuZnVuY3Rpb24gYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlcyhzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKSB7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKHNyYyxzcmNfb2ZmLGRzdCxkc3Rfb2ZmLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX2JsaXRfdG9fYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9ibGl0X3RvX2JpZ3N0cmluZyhzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKSB7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXMoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbikge1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfaW50X2NvbXBhcmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmcoYmExLCBiYTFfb2ZmLCBiYTIsIGJhMl9vZmYsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBjYW1sX2ludF9jb21wYXJlKGNhbWxfYmFfZ2V0XzEoYmExLCBiYTFfb2ZmICsgaSksIGNhbWxfYmFfZ2V0XzEoYmEyLCBiYTJfb2ZmICsgaSkpO1xuICAgIGlmIChjICE9IDApIHJldHVybiBjXG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfaW50X2NvbXBhcmUsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmcoYmEsIGJhX29mZiwgc3RyLCBzdHJfb2ZmLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gY2FtbF9pbnRfY29tcGFyZShjYW1sX2JhX2dldF8xKGJhLCBiYV9vZmYgKyBpKSwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzdHIsIHN0cl9vZmYgKyBpKSk7XG4gICAgaWYgKGMgIT0gMCkgcmV0dXJuIGNcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfbWVtY2hyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9tZW1jaHIoYmEsIGJhX29mZiwgY2hyLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChjYW1sX2JhX2dldF8xKGJhLCBiYV9vZmYgKyBpKSA9PSBjaHIpIHtcbiAgICAgIHJldHVybiAoYmFfb2ZmICsgaSk7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSl7XG4gIGlmICh0eXBlb2YgYSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoYSkpIHJldHVybiAyNTI7IC8vIHN0cmluZ190YWdcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoYSkpIHJldHVybiAxMjUyOyAvLyBvY2FtbCBzdHJpbmcgKGlmIGRpZmZlcmVudCBmcm9tIGJ5dGVzKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgQXJyYXkgJiYgYVswXSA9PT0gKGFbMF0+Pj4wKSAmJiBhWzBdIDw9IDI1NSkge1xuICAgIC8vIExvb2sgbGlrZSBhbiBvY2FtbCBibG9ja1xuICAgIHZhciB0YWcgPSBhWzBdIHwgMDtcbiAgICAvLyBpZ25vcmUgZG91YmxlX2FycmF5X3RhZyBiZWNhdXNlIHdlIGNhbm5vdCBhY2N1cmF0ZWx5IHNldFxuICAgIC8vIHRoaXMgdGFnIHdoZW4gd2UgY3JlYXRlIGFuIGFycmF5IG9mIGZsb2F0LlxuICAgIHJldHVybiAodGFnID09IDI1NCk/MDp0YWdcbiAgfVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgU3RyaW5nKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzdHJpbmdcIikgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBOdW1iZXIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChhICYmIGEuY2FtbF9jdXN0b20pIHJldHVybiAxMjU1OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAoYSAmJiBhLmNvbXBhcmUpIHJldHVybiAxMjU2OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gMTI0NzsgLy8gbGlrZSBjbG9zdXJlX3RhZyAoMjQ3KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN5bWJvbFwiKSByZXR1cm4gMTI1MTtcbiAgcmV0dXJuIDEwMDE7IC8vb3V0X29mX2hlYXBfdGFnXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSl7XG4gIHJldHVybiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dLmNvbXBhcmU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20obnVtLCBjdXN0b20sIHN3YXAsIHRvdGFsKSB7XG4gIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGN1c3RvbSk7XG4gIGlmKGNvbXApIHtcbiAgICB2YXIgeCA9IChzd2FwID4gMCk/Y29tcChjdXN0b20sbnVtLHRvdGFsKTpjb21wKG51bSxjdXN0b20sdG90YWwpO1xuICAgIGlmKHRvdGFsICYmIHggIT0geCkgcmV0dXJuIHN3YXA7IC8vIHRvdGFsICYmIG5hblxuICAgIGlmKCt4ICE9ICt4KSByZXR1cm4gK3g7IC8vIG5hblxuICAgIGlmKCh4IHwgMCkgIT0gMCkgcmV0dXJuICh4IHwgMCk7IC8vICFuYW5cbiAgfVxuICByZXR1cm4gc3dhcFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsIChjb25zdCwgY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnRfY29tcGFyZSwgY2FtbF9zdHJpbmdfY29tcGFyZSwgY2FtbF9ieXRlc19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSwgY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsIChhLCBiLCB0b3RhbCkge1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKCEodG90YWwgJiYgYSA9PT0gYikpIHtcbiAgICAgIHZhciB0YWdfYSA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGEpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYodGFnX2EgPT0gMjUwKSB7IGEgPSBhWzFdOyBjb250aW51ZSB9XG5cbiAgICAgIHZhciB0YWdfYiA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGIpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYodGFnX2IgPT0gMjUwKSB7IGIgPSBiWzFdOyBjb250aW51ZSB9XG5cbiAgICAgIC8vIHRhZ3MgYXJlIGRpZmZlcmVudFxuICAgICAgaWYodGFnX2EgIT09IHRhZ19iKSB7XG4gICAgICAgIGlmKHRhZ19hID09IDEwMDApIHtcbiAgICAgICAgICBpZih0YWdfYiA9PSAxMjU1KSB7IC8vaW1tZWRpYXRlIGNhbiBjb21wYXJlIGFnYWluc3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKGEsIGIsIC0xLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmKHRhZ19iID09IDEwMDApIHtcbiAgICAgICAgICBpZih0YWdfYSA9PSAxMjU1KSB7IC8vaW1tZWRpYXRlIGNhbiBjb21wYXJlIGFnYWluc3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKGIsIGEsIDEsIHRvdGFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDFcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHRhZ19hIDwgdGFnX2IpPy0xOjE7XG4gICAgICB9XG4gICAgICBzd2l0Y2godGFnX2Epe1xuICAgICAgICAvLyAyNDY6IExhenlfdGFnIGhhbmRsZWQgYmVsbG93XG4gICAgICBjYXNlIDI0NzogLy8gQ2xvc3VyZV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNDg6IC8vIE9iamVjdFxuICAgICAgICB2YXIgeCA9IGNhbWxfaW50X2NvbXBhcmUoYVsyXSwgYlsyXSk7XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ5OiAvLyBJbmZpeFxuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1MDogLy8gRm9yd2FyZCB0YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlbiwgaGFuZGxlZCBhYm92ZVxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEZvcndhcmRfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MTogLy9BYnN0cmFjdFxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTI6IC8vIE9DYW1sIGJ5dGVzXG4gICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgdmFyIHggPSBjYW1sX2J5dGVzX2NvbXBhcmUoYSwgYik7XG4gICAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTM6IC8vIERvdWJsZV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IERvdWJsZV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjU0OiAvLyBEb3VibGVfYXJyYXlfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfYXJyYXlfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjU1OiAvLyBDdXN0b21fdGFnXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgQ3VzdG9tX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjQ3OiAvLyBGdW5jdGlvblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1NTogLy8gQ3VzdG9tXG4gICAgICAgIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpO1xuICAgICAgICBpZihjb21wICE9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShiKSl7XG4gICAgICAgICAgcmV0dXJuIChhLmNhbWxfY3VzdG9tPGIuY2FtbF9jdXN0b20pPy0xOjE7XG4gICAgICAgIH1cbiAgICAgICAgaWYoIWNvbXApXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgIHZhciB4ID0gY29tcChhLGIsdG90YWwpO1xuICAgICAgICBpZih4ICE9IHgpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1NjogLy8gY29tcGFyZSBmdW5jdGlvblxuICAgICAgICB2YXIgeCA9IGEuY29tcGFyZShiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KSB7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIFVOT1JERVJFRFxuICAgICAgICAgIHJldHVybiB0b3RhbD8tMTp4O1xuICAgICAgICB9XG4gICAgICAgIGlmKHggIT09ICh4fDApKXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAwOiAvLyBOdW1iZXJcbiAgICAgICAgYSA9ICthO1xuICAgICAgICBiID0gK2I7XG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICBpZiAoYSAhPSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICBpZiAoYSA9PSBhKSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoYiA9PSBiKSByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwMDE6IC8vIFRoZSByZXN0XG4gICAgICAgIC8vIEhlcmUgd2UgY2FuIGJlIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gICAgICAgIC8vIDEuIEphdmFTY3JpcHQgcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vIDIuIEphdmFTY3JpcHQgb2JqZWN0IHRoYXQgY2FuIGJlIGNvZXJjZWQgdG8gcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vIDMuIEphdmFTY3JpcHQgb2JqZWN0IHRoYW4gY2Fubm90IGJlIGNvZXJjZWQgdG8gcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vXG4gICAgICAgIC8vICgzKSB3aWxsIHJhaXNlIGEgW1R5cGVFcnJvcl1cbiAgICAgICAgLy8gKDIpIHdpbGwgY29lcmNlIHRvIHByaW1pdGl2ZSB0eXBlcyB1c2luZyBbdmFsdWVPZl0gb3IgW3RvU3RyaW5nXVxuICAgICAgICAvLyAoMikgYW5kICgzKSwgYWZ0ZXIgZXZlbnR1YWwgY29lcmNpb25cbiAgICAgICAgLy8gLSBpZiBhIGFuZCBiIGFyZSBzdHJpbmdzLCBhcHBseSBsZXhpY29ncmFwaGljIGNvbXBhcmlzb25cbiAgICAgICAgLy8gLSBpZiBhIG9yIGIgYXJlIG5vdCBzdHJpbmdzLCBjb252ZXJ0IGEgYW5kIGIgdG8gbnVtYmVyXG4gICAgICAgIC8vICAgYW5kIGFwcGx5IHN0YW5kYXJkIGNvbXBhcmlzb25cbiAgICAgICAgLy9cbiAgICAgICAgLy8gRXhjZXB0aW9uOiBgIT1gIHdpbGwgbm90IGNvZXJjZS9jb252ZXJ0IGlmIGJvdGggYSBhbmQgYiBhcmUgb2JqZWN0c1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUxOiAvLyBKYXZhU2NyaXB0IFN5bWJvbCwgbm8gb3JkZXJpbmcuXG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyOiAvLyBvY2FtbCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhhKTtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGIpO1xuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZihhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTIwOiAvLyBqYXZhc2NyaXB0IHN0cmluZ3NcbiAgICAgICAgdmFyIGEgPSBhLnRvU3RyaW5nKCk7XG4gICAgICAgIHZhciBiID0gYi50b1N0cmluZygpO1xuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZihhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0NjogLy8gTGF6eV90YWdcbiAgICAgIGNhc2UgMjU0OiAvLyBEb3VibGVfYXJyYXlcbiAgICAgIGRlZmF1bHQ6IC8vIEJsb2NrIHdpdGggb3RoZXIgdGFnXG4gICAgICAgIGlmKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0YWdfYSkpIHtcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGEubGVuZ3RoICE9IGIubGVuZ3RoKSByZXR1cm4gKGEubGVuZ3RoIDwgYi5sZW5ndGgpPy0xOjE7XG4gICAgICAgIGlmIChhLmxlbmd0aCA+IDEpIHN0YWNrLnB1c2goYSwgYiwgMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3RhY2subGVuZ3RoID09IDApIHJldHVybiAwO1xuICAgIHZhciBpID0gc3RhY2sucG9wKCk7XG4gICAgYiA9IHN0YWNrLnBvcCgpO1xuICAgIGEgPSBzdGFjay5wb3AoKTtcbiAgICBpZiAoaSArIDEgPCBhLmxlbmd0aCkgc3RhY2sucHVzaChhLCBiLCBpICsgMSk7XG4gICAgYSA9IGFbaV07XG4gICAgYiA9IGJbaV07XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9jb21wYXJlIChhLCBiKSB7IHJldHVybiBjYW1sX2NvbXBhcmVfdmFsIChhLCBiLCB0cnVlKTsgfVxuLy9Qcm92aWRlczogY2FtbF9pbnRfY29tcGFyZSBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2ludF9jb21wYXJlIChhLCBiKSB7XG4gIGlmIChhIDwgYikgcmV0dXJuICgtMSk7IGlmIChhID09IGIpIHJldHVybiAwOyByZXR1cm4gMTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9lcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPT0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ub3RlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgIT0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcmVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcmVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA+PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVydGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJ0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA+IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3NlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3NlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPD0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc3RoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzdGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPCAwKTsgfVxuIiwiLy8vLy8vLy8vIEJJTl9QUk9UXG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhiaWdzdHJpbmcsIGkpe1xuICBpZiAoaSA+Pj4gMCA+PSBiaWdzdHJpbmcuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbn1cblxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9jaGVja19ib3VuZCwgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmdcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWIoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgY2FtbF9jaGVja19ib3VuZChkc3QsZHN0X3Bvcyk7IC8vIGZpcnN0IHBvc1xuICBjYW1sX2NoZWNrX2JvdW5kKGRzdCxkc3RfcG9zK2xlbi0xKTsgLy8gbGFzdCBwb3NcbiAgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoc3JjLCBzcmNfcG9zKTsgIC8qIGZpcnN0IHBvcyAqL1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhzcmMsIHNyY19wb3MgKyBsZW4gKiA4IC0gMSk7IC8qIGxhc3QgcG9zICovXG4gIHZhciB2aWV3ID0gbmV3IGpvb19nbG9iYWxfb2JqZWN0LkZsb2F0NjRBcnJheShsZW4pO1xuICB2YXIgYnVmZmVyID0gbmV3IGpvb19nbG9iYWxfb2JqZWN0LlVpbnQ4QXJyYXkodmlldy5idWZmZXIpO1xuICBidWZmZXIuc2V0KHNyYy5kYXRhLnN1YmFycmF5KHNyY19wb3MsIHNyY19wb3MgKyAobGVuICogOCkpKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICAvLyBbKyAxXSBiZWNhdXNlIHRoZSB0YWcgaXMgYXQgcG9zIDAgXG4gICAgZHN0W2RzdF9wb3MraSsxXSA9IHZpZXdbaV07XG4gIH1cbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnVmX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfYnVmX2J5dGVzX3N0dWIoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pO1xufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9jaGVja19ib3VuZCwgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmdcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfZmxvYXRfYXJyYXlfYnVmX3N0dWIoc3JjX3BvcyxzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgaWYobGVuID09IDApIHJldHVybiAwIFxuICBjYW1sX2NoZWNrX2JvdW5kIChzcmMsIHNyY19wb3MpOyAvLyBmaXJzdCBwb3MgXG4gIGNhbWxfY2hlY2tfYm91bmQgKHNyYywgc3JjX3BvcyArIGxlbiAtIDEpOyAvLyBsYXN0IHBvc1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhkc3QsIGRzdF9wb3MpOyAvKiBmaXJzdCBwb3MgKi9cbiAgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoZHN0LCBkc3RfcG9zICsgbGVuICogOCAtIDEpOyAvKiBsYXN0IHBvcyAqL1xuICAvLyBbKyAxXSBiZWNhdXNlIHRoZSB0YWcgaXMgYXQgcG9zIDBcbiAgc3JjX3BvcyA9IHNyY19wb3MgKyAxXG4gIHZhciBmbG9hdDY0ID0gbmV3IGpvb19nbG9iYWxfb2JqZWN0LkZsb2F0NjRBcnJheShzcmMuc2xpY2Uoc3JjX3BvcyxzcmNfcG9zICsgbGVuKSk7XG4gIHZhciBmbG9hdDY0X3VpbnQ4ID0gbmV3IGpvb19nbG9iYWxfb2JqZWN0LlVpbnQ4QXJyYXkoZmxvYXQ2NC5idWZmZXIpO1xuICB2YXIgdmlldyA9IGRzdC5kYXRhLnN1YmFycmF5KGRzdF9wb3MsIGRzdF9wb3MgKyAobGVuICogOCkpO1xuICB2aWV3LnNldChmbG9hdDY0X3VpbnQ4KTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfc3RyaW5nX2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIgKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLHNyY19wb3MsIGRzdCwgZHN0X3BvcyxsZW4pO1xufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfYnl0ZXNfYnVmX3N0dWIgKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLHNyY19wb3MsIGRzdCwgZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhLCBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfYnVmX3N0dWIgKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICAvLyBbYmluX3Byb3RfYmxpdF9idWZfc3R1Yl0gaXMgdXNlZCB3aXRoIG1peGVkIGJpZ2FycmF5IGtpbmRzLlxuICAvLyBDb252ZXJ0ZXIgZXZlcnl0aGluZyB0byBiaWdhcnJheSBvZiBjaGFyIGJlZm9yZSB0aGUgYmxpdC5cbiAgaWYoc3JjLmtpbmQgIT0gMTIpIC8vIDEyIGlzIHRoZSBjaGFyIGtpbmRcbiAgICBzcmMgPSBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoc3JjLmRhdGEpO1xuICBpZihkc3Qua2luZCAhPSAxMikgLy8gMTIgaXMgdGhlIGNoYXIga2luZFxuICAgIGRzdCA9IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShkc3QuZGF0YSk7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKHNyYyxzcmNfcG9zLGRzdCxkc3RfcG9zLGxlbik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEFycmF5XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc3ViIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc3ViIChhLCBpLCBsZW4pIHtcbiAgdmFyIGEyID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYTJbMF09MDtcbiAgZm9yKHZhciBpMiA9IDEsIGkxPSBpKzE7IGkyIDw9IGxlbjsgaTIrKyxpMSsrICl7XG4gICAgYTJbaTJdPWFbaTFdO1xuICB9XG4gIHJldHVybiBhMjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9hcHBlbmQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKSB7XG4gIHZhciBsMSA9IGExLmxlbmd0aCwgbDIgPSBhMi5sZW5ndGg7XG4gIHZhciBsID0gbDErbDItMVxuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IDA7XG4gIHZhciBpID0gMSxqID0gMTtcbiAgZm9yKDtpPGwxO2krKykgYVtpXT1hMVtpXTtcbiAgZm9yKDtpPGw7aSsrLGorKykgYVtpXT1hMltqXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfY29uY2F0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfY29uY2F0KGwpIHtcbiAgdmFyIGEgPSBbMF07XG4gIHdoaWxlIChsICE9PSAwKSB7XG4gICAgdmFyIGIgPSBsWzFdO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYi5sZW5ndGg7IGkrKykgYS5wdXNoKGJbaV0pO1xuICAgIGwgPSBsWzJdO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy8vLy8vLy8vLy8vLyBQZXJ2YXNpdmVcbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc2V0IChtdXRhYmxlLCBjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc2V0IChhcnJheSwgaW5kZXgsIG5ld3ZhbCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGFycmF5W2luZGV4KzFdPW5ld3ZhbDsgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZ2V0IG11dGFibGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9nZXQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheVtpbmRleCsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9maWxsXG5mdW5jdGlvbiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KXtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBhcnJheVtvZnMraSsxXSA9IHY7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hlY2tfYm91bmQgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZCAoYXJyYXksIGluZGV4KSB7XG4gIGlmIChpbmRleCA+Pj4gMCA+PSBhcnJheS5sZW5ndGggLSAxKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3ZlY3QgY29uc3QgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX3ZlY3QgKGxlbiwgaW5pdCkge1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IGluaXQ7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfZmxvYXRfdmVjdCBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfZmxvYXRfdmVjdChsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9jcmVhdGUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2NyZWF0ZShsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbiIsIi8vUHJvdmlkZXM6IGJsYWtlMmJcbi8vVmVyc2lvbjogPj0gNS4yXG52YXIgYmxha2UyYiA9IChmdW5jdGlvbiAoKSB7XG4vLyBCbGFrZTJCIGluIHB1cmUgSmF2YXNjcmlwdFxuLy8gQWRhcHRlZCBmcm9tIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaW4gUkZDNzY5M1xuLy8gUG9ydGVkIHRvIEphdmFzY3JpcHQgYnkgREMgLSBodHRwczovL2dpdGh1Yi5jb20vZGNwb3NjaFxuXG4vLyA2NC1iaXQgdW5zaWduZWQgYWRkaXRpb25cbi8vIFNldHMgdlthLGErMV0gKz0gdltiLGIrMV1cbi8vIHYgc2hvdWxkIGJlIGEgVWludDMyQXJyYXlcbmZ1bmN0aW9uIEFERDY0QUEgKHYsIGEsIGIpIHtcbiAgY29uc3QgbzAgPSB2W2FdICsgdltiXVxuICBsZXQgbzEgPSB2W2EgKyAxXSArIHZbYiArIDFdXG4gIGlmIChvMCA+PSAweDEwMDAwMDAwMCkge1xuICAgIG8xKytcbiAgfVxuICB2W2FdID0gbzBcbiAgdlthICsgMV0gPSBvMVxufVxuXG4vLyA2NC1iaXQgdW5zaWduZWQgYWRkaXRpb25cbi8vIFNldHMgdlthLGErMV0gKz0gYlxuLy8gYjAgaXMgdGhlIGxvdyAzMiBiaXRzIG9mIGIsIGIxIHJlcHJlc2VudHMgdGhlIGhpZ2ggMzIgYml0c1xuZnVuY3Rpb24gQURENjRBQyAodiwgYSwgYjAsIGIxKSB7XG4gIGxldCBvMCA9IHZbYV0gKyBiMFxuICBpZiAoYjAgPCAwKSB7XG4gICAgbzAgKz0gMHgxMDAwMDAwMDBcbiAgfVxuICBsZXQgbzEgPSB2W2EgKyAxXSArIGIxXG4gIGlmIChvMCA+PSAweDEwMDAwMDAwMCkge1xuICAgIG8xKytcbiAgfVxuICB2W2FdID0gbzBcbiAgdlthICsgMV0gPSBvMVxufVxuXG4vLyBMaXR0bGUtZW5kaWFuIGJ5dGUgYWNjZXNzXG5mdW5jdGlvbiBCMkJfR0VUMzIgKGFyciwgaSkge1xuICByZXR1cm4gYXJyW2ldIF4gKGFycltpICsgMV0gPDwgOCkgXiAoYXJyW2kgKyAyXSA8PCAxNikgXiAoYXJyW2kgKyAzXSA8PCAyNClcbn1cblxuLy8gRyBNaXhpbmcgZnVuY3Rpb25cbi8vIFRoZSBST1RScyBhcmUgaW5saW5lZCBmb3Igc3BlZWRcbmZ1bmN0aW9uIEIyQl9HIChhLCBiLCBjLCBkLCBpeCwgaXkpIHtcbiAgY29uc3QgeDAgPSBtW2l4XVxuICBjb25zdCB4MSA9IG1baXggKyAxXVxuICBjb25zdCB5MCA9IG1baXldXG4gIGNvbnN0IHkxID0gbVtpeSArIDFdXG5cbiAgQURENjRBQSh2LCBhLCBiKSAvLyB2W2EsYSsxXSArPSB2W2IsYisxXSAuLi4gaW4gSlMgd2UgbXVzdCBzdG9yZSBhIHVpbnQ2NCBhcyB0d28gdWludDMyc1xuICBBREQ2NEFDKHYsIGEsIHgwLCB4MSkgLy8gdlthLCBhKzFdICs9IHggLi4uIHgwIGlzIHRoZSBsb3cgMzIgYml0cyBvZiB4LCB4MSBpcyB0aGUgaGlnaCAzMiBiaXRzXG5cbiAgLy8gdltkLGQrMV0gPSAodltkLGQrMV0geG9yIHZbYSxhKzFdKSByb3RhdGVkIHRvIHRoZSByaWdodCBieSAzMiBiaXRzXG4gIGxldCB4b3IwID0gdltkXSBeIHZbYV1cbiAgbGV0IHhvcjEgPSB2W2QgKyAxXSBeIHZbYSArIDFdXG4gIHZbZF0gPSB4b3IxXG4gIHZbZCArIDFdID0geG9yMFxuXG4gIEFERDY0QUEodiwgYywgZClcblxuICAvLyB2W2IsYisxXSA9ICh2W2IsYisxXSB4b3IgdltjLGMrMV0pIHJvdGF0ZWQgcmlnaHQgYnkgMjQgYml0c1xuICB4b3IwID0gdltiXSBeIHZbY11cbiAgeG9yMSA9IHZbYiArIDFdIF4gdltjICsgMV1cbiAgdltiXSA9ICh4b3IwID4+PiAyNCkgXiAoeG9yMSA8PCA4KVxuICB2W2IgKyAxXSA9ICh4b3IxID4+PiAyNCkgXiAoeG9yMCA8PCA4KVxuXG4gIEFERDY0QUEodiwgYSwgYilcbiAgQURENjRBQyh2LCBhLCB5MCwgeTEpXG5cbiAgLy8gdltkLGQrMV0gPSAodltkLGQrMV0geG9yIHZbYSxhKzFdKSByb3RhdGVkIHJpZ2h0IGJ5IDE2IGJpdHNcbiAgeG9yMCA9IHZbZF0gXiB2W2FdXG4gIHhvcjEgPSB2W2QgKyAxXSBeIHZbYSArIDFdXG4gIHZbZF0gPSAoeG9yMCA+Pj4gMTYpIF4gKHhvcjEgPDwgMTYpXG4gIHZbZCArIDFdID0gKHhvcjEgPj4+IDE2KSBeICh4b3IwIDw8IDE2KVxuXG4gIEFERDY0QUEodiwgYywgZClcblxuICAvLyB2W2IsYisxXSA9ICh2W2IsYisxXSB4b3IgdltjLGMrMV0pIHJvdGF0ZWQgcmlnaHQgYnkgNjMgYml0c1xuICB4b3IwID0gdltiXSBeIHZbY11cbiAgeG9yMSA9IHZbYiArIDFdIF4gdltjICsgMV1cbiAgdltiXSA9ICh4b3IxID4+PiAzMSkgXiAoeG9yMCA8PCAxKVxuICB2W2IgKyAxXSA9ICh4b3IwID4+PiAzMSkgXiAoeG9yMSA8PCAxKVxufVxuXG4vLyBJbml0aWFsaXphdGlvbiBWZWN0b3JcbmNvbnN0IEJMQUtFMkJfSVYzMiA9IG5ldyBVaW50MzJBcnJheShbXG4gIDB4ZjNiY2M5MDgsIDB4NmEwOWU2NjcsIDB4ODRjYWE3M2IsIDB4YmI2N2FlODUsIDB4ZmU5NGY4MmIsIDB4M2M2ZWYzNzIsXG4gIDB4NWYxZDM2ZjEsIDB4YTU0ZmY1M2EsIDB4YWRlNjgyZDEsIDB4NTEwZTUyN2YsIDB4MmIzZTZjMWYsIDB4OWIwNTY4OGMsXG4gIDB4ZmI0MWJkNmIsIDB4MWY4M2Q5YWIsIDB4MTM3ZTIxNzksIDB4NWJlMGNkMTlcbl0pXG5cbmNvbnN0IFNJR01BOCA9IFtcbiAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTQsIDEwLCA0LCA4LCA5LCAxNSwgMTMsXG4gIDYsIDEsIDEyLCAwLCAyLCAxMSwgNywgNSwgMywgMTEsIDgsIDEyLCAwLCA1LCAyLCAxNSwgMTMsIDEwLCAxNCwgMywgNiwgNywgMSxcbiAgOSwgNCwgNywgOSwgMywgMSwgMTMsIDEyLCAxMSwgMTQsIDIsIDYsIDUsIDEwLCA0LCAwLCAxNSwgOCwgOSwgMCwgNSwgNywgMiwgNCxcbiAgMTAsIDE1LCAxNCwgMSwgMTEsIDEyLCA2LCA4LCAzLCAxMywgMiwgMTIsIDYsIDEwLCAwLCAxMSwgOCwgMywgNCwgMTMsIDcsIDUsXG4gIDE1LCAxNCwgMSwgOSwgMTIsIDUsIDEsIDE1LCAxNCwgMTMsIDQsIDEwLCAwLCA3LCA2LCAzLCA5LCAyLCA4LCAxMSwgMTMsIDExLCA3LFxuICAxNCwgMTIsIDEsIDMsIDksIDUsIDAsIDE1LCA0LCA4LCA2LCAyLCAxMCwgNiwgMTUsIDE0LCA5LCAxMSwgMywgMCwgOCwgMTIsIDIsXG4gIDEzLCA3LCAxLCA0LCAxMCwgNSwgMTAsIDIsIDgsIDQsIDcsIDYsIDEsIDUsIDE1LCAxMSwgOSwgMTQsIDMsIDEyLCAxMywgMCwgMCxcbiAgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTQsIDEwLCA0LCA4LCA5LCAxNSwgMTMsIDYsXG4gIDEsIDEyLCAwLCAyLCAxMSwgNywgNSwgM1xuXVxuXG4vLyBUaGVzZSBhcmUgb2Zmc2V0cyBpbnRvIGEgdWludDY0IGJ1ZmZlci5cbi8vIE11bHRpcGx5IHRoZW0gYWxsIGJ5IDIgdG8gbWFrZSB0aGVtIG9mZnNldHMgaW50byBhIHVpbnQzMiBidWZmZXIsXG4vLyBiZWNhdXNlIHRoaXMgaXMgSmF2YXNjcmlwdCBhbmQgd2UgZG9uJ3QgaGF2ZSB1aW50NjRzXG5jb25zdCBTSUdNQTgyID0gbmV3IFVpbnQ4QXJyYXkoXG4gIFNJR01BOC5tYXAoZnVuY3Rpb24gKHgpIHtcbiAgICByZXR1cm4geCAqIDJcbiAgfSlcbilcblxuLy8gQ29tcHJlc3Npb24gZnVuY3Rpb24uICdsYXN0JyBmbGFnIGluZGljYXRlcyBsYXN0IGJsb2NrLlxuLy8gTm90ZSB3ZSdyZSByZXByZXNlbnRpbmcgMTYgdWludDY0cyBhcyAzMiB1aW50MzJzXG5jb25zdCB2ID0gbmV3IFVpbnQzMkFycmF5KDMyKVxuY29uc3QgbSA9IG5ldyBVaW50MzJBcnJheSgzMilcbmZ1bmN0aW9uIGJsYWtlMmJDb21wcmVzcyAoY3R4LCBsYXN0KSB7XG4gIGxldCBpID0gMFxuXG4gIC8vIGluaXQgd29yayB2YXJpYWJsZXNcbiAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHtcbiAgICB2W2ldID0gY3R4LmhbaV1cbiAgICB2W2kgKyAxNl0gPSBCTEFLRTJCX0lWMzJbaV1cbiAgfVxuXG4gIC8vIGxvdyA2NCBiaXRzIG9mIG9mZnNldFxuICB2WzI0XSA9IHZbMjRdIF4gY3R4LnRcbiAgdlsyNV0gPSB2WzI1XSBeIChjdHgudCAvIDB4MTAwMDAwMDAwKVxuICAvLyBoaWdoIDY0IGJpdHMgbm90IHN1cHBvcnRlZCwgb2Zmc2V0IG1heSBub3QgYmUgaGlnaGVyIHRoYW4gMioqNTMtMVxuXG4gIC8vIGxhc3QgYmxvY2sgZmxhZyBzZXQgP1xuICBpZiAobGFzdCkge1xuICAgIHZbMjhdID0gfnZbMjhdXG4gICAgdlsyOV0gPSB+dlsyOV1cbiAgfVxuXG4gIC8vIGdldCBsaXR0bGUtZW5kaWFuIHdvcmRzXG4gIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKSB7XG4gICAgbVtpXSA9IEIyQl9HRVQzMihjdHguYiwgNCAqIGkpXG4gIH1cblxuICAvLyB0d2VsdmUgcm91bmRzIG9mIG1peGluZ1xuICAvLyB1bmNvbW1lbnQgdGhlIERlYnVnUHJpbnQgY2FsbHMgdG8gbG9nIHRoZSBjb21wdXRhdGlvblxuICAvLyBhbmQgbWF0Y2ggdGhlIFJGQyBzYW1wbGUgZG9jdW1lbnRhdGlvblxuICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgIEIyQl9HKDAsIDgsIDE2LCAyNCwgU0lHTUE4MltpICogMTYgKyAwXSwgU0lHTUE4MltpICogMTYgKyAxXSlcbiAgICBCMkJfRygyLCAxMCwgMTgsIDI2LCBTSUdNQTgyW2kgKiAxNiArIDJdLCBTSUdNQTgyW2kgKiAxNiArIDNdKVxuICAgIEIyQl9HKDQsIDEyLCAyMCwgMjgsIFNJR01BODJbaSAqIDE2ICsgNF0sIFNJR01BODJbaSAqIDE2ICsgNV0pXG4gICAgQjJCX0coNiwgMTQsIDIyLCAzMCwgU0lHTUE4MltpICogMTYgKyA2XSwgU0lHTUE4MltpICogMTYgKyA3XSlcbiAgICBCMkJfRygwLCAxMCwgMjAsIDMwLCBTSUdNQTgyW2kgKiAxNiArIDhdLCBTSUdNQTgyW2kgKiAxNiArIDldKVxuICAgIEIyQl9HKDIsIDEyLCAyMiwgMjQsIFNJR01BODJbaSAqIDE2ICsgMTBdLCBTSUdNQTgyW2kgKiAxNiArIDExXSlcbiAgICBCMkJfRyg0LCAxNCwgMTYsIDI2LCBTSUdNQTgyW2kgKiAxNiArIDEyXSwgU0lHTUE4MltpICogMTYgKyAxM10pXG4gICAgQjJCX0coNiwgOCwgMTgsIDI4LCBTSUdNQTgyW2kgKiAxNiArIDE0XSwgU0lHTUE4MltpICogMTYgKyAxNV0pXG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykge1xuICAgIGN0eC5oW2ldID0gY3R4LmhbaV0gXiB2W2ldIF4gdltpICsgMTZdXG4gIH1cbn1cblxuLy8gcmV1c2FibGUgcGFyYW1ldGVyQmxvY2tcbmNvbnN0IHBhcmFtZXRlckJsb2NrID0gbmV3IFVpbnQ4QXJyYXkoW1xuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAgMDogb3V0bGVuLCBrZXlsZW4sIGZhbm91dCwgZGVwdGhcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gIDQ6IGxlYWYgbGVuZ3RoLCBzZXF1ZW50aWFsIG1vZGVcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gIDg6IG5vZGUgb2Zmc2V0XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDEyOiBub2RlIG9mZnNldFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAxNjogbm9kZSBkZXB0aCwgaW5uZXIgbGVuZ3RoLCByZnVcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMjA6IHJmdVxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAyNDogcmZ1XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDI4OiByZnVcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMzI6IHNhbHRcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMzY6IHNhbHRcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gNDA6IHNhbHRcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gNDQ6IHNhbHRcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gNDg6IHBlcnNvbmFsXG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDUyOiBwZXJzb25hbFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyA1NjogcGVyc29uYWxcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCAvLyA2MDogcGVyc29uYWxcbl0pXG5cbi8vIENyZWF0ZXMgYSBCTEFLRTJiIGhhc2hpbmcgY29udGV4dFxuLy8gUmVxdWlyZXMgYW4gb3V0cHV0IGxlbmd0aCBiZXR3ZWVuIDEgYW5kIDY0IGJ5dGVzXG4vLyBUYWtlcyBhbiBvcHRpb25hbCBVaW50OEFycmF5IGtleVxuZnVuY3Rpb24gYmxha2UyYkluaXQgKG91dGxlbiwga2V5KSB7XG4gIGlmIChvdXRsZW4gPT09IDAgfHwgb3V0bGVuID4gNjQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgb3V0cHV0IGxlbmd0aCwgZXhwZWN0ZWQgMCA8IGxlbmd0aCA8PSA2NCcpXG4gIH1cbiAgaWYgKGtleS5sZW5ndGggPiA2NCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSWxsZWdhbCBrZXksIGV4cGVjdGVkIFVpbnQ4QXJyYXkgd2l0aCAwIDwgbGVuZ3RoIDw9IDY0JylcbiAgfVxuXG4gIC8vIHN0YXRlLCAncGFyYW0gYmxvY2snXG4gIGNvbnN0IGN0eCA9IHtcbiAgICBiOiBuZXcgVWludDhBcnJheSgxMjgpLFxuICAgIGg6IG5ldyBVaW50MzJBcnJheSgxNiksXG4gICAgdDogMCwgLy8gaW5wdXQgY291bnRcbiAgICBjOiAwLCAvLyBwb2ludGVyIHdpdGhpbiBidWZmZXJcbiAgICBvdXRsZW46IG91dGxlbiAvLyBvdXRwdXQgbGVuZ3RoIGluIGJ5dGVzXG4gIH1cblxuICAvLyBpbml0aWFsaXplIHBhcmFtZXRlckJsb2NrIGJlZm9yZSB1c2FnZVxuICBwYXJhbWV0ZXJCbG9jay5maWxsKDApXG4gIHBhcmFtZXRlckJsb2NrWzBdID0gb3V0bGVuXG4gIHBhcmFtZXRlckJsb2NrWzFdID0ga2V5Lmxlbmd0aFxuICBwYXJhbWV0ZXJCbG9ja1syXSA9IDEgLy8gZmFub3V0XG4gIHBhcmFtZXRlckJsb2NrWzNdID0gMSAvLyBkZXB0aFxuXG4gIC8vIGluaXRpYWxpemUgaGFzaCBzdGF0ZVxuICBmb3IgKGxldCBpID0gMDsgaSA8IDE2OyBpKyspIHtcbiAgICBjdHguaFtpXSA9IEJMQUtFMkJfSVYzMltpXSBeIEIyQl9HRVQzMihwYXJhbWV0ZXJCbG9jaywgaSAqIDQpXG4gIH1cblxuXG5cbiAgaWYoa2V5Lmxlbmd0aCA+IDApe1xuICAgIGJsYWtlMmJVcGRhdGUoY3R4LCBrZXkpXG4gICAgLy8gYXQgdGhlIGVuZFxuICAgIGN0eC5jID0gMTI4XG4gIH1cblxuICByZXR1cm4gY3R4XG59XG5cbi8vIFVwZGF0ZXMgYSBCTEFLRTJiIHN0cmVhbWluZyBoYXNoXG4vLyBSZXF1aXJlcyBoYXNoIGNvbnRleHQgYW5kIFVpbnQ4QXJyYXkgKGJ5dGUgYXJyYXkpXG5mdW5jdGlvbiBibGFrZTJiVXBkYXRlIChjdHgsIGlucHV0KSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoY3R4LmMgPT09IDEyOCkge1xuICAgICAgLy8gYnVmZmVyIGZ1bGwgP1xuICAgICAgY3R4LnQgKz0gY3R4LmMgLy8gYWRkIGNvdW50ZXJzXG4gICAgICBibGFrZTJiQ29tcHJlc3MoY3R4LCBmYWxzZSkgLy8gY29tcHJlc3MgKG5vdCBsYXN0KVxuICAgICAgY3R4LmMgPSAwIC8vIGNvdW50ZXIgdG8gemVyb1xuICAgIH1cbiAgICBjdHguYltjdHguYysrXSA9IGlucHV0W2ldXG4gIH1cbn1cblxuLy8gQ29tcGxldGVzIGEgQkxBS0UyYiBzdHJlYW1pbmcgaGFzaFxuLy8gUmV0dXJucyBhIFVpbnQ4QXJyYXkgY29udGFpbmluZyB0aGUgbWVzc2FnZSBkaWdlc3RcbmZ1bmN0aW9uIGJsYWtlMmJGaW5hbCAoY3R4KSB7XG4gIGN0eC50ICs9IGN0eC5jIC8vIG1hcmsgbGFzdCBibG9jayBvZmZzZXRcblxuICB3aGlsZSAoY3R4LmMgPCAxMjgpIHtcbiAgICAvLyBmaWxsIHVwIHdpdGggemVyb3NcbiAgICBjdHguYltjdHguYysrXSA9IDBcbiAgfVxuICBibGFrZTJiQ29tcHJlc3MoY3R4LCB0cnVlKSAvLyBmaW5hbCBibG9jayBmbGFnID0gMVxuXG4gIC8vIGxpdHRsZSBlbmRpYW4gY29udmVydCBhbmQgc3RvcmVcbiAgY29uc3Qgb3V0ID0gbmV3IFVpbnQ4QXJyYXkoY3R4Lm91dGxlbilcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdHgub3V0bGVuOyBpKyspIHtcbiAgICBvdXRbaV0gPSBjdHguaFtpID4+IDJdID4+ICg4ICogKGkgJiAzKSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG4gIHJldHVybiB7SW5pdDpibGFrZTJiSW5pdCwgVXBkYXRlOmJsYWtlMmJVcGRhdGUsIEZpbmFsOmJsYWtlMmJGaW5hbH1cbn0pKClcblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogYmxha2UyYlxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfYmxha2UyX2NyZWF0ZShoYXNobGVuLCBrZXkpe1xuICBrZXkgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhrZXkpO1xuICBpZihrZXkubGVuZ3RoID4gNjQpIHtcbiAgICBrZXkuc3ViYXJyYXkoMCw2NCk7XG4gIH1cbiAgcmV0dXJuIGJsYWtlMmIuSW5pdChoYXNobGVuLCBrZXkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsYWtlMl9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGJsYWtlMmJcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX2JsYWtlMl9maW5hbChjdHgsIGhhc2hsZW4pIHtcbiAgdmFyIHIgPSBibGFrZTJiLkZpbmFsKGN0eCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfdXBkYXRlXG4vL1JlcXVpcmVzOiBibGFrZTJiXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pe1xuICB2YXIgaW5wdXQgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhidWYpO1xuICBpbnB1dCA9IGlucHV0LnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKTtcbiAgYmxha2UyYi5VcGRhdGUoY3R4LCBpbnB1dCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxha2UyX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl91cGRhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX2ZpbmFsXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9ibGFrZTJfc3RyaW5nKGhhc2hsZW4sIGtleSwgYnVmLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9ibGFrZTJfY3JlYXRlIChoYXNobGVuLCBrZXkpO1xuICBjYW1sX2JsYWtlMl91cGRhdGUoY3R4LCBidWYsIG9mcywgbGVuKTtcbiAgcmV0dXJuIGNhbWxfYmxha2UyX2ZpbmFsKGN0eCwgaGFzaGxlbik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfY2hhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1SW5pdCwgY2FtbF9NRDVVcGRhdGUsIGNhbWxfTUQ1RmluYWxcbmZ1bmN0aW9uIGNhbWxfbWQ1X2NoYW4oY2hhbmlkLHRvcmVhZCl7XG4gIHZhciBjdHggPSBjYW1sX01ENUluaXQoKTtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDQwOTYpO1xuICBpZih0b3JlYWQgPCAwKXtcbiAgICB3aGlsZSh0cnVlKXtcbiAgICAgIHZhciByZWFkID0gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsYnVmZmVyLDAsYnVmZmVyLmxlbmd0aCk7XG4gICAgICBpZihyZWFkID09IDApIGJyZWFrO1xuICAgICAgY2FtbF9NRDVVcGRhdGUoY3R4LGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlKHRvcmVhZCA+IDApIHtcbiAgICAgIHZhciByZWFkID0gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsYnVmZmVyLDAsICh0b3JlYWQgPiBidWZmZXIubGVuZ3RoID8gYnVmZmVyLmxlbmd0aCA6IHRvcmVhZCkpO1xuICAgICAgaWYocmVhZCA9PSAwKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICAgIHRvcmVhZCAtPSByZWFkXG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShjYW1sX01ENUZpbmFsKGN0eCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX21kNV9ieXRlc1xuZnVuY3Rpb24gY2FtbF9tZDVfc3RyaW5nKHMsIG9mcywgbGVuKSB7XG4gIHJldHVybiBjYW1sX21kNV9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhzKSxvZnMsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVUcmFuc2Zvcm1cbnZhciBjYW1sX01ENVRyYW5zZm9ybSA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGFkZCAoeCwgeSkgeyByZXR1cm4gKHggKyB5KSB8IDA7IH1cbiAgZnVuY3Rpb24geHgocSxhLGIseCxzLHQpIHtcbiAgICBhID0gYWRkKGFkZChhLCBxKSwgYWRkKHgsIHQpKTtcbiAgICByZXR1cm4gYWRkKChhIDw8IHMpIHwgKGEgPj4+ICgzMiAtIHMpKSwgYik7XG4gIH1cbiAgZnVuY3Rpb24gZmYoYSxiLGMsZCx4LHMsdCkge1xuICAgIHJldHVybiB4eCgoYiAmIGMpIHwgKCh+YikgJiBkKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gZ2coYSxiLGMsZCx4LHMsdCkge1xuICAgIHJldHVybiB4eCgoYiAmIGQpIHwgKGMgJiAofmQpKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gaGgoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYiBeIGMgXiBkLCBhLCBiLCB4LCBzLCB0KTsgfVxuICBmdW5jdGlvbiBpaShhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChjIF4gKGIgfCAofmQpKSwgYSwgYiwgeCwgcywgdCk7IH1cblxuICByZXR1cm4gZnVuY3Rpb24gKHcsIGJ1ZmZlcikge1xuICAgIHZhciBhID0gd1swXSwgYiA9IHdbMV0sIGMgPSB3WzJdLCBkID0gd1szXTtcblxuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDBdLCA3LCAweEQ3NkFBNDc4KTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyAxXSwgMTIsIDB4RThDN0I3NTYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbIDJdLCAxNywgMHgyNDIwNzBEQik7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsgM10sIDIyLCAweEMxQkRDRUVFKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyA0XSwgNywgMHhGNTdDMEZBRik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNV0sIDEyLCAweDQ3ODdDNjJBKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWyA2XSwgMTcsIDB4QTgzMDQ2MTMpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbIDddLCAyMiwgMHhGRDQ2OTUwMSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOF0sIDcsIDB4Njk4MDk4RDgpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDldLCAxMiwgMHg4QjQ0RjdBRik7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMF0sIDE3LCAweEZGRkY1QkIxKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzExXSwgMjIsIDB4ODk1Q0Q3QkUpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbMTJdLCA3LCAweDZCOTAxMTIyKTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWzEzXSwgMTIsIDB4RkQ5ODcxOTMpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTRdLCAxNywgMHhBNjc5NDM4RSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNV0sIDIyLCAweDQ5QjQwODIxKTtcblxuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDFdLCA1LCAweEY2MUUyNTYyKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWyA2XSwgOSwgMHhDMDQwQjM0MCk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMV0sIDE0LCAweDI2NUU1QTUxKTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyAwXSwgMjAsIDB4RTlCNkM3QUEpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDVdLCA1LCAweEQ2MkYxMDVEKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzEwXSwgOSwgMHgwMjQ0MTQ1Myk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE0LCAweEQ4QTFFNjgxKTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyA0XSwgMjAsIDB4RTdEM0ZCQzgpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDldLCA1LCAweDIxRTFDREU2KTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzE0XSwgOSwgMHhDMzM3MDdENik7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsgM10sIDE0LCAweEY0RDUwRDg3KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyA4XSwgMjAsIDB4NDU1QTE0RUQpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbMTNdLCA1LCAweEE5RTNFOTA1KTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWyAyXSwgOSwgMHhGQ0VGQTNGOCk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsgN10sIDE0LCAweDY3NkYwMkQ5KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzEyXSwgMjAsIDB4OEQyQTRDOEEpO1xuXG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNV0sIDQsIDB4RkZGQTM5NDIpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDhdLCAxMSwgMHg4NzcxRjY4MSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMV0sIDE2LCAweDZEOUQ2MTIyKTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzE0XSwgMjMsIDB4RkRFNTM4MEMpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDFdLCA0LCAweEE0QkVFQTQ0KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyA0XSwgMTEsIDB4NEJERUNGQTkpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbIDddLCAxNiwgMHhGNkJCNEI2MCk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMF0sIDIzLCAweEJFQkZCQzcwKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWzEzXSwgNCwgMHgyODlCN0VDNik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMF0sIDExLCAweEVBQTEyN0ZBKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWyAzXSwgMTYsIDB4RDRFRjMwODUpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbIDZdLCAyMywgMHgwNDg4MUQwNSk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOV0sIDQsIDB4RDlENEQwMzkpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbMTJdLCAxMSwgMHhFNkRCOTlFNSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE2LCAweDFGQTI3Q0Y4KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWyAyXSwgMjMsIDB4QzRBQzU2NjUpO1xuXG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMF0sIDYsIDB4RjQyOTIyNDQpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbIDddLCAxMCwgMHg0MzJBRkY5Nyk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE1LCAweEFCOTQyM0E3KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyA1XSwgMjEsIDB4RkM5M0EwMzkpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbMTJdLCA2LCAweDY1NUI1OUMzKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWyAzXSwgMTAsIDB4OEYwQ0NDOTIpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNSwgMHhGRkVGRjQ3RCk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMV0sIDIxLCAweDg1ODQ1REQxKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyA4XSwgNiwgMHg2RkE4N0U0Rik7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNV0sIDEwLCAweEZFMkNFNkUwKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWyA2XSwgMTUsIDB4QTMwMTQzMTQpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbMTNdLCAyMSwgMHg0RTA4MTFBMSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNF0sIDYsIDB4Rjc1MzdFODIpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTFdLCAxMCwgMHhCRDNBRjIzNSk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsgMl0sIDE1LCAweDJBRDdEMkJCKTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyA5XSwgMjEsIDB4RUI4NkQzOTEpO1xuXG4gICAgd1swXSA9IGFkZChhLCB3WzBdKTtcbiAgICB3WzFdID0gYWRkKGIsIHdbMV0pO1xuICAgIHdbMl0gPSBhZGQoYywgd1syXSk7XG4gICAgd1szXSA9IGFkZChkLCB3WzNdKTtcbiAgfX0pKClcblxuLy9Qcm92aWRlczogY2FtbF9NRDVJbml0XG5mdW5jdGlvbiBjYW1sX01ENUluaXQoKSB7XG4gIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNjQpO1xuICB2YXIgYjMyID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlcik7XG4gIHZhciBiOCA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG4gIHJldHVybiB7bGVuOjAsXG4gICAgICAgICAgdzpuZXcgVWludDMyQXJyYXkoWzB4Njc0NTIzMDEsIDB4RUZDREFCODksIDB4OThCQURDRkUsIDB4MTAzMjU0NzZdKSxcbiAgICAgICAgICBiMzI6YjMyLFxuICAgICAgICAgIGI4OmI4fVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVVwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9NRDVUcmFuc2Zvcm1cbmZ1bmN0aW9uIGNhbWxfTUQ1VXBkYXRlKGN0eCwgaW5wdXQsIGlucHV0X2xlbil7XG4gIHZhciBpbl9idWYgPSBjdHgubGVuICYgMHgzZjtcbiAgdmFyIGlucHV0X3BvcyA9IDA7XG4gIGN0eC5sZW4gKz0gaW5wdXRfbGVuO1xuICBpZihpbl9idWYpe1xuICAgIHZhciBtaXNzaW5nID0gNjQgLSBpbl9idWY7XG4gICAgaWYoaW5wdXRfbGVuIDwgbWlzc2luZykge1xuICAgICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLGlucHV0X2xlbiksaW5fYnVmKTtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KDAsbWlzc2luZyksaW5fYnVmKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IG1pc3Npbmc7XG4gICAgaW5wdXRfcG9zICs9IG1pc3Npbmc7XG4gIH1cbiAgd2hpbGUoaW5wdXRfbGVuID49IDY0KXtcbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KGlucHV0X3BvcyxpbnB1dF9wb3MgKyA2NCksIDApO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gNjQ7XG4gICAgaW5wdXRfcG9zICs9IDY0O1xuICB9XG4gIGlmKGlucHV0X2xlbilcbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KGlucHV0X3BvcyxpbnB1dF9wb3MgKyBpbnB1dF9sZW4pLCAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVGaW5hbFxuLy9SZXF1aXJlczogY2FtbF9NRDVUcmFuc2Zvcm1cbmZ1bmN0aW9uIGNhbWxfTUQ1RmluYWwoY3R4KXtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICBjdHguYjhbaW5fYnVmXSA9IDB4ODA7XG4gIGluX2J1ZiArKztcbiAgaWYoaW5fYnVmID4gNTYpIHtcbiAgICBmb3IodmFyIGogPSBpbl9idWY7IGogPCA2NDsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgNTY7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IodmFyIGogPSBpbl9idWY7IGogPCA1NjsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9XG4gIGN0eC5iMzJbMTRdID0gY3R4LmxlbiA8PCAzO1xuICBjdHguYjMyWzE1XSA9IChjdHgubGVuID4+IDI5KSAmIDB4MUZGRkZGRkY7XG4gIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgdmFyIHQgPSBuZXcgVWludDhBcnJheSgxNik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKVxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgNDsgaisrKVxuICAgICAgdFtpICogNCArIGpdID0gKGN0eC53W2ldID4+ICg4ICogaikpICYgMHhGRjtcbiAgcmV0dXJuIHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9ieXRlcyhzLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzKTtcbiAgY2FtbF9NRDVVcGRhdGUoY3R4LGEuc3ViYXJyYXkob2ZzLCBvZnMgKyBsZW4pLCBsZW4pO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoY2FtbF9NRDVGaW5hbChjdHgpKTtcbn1cbiIsIi8qXG5UbyBkZWFsIHdpdGggZWZmZWN0cywgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IGlzIGludHVpdGl2ZWx5IGNvbXBvc2VkIG9mXG5hIHN0YWNrIG9mIGZpYmVycy4gRWFjaCBmaWJlciBoYXMgYSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb25cbihvbmUtYXJndW1lbnQgSmF2YVNjcmlwdCBmdW5jdGlvbiksIGEgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZFxuYSB0cmlwbGUgb2YgaGFuZGxlcnMsIHdoaWNoIGFyZSBpbnZva2VkIHdoZW4gdGhlIGZpYmVyIHRlcm1pbmF0ZXNcbihlaXRoZXIgd2l0aCBhIHZhbHVlIG9yIGFuIGV4Y2VwdGlvbikgb3Igd2hlbiBhbiBlZmZlY3QgaXMgcGVyZm9ybWVkLlxuVGhlIGxvdy1sZXZlbCBjb250aW51YXRpb24gb2YgdGhlIHRvcG1vc3QgZmliZXIgKHdoaWNoIGlzIGN1cnJlbnRseVxuZXhlY3V0aW5nKSBpcyBwYXNzZWQgZnJvbSBmdW5jdGlvbiB0byBmdW5jdGlvbiBhcyBhbiBhZGRpdGlvbmFsXG5hcmd1bWVudC4gSXRzIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBpcyBzdG9yZWQgaW5cbltjYW1sX2V4bl9zdGFja10uIEV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgcHVzaGVkIGludG8gdGhpcyBzdGFjayB3aGVuXG5lbnRlcmluZyBhIFt0cnkgLi4uIHdpdGggLi4uXSBhbmQgcG9wcGVkIG9uIGV4aXQuIFRoZW4sIGhhbmRsZXJzIGFuZFxudGhlIHJlbWFpbmluZyBmaWJlcnMgYXJlIHN0b3JlZCBpbiBbY2FtbF9maWJlcl9zdGFja10uIFRvIGluc3RhbGwgYW5cbmVmZmVjdCBoYW5kbGVyLCB3ZSBwdXNoIGEgbmV3IGZpYmVyIGludG8gdGhlIGV4ZWN1dGlvbiBjb250ZXh0LlxuXG5XZSBoYXZlIGJhc2ljYWxseSB0aGUgZm9sbG93aW5nIHR5cGUgZm9yIHJlaWZpZWQgY29udGludWF0aW9ucyAodHlwZVxuW2NvbnRpbnVhdGlvbl0gaW4gbW9kdWxlIFtFZmZlY3RdIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KTpcblxuICB0eXBlICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiA9ICgnYSwgJ2IpIHN0YWNrIHJlZlxuXG4gIGFuZCAoXywgXykgc3RhY2sgPVxuICAgICAgQ29ucyA6ICgnYiAtPiB1bml0KSAqICAgICAgICAgICAgICgqIGxvdy1sZXZlbCBjb250aW51YXRpb24gKilcbiAgICAgICAgICAgICAoZXhuIC0+IHVuaXQpIGxpc3QgKiAgICAgICAoKiBleGNlcHRpb24gaGFuZGxlcnMgKilcbiAgICAgICAgICAgICAoJ2IsICdjKSBoYW5kbGVyICpcbiAgICAgICAgICAgICAoJ2EsICdiKSBzdGFja1xuICAgICAgICAgICAgIC0+ICgnYSwgJ2MpIHN0YWNrXG4gICAgfCBFbXB0eSA6ICgnYSwgJ2EpIHN0YWNrXG5cbiAgYW5kICgnYSwnYikgaGFuZGxlciA9ICAgKCogQXMgaW4gbW9kdWxlIEVmZmVjdCBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIEVmZmVjdC50IC0+ICgoJ2MsJ2IpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuQ29udGludWF0aW9ucyBhcmUgb25lLXNob3QuIEEgY29udGludWF0aW9uIFtyZWYgRW1wdHldIGhhcyBhbHJlYWR5XG5iZWVuIHJlc3VtZWQuXG5cbkEgY29udGludWF0aW9uIGlzIGJhc2ljYWxseSBjb21wb3NlZCBvZiBhIGxpc3Qgb2YgZmliZXJzLCB3aGljaCBlYWNoXG5oYXMgaXRzIGxvdy1sZXZlbCBjb250aW51YXRpb24sIGl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kIGFcbnRyaXBsZSBvZiBoYW5kbGVycyB0byBkZWFsIHdpdGggd2hlbiB0aGUgZmliZXIgdGVybWluYXRlcyBvciBhblxuZWZmZWN0IGlzIHBlcmZvcm1lZC4gV2hlbiByZXN1bWluZyBhIGNvbnRpbnVhdGlvbiwgdGhlIGlubmVybW9zdCBmaWJlclxuaXMgcmVzdW1lZCBmaXJzdC5cblxuVGhlIGhhbmRsZXJzIGFyZSBDUFMtdHJhbnNmb3JtZWQgZnVuY3Rpb25zOiB0aGV5IGFjdHVhbGx5IHRha2UgYW5cbmFkZGl0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGlzIHRoZSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb24uXG4qL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy8gVGhpcyBpcyBhbiBPQ2FtbCBsaXN0IG9mIGV4Y2VwdGlvbiBoYW5kbGVyc1xudmFyIGNhbWxfZXhuX3N0YWNrID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wdXNoX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3B1c2hfdHJhcChoYW5kbGVyKSB7XG4gIGNhbWxfZXhuX3N0YWNrPVswLGhhbmRsZXIsY2FtbF9leG5fc3RhY2tdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BvcF90cmFwXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wb3BfdHJhcCgpIHtcbiAgaWYgKCFjYW1sX2V4bl9zdGFjaykgcmV0dXJuIGZ1bmN0aW9uKHgpe3Rocm93IHg7fVxuICB2YXIgaCA9IGNhbWxfZXhuX3N0YWNrWzFdO1xuICBjYW1sX2V4bl9zdGFjaz1jYW1sX2V4bl9zdGFja1syXTtcbiAgcmV0dXJuIGhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy8gVGhpcyBoYXMgdGhlIHNoYXBlIHtoLCByOntrLCB4LCBlfX0gd2hlcmUgaCBpcyBhIHRyaXBsZSBvZiBoYW5kbGVyc1xuLy8gKHNlZSBlZmZlY3QuanMpIGFuZCBrLCB4IGFuZCBlIGFyZSB0aGUgc2F2ZWQgY29udGludWF0aW9uLFxuLy8gZXhjZXB0aW9uIHN0YWNrIGFuZCBmaWJlciBzdGFjayBvZiB0aGUgcGFyZW50IGZpYmVyLlxudmFyIGNhbWxfZmliZXJfc3RhY2s7XG5cbi8vUHJvdmlkZXM6Y2FtbF9yZXN1bWVfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3Jlc3VtZV9zdGFjayhzdGFjaywgaykge1xuICBpZiAoIXN0YWNrKSBjYW1sX3JhaXNlX2NvbnN0YW50XG4gICAgICAgICAgICAgICAgIChjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LkNvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcIikpO1xuICAvLyBVcGRhdGUgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHdpdGggdGhlIHN0YWNrIG9mIGZpYmVycyBpbiBbc3RhY2tdIGluXG4gIC8vIG9yZGVyIHRvIHJlc3VtZSB0aGUgY29udGludWF0aW9uXG4gIGRvIHtcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID1cbiAgICAgIHtoOnN0YWNrWzNdLCByOntrOmssIHg6Y2FtbF9leG5fc3RhY2ssIGU6Y2FtbF9maWJlcl9zdGFja319O1xuICAgIGsgPSBzdGFja1sxXTtcbiAgICBjYW1sX2V4bl9zdGFjayA9IHN0YWNrWzJdO1xuICAgIHN0YWNrID0gc3RhY2tbNF07XG4gIH0gd2hpbGUgKHN0YWNrKVxuICByZXR1cm4gaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfZmliZXJcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF9maWJlcigpIHtcbiAgLy8gTW92ZSB0byB0aGUgcGFyZW50IGZpYmVyLCByZXR1cm5pbmcgdGhlIHBhcmVudCdzIGxvdy1sZXZlbCBjb250aW51YXRpb25cbiAgdmFyIHJlbSA9IGNhbWxfZmliZXJfc3RhY2sucjtcbiAgY2FtbF9leG5fc3RhY2sgPSByZW0ueDtcbiAgY2FtbF9maWJlcl9zdGFjayA9IHJlbS5lO1xuICByZXR1cm4gcmVtLms7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGVyZm9ybV9lZmZlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoLCBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuLCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wZXJmb3JtX2VmZmVjdChlZmYsIGNvbnQsIGswKSB7XG4gIC8vIEFsbG9jYXRlIGEgY29udGludWF0aW9uIGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBvbmVcbiAgaWYgKCFjb250KSBjb250ID0gWzI0NSAvKmNvbnRpbnVhdGlvbiovLCAwXTtcbiAgLy8gR2V0IGN1cnJlbnQgZWZmZWN0IGhhbmRsZXJcbiAgdmFyIGhhbmRsZXIgPSBjYW1sX2ZpYmVyX3N0YWNrLmhbM107XG4gIC8vIENvbnMgdGhlIGN1cnJlbnQgZmliZXIgb250byB0aGUgY29udGludWF0aW9uOlxuICAvLyAgIGNvbnQgOj0gQ29ucyAoaywgZXhuX3N0YWNrLCBoYW5kbGVycywgIWNvbnQpXG4gIGNvbnRbMV0gPSBbMCxrMCxjYW1sX2V4bl9zdGFjayxjYW1sX2ZpYmVyX3N0YWNrLmgsY29udFsxXV07XG4gIC8vIE1vdmUgdG8gcGFyZW50IGZpYmVyIGFuZCBleGVjdXRlIHRoZSBlZmZlY3QgaGFuZGxlciB0aGVyZVxuICAvLyBUaGUgaGFuZGxlciBpcyBkZWZpbmVkIGluIFN0ZGxpYi5FZmZlY3QsIHNvIHdlIGtub3cgdGhhdCB0aGUgYXJpdHkgbWF0Y2hlc1xuICB2YXIgazEgPSBjYW1sX3BvcF9maWJlcigpO1xuICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpP2hhbmRsZXIoZWZmLGNvbnQsazEsazEpXG4gICAgICAgICA6Y2FtbF90cmFtcG9saW5lX3JldHVybihoYW5kbGVyLFtlZmYsY29udCxrMSxrMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX3BvcF9maWJlciwgY2FtbF9maWJlcl9zdGFjaywgY2FtbF9jYWxsX2dlbiwgY2FtbF9zdGFja19jaGVja19kZXB0aCwgY2FtbF90cmFtcG9saW5lX3JldHVyblxuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFjayhodiwgaHgsIGhmKSB7XG4gIGZ1bmN0aW9uIGNhbGwoaSwgeCkge1xuICAgIHZhciBmPWNhbWxfZmliZXJfc3RhY2suaFtpXTtcbiAgICB2YXIgYXJncyA9IFt4LCBjYW1sX3BvcF9maWJlcigpXTtcbiAgICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpP2NhbWxfY2FsbF9nZW4oZixhcmdzKVxuICAgICAgICAgICA6Y2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpO1xuICB9XG4gIGZ1bmN0aW9uIGh2YWwoeCkge1xuICAgIC8vIENhbGwgW2h2XSBpbiB0aGUgcGFyZW50IGZpYmVyXG4gICAgcmV0dXJuIGNhbGwoMSwgeCk7XG4gIH1cbiAgZnVuY3Rpb24gaGV4bihlKSB7XG4gICAgLy8gQ2FsbCBbaHhdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgICByZXR1cm4gY2FsbCgyLCBlKTtcbiAgfVxuICByZXR1cm4gWzAsIGh2YWwsIFswLCBoZXhuLCAwXSwgWzAsIGh2LCBoeCwgaGZdLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG5mdW5jdGlvbiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMoY29udCkge1xuICB2YXIgc3RhY2s9Y29udFsxXTtcbiAgY29udFsxXT0wO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGNcbi8vUmVxdWlyZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuZnVuY3Rpb24gY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Yyhjb250LCBodmFsLCBoZXhuLCBoZWZmKSB7XG4gIHZhciBzdGFjayA9IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KTtcbiAgc3RhY2tbM10gPSBbMCwgaHZhbCwgaGV4biwgaGVmZl07XG4gIHJldHVybiBzdGFjaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1xuZnVuY3Rpb24gY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fbmV3XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9uZXcodW5pdCl7XG4gICAgcmV0dXJuIHtjb25kaXRpb246MX07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3dhaXRcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3dhaXQodCxtdXRleHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3RcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdCh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9zaWduYWwodCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIUlmOiBlZmZlY3RzXG5mdW5jdGlvbiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkKCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJFZmZlY3QgaGFuZGxlcnMgYXJlIG5vdCBzdXBwb3J0ZWRcIik7XG59XG4iLCIvL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNcbnZhciBjYW1sX2RvbWFpbl9kbHMgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX3NldChhKSB7XG4gIGNhbWxfZG9tYWluX2RscyA9IGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19jb21wYXJlX2FuZF9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19jb21wYXJlX2FuZF9zZXQob2xkLG4pIHtcbiAgaWYoY2FtbF9kb21haW5fZGxzICE9PSBvbGQpIHJldHVybiAwXG4gIGNhbWxfZG9tYWluX2RscyA9IG47XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9kbHNcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19nZXQodW5pdCkge1xuICByZXR1cm4gY2FtbF9kb21haW5fZGxzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2xvYWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2xvYWQocmVmKXtcbiAgcmV0dXJuIHJlZlsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfY2FzXG5mdW5jdGlvbiBjYW1sX2F0b21pY19jYXMocmVmLG8sbikge1xuICBpZihyZWZbMV0gPT09IG8pe1xuICAgIHJlZlsxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2ZldGNoX2FkZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZmV0Y2hfYWRkKHJlZiwgaSkge1xuICB2YXIgb2xkID0gcmVmWzFdO1xuICByZWZbMV0gKz0gaTtcbiAgcmV0dXJuIG9sZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZXhjaGFuZ2VcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2V4Y2hhbmdlKHJlZiwgdikge1xuICB2YXIgciA9IHJlZlsxXTtcbiAgcmVmWzFdID0gdjtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZChhKSB7XG4gIHJldHVybiBbMCwgYV1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXG4vL1ZlcnNpb246IDwgNS4yXG52YXIgY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXyA9IFswXVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuKHVuaXQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl9cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9zZXRfbmFtZVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fc2V0X25hbWUoX25hbWUpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XG5mdW5jdGlvbiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCh1bml0KSB7IHJldHVybiAxIH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9pZFxudmFyIGNhbWxfZG9tYWluX2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZix0ZXJtX3N5bmMpe1xuICAgIHZhciBpZCA9IGNhbWxfZG9tYWluX2xhdGVzdF9pZHgrKztcbiAgICB2YXIgb2xkID0gY2FtbF9kb21haW5faWQ7XG4gICAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLFswXSk7XG4gICAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gICAgY2FtbF9tbF9tdXRleF91bmxvY2sodGVybV9zeW5jWzJdKTtcbiAgICAvL1RPRE86IGZpeCBleG4gY2FzZVxuICAgIHRlcm1fc3luY1sxXSA9IFswLCBbMCwgcmVzXV07XG4gICAgcmV0dXJuIGlkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9zcGF3blxuLy9SZXF1aXJlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG4vL1ZlcnNpb246IDwgNS4yXG52YXIgY2FtbF9kb21haW5fbGF0ZXN0X2lkeCA9IDFcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX3NwYXduKGYsbXV0ZXgpe1xuICAgIHZhciBpZCA9IGNhbWxfZG9tYWluX2xhdGVzdF9pZHgrKztcbiAgICB2YXIgb2xkID0gY2FtbF9kb21haW5faWQ7XG4gICAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLFswXSk7XG4gICAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gICAgY2FtbF9tbF9tdXRleF91bmxvY2sobXV0ZXgpO1xuICAgIHJldHVybiBpZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2lkKHVuaXQpe1xuICAgIHJldHVybiBjYW1sX2RvbWFpbl9pZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXhcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2NwdV9yZWxheCh1bml0KXtcbiAgICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSW9cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmRzXG52YXIgY2FtbF9zeXNfZmRzID0gbmV3IEFycmF5KDMpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jbG9zZVxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG5mdW5jdGlvbiBjYW1sX3N5c19jbG9zZShmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUpIGZpbGUuY2xvc2UoKTtcbiAgZGVsZXRlIGNhbWxfc3lzX2Zkc1tmZF07XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBNbEZha2VGZF9vdXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUsaWR4KSB7XG4gIGlmKGlkeCA9PSB1bmRlZmluZWQpe1xuICAgIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gIH1cbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSBmaWxlO1xuICByZXR1cm4gaWR4IHwgMDtcbn1cbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW4gKG5hbWUsIGZsYWdzLCBfcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUoZmxhZ3Mpe1xuICAgIHN3aXRjaChmbGFnc1sxXSl7XG4gICAgY2FzZSAwOiBmLnJkb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAxOiBmLndyb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAyOiBmLmFwcGVuZCA9IDE7YnJlYWs7XG4gICAgY2FzZSAzOiBmLmNyZWF0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA0OiBmLnRydW5jYXRlID0gMTticmVhaztcbiAgICBjYXNlIDU6IGYuZXhjbCA9IDE7IGJyZWFrO1xuICAgIGNhc2UgNjogZi5iaW5hcnkgPSAxO2JyZWFrO1xuICAgIGNhc2UgNzogZi50ZXh0ID0gMTticmVhaztcbiAgICBjYXNlIDg6IGYubm9uYmxvY2sgPSAxO2JyZWFrO1xuICAgIH1cbiAgICBmbGFncz1mbGFnc1syXTtcbiAgfVxuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3QsZik7XG4gIHJldHVybiBjYW1sX3N5c19vcGVuX2ludGVybmFsIChmaWxlLCB1bmRlZmluZWQpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZmlsZShmZCwgZmxhZ3MpIHtcbiAgICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgICByZXR1cm4gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICByZXR1cm4gbmV3IE1sRmFrZUZkX291dChmZCwgZmxhZ3MpXG4gIH1cbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDAse3Jkb25seToxLGFsdG5hbWU6XCIvZGV2L3N0ZGluXCIsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAwKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDEse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAxKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDIse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAyKTtcbn0pKClcblxuXG4vLyBvY2FtbCBDaGFubmVsc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZShjaGFuaWQsIG5hbWUpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGNoYW4ubmFtZSA9IG5hbWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxzXG52YXIgY2FtbF9tbF9jaGFubmVscyA9IG5ldyBBcnJheSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfcmVkaXJlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9yZWRpcmVjdCAoY2FwdHVyZWQsIGludG8pe1xuICB2YXIgdG9fcmVzdG9yZSA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2FwdHVyZWQpO1xuICB2YXIgbmV3XyA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoaW50byk7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2FwdHVyZWRdID0gbmV3XzsgLy8gWFhYXG4gIHJldHVybiB0b19yZXN0b3JlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfcmVzdG9yZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmUgKGNhcHR1cmVkLCB0b19yZXN0b3JlKXtcbiAgY2FtbF9tbF9jaGFubmVsc1tjYXB0dXJlZF0gPSB0b19yZXN0b3JlOyAvLyBYWFhcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9nZXQoaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbHNbaWRdOyAvLyBYWFhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdCAoKSB7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBjID0gMDsgYyA8IGNhbWxfbWxfY2hhbm5lbHMubGVuZ3RoOyBjKyspe1xuICAgIGlmKGNhbWxfbWxfY2hhbm5lbHNbY10gJiYgY2FtbF9tbF9jaGFubmVsc1tjXS5vcGVuZWQgJiYgY2FtbF9tbF9jaGFubmVsc1tjXS5vdXQpXG4gICAgICBsPVswLGNhbWxfbWxfY2hhbm5lbHNbY10uZmQsbF07XG4gIH1cbiAgcmV0dXJuIGw7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQgKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy5yZG9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgcmVhZG9ubHlcIik7XG4gIHZhciBidWZmZXJlZCA9IChmaWxlLmZsYWdzLmJ1ZmZlcmVkICE9PSB1bmRlZmluZWQpID8gZmlsZS5mbGFncy5idWZmZXJlZCA6IDE7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6ZmlsZSxcbiAgICBvZmZzZXQ6ZmlsZS5mbGFncy5hcHBlbmQ/ZmlsZS5sZW5ndGgoKTowLFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDp0cnVlLFxuICAgIGJ1ZmZlcl9jdXJyOjAsXG4gICAgYnVmZmVyOm5ldyBVaW50OEFycmF5KDY1NTM2KSxcbiAgICBidWZmZXJlZDpidWZmZXJlZFxuICB9O1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5uZWwuZmRdPWNoYW5uZWw7XG4gIHJldHVybiBjaGFubmVsLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogY2FtbF9zeXNfb3BlblxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4gKGZkKSAge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUuZmxhZ3Mud3Jvbmx5KSBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiKyBmZCArIFwiIGlzIHdyaXRlb25seVwiKTtcbiAgdmFyIHJlZmlsbCA9IG51bGw7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6ZmlsZSxcbiAgICBvZmZzZXQ6ZmlsZS5mbGFncy5hcHBlbmQ/ZmlsZS5sZW5ndGgoKTowLFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDogZmFsc2UsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXJfbWF4OjAsXG4gICAgYnVmZmVyOm5ldyBVaW50OEFycmF5KDY1NTM2KSxcbiAgICByZWZpbGw6cmVmaWxsXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5fd2l0aF9mbGFnc1xuLy9SZXF1aXJlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyhmZCwgZmxhZ3Mpe1xuICByZXR1cm4gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vQWxpYXM6IHdpbl9maWxlZGVzY3Jfb2ZfY2hhbm5lbFxuZnVuY3Rpb24gY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUoY2hhbmlkLG1vZGUpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgY2hhbi5maWxlLmZsYWdzLnRleHQgPSAhbW9kZVxuICBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5ID0gbW9kZVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfbWxfaXNfYmluYXJ5X21vZGUoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2hhbi5maWxlLmZsYWdzLmJpbmFyeVxufVxuXG4vL0lucHV0IGZyb20gaW5fY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Nsb3NlXG5mdW5jdGlvbiBjYW1sX21sX2Nsb3NlX2NoYW5uZWwgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYoY2hhbi5vcGVuZWQpIHtcbiAgICBjaGFuLm9wZW5lZCA9IGZhbHNlO1xuICAgIGNhbWxfc3lzX2Nsb3NlKGNoYW4uZmQpO1xuICAgIGNoYW4uZmQgPSAtMTtcbiAgICBjaGFuLmJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDApO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2hhbi5maWxlLmxlbmd0aCAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsZikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgY2hhbi5vdXRwdXQgPSAoZnVuY3Rpb24gKHMpIHtmKHMpfSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwoY2hhbmlkLGYpIHtcbiAgY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpLnJlZmlsbCA9IGY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWZpbGwgKGNoYW4pIHtcbiAgaWYoY2hhbi5yZWZpbGwgIT0gbnVsbCl7XG4gICAgdmFyIHN0ciA9IGNoYW4ucmVmaWxsKCk7XG4gICAgdmFyIHN0cl9hID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyKTtcbiAgICBpZiAoc3RyX2EubGVuZ3RoID09IDApIHtcbiAgICAgIGNoYW4ucmVmaWxsID0gbnVsbFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyLmxlbmd0aCA8IGNoYW4uYnVmZmVyX21heCArIHN0cl9hLmxlbmd0aCl7XG4gICAgICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKTtcbiAgICAgICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgICAgICBjaGFuLmJ1ZmZlciA9IGI7XG4gICAgICB9XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoc3RyX2EsY2hhbi5idWZmZXJfbWF4KTtcbiAgICAgIGNoYW4ub2Zmc2V0ICs9IHN0cl9hLmxlbmd0aDtcbiAgICAgIGNoYW4uYnVmZmVyX21heCArPSBzdHJfYS5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBucmVhZCA9IGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgY2hhbi5idWZmZXJfbWF4LCBjaGFuLmJ1ZmZlci5sZW5ndGggLSBjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgIGNoYW4ub2Zmc2V0ICs9IG5yZWFkO1xuICAgIGNoYW4uYnVmZmVyX21heCArPSBucmVhZDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9iaWdhcnJheSAoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2Jsb2NrIChjaGFuaWQsIGJhLCBpLCBsKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICB2YXIgbiA9IGw7XG4gIHZhciBhdmFpbCA9IGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnI7XG4gIGlmKGwgPD0gYXZhaWwpIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbDtcbiAgfVxuICBlbHNlIGlmKGF2YWlsID4gMCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBhdmFpbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYXZhaWw7XG4gICAgbiA9IGF2YWlsO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgICBpZihuID4gYXZhaWwpIG4gPSBhdmFpbDtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbiksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbjtcbiAgfVxuICByZXR1cm4gbiB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcywgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWUgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgdmFyIGhlYWRlciA9IG5ldyBVaW50OEFycmF5KGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGZ1bmN0aW9uIGJsb2NrKGJ1ZmZlciwgb2Zmc2V0LCBuKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHdoaWxlKHIgPCBuKXtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgICAgICBicmVhaztcbiAgICAgIGJ1ZmZlcltvZmZzZXQrcl0gPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIrKztcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cbiAgdmFyIHIgPSBibG9jayhoZWFkZXIsIDAsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGlmKHIgPT0gMClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIGVsc2UgaWYgKHIgPCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0XCIpO1xuICB2YXIgbGVuID0gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAoY2FtbF9ieXRlc19vZl9hcnJheShoZWFkZXIpLCAwKTtcbiAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbiArIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGJ1Zi5zZXQoaGVhZGVyLDApO1xuICB2YXIgciA9IGJsb2NrKGJ1ZiwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplLCBsZW4pXG4gIGlmKHIgPCBsZW4pXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0IFwiICsgciArIFwiICBcIiArIGxlbik7XG4gIHZhciBvZmZzZXQgPSBbMF07XG4gIHZhciByZXMgPSBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBvZmZzZXQpO1xuICBjaGFuLm9mZnNldCA9IGNoYW4ub2Zmc2V0ICsgb2Zmc2V0WzBdO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcFxuLy9SZXF1aXJlczogY2FtbF9pbnB1dF92YWx1ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAoYykge1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZShjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICB9XG4gIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciByZXMgPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgY2hhbi5idWZmZXJfY3VycisrO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9jaGFyLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2ludCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDQ7IGkrKyl7XG4gICAgcmVzID0gKHJlcyA8PCA4KSArIGNhbWxfbWxfaW5wdXRfY2hhcihjaGFuaWQpIHwgMDtcbiAgfVxuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9zZWVrX2luKGNoYW5pZCwgcG9zKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBpZiAoY2hhbi5yZWZpbGwgIT0gbnVsbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJJbGxlZ2FsIHNlZWtcIik7XG4gIGlmKHBvcyA+PSBjaGFuLm9mZnNldCAtIGNoYW4uYnVmZmVyX21heFxuICAgICAmJiBwb3MgPD0gY2hhbi5vZmZzZXRcbiAgICAgJiYgY2hhbi5maWxlLmZsYWdzLmJpbmFyeSkge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSBjaGFuLmJ1ZmZlcl9tYXggLSAoY2hhbi5vZmZzZXQgLSBwb3MpO1xuICB9IGVsc2Uge1xuICAgIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pblxuLy9SZXF1aXJlczogY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW4oY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW5fNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgLSAoY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycikgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9wb3NfaW4oY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2FtbF9wb3NfaW4oY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciBwID0gY2hhbi5idWZmZXJfY3VycjtcbiAgZG8ge1xuICAgIGlmKHAgPj0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID4gMCkge1xuICAgICAgICBjaGFuLmJ1ZmZlci5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciksMCk7XG4gICAgICAgIHAgLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4IC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgICAgfVxuICAgICAgaWYoY2hhbi5idWZmZXJfbWF4ID49IGNoYW4uYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICAgIHZhciBwcmV2X21heCA9IGNoYW4uYnVmZmVyX21heDtcbiAgICAgIGNhbWxfcmVmaWxsIChjaGFuKTtcbiAgICAgIGlmKHByZXZfbWF4ID09IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH0gd2hpbGUgKGNoYW4uYnVmZmVyW3ArK10gIT0gMTApO1xuICByZXR1cm4gKHAgLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZmx1c2hcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYoIWNoYW4uYnVmZmVyIHx8IGNoYW4uYnVmZmVyX2N1cnIgPT0gMCkgcmV0dXJuIDA7XG4gIGlmKGNoYW4ub3V0cHV0KSB7XG4gICAgY2hhbi5vdXRwdXQoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKSk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5maWxlLndyaXRlKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgMCwgY2hhbi5idWZmZXJfY3Vycik7XG4gIH1cbiAgY2hhbi5vZmZzZXQgKz0gY2hhbi5idWZmZXJfY3VycjtcbiAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL291dHB1dCB0byBvdXRfY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF90YVxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCxjYW1sX21sX2J5dGVzX2xlbmd0aFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3Qgb3V0cHV0IHRvIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIGJ1ZmZlciA9IGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbik7XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoID4gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9jdXJyICsgYnVmZmVyLmxlbmd0aCk7XG4gICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgIGNoYW4uYnVmZmVyID0gYlxuICB9XG4gIHN3aXRjaChjaGFuLmJ1ZmZlcmVkKXtcbiAgY2FzZSAwOiAvLyBVbmJ1ZmZlcmVkXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgYnJlYWtcbiAgY2FzZSAxOiAvLyBCdWZmZXJlZCAodGhlIGRlZmF1bHQpXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVhaztcbiAgY2FzZSAyOiAvLyBCdWZmZXJlZCAob25seSBmb3Igc3Rkb3V0IGFuZCBzdGRlcnIpXG4gICAgdmFyIGlkID0gYnVmZmVyLmxhc3RJbmRleE9mKDEwKVxuICAgIGlmKGlkIDwgMCkge1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aClcbiAgICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KDAsIGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBpZCArIDE7XG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheShpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aCAtIGlkIC0gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5LCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXkoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXQoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxjYW1sX2J5dGVzX29mX3N0cmluZyhidWZmZXIpLG9mZnNldCxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfY2hhciAoY2hhbmlkLGMpIHtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZywgY2FtbF9tbF9vdXRwdXQsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZSAoY2hhbmlkLHYsZmxhZ3MpIHtcbiAgdmFyIHMgPSBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcodiwgZmxhZ3MpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLm9mZnNldCA9IHBvcztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXQoY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXRfNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgKyBjaGFuLmJ1ZmZlcl9jdXJyXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19vdXQoY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dF82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQgKGNhbWxfcG9zX291dChjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2ludCAoY2hhbmlkLGkpIHtcbiAgdmFyIGFyciA9IFsoaT4+MjQpICYgMHhGRiwoaT4+MTYpICYgMHhGRiwoaT4+OCkgJiAweEZGLGkgJiAweEZGIF07XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCw0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9pc19idWZmZXJlZChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKS5idWZmZXJlZCA/IDEgOiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NldF9idWZmZXJlZChjaGFuaWQsdikge1xuICBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCkuYnVmZmVyZWQgPSB2O1xuICBpZighdikgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gMFxufVxuIiwiXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxudmFyIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyKGV2ZW50X25hbWUsIGV2ZW50X3RhZywgZXZlbnRfdHlwZSkge1xuICBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCArPSAxO1xuICByZXR1cm4gWzAsIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4LCBldmVudF9uYW1lLCBldmVudF90eXBlLCBldmVudF90YWddO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZShldmVudCwgZXZlbnRfY29udGVudCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19zdGFydFxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydFxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19zdGFydCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcGF1c2Vcbi8vQWxpYXM6IGNhbWxfcnVudGltZV9ldmVudHNfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV9ldmVudHNfcGF1c2UoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX2FyZV9hY3RpdmVcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX2FyZV9hY3RpdmUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZVxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19yZXN1bWVcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19jcmVhdGVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3IodGFyZ2V0KSB7XG4gIHJldHVybiB7fTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19mcmVlX2N1cnNvclxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19mcmVlX2N1cnNvcihjdXJzb3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbChjdXJzb3IsIGNhbGxiYWNrcywgbnVtKSB7XG4gIHJldHVybiAwO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiB6c3RkX2RlY29tcHJlc3Ncbi8vVmVyc2lvbjogPj0gNS4xXG52YXIgenN0ZF9kZWNvbXByZXNzID0gKGZ1bmN0aW9uICgpIHtcblwidXNlIHN0cmljdFwiO1xuLy8gYWxpYXNlcyBmb3Igc2hvcnRlciBjb21wcmVzc2VkIGNvZGUgKG1vc3QgbWluaWZlcnMgZG9uJ3QgZG8gdGhpcylcbnZhciBhYiA9IEFycmF5QnVmZmVyLCB1OCA9IFVpbnQ4QXJyYXksIHUxNiA9IFVpbnQxNkFycmF5LCBpMTYgPSBJbnQxNkFycmF5LCB1MzIgPSBVaW50MzJBcnJheSwgaTMyID0gSW50MzJBcnJheTtcbnZhciBzbGMgPSBmdW5jdGlvbiAodiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuc2xpY2UpXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuc2xpY2UuY2FsbCh2LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIHZhciBuID0gbmV3IHU4KGUgLSBzKTtcbiAgICBuLnNldCh2LnN1YmFycmF5KHMsIGUpKTtcbiAgICByZXR1cm4gbjtcbn07XG52YXIgZmlsbCA9IGZ1bmN0aW9uICh2LCBuLCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5maWxsKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLmZpbGwuY2FsbCh2LCBuLCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIGZvciAoOyBzIDwgZTsgKytzKVxuICAgICAgICB2W3NdID0gbjtcbiAgICByZXR1cm4gdjtcbn07XG52YXIgY3B3ID0gZnVuY3Rpb24gKHYsIHQsIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLmNvcHlXaXRoaW4pXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuY29weVdpdGhpbi5jYWxsKHYsIHQsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgd2hpbGUgKHMgPCBlKSB7XG4gICAgICAgIHZbdCsrXSA9IHZbcysrXTtcbiAgICB9XG59O1xuLyoqXG4gKiBDb2RlcyBmb3IgZXJyb3JzIGdlbmVyYXRlZCB3aXRoaW4gdGhpcyBsaWJyYXJ5XG4gKi9cbi8vIGVycm9yIGNvZGVzXG52YXIgZWMgPSBbXG4gICAgJ2ludmFsaWQgenN0ZCBkYXRhJyxcbiAgICAnd2luZG93IHNpemUgdG9vIGxhcmdlICg+MjA0Nk1CKScsXG4gICAgJ2ludmFsaWQgYmxvY2sgdHlwZScsXG4gICAgJ0ZTRSBhY2N1cmFjeSB0b28gaGlnaCcsXG4gICAgJ21hdGNoIGRpc3RhbmNlIHRvbyBmYXIgYmFjaycsXG4gICAgJ3VuZXhwZWN0ZWQgRU9GJ1xuXTtcbjtcbnZhciBlcnIgPSBmdW5jdGlvbiAoaW5kLCBtc2csIG50KSB7XG4gICAgdmFyIGUgPSBuZXcgRXJyb3IobXNnIHx8IGVjW2luZF0pO1xuICAgIGUuY29kZSA9IGluZDtcbiAgICBpZiAoIW50KVxuICAgICAgICB0aHJvdyBlO1xuICAgIHJldHVybiBlO1xufTtcbnZhciByYiA9IGZ1bmN0aW9uIChkLCBiLCBuKSB7XG4gICAgdmFyIGkgPSAwLCBvID0gMDtcbiAgICBmb3IgKDsgaSA8IG47ICsraSlcbiAgICAgICAgbyB8PSBkW2IrK10gPDwgKGkgPDwgMyk7XG4gICAgcmV0dXJuIG87XG59O1xudmFyIGI0ID0gZnVuY3Rpb24gKGQsIGIpIHsgcmV0dXJuIChkW2JdIHwgKGRbYiArIDFdIDw8IDgpIHwgKGRbYiArIDJdIDw8IDE2KSB8IChkW2IgKyAzXSA8PCAyNCkpID4+PiAwOyB9O1xuLy8gcmVhZCBac3RhbmRhcmQgZnJhbWUgaGVhZGVyXG52YXIgcnpmaCA9IGZ1bmN0aW9uIChkYXQsIHcpIHtcbiAgICB2YXIgbjMgPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpIHwgKGRhdFsyXSA8PCAxNik7XG4gICAgaWYgKG4zID09IDB4MkZCNTI4ICYmIGRhdFszXSA9PSAyNTMpIHtcbiAgICAgICAgLy8gWnN0YW5kYXJkXG4gICAgICAgIHZhciBmbGcgPSBkYXRbNF07XG4gICAgICAgIC8vICAgIHNpbmdsZSBzZWdtZW50ICAgICAgIGNoZWNrc3VtICAgICAgICAgICAgIGRpY3QgZmxhZyAgICAgZnJhbWUgY29udGVudCBmbGFnXG4gICAgICAgIHZhciBzcyA9IChmbGcgPj4gNSkgJiAxLCBjYyA9IChmbGcgPj4gMikgJiAxLCBkZiA9IGZsZyAmIDMsIGZjZiA9IGZsZyA+PiA2O1xuICAgICAgICBpZiAoZmxnICYgOClcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgLy8gYnl0ZVxuICAgICAgICB2YXIgYnQgPSA2IC0gc3M7XG4gICAgICAgIC8vIGRpY3QgYnl0ZXNcbiAgICAgICAgdmFyIGRiID0gZGYgPT0gMyA/IDQgOiBkZjtcbiAgICAgICAgLy8gZGljdGlvbmFyeSBpZFxuICAgICAgICB2YXIgZGkgPSByYihkYXQsIGJ0LCBkYik7XG4gICAgICAgIGJ0ICs9IGRiO1xuICAgICAgICAvLyBmcmFtZSBzaXplIGJ5dGVzXG4gICAgICAgIHZhciBmc2IgPSBmY2YgPyAoMSA8PCBmY2YpIDogc3M7XG4gICAgICAgIC8vIGZyYW1lIHNvdXJjZSBzaXplXG4gICAgICAgIHZhciBmc3MgPSByYihkYXQsIGJ0LCBmc2IpICsgKChmY2YgPT0gMSkgJiYgMjU2KTtcbiAgICAgICAgLy8gd2luZG93IHNpemVcbiAgICAgICAgdmFyIHdzID0gZnNzO1xuICAgICAgICBpZiAoIXNzKSB7XG4gICAgICAgICAgICAvLyB3aW5kb3cgZGVzY3JpcHRvclxuICAgICAgICAgICAgdmFyIHdiID0gMSA8PCAoMTAgKyAoZGF0WzVdID4+IDMpKTtcbiAgICAgICAgICAgIHdzID0gd2IgKyAod2IgPj4gMykgKiAoZGF0WzVdICYgNyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdzID4gMjE0NTM4NjQ5NilcbiAgICAgICAgICAgIGVycigxKTtcbiAgICAgICAgdmFyIGJ1ZiA9IG5ldyB1OCgodyA9PSAxID8gKGZzcyB8fCB3cykgOiB3ID8gMCA6IHdzKSArIDEyKTtcbiAgICAgICAgYnVmWzBdID0gMSwgYnVmWzRdID0gNCwgYnVmWzhdID0gODtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGI6IGJ0ICsgZnNiLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGw6IDAsXG4gICAgICAgICAgICBkOiBkaSxcbiAgICAgICAgICAgIHc6ICh3ICYmIHcgIT0gMSkgPyB3IDogYnVmLnN1YmFycmF5KDEyKSxcbiAgICAgICAgICAgIGU6IHdzLFxuICAgICAgICAgICAgbzogbmV3IGkzMihidWYuYnVmZmVyLCAwLCAzKSxcbiAgICAgICAgICAgIHU6IGZzcyxcbiAgICAgICAgICAgIGM6IGNjLFxuICAgICAgICAgICAgbTogTWF0aC5taW4oMTMxMDcyLCB3cylcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoKChuMyA+PiA0KSB8IChkYXRbM10gPDwgMjApKSA9PSAweDE4NEQyQTUpIHtcbiAgICAgICAgLy8gc2tpcHBhYmxlXG4gICAgICAgIHJldHVybiBiNChkYXQsIDQpICsgODtcbiAgICB9XG4gICAgZXJyKDApO1xufTtcbi8vIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGZvciBub256ZXJvXG52YXIgbXNiID0gZnVuY3Rpb24gKHZhbCkge1xuICAgIHZhciBiaXRzID0gMDtcbiAgICBmb3IgKDsgKDEgPDwgYml0cykgPD0gdmFsOyArK2JpdHMpXG4gICAgICAgIDtcbiAgICByZXR1cm4gYml0cyAtIDE7XG59O1xuLy8gcmVhZCBmaW5pdGUgc3RhdGUgZW50cm9weVxudmFyIHJmc2UgPSBmdW5jdGlvbiAoZGF0LCBidCwgbWFsKSB7XG4gICAgLy8gdGFibGUgcG9zXG4gICAgdmFyIHRwb3MgPSAoYnQgPDwgMykgKyA0O1xuICAgIC8vIGFjY3VyYWN5IGxvZ1xuICAgIHZhciBhbCA9IChkYXRbYnRdICYgMTUpICsgNTtcbiAgICBpZiAoYWwgPiBtYWwpXG4gICAgICAgIGVycigzKTtcbiAgICAvLyBzaXplXG4gICAgdmFyIHN6ID0gMSA8PCBhbDtcbiAgICAvLyBwcm9iYWJpbGl0aWVzIHN5bWJvbHMgIHJlcGVhdCAgIGluZGV4ICAgaGlnaCB0aHJlc2hvbGRcbiAgICB2YXIgcHJvYnMgPSBzeiwgc3ltID0gLTEsIHJlID0gLTEsIGkgPSAtMSwgaHQgPSBzejtcbiAgICAvLyBvcHRpbWl6YXRpb246IHNpbmdsZSBhbGxvY2F0aW9uIGlzIG11Y2ggZmFzdGVyXG4gICAgdmFyIGJ1ZiA9IG5ldyBhYig1MTIgKyAoc3ogPDwgMikpO1xuICAgIHZhciBmcmVxID0gbmV3IGkxNihidWYsIDAsIDI1Nik7XG4gICAgLy8gc2FtZSB2aWV3IGFzIGZyZXFcbiAgICB2YXIgZHN0YXRlID0gbmV3IHUxNihidWYsIDAsIDI1Nik7XG4gICAgdmFyIG5zdGF0ZSA9IG5ldyB1MTYoYnVmLCA1MTIsIHN6KTtcbiAgICB2YXIgYmIxID0gNTEyICsgKHN6IDw8IDEpO1xuICAgIHZhciBzeW1zID0gbmV3IHU4KGJ1ZiwgYmIxLCBzeik7XG4gICAgdmFyIG5iaXRzID0gbmV3IHU4KGJ1ZiwgYmIxICsgc3opO1xuICAgIHdoaWxlIChzeW0gPCAyNTUgJiYgcHJvYnMgPiAwKSB7XG4gICAgICAgIHZhciBiaXRzID0gbXNiKHByb2JzICsgMSk7XG4gICAgICAgIHZhciBjYnQgPSB0cG9zID4+IDM7XG4gICAgICAgIC8vIG1hc2tcbiAgICAgICAgdmFyIG1zayA9ICgxIDw8IChiaXRzICsgMSkpIC0gMTtcbiAgICAgICAgdmFyIHZhbCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+ICh0cG9zICYgNykpICYgbXNrO1xuICAgICAgICAvLyBtYXNrICgxIGZld2VyIGJpdClcbiAgICAgICAgdmFyIG1zazFmYiA9ICgxIDw8IGJpdHMpIC0gMTtcbiAgICAgICAgLy8gbWF4IHNtYWxsIHZhbHVlXG4gICAgICAgIHZhciBtc3YgPSBtc2sgLSBwcm9icyAtIDE7XG4gICAgICAgIC8vIHNtYWxsIHZhbHVlXG4gICAgICAgIHZhciBzdmFsID0gdmFsICYgbXNrMWZiO1xuICAgICAgICBpZiAoc3ZhbCA8IG1zdilcbiAgICAgICAgICAgIHRwb3MgKz0gYml0cywgdmFsID0gc3ZhbDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0cG9zICs9IGJpdHMgKyAxO1xuICAgICAgICAgICAgaWYgKHZhbCA+IG1zazFmYilcbiAgICAgICAgICAgICAgICB2YWwgLT0gbXN2O1xuICAgICAgICB9XG4gICAgICAgIGZyZXFbKytzeW1dID0gLS12YWw7XG4gICAgICAgIGlmICh2YWwgPT0gLTEpIHtcbiAgICAgICAgICAgIHByb2JzICs9IHZhbDtcbiAgICAgICAgICAgIHN5bXNbLS1odF0gPSBzeW07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcHJvYnMgLT0gdmFsO1xuICAgICAgICBpZiAoIXZhbCkge1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIC8vIHJlcGVhdCBieXRlXG4gICAgICAgICAgICAgICAgdmFyIHJidCA9IHRwb3MgPj4gMztcbiAgICAgICAgICAgICAgICByZSA9ICgoZGF0W3JidF0gfCAoZGF0W3JidCArIDFdIDw8IDgpKSA+PiAodHBvcyAmIDcpKSAmIDM7XG4gICAgICAgICAgICAgICAgdHBvcyArPSAyO1xuICAgICAgICAgICAgICAgIHN5bSArPSByZTtcbiAgICAgICAgICAgIH0gd2hpbGUgKHJlID09IDMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChzeW0gPiAyNTUgfHwgcHJvYnMpXG4gICAgICAgIGVycigwKTtcbiAgICB2YXIgc3ltcG9zID0gMDtcbiAgICAvLyBzeW0gc3RlcCAoY29wcmltZSB3aXRoIHN6IC0gZm9ybXVsYSBmcm9tIHpzdGQgc291cmNlKVxuICAgIHZhciBzc3RlcCA9IChzeiA+PiAxKSArIChzeiA+PiAzKSArIDM7XG4gICAgLy8gc3ltIG1hc2tcbiAgICB2YXIgc21hc2sgPSBzeiAtIDE7XG4gICAgZm9yICh2YXIgcyA9IDA7IHMgPD0gc3ltOyArK3MpIHtcbiAgICAgICAgdmFyIHNmID0gZnJlcVtzXTtcbiAgICAgICAgaWYgKHNmIDwgMSkge1xuICAgICAgICAgICAgZHN0YXRlW3NdID0gLXNmO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhpcyBpcyBzcGxpdCBpbnRvIHR3byBsb29wcyBpbiB6c3RkIHRvIGF2b2lkIGJyYW5jaGluZywgYnV0IGFzIEpTIGlzIGhpZ2hlci1sZXZlbCB0aGF0IGlzIHVubmVjZXNzYXJ5XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZjsgKytpKSB7XG4gICAgICAgICAgICBzeW1zW3N5bXBvc10gPSBzO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHN5bXBvcyA9IChzeW1wb3MgKyBzc3RlcCkgJiBzbWFzaztcbiAgICAgICAgICAgIH0gd2hpbGUgKHN5bXBvcyA+PSBodCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWZ0ZXIgc3ByZWFkaW5nIHN5bWJvbHMsIHNob3VsZCBiZSB6ZXJvIGFnYWluXG4gICAgaWYgKHN5bXBvcylcbiAgICAgICAgZXJyKDApO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzejsgKytpKSB7XG4gICAgICAgIC8vIG5leHQgc3RhdGVcbiAgICAgICAgdmFyIG5zID0gZHN0YXRlW3N5bXNbaV1dKys7XG4gICAgICAgIC8vIG51bSBiaXRzXG4gICAgICAgIHZhciBuYiA9IG5iaXRzW2ldID0gYWwgLSBtc2IobnMpO1xuICAgICAgICBuc3RhdGVbaV0gPSAobnMgPDwgbmIpIC0gc3o7XG4gICAgfVxuICAgIHJldHVybiBbKHRwb3MgKyA3KSA+PiAzLCB7XG4gICAgICAgICAgICBiOiBhbCxcbiAgICAgICAgICAgIHM6IHN5bXMsXG4gICAgICAgICAgICBuOiBuYml0cyxcbiAgICAgICAgICAgIHQ6IG5zdGF0ZVxuICAgICAgICB9XTtcbn07XG4vLyByZWFkIGh1ZmZtYW5cbnZhciByaHUgPSBmdW5jdGlvbiAoZGF0LCBidCkge1xuICAgIC8vICBpbmRleCAgd2VpZ2h0IGNvdW50XG4gICAgdmFyIGkgPSAwLCB3YyA9IC0xO1xuICAgIC8vICAgIGJ1ZmZlciAgICAgICAgICAgICBoZWFkZXIgYnl0ZVxuICAgIHZhciBidWYgPSBuZXcgdTgoMjkyKSwgaGIgPSBkYXRbYnRdO1xuICAgIC8vIGh1ZmZtYW4gd2VpZ2h0c1xuICAgIHZhciBodyA9IGJ1Zi5zdWJhcnJheSgwLCAyNTYpO1xuICAgIC8vIHJhbmsgY291bnRcbiAgICB2YXIgcmMgPSBidWYuc3ViYXJyYXkoMjU2LCAyNjgpO1xuICAgIC8vIHJhbmsgaW5kZXhcbiAgICB2YXIgcmkgPSBuZXcgdTE2KGJ1Zi5idWZmZXIsIDI2OCk7XG4gICAgLy8gTk9URTogYXQgdGhpcyBwb2ludCBidCBpcyAxIGxlc3MgdGhhbiBleHBlY3RlZFxuICAgIGlmIChoYiA8IDEyOCkge1xuICAgICAgICAvLyBlbmQgYnl0ZSwgZnNlIGRlY29kZSB0YWJsZVxuICAgICAgICB2YXIgX2EgPSByZnNlKGRhdCwgYnQgKyAxLCA2KSwgZWJ0ID0gX2FbMF0sIGZkdCA9IF9hWzFdO1xuICAgICAgICBidCArPSBoYjtcbiAgICAgICAgdmFyIGVwb3MgPSBlYnQgPDwgMztcbiAgICAgICAgLy8gbGFzdCBieXRlXG4gICAgICAgIHZhciBsYiA9IGRhdFtidF07XG4gICAgICAgIGlmICghbGIpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIC8vICBzdGF0ZTEgICBzdGF0ZTIgICBzdGF0ZTEgYml0cyAgIHN0YXRlMiBiaXRzXG4gICAgICAgIHZhciBzdDEgPSAwLCBzdDIgPSAwLCBidHIxID0gZmR0LmIsIGJ0cjIgPSBidHIxO1xuICAgICAgICAvLyBmc2UgcG9zXG4gICAgICAgIC8vIHByZS1pbmNyZW1lbnQgdG8gYWNjb3VudCBmb3Igb3JpZ2luYWwgZGVmaWNpdCBvZiAxXG4gICAgICAgIHZhciBmcG9zID0gKCsrYnQgPDwgMykgLSA4ICsgbXNiKGxiKTtcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgZnBvcyAtPSBidHIxO1xuICAgICAgICAgICAgaWYgKGZwb3MgPCBlcG9zKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgdmFyIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgICAgIHN0MSArPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMSkgLSAxKTtcbiAgICAgICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QxXTtcbiAgICAgICAgICAgIGZwb3MgLT0gYnRyMjtcbiAgICAgICAgICAgIGlmIChmcG9zIDwgZXBvcylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgICAgIHN0MiArPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMikgLSAxKTtcbiAgICAgICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QyXTtcbiAgICAgICAgICAgIGJ0cjEgPSBmZHQubltzdDFdO1xuICAgICAgICAgICAgc3QxID0gZmR0LnRbc3QxXTtcbiAgICAgICAgICAgIGJ0cjIgPSBmZHQubltzdDJdO1xuICAgICAgICAgICAgc3QyID0gZmR0LnRbc3QyXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKyt3YyA+IDI1NSlcbiAgICAgICAgICAgIGVycigwKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHdjID0gaGIgLSAxMjc7XG4gICAgICAgIGZvciAoOyBpIDwgd2M7IGkgKz0gMikge1xuICAgICAgICAgICAgdmFyIGJ5dGUgPSBkYXRbKytidF07XG4gICAgICAgICAgICBod1tpXSA9IGJ5dGUgPj4gNDtcbiAgICAgICAgICAgIGh3W2kgKyAxXSA9IGJ5dGUgJiAxNTtcbiAgICAgICAgfVxuICAgICAgICArK2J0O1xuICAgIH1cbiAgICAvLyB3ZWlnaHQgZXhwb25lbnRpYWwgc3VtXG4gICAgdmFyIHdlcyA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAgIC8vIGJpdHMgbXVzdCBiZSBhdCBtb3N0IDExLCBzYW1lIGFzIHdlaWdodFxuICAgICAgICBpZiAod3QgPiAxMSlcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgd2VzICs9IHd0ICYmICgxIDw8ICh3dCAtIDEpKTtcbiAgICB9XG4gICAgLy8gbWF4IGJpdHNcbiAgICB2YXIgbWIgPSBtc2Iod2VzKSArIDE7XG4gICAgLy8gdGFibGUgc2l6ZVxuICAgIHZhciB0cyA9IDEgPDwgbWI7XG4gICAgLy8gcmVtYWluaW5nIHN1bVxuICAgIHZhciByZW0gPSB0cyAtIHdlcztcbiAgICAvLyBtdXN0IGJlIHBvd2VyIG9mIDJcbiAgICBpZiAocmVtICYgKHJlbSAtIDEpKVxuICAgICAgICBlcnIoMCk7XG4gICAgaHdbd2MrK10gPSBtc2IocmVtKSArIDE7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAgICsrcmNbaHdbaV0gPSB3dCAmJiAobWIgKyAxIC0gd3QpXTtcbiAgICB9XG4gICAgLy8gaHVmIGJ1ZlxuICAgIHZhciBoYnVmID0gbmV3IHU4KHRzIDw8IDEpO1xuICAgIC8vICAgIHN5bWJvbHMgICAgICAgICAgICAgICAgICAgICAgbnVtIGJpdHNcbiAgICB2YXIgc3ltcyA9IGhidWYuc3ViYXJyYXkoMCwgdHMpLCBuYiA9IGhidWYuc3ViYXJyYXkodHMpO1xuICAgIHJpW21iXSA9IDA7XG4gICAgZm9yIChpID0gbWI7IGkgPiAwOyAtLWkpIHtcbiAgICAgICAgdmFyIHB2ID0gcmlbaV07XG4gICAgICAgIGZpbGwobmIsIGksIHB2LCByaVtpIC0gMV0gPSBwdiArIHJjW2ldICogKDEgPDwgKG1iIC0gaSkpKTtcbiAgICB9XG4gICAgaWYgKHJpWzBdICE9IHRzKVxuICAgICAgICBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIGJpdHMgPSBod1tpXTtcbiAgICAgICAgaWYgKGJpdHMpIHtcbiAgICAgICAgICAgIHZhciBjb2RlID0gcmlbYml0c107XG4gICAgICAgICAgICBmaWxsKHN5bXMsIGksIGNvZGUsIHJpW2JpdHNdID0gY29kZSArICgxIDw8IChtYiAtIGJpdHMpKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFtidCwge1xuICAgICAgICAgICAgbjogbmIsXG4gICAgICAgICAgICBiOiBtYixcbiAgICAgICAgICAgIHM6IHN5bXNcbiAgICAgICAgfV07XG59O1xuLy8gVGFibGVzIGdlbmVyYXRlZCB1c2luZyB0aGlzOlxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vMTAxYXJyb3d6L2E5Nzk0NTJkNDM1NTk5MmNiZjhmMjU3Y2JmZmM5ZWRkXG4vLyBkZWZhdWx0IGxpdGVyYWwgbGVuZ3RoIHRhYmxlXG52YXIgZGxsdCA9IC8qI19fUFVSRV9fKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgODEsIDE2LCA5OSwgMTQwLCA0OSwgMTk4LCAyNCwgOTksIDEyLCAzMywgMTk2LCAyNCwgOTksIDEwMiwgMTAyLCAxMzQsIDcwLCAxNDYsIDRcbl0pLCAwLCA2KVsxXTtcbi8vIGRlZmF1bHQgbWF0Y2ggbGVuZ3RoIHRhYmxlXG52YXIgZG1sdCA9IC8qI19fUFVSRV9fKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgMzMsIDIwLCAxOTYsIDI0LCA5OSwgMTQwLCAzMywgMTMyLCAxNiwgNjYsIDgsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgMzYsIDlcbl0pLCAwLCA2KVsxXTtcbi8vIGRlZmF1bHQgb2Zmc2V0IGNvZGUgdGFibGVcbnZhciBkb2N0ID0gLyojX19QVVJFX18gKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgMzIsIDEzMiwgMTYsIDY2LCAxMDIsIDcwLCA2OCwgNjgsIDY4LCA2OCwgMzYsIDczLCAyXG5dKSwgMCwgNSlbMV07XG4vLyBiaXRzIHRvIGJhc2VsaW5lXG52YXIgYjJibCA9IGZ1bmN0aW9uIChiLCBzKSB7XG4gICAgdmFyIGxlbiA9IGIubGVuZ3RoLCBibCA9IG5ldyBpMzIobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgIGJsW2ldID0gcztcbiAgICAgICAgcyArPSAxIDw8IGJbaV07XG4gICAgfVxuICAgIHJldHVybiBibDtcbn07XG4vLyBsaXRlcmFsIGxlbmd0aCBiaXRzXG52YXIgbGxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KCggLyojX19QVVJFX18gKi9uZXcgaTMyKFtcbiAgICAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDEzNDY3ODAyMCwgMjAyMDUwMDU3LCAyNjk0MjIwOTNcbl0pKS5idWZmZXIsIDAsIDM2KTtcbi8vIGxpdGVyYWwgbGVuZ3RoIGJhc2VsaW5lXG52YXIgbGxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobGxiLCAwKTtcbi8vIG1hdGNoIGxlbmd0aCBiaXRzXG52YXIgbWxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KCggLyojX19QVVJFX18gKi9uZXcgaTMyKFtcbiAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDExNzc2OTIyMCwgMTg1MjA3MDQ4LCAyNTI1NzkwODQsIDE2XG5dKSkuYnVmZmVyLCAwLCA1Myk7XG4vLyBtYXRjaCBsZW5ndGggYmFzZWxpbmVcbnZhciBtbGJsID0gLyojX19QVVJFX18gKi8gYjJibChtbGIsIDMpO1xuLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtXG52YXIgZGh1ID0gZnVuY3Rpb24gKGRhdCwgb3V0LCBodSkge1xuICAgIHZhciBsZW4gPSBkYXQubGVuZ3RoLCBzcyA9IG91dC5sZW5ndGgsIGxiID0gZGF0W2xlbiAtIDFdLCBtc2sgPSAoMSA8PCBodS5iKSAtIDEsIGViID0gLWh1LmI7XG4gICAgaWYgKCFsYilcbiAgICAgICAgZXJyKDApO1xuICAgIHZhciBzdCA9IDAsIGJ0ciA9IGh1LmIsIHBvcyA9IChsZW4gPDwgMykgLSA4ICsgbXNiKGxiKSAtIGJ0ciwgaSA9IC0xO1xuICAgIGZvciAoOyBwb3MgPiBlYiAmJiBpIDwgc3M7KSB7XG4gICAgICAgIHZhciBjYnQgPSBwb3MgPj4gMztcbiAgICAgICAgdmFyIHZhbCA9IChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHBvcyAmIDcpO1xuICAgICAgICBzdCA9ICgoc3QgPDwgYnRyKSB8IHZhbCkgJiBtc2s7XG4gICAgICAgIG91dFsrK2ldID0gaHUuc1tzdF07XG4gICAgICAgIHBvcyAtPSAoYnRyID0gaHUubltzdF0pO1xuICAgIH1cbiAgICBpZiAocG9zICE9IGViIHx8IGkgKyAxICE9IHNzKVxuICAgICAgICBlcnIoMCk7XG59O1xuLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtIDR4XG4vLyBUT0RPOiB1c2Ugd29ya2VycyB0byBwYXJhbGxlbGl6ZVxudmFyIGRodTQgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGJ0ID0gNjtcbiAgICB2YXIgc3MgPSBvdXQubGVuZ3RoLCBzejEgPSAoc3MgKyAzKSA+PiAyLCBzejIgPSBzejEgPDwgMSwgc3ozID0gc3oxICsgc3oyO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkpLCBvdXQuc3ViYXJyYXkoMCwgc3oxKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFsyXSB8IChkYXRbM10gPDwgOCkpLCBvdXQuc3ViYXJyYXkoc3oxLCBzejIpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzRdIHwgKGRhdFs1XSA8PCA4KSksIG91dC5zdWJhcnJheShzejIsIHN6MyksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0KSwgb3V0LnN1YmFycmF5KHN6MyksIGh1KTtcbn07XG4vLyByZWFkIFpzdGFuZGFyZCBibG9ja1xudmFyIHJ6YiA9IGZ1bmN0aW9uIChkYXQsIHN0LCBvdXQpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIGJ0ID0gc3QuYjtcbiAgICAvLyAgICBieXRlIDAgICAgICAgIGJsb2NrIHR5cGVcbiAgICB2YXIgYjAgPSBkYXRbYnRdLCBidHlwZSA9IChiMCA+PiAxKSAmIDM7XG4gICAgc3QubCA9IGIwICYgMTtcbiAgICB2YXIgc3ogPSAoYjAgPj4gMykgfCAoZGF0W2J0ICsgMV0gPDwgNSkgfCAoZGF0W2J0ICsgMl0gPDwgMTMpO1xuICAgIC8vIGVuZCBieXRlIGZvciBibG9ja1xuICAgIHZhciBlYnQgPSAoYnQgKz0gMykgKyBzejtcbiAgICBpZiAoYnR5cGUgPT0gMSkge1xuICAgICAgICBpZiAoYnQgPj0gZGF0Lmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc3QuYiA9IGJ0ICsgMTtcbiAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgZmlsbChvdXQsIGRhdFtidF0sIHN0LnksIHN0LnkgKz0gc3opO1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsbChuZXcgdTgoc3opLCBkYXRbYnRdKTtcbiAgICB9XG4gICAgaWYgKGVidCA+IGRhdC5sZW5ndGgpXG4gICAgICAgIHJldHVybjtcbiAgICBpZiAoYnR5cGUgPT0gMCkge1xuICAgICAgICBzdC5iID0gZWJ0O1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBvdXQuc2V0KGRhdC5zdWJhcnJheShidCwgZWJ0KSwgc3QueSk7XG4gICAgICAgICAgICBzdC55ICs9IHN6O1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2xjKGRhdCwgYnQsIGVidCk7XG4gICAgfVxuICAgIGlmIChidHlwZSA9PSAyKSB7XG4gICAgICAgIC8vICAgIGJ5dGUgMyAgICAgICAgbGl0IGJ0eXBlICAgICBzaXplIGZvcm1hdFxuICAgICAgICB2YXIgYjMgPSBkYXRbYnRdLCBsYnQgPSBiMyAmIDMsIHNmID0gKGIzID4+IDIpICYgMztcbiAgICAgICAgLy8gbGl0IHNyYyBzaXplICBsaXQgY21wIHN6IDQgc3RyZWFtc1xuICAgICAgICB2YXIgbHNzID0gYjMgPj4gNCwgbGNzID0gMCwgczQgPSAwO1xuICAgICAgICBpZiAobGJ0IDwgMikge1xuICAgICAgICAgICAgaWYgKHNmICYgMSlcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoc2YgJiAyKSAmJiAoZGF0WysrYnRdIDw8IDEyKSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbHNzID0gYjMgPj4gMztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gc2Y7XG4gICAgICAgICAgICBpZiAoc2YgPCAyKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoKGRhdFsrK2J0XSAmIDYzKSA8PCA0KSwgbGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpO1xuICAgICAgICAgICAgZWxzZSBpZiAoc2YgPT0gMilcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgMykgPDwgMTIpLCBsY3MgPSAoZGF0W2J0XSA+PiAyKSB8IChkYXRbKytidF0gPDwgNik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDYzKSA8PCAxMiksIGxjcyA9IChkYXRbYnRdID4+IDYpIHwgKGRhdFsrK2J0XSA8PCAyKSB8IChkYXRbKytidF0gPDwgMTApO1xuICAgICAgICB9XG4gICAgICAgICsrYnQ7XG4gICAgICAgIC8vIGFkZCBsaXRlcmFscyB0byBlbmQgLSBjYW4gbmV2ZXIgb3ZlcmxhcCB3aXRoIGJhY2tyZWZlcmVuY2VzIGJlY2F1c2UgdW51c2VkIGxpdGVyYWxzIGFsd2F5cyBhcHBlbmRlZFxuICAgICAgICB2YXIgYnVmID0gb3V0ID8gb3V0LnN1YmFycmF5KHN0LnksIHN0LnkgKyBzdC5tKSA6IG5ldyB1OChzdC5tKTtcbiAgICAgICAgLy8gc3RhcnRpbmcgcG9pbnQgZm9yIGxpdGVyYWxzXG4gICAgICAgIHZhciBzcGwgPSBidWYubGVuZ3RoIC0gbHNzO1xuICAgICAgICBpZiAobGJ0ID09IDApXG4gICAgICAgICAgICBidWYuc2V0KGRhdC5zdWJhcnJheShidCwgYnQgKz0gbHNzKSwgc3BsKTtcbiAgICAgICAgZWxzZSBpZiAobGJ0ID09IDEpXG4gICAgICAgICAgICBmaWxsKGJ1ZiwgZGF0W2J0KytdLCBzcGwpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGh1ZmZtYW4gdGFibGVcbiAgICAgICAgICAgIHZhciBodSA9IHN0Lmg7XG4gICAgICAgICAgICBpZiAobGJ0ID09IDIpIHtcbiAgICAgICAgICAgICAgICB2YXIgaHVkID0gcmh1KGRhdCwgYnQpO1xuICAgICAgICAgICAgICAgIC8vIHN1YnRyYWN0IGRlc2NyaXB0aW9uIGxlbmd0aFxuICAgICAgICAgICAgICAgIGxjcyArPSBidCAtIChidCA9IGh1ZFswXSk7XG4gICAgICAgICAgICAgICAgc3QuaCA9IGh1ID0gaHVkWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIWh1KVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIChzNCA/IGRodTQgOiBkaHUpKGRhdC5zdWJhcnJheShidCwgYnQgKz0gbGNzKSwgYnVmLnN1YmFycmF5KHNwbCksIGh1KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBudW0gc2VxdWVuY2VzXG4gICAgICAgIHZhciBucyA9IGRhdFtidCsrXTtcbiAgICAgICAgaWYgKG5zKSB7XG4gICAgICAgICAgICBpZiAobnMgPT0gMjU1KVxuICAgICAgICAgICAgICAgIG5zID0gKGRhdFtidCsrXSB8IChkYXRbYnQrK10gPDwgOCkpICsgMHg3RjAwO1xuICAgICAgICAgICAgZWxzZSBpZiAobnMgPiAxMjcpXG4gICAgICAgICAgICAgICAgbnMgPSAoKG5zIC0gMTI4KSA8PCA4KSB8IGRhdFtidCsrXTtcbiAgICAgICAgICAgIC8vIHN5bWJvbCBjb21wcmVzc2lvbiBtb2Rlc1xuICAgICAgICAgICAgdmFyIHNjbSA9IGRhdFtidCsrXTtcbiAgICAgICAgICAgIGlmIChzY20gJiAzKVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIHZhciBkdHMgPSBbZG1sdCwgZG9jdCwgZGxsdF07XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMjsgaSA+IC0xOyAtLWkpIHtcbiAgICAgICAgICAgICAgICB2YXIgbWQgPSAoc2NtID4+ICgoaSA8PCAxKSArIDIpKSAmIDM7XG4gICAgICAgICAgICAgICAgaWYgKG1kID09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmxlIGJ1ZlxuICAgICAgICAgICAgICAgICAgICB2YXIgcmJ1ZiA9IG5ldyB1OChbMCwgMCwgZGF0W2J0KytdXSk7XG4gICAgICAgICAgICAgICAgICAgIGR0c1tpXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM6IHJidWYuc3ViYXJyYXkoMiwgMyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuOiByYnVmLnN1YmFycmF5KDAsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdDogbmV3IHUxNihyYnVmLmJ1ZmZlciwgMCwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBiOiAwXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1kID09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWNjdXJhY3kgbG9nIDggZm9yIG9mZnNldHMsIDkgZm9yIG90aGVyc1xuICAgICAgICAgICAgICAgICAgICBfYSA9IHJmc2UoZGF0LCBidCwgOSAtIChpICYgMSkpLCBidCA9IF9hWzBdLCBkdHNbaV0gPSBfYVsxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobWQgPT0gMykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN0LnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICAgICAgICAgIGR0c1tpXSA9IHN0LnRbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9iID0gc3QudCA9IGR0cywgbWx0ID0gX2JbMF0sIG9jdCA9IF9iWzFdLCBsbHQgPSBfYlsyXTtcbiAgICAgICAgICAgIHZhciBsYiA9IGRhdFtlYnQgLSAxXTtcbiAgICAgICAgICAgIGlmICghbGIpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgdmFyIHNwb3MgPSAoZWJ0IDw8IDMpIC0gOCArIG1zYihsYikgLSBsbHQuYiwgY2J0ID0gc3BvcyA+PiAzLCBvdWJ0ID0gMDtcbiAgICAgICAgICAgIHZhciBsc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGx0LmIpIC0gMSk7XG4gICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvY3QuYikgPj4gMztcbiAgICAgICAgICAgIHZhciBvc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgb2N0LmIpIC0gMSk7XG4gICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbHQuYikgPj4gMztcbiAgICAgICAgICAgIHZhciBtc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWx0LmIpIC0gMSk7XG4gICAgICAgICAgICBmb3IgKCsrbnM7IC0tbnM7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGxsYyA9IGxsdC5zW2xzdF07XG4gICAgICAgICAgICAgICAgdmFyIGxidHIgPSBsbHQubltsc3RdO1xuICAgICAgICAgICAgICAgIHZhciBtbGMgPSBtbHQuc1ttc3RdO1xuICAgICAgICAgICAgICAgIHZhciBtYnRyID0gbWx0Lm5bbXN0XTtcbiAgICAgICAgICAgICAgICB2YXIgb2ZjID0gb2N0LnNbb3N0XTtcbiAgICAgICAgICAgICAgICB2YXIgb2J0ciA9IG9jdC5uW29zdF07XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2ZjKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBvZnAgPSAxIDw8IG9mYztcbiAgICAgICAgICAgICAgICB2YXIgb2ZmID0gb2ZwICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikgfCAoZGF0W2NidCArIDNdIDw8IDI0KSkgPj4+IChzcG9zICYgNykpICYgKG9mcCAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbGJbbWxjXSkgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgbWwgPSBtbGJsW21sY10gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWxiW21sY10pIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IGxsYltsbGNdKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBsbCA9IGxsYmxbbGxjXSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsbGJbbGxjXSkgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGJ0cikgPj4gMztcbiAgICAgICAgICAgICAgICBsc3QgPSBsbHQudFtsc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIG1zdCA9IG1sdC50W21zdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1idHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9idHIpID4+IDM7XG4gICAgICAgICAgICAgICAgb3N0ID0gb2N0LnRbb3N0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgb2J0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgaWYgKG9mZiA+IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1syXSA9IHN0Lm9bMV07XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzBdID0gb2ZmIC09IDM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaWR4ID0gb2ZmIC0gKGxsICE9IDApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBpZHggPT0gMyA/IHN0Lm9bMF0gLSAxIDogc3Qub1tpZHhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA+IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1syXSA9IHN0Lm9bMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzFdID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmY7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsbDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91YnQgKz0gbGwsIHNwbCArPSBsbDtcbiAgICAgICAgICAgICAgICB2YXIgc3RpbiA9IG91YnQgLSBvZmY7XG4gICAgICAgICAgICAgICAgaWYgKHN0aW4gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsZW4gPSAtc3RpbjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJzID0gc3QuZSArIHN0aW47XG4gICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPiBtbClcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IG1sO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gc3Qud1ticyArIGldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG91YnQgKz0gbGVuLCBtbCAtPSBsZW4sIHN0aW4gPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1sOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IGJ1ZltzdGluICsgaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91YnQgKz0gbWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3VidCAhPSBzcGwpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoc3BsIDwgYnVmLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCsrXSA9IGJ1ZltzcGwrK107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG91YnQgPSBidWYubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG91dClcbiAgICAgICAgICAgICAgICBzdC55ICs9IG91YnQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYnVmID0gc2xjKGJ1ZiwgMCwgb3VidCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICAgICAgc3QueSArPSBsc3M7XG4gICAgICAgICAgICAgICAgaWYgKHNwbCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxzczsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZbaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzcGwpXG4gICAgICAgICAgICAgICAgYnVmID0gc2xjKGJ1Ziwgc3BsKTtcbiAgICAgICAgfVxuICAgICAgICBzdC5iID0gZWJ0O1xuICAgICAgICByZXR1cm4gYnVmO1xuICAgIH1cbiAgICBlcnIoMik7XG59O1xuLy8gY29uY2F0XG52YXIgY2N0ID0gZnVuY3Rpb24gKGJ1ZnMsIG9sKSB7XG4gICAgaWYgKGJ1ZnMubGVuZ3RoID09IDEpXG4gICAgICAgIHJldHVybiBidWZzWzBdO1xuICAgIHZhciBidWYgPSBuZXcgdTgob2wpO1xuICAgIGZvciAodmFyIGkgPSAwLCBiID0gMDsgaSA8IGJ1ZnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGNoayA9IGJ1ZnNbaV07XG4gICAgICAgIGJ1Zi5zZXQoY2hrLCBiKTtcbiAgICAgICAgYiArPSBjaGsubGVuZ3RoO1xuICAgIH1cbiAgICByZXR1cm4gYnVmO1xufTtcbi8qKlxuICogRGVjb21wcmVzc2VzIFpzdGFuZGFyZCBkYXRhXG4gKiBAcGFyYW0gZGF0IFRoZSBpbnB1dCBkYXRhXG4gKiBAcGFyYW0gYnVmIFRoZSBvdXRwdXQgYnVmZmVyLiBJZiB1bnNwZWNpZmllZCwgdGhlIGZ1bmN0aW9uIHdpbGwgYWxsb2NhdGVcbiAqICAgICAgICAgICAgZXhhY3RseSBlbm91Z2ggbWVtb3J5IHRvIGZpdCB0aGUgZGVjb21wcmVzc2VkIGRhdGEuIElmIHlvdXJcbiAqICAgICAgICAgICAgZGF0YSBoYXMgbXVsdGlwbGUgZnJhbWVzIGFuZCB5b3Uga25vdyB0aGUgb3V0cHV0IHNpemUsIHNwZWNpZnlpbmdcbiAqICAgICAgICAgICAgaXQgd2lsbCB5aWVsZCBiZXR0ZXIgcGVyZm9ybWFuY2UuXG4gKiBAcmV0dXJucyBUaGUgZGVjb21wcmVzc2VkIGRhdGFcbiAqL1xucmV0dXJuIGZ1bmN0aW9uIGRlY29tcHJlc3MoZGF0LCBidWYpIHtcbiAgICB2YXIgYnQgPSAwLCBidWZzID0gW10sIG5iID0gKyFidWYsIG9sID0gMDtcbiAgICBmb3IgKDsgZGF0Lmxlbmd0aDspIHtcbiAgICAgICAgdmFyIHN0ID0gcnpmaChkYXQsIG5iIHx8IGJ1Zik7XG4gICAgICAgIGlmICh0eXBlb2Ygc3QgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmIChuYikge1xuICAgICAgICAgICAgICAgIGJ1ZiA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKHN0LncubGVuZ3RoID09IHN0LnUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJ1ZiA9IHN0LncpO1xuICAgICAgICAgICAgICAgICAgICBvbCArPSBzdC51O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChidWYpO1xuICAgICAgICAgICAgICAgIHN0LmUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICg7ICFzdC5sOykge1xuICAgICAgICAgICAgICAgIHZhciBibGsgPSByemIoZGF0LCBzdCwgYnVmKTtcbiAgICAgICAgICAgICAgICBpZiAoIWJsaylcbiAgICAgICAgICAgICAgICAgICAgZXJyKDUpO1xuICAgICAgICAgICAgICAgIGlmIChidWYpXG4gICAgICAgICAgICAgICAgICAgIHN0LmUgPSBzdC55O1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBidWZzLnB1c2goYmxrKTtcbiAgICAgICAgICAgICAgICAgICAgb2wgKz0gYmxrLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgY3B3KHN0LncsIDAsIGJsay5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICBzdC53LnNldChibGssIHN0LncubGVuZ3RoIC0gYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnQgPSBzdC5iICsgKHN0LmMgKiA0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBidCA9IHN0O1xuICAgICAgICBkYXQgPSBkYXQuc3ViYXJyYXkoYnQpO1xuICAgIH1cbiAgICByZXR1cm4gY2N0KGJ1ZnMsIG9sKTtcbn1cbn0pICgpXG5cblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246IDwgNS4xLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjEuMFxuLy9WZXJzaW9uOiA8IDUuMS4xXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjEuMVxuLy9WZXJzaW9uOiA8IDUuMi4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4yXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfenN0ZF9pbml0aWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjEuMVxuZnVuY3Rpb24gY2FtbF96c3RkX2luaXRpYWxpemUodW5pdCkge1xuICBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG4gIHJldHVybiAxXG59XG5cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBXZWFrIEFQSVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxudmFyIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ID0gM1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfZGF0YV9vZmZzZXQgPSAyXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2tleSh4LCBpLCB2KSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIGlmICh2IGluc3RhbmNlb2YgT2JqZWN0ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKHhbMV0ucmVnaXN0ZXIpIHhbMV0ucmVnaXN0ZXIodiwgdW5kZWZpbmVkLCB2KTtcbiAgICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSBuZXcgZ2xvYmFsVGhpcy5XZWFrUmVmKHYpO1xuICB9XG4gIGVsc2UgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdjtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2tleSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYgJiYgeFsxXS51bnJlZ2lzdGVyKSB7XG4gICAgdmFyIG9sZCA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXS5kZXJlZigpO1xuICAgIGlmKG9sZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgY291bnQgPSAwXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKXtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKVxuICAgICAgICAgIGlmKGtleSA9PT0gb2xkKSBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZihjb3VudCA9PSAxKSB4WzFdLnVucmVnaXN0ZXIob2xkKTtcbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMFxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19jcmVhdGUsIGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NyZWF0ZSAobikge1xuICB2YXIgeCA9IGNhbWxfd2Vha19jcmVhdGUobik7XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF93ZWFrX2NyZWF0ZSAobikge1xuICBpZiAobiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgdmFyIHggPSBbMjUxLFwiY2FtbF9lcGhlX2xpc3RfaGVhZFwiXTtcbiAgeC5sZW5ndGggPSBjYW1sX2VwaGVfa2V5X29mZnNldCArIG47XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9zZXRfa2V5LCBjYW1sX2VwaGVfdW5zZXRfa2V5XG5mdW5jdGlvbiBjYW1sX3dlYWtfc2V0KHgsIGksIHYpIHtcbiAgaWYodiA9PSAwKSBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsaSlcbiAgZWxzZSBjYW1sX2VwaGVfc2V0X2tleSh4LGksdlsxXSlcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF93ZWFrX2dldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9rZXkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2tleVwiKTtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSBdO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgcmV0dXJuICh3ZWFrPT09dW5kZWZpbmVkKT8wOlswLCB3ZWFrXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfa2V5LGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXAsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF93ZWFrX2dldF9jb3B5XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmdldF9jb3B5XCIpO1xuICB2YXIgeSA9IGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpO1xuICBpZiAoeSA9PT0gMCkgcmV0dXJuIHk7XG4gIHZhciB6ID0geVsxXTtcbiAgaWYgKHogaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeildO1xuICByZXR1cm4geTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2tleSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9BbGlhczogY2FtbF93ZWFrX2NoZWNrXG5mdW5jdGlvbiBjYW1sX2VwaGVfY2hlY2tfa2V5KHgsIGkpIHtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV07XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB3ZWFrID0gd2Vhay5kZXJlZigpO1xuICBpZih3ZWFrPT09dW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2tleVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9BbGlhczogY2FtbF93ZWFrX2JsaXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2tleShhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIC8vIG1pbnVzIG9uZSBiZWNhdXNlIGNhbWxfYXJyYXlfYmxpdCB3b3JrcyBvbiBvY2FtbCBhcnJheVxuICBjYW1sX2FycmF5X2JsaXQoYTEsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTEgLSAxLFxuICAgICAgICAgICAgICAgICAgYTIsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTIgLSAxLFxuICAgICAgICAgICAgICAgICAgbGVuKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX3NldF9kYXRhLCBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfZGF0YShzcmMsIGRzdCl7XG4gIHZhciBuID0gc3JjW2NhbWxfZXBoZV9kYXRhX29mZnNldF07XG4gIGlmKG4gPT09IHVuZGVmaW5lZCkgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoZHN0KTtcbiAgZWxzZSBjYW1sX2VwaGVfc2V0X2RhdGEoZHN0LCBuKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF1dO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXBcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5KHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGEoeCwgZGF0YSl7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoISAoeFsxXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkpKSB7XG4gICAgICB4WzFdID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKCkgeyBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KSB9KTtcbiAgICAgIC8vcmVnaXN0ZXIgYWxsIGtleXNcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKTtcbiAgICAgICAgICBpZihrZXkpIHhbMV0ucmVnaXN0ZXIoa2V5LCB1bmRlZmluZWQsIGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gZGF0YTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KXtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZih4WzFdIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSl7XG4gICAgICAvL3VucmVnaXN0ZXIgYWxsIGtleXNcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKTtcbiAgICAgICAgICBpZihrZXkpIHhbMV0udW5yZWdpc3RlcihrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuIiwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2ModHJ1ZSk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2Z1bGxfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfZnVsbF9tYWpvcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYygpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19jb21wYWN0aW9uXG5mdW5jdGlvbiBjYW1sX2djX2NvbXBhY3Rpb24oKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvdW50ZXJzXG5mdW5jdGlvbiBjYW1sX2djX2NvdW50ZXJzKCkgeyByZXR1cm4gWzI1NCwwLDAsMF0gfVxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG4vL1ZlcnNpb246ID49IDQuMTJcbmZ1bmN0aW9uIGNhbWxfZ2NfcXVpY2tfc3RhdCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbi8vVmVyc2lvbjogPCA0LjEyXG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3N0YXRcbi8vUmVxdWlyZXM6IGNhbWxfZ2NfcXVpY2tfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19zdGF0KCkge1xuICByZXR1cm4gY2FtbF9nY19xdWlja19zdGF0KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc2V0XG5mdW5jdGlvbiBjYW1sX2djX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19nZXRcbmZ1bmN0aW9uIGNhbWxfZ2NfZ2V0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zZXRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXIgKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXG52YXIgYWxsX2ZpbmFsaXplcnMgPSBuZXcgZ2xvYmFsVGhpcy5TZXQoKVxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSAoY2IsIGEpIHtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBhIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgdmFyIHggPSBuZXcgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbiAoeCl7YWxsX2ZpbmFsaXplcnMuZGVsZXRlKHgpOyBjYigwKTsgcmV0dXJuO30pO1xuICAgIHgucmVnaXN0ZXIoYSx4KTtcbiAgICBhbGxfZmluYWxpemVycy5hZGQoeCk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVsZWFzZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWxlYXNlICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RhcnQocmF0ZSxzdGFja19zaXplLHRyYWNrZXIpe1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0b3BcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdG9wKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9kaXNjYXJkXG5mdW5jdGlvbiBjYW1sX21lbXByb2ZfZGlzY2FyZCh0KSB7IHJldHVybiAwIH1cblxuLy9Qcm92aWRlczogY2FtbF9ldmVudGxvZ19yZXN1bWVcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcmVzdW1lKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ldmVudGxvZ19wYXVzZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19wYXVzZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudFxuZnVuY3Rpb24gY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50KHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19tYWpvcl9zbGljZVxuZnVuY3Rpb24gY2FtbF9nY19tYWpvcl9zbGljZSh3b3JrKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3Jfd29yZHNcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3Jfd29yZHModW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9taW5vcl9mcmVlXG5mdW5jdGlvbiBjYW1sX2dldF9taW5vcl9mcmVlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfYnVja2V0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9idWNrZXQobikgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9jcmVkaXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2NyZWRpdChuKSB7IHJldHVybiAwOyB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEZvcm1hdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2Zvcm1hdFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2Zvcm1hdCAoZm10KSB7XG4gIGZtdCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KTtcbiAgdmFyIGxlbiA9IGZtdC5sZW5ndGg7XG4gIGlmIChsZW4gPiAzMSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZm9ybWF0X2ludDogZm9ybWF0IHRvbyBsb25nXCIpO1xuICB2YXIgZiA9XG4gICAgICB7IGp1c3RpZnk6JysnLCBzaWduc3R5bGU6Jy0nLCBmaWxsZXI6JyAnLCBhbHRlcm5hdGU6ZmFsc2UsXG4gICAgICAgIGJhc2U6MCwgc2lnbmVkY29udjpmYWxzZSwgd2lkdGg6MCwgdXBwZXJjYXNlOmZhbHNlLFxuICAgICAgICBzaWduOjEsIHByZWM6LTEsIGNvbnY6J2YnIH07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGZtdC5jaGFyQXQoaSk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSAnLSc6XG4gICAgICBmLmp1c3RpZnkgPSAnLSc7IGJyZWFrO1xuICAgIGNhc2UgJysnOiBjYXNlICcgJzpcbiAgICAgIGYuc2lnbnN0eWxlID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnMCc6XG4gICAgICBmLmZpbGxlciA9ICcwJzsgYnJlYWs7XG4gICAgY2FzZSAnIyc6XG4gICAgICBmLmFsdGVybmF0ZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzpcbiAgICBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzpcbiAgICAgIGYud2lkdGggPSAwO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLndpZHRoID0gZi53aWR0aCAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgICBicmVhaztcbiAgICBjYXNlICcuJzpcbiAgICAgIGYucHJlYyA9IDA7XG4gICAgICBpKys7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYucHJlYyA9IGYucHJlYyAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgY2FzZSAnZCc6IGNhc2UgJ2knOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlICd1JzpcbiAgICAgIGYuYmFzZSA9IDEwOyBicmVhaztcbiAgICBjYXNlICd4JzpcbiAgICAgIGYuYmFzZSA9IDE2OyBicmVhaztcbiAgICBjYXNlICdYJzpcbiAgICAgIGYuYmFzZSA9IDE2OyBmLnVwcGVyY2FzZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJ28nOlxuICAgICAgZi5iYXNlID0gODsgYnJlYWs7XG4gICAgY2FzZSAnZSc6IGNhc2UgJ2YnOiBjYXNlICdnJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYuY29udiA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJ0UnOiBjYXNlICdGJzogY2FzZSAnRyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLnVwcGVyY2FzZSA9IHRydWU7XG4gICAgICBmLmNvbnYgPSBjLnRvTG93ZXJDYXNlICgpOyBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcmF3YnVmZmVyKSB7XG4gIGlmIChmLnVwcGVyY2FzZSkgcmF3YnVmZmVyID0gcmF3YnVmZmVyLnRvVXBwZXJDYXNlKCk7XG4gIHZhciBsZW4gPSByYXdidWZmZXIubGVuZ3RoO1xuICAvKiBBZGp1c3QgbGVuIHRvIHJlZmxlY3QgYWRkaXRpb25hbCBjaGFycyAoc2lnbiwgZXRjKSAqL1xuICBpZiAoZi5zaWduZWRjb252ICYmIChmLnNpZ24gPCAwIHx8IGYuc2lnbnN0eWxlICE9ICctJykpIGxlbisrO1xuICBpZiAoZi5hbHRlcm5hdGUpIHtcbiAgICBpZiAoZi5iYXNlID09IDgpIGxlbiArPSAxO1xuICAgIGlmIChmLmJhc2UgPT0gMTYpIGxlbiArPSAyO1xuICB9XG4gIC8qIERvIHRoZSBmb3JtYXR0aW5nICovXG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnICcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgaWYgKGYuc2lnbmVkY29udikge1xuICAgIGlmIChmLnNpZ24gPCAwKSBidWZmZXIgKz0gJy0nO1xuICAgIGVsc2UgaWYgKGYuc2lnbnN0eWxlICE9ICctJykgYnVmZmVyICs9IGYuc2lnbnN0eWxlO1xuICB9XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gOCkgYnVmZmVyICs9ICcwJztcbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSAxNikgYnVmZmVyICs9IGYudXBwZXJjYXNlP1wiMFhcIjpcIjB4XCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcwJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJzAnO1xuICBidWZmZXIgKz0gcmF3YnVmZmVyO1xuICBpZiAoZi5qdXN0aWZ5ID09ICctJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhidWZmZXIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZVxudmFyIGNhbWxfZ3Jfc3RhdGU7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfZ2V0KCkge1xuICBpZihjYW1sX2dyX3N0YXRlKSB7XG4gICAgcmV0dXJuIGNhbWxfZ3Jfc3RhdGU7XG4gIH1cbiAgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLGNhbWxfbmFtZWRfdmFsdWUoXCJHcmFwaGljcy5HcmFwaGljX2ZhaWx1cmVcIiksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJOb3QgaW5pdGlhbGl6ZWRcIildKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlLGNhbWxfZ3Jfc3RhdGVfaW5pdFxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KSB7XG4gIGNhbWxfZ3Jfc3RhdGU9Y3R4O1xuICBjYW1sX2dyX3N0YXRlX2luaXQoKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fZ3JhcGgoaW5mbyl7XG4gIHZhciBpbmZvID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoaW5mbyk7XG4gIGZ1bmN0aW9uIGdldChuYW1lKXtcbiAgICB2YXIgcmVzID0gaW5mby5tYXRjaChcIihefCwpICpcIituYW1lK1wiICo9ICooW2EtekEtWjAtOV9dKykgKigsfCQpXCIpO1xuICAgIGlmKHJlcykgcmV0dXJuIHJlc1syXTtcbiAgfVxuICB2YXIgc3BlY3MgPSBbXTtcbiAgaWYoIShpbmZvPT1cIlwiKSkgc3BlY3MucHVzaChpbmZvKTtcbiAgdmFyIHRhcmdldCA9IGdldChcInRhcmdldFwiKTtcbiAgaWYoIXRhcmdldCkgdGFyZ2V0PVwiXCI7XG4gIHZhciBzdGF0dXMgPSBnZXQoXCJzdGF0dXNcIik7XG4gIGlmKCFzdGF0dXMpIHNwZWNzLnB1c2goXCJzdGF0dXM9MVwiKVxuXG4gIHZhciB3ID0gZ2V0KFwid2lkdGhcIik7XG4gIHcgPSB3P3BhcnNlSW50KHcpOjIwMDtcbiAgc3BlY3MucHVzaChcIndpZHRoPVwiK3cpO1xuXG4gIHZhciBoID0gZ2V0KFwiaGVpZ2h0XCIpO1xuICBoID0gaD9wYXJzZUludChoKToyMDA7XG4gIHNwZWNzLnB1c2goXCJoZWlnaHQ9XCIraCk7XG5cbiAgdmFyIHdpbiA9IGdsb2JhbFRoaXMub3BlbihcImFib3V0OmJsYW5rXCIsdGFyZ2V0LHNwZWNzLmpvaW4oXCIsXCIpKTtcbiAgaWYoIXdpbikge2NhbWxfZmFpbHdpdGgoXCJHcmFwaGljcy5vcGVuX2dyYXBoOiBjYW5ub3Qgb3BlbiB0aGUgd2luZG93XCIpfVxuICB2YXIgZG9jID0gd2luLmRvY3VtZW50O1xuICB2YXIgY2FudmFzID0gZG9jLmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNhbnZhcy53aWR0aCA9IHc7XG4gIGNhbnZhcy5oZWlnaHQgPSBoO1xuICB2YXIgY3R4ID0gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCk7XG4gIGN0eC5zZXRfdGl0bGUgPSBmdW5jdGlvbiAodGl0bGUpIHtcbiAgICBkb2MudGl0bGUgPSB0aXRsZTtcbiAgfTtcbiAgY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KTtcbiAgdmFyIGJvZHkgPSBkb2MuYm9keTtcbiAgYm9keS5zdHlsZS5tYXJnaW4gPSBcIjBweFwiO1xuICBib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2luaXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yLGNhbWxfZ3JfbW92ZXRvLGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aCxjYW1sX2dyX3NldF90ZXh0X3NpemUsY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2luaXQoKXtcbiAgY2FtbF9ncl9tb3ZldG8oY2FtbF9ncl9zdGF0ZS54LGNhbWxfZ3Jfc3RhdGUueSk7XG4gIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyhjYW1sX2dyX3N0YXRlLndpZHRoLGNhbWxfZ3Jfc3RhdGUuaGVpZ2h0KTtcbiAgY2FtbF9ncl9zZXRfbGluZV93aWR0aChjYW1sX2dyX3N0YXRlLmxpbmVfd2lkdGgpO1xuICBjYW1sX2dyX3NldF90ZXh0X3NpemUoY2FtbF9ncl9zdGF0ZS50ZXh0X3NpemUpO1xuICBjYW1sX2dyX3NldF9mb250KGNhbWxfZ3Jfc3RhdGUuZm9udCk7XG4gIGNhbWxfZ3Jfc2V0X2NvbG9yKGNhbWxfZ3Jfc3RhdGUuY29sb3IpO1xuICBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUoY2FtbF9ncl9zdGF0ZS50aXRsZSk7XG4gIC8vY2FtbF9ncl9yZXNpemVfd2luZG93IG1pZ2h0IHJlc2V0IHNvbWUgY2FudmFzJyBwcm9wZXJ0aWVzXG4gIGNhbWxfZ3Jfc3RhdGUuY29udGV4dC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpe1xuICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICBjYW52YXMgOiBjYW52YXMsXG4gICAgeCA6IDAsXG4gICAgeSA6IDAsXG4gICAgd2lkdGggOiB3LFxuICAgIGhlaWdodCA6IGgsXG4gICAgbGluZV93aWR0aCA6IDEsXG4gICAgZm9udCA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJmaXhlZFwiKSxcbiAgICB0ZXh0X3NpemUgOiAyNixcbiAgICBjb2xvciA6IDB4MDAwMDAwLFxuICAgIHRpdGxlIDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKVxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RvY19vZl9zdGF0ZVxuZnVuY3Rpb24gY2FtbF9ncl9kb2Nfb2Zfc3RhdGUoc3RhdGUpIHtcbiAgaWYoc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQpXG4gICAgcmV0dXJuIHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gMDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUobmFtZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50aXRsZSA9IG5hbWU7XG4gIHZhciBqc25hbWUgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYocy5zZXRfdGl0bGUpIHMuc2V0X3RpdGxlKGpzbmFtZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3codyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpXG4gIHMud2lkdGggPSB3O1xuICBzLmhlaWdodCA9IGg7XG4gIHMuY2FudmFzLndpZHRoID0gdztcbiAgcy5jYW52YXMuaGVpZ2h0ID0gaDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xlYXJfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NsZWFyX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSBzLndpZHRoO1xuICBzLmNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgLy8gIHMuY29udGV4dC5zdHJva2VSZWN0ICgwLiwgMC4sIHMud2lkdGgsIHMuaGVpZ2h0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy53aWR0aDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5oZWlnaHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9jb2xvcihjb2xvcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgZnVuY3Rpb24gY29udmVydChudW1iZXIpIHtcbiAgICB2YXIgc3RyID0gJycgKyBudW1iZXIudG9TdHJpbmcoMTYpO1xuICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgMikgc3RyID0gJzAnICsgc3RyO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgdmFyXG4gIHIgPSAoY29sb3IgPj4gMTYpICYgMHhmZixcbiAgZyA9IChjb2xvciA+PiA4KSAgJiAweGZmLFxuICBiID0gKGNvbG9yID4+IDApICAmIDB4ZmY7XG4gIHMuY29sb3I9Y29sb3I7XG4gIHZhciBjX3N0ciA9ICcjJyArIGNvbnZlcnQocikgKyBjb252ZXJ0KGcpICsgY29udmVydChiKTtcbiAgcy5jb250ZXh0LmZpbGxTdHlsZSA9ICAgY19zdHI7XG4gIHMuY29udGV4dC5zdHJva2VTdHlsZSA9IGNfc3RyO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcGxvdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcGxvdCh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgdmFyIGNvbG9yID0gcy5jb2xvcjtcbiAgZFswXSA9IChjb2xvciA+PiAxNikgJiAweGZmOyAvL3JcbiAgZFsxXSA9IChjb2xvciA+PiA4KSAgJiAweGZmLCAvL2dcbiAgZFsyXSA9IChjb2xvciA+PiAwKSAgJiAweGZmOyAvL2JcbiAgZFszXSA9IDB4RkY7IC8vYVxuICBzLng9eDtcbiAgcy55PXk7XG4gIHMuY29udGV4dC5wdXRJbWFnZURhdGEoaW0seCxzLmhlaWdodCAtIHkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9wb2ludF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcG9pbnRfY29sb3IoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0geSwxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHJldHVybiAoZFswXSA8PCAxNikgKyAoZFsxXSA8PCA4KSArIGRbMl07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21vdmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbW92ZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnhcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy55XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2xpbmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbGluZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMuY29udGV4dC5saW5lVG8oeCxzLmhlaWdodCAtIHkpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5zdHJva2VSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2FyY19hdXgoY3R4LGN4LGN5LHJ5LHJ4LGExLGEyKXtcbiAgd2hpbGUoYTE+YTIpIGEyKz0zNjA7XG4gIGExIC89IDE4MDtcbiAgYTIgLz0gMTgwO1xuICB2YXIgcm90ID0gMCx4UG9zLHlQb3MseFBvc19wcmV2LHlQb3NfcHJldjtcbiAgdmFyIHNwYWNlID0gMjtcbiAgdmFyIG51bSA9ICgoKGEyIC0gYTEpICogTWF0aC5QSSAqICgocngrcnkpLzIpKSAvIHNwYWNlKSB8IDA7XG4gIHZhciBkZWx0YSA9IChhMiAtIGExKSAqIE1hdGguUEkgLyBudW07XG4gIHZhciBpID0gYTEgKiBNYXRoLlBJO1xuICBmb3IgKHZhciBqPTA7ajw9bnVtO2orKyl7XG4gICAgeFBvcyA9IGN4IC0gKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB4UG9zID0geFBvcy50b0ZpeGVkKDIpO1xuICAgIHlQb3MgPSBjeSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeVBvcyA9IHlQb3MudG9GaXhlZCgyKTtcbiAgICBpZiAoaj09MCkge1xuICAgICAgY3R4Lm1vdmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9IGVsc2UgaWYgKHhQb3NfcHJldiE9eFBvcyB8fCB5UG9zX3ByZXYhPXlQb3Mpe1xuICAgICAgY3R4LmxpbmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9XG4gICAgeFBvc19wcmV2PXhQb3M7XG4gICAgeVBvc19wcmV2PXlQb3M7XG4gICAgaS09IGRlbHRhOy8vY2N3XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9saW5lX3dpZHRoKHcpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMubGluZV93aWR0aCA9IHc7XG4gIHMuY29udGV4dC5saW5lV2lkdGggPSB3XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5maWxsUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcG9seVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9wb2x5KGFyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIGZvcih2YXIgaSA9IDI7IGkgPCBhci5sZW5ndGg7IGkrKylcbiAgICBzLmNvbnRleHQubGluZVRvKGFyW2ldWzFdLHMuaGVpZ2h0IC0gYXJbaV1bMl0pO1xuICBzLmNvbnRleHQubGluZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cihzdHIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBtID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KHN0cik7XG4gIHZhciBkeCA9IG0ud2lkdGg7XG4gIHMuY29udGV4dC5maWxsVGV4dChzdHIscy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy54ICs9IGR4IHwgMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfY2hhcihjKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyaW5nKHN0cil7XG4gIGNhbWxfZ3JfZHJhd19zdHIoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3RyKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2ZvbnQoZil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5mb250ID0gZjtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShzaXplKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRleHRfc2l6ZSA9IHNpemU7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfdGV4dF9zaXplKHR4dCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIHcgPSBzLmNvbnRleHQubWVhc3VyZVRleHQoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcodHh0KSkud2lkdGg7XG4gIHJldHVybiBbMCx3LHMudGV4dF9zaXplXTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21ha2VfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21ha2VfaW1hZ2UoYXJyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaCA9IGFyci5sZW5ndGggLSAxIDtcbiAgdmFyIHcgPSBhcnJbMV0ubGVuZ3RoIC0gMTtcbiAgdmFyIGltID0gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh3LGgpO1xuICBmb3IodmFyIGk9MDtpPGg7aSsrKXtcbiAgICBmb3IodmFyIGo9MDtqPHc7aisrKXtcbiAgICAgIHZhciBjID0gYXJyW2krMV1baisxXTtcbiAgICAgIHZhciBvID0gaSoodyo0KSArIChqICogNCk7XG4gICAgICBpZihjID09IC0xKSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gYyA+PiAxNiAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gYyA+PiAgOCAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gYyA+PiAgMCAmIDBYZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2R1bXBfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2R1bXBfaW1hZ2UoaW0pe1xuICB2YXIgZGF0YSA9IFswXVxuICBmb3IodmFyIGk9MDsgaTxpbS5oZWlnaHQ7aSsrKXtcbiAgICBkYXRhW2krMV0gPSBbMF1cbiAgICBmb3IodmFyIGo9MDsgajxpbS53aWR0aDtqKyspe1xuICAgICAgdmFyIG8gPSBpKihpbS53aWR0aCo0KSArIChqICogNCksXG4gICAgICAgICAgciA9IGltLmRhdGFbbyswXSxcbiAgICAgICAgICBnID0gaW0uZGF0YVtvKzFdLFxuICAgICAgICAgIGIgPSBpbS5kYXRhW28rMl07XG4gICAgICBkYXRhW2krMV1baisxXSA9IChyIDw8IDE2KSArIChnIDw8IDgpICsgYlxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgaWYoIWltLmltYWdlKSB7XG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gICAgY2FudmFzLmdldENvbnRleHQoXCIyZFwiKS5wdXRJbWFnZURhdGEoaW0sMCwwKTtcbiAgICB2YXIgaW1hZ2UgPSBuZXcgZ2xvYmFsVGhpcy5JbWFnZSgpO1xuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICAgICAgaW0uaW1hZ2UgPSBpbWFnZTtcbiAgICB9XG4gICAgaW1hZ2Uuc3JjID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcbiAgfSBlbHNlIHtcbiAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltLmltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3JlYXRlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jcmVhdGVfaW1hZ2UoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh4LHkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9ibGl0X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9ibGl0X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltMiA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHksaW0ud2lkdGgsaW0uaGVpZ2h0KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbTIuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgIGltLmRhdGFbaV0gPSBpbTIuZGF0YVtpXTtcbiAgICBpbS5kYXRhW2krMV0gPSBpbTIuZGF0YVtpKzFdO1xuICAgIGltLmRhdGFbaSsyXSA9IGltMi5kYXRhW2krMl07XG4gICAgaW0uZGF0YVtpKzNdID0gaW0yLmRhdGFbaSszXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9faGFuZGxlclxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19oYW5kbGVyKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19zaWduYWwoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2FpdF9ldmVudFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93YWl0X2V2ZW50KF9ldmwpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93YWl0X2V2ZW50IG5vdCBJbXBsZW1lbnRlZDogdXNlIEdyYXBoaWNzX2pzIGluc3RlYWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3luY2hyb25pemVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3luY2hyb25pemUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9zeW5jaHJvbml6ZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3JlbWVtYmVyX21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVtZW1iZXJfbW9kZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3JlbWVtYmVyX21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kaXNwbGF5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfZGlzcGxheV9tb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9kaXNwbGF5X21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dpbmRvd19pZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93aW5kb3dfaWQoYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93aW5kb3dfaWQgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fc3Vid2luZG93KGEsYixjLGQpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3coYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgbGlicmFyeVxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEpzbGliOiBjb2RlIHNwZWNpZmljIHRvIEpzX29mX29jYW1sXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb25faWUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfb25faWUgKCkge1xuICB2YXIgdWEgPVxuICAgICAgKGdsb2JhbFRoaXMubmF2aWdhdG9yJiZnbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQpXG4gICAgICA/Z2xvYmFsVGhpcy5uYXZpZ2F0b3IudXNlckFnZW50OlwiXCI7XG4gIHJldHVybiB1YS5pbmRleE9mKFwiTVNJRVwiKSAhPSAtMSAmJiB1YS5pbmRleE9mKFwiT3BlcmFcIikgIT0gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VzY2FwZSBjb25zdCAoY29uc3QpXG52YXIgY2FtbF9qc19yZWdleHBzID0geyBhbXA6LyYvZywgbHQ6LzwvZywgcXVvdDovXFxcIi9nLCBhbGw6L1smPFxcXCJdLyB9O1xuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VzY2FwZSAocykge1xuICBpZiAoIWNhbWxfanNfcmVnZXhwcy5hbGwudGVzdChzKSkgcmV0dXJuIHM7XG4gIHJldHVybiBzLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmFtcCwgXCImYW1wO1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5sdCwgXCImbHQ7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLnF1b3QsIFwiJnF1b3Q7XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZW50aXRpZXNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lbnRpdGllcyhzKSB7XG4gIHZhciBlbnRpdHkgPSAvXiYjP1swLTlhLXpBLVpdKzskL1xuICBpZihzLm1hdGNoKGVudGl0eSkpXG4gIHtcbiAgICB2YXIgc3RyLCB0ZW1wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICAgIHRlbXAuaW5uZXJIVE1MPSBzO1xuICAgIHN0cj0gdGVtcC50ZXh0Q29udGVudCB8fCB0ZW1wLmlubmVyVGV4dDtcbiAgICB0ZW1wPW51bGw7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiSW52YWxpZCBlbnRpdHkgXCIgKyBzKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldF9jb25zb2xlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX2dldF9jb25zb2xlICgpIHtcbiAgdmFyIGMgPSBjb25zb2xlO1xuICB2YXIgbSA9IFtcImxvZ1wiLCBcImRlYnVnXCIsIFwiaW5mb1wiLCBcIndhcm5cIiwgXCJlcnJvclwiLCBcImFzc2VydFwiLCBcImRpclwiLCBcImRpcnhtbFwiLFxuICAgICAgICAgICBcInRyYWNlXCIsIFwiZ3JvdXBcIiwgXCJncm91cENvbGxhcHNlZFwiLCBcImdyb3VwRW5kXCIsIFwidGltZVwiLCBcInRpbWVFbmRcIl07XG4gIGZ1bmN0aW9uIGYgKCkge31cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtLmxlbmd0aDsgaSsrKSBpZiAoIWNbbVtpXV0pIGNbbVtpXV09ZjtcbiAgcmV0dXJuIGM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlKHVuaXQpe1xuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5YTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuWE1MSHR0cFJlcXVlc3QgfSBjYXRjaCAoZSkgeyB9O1xuICB9XG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNc3htbDIuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwzLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gIH1cbiAgY2FtbF9mYWlsd2l0aChcIkNhbm5vdCBjcmVhdGUgYSBYTUxIdHRwUmVxdWVzdFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIGV4bi5qc19lcnJvcjsgfVxuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBsZXhpbmcuYyA2MDQ1IDIwMDQtMDEtMDEgMTY6NDI6NDNaIGRvbGlnZXogJCAqL1xuXG4vKiBUaGUgdGFibGUtZHJpdmVuIGF1dG9tYXRvbiBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4LiAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9sZXhfYXJyYXkocykge1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTtcbiAgdmFyIGwgPSBzLmxlbmd0aCAvIDI7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKylcbiAgICBhW2ldID0gKHMuY2hhckNvZGVBdCgyICogaSkgfCAocy5jaGFyQ29kZUF0KDIgKiBpICsgMSkgPDwgOCkpIDw8IDE2ID4+IDE2O1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheSwgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxleGJ1Zikge1xuICB2YXIgbGV4X2J1ZmZlciA9IDI7XG4gIHZhciBsZXhfYnVmZmVyX2xlbiA9IDM7XG4gIHZhciBsZXhfc3RhcnRfcG9zID0gNTtcbiAgdmFyIGxleF9jdXJyX3BvcyA9IDY7XG4gIHZhciBsZXhfbGFzdF9wb3MgPSA3O1xuICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gODtcbiAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDk7XG4gIHZhciBsZXhfYmFzZSA9IDE7XG4gIHZhciBsZXhfYmFja3RyayA9IDI7XG4gIHZhciBsZXhfZGVmYXVsdCA9IDM7XG4gIHZhciBsZXhfdHJhbnMgPSA0O1xuICB2YXIgbGV4X2NoZWNrID0gNTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSByZXR1cm4gLWJhc2UtMTtcbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKXtcbiAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKVxuICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2VcbiAgICAgICAgYyA9IDI1NjtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovXG4gICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdICsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIGlmICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0ZSlcbiAgICAgIHN0YXRlID0gdGJsLmxleF90cmFuc1tiYXNlICsgY107XG4gICAgZWxzZVxuICAgICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09IC0xKVxuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwibGV4aW5nOiBlbXB0eSB0b2tlblwiKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dO1xuICAgIH1lbHNle1xuICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzXG4gICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpXG4gICAgICAqL1xuICAgICAgaWYgKGMgPT0gMjU2KSBsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7XG4gICAgfVxuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qIE5ldyBsZXhlciBlbmdpbmUsIHdpdGggbWVtb3J5IG9mIHBvc2l0aW9ucyAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLy9Qcm92aWRlczogY2FtbF9uZXdfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl9tZW0ocywgaSwgbWVtLCBjdXJyX3Bvcykge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChkc3QgPT0gMHhmZikgcmV0dXJuO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gY3Vycl9wb3M7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9sZXhfcnVuX3RhZyhzLCBpLCBtZW0pIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybiA7XG4gICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChzcmMgPT0gMHhmZilcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSAtMTtcbiAgICBlbHNlXG4gICAgICBtZW0gW2RzdCArIDFdID0gbWVtIFtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX25ld19sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxleGJ1Zikge1xuICB2YXIgbGV4X2J1ZmZlciA9IDI7XG4gIHZhciBsZXhfYnVmZmVyX2xlbiA9IDM7XG4gIHZhciBsZXhfc3RhcnRfcG9zID0gNTtcbiAgdmFyIGxleF9jdXJyX3BvcyA9IDY7XG4gIHZhciBsZXhfbGFzdF9wb3MgPSA3O1xuICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gODtcbiAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDk7XG4gIHZhciBsZXhfbWVtID0gMTA7XG4gIHZhciBsZXhfYmFzZSA9IDE7XG4gIHZhciBsZXhfYmFja3RyayA9IDI7XG4gIHZhciBsZXhfZGVmYXVsdCA9IDM7XG4gIHZhciBsZXhfdHJhbnMgPSA0O1xuICB2YXIgbGV4X2NoZWNrID0gNTtcbiAgdmFyIGxleF9iYXNlX2NvZGUgPSA2O1xuICB2YXIgbGV4X2JhY2t0cmtfY29kZSA9IDc7XG4gIHZhciBsZXhfZGVmYXVsdF9jb2RlID0gODtcbiAgdmFyIGxleF90cmFuc19jb2RlID0gOTtcbiAgdmFyIGxleF9jaGVja19jb2RlID0gMTA7XG4gIHZhciBsZXhfY29kZSA9IDExO1xuXG4gIGlmICghdGJsLmxleF9kZWZhdWx0KSB7XG4gICAgdGJsLmxleF9iYXNlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV0pO1xuICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF0pO1xuICB9XG4gIGlmICghdGJsLmxleF9kZWZhdWx0X2NvZGUpIHtcbiAgICB0YmwubGV4X2Jhc2VfY29kZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VfY29kZV0pO1xuICAgIHRibC5sZXhfYmFja3Rya19jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya19jb2RlXSk7XG4gICAgdGJsLmxleF9jaGVja19jb2RlID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja19jb2RlXSk7XG4gICAgdGJsLmxleF90cmFuc19jb2RlID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc19jb2RlXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0X2NvZGUgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0X2NvZGVdKTtcbiAgfVxuICBpZiAodGJsLmxleF9jb2RlID09IG51bGwpIHRibC5sZXhfY29kZSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcodGJsW2xleF9jb2RlXSk7XG5cbiAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMobGV4YnVmW2xleF9idWZmZXJdKTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvcig7Oykge1xuICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqL1xuICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTtcbiAgICBpZiAoYmFzZSA8IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2Jhc2VfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgcmV0dXJuIC1iYXNlLTE7XG4gICAgfVxuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2JhY2t0cmtfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICB2YXIgcHN0YXRlID0gc3RhdGUgO1xuICAgIGlmICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0ZSlcbiAgICAgIHN0YXRlID0gdGJsLmxleF90cmFuc1tiYXNlICsgY107XG4gICAgZWxzZVxuICAgICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09IC0xKVxuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwibGV4aW5nOiBlbXB0eSB0b2tlblwiKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dO1xuICAgIH1lbHNle1xuICAgICAgLyogSWYgc29tZSB0cmFuc2l0aW9uLCBnZXQgYW5kIHBlcmZvcm0gbWVtb3J5IG1vdmVzICovXG4gICAgICB2YXIgYmFzZV9jb2RlID0gdGJsLmxleF9iYXNlX2NvZGVbcHN0YXRlXSwgcGNfb2ZmO1xuICAgICAgaWYgKHRibC5sZXhfY2hlY2tfY29kZVtiYXNlX2NvZGUgKyBjXSA9PSBwc3RhdGUpXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfdHJhbnNfY29kZVtiYXNlX2NvZGUgKyBjXTtcbiAgICAgIGVsc2VcbiAgICAgICAgcGNfb2ZmID0gdGJsLmxleF9kZWZhdWx0X2NvZGVbcHN0YXRlXTtcbiAgICAgIGlmIChwY19vZmYgPiAwKVxuICAgICAgICBjYW1sX2xleF9ydW5fbWVtXG4gICAgICAodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSwgbGV4YnVmW2xleF9jdXJyX3Bvc10pO1xuICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzXG4gICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpXG4gICAgICAqL1xuICAgICAgaWYgKGMgPT0gMjU2KSBsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7XG4gICAgfVxuICB9XG59XG4iLCJcbi8vUHJvdmlkZXM6IGNhbWxfbHhtX25leHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfbGVmdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF94b3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X211bFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXRfMVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmV3X3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9seG1fbmV4dCh2KSB7XG4gIGZ1bmN0aW9uIHNoaWZ0X2woeCwgayl7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfc2hpZnRfbGVmdCh4LGspO1xuICB9XG4gIGZ1bmN0aW9uIHNoaWZ0X3IoeCwgayl7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCxrKTtcbiAgfVxuICBmdW5jdGlvbiBvcihhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9vcihhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIHhvcihhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF94b3IoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiBhZGQoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfYWRkKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gbXVsKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIHJvdGwoeCwgaykge1xuICAgIHJldHVybiBvcihzaGlmdF9sKHgsayksc2hpZnRfciAoeCwgNjQgLSBrKSk7XG4gIH1cbiAgZnVuY3Rpb24gZ2V0KGEsIGkpIHtcbiAgICByZXR1cm4gY2FtbF9iYV9nZXRfMShhLCBpKTtcbiAgfVxuICBmdW5jdGlvbiBzZXQoYSwgaSwgeCkge1xuICAgIHJldHVybiBjYW1sX2JhX3NldF8xKGEsIGksIHgpO1xuICB9XG4gIHZhciBNID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmcoY2FtbF9uZXdfc3RyaW5nKFwiMHhkMTM0MjU0M2RlODJlZjk1XCIpKTtcbiAgdmFyIGRhYmEgPSBjYW1sX2ludDY0X29mX3N0cmluZyhjYW1sX25ld19zdHJpbmcoXCIweGRhYmEwYjZlYjA5MzIyZTNcIikpO1xuICB2YXIgeiwgcTAsIHExO1xuICB2YXIgc3QgPSB2O1xuICB2YXIgYSA9IGdldChzdCwwKTtcbiAgdmFyIHMgPSBnZXQoc3QsMSk7XG4gIHZhciB4MCA9IGdldChzdCwyKTtcbiAgdmFyIHgxID0gZ2V0KHN0LDMpO1xuICAvKiBDb21iaW5pbmcgb3BlcmF0aW9uICovXG4gIHogPSBhZGQocywgeDApO1xuICAvKiBNaXhpbmcgZnVuY3Rpb24gKi9cbiAgeiA9IG11bCh4b3IoeixzaGlmdF9yKHosMzIpKSwgZGFiYSk7XG4gIHogPSBtdWwoeG9yKHosc2hpZnRfcih6LDMyKSksIGRhYmEpO1xuICB6ID0geG9yKHosc2hpZnRfcih6LDMyKSk7XG4gIC8qIExDRyB1cGRhdGUgKi9cbiAgc2V0KHN0LCAxLCBhZGQgKG11bChzLE0pLCBhKSk7XG4gIC8qIFhCRyB1cGRhdGUgKi9cbiAgdmFyIHEwID0geDBcbiAgdmFyIHExID0geDFcbiAgcTEgPSB4b3IocTEscTApO1xuICBxMCA9IHJvdGwocTAsIDI0KTtcbiAgcTAgPSB4b3IoeG9yKHEwLCBxMSksIChzaGlmdF9sKHExLDE2KSkpO1xuICBxMSA9IHJvdGwocTEsIDM3KTtcbiAgc2V0KHN0LCAyLCBxMCk7XG4gIHNldChzdCwgMywgcTEpO1xuICAvKiBSZXR1cm4gcmVzdWx0ICovXG4gIHJldHVybiB6O1xufVxuIiwiLy9Qcm92aWRlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dFxudmFyIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQgXG4vL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyXG52YXIgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyclxuXG4vL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYmVmb3JlX3Rlc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIsIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXRcbmZ1bmN0aW9uIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdCAodm91dHB1dCwgdnN0ZG91dCwgdnN0ZGVycil7XG4gIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIgPSBjYW1sX21sX2NoYW5uZWxzW3ZzdGRlcnJdO1xuICBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0ID0gY2FtbF9tbF9jaGFubmVsc1t2c3Rkb3V0XTtcbiAgdmFyIG91dHB1dCA9IGNhbWxfbWxfY2hhbm5lbHNbdm91dHB1dF07XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZG91dF0gPSBvdXRwdXQ7XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZGVycl0gPSBvdXRwdXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYWZ0ZXJfdGVzdFxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciwgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dFxuZnVuY3Rpb24gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3QgKHZzdGRvdXQsIHZzdGRlcnIpe1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRvdXRdID0gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dDtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3RkZXJyXSA9IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnI7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfb3V0X2NoYW5uZWxfcG9zX2ZkXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX291dF9jaGFubmVsX3Bvc19mZChjaGFuKXtcbiAgdmFyIGluZm8gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5dO1xuICByZXR1cm4gaW5mby5vZmZzZXRcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBwYXJzaW5nLmMgODk4MyAyMDA4LTA4LTA2IDA5OjM4OjI1WiB4bGVyb3kgJCAqL1xuXG4vKiBUaGUgUERBIGF1dG9tYXRvbiBmb3IgcGFyc2VycyBnZW5lcmF0ZWQgYnkgY2FtbHlhY2MgKi9cblxuLyogVGhlIHB1c2hkb3duIGF1dG9tYXRhICovXG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VyX3RyYWNlXG52YXIgY2FtbF9wYXJzZXJfdHJhY2UgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9sZXhfYXJyYXksIGNhbWxfcGFyc2VyX3RyYWNlLGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMsIGVudiwgY21kLCBhcmcpXG57XG4gIHZhciBFUlJDT0RFID0gMjU2O1xuXG4gIC8vdmFyIFNUQVJUID0gMDtcbiAgLy92YXIgVE9LRU5fUkVBRCA9IDE7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8xID0gMjtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzIgPSAzO1xuICAvL3ZhciBTRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQgPSA0O1xuICAvL3ZhciBFUlJPUl9ERVRFQ1RFRCA9IDU7XG4gIHZhciBsb29wID0gNjtcbiAgdmFyIHRlc3RzaGlmdCA9IDc7XG4gIHZhciBzaGlmdCA9IDg7XG4gIHZhciBzaGlmdF9yZWNvdmVyID0gOTtcbiAgdmFyIHJlZHVjZSA9IDEwO1xuXG4gIHZhciBSRUFEX1RPS0VOID0gMDtcbiAgdmFyIFJBSVNFX1BBUlNFX0VSUk9SID0gMTtcbiAgdmFyIEdST1dfU1RBQ0tTXzEgPSAyO1xuICB2YXIgR1JPV19TVEFDS1NfMiA9IDM7XG4gIHZhciBDT01QVVRFX1NFTUFOVElDX0FDVElPTiA9IDQ7XG4gIHZhciBDQUxMX0VSUk9SX0ZVTkNUSU9OID0gNTtcblxuICB2YXIgZW52X3Nfc3RhY2sgPSAxO1xuICB2YXIgZW52X3Zfc3RhY2sgPSAyO1xuICB2YXIgZW52X3N5bWJfc3RhcnRfc3RhY2sgPSAzO1xuICB2YXIgZW52X3N5bWJfZW5kX3N0YWNrID0gNDtcbiAgdmFyIGVudl9zdGFja3NpemUgPSA1O1xuICB2YXIgZW52X3N0YWNrYmFzZSA9IDY7XG4gIHZhciBlbnZfY3Vycl9jaGFyID0gNztcbiAgdmFyIGVudl9sdmFsID0gODtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0ID0gOTtcbiAgdmFyIGVudl9zeW1iX2VuZCA9IDEwO1xuICB2YXIgZW52X2FzcCA9IDExO1xuICB2YXIgZW52X3J1bGVfbGVuID0gMTI7XG4gIHZhciBlbnZfcnVsZV9udW1iZXIgPSAxMztcbiAgdmFyIGVudl9zcCA9IDE0O1xuICB2YXIgZW52X3N0YXRlID0gMTU7XG4gIHZhciBlbnZfZXJyZmxhZyA9IDE2O1xuXG4gIC8vIHZhciBfdGJsX2FjdGlvbnMgPSAxO1xuICB2YXIgdGJsX3RyYW5zbF9jb25zdCA9IDI7XG4gIHZhciB0YmxfdHJhbnNsX2Jsb2NrID0gMztcbiAgdmFyIHRibF9saHMgPSA0O1xuICB2YXIgdGJsX2xlbiA9IDU7XG4gIHZhciB0YmxfZGVmcmVkID0gNjtcbiAgdmFyIHRibF9kZ290byA9IDc7XG4gIHZhciB0Ymxfc2luZGV4ID0gODtcbiAgdmFyIHRibF9yaW5kZXggPSA5O1xuICB2YXIgdGJsX2dpbmRleCA9IDEwO1xuICB2YXIgdGJsX3RhYmxlc2l6ZSA9IDExO1xuICB2YXIgdGJsX3RhYmxlID0gMTI7XG4gIHZhciB0YmxfY2hlY2sgPSAxMztcbiAgLy8gdmFyIF90YmxfZXJyb3JfZnVuY3Rpb24gPSAxNDtcbiAgdmFyIHRibF9uYW1lc19jb25zdCA9IDE1O1xuICB2YXIgdGJsX25hbWVzX2Jsb2NrID0gMTY7XG5cblxuICBmdW5jdGlvbiBsb2coeCkge1xuICAgIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4ICsgXCJcXG5cIik7XG4gICAgY2FtbF9tbF9vdXRwdXQoMiwgcywgMCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRva2VuX25hbWUobmFtZXMsIG51bWJlcilcbiAge1xuICAgIHZhciBzdHIgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lcyk7XG4gICAgaWYgKHN0clswXSA9PSAnXFx4MDAnKVxuICAgICAgcmV0dXJuIFwiPHVua25vd24gdG9rZW4+XCI7XG4gICAgcmV0dXJuIHN0ci5zcGxpdCgnXFx4MDAnKVtudW1iZXJdO1xuICB9XG5cbiAgZnVuY3Rpb24gcHJpbnRfdG9rZW4oc3RhdGUsIHRvaylcbiAge1xuICAgIHZhciB0b2tlbiwga2luZDtcbiAgICBpZiAodG9rIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHRva2VuID0gdG9rZW5fbmFtZSh0YWJsZXNbdGJsX25hbWVzX2Jsb2NrXSwgdG9rWzBdKTtcbiAgICAgIGlmICh0eXBlb2YgdG9rWzFdID09IFwibnVtYmVyXCIpXG4gICAgICAgIGtpbmQgPSBcIlwiICsgdG9rWzFdO1xuICAgICAgZWxzZSBpZiAodHlwZW9mIHRva1sxXSA9PSBcInN0cmluZ1wiKVxuICAgICAgICBraW5kID0gdG9rWzFdXG4gICAgICBlbHNlIGlmICh0b2tbMV0gaW5zdGFuY2VvZiBNbEJ5dGVzKVxuICAgICAgICBraW5kID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh0b2tbMV0pXG4gICAgICBlbHNlXG4gICAgICAgIGtpbmQgPSBcIl9cIlxuICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWFkIHRva2VuIFwiICsgdG9rZW4gKyBcIihcIiArIGtpbmQgKyBcIilcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRva2VuID0gdG9rZW5fbmFtZSh0YWJsZXNbdGJsX25hbWVzX2NvbnN0XSwgdG9rKTtcbiAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVhZCB0b2tlbiBcIiArIHRva2VuKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIXRhYmxlcy5kZ290bykge1xuICAgIHRhYmxlcy5kZWZyZWQgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZWZyZWRdKTtcbiAgICB0YWJsZXMuc2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0Ymxfc2luZGV4XSk7XG4gICAgdGFibGVzLmNoZWNrICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2NoZWNrXSk7XG4gICAgdGFibGVzLnJpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3JpbmRleF0pO1xuICAgIHRhYmxlcy50YWJsZSAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF90YWJsZV0pO1xuICAgIHRhYmxlcy5sZW4gICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9sZW5dKTtcbiAgICB0YWJsZXMubGhzICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGhzXSk7XG4gICAgdGFibGVzLmdpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2dpbmRleF0pO1xuICAgIHRhYmxlcy5kZ290byAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZ290b10pO1xuICB9XG5cbiAgdmFyIHJlcyA9IDAsIG4sIG4xLCBuMiwgc3RhdGUxO1xuXG4gIC8vIFJFU1RPUkVcbiAgdmFyIHNwID0gZW52W2Vudl9zcF07XG4gIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdO1xuICB2YXIgZXJyZmxhZyA9IGVudltlbnZfZXJyZmxhZ107XG5cbiAgZXhpdDpmb3IgKDs7KSB7XG4gICAgbmV4dDpzd2l0Y2goY21kKSB7XG4gICAgY2FzZSAwOi8vU1RBUlQ6XG4gICAgICBzdGF0ZSA9IDA7XG4gICAgICBlcnJmbGFnID0gMDtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSA2Oi8vbG9vcDpcbiAgICAgIG4gPSB0YWJsZXMuZGVmcmVkW3N0YXRlXTtcbiAgICAgIGlmIChuICE9IDApIHsgY21kID0gcmVkdWNlOyBicmVhazsgfVxuICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA+PSAwKSB7IGNtZCA9IHRlc3RzaGlmdDsgYnJlYWs7IH1cbiAgICAgIHJlcyA9IFJFQURfVE9LRU47XG4gICAgICBicmVhayBleGl0O1xuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGxleGVyIGFuZCB1cGRhdGVzICovXG4gICAgICAvKiBzeW1iX3N0YXJ0IGFuZCBzeW1iX2VuZCAqL1xuICAgIGNhc2UgMTovL1RPS0VOX1JFQUQ6XG4gICAgICBpZiAoYXJnIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfYmxvY2tdW2FyZ1swXSArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gYXJnWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfY29uc3RdW2FyZyArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gMDtcbiAgICAgIH1cbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgcHJpbnRfdG9rZW4gKHN0YXRlLCBhcmcpO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDc6Ly90ZXN0c2hpZnQ6XG4gICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgY21kID0gc2hpZnQ7IGJyZWFrO1xuICAgICAgfVxuICAgICAgbjEgPSB0YWJsZXMucmluZGV4W3N0YXRlXTtcbiAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7XG4gICAgICAgIG4gPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgICBjbWQgPSByZWR1Y2U7IGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGVycmZsYWcgPD0gMCkge1xuICAgICAgICByZXMgPSBDQUxMX0VSUk9SX0ZVTkNUSU9OO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgZXJyb3IgZnVuY3Rpb24gKi9cbiAgICBjYXNlIDU6Ly9FUlJPUl9ERVRFQ1RFRDpcbiAgICAgIGlmIChlcnJmbGFnIDwgMykge1xuICAgICAgICBlcnJmbGFnID0gMztcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIHN0YXRlMSA9IGVudltlbnZfc19zdGFja11bc3AgKyAxXTtcbiAgICAgICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGUxXTtcbiAgICAgICAgICBuMiA9IG4xICsgRVJSQ09ERTtcbiAgICAgICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IEVSUkNPREUpIHtcbiAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgbG9nKFwiUmVjb3ZlcmluZyBpbiBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICBjbWQgPSBzaGlmdF9yZWNvdmVyOyBicmVhayBuZXh0O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgIGxvZyhcIkRpc2NhcmRpbmcgc3RhdGUgXCIgKyBzdGF0ZTEpO1xuICAgICAgICAgICAgaWYgKHNwIDw9IGVudltlbnZfc3RhY2tiYXNlXSkge1xuICAgICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgICAgbG9nKFwiTm8gbW9yZSBzdGF0ZXMgdG8gZGlzY2FyZFwiKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgICAgICBzcC0tO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA9PSAwKVxuICAgICAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjsgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICBsb2coXCJEaXNjYXJkaW5nIGxhc3QgdG9rZW4gcmVhZFwiKTtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA4Oi8vc2hpZnQ6XG4gICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgIGlmIChlcnJmbGFnID4gMCkgZXJyZmxhZy0tO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA5Oi8vc2hpZnRfcmVjb3ZlcjpcbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiBzaGlmdCB0byBzdGF0ZSBcIiArIHRhYmxlcy50YWJsZVtuMl0pO1xuICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgc3ArKztcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMTtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAyOi8vU1RBQ0tTX0dST1dOXzE6XG4gICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgIGVudltlbnZfdl9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfbHZhbF07XG4gICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfc3RhcnRdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRdO1xuICAgICAgY21kID0gbG9vcDtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAxMDovL3JlZHVjZTpcbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWR1Y2UgYnkgcnVsZSBcIiArIG4pO1xuICAgICAgdmFyIG0gPSB0YWJsZXMubGVuW25dO1xuICAgICAgZW52W2Vudl9hc3BdID0gc3A7XG4gICAgICBlbnZbZW52X3J1bGVfbnVtYmVyXSA9IG47XG4gICAgICBlbnZbZW52X3J1bGVfbGVuXSA9IG07XG4gICAgICBzcCA9IHNwIC0gbSArIDE7XG4gICAgICBtID0gdGFibGVzLmxoc1tuXTtcbiAgICAgIHN0YXRlMSA9IGVudltlbnZfc19zdGFja11bc3BdO1xuICAgICAgbjEgPSB0YWJsZXMuZ2luZGV4W21dO1xuICAgICAgbjIgPSBuMSArIHN0YXRlMTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBzdGF0ZTEpXG4gICAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIGVsc2VcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMuZGdvdG9bbV07XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzI7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMzovL1NUQUNLU19HUk9XTl8yOlxuICAgICAgcmVzID0gQ09NUFVURV9TRU1BTlRJQ19BQ1RJT047XG4gICAgICBicmVhayBleGl0O1xuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIHNlbWFudGljIGFjdGlvbiAqL1xuICAgIGNhc2UgNDovL1NFTUFOVElDX0FDVElPTl9DT01QVVRFRDpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gYXJnO1xuICAgICAgdmFyIGFzcCA9IGVudltlbnZfYXNwXTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgIGlmIChzcCA+IGFzcCkge1xuICAgICAgICAvKiBUaGlzIGlzIGFuIGVwc2lsb24gcHJvZHVjdGlvbi4gVGFrZSBzeW1iX3N0YXJ0IGVxdWFsIHRvIHN5bWJfZW5kLiAqL1xuICAgICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgIH1cbiAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgLyogU2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgIH1cbiAgfVxuICAvLyBTQVZFXG4gIGVudltlbnZfc3BdID0gc3A7XG4gIGVudltlbnZfc3RhdGVdID0gc3RhdGU7XG4gIGVudltlbnZfZXJyZmxhZ10gPSBlcnJmbGFnO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9wYXJzZXJfdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VyX3RyYWNlXG5mdW5jdGlvbiBjYW1sX3NldF9wYXJzZXJfdHJhY2UoYm9vbCkge1xuICB2YXIgb2xkZmxhZyA9IGNhbWxfcGFyc2VyX3RyYWNlO1xuICBjYW1sX3BhcnNlcl90cmFjZSA9IGJvb2w7XG4gIHJldHVybiBvbGRmbGFnO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDIwIC0gSHVnbyBIZXV6YXJkXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBTaGFjaGFyIEl0emhha3lcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9ibG9iLzQuMDcvb3RoZXJsaWJzL3N0ci9zdHJzdHVicy5jXG4vLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vanNjb3EvanNjb3EvYmxvYi92OC4xMS9jb3EtanMvanNfc3R1Yi9zdHIuanNcblxuLy9Qcm92aWRlczogcmVfbWF0Y2hcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2dldFxuXG52YXIgcmVfbWF0Y2ggPSBmdW5jdGlvbigpe1xuICB2YXIgcmVfd29yZF9sZXR0ZXJzID0gW1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4MDAtMHgxRjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4RkYsIDB4MDMsICAgICAgIC8qIDB4MjAtMHgzRjogZGlnaXRzIDAtOSAqL1xuICAgIDB4RkUsIDB4RkYsIDB4RkYsIDB4ODcsICAgICAgIC8qIDB4NDAtMHg1RjogQSB0byBaLCBfICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHgwNywgICAgICAgLyogMHg2MC0weDdGOiBhIHRvIHogKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweDgwLTB4OUY6IG5vbmUgKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweEEwLTB4QkY6IG5vbmUgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGLCAgICAgICAvKiAweEMwLTB4REY6IExhdGluLTEgYWNjZW50ZWQgdXBwZXJjYXNlICovXG4gICAgMHhGRiwgMHhGRiwgMHg3RiwgMHhGRiAgICAgICAgLyogMHhFMC0weEZGOiBMYXRpbi0xIGFjY2VudGVkIGxvd2VyY2FzZSAqL1xuICBdO1xuXG4gIHZhciBvcGNvZGVzID0ge1xuICAgIENIQVI6IDAsIENIQVJOT1JNOiAxLCBTVFJJTkc6IDIsIFNUUklOR05PUk06IDMsIENIQVJDTEFTUzogNCxcbiAgICBCT0w6IDUsIEVPTDogNiwgV09SREJPVU5EQVJZOiA3LFxuICAgIEJFR0dST1VQOiA4LCBFTkRHUk9VUDogOSwgUkVGR1JPVVA6IDEwLFxuICAgIEFDQ0VQVDogMTEsXG4gICAgU0lNUExFT1BUOiAxMiwgU0lNUExFU1RBUjogMTMsIFNJTVBMRVBMVVM6IDE0LFxuICAgIEdPVE86IDE1LCBQVVNIQkFDSzogMTYsIFNFVE1BUks6IDE3LFxuICAgIENIRUNLUFJPR1JFU1M6IDE4XG4gIH07XG5cbiAgZnVuY3Rpb24gaXNfd29yZF9sZXR0ZXIoYykge1xuICAgIHJldHVybiAocmVfd29yZF9sZXR0ZXJzWyAgKGMgPj4gMyldID4+IChjICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluX2JpdHNldChzLGkpIHtcbiAgICByZXR1cm4gKGNhbWxfc3RyaW5nX2dldChzLChpID4+IDMpKSA+PiAoaSAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiByZV9tYXRjaF9pbXBsKHJlLCBzLCBwb3MsIHBhcnRpYWwpIHtcblxuICAgIHZhciBwcm9nICAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzFdKSxcbiAgICAgICAgY3Bvb2wgICAgICAgICA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsyXSksXG4gICAgICAgIG5vcm10YWJsZSAgICAgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlWzNdKSxcbiAgICAgICAgbnVtZ3JvdXBzICAgICA9IHJlWzRdIHwgMCxcbiAgICAgICAgbnVtcmVnaXN0ZXJzICA9IHJlWzVdIHwgMCxcbiAgICAgICAgc3RhcnRjaGFycyAgICA9IHJlWzZdIHwgMDtcblxuICAgIHZhciBzID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcocyk7XG5cbiAgICB2YXIgcGMgPSAwLFxuICAgICAgICBxdWl0ID0gZmFsc2UsXG4gICAgICAgIHN0YWNrID0gW10sXG4gICAgICAgIGdyb3VwcyA9IG5ldyBBcnJheShudW1ncm91cHMpLFxuICAgICAgICByZV9yZWdpc3RlciA9IG5ldyBBcnJheShudW1yZWdpc3RlcnMpO1xuXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICBncm91cHNbaV0gPSB7c3RhcnQ6IC0xLCBlbmQ6LTF9XG4gICAgfVxuICAgIGdyb3Vwc1swXS5zdGFydCA9IHBvcztcblxuICAgIHZhciBiYWNrdHJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICAgIHZhciBpdGVtID0gc3RhY2sucG9wKCk7XG4gICAgICAgIGlmIChpdGVtLnVuZG8pIHtcbiAgICAgICAgICBpdGVtLnVuZG8ub2JqW2l0ZW0udW5kby5wcm9wXSA9IGl0ZW0udW5kby52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGl0ZW0ucG9zKSB7XG4gICAgICAgICAgcGMgPSBpdGVtLnBvcy5wYztcbiAgICAgICAgICBwb3MgPSBpdGVtLnBvcy50eHQ7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBxdWl0ID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdmFyIHB1c2ggPSBmdW5jdGlvbihpdGVtKSB7IHN0YWNrLnB1c2goaXRlbSk7IH07XG5cbiAgICB2YXIgYWNjZXB0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZ3JvdXBzWzBdLmVuZCA9IHBvcztcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoMSArIGdyb3Vwcy5sZW5ndGgqMik7XG4gICAgICByZXN1bHRbMF0gPSAwOyAvLyB0YWdcbiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspe1xuICAgICAgICB2YXIgZyA9IGdyb3Vwc1tpXTtcbiAgICAgICAgaWYoZy5zdGFydCA8IDAgfHwgZy5lbmQgPCAwKSB7XG4gICAgICAgICAgZy5zdGFydCA9IGcuZW5kID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0WzIqaSArIDEgXSA9IGcuc3RhcnQ7XG4gICAgICAgIHJlc3VsdFsyKmkgKyAxICsgMSBdID0gZy5lbmQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH07XG5cbiAgICB2YXIgcHJlZml4X21hdGNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYocGFydGlhbCkgcmV0dXJuIGFjY2VwdCAoKTtcbiAgICAgIGVsc2UgYmFja3RyYWNrICgpO1xuICAgIH1cblxuICAgIC8qIE1haW4gREZBIGludGVycHJldGVyIGxvb3AgKi9cbiAgICB3aGlsZSAoIXF1aXQpIHtcbiAgICAgIHZhciBvcCA9IHByb2dbcGNdICYgMHhmZixcbiAgICAgICAgICBzYXJnID0gcHJvZ1twY10gPj4gOCxcbiAgICAgICAgICB1YXJnID0gc2FyZyAmIDB4ZmYsXG4gICAgICAgICAgYyA9IHNbcG9zXSxcbiAgICAgICAgICBncm91cDtcblxuICAgICAgcGMrKztcblxuICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVI6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGMgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSTk9STTpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkc6XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAoYyA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklOR05PUk06XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IGFyZy5jaGFyQ29kZUF0KGkpKVxuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGVsc2UgeyBiYWNrdHJhY2soKTsgYnJlYWs7IH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSQ0xBU1M6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CT0w6XG4gICAgICAgIGlmKHBvcyA+IDAgJiYgc1twb3MgLSAxXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuRU9MOlxuICAgICAgICBpZihwb3MgPCBzLmxlbmd0aCAmJiBzW3Bvc10gIT0gMTAgLyogXFxuICovKSB7YmFja3RyYWNrKCl9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLldPUkRCT1VOREFSWTpcbiAgICAgICAgaWYocG9zID09IDApIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1swXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pICE9IGlzX3dvcmRfbGV0dGVyKHNbcG9zXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjayAoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CRUdHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6Z3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXAuc3RhcnR9fSk7XG4gICAgICAgIGdyb3VwLnN0YXJ0ID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FTkRHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDonZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5lbmR9fSk7XG4gICAgICAgIGdyb3VwLmVuZCA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUkVGR1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBpZihncm91cC5zdGFydCA8IDAgfHwgZ3JvdXAuZW5kIDwgMCkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgIGZvciAodmFyIGkgPSBncm91cC5zdGFydDsgaSA8IGdyb3VwLmVuZDsgaSsrKXtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoc1tpXSAhPSBzW3Bvc10pIHtiYWNrdHJhY2sgKCk7IGJyZWFrfVxuICAgICAgICAgIHBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRU9QVDpcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVTVEFSOlxuICAgICAgICB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSlcbiAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVBMVVM6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgfSB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQUNDRVBUOlxuICAgICAgICByZXR1cm4gYWNjZXB0KCk7XG4gICAgICBjYXNlIG9wY29kZXMuR09UTzpcbiAgICAgICAgcGMgPSBwYyArIHNhcmc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlBVU0hCQUNLOlxuICAgICAgICBwdXNoKHtwb3M6IHtwYzogcGMgKyBzYXJnLCB0eHQ6IHBvc319KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0VUTUFSSzpcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpyZV9yZWdpc3RlcixcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6IHVhcmcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmVfcmVnaXN0ZXJbdWFyZ119fSk7XG4gICAgICAgIHJlX3JlZ2lzdGVyW3VhcmddID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEVDS1BST0dSRVNTOlxuICAgICAgICBpZiAocmVfcmVnaXN0ZXJbdWFyZ10gPT09IHBvcykgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBieXRlY29kZVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gcmVfbWF0Y2hfaW1wbDtcbn0oKTtcblxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfZm9yd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zZWFyY2hfZm9yd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfZm9yd2FyZFwiKVxuICB3aGlsZSAocG9zIDw9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkge1xuICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgIHBvcysrO1xuICB9XG5cbiAgcmV0dXJuIFswXTsgIC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2JhY2t3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9iYWNrd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfYmFja3dhcmRcIilcbiAgd2hpbGUgKHBvcyA+PSAwKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zLS07XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG5cbi8vUHJvdmlkZXM6IHJlX3N0cmluZ19tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zdHJpbmdfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc3RyaW5nX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9wYXJ0aWFsX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3BhcnRpYWxfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIucGFydGlhbF9tYXRjaFwiKVxuICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMSk7XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGVsc2UgcmV0dXJuIFswXTtcbn1cblxuLy9Qcm92aWRlczogcmVfcmVwbGFjZW1lbnRfdGV4dFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9hcnJheV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIGV4dGVybmFsIHJlX3JlcGxhY2VtZW50X3RleHQ6IHN0cmluZyAtPiBpbnQgYXJyYXkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuZnVuY3Rpb24gcmVfcmVwbGFjZW1lbnRfdGV4dChyZXBsLGdyb3VwcyxvcmlnKSB7XG4gIHZhciByZXBsID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZXBsKTtcbiAgdmFyIGxlbiA9IHJlcGwubGVuZ3RoO1xuICB2YXIgb3JpZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob3JpZyk7XG4gIHZhciByZXMgPSBcIlwiOyAvL3Jlc3VsdFxuICB2YXIgbiA9IDA7IC8vIGN1cnJlbnQgcG9zaXRpb25cbiAgdmFyIGN1cjsgLy9jdXJyZW50IGNoYXJcbiAgdmFyIHN0YXJ0LCBlbmQsIGM7XG4gIHdoaWxlKG4gPCBsZW4pe1xuICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgaWYoY3VyICE9ICdcXFxcJyl7XG4gICAgICByZXMgKz0gY3VyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKG4gPT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCIpO1xuICAgICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICAgIHN3aXRjaChjdXIpe1xuICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgIHJlcyArPSBjdXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOlxuICAgICAgY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgICBjID0gK2N1cjtcbiAgICAgICAgaWYgKGMqMiA+PSBncm91cHMubGVuZ3RoIC0gMSApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIgKTtcbiAgICAgICAgc3RhcnQgPSBjYW1sX2FycmF5X2dldChncm91cHMsYyoyKTtcbiAgICAgICAgZW5kID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjKjIgKzEpO1xuICAgICAgICBpZiAoc3RhcnQgPT0gLTEpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIpO1xuICAgICAgICByZXMrPW9yaWcuc2xpY2Uoc3RhcnQsZW5kKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXMgKz0gKCdcXFxcJyAgKyBjdXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9zdHJfaW5pdGlhbGl6ZVxuZnVuY3Rpb24gY2FtbF9zdHJfaW5pdGlhbGl6ZSh1bml0KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogY29yZV9oZWFwX2Jsb2NrX2lzX2hlYXBfYmxvY2tcbmZ1bmN0aW9uIGNvcmVfaGVhcF9ibG9ja19pc19oZWFwX2Jsb2NrKHgpe1xuICByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpO1xufVxuXG4iLCIvL1Byb3ZpZGVzOiBqc19wZXJmb3JtYW5jZVxudmFyIGpzX3BlcmZvcm1hbmNlID0ge21hcms6IChmdW5jdGlvbiAoKSB7fSksIG1lYXN1cmU6IChmdW5jdGlvbiAoKSB7fSkgfTtcbmlmICh0eXBlb2Ygam9vX2dsb2JhbF9vYmplY3QucGVyZm9ybWFuY2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAganNfcGVyZm9ybWFuY2UgPSBqb29fZ2xvYmFsX29iamVjdC5wZXJmb3JtYW5jZTtcbn0gZWxzZSB7XG4gIHRyeSB7XG4gICAgdmFyIHBlcmZfaG9va3MgPSByZXF1aXJlKCdwZXJmX2hvb2tzJyk7XG4gICAganNfcGVyZm9ybWFuY2UgPSBwZXJmX2hvb2tzLnBlcmZvcm1hbmNlO1xuICAgIGpvb19nbG9iYWxfb2JqZWN0LlBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBwZXJmX2hvb2tzLlBlcmZvcm1hbmNlT2JzZXJ2ZXI7XG4gIH0gY2F0Y2ggKF9lKSB7XG4gICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKFwiY291bGRuJ3QgbG9hZCBwZXJmb3JtYW5jZSBob29rc1wiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX21hcmtcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfbWFyayhuYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UubWFyayhjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfbWVhc3VyZVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9tZWFzdXJlKG5hbWUsIHN0YXJ0LCBlbmQpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5tZWFzdXJlKFxuICAgICAgICAgICAgY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSwgXG4gICAgICAgICAgICBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHN0YXJ0KSwgXG4gICAgICAgICAgICBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGVuZCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9jbGVhcl9tYXJrc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9jbGVhcl9tYXJrcygpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5jbGVhck1hcmtzKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX2NsZWFyX21lYXN1cmVzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX2NsZWFyX21lYXN1cmVzKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbiIsIi8vLy8vLy8vLyBUSU1FX05PV1xuXG4vL1Byb3ZpZGVzOiB0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX2ludDY0X29mX2ludDMyXG52YXIgbXNfdG9fbmFubyA9IGNhbWxfaW50NjRfb2ZfaW50MzIoMTAwMCoxMDAwKTtcbmZ1bmN0aW9uIHRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybygpe1xuICAgIHZhciBtcyA9IERhdGUubm93KCk7XG4gICAgLy8gbXVsdGlwbGUgYnkgdHdvIC0gaW50NjMgaW50ZWdlcnMgYXJlIHNoaWZ0ZWQgdG8gdGhlIGxlZnRcbiAgICB2YXIgbXNfaTYzID0gY2FtbF9pbnQ2NF9vZl9mbG9hdChtcyoyKTtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9tdWwobXNfaTYzLG1zX3RvX25hbm8pO1xufVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgIEJlbm9pdCBWYXVnb24sIEVOU1RBICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQYWRkaW5nIHBvc2l0aW9uLiAqKVxudHlwZSBwYWR0eSA9XG4gIHwgTGVmdCAgICgqIFRleHQgaXMgbGVmdCBqdXN0aWZpZWQgKCctJyBvcHRpb24pLiAgICAgICAgICAgICAgICopXG4gIHwgUmlnaHQgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIChubyAnLScgb3B0aW9uKS4gICAgICAgICAgICopXG4gIHwgWmVyb3MgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIGJ5IHplcm9zIChzZWUgJzAnIG9wdGlvbikuICopXG5cbigqKiopXG5cbigqIEludGVnZXIgY29udmVyc2lvbi4gKilcbnR5cGUgaW50X2NvbnYgPVxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkICAgICAgICAoKiAgJWQgfCAlK2QgfCAlIGQgICopXG4gIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2kgICAgICAgICgqICAlaSB8ICUraSB8ICUgaSAgKilcbiAgfCBJbnRfeCB8IEludF9DeCAgICAgICAgICAgICAgICAgKCogICV4IHwgJSN4ICAgICAgICAqKVxuICB8IEludF9YIHwgSW50X0NYICAgICAgICAgICAgICAgICAoKiAgJVggfCAlI1ggICAgICAgICopXG4gIHwgSW50X28gfCBJbnRfQ28gICAgICAgICAgICAgICAgICgqICAlbyB8ICUjbyAgICAgICAgKilcbiAgfCBJbnRfdSAgICAgICAgICAgICAgICAgICAgICAgICAgKCogICV1ICAgICAgICAgICAgICAqKVxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAgICAgICAoKiAgJSNkIHwgJSNpIHwgJSN1ICopXG5cbigqIEZsb2F0IGNvbnZlcnNpb24uICopXG50eXBlIGZsb2F0X2ZsYWdfY29udiA9XG4gIHwgRmxvYXRfZmxhZ18gICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19wICAgICAgICAgICAgICAgICAgICgqICUrW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcyAgICAgICAgICAgICAgICAgICAoKiAlIFtmZUVnR0ZoSF0gKilcbnR5cGUgZmxvYXRfa2luZF9jb252ID1cbiAgfCBGbG9hdF9mICAgICAgICAgICAgICAgICAgICAgICAgKCogICVmIHwgJStmIHwgJSBmICAqKVxuICB8IEZsb2F0X2UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWUgfCAlK2UgfCAlIGUgICopXG4gIHwgRmxvYXRfRSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRSB8ICUrRSB8ICUgRSAgKilcbiAgfCBGbG9hdF9nICAgICAgICAgICAgICAgICAgICAgICAgKCogICVnIHwgJStnIHwgJSBnICAqKVxuICB8IEZsb2F0X0cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUcgfCAlK0cgfCAlIEcgICopXG4gIHwgRmxvYXRfRiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRiB8ICUrRiB8ICUgRiAgKilcbiAgfCBGbG9hdF9oICAgICAgICAgICAgICAgICAgICAgICAgKCogICVoIHwgJStoIHwgJSBoICAqKVxuICB8IEZsb2F0X0ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUggfCAlK0ggfCAlIEggICopXG4gIHwgRmxvYXRfQ0YgICAgICAgICAgICAgICAgICAgICAgICgqICAlI0Z8ICUrI0Z8ICUgI0YgKilcbnR5cGUgZmxvYXRfY29udiA9IGZsb2F0X2ZsYWdfY29udiAqIGZsb2F0X2tpbmRfY29udlxuXG4oKioqKVxuXG4oKiBDaGFyIHNldHMgKHNlZSAlWy4uLl0pIGFyZSBiaXRtYXBzIGltcGxlbWVudGVkIGFzIDMyLWNoYXIgc3RyaW5ncy4gKilcbnR5cGUgY2hhcl9zZXQgPSBzdHJpbmdcblxuKCoqKilcblxuKCogQ291bnRlciB1c2VkIGluIFNjYW5mLiAqKVxudHlwZSBjb3VudGVyID1cbiAgfCBMaW5lX2NvdW50ZXIgICAgICgqICAlbCAgICAgICopXG4gIHwgQ2hhcl9jb3VudGVyICAgICAoKiAgJW4gICAgICAqKVxuICB8IFRva2VuX2NvdW50ZXIgICAgKCogICVOLCAlTCAgKilcblxuKCoqKilcblxuKCogUGFkZGluZyBvZiBzdHJpbmdzIGFuZCBudW1iZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwYWRkaW5nID1cbiAgKCogTm8gcGFkZGluZyAoZXg6IFwiJWRcIikgKilcbiAgfCBOb19wYWRkaW5nICA6ICgnYSwgJ2EpIHBhZGRpbmdcbiAgKCogTGl0ZXJhbCBwYWRkaW5nIChleDogXCIlOGRcIikgKilcbiAgfCBMaXRfcGFkZGluZyA6IHBhZHR5ICogaW50IC0+ICgnYSwgJ2EpIHBhZGRpbmdcbiAgKCogUGFkZGluZyBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpkXCIpICopXG4gIHwgQXJnX3BhZGRpbmcgOiBwYWR0eSAtPiAoaW50IC0+ICdhLCAnYSkgcGFkZGluZ1xuXG4oKiBTb21lIGZvcm1hdHMsIHN1Y2ggYXMgJV9kLFxuICAgb25seSBhY2NlcHQgYW4gb3B0aW9uYWwgbnVtYmVyIGFzIHBhZGRpbmcgb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcGFkX29wdGlvbiA9IGludCBvcHRpb25cblxuKCogUHJlY2lzaW9uIG9mIGZsb2F0cyBhbmQgJzAnLXBhZGRpbmcgb2YgaW50ZWdlcnMuICopXG50eXBlICgnYSwgJ2IpIHByZWNpc2lvbiA9XG4gICgqIE5vIHByZWNpc2lvbiAoZXg6IFwiJWZcIikgKilcbiAgfCBOb19wcmVjaXNpb24gOiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogTGl0ZXJhbCBwcmVjaXNpb24gKGV4OiBcIiUuM2ZcIikgKilcbiAgfCBMaXRfcHJlY2lzaW9uIDogaW50IC0+ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBQcmVjaXNpb24gYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUuKmZcIikgKilcbiAgfCBBcmdfcHJlY2lzaW9uIDogKGludCAtPiAnYSwgJ2EpIHByZWNpc2lvblxuXG4oKiBTb21lIGZvcm1hdHMsIHN1Y2ggYXMgJV9mLFxuICAgb25seSBhY2NlcHQgYW4gb3B0aW9uYWwgbnVtYmVyIGFzIHByZWNpc2lvbiBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwcmVjX29wdGlvbiA9IGludCBvcHRpb25cblxuKCogc2VlIHRoZSBDdXN0b20gZm9ybWF0IGNvbWJpbmF0b3IgKilcbnR5cGUgKCdhLCAnYiwgJ2MpIGN1c3RvbV9hcml0eSA9XG4gIHwgQ3VzdG9tX3plcm8gOiAoJ2EsIHN0cmluZywgJ2EpIGN1c3RvbV9hcml0eVxuICB8IEN1c3RvbV9zdWNjIDogKCdhLCAnYiwgJ2MpIGN1c3RvbV9hcml0eSAtPlxuICAgICgnYSwgJ3ggLT4gJ2IsICd4IC0+ICdjKSBjdXN0b21fYXJpdHlcblxuKCoqKilcblxuKCogICAgICAgIFJlbGF0aW9uYWwgZm9ybWF0IHR5cGVzXG5cbkluIHRoZSBmaXJzdCBmb3JtYXQrZ2FkdHMgaW1wbGVtZW50YXRpb24sIHRoZSB0eXBlIGZvciAlKC4uJSkgaW4gdGhlXG5mbXQgR0FEVCB3YXMgYXMgZm9sbG93czpcblxufCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgcGFkX29wdGlvbiAqICgnZDEsICdxMSwgJ2QyLCAncTIpIHJlYWRlcl9uYl91bmlmaWVyICpcbiAgICAoJ3gsICdiLCAnYywgJ2QxLCAncTEsICd1KSBmbXR0eSAqXG4gICAgKCd1LCAnYiwgJ2MsICdxMSwgJ2UxLCAnZikgZm10IC0+XG4gICAgICAoKCd4LCAnYiwgJ2MsICdkMiwgJ3EyLCAndSkgZm9ybWF0NiAtPiAneCwgJ2IsICdjLCAnZDEsICdlMSwgJ2YpIGZtdFxuXG5Ob3RpY2UgdGhhdCB0aGUgJ3UgcGFyYW1ldGVyIGluICdmIHBvc2l0aW9uIGluIHRoZSBmb3JtYXQgYXJndW1lbnRcbigoJ3gsIC4uLCAndSkgZm9ybWF0NiAtPiAuLikgaXMgZXF1YWwgdG8gdGhlICd1IHBhcmFtZXRlciBpbiAnYVxucG9zaXRpb24gaW4gdGhlIGZvcm1hdCB0YWlsICgoJ3UsIC4uLCAnZikgZm10KS4gVGhpcyBtZWFucyB0aGF0IHRoZVxudHlwZSBvZiB0aGUgZXhwZWN0ZWQgZm9ybWF0IHBhcmFtZXRlciBkZXBlbmRzIG9mIHdoZXJlIHRoZSAlKC4uLiUpXG5hcmUgaW4gdGhlIGZvcm1hdCBzdHJpbmc6XG5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKVwiXG4gIC0gOiAodW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gdW5pdFxuICA9IDxmdW4+XG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSklZFwiXG4gIC0gOiAoaW50IC0+IHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgaW50IC0+IHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiBpbnQgLT4gdW5pdFxuICA9IDxmdW4+XG5cbk9uIHRoZSBjb250cmFyeSwgdGhlIGxlZ2FjeSB0eXBlciBnaXZlcyBhIGNsZXZlciB0eXBlIHRoYXQgZG9lcyBub3RcbmRlcGVuZCBvbiB0aGUgcG9zaXRpb24gb2YgJSguLiUpIGluIHRoZSBmb3JtYXQgc3RyaW5nLiBGb3IgZXhhbXBsZSxcbiUoJSkgd2lsbCBoYXZlIHRoZSBwb2x5bW9ycGhpYyB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKTogaXQgY2FuXG5iZSBjb25jYXRlbmF0ZWQgdG8gYW55IGZvcm1hdCB0eXBlLCBhbmQgb25seSBlbmZvcmNlcyB0aGUgY29uc3RyYWludFxudGhhdCBpdHMgJ2EgYW5kICdmIHBhcmFtZXRlcnMgYXJlIGVxdWFsIChubyBmb3JtYXQgYXJndW1lbnRzKSBhbmQgJ2RcbmFuZCAnZSBhcmUgZXF1YWwgKG5vIHJlYWRlciBhcmd1bWVudCkuXG5cblRoZSB3ZWFrZW5pbmcgb2YgdGhpcyBwYXJhbWV0ZXIgdHlwZSBpbiB0aGUgR0FEVCB2ZXJzaW9uIGJyb2tlIHVzZXJcbmNvZGUgKGluIGZhY3QgaXQgZXNzZW50aWFsbHkgbWFkZSAlKC4uLiUpIHVudXNhYmxlIGV4Y2VwdCBhdCB0aGUgbGFzdFxucG9zaXRpb24gb2YgYSBmb3JtYXQpLiBJbiBwYXJ0aWN1bGFyLCB0aGUgZm9sbG93aW5nIHdvdWxkIG5vdCB3b3JrXG5hbnltb3JlOlxuXG4gIGZ1biBzZXAgLT5cbiAgICBGb3JtYXQucHJpbnRmIFwiZm9vJSglKWJhciUoJSliYXpcIiBzZXAgc2VwXG5cbkFzIHRoZSB0eXBlLWNoZWNrZXIgd291bGQgcmVxdWlyZSB0d28gKmluY29tcGF0aWJsZSogdHlwZXMgZm9yIHRoZSAlKCUpXG5pbiBkaWZmZXJlbnQgcG9zaXRpb25zLlxuXG5UaGUgc29sdXRpb24gdG8gcmVnYWluIGEgZ2VuZXJhbCB0eXBlIGZvciAlKC4uJSkgaXMgdG8gZ2VuZXJhbGl6ZSB0aGlzXG50ZWNobmlxdWUsIG5vdCBvbmx5IG9uIHRoZSAnZCwgJ2UgcGFyYW1ldGVycywgYnV0IG9uIGFsbCBzaXhcbnBhcmFtZXRlcnMgb2YgYSBmb3JtYXQ6IHdlIGludHJvZHVjZSBhIFwicmVsYXRpb25hbFwiIHR5cGVcbiAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbndob3NlIHZhbHVlcyBhcmUgcHJvb2ZzIHRoYXQgKCdhMSwgLi4sICdmMSkgYW5kICgnYTIsIC4uLCAnZjIpIG1vcmFsbHlcbmNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgZm9ybWF0IHR5cGU6ICdhMSBpcyBvYnRhaW5lZCBmcm9tICdmMSwnYjEsJ2MxXG5pbiB0aGUgZXhhY3Qgc2FtZSB3YXkgdGhhdCAnYTIgaXMgb2J0YWluZWQgZnJvbSAnZjIsJ2IyLCdjMiwgZXRjLlxuXG5Gb3IgZXhhbXBsZSwgdGhlIHJlbGF0aW9uIGJldHdlZW4gdHdvIGZvcm1hdCB0eXBlcyBiZWdpbm5pbmcgd2l0aCBhIENoYXJcbnBhcmFtZXRlciBpcyBhcyBmb2xsb3dzOlxuXG58IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuSW4gdGhlIGdlbmVyYWwgY2FzZSwgdGhlIHRlcm0gc3RydWN0dXJlIG9mIGZtdHR5X3JlbCBpcyAoYWxtb3N0WzFdKVxuaXNvbW9ycGhpYyB0byB0aGUgZm10dHkgb2YgdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uOiBldmVyeVxuY29uc3RydWN0b3IgaXMgcmUtcmVhZCB3aXRoIGEgYmluYXJ5LCByZWxhdGlvbmFsIHR5cGUsIGluc3RlYWQgb2YgdGhlXG5wcmV2aW91cyB1bmFyeSB0eXBpbmcuIGZtdHR5IGNhbiB0aGVuIGJlIHJlLWRlZmluZWQgYXMgdGhlIGRpYWdvbmFsIG9mXG5mbXR0eV9yZWw6XG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLFxuICAgICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcblxuT25jZSB3ZSBoYXZlIHRoaXMgZm10dHlfcmVsIHR5cGUgaW4gcGxhY2UsIHdlIGNhbiBnaXZlIHRoZSBtb3JlXG5nZW5lcmFsIHR5cGUgdG8gJSguLi4lKTpcblxufCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgcGFkX29wdGlvbiAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbldlIGFjY2VwdCBhbnkgZm9ybWF0ICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NikgKHRoaXMgaXNcbmNvbXBsZXRlbHkgdW5yZWxhdGVkIHRvIHRoZSB0eXBlIG9mIHRoZSBjdXJyZW50IGZvcm1hdCksIGJ1dCBhbHNvXG5yZXF1aXJlIGEgcHJvb2YgdGhhdCB0aGlzIGZvcm1hdCBpcyBpbiByZWxhdGlvbiB0byBhbm90aGVyIGZvcm1hdCB0aGF0XG5pcyBjb25jYXRlbmFibGUgdG8gdGhlIGZvcm1hdCB0YWlsLiBXaGVuIGV4ZWN1dGluZyBhICUoLi4uJSkgZm9ybWF0XG4oaW4gY2FtbGludGVybmFsRm9ybWF0Lm1sOm1ha2VfcHJpbnRmIG9yIHNjYW5mLm1sOm1ha2Vfc2NhbmYpLCB3ZVxudHJhbnN0eXBlIHRoZSBmb3JtYXQgYWxvbmcgdGhpcyByZWxhdGlvbiB1c2luZyB0aGUgJ3JlY2FzdCcgZnVuY3Rpb25cbnRvIHRyYW5zcG9zZSBiZXR3ZWVuIHJlbGF0ZWQgZm9ybWF0IHR5cGVzLlxuXG4gIHZhbCByZWNhc3QgOlxuICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSkgZm10XG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXRcblxuTk9URSBbMV06IHRoZSB0eXBpbmcgb2YgRm9ybWF0X3N1YnN0X3R5IHJlcXVpcmVzIG5vdCBvbmUgZm9ybWF0IHR5cGUsIGJ1dFxudHdvLCBvbmUgdG8gZXN0YWJsaXNoIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdCBhcmd1bWVudCBhbmQgdGhlXG5maXJzdCBzaXggcGFyYW1ldGVycywgYW5kIHRoZSBvdGhlciBmb3IgdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0XG5hcmd1bWVudCBhbmQgdGhlIGxhc3Qgc2l4IHBhcmFtZXRlcnMuXG5cbnwgRm9ybWF0X3N1YnN0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5XaGVuIHdlIGdlbmVyYXRlIGEgZm9ybWF0IEFTVCwgd2UgZ2VuZXJhdGUgZXhhY3RseSB0aGUgc2FtZSB3aXRuZXNzXG5mb3IgYm90aCByZWxhdGlvbnMsIGFuZCB0aGUgd2l0bmVzcy1jb252ZXJzaW9uIGZ1bmN0aW9ucyBpblxuY2FtbGludGVybmFsRm9ybWF0IGRvIHJlbHkgb24gdGhpcyBpbnZhcmlhbnQuIEZvciBleGFtcGxlLCB0aGVcbmZ1bmN0aW9uIHRoYXQgcHJvdmVzIHRoYXQgdGhlIHJlbGF0aW9uIGlzIHRyYW5zaXRpdmVcblxuICB2YWwgdHJhbnMgOlxuICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMixcbiAgICAgICdhMywgJ2IzLCAnYzMsICdkMywgJ2UzLCAnZjMpIGZtdHR5X3JlbFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMywgJ2IzLCAnYzMsICdkMywgJ2UzLCAnZjMpIGZtdHR5X3JlbFxuXG5kb2VzIGFzc3VtZSB0aGF0IHRoZSB0d28gaW5wdXRzIGhhdmUgZXhhY3RseSB0aGUgc2FtZSB0ZXJtIHN0cnVjdHVyZVxuKGFuZCBpcyBvbmx5IGV2ZXJ5IHVzZWQgZm9yIGFyZ3VtZW50IHdpdG5lc3NlcyBvZiB0aGVcbkZvcm1hdF9zdWJzdF90eSBjb25zdHJ1Y3RvcikuXG4qKVxuXG4oKiBUeXBlIG9mIGEgYmxvY2sgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSBibG9ja190eXBlID1cbiAgfCBQcF9oYm94ICAgKCogSG9yaXpvbnRhbCBibG9jayBubyBsaW5lIGJyZWFraW5nICopXG4gIHwgUHBfdmJveCAgICgqIFZlcnRpY2FsIGJsb2NrIGVhY2ggYnJlYWsgbGVhZHMgdG8gYSBuZXcgbGluZSAqKVxuICB8IFBwX2h2Ym94ICAoKiBIb3Jpem9udGFsLXZlcnRpY2FsIGJsb2NrOiBzYW1lIGFzIHZib3gsIGV4Y2VwdCBpZiB0aGlzIGJsb2NrXG4gICAgICAgICAgICAgICAgIGlzIHNtYWxsIGVub3VnaCB0byBmaXQgb24gYSBzaW5nbGUgbGluZSAqKVxuICB8IFBwX2hvdmJveCAoKiBIb3Jpem9udGFsIG9yIFZlcnRpY2FsIGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jayAqKVxuICB8IFBwX2JveCAgICAoKiBIb3Jpem9udGFsIG9yIEluZGVudCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2ssIG9yXG4gICAgICAgICAgICAgICAgIHdoZW4gaXQgbGVhZHMgdG8gYSBuZXcgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgbGluZSAqKVxuICB8IFBwX2ZpdHMgICAoKiBJbnRlcm5hbCB1c2FnZTogd2hlbiBhIGJsb2NrIGZpdHMgb24gYSBzaW5nbGUgbGluZSAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSBmb3JtYXR0aW5nX2xpdCA9XG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBdICAgKilcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQH0gICAqKVxuICB8IEJyZWFrIG9mIHN0cmluZyAqIGludCAqIGludCAgICAgICAgICAoKiBALCB8IEAgIHwgQDsgfCBAOzw+ICopXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA/ICAgKilcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFxcbiAgKilcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQC4gICAqKVxuICB8IE1hZ2ljX3NpemUgb2Ygc3RyaW5nICogaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPG4+ICopXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBAICAgKilcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQCUlICAqKVxuICB8IFNjYW5faW5kaWMgb2YgY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAWCAgICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlbiA9XG4gIHwgT3Blbl90YWcgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEB7ICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cbiAgfCBPcGVuX2JveCA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQFsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCB0eXBlIGVsZW1lbnRzLiAqKVxuKCogSW4gcGFydGljdWxhciB1c2VkIHRvIHJlcHJlc2VudCAlKC4uLiUpIGFuZCAley4uLiV9IGNvbnRlbnRzLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLFxuICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5hbmQgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCA9XG4gIHwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgU3RyaW5nX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVzICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoc3RyaW5nIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgc3RyaW5nIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlZCAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnQzMl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxkICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQzMiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludDMyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IE5hdGl2ZWludF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbmQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKG5hdGl2ZWludCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIG5hdGl2ZWludCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnQ2NF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxkICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQ2NCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludDY0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEZsb2F0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlZiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGZsb2F0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgZmxvYXQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQm9vbF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVCICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoYm9vbCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGJvb2wgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgfCBGb3JtYXRfYXJnX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG4gIHwgRm9ybWF0X3N1YnN0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcblxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnMuICopXG4gIHwgQWxwaGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAneCAtPiAnYzEpIC0+ICd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAneCAtPiAnYzIpIC0+ICd4IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFRoZXRhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAldCAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ2MxKSAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ2MyKSAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBBbnlfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFVzZWQgZm9yIGN1c3RvbSBmb3JtYXRzICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IFJlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICgnYjEgLT4gJ3gpIC0+ICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgKCdiMiAtPiAneCkgLT4gJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICgnYjEgLT4gJ3gpIC0+ICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgKCdiMiAtPiAneCkgLT4gJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgfCBFbmRfb2ZfZm10dHkgOlxuICAgICAgKCdmMSwgJ2IxLCAnYzEsICdkMSwgJ2QxLCAnZjEsXG4gICAgICAgJ2YyLCAnYjIsICdjMiwgJ2QyLCAnZDIsICdmMikgZm10dHlfcmVsXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IGVsZW1lbnRzLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgPVxuICB8IENoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVDICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFN0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVzICopXG4gICAgICAoJ3gsIHN0cmluZyAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVTICopXG4gICAgICAoJ3gsIHN0cmluZyAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQzMiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbFtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludDMyIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgTmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5bZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBuYXRpdmVpbnQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQ2NCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTFtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludDY0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgICAgIGZsb2F0X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBmbG9hdCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEJvb2wgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbYkJdICopXG4gICAgICAoJ3gsIGJvb2wgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbHVzaCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlISAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBhYmMgKilcbiAgICAgIHN0cmluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENoYXJfbGl0ZXJhbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIHggKilcbiAgICAgIGNoYXIgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IEZvcm1hdF9hcmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBBbHBoYSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdiIC0+ICd4IC0+ICdjKSAtPiAneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBUaGV0YSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAldCAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdiIC0+ICdjKSAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3I6ICopXG4gIHwgRm9ybWF0dGluZ19saXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgIGZvcm1hdHRpbmdfbGl0ICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRm9ybWF0dGluZ19nZW4gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UxLCAnZjEpIGZvcm1hdHRpbmdfZ2VuICpcbiAgICAgICgnZjEsICdiLCAnYywgJ2UxLCAnZTIsICdmMikgZm10IC0+ICgnYTEsICdiLCAnYywgJ2QxLCAnZTIsICdmMikgZm10XG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IFJlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCAtPiAnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbLi4uXSAqKVxuICAgICAgcGFkX29wdGlvbiAqIGNoYXJfc2V0ICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoc3RyaW5nIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbbmxOTF0gKilcbiAgICAgIGNvdW50ZXIgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChpbnQgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJTBjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJZ25vcmVkX3BhcmFtIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGlnbm9yZWQgKiAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBDdXN0b20gcHJpbnRpbmcgZm9ybWF0IChQUiM2NDUyLCBHUFIjMTQwKVxuXG4gICAgIFdlIGluY2x1ZGUgYSB0eXBlIEN1c3RvbSBvZiBcImN1c3RvbSBjb252ZXJ0ZXJzXCIsIHdoZXJlIGFuXG4gICAgIGFyYml0cmFyeSBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IG9uZSBvciBtb3JlXG4gICAgIGFyZ3VtZW50cy4gVGhlcmUgaXMgbm8gc3ludGF4IGZvciBjdXN0b20gY29udmVydGVycywgaXQgaXMgb25seVxuICAgICBpbnRlbmRlZCBmb3IgY3VzdG9tIHByb2Nlc3NvcnMgdGhhdCB3aXNoIHRvIHJlbHkgb24gdGhlXG4gICAgIHN0ZGxpYi1kZWZpbmVkIGZvcm1hdCBHQURUcy5cblxuICAgICBGb3IgaW5zdGFuY2UgYSBwcmUtcHJvY2Vzc29yIGNvdWxkIGNob29zZSB0byBpbnRlcnByZXQgc3RyaW5nc1xuICAgICBwcmVmaXhlZCB3aXRoIFtcIiFcIl0gYXMgZm9ybWF0IHN0cmluZ3Mgd2hlcmUgWyV7eyAuLi4gfX1dIGlzXG4gICAgIGEgc3BlY2lhbCBmb3JtIHRvIHBhc3MgYSB0b19zdHJpbmcgZnVuY3Rpb24sIHNvIHRoYXQgb25lIGNvdWxkXG4gICAgIHdyaXRlOlxuXG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID0geyB4IDogaW50OyB5IDogaW50IH1cblxuICAgICAgIGxldCBzdHJpbmdfb2ZfdCB0ID0gUHJpbnRmLnNwcmludGYgXCJ7IHggPSAlZDsgeSA9ICVkIH1cIiB0LnggdC55XG5cbiAgICAgICBQcmludGYucHJpbnRmICFcInQgPSAle3tzdHJpbmdfb2ZfdH19XCIgeyB4ID0gNDI7IHkgPSA0MiB9XG4gICAgIF19XG4gICopXG4gIHwgQ3VzdG9tIDpcbiAgICAgICgnYSwgJ3gsICd5KSBjdXN0b21fYXJpdHkgKiAodW5pdCAtPiAneCkgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoJ3ksICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogZW5kIG9mIGEgZm9ybWF0IHNwZWNpZmljYXRpb24gKilcbiAgfCBFbmRfb2ZfZm9ybWF0IDpcbiAgICAgICAgKCdmLCAnYiwgJ2MsICdlLCAnZSwgJ2YpIGZtdFxuXG4oKioqKVxuXG4oKiBUeXBlIGZvciBpZ25vcmVkIHBhcmFtZXRlcnMgKHNlZSBcIiVfXCIpLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBpZ25vcmVkID1cbiAgfCBJZ25vcmVkX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9DICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfcyAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfUyAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQzMiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9sZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9uZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQ2NCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9MZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9mICopXG4gICAgICBwYWRfb3B0aW9uICogcHJlY19vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Jvb2wgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0IgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3suLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9yZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICopXG4gICAgICAoJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9bLi4uXSAqKVxuICAgICAgcGFkX29wdGlvbiAqIGNoYXJfc2V0IC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9bbmxOTF0gKilcbiAgICAgIGNvdW50ZXIgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXzBjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAqIHN0cmluZ1xuXG5sZXQgcmVjIGVyYXNlX3JlbCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAoYSwgYiwgYywgZCwgZSwgZixcbiAgIGcsIGgsIGksIGosIGssIGwpIGZtdHR5X3JlbCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlcbj0gZnVuY3Rpb25cbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBDaGFyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBJbnQzMl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIEludDY0X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIEZsb2F0X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIF90eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MSwgZXJhc2VfcmVsIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgQW55X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGUgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0IHR5cGVzLiAqKVxuKCogVXNlZCBieTpcbiAgICogcmVhZGVyX25iX3VuaWZpZXJfb2ZfZm10dHkgdG8gY291bnQgcmVhZGVycyBpbiBhbiBmbXR0eSxcbiAgICogU2NhbmYudGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyB0byBleHRyYWN0IHJlYWRlcnMgaW5zaWRlICUoLi4uJSksXG4gICAqIENhbWxpbnRlcm5hbEZvcm1hdC5mbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCB0byBleHRyYWN0IGZvcm1hdCB0eXBlLiAqKVxuXG4oKlxubGV0IHJlYyBjb25jYXRfZm10dHkgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGcsIGgpIGZtdHR5ID1cbiopXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMlxuICAgICAgIGcxIGoxIGcyIGoyXG4gIC5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGQxLCBhMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGQyLCBhMikgZm10dHlfcmVsIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbCAtPlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZTEsIGYxLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZTIsIGYyKSBmbXR0eV9yZWwgPVxuZnVuIGZtdHR5MSBmbXR0eTIgLT4gbWF0Y2ggZm10dHkxIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBDaGFyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBJbnQzMl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIEludDY0X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIEZsb2F0X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgQW55X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEVuZF9vZl9mbXR0eSAtPiBmbXR0eTJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXRzLiAqKVxubGV0IHJlYyBjb25jYXRfZm10IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGcsIGgpIGZtdCA9XG5mdW4gZm10MSBmbXQyIC0+IG1hdGNoIGZtdDEgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIFN0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIENhbWxfc3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDY0IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBDaGFyIChyZXN0KSAtPlxuICAgIENoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgQ2FtbF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgQm9vbCAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgQWxwaGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFRoZXRhIHJlc3QgLT5cbiAgICBUaGV0YSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBDdXN0b20gKGFyaXR5LCBmLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBSZWFkZXIgcmVzdCAtPlxuICAgIFJlYWRlciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIEZsdXNoIChjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nX2xpdGVyYWwgKHN0ciwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgQ2hhcl9saXRlcmFsICAgKGNociwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmcgICAocGFkLCBmbXR0eSwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgKHJlc3QpIC0+XG4gICAgU2Nhbl9uZXh0X2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBJZ25vcmVkX3BhcmFtIChpZ24sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBmbXQyXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4Y2VwdGlvbnMgKilcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gJ2EgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICAoKiBmb3IgcnVudGltZS9mYWlsX25hdC5jICopXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5hcnJheV9ib3VuZF9lcnJvclwiXG4gICAgKEludmFsaWRfYXJndW1lbnQgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpXG5cbmV4dGVybmFsIHJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2VcIlxuZXh0ZXJuYWwgcmFpc2Vfbm90cmFjZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlX25vdHJhY2VcIlxuXG5sZXQgZmFpbHdpdGggcyA9IHJhaXNlKEZhaWx1cmUgcylcbmxldCBpbnZhbGlkX2FyZyBzID0gcmFpc2UoSW52YWxpZF9hcmd1bWVudCBzKVxuXG5leGNlcHRpb24gRXhpdFxuZXhjZXB0aW9uIE1hdGNoX2ZhaWx1cmUgPSBNYXRjaF9mYWlsdXJlXG5leGNlcHRpb24gQXNzZXJ0X2ZhaWx1cmUgPSBBc3NlcnRfZmFpbHVyZVxuZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgPSBJbnZhbGlkX2FyZ3VtZW50XG5leGNlcHRpb24gRmFpbHVyZSA9IEZhaWx1cmVcbmV4Y2VwdGlvbiBOb3RfZm91bmQgPSBOb3RfZm91bmRcbmV4Y2VwdGlvbiBPdXRfb2ZfbWVtb3J5ID0gT3V0X29mX21lbW9yeVxuZXhjZXB0aW9uIFN0YWNrX292ZXJmbG93ID0gU3RhY2tfb3ZlcmZsb3dcbmV4Y2VwdGlvbiBTeXNfZXJyb3IgPSBTeXNfZXJyb3JcbmV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSA9IEVuZF9vZl9maWxlXG5leGNlcHRpb24gRGl2aXNpb25fYnlfemVybyA9IERpdmlzaW9uX2J5X3plcm9cbmV4Y2VwdGlvbiBTeXNfYmxvY2tlZF9pbyA9IFN5c19ibG9ja2VkX2lvXG5leGNlcHRpb24gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgPSBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuXG4oKiBDb21wb3NpdGlvbiBvcGVyYXRvcnMgKilcblxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcbmV4dGVybmFsICggQEAgKSA6ICgnYSAtPiAnYikgLT4gJ2EgLT4gJ2IgPSBcIiVhcHBseVwiXG5cbigqIERlYnVnZ2luZyAqKVxuXG5leHRlcm5hbCBfX0xPQ19fIDogc3RyaW5nID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0ZJTEVfXyA6IHN0cmluZyA9IFwiJWxvY19GSUxFXCJcbmV4dGVybmFsIF9fTElORV9fIDogaW50ID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuZXh0ZXJuYWwgX19QT1NfXyA6IHN0cmluZyAqIGludCAqIGludCAqIGludCA9IFwiJWxvY19QT1NcIlxuZXh0ZXJuYWwgX19GVU5DVElPTl9fIDogc3RyaW5nID0gXCIlbG9jX0ZVTkNUSU9OXCJcblxuZXh0ZXJuYWwgX19MT0NfT0ZfXyA6ICdhIC0+IHN0cmluZyAqICdhID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0xJTkVfT0ZfXyA6ICdhIC0+IGludCAqICdhID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19QT1NfT0ZfXyA6ICdhIC0+IChzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQpICogJ2EgPSBcIiVsb2NfUE9TXCJcblxuKCogQ29tcGFyaXNvbnMgKilcblxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbmxldCBtaW4geCB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuZXh0ZXJuYWwgKCA9PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxXCJcbmV4dGVybmFsICggIT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcVwiXG5cbigqIEJvb2xlYW4gb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5cbigqIEludGVnZXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tICkgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsICggfisgKSA6IGludCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgKCAtICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCAoICogKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsICggLyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgKCBtb2QgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcblxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5cbmV4dGVybmFsICggbGFuZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgKCBsb3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgKCBseG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5cbmxldCBsbm90IHggPSB4IGx4b3IgKC0xKVxuXG5leHRlcm5hbCAoIGxzbCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgKCBsc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmV4dGVybmFsICggYXNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5cbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuXG4oKiBGbG9hdGluZy1wb2ludCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0uICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsICggfisuICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggKy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgKCAtLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCAoICouICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsICggLy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgKCAqKiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5oX2Zsb2F0XCIgXCJjYW1sX2FzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbmhfZmxvYXRcIiBcImNhbWxfYXRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5leHRlcm5hbCBjb3B5c2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIGZsb2F0X29mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdHJ1bmNhdGUgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGludF9vZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmxldCBpbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuZWdfaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4RkZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmFuID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0Y4XzAwXzAwXzAwXzAwXzAwXzAxTFxubGV0IG1heF9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9FRl9GRl9GRl9GRl9GRl9GRl9GRkxcbmxldCBtaW5fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4MDBfMTBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgZXBzaWxvbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgzQ19CMF8wMF8wMF8wMF8wMF8wMF8wMExcblxudHlwZSBmcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5cbigqIFN0cmluZyBhbmQgYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlcyBTdHJpbmcgYW5kIEJ5dGVzICopXG5cbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19sZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCBzdHJpbmdfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBieXRlc19ibGl0IDogYnl0ZXMgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBieXRlc191bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxubGV0ICggXiApIHMxIHMyID1cbiAgbGV0IGwxID0gc3RyaW5nX2xlbmd0aCBzMSBhbmQgbDIgPSBzdHJpbmdfbGVuZ3RoIHMyIGluXG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIChsMSArIGwyKSBpblxuICBzdHJpbmdfYmxpdCBzMSAwIHMgMCBsMTtcbiAgc3RyaW5nX2JsaXQgczIgMCBzIGwxIGwyO1xuICBieXRlc191bnNhZmVfdG9fc3RyaW5nIHNcblxuKCogQ2hhcmFjdGVyIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgQ2hhciAqKVxuXG5leHRlcm5hbCBpbnRfb2ZfY2hhciA6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NoYXJfb2ZfaW50IDogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5sZXQgY2hhcl9vZl9pbnQgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcImNoYXJfb2ZfaW50XCIgZWxzZSB1bnNhZmVfY2hhcl9vZl9pbnQgblxuXG4oKiBVbml0IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIFBhaXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBmc3QgOiAnYSAqICdiIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsIHNuZCA6ICdhICogJ2IgLT4gJ2IgPSBcIiVmaWVsZDFcIlxuXG4oKiBSZWZlcmVuY2VzICopXG5cbnR5cGUgJ2EgcmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuZXh0ZXJuYWwgaW5jciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWluY3JcIlxuZXh0ZXJuYWwgZGVjciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWRlY3JcIlxuXG4oKiBSZXN1bHQgdHlwZSAqKVxuXG50eXBlICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYlxuXG4oKiBTdHJpbmcgY29udmVyc2lvbiBmdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG5sZXQgc3RyaW5nX29mX2Jvb2wgYiA9XG4gIGlmIGIgdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIlxubGV0IGJvb2xfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgXyAtPiBpbnZhbGlkX2FyZyBcImJvb2xfb2Zfc3RyaW5nXCJcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gU29tZSB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IFNvbWUgZmFsc2VcbiAgfCBfIC0+IE5vbmVcblxubGV0IHN0cmluZ19vZl9pbnQgbiA9XG4gIGZvcm1hdF9pbnQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5cbmxldCBpbnRfb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogcHJvdmlkZSB0aGlzIGRpcmVjdGx5IGFzIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlLiAqKVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmV4dGVybmFsIHN0cmluZ19nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gc3RyaW5nX2xlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID49IGwgdGhlbiBzIF4gXCIuXCIgZWxzZVxuICAgIG1hdGNoIHN0cmluZ19nZXQgcyBpIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgfCBfIC0+IHNcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzdHJpbmdfb2ZfZmxvYXQgZiA9IHZhbGlkX2Zsb2F0X2xleGVtIChmb3JtYXRfZmxvYXQgXCIlLjEyZ1wiIGYpXG5cbmV4dGVybmFsIGZsb2F0X29mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxuXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogcHJvdmlkZSB0aGlzIGRpcmVjdGx5IGFzIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlLiAqKVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuKCogTGlzdCBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIExpc3QgKilcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgKCBAICkgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gIHwgW10gLT4gbDJcbiAgfCBoMSA6OiBbXSAtPiBoMSA6OiBsMlxuICB8IGgxIDo6IGgyIDo6IFtdIC0+IGgxIDo6IGgyIDo6IGwyXG4gIHwgaDEgOjogaDIgOjogaDMgOjogdGwgLT4gaDEgOjogaDIgOjogaDMgOjogKHRsIEAgbDIpXG5cbigqIEkvTyBvcGVyYXRpb25zICopXG5cbnR5cGUgaW5fY2hhbm5lbFxudHlwZSBvdXRfY2hhbm5lbFxuXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDogaW50IC0+IG91dF9jaGFubmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcIlxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX2luIDogaW50IC0+IGluX2NoYW5uZWwgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXCJcblxubGV0IHN0ZGluID0gb3Blbl9kZXNjcmlwdG9yX2luIDBcbmxldCBzdGRvdXQgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDFcbmxldCBzdGRlcnIgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDJcblxuKCogR2VuZXJhbCBvdXRwdXQgZnVuY3Rpb25zICopXG5cbnR5cGUgb3Blbl9mbGFnID1cbiAgICBPcGVuX3Jkb25seSB8IE9wZW5fd3Jvbmx5IHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0IHwgT3Blbl90cnVuYyB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5IHwgT3Blbl90ZXh0IHwgT3Blbl9ub25ibG9ja1xuXG5leHRlcm5hbCBvcGVuX2Rlc2MgOiBzdHJpbmcgLT4gb3Blbl9mbGFnIGxpc3QgLT4gaW50IC0+IGludCA9IFwiY2FtbF9zeXNfb3BlblwiXG5cbmV4dGVybmFsIHNldF9vdXRfY2hhbm5lbF9uYW1lOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5fb3V0X2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX291dChvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9vdXRfY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9vdXQgbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fdGV4dF0gMG82NjYgbmFtZVxuXG5sZXQgb3Blbl9vdXRfYmluIG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX2JpbmFyeV0gMG82NjYgbmFtZVxuXG5leHRlcm5hbCBmbHVzaCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfZmx1c2hcIlxuXG5leHRlcm5hbCBvdXRfY2hhbm5lbHNfbGlzdCA6IHVuaXQgLT4gb3V0X2NoYW5uZWwgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3RcIlxuXG5sZXQgZmx1c2hfYWxsICgpID1cbiAgbGV0IHJlYyBpdGVyID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+ICgpXG4gICAgfCBhOjpsIC0+XG4gICAgICAgIGJlZ2luIHRyeVxuICAgICAgICAgICAgZmx1c2ggYVxuICAgICAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAgICAgKCkgKCogaWdub3JlIGNoYW5uZWxzIGNsb3NlZCBkdXJpbmcgYSBwcmVjZWRpbmcgZmx1c2guICopXG4gICAgICAgIGVuZDtcbiAgICAgICAgaXRlciBsXG4gIGluIGl0ZXIgKG91dF9jaGFubmVsc19saXN0ICgpKVxuXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0IDogb3V0X2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dF9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0X3N0cmluZyA6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dFwiXG5cbmV4dGVybmFsIG91dHB1dF9jaGFyIDogb3V0X2NoYW5uZWwgLT4gY2hhciAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcblxubGV0IG91dHB1dF9ieXRlcyBvYyBzID1cbiAgdW5zYWZlX291dHB1dCBvYyBzIDAgKGJ5dGVzX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0X3N0cmluZyBvYyBzID1cbiAgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyAwIChzdHJpbmdfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXQgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXQgb2MgcyBvZnMgbGVuXG5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBzdHJpbmdfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dF9zdWJzdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgb2ZzIGxlblxuXG5leHRlcm5hbCBvdXRwdXRfYnl0ZSA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcbmV4dGVybmFsIG91dHB1dF9iaW5hcnlfaW50IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2ludFwiXG5cbmV4dGVybmFsIG1hcnNoYWxfdG9fY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+ICdhIC0+IHVuaXQgbGlzdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5sZXQgb3V0cHV0X3ZhbHVlIGNoYW4gdiA9IG1hcnNoYWxfdG9fY2hhbm5lbCBjaGFuIHYgW11cblxuZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dFwiXG5leHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19vdXRcIlxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9vdXRfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2Vfb3V0IG9jID0gZmx1c2ggb2M7IGNsb3NlX291dF9jaGFubmVsIG9jXG5sZXQgY2xvc2Vfb3V0X25vZXJyIG9jID1cbiAgKHRyeSBmbHVzaCBvYyB3aXRoIF8gLT4gKCkpO1xuICAodHJ5IGNsb3NlX291dF9jaGFubmVsIG9jIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9vdXQgOiBvdXRfY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogR2VuZXJhbCBpbnB1dCBmdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgc2V0X2luX2NoYW5uZWxfbmFtZTogaW5fY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5faW5fZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3JfaW4ob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfaW5fY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9pbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX3RleHRdIDAgbmFtZVxuXG5sZXQgb3Blbl9pbl9iaW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl9iaW5hcnldIDAgbmFtZVxuXG5leHRlcm5hbCBpbnB1dF9jaGFyIDogaW5fY2hhbm5lbCAtPiBjaGFyID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuXG5leHRlcm5hbCB1bnNhZmVfaW5wdXQgOiBpbl9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfaW5wdXRcIlxuXG5sZXQgaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJpbnB1dFwiXG4gIGVsc2UgdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVjIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgbGVuIDw9IDAgdGhlbiAoKSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuIGluXG4gICAgaWYgciA9IDBcbiAgICB0aGVuIHJhaXNlIEVuZF9vZl9maWxlXG4gICAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgKG9mcyArIHIpIChsZW4gLSByKVxuICBlbmRcblxubGV0IHJlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcInJlYWxseV9pbnB1dFwiXG4gIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuID1cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgbGVuIGluXG4gIHJlYWxseV9pbnB1dCBpYyBzIDAgbGVuO1xuICBieXRlc191bnNhZmVfdG9fc3RyaW5nIHNcblxuZXh0ZXJuYWwgaW5wdXRfc2Nhbl9saW5lIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXCJcblxubGV0IGlucHV0X2xpbmUgY2hhbiA9XG4gIGxldCByZWMgYnVpbGRfcmVzdWx0IGJ1ZiBwb3MgPSBmdW5jdGlvblxuICAgIFtdIC0+IGJ1ZlxuICB8IGhkIDo6IHRsIC0+XG4gICAgICBsZXQgbGVuID0gYnl0ZXNfbGVuZ3RoIGhkIGluXG4gICAgICBieXRlc19ibGl0IGhkIDAgYnVmIChwb3MgLSBsZW4pIGxlbjtcbiAgICAgIGJ1aWxkX3Jlc3VsdCBidWYgKHBvcyAtIGxlbikgdGwgaW5cbiAgbGV0IHJlYyBzY2FuIGFjY3UgbGVuID1cbiAgICBsZXQgbiA9IGlucHV0X3NjYW5fbGluZSBjaGFuIGluXG4gICAgaWYgbiA9IDAgdGhlbiBiZWdpbiAgICAgICAgICAgICAgICAgICAoKiBuID0gMDogd2UgYXJlIGF0IEVPRiAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJhaXNlIEVuZF9vZl9maWxlXG4gICAgICB8IF8gIC0+IGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIGFjY3VcbiAgICBlbmQgZWxzZSBpZiBuID4gMCB0aGVuIGJlZ2luICAgICAgICAgICgqIG4gPiAwOiBuZXdsaW5lIGZvdW5kIGluIGJ1ZmZlciAqKVxuICAgICAgbGV0IHJlcyA9IGJ5dGVzX2NyZWF0ZSAobiAtIDEpIGluXG4gICAgICBpZ25vcmUgKHVuc2FmZV9pbnB1dCBjaGFuIHJlcyAwIChuIC0gMSkpO1xuICAgICAgaWdub3JlIChpbnB1dF9jaGFyIGNoYW4pOyAgICAgICAgICAgKCogc2tpcCB0aGUgbmV3bGluZSAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJlc1xuICAgICAgfCAgXyAtPiBsZXQgbGVuID0gbGVuICsgbiAtIDEgaW5cbiAgICAgICAgICAgICAgYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gKHJlcyA6OiBhY2N1KVxuICAgIGVuZCBlbHNlIGJlZ2luICAgICAgICAgICAgICAgICAgICAgICAgKCogbiA8IDA6IG5ld2xpbmUgbm90IGZvdW5kICopXG4gICAgICBsZXQgYmVnID0gYnl0ZXNfY3JlYXRlICgtbikgaW5cbiAgICAgIGlnbm9yZSh1bnNhZmVfaW5wdXQgY2hhbiBiZWcgMCAoLW4pKTtcbiAgICAgIHNjYW4gKGJlZyA6OiBhY2N1KSAobGVuIC0gbilcbiAgICBlbmRcbiAgaW4gYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyAoc2NhbiBbXSAwKVxuXG5leHRlcm5hbCBpbnB1dF9ieXRlIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5leHRlcm5hbCBpbnB1dF9iaW5hcnlfaW50IDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfaW50XCJcbmV4dGVybmFsIGlucHV0X3ZhbHVlIDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXCJcbmV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19pblwiXG5leHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9pbl9ub2VyciBpYyA9ICh0cnkgY2xvc2VfaW4gaWMgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX2luIDogaW5fY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIG91dHB1dCAqKVxuXG5sZXQgcHJpbnRfY2hhciBjID0gb3V0cHV0X2NoYXIgc3Rkb3V0IGNcbmxldCBwcmludF9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IHNcbmxldCBwcmludF9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZG91dCBzXG5sZXQgcHJpbnRfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByaW50X2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJpbnRfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRvdXQgczsgb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcbmxldCBwcmludF9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBlcnJvciAqKVxuXG5sZXQgcHJlcnJfY2hhciBjID0gb3V0cHV0X2NoYXIgc3RkZXJyIGNcbmxldCBwcmVycl9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIHNcbmxldCBwcmVycl9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZGVyciBzXG5sZXQgcHJlcnJfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByZXJyX2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJlcnJfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRlcnIgczsgb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcbmxldCBwcmVycl9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcblxuKCogSW5wdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGlucHV0ICopXG5cbmxldCByZWFkX2xpbmUgKCkgPSBmbHVzaCBzdGRvdXQ7IGlucHV0X2xpbmUgc3RkaW5cbmxldCByZWFkX2ludCAoKSA9IGludF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9pbnRfb3B0ICgpID0gaW50X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdCAoKSA9IGZsb2F0X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0X29wdCAoKSA9IGZsb2F0X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5cbigqIE9wZXJhdGlvbnMgb24gbGFyZ2UgZmlsZXMgKilcblxubW9kdWxlIExhcmdlRmlsZSA9XG4gIHN0cnVjdFxuICAgIGV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dF82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19vdXRfNjRcIlxuICAgIGV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludDY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gICAgZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXzY0XCJcbiAgICBleHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19pbl82NFwiXG4gICAgZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gIGVuZFxuXG4oKiBGb3JtYXRzICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgID0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG4gICA9IEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZtdFxuICAgICAgICAgICAgICAgKiBzdHJpbmdcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2MsICdjLCAnZCkgZm9ybWF0NlxuXG50eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYywgJ2MpIGZvcm1hdDRcblxubGV0IHN0cmluZ19vZl9mb3JtYXQgKEZvcm1hdCAoX2ZtdCwgc3RyKSkgPSBzdHJcblxuZXh0ZXJuYWwgZm9ybWF0X29mX3N0cmluZyA6XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9IFwiJWlkZW50aXR5XCJcblxubGV0ICggXl4gKSAoRm9ybWF0IChmbXQxLCBzdHIxKSkgKEZvcm1hdCAoZm10Miwgc3RyMikpID1cbiAgRm9ybWF0IChDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29uY2F0X2ZtdCBmbXQxIGZtdDIsXG4gICAgICAgICAgc3RyMSBeIFwiJSxcIiBeIHN0cjIpXG5cbigqIE1pc2NlbGxhbmVvdXMgKilcblxuZXh0ZXJuYWwgc3lzX2V4aXQgOiBpbnQgLT4gJ2EgPSBcImNhbWxfc3lzX2V4aXRcIlxuXG4oKiBmb3IgYXRfZXhpdCAqKVxudHlwZSAnYSBhdG9taWNfdFxuZXh0ZXJuYWwgYXRvbWljX21ha2UgOiAnYSAtPiAnYSBhdG9taWNfdCA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsIGF0b21pY19nZXQgOiAnYSBhdG9taWNfdCAtPiAnYSA9IFwiJWF0b21pY19sb2FkXCJcbmV4dGVybmFsIGF0b21pY19jb21wYXJlX2FuZF9zZXQgOiAnYSBhdG9taWNfdCAtPiAnYSAtPiAnYSAtPiBib29sXG4gID0gXCIlYXRvbWljX2Nhc1wiXG5cbmxldCBleGl0X2Z1bmN0aW9uID0gYXRvbWljX21ha2UgZmx1c2hfYWxsXG5cbmxldCByZWMgYXRfZXhpdCBmID1cbiAgKCogTVBSIzcyNTMsIE1QUiM3Nzk2OiBtYWtlIHN1cmUgXCJmXCIgaXMgZXhlY3V0ZWQgb25seSBvbmNlICopXG4gIGxldCBmX3lldF90b19ydW4gPSBhdG9taWNfbWFrZSB0cnVlIGluXG4gIGxldCBvbGRfZXhpdCA9IGF0b21pY19nZXQgZXhpdF9mdW5jdGlvbiBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgIGlmIGF0b21pY19jb21wYXJlX2FuZF9zZXQgZl95ZXRfdG9fcnVuIHRydWUgZmFsc2UgdGhlbiBmICgpIDtcbiAgICBvbGRfZXhpdCAoKVxuICBpblxuICBsZXQgc3VjY2VzcyA9IGF0b21pY19jb21wYXJlX2FuZF9zZXQgZXhpdF9mdW5jdGlvbiBvbGRfZXhpdCBuZXdfZXhpdCBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIGF0X2V4aXQgZlxuXG5sZXQgZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQgPSByZWYgKGZ1biAoKSAtPiAoKSlcblxubGV0IGRvX2F0X2V4aXQgKCkgPVxuICAoIWRvX2RvbWFpbl9sb2NhbF9hdF9leGl0KSAoKTtcbiAgKGF0b21pY19nZXQgZXhpdF9mdW5jdGlvbikgKClcblxubGV0IGV4aXQgcmV0Y29kZSA9XG4gIGRvX2F0X2V4aXQgKCk7XG4gIHN5c19leGl0IHJldGNvZGVcblxubGV0IF8gPSByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiIGRvX2F0X2V4aXRcblxuKCpNT0RVTEVfQUxJQVNFUyopXG5tb2R1bGUgQXJnICAgICAgICAgICAgPSBBcmdcbm1vZHVsZSBBcnJheSAgICAgICAgICA9IEFycmF5XG5tb2R1bGUgQXJyYXlMYWJlbHMgICAgPSBBcnJheUxhYmVsc1xubW9kdWxlIEF0b21pYyAgICAgICAgID0gQXRvbWljXG5tb2R1bGUgQmlnYXJyYXkgICAgICAgPSBCaWdhcnJheVxubW9kdWxlIEJvb2wgICAgICAgICAgID0gQm9vbFxubW9kdWxlIEJ1ZmZlciAgICAgICAgID0gQnVmZmVyXG5tb2R1bGUgQnl0ZXMgICAgICAgICAgPSBCeXRlc1xubW9kdWxlIEJ5dGVzTGFiZWxzICAgID0gQnl0ZXNMYWJlbHNcbm1vZHVsZSBDYWxsYmFjayAgICAgICA9IENhbGxiYWNrXG5tb2R1bGUgQ2hhciAgICAgICAgICAgPSBDaGFyXG5tb2R1bGUgQ29tcGxleCAgICAgICAgPSBDb21wbGV4XG5tb2R1bGUgQ29uZGl0aW9uICAgICAgPSBDb25kaXRpb25cbm1vZHVsZSBEaWdlc3QgICAgICAgICA9IERpZ2VzdFxubW9kdWxlIERvbWFpbiAgICAgICAgID0gRG9tYWluXG5tb2R1bGUgRHluYXJyYXkgICAgICAgPSBEeW5hcnJheVxubW9kdWxlIEVmZmVjdCAgICAgICAgID0gRWZmZWN0XG5tb2R1bGUgRWl0aGVyICAgICAgICAgPSBFaXRoZXJcbm1vZHVsZSBFcGhlbWVyb24gICAgICA9IEVwaGVtZXJvblxubW9kdWxlIEZpbGVuYW1lICAgICAgID0gRmlsZW5hbWVcbm1vZHVsZSBGbG9hdCAgICAgICAgICA9IEZsb2F0XG5tb2R1bGUgRm9ybWF0ICAgICAgICAgPSBGb3JtYXRcbm1vZHVsZSBGdW4gICAgICAgICAgICA9IEZ1blxubW9kdWxlIEdjICAgICAgICAgICAgID0gR2Ncbm1vZHVsZSBIYXNodGJsICAgICAgICA9IEhhc2h0Ymxcbm1vZHVsZSBJbl9jaGFubmVsICAgICA9IEluX2NoYW5uZWxcbm1vZHVsZSBJbnQgICAgICAgICAgICA9IEludFxubW9kdWxlIEludDMyICAgICAgICAgID0gSW50MzJcbm1vZHVsZSBJbnQ2NCAgICAgICAgICA9IEludDY0XG5tb2R1bGUgTGF6eSAgICAgICAgICAgPSBMYXp5XG5tb2R1bGUgTGV4aW5nICAgICAgICAgPSBMZXhpbmdcbm1vZHVsZSBMaXN0ICAgICAgICAgICA9IExpc3Rcbm1vZHVsZSBMaXN0TGFiZWxzICAgICA9IExpc3RMYWJlbHNcbm1vZHVsZSBNYXAgICAgICAgICAgICA9IE1hcFxubW9kdWxlIE1hcnNoYWwgICAgICAgID0gTWFyc2hhbFxubW9kdWxlIE1vcmVMYWJlbHMgICAgID0gTW9yZUxhYmVsc1xubW9kdWxlIE11dGV4ICAgICAgICAgID0gTXV0ZXhcbm1vZHVsZSBOYXRpdmVpbnQgICAgICA9IE5hdGl2ZWludFxubW9kdWxlIE9iaiAgICAgICAgICAgID0gT2JqXG5tb2R1bGUgT28gICAgICAgICAgICAgPSBPb1xubW9kdWxlIE9wdGlvbiAgICAgICAgID0gT3B0aW9uXG5tb2R1bGUgT3V0X2NoYW5uZWwgICAgPSBPdXRfY2hhbm5lbFxubW9kdWxlIFBhcnNpbmcgICAgICAgID0gUGFyc2luZ1xubW9kdWxlIFByaW50ZXhjICAgICAgID0gUHJpbnRleGNcbm1vZHVsZSBQcmludGYgICAgICAgICA9IFByaW50ZlxubW9kdWxlIFF1ZXVlICAgICAgICAgID0gUXVldWVcbm1vZHVsZSBSYW5kb20gICAgICAgICA9IFJhbmRvbVxubW9kdWxlIFJlc3VsdCAgICAgICAgID0gUmVzdWx0XG5tb2R1bGUgU2NhbmYgICAgICAgICAgPSBTY2FuZlxubW9kdWxlIFNlbWFwaG9yZSAgICAgID0gU2VtYXBob3JlXG5tb2R1bGUgU2VxICAgICAgICAgICAgPSBTZXFcbm1vZHVsZSBTZXQgICAgICAgICAgICA9IFNldFxubW9kdWxlIFN0YWNrICAgICAgICAgID0gU3RhY2tcbm1vZHVsZSBTdGRMYWJlbHMgICAgICA9IFN0ZExhYmVsc1xubW9kdWxlIFN0cmluZyAgICAgICAgID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nTGFiZWxzICAgPSBTdHJpbmdMYWJlbHNcbm1vZHVsZSBTeXMgICAgICAgICAgICA9IFN5c1xubW9kdWxlIFR5cGUgICAgICAgICAgID0gVHlwZVxubW9kdWxlIFVjaGFyICAgICAgICAgID0gVWNoYXJcbm1vZHVsZSBVbml0ICAgICAgICAgICA9IFVuaXRcbm1vZHVsZSBXZWFrICAgICAgICAgICA9IFdlYWtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgR2FicmllbCBTY2hlcmVyLCBwcm9qZXQgUGFyc2lmYWwsIElOUklBIFNhY2xheSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdiKSB0ID0gTGVmdCBvZiAnYSB8IFJpZ2h0IG9mICdiXG5cbmxldCBsZWZ0IHYgPSBMZWZ0IHZcbmxldCByaWdodCB2ID0gUmlnaHQgdlxuXG5sZXQgaXNfbGVmdCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiB0cnVlXG58IFJpZ2h0IF8gLT4gZmFsc2VcblxubGV0IGlzX3JpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IGZhbHNlXG58IFJpZ2h0IF8gLT4gdHJ1ZVxuXG5sZXQgZmluZF9sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IFNvbWUgdlxufCBSaWdodCBfIC0+IE5vbmVcblxubGV0IGZpbmRfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gTm9uZVxufCBSaWdodCB2IC0+IFNvbWUgdlxuXG5sZXQgbWFwX2xlZnQgZiA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChmIHYpXG58IFJpZ2h0IF8gYXMgZSAtPiBlXG5cbmxldCBtYXBfcmlnaHQgZiA9IGZ1bmN0aW9uXG58IExlZnQgXyBhcyBlIC0+IGVcbnwgUmlnaHQgdiAtPiBSaWdodCAoZiB2KVxuXG5sZXQgbWFwIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChsZWZ0IHYpXG58IFJpZ2h0IHYgLT4gUmlnaHQgKHJpZ2h0IHYpXG5cbmxldCBmb2xkIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBsZWZ0IHZcbnwgUmlnaHQgdiAtPiByaWdodCB2XG5cbmxldCBpdGVyID0gZm9sZFxuXG5sZXQgZm9yX2FsbCA9IGZvbGRcblxubGV0IGVxdWFsIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIHwgUmlnaHQgXywgTGVmdCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIC0+ICgtMSlcbnwgUmlnaHQgXywgTGVmdCBfIC0+IDFcbiIsIigqIEBjb25maWd1cmVfaW5wdXRAICopXG4jMyBcInN5cy5tbC5pblwiXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYmFja2VuZF90eXBlID1cbiAgfCBOYXRpdmVcbiAgfCBCeXRlY29kZVxuICB8IE90aGVyIG9mIHN0cmluZ1xuKCogU3lzdGVtIGludGVyZmFjZSAqKVxuXG5leHRlcm5hbCBnZXRfY29uZmlnOiB1bml0IC0+IHN0cmluZyAqIGludCAqIGJvb2wgPSBcImNhbWxfc3lzX2dldF9jb25maWdcIlxuZXh0ZXJuYWwgZ2V0X2V4ZWN1dGFibGVfbmFtZSA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3N5c19leGVjdXRhYmxlX25hbWVcIlxuZXh0ZXJuYWwgYXJndiA6IHN0cmluZyBhcnJheSA9IFwiJXN5c19hcmd2XCJcbmV4dGVybmFsIGJpZ19lbmRpYW4gOiB1bml0IC0+IGJvb2wgPSBcIiViaWdfZW5kaWFuXCJcbmV4dGVybmFsIHdvcmRfc2l6ZSA6IHVuaXQgLT4gaW50ID0gXCIld29yZF9zaXplXCJcbmV4dGVybmFsIGludF9zaXplIDogdW5pdCAtPiBpbnQgPSBcIiVpbnRfc2l6ZVwiXG5leHRlcm5hbCBtYXhfd29zaXplIDogdW5pdCAtPiBpbnQgPSBcIiVtYXhfd29zaXplXCJcbmV4dGVybmFsIHVuaXggOiB1bml0IC0+IGJvb2wgPSBcIiVvc3R5cGVfdW5peFwiXG5leHRlcm5hbCB3aW4zMiA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV93aW4zMlwiXG5leHRlcm5hbCBjeWd3aW4gOiB1bml0IC0+IGJvb2wgPSBcIiVvc3R5cGVfY3lnd2luXCJcbmV4dGVybmFsIGdldF9iYWNrZW5kX3R5cGUgOiB1bml0IC0+IGJhY2tlbmRfdHlwZSA9IFwiJWJhY2tlbmRfdHlwZVwiXG5cbmxldCBleGVjdXRhYmxlX25hbWUgPSBnZXRfZXhlY3V0YWJsZV9uYW1lKClcbmxldCAob3NfdHlwZSwgXywgXykgPSBnZXRfY29uZmlnKClcbmxldCBiYWNrZW5kX3R5cGUgPSBnZXRfYmFja2VuZF90eXBlICgpXG5sZXQgYmlnX2VuZGlhbiA9IGJpZ19lbmRpYW4gKClcbmxldCB3b3JkX3NpemUgPSB3b3JkX3NpemUgKClcbmxldCBpbnRfc2l6ZSA9IGludF9zaXplICgpXG5sZXQgdW5peCA9IHVuaXggKClcbmxldCB3aW4zMiA9IHdpbjMyICgpXG5sZXQgY3lnd2luID0gY3lnd2luICgpXG5sZXQgbWF4X2FycmF5X2xlbmd0aCA9IG1heF93b3NpemUgKClcbmxldCBtYXhfZmxvYXRhcnJheV9sZW5ndGggPSBtYXhfYXJyYXlfbGVuZ3RoIC8gKDY0IC8gd29yZF9zaXplKVxubGV0IG1heF9zdHJpbmdfbGVuZ3RoID0gd29yZF9zaXplIC8gOCAqIG1heF9hcnJheV9sZW5ndGggLSAxXG5leHRlcm5hbCBydW50aW1lX3ZhcmlhbnQgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9ydW50aW1lX3ZhcmlhbnRcIlxuZXh0ZXJuYWwgcnVudGltZV9wYXJhbWV0ZXJzIDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfcnVudGltZV9wYXJhbWV0ZXJzXCJcblxuZXh0ZXJuYWwgZmlsZV9leGlzdHM6IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N5c19maWxlX2V4aXN0c1wiXG5leHRlcm5hbCBpc19kaXJlY3RvcnkgOiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zeXNfaXNfZGlyZWN0b3J5XCJcbmV4dGVybmFsIGlzX3JlZ3VsYXJfZmlsZSA6IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGVcIlxuZXh0ZXJuYWwgcmVtb3ZlOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfcmVtb3ZlXCJcbmV4dGVybmFsIHJlbmFtZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfcmVuYW1lXCJcbmV4dGVybmFsIGdldGVudjogc3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9zeXNfZ2V0ZW52XCJcblxubGV0IGdldGVudl9vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKGdldGVudiBzKVxuICB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cbmV4dGVybmFsIGNvbW1hbmQ6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXCJcbmV4dGVybmFsIHRpbWU6IHVuaXQgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX3N5c190aW1lXCIgXCJjYW1sX3N5c190aW1lX3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2hkaXI6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19jaGRpclwiXG5leHRlcm5hbCBta2Rpcjogc3RyaW5nIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19ta2RpclwiXG5leHRlcm5hbCBybWRpcjogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JtZGlyXCJcbmV4dGVybmFsIGdldGN3ZDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2dldGN3ZFwiXG5leHRlcm5hbCByZWFkZGlyIDogc3RyaW5nIC0+IHN0cmluZyBhcnJheSA9IFwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnlcIlxuXG5sZXQgaW50ZXJhY3RpdmUgPSByZWYgZmFsc2VcblxudHlwZSBzaWduYWxfYmVoYXZpb3IgPVxuICAgIFNpZ25hbF9kZWZhdWx0XG4gIHwgU2lnbmFsX2lnbm9yZVxuICB8IFNpZ25hbF9oYW5kbGUgb2YgKGludCAtPiB1bml0KVxuXG5leHRlcm5hbCBzaWduYWwgOiBpbnQgLT4gc2lnbmFsX2JlaGF2aW9yIC0+IHNpZ25hbF9iZWhhdmlvclxuICAgICAgICAgICAgICAgID0gXCJjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXJcIlxuXG5sZXQgc2V0X3NpZ25hbCBzaWdfbnVtIHNpZ19iZWggPSBpZ25vcmUoc2lnbmFsIHNpZ19udW0gc2lnX2JlaClcblxubGV0IHNpZ2FicnQgPSAtMVxubGV0IHNpZ2Fscm0gPSAtMlxubGV0IHNpZ2ZwZSA9IC0zXG5sZXQgc2lnaHVwID0gLTRcbmxldCBzaWdpbGwgPSAtNVxubGV0IHNpZ2ludCA9IC02XG5sZXQgc2lna2lsbCA9IC03XG5sZXQgc2lncGlwZSA9IC04XG5sZXQgc2lncXVpdCA9IC05XG5sZXQgc2lnc2VndiA9IC0xMFxubGV0IHNpZ3Rlcm0gPSAtMTFcbmxldCBzaWd1c3IxID0gLTEyXG5sZXQgc2lndXNyMiA9IC0xM1xubGV0IHNpZ2NobGQgPSAtMTRcbmxldCBzaWdjb250ID0gLTE1XG5sZXQgc2lnc3RvcCA9IC0xNlxubGV0IHNpZ3RzdHAgPSAtMTdcbmxldCBzaWd0dGluID0gLTE4XG5sZXQgc2lndHRvdSA9IC0xOVxubGV0IHNpZ3Z0YWxybSA9IC0yMFxubGV0IHNpZ3Byb2YgPSAtMjFcbmxldCBzaWdidXMgPSAtMjJcbmxldCBzaWdwb2xsID0gLTIzXG5sZXQgc2lnc3lzID0gLTI0XG5sZXQgc2lndHJhcCA9IC0yNVxubGV0IHNpZ3VyZyA9IC0yNlxubGV0IHNpZ3hjcHUgPSAtMjdcbmxldCBzaWd4ZnN6ID0gLTI4XG5cbmV4Y2VwdGlvbiBCcmVha1xuXG5sZXQgY2F0Y2hfYnJlYWsgb24gPVxuICBpZiBvbiB0aGVuXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgKFNpZ25hbF9oYW5kbGUoZnVuIF8gLT4gcmFpc2UgQnJlYWspKVxuICBlbHNlXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgU2lnbmFsX2RlZmF1bHRcblxuXG5leHRlcm5hbCBlbmFibGVfcnVudGltZV93YXJuaW5nczogYm9vbCAtPiB1bml0ID1cbiAgXCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXCJcbmV4dGVybmFsIHJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZDogdW5pdCAtPiBib29sID1cbiAgXCJjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFwiXG5cbigqIFRoZSB2ZXJzaW9uIHN0cmluZyBpcyBmb3VuZCBpbiBmaWxlIC4uL1ZFUlNJT04gKilcblxubGV0IG9jYW1sX3ZlcnNpb24gPSBcIkBWRVJTSU9OQFwiXG5cbmxldCBkZXZlbG9wbWVudF92ZXJzaW9uID0gQE9DQU1MX0RFVkVMT1BNRU5UX1ZFUlNJT05AXG5cbnR5cGUgZXh0cmFfcHJlZml4ID0gUGx1cyB8IFRpbGRlXG5cbnR5cGUgZXh0cmFfaW5mbyA9IGV4dHJhX3ByZWZpeCAqIHN0cmluZ1xuXG50eXBlIG9jYW1sX3JlbGVhc2VfaW5mbyA9IHtcbiAgbWFqb3IgOiBpbnQ7XG4gIG1pbm9yIDogaW50O1xuICBwYXRjaGxldmVsIDogaW50O1xuICBleHRyYSA6IGV4dHJhX2luZm8gb3B0aW9uXG59XG5cbmxldCBvY2FtbF9yZWxlYXNlID0ge1xuICBtYWpvciA9IEBPQ0FNTF9WRVJTSU9OX01BSk9SQDtcbiAgbWlub3IgPSBAT0NBTUxfVkVSU0lPTl9NSU5PUkA7XG4gIHBhdGNobGV2ZWwgPSBAT0NBTUxfVkVSU0lPTl9QQVRDSExFVkVMQDtcbiAgZXh0cmEgPSBAT0NBTUxfUkVMRUFTRV9FWFRSQUBcbn1cblxuKCogT3B0aW1pemF0aW9uICopXG5cbmV4dGVybmFsIG9wYXF1ZV9pZGVudGl0eSA6ICdhIC0+ICdhID0gXCIlb3BhcXVlXCJcblxubW9kdWxlIEltbWVkaWF0ZTY0ID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG4gICAgZXh0ZXJuYWwgbWFnaWMgOiBfIHJlcHIgLT4gdCByZXByID0gXCIlaWRlbnRpdHlcIlxuICAgIGxldCByZXByID1cbiAgICAgIGlmIHdvcmRfc2l6ZSA9IDY0IHRoZW5cbiAgICAgICAgbWFnaWMgSW1tZWRpYXRlXG4gICAgICBlbHNlXG4gICAgICAgIG1hZ2ljIE5vbl9pbW1lZGlhdGVcbiAgZW5kXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogT3BlcmF0aW9ucyBvbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbnMgb2YgdmFsdWVzICopXG5cbnR5cGUgdFxuXG50eXBlIHJhd19kYXRhID0gbmF0aXZlaW50XG5cbmV4dGVybmFsIHJlcHIgOiAnYSAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2JqIDogdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG1hZ2ljIDogJ2EgLT4gJ2IgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBpc19pbnQgOiB0IC0+IGJvb2wgPSBcIiVvYmpfaXNfaW50XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGlzX2Jsb2NrIGEgPSBub3QgKGlzX2ludCBhKVxuZXh0ZXJuYWwgdGFnIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3RhZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaXplIDogdCAtPiBpbnQgPSBcIiVvYmpfc2l6ZVwiXG5leHRlcm5hbCByZWFjaGFibGVfd29yZHMgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXCJcbmV4dGVybmFsIGZpZWxkIDogdCAtPiBpbnQgLT4gdCA9IFwiJW9ial9maWVsZFwiXG5leHRlcm5hbCBzZXRfZmllbGQgOiB0IC0+IGludCAtPiB0IC0+IHVuaXQgPSBcIiVvYmpfc2V0X2ZpZWxkXCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRhcnJheV9nZXRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9zZXQgOlxuICAgIGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcImNhbWxfZmxvYXRhcnJheV9zZXRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gZG91YmxlX2ZpZWxkIHggaSA9IGZsb2F0YXJyYXlfZ2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGlcbmxldCBbQGlubGluZSBhbHdheXNdIHNldF9kb3VibGVfZmllbGQgeCBpIHYgPVxuICBmbG9hdGFycmF5X3NldCAob2JqIHggOiBmbG9hdGFycmF5KSBpIHZcbmV4dGVybmFsIHJhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhID0gXCJjYW1sX29ial9yYXdfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X3Jhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkXCJcblxuZXh0ZXJuYWwgbmV3X2Jsb2NrIDogaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX29ial9ibG9ja1wiXG5leHRlcm5hbCBkdXAgOiB0IC0+IHQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBhZGRfb2Zmc2V0IDogdCAtPiBJbnQzMi50IC0+IHQgPSBcImNhbWxfb2JqX2FkZF9vZmZzZXRcIlxuZXh0ZXJuYWwgd2l0aF90YWcgOiBpbnQgLT4gdCAtPiB0ID0gXCJjYW1sX29ial93aXRoX3RhZ1wiXG5cbmxldCBmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMFxubGV0IGxhc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDI0M1xuXG5sZXQgZm9yY2luZ190YWcgPSAyNDRcbmxldCBjb250X3RhZyA9IDI0NVxubGV0IGxhenlfdGFnID0gMjQ2XG5sZXQgY2xvc3VyZV90YWcgPSAyNDdcbmxldCBvYmplY3RfdGFnID0gMjQ4XG5sZXQgaW5maXhfdGFnID0gMjQ5XG5sZXQgZm9yd2FyZF90YWcgPSAyNTBcblxubGV0IG5vX3NjYW5fdGFnID0gMjUxXG5cbmxldCBhYnN0cmFjdF90YWcgPSAyNTFcbmxldCBzdHJpbmdfdGFnID0gMjUyXG5sZXQgZG91YmxlX3RhZyA9IDI1M1xubGV0IGRvdWJsZV9hcnJheV90YWcgPSAyNTRcbmxldCBjdXN0b21fdGFnID0gMjU1XG5cblxubGV0IGludF90YWcgPSAxMDAwXG5sZXQgb3V0X29mX2hlYXBfdGFnID0gMTAwMVxubGV0IHVuYWxpZ25lZF90YWcgPSAxMDAyXG5cbm1vZHVsZSBFeHRlbnNpb25fY29uc3RydWN0b3IgPVxuc3RydWN0XG4gIHR5cGUgdCA9IGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICBsZXQgb2ZfdmFsIHggPVxuICAgIGxldCB4ID0gcmVwciB4IGluXG4gICAgbGV0IHNsb3QgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHgpICYmICh0YWcgeCkgPD4gb2JqZWN0X3RhZyAmJiAoc2l6ZSB4KSA+PSAxIHRoZW4gZmllbGQgeCAwXG4gICAgICBlbHNlIHhcbiAgICBpblxuICAgIGxldCBuYW1lID1cbiAgICAgIGlmIChpc19ibG9jayBzbG90KSAmJiAodGFnIHNsb3QpID0gb2JqZWN0X3RhZyB0aGVuIGZpZWxkIHNsb3QgMFxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuICAgIGluXG4gICAgICBpZiAodGFnIG5hbWUpID0gc3RyaW5nX3RhZyB0aGVuIChvYmogc2xvdCA6IHQpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gbmFtZSAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAwKSA6IHN0cmluZylcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBpZCAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAxKSA6IGludClcbmVuZFxuXG5tb2R1bGUgRXBoZW1lcm9uID0gc3RydWN0XG4gIHR5cGUgb2JqX3QgPSB0XG5cbiAgdHlwZSB0ICgqKiBlcGhlbWVyb24gKilcblxuICAgKCoqIFRvIGNoYW5nZSBpbiBzeW5jIHdpdGggd2Vhay5oICopXG4gIGxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDJcbiAgbGV0IG1heF9lcGhlX2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gdCA9IFwiY2FtbF9lcGhlX2NyZWF0ZVwiXG4gIGxldCBjcmVhdGUgbCA9XG4gICAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBtYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5jcmVhdGVcIjtcbiAgICBjcmVhdGUgbFxuXG4gIGxldCBsZW5ndGggeCA9IHNpemUocmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgbGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICAgIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleVwiXG4gIGxldCBnZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5XCI7XG4gICAgZ2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBnZXRfa2V5X2NvcHk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlfY29weVwiXG4gIGxldCBnZXRfa2V5X2NvcHkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlfY29weVwiO1xuICAgIGdldF9rZXlfY29weSBlIG9cblxuICBleHRlcm5hbCBzZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG4gIGxldCBzZXRfa2V5IGUgbyB4ID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnNldF9rZXlcIjtcbiAgICBzZXRfa2V5IGUgbyB4XG5cbiAgZXh0ZXJuYWwgdW5zZXRfa2V5OiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbiAgbGV0IHVuc2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24udW5zZXRfa2V5XCI7XG4gICAgdW5zZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGNoZWNrX2tleTogdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2tleVwiXG4gIGxldCBjaGVja19rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmNoZWNrX2tleVwiO1xuICAgIGNoZWNrX2tleSBlIG9cblxuICBleHRlcm5hbCBibGl0X2tleSA6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgPSBcImNhbWxfZXBoZV9ibGl0X2tleVwiXG5cbiAgbGV0IGJsaXRfa2V5IGUxIG8xIGUyIG8yIGwgPVxuICAgIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uYmxpdF9rZXlcIlxuICAgIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdF9rZXkgZTEgbzEgZTIgbzIgbFxuXG4gIGV4dGVybmFsIGdldF9kYXRhOiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhXCJcbiAgZXh0ZXJuYWwgZ2V0X2RhdGFfY29weTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XCJcbiAgZXh0ZXJuYWwgc2V0X2RhdGE6IHQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9kYXRhXCJcbiAgZXh0ZXJuYWwgdW5zZXRfZGF0YTogdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfZGF0YVwiXG4gIGV4dGVybmFsIGNoZWNrX2RhdGE6IHQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2RhdGFcIlxuICBleHRlcm5hbCBibGl0X2RhdGEgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX2JsaXRfZGF0YVwiXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUeXBlIGVxdWFsaXR5IHdpdG5lc3MgKilcblxudHlwZSAoXywgXykgZXEgPSBFcXVhbDogKCdhLCAnYSkgZXFcblxuKCogVHlwZSBpZGVudGlmaWVycyAqKVxuXG5tb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgdHlwZSBfIGlkID0gLi5cbiAgbW9kdWxlIHR5cGUgSUQgPSBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlIF8gaWQgKz0gSWQgOiB0IGlkXG4gIGVuZFxuXG4gIHR5cGUgISdhIHQgPSAobW9kdWxlIElEIHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgbGV0IG1ha2UgKHR5cGUgYSkgKCkgOiBhIHQgPVxuICAgIChtb2R1bGUgc3RydWN0IHR5cGUgdCA9IGEgdHlwZSBfIGlkICs9IElkIDogdCBpZCBlbmQpXG5cbiAgbGV0W0BpbmxpbmVdIHVpZCAodHlwZSBhKSAoKG1vZHVsZSBBKSA6IGEgdCkgPVxuICAgIE9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIEEuSWQpXG5cbiAgbGV0IHByb3ZhYmx5X2VxdWFsXG4gICAgICAodHlwZSBhIGIpICgobW9kdWxlIEEpIDogYSB0KSAoKG1vZHVsZSBCKSA6IGIgdCkgOiAoYSwgYikgZXEgb3B0aW9uXG4gICAgPVxuICAgIG1hdGNoIEEuSWQgd2l0aCBCLklkIC0+IFNvbWUgRXF1YWwgfCBfIC0+IE5vbmVcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgIFN0ZXBoZW4gRG9sYW4sIFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNy0yMDE4IFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlLiAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICEnYSB0XG5cbmV4dGVybmFsIG1ha2UgOiAnYSAtPiAnYSB0ID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgbWFrZV9jb250ZW5kZWQgOiAnYSAtPiAnYSB0ID0gXCJjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZFwiXG5leHRlcm5hbCBnZXQgOiAnYSB0IC0+ICdhID0gXCIlYXRvbWljX2xvYWRcIlxuZXh0ZXJuYWwgZXhjaGFuZ2UgOiAnYSB0IC0+ICdhIC0+ICdhID0gXCIlYXRvbWljX2V4Y2hhbmdlXCJcbmV4dGVybmFsIGNvbXBhcmVfYW5kX3NldCA6ICdhIHQgLT4gJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWF0b21pY19jYXNcIlxuZXh0ZXJuYWwgZmV0Y2hfYW5kX2FkZCA6IGludCB0IC0+IGludCAtPiBpbnQgPSBcIiVhdG9taWNfZmV0Y2hfYWRkXCJcbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5sZXQgc2V0IHIgeCA9IGlnbm9yZSAoZXhjaGFuZ2UgciB4KVxubGV0IGluY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByIDEpXG5sZXQgZGVjciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgKC0xKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW50ZXJuYWxzIG9mIGZvcmNpbmcgbGF6eSB2YWx1ZXMuICopXG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5cbigqIFt1cGRhdGVfdG9fZm9yY2luZyBibGtdIHRyaWVzIHRvIHVwZGF0ZSBhIFtibGtdIHdpdGggW2xhenlfdGFnXSB0b1xuICAgW2ZvcmNpbmdfdGFnXSB1c2luZyBjb21wYXJlLWFuZC1zd2FwIChDQVMpLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGUgaGVhZGVyIHdvcmQgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC4gUmV0dXJucyBbMF0gaWYgdGhlXG4gICBDQVMgaXMgc3VjY2Vzc2Z1bC4gSWYgdGhlIENBUyBmYWlscywgdGhlbiB0aGUgdGFnIHdhcyBvYnNlcnZlZCB0byBiZVxuICAgc29tZXRoaW5nIG90aGVyIHRoYW4gW2xhenlfdGFnXSBkdWUgdG8gYSBjb25jdXJyZW50IG11dGF0b3IuIEluIHRoaXMgY2FzZSxcbiAgIHRoZSBmdW5jdGlvbiByZXR1cm5zIFsxXS4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3JjaW5nIDogT2JqLnQgLT4gaW50ID1cbiAgXCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmdcIiBbQEBub2FsbG9jXVxuXG4oKiBbcmVzZXRfdG9fbGF6eSBibGtdIGV4cGVjdHMgW2Jsa10gdG8gYmUgYSBsYXp5IG9iamVjdCB3aXRoIFtPYmouZm9yY2luZ190YWddXG4gICBhbmQgdXBkYXRlcyB0aGUgdGFnIHRvIFtPYmoubGF6eV90YWddLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGlzIG9iamVjdCdzIGhlYWRlciBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLiAqKVxuZXh0ZXJuYWwgcmVzZXRfdG9fbGF6eSA6IE9iai50IC0+IHVuaXQgPSBcImNhbWxfbGF6eV9yZXNldF90b19sYXp5XCIgW0BAbm9hbGxvY11cblxuKCogW3VwZGF0ZV90b19mb3J3YXJkIGJsa10gZXhwZWN0cyBbYmxrXSB0byBiZSBhIGxhenkgb2JqZWN0IHdpdGhcbiAgIFtPYmouZm9yY2luZ190YWddIGFuZCB1cGRhdGVzIHRoZSB0YWcgdG8gW09iai5mb3J3YXJkX3RhZ10sIHRha2luZyBjYXJlIHRvXG4gICBoYW5kbGUgY29uY3VycmVudCBtYXJraW5nIG9mIHRoaXMgb2JqZWN0J3MgaGVhZGVyIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuXG4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3J3YXJkIDogT2JqLnQgLT4gdW5pdCA9XG4gIFwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXCIgW0BAbm9hbGxvY11cblxuKCogQXNzdW1lcyBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGZvcmNpbmcgKilcbmxldCBkb19mb3JjZV9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICB0cnlcbiAgICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciByZXN1bHQpO1xuICAgIHVwZGF0ZV90b19mb3J3YXJkIGI7XG4gICAgcmVzdWx0XG4gIHdpdGggZSAtPlxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIGUpKTtcbiAgICByZXNldF90b19sYXp5IGI7XG4gICAgcmFpc2UgZVxuXG4oKiBBc3N1bWVzIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgZm9yY2luZyAqKVxubGV0IGRvX2ZvcmNlX3ZhbF9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgdXBkYXRlX3RvX2ZvcndhcmQgYjtcbiAgcmVzdWx0XG5cbigqIENhbGxlZCBieSBbZm9yY2VfZ2VuXSAqKVxubGV0IGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgKCogV2UgZXhwZWN0IHRoZSB0YWcgdG8gYmUgW2xhenlfdGFnXSwgYnV0IG1heSBiZSBvdGhlciB0YWdzIGR1ZSB0b1xuICAgICBjb25jdXJyZW50IGZvcmNpbmcgb2YgbGF6eSB2YWx1ZXMuICopXG4gIG1hdGNoIHVwZGF0ZV90b19mb3JjaW5nIChPYmoucmVwciBibGspIHdpdGhcbiAgfCAwIHdoZW4gb25seV92YWwgLT4gZG9fZm9yY2VfdmFsX2Jsb2NrIGJsa1xuICB8IDAgLT4gZG9fZm9yY2VfYmxvY2sgYmxrXG4gIHwgXyAtPiByYWlzZSBVbmRlZmluZWRcblxuKCogdXNlZCBpbiB0aGUgJWxhenlfZm9yY2UgcHJpbWl0aXZlICopXG5sZXQgZm9yY2VfbGF6eV9ibG9jayBibGsgPSBmb3JjZV9nZW5fbGF6eV9ibG9jayB+b25seV92YWw6ZmFsc2UgYmxrXG5cbigqIFtmb3JjZV9nZW4gfm9ubHlfdmFsOmZhbHNlXSBpcyBub3QgdXNlZCwgc2luY2UgW0xhenkuZm9yY2VdIGlzXG4gICBkZWNsYXJlZCBhcyBhIHByaW1pdGl2ZSB3aG9zZSBjb2RlIGlubGluZXMgdGhlIHRhZyB0ZXN0cyBvZiBpdHNcbiAgIGFyZ3VtZW50LCBleGNlcHQgd2hlbiBhZmwgaW5zdHJ1bWVudGF0aW9uIGlzIHR1cm5lZCBvbi4gKilcbmxldCBmb3JjZV9nZW4gfm9ubHlfdmFsIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBVc2luZyBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gcHJldmVudHMgdHdvIHBvdGVudGlhbCBwcm9ibGVtczpcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZywgdGhlbiBpdCBjb3VsZCBoYXZlIGJlZW5cbiAgICAgICBzaG9ydGN1dCBkdXJpbmcgR0MsIHNvIHRoYXQgaW5mb3JtYXRpb24gbXVzdCBiZSBmb3Jnb3R0ZW4gKHNlZSBHUFIjNzEzXG4gICAgICAgYW5kIGlzc3VlICM3MzAxKS4gVGhpcyBpcyBub3QgYW4gaXNzdWUgaGVyZSBhdCB0aGUgbW9tZW50IHNpbmNlXG4gICAgICAgW09iai50YWddIGlzIG5vdCBzaW1wbGlmaWVkIGJ5IHRoZSBjb21waWxlciwgYW5kIEdQUiM3MTMgYWxzb1xuICAgICAgIGVuc3VyZXMgdGhhdCBubyB2YWx1ZSB3aWxsIGJlIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcuXG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGJlIGltbXV0YWJsZSwgdGhlbiBpZiB0aGUgY29tcGlsZXJcbiAgICAgICBjYW5ub3QgcHJvdmUgdGhhdCB0aGUgbGFzdCBicmFuY2ggaXMgbm90IHRha2VuIGl0IHdpbGwgaXNzdWUgYVxuICAgICAgIHdhcm5pbmcgNTkgKG1vZGlmaWNhdGlvbiBvZiBhbiBpbW11dGFibGUgdmFsdWUpICopXG4gIGxldCBsenYgPSBTeXMub3BhcXVlX2lkZW50aXR5IGx6diBpblxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICAoKiBTVEFSVCBubyBzYWZlIHBvaW50cy4gSWYgYSBHQyBvY2N1cnMgaGVyZSwgdGhlbiB0aGUgb2JqZWN0IFt4XSBtYXkgYmVcbiAgICAgc2hvcnQtY2lyY3VpdGVkLCBhbmQgZ2V0dGluZyB0aGUgZmlyc3QgZmllbGQgb2YgW3hdIHdvdWxkIGdldCB1cyB0aGUgd3JvbmdcbiAgICAgdmFsdWUuIEx1Y2tpbHksIHRoZSBjb21waWxlciBkb2VzIG5vdCBpbnNlcnQgR0Mgc2FmZSBwb2ludHMgYXQgdGhpcyBwbGFjZSxcbiAgICAgc28gaXQgaXMgb2suICopXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlblxuICAgIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpXG4gICgqIEVORCBubyBzYWZlIHBvaW50cyAqKVxuICBlbHNlIGlmIHQgPSBPYmouZm9yY2luZ190YWcgdGhlbiByYWlzZSBVbmRlZmluZWRcbiAgZWxzZSBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCBsenZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtMYXp5XTogZGVmZXJyZWQgY29tcHV0YXRpb25zICopXG5cblxuKCpcbiAgIFdBUk5JTkc6IHNvbWUgcHVycGxlIG1hZ2ljIGlzIGdvaW5nIG9uIGhlcmUuICBEbyBub3QgdGFrZSB0aGlzIGZpbGVcbiAgIGFzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHByb2dyYW0gaW4gT0NhbWwuXG4qKVxuXG5cbigqIFdlIG1ha2UgdXNlIG9mIHR3byBzcGVjaWFsIHRhZ3MgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWU6XG4gICBbbGF6eV90YWddIGFuZCBbZm9yd2FyZF90YWddLlxuXG4gICBBIHZhbHVlIG9mIHR5cGUgWydhIExhenkudF0gY2FuIGJlIG9uZSBvZiB0aHJlZSB0aGluZ3M6XG4gICAxLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbbGF6eV90YWddLiAgSXRzIGZpZWxkIGlzIGEgY2xvc3VyZSBvZlxuICAgICAgdHlwZSBbdW5pdCAtPiAnYV0gdGhhdCBjb21wdXRlcyB0aGUgdmFsdWUuXG4gICAyLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbZm9yd2FyZF90YWddLiAgSXRzIGZpZWxkIGlzIHRoZSB2YWx1ZVxuICAgICAgb2YgdHlwZSBbJ2FdIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgMy4gQW55dGhpbmcgZWxzZSBleGNlcHQgYSBmbG9hdC4gIFRoaXMgaGFzIHR5cGUgWydhXSBhbmQgaXMgdGhlIHZhbHVlXG4gICAgICB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIEV4Y2VwdGlvbnMgYXJlIHN0b3JlZCBpbiBmb3JtYXQgKDEpLlxuICAgVGhlIEdDIHdpbGwgbWFnaWNhbGx5IGNoYW5nZSB0aGluZ3MgZnJvbSAoMikgdG8gKDMpIGFjY29yZGluZyB0byBpdHNcbiAgIGZhbmN5LlxuXG4gICBJZiBPQ2FtbCB3YXMgY29uZmlndXJlZCB3aXRoIHRoZSAtZmxhdC1mbG9hdC1hcnJheSBvcHRpb24gKHdoaWNoIGlzXG4gICBjdXJyZW50bHkgdGhlIGRlZmF1bHQpLCB0aGUgZm9sbG93aW5nIGlzIGFsc28gdHJ1ZTpcbiAgIFdlIGNhbm5vdCB1c2UgcmVwcmVzZW50YXRpb24gKDMpIGZvciBhIFtmbG9hdCBMYXp5LnRdIGJlY2F1c2VcbiAgIFtjYW1sX21ha2VfYXJyYXldIGFzc3VtZXMgdGhhdCBvbmx5IGEgW2Zsb2F0XSB2YWx1ZSBjYW4gaGF2ZSB0YWdcbiAgIFtEb3VibGVfdGFnXS5cblxuICAgV2UgaGF2ZSB0byB1c2UgdGhlIGJ1aWx0LWluIHR5cGUgY29uc3RydWN0b3IgW2xhenlfdF0gdG9cbiAgIGxldCB0aGUgY29tcGlsZXIgaW1wbGVtZW50IHRoZSBzcGVjaWFsIHR5cGluZyBhbmQgY29tcGlsYXRpb25cbiAgIHJ1bGVzIGZvciB0aGUgW2xhenldIGtleXdvcmQuXG4qKVxuXG50eXBlICdhIHQgPSAnYSBDYW1saW50ZXJuYWxMYXp5LnRcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCA9IENhbWxpbnRlcm5hbExhenkuVW5kZWZpbmVkXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiAnYSAtPiAnYSBsYXp5X3QgPSBcImNhbWxfbGF6eV9tYWtlX2ZvcndhcmRcIlxuZXh0ZXJuYWwgZm9yY2UgOiAnYSB0IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5cbmxldCBmb3JjZV92YWwgbCA9IENhbWxpbnRlcm5hbExhenkuZm9yY2VfZ2VuIH5vbmx5X3ZhbDp0cnVlIGxcblxubGV0IGZyb21fZnVuIChmIDogdW5pdCAtPiAnYXJnKSA9XG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmoubGF6eV90YWcgMSBpblxuICBPYmouc2V0X2ZpZWxkIHggMCAoT2JqLnJlcHIgZik7XG4gIChPYmoub2JqIHggOiAnYXJnIHQpXG5cbmxldCBmcm9tX3ZhbCAodiA6ICdhcmcpID1cbiAgbGV0IHQgPSBPYmoudGFnIChPYmoucmVwciB2KSBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHx8IHQgPSBPYmoubGF6eV90YWcgfHxcbiAgICAgdCA9IE9iai5mb3JjaW5nX3RhZyB8fCB0ID0gT2JqLmRvdWJsZV90YWcgdGhlbiBiZWdpblxuICAgIG1ha2VfZm9yd2FyZCB2XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgKE9iai5tYWdpYyB2IDogJ2FyZyB0KVxuICBlbmRcblxubGV0IGlzX3ZhbCAobCA6ICdhcmcgdCkgPSBPYmoudGFnIChPYmoucmVwciBsKSA8PiBPYmoubGF6eV90YWdcblxubGV0IG1hcCBmIHggPVxuICBsYXp5IChmIChmb3JjZSB4KSlcblxubGV0IG1hcF92YWwgZiB4ID1cbiAgaWYgaXNfdmFsIHhcbiAgdGhlbiBmcm9tX3ZhbCAoZiAoZm9yY2UgeCkpXG4gIGVsc2UgbGF6eSAoZiAoZm9yY2UgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU2ltb24gQ3J1YW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbU2VxXTogZnVuY3Rpb25hbCBpdGVyYXRvcnMgKilcblxudHlwZSArJ2Egbm9kZSA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiAnYSAqICdhIHRcblxuYW5kICdhIHQgPSB1bml0IC0+ICdhIG5vZGVcblxubGV0IGVtcHR5ICgpID0gTmlsXG5cbmxldCByZXR1cm4geCAoKSA9IENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgY29ucyB4IG5leHQgKCkgPSBDb25zICh4LCBuZXh0KVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBtYXRjaCBzZXExKCkgd2l0aFxuICB8IE5pbCAtPiBzZXEyKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zICh4LCBhcHBlbmQgbmV4dCBzZXEyKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoZiB4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgICAgfCBTb21lIHkgLT4gQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgaWYgZiB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlciBmIG5leHQpXG4gICAgICBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBjb25jYXQgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgYXBwZW5kIHggKGNvbmNhdCBuZXh0KSAoKVxuXG5sZXQgcmVjIGZsYXRfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBhcHBlbmQgKGYgeCkgKGZsYXRfbWFwIGYgbmV4dCkgKClcblxubGV0IGNvbmNhdF9tYXAgPSBmbGF0X21hcFxuXG5sZXQgcmVjIGZvbGRfbGVmdCBmIGFjYyBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+IGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgZm9sZF9sZWZ0IGYgYWNjIG5leHRcblxubGV0IHJlYyBpdGVyIGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgZiB4O1xuICAgICAgICBpdGVyIGYgbmV4dFxuXG5sZXQgcmVjIHVuZm9sZCBmIHUgKCkgPVxuICBtYXRjaCBmIHUgd2l0aFxuICB8IE5vbmUgLT4gTmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IENvbnMgKHgsIHVuZm9sZCBmIHUnKVxuXG5sZXQgaXNfZW1wdHkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zIChfLCBfKSAtPlxuICAgICAgZmFsc2VcblxubGV0IHVuY29ucyB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgU29tZSAoeCwgeHMpXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG5cblxuXG5sZXQgcmVjIGxlbmd0aF9hdXggYWNjdSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKF8sIHhzKSAtPlxuICAgICAgbGVuZ3RoX2F1eCAoYWNjdSArIDEpIHhzXG5cbmxldFtAaW5saW5lXSBsZW5ndGggeHMgPVxuICBsZW5ndGhfYXV4IDAgeHNcblxubGV0IHJlYyBpdGVyaV9hdXggZiBpIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICAoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgZiBpIHg7XG4gICAgICBpdGVyaV9hdXggZiAoaSsxKSB4c1xuXG5sZXRbQGlubGluZV0gaXRlcmkgZiB4cyA9XG4gIGl0ZXJpX2F1eCBmIDAgeHNcblxubGV0IHJlYyBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgaSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgaSB4IGluXG4gICAgICBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgKGkrMSkgeHNcblxubGV0W0BpbmxpbmVdIGZvbGRfbGVmdGkgZiBhY2N1IHhzID1cbiAgZm9sZF9sZWZ0aV9hdXggZiBhY2N1IDAgeHNcblxubGV0IHJlYyBmb3JfYWxsIHAgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHAgeCAmJiBmb3JfYWxsIHAgeHNcblxubGV0IHJlYyBleGlzdHMgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHAgeCB8fCBleGlzdHMgcCB4c1xuXG5sZXQgcmVjIGZpbmQgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZCBwIHhzXG5cbmxldCBmaW5kX2luZGV4IHAgeHMgPVxuICBsZXQgcmVjIGF1eCBpIHhzID0gbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIGlmIHAgeCB0aGVuIFNvbWUgaSBlbHNlIGF1eCAoaSsxKSB4cyBpblxuICBhdXggMCB4c1xuXG5sZXQgcmVjIGZpbmRfbWFwIGYgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBmaW5kX21hcCBmIHhzXG4gICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICByZXN1bHRcblxubGV0IGZpbmRfbWFwaSBmIHhzID1cbiAgbGV0IHJlYyBhdXggaSB4cyA9IG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5vbmVcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBtYXRjaCBmIGkgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgYXV4IChpKzEpIHhzXG4gICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgICAgcmVzdWx0IGluXG4gIGF1eCAwIHhzXG5cbigqIFtpdGVyMl0sIFtmb2xkX2xlZnQyXSwgW2Zvcl9hbGwyXSwgW2V4aXN0czJdLCBbbWFwMl0sIFt6aXBdIHdvcmsgYWxzbyBpblxuICAgdGhlIGNhc2Ugd2hlcmUgdGhlIHR3byBzZXF1ZW5jZXMgaGF2ZSBkaWZmZXJlbnQgbGVuZ3Rocy4gVGhleSBzdG9wIGFzIHNvb25cbiAgIGFzIG9uZSBzZXF1ZW5jZSBpcyBleGhhdXN0ZWQuIFRoZWlyIGJlaGF2aW9yIGlzIHNsaWdodGx5IGFzeW1tZXRyaWM6IHdoZW5cbiAgIFt4c10gaXMgZW1wdHksIHRoZXkgZG8gbm90IGZvcmNlIFt5c107IGhvd2V2ZXIsIHdoZW4gW3lzXSBpcyBlbXB0eSwgW3hzXSBpc1xuICAgZm9yY2VkLCBldmVuIHRob3VnaCB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBhcHBsaWNhdGlvbiBbeHMoKV0gdHVybnMgb3V0XG4gICB0byBiZSB1c2VsZXNzLiAqKVxuXG5sZXQgcmVjIGl0ZXIyIGYgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgICgpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgKClcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHk7XG4gICAgICAgICAgaXRlcjIgZiB4cyB5c1xuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgYWNjdVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBsZXQgYWNjdSA9IGYgYWNjdSB4IHkgaW5cbiAgICAgICAgICBmb2xkX2xlZnQyIGYgYWNjdSB4cyB5c1xuXG5sZXQgcmVjIGZvcl9hbGwyIGYgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGYgeCB5ICYmIGZvcl9hbGwyIGYgeHMgeXNcblxubGV0IHJlYyBleGlzdHMyIGYgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHkgfHwgZXhpc3RzMiBmIHhzIHlzXG5cbmxldCByZWMgZXF1YWwgZXEgeHMgeXMgPVxuICBtYXRjaCB4cygpLCB5cygpIHdpdGhcbiAgfCBOaWwsIE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBlcSB4IHkgJiYgZXF1YWwgZXEgeHMgeXNcbiAgfCBOaWwsIENvbnMgKF8sIF8pXG4gIHwgQ29ucyAoXywgXyksIE5pbCAtPlxuICAgICAgZmFsc2VcblxubGV0IHJlYyBjb21wYXJlIGNtcCB4cyB5cyA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICB8IE5pbCwgTmlsIC0+XG4gICAgICAwXG4gIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgIGxldCBjID0gY21wIHggeSBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlIGNvbXBhcmUgY21wIHhzIHlzXG4gIHwgTmlsLCBDb25zIChfLCBfKSAtPlxuICAgICAgLTFcbiAgfCBDb25zIChfLCBfKSwgTmlsIC0+XG4gICAgICArMVxuXG5cblxuKCogW2luaXRfYXV4IGYgaSBqXSBpcyB0aGUgc2VxdWVuY2UgW2YgaSwgLi4uLCBmIChqLTEpXS4gKilcblxubGV0IHJlYyBpbml0X2F1eCBmIGkgaiAoKSA9XG4gIGlmIGkgPCBqIHRoZW4gYmVnaW5cbiAgICBDb25zIChmIGksIGluaXRfYXV4IGYgKGkgKyAxKSBqKVxuICBlbmRcbiAgZWxzZVxuICAgIE5pbFxuXG5sZXQgaW5pdCBuIGYgPVxuICBpZiBuIDwgMCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTZXEuaW5pdFwiXG4gIGVsc2VcbiAgICBpbml0X2F1eCBmIDAgblxuXG5sZXQgcmVjIHJlcGVhdCB4ICgpID1cbiAgQ29ucyAoeCwgcmVwZWF0IHgpXG5cbmxldCByZWMgZm9yZXZlciBmICgpID1cbiAgQ29ucyAoZigpLCBmb3JldmVyIGYpXG5cbigqIFRoaXMgcHJlbGltaW5hcnkgZGVmaW5pdGlvbiBvZiBbY3ljbGVdIHJlcXVpcmVzIHRoZSBzZXF1ZW5jZSBbeHNdXG4gICB0byBiZSBub25lbXB0eS4gQXBwbHlpbmcgaXQgdG8gYW4gZW1wdHkgc2VxdWVuY2Ugd291bGQgcHJvZHVjZSBhXG4gICBzZXF1ZW5jZSB0aGF0IGRpdmVyZ2VzIHdoZW4gaXQgaXMgZm9yY2VkLiAqKVxuXG5sZXQgcmVjIGN5Y2xlX25vbmVtcHR5IHhzICgpID1cbiAgYXBwZW5kIHhzIChjeWNsZV9ub25lbXB0eSB4cykgKClcblxuKCogW2N5Y2xlIHhzXSBjaGVja3Mgd2hldGhlciBbeHNdIGlzIGVtcHR5IGFuZCwgaWYgc28sIHJldHVybnMgYW4gZW1wdHlcbiAgIHNlcXVlbmNlLiBPdGhlcndpc2UsIFtjeWNsZSB4c10gcHJvZHVjZXMgb25lIGNvcHkgb2YgW3hzXSBmb2xsb3dlZFxuICAgd2l0aCB0aGUgaW5maW5pdGUgc2VxdWVuY2UgW2N5Y2xlX25vbmVtcHR5IHhzXS4gVGh1cywgdGhlIG5vbmVtcHRpbmVzc1xuICAgY2hlY2sgaXMgcGVyZm9ybWVkIGp1c3Qgb25jZS4gKilcblxubGV0IGN5Y2xlIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cycpIC0+XG4gICAgICBDb25zICh4LCBhcHBlbmQgeHMnIChjeWNsZV9ub25lbXB0eSB4cykpXG5cbigqIFtpdGVyYXRlMSBmIHhdIGlzIHRoZSBzZXF1ZW5jZSBbZiB4LCBmIChmIHgpLCAuLi5dLlxuICAgSXQgaXMgZXF1aXZhbGVudCB0byBbdGFpbCAoaXRlcmF0ZSBmIHgpXS5cbiAgIFtpdGVyYXRlMV0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtpdGVyYXRlXS4gKilcblxubGV0IHJlYyBpdGVyYXRlMSBmIHggKCkgPVxuICBsZXQgeSA9IGYgeCBpblxuICBDb25zICh5LCBpdGVyYXRlMSBmIHkpXG5cbigqIFtpdGVyYXRlIGYgeF0gaXMgdGhlIHNlcXVlbmNlIFt4LCBmIHgsIC4uLl0uICopXG5cbigqIFRoZSByZWFzb24gd2h5IHdlIGdpdmUgdGhpcyBzbGlnaHRseSBpbmRpcmVjdCBkZWZpbml0aW9uIG9mIFtpdGVyYXRlXSxcbiAgIGFzIG9wcG9zZWQgdG8gdGhlIG1vcmUgbmFpdmUgZGVmaW5pdGlvbiB0aGF0IG1heSBjb21lIHRvIG1pbmQsIGlzIHRoYXRcbiAgIHdlIGFyZSBjYXJlZnVsIHRvIGF2b2lkIGV2YWx1YXRpbmcgW2YgeF0gdW50aWwgdGhpcyBmdW5jdGlvbiBjYWxsIGlzXG4gICBhY3R1YWxseSBuZWNlc3NhcnkuIFRoZSBuYWl2ZSBkZWZpbml0aW9uIChub3Qgc2hvd24gaGVyZSkgY29tcHV0ZXMgdGhlXG4gICBzZWNvbmQgYXJndW1lbnQgb2YgdGhlIHNlcXVlbmNlLCBbZiB4XSwgd2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgaXNcbiAgIHJlcXVlc3RlZCBieSB0aGUgdXNlci4gKilcblxubGV0IGl0ZXJhdGUgZiB4ID1cbiAgY29ucyB4IChpdGVyYXRlMSBmIHgpXG5cblxuXG5sZXQgcmVjIG1hcGlfYXV4IGYgaSB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBDb25zIChmIGkgeCwgbWFwaV9hdXggZiAoaSsxKSB4cylcblxubGV0W0BpbmxpbmVdIG1hcGkgZiB4cyA9XG4gIG1hcGlfYXV4IGYgMCB4c1xuXG4oKiBbdGFpbF9zY2FuIGYgcyB4c10gaXMgZXF1aXZhbGVudCB0byBbdGFpbCAoc2NhbiBmIHMgeHMpXS5cbiAgIFt0YWlsX3NjYW5dIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbc2Nhbl0uICopXG5cbigqIFRoaXMgc2xpZ2h0bHkgaW5kaXJlY3QgZGVmaW5pdGlvbiBvZiBbc2Nhbl0gaXMgbWVhbnQgdG8gYXZvaWQgY29tcHV0aW5nXG4gICBlbGVtZW50cyB0b28gZWFybHk7IHNlZSB0aGUgYWJvdmUgY29tbWVudCBhYm91dCBbaXRlcmF0ZTFdIGFuZCBbaXRlcmF0ZV0uICopXG5cbmxldCByZWMgdGFpbF9zY2FuIGYgcyB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBsZXQgcyA9IGYgcyB4IGluXG4gICAgICBDb25zIChzLCB0YWlsX3NjYW4gZiBzIHhzKVxuXG5sZXQgc2NhbiBmIHMgeHMgPVxuICBjb25zIHMgKHRhaWxfc2NhbiBmIHMgeHMpXG5cbigqIFt0YWtlXSBpcyBkZWZpbmVkIGluIHN1Y2ggYSB3YXkgdGhhdCBbdGFrZSAwIHhzXSByZXR1cm5zIFtlbXB0eV1cbiAgIGltbWVkaWF0ZWx5LCB3aXRob3V0IGFsbG9jYXRpbmcgYW55IG1lbW9yeS4gKilcblxubGV0IHJlYyB0YWtlX2F1eCBuIHhzID1cbiAgaWYgbiA9IDAgdGhlblxuICAgIGVtcHR5XG4gIGVsc2VcbiAgICBmdW4gKCkgLT5cbiAgICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBOaWxcbiAgICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgICAgQ29ucyAoeCwgdGFrZV9hdXggKG4tMSkgeHMpXG5cbmxldCB0YWtlIG4geHMgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU2VxLnRha2VcIjtcbiAgdGFrZV9hdXggbiB4c1xuXG4oKiBbZm9yY2VfZHJvcCBuIHhzXSBpcyBlcXVpdmFsZW50IHRvIFtkcm9wIG4geHMgKCldLlxuICAgW2ZvcmNlX2Ryb3AgbiB4c10gcmVxdWlyZXMgW24gPiAwXS5cbiAgIFtmb3JjZV9kcm9wXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW2Ryb3BdLiAqKVxuXG5sZXQgcmVjIGZvcmNlX2Ryb3AgbiB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoXywgeHMpIC0+XG4gICAgICBsZXQgbiA9IG4gLSAxIGluXG4gICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgIHhzKClcbiAgICAgIGVsc2VcbiAgICAgICAgZm9yY2VfZHJvcCBuIHhzXG5cbigqIFtkcm9wXSBpcyBkZWZpbmVkIGluIHN1Y2ggYSB3YXkgdGhhdCBbZHJvcCAwIHhzXSByZXR1cm5zIFt4c10gaW1tZWRpYXRlbHksXG4gICB3aXRob3V0IGFsbG9jYXRpbmcgYW55IG1lbW9yeS4gKilcblxubGV0IGRyb3AgbiB4cyA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZXEuZHJvcFwiXG4gIGVsc2UgaWYgbiA9IDAgdGhlblxuICAgIHhzXG4gIGVsc2VcbiAgICBmdW4gKCkgLT5cbiAgICAgIGZvcmNlX2Ryb3AgbiB4c1xuXG5sZXQgcmVjIHRha2Vfd2hpbGUgcCB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBpZiBwIHggdGhlbiBDb25zICh4LCB0YWtlX3doaWxlIHAgeHMpIGVsc2UgTmlsXG5cbmxldCByZWMgZHJvcF93aGlsZSBwIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgYXMgbm9kZSAtPlxuICAgICAgaWYgcCB4IHRoZW4gZHJvcF93aGlsZSBwIHhzICgpIGVsc2Ugbm9kZVxuXG5sZXQgcmVjIGdyb3VwIGVxIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKGNvbnMgeCAodGFrZV93aGlsZSAoZXEgeCkgeHMpLCBncm91cCBlcSAoZHJvcF93aGlsZSAoZXEgeCkgeHMpKVxuXG5leGNlcHRpb24gRm9yY2VkX3R3aWNlXG5cbm1vZHVsZSBTdXNwZW5zaW9uID0gc3RydWN0XG5cbiAgdHlwZSAnYSBzdXNwZW5zaW9uID1cbiAgICB1bml0IC0+ICdhXG5cbiAgKCogQ29udmVyc2lvbnMuICopXG5cbiAgbGV0IHRvX2xhenkgOiAnYSBzdXNwZW5zaW9uIC0+ICdhIExhenkudCA9XG4gICAgTGF6eS5mcm9tX2Z1blxuICAgICgqIGZ1biBzIC0+IGxhenkgKHMoKSkgKilcblxuICBsZXQgZnJvbV9sYXp5IChzIDogJ2EgTGF6eS50KSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGZ1biAoKSAtPiBMYXp5LmZvcmNlIHNcblxuICAoKiBbbWVtb2l6ZV0gdHVybnMgYW4gYXJiaXRyYXJ5IHN1c3BlbnNpb24gaW50byBhIHBlcnNpc3RlbnQgc3VzcGVuc2lvbi4gKilcblxuICBsZXQgbWVtb2l6ZSAocyA6ICdhIHN1c3BlbnNpb24pIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgZnJvbV9sYXp5ICh0b19sYXp5IHMpXG5cbiAgKCogW2ZhaWx1cmVdIGlzIGEgc3VzcGVuc2lvbiB0aGF0IGZhaWxzIHdoZW4gZm9yY2VkLiAqKVxuXG4gIGxldCBmYWlsdXJlIDogXyBzdXNwZW5zaW9uID1cbiAgICBmdW4gKCkgLT5cbiAgICAgICgqIEEgc3VzcGVuc2lvbiBjcmVhdGVkIGJ5IFtvbmNlXSBoYXMgYmVlbiBmb3JjZWQgdHdpY2UuICopXG4gICAgICByYWlzZSBGb3JjZWRfdHdpY2VcblxuICAoKiBJZiBbZl0gaXMgYSBzdXNwZW5zaW9uLCB0aGVuIFtvbmNlIGZdIGlzIGEgc3VzcGVuc2lvbiB0aGF0IGNhbiBiZSBmb3JjZWRcbiAgICAgYXQgbW9zdCBvbmNlLiBJZiBpdCBpcyBmb3JjZWQgbW9yZSB0aGFuIG9uY2UsIHRoZW4gW0ZvcmNlZF90d2ljZV0gaXNcbiAgICAgcmFpc2VkLiAqKVxuXG4gIGxldCBvbmNlIChmIDogJ2Egc3VzcGVuc2lvbikgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBsZXQgYWN0aW9uID0gQXRvbWljLm1ha2UgZiBpblxuICAgIGZ1biAoKSAtPlxuICAgICAgKCogR2V0IHRoZSBmdW5jdGlvbiBjdXJyZW50bHkgc3RvcmVkIGluIFthY3Rpb25dLCBhbmQgd3JpdGUgdGhlXG4gICAgICAgICBmdW5jdGlvbiBbZmFpbHVyZV0gaW4gaXRzIHBsYWNlLCBzbyB0aGUgbmV4dCBhY2Nlc3Mgd2lsbCByZXN1bHRcbiAgICAgICAgIGluIGEgY2FsbCB0byBbZmFpbHVyZSgpXS4gKilcbiAgICAgIGxldCBmID0gQXRvbWljLmV4Y2hhbmdlIGFjdGlvbiBmYWlsdXJlIGluXG4gICAgICBmKClcblxuZW5kICgqIFN1c3BlbnNpb24gKilcblxubGV0IHJlYyBtZW1vaXplIHhzID1cbiAgU3VzcGVuc2lvbi5tZW1vaXplIChmdW4gKCkgLT5cbiAgICBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBDb25zICh4LCBtZW1vaXplIHhzKVxuICApXG5cbmxldCByZWMgb25jZSB4cyA9XG4gIFN1c3BlbnNpb24ub25jZSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgQ29ucyAoeCwgb25jZSB4cylcbiAgKVxuXG5cbmxldCByZWMgemlwIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBOaWxcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgQ29ucyAoKHgsIHkpLCB6aXAgeHMgeXMpXG5cbmxldCByZWMgbWFwMiBmIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBOaWxcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgQ29ucyAoZiB4IHksIG1hcDIgZiB4cyB5cylcblxubGV0IHJlYyBpbnRlcmxlYXZlIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB5cygpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBDb25zICh4LCBpbnRlcmxlYXZlIHlzIHhzKVxuXG4oKiBbc29ydGVkX21lcmdlMWwgY21wIHggeHMgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgKGNvbnMgeCB4cykgeXNdLlxuXG4gICBbc29ydGVkX21lcmdlMXIgY21wIHhzIHkgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgeHMgKGNvbnMgeSB5cyldLlxuXG4gICBbc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgIFtzb3J0ZWRfbWVyZ2UgY21wIChjb25zIHggeHMpIChjb25zIHkgeXMpXS5cblxuICAgVGhlc2UgdGhyZWUgZnVuY3Rpb25zIGFyZSB1c2VkIGFzIGJ1aWxkaW5nIGJsb2NrcyBpbiB0aGUgZGVmaW5pdGlvblxuICAgb2YgW3NvcnRlZF9tZXJnZV0uICopXG5cbmxldCByZWMgc29ydGVkX21lcmdlMWwgY21wIHggeHMgeXMgKCkgPVxuICBtYXRjaCB5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIENvbnMgKHgsIHhzKVxuICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXG5cbmFuZCBzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgQ29ucyAoeSwgeXMpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuYW5kIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5cyA9XG4gIGlmIGNtcCB4IHkgPD0gMCB0aGVuXG4gICAgQ29ucyAoeCwgc29ydGVkX21lcmdlMXIgY21wIHhzIHkgeXMpXG4gIGVsc2VcbiAgICBDb25zICh5LCBzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5cylcblxubGV0IHNvcnRlZF9tZXJnZSBjbXAgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpLCB5cygpIHdpdGhcbiAgICB8IE5pbCwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgTmlsLCBjXG4gICAgfCBjLCBOaWwgLT5cbiAgICAgICAgY1xuICAgIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXG5cblxubGV0IHJlYyBtYXBfZnN0IHh5cyAoKSA9XG4gIG1hdGNoIHh5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKCh4LCBfKSwgeHlzKSAtPlxuICAgICAgQ29ucyAoeCwgbWFwX2ZzdCB4eXMpXG5cbmxldCByZWMgbWFwX3NuZCB4eXMgKCkgPVxuICBtYXRjaCB4eXMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICgoXywgeSksIHh5cykgLT5cbiAgICAgIENvbnMgKHksIG1hcF9zbmQgeHlzKVxuXG5sZXQgdW56aXAgeHlzID1cbiAgbWFwX2ZzdCB4eXMsIG1hcF9zbmQgeHlzXG5cbmxldCBzcGxpdCA9XG4gIHVuemlwXG5cbigqIFtmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4c10gaXMgZXF1aXZhbGVudCB0b1xuICAgW2ZpbHRlcl9tYXAgRWl0aGVyLmZpbmRfbGVmdCAobWFwIGYgeHMpXS4gKilcblxubGV0IHJlYyBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBFaXRoZXIuTGVmdCB5IC0+XG4gICAgICAgICAgQ29ucyAoeSwgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMpXG4gICAgICB8IEVpdGhlci5SaWdodCBfIC0+XG4gICAgICAgICAgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMgKClcblxubGV0IHJlYyBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgRWl0aGVyLkxlZnQgXyAtPlxuICAgICAgICAgIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cyAoKVxuICAgICAgfCBFaXRoZXIuUmlnaHQgeiAtPlxuICAgICAgICAgIENvbnMgKHosIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cylcblxubGV0IHBhcnRpdGlvbl9tYXAgZiB4cyA9XG4gIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzLFxuICBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHNcblxubGV0IHBhcnRpdGlvbiBwIHhzID1cbiAgZmlsdGVyIHAgeHMsIGZpbHRlciAoZnVuIHggLT4gbm90IChwIHgpKSB4c1xuXG4oKiBJZiBbeHNzXSBpcyBhIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiByb3dzKSwgdGhlbiBbcGVlbCB4c3NdIGlzIGEgcGFpciBvZlxuICAgdGhlIGZpcnN0IGNvbHVtbiAoYSBzZXF1ZW5jZSBvZiBlbGVtZW50cykgYW5kIG9mIHRoZSByZW1haW5kZXIgb2YgdGhlXG4gICBtYXRyaXggKGEgc2VxdWVuY2Ugb2Ygc2hvcnRlciByb3dzKS4gVGhlc2UgdHdvIHNlcXVlbmNlcyBoYXZlIHRoZSBzYW1lXG4gICBsZW5ndGguIFRoZSByb3dzIG9mIHRoZSBtYXRyaXggW3hzc10gYXJlIG5vdCByZXF1aXJlZCB0byBoYXZlIHRoZSBzYW1lXG4gICBsZW5ndGguIEFuIGVtcHR5IHJvdyBpcyBpZ25vcmVkLiAqKVxuXG4oKiBCZWNhdXNlIFtwZWVsXSB1c2VzIFt1bnppcF0sIGl0cyBhcmd1bWVudCBtdXN0IGJlIHBlcnNpc3RlbnQuIFRoZSBzYW1lXG4gICByZW1hcmsgYXBwbGllcyB0byBbdHJhbnNwb3NlXSwgW2RpYWdvbmFsc10sIFtwcm9kdWN0XSwgZXRjLiAqKVxuXG5sZXQgcGVlbCB4c3MgPVxuICB1bnppcCAoZmlsdGVyX21hcCB1bmNvbnMgeHNzKVxuXG5sZXQgcmVjIHRyYW5zcG9zZSB4c3MgKCkgPVxuICBsZXQgaGVhZHMsIHRhaWxzID0gcGVlbCB4c3MgaW5cbiAgaWYgaXNfZW1wdHkgaGVhZHMgdGhlbiBiZWdpblxuICAgIGFzc2VydCAoaXNfZW1wdHkgdGFpbHMpO1xuICAgIE5pbFxuICBlbmRcbiAgZWxzZVxuICAgIENvbnMgKGhlYWRzLCB0cmFuc3Bvc2UgdGFpbHMpXG5cbigqIFRoZSBpbnRlcm5hbCBmdW5jdGlvbiBbZGlhZ29uYWxzXSB0YWtlcyBhbiBleHRyYSBhcmd1bWVudCwgW3JlbWFpbmRlcnNdLFxuICAgd2hpY2ggY29udGFpbnMgdGhlIHJlbWFpbmRlcnMgb2YgdGhlIHJvd3MgdGhhdCBoYXZlIGFscmVhZHkgYmVlblxuICAgZGlzY292ZXJlZC4gKilcblxubGV0IHJlYyBkaWFnb25hbHMgcmVtYWluZGVycyB4c3MgKCkgPVxuICBtYXRjaCB4c3MoKSB3aXRoXG4gIHwgQ29ucyAoeHMsIHhzcykgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHhzKCkgd2l0aFxuICAgICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgICAoKiBXZSBkaXNjb3ZlciBhIG5ldyBub25lbXB0eSByb3cgW3ggOjogeHNdLiBUaHVzLCB0aGUgbmV4dCBkaWFnb25hbFxuICAgICAgICAgICAgIGlzIFt4IDo6IGhlYWRzXTogdGhpcyBkaWFnb25hbCBiZWdpbnMgd2l0aCBbeF0gYW5kIGNvbnRpbnVlcyB3aXRoXG4gICAgICAgICAgICAgdGhlIGZpcnN0IGVsZW1lbnQgb2YgZXZlcnkgcm93IGluIFtyZW1haW5kZXJzXS4gSW4gdGhlIHJlY3Vyc2l2ZVxuICAgICAgICAgICAgIGNhbGwsIHRoZSBhcmd1bWVudCBbcmVtYWluZGVyc10gaXMgaW5zdGFudGlhdGVkIHdpdGggW3hzIDo6XG4gICAgICAgICAgICAgdGFpbHNdLCB3aGljaCBtZWFucyB0aGF0IHdlIGhhdmUgb25lIG1vcmUgcmVtYWluaW5nIHJvdywgW3hzXSxcbiAgICAgICAgICAgICBhbmQgdGhhdCB3ZSBrZWVwIHRoZSB0YWlscyBvZiB0aGUgcHJlLWV4aXN0aW5nIHJlbWFpbmluZyByb3dzLiAqKVxuICAgICAgICAgIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHJlbWFpbmRlcnMgaW5cbiAgICAgICAgICBDb25zIChjb25zIHggaGVhZHMsIGRpYWdvbmFscyAoY29ucyB4cyB0YWlscykgeHNzKVxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAoKiBXZSBkaXNjb3ZlciBhIG5ldyBlbXB0eSByb3cuIEluIHRoaXMgY2FzZSwgdGhlIG5ldyBkaWFnb25hbCBpc1xuICAgICAgICAgICAgIGp1c3QgW2hlYWRzXSwgYW5kIFtyZW1haW5kZXJzXSBpcyBpbnN0YW50aWF0ZWQgd2l0aCBqdXN0IFt0YWlsc10sXG4gICAgICAgICAgICAgYXMgd2UgZG8gbm90IGhhdmUgb25lIG1vcmUgcmVtYWluaW5nIHJvdy4gKilcbiAgICAgICAgICBsZXQgaGVhZHMsIHRhaWxzID0gcGVlbCByZW1haW5kZXJzIGluXG4gICAgICAgICAgQ29ucyAoaGVhZHMsIGRpYWdvbmFscyB0YWlscyB4c3MpXG4gICAgICBlbmRcbiAgfCBOaWwgLT5cbiAgICAgICgqIFRoZXJlIGFyZSBubyBtb3JlIHJvd3MgdG8gYmUgZGlzY292ZXJlZC4gVGhlcmUgcmVtYWlucyB0byBleGhhdXN0XG4gICAgICAgICB0aGUgcmVtYWluaW5nIHJvd3MuICopXG4gICAgICB0cmFuc3Bvc2UgcmVtYWluZGVycyAoKVxuXG4oKiBJZiBbeHNzXSBpcyBhIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiByb3dzKSwgdGhlbiBbZGlhZ29uYWxzIHhzc10gaXNcbiAgIHRoZSBzZXF1ZW5jZSBvZiBpdHMgZGlhZ29uYWxzLlxuXG4gICBUaGUgZmlyc3QgZGlhZ29uYWwgY29udGFpbnMganVzdCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGVcbiAgIGZpcnN0IHJvdy4gVGhlIHNlY29uZCBkaWFnb25hbCBjb250YWlucyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGVcbiAgIHNlY29uZCByb3cgYW5kIHRoZSBzZWNvbmQgZWxlbWVudCBvZiB0aGUgZmlyc3Qgcm93OyBhbmQgc28gb24uXG4gICBUaGlzIGtpbmQgb2YgZGlhZ29uYWwgaXMgaW4gZmFjdCBzb21ldGltZXMga25vd24gYXMgYW4gYW50aWRpYWdvbmFsLlxuXG4gICAtIEV2ZXJ5IGRpYWdvbmFsIGlzIGEgZmluaXRlIHNlcXVlbmNlLlxuICAgLSBUaGUgcm93cyBvZiB0aGUgbWF0cml4IFt4c3NdIGFyZSBub3QgcmVxdWlyZWQgdG8gaGF2ZSB0aGUgc2FtZSBsZW5ndGguXG4gICAtIFRoZSBtYXRyaXggW3hzc10gaXMgbm90IHJlcXVpcmVkIHRvIGJlIGZpbml0ZSAoaW4gZWl0aGVyIGRpcmVjdGlvbikuXG4gICAtIFRoZSBtYXRyaXggW3hzc10gbXVzdCBiZSBwZXJzaXN0ZW50LiAqKVxuXG5sZXQgZGlhZ29uYWxzIHhzcyA9XG4gIGRpYWdvbmFscyBlbXB0eSB4c3NcblxubGV0IG1hcF9wcm9kdWN0IGYgeHMgeXMgPVxuICBjb25jYXQgKGRpYWdvbmFscyAoXG4gICAgbWFwIChmdW4geCAtPlxuICAgICAgbWFwIChmdW4geSAtPlxuICAgICAgICBmIHggeVxuICAgICAgKSB5c1xuICAgICkgeHNcbiAgKSlcblxubGV0IHByb2R1Y3QgeHMgeXMgPVxuICBtYXBfcHJvZHVjdCAoZnVuIHggeSAtPiAoeCwgeSkpIHhzIHlzXG5cbmxldCBvZl9kaXNwZW5zZXIgaXQgPVxuICBsZXQgcmVjIGMgKCkgPVxuICAgIG1hdGNoIGl0KCkgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgICBOaWxcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBDb25zICh4LCBjKVxuICBpblxuICBjXG5cbmxldCB0b19kaXNwZW5zZXIgeHMgPVxuICBsZXQgcyA9IHJlZiB4cyBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCAoIXMpKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5vbmVcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBzIDo9IHhzO1xuICAgICAgICBTb21lIHhcblxuXG5cbmxldCByZWMgaW50cyBpICgpID1cbiAgQ29ucyAoaSwgaW50cyAoaSArIDEpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gPSBOb25lIHwgU29tZSBvZiAnYVxuXG5sZXQgbm9uZSA9IE5vbmVcbmxldCBzb21lIHYgPSBTb21lIHZcbmxldCB2YWx1ZSBvIH5kZWZhdWx0ID0gbWF0Y2ggbyB3aXRoIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBkZWZhdWx0XG5sZXQgZ2V0ID0gZnVuY3Rpb24gU29tZSB2IC0+IHYgfCBOb25lIC0+IGludmFsaWRfYXJnIFwib3B0aW9uIGlzIE5vbmVcIlxubGV0IGJpbmQgbyBmID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBmIHZcbmxldCBqb2luID0gZnVuY3Rpb24gU29tZSBvIC0+IG8gfCBOb25lIC0+IE5vbmVcbmxldCBtYXAgZiBvID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBTb21lIChmIHYpXG5sZXQgZm9sZCB+bm9uZSB+c29tZSA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBzb21lIHYgfCBOb25lIC0+IG5vbmVcbmxldCBpdGVyIGYgPSBmdW5jdGlvbiBTb21lIHYgLT4gZiB2IHwgTm9uZSAtPiAoKVxubGV0IGlzX25vbmUgPSBmdW5jdGlvbiBOb25lIC0+IHRydWUgfCBTb21lIF8gLT4gZmFsc2VcbmxldCBpc19zb21lID0gZnVuY3Rpb24gTm9uZSAtPiBmYWxzZSB8IFNvbWUgXyAtPiB0cnVlXG5cbmxldCBlcXVhbCBlcSBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gZXEgdjAgdjFcbnwgTm9uZSwgTm9uZSAtPiB0cnVlXG58IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgY21wIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBjbXAgdjAgdjFcbnwgTm9uZSwgTm9uZSAtPiAwXG58IE5vbmUsIFNvbWUgXyAtPiAtMVxufCBTb21lIF8sIE5vbmUgLT4gMVxuXG5sZXQgdG9fcmVzdWx0IH5ub25lID0gZnVuY3Rpb24gTm9uZSAtPiBFcnJvciBub25lIHwgU29tZSB2IC0+IE9rIHZcbmxldCB0b19saXN0ID0gZnVuY3Rpb24gTm9uZSAtPiBbXSB8IFNvbWUgdiAtPiBbdl1cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBOb25lIC0+IFNlcS5lbXB0eSB8IFNvbWUgdiAtPiBTZXEucmV0dXJuIHZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSkgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnZVxuXG5sZXQgb2sgdiA9IE9rIHZcbmxldCBlcnJvciBlID0gRXJyb3IgZVxubGV0IHZhbHVlIHIgfmRlZmF1bHQgPSBtYXRjaCByIHdpdGggT2sgdiAtPiB2IHwgRXJyb3IgXyAtPiBkZWZhdWx0XG5sZXQgZ2V0X29rID0gZnVuY3Rpb24gT2sgdiAtPiB2IHwgRXJyb3IgXyAtPiBpbnZhbGlkX2FyZyBcInJlc3VsdCBpcyBFcnJvciBfXCJcbmxldCBnZXRfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBlIC0+IGUgfCBPayBfIC0+IGludmFsaWRfYXJnIFwicmVzdWx0IGlzIE9rIF9cIlxubGV0IGJpbmQgciBmID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBqb2luID0gZnVuY3Rpb24gT2sgciAtPiByIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXAgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gT2sgKGYgdikgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IG1hcF9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBFcnJvciAoZiBlKSB8IE9rIF8gYXMgdiAtPiB2XG5sZXQgZm9sZCB+b2sgfmVycm9yID0gZnVuY3Rpb24gT2sgdiAtPiBvayB2IHwgRXJyb3IgZSAtPiBlcnJvciBlXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gT2sgdiAtPiBmIHYgfCBFcnJvciBfIC0+ICgpXG5sZXQgaXRlcl9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBmIGUgfCBPayBfIC0+ICgpXG5sZXQgaXNfb2sgPSBmdW5jdGlvbiBPayBfIC0+IHRydWUgfCBFcnJvciBfIC0+IGZhbHNlXG5sZXQgaXNfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBfIC0+IHRydWUgfCBPayBfIC0+IGZhbHNlXG5cbmxldCBlcXVhbCB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBfLCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IE9rIF8sIEVycm9yIF8gLT4gLTFcbnwgRXJyb3IgXywgT2sgXyAtPiAxXG5cbmxldCB0b19vcHRpb24gPSBmdW5jdGlvbiBPayB2IC0+IFNvbWUgdiB8IEVycm9yIF8gLT4gTm9uZVxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBPayB2IC0+IFt2XSB8IEVycm9yIF8gLT4gW11cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBPayB2IC0+IFNlcS5yZXR1cm4gdiB8IEVycm9yIF8gLT4gU2VxLmVtcHR5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGJvb2wgPSBmYWxzZSB8IHRydWVcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxubGV0IGVxdWFsIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBib29sIC0+IGJvb2wgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmV4dGVybmFsIHRvX2ludCA6IGJvb2wgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb24gZmFsc2UgLT4gMC4gfCB0cnVlIC0+IDEuXG5cbigqXG5sZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbnwgXCJmYWxzZVwiIC0+IFNvbWUgZmFsc2VcbnwgXCJ0cnVlXCIgLT4gU29tZSB0cnVlXG58IF8gLT4gTm9uZVxuKilcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uIGZhbHNlIC0+IFwiZmFsc2VcIiB8IHRydWUgLT4gXCJ0cnVlXCJcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ2hhcmFjdGVyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hyOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcblxubGV0IGNociBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiQ2hhci5jaHJcIiBlbHNlIHVuc2FmZV9jaHIgblxuXG5leHRlcm5hbCBieXRlc19jcmVhdGU6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxubGV0IGVzY2FwZWQgPSBmdW5jdGlvblxuICB8ICdcXCcnIC0+IFwiXFxcXCdcIlxuICB8ICdcXFxcJyAtPiBcIlxcXFxcXFxcXCJcbiAgfCAnXFxuJyAtPiBcIlxcXFxuXCJcbiAgfCAnXFx0JyAtPiBcIlxcXFx0XCJcbiAgfCAnXFxyJyAtPiBcIlxcXFxyXCJcbiAgfCAnXFxiJyAtPiBcIlxcXFxiXCJcbiAgfCAnICcgLi4gJ34nIGFzIGMgLT5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDEgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwIGM7XG4gICAgICB1bnNhZmVfdG9fc3RyaW5nIHNcbiAgfCBjIC0+XG4gICAgICBsZXQgbiA9IGNvZGUgYyBpblxuICAgICAgbGV0IHMgPSBieXRlc19jcmVhdGUgNCBpblxuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDAgJ1xcXFwnO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDEgKHVuc2FmZV9jaHIgKDQ4ICsgbiAvIDEwMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDIgKHVuc2FmZV9jaHIgKDQ4ICsgKG4gLyAxMCkgbW9kIDEwKSk7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMyAodW5zYWZlX2NociAoNDggKyBuIG1vZCAxMCkpO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG5cbmxldCBsb3dlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdBJyAuLiAnWicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyArIDMyKVxuICB8IGMgLT4gY1xuXG5sZXQgdXBwZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgLSAzMilcbiAgfCBjIC0+IGNcblxudHlwZSB0ID0gY2hhclxuXG5sZXQgY29tcGFyZSBjMSBjMiA9IGNvZGUgYzEgLSBjb2RlIGMyXG5sZXQgZXF1YWwgKGMxOiB0KSAoYzI6IHQpID0gY29tcGFyZSBjMSBjMiA9IDBcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgRGFuaWVsIEMuIEJ1ZW56bGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuXG5sZXQgZXJyX25vX3ByZWQgPSBcIlUrMDAwMCBoYXMgbm8gcHJlZGVjZXNzb3JcIlxubGV0IGVycl9ub19zdWNjID0gXCJVKzEwRkZGRiBoYXMgbm8gc3VjY2Vzc29yXCJcbmxldCBlcnJfbm90X3N2IGkgPSBmb3JtYXRfaW50IFwiJVhcIiBpIF4gXCIgaXMgbm90IGFuIFVuaWNvZGUgc2NhbGFyIHZhbHVlXCJcbmxldCBlcnJfbm90X2xhdGluMSB1ID0gXCJVK1wiIF4gZm9ybWF0X2ludCBcIiUwNFhcIiB1IF4gXCIgaXMgbm90IGEgbGF0aW4xIGNoYXJhY3RlclwiXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgbWluID0gMHgwMDAwXG5sZXQgbWF4ID0gMHgxMEZGRkZcbmxldCBsb19ib3VuZCA9IDB4RDdGRlxubGV0IGhpX2JvdW5kID0gMHhFMDAwXG5cbmxldCBib20gPSAweEZFRkZcbmxldCByZXAgPSAweEZGRkRcblxubGV0IHN1Y2MgdSA9XG4gIGlmIHUgPSBsb19ib3VuZCB0aGVuIGhpX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1heCB0aGVuIGludmFsaWRfYXJnIGVycl9ub19zdWNjIGVsc2VcbiAgdSArIDFcblxubGV0IHByZWQgdSA9XG4gIGlmIHUgPSBoaV9ib3VuZCB0aGVuIGxvX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1pbiB0aGVuIGludmFsaWRfYXJnIGVycl9ub19wcmVkIGVsc2VcbiAgdSAtIDFcblxubGV0IGlzX3ZhbGlkIGkgPSAobWluIDw9IGkgJiYgaSA8PSBsb19ib3VuZCkgfHwgKGhpX2JvdW5kIDw9IGkgJiYgaSA8PSBtYXgpXG5sZXQgb2ZfaW50IGkgPSBpZiBpc192YWxpZCBpIHRoZW4gaSBlbHNlIGludmFsaWRfYXJnIChlcnJfbm90X3N2IGkpXG5leHRlcm5hbCB1bnNhZmVfb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19pbnQgOiB0IC0+IGludCA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX2NoYXIgdSA9IHUgPCAyNTZcbmxldCBvZl9jaGFyIGMgPSBDaGFyLmNvZGUgY1xubGV0IHRvX2NoYXIgdSA9XG4gIGlmIHUgPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyAoZXJyX25vdF9sYXRpbjEgdSkgZWxzZVxuICBDaGFyLnVuc2FmZV9jaHIgdVxuXG5sZXQgdW5zYWZlX3RvX2NoYXIgPSBDaGFyLnVuc2FmZV9jaHJcblxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IGhhc2ggPSB0b19pbnRcblxuKCogVVRGIGNvZGVjcyB0b29scyAqKVxuXG50eXBlIHV0Zl9kZWNvZGUgPSBpbnRcbigqIFRoaXMgaXMgYW4gaW50IFsweERVVVVVVVVdIGRlY29tcG9zZWQgYXMgZm9sbG93czpcbiAgIC0gW0RdIGlzIGZvdXIgYml0cyBmb3IgZGVjb2RlIGluZm9ybWF0aW9uLCB0aGUgaGlnaGVzdCBiaXQgaXMgc2V0IGlmIHRoZVxuICAgICBkZWNvZGUgaXMgdmFsaWQuIFRoZSB0aHJlZSBsb3dlciBiaXRzIGluZGljYXRlIHRoZSBudW1iZXIgb2YgZWxlbWVudHNcbiAgICAgZnJvbSB0aGUgc291cmNlIHRoYXQgd2VyZSBjb25zdW1lZCBieSB0aGUgZGVjb2RlLlxuICAgLSBbVVVVVVVVXSBpcyB0aGUgZGVjb2RlZCBVbmljb2RlIGNoYXJhY3RlciBvciB0aGUgVW5pY29kZSByZXBsYWNlbWVudFxuICAgICBjaGFyYWN0ZXIgVStGRkZEIGlmIGZvciBpbnZhbGlkIGRlY29kZXMuICopXG5cbmxldCB2YWxpZF9iaXQgPSAyN1xubGV0IGRlY29kZV9iaXRzID0gMjRcblxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfaXNfdmFsaWQgZCA9IChkIGxzciB2YWxpZF9iaXQpID0gMVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfbGVuZ3RoIGQgPSAoZCBsc3IgZGVjb2RlX2JpdHMpIGxhbmQgMGIxMTFcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX3VjaGFyIGQgPSB1bnNhZmVfb2ZfaW50IChkIGxhbmQgMHhGRkZGRkYpXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZSBuIHUgPSAoKDggbG9yIG4pIGxzbCBkZWNvZGVfYml0cykgbG9yICh0b19pbnQgdSlcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2ludmFsaWQgbiA9IChuIGxzbCBkZWNvZGVfYml0cykgbG9yIHJlcFxuXG5sZXQgdXRmXzhfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweDAwN0YgLT4gMVxufCB1IHdoZW4gdSA8PSAweDA3RkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gM1xufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCB1dGZfMTZfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBsaXN0cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGxpc3QgPSBbXSB8ICg6Oikgb2YgJ2EgKiAnYSBsaXN0XG5cbigqIExpc3Qgb3BlcmF0aW9ucyAqKVxuXG5sZXQgcmVjIGxlbmd0aF9hdXggbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBsZW5cbiAgfCBfOjpsIC0+IGxlbmd0aF9hdXggKGxlbiArIDEpIGxcblxubGV0IGxlbmd0aCBsID0gbGVuZ3RoX2F1eCAwIGxcblxubGV0IGNvbnMgYSBsID0gYTo6bFxuXG5sZXQgaGQgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwiaGRcIlxuICB8IGE6Ol8gLT4gYVxuXG5sZXQgdGwgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwidGxcIlxuICB8IF86OmwgLT4gbFxuXG5sZXQgbnRoIGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBmYWlsd2l0aCBcIm50aFwiXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgbnRoX29wdCBsIG4gPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5udGhcIiBlbHNlXG4gIGxldCByZWMgbnRoX2F1eCBsIG4gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgYTo6bCAtPiBpZiBuID0gMCB0aGVuIFNvbWUgYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgYXBwZW5kID0gKEApXG5cbmxldCByZWMgcmV2X2FwcGVuZCBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgICBbXSAtPiBsMlxuICB8IGEgOjogbCAtPiByZXZfYXBwZW5kIGwgKGEgOjogbDIpXG5cbmxldCByZXYgbCA9IHJldl9hcHBlbmQgbCBbXVxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBpbml0IGkgbGFzdCBmID1cbiAgaWYgaSA+IGxhc3QgdGhlbiBbXVxuICBlbHNlIGlmIGkgPSBsYXN0IHRoZW4gW2YgaV1cbiAgZWxzZVxuICAgIGxldCByMSA9IGYgaSBpblxuICAgIGxldCByMiA9IGYgKGkrMSkgaW5cbiAgICByMSA6OiByMiA6OiBpbml0IChpKzIpIGxhc3QgZlxuXG5sZXQgaW5pdCBsZW4gZiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QuaW5pdFwiIGVsc2VcbiAgaW5pdCAwIChsZW4gLSAxKSBmXG5cbmxldCByZWMgZmxhdHRlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBsOjpyIC0+IGwgQCBmbGF0dGVuIHJcblxubGV0IGNvbmNhdCA9IGZsYXR0ZW5cblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgW2ExXSAtPlxuICAgICAgbGV0IHIxID0gZiBhMSBpblxuICAgICAgW3IxXVxuICB8IGExOjphMjo6bCAtPlxuICAgICAgbGV0IHIxID0gZiBhMSBpblxuICAgICAgbGV0IHIyID0gZiBhMiBpblxuICAgICAgcjE6OnIyOjptYXAgZiBsXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIG1hcGkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IFthMV0gLT5cbiAgICAgIGxldCByMSA9IGYgaSBhMSBpblxuICAgICAgW3IxXVxuICB8IGExOjphMjo6bCAtPlxuICAgICAgbGV0IHIxID0gZiBpIGExIGluXG4gICAgICBsZXQgcjIgPSBmIChpKzEpIGEyIGluXG4gICAgICByMTo6cjI6Om1hcGkgKGkrMikgZiBsXG5cbmxldCBtYXBpIGYgbCA9IG1hcGkgMCBmIGxcblxubGV0IHJldl9tYXAgZiBsID1cbiAgbGV0IHJlYyBybWFwX2YgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCBhOjpsIC0+IHJtYXBfZiAoZiBhIDo6IGFjY3UpIGxcbiAgaW5cbiAgcm1hcF9mIFtdIGxcblxuXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgYTsgaXRlciBmIGxcblxubGV0IHJlYyBpdGVyaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgYTo6bCAtPiBmIGkgYTsgaXRlcmkgKGkgKyAxKSBmIGxcblxubGV0IGl0ZXJpIGYgbCA9IGl0ZXJpIDAgZiBsXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjdSBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZm9sZF9sZWZ0IGYgKGYgYWNjdSBhKSBsXG5cbmxldCByZWMgZm9sZF9yaWdodCBmIGwgYWNjdSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+IGFjY3VcbiAgfCBhOjpsIC0+IGYgYSAoZm9sZF9yaWdodCBmIGwgYWNjdSlcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgbWFwMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKFthMV0sIFtiMV0pIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGIxIGluXG4gICAgICBbcjFdXG4gIHwgKGExOjphMjo6bDEsIGIxOjpiMjo6bDIpIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGIxIGluXG4gICAgICBsZXQgcjIgPSBmIGEyIGIyIGluXG4gICAgICByMTo6cjI6Om1hcDIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QubWFwMlwiXG5cbmxldCByZXZfbWFwMiBmIGwxIGwyID1cbiAgbGV0IHJlYyBybWFwMl9mIGFjY3UgbDEgbDIgPVxuICAgIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICB8IChbXSwgW10pIC0+IGFjY3VcbiAgICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcm1hcDJfZiAoZiBhMSBhMiA6OiBhY2N1KSBsMSBsMlxuICAgIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZXZfbWFwMlwiXG4gIGluXG4gIHJtYXAyX2YgW10gbDEgbDJcblxuXG5sZXQgcmVjIGl0ZXIyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gKClcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTI7IGl0ZXIyIGYgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0Lml0ZXIyXCJcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgYWNjdSBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmb2xkX2xlZnQyIGYgKGYgYWNjdSBhMSBhMikgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfbGVmdDJcIlxuXG5sZXQgcmVjIGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmIGExIGEyIChmb2xkX3JpZ2h0MiBmIGwxIGwyIGFjY3UpXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX3JpZ2h0MlwiXG5cbmxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiB0cnVlXG4gIHwgYTo6bCAtPiBwIGEgJiYgZm9yX2FsbCBwIGxcblxubGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IHAgYSB8fCBleGlzdHMgcCBsXG5cbmxldCByZWMgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiB0cnVlXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBwIGExIGEyICYmIGZvcl9hbGwyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvcl9hbGwyXCJcblxubGV0IHJlYyBleGlzdHMyIHAgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gZmFsc2VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgfHwgZXhpc3RzMiBwIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5leGlzdHMyXCJcblxubGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW0geCBsXG5cbmxldCByZWMgbWVtcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gYSA9PSB4IHx8IG1lbXEgeCBsXG5cbmxldCByZWMgYXNzb2MgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gYiBlbHNlIGFzc29jIHggbFxuXG5sZXQgcmVjIGFzc29jX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gU29tZSBiIGVsc2UgYXNzb2Nfb3B0IHggbFxuXG5sZXQgcmVjIGFzc3EgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gYiBlbHNlIGFzc3EgeCBsXG5cbmxldCByZWMgYXNzcV9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICB8IChhLGIpOjpsIC0+IGlmIGEgPT0geCB0aGVuIFNvbWUgYiBlbHNlIGFzc3Ffb3B0IHggbFxuXG5sZXQgcmVjIG1lbV9hc3NvYyB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW1fYXNzb2MgeCBsXG5cbmxldCByZWMgbWVtX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2VcbiAgfCAoYSwgXykgOjogbCAtPiBhID09IHggfHwgbWVtX2Fzc3EgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPlxuICAgICAgaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gbCBlbHNlIHBhaXIgOjogcmVtb3ZlX2Fzc29jIHggbFxuXG5sZXQgcmVjIHJlbW92ZV9hc3NxIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPiBpZiBhID09IHggdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzcSB4IGxcblxubGV0IHJlYyBmaW5kIHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiB4IGVsc2UgZmluZCBwIGxcblxubGV0IHJlYyBmaW5kX29wdCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIFNvbWUgeCBlbHNlIGZpbmRfb3B0IHAgbFxuXG5sZXQgZmluZF9pbmRleCBwID1cbiAgbGV0IHJlYyBhdXggaSA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICAgIHwgYTo6bCAtPiBpZiBwIGEgdGhlbiBTb21lIGkgZWxzZSBhdXggKGkrMSkgbCBpblxuICBhdXggMFxuXG5sZXQgcmVjIGZpbmRfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwIGYgbFxuICAgICBlbmRcblxubGV0IGZpbmRfbWFwaSBmID1cbiAgbGV0IHJlYyBhdXggaSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBmIGkgeCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPiBhdXggKGkrMSkgbFxuICAgICBlbmQgaW5cbiAgYXV4IDBcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmluZF9hbGwgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4geCA6OiBmaW5kX2FsbCBwIGwgZWxzZSBmaW5kX2FsbCBwIGxcblxubGV0IGZpbHRlciA9IGZpbmRfYWxsXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIGZpbHRlcmkgcCBpID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHg6OmwgLT5cbiAgICAgIGxldCBpJyA9IGkgKyAxIGluXG4gICAgICBpZiBwIGkgeCB0aGVuIHggOjogZmlsdGVyaSBwIGknIGwgZWxzZSBmaWx0ZXJpIHAgaScgbFxuXG5sZXQgZmlsdGVyaSBwIGwgPSBmaWx0ZXJpIHAgMCBsXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB4IDo6IGwgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIGxcbiAgICAgIHwgU29tZSB2IC0+IHYgOjogZmlsdGVyX21hcCBmIGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgY29uY2F0X21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHg6OnhzIC0+IHByZXBlbmRfY29uY2F0X21hcCAoZiB4KSBmIHhzXG5hbmRbQHRhaWxfbW9kX2NvbnNdIHByZXBlbmRfY29uY2F0X21hcCB5cyBmIHhzID1cbiAgbWF0Y2ggeXMgd2l0aFxuICB8IFtdIC0+IGNvbmNhdF9tYXAgZiB4c1xuICB8IHkgOjogeXMgLT4geSA6OiBwcmVwZW5kX2NvbmNhdF9tYXAgeXMgZiB4c1xuXG5sZXQgZm9sZF9sZWZ0X21hcCBmIGFjY3UgbCA9XG4gIGxldCByZWMgYXV4IGFjY3UgbF9hY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3UsIHJldiBsX2FjY3VcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBsZXQgYWNjdSwgeCA9IGYgYWNjdSB4IGluXG4gICAgICAgIGF1eCBhY2N1ICh4IDo6IGxfYWNjdSkgbCBpblxuICBhdXggYWNjdSBbXSBsXG5cbmxldCBwYXJ0aXRpb24gcCBsID1cbiAgbGV0IHJlYyBwYXJ0IHllcyBubyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiB5ZXMsIHJldiBubylcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gcGFydCAoeCA6OiB5ZXMpIG5vIGwgZWxzZSBwYXJ0IHllcyAoeCA6OiBubykgbCBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHBhcnRpdGlvbl9tYXAgcCBsID1cbiAgbGV0IHJlYyBwYXJ0IGxlZnQgcmlnaHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgbGVmdCwgcmV2IHJpZ2h0KVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBwIHggd2l0aFxuICAgICAgIHwgRWl0aGVyLkxlZnQgdiAtPiBwYXJ0ICh2IDo6IGxlZnQpIHJpZ2h0IGxcbiAgICAgICB8IEVpdGhlci5SaWdodCB2IC0+IHBhcnQgbGVmdCAodiA6OiByaWdodCkgbFxuICAgICBlbmRcbiAgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCByZWMgc3BsaXQgPSBmdW5jdGlvblxuICAgIFtdIC0+IChbXSwgW10pXG4gIHwgKHgseSk6OmwgLT5cbiAgICAgIGxldCAocngsIHJ5KSA9IHNwbGl0IGwgaW4gKHg6OnJ4LCB5OjpyeSlcblxubGV0IHJlYyBjb21iaW5lIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiAoYTEsIGEyKSA6OiBjb21iaW5lIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5jb21iaW5lXCJcblxuKCoqIHNvcnRpbmcgKilcblxubGV0IHJlYyBtZXJnZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBsMiAtPiBsMlxuICB8IGwxLCBbXSAtPiBsMVxuICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPlxuICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgIHRoZW4gaDEgOjogbWVyZ2UgY21wIHQxIGwyXG4gICAgICBlbHNlIGgyIDo6IG1lcmdlIGNtcCBsMSB0MlxuXG5cbmxldCBzdGFibGVfc29ydCBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA8PSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA+IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCBzb3J0ID0gc3RhYmxlX3NvcnRcbmxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4oKiBOb3RlOiBvbiBhIHZlcnkgbG9uZyBsaXN0IChsZW5ndGggb3ZlciBhYm91dCAxMDAwMDApLCBpdCB1c2VkIHRvIGJlXG4gICBmYXN0ZXIgdG8gY29udmVydCB0aGUgbGlzdCB0byBhbiBhcnJheSwgc29ydCB0aGUgYXJyYXksIGFuZCBjb252ZXJ0XG4gICBiYWNrLCB0cnVuY2F0aW5nIHRoZSBhcnJheSBvYmplY3QgYWZ0ZXIgcHJlcGVuZGluZyBlYWNoIHRob3VzYW5kXG4gICBlbnRyaWVzIHRvIHRoZSByZXN1bHRpbmcgbGlzdC4gSW1wb3NzaWJsZSBub3cgdGhhdCBPYmoudHJ1bmNhdGUgaGFzXG4gICBiZWVuIHJlbW92ZWQuICopXG5cbigqKiBzb3J0aW5nICsgcmVtb3ZpbmcgZHVwbGljYXRlcyAqKVxuXG5sZXQgc29ydF91bmlxIGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlIHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZV9yZXYgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RocyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCBfIDo6IGwxLCBfIDo6IGwyIC0+IGNvbXBhcmVfbGVuZ3RocyBsMSBsMlxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCBuID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBpZiBuID0gMCB0aGVuIDAgZWxzZVxuICAgICAgaWYgbiA+IDAgdGhlbiAtMSBlbHNlIDFcbiAgfCBfIDo6IGwgLT5cbiAgICBpZiBuIDw9IDAgdGhlbiAxIGVsc2VcbiAgICAgIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCAobi0xKVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBfIDo6IF8gLT4gZmFsc2VcblxuKCoqIHsxIENvbXBhcmlzb259ICopXG5cbigqIE5vdGU6IHdlIGFyZSAqbm90KiBzaG9ydGN1dHRpbmcgdGhlIGxpc3QgYnkgdXNpbmdcbiAgIFtMaXN0LmNvbXBhcmVfbGVuZ3Roc10gZmlyc3Q7IHRoaXMgbWF5IGJlIHNsb3dlciBvbiBsb25nIGxpc3RzXG4gICBpbW1lZGlhdGVseSBzdGFydCB3aXRoIGRpc3RpbmN0IGVsZW1lbnRzLiBJdCBpcyBhbHNvIGluY29ycmVjdCBmb3JcbiAgIFtjb21wYXJlXSBiZWxvdywgYW5kIGl0IGlzIGJldHRlciAocHJpbmNpcGxlIG9mIGxlYXN0IHN1cnByaXNlKSB0b1xuICAgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGZvciBib3RoIGZ1bmN0aW9ucy4gKilcbmxldCByZWMgZXF1YWwgZXEgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgW10sIF86Ol8gfCBfOjpfLCBbXSAtPiBmYWxzZVxuICB8IGExOjpsMSwgYTI6OmwyIC0+IGVxIGExIGEyICYmIGVxdWFsIGVxIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF86Ol8gLT4gLTFcbiAgfCBfOjpfLCBbXSAtPiAxXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT5cbiAgICBsZXQgYyA9IGNtcCBhMSBhMiBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGNcbiAgICBlbHNlIGNvbXBhcmUgY21wIGwxIGwyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgbCA9XG4gIGxldCByZWMgYXV4IGwgKCkgPSBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFNlcS5OaWxcbiAgICB8IHggOjogdGFpbCAtPiBTZXEuQ29ucyAoeCwgYXV4IHRhaWwpXG4gIGluXG4gIGF1eCBsXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIG9mX3NlcSBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gW11cbiAgfCBTZXEuQ29ucyAoeDEsIHNlcSkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gW3gxXVxuICAgICAgfCBTZXEuQ29ucyAoeDIsIHNlcSkgLT4geDEgOjogeDIgOjogb2Zfc2VxIHNlcVxuICAgICAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgemVybyA9IDBcbmxldCBvbmUgPSAxXG5sZXQgbWludXNfb25lID0gLTFcbmV4dGVybmFsIG5lZyA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgYWRkIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgc3ViIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgbXVsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgZGl2IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgcmVtIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuZXh0ZXJuYWwgbG9nYW5kIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsIGxvZ3hvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcbmxldCBsb2dub3QgeCA9IGxvZ3hvciB4ICgtMSlcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuXG4oKlxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nIHMgPSB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG4qKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5sZXQgdG9fc3RyaW5nIHggPSBmb3JtYXRfaW50IFwiJWRcIiB4XG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIHN0cmluZy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2ZpbGxfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB1bnNhZmVfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGJ5dGVzID0gXCIlYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmxldCBtYWtlIG4gYyA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgdW5zYWZlX2ZpbGwgcyAwIG4gYztcbiAgc1xuXG5sZXQgaW5pdCBuIGYgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgcyBpIChmIGkpXG4gIGRvbmU7XG4gIHNcblxubGV0IGVtcHR5ID0gY3JlYXRlIDBcblxubGV0IGNvcHkgcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXQgcyAwIHIgMCBsZW47XG4gIHJcblxubGV0IHRvX3N0cmluZyBiID0gdW5zYWZlX3RvX3N0cmluZyAoY29weSBiKVxubGV0IG9mX3N0cmluZyBzID0gY29weSAodW5zYWZlX29mX3N0cmluZyBzKVxuXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLnN1YiAvIEJ5dGVzLnN1YlwiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBzIG9mcyByIDAgbGVuO1xuICAgIHJcbiAgZW5kXG5cbmxldCBzdWJfc3RyaW5nIGIgb2ZzIGxlbiA9IHVuc2FmZV90b19zdHJpbmcgKHN1YiBiIG9mcyBsZW4pXG5cbigqIGFkZGl0aW9uIHdpdGggYW4gb3ZlcmZsb3cgY2hlY2sgKilcbmxldCAoKyspIGEgYiA9XG4gIGxldCBjID0gYSArIGIgaW5cbiAgbWF0Y2ggYSA8IDAsIGIgPCAwLCBjIDwgMCB3aXRoXG4gIHwgdHJ1ZSAsIHRydWUgLCBmYWxzZVxuICB8IGZhbHNlLCBmYWxzZSwgdHJ1ZSAgLT4gaW52YWxpZF9hcmcgXCJCeXRlcy5leHRlbmRcIiAoKiBvdmVyZmxvdyAqKVxuICB8IF8gLT4gY1xuXG5sZXQgZXh0ZW5kIHMgbGVmdCByaWdodCA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyArKyBsZWZ0ICsrIHJpZ2h0IGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICBsZXQgKHNyY29mZiwgZHN0b2ZmKSA9IGlmIGxlZnQgPCAwIHRoZW4gLWxlZnQsIDAgZWxzZSAwLCBsZWZ0IGluXG4gIGxldCBjcHlsZW4gPSBJbnQubWluIChsZW5ndGggcyAtIHNyY29mZikgKGxlbiAtIGRzdG9mZikgaW5cbiAgaWYgY3B5bGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IHMgc3Jjb2ZmIHIgZHN0b2ZmIGNweWxlbjtcbiAgclxuXG5sZXQgZmlsbCBzIG9mcyBsZW4gYyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmZpbGwgLyBCeXRlcy5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBzIG9mcyBsZW4gY1xuXG5sZXQgYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnl0ZXMuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG5sZXQgYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IHN0cmluZ19sZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuYmxpdCAvIEJ5dGVzLmJsaXRfc3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiQnl0ZXMuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBlbXB0eVxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChjcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCBzMSBzMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBzMSBpblxuICBsZXQgbDIgPSBsZW5ndGggczIgaW5cbiAgbGV0IHIgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gIHVuc2FmZV9ibGl0IHMxIDAgciAwIGwxO1xuICB1bnNhZmVfYmxpdCBzMiAwIHIgbDEgbDI7XG4gIHJcblxuXG5leHRlcm5hbCBjaGFyX2NvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgY2hhcl9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWkpIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGxldCBqID0gcmVmIChsZW4gLSAxKSBpblxuICB3aGlsZSAhaiA+PSAhaSAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFqKSBkb1xuICAgIGRlY3IgalxuICBkb25lO1xuICBpZiAhaiA+PSAhaSB0aGVuXG4gICAgc3ViIHMgIWkgKCFqIC0gIWkgKyAxKVxuICBlbHNlXG4gICAgZW1wdHlcblxubGV0IHVuc2FmZV9lc2NhcGUgcyA9XG4gICgqIFdlIHBlcmZvcm0gdHdvIHBhc3NlcyBvbiB0aGUgaW5wdXQgc2VxdWVuY2UsIG9uZSB0byBjb21wdXRlIHRoZVxuICAgICByZXN1bHQgc2l6ZSBhbmQgb25lIHRvIHdyaXRlIHRoZSByZXN1bHQuXG5cbiAgICAgIzExNTA4LCAjMTE1MDk6IFRoaXMgbG9naWMgd291bGQgYmUgaW5jb3JyZWN0IGluIHByZXNlbmNlIG9mXG4gICAgIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uIHRvIHRoZSBpbnB1dCwgbWFraW5nIHRoZSB1c2Ugb2ZcbiAgICAgW3Vuc2FmZV9zZXRdIGJlbG93IG1lbW9yeS11bnNhZmUuXG5cbiAgICAgUHJlY29uZGl0aW9uOiBUaGlzIGZ1bmN0aW9uIG1heSBiZSBzYWZlbHkgY2FsbGVkIG9uOlxuICAgICAtIGFuIGltbXV0YWJsZSBieXRlIHNlcXVlbmNlXG4gICAgIC0gYSB1bmlxdWVseS1vd25lZCBieXRlIHNlcXVlbmNlICh0aGUgZnVuY3Rpb24gdGFrZXMgb3duZXJzaGlwKVxuXG4gICAgIEluIGVpdGhlciBjYXNlIHdlIHJldHVybiBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UuXG4gICopXG4gIGxldCBuID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgIG4gOj0gIW4gK1xuICAgICAgKG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXG4nIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXGInIC0+IDJcbiAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgIHwgXyAtPiA0KVxuICBkb25lO1xuICBpZiAhbiA9IGxlbmd0aCBzIHRoZW4gc1xuICBlbHNlIGJlZ2luXG4gICAgbGV0IHMnID0gY3JlYXRlICFuIGluXG4gICAgbiA6PSAwO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgIGJlZ2luIG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgKCdcXFwiJyB8ICdcXFxcJykgYXMgYyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ24nXG4gICAgICB8ICdcXHQnIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAndCdcbiAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ2InXG4gICAgICB8ICgnICcgLi4gJ34nKSBhcyBjIC0+IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCBjIC0+XG4gICAgICAgICAgbGV0IGEgPSBjaGFyX2NvZGUgYyBpblxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIC8gMTAwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIChhIC8gMTApIG1vZCAxMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIG1vZCAxMCkpO1xuICAgICAgZW5kO1xuICAgICAgaW5jciBuXG4gICAgZG9uZTtcbiAgICBzJ1xuICBlbmRcblxubGV0IGVzY2FwZWQgYiA9XG4gIGxldCBiID0gY29weSBiIGluXG4gICgqIFdlIGNvcHkgb3VyIGlucHV0IHRvIG9idGFpbiBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UgW2JdXG4gICAgIHRvIHNhdGlzZnkgW3Vuc2FmZV9lc2NhcGVdJ3MgcHJlY29uZGl0aW9uICopXG4gIHVuc2FmZV9lc2NhcGUgYlxuXG5sZXQgbWFwIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcGkgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhclxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG5sZXQgYXBwbHkxIGYgcyA9XG4gIGlmIGxlbmd0aCBzID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY29weSBzIGluXG4gICAgdW5zYWZlX3NldCByIDAgKGYodW5zYWZlX2dldCBzIDApKTtcbiAgICByXG4gIGVuZFxuXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbnR5cGUgdCA9IGJ5dGVzXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfYnl0ZXNfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBsZXQgYnVmID0gcmVmIChtYWtlIDI1NiAnXFwwMDAnKSBpblxuICBsZXQgcmVzaXplICgpID1cbiAgICAoKiByZXNpemUgKilcbiAgICBsZXQgbmV3X2xlbiA9IEludC5taW4gKDIgKiBsZW5ndGggIWJ1ZikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgaWYgbGVuZ3RoICFidWYgPSBuZXdfbGVuIHRoZW4gZmFpbHdpdGggXCJCeXRlcy5vZl9zZXE6IGNhbm5vdCBncm93IGJ5dGVzXCI7XG4gICAgbGV0IG5ld19idWYgPSBtYWtlIG5ld19sZW4gJ1xcMDAwJyBpblxuICAgIGJsaXQgIWJ1ZiAwIG5ld19idWYgMCAhbjtcbiAgICBidWYgOj0gbmV3X2J1ZlxuICBpblxuICBTZXEuaXRlclxuICAgIChmdW4gYyAtPlxuICAgICAgIGlmICFuID0gbGVuZ3RoICFidWYgdGhlbiByZXNpemUoKTtcbiAgICAgICBzZXQgIWJ1ZiAhbiBjO1xuICAgICAgIGluY3IgbilcbiAgICBpO1xuICBzdWIgIWJ1ZiAwICFuXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqIFRoZSBnZXRfIGZ1bmN0aW9ucyBhcmUgYWxsIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG5leHRlcm5hbCBnZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9ieXRlc19nZXQ2NFwiXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHN3YXAxNiAodW5zYWZlX2dldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIHVuc2FmZV9nZXRfdWludDE2X25lIGIgaVxuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfYmUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGlcbiAgZWxzZSBzd2FwMTYgKHVuc2FmZV9nZXRfdWludDE2X25lIGIgaSlcblxubGV0IGdldF9pbnQ4IGIgaSA9XG4gICgoZ2V0X3VpbnQ4IGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSA4KSkgYXNyIChTeXMuaW50X3NpemUgLSA4KVxuXG5sZXQgZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF91aW50MTZfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X2ludDE2X25lIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9uZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2xlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9sZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2JlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9iZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDMyX2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQzMl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2UgdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIHhcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2JlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgeCBlbHNlXG4gIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSAoc3dhcDE2IHgpXG5cbmxldCBzZXRfaW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDE2X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfdWludDggPSBzZXRfaW50OFxubGV0IHNldF91aW50MTZfbmUgPSBzZXRfaW50MTZfbmVcbmxldCBzZXRfdWludDE2X2JlID0gc2V0X2ludDE2X2JlXG5sZXQgc2V0X3VpbnQxNl9sZSA9IHNldF9pbnQxNl9sZVxuXG4oKiBVVEYgY29kZWNzIGFuZCB2YWxpZGF0aW9ucyAqKVxuXG5sZXQgZGVjX2ludmFsaWQgPSBVY2hhci51dGZfZGVjb2RlX2ludmFsaWRcbmxldFtAaW5saW5lXSBkZWNfcmV0IG4gdSA9IFVjaGFyLnV0Zl9kZWNvZGUgbiAoVWNoYXIudW5zYWZlX29mX2ludCB1KVxuXG4oKiBJbiBjYXNlIG9mIGRlY29kaW5nIGVycm9yLCBpZiB3ZSBlcnJvciBvbiB0aGUgZmlyc3QgYnl0ZSwgd2VcbiAgIGNvbnN1bWUgdGhlIGJ5dGUsIG90aGVyd2lzZSB3ZSBjb25zdW1lIHRoZSBbbl0gYnl0ZXMgcHJlY2VkaW5nXG4gICB0aGUgZXJyb3JpbmcgYnl0ZS5cblxuICAgVGhpcyBtZWFucyB0aGF0IGlmIGEgY2xpZW50IHVzZXMgZGVjb2RlcyB3aXRob3V0IGNhcmluZyBhYm91dFxuICAgdmFsaWRpdHkgaXQgbmF0dXJhbGx5IHJlcGxhY2UgYm9ndXMgZGF0YSB3aXRoIFVjaGFyLnJlcCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBXSEFUV0cgRW5jb2Rpbmcgc3RhbmRhcmQuIE90aGVyIHNjaGVtZXMgYXJlIHBvc3NpYmxlIGJ5XG4gICBjb25zdWx0aW5nIHRoZSBudW1iZXIgb2YgdXNlZCBieXRlcyBvbiBpbnZhbGlkIGRlY29kZXMuIEZvciBtb3JlXG4gICBkZXRhaWxzIHNlZSBodHRwczovL2hzaXZvbmVuLmZpL2Jyb2tlbi11dGYtOC9cblxuICAgRm9yIHRoaXMgcmVhc29uIGluIFtnZXRfdXRmXzhfdWNoYXJdIHdlIGdyYWR1YWxseSBjaGVjayB0aGUgbmV4dFxuICAgYnl0ZSBpcyBhdmFpbGFibGUgcmF0aGVyIHRoYW4gZG9pbmcgaXQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlXG4gICBmaXJzdCBieXRlLiBDb250cmFzdCB3aXRoIFtpc192YWxpZF91dGZfOF0uICopXG5cbigqIFVURi04ICopXG5cbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3hCRiBiID0gYiBsc3IgNiA8PiAwYjEwXG5sZXRbQGlubGluZV0gbm90X2luX3hBMF90b194QkYgYiA9IGIgbHNyIDUgPD4gMGIxMDFcbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3g5RiBiID0gYiBsc3IgNSA8PiAwYjEwMFxubGV0W0BpbmxpbmVdIG5vdF9pbl94OTBfdG9feEJGIGIgPSBiIDwgMHg5MCB8fCAweEJGIDwgYlxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feDhGIGIgPSBiIGxzciA0IDw+IDB4OFxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfMiBiMCBiMSA9XG4gICgoYjAgbGFuZCAweDFGKSBsc2wgNikgbG9yXG4gICgoYjEgbGFuZCAweDNGKSlcblxubGV0W0BpbmxpbmVdIHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIgPVxuICAoKGIwIGxhbmQgMHgwRikgbHNsIDEyKSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpIGxzbCA2KSBsb3JcbiAgKChiMiBsYW5kIDB4M0YpKVxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMyA9XG4gICgoYjAgbGFuZCAweDA3KSBsc2wgMTgpIGxvclxuICAoKGIxIGxhbmQgMHgzRikgbHNsIDEyKSBsb3JcbiAgKChiMiBsYW5kIDB4M0YpIGxzbCA2KSBsb3JcbiAgKChiMyBsYW5kIDB4M0YpKVxuXG5sZXQgZ2V0X3V0Zl84X3VjaGFyIGIgaSA9XG4gIGxldCBiMCA9IGdldF91aW50OCBiIGkgaW4gKCogcmFpc2VzIGlmIFtpXSBpcyBub3QgYSB2YWxpZCBpbmRleC4gKilcbiAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDggaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBtYXRjaCBDaGFyLnVuc2FmZV9jaHIgYjAgd2l0aCAoKiBTZWUgVGhlIFVuaWNvZGUgU3RhbmRhcmQsIFRhYmxlIDMuNyAqKVxuICB8ICdcXHgwMCcgLi4gJ1xceDdGJyAtPiBkZWNfcmV0IDEgYjBcbiAgfCAnXFx4QzInIC4uICdcXHhERicgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgZGVjX3JldCAyICh1dGZfOF91Y2hhcl8yIGIwIGIxKVxuICB8ICdcXHhFMCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feEEwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEUxJyAuLiAnXFx4RUMnIHwgJ1xceEVFJyAuLiAnXFx4RUYnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgZGVjX3JldCAzICh1dGZfOF91Y2hhcl8zIGIwIGIxIGIyKVxuICB8ICdcXHhFRCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3g5RiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEYwJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94OTBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8ICdcXHhGMScgLi4gJ1xceEYzJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8ICdcXHhGNCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3g4RiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGxldCBiMyA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjMgdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGRlY19yZXQgNCAodXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMylcbiAgfCBfIC0+IGRlY19pbnZhbGlkIDFcblxubGV0IHNldF91dGZfOF91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQ4IGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweDAwN0YgLT5cbiAgICAgIHNldF91aW50OCBiIGkgdTtcbiAgICAgIDFcbiAgfCB1IHdoZW4gdSA8PSAweDA3RkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEMwIGxvciAodSBsc3IgNikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDIpXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhFMCBsb3IgKHUgbHNyIDEyKSk7XG4gICAgICAgc2V0IGIgKGkgKyAxKSAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICAzKVxuICB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhGMCBsb3IgKHUgbHNyIDE4KSk7XG4gICAgICAgc2V0IGIgKGkgKyAxKSAoMHg4MCBsb3IgKCh1IGxzciAxMikgbGFuZCAweDNGKSk7XG4gICAgICAgc2V0IGIgKGkgKyAyKSAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICA0KVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfOCBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50OCBpblxuICAgIG1hdGNoIENoYXIudW5zYWZlX2NociAoZ2V0IGIgaSkgd2l0aFxuICAgIHwgJ1xceDAwJyAuLiAnXFx4N0YnIC0+IGxvb3AgbWF4IGIgKGkgKyAxKVxuICAgIHwgJ1xceEMyJyAuLiAnXFx4REYnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEUwJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3hBMF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RTEnIC4uICdcXHhFQycgfCAnXFx4RUUnIC4uICdcXHhFRicgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEVEJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194OUYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjAnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDkwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMikpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjEnIC4uICdcXHhGMycgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGNCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feDhGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcblxuKCogVVRGLTE2QkUgKilcblxubGV0IGdldF91dGZfMTZiZV91Y2hhciBiIGkgPVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfYmUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBpZiBpID0gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gIG1hdGNoIGdldCBiIGkgd2l0aFxuICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gZGVjX3JldCAyIHVcbiAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBkZWNfaW52YWxpZCAyXG4gIHwgaGkgLT4gKCogY29tYmluZSBbaGldIHdpdGggYSBsb3cgc3Vycm9nYXRlICopXG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgKG1heCAtIGkgKyAxKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfaW52YWxpZCAyICgqIHJldHJ5IGhlcmUgKilcbiAgICAgIHwgbG8gLT5cbiAgICAgICAgICBsZXQgdSA9ICgoKGhpIGxhbmQgMHgzRkYpIGxzbCAxMCkgbG9yIChsbyBsYW5kIDB4M0ZGKSkgKyAweDEwMDAwIGluXG4gICAgICAgICAgZGVjX3JldCA0IHVcblxubGV0IHNldF91dGZfMTZiZV91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQxNl9iZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlIChzZXQgYiBpIHU7IDIpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgICBsZXQgaGkgPSAoMHhEODAwIGxvciAodScgbHNyIDEwKSkgaW5cbiAgICAgIGxldCBsbyA9ICgweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSkgaW5cbiAgICAgIHNldCBiIGkgaGk7IHNldCBiIChpICsgMikgbG87IDRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzE2YmUgYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfYmUgaW5cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgaWYgaSA9IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gbG9vcCBtYXggYiAoaSArIDIpXG4gICAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBmYWxzZVxuICAgIHwgX2hpIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBmYWxzZVxuICAgICAgICB8IF9sbyAtPiBsb29wIG1heCBiIChpICsgNClcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcblxuKCogVVRGLTE2TEUgKilcblxubGV0IGdldF91dGZfMTZsZV91Y2hhciBiIGkgPVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfbGUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBpZiBpID0gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gIG1hdGNoIGdldCBiIGkgd2l0aFxuICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gZGVjX3JldCAyIHVcbiAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBkZWNfaW52YWxpZCAyXG4gIHwgaGkgLT4gKCogY29tYmluZSBbaGldIHdpdGggYSBsb3cgc3Vycm9nYXRlICopXG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgKG1heCAtIGkgKyAxKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfaW52YWxpZCAyICgqIHJldHJ5IGhlcmUgKilcbiAgICAgIHwgbG8gLT5cbiAgICAgICAgICBsZXQgdSA9ICgoKGhpIGxhbmQgMHgzRkYpIGxzbCAxMCkgbG9yIChsbyBsYW5kIDB4M0ZGKSkgKyAweDEwMDAwIGluXG4gICAgICAgICAgZGVjX3JldCA0IHVcblxubGV0IHNldF91dGZfMTZsZV91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQxNl9sZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlIChzZXQgYiBpIHU7IDIpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgICBsZXQgaGkgPSAoMHhEODAwIGxvciAodScgbHNyIDEwKSkgaW5cbiAgICAgIGxldCBsbyA9ICgweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSkgaW5cbiAgICAgIHNldCBiIGkgaGk7IHNldCBiIChpICsgMikgbG87IDRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzE2bGUgYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfbGUgaW5cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgaWYgaSA9IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gbG9vcCBtYXggYiAoaSArIDIpXG4gICAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBmYWxzZVxuICAgIHwgX2hpIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBmYWxzZVxuICAgICAgICB8IF9sbyAtPiBsb29wIG1heCBiIChpICsgNClcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU3RyaW5nIG9wZXJhdGlvbnMsIGJhc2VkIG9uIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gYnl0ZXMubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+ICBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubW9kdWxlIEIgPSBCeXRlc1xuXG5sZXQgYnRzID0gQi51bnNhZmVfdG9fc3RyaW5nXG5sZXQgYm9zID0gQi51bnNhZmVfb2Zfc3RyaW5nXG5cbmxldCBtYWtlIG4gYyA9XG4gIEIubWFrZSBuIGMgfD4gYnRzXG5sZXQgaW5pdCBuIGYgPVxuICBCLmluaXQgbiBmIHw+IGJ0c1xubGV0IGVtcHR5ID0gXCJcIlxubGV0IG9mX2J5dGVzID0gQi50b19zdHJpbmdcbmxldCB0b19ieXRlcyA9IEIub2Zfc3RyaW5nXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIEIuc3ViIChib3Mgcykgb2ZzIGxlbiB8PiBidHNcbmxldCBibGl0ID1cbiAgQi5ibGl0X3N0cmluZ1xuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IFwiXCJcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluIGJ0cyBAQFxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKEIuY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgPSAoIF4gKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlciBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyaSBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxubGV0IG1hcCBmIHMgPVxuICBCLm1hcCBmIChib3MgcykgfD4gYnRzXG5sZXQgbWFwaSBmIHMgPVxuICBCLm1hcGkgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IGZvbGRfcmlnaHQgZiB4IGEgPVxuICBCLmZvbGRfcmlnaHQgZiAoYm9zIHgpIGFcbmxldCBmb2xkX2xlZnQgZiBhIHggPVxuICBCLmZvbGRfbGVmdCBmIGEgKGJvcyB4KVxubGV0IGV4aXN0cyBmIHMgPVxuICBCLmV4aXN0cyBmIChib3MgcylcbmxldCBmb3JfYWxsIGYgcyA9XG4gIEIuZm9yX2FsbCBmIChib3MgcylcblxuKCogQmV3YXJlOiB3ZSBjYW5ub3QgdXNlIEIudHJpbSBvciBCLmVzY2FwZSBiZWNhdXNlIHRoZXkgYWx3YXlzIG1ha2UgYVxuICAgY29weSwgYnV0IFN0cmluZy5tbGkgc3BlbGxzIG91dCBzb21lIGNhc2VzIHdoZXJlIHdlIGFyZSBub3QgYWxsb3dlZFxuICAgdG8gbWFrZSBhIGNvcHkuICopXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgaWYgcyA9IFwiXCIgdGhlbiBzXG4gIGVsc2UgaWYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAwKSB8fCBpc19zcGFjZSAodW5zYWZlX2dldCBzIChsZW5ndGggcyAtIDEpKVxuICAgIHRoZW4gYnRzIChCLnRyaW0gKGJvcyBzKSlcbiAgZWxzZSBzXG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgYiA9IGJvcyBzIGluXG4gICgqIFdlIHNhdGlzZnkgW3Vuc2FmZV9lc2NhcGVdJ3MgcHJlY29uZGl0aW9uIGJ5IHBhc3NpbmcgYW5cbiAgICAgaW1tdXRhYmxlIGJ5dGUgc2VxdWVuY2UgW2JdLiAqKVxuICBidHMgKEIudW5zYWZlX2VzY2FwZSBiKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gICAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9XG4gIEIudXBwZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPVxuICBCLmxvd2VyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi51bmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfc3RyaW5nX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoIDAgeFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N0cmluZ19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IGJvcyBzIHw+IEIudG9fc2VxXG5cbmxldCB0b19zZXFpIHMgPSBib3MgcyB8PiBCLnRvX3NlcWlcblxubGV0IG9mX3NlcSBnID0gQi5vZl9zZXEgZyB8PiBidHNcblxuKCogVVRGIGRlY29kZXJzIGFuZCB2YWxpZGF0b3JzICopXG5cbmxldCBnZXRfdXRmXzhfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzhfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzggcyA9IEIuaXNfdmFsaWRfdXRmXzggKGJvcyBzKVxuXG5sZXQgZ2V0X3V0Zl8xNmJlX3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl8xNmJlX3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl8xNmJlIHMgPSBCLmlzX3ZhbGlkX3V0Zl8xNmJlIChib3MgcylcblxubGV0IGdldF91dGZfMTZsZV91Y2hhciBzIGkgPSBCLmdldF91dGZfMTZsZV91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfMTZsZSBzID0gQi5pc192YWxpZF91dGZfMTZsZSAoYm9zIHMpXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjRcIlxuXG5sZXQgZ2V0X2ludDggcyBpID0gQi5nZXRfaW50OCAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2xlIHMgaSA9IEIuZ2V0X3VpbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2JlIHMgaSA9IEIuZ2V0X3VpbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbmUgcyBpID0gQi5nZXRfaW50MTZfbmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2xlIHMgaSA9IEIuZ2V0X2ludDE2X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9iZSBzIGkgPSBCLmdldF9pbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfbGUgcyBpID0gQi5nZXRfaW50MzJfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2JlIHMgaSA9IEIuZ2V0X2ludDMyX2JlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9sZSBzIGkgPSBCLmdldF9pbnQ2NF9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfYmUgcyBpID0gQi5nZXRfaW50NjRfYmUgKGJvcyBzKSBpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHVuaXQgPSAoKVxuXG5sZXQgZXF1YWwgKCkgKCkgPSB0cnVlXG5sZXQgY29tcGFyZSAoKSAoKSA9IDBcbmxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBleHRlcm5fZmxhZ3MgPVxuICAgIE5vX3NoYXJpbmdcbiAgfCBDbG9zdXJlc1xuICB8IENvbXBhdF8zMlxuXG4oKiBub3RlOiB0aGlzIHR5cGUgZGVmaW5pdGlvbiBpcyB1c2VkIGluICdydW50aW1lL2RlYnVnZ2VyLmMnICopXG5cbmV4dGVybmFsIHRvX2NoYW5uZWw6IG91dF9jaGFubmVsIC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxuZXh0ZXJuYWwgdG9fYnl0ZXM6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGJ5dGVzXG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzXCJcbmV4dGVybmFsIHRvX3N0cmluZzogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gc3RyaW5nXG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB0b19idWZmZXJfdW5zYWZlOlxuICAgICAgYnl0ZXMgLT4gaW50IC0+IGludCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyXCJcblxubGV0IHRvX2J1ZmZlciBidWZmIG9mcyBsZW4gdiBmbGFncyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC50b19idWZmZXI6IHN1YnN0cmluZyBvdXQgb2YgYm91bmRzXCJcbiAgZWxzZSB0b19idWZmZXJfdW5zYWZlIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzXG5cbigqIFRoZSBmdW5jdGlvbnMgYmVsb3cgdXNlIGJ5dGUgc2VxdWVuY2VzIGFzIGlucHV0LCBuZXZlciB1c2luZyBhbnlcbiAgIG11dGF0aW9uLiBJdCBtYWtlcyBzZW5zZSB0byB1c2Ugbm9uLW11dGF0ZWQgW2J5dGVzXSByYXRoZXIgdGhhblxuICAgW3N0cmluZ10sIGJlY2F1c2Ugd2UgcmVhbGx5IHdvcmsgd2l0aCBzZXF1ZW5jZXMgb2YgYnl0ZXMsIG5vdFxuICAgYSB0ZXh0IHJlcHJlc2VudGF0aW9uLlxuKilcblxuZXh0ZXJuYWwgZnJvbV9jaGFubmVsOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIGZyb21fYnl0ZXNfdW5zYWZlOiBieXRlcyAtPiBpbnQgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlc1wiXG5leHRlcm5hbCBkYXRhX3NpemVfdW5zYWZlOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX21hcnNoYWxfZGF0YV9zaXplXCJcblxubGV0IGhlYWRlcl9zaXplID0gMTZcbmxldCBkYXRhX3NpemUgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZGF0YV9zaXplXCJcbiAgZWxzZSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzXG5sZXQgdG90YWxfc2l6ZSBidWZmIG9mcyA9IGhlYWRlcl9zaXplICsgZGF0YV9zaXplIGJ1ZmYgb2ZzXG5cbmxldCBmcm9tX2J5dGVzIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGxlbiA9IGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnMgaW5cbiAgICBpZiBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIChoZWFkZXJfc2l6ZSArIGxlbilcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgICBlbHNlIGZyb21fYnl0ZXNfdW5zYWZlIGJ1ZmYgb2ZzXG4gIGVuZFxuXG5sZXQgZnJvbV9zdHJpbmcgYnVmZiBvZnMgPVxuICAoKiBCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIGlzIHNhZmUgaGVyZSwgYXMgdGhlIHByb2R1Y2VkIGJ5dGVcbiAgICAgc2VxdWVuY2UgaXMgbmV2ZXIgbXV0YXRlZCAqKVxuICBmcm9tX2J5dGVzIChCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIGJ1ZmYpIG9mc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgYXJyYXlzLiAqKVxudHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuKCogQXJyYXkgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBsZW5ndGggOiAnYSBhcnJheSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgbWFrZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCBjcmVhdGU6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuZXh0ZXJuYWwgdW5zYWZlX3N1YiA6ICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfc3ViXCJcbmV4dGVybmFsIGFwcGVuZF9wcmltIDogJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfYXBwZW5kXCJcbmV4dGVybmFsIGNvbmNhdCA6ICdhIGFycmF5IGxpc3QgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfY29uY2F0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgJ2EgYXJyYXkgLT4gaW50IC0+ICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9hcnJheV9ibGl0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDpcbiAgJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2ZpbGxcIlxuZXh0ZXJuYWwgY3JlYXRlX2Zsb2F0OiBpbnQgLT4gZmxvYXQgYXJyYXkgPSBcImNhbWxfbWFrZV9mbG9hdF92ZWN0XCJcblxubW9kdWxlIEZsb2F0YXJyYXkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGZsb2F0YXJyYXkgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCBsZW5ndGggOiBmbG9hdGFycmF5IC0+IGludCA9IFwiJWZsb2F0YXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuZW5kXG5cbmxldCBpbml0IGwgZiA9XG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlXG4gIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0XCJcbiAgKCogU2VlICM2NTc1LiBXZSBtdXN0IG5vdCBldmFsdWF0ZSBbZiAwXSB3aGVuIFtsIDw9IDBdLlxuICAgICBXZSBjb3VsZCBhbHNvIGNoZWNrIGZvciBtYXhpbXVtIGFycmF5IHNpemUsIGJ1dCB0aGlzIGRlcGVuZHNcbiAgICAgb24gd2hldGhlciB3ZSBjcmVhdGUgYSBmbG9hdCBhcnJheSBvciBhIHJlZ3VsYXIgb25lLi4uICopXG4gIGVsc2VcbiAgIGxldCByZXMgPSBjcmVhdGUgbCAoZiAwKSBpblxuICAgZm9yIGkgPSAxIHRvIHByZWQgbCBkb1xuICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICBkb25lO1xuICAgcmVzXG5cbmxldCBtYWtlX21hdHJpeCBzeCBzeSBpbml0ID1cbiAgKCogV2UgcmFpc2UgZXZlbiBpZiBbc3ggPSAwICYmIHN5IDwgMF06ICopXG4gIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkubWFrZV9tYXRyaXhcIjtcbiAgbGV0IHJlcyA9IGNyZWF0ZSBzeCBbfHxdIGluXG4gIGlmIHN5ID4gMCB0aGVuIGJlZ2luXG4gICAgZm9yIHggPSAwIHRvIHByZWQgc3ggZG9cbiAgICAgIHVuc2FmZV9zZXQgcmVzIHggKGNyZWF0ZSBzeSBpbml0KVxuICAgIGRvbmU7XG4gIGVuZDtcbiAgcmVzXG5cbmxldCBpbml0X21hdHJpeCBzeCBzeSBmID1cbiAgKCogV2UgcmFpc2UgZXZlbiBpZiBbc3ggPSAwICYmIHN5IDwgMF06ICopXG4gIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuaW5pdF9tYXRyaXhcIjtcbiAgbGV0IHJlcyA9IGNyZWF0ZSBzeCBbfHxdIGluXG4gICgqIFdlIG11c3Qgbm90IGV2YWx1YXRlIFtmIHggMF0gd2hlbiBbc3kgPD0gMF06ICopXG4gIGlmIHN5ID4gMCB0aGVuIGJlZ2luXG4gICAgZm9yIHggPSAwIHRvIHByZWQgc3ggZG9cbiAgICAgIGxldCByb3cgPSBjcmVhdGUgc3kgKGYgeCAwKSBpblxuICAgICAgZm9yIHkgPSAxIHRvIHByZWQgc3kgZG9cbiAgICAgICAgdW5zYWZlX3NldCByb3cgeSAoZiB4IHkpXG4gICAgICBkb25lO1xuICAgICAgdW5zYWZlX3NldCByZXMgeCByb3dcbiAgICBkb25lO1xuICBlbmQ7XG4gIHJlc1xuXG5sZXQgY29weSBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpbiBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSB1bnNhZmVfc3ViIGEgMCBsXG5cbmxldCBhcHBlbmQgYTEgYTIgPVxuICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgaWYgbDEgPSAwIHRoZW4gY29weSBhMlxuICBlbHNlIGlmIGxlbmd0aCBhMiA9IDAgdGhlbiB1bnNhZmVfc3ViIGExIDAgbDFcbiAgZWxzZSBhcHBlbmRfcHJpbSBhMSBhMlxuXG5sZXQgc3ViIGEgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuc3ViXCJcbiAgZWxzZSB1bnNhZmVfc3ViIGEgb2ZzIGxlblxuXG5sZXQgZmlsbCBhIG9mcyBsZW4gdiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZmlsbFwiXG4gIGVsc2UgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxubGV0IGJsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IGxlbmd0aCBhMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggYTIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmJsaXRcIlxuICBlbHNlIHVuc2FmZV9ibGl0IGExIG9mczEgYTIgb2ZzMiBsZW5cblxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBpdGVyMiBmIGEgYiA9XG4gIGlmIGxlbmd0aCBhIDw+IGxlbmd0aCBiIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5Lml0ZXIyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2VcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpIGRvbmVcblxubGV0IG1hcCBmIGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCAoZih1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZih1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwX2lucGxhY2UgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgYSBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gIGRvbmVcblxubGV0IG1hcGlfaW5wbGFjZSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgdW5zYWZlX3NldCBhIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICBkb25lXG5cbmxldCBtYXAyIGYgYSBiID1cbiAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgaWYgbGEgPD4gbGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlIGJlZ2luXG4gICAgaWYgbGEgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSAoZiAodW5zYWZlX2dldCBhIDApICh1bnNhZmVfZ2V0IGIgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG4gIGVuZFxuXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBtYXBpIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmIDAgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCB0b19saXN0IGEgPVxuICBsZXQgcmVjIHRvbGlzdCBpIHJlcyA9XG4gICAgaWYgaSA8IDAgdGhlbiByZXMgZWxzZSB0b2xpc3QgKGkgLSAxKSAodW5zYWZlX2dldCBhIGkgOjogcmVzKSBpblxuICB0b2xpc3QgKGxlbmd0aCBhIC0gMSkgW11cblxuKCogQ2Fubm90IHVzZSBMaXN0Lmxlbmd0aCBoZXJlIGJlY2F1c2UgdGhlIExpc3QgbW9kdWxlIGRlcGVuZHMgb24gQXJyYXkuICopXG5sZXQgcmVjIGxpc3RfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY3VcbiAgfCBfOjp0IC0+IGxpc3RfbGVuZ3RoIChzdWNjIGFjY3UpIHRcblxubGV0IG9mX2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGEgPSBjcmVhdGUgKGxpc3RfbGVuZ3RoIDAgbCkgaGQgaW5cbiAgICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgICBbXSAtPiBhXG4gICAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpKzEpIHRsIGluXG4gICAgICBmaWxsIDEgdGxcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjIGlucHV0X2FycmF5ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBpbnB1dF9hcnJheSBpblxuICBpZiBsZW4gPSAwIHRoZW4gKGFjYywgW3x8XSkgZWxzZSBiZWdpblxuICAgIGxldCBhY2MsIGVsdCA9IGYgYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IDApIGluXG4gICAgbGV0IG91dHB1dF9hcnJheSA9IGNyZWF0ZSBsZW4gZWx0IGluXG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGFjYycsIGVsdCA9IGYgIWFjYyAodW5zYWZlX2dldCBpbnB1dF9hcnJheSBpKSBpblxuICAgICAgYWNjIDo9IGFjYyc7XG4gICAgICB1bnNhZmVfc2V0IG91dHB1dF9hcnJheSBpIGVsdDtcbiAgICBkb25lO1xuICAgICFhY2MsIG91dHB1dF9hcnJheVxuICBlbmRcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIGxldCBuMSA9IGxlbmd0aCBsMVxuICBhbmQgbjIgPSBsZW5ndGggbDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZvcl9hbGwyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBsMSBpKSAodW5zYWZlX2dldCBsMiBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZXhpc3RzMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZXhpc3RzMlwiXG4gIGVsc2UgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuMSB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IG1lbSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtcSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiB4ID09ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9vcHQgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4XG4gICAgICBlbHNlIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX2luZGV4IHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gU29tZSBpXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9tYXAgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIChzdWNjIGkpXG4gICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcGkgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IHggPVxuICBpZiB4ID0gW3x8XSB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCBhMCwgYjAgPSB1bnNhZmVfZ2V0IHggMCBpblxuICAgIGxldCBuID0gbGVuZ3RoIHggaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBuIGEwIGluXG4gICAgbGV0IGIgPSBjcmVhdGUgbiBiMCBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IGFpLCBiaSA9IHVuc2FmZV9nZXQgeCBpIGluXG4gICAgICB1bnNhZmVfc2V0IGEgaSBhaTtcbiAgICAgIHVuc2FmZV9zZXQgYiBpIGJpXG4gICAgZG9uZTtcbiAgICBhLCBiXG4gIGVuZFxuXG5sZXQgY29tYmluZSBhIGIgPVxuICBsZXQgbmEgPSBsZW5ndGggYSBpblxuICBsZXQgbmIgPSBsZW5ndGggYiBpblxuICBpZiBuYSA8PiBuYiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuY29tYmluZVwiO1xuICBpZiBuYSA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgeCA9IGNyZWF0ZSBuYSAodW5zYWZlX2dldCBhIDAsIHVuc2FmZV9nZXQgYiAwKSBpblxuICAgIGZvciBpID0gMSB0byBuYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgeCBpICh1bnNhZmVfZ2V0IGEgaSwgdW5zYWZlX2dldCBiIGkpXG4gICAgZG9uZTtcbiAgICB4XG4gIGVuZFxuXG5leGNlcHRpb24gQm90dG9tIG9mIGludFxubGV0IHNvcnQgY21wIGEgPVxuICBsZXQgbWF4c29uIGwgaSA9XG4gICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAheFxuICAgIGVuZCBlbHNlXG4gICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgIHRoZW4gaTMxKzFcbiAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgaW5cbiAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICBidWJibGVkb3duIGwgalxuICBpblxuICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gIGRvbmU7XG4gIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cblxubGV0IGN1dG9mZiA9IDVcbmxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgZW5kXG4gICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gIGluXG4gIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgIGRlY3IgajtcbiAgICAgIGRvbmU7XG4gICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgZG9uZTtcbiAgaW5cbiAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgIGxldCB0ID0gbWFrZSBsMiAoZ2V0IGEgMCkgaW5cbiAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgZW5kXG5cblxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbmxldCBzaHVmZmxlIH5yYW5kIGEgPSAoKiBGaXNoZXItWWF0ZXMgKilcbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDEgZG9cbiAgICBsZXQgaiA9IHJhbmQgKGkgKyAxKSBpblxuICAgIGxldCB2ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICB1bnNhZmVfc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgdW5zYWZlX3NldCBhIGogdlxuICBkb25lXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgZWxzZSBTZXEuTmlsXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGEgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICB0aGVuXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3Jldl9saXN0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbfHxdXG4gIHwgaGQ6OnRsIGFzIGwgLT5cbiAgICAgIGxldCBsZW4gPSBsaXN0X2xlbmd0aCAwIGwgaW5cbiAgICAgIGxldCBhID0gY3JlYXRlIGxlbiBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICAgIGluXG4gICAgICBmaWxsIChsZW4tMikgdGxcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gIG9mX3Jldl9saXN0IGxcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgTmljb2xhcyBPamVkYSBCYXIsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgbmVnIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCBhZGQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsIHN1YiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgbXVsIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCBkaXYgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsIHJlbSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZm1hIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1hX2Zsb2F0XCIgXCJjYW1sX2ZtYVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcblxubGV0IHplcm8gPSAwLlxubGV0IG9uZSA9IDEuXG5sZXQgbWludXNfb25lID0gLTEuXG5sZXQgaW5maW5pdHkgPSBTdGRsaWIuaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBTdGRsaWIubmVnX2luZmluaXR5XG5sZXQgbmFuID0gU3RkbGliLm5hblxubGV0IHF1aWV0X25hbiA9IG5hblxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmxldCBzaWduYWxpbmdfbmFuID0gZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAxTFxubGV0IGlzX2Zpbml0ZSAoeDogZmxvYXQpID0geCAtLiB4ID0gMC5cbmxldCBpc19pbmZpbml0ZSAoeDogZmxvYXQpID0gMS4gLy4geCA9IDAuXG5sZXQgaXNfbmFuICh4OiBmbG9hdCkgPSB4IDw+IHhcblxubGV0IHBpID0gMHgxLjkyMWZiNTQ0NDJkMThwKzFcbmxldCBtYXhfZmxvYXQgPSBTdGRsaWIubWF4X2Zsb2F0XG5sZXQgbWluX2Zsb2F0ID0gU3RkbGliLm1pbl9mbG9hdFxubGV0IGVwc2lsb24gPSBTdGRsaWIuZXBzaWxvbl9mbG9hdFxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0b19pbnQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZ19vcHQgPSBTdGRsaWIuZmxvYXRfb2Zfc3RyaW5nX29wdFxubGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5zdHJpbmdfb2ZfZmxvYXRcbnR5cGUgZnBjbGFzcyA9IFN0ZGxpYi5mcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBwb3cgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNicnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jYnJ0X2Zsb2F0XCIgXCJjYW1sX2NicnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwMiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cDJfZmxvYXRcIiBcImNhbWxfZXhwMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMl9mbG9hdFwiIFwiY2FtbF9sb2cyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBlcmYgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9lcmZfZmxvYXRcIiBcImNhbWxfZXJmXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZmMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9lcmZjX2Zsb2F0XCIgXCJjYW1sX2VyZmNcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdHJ1bmMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90cnVuY19mbG9hdFwiIFwiY2FtbF90cnVuY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCByb3VuZCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3JvdW5kX2Zsb2F0XCIgXCJjYW1sX3JvdW5kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbltAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCBpc19pbnRlZ2VyIHggPSB4ID0gdHJ1bmMgeCAmJiBpc19maW5pdGUgeFxuXG5leHRlcm5hbCBuZXh0X2FmdGVyIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmV4dGFmdGVyX2Zsb2F0XCIgXCJjYW1sX25leHRhZnRlclwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCBzdWNjIHggPSBuZXh0X2FmdGVyIHggaW5maW5pdHlcbmxldCBwcmVkIHggPSBuZXh0X2FmdGVyIHggbmVnX2luZmluaXR5XG5cbmV4dGVybmFsIGNvcHlfc2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2lnbl9iaXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gYm9vbFxuICA9IFwiY2FtbF9zaWduYml0X2Zsb2F0XCIgXCJjYW1sX3NpZ25iaXRcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxudHlwZSB0ID0gZmxvYXRcbmV4dGVybmFsIGNvbXBhcmUgOiBmbG9hdCAtPiBmbG9hdCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmxldCBlcXVhbCB4IHkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0W0BpbmxpbmVdIG1pbiAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4ICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuIHkgZWxzZSB4XG5cbmxldFtAaW5saW5lXSBtaW5fbWF4ICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIGlzX25hbiB4IHx8IGlzX25hbiB5IHRoZW4gKG5hbiwgbmFuKVxuICBlbHNlIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlbiAoeCwgeSkgZWxzZSAoeSwgeClcblxubGV0W0BpbmxpbmVdIG1pbl9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIHlcblxubGV0W0BpbmxpbmVdIG1heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXhfbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIGlzX25hbiB4IHRoZW4gKHkseSlcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuICh4LHgpXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LHkpIGVsc2UgKHkseClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gZmxvYXRhcnJheVxuXG4gIGV4dGVybmFsIGxlbmd0aCA6IHQgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIGxldCB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdiA9XG4gICAgZm9yIGkgPSBvZnMgdG8gb2ZzICsgbGVuIC0gMSBkbyB1bnNhZmVfc2V0IGEgaSB2IGRvbmVcblxuICBleHRlcm5hbCB1bnNhZmVfYmxpdDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPVxuICAgIFwiY2FtbF9mbG9hdGFycmF5X2JsaXRcIiBbQEBub2FsbG9jXVxuXG4gIGxldCBjaGVjayBhIG9mcyBsZW4gbXNnID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzICsgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPiBsZW5ndGggYSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBsZXQgbWFrZSBuIHYgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbiBpblxuICAgIHVuc2FmZV9maWxsIHJlc3VsdCAwIG4gdjtcbiAgICByZXN1bHRcblxuICBsZXQgaW5pdCBsIGYgPVxuICAgIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pbml0XCJcbiAgICBlbHNlXG4gICAgICBsZXQgcmVzID0gY3JlYXRlIGwgaW5cbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgICBkb25lO1xuICAgICAgcmVzXG5cbiAgbGV0IG1ha2VfbWF0cml4IHN4IHN5IHYgPVxuICAgICgqIFdlIHJhaXNlIGV2ZW4gaWYgW3N4ID0gMCAmJiBzeSA8IDBdOiAqKVxuICAgIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFrZV9tYXRyaXhcIjtcbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBzeCAoY3JlYXRlIDApIGluXG4gICAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICAgIGZvciB4ID0gMCB0byBzeCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByZXMgeCAobWFrZSBzeSB2KVxuICAgICAgZG9uZTtcbiAgICBlbmQ7XG4gICAgcmVzXG5cbiAgbGV0IGluaXRfbWF0cml4IHN4IHN5IGYgPVxuICAgICgqIFdlIHJhaXNlIGV2ZW4gaWYgW3N4ID0gMCAmJiBzeSA8IDBdOiAqKVxuICAgIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaW5pdF9tYXRyaXhcIjtcbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBzeCAoY3JlYXRlIDApIGluXG4gICAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICAgIGZvciB4ID0gMCB0byBzeCAtIDEgZG9cbiAgICAgICAgbGV0IHJvdyA9IGNyZWF0ZSBzeSBpblxuICAgICAgICBmb3IgeSA9IDAgdG8gc3kgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCByb3cgeSAoZiB4IHkpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgcmVzIHggcm93XG4gICAgICBkb25lO1xuICAgIGVuZDtcbiAgICByZXNcblxuICBsZXQgYXBwZW5kIGExIGEyID1cbiAgICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgICBsZXQgbDIgPSBsZW5ndGggYTIgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChsMSArIGwyKSBpblxuICAgIHVuc2FmZV9ibGl0IGExIDAgcmVzdWx0IDAgbDE7XG4gICAgdW5zYWZlX2JsaXQgYTIgMCByZXN1bHQgbDEgbDI7XG4gICAgcmVzdWx0XG5cbiAgKCogbmV4dCAzIGZ1bmN0aW9uczogbW9kaWZpZWQgY29weSBvZiBjb2RlIGZyb20gc3RyaW5nLm1sICopXG4gIGxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID1cbiAgICBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5jb25jYXRcIlxuXG4gIGxldCByZWMgc3VtX2xlbmd0aHMgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgYWNjKSBhY2MpIHRsXG5cbiAgbGV0IGNvbmNhdCBsID1cbiAgICBsZXQgbGVuID0gc3VtX2xlbmd0aHMgMCBsIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgbCBpID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgKGkgPSBsZW4pXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCBobGVuID0gbGVuZ3RoIGhkIGluXG4gICAgICAgIHVuc2FmZV9ibGl0IGhkIDAgcmVzdWx0IGkgaGxlbjtcbiAgICAgICAgbG9vcCB0bCAoaSArIGhsZW4pXG4gICAgaW5cbiAgICBsb29wIGwgMDtcbiAgICByZXN1bHRcblxuICBsZXQgc3ViIGEgb2ZzIGxlbiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuc3ViXCI7XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBhIG9mcyByZXN1bHQgMCBsZW47XG4gICAgcmVzdWx0XG5cbiAgbGV0IGNvcHkgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbCBpblxuICAgIHVuc2FmZV9ibGl0IGEgMCByZXN1bHQgMCBsO1xuICAgIHJlc3VsdFxuXG4gIGxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5maWxsXCI7XG4gICAgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxuICBsZXQgYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW4gPVxuICAgIGNoZWNrIHNyYyBzb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICBjaGVjayBkc3QgZG9mcyBsZW4gXCJGbG9hdC5hcnJheS5ibGl0XCI7XG4gICAgdW5zYWZlX2JsaXQgc3JjIHNvZnMgZHN0IGRvZnMgbGVuXG5cbiAgbGV0IHRvX2xpc3QgYSA9XG4gICAgTGlzdC5pbml0IChsZW5ndGggYSkgKHVuc2FmZV9nZXQgYSlcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICAgIGxldCByZWMgZmlsbCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IHJlc3VsdFxuICAgICAgfCBoIDo6IHQgLT4gdW5zYWZlX3NldCByZXN1bHQgaSBoOyBmaWxsIChpICsgMSkgdFxuICAgIGluXG4gICAgZmlsbCAwIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyMiBmIGEgYiA9XG4gICAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2VcbiAgICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG4gIGxldCBtYXAgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1hcF9pbnBsYWNlIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCBhIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lXG5cbiAgbGV0IG1hcDIgZiBhIGIgPVxuICAgIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcmkgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICBsZXQgbWFwaSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBtYXBpX2lucGxhY2UgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IGEgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZXhpc3RzIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSkgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvcl9hbGwgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBmYWxzZSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgbWVtIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGJ1dCBzbGlnaHRseSBkaWZmZXJlbnQgKilcbiAgbGV0IG1lbV9pZWVlIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgeCA9ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmaW5kX29wdCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9pbmRleCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gU29tZSBpXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9tYXAgZiBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIGYgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZpbmRfbWFwaSBmIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG4gIGxldCBzb3J0IGNtcCBhID1cbiAgICBsZXQgbWF4c29uIGwgaSA9XG4gICAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgICAheFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICAgIHRoZW4gaTMxKzFcbiAgICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICAgIGluXG4gICAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICAgIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIGJ1YmJsZWRvd24gbCBqXG4gICAgaW5cbiAgICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICAgIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgICBkb25lO1xuICAgIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBleGNlcHQgZm9yIHRoZSBjYWxsIHRvIFtjcmVhdGVdICopXG4gIGxldCBjdXRvZmYgPSA1XG4gIGxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gICAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgICAgZW5kXG4gICAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgICBpblxuICAgIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICAgIGRlY3IgajtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgICAgZG9uZTtcbiAgICBpblxuICAgIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICAgIGxldCB0ID0gY3JlYXRlIGwyIGluXG4gICAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gICAgZW5kXG5cbiAgbGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBzaHVmZmxlIH5yYW5kIGEgPSAoKiBGaXNoZXItWWF0ZXMgKilcbiAgICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMSBkb1xuICAgICAgbGV0IGogPSByYW5kIChpICsgMSkgaW5cbiAgICAgIGxldCB2ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHVuc2FmZV9zZXQgYSBqIHZcbiAgICBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXEgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxaSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3Jldl9saXN0IGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICBbXSAtPiBhXG4gICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgIGluXG4gICAgZmlsbCAobGVuLTEpIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3NlcSBpID1cbiAgICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgICBvZl9yZXZfbGlzdCBsXG5cblxuICBsZXQgbWFwX3RvX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPSAwIHRoZW4gW3wgfF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBBcnJheS5tYWtlIGwgKGYgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICBsZXQgbWFwX2Zyb21fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuZW5kXG5cbm1vZHVsZSBBcnJheUxhYmVscyA9IEFycmF5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50MzJdOiAzMi1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50MzIgLT4gaW50ID0gXCIlaW50MzJfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2ZfZmxvYXRcIiBcImNhbWxfaW50MzJfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX3RvX2Zsb2F0XCIgXCJjYW1sX2ludDMyX3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQzMiAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCB6ZXJvID0gMGxcbmxldCBvbmUgPSAxbFxubGV0IG1pbnVzX29uZSA9IC0xbFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFsXG5sZXQgcHJlZCBuID0gc3ViIG4gMWxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMGwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMGxcbmxldCBtYXhfaW50ID0gMHg3RkZGRkZGRmxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMWwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBtYXRjaCBTeXMud29yZF9zaXplIHdpdGhcbiAgfCAzMiAtPlxuICAgICAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgICAgIGZ1biBuIC0+XG4gICAgICAgIGlmIG4gPj0gMGwgJiYgbiA8PSBtYXhfaW50IHRoZW5cbiAgICAgICAgICBTb21lICh0b19pbnQgbilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgfCA2NCAtPlxuICAgICAgKCogU28gdGhhdCBpdCBjb21waWxlcyBpbiAzMi1iaXQgKilcbiAgICAgIGxldCBtYXNrID0gMHhGRkZGIGxzbCAxNiBsb3IgMHhGRkZGIGluXG4gICAgICBmdW4gbiAtPiBTb21lICh0b19pbnQgbiBsYW5kIG1hc2spXG4gIHwgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmcgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzIgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBpbnQzMlxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IHggPSB5XG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgdW5zaWduZWRfbHQgbiBtID1cbiAgc3ViIG4gbWluX2ludCA8IHN1YiBtIG1pbl9pbnRcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lIGJpdG5lc3MuXG4gICBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfbHQgbiBkIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9sdCByIGQgdGhlbiBxIGVsc2Ugc3VjYyBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQ2NF06IDY0LWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbmV4dGVybmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX25hdGl2ZWludFwiXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBpbnQ2NCAtPiBuYXRpdmVpbnQgPSBcIiVpbnQ2NF90b19uYXRpdmVpbnRcIlxuXG5sZXQgemVybyA9IDBMXG5sZXQgb25lID0gMUxcbmxldCBtaW51c19vbmUgPSAtMUxcbmxldCBzdWNjIG4gPSBhZGQgbiAxTFxubGV0IHByZWQgbiA9IHN1YiBuIDFMXG5sZXQgYWJzIG4gPSBpZiBuID49IDBMIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgbWluX2ludCA9IDB4ODAwMDAwMDAwMDAwMDAwMExcbmxldCBtYXhfaW50ID0gMHg3RkZGRkZGRkZGRkZGRkZGTFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xTClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgbiA+PSAwTCAmJiBuIDw9IG1heF9pbnQgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbnR5cGUgdCA9IGludDY0XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0geCA9IHlcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCB1bnNpZ25lZF9sdCBuIG0gPVxuICBzdWIgbiBtaW5faW50IDwgc3ViIG0gbWluX2ludFxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWUgYml0bmVzcy5cbiAgIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9sdCBuIGQgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2x0IHIgZCB0aGVuIHEgZWxzZSBzdWNjIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW05hdGl2ZWludF06IHByb2Nlc3Nvci1uYXRpdmUgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X25lZ1wiXG5leHRlcm5hbCBhZGQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FkZFwiXG5leHRlcm5hbCBzdWI6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3N1YlwiXG5leHRlcm5hbCBtdWw6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X211bFwiXG5leHRlcm5hbCBkaXY6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2RpdlwiXG5leHRlcm5hbCByZW06IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X21vZFwiXG5leHRlcm5hbCBsb2dhbmQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FuZFwiXG5leHRlcm5hbCBsb2dvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNyXCJcbmV4dGVybmFsIG9mX2ludDogaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50OiBuYXRpdmVpbnQgLT4gaW50ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBuYXRpdmVpbnQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyOiBpbnQzMiAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzI6IG5hdGl2ZWludCAtPiBpbnQzMiA9IFwiJW5hdGl2ZWludF90b19pbnQzMlwiXG5cbmxldCB6ZXJvID0gMG5cbmxldCBvbmUgPSAxblxubGV0IG1pbnVzX29uZSA9IC0xblxubGV0IHN1Y2MgbiA9IGFkZCBuIDFuXG5sZXQgcHJlZCBuID0gc3ViIG4gMW5cbmxldCBhYnMgbiA9IGlmIG4gPj0gMG4gdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBzaXplID0gU3lzLndvcmRfc2l6ZVxubGV0IG1pbl9pbnQgPSBzaGlmdF9sZWZ0IDFuIChzaXplIC0gMSlcbmxldCBtYXhfaW50ID0gc3ViIG1pbl9pbnQgMW5cbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMW4pXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIG4gPj0gMG4gJiYgbiA8PSBtYXhfaW50IHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmcgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nOiBzdHJpbmcgLT4gbmF0aXZlaW50ID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IG5hdGl2ZWludFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IHVuc2lnbmVkX2x0IG4gbSA9XG4gIHN1YiBuIG1pbl9pbnQgPCBzdWIgbSBtaW5faW50XG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZSBiaXRuZXNzLlxuICAgU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2x0IG4gZCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfbHQgciBkIHRoZW4gcSBlbHNlIHN1Y2MgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBsZXhlcnMgZ2VuZXJhdGVkIGJ5IGNhbWxsZXggKilcblxudHlwZSBwb3NpdGlvbiA9IHtcbiAgcG9zX2ZuYW1lIDogc3RyaW5nO1xuICBwb3NfbG51bSA6IGludDtcbiAgcG9zX2JvbCA6IGludDtcbiAgcG9zX2NudW0gOiBpbnQ7XG59XG5cbmxldCBkdW1teV9wb3MgPSB7XG4gIHBvc19mbmFtZSA9IFwiXCI7XG4gIHBvc19sbnVtID0gMDtcbiAgcG9zX2JvbCA9IDA7XG4gIHBvc19jbnVtID0gLTE7XG59XG5cbnR5cGUgbGV4YnVmID1cbiAgeyByZWZpbGxfYnVmZiA6IGxleGJ1ZiAtPiB1bml0O1xuICAgIG11dGFibGUgbGV4X2J1ZmZlciA6IGJ5dGVzO1xuICAgIG11dGFibGUgbGV4X2J1ZmZlcl9sZW4gOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfYWJzX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9zdGFydF9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfY3Vycl9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfbGFzdF9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfbGFzdF9hY3Rpb24gOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfZW9mX3JlYWNoZWQgOiBib29sO1xuICAgIG11dGFibGUgbGV4X21lbSA6IGludCBhcnJheTtcbiAgICBtdXRhYmxlIGxleF9zdGFydF9wIDogcG9zaXRpb247XG4gICAgbXV0YWJsZSBsZXhfY3Vycl9wIDogcG9zaXRpb247XG4gIH1cblxudHlwZSBsZXhfdGFibGVzID1cbiAgeyBsZXhfYmFzZTogc3RyaW5nO1xuICAgIGxleF9iYWNrdHJrOiBzdHJpbmc7XG4gICAgbGV4X2RlZmF1bHQ6IHN0cmluZztcbiAgICBsZXhfdHJhbnM6IHN0cmluZztcbiAgICBsZXhfY2hlY2s6IHN0cmluZztcbiAgICBsZXhfYmFzZV9jb2RlIDogc3RyaW5nO1xuICAgIGxleF9iYWNrdHJrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2RlZmF1bHRfY29kZSA6IHN0cmluZztcbiAgICBsZXhfdHJhbnNfY29kZSA6IHN0cmluZztcbiAgICBsZXhfY2hlY2tfY29kZSA6IHN0cmluZztcbiAgICBsZXhfY29kZTogc3RyaW5nO31cblxuZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuZXh0ZXJuYWwgY19uZXdfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX25ld19sZXhfZW5naW5lXCJcblxubGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxuXG5sZXQgbmV3X2VuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgbGV0IHJlc3VsdCA9IGNfbmV3X2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cbmxldCBsZXhfcmVmaWxsIHJlYWRfZnVuIGF1eF9idWZmZXIgbGV4YnVmID1cbiAgbGV0IHJlYWQgPVxuICAgIHJlYWRfZnVuIGF1eF9idWZmZXIgKEJ5dGVzLmxlbmd0aCBhdXhfYnVmZmVyKSBpblxuICBsZXQgbiA9XG4gICAgaWYgcmVhZCA+IDBcbiAgICB0aGVuIHJlYWRcbiAgICBlbHNlIChsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWU7IDApIGluXG4gICgqIEN1cnJlbnQgc3RhdGUgb2YgdGhlIGJ1ZmZlcjpcbiAgICAgICAgPC0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tPlxuICAgICAgICB8ICBqdW5rIHwgICAgICB2YWxpZCBkYXRhICAgICB8ICAganVuayAgICB8XG4gICAgICAgIF4gICAgICAgXiAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgIF5cbiAgICAgICAgMCAgICBzdGFydF9wb3MgICAgICAgICAgICAgYnVmZmVyX2VuZCAgICBCeXRlcy5sZW5ndGggYnVmZmVyXG4gICopXG4gIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG4gPiBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXIgdGhlbiBiZWdpblxuICAgICgqIFRoZXJlIGlzIG5vdCBlbm91Z2ggc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyICopXG4gICAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyBuXG4gICAgICAgPD0gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyXG4gICAgdGhlbiBiZWdpblxuICAgICAgKCogQnV0IHRoZXJlIGlzIGVub3VnaCBzcGFjZSBpZiB3ZSByZWNsYWltIHRoZSBqdW5rIGF0IHRoZSBiZWdpbm5pbmdcbiAgICAgICAgIG9mIHRoZSBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDBcbiAgICAgICAgICAgICAgICAgIChsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcylcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgKCogV2UgbXVzdCBncm93IHRoZSBidWZmZXIuICBEb3VibGluZyBpdHMgc2l6ZSB3aWxsIHByb3ZpZGUgZW5vdWdoXG4gICAgICAgICBzcGFjZSBzaW5jZSBuIDw9IFN0cmluZy5sZW5ndGggYXV4X2J1ZmZlciA8PSBTdHJpbmcubGVuZ3RoIGJ1ZmZlci5cbiAgICAgICAgIFdhdGNoIG91dCBmb3Igc3RyaW5nIGxlbmd0aCBvdmVyZmxvdywgdGhvdWdoLiAqKVxuICAgICAgbGV0IG5ld2xlbiA9XG4gICAgICAgIEludC5taW4gKDIgKiBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXIpIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBpblxuICAgICAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyBuID4gbmV3bGVuXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiTGV4aW5nLmxleF9yZWZpbGw6IGNhbm5vdCBncm93IGJ1ZmZlclwiO1xuICAgICAgbGV0IG5ld2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdsZW4gaW5cbiAgICAgICgqIENvcHkgdGhlIHZhbGlkIGRhdGEgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV3IGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbmV3YnVmIDBcbiAgICAgICAgICAgICAgICAgIChsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3Bvcyk7XG4gICAgICBsZXhidWYubGV4X2J1ZmZlciA8LSBuZXdidWZcbiAgICBlbmQ7XG4gICAgKCogUmVhbGxvY2F0aW9uIG9yIG5vdCwgd2UgaGF2ZSBzaGlmdGVkIHRoZSBkYXRhIGxlZnQgYnlcbiAgICAgICBzdGFydF9wb3MgY2hhcmFjdGVyczsgdXBkYXRlIHRoZSBwb3NpdGlvbnMgKilcbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIHM7XG4gICAgbGV4YnVmLmxleF9jdXJyX3BvcyA8LSBsZXhidWYubGV4X2N1cnJfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSAwO1xuICAgIGxleGJ1Zi5sZXhfbGFzdF9wb3MgPC0gbGV4YnVmLmxleF9sYXN0X3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIHMgO1xuICAgIGxldCB0ID0gbGV4YnVmLmxleF9tZW0gaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQtMSBkb1xuICAgICAgbGV0IHYgPSB0LihpKSBpblxuICAgICAgaWYgdiA+PSAwIHRoZW5cbiAgICAgICAgdC4oaSkgPC0gdi1zXG4gICAgZG9uZVxuICBlbmQ7XG4gICgqIFRoZXJlIGlzIG5vdyBlbm91Z2ggc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyICopXG4gIEJ5dGVzLmJsaXQgYXV4X2J1ZmZlciAwIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiBuO1xuICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuICsgblxuXG5sZXQgemVyb19wb3MgPSB7XG4gIHBvc19mbmFtZSA9IFwiXCI7XG4gIHBvc19sbnVtID0gMTtcbiAgcG9zX2JvbCA9IDA7XG4gIHBvc19jbnVtID0gMDtcbn1cblxubGV0IGZyb21fZnVuY3Rpb24gPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIGYgPVxuICB7IHJlZmlsbF9idWZmID0gbGV4X3JlZmlsbCBmIChCeXRlcy5jcmVhdGUgNTEyKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMuY3JlYXRlIDEwMjQ7XG4gICAgbGV4X2J1ZmZlcl9sZW4gPSAwO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSBmYWxzZTtcbiAgICBsZXhfc3RhcnRfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gICAgbGV4X2N1cnJfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gIH1cblxubGV0IGZyb21fY2hhbm5lbCA/d2l0aF9wb3NpdGlvbnMgaWMgPVxuICBmcm9tX2Z1bmN0aW9uID93aXRoX3Bvc2l0aW9ucyAoZnVuIGJ1ZiBuIC0+IGlucHV0IGljIGJ1ZiAwIG4pXG5cbmxldCBmcm9tX3N0cmluZyA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgcyA9XG4gIHsgcmVmaWxsX2J1ZmYgPSAoZnVuIGxleGJ1ZiAtPiBsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWUpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5vZl9zdHJpbmcgczsgKCogaGF2ZSB0byBtYWtlIGEgY29weSBmb3IgY29tcGF0aWJpbGl0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB1bnNhZmUtc3RyaW5nIG1vZGUgKilcbiAgICBsZXhfYnVmZmVyX2xlbiA9IFN0cmluZy5sZW5ndGggcztcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gdHJ1ZTtcbiAgICBsZXhfc3RhcnRfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gICAgbGV4X2N1cnJfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gIH1cblxubGV0IHNldF9wb3NpdGlvbiBsZXhidWYgcG9zaXRpb24gPVxuICBsZXhidWYubGV4X2N1cnJfcCAgPC0ge3Bvc2l0aW9uIHdpdGggcG9zX2ZuYW1lID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2ZuYW1lfTtcbiAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIHBvc2l0aW9uLnBvc19jbnVtXG5cbmxldCBzZXRfZmlsZW5hbWUgbGV4YnVmIGZuYW1lID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC0ge2xleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gZm5hbWV9XG5cbmxldCB3aXRoX3Bvc2l0aW9ucyBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3NcblxubGV0IGxleGVtZSBsZXhidWYgPVxuICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbmxldCBzdWJfbGV4ZW1lIGxleGJ1ZiBpMSBpMiA9XG4gIGxldCBsZW4gPSBpMi1pMSBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlblxuXG5sZXQgc3ViX2xleGVtZV9vcHQgbGV4YnVmIGkxIGkyID1cbiAgaWYgaTEgPj0gMCB0aGVuIGJlZ2luXG4gICAgbGV0IGxlbiA9IGkyLWkxIGluXG4gICAgU29tZSAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW4pXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgTm9uZVxuICBlbmRcblxubGV0IHN1Yl9sZXhlbWVfY2hhciBsZXhidWYgaSA9IEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXJfb3B0IGxleGJ1ZiBpID1cbiAgaWYgaSA+PSAwIHRoZW5cbiAgICBTb21lIChCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaSlcbiAgZWxzZVxuICAgIE5vbmVcblxuXG5sZXQgbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPVxuICBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgKGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgaSlcblxubGV0IGxleGVtZV9zdGFydCBsZXhidWYgPSBsZXhidWYubGV4X3N0YXJ0X3AucG9zX2NudW1cbmxldCBsZXhlbWVfZW5kIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19jbnVtXG5cbmxldCBsZXhlbWVfc3RhcnRfcCBsZXhidWYgPSBsZXhidWYubGV4X3N0YXJ0X3BcbmxldCBsZXhlbWVfZW5kX3AgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3BcblxubGV0IG5ld19saW5lIGxleGJ1ZiA9XG4gIGxldCBsY3AgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICBpZiBsY3AgIT0gZHVtbXlfcG9zIHRoZW5cbiAgICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgICAgeyBsY3Agd2l0aFxuICAgICAgICBwb3NfbG51bSA9IGxjcC5wb3NfbG51bSArIDE7XG4gICAgICAgIHBvc19ib2wgPSBsY3AucG9zX2NudW07XG4gICAgICB9XG5cblxuXG4oKiBEaXNjYXJkIGRhdGEgbGVmdCBpbiBsZXhlciBidWZmZXIuICopXG5cbmxldCBmbHVzaF9pbnB1dCBsYiA9XG4gIGxiLmxleF9jdXJyX3BvcyA8LSAwO1xuICBsYi5sZXhfYWJzX3BvcyA8LSAwO1xuICBsZXQgbGNwID0gbGIubGV4X2N1cnJfcCBpblxuICBpZiBsY3AgIT0gZHVtbXlfcG9zIHRoZW5cbiAgICBsYi5sZXhfY3Vycl9wIDwtIHt6ZXJvX3BvcyB3aXRoIHBvc19mbmFtZSA9IGxjcC5wb3NfZm5hbWV9O1xuICBsYi5sZXhfYnVmZmVyX2xlbiA8LSAwO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcGFyc2luZyBlbmdpbmUgKilcblxub3BlbiBMZXhpbmdcblxuKCogSW50ZXJuYWwgaW50ZXJmYWNlIHRvIHRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG50eXBlIHBhcnNlcl9lbnYgPVxuICB7IG11dGFibGUgc19zdGFjayA6IGludCBhcnJheTsgICAgICAgICgqIFN0YXRlcyAqKVxuICAgIG11dGFibGUgdl9zdGFjayA6IE9iai50IGFycmF5OyAgICAgICgqIFNlbWFudGljIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgKCogU3RhcnQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzeW1iX2VuZF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAgICgqIEVuZCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN0YWNrc2l6ZSA6IGludDsgICAgICAgICAgICAoKiBTaXplIG9mIHRoZSBzdGFja3MgKilcbiAgICBtdXRhYmxlIHN0YWNrYmFzZSA6IGludDsgICAgICAgICAgICAoKiBCYXNlIHNwIGZvciBjdXJyZW50IHBhcnNlICopXG4gICAgbXV0YWJsZSBjdXJyX2NoYXIgOiBpbnQ7ICAgICAgICAgICAgKCogTGFzdCB0b2tlbiByZWFkICopXG4gICAgbXV0YWJsZSBsdmFsIDogT2JqLnQ7ICAgICAgICAgICAgICAgKCogSXRzIHNlbWFudGljIGF0dHJpYnV0ZSAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydCA6IHBvc2l0aW9uOyAgICAgICgqIFN0YXJ0IHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kIDogcG9zaXRpb247ICAgICAgICAoKiBFbmQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wgKilcbiAgICBtdXRhYmxlIGFzcCA6IGludDsgICAgICAgICAgICAgICAgICAoKiBUaGUgc3RhY2sgcG9pbnRlciBmb3IgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgcnVsZV9sZW4gOiBpbnQ7ICAgICAgICAgICAgICgqIE51bWJlciBvZiByaHMgaXRlbXMgaW4gdGhlIHJ1bGUgKilcbiAgICBtdXRhYmxlIHJ1bGVfbnVtYmVyIDogaW50OyAgICAgICAgICAoKiBSdWxlIG51bWJlciB0byByZWR1Y2UgYnkgKilcbiAgICBtdXRhYmxlIHNwIDogaW50OyAgICAgICAgICAgICAgICAgICAoKiBTYXZlZCBzcCBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6IGludDsgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3RhdGUgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgZXJyZmxhZyA6IGludCB9ICAgICAgICAgICAgICgqIFNhdmVkIGVycm9yIGZsYWcgZm9yIHBhcnNlX2VuZ2luZSAqKVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxudHlwZSBwYXJzZV90YWJsZXMgPVxuICB7IGFjdGlvbnMgOiAocGFyc2VyX2VudiAtPiBPYmoudCkgYXJyYXk7XG4gICAgdHJhbnNsX2NvbnN0IDogaW50IGFycmF5O1xuICAgIHRyYW5zbF9ibG9jayA6IGludCBhcnJheTtcbiAgICBsaHMgOiBzdHJpbmc7XG4gICAgbGVuIDogc3RyaW5nO1xuICAgIGRlZnJlZCA6IHN0cmluZztcbiAgICBkZ290byA6IHN0cmluZztcbiAgICBzaW5kZXggOiBzdHJpbmc7XG4gICAgcmluZGV4IDogc3RyaW5nO1xuICAgIGdpbmRleCA6IHN0cmluZztcbiAgICB0YWJsZXNpemUgOiBpbnQ7XG4gICAgdGFibGUgOiBzdHJpbmc7XG4gICAgY2hlY2sgOiBzdHJpbmc7XG4gICAgZXJyb3JfZnVuY3Rpb24gOiBzdHJpbmcgLT4gdW5pdDtcbiAgICBuYW1lc19jb25zdCA6IHN0cmluZztcbiAgICBuYW1lc19ibG9jayA6IHN0cmluZyB9XG5cbmV4Y2VwdGlvbiBZWWV4aXQgb2YgT2JqLnRcbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuXG50eXBlIHBhcnNlcl9pbnB1dCA9XG4gICAgU3RhcnRcbiAgfCBUb2tlbl9yZWFkXG4gIHwgU3RhY2tzX2dyb3duXzFcbiAgfCBTdGFja3NfZ3Jvd25fMlxuICB8IFNlbWFudGljX2FjdGlvbl9jb21wdXRlZFxuICB8IEVycm9yX2RldGVjdGVkXG5cbnR5cGUgcGFyc2VyX291dHB1dCA9XG4gICAgUmVhZF90b2tlblxuICB8IFJhaXNlX3BhcnNlX2Vycm9yXG4gIHwgR3Jvd19zdGFja3NfMVxuICB8IEdyb3dfc3RhY2tzXzJcbiAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvblxuICB8IENhbGxfZXJyb3JfZnVuY3Rpb25cblxuKCogdG8gYXZvaWQgd2FybmluZ3MgKilcbmxldCBfID0gW1JlYWRfdG9rZW47IFJhaXNlX3BhcnNlX2Vycm9yOyBHcm93X3N0YWNrc18xOyBHcm93X3N0YWNrc18yO1xuICAgICAgICAgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb247IENhbGxfZXJyb3JfZnVuY3Rpb25dXG5cbmV4dGVybmFsIHBhcnNlX2VuZ2luZSA6XG4gICAgcGFyc2VfdGFibGVzIC0+IHBhcnNlcl9lbnYgLT4gcGFyc2VyX2lucHV0IC0+IE9iai50IC0+IHBhcnNlcl9vdXRwdXRcbiAgICA9IFwiY2FtbF9wYXJzZV9lbmdpbmVcIlxuXG5leHRlcm5hbCBzZXRfdHJhY2U6IGJvb2wgLT4gYm9vbFxuICAgID0gXCJjYW1sX3NldF9wYXJzZXJfdHJhY2VcIlxuXG5sZXQgZW52ID1cbiAgeyBzX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgMDtcbiAgICB2X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgKE9iai5yZXByICgpKTtcbiAgICBzeW1iX3N0YXJ0X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN0YWNrc2l6ZSA9IDEwMDtcbiAgICBzdGFja2Jhc2UgPSAwO1xuICAgIGN1cnJfY2hhciA9IDA7XG4gICAgbHZhbCA9IE9iai5yZXByICgpO1xuICAgIHN5bWJfc3RhcnQgPSBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmQgPSBkdW1teV9wb3M7XG4gICAgYXNwID0gMDtcbiAgICBydWxlX2xlbiA9IDA7XG4gICAgcnVsZV9udW1iZXIgPSAwO1xuICAgIHNwID0gMDtcbiAgICBzdGF0ZSA9IDA7XG4gICAgZXJyZmxhZyA9IDAgfVxuXG5sZXQgZ3Jvd19zdGFja3MoKSA9XG4gIGxldCBvbGRzaXplID0gZW52LnN0YWNrc2l6ZSBpblxuICBsZXQgbmV3c2l6ZSA9IG9sZHNpemUgKiAyIGluXG4gIGxldCBuZXdfcyA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAwXG4gIGFuZCBuZXdfdiA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAoT2JqLnJlcHIgKCkpXG4gIGFuZCBuZXdfc3RhcnQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zXG4gIGFuZCBuZXdfZW5kID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3BvcyBpblxuICAgIEFycmF5LmJsaXQgZW52LnNfc3RhY2sgMCBuZXdfcyAwIG9sZHNpemU7XG4gICAgZW52LnNfc3RhY2sgPC0gbmV3X3M7XG4gICAgQXJyYXkuYmxpdCBlbnYudl9zdGFjayAwIG5ld192IDAgb2xkc2l6ZTtcbiAgICBlbnYudl9zdGFjayA8LSBuZXdfdjtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX3N0YXJ0X3N0YWNrIDAgbmV3X3N0YXJ0IDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9zdGFydF9zdGFjayA8LSBuZXdfc3RhcnQ7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9lbmRfc3RhY2sgMCBuZXdfZW5kIDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9lbmRfc3RhY2sgPC0gbmV3X2VuZDtcbiAgICBlbnYuc3RhY2tzaXplIDwtIG5ld3NpemVcblxubGV0IGNsZWFyX3BhcnNlcigpID1cbiAgQXJyYXkuZmlsbCBlbnYudl9zdGFjayAwIGVudi5zdGFja3NpemUgKE9iai5yZXByICgpKTtcbiAgZW52Lmx2YWwgPC0gT2JqLnJlcHIgKClcblxubGV0IGN1cnJlbnRfbG9va2FoZWFkX2Z1biA9IHJlZiAoZnVuIChfIDogT2JqLnQpIC0+IGZhbHNlKVxuXG5sZXQgeXlwYXJzZSB0YWJsZXMgc3RhcnQgbGV4ZXIgbGV4YnVmID1cbiAgbGV0IHJlYyBsb29wIGNtZCBhcmcgPVxuICAgIG1hdGNoIHBhcnNlX2VuZ2luZSB0YWJsZXMgZW52IGNtZCBhcmcgd2l0aFxuICAgICAgUmVhZF90b2tlbiAtPlxuICAgICAgICBsZXQgdCA9IE9iai5yZXByKGxleGVyIGxleGJ1ZikgaW5cbiAgICAgICAgZW52LnN5bWJfc3RhcnQgPC0gbGV4YnVmLmxleF9zdGFydF9wO1xuICAgICAgICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGxvb3AgVG9rZW5fcmVhZCB0XG4gICAgfCBSYWlzZV9wYXJzZV9lcnJvciAtPlxuICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb24gLT5cbiAgICAgICAgbGV0IChhY3Rpb24sIHZhbHVlKSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICAoU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkLCB0YWJsZXMuYWN0aW9ucy4oZW52LnJ1bGVfbnVtYmVyKSBlbnYpXG4gICAgICAgICAgd2l0aCBQYXJzZV9lcnJvciAtPlxuICAgICAgICAgICAgKEVycm9yX2RldGVjdGVkLCBPYmoucmVwciAoKSkgaW5cbiAgICAgICAgbG9vcCBhY3Rpb24gdmFsdWVcbiAgICB8IEdyb3dfc3RhY2tzXzEgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMSAoT2JqLnJlcHIgKCkpXG4gICAgfCBHcm93X3N0YWNrc18yIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzIgKE9iai5yZXByICgpKVxuICAgIHwgQ2FsbF9lcnJvcl9mdW5jdGlvbiAtPlxuICAgICAgICB0YWJsZXMuZXJyb3JfZnVuY3Rpb24gXCJzeW50YXggZXJyb3JcIjtcbiAgICAgICAgbG9vcCBFcnJvcl9kZXRlY3RlZCAoT2JqLnJlcHIgKCkpIGluXG4gIGxldCBpbml0X2FzcCA9IGVudi5hc3BcbiAgYW5kIGluaXRfc3AgPSBlbnYuc3BcbiAgYW5kIGluaXRfc3RhY2tiYXNlID0gZW52LnN0YWNrYmFzZVxuICBhbmQgaW5pdF9zdGF0ZSA9IGVudi5zdGF0ZVxuICBhbmQgaW5pdF9jdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyXG4gIGFuZCBpbml0X2x2YWwgPSBlbnYubHZhbFxuICBhbmQgaW5pdF9lcnJmbGFnID0gZW52LmVycmZsYWcgaW5cbiAgZW52LnN0YWNrYmFzZSA8LSBlbnYuc3AgKyAxO1xuICBlbnYuY3Vycl9jaGFyIDwtIHN0YXJ0O1xuICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gIHRyeVxuICAgIGxvb3AgU3RhcnQgKE9iai5yZXByICgpKVxuICB3aXRoIGV4biAtPlxuICAgIGxldCBjdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyIGluXG4gICAgZW52LmFzcCA8LSBpbml0X2FzcDtcbiAgICBlbnYuc3AgPC0gaW5pdF9zcDtcbiAgICBlbnYuc3RhY2tiYXNlIDwtIGluaXRfc3RhY2tiYXNlO1xuICAgIGVudi5zdGF0ZSA8LSBpbml0X3N0YXRlO1xuICAgIGVudi5jdXJyX2NoYXIgPC0gaW5pdF9jdXJyX2NoYXI7XG4gICAgZW52Lmx2YWwgPC0gaW5pdF9sdmFsO1xuICAgIGVudi5lcnJmbGFnIDwtIGluaXRfZXJyZmxhZztcbiAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgWVlleGl0IHYgLT5cbiAgICAgICAgT2JqLm1hZ2ljIHZcbiAgICB8IF8gLT5cbiAgICAgICAgY3VycmVudF9sb29rYWhlYWRfZnVuIDo9XG4gICAgICAgICAgKGZ1biB0b2sgLT5cbiAgICAgICAgICAgIGlmIE9iai5pc19ibG9jayB0b2tcbiAgICAgICAgICAgIHRoZW4gdGFibGVzLnRyYW5zbF9ibG9jay4oT2JqLnRhZyB0b2spID0gY3Vycl9jaGFyXG4gICAgICAgICAgICBlbHNlIHRhYmxlcy50cmFuc2xfY29uc3QuKE9iai5tYWdpYyB0b2spID0gY3Vycl9jaGFyKTtcbiAgICAgICAgcmFpc2UgZXhuXG5cbmxldCBwZWVrX3ZhbCBlbnYgbiA9XG4gIE9iai5tYWdpYyBlbnYudl9zdGFjay4oZW52LmFzcCAtIG4pXG5cbmxldCBzeW1ib2xfc3RhcnRfcG9zICgpID1cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPD0gMCB0aGVuIGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgc3QgPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgbGV0IGVuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBpZiBzdCA8PiBlbiB0aGVuIHN0IGVsc2UgbG9vcCAoaSAtIDEpXG4gICAgZW5kXG4gIGluXG4gIGxvb3AgZW52LnJ1bGVfbGVuXG5cbmxldCBzeW1ib2xfZW5kX3BvcyAoKSA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbmxldCByaHNfc3RhcnRfcG9zIG4gPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcbmxldCByaHNfZW5kX3BvcyBuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxuXG5sZXQgc3ltYm9sX3N0YXJ0ICgpID0gKHN5bWJvbF9zdGFydF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgc3ltYm9sX2VuZCAoKSA9IChzeW1ib2xfZW5kX3BvcyAoKSkucG9zX2NudW1cbmxldCByaHNfc3RhcnQgbiA9IChyaHNfc3RhcnRfcG9zIG4pLnBvc19jbnVtXG5sZXQgcmhzX2VuZCBuID0gKHJoc19lbmRfcG9zIG4pLnBvc19jbnVtXG5cbmxldCBpc19jdXJyZW50X2xvb2thaGVhZCB0b2sgPVxuICAoIWN1cnJlbnRfbG9va2FoZWFkX2Z1bikoT2JqLnJlcHIgdG9rKVxuXG5sZXQgcGFyc2VfZXJyb3IgKF8gOiBzdHJpbmcpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU2V0cyBvdmVyIG9yZGVyZWQgdHlwZXMgKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUgZWx0XG4gICAgdHlwZSB0XG4gICAgdmFsIGVtcHR5OiB0XG4gICAgdmFsIGFkZDogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCBzaW5nbGV0b246IGVsdCAtPiB0XG4gICAgdmFsIHJlbW92ZTogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCB1bmlvbjogdCAtPiB0IC0+IHRcbiAgICB2YWwgaW50ZXI6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGRpc2pvaW50OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBkaWZmOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBjYXJkaW5hbDogdCAtPiBpbnRcbiAgICB2YWwgZWxlbWVudHM6IHQgLT4gZWx0IGxpc3RcbiAgICB2YWwgbWluX2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWluX2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBtYXhfZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtYXhfZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGNob29zZTogdCAtPiBlbHRcbiAgICB2YWwgY2hvb3NlX29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmQ6IGVsdCAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX29wdDogZWx0IC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgaXRlcjogKGVsdCAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICAgIHZhbCBtYXA6IChlbHQgLT4gZWx0KSAtPiB0IC0+IHRcbiAgICB2YWwgZmlsdGVyOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoZWx0IC0+IGVsdCBvcHRpb24pIC0+IHQgLT4gdFxuICAgIHZhbCBwYXJ0aXRpb246IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0ICogdFxuICAgIHZhbCBzcGxpdDogZWx0IC0+IHQgLT4gdCAqIGJvb2wgKiB0XG4gICAgdmFsIGlzX2VtcHR5OiB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiBlbHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gICAgdmFsIHN1YnNldDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZm9yX2FsbDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZXhpc3RzOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCB0b19saXN0IDogdCAtPiBlbHQgbGlzdFxuICAgIHZhbCBvZl9saXN0OiBlbHQgbGlzdCAtPiB0XG4gICAgdmFsIHRvX3NlcV9mcm9tIDogZWx0IC0+IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogZWx0IFNlcS50IC0+IHQgLT4gdFxuICAgIHZhbCBvZl9zZXEgOiBlbHQgU2VxLnQgLT4gdFxuICBlbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IE9yZC50XG4gICAgdHlwZSB0ID0gRW1wdHkgfCBOb2RlIG9mIHtsOnQ7IHY6ZWx0OyByOnQ7IGg6aW50fVxuXG4gICAgKCogU2V0cyBhcmUgcmVwcmVzZW50ZWQgYnkgYmFsYW5jZWQgYmluYXJ5IHRyZWVzICh0aGUgaGVpZ2h0cyBvZiB0aGVcbiAgICAgICBjaGlsZHJlbiBkaWZmZXIgYnkgYXQgbW9zdCAyICopXG5cbiAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtofSAtPiBoXG5cbiAgICAoKiBDcmVhdGVzIGEgbmV3IG5vZGUgd2l0aCBsZWZ0IHNvbiBsLCB2YWx1ZSB2IGFuZCByaWdodCBzb24gci5cbiAgICAgICBXZSBtdXN0IGhhdmUgYWxsIGVsZW1lbnRzIG9mIGwgPCB2IDwgYWxsIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgbCBhbmQgciBtdXN0IGJlIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgaGVpZ2h0IGZvciBiZXR0ZXIgc3BlZWQuICopXG5cbiAgICBsZXQgY3JlYXRlIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIFNhbWUgYXMgY3JlYXRlLCBidXQgcGVyZm9ybXMgb25lIHN0ZXAgb2YgcmViYWxhbmNpbmcgaWYgbmVjZXNzYXJ5LlxuICAgICAgIEFzc3VtZXMgbCBhbmQgciBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMy5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGNyZWF0ZSBmb3IgYmV0dGVyIHNwZWVkIGluIHRoZSBtb3N0IGZyZXF1ZW50IGNhc2VcbiAgICAgICB3aGVyZSBubyByZWJhbGFuY2luZyBpcyByZXF1aXJlZC4gKilcblxuICAgIGxldCBiYWwgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGlmIGhsID4gaHIgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9bGw7IHY9bHY7IHI9bHJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIGxsIGx2IChjcmVhdGUgbHIgdiByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgcj1scnJ9LT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxybCkgbHJ2IChjcmVhdGUgbHJyIHYgcilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1ybDsgdj1ydjsgcj1ycn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmwpIHJ2IHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyByPXJscn0gLT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybGwpIHJsdiAoY3JlYXRlIHJsciBydiBycilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBJbnNlcnRpb24gb2Ygb25lIGVsZW1lbnQgKilcblxuICAgIGxldCByZWMgYWRkIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdCBlbHNlXG4gICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gYWRkIHggbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHQgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHQgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgc2luZ2xldG9uIHggPSBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCB2IGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGVsZW1lbnRzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGVsZW1lbnQuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9lbGVtZW50IHggbCkgdiByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiAoYWRkX21heF9lbGVtZW50IHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2VsZW1lbnQgdiByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9lbGVtZW50IHYgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyByPWxyOyBoPWxofSwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiAoam9pbiBsciB2IHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgcmwpIHJ2IHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IHJcblxuICAgICgqIFNtYWxsZXN0IGFuZCBncmVhdGVzdCBlbGVtZW50IG9mIGEgc2V0ICopXG5cbiAgICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdCBsXG5cbiAgICBsZXQgcmVjIG1pbl9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHRfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0IHJcblxuICAgIGxldCByZWMgbWF4X2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdF9vcHQgclxuXG4gICAgKCogUmVtb3ZlIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBnaXZlbiBzZXQgKilcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgdiByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgQXNzdW1lIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuICopXG5cbiAgICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBiYWwgdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogU3BsaXR0aW5nLiAgc3BsaXQgeCBzIHJldHVybnMgYSB0cmlwbGUgKGwsIHByZXNlbnQsIHIpIHdoZXJlXG4gICAgICAgIC0gbCBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPCB4XG4gICAgICAgIC0gciBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPiB4XG4gICAgICAgIC0gcHJlc2VudCBpcyBmYWxzZSBpZiBzIGNvbnRhaW5zIG5vIGVsZW1lbnQgZXF1YWwgdG8geCxcbiAgICAgICAgICBvciB0cnVlIGlmIHMgY29udGFpbnMgYW4gZWxlbWVudCBlcXVhbCB0byB4LiAqKVxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIGZhbHNlLCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgdHJ1ZSwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgbHIsIHByZXMsIHJyKVxuXG4gICAgKCogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNldCBvcGVyYXRpb25zICopXG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBjID0gMCB8fCBtZW0geCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgcmVtb3ZlIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSBhcyB0KSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICAgIGxldCBsbCA9IHJlbW92ZSB4IGwgaW5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW5cbiAgICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgcmVjIHVuaW9uIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0MikgLT4gdDJcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMTsgaD1oMX0sIE5vZGV7bD1sMjsgdj12Mjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgaWYgaDIgPSAxIHRoZW4gYWRkIHYyIHMxIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMiwgXywgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYxICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGgxID0gMSB0aGVuIGFkZCB2MSBzMiBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDEsIF8sIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MiAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgaW50ZXIgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8IChfLCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGludGVyIGwxIGwyKSAoaW50ZXIgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChpbnRlciBsMSBsMikgdjEgKGludGVyIHIxIHIyKVxuXG4gICAgKCogU2FtZSBhcyBzcGxpdCwgYnV0IGNvbXB1dGUgdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzXG4gICAgICAgb25seSBpZiB0aGUgcGl2b3QgZWxlbWVudCBpcyBub3QgaW4gdGhlIHNldC4gIFRoZSByaWdodCBzdWJ0cmVlXG4gICAgICAgaXMgY29tcHV0ZWQgb24gZGVtYW5kLiAqKVxuXG4gICAgdHlwZSBzcGxpdF9iaXMgPVxuICAgICAgfCBGb3VuZFxuICAgICAgfCBOb3RGb3VuZCBvZiB0ICogKHVuaXQgLT4gdClcblxuICAgIGxldCByZWMgc3BsaXRfYmlzIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vdEZvdW5kIChFbXB0eSwgKGZ1biAoKSAtPiBFbXB0eSkpXG4gICAgICB8IE5vZGV7bDsgdjsgcjsgX30gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gRm91bmRcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IGwgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobGwsIHJsKSAtPiBOb3RGb3VuZCAobGwsIChmdW4gKCkgLT4gam9pbiAocmwgKCkpIHYgcikpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggciB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsciwgcnIpIC0+IE5vdEZvdW5kIChqb2luIGwgdiBsciwgcnIpXG5cbiAgICBsZXQgcmVjIGRpc2pvaW50IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSB8IChfLCBFbXB0eSkgLT4gdHJ1ZVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgaWYgczEgPT0gczIgdGhlbiBmYWxzZVxuICAgICAgICAgIGVsc2UgbWF0Y2ggc3BsaXRfYmlzIHYxIHQyIHdpdGhcbiAgICAgICAgICAgICAgTm90Rm91bmQobDIsIHIyKSAtPiBkaXNqb2ludCBsMSBsMiAmJiBkaXNqb2ludCByMSAocjIgKCkpXG4gICAgICAgICAgICB8IEZvdW5kIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGRpZmYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoZGlmZiBsMSBsMikgdjEgKGRpZmYgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGRpZmYgbDEgbDIpIChkaWZmIHIxIHIyKVxuXG4gICAgdHlwZSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2YgZWx0ICogdCAqIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCByLCBlKSlcblxuICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgfCAoTW9yZSh2MSwgcjEsIGUxKSwgTW9yZSh2MiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgZWxzZSBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuXG4gICAgbGV0IGNvbXBhcmUgczEgczIgPVxuICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBzMSBFbmQpIChjb25zX2VudW0gczIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIHMxIHMyID1cbiAgICAgIGNvbXBhcmUgczEgczIgPSAwXG5cbiAgICBsZXQgcmVjIHN1YnNldCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIEVtcHR5LCBfIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBfLCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IE5vZGUge2w9bDE7IHY9djE7IHI9cjF9LCAoTm9kZSB7bD1sMjsgdj12Mjsgcj1yMn0gYXMgdDIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCBsMSBsMiAmJiBzdWJzZXQgcjEgcjJcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1sMTsgdj12MTsgcj1FbXB0eTsgaD0wfSkgbDIgJiYgc3Vic2V0IHIxIHQyXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPUVtcHR5OyB2PXYxOyByPXIxOyBoPTB9KSByMiAmJiBzdWJzZXQgbDEgdDJcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBpdGVyIGYgbDsgZiB2OyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBmb2xkIGYgcyBhY2N1ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZm9sZCBmIHIgKGYgdiAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSkgYXMgdCAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdiB0aGVuXG4gICAgICAgICAgICBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIHQgZWxzZSBqb2luIGwnIHYgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiByZilcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGV7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGVsZW1lbnRzX2F1eCAodiA6OiBlbGVtZW50c19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgZWxlbWVudHMgcyA9XG4gICAgICBlbGVtZW50c19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9lbHRcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2VsdF9vcHRcblxuICAgIGxldCByZWMgZmluZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdlxuICAgICAgICAgIGVsc2UgZmluZCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX29wdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFNvbWUgdlxuICAgICAgICAgIGVsc2UgZmluZF9vcHQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCB0cnlfam9pbiBsIHYgciA9XG4gICAgICAoKiBbam9pbiBsIHYgcl0gY2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gKGVsZW1lbnRzIG9mIGwgPCB2IDxcbiAgICAgICAgIGVsZW1lbnRzIG9mIHIpOyB1c2UgW3RyeV9qb2luIGwgdiByXSB3aGVuIHRoaXMgcHJvcGVydHkgbWF5XG4gICAgICAgICBub3QgaG9sZCwgYnV0IHlvdSBob3BlIGl0IGRvZXMgaG9sZCBpbiB0aGUgY29tbW9uIGNhc2UgKilcbiAgICAgIGlmIChsID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgKG1heF9lbHQgbCkgdiA8IDApXG4gICAgICAmJiAociA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIHYgKG1pbl9lbHQgcikgPCAwKVxuICAgICAgdGhlbiBqb2luIGwgdiByXG4gICAgICBlbHNlIHVuaW9uIGwgKGFkZCB2IHIpXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcblxuICAgIGxldCB0cnlfY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gdHJ5X2pvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgIGJlZ2luIG1hdGNoIHYnIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHYnIC0+XG4gICAgICAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICB0cnlfY29uY2F0IGwnIHInXG4gICAgICAgICBlbmRcblxuICAgIGxldCBvZl9zb3J0ZWRfbGlzdCBsID1cbiAgICAgIGxldCByZWMgc3ViIG4gbCA9XG4gICAgICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgICAgICB8IDAsIGwgLT4gRW1wdHksIGxcbiAgICAgICAgfCAxLCB4MCA6OiBsIC0+IE5vZGUge2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX0sIGxcbiAgICAgICAgfCAyLCB4MCA6OiB4MSA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxOyByPUVtcHR5OyBoPTJ9LCBsXG4gICAgICAgIHwgMywgeDAgOjogeDEgOjogeDIgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTtcbiAgICAgICAgICAgICAgICAgcj1Ob2Rle2w9RW1wdHk7IHY9eDI7IHI9RW1wdHk7IGg9MX07IGg9Mn0sIGxcbiAgICAgICAgfCBuLCBsIC0+XG4gICAgICAgICAgbGV0IG5sID0gbiAvIDIgaW5cbiAgICAgICAgICBsZXQgbGVmdCwgbCA9IHN1YiBubCBsIGluXG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IG1pZCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgcmlnaHQsIGwgPSBzdWIgKG4gLSBubCAtIDEpIGwgaW5cbiAgICAgICAgICAgIGNyZWF0ZSBsZWZ0IG1pZCByaWdodCwgbFxuICAgICAgaW5cbiAgICAgIGZzdCAoc3ViIChMaXN0Lmxlbmd0aCBsKSBsKVxuXG4gICAgbGV0IHRvX2xpc3QgPSBlbGVtZW50c1xuXG4gICAgbGV0IG9mX2xpc3QgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZW1wdHlcbiAgICAgIHwgW3gwXSAtPiBzaW5nbGV0b24geDBcbiAgICAgIHwgW3gwOyB4MV0gLT4gYWRkIHgxIChzaW5nbGV0b24geDApXG4gICAgICB8IFt4MDsgeDE7IHgyXSAtPiBhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzXSAtPiBhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzOyB4NF0gLT4gYWRkIHg0IChhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSkpXG4gICAgICB8IF8gLT4gb2Zfc29ydGVkX2xpc3QgKExpc3Quc29ydF91bmlxIE9yZC5jb21wYXJlIGwpXG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIHMgeCAtPiBhZGQgeCBzKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgYyA9IHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID0gcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBzID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBzIGMgPSBtYXRjaCBzIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgcjsgdjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBzIEVuZClcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISsnYSB0XG4gICAgdmFsIGVtcHR5OiAnYSB0XG4gICAgdmFsIGFkZDoga2V5IC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGRfdG9fbGlzdDoga2V5IC0+ICdhIC0+ICdhIGxpc3QgdCAtPiAnYSBsaXN0IHRcbiAgICB2YWwgdXBkYXRlOiBrZXkgLT4gKCdhIG9wdGlvbiAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBzaW5nbGV0b246IGtleSAtPiAnYSAtPiAnYSB0XG4gICAgdmFsIHJlbW92ZToga2V5IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBtZXJnZTpcbiAgICAgIChrZXkgLT4gJ2Egb3B0aW9uIC0+ICdiIG9wdGlvbiAtPiAnYyBvcHRpb24pIC0+XG4gICAgICAnYSB0IC0+ICdiIHQgLT4gJ2MgdFxuICAgIHZhbCB1bmlvbjogKGtleSAtPiAnYSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGNhcmRpbmFsOiAnYSB0IC0+IGludFxuICAgIHZhbCBiaW5kaW5nczogJ2EgdCAtPiAoa2V5ICogJ2EpIGxpc3RcbiAgICB2YWwgbWluX2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtaW5fYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgbWF4X2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtYXhfYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgY2hvb3NlX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBmaW5kOiBrZXkgLT4gJ2EgdCAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDoga2V5IC0+ICdhIHQgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2ZpcnN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfbGFzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIG1hcDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgbWFwaTogKGtleSAtPiAnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIGZpbHRlcjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGtleSAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBwYXJ0aXRpb246IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0ICogJ2EgdFxuICAgIHZhbCBzcGxpdDoga2V5IC0+ICdhIHQgLT4gJ2EgdCAqICdhIG9wdGlvbiAqICdhIHRcbiAgICB2YWwgaXNfZW1wdHk6ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBtZW06IGtleSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZXF1YWw6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBjb21wYXJlOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIGZvcl9hbGw6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGV4aXN0czogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gICAgdmFsIG9mX2xpc3QgOiAoa2V5ICogJ2EpIGxpc3QgLT4gJ2EgdFxuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fcmV2X3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfZnJvbSA6IGtleSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgPSBzdHJ1Y3RcblxuICAgIHR5cGUga2V5ID0gT3JkLnRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUgb2Yge2w6J2EgdDsgdjprZXk7IGQ6J2E7IHI6J2EgdDsgaDppbnR9XG5cbiAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtofSAtPiBoXG5cbiAgICBsZXQgY3JlYXRlIGwgeCBkIHIgPVxuICAgICAgbGV0IGhsID0gaGVpZ2h0IGwgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgc2luZ2xldG9uIHggZCA9IE5vZGV7bD1FbXB0eTsgdj14OyBkOyByPUVtcHR5OyBoPTF9XG5cbiAgICBsZXQgYmFsIGwgeCBkIHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGlmIGhsID4gaHIgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIGxsIGx2IGxkIChjcmVhdGUgbHIgeCBkIHIpXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1scmw7IHY9bHJ2OyBkPWxyZDsgcj1scnJ9LT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxkIGxybCkgbHJ2IGxyZCAoY3JlYXRlIGxyciB4IGQgcilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybCkgcnYgcmQgcnJcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPXJsbDsgdj1ybHY7IGQ9cmxkOyByPXJscn0gLT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsbCkgcmx2IHJsZCAoY3JlYXRlIHJsciBydiByZCBycilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBFbXB0eSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBhZGQgeCBkYXRhID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gYWRkIHggZGF0YSBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IGFkZCB4IGRhdGEgciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgZmluZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gZFxuICAgICAgICAgIGVsc2UgZmluZCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX29wdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFNvbWUgZFxuICAgICAgICAgIGVsc2UgZmluZF9vcHQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBjID0gMCB8fCBtZW0geCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge2x9IC0+IG1pbl9iaW5kaW5nIGxcblxuICAgIGxldCByZWMgbWluX2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfS0+IG1pbl9iaW5kaW5nX29wdCBsXG5cbiAgICBsZXQgcmVjIG1heF9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZyByXG5cbiAgICBsZXQgcmVjIG1heF9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmdfb3B0IHJcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAucmVtb3ZlX21pbl9lbHRcIlxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyByfSAtPiByXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJhbCAocmVtb3ZlX21pbl9iaW5kaW5nIGwpIHYgZCByXG5cbiAgICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGJhbCB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCByZWMgcmVtb3ZlIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IChOb2RlIHtsOyB2OyBkOyByfSBhcyBtKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHJlbW92ZSB4IGwgaW4gaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSByZW1vdmUgeCByIGluIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIHVwZGF0ZSB4IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIGYgTm9uZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVtcHR5XG4gICAgICAgICAgfCBTb21lIGRhdGEgLT4gTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgICAgIGVuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGJlZ2luXG4gICAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBtZXJnZSBsIHJcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZW5kIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gdXBkYXRlIHggZiBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHVwZGF0ZSB4IGYgciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCBhZGRfdG9fbGlzdCB4IGRhdGEgbSA9XG4gICAgICBsZXQgYWRkID0gZnVuY3Rpb24gTm9uZSAtPiBTb21lIFtkYXRhXSB8IFNvbWUgbCAtPiBTb21lIChkYXRhIDo6IGwpIGluXG4gICAgICB1cGRhdGUgeCBhZGQgbVxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGl0ZXIgZiBsOyBmIHYgZDsgaXRlciBmIHJcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXBpIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwaSBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBtIGFjY3UgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBmb2xkIGYgciAoZiB2IGQgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIGsgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQga2V5cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBrZXkuXG5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9iaW5kaW5nIGsgeCBsKSB2IGQgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgbCB2IGQgKGFkZF9tYXhfYmluZGluZyBrIHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IGQgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fYmluZGluZyB2IGQgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfYmluZGluZyB2IGQgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyOyBoPWxofSxcbiAgICAgICAgIE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgbGQgKGpvaW4gbHIgdiBkIHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgZCBybCkgcnYgcmQgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgZCByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgam9pbiB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCBjb25jYXRfb3Jfam9pbiB0MSB2IGQgdDIgPVxuICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICB8IFNvbWUgZCAtPiBqb2luIHQxIHYgZCB0MlxuICAgICAgfCBOb25lIC0+IGNvbmNhdCB0MSB0MlxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIE5vbmUsIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgU29tZSBkLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IGQgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGQgbHIsIHByZXMsIHJyKVxuXG4gICAgbGV0IHJlYyBtZXJnZSBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LCBfKSB3aGVuIGgxID49IGhlaWdodCBzMiAtPlxuICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MSAoZiB2MSAoU29tZSBkMSkgZDIpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCAoXywgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMn0pIC0+XG4gICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYyIChmIHYyIGQxIChTb21lIGQyKSkgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBhc3NlcnQgZmFsc2VcblxuICAgIGxldCByZWMgdW5pb24gZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICB8IChFbXB0eSwgcykgfCAocywgRW1wdHkpIC0+IHNcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LFxuICAgICAgICAgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYxIGQxIHJcbiAgICAgICAgICAgIHwgU29tZSBkMiAtPiBjb25jYXRfb3Jfam9pbiBsIHYxIChmIHYxIGQxIGQyKSByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYyIGQyIHJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBjb25jYXRfb3Jfam9pbiBsIHYyIChmIHYyIGQxIGQyKSByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdmQgdGhlbiBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIG0gZWxzZSBqb2luIGwnIHYgZCByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbZl0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBmdmQgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZnZkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBkJyAtPiBqb2luIGwnIHYgZCcgcidcbiAgICAgICAgICAgIHwgTm9uZSAtPiBjb25jYXQgbCcgcidcbiAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdmRcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgZCBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IGQgcmYpXG5cbiAgICB0eXBlICdhIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBrZXkgKiAnYSAqICdhIHQgKiAnYSBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gbSBlID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIGQsIHIsIGUpKVxuXG4gICAgbGV0IGNvbXBhcmUgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGNvbXBhcmVfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCBlcXVhbCBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBlcXVhbF9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IHRydWVcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gZmFsc2VcbiAgICAgICAgfCAoXywgRW5kKSAtPiBmYWxzZVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBPcmQuY29tcGFyZSB2MSB2MiA9IDAgJiYgY21wIGQxIGQyICYmXG4gICAgICAgICAgICBlcXVhbF9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGVxdWFsX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgYmluZGluZ3NfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJpbmRpbmdzX2F1eCAoKHYsIGQpIDo6IGJpbmRpbmdzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBiaW5kaW5ncyBzID1cbiAgICAgIGJpbmRpbmdzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2JpbmRpbmdcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2JpbmRpbmdfb3B0XG5cbiAgICBsZXQgdG9fbGlzdCA9IGJpbmRpbmdzXG4gICAgbGV0IG9mX2xpc3QgYnMgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIG0gKGssIHYpIC0+IGFkZCBrIHYgbSkgZW1wdHkgYnNcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoayx2KSAtPiBhZGQgayB2IG0pIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+IFNlcS5Db25zICgoayx2KSwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgbSA9XG4gICAgICBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBtIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IGQ7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGQsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT5cbiAgICAgICAgICBTZXEuQ29ucyAoKGssdiksIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9XG4gICAgICByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IG0gPVxuICAgICAgbGV0IHJlYyBhdXggbG93IG0gYyA9IG1hdGNoIG0gd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgZCwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIGQsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IG0gRW5kKVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBjIDogJ2EgbGlzdDsgbXV0YWJsZSBsZW4gOiBpbnQ7IH1cblxuZXhjZXB0aW9uIEVtcHR5XG5cbmxldCBjcmVhdGUgKCkgPSB7IGMgPSBbXTsgbGVuID0gMDsgfVxuXG5sZXQgY2xlYXIgcyA9IHMuYyA8LSBbXTsgcy5sZW4gPC0gMFxuXG5sZXQgY29weSBzID0geyBjID0gcy5jOyBsZW4gPSBzLmxlbjsgfVxuXG5sZXQgcHVzaCB4IHMgPSBzLmMgPC0geCA6OiBzLmM7IHMubGVuIDwtIHMubGVuICsgMVxuXG5sZXQgcG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgaGRcbiAgfCBbXSAgICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHBvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBTb21lIGhkXG4gIHwgW10gICAgIC0+IE5vbmVcblxubGV0IGRyb3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgX2hkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMVxuICB8IFtdIC0+IHJhaXNlIEVtcHR5XG5cbmxldCB0b3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gaGRcbiAgfCBbXSAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgdG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBTb21lIGhkXG4gIHwgW10gICAgLT4gTm9uZVxuXG5sZXQgaXNfZW1wdHkgcyA9IChzLmMgPSBbXSlcblxubGV0IGxlbmd0aCBzID0gcy5sZW5cblxubGV0IGl0ZXIgZiBzID0gTGlzdC5pdGVyIGYgcy5jXG5cbmxldCBmb2xkIGYgYWNjIHMgPSBMaXN0LmZvbGRfbGVmdCBmIGFjYyBzLmNcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gTGlzdC50b19zZXEgcy5jXG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcyA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcyBnO1xuICBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEZyYW5jb2lzIFBvdHRpZXIsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgIEplcmVtaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG50eXBlICdhIGNlbGwgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgeyBjb250ZW50OiAnYTsgbXV0YWJsZSBuZXh0OiAnYSBjZWxsIH1cblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIGxlbmd0aDogaW50O1xuICBtdXRhYmxlIGZpcnN0OiAnYSBjZWxsO1xuICBtdXRhYmxlIGxhc3Q6ICdhIGNlbGxcbn1cblxubGV0IGNyZWF0ZSAoKSA9IHtcbiAgbGVuZ3RoID0gMDtcbiAgZmlyc3QgPSBOaWw7XG4gIGxhc3QgPSBOaWxcbn1cblxubGV0IGNsZWFyIHEgPVxuICBxLmxlbmd0aCA8LSAwO1xuICBxLmZpcnN0IDwtIE5pbDtcbiAgcS5sYXN0IDwtIE5pbFxuXG5sZXQgYWRkIHggcSA9XG4gIGxldCBjZWxsID0gQ29ucyB7XG4gICAgY29udGVudCA9IHg7XG4gICAgbmV4dCA9IE5pbFxuICB9IGluXG4gIG1hdGNoIHEubGFzdCB3aXRoXG4gIHwgTmlsIC0+XG4gICAgcS5sZW5ndGggPC0gMTtcbiAgICBxLmZpcnN0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcbiAgfCBDb25zIGxhc3QgLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCArIDE7XG4gICAgbGFzdC5uZXh0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcblxubGV0IHB1c2ggPVxuICBhZGRcblxubGV0IHBlZWsgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gY29udGVudFxuXG5sZXQgcGVla19vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBTb21lIGNvbnRlbnRcblxubGV0IHRvcCA9XG4gIHBlZWtcblxubGV0IHRha2UgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBjb250ZW50XG5cbmxldCB0YWtlX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBTb21lIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBTb21lIGNvbnRlbnRcblxubGV0IHBvcCA9XG4gIHRha2VcblxubGV0IGNvcHkgPVxuICBsZXQgcmVjIGNvcHkgcV9yZXMgcHJldiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBxX3Jlcy5sYXN0IDwtIHByZXY7IHFfcmVzXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgcmVzID0gQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSBpblxuICAgICAgYmVnaW4gbWF0Y2ggcHJldiB3aXRoXG4gICAgICB8IE5pbCAtPiBxX3Jlcy5maXJzdCA8LSByZXNcbiAgICAgIHwgQ29ucyBwIC0+IHAubmV4dCA8LSByZXNcbiAgICAgIGVuZDtcbiAgICAgIGNvcHkgcV9yZXMgcmVzIG5leHRcbiAgaW5cbiAgZnVuIHEgLT4gY29weSB7IGxlbmd0aCA9IHEubGVuZ3RoOyBmaXJzdCA9IE5pbDsgbGFzdCA9IE5pbCB9IE5pbCBxLmZpcnN0XG5cbmxldCBpc19lbXB0eSBxID1cbiAgcS5sZW5ndGggPSAwXG5cbmxldCBsZW5ndGggcSA9XG4gIHEubGVuZ3RoXG5cbmxldCBpdGVyID1cbiAgbGV0IHJlYyBpdGVyIGYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGYgY29udGVudDtcbiAgICAgIGl0ZXIgZiBuZXh0XG4gIGluXG4gIGZ1biBmIHEgLT4gaXRlciBmIHEuZmlyc3RcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGZvbGQgZiBhY2N1IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IGFjY3VcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGNvbnRlbnQgaW5cbiAgICAgIGZvbGQgZiBhY2N1IG5leHRcbiAgaW5cbiAgZnVuIGYgYWNjdSBxIC0+IGZvbGQgZiBhY2N1IHEuZmlyc3RcblxubGV0IHRyYW5zZmVyIHExIHEyID1cbiAgaWYgcTEubGVuZ3RoID4gMCB0aGVuXG4gICAgbWF0Y2ggcTIubGFzdCB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMS5sZW5ndGg7XG4gICAgICBxMi5maXJzdCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG4gICAgfCBDb25zIGxhc3QgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMi5sZW5ndGggKyBxMS5sZW5ndGg7XG4gICAgICBsYXN0Lm5leHQgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHEgPVxuICBsZXQgcmVjIGF1eCBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgfCBOaWwgLT4gU2VxLk5pbFxuICAgIHwgQ29ucyB7IGNvbnRlbnQ9eDsgbmV4dDsgfSAtPiBTZXEuQ29ucyAoeCwgYXV4IG5leHQpXG4gIGluXG4gIGF1eCBxLmZpcnN0XG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcSA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcSBnO1xuICBxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICBQaWVycmUgV2VpcyBhbmQgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4dGVuc2libGUgYnVmZmVycyAqKVxuXG4oKiBUaGUgW2lubmVyX2J1ZmZlcl0gdHlwZSBlbnN1cmVzIHRoYXQgdGhlIFtsZW5ndGhdIGFuZCBbYnVmZmVyXSBmaWVsZHMgYXJlXG4gICBhbHdheXMgc3luY2hyb25pemVkLCBbbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGJ1ZmZlcl0sIGV2ZW4gaW4gcHJlc2VuY2VcbiAgIG9mIGRhdGEgcmFjZXMuXG4qKVxudHlwZSBpbm5lcl9idWZmZXIgPSB7XG4gIGJ1ZmZlcjogYnl0ZXM7XG4gIGxlbmd0aDogaW50O1xufVxuXG50eXBlIHQgPVxuIHttdXRhYmxlIGlubmVyIDogaW5uZXJfYnVmZmVyO1xuICBtdXRhYmxlIHBvc2l0aW9uIDogaW50O1xuICBpbml0aWFsX2J1ZmZlciA6IGJ5dGVzfVxuKCogSW52YXJpYW50czogYWxsIHBhcnRzIG9mIHRoZSBjb2RlIHByZXNlcnZlIHRoZSBpbnZhcmlhbnRzIHRoYXQ6XG4gICAtIFtpbm5lci5sZW5ndGggPSBCeXRlcy5sZW5ndGggaW5uZXIuYnVmZmVyXVxuICAgSW4gYWJzZW5jZSBvZiBkYXRhIHJhY2VzLCB3ZSBhbHNvIGhhdmVcbiAgIC0gWzAgPD0gYi5wb3NpdGlvbiA8PSBiLmlubmVyLmxlbmd0aF1cblxuICAgTm90ZSBpbiBwYXJ0aWN1bGFyIHRoYXQgW2IucG9zaXRpb24gPSBiLmlubmVyLmxlbmd0aF0gaXMgbGVnYWwsXG4gICBpdCBtZWFucyB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbCBhbmQgd2lsbCBoYXZlIHRvIGJlIGV4dGVuZGVkXG4gICBiZWZvcmUgYW55IGZ1cnRoZXIgYWRkaXRpb24uICopXG5cbmxldCBjcmVhdGUgbiA9XG4gbGV0IG4gPSBpZiBuIDwgMSB0aGVuIDEgZWxzZSBuIGluXG4gbGV0IG4gPSBpZiBuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGVsc2UgbiBpblxuIGxldCBzID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiB7IGlubmVyID0geyBidWZmZXIgPSBzOyBsZW5ndGggPSBufTsgcG9zaXRpb24gPSAwOyBpbml0aWFsX2J1ZmZlciA9IHN9XG5cbmxldCBjb250ZW50cyBiID0gQnl0ZXMuc3ViX3N0cmluZyBiLmlubmVyLmJ1ZmZlciAwIGIucG9zaXRpb25cbmxldCB0b19ieXRlcyBiID0gQnl0ZXMuc3ViIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgc3ViIGIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBiLnBvc2l0aW9uIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuc3ViXCJcbiAgZWxzZSBCeXRlcy5zdWJfc3RyaW5nIGIuaW5uZXIuYnVmZmVyIG9mcyBsZW5cblxuXG5sZXQgYmxpdCBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IHNyYy5wb3NpdGlvbiAtIGxlblxuICAgICAgICAgICAgIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKEJ5dGVzLmxlbmd0aCBkc3QpIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYmxpdFwiXG4gIGVsc2VcbiAgICBCeXRlcy5ibGl0IHNyYy5pbm5lci5idWZmZXIgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuXG5cblxubGV0IG50aCBiIG9mcyA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gcG9zaXRpb24gfHwgcG9zaXRpb24gPiBsZW5ndGggdGhlblxuICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZSBCeXRlcy51bnNhZmVfZ2V0IGJ1ZmZlciBvZnNcblxuXG5sZXQgbGVuZ3RoIGIgPSBiLnBvc2l0aW9uXG5cbmxldCBjbGVhciBiID0gYi5wb3NpdGlvbiA8LSAwXG5cbmxldCByZXNldCBiID1cbiAgYi5wb3NpdGlvbiA8LSAwO1xuICBsZXQgaW5uZXIgPVxuICAgIHsgYnVmZmVyID0gYi5pbml0aWFsX2J1ZmZlcjsgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGIuaW5pdGlhbF9idWZmZXIgfVxuICBpblxuICBiLmlubmVyIDwtIGlubmVyXG5cbigqIFtyZXNpemUgYiBtb3JlXSBlbnN1cmVzIHRoYXQgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIuaW5uZXIubGVuZ3RoXSBob2xkc1xuICAgYnkgZHluYW1pY2FsbHkgZXh0ZW5kaW5nIFtiLmlubmVyXSBpZiBuZWNlc3NhcnkgLS0gYW5kIHRodXNcbiAgIGluY3JlYXNpbmcgW2IuaW5uZXIubGVuZ3RoXS5cbiopXG5sZXQgcmVzaXplIGIgbW9yZSA9XG4gIGxldCBvbGRfcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQgb2xkX2xlbiA9IGIuaW5uZXIubGVuZ3RoIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIG9sZF9sZW4gaW5cbiAgd2hpbGUgb2xkX3BvcyArIG1vcmUgPiAhbmV3X2xlbiBkbyBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlbiBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgaWYgb2xkX3BvcyArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgdGhlbiBuZXdfbGVuIDo9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2UgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIlxuICBlbmQ7XG4gIGxldCBuZXdfYnVmZmVyID0gQnl0ZXMuY3JlYXRlICFuZXdfbGVuIGluXG4gICgqIFBSIzYxNDg6IGxldCdzIGtlZXAgdXNpbmcgW2JsaXRdIHJhdGhlciB0aGFuIFt1bnNhZmVfYmxpdF0gaW5cbiAgICAgdGhpcyB0cmlja3kgZnVuY3Rpb24gdGhhdCBpcyBzbG93IGFueXdheS4gKilcbiAgQnl0ZXMuYmxpdCBiLmlubmVyLmJ1ZmZlciAwIG5ld19idWZmZXIgMCBiLnBvc2l0aW9uO1xuICBiLmlubmVyIDwtIHsgYnVmZmVyID0gbmV3X2J1ZmZlcjsgbGVuZ3RoID0gIW5ld19sZW4gfVxuXG4oKiBOb3RlOlxuICAgIFNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBiZWxvdyBoYXZlIGEgZmFzdCBwYXRoIHdoZW4gdGhlIGlubmVyXG4gIGJ1ZmZlciBkb2Vzbid0IG5lZWQgdG8gYmUgZXh0ZW5kZWQuXG4gICAgSW4gdGhpcyBjYXNlLCBpdCBpcyBwb3NzaWJsZSB0byB1c2UgdW5zYWZlIGFjY2Vzc2VzIG9uIHRoZVxuICBjb250ZW50cyBvZiB0aGUgW2lubmVyXSBmaWVsZCBzaW5jZSBpdHMgZmllbGRzIGFyZSBpbW11dGFibGUuXG4gIEluIHByZXNlbmNlIG9mIGRhdGEgcmFjZXMsIHdlIG1heSBhY2Nlc3MgdGhlIHdyb25nIGlubmVyIGJ1ZmZlciwgYnV0IHdlXG4gIHdpbGwgdXNlIHRoaXMgYnVmZmVyIHNhZmVseS5cbiAgQXMgc29vbiBhcyB3ZSBuZWVkIHRvIHJlc2l6ZSB0aGUgYnVmZmVyLCB3ZSBmYWxsIGJhY2sgdG8gc2FmZSBhY2Nlc3Nlcy5cbiopXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBpZiBwb3MgPj0gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDE7XG4gICAgQnl0ZXMuc2V0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gY1xuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbmxldCB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXggPSA0XG5sZXQgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heCA9IDRcblxubGV0IHJlYyBhZGRfdXRmXzhfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfOF91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfOF91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IHJlYyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzE2YmVfdWNoYXIgYi5pbm5lci5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZsZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZsZV91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCBhZGRfc3Vic3RyaW5nIGIgcyBvZmZzZXQgbGVuID1cbiAgaWYgb2Zmc2V0IDwgMCB8fCBsZW4gPCAwIHx8IG9mZnNldCA+IFN0cmluZy5sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9zdWJzdHJpbmcvYWRkX3N1YmJ5dGVzXCI7XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiBsZW47XG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcyBvZmZzZXQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW5cbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgb2Zmc2V0IGJ1ZmZlciBwb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3ViYnl0ZXMgYiBzIG9mZnNldCBsZW4gPVxuICBhZGRfc3Vic3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcykgb2Zmc2V0IGxlblxuXG5sZXQgYWRkX3N0cmluZyBiIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7IGxlbmd0aH0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgbGVuO1xuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIHMgMCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbjtcbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgMCBidWZmZXIgcG9zaXRpb24gbGVuO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2J5dGVzIGIgcyA9IGFkZF9zdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKVxuXG5sZXQgYWRkX2J1ZmZlciBiIGJzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnMuaW5uZXIuYnVmZmVyIDAgYnMucG9zaXRpb25cblxuKCogdGhpcyAocHJpdmF0ZSkgZnVuY3Rpb24gY291bGQgbW92ZSBpbnRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG5sZXQgcmVhbGx5X2lucHV0X3VwX3RvIGljIGJ1ZiBvZnMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWQgPVxuICAgIGlmIHRvX3JlYWQgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBpbnB1dCBpYyBidWYgb2ZzIHRvX3JlYWQgaW5cbiAgICAgIGlmIHIgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBhbHJlYWR5X3JlYWQgKyByIGluXG4gICAgICAgIGxldCBvZnMgPSBvZnMgKyByIGluXG4gICAgICAgIGxldCB0b19yZWFkID0gdG9fcmVhZCAtIHIgaW5cbiAgICAgICAgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW4gbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZDowIH5vZnMgfnRvX3JlYWQ6bGVuXG5cblxubGV0IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiA9XG4gIGlmIGIucG9zaXRpb24gKyBsZW4gPiBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgbGV0IG4gPSByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW4gaW5cbiAgYi5wb3NpdGlvbiA8LSBiLnBvc2l0aW9uICsgbjtcbiAgblxuXG5sZXQgYWRkX2NoYW5uZWwgYiBpYyBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuICAgKCogUFIjNTAwNCAqKVxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9jaGFubmVsXCI7XG4gIGxldCBuID0gdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuIGluXG4gICgqIEl0IGlzIGludGVudGlvbmFsIHRoYXQgYSBjb25zdW1lciBjYXRjaGluZyBFbmRfb2ZfZmlsZVxuICAgICB3aWxsIHNlZSB0aGUgZGF0YSB3cml0dGVuIChzZWUgIzY3MTksICM3MTM2KS4gKilcbiAgaWYgbiA8IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAoKVxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgY2xvc2luZyA9IGZ1bmN0aW9uXG4gIHwgJygnIC0+ICcpJ1xuICB8ICd7JyAtPiAnfSdcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgaWYgcy5baV0gPSBvcGVuaW5nIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltIGVsc2VcbiAgICBpZiBzLltpXSA9IGNsb3NpbmcgdGhlblxuICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW0gaW5cbiAgYWR2YW5jZSBrIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIGxpbSBlbHNlXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIHwgJ18nIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICB8IF8gLT4gaSBpblxuICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0IGxpbSA9XG4gIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICgqIFBhcmVudGhlc2l6ZWQgaWRlbnQgPyAqKVxuICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX2Nsb3NpbmcgYyAoY2xvc2luZyBjKSAwIHMgbmV3X3N0YXJ0IGluXG4gICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAoKiBSZWd1bGFyIGlkZW50ICopXG4gIHwgXyAtPlxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgaW5cbiAgICAgaWYgc3RvcCA9IHN0YXJ0IHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpLCBzdG9wXG5cbigqIFN1YnN0aXR1dGUgJGlkZW50LCAkKGlkZW50KSwgb3IgJHtpZGVudH0gaW4gcyxcbiAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBiIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJyQnIC0+XG4gICAgICAgICBsZXQgaiA9IGkgKyAxIGluXG4gICAgICAgICBiZWdpbiBtYXRjaCBmaW5kX2lkZW50IHMgaiBsaW0gd2l0aFxuICAgICAgICAgfCBpZGVudCwgbmV4dF9pIC0+XG4gICAgICAgICAgIGFkZF9zdHJpbmcgYiAoZiBpZGVudCk7XG4gICAgICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICBhZGRfY2hhciBiICckJztcbiAgICAgICAgICAgc3Vic3QgJyAnIGpcbiAgICAgICAgIGVuZFxuICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXM7XG4gICAgICAgICBpZiBjdXJyZW50IDw+ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gIHN1YnN0ICcgJyAwXG5cbmxldCB0cnVuY2F0ZSBiIGxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci50cnVuY2F0ZVwiXG4gICAgZWxzZVxuICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IGFkZF9zZXEgYiBzZXEgPSBTZXEuaXRlciAoYWRkX2NoYXIgYikgc2VxXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBiID0gY3JlYXRlIDMyIGluXG4gIGFkZF9zZXEgYiBpO1xuICBiXG5cbigqKiB7NiBCaW5hcnkgZW5jb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQxNiA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcblxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuXG5sZXQgYWRkX2ludDggYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgMSBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMTtcbiAgICBzZXRfaW50OCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIHhcbiAgKSBlbHNlXG4gICAgdW5zYWZlX3NldF9pbnQ4IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDIgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDI7XG4gICAgc2V0X2ludDE2IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDE2IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDMyX25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDQgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDQ7XG4gICAgc2V0X2ludDMyIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDMyIGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDY0X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDggaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDg7XG4gICAgc2V0X2ludDY0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDY0IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X2xlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQxNl9iZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG5cbmxldCBhZGRfaW50MzJfbGUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDMyX2JlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeClcblxubGV0IGFkZF9pbnQ2NF9sZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50NjRfYmUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuXG5sZXQgYWRkX3VpbnQ4ID0gYWRkX2ludDhcbmxldCBhZGRfdWludDE2X25lID0gYWRkX2ludDE2X25lXG5sZXQgYWRkX3VpbnQxNl9sZSA9IGFkZF9pbnQxNl9sZVxubGV0IGFkZF91aW50MTZfYmUgPSBhZGRfaW50MTZfYmVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIFBhc2NhbCBDdW9xLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTUgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0XG5leHRlcm5hbCBjcmVhdGU6IHVuaXQgLT4gdCA9IFwiY2FtbF9tbF9tdXRleF9uZXdcIlxuZXh0ZXJuYWwgbG9jazogdCAtPiB1bml0ID0gXCJjYW1sX21sX211dGV4X2xvY2tcIlxuZXh0ZXJuYWwgdHJ5X2xvY2s6IHQgLT4gYm9vbCA9IFwiY2FtbF9tbF9tdXRleF90cnlfbG9ja1wiXG5leHRlcm5hbCB1bmxvY2s6IHQgLT4gdW5pdCA9IFwiY2FtbF9tbF9tdXRleF91bmxvY2tcIlxuXG4oKiBwcml2YXRlIHJlLWV4cG9ydCAqKVxuZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuXG4oKiBjYW5ub3QgaW5saW5lLCBvdGhlcndpc2UgZmxhbWJkYSBtaWdodCBtb3ZlIGNvZGUgYXJvdW5kLiAqKVxubGV0W0BpbmxpbmUgbmV2ZXJdIHByb3RlY3QgbSBmID1cbiAgbG9jayBtO1xuICBtYXRjaCBmKCkgd2l0aFxuICB8IHggLT5cbiAgICB1bmxvY2sgbTsgeFxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgKCogTk9URTogW3VubG9ja10gZG9lcyBub3QgcG9sbCBmb3IgYXN5bmNocm9ub3VzIGV4Y2VwdGlvbnMgKilcbiAgICB1bmxvY2sgbTtcbiAgICByZXJhaXNlIGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgQ29sbMOoZ2UgZGUgRnJhbmNlIGFuZCBJTlJJQSBQYXJpcyAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBTZW1hcGhvcmVzICopXG5cbnR5cGUgc2VtID0ge1xuICBtdXQ6IE11dGV4LnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICgqIHByb3RlY3RzIFt2XSAqKVxuICBtdXRhYmxlIHY6IGludDsgICAgICAgICAgICAgICAgICAgICAgICgqIHRoZSBjdXJyZW50IHZhbHVlICopXG4gIG5vbnplcm86IENvbmRpdGlvbi50ICAgICAgICAgICAgICAgICAgKCogc2lnbmFsZWQgd2hlbiBbdiA+IDBdICopXG59XG5cbm1vZHVsZSBDb3VudGluZyA9IHN0cnVjdFxuXG50eXBlIHQgPSBzZW1cblxubGV0IG1ha2UgdiA9XG4gIGlmIHYgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZW1hcGhvcmUuQ291bnRpbmcuaW5pdDogd3JvbmcgaW5pdGlhbCB2YWx1ZVwiO1xuICB7IG11dCA9IE11dGV4LmNyZWF0ZSgpOyB2OyBub256ZXJvID0gQ29uZGl0aW9uLmNyZWF0ZSgpIH1cblxubGV0IHJlbGVhc2UgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIGlmIHMudiA8IG1heF9pbnQgdGhlbiBiZWdpblxuICAgIHMudiA8LSBzLnYgKyAxO1xuICAgIENvbmRpdGlvbi5zaWduYWwgcy5ub256ZXJvO1xuICAgIE11dGV4LnVubG9jayBzLm11dFxuICBlbmQgZWxzZSBiZWdpblxuICAgIE11dGV4LnVubG9jayBzLm11dDtcbiAgICByYWlzZSAoU3lzX2Vycm9yIFwiU2VtYXBob3JlLkNvdW50aW5nLnJlbGVhc2U6IG92ZXJmbG93XCIpXG4gIGVuZFxuXG5sZXQgYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgd2hpbGUgcy52ID0gMCBkbyBDb25kaXRpb24ud2FpdCBzLm5vbnplcm8gcy5tdXQgZG9uZTtcbiAgcy52IDwtIHMudiAtIDE7XG4gIE11dGV4LnVubG9jayBzLm11dFxuXG5sZXQgdHJ5X2FjcXVpcmUgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIGxldCByZXQgPSBpZiBzLnYgPSAwIHRoZW4gZmFsc2UgZWxzZSAocy52IDwtIHMudiAtIDE7IHRydWUpIGluXG4gIE11dGV4LnVubG9jayBzLm11dDtcbiAgcmV0XG5cbmxldCBnZXRfdmFsdWUgcyA9IHMudlxuXG5lbmRcblxubW9kdWxlIEJpbmFyeSA9IHN0cnVjdFxuXG50eXBlIHQgPSBzZW1cblxubGV0IG1ha2UgYiA9XG4gIHsgbXV0ID0gTXV0ZXguY3JlYXRlKCk7XG4gICAgdiA9IGlmIGIgdGhlbiAxIGVsc2UgMDtcbiAgICBub256ZXJvID0gQ29uZGl0aW9uLmNyZWF0ZSgpIH1cblxubGV0IHJlbGVhc2UgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIHMudiA8LSAxO1xuICBDb25kaXRpb24uc2lnbmFsIHMubm9uemVybztcbiAgTXV0ZXgudW5sb2NrIHMubXV0XG5cbmxldCBhY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICB3aGlsZSBzLnYgPSAwIGRvIENvbmRpdGlvbi53YWl0IHMubm9uemVybyBzLm11dCBkb25lO1xuICBzLnYgPC0gMDtcbiAgTXV0ZXgudW5sb2NrIHMubXV0XG5cbmxldCB0cnlfYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgbGV0IHJldCA9IGlmIHMudiA9IDAgdGhlbiBmYWxzZSBlbHNlIChzLnYgPC0gMDsgdHJ1ZSkgaW5cbiAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICByZXRcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgIEtDIFNpdmFyYW1ha3Jpc2huYW4sIEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU3RlcGhlbiBEb2xhbiwgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBUb20gS2VsbHksIE9DYW1sIExhYnMgQ29uc3VsdGFuY3kgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE5IEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIE9DYW1sIExhYnMgQ29uc3VsdGFuY3kgTHRkICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBSYXcgPSBzdHJ1Y3RcbiAgKCogTG93LWxldmVsIHByaW1pdGl2ZXMgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWUgKilcbiAgdHlwZSB0ID0gcHJpdmF0ZSBpbnRcblxuICAoKiBUaGUgbGF5b3V0cyBvZiBbc3RhdGVdIGFuZCBbdGVybV9zeW5jXSBhcmUgaGFyZC1jb2RlZCBpblxuICAgICBbcnVudGltZS9kb21haW4uY10gKilcblxuICB0eXBlICdhIHN0YXRlID1cbiAgICB8IFJ1bm5pbmdcbiAgICB8IEZpbmlzaGVkIG9mICgnYSwgZXhuKSByZXN1bHQgW0B3YXJuaW5nIFwiLXVudXNlZC1jb25zdHJ1Y3RvclwiXVxuXG4gIHR5cGUgJ2EgdGVybV9zeW5jID0ge1xuICAgICgqIHByb3RlY3RlZCBieSBbbXV0XSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiAnYSBzdGF0ZSBbQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdIDtcbiAgICBtdXQgOiBNdXRleC50IDtcbiAgICBjb25kIDogQ29uZGl0aW9uLnQgO1xuICB9XG5cbiAgZXh0ZXJuYWwgc3Bhd24gOiAodW5pdCAtPiAnYSkgLT4gJ2EgdGVybV9zeW5jIC0+IHRcbiAgICA9IFwiY2FtbF9kb21haW5fc3Bhd25cIlxuICBleHRlcm5hbCBzZWxmIDogdW5pdCAtPiB0XG4gICAgPSBcImNhbWxfbWxfZG9tYWluX2lkXCIgW0BAbm9hbGxvY11cbiAgZXh0ZXJuYWwgY3B1X3JlbGF4IDogdW5pdCAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfZG9tYWluX2NwdV9yZWxheFwiXG4gIGV4dGVybmFsIGdldF9yZWNvbW1lbmRlZF9kb21haW5fY291bnQ6IHVuaXQgLT4gaW50XG4gICAgPSBcImNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XCIgW0BAbm9hbGxvY11cbmVuZFxuXG5sZXQgY3B1X3JlbGF4ICgpID0gUmF3LmNwdV9yZWxheCAoKVxuXG50eXBlIGlkID0gUmF3LnRcblxudHlwZSAnYSB0ID0ge1xuICBkb21haW4gOiBSYXcudDtcbiAgdGVybV9zeW5jIDogJ2EgUmF3LnRlcm1fc3luYztcbn1cblxubW9kdWxlIERMUyA9IHN0cnVjdFxuXG4gIG1vZHVsZSBPYmpfb3B0IDogc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIG5vbmUgOiB0XG4gICAgdmFsIHNvbWUgOiAnYSAtPiB0XG4gICAgdmFsIGlzX3NvbWUgOiB0IC0+IGJvb2xcblxuICAgICgqKiBbdW5zYWZlX2dldCBvYmpdIG1heSBvbmx5IGJlIGNhbGxlZCBzYWZlbHlcbiAgICAgICAgaWYgW2lzX3NvbWVdIGlzIHRydWUuXG5cbiAgICAgICAgW3Vuc2FmZV9nZXQgKHNvbWUgdildIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgICAgW09iai5vYmogKE9iai5yZXByIHYpXS4gKilcbiAgICB2YWwgdW5zYWZlX2dldCA6IHQgLT4gJ2FcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gT2JqLnRcbiAgICBsZXQgbm9uZSA9IE9iai5yZXByIChyZWYgMClcbiAgICBsZXQgc29tZSB2ID0gT2JqLnJlcHIgdlxuICAgIGxldCBpc19zb21lIG9iaiA9IChvYmogIT0gbm9uZSlcbiAgICBsZXQgdW5zYWZlX2dldCBvYmogPSBPYmoub2JqIG9ialxuICBlbmRcblxuICB0eXBlIGRsc19zdGF0ZSA9IE9ial9vcHQudCBhcnJheVxuXG4gIGV4dGVybmFsIGdldF9kbHNfc3RhdGUgOiB1bml0IC0+IGRsc19zdGF0ZSA9IFwiJWRsc19nZXRcIlxuXG4gIGV4dGVybmFsIHNldF9kbHNfc3RhdGUgOiBkbHNfc3RhdGUgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2RvbWFpbl9kbHNfc2V0XCIgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjb21wYXJlX2FuZF9zZXRfZGxzX3N0YXRlIDogZGxzX3N0YXRlIC0+IGRsc19zdGF0ZSAtPiBib29sID1cbiAgICBcImNhbWxfZG9tYWluX2Rsc19jb21wYXJlX2FuZF9zZXRcIiBbQEBub2FsbG9jXVxuXG4gIGxldCBjcmVhdGVfZGxzICgpID1cbiAgICBsZXQgc3QgPSBBcnJheS5tYWtlIDggT2JqX29wdC5ub25lIGluXG4gICAgc2V0X2Rsc19zdGF0ZSBzdFxuXG4gIGxldCBfID0gY3JlYXRlX2RscyAoKVxuXG4gIHR5cGUgJ2Ega2V5ID0gaW50ICogKHVuaXQgLT4gJ2EpXG5cbiAgbGV0IGtleV9jb3VudGVyID0gQXRvbWljLm1ha2UgMFxuXG4gIHR5cGUga2V5X2luaXRpYWxpemVyID1cbiAgICBLSTogJ2Ega2V5ICogKCdhIC0+ICdhKSAtPiBrZXlfaW5pdGlhbGl6ZXJcblxuICBsZXQgcGFyZW50X2tleXMgPSBBdG9taWMubWFrZSAoW10gOiBrZXlfaW5pdGlhbGl6ZXIgbGlzdClcblxuICBsZXQgcmVjIGFkZF9wYXJlbnRfa2V5IGtpID1cbiAgICBsZXQgbCA9IEF0b21pYy5nZXQgcGFyZW50X2tleXMgaW5cbiAgICBpZiBub3QgKEF0b21pYy5jb21wYXJlX2FuZF9zZXQgcGFyZW50X2tleXMgbCAoa2kgOjogbCkpXG4gICAgdGhlbiBhZGRfcGFyZW50X2tleSBraVxuXG4gIGxldCBuZXdfa2V5ID9zcGxpdF9mcm9tX3BhcmVudCBpbml0X29ycGhhbiA9XG4gICAgbGV0IGlkeCA9IEF0b21pYy5mZXRjaF9hbmRfYWRkIGtleV9jb3VudGVyIDEgaW5cbiAgICBsZXQgayA9IChpZHgsIGluaXRfb3JwaGFuKSBpblxuICAgIGJlZ2luIG1hdGNoIHNwbGl0X2Zyb21fcGFyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgc3BsaXQgLT4gYWRkX3BhcmVudF9rZXkgKEtJKGssIHNwbGl0KSlcbiAgICBlbmQ7XG4gICAga1xuXG4gICgqIElmIG5lY2Vzc2FyeSwgZ3JvdyB0aGUgY3VycmVudCBkb21haW4ncyBsb2NhbCBzdGF0ZSBhcnJheSBzdWNoIHRoYXQgW2lkeF1cbiAgICogaXMgYSB2YWxpZCBpbmRleCBpbiB0aGUgYXJyYXkuICopXG4gIGxldCByZWMgbWF5YmVfZ3JvdyBpZHggPVxuICAgIGxldCBzdCA9IGdldF9kbHNfc3RhdGUgKCkgaW5cbiAgICBsZXQgc3ogPSBBcnJheS5sZW5ndGggc3QgaW5cbiAgICBpZiBpZHggPCBzeiB0aGVuIHN0XG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHJlYyBjb21wdXRlX25ld19zaXplIHMgPVxuICAgICAgICBpZiBpZHggPCBzIHRoZW4gcyBlbHNlIGNvbXB1dGVfbmV3X3NpemUgKDIgKiBzKVxuICAgICAgaW5cbiAgICAgIGxldCBuZXdfc3ogPSBjb21wdXRlX25ld19zaXplIHN6IGluXG4gICAgICBsZXQgbmV3X3N0ID0gQXJyYXkubWFrZSBuZXdfc3ogT2JqX29wdC5ub25lIGluXG4gICAgICBBcnJheS5ibGl0IHN0IDAgbmV3X3N0IDAgc3o7XG4gICAgICAoKiBXZSB3YW50IGEgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBzYWZlIHdpdGggcmVzcGVjdCB0b1xuICAgICAgICAgc2luZ2xlLWRvbWFpbiBtdWx0aS10aHJlYWRpbmc6IHJldHJ5IGlmIHRoZSBETFMgc3RhdGUgaGFzXG4gICAgICAgICBjaGFuZ2VkIHVuZGVyIG91ciBmZWV0LlxuICAgICAgICAgTm90ZSB0aGF0IHRoZSBudW1iZXIgb2YgcmV0cmllcyB3aWxsIGJlIHZlcnkgc21hbGwgaW5cbiAgICAgICAgIGNvbnRlbmRlZCBzY2VuYXJpb3MsIGFzIHRoZSBhcnJheSBvbmx5IGdyb3dzLCB3aXRoXG4gICAgICAgICBleHBvbmVudGlhbCByZXNpemluZy4gKilcbiAgICAgIGlmIGNvbXBhcmVfYW5kX3NldF9kbHNfc3RhdGUgc3QgbmV3X3N0XG4gICAgICB0aGVuIG5ld19zdFxuICAgICAgZWxzZSBtYXliZV9ncm93IGlkeFxuICAgIGVuZFxuXG4gIGxldCBzZXQgKHR5cGUgYSkgKGlkeCwgX2luaXQpICh4IDogYSkgPVxuICAgIGxldCBzdCA9IG1heWJlX2dyb3cgaWR4IGluXG4gICAgKCogW1N5cy5vcGFxdWVfaWRlbnRpdHldIGVuc3VyZXMgdGhhdCBmbGFtYmRhIGRvZXMgbm90IGxvb2sgYXQgdGhlIHR5cGUgb2ZcbiAgICAgKiBbeF0sIHdoaWNoIG1heSBiZSBhIFtmbG9hdF0gYW5kIGNvbmNsdWRlIHRoYXQgdGhlIFtzdF0gaXMgYSBmbG9hdCBhcnJheS5cbiAgICAgKiBXZSBkbyBub3Qgd2FudCBPQ2FtbCdzIGZsb2F0IGFycmF5IG9wdGltaXNhdGlvbiBraWNraW5nIGluIGhlcmUuICopXG4gICAgc3QuKGlkeCkgPC0gT2JqX29wdC5zb21lIChTeXMub3BhcXVlX2lkZW50aXR5IHgpXG5cblxuICBsZXRbQGlubGluZSBuZXZlcl0gYXJyYXlfY29tcGFyZV9hbmRfc2V0IGEgaSBvbGR2YWwgbmV3dmFsID1cbiAgICAoKiBOb3RlOiB3ZSBjYW5ub3QgdXNlIFtAcG9sbCBlcnJvcl0gZHVlIHRvIHRoZVxuICAgICAgIGFsbG9jYXRpb25zIG9uIGEuKGkpIGluIHRoZSBEb3VibGVfYXJyYXkgY2FzZS4gKilcbiAgICBsZXQgY3VydmFsID0gYS4oaSkgaW5cbiAgICBpZiBjdXJ2YWwgPT0gb2xkdmFsIHRoZW4gKFxuICAgICAgQXJyYXkudW5zYWZlX3NldCBhIGkgbmV3dmFsO1xuICAgICAgdHJ1ZVxuICAgICkgZWxzZSBmYWxzZVxuXG4gIGxldCBnZXQgKHR5cGUgYSkgKChpZHgsIGluaXQpIDogYSBrZXkpIDogYSA9XG4gICAgbGV0IHN0ID0gbWF5YmVfZ3JvdyBpZHggaW5cbiAgICBsZXQgb2JqID0gc3QuKGlkeCkgaW5cbiAgICBpZiBPYmpfb3B0LmlzX3NvbWUgb2JqXG4gICAgdGhlbiAoT2JqX29wdC51bnNhZmVfZ2V0IG9iaiA6IGEpXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHYgOiBhID0gaW5pdCAoKSBpblxuICAgICAgbGV0IG5ld19vYmogPSBPYmpfb3B0LnNvbWUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgdikgaW5cbiAgICAgICgqIEF0IHRoaXMgcG9pbnQsIFtzdF0gb3IgW3N0LihpZHgpXSBtYXkgaGF2ZSBiZWVuIGNoYW5nZWRcbiAgICAgICAgIGJ5IGFub3RoZXIgdGhyZWFkIG9uIHRoZSBzYW1lIGRvbWFpbi5cblxuICAgICAgICAgSWYgW3N0XSBjaGFuZ2VkLCBpdCB3YXMgcmVzaXplZCBpbnRvIGEgbGFyZ2VyIHZhbHVlLFxuICAgICAgICAgd2UgY2FuIGp1c3QgcmV1c2UgdGhlIG5ldyB2YWx1ZS5cblxuICAgICAgICAgSWYgW3N0LihpZHgpXSBjaGFuZ2VkLCB3ZSBkcm9wIHRoZSBjdXJyZW50IHZhbHVlIHRvIGF2b2lkXG4gICAgICAgICBsZXR0aW5nIG90aGVyIHRocmVhZHMgb2JzZXJ2ZSBhICdyZXZlcnQnIHRoYXQgZm9yZ2V0c1xuICAgICAgICAgcHJldmlvdXMgbW9kaWZpY2F0aW9ucy4gKilcbiAgICAgIGxldCBzdCA9IGdldF9kbHNfc3RhdGUgKCkgaW5cbiAgICAgIGlmIGFycmF5X2NvbXBhcmVfYW5kX3NldCBzdCBpZHggb2JqIG5ld19vYmpcbiAgICAgIHRoZW4gdlxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICAoKiBpZiBzdC4oaWR4KSBjaGFuZ2VkLCBzb21lb25lIG11c3QgaGF2ZSBpbml0aWFsaXplZFxuICAgICAgICAgICB0aGUga2V5IGluIHRoZSBtZWFudGltZS4gKilcbiAgICAgICAgbGV0IHVwZGF0ZWRfb2JqID0gc3QuKGlkeCkgaW5cbiAgICAgICAgaWYgT2JqX29wdC5pc19zb21lIHVwZGF0ZWRfb2JqXG4gICAgICAgIHRoZW4gKE9ial9vcHQudW5zYWZlX2dldCB1cGRhdGVkX29iaiA6IGEpXG4gICAgICAgIGVsc2UgYXNzZXJ0IGZhbHNlXG4gICAgICBlbmRcbiAgICBlbmRcblxuICB0eXBlIGtleV92YWx1ZSA9IEtWIDogJ2Ega2V5ICogJ2EgLT4ga2V5X3ZhbHVlXG5cbiAgbGV0IGdldF9pbml0aWFsX2tleXMgKCkgOiBrZXlfdmFsdWUgbGlzdCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gKEtJIChrLCBzcGxpdCkpIC0+IEtWIChrLCAoc3BsaXQgKGdldCBrKSkpKVxuICAgICAgKEF0b21pYy5nZXQgcGFyZW50X2tleXMpXG5cbiAgbGV0IHNldF9pbml0aWFsX2tleXMgKGw6IGtleV92YWx1ZSBsaXN0KSA9XG4gICAgTGlzdC5pdGVyIChmdW4gKEtWIChrLCB2KSkgLT4gc2V0IGsgdikgbFxuZW5kXG5cbigqKioqKioqKiBJZGVudGl0eSAqKioqKioqKioqKVxuXG5sZXQgZ2V0X2lkIHsgZG9tYWluOyBfIH0gPSBkb21haW5cblxubGV0IHNlbGYgKCkgPSBSYXcuc2VsZiAoKVxuXG5sZXQgaXNfbWFpbl9kb21haW4gKCkgPSAoc2VsZiAoKSA6PiBpbnQpID0gMFxuXG4oKioqKioqKiogQ2FsbGJhY2tzICoqKioqKioqKiopXG5cbigqIGZpcnN0IHNwYXduLCBkb21haW4gc3RhcnR1cCBhbmQgYXQgZXhpdCBmdW5jdGlvbmFsaXR5ICopXG5sZXQgZmlyc3RfZG9tYWluX3NwYXduZWQgPSBBdG9taWMubWFrZSBmYWxzZVxuXG5sZXQgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gPSByZWYgKGZ1biAoKSAtPiAoKSlcblxubGV0IGJlZm9yZV9maXJzdF9zcGF3biBmID1cbiAgaWYgQXRvbWljLmdldCBmaXJzdF9kb21haW5fc3Bhd25lZCB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJmaXJzdCBkb21haW4gYWxyZWFkeSBzcGF3bmVkXCIpXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgb2xkX2YgPSAhZmlyc3Rfc3Bhd25fZnVuY3Rpb24gaW5cbiAgICBsZXQgbmV3X2YgKCkgPSBvbGRfZiAoKTsgZiAoKSBpblxuICAgIGZpcnN0X3NwYXduX2Z1bmN0aW9uIDo9IG5ld19mXG4gIGVuZFxuXG5sZXQgZG9fYmVmb3JlX2ZpcnN0X3NwYXduICgpID1cbiAgaWYgbm90IChBdG9taWMuZ2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkKSB0aGVuIGJlZ2luXG4gICAgQXRvbWljLnNldCBmaXJzdF9kb21haW5fc3Bhd25lZCB0cnVlO1xuICAgICFmaXJzdF9zcGF3bl9mdW5jdGlvbigpO1xuICAgICgqIFJlbGVhc2UgdGhlIG9sZCBmdW5jdGlvbiAqKVxuICAgIGZpcnN0X3NwYXduX2Z1bmN0aW9uIDo9IChmdW4gKCkgLT4gKCkpXG4gIGVuZFxuXG5sZXQgYXRfZXhpdF9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+IChmdW4gKCkgLT4gKCkpKVxuXG5sZXQgYXRfZXhpdCBmID1cbiAgbGV0IG9sZF9leGl0IDogdW5pdCAtPiB1bml0ID0gRExTLmdldCBhdF9leGl0X2tleSBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgIGYgKCk7IG9sZF9leGl0ICgpXG4gIGluXG4gIERMUy5zZXQgYXRfZXhpdF9rZXkgbmV3X2V4aXRcblxubGV0IGRvX2F0X2V4aXQgKCkgPVxuICBsZXQgZiA6IHVuaXQgLT4gdW5pdCA9IERMUy5nZXQgYXRfZXhpdF9rZXkgaW5cbiAgZiAoKVxuXG5sZXQgXyA9IFN0ZGxpYi5kb19kb21haW5fbG9jYWxfYXRfZXhpdCA6PSBkb19hdF9leGl0XG5cbigqKioqKioqIENyZWF0aW9uIGFuZCBUZXJtaW5hdGlvbiAqKioqKioqKilcblxubGV0IHNwYXduIGYgPVxuICBkb19iZWZvcmVfZmlyc3Rfc3Bhd24gKCk7XG4gIGxldCBwayA9IERMUy5nZXRfaW5pdGlhbF9rZXlzICgpIGluXG5cbiAgKCogW3Rlcm1fc3luY10gaXMgdXNlZCB0byBzeW5jaHJvbml6ZSB3aXRoIHRoZSBqb2luaW5nIGRvbWFpbnMgKilcbiAgbGV0IHRlcm1fc3luYyA9XG4gICAgUmF3Lnsgc3RhdGUgPSBSdW5uaW5nIDtcbiAgICAgICAgICBtdXQgPSBNdXRleC5jcmVhdGUgKCkgO1xuICAgICAgICAgIGNvbmQgPSBDb25kaXRpb24uY3JlYXRlICgpIH1cbiAgaW5cblxuICBsZXQgYm9keSAoKSA9XG4gICAgbWF0Y2hcbiAgICAgIERMUy5jcmVhdGVfZGxzICgpO1xuICAgICAgRExTLnNldF9pbml0aWFsX2tleXMgcGs7XG4gICAgICBsZXQgcmVzID0gZiAoKSBpblxuICAgICAgcmVzXG4gICAgd2l0aFxuICAgICgqIFJ1biB0aGUgW2F0X2V4aXRdIGNhbGxiYWNrcyB3aGVuIHRoZSBkb21haW4gY29tcHV0YXRpb24gZWl0aGVyXG4gICAgICAgdGVybWluYXRlcyBub3JtYWxseSBvciBleGNlcHRpb25hbGx5LiAqKVxuICAgIHwgcmVzIC0+XG4gICAgICAgICgqIElmIHRoZSBkb21haW4gY29tcHV0YXRpb24gdGVybWluYXRlZCBub3JtYWxseSwgYnV0IHRoZVxuICAgICAgICAgICBbYXRfZXhpdF0gY2FsbGJhY2tzIHJhaXNlZCBhbiBleGNlcHRpb24sIHRoZW4gcmV0dXJuIHRoZVxuICAgICAgICAgICBleGNlcHRpb24uICopXG4gICAgICAgIGRvX2F0X2V4aXQgKCk7XG4gICAgICAgIHJlc1xuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAoKiBJZiBib3RoIHRoZSBkb21haW4gY29tcHV0YXRpb24gYW5kIHRoZSBbYXRfZXhpdF0gY2FsbGJhY2tzXG4gICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMsIHRoZW4gaWdub3JlIHRoZSBleGNlcHRpb24gZnJvbSB0aGVcbiAgICAgICAgICAgW2F0X2V4aXRdIGNhbGxiYWNrcyBhbmQgcmV0dXJuIHRoZSBvcmlnaW5hbCBleGNlcHRpb24uICopXG4gICAgICAgICh0cnkgZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgICAgICByYWlzZSBleG5cbiAgaW5cbiAgbGV0IGRvbWFpbiA9IFJhdy5zcGF3biBib2R5IHRlcm1fc3luYyBpblxuICB7IGRvbWFpbiA7IHRlcm1fc3luYyB9XG5cbmxldCBqb2luIHsgdGVybV9zeW5jIDsgXyB9ID1cbiAgbGV0IG9wZW4gUmF3IGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWF0Y2ggdGVybV9zeW5jLnN0YXRlIHdpdGhcbiAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgQ29uZGl0aW9uLndhaXQgdGVybV9zeW5jLmNvbmQgdGVybV9zeW5jLm11dDtcbiAgICAgICAgbG9vcCAoKVxuICAgIHwgRmluaXNoZWQgcmVzIC0+XG4gICAgICAgIHJlc1xuICBpblxuICBtYXRjaCBNdXRleC5wcm90ZWN0IHRlcm1fc3luYy5tdXQgbG9vcCB3aXRoXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXggLT4gcmFpc2UgZXhcblxubGV0IHJlY29tbWVuZGVkX2RvbWFpbl9jb3VudCA9IFJhdy5nZXRfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICgqIFRvb2xzIHRvIG1hbmlwdWxhdGUgc2Nhbm5pbmcgc2V0IG9mIGNoYXJzIChzZWUgJVsuLi5dKSAqKVxuXG50eXBlIG11dGFibGVfY2hhcl9zZXQgPSBieXRlc1xuXG4oKiBDcmVhdGUgYSBmcmVzaCwgZW1wdHksIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgY3JlYXRlX2NoYXJfc2V0ICgpID0gQnl0ZXMubWFrZSAzMiAnXFwwMDAnXG5cbigqIEFkZCBhIGNoYXIgaW4gYSBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIEJ5dGVzLnNldCBjaGFyX3NldCBzdHJfaW5kXG4gICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoQnl0ZXMuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxvciBtYXNrKSlcblxubGV0IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCA9XG4gIEJ5dGVzLnRvX3N0cmluZyBjaGFyX3NldFxuXG4oKiBDb21wdXRlIHRoZSBjb21wbGVtZW50IG9mIGEgY2hhciBzZXQuICopXG5sZXQgcmV2X2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgbGV0IGNoYXJfc2V0JyA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICBmb3IgaSA9IDAgdG8gMzEgZG9cbiAgICBCeXRlcy5zZXQgY2hhcl9zZXQnIGlcbiAgICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgaSkgbHhvciAweEZGKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgY2hhcl9zZXQnXG5cbigqIFJldHVybiB0cnVlIGlmIGEgYGMnIGlzIGluIGBjaGFyX3NldCcuICopXG5sZXQgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbGFuZCBtYXNrKSA8PiAwXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZ25vcmVkIHBhcmFtIGNvbnZlcnNpb24gKilcblxuKCogR0FEVCB1c2VkIHRvIGFic3RyYWN0IGFuIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVyLiAqKVxuKCogU2VlIHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdC4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmIgPSBQYXJhbV9mb3JtYXRfRUJCIDpcbiAgICAoJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmJcblxuKCogQ29tcHV0ZSBhIHBhZGRpbmcgYXNzb2NpYXRlZCB0byBhIHBhZF9vcHRpb24gKHNlZSBcIiVfNDJkXCIpLiAqKVxubGV0IHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3BhZGRpbmdcbiAgfCBTb21lIHdpZHRoIC0+IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG5cbigqIENvbXB1dGUgYSBwcmVjaXNpb24gYXNzb2NpYXRlZCB0byBhIHByZWNfb3B0aW9uIChzZWUgXCIlXy40MmZcIikuICopXG5sZXQgcHJlY19vZl9wcmVjX29wdCBwcmVjX29wdCA9IG1hdGNoIHByZWNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3ByZWNpc2lvblxuICB8IFNvbWUgbmRlYyAtPiBMaXRfcHJlY2lzaW9uIG5kZWNcblxuKCogVHVybiBhbiBpZ25vcmVkIHBhcmFtIGludG8gaXRzIGVxdWl2YWxlbnQgbm90LWlnbm9yZWQgZm9ybWF0IG5vZGUuICopXG4oKiBVc2VkIGZvciBmb3JtYXQgcHJldHR5LXByaW50aW5nIGFuZCBTY2FuZi4gKilcbmxldCBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT4gKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhcmFtX2Zvcm1hdF9lYmIgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDaGFyIGZtdClcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfY2hhciBmbXQpXG4gIHwgSWdub3JlZF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFN0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDYW1sX3N0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2ludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoSW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50MzIgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQzMiAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKE5hdGl2ZWludCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2ludDY0IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoSW50NjQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9mbG9hdCAocGFkX29wdCwgcHJlY19vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEZsb2F0ICgoRmxvYXRfZmxhZ18sIEZsb2F0X2YpLFxuICAgICAgICAgICAgICBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfYm9vbCBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQm9vbCAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgZm10KSlcbiAgfCBJZ25vcmVkX3JlYWRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFJlYWRlciBmbXQpXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXQpKVxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX25leHRfY2hhciBmbXQpXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGVzICopXG5cbnR5cGUgKCdiLCAnYykgYWNjX2Zvcm1hdHRpbmdfZ2VuID1cbiAgfCBBY2Nfb3Blbl90YWcgb2YgKCdiLCAnYykgYWNjXG4gIHwgQWNjX29wZW5fYm94IG9mICgnYiwgJ2MpIGFjY1xuXG4oKiBSZXZlcnNlZCBsaXN0IG9mIHByaW50aW5nIGF0b21zLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHByaW50ZiBhcmd1bWVudHMuICopXG5hbmQgKCdiLCAnYykgYWNjID1cbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgb2YgKCdiLCAnYykgYWNjICogZm9ybWF0dGluZ19saXRcbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiBvZiAoJ2IsICdjKSBhY2MgKiAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW5cbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmcgICAgICgqIExpdGVyYWwgc3RyaW5nICopXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogTGl0ZXJhbCBjaGFyICopXG4gIHwgQWNjX2RhdGFfc3RyaW5nICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogR2VuZXJhdGVkIHN0cmluZyAqKVxuICB8IEFjY19kYXRhX2NoYXIgICAgICBvZiAoJ2IsICdjKSBhY2MgKiBjaGFyICAgICAgICgqIEdlbmVyYXRlZCBjaGFyICopXG4gIHwgQWNjX2RlbGF5ICAgICAgICAgIG9mICgnYiwgJ2MpIGFjYyAqICgnYiAtPiAnYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIERlbGF5ZWQgcHJpbnRpbmcgKCVhLCAldCkgKilcbiAgfCBBY2NfZmx1c2ggICAgICAgICAgb2YgKCdiLCAnYykgYWNjICAgICAgICAgICAgICAoKiBGbHVzaCAqKVxuICB8IEFjY19pbnZhbGlkX2FyZyAgICBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmdcbiAgICAgICgqIFJhaXNlIEludmFsaWRfYXJndW1lbnQgbXNnICopXG4gIHwgRW5kX29mX2FjY1xuXG4oKiBMaXN0IG9mIGhldGVyb2dlbmVvdXMgdmFsdWVzLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHNjYW5mIGNhbGxiYWNrIGFyZ3VtZW50cy4gKilcbnR5cGUgKCdhLCAnYikgaGV0ZXJfbGlzdCA9XG4gIHwgQ29ucyA6ICdjICogKCdhLCAnYikgaGV0ZXJfbGlzdCAtPiAoJ2MgLT4gJ2EsICdiKSBoZXRlcl9saXN0XG4gIHwgTmlsIDogKCdiLCAnYikgaGV0ZXJfbGlzdFxuXG4oKiBFeGlzdGVudGlhbCBCbGFjayBCb3hlcy4gKilcbigqIFVzZWQgdG8gYWJzdHJhY3Qgc29tZSBleGlzdGVudGlhbCB0eXBlIHBhcmFtZXRlcnMuICopXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcgYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZGRpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYiA9IFBhZGRpbmdfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkZGluZ19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZHByZWMgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYiA9IFBhZHByZWNfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3opIHByZWNpc2lvbiAqICgneiwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkcHJlY19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcGFkZGluZ19mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwYWRkaW5nX2ZtdF9lYmIgPSBQYWRkaW5nX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHBhZGRpbmcgKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwcmVjaXNpb25fZm10X2ViYiA9IFByZWNpc2lvbl9mbXRfRUJCIDpcbiAgICAgKF8sICd4IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYiA9IFBhZHByZWNfZm10X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICdwIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYlxuXG4oKiBBYnN0cmFjdCB0aGUgJ2EgYW5kICdkIHBhcmFtZXRlcnMgb2YgYW4gZm10LiAqKVxuKCogT3V0cHV0IHR5cGUgb2YgdGhlIGZvcm1hdCBwYXJzaW5nIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmIgPSBGbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGFuIGZtdHR5IGFuZCBhbiBmbXQuICopXG4oKiBTZWUgdGhlIHR5cGVfZm9ybWF0X2dlbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgPSBGbXRfZm10dHlfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdCAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiID0gRm10dHlfZm10X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBmbXR0eSAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXRfZm10dHlfZWJiIC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBmbXR0eSB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgZm9ybWF0IHR5cGVzLiAqKVxudHlwZSBmbXR0eV9lYmIgPSBGbXR0eV9FQkIgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT4gZm10dHlfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBwYWRkaW5nIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwYWRkaW5ncy4gKilcbnR5cGUgcGFkZGluZ19lYmIgPSBQYWRkaW5nX0VCQiA6ICgnYSwgJ2IpIHBhZGRpbmcgLT4gcGFkZGluZ19lYmJcblxuKCogQWJzdHJhY3QgYWxsIHByZWNpc2lvbiB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgcHJlY2lzaW9ucy4gKilcbnR5cGUgcHJlY2lzaW9uX2ViYiA9IFByZWNpc2lvbl9FQkIgOiAoJ2EsICdiKSBwcmVjaXNpb24gLT4gcHJlY2lzaW9uX2ViYlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnN0YW50cyAqKVxuXG4oKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgZmxvYXQgcHJpbnRpbmcuICopXG5sZXQgZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYgPVxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HIHwgRmxvYXRfaCB8IEZsb2F0X0hcbiAgfCBGbG9hdF9DRiAtPiAtNlxuICAoKiBGb3IgJWggJUggYW5kICUjRiBmb3JtYXRzLCBhIG5lZ2F0aXZlIHByZWNpc2lvbiBtZWFucyBcImFzIG1hbnkgZGlnaXRzIGFzXG4gICAgIG5lY2Vzc2FyeVwiLiAgRm9yIHRoZSBvdGhlciBGUCBmb3JtYXRzLCB3ZSB0YWtlIHRoZSBhYnNvbHV0ZSB2YWx1ZVxuICAgICBvZiB0aGUgcHJlY2lzaW9uLCBoZW5jZSA2IGRpZ2l0cyBieSBkZWZhdWx0LiAqKVxuICB8IEZsb2F0X0YgLT4gMTJcbiAgKCogRGVmYXVsdCBwcmVjaXNpb24gZm9yIE9DYW1sIGZsb2F0IHByaW50aW5nICglRikuICopXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXh0ZXJuYWxzICopXG5cbmV4dGVybmFsIGZvcm1hdF9mbG9hdDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfaW50MzI6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmV4dGVybmFsIGZvcm1hdF9uYXRpdmVpbnQ6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDY0OiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5leHRlcm5hbCBoZXhzdHJpbmdfb2ZfZmxvYXQ6IGZsb2F0IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXRcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgKCogVG9vbHMgdG8gcHJldHR5LXByaW50IGZvcm1hdHMgKilcblxuKCogVHlwZSBvZiBleHRlbnNpYmxlIGNoYXJhY3RlciBidWZmZXJzLiAqKVxudHlwZSBidWZmZXIgPSB7XG4gIG11dGFibGUgaW5kIDogaW50O1xuICBtdXRhYmxlIGJ5dGVzIDogYnl0ZXM7XG59XG5cbigqIENyZWF0ZSBhIGZyZXNoIGJ1ZmZlci4gKilcbmxldCBidWZmZXJfY3JlYXRlIGluaXRfc2l6ZSA9IHsgaW5kID0gMDsgYnl0ZXMgPSBCeXRlcy5jcmVhdGUgaW5pdF9zaXplIH1cblxuKCogQ2hlY2sgc2l6ZSBvZiB0aGUgYnVmZmVyIGFuZCBncm93IGl0IGlmIG5lZWRlZC4gKilcbmxldCBidWZmZXJfY2hlY2tfc2l6ZSBidWYgb3ZlcmhlYWQgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ1Zi5ieXRlcyBpblxuICBsZXQgbWluX2xlbiA9IGJ1Zi5pbmQgKyBvdmVyaGVhZCBpblxuICBpZiBtaW5fbGVuID4gbGVuIHRoZW4gKFxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1heCAobGVuICogMikgbWluX2xlbiBpblxuICAgIGxldCBuZXdfc3RyID0gQnl0ZXMuY3JlYXRlIG5ld19sZW4gaW5cbiAgICBCeXRlcy5ibGl0IGJ1Zi5ieXRlcyAwIG5ld19zdHIgMCBsZW47XG4gICAgYnVmLmJ5dGVzIDwtIG5ld19zdHI7XG4gIClcblxuKCogQWRkIHRoZSBjaGFyYWN0ZXIgYGMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjID1cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIDE7XG4gIEJ5dGVzLnNldCBidWYuYnl0ZXMgYnVmLmluZCBjO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyAxXG5cbigqIEFkZCB0aGUgc3RyaW5nIGBzJyB0byB0aGUgYnVmZmVyIGBidWYnLiAqKVxubGV0IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzID1cbiAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIHN0cl9sZW47XG4gIFN0cmluZy5ibGl0IHMgMCBidWYuYnl0ZXMgYnVmLmluZCBzdHJfbGVuO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyBzdHJfbGVuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiB0aGUgYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jb250ZW50cyBidWYgPVxuICBCeXRlcy5zdWJfc3RyaW5nIGJ1Zi5ieXRlcyAwIGJ1Zi5pbmRcblxuKCoqKilcblxuKCogQ29udmVydCBhbiBpbnRlZ2VyIGNvbnZlcnNpb24gdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2ljb252IGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkIHwgSW50X0NkIC0+ICdkJyB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpXG4gIHwgSW50X0NpIC0+ICdpJyB8IEludF94IHwgSW50X0N4IC0+ICd4JyB8IEludF9YIHwgSW50X0NYIC0+ICdYJyB8IEludF9vXG4gIHwgSW50X0NvIC0+ICdvJyB8IEludF91IHwgSW50X0N1IC0+ICd1J1xuXG4oKiBDb252ZXJ0IGEgZmxvYXQgY29udmVyc2lvbiB0byBjaGFyLiAqKVxuKCogYGNGJyB3aWxsIGJlICdGJyBmb3IgZGlzcGxheWluZyBmb3JtYXQgYW5kICdnJyB0byBjYWxsIGxpYmMgcHJpbnRmICopXG5sZXQgY2hhcl9vZl9mY29udiA/KGNGPSdGJykgZmNvbnYgPSBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgLT4gJ2YnIHwgRmxvYXRfZSAtPiAnZSdcbiAgfCBGbG9hdF9FIC0+ICdFJyB8IEZsb2F0X2cgLT4gJ2cnXG4gIHwgRmxvYXRfRyAtPiAnRycgfCBGbG9hdF9GIC0+IGNGXG4gIHwgRmxvYXRfaCAtPiAnaCcgfCBGbG9hdF9IIC0+ICdIJ1xuICB8IEZsb2F0X0NGIC0+ICdGJ1xuXG5cbigqIENvbnZlcnQgYSBzY2FubmluZyBjb3VudGVyIHRvIGNoYXIuICopXG5sZXQgY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIgPSBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgIC0+ICdsJ1xuICB8IENoYXJfY291bnRlciAgLT4gJ24nXG4gIHwgVG9rZW5fY291bnRlciAtPiAnTidcblxuKCoqKilcblxuKCogUHJpbnQgYSBjaGFyX3NldCBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBPQ2FtbCBmb3JtYXQgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQgPVxuICBsZXQgcmVjIHByaW50X3N0YXJ0IHNldCA9XG4gICAgbGV0IGlzX2Fsb25lIGMgPVxuICAgICAgbGV0IGJlZm9yZSwgYWZ0ZXIgPSBDaGFyLihjaHIgKGNvZGUgYyAtIDEpLCBjaHIgKGNvZGUgYyArIDEpKSBpblxuICAgICAgaXNfaW5fY2hhcl9zZXQgc2V0IGNcbiAgICAgICYmIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IGJlZm9yZSAmJiBpc19pbl9jaGFyX3NldCBzZXQgYWZ0ZXIpIGluXG4gICAgaWYgaXNfYWxvbmUgJ10nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSc7XG4gICAgcHJpbnRfb3V0IHNldCAxO1xuICAgIGlmIGlzX2Fsb25lICctJyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nO1xuICBhbmQgcHJpbnRfb3V0IHNldCBpID1cbiAgICBpZiBpIDwgMjU2IHRoZW5cbiAgICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlbiBwcmludF9maXJzdCBzZXQgaVxuICAgICAgZWxzZSBwcmludF9vdXQgc2V0IChpICsgMSlcbiAgYW5kIHByaW50X2ZpcnN0IHNldCBpID1cbiAgICBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICdcXDI1NScgLT4gcHJpbnRfY2hhciBidWYgMjU1O1xuICAgIHwgJ10nIHwgJy0nIC0+IHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICB8IF8gLT4gcHJpbnRfc2Vjb25kIHNldCAoaSArIDEpO1xuICBhbmQgcHJpbnRfc2Vjb25kIHNldCBpID1cbiAgICBpZiBpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGkpIHRoZW5cbiAgICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgICAgfCAnXFwyNTUnIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIDI1NDtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU1O1xuICAgICAgfCAnXScgfCAnLScgd2hlbiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgKGkgKyAxKSkpIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICAgIHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICAgIHwgXyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDIpO1xuICAgICAgfCBfIC0+XG4gICAgICAgIHByaW50X2luIHNldCAoaSAtIDEpIChpICsgMik7XG4gICAgZWxzZSAoXG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIClcbiAgYW5kIHByaW50X2luIHNldCBpIGogPVxuICAgIGlmIGogPSAyNTYgfHwgbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGopKSB0aGVuIChcbiAgICAgIHByaW50X2NoYXIgYnVmIGk7XG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaW50X29mX2NoYXIgJy0nKTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChqIC0gMSk7XG4gICAgICBpZiBqIDwgMjU2IHRoZW4gcHJpbnRfb3V0IHNldCAoaiArIDEpO1xuICAgICkgZWxzZVxuICAgICAgcHJpbnRfaW4gc2V0IGkgKGogKyAxKTtcbiAgYW5kIHByaW50X2NoYXIgYnVmIGkgPSBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICclJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgfCAnQCcgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0AnO1xuICAgIHwgYyAgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgaW5cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnWyc7XG4gIHByaW50X3N0YXJ0IChcbiAgICBpZiBpc19pbl9jaGFyX3NldCBjaGFyX3NldCAnXFwwMDAnXG4gICAgdGhlbiAoIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ14nOyByZXZfY2hhcl9zZXQgY2hhcl9zZXQgKVxuICAgIGVsc2UgY2hhcl9zZXRcbiAgKTtcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSdcblxuKCoqKilcblxuKCogUHJpbnQgYSBwYWR0eSBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eSA9IG1hdGNoIHBhZHR5IHdpdGhcbiAgfCBMZWZ0ICAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICctJ1xuICB8IFJpZ2h0IC0+ICgpXG4gIHwgWmVyb3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnMCdcblxuKCogUHJpbnQgdGhlICdfJyBvZiBhbiBpZ25vcmVkIGZsYWcgaWYgbmVlZGVkLiAqKVxubGV0IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnID1cbiAgaWYgaWduX2ZsYWcgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICdfJ1xuXG4oKioqKVxuXG5sZXQgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB3aWR0aCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgd2lkdGgpXG5cbigqKiopXG5cbigqIFByaW50IHBhZGRpbmcgaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wYWRkaW5nIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHBhZGRpbmcgLT4gdW5pdCA9XG5mdW4gYnVmIHBhZCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgLT4gKClcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIG4pIC0+XG4gICAgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHkgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyonXG5cbigqIFByaW50IHByZWNpc2lvbiBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3ByZWNpc2lvbiA6IHR5cGUgYSBiIC4gYnVmZmVyIC0+IChhLCBiKSBwcmVjaXNpb24gLT4gdW5pdCA9XG4gIGZ1biBidWYgcHJlYyAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gLT4gKClcbiAgfCBMaXRfcHJlY2lzaW9uIG4gLT5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIi4qXCJcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIG9yICcjJyBhc3NvY2lhdGVkIHRvIGFuIGludCBjb252ZXJzaW9uLiAqKVxubGV0IGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udiA9IG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfcGQgfCBJbnRfcGkgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBJbnRfc2QgfCBJbnRfc2kgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBJbnRfQ3ggfCBJbnRfQ1ggfCBJbnRfQ28gfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyMnXG4gIHwgSW50X2QgfCBJbnRfaSB8IEludF94IHwgSW50X1ggfCBJbnRfbyB8IEludF91IC0+ICgpXG5cbigqIFByaW50IGFuIGNvbXBsZXRlIGludCBmb3JtYXQgaW4gYSBidWZmZXIgKGV4OiBcIiUzLipkXCIpLiAqKVxubGV0IGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyBjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9pY29udiBpY29udilcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIGFuZC9vciAnIycgYXNzb2NpYXRlZCB0byBhIGZsb2F0IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252ID1cbiAgYmVnaW4gbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgfCBGbG9hdF9mbGFnX3AgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBGbG9hdF9mbGFnX3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBGbG9hdF9mbGFnXyAtPiAoKSBlbmQ7XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfQ0YgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfR1xuICB8IEZsb2F0X0YgfCBGbG9hdF9oIHwgRmxvYXRfSCAtPiAoKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZsb2F0IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJSsqLjNmXCIpLiAqKVxubGV0IGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfZmNvbnYgZmNvbnYpXG5cbigqIENvbXB1dGUgdGhlIGxpdGVyYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgRm9ybWF0dGluZ19saXQuICopXG4oKiBVc2VkIGJ5IFByaW50ZiBhbmQgU2NhbmYgd2hlcmUgZm9ybWF0dGluZyBpcyBub3QgaW50ZXJwcmV0ZWQuICopXG5sZXQgc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0ID0gbWF0Y2ggZm9ybWF0dGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgIC0+IFwiQF1cIlxuICB8IENsb3NlX3RhZyAgICAgICAgICAgIC0+IFwiQH1cIlxuICB8IEJyZWFrIChzdHIsIF8sIF8pICAgIC0+IHN0clxuICB8IEZGbHVzaCAgICAgICAgICAgICAgIC0+IFwiQD9cIlxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgIC0+IFwiQFxcblwiXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgLT4gXCJALlwiXG4gIHwgTWFnaWNfc2l6ZSAoc3RyLCBfKSAgLT4gc3RyXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgLT4gXCJAQFwiXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgLT4gXCJAJVwiXG4gIHwgU2Nhbl9pbmRpYyBjIC0+IFwiQFwiIF4gKFN0cmluZy5tYWtlIDEgYylcblxuKCoqKilcblxuKCogUHJpbnQgYSBsaXRlcmFsIGNoYXIgaW4gYSBidWZmZXIsIGVzY2FwZSAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNociA9IG1hdGNoIGNociB3aXRoXG4gIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUlXCJcbiAgfCBfIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgY2hyXG5cbigqIFByaW50IGEgbGl0ZXJhbCBzdHJpbmcgaW4gYSBidWZmZXIsIGVzY2FwZSBhbGwgJyUnIGJ5IFwiJSVcIi4gKilcbmxldCBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIHN0ciA9XG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgZG9cbiAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBzdHIuW2ldXG4gIGRvbmVcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHByZXR0eS1wcmludGluZyAqKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZvcm1hdCB0eXBlIChhbiBmbXR0eSkgaW4gYSBidWZmZXIuICopXG5sZXQgcmVjIGJwcmludF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAgIGJ1ZmZlciAtPiAoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IHVuaXQgPVxuZnVuIGJ1ZiBmbXR0eSAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0ICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWNcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlc1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludF90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVpXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbmlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludDY0X3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVMaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWZcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBCb29sX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlQlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFscGhhX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVhXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXRcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlP1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFJlYWRlcl90eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVyXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJV9yXCI7XG4gICAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgRm9ybWF0X2FyZ190eSAoc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV7XCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV9XCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eSwgXywgcmVzdCkgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKFwiOyBicHJpbnRfZm10dHkgYnVmIHN1Yl9mbXR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBFbmRfb2ZfZm10dHkgLT4gKClcblxuKCoqKilcblxubGV0IHJlYyBpbnRfb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSBhIGIgYyAuXG4gIChhLCBiLCBjKSBjdXN0b21fYXJpdHkgLT4gaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBDdXN0b21femVybyAtPiAwXG4gIHwgQ3VzdG9tX3N1Y2MgeCAtPiAxICsgaW50X29mX2N1c3RvbV9hcml0eSB4XG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9mbXQgYnVmIGZtdCA9XG4gIGxldCByZWMgZm10aXRlciA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBib29sIC0+IHVuaXQgPVxuICBmdW4gZm10IGlnbl9mbGFnIC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ1MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfaW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWM7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ24nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ0wnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfZmxvYXRfZm10IGJ1ZiBpZ25fZmxhZyBmY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgQ2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdjJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdCJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEFscGhhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2EnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICd0JzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgLT5cbiAgICAgIGZvciBfaSA9IDEgdG8gaW50X29mX2N1c3RvbV9hcml0eSBhcml0eSBkb1xuICAgICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJz8nO1xuICAgICAgZG9uZTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFJlYWRlciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdyJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmx1c2ggcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSFcIjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBjaHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3snO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ30nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0OyBidWZmZXJfYWRkX2NoYXIgYnVmICcoJztcbiAgICAgIGJwcmludF9mbXR0eSBidWYgZm10dHk7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICcpJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiB3aWR0aF9vcHQ7IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQ7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIpO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBcIjBjXCI7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgbGV0IFBhcmFtX2Zvcm1hdF9FQkIgZm10JyA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdCBpblxuICAgICAgZm10aXRlciBmbXQnIHRydWU7XG5cbiAgICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQpO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBmbXRpbmdfZ2VuIHdpdGhcbiAgICAgIHwgT3Blbl90YWcgKEZvcm1hdCAoXywgc3RyKSkgLT5cbiAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiQHtcIjsgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHN0clxuICAgICAgfCBPcGVuX2JveCAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAW1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICBlbmQ7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEVuZF9vZl9mb3JtYXQgLT4gKClcblxuICBpbiBmbXRpdGVyIGZtdCBmYWxzZVxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGEgZm9ybWF0IHRvIHN0cmluZy4gKilcbmxldCBzdHJpbmdfb2ZfZm10IGZtdCA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXQgYnVmIGZtdDtcbiAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUeXBlIGV4dHJhY3Rpb24gKilcblxudHlwZSAoXywgXykgZXEgPSBSZWZsIDogKCdhLCAnYSkgZXFcblxuKCogSW52YXJpYW50OiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBpZGVudGl0eSBvbiB2YWx1ZXMuXG5cbiAgIEluIHBhcnRpY3VsYXIsIGlmICh0eTEsIHR5MikgaGF2ZSBlcXVhbCB2YWx1ZXMsIHRoZW5cbiAgICh0cmFucyAoc3ltbSB0eTEpIHR5MikgcmVzcGVjdHMgdGhlICd0cmFucycgcHJlY29uZGl0aW9uLiAqKVxubGV0IHJlYyBzeW1tIDogdHlwZSBhMSBiMSBjMSBkMSBlMSBmMSBhMiBiMiBjMiBkMiBlMiBmMiAuXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdHR5X3JlbFxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPiBDaGFyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT4gSW50X3R5IChzeW1tIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPiBJbnQzMl90eSAoc3ltbSByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT4gSW50NjRfdHkgKHN5bW0gcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBOYXRpdmVpbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+IEZsb2F0X3R5IChzeW1tIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+IEJvb2xfdHkgKHN5bW0gcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPiBTdHJpbmdfdHkgKHN5bW0gcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+IFRoZXRhX3R5IChzeW1tIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPiBBbHBoYV90eSAoc3ltbSByZXN0KVxuICB8IEFueV90eSByZXN0IC0+IEFueV90eSAoc3ltbSByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+IFJlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT4gSWdub3JlZF9yZWFkZXJfdHkgKHN5bW0gcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgc3ltbSByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTIsIHR5MSwgc3ltbSByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxubGV0IHJlYyBmbXR0eV9yZWxfZGV0IDogdHlwZSBhMSBiIGMgZDEgZTEgZjEgYTIgZDIgZTIgZjIgLlxuICAoYTEsIGIsIGMsIGQxLCBlMSwgZjEsXG4gICBhMiwgYiwgYywgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKChmMSwgZjIpIGVxIC0+IChhMSwgYTIpIGVxKVxuICAqICgoYTEsIGEyKSBlcSAtPiAoZjEsIGYyKSBlcSlcbiAgKiAoKGUxLCBlMikgZXEgLT4gKGQxLCBkMikgZXEpXG4gICogKChkMSwgZDIpIGVxIC0+IChlMSwgZTIpIGVxKVxuPSBmdW5jdGlvblxuICB8IEVuZF9vZl9mbXR0eSAtPlxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKVxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG5cbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBGb3JtYXRfYXJnX3R5IChfdHksIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICBsZXQgYWcsIGdhLCBkaiwgamQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBsZXQgUmVmbCA9IGFnIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZ2EgUmVmbCBpbiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBsZXQgUmVmbCA9IGRqIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gamQgUmVmbCBpbiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcblxuKCogUHJlY29uZGl0aW9uOiB3ZSBhc3N1bWUgdGhhdCB0aGUgdHdvIGZtdHR5X3JlbCBhcmd1bWVudHMgaGF2ZSBlcXVhbFxuICAgdmFsdWVzIChhdCBwb3NzaWJseSBkaXN0aW5jdCB0eXBlcyk7IHRoaXMgaW52YXJpYW50IGNvbWVzIGZyb20gdGhlIHdheVxuICAgZm10dHlfcmVsIHdpdG5lc3NlcyBhcmUgcHJvZHVjZWQgYnkgdGhlIHR5cGUtY2hlY2tlclxuXG4gICBUaGUgY29kZSBiZWxvdyB1c2VzIChhc3NlcnQgZmFsc2UpIHdoZW4gdGhpcyBhc3N1bXB0aW9uIGlzIGJyb2tlbi4gVGhlXG4gICBjb2RlIHBhdHRlcm4gaXMgdGhlIGZvbGxvd2luZzpcblxuICAgICB8IEZvbyB4LCBGb28geSAtPlxuICAgICAgICgqIGNhc2Ugd2hlcmUgaW5kZWVkIGJvdGggdmFsdWVzXG4gICAgICAgICAgc3RhcnQgd2l0aCBjb25zdHJ1Y3RvciBGb28gKilcbiAgICAgfCBGb28gXywgX1xuICAgICB8IF8sIEZvbyBfIC0+XG4gICAgICAgKCogZGlmZmVyZW50IGhlYWQgY29uc3RydWN0b3JzOiBicm9rZW4gcHJlY29uZGl0aW9uICopXG4gICAgICAgYXNzZXJ0IGZhbHNlXG4qKVxuYW5kIHRyYW5zIDogdHlwZVxuICBhMSBiMSBjMSBkMSBlMSBmMVxuICBhMiBiMiBjMiBkMiBlMiBmMlxuICBhMyBiMyBjMyBkMyBlMyBmM1xuLlxuICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4tPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMixcbiAgICBhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eV9yZWxcbi0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuPSBmdW4gdHkxIHR5MiAtPiBtYXRjaCB0eTEsIHR5MiB3aXRoXG4gIHwgQ2hhcl90eSByZXN0MSwgQ2hhcl90eSByZXN0MiAtPiBDaGFyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBTdHJpbmdfdHkgcmVzdDEsIFN0cmluZ190eSByZXN0MiAtPiBTdHJpbmdfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEJvb2xfdHkgcmVzdDEsIEJvb2xfdHkgcmVzdDIgLT4gQm9vbF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50X3R5IHJlc3QxLCBJbnRfdHkgcmVzdDIgLT4gSW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnQzMl90eSByZXN0MSwgSW50MzJfdHkgcmVzdDIgLT4gSW50MzJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDY0X3R5IHJlc3QxLCBJbnQ2NF90eSByZXN0MiAtPiBJbnQ2NF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QxLCBOYXRpdmVpbnRfdHkgcmVzdDIgLT4gTmF0aXZlaW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBGbG9hdF90eSByZXN0MSwgRmxvYXRfdHkgcmVzdDIgLT4gRmxvYXRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuXG4gIHwgQWxwaGFfdHkgcmVzdDEsIEFscGhhX3R5IHJlc3QyIC0+IEFscGhhX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbHBoYV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEFscGhhX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBUaGV0YV90eSByZXN0MSwgVGhldGFfdHkgcmVzdDIgLT4gVGhldGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFRoZXRhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgVGhldGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEFueV90eSByZXN0MSwgQW55X3R5IHJlc3QyIC0+IEFueV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQW55X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQW55X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBSZWFkZXJfdHkgcmVzdDEsIFJlYWRlcl90eSByZXN0MiAtPiBSZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFJlYWRlcl90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIFJlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDEsIElnbm9yZWRfcmVhZGVyX3R5IHJlc3QyIC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgSWdub3JlZF9yZWFkZXJfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9hcmdfdHkgKHR5MSwgcmVzdDEpLCBGb3JtYXRfYXJnX3R5ICh0eTIsIHJlc3QyKSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHRyYW5zIHR5MSB0eTIsIHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZvcm1hdF9hcmdfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfYXJnX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MTEsIHR5MTIsIHJlc3QxKSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MjEsIHR5MjIsIHJlc3QyKSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MTIpIHR5MjEgaW5cbiAgICBsZXQgXywgZjIsIF8sIGY0ID0gZm10dHlfcmVsX2RldCB0eSBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkyMiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRm9ybWF0X3N1YnN0X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBFbmRfb2ZfZm10dHksIEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcbiAgfCBFbmRfb2ZfZm10dHksIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRW5kX29mX2ZtdHR5IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcmVjIGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm9ybWF0dGluZ19nZW4gLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSAtPiBmbXR0eV9vZl9mbXQgZm10XG5cbigqIEV4dHJhY3QgdGhlIHR5cGUgcmVwcmVzZW50YXRpb24gKGFuIGZtdHR5KSBvZiBhIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG5cbiAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludDMyX3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IE5hdGl2ZWludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChOYXRpdmVpbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50NjQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50NjRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoRmxvYXRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG5cbiAgfCBDaGFyIHJlc3QgICAgICAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBCb29sIChwYWQsIHJlc3QpICAgICAgICAgICAtPlxuICAgICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKEJvb2xfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAtPiBBbHBoYV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgVGhldGEgcmVzdCAgICAgICAgICAgICAgICAgLT4gVGhldGFfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpICAgIC0+IGZtdHR5X29mX2N1c3RvbSBhcml0eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgUmVhZGVyIHJlc3QgICAgICAgICAgICAgICAgLT4gUmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHksIHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT4gU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPiBJbnRfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgIC0+IGZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0XG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgIC0+XG4gICAgY29uY2F0X2ZtdHR5IChmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbiBmbXRpbmdfZ2VuKSAoZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0ICAgICAgICAgICAgICAtPiBFbmRfb2ZfZm10dHlcblxuYW5kIGZtdHR5X29mX2N1c3RvbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgKHksIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBhcml0eSBmbXR0eSAtPiBtYXRjaCBhcml0eSB3aXRoXG4gIHwgQ3VzdG9tX3plcm8gLT4gZm10dHlcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPiBBbnlfdHkgKGZtdHR5X29mX2N1c3RvbSBhcml0eSBmbXR0eSlcblxuKCogRXh0cmFjdCB0aGUgZm10dHkgb2YgYW4gaWdub3JlZCBwYXJhbWV0ZXIgZm9sbG93ZWQgYnkgdGhlIHJlc3Qgb2ZcbiAgIHRoZSBmb3JtYXQuICopXG5hbmQgZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiBjb25jYXRfZm10dHkgZm10dHkgKGZtdHR5X29mX2ZtdCBmbXQpXG4gIHwgSWdub3JlZF9yZWFkZXIgICAgICAgICAgICAgICAgICAtPiBJZ25vcmVkX3JlYWRlcl90eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHBhZGRpbmcgaXMgdGFrZW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqc1wiKS4gKilcbmFuZCBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcGFkZGluZyAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3BhZGRpbmcgXyAtPiBmbXR0eVxuICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBJbnRfdHkgZm10dHlcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHByZWNpc2lvbiBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKS4qKVxuYW5kIGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSA6IHR5cGUgeCBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIGEpIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHByZWMgZm10dHkgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgfCBOb19wcmVjaXNpb24gICAgLT4gZm10dHlcbiAgICB8IExpdF9wcmVjaXNpb24gXyAtPiBmbXR0eVxuICAgIHwgQXJnX3ByZWNpc2lvbiAgIC0+IEludF90eSBmbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBpbmcgKilcblxuKCogRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgZm9ybWF0IGRvZXMgbm90IG1hdGNoIGEgZ2l2ZW4gZm9ybWF0IHR5cGUuICopXG5leGNlcHRpb24gVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgcGFkZGluZy4gKilcbigqIFRha2UgYW4gSW50X3R5IGZyb20gdGhlIGZtdHR5IGlmIHRoZSBpbnRlZ2VyIHNob3VsZCBiZSBrZXB0IGFzIGFyZ3VtZW50LiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRkaW5nIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZGRpbmdfZm10dHlfZWJiID1cbmZ1biBwYWQgZm10dHkgLT4gbWF0Y2ggcGFkLCBmbXR0eSB3aXRoXG4gIHwgTm9fcGFkZGluZywgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTm9fcGFkZGluZywgZm10dHkpXG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTGl0X3BhZGRpbmcgKHBhZHR5LHcpLGZtdHR5KVxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBJbnRfdHkgcmVzdCAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoQXJnX3BhZGRpbmcgcGFkdHkscmVzdClcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogQ29udmVydCBhICh1cGFkZGluZywgdXByZWNpc2lvbikgdG8gYSAocGFkZGluZywgcHJlY2lzaW9uKS4gKilcbigqIFRha2Ugb25lIG9yIHR3byBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgbmVlZGVkLiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRwcmVjIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgeiAuXG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6KSBwcmVjaXNpb24gLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZHByZWNfZm10dHlfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjLCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgfCBOb19wcmVjaXNpb24sIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgTm9fcHJlY2lzaW9uLCByZXN0KVxuICB8IExpdF9wcmVjaXNpb24gcCwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBMaXRfcHJlY2lzaW9uIHAsIHJlc3QpXG4gIHwgQXJnX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgSW50X3R5IHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgQXJnX3ByZWNpc2lvbiwgcmVzdClcbiAgfCBfLCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIElmIHR5cGluZyBzdWNjZWVkLCBnZW5lcmF0ZSBhIGNvcHkgb2YgdGhlIGZvcm1hdCB3aXRoIHRoZSBzYW1lXG4gICAgdHlwZSBwYXJhbWV0ZXJzIGFzIHRoZSBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHJlYyB0eXBlX2Zvcm1hdCA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT4gbWF0Y2ggdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSB3aXRoXG4gIHwgRm10X2ZtdHR5X0VCQiAoZm10JywgRW5kX29mX2ZtdHR5KSAtPiBmbXQnXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbmFuZCB0eXBlX2Zvcm1hdF9nZW4gOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjIgIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdF9mbXR0eV9lYmJcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCBmbXQsIGZtdHR5IHdpdGhcbiAgfCBDaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhciBmbXQnLCBmbXR0eScpXG4gIHwgQ2FtbF9jaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9jaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBTdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoU3RyaW5nIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQzMl90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBOYXRpdmVpbnRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50NjRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBGbG9hdF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQm9vbCAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgQm9vbF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQm9vbCAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsdXNoIGZtdF9yZXN0LCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZsdXNoIGZtdCcsIGZtdHR5JylcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTdHJpbmdfbGl0ZXJhbCAoc3RyLCBmbXQnKSwgZm10dHknKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhcl9saXRlcmFsIChjaHIsIGZtdCcpLCBmbXR0eScpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiBzdWJfZm10dHkgPD4gRm10dHlfRUJCIHN1Yl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHknLCBmbXQnKSwgZm10dHknKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5LCBmbXRfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWJfZm10dHkxLCBfc3ViX2ZtdHR5MiwgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eTEpIHRoZW5cbiAgICAgIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPVxuICAgICAgdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IChlcmFzZV9yZWwgZm10dHlfcmVzdClcbiAgICBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5MSwgZm10JyksIGZtdHR5JylcbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEFscGhhIGZtdF9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEFscGhhIGZtdCcsIGZtdHR5JylcbiAgfCBUaGV0YSBmbXRfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChUaGV0YSBmbXQnLCBmbXR0eScpXG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmdfZ2VuLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICB0eXBlX2Zvcm1hdHRpbmdfZ2VuIGZvcm1hdHRpbmdfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3RcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIGZtdF9yZXN0LCBSZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChSZWFkZXIgZm10JywgZm10dHknKVxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdF9yZXN0KSwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10JyksIGZtdHR5JylcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCksIEludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCcpLCBmbXR0eScpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfaWdub3JlZF9wYXJhbSBpZ24gcmVzdCBmbXR0eV9yZXN0XG5cbiAgfCBFbmRfb2ZfZm9ybWF0LCBmbXR0eV9yZXN0IC0+IEZtdF9mbXR0eV9FQkIgKEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QpXG5cbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGExIGEzIGIxIGIzIGMxIGMzIGQxIGQzIGUxIGUyIGUzIGYxIGYyIGYzIC5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm9ybWF0dGluZ19nZW4gLT5cbiAgICAoZjEsIGIxLCBjMSwgZTEsIGUyLCBmMikgZm10IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGZvcm1hdHRpbmdfZ2VuIGZtdDAgZm10dHkwIC0+IG1hdGNoIGZvcm1hdHRpbmdfZ2VuIHdpdGhcbiAgfCBPcGVuX3RhZyAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG4gIHwgT3Blbl9ib3ggKEZvcm1hdCAoZm10MSwgc3RyKSkgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MiwgZm10dHkyKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQxIGZtdHR5MCBpblxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQzLCBmbXR0eTMpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDAgZm10dHkyIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdDIsIHN0cikpLCBmbXQzKSwgZm10dHkzKVxuXG4oKiBUeXBlIGFuIElnbm9yZWRfcGFyYW0gbm9kZSBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtIDogdHlwZSBwIHEgeCB5IHogdCB1IHYgYSBiIGMgZCBlIGYgLlxuICAgICh4LCB5LCB6LCB0LCBxLCBwKSBpZ25vcmVkIC0+XG4gICAgKHAsIHksIHosIHEsIHUsIHYpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXRfZm10dHlfZWJiID1cbmZ1biBpZ24gZm10IGZtdHR5IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQgXyAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQzMiBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgXyAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQ2NCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mbG9hdCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSAoSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpKSBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5KSAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHknLCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHkgZm10IGZtdHR5IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCcpLFxuICAgICAgICAgICAgICAgICAgIGZtdHR5JylcbiAgfCBJZ25vcmVkX3JlYWRlciAtPiAoXG4gICAgbWF0Y2ggZm10dHkgd2l0aFxuICAgIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXQnKSwgZm10dHknKVxuICAgIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcblxuYW5kIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgOiB0eXBlIGExIGEyIGIxIGIyIGMxIGMyIGQxIGQyIGUxIGUyIGYxIGYyIC5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGQyLCBhMikgaWdub3JlZCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXQgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHkgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gaWduIGZtdCBmbXR0eSAtPlxuICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkgaW5cbiAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoaWduLCBmbXQnKSwgZm10dHknKVxuXG4oKiBUeXBpbmcgb2YgdGhlIGNvbXBsZXggY2FzZTogXCIlXyguLi4lKVwiLiAqKVxuYW5kIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIDogdHlwZSB3IHggeSB6IHAgcyB0IHUgYSBiIGMgZCBlIGYgLlxuICAgICh3LCB4LCB5LCB6LCBzLCBwKSBmbXR0eSAtPlxuICAgIChwLCB4LCB5LCBzLCB0LCB1KSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5X2ZtdF9lYmIgPVxuZnVuIHN1Yl9mbXR0eSBmbXQgZm10dHkgLT4gbWF0Y2ggc3ViX2ZtdHR5LCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSBzdWJfZm10dHlfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QsIFN0cmluZ190eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludF90eSBzdWJfZm10dHlfcmVzdCwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDMyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDMyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnQ2NF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnQ2NF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEZsb2F0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZsb2F0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBCb29sX3R5IHN1Yl9mbXR0eV9yZXN0LCBCb29sX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChBbHBoYV90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIFRoZXRhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFRoZXRhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0LCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJZ25vcmVkX3JlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5LCBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1YjJfZm10dHkgPD4gRm10dHlfRUJCIHN1YjJfZm10dHknIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHknLCBzdWJfZm10dHlfcmVzdCcpLCBmbXQnKVxuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eSwgIHN1YjJfZm10dHksICBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgKCogVE9ETyBkZWZpbmUgRm10dHlfcmVsX0VCQiB0byByZW1vdmUgdGhvc2UgZXJhc2VfcmVsICopXG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHknKVxuICAgIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgc3ViX2ZtdHR5JyA9IHRyYW5zIChzeW1tIHN1YjFfZm10dHknKSBzdWIyX2ZtdHR5JyBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHN1Yl9mbXR0eScgaW5cbiAgICBsZXQgUmVmbCA9IGYyIFJlZmwgaW5cbiAgICBsZXQgUmVmbCA9IGY0IFJlZmwgaW5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiAoZXJhc2VfcmVsIHN1Yl9mbXR0eV9yZXN0KSBmbXQgZm10dHlfcmVzdFxuICAgIGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1tIHN1Yl9mbXR0eV9yZXN0JyksXG4gICAgICAgICAgICAgICAgICAgZm10JylcbiAgfCBFbmRfb2ZfZm10dHksIGZtdHR5IC0+XG4gICAgRm10dHlfZm10X0VCQiAoRW5kX29mX2ZtdHR5LCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGByZWNhc3RgIGlzIGEgYml0IGRpc2FwcG9pbnRpbmcuIFRoZVxuICAgaW52YXJpYW50IHByb3ZpZGVkIGJ5IHRoZSB0eXBlIGFyZSB2ZXJ5IHN0cm9uZzogdGhlIGlucHV0IGZvcm1hdCdzXG4gICB0eXBlIGlzIGluIHJlbGF0aW9uIHRvIHRoZSBvdXRwdXQgdHlwZSdzIGFzIHdpdG5lc3NlZCBieSB0aGVcbiAgIGZtdHR5X3JlbCBhcmd1bWVudC4gT25lIHdvdWxkIGF0IGZpcnN0IGV4cGVjdCB0aGlzIGZ1bmN0aW9uIHRvIGJlXG4gICB0b3RhbCwgYW5kIGltcGxlbWVudGFibGUgYnkgZXhoYXVzdGl2ZSBwYXR0ZXJuIG1hdGNoaW5nLiBJbnN0ZWFkLFxuICAgd2UgcmV1c2UgdGhlIGhpZ2hseSBwYXJ0aWFsIGFuZCBtdWNoIGxlc3Mgd2VsbC1kZWZpbmVkIGZ1bmN0aW9uXG4gICBgdHlwZV9mb3JtYXRgIHRoYXQgaGFzIGxvc3QgYWxsIGtub3dsZWRnZSBvZiB0aGUgY29ycmVzcG9uZGVuY2VcbiAgIGJldHdlZW4gdGhlIGFyZ3VtZW50J3MgdHlwZXMuXG5cbiAgIEJlc2lkZXMgdGhlIGZhY3QgdGhhdCB0aGlzIGZ1bmN0aW9uIHJldXNlcyBhIGxvdCBvZiB0aGVcbiAgIGB0eXBlX2Zvcm1hdGAgbG9naWMgKGVnLjogc2VlaW5nIEludF90eSBpbiB0aGUgZm10dHkgcGFyYW1ldGVyIGRvZXNcbiAgIG5vdCBsZXQgeW91IG1hdGNoIG9uIEludCBvbmx5LCBhcyB5b3UgbWF5IGluIGZhY3QgaGF2ZSBGbG9hdFxuICAgKEFyZ19wYWRkaW5nLCAuLi4pIChcIiUuKmRcIikgYmVnaW5uaW5nIHdpdGggYW4gSW50X3R5KSwgaXQgaXMgYWxzb1xuICAgYSBwYXJ0aWFsIGZ1bmN0aW9uLCBiZWNhdXNlIHRoZSB0eXBpbmcgaW5mb3JtYXRpb24gaW4gYSBmb3JtYXQgaXNcbiAgIG5vdCBxdWl0ZSBlbm91Z2ggdG8gcmVjb25zdHJ1Y3QgaXQgdW5hbWJpZ3VvdXNseS4gRm9yIGV4YW1wbGUsIHRoZVxuICAgZm9ybWF0IHR5cGVzIG9mIFwiJWQlX3JcIiBhbmQgXCIlX3IlZFwiIGhhdmUgdGhlIHNhbWUgZm9ybWF0NlxuICAgcGFyYW1ldGVycywgYnV0IHRoZXkgYXJlIG5vdCBhdCBhbGwgZXhjaGFuZ2VhYmxlLCBhbmQgcHV0dGluZyBvbmVcbiAgIGluIHBsYWNlIG9mIHRoZSBvdGhlciBtdXN0IHJlc3VsdCBpbiBhIGR5bmFtaWMgZmFpbHVyZS5cblxuICAgR2l2ZW4gdGhhdDpcbiAgIC0gd2UnZCBoYXZlIHRvIGR1cGxpY2F0ZSBhIGxvdCBvZiBub24tdHJpdmlhbCB0eXBpbmcgbG9naWMgZnJvbSB0eXBlX2Zvcm1hdFxuICAgLSB0aGlzIHdvdWxkbid0IGV2ZW4gZWxpbWluYXRlIChhbGwpIHRoZSBkeW5hbWljIGZhaWx1cmVzXG4gICB3ZSBkZWNpZGVkIHRvIGp1c3QgcmV1c2UgdHlwZV9mb3JtYXQgZGlyZWN0bHkgZm9yIG5vdy5cbiopXG5sZXQgcmVjYXN0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT5cbiAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQcmludGluZyB0b29scyAqKVxuXG4oKiBBZGQgcGFkZGluZyBzcGFjZXMgYXJvdW5kIGEgc3RyaW5nLiAqKVxubGV0IGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGgsIHBhZHR5ID1cbiAgICBhYnMgd2lkdGgsXG4gICAgKCogd2hpbGUgbGl0ZXJhbCBwYWRkaW5nIHdpZHRocyBhcmUgYWx3YXlzIG5vbi1uZWdhdGl2ZSxcbiAgICAgICBkeW5hbWljYWxseS1zZXQgd2lkdGhzIChBcmdfcGFkZGluZywgZWcuICUqZCkgbWF5IGJlIG5lZ2F0aXZlO1xuICAgICAgIHdlIGludGVycHJldCB0aG9zZSBhcyBzcGVjaWZ5aW5nIGEgcGFkZGluZy10by10aGUtbGVmdDsgdGhpc1xuICAgICAgIG1lYW5zIHRoYXQgJzAnIG1heSBnZXQgZHJvcHBlZCBldmVuIGlmIGl0IHdhcyBleHBsaWNpdGx5IHNldCxcbiAgICAgICBidXQ6XG4gICAgICAgLSB0aGlzIGlzIHdoYXQgdGhlIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkb2VzLCBhbmRcbiAgICAgICAgIHdlIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgaWYgcG9zc2libGVcbiAgICAgICAtIHdlIGNvdWxkIG9ubHkgc2lnbmFsIHRoaXMgaXNzdWUgYnkgZmFpbGluZyBhdCBydW50aW1lLFxuICAgICAgICAgd2hpY2ggaXMgbm90IHZlcnkgbmljZS4uLiAqKVxuICAgIGlmIHdpZHRoIDwgMCB0aGVuIExlZnQgZWxzZSBwYWR0eSBpblxuICBpZiB3aWR0aCA8PSBsZW4gdGhlbiBzdHIgZWxzZVxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIHdpZHRoIChpZiBwYWR0eSA9IFplcm9zIHRoZW4gJzAnIGVsc2UgJyAnKSBpblxuICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICB8IExlZnQgIC0+IFN0cmluZy5ibGl0IHN0ciAwIHJlcyAwIGxlblxuICAgIHwgUmlnaHQgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDAgJiYgKHN0ci5bMF0gPSAnKycgfHwgc3RyLlswXSA9ICctJyB8fCBzdHIuWzBdID0gJyAnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAwIHN0ci5bMF07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHdpZHRoIC0gbGVuICsgMSkgKGxlbiAtIDEpXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDEgJiYgc3RyLlswXSA9ICcwJyAmJiAoc3RyLlsxXSA9ICd4JyB8fCBzdHIuWzFdID0gJ1gnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAxIHN0ci5bMV07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHdpZHRoIC0gbGVuICsgMikgKGxlbiAtIDIpXG4gICAgfCBaZXJvcyAtPlxuICAgICAgU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgZW5kO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIEFkZCAnMCcgcGFkZGluZyB0byBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiAqKVxubGV0IGZpeF9pbnRfcHJlY2lzaW9uIHByZWMgc3RyID1cbiAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbWF0Y2ggc3RyLlswXSB3aXRoXG4gIHwgKCcrJyB8ICctJyB8ICcgJykgYXMgYyB3aGVuIHByZWMgKyAxID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAxKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDAgYztcbiAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHByZWMgLSBsZW4gKyAyKSAobGVuIC0gMSk7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgd2hlbiBwcmVjICsgMiA+IGxlbiAmJiBsZW4gPiAxICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAyKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHByZWMgLSBsZW4gKyA0KSAobGVuIC0gMik7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgd2hlbiBwcmVjID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgcHJlYyAnMCcgaW5cbiAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHByZWMgLSBsZW4pIGxlbjtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8IF8gLT5cbiAgICBzdHJcblxuKCogRXNjYXBlIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aW5nIGNvbnZlbnRpb24uICopXG5sZXQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nIHN0ciA9XG4gIGxldCBzdHIgPSBTdHJpbmcuZXNjYXBlZCBzdHIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVzID0gQnl0ZXMubWFrZSAobCArIDIpICdcXFwiJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9pbnQvaW50MzIvbmF0aXZlaW50L2ludDY0IGZpcnN0IGFyZ3VtZW50XG4gICBmcm9tIGFuIGludF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9pY29udiA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlZFwiIHwgSW50X3BkIC0+IFwiJStkXCIgfCBJbnRfc2QgLT4gXCIlIGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWlcIiB8IEludF9waSAtPiBcIiUraVwiIHwgSW50X3NpIC0+IFwiJSBpXCJcbiAgfCBJbnRfeCAtPiBcIiV4XCIgfCBJbnRfQ3ggLT4gXCIlI3hcIlxuICB8IEludF9YIC0+IFwiJVhcIiB8IEludF9DWCAtPiBcIiUjWFwiXG4gIHwgSW50X28gLT4gXCIlb1wiIHwgSW50X0NvIC0+IFwiJSNvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiV1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udkwgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJUxkXCIgfCBJbnRfcGQgLT4gXCIlK0xkXCIgfCBJbnRfc2QgLT4gXCIlIExkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVMaVwiIHwgSW50X3BpIC0+IFwiJStMaVwiIHwgSW50X3NpIC0+IFwiJSBMaVwiXG4gIHwgSW50X3ggLT4gXCIlTHhcIiB8IEludF9DeCAtPiBcIiUjTHhcIlxuICB8IEludF9YIC0+IFwiJUxYXCIgfCBJbnRfQ1ggLT4gXCIlI0xYXCJcbiAgfCBJbnRfbyAtPiBcIiVMb1wiIHwgSW50X0NvIC0+IFwiJSNMb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlTHVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252bCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlbGRcIiB8IEludF9wZCAtPiBcIiUrbGRcIiB8IEludF9zZCAtPiBcIiUgbGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWxpXCIgfCBJbnRfcGkgLT4gXCIlK2xpXCIgfCBJbnRfc2kgLT4gXCIlIGxpXCJcbiAgfCBJbnRfeCAtPiBcIiVseFwiIHwgSW50X0N4IC0+IFwiJSNseFwiXG4gIHwgSW50X1ggLT4gXCIlbFhcIiB8IEludF9DWCAtPiBcIiUjbFhcIlxuICB8IEludF9vIC0+IFwiJWxvXCIgfCBJbnRfQ28gLT4gXCIlI2xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVsdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZuID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVuZFwiIHwgSW50X3BkIC0+IFwiJStuZFwiIHwgSW50X3NkIC0+IFwiJSBuZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbmlcIiB8IEludF9waSAtPiBcIiUrbmlcIiB8IEludF9zaSAtPiBcIiUgbmlcIlxuICB8IEludF94IC0+IFwiJW54XCIgfCBJbnRfQ3ggLT4gXCIlI254XCJcbiAgfCBJbnRfWCAtPiBcIiVuWFwiIHwgSW50X0NYIC0+IFwiJSNuWFwiXG4gIHwgSW50X28gLT4gXCIlbm9cIiB8IEludF9DbyAtPiBcIiUjbm9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJW51XCJcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9mbG9hdCBmaXJzdCBhcmd1bWVudCBmcm9tIGEgZmxvYXRfY29udi4gKilcbmxldCBmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYyA9XG4gICAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICAgIGxldCBzeW1iID0gY2hhcl9vZl9mY29udiB+Y0Y6J2cnIGZjb252IGluXG4gICAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLic7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIHByZWMpO1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgc3ltYjtcbiAgICBidWZmZXJfY29udGVudHMgYnVmXG5cbmxldCB0cmFuc2Zvcm1faW50X2FsdCBpY29udiBzID1cbiAgbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgIGxldCBkaWdpdHMgPVxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgfCAnMCcuLic5JyAtPiBpbmNyIG5cbiAgICAgICAgfCBfIC0+ICgpXG4gICAgICBkb25lO1xuICAgICAgIW5cbiAgICBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyArIChkaWdpdHMgLSAxKSAvIDMpIGluXG4gICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgbGV0IHB1dCBjID0gQnl0ZXMuc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zIGluXG4gICAgbGV0IGxlZnQgPSByZWYgKChkaWdpdHMgLSAxKSBtb2QgMyArIDEpIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICcwJy4uJzknIGFzIGMgLT5cbiAgICAgICAgICBpZiAhbGVmdCA9IDAgdGhlbiAocHV0ICdfJzsgbGVmdCA6PSAzKTsgZGVjciBsZWZ0OyBwdXQgY1xuICAgICAgfCBjIC0+IHB1dCBjXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICB8IF8gLT4gc1xuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIGEgY29udmVyc2lvbi4gKilcbmxldCBjb252ZXJ0X2ludCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQgKGZvcm1hdF9vZl9pY29udiBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDMyIGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDMyIChmb3JtYXRfb2ZfaWNvbnZsIGljb252KSBuKVxubGV0IGNvbnZlcnRfbmF0aXZlaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X25hdGl2ZWludCAoZm9ybWF0X29mX2ljb252biBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDY0IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDY0IChmb3JtYXRfb2ZfaWNvbnZMIGljb252KSBuKVxuXG4oKiBDb252ZXJ0IGEgZmxvYXQgdG8gc3RyaW5nLiAqKVxuKCogRml4IHNwZWNpYWwgY2FzZSBvZiBcIk9DYW1sIGZsb2F0IGZvcm1hdFwiLiAqKVxubGV0IGNvbnZlcnRfZmxvYXQgZmNvbnYgcHJlYyB4ID1cbiAgbGV0IGhleCAoKSA9XG4gICAgbGV0IHNpZ24gPVxuICAgICAgbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgICAgIHwgRmxvYXRfZmxhZ19wIC0+ICcrJ1xuICAgICAgfCBGbG9hdF9mbGFnX3MgLT4gJyAnXG4gICAgICB8IF8gLT4gJy0nIGluXG4gICAgaGV4c3RyaW5nX29mX2Zsb2F0IHggcHJlYyBzaWduIGluXG4gIGxldCBhZGRfZG90X2lmX25lZWRlZCBzdHIgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCByZWMgaXNfdmFsaWQgaSA9XG4gICAgICBpZiBpID0gbGVuIHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnLicgfCAnZScgfCAnRScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gaXNfdmFsaWQgKGkgKyAxKSBpblxuICAgIGlmIGlzX3ZhbGlkIDAgdGhlbiBzdHIgZWxzZSBzdHIgXiBcIi5cIiBpblxuICBsZXQgY2FtbF9zcGVjaWFsX3ZhbCBzdHIgPSBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX3plcm8gLT4gc3RyXG4gICAgfCBGUF9pbmZpbml0ZSAtPiBpZiB4IDwgMC4wIHRoZW4gXCJuZWdfaW5maW5pdHlcIiBlbHNlIFwiaW5maW5pdHlcIlxuICAgIHwgRlBfbmFuIC0+IFwibmFuXCIgaW5cbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9oIC0+IGhleCAoKVxuICB8IEZsb2F0X0ggLT4gU3RyaW5nLnVwcGVyY2FzZV9hc2NpaSAoaGV4ICgpKVxuICB8IEZsb2F0X0NGIC0+IGNhbWxfc3BlY2lhbF92YWwgKGhleCAoKSlcbiAgfCBGbG9hdF9GIC0+XG4gICAgbGV0IHN0ciA9IGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHggaW5cbiAgICBjYW1sX3NwZWNpYWxfdmFsIChhZGRfZG90X2lmX25lZWRlZCBzdHIpXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgLT5cbiAgICBmb3JtYXRfZmxvYXQgKGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjKSB4XG5cbigqIENvbnZlcnQgYSBjaGFyIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGZvcm1hdF9jYW1sX2NoYXIgYyA9XG4gIGxldCBzdHIgPSBDaGFyLmVzY2FwZWQgYyBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcJycgaW5cbiAgU3RyaW5nLnVuc2FmZV9ibGl0IHN0ciAwIHJlcyAxIGw7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdHlwZSB0byBzdHJpbmcgKilcbmxldCBzdHJpbmdfb2ZfZm10dHkgZm10dHkgPVxuICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICBicHJpbnRfZm10dHkgYnVmIGZtdHR5O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBHZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uICopXG5cbigqIE1ha2UgYSBnZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uLiAqKVxuKCogVXNlZCB0byBnZW5lcmF0ZSBQcmludGYgYW5kIEZvcm1hdCBwcmludGluZyBmdW5jdGlvbnMuICopXG4oKiBQYXJhbWV0ZXJzOlxuICAgICBrOiBhIGNvbnRpbnVhdGlvbiBmaW5hbGx5IGFwcGxpZWQgdG8gdGhlIG91dHB1dCBzdHJlYW0gYW5kIHRoZSBhY2N1bXVsYXRvci5cbiAgICAgbzogdGhlIG91dHB1dCBzdHJlYW0gKHNlZSBrLCAlYSBhbmQgJXQpLlxuICAgICBhY2M6IHJldiBsaXN0IG9mIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXNoLCBmb3JtYXR0aW5nLCAuLi4pLlxuICAgICBmbXQ6IHRoZSBmb3JtYXQuICopXG5sZXQgcmVjIG1ha2VfcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfY2hhciAoYWNjLCBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmb3JtYXRfY2FtbF9jaGFyIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCAoZnVuIHN0ciAtPiBzdHIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQgaWNvbnZcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50MzIgaWNvbnZcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X25hdGl2ZWludCBpY29udlxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQ2NCBpY29udlxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfZmxvYXRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBmY29udlxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX29mX2Jvb2xcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgZnVuIGYgeCAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGVsYXkgKGFjYywgZnVuIG8gLT4gZiBvIHgpKSByZXN0XG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIGZ1biBmIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgbWFrZV9jdXN0b20gayBhY2MgcmVzdCBhcml0eSAoZiAoKSlcbiAgfCBSZWFkZXIgXyAtPlxuICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gKilcbiAgICAoKiBJbmRlZWQsIHNpbmNlIHByaW50ZiBhbmQgY28uIHRha2UgYSBmb3JtYXQ0IGFzIGFyZ3VtZW50LCB0aGUgJ2QgYW5kICdlXG4gICAgICAgdHlwZSBwYXJhbWV0ZXJzIG9mIGZtdCBhcmUgb2J2aW91c2x5IGVxdWFscy4gVGhlIFJlYWRlciBpcyB0aGVcbiAgICAgICBvbmx5IGNvbnN0cnVjdG9yIHdoaWNoIHRvdWNoICdkIGFuZCAnZSB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIGZvcm1hdFxuICAgICAgIHR5cGUsIGl0IGFkZHMgYW4gKC0+KSB0byB0aGUgJ2QgcGFyYW1ldGVycy4gQ29uc2VxdWVudGx5LCBhIGZvcm1hdDRcbiAgICAgICBjYW5ub3QgY29udGFpbiBhIFJlYWRlciBub2RlLCBleGNlcHQgaW4gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0b1xuICAgICAgIGFuICV7Li4uJX0uIEl0J3Mgbm90IGEgcHJvYmxlbSBiZWNhdXNlIG1ha2VfcHJpbnRmIGRvIG5vdCBjYWxsXG4gICAgICAgaXRzZWxmIHJlY3Vyc2l2ZWx5IG9uIHRoZSBzdWItZm9ybWF0IGFzc29jaWF0ZWQgdG8gJXsuLi4lfS4gKilcbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2ZsdXNoIGFjYykgcmVzdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2Nfc3RyaW5nX2xpdGVyYWwgKGFjYywgc3RyKSkgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19jaGFyX2xpdGVyYWwgKGFjYywgY2hyKSkgcmVzdFxuXG4gIHwgRm9ybWF0X2FyZyAoXywgc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHN0cmluZ19vZl9mbXR0eSBzdWJfZm10dHkgaW5cbiAgICAoZnVuIHN0ciAtPlxuICAgICAgaWdub3JlIHN0cjtcbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCB0eSkpIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT4gbWFrZV9wcmludGYgayBhY2NcbiAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICBsZXQgbmV3X2FjYyA9IEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJVtcIikgaW5cbiAgICBmdW4gXyAtPiBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgKCogVGhpcyBjYXNlIHNob3VsZCBiZSByZWZ1c2VkIGZvciBQcmludGYuICopXG4gICAgKCogQWNjZXB0ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICopXG4gICAgKCogSW50ZXJwcmV0ICVsLCAlbiBhbmQgJUwgYXMgJXUuICopXG4gICAgZnVuIG4gLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9pbnQgXCIldVwiIG4pIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBtYWtlX2lnbm9yZWRfcGFyYW0gayBhY2MgaWduIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2xpdCAoYWNjLCBmbXRpbmdfbGl0KSkgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX3RhZyBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX2JveCBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGsgYWNjXG5cbigqIERlbGF5IHRoZSBlcnJvciAoSW52YWxpZF9hcmd1bWVudCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikuICopXG4oKiBHZW5lcmF0ZSBmdW5jdGlvbnMgdG8gdGFrZSByZW1haW5pbmcgYXJndW1lbnRzIChhZnRlciB0aGUgXCIlX1wiKS4gKilcbmFuZCBtYWtlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuXG5cbigqIFNwZWNpYWwgY2FzZSBvZiBwcmludGYgXCIlXyhcIi4gKilcbmFuZCBtYWtlX2Zyb21fZm10dHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBmbXR0eSAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10dHkgZm10IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBCb29sX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFRoZXRhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFJlYWRlcl90eSBfICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8gICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEVuZF9vZl9mbXR0eSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyAoY29uY2F0X2ZtdHR5IHR5IHJlc3QpIGZtdFxuXG4oKiBJbnNlcnQgYW4gQWNjX2ludmFsaWRfYXJnIGluIHRoZSBhY2N1bXVsYXRvciBhbmQgY29udGludWUgdG8gZ2VuZXJhdGVcbiAgIGNsb3N1cmVzIHRvIGdldCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbmFuZCBtYWtlX2ludmFsaWRfYXJnIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+XG4gIG1ha2VfcHJpbnRmIGsgKEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikpIGZtdFxuXG4oKiBGaXggcGFkZGluZywgdGFrZSBpdCBhcyBhbiBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50IGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX3BhZGRpbmcgOiB0eXBlIHggeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeiAtPiBhKSBwYWRkaW5nIC0+ICh6IC0+IHN0cmluZykgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHRyYW5zIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCB0cmFucyB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoICh0cmFucyB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuXG4oKiBGaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGZvciBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQuICopXG4oKiBUYWtlIG9uZSBvciB0d28gZXh0cmEgaW50ZWdlciBhcmd1bWVudHMgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4gKGludF9jb252IC0+IHogLT4gc3RyaW5nKSAtPlxuICAgIGludF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIHRyYW5zIGljb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSB0cmFucyBpY29udiB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5cbigqIENvbnZlcnQgYSBmbG9hdCwgZml4IHBhZGRpbmcgYW5kIHByZWNpc2lvbiBpZiBuZWVkZWQuICopXG4oKiBUYWtlIHRoZSBmbG9hdCBhcmd1bWVudCBhbmQgb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCBmbG9hdCAtPiBhKSBwcmVjaXNpb24gLT4gZmxvYXRfY29udiAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgcHJlYyBmY29udiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuYW5kIG1ha2VfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB4IC0+IHkgPVxuICBmdW4gayBhY2MgcmVzdCBhcml0eSBmIC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgZikpIHJlc3RcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmIHgpXG5cbmxldCBjb25zdCB4IF8gPSB4XG5cbmxldCByZWMgbWFrZV9pcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+IHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG4gIGZ1biBrIG8gZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IENhbWxfc3RyaW5nIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9zdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgSW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQzMiAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEJvb2wgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQm9vbCAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9jdXN0b21fYXJpdHkgayBvIHJlc3QgYXJpdHlcbiAgICB8IFJlYWRlciBfIC0+XG4gICAgICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gIFNlZSB0aGVcbiAgICAgICAgICAgbm90ZSBpbiB0aGUgY29ycmVzcG9uZGluZyBjYXNlIGZvciBtYWtlX3ByaW50Zi4gKilcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgICAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT5cbiAgICAgICAgICBtYWtlX2lwcmludGYgayBvXG4gICAgICAgICAgICAoY29uY2F0X2ZtdCAocmVjYXN0IGZtdCBmbXR0eSkgcmVzdClcbiAgICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lnbm9yZWRfcGFyYW0gKGZ1biBfIC0+IGsgbykgKEVuZF9vZl9hY2MpIGlnbiByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIChmdW4ga29jIC0+IG1ha2VfaXByaW50ZiBrIGtvYyByZXN0KSBvIGZtdCdcbiAgICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICAgICAgayBvXG5hbmQgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gOlxuICB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4geCA9XG4gIGZ1biBrIG8gZm10IHBhZCBwcmVjIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IE5vX3BhZGRpbmcgICAsIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IExpdF9wYWRkaW5nIF8sIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTGl0X3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSkpXG5hbmQgZm5fb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPlxuICBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4geSA9XG4gIGZ1biBrIG8gZm10IC0+IGZ1bmN0aW9uXG4gICAgfCBDdXN0b21femVybyAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIGZtdFxuICAgIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT5cbiAgICAgICAgY29uc3QgKGZuX29mX2N1c3RvbV9hcml0eSBrIG8gZm10IGFyaXR5KVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBDb250aW51YXRpb25zIGZvciBtYWtlX3ByaW50ZiAqKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIG8gYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAe1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAW1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfY2hhciBvIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IGYgb1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZmx1c2ggb1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIG8gcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgYnVmcHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgYnVmcHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IGYgYlxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gYnVmcHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIGJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mICVhIGFuZCAldC4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgYiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQHtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkBbXCI7IHN0cnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIChmICgpKVxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXJyb3IgbWFuYWdlbWVudCAqKVxuXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIHByZXR0eS1wcmludGVkIGVycm9yIG1lc3NhZ2UuICopXG5sZXQgZmFpbHdpdGhfbWVzc2FnZSAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDI1NiBpblxuICBsZXQgayBhY2MgPSBzdHJwdXRfYWNjIGJ1ZiBhY2M7IGZhaWx3aXRoIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0dGluZyB0b29scyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGFuIG9wZW4gYmxvY2sgZGVzY3JpcHRpb24gKGluZGVudCwgYmxvY2tfdHlwZSkgKilcbmxldCBvcGVuX2JveF9vZl9zdHJpbmcgc3RyID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuICgwLCBQcF9ib3gpIGVsc2VcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgaW52YWxpZF9ib3ggKCkgPSBmYWlsd2l0aF9tZXNzYWdlIFwiaW52YWxpZCBib3ggZGVzY3JpcHRpb24gJVNcIiBzdHIgaW5cbiAgICBsZXQgcmVjIHBhcnNlX3NwYWNlcyBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBpIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgLT4gcGFyc2Vfc3BhY2VzIChpICsgMSlcbiAgICAgICAgfCBfIC0+IGlcbiAgICBhbmQgcGFyc2VfbHdvcmQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJ2EnIC4uICd6JyAtPiBwYXJzZV9sd29yZCBpIChqICsgMSlcbiAgICAgICAgfCBfIC0+IGpcbiAgICBhbmQgcGFyc2VfaW50IGkgaiA9XG4gICAgICBpZiBqID0gbGVuIHRoZW4gaiBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5bal0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gcGFyc2VfaW50IGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4gaiBpblxuICAgIGxldCB3c3RhcnQgPSBwYXJzZV9zcGFjZXMgMCBpblxuICAgIGxldCB3ZW5kID0gcGFyc2VfbHdvcmQgd3N0YXJ0IHdzdGFydCBpblxuICAgIGxldCBib3hfbmFtZSA9IFN0cmluZy5zdWIgc3RyIHdzdGFydCAod2VuZCAtIHdzdGFydCkgaW5cbiAgICBsZXQgbnN0YXJ0ID0gcGFyc2Vfc3BhY2VzIHdlbmQgaW5cbiAgICBsZXQgbmVuZCA9IHBhcnNlX2ludCBuc3RhcnQgbnN0YXJ0IGluXG4gICAgbGV0IGluZGVudCA9XG4gICAgICBpZiBuc3RhcnQgPSBuZW5kIHRoZW4gMCBlbHNlXG4gICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0ciBuc3RhcnQgKG5lbmQgLSBuc3RhcnQpKVxuICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIGxldCBleHBfZW5kID0gcGFyc2Vfc3BhY2VzIG5lbmQgaW5cbiAgICBpZiBleHBfZW5kIDw+IGxlbiB0aGVuIGludmFsaWRfYm94ICgpO1xuICAgIGxldCBib3hfdHlwZSA9IG1hdGNoIGJveF9uYW1lIHdpdGhcbiAgICAgIHwgXCJcIiB8IFwiYlwiIC0+IFBwX2JveFxuICAgICAgfCBcImhcIiAgICAgIC0+IFBwX2hib3hcbiAgICAgIHwgXCJ2XCIgICAgICAtPiBQcF92Ym94XG4gICAgICB8IFwiaHZcIiAgICAgLT4gUHBfaHZib3hcbiAgICAgIHwgXCJob3ZcIiAgICAtPiBQcF9ob3Zib3hcbiAgICAgIHwgXyAgICAgICAgLT4gaW52YWxpZF9ib3ggKCkgaW5cbiAgICAoaW5kZW50LCBib3hfdHlwZSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQYXJzaW5nIHRvb2xzICopXG5cbigqIENyZWF0ZSBhIHBhZGRpbmdfZm10X2ViYiBmcm9tIGEgcGFkZGluZyBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcGFkZGluZ19mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAgIChfLCBfLCBfLCBfLCBfKSBwYWRkaW5nX2ZtdF9lYmIgPVxuZnVuIHBhZCBmbXQgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChOb19wYWRkaW5nLCBmbXQpXG4gIHwgTGl0X3BhZGRpbmcgKHMsIHcpIC0+IFBhZGRpbmdfZm10X0VCQiAoTGl0X3BhZGRpbmcgKHMsIHcpLCBmbXQpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZGRpbmdfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgZm10KVxuXG4oKiBDcmVhdGUgYSBwcmVjaXNpb25fZm10X2ViYiBmcm9tIGEgcHJlY2lzaW9uIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnQgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwcmVjaXNpb24gLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHByZWNpc2lvbl9mbXRfZWJiID1cbmZ1biBwcmVjIGZtdCAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKE5vX3ByZWNpc2lvbiwgZm10KVxuICB8IExpdF9wcmVjaXNpb24gcCAtPiBQcmVjaXNpb25fZm10X0VCQiAoTGl0X3ByZWNpc2lvbiBwLCBmbXQpXG4gIHwgQXJnX3ByZWNpc2lvbiAgIC0+IFByZWNpc2lvbl9mbXRfRUJCIChBcmdfcHJlY2lzaW9uLCBmbXQpXG5cbigqIENyZWF0ZSBhIHBhZHByZWNfZm10X2ViYiBmcm9tIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcGFkZGluZyBhbmQgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudHNcbiAgIGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgOiB0eXBlIHggeSB6IHQgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT5cbiAgICAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgKF8sIF8sIF8sIF8sIF8pIHBhZHByZWNfZm10X2ViYiA9XG5mdW4gcGFkIHByZWMgZm10IC0+XG4gIGxldCBQcmVjaXNpb25fZm10X0VCQiAocHJlYywgZm10JykgPSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIHByZWMgZm10IGluXG4gIG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAgICAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoTm9fcGFkZGluZywgcHJlYywgZm10JylcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkcHJlY19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIHByZWMsIGZtdCcpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgcHJlYywgZm10JylcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHBhcnNpbmcgKilcblxuKCogUGFyc2UgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZm9ybWF0IGFuZCBjcmVhdGUgYSBmbXRfZWJiLiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIGluIGNhc2Ugb2YgaW52YWxpZCBmb3JtYXQuICopXG5sZXQgZm10X2ViYl9vZl9zdHJpbmcgP2xlZ2FjeV9iZWhhdmlvciBzdHIgPVxuICAoKiBQYXJhbWV0ZXJzIG5hbWluZyBjb252ZW50aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBsaXRfc3RhcnQ6IHN0YXJ0IG9mIHRoZSBsaXRlcmFsIHNlcXVlbmNlLiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN0cl9pbmQ6IGN1cnJlbnQgaW5kZXggaW4gdGhlIHN0cmluZy4gICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gZW5kX2luZDogZW5kIG9mIHRoZSBjdXJyZW50IChzdWItKWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwY3RfaW5kOiBpbmRleCBvZiB0aGUgJyUnIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgKilcbiAgKCogICAtIHplcm86ICBpcyB0aGUgJzAnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gbWludXM6IGlzIHRoZSAnLScgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBwbHVzOiAgaXMgdGhlICcrJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGhhc2g6ICBpcyB0aGUgJyMnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gc3BhY2U6IGlzIHRoZSAnICcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBpZ246ICAgaXMgdGhlICdfJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBhZDogcGFkZGluZyBvZiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gcHJlYzogcHJlY2lzaW9uIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBzeW1iOiBjaGFyIHJlcHJlc2VudGluZyB0aGUgY29udmVyc2lvbiAoJ2MnLCAncycsICdkJywgLi4uKS4gKilcbiAgKCogICAtIGNoYXJfc2V0OiBzZXQgb2YgY2hhcmFjdGVycyBhcyBiaXRtYXAgKHNlZSBzY2FuZiAlWy4uLl0pLiAgICAqKVxuXG4gIGxldCBsZWdhY3lfYmVoYXZpb3IgPSBtYXRjaCBsZWdhY3lfYmVoYXZpb3Igd2l0aFxuICAgIHwgU29tZSBmbGFnIC0+IGZsYWdcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAoKiAgV2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZCwgdGhlIGZvcm1hdCBwYXJzZXIgdHJpZXMgdG8gYmVoYXZlIGFzXG4gICAgICB0aGUgPDQuMDIgaW1wbGVtZW50YXRpb25zLCBpbiBwYXJ0aWN1bGFyIGl0IGlnbm9yZXMgbW9zdCBiZW5pZ25cbiAgICAgIG5vbnNlbnNpY2FsIGZvcm1hdHMuIFdoZW4gdGhlIGZsYWcgaXMgZGlzYWJsZWQsIGl0IHdpbGwgcmVqZWN0IGFueVxuICAgICAgZm9ybWF0IHRoYXQgaXMgbm90IGFjY2VwdGVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLlxuXG4gICAgICBBIHR5cGljYWwgZXhhbXBsZSB3b3VsZCBiZSBcIiUrIGRcIjogc3BlY2lmeWluZyBib3RoICcrJyAoaWYgdGhlXG4gICAgICBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoIGEgJysnIHRvIGdldCB0aGUgc2FtZSB3aWR0aCBhc1xuICAgICAgbmVnYXRpdmUgbnVtYmVycykgYW5kICcgJyAoaWYgdGhlIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGhcbiAgICAgIGEgc3BhY2UpIGRvZXMgbm90IG1ha2Ugc2Vuc2UsIGJ1dCB0aGUgbGVnYWN5ICg8IDQuMDIpXG4gICAgICBpbXBsZW1lbnRhdGlvbiB3YXMgaGFwcHkgdG8ganVzdCBpZ25vcmUgdGhlIHNwYWNlLlxuICAqKVxuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZCBtc2cgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIG1zZ1xuICBpblxuXG4gICgqIFVzZWQgd2hlbiB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgKG9yIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXQpIHdhcyBlbmNvdW50ZXJlZFxuICAgICAgdW5leHBlY3RlZGx5LiAqKVxuICBsZXQgdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UgZW5kX2luZFxuICAgICAgXCJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXRcIlxuICBpblxuXG4gICgqIFVzZWQgZm9yICUwYzogbm8gb3RoZXIgd2lkdGhzIGFyZSBpbXBsZW1lbnRlZCAqKVxuICBsZXQgaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kXG4gICAgICBcIm5vbi16ZXJvIHdpZHRocyBhcmUgdW5zdXBwb3J0ZWQgZm9yICVjIGNvbnZlcnNpb25zXCJcbiAgaW5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIG9wdGlvbiBkZXBlbmRlbmN5XG4gICAgIHByb2JsZW0uICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IHN0cl9pbmQgYyBzID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAnJWMnIHdpdGhvdXQgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgYyBzXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIHVuZXhwZWN0ZWRcbiAgICAgY2hhcmFjdGVyLiAqKVxuICBsZXQgZXhwZWN0ZWRfY2hhcmFjdGVyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZCA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlcyBleHBlY3RlZCwgcmVhZCAlQ1wiXG4gICAgICBzdHIgc3RyX2luZCBleHBlY3RlZCByZWFkXG4gIGluXG5cbiAgKCogUGFyc2UgdGhlIHN0cmluZyBmcm9tIGJlZ19pbmQgKGluY2x1ZGVkKSB0byBlbmRfaW5kIChleGNsdWRlZCkuICopXG4gIGxldCByZWMgcGFyc2UgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gYmVnX2luZCBlbmRfaW5kIC0+IHBhcnNlX2xpdGVyYWwgYmVnX2luZCBiZWdfaW5kIGVuZF9pbmRcblxuICAoKiBSZWFkIGxpdGVyYWwgY2hhcmFjdGVycyB1cCB0byAnJScgb3IgJ0AnIHNwZWNpYWwgY2hhcmFjdGVycy4gKilcbiAgYW5kIHBhcnNlX2xpdGVyYWwgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIEVuZF9vZl9mb3JtYXQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2Zvcm1hdCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfYWZ0ZXJfYXQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfbGl0ZXJhbCBsaXRfc3RhcnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgKCogUGFyc2UgYSBmb3JtYXQgYWZ0ZXIgJyUnICopXG4gIGFuZCBwYXJzZV9mb3JtYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBlbmRfaW5kIC0+IHBhcnNlX2lnbiBwY3RfaW5kIChwY3RfaW5kICsgMSkgZW5kX2luZFxuXG4gIGFuZCBwYXJzZV9pZ24gOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ18nIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgKHN0cl9pbmQrMSkgZW5kX2luZCB0cnVlXG4gICAgICB8IF8gLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgZmFsc2VcblxuICBhbmQgcGFyc2VfZmxhZ3MgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmJcbiAgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgaWduIC0+XG4gICAgbGV0IHplcm8gPSByZWYgZmFsc2UgYW5kIG1pbnVzID0gcmVmIGZhbHNlXG4gICAgYW5kIHBsdXMgPSByZWYgZmFsc2UgYW5kIHNwYWNlID0gcmVmIGZhbHNlXG4gICAgYW5kIGhhc2ggPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2V0X2ZsYWcgc3RyX2luZCBmbGFnID1cbiAgICAgICgqIGluIGxlZ2FjeSBtb2RlLCBkdXBsaWNhdGUgZmxhZ3MgYXJlIGFjY2VwdGVkICopXG4gICAgICBpZiAhZmxhZyAmJiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIGR1cGxpY2F0ZSBmbGFnICVDXCJcbiAgICAgICAgICBzdHIgc3RyX2luZCBzdHIuW3N0cl9pbmRdO1xuICAgICAgZmxhZyA6PSB0cnVlO1xuICAgIGluXG4gICAgbGV0IHJlYyByZWFkX2ZsYWdzIHN0cl9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnMCcgLT4gc2V0X2ZsYWcgc3RyX2luZCB6ZXJvOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICctJyAtPiBzZXRfZmxhZyBzdHJfaW5kIG1pbnVzOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJysnIC0+IHNldF9mbGFnIHN0cl9pbmQgcGx1czsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnIycgLT4gc2V0X2ZsYWcgc3RyX2luZCBoYXNoOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyAnIC0+IHNldF9mbGFnIHN0cl9pbmQgc3BhY2U7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmRcbiAgICAgICAgICAhemVybyAhbWludXMgIXBsdXMgIWhhc2ggIXNwYWNlIGlnblxuICAgICAgZW5kXG4gICAgaW5cbiAgICByZWFkX2ZsYWdzIHN0cl9pbmRcblxuICAoKiBUcnkgdG8gcmVhZCBhIGRpZ2l0YWwgb3IgYSAnKicgcGFkZGluZy4gKilcbiAgYW5kIHBhcnNlX3BhZGRpbmcgOiB0eXBlIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCB6ZXJvIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYWR0eSA9IG1hdGNoIHplcm8sIG1pbnVzIHdpdGhcbiAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IFJpZ2h0XG4gICAgICB8IGZhbHNlLCB0cnVlICAtPiBMZWZ0XG4gICAgICB8ICB0cnVlLCBmYWxzZSAtPiBaZXJvc1xuICAgICAgfCAgdHJ1ZSwgdHJ1ZSAgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGVmdFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnLScgXCIwXCIgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgIGxldCBuZXdfaW5kLCB3aWR0aCA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgKExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gKEFyZ19wYWRkaW5nIHBhZHR5KVxuICAgIHwgXyAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgICAgfCBMZWZ0ICAtPlxuICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy0nIFwicGFkZGluZ1wiO1xuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICB8IFplcm9zIC0+XG4gICAgICAgICAoKiBhICcwJyBwYWRkaW5nIGluZGljYXRpb24gbm90IGZvbGxvd2VkIGJ5IGFueXRoaW5nIHNob3VsZFxuICAgICAgICAgICBiZSBpbnRlcnByZXRlZCBhcyBhIFJpZ2h0IHBhZGRpbmcgb2Ygd2lkdGggMC4gVGhpcyBpcyB1c2VkXG4gICAgICAgICAgIGJ5IHNjYW5uaW5nIGNvbnZlcnNpb25zICUwcyBhbmQgJTBjICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIChMaXRfcGFkZGluZyAoUmlnaHQsIDApKVxuICAgICAgfCBSaWdodCAtPlxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICBlbmRcblxuICAoKiBJcyBwcmVjaXNpb24gZGVmaW5lZD8gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3BhZGRpbmcgOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnLicgLT5cbiAgICAgIHBhcnNlX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZFxuICAgIHwgc3ltYiAtPlxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBOb19wcmVjaXNpb24gcGFkIHN5bWJcblxuICAoKiBSZWFkIHRoZSBkaWdpdGFsIG9yICcqJyBwcmVjaXNpb24uICopXG4gIGFuZCBwYXJzZV9wcmVjaXNpb24gOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZCA9XG4gICAgICBsZXQgbmV3X2luZCwgcHJlYyA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gcHJlYykgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kXG4gICAgfCAoJysnIHwgJy0nKSBhcyBzeW1iIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+XG4gICAgICAoKiBMZWdhY3kgbW9kZSB3b3VsZCBhY2NlcHQgYW5kIGlnbm9yZSAnKycgb3IgJy0nIGJlZm9yZSB0aGVcbiAgICAgICAgIGludGVnZXIgZGVzY3JpYmluZyB0aGUgZGVzaXJlZCBwcmVjaXNpb247IG5vdGUgdGhhdCB0aGlzXG4gICAgICAgICBjYW5ub3QgaGFwcGVuIGZvciBwYWRkaW5nIHdpZHRoLCBhcyAnKycgYW5kICctJyBhbHJlYWR5IGhhdmVcbiAgICAgICAgIGEgc2VtYW50aWNzIHRoZXJlLlxuXG4gICAgICAgICBUaGF0IHNhaWQsIHRoZSBpZGVhIChzdXBwb3J0ZWQgYnkgdGhpcyB0d2VhaykgdGhhdCB3aWR0aCBhbmRcbiAgICAgICAgIHByZWNpc2lvbiBsaXRlcmFscyBhcmUgXCJpbnRlZ2VyIGxpdGVyYWxzXCIgaW4gdGhlIE9DYW1sIHNlbnNlIGlzXG4gICAgICAgICBzdGlsbCBibGF0YW50bHkgd3JvbmcsIGFzIDEyM180NTYgb3IgMHhGRiBhcmUgcmVqZWN0ZWQuICopXG4gICAgICBwYXJzZV9saXRlcmFsIChtaW51cyB8fCBzeW1iID0gJy0nKSAoc3RyX2luZCArIDEpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIHBhZCBBcmdfcHJlY2lzaW9uXG4gICAgfCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBub3RlIHRoYXQgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRpZCBub3QgaWdub3JlICcuJyB3aXRob3V0XG4gICAgICAgICAgIGEgbnVtYmVyIChhcyBpdCBkb2VzIGZvciBwYWRkaW5nIGluZGljYXRpb25zKSwgYnV0XG4gICAgICAgICAgIGludGVycHJldHMgaXQgYXMgJy4wJyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiAwKVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy4nIFwicHJlY2lzaW9uXCJcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogdCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2NvbnYgKHR5cGUgdSkgKHR5cGUgdikgKHBhZHByZWMgOiAodSwgdikgcGFkZGluZykgPVxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBwcmVjIHBhZHByZWMgc3RyLltzdHJfaW5kXSBpblxuICAgICgqIGluIGxlZ2FjeSBtb2RlLCBzb21lIGZvcm1hdHMgKCVzIGFuZCAlUykgYWNjZXB0IGEgd2VpcmQgbWl4IG9mXG4gICAgICAgcGFkZGluZyBhbmQgcHJlY2lzaW9uLCB3aGljaCBpcyBtZXJnZWQgYXMgYSBzaW5nbGUgcGFkZGluZ1xuICAgICAgIGluZm9ybWF0aW9uLiBGb3IgZXhhbXBsZSwgaW4gJS4xMHMgdGhlIHByZWNpc2lvbiBpcyBpbXBsaWNpdGx5XG4gICAgICAgdW5kZXJzdG9vZCBhcyBwYWRkaW5nICUxMHMsIGJ1dCB0aGUgbGVmdC1wYWRkaW5nIGNvbXBvbmVudCBtYXlcbiAgICAgICBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgbGVmdCBwYWRkaW5nIG9yIGEgbmVnYXRpdmUgcHJlY2lzaW9uOlxuICAgICAgICUtLjNzIGFuZCAlLi0zcyBhcmUgZXF1aXZhbGVudCB0byAlLTNzICopXG4gICAgbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgLT4gKFxuICAgICAgbWF0Y2ggbWludXMsIHByZWMgd2l0aFxuICAgICAgICB8IF8sIE5vX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IE5vX3BhZGRpbmdcbiAgICAgICAgfCBmYWxzZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChSaWdodCwgbikpXG4gICAgICAgIHwgdHJ1ZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChMZWZ0LCBuKSlcbiAgICAgICAgfCBmYWxzZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBSaWdodClcbiAgICAgICAgfCB0cnVlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIExlZnQpXG4gICAgKVxuICAgIHwgcGFkIC0+IHBhcnNlX2NvbnYgcGFkXG5cbiAgKCogQ2FzZSBhbmFseXNpcyBvbiBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfY29udmVyc2lvbiA6IHR5cGUgeCB5IHogdCB1IHYgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gKHgsIHkpIHBhZGRpbmcgLT5cbiAgICAgICAgKHosIHQpIHByZWNpc2lvbiAtPiAodSwgdikgcGFkZGluZyAtPiBjaGFyIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgcGFkcHJlYyBzeW1iIC0+XG4gICAgKCogRmxhZ3MgdXNlZCB0byBjaGVjayBvcHRpb24gdXNhZ2VzL2NvbXBhdGliaWxpdGllcy4gKilcbiAgICBsZXQgcGx1c191c2VkICA9IHJlZiBmYWxzZSBhbmQgaGFzaF91c2VkID0gcmVmIGZhbHNlXG4gICAgYW5kIHNwYWNlX3VzZWQgPSByZWYgZmFsc2UgYW5kIGlnbl91c2VkICAgPSByZWYgZmFsc2VcbiAgICBhbmQgcGFkX3VzZWQgICA9IHJlZiBmYWxzZSBhbmQgcHJlY191c2VkICA9IHJlZiBmYWxzZSBpblxuXG4gICAgKCogQWNjZXNzIHRvIG9wdGlvbnMsIHVwZGF0ZSBmbGFncy4gKilcbiAgICBsZXQgZ2V0X3BsdXMgICAgKCkgPSBwbHVzX3VzZWQgIDo9IHRydWU7IHBsdXNcbiAgICBhbmQgZ2V0X2hhc2ggICAoKSA9IGhhc2hfdXNlZCA6PSB0cnVlOyBoYXNoXG4gICAgYW5kIGdldF9zcGFjZSAgICgpID0gc3BhY2VfdXNlZCA6PSB0cnVlOyBzcGFjZVxuICAgIGFuZCBnZXRfaWduICAgICAoKSA9IGlnbl91c2VkICAgOj0gdHJ1ZTsgaWduXG4gICAgYW5kIGdldF9wYWQgICAgICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRcbiAgICBhbmQgZ2V0X3ByZWMgICAgKCkgPSBwcmVjX3VzZWQgIDo9IHRydWU7IHByZWNcbiAgICBhbmQgZ2V0X3BhZHByZWMgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZHByZWMgaW5cblxuICAgIGxldCBnZXRfaW50X3BhZCAoKSA6ICh4LHkpIHBhZGRpbmcgPVxuICAgICAgKCogJTUuM2QgaXMgYWNjZXB0ZWQgYW5kIG1lYW5pbmdmdWw6IHBhZCB0byBsZW5ndGggNSB3aXRoXG4gICAgICAgICBzcGFjZXMsIGJ1dCBmaXJzdCBwYWQgd2l0aCB6ZXJvcyB1cHRvIGxlbmd0aCAzICgwLXBhZGRpbmdcbiAgICAgICAgIGlzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBcInByZWNpc2lvblwiIGZvciBpbnRlZ2VyIGZvcm1hdHMpLlxuXG4gICAgICAgICAlMDUuM2QgaXMgcmVkdW5kYW50OiBwYWQgdG8gbGVuZ3RoIDUgKndpdGggemVyb3MqLCBidXRcbiAgICAgICAgIGZpcnN0IHBhZCB3aXRoIHplcm9zLi4uIFRvIGFkZCBpbnN1bHQgdG8gdGhlIGluanVyeSwgdGhlXG4gICAgICAgICBsZWdhY3kgaW1wbGVtZW50YXRpb24gaWdub3JlcyB0aGUgMC1wYWRkaW5nIGluZGljYXRpb24gYW5kXG4gICAgICAgICBkb2VzIHRoZSA1IHBhZGRpbmcgd2l0aCBzcGFjZXMgaW5zdGVhZC4gV2UgcmV1c2UgdGhpc1xuICAgICAgICAgaW50ZXJwcmV0YXRpb24gZm9yIGNvbXBhdGliaWxpdHksIGJ1dCBzdGF0aWNhbGx5IHJlamVjdCB0aGlzXG4gICAgICAgICBmb3JtYXQgd2hlbiB0aGUgbGVnYWN5IG1vZGUgaXMgZGlzYWJsZWQsIHRvIHByb3RlY3Qgc3RyaWN0XG4gICAgICAgICB1c2VycyBmcm9tIHRoaXMgY29ybmVyIGNhc2UuICopXG4gICAgICAgbWF0Y2ggZ2V0X3BhZCAoKSwgZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgICAgfCBwYWQsIE5vX3ByZWNpc2lvbiAtPiBwYWRcbiAgICAgICAgIHwgTm9fcGFkZGluZywgXyAgICAgLT4gTm9fcGFkZGluZ1xuICAgICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIG4pLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgbilcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MsIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZCBpblxuXG4gICAgKCogQ2hlY2sgdGhhdCBwYWR0eSA8PiBaZXJvcy4gKilcbiAgICBsZXQgY2hlY2tfbm9fMCBzeW1iICh0eXBlIGEgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA6IChhLGIpIHBhZGRpbmcgPVxuICAgICAgbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKChMZWZ0IHwgUmlnaHQpLCBfKSAtPiBwYWRcbiAgICAgIHwgQXJnX3BhZGRpbmcgKExlZnQgfCBSaWdodCkgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgIGluXG5cbiAgICAoKiBHZXQgcGFkZGluZyBhcyBhIHBhZF9vcHRpb24gKHNlZSBcIiVfXCIsIFwiJXtcIiwgXCIlKFwiIGFuZCBcIiVbXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IG9wdF9vZl9wYWQgYyAodHlwZSBhKSAodHlwZSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpID0gbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBOb25lXG4gICAgICB8IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpIC0+IFNvbWUgd2lkdGhcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJzAnXCJcbiAgICAgIHwgTGl0X3BhZGRpbmcgKExlZnQsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInLSdcIlxuICAgICAgfCBBcmdfcGFkZGluZyBfIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJyonXCJcbiAgICBpblxuICAgIGxldCBnZXRfcGFkX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkICgpKSBpblxuICAgIGxldCBnZXRfcGFkcHJlY19vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZHByZWMgKCkpIGluXG5cbiAgICAoKiBHZXQgcHJlY2lzaW9uIGFzIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfZlwiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBnZXRfcHJlY19vcHQgKCkgPSBtYXRjaCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICB8IE5vX3ByZWNpc2lvbiAgICAgICAtPiBOb25lXG4gICAgICB8IExpdF9wcmVjaXNpb24gbmRlYyAtPiBTb21lIG5kZWNcbiAgICAgIHwgQXJnX3ByZWNpc2lvbiAgICAgIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKidcIlxuICAgIGluXG5cbiAgICBsZXQgZm10X3Jlc3VsdCA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJywnIC0+XG4gICAgICBwYXJzZSBzdHJfaW5kIGVuZF9pbmRcbiAgICB8ICdjJyAtPlxuICAgICAgbGV0IGNoYXJfZm9ybWF0IGZtdF9yZXN0ID0gKCogJWMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKENoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IHNjYW5fZm9ybWF0IGZtdF9yZXN0ID0gKCogJTBjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3NjYW5fbmV4dF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIGdldF9wYWRfb3B0ICdjJyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgMCAtPiBzY2FuX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgX24gLT5cbiAgICAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvclxuICAgICAgICAgICB0aGVuIGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmRcbiAgICAgICAgICAgZWxzZSAoKiBsZWdhY3kgaWdub3JlcyAlYyB3aWR0aHMgKikgY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgIGVuZFxuICAgIHwgJ0MnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2FtbF9jaGFyLGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoQ2FtbF9jaGFyIGZtdF9yZXN0KVxuICAgIHwgJ3MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoU3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ1MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2NhbWxfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChDYW1sX3N0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPlxuICAgICAgbGV0IGljb252ID0gY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ04nIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBUb2tlbl9jb3VudGVyIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyB8ICduJyB8ICdMJyB3aGVuIHN0cl9pbmQ9ZW5kX2luZCB8fCBub3QgKGlzX2ludF9iYXNlIHN0ci5bc3RyX2luZF0pIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBjb3VudGVyX29mX2NoYXIgc3ltYiBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDMyIChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50MzIgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICduJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKVxuICAgICAgICAgIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDY0IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50NjQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdmJyB8ICdlJyB8ICdFJyB8ICdnJyB8ICdHJyB8ICdGJyB8ICdoJyB8ICdIJyAtPlxuICAgICAgbGV0IGZjb252ID1cbiAgICAgICAgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZFxuICAgICAgICAgIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mbG9hdCAoZ2V0X3BhZF9vcHQgJ18nLCBnZXRfcHJlY19vcHQgKCkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEZsb2F0IChmY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnYicgfCAnQicgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfYm9vbCAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQm9vbCAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdhJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEFscGhhIGZtdF9yZXN0KVxuICAgIHwgJ3QnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoVGhldGEgZm10X3Jlc3QpXG4gICAgfCAncicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoUmVhZGVyIGZtdF9yZXN0KVxuICAgIHwgJyEnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRmx1c2ggZm10X3Jlc3QpXG4gICAgfCAoJyUnIHwgJ0AnKSBhcyBjIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsIChjLCBmbXRfcmVzdCkpXG4gICAgfCAneycgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICd9JyBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfYXJnIChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfYXJnIChnZXRfcGFkX29wdCAneycsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJygnIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnKScgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICcoJywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnWycgLT5cbiAgICAgIGxldCBuZXh0X2luZCwgY2hhcl9zZXQgPSBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnXycsIGNoYXJfc2V0KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdbJywgY2hhcl9zZXQsIGZtdF9yZXN0KSlcbiAgICB8ICctJyB8ICcrJyB8ICcjJyB8ICcgJyB8ICdfJyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgZmxhZyAlQyBpcyBvbmx5IGFsbG93ZWQgYWZ0ZXIgdGhlICclJScsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb25cIlxuICAgICAgICBzdHIgcGN0X2luZCBzeW1iXG4gICAgfCBfIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBpbnZhbGlkIGNvbnZlcnNpb24gXFxcIiUlJWNcXFwiXCIgc3RyIChzdHJfaW5kIC0gMSkgc3ltYlxuICAgIGluXG4gICAgKCogQ2hlY2sgZm9yIHVudXNlZCBvcHRpb25zLCBhbmQgcmVqZWN0IHRoZW0gYXMgaW5jb21wYXRpYmxlLlxuXG4gICAgICAgU3VjaCBjaGVja3MgbmVlZCB0byBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSwgYXMgdGhlIGxlZ2FjeVxuICAgICAgIHBhcnNlciBzaWxlbnRseSBpZ25vcmVkIGluY29tcGF0aWJsZSBmbGFncy4gKilcbiAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW4gYmVnaW5cbiAgICBpZiBub3QgIXBsdXNfdXNlZCAmJiBwbHVzIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCI7XG4gICAgaWYgbm90ICFoYXNoX3VzZWQgJiYgaGFzaCB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiO1xuICAgIGlmIG5vdCAhc3BhY2VfdXNlZCAmJiBzcGFjZSB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiO1xuICAgIGlmIG5vdCAhcGFkX3VzZWQgICYmIFBhZGRpbmdfRUJCIHBhZCA8PiBQYWRkaW5nX0VCQiBOb19wYWRkaW5nIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiYHBhZGRpbmcnXCI7XG4gICAgaWYgbm90ICFwcmVjX3VzZWQgJiYgUHJlY2lzaW9uX0VCQiBwcmVjIDw+IFByZWNpc2lvbl9FQkIgTm9fcHJlY2lzaW9uIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAoaWYgaWduIHRoZW4gJ18nIGVsc2Ugc3ltYilcbiAgICAgICAgXCJgcHJlY2lzaW9uJ1wiO1xuICAgIGlmIGlnbiAmJiBwbHVzIHRoZW4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicrJ1wiO1xuICAgIGVuZDtcbiAgICAoKiB0aGlzIGxhc3QgdGVzdCBtdXN0IG5vdCBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSxcbiAgICAgICBhcyBpZ25vcmluZyBpdCB3b3VsZCB0eXBpY2FsbHkgcmVzdWx0IGluIGEgZGlmZmVyZW50IHR5cGluZ1xuICAgICAgIHRoYW4gd2hhdCB0aGUgbGVnYWN5IHBhcnNlciB1c2VkICopXG4gICAgaWYgbm90ICFpZ25fdXNlZCAmJiBpZ24gdGhlblxuICAgICAgYmVnaW4gbWF0Y2ggc3ltYiB3aXRoXG4gICAgICAgICgqIGFyZ3VtZW50LWxlc3MgZm9ybWF0cyBjYW4gc2FmZWx5IGJlIGlnbm9yZWQgaW4gbGVnYWN5IG1vZGUgKilcbiAgICAgICAgfCAoJ0AnIHwgJyUnIHwgJyEnIHwgJywnKSB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIidfJ1wiXG4gICAgICBlbmQ7XG4gICAgZm10X3Jlc3VsdFxuXG4gICgqIFBhcnNlIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24gKGFmdGVyICdAJykuICopXG4gIGFuZCBwYXJzZV9hZnRlcl9hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBFbmRfb2ZfZm9ybWF0KSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ1snIC0+XG4gICAgICAgIHBhcnNlX3RhZyBmYWxzZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV9ib3gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIHBhcnNlX3RhZyB0cnVlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnfScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX3RhZywgZm10X3Jlc3QpKVxuICAgICAgfCAnLCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAsXCIsIDAsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCBcIiwgMSwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJzsnIC0+XG4gICAgICAgIHBhcnNlX2dvb2RfYnJlYWsgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICc/JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRkZsdXNoLCBmbXRfcmVzdCkpXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGb3JjZV9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICcuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRmx1c2hfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgcGFyc2VfbWFnaWNfc2l6ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX2F0LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyB3aGVuIHN0cl9pbmQgKyAxIDwgZW5kX2luZCAmJiBzdHIuW3N0cl9pbmQgKyAxXSA9ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMikgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9wZXJjZW50LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgZm10X3Jlc3QpKVxuICAgICAgfCBjIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljIGMsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPG5hbWU+IGFmdGVyIFwiQHtcIiBvciBcIkBbXCIuICopXG4gIGFuZCBwYXJzZV90YWcgOiB0eXBlIGUgZiAuIGJvb2wgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBpc19vcGVuX3RhZyBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICB0cnlcbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBsZXQgaW5kID0gU3RyaW5nLmluZGV4X2Zyb20gc3RyIChzdHJfaW5kICsgMSkgJz4nIGluXG4gICAgICAgIGlmIGluZCA+PSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIHN0cl9pbmQgKGluZCAtIHN0cl9pbmQgKyAxKSBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChpbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIChpbmQgKyAxKSBpblxuICAgICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoc3ViX2ZtdCwgc3ViX3N0cikgaW5cbiAgICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcbiAgICAgIHwgXyAtPlxuICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChFbmRfb2ZfZm9ybWF0LCBcIlwiKSBpblxuICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8d2lkdGggb2Zmc2V0PiBhZnRlciBcIkA7XCIuICopXG4gIGFuZCBwYXJzZV9nb29kX2JyZWFrIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGxldCBuZXh0X2luZCwgZm9ybWF0dGluZ19saXQgPVxuICAgICAgdHJ5XG4gICAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHx8IHN0ci5bc3RyX2luZF0gPD4gJzwnIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gKFxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHdpZHRoID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzNdIHdpdGhcbiAgICAgICAgICAgICAgfCAnPicgLT5cbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzMtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfMyArIDEsIEJyZWFrIChzLCB3aWR0aCwgMClcbiAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNCwgb2Zmc2V0ID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzMgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzUgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF80IGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfNV0gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfNS1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF81ICsgMSwgQnJlYWsgKHMsIHdpZHRoLCBvZmZzZXQpXG4gICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgKVxuICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBzdHJfaW5kLCBCcmVhayAoXCJAO1wiLCAxLCAwKVxuICAgIGluXG4gICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgdGhlIHNpemUgaW4gYSA8bj4uICopXG4gIGFuZCBwYXJzZV9tYWdpY19zaXplIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIG1hdGNoXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgc2l6ZSA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzNdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kIC0gMikgKHN0cl9pbmRfMyAtIHN0cl9pbmQgKyAzKSBpblxuICAgICAgICAgIFNvbWUgKHN0cl9pbmRfMyArIDEsIE1hZ2ljX3NpemUgKHMsIHNpemUpKVxuICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgJzwnLCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgYW5kIGNvbnN0cnVjdCBhIGNoYXIgc2V0LiAqKVxuICBhbmQgcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuXG4gICAgbGV0IGNoYXJfc2V0ID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gICAgbGV0IGFkZF9jaGFyIGMgPVxuICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGM7XG4gICAgaW5cbiAgICBsZXQgYWRkX3JhbmdlIGMgYycgPVxuICAgICAgZm9yIGkgPSBpbnRfb2ZfY2hhciBjIHRvIGludF9vZl9jaGFyIGMnIGRvXG4gICAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCAoY2hhcl9vZl9pbnQgaSk7XG4gICAgICBkb25lO1xuICAgIGluXG5cbiAgICBsZXQgZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kID1cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogJyUlJyBhbG9uZSBpcyBub3QgYWNjZXB0ZWQgaW4gY2hhcmFjdGVyIHNldHMsIFxcXG4gICAgICAgICB1c2UgJSUlJSBpbnN0ZWFkIGF0IHBvc2l0aW9uICVkLlwiIHN0ciBzdHJfaW5kXG4gICAgaW5cblxuICAgICgqIFBhcnNlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBjaGFyIHNldC4gKilcbiAgICBsZXQgcmVjIHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbGV0IGMgPSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBQYXJzZSB0aGUgY29udGVudCBvZiBhIGNoYXIgc2V0IHVudGlsIHRoZSBmaXJzdCAnXScuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogVGVzdCBmb3IgcmFuZ2UgaW4gY2hhciBzZXQuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG4gICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIHdoZW4gYyA9ICclJyAtPlxuICAgICAgICBhZGRfY2hhciBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgaWYgYyA9ICclJyB0aGVuIGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZDtcbiAgICAgICAgKCogbm90ZSB0aGF0ICdAJyBhbG9uZSBpcyBhY2NlcHRlZCwgYXMgZG9uZSBieSB0aGUgbGVnYWN5XG4gICAgICAgICAgIGltcGxlbWVudGF0aW9uOyB0aGUgZG9jdW1lbnRhdGlvbiBzcGVjaWZpY2FsbHkgcmVxdWlyZXMgJUBcbiAgICAgICAgICAgc28gd2UgY291bGQgd2FybiBvbiB0aGF0ICopXG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGMnXG5cbiAgICAoKiBNYW5hZ2UgcmFuZ2UgaW4gY2hhciBzZXQgKGV4Y2VwdCBpZiB0aGUgJy0nIHRoZSBsYXN0IGNoYXIgYmVmb3JlICddJykgKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIC0+XG4gICAgICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kXG4gICAgICAgICAgfCBfIC0+IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZFxuICAgICAgICBlbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgaW5cbiAgICBsZXQgc3RyX2luZCwgcmV2ZXJzZSA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICAgIHwgJ14nIC0+IHN0cl9pbmQgKyAxLCB0cnVlXG4gICAgICAgIHwgXyAtPiBzdHJfaW5kLCBmYWxzZSBpblxuICAgIGxldCBuZXh0X2luZCA9IHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgIGxldCBjaGFyX3NldCA9IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCBpblxuICAgIG5leHRfaW5kLCAoaWYgcmV2ZXJzZSB0aGVuIHJldl9jaGFyX3NldCBjaGFyX3NldCBlbHNlIGNoYXJfc2V0KVxuXG4gICgqIENvbnN1bWUgYWxsIG5leHQgc3BhY2VzLCByYWlzZSBhbiBGYWlsdXJlIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgaWYgc3RyLltzdHJfaW5kXSA9ICcgJyB0aGVuIHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgZWxzZSBzdHJfaW5kXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmUgaWYgZW5kX2luZCBpc1xuICAgICByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIGFjYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBhY2MgKiAxMCArIChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnKSBpblxuICAgICAgaWYgbmV3X2FjYyA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBpbnRlZ2VyICVkIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGltaXQgJWRcIlxuICAgICAgICAgIHN0ciBuZXdfYWNjIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgbmV3X2FjY1xuICAgIHwgXyAtPiBzdHJfaW5kLCBhY2NcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZVxuICAgICBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9pbnRlZ2VyIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDBcbiAgICB8ICctJyAtPiAoXG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICBsZXQgbmV4dF9pbmQsIG4gPSBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgMCBpblxuICAgICAgICBuZXh0X2luZCwgLW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImRpZ2l0XCIgY1xuICAgIClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQWRkIGEgbGl0ZXJhbCB0byBhIGZvcm1hdCBmcm9tIGEgbGl0ZXJhbCBjaGFyYWN0ZXIgc3ViLXNlcXVlbmNlLiAqKVxuICBhbmQgYWRkX2xpdGVyYWwgOiB0eXBlIGEgZCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiAoYSwgXywgXywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBmbXQgLT4gbWF0Y2ggc3RyX2luZCAtIGxpdF9zdGFydCB3aXRoXG4gICAgfCAwICAgIC0+IEZtdF9FQkIgZm10XG4gICAgfCAxICAgIC0+IEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoc3RyLltsaXRfc3RhcnRdLCBmbXQpKVxuICAgIHwgc2l6ZSAtPiBGbXRfRUJCIChTdHJpbmdfbGl0ZXJhbCAoU3RyaW5nLnN1YiBzdHIgbGl0X3N0YXJ0IHNpemUsIGZtdCkpXG5cbiAgKCogU2VhcmNoIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdFxuICAgICAoaS5lLiB0aGUgY29ycmVzcG9uZGluZyBcIiV9XCIgb3IgXCIlKVwiKSAqKVxuICBhbmQgc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogdW5jbG9zZWQgc3ViLWZvcm1hdCwgXFxcbiAgICAgICAgIGV4cGVjdGVkIFxcXCIlJSVjXFxcIiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkXCIgc3RyIGMgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICclJyAtPlxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBpZiBzdHIuW3N0cl9pbmQgKyAxXSA9IGMgdGhlbiAoKiBFbmQgb2YgZm9ybWF0IGZvdW5kICopIHN0cl9pbmQgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgIHwgJ18nIC0+XG4gICAgICAgICAgKCogU2VhcmNoIGZvciBcIiVfKFwiIG9yIFwiJV97XCIuICopXG4gICAgICAgICAgaWYgc3RyX2luZCArIDIgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMl0gd2l0aFxuICAgICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kIGNcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAoKiAley4uLiV9IHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAoKiAlKC4uLiUpIHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnfScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJSguLi4lfS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnKSdcIiAnfSdcbiAgICAgICAgfCAnKScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJXsuLi4lKS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnfSdcIiAnKSdcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgZW5kXG4gICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgKCogQ2hlY2sgaWYgc3ltYiBpcyBhIHZhbGlkIGludCBjb252ZXJzaW9uIGFmdGVyIFwiJWxcIiwgXCIlblwiIG9yIFwiJUxcIiAqKVxuICBhbmQgaXNfaW50X2Jhc2Ugc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICAoKiBDb252ZXJ0IGEgY2hhciAobCwgbiBvciBMKSB0byBpdHMgYXNzb2NpYXRlZCBjb3VudGVyLiAqKVxuICBhbmQgY291bnRlcl9vZl9jaGFyIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdsJyAtPiBMaW5lX2NvdW50ZXIgIHwgJ24nIC0+IENoYXJfY291bnRlclxuICAgIHwgJ0wnIC0+IFRva2VuX2NvdW50ZXIgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGludF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIG1hdGNoIHBsdXMsIGhhc2gsIHNwYWNlLCBzeW1iIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfZCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X2lcbiAgICB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdkJyAtPiBJbnRfc2QgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnaScgLT4gSW50X3NpXG4gICAgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X3BkIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9waVxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3gnIC0+IEludF94ICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdYJyAtPiBJbnRfWFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3gnIC0+IEludF9DeCB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdYJyAtPiBJbnRfQ1hcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdvJyAtPiBJbnRfb1xuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ28nIC0+IEludF9Db1xuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3UnIC0+IEludF91XG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnZCcgLT4gSW50X0NkXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnaScgLT4gSW50X0NpXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAndScgLT4gSW50X0N1XG4gICAgfCBfLCB0cnVlLCBfLCAneCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0N4XG4gICAgfCBfLCB0cnVlLCBfLCAnWCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NYXG4gICAgfCBfLCB0cnVlLCBfLCAnbycgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NvXG4gICAgfCBfLCB0cnVlLCBfLCAoJ2QnIHwgJ2knIHwgJ3UnKSAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgZmFsc2Ugc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiXG4gICAgfCB0cnVlLCBfLCB0cnVlLCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCB0cnVlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIlxuICAgIHwgdHJ1ZSwgXywgZmFsc2UsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBmYWxzZSBoYXNoIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIGZhbHNlLCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHNwYWNlLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBmbG9hdF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbGV0IGZsYWcgPSBtYXRjaCBwbHVzLCBzcGFjZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19cbiAgICB8IGZhbHNlLCAgdHJ1ZSAtPiBGbG9hdF9mbGFnX3NcbiAgICB8ICB0cnVlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX3BcbiAgICB8ICB0cnVlLCAgdHJ1ZSAtPlxuICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEZsb2F0X2ZsYWdfcFxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCIgaW5cbiAgICBsZXQga2luZCA9IG1hdGNoIGhhc2gsIHN5bWIgd2l0aFxuICAgIHwgXywgJ2YnIC0+IEZsb2F0X2ZcbiAgICB8IF8sICdlJyAtPiBGbG9hdF9lXG4gICAgfCBfLCAnRScgLT4gRmxvYXRfRVxuICAgIHwgXywgJ2cnIC0+IEZsb2F0X2dcbiAgICB8IF8sICdHJyAtPiBGbG9hdF9HXG4gICAgfCBfLCAnaCcgLT4gRmxvYXRfaFxuICAgIHwgXywgJ0gnIC0+IEZsb2F0X0hcbiAgICB8IGZhbHNlLCAnRicgLT4gRmxvYXRfRlxuICAgIHwgdHJ1ZSwgJ0YnIC0+IEZsb2F0X0NGXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSBpblxuICAgIGZsYWcsIGtpbmRcblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgaW5jb21wYXRpYmxlIG9wdGlvbnMuKilcbiAgYW5kIGluY29tcGF0aWJsZV9mbGFnIDogdHlwZSBhIC4gaW50IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZyAtPiBhID1cbiAgICBmdW4gcGN0X2luZCBzdHJfaW5kIHN5bWIgb3B0aW9uIC0+XG4gICAgICBsZXQgc3ViZm10ID0gU3RyaW5nLnN1YiBzdHIgcGN0X2luZCAoc3RyX2luZCAtIHBjdF9pbmQpIGluXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICAlcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAnJWMnIGluIHN1Yi1mb3JtYXQgJVNcIlxuICAgICAgICBzdHIgcGN0X2luZCBvcHRpb24gc3ltYiBzdWJmbXRcblxuICBpbiBwYXJzZSAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICgqIEd1YXJkZWQgc3RyaW5nIHRvIGZvcm1hdCBjb252ZXJzaW9ucyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgc3RyIGZtdHR5ID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCBmbXR0eSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIlxuICAgICAgc3RyIChzdHJpbmdfb2ZfZm10dHkgZm10dHkpXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgY29tcGF0aWJsZSB3aXRoIGFuIG90aGVyIGZvcm1hdC4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciAoRm9ybWF0IChmbXQnLCBzdHInKSkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IChmbXR0eV9vZl9mbXQgZm10JyksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCIgc3RyIHN0cidcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgWGF2aWVyIExlcm95IGFuZCBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbmxldCBrZnByaW50ZiBrIG8gKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIG8gYWNjOyBrIG8pIEVuZF9vZl9hY2MgZm10XG5sZXQga2JwcmludGYgayBiIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gYnVmcHV0X2FjYyBiIGFjYzsgayBiKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGlrZnByaW50ZiBrIG9jIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgb2MgZm10XG5sZXQgaWticHJpbnRmID0gaWtmcHJpbnRmXG5cbmxldCBmcHJpbnRmIG9jIGZtdCA9IGtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBicHJpbnRmIGIgZm10ID0ga2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgaWZwcmludGYgb2MgZm10ID0gaWtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBpYnByaW50ZiBiIGZtdCA9IGlrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRvdXQgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZGVyciBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgaycgYWNjID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHN0cnB1dF9hY2MgYnVmIGFjYztcbiAgICBrIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gcykgZm10XG5cbmxldCBrcHJpbnRmID0ga3NwcmludGZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJ0b3V0LCBJTlJJQSBQYXJpcy1TYWNsYXkgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIGxlbmd0aCA6IGludDtcbiAgbXV0YWJsZSBhcnIgOiAnYSBzbG90IGFycmF5O1xufVxuKCogezIgVGhlIHR5cGUgWydhIHRdfVxuXG4gICBBIGR5bmFtaWMgYXJyYXkgaXMgcmVwcmVzZW50ZWQgdXNpbmcgYSBiYWNraW5nIGFycmF5IFthcnJdIGFuZFxuICAgYSBbbGVuZ3RoXS4gSXQgYmVoYXZlcyBhcyBhbiBhcnJheSBvZiBzaXplIFtsZW5ndGhdIC0tIHRoZSBpbmRpY2VzXG4gICBmcm9tIFswXSB0byBbbGVuZ3RoIC0gMV0gaW5jbHVkZWQgY29udGFpbiB1c2VyLXByb3ZpZGVkIHZhbHVlcyBhbmRcbiAgIGNhbiBiZSBbZ2V0XSBhbmQgW3NldF0gLS0gYnV0IHRoZSBsZW5ndGggbWF5IGFsc28gY2hhbmdlIGluIHRoZVxuICAgZnV0dXJlIGJ5IGFkZGluZyBvciByZW1vdmluZyBlbGVtZW50cyBhdCB0aGUgZW5kLlxuXG4gICBXZSB1c2UgdGhlIGZvbGxvd2luZyBjb25jZXB0cztcbiAgIC0gY2FwYWNpdHk6IHRoZSBsZW5ndGggb2YgdGhlIGJhY2tpbmcgYXJyYXk6XG4gICAgIFtBcnJheS5sZW5ndGggIGFycl1cbiAgIC0gbGl2ZSBzcGFjZTogdGhlIHBvcnRpb24gb2YgdGhlIGJhY2tpbmcgYXJyYXkgd2l0aFxuICAgICBpbmRpY2VzIGZyb20gWzBdIHRvIFtsZW5ndGggLSAxXSBpbmNsdWRlZC5cbiAgIC0gZW1wdHkgc3BhY2U6IHRoZSBwb3J0aW9uIG9mIHRoZSBiYWNraW5nIGFycmF5XG4gICAgIGZyb20gW2xlbmd0aF0gdG8gdGhlIGVuZCBvZiB0aGUgYmFja2luZyBhcnJheS5cblxuICAgezIgVGhlIHR5cGUgWydhIHNsb3RdfVxuXG4gICBXZSBzaG91bGQgbm90IGtlZXAgYSB1c2VyLXByb3ZpZGVkIHZhbHVlIGluIHRoZSBlbXB0eSBzcGFjZSwgYXNcbiAgIHRoaXMgY291bGQgZXh0ZW5kIGl0cyBsaWZldGltZSBhbmQgbWF5IHJlc3VsdCBpbiBtZW1vcnkgbGVha3Mgb2ZcbiAgIGFyYml0cmFyeSBzaXplLiBGdW5jdGlvbnMgdGhhdCByZW1vdmUgZWxlbWVudHMgZnJvbSB0aGUgZHluYW1pY1xuICAgYXJyYXksIHN1Y2ggYXMgW3BvcF9sYXN0XSBvciBbdHJ1bmNhdGVdLCBtdXN0IHJlYWxseSBlcmFzZSB0aGVcbiAgIGVsZW1lbnQgZnJvbSB0aGUgYmFja2luZyBhcnJheS5cblxuICAgVGhpcyBjb25zdHJhaW50IG1ha2VzIGl0IGRpZmZpY3VsdCB0byByZXByZXNlbnQgYW4gZHluYW1pYyBhcnJheSBvZlxuICAgZWxlbWVudHMgb2YgdHlwZSBbJ2FdIHdpdGggYSBiYWNraW5nIGFycmF5IG9mIHR5cGUgWydhIGFycmF5XTogd2hhdFxuICAgdmFsaWQgdmFsdWUgb2YgdHlwZSBbJ2FdIHdvdWxkIHdlIHVzZSBpbiB0aGUgZW1wdHkgc3BhY2U/IFR5cGljYWxcbiAgIGNob2ljZXMgaW5jbHVkZTpcbiAgIC0gYWNjZXB0aW5nIHNjZW5hcmlvcyB3aGVyZSB3ZSBhY3R1YWxseSBsZWFrIHVzZXItcHJvdmlkZWQgdmFsdWVzXG4gICAgIChidXQgdGhpcyBjYW4gYmxvd3VwIG1lbW9yeSB1c2FnZSBpbiBzb21lIGNhc2VzLCBhbmQgaXMgaGFyZCB0byBkZWJ1ZylcbiAgIC0gcmVxdWlyaW5nIGEgXCJkdW1teVwiIHZhbHVlIGF0IGNyZWF0aW9uIG9mIHRoZSBkeW5hbWljIGFycmF5XG4gICAgIG9yIGluIHRoZSBwYXJ0cyBvZiB0aGUgQVBJIHRoYXQgZ3JvdyB0aGUgZW1wdHkgc3BhY2VcbiAgICAgKGJ1dCB1c2VycyBmaW5kIHRoaXMgdmVyeSBpbmNvbnZlbmllbnQpXG4gICAtIHVzaW5nIGFyY2FuZSBPYmoubWFnaWMgdHJpY2tzXG4gICAgIChidXQgZXhwZXJ0cyBkb24ndCBhZ3JlZSBvbiB3aGljaCB0cmlja3MgYXJlIHNhZmUgdG8gdXNlIGFuZC9vclxuICAgICAgc2hvdWxkIGJlIHVzZWQgaGVyZSlcbiAgIC0gdXNpbmcgYSBiYWNraW5nIGFycmF5IG9mIFsnYSBvcHRpb25dIHZhbHVlcywgdXNpbmcgW05vbmVdXG4gICAgIGluIHRoZSBlbXB0eSBzcGFjZVxuICAgICAoYnV0IHRoaXMgZ2l2ZXMgYSBub3RpY2VhYmx5IGxlc3MgZWZmaWNpZW50IG1lbW9yeSByZXByZXNlbnRhdGlvbilcblxuICAgSW4gdGhlIHByZXNlbnQgaW1wbGVtZW50YXRpb24sIHdlIHVzZSB0aGUgWydhIG9wdGlvbl0gYXBwcm9hY2gsXG4gICB3aXRoIGEgdHdpc3QuIFdpdGggWydhIG9wdGlvbl0sIGNhbGxpbmcgW3NldCBhIGkgeF0gbXVzdCByZWFsbG9jYXRlXG4gICBhIG5ldyBbU29tZSB4XSBibG9jazpcbntbXG4gICBsZXQgc2V0IGEgaSB4ID1cbiAgICAgaWYgaSA8IDAgfHwgaSA+PSBhLmxlbmd0aCB0aGVuIGVycm9yIFwib3V0IG9mIGJvdW5kc1wiO1xuICAgICBhLmFyci4oaSkgPC0gU29tZSB4XG5dfVxuICAgSW5zdGVhZCB3ZSB1c2UgdGhlIHR5cGUgWydhIHNsb3RdIGJlbG93LFxuICAgd2hpY2ggYmVoYXZlcyBhcyBhbiBvcHRpb24gd2hvc2UgW1NvbWVdIGNvbnN0cnVjdG9yXG4gICAoY2FsbGVkIFtFbGVtXSBoZXJlKSBoYXMgYSBfbXV0YWJsZV8gYXJndW1lbnQuXG4qKVxuYW5kICdhIHNsb3QgPVxufCBFbXB0eVxufCBFbGVtIG9mIHsgbXV0YWJsZSB2OiAnYSB9XG4oKlxuICAgVGhpcyBnaXZlcyBhbiBhbGxvY2F0aW9uLWZyZWUgaW1wbGVtZW50YXRpb24gb2YgW3NldF0gdGhhdCBjYWxsc1xuICAgW0FycmF5LmdldF0gKGluc3RlYWQgb2YgW0FycmF5LnNldF0pIG9uIHRoZSBiYWNraW5nIGFycmF5IGFuZCB0aGVuXG4gICBtdXRhdGVzIHRoZSBbdl0gcGFyYW1ldGVyLiBJbiBwc2V1ZG8tY29kZTpcbntbXG4gICBsZXQgc2V0IGEgaSB4ID1cbiAgICAgaWYgaSA8IDAgfHwgaSA+PSBhLmxlbmd0aCB0aGVuIGVycm9yIFwib3V0IG9mIGJvdW5kc1wiO1xuICAgICBtYXRjaCBhLmFyci4oaSkgd2l0aFxuICAgICB8IEVtcHR5IC0+IGVycm9yIFwiaW52YWxpZCBzdGF0ZTogbWlzc2luZyBlbGVtZW50XCJcbiAgICAgfCBFbGVtIHMgLT4gcy52IDwtIHhcbl19XG4gICBXaXRoIHRoaXMgYXBwcm9hY2gsIGFjY2Vzc2luZyBhbiBlbGVtZW50IHN0aWxsIHBheXMgdGhlIGNvc3Qgb2YgYW5cbiAgIGV4dHJhIGluZGlyZWN0aW9uIChjb21wYXJlZCB0byBhcHByb2FjaGVzIHRoYXQgZG8gbm90IGJveCBlbGVtZW50c1xuICAgaW4gdGhlIGJhY2tpbmcgYXJyYXkpLCBidXQgb25seSBvcGVyYXRpb25zIHRoYXQgYWRkIG5ldyBlbGVtZW50cyBhdFxuICAgdGhlIGVuZCBvZiB0aGUgYXJyYXkgcGF5IGV4dHJhIGFsbG9jYXRpb25zLlxuXG4gICBUaGVyZSBhcmUgc29tZSBzaXR1YXRpb25zIHdoZXJlIFsnYSBvcHRpb25dIGlzIGJldHRlcjogaXQgbWFrZXNcbiAgIFtwb3BfbGFzdF9vcHRdIG1vcmUgZWZmaWNpZW50IGFzIHRoZSB1bmRlcmx5aW5nIG9wdGlvbiBjYW4gYmVcbiAgIHJldHVybmVkIGRpcmVjdGx5LCBhbmQgaXQgYWxzbyBsZXRzIHVzIHVzZSBbQXJyYXkuYmxpdF0gdG9cbiAgIGltcGxlbWVudCBbYXBwZW5kXS4gV2UgYmVsaWV2ZSB0aGF0IG9wdGltaXppbmcgW2dldF0gYW5kIFtzZXRdIGlzXG4gICBtb3JlIGltcG9ydGFudCBmb3IgZHluYW1pYyBhcnJheXMuXG5cbiAgIHsyIEludmFyaWFudHMgYW5kIHZhbGlkIHN0YXRlc31cblxuICAgV2UgZW5mb3JjZSB0aGUgaW52YXJpYW50IHRoYXQgW2xlbmd0aCA+PSAwXSBhdCBhbGwgdGltZXMuXG4gICB3ZSByZWx5IG9uIHRoaXMgaW52YXJpYW50IGZvciBvcHRpbWl6YXRpb24uXG5cbiAgIFRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBkZWZpbmUgd2hhdCB3ZSBjYWxsIGEgXCJ2YWxpZFwiIGR5bmFycmF5OlxuICAgLSB2YWxpZCBsZW5ndGg6IFtsZW5ndGggPD0gQXJyYXkubGVuZ3RoIGFycl1cbiAgIC0gbm8gbWlzc2luZyBlbGVtZW50IGluIHRoZSBsaXZlIHNwYWNlOlxuICAgICBmb3JhbGwgaSwgWzAgPD0gaSA8IGxlbmd0aF0gaW1wbGllcyBbYXJyLihpKSA8PiBFbXB0eV1cbiAgIC0gbm8gZWxlbWVudCBpbiB0aGUgZW1wdHkgc3BhY2U6XG4gICAgIGZvcmFsbCBpLCBbbGVuZ3RoIDw9IGkgPCBBcnJheS5sZW5ndGggYXJyXSBpbXBsaWVzIFthcnIuKGkpID0gRW1wdHldXG5cbiAgIFVuZm9ydHVuYXRlbHksIHdlIGNhbm5vdCBlYXNpbHkgZW5mb3JjZSB2YWxpZGl0eSBhcyBhbiBpbnZhcmlhbnQgaW5cbiAgIHByZXNlbmNlIG9mIGNvbmN1cnJlbnQgdXBkYXRlcy4gV2UgY2FuIHRodXMgb2JzZXJ2ZSBkeW5hcnJheXMgaW5cbiAgIFwiaW52YWxpZCBzdGF0ZXNcIi4gT3VyIGltcGxlbWVudGF0aW9uIG1heSByYWlzZSBleGNlcHRpb25zIG9yIHJldHVyblxuICAgaW5jb3JyZWN0IHJlc3VsdHMgb24gb2JzZXJ2aW5nIGludmFsaWQgc3RhdGVzLCBidXQgb2YgY291cnNlIGl0XG4gICBtdXN0IHByZXNlcnZlIG1lbW9yeSBzYWZldHkuXG4qKVxuXG5tb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIGluZGV4X291dF9vZl9ib3VuZHMgZiB+aSB+bGVuZ3RoID1cbiAgICBpZiBsZW5ndGggPSAwIHRoZW5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkR5bmFycmF5LiVzOiBpbmRleCAlZCBvdXQgb2YgYm91bmRzIChlbXB0eSBkeW5hcnJheSlcIlxuICAgICAgICBmIGlcbiAgICBlbHNlXG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgICAgXCJEeW5hcnJheS4lczogaW5kZXggJWQgb3V0IG9mIGJvdW5kcyAoMC4uJWQpXCJcbiAgICAgICAgZiBpIChsZW5ndGggLSAxKVxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBuZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIGYgbiA9XG4gICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICBcIkR5bmFycmF5LiVzOiBuZWdhdGl2ZSBsZW5ndGggJWQgcmVxdWVzdGVkXCJcbiAgICAgIGYgblxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBuZWdhdGl2ZV9jYXBhY2l0eV9yZXF1ZXN0ZWQgZiBuID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IG5lZ2F0aXZlIGNhcGFjaXR5ICVkIHJlcXVlc3RlZFwiXG4gICAgICBmIG5cblxuICBsZXRbQGlubGluZSBuZXZlcl0gcmVxdWVzdGVkX2xlbmd0aF9vdXRfb2ZfYm91bmRzIGYgcmVxdWVzdGVkX2xlbmd0aCA9XG4gICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICBcIkR5bmFycmF5LiVzOiBjYW5ub3QgZ3JvdyB0byByZXF1ZXN0ZWQgbGVuZ3RoICVkIChtYXhfYXJyYXlfbGVuZ3RoIGlzICVkKVwiXG4gICAgICBmIHJlcXVlc3RlZF9sZW5ndGggU3lzLm1heF9hcnJheV9sZW5ndGhcblxuICAoKiBXaGVuIG9ic2VydmluZyBhbiBpbnZhbGlkIHN0YXRlIChbbWlzc2luZ19lbGVtZW50XSxcbiAgICAgW2ludmFsaWRfbGVuZ3RoXSksIHdlIGRvIG5vdCBnaXZlIHRoZSBuYW1lIG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uXG4gICAgIGluIHRoZSBlcnJvciBtZXNzYWdlLCBhcyB0aGUgZXJyb3IgaXMgcmVsYXRlZCB0byBpbnZhbGlkIG9wZXJhdGlvbnNcbiAgICAgcGVyZm9ybWVkIGVhcmxpZXIsIGFuZCBub3QgdG8gdGhlIGNhbGxzaXRlIG9mIHRoZSBmdW5jdGlvblxuICAgICBpdHNlbGYuICopXG5cbiAgbGV0IGludmFsaWRfc3RhdGVfZGVzY3JpcHRpb24gPVxuICAgIFwiSW52YWxpZCBkeW5hcnJheSAodW5zeW5jaHJvbml6ZWQgY29uY3VycmVudCBsZW5ndGggY2hhbmdlKVwiXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIG1pc3NpbmdfZWxlbWVudCB+aSB+bGVuZ3RoID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiJXM6IG1pc3NpbmcgZWxlbWVudCBhdCBwb3NpdGlvbiAlZCA8IGxlbmd0aCAlZFwiXG4gICAgICBpbnZhbGlkX3N0YXRlX2Rlc2NyaXB0aW9uXG4gICAgICBpIGxlbmd0aFxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2xlbmd0aCB+bGVuZ3RoIH5jYXBhY2l0eSA9XG4gICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICBcIiVzOiBsZW5ndGggJWQgPiBjYXBhY2l0eSAlZFwiXG4gICAgICBpbnZhbGlkX3N0YXRlX2Rlc2NyaXB0aW9uXG4gICAgICBsZW5ndGggY2FwYWNpdHlcblxuICBsZXRbQGlubGluZSBuZXZlcl0gbGVuZ3RoX2NoYW5nZV9kdXJpbmdfaXRlcmF0aW9uIGYgfmV4cGVjdGVkIH5vYnNlcnZlZCA9XG4gICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICBcIkR5bmFycmF5LiVzOiBhIGxlbmd0aCBjaGFuZ2UgZnJvbSAlZCB0byAlZCBvY2N1cnJlZCBkdXJpbmcgaXRlcmF0aW9uXCJcbiAgICAgIGYgZXhwZWN0ZWQgb2JzZXJ2ZWRcblxuICAoKiBXaGVuIGFuIFtFbXB0eV0gZWxlbWVudCBpcyBvYnNlcnZlZCB1bmV4cGVjdGVkbHkgYXQgaW5kZXggW2ldLFxuICAgICBpdCBtYXkgYmUgZWl0aGVyIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIG9yIGFuIGludmFsaWQtc3RhdGUgc2l0dWF0aW9uXG4gICAgIGRlcGVuZGluZyBvbiB3aGV0aGVyIFtpIDw9IGxlbmd0aF0uICopXG4gIGxldFtAaW5saW5lIG5ldmVyXSB1bmV4cGVjdGVkX2VtcHR5X2VsZW1lbnQgZiB+aSB+bGVuZ3RoID1cbiAgICBpZiBpIDwgbGVuZ3RoIHRoZW5cbiAgICAgIG1pc3NpbmdfZWxlbWVudCB+aSB+bGVuZ3RoXG4gICAgZWxzZVxuICAgICAgaW5kZXhfb3V0X29mX2JvdW5kcyBmIH5pIH5sZW5ndGhcblxuICBsZXRbQGlubGluZSBuZXZlcl0gZW1wdHlfZHluYXJyYXkgZiA9XG4gICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICBcIkR5bmFycmF5LiVzOiBlbXB0eSBhcnJheVwiIGZcbmVuZFxuXG4oKiBEZXRlY3RpbmcgaXRlcmF0b3IgaW52YWxpZGF0aW9uLlxuXG4gICBTZWUgeyFpdGVyfSBiZWxvdyBmb3IgYSBkZXRhaWxlZCB1c2FnZSBleGFtcGxlLlxuKilcbmxldCBjaGVja19zYW1lX2xlbmd0aCBmIGEgfmxlbmd0aCA9XG4gIGxldCBsZW5ndGhfYSA9IGEubGVuZ3RoIGluXG4gIGlmIGxlbmd0aCA8PiBsZW5ndGhfYSB0aGVuXG4gICAgRXJyb3IubGVuZ3RoX2NoYW5nZV9kdXJpbmdfaXRlcmF0aW9uIGZcbiAgICAgIH5leHBlY3RlZDpsZW5ndGggfm9ic2VydmVkOmxlbmd0aF9hXG5cbigqKiBDYXJlZnVsIHVuc2FmZSBhY2Nlc3MuICopXG5cbigqIFBvc3Rjb25kaXRpb24gb24gbm9uLWV4Y2VwdGlvbmFsIHJldHVybjpcbiAgIFtsZW5ndGggPD0gQXJyYXkubGVuZ3RoIGFycl0gKilcbmxldFtAaW5saW5lIGFsd2F5c10gY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnIgPVxuICBsZXQgY2FwYWNpdHkgPSBBcnJheS5sZW5ndGggYXJyIGluXG4gIGlmIGxlbmd0aCA+IGNhcGFjaXR5IHRoZW5cbiAgICBFcnJvci5pbnZhbGlkX2xlbmd0aCB+bGVuZ3RoIH5jYXBhY2l0eVxuXG4oKiBQcmVjb25kaXRpb246IFswIDw9IGkgPCBsZW5ndGggPD0gQXJyYXkubGVuZ3RoIGFycl1cblxuICAgVGhpcyBwcmVjb25kaXRpb24gaXMgdHlwaWNhbGx5IGd1YXJhbnRlZWQgYnkga25vd2luZ1xuICAgWzAgPD0gaSA8IGxlbmd0aF0gYW5kIGNhbGxpbmcgW2NoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyXS4qKVxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoID1cbiAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCBhcnIgaSB3aXRoXG4gIHwgRW1wdHkgLT4gRXJyb3IubWlzc2luZ19lbGVtZW50IH5pIH5sZW5ndGhcbiAgfCBFbGVtIHt2fSAtPiB2XG5cblxuKCoqIHsxOmR5bmFycmF5cyBEeW5hbWljIGFycmF5c30gKilcblxubGV0IGNyZWF0ZSAoKSA9IHtcbiAgbGVuZ3RoID0gMDtcbiAgYXJyID0gW3wgfF07XG59XG5cbmxldCBtYWtlIG4geCA9XG4gIGlmIG4gPCAwIHRoZW4gRXJyb3IubmVnYXRpdmVfbGVuZ3RoX3JlcXVlc3RlZCBcIm1ha2VcIiBuO1xuICB7XG4gICAgbGVuZ3RoID0gbjtcbiAgICBhcnIgPSBBcnJheS5pbml0IG4gKGZ1biBfIC0+IEVsZW0ge3YgPSB4fSk7XG4gIH1cblxubGV0IGluaXQgbiBmID1cbiAgaWYgbiA8IDAgdGhlbiBFcnJvci5uZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIFwiaW5pdFwiIG47XG4gIHtcbiAgICBsZW5ndGggPSBuO1xuICAgIGFyciA9IEFycmF5LmluaXQgbiAoZnVuIGkgLT4gRWxlbSB7diA9IGYgaX0pO1xuICB9XG5cbmxldCBnZXQgYSBpID1cbiAgKCogVGhpcyBpbXBsZW1lbnRhdGlvbiB3aWxsIHByb3BhZ2F0ZSBhbiBbSW52YWxpZF9hcmd1bWVudF0gZXhjZXB0aW9uXG4gICAgIGZyb20gYXJyYXkgbG9va3VwIGlmIHRoZSBpbmRleCBpcyBvdXQgb2YgdGhlIGJhY2tpbmcgYXJyYXksXG4gICAgIGluc3RlYWQgb2YgdXNpbmcgb3VyIG93biBbRXJyb3IuaW5kZXhfb3V0X29mX2JvdW5kc10uIFRoaXMgaXNcbiAgICAgYWxsb3dlZCBieSBvdXIgc3BlY2lmaWNhdGlvbiwgYW5kIG1vcmUgZWZmaWNpZW50IC0tIG5vIG5lZWQgdG9cbiAgICAgY2hlY2sgdGhhdCBbbGVuZ3RoIGEgPD0gY2FwYWNpdHkgYV0gaW4gdGhlIGZhc3QgcGF0aC4gKilcbiAgbWF0Y2ggYS5hcnIuKGkpIHdpdGhcbiAgfCBFbGVtIHMgLT4gcy52XG4gIHwgRW1wdHkgLT5cbiAgICAgIEVycm9yLnVuZXhwZWN0ZWRfZW1wdHlfZWxlbWVudCBcImdldFwiIH5pIH5sZW5ndGg6YS5sZW5ndGhcblxubGV0IHNldCBhIGkgeCA9XG4gICgqIFNlZSB7IWdldH0gY29tbWVudCBvbiB0aGUgdXNlIG9mIGNoZWNrZWQgYXJyYXlcbiAgICAgYWNjZXNzIHdpdGhvdXQgb3VyIG93biBib3VuZCBjaGVja2luZy4gKilcbiAgbWF0Y2ggYS5hcnIuKGkpIHdpdGhcbiAgfCBFbGVtIHMgLT4gcy52IDwtIHhcbiAgfCBFbXB0eSAtPlxuICAgICAgRXJyb3IudW5leHBlY3RlZF9lbXB0eV9lbGVtZW50IFwic2V0XCIgfmkgfmxlbmd0aDphLmxlbmd0aFxuXG5sZXQgbGVuZ3RoIGEgPSBhLmxlbmd0aFxuXG5sZXQgaXNfZW1wdHkgYSA9IChhLmxlbmd0aCA9IDApXG5cbmxldCBjb3B5IHtsZW5ndGg7IGFycn0gPVxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgKCogdXNlIFtsZW5ndGhdIGFzIHRoZSBuZXcgY2FwYWNpdHkgdG8gbWFrZVxuICAgICB0aGlzIGFuIE8obGVuZ3RoKSBvcGVyYXRpb24uICopXG4gIHtcbiAgICBsZW5ndGg7XG4gICAgYXJyID0gQXJyYXkuaW5pdCBsZW5ndGggKGZ1biBpIC0+XG4gICAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICAgIEVsZW0ge3Z9XG4gICAgKTtcbiAgfVxuXG5sZXQgZ2V0X2xhc3QgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgKCogV2Uga25vdyBbbGVuZ3RoIDw9IGNhcGFjaXR5IGFdLiAqKVxuICBpZiBsZW5ndGggPSAwIHRoZW4gRXJyb3IuZW1wdHlfZHluYXJyYXkgXCJnZXRfbGFzdFwiO1xuICAoKiBXZSBrbm93IFtsZW5ndGggPiAwXS4gKilcbiAgdW5zYWZlX2dldCBhcnIgfmk6KGxlbmd0aCAtIDEpIH5sZW5ndGhcblxubGV0IGZpbmRfbGFzdCBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICAoKiBXZSBrbm93IFtsZW5ndGggPD0gY2FwYWNpdHkgYV0uICopXG4gIGlmIGxlbmd0aCA9IDAgdGhlbiBOb25lXG4gIGVsc2VcbiAgICAoKiBXZSBrbm93IFtsZW5ndGggPiAwXS4gKilcbiAgICBTb21lICh1bnNhZmVfZ2V0IGFyciB+aToobGVuZ3RoIC0gMSkgfmxlbmd0aClcblxuKCoqIHsxOnJlbW92aW5nIFJlbW92aW5nIGVsZW1lbnRzfSAqKVxuXG5sZXQgcG9wX2xhc3QgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgKCogV2Uga25vdyBbbGVuZ3RoIDw9IGNhcGFjaXR5IGFdLiAqKVxuICBpZiBsZW5ndGggPSAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgbGFzdCA9IGxlbmd0aCAtIDEgaW5cbiAgKCogV2Uga25vdyBbbGVuZ3RoID4gMF0gc28gW2xhc3QgPj0gMF0uICopXG4gIG1hdGNoIEFycmF5LnVuc2FmZV9nZXQgYXJyIGxhc3Qgd2l0aFxuICB8IEVtcHR5IC0+XG4gICAgICBFcnJvci5taXNzaW5nX2VsZW1lbnQgfmk6bGFzdCB+bGVuZ3RoXG4gIHwgRWxlbSBzIC0+XG4gICAgICBBcnJheS51bnNhZmVfc2V0IGFyciBsYXN0IEVtcHR5O1xuICAgICAgYS5sZW5ndGggPC0gbGFzdDtcbiAgICAgIHMudlxuXG5sZXQgcG9wX2xhc3Rfb3B0IGEgPVxuICBtYXRjaCBwb3BfbGFzdCBhIHdpdGhcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcbiAgfCB4IC0+IFNvbWUgeFxuXG5sZXQgcmVtb3ZlX2xhc3QgYSA9XG4gIGxldCBsYXN0ID0gbGVuZ3RoIGEgLSAxIGluXG4gIGlmIGxhc3QgPj0gMCB0aGVuIGJlZ2luXG4gICAgYS5sZW5ndGggPC0gbGFzdDtcbiAgICBhLmFyci4obGFzdCkgPC0gRW1wdHk7XG4gIGVuZFxuXG5sZXQgdHJ1bmNhdGUgYSBuID1cbiAgaWYgbiA8IDAgdGhlbiBFcnJvci5uZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIFwidHJ1bmNhdGVcIiBuO1xuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgaWYgbGVuZ3RoIDw9IG4gdGhlbiAoKVxuICBlbHNlIGJlZ2luXG4gICAgYS5sZW5ndGggPC0gbjtcbiAgICBBcnJheS5maWxsIGFyciBuIChsZW5ndGggLSBuKSBFbXB0eTtcbiAgZW5kXG5cbmxldCBjbGVhciBhID0gdHJ1bmNhdGUgYSAwXG5cblxuKCoqIHsxOmNhcGFjaXR5IEJhY2tpbmcgYXJyYXkgYW5kIGNhcGFjaXR5fSAqKVxuXG5sZXQgY2FwYWNpdHkgYSA9IEFycmF5Lmxlbmd0aCBhLmFyclxuXG5sZXQgbmV4dF9jYXBhY2l0eSBuID1cbiAgbGV0IG4nID1cbiAgICAoKiBGb3IgbGFyZ2UgdmFsdWVzIG9mIG4sIHdlIHVzZSAxLjUgYXMgb3VyIGdyb3d0aCBmYWN0b3IuXG5cbiAgICAgICBGb3Igc21hbGxlciB2YWx1ZXMgb2Ygbiwgd2UgZ3JvdyBtb3JlIGFnZ3Jlc3NpdmVseSB0byBhdm9pZFxuICAgICAgIHJlYWxsb2NhdGluZyB0b28gbXVjaCB3aGVuIGFjY3VtdWxhdGluZyBlbGVtZW50cyBpbnRvIGFuIGVtcHR5XG4gICAgICAgYXJyYXkuXG5cbiAgICAgICBUaGUgY29uc3RhbnRzIFwiNTEyIHdvcmRzXCIgYW5kIFwiOCB3b3Jkc1wiIGJlbG93IGFyZSB0YWtlbiBmcm9tXG4gICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZm9sbHkvYmxvYi9cbiAgICAgICAgICAgYzA2YzBmNDFkOTFkYWYxYTZhNWYzZmMxY2Q0NjUzMDJhYzI2MDQ1OS9mb2xseS9GQlZlY3Rvci5oI0wxMTI4LUwxMTU3XG4gICAgKilcbiAgICBpZiBuIDw9IDUxMiB0aGVuIG4gKiAyXG4gICAgZWxzZSBuICsgbiAvIDJcbiAgaW5cbiAgKCoganVtcCBkaXJlY3RseSBmcm9tIDAgdG8gOCAqKVxuICBtaW4gKG1heCA4IG4nKSBTeXMubWF4X2FycmF5X2xlbmd0aFxuXG5sZXQgZW5zdXJlX2NhcGFjaXR5IGEgY2FwYWNpdHlfcmVxdWVzdCA9XG4gIGxldCBhcnIgPSBhLmFyciBpblxuICBsZXQgY3VyX2NhcGFjaXR5ID0gQXJyYXkubGVuZ3RoIGFyciBpblxuICBpZiBjYXBhY2l0eV9yZXF1ZXN0IDwgMCB0aGVuXG4gICAgRXJyb3IubmVnYXRpdmVfY2FwYWNpdHlfcmVxdWVzdGVkIFwiZW5zdXJlX2NhcGFjaXR5XCIgY2FwYWNpdHlfcmVxdWVzdFxuICBlbHNlIGlmIGN1cl9jYXBhY2l0eSA+PSBjYXBhY2l0eV9yZXF1ZXN0IHRoZW5cbiAgICAoKiBUaGlzIGlzIHRoZSBmYXN0IHBhdGgsIHRoZSBjb2RlIHVwIHRvIGhlcmUgbXVzdCBkbyBhcyBsaXR0bGUgYXNcbiAgICAgICBwb3NzaWJsZS4gKFRoaXMgaXMgd2h5IHdlIGRvbid0IHVzZSBbbGV0IHthcnI7IGxlbmd0aH0gPSBhXSBhc1xuICAgICAgIHVzdWFsLCB0aGUgbGVuZ3RoIGlzIG5vdCBuZWVkZWQgaW4gdGhlIGZhc3QgcGF0aC4pKilcbiAgICAoKVxuICBlbHNlIGJlZ2luXG4gICAgaWYgY2FwYWNpdHlfcmVxdWVzdCA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW5cbiAgICAgIEVycm9yLnJlcXVlc3RlZF9sZW5ndGhfb3V0X29mX2JvdW5kcyBcImVuc3VyZV9jYXBhY2l0eVwiIGNhcGFjaXR5X3JlcXVlc3Q7XG4gICAgbGV0IG5ld19jYXBhY2l0eSA9XG4gICAgICAoKiBXZSB1c2UgZWl0aGVyIHRoZSBuZXh0IGV4cG9uZW50aWFsLWdyb3d0aCBzdHJhdGVneSxcbiAgICAgICAgIG9yIHRoZSByZXF1ZXN0ZWQgc3RyYXRlZ3ksIHdoaWNoZXZlciBpcyBiaWdnZXIuXG5cbiAgICAgICAgIENvbXBhcmVkIHRvIG9ubHkgdXNpbmcgdGhlIGV4cG9uZW50aWFsLWdyb3d0aCBzdHJhdGVneSwgdGhpc1xuICAgICAgICAgbGV0cyB1cyB1c2UgbGVzcyBtZW1vcnkgYnkgYXZvaWRpbmcgYW55IG92ZXJzaG9vdCB3aGVuZXZlclxuICAgICAgICAgdGhlIGNhcGFjaXR5IHJlcXVlc3QgaXMgbm90aWNlYWJseSBsYXJnZXIgdGhhbiB0aGUgY3VycmVudFxuICAgICAgICAgY2FwYWNpdHkuXG5cbiAgICAgICAgIENvbXBhcmVkIHRvIG9ubHkgdXNpbmcgdGhlIHJlcXVlc3RlZCBjYXBhY2l0eSwgdGhpcyBhdm9pZHNcbiAgICAgICAgIGxvc2luZyB0aGUgYW1vcnRpemVkIGd1YXJhbnRlZTogd2UgYWxsb2NhdGVkIFwiZXhwb25lbnRpYWxseVxuICAgICAgICAgb3IgbW9yZVwiLCBzbyB0aGUgYW1vcnRpemF0aW9uIGhvbGRzLiBJbiBwYXJ0aWN1bGFyLCBub3RpY2VcbiAgICAgICAgIHRoYXQgcmVwZWF0ZWQgY2FsbHMgdG8gW2Vuc3VyZV9jYXBhY2l0eSBhIChsZW5ndGggYSArIDEpXVxuICAgICAgICAgd2lsbCBoYXZlIGFtb3J0aXplZC1saW5lYXIgcmF0aGVyIHRoYW4gcXVhZHJhdGljIGNvbXBsZXhpdHkuXG4gICAgICAqKVxuICAgICAgbWF4IChuZXh0X2NhcGFjaXR5IGN1cl9jYXBhY2l0eSkgY2FwYWNpdHlfcmVxdWVzdCBpblxuICAgIGxldCBuZXdfYXJyID0gQXJyYXkubWFrZSBuZXdfY2FwYWNpdHkgRW1wdHkgaW5cbiAgICBBcnJheS5ibGl0IGFyciAwIG5ld19hcnIgMCBhLmxlbmd0aDtcbiAgICBhLmFyciA8LSBuZXdfYXJyO1xuICAgICgqIHBvc3Rjb25kaXRpb246ICopXG4gICAgYXNzZXJ0ICgwIDw9IGNhcGFjaXR5X3JlcXVlc3QpO1xuICAgIGFzc2VydCAoY2FwYWNpdHlfcmVxdWVzdCA8PSBBcnJheS5sZW5ndGggbmV3X2Fycik7XG4gIGVuZFxuXG5sZXQgZW5zdXJlX2V4dHJhX2NhcGFjaXR5IGEgZXh0cmFfY2FwYWNpdHlfcmVxdWVzdCA9XG4gIGVuc3VyZV9jYXBhY2l0eSBhIChsZW5ndGggYSArIGV4dHJhX2NhcGFjaXR5X3JlcXVlc3QpXG5cbmxldCBmaXRfY2FwYWNpdHkgYSA9XG4gIGlmIGNhcGFjaXR5IGEgPSBhLmxlbmd0aFxuICB0aGVuICgpXG4gIGVsc2UgYS5hcnIgPC0gQXJyYXkuc3ViIGEuYXJyIDAgYS5sZW5ndGhcblxubGV0IHNldF9jYXBhY2l0eSBhIG4gPVxuICBpZiBuIDwgMCB0aGVuXG4gICAgRXJyb3IubmVnYXRpdmVfY2FwYWNpdHlfcmVxdWVzdGVkIFwic2V0X2NhcGFjaXR5XCIgbjtcbiAgbGV0IGFyciA9IGEuYXJyIGluXG4gIGxldCBjdXJfY2FwYWNpdHkgPSBBcnJheS5sZW5ndGggYXJyIGluXG4gIGlmIG4gPCBjdXJfY2FwYWNpdHkgdGhlbiBiZWdpblxuICAgIGEubGVuZ3RoIDwtIG1pbiBhLmxlbmd0aCBuO1xuICAgIGEuYXJyIDwtIEFycmF5LnN1YiBhcnIgMCBuO1xuICBlbmRcbiAgZWxzZSBpZiBuID4gY3VyX2NhcGFjaXR5IHRoZW4gYmVnaW5cbiAgICBsZXQgbmV3X2FyciA9IEFycmF5Lm1ha2UgbiBFbXB0eSBpblxuICAgIEFycmF5LmJsaXQgYXJyIDAgbmV3X2FyciAwIGEubGVuZ3RoO1xuICAgIGEuYXJyIDwtIG5ld19hcnI7XG4gIGVuZFxuXG5sZXQgcmVzZXQgYSA9XG4gIGEubGVuZ3RoIDwtIDA7XG4gIGEuYXJyIDwtIFt8fF1cblxuKCoqIHsxOmFkZGluZyBBZGRpbmcgZWxlbWVudHN9ICopXG5cbigqIFdlIGNob3NlIGFuIGltcGxlbWVudGF0aW9uIG9mIFthZGRfbGFzdCBhIHhdIHRoYXQgYmVoYXZlcyBjb3JyZWN0bHlcbiAgIGluIHByZXNlbmNlIG9mIGFzeW5jaHJvbm91cyAvIHJlLWVudHJhbnQgY29kZSBleGVjdXRpb24gYXJvdW5kXG4gICBhbGxvY2F0aW9ucyBhbmQgcG9sbCBwb2ludHM6IGlmIGFub3RoZXIgdGhyZWFkIG9yIGEgY2FsbGJhY2sgZ2V0c1xuICAgZXhlY3V0ZWQgb24gYWxsb2NhdGlvbiwgd2UgYWRkIHRoZSBlbGVtZW50IGF0IHRoZSBuZXcgZW5kIG9mIHRoZVxuICAgZHluYW1pYyBhcnJheS5cblxuICAgKFdlIGRvIG5vdCBnaXZlIHRoZSBzYW1lIGd1YXJhbnRlZXMgaW4gcHJlc2VuY2Ugb2YgY29uY3VycmVudFxuICAgcGFyYWxsZWwgdXBkYXRlcywgd2hpY2ggYXJlIG11Y2ggbW9yZSBleHBlbnNpdmUgdG8gcHJvdGVjdFxuICAgYWdhaW5zdC4pXG4qKVxuXG4oKiBbYWRkX2xhc3RfaWZfcm9vbSBhIGVsZW1dIG9ubHkgd3JpdGVzIHRoZSBzbG90IGlmIHRoZXJlIGlzIHJvb20sIGFuZFxuICAgcmV0dXJucyBbZmFsc2VdIG90aGVyd2lzZS4gKilcbmxldFtAaW5saW5lXSBhZGRfbGFzdF9pZl9yb29tIGEgZWxlbSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICAoKiB3ZSBrbm93IFswIDw9IGxlbmd0aF0gKilcbiAgaWYgbGVuZ3RoID49IEFycmF5Lmxlbmd0aCBhcnIgdGhlbiBmYWxzZVxuICBlbHNlIGJlZ2luXG4gICAgKCogd2Uga25vdyBbMCA8PSBsZW5ndGggPCBBcnJheS5sZW5ndGggYXJyXSAqKVxuICAgIGEubGVuZ3RoIDwtIGxlbmd0aCArIDE7XG4gICAgQXJyYXkudW5zYWZlX3NldCBhcnIgbGVuZ3RoIGVsZW07XG4gICAgdHJ1ZVxuICBlbmRcblxubGV0IGFkZF9sYXN0IGEgeCA9XG4gIGxldCBlbGVtID0gRWxlbSB7diA9IHh9IGluXG4gIGlmIGFkZF9sYXN0X2lmX3Jvb20gYSBlbGVtIHRoZW4gKClcbiAgZWxzZSBiZWdpblxuICAgICgqIHNsb3cgcGF0aCAqKVxuICAgIGxldCByZWMgZ3Jvd19hbmRfYWRkIGEgZWxlbSA9XG4gICAgICBlbnN1cmVfZXh0cmFfY2FwYWNpdHkgYSAxO1xuICAgICAgaWYgbm90IChhZGRfbGFzdF9pZl9yb29tIGEgZWxlbSlcbiAgICAgIHRoZW4gZ3Jvd19hbmRfYWRkIGEgZWxlbVxuICAgIGluIGdyb3dfYW5kX2FkZCBhIGVsZW1cbiAgZW5kXG5cbmxldCByZWMgYXBwZW5kX2xpc3QgYSBsaSA9XG4gIG1hdGNoIGxpIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IHggOjogeHMgLT4gYWRkX2xhc3QgYSB4OyBhcHBlbmRfbGlzdCBhIHhzXG5cbmxldCBhcHBlbmRfaXRlciBhIGl0ZXIgYiA9XG4gIGl0ZXIgKGZ1biB4IC0+IGFkZF9sYXN0IGEgeCkgYlxuXG5sZXQgYXBwZW5kX3NlcSBhIHNlcSA9XG4gIFNlcS5pdGVyIChmdW4geCAtPiBhZGRfbGFzdCBhIHgpIHNlcVxuXG4oKiBhcHBlbmRfYXJyYXk6IHNhbWUgWy4uLl9pZl9yb29tXSBhbmQgbG9vcCBsb2dpYyBhcyBbYWRkX2xhc3RdLiAqKVxuXG5sZXQgYXBwZW5kX2FycmF5X2lmX3Jvb20gYSBiID1cbiAgbGV0IHthcnI7IGxlbmd0aCA9IGxlbmd0aF9hfSA9IGEgaW5cbiAgbGV0IGxlbmd0aF9iID0gQXJyYXkubGVuZ3RoIGIgaW5cbiAgaWYgbGVuZ3RoX2EgKyBsZW5ndGhfYiA+IEFycmF5Lmxlbmd0aCBhcnIgdGhlbiBmYWxzZVxuICBlbHNlIGJlZ2luXG4gICAgYS5sZW5ndGggPC0gbGVuZ3RoX2EgKyBsZW5ndGhfYjtcbiAgICAoKiBOb3RlOiB3ZSBpbnRlbnRpb25hbGx5IHVwZGF0ZSB0aGUgbGVuZ3RoICpiZWZvcmUqIGZpbGxpbmcgdGhlXG4gICAgICAgZWxlbWVudHMuIFRoaXMgXCJyZXNlcnZlIGJlZm9yZSBmaWxsXCIgYXBwcm9hY2ggcHJvdmlkZXMgYmV0dGVyXG4gICAgICAgYmVoYXZpb3IgdGhhbiBcImZpbGwgdGhlbiBub3RpZnlcIiBpbiBwcmVzZW5jZSBvZiByZWVudHJhbnRcbiAgICAgICBtb2RpZmljYXRpb25zICh3aGljaCBtYXkgb2NjdXIgYmVsb3csIG9uIGEgcG9sbCBwb2ludCBpbiB0aGUgbG9vcCBvclxuICAgICAgIHRoZSBbRWxlbV0gYWxsb2NhdGlvbik6XG5cbiAgICAgICAtIElmIHNvbWUgY29kZSBhc3luY2hyb25vdXNseSBhZGRzIG5ldyBlbGVtZW50cyBhZnRlciB0aGlzXG4gICAgICAgICBsZW5ndGggdXBkYXRlLCB0aGV5IHdpbGwgZ28gYWZ0ZXIgdGhlIHNwYWNlIHdlIGp1c3QgcmVzZXJ2ZWQsXG4gICAgICAgICBhbmQgaW4gcGFydGljdWxhciBubyBhZGRpdGlvbiB3aWxsIGJlIGxvc3QuIElmIGluc3RlYWQgd2VcbiAgICAgICAgIHVwZGF0ZWQgdGhlIGxlbmd0aCBhZnRlciB0aGUgbG9vcCwgYW55IGFzeW5jaHJvbm91cyBhZGRpdGlvblxuICAgICAgICAgZHVyaW5nIHRoZSBsb29wIGNvdWxkIGJlIGVyYXNlZCBvciBlcmFzZSBvbmUgb2Ygb3VyIGFkZGl0aW9ucyxcbiAgICAgICAgIHNpbGVudGx5LCB3aXRob3V0IHdhcm5pbmcgdGhlIHVzZXIuXG5cbiAgICAgICAtIElmIHNvbWUgY29kZSBhc3luY2hyb25vdXNseSBpdGVyYXRlcyBvbiB0aGUgZHluYXJyYXksIG9yXG4gICAgICAgICByZW1vdmVzIGVsZW1lbnRzLCBvciBvdGhlcndpc2UgdHJpZXMgdG8gYWNjZXNzIHRoZVxuICAgICAgICAgcmVzZXJ2ZWQtYnV0LW5vdC15ZXQtZmlsbGVkIHNwYWNlLCBpdCB3aWxsIGdldCBhIGNsZWFuIFwibWlzc2luZ1xuICAgICAgICAgZWxlbWVudFwiIGVycm9yLiBUaGlzIGlzIHdvcnNlIHRoYW4gd2l0aCB0aGUgZmlsbC10aGVuLW5vdGlmeVxuICAgICAgICAgYXBwcm9hY2ggd2hlcmUgdGhlIG5ldyBlbGVtZW50cyB3b3VsZCBvbmx5IGJlY29tZSB2aXNpYmxlXG4gICAgICAgICAodG8gaXRlcmF0b3JzLCBmb3IgcmVtb3ZhbCwgZXRjLikgYWxsdG9nZXRoZXIgYXQgdGhlIGVuZCBvZlxuICAgICAgICAgbG9vcC5cblxuICAgICAgIFRvIHN1bW1hcmlzZSwgXCJyZXNlcnZlIGJlZm9yZSBmaWxsXCIgaXMgYmV0dGVyIG9uIGFkZC1hZGQgcmFjZXMsXG4gICAgICAgYW5kIFwiZmlsbCB0aGVuIG5vdGlmeVwiIGlzIGJldHRlciBvbiBhZGQtcmVtb3ZlIG9yIGFkZC1pdGVyYXRlXG4gICAgICAgcmFjZXMuIEJ1dCB0aGUga2V5IGRpZmZlcmVuY2UgaXMgdGhlIGZhaWx1cmUgbW9kZTpcbiAgICAgICByZXNlcnZlLWJlZm9yZSBmYWlscyBvbiBhZGQtcmVtb3ZlIG9yIGFkZC1pdGVyYXRlIHJhY2VzIHdpdGhcbiAgICAgICBhIGNsZWFuIGVycm9yLCB3aGlsZSBub3RpZnktYWZ0ZXIgZmFpbHMgb24gYWRkLWFkZCByYWNlcyB3aXRoXG4gICAgICAgc2lsZW50bHkgZGlzYXBwZWFyaW5nIGRhdGEuICopXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aF9iIC0gMSBkb1xuICAgICAgbGV0IHggPSBBcnJheS51bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgQXJyYXkudW5zYWZlX3NldCBhcnIgKGxlbmd0aF9hICsgaSkgKEVsZW0ge3YgPSB4fSlcbiAgICBkb25lO1xuICAgIHRydWVcbiAgZW5kXG5cbmxldCBhcHBlbmRfYXJyYXkgYSBiID1cbiAgaWYgYXBwZW5kX2FycmF5X2lmX3Jvb20gYSBiIHRoZW4gKClcbiAgZWxzZSBiZWdpblxuICAgICgqIHNsb3cgcGF0aCAqKVxuICAgIGxldCByZWMgZ3Jvd19hbmRfYXBwZW5kIGEgYiA9XG4gICAgICBlbnN1cmVfZXh0cmFfY2FwYWNpdHkgYSAoQXJyYXkubGVuZ3RoIGIpO1xuICAgICAgaWYgbm90IChhcHBlbmRfYXJyYXlfaWZfcm9vbSBhIGIpXG4gICAgICB0aGVuIGdyb3dfYW5kX2FwcGVuZCBhIGJcbiAgICBpbiBncm93X2FuZF9hcHBlbmQgYSBiICBlbmRcblxuKCogYXBwZW5kOiBzYW1lIFsuLi5faWZfcm9vbV0gYW5kIGxvb3AgbG9naWMgYXMgW2FkZF9sYXN0XSxcbiAgIHNhbWUgcmVzZXJ2ZS1iZWZvcmUtZmlsbCBsb2dpYyBhcyBbYXBwZW5kX2FycmF5XS4gKilcblxuKCogSXQgaXMgYSBwcm9ncmFtbWluZyBlcnJvciB0byBtdXRhdGUgdGhlIGxlbmd0aCBvZiBbYl0gZHVyaW5nIGEgY2FsbFxuICAgdG8gW2FwcGVuZCBhIGJdLiBUbyBkZXRlY3QgdGhpcyBtaXN0YWtlIHdlIGtlZXAgdHJhY2sgb2YgdGhlIGxlbmd0aFxuICAgb2YgW2JdIHRocm91Z2hvdXQgdGhlIGNvbXB1dGF0aW9uIGFuZCBjaGVjayBpdCB0aGF0IGRvZXMgbm90XG4gICBjaGFuZ2UuXG4qKVxubGV0IGFwcGVuZF9pZl9yb29tIGEgYiB+bGVuZ3RoX2IgPVxuICBsZXQge2FyciA9IGFycl9hOyBsZW5ndGggPSBsZW5ndGhfYX0gPSBhIGluXG4gIGlmIGxlbmd0aF9hICsgbGVuZ3RoX2IgPiBBcnJheS5sZW5ndGggYXJyX2EgdGhlbiBmYWxzZVxuICBlbHNlIGJlZ2luXG4gICAgYS5sZW5ndGggPC0gbGVuZ3RoX2EgKyBsZW5ndGhfYjtcbiAgICBsZXQgYXJyX2IgPSBiLmFyciBpblxuICAgIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGhfYiBhcnJfYjtcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoX2IgLSAxIGRvXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYXJyX2Igfmkgfmxlbmd0aDpsZW5ndGhfYiBpblxuICAgICAgQXJyYXkudW5zYWZlX3NldCBhcnJfYSAobGVuZ3RoX2EgKyBpKSAoRWxlbSB7diA9IHh9KVxuICAgIGRvbmU7XG4gICAgY2hlY2tfc2FtZV9sZW5ndGggXCJhcHBlbmRcIiBiIH5sZW5ndGg6bGVuZ3RoX2I7XG4gICAgdHJ1ZVxuICBlbmRcblxubGV0IGFwcGVuZCBhIGIgPVxuICBsZXQgbGVuZ3RoX2IgPSBsZW5ndGggYiBpblxuICBpZiBhcHBlbmRfaWZfcm9vbSBhIGIgfmxlbmd0aF9iIHRoZW4gKClcbiAgZWxzZSBiZWdpblxuICAgICgqIHNsb3cgcGF0aCAqKVxuICAgIGxldCByZWMgZ3Jvd19hbmRfYXBwZW5kIGEgYiB+bGVuZ3RoX2IgPVxuICAgICAgZW5zdXJlX2V4dHJhX2NhcGFjaXR5IGEgbGVuZ3RoX2I7XG4gICAgICAoKiBFbGlkaW5nIHRoZSBbY2hlY2tfc2FtZV9sZW5ndGhdIGNhbGwgYmVsb3cgd291bGQgYmUgd3JvbmcgaW5cbiAgICAgICAgIHRoZSBjYXNlIHdoZXJlIFthXSBhbmQgW2JdIGFyZSBhbGlhc2VzIG9mIGVhY2ggb3RoZXIsIHdlXG4gICAgICAgICB3b3VsZCBnZXQgaW50byBhbiBpbmZpbml0ZSBsb29wIGluc3RlYWQgb2YgZmFpbGluZy5cblxuICAgICAgICAgV2UgY291bGQgcHVzaCB0aGUgY2FsbCB0byBbYXBwZW5kX2lmX3Jvb21dIGl0c2VsZiwgYnV0IHdlXG4gICAgICAgICBwcmVmZXIgdG8ga2VlcCBpdCBpbiB0aGUgc2xvdyBwYXRoLiAgKilcbiAgICAgIGNoZWNrX3NhbWVfbGVuZ3RoIFwiYXBwZW5kXCIgYiB+bGVuZ3RoOmxlbmd0aF9iO1xuICAgICAgaWYgbm90IChhcHBlbmRfaWZfcm9vbSBhIGIgfmxlbmd0aF9iKVxuICAgICAgdGhlbiBncm93X2FuZF9hcHBlbmQgYSBiIH5sZW5ndGhfYlxuICAgIGluIGdyb3dfYW5kX2FwcGVuZCBhIGIgfmxlbmd0aF9iXG4gIGVuZFxuXG5cblxuKCoqIHsxOml0ZXJhdGlvbiBJdGVyYXRpb259ICopXG5cbigqIFRoZSBpbXBsZW1lbnRhdGlvbiBjaG9pY2UgdGhhdCB3ZSBtYWRlIGZvciBpdGVyYXRvcnMgaXMgdGhlIG9uZVxuICAgdGhhdCBtYXhpbWl6ZXMgZWZmaWNpZW5jeSBieSBhdm9pZGluZyByZXBlYXRlZCBib3VuZCBjaGVja2luZzogd2VcbiAgIGNoZWNrIHRoZSBsZW5ndGggb2YgdGhlIGR5bmFtaWMgYXJyYXkgb25jZSBhdCB0aGUgYmVnaW5uaW5nLCBhbmRcbiAgIHRoZW4gb25seSBvcGVyYXRlIG9uIHRoYXQgcG9ydGlvbiBvZiB0aGUgZHluYXJyYXksIGlnbm9yaW5nXG4gICBlbGVtZW50cyBhZGRlZCBpbiB0aGUgbWVhbnRpbWUuXG5cbiAgIFRoZSBzcGVjaWZpY2F0aW9uIHN0YXRlcyB0aGF0IGl0IGlzIGEgcHJvZ3JhbW1pbmcgZXJyb3IgdG8gbXV0YXRlXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSBkdXJpbmcgaXRlcmF0aW9uLiBXZSBjaGVjayBmb3IgdGhpcyBhbmRcbiAgIHJhaXNlIGFuIGVycm9yIG9uIHNpemUgY2hhbmdlLlxuICAgTm90ZSB0aGF0IHdlIG1heSBzdGlsbCBtaXNzIHNvbWUgdHJhbnNpZW50IHN0YXRlIGNoYW5nZXMgdGhhdCBjYW5jZWxcbiAgIGVhY2ggb3RoZXIgYW5kIGxlYXZlIHRoZSBsZW5ndGggdW5jaGFuZ2VkIGF0IHRoZSBuZXh0IGNoZWNrLlxuKilcblxubGV0IGl0ZXJfIGYgayBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gICgqIFtjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycl0gaXMgdXNlZCBmb3IgbWVtb3J5IHNhZmV0eSwgaXRcbiAgICAgZ3VhcmFudGVlcyB0aGF0IHRoZSBiYWNraW5nIGFycmF5IGhhcyBjYXBhY2l0eSBhdCBsZWFzdCBbbGVuZ3RoXSxcbiAgICAgYWxsb3dpbmcgdW5zYWZlIGFycmF5IGFjY2Vzcy5cblxuICAgICBbY2hlY2tfc2FtZV9sZW5ndGhdIGlzIHVzZWQgZm9yIGNvcnJlY3RuZXNzLCBpdCBsZXRzIHRoZSBmdW5jdGlvblxuICAgICBmYWlsIG1vcmUgb2Z0ZW4gaWYgd2UgZGlzY292ZXIgdGhlIHByb2dyYW1taW5nIGVycm9yIG9mIG11dGF0aW5nXG4gICAgIHRoZSBsZW5ndGggZHVyaW5nIGl0ZXJhdGlvbi5cblxuICAgICBXZSBjb3VsZCwgbmFpdmVseSwgY2FsbCBbY2hlY2tfc2FtZV9sZW5ndGhdIGF0IGVhY2ggaXRlcmF0aW9uIG9mXG4gICAgIHRoZSBsb29wIChiZWZvcmUgb3IgYWZ0ZXIsIG9yIGJvdGgpLiBIb3dldmVyLCBub3RpY2UgdGhhdCB0aGlzIGlzXG4gICAgIG5vdCBuZWNlc3NhcnkgdG8gZGV0ZWN0IHRoZSByZW1vdmFsIG9mIGVsZW1lbnRzIGZyb20gW2FdOiBpZlxuICAgICBlbGVtZW50cyBoYXZlIGJlZW4gcmVtb3ZlZCBieSB0aGUgdGltZSB0aGUgW2Zvcl0gbG9vcCByZWFjaGVzXG4gICAgIHRoZW0sIHRoZW4gW3Vuc2FmZV9nZXRdIHdpbGwgaXRzZWxmIGZhaWwgd2l0aCBhbiBbSW52YWxpZF9hcmd1bWVudF1cbiAgICAgZXhjZXB0aW9uLiBXZSBvbmx5IG5lZWQgdG8gZGV0ZWN0IHRoZSBhZGRpdGlvbiBvZiBuZXcgZWxlbWVudHMgdG9cbiAgICAgW2FdIGR1cmluZyBpdGVyYXRpb24sIGFuZCBmb3IgdGhpcyBpdCBpcyBlbm91Z2ggdG8gY2FsbFxuICAgICBbY2hlY2tfc2FtZV9sZW5ndGhdIG9uY2UgYXQgdGhlIGVuZC5cblxuICAgICBDYWxsaW5nIFtjaGVja19zYW1lX2xlbmd0aF0gbW9yZSBvZnRlbiBjb3VsZCBjYXRjaCBtb3JlXG4gICAgIHByb2dyYW1taW5nIGVycm9ycywgYnV0IHRoZSBvbmx5IGVycm9ycyB0aGF0IHdlIG1pc3Mgd2l0aCB0aGlzXG4gICAgIG9wdGltaXphdGlvbiBhcmUgdGhvc2UgdGhhdCBrZWVwIHRoZSBhcnJheSBzaXplIGNvbnN0YW50IC0tXG4gICAgIGFkZGl0aW9ucyBhbmQgZGVsZXRpb25zIHRoYXQgY2FuY2VsIGVhY2ggb3RoZXIuIFdlIGNvbnNpZGVyIHRoaXNcbiAgICAgYW4gYWNjZXB0YWJsZSB0cmFkZW9mZi5cbiAgKilcbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgayAodW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCk7XG4gIGRvbmU7XG4gIGNoZWNrX3NhbWVfbGVuZ3RoIGYgYSB+bGVuZ3RoXG5cbmxldCBpdGVyIGsgYSA9XG4gIGl0ZXJfIFwiaXRlclwiIGsgYVxuXG5sZXQgaXRlcmkgayBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgIGsgaSAodW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCk7XG4gIGRvbmU7XG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwiaXRlcmlcIiBhIH5sZW5ndGhcblxubGV0IG1hcCBmIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZXMgPSB7XG4gICAgbGVuZ3RoO1xuICAgIGFyciA9IEFycmF5LmluaXQgbGVuZ3RoIChmdW4gaSAtPlxuICAgICAgRWxlbSB7diA9IGYgKHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpfSk7XG4gIH0gaW5cbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJtYXBcIiBhIH5sZW5ndGg7XG4gIHJlc1xuXG5cbmxldCBtYXBpIGYgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlcyA9IHtcbiAgICBsZW5ndGg7XG4gICAgYXJyID0gQXJyYXkuaW5pdCBsZW5ndGggKGZ1biBpIC0+XG4gICAgICBFbGVtIHt2ID0gZiBpICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKX0pO1xuICB9IGluXG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwibWFwaVwiIGEgfmxlbmd0aDtcbiAgcmVzXG5cbmxldCBmb2xkX2xlZnQgZiBhY2MgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHIgPSByZWYgYWNjIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoIGluXG4gICAgciA6PSBmICFyIHY7XG4gIGRvbmU7XG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwiZm9sZF9sZWZ0XCIgYSB+bGVuZ3RoO1xuICAhclxuXG5sZXQgZm9sZF9yaWdodCBmIGEgYWNjID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgciA9IHJlZiBhY2MgaW5cbiAgZm9yIGkgPSBsZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoIGluXG4gICAgciA6PSBmIHYgIXI7XG4gIGRvbmU7XG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwiZm9sZF9yaWdodFwiIGEgfmxlbmd0aDtcbiAgIXJcblxubGV0IGV4aXN0cyBwIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZWMgbG9vcCBwIGFyciBpIGxlbmd0aCA9XG4gICAgaWYgaSA9IGxlbmd0aCB0aGVuIGZhbHNlXG4gICAgZWxzZVxuICAgICAgcCAodW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aClcbiAgICAgIHx8IGxvb3AgcCBhcnIgKGkgKyAxKSBsZW5ndGhcbiAgaW5cbiAgbGV0IHJlcyA9IGxvb3AgcCBhcnIgMCBsZW5ndGggaW5cbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJleGlzdHNcIiBhIH5sZW5ndGg7XG4gIHJlc1xuXG5sZXQgZm9yX2FsbCBwIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZWMgbG9vcCBwIGFyciBpIGxlbmd0aCA9XG4gICAgaWYgaSA9IGxlbmd0aCB0aGVuIHRydWVcbiAgICBlbHNlXG4gICAgICBwICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKVxuICAgICAgJiYgbG9vcCBwIGFyciAoaSArIDEpIGxlbmd0aFxuICBpblxuICBsZXQgcmVzID0gbG9vcCBwIGFyciAwIGxlbmd0aCBpblxuICBjaGVja19zYW1lX2xlbmd0aCBcImZvcl9hbGxcIiBhIH5sZW5ndGg7XG4gIHJlc1xuXG5sZXQgZmlsdGVyIGYgYSA9XG4gIGxldCBiID0gY3JlYXRlICgpIGluXG4gIGl0ZXJfIFwiZmlsdGVyXCIgKGZ1biB4IC0+IGlmIGYgeCB0aGVuIGFkZF9sYXN0IGIgeCkgYTtcbiAgYlxuXG5sZXQgZmlsdGVyX21hcCBmIGEgPVxuICBsZXQgYiA9IGNyZWF0ZSAoKSBpblxuICBpdGVyXyBcImZpbHRlcl9tYXBcIiAoZnVuIHggLT5cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB5IC0+IGFkZF9sYXN0IGIgeVxuICApIGE7XG4gIGJcblxuXG4oKiogezE6Y29udmVyc2lvbnMgQ29udmVyc2lvbnMgdG8gb3RoZXIgZGF0YSBzdHJ1Y3R1cmVzfSAqKVxuXG4oKiBUaGUgZWFnZXIgW3RvXypdIGNvbnZlcnNpb24gZnVuY3Rpb25zIGJlaGF2ZSBzaW1pbGFybHkgdG8gaXRlcmF0b3JzXG4gICBpbiBwcmVzZW5jZSBvZiB1cGRhdGVzIGR1cmluZyBjb21wdXRhdGlvbi4gVGhlIFsqX3JlZW50cmFudF1cbiAgIGZ1bmN0aW9ucyBvYmV5IHRoZWlyIG1vcmUgcGVybWlzc2l2ZSBzcGVjaWZpY2F0aW9uLCB3aGljaCB0b2xlcmF0ZXNcbiAgIGFueSBjb25jdXJyZW50IHVwZGF0ZS4gKilcblxubGV0IG9mX2FycmF5IGEgPVxuICBsZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAge1xuICAgIGxlbmd0aDtcbiAgICBhcnIgPSBBcnJheS5pbml0IGxlbmd0aCAoZnVuIGkgLT4gRWxlbSB7diA9IEFycmF5LnVuc2FmZV9nZXQgYSBpfSk7XG4gIH1cblxubGV0IHRvX2FycmF5IGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZXMgPSBBcnJheS5pbml0IGxlbmd0aCAoZnVuIGkgLT5cbiAgICB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKVxuICBpblxuICBjaGVja19zYW1lX2xlbmd0aCBcInRvX2FycmF5XCIgYSB+bGVuZ3RoO1xuICByZXNcblxubGV0IG9mX2xpc3QgbGkgPVxuICBsZXQgYSA9IGNyZWF0ZSAoKSBpblxuICBMaXN0Lml0ZXIgKGZ1biB4IC0+IGFkZF9sYXN0IGEgeCkgbGk7XG4gIGFcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IGwgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBsZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgbCA6PSB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoIDo6ICFsXG4gIGRvbmU7XG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwidG9fbGlzdFwiIGEgfmxlbmd0aDtcbiAgIWxcblxubGV0IG9mX3NlcSBzZXEgPVxuICBsZXQgaW5pdCA9IGNyZWF0ZSgpIGluXG4gIGFwcGVuZF9zZXEgaW5pdCBzZXE7XG4gIGluaXRcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgcmVjIGF1eCBpID0gZnVuICgpIC0+XG4gICAgY2hlY2tfc2FtZV9sZW5ndGggXCJ0b19zZXFcIiBhIH5sZW5ndGg7XG4gICAgaWYgaSA+PSBsZW5ndGggdGhlbiBTZXEuTmlsXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoIGluXG4gICAgICBTZXEuQ29ucyAodiwgYXV4IChpICsgMSkpXG4gICAgZW5kXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFfcmVlbnRyYW50IGEgPVxuICBsZXQgcmVjIGF1eCBpID0gZnVuICgpIC0+XG4gICAgaWYgaSA+PSBsZW5ndGggYSB0aGVuIFNlcS5OaWxcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA9IGdldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICh2LCBhdXggKGkgKyAxKSlcbiAgICBlbmRcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcV9yZXYgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlYyBhdXggaSA9IGZ1biAoKSAtPlxuICAgIGNoZWNrX3NhbWVfbGVuZ3RoIFwidG9fc2VxX3JldlwiIGEgfmxlbmd0aDtcbiAgICBpZiBpIDwgMCB0aGVuIFNlcS5OaWxcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICAgIFNlcS5Db25zICh2LCBhdXggKGkgLSAxKSlcbiAgICBlbmRcbiAgaW5cbiAgYXV4IChsZW5ndGggLSAxKVxuXG5sZXQgdG9fc2VxX3Jldl9yZWVudHJhbnQgYSA9XG4gIGxldCByZWMgYXV4IGkgPSBmdW4gKCkgLT5cbiAgICBpZiBpIDwgMCB0aGVuIFNlcS5OaWxcbiAgICBlbHNlIGlmIGkgPj0gbGVuZ3RoIGEgdGhlblxuICAgICAgKCogSWYgc29tZSBlbGVtZW50cyBoYXZlIGJlZW4gcmVtb3ZlZCBpbiB0aGUgbWVhbnRpbWUsIHdlIHNraXBcbiAgICAgICAgIHRob3NlIGVsZW1lbnRzIGFuZCBjb250aW51ZSB3aXRoIHRoZSBuZXcgZW5kIG9mIHRoZSBhcnJheS4gKilcbiAgICAgIGF1eCAobGVuZ3RoIGEgLSAxKSAoKVxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCB2ID0gZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHYsIGF1eCAoaSAtIDEpKVxuICAgIGVuZFxuICBpblxuICBhdXggKGxlbmd0aCBhIC0gMSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBrZXkgPSBzdHJpbmdcbnR5cGUgZG9jID0gc3RyaW5nXG50eXBlIHVzYWdlX21zZyA9IHN0cmluZ1xudHlwZSBhbm9uX2Z1biA9IChzdHJpbmcgLT4gdW5pdClcblxudHlwZSBzcGVjID1cbiAgfCBVbml0IG9mICh1bml0IC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHVuaXQgYXJndW1lbnQgKilcbiAgfCBCb29sIG9mIChib29sIC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgYm9vbCBhcmd1bWVudCAqKVxuICB8IFNldCBvZiBib29sIHJlZiAgICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRydWUgKilcbiAgfCBDbGVhciBvZiBib29sIHJlZiAgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byBmYWxzZSAqKVxuICB8IFN0cmluZyBvZiAoc3RyaW5nIC0+IHVuaXQpICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBTZXRfc3RyaW5nIG9mIHN0cmluZyByZWYgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgc3RyaW5nIGFyZ3VtZW50ICopXG4gIHwgSW50IG9mIChpbnQgLT4gdW5pdCkgICAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhbiBpbnQgYXJndW1lbnQgKilcbiAgfCBTZXRfaW50IG9mIGludCByZWYgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgaW50IGFyZ3VtZW50ICopXG4gIHwgRmxvYXQgb2YgKGZsb2F0IC0+IHVuaXQpICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgU2V0X2Zsb2F0IG9mIGZsb2F0IHJlZiAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgVHVwbGUgb2Ygc3BlYyBsaXN0ICAgICAgICAgKCogVGFrZSBzZXZlcmFsIGFyZ3VtZW50cyBhY2NvcmRpbmcgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYyBsaXN0ICopXG4gIHwgU3ltYm9sIG9mIHN0cmluZyBsaXN0ICogKHN0cmluZyAtPiB1bml0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFRha2Ugb25lIG9mIHRoZSBzeW1ib2xzIGFzIGFyZ3VtZW50IGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIHN5bWJvbC4gKilcbiAgfCBSZXN0IG9mIChzdHJpbmcgLT4gdW5pdCkgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGVhY2ggcmVtYWluaW5nIGFyZ3VtZW50ICopXG4gIHwgUmVzdF9hbGwgb2YgKHN0cmluZyBsaXN0IC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogU3RvcCBpbnRlcnByZXRpbmcga2V5d29yZHMgYW5kIGNhbGwgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbiAgfCBFeHBhbmQgb2YgKHN0cmluZyAtPiBzdHJpbmcgYXJyYXkpICgqIElmIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIHRvIHByb2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBvZiB0aGUgZm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tcIi1mb29cIjsgXCJhcmdcIl0gQCByZXN0XSB3aGVyZSBcImZvb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyByZWdpc3RlcmVkIGFzIFtFeHBhbmQgZl0sIHRoZW4gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgW2YgXCJhcmdcIiBAIHJlc3RdIGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkLiBPbmx5IGFsbG93ZWQgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY10uICopXG5cbmV4Y2VwdGlvbiBCYWQgb2Ygc3RyaW5nXG5leGNlcHRpb24gSGVscCBvZiBzdHJpbmdcblxudHlwZSBlcnJvciA9XG4gIHwgVW5rbm93biBvZiBzdHJpbmdcbiAgfCBXcm9uZyBvZiBzdHJpbmcgKiBzdHJpbmcgKiBzdHJpbmcgICgqIG9wdGlvbiwgYWN0dWFsLCBleHBlY3RlZCAqKVxuICB8IE1pc3Npbmcgb2Ygc3RyaW5nXG4gIHwgTWVzc2FnZSBvZiBzdHJpbmdcblxuZXhjZXB0aW9uIFN0b3Agb2YgZXJyb3IgKCogdXNlZCBpbnRlcm5hbGx5ICopXG5cbm9wZW4gUHJpbnRmXG5cbmxldCByZWMgYXNzb2MzIHggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8ICh5MSwgeTIsIF8pIDo6IF8gd2hlbiB5MSA9IHggLT4geTJcbiAgfCBfIDo6IHQgLT4gYXNzb2MzIHggdFxuXG5cbmxldCBzcGxpdCBzID1cbiAgbGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnPScgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBTdHJpbmcuc3ViIHMgMCBpLCBTdHJpbmcuc3ViIHMgKGkrMSkgKGxlbi0oaSsxKSlcblxuXG5sZXQgbWFrZV9zeW1saXN0IHByZWZpeCBzZXAgc3VmZml4IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBcIjxub25lPlwiXG4gIHwgaDo6dCAtPiAoTGlzdC5mb2xkX2xlZnQgKGZ1biB4IHkgLT4geCBeIHNlcCBeIHkpIChwcmVmaXggXiBoKSB0KSBeIHN1ZmZpeFxuXG5cbmxldCBwcmludF9zcGVjIGJ1ZiAoa2V5LCBzcGVjLCBkb2MpID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBkb2MgPiAwIHRoZW5cbiAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICB8IFN5bWJvbCAobCwgXykgLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzJXNcXG5cIiBrZXkgKG1ha2Vfc3ltbGlzdCBcIntcIiBcInxcIiBcIn1cIiBsKSBkb2NcbiAgICB8IF8gLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzXFxuXCIga2V5IGRvY1xuXG5cbmxldCBoZWxwX2FjdGlvbiAoKSA9IHJhaXNlIChTdG9wIChVbmtub3duIFwiLWhlbHBcIikpXG5cbmxldCBhZGRfaGVscCBzcGVjbGlzdCA9XG4gIGxldCBhZGQxID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItaGVscFwiIHNwZWNsaXN0KTsgW11cbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgW1wiLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBhbmQgYWRkMiA9XG4gICAgdHJ5IGlnbm9yZSAoYXNzb2MzIFwiLS1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBpblxuICBzcGVjbGlzdCBAIChhZGQxIEAgYWRkMilcblxuXG5sZXQgdXNhZ2VfYiBidWYgc3BlY2xpc3QgZXJybXNnID1cbiAgYnByaW50ZiBidWYgXCIlc1xcblwiIGVycm1zZztcbiAgTGlzdC5pdGVyIChwcmludF9zcGVjIGJ1ZikgKGFkZF9oZWxwIHNwZWNsaXN0KVxuXG5cbmxldCB1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICB1c2FnZV9iIGIgc3BlY2xpc3QgZXJybXNnO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCB1c2FnZSBzcGVjbGlzdCBlcnJtc2cgPVxuICBlcHJpbnRmIFwiJXNcIiAodXNhZ2Vfc3RyaW5nIHNwZWNsaXN0IGVycm1zZylcblxuXG5sZXQgY3VycmVudCA9IHJlZiAwXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChib29sX29mX3N0cmluZyB4KVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG5cbmxldCBpbnRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgeClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggYWxsb3dfZXhwYW5kIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm1zZyA9XG4gIGxldCBpbml0cG9zID0gIWN1cnJlbnQgaW5cbiAgbGV0IGNvbnZlcnRfZXJyb3IgZXJyb3IgPVxuICAgICgqIGNvbnZlcnQgYW4gaW50ZXJuYWwgZXJyb3IgdG8gYSBCYWQvSGVscCBleGNlcHRpb25cbiAgICAgICAqb3IqIGFkZCB0aGUgcHJvZ3JhbSBuYW1lIGFzIGEgcHJlZml4IGFuZCB0aGUgdXNhZ2UgbWVzc2FnZSBhcyBhIHN1ZmZpeFxuICAgICAgIHRvIGFuIHVzZXItcmFpc2VkIEJhZCBleGNlcHRpb24uXG4gICAgKilcbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gICAgbGV0IHByb2duYW1lID1cbiAgICAgIGlmIGluaXRwb3MgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSB0aGVuICFhcmd2Lihpbml0cG9zKSBlbHNlIFwiKD8pXCIgaW5cbiAgICBiZWdpbiBtYXRjaCBlcnJvciB3aXRoXG4gICAgICB8IFVua25vd24gXCItaGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gXCItLWhlbHBcIiAtPiAoKVxuICAgICAgfCBVbmtub3duIHMgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogdW5rbm93biBvcHRpb24gJyVzJy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IE1pc3NpbmcgcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiBvcHRpb24gJyVzJyBuZWVkcyBhbiBhcmd1bWVudC5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IFdyb25nIChvcHQsIGFyZywgZXhwZWN0ZWQpIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IHdyb25nIGFyZ3VtZW50ICclcyc7IG9wdGlvbiAnJXMnIGV4cGVjdHMgJXMuXFxuXCJcbiAgICAgICAgICAgICAgICAgIHByb2duYW1lIGFyZyBvcHQgZXhwZWN0ZWRcbiAgICAgIHwgTWVzc2FnZSBzIC0+ICgqIHVzZXIgZXJyb3IgbWVzc2FnZSAqKVxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiAlcy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgZW5kO1xuICAgIHVzYWdlX2IgYiAhc3BlY2xpc3QgZXJybXNnO1xuICAgIGlmIGVycm9yID0gVW5rbm93biBcIi1oZWxwXCIgfHwgZXJyb3IgPSBVbmtub3duIFwiLS1oZWxwXCJcbiAgICB0aGVuIEhlbHAgKEJ1ZmZlci5jb250ZW50cyBiKVxuICAgIGVsc2UgQmFkIChCdWZmZXIuY29udGVudHMgYilcbiAgaW5cbiAgaW5jciBjdXJyZW50O1xuICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIGRvXG4gICAgYmVnaW4gdHJ5XG4gICAgICBsZXQgcyA9ICFhcmd2LighY3VycmVudCkgaW5cbiAgICAgIGlmIFN0cmluZy5zdGFydHNfd2l0aCB+cHJlZml4OlwiLVwiIHMgdGhlbiBiZWdpblxuICAgICAgICBsZXQgYWN0aW9uLCBmb2xsb3cgPVxuICAgICAgICAgIHRyeSBhc3NvYzMgcyAhc3BlY2xpc3QsIE5vbmVcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGtleXdvcmQsIGFyZyA9IHNwbGl0IHMgaW5cbiAgICAgICAgICAgIGFzc29jMyBrZXl3b3JkICFzcGVjbGlzdCwgU29tZSBhcmdcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoU3RvcCAoVW5rbm93biBzKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm5vIGFyZ3VtZW50XCIpKSkgaW5cbiAgICAgICAgbGV0IGdldF9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGlmICFjdXJyZW50ICsgMSA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgZWxzZSByYWlzZSAoU3RvcCAoTWlzc2luZyBzKSlcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGFyZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgY29uc3VtZV9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluY3IgY3VycmVudFxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgdHJlYXRfYWN0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbml0IGYgLT4gbm9fYXJnICgpOyBmICgpO1xuICAgICAgICB8IEJvb2wgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGJvb2xfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgYm9vbGVhblwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgcyAtPiBmIHNcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldCByIC0+IG5vX2FyZyAoKTsgciA6PSB0cnVlO1xuICAgICAgICB8IENsZWFyIHIgLT4gbm9fYXJnICgpOyByIDo9IGZhbHNlO1xuICAgICAgICB8IFN0cmluZyBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTeW1ib2wgKHN5bWIsIGYpIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgaWYgTGlzdC5tZW0gYXJnIHN5bWIgdGhlbiBiZWdpblxuICAgICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJvbmUgb2Y6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIChtYWtlX3N5bWxpc3QgXCJcIiBcIiBcIiBcIlwiIHN5bWIpKSkpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBTZXRfc3RyaW5nIHIgLT5cbiAgICAgICAgICAgIHIgOj0gZ2V0X2FyZyAoKTtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEludCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2ludCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgRmxvYXQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2Zsb2F0IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFR1cGxlIHNwZWNzIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBMaXN0Lml0ZXIgdHJlYXRfYWN0aW9uIHNwZWNzO1xuICAgICAgICB8IFJlc3QgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSAtIDEgZG9cbiAgICAgICAgICAgICAgZiAhYXJndi4oIWN1cnJlbnQgKyAxKTtcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICB8IFJlc3RfYWxsIGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgQXJyYXkubGVuZ3RoICFhcmd2IC0gMSBkb1xuICAgICAgICAgICAgICBhY2MgOj0gIWFyZ3YuKCFjdXJyZW50ICsgMSkgOjogIWFjYztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgZiAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgfCBFeHBhbmQgZiAtPlxuICAgICAgICAgICAgaWYgbm90IGFsbG93X2V4cGFuZCB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQXJnLkV4cGFuZCBpcyBpcyBvbmx5IGFsbG93ZWQgd2l0aCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnLnBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXCIpO1xuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGxldCBuZXdhcmcgPSBmIGFyZyBpblxuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYmVmb3JlID0gQXJyYXkuc3ViICFhcmd2IDAgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgIGFuZCBhZnRlciA9XG4gICAgICAgICAgICAgIEFycmF5LnN1YiAhYXJndiAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheS5sZW5ndGggIWFyZ3YpIC0gIWN1cnJlbnQgLSAxKSBpblxuICAgICAgICAgICAgYXJndjo9IEFycmF5LmNvbmNhdCBbYmVmb3JlO25ld2FyZzthZnRlcl07XG4gICAgICAgIGluXG4gICAgICAgIHRyZWF0X2FjdGlvbiBhY3Rpb24gZW5kXG4gICAgICBlbHNlIGFub25mdW4gc1xuICAgIHdpdGggfCBCYWQgbSAtPiByYWlzZSAoY29udmVydF9lcnJvciAoTWVzc2FnZSBtKSk7XG4gICAgICAgICB8IFN0b3AgZSAtPiByYWlzZSAoY29udmVydF9lcnJvciBlKTtcbiAgICBlbmQ7XG4gICAgaW5jciBjdXJyZW50XG4gIGRvbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCB0cnVlIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZ1xuXG5sZXQgcGFyc2VfYXJndl9keW5hbWljID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGZhbHNlIGN1cnJlbnQgKHJlZiBhcmd2KSBzcGVjbGlzdCBhbm9uZnVuXG4gICAgZXJybXNnXG5cblxubGV0IHBhcnNlX2FyZ3YgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hcmd2X2R5bmFtaWMgfmN1cnJlbnQ6Y3VycmVudCBhcmd2IChyZWYgc3BlY2xpc3QpIGFub25mdW4gZXJybXNnXG5cblxubGV0IHBhcnNlIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2IFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHBhcnNlX2R5bmFtaWMgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3ZfZHluYW1pYyBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5sZXQgcGFyc2VfZXhwYW5kIGwgZiBtc2cgPVxuICB0cnlcbiAgICBsZXQgYXJndiA9IHJlZiBTeXMuYXJndiBpblxuICAgIGxldCBzcGVjID0gcmVmIGwgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiAoIWN1cnJlbnQpIGluXG4gICAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWMgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHNlY29uZF93b3JkIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID49IGxlbiB0aGVuIGxlblxuICAgIGVsc2UgaWYgcy5bbl0gPSAnICcgdGhlbiBsb29wIChuKzEpXG4gICAgZWxzZSBuXG4gIGluXG4gIG1hdGNoIFN0cmluZy5pbmRleCBzICdcXHQnIHdpdGhcbiAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgICBiZWdpbiBtYXRjaCBTdHJpbmcuaW5kZXggcyAnICcgd2l0aFxuICAgICAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBsZW5cbiAgICAgIGVuZFxuXG5cbmxldCBtYXhfYXJnX2xlbiBjdXIgKGt3ZCwgc3BlYywgZG9jKSA9XG4gIG1hdGNoIHNwZWMgd2l0aFxuICB8IFN5bWJvbCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZClcbiAgfCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZCArIHNlY29uZF93b3JkIGRvYylcblxuXG5sZXQgcmVwbGFjZV9sZWFkaW5nX3RhYiBzID1cbiAgbGV0IHNlZW4gPSByZWYgZmFsc2UgaW5cbiAgU3RyaW5nLm1hcCAoZnVuY3Rpb24gJ1xcdCcgd2hlbiBub3QgIXNlZW4gLT4gc2VlbiA6PSB0cnVlOyAnICcgfCBjIC0+IGMpIHNcblxubGV0IGFkZF9wYWRkaW5nIGxlbiBrc2QgPVxuICBtYXRjaCBrc2Qgd2l0aFxuICB8IChfLCBfLCBcIlwiKSAtPlxuICAgICAgKCogRG8gbm90IHBhZCB1bmRvY3VtZW50ZWQgb3B0aW9ucywgc28gdGhhdCB0aGV5IHN0aWxsIGRvbid0IHNob3cgdXAgd2hlblxuICAgICAgICogcnVuIHRocm91Z2ggW3VzYWdlXSBvciBbcGFyc2VdLiAqKVxuICAgICAga3NkXG4gIHwgKGt3ZCwgKFN5bWJvbCBfIGFzIHNwZWMpLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgKChJbnQubWF4IDAgKGxlbiAtIGN1dGNvbCkpICsgMykgJyAnIGluXG4gICAgICAoa3dkLCBzcGVjLCBcIlxcblwiIF4gc3BhY2VzIF4gcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gIHwgKGt3ZCwgc3BlYywgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IGt3ZF9sZW4gPSBTdHJpbmcubGVuZ3RoIGt3ZCBpblxuICAgICAgbGV0IGRpZmYgPSBsZW4gLSBrd2RfbGVuIC0gY3V0Y29sIGluXG4gICAgICBpZiBkaWZmIDw9IDAgdGhlblxuICAgICAgICAoa3dkLCBzcGVjLCByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlIGRpZmYgJyAnIGluXG4gICAgICAgIGxldCBwcmVmaXggPSBTdHJpbmcuc3ViIChyZXBsYWNlX2xlYWRpbmdfdGFiIG1zZykgMCBjdXRjb2wgaW5cbiAgICAgICAgbGV0IHN1ZmZpeCA9IFN0cmluZy5zdWIgbXNnIGN1dGNvbCAoU3RyaW5nLmxlbmd0aCBtc2cgLSBjdXRjb2wpIGluXG4gICAgICAgIChrd2QsIHNwZWMsIHByZWZpeCBeIHNwYWNlcyBeIHN1ZmZpeClcblxuXG5sZXQgYWxpZ24gPyhsaW1pdD1tYXhfaW50KSBzcGVjbGlzdCA9XG4gIGxldCBjb21wbGV0ZWQgPSBhZGRfaGVscCBzcGVjbGlzdCBpblxuICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgbWF4X2FyZ19sZW4gMCBjb21wbGV0ZWQgaW5cbiAgbGV0IGxlbiA9IEludC5taW4gbGVuIGxpbWl0IGluXG4gIExpc3QubWFwIChhZGRfcGFkZGluZyBsZW4pIGNvbXBsZXRlZFxuXG5sZXQgdHJpbV9jciBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBsZW4gPiAwICYmIFN0cmluZy5nZXQgcyAobGVuIC0gMSkgPSAnXFxyJyB0aGVuXG4gICAgU3RyaW5nLnN1YiBzIDAgKGxlbiAtIDEpXG4gIGVsc2VcbiAgICBzXG5cbmxldCByZWFkX2F1eCB0cmltIHNlcCBmaWxlID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgbGV0IHdvcmRzID0gcmVmIFtdIGluXG4gIGxldCBzdGFzaCAoKSA9XG4gICAgbGV0IHdvcmQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgbGV0IHdvcmQgPSBpZiB0cmltIHRoZW4gdHJpbV9jciB3b3JkIGVsc2Ugd29yZCBpblxuICAgIHdvcmRzIDo9IHdvcmQgOjogIXdvcmRzO1xuICAgIEJ1ZmZlci5jbGVhciBidWZcbiAgaW5cbiAgYmVnaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBsZXQgYyA9IGlucHV0X2NoYXIgaWMgaW5cbiAgICAgICAgaWYgYyA9IHNlcCB0aGVuIHN0YXNoICgpIGVsc2UgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgICBkb25lXG4gICAgd2l0aCBFbmRfb2ZfZmlsZSAtPiAoKVxuICBlbmQ7XG4gIGlmIEJ1ZmZlci5sZW5ndGggYnVmID4gMCB0aGVuIHN0YXNoICgpO1xuICBjbG9zZV9pbiBpYztcbiAgQXJyYXkub2ZfbGlzdCAoTGlzdC5yZXYgIXdvcmRzKVxuXG5sZXQgcmVhZF9hcmcgPSByZWFkX2F1eCB0cnVlICdcXG4nXG5cbmxldCByZWFkX2FyZzAgPSByZWFkX2F1eCBmYWxzZSAnXFx4MDAnXG5cbmxldCB3cml0ZV9hdXggc2VwIGZpbGUgYXJncyA9XG4gIGxldCBvYyA9IG9wZW5fb3V0X2JpbiBmaWxlIGluXG4gIEFycmF5Lml0ZXIgKGZ1biBzIC0+IGZwcmludGYgb2MgXCIlcyVjXCIgcyBzZXApIGFyZ3M7XG4gIGNsb3NlX291dCBvY1xuXG5sZXQgd3JpdGVfYXJnID0gd3JpdGVfYXV4ICdcXG4nXG5cbmxldCB3cml0ZV9hcmcwID0gd3JpdGVfYXV4ICdcXHgwMCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBQcmludGZcblxudHlwZSB0ID0gZXhuID0gLi5cblxubGV0IHByaW50ZXJzID0gQXRvbWljLm1ha2UgW11cblxubGV0IGxvY2ZtdCA9IGZvcm1hdF9vZl9zdHJpbmcgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6ICVzXCJcblxubGV0IGZpZWxkIHggaSA9XG4gIGxldCBmID0gT2JqLmZpZWxkIHggaSBpblxuICBpZiBub3QgKE9iai5pc19ibG9jayBmKSB0aGVuXG4gICAgc3ByaW50ZiBcIiVkXCIgKE9iai5tYWdpYyBmIDogaW50KSAgICAgICAgICAgKCogY2FuIGFsc28gYmUgYSBjaGFyICopXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLnN0cmluZ190YWcgdGhlblxuICAgIHNwcmludGYgXCIlU1wiIChPYmoubWFnaWMgZiA6IHN0cmluZylcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouZG91YmxlX3RhZyB0aGVuXG4gICAgc3RyaW5nX29mX2Zsb2F0IChPYmoubWFnaWMgZiA6IGZsb2F0KVxuICBlbHNlXG4gICAgXCJfXCJcblxubGV0IHJlYyBvdGhlcl9maWVsZHMgeCBpID1cbiAgaWYgaSA+PSBPYmouc2l6ZSB4IHRoZW4gXCJcIlxuICBlbHNlIHNwcmludGYgXCIsICVzJXNcIiAoZmllbGQgeCBpKSAob3RoZXJfZmllbGRzIHggKGkrMSkpXG5cbmxldCBmaWVsZHMgeCA9XG4gIG1hdGNoIE9iai5zaXplIHggd2l0aFxuICB8IDAgLT4gXCJcIlxuICB8IDEgLT4gXCJcIlxuICB8IDIgLT4gc3ByaW50ZiBcIiglcylcIiAoZmllbGQgeCAxKVxuICB8IF8gLT4gc3ByaW50ZiBcIiglcyVzKVwiIChmaWVsZCB4IDEpIChvdGhlcl9maWVsZHMgeCAyKVxuXG5sZXQgdXNlX3ByaW50ZXJzIHggPVxuICBsZXQgcmVjIGNvbnYgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGhkIHggd2l0aFxuICAgICAgICAgfCBOb25lIHwgZXhjZXB0aW9uIF8gLT4gY29udiB0bFxuICAgICAgICAgfCBTb21lIHMgLT4gU29tZSBzKVxuICAgIHwgW10gLT4gTm9uZSBpblxuICBjb252IChBdG9taWMuZ2V0IHByaW50ZXJzKVxuXG5sZXQgZGVzdHJ1Y3RfZXh0X2NvbnN0cnVjdG9yIHggPVxuICBpZiBPYmoudGFnIHggPD4gMCB0aGVuXG4gICAgKChPYmoubWFnaWMgKE9iai5maWVsZCB4IDApIDogc3RyaW5nKSwgTm9uZSlcbiAgZWxzZVxuICAgIGxldCBjb25zdHJ1Y3RvciA9XG4gICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgKE9iai5maWVsZCB4IDApIDApIDogc3RyaW5nKSBpblxuICAgIChjb25zdHJ1Y3RvciwgU29tZSAoZmllbGRzIHgpKVxuXG5sZXQgc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB0ID1cbiAgbGV0IGNvbnN0cnVjdG9yLCBmaWVsZHNfb3B0ID0gZGVzdHJ1Y3RfZXh0X2NvbnN0cnVjdG9yIHQgaW5cbiAgbWF0Y2ggZmllbGRzX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBjb25zdHJ1Y3RvclxuICB8IFNvbWUgZiAtPiBjb25zdHJ1Y3RvciBeIGZcblxubGV0IHRvX3N0cmluZ19kZWZhdWx0ID0gZnVuY3Rpb25cbiAgfCBPdXRfb2ZfbWVtb3J5IC0+IFwiT3V0IG9mIG1lbW9yeVwiXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gXCJTdGFjayBvdmVyZmxvd1wiXG4gIHwgTWF0Y2hfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNSkgXCJQYXR0ZXJuIG1hdGNoaW5nIGZhaWxlZFwiXG4gIHwgQXNzZXJ0X2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiQXNzZXJ0aW9uIGZhaWxlZFwiXG4gIHwgVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiVW5kZWZpbmVkIHJlY3Vyc2l2ZSBtb2R1bGVcIlxuICB8IHggLT5cbiAgICAgIHN0cmluZ19vZl9leHRlbnNpb25fY29uc3RydWN0b3IgKE9iai5yZXByIHgpXG5cbmxldCB0b19zdHJpbmcgZSA9XG4gIG1hdGNoIHVzZV9wcmludGVycyBlIHdpdGhcbiAgfCBTb21lIHMgLT4gc1xuICB8IE5vbmUgLT4gdG9fc3RyaW5nX2RlZmF1bHQgZVxuXG5sZXQgcHJpbnQgZmN0IGFyZyA9XG4gIHRyeVxuICAgIGZjdCBhcmdcbiAgd2l0aCB4IC0+XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGZsdXNoIHN0ZGVycjtcbiAgICByYWlzZSB4XG5cbmxldCBjYXRjaCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBmbHVzaCBzdGRvdXQ7XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGV4aXQgMlxuXG50eXBlIHJhd19iYWNrdHJhY2Vfc2xvdFxudHlwZSByYXdfYmFja3RyYWNlX2VudHJ5ID0gcHJpdmF0ZSBpbnRcbnR5cGUgcmF3X2JhY2t0cmFjZSA9IHJhd19iYWNrdHJhY2VfZW50cnkgYXJyYXlcblxubGV0IHJhd19iYWNrdHJhY2VfZW50cmllcyBidCA9IGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlOlxuICB1bml0IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlXCJcblxuZXh0ZXJuYWwgcmFpc2Vfd2l0aF9iYWNrdHJhY2U6IGV4biAtPiByYXdfYmFja3RyYWNlIC0+ICdhXG4gID0gXCIlcmFpc2Vfd2l0aF9iYWNrdHJhY2VcIlxuXG4oKiBEaXNhYmxlIHdhcm5pbmcgMzc6IHZhbHVlcyBhcmUgY29uc3RydWN0ZWQgaW4gdGhlIHJ1bnRpbWUgKilcbnR5cGVbQHdhcm5pbmcgXCItMzdcIl0gYmFja3RyYWNlX3Nsb3QgPVxuICB8IEtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlICAgOiBib29sO1xuICAgICAgZmlsZW5hbWUgICA6IHN0cmluZztcbiAgICAgIHN0YXJ0X2xudW0gOiBpbnQ7XG4gICAgICBzdGFydF9jaGFyIDogaW50O1xuICAgICAgZW5kX29mZnNldCA6IGludDsgKCogUmVsYXRpdmUgdG8gYmVnaW5uaW5nIG9mIHN0YXJ0X2xudW0gKilcbiAgICAgIGVuZF9sbnVtICAgOiBpbnQ7XG4gICAgICBlbmRfY2hhciAgIDogaW50OyAoKiBSZWxhdGl2ZSB0byBiZWdpbm5pbmcgb2YgZW5kX2xudW0gbGluZSAqKVxuICAgICAgaXNfaW5saW5lICA6IGJvb2w7XG4gICAgICBkZWZuYW1lICAgIDogc3RyaW5nO1xuICAgIH1cbiAgfCBVbmtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlIDogYm9vbFxuICAgIH1cblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Q6XG4gIHJhd19iYWNrdHJhY2Vfc2xvdCAtPiBiYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZTpcbiAgcmF3X2JhY2t0cmFjZSAtPiBiYWNrdHJhY2Vfc2xvdCBhcnJheSA9IFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2VcIlxuXG5sZXQgY29udmVydF9yYXdfYmFja3RyYWNlIGJ0ID1cbiAgdHJ5IFNvbWUgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgZm9ybWF0X2JhY2t0cmFjZV9zbG90IHBvcyBzbG90ID1cbiAgbGV0IGluZm8gaXNfcmFpc2UgPVxuICAgIGlmIGlzX3JhaXNlIHRoZW5cbiAgICAgIGlmIHBvcyA9IDAgdGhlbiBcIlJhaXNlZCBhdFwiIGVsc2UgXCJSZS1yYWlzZWQgYXRcIlxuICAgIGVsc2VcbiAgICAgIGlmIHBvcyA9IDAgdGhlbiBcIlJhaXNlZCBieSBwcmltaXRpdmUgb3BlcmF0aW9uIGF0XCIgZWxzZSBcIkNhbGxlZCBmcm9tXCJcbiAgaW5cbiAgbWF0Y2ggc2xvdCB3aXRoXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgICBpZiBsLmlzX3JhaXNlIHRoZW5cbiAgICAgICAgKCogY29tcGlsZXItaW5zZXJ0ZWQgcmUtcmFpc2UsIHNraXBwZWQgKikgTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBTb21lIChzcHJpbnRmIFwiJXMgdW5rbm93biBsb2NhdGlvblwiIChpbmZvIGZhbHNlKSlcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgICBsZXQgbGluZXMgPVxuICAgICAgICBpZiBsLnN0YXJ0X2xudW0gPSBsLmVuZF9sbnVtIHRoZW5cbiAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIiAlZFwiIGwuc3RhcnRfbG51bVxuICAgICAgICBlbHNlXG4gICAgICAgICAgUHJpbnRmLnNwcmludGYgXCJzICVkLSVkXCIgbC5zdGFydF9sbnVtIGwuZW5kX2xudW1cbiAgICAgIGluXG4gICAgICBTb21lIChzcHJpbnRmIFwiJXMgJXMgaW4gZmlsZSBcXFwiJXNcXFwiJXMsIGxpbmUlcywgY2hhcmFjdGVycyAlZC0lZFwiXG4gICAgICAgICAgICAgIChpbmZvIGwuaXNfcmFpc2UpIGwuZGVmbmFtZSBsLmZpbGVuYW1lXG4gICAgICAgICAgICAgIChpZiBsLmlzX2lubGluZSB0aGVuIFwiIChpbmxpbmVkKVwiIGVsc2UgXCJcIilcbiAgICAgICAgICAgICAgbGluZXMgbC5zdGFydF9jaGFyIGwuZW5kX2NoYXIpXG5cbmxldCBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBmcHJpbnRmIG91dGNoYW5cbiAgICAgICAgXCIoUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIGNhbm5vdCBwcmludCBzdGFjayBiYWNrdHJhY2UpXFxuXCJcbiAgfCBTb21lIGEgLT5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gZnByaW50ZiBvdXRjaGFuIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmVcblxubGV0IHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiByYXdfYmFja3RyYWNlID1cbiAgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSlcblxuKCogY29uZnVzaW5nbHkgbmFtZWQ6IHByaW50cyB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgcHJpbnRfYmFja3RyYWNlIG91dGNoYW4gPVxuICBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gKGdldF9yYXdfYmFja3RyYWNlICgpKVxuXG5sZXQgYmFja3RyYWNlX3RvX3N0cmluZyBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgXCIoUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIGNhbm5vdCBwcmludCBzdGFjayBiYWNrdHJhY2UpXFxuXCJcbiAgfCBTb21lIGEgLT5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGJwcmludGYgYiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIHJhd19iYWNrdHJhY2UgPVxuICBiYWNrdHJhY2VfdG9fc3RyaW5nIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSlcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX3JhaXNlID0gZnVuY3Rpb25cbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lID0gZnVuY3Rpb25cbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfaW5saW5lXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IGZhbHNlXG5cbnR5cGUgbG9jYXRpb24gPSB7XG4gIGZpbGVuYW1lIDogc3RyaW5nO1xuICBsaW5lX251bWJlciA6IGludDtcbiAgc3RhcnRfY2hhciA6IGludDtcbiAgZW5kX2NoYXIgOiBpbnQ7XG4gIGVuZF9saW5lIDogaW50O1xuICBlbmRfY29sIDogaW50O1xufVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfbG9jYXRpb24gPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgIFNvbWUge1xuICAgICAgZmlsZW5hbWUgICAgPSBsLmZpbGVuYW1lO1xuICAgICAgbGluZV9udW1iZXIgPSBsLnN0YXJ0X2xudW07XG4gICAgICBzdGFydF9jaGFyICA9IGwuc3RhcnRfY2hhcjtcbiAgICAgIGVuZF9jaGFyICAgID0gbC5lbmRfb2Zmc2V0O1xuICAgICAgZW5kX2xpbmUgICAgPSBsLmVuZF9sbnVtO1xuICAgICAgZW5kX2NvbCAgICAgPSBsLmVuZF9jaGFyO1xuICAgIH1cblxubGV0IGJhY2t0cmFjZV9zbG90X2RlZm5hbWUgPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gX1xuICB8IEtub3duX2xvY2F0aW9uIHsgZGVmbmFtZSA9IFwiXCIgfSAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBTb21lIGwuZGVmbmFtZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzIHJhd19iYWNrdHJhY2UgPVxuICAoKiBUaGUgZG9jdW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdGhhdCBTb21lIGlzXG4gICAgIHJldHVybmVkIG9ubHkgaWYgYSBwYXJ0IG9mIHRoZSB0cmFjZSBpcyB1c2FibGUuIFRoaXMgZ2l2ZXMgdXNcbiAgICAgYSBiaXQgbW9yZSB3b3JrIHRoYW4ganVzdCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UsIGJ1dCBpdCBtYWtlcyB0aGVcbiAgICAgQVBJIG1vcmUgdXNlci1mcmllbmRseSAtLSBvdGhlcndpc2UgbW9zdCB1c2VycyB3b3VsZCBoYXZlIHRvXG4gICAgIHJlaW1wbGVtZW50IHRoZSBcIlByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBzb3JyeVwiIGxvZ2ljXG4gICAgIHRoZW1zZWx2ZXMuICopXG4gIG1hdGNoIGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBiYWNrdHJhY2UgLT5cbiAgICAgIGxldCB1c2FibGVfc2xvdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IGZhbHNlXG4gICAgICAgIHwgS25vd25fbG9jYXRpb24gXyAtPiB0cnVlIGluXG4gICAgICBsZXQgcmVjIGV4aXN0c191c2FibGUgPSBmdW5jdGlvblxuICAgICAgICB8ICgtMSkgLT4gZmFsc2VcbiAgICAgICAgfCBpIC0+IHVzYWJsZV9zbG90IGJhY2t0cmFjZS4oaSkgfHwgZXhpc3RzX3VzYWJsZSAoaSAtIDEpIGluXG4gICAgICBpZiBleGlzdHNfdXNhYmxlIChBcnJheS5sZW5ndGggYmFja3RyYWNlIC0gMSlcbiAgICAgIHRoZW4gU29tZSBiYWNrdHJhY2VcbiAgICAgIGVsc2UgTm9uZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzX29mX3Jhd19lbnRyeSBlbnRyeSA9XG4gIGJhY2t0cmFjZV9zbG90cyBbfCBlbnRyeSB8XVxuXG5tb2R1bGUgU2xvdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBiYWNrdHJhY2Vfc2xvdFxuICBsZXQgZm9ybWF0ID0gZm9ybWF0X2JhY2t0cmFjZV9zbG90XG4gIGxldCBpc19yYWlzZSA9IGJhY2t0cmFjZV9zbG90X2lzX3JhaXNlXG4gIGxldCBpc19pbmxpbmUgPSBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmVcbiAgbGV0IGxvY2F0aW9uID0gYmFja3RyYWNlX3Nsb3RfbG9jYXRpb25cbiAgbGV0IG5hbWUgPSBiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lXG5lbmRcblxubGV0IHJhd19iYWNrdHJhY2VfbGVuZ3RoIGJ0ID0gQXJyYXkubGVuZ3RoIGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlX3Nsb3QgOlxuICByYXdfYmFja3RyYWNlIC0+IGludCAtPiByYXdfYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90IDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCBvcHRpb25cbiAgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcIlxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDpcbiAgIHJldHVybnMgdGhlICpzdHJpbmcqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IGdldF9iYWNrdHJhY2UgKCkgPSByYXdfYmFja3RyYWNlX3RvX3N0cmluZyAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmV4dGVybmFsIHJlY29yZF9iYWNrdHJhY2U6IGJvb2wgLT4gdW5pdCA9IFwiY2FtbF9yZWNvcmRfYmFja3RyYWNlXCJcbmV4dGVybmFsIGJhY2t0cmFjZV9zdGF0dXM6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXCJcblxubGV0IHJlYyByZWdpc3Rlcl9wcmludGVyIGZuID1cbiAgbGV0IG9sZF9wcmludGVycyA9IEF0b21pYy5nZXQgcHJpbnRlcnMgaW5cbiAgbGV0IG5ld19wcmludGVycyA9IGZuIDo6IG9sZF9wcmludGVycyBpblxuICBsZXQgc3VjY2VzcyA9IEF0b21pYy5jb21wYXJlX2FuZF9zZXQgcHJpbnRlcnMgb2xkX3ByaW50ZXJzIG5ld19wcmludGVycyBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIHJlZ2lzdGVyX3ByaW50ZXIgZm5cblxuZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjazogaW50IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrXCJcblxubGV0IGV4bl9zbG90IHggPVxuICBsZXQgeCA9IE9iai5yZXByIHggaW5cbiAgaWYgT2JqLnRhZyB4ID0gMCB0aGVuIE9iai5maWVsZCB4IDAgZWxzZSB4XG5cbmxldCBleG5fc2xvdF9pZCB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAxKSA6IGludClcblxubGV0IGV4bl9zbG90X25hbWUgeCA9XG4gIGxldCBzbG90ID0gZXhuX3Nsb3QgeCBpblxuICAoT2JqLm9iaiAoT2JqLmZpZWxkIHNsb3QgMCkgOiBzdHJpbmcpXG5cbmV4dGVybmFsIGdldF9kZWJ1Z19pbmZvX3N0YXR1cyA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzXCJcblxuKCogRGVzY3JpcHRpb25zIGZvciBlcnJvcnMgaW4gc3RhcnR1cC5oLiBTZWUgYWxzbyBiYWNrdHJhY2UuYyAqKVxubGV0IGVycm9ycyA9IFt8IFwiXCI7XG4gICgqIEZJTEVfTk9UX0ZPVU5EICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBub3QgZm91bmQpXCI7XG4gICgqIEJBRF9CWVRFQ09ERSAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgYXBwZWFycyB0byBiZSBjb3JydXB0KVwiO1xuICAoKiBXUk9OR19NQUdJQyAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgaGFzIHdyb25nIG1hZ2ljIG51bWJlcilcIjtcbiAgKCogTk9fRkRTICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBjYW5ub3QgYmUgb3BlbmVkO1xcbiBcXFxuICAgICAgLS0gdG9vIG1hbnkgb3BlbiBmaWxlcy4gVHJ5IHJ1bm5pbmcgd2l0aCBPQ0FNTFJVTlBBUkFNPWI9MilcIlxufF1cblxubGV0IGRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZXhuIHJhd19iYWNrdHJhY2UgPVxuICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgbGV0IHN0YXR1cyA9IGdldF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSBpblxuICBpZiBzdGF0dXMgPCAwIHRoZW5cbiAgICBwcmVycl9lbmRsaW5lIGVycm9ycy4oYWJzIHN0YXR1cyk7XG4gIGZsdXNoIHN0ZGVyclxuXG5sZXQgdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgPSByZWYgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlclxuXG5sZXQgc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGZuID0gdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgOj0gZm5cblxubGV0IGVtcHR5X2JhY2t0cmFjZSA6IHJhd19iYWNrdHJhY2UgPSBbfCB8XVxuXG5sZXQgdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpID1cbiAgdHJ5XG4gICAgZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgd2l0aCBfICgqIE91dF9vZl9tZW1vcnk/ICopIC0+XG4gICAgZW1wdHlfYmFja3RyYWNlXG5cbmxldCBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uJyBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgKCogR2V0IHRoZSBiYWNrdHJhY2Ugbm93LCBpbiBjYXNlIG9uZSBvZiB0aGUgW2F0X2V4aXRdIGZ1bmN0aW9uXG4gICAgICAgZGVzdHJveXMgaXQuICopXG4gICAgbGV0IHJhd19iYWNrdHJhY2UgPVxuICAgICAgaWYgZGVidWdnZXJfaW5fdXNlICgqIFNhbWUgdGVzdCBhcyBpbiBbcnVudGltZS9wcmludGV4Yy5jXSAqKSB0aGVuXG4gICAgICAgIGVtcHR5X2JhY2t0cmFjZVxuICAgICAgZWxzZVxuICAgICAgICB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgICBpblxuICAgICh0cnkgU3RkbGliLmRvX2F0X2V4aXQgKCkgd2l0aCBfIC0+ICgpKTtcbiAgICB0cnlcbiAgICAgICF1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZVxuICAgIHdpdGggZXhuJyAtPlxuICAgICAgbGV0IHJhd19iYWNrdHJhY2UnID0gdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3IgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXI6IGV4Y2VwdGlvbiAlc1xcblwiXG4gICAgICAgICh0b19zdHJpbmcgZXhuJyk7XG4gICAgICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlJztcbiAgICAgIGZsdXNoIHN0ZGVyclxuICB3aXRoXG4gICAgfCBPdXRfb2ZfbWVtb3J5IC0+XG4gICAgICAgIHByZXJyX2VuZGxpbmVcbiAgICAgICAgICBcIkZhdGFsIGVycm9yOiBvdXQgb2YgbWVtb3J5IGluIHVuY2F1Z2h0IGV4Y2VwdGlvbiBoYW5kbGVyXCJcblxuKCogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgW2NhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXSBpblxuICAgW3J1bnRpbWUvcHJpbnRleGMuY10gd2hpY2ggZXhwZWN0cyBubyBleGNlcHRpb24gaXMgcmFpc2VkLiAqKVxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24gZXhuIGRlYnVnZ2VyX2luX3VzZSA9XG4gIHRyeVxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2VcbiAgd2l0aCBfIC0+XG4gICAgKCogVGhlcmUgaXMgbm90IG11Y2ggd2UgY2FuIGRvIGF0IHRoaXMgcG9pbnQgKilcbiAgICAoKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCJcbiAgICBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGlkIDogJ2EgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5sZXQgY29uc3QgYyBfID0gY1xubGV0IGNvbXBvc2UgZiBnIHggPSBmIChnIHgpXG5sZXQgZmxpcCBmIHggeSA9IGYgeSB4XG5sZXQgbmVnYXRlIHAgdiA9IG5vdCAocCB2KVxuXG5leGNlcHRpb24gRmluYWxseV9yYWlzZWQgb2YgZXhuXG5cbmxldCAoKSA9IFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgQEAgZnVuY3Rpb25cbnwgRmluYWxseV9yYWlzZWQgZXhuIC0+IFNvbWUgKFwiRnVuLkZpbmFsbHlfcmFpc2VkOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBleG4pXG58IF8gLT4gTm9uZVxuXG5sZXQgcHJvdGVjdCB+KGZpbmFsbHkgOiB1bml0IC0+IHVuaXQpIHdvcmsgPVxuICBsZXQgZmluYWxseV9ub19leG4gKCkgPVxuICAgIHRyeSBmaW5hbGx5ICgpIHdpdGggZSAtPlxuICAgICAgbGV0IGJ0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIChGaW5hbGx5X3JhaXNlZCBlKSBidFxuICBpblxuICBtYXRjaCB3b3JrICgpIHdpdGhcbiAgfCByZXN1bHQgLT4gZmluYWxseV9ub19leG4gKCkgOyByZXN1bHRcbiAgfCBleGNlcHRpb24gd29ya19leG4gLT5cbiAgICAgIGxldCB3b3JrX2J0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGZpbmFsbHlfbm9fZXhuICgpIDtcbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIHdvcmtfZXhuIHdvcmtfYnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSmFjcXVlcy1IZW5yaSBKb3VyZGFuLCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUGFyaXMgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYtMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlICAgKilcbigqICAgICBldCBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdGF0ID0ge1xuICBtaW5vcl93b3JkcyA6IGZsb2F0O1xuICBwcm9tb3RlZF93b3JkcyA6IGZsb2F0O1xuICBtYWpvcl93b3JkcyA6IGZsb2F0O1xuICBtaW5vcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIGhlYXBfd29yZHMgOiBpbnQ7XG4gIGhlYXBfY2h1bmtzIDogaW50O1xuICBsaXZlX3dvcmRzIDogaW50O1xuICBsaXZlX2Jsb2NrcyA6IGludDtcbiAgZnJlZV93b3JkcyA6IGludDtcbiAgZnJlZV9ibG9ja3MgOiBpbnQ7XG4gIGxhcmdlc3RfZnJlZSA6IGludDtcbiAgZnJhZ21lbnRzIDogaW50O1xuICBjb21wYWN0aW9ucyA6IGludDtcbiAgdG9wX2hlYXBfd29yZHMgOiBpbnQ7XG4gIHN0YWNrX3NpemUgOiBpbnQ7XG4gIGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogaW50O1xufVxuXG50eXBlIGNvbnRyb2wgPSB7XG4gIG1pbm9yX2hlYXBfc2l6ZSA6IGludDtcbiAgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnQ7XG4gIHNwYWNlX292ZXJoZWFkIDogaW50O1xuICB2ZXJib3NlIDogaW50O1xuICBtYXhfb3ZlcmhlYWQgOiBpbnQ7XG4gIHN0YWNrX2xpbWl0IDogaW50O1xuICBhbGxvY2F0aW9uX3BvbGljeSA6IGludDtcbiAgd2luZG93X3NpemUgOiBpbnQ7XG4gIGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnQ7XG59XG5cbmV4dGVybmFsIHN0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2Nfc3RhdFwiXG5leHRlcm5hbCBxdWlja19zdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3F1aWNrX3N0YXRcIlxuZXh0ZXJuYWwgY291bnRlcnMgOiB1bml0IC0+IChmbG9hdCAqIGZsb2F0ICogZmxvYXQpID0gXCJjYW1sX2djX2NvdW50ZXJzXCJcbmV4dGVybmFsIG1pbm9yX3dvcmRzIDogdW5pdCAtPiAoZmxvYXQgW0B1bmJveGVkXSlcbiAgPSBcImNhbWxfZ2NfbWlub3Jfd29yZHNcIiBcImNhbWxfZ2NfbWlub3Jfd29yZHNfdW5ib3hlZFwiXG5leHRlcm5hbCBnZXQgOiB1bml0IC0+IGNvbnRyb2wgPSBcImNhbWxfZ2NfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGNvbnRyb2wgLT4gdW5pdCA9IFwiY2FtbF9nY19zZXRcIlxuZXh0ZXJuYWwgbWlub3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWlub3JcIlxuZXh0ZXJuYWwgbWFqb3Jfc2xpY2UgOiBpbnQgLT4gaW50ID0gXCJjYW1sX2djX21ham9yX3NsaWNlXCJcbmV4dGVybmFsIG1ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21ham9yXCJcbmV4dGVybmFsIGZ1bGxfbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfZnVsbF9tYWpvclwiXG5leHRlcm5hbCBjb21wYWN0IDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2NvbXBhY3Rpb25cIlxuZXh0ZXJuYWwgZ2V0X21pbm9yX2ZyZWUgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nZXRfbWlub3JfZnJlZVwiXG5cbmxldCBldmVudGxvZ19wYXVzZSAoKSA9ICgpXG5sZXQgZXZlbnRsb2dfcmVzdW1lICgpID0gKClcblxub3BlbiBQcmludGZcblxubGV0IHByaW50X3N0YXQgYyA9XG4gIGxldCBzdCA9IHN0YXQgKCkgaW5cbiAgZnByaW50ZiBjIFwibWlub3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5taW5vcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwibWFqb3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiY29tcGFjdGlvbnM6ICAgICAgICAgICAgJWRcXG5cIiBzdC5jb21wYWN0aW9ucztcbiAgZnByaW50ZiBjIFwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiAlZFxcblwiIHN0LmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMSA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlLjBmXCIgc3QubWlub3Jfd29yZHMpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1pbm9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJwcm9tb3RlZF93b3JkczogJSouMGZcXG5cIiBsMSBzdC5wcm9tb3RlZF93b3JkcztcbiAgZnByaW50ZiBjIFwibWFqb3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWFqb3Jfd29yZHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDIgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJWRcIiBzdC50b3BfaGVhcF93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwidG9wX2hlYXBfd29yZHM6ICUqZFxcblwiIGwyIHN0LnRvcF9oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJoZWFwX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwibGl2ZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmxpdmVfd29yZHM7XG4gIGZwcmludGYgYyBcImZyZWVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5mcmVlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsYXJnZXN0X2ZyZWU6ICAgJSpkXFxuXCIgbDIgc3QubGFyZ2VzdF9mcmVlO1xuICBmcHJpbnRmIGMgXCJmcmFnbWVudHM6ICAgICAgJSpkXFxuXCIgbDIgc3QuZnJhZ21lbnRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgZnByaW50ZiBjIFwibGl2ZV9ibG9ja3M6ICVkXFxuXCIgc3QubGl2ZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImZyZWVfYmxvY2tzOiAlZFxcblwiIHN0LmZyZWVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJoZWFwX2NodW5rczogJWRcXG5cIiBzdC5oZWFwX2NodW5rc1xuXG5cbmxldCBhbGxvY2F0ZWRfYnl0ZXMgKCkgPVxuICBsZXQgKG1pLCBwcm8sIG1hKSA9IGNvdW50ZXJzICgpIGluXG4gIChtaSArLiBtYSAtLiBwcm8pICouIGZsb2F0X29mX2ludCAoU3lzLndvcmRfc2l6ZSAvIDgpXG5cblxuZXh0ZXJuYWwgZmluYWxpc2UgOiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWdpc3RlclwiXG5leHRlcm5hbCBmaW5hbGlzZV9sYXN0IDogKHVuaXQgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9XG4gIFwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVwiXG5leHRlcm5hbCBmaW5hbGlzZV9yZWxlYXNlIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlbGVhc2VcIlxuXG5cbnR5cGUgYWxhcm0gPSBib29sIEF0b21pYy50XG50eXBlIGFsYXJtX3JlYyA9IHthY3RpdmUgOiBhbGFybTsgZiA6IHVuaXQgLT4gdW5pdH1cblxubGV0IHJlYyBjYWxsX2FsYXJtIGFyZWMgPVxuICBpZiBBdG9taWMuZ2V0IGFyZWMuYWN0aXZlIHRoZW4gYmVnaW5cbiAgICBsZXQgZmluYWxseSAoKSA9IGZpbmFsaXNlIGNhbGxfYWxhcm0gYXJlYyBpblxuICAgIEZ1bi5wcm90ZWN0IH5maW5hbGx5IGFyZWMuZlxuICBlbmRcblxubGV0IGRlbGV0ZV9hbGFybSBhID0gQXRvbWljLnNldCBhIGZhbHNlXG5cbmxldCBjcmVhdGVfYWxhcm0gZiA9XG4gIGxldCBhcmVjID0geyBhY3RpdmUgPSBBdG9taWMubWFrZSB0cnVlOyBmID0gZiB9IGluXG4gIERvbWFpbi5hdF9leGl0IChmdW4gKCkgLT4gZGVsZXRlX2FsYXJtIGFyZWMuYWN0aXZlKTtcbiAgZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjO1xuICBhcmVjLmFjdGl2ZVxuXG5cbm1vZHVsZSBNZW1wcm9mID1cbiAgc3RydWN0XG4gICAgdHlwZSB0XG4gICAgdHlwZSBhbGxvY2F0aW9uX3NvdXJjZSA9IE5vcm1hbCB8IE1hcnNoYWwgfCBDdXN0b21cbiAgICB0eXBlIGFsbG9jYXRpb24gPVxuICAgICAgeyBuX3NhbXBsZXMgOiBpbnQ7XG4gICAgICAgIHNpemUgOiBpbnQ7XG4gICAgICAgIHNvdXJjZSA6IGFsbG9jYXRpb25fc291cmNlO1xuICAgICAgICBjYWxsc3RhY2sgOiBQcmludGV4Yy5yYXdfYmFja3RyYWNlIH1cblxuICAgIHR5cGUgKCdtaW5vciwgJ21ham9yKSB0cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3I6IGFsbG9jYXRpb24gLT4gJ21pbm9yIG9wdGlvbjtcbiAgICAgIGFsbG9jX21ham9yOiBhbGxvY2F0aW9uIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBwcm9tb3RlOiAnbWlub3IgLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIGRlYWxsb2NfbWlub3I6ICdtaW5vciAtPiB1bml0O1xuICAgICAgZGVhbGxvY19tYWpvcjogJ21ham9yIC0+IHVuaXQ7XG4gICAgfVxuXG4gICAgbGV0IG51bGxfdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBwcm9tb3RlID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgZGVhbGxvY19taW5vciA9IChmdW4gXyAtPiAoKSk7XG4gICAgICBkZWFsbG9jX21ham9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICB9XG5cbiAgICBleHRlcm5hbCBjX3N0YXJ0IDpcbiAgICAgIGZsb2F0IC0+IGludCAtPiAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgLT4gdFxuICAgICAgPSBcImNhbWxfbWVtcHJvZl9zdGFydFwiXG5cbiAgICBsZXQgc3RhcnRcbiAgICAgIH5zYW1wbGluZ19yYXRlXG4gICAgICA/KGNhbGxzdGFja19zaXplID0gbWF4X2ludClcbiAgICAgIHRyYWNrZXIgPVxuICAgICAgY19zdGFydCBzYW1wbGluZ19yYXRlIGNhbGxzdGFja19zaXplIHRyYWNrZXJcblxuICAgIGV4dGVybmFsIHN0b3AgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfbWVtcHJvZl9zdG9wXCJcblxuICAgIGV4dGVybmFsIGRpc2NhcmQgOiB0IC0+IHVuaXQgPSBcImNhbWxfbWVtcHJvZl9kaXNjYXJkXCJcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGluX2NoYW5uZWxcblxudHlwZSBvcGVuX2ZsYWcgPSBTdGRsaWIub3Blbl9mbGFnID1cbiAgfCBPcGVuX3Jkb25seVxuICB8IE9wZW5fd3Jvbmx5XG4gIHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0XG4gIHwgT3Blbl90cnVuY1xuICB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5XG4gIHwgT3Blbl90ZXh0XG4gIHwgT3Blbl9ub25ibG9ja1xuXG5sZXQgc3RkaW4gPSBTdGRsaWIuc3RkaW5cbmxldCBvcGVuX2JpbiA9IFN0ZGxpYi5vcGVuX2luX2JpblxubGV0IG9wZW5fdGV4dCA9IFN0ZGxpYi5vcGVuX2luXG5sZXQgb3Blbl9nZW4gPSBTdGRsaWIub3Blbl9pbl9nZW5cblxubGV0IHdpdGhfb3BlbiBvcGVuZnVuIHMgZiA9XG4gIGxldCBpYyA9IG9wZW5mdW4gcyBpblxuICBGdW4ucHJvdGVjdCB+ZmluYWxseTooZnVuICgpIC0+IFN0ZGxpYi5jbG9zZV9pbl9ub2VyciBpYylcbiAgICAoZnVuICgpIC0+IGYgaWMpXG5cbmxldCB3aXRoX29wZW5fYmluIHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbl9iaW4gcyBmXG5cbmxldCB3aXRoX29wZW5fdGV4dCBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5faW4gcyBmXG5cbmxldCB3aXRoX29wZW5fZ2VuIGZsYWdzIHBlcm0gcyBmID1cbiAgd2l0aF9vcGVuIChTdGRsaWIub3Blbl9pbl9nZW4gZmxhZ3MgcGVybSkgcyBmXG5cbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX2luXG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3NfaW5cbmxldCBsZW5ndGggPSBTdGRsaWIuTGFyZ2VGaWxlLmluX2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2VfaW5cbmxldCBjbG9zZV9ub2VyciA9IFN0ZGxpYi5jbG9zZV9pbl9ub2VyclxuXG5sZXQgaW5wdXRfY2hhciBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9jaGFyIGljIHdpdGhcbiAgfCBjIC0+IFNvbWUgY1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dF9ieXRlIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2J5dGUgaWMgd2l0aFxuICB8IG4gLT4gU29tZSBuXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2xpbmUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgcyAtPiBTb21lIHNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXQgPSBTdGRsaWIuaW5wdXRcblxuZXh0ZXJuYWwgdW5zYWZlX2lucHV0X2JpZ2FycmF5IDpcbiAgdCAtPiBfIEJpZ2FycmF5LkFycmF5MS50IC0+IGludCAtPiBpbnQgLT4gaW50XG4gID0gXCJjYW1sX21sX2lucHV0X2JpZ2FycmF5XCJcblxubGV0IGlucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJpZ2FycmF5LkFycmF5MS5kaW0gYnVmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJpbnB1dF9iaWdhcnJheVwiXG4gIGVsc2UgdW5zYWZlX2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuXG5cbmxldCByZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0IGljIGJ1ZiBwb3MgbGVuIHdpdGhcbiAgfCAoKSAtPiBTb21lICgpXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IHJlYyB1bnNhZmVfcmVhbGx5X2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuID1cbiAgaWYgbGVuIDw9IDAgdGhlbiBTb21lICgpIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IHVuc2FmZV9pbnB1dF9iaWdhcnJheSBpYyBidWYgb2ZzIGxlbiBpblxuICAgIGlmIHIgPSAwXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0X2JpZ2FycmF5IGljIGJ1ZiAob2ZzICsgcikgKGxlbiAtIHIpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJpZ2FycmF5LkFycmF5MS5kaW0gYnVmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJyZWFsbHlfaW5wdXRfYmlnYXJyYXlcIlxuICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuID1cbiAgbWF0Y2ggU3RkbGliLnJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuIHdpdGhcbiAgfCBzIC0+IFNvbWUgc1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbigqIFJlYWQgdXAgdG8gW2xlbl0gYnl0ZXMgaW50byBbYnVmXSwgc3RhcnRpbmcgYXQgW29mc10uIFJldHVybiB0b3RhbCBieXRlc1xuICAgcmVhZC4gKilcbmxldCByZWFkX3VwdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3Agb2ZzIGxlbiA9XG4gICAgaWYgbGVuID0gMCB0aGVuIG9mc1xuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gU3RkbGliLmlucHV0IGljIGJ1ZiBvZnMgbGVuIGluXG4gICAgICBpZiByID0gMCB0aGVuXG4gICAgICAgIG9mc1xuICAgICAgZWxzZVxuICAgICAgICBsb29wIChvZnMgKyByKSAobGVuIC0gcilcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBvZnMgbGVuIC0gb2ZzXG5cbigqIEJlc3QgZWZmb3J0IGF0dGVtcHQgdG8gcmV0dXJuIGEgYnVmZmVyIHdpdGggPj0gKG9mcyArIG4pIGJ5dGVzIG9mIHN0b3JhZ2UsXG4gICBhbmQgc3VjaCB0aGF0IGl0IGNvaW5jaWRlcyB3aXRoIFtidWZdIGF0IGluZGljZXMgPCBbb2ZzXS5cblxuICAgVGhlIHJldHVybmVkIGJ1ZmZlciBpcyBlcXVhbCB0byBbYnVmXSBpdHNlbGYgaWYgaXQgYWxyZWFkeSBoYXMgc3VmZmljaWVudFxuICAgZnJlZSBzcGFjZS5cblxuICAgVGhlIHJldHVybmVkIGJ1ZmZlciBtYXkgaGF2ZSAqZmV3ZXIqIHRoYW4gW29mcyArIG5dIGJ5dGVzIG9mIHN0b3JhZ2UgaWYgdGhpc1xuICAgbnVtYmVyIGlzID4gW1N5cy5tYXhfc3RyaW5nX2xlbmd0aF0uIEhvd2V2ZXIgdGhlIHJldHVybmVkIGJ1ZmZlciB3aWxsXG4gICAqYWx3YXlzKiBoYXZlID4gW29mc10gYnl0ZXMgb2Ygc3RvcmFnZS4gSW4gdGhlIGxpbWl0aW5nIGNhc2Ugd2hlbiBbb2ZzID0gbGVuXG4gICA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aF0gKHNvIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHJlc2l6ZSB0aGUgYnVmZmVyIGF0XG4gICBhbGwpLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLiAqKVxuXG5sZXQgZW5zdXJlIGJ1ZiBvZnMgbiA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA+PSBvZnMgKyBuIHRoZW4gYnVmXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbmV3X2xlbiA9IHJlZiBsZW4gaW5cbiAgICB3aGlsZSAhbmV3X2xlbiA8IG9mcyArIG4gZG9cbiAgICAgIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuICsgMVxuICAgIGRvbmU7XG4gICAgbGV0IG5ld19sZW4gPSAhbmV3X2xlbiBpblxuICAgIGxldCBuZXdfbGVuID1cbiAgICAgIGlmIG5ld19sZW4gPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgbmV3X2xlblxuICAgICAgZWxzZSBpZiBvZnMgPCBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgZmFpbHdpdGggXCJJbl9jaGFubmVsLmlucHV0X2FsbDogY2hhbm5lbCBjb250ZW50IFxcXG4gICAgICAgICAgICAgICAgICBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtIHN0cmluZyBsZW5ndGhcIlxuICAgIGluXG4gICAgbGV0IG5ld19idWYgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmIDAgbmV3X2J1ZiAwIG9mcztcbiAgICBuZXdfYnVmXG4gIGVuZFxuXG5sZXQgaW5wdXRfYWxsIGljID1cbiAgbGV0IGNodW5rX3NpemUgPSA2NTUzNiBpbiAoKiBJT19CVUZGRVJfU0laRSAqKVxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICB0cnlcbiAgICAgIFN0ZGxpYi5pbl9jaGFubmVsX2xlbmd0aCBpYyAtIFN0ZGxpYi5wb3NfaW4gaWNcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAtMVxuICBpblxuICBsZXQgaW5pdGlhbF9zaXplID0gaWYgaW5pdGlhbF9zaXplIDwgMCB0aGVuIGNodW5rX3NpemUgZWxzZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IGluaXRpYWxfc2l6ZSA9XG4gICAgaWYgaW5pdGlhbF9zaXplIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICBpbml0aWFsX3NpemVcbiAgICBlbHNlXG4gICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IG5yZWFkID0gcmVhZF91cHRvIGljIGJ1ZiAwIGluaXRpYWxfc2l6ZSBpblxuICBpZiBucmVhZCA8IGluaXRpYWxfc2l6ZSB0aGVuICgqIEVPRiByZWFjaGVkLCBidWZmZXIgcGFydGlhbGx5IGZpbGxlZCAqKVxuICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgbnJlYWRcbiAgZWxzZSBiZWdpbiAoKiBucmVhZCA9IGluaXRpYWxfc2l6ZSwgbWF5YmUgRU9GIHJlYWNoZWQgKilcbiAgICBtYXRjaCBTdGRsaWIuaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT5cbiAgICAgICAgKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBpcyBjb21wbGV0ZWx5IGZpbGxlZCAqKVxuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICAgIHwgYyAtPlxuICAgICAgICAoKiBFT0Ygbm90IHJlYWNoZWQgKilcbiAgICAgICAgbGV0IHJlYyBsb29wIGJ1ZiBvZnMgPVxuICAgICAgICAgIGxldCBidWYgPSBlbnN1cmUgYnVmIG9mcyBjaHVua19zaXplIGluXG4gICAgICAgICAgbGV0IHJlbSA9IEJ5dGVzLmxlbmd0aCBidWYgLSBvZnMgaW5cbiAgICAgICAgICAoKiBbcmVtXSBjYW4gYmUgPCBbY2h1bmtfc2l6ZV0gaWYgYnVmZmVyIHNpemUgY2xvc2UgdG9cbiAgICAgICAgICAgICBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAqKVxuICAgICAgICAgIGxldCByID0gcmVhZF91cHRvIGljIGJ1ZiBvZnMgcmVtIGluXG4gICAgICAgICAgaWYgciA8IHJlbSB0aGVuICgqIEVPRiByZWFjaGVkICopXG4gICAgICAgICAgICBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiAwIChvZnMgKyByKVxuICAgICAgICAgIGVsc2UgKCogciA9IHJlbSAqKVxuICAgICAgICAgICAgbG9vcCBidWYgKG9mcyArIHJlbSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgbnJlYWQgKGNodW5rX3NpemUgKyAxKSBpblxuICAgICAgICBCeXRlcy5zZXQgYnVmIG5yZWFkIGM7XG4gICAgICAgIGxvb3AgYnVmIChucmVhZCArIDEpXG4gIGVuZFxuXG5sZXQgW0B0YWlsX21vZF9jb25zXSByZWMgaW5wdXRfbGluZXMgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgbGluZSAtPiBsaW5lIDo6IGlucHV0X2xpbmVzIGljXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IFtdXG5cbmxldCByZWMgZm9sZF9saW5lcyBmIGFjY3UgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgbGluZSAtPiBmb2xkX2xpbmVzIGYgKGYgYWNjdSBsaW5lKSBpY1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBhY2N1XG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX2luXG5cbmV4dGVybmFsIGlzX2JpbmFyeV9tb2RlIDogaW5fY2hhbm5lbCAtPiBib29sID0gXCJjYW1sX21sX2lzX2JpbmFyeV9tb2RlXCJcblxuZXh0ZXJuYWwgaXNhdHR5IDogdCAtPiBib29sID0gXCJjYW1sX3N5c19pc2F0dHlcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBvdXRfY2hhbm5lbFxuXG50eXBlIG9wZW5fZmxhZyA9IFN0ZGxpYi5vcGVuX2ZsYWcgPVxuICB8IE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5cbmxldCBzdGRvdXQgPSBTdGRsaWIuc3Rkb3V0XG5sZXQgc3RkZXJyID0gU3RkbGliLnN0ZGVyclxubGV0IG9wZW5fYmluID0gU3RkbGliLm9wZW5fb3V0X2JpblxubGV0IG9wZW5fdGV4dCA9IFN0ZGxpYi5vcGVuX291dFxubGV0IG9wZW5fZ2VuID0gU3RkbGliLm9wZW5fb3V0X2dlblxuXG5sZXQgd2l0aF9vcGVuIG9wZW5mdW4gcyBmID1cbiAgbGV0IG9jID0gb3BlbmZ1biBzIGluXG4gIEZ1bi5wcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gU3RkbGliLmNsb3NlX291dF9ub2VyciBvYylcbiAgICAoZnVuICgpIC0+IGYgb2MpXG5cbmxldCB3aXRoX29wZW5fYmluIHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9vdXRfYmluIHMgZlxuXG5sZXQgd2l0aF9vcGVuX3RleHQgcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX291dCBzIGZcblxubGV0IHdpdGhfb3Blbl9nZW4gZmxhZ3MgcGVybSBzIGYgPVxuICB3aXRoX29wZW4gKFN0ZGxpYi5vcGVuX291dF9nZW4gZmxhZ3MgcGVybSkgcyBmXG5cbmV4dGVybmFsIHVuc2FmZV9vdXRwdXRfYmlnYXJyYXkgOlxuICB0IC0+IF8gQmlnYXJyYXkuQXJyYXkxLnQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gID0gXCJjYW1sX21sX291dHB1dF9iaWdhcnJheVwiXG5cbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX291dFxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX291dFxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUub3V0X2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfbm9lcnIgPSBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyXG5sZXQgZmx1c2ggPSBTdGRsaWIuZmx1c2hcbmxldCBmbHVzaF9hbGwgPSBTdGRsaWIuZmx1c2hfYWxsXG5sZXQgb3V0cHV0X2NoYXIgPSBTdGRsaWIub3V0cHV0X2NoYXJcbmxldCBvdXRwdXRfYnl0ZSA9IFN0ZGxpYi5vdXRwdXRfYnl0ZVxubGV0IG91dHB1dF9zdHJpbmcgPSBTdGRsaWIub3V0cHV0X3N0cmluZ1xubGV0IG91dHB1dF9ieXRlcyA9IFN0ZGxpYi5vdXRwdXRfYnl0ZXNcbmxldCBvdXRwdXQgPSBTdGRsaWIub3V0cHV0XG5sZXQgb3V0cHV0X3N1YnN0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3Vic3RyaW5nXG5sZXQgb3V0cHV0X2JpZ2FycmF5IG9jIGJ1ZiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJpZ2FycmF5LkFycmF5MS5kaW0gYnVmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRfYmlnYXJyYXlcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXRfYmlnYXJyYXkgb2MgYnVmIG9mcyBsZW5cblxubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfb3V0XG5cbmV4dGVybmFsIGlzX2JpbmFyeV9tb2RlIDogb3V0X2NoYW5uZWwgLT4gYm9vbCA9IFwiY2FtbF9tbF9pc19iaW5hcnlfbW9kZVwiXG5cbmV4dGVybmFsIHNldF9idWZmZXJlZCA6IHQgLT4gYm9vbCAtPiB1bml0ID0gXCJjYW1sX21sX3NldF9idWZmZXJlZFwiXG5cbmV4dGVybmFsIGlzX2J1ZmZlcmVkIDogdCAtPiBib29sID0gXCJjYW1sX21sX2lzX2J1ZmZlcmVkXCJcblxuZXh0ZXJuYWwgaXNhdHR5IDogdCAtPiBib29sID0gXCJjYW1sX3N5c19pc2F0dHlcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBVdGlsaXR5IGZ1bmN0aW9ucyAqKVxuXG5sZXQgaGV4X29mX3N0cmluZyBkID1cbiAgbGV0IGNoYXJfaGV4IG4gPVxuICAgIENoYXIuY2hyIChpZiBuIDwgMTAgdGhlbiBDaGFyLmNvZGUgJzAnICsgblxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBDaGFyLmNvZGUgJ2EnICsgbiAtIDEwKSBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBkIGluXG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgKGxlbiAqIDIpIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbGV0IHggPSBDaGFyLmNvZGUgZC5baV0gaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKSAoY2hhcl9oZXggKHggbHNyIDQpKTtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKzEpIChjaGFyX2hleCAoeCBsYW5kIDB4MGYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcblxubGV0IHN0cmluZ19vZl9oZXggcyA9XG4gIGxldCBkaWdpdCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcwJy4uJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ0EnLi4nRicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8ICdhJy4uJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCBfIC0+IGludmFsaWRfYXJnIFwiRGlnZXN0Lm9mX2hleFwiIGluXG4gIGxldCBieXRlIGkgPSBkaWdpdCBzLltpXSBsc2wgNCArIGRpZ2l0IHMuW2krMV0gaW5cbiAgU3RyaW5nLmluaXQgKFN0cmluZy5sZW5ndGggcyAvIDIpIChmdW4gaSAtPiBDaGFyLmNociAoYnl0ZSAoMiAqIGkpKSlcblxuKCogR2VuZXJpYyBpbnRlcmZhY2UgKilcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHQgPSBzdHJpbmdcbiAgdmFsIGhhc2hfbGVuZ3RoIDogaW50XG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgdmFsIGJ5dGVzIDogYnl0ZXMgLT4gdFxuICB2YWwgc3Vic3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdFxuICB2YWwgc3ViYnl0ZXMgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHRcbiAgdmFsIGNoYW5uZWwgOiBpbl9jaGFubmVsIC0+IGludCAtPiB0XG4gIHZhbCBmaWxlIDogc3RyaW5nIC0+IHRcbiAgdmFsIG91dHB1dCA6IG91dF9jaGFubmVsIC0+IHQgLT4gdW5pdFxuICB2YWwgaW5wdXQgOiBpbl9jaGFubmVsIC0+IHRcbiAgdmFsIHRvX2hleCA6IHQgLT4gc3RyaW5nXG4gIHZhbCBvZl9oZXggOiBzdHJpbmcgLT4gdFxuZW5kXG5cbigqIEJMQUtFMiBoYXNoaW5nLCBwYXJhbWV0ZXJpemVkIGJ5IGhhc2ggc2l6ZSAqKVxuXG5tb2R1bGUgQkxBS0UyIChYOiBzaWcgdmFsIGhhc2hfbGVuZ3RoIDogaW50IGVuZCkgOiBTID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgbGV0IGhhc2hfbGVuZ3RoID1cbiAgICBpZiBYLmhhc2hfbGVuZ3RoIDwgMSB8fCBYLmhhc2hfbGVuZ3RoID4gNjRcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LkJMQUtFMjogd3JvbmcgaGFzaCBzaXplXCI7XG4gICAgWC5oYXNoX2xlbmd0aFxuXG4gIGxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbiAgbGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsXG5cbiAgdHlwZSBzdGF0ZVxuXG4gIGV4dGVybmFsIGNyZWF0ZV9nZW46IGludCAtPiBzdHJpbmcgLT4gc3RhdGUgPSBcImNhbWxfYmxha2UyX2NyZWF0ZVwiXG4gIGV4dGVybmFsIHVwZGF0ZTogc3RhdGUgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9ibGFrZTJfdXBkYXRlXCJcbiAgZXh0ZXJuYWwgZmluYWw6IHN0YXRlIC0+IGludCAtPiB0ID0gXCJjYW1sX2JsYWtlMl9maW5hbFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zdHJpbmc6IGludCAtPiBzdHJpbmcgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxha2UyX3N0cmluZ1wiXG5cbiAgbGV0IGNyZWF0ZSAoKSA9IGNyZWF0ZV9nZW4gaGFzaF9sZW5ndGggXCJcIlxuXG4gIGxldCBzdHJpbmcgc3RyID1cbiAgICB1bnNhZmVfc3RyaW5nIGhhc2hfbGVuZ3RoIFwiXCIgc3RyIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG4gIGxldCBieXRlcyBiID1cbiAgICBzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYilcblxuICBsZXQgc3Vic3RyaW5nIHN0ciBvZnMgbGVuID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gU3RyaW5nLmxlbmd0aCBzdHIgLSBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YnN0cmluZ1wiO1xuICAgIHVuc2FmZV9zdHJpbmcgaGFzaF9sZW5ndGggXCJcIiBzdHIgb2ZzIGxlblxuXG4gIGxldCBzdWJieXRlcyBiIG9mcyBsZW4gPVxuICAgIHN1YnN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKSBvZnMgbGVuXG5cbiAgbGV0IGNoYW5uZWwgaWMgdG9yZWFkID1cbiAgICBsZXQgYnVmX3NpemUgPSA0MDk2IGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBidWZfc2l6ZSBpblxuICAgIGxldCBjdHggPSBjcmVhdGUgKCkgaW5cbiAgICBpZiB0b3JlYWQgPCAwIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWMgZG9fcmVhZCAoKSA9XG4gICAgICAgIGxldCBuID0gSW5fY2hhbm5lbC5pbnB1dCBpYyBidWYgMCBidWZfc2l6ZSBpblxuICAgICAgICBpZiBuID0gMFxuICAgICAgICB0aGVuIGZpbmFsIGN0eCBoYXNoX2xlbmd0aFxuICAgICAgICBlbHNlICh1cGRhdGUgY3R4IChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZikgMCBuOyBkb19yZWFkICgpKVxuICAgICAgaW4gZG9fcmVhZCAoKVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBsZXQgcmVjIGRvX3JlYWQgdG9yZWFkID1cbiAgICAgICAgaWYgdG9yZWFkID0gMCB0aGVuIGZpbmFsIGN0eCBoYXNoX2xlbmd0aCBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IG4gPSBJbl9jaGFubmVsLmlucHV0IGljIGJ1ZiAwIChJbnQubWluIGJ1Zl9zaXplIHRvcmVhZCkgaW5cbiAgICAgICAgICBpZiBuID0gMFxuICAgICAgICAgIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICB1cGRhdGUgY3R4IChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZikgMCBuO1xuICAgICAgICAgICAgZG9fcmVhZCAodG9yZWFkIC0gbilcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kXG4gICAgICBpbiBkb19yZWFkIHRvcmVhZFxuICAgIGVuZFxuXG4gIGxldCBmaWxlIGZpbGVuYW1lID1cbiAgICBJbl9jaGFubmVsLndpdGhfb3Blbl9iaW4gZmlsZW5hbWUgKGZ1biBpYyAtPiBjaGFubmVsIGljICgtMSkpXG5cbiAgbGV0IG91dHB1dCBjaGFuIGRpZ2VzdCA9IG91dHB1dF9zdHJpbmcgY2hhbiBkaWdlc3RcblxuICBsZXQgaW5wdXQgY2hhbiA9IHJlYWxseV9pbnB1dF9zdHJpbmcgY2hhbiBoYXNoX2xlbmd0aFxuXG4gIGxldCB0b19oZXggZCA9XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBkIDw+IGhhc2hfbGVuZ3RoIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QudG9faGV4XCI7XG4gICAgaGV4X29mX3N0cmluZyBkXG5cbiAgbGV0IG9mX2hleCBzID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gaGFzaF9sZW5ndGggKiAyIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Qub2ZfaGV4XCI7XG4gICAgc3RyaW5nX29mX2hleCBzXG5cbmVuZFxuXG5tb2R1bGUgQkxBS0UxMjggPSBCTEFLRTIoc3RydWN0IGxldCBoYXNoX2xlbmd0aCA9IDE2IGVuZClcbm1vZHVsZSBCTEFLRTI1NiA9IEJMQUtFMihzdHJ1Y3QgbGV0IGhhc2hfbGVuZ3RoID0gMzIgZW5kKVxubW9kdWxlIEJMQUtFNTEyID0gQkxBS0UyKHN0cnVjdCBsZXQgaGFzaF9sZW5ndGggPSA2NCBlbmQpXG5cbigqIE1ENSBoYXNoaW5nICopXG5cbm1vZHVsZSBNRDUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBzdHJpbmdcblxuICBsZXQgaGFzaF9sZW5ndGggPSAxNlxuXG4gIGxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbiAgbGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfc3RyaW5nXCJcbiAgZXh0ZXJuYWwgY2hhbm5lbDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfY2hhblwiXG5cbiAgbGV0IHN0cmluZyBzdHIgPVxuICAgIHVuc2FmZV9zdHJpbmcgc3RyIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG4gIGxldCBieXRlcyBiID0gc3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpXG5cbiAgbGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIlxuICAgIGVsc2UgdW5zYWZlX3N0cmluZyBzdHIgb2ZzIGxlblxuXG4gIGxldCBzdWJieXRlcyBiIG9mcyBsZW4gPSBzdWJzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYikgb2ZzIGxlblxuXG4gIGxldCBmaWxlIGZpbGVuYW1lID1cbiAgICBJbl9jaGFubmVsLndpdGhfb3Blbl9iaW4gZmlsZW5hbWUgKGZ1biBpYyAtPiBjaGFubmVsIGljICgtMSkpXG5cbiAgbGV0IG91dHB1dCBjaGFuIGRpZ2VzdCA9IG91dHB1dF9zdHJpbmcgY2hhbiBkaWdlc3RcblxuICBsZXQgaW5wdXQgY2hhbiA9IHJlYWxseV9pbnB1dF9zdHJpbmcgY2hhbiAxNlxuXG4gIGxldCB0b19oZXggZCA9XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBkIDw+IDE2IHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QudG9faGV4XCI7XG4gICAgaGV4X29mX3N0cmluZyBkXG5cbiAgbGV0IG9mX2hleCBzID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gMzIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5mcm9tX2hleFwiO1xuICAgIHN0cmluZ19vZl9oZXggc1xuXG5lbmRcblxuKCogRGVmYXVsdCBleHBvcnRlZCBpbXBsZW1lbnRhdGlvbiBpcyBNRDUgKilcblxuaW5jbHVkZSBNRDVcblxubGV0IGZyb21faGV4ID0gb2ZfaGV4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgTWFudWVsIFNlcnJhbm8gZXQgWGF2aWVyIExlcm95LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbQmlnYXJyYXldOiBsYXJnZSwgbXVsdGktZGltZW5zaW9uYWwsIG51bWVyaWNhbCBhcnJheXMgKilcblxuKCogVGhlc2UgdHlwZXMgaW4gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdGFibGVzIGluXG4gICAuLi90eXBpbmcvdHlwZW9wdC5tbCAqKVxuXG50eXBlIGZsb2F0MTZfZWx0ID0gRmxvYXQxNl9lbHRcbnR5cGUgZmxvYXQzMl9lbHQgPSBGbG9hdDMyX2VsdFxudHlwZSBmbG9hdDY0X2VsdCA9IEZsb2F0NjRfZWx0XG50eXBlIGludDhfc2lnbmVkX2VsdCA9IEludDhfc2lnbmVkX2VsdFxudHlwZSBpbnQ4X3Vuc2lnbmVkX2VsdCA9IEludDhfdW5zaWduZWRfZWx0XG50eXBlIGludDE2X3NpZ25lZF9lbHQgPSBJbnQxNl9zaWduZWRfZWx0XG50eXBlIGludDE2X3Vuc2lnbmVkX2VsdCA9IEludDE2X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQzMl9lbHQgPSBJbnQzMl9lbHRcbnR5cGUgaW50NjRfZWx0ID0gSW50NjRfZWx0XG50eXBlIGludF9lbHQgPSBJbnRfZWx0XG50eXBlIG5hdGl2ZWludF9lbHQgPSBOYXRpdmVpbnRfZWx0XG50eXBlIGNvbXBsZXgzMl9lbHQgPSBDb21wbGV4MzJfZWx0XG50eXBlIGNvbXBsZXg2NF9lbHQgPSBDb21wbGV4NjRfZWx0XG5cbigqIEtlZXAgdGhlIG9yZGVyIG9mIHRoZXNlIGNvbnN0cnVjdG9ycyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfa2luZFxuICAgZW51bWVyYXRpb24gaW4gYmlnYXJyYXkuaCAqKVxuXG50eXBlICgnYSwgJ2IpIGtpbmQgPVxuICB8IEZsb2F0MzIgOiAoZmxvYXQsIGZsb2F0MzJfZWx0KSBraW5kXG4gIHwgRmxvYXQ2NCA6IChmbG9hdCwgZmxvYXQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3NpZ25lZCA6IChpbnQsIGludDhfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDhfdW5zaWduZWQgOiAoaW50LCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3NpZ25lZCA6IChpbnQsIGludDE2X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl91bnNpZ25lZCA6IChpbnQsIGludDE2X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDMyIDogKGludDMyLCBpbnQzMl9lbHQpIGtpbmRcbiAgfCBJbnQ2NCA6IChpbnQ2NCwgaW50NjRfZWx0KSBraW5kXG4gIHwgSW50IDogKGludCwgaW50X2VsdCkga2luZFxuICB8IE5hdGl2ZWludCA6IChuYXRpdmVpbnQsIG5hdGl2ZWludF9lbHQpIGtpbmRcbiAgfCBDb21wbGV4MzIgOiAoQ29tcGxleC50LCBjb21wbGV4MzJfZWx0KSBraW5kXG4gIHwgQ29tcGxleDY0IDogKENvbXBsZXgudCwgY29tcGxleDY0X2VsdCkga2luZFxuICB8IENoYXIgOiAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBGbG9hdDE2IDogKGZsb2F0LCBmbG9hdDE2X2VsdCkga2luZFxuXG50eXBlIGNfbGF5b3V0ID0gQ19sYXlvdXRfdHlwXG50eXBlIGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRfdHlwICgqKilcblxudHlwZSAnYSBsYXlvdXQgPVxuICAgIENfbGF5b3V0OiBjX2xheW91dCBsYXlvdXRcbiAgfCBGb3J0cmFuX2xheW91dDogZm9ydHJhbl9sYXlvdXQgbGF5b3V0XG5cbmxldCBmbG9hdDE2ID0gRmxvYXQxNlxubGV0IGZsb2F0MzIgPSBGbG9hdDMyXG5sZXQgZmxvYXQ2NCA9IEZsb2F0NjRcbmxldCBpbnQ4X3NpZ25lZCA9IEludDhfc2lnbmVkXG5sZXQgaW50OF91bnNpZ25lZCA9IEludDhfdW5zaWduZWRcbmxldCBpbnQxNl9zaWduZWQgPSBJbnQxNl9zaWduZWRcbmxldCBpbnQxNl91bnNpZ25lZCA9IEludDE2X3Vuc2lnbmVkXG5sZXQgaW50MzIgPSBJbnQzMlxubGV0IGludDY0ID0gSW50NjRcbmxldCBpbnQgPSBJbnRcbmxldCBuYXRpdmVpbnQgPSBOYXRpdmVpbnRcbmxldCBjb21wbGV4MzIgPSBDb21wbGV4MzJcbmxldCBjb21wbGV4NjQgPSBDb21wbGV4NjRcbmxldCBjaGFyID0gQ2hhclxuXG5sZXQga2luZF9zaXplX2luX2J5dGVzIDogdHlwZSBhIGIuIChhLCBiKSBraW5kIC0+IGludCA9IGZ1bmN0aW9uXG4gIHwgRmxvYXQxNiAtPiAyXG4gIHwgRmxvYXQzMiAtPiA0XG4gIHwgRmxvYXQ2NCAtPiA4XG4gIHwgSW50OF9zaWduZWQgLT4gMVxuICB8IEludDhfdW5zaWduZWQgLT4gMVxuICB8IEludDE2X3NpZ25lZCAtPiAyXG4gIHwgSW50MTZfdW5zaWduZWQgLT4gMlxuICB8IEludDMyIC0+IDRcbiAgfCBJbnQ2NCAtPiA4XG4gIHwgSW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgTmF0aXZlaW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgQ29tcGxleDMyIC0+IDhcbiAgfCBDb21wbGV4NjQgLT4gMTZcbiAgfCBDaGFyIC0+IDFcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2xheW91dCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgY19sYXlvdXQgPSBDX2xheW91dFxubGV0IGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRcblxubW9kdWxlIEdlbmFycmF5ID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHRcbiAgZXh0ZXJuYWwgY3JlYXRlOiAoJ2EsICdiKSBraW5kIC0+ICdjIGxheW91dCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgPSBcImNhbWxfYmFfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2FcbiAgICAgPSBcImNhbWxfYmFfZ2V0X2dlbmVyaWNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYSAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX3NldF9nZW5lcmljXCJcblxuICBsZXQgcmVjIGNsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPSBBcnJheS5sZW5ndGggaWR4IHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAwIHRvIHByZWQgbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBjbG9vcCBhcnIgaWR4IGYgKHN1Y2MgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IHJlYyBmbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sIDwgMCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMSB0byBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGZsb29wIGFyciBpZHggZiAocHJlZCBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltcyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbXMgaW5cbiAgICBsZXQgZGxlbiA9IEFycmF5Lmxlbmd0aCBkaW1zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDApIGYgMCBkaW1zOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDEpIGYgKHByZWQgZGxlbikgZGltczsgYXJyXG5cbiAgZXh0ZXJuYWwgbnVtX2RpbXM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiY2FtbF9iYV9udW1fZGltc1wiXG4gIGV4dGVybmFsIG50aF9kaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfYmFfZGltXCJcbiAgbGV0IGRpbXMgYSA9XG4gICAgbGV0IG4gPSBudW1fZGltcyBhIGluXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlIG4gMCBpblxuICAgIGZvciBpID0gMCB0byBuLTEgZG8gZC4oaSkgPC0gbnRoX2RpbSBhIGkgZG9uZTtcbiAgICBkXG5cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChBcnJheS5mb2xkX2xlZnQgKCAqICkgMSAoZGltcyBhcnIpKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzbGljZV9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBzbGljZV9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbmVuZFxuXG5tb2R1bGUgQXJyYXkwID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0ID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3x8XVxuICBsZXQgZ2V0IGFyciA9IEdlbmFycmF5LmdldCBhcnIgW3x8XVxuICBsZXQgc2V0IGFyciA9IEdlbmFycmF5LnNldCBhcnIgW3x8XVxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9IGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpXG5cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcblxuICBsZXQgb2ZfdmFsdWUga2luZCBsYXlvdXQgdiA9XG4gICAgbGV0IGEgPSBjcmVhdGUga2luZCBsYXlvdXQgaW5cbiAgICBzZXQgYSB2O1xuICAgIGFcbiAgbGV0IGluaXQgPSBvZl92YWx1ZVxuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW18XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG4gIGV4dGVybmFsIGRpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbSBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsICdjKSB0ID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZSAodHlwZSB0KSAoYSA6IChfLCBfLCB0KSBHZW5hcnJheS50KSBuID1cbiAgICBtYXRjaCBsYXlvdXQgYSB3aXRoXG4gICAgfCBDX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XTogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDEgdG8gZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0gZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgKEFycmF5Lmxlbmd0aCBkYXRhKSBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGRhdGEgLSAxIGRvIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIGRhdGEuKGkpIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkyID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMnxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzJcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzJcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzJcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMlwiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0IGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHQgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTIub2ZfYXJyYXk6IG5vbi1yZWN0YW5ndWxhciBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSByb3cuKGopXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTMgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTI7IGRpbTN8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfM1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfc2V0XzNcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8zXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBkaW0zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8zXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKSAqIChkaW0zIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfcmlnaHRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX2xlZnRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIGZvciBrID0gMCB0byBwcmVkIGRpbTMgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGsgPSAxIHRvIGRpbTMgZG9cbiAgICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGRpbTMgPSBpZiBkaW0yID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgbGV0IGNvbCA9IHJvdy4oaikgaW5cbiAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGNvbCA8PiBkaW0zIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICAgIGZvciBrID0gMCB0byBkaW0zIC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSAoayArIG9mcykgY29sLihrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MDogKCdhLCAnYiwgJ2MpIEFycmF5MC50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MTogKCdhLCAnYiwgJ2MpIEFycmF5MS50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MjogKCdhLCAnYiwgJ2MpIEFycmF5Mi50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MzogKCdhLCAnYiwgJ2MpIEFycmF5My50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmxldCBhcnJheTBfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAwIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkwX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTFfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAxIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkxX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTJfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAyIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkyX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTNfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAzIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkzX29mX2dlbmFycmF5XCJcblxuZXh0ZXJuYWwgcmVzaGFwZTpcbiAgICgnYSwgJ2IsICdjKSBHZW5hcnJheS50IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcImNhbWxfYmFfcmVzaGFwZVwiXG5sZXQgcmVzaGFwZV8wIGEgPSByZXNoYXBlIGEgW3x8XVxubGV0IHJlc2hhcGVfMSBhIGRpbTEgPSByZXNoYXBlIGEgW3xkaW0xfF1cbmxldCByZXNoYXBlXzIgYSBkaW0xIGRpbTIgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTJ8XVxubGV0IHJlc2hhcGVfMyBhIGRpbTEgZGltMiBkaW0zID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yO2RpbTN8XVxuXG4oKiBGb3JjZSBjYW1sX2JhX2dldF97MSwyLDMsTn0gdG8gYmUgbGlua2VkIGluLCBzaW5jZSB3ZSBkb24ndCByZWZlclxuICAgdG8gdGhvc2UgcHJpbWl0aXZlcyBkaXJlY3RseSBpbiB0aGlzIGZpbGUgKilcblxubGV0IF8gPVxuICBsZXQgXyA9IEdlbmFycmF5LmdldCBpblxuICBsZXQgXyA9IEFycmF5MS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTIuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkzLmdldCBpblxuICAoKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuZXh0ZXJuYWwgZ2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8xXCJcbmV4dGVybmFsIGdldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMlwiXG5leHRlcm5hbCBnZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzNcIlxuZXh0ZXJuYWwgc2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8xXCJcbmV4dGVybmFsIHNldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMlwiXG5leHRlcm5hbCBzZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzNcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ2FtYml1bSwgQ29sbGVnZSBkZSBGcmFuY2UgYW5kIElucmlhICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgKilcblxuZXh0ZXJuYWwgcmFuZG9tX3NlZWQ6IHVuaXQgLT4gaW50IGFycmF5ID0gXCJjYW1sX3N5c19yYW5kb21fc2VlZFwiXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuXG4gIG9wZW4gQmlnYXJyYXlcblxuICB0eXBlIHQgPSAoaW50NjQsIGludDY0X2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbiAgZXh0ZXJuYWwgbmV4dDogdCAtPiAoaW50NjRbQHVuYm94ZWRdKVxuICAgICAgPSBcImNhbWxfbHhtX25leHRcIiBcImNhbWxfbHhtX25leHRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNyZWF0ZSAoKSA6IHQgPVxuICAgIEFycmF5MS5jcmVhdGUgSW50NjQgQ19sYXlvdXQgNFxuXG4gIGxldCBzZXQgcyBpMSBpMiBpMyBpNCA9XG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAwIChJbnQ2NC5sb2dvciBpMSAxTCk7ICgqIG11c3QgYmUgb2RkICopXG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAxIGkyO1xuICAgIEFycmF5MS51bnNhZmVfc2V0IHMgMiAoaWYgaTMgPD4gMEwgdGhlbiBpMyBlbHNlIDFMKTsgKCogbXVzdCBub3QgYmUgMCAqKVxuICAgIEFycmF5MS51bnNhZmVfc2V0IHMgMyAoaWYgaTQgPD4gMEwgdGhlbiBpNCBlbHNlIDJMKSAoKiBtdXN0IG5vdCBiZSAwICopXG5cbiAgbGV0IG1rIGkxIGkyIGkzIGk0ID1cbiAgICBsZXQgcyA9IGNyZWF0ZSAoKSBpblxuICAgIHNldCBzIGkxIGkyIGkzIGk0OyBzXG5cbiAgbGV0IHNlcmlhbGl6YXRpb25fcHJlZml4ID1cbiAgICBcImx4bTE6XCJcbiAgICAoKiBcImx4bVwiIGRlbm90ZXMgdGhlIGFsZ29yaXRobSBjdXJyZW50bHkgaW4gdXNlLCBhbmQgJzEnIGlzXG4gICAgICAgYSB2ZXJzaW9uIG51bWJlci4gV2Ugc2hvdWxkIHVwZGF0ZSB0aGlzIHByZWZpeCBpZiB3ZSBjaGFuZ2VcbiAgICAgICB0aGUgUmFuZG9tIGFsZ29yaXRobSBvciB0aGUgc2VyaWFsaXphdGlvbiBmb3JtYXQsIHNvIHRoYXQgdXNlcnNcbiAgICAgICBnZXQgYSBjbGVhbiBlcnJvciBpbnN0ZWFkIG9mIGJlbGlldmluZyB0aGF0IHRoZXkgZmFpdGhmdWxseVxuICAgICAgIHJlcHJvZHVjZSB0aGVpciBwcmV2aW91cyBzdGF0ZSBhbmQgaW4gZmFjdCBnZXQgYSBkaWZmZXJlbnRcbiAgICAgICBzdHJlYW0uXG5cbiAgICAgICBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gY29uc3RyYWludCB0byBrZWVwIHRoZSBzYW1lXG4gICAgICAgXCI8bmFtZT48dmVyPjo8ZGF0YT5cIiBmb3JtYXQgb3IgbWVzc2FnZSBzaXplIGluIGZ1dHVyZSB2ZXJzaW9ucyxcbiAgICAgICB3ZSBjb3VsZCBjaGFuZ2UgdGhlIGZvcm1hdCBjb21wbGV0ZWx5IGlmIHdlIHdhbnRlZCBhcyBsb25nXG4gICAgICAgYXMgdGhlcmUgaXMgbm8gY29uZnVzaW9uIHBvc3NpYmxlIHdpdGggdGhlIHByZXZpb3VzIGZvcm1hdHMuICopXG5cbiAgbGV0IHNlcmlhbGl6YXRpb25fcHJlZml4X2xlbiA9XG4gICAgU3RyaW5nLmxlbmd0aCBzZXJpYWxpemF0aW9uX3ByZWZpeFxuXG4gIGxldCB0b19iaW5hcnlfc3RyaW5nIHMgPVxuICAgIGxldCBwcmVmaXggPSBzZXJpYWxpemF0aW9uX3ByZWZpeCBpblxuICAgIGxldCBwcmVmbGVuID0gc2VyaWFsaXphdGlvbl9wcmVmaXhfbGVuIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAocHJlZmxlbiArIDQgKiA4KSBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIHByZWZpeCAwIGJ1ZiAwIHByZWZsZW47XG4gICAgZm9yIGkgPSAwIHRvIDMgZG9cbiAgICAgIEJ5dGVzLnNldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyBpICogOCkgKEFycmF5MS5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWZcblxuICBsZXQgb2ZfYmluYXJ5X3N0cmluZyBidWYgPVxuICAgIGxldCBwcmVmaXggPSBzZXJpYWxpemF0aW9uX3ByZWZpeCBpblxuICAgIGxldCBwcmVmbGVuID0gc2VyaWFsaXphdGlvbl9wcmVmaXhfbGVuIGluXG4gICAgaWYgU3RyaW5nLmxlbmd0aCBidWYgPD4gcHJlZmxlbiArIDQgKiA4XG4gICAgICAgfHwgbm90IChTdHJpbmcuc3RhcnRzX3dpdGggfnByZWZpeCBidWYpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKFwiUmFuZG9tLlN0YXRlLm9mX2JpbmFyeV9zdHJpbmc6IGV4cGVjdGVkIGEgZm9ybWF0IFxcXG4gICAgICAgICAgY29tcGF0aWJsZSB3aXRoIE9DYW1sIFwiIF4gU3lzLm9jYW1sX3ZlcnNpb24pO1xuICAgIGxldCBpMSA9IFN0cmluZy5nZXRfaW50NjRfbGUgYnVmIChwcmVmbGVuICsgMCAqIDgpIGluXG4gICAgbGV0IGkyID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAxICogOCkgaW5cbiAgICBsZXQgaTMgPSBTdHJpbmcuZ2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIDIgKiA4KSBpblxuICAgIGxldCBpNCA9IFN0cmluZy5nZXRfaW50NjRfbGUgYnVmIChwcmVmbGVuICsgMyAqIDgpIGluXG4gICAgbWsgaTEgaTIgaTMgaTRcblxuICBsZXQgYXNzaWduIChkc3Q6IHQpIChzcmM6IHQpID1cbiAgICBBcnJheTEuYmxpdCBzcmMgZHN0XG5cbiAgbGV0IGNvcHkgcyA9XG4gICAgbGV0IHMnID0gY3JlYXRlKCkgaW4gYXNzaWduIHMnIHM7IHMnXG5cbiAgKCogVGhlIHNlZWQgaXMgYW4gYXJyYXkgb2YgaW50ZWdlcnMuICBJdCBjYW4gYmUganVzdCBvbmUgaW50ZWdlcixcbiAgICAgYnV0IGl0IGNhbiBhbHNvIGJlIDEyIG9yIG1vcmUgYnl0ZXMuICBUbyBoaWRlIHRoZSBkaWZmZXJlbmNlLFxuICAgICB3ZSBzZXJpYWxpemUgdGhlIGFycmF5IGFzIGEgc2VxdWVuY2Ugb2YgYnl0ZXMsIHRoZW4gaGFzaCB0aGVcbiAgICAgc2VxdWVuY2Ugd2l0aCBNRDUgKERpZ2VzdC5ieXRlcykuICBNRDUgZ2l2ZXMgb25seSAxMjggYml0cyB3aGlsZVxuICAgICB3ZSBuZWVkIDI1NiBiaXRzLCBzbyB3ZSBoYXNoIHR3aWNlIHdpdGggZGlmZmVyZW50IHN1ZmZpeGVzLiAqKVxuICBsZXQgcmVpbml0IHMgc2VlZCA9XG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggc2VlZCBpblxuICAgIGxldCBiID0gQnl0ZXMuY3JlYXRlIChuICogOCArIDEpIGluXG4gICAgZm9yIGkgPSAwIHRvIG4tMSBkb1xuICAgICAgQnl0ZXMuc2V0X2ludDY0X2xlIGIgKGkgKiA4KSAoSW50NjQub2ZfaW50IHNlZWQuKGkpKVxuICAgIGRvbmU7XG4gICAgQnl0ZXMuc2V0IGIgKG4gKiA4KSAnXFx4MDEnO1xuICAgIGxldCBkMSA9IERpZ2VzdC5ieXRlcyBiIGluXG4gICAgQnl0ZXMuc2V0IGIgKG4gKiA4KSAnXFx4MDInO1xuICAgIGxldCBkMiA9IERpZ2VzdC5ieXRlcyBiIGluXG4gICAgc2V0IHMgKFN0cmluZy5nZXRfaW50NjRfbGUgZDEgMClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMSA4KVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQyIDApXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDIgOClcblxuICBsZXQgbWFrZSBzZWVkID1cbiAgICBsZXQgcyA9IGNyZWF0ZSgpIGluIHJlaW5pdCBzIHNlZWQ7IHNcblxuICBsZXQgbWFrZV9zZWxmX2luaXQgKCkgPVxuICAgIG1ha2UgKHJhbmRvbV9zZWVkICgpKVxuXG4gIGxldCBtaW5faW50MzEgPSAtMHg0MDAwXzAwMDBcbiAgICAgICgqID0gLTJ7XjMwfSwgd2hpY2ggaXMgW21pbl9pbnRdIGZvciAzMS1iaXQgaW50ZWdlcnMgKilcbiAgbGV0IG1heF9pbnQzMSA9IDB4M0ZGRl9GRkZGXG4gICAgICAoKiA9ICAye14zMH0tMSwgd2hpY2ggaXMgW21heF9pbnRdIGZvciAzMS1iaXQgaW50ZWdlcnMgKilcbiAgKCogYXZvaWQgaW50ZWdlciBsaXRlcmFscyBmb3IgdGhlc2UsIDMyLWJpdCBPQ2FtbCB3b3VsZCByZWplY3QgdGhlbTogKilcbiAgbGV0IG1pbl9pbnQzMiA9IC0oMSBsc2wgMzEpXG4gICAgICAoKiA9IC0weDgwMDBfMDAwMCBvbiBwbGF0Zm9ybXMgd2hlcmUgW1N5cy5pbnRfc2l6ZSA+PSAzMl0gKilcbiAgbGV0IG1heF9pbnQzMiA9ICgxIGxzbCAzMSkgLSAxXG4gICAgICAoKiA9ICAweDdGRkZfRkZGRiBvbiBwbGF0Zm9ybXMgd2hlcmUgW1N5cy5pbnRfc2l6ZSA+PSAzMl0gKilcblxuICAoKiBSZXR1cm4gMzAgcmFuZG9tIGJpdHMgYXMgYW4gaW50ZWdlciAwIDw9IHggPCAyXjMwICopXG4gIGxldCBiaXRzIHMgPVxuICAgIEludDY0LnRvX2ludCAobmV4dCBzKSBsYW5kIG1heF9pbnQzMVxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbbl0gKGV4Y2x1ZGVkKS5cbiAgICAgW2JvdW5kXSBtYXkgYmUgYW55IHBvc2l0aXZlIFtpbnRdLiAgW21hc2tdIG11c3QgYmUgb2YgdGhlIGZvcm0gWzJ7Xml9LTFdXG4gICAgIGFuZCBncmVhdGVyIG9yIGVxdWFsIHRvIFtuXS4gIExhcmdlciB2YWx1ZXMgb2YgW21hc2tdIG1ha2UgdGhlIGZ1bmN0aW9uXG4gICAgIHJ1biBmYXN0ZXIgKGZld2VyIHNhbXBsZXMgYXJlIHJlamVjdGVkKS4gIFNtYWxsZXIgdmFsdWVzIG9mIFttYXNrXVxuICAgICBhcmUgdXNhYmxlIG9uIGEgd2lkZXIgcmFuZ2Ugb2YgT0NhbWwgaW1wbGVtZW50YXRpb25zLiAgKilcbiAgbGV0IHJlYyBpbnRfYXV4IHMgbiBtYXNrID1cbiAgICAoKiBXZSBzdGFydCBieSBkcmF3aW5nIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgaW4gdGhlIFsgWzAsIG1hc2tdIF0gcmFuZ2UgKilcbiAgICBsZXQgciA9IEludDY0LnRvX2ludCAobmV4dCBzKSBsYW5kIG1hc2sgaW5cbiAgICBsZXQgdiA9IHIgbW9kIG4gaW5cbiAgICAoKiBGb3IgdW5pZm9ybSBkaXN0cmlidXRpb24gb2YgdGhlIHJlc3VsdCBiZXR3ZWVuIDAgaW5jbHVkZWQgYW5kIFtuXVxuICAgICAqIGV4Y2x1ZGVkLCB0aGUgcmFuZG9tIG51bWJlciBbcl0gbXVzdCBoYXZlIGJlZW4gZHJhd24gdW5pZm9ybWx5IGluXG4gICAgICogYW4gaW50ZXJ2YWwgd2hvc2UgbGVuZ3RoIGlzIGEgbXVsdGlwbGUgb2YgW25dLiBUbyBhY2hpZXZlIHRoaXMsXG4gICAgICogd2UgdXNlIHJlamVjdGlvbiBzYW1wbGluZyBvbiB0aGUgZ3JlYXRlc3QgaW50ZXJ2YWwgWyBbMCwgaypuLTFdIF1cbiAgICAgKiB0aGF0IGZpdHMgaW4gWyBbMCwgbWFza10gXS4gIFRoYXQgaXMsIHdlIHJlamVjdCB0aGVcbiAgICAgKiBzYW1wbGUgaWYgaXQgZmFsbHMgb3V0c2lkZSBvZiB0aGlzIGludGVydmFsLCBhbmQgZHJhdyBhZ2Fpbi5cbiAgICAgKiBUaGlzIGlzIHdoYXQgdGhlIHRlc3QgYmVsb3cgZG9lcywgd2hpbGUgY2FyZWZ1bHkgYXZvaWRpbmdcbiAgICAgKiBvdmVyZmxvd3MgYW5kIHNwYXJpbmcgYSBkaXZpc2lvbiBbbWFzayAvIG5dLiAqKVxuICAgIGlmIHIgLSB2ID4gbWFzayAtIG4gKyAxIHRoZW4gaW50X2F1eCBzIG4gbWFzayBlbHNlIHZcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLlxuICAgICBUaGUgYm91bmQgbXVzdCBmaXQgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycy5cbiAgICAgVGhpcyBmdW5jdGlvbiB5aWVsZHMgdGhlIHNhbWUgb3V0cHV0IHJlZ2FyZGxlc3Mgb2YgdGhlIGludGVnZXIgc2l6ZS4gKilcbiAgbGV0IGludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA+IG1heF9pbnQzMSB8fCBib3VuZCA8PSAwXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnRcIlxuICAgIGVsc2UgaW50X2F1eCBzIGJvdW5kIG1heF9pbnQzMVxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuXG4gICAgIFtib3VuZF0gbWF5IGJlIGFueSBwb3NpdGl2ZSBbaW50XS4gKilcbiAgbGV0IGZ1bGxfaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uZnVsbF9pbnRcIlxuICAgICgqIFdoZW4gdGhlIGJvdW5kIGZpdHMgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIHRoZSBzYW1lIG1hc2tcbiAgICAgICBhcyBpbiBmdW5jdGlvbiBbaW50XSBzbyBhcyB0byB5aWVsZCB0aGUgc2FtZSBvdXRwdXQgb24gYWxsIHBsYXRmb3Jtc1xuICAgICAgIHN1cHBvcnRlZCBieSBPQ2FtbCAoMzItYml0IE9DYW1sLCA2NC1iaXQgT0NhbWwsIGFuZCBKYXZhU2NyaXB0KS5cbiAgICAgICBXaGVuIHRoZSBib3VuZCBmaXRzIGluIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBbbWF4X2ludDMyXVxuICAgICAgIGFzIHRoZSBtYXNrIHNvIGFzIHRvIHlpZWxkIHRoZSBzYW1lIG91dHB1dCBvbiBhbGwgcGxhdGZvcm1zIHdoZXJlXG4gICAgICAgW1N5cy5pbnRfc2l6ZSA+PSAzMl0gKGkuZS4gSmF2YVNjcmlwdCBhbmQgNjQtYml0IE9DYW1sKS4gKilcbiAgICBlbHNlXG4gICAgICBpbnRfYXV4IHMgYm91bmRcbiAgICAgICAgKGlmIGJvdW5kIDw9IG1heF9pbnQzMSB0aGVuIG1heF9pbnQzMVxuICAgICAgICAgZWxzZSBpZiBib3VuZCA8PSBtYXhfaW50MzIgdGhlbiBtYXhfaW50MzJcbiAgICAgICAgIGVsc2UgbWF4X2ludClcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFRoZSBbbmJpdHNdIHBhcmFtZXRlciBpcyB0aGUgc2l6ZSBpbiBiaXRzIG9mIHRoZSBzaWduZWQgaW50ZWdlcnNcbiAgICAgd2UgZHJhdyBmcm9tIFtzXS5cbiAgICAgV2UgbXVzdCBoYXZlIFstMntebmJpdHMgLSAxfSA8PSBtaW4gPD0gbWF4IDwgMntebmJpdHMgLSAxfV0uXG4gICAgIE1vcmVvdmVyLCBmb3IgdGhlIGl0ZXJhdGlvbiB0byBjb252ZXJnZSBxdWlja2x5LCB0aGUgaW50ZXJ2YWxcbiAgICAgW1ttaW4sIG1heF1dIHNob3VsZCBoYXZlIHdpZHRoIGF0IGxlYXN0IFsye15uYml0cyAtIDF9XS5cbiAgICAgQXMgdGhlIHdpZHRoIGFwcHJvYWNoZXMgdGhpcyBsb3dlciBsaW1pdCwgdGhlIGF2ZXJhZ2UgbnVtYmVyIG9mXG4gICAgIGRyYXdzIGFwcHJvYWNoZXMgMiwgd2l0aCBhIHF1aXRlIGhpZ2ggc3RhbmRhcmQgZGV2aWF0aW9uICgyICsgZXBzaWxvbikuICopXG4gIGxldCByZWMgaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0cyA9XG4gICAgbGV0IGRyb3AgPSBTeXMuaW50X3NpemUgLSBuYml0cyBpblxuICAgICgqIFRoZSBiaXRzaGlmdHMgcmVwbGljYXRlIHRoZSBbbmJpdHNdLXRoIGJpdCAoc2lnbiBiaXQpIHRvIGhpZ2hlciBiaXRzOiAqKVxuICAgIGxldCByID0gKChJbnQ2NC50b19pbnQgKG5leHQgcykpIGxzbCBkcm9wKSBhc3IgZHJvcCBpblxuICAgIGlmIHIgPCBtaW4gfHwgciA+IG1heCB0aGVuIGludF9pbl9sYXJnZV9yYW5nZSBzIH5taW4gfm1heCB+bmJpdHMgZWxzZSByXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLlxuICAgICBbbWFza10gaXMgYXMgZGVzY3JpYmVkIGZvciBbaW50X2F1eF0uXG4gICAgIFtuYml0c10gaXMgYXMgZGVzY3JpYmVkIGZvciBbaW50X2luX2xhcmdlX3JhbmdlXS4gKilcbiAgbGV0IGludF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggfm1hc2sgfm5iaXRzID1cbiAgICBsZXQgc3BhbiA9IG1heCAtIG1pbiArIDEgaW5cbiAgICBpZiBzcGFuIDw9IG1hc2sgKCogW3NwYW5dIGlzIHNtYWxsIGVub3VnaCAqKVxuICAgICYmIHNwYW4gPiAwICAgICAoKiBubyBvdmVyZmxvdyBvY2N1cnJlZCB3aGVuIGNvbXB1dGluZyBbc3Bhbl0gKilcbiAgICB0aGVuXG4gICAgICAoKiBKdXN0IGRyYXcgYSBudW1iZXIgaW4gW1swLCBzcGFuKV0gYW5kIHNoaWZ0IGl0IGJ5IFttaW5dLiAqKVxuICAgICAgbWluICsgaW50X2F1eCBzIHNwYW4gbWFza1xuICAgIGVsc2VcbiAgICAgICgqIFNwYW4gdG9vIGxhcmdlLCB1c2UgdGhlIGFsdGVybmF0aXZlIGRyYXdpbmcgbWV0aG9kLiAqKVxuICAgICAgaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0c1xuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgV2UgbXVzdCBoYXZlIFttaW4gPD0gbWF4XS4gKilcbiAgbGV0IGludF9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludF9pbl9yYW5nZVwiO1xuICAgICgqIFdoZW4gYm90aCBib3VuZHMgZml0IGluIDMxLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBwYXJhbWV0ZXJzXG4gICAgICAgW21hc2tdIGFuZCBbbmJpdHNdIGFwcHJvcHJpYXRlIGZvciAzMS1iaXQgaW50ZWdlcnMsIHNvIGFzIHRvXG4gICAgICAgeWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIGFsbCBwbGF0Zm9ybXMgc3VwcG9ydGVkIGJ5IE9DYW1sLlxuICAgICAgIFdoZW4gYm90aCBib3VuZHMgZml0IGluIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBwYXJhbWV0ZXJzXG4gICAgICAgW21hc2tdIGFuZCBbbmJpdHNdIGFwcHJvcHJpYXRlIGZvciAzMi1iaXQgaW50ZWdlcnMsIHNvIGFzIHRvXG4gICAgICAgeWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIEphdmFTY3JpcHQgYW5kIG9uIDY0LWJpdCBPQ2FtbC4gKilcbiAgICBpZiBtaW4gPj0gbWluX2ludDMxICYmIG1heCA8PSBtYXhfaW50MzEgdGhlblxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50MzEgfm5iaXRzOjMxXG4gICAgZWxzZSBpZiBtaW4gPj0gbWluX2ludDMyICYmIG1heCA8PSBtYXhfaW50MzIgdGhlblxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50MzIgfm5iaXRzOjMyXG4gICAgZWxzZVxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50IH5uYml0czpTeXMuaW50X3NpemVcblxuICAoKiBSZXR1cm4gMzIgcmFuZG9tIGJpdHMgYXMgYW4gW2ludDMyXSAqKVxuICBsZXQgYml0czMyIHMgPVxuICAgIEludDY0LnRvX2ludDMyIChuZXh0IHMpXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQzMl0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQzMmF1eCBzIG4gPVxuICAgIGxldCByID0gSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czMyIHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDMyLnJlbSByIG4gaW5cbiAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfYXV4XS4gKilcbiAgICBpZiBJbnQzMi4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMWwpXG4gICAgdGhlbiBpbnQzMmF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50MzIgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyXCJcbiAgICBlbHNlIGludDMyYXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gYW4gW2ludDMyXSBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFdlIG11c3QgaGF2ZSBbbWluIDw9IG1heF0uICopXG4gIGxldCByZWMgaW50MzJfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4ID1cbiAgICBsZXQgciA9IEludDY0LnRvX2ludDMyIChuZXh0IHMpIGluXG4gICAgaWYgciA8IG1pbiB8fCByID4gbWF4IHRoZW4gaW50MzJfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IGVsc2UgclxuXG4gIGxldCBpbnQzMl9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyX2luX3JhbmdlXCJcbiAgICBlbHNlXG4gICAgICBsZXQgc3BhbiA9IEludDMyLnN1Y2MgKEludDMyLnN1YiBtYXggbWluKSBpblxuICAgICAgKCogRXhwbGFuYXRpb24gb2YgdGhpcyB0ZXN0OiBzZWUgY29tbWVudCBpbiBbaW50X2luX3JhbmdlX2F1eF0uICopXG4gICAgICBpZiBzcGFuIDw9IEludDMyLnplcm8gdGhlblxuICAgICAgICBpbnQzMl9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXhcbiAgICAgIGVsc2VcbiAgICAgICAgSW50MzIuYWRkIG1pbiAoaW50MzJhdXggcyBzcGFuKVxuXG4gICgqIFJldHVybiA2NCByYW5kb20gYml0cyBhcyBhbiBbaW50NjRdICopXG4gIGxldCBiaXRzNjQgcyA9XG4gICAgbmV4dCBzXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQ2NF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQ2NGF1eCBzIG4gPVxuICAgIGxldCByID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czY0IHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDY0LnJlbSByIG4gaW5cbiAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfYXV4XS4gKilcbiAgICBpZiBJbnQ2NC4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMUwpXG4gICAgdGhlbiBpbnQ2NGF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50NjQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMExcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0XCJcbiAgICBlbHNlIGludDY0YXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gYW4gW2ludDY0XSBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFdlIG11c3QgaGF2ZSBbbWluIDw9IG1heF0uICopXG4gIGxldCByZWMgaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4ID1cbiAgICBsZXQgciA9IG5leHQgcyBpblxuICAgIGlmIHIgPCBtaW4gfHwgciA+IG1heCB0aGVuIGludDY0X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCBlbHNlIHJcblxuICBsZXQgaW50NjRfaW5fcmFuZ2UgcyB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQ2NF9pbl9yYW5nZVwiXG4gICAgZWxzZVxuICAgICAgbGV0IHNwYW4gPSBJbnQ2NC5zdWNjIChJbnQ2NC5zdWIgbWF4IG1pbikgaW5cbiAgICAgICgqIEV4cGxhbmF0aW9uIG9mIHRoaXMgdGVzdDogc2VlIGNvbW1lbnQgaW4gW2ludF9pbl9yYW5nZV9hdXhdLiAqKVxuICAgICAgaWYgc3BhbiA8PSBJbnQ2NC56ZXJvIHRoZW5cbiAgICAgICAgaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4XG4gICAgICBlbHNlXG4gICAgICAgIEludDY0LmFkZCBtaW4gKGludDY0YXV4IHMgc3BhbilcblxuICAoKiBSZXR1cm4gMzIgb3IgNjQgcmFuZG9tIGJpdHMgYXMgYSBbbmF0aXZlaW50XSAqKVxuICBsZXQgbmF0aXZlYml0cyA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChiaXRzMzIgcylcbiAgICBlbHNlIGZ1biBzIC0+IEludDY0LnRvX25hdGl2ZWludCAoYml0czY0IHMpXG5cbiAgKCogUmV0dXJuIGEgW25hdGl2ZWludF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IG5hdGl2ZWludCA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgYm91bmQgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChpbnQzMiBzIChOYXRpdmVpbnQudG9faW50MzIgYm91bmQpKVxuICAgIGVsc2UgZnVuIHMgYm91bmQgLT4gSW50NjQudG9fbmF0aXZlaW50IChpbnQ2NCBzIChJbnQ2NC5vZl9uYXRpdmVpbnQgYm91bmQpKVxuXG4gICgqIFJldHVybiBhIFtuYXRpdmVpbnRdIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS4gKilcbiAgbGV0IG5hdGl2ZWludF9pbl9yYW5nZSA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgfm1pbiB+bWF4IC0+XG4gICAgICBOYXRpdmVpbnQub2ZfaW50MzIgKGludDMyX2luX3JhbmdlIHNcbiAgICAgICAgfm1pbjooTmF0aXZlaW50LnRvX2ludDMyIG1pbikgfm1heDooTmF0aXZlaW50LnRvX2ludDMyIG1heCkpXG4gICAgZWxzZSBmdW4gcyB+bWluIH5tYXggLT5cbiAgICAgIEludDY0LnRvX25hdGl2ZWludCAoaW50NjRfaW5fcmFuZ2Ugc1xuICAgICAgICB+bWluOihJbnQ2NC5vZl9uYXRpdmVpbnQgbWluKSB+bWF4OihJbnQ2NC5vZl9uYXRpdmVpbnQgbWF4KSlcblxuICAoKiBSZXR1cm4gYSBmbG9hdCAwIDwgeCA8IDEgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGFtb25nIHRoZVxuICAgICBtdWx0aXBsZXMgb2YgMl4tNTMgKilcbiAgbGV0IHJlYyByYXdmbG9hdCBzID1cbiAgICBsZXQgYiA9IG5leHQgcyBpblxuICAgIGxldCBuID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCBiIDExIGluXG4gICAgaWYgbiA8PiAwTCB0aGVuIEludDY0LnRvX2Zsb2F0IG4gKi4gMHgxLnAtNTMgZWxzZSByYXdmbG9hdCBzXG5cbiAgKCogUmV0dXJuIGEgZmxvYXQgYmV0d2VlbiAwIGFuZCBbYm91bmRdICopXG4gIGxldCBmbG9hdCBzIGJvdW5kID0gcmF3ZmxvYXQgcyAqLiBib3VuZFxuXG4gICgqIFJldHVybiBhIHJhbmRvbSBCb29sZWFuICopXG4gIGxldCBib29sIHMgPSBuZXh0IHMgPCAwTFxuXG4gICgqIFNwbGl0IGEgbmV3IFBSTkcgb2ZmIHRoZSBnaXZlbiBQUk5HICopXG4gIGxldCBzcGxpdCBzID1cbiAgICBsZXQgaTEgPSBiaXRzNjQgcyBpbiBsZXQgaTIgPSBiaXRzNjQgcyBpblxuICAgIGxldCBpMyA9IGJpdHM2NCBzIGluIGxldCBpNCA9IGJpdHM2NCBzIGluXG4gICAgbWsgaTEgaTIgaTMgaTRcbmVuZFxuXG5sZXQgbWtfZGVmYXVsdCAoKSA9XG4gICgqIFRoaXMgaXMgdGhlIHN0YXRlIG9idGFpbmVkIHdpdGggW1N0YXRlLm1ha2UgW3wgMzE0MTU5MjY1IHxdXS4gKilcbiAgU3RhdGUubWsgKC02MTk2ODc0Mjg5NTY3NzA1MDk3TClcbiAgICAgICAgICAgNTg2NTczMjQ5ODMzNzEzMTg5TFxuICAgICAgICAgICAoLTg1OTEyNjg4MDM4NjUwNDM0MDdMKVxuICAgICAgICAgICA2Mzg4NjEzNTk1ODQ5NzcyMDQ0TFxuXG5sZXQgcmFuZG9tX2tleSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQ6U3RhdGUuc3BsaXQgbWtfZGVmYXVsdFxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgaW50IGJvdW5kID0gU3RhdGUuaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGZ1bGxfaW50IGJvdW5kID0gU3RhdGUuZnVsbF9pbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50X2luX3JhbmdlIH5taW4gfm1heCA9XG4gIFN0YXRlLmludF9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgaW50MzIgYm91bmQgPSBTdGF0ZS5pbnQzMiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnQzMl9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5pbnQzMl9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgbmF0aXZlaW50IGJvdW5kID0gU3RhdGUubmF0aXZlaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IG5hdGl2ZWludF9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5uYXRpdmVpbnRfaW5fcmFuZ2UgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIH5taW4gfm1heFxubGV0IGludDY0IGJvdW5kID0gU3RhdGUuaW50NjQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50NjRfaW5fcmFuZ2Ugfm1pbiB+bWF4ID1cbiAgU3RhdGUuaW50NjRfaW5fcmFuZ2UgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIH5taW4gfm1heFxubGV0IGZsb2F0IHNjYWxlID0gU3RhdGUuZmxvYXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNjYWxlXG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgYml0czMyICgpID0gU3RhdGUuYml0czMyIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IGJpdHM2NCAoKSA9IFN0YXRlLmJpdHM2NCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBuYXRpdmViaXRzICgpID0gU3RhdGUubmF0aXZlYml0cyAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUucmVpbml0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzZWVkXG5sZXQgaW5pdCBzZWVkID0gZnVsbF9pbml0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkKCkpXG5cbigqIFNwbGl0dGluZyAqKVxuXG5sZXQgc3BsaXQgKCkgPSBTdGF0ZS5zcGxpdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxuKCogTWFuaXB1bGF0aW5nIHRoZSBjdXJyZW50IHN0YXRlLiAqKVxuXG5sZXQgZ2V0X3N0YXRlICgpID0gU3RhdGUuY29weSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBIYXNoIHRhYmxlcyAqKVxuXG4oKiBXZSBkbyBkeW5hbWljIGhhc2hpbmcsIGFuZCByZXNpemUgdGhlIHRhYmxlIGFuZCByZWhhc2ggdGhlIGVsZW1lbnRzXG4gICB3aGVuIHRoZSBsb2FkIGZhY3RvciBiZWNvbWVzIHRvbyBoaWdoLiAqKVxuXG50eXBlICgnYSwgJ2IpIHQgPVxuICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgbXV0YWJsZSBkYXRhOiAoJ2EsICdiKSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgfVxuXG5hbmQgKCdhLCAnYikgYnVja2V0bGlzdCA9XG4gICAgRW1wdHlcbiAgfCBDb25zIG9mIHsgbXV0YWJsZSBrZXk6ICdhO1xuICAgICAgICAgICAgICBtdXRhYmxlIGRhdGE6ICdiO1xuICAgICAgICAgICAgICBtdXRhYmxlIG5leHQ6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgfVxuXG4oKiBUaGUgc2lnbiBvZiBpbml0aWFsX3NpemUgZW5jb2RlcyB0aGUgZmFjdCB0aGF0IGEgdHJhdmVyc2FsIGlzXG4gICBvbmdvaW5nIG9yIG5vdC5cblxuICAgVGhpcyBkaXNhYmxlcyB0aGUgZWZmaWNpZW50IGluIHBsYWNlIGltcGxlbWVudGF0aW9uIG9mIHJlc2l6aW5nLlxuKilcblxubGV0IG9uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgfHwgaC5pbml0aWFsX3NpemUgPCAwXG5cbmxldCBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBoLmluaXRpYWxfc2l6ZSA8LSAtIGguaW5pdGlhbF9zaXplXG5cbigqIFRvIHBpY2sgcmFuZG9tIHNlZWRzIGlmIHJlcXVlc3RlZCAqKVxuXG5sZXQgcmFuZG9taXplZF9kZWZhdWx0ID1cbiAgbGV0IHBhcmFtcyA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJPQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0cnkgU3lzLmdldGVudiBcIkNBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIgaW5cbiAgU3RyaW5nLmNvbnRhaW5zIHBhcmFtcyAnUidcblxubGV0IHJhbmRvbWl6ZWQgPSBBdG9taWMubWFrZSByYW5kb21pemVkX2RlZmF1bHRcblxubGV0IHJhbmRvbWl6ZSAoKSA9IEF0b21pYy5zZXQgcmFuZG9taXplZCB0cnVlXG5sZXQgaXNfcmFuZG9taXplZCAoKSA9IEF0b21pYy5nZXQgcmFuZG9taXplZFxuXG5sZXQgcHJuZ19rZXkgPSBEb21haW4uRExTLm5ld19rZXkgUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0XG5cbigqIEZ1bmN0aW9ucyB3aGljaCBhcHBlYXIgYmVmb3JlIHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSBtdXN0IGVpdGhlciBiZVxuICAgaW5kZXBlbmRlbnQgb2YgdGhlIGhhc2ggZnVuY3Rpb24gb3IgdGFrZSBpdCBhcyBhIHBhcmFtZXRlciAoc2VlICMyMjAyIGFuZFxuICAgY29kZSBiZWxvdyB0aGUgZnVuY3RvciBkZWZpbml0aW9ucy4gKilcblxuKCogQ3JlYXRpbmcgYSBmcmVzaCwgZW1wdHkgdGFibGUgKilcblxubGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gIGlmIHggPj0gbiB0aGVuIHhcbiAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbmxldCBjcmVhdGUgPyhyYW5kb20gPSBBdG9taWMuZ2V0IHJhbmRvbWl6ZWQpIGluaXRpYWxfc2l6ZSA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgbGV0IHNlZWQgPVxuICAgIGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChEb21haW4uRExTLmdldCBwcm5nX2tleSkgZWxzZSAwXG4gIGluXG4gIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxubGV0IGNsZWFyIGggPVxuICBpZiBoLnNpemUgPiAwIHRoZW4gYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBBcnJheS5maWxsIGguZGF0YSAwIChBcnJheS5sZW5ndGggaC5kYXRhKSBFbXB0eVxuICBlbmRcblxubGV0IHJlc2V0IGggPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgICB8fCBsZW4gPSBhYnMgaC5pbml0aWFsX3NpemUgdGhlblxuICAgIGNsZWFyIGhcbiAgZWxzZSBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIChhYnMgaC5pbml0aWFsX3NpemUpIEVtcHR5XG4gIGVuZFxuXG5sZXQgY29weV9idWNrZXRsaXN0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGxldCByZWMgbG9vcCBwcmVjID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBDb25zIHByZWMgLT4gIHByZWMubmV4dCA8LSByXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBsb29wIHIgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgbG9vcCByIG5leHQ7XG4gICAgICByXG5cbmxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkubWFwIGNvcHlfYnVja2V0bGlzdCBoLmRhdGEgfVxuXG5sZXQgbGVuZ3RoIGggPSBoLnNpemVcblxubGV0IGluc2VydF9hbGxfYnVja2V0cyBpbmRleGZ1biBpbnBsYWNlIG9kYXRhIG5kYXRhID1cbiAgbGV0IG5zaXplID0gQXJyYXkubGVuZ3RoIG5kYXRhIGluXG4gIGxldCBuZGF0YV90YWlsID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gYXMgY2VsbCAtPlxuICAgICAgICBsZXQgY2VsbCA9XG4gICAgICAgICAgaWYgaW5wbGFjZSB0aGVuIGNlbGxcbiAgICAgICAgICBlbHNlIENvbnMge2tleTsgZGF0YTsgbmV4dCA9IEVtcHR5fVxuICAgICAgICBpblxuICAgICAgICBsZXQgbmlkeCA9IGluZGV4ZnVuIGtleSBpblxuICAgICAgICBiZWdpbiBtYXRjaCBuZGF0YV90YWlsLihuaWR4KSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gbmRhdGEuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBjZWxsO1xuICAgICAgICBlbmQ7XG4gICAgICAgIG5kYXRhX3RhaWwuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIGluc2VydF9idWNrZXQgbmV4dFxuICBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9kYXRhIC0gMSBkb1xuICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gIGRvbmU7XG4gIGlmIGlucGxhY2UgdGhlblxuICAgIGZvciBpID0gMCB0byBuc2l6ZSAtIDEgZG9cbiAgICAgIG1hdGNoIG5kYXRhX3RhaWwuKGkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBFbXB0eVxuICAgIGRvbmVcblxubGV0IHJlc2l6ZSBpbmRleGZ1biBoID1cbiAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgIGxldCBpbnBsYWNlID0gbm90IChvbmdvaW5nX3RyYXZlcnNhbCBoKSBpblxuICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgICAgKCogc28gdGhhdCBpbmRleGZ1biBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgaW5zZXJ0X2FsbF9idWNrZXRzIChpbmRleGZ1biBoKSBpbnBsYWNlIG9kYXRhIG5kYXRhXG4gIGVuZFxuXG5sZXQgaXRlciBmIGggPVxuICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICAoKVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGYga2V5IGRhdGE7IGRvX2J1Y2tldCBuZXh0IGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGRvX2J1Y2tldCBkLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IHJlYyBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIEVtcHR5XG4gICAgICBlbmRcbiAgfCAoQ29ucyAoe2tleTsgZGF0YTsgbmV4dH0gYXMgYykpIGFzIHNsb3QgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGYga2V5IGRhdGEgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjIG5leHRcbiAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIHNsb3RcbiAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gc2xvdFxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBjLmRhdGEgPC0gZGF0YTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHNsb3QgbmV4dFxuICAgICAgZW5kXG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgZiBoID1cbiAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgRW1wdHkgaC5kYXRhLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoXG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgZm9sZCBmIGggaW5pdCA9XG4gIGxldCByZWMgZG9fYnVja2V0IGIgYWNjdSA9XG4gICAgbWF0Y2ggYiB3aXRoXG4gICAgICBFbXB0eSAtPlxuICAgICAgICBhY2N1XG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZG9fYnVja2V0IG5leHQgKGYga2V5IGRhdGEgYWNjdSkgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgbGV0IGFjY3UgPSByZWYgaW5pdCBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGFjY3UgOj0gZG9fYnVja2V0IGQuKGkpICFhY2N1XG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgIWFjY3VcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbnR5cGUgc3RhdGlzdGljcyA9IHtcbiAgbnVtX2JpbmRpbmdzOiBpbnQ7XG4gIG51bV9idWNrZXRzOiBpbnQ7XG4gIG1heF9idWNrZXRfbGVuZ3RoOiBpbnQ7XG4gIGJ1Y2tldF9oaXN0b2dyYW06IGludCBhcnJheVxufVxuXG5sZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYWNjdVxuICB8IENvbnN7bmV4dH0gLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIG5leHRcblxubGV0IHN0YXRzIGggPVxuICBsZXQgbWJsID1cbiAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgQXJyYXkuaXRlclxuICAgIChmdW4gYiAtPlxuICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgaC5kYXRhO1xuICB7IG51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSB0YmwgPVxuICAoKiBjYXB0dXJlIGN1cnJlbnQgYXJyYXksIHNvIHRoYXQgZXZlbiBpZiB0aGUgdGFibGUgaXMgcmVzaXplZCB3ZVxuICAgICBrZWVwIGl0ZXJhdGluZyBvbiB0aGUgc2FtZSBhcnJheSAqKVxuICBsZXQgdGJsX2RhdGEgPSB0YmwuZGF0YSBpblxuICAoKiBzdGF0ZTogaW5kZXggKiBuZXh0IGJ1Y2tldCB0byB0cmF2ZXJzZSAqKVxuICBsZXQgcmVjIGF1eCBpIGJ1Y2sgKCkgPSBtYXRjaCBidWNrIHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdGJsX2RhdGFcbiAgICAgICAgdGhlbiBTZXEuTmlsXG4gICAgICAgIGVsc2UgYXV4KGkrMSkgdGJsX2RhdGEuKGkpICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIFNlcS5Db25zICgoa2V5LCBkYXRhKSwgYXV4IGkgbmV4dClcbiAgaW5cbiAgYXV4IDAgRW1wdHlcblxubGV0IHRvX3NlcV9rZXlzIG0gPSBTZXEubWFwIGZzdCAodG9fc2VxIG0pXG5cbmxldCB0b19zZXFfdmFsdWVzIG0gPSBTZXEubWFwIHNuZCAodG9fc2VxIG0pXG5cbigqIEZ1bmN0b3JpYWwgaW50ZXJmYWNlICopXG5cbm1vZHVsZSB0eXBlIEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGhhc2g6IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBzZWVkZWRfaGFzaDogaW50IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZTogaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weTogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmU6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGUgOiA/cmFuZG9tOmJvb2wgLT4gaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlciA6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkIDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZVNlZWRlZChIOiBTZWVkZWRIYXNoZWRUeXBlKTogKFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGtleSA9IEgudFxuICAgIHR5cGUgJ2EgaGFzaHRibCA9IChrZXksICdhKSB0XG4gICAgdHlwZSAnYSB0ID0gJ2EgaGFzaHRibFxuICAgIGxldCBjcmVhdGUgPSBjcmVhdGVcbiAgICBsZXQgY2xlYXIgPSBjbGVhclxuICAgIGxldCByZXNldCA9IHJlc2V0XG4gICAgbGV0IGNvcHkgPSBjb3B5XG5cbiAgICBsZXQga2V5X2luZGV4IGgga2V5ID1cbiAgICAgIChILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGFkZCBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldFtAdGFpbF9tb2RfY29uc10gcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBbXVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhPWQ7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gZCA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxuICAgIGxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gICAgICBlbmRcblxuICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICAgICAgSC5lcXVhbCBrIGtleSB8fCBtZW1faW5fYnVja2V0IGtleSBuZXh0XG5cbiAgICBsZXQgbWVtIGgga2V5ID1cbiAgICAgIG1lbV9pbl9idWNrZXQga2V5IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICAgIGxldCBpdGVyID0gaXRlclxuICAgIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgPSBmaWx0ZXJfbWFwX2lucGxhY2VcbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHN0YXRzID0gc3RhdHNcbiAgICBsZXQgdG9fc2VxID0gdG9fc2VxXG4gICAgbGV0IHRvX3NlcV9rZXlzID0gdG9fc2VxX2tleXNcbiAgICBsZXQgdG9fc2VxX3ZhbHVlcyA9IHRvX3NlcV92YWx1ZXNcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKEg6IEhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbigqIFBvbHltb3JwaGljIGhhc2ggZnVuY3Rpb24tYmFzZWQgdGFibGVzICopXG4oKiBDb2RlIGluY2x1ZGVkIGJlbG93IHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSB0byBndWFyZCBhZ2FpbnN0IGFjY2lkZW50YWxcbiAgIHVzZSAtIHNlZSAjMjIwMiAqKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cblxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbmxldCBoYXNoX3BhcmFtIG4xIG4yIHggPSBzZWVkZWRfaGFzaF9wYXJhbSBuMSBuMiAwIHhcbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5cbmxldCBrZXlfaW5kZXggaCBrZXkgPVxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNFxuICB0aGVuIChzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJIYXNodGJsOiB1bnN1cHBvcnRlZCBoYXNoIHRhYmxlIGZvcm1hdFwiXG5cbmxldCBhZGQgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxubGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgICgpXG4gIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgZW5kXG4gICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxubGV0IHJlbW92ZSBoIGtleSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbmxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbmxldCBmaW5kIGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG5sZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBOb25lXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbmxldCBmaW5kX29wdCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbmxldCBmaW5kX2FsbCBoIGtleSA9XG4gIGxldFtAdGFpbF9tb2RfY29uc10gcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgW11cbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gZGF0YSA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbmxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gIGVuZFxuXG5sZXQgcmVjIG1lbV9pbl9idWNrZXQga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgY29tcGFyZSBrIGtleSA9IDAgfHwgbWVtX2luX2J1Y2tldCBrZXkgbmV4dFxuXG5sZXQgbWVtIGgga2V5ID1cbiAgbWVtX2luX2J1Y2tldCBrZXkgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCBhZGRfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG5sZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gIHJlcGxhY2Vfc2VxIHRibCBpO1xuICB0YmxcblxubGV0IHJlYnVpbGQgPyhyYW5kb20gPSBBdG9taWMuZ2V0IHJhbmRvbWl6ZWQpIGggPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIGluXG4gIGxldCBzZWVkID1cbiAgICBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcHJuZ19rZXkpXG4gICAgZWxzZSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguc2VlZFxuICAgIGVsc2UgMCBpblxuICBsZXQgaCcgPSB7XG4gICAgc2l6ZSA9IGguc2l6ZTtcbiAgICBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5O1xuICAgIHNlZWQgPSBzZWVkO1xuICAgIGluaXRpYWxfc2l6ZSA9IGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5pbml0aWFsX3NpemUgZWxzZSBzXG4gIH0gaW5cbiAgaW5zZXJ0X2FsbF9idWNrZXRzIChrZXlfaW5kZXggaCcpIGZhbHNlIGguZGF0YSBoJy5kYXRhO1xuICBoJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogV2VhayBhcnJheSBvcGVyYXRpb25zICopXG5cbnR5cGUgISdhIHRcblxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+ICdhIHQgPSBcImNhbWxfd2Vha19jcmVhdGVcIlxuXG4oKiogbnVtYmVyIG9mIGFkZGl0aW9uYWwgdmFsdWVzIGluIGEgd2VhayBwb2ludGVyXG4gKiAgICAtIExpbmtcbiAqICAgIC0gRGF0YSAqKVxubGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMiAoKiBDQU1MX0VQSEVfRklSU1RfS0VZIGluIHdlYWsuaCAqKVxuXG5sZXQgY3JlYXRlIGwgPVxuICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IE9iai5FcGhlbWVyb24ubWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgaW52YWxpZF9hcmcoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgY3JlYXRlIGxcblxuXG5sZXQgbGVuZ3RoIHggPSBPYmouc2l6ZShPYmoucmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbmxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgaW52YWxpZF9hcmcobXNnKVxuXG5leHRlcm5hbCBzZXQnIDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuZXh0ZXJuYWwgdW5zZXQgOiAnYSB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbmxldCBzZXQgZSBvIHggPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLnNldFwiO1xuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHVuc2V0IGUgb1xuICB8IFNvbWUgeCAtPiBzZXQnIGUgbyB4XG5cbmV4dGVybmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldFwiXG5sZXQgZ2V0IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0XCI7XG4gIGdldCBlIG9cblxuZXh0ZXJuYWwgZ2V0X2NvcHkgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRfY29weVwiXG5sZXQgZ2V0X2NvcHkgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRfY29weVwiO1xuICBnZXRfY29weSBlIG9cblxuZXh0ZXJuYWwgY2hlY2sgOiAnYSB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX3dlYWtfY2hlY2tcIlxubGV0IGNoZWNrIGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuY2hlY2tcIjtcbiAgY2hlY2sgZSBvXG5cbmV4dGVybmFsIGJsaXQgOiAnYSB0IC0+IGludCAtPiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF93ZWFrX2JsaXRcIlxuXG4oKiBibGl0OiBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuICopXG5sZXQgYmxpdCBlMSBvMSBlMiBvMiBsID1cbiAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXZWFrLmJsaXRcIlxuICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXQgZTEgbzEgZTIgbzIgbFxuXG5sZXQgZmlsbCBhciBvZnMgbGVuIHggPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGFyIC0gbGVuXG4gIHRoZW4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJXZWFrLmZpbGxcIilcbiAgZWxzZSBiZWdpblxuICAgIGZvciBpID0gb2ZzIHRvIChvZnMgKyBsZW4gLSAxKSBkb1xuICAgICAgc2V0IGFyIGkgeFxuICAgIGRvbmVcbiAgZW5kXG5cblxuKCoqIFdlYWsgaGFzaCB0YWJsZXMgKilcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIGRhdGFcbiAgdHlwZSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gdFxuICB2YWwgY2xlYXIgOiB0IC0+IHVuaXRcbiAgdmFsIG1lcmdlIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGFkZCA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgZmluZCA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBmaW5kX29wdCA6IHQgLT4gZGF0YSAtPiBkYXRhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiB0IC0+IGRhdGEgLT4gZGF0YSBsaXN0XG4gIHZhbCBtZW0gOiB0IC0+IGRhdGEgLT4gYm9vbFxuICB2YWwgaXRlciA6IChkYXRhIC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChkYXRhIC0+ICdhY2MgLT4gJ2FjYykgLT4gdCAtPiAnYWNjIC0+ICdhY2NcbiAgdmFsIGNvdW50IDogdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogdCAtPiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSCA6IEhhc2h0YmwuSGFzaGVkVHlwZSkgOiAoUyB3aXRoIHR5cGUgZGF0YSA9IEgudCkgPSBzdHJ1Y3RcblxuICB0eXBlICdhIHdlYWtfdCA9ICdhIHRcbiAgbGV0IHdlYWtfY3JlYXRlID0gY3JlYXRlXG4gIGxldCBlbXB0eWJ1Y2tldCA9IHdlYWtfY3JlYXRlIDBcblxuICB0eXBlIGRhdGEgPSBILnRcblxuICB0eXBlIHQgPSB7XG4gICAgbXV0YWJsZSB0YWJsZSA6IGRhdGEgd2Vha190IGFycmF5O1xuICAgIG11dGFibGUgaGFzaGVzIDogaW50IGFycmF5IGFycmF5O1xuICAgIG11dGFibGUgbGltaXQgOiBpbnQ7ICAgICAgICAgICAgICAgKCogYnVja2V0IHNpemUgbGltaXQgKilcbiAgICBtdXRhYmxlIG92ZXJzaXplIDogaW50OyAgICAgICAgICAgICgqIG51bWJlciBvZiBvdmVyc2l6ZSBidWNrZXRzICopXG4gICAgbXV0YWJsZSByb3ZlciA6IGludDsgICAgICAgICAgICAgICAoKiBmb3IgaW50ZXJuYWwgYm9va2tlZXBpbmcgKilcbiAgfVxuXG4gIGxldCBnZXRfaW5kZXggdCBoID0gKGggbGFuZCBtYXhfaW50KSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG4gIGxldCBsaW1pdCA9IDdcbiAgbGV0IG92ZXJfbGltaXQgPSAyXG5cbiAgbGV0IGNyZWF0ZSBzeiA9XG4gICAgbGV0IHN6ID0gaWYgc3ogPCA3IHRoZW4gNyBlbHNlIHN6IGluXG4gICAgbGV0IHN6ID0gaWYgc3ogPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIGVsc2Ugc3ogaW5cbiAgICB7XG4gICAgICB0YWJsZSA9IEFycmF5Lm1ha2Ugc3ogZW1wdHlidWNrZXQ7XG4gICAgICBoYXNoZXMgPSBBcnJheS5tYWtlIHN6IFt8IHxdO1xuICAgICAgbGltaXQgPSBsaW1pdDtcbiAgICAgIG92ZXJzaXplID0gMDtcbiAgICAgIHJvdmVyID0gMDtcbiAgICB9XG5cbiAgbGV0IGNsZWFyIHQgPVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICAgIHQudGFibGUuKGkpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgdC5oYXNoZXMuKGkpIDwtIFt8IHxdO1xuICAgIGRvbmU7XG4gICAgdC5saW1pdCA8LSBsaW1pdDtcbiAgICB0Lm92ZXJzaXplIDwtIDBcblxuXG4gIGxldCBmb2xkIGYgdCBpbml0ID1cbiAgICBsZXQgcmVjIGZvbGRfYnVja2V0IGkgYiBhY2N1ID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiAoZiB2IGFjY3UpXG4gICAgICB8IE5vbmUgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiBhY2N1XG4gICAgaW5cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChmb2xkX2J1Y2tldCAwKSB0LnRhYmxlIGluaXRcblxuXG4gIGxldCBpdGVyIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZiB2OyBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgICB8IE5vbmUgLT4gaXRlcl9idWNrZXQgKGkrMSkgYlxuICAgIGluXG4gICAgQXJyYXkuaXRlciAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IGl0ZXJfd2VhayBmIHQgPVxuICAgIGxldCByZWMgaXRlcl9idWNrZXQgaSBqIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGNoZWNrIGIgaSB3aXRoXG4gICAgICB8IHRydWUgLT4gZiBiIHQuaGFzaGVzLihqKSBpOyBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICAgIHwgZmFsc2UgLT4gaXRlcl9idWNrZXQgKGkrMSkgaiBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyaSAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IHJlYyBjb3VudF9idWNrZXQgaSBiIGFjY3UgPVxuICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICBjb3VudF9idWNrZXQgKGkrMSkgYiAoYWNjdSArIChpZiBjaGVjayBiIGkgdGhlbiAxIGVsc2UgMCkpXG5cblxuICBsZXQgY291bnQgdCA9XG4gICAgQXJyYXkuZm9sZF9yaWdodCAoY291bnRfYnVja2V0IDApIHQudGFibGUgMFxuXG5cbiAgbGV0IG5leHRfc3ogbiA9IEludC5taW4gKDMgKiBuIC8gMiArIDMpIFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gIGxldCBwcmV2X3N6IG4gPSAoKG4gLSAzKSAqIDIgKyAyKSAvIDNcblxuICBsZXQgdGVzdF9zaHJpbmtfYnVja2V0IHQgPVxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLih0LnJvdmVyKSBpblxuICAgIGxldCBoYnVja2V0ID0gdC5oYXNoZXMuKHQucm92ZXIpIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcHJldl9sZW4gPSBwcmV2X3N6IGxlbiBpblxuICAgIGxldCBsaXZlID0gY291bnRfYnVja2V0IDAgYnVja2V0IDAgaW5cbiAgICBpZiBsaXZlIDw9IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWMgbG9vcCBpIGogPVxuICAgICAgICBpZiBqID49IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGxvb3AgKGkgKyAxKSBqXG4gICAgICAgICAgZWxzZSBpZiBjaGVjayBidWNrZXQgaiB0aGVuIGJlZ2luXG4gICAgICAgICAgICBibGl0IGJ1Y2tldCBqIGJ1Y2tldCBpIDE7XG4gICAgICAgICAgICBoYnVja2V0LihpKSA8LSBoYnVja2V0LihqKTtcbiAgICAgICAgICAgIGxvb3AgKGkgKyAxKSAoaiAtIDEpO1xuICAgICAgICAgIGVuZCBlbHNlIGxvb3AgaSAoaiAtIDEpO1xuICAgICAgICBlbmQ7XG4gICAgICBpblxuICAgICAgbG9vcCAwIChsZW5ndGggYnVja2V0IC0gMSk7XG4gICAgICBpZiBwcmV2X2xlbiA9IDAgdGhlbiBiZWdpblxuICAgICAgICB0LnRhYmxlLih0LnJvdmVyKSA8LSBlbXB0eWJ1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIFt8IHxdO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IG5ld2J1Y2tldCA9IHdlYWtfY3JlYXRlIHByZXZfbGVuIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgcHJldl9sZW47XG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIEFycmF5LnN1YiBoYnVja2V0IDAgcHJldl9sZW5cbiAgICAgIGVuZDtcbiAgICAgIGlmIGxlbiA+IHQubGltaXQgJiYgcHJldl9sZW4gPD0gdC5saW1pdCB0aGVuIHQub3ZlcnNpemUgPC0gdC5vdmVyc2l6ZSAtIDE7XG4gICAgZW5kO1xuICAgIHQucm92ZXIgPC0gKHQucm92ZXIgKyAxKSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG5cbiAgbGV0IHJlYyByZXNpemUgdCA9XG4gICAgbGV0IG9sZGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IG5ld2xlbiA9IG5leHRfc3ogb2xkbGVuIGluXG4gICAgaWYgbmV3bGVuID4gb2xkbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCBuZXd0ID0gY3JlYXRlIG5ld2xlbiBpblxuICAgICAgbGV0IGFkZF93ZWFrIG9iIG9oIG9pID1cbiAgICAgICAgbGV0IHNldHRlciBuYiBuaSBfID0gYmxpdCBvYiBvaSBuYiBuaSAxIGluXG4gICAgICAgIGxldCBoID0gb2guKG9pKSBpblxuICAgICAgICBhZGRfYXV4IG5ld3Qgc2V0dGVyIE5vbmUgaCAoZ2V0X2luZGV4IG5ld3QgaCk7XG4gICAgICBpblxuICAgICAgaXRlcl93ZWFrIGFkZF93ZWFrIHQ7XG4gICAgICB0LnRhYmxlIDwtIG5ld3QudGFibGU7XG4gICAgICB0Lmhhc2hlcyA8LSBuZXd0Lmhhc2hlcztcbiAgICAgIHQubGltaXQgPC0gbmV3dC5saW1pdDtcbiAgICAgIHQub3ZlcnNpemUgPC0gbmV3dC5vdmVyc2l6ZTtcbiAgICAgIHQucm92ZXIgPC0gdC5yb3ZlciBtb2QgQXJyYXkubGVuZ3RoIG5ld3QudGFibGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHQubGltaXQgPC0gbWF4X2ludDsgICAgICAgICAgICAgKCogbWF4aW11bSBzaXplIGFscmVhZHkgcmVhY2hlZCAqKVxuICAgICAgdC5vdmVyc2l6ZSA8LSAwO1xuICAgIGVuZFxuXG4gIGFuZCBhZGRfYXV4IHQgc2V0dGVyIGQgaCBpbmRleCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBiZWdpblxuICAgICAgICBsZXQgbmV3c3ogPVxuICAgICAgICAgIEludC5taW4gKDMgKiBzeiAvIDIgKyAzKSAoU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlcylcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbmV3c3ogPD0gc3ogdGhlbiBmYWlsd2l0aCBcIldlYWsuTWFrZTogaGFzaCBidWNrZXQgY2Fubm90IGdyb3cgbW9yZVwiO1xuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgbmV3c3ogaW5cbiAgICAgICAgbGV0IG5ld2hhc2hlcyA9IEFycmF5Lm1ha2UgbmV3c3ogMCBpblxuICAgICAgICBibGl0IGJ1Y2tldCAwIG5ld2J1Y2tldCAwIHN6O1xuICAgICAgICBBcnJheS5ibGl0IGhhc2hlcyAwIG5ld2hhc2hlcyAwIHN6O1xuICAgICAgICBzZXR0ZXIgbmV3YnVja2V0IHN6IGQ7XG4gICAgICAgIG5ld2hhc2hlcy4oc3opIDwtIGg7XG4gICAgICAgIHQudGFibGUuKGluZGV4KSA8LSBuZXdidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLihpbmRleCkgPC0gbmV3aGFzaGVzO1xuICAgICAgICBpZiBzeiA8PSB0LmxpbWl0ICYmIG5ld3N6ID4gdC5saW1pdCB0aGVuIGJlZ2luXG4gICAgICAgICAgdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplICsgMTtcbiAgICAgICAgICBmb3IgX2kgPSAwIHRvIG92ZXJfbGltaXQgZG8gdGVzdF9zaHJpbmtfYnVja2V0IHQgZG9uZTtcbiAgICAgICAgZW5kO1xuICAgICAgICBpZiB0Lm92ZXJzaXplID4gQXJyYXkubGVuZ3RoIHQudGFibGUgLyBvdmVyX2xpbWl0IHRoZW4gcmVzaXplIHQ7XG4gICAgICBlbmQgZWxzZSBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGJlZ2luXG4gICAgICAgIGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0dGVyIGJ1Y2tldCBpIGQ7XG4gICAgICAgIGhhc2hlcy4oaSkgPC0gaDtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IGFkZCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggKGdldF9pbmRleCB0IGgpXG5cbiAgKCogR2VuZXJhbCBhdXhpbGlhcnkgZnVuY3Rpb24gZm9yIHNlYXJjaGluZyBmb3IgYSBwYXJ0aWN1bGFyIHZhbHVlXG4gICAqIGluIGEgaGFzaC1zZXQsIGFuZCBhY3RpbmcgYWNjb3JkaW5nIHRvIHdoZXRoZXIgb3Igbm90IGl0J3MgZm91bmQgKilcblxuICBsZXQgZmluZF9hdXggdCBkIGZvdW5kIG5vdGZvdW5kID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gbm90Zm91bmQgaCBpbmRleFxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IGFzIG9wdCB3aGVuIEguZXF1YWwgdiBkIC0+IGZvdW5kIGJ1Y2tldCBpIG9wdCB2XG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgbGV0IGZpbmRfb3B0IHQgZCA9IGZpbmRfYXV4IHQgZCAoZnVuIF9iIF9pICBvIF92IC0+IG8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfaCBfaSAtPiBOb25lKVxuXG4gIGxldCBtZXJnZSB0IGQgICAgPSBmaW5kX2F1eCB0IGQgKGZ1biBfYiBfaSBfbyAgdiAtPiB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gIGggIGkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggaTsgZClcblxuICBsZXQgZmluZCB0IGQgICAgID0gZmluZF9hdXggdCBkIChmdW4gX2IgX2kgX28gIHYgLT4gdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF9oIF9pIC0+IHJhaXNlIE5vdF9mb3VuZClcblxuICBsZXQgcmVtb3ZlIHQgZCAgID0gZmluZF9hdXggdCBkIChmdW4gIGIgIGkgX28gX3YgLT4gc2V0IGIgaSBOb25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gX2ggX2kgLT4gKCkpXG5cbiAgbGV0IG1lbSB0IGQgICAgICA9IGZpbmRfYXV4IHQgZCAoZnVuIF9iIF9pIF9vIF92IC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfaCBfaSAtPiBmYWxzZSlcblxuICBsZXQgZmluZF9hbGwgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSBhY2N1ID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBhY2N1XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZCAtPiBsb29wIChpICsgMSkgKHYgOjogYWNjdSlcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSkgYWNjdVxuICAgIGluXG4gICAgbG9vcCAwIFtdXG5cbiAgbGV0IHN0YXRzIHQgPVxuICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBsZW5zID0gQXJyYXkubWFwIGxlbmd0aCB0LnRhYmxlIGluXG4gICAgQXJyYXkuc29ydCBjb21wYXJlIGxlbnM7XG4gICAgbGV0IHRvdGxlbiA9IEFycmF5LmZvbGRfbGVmdCAoICsgKSAwIGxlbnMgaW5cbiAgICAobGVuLCBjb3VudCB0LCB0b3RsZW4sIGxlbnMuKDApLCBsZW5zLihsZW4vMiksIGxlbnMuKGxlbi0xKSlcblxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQSBwcmV0dHktcHJpbnRpbmcgZmFjaWxpdHkgYW5kIGRlZmluaXRpb24gb2YgZm9ybWF0dGVycyBmb3IgJ3BhcmFsbGVsJ1xuICAgKGkuZS4gdW5yZWxhdGVkIG9yIGluZGVwZW5kZW50KSBwcmV0dHktcHJpbnRpbmcgb24gbXVsdGlwbGUgb3V0IGNoYW5uZWxzLiAqKVxuXG4oKlxuICAgVGhlIHByZXR0eS1wcmludGluZyBlbmdpbmUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzLlxuKilcblxubGV0IGlkIHggPSB4XG5cbigqIEEgZGV2b3RlZCB0eXBlIGZvciBzaXplcyB0byBhdm9pZCBjb25mdXNpb25cbiAgIGJldHdlZW4gc2l6ZXMgYW5kIG1lcmUgaW50ZWdlcnMuICopXG5tb2R1bGUgU2l6ZSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgdW5rbm93biA6IHRcbiAgdmFsIGlzX2tub3duIDogdCAtPiBib29sXG5lbmQgID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCB0b19pbnQgPSBpZFxuICBsZXQgb2ZfaW50ID0gaWRcbiAgbGV0IHplcm8gPSAwXG4gIGxldCB1bmtub3duID0gLTFcbiAgbGV0IGlzX2tub3duIG4gPSBuID49IDBcbmVuZFxuXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyBib3hlcyBkZWZpbml0aW9uOlxuICAgYSBwcmV0dHktcHJpbnRpbmcgYm94IGlzIGVpdGhlclxuICAgLSBoYm94OiBob3Jpem9udGFsIGJveCAobm8gbGluZSBzcGxpdHRpbmcpXG4gICAtIHZib3g6IHZlcnRpY2FsIGJveCAoZXZlcnkgYnJlYWsgaGludCBzcGxpdHMgdGhlIGxpbmUpXG4gICAtIGh2Ym94OiBob3Jpem9udGFsL3ZlcnRpY2FsIGJveFxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgYm94IGlmIGl0IGZpdHMgb25cbiAgICAgIHRoZSBjdXJyZW50IGxpbmUsIG90aGVyd2lzZSB0aGUgYm94IGJlaGF2ZXMgYXMgYSB2ZXJ0aWNhbCBib3gpXG4gICAtIGhvdmJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveFxuICAgICAodGhlIGJveCBpcyBjb21wYWN0aW5nIG1hdGVyaWFsLCBwcmludGluZyBhcyBtdWNoIG1hdGVyaWFsIGFzIHBvc3NpYmxlXG4gICAgICBvbiBldmVyeSBsaW5lcylcbiAgIC0gYm94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94IHdpdGggZW5oYW5jZWQgYm94IHN0cnVjdHVyZVxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgb3IgdmVydGljYWwgYm94IGJ1dCBicmVhayBoaW50cyBzcGxpdFxuICAgICAgdGhlIGxpbmUgaWYgc3BsaXR0aW5nIHdvdWxkIG1vdmUgdG8gdGhlIGxlZnQpXG4qKVxudHlwZSBib3hfdHlwZSA9IENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5ibG9ja190eXBlID1cbiAgfCBQcF9oYm94IHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0c1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgdG9rZW5zIGRlZmluaXRpb246XG4gICBhcmUgZWl0aGVyIHRleHQgdG8gcHJpbnQgb3IgcHJldHR5IHByaW50aW5nXG4gICBlbGVtZW50cyB0aGF0IGRyaXZlIGluZGVudGF0aW9uIGFuZCBsaW5lIHNwbGl0dGluZy4gKilcbnR5cGUgcHBfdG9rZW4gPVxuICB8IFBwX3RleHQgb2Ygc3RyaW5nICAgICAgICAgICgqIG5vcm1hbCB0ZXh0ICopXG4gIHwgUHBfYnJlYWsgb2YgeyAgICAgICAgICAgICAgKCogY29tcGxldGUgYnJlYWsgKilcbiAgICAgIGZpdHM6IHN0cmluZyAqIGludCAqIHN0cmluZzsgICAoKiBsaW5lIGlzIG5vdCBzcGxpdCAqKVxuICAgICAgYnJlYWtzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICgqIGxpbmUgaXMgc3BsaXQgKilcbiAgICB9XG4gIHwgUHBfdGJyZWFrIG9mIGludCAqIGludCAgICAgKCogZ28gdG8gbmV4dCB0YWJ1bGF0aW9uICopXG4gIHwgUHBfc3RhYiAgICAgICAgICAgICAgICAgICAgKCogc2V0IGEgdGFidWxhdGlvbiAqKVxuICB8IFBwX2JlZ2luIG9mIGludCAqIGJveF90eXBlICgqIGJlZ2lubmluZyBvZiBhIGJveCAqKVxuICB8IFBwX2VuZCAgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIGJveCAqKVxuICB8IFBwX3RiZWdpbiBvZiB0Ym94ICAgICAgICAgICgqIGJlZ2lubmluZyBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfdGVuZCAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF9uZXdsaW5lICAgICAgICAgICAgICAgICAoKiB0byBmb3JjZSBhIG5ld2xpbmUgaW5zaWRlIGEgYm94ICopXG4gIHwgUHBfaWZfbmV3bGluZSAgICAgICAgICAgICAgKCogdG8gZG8gc29tZXRoaW5nIG9ubHkgaWYgdGhpcyB2ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSBoYXMgYmVlbiBicm9rZW4gKilcbiAgfCBQcF9vcGVuX3RhZyBvZiBzdGFnICAgICAgICAgKCogb3BlbmluZyBhIHRhZyBuYW1lICopXG4gIHwgUHBfY2xvc2VfdGFnICAgICAgICAgICAgICAgKCogY2xvc2luZyB0aGUgbW9zdCByZWNlbnRseSBvcGVuIHRhZyAqKVxuXG5hbmQgc3RhZyA9IC4uXG5cbmFuZCB0Ym94ID0gUHBfdGJveCBvZiBpbnQgbGlzdCByZWYgICgqIFRhYnVsYXRpb24gYm94ICopXG5cbnR5cGUgdGFnID0gc3RyaW5nXG50eXBlIHN0YWcgKz0gU3RyaW5nX3RhZyBvZiB0YWdcblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWU6XG4gICBwcmV0dHktcHJpbnRpbmcgbWF0ZXJpYWwgaXMgbm90IHdyaXR0ZW4gaW4gdGhlIG91dHB1dCBhcyBzb29uIGFzIGVtaXR0ZWQ7XG4gICBpbnN0ZWFkLCB0aGUgbWF0ZXJpYWwgaXMgc2ltcGx5IHJlY29yZGVkIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSxcbiAgIHVudGlsIHRoZSBlbmNsb3NpbmcgYm94IGhhcyBhIGtub3duIGNvbXB1dGVkIHNpemUgYW5kIHByb3BlciBzcGxpdHRpbmdcbiAgIGRlY2lzaW9ucyBjYW4gYmUgbWFkZS5cblxuICAgVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGNvbnRhaW5zIGZvcm1hdHRpbmcgZWxlbWVudHMgdG8gYmUgcHJpbnRlZC5cbiAgIEVhY2ggZm9ybWF0dGluZyBlbGVtZW50IGlzIGEgdHVwbGUgKHNpemUsIHRva2VuLCBsZW5ndGgpLCB3aGVyZVxuICAgLSBsZW5ndGggaXMgdGhlIGRlY2xhcmVkIGxlbmd0aCBvZiB0aGUgdG9rZW4sXG4gICAtIHNpemUgaXMgZWZmZWN0aXZlIHNpemUgb2YgdGhlIHRva2VuIHdoZW4gaXQgaXMgcHJpbnRlZFxuICAgICAoc2l6ZSBpcyBzZXQgd2hlbiB0aGUgc2l6ZSBvZiB0aGUgYm94IGlzIGtub3duLCBzbyB0aGF0IHNpemUgb2YgYnJlYWtcbiAgICAgIGhpbnRzIGFyZSBkZWZpbml0aXZlKS4gKilcbnR5cGUgcHBfcXVldWVfZWxlbSA9IHtcbiAgbXV0YWJsZSBzaXplIDogU2l6ZS50O1xuICB0b2tlbiA6IHBwX3Rva2VuO1xuICBsZW5ndGggOiBpbnQ7XG59XG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGRlZmluaXRpb24uICopXG50eXBlIHBwX3F1ZXVlID0gcHBfcXVldWVfZWxlbSBRdWV1ZS50XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrOiBzY2FubmluZyBlbGVtZW50IGRlZmluaXRpb24uICopXG50eXBlIHBwX3NjYW5fZWxlbSA9IHtcbiAgbGVmdF90b3RhbCA6IGludDsgKCogVmFsdWUgb2YgcHBfbGVmdF90b3RhbCB3aGVuIHRoZSBlbGVtZW50IHdhcyBlbnF1ZXVlZC4gKilcbiAgcXVldWVfZWxlbSA6IHBwX3F1ZXVlX2VsZW1cbn1cblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6XG4gICB0aGUgZm9ybWF0dGluZyBzdGFjayBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgYWxsIHRoZSBjdXJyZW50bHkgYWN0aXZlXG4gICBib3hlczsgdGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2sgaXMgdXNlZCB0byBzcGxpdCB0aGUgbGluZXNcbiAgIHdoaWxlIHByaW50aW5nIHRva2Vucy4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6IGZvcm1hdHRpbmcgc3RhY2sgZWxlbWVudCBkZWZpbml0aW9uLlxuICAgRWFjaCBzdGFjayBlbGVtZW50IGRlc2NyaWJlcyBhIHByZXR0eS1wcmludGluZyBib3guICopXG50eXBlIHBwX2Zvcm1hdF9lbGVtID0geyBib3hfdHlwZSA6IGJveF90eXBlOyB3aWR0aCA6IGludCB9XG5cbigqIFRoZSBmb3JtYXR0ZXIgZGVmaW5pdGlvbi5cbiAgIEVhY2ggZm9ybWF0dGVyIHZhbHVlIGlzIGEgcHJldHR5LXByaW50ZXIgaW5zdGFuY2Ugd2l0aCBhbGwgaXRzXG4gICBtYWNoaW5lcnkuICopXG50eXBlIGZvcm1hdHRlciA9IHtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuICBwcF9zY2FuX3N0YWNrIDogcHBfc2Nhbl9lbGVtIFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrLiAqKVxuICBwcF9mb3JtYXRfc3RhY2sgOiBwcF9mb3JtYXRfZWxlbSBTdGFjay50O1xuICBwcF90Ym94X3N0YWNrIDogdGJveCBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2VtYW50aWNzIHRhZyBzdGFjay4gKilcbiAgcHBfdGFnX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICBwcF9tYXJrX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICAoKiBWYWx1ZSBvZiByaWdodCBtYXJnaW4uICopXG4gIG11dGFibGUgcHBfbWFyZ2luIDogaW50O1xuICAoKiBNaW5pbWFsIHNwYWNlIGxlZnQgYmVmb3JlIG1hcmdpbiwgd2hlbiBvcGVuaW5nIGEgYm94LiAqKVxuICBtdXRhYmxlIHBwX21pbl9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBNYXhpbXVtIHZhbHVlIG9mIGluZGVudGF0aW9uOlxuICAgICBubyBib3ggY2FuIGJlIG9wZW5lZCBmdXJ0aGVyLiAqKVxuICBtdXRhYmxlIHBwX21heF9pbmRlbnQgOiBpbnQ7XG4gICgqIFNwYWNlIHJlbWFpbmluZyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxuICBtdXRhYmxlIHBwX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIEN1cnJlbnQgdmFsdWUgb2YgaW5kZW50YXRpb24uICopXG4gIG11dGFibGUgcHBfY3VycmVudF9pbmRlbnQgOiBpbnQ7XG4gICgqIFRydWUgd2hlbiB0aGUgbGluZSBoYXMgYmVlbiBicm9rZW4gYnkgdGhlIHByZXR0eS1wcmludGVyLiAqKVxuICBtdXRhYmxlIHBwX2lzX25ld19saW5lIDogYm9vbDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGFscmVhZHkgcHJpbnRlZC4gKilcbiAgbXV0YWJsZSBwcF9sZWZ0X3RvdGFsIDogaW50O1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgZXZlciBwdXQgaW4gcXVldWUuICopXG4gIG11dGFibGUgcHBfcmlnaHRfdG90YWwgOiBpbnQ7XG4gICgqIEN1cnJlbnQgbnVtYmVyIG9mIG9wZW4gYm94ZXMuICopXG4gIG11dGFibGUgcHBfY3Vycl9kZXB0aCA6IGludDtcbiAgKCogTWF4aW11bSBudW1iZXIgb2YgYm94ZXMgd2hpY2ggY2FuIGJlIHNpbXVsdGFuZW91c2x5IG9wZW4uICopXG4gIG11dGFibGUgcHBfbWF4X2JveGVzIDogaW50O1xuICAoKiBFbGxpcHNpcyBzdHJpbmcuICopXG4gIG11dGFibGUgcHBfZWxsaXBzaXMgOiBzdHJpbmc7XG4gICgqIE91dHB1dCBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgKCogRmx1c2hpbmcgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgYnJlYWsgaGludHMgc3BhY2VzLiAqKVxuICBtdXRhYmxlIHBwX291dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG4gICgqIEFyZSB0YWdzIHByaW50ZWQgPyAqKVxuICBtdXRhYmxlIHBwX3ByaW50X3RhZ3MgOiBib29sO1xuICAoKiBBcmUgdGFncyBtYXJrZWQgPyAqKVxuICBtdXRhYmxlIHBwX21hcmtfdGFncyA6IGJvb2w7XG4gICgqIEZpbmQgb3BlbmluZyBhbmQgY2xvc2luZyBtYXJrZXJzIG9mIHRhZ3MuICopXG4gIG11dGFibGUgcHBfbWFya19vcGVuX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX21hcmtfY2xvc2VfdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfcHJpbnRfb3Blbl90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIG11dGFibGUgcHBfcHJpbnRfY2xvc2VfdGFnIDogc3RhZyAtPiB1bml0O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG4gIHBwX3F1ZXVlIDogcHBfcXVldWU7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBzcGVjaWZpYyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zLiAqKVxudHlwZSBmb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPSB7XG4gIG1hcmtfb3Blbl9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBwcmludF9vcGVuX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIHByaW50X2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBmdW5jdGlvbnMgdG8gb3V0cHV0IG1hdGVyaWFsLiAqKVxudHlwZSBmb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9IHtcbiAgb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gIG91dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xufVxuXG5cbigqXG5cbiAgQXV4aWxpYXJpZXMgYW5kIGJhc2ljIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRW50ZXIgYSB0b2tlbiBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbiA9XG4gIHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgdG9rZW4ubGVuZ3RoO1xuICBRdWV1ZS5hZGQgdG9rZW4gc3RhdGUucHBfcXVldWVcblxuXG5sZXQgcHBfY2xlYXJfcXVldWUgc3RhdGUgPVxuICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIDE7IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIDE7XG4gIFF1ZXVlLmNsZWFyIHN0YXRlLnBwX3F1ZXVlXG5cblxuKCogUHBfaW5maW5pdHk6IGxhcmdlIHZhbHVlIGZvciBkZWZhdWx0IHRva2VucyBzaXplLlxuXG4gICBQcF9pbmZpbml0eSBpcyBkb2N1bWVudGVkIGFzIGJlaW5nIGdyZWF0ZXIgdGhhbiAxZTEwOyB0byBhdm9pZFxuICAgY29uZnVzaW9uIGFib3V0IHRoZSB3b3JkICdncmVhdGVyJywgd2UgY2hvb3NlIHBwX2luZmluaXR5IGdyZWF0ZXJcbiAgIHRoYW4gMWUxMCArIDE7IGZvciBjb3JyZWN0IGhhbmRsaW5nIG9mIHRlc3RzIGluIHRoZSBhbGdvcml0aG0sXG4gICBwcF9pbmZpbml0eSBtdXN0IGJlIGV2ZW4gb25lIG1vcmUgdGhhbiAxZTEwICsgMTsgbGV0J3Mgc3RhbmQgb24gdGhlXG4gICBzYWZlIHNpZGUgYnkgY2hvb3NpbmcgMS5lMTArMTAuXG5cbiAgIFBwX2luZmluaXR5IGNvdWxkIHByb2JhYmx5IGJlIDEwNzM3NDE4MjMgdGhhdCBpcyAyXjMwIC0gMSwgdGhhdCBpc1xuICAgdGhlIG1pbmltYWwgdXBwZXIgYm91bmQgZm9yIGludGVnZXJzOyBub3cgdGhhdCBtYXhfaW50IGlzIGRlZmluZWQsXG4gICB0aGlzIGxpbWl0IGNvdWxkIGFsc28gYmUgZGVmaW5lZCBhcyBtYXhfaW50IC0gMS5cblxuICAgSG93ZXZlciwgYmVmb3JlIHNldHRpbmcgcHBfaW5maW5pdHkgdG8gc29tZXRoaW5nIGFyb3VuZCBtYXhfaW50LCB3ZVxuICAgbXVzdCBjYXJlZnVsbHkgZG91YmxlLWNoZWNrIGFsbCB0aGUgaW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnNcbiAgIHRoYXQgaW52b2x2ZSBwcF9pbmZpbml0eSwgc2luY2UgYW55IG92ZXJmbG93IHdvdWxkIHdyZWNrIGhhdm9jIHRoZVxuICAgcHJldHR5LXByaW50aW5nIGFsZ29yaXRobSdzIGludmFyaWFudHMuIEdpdmVuIHRoYXQgdGhpcyBhcml0aG1ldGljXG4gICBjb3JyZWN0bmVzcyBjaGVjayBpcyBkaWZmaWN1bHQgYW5kIGVycm9yIHByb25lIGFuZCBnaXZlbiB0aGF0IDFlMTBcbiAgICsgMSBpcyBpbiBwcmFjdGljZSBsYXJnZSBlbm91Z2gsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYXR0ZW1wdCB0byBzZXRcbiAgIHBwX2luZmluaXR5IHRvIHRoZSB0aGVvcmV0aWNhbGx5IG1heGltdW0gbGltaXQuIEl0IGlzIG5vdCB3b3J0aCB0aGVcbiAgIGJ1cmRlbiAhICopXG5sZXQgcHBfaW5maW5pdHkgPSAxMDAwMDAwMDEwXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgZm9yIHRoZSBmb3JtYXR0ZXIuICopXG5sZXQgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBzID0gc3RhdGUucHBfb3V0X3N0cmluZyBzIDAgKFN0cmluZy5sZW5ndGggcylcbmFuZCBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lICgpXG5hbmQgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X3NwYWNlcyBuXG5hbmQgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X2luZGVudCBuXG5cbigqIEZvcm1hdCBhIHRleHR1YWwgdG9rZW4gKilcbmxldCBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHRleHQgPVxuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBzaXplO1xuICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHRleHQ7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIGZhbHNlXG5cbigqIEZvcm1hdCBhIHN0cmluZyBieSBpdHMgbGVuZ3RoLCBpZiBub3QgZW1wdHkgKilcbmxldCBmb3JtYXRfc3RyaW5nIHN0YXRlIHMgPVxuICBpZiBzIDw+IFwiXCIgdGhlbiBmb3JtYXRfcHBfdGV4dCBzdGF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBzXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrLCBpbmRlbnRpbmcgYSBuZXcgbGluZS4gKilcbmxldCBicmVha19uZXdfbGluZSBzdGF0ZSAoYmVmb3JlLCBvZmZzZXQsIGFmdGVyKSB3aWR0aCA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gdHJ1ZTtcbiAgbGV0IGluZGVudCA9IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2Zmc2V0IGluXG4gICgqIERvbid0IGluZGVudCBtb3JlIHRoYW4gcHBfbWF4X2luZGVudC4gKilcbiAgbGV0IHJlYWxfaW5kZW50ID0gSW50Lm1pbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGluZGVudCBpblxuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSByZWFsX2luZGVudDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGZvcmNlIGEgbGluZSBicmVhayBpbnNpZGUgYSBib3g6IG5vIG9mZnNldCBpcyBhZGRlZC4gKilcbmxldCBicmVha19saW5lIHN0YXRlIHdpZHRoID0gYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIDAsIFwiXCIpIHdpZHRoXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrIHRoYXQgZml0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoYmVmb3JlLCB3aWR0aCwgYWZ0ZXIpID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHdpZHRoO1xuICBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIHdpZHRoO1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gaW5kZW50IG5vIG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LCBpZiBvbmUgdHJpZXMgdG8gb3BlbiBhIGJveFxuICAgYmV5b25kIHBwX21heF9pbmRlbnQsIHRoZW4gdGhlIGJveCBpcyByZWplY3RlZCBvbiB0aGUgbGVmdFxuICAgYnkgc2ltdWxhdGluZyBhIGJyZWFrLiAqKVxubGV0IHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZVxuICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgIGlmIHdpZHRoID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuXG4gICAgICBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2ZpdHMgfCBQcF9oYm94IC0+ICgpXG4gICAgICB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG5cblxuKCogVG8gc2tpcCBhIHRva2VuLCBpZiB0aGUgcHJldmlvdXMgbGluZSBoYXMgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfc2tpcF90b2tlbiBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnRha2Vfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHByaW50X2lmX25ld2xpbmUgbXVzdCBoYXZlIGJlZW4gdGhlIGxhc3QgcHJpbnRpbmcgY29tbWFuZCAqKVxuICB8IFNvbWUgeyBzaXplOyBsZW5ndGg7IF8gfSAtPlxuICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gc3RhdGUucHBfbGVmdF90b3RhbCAtIGxlbmd0aDtcbiAgICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgKyBTaXplLnRvX2ludCBzaXplXG5cblxuKCpcblxuICBUaGUgbWFpbiBwcmV0dHkgcHJpbnRpbmcgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBGb3JtYXR0aW5nIGEgdG9rZW4gd2l0aCBhIGdpdmVuIHNpemUuICopXG5sZXQgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgPSBmdW5jdGlvblxuXG4gIHwgUHBfdGV4dCBzIC0+XG4gICAgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSBzXG5cbiAgfCBQcF9iZWdpbiAob2ZmLCB0eSkgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGlmIGluc2VydGlvbl9wb2ludCA+IHN0YXRlLnBwX21heF9pbmRlbnQgdGhlblxuICAgICAgKCogY2FuIG5vdCBvcGVuIGEgYm94IHJpZ2h0IHRoZXJlLiAqKVxuICAgICAgYmVnaW4gcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSBlbmQ7XG4gICAgbGV0IHdpZHRoID0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIG9mZiBpblxuICAgIGxldCBib3hfdHlwZSA9XG4gICAgICBtYXRjaCB0eSB3aXRoXG4gICAgICB8IFBwX3Zib3ggLT4gUHBfdmJveFxuICAgICAgfCBQcF9oYm94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzIC0+XG4gICAgICAgIGlmIHNpemUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gdHkgZWxzZSBQcF9maXRzIGluXG4gICAgU3RhY2sucHVzaCB7IGJveF90eXBlOyB3aWR0aCB9IHN0YXRlLnBwX2Zvcm1hdF9zdGFja1xuXG4gIHwgUHBfZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF90YmVnaW4gKFBwX3Rib3ggXyBhcyB0Ym94KSAtPlxuICAgIFN0YWNrLnB1c2ggdGJveCBzdGF0ZS5wcF90Ym94X3N0YWNrXG5cbiAgfCBQcF90ZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfc3RhYiAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgcmVjIGFkZF90YWIgbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gW25dXG4gICAgICAgIHwgeCA6OiBsIGFzIGxzIC0+IGlmIG4gPCB4IHRoZW4gbiA6OiBscyBlbHNlIHggOjogYWRkX3RhYiBuIGwgaW5cbiAgICAgIHRhYnMgOj0gYWRkX3RhYiAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCkgIXRhYnNcbiAgICBlbmRcblxuICB8IFBwX3RicmVhayAobiwgb2ZmKSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCB0YWIgPVxuICAgICAgICBtYXRjaCAhdGFicyB3aXRoXG4gICAgICAgIHwgW10gLT4gaW5zZXJ0aW9uX3BvaW50XG4gICAgICAgIHwgZmlyc3QgOjogXyAtPlxuICAgICAgICAgIGxldCByZWMgZmluZCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgICAgICBpZiBoZWFkID49IGluc2VydGlvbl9wb2ludCB0aGVuIGhlYWQgZWxzZSBmaW5kIHRhaWxcbiAgICAgICAgICAgIHwgW10gLT4gZmlyc3QgaW5cbiAgICAgICAgICBmaW5kICF0YWJzIGluXG4gICAgICBsZXQgb2Zmc2V0ID0gdGFiIC0gaW5zZXJ0aW9uX3BvaW50IGluXG4gICAgICBpZiBvZmZzZXQgPj0gMFxuICAgICAgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgKFwiXCIsIG9mZnNldCArIG4sIFwiXCIpXG4gICAgICBlbHNlIGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCB0YWIgKyBvZmYsIFwiXCIpIHN0YXRlLnBwX21hcmdpblxuICAgIGVuZFxuXG4gIHwgUHBfbmV3bGluZSAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgd2lkdGg7IF99IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcbiAgICBlbmRcblxuICB8IFBwX2lmX25ld2xpbmUgLT5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCAhPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgdGhlbiBwcF9za2lwX3Rva2VuIHN0YXRlXG5cbiAgfCBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IC0+XG4gICAgbGV0IGJlZm9yZSwgb2ZmLCBfID0gYnJlYWtzIGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9ob3Zib3ggLT5cbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2JveCAtPlxuICAgICAgICAoKiBIYXZlIHRoZSBsaW5lIGp1c3QgYmVlbiBicm9rZW4gaGVyZSA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2lzX25ld19saW5lIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHMgZWxzZVxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGggZWxzZVxuICAgICAgICAoKiBicmVhayB0aGUgbGluZSBoZXJlIGxlYWRzIHRvIG5ldyBpbmRlbnRhdGlvbiA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ID4gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9odmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfZml0cyAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF92Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9oYm94IC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgfCBQcF9vcGVuX3RhZyB0YWdfbmFtZSAtPlxuICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlcjtcbiAgICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF9tYXJrX3N0YWNrXG5cbiAgIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgIGJlZ2luIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfbWFya19zdGFjayB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIHRhZ19uYW1lIGluXG4gICAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXJcbiAgICAgZW5kXG5cblxuKCogUHJpbnQgaWYgdG9rZW4gc2l6ZSBpcyBrbm93biBlbHNlIHByaW50aW5nIGlzIGRlbGF5ZWQuXG4gICBQcmludGluZyBpcyBkZWxheWVkIHdoZW4gdGhlIHRleHQgd2FpdGluZyBpbiB0aGUgcXVldWUgcmVxdWlyZXNcbiAgIG1vcmUgcm9vbSB0byBmb3JtYXQgdGhhbiBleGlzdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCByZWMgYWR2YW5jZV9sZWZ0IHN0YXRlID1cbiAgbWF0Y2ggUXVldWUucGVla19vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogTm8gdG9rZW5zIHRvIHByaW50ICopXG4gIHwgU29tZSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSAtPlxuICAgIGxldCBwZW5kaW5nX2NvdW50ID0gc3RhdGUucHBfcmlnaHRfdG90YWwgLSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIGluXG4gICAgaWYgU2l6ZS5pc19rbm93biBzaXplIHx8IHBlbmRpbmdfY291bnQgPj0gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIGJlZ2luXG4gICAgICBRdWV1ZS50YWtlIHN0YXRlLnBwX3F1ZXVlIHw+IGlnbm9yZTsgKCogTm90IGVtcHR5OiB3ZSBwZWVrIGludG8gaXQgKilcbiAgICAgIGxldCBzaXplID0gaWYgU2l6ZS5pc19rbm93biBzaXplIHRoZW4gU2l6ZS50b19pbnQgc2l6ZSBlbHNlIHBwX2luZmluaXR5IGluXG4gICAgICBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSB0b2tlbjtcbiAgICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gbGVuZ3RoICsgc3RhdGUucHBfbGVmdF90b3RhbDtcbiAgICAgIChhZHZhbmNlX2xlZnQgW0B0YWlsY2FsbF0pIHN0YXRlXG4gICAgZW5kXG5cblxuKCogVG8gZW5xdWV1ZSBhIHRva2VuIDogdHJ5IHRvIGFkdmFuY2UuICopXG5sZXQgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHRvayA9IHBwX2VucXVldWUgc3RhdGUgdG9rOyBhZHZhbmNlX2xlZnQgc3RhdGVcblxuXG4oKiBUbyBlbnF1ZXVlIHN0cmluZ3MuICopXG5sZXQgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzID1cbiAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZTsgdG9rZW4gPSBQcF90ZXh0IHM7IGxlbmd0aCA9IFNpemUudG9faW50IHNpemUgfVxuXG5cbmxldCBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzID1cbiAgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgKFNpemUub2ZfaW50IChTdHJpbmcubGVuZ3RoIHMpKSBzXG5cblxuKCogUm91dGluZXMgZm9yIHNjYW4gc3RhY2tcbiAgIGRldGVybWluZSBzaXplIG9mIGJveGVzLiAqKVxuXG4oKiBUaGUgc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbmxldCBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhY2sgPVxuICBTdGFjay5jbGVhciBzdGFjaztcbiAgbGV0IHF1ZXVlX2VsZW0gPSB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfdGV4dCBcIlwiOyBsZW5ndGggPSAwIH0gaW5cbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAtMTsgcXVldWVfZWxlbSB9IHN0YWNrXG5cbigqIFNldHRpbmcgdGhlIHNpemUgb2YgYm94ZXMgb24gc2NhbiBzdGFjazpcbiAgIGlmIHR5ID0gdHJ1ZSB0aGVuIHNpemUgb2YgYnJlYWsgaXMgc2V0IGVsc2Ugc2l6ZSBvZiBib3ggaXMgc2V0O1xuICAgaW4gZWFjaCBjYXNlIHBwX3NjYW5fc3RhY2sgaXMgcG9wcGVkLlxuXG4gICBOb3RlOlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiBzY2FuIHN0YWNrIGlzIGV4aGF1c3RpdmUsIHNpbmNlIHNjYW5fc3RhY2sgaXMgbmV2ZXJcbiAgIGVtcHR5LlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiB0b2tlbiBpbiBzY2FuIHN0YWNrIGlzIGFsc28gZXhoYXVzdGl2ZSxcbiAgIHNpbmNlIHNjYW5fcHVzaCBpcyB1c2VkIG9uIGJyZWFrcyBhbmQgb3BlbmluZyBvZiBib3hlcy4gKilcbmxldCBzZXRfc2l6ZSBzdGF0ZSB0eSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxuICB8IFNvbWUgeyBsZWZ0X3RvdGFsOyBxdWV1ZV9lbGVtIH0gLT5cbiAgICBsZXQgc2l6ZSA9IFNpemUudG9faW50IHF1ZXVlX2VsZW0uc2l6ZSBpblxuICAgICgqIHRlc3QgaWYgc2NhbiBzdGFjayBjb250YWlucyBhbnkgZGF0YSB0aGF0IGlzIG5vdCBvYnNvbGV0ZS4gKilcbiAgICBpZiBsZWZ0X3RvdGFsIDwgc3RhdGUucHBfbGVmdF90b3RhbCB0aGVuXG4gICAgICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFja1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIHF1ZXVlX2VsZW0udG9rZW4gd2l0aFxuICAgICAgfCBQcF9icmVhayBfIHwgUHBfdGJyZWFrIChfLCBfKSAtPlxuICAgICAgICBpZiB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX2JlZ2luIChfLCBfKSAtPlxuICAgICAgICBpZiBub3QgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF90ZXh0IF8gfCBQcF9zdGFiIHwgUHBfdGJlZ2luIF8gfCBQcF90ZW5kIHwgUHBfZW5kXG4gICAgICB8IFBwX25ld2xpbmUgfCBQcF9pZl9uZXdsaW5lIHwgUHBfb3Blbl90YWcgXyB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICAgICAoKSAoKiBzY2FuX3B1c2ggaXMgb25seSB1c2VkIGZvciBicmVha3MgYW5kIGJveGVzLiAqKVxuXG5cbigqIFB1c2ggYSB0b2tlbiBvbiBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay5cbiAgIElmIGIgaXMgdHJ1ZSBzZXRfc2l6ZSBpcyBjYWxsZWQuICopXG5sZXQgc2Nhbl9wdXNoIHN0YXRlIGIgdG9rZW4gPVxuICBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuO1xuICBpZiBiIHRoZW4gc2V0X3NpemUgc3RhdGUgdHJ1ZTtcbiAgbGV0IGVsZW0gPSB7IGxlZnRfdG90YWwgPSBzdGF0ZS5wcF9yaWdodF90b3RhbDsgcXVldWVfZWxlbSA9IHRva2VuIH0gaW5cbiAgU3RhY2sucHVzaCBlbGVtIHN0YXRlLnBwX3NjYW5fc3RhY2tcblxuXG4oKiBUbyBvcGVuIGEgbmV3IGJveCA6XG4gICB0aGUgdXNlciBtYXkgc2V0IHRoZSBkZXB0aCBib3VuZCBwcF9tYXhfYm94ZXNcbiAgIGFueSB0ZXh0IG5lc3RlZCBkZWVwZXIgaXMgcHJpbnRlZCBhcyB0aGUgZWxsaXBzaXMgc3RyaW5nLiAqKVxubGV0IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgYnJfdHkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX2JlZ2luIChpbmRlbnQsIGJyX3R5KTsgbGVuZ3RoID0gMCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIGZhbHNlIGVsZW0gZWxzZVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmcgc3RhdGUgc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUaGUgYm94IHdoaWNoIGlzIGFsd2F5cyBvcGVuLiAqKVxubGV0IHBwX29wZW5fc3lzX2JveCBzdGF0ZSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hvdmJveFxuXG4oKiBDbG9zZSBhIGJveCwgc2V0dGluZyBzaXplcyBvZiBpdHMgc3ViIGJveGVzLiAqKVxubGV0IHBwX2Nsb3NlX2JveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBiZWdpblxuICAgICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfZW5kOyBsZW5ndGggPSAwIH07XG4gICAgICBzZXRfc2l6ZSBzdGF0ZSB0cnVlOyBzZXRfc2l6ZSBzdGF0ZSBmYWxzZVxuICAgIGVuZDtcbiAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxO1xuICBlbmRcblxuXG4oKiBPcGVuIGEgdGFnLCBwdXNoaW5nIGl0IG9uIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfb3Blbl9zdGFnIHN0YXRlIHRhZ19uYW1lID1cbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gIGJlZ2luXG4gICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gICAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgdGFnX25hbWVcbiAgZW5kO1xuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIGxldCB0b2tlbiA9IFBwX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuOyBsZW5ndGggPSAwIH1cblxuXG4oKiBDbG9zZSBhIHRhZywgcG9wcGluZyBpdCBmcm9tIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfY2xvc2VfdGFnOyBsZW5ndGggPSAwIH07XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICAgIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGFnX3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgdGFnX25hbWVcblxubGV0IHBwX3NldF9wcmludF90YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9wcmludF90YWdzIDwtIGJcbmxldCBwcF9zZXRfbWFya190YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9tYXJrX3RhZ3MgPC0gYlxubGV0IHBwX2dldF9wcmludF90YWdzIHN0YXRlICgpID0gc3RhdGUucHBfcHJpbnRfdGFnc1xubGV0IHBwX2dldF9tYXJrX3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJrX3RhZ3NcbmxldCBwcF9zZXRfdGFncyBzdGF0ZSBiID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYjsgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiXG5cblxuKCogSGFuZGxpbmcgdGFnIGhhbmRsaW5nIGZ1bmN0aW9uczogZ2V0L3NldCBmdW5jdGlvbnMuICopXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgbWFya19vcGVuX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnO1xuICBtYXJrX2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZztcbiAgcHJpbnRfb3Blbl9zdGFnID0gc3RhdGUucHBfcHJpbnRfb3Blbl90YWc7XG4gIHByaW50X2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWc7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fc3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV9zdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3N0YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3N0YWcgPSBwY3Q7XG4gIH0gPVxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIG1vdDtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gbWN0O1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBwb3Q7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBwY3RcblxuXG4oKiBJbml0aWFsaXplIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX3Jpbml0IHN0YXRlID1cbiAgcHBfY2xlYXJfcXVldWUgc3RhdGU7XG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9mb3JtYXRfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3Rib3hfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfbWFya19zdGFjaztcbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gMDtcbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSAwO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbjtcbiAgcHBfb3Blbl9zeXNfYm94IHN0YXRlXG5cbmxldCBjbGVhcl90YWdfc3RhY2sgc3RhdGUgPVxuICBTdGFjay5pdGVyIChmdW4gXyAtPiBwcF9jbG9zZV9zdGFnIHN0YXRlICgpKSBzdGF0ZS5wcF90YWdfc3RhY2tcblxuXG4oKiBGbHVzaGluZyBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB+ZW5kX3dpdGhfbmV3bGluZSA9XG4gIGNsZWFyX3RhZ19zdGFjayBzdGF0ZTtcbiAgd2hpbGUgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgZG9cbiAgICBwcF9jbG9zZV9ib3ggc3RhdGUgKClcbiAgZG9uZTtcbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gcHBfaW5maW5pdHk7XG4gIGFkdmFuY2VfbGVmdCBzdGF0ZTtcbiAgaWYgZW5kX3dpdGhfbmV3bGluZSB0aGVuIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBwcF9yaW5pdCBzdGF0ZVxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gZm9ybWF0IHZhbHVlcyBhbmQgdXNlIGJveGVzLlxuXG4qKVxuXG4oKiBUbyBmb3JtYXQgYSBzdHJpbmcuICopXG5sZXQgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzXG5cblxubGV0IHBwX3ByaW50X2FzIHN0YXRlIGlzaXplIHMgPVxuICBwcF9wcmludF9hc19zaXplIHN0YXRlIChTaXplLm9mX2ludCBpc2l6ZSkgc1xuXG5cbmxldCBwcF9wcmludF9zdHJpbmcgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxubGV0IHBwX3ByaW50X2J5dGVzIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoQnl0ZXMubGVuZ3RoIHMpIChCeXRlcy50b19zdHJpbmcgcylcblxuKCogVG8gZm9ybWF0IGFuIGludGVnZXIuICopXG5sZXQgcHBfcHJpbnRfaW50IHN0YXRlIGkgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKEludC50b19zdHJpbmcgaSlcblxuKCogVG8gZm9ybWF0IGEgZmxvYXQuICopXG5sZXQgcHBfcHJpbnRfZmxvYXQgc3RhdGUgZiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Zsb2F0IGYpXG5cbigqIFRvIGZvcm1hdCBhIGJvb2xlYW4uICopXG5sZXQgcHBfcHJpbnRfYm9vbCBzdGF0ZSBiID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfYm9vbCBiKVxuXG4oKiBUbyBmb3JtYXQgYSBjaGFyLiAqKVxubGV0IHBwX3ByaW50X2NoYXIgc3RhdGUgYyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIDEgKFN0cmluZy5tYWtlIDEgYylcblxubGV0IHBwX3ByaW50X25vdGhpbmcgX3N0YXRlICgpID0gKClcblxuXG4oKiBPcGVuaW5nIGJveGVzLiAqKVxubGV0IHBwX29wZW5faGJveCBzdGF0ZSAoKSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hib3hcbmFuZCBwcF9vcGVuX3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF92Ym94XG5cbmFuZCBwcF9vcGVuX2h2Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaHZib3hcbmFuZCBwcF9vcGVuX2hvdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2hvdmJveFxuYW5kIHBwX29wZW5fYm94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfYm94XG5cblxuKCogUHJpbnRpbmcgcXVldWVkIHRleHQuXG5cbiAgIFtwcF9wcmludF9mbHVzaF0gcHJpbnRzIGFsbCBwZW5kaW5nIGl0ZW1zIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBhbmRcbiAgIHRoZW4gZmx1c2hlcyB0aGUgbG93IGxldmVsIG91dHB1dCBkZXZpY2Ugb2YgdGhlIGZvcm1hdHRlciB0byBhY3R1YWxseVxuICAgZGlzcGxheSBwcmludGluZyBtYXRlcmlhbC5cblxuICAgW3BwX3ByaW50X25ld2xpbmVdIGJlaGF2ZXMgYXMgW3BwX3ByaW50X2ZsdXNoXSBhZnRlciBwcmludGluZyBhbiBhZGRpdGlvbmFsXG4gICBuZXcgbGluZS4gKilcbmxldCBwcF9wcmludF9uZXdsaW5lIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgfmVuZF93aXRoX25ld2xpbmU6dHJ1ZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5hbmQgcHBfcHJpbnRfZmx1c2ggc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB+ZW5kX3dpdGhfbmV3bGluZTpmYWxzZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5cblxuKCogVG8gZ2V0IGEgbmV3bGluZSB3aGVuIG9uZSBkb2VzIG5vdCB3YW50IHRvIGNsb3NlIHRoZSBjdXJyZW50IGJveC4gKilcbmxldCBwcF9mb3JjZV9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBUbyBmb3JtYXQgc29tZXRoaW5nLCBvbmx5IGluIGNhc2UgdGhlIGxpbmUgaGFzIGp1c3QgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfcHJpbnRfaWZfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZVxuICAgICAgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2lmX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIEdlbmVyYWxpemVkIGJyZWFrIGhpbnQgdGhhdCBhbGxvd3MgcHJpbnRpbmcgc3RyaW5ncyBiZWZvcmUvYWZ0ZXJcbiAgIHNhbWUtbGluZSBvZmZzZXQgKHdpZHRoKSBvciBuZXctbGluZSBvZmZzZXQgKilcbmxldCBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGUgfmZpdHMgfmJyZWFrcyA9XG4gIGxldCBiZWZvcmUsIHdpZHRoLCBhZnRlciA9IGZpdHMgaW5cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgdG9rZW4gPSBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IGluXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggYmVmb3JlICsgd2lkdGggKyBTdHJpbmcubGVuZ3RoIGFmdGVyIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuKCogUHJpbnRpbmcgYnJlYWsgaGludHM6XG4gICBBIGJyZWFrIGhpbnQgaW5kaWNhdGVzIHdoZXJlIGEgYm94IG1heSBiZSBicm9rZW4uXG4gICBJZiBsaW5lIGlzIGJyb2tlbiB0aGVuIG9mZnNldCBpcyBhZGRlZCB0byB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnRcbiAgIGJveCBlbHNlICh0aGUgdmFsdWUgb2YpIHdpZHRoIGJsYW5rcyBhcmUgcHJpbnRlZC4gKilcbmxldCBwcF9wcmludF9icmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGVcbiAgICB+Zml0czooXCJcIiwgd2lkdGgsIFwiXCIpIH5icmVha3M6KFwiXCIsIG9mZnNldCwgXCJcIilcblxuXG4oKiBQcmludCBhIHNwYWNlIDpcbiAgIGEgc3BhY2UgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIGEgc2luZ2xlIHNwYWNlIGlmIHRoZSBicmVhayBkb2VzIG5vdFxuICAgc3BsaXQgdGhlIGxpbmU7XG4gICBhIGN1dCBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgbm90aGluZyBpZiB0aGUgYnJlYWsgZG9lcyBub3Qgc3BsaXQgdGhlXG4gICBsaW5lLiAqKVxubGV0IHBwX3ByaW50X3NwYWNlIHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMSAwXG5hbmQgcHBfcHJpbnRfY3V0IHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMCAwXG5cblxuKCogVGFidWxhdGlvbiBib3hlcy4gKilcbmxldCBwcF9vcGVuX3Rib3ggc3RhdGUgKCkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUuemVybyBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RiZWdpbiAoUHBfdGJveCAocmVmIFtdKSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCogQ2xvc2UgYSB0YWJ1bGF0aW9uIGJveC4gKilcbmxldCBwcF9jbG9zZV90Ym94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3RlbmQ7IGxlbmd0aCA9IDAgfSBpblxuICAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbTtcbiAgICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMVxuICBlbmRcblxuXG4oKiBQcmludCBhIHRhYnVsYXRpb24gYnJlYWsuICopXG5sZXQgcHBfcHJpbnRfdGJyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJyZWFrICh3aWR0aCwgb2Zmc2V0KTsgbGVuZ3RoID0gd2lkdGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuXG5sZXQgcHBfcHJpbnRfdGFiIHN0YXRlICgpID0gcHBfcHJpbnRfdGJyZWFrIHN0YXRlIDAgMFxuXG5sZXQgcHBfc2V0X3RhYiBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3N0YWI7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGNvbnRyb2wgdGhlIHByZXR0eS1wcmludGVyc1xuXG4qKVxuXG4oKiBTZXRfbWF4X2JveGVzLiAqKVxubGV0IHBwX3NldF9tYXhfYm94ZXMgc3RhdGUgbiA9IGlmIG4gPiAxIHRoZW4gc3RhdGUucHBfbWF4X2JveGVzIDwtIG5cblxuKCogVG8ga25vdyB0aGUgY3VycmVudCBtYXhpbXVtIG51bWJlciBvZiBib3hlcyBhbGxvd2VkLiAqKVxubGV0IHBwX2dldF9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxubGV0IHBwX292ZXJfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG4oKiBFbGxpcHNpcy4gKilcbmxldCBwcF9zZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSBzID0gc3RhdGUucHBfZWxsaXBzaXMgPC0gc1xuYW5kIHBwX2dldF9lbGxpcHNpc190ZXh0IHN0YXRlICgpID0gc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUbyBzZXQgdGhlIG1hcmdpbiBvZiBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9saW1pdCBuID1cbiAgaWYgbiA8IHBwX2luZmluaXR5IHRoZW4gbiBlbHNlIHByZWQgcHBfaW5maW5pdHlcblxuXG4oKiBJbnRlcm5hbCBwcmV0dHktcHJpbnRlciBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0IDwtIG47XG4gICAgc3RhdGUucHBfbWF4X2luZGVudCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9yaW5pdCBzdGF0ZVxuXG5cbigqIEluaXRpYWxseSwgd2UgaGF2ZSA6XG4gICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQsIGFuZFxuICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbi4gKilcbmxldCBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuID1cbiAgaWYgbiA+IDEgdGhlblxuICAgIHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSAoc3RhdGUucHBfbWFyZ2luIC0gbilcblxuXG5sZXQgcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfaW5kZW50XG5cbmxldCBwcF9zZXRfbWFyZ2luIHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21hcmdpbiA8LSBuO1xuICAgIGxldCBuZXdfbWF4X2luZGVudCA9XG4gICAgICAoKiBUcnkgdG8gbWFpbnRhaW4gbWF4X2luZGVudCB0byBpdHMgYWN0dWFsIHZhbHVlLiAqKVxuICAgICAgaWYgc3RhdGUucHBfbWF4X2luZGVudCA8PSBzdGF0ZS5wcF9tYXJnaW5cbiAgICAgIHRoZW4gc3RhdGUucHBfbWF4X2luZGVudCBlbHNlXG4gICAgICAoKiBJZiBwb3NzaWJsZSBtYWludGFpbiBwcF9taW5fc3BhY2VfbGVmdCB0byBpdHMgYWN0dWFsIHZhbHVlLFxuICAgICAgICAgaWYgdGhpcyBsZWFkcyB0byBhIHRvbyBzbWFsbCBtYXhfaW5kZW50LCB0YWtlIGhhbGYgb2YgdGhlXG4gICAgICAgICBuZXcgbWFyZ2luLCBpZiBpdCBpcyBncmVhdGVyIHRoYW4gMS4gKilcbiAgICAgICBJbnQubWF4IChJbnQubWF4IChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdClcbiAgICAgICAgICAgICAgICAoc3RhdGUucHBfbWFyZ2luIC8gMikpIDEgaW5cbiAgICAoKiBSZWJ1aWxkIGludmFyaWFudHMuICopXG4gICAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbmV3X21heF9pbmRlbnRcblxuXG4oKiogR2VvbWV0cnkgZnVuY3Rpb25zIGFuZCB0eXBlcyAqKVxudHlwZSBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDppbnQ7IG1hcmdpbjogaW50fVxuXG5sZXQgdmFsaWRhdGVfZ2VvbWV0cnkge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBpZiBtYXhfaW5kZW50IDwgMiB0aGVuXG4gICAgRXJyb3IgXCJtYXhfaW5kZW50IDwgMlwiXG4gIGVsc2UgaWYgbWFyZ2luIDw9IG1heF9pbmRlbnQgdGhlblxuICAgIEVycm9yIFwibWFyZ2luIDw9IG1heF9pbmRlbnRcIlxuICBlbHNlIGlmIG1hcmdpbiA+PSBwcF9pbmZpbml0eSB0aGVuXG4gICAgRXJyb3IgXCJtYXJnaW4gPj0gcHBfaW5maW5pdHlcIlxuICBlbHNlIE9rICgpXG5cbmxldCBjaGVja19nZW9tZXRyeSBnZW9tZXRyeSA9XG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBPayAoKSAtPiB0cnVlXG4gIHwgRXJyb3IgXyAtPiBmYWxzZVxuXG5sZXQgcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmdpblxuXG5sZXQgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBwcF9zZXRfbWFyZ2luIHN0YXRlIG1hcmdpbjtcbiAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbWF4X2luZGVudDtcbiAgKClcblxubGV0IHBwX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgbXNnIC0+XG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiRm9ybWF0LnBwX3NldF9nZW9tZXRyeTogXCIgXiBtc2cpKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX3NhZmVfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBfbXNnIC0+XG4gICAgICgpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpID1cbiAgeyBtYXJnaW4gPSBwcF9nZXRfbWFyZ2luIHN0YXRlICgpOyBtYXhfaW5kZW50ID0gcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgfVxuXG5sZXQgcHBfdXBkYXRlX2dlb21ldHJ5IHN0YXRlIHVwZGF0ZSA9XG4gIGxldCBnZW9tZXRyeSA9IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSBpblxuICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSAodXBkYXRlIGdlb21ldHJ5KVxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgIG91dF9zdHJpbmcgPSBmO1xuICAgICAgb3V0X2ZsdXNoID0gZztcbiAgICAgIG91dF9uZXdsaW5lID0gaDtcbiAgICAgIG91dF9zcGFjZXMgPSBpO1xuICAgICAgb3V0X2luZGVudCA9IGo7XG4gICAgfSA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjtcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGc7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGg7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gaTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBqXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG91dF9zdHJpbmcgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nO1xuICBvdXRfZmx1c2ggPSBzdGF0ZS5wcF9vdXRfZmx1c2g7XG4gIG91dF9uZXdsaW5lID0gc3RhdGUucHBfb3V0X25ld2xpbmU7XG4gIG91dF9zcGFjZXMgPSBzdGF0ZS5wcF9vdXRfc3BhY2VzO1xuICBvdXRfaW5kZW50ID0gc3RhdGUucHBfb3V0X2luZGVudDtcbn1cblxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIHN0cmluZyBvdXRwdXQgYW5kIGZsdXNoIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgZiBnID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmOyBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZ1xuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlICgpID1cbiAgKHN0YXRlLnBwX291dF9zdHJpbmcsIHN0YXRlLnBwX291dF9mbHVzaClcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfbmV3bGluZSBzdGF0ZSAoKSA9IHN0YXRlLnBwX291dF9zdHJpbmcgXCJcXG5cIiAwICAxXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBzcGFjZXMuICopXG5sZXQgYmxhbmtfbGluZSA9IFN0cmluZy5tYWtlIDgwICcgJ1xubGV0IHJlYyBkaXNwbGF5X2JsYW5rcyBzdGF0ZSBuID1cbiAgaWYgbiA+IDAgdGhlblxuICBpZiBuIDw9IDgwIHRoZW4gc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgbiBlbHNlXG4gIGJlZ2luXG4gICAgc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgODA7XG4gICAgZGlzcGxheV9ibGFua3Mgc3RhdGUgKG4gLSA4MClcbiAgZW5kXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X2luZGVudCA9IGRpc3BsYXlfYmxhbmtzXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucyBhcyBwcmludGluZyB0byBhIGdpdmVuXG4gICBbU3RkbGliLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHN0YXRlIG9jID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBvdXRwdXRfc3Vic3RyaW5nIG9jO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gKGZ1biAoKSAtPiBmbHVzaCBvYyk7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBzdGF0ZVxuXG4oKlxuXG4gIERlZmluaW5nIHNwZWNpZmljIGZvcm1hdHRlcnNcblxuKilcblxubGV0IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPFwiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5sZXQgZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPC9cIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxuXG5sZXQgZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyA9IGlnbm9yZVxubGV0IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnID0gaWdub3JlXG5cbigqIEJ1aWxkaW5nIGEgZm9ybWF0dGVyIGdpdmVuIGl0cyBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLlxuICAgT3RoZXIgZmllbGRzIGdldCByZWFzb25hYmxlIGRlZmF1bHQgdmFsdWVzLiAqKVxubGV0IHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgaiA9XG4gICgqIFRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBmb3JtYXR0ZXIgY29udGFpbnMgYSBkdW1teSBib3guICopXG4gIGxldCBwcF9xdWV1ZSA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQgc3lzX3RvayA9XG4gICAgeyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX2JlZ2luICgwLCBQcF9ob3Zib3gpOyBsZW5ndGggPSAwIH0gaW5cbiAgUXVldWUuYWRkIHN5c190b2sgcHBfcXVldWU7XG4gIGxldCBzY2FuX3N0YWNrID0gU3RhY2suY3JlYXRlICgpIGluXG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzY2FuX3N0YWNrO1xuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IDE7IHF1ZXVlX2VsZW0gPSBzeXNfdG9rIH0gc2Nhbl9zdGFjaztcbiAgbGV0IHBwX21hcmdpbiA9IDc4XG4gIGFuZCBwcF9taW5fc3BhY2VfbGVmdCA9IDEwIGluXG4gIHtcbiAgICBwcF9zY2FuX3N0YWNrID0gc2Nhbl9zdGFjaztcbiAgICBwcF9mb3JtYXRfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGJveF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90YWdfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFya19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJnaW4gPSBwcF9tYXJnaW47XG4gICAgcHBfbWluX3NwYWNlX2xlZnQgPSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbjtcbiAgICBwcF9jdXJyZW50X2luZGVudCA9IDA7XG4gICAgcHBfaXNfbmV3X2xpbmUgPSB0cnVlO1xuICAgIHBwX2xlZnRfdG90YWwgPSAxO1xuICAgIHBwX3JpZ2h0X3RvdGFsID0gMTtcbiAgICBwcF9jdXJyX2RlcHRoID0gMTtcbiAgICBwcF9tYXhfYm94ZXMgPSBtYXhfaW50O1xuICAgIHBwX2VsbGlwc2lzID0gXCIuXCI7XG4gICAgcHBfb3V0X3N0cmluZyA9IGY7XG4gICAgcHBfb3V0X2ZsdXNoID0gZztcbiAgICBwcF9vdXRfbmV3bGluZSA9IGg7XG4gICAgcHBfb3V0X3NwYWNlcyA9IGk7XG4gICAgcHBfb3V0X2luZGVudCA9IGo7XG4gICAgcHBfcHJpbnRfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfb3Blbl90YWcgPSBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWc7XG4gICAgcHBfbWFya19jbG9zZV90YWcgPSBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnO1xuICAgIHBwX3ByaW50X29wZW5fdGFnID0gZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZztcbiAgICBwcF9wcmludF9jbG9zZV90YWcgPSBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZztcbiAgICBwcF9xdWV1ZSA9IHBwX3F1ZXVlO1xuICB9XG5cblxuKCogQnVpbGQgYSBmb3JtYXR0ZXIgb3V0IG9mIGl0cyBvdXQgZnVuY3Rpb25zLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfZnVuY3Rpb25zIG91dF9mdW5zID1cbiAgcHBfbWFrZV9mb3JtYXR0ZXJcbiAgICBvdXRfZnVucy5vdXRfc3RyaW5nXG4gICAgb3V0X2Z1bnMub3V0X2ZsdXNoXG4gICAgb3V0X2Z1bnMub3V0X25ld2xpbmVcbiAgICBvdXRfZnVucy5vdXRfc3BhY2VzXG4gICAgb3V0X2Z1bnMub3V0X2luZGVudFxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd2l0aCBkZWZhdWx0IGZ1bmN0aW9ucyB0byBvdXRwdXQgc3BhY2VzLFxuICBpbmRlbnRhdGlvbiwgYW5kIG5ldyBsaW5lcy4gKilcbmxldCBtYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBsZXQgcHBmID0gcHBfbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoIGlnbm9yZSBpZ25vcmUgaWdub3JlIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgcHBmXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW1N0ZGxpYi5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jID1cbiAgbWFrZV9mb3JtYXR0ZXIgKG91dHB1dF9zdWJzdHJpbmcgb2MpIChmdW4gKCkgLT4gZmx1c2ggb2MpXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW0J1ZmZlci50XSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgPVxuICBtYWtlX2Zvcm1hdHRlciAoQnVmZmVyLmFkZF9zdWJzdHJpbmcgYikgaWdub3JlXG5cblxuKCogQWxsb2NhdGluZyBidWZmZXIgZm9yIHByZXR0eS1wcmludGluZyBwdXJwb3Nlcy5cbiAgIERlZmF1bHQgYnVmZmVyIHNpemUgaXMgcHBfYnVmZmVyX3NpemUgb3IgNTEyLlxuKilcbmxldCBwcF9idWZmZXJfc2l6ZSA9IDUxMlxubGV0IHBwX21ha2VfYnVmZmVyICgpID0gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZVxuXG4oKiBUaGUgc3RhbmRhcmQgKHNoYXJlZCkgYnVmZmVyLiAqKVxubGV0IHN0ZGJ1ZiA9IHBwX21ha2VfYnVmZmVyICgpXG5cbigqIFByZWRlZmluZWQgZm9ybWF0dGVycyBzdGFuZGFyZCBmb3JtYXR0ZXIgdG8gcHJpbnRcbiAgIHRvIFtTdGRsaWIuc3Rkb3V0XSwgW1N0ZGxpYi5zdGRlcnJdLCBhbmQgeyFzdGRidWZ9LiAqKVxubGV0IHN0ZF9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZG91dFxuYW5kIGVycl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZGVyclxuYW5kIHN0cl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIHN0ZGJ1ZlxuXG4oKiBJbml0aWFsaXNlIGRvbWFpbiBsb2NhbCBzdGF0ZSAqKVxubW9kdWxlIERMUyA9IERvbWFpbi5ETFNcblxubGV0IHN0ZGJ1Zl9rZXkgPSBETFMubmV3X2tleSBwcF9tYWtlX2J1ZmZlclxubGV0IF8gPSBETFMuc2V0IHN0ZGJ1Zl9rZXkgc3RkYnVmXG5cbmxldCBzdHJfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgZm9ybWF0dGVyX29mX2J1ZmZlciAoRExTLmdldCBzdGRidWZfa2V5KSlcbmxldCBfID0gRExTLnNldCBzdHJfZm9ybWF0dGVyX2tleSBzdHJfZm9ybWF0dGVyXG5cbmxldCBidWZmZXJlZF9vdXRfc3RyaW5nIGtleSBzdHIgb2ZzIGxlbiA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIChEb21haW4uRExTLmdldCBrZXkpIHN0ciBvZnMgbGVuXG5cbmxldCBidWZmZXJlZF9vdXRfZmx1c2ggb2Mga2V5ICgpID1cbiAgbGV0IGJ1ZiA9IERvbWFpbi5ETFMuZ2V0IGtleSBpblxuICBsZXQgbGVuID0gQnVmZmVyLmxlbmd0aCBidWYgaW5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgb3V0cHV0X3N1YnN0cmluZyBvYyBzdHIgMCBsZW4gO1xuICBTdGRsaWIuZmx1c2ggb2M7XG4gIEJ1ZmZlci5jbGVhciBidWZcblxubGV0IHN0ZF9idWZfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IChmdW4gKCkgLT4gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZSlcbmxldCBlcnJfYnVmX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSAoZnVuICgpIC0+IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUpXG5cbmxldCBzdGRfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgbGV0IHBwZiA9XG4gICAgcHBfbWFrZV9mb3JtYXR0ZXIgKGJ1ZmZlcmVkX291dF9zdHJpbmcgc3RkX2J1Zl9rZXkpXG4gICAgICAoYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRvdXQgc3RkX2J1Zl9rZXkpIGlnbm9yZSBpZ25vcmUgaWdub3JlXG4gIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgRG9tYWluLmF0X2V4aXQgKHBwX3ByaW50X2ZsdXNoIHBwZik7XG4gIHBwZilcbmxldCBfID0gRExTLnNldCBzdGRfZm9ybWF0dGVyX2tleSBzdGRfZm9ybWF0dGVyXG5cbmxldCBlcnJfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgbGV0IHBwZiA9XG4gICAgcHBfbWFrZV9mb3JtYXR0ZXIgKGJ1ZmZlcmVkX291dF9zdHJpbmcgZXJyX2J1Zl9rZXkpXG4gICAgICAoYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRlcnIgZXJyX2J1Zl9rZXkpIGlnbm9yZSBpZ25vcmUgaWdub3JlXG4gIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgRG9tYWluLmF0X2V4aXQgKHBwX3ByaW50X2ZsdXNoIHBwZik7XG4gIHBwZilcbmxldCBfID0gRExTLnNldCBlcnJfZm9ybWF0dGVyX2tleSBlcnJfZm9ybWF0dGVyXG5cbmxldCBnZXRfc3RkX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfZXJyX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgZXJyX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfc3RyX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgc3RyX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfc3RkYnVmICgpID0gRExTLmdldCBzdGRidWZfa2V5XG5cbigqIFtmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGZdIGZsdXNoZXMgZm9ybWF0dGVyIFtwcGZdLFxuICAgdGhlbiByZXR1cm5zIHRoZSBjb250ZW50cyBvZiBidWZmZXIgW2J1Zl0gdGhhdCBpcyByZXNldC5cbiAgIEZvcm1hdHRlciBbcHBmXSBpcyBzdXBwb3NlZCB0byBwcmludCB0byBidWZmZXIgW2J1Zl0sIG90aGVyd2lzZSB0aGlzXG4gICBmdW5jdGlvbiBpcyBub3QgcmVhbGx5IHVzZWZ1bC4gKilcbmxldCBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGYgPVxuICBwcF9mbHVzaF9xdWV1ZSBwcGYgfmVuZF93aXRoX25ld2xpbmU6ZmFsc2U7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBCdWZmZXIucmVzZXQgYnVmO1xuICBzXG5cbigqIEZsdXNoIFtzdHJfZm9ybWF0dGVyXSBhbmQgZ2V0IHRoZSBjb250ZW50cyBvZiBbc3RkYnVmXS4gKilcbmxldCBmbHVzaF9zdHJfZm9ybWF0dGVyICgpID1cbiAgbGV0IHN0ZGJ1ZiA9IERMUy5nZXQgc3RkYnVmX2tleSBpblxuICBsZXQgc3RyX2Zvcm1hdHRlciA9IERMUy5nZXQgc3RyX2Zvcm1hdHRlcl9rZXkgaW5cbiAgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBzdGRidWYgc3RyX2Zvcm1hdHRlclxuXG5sZXQgbWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCA9XG4gIERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZSBpblxuICAgIGxldCBvdXRwdXQnID0gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGluXG4gICAgbGV0IGZsdXNoJyAoKSA9XG4gICAgICBvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBidWYpIDAgKEJ1ZmZlci5sZW5ndGggYnVmKTtcbiAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICBmbHVzaCAoKVxuICAgIGluXG4gICAgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0JyBmbHVzaCcpXG5cbmxldCBzeW5jaHJvbml6ZWRfZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jID1cbiAgbWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmdcbiopXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZyBpcyBwcmV0dHktcHJpbnRpbmcgd2l0aCBubyBsb3cgbGV2ZWwgb3V0cHV0LlxuXG4gIFdoZW4gdXNpbmcgYSBzeW1ib2xpYyBmb3JtYXR0ZXIsIGFsbCByZWd1bGFyIHByZXR0eS1wcmludGluZyBhY3Rpdml0aWVzXG4gIG9jY3VyIGJ1dCBvdXRwdXQgbWF0ZXJpYWwgaXMgc3ltYm9saWMgYW5kIHN0b3JlZCBpbiBhIGJ1ZmZlciBvZiBvdXRwdXRcbiAgaXRlbXMuIEF0IHRoZSBlbmQgb2YgcHJldHR5LXByaW50aW5nLCBmbHVzaGluZyB0aGUgb3V0cHV0IGJ1ZmZlciBhbGxvd3NcbiAgcG9zdC1wcm9jZXNzaW5nIG9mIHN5bWJvbGljIG91dHB1dCBiZWZvcmUgbG93IGxldmVsIG91dHB1dCBvcGVyYXRpb25zLlxuKilcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfaXRlbSA9XG4gIHwgT3V0cHV0X2ZsdXNoXG4gIHwgT3V0cHV0X25ld2xpbmVcbiAgfCBPdXRwdXRfc3RyaW5nIG9mIHN0cmluZ1xuICB8IE91dHB1dF9zcGFjZXMgb2YgaW50XG4gIHwgT3V0cHV0X2luZGVudCBvZiBpbnRcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfYnVmZmVyID0ge1xuICBtdXRhYmxlIHN5bWJvbGljX291dHB1dF9jb250ZW50cyA6IHN5bWJvbGljX291dHB1dF9pdGVtIGxpc3Q7XG59XG5cbmxldCBtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIgKCkgPVxuICB7IHN5bWJvbGljX291dHB1dF9jb250ZW50cyA9IFtdIH1cblxubGV0IGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBbXVxuXG5sZXQgZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgTGlzdC5yZXYgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgaXRlbXMgPSBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgaW5cbiAgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2I7XG4gIGl0ZW1zXG5cbmxldCBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIGl0ZW0gPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIGl0ZW0gOjogc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IHN5bWJvbGljX2ZsdXNoIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfZmx1c2hcbiAgYW5kIHN5bWJvbGljX25ld2xpbmUgc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9uZXdsaW5lXG4gIGFuZCBzeW1ib2xpY19zdHJpbmcgc29iIHMgaSBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3RyaW5nIChTdHJpbmcuc3ViIHMgaSBuKSlcbiAgYW5kIHN5bWJvbGljX3NwYWNlcyBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3NwYWNlcyBuKVxuICBhbmQgc3ltYm9saWNfaW5kZW50IHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfaW5kZW50IG4pIGluXG5cbiAgbGV0IGYgPSBzeW1ib2xpY19zdHJpbmcgc29iXG4gIGFuZCBnID0gc3ltYm9saWNfZmx1c2ggc29iXG4gIGFuZCBoID0gc3ltYm9saWNfbmV3bGluZSBzb2JcbiAgYW5kIGkgPSBzeW1ib2xpY19zcGFjZXMgc29iXG4gIGFuZCBqID0gc3ltYm9saWNfaW5kZW50IHNvYiBpblxuICBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGpcblxuKCpcblxuICBCYXNpYyBmdW5jdGlvbnMgb24gdGhlICdzdGFuZGFyZCcgZm9ybWF0dGVyXG4gICh0aGUgZm9ybWF0dGVyIHRoYXQgcHJpbnRzIHRvIFtTdGRsaWIuc3Rkb3V0XSkuXG5cbiopXG5cbmxldCBvcGVuX2hib3ggdiA9IHBwX29wZW5faGJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fdmJveCB2ID0gcHBfb3Blbl92Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9odmJveCB2ID0gcHBfb3Blbl9odmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5faG92Ym94IHYgPSBwcF9vcGVuX2hvdmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fYm94IHYgPSBwcF9vcGVuX2JveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGNsb3NlX2JveCB2ID0gcHBfY2xvc2VfYm94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9zdGFnIHYgPSBwcF9vcGVuX3N0YWcgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV9zdGFnIHYgPSBwcF9jbG9zZV9zdGFnIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYXMgdiB3ID0gcHBfcHJpbnRfYXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHYgd1xuYW5kIHByaW50X3N0cmluZyB2ID0gcHBfcHJpbnRfc3RyaW5nIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYnl0ZXMgdiA9IHBwX3ByaW50X2J5dGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaW50IHYgPSBwcF9wcmludF9pbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbG9hdCB2ID0gcHBfcHJpbnRfZmxvYXQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9jaGFyIHYgPSBwcF9wcmludF9jaGFyIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYm9vbCB2ID0gcHBfcHJpbnRfYm9vbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2JyZWFrIHYgdyA9IHBwX3ByaW50X2JyZWFrIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBwcmludF9jdXQgdiA9IHBwX3ByaW50X2N1dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3NwYWNlIHYgPSBwcF9wcmludF9zcGFjZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGZvcmNlX25ld2xpbmUgdiA9IHBwX2ZvcmNlX25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbHVzaCB2ID0gcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9uZXdsaW5lIHYgPSBwcF9wcmludF9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaWZfbmV3bGluZSB2ID0gcHBfcHJpbnRfaWZfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgb3Blbl90Ym94IHYgPSBwcF9vcGVuX3Rib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV90Ym94IHYgPSBwcF9jbG9zZV90Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGJyZWFrIHYgdyA9IHBwX3ByaW50X3RicmVhayAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5cbmFuZCBzZXRfdGFiIHYgPSBwcF9zZXRfdGFiIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGFiIHYgPSBwcF9wcmludF90YWIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXJnaW4gdiA9IHBwX3NldF9tYXJnaW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWFyZ2luIHYgPSBwcF9nZXRfbWFyZ2luIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWF4X2luZGVudCB2ID0gcHBfc2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWF4X2luZGVudCB2ID0gcHBfZ2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9nZW9tZXRyeSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgcHBfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgc2FmZV9zZXRfZ2VvbWV0cnkgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIHBwX3NhZmVfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgZ2V0X2dlb21ldHJ5IHYgPSBwcF9nZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCB1cGRhdGVfZ2VvbWV0cnkgdiA9IHBwX3VwZGF0ZV9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21heF9ib3hlcyB2ID0gcHBfc2V0X21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXhfYm94ZXMgdiA9IHBwX2dldF9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvdmVyX21heF9ib3hlcyB2ID0gcHBfb3Zlcl9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9zZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9nZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgdyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX3NldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX2dldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X21hcmtfdGFncyB2ID1cbiAgcHBfc2V0X21hcmtfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXJrX3RhZ3MgdiA9XG4gIHBwX2dldF9tYXJrX3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfdGFncyB2ID1cbiAgcHBfc2V0X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuXG4oKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgKilcblxubGV0IHBwX3ByaW50X2l0ZXIgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIGl0ZXIgcHBfdiBwcGYgdiA9XG4gIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gIGxldCBwcF92IHYgPVxuICAgIGlmICFpc19maXJzdCB0aGVuIGlzX2ZpcnN0IDo9IGZhbHNlIGVsc2UgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF92IHBwZiB2XG4gIGluXG4gIGl0ZXIgcHBfdiB2XG5cbigqIFRvIGZvcm1hdCBhIGxpc3QgKilcbmxldCBwcF9wcmludF9saXN0ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiB2ID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIExpc3QuaXRlciBwcF92IHBwZiB2XG5cbigqIFRvIGZvcm1hdCBhbiBhcnJheSAqKVxubGV0IHBwX3ByaW50X2FycmF5ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiB2ID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIEFycmF5Lml0ZXIgcHBfdiBwcGYgdlxuXG4oKiBUbyBmb3JtYXQgYSBzZXF1ZW5jZSAqKVxubGV0IHBwX3ByaW50X3NlcSA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgc2VxID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIFNlcS5pdGVyIHBwX3YgcHBmIHNlcVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBwcF9wcmludF90ZXh0IHBwZiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGVmdCA9IHJlZiAwIGluXG4gIGxldCByaWdodCA9IHJlZiAwIGluXG4gIGxldCBmbHVzaCAoKSA9XG4gICAgcHBfcHJpbnRfc3RyaW5nIHBwZiAoU3RyaW5nLnN1YiBzICFsZWZ0ICghcmlnaHQgLSAhbGVmdCkpO1xuICAgIGluY3IgcmlnaHQ7IGxlZnQgOj0gIXJpZ2h0O1xuICBpblxuICB3aGlsZSAoIXJpZ2h0IDw+IGxlbikgZG9cbiAgICBtYXRjaCBzLlshcmlnaHRdIHdpdGhcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgZmx1c2ggKCk7XG4gICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBmbHVzaCAoKTsgcHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICAoKiB0aGVyZSBpcyBubyBzcGVjaWZpYyBzdXBwb3J0IGZvciAnXFx0J1xuICAgICAgICAgYXMgaXQgaXMgdW5jbGVhciB3aGF0IGEgcmlnaHQgc2VtYW50aWNzIHdvdWxkIGJlICopXG4gICAgICB8IF8gLT4gaW5jciByaWdodFxuICBkb25lO1xuICBpZiAhbGVmdCA8PiBsZW4gdGhlbiBmbHVzaCAoKVxuXG5sZXQgcHBfcHJpbnRfb3B0aW9uID8obm9uZSA9IGZ1biBfICgpIC0+ICgpKSBwcF92IHBwZiA9IGZ1bmN0aW9uXG58IE5vbmUgLT4gbm9uZSBwcGYgKClcbnwgU29tZSB2IC0+IHBwX3YgcHBmIHZcblxubGV0IHBwX3ByaW50X3Jlc3VsdCB+b2sgfmVycm9yIHBwZiA9IGZ1bmN0aW9uXG58IE9rIHYgLT4gb2sgcHBmIHZcbnwgRXJyb3IgZSAtPiBlcnJvciBwcGYgZVxuXG5sZXQgcHBfcHJpbnRfZWl0aGVyIH5sZWZ0IH5yaWdodCBwcGYgPSBmdW5jdGlvblxufCBFaXRoZXIuTGVmdCBsIC0+IGxlZnQgcHBmIGxcbnwgRWl0aGVyLlJpZ2h0IHIgLT4gcmlnaHQgcHBmIHJcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNvbXB1dGVfdGFnIG91dHB1dCB0YWdfYWNjID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gIG91dHB1dCBwcGYgdGFnX2FjYztcbiAgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICBsZXQgbGVuID0gQnVmZmVyLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgZWxzZSBCdWZmZXIuc3ViIGJ1ZiAxIChsZW4gLSAyKVxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgRGVmaW5pbmcgY29udGludWF0aW9ucyB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRzIG9mXG4gIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi5cblxuICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIEludGVycHJldCBhIGZvcm1hdHRpbmcgZW50aXR5IG9uIGEgZm9ybWF0dGVyLiAqKVxubGV0IG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZm10aW5nX2xpdCA9IG1hdGNoIGZtdGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2VfYm94IHBwZiAoKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2Vfc3RhZyBwcGYgKClcbiAgfCBCcmVhayAoXywgd2lkdGgsIG9mZnNldCkgIC0+IHBwX3ByaW50X2JyZWFrIHBwZiB3aWR0aCBvZmZzZXRcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2ZsdXNoIHBwZiAoKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX3ByaW50X25ld2xpbmUgcHBmICgpXG4gIHwgTWFnaWNfc2l6ZSAoXywgXykgICAgICAgICAtPiAoKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnJSdcbiAgfCBTY2FuX2luZGljIGMgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJzsgcHBfcHJpbnRfY2hhciBwcGYgY1xuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYub3V0cHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBmIHBwZjtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYuYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBzdHJwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19kZWxheSAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKGYgKCkpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIChmICgpKTtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqXG5cbiAgRGVmaW5pbmcgW2ZwcmludGZdIGFuZCB2YXJpb3VzIGZsYXZvcnMgb2YgW2ZwcmludGZdLlxuXG4qKVxuXG5sZXQga2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgcHBmIGFjYzsgayBwcGYpXG4gICAgRW5kX29mX2FjYyBmbXRcblxuYW5kIGlrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIHBwZiBmbXRcblxubGV0IGlmcHJpbnRmIF9wcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgaWdub3JlICgpIGZtdFxuXG5sZXQgZnByaW50ZiBwcGYgPSBrZnByaW50ZiBpZ25vcmUgcHBmXG5cbmxldCBwcmludGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIGFjYylcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgZXByaW50ZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyAoRExTLmdldCBlcnJfZm9ybWF0dGVyX2tleSkgYWNjKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBrZHByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBrIChmdW4gcHBmIC0+IG91dHB1dF9hY2MgcHBmIGFjYykpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGRwcmludGYgZm10ID0ga2RwcmludGYgKGZ1biBpIC0+IGkpIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIHN0cnB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgaWQgZm10XG5cbmxldCBrYXNwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIG91dHB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IGFzcHJpbnRmIGZtdCA9IGthc3ByaW50ZiBpZCBmbXRcblxuKCogRmx1c2hpbmcgc3RhbmRhcmQgZm9ybWF0dGVycyBhdCBlbmQgb2YgZXhlY3V0aW9uLiAqKVxuXG5sZXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyAoKSA9XG4gIHBwX3ByaW50X2ZsdXNoIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSAoKTtcbiAgcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgZXJyX2Zvcm1hdHRlcl9rZXkpICgpXG5cbmxldCAoKSA9IGF0X2V4aXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVyc1xuXG5sZXQgKCkgPSBEb21haW4uYmVmb3JlX2ZpcnN0X3NwYXduIChmdW4gKCkgLT5cbiAgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyAoKTtcbiAgbGV0IGZzID0gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXIgKCkgaW5cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbiAgICB7ZnMgd2l0aCBvdXRfc3RyaW5nID0gYnVmZmVyZWRfb3V0X3N0cmluZyBzdGRfYnVmX2tleTtcbiAgICAgICAgICAgICBvdXRfZmx1c2ggPSBidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZG91dCBzdGRfYnVmX2tleX07XG5cbiAgbGV0IGZzID0gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIGVycl9mb3JtYXR0ZXIgKCkgaW5cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIGVycl9mb3JtYXR0ZXJcbiAgICB7ZnMgd2l0aCBvdXRfc3RyaW5nID0gYnVmZmVyZWRfb3V0X3N0cmluZyBlcnJfYnVmX2tleTtcbiAgICAgICAgICAgICBvdXRfZmx1c2ggPSBidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZGVyciBlcnJfYnVmX2tleX07XG4pXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBhbGlhcyB0byBhdm9pZCB3YXJuaW5nIGZvciBhbWJpZ3VpdHkgYmV0d2VlblxuICAgU3RkbGliLmZvcm1hdDZcbiAgIGFuZCBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuXG4gICAodGhlIGZvcm1lciBpcyBpbiBmYWN0IGFuIGFsaWFzIGZvciB0aGUgbGF0dGVyLFxuICAgIGJ1dCB0aGUgYW1iaWd1aXR5IHdhcm5pbmcgZG9lc24ndCBjYXJlKVxuKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgU3RkbGliLmZvcm1hdDZcblxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3Igc2Nhbm5lcnMuICopXG5cbigqIFNjYW5uaW5nIGJ1ZmZlcnMuICopXG5tb2R1bGUgdHlwZSBTQ0FOTklORyA9IHNpZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbFxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHZhbCBzdGRpbiA6IGluX2NoYW5uZWxcbiAgKCogVGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0uICopXG5cbiAgdmFsIG5leHRfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBbU2Nhbm5pbmcubmV4dF9jaGFyIGliXSBhZHZhbmNlIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIuXG4gICAgIElmIG5vIG1vcmUgY2hhcmFjdGVyIGNhbiBiZSByZWFkLCBzZXRzIGEgZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGludmFsaWRhdGVfY3VycmVudF9jaGFyIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYl0gbWFyayB0aGUgY3VycmVudF9jaGFyIGFzIGFscmVhZHlcbiAgICAgc2Nhbm5lZC4gKilcblxuICB2YWwgcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5wZWVrX2NoYXIgaWJdIHJldHVybnMgdGhlIGN1cnJlbnQgY2hhciBhdmFpbGFibGUgaW5cbiAgICAgdGhlIGJ1ZmZlciBvciByZWFkcyBvbmUgaWYgbmVjZXNzYXJ5ICh3aGVuIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpc1xuICAgICBhbHJlYWR5IHNjYW5uZWQpLlxuICAgICBJZiBubyBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYW4gZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGNoZWNrZWRfcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFNhbWUgYXMgW1NjYW5uaW5nLnBlZWtfY2hhcl0gYWJvdmUgYnV0IGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgY2hhciBvclxuICAgICBmYWlsczogaW5zdGVhZCBvZiByZXR1cm5pbmcgYSBudWxsIGNoYXIgd2hlbiB0aGUgcmVhZGluZyBtZXRob2Qgb2YgdGhlXG4gICAgIGlucHV0IGJ1ZmZlciBoYXMgcmVhY2hlZCBhbiBlbmQgb2YgZmlsZSwgdGhlIGZ1bmN0aW9uIHJhaXNlcyBleGNlcHRpb25cbiAgICAgW0VuZF9vZl9maWxlXS4gKilcblxuICB2YWwgc3RvcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGNoYXIgLT4gaW50XG4gICgqIFtTY2FubmluZy5zdG9yZV9jaGFyIGxpbSBpYiBjXSBhZGRzIFtjXSB0byB0aGUgdG9rZW4gYnVmZmVyXG4gICAgIG9mIHRoZSBzY2FubmluZyBidWZmZXIgW2liXS4gSXQgYWxzbyBhZHZhbmNlcyB0aGUgc2Nhbm5pbmcgYnVmZmVyIGZvclxuICAgICBvbmUgY2hhcmFjdGVyIGFuZCByZXR1cm5zIFtsaW0gLSAxXSwgaW5kaWNhdGluZyB0aGUgbmV3IGxpbWl0IGZvciB0aGVcbiAgICAgbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuLiAqKVxuXG4gIHZhbCBza2lwX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnNraXBfY2hhciBsaW0gaWJdIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLiAqKVxuXG4gIHZhbCBpZ25vcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuaWdub3JlX2NoYXIgaWIgbGltXSBpZ25vcmVzIHRoZSBjdXJyZW50IGNoYXJhY3RlciBhbmRcbiAgICAgZGVjcmVtZW50cyB0aGUgbGltaXQuICopXG5cbiAgdmFsIHRva2VuIDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLnRva2VuIGliXSByZXR1cm5zIHRoZSBzdHJpbmcgc3RvcmVkIGludG8gdGhlIHRva2VuXG4gICAgIGJ1ZmZlciBvZiB0aGUgc2Nhbm5pbmcgYnVmZmVyOiBpdCByZXR1cm5zIHRoZSB0b2tlbiBtYXRjaGVkIGJ5IHRoZVxuICAgICBmb3JtYXQuICopXG5cbiAgdmFsIHJlc2V0X3Rva2VuIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5yZXNldF90b2tlbiBpYl0gcmVzZXRzIHRoZSB0b2tlbiBidWZmZXIgb2ZcbiAgICAgdGhlIGdpdmVuIHNjYW5uaW5nIGJ1ZmZlci4gKilcblxuICB2YWwgY2hhcl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5jaGFyX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVyc1xuICAgICByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGxpbmVfY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcubGluZV9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIG5ldyBsaW5lXG4gICAgIGNoYXJhY3RlcnMgcmVhZCBzbyBmYXIgZnJvbSB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCB0b2tlbl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy50b2tlbl9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRva2VucyByZWFkXG4gICAgIHNvIGZhciBmcm9tIFtpYl0uICopXG5cbiAgdmFsIGVvZiA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW9mIGliXSByZXR1cm5zIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGVuZF9vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgZW5kIG9mIGlucHV0IGNvbmRpdGlvblxuICAgICBvZiB0aGUgZ2l2ZW4gYnVmZmVyIChpZiBubyBjaGFyIGhhcyBldmVyIGJlZW4gcmVhZCwgYW4gYXR0ZW1wdCB0b1xuICAgICByZWFkIG9uZSBpcyBwZXJmb3JtZWQpLiAqKVxuXG4gIHZhbCBiZWdpbm5pbmdfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmJlZ2lubmluZ19vZl9pbnB1dCBpYl0gdGVzdHMgdGhlIGJlZ2lubmluZyBvZiBpbnB1dFxuICAgICBjb25kaXRpb24gb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbmFtZV9vZl9pbnB1dCA6IHNjYW5idWYgLT4gc3RyaW5nXG4gICgqIFtTY2FubmluZy5uYW1lX29mX2lucHV0IGliXSByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBjaGFyYWN0ZXJcbiAgICAgc291cmNlIGZvciBpbnB1dCBidWZmZXIgW2liXS4gKilcblxuICB2YWwgb3Blbl9pbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBvcGVuX2luX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGUgOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9maWxlX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX3N0cmluZyA6IHN0cmluZyAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2Z1bmN0aW9uIDogKHVuaXQgLT4gY2hhcikgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9jaGFubmVsIDogU3RkbGliLmluX2NoYW5uZWwgLT4gaW5fY2hhbm5lbFxuXG4gIHZhbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdFxuXG5lbmRcblxuXG5tb2R1bGUgU2Nhbm5pbmcgOiBTQ0FOTklORyA9IHN0cnVjdFxuXG4gICgqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FuZi4gKilcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbF9uYW1lID1cbiAgICB8IEZyb21fY2hhbm5lbCBvZiBTdGRsaWIuaW5fY2hhbm5lbFxuICAgIHwgRnJvbV9maWxlIG9mIGZpbGVfbmFtZSAqIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2Z1bmN0aW9uXG4gICAgfCBGcm9tX3N0cmluZ1xuXG5cbiAgdHlwZSBpbl9jaGFubmVsID0ge1xuICAgIG11dGFibGUgaWNfZW9mIDogYm9vbDtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhciA6IGNoYXI7XG4gICAgbXV0YWJsZSBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgOiBib29sO1xuICAgIG11dGFibGUgaWNfY2hhcl9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX2xpbmVfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBpY190b2tlbl9jb3VudCA6IGludDtcbiAgICBpY19nZXRfbmV4dF9jaGFyIDogdW5pdCAtPiBjaGFyO1xuICAgIGljX3Rva2VuX2J1ZmZlciA6IEJ1ZmZlci50O1xuICAgIGljX2lucHV0X25hbWUgOiBpbl9jaGFubmVsX25hbWU7XG4gIH1cblxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICBsZXQgbnVsbF9jaGFyID0gJ1xcMDAwJ1xuXG4gICgqIFJlYWRzIGEgbmV3IGNoYXJhY3RlciBmcm9tIGlucHV0IGJ1ZmZlci5cbiAgICAgTmV4dF9jaGFyIG5ldmVyIGZhaWxzLCBldmVuIGluIGNhc2Ugb2YgZW5kIG9mIGlucHV0OlxuICAgICBpdCB0aGVuIHNpbXBseSBzZXRzIHRoZSBlbmQgb2YgZmlsZSBjb25kaXRpb24uICopXG4gIGxldCBuZXh0X2NoYXIgaWIgPVxuICAgIHRyeVxuICAgICAgbGV0IGMgPSBpYi5pY19nZXRfbmV4dF9jaGFyICgpIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSB0cnVlO1xuICAgICAgaWIuaWNfY2hhcl9jb3VudCA8LSBzdWNjIGliLmljX2NoYXJfY291bnQ7XG4gICAgICBpZiBjID0gJ1xcbicgdGhlbiBpYi5pY19saW5lX2NvdW50IDwtIHN1Y2MgaWIuaWNfbGluZV9jb3VudDtcbiAgICAgIGMgd2l0aFxuICAgIHwgRW5kX29mX2ZpbGUgLT5cbiAgICAgIGxldCBjID0gbnVsbF9jaGFyIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZTtcbiAgICAgIGliLmljX2VvZiA8LSB0cnVlO1xuICAgICAgY1xuXG5cbiAgbGV0IHBlZWtfY2hhciBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jdXJyZW50X2NoYXJcbiAgICBlbHNlIG5leHRfY2hhciBpYlxuXG5cbiAgKCogUmV0dXJucyBhIHZhbGlkIGN1cnJlbnQgY2hhciBmb3IgdGhlIGlucHV0IGJ1ZmZlci4gSW4gcGFydGljdWxhclxuICAgICBubyBpcnJlbGV2YW50IG51bGwgY2hhcmFjdGVyIChhcyBzZXQgYnkgW25leHRfY2hhcl0gaW4gY2FzZSBvZiBlbmRcbiAgICAgb2YgaW5wdXQpIGlzIHJldHVybmVkLCBzaW5jZSBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuXG4gICAgIFtuZXh0X2NoYXJdIHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiB3aGlsZSB0cnlpbmcgdG8gcmVhZCBhXG4gICAgIG5ldyBjaGFyYWN0ZXIuICopXG4gIGxldCBjaGVja2VkX3BlZWtfY2hhciBpYiA9XG4gICAgbGV0IGMgPSBwZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpYi5pY19lb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZTtcbiAgICBjXG5cblxuICBsZXQgZW5kX29mX2lucHV0IGliID1cbiAgICBpZ25vcmUgKHBlZWtfY2hhciBpYik7XG4gICAgaWIuaWNfZW9mXG5cblxuICBsZXQgZW9mIGliID0gaWIuaWNfZW9mXG5cbiAgbGV0IGJlZ2lubmluZ19vZl9pbnB1dCBpYiA9IGliLmljX2NoYXJfY291bnQgPSAwXG5cbiAgbGV0IG5hbWVfb2ZfaW5wdXQgaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIF9pYyAtPiBcInVubmFtZWQgU3RkbGliIGlucHV0IGNoYW5uZWxcIlxuICAgIHwgRnJvbV9maWxlIChmbmFtZSwgX2ljKSAtPiBmbmFtZVxuICAgIHwgRnJvbV9mdW5jdGlvbiAtPiBcInVubmFtZWQgZnVuY3Rpb25cIlxuICAgIHwgRnJvbV9zdHJpbmcgLT4gXCJ1bm5hbWVkIGNoYXJhY3RlciBzdHJpbmdcIlxuXG5cbiAgbGV0IGNoYXJfY291bnQgaWIgPVxuICAgIGlmIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZFxuICAgIHRoZW4gaWIuaWNfY2hhcl9jb3VudCAtIDFcbiAgICBlbHNlIGliLmljX2NoYXJfY291bnRcblxuXG4gIGxldCBsaW5lX2NvdW50IGliID0gaWIuaWNfbGluZV9jb3VudFxuXG4gIGxldCByZXNldF90b2tlbiBpYiA9IEJ1ZmZlci5yZXNldCBpYi5pY190b2tlbl9idWZmZXJcblxuICBsZXQgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWIgPSBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gZmFsc2VcblxuICBsZXQgdG9rZW4gaWIgPVxuICAgIGxldCB0b2tlbl9idWZmZXIgPSBpYi5pY190b2tlbl9idWZmZXIgaW5cbiAgICBsZXQgdG9rID0gQnVmZmVyLmNvbnRlbnRzIHRva2VuX2J1ZmZlciBpblxuICAgIEJ1ZmZlci5jbGVhciB0b2tlbl9idWZmZXI7XG4gICAgaWIuaWNfdG9rZW5fY291bnQgPC0gc3VjYyBpYi5pY190b2tlbl9jb3VudDtcbiAgICB0b2tcblxuXG4gIGxldCB0b2tlbl9jb3VudCBpYiA9IGliLmljX3Rva2VuX2NvdW50XG5cbiAgbGV0IHNraXBfY2hhciB3aWR0aCBpYiA9XG4gICAgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7XG4gICAgd2lkdGhcblxuXG4gIGxldCBpZ25vcmVfY2hhciB3aWR0aCBpYiA9IHNraXBfY2hhciAod2lkdGggLSAxKSBpYlxuXG4gIGxldCBzdG9yZV9jaGFyIHdpZHRoIGliIGMgPVxuICAgIEJ1ZmZlci5hZGRfY2hhciBpYi5pY190b2tlbl9idWZmZXIgYztcbiAgICBpZ25vcmVfY2hhciB3aWR0aCBpYlxuXG5cbiAgbGV0IGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemUgPSAxMDI0XG5cbiAgbGV0IGNyZWF0ZSBpbmFtZSBuZXh0ID0ge1xuICAgIGljX2VvZiA9IGZhbHNlO1xuICAgIGljX2N1cnJlbnRfY2hhciA9IG51bGxfY2hhcjtcbiAgICBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPSBmYWxzZTtcbiAgICBpY19jaGFyX2NvdW50ID0gMDtcbiAgICBpY19saW5lX2NvdW50ID0gMDtcbiAgICBpY190b2tlbl9jb3VudCA9IDA7XG4gICAgaWNfZ2V0X25leHRfY2hhciA9IG5leHQ7XG4gICAgaWNfdG9rZW5fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSBkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplO1xuICAgIGljX2lucHV0X25hbWUgPSBpbmFtZTtcbiAgfVxuXG5cbiAgbGV0IGZyb21fc3RyaW5nIHMgPVxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWkgPj0gbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZVxuICAgICAgbGV0IGMgPSBzLlshaV0gaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGMgaW5cbiAgICBjcmVhdGUgRnJvbV9zdHJpbmcgbmV4dFxuXG5cbiAgbGV0IGZyb21fZnVuY3Rpb24gPSBjcmVhdGUgRnJvbV9mdW5jdGlvblxuXG4gICgqIFNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbC4gKilcblxuICAoKiBQb3NpdGlvbiBvZiB0aGUgcHJvYmxlbTpcblxuICAgICBXZSBjYW5ub3QgcHJldmVudCB0aGUgc2Nhbm5pbmcgbWVjaGFuaXNtIHRvIHVzZSBvbmUgbG9va2FoZWFkIGNoYXJhY3RlcixcbiAgICAgaWYgbmVlZGVkIGJ5IHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGZvcm1hdCBzdHJpbmcgc3BlY2lmaWNhdGlvbnMgKGUuZy4gYVxuICAgICB0cmFpbGluZyAnc2tpcCBzcGFjZScgc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9ybWF0IHN0cmluZyk7IGluIHRoaXMgY2FzZSxcbiAgICAgdGhlIG1hbmRhdG9yeSBsb29rYWhlYWQgY2hhcmFjdGVyIGlzIGluZGVlZCByZWFkIGZyb20gdGhlIGlucHV0IGFuZCBub3RcbiAgICAgdXNlZCB0byByZXR1cm4gdGhlIHRva2VuIHJlYWQuIEl0IGlzIHRodXMgbWFuZGF0b3J5IHRvIGJlIGFibGUgdG8gc3RvcmVcbiAgICAgYW4gdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgc29tZXdoZXJlIHRvIGdldCBpdCBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyXG4gICAgIG9mIHRoZSBuZXh0IHNjYW4uXG5cbiAgICAgVG8gY2lyY3VtdmVudCB0aGlzIHByb2JsZW0sIGFsbCB0aGUgc2Nhbm5pbmcgZnVuY3Rpb25zIGdldCBhIGxvdyBsZXZlbFxuICAgICBpbnB1dCBidWZmZXIgYXJndW1lbnQgd2hlcmUgdGhleSBzdG9yZSB0aGUgbG9va2FoZWFkIGNoYXJhY3RlciB3aGVuXG4gICAgIG5lZWRlZDsgYWRkaXRpb25hbGx5LCB0aGUgaW5wdXQgYnVmZmVyIGlzIHRoZSBvbmx5IHNvdXJjZSBvZiBjaGFyYWN0ZXIgb2ZcbiAgICAgYSBzY2FubmVyLiBUaGUgW3NjYW5idWZdIGlucHV0IGJ1ZmZlcnMgYXJlIGRlZmluZWQgaW4gbW9kdWxlIHshU2Nhbm5pbmd9LlxuXG4gICAgIE5vdyB3ZSB1bmRlcnN0YW5kIHRoYXQgaXQgaXMgZXh0cmVtZWx5IGltcG9ydGFudCB0aGF0IHJlbGF0ZWQgYW5kXG4gICAgIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gc2Nhbm5lcnMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgc2FtZSBpbnB1dCBidWZmZXIuXG4gICAgIEluIGVmZmVjdCwgaWYgYSBzY2FubmVyIFtzY2FuMV0gaXMgcmVhZGluZyBmcm9tIFtpYjFdIGFuZCBzdG9yZXMgYW5cbiAgICAgdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgW2MxXSBpbnRvIGl0cyBpbnB1dCBidWZmZXIgW2liMV0sIHRoZW5cbiAgICAgYW5vdGhlciBzY2FubmVyIFtzY2FuMl0gbm90IHJlYWRpbmcgZnJvbSB0aGUgc2FtZSBidWZmZXIgW2liMV0gd2lsbCBtaXNzXG4gICAgIHRoZSBjaGFyYWN0ZXIgW2MxXSwgc2VlbWluZ2x5IHZhbmlzaGVkIGluIHRoZSBhaXIgZnJvbSB0aGUgcG9pbnQgb2Ygdmlld1xuICAgICBvZiBbc2NhbjJdLlxuXG4gICAgIFRoaXMgbWVjaGFuaXNtIHdvcmtzIHBlcmZlY3RseSB0byByZWFkIGZyb20gc3RyaW5ncywgZnJvbSBmaWxlcywgYW5kIGZyb21cbiAgICAgZnVuY3Rpb25zLCBzaW5jZSBpbiB0aG9zZSBjYXNlcywgYWxsb2NhdGluZyB0d28gYnVmZmVycyByZWFkaW5nIGZyb20gdGhlXG4gICAgIHNhbWUgc291cmNlIGlzIHVubmF0dXJhbC5cblxuICAgICBTdGlsbCwgdGhlcmUgaXMgYSBkaWZmaWN1bHR5IGluIHRoZSBjYXNlIG9mIHNjYW5uaW5nIGZyb20gYW4gaW5wdXRcbiAgICAgY2hhbm5lbC4gSW4gZWZmZWN0LCB3aGVuIHNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbCBbaWNdLCB0aGlzIGNoYW5uZWxcbiAgICAgbWF5IG5vdCBoYXZlIGJlZW4gYWxsb2NhdGVkIGZyb20gd2l0aGluIHRoaXMgbGlicmFyeS4gSGVuY2UsIGl0IG1heSBiZVxuICAgICBzaGFyZWQgKHR3byBmdW5jdGlvbnMgb2YgdGhlIHVzZXIncyBwcm9ncmFtIG1heSBzdWNjZXNzaXZlbHkgcmVhZCBmcm9tXG4gICAgIFtpY10pLiBUaGlzIGlzIGhpZ2hseSBlcnJvciBwcm9uZSBzaW5jZSwgb25lIG9mIHRoZSBmdW5jdGlvbiBtYXkgc2VlayB0aGVcbiAgICAgaW5wdXQgY2hhbm5lbCwgd2hpbGUgdGhlIG90aGVyIGZ1bmN0aW9uIGhhcyBzdGlsbCBhbiB1bnVzZWQgbG9va2FoZWFkXG4gICAgIGNoYXJhY3RlciBpbiBpdHMgaW5wdXQgYnVmZmVyLiBJbiBjb25jbHVzaW9uLCB5b3Ugc2hvdWxkIG5ldmVyIG1peCBkaXJlY3RcbiAgICAgbG93IGxldmVsIHJlYWRpbmcgYW5kIGhpZ2ggbGV2ZWwgc2Nhbm5pbmcgZnJvbSB0aGUgc2FtZSBpbnB1dCBjaGFubmVsLlxuXG4gICopXG5cbiAgKCogUGVyZm9ybSBidWZmZXJpemVkIGlucHV0IHRvIGltcHJvdmUgZWZmaWNpZW5jeS4gKilcbiAgbGV0IGZpbGVfYnVmZmVyX3NpemUgPSByZWYgMTAyNFxuXG4gICgqIFRoZSBzY2FubmVyIGNsb3NlcyB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQuICopXG4gIGxldCBzY2FuX2Nsb3NlX2F0X2VuZCBpYyA9IFN0ZGxpYi5jbG9zZV9pbiBpYzsgcmFpc2UgRW5kX29mX2ZpbGVcblxuICAoKiBUaGUgc2Nhbm5lciBkb2VzIG5vdCBjbG9zZSB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IGp1c3QgcmFpc2VzIFtFbmRfb2ZfZmlsZV0uICopXG4gIGxldCBzY2FuX3JhaXNlX2F0X2VuZCBfaWMgPSByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gIGxldCBmcm9tX2ljIHNjYW5fY2xvc2VfaWMgaW5hbWUgaWMgPVxuICAgIGxldCBsZW4gPSAhZmlsZV9idWZmZXJfc2l6ZSBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsaW0gPSByZWYgMCBpblxuICAgIGxldCBlb2YgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA8ICFsaW0gdGhlbiBiZWdpbiBsZXQgYyA9IEJ5dGVzLmdldCBidWYgIWkgaW4gaW5jciBpOyBjIGVuZCBlbHNlXG4gICAgICBpZiAhZW9mIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZSBiZWdpblxuICAgICAgICBsaW0gOj0gaW5wdXQgaWMgYnVmIDAgbGVuO1xuICAgICAgICBpZiAhbGltID0gMCB0aGVuIGJlZ2luIGVvZiA6PSB0cnVlOyBzY2FuX2Nsb3NlX2ljIGljIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgaSA6PSAxO1xuICAgICAgICAgIEJ5dGVzLmdldCBidWYgMFxuICAgICAgICBlbmRcbiAgICAgIGVuZCBpblxuICAgIGNyZWF0ZSBpbmFtZSBuZXh0XG5cblxuICBsZXQgZnJvbV9pY19jbG9zZV9hdF9lbmQgPSBmcm9tX2ljIHNjYW5fY2xvc2VfYXRfZW5kXG4gIGxldCBmcm9tX2ljX3JhaXNlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcblxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS5cbiAgICAgT25lIGNvdWxkIHRyeSB0byBkZWZpbmUgW3N0ZGluXSBhcyBhIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGEgY2hhcmFjdGVyXG4gICAgIGF0IGEgdGltZSAobm8gYnVmZmVyaXphdGlvbiBhdCBhbGwpLCBidXQgdW5mb3J0dW5hdGVseSB0aGUgdG9wLWxldmVsXG4gICAgIGludGVyYWN0aW9uIHdvdWxkIGJlIHdyb25nLiBUaGlzIGlzIGR1ZSB0byBzb21lIGtpbmQgb2ZcbiAgICAgJ3JhY2UgY29uZGl0aW9uJyB3aGVuIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXSxcbiAgICAgc2luY2UgdGhlIGludGVyYWN0aXZlIGNvbXBpbGVyIGFuZCBbU2NhbmYuc2NhbmZdIHdpbGwgc2ltdWx0YW5lb3VzbHlcbiAgICAgcmVhZCB0aGUgbWF0ZXJpYWwgdGhleSBuZWVkIGZyb20gW1N0ZGxpYi5zdGRpbl07IHRoZW4sIGNvbmZ1c2lvblxuICAgICB3aWxsIHJlc3VsdCBmcm9tIHdoYXQgc2hvdWxkIGJlIHJlYWQgYnkgdGhlIHRvcC1sZXZlbCBhbmQgd2hhdCBzaG91bGQgYmVcbiAgICAgcmVhZCBieSBbU2NhbmYuc2NhbmZdLlxuICAgICBUaGlzIGlzIGV2ZW4gbW9yZSBjb21wbGljYXRlZCBieSB0aGUgb25lIGNoYXJhY3RlciBsb29rYWhlYWQgdGhhdFxuICAgICBbU2NhbmYuc2NhbmZdIGlzIHNvbWV0aW1lcyBvYmxpZ2VkIHRvIG1haW50YWluOiB0aGUgbG9va2FoZWFkIGNoYXJhY3RlclxuICAgICB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgW1NjYW5mLnNjYW5mXSBlbnRyeSwgc2VlbWluZ2x5IGNvbWluZyBmcm9tXG4gICAgIG5vd2hlcmUuXG4gICAgIEFsc28gbm8gW0VuZF9vZl9maWxlXSBpcyByYWlzZWQgd2hlbiByZWFkaW5nIGZyb20gc3RkaW46IGlmIG5vdCBlbm91Z2hcbiAgICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gcmVhZCwgd2Ugc2ltcGx5IGFzayB0byByZWFkIG1vcmUuICopXG4gIGxldCBzdGRpbiA9XG4gICAgZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuICAgICAgKEZyb21fZmlsZSAoXCItXCIsIFN0ZGxpYi5zdGRpbikpIFN0ZGxpYi5zdGRpblxuXG4gIGxldCBvcGVuX2luX2ZpbGUgb3Blbl9pbiBmbmFtZSA9XG4gICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgIHwgXCItXCIgLT4gc3RkaW5cbiAgICB8IGZuYW1lIC0+XG4gICAgICBsZXQgaWMgPSBvcGVuX2luIGZuYW1lIGluXG4gICAgICBmcm9tX2ljX2Nsb3NlX2F0X2VuZCAoRnJvbV9maWxlIChmbmFtZSwgaWMpKSBpY1xuXG5cbiAgbGV0IG9wZW5faW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5cbiAgbGV0IG9wZW5faW5fYmluID0gb3Blbl9pbl9maWxlIFN0ZGxpYi5vcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2ZpbGUgPSBvcGVuX2luXG4gIGxldCBmcm9tX2ZpbGVfYmluID0gb3Blbl9pbl9iaW5cblxuICBsZXQgZnJvbV9jaGFubmVsIGljID1cbiAgICBmcm9tX2ljX3JhaXNlX2F0X2VuZCAoRnJvbV9jaGFubmVsIGljKSBpY1xuXG5cbiAgbGV0IGNsb3NlX2luIGliID1cbiAgICBtYXRjaCBpYi5pY19pbnB1dF9uYW1lIHdpdGhcbiAgICB8IEZyb21fY2hhbm5lbCBpYyAtPlxuICAgICAgU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2ZpbGUgKF9mbmFtZSwgaWMpIC0+IFN0ZGxpYi5jbG9zZV9pbiBpY1xuICAgIHwgRnJvbV9mdW5jdGlvbiB8IEZyb21fc3RyaW5nIC0+ICgpXG5cbmVuZFxuXG5cbigqIEZvcm1hdHRlZCBpbnB1dCBmdW5jdGlvbnMuICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzY2FubmVyID1cbiAgICAgKCdhLCBTY2FubmluZy5pbl9jaGFubmVsLCAnYiwgJ2MsICdhIC0+ICdkLCAnZCkgZm9ybWF0NiAtPiAnY1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2Nhbm5lcl9vcHQgPVxuICAgICAoJ2EsIFNjYW5uaW5nLmluX2NoYW5uZWwsICdiLCAnYywgJ2EgLT4gJ2Qgb3B0aW9uLCAnZCkgZm9ybWF0NiAtPiAnY1xuXG4oKiBSZXBvcnRpbmcgZXJyb3JzLiAqKVxuZXhjZXB0aW9uIFNjYW5fZmFpbHVyZSBvZiBzdHJpbmdcblxubGV0IGJhZF9pbnB1dCBzID0gcmFpc2UgKFNjYW5fZmFpbHVyZSBzKVxuXG5sZXQgYmFkX2lucHV0X2VzY2FwZSBjID1cbiAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImlsbGVnYWwgZXNjYXBlIGNoYXJhY3RlciAlQ1wiIGMpXG5cblxubGV0IGJhZF90b2tlbl9sZW5ndGggbWVzc2FnZSA9XG4gIGJhZF9pbnB1dFxuICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgIFwic2Nhbm5pbmcgb2YgJXMgZmFpbGVkOiBcXFxuICAgICAgICB0aGUgc3BlY2lmaWVkIGxlbmd0aCB3YXMgdG9vIHNob3J0IGZvciB0b2tlblwiXG4gICAgICAgbWVzc2FnZSlcblxuXG5sZXQgYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHByZW1hdHVyZSBlbmQgb2YgZmlsZSBvY2N1cnJlZCBiZWZvcmUgZW5kIG9mIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJubyBkb3Qgb3IgZXhwb25lbnQgcGFydCBmb3VuZCBpbiBmbG9hdCB0b2tlblwiXG5cblxubGV0IGJhZF9oZXhfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJub3QgYSB2YWxpZCBmbG9hdCBpbiBoZXhhZGVjaW1hbCBub3RhdGlvblwiXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaF9lcnIgYyBjaSA9XG4gIFByaW50Zi5zcHJpbnRmIFwibG9va2luZyBmb3IgJUMsIGZvdW5kICVDXCIgYyBjaVxuXG5cbmxldCBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaSA9XG4gIGJhZF9pbnB1dCAoY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpKVxuXG5cbmxldCByZWMgc2tpcF93aGl0ZXMgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlbiBiZWdpblxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+XG4gICAgICBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgc2tpcF93aGl0ZXMgaWJcbiAgICB8IF8gLT4gKClcbiAgZW5kXG5cblxuKCogQ2hlY2tpbmcgdGhhdCBbY10gaXMgaW5kZWVkIGluIHRoZSBpbnB1dCwgdGhlbiBza2lwcyBpdC5cbiAgIEluIHRoaXMgY2FzZSwgdGhlIGNoYXJhY3RlciBbY10gaGFzIGJlZW4gZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlXG4gICBmb3JtYXQgYXMgYmVpbmcgbWFuZGF0b3J5IGluIHRoZSBpbnB1dDsgaGVuY2Ugd2Ugc2hvdWxkIGZhaWwgd2l0aFxuICAgW0VuZF9vZl9maWxlXSBpbiBjYXNlIG9mIGVuZF9vZl9pbnB1dC5cbiAgIChSZW1lbWJlciB0aGF0IFtTY2FuX2ZhaWx1cmVdIGlzIHJhaXNlZCBvbmx5IHdoZW4gKHdlIGNhbiBwcm92ZSBieVxuICAgZXZpZGVuY2UpIHRoYXQgdGhlIGlucHV0IGRvZXMgbm90IG1hdGNoIHRoZSBmb3JtYXQgc3RyaW5nIGdpdmVuLiBXZSBtdXN0XG4gICB0aHVzIGRpZmZlcmVudGlhdGUgW0VuZF9vZl9maWxlXSBhcyBhbiBlcnJvciBkdWUgdG8gbGFjayBvZiBpbnB1dCwgYW5kXG4gICBbU2Nhbl9mYWlsdXJlXSB3aGljaCBpcyBkdWUgdG8gcHJvdmFibHkgd3JvbmcgaW5wdXQuIEkgYW0gbm90IHN1cmUgdGhpcyBpc1xuICAgd29ydGggdGhlIGJ1cmRlbjogaXQgaXMgY29tcGxleCBhbmQgc29tZWhvdyBzdWJsaW1pbmFsOyBzaG91bGQgYmUgY2xlYXJlclxuICAgdG8gZmFpbCB3aXRoIFNjYW5fZmFpbHVyZSBcIk5vdCBlbm91Z2ggaW5wdXQgdG8gY29tcGxldGUgc2Nhbm5pbmdcIiEpXG5cbiAgIFRoYXQncyB3aHksIHdhaXRpbmcgZm9yIGEgYmV0dGVyIHNvbHV0aW9uLCB3ZSB1c2UgY2hlY2tlZF9wZWVrX2NoYXIgaGVyZS5cbiAgIFdlIGFyZSBhbHNvIGNhcmVmdWwgdG8gdHJlYXQgXCJcXHJcXG5cIiBpbiB0aGUgaW5wdXQgYXMgYW4gZW5kIG9mIGxpbmUgbWFya2VyOlxuICAgaXQgYWx3YXlzIG1hdGNoZXMgYSAnXFxuJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBpbnB1dCBmb3JtYXQgc3RyaW5nLiAqKVxubGV0IHJlYyBjaGVja19jaGFyIGliIGMgPVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnICcgLT4gc2tpcF93aGl0ZXMgaWJcbiAgfCAnXFxuJyAtPiBjaGVja19uZXdsaW5lIGliXG4gIHwgYyAtPiBjaGVja190aGlzX2NoYXIgaWIgY1xuXG5hbmQgY2hlY2tfdGhpc19jaGFyIGliIGMgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBjaSA9IGMgdGhlbiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiBlbHNlXG4gIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cbmFuZCBjaGVja19uZXdsaW5lIGliID1cbiAgbGV0IGNpID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggY2kgd2l0aFxuICB8ICdcXG4nIC0+IFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gIHwgJ1xccicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7IGNoZWNrX3RoaXNfY2hhciBpYiAnXFxuJ1xuICB8IF8gLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXG4nIGNpXG5cblxuKCogRXh0cmFjdGluZyB0b2tlbnMgZnJvbSB0aGUgb3V0cHV0IHRva2VuIGJ1ZmZlci4gKilcblxubGV0IHRva2VuX2NoYXIgaWIgPSAoU2Nhbm5pbmcudG9rZW4gaWIpLlswXVxuXG5sZXQgdG9rZW5fc3RyaW5nID0gU2Nhbm5pbmcudG9rZW5cblxubGV0IHRva2VuX2Jvb2wgaWIgPVxuICBtYXRjaCBTY2FubmluZy50b2tlbiBpYiB3aXRoXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IHMgLT4gYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImludmFsaWQgYm9vbGVhbiAnJXMnXCIgcylcblxuXG4oKiBUaGUgdHlwZSBvZiBpbnRlZ2VyIGNvbnZlcnNpb25zLiAqKVxudHlwZSBpbnRlZ2VyX2NvbnZlcnNpb24gPVxuICB8IEJfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBiaW5hcnkgY29udmVyc2lvbiAqKVxuICB8IERfY29udmVyc2lvbiAoKiBTaWduZWQgZGVjaW1hbCBjb252ZXJzaW9uICopXG4gIHwgSV9jb252ZXJzaW9uICgqIFNpZ25lZCBpbnRlZ2VyIGNvbnZlcnNpb24gKilcbiAgfCBPX2NvbnZlcnNpb24gKCogVW5zaWduZWQgb2N0YWwgY29udmVyc2lvbiAqKVxuICB8IFVfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBYX2NvbnZlcnNpb24gKCogVW5zaWduZWQgaGV4YWRlY2ltYWwgY29udmVyc2lvbiAqKVxuXG5cbmxldCBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciA9IGZ1bmN0aW9uXG4gIHwgJ2InIC0+IEJfY29udmVyc2lvblxuICB8ICdkJyAtPiBEX2NvbnZlcnNpb25cbiAgfCAnaScgLT4gSV9jb252ZXJzaW9uXG4gIHwgJ28nIC0+IE9fY29udmVyc2lvblxuICB8ICd1JyAtPiBVX2NvbnZlcnNpb25cbiAgfCAneCcgfCAnWCcgLT4gWF9jb252ZXJzaW9uXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuXG4oKiBFeHRyYWN0IGFuIGludGVnZXIgbGl0ZXJhbCB0b2tlbi5cbiAgIFNpbmNlIHRoZSBmdW5jdGlvbnMgU3RkbGliLippbnQqX29mX3N0cmluZyBkbyBub3QgYWNjZXB0IGEgbGVhZGluZyArLFxuICAgd2Ugc2tpcCBpdCBpZiBuZWNlc3NhcnkuICopXG5sZXQgdG9rZW5faW50X2xpdGVyYWwgY29udiBpYiA9XG4gIGxldCB0b2sgPVxuICAgIG1hdGNoIGNvbnYgd2l0aFxuICAgIHwgRF9jb252ZXJzaW9uIHwgSV9jb252ZXJzaW9uIC0+IFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBVX2NvbnZlcnNpb24gLT4gXCIwdVwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IE9fY29udmVyc2lvbiAtPiBcIjBvXCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgWF9jb252ZXJzaW9uIC0+IFwiMHhcIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBCX2NvbnZlcnNpb24gLT4gXCIwYlwiIF4gU2Nhbm5pbmcudG9rZW4gaWIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHRvayBpblxuICBpZiBsID0gMCB8fCB0b2suWzBdIDw+ICcrJyB0aGVuIHRvayBlbHNlIFN0cmluZy5zdWIgdG9rIDEgKGwgLSAxKVxuXG5cbigqIEFsbCB0aGUgZnVuY3Rpb25zIHRoYXQgY29udmVydCBhIHN0cmluZyB0byBhIG51bWJlciByYWlzZSB0aGUgZXhjZXB0aW9uXG4gICBGYWlsdXJlIHdoZW4gdGhlIGNvbnZlcnNpb24gaXMgbm90IHBvc3NpYmxlLlxuICAgVGhpcyBleGNlcHRpb24gaXMgdGhlbiB0cmFwcGVkIGluIFtrc2NhbmZdLiAqKVxubGV0IHRva2VuX2ludCBjb252IGliID0gaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcblxubGV0IHRva2VuX2Zsb2F0IGliID0gZmxvYXRfb2Zfc3RyaW5nIChTY2FubmluZy50b2tlbiBpYilcblxuKCogVG8gc2NhbiBuYXRpdmUgaW50cywgaW50MzIgYW5kIGludDY0IGludGVnZXJzLlxuICAgV2UgY2Fubm90IGFjY2VzcyB0byBjb252ZXJzaW9ucyB0by9mcm9tIHN0cmluZ3MgZm9yIHRob3NlIHR5cGVzLFxuICAgTmF0aXZlaW50Lm9mX3N0cmluZywgSW50MzIub2Zfc3RyaW5nLCBhbmQgSW50NjQub2Zfc3RyaW5nLFxuICAgc2luY2UgdGhvc2UgbW9kdWxlcyBhcmUgbm90IGF2YWlsYWJsZSB0byBbU2NhbmZdLlxuICAgSG93ZXZlciwgd2UgY2FuIGJpbmQgYW5kIHVzZSB0aGUgY29ycmVzcG9uZGluZyBwcmltaXRpdmVzIHRoYXQgYXJlXG4gICBhdmFpbGFibGUgaW4gdGhlIHJ1bnRpbWUuICopXG5leHRlcm5hbCBuYXRpdmVpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50MzJfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIGludDY0X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5cbmxldCB0b2tlbl9uYXRpdmVpbnQgY29udiBpYiA9IG5hdGl2ZWludF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5sZXQgdG9rZW5faW50MzIgY29udiBpYiA9IGludDMyX29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQ2NCBjb252IGliID0gaW50NjRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG4oKiBTY2FubmluZyBudW1iZXJzLiAqKVxuXG4oKiBEaWdpdHMgc2Nhbm5pbmcgZnVuY3Rpb25zIHN1cHBvc2UgdGhhdCBvbmUgY2hhcmFjdGVyIGhhcyBiZWVuIGNoZWNrZWQgYW5kXG4gICBpcyBhdmFpbGFibGUsIHNpbmNlIHRoZXkgcmV0dXJuIGF0IGVuZCBvZiBmaWxlIHdpdGggdGhlIGN1cnJlbnRseSBmb3VuZFxuICAgdG9rZW4gc2VsZWN0ZWQuXG5cbiAgIFB1dCBpdCBpbiBhbm90aGVyIHdheSwgdGhlIGRpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc2NhbiBmb3IgYSBwb3NzaWJseVxuICAgZW1wdHkgc2VxdWVuY2Ugb2YgZGlnaXRzLCAoaGVuY2UsIGEgc3VjY2Vzc2Z1bCBzY2FubmluZyBmcm9tIG9uZSBvZiB0aG9zZVxuICAgZnVuY3Rpb25zIGRvZXMgbm90IGltcGx5IHRoYXQgdGhlIHRva2VuIGlzIGEgd2VsbC1mb3JtZWQgbnVtYmVyOiB0byBnZXQgYVxuICAgdHJ1ZSBudW1iZXIsIGl0IGlzIG1hbmRhdG9yeSB0byBjaGVjayB0aGF0IGF0IGxlYXN0IG9uZSB2YWxpZCBkaWdpdCBpc1xuICAgYXZhaWxhYmxlIGJlZm9yZSBjYWxsaW5nIG9uZSBvZiB0aGUgZGlnaXQgc2Nhbm5pbmcgZnVuY3Rpb25zKS4gKilcblxuKCogVGhlIGRlY2ltYWwgY2FzZSBpcyB0cmVhdGVkIGVzcGVjaWFsbHkgZm9yIG9wdGltaXphdGlvbiBwdXJwb3Nlcy4gKilcbmxldCByZWMgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCAnXycgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYiBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkZWNpbWFsIGRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBjIC0+XG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSBkZWNpbWFsIGRpZ2l0XCIgYylcblxuXG4oKiBUbyBzY2FuIG51bWJlcnMgZnJvbSBvdGhlciBiYXNlcywgd2UgdXNlIGEgcHJlZGljYXRlIGFyZ3VtZW50IHRvXG4gICBzY2FuIGRpZ2l0cy4gKilcbmxldCBzY2FuX2RpZ2l0X3N0YXIgZGlnaXRwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBzY2FuX2RpZ2l0cyB3aWR0aCBpYiA9XG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgYyB3aGVuIGRpZ2l0cCBjIC0+XG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCAnXycgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuICAgIHwgXyAtPiB3aWR0aCBpblxuICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2RpZ2l0X3BsdXMgYmFzaXMgZGlnaXRwIHdpZHRoIGliID1cbiAgKCogRW5zdXJlIHdlIGhhdmUgZ290IGVub3VnaCB3aWR0aCBsZWZ0LFxuICAgICBhbmQgcmVhZCBhdCBsZWFzdCBvbmUgZGlnaXQuICopXG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkaWdpdHNcIiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgaWYgZGlnaXRwIGMgdGhlblxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWJcbiAgZWxzZVxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJjaGFyYWN0ZXIgJUMgaXMgbm90IGEgdmFsaWQgJXMgZGlnaXRcIiBjIGJhc2lzKVxuXG5cbmxldCBpc19iaW5hcnlfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnMScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9iaW5hcnlfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiYmluYXJ5XCIgaXNfYmluYXJ5X2RpZ2l0XG5cbmxldCBpc19vY3RhbF9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc3JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX29jdGFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcIm9jdGFsXCIgaXNfb2N0YWxfZGlnaXRcblxubGV0IGlzX2hleGFfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2hleGFkZWNpbWFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcImhleGFkZWNpbWFsXCIgaXNfaGV4YV9kaWdpdFxuXG4oKiBTY2FuIGEgZGVjaW1hbCBpbnRlZ2VyLiAqKVxubGV0IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgPSBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1c1xuXG5sZXQgc2Nhbl9zaWduIHdpZHRoIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnKycgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgJy0nIC0+IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgY1xuICB8IF8gLT4gd2lkdGhcblxuXG5sZXQgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2NhbiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHRoYXQgY291bGQgYmUgZ2l2ZW4gaW4gYW55IChjb21tb24pIGJhc2lzLlxuICAgSWYgZGlnaXRzIGFyZSBwcmVmaXhlZCBieSBvbmUgb2YgMHgsIDBYLCAwbywgb3IgMGIsIHRoZSBudW1iZXIgaXNcbiAgIGFzc3VtZWQgdG8gYmUgd3JpdHRlbiByZXNwZWN0aXZlbHkgaW4gaGV4YWRlY2ltYWwsIGhleGFkZWNpbWFsLFxuICAgb2N0YWwsIG9yIGJpbmFyeS4gKilcbmxldCBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICBiZWdpbiBtYXRjaCBjIHdpdGhcbiAgICB8ICd4JyB8ICdYJyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgJ28nIC0+IHNjYW5fb2N0YWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnYicgLT4gc2Nhbl9iaW5hcnlfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCBfIC0+IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGVuZFxuICB8IF8gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2ludF9jb252ZXJzaW9uIGNvbnYgd2lkdGggaWIgPVxuICBtYXRjaCBjb252IHdpdGhcbiAgfCBCX2NvbnZlcnNpb24gLT4gc2Nhbl9iaW5hcnlfaW50IHdpZHRoIGliXG4gIHwgRF9jb252ZXJzaW9uIC0+IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgfCBJX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9pbnQgd2lkdGggaWJcbiAgfCBPX2NvbnZlcnNpb24gLT4gc2Nhbl9vY3RhbF9pbnQgd2lkdGggaWJcbiAgfCBVX2NvbnZlcnNpb24gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IFhfY29udmVyc2lvbiAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbigqIFNjYW5uaW5nIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICopXG5cbigqIEZyYWN0aW9uYWwgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9mcmFjdGlvbmFsX3BhcnQgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogRXhwIHBhcnQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZWR1Y2VkIHRvIDAgZGlnaXRzLiAqKVxubGV0IHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnZScgfCAnRScgYXMgYyAtPlxuICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogU2NhbiB0aGUgaW50ZWdlciBwYXJ0IG9mIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCAobm90IHVzaW5nIHRoZVxuICAgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uIHNpbmNlIHRoZSBpbnRlZ2VyIHBhcnQgY2FuIGJlIGVtcHR5KTpcbiAgIGFuIG9wdGlvbmFsIHNpZ24sIGZvbGxvd2VkIGJ5IGEgcG9zc2libHkgZW1wdHkgc2VxdWVuY2Ugb2YgZGVjaW1hbFxuICAgZGlnaXRzIChlLmcuIC0uMSkuICopXG5sZXQgc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcblxuXG4oKlxuICAgRm9yIHRoZSB0aW1lIGJlaW5nIHdlIGhhdmUgKGFzIGZvdW5kIGluIHNjYW5mLm1saSk6XG4gICB0aGUgZmllbGQgd2lkdGggaXMgY29tcG9zZWQgb2YgYW4gb3B0aW9uYWwgaW50ZWdlciBsaXRlcmFsXG4gICBpbmRpY2F0aW5nIHRoZSBtYXhpbWFsIHdpZHRoIG9mIHRoZSB0b2tlbiB0byByZWFkLlxuICAgVW5mb3J0dW5hdGVseSwgdGhlIHR5cGUtY2hlY2tlciBsZXQgdGhlIHVzZXIgd3JpdGUgYW4gb3B0aW9uYWwgcHJlY2lzaW9uLFxuICAgc2luY2UgdGhpcyBpcyB2YWxpZCBmb3IgcHJpbnRmIGZvcm1hdCBzdHJpbmdzLlxuXG4gICBUaHVzLCB0aGUgbmV4dCBzdGVwIGZvciBTY2FuZiBpcyB0byBzdXBwb3J0IGEgZnVsbCB3aWR0aCBhbmQgcHJlY2lzaW9uXG4gICBpbmRpY2F0aW9uLCBtb3JlIG9yIGxlc3Mgc2ltaWxhciB0byB0aGUgb25lIGZvciBwcmludGYsIHBvc3NpYmx5IGV4dGVuZGVkXG4gICB0byB0aGUgc3BlY2lmaWNhdGlvbiBvZiBhIFttYXgsIG1pbl0gcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZFxuICAgZm9yIHN0cmluZ3MuIFNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgc3BlYyBmb3Igc2NhbmYubWxpOlxuXG4gICBUaGUgb3B0aW9uYWwgW3dpZHRoXSBpcyBhbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIG1heGltYWxcbiAgIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLiBGb3IgaW5zdGFuY2UsIFslNmRdIHJlYWRzIGFuIGludGVnZXIsXG4gICBoYXZpbmcgYXQgbW9zdCA2IGNoYXJhY3RlcnMuXG5cbiAgIFRoZSBvcHRpb25hbCBbcHJlY2lzaW9uXSBpcyBhIGRvdCBbLl0gZm9sbG93ZWQgYnkgYW4gaW50ZWdlcjpcblxuICAgLSBpbiB0aGUgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGNvbnZlcnNpb25zIChbJWZdLCBbJWVdLCBbJWddLCBbJUZdLCBbJUVdLFxuICAgYW5kIFslRl0gY29udmVyc2lvbnMsIHRoZSBbcHJlY2lzaW9uXSBpbmRpY2F0ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mXG4gICBkaWdpdHMgdGhhdCBtYXkgZm9sbG93IHRoZSBkZWNpbWFsIHBvaW50LiBGb3IgaW5zdGFuY2UsIFslLjRmXSByZWFkcyBhXG4gICBbZmxvYXRdIHdpdGggYXQgbW9zdCA0IGZyYWN0aW9uYWwgZGlnaXRzLFxuXG4gICAtIGluIHRoZSBzdHJpbmcgY29udmVyc2lvbnMgKFslc10sIFslU10sIFslXFxbIHJhbmdlIFxcXV0pLCBhbmQgaW4gdGhlXG4gICBpbnRlZ2VyIG51bWJlciBjb252ZXJzaW9ucyAoWyVpXSwgWyVkXSwgWyV1XSwgWyV4XSwgWyVvXSwgYW5kIHRoZWlyXG4gICBbaW50MzJdLCBbaW50NjRdLCBhbmQgW25hdGl2ZV9pbnRdIGNvcnJlc3BvbmRlbnQpLCB0aGUgW3ByZWNpc2lvbl1cbiAgIGluZGljYXRlcyB0aGUgcmVxdWlyZWQgbWluaW11bSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZCxcblxuICAgLSBvbiBhbGwgb3RoZXIgY29udmVyc2lvbnMsIHRoZSB3aWR0aCBhbmQgcHJlY2lzaW9uIHNwZWNpZnkgdGhlIFttYXgsIG1pbl1cbiAgIHJhbmdlIGZvciB0aGUgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuXG4qKVxubGV0IHNjYW5fZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoLCBwcmVjaXNpb24gZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnLicgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICBsZXQgd2lkdGggPSB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIpIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cbiAgfCBfIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cblxuXG5sZXQgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgZXJyb3Igc3RyID1cbiAgbGV0IGxvd2VyY2FzZSBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICdBJyAuLiAnWicgLT5cbiAgICAgIGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgaW50X29mX2NoYXIgJ2EnKVxuICAgIHwgXyAtPiBjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGggPSByZWYgd2lkdGggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIGxvd2VyY2FzZSBjIDw+IGxvd2VyY2FzZSBzdHIuW2ldIHRoZW4gZXJyb3IgKCk7XG4gICAgaWYgIXdpZHRoID0gMCB0aGVuIGVycm9yICgpO1xuICAgIHdpZHRoIDo9IFNjYW5uaW5nLnN0b3JlX2NoYXIgIXdpZHRoIGliIGM7XG4gIGRvbmU7XG4gICF3aWR0aFxuXG5cbmxldCBzY2FuX2hleF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBsZXQgd2lkdGggPSBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwieFwiIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICAgIClcbiAgICAgICAgICB8IF8gLT4gd2lkdGggaW5cbiAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgICAgfCBfIC0+IHdpZHRoXG4gIClcbiAgfCAnbicgfCAnTicgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJhblwiXG4gIHwgJ2knIHwgJ0knIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwibmZpbml0eVwiXG4gIHwgXyAtPiBiYWRfaGV4X2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICgqIFRoZSBlZmZlY3RpdmUgd2lkdGggYXZhaWxhYmxlIGZvciBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IGlzXG4gICAgICAgdGhlIG1pbmltdW0gb2YgZGVjbGFyZWQgcHJlY2lzaW9uIGFuZCB3aWR0aCBsZWZ0LiAqKVxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICgqIEFmdGVyIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgd2l0aCBbcHJlY2lzaW9uXSBwcm92aXNpb25hbCB3aWR0aCxcbiAgICAgICBbd2lkdGhfcHJlY2lzaW9uXSBpcyBsZWZ0LiAqKVxuICAgIGxldCB3aWR0aF9wcmVjaXNpb24gPSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIgaW5cbiAgICAoKiBIZW5jZSwgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB0b29rIGV4YWN0bHlcbiAgICAgICBbcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uXSBjaGFycy4gKilcbiAgICBsZXQgZnJhY193aWR0aCA9IHByZWNpc2lvbiAtIHdpZHRoX3ByZWNpc2lvbiBpblxuICAgICgqIEFuZCBuZXcgcHJvdmlzaW9uYWwgd2lkdGggaXMgW3dpZHRoIC0gd2lkdGhfcHJlY2lzaW9uLiAqKVxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gZnJhY193aWR0aCBpblxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8ICdlJyB8ICdFJyAtPlxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8IF8gLT4gYmFkX2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPiAoXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIGFzIGMgLT4gKFxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgICAgbGV0IHdpZHRoID0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWIgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgIHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5faGV4YWRlY2ltYWxfaW50IHByZWNpc2lvbiBpYilcbiAgICAgICAgKVxuICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gYmFkX2Zsb2F0ICgpIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICdwJyB8ICdQJyBhcyBjIC0+XG4gICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICAgICAgICB8IF8gLT4gd2lkdGhcbiAgICApXG4gICAgfCBfIC0+XG4gICAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbiAgKVxuICB8ICcxJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliXG4oKiBTcGVjaWFsIGNhc2Ugb2YgbmFuIGFuZCBpbmZpbml0eTpcbiAgfCAnaScgLT5cbiAgfCAnbicgLT5cbiopXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG4oKiBTY2FuIGEgcmVndWxhciBzdHJpbmc6XG4gICBzdG9wcyB3aGVuIGVuY291bnRlcmluZyBhIHNwYWNlLCBpZiBubyBzY2FubmluZyBpbmRpY2F0aW9uIGhhcyBiZWVuIGdpdmVuO1xuICAgb3RoZXJ3aXNlLCBzdG9wcyB3aGVuIGVuY291bnRlcmluZyB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc2Nhbm5pbmdcbiAgIGluZGljYXRpb24gW3N0cF0uXG4gICBJdCBhbHNvIHN0b3BzIGF0IGVuZCBvZiBmaWxlIG9yIHdoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgaGFzXG4gICBiZWVuIHJlYWQuICopXG5sZXQgc2Nhbl9zdHJpbmcgc3RwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBsb29wIHdpZHRoID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICBtYXRjaCBzdHAgd2l0aFxuICAgICAgfCBTb21lIGMnIHdoZW4gYyA9IGMnIC0+IFNjYW5uaW5nLnNraXBfY2hhciB3aWR0aCBpYlxuICAgICAgfCBTb21lIF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpblxuICBsb29wIHdpZHRoXG5cblxuKCogU2NhbiBhIGNoYXI6IHBlZWsgc3RyaWN0bHkgb25lIGNoYXJhY3RlciBpbiB0aGUgaW5wdXQsIHdoYXRzb2V2ZXIuICopXG5sZXQgc2Nhbl9jaGFyIHdpZHRoIGliID1cbiAgKCogVGhlIGNhc2Ugd2lkdGggPSAwIGNvdWxkIG5vdCBoYXBwZW4gaGVyZSwgc2luY2UgaXQgaXMgdGVzdGVkIGJlZm9yZVxuICAgICBjYWxsaW5nIHNjYW5fY2hhciwgaW4gdGhlIG1haW4gc2Nhbm5pbmcgZnVuY3Rpb24uXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImEgY2hhcmFjdGVyXCIgZWxzZSAqKVxuICBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIChTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYilcblxuXG5sZXQgY2hhcl9mb3JfYmFja3NsYXNoID0gZnVuY3Rpb25cbiAgfCAnbicgLT4gJ1xcMDEwJ1xuICB8ICdyJyAtPiAnXFwwMTMnXG4gIHwgJ2InIC0+ICdcXDAwOCdcbiAgfCAndCcgLT4gJ1xcMDA5J1xuICB8IGMgLT4gY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYyA9IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcblxubGV0IGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxMDAgKiBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzAgK1xuICAgICAxMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICAgZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICBcImJhZCBjaGFyYWN0ZXIgZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlYyVjXCIgYzAgYzEgYzIpIGVsc2VcbiAgY2hhcl9vZl9pbnQgY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBoZXhhZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuICopXG5sZXQgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID1cbiAgbGV0IGQgPSBpbnRfb2ZfY2hhciBjIGluXG4gICgqIENvdWxkIGFsc28gYmU6XG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnOScgdGhlbiBkIC0gaW50X29mX2NoYXIgJzAnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdGJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdBJyBlbHNlXG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnZicgdGhlbiAxMCArIGQgLSBpbnRfb2ZfY2hhciAnYScgZWxzZSBhc3NlcnQgZmFsc2VcbiAgKilcbiAgaWYgZCA+PSBpbnRfb2ZfY2hhciAnYScgdGhlblxuICAgIGQgLSA4NyAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKikgZWxzZVxuICBpZiBkID49IGludF9vZl9jaGFyICdBJyB0aGVuXG4gICAgZCAtIDU1ICAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKikgZWxzZVxuICAgIGQgLSBpbnRfb2ZfY2hhciAnMCdcblxuXG5sZXQgY2hhcl9mb3JfaGV4YWRlY2ltYWxfY29kZSBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxNiAqIGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzEgK1xuICAgICAgICAgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMiBpblxuICBpZiBjIDwgMCB8fCBjID4gMjU1IHRoZW5cbiAgICBiYWRfaW5wdXRcbiAgICAgIChQcmludGYuc3ByaW50ZiBcImJhZCBjaGFyYWN0ZXIgaGV4YWRlY2ltYWwgZW5jb2RpbmcgXFxcXCVjJWNcIiBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogQ2FsbGVkIGluIHBhcnRpY3VsYXIgd2hlbiBlbmNvdW50ZXJpbmcgJ1xcXFwnIGFzIHN0YXJ0ZXIgb2YgYSBjaGFyLlxuICAgU3RvcHMgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nICdcXCcnLiAqKVxubGV0IGNoZWNrX25leHRfY2hhciBtZXNzYWdlIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlIGVsc2VcbiAgY1xuXG5cbmxldCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgPSBjaGVja19uZXh0X2NoYXIgXCJhIENoYXJcIlxubGV0IGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nID0gY2hlY2tfbmV4dF9jaGFyIFwiYSBTdHJpbmdcIlxuXG5sZXQgc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYiA9XG4gIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gIHwgJ1xcXFwnIHwgJ1xcJycgfCAnXFxcIicgfCAnbicgfCAndCcgfCAnYicgfCAncicgYXMgYyAtPlxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKGNoYXJfZm9yX2JhY2tzbGFzaCBjKVxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCBnZXRfZGlnaXQgKCkgPVxuICAgICAgbGV0IGMgPSBTY2FubmluZy5uZXh0X2NoYXIgaWIgaW5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMCA9IGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9kZWNpbWFsX2NvZGUgYzAgYzEgYzIpXG4gIHwgJ3gnIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyBhcyBjIC0+IGNcbiAgICAgIHwgYyAtPiBiYWRfaW5wdXRfZXNjYXBlIGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyKVxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXRfZXNjYXBlIGNcblxuXG4oKiBTY2FuIGEgY2hhcmFjdGVyIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX2NoYXIgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcJycgLT4gZmluZF9jaGFyIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXCcnIGNcblxuICBhbmQgZmluZF9jaGFyIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXFwnIC0+XG4gICAgICBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKSBpYilcbiAgICB8IGMgLT5cbiAgICAgIGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgYyBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgZGVsaW1pdGVkIHN0cmluZyAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFxcIicgY1xuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXFwiJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgJ1xcXFwnIC0+IHNjYW5fYmFja3NsYXNoIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIHNjYW5fYmFja3NsYXNoIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxyJyAtPiBza2lwX25ld2xpbmUgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgd2lkdGggaWIpXG5cbiAgYW5kIHNraXBfbmV3bGluZSB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgJ1xccicpXG5cbiAgYW5kIHNraXBfc3BhY2VzIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnICcgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3Agd2lkdGggaW5cblxuICBmaW5kX3N0YXJ0IHdpZHRoXG5cblxuKCogU2NhbiBhIGJvb2xlYW4gKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2Jvb2wgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGxldCBtID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICd0JyAtPiA0XG4gICAgfCAnZicgLT4gNVxuICAgIHwgYyAtPlxuICAgICAgYmFkX2lucHV0XG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcInRoZSBjaGFyYWN0ZXIgJUMgY2Fubm90IHN0YXJ0IGEgYm9vbGVhblwiIGMpIGluXG4gIHNjYW5fc3RyaW5nIE5vbmUgbSBpYlxuXG5cbigqIFNjYW4gYSBzdHJpbmcgY29udGFpbmluZyBlbGVtZW50cyBpbiBjaGFyX3NldCBhbmQgdGVybWluYXRlZCBieSBzY2FuX2luZGljXG4gICBpZiBwcm92aWRlZC4gKilcbmxldCBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IHNjYW5faW5kaWMgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fY2hhcnMgaSBzdHAgPVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgaSA+IDAgJiYgbm90IChTY2FubmluZy5lb2YgaWIpICYmXG4gICAgICAgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyAmJlxuICAgICAgIGludF9vZl9jaGFyIGMgPD4gc3RwIHRoZW5cbiAgICAgIGxldCBfID0gU2Nhbm5pbmcuc3RvcmVfY2hhciBtYXhfaW50IGliIGMgaW5cbiAgICAgIHNjYW5fY2hhcnMgKGkgLSAxKSBzdHAgaW5cbiAgbWF0Y2ggc2Nhbl9pbmRpYyB3aXRoXG4gIHwgTm9uZSAtPiBzY2FuX2NoYXJzIHdpZHRoICgtMSk7XG4gIHwgU29tZSBjIC0+XG4gICAgc2Nhbl9jaGFycyB3aWR0aCAoaW50X29mX2NoYXIgYyk7XG4gICAgaWYgbm90IChTY2FubmluZy5lb2YgaWIpIHRoZW5cbiAgICAgIGxldCBjaSA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgICAgaWYgYyA9IGNpXG4gICAgICB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gICAgICBlbHNlIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cblxuKCogVGhlIGdsb2JhbCBlcnJvciByZXBvcnQgZnVuY3Rpb24gZm9yIFtTY2FuZl0uICopXG5sZXQgc2NhbmZfYmFkX2lucHV0IGliID0gZnVuY3Rpb25cbiAgfCBTY2FuX2ZhaWx1cmUgcyB8IEZhaWx1cmUgcyAtPlxuICAgIGxldCBpID0gU2Nhbm5pbmcuY2hhcl9jb3VudCBpYiBpblxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJzY2FuZjogYmFkIGlucHV0IGF0IGNoYXIgbnVtYmVyICVpOiAlc1wiIGkgcylcbiAgfCB4IC0+IHJhaXNlIHhcblxuXG4oKiBHZXQgdGhlIGNvbnRlbnQgb2YgYSBjb3VudGVyIGZyb20gYW4gaW5wdXQgYnVmZmVyLiAqKVxubGV0IGdldF9jb3VudGVyIGliIGNvdW50ZXIgPVxuICBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgLT4gU2Nhbm5pbmcubGluZV9jb3VudCBpYlxuICB8IENoYXJfY291bnRlciAtPiBTY2FubmluZy5jaGFyX2NvdW50IGliXG4gIHwgVG9rZW5fY291bnRlciAtPiBTY2FubmluZy50b2tlbl9jb3VudCBpYlxuXG5cbigqIENvbXB1dGUgdGhlIHdpZHRoIG9mIGEgcGFkZGluZyBvcHRpb24gKHNlZSBcIiU0MntcIiBhbmQgXCIlMTIzKFwiKS4gKilcbmxldCB3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IG1heF9pbnRcbiAgfCBTb21lIHdpZHRoIC0+IHdpZHRoXG5cblxubGV0IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nID1cbiAgaWYgZm10aW5nID0gRXNjYXBlZF9wZXJjZW50IHRoZW4gJyUnLCBcIlwiIGVsc2VcbiAgICBsZXQgc3RyID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZyBpblxuICAgIGxldCBzdHAgPSBzdHIuWzFdIGluXG4gICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciAyIChTdHJpbmcubGVuZ3RoIHN0ciAtIDIpIGluXG4gICAgc3RwLCBzdWJfc3RyXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFJlYWRlciBtYW5hZ2VtZW50ICopXG5cbigqIEEgY2FsbCB0byB0YWtlX2Zvcm1hdF9yZWFkZXJzIG9uIGEgZm9ybWF0IGlzIGV2YWx1YXRlZCBpbnRvIGZ1bmN0aW9uc1xuICAgdGFraW5nIHJlYWRlcnMgYXMgYXJndW1lbnRzIGFuZCBhZ2dyZWdhdGUgdGhlbSBpbnRvIGFuIGhldGVyb2dlbmVvdXMgbGlzdCAqKVxuKCogV2hlbiBhbGwgcmVhZGVycyBhcmUgdGFrZW4sIGZpbmFsbHkgcGFzcyB0aGUgbGlzdCBvZiB0aGUgcmVhZGVycyB0byB0aGVcbiAgIGNvbnRpbnVhdGlvbiBrLiAqKVxubGV0IHJlYyB0YWtlX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgZCA9XG5mdW4gayBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdFxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9jaGFyIHJlc3QgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENhbWxfc3RyaW5nIChfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQzMiAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IE5hdGl2ZWludCAoXywgXywgXywgcmVzdCkgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50NjQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGbG9hdCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEJvb2wgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQWxwaGEgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEN1c3RvbSAoXywgXywgcmVzdCkgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSwgcmVzdCkgLT5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdCBmbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgICAgLT5cbiAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKSByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgICAgICAgLT4gdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIGsgaWduIHJlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgICAgICAgIC0+IGsgTmlsXG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGZtdHR5IGNvbWluZyBmcm9tIGEgRm9ybWF0X3N1YnN0IFwiJSguLi4lKVwiLiAqKVxuYW5kIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIHggeSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgeCwgeSkgZm10dHkgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFJlYWRlcl90eSBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgQ2hhcl90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGb3JtYXRfYXJnX3R5IChfLCByZXN0KSAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGlnbm9yZWQgcGFyYW1ldGVyLiAqKVxuYW5kIHRha2VfaWdub3JlZF9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBpZ25vcmVkIC0+XG4gICAgICAoeSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgeCwgZSwgZikgZm10IC0+IGQgPVxuZnVuIGsgaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10XG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgZm10dHkgZm10XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgc2Nhbm5pbmcgKilcblxuKCogTWFrZSBhIGdlbmVyaWMgc2Nhbm5pbmcgZnVuY3Rpb24uICopXG4oKiBTY2FuIGEgc3RyZWFtIGFjY29yZGluZyB0byBhIGZvcm1hdCBhbmQgcmVhZGVycyBvYnRhaW5lZCBieVxuICAgdGFrZV9mb3JtYXRfcmVhZGVycywgYW5kIGFnZ3JlZ2F0ZSBzY2FubmVkIHZhbHVlcyBpbnRvIGFuXG4gICBoZXRlcm9nZW5lb3VzIGxpc3QuICopXG4oKiBSZXR1cm4gdGhlIGhldGVyb2dlbmVvdXMgbGlzdCBvZiBzY2FubmVkIHZhbHVlcy4gKilcbmxldCByZWMgbWFrZV9zY2FuZiA6IHR5cGUgYSBjIGQgZSBmLlxuICAgIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKGQsIGUpIGhldGVyX2xpc3QgLT4gKGEsIGYpIGhldGVyX2xpc3QgPVxuZnVuIGliIGZtdCByZWFkZXJzIC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NoYXIgMCBpYiBpblxuICAgIGxldCBjID0gdG9rZW5fY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSBzdHApIHdpZHRoIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiBzdHJfcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICd7Jykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpKSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSAnWycpIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhblxuICAgICAgICAgICAgICAgICAgIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyBOb25lIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcblxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50IGMpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludDMyIGMpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9uYXRpdmVpbnQgYylcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50NjQgYylcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9GIHwgRmxvYXRfQ0YpKSwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2NhbWxfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRykpLFxuICAgICAgICAgICBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9oIHwgRmxvYXRfSCkpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5faGV4X2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIF8gXyBpYiA9IHNjYW5fYm9vbCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fYm9vbFxuICB8IEFscGhhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJWFcXFwiXCJcbiAgfCBUaGV0YSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiV0XFxcIlwiXG4gIHwgQ3VzdG9tIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJT9cXFwiIChjdXN0b20gY29udmVydGVyKVwiXG4gIHwgUmVhZGVyIGZtdF9yZXN0IC0+XG4gICAgYmVnaW4gbWF0Y2ggcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkgLT5cbiAgICAgICAgbGV0IHggPSByZWFkZXIgaWIgaW5cbiAgICAgICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXRfcmVzdCByZWFkZXJzX3Jlc3QpXG4gICAgfCBOaWwgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJzY2FuZjogbWlzc2luZyByZWFkZXJcIlxuICAgIGVuZFxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBpZiBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICAgIGVsc2UgYmFkX2lucHV0IFwiZW5kIG9mIGlucHV0IG5vdCBmb3VuZFwiXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSBzdHI7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliIGNocjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuXG4gIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10ID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHMgZm10dHlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoZm10LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyAod2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0KSBpYiBpblxuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCwgZm10JyA9XG4gICAgICB0cnlcbiAgICAgICAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXQnID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICAoKiBUT0RPOiBmaW5kIGEgd2F5IHRvIGF2b2lkIHJlcGFyc2luZyB0d2ljZSAqKVxuXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR5cGUtY2hlY2tzIGJlbG93ICpjYW4qIGZhaWwgYmVjYXVzZSBvZiB0eXBlXG4gICAgICAgICAgIGFtYmlndWl0eSBpbiBwcmVzZW5jZSBvZiBpZ25vcmVkLXJlYWRlcnM6IFwiJV9yJWRcIiBhbmQgXCIlZCVfclwiXG4gICAgICAgICAgIGFyZSB0eXBlZCBpbiB0aGUgc2FtZSB3YXkuXG5cbiAgICAgICAgICAgIyBTY2FuZi5zc2NhbmYgXCJcXFwiJV9yJWRcXFwiM1wiIFwiJSglZCVfciUpXCIgaWdub3JlXG4gICAgICAgICAgICAgKGZ1biBmbXQgbiAtPiBzdHJpbmdfb2ZfZm9ybWF0IGZtdCwgbilcbiAgICAgICAgICAgRXhjZXB0aW9uOiBDYW1saW50ZXJuYWxGb3JtYXQuVHlwZV9taXNtYXRjaC5cblxuICAgICAgICAgICBXZSBzaG91bGQgcHJvcGVybHkgY2F0Y2ggdGhpcyBleGNlcHRpb24uXG4gICAgICAgICopXG4gICAgICAgIHR5cGVfZm9ybWF0IGZtdCAoZXJhc2VfcmVsIGZtdHR5KSxcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10JyAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoRm9ybWF0IChmbXQsIHMpLFxuICAgICAgICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCAoU29tZSBzdHApIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBDb25zIChzLCBtYWtlX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBsZXQgd2lkdGggPSB3aWR0aF9vZl9wYWRfb3B0IHdpZHRoX29wdCBpblxuICAgIHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgTm9uZSB3aWR0aCBpYjtcbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgbGV0IGNvdW50ID0gZ2V0X2NvdW50ZXIgaWIgY291bnRlciBpblxuICAgIENvbnMgKGNvdW50LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0KTtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiAnQCc7IGNoZWNrX2NoYXIgaWIgJ3snO1xuICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAnWyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcblxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgYmVnaW4gbWF0Y2ggbWFrZV9zY2FuZiBpYiBmbXQnIHJlYWRlcnMgd2l0aFxuICAgIHwgQ29ucyAoXywgYXJnX3Jlc3QpIC0+IGFyZ19yZXN0XG4gICAgfCBOaWwgLT4gYXNzZXJ0IGZhbHNlXG4gICAgZW5kXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgTmlsXG5cbigqIENhc2UgYW5hbHlzaXMgb24gcGFkZGluZyBhbmQgcHJlY2lzaW9uLiAqKVxuKCogUmVqZWN0IGZvcm1hdHMgY29udGFpbmluZyBcIiUqXCIgb3IgXCIlLipcIi4gKilcbigqIFBhc3MgcGFkZGluZyBhbmQgcHJlY2lzaW9uIHRvIHRoZSBnZW5lcmljIHNjYW5uZXIgYHNjYW4nLiAqKVxuYW5kIHBhZF9wcmVjX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYgeCB5IHogdCAuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT5cbiAgICAgIChpbnQgLT4gaW50IC0+IFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gdCkgLT5cbiAgICAgIChTY2FubmluZy5pbl9jaGFubmVsIC0+IHopIC0+XG4gICAgICAoeCwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgcGFkIHByZWMgc2NhbiB0b2tlbiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gbWF4X2ludCBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiB3IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgcCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nIChMZWZ0LCBfKSwgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlLVxcXCJcIlxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIF8pLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgQXJnX3BhZGRpbmcgXywgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICgqIERlZmluaW5nIFtzY2FuZl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbc2NhbmZdICopXG5cbmxldCBrc2NhbmZfZ2VuIGliIGVmIGFmIChGb3JtYXQgKGZtdCwgc3RyKSkgPVxuICBsZXQgcmVjIGFwcGx5IDogdHlwZSBhIGIgLiBhIC0+IChhLCBiKSBoZXRlcl9saXN0IC0+IGIgPVxuICAgIGZ1biBmIGFyZ3MgLT4gbWF0Y2ggYXJncyB3aXRoXG4gICAgfCBDb25zICh4LCByKSAtPiBhcHBseSAoZiB4KSByXG4gICAgfCBOaWwgLT4gZlxuICBpblxuICBsZXQgayByZWFkZXJzIGYgPVxuICAgIFNjYW5uaW5nLnJlc2V0X3Rva2VuIGliO1xuICAgIG1hdGNoIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIChTY2FuX2ZhaWx1cmUgXyB8IEZhaWx1cmUgXyB8IEVuZF9vZl9maWxlIGFzIGV4YykgLT5cbiAgICAgICAgZWYgaWIgZXhjXG4gICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBtc2cgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgKG1zZyBeIFwiIGluIGZvcm1hdCBcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzdHIgXiBcIlxcXCJcIilcbiAgICB8IGFyZ3MgLT5cbiAgICAgICAgYWYgKGFwcGx5IGYgYXJncylcbiAgaW5cbiAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuXG5sZXQga3NjYW5mIGliIGVmIGZtdCA9XG4gIGtzY2FuZl9nZW4gaWIgZWYgKGZ1biB4IC0+IHgpIGZtdFxuXG5sZXQga3NjYW5mX29wdCBpYiBmbXQgPVxuICBrc2NhbmZfZ2VuIGliIChmdW4gXyBfIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpIGZtdFxuXG4oKioqKVxuXG5sZXQga2JzY2FuZiA9IGtzY2FuZlxubGV0IGJzY2FuZiBpYiBmbXQgPSBrYnNjYW5mIGliIHNjYW5mX2JhZF9pbnB1dCBmbXRcbmxldCBic2NhbmZfb3B0IGliIGZtdCA9IGtzY2FuZl9vcHQgaWIgZm10XG5cbmxldCBrc3NjYW5mIHMgZWYgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZWYgZm10XG5sZXQgc3NjYW5mIHMgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgc2NhbmZfYmFkX2lucHV0IGZtdFxubGV0IHNzY2FuZl9vcHQgcyBmbXQgPSBrc2NhbmZfb3B0IChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBmbXRcblxubGV0IHNjYW5mIGZtdCA9IGtzY2FuZiBTY2FubmluZy5zdGRpbiBzY2FuZl9iYWRfaW5wdXQgZm10XG5sZXQgc2NhbmZfb3B0IGZtdCA9IGtzY2FuZl9vcHQgU2Nhbm5pbmcuc3RkaW4gZm10XG5cbigqKiopXG5cbigqIFNjYW5uaW5nIGZvcm1hdCBzdHJpbmdzLiAqKVxubGV0IGJzY2FuZl9mb3JtYXQgOlxuICBTY2FubmluZy5pbl9jaGFubmVsIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAnZykgLT4gJ2cgPVxuICBmdW4gaWIgZm9ybWF0IGYgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgbWF4X2ludCBpYiBpblxuICAgIGxldCBzdHIgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10JyA9XG4gICAgICB0cnkgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIGZvcm1hdFxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnIGluXG4gICAgZiBmbXQnXG5cblxubGV0IHNzY2FuZl9mb3JtYXQgOlxuICBzdHJpbmcgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBzIGZvcm1hdCBmIC0+IGJzY2FuZl9mb3JtYXQgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGZvcm1hdCBmXG5cblxubGV0IGZvcm1hdF9mcm9tX3N0cmluZyBzIGZtdCA9XG4gIHNzY2FuZl9mb3JtYXQgKFwiXFxcIlwiIF4gU3RyaW5nLmVzY2FwZWQgcyBeIFwiXFxcIlwiKSBmbXQgKGZ1biB4IC0+IHgpXG5cblxubGV0IHVuZXNjYXBlZCBzID1cbiAgc3NjYW5mIChcIlxcXCJcIiBeIHMgXiBcIlxcXCJcIikgXCIlUyUhXCIgKGZ1biB4IC0+IHgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFJlZ2lzdGVyaW5nIE9DYW1sIHZhbHVlcyB3aXRoIHRoZSBDIHJ1bnRpbWUgZm9yIGxhdGVyIGNhbGxiYWNrcyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiBPYmoudCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCByZWdpc3RlciBuYW1lIHYgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIChPYmoucmVwciB2KVxuXG5sZXQgcmVnaXN0ZXJfZXhjZXB0aW9uIG5hbWUgKGV4biA6IGV4bikgPVxuICBsZXQgZXhuID0gT2JqLnJlcHIgZXhuIGluXG4gIGxldCBzbG90ID0gaWYgT2JqLnRhZyBleG4gPSBPYmoub2JqZWN0X3RhZyB0aGVuIGV4biBlbHNlIE9iai5maWVsZCBleG4gMCBpblxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIHNsb3RcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIEplcm9tZSBWb3VpbGxvbiwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqKiogT2JqZWN0IHJlcHJlc2VudGF0aW9uICoqKiopXG5cbmV4dGVybmFsIHNldF9pZDogJ2EgLT4gJ2EgPSBcImNhbWxfc2V0X29vX2lkXCIgW0BAbm9hbGxvY11cblxuKCoqKiogT2JqZWN0IGNvcHkgKioqKilcblxubGV0IGNvcHkgbyA9XG4gIGxldCBvID0gKE9iai5vYmogKE9iai5kdXAgKE9iai5yZXByIG8pKSkgaW5cbiAgc2V0X2lkIG9cblxuKCoqKiogQ29tcHJlc3Npb24gb3B0aW9ucyAqKioqKVxuKCogUGFyYW1ldGVycyAqKVxudHlwZSBwYXJhbXMgPSB7XG4gICAgbXV0YWJsZSBjb21wYWN0X3RhYmxlIDogYm9vbDtcbiAgICBtdXRhYmxlIGNvcHlfcGFyZW50IDogYm9vbDtcbiAgICBtdXRhYmxlIGNsZWFuX3doZW5fY29weWluZyA6IGJvb2w7XG4gICAgbXV0YWJsZSByZXRyeV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGJ1Y2tldF9zbWFsbF9zaXplIDogaW50XG4gIH1cblxubGV0IHBhcmFtcyA9IHtcbiAgY29tcGFjdF90YWJsZSA9IHRydWU7XG4gIGNvcHlfcGFyZW50ID0gdHJ1ZTtcbiAgY2xlYW5fd2hlbl9jb3B5aW5nID0gdHJ1ZTtcbiAgcmV0cnlfY291bnQgPSAzO1xuICBidWNrZXRfc21hbGxfc2l6ZSA9IDE2XG59XG5cbigqKioqIFBhcmFtZXRlcnMgKioqKilcblxubGV0IGluaXRpYWxfb2JqZWN0X3NpemUgPSAyXG5cbigqKioqIEl0ZW1zICoqKiopXG5cbnR5cGUgaXRlbSA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxubGV0IGR1bW15X2l0ZW0gPSAoT2JqLm1hZ2ljICgpIDogaXRlbSlcblxuKCoqKiogVHlwZXMgKioqKilcblxudHlwZSB0YWdcbnR5cGUgbGFiZWwgPSBpbnRcbnR5cGUgY2xvc3VyZSA9IGl0ZW1cbnR5cGUgdCA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxudHlwZSBvYmogPSB0IGFycmF5XG5leHRlcm5hbCByZXQgOiAob2JqIC0+ICdhKSAtPiBjbG9zdXJlID0gXCIlaWRlbnRpdHlcIlxuXG4oKioqKiBMYWJlbHMgKioqKilcblxubGV0IHB1YmxpY19tZXRob2RfbGFiZWwgcyA6IHRhZyA9XG4gIGxldCBhY2N1ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBhY2N1IDo9IDIyMyAqICFhY2N1ICsgQ2hhci5jb2RlIHMuW2ldXG4gIGRvbmU7XG4gICgqIHJlZHVjZSB0byAzMSBiaXRzICopXG4gIGFjY3UgOj0gIWFjY3UgbGFuZCAoMSBsc2wgMzEgLSAxKTtcbiAgKCogbWFrZSBpdCBzaWduZWQgZm9yIDY0IGJpdHMgYXJjaGl0ZWN0dXJlcyAqKVxuICBsZXQgdGFnID0gaWYgIWFjY3UgPiAweDNGRkZGRkZGIHRoZW4gIWFjY3UgLSAoMSBsc2wgMzEpIGVsc2UgIWFjY3UgaW5cbiAgKCogUHJpbnRmLmVwcmludGYgXCIlcyA9ICVkXFxuXCIgcyB0YWc7IGZsdXNoIHN0ZGVycjsgKilcbiAgT2JqLm1hZ2ljIHRhZ1xuXG4oKioqKiBTcGFyc2UgYXJyYXkgKioqKilcblxubW9kdWxlIFZhcnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIHZhcnMgPSBpbnQgVmFycy50XG5cbm1vZHVsZSBNZXRocyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbWV0aHMgPSBsYWJlbCBNZXRocy50XG5tb2R1bGUgTGFicyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBsYWJlbCBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBsYWJzID0gYm9vbCBMYWJzLnRcblxuKCogVGhlIGNvbXBpbGVyIGFzc3VtZXMgdGhhdCB0aGUgZmlyc3QgZmllbGQgb2YgdGhpcyBzdHJ1Y3R1cmUgaXMgW3NpemVdLiAqKVxudHlwZSB0YWJsZSA9XG4geyBtdXRhYmxlIHNpemU6IGludDtcbiAgIG11dGFibGUgbWV0aG9kczogY2xvc3VyZSBhcnJheTtcbiAgIG11dGFibGUgbWV0aG9kc19ieV9uYW1lOiBtZXRocztcbiAgIG11dGFibGUgbWV0aG9kc19ieV9sYWJlbDogbGFicztcbiAgIG11dGFibGUgcHJldmlvdXNfc3RhdGVzOlxuICAgICAobWV0aHMgKiBsYWJzICogKGxhYmVsICogaXRlbSkgbGlzdCAqIHZhcnMgKlxuICAgICAgbGFiZWwgbGlzdCAqIHN0cmluZyBsaXN0KSBsaXN0O1xuICAgbXV0YWJsZSBoaWRkZW5fbWV0aHM6IChsYWJlbCAqIGl0ZW0pIGxpc3Q7XG4gICBtdXRhYmxlIHZhcnM6IHZhcnM7XG4gICBtdXRhYmxlIGluaXRpYWxpemVyczogKG9iaiAtPiB1bml0KSBsaXN0IH1cblxubGV0IGR1bW15X3RhYmxlID1cbiAgeyBtZXRob2RzID0gW3wgZHVtbXlfaXRlbSB8XTtcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gMCB9XG5cbmxldCB0YWJsZV9jb3VudCA9IHJlZiAwXG5cbigqIGR1bW15X21ldCBzaG91bGQgYmUgYSBwb2ludGVyLCBzbyB1c2UgYW4gYXRvbSAqKVxubGV0IGR1bW15X21ldCA6IGl0ZW0gPSBPYmoub2JqIChPYmoubmV3X2Jsb2NrIDAgMClcbigqIGlmIGRlYnVnZ2luZyBpcyBuZWVkZWQsIHRoaXMgY291bGQgYmUgYSBnb29kIGlkZWE6ICopXG4oKiBsZXQgZHVtbXlfbWV0ICgpID0gZmFpbHdpdGggXCJVbmRlZmluZWQgbWV0aG9kXCIgKilcblxubGV0IHJlYyBmaXRfc2l6ZSBuID1cbiAgaWYgbiA8PSAyIHRoZW4gbiBlbHNlXG4gIGZpdF9zaXplICgobisxKS8yKSAqIDJcblxubGV0IG5ld190YWJsZSBwdWJfbGFiZWxzID1cbiAgaW5jciB0YWJsZV9jb3VudDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBwdWJfbGFiZWxzIGluXG4gIGxldCBtZXRob2RzID0gQXJyYXkubWFrZSAobGVuKjIrMikgZHVtbXlfbWV0IGluXG4gIG1ldGhvZHMuKDApIDwtIE9iai5tYWdpYyBsZW47XG4gIG1ldGhvZHMuKDEpIDwtIE9iai5tYWdpYyAoZml0X3NpemUgbGVuICogU3lzLndvcmRfc2l6ZSAvIDggLSAxKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG8gbWV0aG9kcy4oaSoyKzMpIDwtIE9iai5tYWdpYyBwdWJfbGFiZWxzLihpKSBkb25lO1xuICB7IG1ldGhvZHMgPSBtZXRob2RzO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSBpbml0aWFsX29iamVjdF9zaXplIH1cblxubGV0IHJlc2l6ZSBhcnJheSBuZXdfc2l6ZSA9XG4gIGxldCBvbGRfc2l6ZSA9IEFycmF5Lmxlbmd0aCBhcnJheS5tZXRob2RzIGluXG4gIGlmIG5ld19zaXplID4gb2xkX3NpemUgdGhlbiBiZWdpblxuICAgIGxldCBuZXdfYnVjayA9IEFycmF5Lm1ha2UgbmV3X3NpemUgZHVtbXlfbWV0IGluXG4gICAgQXJyYXkuYmxpdCBhcnJheS5tZXRob2RzIDAgbmV3X2J1Y2sgMCBvbGRfc2l6ZTtcbiAgICBhcnJheS5tZXRob2RzIDwtIG5ld19idWNrXG4gZW5kXG5cbmxldCBwdXQgYXJyYXkgbGFiZWwgZWxlbWVudCA9XG4gIHJlc2l6ZSBhcnJheSAobGFiZWwgKyAxKTtcbiAgYXJyYXkubWV0aG9kcy4obGFiZWwpIDwtIGVsZW1lbnRcblxuKCoqKiogQ2xhc3NlcyAqKioqKVxuXG5sZXQgbWV0aG9kX2NvdW50ID0gcmVmIDBcbmxldCBpbnN0X3Zhcl9jb3VudCA9IHJlZiAwXG5cbigqIHR5cGUgdCAqKVxudHlwZSBtZXRoID0gaXRlbVxuXG5sZXQgbmV3X21ldGhvZCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IEFycmF5Lmxlbmd0aCB0YWJsZS5tZXRob2RzIGluXG4gIHJlc2l6ZSB0YWJsZSAoaW5kZXggKyAxKTtcbiAgaW5kZXhcblxubGV0IGdldF9tZXRob2RfbGFiZWwgdGFibGUgbmFtZSA9XG4gIHRyeVxuICAgIE1ldGhzLmZpbmQgbmFtZSB0YWJsZS5tZXRob2RzX2J5X25hbWVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgbGFiZWwgPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gICAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIE1ldGhzLmFkZCBuYW1lIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIExhYnMuYWRkIGxhYmVsIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbDtcbiAgICBsYWJlbFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbHMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIG5hbWVzXG5cbmxldCBzZXRfbWV0aG9kIHRhYmxlIGxhYmVsIGVsZW1lbnQgPVxuICBpbmNyIG1ldGhvZF9jb3VudDtcbiAgaWYgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgdGhlblxuICAgIHB1dCB0YWJsZSBsYWJlbCBlbGVtZW50XG4gIGVsc2VcbiAgICB0YWJsZS5oaWRkZW5fbWV0aHMgPC0gKGxhYmVsLCBlbGVtZW50KSA6OiB0YWJsZS5oaWRkZW5fbWV0aHNcblxubGV0IGdldF9tZXRob2QgdGFibGUgbGFiZWwgPVxuICB0cnkgTGlzdC5hc3NvYyBsYWJlbCB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgd2l0aCBOb3RfZm91bmQgLT4gdGFibGUubWV0aG9kcy4obGFiZWwpXG5cbmxldCB0b19saXN0IGFyciA9XG4gIGlmIGFyciA9PSBPYmoubWFnaWMgMCB0aGVuIFtdIGVsc2UgQXJyYXkudG9fbGlzdCBhcnJcblxubGV0IG5hcnJvdyB0YWJsZSB2YXJzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHMgPVxuICBsZXQgdmFycyA9IHRvX2xpc3QgdmFyc1xuICBhbmQgdmlydF9tZXRocyA9IHRvX2xpc3QgdmlydF9tZXRoc1xuICBhbmQgY29uY3JfbWV0aHMgPSB0b19saXN0IGNvbmNyX21ldGhzIGluXG4gIGxldCB2aXJ0X21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSB2aXJ0X21ldGhzIGluXG4gIGxldCBjb25jcl9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgY29uY3JfbWV0aHMgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtXG4gICAgICh0YWJsZS5tZXRob2RzX2J5X25hbWUsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwsIHRhYmxlLmhpZGRlbl9tZXRocyxcbiAgICAgIHRhYmxlLnZhcnMsIHZpcnRfbWV0aF9sYWJzLCB2YXJzKVxuICAgICA6OiB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICBWYXJzLmZvbGRcbiAgICAgIChmdW4gbGFiIGluZm8gdHZhcnMgLT5cbiAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZhcnMgdGhlbiBWYXJzLmFkZCBsYWIgaW5mbyB0dmFycyBlbHNlIHR2YXJzKVxuICAgICAgdGFibGUudmFycyBWYXJzLmVtcHR5O1xuICBsZXQgYnlfbmFtZSA9IHJlZiBNZXRocy5lbXB0eSBpblxuICBsZXQgYnlfbGFiZWwgPSByZWYgTGFicy5lbXB0eSBpblxuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj1cbiAgICAgICAgICBMYWJzLmFkZCBsYWJlbFxuICAgICAgICAgICAgKHRyeSBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlKVxuICAgICAgICAgICAgIWJ5X2xhYmVsKVxuICAgIGNvbmNyX21ldGhzIGNvbmNyX21ldGhfbGFicztcbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9IExhYnMuYWRkIGxhYmVsIGZhbHNlICFieV9sYWJlbClcbiAgICB2aXJ0X21ldGhzIHZpcnRfbWV0aF9sYWJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gIWJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gIWJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhfbGFicyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBbXVxuXG5sZXQgd2lkZW4gdGFibGUgPVxuICBsZXQgKGJ5X25hbWUsIGJ5X2xhYmVsLCBzYXZlZF9oaWRkZW5fbWV0aHMsIHNhdmVkX3ZhcnMsIHZpcnRfbWV0aHMsIHZhcnMpID1cbiAgICBMaXN0LmhkIHRhYmxlLnByZXZpb3VzX3N0YXRlc1xuICBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC0gTGlzdC50bCB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIHMgdiAtPiBWYXJzLmFkZCB2IChWYXJzLmZpbmQgdiB0YWJsZS52YXJzKSBzKVxuICAgICAgIHNhdmVkX3ZhcnMgdmFycztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIGJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aHMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgc2F2ZWRfaGlkZGVuX21ldGhzXG5cbmxldCBuZXdfc2xvdCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IHRhYmxlLnNpemUgaW5cbiAgdGFibGUuc2l6ZSA8LSBpbmRleCArIDE7XG4gIGluZGV4XG5cbmxldCBuZXdfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGluZGV4ID0gbmV3X3Nsb3QgdGFibGUgaW5cbiAgICBpZiBuYW1lIDw+IFwiXCIgdGhlbiB0YWJsZS52YXJzIDwtIFZhcnMuYWRkIG5hbWUgaW5kZXggdGFibGUudmFycztcbiAgICBpbmRleFxuXG5sZXQgdG9fYXJyYXkgYXJyID1cbiAgaWYgYXJyID0gT2JqLm1hZ2ljIDAgdGhlbiBbfHxdIGVsc2UgYXJyXG5cbmxldCBuZXdfbWV0aG9kc192YXJpYWJsZXMgdGFibGUgbWV0aHMgdmFscyA9XG4gIGxldCBtZXRocyA9IHRvX2FycmF5IG1ldGhzIGluXG4gIGxldCBubWV0aHMgPSBBcnJheS5sZW5ndGggbWV0aHMgYW5kIG52YWxzID0gQXJyYXkubGVuZ3RoIHZhbHMgaW5cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgKG5tZXRocyArIG52YWxzKSAwIGluXG4gIGZvciBpID0gMCB0byBubWV0aHMgLSAxIGRvXG4gICAgcmVzLihpKSA8LSBnZXRfbWV0aG9kX2xhYmVsIHRhYmxlIG1ldGhzLihpKVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbnZhbHMgLSAxIGRvXG4gICAgcmVzLihpK25tZXRocykgPC0gbmV3X3ZhcmlhYmxlIHRhYmxlIHZhbHMuKGkpXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgZ2V0X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFycyB3aXRoIE5vdF9mb3VuZCAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGdldF92YXJpYWJsZXMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF92YXJpYWJsZSB0YWJsZSkgbmFtZXNcblxubGV0IGFkZF9pbml0aWFsaXplciB0YWJsZSBmID1cbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIGY6OnRhYmxlLmluaXRpYWxpemVyc1xuXG4oKlxubW9kdWxlIEtleXMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gdGFnIGFycmF5IGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG5sZXQga2V5X21hcCA9IHJlZiBLZXlzLmVtcHR5XG5sZXQgZ2V0X2tleSB0YWdzIDogaXRlbSA9XG4gIHRyeSBtYWdpYyAoS2V5cy5maW5kIHRhZ3MgIWtleV9tYXAgOiB0YWcgYXJyYXkpXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAga2V5X21hcCA6PSBLZXlzLmFkZCB0YWdzIHRhZ3MgIWtleV9tYXA7XG4gICAgbWFnaWMgdGFnc1xuKilcblxubGV0IGNyZWF0ZV90YWJsZSBwdWJsaWNfbWV0aG9kcyA9XG4gIGlmIHB1YmxpY19tZXRob2RzID09IE9iai5tYWdpYyAwIHRoZW4gbmV3X3RhYmxlIFt8fF0gZWxzZVxuICAoKiBbcHVibGljX21ldGhvZHNdIG11c3QgYmUgaW4gYXNjZW5kaW5nIG9yZGVyIGZvciBieXRlY29kZSAqKVxuICBsZXQgdGFncyA9IEFycmF5Lm1hcCBwdWJsaWNfbWV0aG9kX2xhYmVsIHB1YmxpY19tZXRob2RzIGluXG4gIGxldCB0YWJsZSA9IG5ld190YWJsZSB0YWdzIGluXG4gIEFycmF5Lml0ZXJpXG4gICAgKGZ1biBpIG1ldCAtPlxuICAgICAgbGV0IGxhYiA9IGkqMisyIGluXG4gICAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgIDwtIE1ldGhzLmFkZCBtZXQgbGFiIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbClcbiAgICBwdWJsaWNfbWV0aG9kcztcbiAgdGFibGVcblxubGV0IGluaXRfY2xhc3MgdGFibGUgPVxuICBpbnN0X3Zhcl9jb3VudCA6PSAhaW5zdF92YXJfY291bnQgKyB0YWJsZS5zaXplIC0gMTtcbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIExpc3QucmV2IHRhYmxlLmluaXRpYWxpemVycztcbiAgcmVzaXplIHRhYmxlICgzICsgT2JqLm1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplKVxuXG5sZXQgaW5oZXJpdHMgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocyAoXywgc3VwZXIsIF8sIGVudikgdG9wID1cbiAgbmFycm93IGNsYSB2YWxzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHM7XG4gIGxldCBpbml0ID1cbiAgICBpZiB0b3AgdGhlbiBzdXBlciBjbGEgZW52IGVsc2UgT2JqLnJlcHIgKHN1cGVyIGNsYSkgaW5cbiAgd2lkZW4gY2xhO1xuICBBcnJheS5jb25jYXRcbiAgICBbW3wgT2JqLnJlcHIgaW5pdCB8XTtcbiAgICAgT2JqLm1hZ2ljIChBcnJheS5tYXAgKGdldF92YXJpYWJsZSBjbGEpICh0b19hcnJheSB2YWxzKSA6IGludCBhcnJheSk7XG4gICAgIEFycmF5Lm1hcFxuICAgICAgIChmdW4gbm0gLT4gT2JqLnJlcHIgKGdldF9tZXRob2QgY2xhIChnZXRfbWV0aG9kX2xhYmVsIGNsYSBubSkgOiBjbG9zdXJlKSlcbiAgICAgICAodG9fYXJyYXkgY29uY3JfbWV0aHMpIF1cblxubGV0IG1ha2VfY2xhc3MgcHViX21ldGhzIGNsYXNzX2luaXQgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgKGVudl9pbml0IChPYmoucmVwciAwKSwgY2xhc3NfaW5pdCwgZW52X2luaXQsIE9iai5yZXByIDApXG5cbnR5cGUgaW5pdF90YWJsZSA9IHsgbXV0YWJsZSBlbnZfaW5pdDogdDsgbXV0YWJsZSBjbGFzc19pbml0OiB0YWJsZSAtPiB0IH1cbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbmxldCBtYWtlX2NsYXNzX3N0b3JlIHB1Yl9tZXRocyBjbGFzc19pbml0IGluaXRfdGFibGUgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgaW5pdF90YWJsZS5jbGFzc19pbml0IDwtIGNsYXNzX2luaXQ7XG4gIGluaXRfdGFibGUuZW52X2luaXQgPC0gZW52X2luaXRcblxubGV0IGR1bW15X2NsYXNzIGxvYyA9XG4gIGxldCB1bmRlZiA9IGZ1biBfIC0+IHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpIGluXG4gIChPYmoubWFnaWMgdW5kZWYsIHVuZGVmLCB1bmRlZiwgT2JqLnJlcHIgMClcblxuKCoqKiogT2JqZWN0cyAqKioqKVxuXG5sZXQgY3JlYXRlX29iamVjdCB0YWJsZSA9XG4gICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgKCogWFhYIEFwcGVsIGRlIFtjYW1sX21vZGlmeV0gfCBDYWxsIHRvIFtjYW1sX21vZGlmeV0gKilcbiAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gIE9iai5vYmogKHNldF9pZCBvYmopXG5cbmxldCBjcmVhdGVfb2JqZWN0X29wdCBvYmpfMCB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9ial8wIGVsc2UgYmVnaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW29ial9ibG9ja10gfCBDYWxsIHRvIFtvYmpfYmxvY2tdICAqKVxuICAgIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICAgIE9iai5zZXRfZmllbGQgb2JqIDAgKE9iai5yZXByIHRhYmxlLm1ldGhvZHMpO1xuICAgIE9iai5vYmogKHNldF9pZCBvYmopXG4gIGVuZFxuXG5sZXQgcmVjIGl0ZXJfZiBvYmogPVxuICBmdW5jdGlvblxuICAgIFtdICAgLT4gKClcbiAgfCBmOjpsIC0+IGYgb2JqOyBpdGVyX2Ygb2JqIGxcblxubGV0IHJ1bl9pbml0aWFsaXplcnMgb2JqIHRhYmxlID1cbiAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gIGlmIGluaXRzIDw+IFtdIHRoZW5cbiAgICBpdGVyX2Ygb2JqIGluaXRzXG5cbmxldCBydW5faW5pdGlhbGl6ZXJzX29wdCBvYmpfMCBvYmogdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmogZWxzZSBiZWdpblxuICAgIGxldCBpbml0cyA9IHRhYmxlLmluaXRpYWxpemVycyBpblxuICAgIGlmIGluaXRzIDw+IFtdIHRoZW4gaXRlcl9mIG9iaiBpbml0cztcbiAgICBvYmpcbiAgZW5kXG5cbmxldCBjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGl6ZXJzIG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgIGxldCBvYmogPSBjcmVhdGVfb2JqZWN0IHRhYmxlIGluXG4gICAgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGU7XG4gICAgb2JqXG4gIGVuZFxuXG4oKiBFcXVpdmFsZW50IHByaW1pdGl2ZSBiZWxvd1xubGV0IHNlbmRzZWxmIG9iaiBsYWIgPVxuICAobWFnaWMgb2JqIDogKG9iaiAtPiB0KSBhcnJheSBhcnJheSkuKDApLihsYWIpIG9ialxuKilcbmV4dGVybmFsIHNlbmQgOiBvYmogLT4gdGFnIC0+ICdhID0gXCIlc2VuZFwiXG5leHRlcm5hbCBzZW5kY2FjaGUgOiBvYmogLT4gdGFnIC0+IHQgLT4gaW50IC0+ICdhID0gXCIlc2VuZGNhY2hlXCJcbmV4dGVybmFsIHNlbmRzZWxmIDogb2JqIC0+IGxhYmVsIC0+ICdhID0gXCIlc2VuZHNlbGZcIlxuZXh0ZXJuYWwgZ2V0X3B1YmxpY19tZXRob2QgOiBvYmogLT4gdGFnIC0+IGNsb3N1cmVcbiAgICA9IFwiY2FtbF9nZXRfcHVibGljX21ldGhvZFwiIFtAQG5vYWxsb2NdXG5cbigqKioqIHRhYmxlIGNvbGxlY3Rpb24gYWNjZXNzICoqKiopXG5cbnR5cGUgdGFibGVzID1cbiAgfCBFbXB0eVxuICB8IENvbnMgb2Yge2tleSA6IGNsb3N1cmU7IG11dGFibGUgZGF0YTogdGFibGVzOyBtdXRhYmxlIG5leHQ6IHRhYmxlc31cblxubGV0IHNldF9kYXRhIHRhYmxlcyB2ID0gbWF0Y2ggdGFibGVzIHdpdGhcbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMuZGF0YSA8LSB2XG5sZXQgc2V0X25leHQgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0IDwtIHZcbmxldCBnZXRfa2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMua2V5XG5sZXQgZ2V0X2RhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhXG5sZXQgZ2V0X25leHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0XG5cbmxldCBidWlsZF9wYXRoIG4ga2V5cyB0YWJsZXMgPVxuICBsZXQgcmVzID0gQ29ucyB7a2V5ID0gT2JqLm1hZ2ljIDA7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICBsZXQgciA9IHJlZiByZXMgaW5cbiAgZm9yIGkgPSAwIHRvIG4gZG9cbiAgICByIDo9IENvbnMge2tleSA9IGtleXMuKGkpOyBkYXRhID0gIXI7IG5leHQgPSBFbXB0eX1cbiAgZG9uZTtcbiAgc2V0X2RhdGEgdGFibGVzICFyO1xuICByZXNcblxubGV0IHJlYyBsb29rdXBfa2V5cyBpIGtleXMgdGFibGVzID1cbiAgaWYgaSA8IDAgdGhlbiB0YWJsZXMgZWxzZVxuICBsZXQga2V5ID0ga2V5cy4oaSkgaW5cbiAgbGV0IHJlYyBsb29rdXBfa2V5ICh0YWJsZXM6dGFibGVzKSA9XG4gICAgaWYgZ2V0X2tleSB0YWJsZXMgPT0ga2V5IHRoZW5cbiAgICAgIG1hdGNoIGdldF9kYXRhIHRhYmxlcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBDb25zIF8gYXMgdGFibGVzX2RhdGEgLT5cbiAgICAgICAgICBsb29rdXBfa2V5cyAoaS0xKSBrZXlzIHRhYmxlc19kYXRhXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZ2V0X25leHQgdGFibGVzIHdpdGhcbiAgICAgIHwgQ29ucyBfIGFzIG5leHQgLT4gbG9va3VwX2tleSBuZXh0XG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgbGV0IG5leHQgOiB0YWJsZXMgPSBDb25zIHtrZXk7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICAgICAgICAgIHNldF9uZXh0IHRhYmxlcyBuZXh0O1xuICAgICAgICAgIGJ1aWxkX3BhdGggKGktMSkga2V5cyBuZXh0XG4gIGluXG4gIGxvb2t1cF9rZXkgdGFibGVzXG5cbmxldCBsb29rdXBfdGFibGVzIHJvb3Qga2V5cyA9XG4gIG1hdGNoIGdldF9kYXRhIHJvb3Qgd2l0aFxuICB8IENvbnMgXyBhcyByb290X2RhdGEgLT5cbiAgICBsb29rdXBfa2V5cyAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RfZGF0YVxuICB8IEVtcHR5IC0+XG4gICAgYnVpbGRfcGF0aCAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RcblxuKCoqKiogYnVpbHRpbiBtZXRob2RzICoqKiopXG5cbmxldCBnZXRfY29uc3QgeCA9IHJldCAoZnVuIF9vYmogLT4geClcbmxldCBnZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiAtPiBBcnJheS51bnNhZmVfZ2V0IG9iaiBuKVxubGV0IGdldF9lbnYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbilcbmxldCBnZXRfbWV0aCBuICA9IHJldCAoZnVuIG9iaiAtPiBzZW5kc2VsZiBvYmogbilcbmxldCBzZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiB4IC0+IEFycmF5LnVuc2FmZV9zZXQgb2JqIG4geClcbmxldCBhcHBfY29uc3QgZiB4ID0gcmV0IChmdW4gX29iaiAtPiBmIHgpXG5sZXQgYXBwX3ZhciBmIG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfZW52IGYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikpXG5sZXQgYXBwX21ldGggZiBuICA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikpXG5sZXQgYXBwX2NvbnN0X2NvbnN0IGYgeCB5ID0gcmV0IChmdW4gX29iaiAtPiBmIHggeSlcbmxldCBhcHBfY29uc3RfdmFyIGYgeCBuICAgPSByZXQgKGZ1biBvYmogLT4gZiB4IChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfY29uc3RfbWV0aCBmIHggbiA9IHJldCAoZnVuIG9iaiAtPiBmIHggKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfdmFyX2NvbnN0IGYgbiB4ID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pIHgpXG5sZXQgYXBwX21ldGhfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoc2VuZHNlbGYgb2JqIG4pIHgpXG5sZXQgYXBwX2NvbnN0X2VudiBmIHggZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiB4IChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfZW52X2NvbnN0IGYgZSBuIHggPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSB4KVxubGV0IG1ldGhfYXBwX2NvbnN0IG4geCA9IHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIHgpXG5sZXQgbWV0aF9hcHBfdmFyIG4gbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIChBcnJheS51bnNhZmVfZ2V0IG9iaiBtKSlcbmxldCBtZXRoX2FwcF9lbnYgbiBlIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG0pKVxubGV0IG1ldGhfYXBwX21ldGggbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKHNlbmRzZWxmIG9iaiBtKSlcbmxldCBzZW5kX2NvbnN0IG0geCBjID1cbiAgcmV0IChmdW4gb2JqIC0+IHNlbmRjYWNoZSB4IG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF92YXIgbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgOiBvYmopIG1cbiAgICAgIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfZW52IG0gZSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGVcbiAgICAgIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXRcbiAgICAgICAgICAgICAgICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIDogb2JqKVxuICAgICAgbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX21ldGggbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKHNlbmRzZWxmIG9iaiBuKSBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IG5ld19jYWNoZSB0YWJsZSA9XG4gIGxldCBuID0gbmV3X21ldGhvZCB0YWJsZSBpblxuICBsZXQgbiA9XG4gICAgaWYgbiBtb2QgMiA9IDAgfHwgbiA+IDIgKyBPYmoubWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemVcbiAgICB0aGVuIG4gZWxzZSBuZXdfbWV0aG9kIHRhYmxlXG4gIGluXG4gIHRhYmxlLm1ldGhvZHMuKG4pIDwtIE9iai5tYWdpYyAwO1xuICBuXG5cbnR5cGUgaW1wbCA9XG4gICAgR2V0Q29uc3RcbiAgfCBHZXRWYXJcbiAgfCBHZXRFbnZcbiAgfCBHZXRNZXRoXG4gIHwgU2V0VmFyXG4gIHwgQXBwQ29uc3RcbiAgfCBBcHBWYXJcbiAgfCBBcHBFbnZcbiAgfCBBcHBNZXRoXG4gIHwgQXBwQ29uc3RDb25zdFxuICB8IEFwcENvbnN0VmFyXG4gIHwgQXBwQ29uc3RFbnZcbiAgfCBBcHBDb25zdE1ldGhcbiAgfCBBcHBWYXJDb25zdFxuICB8IEFwcEVudkNvbnN0XG4gIHwgQXBwTWV0aENvbnN0XG4gIHwgTWV0aEFwcENvbnN0XG4gIHwgTWV0aEFwcFZhclxuICB8IE1ldGhBcHBFbnZcbiAgfCBNZXRoQXBwTWV0aFxuICB8IFNlbmRDb25zdFxuICB8IFNlbmRWYXJcbiAgfCBTZW5kRW52XG4gIHwgU2VuZE1ldGhcbiAgfCBDbG9zdXJlIG9mIGNsb3N1cmVcblxubGV0IG1ldGhvZF9pbXBsIHRhYmxlIGkgYXJyID1cbiAgbGV0IG5leHQgKCkgPSBpbmNyIGk7IE9iai5tYWdpYyBhcnIuKCFpKSBpblxuICBtYXRjaCBuZXh0KCkgd2l0aFxuICAgIEdldENvbnN0IC0+IGxldCB4IDogdCA9IG5leHQoKSBpbiBnZXRfY29uc3QgeFxuICB8IEdldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF92YXIgblxuICB8IEdldEVudiAgIC0+IGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGdldF9lbnYgZSBuXG4gIHwgR2V0TWV0aCAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X21ldGggblxuICB8IFNldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIHNldF92YXIgblxuICB8IEFwcENvbnN0IC0+IGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGFwcF9jb25zdCBmIHhcbiAgfCBBcHBWYXIgICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX3ZhciBmIG5cbiAgfCBBcHBFbnYgICAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52IGYgZSBuXG4gIHwgQXBwTWV0aCAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF9tZXRoIGYgblxuICB8IEFwcENvbnN0Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCB5ID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfY29uc3QgZiB4IHlcbiAgfCBBcHBDb25zdFZhciAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF92YXIgZiB4IG5cbiAgfCBBcHBDb25zdEVudiAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfZW52IGYgeCBlIG5cbiAgfCBBcHBDb25zdE1ldGggLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfbWV0aCBmIHggblxuICB8IEFwcFZhckNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX3Zhcl9jb25zdCBmIG4geFxuICB8IEFwcEVudkNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnZfY29uc3QgZiBlIG4geFxuICB8IEFwcE1ldGhDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9tZXRoX2NvbnN0IGYgbiB4XG4gIHwgTWV0aEFwcENvbnN0IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBtZXRoX2FwcF9jb25zdCBuIHhcbiAgfCBNZXRoQXBwVmFyIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF92YXIgbiBtXG4gIHwgTWV0aEFwcEVudiAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW5cbiAgICAgIG1ldGhfYXBwX2VudiBuIGUgbVxuICB8IE1ldGhBcHBNZXRoIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF9tZXRoIG4gbVxuICB8IFNlbmRDb25zdCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gc2VuZF9jb25zdCBtIHggKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kVmFyIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF92YXIgbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZEVudiAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIHNlbmRfZW52IG0gZSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZE1ldGggLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX21ldGggbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgQ2xvc3VyZSBfIGFzIGNsbyAtPiBPYmoubWFnaWMgY2xvXG5cbmxldCBzZXRfbWV0aG9kcyB0YWJsZSBtZXRob2RzID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBtZXRob2RzIGluIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICBsZXQgbGFiZWwgPSBtZXRob2RzLighaSkgaW4gbGV0IGNsbyA9IG1ldGhvZF9pbXBsIHRhYmxlIGkgbWV0aG9kcyBpblxuICAgIHNldF9tZXRob2QgdGFibGUgbGFiZWwgY2xvO1xuICAgIGluY3IgaVxuICBkb25lXG5cbigqKioqIFN0YXRpc3RpY3MgKioqKilcblxudHlwZSBzdGF0cyA9XG4gIHsgY2xhc3NlczogaW50OyBtZXRob2RzOiBpbnQ7IGluc3RfdmFyczogaW50OyB9XG5cbmxldCBzdGF0cyAoKSA9XG4gIHsgY2xhc3NlcyA9ICF0YWJsZV9jb3VudDtcbiAgICBtZXRob2RzID0gIW1ldGhvZF9jb3VudDsgaW5zdF92YXJzID0gIWluc3RfdmFyX2NvdW50OyB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDA0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2hhcGUgPVxuICB8IEZ1bmN0aW9uXG4gIHwgTGF6eVxuICB8IENsYXNzXG4gIHwgTW9kdWxlIG9mIHNoYXBlIGFycmF5XG4gIHwgVmFsdWUgb2YgT2JqLnRcblxubGV0IHJlYyBpbml0X21vZF9maWVsZCBtb2R1IGkgbG9jIHNoYXBlID1cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIHNoYXBlIHdpdGhcbiAgICB8IEZ1bmN0aW9uIC0+XG4gICAgICAgbGV0IHJlYyBmbiAoeCA6ICdhKSA9XG4gICAgICAgICBsZXQgZm4nIDogJ2EgLT4gJ2IgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgaWYgZm4gPT0gZm4nIHRoZW5cbiAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZm4nIHggaW5cbiAgICAgICBPYmoucmVwciBmblxuICAgIHwgTGF6eSAtPlxuICAgICAgIGxldCByZWMgbCA9XG4gICAgICAgICBsYXp5IChcbiAgICAgICAgICAgbGV0IGwnID0gT2JqLm9iaiAoT2JqLmZpZWxkIG1vZHUgaSkgaW5cbiAgICAgICAgICAgaWYgbCA9PSBsJyB0aGVuXG4gICAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIExhenkuZm9yY2UgbCcpIGluXG4gICAgICAgT2JqLnJlcHIgbFxuICAgIHwgQ2xhc3MgLT5cbiAgICAgICBPYmoucmVwciAoQ2FtbGludGVybmFsT08uZHVtbXlfY2xhc3MgbG9jKVxuICAgIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgICB8IFZhbHVlIHYgLT4gdlxuICBpblxuICBPYmouc2V0X2ZpZWxkIG1vZHUgaSBpbml0XG5cbmFuZCBpbml0X21vZF9ibG9jayBsb2MgY29tcHMgPVxuICBsZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGNvbXBzIGluXG4gIGxldCBtb2R1ID0gT2JqLm5ld19ibG9jayAwIGxlbmd0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2MgY29tcHMuKGkpXG4gIGRvbmU7XG4gIG1vZHVcblxubGV0IGluaXRfbW9kIGxvYyBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLmluaXRfbW9kOiBub3QgYSBtb2R1bGVcIlxuXG5sZXQgcmVjIHVwZGF0ZV9tb2RfZmllbGQgbW9kdSBpIHNoYXBlIG4gPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgRnVuY3Rpb24gfCBMYXp5IC0+XG4gICAgIE9iai5zZXRfZmllbGQgbW9kdSBpIG5cbiAgfCBWYWx1ZSBfIC0+XG4gICAgICgpICgqIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IHRoZXJlICopXG4gIHwgQ2xhc3MgLT5cbiAgICAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPSA0KTtcbiAgICAgbGV0IGNsID0gT2JqLmZpZWxkIG1vZHUgaSBpblxuICAgICBmb3IgaiA9IDAgdG8gMyBkb1xuICAgICAgIE9iai5zZXRfZmllbGQgY2wgaiAoT2JqLmZpZWxkIG4gailcbiAgICAgZG9uZVxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIChPYmouZmllbGQgbW9kdSBpKSBuXG5cbmFuZCB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gbiA9XG4gIGFzc2VydCAoT2JqLnRhZyBuID0gMCAmJiBPYmouc2l6ZSBuID49IEFycmF5Lmxlbmd0aCBjb21wcyk7XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY29tcHMgLSAxIGRvXG4gICAgdXBkYXRlX21vZF9maWVsZCBvIGkgY29tcHMuKGkpIChPYmouZmllbGQgbiBpKVxuICBkb25lXG5cbmxldCB1cGRhdGVfbW9kIHNoYXBlIG8gbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgdXBkYXRlX21vZF9ibG9jayBjb21wcyBvIG5cbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLnVwZGF0ZV9tb2Q6IG5vdCBhIG1vZHVsZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPSBzaWdcblxuICB0eXBlIGtleVxuICB0eXBlICEnYSB0XG4gIHZhbCBjcmVhdGUgOiA/cmFuZG9tICgqdGh3YXJ0IHRvb2xzL3N5bmNfc3RkbGliX2RvY3MqKSA6IGJvb2wgLT4gaW50IC0+ICdhIHRcbiAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gIHZhbCBmaW5kX29wdCA6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG5cbiAgdHlwZSBrZXlcbiAgdHlwZSAhJ2EgdFxuICB2YWwgY3JlYXRlIDogaW50IC0+ICdhIHRcbiAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gIHZhbCBmaW5kX29wdCA6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgR2VuSGFzaFRhYmxlID0gc3RydWN0XG5cbiAgdHlwZSBlcXVhbCA9XG4gIHwgRVRydWUgfCBFRmFsc2VcbiAgfCBFRGVhZCAoKiogdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHJlY2xhaW1lZCB0aGUgZGF0YSAqKVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkKEg6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgJ2EgY29udGFpbmVyXG4gICAgdmFsIGNyZWF0ZTogdCAtPiAnYSAtPiAnYSBjb250YWluZXJcbiAgICB2YWwgc2VlZGVkX2hhc2g6IGludCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogJ2EgY29udGFpbmVyIC0+IHQgLT4gZXF1YWxcbiAgICB2YWwgZ2V0X2RhdGE6ICdhIGNvbnRhaW5lciAtPiAnYSBvcHRpb25cbiAgICB2YWwgc2V0X2tleV9kYXRhOiAnYSBjb250YWluZXIgLT4gdCAtPiAnYSAtPiB1bml0XG4gICAgdmFsIGNoZWNrX2tleTogJ2EgY29udGFpbmVyIC0+IGJvb2xcbiAgZW5kKSA6IFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudFxuICA9IHN0cnVjdFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICAgICAgbXV0YWJsZSBkYXRhOiAnYSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICAgICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICAgICAgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gICAgICB9XG5cbiAgICBhbmQgJ2EgYnVja2V0bGlzdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgQ29ucyBvZiBpbnQgKCogaGFzaCBvZiB0aGUga2V5ICopICogJ2EgSC5jb250YWluZXIgKiAnYSBidWNrZXRsaXN0XG5cbiAgICAoKiogdGhlIGhhc2ggb2YgdGhlIGtleSBpcyBrZXB0IGluIG9yZGVyIHRvIHRlc3QgdGhlIGVxdWFsaXR5IG9mIHRoZSBoYXNoXG4gICAgICBiZWZvcmUgdGhlIGtleS4gU2FtZSByZWFzb24gYXMgZm9yIFdlYWsuTWFrZSAqKVxuXG4gICAgdHlwZSBrZXkgPSBILnRcblxuICAgIGxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICAgICAgaWYgeCA+PSBuIHRoZW4geFxuICAgICAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICAgICAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG4gICAgbGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSlcblxuICAgIGxldCBjcmVhdGUgPyhyYW5kb20gPSAoSGFzaHRibC5pc19yYW5kb21pemVkICgpKSkgaW5pdGlhbF9zaXplID1cbiAgICAgIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgICAgIGxldCBzZWVkID0gaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykgZWxzZSAwIGluXG4gICAgICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbiAgICBsZXQgY2xlYXIgaCA9XG4gICAgICBoLnNpemUgPC0gMDtcbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICBkb25lXG5cbiAgICBsZXQgcmVzZXQgaCA9XG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICAgICAgaWYgbGVuID0gaC5pbml0aWFsX3NpemUgdGhlblxuICAgICAgICBjbGVhciBoXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSBoLmluaXRpYWxfc2l6ZSBFbXB0eVxuICAgICAgZW5kXG5cbiAgICBsZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5LmNvcHkgaC5kYXRhIH1cblxuICAgIGxldCBrZXlfaW5kZXggaCBoa2V5ID1cbiAgICAgIGhrZXkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgY2xlYW4gaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIEVtcHR5XG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSB3aGVuIG5vdCAoSC5jaGVja19rZXkgYykgLT5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgfCBDb25zKGhrZXksIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBDb25zKGhrZXksIGMsIGRvX2J1Y2tldCByZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGQuKGkpIDwtIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgKCoqIHJlc2l6ZSBpcyB0aGUgb25seSBmdW5jdGlvbiB0byBkbyB0aGUgYWN0dWFsIGNsZWFuaW5nIG9mIGRlYWQga2V5c1xuICAgICAgICAocmVtb3ZlIGRvZXMgaXQganVzdCBiZWNhdXNlIGl0IGNvdWxkKS5cblxuICAgICAgICBUaGUgZ29hbCBpcyB0bzpcblxuICAgICAgICAtIG5vdCByZXNpemUgaW5maW5pdGVseSB3aGVuIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGFsaXZlIGtleXMgaXNcbiAgICAgICAgYm91bmRlZCBidXQga2V5cyBhcmUgY29udGludW91c2x5IGFkZGVkLiBUaGF0IHdvdWxkIGhhcHBlbiBpZlxuICAgICAgICB0aGlzIGZ1bmN0aW9uIGFsd2F5cyByZXNpemUuXG4gICAgICAgIC0gbm90IGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciBlYWNoIGFkZGl0aW9uLCB0aGF0IHdvdWxkIGhhcHBlbiBpZiB0aGlzXG4gICAgICAgIGZ1bmN0aW9uIGRvbid0IHJlc2l6ZSBldmVuIHdoZW4gb25seSBvbmUga2V5IGlzIGRlYWQuXG5cbiAgICAgICAgU28gdGhlIGFsZ29yaXRobTpcbiAgICAgICAgLSBjbGVhbiB0aGUga2V5cyBiZWZvcmUgcmVzaXppbmdcbiAgICAgICAgLSBpZiB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBrZXlzIGlzIGxlc3MgdGhhbiBoYWxmIHRoZSBzaXplIG9mIHRoZVxuICAgICAgICBhcnJheSwgZG9uJ3QgcmVzaXplLlxuICAgICAgICAtIGlmIGl0IGlzIG1vcmUsIHJlc2l6ZS5cblxuICAgICAgICBUaGUgc2Vjb25kIHByb2JsZW0gcmVtYWlucyBpZiB0aGUgdGFibGUgcmVhY2hlcyB7IVN5cy5tYXhfYXJyYXlfbGVuZ3RofS5cblxuICAgICopXG4gICAgbGV0IHJlc2l6ZSBoID1cbiAgICAgIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICAgICAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gICAgICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgICAgIGNsZWFuIGg7XG4gICAgICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoICYmIGguc2l6ZSA+PSBvc2l6ZSBsc3IgMSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICAgICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAoKiBzbyB0aGF0IGtleV9pbmRleCBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgICAgIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgICAgIHwgQ29ucyhoa2V5LCBkYXRhLCByZXN0KSAtPlxuICAgICAgICAgICAgICBpbnNlcnRfYnVja2V0IHJlc3Q7ICgqIHByZXNlcnZlIG9yaWdpbmFsIG9yZGVyIG9mIGVsZW1lbnRzICopXG4gICAgICAgICAgICAgIGxldCBuaWR4ID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgICAgICAgICBuZGF0YS4obmlkeCkgPC0gQ29ucyhoa2V5LCBkYXRhLCBuZGF0YS4obmlkeCkpIGluXG4gICAgICAgIGZvciBpID0gMCB0byBvc2l6ZSAtIDEgZG9cbiAgICAgICAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICAgICAgICBkb25lXG4gICAgICBlbmRcblxuICAgIGxldCBhZGQgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25zKGhrZXksIGNvbnRhaW5lciwgaC5kYXRhLihpKSkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgICAgfCBDb25zKGhrLCBjLCBuZXh0KSB3aGVuIGhrZXkgPSBoayAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgICB8IEVUcnVlIC0+IGguc2l6ZSA8LSBoLnNpemUgLSAxOyBuZXh0XG4gICAgICAgICAgICB8IEVGYWxzZSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpXG4gICAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgICAgKCogVGhlIGRlYWQga2V5IGlzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZC4gSXQgaXMgYWNjZXB0YWJsZVxuICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyBmdW5jdGlvbiBzaW5jZSBpdCBhbHJlYWR5IHJlbW92ZXMgYSBiaW5kaW5nICopXG4gICAgICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICAgICAgcmVtb3ZlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKGhrLGMsbmV4dCkgLT4gQ29ucyhoaywgYywgcmVtb3ZlX2J1Y2tldCBuZXh0KSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIHJlbW92ZV9idWNrZXQgaC5kYXRhLihpKVxuXG4gICAgKCoqIHshZmluZH0gZG9uJ3QgcmVtb3ZlIGRlYWQga2V5cyBiZWNhdXNlIGl0IHdvdWxkIGJlIHN1cnByaXNpbmcgZm9yXG4gICAgICAgIHRoZSB1c2VyIHRoYXQgYSByZWFkLW9ubHkgZnVuY3Rpb24gbXV0YXRlcyB0aGUgc3RhdGUgKGVnLiBjb25jdXJyZW50XG4gICAgICAgIGFjY2VzcykuIFNhbWUgZm9yIHshbWVtfS5cbiAgICAqKVxuICAgIGxldCByZWMgZmluZF9yZWMga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIGlzIG5vdCBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIGdjIGNhbiBydW4gYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgIEguZXF1YWwgYW5kIEguZ2V0X2RhdGEgKilcbiAgICAgICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlYyBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSBoa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgKGguZGF0YS4oa2V5X2luZGV4IGggaGtleSkpXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBbXVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkOjpmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cblxuICAgIGxldCByZXBsYWNlIGgga2V5IGluZm8gPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gSC5zZXRfa2V5X2RhdGEgYyBrZXkgaW5mb1xuICAgICAgICAgICAgfCBFRmFsc2UgfCBFRGVhZCAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKF8sXyxuZXh0KSAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIHRyeVxuICAgICAgICByZXBsYWNlX2J1Y2tldCBsXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25zKGhrZXksIGNvbnRhaW5lciwgbCk7XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoayA9IGhrZXkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IHRydWVcbiAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IG1lbV9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF9oaywgX2MsIHJlc3QpIC0+IG1lbV9pbl9idWNrZXQgcmVzdCBpblxuICAgICAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cbiAgICBsZXQgbGVuZ3RoIGggPSBoLnNpemVcblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSByZXN0XG5cbiAgICBsZXQgc3RhdHMgaCA9XG4gICAgICBsZXQgbWJsID1cbiAgICAgICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICAgICAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICAgICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgICAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICAgICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gSC5jaGVja19rZXkgYyAtPlxuICAgICAgICAgIGJ1Y2tldF9sZW5ndGhfYWxpdmUgKGFjY3UgKyAxKSByZXN0XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1IHJlc3RcblxuICAgIGxldCBzdGF0c19hbGl2ZSBoID1cbiAgICAgIGxldCBzaXplID0gcmVmIDAgaW5cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiKSkgMCBoLmRhdGFcbiAgICAgIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiIGluXG4gICAgICAgICAgIHNpemUgOj0gIXNpemUgKyBsO1xuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9ICFzaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2JqRXBoID0gT2JqLkVwaGVtZXJvblxuXG5sZXQgX29ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB4XG4gIHwgU29tZSB2IC0+IFNvbWUgKE9iai5vYmogdilcblxuKCoqIFRoZSBwcmV2aW91cyBmdW5jdGlvbiBpcyB0eXBlZCBzbyB0aGlzIG9uZSBpcyBhbHNvIGNvcnJlY3QgKilcbmxldCBvYmpfb3B0IDogT2JqLnQgb3B0aW9uIC0+ICdhIG9wdGlvbiA9IGZ1biB4IC0+IE9iai5tYWdpYyB4XG5cblxubW9kdWxlIEsxID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSAxXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IHNldF9rZXkgKHQ6KCdrLCdkKSB0KSAoazonaykgOiB1bml0ID0gT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSAoZDonZCkgOiB1bml0ID0gT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuXG4gIGxldCBtYWtlIGtleSBkYXRhID1cbiAgICBsZXQgZXBoID0gY3JlYXRlICgpIGluXG4gICAgc2V0X2RhdGEgZXBoIGRhdGE7XG4gICAgc2V0X2tleSBlcGgga2V5O1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5ID1cbiAgICBtYXRjaCBnZXRfa2V5IGVwaCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5IC0+IGdldF9kYXRhIGVwaFxuICAgIHwgU29tZSBfIC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleSBjIGs7XG4gICAgICAgIGNcbiAgICAgIGxldCBzZWVkZWRfaGFzaCA9IEguc2VlZGVkX2hhc2hcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICAoKiB7IWdldF9rZXlfY29weX0gaXMgbm90IHVzZWQgYmVjYXVzZSB0aGUgZXF1YWxpdHkgb2YgdGhlIHVzZXIgY2FuIGJlXG4gICAgICAgICAgICB0aGUgcGh5c2ljYWwgZXF1YWxpdHkgKilcbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgaycgLT5cbiAgICAgICAgICAgIGlmIEguZXF1YWwgayBrJyB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgayBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5ID0gY2hlY2tfa2V5XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2ssICdkKSB0ID0gKCdrLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrMV9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsgZCA9IGIgOj0gazFfbWFrZSBrIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleSBrIGUgPVxuICAgICAgbWF0Y2ggZ2V0X2tleSBlIHdpdGhcbiAgICAgIHwgU29tZSB4IHdoZW4geCA9PSBrIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleSBrIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXkgaykgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgSzIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2sxLCAnazIsICdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrMSwnazIsJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDJcblxuICBsZXQgZ2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2sxIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IHNldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSAoazonazEpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgZ2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2syIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMSlcbiAgbGV0IHNldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSAoazonazIpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAxIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDFcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgKGQ6J2QpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG5cbiAgbGV0IG1ha2Uga2V5MSBrZXkyIGRhdGEgPVxuICAgIGxldCBlcGggPSBjcmVhdGUgKCkgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBzZXRfa2V5MSBlcGgga2V5MTtcbiAgICBzZXRfa2V5MiBlcGgga2V5MjtcbiAgICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkga2V5MSk7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXkxIGtleTIgPVxuICAgIG1hdGNoIGdldF9rZXkxIGVwaCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5MSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBnZXRfa2V5MiBlcGggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5MiAtPiBnZXRfZGF0YSBlcGhcbiAgICAgICAgfCBTb21lIF8gLT4gTm9uZVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgXyAtPiBOb25lXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWRcbiAgICAgIChIMTpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpXG4gICAgICAoSDI6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChIMS50LEgyLnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50XG4gICAgICBsZXQgY3JlYXRlIChrMSxrMikgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoIHNlZWQgKGsxLGsyKSA9XG4gICAgICAgIEgxLnNlZWRlZF9oYXNoIHNlZWQgazEgKyBIMi5zZWVkZWRfaGFzaCBzZWVkIGsyICogNjU1OTlcbiAgICAgIGxldCBlcXVhbCBjIChrMSxrMikgPVxuICAgICAgICBtYXRjaCBnZXRfa2V5MSBjLCBnZXRfa2V5MiBjIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXyAsIE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrMScsIFNvbWUgazInIC0+XG4gICAgICAgICAgICBpZiBIMS5lcXVhbCBrMSBrMScgJiYgSDIuZXF1YWwgazIgazInXG4gICAgICAgICAgICB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgKGsxLGsyKSBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9IGNoZWNrX2tleTEgYyAmJiBjaGVja19rZXkyIGNcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDE6IEhhc2h0YmwuSGFzaGVkVHlwZSkoSDI6IEhhc2h0YmwuSGFzaGVkVHlwZSk6XG4gICAgKFMgd2l0aCB0eXBlIGtleSA9IEgxLnQgKiBIMi50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDEudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgxLmVxdWFsXG4gICAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSDEuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEgyLnRcbiAgICAgICAgICBsZXQgZXF1YWwgPSBIMi5lcXVhbFxuICAgICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEgyLmhhc2ggeFxuICAgICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnazEsICdrMiwgJ2QpIHQgPSAoJ2sxLCAnazIsICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGsyX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgazEgazIgZCA9IGIgOj0gazJfbWFrZSBrMSBrMiBkIDo6ICFiXG5cbiAgICBsZXQgdGVzdF9rZXlzIGsxIGsyIGUgPVxuICAgICAgbWF0Y2ggZ2V0X2tleTEgZSwgZ2V0X2tleTIgZSB3aXRoXG4gICAgICB8IFNvbWUgeDEsIFNvbWUgeDIgd2hlbiB4MSA9PSBrMSAmJiB4MiA9PSBrMiAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZW1vdmUgYiBrMSBrMiA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5cyBrMSBrMiBoIC0+IGIgOj0gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgIHwgaCA6OiB0IC0+IGxvb3AgdCAoaCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAhYiBbXVxuXG4gICAgbGV0IGZpbmQgYiBrMSBrMiA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleXMgazEgazIpICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIEtuID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlIG4gOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIG5cbiAgbGV0IGxlbmd0aCAoazooJ2ssJ2QpIHQpIDogaW50ID0gT2JqRXBoLmxlbmd0aCBrXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCBuKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgKGs6J2spIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCBuIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgblxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG5cbiAgbGV0IG1ha2Uga2V5cyBkYXRhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBrZXlzIGluXG4gICAgbGV0IGVwaCA9IGNyZWF0ZSBsIGluXG4gICAgc2V0X2RhdGEgZXBoIGRhdGE7XG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHNldF9rZXkgZXBoIGkga2V5cy4oaSkgZG9uZTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleXMgPVxuICAgIGxldCBsID0gbGVuZ3RoIGVwaCBpblxuICAgIHRyeVxuICAgICAgaWYgbCA8PiBBcnJheS5sZW5ndGgga2V5cyB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBlcGggaSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZSBFeGl0XG4gICAgICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXlzLihpKSAtPiAoKVxuICAgICAgICB8IFNvbWUgXyAtPiByYWlzZSBFeGl0XG4gICAgICBkb25lO1xuICAgICAgZ2V0X2RhdGEgZXBoXG4gICAgd2l0aCBFeGl0IC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50IGFycmF5XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlIChBcnJheS5sZW5ndGggaykgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGNcbiAgICAgIGxldCBzZWVkZWRfaGFzaCBzZWVkIGsgPVxuICAgICAgICBsZXQgaCA9IHJlZiAwIGluXG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBoIDo9IEguc2VlZGVkX2hhc2ggc2VlZCBrLihpKSAqIDY1NTk5ICsgIWg7XG4gICAgICAgIGRvbmU7XG4gICAgICAgICFoXG4gICAgICBsZXQgZXF1YWwgYyBrID1cbiAgICAgICAgbGV0IGxlbiAgPSBBcnJheS5sZW5ndGggayBpblxuICAgICAgICBsZXQgbGVuJyA9IGxlbmd0aCBjIGluXG4gICAgICAgIGlmIGxlbiAhPSBsZW4nIHRoZW4gR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHJlYyBlcXVhbF9hcnJheSBrIGMgaSA9XG4gICAgICAgICAgICBpZiBpIDwgMCB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgaSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgICAgICAgfCBTb21lIGtpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGsuKGkpIGtpXG4gICAgICAgICAgICAgICAgICB0aGVuIGVxdWFsX2FycmF5IGsgYyAoaS0xKVxuICAgICAgICAgICAgICAgICAgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcXVhbF9hcnJheSBrIGMgKGxlbi0xKVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5IGMgPVxuICAgICAgICBsZXQgcmVjIGNoZWNrIGMgaSA9XG4gICAgICAgICAgaSA8IDAgfHwgKGNoZWNrX2tleSBjIGkgJiYgY2hlY2sgYyAoaS0xKSkgaW5cbiAgICAgICAgY2hlY2sgYyAobGVuZ3RoIGMgLSAxKVxuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIOiBIYXNodGJsLkhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50IGFycmF5KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrLCAnZCkgdCA9ICgnaywgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQga25fbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrIGQgPSBiIDo9IGtuX21ha2UgayBkIDo6ICFiXG5cbiAgICBsZXQgdGVzdF9rZXlzIGsgZSA9XG4gICAgICB0cnlcbiAgICAgICAgaWYgbGVuZ3RoIGUgPD4gQXJyYXkubGVuZ3RoIGsgdGhlbiByYWlzZSBFeGl0O1xuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGsgLSAxIGRvXG4gICAgICAgICAgbWF0Y2ggZ2V0X2tleSBlIGkgd2l0aFxuICAgICAgICAgIHwgU29tZSB4IHdoZW4geCA9PSBrLihpKSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRydWVcbiAgICAgIHdpdGggRXhpdCAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleXMgayBoIC0+IGIgOj0gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgIHwgaCA6OiB0IC0+IGxvb3AgdCAoaCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAhYiBbXVxuXG4gICAgbGV0IGZpbmQgYiBrID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5cyBrKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgWGF2aWVyIExlcm95IGFuZCBEYW1pZW4gRG9saWdleiwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBnZW5lcmljX3F1b3RlIHF1b3RlcXVvdGUgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgaWYgcy5baV0gPSAnXFwnJ1xuICAgIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBxdW90ZXF1b3RlXG4gICAgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYiAgcy5baV1cbiAgZG9uZTtcbiAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcJyc7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMV1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9iYXNlbmFtZS5odG1sXG4gIEluIHN0ZXAgMSBvZiBbWzFdXSwgd2UgY2hvb3NlIHRvIHJldHVybiBcIi5cIiBmb3IgZW1wdHkgaW5wdXQuXG4gICAgKGZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgdmVyc2lvbnMgb2YgT0NhbWwpXG4gIEluIHN0ZXAgMiwgd2UgY2hvb3NlIHRvIHByb2Nlc3MgXCIvL1wiIG5vcm1hbGx5LlxuICBTdGVwIDYgaXMgbm90IGltcGxlbWVudGVkOiB3ZSBjb25zaWRlciB0aGF0IHRoZSBbc3VmZml4XSBvcGVyYW5kIGlzXG4gICAgYWx3YXlzIGFic2VudC4gIFN1ZmZpeGVzIGFyZSBoYW5kbGVkIGJ5IFtjaG9wX3N1ZmZpeF0gYW5kIFtjaG9wX2V4dGVuc2lvbl0uXG4qKVxubGV0IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIG5hbWUgPVxuICBsZXQgcmVjIGZpbmRfZW5kIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBmaW5kX2VuZCAobiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyBuIChuICsgMSlcbiAgYW5kIGZpbmRfYmVnIG4gcCA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCBwXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIFN0cmluZy5zdWIgbmFtZSAobiArIDEpIChwIC0gbiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyAobiAtIDEpIHBcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgZmluZF9lbmQgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMl1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9kaXJuYW1lLmh0bWxcbiAgSW4gc3RlcCA2IG9mIFtbMl1dLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4qKVxubGV0IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgdHJhaWxpbmdfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiB0cmFpbGluZ19zZXAgKG4gLSAxKVxuICAgIGVsc2UgYmFzZSBuXG4gIGFuZCBiYXNlIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIG5cbiAgICBlbHNlIGJhc2UgKG4gLSAxKVxuICBhbmQgaW50ZXJtZWRpYXRlX3NlcCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gaW50ZXJtZWRpYXRlX3NlcCAobiAtIDEpXG4gICAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAobiArIDEpXG4gIGluXG4gIGlmIG5hbWUgPSBcIlwiXG4gIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICBlbHNlIHRyYWlsaW5nX3NlcCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubW9kdWxlIHR5cGUgU1lTREVQUyA9IHNpZ1xuICB2YWwgbnVsbCA6IHN0cmluZ1xuICB2YWwgY3VycmVudF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcGFyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBkaXJfc2VwIDogc3RyaW5nXG4gIHZhbCBpc19kaXJfc2VwIDogc3RyaW5nIC0+IGludCAtPiBib29sXG4gIHZhbCBpc19yZWxhdGl2ZSA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBpc19pbXBsaWNpdCA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBjaGVja19zdWZmaXggOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNob3Bfc3VmZml4X29wdCA6IHN1ZmZpeDpzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgdmFsIHRlbXBfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIHF1b3RlIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgcXVvdGVfY29tbWFuZCA6XG4gICAgc3RyaW5nIC0+ID9zdGRpbjogc3RyaW5nIC0+ID9zdGRvdXQ6IHN0cmluZyAtPiA/c3RkZXJyOiBzdHJpbmdcbiAgICAgICAgICAgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4gIHZhbCBiYXNlbmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGRpcm5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nXG5lbmRcblxubW9kdWxlIFVuaXggOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCIvZGV2L251bGxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIi9cIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBzLltpXSA9ICcvJ1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9IFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICAgU3RyaW5nLmVuZHNfd2l0aCB+c3VmZml4OnN1ZmYgbmFtZVxuXG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgfnN1ZmZpeCBmaWxlbmFtZSA9XG4gICAgbGV0IGxlbl9zID0gU3RyaW5nLmxlbmd0aCBzdWZmaXggYW5kIGxlbl9mID0gU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSBpblxuICAgIGlmIGxlbl9mID49IGxlbl9zIHRoZW5cbiAgICAgIGxldCByID0gU3RyaW5nLnN1YiBmaWxlbmFtZSAobGVuX2YgLSBsZW5fcykgbGVuX3MgaW5cbiAgICAgIGlmIHIgPSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID1cbiAgICB0cnkgU3lzLmdldGVudiBcIlRNUERJUlwiIHdpdGggTm90X2ZvdW5kIC0+IFwiL3RtcFwiXG4gIGxldCBxdW90ZSA9IGdlbmVyaWNfcXVvdGUgXCInXFxcXCcnXCJcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgcXVvdGUgKGNtZCA6OiBhcmdzKSlcbiAgICBeIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRlcnIgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFwiIDI+JjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGUgZilcbiAgbGV0IGJhc2VuYW1lID0gZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcm5hbWUgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG5lbmRcblxubW9kdWxlIFdpbjMyIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiTlVMXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCJcXFxcXCJcbiAgbGV0IGlzX2Rpcl9zZXAgcyBpID0gbGV0IGMgPSBzLltpXSBpbiBjID0gJy8nIHx8IGMgPSAnXFxcXCcgfHwgYyA9ICc6J1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9XG4gICAgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICdcXFxcJylcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBuLlsxXSA8PiAnOicpXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi5cXFxcXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLlxcXFxcIilcbiAgbGV0IGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICAgU3RyaW5nLmxlbmd0aCBuYW1lID49IFN0cmluZy5sZW5ndGggc3VmZiAmJlxuICAgKGxldCBzID0gU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBTdHJpbmcubGVuZ3RoIHN1ZmYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZy5sZW5ndGggc3VmZikgaW5cbiAgICBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHMgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmYpXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSByID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVEVNUFwiIHdpdGggTm90X2ZvdW5kIC0+IFwiLlwiXG4gIGxldCBxdW90ZSBzID1cbiAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJztcbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJyBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdcXFwiJyAtPiBsb29wX2JzIDAgaTtcbiAgICAgIHwgJ1xcXFwnIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCBjICAgIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGM7IGxvb3AgKGkrMSk7XG4gICAgYW5kIGxvb3BfYnMgbiBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgICAgICBhZGRfYnMgbjtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnXFxcIicgLT4gYWRkX2JzICgyKm4rMSk7IEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJzsgbG9vcCAoaSsxKTtcbiAgICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAobisxKSAoaSsxKTtcbiAgICAgICAgfCBfICAgIC0+IGFkZF9icyBuOyBsb29wIGlcbiAgICAgIGVuZFxuICAgIGFuZCBhZGRfYnMgbiA9IGZvciBfaiA9IDEgdG8gbiBkbyBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7IGRvbmVcbiAgICBpblxuICAgIGxvb3AgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuKCpcblF1b3RpbmcgY29tbWFuZHMgZm9yIGV4ZWN1dGlvbiBieSBjbWQuZXhlIGlzIGRpZmZpY3VsdC5cbjEtIEVhY2ggYXJndW1lbnQgaXMgZmlyc3QgcXVvdGVkIHVzaW5nIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmUsIHRvXG4gICBwcm90ZWN0IGl0IGFnYWluc3QgdGhlIHByb2Nlc3NpbmcgcGVyZm9ybWVkIGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLFxuICAgdGhlbiBjbWQuZXhlJ3Mgc3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkIHdpdGggJ14nLCB1c2luZ1xuICAgdGhlIFwicXVvdGVfY21kXCIgZnVuY3Rpb24gYmVsb3cuICBGb3IgbW9yZSBkZXRhaWxzLCBzZWVcbiAgIGh0dHBzOi8vYmxvZ3MubXNkbi5taWNyb3NvZnQuY29tL3R3aXN0eWxpdHRsZXBhc3NhZ2VzYWxsYWxpa2UvMjAxMS8wNC8yM1xuMi0gVGhlIGNvbW1hbmQgYW5kIHRoZSByZWRpcmVjdGlvbiBmaWxlcywgaWYgYW55LCBtdXN0IGJlIGRvdWJsZS1xdW90ZWRcbiAgIGluIGNhc2UgdGhleSBjb250YWluIHNwYWNlcy4gIFRoaXMgcXVvdGluZyBpcyBpbnRlcnByZXRlZCBieSBjbWQuZXhlLFxuICAgbm90IGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLCBoZW5jZSB0aGUgXCJxdW90ZVwiIGZ1bmN0aW9uIGFib3ZlXG4gICBjYW5ub3QgYmUgdXNlZC4gIFRoZSB0d28gY2hhcmFjdGVycyB3ZSBkb24ndCBrbm93IGhvdyB0byBxdW90ZVxuICAgaW5zaWRlIGEgZG91YmxlLXF1b3RlZCBjbWQuZXhlIHN0cmluZyBhcmUgZG91YmxlLXF1b3RlIGFuZCBwZXJjZW50LlxuICAgV2UganVzdCBmYWlsIGlmIHRoZSBjb21tYW5kIG5hbWUgb3IgdGhlIHJlZGlyZWN0aW9uIGZpbGUgbmFtZXNcbiAgIGNvbnRhaW4gYSBkb3VibGUgcXVvdGUgKG5vdCBhbGxvd2VkIGluIFdpbmRvd3MgZmlsZSBuYW1lcywgYW55d2F5KVxuICAgb3IgYSBwZXJjZW50LiAgU2VlIGZ1bmN0aW9uIFwicXVvdGVfY21kX2ZpbGVuYW1lXCIgYmVsb3cuXG4zLSBUaGUgd2hvbGUgc3RyaW5nIHBhc3NlZCB0byBTeXMuY29tbWFuZCBpcyB0aGVuIGVuY2xvc2VkIGluIGRvdWJsZVxuICAgcXVvdGVzLCB3aGljaCBhcmUgaW1tZWRpYXRlbHkgc3RyaXBwZWQgYnkgY21kLmV4ZS4gIE90aGVyd2lzZSxcbiAgIHNvbWUgb2YgdGhlIGRvdWJsZSBxdW90ZXMgZnJvbSBzdGVwIDIgYWJvdmUgY2FuIGJlIG1pc3BhcnNlZC5cbiAgIFNlZSBlLmcuIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS85OTY1MTQxXG4qKVxuICBsZXQgcXVvdGVfY21kIHMgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgMjApIGluXG4gICAgU3RyaW5nLml0ZXJcbiAgICAgIChmdW4gYyAtPlxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAnKCcgfCAnKScgfCAnIScgfCAnXicgfCAnJScgfCAnXFxcIicgfCAnPCcgfCAnPicgfCAnJicgfCAnfCcgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdeJzsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGMpXG4gICAgICBzO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gIGxldCBxdW90ZV9jbWRfZmlsZW5hbWUgZiA9XG4gICAgaWYgU3RyaW5nLmV4aXN0cyAoZnVuY3Rpb24gJ1xcXCInIHwgJyUnIC0+IHRydWUgfCBfIC0+IGZhbHNlKSBmIHRoZW5cbiAgICAgIGZhaWx3aXRoIChcIkZpbGVuYW1lLnF1b3RlX2NvbW1hbmQ6IGJhZCBmaWxlIG5hbWUgXCIgXiBmKVxuICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIGYgJyAnIHRoZW5cbiAgICAgIFN0cmluZy5jb25jYXQgXCJcIiBbXCJcXFwiXCI7IGY7IFwiXFxcIlwiXVxuICAgIGVsc2VcbiAgICAgIGZcbiAgKCogUmVkaXJlY3Rpb25zIGluIGNtZC5leGU6IHNlZSBodHRwczovL3NzNjQuY29tL250L3N5bnRheC1yZWRpcmVjdGlvbi5odG1sXG4gICAgIGFuZCBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9wcmV2aW91cy12ZXJzaW9ucy93aW5kb3dzL2l0LXByby93aW5kb3dzLXhwL2JiNDkwOTgyKHY9dGVjaG5ldC4xMClcbiAgKilcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtcbiAgICAgIFwiXFxcIlwiO1xuICAgICAgcXVvdGVfY21kX2ZpbGVuYW1lIGNtZDtcbiAgICAgIFwiIFwiO1xuICAgICAgcXVvdGVfY21kIChTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSBhcmdzKSk7XG4gICAgICAobWF0Y2ggc3RkaW4gIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiIDxcIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0ZGVyciA9IHN0ZG91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgXCJcXFwiXCJcbiAgICBdXG4gIGxldCBoYXNfZHJpdmUgcyA9XG4gICAgbGV0IGlzX2xldHRlciA9IGZ1bmN0aW9uXG4gICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgU3RyaW5nLmxlbmd0aCBzID49IDIgJiYgaXNfbGV0dGVyIHMuWzBdICYmIHMuWzFdID0gJzonXG4gIGxldCBkcml2ZV9hbmRfcGF0aCBzID1cbiAgICBpZiBoYXNfZHJpdmUgc1xuICAgIHRoZW4gKFN0cmluZy5zdWIgcyAwIDIsIFN0cmluZy5zdWIgcyAyIChTdHJpbmcubGVuZ3RoIHMgLSAyKSlcbiAgICBlbHNlIChcIlwiLCBzKVxuICBsZXQgZGlybmFtZSBzID1cbiAgICBsZXQgKGRyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBsZXQgZGlyID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoIGluXG4gICAgZHJpdmUgXiBkaXJcbiAgbGV0IGJhc2VuYW1lIHMgPVxuICAgIGxldCAoX2RyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoXG5lbmRcblxubW9kdWxlIEN5Z3dpbiA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwID0gV2luMzIuaXNfZGlyX3NlcFxuICBsZXQgaXNfcmVsYXRpdmUgPSBXaW4zMi5pc19yZWxhdGl2ZVxuICBsZXQgaXNfaW1wbGljaXQgPSBXaW4zMi5pc19pbXBsaWNpdFxuICBsZXQgY2hlY2tfc3VmZml4ID0gV2luMzIuY2hlY2tfc3VmZml4XG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgPSBXaW4zMi5jaG9wX3N1ZmZpeF9vcHRcbiAgbGV0IHRlbXBfZGlyX25hbWUgPSBVbml4LnRlbXBfZGlyX25hbWVcbiAgbGV0IHF1b3RlID0gVW5peC5xdW90ZVxuICBsZXQgcXVvdGVfY29tbWFuZCA9IFVuaXgucXVvdGVfY29tbWFuZFxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgU3lzZGVwcyA9XG4gICh2YWwgKG1hdGNoIFN5cy5vc190eXBlIHdpdGhcbiAgICAgICB8IFwiV2luMzJcIiAtPiAobW9kdWxlIFdpbjMyOiBTWVNERVBTKVxuICAgICAgIHwgXCJDeWd3aW5cIiAtPiAobW9kdWxlIEN5Z3dpbjogU1lTREVQUylcbiAgICAgICB8IF8gLT4gKG1vZHVsZSBVbml4OiBTWVNERVBTKSkpXG5cbmluY2x1ZGUgU3lzZGVwc1xuXG5sZXQgY29uY2F0IGRpcm5hbWUgZmlsZW5hbWUgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggZGlybmFtZSBpblxuICBpZiBsID0gMCB8fCBpc19kaXJfc2VwIGRpcm5hbWUgKGwtMSlcbiAgdGhlbiBkaXJuYW1lIF4gZmlsZW5hbWVcbiAgZWxzZSBkaXJuYW1lIF4gZGlyX3NlcCBeIGZpbGVuYW1lXG5cbmxldCBjaG9wX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICBpZiBjaGVja19zdWZmaXggbmFtZSBzdWZmXG4gIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3Bfc3VmZml4XCJcblxubGV0IGV4dGVuc2lvbl9sZW4gbmFtZSA9XG4gIGxldCByZWMgY2hlY2sgaTAgaSA9XG4gICAgaWYgaSA8IDAgfHwgaXNfZGlyX3NlcCBuYW1lIGkgdGhlbiAwXG4gICAgZWxzZSBpZiBuYW1lLltpXSA9ICcuJyB0aGVuIGNoZWNrIGkwIChpIC0gMSlcbiAgICBlbHNlIFN0cmluZy5sZW5ndGggbmFtZSAtIGkwXG4gIGluXG4gIGxldCByZWMgc2VhcmNoX2RvdCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaSAoaSAtIDEpXG4gICAgZWxzZSBzZWFyY2hfZG90IChpIC0gMSlcbiAgaW5cbiAgc2VhcmNoX2RvdCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubGV0IGV4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBcIlwiIGVsc2UgU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKSBsXG5cbmxldCBjaG9wX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3BfZXh0ZW5zaW9uXCJcbiAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbClcblxubGV0IHJlbW92ZV9leHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gbmFtZSBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5leHRlcm5hbCBvcGVuX2Rlc2M6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcbmV4dGVybmFsIGNsb3NlX2Rlc2M6IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19jbG9zZVwiXG5cbmxldCBwcm5nX2tleSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSBSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXRcblxubGV0IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmFuZG9tX3N0YXRlID0gRG9tYWluLkRMUy5nZXQgcHJuZ19rZXkgaW5cbiAgbGV0IHJuZCA9IChSYW5kb20uU3RhdGUuYml0cyByYW5kb21fc3RhdGUpIGxhbmQgMHhGRkZGRkYgaW5cbiAgY29uY2F0IHRlbXBfZGlyIChQcmludGYuc3ByaW50ZiBcIiVzJTA2eCVzXCIgcHJlZml4IHJuZCBzdWZmaXgpXG5cbmxldCBjdXJyZW50X3RlbXBfZGlyX25hbWUgPVxuICBEb21haW4uRExTLm5ld19rZXkgfnNwbGl0X2Zyb21fcGFyZW50OkZ1bi5pZCAoZnVuICgpIC0+IHRlbXBfZGlyX25hbWUpXG5cbmxldCBzZXRfdGVtcF9kaXJfbmFtZSBzID0gRG9tYWluLkRMUy5zZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lIHNcbmxldCBnZXRfdGVtcF9kaXJfbmFtZSAoKSA9IERvbWFpbi5ETFMuZ2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZVxuXG5sZXQgdGVtcF9maWxlID8odGVtcF9kaXIgPSBEb21haW4uRExTLmdldCBjdXJyZW50X3RlbXBfZGlyX25hbWUpIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgY2xvc2VfZGVzYyhvcGVuX2Rlc2MgbmFtZSBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fZXhjbF0gMG82MDApO1xuICAgICAgbmFtZVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAyMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcblxubGV0IG9wZW5fdGVtcF9maWxlID8obW9kZSA9IFtPcGVuX3RleHRdKSA/KHBlcm1zID0gMG82MDApXG4gICAgPyh0ZW1wX2RpciA9IERvbWFpbi5ETFMuZ2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSlcbiAgICBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIChuYW1lLFxuICAgICAgIG9wZW5fb3V0X2dlbiAoT3Blbl93cm9ubHk6Ok9wZW5fY3JlYXQ6Ok9wZW5fZXhjbDo6bW9kZSkgcGVybXMgbmFtZSlcbiAgICB3aXRoIFN5c19lcnJvciBfIGFzIGUgLT5cbiAgICAgIGlmIGNvdW50ZXIgPj0gMjAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG5cbmxldCB0ZW1wX2RpciA/KHRlbXBfZGlyID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lKVxuICAgID8ocGVybXMgPSAwbzcwMCkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICBTeXMubWtkaXIgbmFtZSBwZXJtcztcbiAgICAgIG5hbWVcbiAgICB3aXRoIFN5c19lcnJvciBfIGFzIGUgLT5cbiAgICAgIGlmIGNvdW50ZXIgPj0gMjAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENvbXBsZXggbnVtYmVycyAqKVxuXG50eXBlIHQgPSB7IHJlOiBmbG9hdDsgaW06IGZsb2F0IH1cblxubGV0IHplcm8gPSB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG5sZXQgb25lID0geyByZSA9IDEuMDsgaW0gPSAwLjAgfVxubGV0IGkgPSB7IHJlID0gMC4wOyBpbSA9IDEuMCB9XG5cbmxldCBhZGQgeCB5ID0geyByZSA9IHgucmUgKy4geS5yZTsgaW0gPSB4LmltICsuIHkuaW0gfVxuXG5sZXQgc3ViIHggeSA9IHsgcmUgPSB4LnJlIC0uIHkucmU7IGltID0geC5pbSAtLiB5LmltIH1cblxubGV0IG5lZyB4ID0geyByZSA9IC0uIHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBjb25qIHggPSB7IHJlID0geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IG11bCB4IHkgPSB7IHJlID0geC5yZSAqLiB5LnJlIC0uIHguaW0gKi4geS5pbTtcbiAgICAgICAgICAgICAgICBpbSA9IHgucmUgKi4geS5pbSArLiB4LmltICouIHkucmUgfVxuXG5sZXQgZGl2IHggeSA9XG4gIGlmIGFic19mbG9hdCB5LnJlID49IGFic19mbG9hdCB5LmltIHRoZW5cbiAgICBsZXQgciA9IHkuaW0gLy4geS5yZSBpblxuICAgIGxldCBkID0geS5yZSArLiByICouIHkuaW0gaW5cbiAgICB7IHJlID0gKHgucmUgKy4gciAqLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAoeC5pbSAtLiByICouIHgucmUpIC8uIGQgfVxuICBlbHNlXG4gICAgbGV0IHIgPSB5LnJlIC8uIHkuaW0gaW5cbiAgICBsZXQgZCA9IHkuaW0gKy4gciAqLiB5LnJlIGluXG4gICAgeyByZSA9IChyICouIHgucmUgKy4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHIgKi4geC5pbSAtLiB4LnJlKSAvLiBkIH1cblxubGV0IGludiB4ID0gZGl2IG9uZSB4XG5cbmxldCBub3JtMiB4ID0geC5yZSAqLiB4LnJlICsuIHguaW0gKi4geC5pbVxuXG5sZXQgbm9ybSB4ID0gRmxvYXQuaHlwb3QgeC5yZSB4LmltXG5cbmxldCBhcmcgeCA9IGF0YW4yIHguaW0geC5yZVxuXG5sZXQgcG9sYXIgbiBhID0geyByZSA9IGNvcyBhICouIG47IGltID0gc2luIGEgKi4gbiB9XG5cbmxldCBzcXJ0IHggPVxuICBpZiB4LnJlID0gMC4wICYmIHguaW0gPSAwLjAgdGhlbiB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGFic19mbG9hdCB4LnJlIGFuZCBpID0gYWJzX2Zsb2F0IHguaW0gaW5cbiAgICBsZXQgdyA9XG4gICAgICBpZiByID49IGkgdGhlbiBiZWdpblxuICAgICAgICBsZXQgcSA9IGkgLy4gciBpblxuICAgICAgICBzcXJ0KHIpICouIHNxcnQoMC41ICouICgxLjAgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgcSA9IHIgLy4gaSBpblxuICAgICAgICBzcXJ0KGkpICouIHNxcnQoMC41ICouIChxICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGluXG4gICAgaWYgeC5yZSA+PSAwLjBcbiAgICB0aGVuIHsgcmUgPSB3OyAgaW0gPSAwLjUgKi4geC5pbSAvLiB3IH1cbiAgICBlbHNlIHsgcmUgPSAwLjUgKi4gaSAvLiB3OyAgaW0gPSBpZiB4LmltID49IDAuMCB0aGVuIHcgZWxzZSAtLiB3IH1cbiAgZW5kXG5cbmxldCBleHAgeCA9XG4gIGxldCBlID0gZXhwIHgucmUgaW4geyByZSA9IGUgKi4gY29zIHguaW07IGltID0gZSAqLiBzaW4geC5pbSB9XG5cbmxldCBsb2cgeCA9IHsgcmUgPSBsb2cgKG5vcm0geCk7IGltID0gYXRhbjIgeC5pbSB4LnJlIH1cblxubGV0IHBvdyB4IHkgPSBleHAgKG11bCB5IChsb2cgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgIEtDIFNpdmFyYW1ha3Jpc2huYW4sIEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IC4uXG5leHRlcm5hbCBwZXJmb3JtIDogJ2EgdCAtPiAnYSA9IFwiJXBlcmZvcm1cIlxuXG50eXBlIGV4biArPSBVbmhhbmRsZWQ6ICdhIHQgLT4gZXhuXG5leGNlcHRpb24gQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFxuXG5sZXQgKCkgPVxuICBsZXQgcHJpbnRlciA9IGZ1bmN0aW9uXG4gICAgfCBVbmhhbmRsZWQgeCAtPlxuICAgICAgICBsZXQgbXNnID0gUHJpbnRmLnNwcmludGYgXCJTdGRsaWIuRWZmZWN0LlVuaGFuZGxlZCglcylcIlxuICAgICAgICAgICAgKFByaW50ZXhjLnN0cmluZ19vZl9leHRlbnNpb25fY29uc3RydWN0b3IgQEAgT2JqLnJlcHIgeClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSBtc2dcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIHByaW50ZXJcblxuKCogUmVnaXN0ZXIgdGhlIGV4Y2VwdGlvbnMgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gYWNjZXNzIGl0ICopXG50eXBlIF8gdCArPSBTaG91bGRfbm90X3NlZV90aGlzX18gOiB1bml0IHRcbmxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiRWZmZWN0LlVuaGFuZGxlZFwiXG4gICAgICAgICAgKFVuaGFuZGxlZCBTaG91bGRfbm90X3NlZV90aGlzX18pXG5sZXQgXyA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcIkVmZmVjdC5Db250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXCJcbiAgICAgICAgICBDb250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXG5cbnR5cGUgKCdhLCAnYikgc3RhY2sgW0BAaW1tZWRpYXRlXVxudHlwZSBsYXN0X2ZpYmVyIFtAQGltbWVkaWF0ZV1cblxuZXh0ZXJuYWwgcmVzdW1lIDpcbiAgKCdhLCAnYikgc3RhY2sgLT4gKCdjIC0+ICdhKSAtPiAnYyAtPiBsYXN0X2ZpYmVyIC0+ICdiID0gXCIlcmVzdW1lXCJcbmV4dGVybmFsIHJ1bnN0YWNrIDogKCdhLCAnYikgc3RhY2sgLT4gKCdjIC0+ICdhKSAtPiAnYyAtPiAnYiA9IFwiJXJ1bnN0YWNrXCJcblxubW9kdWxlIERlZXAgPSBzdHJ1Y3RcblxuICB0eXBlICgnYSwnYikgY29udGludWF0aW9uXG5cbiAgZXh0ZXJuYWwgdGFrZV9jb250X25vZXhjIDogKCdhLCAnYikgY29udGludWF0aW9uIC0+ICgnYSwgJ2IpIHN0YWNrID1cbiAgICBcImNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1wiIFtAQG5vYWxsb2NdXG4gIGV4dGVybmFsIGFsbG9jX3N0YWNrIDpcbiAgICAoJ2EgLT4gJ2IpIC0+XG4gICAgKGV4biAtPiAnYikgLT5cbiAgICAoJ2MgdCAtPiAoJ2MsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBzdGFjayA9IFwiY2FtbF9hbGxvY19zdGFja1wiXG4gIGV4dGVybmFsIGNvbnRfbGFzdF9maWJlciA6ICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyID0gXCIlZmllbGQxXCJcbiAgZXh0ZXJuYWwgY29udF9zZXRfbGFzdF9maWJlciA6XG4gICAgKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gdW5pdCA9IFwiJXNldGZpZWxkMVwiXG5cbiAgbGV0IGNvbnRpbnVlIGsgdiA9XG4gICAgcmVzdW1lICh0YWtlX2NvbnRfbm9leGMgaykgKGZ1biB4IC0+IHgpIHYgKGNvbnRfbGFzdF9maWJlciBrKVxuXG4gIGxldCBkaXNjb250aW51ZSBrIGUgPVxuICAgIHJlc3VtZSAodGFrZV9jb250X25vZXhjIGspIChmdW4gZSAtPiByYWlzZSBlKSBlIChjb250X2xhc3RfZmliZXIgaylcblxuICBsZXQgZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UgayBlIGJ0ID1cbiAgICByZXN1bWUgKHRha2VfY29udF9ub2V4YyBrKSAoZnVuIGUgLT4gUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgZSBidClcbiAgICAgIGUgKGNvbnRfbGFzdF9maWJlciBrKVxuXG4gIHR5cGUgKCdhLCdiKSBoYW5kbGVyID1cbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgdCAtPiAoKCdjLCdiKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbiAgZXh0ZXJuYWwgcmVwZXJmb3JtIDpcbiAgICAnYSB0IC0+ICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiID0gXCIlcmVwZXJmb3JtXCJcblxuICBsZXQgbWF0Y2hfd2l0aCBjb21wIGFyZyBoYW5kbGVyID1cbiAgICBsZXQgZWZmYyBlZmYgayBsYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGhhbmRsZXIuZWZmYyBlZmYgd2l0aFxuICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICBjb250X3NldF9sYXN0X2ZpYmVyIGsgbGFzdF9maWJlcjtcbiAgICAgICAgICBmIGtcbiAgICAgIHwgTm9uZSAtPiByZXBlcmZvcm0gZWZmIGsgbGFzdF9maWJlclxuICAgIGluXG4gICAgbGV0IHMgPSBhbGxvY19zdGFjayBoYW5kbGVyLnJldGMgaGFuZGxlci5leG5jIGVmZmMgaW5cbiAgICBydW5zdGFjayBzIGNvbXAgYXJnXG5cbiAgdHlwZSAnYSBlZmZlY3RfaGFuZGxlciA9XG4gICAgeyBlZmZjOiAnYi4gJ2IgdCAtPiAoKCdiLCdhKSBjb250aW51YXRpb24gLT4gJ2EpIG9wdGlvbiB9XG5cbiAgbGV0IHRyeV93aXRoIGNvbXAgYXJnIGhhbmRsZXIgPVxuICAgIGxldCBlZmZjJyBlZmYgayBsYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGhhbmRsZXIuZWZmYyBlZmYgd2l0aFxuICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICBjb250X3NldF9sYXN0X2ZpYmVyIGsgbGFzdF9maWJlcjtcbiAgICAgICAgICBmIGtcbiAgICAgIHwgTm9uZSAtPiByZXBlcmZvcm0gZWZmIGsgbGFzdF9maWJlclxuICAgIGluXG4gICAgbGV0IHMgPSBhbGxvY19zdGFjayAoZnVuIHggLT4geCkgKGZ1biBlIC0+IHJhaXNlIGUpIGVmZmMnIGluXG4gICAgcnVuc3RhY2sgcyBjb21wIGFyZ1xuXG4gIGV4dGVybmFsIGdldF9jYWxsc3RhY2sgOlxuICAgICgnYSwnYikgY29udGludWF0aW9uIC0+IGludCAtPiBQcmludGV4Yy5yYXdfYmFja3RyYWNlID1cbiAgICBcImNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcIlxuZW5kXG5cbm1vZHVsZSBTaGFsbG93ID0gc3RydWN0XG5cbiAgdHlwZSAoJ2EsJ2IpIGNvbnRpbnVhdGlvblxuXG4gIGV4dGVybmFsIGFsbG9jX3N0YWNrIDpcbiAgICAoJ2EgLT4gJ2IpIC0+XG4gICAgKGV4biAtPiAnYikgLT5cbiAgICAoJ2MgdCAtPiAoJ2MsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBzdGFjayA9IFwiY2FtbF9hbGxvY19zdGFja1wiXG5cbiAgZXh0ZXJuYWwgY29udF9sYXN0X2ZpYmVyIDogKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgPSBcIiVmaWVsZDFcIlxuICBleHRlcm5hbCBjb250X3NldF9sYXN0X2ZpYmVyIDpcbiAgICAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiB1bml0ID0gXCIlc2V0ZmllbGQxXCJcblxuICBsZXQgZmliZXIgOiB0eXBlIGEgYi4gKGEgLT4gYikgLT4gKGEsIGIpIGNvbnRpbnVhdGlvbiA9IGZ1biBmIC0+XG4gICAgbGV0IG1vZHVsZSBNID0gc3RydWN0IHR5cGUgXyB0ICs9IEluaXRpYWxfc2V0dXBfXyA6IGEgdCBlbmQgaW5cbiAgICBsZXQgZXhjZXB0aW9uIEUgb2YgKGEsYikgY29udGludWF0aW9uIGluXG4gICAgbGV0IGYnICgpID0gZiAocGVyZm9ybSBNLkluaXRpYWxfc2V0dXBfXykgaW5cbiAgICBsZXQgZXJyb3IgXyA9IGZhaWx3aXRoIFwiaW1wb3NzaWJsZVwiIGluXG4gICAgbGV0IGVmZmMgZWZmIGsgbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBlZmYgd2l0aFxuICAgICAgfCBNLkluaXRpYWxfc2V0dXBfXyAtPlxuICAgICAgICAgIGNvbnRfc2V0X2xhc3RfZmliZXIgayBsYXN0X2ZpYmVyO1xuICAgICAgICAgIHJhaXNlX25vdHJhY2UgKEUgaylcbiAgICAgIHwgXyAtPiBlcnJvciAoKVxuICAgIGluXG4gICAgbGV0IHMgPSBhbGxvY19zdGFjayBlcnJvciBlcnJvciBlZmZjIGluXG4gICAgbWF0Y2ggcnVuc3RhY2sgcyBmJyAoKSB3aXRoXG4gICAgfCBleGNlcHRpb24gRSBrIC0+IGtcbiAgICB8IF8gLT4gZXJyb3IgKClcblxuICB0eXBlICgnYSwnYikgaGFuZGxlciA9XG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIHQgLT4gKCgnYywnYSkgY29udGludWF0aW9uIC0+ICdiKSBvcHRpb24gfVxuXG4gIGV4dGVybmFsIHVwZGF0ZV9oYW5kbGVyIDpcbiAgICAoJ2EsJ2IpIGNvbnRpbnVhdGlvbiAtPlxuICAgICgnYiAtPiAnYykgLT5cbiAgICAoZXhuIC0+ICdjKSAtPlxuICAgICgnZCB0IC0+ICgnZCwnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2MpIC0+XG4gICAgKCdhLCdjKSBzdGFjayA9IFwiY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Y1wiIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgcmVwZXJmb3JtIDpcbiAgICAnYSB0IC0+ICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdjID0gXCIlcmVwZXJmb3JtXCJcblxuICBsZXQgY29udGludWVfZ2VuIGsgcmVzdW1lX2Z1biB2IGhhbmRsZXIgPVxuICAgIGxldCBlZmZjIGVmZiBrIGxhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggaGFuZGxlci5lZmZjIGVmZiB3aXRoXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgIGNvbnRfc2V0X2xhc3RfZmliZXIgayBsYXN0X2ZpYmVyO1xuICAgICAgICAgIGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgbGFzdF9maWJlciA9IGNvbnRfbGFzdF9maWJlciBrIGluXG4gICAgbGV0IHN0YWNrID0gdXBkYXRlX2hhbmRsZXIgayBoYW5kbGVyLnJldGMgaGFuZGxlci5leG5jIGVmZmMgaW5cbiAgICByZXN1bWUgc3RhY2sgcmVzdW1lX2Z1biB2IGxhc3RfZmliZXJcblxuICBsZXQgY29udGludWVfd2l0aCBrIHYgaGFuZGxlciA9XG4gICAgY29udGludWVfZ2VuIGsgKGZ1biB4IC0+IHgpIHYgaGFuZGxlclxuXG4gIGxldCBkaXNjb250aW51ZV93aXRoIGsgdiBoYW5kbGVyID1cbiAgICBjb250aW51ZV9nZW4gayAoZnVuIGUgLT4gcmFpc2UgZSkgdiBoYW5kbGVyXG5cbiAgbGV0IGRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIGsgdiBidCBoYW5kbGVyID1cbiAgICBjb250aW51ZV9nZW4gayAoZnVuIGUgLT4gUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgZSBidCkgdiBoYW5kbGVyXG5cbiAgZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjayA6XG4gICAgKCdhLCdiKSBjb250aW51YXRpb24gLT4gaW50IC0+IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgPVxuICAgIFwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1wiXG5lbmRcbiIsIltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuKCogYmxpdF9zdHJpbmcgZG9lc24ndCBleGlzdCBpbiBbU3RkTGFiZWxzLkJ5dGVzXS4uLiAgKilcbmxldCBieXRlc19ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gIEJ5dGVzLmJsaXRfc3RyaW5nIHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuOztcblxub3BlbiBTdGRMYWJlbHNcbm9wZW4gRm9ybWF0XG5cbigqKiBUeXBlIG9mIFMtZXhwcmVzc2lvbnMgKilcbnR5cGUgdCA9XG4gIHwgQXRvbSBvZiBzdHJpbmdcbiAgfCBMaXN0IG9mIHQgbGlzdFxuXG5sZXQgc2V4cF9vZl90IHQgPSB0XG5sZXQgdF9vZl9zZXhwIHQgPSB0XG5cbmxldCByZWMgY29tcGFyZV9saXN0IGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgIGxldCByZXMgPSBjb21wYXJlIHggeSBpblxuICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgY29tcGFyZV9saXN0IHhzIHlzXG5cbmFuZCBjb21wYXJlIGEgYiA9XG4gIGlmIGEgPT0gYlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBBdG9tIGEsIEF0b20gYiAtPiBTdHJpbmcuY29tcGFyZSBhIGJcbiAgICB8IEF0b20gXywgXyAtPiAtMVxuICAgIHwgXywgQXRvbSBfIC0+IDFcbiAgICB8IExpc3QgYSwgTGlzdCBiIC0+IGNvbXBhcmVfbGlzdCBhIGIpXG47O1xuXG5sZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG5cbmV4Y2VwdGlvbiBOb3RfZm91bmRfcyBvZiB0XG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiBleG4gKiB0XG5cbm1vZHVsZSBQcmludGluZyA9IHN0cnVjdFxuICAoKiBEZWZhdWx0IGluZGVudGF0aW9uIGxldmVsIGZvciBodW1hbi1yZWFkYWJsZSBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCBkZWZhdWx0X2luZGVudCA9IHJlZiAxXG5cbiAgKCogRXNjYXBpbmcgb2Ygc3RyaW5ncyB1c2VkIGFzIGF0b21zIGluIFMtZXhwcmVzc2lvbnMgKilcblxuICBsZXQgbXVzdF9lc2NhcGUgc3RyID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZW4gPSAwXG4gICAgfHxcbiAgICBsZXQgcmVjIGxvb3Agc3RyIGl4ID1cbiAgICAgIG1hdGNoIHN0ci5baXhdIHdpdGhcbiAgICAgIHwgJ1wiJyB8ICcoJyB8ICcpJyB8ICc7JyB8ICdcXFxcJyAtPiB0cnVlXG4gICAgICB8ICd8JyAtPlxuICAgICAgICBpeCA+IDBcbiAgICAgICAgJiZcbiAgICAgICAgbGV0IG5leHQgPSBpeCAtIDEgaW5cbiAgICAgICAgQ2hhci5lcXVhbCBzdHIuW25leHRdICcjJyB8fCBsb29wIHN0ciBuZXh0XG4gICAgICB8ICcjJyAtPlxuICAgICAgICBpeCA+IDBcbiAgICAgICAgJiZcbiAgICAgICAgbGV0IG5leHQgPSBpeCAtIDEgaW5cbiAgICAgICAgQ2hhci5lcXVhbCBzdHIuW25leHRdICd8JyB8fCBsb29wIHN0ciBuZXh0XG4gICAgICB8ICdcXDAwMCcgLi4gJ1xcMDMyJyB8ICdcXDEyNycgLi4gJ1xcMjU1JyAtPiB0cnVlXG4gICAgICB8IF8gLT4gaXggPiAwICYmIGxvb3Agc3RyIChpeCAtIDEpXG4gICAgaW5cbiAgICBsb29wIHN0ciAobGVuIC0gMSlcbiAgOztcblxuICBsZXQgZXNjYXBlZCBzID1cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG5cbiAgICAgIDo9ICFuXG4gICAgICAgICArXG4gICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFxuJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxiJyAtPiAyXG4gICAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgICAgfCBfIC0+IDRcbiAgICBkb25lO1xuICAgIGlmICFuID0gU3RyaW5nLmxlbmd0aCBzXG4gICAgdGhlbiBzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcycgPSBCeXRlcy5jcmVhdGUgIW4gaW5cbiAgICAgIG4gOj0gMDtcbiAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIChtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICduJ1xuICAgICAgICAgfCAnXFx0JyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdiJ1xuICAgICAgICAgfCAnICcgLi4gJ34nIGFzIGMgLT4gQnl0ZXMudW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgbGV0IGEgPSBDaGFyLmNvZGUgYyBpblxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSAvIDEwMCkpKTtcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSAvIDEwIG1vZCAxMCkpKTtcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSBtb2QgMTApKSkpO1xuICAgICAgICBpbmNyIG5cbiAgICAgIGRvbmU7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMnKVxuICA7O1xuXG4gIGxldCBlc2Nfc3RyIHN0ciA9XG4gICAgbGV0IGVzdHIgPSBlc2NhcGVkIHN0ciBpblxuICAgIGxldCBlbGVuID0gU3RyaW5nLmxlbmd0aCBlc3RyIGluXG4gICAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAoZWxlbiArIDIpIGluXG4gICAgYnl0ZXNfYmxpdF9zdHJpbmcgfnNyYzplc3RyIH5zcmNfcG9zOjAgfmRzdDpyZXMgfmRzdF9wb3M6MSB+bGVuOmVsZW47XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXMgMCAnXCInO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzIChlbGVuICsgMSkgJ1wiJztcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICA7O1xuXG4gIGxldCBpbmRleF9vZl9uZXdsaW5lIHN0ciBzdGFydCA9IFN0cmluZy5pbmRleF9mcm9tX29wdCBzdHIgc3RhcnQgJ1xcbidcblxuICBsZXQgZ2V0X3N1YnN0cmluZyBzdHIgaW5kZXggZW5kX3Bvc19vcHQgPVxuICAgIGxldCBlbmRfcG9zID1cbiAgICAgIG1hdGNoIGVuZF9wb3Nfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgICAgfCBTb21lIGVuZF9wb3MgLT4gZW5kX3Bvc1xuICAgIGluXG4gICAgU3RyaW5nLnN1YiBzdHIgfnBvczppbmRleCB+bGVuOihlbmRfcG9zIC0gaW5kZXgpXG4gIDs7XG5cbiAgbGV0IGlzX29uZV9saW5lIHN0ciA9XG4gICAgbWF0Y2ggaW5kZXhfb2ZfbmV3bGluZSBzdHIgMCB3aXRoXG4gICAgfCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgaW5kZXggLT4gaW5kZXggKyAxID0gU3RyaW5nLmxlbmd0aCBzdHJcbiAgOztcblxuICBsZXQgcHBfaHVtX21heWJlX2VzY19zdHIgcHBmIHN0ciA9XG4gICAgaWYgbm90IChtdXN0X2VzY2FwZSBzdHIpXG4gICAgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIHN0clxuICAgIGVsc2UgaWYgaXNfb25lX2xpbmUgc3RyXG4gICAgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIChlc2Nfc3RyIHN0cilcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBpbmRleCA9XG4gICAgICAgIGxldCBuZXh0X25ld2xpbmUgPSBpbmRleF9vZl9uZXdsaW5lIHN0ciBpbmRleCBpblxuICAgICAgICBsZXQgbmV4dF9saW5lID0gZ2V0X3N1YnN0cmluZyBzdHIgaW5kZXggbmV4dF9uZXdsaW5lIGluXG4gICAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgKGVzY2FwZWQgbmV4dF9saW5lKTtcbiAgICAgICAgbWF0Y2ggbmV4dF9uZXdsaW5lIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBuZXdsaW5lX2luZGV4IC0+XG4gICAgICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIlxcXFxcIjtcbiAgICAgICAgICBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKTtcbiAgICAgICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiXFxcXG5cIjtcbiAgICAgICAgICBsb29wIChuZXdsaW5lX2luZGV4ICsgMSlcbiAgICAgIGluXG4gICAgICBwcF9vcGVuX2JveCBwcGYgMDtcbiAgICAgICgqIHRoZSBsZWFkaW5nIHNwYWNlIGlzIHRvIGxpbmUgdXAgdGhlIGxpbmVzICopXG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiIFxcXCJcIjtcbiAgICAgIGxvb3AgMDtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCJcXFwiXCI7XG4gICAgICBwcF9jbG9zZV9ib3ggcHBmICgpKVxuICA7O1xuXG4gIGxldCBtYWNoX21heWJlX2VzY19zdHIgc3RyID0gaWYgbXVzdF9lc2NhcGUgc3RyIHRoZW4gZXNjX3N0ciBzdHIgZWxzZSBzdHJcblxuICAoKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBmb3JtYXR0ZXJzICopXG5cbiAgbGV0IHJlYyBwcF9odW1faW5kZW50IGluZGVudCBwcGYgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT4gcHBfaHVtX21heWJlX2VzY19zdHIgcHBmIHN0clxuICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgcHBfb3Blbl9ib3ggcHBmIGluZGVudDtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoXCI7XG4gICAgICBwcF9odW1faW5kZW50IGluZGVudCBwcGYgaDtcbiAgICAgIHBwX2h1bV9yZXN0IGluZGVudCBwcGYgdFxuICAgIHwgTGlzdCBbXSAtPiBwcF9wcmludF9zdHJpbmcgcHBmIFwiKClcIlxuXG4gIGFuZCBwcF9odW1fcmVzdCBpbmRlbnQgcHBmID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgcHBfcHJpbnRfc3BhY2UgcHBmICgpO1xuICAgICAgcHBfaHVtX2luZGVudCBpbmRlbnQgcHBmIGg7XG4gICAgICBwcF9odW1fcmVzdCBpbmRlbnQgcHBmIHRcbiAgICB8IFtdIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKVwiO1xuICAgICAgcHBfY2xvc2VfYm94IHBwZiAoKVxuICA7O1xuXG4gIGxldCByZWMgcHBfbWFjaF9pbnRlcm5hbCBtYXlfbmVlZF9zcGFjZSBwcGYgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT5cbiAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgbGV0IG5ld19tYXlfbmVlZF9zcGFjZSA9IHN0cicgPT0gc3RyIGluXG4gICAgICBpZiBtYXlfbmVlZF9zcGFjZSAmJiBuZXdfbWF5X25lZWRfc3BhY2UgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIFwiIFwiO1xuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBzdHInO1xuICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKFwiO1xuICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gcHBfbWFjaF9pbnRlcm5hbCBmYWxzZSBwcGYgaCBpblxuICAgICAgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiB0O1xuICAgICAgZmFsc2VcbiAgICB8IExpc3QgW10gLT5cbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoKVwiO1xuICAgICAgZmFsc2VcblxuICBhbmQgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IHBwX21hY2hfaW50ZXJuYWwgbWF5X25lZWRfc3BhY2UgcHBmIGggaW5cbiAgICAgIHBwX21hY2hfcmVzdCBtYXlfbmVlZF9zcGFjZSBwcGYgdFxuICAgIHwgW10gLT4gcHBfcHJpbnRfc3RyaW5nIHBwZiBcIilcIlxuICA7O1xuXG4gIGxldCBwcF9odW0gcHBmIHNleHAgPSBwcF9odW1faW5kZW50ICFkZWZhdWx0X2luZGVudCBwcGYgc2V4cFxuICBsZXQgcHBfbWFjaCBwcGYgc2V4cCA9IGlnbm9yZSAocHBfbWFjaF9pbnRlcm5hbCBmYWxzZSBwcGYgc2V4cClcbiAgbGV0IHBwID0gcHBfbWFjaFxuXG4gICgqIFNleHAgc2l6ZSAqKVxuXG4gIGxldCByZWMgc2l6ZV9sb29wICgodiwgYykgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPiB2ICsgMSwgYyArIFN0cmluZy5sZW5ndGggc3RyXG4gICAgfCBMaXN0IGxzdCAtPiBMaXN0LmZvbGRfbGVmdCBsc3QgfmluaXQ6YWNjIH5mOnNpemVfbG9vcFxuICA7O1xuXG4gIGxldCBzaXplIHNleHAgPSBzaXplX2xvb3AgKDAsIDApIHNleHBcblxuICAoKiBCdWZmZXIgY29udmVyc2lvbnMgKilcblxuICBsZXQgdG9fYnVmZmVyX2h1bSB+YnVmID8oaW5kZW50ID0gIWRlZmF1bHRfaW5kZW50KSBzZXhwID1cbiAgICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWFAP1wiIChwcF9odW1faW5kZW50IGluZGVudCkgc2V4cFxuICA7O1xuXG4gIGxldCB0b19idWZmZXJfbWFjaCB+YnVmIHNleHAgPVxuICAgIGxldCByZWMgbG9vcCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IEF0b20gc3RyIC0+XG4gICAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnICc7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzdHInO1xuICAgICAgICBuZXdfbWF5X25lZWRfc3BhY2VcbiAgICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICcoJztcbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBmYWxzZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0O1xuICAgICAgICBmYWxzZVxuICAgICAgfCBMaXN0IFtdIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIigpXCI7XG4gICAgICAgIGZhbHNlXG4gICAgYW5kIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIG1heV9uZWVkX3NwYWNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHRcbiAgICAgIHwgW10gLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnKSdcbiAgICBpblxuICAgIGlnbm9yZSAobG9vcCBmYWxzZSBzZXhwKVxuICA7O1xuXG4gIGxldCB0b19idWZmZXIgPSB0b19idWZmZXJfbWFjaFxuXG4gIGxldCB0b19idWZmZXJfZ2VuIH5idWYgfmFkZF9jaGFyIH5hZGRfc3RyaW5nIHNleHAgPVxuICAgIGxldCByZWMgbG9vcCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IEF0b20gc3RyIC0+XG4gICAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gYWRkX2NoYXIgYnVmICcgJztcbiAgICAgICAgYWRkX3N0cmluZyBidWYgc3RyJztcbiAgICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmICcoJztcbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBmYWxzZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0O1xuICAgICAgICBmYWxzZVxuICAgICAgfCBMaXN0IFtdIC0+XG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIFwiKClcIjtcbiAgICAgICAgZmFsc2VcbiAgICBhbmQgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgbWF5X25lZWRfc3BhY2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdFxuICAgICAgfCBbXSAtPiBhZGRfY2hhciBidWYgJyknXG4gICAgaW5cbiAgICBpZ25vcmUgKGxvb3AgZmFsc2Ugc2V4cClcbiAgOztcblxuICAoKiBUaGUgbWF4aW11bSBzaXplIG9mIGEgdGhpbmcgb24gdGhlIG1pbm9yIGhlYXAgaXMgMjU2IHdvcmRzLlxuICAgICBQcmV2aW91c2x5LCB0aGlzIHNpemUgb2YgdGhlIHJldHVybmVkIGJ1ZmZlciBoZXJlIHdhcyA0MDk2IGJ5dGVzLCB3aGljaFxuICAgICBjYXVzZWQgdGhlIEJ1ZmZlciB0byBiZSBhbGxvY2F0ZWQgb24gdGhlICptYWpvciogaGVhcCBldmVyeSB0aW1lLlxuXG4gICAgIEFjY29yZGluZyB0byBhIHNpbXBsZSBiZW5jaG1hcmsgYnkgUm9uLCB3ZSBjYW4gaW1wcm92ZSBwZXJmb3JtYW5jZSBmb3JcbiAgICAgc21hbGwgcy1leHByZXNzaW9ucyBieSBhIGZhY3RvciBvZiB+NCBpZiB3ZSBvbmx5IGFsbG9jYXRlIDEwMjQgYnl0ZXNcbiAgICAgKDEyOCB3b3JkcyArIHNvbWUgc21hbGwgb3ZlcmhlYWQpIHdvcnRoIG9mIGJ1ZmZlciBpbml0aWFsbHkuICBBbmQgb25lXG4gICAgIGNhbiBhcmd1ZSB0aGF0IGlmIGl0J3MgZnJlZSB0byBhbGxvY2F0ZSBzdHJpbmdzIHNtYWxsZXIgdGhhbiAyNTYgd29yZHMsXG4gICAgIGxhcmdlIHMtZXhwcmVzc2lvbnMgcmVxdWlyaW5nIGxhcmdlciBleHBlbnNpdmUgYnVmZmVycyB3b24ndCBub3RpY2VcbiAgICAgdGhlIGV4dHJhIHR3byBkb3VibGluZ3MgZnJvbSAxMDI0IGJ5dGVzIHRvIDIwNDggYW5kIDQwOTYuIEFuZCBlc3BlY2lhbGx5XG4gICAgIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBhcHBsaWNhdGlvbnMgdG8gYWx3YXlzIHBhc3MgaW4gYSBsYXJnZXIgYnVmZmVyIHRvXG4gICAgIHVzZS4gKilcbiAgbGV0IGJ1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgMTAyNFxuXG4gICgqIFN0cmluZyBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCB0b19zdHJpbmdfaHVtID9pbmRlbnQgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHJcbiAgICAgIHdoZW4gbWF0Y2ggaW5kZXhfb2ZfbmV3bGluZSBzdHIgMCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBfIC0+IGZhbHNlIC0+IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHJcbiAgICB8IHNleHAgLT5cbiAgICAgIGxldCBidWYgPSBidWZmZXIgKCkgaW5cbiAgICAgIHRvX2J1ZmZlcl9odW0gP2luZGVudCBzZXhwIH5idWY7XG4gICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19tYWNoID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHJcbiAgICB8IHNleHAgLT5cbiAgICAgIGxldCBidWYgPSBidWZmZXIgKCkgaW5cbiAgICAgIHRvX2J1ZmZlcl9tYWNoIHNleHAgfmJ1ZjtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX21hY2hcbmVuZFxuXG5pbmNsdWRlIFByaW50aW5nXG5cbmxldCBvZl9mbG9hdF9zdHlsZSA6IFsgYFVuZGVyc2NvcmVzIHwgYE5vX3VuZGVyc2NvcmVzIF0gcmVmID0gcmVmIGBOb191bmRlcnNjb3Jlc1xubGV0IG9mX2ludF9zdHlsZSA6IFsgYFVuZGVyc2NvcmVzIHwgYE5vX3VuZGVyc2NvcmVzIF0gcmVmID0gcmVmIGBOb191bmRlcnNjb3Jlc1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFByaW50aW5nXG5lbmRcblxubGV0IG1lc3NhZ2UgbmFtZSBmaWVsZHMgPVxuICBsZXQgcmVjIGNvbnZfZmllbGRzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCAoZm5hbWUsIGZzZXhwKSA6OiByZXN0IC0+XG4gICAgICAobWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgIHwgXCJcIiAtPiBmc2V4cCA6OiBjb252X2ZpZWxkcyByZXN0XG4gICAgICAgfCBfIC0+IExpc3QgWyBBdG9tIGZuYW1lOyBmc2V4cCBdIDo6IGNvbnZfZmllbGRzIHJlc3QpXG4gIGluXG4gIExpc3QgKEF0b20gbmFtZSA6OiBjb252X2ZpZWxkcyBmaWVsZHMpXG47O1xuIiwiKCoqIFJlcHJlc2VudGF0aW9uIG9mIFMtZXhwcmVzc2lvbiBncmFtbWFycyAqKVxuXG4oKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIHJlcHJlc2VudGF0aW9uIGZvciBzLWV4cHJlc3Npb24gZ3JhbW1hcnMuIFVzaW5nIHBweF9zZXhwX2NvbnZcbiAgICBhbmQgW1tAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1dIHByb2R1Y2VzIGEgZ3JhbW1hciB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgZGVyaXZlZFxuICAgIFtvZl9zZXhwXSBmb3IgYSBnaXZlbiB0eXBlLlxuXG4gICAgQXMgd2l0aCBvdGhlciBkZXJpdmVkIGRlZmluaXRpb25zLCBwb2x5bW9ycGhpYyB0eXBlcyBkZXJpdmUgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFcbiAgICBncmFtbWFyIGZvciBlYWNoIHR5cGUgYXJndW1lbnQgYW5kIHByb2R1Y2VzIGEgZ3JhbW1hciBmb3IgdGhlIG1vbm9tb3JwaGl6ZWQgdHlwZS5cblxuICAgIE1vbm9tb3JwaGljIHR5cGVzIGRlcml2ZSBhIGdyYW1tYXIgZGlyZWN0bHkuIFRvIGF2b2lkIHRvcC1sZXZlbCBzaWRlIGVmZmVjdHMsXG4gICAgW1tAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1dIHdyYXBzIGdyYW1tYXJzIGluIHRoZSBbTGF6eV0gY29uc3RydWN0b3IgYXMgbmVlZGVkLlxuXG4gICAgVGhpcyB0eXBlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lIGFzIG91ciBuZWVkcyBmb3IgZXhwcmVzc2l2ZSBncmFtbWFycyBjaGFuZ2UuIFdlIHdpbGxcbiAgICBhdHRlbXB0IHRvIG1ha2UgY2hhbmdlcyBiYWNrd2FyZC1jb21wYXRpYmxlLCBvciBhdCBsZWFzdCBwcm92aWRlIGEgcmVhc29uYWJsZSB1cGdyYWRlXG4gICAgcGF0aC4gKilcblxuW0BAQHdhcm5pbmcgXCItMzBcIl0gKCogYWxsb3cgZHVwbGljYXRlIGZpZWxkIG5hbWVzICopXG5cbigqKiBHcmFtbWFyIG9mIGEgc2V4cC4gKilcbnR5cGUgZ3JhbW1hciA9XG4gIHwgQW55IG9mIHN0cmluZyAoKiogYWNjZXB0cyBhbnkgc2V4cDsgc3RyaW5nIGlzIGEgdHlwZSBuYW1lIGZvciBodW1hbiByZWFkYWJpbGl0eSAqKVxuICB8IEJvb2wgKCoqIGFjY2VwdHMgdGhlIGF0b21zIFwidHJ1ZVwiIG9yIFwiZmFsc2VcIiwgbW9kdWxvIGNhcGl0YWxpemF0aW9uICopXG4gIHwgQ2hhciAoKiogYWNjZXB0cyBhbnkgc2luZ2xlLWNoYXJhY3RlciBhdG9tICopXG4gIHwgSW50ZWdlciAoKiogYWNjZXB0cyBhbnkgYXRvbSBtYXRjaGluZyBvY2FtbCBpbnRlZ2VyIHN5bnRheCwgcmVnYXJkbGVzcyBvZiBiaXQgd2lkdGggKilcbiAgfCBGbG9hdCAoKiogYWNjZXB0cyBhbnkgYXRvbSBtYXRjaGluZyBvY2FtbCBmbG9hdCBzeW50YXggKilcbiAgfCBTdHJpbmcgKCoqIGFjY2VwdHMgYW55IGF0b20gKilcbiAgfCBPcHRpb24gb2YgZ3JhbW1hciAoKiogYWNjZXB0cyBhbiBvcHRpb24sIGJvdGggW05vbmVdIHZzIFtTb21lIF9dIGFuZCBbKCldIHZzIFsoXyldLiAqKVxuICB8IExpc3Qgb2YgbGlzdF9ncmFtbWFyICgqKiBhY2NlcHRzIGEgbGlzdCAqKVxuICB8IFZhcmlhbnQgb2YgdmFyaWFudCAoKiogYWNjZXB0cyBjbGF1c2VzIGtleWVkIGJ5IGEgbGVhZGluZyBvciBzb2xlIGF0b20gKilcbiAgfCBVbmlvbiBvZiBncmFtbWFyIGxpc3QgKCoqIGFjY2VwdHMgYSBzZXhwIGlmIGFueSBvZiB0aGUgbGlzdGVkIGdyYW1tYXJzIGFjY2VwdHMgaXQgKilcbiAgfCBUYWdnZWQgb2YgZ3JhbW1hciB3aXRoX3RhZ1xuICAoKiogYW5ub3RhdGVzIGEgZ3JhbW1hciB3aXRoIGEgY2xpZW50LXNwZWNpZmljIGtleS92YWx1ZSBwYWlyICopXG4gIHwgVHl2YXIgb2Ygc3RyaW5nXG4gICgqKiBOYW1lIG9mIGEgdHlwZSB2YXJpYWJsZSwgZS5nLiBbVHl2YXIgXCJhXCJdIGZvciBbJ2FdLiBPbmx5IG1lYW5pbmdmdWwgd2hlbiB0aGUgYm9keSBvZlxuICAgICAgdGhlIGlubmVybW9zdCBlbmNsb3NpbmcgW2RlZm5dIGRlZmluZXMgYSBjb3JyZXNwb25kaW5nIHR5cGUgdmFyaWFibGUuICopXG4gIHwgVHljb24gb2Ygc3RyaW5nICogZ3JhbW1hciBsaXN0ICogZGVmbiBsaXN0XG4gICgqKiBUeXBlIGNvbnN0cnVjdG9yIGFwcGxpZWQgdG8gYXJndW1lbnRzLCBhbmQgaXRzIGRlZmluaXRpb24uXG5cbiAgICAgIEZvciBleGFtcGxlLCB3cml0aW5nIFtUeWNvbiAoXCJ0cmVlXCIsIFsgSW50ZWdlciBdLCBkZWZucyldIHJlcHJlc2VudHMgW2ludCB0cmVlXSwgZm9yXG4gICAgICB3aGF0ZXZlciBbdHJlZV0gaXMgZGVmaW5lZCBhcyBpbiBbZGVmbnNdLiBUaGUgZm9sbG93aW5nIGRlZmluZXMgW3RyZWVdIGFzIGEgYmluYXJ5XG4gICAgICB0cmVlIHdpdGggdGhlIHBhcmFtZXRlciB0eXBlIHN0b3JlZCBhdCB0aGUgbGVhdmVzLlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgZGVmbnMgPVxuICAgICAgICAgIFsgeyB0eWNvbiA9IFwidHJlZVwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgICAgVmFyaWFudFxuICAgICAgICAgICAgICAgICAgeyBuYW1lX2tpbmQgPSBDYXBpdGFsaXplZFxuICAgICAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgICAgICBbIHsgbmFtZSA9IFwiTm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChSZWN1cnNpdmUgKFwibm9kZVwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgOyB7IG5hbWUgPSBcIkxlYWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoUmVjdXJzaXZlIChcImxlYWZcIiwgW1R5dmFyIFwiYVwiXSksIEVtcHR5KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA7IHsgdHljb24gPSBcIm5vZGVcIlxuICAgICAgICAgICAgOyB0eXZhcnMgPSBbXCJhXCJdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPSBMaXN0IChNYW55IChSZWN1cnNpdmUgXCJ0cmVlXCIsIFtUeXZhciBcImFcIl0pKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDsgeyB0eWNvbiA9IFwibGVhZlwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IFtUeXZhciBcImFcIl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIDs7XG4gICAgICBdfVxuXG4gICAgICBUbyBpbGx1c3RyYXRlIHRoZSBtZWFuaW5nIG9mIFtUeWNvbl0gd2l0aCByZXNwZWN0IHRvIFtkZWZuc10sIGFuZCB0byBkZW1vbnN0cmF0ZSBvbmVcbiAgICAgIHdheSB0byBhY2Nlc3MgdGhlbSwgaXQgaXMgZXF1aXZhbGVudCB0byBleHBhbmQgdGhlIGRlZmluaXRpb24gb2YgXCJ0cmVlXCIgb25lIGxldmVsXG4gICAgICBhbmQgbW92ZSB0aGUgW2RlZm5zXSB0byBlbmNsb3NlZCByZWN1cnNpdmUgcmVmZXJlbmNlczpcblxuICAgICAge1tcbiAgICAgICAgVHljb24gKFwidHJlZVwiLCBbIEludGVnZXIgXSwgZGVmbnMpXG4gICAgICAgIC0tPlxuICAgICAgICBWYXJpYW50XG4gICAgICAgICAgeyBuYW1lX2tpbmQgPSBDYXBpdGFsaXplZFxuICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgIFsgeyBuYW1lID0gXCJOb2RlXCJcbiAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChUeWNvbiAoXCJub2RlXCIsIFtUeXZhciBcImFcIl0sIGRlZm5zKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA7IHsgbmFtZSA9IFwiTGVhZlwiXG4gICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibGVhZlwiLCBbVHl2YXIgXCJhXCJdLCBkZWZucyksIEVtcHR5KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgIF19XG5cbiAgICAgIFRoaXMgdHJhbnNmb3JtYXRpb24gZXhwb3NlcyB0aGUgc3RydWN0dXJlIG9mIGEgZ3JhbW1hciB3aXRoIHJlY3Vyc2l2ZSByZWZlcmVuY2VzLFxuICAgICAgd2hpbGUgcHJlc2VydmluZyB0aGUgbWVhbmluZyBvZiByZWN1cnNpdmVseS1kZWZpbmVkIGVsZW1lbnRzLiAqKVxuICB8IFJlY3Vyc2l2ZSBvZiBzdHJpbmcgKiBncmFtbWFyIGxpc3RcbiAgKCoqIFR5cGUgY29uc3RydWN0b3IgYXBwbGllZCB0byBhcmd1bWVudHMuIFVzZWQgdG8gZGVub3RlIHJlY3Vyc2l2ZSB0eXBlIHJlZmVyZW5jZXMuXG4gICAgICBPbmx5IG1lYW5pbmdmdWwgd2hlbiB1c2VkIGluc2lkZSB0aGUgW2RlZm5dcyBvZiBhIFtUeWNvbl0gZ3JhbW1hciwgdG8gcmVmZXIgdG8gYVxuICAgICAgdHlwZSBjb25zdHJ1Y3RvciBpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgW2RlZm5dIGxpc3QuICopXG4gIHwgTGF6eSBvZiBncmFtbWFyIGxhenlfdFxuICAoKiogTGF6aWx5IGNvbXB1dGVkIGdyYW1tYXIuIFVzZSBbTGF6eV0gdG8gYXZvaWQgdG9wLWxldmVsIHNpZGUgZWZmZWN0cy4gVG8gZGVmaW5lXG4gICAgICByZWN1cnNpdmUgZ3JhbW1hcnMsIHVzZSBbUmVjdXJzaXZlXSBpbnN0ZWFkLiAqKVxuXG4oKiogR3JhbW1hciBvZiBhIGxpc3Qgb2Ygc2V4cHMuICopXG5hbmQgbGlzdF9ncmFtbWFyID1cbiAgfCBFbXB0eSAoKiogYWNjZXB0cyBhbiBlbXB0eSBsaXN0IG9mIHNleHBzICopXG4gIHwgQ29ucyBvZiBncmFtbWFyICogbGlzdF9ncmFtbWFyXG4gICgqKiBhY2NlcHRzIGEgbm9uLWVtcHR5IGxpc3Qgd2l0aCBoZWFkIGFuZCB0YWlsIG1hdGNoaW5nIHRoZSBnaXZlbiBncmFtbWFycyAqKVxuICB8IE1hbnkgb2YgZ3JhbW1hciAoKiogYWNjZXB0cyB6ZXJvIG9yIG1vcmUgc2V4cHMsIGVhY2ggbWF0Y2hpbmcgdGhlIGdpdmVuIGdyYW1tYXIgKilcbiAgfCBGaWVsZHMgb2YgcmVjb3JkICgqKiBhY2NlcHRzIHNleHBzIHJlcHJlc2VudGluZyBmaWVsZHMgb2YgYSByZWNvcmQgKilcblxuKCoqIENhc2Ugc2Vuc2l0aXZpdHkgb3B0aW9ucyBmb3IgbmFtZXMgb2YgdmFyaWFudCBjb25zdHJ1Y3RvcnMuICopXG5hbmQgY2FzZV9zZW5zaXRpdml0eSA9XG4gIHwgQ2FzZV9pbnNlbnNpdGl2ZSAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIGluc2Vuc2l0aXZlLiBVc2VkIGZvciBjdXN0b20gcGFyc2Vycy4gKilcbiAgfCBDYXNlX3NlbnNpdGl2ZSAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIHNlbnNpdGl2ZS4gVXNlZCBmb3IgcG9seW1vcnBoaWMgdmFyaWFudHMuICopXG4gIHwgQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIGluc2Vuc2l0aXZlIGZvciB0aGUgZmlyc3QgY2hhcmFjdGVyIGFuZCBjYXNlIHNlbnNpdGl2ZSBhZnRlcndhcmQuXG4gICAgICBVc2VkIGZvciByZWd1bGFyIHZhcmlhbnRzLiAqKVxuXG4oKiogR3JhbW1hciBvZiB2YXJpYW50cy4gQWNjZXB0cyBhbnkgc2V4cCBtYXRjaGluZyBvbmUgb2YgdGhlIGNsYXVzZXMuICopXG5hbmQgdmFyaWFudCA9XG4gIHsgY2FzZV9zZW5zaXRpdml0eSA6IGNhc2Vfc2Vuc2l0aXZpdHlcbiAgOyBjbGF1c2VzIDogY2xhdXNlIHdpdGhfdGFnX2xpc3QgbGlzdFxuICB9XG5cbigqKiBHcmFtbWFyIG9mIGEgc2luZ2xlIHZhcmlhbnQgY2xhdXNlLiBBY2NlcHRzIHNleHBzIGJhc2VkIG9uIHRoZSBbY2xhdXNlX2tpbmRdLiAqKVxuYW5kIGNsYXVzZSA9XG4gIHsgbmFtZSA6IHN0cmluZ1xuICA7IGNsYXVzZV9raW5kIDogY2xhdXNlX2tpbmRcbiAgfVxuXG4oKiogR3JhbW1hciBvZiBhIHNpbmdsZSB2YXJpYW50IGNsYXVzZSdzIGNvbnRlbnRzLiBbQXRvbV9jbGF1c2VdIGFjY2VwdHMgYW4gYXRvbSBtYXRjaGluZ1xuICAgIHRoZSBjbGF1c2UncyBuYW1lLiBbTGlzdF9jbGF1c2VdIGFjY2VwdHMgYSBsaXN0IHdob3NlIGhlYWQgaXMgYW4gYXRvbSBtYXRjaGluZyB0aGVcbiAgICBjbGF1c2UncyBuYW1lIGFuZCB3aG9zZSB0YWlsIG1hdGNoZXMgW2FyZ3NdLiBUaGUgY2xhdXNlJ3MgbmFtZSBpcyBtYXRjaGVkIG1vZHVsbyB0aGVcbiAgICB2YXJpYW50J3MgW25hbWVfa2luZF0uICopXG5hbmQgY2xhdXNlX2tpbmQgPVxuICB8IEF0b21fY2xhdXNlXG4gIHwgTGlzdF9jbGF1c2Ugb2YgeyBhcmdzIDogbGlzdF9ncmFtbWFyIH1cblxuKCoqIEdyYW1tYXIgb2YgYSByZWNvcmQuIEFjY2VwdHMgYW55IGxpc3Qgb2Ygc2V4cHMgc3BlY2lmeWluZyBlYWNoIG9mIHRoZSBmaWVsZHMsXG4gICAgcmVnYXJkbGVzcyBvZiBvcmRlci4gSWYgW2FsbG93X2V4dHJhX2ZpZWxkc10gaXMgc3BlY2lmaWVkLCBpZ25vcmVzIHNleHBzIHdpdGggbmFtZXNcbiAgICBub3QgZm91bmQgaW4gW2ZpZWxkc10uICopXG5hbmQgcmVjb3JkID1cbiAgeyBhbGxvd19leHRyYV9maWVsZHMgOiBib29sXG4gIDsgZmllbGRzIDogZmllbGQgd2l0aF90YWdfbGlzdCBsaXN0XG4gIH1cblxuKCoqIEdyYW1tYXIgb2YgYSByZWNvcmQgZmllbGQuIEEgZmllbGQgbXVzdCBzaG93IHVwIGV4YWN0bHkgb25jZSBpbiBhIHJlY29yZCBpZlxuICAgIFtyZXF1aXJlZF0sIG9yIGF0IG1vc3Qgb25jZSBvdGhlcndpc2UuIEFjY2VwdHMgYSBsaXN0IGhlYWRlZCBieSBbbmFtZV0gYXMgYW4gYXRvbSxcbiAgICBmb2xsb3dlZCBieSBzZXhwcyBtYXRjaGluZyBbYXJnc10uICopXG5hbmQgZmllbGQgPVxuICB7IG5hbWUgOiBzdHJpbmdcbiAgOyByZXF1aXJlZCA6IGJvb2xcbiAgOyBhcmdzIDogbGlzdF9ncmFtbWFyXG4gIH1cblxuKCoqIEdyYW1tYXIgdGFnZ2VkIHdpdGggY2xpZW50LXNwZWNpZmljIGtleS92YWx1ZSBwYWlyLiAqKVxuYW5kICdhIHdpdGhfdGFnID1cbiAgeyBrZXkgOiBzdHJpbmdcbiAgOyB2YWx1ZSA6IFNleHAudFxuICA7IGdyYW1tYXIgOiAnYVxuICB9XG5cbmFuZCAnYSB3aXRoX3RhZ19saXN0ID1cbiAgfCBUYWcgb2YgJ2Egd2l0aF90YWdfbGlzdCB3aXRoX3RhZ1xuICB8IE5vX3RhZyBvZiAnYVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY3Vyc2l2ZSB0eXBlIGRlZmluaXRpb24uIE5hbWVzIHRoZSBbdHljb25dIGJlaW5nIGRlZmluZWQsIGFuZCB0aGVcbiAgICBbdHl2YXJzXSBpdCB0YWtlcyBhcyBwYXJhbWV0ZXJzLiBTcGVjaWZpZXMgdGhlIFtncmFtbWFyXSBvZiB0aGUgW3R5Y29uXS4gVGhlIGdyYW1tYXJcbiAgICBtYXkgcmVmZXIgdG8gYW55IG9mIHRoZSBbdHl2YXJzXSwgYW5kIHRvIGFueSBvZiB0aGUgW3R5Y29uXXMgZnJvbSB0aGUgc2FtZSBzZXQgb2ZcbiAgICBbUmVjdXJzaXZlXSBkZWZpbml0aW9ucy4gKilcbmFuZCBkZWZuID1cbiAgeyB0eWNvbiA6IHN0cmluZ1xuICA7IHR5dmFycyA6IHN0cmluZyBsaXN0XG4gIDsgZ3JhbW1hciA6IGdyYW1tYXJcbiAgfVxuXG4oKiogVG9wLWxldmVsIGdyYW1tYXIgdHlwZS4gSGFzIGEgcGhhbnRvbSB0eXBlIHBhcmFtZXRlciB0byBhc3NvY2lhdGUgZWFjaCBncmFtbWFyIHdpdGhcbiAgICB0aGUgdHlwZSBpdHMgc2V4cHMgcmVwcmVzZW50LiBUaGlzIG1ha2VzIGl0IGhhcmRlciB0byBhcHBseSBncmFtbWFycyB0byB0aGUgd3JvbmdcbiAgICB0eXBlLCB3aGlsZSBncmFtbWFycyBjYW4gc3RpbGwgYmUgZWFzaWx5IGNvZXJjZWQgdG8gYSBuZXcgdHlwZSBpZiBuZWVkZWQuICopXG50eXBlIF8gdCA9IHsgdW50eXBlZCA6IGdyYW1tYXIgfSBbQEB1bmJveGVkXVxuXG5sZXQgY29lcmNlICh0eXBlIGEgYikgKHsgdW50eXBlZCA9IF8gfSBhcyB0IDogYSB0KSA6IGIgdCA9IHRcblxubGV0IHRhZyAodHlwZSBhKSAoeyB1bnR5cGVkID0gZ3JhbW1hciB9IDogYSB0KSB+a2V5IH52YWx1ZSA6IGEgdCA9XG4gIHsgdW50eXBlZCA9IFRhZ2dlZCB7IGtleTsgdmFsdWU7IGdyYW1tYXIgfSB9XG47O1xuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaXMgdXNlZCBmb3IgYWxsIHRhZ3MgZ2VuZXJhdGVkIGZyb20gZG9jIGNvbW1lbnRzLiAqKVxubGV0IGRvY19jb21tZW50X3RhZyA9IFwic2V4cF9ncmFtbWFyLmRvY19jb21tZW50XCJcblxuKCoqIFRoaXMgcmVzZXJ2ZWQga2V5IGNhbiBiZSB1c2VkIHRvIGFzc29jaWF0ZSBhIHR5cGUgbmFtZSB3aXRoIGEgZ3JhbW1hci4gKilcbmxldCB0eXBlX25hbWVfdGFnID0gXCJzZXhwX2dyYW1tYXIudHlwZV9uYW1lXCJcblxuKCoqIFRoaXMgcmVzZXJ2ZWQga2V5IGluZGljYXRlcyB0aGF0IGEgc2V4cCByZXByZXNlbnRzIGEga2V5L3ZhbHVlIGFzc29jaWF0aW9uLiBUaGUgdGFnJ3NcbiAgICB2YWx1ZSBpcyBpZ25vcmVkLiAqKVxubGV0IGFzc29jX3RhZyA9IFwic2V4cF9ncmFtbWFyLmFzc29jXCJcblxuKCoqIFRoaXMgcmVzZXJ2ZWQga2V5IGluZGljYXRlcyB0aGF0IGEgc2V4cCBpcyBhIGtleSBpbiBhIGtleS92YWx1ZSBhc3NvY2lhdGlvbi4gVGhlIHRhZydzXG4gICAgdmFsdWUgaXMgaWdub3JlZC4gKilcbmxldCBhc3NvY19rZXlfdGFnID0gXCJzZXhwX2dyYW1tYXIuYXNzb2Mua2V5XCJcblxuKCoqIFRoaXMgcmVzZXJ2ZWQga2V5IGluZGljYXRlcyB0aGF0IGEgc2V4cCBpcyBhIHZhbHVlIGluIGEga2V5L3ZhbHVlIGFzc29jaWF0aW9uLiBUaGVcbiAgICB0YWcncyB2YWx1ZSBpcyBpZ25vcmVkLiAqKVxubGV0IGFzc29jX3ZhbHVlX3RhZyA9IFwic2V4cF9ncmFtbWFyLmFzc29jLnZhbHVlXCJcblxuKCoqIFdoZW4gdGhlIGtleSBpcyBzZXQgdG8gW0F0b20gXCJmYWxzZVwiXSBmb3IgYSB2YXJpYW50IGNsYXVzZSwgdGhhdCBjbGF1c2Ugc2hvdWxkIG5vdCBiZVxuICAgIHN1Z2dlc3RlZCBpbiBhdXRvLWNvbXBsZXRpb24gYmFzZWQgb24gdGhlIHNleHAgZ3JhbW1hci4gKilcbmxldCBjb21wbGV0aW9uX3N1Z2dlc3RlZCA9IFwic2V4cF9ncmFtbWFyLmNvbXBsZXRpb24tc3VnZ2VzdGVkXCJcbiIsIm9wZW4gU3RkTGFiZWxzXG5cbmxldCBzZXhwX2dyYW1tYXJfd2l0aF90YWdzIGdyYW1tYXIgfnRhZ3MgPVxuICBMaXN0LmZvbGRfcmlnaHQgdGFncyB+aW5pdDpncmFtbWFyIH5mOihmdW4gKGtleSwgdmFsdWUpIGdyYW1tYXIgLT5cbiAgICBTZXhwX2dyYW1tYXIuVGFnZ2VkIHsga2V5OyB2YWx1ZTsgZ3JhbW1hciB9KVxuOztcblxubGV0IHNleHBfZ3JhbW1hcl93aXRoX3RhZ19saXN0IHggfnRhZ3MgPVxuICBMaXN0LmZvbGRfcmlnaHQgdGFncyB+aW5pdDp4IH5mOihmdW4gKGtleSwgdmFsdWUpIGdyYW1tYXIgLT5cbiAgICBTZXhwX2dyYW1tYXIuVGFnIHsga2V5OyB2YWx1ZTsgZ3JhbW1hciB9KVxuOztcblxubGV0IHVuaXRfc2V4cF9ncmFtbWFyIDogdW5pdCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IExpc3QgRW1wdHkgfVxubGV0IGJvb2xfc2V4cF9ncmFtbWFyIDogYm9vbCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEJvb2wgfVxubGV0IHN0cmluZ19zZXhwX2dyYW1tYXIgOiBzdHJpbmcgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBTdHJpbmcgfVxubGV0IGJ5dGVzX3NleHBfZ3JhbW1hciA6IGJ5dGVzIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gU3RyaW5nIH1cbmxldCBjaGFyX3NleHBfZ3JhbW1hciA6IGNoYXIgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBDaGFyIH1cbmxldCBpbnRfc2V4cF9ncmFtbWFyIDogaW50IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgZmxvYXRfc2V4cF9ncmFtbWFyIDogZmxvYXQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBGbG9hdCB9XG5sZXQgaW50MzJfc2V4cF9ncmFtbWFyIDogaW50MzIgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBpbnQ2NF9zZXhwX2dyYW1tYXIgOiBpbnQ2NCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IG5hdGl2ZWludF9zZXhwX2dyYW1tYXIgOiBuYXRpdmVpbnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBzZXhwX3Rfc2V4cF9ncmFtbWFyIDogU2V4cC50IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQW55IFwiU2V4cC50XCIgfVxubGV0IHJlZl9zZXhwX2dyYW1tYXIgZ3JhbW1hciA9IFNleHBfZ3JhbW1hci5jb2VyY2UgZ3JhbW1hclxubGV0IGxhenlfdF9zZXhwX2dyYW1tYXIgZ3JhbW1hciA9IFNleHBfZ3JhbW1hci5jb2VyY2UgZ3JhbW1hclxuXG5sZXQgb3B0aW9uX3NleHBfZ3JhbW1hciAoeyB1bnR5cGVkIH0gOiBfIFNleHBfZ3JhbW1hci50KSA6IF8gb3B0aW9uIFNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gT3B0aW9uIHVudHlwZWQgfVxuOztcblxubGV0IGxpc3Rfc2V4cF9ncmFtbWFyICh7IHVudHlwZWQgfSA6IF8gU2V4cF9ncmFtbWFyLnQpIDogXyBsaXN0IFNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoTWFueSB1bnR5cGVkKSB9XG47O1xuXG5sZXQgYXJyYXlfc2V4cF9ncmFtbWFyICh7IHVudHlwZWQgfSA6IF8gU2V4cF9ncmFtbWFyLnQpIDogXyBhcnJheSBTZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IExpc3QgKE1hbnkgdW50eXBlZCkgfVxuOztcblxubGV0IGVtcHR5X3NleHBfZ3JhbW1hciA6IF8gU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBVbmlvbiBbXSB9XG5sZXQgb3BhcXVlX3NleHBfZ3JhbW1hciA9IGVtcHR5X3NleHBfZ3JhbW1hclxubGV0IGZ1bl9zZXhwX2dyYW1tYXIgPSBlbXB0eV9zZXhwX2dyYW1tYXJcbiIsIigqIFV0aWxpdHkgTW9kdWxlIGZvciBTLWV4cHJlc3Npb24gQ29udmVyc2lvbnMgKilcblxub3BlbiBTdGRMYWJlbHNcbm9wZW4gTW9yZUxhYmVsc1xub3BlbiBQcmludGZcbm9wZW4gU2V4cFxuXG4oKiBDb252ZXJzaW9uIG9mIE9DYW1sLXZhbHVlcyB0byBTLWV4cHJlc3Npb25zICopXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbigqICclLjE3ZycgaXMgZ3VhcmFudGVlZCB0byBiZSByb3VuZC10cmlwcGFibGUuXG5cbiAgICclLjE1Zycgd2lsbCBiZSByb3VuZC10cmlwcGFibGUgYW5kIG5vdCBoYXZlIG5vaXNlIGF0IHRoZSBsYXN0IGRpZ2l0IG9yIHR3byBmb3IgYSBmbG9hdFxuICAgd2hpY2ggd2FzIGNvbnZlcnRlZCBmcm9tIGEgZGVjaW1hbCAoc3RyaW5nKSB3aXRoIDw9IDE1IHNpZ25pZmljYW50IGRpZ2l0cy4gIFNvIGl0J3NcbiAgIHdvcnRoIHRyeWluZyBmaXJzdCB0byBhdm9pZCB0aGluZ3MgbGlrZSBcIjMuMTQwMDAwMDAwMDAwMDAwMVwiLlxuXG4gICBTZWUgY29tbWVudCBhYm92ZSBbdG9fc3RyaW5nX3JvdW5kX3RyaXBwYWJsZV0gaW4geyFDb3JlLkZsb2F0fSBmb3JcbiAgIGRldGFpbGVkIGV4cGxhbmF0aW9uIGFuZCBleGFtcGxlcy4gKilcbmxldCBkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCA9XG4gIHJlZiAoZnVuIHggLT5cbiAgICBsZXQgeSA9IGZvcm1hdF9mbG9hdCBcIiUuMTVHXCIgeCBpblxuICAgIGlmIGZsb2F0X29mX3N0cmluZyB5ID0geCB0aGVuIHkgZWxzZSBmb3JtYXRfZmxvYXQgXCIlLjE3R1wiIHgpXG47O1xuXG5sZXQgcmVhZF9vbGRfb3B0aW9uX2Zvcm1hdCA9IHJlZiB0cnVlXG5sZXQgd3JpdGVfb2xkX29wdGlvbl9mb3JtYXQgPSByZWYgdHJ1ZVxubGV0IGxpc3RfbWFwIGYgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgbCB+ZilcbmxldCBzZXhwX29mX3VuaXQgKCkgPSBMaXN0IFtdXG5sZXQgc2V4cF9vZl9ib29sIGIgPSBBdG9tIChzdHJpbmdfb2ZfYm9vbCBiKVxubGV0IHNleHBfb2Zfc3RyaW5nIHN0ciA9IEF0b20gc3RyXG5sZXQgc2V4cF9vZl9ieXRlcyBieXRlcyA9IEF0b20gKEJ5dGVzLnRvX3N0cmluZyBieXRlcylcbmxldCBzZXhwX29mX2NoYXIgYyA9IEF0b20gKFN0cmluZy5tYWtlIDEgYylcbmxldCBzZXhwX29mX2ludCBuID0gQXRvbSAoc3RyaW5nX29mX2ludCBuKVxubGV0IHNleHBfb2ZfZmxvYXQgbiA9IEF0b20gKCFkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCBuKVxubGV0IHNleHBfb2ZfaW50MzIgbiA9IEF0b20gKEludDMyLnRvX3N0cmluZyBuKVxubGV0IHNleHBfb2ZfaW50NjQgbiA9IEF0b20gKEludDY0LnRvX3N0cmluZyBuKVxubGV0IHNleHBfb2ZfbmF0aXZlaW50IG4gPSBBdG9tIChOYXRpdmVpbnQudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9yZWYgc2V4cF9vZl9fYSByZiA9IHNleHBfb2ZfX2EgIXJmXG5sZXQgc2V4cF9vZl9sYXp5X3Qgc2V4cF9vZl9fYSBsdiA9IHNleHBfb2ZfX2EgKExhenkuZm9yY2UgbHYpXG5cbmxldCBzZXhwX29mX29wdGlvbiBzZXhwX29mX19hID0gZnVuY3Rpb25cbiAgfCBTb21lIHggd2hlbiAhd3JpdGVfb2xkX29wdGlvbl9mb3JtYXQgLT4gTGlzdCBbIHNleHBfb2ZfX2EgeCBdXG4gIHwgU29tZSB4IC0+IExpc3QgWyBBdG9tIFwic29tZVwiOyBzZXhwX29mX19hIHggXVxuICB8IE5vbmUgd2hlbiAhd3JpdGVfb2xkX29wdGlvbl9mb3JtYXQgLT4gTGlzdCBbXVxuICB8IE5vbmUgLT4gQXRvbSBcIm5vbmVcIlxuOztcblxubGV0IHNleHBfb2ZfcGFpciBzZXhwX29mX19hIHNleHBfb2ZfX2IgKGEsIGIpID0gTGlzdCBbIHNleHBfb2ZfX2EgYTsgc2V4cF9vZl9fYiBiIF1cblxubGV0IHNleHBfb2ZfdHJpcGxlIHNleHBfb2ZfX2Egc2V4cF9vZl9fYiBzZXhwX29mX19jIChhLCBiLCBjKSA9XG4gIExpc3QgWyBzZXhwX29mX19hIGE7IHNleHBfb2ZfX2IgYjsgc2V4cF9vZl9fYyBjIF1cbjs7XG5cbigqIExpc3QucmV2IChMaXN0LnJldl9tYXAgLi4uKSBpcyB0YWlsIHJlY3Vyc2l2ZSwgdGhlIE9DYW1sIHN0YW5kYXJkXG4gICBsaWJyYXJ5IExpc3QubWFwIGlzIE5PVC4gKilcbmxldCBzZXhwX29mX2xpc3Qgc2V4cF9vZl9fYSBsc3QgPSBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGxzdCB+ZjpzZXhwX29mX19hKSlcblxubGV0IHNleHBfb2ZfYXJyYXkgc2V4cF9vZl9fYSBhciA9XG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gIGZvciBpID0gQXJyYXkubGVuZ3RoIGFyIC0gMSBkb3dudG8gMCBkb1xuICAgIGxzdF9yZWYgOj0gc2V4cF9vZl9fYSBhci4oaSkgOjogIWxzdF9yZWZcbiAgZG9uZTtcbiAgTGlzdCAhbHN0X3JlZlxuOztcblxubGV0IHNleHBfb2ZfaGFzaHRibCBzZXhwX29mX2tleSBzZXhwX29mX3ZhbCBodGJsID1cbiAgbGV0IGNvbGwgfmtleTprIH5kYXRhOnYgYWNjID0gTGlzdCBbIHNleHBfb2Zfa2V5IGs7IHNleHBfb2ZfdmFsIHYgXSA6OiBhY2MgaW5cbiAgTGlzdCAoSGFzaHRibC5mb2xkIGh0YmwgfmluaXQ6W10gfmY6Y29sbClcbjs7XG5cbmxldCBzZXhwX29mX29wYXF1ZSBfID0gQXRvbSBcIjxvcGFxdWU+XCJcbmxldCBzZXhwX29mX2Z1biBfID0gQXRvbSBcIjxmdW4+XCJcblxuKCogRXhjZXB0aW9uIGNvbnZlcnRlciByZWdpc3RyYXRpb24gYW5kIGxvb2t1cCAqKVxuXG5tb2R1bGUgRXhuX2NvbnZlcnRlciA9IHN0cnVjdFxuICAoKiBUaGVzZSBleGNlcHRpb24gcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCBjb250ZXh0LXN3aXRjaGVzXG4gICAgIGNhbm5vdCBoYXBwZW4gdW5sZXNzIHRoZXJlIGlzIGFuIGFsbG9jYXRpb24uICBJdCBpcyByZWFzb25hYmxlIHRvIGV4cGVjdFxuICAgICB0aGF0IHRoaXMgd2lsbCByZW1haW4gdHJ1ZSBmb3IgdGhlIGZvcmVzZWVhYmxlIGZ1dHVyZS4gIFRoYXQgd2F5IHdlXG4gICAgIGF2b2lkIHVzaW5nIG11dGV4ZXMgYW5kIHRodXMgYSBkZXBlbmRlbmN5IG9uIHRoZSB0aHJlYWRzIGxpYnJhcnkuICopXG5cbiAgKCogRmFzdCBhbmQgYXV0b21hdGljIGV4Y2VwdGlvbiByZWdpc3RyYXRpb24gKilcblxuICBtb2R1bGUgUmVnaXN0cmF0aW9uID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgc2V4cF9vZl9leG4gOiBleG4gLT4gU2V4cC50XG4gICAgICA7ICgqIElmIFtwcmludGV4YyA9IHRydWVdIHRoZW4gdGhpcyBzZXhwIGNvbnZlcnRlciBpcyB1c2VkIGZvciBQcmludGV4Yy50b19zdHJpbmcgKilcbiAgICAgICAgcHJpbnRleGMgOiBib29sXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBFeG5fdGFibGUgPSBFcGhlbWVyb24uSzEuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBleHRlbnNpb25fY29uc3RydWN0b3JcblxuICAgICAgbGV0IGVxdWFsID0gKCA9PSApXG4gICAgICBsZXQgaGFzaCA9IE9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWRcbiAgICBlbmQpXG5cbiAgbGV0IHRoZV9leG5fdGFibGUgOiBSZWdpc3RyYXRpb24udCBFeG5fdGFibGUudCA9IEV4bl90YWJsZS5jcmVhdGUgMTdcblxuICAoKiBFcGhlbWVyb25zIGFyZSB1c2VkIHNvIHRoYXQgW3NleHBfb2ZfZXhuXSBjbG9zdXJlIGRvbid0IGtlZXAgdGhlXG4gICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXZlLiAqKVxuICBsZXQgYWRkID8ocHJpbnRleGMgPSB0cnVlKSA/ZmluYWxpc2U6XyBleHRlbnNpb25fY29uc3RydWN0b3Igc2V4cF9vZl9leG4gPVxuICAgIEV4bl90YWJsZS5hZGQgdGhlX2V4bl90YWJsZSBleHRlbnNpb25fY29uc3RydWN0b3IgeyBzZXhwX29mX2V4bjsgcHJpbnRleGMgfVxuICA7O1xuXG4gIGxldCBmaW5kX2F1dG8gfmZvcl9wcmludGV4YyBleG4gPVxuICAgIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleG4gaW5cbiAgICBtYXRjaCBFeG5fdGFibGUuZmluZF9vcHQgdGhlX2V4bl90YWJsZSBleHRlbnNpb25fY29uc3RydWN0b3Igd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHsgc2V4cF9vZl9leG47IHByaW50ZXhjIH0gLT5cbiAgICAgIChtYXRjaCBmb3JfcHJpbnRleGMsIHByaW50ZXhjIHdpdGhcbiAgICAgICB8IGZhbHNlLCBfIHwgXywgdHJ1ZSAtPiBTb21lIChzZXhwX29mX2V4biBleG4pXG4gICAgICAgfCB0cnVlLCBmYWxzZSAtPiBOb25lKVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdW5pdF90ZXN0c19vbmx5ID0gc3RydWN0XG4gICAgbGV0IHNpemUgKCkgPSAoRXhuX3RhYmxlLnN0YXRzX2FsaXZlIHRoZV9leG5fdGFibGUpLm51bV9iaW5kaW5nc1xuICBlbmRcbmVuZFxuXG5sZXQgc2V4cF9vZl9leG5fb3B0X2Zvcl9wcmludGV4YyBleG4gPSBFeG5fY29udmVydGVyLmZpbmRfYXV0byB+Zm9yX3ByaW50ZXhjOnRydWUgZXhuXG5sZXQgc2V4cF9vZl9leG5fb3B0IGV4biA9IEV4bl9jb252ZXJ0ZXIuZmluZF9hdXRvIH5mb3JfcHJpbnRleGM6ZmFsc2UgZXhuXG5cbmxldCBzZXhwX29mX2V4biBleG4gPVxuICBtYXRjaCBzZXhwX29mX2V4bl9vcHQgZXhuIHdpdGhcbiAgfCBOb25lIC0+IExpc3QgWyBBdG9tIChQcmludGV4Yy50b19zdHJpbmcgZXhuKSBdXG4gIHwgU29tZSBzZXhwIC0+IHNleHBcbjs7XG5cbmxldCBleG5fdG9fc3RyaW5nIGUgPSBTZXhwLnRvX3N0cmluZ19odW0gKHNleHBfb2ZfZXhuIGUpXG5cbigqIHtbZXhjZXB0aW9uIEJsYWggW0BAZGVyaXZpbmcgc2V4cF1dfSBnZW5lcmF0ZXMgYSBjYWxsIHRvIHRoZSBmdW5jdGlvblxuICAgW0V4bl9jb252ZXJ0ZXIuYWRkXSBkZWZpbmVkIGluIHRoaXMgZmlsZS4gIFNvIHdlIGFyZSBndWFyYW50ZWQgdGhhdCBhcyBzb29uIGFzIHdlXG4gICBtYXJrIGFuIGV4Y2VwdGlvbiBhcyBzZXhwYWJsZSwgdGhpcyBtb2R1bGUgd2lsbCBiZSBsaW5rZWQgaW4gYW5kIHRoaXMgcHJpbnRlciB3aWxsIGJlXG4gICByZWdpc3RlcmVkLCB3aGljaCBpcyB3aGF0IHdlIHdhbnQuICopXG5sZXQgKCkgPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW4gZXhuIC0+XG4gICAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0X2Zvcl9wcmludGV4YyBleG4gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHNleHAgLT4gU29tZSAoU2V4cC50b19zdHJpbmdfaHVtIH5pbmRlbnQ6MiBzZXhwKSlcbjs7XG5cbmxldCBwcmludGV4Y19wcmVmZXJfc2V4cCBleG4gPVxuICBtYXRjaCBzZXhwX29mX2V4bl9vcHQgZXhuIHdpdGhcbiAgfCBOb25lIC0+IFByaW50ZXhjLnRvX3N0cmluZyBleG5cbiAgfCBTb21lIHNleHAgLT4gU2V4cC50b19zdHJpbmdfaHVtIH5pbmRlbnQ6MiBzZXhwXG47O1xuXG4oKiBDb252ZXJzaW9uIG9mIFMtZXhwcmVzc2lvbnMgdG8gT0NhbWwtdmFsdWVzICopXG5cbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yID0gU2V4cC5PZl9zZXhwX2Vycm9yXG5cbmxldCByZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzID0gcmVmIHRydWVcbmxldCBvZl9zZXhwX2Vycm9yX2V4biBleGMgc2V4cCA9IHJhaXNlIChPZl9zZXhwX2Vycm9yIChleGMsIHNleHApKVxubGV0IG9mX3NleHBfZXJyb3Igd2hhdCBzZXhwID0gcmFpc2UgKE9mX3NleHBfZXJyb3IgKEZhaWx1cmUgd2hhdCwgc2V4cCkpXG5cbmxldCB1bml0X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgW10gLT4gKClcbiAgfCBBdG9tIF8gfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcInVuaXRfb2Zfc2V4cDogZW1wdHkgbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYm9vbF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIChcInRydWVcIiB8IFwiVHJ1ZVwiKSAtPiB0cnVlXG4gIHwgQXRvbSAoXCJmYWxzZVwiIHwgXCJGYWxzZVwiKSAtPiBmYWxzZVxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiYm9vbF9vZl9zZXhwOiB1bmtub3duIHN0cmluZ1wiIHNleHBcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImJvb2xfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgc3RyaW5nX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+IHN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwic3RyaW5nX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGJ5dGVzX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+IEJ5dGVzLm9mX3N0cmluZyBzdHJcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImJ5dGVzX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGNoYXJfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHN0ciA8PiAxXG4gICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiY2hhcl9vZl9zZXhwOiBhdG9tIHN0cmluZyBtdXN0IGNvbnRhaW4gb25lIGNoYXJhY3RlciBvbmx5XCIgc2V4cDtcbiAgICBzdHIuWzBdXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJjaGFyX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGludF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgaW50X29mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImludF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiaW50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBmbG9hdF9vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJmbG9hdF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaW50MzJfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IEludDMyLm9mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImludDMyX29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJpbnQzMl9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBpbnQ2NF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgSW50NjQub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50NjRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImludDY0X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IG5hdGl2ZWludF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgTmF0aXZlaW50Lm9mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcIm5hdGl2ZWludF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwibmF0aXZlaW50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IHJlZl9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9IHJlZiAoYV9fb2Zfc2V4cCBzZXhwKVxubGV0IGxhenlfdF9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9IExhenkuZnJvbV92YWwgKGFfX29mX3NleHAgc2V4cClcblxubGV0IG9wdGlvbl9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9XG4gIGlmICFyZWFkX29sZF9vcHRpb25fZm9ybWF0XG4gIHRoZW4gKFxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgTGlzdCBbXSB8IEF0b20gKFwibm9uZVwiIHwgXCJOb25lXCIpIC0+IE5vbmVcbiAgICB8IExpc3QgWyBlbCBdIHwgTGlzdCBbIEF0b20gKFwic29tZVwiIHwgXCJTb21lXCIpOyBlbCBdIC0+IFNvbWUgKGFfX29mX3NleHAgZWwpXG4gICAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBsaXN0IG11c3QgcmVwcmVzZW50IG9wdGlvbmFsIHZhbHVlXCIgc2V4cFxuICAgIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogb25seSBub25lIGNhbiBiZSBhdG9tXCIgc2V4cClcbiAgZWxzZSAoXG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBBdG9tIChcIm5vbmVcIiB8IFwiTm9uZVwiKSAtPiBOb25lXG4gICAgfCBMaXN0IFsgQXRvbSAoXCJzb21lXCIgfCBcIlNvbWVcIik7IGVsIF0gLT4gU29tZSAoYV9fb2Zfc2V4cCBlbClcbiAgICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IG9ubHkgbm9uZSBjYW4gYmUgYXRvbVwiIHNleHBcbiAgICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IGxpc3QgbXVzdCBiZSAoc29tZSBlbClcIiBzZXhwKVxuOztcblxubGV0IHBhaXJfb2Zfc2V4cCBhX19vZl9zZXhwIGJfX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgWyBhX3NleHA7IGJfc2V4cCBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl9zZXhwIGFfc2V4cCBpblxuICAgIGxldCBiID0gYl9fb2Zfc2V4cCBiX3NleHAgaW5cbiAgICBhLCBiXG4gIHwgTGlzdCBfIC0+XG4gICAgb2Zfc2V4cF9lcnJvciBcInBhaXJfb2Zfc2V4cDogbGlzdCBtdXN0IGNvbnRhaW4gZXhhY3RseSB0d28gZWxlbWVudHMgb25seVwiIHNleHBcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcInBhaXJfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgdHJpcGxlX29mX3NleHAgYV9fb2Zfc2V4cCBiX19vZl9zZXhwIGNfX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgWyBhX3NleHA7IGJfc2V4cDsgY19zZXhwIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3NleHAgYV9zZXhwIGluXG4gICAgbGV0IGIgPSBiX19vZl9zZXhwIGJfc2V4cCBpblxuICAgIGxldCBjID0gY19fb2Zfc2V4cCBjX3NleHAgaW5cbiAgICBhLCBiLCBjXG4gIHwgTGlzdCBfIC0+XG4gICAgb2Zfc2V4cF9lcnJvciBcInRyaXBsZV9vZl9zZXhwOiBsaXN0IG11c3QgY29udGFpbiBleGFjdGx5IHRocmVlIGVsZW1lbnRzIG9ubHlcIiBzZXhwXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJ0cmlwbGVfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgbGlzdF9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgbHN0IC0+XG4gICAgbGV0IHJldl9sc3QgPSBMaXN0LnJldl9tYXAgbHN0IH5mOmFfX29mX3NleHAgaW5cbiAgICBMaXN0LnJldiByZXZfbHN0XG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJsaXN0X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGFycmF5X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbXSAtPiBbfHxdXG4gIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCB0ICsgMSBpblxuICAgIGxldCByZXMgPSBBcnJheS5tYWtlIGxlbiAoYV9fb2Zfc2V4cCBoKSBpblxuICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICByZXMuKGkpIDwtIGFfX29mX3NleHAgaDtcbiAgICAgICAgbG9vcCAoaSArIDEpIHRcbiAgICBpblxuICAgIGxvb3AgMSB0XG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJhcnJheV9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBoYXNodGJsX29mX3NleHAga2V5X29mX3NleHAgdmFsX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgbHN0IC0+XG4gICAgbGV0IGh0YmwgPSBIYXNodGJsLmNyZWF0ZSAwIGluXG4gICAgbGV0IGFjdCA9IGZ1bmN0aW9uXG4gICAgICB8IExpc3QgWyBrX3NleHA7IHZfc2V4cCBdIC0+XG4gICAgICAgIEhhc2h0YmwuYWRkIGh0YmwgfmtleTooa2V5X29mX3NleHAga19zZXhwKSB+ZGF0YToodmFsX29mX3NleHAgdl9zZXhwKVxuICAgICAgfCBMaXN0IF8gfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImhhc2h0Ymxfb2Zfc2V4cDogdHVwbGUgbGlzdCBuZWVkZWRcIiBzZXhwXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgbHN0IH5mOmFjdDtcbiAgICBodGJsXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJoYXNodGJsX29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IG9wYXF1ZV9vZl9zZXhwIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIFwib3BhcXVlX29mX3NleHA6IGNhbm5vdCBjb252ZXJ0IG9wYXF1ZSB2YWx1ZXNcIiBzZXhwXG47O1xuXG5sZXQgZnVuX29mX3NleHAgc2V4cCA9IG9mX3NleHBfZXJyb3IgXCJmdW5fb2Zfc2V4cDogY2Fubm90IGNvbnZlcnQgZnVuY3Rpb24gdmFsdWVzXCIgc2V4cFxuXG4oKiBTZXhwIEdyYW1tYXJzICopXG5cbmluY2x1ZGUgU2V4cF9jb252X2dyYW1tYXJcblxuKCogUmVnaXN0ZXJpbmcgZGVmYXVsdCBleGNlcHRpb24gcHJpbnRlcnMgKilcblxubGV0IGdldF9mbGNfZXJyb3IgbmFtZSAoZmlsZSwgbGluZSwgY2hyKSA9IEF0b20gKHNwcmludGYgXCIlcyAlczolZDolZFwiIG5hbWUgZmlsZSBsaW5lIGNocilcblxubGV0ICgpID1cbiAgTGlzdC5pdGVyXG4gICAgfmY6KGZ1biAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yLCBoYW5kbGVyKSAtPlxuICAgICAgRXhuX2NvbnZlcnRlci5hZGQgfnByaW50ZXhjOmZhbHNlIH5maW5hbGlzZTpmYWxzZSBleHRlbnNpb25fY29uc3RydWN0b3IgaGFuZGxlcilcbiAgICBbICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXNzZXJ0X2ZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgQXNzZXJ0X2ZhaWx1cmUgYXJnIC0+IGdldF9mbGNfZXJyb3IgXCJBc3NlcnRfZmFpbHVyZVwiIGFyZ1xuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgRXhpdF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBFeGl0IC0+IEF0b20gXCJFeGl0XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEVuZF9vZl9maWxlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEVuZF9vZl9maWxlIC0+IEF0b20gXCJFbmRfb2ZfZmlsZVwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBGYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEZhaWx1cmUgYXJnIC0+IExpc3QgWyBBdG9tIFwiRmFpbHVyZVwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBOb3RfZm91bmRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTm90X2ZvdW5kIC0+IEF0b20gXCJOb3RfZm91bmRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgSW52YWxpZF9hcmd1bWVudF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGFyZyAtPiBMaXN0IFsgQXRvbSBcIkludmFsaWRfYXJndW1lbnRcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTWF0Y2hfZmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBNYXRjaF9mYWlsdXJlIGFyZyAtPiBnZXRfZmxjX2Vycm9yIFwiTWF0Y2hfZmFpbHVyZVwiIGFyZ1xuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTm90X2ZvdW5kX3NdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTm90X2ZvdW5kX3MgYXJnIC0+IExpc3QgWyBBdG9tIFwiTm90X2ZvdW5kX3NcIjsgYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFN5c19lcnJvcl1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTeXNfZXJyb3IgYXJnIC0+IExpc3QgWyBBdG9tIFwiU3lzX2Vycm9yXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEFyZy5IZWxwXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEFyZy5IZWxwIGFyZyAtPiBMaXN0IFsgQXRvbSBcIkFyZy5IZWxwXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEFyZy5CYWRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgQXJnLkJhZCBhcmcgLT4gTGlzdCBbIEF0b20gXCJBcmcuQmFkXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIExhenkuVW5kZWZpbmVkXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IExhenkuVW5kZWZpbmVkIC0+IEF0b20gXCJMYXp5LlVuZGVmaW5lZFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBQYXJzaW5nLlBhcnNlX2Vycm9yXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFBhcnNpbmcuUGFyc2VfZXJyb3IgLT4gQXRvbSBcIlBhcnNpbmcuUGFyc2VfZXJyb3JcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgUXVldWUuRW1wdHldXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgUXVldWUuRW1wdHkgLT4gQXRvbSBcIlF1ZXVlLkVtcHR5XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNjYW5mLlNjYW5fZmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTY2FuZi5TY2FuX2ZhaWx1cmUgYXJnIC0+IExpc3QgWyBBdG9tIFwiU2NhbmYuU2Nhbl9mYWlsdXJlXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFN0YWNrLkVtcHR5XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFN0YWNrLkVtcHR5IC0+IEF0b20gXCJTdGFjay5FbXB0eVwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTeXMuQnJlYWtdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU3lzLkJyZWFrIC0+IEF0b20gXCJTeXMuQnJlYWtcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICBdXG47O1xuXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXJcbiAgICB+ZjooZnVuIChleHRlbnNpb25fY29uc3RydWN0b3IsIGhhbmRsZXIpIC0+XG4gICAgICBFeG5fY29udmVydGVyLmFkZCB+cHJpbnRleGM6dHJ1ZSB+ZmluYWxpc2U6ZmFsc2UgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGhhbmRsZXIpXG4gICAgWyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE9mX3NleHBfZXJyb3JdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgT2Zfc2V4cF9lcnJvciAoZXhjLCBzZXhwKSAtPlxuICAgICAgICAgIExpc3QgWyBBdG9tIFwiU2V4cGxpYi5Db252Lk9mX3NleHBfZXJyb3JcIjsgc2V4cF9vZl9leG4gZXhjOyBzZXhwIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgXVxuOztcblxuZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbiIsIigqIENvbnZfZXJyb3I6IE1vZHVsZSBmb3IgSGFuZGxpbmcgRXJyb3JzIGR1cmluZyBBdXRvbWF0ZWQgUy1leHByZXNzaW9uXG4gICBDb252ZXJzaW9ucyAqKVxuXG5vcGVuIFN0ZExhYmVsc1xub3BlbiBQcmludGZcbm9wZW4gU2V4cF9jb252XG5cbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yID0gT2Zfc2V4cF9lcnJvclxuXG4oKiBFcnJvcnMgY29uY2VybmluZyB0dXBsZXMgKilcblxubGV0IHR1cGxlX29mX3NpemVfbl9leHBlY3RlZCBsb2MgbiBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAoc3ByaW50ZiBcIiVzX29mX3NleHA6IHR1cGxlIG9mIHNpemUgJWQgZXhwZWN0ZWRcIiBsb2Mgbikgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgc3VtIHR5cGVzICopXG5cbmxldCBzdGFnX25vX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0aGlzIGNvbnN0cnVjdG9yIGRvZXMgbm90IHRha2UgYXJndW1lbnRzXCIpIHNleHBcbjs7XG5cbmxldCBzdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIHRhZyBzZXhwID1cbiAgbGV0IG1zZyA9IHNwcmludGYgXCIlc19vZl9zZXhwOiBzdW0gdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiIGxvYyB0YWcgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHN0YWdfdGFrZXNfYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRoaXMgY29uc3RydWN0b3IgcmVxdWlyZXMgYXJndW1lbnRzXCIpIHNleHBcbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYSBuZXN0ZWQgbGlzdFwiKSBzZXhwXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYW4gZW1wdHkgbGlzdFwiKSBzZXhwXG47O1xuXG5sZXQgdW5leHBlY3RlZF9zdGFnIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdW5leHBlY3RlZCB2YXJpYW50IGNvbnN0cnVjdG9yXCIpIHNleHBcbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHJlY29yZHMgKilcblxubGV0IHJlY29yZF9zZXhwX2Jvb2xfd2l0aF9wYXlsb2FkIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgbG9jIF4gXCJfb2Zfc2V4cDogcmVjb3JkIGNvbnZlcnNpb246IGEgW3NleHAuYm9vbF0gZmllbGQgd2FzIGdpdmVuIGEgcGF5bG9hZC5cIlxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX29ubHlfcGFpcnNfZXhwZWN0ZWQgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2NcbiAgICBeIFwiX29mX3NleHA6IHJlY29yZCBjb252ZXJzaW9uOiBvbmx5IHBhaXJzIGV4cGVjdGVkLCB0aGVpciBmaXJzdCBlbGVtZW50IG11c3QgYmUgYW4gXFxcbiAgICAgICBhdG9tXCJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQgfmxvYyByZXZfZmxkX25hbWVzIHNleHAgPVxuICBsZXQgZmxkX25hbWVzX3N0ciA9IFN0cmluZy5jb25jYXQgKExpc3QucmV2IHJldl9mbGRfbmFtZXMpIH5zZXA6XCIgXCIgaW5cbiAgbGV0IG1zZyA9IHNwcmludGYgXCIlc19vZl9zZXhwOiAlczogJXNcIiBsb2Mgd2hhdCBmbGRfbmFtZXNfc3RyIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfZHVwbGljYXRlX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyBzZXhwID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImR1cGxpY2F0ZSBmaWVsZHNcIiB+bG9jIHJldl9mbGRfbmFtZXMgc2V4cFxuOztcblxubGV0IHJlY29yZF9leHRyYV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgc2V4cCA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJleHRyYSBmaWVsZHNcIiB+bG9jIHJldl9mbGRfbmFtZXMgc2V4cFxuOztcblxubGV0IHJlYyByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIGZpZWxkcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgZmllbGRzKSB+c2VwOlwiIFwiXG4gIHwgKHRydWUsIGZpZWxkKSA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgKGZpZWxkIDo6IGZpZWxkcykgcmVzdFxuICB8IF8gOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIGZpZWxkcyByZXN0XG47O1xuXG5sZXQgcmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyBsb2Mgc2V4cCBsc3QgPVxuICBsZXQgdW5kZWZpbmVkID0gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBbXSBsc3QgaW5cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZiBcIiVzX29mX3NleHA6IHRoZSBmb2xsb3dpbmcgcmVjb3JkIGVsZW1lbnRzIHdlcmUgdW5kZWZpbmVkOiAlc1wiIGxvYyB1bmRlZmluZWRcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9saXN0X2luc3RlYWRfYXRvbSBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPSBsb2MgXiBcIl9vZl9zZXhwOiBsaXN0IGluc3RlYWQgb2YgYXRvbSBmb3IgcmVjb3JkIGV4cGVjdGVkXCIgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgbG9jXG4gICAgXiBcIl9vZl9zZXhwOiBjYW5ub3QgY29udmVydCB2YWx1ZXMgb2YgdHlwZXMgcmVzdWx0aW5nIGZyb20gcG9seW1vcnBoaWMgcmVjb3JkIGZpZWxkc1wiXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHBvbHltb3JwaGljIHZhcmlhbnRzICopXG5cbmV4Y2VwdGlvbiBOb192YXJpYW50X21hdGNoXG5cbmxldCBub192YXJpYW50X21hdGNoICgpID0gcmFpc2UgTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IG5vIG1hdGNoaW5nIHZhcmlhbnQgZm91bmRcIikgc2V4cFxuOztcblxubGV0IHB0YWdfbm9fYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHBvbHltb3JwaGljIHZhcmlhbnQgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IHB0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgY25zdHIgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIHNwcmludGZcbiAgICAgIFwiJXNfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCJcbiAgICAgIGxvY1xuICAgICAgY25zdHJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHB0YWdfdGFrZXNfYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnIHRha2VzIGFuIGFyZ3VtZW50XCIpIHNleHBcbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogYSBuZXN0ZWQgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIikgc2V4cFxuOztcblxubGV0IGVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRoZSBlbXB0eSBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKSBzZXhwXG47O1xuXG5sZXQgZW1wdHlfdHlwZSBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRyeWluZyB0byBjb252ZXJ0IGFuIGVtcHR5IHR5cGVcIikgc2V4cFxuOztcbiIsIm9wZW4hIFN0ZExhYmVsc1xub3BlbiEgU2V4cF9jb252XG5vcGVuISBTZXhwX2NvbnZfZXJyb3JcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoXywgXykgdCA9XG4gICAgfCBEZWZhdWx0IDogKHVuaXQgLT4gJ2EpIC0+ICgnYSwgU2V4cC50IC0+ICdhKSB0XG4gICAgfCBPbWl0X25pbCA6ICgnYSwgU2V4cC50IC0+ICdhKSB0XG4gICAgfCBSZXF1aXJlZCA6ICgnYSwgU2V4cC50IC0+ICdhKSB0XG4gICAgfCBTZXhwX2FycmF5IDogKCdhIGFycmF5LCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IFNleHBfYm9vbCA6IChib29sLCB1bml0KSB0XG4gICAgfCBTZXhwX2xpc3QgOiAoJ2EgbGlzdCwgU2V4cC50IC0+ICdhKSB0XG4gICAgfCBTZXhwX29wdGlvbiA6ICgnYSBvcHRpb24sIFNleHAudCAtPiAnYSkgdFxuZW5kXG5cbm1vZHVsZSBGaWVsZHMgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgPVxuICAgIHwgRW1wdHkgOiB1bml0IHRcbiAgICB8IEZpZWxkIDpcbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsga2luZCA6ICgnYSwgJ2NvbnYpIEtpbmQudFxuICAgICAgICA7IGNvbnYgOiAnY29udlxuICAgICAgICA7IHJlc3QgOiAnYiB0XG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhICogJ2IpIHRcblxuICBsZXQgbGVuZ3RoID1cbiAgICBsZXQgcmVjIGxlbmd0aF9sb29wIDogdHlwZSBhLiBhIHQgLT4gaW50IC0+IGludCA9XG4gICAgICBmdW4gdCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRmllbGQgeyByZXN0OyBfIH0gLT4gbGVuZ3RoX2xvb3AgcmVzdCAoYWNjICsgMSlcbiAgICAgICAgfCBFbXB0eSAtPiBhY2NcbiAgICBpblxuICAgIGZ1biB0IC0+IGxlbmd0aF9sb29wIHQgMFxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWxmb3JtZWQgPSBzdHJ1Y3RcbiAgKCogUmVwcmVzZW50cyBlcnJvcnMgdGhhdCBjYW4gb2NjdXIgZHVlIHRvIG1hbGZvcm1lZCByZWNvcmQgc2V4cHMuIEFjY3VtdWxhdGVkIGFzIGFcbiAgICAgdmFsdWUgc28gd2UgY2FuIHJlcG9ydCBtdWx0aXBsZSBuYW1lcyBhdCBvbmNlIGZvciBleHRyYSBmaWVsZHMsIGR1cGxpY2F0ZSBmaWVsZHMsIG9yXG4gICAgIG1pc3NpbmcgZmllbGRzLiAqKVxuICB0eXBlIHQgPVxuICAgIHwgQm9vbF9wYXlsb2FkXG4gICAgfCBFeHRyYXMgb2Ygc3RyaW5nIGxpc3RcbiAgICB8IER1cHMgb2Ygc3RyaW5nIGxpc3RcbiAgICB8IE1pc3Npbmcgb2Ygc3RyaW5nIGxpc3RcbiAgICB8IE5vbl9wYWlyIG9mIFNleHAudCBvcHRpb25cblxuICBsZXQgY29tYmluZSBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgICgqIGNob29zZSB0aGUgZmlyc3QgYm9vbC1wYXlsb2FkIG9yIG5vbi1wYWlyIGVycm9yIHRoYXQgb2NjdXJzICopXG4gICAgfCAoKEJvb2xfcGF5bG9hZCB8IE5vbl9wYWlyIF8pIGFzIHQpLCBfIC0+IHRcbiAgICB8IF8sICgoQm9vbF9wYXlsb2FkIHwgTm9uX3BhaXIgXykgYXMgdCkgLT4gdFxuICAgICgqIGNvbWJpbmUgbGlzdHMgb2Ygc2ltaWxhciBlcnJvcnMgKilcbiAgICB8IEV4dHJhcyBhLCBFeHRyYXMgYiAtPiBFeHRyYXMgKGEgQCBiKVxuICAgIHwgRHVwcyBhLCBEdXBzIGIgLT4gRHVwcyAoYSBAIGIpXG4gICAgfCBNaXNzaW5nIGEsIE1pc3NpbmcgYiAtPiBNaXNzaW5nIChhIEAgYilcbiAgICAoKiBvdGhlcndpc2UsIGR1cHMgPiBleHRyYXMgPiBtaXNzaW5nICopXG4gICAgfCAoRHVwcyBfIGFzIHQpLCBfIHwgXywgKER1cHMgXyBhcyB0KSAtPiB0XG4gICAgfCAoRXh0cmFzIF8gYXMgdCksIF8gfCBfLCAoRXh0cmFzIF8gYXMgdCkgLT4gdFxuICA7O1xuXG4gIGxldCByYWlzZSB0IH5jYWxsZXIgfmNvbnRleHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQm9vbF9wYXlsb2FkIC0+IHJlY29yZF9zZXhwX2Jvb2xfd2l0aF9wYXlsb2FkIGNhbGxlciBjb250ZXh0XG4gICAgfCBFeHRyYXMgbmFtZXMgLT4gcmVjb3JkX2V4dHJhX2ZpZWxkcyBjYWxsZXIgKExpc3QucmV2IG5hbWVzKSBjb250ZXh0XG4gICAgfCBEdXBzIG5hbWVzIC0+IHJlY29yZF9kdXBsaWNhdGVfZmllbGRzIGNhbGxlciAoTGlzdC5yZXYgbmFtZXMpIGNvbnRleHRcbiAgICB8IE1pc3NpbmcgbmFtZXMgLT5cbiAgICAgIExpc3QubWFwIG5hbWVzIH5mOihmdW4gbmFtZSAtPiB0cnVlLCBuYW1lKVxuICAgICAgfD4gcmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyBjYWxsZXIgY29udGV4dFxuICAgIHwgTm9uX3BhaXIgbWF5YmVfY29udGV4dCAtPlxuICAgICAgbGV0IGNvbnRleHQgPSBPcHRpb24udmFsdWUgbWF5YmVfY29udGV4dCB+ZGVmYXVsdDpjb250ZXh0IGluXG4gICAgICByZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCBjYWxsZXIgY29udGV4dFxuICA7O1xuZW5kXG5cbmV4Y2VwdGlvbiBNYWxmb3JtZWQgb2YgTWFsZm9ybWVkLnRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICgqIFN0b3JlcyBzZXhwcyBjb3JyZXNwb25kaW5nIHRvIHJlY29yZCBmaWVsZHMsIGluIHRoZSBvcmRlciB0aGUgZmllbGRzIHdlcmUgZGVjbGFyZWQuXG4gICAgIEV4Y2x1ZGVzIGZpZWxkcyBhbHJlYWR5IHBhcnNlZCBpbiB0aGUgZmFzdCBwYXRoLlxuXG4gICAgIExpc3Qgc2V4cHMgcmVwcmVzZW50IGEgZmllbGQgdGhhdCBpcyBwcmVzZW50LCBzdWNoIGFzICh4IDEpIGZvciBhIGZpZWxkIG5hbWVkIFwieFwiLlxuICAgICBBdG9tIHNleHBzIHJlcHJlc2VudCBhIGZpZWxkIHRoYXQgaXMgYWJzZW50LCBvciBhdCBsZWFzdCBub3QgeWV0IHNlZW4uICopXG4gIHR5cGUgdCA9IHsgc3RhdGUgOiBTZXhwLnQgYXJyYXkgfSBbQEB1bmJveGVkXVxuXG4gIGxldCB1bnNhZmVfZ2V0IHQgcG9zID0gQXJyYXkudW5zYWZlX2dldCB0LnN0YXRlIHBvc1xuICBsZXQgdW5zYWZlX3NldCB0IHBvcyBzZXhwID0gQXJyYXkudW5zYWZlX3NldCB0LnN0YXRlIHBvcyBzZXhwXG4gIGxldCBhYnNlbnQgPSBTZXhwLkF0b20gXCJcIlxuICBsZXQgY3JlYXRlIGxlbiA9IHsgc3RhdGUgPSBBcnJheS5tYWtlIGxlbiBhYnNlbnQgfVxuZW5kXG5cbigqIFBhcnNpbmcgZmllbGQgdmFsdWVzIGZyb20gc3RhdGUuICopXG5cbmxldCByZWMgcGFyc2VfdmFsdWVfbWFsZm9ybWVkXG4gIDogdHlwZSBhIGIuIE1hbGZvcm1lZC50IC0+IGZpZWxkczooYSAqIGIpIEZpZWxkcy50IC0+IHN0YXRlOlN0YXRlLnQgLT4gcG9zOmludCAtPiBhXG4gID1cbiAgZnVuIG1hbGZvcm1lZCB+ZmllbGRzIH5zdGF0ZSB+cG9zIC0+XG4gIGxldCAoRmllbGQgZmllbGQpID0gZmllbGRzIGluXG4gIGxldCBtYWxmb3JtZWQgPVxuICAgIG1hdGNoIHBhcnNlX3ZhbHVlcyB+ZmllbGRzOmZpZWxkLnJlc3QgfnN0YXRlIH5wb3M6KHBvcyArIDEpIHdpdGhcbiAgICB8IChfIDogYikgLT4gbWFsZm9ybWVkXG4gICAgfCBleGNlcHRpb24gTWFsZm9ybWVkIG90aGVyIC0+IE1hbGZvcm1lZC5jb21iaW5lIG1hbGZvcm1lZCBvdGhlclxuICBpblxuICByYWlzZSAoTWFsZm9ybWVkIG1hbGZvcm1lZClcblxuYW5kIHBhcnNlX3ZhbHVlIDogdHlwZSBhIGIuIGZpZWxkczooYSAqIGIpIEZpZWxkcy50IC0+IHN0YXRlOlN0YXRlLnQgLT4gcG9zOmludCAtPiBhICogYiA9XG4gIGZ1biB+ZmllbGRzIH5zdGF0ZSB+cG9zIC0+XG4gIGxldCAoRmllbGQgeyBuYW1lOyBraW5kOyBjb252OyByZXN0IH0pID0gZmllbGRzIGluXG4gIGxldCB2YWx1ZSA6IGEgPVxuICAgIG1hdGNoIGtpbmQsIFN0YXRlLnVuc2FmZV9nZXQgc3RhdGUgcG9zIHdpdGhcbiAgICAoKiB3ZWxsLWZvcm1lZCAqKVxuICAgIHwgUmVxdWlyZWQsIExpc3QgWyBfOyBzZXhwIF0gLT4gY29udiBzZXhwXG4gICAgfCBEZWZhdWx0IF8sIExpc3QgWyBfOyBzZXhwIF0gLT4gY29udiBzZXhwXG4gICAgfCBPbWl0X25pbCwgTGlzdCBbIF87IHNleHAgXSAtPiBjb252IHNleHBcbiAgICB8IFNleHBfb3B0aW9uLCBMaXN0IFsgXzsgc2V4cCBdIC0+IFNvbWUgKGNvbnYgc2V4cClcbiAgICB8IFNleHBfbGlzdCwgTGlzdCBbIF87IHNleHAgXSAtPiBsaXN0X29mX3NleHAgY29udiBzZXhwXG4gICAgfCBTZXhwX2FycmF5LCBMaXN0IFsgXzsgc2V4cCBdIC0+IGFycmF5X29mX3NleHAgY29udiBzZXhwXG4gICAgfCBTZXhwX2Jvb2wsIExpc3QgWyBfIF0gLT4gdHJ1ZVxuICAgICgqIGlsbC1mb3JtZWQgKilcbiAgICB8ICggKFJlcXVpcmVkIHwgRGVmYXVsdCBfIHwgT21pdF9uaWwgfCBTZXhwX29wdGlvbiB8IFNleHBfbGlzdCB8IFNleHBfYXJyYXkpXG4gICAgICAsIChMaXN0IChfIDo6IF8gOjogXyA6OiBfKSBhcyBzZXhwKSApIC0+XG4gICAgICBwYXJzZV92YWx1ZV9tYWxmb3JtZWQgKE5vbl9wYWlyIChTb21lIHNleHApKSB+ZmllbGRzIH5zdGF0ZSB+cG9zXG4gICAgfCAoIChSZXF1aXJlZCB8IERlZmF1bHQgXyB8IE9taXRfbmlsIHwgU2V4cF9vcHRpb24gfCBTZXhwX2xpc3QgfCBTZXhwX2FycmF5KVxuICAgICAgLCBMaXN0IChbXSB8IFsgXyBdKSApIC0+IHBhcnNlX3ZhbHVlX21hbGZvcm1lZCAoTm9uX3BhaXIgTm9uZSkgfmZpZWxkcyB+c3RhdGUgfnBvc1xuICAgIHwgU2V4cF9ib29sLCBMaXN0IChbXSB8IF8gOjogXyA6OiBfKSAtPlxuICAgICAgcGFyc2VfdmFsdWVfbWFsZm9ybWVkIEJvb2xfcGF5bG9hZCB+ZmllbGRzIH5zdGF0ZSB+cG9zXG4gICAgKCogYWJzZW50ICopXG4gICAgfCBSZXF1aXJlZCwgQXRvbSBfIC0+IHBhcnNlX3ZhbHVlX21hbGZvcm1lZCAoTWlzc2luZyBbIG5hbWUgXSkgfmZpZWxkcyB+c3RhdGUgfnBvc1xuICAgIHwgRGVmYXVsdCBkZWZhdWx0LCBBdG9tIF8gLT4gZGVmYXVsdCAoKVxuICAgIHwgT21pdF9uaWwsIEF0b20gXyAtPiBjb252IChMaXN0IFtdKVxuICAgIHwgU2V4cF9vcHRpb24sIEF0b20gXyAtPiBOb25lXG4gICAgfCBTZXhwX2xpc3QsIEF0b20gXyAtPiBbXVxuICAgIHwgU2V4cF9hcnJheSwgQXRvbSBfIC0+IFt8fF1cbiAgICB8IFNleHBfYm9vbCwgQXRvbSBfIC0+IGZhbHNlXG4gIGluXG4gIHZhbHVlLCBwYXJzZV92YWx1ZXMgfmZpZWxkczpyZXN0IH5zdGF0ZSB+cG9zOihwb3MgKyAxKVxuXG5hbmQgcGFyc2VfdmFsdWVzIDogdHlwZSBhLiBmaWVsZHM6YSBGaWVsZHMudCAtPiBzdGF0ZTpTdGF0ZS50IC0+IHBvczppbnQgLT4gYSA9XG4gIGZ1biB+ZmllbGRzIH5zdGF0ZSB+cG9zIC0+XG4gIG1hdGNoIGZpZWxkcyB3aXRoXG4gIHwgRmllbGQgXyAtPiBwYXJzZV92YWx1ZSB+ZmllbGRzIH5zdGF0ZSB+cG9zXG4gIHwgRW1wdHkgLT4gKClcbjs7XG5cbigqIFBvcHVsYXRpbmcgc3RhdGUuIEhhbmRsZXMgc2xvdyBwYXRoIGNhc2VzIHdoZXJlIHRoZXJlIG1heSBiZSByZW9yZGVyZWQsIGR1cGxpY2F0ZWQsXG4gICBtaXNzaW5nLCBvciBleHRyYSBmaWVsZHMuICopXG5cbmxldCByZWMgcGFyc2Vfc3BpbmVfbWFsZm9ybWVkIG1hbGZvcm1lZCB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzID1cbiAgbGV0IG1hbGZvcm1lZCA9XG4gICAgbWF0Y2ggcGFyc2Vfc3BpbmVfc2xvdyB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzIHdpdGhcbiAgICB8ICgpIC0+IG1hbGZvcm1lZFxuICAgIHwgZXhjZXB0aW9uIE1hbGZvcm1lZCBvdGhlciAtPiBNYWxmb3JtZWQuY29tYmluZSBtYWxmb3JtZWQgb3RoZXJcbiAgaW5cbiAgcmFpc2UgKE1hbGZvcm1lZCBtYWxmb3JtZWQpXG5cbmFuZCBwYXJzZV9zcGluZV9zbG93IH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHMgPVxuICBtYXRjaCAoc2V4cHMgOiBTZXhwLnQgbGlzdCkgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgKExpc3QgKEF0b20gbmFtZSA6OiBfKSBhcyBmaWVsZCkgOjogc2V4cHMgLT5cbiAgICBsZXQgaSA9IGluZGV4IG5hbWUgaW5cbiAgICAobWF0Y2ggc2VlbiA8PSBpICYmIGkgPCBsZW4gd2l0aFxuICAgICB8IHRydWUgLT5cbiAgICAgICAoKiB2YWxpZCBmaWVsZCBmb3Igc2xvdy1wYXRoIHBhcnNpbmcgKilcbiAgICAgICBsZXQgcG9zID0gaSAtIHNlZW4gaW5cbiAgICAgICAobWF0Y2ggU3RhdGUudW5zYWZlX2dldCBzdGF0ZSBwb3Mgd2l0aFxuICAgICAgICB8IEF0b20gXyAtPlxuICAgICAgICAgICgqIGZpZWxkIG5vdCBzZWVuIHlldCAqKVxuICAgICAgICAgIFN0YXRlLnVuc2FmZV9zZXQgc3RhdGUgcG9zIGZpZWxkO1xuICAgICAgICAgIHBhcnNlX3NwaW5lX3Nsb3cgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwc1xuICAgICAgICB8IExpc3QgXyAtPlxuICAgICAgICAgICgqIGZpZWxkIGFscmVhZHkgc2VlbiAqKVxuICAgICAgICAgIHBhcnNlX3NwaW5lX21hbGZvcm1lZCAoRHVwcyBbIG5hbWUgXSkgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwcylcbiAgICAgfCBmYWxzZSAtPlxuICAgICAgIChtYXRjaCAwIDw9IGkgJiYgaSA8IHNlZW4gd2l0aFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAoKiBmaWVsZCBzZWVuIGluIGZhc3QgcGF0aCAqKVxuICAgICAgICAgIHBhcnNlX3NwaW5lX21hbGZvcm1lZCAoRHVwcyBbIG5hbWUgXSkgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwc1xuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgKCogZXh0cmEgZmllbGQgKilcbiAgICAgICAgICAobWF0Y2ggZXh0cmEgd2l0aFxuICAgICAgICAgICB8IHRydWUgLT4gcGFyc2Vfc3BpbmVfc2xvdyB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzXG4gICAgICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAgICBwYXJzZV9zcGluZV9tYWxmb3JtZWQgKEV4dHJhcyBbIG5hbWUgXSkgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwcykpKVxuICB8IHNleHAgOjogc2V4cHMgLT5cbiAgICBwYXJzZV9zcGluZV9tYWxmb3JtZWQgKE5vbl9wYWlyIChTb21lIHNleHApKSB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzXG47O1xuXG4oKiBTbG93IHBhdGggZm9yIHJlY29yZCBwYXJzaW5nLiBVc2VzIHN0YXRlIHRvIHN0b3JlIGZpZWxkcyBhcyB0aGV5IGFyZSBkaXNjb3ZlcmVkLiAqKVxuXG5sZXQgcGFyc2VfcmVjb3JkX3Nsb3cgfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuIHNleHBzID1cbiAgbGV0IHVuc2VlbiA9IEZpZWxkcy5sZW5ndGggZmllbGRzIGluXG4gIGxldCBzdGF0ZSA9IFN0YXRlLmNyZWF0ZSB1bnNlZW4gaW5cbiAgbGV0IGxlbiA9IHNlZW4gKyB1bnNlZW4gaW5cbiAgKCogcG9wdWxhdGUgc3RhdGUgKilcbiAgcGFyc2Vfc3BpbmVfc2xvdyB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzO1xuICAoKiBwYXJzZSB2YWx1ZXMgZnJvbSBzdGF0ZSAqKVxuICBwYXJzZV92YWx1ZXMgfmZpZWxkcyB+c3RhdGUgfnBvczowXG47O1xuXG4oKiBGYXN0IHBhdGggZm9yIHJlY29yZCBwYXJzaW5nLiBEaXJlY3RseSBwYXJzZXMgYW5kIHJldHVybnMgZmllbGRzIGluIHRoZSBvcmRlciB0aGV5IGFyZVxuICAgZGVjbGFyZWQuIEZhbGxzIGJhY2sgb24gc2xvdyBwYXRoIGlmIGFueSBmaWVsZHMgYXJlIGFic2VudCwgcmVvcmRlcmVkLCBvciBtYWxmb3JtZWQuICopXG5cbmxldCByZWMgcGFyc2VfZmllbGRfZmFzdFxuICA6IHR5cGUgYSBiLlxuICAgIGZpZWxkczooYSAqIGIpIEZpZWxkcy50XG4gICAgLT4gaW5kZXg6KHN0cmluZyAtPiBpbnQpXG4gICAgLT4gZXh0cmE6Ym9vbFxuICAgIC0+IHNlZW46aW50XG4gICAgLT4gU2V4cC50IGxpc3RcbiAgICAtPiBhICogYlxuICA9XG4gIGZ1biB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHMgLT5cbiAgbGV0IChGaWVsZCB7IG5hbWU7IGtpbmQ7IGNvbnY7IHJlc3QgfSkgPSBmaWVsZHMgaW5cbiAgbWF0Y2ggc2V4cHMgd2l0aFxuICB8IExpc3QgKEF0b20gYXRvbSA6OiBhcmdzKSA6OiBvdGhlcnMgd2hlbiBTdHJpbmcuZXF1YWwgYXRvbSBuYW1lIC0+XG4gICAgKG1hdGNoIGtpbmQsIGFyZ3Mgd2l0aFxuICAgICB8IFJlcXVpcmVkLCBbIHNleHAgXSAtPlxuICAgICAgIGNvbnYgc2V4cCwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVyc1xuICAgICB8IERlZmF1bHQgXywgWyBzZXhwIF0gLT5cbiAgICAgICBjb252IHNleHAsIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkczpyZXN0IH5pbmRleCB+ZXh0cmEgfnNlZW46KHNlZW4gKyAxKSBvdGhlcnNcbiAgICAgfCBPbWl0X25pbCwgWyBzZXhwIF0gLT5cbiAgICAgICBjb252IHNleHAsIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkczpyZXN0IH5pbmRleCB+ZXh0cmEgfnNlZW46KHNlZW4gKyAxKSBvdGhlcnNcbiAgICAgfCBTZXhwX29wdGlvbiwgWyBzZXhwIF0gLT5cbiAgICAgICAoIFNvbWUgKGNvbnYgc2V4cClcbiAgICAgICAsIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkczpyZXN0IH5pbmRleCB+ZXh0cmEgfnNlZW46KHNlZW4gKyAxKSBvdGhlcnMgKVxuICAgICB8IFNleHBfbGlzdCwgWyBzZXhwIF0gLT5cbiAgICAgICAoIGxpc3Rfb2Zfc2V4cCBjb252IHNleHBcbiAgICAgICAsIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkczpyZXN0IH5pbmRleCB+ZXh0cmEgfnNlZW46KHNlZW4gKyAxKSBvdGhlcnMgKVxuICAgICB8IFNleHBfYXJyYXksIFsgc2V4cCBdIC0+XG4gICAgICAgKCBhcnJheV9vZl9zZXhwIGNvbnYgc2V4cFxuICAgICAgICwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVycyApXG4gICAgIHwgU2V4cF9ib29sLCBbXSAtPlxuICAgICAgIHRydWUsIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkczpyZXN0IH5pbmRleCB+ZXh0cmEgfnNlZW46KHNlZW4gKyAxKSBvdGhlcnNcbiAgICAgKCogbWFsZm9ybWVkIGZpZWxkIG9mIHNvbWUga2luZCwgZGlzcGF0Y2ggdG8gc2xvdyBwYXRoICopXG4gICAgIHwgXywgXyAtPiBwYXJzZV9yZWNvcmRfc2xvdyB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHMpXG4gICgqIG1hbGZvcm1lZCBvciBvdXQtb2Ytb3JkZXIgZmllbGQsIGRpc3BhdGNoIHRvIHNsb3cgcGF0aCAqKVxuICB8IF8gLT4gcGFyc2VfcmVjb3JkX3Nsb3cgfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuIHNleHBzXG5cbmFuZCBwYXJzZV9zcGluZV9mYXN0XG4gIDogdHlwZSBhLlxuICAgIGZpZWxkczphIEZpZWxkcy50XG4gICAgLT4gaW5kZXg6KHN0cmluZyAtPiBpbnQpXG4gICAgLT4gZXh0cmE6Ym9vbFxuICAgIC0+IHNlZW46aW50XG4gICAgLT4gU2V4cC50IGxpc3RcbiAgICAtPiBhXG4gID1cbiAgZnVuIH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwcyAtPlxuICBtYXRjaCBmaWVsZHMgd2l0aFxuICB8IEZpZWxkIF8gLT4gcGFyc2VfZmllbGRfZmFzdCB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHNcbiAgfCBFbXB0eSAtPlxuICAgIChtYXRjaCBzZXhwcyB3aXRoXG4gICAgIHwgW10gLT4gKClcbiAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAoKiBleHRyYSBzZXhwcywgZGlzcGF0Y2ggdG8gc2xvdyBwYXRoICopXG4gICAgICAgcGFyc2VfcmVjb3JkX3Nsb3cgfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuIHNleHBzKVxuOztcblxubGV0IHBhcnNlX3JlY29yZF9mYXN0IH5maWVsZHMgfmluZGV4IH5leHRyYSBzZXhwcyA9XG4gIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuOjAgc2V4cHNcbjs7XG5cbigqIEVudHJ5IHBvaW50cy4gKilcblxubGV0IHJlY29yZF9vZl9zZXhwc1xuICAgICAgfmNhbGxlclxuICAgICAgfmNvbnRleHRcbiAgICAgIH5maWVsZHNcbiAgICAgIH5pbmRleF9vZl9maWVsZFxuICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgfmNyZWF0ZVxuICAgICAgc2V4cHNcbiAgPVxuICBsZXQgYWxsb3dfZXh0cmFfZmllbGRzID1cbiAgICBhbGxvd19leHRyYV9maWVsZHMgfHwgbm90ICFTZXhwX2NvbnYucmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkc1xuICBpblxuICBtYXRjaFxuICAgIHBhcnNlX3JlY29yZF9mYXN0IH5maWVsZHMgfmluZGV4OmluZGV4X29mX2ZpZWxkIH5leHRyYTphbGxvd19leHRyYV9maWVsZHMgc2V4cHNcbiAgd2l0aFxuICB8IHZhbHVlIC0+IGNyZWF0ZSB2YWx1ZVxuICB8IGV4Y2VwdGlvbiBNYWxmb3JtZWQgbWFsZm9ybWVkIC0+IE1hbGZvcm1lZC5yYWlzZSBtYWxmb3JtZWQgfmNhbGxlciB+Y29udGV4dFxuOztcblxubGV0IHJlY29yZF9vZl9zZXhwIH5jYWxsZXIgfmZpZWxkcyB+aW5kZXhfb2ZfZmllbGQgfmFsbG93X2V4dHJhX2ZpZWxkcyB+Y3JlYXRlIHNleHAgPVxuICBtYXRjaCAoc2V4cCA6IFNleHAudCkgd2l0aFxuICB8IEF0b20gXyBhcyBjb250ZXh0IC0+IHJlY29yZF9saXN0X2luc3RlYWRfYXRvbSBjYWxsZXIgY29udGV4dFxuICB8IExpc3Qgc2V4cHMgYXMgY29udGV4dCAtPlxuICAgIHJlY29yZF9vZl9zZXhwc1xuICAgICAgfmNhbGxlclxuICAgICAgfmNvbnRleHRcbiAgICAgIH5maWVsZHNcbiAgICAgIH5pbmRleF9vZl9maWVsZFxuICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgfmNyZWF0ZVxuICAgICAgc2V4cHNcbjs7XG4iLCIoKiBUaGUgW2dsb2JhbGl6ZV97Ym9vbCxjaGFyLHVuaXR9XSBmdW5jdGlvbnMgYXJlIHdyaXR0ZW4gYXMgbWF0Y2hlcyBwbHVzIHRoZSBpZGVudGl0eVxuICAgZnVuY3Rpb24gc28gdGhhdCB0aGUgdHlwZSBjaGVja2VyIGNhbiBnaXZlIHRoZW0gdGhlIGRlc2lyZWQgdHlwZSwgd2l0aG91dCBoYXZpbmcgdG8gZG9cbiAgIGFueXRoaW5nIHNwZWNpYWwuICBIb3dldmVyLCBbZ2xvYmFsaXplX2ludF0gY2Fubm90IGJlIHdyaXR0ZW4gdGhpcyB3YXksIHNvIHdlIHJlc29ydCB0b1xuICAgdXNpbmcgYW4gW2V4dGVybmFsXS4gKilcblxubGV0IGdsb2JhbGl6ZV9ib29sID0gZnVuY3Rpb25cbiAgfCAodHJ1ZSB8IGZhbHNlKSBhcyBiIC0+IGJcbjs7XG5cbmxldCBnbG9iYWxpemVfY2hhciA9IGZ1bmN0aW9uXG4gIHwgJ1xceDAwJyAuLiAnXFx4RkYnIGFzIGMgLT4gY1xuOztcblxuZXh0ZXJuYWwgZ2xvYmFsaXplX2Zsb2F0IDogKGZsb2F0W0Bsb2NhbF0pIC0+IGZsb2F0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX2ludCA6IChpbnRbQGxvY2FsXSkgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX2ludDMyIDogKGludDMyW0Bsb2NhbF0pIC0+IGludDMyID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX2ludDY0IDogKGludDY0W0Bsb2NhbF0pIC0+IGludDY0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX25hdGl2ZWludCA6IChuYXRpdmVpbnRbQGxvY2FsXSkgLT4gbmF0aXZlaW50ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX2J5dGVzIDogKGJ5dGVzW0Bsb2NhbF0pIC0+IGJ5dGVzID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX3N0cmluZyA6IChzdHJpbmdbQGxvY2FsXSkgLT4gc3RyaW5nID0gXCJjYW1sX29ial9kdXBcIlxuXG5sZXQgZ2xvYmFsaXplX3VuaXQgKCgpIGFzIHUpID0gdVxuXG5leHRlcm5hbCBnbG9iYWxpemVfYXJyYXknIDogKCdhIGFycmF5W0Bsb2NhbF0pIC0+ICdhIGFycmF5ID0gXCJjYW1sX29ial9kdXBcIlxuXG5sZXQgZ2xvYmFsaXplX2FycmF5IF8gYSA9IGdsb2JhbGl6ZV9hcnJheScgYVxuXG5sZXQgcmVjIGdsb2JhbGl6ZV9saXN0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgeCA6OiB4cyAtPiBmIHggOjogZ2xvYmFsaXplX2xpc3QgZiB4c1xuOztcblxubGV0IGdsb2JhbGl6ZV9vcHRpb24gZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcbjs7XG5cbmxldCBnbG9iYWxpemVfcmVzdWx0IGdsb2JhbGl6ZV9hIGdsb2JhbGl6ZV9iIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBhIC0+IE9rIChnbG9iYWxpemVfYSBhKVxuICB8IEVycm9yIGIgLT4gRXJyb3IgKGdsb2JhbGl6ZV9iIGIpXG47O1xuXG5sZXQgZ2xvYmFsaXplX3JlZicgciA9IHJlZiAhclxubGV0IGdsb2JhbGl6ZV9yZWYgXyByID0gZ2xvYmFsaXplX3JlZicgclxuIiwiKCoqIFByaW1pdGl2ZXMgZm9yIHBvbHltb3JwaGljIGNvbXBhcmUuICopXG5cbigqXyBQb2x5bW9ycGhpYyBjb21waWxlciBwcmltaXRpdmVzIGNhbid0IGJlIGFsaWFzZXMgYXMgdGhpcyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoXG4gIGlubGluaW5nLiAoSWYgYWxpYXNlZCB3aXRob3V0IGEgdHlwZSBhbm5vdGF0aW9uLCB0aGUgY29tcGlsZXIgd291bGQgaW1wbGVtZW50IHRoZW1cbiAgdXNpbmcgdGhlIGdlbmVyaWMgY29kZSBkb2luZyBhIEMgY2FsbCwgYW5kIGl0J3MgdGhpcyBjb2RlIHRoYXQgd291bGQgYmUgaW5saW5lZC4pIEFzIGFcbiAgcmVzdWx0IHdlIGhhdmUgdG8gY29weSB0aGUgW2V4dGVybmFsIC4uLl0gZGVjbGFyYXRpb24gaGVyZS4gKilcbmV4dGVybmFsICggPCApIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPSApIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoID4gKSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA+PSApIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgYXNjZW5kaW5nIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmV4dGVybmFsIGVxdWFsIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbmxldCBkZXNjZW5kaW5nIHggeSA9IGNvbXBhcmUgeSB4XG5sZXQgbWF4IHggeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbmxldCBtaW4geCB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuIiwiKCogVGhpcyBtb2R1bGUgaXMgaW5jbHVkZWQgaW4gW0ltcG9ydF0uICBJdCBpcyBhaW1lZCBhdCBtb2R1bGVzIHRoYXQgZGVmaW5lIHRoZSBzdGFuZGFyZFxuICAgY29tYmluYXRvcnMgZm9yIFtzZXhwX29mXSwgW29mX3NleHBdLCBbY29tcGFyZV0gYW5kIFtoYXNoXSBhbmQgYXJlIGluY2x1ZGVkIGluXG4gICBbSW1wb3J0XS4gKilcblxuaW5jbHVkZSAoXG4gIFNoYWRvd19zdGRsaWIgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2hhZG93X3N0ZGxpYlxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgOj0gKCdhLCAnYiwgJ2MpIGZvcm1hdFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0IDo9ICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgKCogVGhlc2UgbW9kdWxlcyBhcmUgcmVkZWZpbmVkIGluIEJhc2UgKilcbiAgd2l0aCBtb2R1bGUgQXJyYXkgOj0gU2hhZG93X3N0ZGxpYi5BcnJheVxuICB3aXRoIG1vZHVsZSBBdG9taWMgOj0gU2hhZG93X3N0ZGxpYi5BdG9taWNcbiAgd2l0aCBtb2R1bGUgQm9vbCA6PSBTaGFkb3dfc3RkbGliLkJvb2xcbiAgd2l0aCBtb2R1bGUgQnVmZmVyIDo9IFNoYWRvd19zdGRsaWIuQnVmZmVyXG4gIHdpdGggbW9kdWxlIEJ5dGVzIDo9IFNoYWRvd19zdGRsaWIuQnl0ZXNcbiAgd2l0aCBtb2R1bGUgQ2hhciA6PSBTaGFkb3dfc3RkbGliLkNoYXJcbiAgd2l0aCBtb2R1bGUgRWl0aGVyIDo9IFNoYWRvd19zdGRsaWIuRWl0aGVyXG4gIHdpdGggbW9kdWxlIEZsb2F0IDo9IFNoYWRvd19zdGRsaWIuRmxvYXRcbiAgd2l0aCBtb2R1bGUgSGFzaHRibCA6PSBTaGFkb3dfc3RkbGliLkhhc2h0YmxcbiAgd2l0aCBtb2R1bGUgSW50IDo9IFNoYWRvd19zdGRsaWIuSW50XG4gIHdpdGggbW9kdWxlIEludDMyIDo9IFNoYWRvd19zdGRsaWIuSW50MzJcbiAgd2l0aCBtb2R1bGUgSW50NjQgOj0gU2hhZG93X3N0ZGxpYi5JbnQ2NFxuICB3aXRoIG1vZHVsZSBMYXp5IDo9IFNoYWRvd19zdGRsaWIuTGF6eVxuICB3aXRoIG1vZHVsZSBMaXN0IDo9IFNoYWRvd19zdGRsaWIuTGlzdFxuICB3aXRoIG1vZHVsZSBNYXAgOj0gU2hhZG93X3N0ZGxpYi5NYXBcbiAgd2l0aCBtb2R1bGUgTmF0aXZlaW50IDo9IFNoYWRvd19zdGRsaWIuTmF0aXZlaW50XG4gIHdpdGggbW9kdWxlIE9wdGlvbiA6PSBTaGFkb3dfc3RkbGliLk9wdGlvblxuICB3aXRoIG1vZHVsZSBQcmludGYgOj0gU2hhZG93X3N0ZGxpYi5QcmludGZcbiAgd2l0aCBtb2R1bGUgUXVldWUgOj0gU2hhZG93X3N0ZGxpYi5RdWV1ZVxuICB3aXRoIG1vZHVsZSBSYW5kb20gOj0gU2hhZG93X3N0ZGxpYi5SYW5kb21cbiAgd2l0aCBtb2R1bGUgUmVzdWx0IDo9IFNoYWRvd19zdGRsaWIuUmVzdWx0XG4gIHdpdGggbW9kdWxlIFNldCA6PSBTaGFkb3dfc3RkbGliLlNldFxuICB3aXRoIG1vZHVsZSBTdGFjayA6PSBTaGFkb3dfc3RkbGliLlN0YWNrXG4gIHdpdGggbW9kdWxlIFN0cmluZyA6PSBTaGFkb3dfc3RkbGliLlN0cmluZ1xuICB3aXRoIG1vZHVsZSBTeXMgOj0gU2hhZG93X3N0ZGxpYi5TeXNcbiAgd2l0aCBtb2R1bGUgVWNoYXIgOj0gU2hhZG93X3N0ZGxpYi5VY2hhclxuICB3aXRoIG1vZHVsZSBVbml0IDo9IFNoYWRvd19zdGRsaWIuVW5pdClcbiAgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxudHlwZSAnYSByZWYgPSAnYSBTdGRsaWIucmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuXG4oKiBSZXNodWZmbGUgW1N0ZGxpYl0gc28gdGhhdCB3ZSBjaG9vc2UgdGhlIG1vZHVsZXMgdXNpbmcgbGFiZWxzIHdoZW4gYXZhaWxhYmxlLiAqKVxubW9kdWxlIFN0ZGxpYiA9IHN0cnVjdFxuICBpbmNsdWRlIFN0ZGxpYlxuICBpbmNsdWRlIFN0ZGxpYi5TdGRMYWJlbHNcbiAgaW5jbHVkZSBTdGRsaWIuTW9yZUxhYmVsc1xuZW5kXG5cbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgoJ2EgLT4gJ2IpW0Bsb2NhbF9vcHRdKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuKCogVGhlc2UgbmVlZCB0byBiZSBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBnZXQgdGhlIGxhenkgYmVoYXZpb3IgKilcbmV4dGVybmFsICggJiYgKSA6IChib29sW0Bsb2NhbF9vcHRdKSAtPiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlc2VxdW9yXCJcbmV4dGVybmFsIG5vdCA6IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5cbigqIFdlIHVzZSBbT2JqLm1hZ2ljXSBoZXJlIGFzIG90aGVyIGltcGxlbWVudGF0aW9ucyBnZW5lcmF0ZSBhIGNvbmRpdGlvbmFsIGp1bXAgYW5kIHRoZVxuICAgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZSBpcyBub3RpY2VhYmxlLiAqKVxubGV0IGJvb2xfdG9faW50ICh4IDogYm9vbCkgOiBpbnQgPSBTdGRsaWIuT2JqLm1hZ2ljIHhcblxuKCogVGhpcyBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIGZvciB0aGUgd2FybmluZ3MgdG8gd29yayBwcm9wZXJseSAqKVxuZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxubGV0ICggIT0gKSA9IFN0ZGxpYi4oICE9IClcbmxldCAoICogKSA9IFN0ZGxpYi4oICogKVxubGV0ICggKiogKSA9IFN0ZGxpYi4oICoqIClcbmxldCAoICouICkgPSBTdGRsaWIuKCAqLiApXG5sZXQgKCArICkgPSBTdGRsaWIuKCArIClcbmxldCAoICsuICkgPSBTdGRsaWIuKCArLiApXG5sZXQgKCAtICkgPSBTdGRsaWIuKCAtIClcbmxldCAoIC0uICkgPSBTdGRsaWIuKCAtLiApXG5sZXQgKCAvICkgPSBTdGRsaWIuKCAvIClcbmxldCAoIC8uICkgPSBTdGRsaWIuKCAvLiApXG5cbm1vZHVsZSBQb2x5ID0gUG9seTAgKCoqIEBjYW5vbmljYWwgQmFzZS5Qb2x5ICopXG5cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICgqIERlY2xhcmVkIGFzIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9hcHBseV9YIHdyYXBwaW5nIGV2ZW4gd2hlblxuICAgICBjb21waWxpbmcgd2l0aG91dCBjcm9zcyBsaWJyYXJ5IGlubGluaW5nLiAqKVxuICBleHRlcm5hbCAoID0gKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG4gIGV4dGVybmFsICggPD4gKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG4gIGV4dGVybmFsICggPCApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+ICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuICBleHRlcm5hbCAoIDw9ICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbiAgZXh0ZXJuYWwgKCA+PSApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbiAgZXh0ZXJuYWwgZXF1YWwgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGxldCBhc2NlbmRpbmcgKHggOiBpbnQpIHkgPSBjb21wYXJlIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGludCkgeSA9IGNvbXBhcmUgeSB4XG4gIGxldCBtYXggKHggOiBpbnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBpbnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICAoKiBEZWNsYXJlZCBhcyBleHRlcm5hbHMgc28gdGhhdCB0aGUgY29tcGlsZXIgc2tpcHMgdGhlIGNhbWxfYXBwbHlfWCB3cmFwcGluZyBldmVuIHdoZW5cbiAgICAgY29tcGlsaW5nIHdpdGhvdXQgY3Jvc3MgbGlicmFyeSBpbmxpbmluZy4gKilcbiAgZXh0ZXJuYWwgKCA9IClcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+IClcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoIDwgKVxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gYm9vbFxuICAgID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPiApXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPj0gKVxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gYm9vbFxuICAgID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnRcbiAgICA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IFN0ZGxpYi5JbnQ2NC50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogU3RkbGliLkludDY0LnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBtYXggKHggOiBTdGRsaWIuSW50NjQudCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IFN0ZGxpYi5JbnQ2NC50KSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbm1vZHVsZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbm1vZHVsZSBCb29sX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBib29sKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogYm9vbCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGJvb2wpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogYm9vbCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogYm9vbCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBib29sKSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogYm9vbCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgQ2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogY2hhcikgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGNoYXIpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBjaGFyKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGNoYXIpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogY2hhcikgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IGNoYXIpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIFVjaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgaSB4ID0gU3RkbGliLlVjaGFyLnRvX2ludCB4XG4gIGxldCAoIDwgKSAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA8PSApICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA8PiApICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD4gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA9ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPiApICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPiApIChpIHgpIChpIHkpXG4gIGxldCAoID49ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIChpIHgpIChpIHkpXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID1cbiAgICBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmFzY2VuZGluZyAoaSB4KSAoaSB5KVxuICA7O1xuXG4gIGxldCBkZXNjZW5kaW5nICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZGVzY2VuZGluZyAoaSB4KSAoaSB5KVxuICA7O1xuXG4gIGxldCBjb21wYXJlICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmUgKGkgeCkgKGkgeSlcbiAgbGV0IGVxdWFsICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmVxdWFsIChpIHgpIChpIHkpXG4gIGxldCBtYXggKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbm1vZHVsZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGZsb2F0KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogZmxvYXQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogZmxvYXQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGZsb2F0KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGZsb2F0KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogZmxvYXQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIFN0cmluZ19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IHN0cmluZykgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IHN0cmluZykgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IHN0cmluZykgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBzdHJpbmcpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBzdHJpbmcpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogYnl0ZXMpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBieXRlcykgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBieXRlcykgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogYnl0ZXMpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogYnl0ZXMpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBieXRlcykgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG4oKiBUaGlzIG5lZWRzIHRvIGJlIGRlZmluZWQgYXMgYW4gZXh0ZXJuYWwgc28gdGhhdCB0aGUgY29tcGlsZXIgY2FuIHNwZWNpYWxpemUgaXQgYXMgYVxuICAgZGlyZWN0IHNldCBvciBjYW1sX21vZGlmeSAqKVxuZXh0ZXJuYWwgKCA6PSApIDogKCdhIHJlZltAbG9jYWxfb3B0XSkgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5cbigqIFRoZXNlIG5lZWQgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBvdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdvbid0IHVuYm94XG4gICByZWZlcmVuY2VzICopXG5leHRlcm5hbCAoICEgKSA6ICgnYSByZWZbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsIHJlZiA6ICdhIC0+ICgnYSByZWZbQGxvY2FsX29wdF0pID0gXCIlbWFrZW11dGFibGVcIlxuXG5sZXQgKCBAICkgPSBTdGRsaWIuKCBAIClcbmxldCAoIF4gKSA9IFN0ZGxpYi4oIF4gKVxubGV0ICggfi0gKSA9IFN0ZGxpYi4oIH4tIClcbmxldCAoIH4tLiApID0gU3RkbGliLiggfi0uIClcbmxldCAoIGFzciApID0gU3RkbGliLiggYXNyIClcbmxldCAoIGxhbmQgKSA9IFN0ZGxpYi4oIGxhbmQgKVxubGV0IGxub3QgPSBTdGRsaWIubG5vdFxubGV0ICggbG9yICkgPSBTdGRsaWIuKCBsb3IgKVxubGV0ICggbHNsICkgPSBTdGRsaWIuKCBsc2wgKVxubGV0ICggbHNyICkgPSBTdGRsaWIuKCBsc3IgKVxubGV0ICggbHhvciApID0gU3RkbGliLiggbHhvciApXG5sZXQgKCBtb2QgKSA9IFN0ZGxpYi4oIG1vZCApXG5sZXQgYWJzID0gU3RkbGliLmFic1xubGV0IGZhaWx3aXRoID0gU3RkbGliLmZhaWx3aXRoXG5sZXQgZnN0ID0gU3RkbGliLmZzdFxubGV0IGludmFsaWRfYXJnID0gU3RkbGliLmludmFsaWRfYXJnXG5sZXQgc25kID0gU3RkbGliLnNuZFxuXG4oKiBbcmFpc2VdIG5lZWRzIHRvIGJlIGRlZmluZWQgYXMgYW4gZXh0ZXJuYWwgYXMgdGhlIGNvbXBpbGVyIGF1dG9tYXRpY2FsbHkgcmVwbGFjZXNcbiAgICclcmFpc2UnIGJ5ICclcmVyYWlzZScgd2hlbiBhcHByb3ByaWF0ZS4gKilcbmV4dGVybmFsIHJhaXNlIDogZXhuIC0+IF8gPSBcIiVyYWlzZVwiXG5cbmxldCBwaHlzX2VxdWFsID0gU3RkbGliLiggPT0gKVxuXG5leHRlcm5hbCBkZWNyIDogKGludCByZWZbQGxvY2FsX29wdF0pIC0+IHVuaXQgPSBcIiVkZWNyXCJcbmV4dGVybmFsIGluY3IgOiAoaW50IHJlZltAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWluY3JcIlxuXG4oKiB1c2VkIGJ5IHNleHBfY29udiwgd2hpY2ggZmxvYXQwIGRlcGVuZHMgb24gdGhyb3VnaCBvcHRpb24gKilcbmxldCBmbG9hdF9vZl9zdHJpbmcgPSBTdGRsaWIuZmxvYXRfb2Zfc3RyaW5nXG5cbigqIFthbV90ZXN0aW5nXSBpcyB1c2VkIGluIGEgZmV3IHBsYWNlcyB0byBiZWhhdmUgZGlmZmVyZW50bHkgd2hlbiBpbiB0ZXN0aW5nIG1vZGUsIHN1Y2hcbiAgIGFzIGluIFtyYW5kb20ubWxdLiAgW2FtX3Rlc3RpbmddIGlzIGltcGxlbWVudGVkIHVzaW5nIFtCYXNlX2FtX3Rlc3RpbmddLCBhIHdlYWsgQy9qc1xuICAgcHJpbWl0aXZlIHRoYXQgcmV0dXJucyBbZmFsc2VdLCBidXQgd2hlbiBsaW5raW5nIGFuIGlubGluZS10ZXN0LXJ1bm5lciBleGVjdXRhYmxlLCBpc1xuICAgb3ZlcnJpZGRlbiBieSBhbm90aGVyIHByaW1pdGl2ZSB0aGF0IHJldHVybnMgW3RydWVdLiAqKVxuZXh0ZXJuYWwgYW1fdGVzdGluZyA6IHVuaXQgLT4gYm9vbCA9IFwiQmFzZV9hbV90ZXN0aW5nXCJcblxubGV0IGFtX3Rlc3RpbmcgPSBhbV90ZXN0aW5nICgpXG4iLCIoKiBbSW50MF0gZGVmaW5lcyBpbnRlZ2VyIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHlcbiAgIGRlZmluZWQgaW4gdGVybXMgb2YgW1N0ZGxpYl0uIFtJbnQwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlXG4gICBwYXJ0IG9mIFtTdGRsaWJdIHRoYXQgW0Jhc2VdIHVzZXMgZm9yIGludGVnZXJzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlclxuICAgdGhhbiBpbnQwLm1sIHNob3VsZCB1c2UgdGhlc2UgZnVuY3Rpb25zIGRpcmVjdGx5IHRocm91Z2ggW1N0ZGxpYl0uIFtJbnQwXSBoYXNcbiAgIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLlxuXG4gICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGludHMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkludF0gaW4gYnVpbGRcbiAgIG9yZGVyIHNob3VsZCBkbzpcblxuICAge1tcbiAgICAgbW9kdWxlIEludCAgPSBJbnQwXG4gICBdfVxuXG4gICBEZWZpbmluZyBbbW9kdWxlIEludCA9IEludDBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHMgb2NhbWxkZXBcbiAgIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuSW50XS4gKilcblxubGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5zdHJpbmdfb2ZfaW50XG5sZXQgb2Zfc3RyaW5nID0gU3RkbGliLmludF9vZl9zdHJpbmdcbmxldCBvZl9zdHJpbmdfb3B0ID0gU3RkbGliLmludF9vZl9zdHJpbmdfb3B0XG5sZXQgdG9fZmxvYXQgPSBTdGRsaWIuZmxvYXRfb2ZfaW50XG5sZXQgb2ZfZmxvYXQgPSBTdGRsaWIuaW50X29mX2Zsb2F0XG5sZXQgbWF4X3ZhbHVlID0gU3RkbGliLm1heF9pbnRcbmxldCBtaW5fdmFsdWUgPSBTdGRsaWIubWluX2ludFxubGV0IHN1Y2MgPSBTdGRsaWIuc3VjY1xubGV0IHByZWQgPSBTdGRsaWIucHJlZFxuIiwib3BlbiEgSW1wb3J0MFxuaW5jbHVkZSBTdGRsaWIuUHJpbnRmXG5cbigqKiBmYWlsd2l0aCwgaW52YWxpZF9hcmcsIGFuZCBleGl0IGFjY2VwdGluZyBwcmludGYncyBmb3JtYXQuICopXG5cbmxldFtAaW5saW5lIG5ldmVyXSBmYWlsd2l0aGYgZm10ID0ga3NwcmludGYgKGZ1biBzICgpIC0+IGZhaWx3aXRoIHMpIGZtdFxubGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfYXJnZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgKCkgLT4gaW52YWxpZF9hcmcgcykgZm10XG4iLCIoKiBbU3lzMF0gZGVmaW5lcyBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW5cbiAgIHRlcm1zIG9mIFtTdGRsaWIuU3lzXS4gIFtTeXMwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2ZcbiAgIFtTdGRsaWIuU3lzXSB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIHN5cy5tbFxuICAgc2hvdWxkIHVzZSBbU3RkbGliLlN5c10uIFtTeXMwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZVxuICAgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSB0aGVzZVxuICAgZnVuY3Rpb25zIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5TeXNdIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuICAgW21vZHVsZSBTeXMgPSBTeXMwXS4gIERlZmluaW5nIFttb2R1bGUgU3lzID0gU3lzMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZVxuICAgaXQgcHJldmVudHMgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5TeXNdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5cbnR5cGUgYmFja2VuZF90eXBlID0gU3RkbGliLlN5cy5iYWNrZW5kX3R5cGUgPVxuICB8IE5hdGl2ZVxuICB8IEJ5dGVjb2RlXG4gIHwgT3RoZXIgb2Ygc3RyaW5nXG5cbmxldCBiYWNrZW5kX3R5cGUgPSBTdGRsaWIuU3lzLmJhY2tlbmRfdHlwZVxubGV0IGludGVyYWN0aXZlID0gU3RkbGliLlN5cy5pbnRlcmFjdGl2ZVxubGV0IG9zX3R5cGUgPSBTdGRsaWIuU3lzLm9zX3R5cGVcbmxldCB1bml4ID0gU3RkbGliLlN5cy51bml4XG5sZXQgd2luMzIgPSBTdGRsaWIuU3lzLndpbjMyXG5sZXQgY3lnd2luID0gU3RkbGliLlN5cy5jeWd3aW5cbmxldCB3b3JkX3NpemVfaW5fYml0cyA9IFN0ZGxpYi5TeXMud29yZF9zaXplXG5sZXQgaW50X3NpemVfaW5fYml0cyA9IFN0ZGxpYi5TeXMuaW50X3NpemVcbmxldCBiaWdfZW5kaWFuID0gU3RkbGliLlN5cy5iaWdfZW5kaWFuXG5sZXQgbWF4X3N0cmluZ19sZW5ndGggPSBTdGRsaWIuU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgbWF4X2FycmF5X2xlbmd0aCA9IFN0ZGxpYi5TeXMubWF4X2FycmF5X2xlbmd0aFxubGV0IHJ1bnRpbWVfdmFyaWFudCA9IFN0ZGxpYi5TeXMucnVudGltZV92YXJpYW50XG5sZXQgcnVudGltZV9wYXJhbWV0ZXJzID0gU3RkbGliLlN5cy5ydW50aW1lX3BhcmFtZXRlcnNcbmxldCBhcmd2ID0gU3RkbGliLlN5cy5hcmd2XG5sZXQgZ2V0X2FyZ3YgKCkgPSBTdGRsaWIuU3lzLmFyZ3ZcbmxldCBvY2FtbF92ZXJzaW9uID0gU3RkbGliLlN5cy5vY2FtbF92ZXJzaW9uXG5sZXQgZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MgPSBTdGRsaWIuU3lzLmVuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG5sZXQgcnVudGltZV93YXJuaW5nc19lbmFibGVkID0gU3RkbGliLlN5cy5ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcblxubGV0IGdldGVudl9leG4gdmFyID1cbiAgdHJ5IFN0ZGxpYi5TeXMuZ2V0ZW52IHZhciB3aXRoXG4gIHwgU3RkbGliLk5vdF9mb3VuZCAtPlxuICAgIFByaW50Zi5mYWlsd2l0aGYgXCJTeXMuZ2V0ZW52X2V4bjogZW52aXJvbm1lbnQgdmFyaWFibGUgJXMgaXMgbm90IHNldFwiIHZhciAoKVxuOztcblxubGV0IGdldGVudiB2YXIgPVxuICBtYXRjaCBTdGRsaWIuU3lzLmdldGVudiB2YXIgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxuZXh0ZXJuYWwgb3BhcXVlX2lkZW50aXR5IDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlb3BhcXVlXCJcbmV4dGVybmFsIG9wYXF1ZV9pZGVudGl0eV9nbG9iYWwgOiAnYSAtPiAnYSA9IFwiJW9wYXF1ZVwiXG5cbmV4Y2VwdGlvbiBCcmVhayA9IFN0ZGxpYi5TeXMuQnJlYWtcbiIsIigqIFtBcnJheTBdIGRlZmluZXMgYXJyYXkgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zXG4gICBvZiBbU3RkbGliLkFycmF5XS4gIFtBcnJheTBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZiBbU3RkbGliLkFycmF5XVxuICAgdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBhcnJheTAubWwgc2hvdWxkIHVzZSBbU3RkbGliLkFycmF5XS5cbiAgIFtBcnJheTBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGFycmF5cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQXJyYXldIGluIGJ1aWxkIG9yZGVyIHNob3VsZFxuICAgZG8gW21vZHVsZSBBcnJheSA9IEFycmF5MF0uICBUaGlzIGluY2x1ZGVzIHVzZXMgb2Ygc3Vic2NyaXB0IHN5bnRheCAoW3guKGkpXSwgW3guKGkpIDwtXG4gICBlXSksIHdoaWNoIHRoZSBPQ2FtbCBwYXJzZXIgZGVzdWdhcnMgaW50byBjYWxscyB0byBbQXJyYXkuZ2V0XSBhbmQgW0FycmF5LnNldF0uXG4gICBEZWZpbmluZyBbbW9kdWxlIEFycmF5ID0gQXJyYXkwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzIG9jYW1sZGVwIGZyb21cbiAgIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkFycmF5XS4gKilcblxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG4gIGV4dGVybmFsIGNyZWF0ZV9sb2NhbCA6IGludCAtPiAnYSAtPiAoJ2EgYXJyYXlbQGxvY2FsXSkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBpbnQgLT4gZmxvYXQgYXJyYXkgPSBcImNhbWxfbWFrZV9mbG9hdF92ZWN0XCJcbiAgZXh0ZXJuYWwgZ2V0IDogKCdhIGFycmF5W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogKCdhIGFycmF5W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuXG4gIGV4dGVybmFsIHNldFxuICAgIDogICgnYSBhcnJheVtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICA6ICAoJ2EgYXJyYXlbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgIDogICgnYSBhcnJheVtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICA6ICBzcmM6KCdhIGFycmF5W0Bsb2NhbF9vcHRdKVxuICAgIC0+IHNyY19wb3M6aW50XG4gICAgLT4gZHN0OignYSBhcnJheVtAbG9jYWxfb3B0XSlcbiAgICAtPiBkc3RfcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0XG4gICAgPSBcImNhbWxfYXJyYXlfYmxpdFwiXG5lbmRcblxuaW5jbHVkZSBBcnJheVxuXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5cbmxldCBjcmVhdGUgfmxlbiB4ID1cbiAgdHJ5IGNyZWF0ZSBsZW4geCB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IGludmFsaWRfYXJnZiBcIkFycmF5LmNyZWF0ZSB+bGVuOiVkOiBpbnZhbGlkIGxlbmd0aFwiIGxlbiAoKVxuOztcblxubGV0IGNyZWF0ZV9sb2NhbCB+bGVuIHggPVxuICBcbiAgICAodHJ5IGNyZWF0ZV9sb2NhbCBsZW4geCB3aXRoXG4gICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgaW52YWxpZF9hcmdmIFwiQXJyYXkuY3JlYXRlX2xvY2FsIH5sZW46JWQ6IGludmFsaWQgbGVuZ3RoXCIgbGVuICgpKVxuOztcblxubGV0IGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIH5sZW4gPVxuICB0cnkgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgbGVuIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICBpbnZhbGlkX2FyZ2YgXCJBcnJheS5jcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCB+bGVuOiVkOiBpbnZhbGlkIGxlbmd0aFwiIGxlbiAoKVxuOztcblxubGV0IGFwcGVuZCA9IFN0ZGxpYi5BcnJheS5hcHBlbmRcbmxldCBibGl0ID0gU3RkbGliLkFycmF5LmJsaXRcbmxldCBjb25jYXQgPSBTdGRsaWIuQXJyYXkuY29uY2F0XG5sZXQgY29weSA9IFN0ZGxpYi5BcnJheS5jb3B5XG5sZXQgZmlsbCA9IFN0ZGxpYi5BcnJheS5maWxsXG5cbmxldCBpbml0IGxlbiB+ZjooKGYgOiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBbfHxdXG4gIGVsc2UgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuaW5pdFwiXG4gIGVsc2UgKFxuICAgIGxldCByZXMgPSBjcmVhdGUgfmxlbiAoZiAwKSBpblxuICAgIGZvciBpID0gMSB0byBJbnQwLnByZWQgbGVuIGRvXG4gICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgZG9uZTtcbiAgICByZXMpXG47O1xuXG5sZXQgbWFrZV9tYXRyaXggPSBTdGRsaWIuQXJyYXkubWFrZV9tYXRyaXhcbmxldCBvZl9saXN0ID0gU3RkbGliLkFycmF5Lm9mX2xpc3RcbmxldCBzdWIgPSBTdGRsaWIuQXJyYXkuc3ViXG5sZXQgdG9fbGlzdCA9IFN0ZGxpYi5BcnJheS50b19saXN0XG5cbmxldCBmb2xkIHQgfmluaXQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCByID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmU7XG4gICFyXG47O1xuXG5sZXQgZm9sZF9yaWdodCB0IH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgfmluaXQgPVxuICBsZXQgciA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gbGVuZ3RoIHQgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IHQgaSkgIXJcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBpdGVyIHQgfmY6KChmIDogXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSB0IH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZVxuOztcblxubGV0IG1hcCB0IH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCByID0gY3JlYXRlIH5sZW4gKGYgKHVuc2FmZV9nZXQgdCAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgdCBpKSlcbiAgICBkb25lO1xuICAgIHIpXG47O1xuXG5sZXQgbWFwaSB0IH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHIgPSBjcmVhdGUgfmxlbiAoZiAwICh1bnNhZmVfZ2V0IHQgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgdCBpKSlcbiAgICBkb25lO1xuICAgIHIpXG47O1xuXG5sZXQgc3RhYmxlX3NvcnQgdCB+Y29tcGFyZSA9IFN0ZGxpYi5BcnJheS5zdGFibGVfc29ydCB0IH5jbXA6Y29tcGFyZVxuXG5sZXQgc3dhcCB0IGkgaiA9XG4gIGxldCBlbHRfaSA9IHQuKGkpIGluXG4gIGxldCBlbHRfaiA9IHQuKGopIGluXG4gIHVuc2FmZV9zZXQgdCBpIGVsdF9qO1xuICB1bnNhZmVfc2V0IHQgaiBlbHRfaVxuOztcbiIsIigqIFtDaGFyMF0gZGVmaW5lcyBjaGFyIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgW1N0ZGxpYi5DaGFyXS4gIFtDaGFyMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtTdGRsaWIuQ2hhcl0gdGhhdFxuICAgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gY2hhcjAubWwgc2hvdWxkIHVzZSBbU3RkbGliLkNoYXJdLlxuICAgW0NoYXIwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGxcbiAgIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBjaGFycyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQ2hhcl0gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIENoYXIgPSBDaGFyMF0uICBEZWZpbmluZyBbbW9kdWxlIENoYXIgPSBDaGFyMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdFxuICAgcHJldmVudHMgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5DaGFyXS4gKilcblxub3BlbiEgSW1wb3J0MFxuXG5sZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxubGV0IGVzY2FwZWQgPSBTdGRsaWIuQ2hhci5lc2NhcGVkXG5sZXQgbG93ZXJjYXNlID0gU3RkbGliLkNoYXIubG93ZXJjYXNlX2FzY2lpXG5sZXQgdG9faW50ID0gU3RkbGliLkNoYXIuY29kZVxubGV0IHVuc2FmZV9vZl9pbnQgPSBTdGRsaWIuQ2hhci51bnNhZmVfY2hyXG5sZXQgdXBwZXJjYXNlID0gU3RkbGliLkNoYXIudXBwZXJjYXNlX2FzY2lpXG5cbigqIFdlIHVzZSBvdXIgb3duIHJhbmdlIHRlc3Qgd2hlbiBjb252ZXJ0aW5nIGludGVnZXJzIHRvIGNoYXJzIHJhdGhlciB0aGFuXG4gICBjYWxsaW5nIFtTdGRsaWIuQ2hhci5jaHJdIGJlY2F1c2UgaXQncyBzaW1wbGUgYW5kIGl0IHNhdmVzIHVzIGEgZnVuY3Rpb24gY2FsbFxuICAgYW5kIHRoZSB0cnktd2l0aCAoZXhjZXB0aW9ucyBjb3N0LCBlc3BlY2lhbGx5IGluIHRoZSB3b3JsZCB3aXRoIGJhY2t0cmFjZXMpLiAqKVxubGV0IGludF9pc19vayBpID0gMCA8PSBpICYmIGkgPD0gMjU1XG5sZXQgbWluX3ZhbHVlID0gdW5zYWZlX29mX2ludCAwXG5sZXQgbWF4X3ZhbHVlID0gdW5zYWZlX29mX2ludCAyNTVcbmxldCBvZl9pbnQgaSA9IGlmIGludF9pc19vayBpIHRoZW4gU29tZSAodW5zYWZlX29mX2ludCBpKSBlbHNlIE5vbmVcblxubGV0IG9mX2ludF9leG4gaSA9XG4gIGlmIGludF9pc19vayBpXG4gIHRoZW4gdW5zYWZlX29mX2ludCBpXG4gIGVsc2UgZmFpbHdpdGhmIFwiQ2hhci5vZl9pbnRfZXhuIGdvdCBpbnRlZ2VyIG91dCBvZiByYW5nZTogJWRcIiBpICgpXG47O1xuXG5sZXQgZXF1YWwgKHQxIDogY2hhcikgdDIgPSBQb2x5LmVxdWFsIHQxIHQyXG4iLCIoKiBbTGlzdDBdIGRlZmluZXMgbGlzdCBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgIFtTdGRsaWIuTGlzdF0uICBbTGlzdDBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZiBbU3RkbGliLkxpc3RdIHRoYXRcbiAgIFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGxpc3QwLm1sIHNob3VsZCB1c2UgW1N0ZGxpYi5MaXN0XS5cbiAgIFtMaXN0MF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsXG4gICBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgbGlzdHMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkxpc3RdIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuICAgW21vZHVsZSBMaXN0ID0gTGlzdDBdLiAgRGVmaW5pbmcgW21vZHVsZSBMaXN0ID0gTGlzdDBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXRcbiAgIHByZXZlbnRzIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuTGlzdF0uICopXG5cblxub3BlbiEgSW1wb3J0MFxuXG5sZXQgaGRfZXhuID0gU3RkbGliLkxpc3QuaGRcbmxldCBsZW5ndGggPSBTdGRsaWIuTGlzdC5sZW5ndGhcbmxldCByZXZfYXBwZW5kID0gU3RkbGliLkxpc3QucmV2X2FwcGVuZFxubGV0IHRsX2V4biA9IFN0ZGxpYi5MaXN0LnRsXG5sZXQgdW56aXAgPSBTdGRsaWIuTGlzdC5zcGxpdFxuXG4oKiBTb21lIG9mIHRoZXNlIGFyZSBldGEgZXhwYW5kZWQgaW4gb3JkZXIgdG8gcGVybXV0ZSBwYXJhbWV0ZXIgb3JkZXIgdG8gZm9sbG93IEJhc2VcbiAgIGNvbnZlbnRpb25zLiAqKVxuXG5sZXQgcmVjIGV4aXN0cyB0IH5mOihmIFtAbG9jYWxdKSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IGZhbHNlXG4gIHwgeCA6OiB4cyAtPiBpZiBmIHggdGhlbiB0cnVlIGVsc2UgZXhpc3RzIHhzIH5mXG47O1xuXG5sZXQgcmVjIGV4aXN0czJfb2sgbDEgbDIgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IGZhbHNlXG4gIHwgYTEgOjogbDEsIGEyIDo6IGwyIC0+IGYgYTEgYTIgfHwgZXhpc3RzMl9vayBsMSBsMiB+ZlxuICB8IF8sIF8gLT4gaW52YWxpZF9hcmcgXCJMaXN0LmV4aXN0czJcIlxuOztcblxubGV0IHJlYyBmb2xkIHQgfmluaXQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IGluaXRcbiAgfCBhIDo6IGwgLT4gZm9sZCBsIH5pbml0OihmIGluaXQgYSkgfmZcbjs7XG5cbmxldCByZWMgZm9sZDJfb2sgbDEgbDIgfmluaXQgfmY6KChmIDogXyAtPiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gaW5pdFxuICB8IGExIDo6IGwxLCBhMiA6OiBsMiAtPiBmb2xkMl9vayBsMSBsMiB+ZiB+aW5pdDooZiBpbml0IGExIGEyKVxuICB8IF8sIF8gLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfbGVmdDJcIlxuOztcblxubGV0IGZvcl9hbGwgdCB+ZjooZiBbQGxvY2FsXSkgPSBub3QgKGV4aXN0cyB0IH5mOihmdW4geCAtPiBub3QgKGYgeCkpKVxuXG5sZXQgcmVjIGZvcl9hbGwyX29rIGwxIGwyIH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgYTEgOjogbDEsIGEyIDo6IGwyIC0+IGYgYTEgYTIgJiYgZm9yX2FsbDJfb2sgbDEgbDIgfmZcbiAgfCBfLCBfIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb3JfYWxsMlwiXG47O1xuXG5sZXQgcmVjIGl0ZXIgdCB+ZjooKGYgOiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgYSA6OiBsIC0+XG4gICAgZiBhO1xuICAgIGl0ZXIgbCB+ZlxuOztcblxubGV0IHJlYyBpdGVyMl9vayBsMSBsMiB+ZjooKGYgOiBfIC0+IF8gLT4gdW5pdCkgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gKClcbiAgfCBhMSA6OiBsMSwgYTIgOjogbDIgLT5cbiAgICBmIGExIGEyO1xuICAgIGl0ZXIyX29rIGwxIGwyIH5mXG4gIHwgXywgXyAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuaXRlcjJcIlxuOztcblxubGV0IHJlYyBub250YWlsX21hcCB0IH5mOihmIFtAbG9jYWxdKSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgeCA6OiB4cyAtPlxuICAgIGxldCB5ID0gZiB4IGluXG4gICAgeSA6OiBub250YWlsX21hcCB4cyB+ZlxuOztcblxubGV0IG5vbnRhaWxfbWFwaSB0IH5mID0gU3RkbGliLkxpc3QubWFwaSB0IH5mXG5sZXQgcGFydGl0aW9uIHQgfmYgPSBTdGRsaWIuTGlzdC5wYXJ0aXRpb24gdCB+ZlxuXG5sZXQgcmV2X21hcCA9XG4gIGxldCByZWMgcm1hcF9mIGYgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCBhIDo6IGwgLT4gcm1hcF9mIGYgKGYgYSA6OiBhY2N1KSBsXG4gIGluXG4gIGZ1biBsIH5mOihmIFtAbG9jYWxdKSAtPiBybWFwX2YgZiBbXSBsXG47O1xuXG5sZXQgcmV2X21hcDJfb2sgPVxuICBsZXQgcmVjIHJtYXAyX2YgZiBhY2N1IGwxIGwyID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIFtdIC0+IGFjY3VcbiAgICB8IGExIDo6IGwxLCBhMiA6OiBsMiAtPiBybWFwMl9mIGYgKGYgYTEgYTIgOjogYWNjdSkgbDEgbDJcbiAgICB8IF8sIF8gLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJldl9tYXAyXCJcbiAgaW5cbiAgZnVuIGwxIGwyIH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgLT4gcm1hcDJfZiBmIFtdIGwxIGwyXG47O1xuXG5sZXQgc29ydCBsIH5jb21wYXJlID0gU3RkbGliLkxpc3Quc29ydCBsIH5jbXA6Y29tcGFyZVxubGV0IHN0YWJsZV9zb3J0IGwgfmNvbXBhcmUgPSBTdGRsaWIuTGlzdC5zdGFibGVfc29ydCBsIH5jbXA6Y29tcGFyZVxuXG5sZXQgcmV2ID0gZnVuY3Rpb25cbiAgfCAoW10gfCBbIF8gXSkgYXMgcmVzIC0+IHJlc1xuICB8IHggOjogeSA6OiByZXN0IC0+IHJldl9hcHBlbmQgcmVzdCBbIHk7IHggXVxuOztcblxubGV0IGZvbGRfcmlnaHQgbCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pIH5pbml0ID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gaW5pdCAoKiBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBbfmZdIGJlbG93ICopXG4gIHwgXyAtPiBmb2xkIH5mOihmdW4gYSBiIC0+IGYgYiBhKSB+aW5pdCAocmV2IGwpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX3JpZ2h0Ml9vayBsMSBsMiB+ZjooKGYgOiBfIC0+IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgfmluaXQgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiBpbml0ICgqIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIFt+Zl0gYmVsb3cgKilcbiAgfCBfLCBfIC0+IGZvbGQyX29rIH5mOihmdW4gYSBiIGMgLT4gZiBiIGMgYSkgfmluaXQgKHJldiBsMSkgKHJldiBsMikgW0Bub250YWlsXVxuOztcbiIsIigqXG4gICBUaGlzIGlzIHRoZSBpbnRlcmZhY2UgdG8gdGhlIHJ1bnRpbWUgc3VwcG9ydCBmb3IgW3BweF9oYXNoXS5cblxuICAgVGhlIFtwcHhfaGFzaF0gc3ludGF4IGV4dGVuc2lvbiBzdXBwb3J0czogW0BAZGVyaXZpbmcgaGFzaF0gYW5kIFslaGFzaF9mb2xkOiBUWVBFXSBhbmRcbiAgIFslaGFzaDogVFlQRV1cblxuICAgRm9yIHR5cGUgW3RdIGEgZnVuY3Rpb24gW2hhc2hfZm9sZF90XSBvZiB0eXBlIFtIYXNoLnN0YXRlIC0+IHQgLT4gSGFzaC5zdGF0ZV0gaXNcbiAgIGdlbmVyYXRlZC5cblxuICAgVGhlIGdlbmVyYXRlZCBbaGFzaF9mb2xkXzxUPl0gZnVuY3Rpb24gaXMgY29tcG9zaXRpb25hbCwgZm9sbG93aW5nIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlXG4gICB0eXBlOyBhbGxvd2luZyB1c2VyIG92ZXJyaWRlcyBhdCBldmVyeSBsZXZlbC4gVGhpcyBpcyBpbiBjb250cmFzdCB0byBvY2FtbCdzIGJ1aWx0aW5cbiAgIHBvbHltb3JwaGljIGhhc2hpbmcgW0hhc2h0YmwuaGFzaF0gd2hpY2ggaWdub3JlcyB1c2VyIG92ZXJyaWRlcy5cblxuICAgVGhlIGdlbmVyYXRvciBhbHNvIHByb3ZpZGVzIGEgZGlyZWN0IGhhc2gtZnVuY3Rpb24gW2hhc2hdIChuYW1lZCBbaGFzaF88VD5dIHdoZW4gPFQ+ICE9XG4gICBcInRcIikgb2YgdHlwZTogW3QgLT4gSGFzaC5oYXNoX3ZhbHVlXS5cblxuICAgVGhlIGZvbGRpbmcgaGFzaCBmdW5jdGlvbiBjYW4gYmUgYWNjZXNzZWQgYXMgWyVoYXNoX2ZvbGQ6IFRZUEVdXG4gICBUaGUgZGlyZWN0IGhhc2ggZnVuY3Rpb24gY2FuIGJlIGFjY2Vzc2VkIGFzIFslaGFzaDogVFlQRV1cbiopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIENoYXIgPSBDaGFyMFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgSGFzaF9pbnRmXG5cbigqKiBCdWlsdGluIGZvbGRpbmctc3R5bGUgaGFzaCBmdW5jdGlvbnMsIGFic3RyYWN0ZWQgb3ZlciBbSGFzaF9pbnRmLlNdICopXG5tb2R1bGUgRm9sZGluZyAoSGFzaCA6IEhhc2hfaW50Zi5TKSA6XG4gIEhhc2hfaW50Zi5CdWlsdGluX2ludGZcbiAgd2l0aCB0eXBlIHN0YXRlID0gSGFzaC5zdGF0ZVxuICAgYW5kIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZSA9IHN0cnVjdFxuICB0eXBlIHN0YXRlID0gSGFzaC5zdGF0ZVxuICB0eXBlIGhhc2hfdmFsdWUgPSBIYXNoLmhhc2hfdmFsdWVcbiAgdHlwZSAnYSBmb2xkZXIgPSBzdGF0ZSAtPiAnYSAtPiBzdGF0ZVxuXG4gIGxldCBoYXNoX2ZvbGRfdW5pdCBzICgpID0gc1xuICBsZXQgaGFzaF9mb2xkX2ludCA9IEhhc2guZm9sZF9pbnRcbiAgbGV0IGhhc2hfZm9sZF9pbnQ2NCA9IEhhc2guZm9sZF9pbnQ2NFxuICBsZXQgaGFzaF9mb2xkX2Zsb2F0ID0gSGFzaC5mb2xkX2Zsb2F0XG4gIGxldCBoYXNoX2ZvbGRfc3RyaW5nID0gSGFzaC5mb2xkX3N0cmluZ1xuICBsZXQgYXNfaW50IGYgcyB4ID0gaGFzaF9mb2xkX2ludCBzIChmIHgpXG5cbiAgKCogVGhpcyBpZ25vcmVzIHRoZSBzaWduIGJpdCBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYnV0IGl0J3MgdW5saWtlbHkgdG8gbGVhZCB0b1xuICAgICBmcmVxdWVudCBjb2xsaXNpb25zIChtaW5fdmFsdWUgY29sbGlkaW5nIHdpdGggMCBpcyB0aGUgbW9zdCBsaWtlbHkgb25lKS4gICopXG4gIGxldCBoYXNoX2ZvbGRfaW50MzIgPSBhc19pbnQgU3RkbGliLkludDMyLnRvX2ludFxuICBsZXQgaGFzaF9mb2xkX2NoYXIgPSBhc19pbnQgQ2hhci50b19pbnRcblxuICBsZXQgaGFzaF9mb2xkX2Jvb2wgPVxuICAgIGFzX2ludCAoZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiAxXG4gICAgICB8IGZhbHNlIC0+IDApXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9uYXRpdmVpbnQgcyB4ID0gaGFzaF9mb2xkX2ludDY0IHMgKFN0ZGxpYi5JbnQ2NC5vZl9uYXRpdmVpbnQgeClcblxuICBsZXQgaGFzaF9mb2xkX29wdGlvbiBoYXNoX2ZvbGRfZWxlbSBzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gaGFzaF9mb2xkX2ludCBzIDBcbiAgICB8IFNvbWUgeCAtPiBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2ludCBzIDEpIHhcbiAgOztcblxuICBsZXQgcmVjIGhhc2hfZm9sZF9saXN0X2JvZHkgaGFzaF9mb2xkX2VsZW0gcyBsaXN0ID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IHNcbiAgICB8IHggOjogeHMgLT4gaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2VsZW0gcyB4KSB4c1xuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfbGlzdCBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgPVxuICAgICgqIFRoZSBbbGVuZ3RoXSBvZiB0aGUgbGlzdCBtdXN0IGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBoYXNoLXN0YXRlIHNvIHZhbHVlcyBvZlxuICAgICAgIHR5cGVzIHN1Y2ggYXMgW3VuaXQgbGlzdF0gLSAoW10sIFsoKV0sIFsoKTsoKV0sLi4pIGFyZSBoYXNoZWQgZGlmZmVyZW50bHkuICopXG4gICAgKCogVGhlIFtsZW5ndGhdIG11c3QgY29tZSBiZWZvcmUgdGhlIGVsZW1lbnRzIHRvIGF2b2lkIGEgdmlvbGF0aW9uIG9mIHRoZSBydWxlXG4gICAgICAgZW5mb3JjZWQgYnkgUGVyZmVjdF9oYXNoLiAqKVxuICAgIGxldCBzID0gaGFzaF9mb2xkX2ludCBzIChMaXN0Lmxlbmd0aCBsaXN0KSBpblxuICAgIGxldCBzID0gaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgaW5cbiAgICBzXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9sYXp5X3QgaGFzaF9mb2xkX2VsZW0gcyB4ID0gaGFzaF9mb2xkX2VsZW0gcyAoU3RkbGliLkxhenkuZm9yY2UgeClcbiAgbGV0IGhhc2hfZm9sZF9yZWZfZnJvemVuIGhhc2hfZm9sZF9lbGVtIHMgeCA9IGhhc2hfZm9sZF9lbGVtIHMgIXhcblxuICBsZXQgcmVjIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faSBoYXNoX2ZvbGRfZWxlbSBzIGFycmF5IGkgPVxuICAgIGlmIGkgPSBBcnJheS5sZW5ndGggYXJyYXlcbiAgICB0aGVuIHNcbiAgICBlbHNlIChcbiAgICAgIGxldCBlID0gQXJyYXkudW5zYWZlX2dldCBhcnJheSBpIGluXG4gICAgICBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuX2kgaGFzaF9mb2xkX2VsZW0gKGhhc2hfZm9sZF9lbGVtIHMgZSkgYXJyYXkgKGkgKyAxKSlcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2FycmF5X2Zyb3plbiBoYXNoX2ZvbGRfZWxlbSBzIGFycmF5ID1cbiAgICBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuX2lcbiAgICAgICgqIFtsZW5ndGhdIG11c3QgYmUgaW5jb3Jwb3JhdGVkIGZvciBhcnJheXMsIGFzIGl0IGlzIGZvciBsaXN0cy4gU2VlIGNvbW1lbnQgYWJvdmUgKilcbiAgICAgIGhhc2hfZm9sZF9lbGVtXG4gICAgICAoaGFzaF9mb2xkX2ludCBzIChBcnJheS5sZW5ndGggYXJyYXkpKVxuICAgICAgYXJyYXlcbiAgICAgIDBcbiAgOztcblxuICAoKiB0aGUgZHVwbGljYXRpb24gaGVyZSBpcyBiZWNhdXNlIHdlIHRoaW5rXG4gICAgIG9jYW1sIGNhbid0IGVsaW1pbmF0ZSBpbmRpcmVjdCBmdW5jdGlvbiBjYWxscyBvdGhlcndpc2UuICopXG4gIGxldCBoYXNoX25hdGl2ZWludCB4ID1cbiAgICBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfbmF0aXZlaW50IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgOztcblxuICBsZXQgaGFzaF9pbnQ2NCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2ludDY0IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfaW50MzIgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9pbnQzMiAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2NoYXIgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9jaGFyIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfaW50IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfaW50IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfYm9vbCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2Jvb2wgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuXG4gIGxldCBoYXNoX3N0cmluZyB4ID1cbiAgICBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfc3RyaW5nIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgOztcblxuICBsZXQgaGFzaF9mbG9hdCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2Zsb2F0IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfdW5pdCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3VuaXQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuZW5kXG5cbm1vZHVsZSBGIChIYXNoIDogSGFzaF9pbnRmLlMpIDpcbiAgSGFzaF9pbnRmLkZ1bGxcbiAgd2l0aCB0eXBlIGhhc2hfdmFsdWUgPSBIYXNoLmhhc2hfdmFsdWVcbiAgIGFuZCB0eXBlIHN0YXRlID0gSGFzaC5zdGF0ZVxuICAgYW5kIHR5cGUgc2VlZCA9IEhhc2guc2VlZCA9IHN0cnVjdFxuICBpbmNsdWRlIEhhc2hcblxuICB0eXBlICdhIGZvbGRlciA9IHN0YXRlIC0+ICdhIC0+IHN0YXRlXG5cbiAgbGV0IGNyZWF0ZSA/c2VlZCAoKSA9IHJlc2V0ID9zZWVkIChhbGxvYyAoKSlcbiAgbGV0IG9mX2ZvbGQgaGFzaF9mb2xkX3QgdCA9IGdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdCAoY3JlYXRlICgpKSB0KVxuXG4gIG1vZHVsZSBCdWlsdGluID0gRm9sZGluZyAoSGFzaClcblxuICBsZXQgcnVuID9zZWVkIGZvbGRlciB4ID1cbiAgICBIYXNoLmdldF9oYXNoX3ZhbHVlIChmb2xkZXIgKEhhc2gucmVzZXQgP3NlZWQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnRlcm5hbGhhc2ggOiBzaWdcbiAgaW5jbHVkZVxuICAgIEhhc2hfaW50Zi5TXG4gICAgd2l0aCB0eXBlIHN0YXRlID0gQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXMuc3RhdGVcbiAgICAgKCogV2UgZ2l2ZSBhIGNvbmNyZXRlIHR5cGUgZm9yIFtzdGF0ZV0sIGFsYmVpdCBvbmx5IHBhcnRpYWxseSBleHBvc2VkIChzZWVcbiAgICAgICAgQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXMpLCBzbyB0aGF0IGl0IHVuaWZpZXMgd2l0aCB0aGUgc2FtZSB0eXBlIGluIFtCYXNlX2Jvb3RdLFxuICAgICAgICBhbmQgdG8gYWxsb3cgb3B0aW1pemF0aW9ucyBmb3IgdGhlIGltbWVkaWF0ZSB0eXBlLiAqKVxuICAgICBhbmQgdHlwZSBzZWVkID0gQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXMuc2VlZFxuICAgICBhbmQgdHlwZSBoYXNoX3ZhbHVlID0gQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXMuaGFzaF92YWx1ZVxuXG4gIGV4dGVybmFsIGZvbGRfaW50NjQgOiBzdGF0ZSAtPiBpbnQ2NCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZm9sZF9pbnQgOiBzdGF0ZSAtPiBpbnQgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50XCIgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBmb2xkX2Zsb2F0IDogc3RhdGUgLT4gZmxvYXQgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfZmxvYXRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGZvbGRfc3RyaW5nIDogc3RhdGUgLT4gc3RyaW5nIC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX3N0cmluZ1wiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZ2V0X2hhc2hfdmFsdWUgOiBzdGF0ZSAtPiBoYXNoX3ZhbHVlID0gXCJCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZVwiXG4gIFtAQG5vYWxsb2NdXG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGRlc2NyaXB0aW9uID0gXCJpbnRlcm5hbGhhc2hcIlxuXG4gIGluY2x1ZGUgQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXNcblxuICBsZXQgYWxsb2MgKCkgPSBjcmVhdGVfc2VlZGVkIDBcbiAgbGV0IHJlc2V0ID8oc2VlZCA9IDApIF90ID0gY3JlYXRlX3NlZWRlZCBzZWVkXG5cbiAgbW9kdWxlIEZvcl90ZXN0cyA9IHN0cnVjdFxuICAgIGxldCBjb21wYXJlX3N0YXRlIChhIDogc3RhdGUpIChiIDogc3RhdGUpID0gY29tcGFyZSAoYSA6PiBpbnQpIChiIDo+IGludClcbiAgICBsZXQgc3RhdGVfdG9fc3RyaW5nIChzdGF0ZSA6IHN0YXRlKSA9IEludC50b19zdHJpbmcgKHN0YXRlIDo+IGludClcbiAgZW5kXG5lbmRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbnRlcm5hbGhhc2hcblxuICB0eXBlICdhIGZvbGRlciA9IHN0YXRlIC0+ICdhIC0+IHN0YXRlXG5cbiAgbGV0IGNyZWF0ZSA/c2VlZCAoKSA9IHJlc2V0ID9zZWVkIChhbGxvYyAoKSlcbiAgbGV0IHJ1biA/c2VlZCBmb2xkZXIgeCA9IGdldF9oYXNoX3ZhbHVlIChmb2xkZXIgKHJlc2V0ID9zZWVkIChhbGxvYyAoKSkpIHgpXG4gIGxldCBvZl9mb2xkIGhhc2hfZm9sZF90IHQgPSBnZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3QgKGNyZWF0ZSAoKSkgdClcblxuICBtb2R1bGUgQnVpbHRpbiA9IHN0cnVjdFxuICAgIG1vZHVsZSBGb2xkaW5nID0gRm9sZGluZyAoSW50ZXJuYWxoYXNoKVxuICAgIGluY2x1ZGUgRm9sZGluZ1xuXG4gICAgKCogW0ZvbGRpbmddIHByb3ZpZGVzIHNvbWUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSBbaGFzaF8qXSBmdW5jdGlvbnMgYmVsb3csXG4gICAgICAgYnV0IHRoZXkgYXJlIGluZWZmaWNpZW50IGZvciBzb21lIHVzZS1jYXNlcyBiZWNhdXNlIG9mIHRoZSB1c2Ugb2YgdGhlIFtoYXNoX2ZvbGRdXG4gICAgICAgZnVuY3Rpb25zLiBBdCB0aGlzIHBvaW50LCB0aGUgW2hhc2hfdmFsdWVdIHR5cGUgaGFzIGJlZW4gZml4ZWQgdG8gW2ludF0sIHNvIHRoaXNcbiAgICAgICBtb2R1bGUgY2FuIHByb3ZpZGUgc3BlY2lhbGl6ZWQgaW1wbGVtZW50YXRpb25zLiAqKVxuXG4gICAgbGV0IGhhc2hfY2hhciA9IENoYXIwLnRvX2ludFxuXG4gICAgKCogVGhpcyBoYXNoIHdhcyBjaG9zZW4gZnJvbSBoZXJlOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9iYWRib3kvNjI2Nzc0M1xuXG4gICAgICAgSXQgYXR0ZW1wdHMgdG8gZnVsZmlsbCB0aGUgcHJpbWFyeSBnb2FscyBvZiBhIG5vbi1jcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb246XG5cbiAgICAgICAtIGEgYml0IGNoYW5nZSBpbiB0aGUgaW5wdXQgc2hvdWxkIGNoYW5nZSB+MS8yIG9mIHRoZSBvdXRwdXQgYml0c1xuICAgICAgIC0gdGhlIG91dHB1dCBzaG91bGQgYmUgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgb3V0cHV0IHJhbmdlXG4gICAgICAgLSBpbnB1dHMgdGhhdCBhcmUgY2xvc2UgdG8gZWFjaCBvdGhlciBzaG91bGRuJ3QgbGVhZCB0byBvdXRwdXRzIHRoYXQgYXJlIGNsb3NlIHRvXG4gICAgICAgICBlYWNoIG90aGVyLlxuICAgICAgIC0gYWxsIGJpdHMgb2YgdGhlIGlucHV0IGFyZSB1c2VkIGluIGdlbmVyYXRpbmcgdGhlIG91dHB1dFxuXG4gICAgICAgSW4gb3VyIGNhc2Ugd2UgYWxzbyB3YW50IGl0IHRvIGJlIGZhc3QsIG5vbi1hbGxvY2F0aW5nLCBhbmQgaW5saW5hYmxlLiAgKilcbiAgICBsZXRbQGlubGluZSBhbHdheXNdIGhhc2hfaW50ICh0IDogaW50KSA9XG4gICAgICBsZXQgdCA9IGxub3QgdCArICh0IGxzbCAyMSkgaW5cbiAgICAgIGxldCB0ID0gdCBseG9yICh0IGxzciAyNCkgaW5cbiAgICAgIGxldCB0ID0gdCArICh0IGxzbCAzKSArICh0IGxzbCA4KSBpblxuICAgICAgbGV0IHQgPSB0IGx4b3IgKHQgbHNyIDE0KSBpblxuICAgICAgbGV0IHQgPSB0ICsgKHQgbHNsIDIpICsgKHQgbHNsIDQpIGluXG4gICAgICBsZXQgdCA9IHQgbHhvciAodCBsc3IgMjgpIGluXG4gICAgICB0ICsgKHQgbHNsIDMxKVxuICAgIDs7XG5cbiAgICBsZXQgaGFzaF9ib29sIHggPSBpZiB4IHRoZW4gMSBlbHNlIDBcblxuICAgIGV4dGVybmFsIGhhc2hfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIkJhc2VfaGFzaF9kb3VibGVcIiBbQEBub2FsbG9jXVxuXG4gICAgbGV0IGhhc2hfdW5pdCAoKSA9IDBcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBUXG4iLCJvcGVuIEltcG9ydDBcblxubGV0IGNvbXBhcmVfYWJzdHJhY3QgfnR5cGVfbmFtZSBfIF8gPVxuICBQcmludGYua3NwcmludGZcbiAgICBmYWlsd2l0aFxuICAgIFwiQ29tcGFyZSBjYWxsZWQgb24gdGhlIHR5cGUgJXMsIHdoaWNoIGlzIGFic3RyYWN0IGluIGFuIGltcGxlbWVudGF0aW9uLlwiXG4gICAgdHlwZV9uYW1lXG47O1xuXG5sZXQgZXF1YWxfYWJzdHJhY3QgfnR5cGVfbmFtZSBfIF8gPVxuICBQcmludGYua3NwcmludGZcbiAgICBmYWlsd2l0aFxuICAgIFwiRXF1YWwgY2FsbGVkIG9uIHRoZSB0eXBlICVzLCB3aGljaCBpcyBhYnN0cmFjdCBpbiBhbiBpbXBsZW1lbnRhdGlvbi5cIlxuICAgIHR5cGVfbmFtZVxuOztcblxudHlwZSAnYSBjb21wYXJlID0gJ2EgLT4gJ2EgLT4gaW50XG50eXBlICdhIGVxdWFsID0gJ2EgLT4gJ2EgLT4gYm9vbFxuXG5tb2R1bGUgQ29tcGFyYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgY29tcGFyZSA6IHQgY29tcGFyZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdhIHQgY29tcGFyZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdiIGNvbXBhcmUgLT4gKCdhLCAnYikgdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdiIGNvbXBhcmUgLT4gJ2MgY29tcGFyZSAtPiAoJ2EsICdiLCAnYykgdCBjb21wYXJlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBFcXVhbCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZXF1YWwgOiB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYSB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYiBlcXVhbCAtPiAoJ2EsICdiKSB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGVxdWFsIDogJ2EgZXF1YWwgLT4gJ2IgZXF1YWwgLT4gJ2MgZXF1YWwgLT4gKCdhLCAnYiwgJ2MpIHQgZXF1YWxcbiAgZW5kXG5lbmRcblxubW9kdWxlIEJ1aWx0aW4gPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmVfYm9vbCA6IGJvb2wgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9jaGFyIDogY2hhciBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2Zsb2F0IDogZmxvYXQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQgOiBpbnQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQzMiA6IGludDMyIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfaW50NjQgOiBpbnQ2NCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX25hdGl2ZWludCA6IG5hdGl2ZWludCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX3N0cmluZyA6IHN0cmluZyBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX3VuaXQgOiB1bml0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcblxuICBsZXQgY29tcGFyZV9hcnJheSBjb21wYXJlX2VsdCBhIGIgPVxuICAgIGlmIHBoeXNfZXF1YWwgYSBiXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbGVuX2EgPSBBcnJheTAubGVuZ3RoIGEgaW5cbiAgICAgIGxldCBsZW5fYiA9IEFycmF5MC5sZW5ndGggYiBpblxuICAgICAgbGV0IHJldCA9IGNvbXBhcmUgbGVuX2EgbGVuX2IgaW5cbiAgICAgIGlmIHJldCA8PiAwXG4gICAgICB0aGVuIHJldFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgICBpZiBpID0gbGVuX2FcbiAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsID0gQXJyYXkwLnVuc2FmZV9nZXQgYSBpXG4gICAgICAgICAgICBhbmQgciA9IEFycmF5MC51bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IGwgciBpblxuICAgICAgICAgICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBsb29wIChpICsgMSkpXG4gICAgICAgIGluXG4gICAgICAgIGxvb3AgMCkpXG4gIDs7XG5cbiAgbGV0IHJlYyBjb21wYXJlX2xpc3QgY29tcGFyZV9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IFtdLCBbXSAtPiAwXG4gICAgfCBbXSwgXyAtPiAtMVxuICAgIHwgXywgW10gLT4gMVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IHggeSBpblxuICAgICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBjb21wYXJlX2xpc3QgY29tcGFyZV9lbHQgeHMgeXNcbiAgOztcblxuICBsZXQgY29tcGFyZV9vcHRpb24gY29tcGFyZV9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gMFxuICAgIHwgTm9uZSwgU29tZSBfIC0+IC0xXG4gICAgfCBTb21lIF8sIE5vbmUgLT4gMVxuICAgIHwgU29tZSBhLCBTb21lIGIgLT4gY29tcGFyZV9lbHQgYSBiXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfcmVmIGNvbXBhcmVfZWx0IGEgYiA9IGNvbXBhcmVfZWx0ICFhICFiXG4gIGxldCBlcXVhbF9ib29sIDogYm9vbCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX2NoYXIgOiBjaGFyIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50IDogaW50IGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50MzIgOiBpbnQzMiBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX2ludDY0IDogaW50NjQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9zdHJpbmcgOiBzdHJpbmcgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF91bml0IDogdW5pdCBlcXVhbCA9IFBvbHkuZXF1YWxcblxuICAoKiBbUG9seS5lcXVhbF0gaXMgSUVFRSBjb21wbGlhbnQsIHdoaWNoIGlzIG5vdCB3aGF0IHdlIHdhbnQgaGVyZS4gKilcbiAgbGV0IGVxdWFsX2Zsb2F0IHggeSA9IGVxdWFsX2ludCAoY29tcGFyZV9mbG9hdCB4IHkpIDBcblxuICBsZXQgZXF1YWxfYXJyYXkgZXF1YWxfZWx0IGEgYiA9XG4gICAgcGh5c19lcXVhbCBhIGJcbiAgICB8fFxuICAgIGxldCBsZW5fYSA9IEFycmF5MC5sZW5ndGggYSBpblxuICAgIGxldCBsZW5fYiA9IEFycmF5MC5sZW5ndGggYiBpblxuICAgIGVxdWFsIGxlbl9hIGxlbl9iXG4gICAgJiZcbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpID0gbGVuX2FcbiAgICAgIHx8XG4gICAgICBsZXQgbCA9IEFycmF5MC51bnNhZmVfZ2V0IGEgaVxuICAgICAgYW5kIHIgPSBBcnJheTAudW5zYWZlX2dldCBiIGkgaW5cbiAgICAgIGVxdWFsX2VsdCBsIHIgJiYgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcbiAgOztcblxuICBsZXQgcmVjIGVxdWFsX2xpc3QgZXF1YWxfZWx0IGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBbXSwgW10gLT4gdHJ1ZVxuICAgIHwgW10sIF8gfCBfLCBbXSAtPiBmYWxzZVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPiBlcXVhbF9lbHQgeCB5ICYmIGVxdWFsX2xpc3QgZXF1YWxfZWx0IHhzIHlzXG4gIDs7XG5cbiAgbGV0IGVxdWFsX29wdGlvbiBlcXVhbF9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGEsIFNvbWUgYiAtPiBlcXVhbF9lbHQgYSBiXG4gIDs7XG5cbiAgbGV0IGVxdWFsX3JlZiBlcXVhbF9lbHQgYSBiID0gZXF1YWxfZWx0ICFhICFiXG5lbmRcbiIsIigqKiBUaGlzIG1vZHVsZSBpcyBmb3IgdXNlIGJ5IHBweF9oYXNoLCBhbmQgaXMgdGh1cyBub3QgaW4gdGhlIGludGVyZmFjZSBvZiBCYXNlLiAqKVxubW9kdWxlIFN0ZCA9IHN0cnVjdFxuICBtb2R1bGUgSGFzaCA9IEhhc2ggKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNoICopXG5lbmRcblxudHlwZSAnYSBoYXNoX2ZvbGQgPSBTdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBTdGQuSGFzaC5zdGF0ZVxuXG5tb2R1bGUgSGFzaGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90IDogdCBoYXNoX2ZvbGRcbiAgICB2YWwgaGFzaCA6IHQgLT4gU3RkLkhhc2guaGFzaF92YWx1ZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90IDogJ2EgaGFzaF9mb2xkIC0+ICdhIHQgaGFzaF9mb2xkXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiAnYSBoYXNoX2ZvbGQgLT4gJ2IgaGFzaF9mb2xkIC0+ICgnYSwgJ2IpIHQgaGFzaF9mb2xkXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90XG4gICAgICA6ICAnYSBoYXNoX2ZvbGRcbiAgICAgIC0+ICdiIGhhc2hfZm9sZFxuICAgICAgLT4gJ2MgaGFzaF9mb2xkXG4gICAgICAtPiAoJ2EsICdiLCAnYykgdCBoYXNoX2ZvbGRcbiAgZW5kXG5lbmRcbiIsIm9wZW4gSGFzaC5CdWlsdGluXG5vcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5pbmNsdWRlIFNleHBsaWIwLlNleHBcblxuKCoqIFR5cGUgb2YgUy1leHByZXNzaW9ucyAqKVxudHlwZSB0ID0gU2V4cGxpYjAuU2V4cC50ID1cbiAgfCBBdG9tIG9mIHN0cmluZ1xuICB8IExpc3Qgb2YgdCBsaXN0XG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxubGV0IHJlYyBjb21wYXJlID1cbiAgKGZ1biBhX18wMDFfIGJfXzAwMl8gLT5cbiAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDFfIGJfXzAwMl9cbiAgICAgdGhlbiAwXG4gICAgIGVsc2UgKFxuICAgICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgICAgIHwgQXRvbSBfYV9fMDAzXywgQXRvbSBfYl9fMDA0XyAtPiBjb21wYXJlX3N0cmluZyBfYV9fMDAzXyBfYl9fMDA0X1xuICAgICAgIHwgQXRvbSBfLCBfIC0+IC0xXG4gICAgICAgfCBfLCBBdG9tIF8gLT4gMVxuICAgICAgIHwgTGlzdCBfYV9fMDA1XywgTGlzdCBfYl9fMDA2XyAtPiBjb21wYXJlX2xpc3QgY29tcGFyZSBfYV9fMDA1XyBfYl9fMDA2XylcbiAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG47O1xuXG5sZXQgcmVjIChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBBdG9tIF9hMCAtPlxuICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgaGFzaF9mb2xkX3N0cmluZyBoc3YgX2EwXG4gICAgIHwgTGlzdCBfYTAgLT5cbiAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgIGhhc2hfZm9sZF9saXN0IGhhc2hfZm9sZF90IGhzdiBfYTBcbiAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcblxuYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2NvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxubGV0IG9mX3N0cmluZyA9ICgpXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3lzID0gU3lzMFxuXG50eXBlIHQgPVxuICB8IFczMlxuICB8IFc2NFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IFczMiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJXMzJcIlxuICAgIHwgVzY0IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlc2NFwiXG4gICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBudW1fYml0cyA9IGZ1bmN0aW9uXG4gIHwgVzMyIC0+IDMyXG4gIHwgVzY0IC0+IDY0XG47O1xuXG5sZXQgd29yZF9zaXplID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZV9pbl9iaXRzIHdpdGhcbiAgfCAzMiAtPiBXMzJcbiAgfCA2NCAtPiBXNjRcbiAgfCBfIC0+IGZhaWx3aXRoIFwidW5rbm93biB3b3JkIHNpemVcIlxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgciA9IHJlZiBbIFwiQmFzZS5TZXhwLnBwX2h1bVwiIF1cbmxldCBhbGwgKCkgPSAhclxubGV0IHJlZ2lzdGVyIHAgPSByIDo9IHAgOjogIXJcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgcHAgOiBGb3JtYXR0ZXIudCAtPiB0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXJfcHAgKE0gOiBzaWdcbiAgICBpbmNsdWRlIFNcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1cblxuICBsZXQgKCkgPSByZWdpc3RlciAoTS5tb2R1bGVfbmFtZSBeIFwiLnBwXCIpXG5lbmRcblxubW9kdWxlIFJlZ2lzdGVyIChNIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgZW5kKSA9XG4gIFJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIGxldCBwcCBmb3JtYXR0ZXIgdCA9IFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZvcm1hdHRlciAoTS50b19zdHJpbmcgdClcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IGV4biBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2V4biA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG5bQEBAZW5kXVxuXG5sZXQgZXhpdCA9IFN0ZGxpYi5leGl0XG5cbmV4Y2VwdGlvbiBGaW5hbGx5IG9mIHQgKiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRmluYWxseV0gKGZ1bmN0aW9uXG4gICAgfCBGaW5hbGx5IChhcmcwX18wMDFfLCBhcmcxX18wMDJfKSAtPlxuICAgICAgbGV0IHJlczBfXzAwM18gPSBzZXhwX29mX3QgYXJnMF9fMDAxX1xuICAgICAgYW5kIHJlczFfXzAwNF8gPSBzZXhwX29mX3QgYXJnMV9fMDAyXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXhuLm1sLkZpbmFsbHlcIjsgcmVzMF9fMDAzXzsgcmVzMV9fMDA0XyBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmV4Y2VwdGlvbiBSZXJhaXNlZCBvZiBzdHJpbmcgKiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgUmVyYWlzZWRdIChmdW5jdGlvblxuICAgIHwgUmVyYWlzZWQgKGFyZzBfXzAwNV8sIGFyZzFfXzAwNl8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDA3XyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwNV9cbiAgICAgIGFuZCByZXMxX18wMDhfID0gc2V4cF9vZl90IGFyZzFfXzAwNl8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImV4bi5tbC5SZXJhaXNlZFwiOyByZXMwX18wMDdfOyByZXMxX18wMDhfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxuZXhjZXB0aW9uIFNleHAgb2YgU2V4cC50XG5cbigqIFdlIGluc3RhbGwgYSBjdXN0b20gZXhuLWNvbnZlcnRlciByYXRoZXIgdGhhbiB1c2U6XG5cbiAgIHtbXG4gICAgIGV4Y2VwdGlvbiBTZXhwIG9mIFNleHAudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cbiAgICAgKCogLi4uICopXG4gICAgIFtAQEBlbmRdXG4gICBdfVxuXG4gICB0byBlbGltaW5hdGUgdGhlIGV4dHJhIHdyYXBwaW5nIG9mIFsoU2V4cCAuLi4pXS4gKilcbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXhwXSAoZnVuY3Rpb25cbiAgICB8IFNleHAgdCAtPiB0XG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCBjcmVhdGVfcyBzZXhwID0gU2V4cCBzZXhwXG5cbmxldCByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSB0IGJhY2t0cmFjZSA9XG4gIFN0ZGxpYi5QcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB0IGJhY2t0cmFjZVxuOztcblxuZXh0ZXJuYWwgaXNfcGh5c19lcXVhbF9tb3N0X3JlY2VudCA6IHQgLT4gYm9vbCA9IFwiQmFzZV9jYW1sX2V4bl9pc19tb3N0X3JlY2VudF9leG5cIlxuXG5sZXQgcmVyYWlzZSBleG4gc3RyID1cbiAgbGV0IGV4bicgPSBSZXJhaXNlZCAoc3RyLCBleG4pIGluXG4gIGlmIGlzX3BoeXNfZXF1YWxfbW9zdF9yZWNlbnQgZXhuXG4gIHRoZW4gKFxuICAgIGxldCBidCA9IFN0ZGxpYi5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgIHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIGV4bicgYnQpXG4gIGVsc2UgcmFpc2UgZXhuJ1xuOztcblxubGV0IHJlcmFpc2VmIGV4YyBmb3JtYXQgPSBQcmludGYua3NwcmludGYgKGZ1biBzdHIgKCkgLT4gcmVyYWlzZSBleGMgc3RyKSBmb3JtYXRcbmxldCB0b19zdHJpbmcgZXhjID0gU2V4cC50b19zdHJpbmdfaHVtIH5pbmRlbnQ6MiAoc2V4cF9vZl9leG4gZXhjKVxubGV0IHRvX3N0cmluZ19tYWNoIGV4YyA9IFNleHAudG9fc3RyaW5nX21hY2ggKHNleHBfb2ZfZXhuIGV4YylcbmxldCBzZXhwX29mX3QgPSBzZXhwX29mX2V4blxuXG5sZXQgcHJvdGVjdHggfmYgeCB+KGZpbmFsbHkgOiBfIC0+IHVuaXQpID1cbiAgbWF0Y2ggZiB4IHdpdGhcbiAgfCByZXMgLT5cbiAgICBmaW5hbGx5IHg7XG4gICAgcmVzXG4gIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgIGxldCBidCA9IFN0ZGxpYi5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgIChtYXRjaCBmaW5hbGx5IHggd2l0aFxuICAgICB8ICgpIC0+IHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIGV4biBidFxuICAgICB8IGV4Y2VwdGlvbiBmaW5hbF9leG4gLT5cbiAgICAgICAoKiBVbmZvcnR1bmF0ZWx5LCB0aGUgYmFja3RyYWNlIG9mIHRoZSBbZmluYWxfZXhuXSBpcyBkaXNjYXJkZWQgaGVyZS4gKilcbiAgICAgICByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSAoRmluYWxseSAoZXhuLCBmaW5hbF9leG4pKSBidClcbjs7XG5cbmxldCBwcm90ZWN0IH5mIH5maW5hbGx5ID0gcHJvdGVjdHggfmYgKCkgfmZpbmFsbHlcblxubGV0IGRvZXNfcmFpc2UgKHR5cGUgYSkgKGYgOiB1bml0IC0+IGEpID1cbiAgdHJ5XG4gICAgaWdub3JlIChmICgpIDogYSk7XG4gICAgZmFsc2VcbiAgd2l0aFxuICB8IF8gLT4gdHJ1ZVxuOztcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgdHlwZSB0ID0gZXhuXG5cbiAgICBsZXQgcHAgcHBmIHQgPVxuICAgICAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0IHQgd2l0aFxuICAgICAgfCBTb21lIHNleHAgLT4gU2V4cC5wcF9odW0gcHBmIHNleHBcbiAgICAgIHwgTm9uZSAtPiBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKFN0ZGxpYi5QcmludGV4Yy50b19zdHJpbmcgdClcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkV4blwiXG4gIGVuZClcblxubGV0IHByaW50X3dpdGhfYmFja3RyYWNlIGV4YyByYXdfYmFja3RyYWNlID1cbiAgU3RkbGliLkZvcm1hdC5lcHJpbnRmIFwiQFs8Mj5VbmNhdWdodCBleGNlcHRpb246QFxcbkBcXG5AWyVhQF1AXUBcXG5ALlwiIHBwIGV4YztcbiAgaWYgU3RkbGliLlByaW50ZXhjLmJhY2t0cmFjZV9zdGF0dXMgKClcbiAgdGhlbiBTdGRsaWIuUHJpbnRleGMucHJpbnRfcmF3X2JhY2t0cmFjZSBTdGRsaWIuc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gIFN0ZGxpYi5mbHVzaCBTdGRsaWIuc3RkZXJyXG47O1xuXG5sZXQgc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyICgpID1cbiAgU3RkbGliLlByaW50ZXhjLnNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBwcmludF93aXRoX2JhY2t0cmFjZVxuOztcblxubGV0IGhhbmRsZV91bmNhdWdodF9hdXggfmRvX2F0X2V4aXQgfmV4aXQgZiA9XG4gIHRyeSBmICgpIHdpdGhcbiAgfCBleGMgLT5cbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9IFN0ZGxpYi5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICgqIE9uZSByZWFzb24gdG8gcnVuIFtkb19hdF9leGl0XSBoYW5kbGVycyBiZWZvcmUgcHJpbnRpbmcgb3V0IHRoZSBlcnJvciBtZXNzYWdlIGlzXG4gICAgICAgdGhhdCBpdCBoZWxwcyBjdXJzZXMgYXBwbGljYXRpb25zIGJyaW5nIHRoZSB0ZXJtaW5hbCBpbiBhIGdvb2Qgc3RhdGUsIG90aGVyd2lzZSB0aGVcbiAgICAgICBlcnJvciBtZXNzYWdlIG1pZ2h0IGdldCBjb3JydXB0ZWQuICBBbHNvLCB0aGUgT0NhbWwgdG9wLWxldmVsIHVuY2F1Z2h0IGV4Y2VwdGlvblxuICAgICAgIGhhbmRsZXIgZG9lcyB0aGUgc2FtZS4gKilcbiAgICBpZiBkb19hdF9leGl0XG4gICAgdGhlbiAoXG4gICAgICB0cnkgU3RkbGliLmRvX2F0X2V4aXQgKCkgd2l0aFxuICAgICAgfCBfIC0+ICgpKTtcbiAgICAodHJ5IHByaW50X3dpdGhfYmFja3RyYWNlIGV4YyByYXdfYmFja3RyYWNlIHdpdGhcbiAgICAgfCBfIC0+XG4gICAgICAgKHRyeVxuICAgICAgICAgIFN0ZGxpYi5QcmludGYuZXByaW50ZiBcIkV4bi5oYW5kbGVfdW5jYXVnaHQgY291bGQgbm90IHByaW50OyBleGl0aW5nIGFueXdheVxcbiUhXCJcbiAgICAgICAgd2l0aFxuICAgICAgICB8IF8gLT4gKCkpKTtcbiAgICBleGl0IDFcbjs7XG5cbmxldCBoYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZiA9IGhhbmRsZV91bmNhdWdodF9hdXggZiB+ZXhpdCB+ZG9fYXRfZXhpdDp0cnVlXG5cbmxldCBoYW5kbGVfdW5jYXVnaHQgfmV4aXQ6bXVzdF9leGl0IGYgPVxuICBoYW5kbGVfdW5jYXVnaHRfYXV4IGYgfmV4aXQ6KGlmIG11c3RfZXhpdCB0aGVuIGV4aXQgZWxzZSBpZ25vcmUpIH5kb19hdF9leGl0Om11c3RfZXhpdFxuOztcblxubGV0IHJlcmFpc2VfdW5jYXVnaHQgc3RyIGZ1bmMgPVxuICB0cnkgZnVuYyAoKSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgbGV0IGJ0ID0gU3RkbGliLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgKFJlcmFpc2VkIChzdHIsIGV4bikpIGJ0XG47O1xuXG5leHRlcm5hbCBjbGVhcl9iYWNrdHJhY2UgOiB1bml0IC0+IHVuaXQgPSBcIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zXCIgW0BAbm9hbGxvY11cblxubGV0IHJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIGUgPVxuICAoKiBXZSBjbGVhciB0aGUgYmFja3RyYWNlIHRvIHJlZHVjZSBjb25mdXNpb24sIHNvIHRoYXQgcGVvcGxlIGRvbid0IHRoaW5rIHdoYXRldmVyXG4gICAgIGlzIHN0b3JlZCBjb3JyZXNwb25kcyB0byB0aGlzIHJhaXNlLiAqKVxuICBjbGVhcl9iYWNrdHJhY2UgKCk7XG4gIFN0ZGxpYi5yYWlzZV9ub3RyYWNlIGVcbjs7XG5cbmxldCBpbml0aWFsaXplX21vZHVsZSAoKSA9IHNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciAoKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgY2xlYXJfYmFja3RyYWNlID0gY2xlYXJfYmFja3RyYWNlXG5lbmRcbiIsIigqIGJlbG9uZ3MgaW4gQ29tbW9uLCBidXQgbW92ZWQgaGVyZSB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMgKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgcmV0dXJuID0geyByZXR1cm4gOiAnYi4gJ2EgLT4gJ2IgfSBbQEB1bmJveGVkXVxuXG5sZXQgd2l0aF9yZXR1cm4gKHR5cGUgYSkgZiA9XG4gIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgICgqIFJhaXNlZCB0byBpbmRpY2F0ZSB+cmV0dXJuIHdhcyBjYWxsZWQuICBMb2NhbCBzbyB0aGF0IHRoZSBleGNlcHRpb24gaXMgdGllZCB0byBhXG4gICAgICAgcGFydGljdWxhciBjYWxsIG9mIFt3aXRoX3JldHVybl0uICopXG4gICAgZXhjZXB0aW9uIFJldHVybiBvZiBhXG4gIGVuZFxuICBpblxuICBsZXQgaXNfYWxpdmUgPSByZWYgdHJ1ZSBpblxuICBsZXQgcmV0dXJuIGEgPVxuICAgIGlmIG5vdCAhaXNfYWxpdmVcbiAgICB0aGVuIGZhaWx3aXRoIFwidXNlIG9mIFtyZXR1cm5dIGZyb20gYSBbd2l0aF9yZXR1cm5dIHRoYXQgYWxyZWFkeSByZXR1cm5lZFwiO1xuICAgIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSAoTS5SZXR1cm4gYSlcbiAgaW5cbiAgdHJ5XG4gICAgbGV0IGEgPSBmIHsgcmV0dXJuIH0gaW5cbiAgICBpc19hbGl2ZSA6PSBmYWxzZTtcbiAgICBhXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICBpc19hbGl2ZSA6PSBmYWxzZTtcbiAgICAobWF0Y2ggZXhuIHdpdGhcbiAgICAgfCBNLlJldHVybiBhIC0+IGFcbiAgICAgfCBfIC0+IHJhaXNlIGV4bilcbjs7XG5cbmxldCB3aXRoX3JldHVybl9vcHRpb24gZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gcmV0dXJuIC0+XG4gICAgZiB7IHJldHVybiA9IChmdW4gYSAtPiByZXR1cm4ucmV0dXJuIChTb21lIGEpKSB9O1xuICAgIE5vbmUpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBwcmVwZW5kIHsgcmV0dXJuIH0gfmYgPSB7IHJldHVybiA9IChmdW4geCAtPiByZXR1cm4gKGYgeCkpIH1cbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgY29uc3QgYyBfID0gY1xuXG5leHRlcm5hbCBpZ25vcmUgOiAoX1tAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIHRoaXMgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIFtTdGRsaWIuaWdub3JlXSAqKVxuXG5sZXQgbm9uIGYgeCA9IG5vdCAoZiB4KVxuXG5sZXQgZm9yZXZlciBmID1cbiAgbGV0IHJlYyBmb3JldmVyICgpID1cbiAgICBmICgpO1xuICAgIGZvcmV2ZXIgKClcbiAgaW5cbiAgdHJ5IGZvcmV2ZXIgKCkgd2l0aFxuICB8IGUgLT4gZVxuOztcblxuZXh0ZXJuYWwgaWQgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoKCdhIC0+ICdiKVtAbG9jYWxfb3B0XSkgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5cbigqIFRoZSB0eXBpY2FsIHVzZSBjYXNlIGZvciB0aGVzZSBmdW5jdGlvbnMgaXMgdG8gcGFzcyBpbiBmdW5jdGlvbmFsIGFyZ3VtZW50cyBhbmQgZ2V0XG4gICBmdW5jdGlvbnMgYXMgYSByZXN1bHQuICopXG5sZXQgY29tcG9zZSBmIGcgeCA9IGYgKGcgeClcbmxldCBmbGlwIGYgeCB5ID0gZiB5IHhcbmxldCByZWMgYXBwbHlfbl90aW1lcyB+biBmIHggPSBpZiBuIDw9IDAgdGhlbiB4IGVsc2UgYXBwbHlfbl90aW1lcyB+bjoobiAtIDEpIGYgKGYgeClcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBCYXNpY19nZW4gPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuXG5cbiAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0LCAnYiB0KSBmX2xhYmVsZWRfZm5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAoKiogVGhlIGZvbGxvd2luZyBpZGVudGl0aWVzIG91Z2h0IHRvIGhvbGQgKGZvciBzb21lIHZhbHVlIG9mID0pOlxuXG4gICAgICAtIFtyZXR1cm4geCA+Pj0gZiA9IGYgeF1cbiAgICAgIC0gW3QgPj49IGZ1biB4IC0+IHJldHVybiB4ID0gdF1cbiAgICAgIC0gWyh0ID4+PSBmKSA+Pj0gZyA9IHQgPj49IGZ1biB4IC0+IChmIHggPj49IGcpXVxuXG4gICAgICBOb3RlOiBbPj49XSBpcyB0aGUgaW5maXggbm90YXRpb24gZm9yIFtiaW5kXSkgKilcblxuICAoKiogVGhlIFttYXBdIGFyZ3VtZW50IHRvIFtNb25hZC5NYWtlXSBzYXlzIGhvdyB0byBpbXBsZW1lbnQgdGhlIG1vbmFkJ3MgW21hcF0gZnVuY3Rpb24uXG4gICAgICBbYERlZmluZV91c2luZ19iaW5kXSBtZWFucyB0byBkZWZpbmUgW21hcCB0IH5mID0gYmluZCB0IH5mOihmdW4gYSAtPiByZXR1cm4gKGYgYSkpXS5cbiAgICAgIFtgQ3VzdG9tXSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHByZXN1bWFibHkgd2l0aCBzb21ldGhpbmcgbW9yZVxuICAgICAgZWZmaWNpZW50LlxuXG4gICAgICBTb21lIG90aGVyIGZ1bmN0aW9ucyByZXR1cm5lZCBieSBbTW9uYWQuTWFrZV0gYXJlIGRlZmluZWQgaW4gdGVybXMgb2YgW21hcF0sIHNvXG4gICAgICBwYXNzaW5nIGluIGEgbW9yZSBlZmZpY2llbnQgW21hcF0gd2lsbCBpbXByb3ZlIHRoZWlyIGVmZmljaWVuY3kgYXMgd2VsbC4gKilcbiAgdmFsIG1hcCA6IFsgYERlZmluZV91c2luZ19iaW5kIHwgYEN1c3RvbSBvZiAnYSB0IC0+ICgnYSAtPiAnYiwgJ2IgdCkgZl9sYWJlbGVkX2ZuIF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpYyA9IEJhc2ljX2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6J2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgQmFzaWNfbG9jYWwgPVxuICBCYXNpY19nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOignYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBJbmZpeF9nZW4gPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cblxuICAoKiogW3QgPj49IGZdIHJldHVybnMgYSBjb21wdXRhdGlvbiB0aGF0IHNlcXVlbmNlcyB0aGUgY29tcHV0YXRpb25zIHJlcHJlc2VudGVkIGJ5IHR3b1xuICAgICAgbW9uYWQgZWxlbWVudHMuICBUaGUgcmVzdWx0aW5nIGNvbXB1dGF0aW9uIGZpcnN0IGRvZXMgW3RdIHRvIHlpZWxkIGEgdmFsdWUgW3ZdLCBhbmRcbiAgICAgIHRoZW4gcnVucyB0aGUgY29tcHV0YXRpb24gcmV0dXJuZWQgYnkgW2Ygdl0uICopXG4gIHZhbCAoID4+PSApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCwgJ2IgdCkgZm5cblxuICAoKiogW3QgPj58IGZdIGlzIFt0ID4+PSAoZnVuIGEgLT4gcmV0dXJuIChmIGEpKV0uICopXG4gIHZhbCAoID4+fCApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IsICdiIHQpIGZuXG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXggPSBJbmZpeF9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICdhIC0+ICdiXG5tb2R1bGUgdHlwZSBJbmZpeF9sb2NhbCA9IEluZml4X2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhW0Bsb2NhbF0pIC0+ICdiXG5cbm1vZHVsZSB0eXBlIFN5bnRheF9nZW4gPSBzaWdcbiAgKCoqIE9wZW5pbmcgYSBtb2R1bGUgb2YgdGhpcyB0eXBlIGFsbG93cyBvbmUgdG8gdXNlIHRoZSBbJWJpbmRdIGFuZCBbJW1hcF0gc3ludGF4XG4gICAgICBleHRlbnNpb25zIGRlZmluZWQgYnkgcHB4X2xldCwgYW5kIGJyaW5ncyBbcmV0dXJuXSBpbnRvIHNjb3BlLiAqKVxuXG4gIHR5cGUgJ2EgdFxuICB0eXBlICgnYSwgJ2IpIGZuXG4gIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuXG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAoKiogVGhlc2UgYXJlIGNvbnZlbmllbnQgdG8gaGF2ZSBpbiBzY29wZSB3aGVuIHByb2dyYW1taW5nIHdpdGggYSBtb25hZDogKilcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgICBpbmNsdWRlIEluZml4X2dlbiB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICAgIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCwgJ2IgdCkgZl9sYWJlbGVkX2ZuXG4gICAgICB2YWwgbWFwIDogJ2EgdCAtPiAoJ2EgLT4gJ2IsICdiIHQpIGZfbGFiZWxlZF9mblxuICAgICAgdmFsIGJvdGggOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTeW50YXggPVxuICBTeW50YXhfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAnYSAtPiAnYlxuICAgYW5kIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6J2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgU3ludGF4X2xvY2FsID1cbiAgU3ludGF4X2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhW0Bsb2NhbF0pIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheF9nZW4gPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBpbmNsdWRlIEluZml4X2dlbiB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG5cbiAgbW9kdWxlIE1vbmFkX2luZml4IDpcbiAgICBJbmZpeF9nZW4gd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2EsICdiKSBmblxuXG4gICgqKiBbYmluZCB0IH5mXSA9IFt0ID4+PSBmXSAqKVxuICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQsICdiIHQpIGZfbGFiZWxlZF9mblxuXG4gICgqKiBbcmV0dXJuIHZdIHJldHVybnMgdGhlICh0cml2aWFsKSBjb21wdXRhdGlvbiB0aGF0IHJldHVybnMgdi4gKilcbiAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAoKiogW21hcCB0IH5mXSBpcyB0ID4+fCBmLiAqKVxuICB2YWwgbWFwIDogJ2EgdCAtPiAoJ2EgLT4gJ2IsICdiIHQpIGZfbGFiZWxlZF9mblxuXG4gICgqKiBbam9pbiB0XSBpcyBbdCA+Pj0gKGZ1biB0JyAtPiB0JyldLiAqKVxuICB2YWwgam9pbiA6ICdhIHQgdCAtPiAnYSB0XG5cbiAgKCoqIFtpZ25vcmVfbSB0XSBpcyBbbWFwIHQgfmY6KGZ1biBfIC0+ICgpKV0uICBbaWdub3JlX21dIHVzZWQgdG8gYmUgY2FsbGVkIFtpZ25vcmVdLFxuICAgICAgYnV0IHdlIGRlY2lkZWQgdGhhdCB3YXMgYSBiYWQgbmFtZSwgYmVjYXVzZSBpdCBzaGFkb3dlZCB0aGUgd2lkZWx5IHVzZWRcbiAgICAgIFtTdGRsaWIuaWdub3JlXS4gIFNvbWUgbW9uYWRzIHN0aWxsIGRvIFtsZXQgaWdub3JlID0gaWdub3JlX21dIGZvciBoaXN0b3JpY2FsXG4gICAgICByZWFzb25zLiAqKVxuICB2YWwgaWdub3JlX20gOiAnYSB0IC0+IHVuaXQgdFxuXG4gIHZhbCBhbGwgOiAnYSB0IGxpc3QgLT4gJ2EgbGlzdCB0XG5cbiAgKCoqIExpa2UgW2FsbF0sIGJ1dCBlbnN1cmVzIHRoYXQgZXZlcnkgbW9uYWRpYyB2YWx1ZSBpbiB0aGUgbGlzdCBwcm9kdWNlcyBhIHVuaXQgdmFsdWUsXG4gICAgICBhbGwgb2Ygd2hpY2ggYXJlIGRpc2NhcmRlZCByYXRoZXIgdGhhbiBiZWluZyBjb2xsZWN0ZWQgaW50byBhIGxpc3QuICopXG4gIHZhbCBhbGxfdW5pdCA6IHVuaXQgdCBsaXN0IC0+IHVuaXQgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfd2l0aG91dF9zeW50YXggPVxuICBTX3dpdGhvdXRfc3ludGF4X2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6J2EgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICdhIC0+ICdiXG5cbm1vZHVsZSB0eXBlIFNfd2l0aG91dF9zeW50YXhfbG9jYWwgPVxuICBTX3dpdGhvdXRfc3ludGF4X2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6KCdhW0Bsb2NhbF0pIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIFNfd2l0aG91dF9zeW50YXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFN5bnRheCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19sb2NhbCA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIFNfd2l0aG91dF9zeW50YXhfbG9jYWwgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFN5bnRheF9sb2NhbCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQmFzaWMyX2dlbiA9IHNpZ1xuICAoKiogTXVsdGkgcGFyYW1ldGVyIG1vbmFkLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBnZXRzIHVuaWZpZWQgYWNyb3NzIGFsbCB0aGUgY29tcHV0YXRpb24uXG4gICAgICBUaGlzIGlzIHVzZWQgdG8gZW5jb2RlIG1vbmFkcyB3b3JraW5nIG9uIGEgbXVsdGkgcGFyYW1ldGVyIGRhdGEgc3RydWN0dXJlIGxpa2VcbiAgICAgIChbKCdhLCdiKSByZXN1bHRdKS4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICgnYiwgJ2UpIHQsICgnYiwgJ2UpIHQpIGZfbGFiZWxlZF9mblxuXG4gIHZhbCBtYXBcbiAgICA6IFsgYERlZmluZV91c2luZ19iaW5kXG4gICAgICB8IGBDdXN0b20gb2YgKCdhLCAnZSkgdCAtPiAoJ2EgLT4gJ2IsICgnYiwgJ2UpIHQpIGZfbGFiZWxlZF9mblxuICAgICAgXVxuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpYzIgPSBCYXNpYzJfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBCYXNpYzJfbG9jYWwgPVxuICBCYXNpYzJfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgSW5maXgyX2dlbiA9IHNpZ1xuICAoKiogU2FtZSBhcyB7IUluZml4fSwgZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0d28gYXJndW1lbnRzLiBUaGUgc2Vjb25kIGlzIGFsd2F5cyBqdXN0XG4gICAgICBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcbiAgdHlwZSAoJ2EsICdiKSBmblxuXG4gIHZhbCAoID4+PSApIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCwgKCdiLCAnZSkgdCkgZm5cbiAgdmFsICggPj58ICkgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAnYiwgKCdiLCAnZSkgdCkgZm5cbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeDIgPSBJbmZpeDJfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAnYSAtPiAnYlxubW9kdWxlIHR5cGUgSW5maXgyX2xvY2FsID0gSW5maXgyX2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhW0Bsb2NhbF0pIC0+ICdiXG5cbm1vZHVsZSB0eXBlIFN5bnRheDJfZ2VuID0gc2lnXG4gIHR5cGUgKCdhLCAnZSkgdFxuICB0eXBlICgnYSwgJ2IpIGZuXG4gIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuXG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG5cbiAgICBpbmNsdWRlXG4gICAgICBJbmZpeDJfZ2VuIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gICAgICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICgnYiwgJ2UpIHQsICgnYiwgJ2UpIHQpIGZfbGFiZWxlZF9mblxuICAgICAgdmFsIG1hcCA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICdiLCAoJ2IsICdlKSB0KSBmX2xhYmVsZWRfZm5cbiAgICAgIHZhbCBib3RoIDogKCdhLCAnZSkgdCAtPiAoJ2IsICdlKSB0IC0+ICgnYSAqICdiLCAnZSkgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheDIgPVxuICBTeW50YXgyX2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gJ2EgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOidhIC0+ICdiXG5cbm1vZHVsZSB0eXBlIFN5bnRheDJfbG9jYWwgPVxuICBTeW50YXgyX2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhW0Bsb2NhbF0pIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgUzJfZ2VuID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdHdvIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBpcyBhbHdheXMganVzdFxuICAgICAgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdlKSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBpbmNsdWRlXG4gICAgSW5maXgyX2dlbiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSB0IGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG5cbiAgaW5jbHVkZVxuICAgIFN5bnRheDJfZ2VuXG4gICAgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdFxuICAgICBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2EsICdiKSBmblxuICAgICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gKCdhLCAnYikgZl9sYWJlbGVkX2ZuXG5cbiAgbW9kdWxlIE1vbmFkX2luZml4IDpcbiAgICBJbmZpeDJfZ2VuIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICgnYiwgJ2UpIHQsICgnYiwgJ2UpIHQpIGZfbGFiZWxlZF9mblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAnYiwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG4gIHZhbCBqb2luIDogKCgnYSwgJ2UpIHQsICdlKSB0IC0+ICgnYSwgJ2UpIHRcbiAgdmFsIGlnbm9yZV9tIDogKF8sICdlKSB0IC0+ICh1bml0LCAnZSkgdFxuICB2YWwgYWxsIDogKCdhLCAnZSkgdCBsaXN0IC0+ICgnYSBsaXN0LCAnZSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2UpIHQgbGlzdCAtPiAodW5pdCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9XG4gIFMyX2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gJ2EgLT4gJ2IgYW5kIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6J2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgUzJfbG9jYWwgPVxuICBTMl9nZW5cbiAgd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYVtAbG9jYWxdKSAtPiAnYlxuICAgYW5kIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6KCdhW0Bsb2NhbF0pIC0+ICdiXG5cbm1vZHVsZSB0eXBlIEJhc2ljMyA9IHNpZ1xuICAoKiogTXVsdGkgcGFyYW1ldGVyIG1vbmFkLiBUaGUgc2Vjb25kIGFuZCB0aGlyZCBwYXJhbWV0ZXJzIGdldCB1bmlmaWVkIGFjcm9zcyBhbGwgdGhlXG4gICAgICBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0IF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXgzID0gc2lnXG4gICgqKiBTYW1lIGFzIEluZml4LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmQgdGhpcmQgYXJlXG4gICAgICBhbHdheXMganVzdCBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdkLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCAoID4+fCApIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheDMgPSBzaWdcbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuXG4gICAgaW5jbHVkZSBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdiLCAnZCwgJ2UpIHQgLT4gKCdhICogJ2IsICdkLCAnZSkgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kXG4gICAgICBhbmQgdGhpcmQgYXJlIGFsd2F5cyBqdXN0IHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICBpbmNsdWRlIEluZml4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcbiAgaW5jbHVkZSBTeW50YXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuICB2YWwgbWFwIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCBqb2luIDogKCgnYSwgJ2QsICdlKSB0LCAnZCwgJ2UpIHQgLT4gKCdhLCAnZCwgJ2UpIHRcbiAgdmFsIGlnbm9yZV9tIDogKF8sICdkLCAnZSkgdCAtPiAodW5pdCwgJ2QsICdlKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdkLCAnZSkgdCBsaXN0IC0+ICgnYSBsaXN0LCAnZCwgJ2UpIHRcbiAgdmFsIGFsbF91bml0IDogKHVuaXQsICdkLCAnZSkgdCBsaXN0IC0+ICh1bml0LCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpY19pbmRleGVkID0gc2lnXG4gICgqKiBJbmRleGVkIG1vbmFkLCBpbiB0aGUgc3R5bGUgb2YgQXRrZXkuIFRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgYXJlIGNvbXBvc2VkXG4gICAgICBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiBUbyBzZWUgdGhpcyBtb3JlIGNsZWFybHksIHlvdSBjYW4gbG9vayBhdCB0aGUgdHlwZSBvZiBiaW5kOlxuXG4gICAgICB7W1xuICAgICAgICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICAgICAgXX1cblxuICAgICAgYW5kIGlzb2xhdGUgc29tZSBvZiB0aGUgdHlwZSB2YXJpYWJsZXMgdG8gc2VlIHRoZWlyIGluZGl2aWR1YWwgYmVoYXZpb3JzOlxuXG4gICAgICB7W1xuICAgICAgICB2YWwgYmluZCA6ICdhICAgICAgICAgICAgIC0+IGY6KCdhIC0+ICAnYiAgICAgICAgICAgKSAtPiAgJ2JcbiAgICAgICAgdmFsIGJpbmQgOiAgICAgICdpLCAnaiAgICAtPiAgICAgICAgICAgICAgICdqLCAnayAgICAgLT4gICAgICdpLCAna1xuICAgICAgXX1cblxuICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQXRrZXktc3R5bGUgaW5kZXhlZCBtb25hZHMsIHNlZTpcblxuICAgICAge3ZcbiAgICAgICAgUGFyYW1ldGVyaXNlZCBOb3Rpb25zIG9mIENvbXB1dGF0aW9uXG4gICAgICAgIFJvYmVydCBBdGtleVxuICAgICAgICBodHRwOi8vYmVudG5pYi5vcmcvcGFyYW1ub3Rpb25zLWpmcC5wZGZcbiAgICAgIHZ9ICopXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdCBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXhfaW5kZXhlZCA9IHNpZ1xuICAoKiogU2FtZSBhcyB7IUluZml4fSwgZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmQgYW5kXG4gICAgICB0aGlyZCBhcmUgY29tcG9zZWQgYWNyb3NzIGFsbCBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gIHZhbCAoID4+fCApIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheF9pbmRleGVkID0gc2lnXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuXG4gICAgaW5jbHVkZSBJbmZpeF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdiLCAnaiwgJ2spIHQgLT4gKCdhICogJ2IsICdpLCAnaykgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfaW5kZXhlZCA9IHNpZ1xuICAoKiogVGhlIHNhbWUgYXMgeyFTfSBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmRcbiAgICAgIHRoaXJkIGFyZSBjb21wb3NlZCBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiAqKVxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICBpbmNsdWRlIEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG4gIGluY2x1ZGUgU3ludGF4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG4gIG1vZHVsZSBNb25hZF9pbmZpeCA6IEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbiAgdmFsIGpvaW4gOiAoKCdhLCAnaiwgJ2spIHQsICdpLCAnaikgdCAtPiAoJ2EsICdpLCAnaykgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2ksICdqKSB0IC0+ICh1bml0LCAnaSwgJ2opIHRcbiAgdmFsIGFsbCA6ICgnYSwgJ2ksICdpKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdpLCAnaSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2ksICdpKSB0IGxpc3QgLT4gKHVuaXQsICdpLCAnaSkgdFxuZW5kXG5cbm1vZHVsZSBTX3RvX1MyIChYIDogUykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUzMgKFggOiBTMikgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuZW5kXG5cbm1vZHVsZSBTX3RvX1NfaW5kZXhlZCAoWCA6IFMpIDogU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0ID0gJ2EgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MgKFggOiBTMikgOiBTIHdpdGggdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgUzNfdG9fUzIgKFggOiBTMykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsIHVuaXQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgU19pbmRleGVkX3RvX1MyIChYIDogU19pbmRleGVkKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgJ2UpIFgudCA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgJ2UpIFgudFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1vbmFkID0gc2lnXG4gICgqKiBBIG1vbmFkIGlzIGFuIGFic3RyYWN0aW9uIG9mIHRoZSBjb25jZXB0IG9mIHNlcXVlbmNpbmcgb2YgY29tcHV0YXRpb25zLiAgQSB2YWx1ZSBvZlxuICAgICAgdHlwZSBbJ2EgbW9uYWRdIHJlcHJlc2VudHMgYSBjb21wdXRhdGlvbiB0aGF0IHJldHVybnMgYSB2YWx1ZSBvZiB0eXBlIFsnYV0uICopXG5cbiAgbW9kdWxlIHR5cGUgQmFzaWMgPSBCYXNpY1xuICBtb2R1bGUgdHlwZSBCYXNpYzIgPSBCYXNpYzJcbiAgbW9kdWxlIHR5cGUgQmFzaWMzID0gQmFzaWMzXG4gIG1vZHVsZSB0eXBlIEJhc2ljX2luZGV4ZWQgPSBCYXNpY19pbmRleGVkXG4gIG1vZHVsZSB0eXBlIEJhc2ljX2xvY2FsID0gQmFzaWNfbG9jYWxcbiAgbW9kdWxlIHR5cGUgQmFzaWMyX2xvY2FsID0gQmFzaWMyX2xvY2FsXG4gIG1vZHVsZSB0eXBlIEluZml4ID0gSW5maXhcbiAgbW9kdWxlIHR5cGUgSW5maXgyID0gSW5maXgyXG4gIG1vZHVsZSB0eXBlIEluZml4MyA9IEluZml4M1xuICBtb2R1bGUgdHlwZSBJbmZpeF9pbmRleGVkID0gSW5maXhfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBJbmZpeF9sb2NhbCA9IEluZml4X2xvY2FsXG4gIG1vZHVsZSB0eXBlIEluZml4Ml9sb2NhbCA9IEluZml4Ml9sb2NhbFxuICBtb2R1bGUgdHlwZSBTeW50YXggPSBTeW50YXhcbiAgbW9kdWxlIHR5cGUgU3ludGF4MiA9IFN5bnRheDJcbiAgbW9kdWxlIHR5cGUgU3ludGF4MyA9IFN5bnRheDNcbiAgbW9kdWxlIHR5cGUgU3ludGF4X2luZGV4ZWQgPSBTeW50YXhfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBTeW50YXhfbG9jYWwgPSBTeW50YXhfbG9jYWxcbiAgbW9kdWxlIHR5cGUgU3ludGF4Ml9sb2NhbCA9IFN5bnRheDJfbG9jYWxcbiAgbW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheCA9IFNfd2l0aG91dF9zeW50YXhcbiAgbW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheF9sb2NhbCA9IFNfd2l0aG91dF9zeW50YXhfbG9jYWxcbiAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgbW9kdWxlIHR5cGUgUzIgPSBTMlxuICBtb2R1bGUgdHlwZSBTMyA9IFMzXG4gIG1vZHVsZSB0eXBlIFNfaW5kZXhlZCA9IFNfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBTX2xvY2FsID0gU19sb2NhbFxuICBtb2R1bGUgdHlwZSBTMl9sb2NhbCA9IFMyX2xvY2FsXG5cbiAgbW9kdWxlIE1ha2UgKFggOiBCYXNpYykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudFxuICBtb2R1bGUgTWFrZTIgKFggOiBCYXNpYzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50XG4gIG1vZHVsZSBNYWtlMyAoWCA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudFxuXG4gIG1vZHVsZSBNYWtlX2luZGV4ZWQgKFggOiBCYXNpY19pbmRleGVkKSA6XG4gICAgU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50XG5cbiAgbW9kdWxlIE1ha2VfbG9jYWwgKFggOiBCYXNpY19sb2NhbCkgOiBTX2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudFxuICBtb2R1bGUgTWFrZTJfbG9jYWwgKFggOiBCYXNpYzJfbG9jYWwpIDogUzJfbG9jYWwgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50XG5cbiAgKCoqIERlZmluZSBhIG1vbmFkIHRocm91Z2ggYW4gaXNvbW9ycGhpc20gd2l0aCBhbiBleGlzdGluZyBtb25hZC4gRm9yIGV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgJ2EgdCA9IHsgdmFsdWUgOiAnYSB9XG5cbiAgICAgICAgaW5jbHVkZSBNb25hZC5PZl9tb25hZCAoTW9uYWQuSWRlbnQpIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgICAgICAgIGxldCB0b19tb25hZCB7IHZhbHVlIH0gPSB2YWx1ZVxuICAgICAgICAgICAgbGV0IG9mX21vbmFkIHZhbHVlID0geyB2YWx1ZSB9XG4gICAgICAgICAgZW5kKVxuICAgICAgXX0gKilcbiAgbW9kdWxlIE9mX21vbmFkXG4gICAgICAoTW9uYWQgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICdhIHQgLT4gJ2EgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogJ2EgTW9uYWQudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkMlxuICAgICAgKE1vbmFkIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiKSBNb25hZC50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udFxuXG4gIG1vZHVsZSBPZl9tb25hZDNcbiAgICAgIChNb25hZCA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYiwgJ2MpIE1vbmFkLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkX2luZGV4ZWRcbiAgICAgIChNb25hZCA6IFNfaW5kZXhlZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgTS50XG5cbiAgKCoqIEFuIGVhZ2VyIGlkZW50aXR5IG1vbmFkIHdpdGggZnVuY3Rpb25zIGhlYXZpbHkgYW5ub3RhdGVkIHdpdGhcbiAgICAgIFtAaW5saW5lZF0gb3IgW0BpbmxpbmUgaGludF0uXG5cbiAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBtYW51YWxseSB3cml0dGVuLCByYXRoZXIgdGhhbiBiZWluZ1xuICAgICAgY29uc3RydWN0ZWQgYnkgW01vbmFkLk1ha2VdLiBUaGlzIGdpdmVzIGJldHRlciBpbmxpbmluZ1xuICAgICAgZ3VhcmFudGVlcy5cbiAgKilcbiAgbW9kdWxlIElkZW50IDogU19sb2NhbCB3aXRoIHR5cGUgJ2EgdCA9ICdhXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBNb25hZF9pbnRmXG5cbm1vZHVsZSB0eXBlIEJhc2ljX2dlbmVyYWwgPSBzaWdcbiAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmRcbiAgICA6ICAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2ssICdkLCAnZSkgdClcbiAgICAtPiAoJ2IsICdpLCAnaywgJ2QsICdlKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmRcbiAgICAgIHwgYEN1c3RvbSBvZiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgICBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpLCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5lcmFsIChNIDogQmFzaWNfZ2VuZXJhbCkgPSBzdHJ1Y3RcbiAgbGV0IGJpbmQgPSBNLmJpbmRcbiAgbGV0IHJldHVybiA9IE0ucmV0dXJuXG4gIGxldCBtYXBfdmlhX2JpbmQgbWEgfmYgPSBNLmJpbmQgbWEgfmY6KGZ1biBhIC0+IE0ucmV0dXJuIChmIGEpKVxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIE0ubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfYmluZCAtPiBtYXBfdmlhX2JpbmRcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbW9kdWxlIE1vbmFkX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gICAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgZW5kXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0IGJvdGggYSBiID0gYSA+Pj0gZnVuIGEgLT4gYiA+PnwgZnVuIGIgLT4gYSwgYlxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBqb2luIHQgPSB0ID4+PSBmdW4gdCcgLT4gdCdcbiAgbGV0IGlnbm9yZV9tIHQgPSBtYXAgdCB+ZjooZnVuIF8gLT4gKCkpXG5cbiAgbGV0IGFsbCA9XG4gICAgbGV0IHJlYyBsb29wIHZzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiB2cylcbiAgICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gdiAtPiBsb29wICh2IDo6IHZzKSB0c1xuICAgIGluXG4gICAgZnVuIHRzIC0+IGxvb3AgW10gdHNcbiAgOztcblxuICBsZXQgcmVjIGFsbF91bml0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gKCkgLT4gYWxsX3VuaXQgdHNcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pbmRleGVkIChNIDogQmFzaWNfaW5kZXhlZCkgOlxuICBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSBNLnQgPSBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2opIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMyAoTSA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIE0udCA9XG4gIE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UyIChNIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdkKSB0IDo9ICgnYSwgJ2QpIE0udCA9IE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoTSA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMl9sb2NhbCAoTSA6IEJhc2ljMl9sb2NhbCkgPSBzdHJ1Y3RcbiAgbGV0IGJpbmQgPSBNLmJpbmRcbiAgbGV0IHJldHVybiA9IE0ucmV0dXJuXG5cbiAgbGV0IG1hcF92aWFfYmluZCBtYSB+ZiA9XG4gICAgbGV0IHJlcyA9IE0uYmluZCBtYSB+ZjooZnVuIGEgLT4gTS5yZXR1cm4gKGYgYSkpIGluXG4gICAgcmVzXG4gIDs7XG5cbiAgbGV0IG1hcCA9XG4gICAgbWF0Y2ggTS5tYXAgd2l0aFxuICAgIHwgYERlZmluZV91c2luZ19iaW5kIC0+IG1hcF92aWFfYmluZFxuICAgIHwgYEN1c3RvbSB4IC0+IHhcbiAgOztcblxuICBtb2R1bGUgTW9uYWRfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcbiAgICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG5cbiAgICAgIGxldCBib3RoIGEgYiA9XG4gICAgICAgIGxldCByZXMgPVxuICAgICAgICAgIGJpbmQgYSB+ZjooZnVuIGEgLT5cbiAgICAgICAgICAgIGxldCByZXMgPSBtYXAgYiB+ZjooZnVuIGIgLT4gYSwgYikgaW5cbiAgICAgICAgICAgIHJlcylcbiAgICAgICAgaW5cbiAgICAgICAgcmVzXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBqb2luIHQgPSB0ID4+PSBGbi5pZFxuXG4gIGxldCBpZ25vcmVfbSB0ID1cbiAgICBsZXQgcmVzID0gbWFwIHQgfmY6KGZ1biBfIC0+ICgpKSBpblxuICAgIHJlc1xuICA7O1xuXG4gIGxldCBhbGwgPVxuICAgIGxldCByZWMgbG9vcCB2cyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoTGlzdC5yZXYgdnMpXG4gICAgICB8IHQgOjogdHMgLT4gdCA+Pj0gZnVuIHYgLT4gbG9vcCAodiA6OiB2cykgdHNcbiAgICBpblxuICAgIGZ1biB0cyAtPiBsb29wIFtdIHRzXG4gIDs7XG5cbiAgbGV0IHJlYyBhbGxfdW5pdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICB8IHQgOjogdHMgLT4gdCA+Pj0gZnVuICgpIC0+IGFsbF91bml0IHRzXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfbG9jYWwgKE0gOiBCYXNpY19sb2NhbCkgOiBTX2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9XG4gIE1ha2UyX2xvY2FsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICdhIE0udFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZF9nZW5lcmFsIChNb25hZCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuXG4gICAgdmFsIGJpbmRcbiAgICAgIDogICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAgIC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrLCAnZCwgJ2UpIHQpXG4gICAgICAtPiAoJ2IsICdpLCAnaywgJ2QsICdlKSB0XG5cbiAgICB2YWwgbWFwIDogKCdhLCAnaSwgJ2osICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSwgJ2QsICdlKSB0XG4gIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcblxuICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgLT4gKCdhLCAnaSwgJ2osICdkLCAnZSkgTW9uYWQudFxuICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIE1vbmFkLnQgLT4gKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgICAgICBlbmQpID1cbiAgTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaiwgJ2QsICdlKSBNLnRcblxuICAgIGxldCByZXR1cm4gYSA9IE0ub2ZfbW9uYWQgKE1vbmFkLnJldHVybiBhKVxuICAgIGxldCBiaW5kIHQgfmYgPSBNLm9mX21vbmFkIChNb25hZC5iaW5kIChNLnRvX21vbmFkIHQpIH5mOihmdW4gYSAtPiBNLnRvX21vbmFkIChmIGEpKSlcbiAgICBsZXQgbWFwID0gYEN1c3RvbSAoZnVuIHQgfmYgLT4gTS5vZl9tb25hZCAoTW9uYWQubWFwIChNLnRvX21vbmFkIHQpIH5mKSlcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWRfaW5kZXhlZFxuICAgIChNb25hZCA6IFNfaW5kZXhlZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhLCAnaSwgJ2opIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaikgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQzXG4gICAgKE1vbmFkIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiLCAnYykgTW9uYWQudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QsICdlKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQyXG4gICAgKE1vbmFkIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiKSBNb25hZC50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZFxuICAgIChNb25hZCA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAnYSB0IC0+ICdhIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAnYSBNb25hZC50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE0udFxuICAgIGVuZClcblxubW9kdWxlIElkZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgbGV0W0BpbmxpbmVdIGJpbmQgYSB+ZiA9IChmIFtAaW5saW5lZCBoaW50XSkgYVxuICBsZXRbQGlubGluZV0gbWFwIGEgfmYgPSAoZiBbQGlubGluZWQgaGludF0pIGFcblxuICBleHRlcm5hbCByZXR1cm4gOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG5cbiAgbW9kdWxlIE1vbmFkX2luZml4ID0gc3RydWN0XG4gICAgbGV0W0BpbmxpbmVdICggPj58ICkgYSBmID0gbWFwIGEgfmZcbiAgICBsZXRbQGlubGluZV0gKCA+Pj0gKSBhIGYgPSBiaW5kIGEgfmZcbiAgZW5kXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0W0BpbmxpbmVdIGJvdGggYSBiID0gYSwgYlxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gIGVuZFxuXG4gIGV4dGVybmFsIGpvaW4gOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIGlnbm9yZV9tIDogKF9bQGxvY2FsX29wdF0pIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuICBleHRlcm5hbCBhbGxfdW5pdCA6ICh1bml0IGxpc3RbQGxvY2FsX29wdF0pIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuICBleHRlcm5hbCBhbGwgOiAoJ2EgbGlzdFtAbG9jYWxfb3B0XSkgLT4gKCdhIGxpc3RbQGxvY2FsX29wdF0pID0gXCIlaWRlbnRpdHlcIlxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXBwbGljYXRpdmVfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG4oKiogVGhpcyBtb2R1bGUgc2VydmVzIG1vc3RseSBhcyBhIHBhcnRpYWwgY2hlY2sgdGhhdCBbUzJdIGFuZCBbU10gYXJlIGluIHN5bmMsIGJ1dFxuICAgIGFjdHVhbGx5IGNhbGxpbmcgaXQgaXMgb2NjYXNpb25hbGx5IHVzZWZ1bC4gKilcbm1vZHVsZSBTX3RvX1MyIChYIDogUykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUyAoVCA6IFQuVCkgKFggOiBTMikgOiBTIHdpdGggdHlwZSAnYSB0ID0gKCdhLCBULnQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICdhIHQgPSAoJ2EsIFQudCkgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MzIChYIDogUzIpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbmVuZFxuXG5tb2R1bGUgUzNfdG9fUzIgKFQgOiBULlQpIChYIDogUzMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2QpIHQgPSAoJ2EsICdkLCBULnQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2QpIHQgPSAoJ2EsICdkLCBULnQpIFgudFxuZW5kXG5cbm1vZHVsZSBTM190b19TIChUMSA6IFQuVCkgKFQyIDogVC5UKSAoWCA6IFMzKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIFQxLnQsIFQyLnQpIFgudCA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAnYSB0ID0gKCdhLCBUMS50LCBUMi50KSBYLnRcbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBCYXNpYzMpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgbGV0ICggPCo+ICkgPSBhcHBseVxuICBsZXQgZGVyaXZlZF9tYXAgdCB+ZiA9IHJldHVybiBmIDwqPiB0XG5cbiAgbGV0IG1hcCA9XG4gICAgbWF0Y2ggWC5tYXAgd2l0aFxuICAgIHwgYERlZmluZV91c2luZ19hcHBseSAtPiBkZXJpdmVkX21hcFxuICAgIHwgYEN1c3RvbSB4IC0+IHhcbiAgOztcblxuICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBsZXQgbWFwMiB0YSB0YiB+ZiA9IG1hcCB+ZiB0YSA8Kj4gdGJcbiAgbGV0IG1hcDMgdGEgdGIgdGMgfmYgPSBtYXAgfmYgdGEgPCo+IHRiIDwqPiB0Y1xuICBsZXQgYWxsIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OihyZXR1cm4gW10pIH5mOihtYXAyIH5mOihmdW4geCB4cyAtPiB4IDo6IHhzKSlcbiAgbGV0IGJvdGggdGEgdGIgPSBtYXAyIHRhIHRiIH5mOihmdW4gYSBiIC0+IGEsIGIpXG4gIGxldCAoICo+ICkgdSB2ID0gcmV0dXJuIChmdW4gKCkgeSAtPiB5KSA8Kj4gdSA8Kj4gdlxuICBsZXQgKCA8KiApIHUgdiA9IHJldHVybiAoZnVuIHggKCkgLT4geCkgPCo+IHUgPCo+IHZcbiAgbGV0IGFsbF91bml0IHRzID0gTGlzdC5mb2xkIHRzIH5pbml0OihyZXR1cm4gKCkpIH5mOiggKj4gKVxuXG4gIG1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoIDwqPiApID0gKCA8Kj4gKVxuICAgIGxldCAoICo+ICkgPSAoICo+IClcbiAgICBsZXQgKCA8KiApID0gKCA8KiApXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlMiAoWCA6IEJhc2ljMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnQgPSBNYWtlMyAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2UgKFggOiBCYXNpYykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudCA9IE1ha2UyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2xldF9zeW50YXgzXG4gICAgKFggOiBGb3JfbGV0X3N5bnRheDMpIChJbnRmIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAoSW1wbCA6IEludGYuUykgPVxuc3RydWN0XG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBYXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBJbXBsXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX2xldF9zeW50YXgyXG4gICAgKFggOiBGb3JfbGV0X3N5bnRheDIpIChJbnRmIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAoSW1wbCA6IEludGYuUykgPVxuICBNYWtlX2xldF9zeW50YXgzXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBYXG5cbiAgICAgIHR5cGUgKCdhLCAnZCwgXykgdCA9ICgnYSwgJ2QpIFgudFxuICAgIGVuZClcbiAgICAoSW50ZilcbiAgICAoSW1wbClcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheFxuICAgIChYIDogRm9yX2xldF9zeW50YXgpIChJbnRmIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgKEltcGwgOiBJbnRmLlMpID1cbiAgTWFrZV9sZXRfc3ludGF4MlxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgWFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFgudFxuICAgIGVuZClcbiAgICAoSW50ZilcbiAgICAoSW1wbClcblxuKCoqIFRoaXMgZnVuY3RvciBjbG9zZWx5IHJlc2VtYmxlcyBbTWFrZTNdLCBhbmQgaW5kZWVkIGl0IGNvdWxkIGJlIGltcGxlbWVudGVkXG4gICAgbXVjaCBzaG9ydGVyIGluIHRlcm1zIG9mIFtNYWtlM10uIEhvd2V2ZXIsIHdlIGltcGxlbWVudCBpdCBieSBoYW5kIHNvIHRoYXRcbiAgICB0aGUgcmVzdWx0aW5nIGZ1bmN0aW9ucyBhcmUgbW9yZSBlZmZpY2llbnQsIGUuZy4gdXNpbmcgW21hcDJdIGRpcmVjdGx5IGluc3RlYWQgb2ZcbiAgICBkZWZpbmluZyBbYXBwbHldIGluIHRlcm1zIG9mIGl0IGFuZCB0aGVuIFttYXAyXSBpbiB0ZXJtcyBvZiB0aGF0LiBGb3IgbW9zdFxuICAgIGFwcGxpY2F0aXZlcyB0aGlzIGRvZXMgbm90IG1hdHRlciwgYnV0IGZvciBzb21lIChzdWNoIGFzIEJvbnNhaS5WYWx1ZS50KSwgaXQgaGFzIGFcbiAgICBsYXJnZXIgaW1wYWN0LiAqKVxubW9kdWxlIE1ha2UzX3VzaW5nX21hcDIgKFggOiBCYXNpYzNfdXNpbmdfbWFwMikgOlxuICBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICBsZXQgYXBwbHkgdGYgdGEgPSBtYXAyIHRmIHRhIH5mOihmdW4gZiBhIC0+IGYgYSlcbiAgbGV0ICggPCo+ICkgPSBhcHBseVxuICBsZXQgZGVyaXZlZF9tYXAgdCB+ZiA9IHJldHVybiBmIDwqPiB0XG5cbiAgbGV0IG1hcCA9XG4gICAgbWF0Y2ggWC5tYXAgd2l0aFxuICAgIHwgYERlZmluZV91c2luZ19tYXAyIC0+IGRlcml2ZWRfbWFwXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBib3RoIHRhIHRiID0gbWFwMiB0YSB0YiB+ZjooZnVuIGEgYiAtPiBhLCBiKVxuICBsZXQgbWFwMyB0YSB0YiB0YyB+ZiA9IG1hcDIgKG1hcDIgdGEgdGIgfmYpIHRjIH5mOihmdW4gZmFiIGMgLT4gZmFiIGMpXG4gIGxldCBhbGwgdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6KHJldHVybiBbXSkgfmY6KG1hcDIgfmY6KGZ1biB4IHhzIC0+IHggOjogeHMpKVxuICBsZXQgKCAqPiApIHUgdiA9IG1hcDIgdSB2IH5mOihmdW4gKCkgeSAtPiB5KVxuICBsZXQgKCA8KiApIHUgdiA9IG1hcDIgdSB2IH5mOihmdW4geCAoKSAtPiB4KVxuICBsZXQgYWxsX3VuaXQgdHMgPSBMaXN0LmZvbGQgdHMgfmluaXQ6KHJldHVybiAoKSkgfmY6KCAqPiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgbGV0ICggKj4gKSA9ICggKj4gKVxuICAgIGxldCAoIDwqICkgPSAoIDwqIClcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UyX3VzaW5nX21hcDIgKFggOiBCYXNpYzJfdXNpbmdfbWFwMikgOlxuICBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnQgPSBNYWtlM191c2luZ19tYXAyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19tYXAyIChYIDogQmFzaWNfdXNpbmdfbWFwMikgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudCA9XG4gIE1ha2UyX3VzaW5nX21hcDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2UzX3VzaW5nX21hcDJfbG9jYWwgKFggOiBCYXNpYzNfdXNpbmdfbWFwMl9sb2NhbCkgOlxuICBTM19sb2NhbCB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICBsZXQgYXBwbHkgdGYgdGEgPSBtYXAyIHRmIHRhIH5mOihmdW4gZiBhIC0+IGYgYSlcbiAgbGV0ICggPCo+ICkgPSBhcHBseVxuICBsZXQgZGVyaXZlZF9tYXAgdCB+ZiA9IG1hcDIgfmY6KGZ1biAoKSAtPiBmKSAocmV0dXJuICgpKSB0IFtAbm9udGFpbF1cblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBYLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX21hcDIgLT4gZGVyaXZlZF9tYXBcbiAgICB8IGBDdXN0b20gbWFwIC0+IG1hcFxuICA7O1xuXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBib3RoIHRhIHRiID0gbWFwMiB0YSB0YiB+ZjooZnVuIGEgYiAtPiBhLCBiKVxuXG4gIGxldCBtYXAzIHRhIHRiIHRjIH5mID1cbiAgICBsZXQgcmVzID0gbWFwMiAoYm90aCB0YSB0YikgdGMgfmY6KGZ1biAoYSwgYikgYyAtPiBmIGEgYiBjKSBpblxuICAgIHJlc1xuICA7O1xuXG4gIGxldCBhbGwgdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6KHJldHVybiBbXSkgfmY6KG1hcDIgfmY6KGZ1biB4IHhzIC0+IHggOjogeHMpKVxuICBsZXQgKCAqPiApIHUgdiA9IG1hcDIgdSB2IH5mOihmdW4gKCkgeSAtPiB5KVxuICBsZXQgKCA8KiApIHUgdiA9IG1hcDIgdSB2IH5mOihmdW4geCAoKSAtPiB4KVxuICBsZXQgYWxsX3VuaXQgdHMgPSBMaXN0LmZvbGQgdHMgfmluaXQ6KHJldHVybiAoKSkgfmY6KCAqPiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgbGV0ICggKj4gKSA9ICggKj4gKVxuICAgIGxldCAoIDwqICkgPSAoIDwqIClcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UyX3VzaW5nX21hcDJfbG9jYWwgKFggOiBCYXNpYzJfdXNpbmdfbWFwMl9sb2NhbCkgOlxuICBTMl9sb2NhbCB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnQgPSBNYWtlM191c2luZ19tYXAyX2xvY2FsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19tYXAyX2xvY2FsIChYIDogQmFzaWNfdXNpbmdfbWFwMl9sb2NhbCkgOlxuICBTX2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudCA9IE1ha2UyX3VzaW5nX21hcDJfbG9jYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkMiAoTSA6IE1vbmFkLlMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIE0udCA9IE1ha2UyIChzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlKSBNLnRcblxuICAgIGxldCByZXR1cm4gPSBNLnJldHVyblxuICAgIGxldCBhcHBseSBtZiBteCA9IE0uYmluZCBtZiB+ZjooZnVuIGYgLT4gTS5tYXAgbXggfmYpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gTS5tYXBcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQgKE0gOiBNb25hZC5TKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gT2ZfbW9uYWQyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgTS50XG4gIGVuZClcblxubW9kdWxlIENvbXBvc2UgKEYgOiBTKSAoRyA6IFMpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICdhIEYudCBHLnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgRi50IEcudFxuXG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgcmV0dXJuIGEgPSBHLnJldHVybiAoRi5yZXR1cm4gYSlcbiAgICAgIGxldCBhcHBseSB0ZiB0eCA9IEcuYXBwbHkgKEcubWFwIH5mOkYuYXBwbHkgdGYpIHR4XG4gICAgICBsZXQgY3VzdG9tX21hcCB0IH5mID0gRy5tYXAgfmY6KEYubWFwIH5mKSB0XG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBjdXN0b21fbWFwXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBQYWlyIChGIDogUykgKEcgOiBTKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAnYSBGLnQgKiAnYSBHLnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgRi50ICogJ2EgRy50XG5cbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCByZXR1cm4gYSA9IEYucmV0dXJuIGEsIEcucmV0dXJuIGFcbiAgICAgIGxldCBhcHBseSB0ZiB0eCA9IEYuYXBwbHkgKGZzdCB0ZikgKGZzdCB0eCksIEcuYXBwbHkgKHNuZCB0ZikgKHNuZCB0eClcbiAgICAgIGxldCBjdXN0b21fbWFwIHQgfmYgPSBGLm1hcCB+ZiAoZnN0IHQpLCBHLm1hcCB+ZiAoc25kIHQpXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBjdXN0b21fbWFwXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICd3aXRuZXNzKSB0ID1cbiAgeyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gIH1cblxudHlwZSAoJ2EsICdiKSBjb21wYXJhdG9yID0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhIHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfZmMgPSBzaWdcbiAgdHlwZSBjb21wYXJhYmxlX3RcblxuICBpbmNsdWRlIFMgd2l0aCB0eXBlIHQgOj0gY29tcGFyYWJsZV90XG5lbmRcblxubW9kdWxlIE1vZHVsZSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnYilcbmVuZFxuXG5sZXQgbWFrZSAodHlwZSB0KSB+Y29tcGFyZSB+c2V4cF9vZl90ID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIGNvbXBhcmFibGVfdCA9IHRcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSB7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGVuZCA6IFNfZmNcbiAgICB3aXRoIHR5cGUgY29tcGFyYWJsZV90ID0gdClcbjs7XG5cbm1vZHVsZSBTX3RvX1MxIChTIDogUykgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gUy50XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gUy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBvcGVuIFNcblxuICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBNLnsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgTWFrZTEgKE0gOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBjb21wYXJlIDogJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBzZXhwX29mX3QgOiAnYSB0IC0+IFNleHAudFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gTS57IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcblxuICBpbmNsdWRlIE1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgIGxldCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90IF8gPSBTZXhwLkF0b20gXCJfXCJcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZCA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAhJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvciA6ICgnYSwgJ2NtcCkgY29tcGFyYXRvciAtPiAoJ2EgdCwgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgRGVyaXZlZCAoTSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlICEnY21wIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmU7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAoISdjbXBfYSwgISdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3JcbiAgICA6ICAoJ2EsICdjbXBfYSkgY29tcGFyYXRvclxuICAgIC0+ICgnYiwgJ2NtcF9iKSBjb21wYXJhdG9yXG4gICAgLT4gKCgnYSwgJ2IpIHQsICgnY21wX2EsICdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWQyIChNIDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoISdjbXBfYSwgISdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSBiID1cbiAgICB7IGNvbXBhcmUgPSBNLmNvbXBhcmUgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgIDsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgYi5zZXhwX29mX3RcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZF9waGFudG9tID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdjbXAgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3JcbiAgICA6ICAoJ2EsICdjbXApIGNvbXBhcmF0b3JcbiAgICAtPiAoKCdhLCBfKSB0LCAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkX3BoYW50b20gKE0gOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wYXJlIDogKCdhIC0+ICdhIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICAgIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cC50KSAtPiAoJ2EsIF8pIHQgLT4gU2V4cC50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgJ2NtcF9hIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmU7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkMl9waGFudG9tID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcbiAgdHlwZSAoISdjbXBfYSwgISdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3JcbiAgICA6ICAoJ2EsICdjbXBfYSkgY29tcGFyYXRvclxuICAgIC0+ICgnYiwgJ2NtcF9iKSBjb21wYXJhdG9yXG4gICAgLT4gKCgnYSwgJ2IsIF8pIHQsICgnY21wX2EsICdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWQyX3BoYW50b20gKE0gOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcGFyZVxuICAgICAgOiAgKCdhIC0+ICdhIC0+IGludClcbiAgICAgIC0+ICgnYiAtPiAnYiAtPiBpbnQpXG4gICAgICAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgIC0+IGludFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwLnQpIC0+ICgnYiAtPiBTZXhwLnQpIC0+ICgnYSwgJ2IsIF8pIHQgLT4gU2V4cC50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgKCEnY21wX2EsICEnY21wX2IpIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgYiA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZSBiLmNvbXBhcmVcbiAgICA7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IGIuc2V4cF9vZl90XG4gICAgfVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2YsICdzKSB0ID1cbiAgfCBGaXJzdCBvZiAnZlxuICB8IFNlY29uZCBvZiAnc1xuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgOlxuICAnZiAncy4gKCdmIC0+ICdmIC0+IGludCkgLT4gKCdzIC0+ICdzIC0+IGludCkgLT4gKCdmLCAncykgdCAtPiAoJ2YsICdzKSB0IC0+IGludFxuICA9XG4gIGZ1biBfY21wX19mIF9jbXBfX3MgYV9fMDAxXyBiX18wMDJfIC0+XG4gIGlmIFN0ZGxpYi4oID09ICkgYV9fMDAxXyBiX18wMDJfXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBhX18wMDFfLCBiX18wMDJfIHdpdGhcbiAgICB8IEZpcnN0IF9hX18wMDNfLCBGaXJzdCBfYl9fMDA0XyAtPiBfY21wX19mIF9hX18wMDNfIF9iX18wMDRfXG4gICAgfCBGaXJzdCBfLCBfIC0+IC0xXG4gICAgfCBfLCBGaXJzdCBfIC0+IDFcbiAgICB8IFNlY29uZCBfYV9fMDA1XywgU2Vjb25kIF9iX18wMDZfIC0+IF9jbXBfX3MgX2FfXzAwNV8gX2JfXzAwNl8pXG47O1xuXG5sZXQgaGFzaF9mb2xkX3RcbiAgOiB0eXBlIGYgcy5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGYgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gKGYsIHMpIHRcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9mIF9oYXNoX2ZvbGRfcyBoc3YgYXJnIC0+XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgRmlyc3QgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX2YgaHN2IF9hMFxuICB8IFNlY29uZCBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfcyBoc3YgX2EwXG47O1xuXG5sZXQgdF9vZl9zZXhwIDpcbiAgJ2YgJ3MuXG4gIChTZXhwbGliMC5TZXhwLnQgLT4gJ2YpIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ3MpIC0+IFNleHBsaWIwLlNleHAudCAtPiAoJ2YsICdzKSB0XG4gID1cbiAgZnVuICh0eXBlIGZfXzAyM18gc19fMDI0XylcbiAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGZfXzAyM18pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gc19fMDI0XykgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgICAgICAgLT4gKGZfXzAyM18sIHNfXzAyNF8pIHQpIC0+XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDExXyA9IFwiZWl0aGVyMC5tbC50XCIgaW5cbiAgICBmdW4gX29mX2ZfXzAwN18gX29mX3NfXzAwOF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiZmlyc3RcIiB8IFwiRmlyc3RcIikgYXMgX3RhZ19fMDE0XykgOjogc2V4cF9hcmdzX18wMTVfKSBhc1xuICAgICAgICBfc2V4cF9fMDEzXyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTVfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMTZfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAxN18gPSBfb2ZfZl9fMDA3XyBhcmcwX18wMTZfIGluXG4gICAgICAgICAgIEZpcnN0IHJlczBfXzAxN19cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMTFfXG4gICAgICAgICAgICAgX3RhZ19fMDE0X1xuICAgICAgICAgICAgIF9zZXhwX18wMTNfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJzZWNvbmRcIiB8IFwiU2Vjb25kXCIpIGFzIF90YWdfXzAxOV8pIDo6IHNleHBfYXJnc19fMDIwXykgYXNcbiAgICAgICAgX3NleHBfXzAxOF8gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDIwXyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDIxXyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMjJfID0gX29mX3NfXzAwOF8gYXJnMF9fMDIxXyBpblxuICAgICAgICAgICBTZWNvbmQgcmVzMF9fMDIyX1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAxMV9cbiAgICAgICAgICAgICBfdGFnX18wMTlfXG4gICAgICAgICAgICAgX3NleHBfXzAxOF8pXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJmaXJzdFwiIHwgXCJGaXJzdFwiKSBhcyBzZXhwX18wMTJfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInNlY29uZFwiIHwgXCJTZWNvbmRcIikgYXMgc2V4cF9fMDEyXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTJfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDEwXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMF9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAxMF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMF9cbiAgICAgIHwgc2V4cF9fMDEwXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTBfXG47O1xuXG5sZXQgc2V4cF9vZl90IDpcbiAgJ2YgJ3MuXG4gICgnZiAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgncyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnZiwgJ3MpIHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gID1cbiAgZnVuICh0eXBlIGZfXzAzMV8gc19fMDMyXylcbiAgICAgIDogICgoZl9fMDMxXyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChzX18wMzJfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAtPiAoZl9fMDMxXywgc19fMDMyXykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9mX18wMjVfIF9vZl9zX18wMjZfIC0+IGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IGFyZzBfXzAyN18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAyOF8gPSBfb2ZfZl9fMDI1XyBhcmcwX18wMjdfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkZpcnN0XCI7IHJlczBfXzAyOF8gXVxuICAgICAgfCBTZWNvbmQgYXJnMF9fMDI5XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDMwXyA9IF9vZl9zX18wMjZfIGFyZzBfXzAyOV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2Vjb25kXCI7IHJlczBfXzAzMF8gXVxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyIDpcbiAgJ2YgJ3MuXG4gICdmIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gIC0+ICdzIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gIC0+ICgnZiwgJ3MpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBmdW4gXydmX3NleHBfZ3JhbW1hciBfJ3Nfc2V4cF9ncmFtbWFyIC0+XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJGaXJzdFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nZl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiU2Vjb25kXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydzX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuIiwiKCogVGhlIHR5cGUgW3RdIHNob3VsZCBiZSBhYnN0cmFjdCB0byBtYWtlIHRoZSBmc2V0IGFuZCBzZXQgZnVuY3Rpb25zIHVuYXZhaWxhYmxlXG4gICBmb3IgcHJpdmF0ZSB0eXBlcyBhdCB0aGUgbGV2ZWwgb2YgdHlwZXMgKGFuZCBub3QgYnkgcHV0dGluZyBOb25lIGluIHRoZSBmaWVsZCkuXG4gICBVbmZvcnR1bmF0ZWx5LCBtYWtpbmcgdGhlIHR5cGUgYWJzdHJhY3QgbWVhbnMgdGhhdCB3aGVuIGNyZWF0aW5nIGZpZWxkcyAodGhyb3VnaFxuICAgYSBbY3JlYXRlXSBmdW5jdGlvbikgdmFsdWUgcmVzdHJpY3Rpb24ga2lja3MgaW4uIFRoaXMgaXMgd29ya2VkIGFyb3VuZCBieSBpbnN0ZWFkXG4gICBub3QgbWFraW5nIHRoZSB0eXBlIGFic3RyYWN0LCBidXQgZm9yY2luZyBhbnlvbmUgYnJlYWtpbmcgdGhlIGFic3RyYWN0aW9uIHRvIHVzZVxuICAgdGhlIFtGb3JfZ2VuZXJhdGVkX2NvZGVdIG1vZHVsZSwgbWFraW5nIGl0IG9idmlvdXMgdG8gYW55IHJlYWRlciB0aGF0IHNvbWV0aGluZyB1Z2x5XG4gICBpcyBnb2luZyBvbi5cbiAgIHRfd2l0aF9wZXJtIChhbmQgZGVyaXZhdGl2ZXMpIGlzIHRoZSB0eXBlIHRoYXQgdXNlcnMgcmVhbGx5IHVzZS4gSXQgaXMgYSBjb25zdHJ1Y3RvclxuICAgYmVjYXVzZTpcbiAgIDEuIGl0IG1ha2VzIHR5cGUgZXJyb3JzIG1vcmUgcmVhZGFibGUgKGxlc3MgYWxpYXNpbmcpXG4gICAyLiB0aGUgdHlwZXIgaW4gb2NhbWwgNC4wMSBhbGxvd3MgdGhpczpcblxuICAge1tcbiAgICAgbW9kdWxlIEEgPSBzdHJ1Y3RcbiAgICAgICB0eXBlIHQgPSB7YSA6IGludH1cbiAgICAgZW5kXG4gICAgIHR5cGUgdCA9IEEudFxuICAgICBsZXQgZiAoeCA6IHQpID0geC5hXG4gICBdfVxuXG4gICAoYWx0aG91Z2ggd2l0aCBXYXJuaW5nIDQwOiBhIGlzIHVzZWQgb3V0IG9mIHNjb3BlKVxuICAgd2hpY2ggbWVhbnMgdGhhdCBpZiBbdF93aXRoX3Blcm1dIHdhcyByZWFsbHkgYW4gYWxpYXMgb24gW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSxcbiAgIHBlb3BsZSBjb3VsZCBzYXkgW3Quc2V0dGVyXSBhbmQgYnJlYWsgdGhlIGFic3RyYWN0aW9uIHdpdGggbm8gaW5kaWNhdGlvbiB0aGF0XG4gICBzb21ldGhpbmcgdWdseSBpcyBnb2luZyBvbiBpbiB0aGUgc291cmNlIGNvZGUuXG4gICBUaGUgd2FybmluZyBpcyAoSSB0aGluaykgZm9yIHBlb3BsZSB3aG8gd2FudCB0byBtYWtlIHRoZWlyIGNvZGUgY29tcGF0aWJsZSB3aXRoXG4gICBwcmV2aW91cyB2ZXJzaW9ucyBvZiBvY2FtbCwgc28gd2UgbWF5IHZlcnkgd2VsbCB0dXJuIGl0IG9mZi5cblxuICAgVGhlIHR5cGUgdF93aXRoX3Blcm0gY291bGQgYWxzbyBoYXZlIGJlZW4gYSBbdW5pdCAtPiBGb3JfZ2VuZXJhdGVkX2NvZGUudF0gdG8gd29ya1xuICAgYXJvdW5kIHZhbHVlIHJlc3RyaWN0aW9uIGFuZCB0aGVuIFtGb3JfZ2VuZXJhdGVkX2NvZGUudF0gd291bGQgaGF2ZSBiZWVuIGEgcHJvcGVyXG4gICBhYnN0cmFjdCB0eXBlLCBidXQgaXQgbG9va3MgbGlrZSBpdCBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2UgKGZvciBleGFtcGxlLCBhIGZvbGQgb24gYVxuICAgcmVjb3JkIHR5cGUgd2l0aCA0MCBmaWVsZHMgd291bGQgYWN0dWFsbHkgYWxsb2NhdGUgdGhlIDQwIFtGb3JfZ2VuZXJhdGVkX2NvZGUudF0ncyBhdFxuICAgZXZlcnkgc2luZ2xlIGZvbGQuKSAqKVxuXG5tb2R1bGUgRm9yX2dlbmVyYXRlZF9jb2RlID0gc3RydWN0XG4gIHR5cGUgKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHQgPVxuICAgIHsgZm9yY2VfdmFyaWFuY2UgOiAncGVybSAtPiB1bml0XG4gICAgOyAoKiBmb3JjZSBbdF0gdG8gYmUgY29udHJhdmFyaWFudCBpbiBbJ3Blcm1dLCBiZWNhdXNlIHBoYW50b20gdHlwZSB2YXJpYWJsZXMgb25cbiAgICAgICAgIGNvbmNyZXRlIHR5cGVzIGRvbid0IHdvcmsgdGhhdCB3ZWxsIG90aGVyd2lzZSAodXNpbmcgOj4gY2FuIHJlbW92ZSB0aGVtIGVhc2lseSkgKilcbiAgICAgIG5hbWUgOiBzdHJpbmdcbiAgICA7IHNldHRlciA6ICgncmVjb3JkIC0+ICdmaWVsZCAtPiB1bml0KSBvcHRpb25cbiAgICA7IGdldHRlciA6ICdyZWNvcmQgLT4gJ2ZpZWxkXG4gICAgOyBmc2V0IDogJ3JlY29yZCAtPiAnZmllbGQgLT4gJ3JlY29yZFxuICAgIH1cblxuICBsZXQgb3BhcXVlX2lkZW50aXR5ID0gU3lzMC5vcGFxdWVfaWRlbnRpdHlcbmVuZFxuXG50eXBlICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybSA9XG4gIHwgRmllbGQgb2YgKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIEZvcl9nZW5lcmF0ZWRfY29kZS50XG5bQEB1bmJveGVkXVxuXG50eXBlICgncmVjb3JkLCAnZmllbGQpIHQgPSAoWyBgUmVhZCB8IGBTZXRfYW5kX2NyZWF0ZSBdLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtXG50eXBlICgncmVjb3JkLCAnZmllbGQpIHJlYWRvbmx5X3QgPSAoWyBgUmVhZCBdLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtXG5cbmxldCBuYW1lIChGaWVsZCBmaWVsZCkgPSBmaWVsZC5uYW1lXG5sZXQgZ2V0IChGaWVsZCBmaWVsZCkgciA9IGZpZWxkLmdldHRlciByXG5sZXQgZnNldCAoRmllbGQgZmllbGQpIHIgdiA9IGZpZWxkLmZzZXQgciB2XG5sZXQgc2V0dGVyIChGaWVsZCBmaWVsZCkgPSBmaWVsZC5zZXR0ZXJcblxudHlwZSAoJ3Blcm0sICdyZWNvcmQsICdyZXN1bHQpIHVzZXIgPVxuICB7IGYgOiAnZmllbGQuICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybSAtPiAncmVzdWx0IH1cblxubGV0IG1hcCAoRmllbGQgZmllbGQpIHIgfmYgPSBmaWVsZC5mc2V0IHIgKGYgKGZpZWxkLmdldHRlciByKSlcblxubGV0IHVwZGF0ZXIgKEZpZWxkIGZpZWxkKSA9XG4gIG1hdGNoIGZpZWxkLnNldHRlciB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBzZXR0ZXIgLT4gU29tZSAoZnVuIHIgfmYgLT4gc2V0dGVyIHIgKGYgKGZpZWxkLmdldHRlciByKSkpXG47O1xuIiwiKCogW1N0cmluZzBdIGRlZmluZXMgc3RyaW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpblxuICAgdGVybXMgb2YgW1N0ZGxpYi5TdHJpbmddLiBbU3RyaW5nMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mXG4gICBbU3RkbGliLlN0cmluZ10gdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBzdHJpbmcwLm1sIHNob3VsZFxuICAgdXNlIFtTdGRsaWIuU3RyaW5nXS4gIFtTdHJpbmcwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3NcbiAgIGJ1aWxkIG9yZGVyLlxuXG4gICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIHN0cmluZ3MsIGluY2x1ZGluZyB0aGUgc3Vic2NyaXB0IHN5bnRheCBbeC5baV1dIHdoaWNoXG4gICB0aGUgT0NhbWwgcGFyc2VyIGRlc3VnYXJzIGludG8gY2FsbHMgdG8gW1N0cmluZ10sIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5TdHJpbmddIGluXG4gICBidWlsZCBvcmRlciBzaG91bGQgZG9cblxuICAge1tcbiAgICAgbW9kdWxlIFN0cmluZyA9IFN0cmluZzBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgU3RyaW5nID0gU3RyaW5nMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50c1xuICAgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5TdHJpbmddLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGV4dGVybmFsIGdldCA6IChzdHJpbmdbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiAoc3RyaW5nW0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgOiAgKHN0cmluZ1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGNoYXJcbiAgICA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmVuZFxuXG5pbmNsdWRlIFN0cmluZ1xuXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxubGV0ICggXiApID0gKCBeIClcbmxldCBjYXBpdGFsaXplID0gU3RkbGliLlN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG5sZXQgY29tcGFyZSA9IFN0ZGxpYi5TdHJpbmcuY29tcGFyZVxubGV0IGVzY2FwZWQgPSBTdGRsaWIuU3RyaW5nLmVzY2FwZWRcbmxldCBsb3dlcmNhc2UgPSBTdGRsaWIuU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxubGV0IG1ha2UgPSBTdGRsaWIuU3RyaW5nLm1ha2VcbmxldCBzdWIgPSBTdGRsaWIuU3RyaW5nLnN1YlxubGV0IHVuY2FwaXRhbGl6ZSA9IFN0ZGxpYi5TdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpXG5sZXQgdW5zYWZlX2JsaXQgPSBTdGRsaWIuU3RyaW5nLnVuc2FmZV9ibGl0XG5sZXQgdXBwZXJjYXNlID0gU3RkbGliLlN0cmluZy51cHBlcmNhc2VfYXNjaWlcbmxldCBzcGxpdF9vbl9jaGFyID0gU3RkbGliLlN0cmluZy5zcGxpdF9vbl9jaGFyXG5cbmxldCBjb25jYXQgPyhzZXAgPSBcIlwiKSBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gXCJcIlxuICAoKiBUaGUgc3RkbGliIGRvZXMgbm90IHNwZWNpYWxpemUgdGhpcyBjYXNlIGJlY2F1c2UgaXQgY291bGQgYnJlYWsgZXhpc3RpbmcgcHJvamVjdHMuICopXG4gIHwgWyB4IF0gLT4geFxuICB8IGwgLT4gU3RkbGliLlN0cmluZy5jb25jYXQgfnNlcCBsXG47O1xuXG5sZXQgaXRlciB0IH5mOihmIFtAbG9jYWxdKSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBmICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0ZGxpYi5MZXhpbmcucG9zaXRpb24gPVxuICAgIHsgcG9zX2ZuYW1lIDogc3RyaW5nXG4gICAgOyBwb3NfbG51bSA6IGludFxuICAgIDsgcG9zX2JvbCA6IGludFxuICAgIDsgcG9zX2NudW0gOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlID1cbiAgICAoZnVuIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDAxXyBiX18wMDJfXG4gICAgICAgdGhlbiAwXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBtYXRjaCBjb21wYXJlX3N0cmluZyBhX18wMDFfLnBvc19mbmFtZSBiX18wMDJfLnBvc19mbmFtZSB3aXRoXG4gICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAwMV8ucG9zX2xudW0gYl9fMDAyXy5wb3NfbG51bSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAwMV8ucG9zX2JvbCBiX18wMDJfLnBvc19ib2wgd2l0aFxuICAgICAgICAgICAgICAgfCAwIC0+IGNvbXBhcmVfaW50IGFfXzAwMV8ucG9zX2NudW0gYl9fMDAyXy5wb3NfY251bVxuICAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgOiB0IC0+IHQgLT4gaW50KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBmdW4gaHN2IGFyZyAtPlxuICAgICAgbGV0IGhzdiA9XG4gICAgICAgIGxldCBoc3YgPVxuICAgICAgICAgIGxldCBoc3YgPVxuICAgICAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICAgICAgaGFzaF9mb2xkX3N0cmluZyBoc3YgYXJnLnBvc19mbmFtZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaGFzaF9mb2xkX2ludCBoc3YgYXJnLnBvc19sbnVtXG4gICAgICAgIGluXG4gICAgICAgIGhhc2hfZm9sZF9pbnQgaHN2IGFyZy5wb3NfYm9sXG4gICAgICBpblxuICAgICAgaGFzaF9mb2xkX2ludCBoc3YgYXJnLnBvc19jbnVtXG4gIDs7XG5cbiAgbGV0IChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jIGFyZyA9XG4gICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICAgIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1biB7IHBvc19mbmFtZSA9IHBvc19mbmFtZV9fMDA0X1xuICAgICAgICAgOyBwb3NfbG51bSA9IHBvc19sbnVtX18wMDZfXG4gICAgICAgICA7IHBvc19ib2wgPSBwb3NfYm9sX18wMDhfXG4gICAgICAgICA7IHBvc19jbnVtID0gcG9zX2NudW1fXzAxMF9cbiAgICAgICAgIH0gLT5cbiAgICAgIGxldCBibmRzX18wMDNfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMTFfID0gc2V4cF9vZl9pbnQgcG9zX2NudW1fXzAxMF8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBvc19jbnVtXCI7IGFyZ19fMDExXyBdIDo6IGJuZHNfXzAwM19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDNfID1cbiAgICAgICAgbGV0IGFyZ19fMDA5XyA9IHNleHBfb2ZfaW50IHBvc19ib2xfXzAwOF8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBvc19ib2xcIjsgYXJnX18wMDlfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDdfID0gc2V4cF9vZl9pbnQgcG9zX2xudW1fXzAwNl8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBvc19sbnVtXCI7IGFyZ19fMDA3XyBdIDo6IGJuZHNfXzAwM19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDNfID1cbiAgICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2Zfc3RyaW5nIHBvc19mbmFtZV9fMDA0XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2ZuYW1lXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwM19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDNfXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuKCogVGhpcyBpcyB0aGUgc2FtZSBmdW5jdGlvbiBhcyBQcHhfaGVyZS5saWZ0X3Bvc2l0aW9uX2FzX3N0cmluZy4gKilcbmxldCBtYWtlX2xvY2F0aW9uX3N0cmluZyB+cG9zX2ZuYW1lIH5wb3NfbG51bSB+cG9zX2NudW0gfnBvc19ib2wgPVxuICBTdHJpbmcuY29uY2F0XG4gICAgWyBwb3NfZm5hbWU7IFwiOlwiOyBJbnQudG9fc3RyaW5nIHBvc19sbnVtOyBcIjpcIjsgSW50LnRvX3N0cmluZyAocG9zX2NudW0gLSBwb3NfYm9sKSBdXG47O1xuXG5sZXQgdG9fc3RyaW5nIHsgU3RkbGliLkxleGluZy5wb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfY251bTsgcG9zX2JvbCB9ID1cbiAgbWFrZV9sb2NhdGlvbl9zdHJpbmcgfnBvc19mbmFtZSB+cG9zX2xudW0gfnBvc19jbnVtIH5wb3NfYm9sXG47O1xuXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIExpc3QwXG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgbGV0IHJlYyBsb29wIHQgZnN0IHNuZCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXYgZnN0LCByZXYgc25kXG4gICAgfCB4IDo6IHQgLT5cbiAgICAgIChtYXRjaCAoZiB4IDogXyBFaXRoZXIwLnQpIHdpdGhcbiAgICAgICB8IEZpcnN0IHkgLT4gbG9vcCB0ICh5IDo6IGZzdCkgc25kXG4gICAgICAgfCBTZWNvbmQgeSAtPiBsb29wIHQgZnN0ICh5IDo6IHNuZCkpXG4gIGluXG4gIGxvb3AgdCBbXSBbXSBbQG5vbnRhaWxdXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyMFxuXG50eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBTdGRsaWIucmVzdWx0ID1cbiAgfCBPayBvZiAnYVxuICB8IEVycm9yIG9mICdiXG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBlcXVhbCwgaGFzaF1cblxubGV0IHRfb2Zfc2V4cCA6XG4gICdhICdiLlxuICAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICdiKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gKCdhLCAnYikgdFxuICA9XG4gIGZ1biAodHlwZSBhX18wMTdfIGJfXzAxOF8pXG4gICAgICA6ICAoKFNleHBsaWIwLlNleHAudCAtPiBhX18wMTdfKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+IGJfXzAxOF8pIC0+IFNleHBsaWIwLlNleHAudFxuICAgICAgICAgIC0+IChhX18wMTdfLCBiX18wMThfKSB0KSAtPlxuICAgIGxldCBlcnJvcl9zb3VyY2VfXzAwNV8gPSBcInJlc3VsdC5tbC50XCIgaW5cbiAgICBmdW4gX29mX2FfXzAwMV8gX29mX2JfXzAwMl8gLT4gZnVuY3Rpb25cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwib2tcIiB8IFwiT2tcIikgYXMgX3RhZ19fMDA4XykgOjogc2V4cF9hcmdzX18wMDlfKSBhc1xuICAgICAgICBfc2V4cF9fMDA3XyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMDlfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMTBfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAxMV8gPSBfb2ZfYV9fMDAxXyBhcmcwX18wMTBfIGluXG4gICAgICAgICAgIE9rIHJlczBfXzAxMV9cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDVfXG4gICAgICAgICAgICAgX3RhZ19fMDA4X1xuICAgICAgICAgICAgIF9zZXhwX18wMDdfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJlcnJvclwiIHwgXCJFcnJvclwiKSBhcyBfdGFnX18wMTNfKSA6OiBzZXhwX2FyZ3NfXzAxNF8pIGFzXG4gICAgICAgIF9zZXhwX18wMTJfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxNF8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxNV8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDE2XyA9IF9vZl9iX18wMDJfIGFyZzBfXzAxNV8gaW5cbiAgICAgICAgICAgRXJyb3IgcmVzMF9fMDE2X1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNV9cbiAgICAgICAgICAgICBfdGFnX18wMTNfXG4gICAgICAgICAgICAgX3NleHBfXzAxMl8pXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJva1wiIHwgXCJPa1wiKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImVycm9yXCIgfCBcIkVycm9yXCIpIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICAgICB8IHNleHBfXzAwNF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuOztcblxubGV0IHNleHBfb2ZfdCA6XG4gICdhICdiLlxuICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2EsICdiKSB0IC0+IFNleHBsaWIwLlNleHAudFxuICA9XG4gIGZ1biAodHlwZSBhX18wMjVfIGJfXzAyNl8pXG4gICAgICA6ICAoKGFfXzAyNV8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoYl9fMDI2XyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgLT4gKGFfXzAyNV8sIGJfXzAyNl8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDE5XyBfb2ZfYl9fMDIwXyAtPiBmdW5jdGlvblxuICAgICAgfCBPayBhcmcwX18wMjFfIC0+XG4gICAgICAgIGxldCByZXMwX18wMjJfID0gX29mX2FfXzAxOV8gYXJnMF9fMDIxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPa1wiOyByZXMwX18wMjJfIF1cbiAgICAgIHwgRXJyb3IgYXJnMF9fMDIzXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI0XyA9IF9vZl9iX18wMjBfIGFyZzBfXzAyM18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXJyb3JcIjsgcmVzMF9fMDI0XyBdXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOlxuICAnYSAnYi5cbiAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIgLT5cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIk9rXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydhX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJFcnJvclwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxubGV0IGNvbXBhcmUgOlxuICAnYSAnYi4gKCdhIC0+ICdhIC0+IGludCkgLT4gKCdiIC0+ICdiIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICA9XG4gIGZ1biBfY21wX19hIF9jbXBfX2IgYV9fMDI3XyBiX18wMjhfIC0+XG4gIGlmIFN0ZGxpYi4oID09ICkgYV9fMDI3XyBiX18wMjhfXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBhX18wMjdfLCBiX18wMjhfIHdpdGhcbiAgICB8IE9rIF9hX18wMjlfLCBPayBfYl9fMDMwXyAtPiBfY21wX19hIF9hX18wMjlfIF9iX18wMzBfXG4gICAgfCBPayBfLCBfIC0+IC0xXG4gICAgfCBfLCBPayBfIC0+IDFcbiAgICB8IEVycm9yIF9hX18wMzFfLCBFcnJvciBfYl9fMDMyXyAtPiBfY21wX19iIF9hX18wMzFfIF9iX18wMzJfKVxuOztcblxubGV0IGVxdWFsIDpcbiAgJ2EgJ2IuICgnYSAtPiAnYSAtPiBib29sKSAtPiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGJvb2xcbiAgPVxuICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAzM18gYl9fMDM0XyAtPlxuICBpZiBTdGRsaWIuKCA9PSApIGFfXzAzM18gYl9fMDM0X1xuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYV9fMDMzXywgYl9fMDM0XyB3aXRoXG4gICAgfCBPayBfYV9fMDM1XywgT2sgX2JfXzAzNl8gLT4gX2NtcF9fYSBfYV9fMDM1XyBfYl9fMDM2X1xuICAgIHwgT2sgXywgXyAtPiBmYWxzZVxuICAgIHwgXywgT2sgXyAtPiBmYWxzZVxuICAgIHwgRXJyb3IgX2FfXzAzN18sIEVycm9yIF9iX18wMzhfIC0+IF9jbXBfX2IgX2FfXzAzN18gX2JfXzAzOF8pXG47O1xuXG5sZXQgaGFzaF9mb2xkX3RcbiAgOiB0eXBlIGEgYi5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGEgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gKGEsIGIpIHRcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9hIF9oYXNoX2ZvbGRfYiBoc3YgYXJnIC0+XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgT2sgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICB8IEVycm9yIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9iIGhzdiBfYTBcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBnbG9iYWxpemUgPSBnbG9iYWxpemVfcmVzdWx0XG5cbmluY2x1ZGUgTW9uYWQuTWFrZTJfbG9jYWwgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICBsZXQgYmluZCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgICAgfCBPayB4IC0+IGYgeFxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgICB8IE9rIHggLT4gT2sgKGYgeClcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgbGV0IHJldHVybiB4ID0gT2sgeFxuICBlbmQpXG5cbmxldCBpbnZhcmlhbnQgY2hlY2tfb2sgY2hlY2tfZXJyb3IgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIG9rIC0+IGNoZWNrX29rIG9rXG4gIHwgRXJyb3IgZXJyb3IgLT4gY2hlY2tfZXJyb3IgZXJyb3Jcbjs7XG5cbmxldCBmYWlsIHggPSBFcnJvciB4XG5sZXQgZmFpbGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGZhaWwgZm9ybWF0XG5cbmxldCBtYXBfZXJyb3IgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIF8gYXMgeCAtPiB4XG4gIHwgRXJyb3IgeCAtPiBFcnJvciAoZiB4KVxuOztcblxubW9kdWxlIEVycm9yID0gTW9uYWQuTWFrZTJfbG9jYWwgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2IsICdhKSB0XG5cbiAgICBsZXQgYmluZCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBPayBfIGFzIG9rIC0+IG9rXG4gICAgICB8IEVycm9yIGUgLT4gZiBlXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcF9lcnJvclxuICAgIGxldCByZXR1cm4gZSA9IEVycm9yIGVcbiAgZW5kKVxuXG5sZXQgaXNfb2sgPSBmdW5jdGlvblxuICB8IE9rIF8gLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19lcnJvciA9IGZ1bmN0aW9uXG4gIHwgT2sgXyAtPiBmYWxzZVxuICB8IEVycm9yIF8gLT4gdHJ1ZVxuOztcblxubGV0IG9rID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IFNvbWUgeFxuICB8IEVycm9yIF8gLT4gTm9uZVxuOztcblxubGV0IGVycm9yID0gZnVuY3Rpb25cbiAgfCBPayBfIC0+IE5vbmVcbiAgfCBFcnJvciB4IC0+IFNvbWUgeFxuOztcblxubGV0IG9mX29wdGlvbiBvcHQgfmVycm9yID1cbiAgbWF0Y2ggb3B0IHdpdGhcbiAgfCBTb21lIHggLT4gT2sgeFxuICB8IE5vbmUgLT4gRXJyb3IgZXJyb3Jcbjs7XG5cbmxldCBpdGVyIHYgfmYgPVxuICBtYXRjaCB2IHdpdGhcbiAgfCBPayB4IC0+IGYgeFxuICB8IEVycm9yIF8gLT4gKClcbjs7XG5cbmxldCBpdGVyX2Vycm9yIHYgfmYgPVxuICBtYXRjaCB2IHdpdGhcbiAgfCBPayBfIC0+ICgpXG4gIHwgRXJyb3IgeCAtPiBmIHhcbjs7XG5cbmxldCB0b19laXRoZXIgOiBfIHQgLT4gXyBFaXRoZXIudCA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiBGaXJzdCB4XG4gIHwgRXJyb3IgeCAtPiBTZWNvbmQgeFxuOztcblxubGV0IG9mX2VpdGhlciA6IF8gRWl0aGVyLnQgLT4gXyB0ID0gZnVuY3Rpb25cbiAgfCBGaXJzdCB4IC0+IE9rIHhcbiAgfCBTZWNvbmQgeCAtPiBFcnJvciB4XG47O1xuXG5sZXQgb2tfaWZfdHJ1ZSBib29sIH5lcnJvciA9IGlmIGJvb2wgdGhlbiBPayAoKSBlbHNlIEVycm9yIGVycm9yXG5cbmxldCB0cnlfd2l0aCBmID1cbiAgdHJ5IE9rIChmICgpKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIGV4blxuOztcblxubGV0IG9rX2V4biA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXhuIC0+IHJhaXNlIGV4blxuOztcblxubGV0IG9rX29yX2ZhaWx3aXRoID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBzdHIgLT4gZmFpbHdpdGggc3RyXG47O1xuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgKCdvaywgJ2VycikgX3Jlc3VsdCA9ICgnb2ssICdlcnIpIHQgPVxuICAgIHwgT2sgb2YgJ29rXG4gICAgfCBFcnJvciBvZiAnZXJyXG5cbiAgbGV0IGlzX2Vycm9yID0gaXNfZXJyb3JcbiAgbGV0IGlzX29rID0gaXNfb2tcbmVuZFxuXG5sZXQgY29tYmluZSB0MSB0MiB+b2sgfmVyciA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgT2sgXywgRXJyb3IgZSB8IEVycm9yIGUsIE9rIF8gLT4gRXJyb3IgZVxuICB8IE9rIG9rMSwgT2sgb2syIC0+IE9rIChvayBvazEgb2syKVxuICB8IEVycm9yIGVycjEsIEVycm9yIGVycjIgLT4gRXJyb3IgKGVyciBlcnIxIGVycjIpXG47O1xuXG5sZXQgY29tYmluZV9lcnJvcnMgbCA9XG4gIGxldCBvaywgZXJycyA9IExpc3QxLnBhcnRpdGlvbl9tYXAgbCB+Zjp0b19laXRoZXIgaW5cbiAgbWF0Y2ggZXJycyB3aXRoXG4gIHwgW10gLT4gT2sgb2tcbiAgfCBfIDo6IF8gLT4gRXJyb3IgZXJyc1xuOztcblxubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbCA9IG1hcCAoY29tYmluZV9lcnJvcnMgbCkgfmY6KGZ1biAoXyA6IHVuaXQgbGlzdCkgLT4gKCkpXG5cbigqIGRlcHJlY2F0ZWQgYmluZGluZyBmb3IgZXhwb3J0IG9ubHkgKilcbmxldCBva19mc3QgPSB0b19laXRoZXJcbiIsIigqKiBQcm92aWRlcyBnZW5lcmljIHNpZ25hdHVyZXMgZm9yIGNvbnRhaW5lciBkYXRhIHN0cnVjdHVyZXMuXG5cbiAgICBUaGVzZSBzaWduYXR1cmVzIGluY2x1ZGUgZnVuY3Rpb25zIChbaXRlcl0sIFtmb2xkXSwgW2V4aXN0c10sIFtmb3JfYWxsXSwgLi4uKSB0aGF0XG4gICAgeW91IHdvdWxkIGV4cGVjdCB0byBmaW5kIGluIGFueSBjb250YWluZXIuIFVzZWQgYnkgaW5jbHVkaW5nIFtDb250YWluZXIuUzBdIG9yXG4gICAgW0NvbnRhaW5lci5TMV0gaW4gdGhlIHNpZ25hdHVyZSBmb3IgZXZlcnkgY29udGFpbmVyLWxpa2UgZGF0YSBzdHJ1Y3R1cmUgKFtBcnJheV0sXG4gICAgW0xpc3RdLCBbU3RyaW5nXSwgLi4uKSB0byBlbnN1cmUgYSBjb25zaXN0ZW50IGludGVyZmFjZS4gKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgKCoqIFtDb250aW51ZV9vcl9zdG9wLnRdIGlzIHVzZWQgYnkgdGhlIFtmXSBhcmd1bWVudCB0byBbZm9sZF91bnRpbF0gaW4gb3JkZXIgdG9cbiAgICAgIGluZGljYXRlIHdoZXRoZXIgZm9sZGluZyBzaG91bGQgY29udGludWUsIG9yIHN0b3AgZWFybHkuXG5cbiAgICAgIEBjYW5vbmljYWwgQmFzZS5Db250YWluZXIuQ29udGludWVfb3Jfc3RvcFxuICAqKVxuICBtb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgICB8IENvbnRpbnVlIG9mICdhXG4gICAgICB8IFN0b3Agb2YgJ2JcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBFeHBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5Db250YWluZXIuU3VtbWFibGUgKilcbm1vZHVsZSB0eXBlIFN1bW1hYmxlID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqKiBUaGUgcmVzdWx0IG9mIHN1bW1pbmcgbm8gdmFsdWVzLiAqKVxuICB2YWwgemVybyA6IHRcblxuICAoKiogQW4gb3BlcmF0aW9uIHRoYXQgY29tYmluZXMgdHdvIFt0XSdzIGFuZCBoYW5kbGVzIFt6ZXJvICsgeF0gYnkganVzdCByZXR1cm5pbmcgW3hdLFxuICAgICAgYXMgd2VsbCBhcyBpbiB0aGUgc3ltbWV0cmljIGNhc2UuICopXG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG5lbmRcblxuKCoqIFNpZ25hdHVyZSBmb3IgbW9ub21vcnBoaWMgY29udGFpbmVyIC0gYSBjb250YWluZXIgZm9yIGEgc3BlY2lmaWMgZWxlbWVudCB0eXBlLCBlLmcuLFxuICAgIHN0cmluZywgd2hpY2ggaXMgYSBjb250YWluZXIgb2YgY2hhcmFjdGVycyAoW3R5cGUgZWx0ID0gY2hhcl0pIGFuZCBuZXZlciBvZiBhbnl0aGluZ1xuICAgIGVsc2UuICopXG5tb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICB0eXBlIHRcbiAgdHlwZSBlbHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIGVxdWFsaXR5IG9uIFtlbHRdcy4gKilcbiAgdmFsIG1lbSA6IHQgLT4gZWx0IC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogdCAtPiBib29sXG5cbiAgKCoqIFtpdGVyXSBtdXN0IGFsbG93IGV4Y2VwdGlvbnMgcmFpc2VkIGluIFtmXSB0byBlc2NhcGUsIHRlcm1pbmF0aW5nIHRoZSBpdGVyYXRpb25cbiAgICAgIGNsZWFubHkuICBUaGUgc2FtZSBob2xkcyBmb3IgYWxsIGZ1bmN0aW9ucyBiZWxvdyB0YWtpbmcgYW4gW2ZdLiAqKVxuICB2YWwgaXRlciA6IHQgLT4gZjooKGVsdCAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdLiAqKVxuICB2YWwgZm9sZCA6IHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+IGVsdCAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0gdGhhdCBydW5zIGluIHRoZVxuICAgICAgW1Jlc3VsdF0gbW9uYWQuICBJZiBbZl0gcmV0dXJucyBhbiBbRXJyb3IgX10sIHRoYXQgdmFsdWUgaXMgcmV0dXJuZWQgd2l0aG91dCBhbnlcbiAgICAgIGFkZGl0aW9uYWwgaW52b2NhdGlvbnMgb2YgW2ZdLiAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+IGVsdCAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGV4aXN0cyA6IHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB3aGljaCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBjb3VudCA6IHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gdCAtPiBmOigoZWx0IC0+ICdzdW0pW0Bsb2NhbF0pIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6IHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogdCAtPiBmOigoZWx0IC0+ICdhIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiB0IC0+IGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6IHQgLT4gZWx0IGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW4gKHJlc3AuIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudCBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZVxuICAgICAgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgW2ZvbGRdIHNvIGl0IGhhcyB0aGUgc2FtZVxuICAgICAgY29tcGxleGl0eSBhcyBbZm9sZF0uIFJldHVybnMgW05vbmVdIGlmZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiB0IC0+IGNvbXBhcmU6KChlbHQgLT4gZWx0IC0+IGludClbQGxvY2FsXSkgLT4gZWx0IG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0IDogdCAtPiBjb21wYXJlOigoZWx0IC0+IGVsdCAtPiBpbnQpW0Bsb2NhbF0pIC0+IGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMF9waGFudG9tID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgJ2EgdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgZXF1YWxpdHkgb24gW2VsdF1zLiAqKVxuICB2YWwgbWVtIDogXyB0IC0+IGVsdCAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogXyB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiBfIHQgLT4gZjooKGVsdCAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdLiAqKVxuICB2YWwgZm9sZCA6IF8gdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIF8gdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+IGVsdCAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50KVtAbG9jYWxdKVxuICAgIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogIF8gdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+IGVsdCAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiBfIHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6IF8gdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB3aGljaCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBjb3VudCA6IF8gdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gVGhlIG9yZGVyIGluIHdoaWNoIHRoZVxuICAgICAgZWxlbWVudHMgd2lsbCBiZSBzdW1tZWQgaXMgdW5zcGVjaWZpZWQuICopXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiBfIHRcbiAgICAtPiBmOigoZWx0IC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogXyB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gZWx0IG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSBmaXJzdCBldmFsdWF0aW9uIG9mIFtmXSB0aGF0IHJldHVybnMgW1NvbWVdLCBhbmQgcmV0dXJucyBbTm9uZV0gaWYgdGhlcmVcbiAgICAgIGlzIG5vIHN1Y2ggZWxlbWVudC4gICopXG4gIHZhbCBmaW5kX21hcCA6IF8gdCAtPiBmOigoZWx0IC0+ICdhIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiBfIHQgLT4gZWx0IGxpc3RcbiAgdmFsIHRvX2FycmF5IDogXyB0IC0+IGVsdCBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLCBvciBbTm9uZV0gaWYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuICBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudFxuICAgICAgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGUgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gKilcbiAgdmFsIG1pbl9lbHQgOiBfIHQgLT4gY29tcGFyZTooKGVsdCAtPiBlbHQgLT4gaW50KVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiBfIHQgLT4gY29tcGFyZTooKGVsdCAtPiBlbHQgLT4gaW50KVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5lbmRcblxuKCoqIFNpZ25hdHVyZSBmb3IgcG9seW1vcnBoaWMgY29udGFpbmVyLCBlLmcuLCBbJ2EgbGlzdF0gb3IgWydhIGFycmF5XS4gKilcbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgW2VxdWFsXS4gKilcbiAgdmFsIG1lbSA6ICdhIHQgLT4gJ2EgLT4gZXF1YWw6KCgnYSAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6ICdhIHQgLT4gZjooKCdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0gICopXG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGV4aXN0cyA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiAqKVxuICB2YWwgc3VtXG4gICAgOiAgKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pXG4gICAgLT4gJ2EgdFxuICAgIC0+IGY6KCgnYSAtPiAnc3VtKVtAbG9jYWxdKVxuICAgIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSBmaXJzdCBldmFsdWF0aW9uIG9mIFtmXSB0aGF0IHJldHVybnMgW1NvbWVdLCBhbmQgcmV0dXJucyBbTm9uZV0gaWYgdGhlcmVcbiAgICAgIGlzIG5vIHN1Y2ggZWxlbWVudC4gICopXG4gIHZhbCBmaW5kX21hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Igb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+ICdhIGxpc3RcbiAgdmFsIHRvX2FycmF5IDogJ2EgdCAtPiAnYSBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluaW11bSAocmVzcCBtYXhpbXVtKSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkXG4gICAgICBbY29tcGFyZV0gZnVuY3Rpb24sIG9yIFtOb25lXSBpZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gSW4gY2FzZSBvZiBhIHRpZSwgdGhlIGZpcnN0XG4gICAgICBlbGVtZW50IGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlIGNvbGxlY3Rpb24gaXMgcmV0dXJuZWQuIFRoZSBpbXBsZW1lbnRhdGlvblxuICAgICAgdXNlcyBbZm9sZF0gc28gaXQgaGFzIHRoZSBzYW1lIGNvbXBsZXhpdHkgYXMgW2ZvbGRdLiAqKVxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiAnYSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdwaGFudG9tKSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBbZXF1YWxdLiAqKVxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIC0+IGVxdWFsOigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XS4gKilcbiAgdmFsIGZvbGQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ3N1bSlbQGxvY2FsXSlcbiAgICAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSBmaXJzdCBldmFsdWF0aW9uIG9mIFtmXSB0aGF0IHJldHVybnMgW1NvbWVdLCBhbmQgcmV0dXJucyBbTm9uZV0gaWYgdGhlcmVcbiAgICAgIGlzIG5vIHN1Y2ggZWxlbWVudC4gICopXG4gIHZhbCBmaW5kX21hcCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudCBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZVxuICAgICAgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgW2ZvbGRdIHNvIGl0IGhhcyB0aGUgc2FtZSBjb21wbGV4aXR5XG4gICAgICBhcyBbZm9sZF0uIFJldHVybnMgW05vbmVdIGlmZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgR2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ3BoYW50b20pIHRcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSBlbHQgLT4gZXF1YWw6KCgnYSBlbHQgLT4gJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBmb2xkIDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSBlbHQgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIGVsdCAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50KVtAbG9jYWxdKVxuICAgIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIGVsdCAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGV4aXN0cyA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGwgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOigoJ2EgZWx0IC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gIHZhbCBmaW5kIDogKCdhLCBfKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgZmluZF9tYXAgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IGFycmF5XG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCgnYSBlbHQgLT4gJ2EgZWx0IC0+IGludClbQGxvY2FsXSkgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOigoJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpW0Bsb2NhbF0pIC0+ICdhIGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMF93aXRoX2NyZWF0b3JzID0gc2lnXG4gIGluY2x1ZGUgUzBcblxuICB2YWwgb2ZfbGlzdCA6IGVsdCBsaXN0IC0+IHRcbiAgdmFsIG9mX2FycmF5IDogZWx0IGFycmF5IC0+IHRcblxuICAoKiogRS5nLiwgW2FwcGVuZCAob2ZfbGlzdCBbYTsgYl0pIChvZl9saXN0IFtjOyBkOyBlXSldIGlzIFtvZl9saXN0IFthOyBiOyBjOyBkOyBlXV0gKilcbiAgdmFsIGFwcGVuZCA6IHQgLT4gdCAtPiB0XG5cbiAgKCoqIENvbmNhdGVuYXRlcyBhIG5lc3RlZCBjb250YWluZXIuIFRoZSBlbGVtZW50cyBvZiB0aGUgaW5uZXIgY29udGFpbmVycyBhcmVcbiAgICAgIGNvbmNhdGVuYXRlZCB0b2dldGhlciBpbiBvcmRlciB0byBnaXZlIHRoZSByZXN1bHQuICopXG4gIHZhbCBjb25jYXQgOiB0IGxpc3QgLT4gdFxuXG4gICgqKiBbbWFwIGYgKG9mX2xpc3QgW2ExOyAuLi47IGFuXSldIGFwcGxpZXMgW2ZdIHRvIFthMV0sIFthMl0sIC4uLiwgW2FuXSwgaW4gb3JkZXIsIGFuZFxuICAgICAgYnVpbGRzIGEgcmVzdWx0IGVxdWl2YWxlbnQgdG8gW29mX2xpc3QgW2YgYTE7IC4uLjsgZiBhbl1dLiAqKVxuICB2YWwgbWFwIDogdCAtPiBmOigoZWx0IC0+IGVsdClbQGxvY2FsXSkgLT4gdFxuXG4gICgqKiBbZmlsdGVyIHQgfmZdIHJldHVybnMgYWxsIHRoZSBlbGVtZW50cyBvZiBbdF0gdGhhdCBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW2ZdLiAqKVxuICB2YWwgZmlsdGVyIDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IHRcblxuICAoKiogW2ZpbHRlcl9tYXAgdCB+Zl0gYXBwbGllcyBbZl0gdG8gZXZlcnkgW3hdIGluIFt0XS4gVGhlIHJlc3VsdCBjb250YWlucyBldmVyeSBbeV0gZm9yXG4gICAgICB3aGljaCBbZiB4XSByZXR1cm5zIFtTb21lIHldLiAqKVxuICB2YWwgZmlsdGVyX21hcCA6IHQgLT4gZjooKGVsdCAtPiBlbHQgb3B0aW9uKVtAbG9jYWxdKSAtPiB0XG5cbiAgKCoqIFtjb25jYXRfbWFwIHQgfmZdIGlzIGVxdWl2YWxlbnQgdG8gW2NvbmNhdCAobWFwIHQgfmYpXS4gKilcbiAgdmFsIGNvbmNhdF9tYXAgOiB0IC0+IGY6KChlbHQgLT4gdClbQGxvY2FsXSkgLT4gdFxuXG4gICgqKiBbcGFydGl0aW9uX3RmIHQgfmZdIHJldHVybnMgYSBwYWlyIFt0MSwgdDJdLCB3aGVyZSBbdDFdIGlzIGFsbCBlbGVtZW50cyBvZiBbdF0gdGhhdFxuICAgICAgc2F0aXNmeSBbZl0sIGFuZCBbdDJdIGlzIGFsbCBlbGVtZW50cyBvZiBbdF0gdGhhdCBkbyBub3Qgc2F0aXNmeSBbZl0uIFRoZSBcInRmXCJcbiAgICAgIHN1ZmZpeCBpcyBtbmVtb25pYyB0byByZW1pbmQgcmVhZGVycyB0aGF0IHRoZSByZXN1bHQgaXMgKHRydWVzLCBmYWxzZXMpLiAqKVxuICB2YWwgcGFydGl0aW9uX3RmIDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IHQgKiB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fbWFwIHQgfmZdIHBhcnRpdGlvbnMgW3RdIGFjY29yZGluZyB0byBbZl0uICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwIDogdCAtPiBmOigoZWx0IC0+IChlbHQsIGVsdCkgRWl0aGVyMC50KVtAbG9jYWxdKSAtPiB0ICogdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxX3dpdGhfY3JlYXRvcnMgPSBzaWdcbiAgaW5jbHVkZSBTMVxuXG4gIHZhbCBvZl9saXN0IDogJ2EgbGlzdCAtPiAnYSB0XG4gIHZhbCBvZl9hcnJheSA6ICdhIGFycmF5IC0+ICdhIHRcblxuICAoKiogRS5nLiwgW2FwcGVuZCAob2ZfbGlzdCBbMTsgMl0pIChvZl9saXN0IFszOyA0OyA1XSldIGlzIFtvZl9saXN0IFsxOyAyOyAzOyA0OyA1XV0gKilcbiAgdmFsIGFwcGVuZCA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG5cbiAgKCoqIENvbmNhdGVuYXRlcyBhIG5lc3RlZCBjb250YWluZXIuIFRoZSBlbGVtZW50cyBvZiB0aGUgaW5uZXIgY29udGFpbmVycyBhcmVcbiAgICAgIGNvbmNhdGVuYXRlZCB0b2dldGhlciBpbiBvcmRlciB0byBnaXZlIHRoZSByZXN1bHQuICopXG4gIHZhbCBjb25jYXQgOiAnYSB0IHQgLT4gJ2EgdFxuXG4gICgqKiBbbWFwIGYgKG9mX2xpc3QgW2ExOyAuLi47IGFuXSldIGFwcGxpZXMgW2ZdIHRvIFthMV0sIFthMl0sIC4uLiwgW2FuXSwgaW4gb3JkZXIsIGFuZFxuICAgICAgYnVpbGRzIGEgcmVzdWx0IGVxdWl2YWxlbnQgdG8gW29mX2xpc3QgW2YgYTE7IC4uLjsgZiBhbl1dLiAqKVxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcblxuICAoKiogW2ZpbHRlciB0IH5mXSByZXR1cm5zIGFsbCB0aGUgZWxlbWVudHMgb2YgW3RdIHRoYXQgc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtmXS4gKilcbiAgdmFsIGZpbHRlciA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIHRcblxuICAoKiogW2ZpbHRlcl9tYXAgdCB+Zl0gYXBwbGllcyBbZl0gdG8gZXZlcnkgW3hdIGluIFt0XS4gVGhlIHJlc3VsdCBjb250YWlucyBldmVyeSBbeV0gZm9yXG4gICAgICB3aGljaCBbZiB4XSByZXR1cm5zIFtTb21lIHldLiAqKVxuICB2YWwgZmlsdGVyX21hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2IgdFxuXG4gICgqKiBbY29uY2F0X21hcCB0IH5mXSBpcyBlcXVpdmFsZW50IHRvIFtjb25jYXQgKG1hcCB0IH5mKV0uICopXG4gIHZhbCBjb25jYXRfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IgdClbQGxvY2FsXSkgLT4gJ2IgdFxuXG4gICgqKiBbcGFydGl0aW9uX3RmIHQgfmZdIHJldHVybnMgYSBwYWlyIFt0MSwgdDJdLCB3aGVyZSBbdDFdIGlzIGFsbCBlbGVtZW50cyBvZiBbdF0gdGhhdFxuICAgICAgc2F0aXNmeSBbZl0sIGFuZCBbdDJdIGlzIGFsbCBlbGVtZW50cyBvZiBbdF0gdGhhdCBkbyBub3Qgc2F0aXNmeSBbZl0uIFRoZSBcInRmXCJcbiAgICAgIHN1ZmZpeCBpcyBtbmVtb25pYyB0byByZW1pbmQgcmVhZGVycyB0aGF0IHRoZSByZXN1bHQgaXMgKHRydWVzLCBmYWxzZXMpLiAqKVxuICB2YWwgcGFydGl0aW9uX3RmIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdCAqICdhIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXAgdCB+Zl0gcGFydGl0aW9ucyBbdF0gYWNjb3JkaW5nIHRvIFtmXS4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAoJ2IsICdjKSBFaXRoZXIwLnQpW0Bsb2NhbF0pIC0+ICdiIHQgKiAnYyB0XG5lbmRcblxubW9kdWxlIHR5cGUgR2VuZXJpY193aXRoX2NyZWF0b3JzID0gc2lnXG4gIHR5cGUgKF8sIF8pIGNvbmNhdFxuXG4gIGluY2x1ZGUgR2VuZXJpY1xuXG4gIHZhbCBvZl9saXN0IDogJ2EgZWx0IGxpc3QgLT4gKCdhLCBfKSB0XG4gIHZhbCBvZl9hcnJheSA6ICdhIGVsdCBhcnJheSAtPiAoJ2EsIF8pIHRcbiAgdmFsIGFwcGVuZCA6ICgnYSwgJ3ApIHQgLT4gKCdhLCAncCkgdCAtPiAoJ2EsICdwKSB0XG4gIHZhbCBjb25jYXQgOiAoKCdhLCAncCkgdCwgJ3ApIGNvbmNhdCAtPiAoJ2EsICdwKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdwKSB0IC0+IGY6KCgnYSBlbHQgLT4gJ2IgZWx0KVtAbG9jYWxdKSAtPiAoJ2IsICdwKSB0XG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdwKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAncCkgdFxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgJ3ApIHQgLT4gZjooKCdhIGVsdCAtPiAnYiBlbHQgb3B0aW9uKVtAbG9jYWxdKSAtPiAoJ2IsICdwKSB0XG4gIHZhbCBjb25jYXRfbWFwIDogKCdhLCAncCkgdCAtPiBmOigoJ2EgZWx0IC0+ICgnYiwgJ3ApIHQpW0Bsb2NhbF0pIC0+ICgnYiwgJ3ApIHRcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICgnYSwgJ3ApIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdwKSB0ICogKCdhLCAncCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgKCdhLCAncCkgdFxuICAgIC0+IGY6KCgnYSBlbHQgLT4gKCdiIGVsdCwgJ2MgZWx0KSBFaXRoZXIwLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCAncCkgdCAqICgnYywgJ3ApIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlX2dlbl9hcmcgPSBzaWdcbiAgdHlwZSAoJ2EsICdwaGFudG9tKSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGZvbGQgOiAoJ2EsICdwaGFudG9tKSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSBlbHQgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBUaGUgW2l0ZXJdIGFyZ3VtZW50IHRvIFtDb250YWluZXIuTWFrZV0gc3BlY2lmaWVzIGhvdyB0byBpbXBsZW1lbnQgdGhlXG4gICAgICBjb250YWluZXIncyBbaXRlcl0gZnVuY3Rpb24uICBbYERlZmluZV91c2luZ19mb2xkXSBtZWFucyB0byBkZWZpbmUgW2l0ZXJdXG4gICAgICB2aWE6XG5cbiAgICAgIHtbXG4gICAgICAgIGl0ZXIgdCB+ZiA9IENvbnRhaW5lci5pdGVyIH5mb2xkIHQgfmZcbiAgICAgIF19XG5cbiAgICAgIFtgQ3VzdG9tXSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHByZXN1bWFibHkgd2l0aCBzb21ldGhpbmcgbW9yZVxuICAgICAgZWZmaWNpZW50LiAgU2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgW0NvbnRhaW5lci5NYWtlXSBhcmUgZGVmaW5lZCBpblxuICAgICAgdGVybXMgb2YgW2l0ZXJdLCBzbyBwYXNzaW5nIGluIGEgbW9yZSBlZmZpY2llbnQgW2l0ZXJdIHdpbGwgaW1wcm92ZSB0aGVpciBlZmZpY2llbmN5XG4gICAgICBhcyB3ZWxsLiAqKVxuICB2YWwgaXRlclxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgICAgIHwgYEN1c3RvbSBvZiAoJ2EsICdwaGFudG9tKSB0IC0+IGY6KCgnYSBlbHQgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICAgICAgXVxuXG4gICgqKiBUaGUgW2xlbmd0aF0gYXJndW1lbnQgdG8gW0NvbnRhaW5lci5NYWtlXSBzcGVjaWZpZXMgaG93IHRvIGltcGxlbWVudCB0aGVcbiAgICAgIGNvbnRhaW5lcidzIFtsZW5ndGhdIGZ1bmN0aW9uLiAgW2BEZWZpbmVfdXNpbmdfZm9sZF0gbWVhbnMgdG8gZGVmaW5lXG4gICAgICBbbGVuZ3RoXSB2aWE6XG5cbiAgICAgIHtbXG4gICAgICAgIGxlbmd0aCB0IH5mID0gQ29udGFpbmVyLmxlbmd0aCB+Zm9sZCB0IH5mXG4gICAgICBdfVxuXG4gICAgICBbYEN1c3RvbV0gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBwcmVzdW1hYmx5IHdpdGggc29tZXRoaW5nIG1vcmVcbiAgICAgIGVmZmljaWVudC4gIFNldmVyYWwgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtDb250YWluZXIuTWFrZV0gYXJlIGRlZmluZWQgaW5cbiAgICAgIHRlcm1zIG9mIFtsZW5ndGhdLCBzbyBwYXNzaW5nIGluIGEgbW9yZSBlZmZpY2llbnQgW2xlbmd0aF0gd2lsbCBpbXByb3ZlIHRoZWlyXG4gICAgICBlZmZpY2llbmN5IGFzIHdlbGwuICopXG4gIHZhbCBsZW5ndGggOiBbIGBEZWZpbmVfdXNpbmdfZm9sZCB8IGBDdXN0b20gb2YgKCdhLCAncGhhbnRvbSkgdCAtPiBpbnQgXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2VfYXJnID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgTWFrZV9nZW5fYXJnIHdpdGggdHlwZSAoJ2EsIF8pIHQgOj0gJ2EgdCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2FcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlMF9hcmcgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgZW5kXG5cbiAgdHlwZSB0XG5cbiAgaW5jbHVkZSBNYWtlX2dlbl9hcmcgd2l0aCB0eXBlICgnYSwgXykgdCA6PSB0IGFuZCB0eXBlICdhIGVsdCA6PSBFbHQudFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2VfY29tbW9uX3dpdGhfY3JlYXRvcnNfYXJnID0gc2lnXG4gIGluY2x1ZGUgTWFrZV9nZW5fYXJnXG5cbiAgdHlwZSAoXywgXykgY29uY2F0XG5cbiAgdmFsIG9mX2xpc3QgOiAnYSBlbHQgbGlzdCAtPiAoJ2EsIF8pIHRcbiAgdmFsIG9mX2FycmF5IDogJ2EgZWx0IGFycmF5IC0+ICgnYSwgXykgdFxuICB2YWwgY29uY2F0IDogKCgnYSwgXykgdCwgXykgY29uY2F0IC0+ICgnYSwgXykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnNfYXJnID0gc2lnXG4gIGluY2x1ZGUgTWFrZV9jb21tb25fd2l0aF9jcmVhdG9yc19hcmdcblxuICB2YWwgY29uY2F0X29mX2FycmF5IDogJ2EgYXJyYXkgLT4gKCdhLCBfKSBjb25jYXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlX3dpdGhfY3JlYXRvcnNfYXJnID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGVcbiAgICBNYWtlX2NvbW1vbl93aXRoX2NyZWF0b3JzX2FyZ1xuICAgIHdpdGggdHlwZSAoJ2EsIF8pIHQgOj0gJ2EgdFxuICAgICBhbmQgdHlwZSAnYSBlbHQgOj0gJ2FcbiAgICAgYW5kIHR5cGUgKCdhLCBfKSBjb25jYXQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2UwX3dpdGhfY3JlYXRvcnNfYXJnID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIGVuZFxuXG4gIHR5cGUgdFxuXG4gIGluY2x1ZGVcbiAgICBNYWtlX2NvbW1vbl93aXRoX2NyZWF0b3JzX2FyZ1xuICAgIHdpdGggdHlwZSAoJ2EsIF8pIHQgOj0gdFxuICAgICBhbmQgdHlwZSAnYSBlbHQgOj0gRWx0LnRcbiAgICAgYW5kIHR5cGUgKCdhLCBfKSBjb25jYXQgOj0gJ2EgbGlzdFxuZW5kXG5cbm1vZHVsZSB0eXBlIERlcml2ZWQgPSBzaWdcbiAgKCoqIEdlbmVyaWMgZGVmaW5pdGlvbnMgb2YgY29udGFpbmVyIG9wZXJhdGlvbnMgaW4gdGVybXMgb2YgW2ZvbGRdLlxuXG4gICAgICBFLmcuOiBbaXRlciB+Zm9sZCB0IH5mID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgYSAtPiBmIGEpXS4gKilcblxuICB0eXBlICgndCwgJ2EsICdhY2MpIGZvbGQgPSAndCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuICB0eXBlICgndCwgJ2EpIGl0ZXIgPSAndCAtPiBmOigoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICB0eXBlICd0IGxlbmd0aCA9ICd0IC0+IGludFxuXG4gIHZhbCBpdGVyIDogZm9sZDooJ3QsICdhLCB1bml0KSBmb2xkIC0+ICgndCwgJ2EpIGl0ZXJcbiAgdmFsIGNvdW50IDogZm9sZDooJ3QsICdhLCBpbnQpIGZvbGQgLT4gJ3QgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gIHZhbCBtaW5fZWx0XG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYSBvcHRpb24pIGZvbGRcbiAgICAtPiAndFxuICAgIC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhIG9wdGlvbikgZm9sZFxuICAgIC0+ICd0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbGVuZ3RoIDogZm9sZDooJ3QsIF8sIGludCkgZm9sZCAtPiAndCAtPiBpbnRcbiAgdmFsIHRvX2xpc3QgOiBmb2xkOigndCwgJ2EsICdhIGxpc3QpIGZvbGQgLT4gJ3QgLT4gJ2EgbGlzdFxuXG4gIHZhbCBzdW1cbiAgICA6ICBmb2xkOigndCwgJ2EsICdzdW0pIGZvbGRcbiAgICAtPiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAndFxuICAgIC0+IGY6KCgnYSAtPiAnc3VtKVtAbG9jYWxdKVxuICAgIC0+ICdzdW1cblxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhY2MpIGZvbGRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50KVtAbG9jYWxdKVxuICAgIC0+ICd0XG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYWNjKSBmb2xkXG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICd0XG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIEdlbmVyaWMgZGVmaW5pdGlvbnMgb2YgY29udGFpbmVyIG9wZXJhdGlvbnMgaW4gdGVybXMgb2YgW2l0ZXJdIGFuZCBbbGVuZ3RoXS4gKilcblxuICB2YWwgaXNfZW1wdHkgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gYm9vbFxuICB2YWwgbWVtIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+ICdhIC0+IGVxdWFsOigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmaW5kIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfbWFwIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuICB2YWwgdG9fYXJyYXkgOiBsZW5ndGg6J3QgbGVuZ3RoIC0+IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiAnYSBhcnJheVxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbnRhaW5lciA9IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgRXhwb3J0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMwID0gUzBcbiAgbW9kdWxlIHR5cGUgUzBfcGhhbnRvbSA9IFMwX3BoYW50b21cbiAgbW9kdWxlIHR5cGUgUzBfd2l0aF9jcmVhdG9ycyA9IFMwX3dpdGhfY3JlYXRvcnNcbiAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICBtb2R1bGUgdHlwZSBTMV9waGFudG9tID0gUzFfcGhhbnRvbVxuICBtb2R1bGUgdHlwZSBTMV93aXRoX2NyZWF0b3JzID0gUzFfd2l0aF9jcmVhdG9yc1xuICBtb2R1bGUgdHlwZSBEZXJpdmVkID0gRGVyaXZlZFxuICBtb2R1bGUgdHlwZSBHZW5lcmljID0gR2VuZXJpY1xuICBtb2R1bGUgdHlwZSBHZW5lcmljX3dpdGhfY3JlYXRvcnMgPSBHZW5lcmljX3dpdGhfY3JlYXRvcnNcbiAgbW9kdWxlIHR5cGUgU3VtbWFibGUgPSBTdW1tYWJsZVxuXG4gIGluY2x1ZGUgRGVyaXZlZFxuXG4gICgqKiBUaGUgaWRpb20gZm9yIHVzaW5nIFtDb250YWluZXIuTWFrZV0gaXMgdG8gYmluZCB0aGUgcmVzdWx0aW5nIG1vZHVsZSBhbmQgdG9cbiAgICAgIGV4cGxpY2l0bHkgaW1wb3J0IGVhY2ggb2YgdGhlIGZ1bmN0aW9ucyB0aGF0IG9uZSB3YW50czpcblxuICAgICAge1tcbiAgICAgICAgbW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0IC4uLiBlbmQpXG4gICAgICAgIGxldCBjb3VudCAgICA9IEMuY291bnRcbiAgICAgICAgbGV0IGV4aXN0cyAgID0gQy5leGlzdHNcbiAgICAgICAgbGV0IGZpbmQgICAgID0gQy5maW5kXG4gICAgICAgICgqIC4uLiAqKVxuICAgICAgXX1cblxuICAgICAgVGhpcyBpcyBwcmVmZXJhYmxlIHRvOlxuXG4gICAgICB7W1xuICAgICAgICBpbmNsdWRlIENvbnRhaW5lci5NYWtlIChzdHJ1Y3QgLi4uIGVuZClcbiAgICAgIF19XG5cbiAgICAgIGJlY2F1c2UgdGhlIFtpbmNsdWRlXSBtYWtlcyBpdCB0b28gZWFzeSB0byBzaGFkb3cgc3BlY2lhbGl6ZWQgaW1wbGVtZW50YXRpb25zIG9mXG4gICAgICBjb250YWluZXIgZnVuY3Rpb25zIChbbGVuZ3RoXSBiZWluZyBhIGNvbW1vbiBvbmUpLlxuXG4gICAgICBbQ29udGFpbmVyLk1ha2UwXSBpcyBsaWtlIFtDb250YWluZXIuTWFrZV0sIGJ1dCBmb3IgbW9ub21vcnBoaWMgY29udGFpbmVycyBsaWtlXG4gICAgICBbc3RyaW5nXS4gKilcbiAgbW9kdWxlIE1ha2UgKFQgOiBNYWtlX2FyZykgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBULnRcblxuICBtb2R1bGUgTWFrZTAgKFQgOiBNYWtlMF9hcmcpIDogUzAgd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGVsdCA6PSBULkVsdC50XG5cbiAgbW9kdWxlIE1ha2VfZ2VuIChUIDogTWFrZV9nZW5fYXJnKSA6XG4gICAgR2VuZXJpYyB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnQgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0XG5cbiAgbW9kdWxlIE1ha2Vfd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2Vfd2l0aF9jcmVhdG9yc19hcmcpIDpcbiAgICBTMV93aXRoX2NyZWF0b3JzIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudFxuXG4gIG1vZHVsZSBNYWtlMF93aXRoX2NyZWF0b3JzIChUIDogTWFrZTBfd2l0aF9jcmVhdG9yc19hcmcpIDpcbiAgICBTMF93aXRoX2NyZWF0b3JzIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBlbHQgOj0gVC5FbHQudFxuXG4gIG1vZHVsZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChUIDogTWFrZV9nZW5fd2l0aF9jcmVhdG9yc19hcmcpIDpcbiAgICBHZW5lcmljX3dpdGhfY3JlYXRvcnNcbiAgICB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnRcbiAgICAgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0XG4gICAgIGFuZCB0eXBlICgnYSwgJ3BoYW50b20pIGNvbmNhdCA6PSAoJ2EsICdwaGFudG9tKSBULmNvbmNhdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIEVpdGhlciA9IEVpdGhlcjBcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgQ29udGFpbmVyX2ludGZcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxudHlwZSAoJ3QsICdhLCAnYWNjdW0pIGZvbGQgPVxuICAndCAtPiBpbml0OidhY2N1bSAtPiBmOigoJ2FjY3VtIC0+ICdhIC0+ICdhY2N1bSlbQGxvY2FsXSkgLT4gJ2FjY3VtXG5cbnR5cGUgKCd0LCAnYSkgaXRlciA9ICd0IC0+IGY6KCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG50eXBlICd0IGxlbmd0aCA9ICd0IC0+IGludFxuXG5sZXQgaXRlciB+KGZvbGQgOiAoXywgXywgXykgZm9sZCkgdCB+ZiA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgLT4gZiBhKSBbQG5vbnRhaWxdXG5sZXQgY291bnQgfmZvbGQgdCB+ZiA9IGZvbGQgdCB+aW5pdDowIH5mOihmdW4gbiBhIC0+IGlmIGYgYSB0aGVuIG4gKyAxIGVsc2UgbikgW0Bub250YWlsXVxuXG5sZXQgc3VtICh0eXBlIGEpIH5mb2xkIChtb2R1bGUgTSA6IFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gYSkgdCB+ZiA9XG4gIGZvbGQgdCB+aW5pdDpNLnplcm8gfmY6KGZ1biBuIGEgLT4gTS4oICsgKSBuIChmIGEpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdCA9XG4gIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgIFJlc3VsdC5Pa1xuICAgICAgKGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyBpdGVtIC0+XG4gICAgICAgICBtYXRjaCBmIGFjYyBpdGVtIHdpdGhcbiAgICAgICAgIHwgUmVzdWx0Lk9rIHggLT4geFxuICAgICAgICAgfCBFcnJvciBfIGFzIGUgLT4gcmV0dXJuIGUpKSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgfmZpbmlzaCB0ID1cbiAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgZmluaXNoXG4gICAgICAoZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIGl0ZW0gLT5cbiAgICAgICAgIG1hdGNoIGYgYWNjIGl0ZW0gd2l0aFxuICAgICAgICAgfCBDb250aW51ZV9vcl9zdG9wLkNvbnRpbnVlIHggLT4geFxuICAgICAgICAgfCBTdG9wIHggLT4gcmV0dXJuIHgpKSkgW0Bub250YWlsXVxuOztcblxubGV0IG1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZSA9XG4gIGZvbGQgdCB+aW5pdDpOb25lIH5mOihmdW4gYWNjIGVsdCAtPlxuICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgZWx0XG4gICAgfCBTb21lIG1pbiAtPiBpZiBjb21wYXJlIG1pbiBlbHQgPiAwIHRoZW4gU29tZSBlbHQgZWxzZSBhY2MpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmUgPVxuICBmb2xkIHQgfmluaXQ6Tm9uZSB+ZjooZnVuIGFjYyBlbHQgLT5cbiAgICBtYXRjaCBhY2Mgd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIGVsdFxuICAgIHwgU29tZSBtYXggLT4gaWYgY29tcGFyZSBtYXggZWx0IDwgMCB0aGVuIFNvbWUgZWx0IGVsc2UgYWNjKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbGVuZ3RoIH5mb2xkIGMgPSBmb2xkIGMgfmluaXQ6MCB+ZjooZnVuIGFjYyBfIC0+IGFjYyArIDEpXG5cbmxldCBpc19lbXB0eSB+aXRlciBjID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4gXyAtPiByLnJldHVybiBmYWxzZSk7XG4gICAgdHJ1ZSlcbjs7XG5cbmxldCBtZW0gfml0ZXIgYyB4IH5lcXVhbCA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHkgLT4gaWYgZXF1YWwgeCB5IHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBleGlzdHMgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb3JfYWxsIH5pdGVyIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biB4IC0+IGlmIG5vdCAoZiB4KSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9tYXAgfml0ZXIgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgdCB+ZjooZnVuIHggLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIGFzIHJlcyAtPiByLnJldHVybiByZXMpO1xuICAgIE5vbmUpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kIH5pdGVyIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIHIucmV0dXJuIChTb21lIHgpKTtcbiAgICBOb25lKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgdG9fbGlzdCB+Zm9sZCBjID0gTGlzdC5yZXYgKGZvbGQgYyB+aW5pdDpbXSB+ZjooZnVuIGFjYyB4IC0+IHggOjogYWNjKSlcblxubGV0IHRvX2FycmF5IH5sZW5ndGggfml0ZXIgYyA9XG4gIGxldCBhcnJheSA9IHJlZiBbfHxdIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgaXRlciBjIH5mOihmdW4geCAtPlxuICAgIGlmICFpID0gMCB0aGVuIGFycmF5IDo9IEFycmF5LmNyZWF0ZSB+bGVuOihsZW5ndGggYykgeDtcbiAgICAhYXJyYXkuKCFpKSA8LSB4O1xuICAgIGluY3IgaSk7XG4gICFhcnJheVxuOztcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogTWFrZV9nZW5fYXJnKSA6XG4gIEdlbmVyaWMgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50IGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdCA9XG5zdHJ1Y3RcbiAgbGV0IGZvbGQgPSBULmZvbGRcblxuICBsZXQgaXRlciA9XG4gICAgbWF0Y2ggVC5pdGVyIHdpdGhcbiAgICB8IGBDdXN0b20gaXRlciAtPiBpdGVyXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmYgLT4gaXRlciB+Zm9sZCB0IH5mXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCA9XG4gICAgbWF0Y2ggVC5sZW5ndGggd2l0aFxuICAgIHwgYEN1c3RvbSBsZW5ndGggLT4gbGVuZ3RoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgLT4gbGVuZ3RoIH5mb2xkIHRcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgdCA9IGlzX2VtcHR5IH5pdGVyIHRcbiAgbGV0IG1lbSB0IHggfmVxdWFsID0gbWVtIH5pdGVyIHQgeCB+ZXF1YWxcbiAgbGV0IHN1bSBtIHQgPSBzdW0gfmZvbGQgbSB0XG4gIGxldCBjb3VudCB0IH5mID0gY291bnQgfmZvbGQgdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHMgfml0ZXIgdCB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbCB+aXRlciB0IH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXAgfml0ZXIgdCB+ZlxuICBsZXQgZmluZCB0IH5mID0gZmluZCB+aXRlciB0IH5mXG4gIGxldCB0b19saXN0IHQgPSB0b19saXN0IH5mb2xkIHRcbiAgbGV0IHRvX2FycmF5IHQgPSB0b19hcnJheSB+bGVuZ3RoIH5pdGVyIHRcbiAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IG1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gbWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gZm9sZF9yZXN1bHQgdCB+Zm9sZCB+aW5pdCB+ZlxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBmb2xkX3VudGlsIHQgfmZvbGQgfmluaXQgfmYgfmZpbmlzaFxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogTWFrZV9hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW4gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgVC50XG4gICAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgIGVuZClcblxuICBsZXQgbWVtIHQgeCA9IG1lbSB0IHggfmVxdWFsOlQuRWx0LmVxdWFsXG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlX2dlbl93aXRoX2NyZWF0b3JzX2FyZykgOlxuICBHZW5lcmljX3dpdGhfY3JlYXRvcnNcbiAgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50XG4gICBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbiAgIGFuZCB0eXBlICgnYSwgJ3BoYW50b20pIGNvbmNhdCA6PSAoJ2EsICdwaGFudG9tKSBULmNvbmNhdCA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChUKVxuXG4gIGxldCBvZl9saXN0ID0gVC5vZl9saXN0XG4gIGxldCBvZl9hcnJheSA9IFQub2ZfYXJyYXlcbiAgbGV0IGNvbmNhdCA9IFQuY29uY2F0XG4gIGxldCBjb25jYXRfb2ZfYXJyYXkgPSBULmNvbmNhdF9vZl9hcnJheVxuICBsZXQgYXBwZW5kIGEgYiA9IGNvbmNhdCAoY29uY2F0X29mX2FycmF5IFt8IGE7IGIgfF0pXG4gIGxldCBjb25jYXRfbWFwIHQgfmYgPSBjb25jYXQgKGNvbmNhdF9vZl9hcnJheSAoQXJyYXkubWFwICh0b19hcnJheSB0KSB+ZikpXG5cbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gICAgY29uY2F0X21hcCB0IH5mOihmdW4geCAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBvZl9hcnJheSBbfHxdXG4gICAgICB8IFNvbWUgeSAtPiBvZl9hcnJheSBbfCB5IHxdKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBTb21lIChmIHgpKSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IGZpbHRlcl9tYXAgdCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSkgW0Bub250YWlsXVxuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPVxuICAgIGxldCBhcnJheSA9IEFycmF5Lm1hcCAodG9fYXJyYXkgdCkgfmYgaW5cbiAgICBsZXQgeHMgPVxuICAgICAgQXJyYXkuZm9sZF9yaWdodCBhcnJheSB+aW5pdDpbXSB+ZjooZnVuIGVpdGhlciBhY2MgLT5cbiAgICAgICAgbWF0Y2ggKGVpdGhlciA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgfCBGaXJzdCB4IC0+IHggOjogYWNjXG4gICAgICAgIHwgU2Vjb25kIF8gLT4gYWNjKVxuICAgIGluXG4gICAgbGV0IHlzID1cbiAgICAgIEFycmF5LmZvbGRfcmlnaHQgYXJyYXkgfmluaXQ6W10gfmY6KGZ1biBlaXRoZXIgYWNjIC0+XG4gICAgICAgIG1hdGNoIChlaXRoZXIgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgXyAtPiBhY2NcbiAgICAgICAgfCBTZWNvbmQgeCAtPiB4IDo6IGFjYylcbiAgICBpblxuICAgIG9mX2xpc3QgeHMsIG9mX2xpc3QgeXNcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICAgIHBhcnRpdGlvbl9tYXAgdCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gRmlyc3QgeCBlbHNlIFNlY29uZCB4KSBbQG5vbnRhaWxdXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2Vfd2l0aF9jcmVhdG9yc19hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9ycyAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICAgIHR5cGUgKCdhLCBfKSBjb25jYXQgPSAnYSBULnRcblxuICAgICAgbGV0IGNvbmNhdF9vZl9hcnJheSA9IG9mX2FycmF5XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlMF93aXRoX2NyZWF0b3JzIChUIDogTWFrZTBfd2l0aF9jcmVhdG9yc19hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9ycyAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgICAgdHlwZSAoJ2EsIF8pIGNvbmNhdCA9ICdhIGxpc3RcblxuICAgICAgbGV0IGNvbmNhdF9vZl9hcnJheSA9IEFycmF5LnRvX2xpc3RcbiAgICBlbmQpXG5cbiAgbGV0IG1lbSB0IHggPSBtZW0gdCB4IH5lcXVhbDpULkVsdC5lcXVhbFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuaW5jbHVkZSBJbmRleGVkX2NvbnRhaW5lcl9pbnRmXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbmxldCBpdGVyaSB+Zm9sZCB0IH5mID1cbiAgaWdub3JlXG4gICAgKGZvbGQgdCB+aW5pdDowIH5mOihmdW4gaSB4IC0+XG4gICAgICAgZiBpIHg7XG4gICAgICAgaSArIDEpXG4gICAgIDogaW50KVxuOztcblxubGV0IGZvbGRpIH5mb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyB2IC0+XG4gICAgbGV0IGFjYyA9IGYgIWkgYWNjIHYgaW5cbiAgICBpIDo9ICFpICsgMTtcbiAgICBhY2MpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBjb3VudGkgfmZvbGRpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpIG4gYSAtPiBpZiBmIGkgYSB0aGVuIG4gKyAxIGVsc2UgbikgW0Bub250YWlsXVxuOztcblxubGV0IGV4aXN0c2kgfml0ZXJpIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSBjIH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb3JfYWxsaSB+aXRlcmkgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIGMgfmY6KGZ1biBpIHggLT4gaWYgbm90IChmIGkgeCkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgdHJ1ZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRfbWFwaSB+aXRlcmkgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gYXMgcmVzIC0+IHIucmV0dXJuIHJlcyk7XG4gICAgTm9uZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRpIH5pdGVyaSBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgYyB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIHIucmV0dXJuIChTb21lIChpLCB4KSkpO1xuICAgIE5vbmUpIFtAbm9udGFpbF1cbjs7XG5cbigqIEFsbG93cyBbTWFrZV9nZW5dIHRvIHNoYXJlIGEgW0NvbnRhaW5lci5HZW5lcmljXSBpbXBsZW1lbnRhdGlvbiB3aXRoLCBlLmcuLFxuICAgW0NvbnRhaW5lci5NYWtlX2dlbl93aXRoX2NyZWF0b3JzXS4gKilcbm1vZHVsZSBNYWtlX2dlbl93aXRoX2NvbnRhaW5lclxuICAgIChUIDogTWFrZV9nZW5fYXJnKVxuICAgIChDIDogQ29udGFpbmVyLkdlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50XG4gICAgICBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHQpIDpcbiAgR2VuZXJpYyB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnQgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0ID1cbnN0cnVjdFxuICBpbmNsdWRlIENcblxuICBsZXQgaXRlcmkgPVxuICAgIG1hdGNoIFQuaXRlcmkgd2l0aFxuICAgIHwgYEN1c3RvbSBpdGVyaSAtPiBpdGVyaVxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IH5mIC0+IGl0ZXJpIH5mb2xkIHQgfmZcbiAgOztcblxuICBsZXQgZm9sZGkgPVxuICAgIG1hdGNoIFQuZm9sZGkgd2l0aFxuICAgIHwgYEN1c3RvbSBmb2xkaSAtPiBmb2xkaVxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IH5pbml0IH5mIC0+IGZvbGRpIH5mb2xkIHQgfmluaXQgfmZcbiAgOztcblxuICBsZXQgY291bnRpIHQgfmYgPSBjb3VudGkgfmZvbGRpIHQgfmZcbiAgbGV0IGV4aXN0c2kgdCB+ZiA9IGV4aXN0c2kgfml0ZXJpIHQgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBmb3JfYWxsaSB+aXRlcmkgdCB+ZlxuICBsZXQgZmluZF9tYXBpIHQgfmYgPSBmaW5kX21hcGkgfml0ZXJpIHQgfmZcbiAgbGV0IGZpbmRpIHQgfmYgPSBmaW5kaSB+aXRlcmkgdCB+ZlxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbiAoVCA6IE1ha2VfZ2VuX2FyZykgOlxuICBHZW5lcmljIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHQgPVxuc3RydWN0XG4gIG1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2VfZ2VuIChUKVxuICBpbmNsdWRlIENcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NvbnRhaW5lciAoVCkgKEMpXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UwIChUIDogTWFrZTBfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlIChfLCBfKSB0ID0gVC50XG4gICAgICB0eXBlICdhIGVsdCA9IFQuRWx0LnRcbiAgICBlbmQpXG5cbiAgbGV0IG1lbSB0IHggPSBtZW0gdCB4IH5lcXVhbDpULkVsdC5lcXVhbFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChUIDogTWFrZV9nZW5fd2l0aF9jcmVhdG9yc19hcmcpIDpcbiAgR2VuZXJpY193aXRoX2NyZWF0b3JzXG4gIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudFxuICAgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0XG4gICBhbmQgdHlwZSAoJ2EsICdwaGFudG9tKSBjb25jYXQgOj0gKCdhLCAncGhhbnRvbSkgVC5jb25jYXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEMgPSBDb250YWluZXIuTWFrZV9nZW5fd2l0aF9jcmVhdG9ycyAoVClcbiAgaW5jbHVkZSBDXG4gIGluY2x1ZGUgTWFrZV9nZW5fd2l0aF9jb250YWluZXIgKFQpIChDKVxuXG4gIGxldCBkZXJpdmVkX2luaXQgbiB+ZiA9IG9mX2FycmF5IChBcnJheS5pbml0IG4gfmYpXG5cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIFQuaW5pdCB3aXRoXG4gICAgfCBgQ3VzdG9tIGluaXQgLT4gaW5pdFxuICAgIHwgYERlZmluZV91c2luZ19vZl9hcnJheSAtPiBkZXJpdmVkX2luaXRcbiAgOztcblxuICBsZXQgZGVyaXZlZF9jb25jYXRfbWFwaSB0IH5mID0gY29uY2F0IChULmNvbmNhdF9vZl9hcnJheSAoQXJyYXkubWFwaSAodG9fYXJyYXkgdCkgfmYpKVxuXG4gIGxldCBjb25jYXRfbWFwaSA9XG4gICAgbWF0Y2ggVC5jb25jYXRfbWFwaSB3aXRoXG4gICAgfCBgQ3VzdG9tIGNvbmNhdF9tYXBpIC0+IGNvbmNhdF9tYXBpXG4gICAgfCBgRGVmaW5lX3VzaW5nX2NvbmNhdCAtPiBkZXJpdmVkX2NvbmNhdF9tYXBpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICAgIGNvbmNhdF9tYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBvZl9hcnJheSBbfHxdXG4gICAgICB8IFNvbWUgeSAtPiBvZl9hcnJheSBbfCB5IHxdKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1hcGkgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBpIHggLT4gU29tZSAoZiBpIHgpKSBbQG5vbnRhaWxdXG5cbiAgbGV0IGZpbHRlcmkgdCB+ZiA9XG4gICAgZmlsdGVyX21hcGkgdCB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpIFtAbm9udGFpbF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2NyZWF0b3JzIChUIDogTWFrZV93aXRoX2NyZWF0b3JzX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgICAgdHlwZSAoJ2EsIF8pIGNvbmNhdCA9ICdhIFQudFxuXG4gICAgICBsZXQgY29uY2F0X29mX2FycmF5ID0gb2ZfYXJyYXlcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UwX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlMF93aXRoX2NyZWF0b3JzX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlIChfLCBfKSB0ID0gVC50XG4gICAgICB0eXBlICdhIGVsdCA9IFQuRWx0LnRcbiAgICAgIHR5cGUgKCdhLCBfKSBjb25jYXQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBjb25jYXRfb2ZfYXJyYXkgPSBBcnJheS50b19saXN0XG4gICAgZW5kKVxuXG4gIGxldCBtZW0gdCB4ID0gbWVtIHQgeCB+ZXF1YWw6VC5FbHQuZXF1YWxcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFN0ZGxpYi5MYXp5XG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gbGF6eV90X29mX3NleHBcbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX2xhenlfdFxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGxhenlfdF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuOztcblxuW0BAQGVuZF1cblxuZXh0ZXJuYWwgZm9yY2UgOiAoJ2EgdFtAbG9jYWxfb3B0XSkgLT4gJ2EgPSBcIiVsYXp5X2ZvcmNlXCJcblxubGV0IG1hcCB0IH5mID0gbGF6eSAoZiAoZm9yY2UgdCkpXG5cbmxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIGlmIHBoeXNfZXF1YWwgdDEgdDIgdGhlbiAwIGVsc2UgY29tcGFyZV9hIChmb3JjZSB0MSkgKGZvcmNlIHQyKVxuOztcblxubGV0IGVxdWFsIGVxdWFsX2EgdDEgdDIgPSBpZiBwaHlzX2VxdWFsIHQxIHQyIHRoZW4gdHJ1ZSBlbHNlIGVxdWFsX2EgKGZvcmNlIHQxKSAoZm9yY2UgdDIpXG5sZXQgaGFzaF9mb2xkX3QgPSBIYXNoLkJ1aWx0aW4uaGFzaF9mb2xkX2xhenlfdFxubGV0IHBlZWsgdCA9IGlmIGlzX3ZhbCB0IHRoZW4gU29tZSAoZm9yY2UgdCkgZWxzZSBOb25lXG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4geCA9IGZyb21fdmFsIHhcbiAgICBsZXQgYmluZCB0IH5mID0gbGF6eSAoZm9yY2UgKGYgKGZvcmNlIHQpKSlcbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubW9kdWxlIFRfdW5mb3JjaW5nID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgaWYgaXNfdmFsIHQgdGhlbiBzZXhwX29mX2EgKGZvcmNlIHQpIGVsc2Ugc2V4cF9vZl9zdHJpbmcgXCI8dW5mb3JjZWQgbGF6eT5cIlxuICA7O1xuZW5kXG4iLCIoKiBTcGxpdCBvZmYgdG8gYXZvaWQgYSBjeWNsaWMgZGVwZW5kZW5jeSB3aXRoIFtPcl9lcnJvcl0uICopXG5cbm9wZW4hIEltcG9ydFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5sZXQgc2xvd19jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aCA9XG4gIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJOZWdhdGl2ZSBwb3NpdGlvbjogJWRcIiBwb3MgKCk7XG4gIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJOZWdhdGl2ZSBsZW5ndGg6ICVkXCIgbGVuICgpO1xuICAoKiBXZSB1c2UgW3BvcyA+IHRvdGFsX2xlbmd0aCAtIGxlbl0gcmF0aGVyIHRoYW4gW3BvcyArIGxlbiA+IHRvdGFsX2xlbmd0aF0gdG8gYXZvaWQgdGhlXG4gICAgIHBvc3NpYmlsaXR5IG9mIG92ZXJmbG93LiAqKVxuICBpZiBwb3MgPiB0b3RhbF9sZW5ndGggLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJwb3MgKyBsZW4gcGFzdCBlbmQ6ICVkICsgJWQgPiAlZFwiIHBvcyBsZW4gdG90YWxfbGVuZ3RoICgpXG5bQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuOztcblxubGV0IGNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoID1cbiAgKCogVGhpcyBpcyBiZXR0ZXIgdGhhbiBbc2xvd19jaGVja19wb3NfbGVuX2V4bl0gZm9yIHR3byByZWFzb25zOlxuXG4gICAgIC0gbXVjaCBsZXNzIGlubGluZWQgY29kZVxuICAgICAtIG9ubHkgb25lIGNvbmRpdGlvbmFsIGp1bXBcblxuICAgICBUaGUgcmVhc29uIGl0IHdvcmtzIGlzIHRoYXQgY2hlY2tpbmcgWzwgMF0gaXMgdGVzdGluZyB0aGUgaGlnaGVzdCBvcmRlciBiaXQsIHNvXG4gICAgIFthIDwgMCB8fCBiIDwgMF0gaXMgdGhlIHNhbWUgYXMgW2EgbG9yIGIgPCAwXS5cblxuICAgICBbcG9zICsgbGVuXSBjYW4gb3ZlcmZsb3csIHNvIFtwb3MgPiB0b3RhbF9sZW5ndGggLSBsZW5dIGlzIG5vdCBlcXVpdmFsZW50IHRvXG4gICAgIFt0b3RhbF9sZW5ndGggLSBsZW4gLSBwb3MgPCAwXSwgd2UgbmVlZCB0byB0ZXN0IGZvciBbcG9zICsgbGVuXSBvdmVyZmxvdyBhc1xuICAgICB3ZWxsLiAqKVxuICBsZXQgc3RvcCA9IHBvcyArIGxlbiBpblxuICBpZiBwb3MgbG9yIGxlbiBsb3Igc3RvcCBsb3IgKHRvdGFsX2xlbmd0aCAtIHN0b3ApIDwgMFxuICB0aGVuIHNsb3dfY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGhcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgZ2V0X3Bvc19sZW5fZXhuID8ocG9zID0gMCkgP2xlbiAoKSB+dG90YWxfbGVuZ3RoID1cbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IFNvbWUgaSAtPiBpXG4gICAgfCBOb25lIC0+IHRvdGFsX2xlbmd0aCAtIHBvc1xuICBpblxuICBjaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgcG9zLCBsZW5cbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBzbG93X2NoZWNrX3Bvc19sZW5fZXhuID0gc2xvd19jaGVja19wb3NfbGVuX2V4blxuZW5kXG4iLCJcbm1vZHVsZSBSZXByID0gc3RydWN0XG4gIG9wZW4gU3RkbGliLkJpZ2FycmF5XG5cbiAgdHlwZSB0ID0gKGludDY0LCBpbnQ2NF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG4gIGxldCBvZl9zdGF0ZSA6IFN0ZGxpYi5SYW5kb20uU3RhdGUudCAtPiB0ID0gU3RkbGliLk9iai5tYWdpY1xuZW5kXG5cbmxldCBhc3NpZ24gZHN0IHNyYyA9XG4gIGxldCBkc3QgPSBSZXByLm9mX3N0YXRlIChMYXp5LmZvcmNlIGRzdCkgaW5cbiAgbGV0IHNyYyA9IFJlcHIub2Zfc3RhdGUgKExhenkuZm9yY2Ugc3JjKSBpblxuICBTdGRsaWIuQmlnYXJyYXkuQXJyYXkxLmJsaXQgc3JjIGRzdFxuXG5sZXQgbWFrZV9kZWZhdWx0IGRlZmF1bHQgPVxuICBsZXQgc3BsaXRfZnJvbV9wYXJlbnQgdiA9XG4gICAgU3RkbGliLkxhenkubWFwX3ZhbCBTdGRsaWIuUmFuZG9tLlN0YXRlLnNwbGl0IHZcbiAgaW5cbiAgU3RkbGliLkRvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQgKGZ1biAoKSAtPiBkZWZhdWx0KVxuXG5sZXQgZ2V0X3N0YXRlIHJhbmRvbV9rZXkgPSBTdGRsaWIuRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIENoYXIgPSBDaGFyMFxuXG4oKiBVbmZvcnR1bmF0ZWx5LCBiZWNhdXNlIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGRvZXMgbm90IGV4cG9zZVxuICAgW1N0ZGxpYi5SYW5kb20uU3RhdGUuZGVmYXVsdF0sIHdlIGhhdmUgdG8gY29uc3RydWN0IG91ciBvd24uICBXZSB0aGVuIGJ1aWxkIHRoZVxuICAgW1N0ZGxpYi5SYW5kb20uaW50XSwgW1N0ZGxpYi5SYW5kb20uYm9vbF0gZnVuY3Rpb25zIGFuZCBmcmllbmRzIHVzaW5nIHRoYXQgZGVmYXVsdCBzdGF0ZSBpblxuICAgZXhhY3RseSB0aGUgc2FtZSB3YXkgYXMgdGhlIHN0YW5kYXJkIGxpYnJhcnkuXG5cbiAgIE9uZSBvdGhlciB0cmlja2luZXNzIGlzIHRoYXQgd2UgbmVlZCBhY2Nlc3MgdG8gdGhlIHVuZXhwb3NlZCBbU3RkbGliLlJhbmRvbS5TdGF0ZS5hc3NpZ25dXG4gICBmdW5jdGlvbiwgd2hpY2ggYWNjZXNzZXMgdGhlIHVuZXhwb3NlZCBzdGF0ZSByZXByZXNlbnRhdGlvbi4gIFNvLCB3ZSBjb3B5IHRoZVxuICAgW1N0YXRlLnJlcHJdIHR5cGUgZGVmaW5pdGlvbiBhbmQgW2Fzc2lnbl0gZnVuY3Rpb24gdG8gaGVyZSBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LFxuICAgYW5kIHVzZSBbT2JqLm1hZ2ljXSB0byBnZXQgYWNjZXNzIHRvIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uLiAqKVxuXG4oKiBSZWdyZXNzaW9uIHRlc3RzIG91Z2h0IHRvIGJlIGRldGVybWluaXN0aWMgYmVjYXVzZSB0aGF0IHdheSBhbnlvbmUgd2hvIGJyZWFrcyB0aGUgdGVzdFxuICAga25vd3MgdGhhdCBpdCdzIHRoZWlyIGNvZGUgdGhhdCBicm9rZSB0aGUgdGVzdC4gIElmIHRlc3RzIGFyZSBub25kZXRlcm1pbmlzdGljLCBhIHRlc3RcbiAgIGZhaWx1cmUgbWF5IGluc3RlYWQgaGFwcGVuIGJlY2F1c2UgdGhlIHRlc3QgcnVubmVyIGdvdCB1bmx1Y2t5IGFuZCB1bmNvdmVyZWQgYW5cbiAgIGV4aXN0aW5nIGJ1ZyBpbiB0aGUgY29kZSBzdXBwb3NlZGx5IGJlaW5nIFwicHJvdGVjdGVkXCIgYnkgdGhlIHRlc3QgaW4gcXVlc3Rpb24uICopXG5sZXQgZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIH5hbGxvd19pbl90ZXN0cyA9XG4gIGlmIGFtX3Rlc3RpbmdcbiAgdGhlbiAoXG4gICAgbWF0Y2ggYWxsb3dfaW5fdGVzdHMgd2l0aFxuICAgIHwgU29tZSB0cnVlIC0+ICgpXG4gICAgfCBOb25lIHwgU29tZSBmYWxzZSAtPlxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgXCJpbml0aWFsaXppbmcgUmFuZG9tIHdpdGggYSBub25kZXRlcm1pbmlzdGljIHNlZWQgaXMgZm9yYmlkZGVuIGluIGlubGluZSB0ZXN0c1wiKVxuOztcblxuZXh0ZXJuYWwgcmFuZG9tX3NlZWQgOiB1bml0IC0+IGludCBhcnJheSA9IFwiY2FtbF9zeXNfcmFuZG9tX3NlZWRcIlxuXG5sZXQgcmFuZG9tX3NlZWQgP2FsbG93X2luX3Rlc3RzICgpID1cbiAgZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIH5hbGxvd19pbl90ZXN0cztcbiAgcmFuZG9tX3NlZWQgKClcbjs7XG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAoKiBXZSBhbGxvdyBsYXppbmVzcyBvbmx5IGZvciB0aGUgZGVmaW5pdGlvbiBvZiBbZGVmYXVsdF0sIGJlbG93LCB3aGljaCBtYXkgbGF6aWx5IGNhbGxcbiAgICAgW21ha2Vfc2VsZl9pbml0XS4gRm9yIGFsbCBvdGhlciBwdXJwb3Nlcywgd2UgY3JlYXRlIGFuZCB1c2UgW3RdIGVhZ2VybHkuICopXG4gIHR5cGUgdCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUudCBMYXp5LnRcblxuICBsZXQgYml0cyB0ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHQpXG4gIGxldCBib29sIHQgPSBTdGRsaWIuUmFuZG9tLlN0YXRlLmJvb2wgKExhenkuZm9yY2UgdClcbiAgbGV0IGludCB0IHggPSBTdGRsaWIuUmFuZG9tLlN0YXRlLmludCAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBpbnQzMiB0IHggPSBTdGRsaWIuUmFuZG9tLlN0YXRlLmludDMyIChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IGludDY0IHQgeCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUuaW50NjQgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgbmF0aXZlaW50IHQgeCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUubmF0aXZlaW50IChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IG1ha2Ugc2VlZCA9IExhenkuZnJvbV92YWwgKFN0ZGxpYi5SYW5kb20uU3RhdGUubWFrZSBzZWVkKVxuICBsZXQgY29weSB0ID0gTGF6eS5mcm9tX3ZhbCAoU3RkbGliLlJhbmRvbS5TdGF0ZS5jb3B5IChMYXp5LmZvcmNlIHQpKVxuICBsZXQgY2hhciB0ID0gaW50IHQgMjU2IHw+IENoYXIudW5zYWZlX29mX2ludFxuICBsZXQgYXNjaWkgdCA9IGludCB0IDEyOCB8PiBDaGFyLnVuc2FmZV9vZl9pbnRcblxuICBsZXQgbWFrZV9zZWxmX2luaXQgP2FsbG93X2luX3Rlc3RzICgpID1cbiAgICBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzO1xuICAgIExhenkuZnJvbV92YWwgKFN0ZGxpYi5SYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG4gIDs7XG5cbiAgbGV0IGFzc2lnbiA9IFJhbmRvbV9yZXByLmFzc2lnblxuICBsZXQgZnVsbF9pbml0IHQgc2VlZCA9IGFzc2lnbiB0IChtYWtlIHNlZWQpXG5cbiAgbGV0IGRlZmF1bHQgPVxuICAgIGlmIGFtX3Rlc3RpbmdcbiAgICB0aGVuIChcbiAgICAgICgqIFdlIGRlZmluZSBCYXNlJ3MgZGVmYXVsdCByYW5kb20gc3RhdGUgYXMgYSBjb3B5IG9mIE9DYW1sJ3MgZGVmYXVsdCByYW5kb20gc3RhdGUuXG4gICAgICAgICBUaGlzIG1lYW5zIHRoYXQgcHJvZ3JhbXMgdGhhdCB1c2UgQmFzZS5SYW5kb20gd2lsbCBzZWUgdGhlIHNhbWUgc2VxdWVuY2Ugb2ZcbiAgICAgICAgIHJhbmRvbSBiaXRzIGFzIGlmIHRoZXkgaGFkIHVzZWQgU3RkbGliLlJhbmRvbS4gSG93ZXZlciwgYmVjYXVzZSBbZ2V0X3N0YXRlXSByZXR1cm5zXG4gICAgICAgICBhIGNvcHksIEJhc2UuUmFuZG9tIGFuZCBPQ2FtbC5SYW5kb20gYXJlIG5vdCB1c2luZyB0aGUgc2FtZSBzdGF0ZS4gSWYgYSBwcm9ncmFtXG4gICAgICAgICB1c2VkIGJvdGgsIGVhY2ggb2YgdGhlbSB3b3VsZCBnbyB0aHJvdWdoIHRoZSBzYW1lIHNlcXVlbmNlIG9mIHJhbmRvbSBiaXRzLiBUb1xuICAgICAgICAgYXZvaWQgdGhhdCwgd2UgcmVzZXQgT0NhbWwncyByYW5kb20gc3RhdGUgdG8gYSBkaWZmZXJlbnQgc2VlZCwgZ2l2aW5nIGl0IGFcbiAgICAgICAgIGRpZmZlcmVudCBzZXF1ZW5jZS4gKilcbiAgICAgIGxldCB0ID0gU3RkbGliLlJhbmRvbS5nZXRfc3RhdGUgKCkgaW5cbiAgICAgIFN0ZGxpYi5SYW5kb20uaW5pdCAxMzc7XG4gICAgICBMYXp5LmZyb21fdmFsIHQpXG4gICAgZWxzZVxuICAgICAgbGF6eVxuICAgICAgICAoKiBPdXRzaWRlIG9mIHRlc3RzLCB3ZSBpbml0aWFsaXplIHJhbmRvbSBzdGF0ZSBub25kZXRlcm1pbmlzdGljYWxseSBhbmQgbGF6aWx5LlxuICAgICAgICAgICBXZSBmb3JjZSB0aGUgcmFuZG9tIGluaXRpYWxpemF0aW9uIHRvIGJlIGxhenkgc28gdGhhdCB3ZSBkbyBub3QgcGF5IGFueSBjb3N0XG4gICAgICAgICAgIGZvciBpdCBpbiBwcm9ncmFtcyB0aGF0IGRvIG5vdCB1c2UgcmFuZG9tbmVzcy4gKilcbiAgICAgICAgKExhenkuZm9yY2UgKG1ha2Vfc2VsZl9pbml0ICgpKSlcbiAgOztcblxuICBsZXQgaW50X29uXzY0Yml0cyB0IGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAweDNGRkZGRkZGICgqICgxIGxzbCAzMCkgLSAxICopXG4gICAgdGhlbiBpbnQgdCBib3VuZFxuICAgIGVsc2UgU3RkbGliLkludDY0LnRvX2ludCAoaW50NjQgdCAoU3RkbGliLkludDY0Lm9mX2ludCBib3VuZCkpXG4gIDs7XG5cbiAgbGV0IGludF9vbl8zMmJpdHMgdCBib3VuZCA9XG4gICAgKCogTm90IGFsd2F5cyB0cnVlIHdpdGggdGhlIEphdmFTY3JpcHQgYmFja2VuZC4gKilcbiAgICBpZiBib3VuZCA8PSAweDNGRkZGRkZGICgqICgxIGxzbCAzMCkgLSAxICopXG4gICAgdGhlbiBpbnQgdCBib3VuZFxuICAgIGVsc2UgU3RkbGliLkludDMyLnRvX2ludCAoaW50MzIgdCAoU3RkbGliLkludDMyLm9mX2ludCBib3VuZCkpXG4gIDs7XG5cbiAgbGV0IGludCA9XG4gICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgfCBXNjQgLT4gaW50X29uXzY0Yml0c1xuICAgIHwgVzMyIC0+IGludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9pbnQ2NCA9XG4gICAgbGV0IG9wZW4gU3RkbGliLkludDY0IGluXG4gICAgbGV0IGJpdHMgc3RhdGUgPSBvZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgZnVuIHN0YXRlIC0+XG4gICAgICBsb2d4b3JcbiAgICAgICAgKGJpdHMgc3RhdGUpXG4gICAgICAgIChsb2d4b3IgKHNoaWZ0X2xlZnQgKGJpdHMgc3RhdGUpIDMwKSAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgNjApKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX2ludDMyID1cbiAgICBsZXQgb3BlbiBTdGRsaWIuSW50MzIgaW5cbiAgICBsZXQgYml0cyBzdGF0ZSA9IG9mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBmdW4gc3RhdGUgLT4gbG9neG9yIChiaXRzIHN0YXRlKSAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgMzApXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50X29uXzY0Yml0cyBzdGF0ZSA9IFN0ZGxpYi5JbnQ2NC50b19pbnQgKGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUpXG4gIGxldCBmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHMgc3RhdGUgPSBTdGRsaWIuSW50MzIudG9faW50IChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKVxuXG4gIGxldCBmdWxsX3JhbmdlX2ludCA9XG4gICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgfCBXNjQgLT4gZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzY0Yml0cyBzdGF0ZSA9XG4gICAgU3RkbGliLkludDY0LnRvX25hdGl2ZWludCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSlcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fMzJiaXRzIHN0YXRlID1cbiAgICBTdGRsaWIuTmF0aXZlaW50Lm9mX2ludDMyIChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX25hdGl2ZWludCA9XG4gICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgfCBXNjQgLT4gZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fMzJiaXRzXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2Nyb3NzZWRfYm91bmRzIG5hbWUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgc3RyaW5nX29mX2JvdW5kID1cbiAgICBQcmludGYuZmFpbHdpdGhmXG4gICAgICBcIlJhbmRvbS4lczogY3Jvc3NlZCBib3VuZHMgWyVzID4gJXNdXCJcbiAgICAgIG5hbWVcbiAgICAgIChzdHJpbmdfb2ZfYm91bmQgbG93ZXJfYm91bmQpXG4gICAgICAoc3RyaW5nX29mX2JvdW5kIHVwcGVyX2JvdW5kKVxuICAgICAgKClcbiAgW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbiAgOztcblxuICBsZXQgaW50X2luY2wgPVxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfaW50IHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwiaW50XCIgbG8gaGkgSW50LnRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gaGkgLSBsbyBpblxuICAgICAgaWYgZGlmZiA9IEludC5tYXhfdmFsdWVcbiAgICAgIHRoZW4gbG8gKyAoZnVsbF9yYW5nZV9pbnQgc3RhdGUgbGFuZCBJbnQubWF4X3ZhbHVlKVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBcbiAgICAgIHRoZW4gbG8gKyBpbnQgc3RhdGUgKEludC5zdWNjIGRpZmYpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IGludDMyX2luY2wgPVxuICAgIGxldCBvcGVuIEludDMyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gU3RkbGliLkludDMyIGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnQzMlwiIGxvIGhpIHRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gc3ViIGhpIGxvIGluXG4gICAgICBpZiBkaWZmID0gbWF4X2ludFxuICAgICAgdGhlbiBhZGQgbG8gKGxvZ2FuZCAoZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSkgbWF4X2ludClcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwbFxuICAgICAgdGhlbiBhZGQgbG8gKGludDMyIHN0YXRlIChzdWNjIGRpZmYpKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gIGxldCBuYXRpdmVpbnRfaW5jbCA9XG4gICAgbGV0IG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfbmF0aXZlaW50IHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGxldCBvcGVuIFN0ZGxpYi5OYXRpdmVpbnQgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcIm5hdGl2ZWludFwiIGxvIGhpIHRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gc3ViIGhpIGxvIGluXG4gICAgICBpZiBkaWZmID0gbWF4X2ludFxuICAgICAgdGhlbiBhZGQgbG8gKGxvZ2FuZCAoZnVsbF9yYW5nZV9uYXRpdmVpbnQgc3RhdGUpIG1heF9pbnQpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMG5cbiAgICAgIHRoZW4gYWRkIGxvIChuYXRpdmVpbnQgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IGludDY0X2luY2wgPVxuICAgIGxldCBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gU3RkbGliLkludDY0IGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnQ2NFwiIGxvIGhpIHRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gc3ViIGhpIGxvIGluXG4gICAgICBpZiBkaWZmID0gbWF4X2ludFxuICAgICAgdGhlbiBhZGQgbG8gKGxvZ2FuZCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSkgbWF4X2ludClcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwTFxuICAgICAgdGhlbiBhZGQgbG8gKGludDY0IHN0YXRlIChzdWNjIGRpZmYpKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gICgqIFJldHVybiBhIHVuaWZvcm1seSByYW5kb20gZmxvYXQgaW4gWzAsIDEpLiAqKVxuICBsZXQgcmVjIHJhd2Zsb2F0IHN0YXRlID1cbiAgICBsZXQgb3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgc2NhbGUgPSAweDFwLTMwIGluXG4gICAgKCogMl4tMzAgKilcbiAgICBsZXQgcjEgPSBTdGRsaWIuZmxvYXRfb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGxldCByMiA9IFN0ZGxpYi5mbG9hdF9vZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgbGV0IHJlc3VsdCA9ICgocjEgKi4gc2NhbGUpICsuIHIyKSAqLiBzY2FsZSBpblxuICAgICgqIFdpdGggdmVyeSBzbWFsbCBwcm9iYWJpbGl0eSwgcmVzdWx0IGNhbiByb3VuZCB1cCB0byAxLjAsIHNvIGluIHRoYXQgY2FzZSwgd2UganVzdFxuICAgICAgIHRyeSBhZ2Fpbi4gKilcbiAgICBpZiByZXN1bHQgPCAxLjAgdGhlbiByZXN1bHQgZWxzZSByYXdmbG9hdCBzdGF0ZVxuICA7O1xuXG4gIGxldCBmbG9hdCBzdGF0ZSBoaSA9IHJhd2Zsb2F0IHN0YXRlICouIGhpXG5cbiAgbGV0IGZsb2F0X3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICBsZXQgb3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJmbG9hdFwiIGxvIGhpIFN0ZGxpYi5zdHJpbmdfb2ZfZmxvYXQ7XG4gICAgbG8gKy4gZmxvYXQgc3RhdGUgKGhpIC0uIGxvKVxuICA7O1xuZW5kXG5cbmxldCBkZWZhdWx0ID0gUmFuZG9tX3JlcHIubWFrZV9kZWZhdWx0IFN0YXRlLmRlZmF1bHRcbmxldCBiaXRzICgpID0gU3RhdGUuYml0cyAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgaW50IHggPSBTdGF0ZS5pbnQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50MzIgeCA9IFN0YXRlLmludDMyIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IG5hdGl2ZWludCB4ID0gU3RhdGUubmF0aXZlaW50IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGludDY0IHggPSBTdGF0ZS5pbnQ2NCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBmbG9hdCB4ID0gU3RhdGUuZmxvYXQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50X2luY2wgeCB5ID0gU3RhdGUuaW50X2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBpbnQzMl9pbmNsIHggeSA9IFN0YXRlLmludDMyX2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBuYXRpdmVpbnRfaW5jbCB4IHkgPSBTdGF0ZS5uYXRpdmVpbnRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGludDY0X2luY2wgeCB5ID0gU3RhdGUuaW50NjRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGZsb2F0X3JhbmdlIHggeSA9IFN0YXRlLmZsb2F0X3JhbmdlIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGNoYXIgKCkgPSBTdGF0ZS5jaGFyIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBhc2NpaSAoKSA9IFN0YXRlLmFzY2lpIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBmdWxsX2luaXQgc2VlZCA9IFN0YXRlLmZ1bGxfaW5pdCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHNlZWRcbmxldCBpbml0IHNlZWQgPSBmdWxsX2luaXQgW3wgc2VlZCB8XVxubGV0IHNlbGZfaW5pdCA/YWxsb3dfaW5fdGVzdHMgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkID9hbGxvd19pbl90ZXN0cyAoKSlcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHNcbiIsIigqKiBBbiBpbnRlcm5hbC1vbmx5IG1vZHVsZSBmYWN0b3JlZCBvdXQgZHVlIHRvIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIGNvcmVfYXJyYXlcbiAgICBhbmQgY29yZV9saXN0LiAgQ29udGFpbnMgY29kZSBmb3IgcGVybXV0aW5nIGFuIGFycmF5LiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQXJyYXkwXG5cbmxldCBwZXJtdXRlID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpID8ocG9zID0gMCkgP2xlbiB0ID1cbiAgKCogQ29waWVkIGZyb20gW09yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wXSB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgd2hlbiBjb21waWxpbmdcbiAgICAgd2l0aG91dCBmbGFtYmRhLiAqKVxuICBsZXQgdG90YWxfbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IFNvbWUgbCAtPiBsXG4gICAgfCBOb25lIC0+IHRvdGFsX2xlbmd0aCAtIHBvc1xuICBpblxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uMC5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgbGV0IG51bV9zd2FwcyA9IGxlbiAtIDEgaW5cbiAgZm9yIGkgPSBudW1fc3dhcHMgZG93bnRvIDEgZG9cbiAgICBsZXQgdGhpc19pID0gcG9zICsgaSBpblxuICAgICgqIFtyYW5kb21faV0gaXMgZHJhd24gZnJvbSBbcG9zLHRoaXNfaV0gKilcbiAgICBsZXQgcmFuZG9tX2kgPSBwb3MgKyBSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAoaSArIDEpIGluXG4gICAgc3dhcCB0IHRoaXNfaSByYW5kb21faVxuICBkb25lXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTGVzc1xuICB8IEVxdWFsXG4gIHwgR3JlYXRlclxuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIGVudW1lcmF0ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbmxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgTGVzcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgfCBFcXVhbCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBHcmVhdGVyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG47O1xuXG5sZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbmxldCBhbGwgPSAoWyBMZXNzOyBFcXVhbDsgR3JlYXRlciBdIDogdCBsaXN0KVxuXG5sZXQgdF9vZl9zZXhwID1cbiAgKGxldCBlcnJvcl9zb3VyY2VfXzAwNV8gPSBcIm9yZGVyaW5nLm1sLnRcIiBpblxuICAgZnVuY3Rpb25cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImxlc3NcIiB8IFwiTGVzc1wiKSAtPiBMZXNzXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJlcXVhbFwiIHwgXCJFcXVhbFwiKSAtPiBFcXVhbFxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZ3JlYXRlclwiIHwgXCJHcmVhdGVyXCIpIC0+IEdyZWF0ZXJcbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibGVzc1wiIHwgXCJMZXNzXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJlcXVhbFwiIHwgXCJFcXVhbFwiKSA6OiBfKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiZ3JlYXRlclwiIHwgXCJHcmVhdGVyXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICB8IHNleHBfXzAwNF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG47O1xuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBMZXNzIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkxlc3NcIlxuICAgIHwgRXF1YWwgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXF1YWxcIlxuICAgIHwgR3JlYXRlciAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJHcmVhdGVyXCJcbiAgICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiTGVzc1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiRXF1YWxcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkdyZWF0ZXJcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxuW0BAQGVuZF1cblxubGV0IGVxdWFsIGEgYiA9IGNvbXBhcmUgYSBiID0gMFxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgX29yZGVyaW5nID0gdCA9XG4gICAgfCBMZXNzXG4gICAgfCBFcXVhbFxuICAgIHwgR3JlYXRlclxuZW5kXG5cbmxldCBvZl9pbnQgbiA9IGlmIG4gPCAwIHRoZW4gTGVzcyBlbHNlIGlmIG4gPSAwIHRoZW4gRXF1YWwgZWxzZSBHcmVhdGVyXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IExlc3MgLT4gLTFcbiAgfCBFcXVhbCAtPiAwXG4gIHwgR3JlYXRlciAtPiAxXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIwXG5cblxuaW5jbHVkZSBMaXN0MVxuXG4oKiBUaGlzIGl0c2VsZiBpbmNsdWRlcyBbTGlzdDBdLiAqKVxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nX2lubGluZSBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgZ2xvYmFsaXplIDogJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSB0W0BvY2FtbC5sb2NhbF0pIC0+ICdhIHQgPVxuICAgIGZ1biAodHlwZSBhX18wMDFfKVxuICAgICAgICA6ICgoKGFfXzAwMV9bQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDAxXykgLT4gKGFfXzAwMV8gdFtAb2NhbWwubG9jYWxdKSAtPiBhX18wMDFfIHQpIC0+XG4gICAgICBnbG9iYWxpemVfbGlzdFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBsaXN0X29mX3NleHBcbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfbGlzdFxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBsaXN0X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgT3JfdW5lcXVhbF9sZW5ndGhzID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBPayBvZiAnYVxuICAgIHwgVW5lcXVhbF9sZW5ndGhzXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICAgIGZ1biBfY21wX19hIGFfXzAxMF8gYl9fMDExXyAtPlxuICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDEwXyBiX18wMTFfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMTBfLCBiX18wMTFfIHdpdGhcbiAgICAgIHwgT2sgX2FfXzAxMl8sIE9rIF9iX18wMTNfIC0+IF9jbXBfX2EgX2FfXzAxMl8gX2JfXzAxM19cbiAgICAgIHwgT2sgXywgXyAtPiAtMVxuICAgICAgfCBfLCBPayBfIC0+IDFcbiAgICAgIHwgVW5lcXVhbF9sZW5ndGhzLCBVbmVxdWFsX2xlbmd0aHMgLT4gMClcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gKHR5cGUgYV9fMDE3XykgOiAoKGFfXzAxN18gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiBhX18wMTdfIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDE0XyAtPiBmdW5jdGlvblxuICAgICAgfCBPayBhcmcwX18wMTVfIC0+XG4gICAgICAgIGxldCByZXMwX18wMTZfID0gX29mX2FfXzAxNF8gYXJnMF9fMDE1XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPa1wiOyByZXMwX18wMTZfIF1cbiAgICAgIHwgVW5lcXVhbF9sZW5ndGhzIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlVuZXF1YWxfbGVuZ3Roc1wiXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGludmFyaWFudCBmIHQgPSBpdGVyIHQgfmZcbmxldCBvZl9saXN0IHQgPSB0XG5cbmxldCByYW5nZScgfmNvbXBhcmUgfnN0cmlkZSA/KHN0YXJ0ID0gYGluY2x1c2l2ZSkgPyhzdG9wID0gYGV4Y2x1c2l2ZSkgc3RhcnRfaSBzdG9wX2kgPVxuICBsZXQgbmV4dF9pID0gc3RyaWRlIHN0YXJ0X2kgaW5cbiAgbGV0IG9yZGVyIHggeSA9IE9yZGVyaW5nLm9mX2ludCAoY29tcGFyZSB4IHkpIGluXG4gIGxldCByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpID1cbiAgICBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2UnOiBzdHJpZGUgZnVuY3Rpb24gY2Fubm90IHJldHVybiB0aGUgc2FtZSB2YWx1ZVwiXG4gIGluXG4gIGxldCBpbml0aWFsX3N0cmlkZV9vcmRlciA9XG4gICAgbWF0Y2ggb3JkZXIgc3RhcnRfaSBuZXh0X2kgd2l0aFxuICAgIHwgRXF1YWwgLT4gcmFpc2Vfc3RyaWRlX2Nhbm5vdF9yZXR1cm5fc2FtZV92YWx1ZSAoKVxuICAgIHwgTGVzcyAtPiBgTGVzc1xuICAgIHwgR3JlYXRlciAtPiBgR3JlYXRlclxuICBpblxuICBsZXQgcmVjIGxvb3AgaSBhY2N1bSA9XG4gICAgbGV0IGlfdG9fc3RvcF9vcmRlciA9IG9yZGVyIGkgc3RvcF9pIGluXG4gICAgbWF0Y2ggaV90b19zdG9wX29yZGVyLCBpbml0aWFsX3N0cmlkZV9vcmRlciB3aXRoXG4gICAgfCBMZXNzLCBgTGVzcyB8IEdyZWF0ZXIsIGBHcmVhdGVyIC0+XG4gICAgICAoKiBoYXZlbid0IHlldCByZWFjaGVkIFtzdG9wX2ldLiBDb250aW51ZS4gKilcbiAgICAgIGxldCBuZXh0X2kgPSBzdHJpZGUgaSBpblxuICAgICAgKG1hdGNoIG9yZGVyIGkgbmV4dF9pLCBpbml0aWFsX3N0cmlkZV9vcmRlciB3aXRoXG4gICAgICAgfCBFcXVhbCwgXyAtPiByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpXG4gICAgICAgfCBMZXNzLCBgR3JlYXRlciB8IEdyZWF0ZXIsIGBMZXNzIC0+XG4gICAgICAgICBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2UnOiBzdHJpZGUgZnVuY3Rpb24gY2Fubm90IGNoYW5nZSBkaXJlY3Rpb25cIlxuICAgICAgIHwgTGVzcywgYExlc3MgfCBHcmVhdGVyLCBgR3JlYXRlciAtPiBsb29wIG5leHRfaSAoaSA6OiBhY2N1bSkpXG4gICAgfCBMZXNzLCBgR3JlYXRlciB8IEdyZWF0ZXIsIGBMZXNzIC0+XG4gICAgICAoKiBzdGVwcGVkIHBhc3QgW3N0b3BfaV0uICBGaW5pc2hlZC4gKilcbiAgICAgIGFjY3VtXG4gICAgfCBFcXVhbCwgXyAtPlxuICAgICAgKCogcmVhY2hlZCBbc3RvcF9pXS4gIEZpbmlzaGVkLiAqKVxuICAgICAgKG1hdGNoIHN0b3Agd2l0aFxuICAgICAgIHwgYGluY2x1c2l2ZSAtPiBpIDo6IGFjY3VtXG4gICAgICAgfCBgZXhjbHVzaXZlIC0+IGFjY3VtKVxuICBpblxuICBsZXQgc3RhcnRfaSA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgYGluY2x1c2l2ZSAtPiBzdGFydF9pXG4gICAgfCBgZXhjbHVzaXZlIC0+IG5leHRfaVxuICBpblxuICByZXYgKGxvb3Agc3RhcnRfaSBbXSlcbjs7XG5cbmxldCByYW5nZSA/KHN0cmlkZSA9IDEpID8oc3RhcnQgPSBgaW5jbHVzaXZlKSA/KHN0b3AgPSBgZXhjbHVzaXZlKSBzdGFydF9pIHN0b3BfaSA9XG4gIGlmIHN0cmlkZSA9IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2U6IHN0cmlkZSBtdXN0IGJlIG5vbi16ZXJvXCI7XG4gIHJhbmdlJyB+Y29tcGFyZSB+c3RyaWRlOihmdW4geCAtPiB4ICsgc3RyaWRlKSB+c3RhcnQgfnN0b3Agc3RhcnRfaSBzdG9wX2lcbjs7XG5cbmxldCBoZCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogXyAtPiBTb21lIHhcbjs7XG5cbmxldCB0bCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IF8gOjogdCcgLT4gU29tZSB0J1xuOztcblxubGV0IG50aCB0IG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBudGhfYXV4IHQgbiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBhIDo6IHQgLT4gaWYgbiA9IDAgdGhlbiBTb21lIGEgZWxzZSBudGhfYXV4IHQgKG4gLSAxKVxuICAgIGluXG4gICAgbnRoX2F1eCB0IG4pXG47O1xuXG5sZXQgbnRoX2V4biB0IG4gPVxuICBtYXRjaCBudGggdCBuIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIkxpc3QubnRoX2V4biAlZCBjYWxsZWQgb24gbGlzdCBvZiBsZW5ndGggJWRcIiBuIChsZW5ndGggdCkgKClcbiAgfCBTb21lIGEgLT4gYVxuOztcblxubGV0IHVub3JkZXJlZF9hcHBlbmQgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBsIHwgbCwgW10gLT4gbFxuICB8IF8gLT4gcmV2X2FwcGVuZCBsMSBsMlxuOztcblxubW9kdWxlIENoZWNrX2xlbmd0aDIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IFNhbWVfbGVuZ3RoIG9mIGludFxuICAgIHwgVW5lcXVhbF9sZW5ndGhzIG9mXG4gICAgICAgIHsgc2hhcmVkX2xlbmd0aCA6IGludFxuICAgICAgICA7IHRhaWxfb2ZfYSA6ICdhIGxpc3RcbiAgICAgICAgOyB0YWlsX29mX2IgOiAnYiBsaXN0XG4gICAgICAgIH1cblxuICAoKiBJbiB0aGUgW1VuZXF1YWxfbGVuZ3Roc10gY2FzZSwgYXQgbGVhc3Qgb25lIG9mIHRoZSB0YWlscyB3aWxsIGJlIG5vbi1lbXB0eS4gKilcbiAgbGV0IG9mX2xpc3RzIGwxIGwyID1cbiAgICBsZXQgcmVjIGxvb3AgYSBiIHNoYXJlZF9sZW5ndGggPVxuICAgICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IFtdLCBbXSAtPiBTYW1lX2xlbmd0aCBzaGFyZWRfbGVuZ3RoXG4gICAgICB8IF8gOjogYSwgXyA6OiBiIC0+IGxvb3AgYSBiIChzaGFyZWRfbGVuZ3RoICsgMSlcbiAgICAgIHwgW10sIF8gfCBfLCBbXSAtPiBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2EgPSBhOyB0YWlsX29mX2IgPSBiIH1cbiAgICBpblxuICAgIGxvb3AgbDEgbDIgMFxuICA7O1xuZW5kXG5cbmxldCBjaGVja19sZW5ndGgyX2V4biBuYW1lIGwxIGwyID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMi5vZl9saXN0cyBsMSBsMiB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiAoKVxuICB8IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYTsgdGFpbF9vZl9iIH0gLT5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZFwiXG4gICAgICBuYW1lXG4gICAgICAoc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2EpXG4gICAgICAoc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2IpXG4gICAgICAoKVxuOztcblxubGV0IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmYgPVxuICBtYXRjaCBDaGVja19sZW5ndGgyLm9mX2xpc3RzIGwxIGwyIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+IE9yX3VuZXF1YWxfbGVuZ3Rocy5PayAoZiBsMSBsMilcbiAgfCBVbmVxdWFsX2xlbmd0aHMgXyAtPiBVbmVxdWFsX2xlbmd0aHNcbjs7XG5cbm1vZHVsZSBDaGVja19sZW5ndGgzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPVxuICAgIHwgU2FtZV9sZW5ndGggb2YgaW50XG4gICAgfCBVbmVxdWFsX2xlbmd0aHMgb2ZcbiAgICAgICAgeyBzaGFyZWRfbGVuZ3RoIDogaW50XG4gICAgICAgIDsgdGFpbF9vZl9hIDogJ2EgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYiA6ICdiIGxpc3RcbiAgICAgICAgOyB0YWlsX29mX2MgOiAnYyBsaXN0XG4gICAgICAgIH1cblxuICAoKiBJbiB0aGUgW1VuZXF1YWxfbGVuZ3Roc10gY2FzZSwgYXQgbGVhc3Qgb25lIG9mIHRoZSB0YWlscyB3aWxsIGJlIG5vbi1lbXB0eS4gKilcbiAgbGV0IG9mX2xpc3RzIGwxIGwyIGwzID1cbiAgICBsZXQgcmVjIGxvb3AgYSBiIGMgc2hhcmVkX2xlbmd0aCA9XG4gICAgICBtYXRjaCBhLCBiLCBjIHdpdGhcbiAgICAgIHwgW10sIFtdLCBbXSAtPiBTYW1lX2xlbmd0aCBzaGFyZWRfbGVuZ3RoXG4gICAgICB8IF8gOjogYSwgXyA6OiBiLCBfIDo6IGMgLT4gbG9vcCBhIGIgYyAoc2hhcmVkX2xlbmd0aCArIDEpXG4gICAgICB8IFtdLCBfLCBfIHwgXywgW10sIF8gfCBfLCBfLCBbXSAtPlxuICAgICAgICBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2EgPSBhOyB0YWlsX29mX2IgPSBiOyB0YWlsX29mX2MgPSBjIH1cbiAgICBpblxuICAgIGxvb3AgbDEgbDIgbDMgMFxuICA7O1xuZW5kXG5cbmxldCBjaGVja19sZW5ndGgzX2V4biBuYW1lIGwxIGwyIGwzID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMy5vZl9saXN0cyBsMSBsMiBsMyB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiAoKVxuICB8IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYTsgdGFpbF9vZl9iOyB0YWlsX29mX2MgfSAtPlxuICAgIGxldCBuMSA9IHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9hIGluXG4gICAgbGV0IG4yID0gc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2IgaW5cbiAgICBsZXQgbjMgPSBzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYyBpblxuICAgIGludmFsaWRfYXJnZiBcImxlbmd0aCBtaXNtYXRjaCBpbiAlczogJWQgPD4gJWQgfHwgJWQgPD4gJWRcIiBuYW1lIG4xIG4yIG4yIG4zICgpXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZiA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDMub2ZfbGlzdHMgbDEgbDIgbDMgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gT3JfdW5lcXVhbF9sZW5ndGhzLk9rIChmIGwxIGwyIGwzKVxuICB8IFVuZXF1YWxfbGVuZ3RocyBfIC0+IFVuZXF1YWxfbGVuZ3Roc1xuOztcblxubGV0IGl0ZXIyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooaXRlcjJfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IGl0ZXIyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiaXRlcjJfZXhuXCIgbDEgbDI7XG4gIGl0ZXIyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgcmV2X21hcDIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihyZXZfbWFwMl9vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgcmV2X21hcDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJyZXZfbWFwMl9leG5cIiBsMSBsMjtcbiAgcmV2X21hcDJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBmb2xkMiBsMSBsMiB+aW5pdCB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGZvbGQyX29rIH5pbml0IH5mKSBbQG5vbnRhaWxdXG5cbmxldCBmb2xkMl9leG4gbDEgbDIgfmluaXQgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImZvbGQyX2V4blwiIGwxIGwyO1xuICBmb2xkMl9vayBsMSBsMiB+aW5pdCB+ZlxuOztcblxubGV0IGZvbGRfcmlnaHQyIGwxIGwyIH5mIH5pbml0ID1cbiAgY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZm9sZF9yaWdodDJfb2sgfmYgfmluaXQpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX3JpZ2h0Ml9leG4gbDEgbDIgfmYgfmluaXQgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImZvbGRfcmlnaHQyX2V4blwiIGwxIGwyO1xuICBmb2xkX3JpZ2h0Ml9vayBsMSBsMiB+ZiB+aW5pdFxuOztcblxubGV0IGZvcl9hbGwyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZm9yX2FsbDJfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IGZvcl9hbGwyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZm9yX2FsbDJfZXhuXCIgbDEgbDI7XG4gIGZvcl9hbGwyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgZXhpc3RzMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGV4aXN0czJfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IGV4aXN0czJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJleGlzdHMyX2V4blwiIGwxIGwyO1xuICBleGlzdHMyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgZXF1YWwgYSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgYiA6OiBicyAtPiBlcXVhbCBhIGIgfHwgbG9vcCBlcXVhbCBhIGJzXG4gIGluXG4gIGxvb3AgZXF1YWwgYSB0XG47O1xuXG4oKiBUaGlzIGlzIGEgY29weSBvZiB0aGUgY29kZSBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCB3aXRoIGFuIGV4dHJhIGV0YS1leHBhbnNpb24gdG9cbiAgIGF2b2lkIGNyZWF0aW5nIHBhcnRpYWwgY2xvc3VyZXMgKHNob3dlZCB1cCBmb3IgW2ZpbHRlcl0pIGluIHByb2ZpbGluZykuICopXG5sZXQgcmV2X2ZpbHRlciB0IH5mID1cbiAgbGV0IHJlYyBmaW5kIH5mIGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdVxuICAgIHwgeCA6OiBsIC0+IGlmIGYgeCB0aGVuIGZpbmQgfmYgKHggOjogYWNjdSkgbCBlbHNlIGZpbmQgfmYgYWNjdSBsXG4gIGluXG4gIGZpbmQgfmYgW10gdFxuOztcblxubGV0IGZpbHRlciB0IH5mID0gcmV2IChyZXZfZmlsdGVyIHQgfmYpXG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgKG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGxvb3AgbFxuICAgICAgIHwgU29tZSBfIGFzIHIgLT4gcilcbiAgaW5cbiAgbG9vcCB0IFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kX21hcF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfbWFwX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXAgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcF9leG5cbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIGxvb3AgbFxuICBpblxuICBsb29wIHQgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByZWMgZmluZF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IHggOjogdCAtPiBpZiBmIHggdGhlbiB4IGVsc2UgZmluZF9leG4gdCB+ZlxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfZXhuXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+IGlmIGYgaSB4IHRoZW4gU29tZSAoaSwgeCkgZWxzZSBsb29wIChpICsgMSkgbFxuICBpblxuICBsb29wIDAgdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZGlfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kaV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRpIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gIGZpbmRpX2V4blxuOztcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIChtYXRjaCBmIGkgeCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgbClcbiAgaW5cbiAgbG9vcCAwIHQgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRfbWFwaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfbWFwaV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBpX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcGkgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcGlfZXhuXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gdHJ1ZVxuICAgIHwgaGQgOjogdGwgLT4gZiBpIGhkICYmIGxvb3AgKGkgKyAxKSB0bFxuICBpblxuICBsb29wIDAgdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgaGQgOjogdGwgLT4gZiBpIGhkIHx8IGxvb3AgKGkgKyAxKSB0bFxuICBpblxuICBsb29wIDAgdCBbQG5vbnRhaWxdXG47O1xuXG4oKiogRm9yIHRoZSBjb250YWluZXIgaW50ZXJmYWNlLiAqKVxubGV0IGZvbGRfbGVmdCA9IGZvbGRcblxubGV0IG9mX2FycmF5ID0gQXJyYXkudG9fbGlzdFxubGV0IHRvX2FycmF5ID0gQXJyYXkub2ZfbGlzdFxubGV0IHRvX2xpc3QgdCA9IHRcblxubGV0IG1heF9ub25fdGFpbGNhbGwgPVxuICBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBTeXMuTmF0aXZlIHwgU3lzLkJ5dGVjb2RlIC0+IDFfMDAwXG4gICgqIFdlIGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlIHN0YWNrLCBiZXR0ZXIgYmUgc2FmZSBhbmQgYXNzdW1lIGl0J3Mgc21hbGwuIFRoaXNcbiAgICAgbnVtYmVyIHdhcyB0YWtlbiBmcm9tIG9jYW1sI3N0ZGxpYi9saXN0Lm1sIHdoaWNoIGlzIGFsc28gZXF1YWwgdG8gdGhlIGRlZmF1bHQgbGltaXRcbiAgICAgb2YgcmVjdXJzaXZlIGNhbGwgaW4gdGhlIGpzX29mX29jYW1sIGNvbXBpbGVyIGJlZm9yZSBzd2l0Y2hpbmcgdG8gdHJhbXBvbGluZS4gKilcbiAgfCBTeXMuT3RoZXIgXyAtPiA1MFxuOztcblxuKCoqIFRhaWwgcmVjdXJzaXZlIHZlcnNpb25zIG9mIHN0YW5kYXJkIFtMaXN0XSBtb2R1bGUgKilcblxubGV0IHRhaWxfYXBwZW5kIGwxIGwyID0gcmV2X2FwcGVuZCAocmV2IGwxKSBsMlxuXG4oKiBUaGVyZSBhcmUgYSBmZXcgb3B0aW1pemVkIGxpc3Qgb3BlcmF0aW9ucyBoZXJlLCBpbmNsdWRpbmcgYXBwZW5kIGFuZCBtYXAuICBUaGVyZSBhcmVcbiAgIGJhc2ljYWxseSB0d28gb3B0aW1pemF0aW9ucyBpbiBwbGF5OiBsb29wIHVucm9sbGluZywgYW5kIGR5bmFtaWMgc3dpdGNoaW5nIGJldHdlZW5cbiAgIHN0YWNrIGFuZCBoZWFwIGFsbG9jYXRpb24uXG5cbiAgIFRoZSBsb29wLXVucm9sbGluZyBpcyBzdHJhaWdodGZvcndhcmQsIHdlIGp1c3QgdW5yb2xsIDUgbGV2ZWxzIG9mIHRoZSBsb29wLiAgVGhpcyBtYWtlc1xuICAgZWFjaCBpdGVyYXRpb24gZmFzdGVyLCBhbmQgYWxzbyByZWR1Y2VzIHRoZSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIGNvbnN1bWVkIHBlciBsaXN0XG4gICBlbGVtZW50LlxuXG4gICBUaGUgZHluYW1pYyBzd2l0Y2hpbmcgaXMgZG9uZSBieSBjb3VudGluZyB0aGUgbnVtYmVyIG9mIHN0YWNrIGZyYW1lcywgYW5kIHRoZW5cbiAgIHN3aXRjaGluZyB0byB0aGUgXCJzbG93XCIgaW1wbGVtZW50YXRpb24gd2hlbiB3ZSBleGNlZWQgYSBnaXZlbiBsaW1pdC4gIFRoaXMgbWVhbnMgdGhhdFxuICAgc2hvcnQgbGlzdHMgdXNlIHRoZSBmYXN0IHN0YWNrLWFsbG9jYXRpb24gbWV0aG9kLCBhbmQgbG9uZyBsaXN0cyB1c2UgYSBzbG93ZXIgb25lIHRoYXRcbiAgIGRvZXNuJ3QgcmVxdWlyZSBzdGFjayBzcGFjZS4gKilcbmxldCByZWMgY291bnRfYXBwZW5kIGwxIGwyIGNvdW50ID1cbiAgbWF0Y2ggbDIgd2l0aFxuICB8IFtdIC0+IGwxXG4gIHwgXyAtPlxuICAgIChtYXRjaCBsMSB3aXRoXG4gICAgIHwgW10gLT4gbDJcbiAgICAgfCBbIHgxIF0gLT4geDEgOjogbDJcbiAgICAgfCBbIHgxOyB4MiBdIC0+IHgxIDo6IHgyIDo6IGwyXG4gICAgIHwgWyB4MTsgeDI7IHgzIF0gLT4geDEgOjogeDIgOjogeDMgOjogbDJcbiAgICAgfCBbIHgxOyB4MjsgeDM7IHg0IF0gLT4geDEgOjogeDIgOjogeDMgOjogeDQgOjogbDJcbiAgICAgfCB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiB4NSA6OiB0bCAtPlxuICAgICAgIHgxXG4gICAgICAgOjogeDJcbiAgICAgICA6OiB4M1xuICAgICAgIDo6IHg0XG4gICAgICAgOjogeDVcbiAgICAgICA6OlxuICAgICAgIChpZiBjb3VudCA+IG1heF9ub25fdGFpbGNhbGxcbiAgICAgICAgdGhlbiB0YWlsX2FwcGVuZCB0bCBsMlxuICAgICAgICBlbHNlIGNvdW50X2FwcGVuZCB0bCBsMiAoY291bnQgKyAxKSkpXG47O1xuXG5sZXQgYXBwZW5kIGwxIGwyID0gY291bnRfYXBwZW5kIGwxIGwyIDBcblxuKCogQW4gb3JkaW5hcnkgdGFpbCByZWN1cnNpdmUgbWFwIGJ1aWxkcyB1cCBhbiBpbnRlcm1lZGlhdGUgKHJldmVyc2VkKSByZXByZXNlbnRhdGlvbixcbiAgIHdpdGggb25lIGhlYXAgYWxsb2NhdGVkIG9iamVjdCBwZXIgZWxlbWVudC4gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkIGNodW5rc1xuICAgOSBvYmplY3RzIGludG8gb25lIGhlYXAgYWxsb2NhdGVkIG9iamVjdCwgcmVkdWNpbmcgYWxsb2NhdGlvbiBhbmQgcGVyZm9ybWFuY2UgY29zdHNcbiAgIGFjY29yZGluZ2x5LiBOb3RlIHRoYXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBsaXN0IGlzIGRvbmUgYnkgdGhlIHN0ZGxpYidzIG1hcFxuICAgZnVuY3Rpb24uICopXG5sZXQgdGFpbF9tYXAgeHMgfmY6KGYgW0Bsb2NhbF0pID1cbiAgbGV0IHJlYyByaXNlIHlzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHlzXG4gICAgfCAoeTAsIHkxLCB5MiwgeTMsIHk0LCB5NSwgeTYsIHk3LCB5OCkgOjogYnMgLT5cbiAgICAgIHJpc2UgKHkwIDo6IHkxIDo6IHkyIDo6IHkzIDo6IHk0IDo6IHk1IDo6IHk2IDo6IHk3IDo6IHk4IDo6IHlzKSBic1xuICBpblxuICBsZXQgcmVjIGRpdmUgYnMgPSBmdW5jdGlvblxuICAgIHwgeDAgOjogeDEgOjogeDIgOjogeDMgOjogeDQgOjogeDUgOjogeDYgOjogeDcgOjogeDggOjogeHMgLT5cbiAgICAgIGxldCB5MCA9IGYgeDAgaW5cbiAgICAgIGxldCB5MSA9IGYgeDEgaW5cbiAgICAgIGxldCB5MiA9IGYgeDIgaW5cbiAgICAgIGxldCB5MyA9IGYgeDMgaW5cbiAgICAgIGxldCB5NCA9IGYgeDQgaW5cbiAgICAgIGxldCB5NSA9IGYgeDUgaW5cbiAgICAgIGxldCB5NiA9IGYgeDYgaW5cbiAgICAgIGxldCB5NyA9IGYgeDcgaW5cbiAgICAgIGxldCB5OCA9IGYgeDggaW5cbiAgICAgIGRpdmUgKCh5MCwgeTEsIHkyLCB5MywgeTQsIHk1LCB5NiwgeTcsIHk4KSA6OiBicykgeHNcbiAgICB8IHhzIC0+IHJpc2UgKG5vbnRhaWxfbWFwIH5mIHhzKSBic1xuICBpblxuICBsZXQgcmVzID0gZGl2ZSBbXSB4cyBpblxuICByZXNcbjs7XG5cbmxldCByZWMgY291bnRfbWFwIH5mOihmIFtAbG9jYWxdKSBsIGN0ciA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgWyB4MSBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIFsgZjEgXVxuICB8IFsgeDE7IHgyIF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIFsgZjE7IGYyIF1cbiAgfCBbIHgxOyB4MjsgeDMgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgbGV0IGYzID0gZiB4MyBpblxuICAgIFsgZjE7IGYyOyBmMyBdXG4gIHwgWyB4MTsgeDI7IHgzOyB4NCBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBsZXQgZjMgPSBmIHgzIGluXG4gICAgbGV0IGY0ID0gZiB4NCBpblxuICAgIFsgZjE7IGYyOyBmMzsgZjQgXVxuICB8IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IHg1IDo6IHRsIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBsZXQgZjMgPSBmIHgzIGluXG4gICAgbGV0IGY0ID0gZiB4NCBpblxuICAgIGxldCBmNSA9IGYgeDUgaW5cbiAgICBmMVxuICAgIDo6IGYyXG4gICAgOjogZjNcbiAgICA6OiBmNFxuICAgIDo6IGY1XG4gICAgOjogKGlmIGN0ciA+IG1heF9ub25fdGFpbGNhbGwgdGhlbiB0YWlsX21hcCB+ZiB0bCBlbHNlIGNvdW50X21hcCB+ZiB0bCAoY3RyICsgMSkpXG47O1xuXG5sZXQgbWFwIGwgfmYgPSBjb3VudF9tYXAgfmYgbCAwXG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcCB0IH5mOihmdW4geCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgKCA+PnwgKSBsIGYgPSBtYXAgbCB+ZlxubGV0IG1hcDJfb2sgbDEgbDIgfmYgPSByZXYgKHJldl9tYXAyX29rIGwxIGwyIH5mKVxubGV0IG1hcDIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihtYXAyX29rIH5mKSBbQG5vbnRhaWxdXG5cbmxldCBtYXAyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwibWFwMl9leG5cIiBsMSBsMjtcbiAgbWFwMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IHJldl9tYXAzX29rIGwxIGwyIGwzIH5mID1cbiAgbGV0IHJlYyBsb29wIGwxIGwyIGwzIGFjID1cbiAgICBtYXRjaCBsMSwgbDIsIGwzIHdpdGhcbiAgICB8IFtdLCBbXSwgW10gLT4gYWNcbiAgICB8IHgxIDo6IGwxLCB4MiA6OiBsMiwgeDMgOjogbDMgLT4gbG9vcCBsMSBsMiBsMyAoZiB4MSB4MiB4MyA6OiBhYylcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIGluXG4gIGxvb3AgbDEgbDIgbDMgW10gW0Bub250YWlsXVxuOztcblxubGV0IHJldl9tYXAzIGwxIGwyIGwzIH5mID0gY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZjoocmV2X21hcDNfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IHJldl9tYXAzX2V4biBsMSBsMiBsMyB+ZiA9XG4gIGNoZWNrX2xlbmd0aDNfZXhuIFwicmV2X21hcDNfZXhuXCIgbDEgbDIgbDM7XG4gIHJldl9tYXAzX29rIGwxIGwyIGwzIH5mXG47O1xuXG5sZXQgbWFwM19vayBsMSBsMiBsMyB+ZiA9IHJldiAocmV2X21hcDNfb2sgbDEgbDIgbDMgfmYpXG5sZXQgbWFwMyBsMSBsMiBsMyB+ZiA9IGNoZWNrX2xlbmd0aDMgbDEgbDIgbDMgfmY6KG1hcDNfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IG1hcDNfZXhuIGwxIGwyIGwzIH5mID1cbiAgY2hlY2tfbGVuZ3RoM19leG4gXCJtYXAzX2V4blwiIGwxIGwyIGwzO1xuICBtYXAzX29rIGwxIGwyIGwzIH5mXG47O1xuXG5sZXQgcmVjIHJldl9tYXBfYXBwZW5kIGwxIGwyIH5mID1cbiAgbWF0Y2ggbDEgd2l0aFxuICB8IFtdIC0+IGwyXG4gIHwgaCA6OiB0IC0+IHJldl9tYXBfYXBwZW5kIH5mIHQgKGYgaCA6OiBsMilcbjs7XG5cbmxldCB1bnppcCBsaXN0ID1cbiAgbGV0IHJlYyBsb29wIGxpc3QgbDEgbDIgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbDEsIGwyXG4gICAgfCAoeCwgeSkgOjogdGwgLT4gbG9vcCB0bCAoeCA6OiBsMSkgKHkgOjogbDIpXG4gIGluXG4gIGxvb3AgKHJldiBsaXN0KSBbXSBbXVxuOztcblxubGV0IHVuemlwMyBsaXN0ID1cbiAgbGV0IHJlYyBsb29wIGxpc3QgbDEgbDIgbDMgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbDEsIGwyLCBsM1xuICAgIHwgKHgsIHksIHopIDo6IHRsIC0+IGxvb3AgdGwgKHggOjogbDEpICh5IDo6IGwyKSAoeiA6OiBsMylcbiAgaW5cbiAgbG9vcCAocmV2IGxpc3QpIFtdIFtdIFtdXG47O1xuXG5sZXQgemlwX2V4biBsMSBsMiA9XG4gIHRyeSBtYXAyX29rIH5mOihmdW4gYSBiIC0+IGEsIGIpIGwxIGwyIHdpdGhcbiAgfCBfIC0+IGludmFsaWRfYXJnZiBcImxlbmd0aCBtaXNtYXRjaCBpbiB6aXBfZXhuOiAlZCA8PiAlZFwiIChsZW5ndGggbDEpIChsZW5ndGggbDIpICgpXG47O1xuXG5sZXQgemlwIGwxIGwyID0gbWFwMiB+ZjooZnVuIGEgYiAtPiBhLCBiKSBsMSBsMlxuXG4oKiogQWRkaXRpb25hbCBsaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJldl9tYXBpIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoIDo6IHQgLT4gbG9vcCAoaSArIDEpIChmIGkgaCA6OiBhY2MpIHRcbiAgaW5cbiAgbG9vcCAwIFtdIGwgW0Bub250YWlsXVxuOztcblxubGV0IG1hcGkgbCB+ZiA9IHJldiAocmV2X21hcGkgbCB+ZilcblxubGV0IGZvbGRpbmdfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCBpdGVyaSBsIH5mID1cbiAgaWdub3JlXG4gICAgKGZvbGQgbCB+aW5pdDowIH5mOihmdW4gaSB4IC0+XG4gICAgICAgZiBpIHg7XG4gICAgICAgaSArIDEpXG4gICAgIDogaW50KVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBzbmQgKGZvbGQgdCB+aW5pdDooMCwgaW5pdCkgfmY6KGZ1biAoaSwgYWNjKSB2IC0+IGkgKyAxLCBmIGkgYWNjIHYpKVxuOztcblxubGV0IGZpbHRlcmkgbCB+ZiA9XG4gIHJldiAoZm9sZGkgbCB+ZjooZnVuIHBvcyBhY2MgeCAtPiBpZiBmIHBvcyB4IHRoZW4geCA6OiBhY2MgZWxzZSBhY2MpIH5pbml0OltdKVxuOztcblxubGV0IHJlZHVjZSBsIH5mID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGhkIDo6IHRsIC0+IFNvbWUgKGZvbGQgfmluaXQ6aGQgfmYgdGwpXG47O1xuXG5sZXQgcmVkdWNlX2V4biBsIH5mID1cbiAgbWF0Y2ggcmVkdWNlIGwgfmYgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJlZHVjZV9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgcmVkdWNlX2JhbGFuY2VkIGwgfmYgPVxuICAoKiBDYWxsIHRoZSBcInNpemVcIiBvZiBhIHZhbHVlIHRoZSBudW1iZXIgb2YgbGlzdCBlbGVtZW50cyB0aGF0IGhhdmUgYmVlbiBjb21iaW5lZCBpbnRvXG4gICAgIGl0IHZpYSBjYWxscyB0byBbZl0uICBXZSBwcm9jZWVkIGJ5IHVzaW5nIFtmXSB0byBjb21iaW5lIGVsZW1lbnRzIGluIHRoZSBhY2N1bXVsYXRvclxuICAgICBvZiB0aGUgc2FtZSBzaXplIHVudGlsIHdlIGNhbid0IGNvbWJpbmUgYW55IG1vcmUsIHRoZW4gZ2V0dGluZyBhIG5ldyBlbGVtZW50IGZyb20gdGhlXG4gICAgIGlucHV0IGxpc3QgYW5kIHJlcGVhdGluZy5cblxuICAgICBXaXRoIHRoaXMgc3RyYXRlZ3ksIGluIHRoZSBhY2N1bXVsYXRvcjpcbiAgICAgLSB3ZSBvbmx5IGV2ZXIgaGF2ZSBlbGVtZW50cyBvZiBzaXplcyBhIHBvd2VyIG9mIHR3b1xuICAgICAtIHdlIG5ldmVyIGhhdmUgbW9yZSB0aGFuIG9uZSBlbGVtZW50IG9mIGVhY2ggc2l6ZVxuICAgICAtIHRoZSBzdW0gb2YgYWxsIHRoZSBlbGVtZW50IHNpemVzIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29uc3VtZWRcblxuICAgICBUaGVzZSBjb25kaXRpb25zIGVuZm9yY2UgdGhhdCBsaXN0IG9mIGVsZW1lbnRzIG9mIGVhY2ggc2l6ZSBpcyBwcmVjaXNlbHkgdGhlIGJpbmFyeVxuICAgICBleHBhbnNpb24gb2YgdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb25zdW1lZDogaWYgeW91J3ZlIGNvbnN1bWVkIDEzID0gMGIxMTAxXG4gICAgIGVsZW1lbnRzLCB5b3UgaGF2ZSBvbmUgZWxlbWVudCBvZiBzaXplIDgsIG9uZSBvZiBzaXplIDQsIGFuZCBvbmUgb2Ygc2l6ZSAxLiAgSGVuY2VcbiAgICAgd2hlbiBhIG5ldyBlbGVtZW50IGNvbWVzIGFsb25nLCB0aGUgbnVtYmVyIG9mIGNvbWJpbmluZ3MgeW91IG5lZWQgdG8gZG8gaXMgdGhlIG51bWJlclxuICAgICBvZiB0cmFpbGluZyAxcyBpbiB0aGUgYmluYXJ5IGV4cGFuc2lvbiBvZiBbbnVtXSwgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IGhhdmVcbiAgICAgYWxyZWFkeSBnb25lIGludG8gdGhlIGFjY3VtdWxhdG9yLiAgVGhlIGFjY3VtdWxhdG9yIGlzIGluIGFzY2VuZGluZyBvcmRlciBvZiBzaXplLCBzb1xuICAgICB0aGUgbmV4dCBlbGVtZW50IHRvIGNvbWJpbmUgd2l0aCBpcyBhbHdheXMgdGhlIGhlYWQgb2YgdGhlIGxpc3QuICopXG4gIGxldCByZWMgc3RlcF9hY2N1bSBudW0gYWNjIHggPVxuICAgIGlmIG51bSBsYW5kIDEgPSAwXG4gICAgdGhlbiB4IDo6IGFjY1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYWNjIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAoKiBOZXcgZWxlbWVudHMgZnJvbSBsYXRlciBpbiB0aGUgaW5wdXQgbGlzdCBnbyBvbiB0aGUgZnJvbnQgb2YgdGhlIGFjY3VtdWxhdG9yLCBzb1xuICAgICAgICAgdGhlIGFjY3VtdWxhdG9yIGlzIGluIHJldmVyc2Ugb3JkZXIgd3J0IHRoZSBvcmlnaW5hbCBsaXN0IG9yZGVyLCBoZW5jZSBbZiB5IHhdXG4gICAgICAgICBpbnN0ZWFkIG9mIFtmIHggeV0uICopXG4gICAgICB8IHkgOjogeXMgLT4gc3RlcF9hY2N1bSAobnVtIGFzciAxKSB5cyAoZiB5IHgpKVxuICBpblxuICAoKiBFeHBlcmltZW50YWxseSwgaW5saW5pbmcgW2ZvbGRpXSBhbmQgdW5yb2xsaW5nIHRoaXMgbG9vcCBhIGZldyB0aW1lcyBjYW4gcmVkdWNlXG4gICAgIHJ1bnRpbWUgZG93biB0byBhIHRoaXJkIGFuZCBhbGxvY2F0aW9uIHRvIDEvMTZ0aCBvciBzbyBpbiB0aGUgbWljcm9iZW5jaG1hcmtzIGJlbG93LlxuICAgICBIb3dldmVyLCBpbiBtb3N0IHVzZSBjYXNlcyBbZl0gaXMgbGlrZWx5IHRvIGJlIGV4cGVuc2l2ZSAob3RoZXJ3aXNlIHdoeSBkbyB5b3UgY2FyZVxuICAgICBhYm91dCB0aGUgb3JkZXIgb2YgcmVkdWN0aW9uPykgc28gdGhlIG92ZXJoZWFkIG9mIHRoaXMgZnVuY3Rpb24gaXRzZWxmIGRvZXNuJ3QgcmVhbGx5XG4gICAgIG1hdHRlci4gSWYgeW91IGNvbWUgdXAgd2l0aCBhIHVzZS1jYXNlIHdoZXJlIGl0IGRvZXMsIHRoZW4gdGhhdCdzIHNvbWV0aGluZyB5b3UgbWlnaHRcbiAgICAgd2FudCB0byB0cnk6IHNlZSBoZyBsb2cgLXByIDQ5ZWYwNjVmNDI5ZC4gKilcbiAgbWF0Y2ggZm9sZGkgbCB+aW5pdDpbXSB+ZjpzdGVwX2FjY3VtIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiB4cyAtPiBTb21lIChmb2xkIHhzIH5pbml0OnggfmY6KGZ1biB4IHkgLT4gZiB5IHgpKVxuOztcblxubGV0IHJlZHVjZV9iYWxhbmNlZF9leG4gbCB+ZiA9XG4gIG1hdGNoIHJlZHVjZV9iYWxhbmNlZCBsIH5mIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZWR1Y2VfYmFsYW5jZWRfZXhuXCJcbiAgfCBTb21lIHYgLT4gdlxuOztcblxubGV0IGdyb3VwaSBsIH5icmVhayA9XG4gIGxldCBncm91cHMgPVxuICAgIGZvbGRpIGwgfmluaXQ6W10gfmY6KGZ1biBpIGFjYyB4IC0+XG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBbXSAtPiBbIFsgeCBdIF1cbiAgICAgIHwgY3VycmVudF9ncm91cCA6OiB0bCAtPlxuICAgICAgICBpZiBicmVhayBpIChoZF9leG4gY3VycmVudF9ncm91cCkgeFxuICAgICAgICB0aGVuIFsgeCBdIDo6IGN1cnJlbnRfZ3JvdXAgOjogdGwgKCogc3RhcnQgbmV3IGdyb3VwICopXG4gICAgICAgIGVsc2UgKHggOjogY3VycmVudF9ncm91cCkgOjogdGwpXG4gICAgKCogZXh0ZW5kIGN1cnJlbnQgZ3JvdXAgKilcbiAgaW5cbiAgbWF0Y2ggZ3JvdXBzIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IGwgLT4gcmV2X21hcCBsIH5mOnJldlxuOztcblxubGV0IGdyb3VwIGwgfmJyZWFrID0gZ3JvdXBpIGwgfmJyZWFrOihmdW4gXyB4IHkgLT4gYnJlYWsgeCB5KSBbQG5vbnRhaWxdXG5cbmxldCBzb3J0X2FuZF9ncm91cCBsIH5jb21wYXJlID1cbiAgbCB8PiBzdGFibGVfc29ydCB+Y29tcGFyZSB8PiBncm91cCB+YnJlYWs6KGZ1biB4IHkgLT4gY29tcGFyZSB4IHkgPD4gMClcbjs7XG5cbmxldCBjb25jYXRfbWFwIGwgfmY6KGYgW0Bsb2NhbF0pID1cbiAgbGV0IHJlYyBhdXggYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IGF1eCAocmV2X2FwcGVuZCAoZiBoZCkgYWNjKSB0bFxuICBpblxuICBsZXQgcmVzID0gYXV4IFtdIGwgaW5cbiAgcmVzXG47O1xuXG5sZXQgY29uY2F0X21hcGkgbCB+ZiA9XG4gIGxldCByZWMgYXV4IGNvbnQgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IGF1eCAoY29udCArIDEpIChyZXZfYXBwZW5kIChmIGNvbnQgaGQpIGFjYykgdGxcbiAgaW5cbiAgYXV4IDAgW10gbCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWVyZ2UgbDEgbDIgfmNvbXBhcmUgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGwxIGwyID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgYWNjIGwyXG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBhY2MgbDFcbiAgICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPlxuICAgICAgaWYgY29tcGFyZSBoMSBoMiA8PSAwIHRoZW4gbG9vcCAoaDEgOjogYWNjKSB0MSBsMiBlbHNlIGxvb3AgKGgyIDo6IGFjYykgbDEgdDJcbiAgaW5cbiAgbG9vcCBbXSBsMSBsMiBbQG5vbnRhaWxdXG47O1xuXG5tb2R1bGUgQ2FydGVzaWFuX3Byb2R1Y3QgPSBzdHJ1Y3RcbiAgKCogV2UgYXJlIGV4cGxpY2l0IGFib3V0IHdoYXQgd2UgZXhwb3J0IGZyb20gZnVuY3RvcnMgc28gdGhhdCB3ZSBkb24ndCBhY2NpZGVudGFsbHlcbiAgICAgcmViaW5kIG1vcmUgZWZmaWNpZW50IGxpc3Qtc3BlY2lmaWMgZnVuY3Rpb25zLiAqKVxuXG4gIGxldCBiaW5kID0gY29uY2F0X21hcFxuICBsZXQgbWFwID0gbWFwXG4gIGxldCBtYXAyIGEgYiB+ZiA9IGNvbmNhdF9tYXAgYSB+ZjooZnVuIHggLT4gbWFwIGIgfmY6KGZ1biB5IC0+IGYgeCB5KSlcbiAgbGV0IHJldHVybiB4ID0gWyB4IF1cbiAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGxldCAoID4+PSApIHQgKGYgW0Bsb2NhbF0pID0gYmluZCB0IH5mXG5cbiAgb3BlbiBzdHJ1Y3RcbiAgICBtb2R1bGUgQXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZS5NYWtlX3VzaW5nX21hcDIgKHN0cnVjdFxuICAgICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICAgICAgbGV0IG1hcDIgPSBtYXAyXG4gICAgICBlbmQpXG5cbiAgICBtb2R1bGUgTW9uYWQgPSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgZW5kKVxuICBlbmRcblxuICBsZXQgYWxsID0gTW9uYWQuYWxsXG4gIGxldCBhbGxfdW5pdCA9IE1vbmFkLmFsbF91bml0XG4gIGxldCBpZ25vcmVfbSA9IE1vbmFkLmlnbm9yZV9tXG4gIGxldCBqb2luID0gTW9uYWQuam9pblxuXG4gIG1vZHVsZSBNb25hZF9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoID4+PSApID0gKCA+Pj0gKVxuICBlbmRcblxuICBsZXQgYXBwbHkgPSBBcHBsaWNhdGl2ZS5hcHBseVxuICBsZXQgYm90aCA9IEFwcGxpY2F0aXZlLmJvdGhcbiAgbGV0IG1hcDMgPSBBcHBsaWNhdGl2ZS5tYXAzXG4gIGxldCAoIDwqPiApID0gQXBwbGljYXRpdmUuKCA8Kj4gKVxuICBsZXQgKCAqPiApID0gQXBwbGljYXRpdmUuKCAqPiApXG4gIGxldCAoIDwqICkgPSBBcHBsaWNhdGl2ZS4oIDwqIClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA8Kj4gKSA9IEFwcGxpY2F0aXZlLiggPCo+IClcbiAgICBsZXQgKCAqPiApID0gQXBwbGljYXRpdmUuKCAqPiApXG4gICAgbGV0ICggPCogKSA9IEFwcGxpY2F0aXZlLiggPCogKVxuICBlbmRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA+Pj0gKSA9ICggPj49IClcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcbiAgICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgKENhcnRlc2lhbl9wcm9kdWN0IDogTW9uYWQuU19sb2NhbCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuXG4oKiogcmV0dXJucyBmaW5hbCBlbGVtZW50IG9mIGxpc3QgKilcbmxldCByZWMgbGFzdF9leG4gbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFsgeCBdIC0+IHhcbiAgfCBfIDo6IHRsIC0+IGxhc3RfZXhuIHRsXG4gIHwgW10gLT4gaW52YWxpZF9hcmcgXCJMaXN0Lmxhc3RcIlxuOztcblxuKCoqIG9wdGlvbmFsbHkgcmV0dXJucyBmaW5hbCBlbGVtZW50IG9mIGxpc3QgKilcbmxldCByZWMgbGFzdCBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgWyB4IF0gLT4gU29tZSB4XG4gIHwgXyA6OiB0bCAtPiBsYXN0IHRsXG4gIHwgW10gLT4gTm9uZVxuOztcblxubGV0IHJlYyBpc19wcmVmaXggbGlzdCB+cHJlZml4IH5lcXVhbCA9XG4gIG1hdGNoIHByZWZpeCB3aXRoXG4gIHwgW10gLT4gdHJ1ZVxuICB8IGhkIDo6IHRsIC0+XG4gICAgKG1hdGNoIGxpc3Qgd2l0aFxuICAgICB8IFtdIC0+IGZhbHNlXG4gICAgIHwgaGQnIDo6IHRsJyAtPiBlcXVhbCBoZCBoZCcgJiYgaXNfcHJlZml4IHRsJyB+cHJlZml4OnRsIH5lcXVhbClcbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSB0IH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBhMSA6OiB0IC0+XG4gICAgbGV0IHJlYyBsb29wIGExIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgYTIgOjogdCAtPiBpZiBlcXVhbCBhMSBhMiB0aGVuIFNvbWUgKGExLCBhMikgZWxzZSBsb29wIGEyIHRcbiAgICBpblxuICAgIGxvb3AgYTEgdCBbQG5vbnRhaWxdXG47O1xuXG4oKiByZXR1cm5zIGxpc3Qgd2l0aG91dCBhZGphY2VudCBkdXBsaWNhdGVzICopXG5sZXQgcmVtb3ZlX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZXMgPyh3aGljaF90b19rZWVwID0gYExhc3QpIGxpc3QgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIHRvX2tlZXAgYWNjdW0gPSBmdW5jdGlvblxuICAgIHwgW10gLT4gdG9fa2VlcCA6OiBhY2N1bVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGlmIGVxdWFsIGhkIHRvX2tlZXBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdG9fa2VlcCA9XG4gICAgICAgICAgbWF0Y2ggd2hpY2hfdG9fa2VlcCB3aXRoXG4gICAgICAgICAgfCBgRmlyc3QgLT4gdG9fa2VlcFxuICAgICAgICAgIHwgYExhc3QgLT4gaGRcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCB0b19rZWVwIGFjY3VtIHRsKVxuICAgICAgZWxzZSBsb29wIGhkICh0b19rZWVwIDo6IGFjY3VtKSB0bFxuICBpblxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IGhkIDo6IHRsIC0+IHJldiAobG9vcCBoZCBbXSB0bClcbjs7XG5cbigqKiByZXR1cm5zIHNvcnRlZCB2ZXJzaW9uIG9mIGxpc3Qgd2l0aCBkdXBsaWNhdGVzIHJlbW92ZWQgKilcbmxldCBkZWR1cF9hbmRfc29ydCBsaXN0IH5jb21wYXJlID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgW10gfCBbIF8gXSAtPiBsaXN0ICgqIHBlcmZvcm1hbmNlIGhhY2sgKilcbiAgfCBfIC0+XG4gICAgbGV0IGVxdWFsIHggeCcgPSBjb21wYXJlIHggeCcgPSAwIGluXG4gICAgbGV0IHNvcnRlZCA9IHNvcnQgfmNvbXBhcmUgbGlzdCBpblxuICAgIHJlbW92ZV9jb25zZWN1dGl2ZV9kdXBsaWNhdGVzIH5lcXVhbCBzb3J0ZWQgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRfYV9kdXAgbCB+Y29tcGFyZSA9XG4gIGxldCBzb3J0ZWQgPSBzb3J0IGwgfmNvbXBhcmUgaW5cbiAgbGV0IHJlYyBsb29wIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gfCBbIF8gXSAtPiBOb25lXG4gICAgfCBoZDEgOjogKGhkMiA6OiBfIGFzIHRsKSAtPiBpZiBjb21wYXJlIGhkMSBoZDIgPSAwIHRoZW4gU29tZSBoZDEgZWxzZSBsb29wIHRsXG4gIGluXG4gIGxvb3Agc29ydGVkIFtAbm9udGFpbF1cbjs7XG5cbmxldCBjb250YWluc19kdXAgbHN0IH5jb21wYXJlID1cbiAgbWF0Y2ggZmluZF9hX2R1cCBsc3QgfmNvbXBhcmUgd2l0aFxuICB8IFNvbWUgXyAtPiB0cnVlXG4gIHwgTm9uZSAtPiBmYWxzZVxuOztcblxubGV0IGZpbmRfYWxsX2R1cHMgbCB+Y29tcGFyZSA9XG4gICgqIFdlIGFkZCB0aGlzIHJldmVyc2FsLCBzbyB3ZSBjYW4gc2tpcCBhIFtyZXZdIGF0IHRoZSBlbmQuIFdlIGNvdWxkIHNraXBcbiAgICAgW3Jldl0gYW55d2F5IHNpbmNlIHdlIGRvbiBub3QgZ2l2ZSBhbnkgb3JkZXJpbmcgZ3VhcmFudGVlcywgYnV0IGl0IGlzXG4gICAgIG5pY2UgdG8gZ2V0IHJlc3VsdHMgaW4gbmF0dXJhbCBvcmRlci4gKilcbiAgbGV0IGNvbXBhcmUgYSBiID0gY29tcGFyZSBiIGEgaW5cbiAgbGV0IHNvcnRlZCA9IHNvcnQgfmNvbXBhcmUgbCBpblxuICAoKiBXYWxrIHRoZSBsaXN0IGFuZCByZWNvcmQgdGhlIGZpcnN0IG9mIGVhY2ggY29uc2VjdXRpdmUgcnVuIG9mIGlkZW50aWNhbCBlbGVtZW50cyAqKVxuICBsZXQgcmVjIGxvb3Agc29ydGVkIHByZXYgfmFscmVhZHlfcmVjb3JkZWQgYWNjID1cbiAgICBtYXRjaCBzb3J0ZWQgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgaWYgY29tcGFyZSBwcmV2IGhkIDw+IDBcbiAgICAgIHRoZW4gbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDpmYWxzZSBhY2NcbiAgICAgIGVsc2UgaWYgYWxyZWFkeV9yZWNvcmRlZFxuICAgICAgdGhlbiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOnRydWUgYWNjXG4gICAgICBlbHNlIGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6dHJ1ZSAoaGQgOjogYWNjKVxuICBpblxuICBtYXRjaCBzb3J0ZWQgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgaGQgOjogdGwgLT4gbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDpmYWxzZSBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcmVjIGFsbF9lcXVhbF90byB0IHYgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gdHJ1ZVxuICB8IHggOjogeHMgLT4gZXF1YWwgeCB2ICYmIGFsbF9lcXVhbF90byB4cyB2IH5lcXVhbFxuOztcblxubGV0IGFsbF9lcXVhbCB0IH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IHhzIC0+IGlmIGFsbF9lcXVhbF90byB4cyB4IH5lcXVhbCB0aGVuIFNvbWUgeCBlbHNlIE5vbmVcbjs7XG5cbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgY291bnRpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpZHggY291bnQgYSAtPiBpZiBmIGlkeCBhIHRoZW4gY291bnQgKyAxIGVsc2UgY291bnQpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBpbml0IG4gfmYgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIkxpc3QuaW5pdCAlZFwiIG4gKCk7XG4gIGxldCByZWMgbG9vcCBpIGFjY3VtID1cbiAgICBhc3NlcnQgKGkgPj0gMCk7XG4gICAgaWYgaSA9IDAgdGhlbiBhY2N1bSBlbHNlIGxvb3AgKGkgLSAxKSAoZiAoaSAtIDEpIDo6IGFjY3VtKVxuICBpblxuICBsb29wIG4gW10gW0Bub250YWlsXVxuOztcblxubGV0IHJldl9maWx0ZXJfbWFwIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgbCBhY2N1bSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBhY2N1bVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCBmIGhkIHdpdGhcbiAgICAgICB8IFNvbWUgeCAtPiBsb29wIHRsICh4IDo6IGFjY3VtKVxuICAgICAgIHwgTm9uZSAtPiBsb29wIHRsIGFjY3VtKVxuICBpblxuICBsb29wIGwgW10gW0Bub250YWlsXVxuOztcblxubGV0IGZpbHRlcl9tYXAgbCB+ZiA9IHJldiAocmV2X2ZpbHRlcl9tYXAgbCB+ZilcblxubGV0IHJldl9maWx0ZXJfbWFwaSBsIH5mID1cbiAgbGV0IHJlYyBsb29wIGkgbCBhY2N1bSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBhY2N1bVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCBmIGkgaGQgd2l0aFxuICAgICAgIHwgU29tZSB4IC0+IGxvb3AgKGkgKyAxKSB0bCAoeCA6OiBhY2N1bSlcbiAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpIHRsIGFjY3VtKVxuICBpblxuICBsb29wIDAgbCBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgbCB+ZiA9IHJldiAocmV2X2ZpbHRlcl9tYXBpIGwgfmYpXG5sZXQgZmlsdGVyX29wdCBsID0gZmlsdGVyX21hcCBsIH5mOkZuLmlkXG5cbmxldCBwYXJ0aXRpb24zX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgZnN0IHNuZCB0cmQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gcmV2IGZzdCwgcmV2IHNuZCwgcmV2IHRyZFxuICAgIHwgeCA6OiB0IC0+XG4gICAgICAobWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IGBGc3QgeSAtPiBsb29wIHQgKHkgOjogZnN0KSBzbmQgdHJkXG4gICAgICAgfCBgU25kIHkgLT4gbG9vcCB0IGZzdCAoeSA6OiBzbmQpIHRyZFxuICAgICAgIHwgYFRyZCB5IC0+IGxvb3AgdCBmc3Qgc25kICh5IDo6IHRyZCkpXG4gIGluXG4gIGxvb3AgdCBbXSBbXSBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICBsZXQgZiB4IDogXyBFaXRoZXIudCA9IGlmIGYgeCB0aGVuIEZpcnN0IHggZWxzZSBTZWNvbmQgeCBpblxuICBwYXJ0aXRpb25fbWFwIHQgfmYgW0Bub250YWlsXVxuOztcblxubGV0IHBhcnRpdGlvbl9yZXN1bHQgdCA9IHBhcnRpdGlvbl9tYXAgdCB+ZjpSZXN1bHQudG9fZWl0aGVyXG5cbm1vZHVsZSBBc3NvYyA9IHN0cnVjdFxuICB0eXBlICdhIGtleSA9ICgnYVtAdGFnIFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY19rZXlfdGFnID0gTGlzdCBbXV0pXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGtleV9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBrZXkgPVxuICAgIGZ1biBfb2ZfYV9fMDE4XyAtPiBfb2ZfYV9fMDE4X1xuICA7O1xuXG4gIGxldCBzZXhwX29mX2tleSA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBrZXkgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gX29mX2FfXzAyMF8gLT4gX29mX2FfXzAyMF9cbiAgOztcblxuICBsZXQga2V5X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBrZXkgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIFRhZ2dlZFxuICAgICAgICAgICAgeyBrZXkgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2Nfa2V5X3RhZ1xuICAgICAgICAgICAgOyB2YWx1ZSA9IExpc3QgW11cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgfVxuICAgICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSB2YWx1ZSA9ICgnYVtAdGFnIFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY192YWx1ZV90YWcgPSBMaXN0IFtdXSlcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgdmFsdWVfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdmFsdWUgPVxuICAgIGZ1biBfb2ZfYV9fMDIxXyAtPiBfb2ZfYV9fMDIxX1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3ZhbHVlIDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHZhbHVlIC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuIF9vZl9hX18wMjNfIC0+IF9vZl9hX18wMjNfXG4gIDs7XG5cbiAgbGV0IHZhbHVlX3NleHBfZ3JhbW1hciA6XG4gICAgJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHZhbHVlIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIFRhZ2dlZFxuICAgICAgICAgICAgeyBrZXkgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2NfdmFsdWVfdGFnXG4gICAgICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICAgICAgOyBncmFtbWFyID0gXydhX3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICB9XG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgICgoJ2Ega2V5ICogJ2IgdmFsdWUpIGxpc3RbQHRhZyBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2NfdGFnID0gTGlzdCBbXV0pXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IHRfb2Zfc2V4cCA6XG4gICAgJ2EgJ2IuXG4gICAgKFNleHBsaWIwLlNleHAudCAtPiAnYSlcbiAgICAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICdiKVxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICA9XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDMyXyA9IFwibGlzdC5tbC5Bc3NvYy50XCIgaW5cbiAgICBmdW4gX29mX2FfXzAyNF8gX29mX2JfXzAyNV8geF9fMDMzXyAtPlxuICAgICAgbGlzdF9vZl9zZXhwXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFsgYXJnMF9fMDI3XzsgYXJnMV9fMDI4XyBdIC0+XG4gICAgICAgICAgICBsZXQgcmVzMF9fMDI5XyA9IGtleV9vZl9zZXhwIF9vZl9hX18wMjRfIGFyZzBfXzAyN19cbiAgICAgICAgICAgIGFuZCByZXMxX18wMzBfID0gdmFsdWVfb2Zfc2V4cCBfb2ZfYl9fMDI1XyBhcmcxX18wMjhfIGluXG4gICAgICAgICAgICByZXMwX18wMjlfLCByZXMxX18wMzBfXG4gICAgICAgICAgfCBzZXhwX18wMzFfIC0+XG4gICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkXG4gICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDMyX1xuICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgIHNleHBfXzAzMV8pXG4gICAgICAgIHhfXzAzM19cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAnYi5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2FfXzAzNF8gX29mX2JfXzAzNV8geF9fMDQwXyAtPlxuICAgICAgc2V4cF9vZl9saXN0XG4gICAgICAgIChmdW4gKGFyZzBfXzAzNl8sIGFyZzFfXzAzN18pIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMzhfID0gc2V4cF9vZl9rZXkgX29mX2FfXzAzNF8gYXJnMF9fMDM2X1xuICAgICAgICAgICBhbmQgcmVzMV9fMDM5XyA9IHNleHBfb2ZfdmFsdWUgX29mX2JfXzAzNV8gYXJnMV9fMDM3XyBpblxuICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18wMzhfOyByZXMxX18wMzlfIF0pXG4gICAgICAgIHhfXzA0MF9cbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOlxuICAgICdhICdiLlxuICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgVGFnZ2VkXG4gICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY190YWdcbiAgICAgICAgICAgIDsgdmFsdWUgPSBMaXN0IFtdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPVxuICAgICAgICAgICAgICAgIChsaXN0X3NleHBfZ3JhbW1hclxuICAgICAgICAgICAgICAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgIExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKGtleV9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hcikudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgQ29ucyAoKHZhbHVlX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyKS51bnR5cGVkLCBFbXB0eSkgKSlcbiAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC51bnR5cGVkXG4gICAgICAgICAgICB9XG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgcGFpcl9vZl9ncm91cCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IChrLCBfKSA6OiBfIGFzIGxpc3QgLT4gaywgbWFwIGxpc3QgfmY6c25kXG4gIDs7XG5cbiAgbGV0IGdyb3VwIGFsaXN0IH5lcXVhbCA9XG4gICAgZ3JvdXAgYWxpc3QgfmJyZWFrOihmdW4gKHgsIF8pICh5LCBfKSAtPiBub3QgKGVxdWFsIHggeSkpIHw+IG1hcCB+ZjpwYWlyX29mX2dyb3VwXG4gIDs7XG5cbiAgbGV0IHNvcnRfYW5kX2dyb3VwIGFsaXN0IH5jb21wYXJlID1cbiAgICBzb3J0X2FuZF9ncm91cCBhbGlzdCB+Y29tcGFyZTooZnVuICh4LCBfKSAoeSwgXykgLT4gY29tcGFyZSB4IHkpXG4gICAgfD4gbWFwIH5mOnBhaXJfb2ZfZ3JvdXBcbiAgOztcblxuICBsZXQgZmluZCB0IH5lcXVhbCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZjooZnVuIChrZXknLCBfKSAtPiBlcXVhbCBrZXkga2V5Jykgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gU29tZSAoc25kIHgpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuID1cbiAgICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LkFzc29jLmZpbmRfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgICBsZXQgZmluZF9leG4gdCB+ZXF1YWwga2V5ID1cbiAgICAgIG1hdGNoIGZpbmQgdCBrZXkgfmVxdWFsIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICAgIHwgU29tZSB2YWx1ZSAtPiB2YWx1ZVxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGZpbmRfZXhuXG4gIDs7XG5cbiAgbGV0IG1lbSB0IH5lcXVhbCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZXF1YWwga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgXyAtPiB0cnVlXG4gIDs7XG5cbiAgbGV0IHJlbW92ZSB0IH5lcXVhbCBrZXkgPSBmaWx0ZXIgdCB+ZjooZnVuIChrZXknLCBfKSAtPiBub3QgKGVxdWFsIGtleSBrZXknKSkgW0Bub250YWlsXVxuXG4gIGxldCBhZGQgdCB+ZXF1YWwga2V5IHZhbHVlID1cbiAgICAoKiB0aGUgcmVtb3ZlIGRvZXNuJ3QgY2hhbmdlIHRoZSBtYXAgc2VtYW50aWNzLCBidXQga2VlcHMgdGhlIGxpc3Qgc21hbGwgKilcbiAgICAoa2V5LCB2YWx1ZSkgOjogcmVtb3ZlIHQgfmVxdWFsIGtleVxuICA7O1xuXG4gIGxldCBpbnZlcnNlIHQgPSBtYXAgdCB+ZjooZnVuICh4LCB5KSAtPiB5LCB4KVxuICBsZXQgbWFwIHQgfmYgPSBtYXAgdCB+ZjooZnVuIChrZXksIHZhbHVlKSAtPiBrZXksIGYgdmFsdWUpIFtAbm9udGFpbF1cbmVuZFxuXG5sZXQgc3ViIGwgfnBvcyB+bGVuID1cbiAgKCogV2UgdXNlIFtwb3MgPiBsZW5ndGggbCAtIGxlbl0gcmF0aGVyIHRoYW4gW3BvcyArIGxlbiA+IGxlbmd0aCBsXSB0byBhdm9pZCB0aGVcbiAgICAgcG9zc2liaWxpdHkgb2Ygb3ZlcmZsb3cuICopXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgPiBsZW5ndGggbCAtIGxlbiB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5zdWJcIjtcbiAgcmV2XG4gICAgKGZvbGRpIGwgfmluaXQ6W10gfmY6KGZ1biBpIGFjYyBlbCAtPlxuICAgICAgIGlmIGkgPj0gcG9zICYmIGkgPCBwb3MgKyBsZW4gdGhlbiBlbCA6OiBhY2MgZWxzZSBhY2MpKVxuOztcblxubGV0IHNwbGl0X24gdF9vcmlnIG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBbXSwgdF9vcmlnXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBuIHQgYWNjdW0gPVxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gcmV2IGFjY3VtLCB0XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgW10gLT4gdF9vcmlnLCBbXSAoKiBpbiB0aGlzIGNhc2UsIHRfb3JpZyA9IHJldiBhY2N1bSAqKVxuICAgICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgKG4gLSAxKSB0bCAoaGQgOjogYWNjdW0pKVxuICAgIGluXG4gICAgbG9vcCBuIHRfb3JpZyBbXSlcbjs7XG5cbigqIGNvcGllZCBmcm9tIFtzcGxpdF9uXSB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgKilcbmxldCB0YWtlIHRfb3JpZyBuID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gW11cbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIG4gdCBhY2N1bSA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiByZXYgYWNjdW1cbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiB0X29yaWdcbiAgICAgICAgfCBoZCA6OiB0bCAtPiBsb29wIChuIC0gMSkgdGwgKGhkIDo6IGFjY3VtKSlcbiAgICBpblxuICAgIGxvb3AgbiB0X29yaWcgW10pXG47O1xuXG5sZXQgcmVjIGRyb3AgdCBuID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgXyA6OiB0bCB3aGVuIG4gPiAwIC0+IGRyb3AgdGwgKG4gLSAxKVxuICB8IHQgLT4gdFxuOztcblxubGV0IGNodW5rc19vZiBsIH5sZW5ndGggPVxuICBpZiBsZW5ndGggPD0gMCB0aGVuIGludmFsaWRfYXJnZiBcIkxpc3QuY2h1bmtzX29mOiBFeHBlY3RlZCBsZW5ndGggPiAwLCBnb3QgJWRcIiBsZW5ndGggKCk7XG4gIGxldCByZWMgYXV4IG9mX2xlbmd0aCBhY2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCBfIDo6IF8gLT5cbiAgICAgIGxldCBzdWJsaXN0LCBsID0gc3BsaXRfbiBsIGxlbmd0aCBpblxuICAgICAgYXV4IG9mX2xlbmd0aCAoc3VibGlzdCA6OiBhY2MpIGxcbiAgaW5cbiAgYXV4IGxlbmd0aCBbXSBsXG47O1xuXG5sZXQgc3BsaXRfd2hpbGUgeHMgfmYgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIHdoZW4gZiBoZCAtPiBsb29wIChoZCA6OiBhY2MpIHRsXG4gICAgfCB0IC0+IHJldiBhY2MsIHRcbiAgaW5cbiAgbG9vcCBbXSB4cyBbQG5vbnRhaWxdXG47O1xuXG4oKiBjb3BpZWQgZnJvbSBbc3BsaXRfd2hpbGVdIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSAqKVxubGV0IHRha2Vfd2hpbGUgeHMgfmYgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIHdoZW4gZiBoZCAtPiBsb29wIChoZCA6OiBhY2MpIHRsXG4gICAgfCBfIC0+IHJldiBhY2NcbiAgaW5cbiAgbG9vcCBbXSB4cyBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcmVjIGRyb3Bfd2hpbGUgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IGhkIDo6IHRsIHdoZW4gZiBoZCAtPiBkcm9wX3doaWxlIHRsIH5mXG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgZHJvcF9sYXN0IHQgPVxuICBtYXRjaCByZXYgdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IF8gOjogbHN0IC0+IFNvbWUgKHJldiBsc3QpXG47O1xuXG5sZXQgZHJvcF9sYXN0X2V4biB0ID1cbiAgbWF0Y2ggZHJvcF9sYXN0IHQgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJMaXN0LmRyb3BfbGFzdF9leG46IGVtcHR5IGxpc3RcIlxuICB8IFNvbWUgbHN0IC0+IGxzdFxuOztcblxubGV0IGNhcnRlc2lhbl9wcm9kdWN0IGxpc3QxIGxpc3QyID1cbiAgaWYgaXNfZW1wdHkgbGlzdDJcbiAgdGhlbiBbXVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgbDEgbDIgYWNjdW0gPVxuICAgICAgbWF0Y2ggbDEgd2l0aFxuICAgICAgfCBbXSAtPiBhY2N1bVxuICAgICAgfCBoZCA6OiB0bCAtPiBsb29wIHRsIGwyIChyZXZfYXBwZW5kIChtYXAgfmY6KGZ1biB4IC0+IGhkLCB4KSBsMikgYWNjdW0pXG4gICAgaW5cbiAgICByZXYgKGxvb3AgbGlzdDEgbGlzdDIgW10pKVxuOztcblxubGV0IGNvbmNhdCBsID0gZm9sZF9yaWdodCBsIH5pbml0OltdIH5mOmFwcGVuZFxubGV0IGNvbmNhdF9ub19vcmRlciBsID0gZm9sZCBsIH5pbml0OltdIH5mOihmdW4gYWNjIGwgLT4gcmV2X2FwcGVuZCBsIGFjYylcbmxldCBjb25zIHggbCA9IHggOjogbFxuXG5sZXQgaXNfc29ydGVkIGwgfmNvbXBhcmUgPVxuICBsZXQgcmVjIGxvb3AgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSB8IFsgXyBdIC0+IHRydWVcbiAgICB8IHgxIDo6ICh4MiA6OiBfIGFzIHJlc3QpIC0+IGNvbXBhcmUgeDEgeDIgPD0gMCAmJiBsb29wIHJlc3RcbiAgaW5cbiAgbG9vcCBsIFtAbm9udGFpbF1cbjs7XG5cbmxldCBpc19zb3J0ZWRfc3RyaWN0bHkgbCB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIHwgWyBfIF0gLT4gdHJ1ZVxuICAgIHwgeDEgOjogKHgyIDo6IF8gYXMgcmVzdCkgLT4gY29tcGFyZSB4MSB4MiA8IDAgJiYgbG9vcCByZXN0XG4gIGluXG4gIGxvb3AgbCBbQG5vbnRhaWxdXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggQCApID0gYXBwZW5kXG5lbmRcblxubGV0IHBlcm11dGUgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICAoKiBzcGVjaWFsIGNhc2VzIHRvIHNwZWVkIHRoaW5ncyB1cCBpbiB0cml2aWFsIGNhc2VzICopXG4gIHwgW10gfCBbIF8gXSAtPiBsaXN0XG4gIHwgWyB4OyB5IF0gLT4gaWYgUmFuZG9tLlN0YXRlLmJvb2wgcmFuZG9tX3N0YXRlIHRoZW4gWyB5OyB4IF0gZWxzZSBsaXN0XG4gIHwgXyAtPlxuICAgIGxldCBhcnIgPSBBcnJheS5vZl9saXN0IGxpc3QgaW5cbiAgICBBcnJheV9wZXJtdXRlLnBlcm11dGUgYXJyIH5yYW5kb21fc3RhdGU7XG4gICAgQXJyYXkudG9fbGlzdCBhcnJcbjs7XG5cbmxldCByYW5kb21fZWxlbWVudF9leG4gPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIGlmIGlzX2VtcHR5IGxpc3RcbiAgdGhlbiBmYWlsd2l0aCBcIkxpc3QucmFuZG9tX2VsZW1lbnRfZXhuOiBlbXB0eSBsaXN0XCJcbiAgZWxzZSBudGhfZXhuIGxpc3QgKFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChsZW5ndGggbGlzdCkpXG47O1xuXG5sZXQgcmFuZG9tX2VsZW1lbnQgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIHRyeSBTb21lIChyYW5kb21fZWxlbWVudF9leG4gfnJhbmRvbV9zdGF0ZSBsaXN0KSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGNvbXBhcmUgY21wIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgIGxldCBuID0gY21wIHggeSBpblxuICAgIGlmIG4gPSAwIHRoZW4gY29tcGFyZSBjbXAgeHMgeXMgZWxzZSBuXG47O1xuXG5sZXQgaGFzaF9mb2xkX3QgPSBoYXNoX2ZvbGRfbGlzdFxuXG5sZXQgZXF1YWxfbG9jYWwgKChlcXVhbCA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgdDEgdDIgPVxuICBsZXQgcmVjIGxvb3AgfmVxdWFsIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgW10sIFtdIC0+IHRydWVcbiAgICB8IHgxIDo6IHQxLCB4MiA6OiB0MiAtPiBlcXVhbCB4MSB4MiAmJiBsb29wIH5lcXVhbCB0MSB0MlxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBsb29wIH5lcXVhbCB0MSB0MlxuOztcblxubGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gIGZ1biBmIHggeSAtPiBlcXVhbF9sb2NhbCBmIHggeVxuOztcblxubGV0IHRyYW5zcG9zZSA9XG4gIGxldCByZWMgc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiB0IGNvbHVtbl9hY2MgdHJpbW1lZCBmb3VuZF9lbXB0eSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBjb2x1bW5fYWNjLCB0cmltbWVkLCBmb3VuZF9lbXB0eVxuICAgIHwgW10gOjogdGwgLT4gc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiB0bCBjb2x1bW5fYWNjIHRyaW1tZWQgdHJ1ZVxuICAgIHwgKHggOjogeHMpIDo6IHRsIC0+XG4gICAgICBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHRsICh4IDo6IGNvbHVtbl9hY2MpICh4cyA6OiB0cmltbWVkKSBmb3VuZF9lbXB0eVxuICBpblxuICBsZXQgc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiByb3dzID0gc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiByb3dzIFtdIFtdIGZhbHNlIGluXG4gIGxldCByZWMgbG9vcCByb3dzIGNvbHVtbnMgZG9fcmV2ID1cbiAgICBtYXRjaCBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3Mgd2l0aFxuICAgIHwgW10sIFtdLCBfIC0+IFNvbWUgKHJldiBjb2x1bW5zKVxuICAgIHwgY29sdW1uLCB0cmltbWVkX3Jvd3MsIGZvdW5kX2VtcHR5IC0+XG4gICAgICBpZiBmb3VuZF9lbXB0eVxuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGNvbHVtbiA9IGlmIGRvX3JldiB0aGVuIHJldiBjb2x1bW4gZWxzZSBjb2x1bW4gaW5cbiAgICAgICAgbG9vcCB0cmltbWVkX3Jvd3MgKGNvbHVtbiA6OiBjb2x1bW5zKSAobm90IGRvX3JldikpXG4gIGluXG4gIGZ1biB0IC0+IGxvb3AgdCBbXSB0cnVlXG47O1xuXG5leGNlcHRpb24gVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyBvZiBpbnQgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3Roc11cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyBhcmcwX18wNDFfIC0+XG4gICAgICAgIGxldCByZXMwX18wNDJfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfaW50IGFyZzBfXzA0MV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaXN0Lm1sLlRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHNcIlxuICAgICAgICAgIDsgcmVzMF9fMDQyX1xuICAgICAgICAgIF1cbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdHJhbnNwb3NlX2V4biBsID1cbiAgbWF0Y2ggdHJhbnNwb3NlIGwgd2l0aFxuICB8IFNvbWUgbCAtPiBsXG4gIHwgTm9uZSAtPiByYWlzZSAoVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyAobWFwIGwgfmY6bGVuZ3RoKSlcbjs7XG5cbmxldCBpbnRlcnNwZXJzZSB0IH5zZXAgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IHggOjogeHMgLT4geCA6OiBmb2xkX3JpZ2h0IHhzIH5pbml0OltdIH5mOihmdW4geSBhY2MgLT4gc2VwIDo6IHkgOjogYWNjKVxuOztcblxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG5cbmxldCBpc19zdWZmaXggbGlzdCB+c3VmZml4IH5lcXVhbDooKGVxdWFsX2VsdCA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgbGlzdF9sZW4gPSBsZW5ndGggbGlzdCBpblxuICBsZXQgc3VmZml4X2xlbiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGlzdF9sZW4gPj0gc3VmZml4X2xlblxuICAmJiBlcXVhbF9sb2NhbCBlcXVhbF9lbHQgKGRyb3AgbGlzdCAobGlzdF9sZW4gLSBzdWZmaXhfbGVuKSkgc3VmZml4XG47O1xuIiwiKCogVGhpcyBtb2R1bGUgaXMgdHJ5aW5nIHRvIG1pbmltaXplIGRlcGVuZGVuY2llcyBvbiBtb2R1bGVzIGluIENvcmUsIHNvIGFzIHRvIGFsbG93XG4gICBbSW5mb10sIFtFcnJvcl0sIGFuZCBbT3JfZXJyb3JdIHRvIGJlIHVzZWQgaW4gYXMgbWFueSBwbGFjZXMgYXMgcG9zc2libGUuIFBsZWFzZSBhdm9pZFxuICAgYWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbmZvX2ludGZcbm1vZHVsZSBDaGFyID0gQ2hhcjBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbm1vZHVsZSBNZXNzYWdlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IG9mIFNleHAudFxuICAgIHwgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgRXhuIG9mIGV4blxuICAgIHwgU2V4cCBvZiBTZXhwLnRcbiAgICB8IFRhZ19zZXhwIG9mIHN0cmluZyAqIFNleHAudCAqIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC50IG9wdGlvblxuICAgIHwgVGFnX3Qgb2Ygc3RyaW5nICogdFxuICAgIHwgVGFnX2FyZyBvZiBzdHJpbmcgKiBTZXhwLnQgKiB0XG4gICAgfCBPZl9saXN0IG9mIGludCBvcHRpb24gKiB0IGxpc3RcbiAgICB8IFdpdGhfYmFja3RyYWNlIG9mIHQgKiBzdHJpbmcgKCogYmFja3RyYWNlICopXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGxldCByZWMgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBhcmcwX18wMDFfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDJfID0gU2V4cC5zZXhwX29mX3QgYXJnMF9fMDAxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJDb3VsZF9ub3RfY29uc3RydWN0XCI7IHJlczBfXzAwMl8gXVxuICAgICAgfCBTdHJpbmcgYXJnMF9fMDAzXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA0XyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwM18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU3RyaW5nXCI7IHJlczBfXzAwNF8gXVxuICAgICAgfCBFeG4gYXJnMF9fMDA1XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA2XyA9IHNleHBfb2ZfZXhuIGFyZzBfXzAwNV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXhuXCI7IHJlczBfXzAwNl8gXVxuICAgICAgfCBTZXhwIGFyZzBfXzAwN18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwOF8gPSBTZXhwLnNleHBfb2ZfdCBhcmcwX18wMDdfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlNleHBcIjsgcmVzMF9fMDA4XyBdXG4gICAgICB8IFRhZ19zZXhwIChhcmcwX18wMDlfLCBhcmcxX18wMTBfLCBhcmcyX18wMTFfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDEyXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwOV9cbiAgICAgICAgYW5kIHJlczFfXzAxM18gPSBTZXhwLnNleHBfb2ZfdCBhcmcxX18wMTBfXG4gICAgICAgIGFuZCByZXMyX18wMTRfID0gc2V4cF9vZl9vcHRpb24gU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdCBhcmcyX18wMTFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVGFnX3NleHBcIjsgcmVzMF9fMDEyXzsgcmVzMV9fMDEzXzsgcmVzMl9fMDE0XyBdXG4gICAgICB8IFRhZ190IChhcmcwX18wMTVfLCBhcmcxX18wMTZfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDE3XyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAxNV9cbiAgICAgICAgYW5kIHJlczFfXzAxOF8gPSBzZXhwX29mX3QgYXJnMV9fMDE2XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfdFwiOyByZXMwX18wMTdfOyByZXMxX18wMThfIF1cbiAgICAgIHwgVGFnX2FyZyAoYXJnMF9fMDE5XywgYXJnMV9fMDIwXywgYXJnMl9fMDIxXykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMTlfXG4gICAgICAgIGFuZCByZXMxX18wMjNfID0gU2V4cC5zZXhwX29mX3QgYXJnMV9fMDIwX1xuICAgICAgICBhbmQgcmVzMl9fMDI0XyA9IHNleHBfb2ZfdCBhcmcyX18wMjFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVGFnX2FyZ1wiOyByZXMwX18wMjJfOyByZXMxX18wMjNfOyByZXMyX18wMjRfIF1cbiAgICAgIHwgT2ZfbGlzdCAoYXJnMF9fMDI1XywgYXJnMV9fMDI2XykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAyN18gPSBzZXhwX29mX29wdGlvbiBzZXhwX29mX2ludCBhcmcwX18wMjVfXG4gICAgICAgIGFuZCByZXMxX18wMjhfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfdCBhcmcxX18wMjZfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9mX2xpc3RcIjsgcmVzMF9fMDI3XzsgcmVzMV9fMDI4XyBdXG4gICAgICB8IFdpdGhfYmFja3RyYWNlIChhcmcwX18wMjlfLCBhcmcxX18wMzBfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDMxXyA9IHNleHBfb2ZfdCBhcmcwX18wMjlfXG4gICAgICAgIGFuZCByZXMxX18wMzJfID0gc2V4cF9vZl9zdHJpbmcgYXJnMV9fMDMwXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJXaXRoX2JhY2t0cmFjZVwiOyByZXMwX18wMzFfOyByZXMxX18wMzJfIF1cbiAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCByZWMgdG9fc3RyaW5nc19odW0gdCBhYyA9XG4gICAgKCogV2UgdXNlIFtTZXhwLnRvX3N0cmluZ19tYWNoXSwgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHdlIGFyZSBpbXBsZW1lbnRpbmdcbiAgICAgICBbdG9fc3RyaW5nc19odW1dLCBiZWNhdXNlIHdlIHdhbnQgdGhlIGluZm8gdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUsIGFuZCBvbmNlIHdlJ3ZlXG4gICAgICAgaGFkIHRvIHJlc29ydCB0byBzZXhwcywgdGhlIG1lc3NhZ2UgaXMgZ29pbmcgdG8gc3RhcnQgbm90IGxvb2tpbmcgc28gcHJldHR5XG4gICAgICAgYW55d2F5LiAqKVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBzZXhwIC0+XG4gICAgICBcImNvdWxkIG5vdCBjb25zdHJ1Y3QgaW5mbzogXCIgOjogU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IGFjXG4gICAgfCBTdHJpbmcgc3RyaW5nIC0+IHN0cmluZyA6OiBhY1xuICAgIHwgRXhuIGV4biAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIChFeG4uc2V4cF9vZl90IGV4bikgOjogYWNcbiAgICB8IFNleHAgc2V4cCAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFRhZ19zZXhwICh0YWcsIHNleHAsIF8pIC0+IHRhZyA6OiBcIjogXCIgOjogU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IGFjXG4gICAgfCBUYWdfdCAodGFnLCB0KSAtPiB0YWcgOjogXCI6IFwiIDo6IHRvX3N0cmluZ3NfaHVtIHQgYWNcbiAgICB8IFRhZ19hcmcgKHRhZywgc2V4cCwgdCkgLT5cbiAgICAgIGxldCBib2R5ID0gU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IFwiOiBcIiA6OiB0b19zdHJpbmdzX2h1bSB0IGFjIGluXG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHRhZyA9IDAgdGhlbiBib2R5IGVsc2UgdGFnIDo6IFwiOiBcIiA6OiBib2R5XG4gICAgfCBXaXRoX2JhY2t0cmFjZSAodCwgYmFja3RyYWNlKSAtPlxuICAgICAgdG9fc3RyaW5nc19odW0gdCAoXCJcXG5CYWNrdHJhY2U6XFxuXCIgOjogYmFja3RyYWNlIDo6IGFjKVxuICAgIHwgT2ZfbGlzdCAodHJ1bmNfYWZ0ZXIsIHRzKSAtPlxuICAgICAgbGV0IHRzID1cbiAgICAgICAgbWF0Y2ggdHJ1bmNfYWZ0ZXIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHNcbiAgICAgICAgfCBTb21lIG1heCAtPlxuICAgICAgICAgIGxldCBuID0gTGlzdC5sZW5ndGggdHMgaW5cbiAgICAgICAgICBpZiBuIDw9IG1heFxuICAgICAgICAgIHRoZW4gdHNcbiAgICAgICAgICBlbHNlIExpc3QudGFrZSB0cyBtYXggQCBbIFN0cmluZyAoUHJpbnRmLnNwcmludGYgXCJhbmQgJWQgbW9yZSBpbmZvXCIgKG4gLSBtYXgpKSBdXG4gICAgICBpblxuICAgICAgTGlzdC5mb2xkIChMaXN0LnJldiB0cykgfmluaXQ6YWMgfmY6KGZ1biBhYyB0IC0+XG4gICAgICAgIHRvX3N0cmluZ3NfaHVtIHQgKGlmIExpc3QuaXNfZW1wdHkgYWMgdGhlbiBhYyBlbHNlIFwiOyBcIiA6OiBhYykpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCB0ID0gU3RyaW5nLmNvbmNhdCAodG9fc3RyaW5nc19odW0gdCBbXSlcblxuICAoKiBMaWtlIFtTdHJpbmcuc3BsaXRfbGluZXNdLCBidXQgbGVzcyBvcHRpbWl6ZWQgYW5kIGRvZXNuJ3QgaGFuZGxlIFtcXHJcXG5dLiBBdm9pZHMgYVxuICAgICBkZXBlbmRlbmN5IGN5Y2xlLiBJbXByb3ZlcyBvbiBuYWl2ZSBbU3RyaW5nLnNwbGl0X29uX2NoYXJdIGJ5IHJlbW92aW5nIGVtcHR5IGZpbmFsXG4gICAgIGxpbmUuICopXG4gIGxldCBzcGxpdF9saW5lcyBzdHJpbmcgPVxuICAgIGxldCBzdHJpbmcgPVxuICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICBpZiBsZW4gPiAwICYmIENoYXIuZXF1YWwgJ1xcbicgKFN0cmluZy5nZXQgc3RyaW5nIChsZW4gLSAxKSlcbiAgICAgIHRoZW4gU3RyaW5nLnN1YiBzdHJpbmcgfnBvczowIH5sZW46KGxlbiAtIDEpXG4gICAgICBlbHNlIHN0cmluZ1xuICAgIGluXG4gICAgU3RyaW5nLnNwbGl0X29uX2NoYXIgc3RyaW5nIH5zZXA6J1xcbidcbiAgOztcblxuICBsZXQgcmVjIHRvX3NleHBzX2h1bSB0IGFjID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3QgXyBhcyB0IC0+IHNleHBfb2ZfdCB0IDo6IGFjXG4gICAgfCBTdHJpbmcgc3RyaW5nIC0+IEF0b20gc3RyaW5nIDo6IGFjXG4gICAgfCBFeG4gZXhuIC0+IEV4bi5zZXhwX29mX3QgZXhuIDo6IGFjXG4gICAgfCBTZXhwIHNleHAgLT4gc2V4cCA6OiBhY1xuICAgIHwgVGFnX3NleHAgKHRhZywgc2V4cCwgaGVyZSkgLT5cbiAgICAgIExpc3RcbiAgICAgICAgKEF0b20gdGFnXG4gICAgICAgICA6OiBzZXhwXG4gICAgICAgICA6OlxuICAgICAgICAgKG1hdGNoIGhlcmUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBoZXJlIC0+IFsgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdCBoZXJlIF0pKVxuICAgICAgOjogYWNcbiAgICB8IFRhZ190ICh0YWcsIHQpIC0+IExpc3QgKEF0b20gdGFnIDo6IHRvX3NleHBzX2h1bSB0IFtdKSA6OiBhY1xuICAgIHwgVGFnX2FyZyAodGFnLCBzZXhwLCB0KSAtPlxuICAgICAgbGV0IGJvZHkgPSBzZXhwIDo6IHRvX3NleHBzX2h1bSB0IFtdIGluXG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHRhZyA9IDAgdGhlbiBMaXN0IGJvZHkgOjogYWMgZWxzZSBMaXN0IChBdG9tIHRhZyA6OiBib2R5KSA6OiBhY1xuICAgIHwgV2l0aF9iYWNrdHJhY2UgKHQsIGJhY2t0cmFjZSkgLT5cbiAgICAgIFNleHAuTGlzdCBbIHRvX3NleHBfaHVtIHQ7IHNleHBfb2ZfbGlzdCBzZXhwX29mX3N0cmluZyAoc3BsaXRfbGluZXMgYmFja3RyYWNlKSBdXG4gICAgICA6OiBhY1xuICAgIHwgT2ZfbGlzdCAoXywgdHMpIC0+XG4gICAgICBMaXN0LmZvbGQgKExpc3QucmV2IHRzKSB+aW5pdDphYyB+ZjooZnVuIGFjIHQgLT4gdG9fc2V4cHNfaHVtIHQgYWMpXG5cbiAgYW5kIHRvX3NleHBfaHVtIHQgPVxuICAgIG1hdGNoIHRvX3NleHBzX2h1bSB0IFtdIHdpdGhcbiAgICB8IFsgc2V4cCBdIC0+IHNleHBcbiAgICB8IHNleHBzIC0+IFNleHAuTGlzdCBzZXhwc1xuICA7O1xuXG4gICgqIFdlIHVzZSBbcHJvdGVjdF0gdG8gZ3VhcmQgYWdhaW5zdCBleGNlcHRpb25zIHJhaXNlZCBieSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9ucywgc29cbiAgICAgdGhhdCBmYWlsdXJlIHRvIHByb2R1Y2Ugb25lIHBhcnQgb2YgYW4gaW5mbyBkb2Vzbid0IGludGVyZmVyZSB3aXRoIG90aGVyIHBhcnRzLiAqKVxuICBsZXQgcHJvdGVjdCBmID1cbiAgICB0cnkgZiAoKSB3aXRoXG4gICAgfCBleG4gLT4gQ291bGRfbm90X2NvbnN0cnVjdCAoRXhuLnNleHBfb2ZfdCBleG4pXG4gIDs7XG5cbiAgbGV0IG9mX2luZm8gaW5mbyA9IHByb3RlY3QgKGZ1biAoKSAtPiBMYXp5LmZvcmNlIGluZm8pXG4gIGxldCB0b19pbmZvIHQgPSBsYXp5IHRcbmVuZFxuXG5vcGVuIE1lc3NhZ2VcblxudHlwZSB0ID0gTWVzc2FnZS50IExhenkudFxuXG5sZXQgaW52YXJpYW50IF8gPSAoKVxubGV0IHRvX21lc3NhZ2UgPSBNZXNzYWdlLm9mX2luZm9cbmxldCBvZl9tZXNzYWdlID0gTWVzc2FnZS50b19pbmZvXG5cbigqIEl0IGlzIE9LIHRvIHVzZSBbTWVzc2FnZS50b19zZXhwX2h1bV0sIHdoaWNoIGlzIG5vdCBzdGFibGUsIGJlY2F1c2UgW3Rfb2Zfc2V4cF0gYmVsb3dcbiAgIGNhbiBoYW5kbGUgYW55IHNleHAuICopXG5sZXQgc2V4cF9vZl90IHQgPSBNZXNzYWdlLnRvX3NleHBfaHVtICh0b19tZXNzYWdlIHQpXG5sZXQgdF9vZl9zZXhwIHNleHAgPSBsYXp5IChNZXNzYWdlLlNleHAgc2V4cClcbmxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHsgdW50eXBlZCA9IEFueSBcIkluZm8udFwiIH1cbmxldCBjb21wYXJlIHQxIHQyID0gU2V4cC5jb21wYXJlIChzZXhwX29mX3QgdDEpIChzZXhwX29mX3QgdDIpXG5sZXQgZXF1YWwgdDEgdDIgPSBTZXhwLmVxdWFsIChzZXhwX29mX3QgdDEpIChzZXhwX29mX3QgdDIpXG5sZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IFNleHAuaGFzaF9mb2xkX3Qgc3RhdGUgKHNleHBfb2ZfdCB0KVxubGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcblxubGV0IHRvX3N0cmluZ19odW0gdCA9XG4gIG1hdGNoIHRvX21lc3NhZ2UgdCB3aXRoXG4gIHwgU3RyaW5nIHMgLT4gc1xuICB8IG1lc3NhZ2UgLT4gU2V4cC50b19zdHJpbmdfaHVtIChNZXNzYWdlLnRvX3NleHBfaHVtIG1lc3NhZ2UpXG47O1xuXG5sZXQgdG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIHQgPSBNZXNzYWdlLnRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCAodG9fbWVzc2FnZSB0KVxubGV0IHRvX3N0cmluZ19tYWNoIHQgPSBTZXhwLnRvX3N0cmluZ19tYWNoIChzZXhwX29mX3QgdClcbmxldCBvZl9sYXp5IGwgPSBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gU3RyaW5nIChMYXp5LmZvcmNlIGwpKSlcbmxldCBvZl9sYXp5X3NleHAgbCA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTZXhwIChMYXp5LmZvcmNlIGwpKSlcbmxldCBvZl9sYXp5X3QgbGF6eV90ID0gTGF6eS5qb2luIGxhenlfdFxubGV0IG9mX3N0cmluZyBtZXNzYWdlID0gTGF6eS5mcm9tX3ZhbCAoU3RyaW5nIG1lc3NhZ2UpXG5sZXQgY3JlYXRlZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgb2Zfc3RyaW5nIGZvcm1hdFxubGV0IG9mX3RodW5rIGYgPSBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gU3RyaW5nIChmICgpKSkpXG5cbmxldCBjcmVhdGUgP2hlcmUgP3N0cmljdCB0YWcgeCBzZXhwX29mX3ggPVxuICBtYXRjaCBzdHJpY3Qgd2l0aFxuICB8IE5vbmUgLT4gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFRhZ19zZXhwICh0YWcsIHNleHBfb2ZfeCB4LCBoZXJlKSkpXG4gIHwgU29tZSAoKSAtPiBvZl9tZXNzYWdlIChUYWdfc2V4cCAodGFnLCBzZXhwX29mX3ggeCwgaGVyZSkpXG47O1xuXG5sZXQgY3JlYXRlX3Mgc2V4cCA9IExhenkuZnJvbV92YWwgKFNleHAgc2V4cClcbmxldCB0YWcgdCB+dGFnID0gbGF6eSAoVGFnX3QgKHRhZywgdG9fbWVzc2FnZSB0KSlcblxubGV0IHRhZ19zX2xhenkgdCB+dGFnID1cbiAgbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFRhZ19hcmcgKFwiXCIsIExhenkuZm9yY2UgdGFnLCB0b19tZXNzYWdlIHQpKSlcbjs7XG5cbmxldCB0YWdfcyB0IH50YWcgPSB0YWdfc19sYXp5IHQgfnRhZzooTGF6eS5mcm9tX3ZhbCB0YWcpXG5cbmxldCB0YWdfYXJnIHQgdGFnIHggc2V4cF9vZl94ID1cbiAgbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFRhZ19hcmcgKHRhZywgc2V4cF9vZl94IHgsIHRvX21lc3NhZ2UgdCkpKVxuOztcblxubGV0IG9mX2xpc3QgP3RydW5jX2FmdGVyIHRzID0gbGF6eSAoT2ZfbGlzdCAodHJ1bmNfYWZ0ZXIsIExpc3QubWFwIHRzIH5mOnRvX21lc3NhZ2UpKVxuXG5leGNlcHRpb24gRXhuIG9mIHRcblxubGV0ICgpID1cbiAgKCogV2UgaW5zdGFsbCBhIGN1c3RvbSBleG4tY29udmVydGVyIHJhdGhlciB0aGFuIHVzZVxuICAgICBbZXhjZXB0aW9uIEV4biBvZiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXSAuLi4gW0BAQGVuZF1dIHRvIGVsaW1pbmF0ZSB0aGUgZXh0cmFcbiAgICAgd3JhcHBpbmcgb2YgXCIoRXhuIC4uLilcIi4gKilcbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEV4bl0gKGZ1bmN0aW9uXG4gICAgfCBFeG4gdCAtPiBzZXhwX29mX3QgdFxuICAgIHwgXyAtPlxuICAgICAgKCogUmVhY2hpbmcgdGhpcyBicmFuY2ggaW5kaWNhdGVzIGEgYnVnIGluIHNleHBsaWIuICopXG4gICAgICBhc3NlcnQgZmFsc2UpXG47O1xuXG5sZXQgdG9fZXhuIHQgPVxuICBpZiBub3QgKExhenkuaXNfdmFsIHQpXG4gIHRoZW4gRXhuIHRcbiAgZWxzZSAoXG4gICAgbWF0Y2ggTGF6eS5mb3JjZSB0IHdpdGhcbiAgICB8IE1lc3NhZ2UuRXhuIGV4biAtPiBleG5cbiAgICB8IF8gLT4gRXhuIHQpXG47O1xuXG5sZXQgb2ZfZXhuID9iYWNrdHJhY2UgZXhuID1cbiAgbGV0IGJhY2t0cmFjZSA9XG4gICAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBgR2V0IC0+XG4gICAgICBTb21lIChTdGRsaWIuUHJpbnRleGMuZ2V0X2JhY2t0cmFjZSAoKSlcbiAgICB8IFNvbWUgKGBUaGlzIHMpIC0+IFNvbWUgc1xuICBpblxuICBtYXRjaCBleG4sIGJhY2t0cmFjZSB3aXRoXG4gIHwgRXhuIHQsIE5vbmUgLT4gdFxuICB8IEV4biB0LCBTb21lIGJhY2t0cmFjZSAtPiBsYXp5IChXaXRoX2JhY2t0cmFjZSAodG9fbWVzc2FnZSB0LCBiYWNrdHJhY2UpKVxuICB8IF8sIE5vbmUgLT4gTGF6eS5mcm9tX3ZhbCAoTWVzc2FnZS5FeG4gZXhuKVxuICB8IF8sIFNvbWUgYmFja3RyYWNlIC0+IGxhenkgKFdpdGhfYmFja3RyYWNlIChTZXhwIChFeG4uc2V4cF9vZl90IGV4biksIGJhY2t0cmFjZSkpXG47O1xuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkluZm9cIlxuICAgIGxldCBwcCBwcGYgdCA9IFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAodG9fc3RyaW5nX2h1bSB0KVxuICBlbmQpXG5cbm1vZHVsZSBJbnRlcm5hbF9yZXByID0gTWVzc2FnZVxuXG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtFcnJvcl0gYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiB2YXJpb3VzIHBsYWNlcy4gIFBsZWFzZSBhdm9pZCBhZGRpbmcgbmV3XG4gICBkZXBlbmRlbmNpZXMuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbmZvXG5cbmxldCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBBbnkgXCJFcnJvci50XCIgfVxubGV0IHJhaXNlIHQgPSByYWlzZSAodG9fZXhuIHQpXG5sZXQgcmFpc2VfcyBzZXhwID0gcmFpc2UgKGNyZWF0ZV9zIHNleHApXG5sZXQgdG9faW5mbyB0ID0gdFxubGV0IG9mX2luZm8gdCA9IHRcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5FcnJvclwiXG4gICAgbGV0IHBwID0gcHBcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludmFyaWFudF9pbnRmXG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5sZXQgaW52YXJpYW50IGhlcmUgdCBzZXhwX29mX3QgZiA6IHVuaXQgPVxuICB0cnkgZiAoKSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJpbnZhcmlhbnQgZmFpbGVkXCJcbiAgICAgICAgIFsgXCJcIiwgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdCBoZXJlXG4gICAgICAgICA7IFwiZXhuXCIsIHNleHBfb2ZfZXhuIGV4blxuICAgICAgICAgOyBcIlwiLCBzZXhwX29mX3QgdFxuICAgICAgICAgXSlcbjs7XG5cbmxldCBjaGVja19maWVsZCB0IGYgZmllbGQgPVxuICB0cnkgZiAoRmllbGQuZ2V0IGZpZWxkIHQpIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcInByb2JsZW0gd2l0aCBmaWVsZFwiXG4gICAgICAgICBbIFwiZmllbGRcIiwgc2V4cF9vZl9zdHJpbmcgKEZpZWxkLm5hbWUgZmllbGQpOyBcImV4blwiLCBzZXhwX29mX2V4biBleG4gXSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gKCdhLCBFcnJvci50KSBSZXN1bHQudFxuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICBmdW4gX2NtcF9fYSBhX18wMDFfIGJfXzAwMl8gLT4gUmVzdWx0LmNvbXBhcmUgX2NtcF9fYSBFcnJvci5jb21wYXJlIGFfXzAwMV8gYl9fMDAyX1xuOztcblxubGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gIGZ1biBfY21wX19hIGFfXzAwN18gYl9fMDA4XyAtPiBSZXN1bHQuZXF1YWwgX2NtcF9fYSBFcnJvci5lcXVhbCBhX18wMDdfIGJfXzAwOF9cbjs7XG5cbmxldCBoYXNoX2ZvbGRfdCA6XG4gICdhLlxuICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gIC0+ICdhIHRcbiAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gID1cbiAgZnVuIF9oYXNoX2ZvbGRfYSBoc3YgYXJnIC0+IFJlc3VsdC5oYXNoX2ZvbGRfdCBfaGFzaF9mb2xkX2EgRXJyb3IuaGFzaF9mb2xkX3QgaHN2IGFyZ1xuOztcblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gIGZ1biBfb2ZfYV9fMDEzXyB4X18wMTVfIC0+IFJlc3VsdC50X29mX3NleHAgX29mX2FfXzAxM18gRXJyb3IudF9vZl9zZXhwIHhfXzAxNV9cbjs7XG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAxNl8geF9fMDE3XyAtPiBSZXN1bHQuc2V4cF9vZl90IF9vZl9hX18wMTZfIEVycm9yLnNleHBfb2ZfdCB4X18wMTdfXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IFJlc3VsdC50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyIEVycm9yLnRfc2V4cF9ncmFtbWFyXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgKCA+Pj0gKSA9IFJlc3VsdC4oID4+PSApXG5sZXQgKCA+PnwgKSA9IFJlc3VsdC4oID4+fCApXG5sZXQgYmluZCA9IFJlc3VsdC5iaW5kXG5sZXQgaWdub3JlX20gPSBSZXN1bHQuaWdub3JlX21cbmxldCBqb2luID0gUmVzdWx0LmpvaW5cbmxldCBtYXAgPSBSZXN1bHQubWFwXG5sZXQgcmV0dXJuID0gUmVzdWx0LnJldHVyblxuXG5tb2R1bGUgTW9uYWRfaW5maXggPSBSZXN1bHQuTW9uYWRfaW5maXhcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgT2sgYSAtPiBpbnZhcmlhbnRfYSBhXG4gIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IuaW52YXJpYW50IGVycm9yXG47O1xuXG5sZXQgbWFwMiBhIGIgfmYgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBPayB4LCBPayB5IC0+IE9rIChmIHggeSlcbiAgfCBPayBfLCAoRXJyb3IgXyBhcyBlKSB8IChFcnJvciBfIGFzIGUpLCBPayBfIC0+IGVcbiAgfCBFcnJvciBlMSwgRXJyb3IgZTIgLT4gRXJyb3IgKEVycm9yLm9mX2xpc3QgWyBlMTsgZTIgXSlcbjs7XG5cbm1vZHVsZSBGb3JfYXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZS5NYWtlX3VzaW5nX21hcDJfbG9jYWwgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgbGV0IG1hcDIgPSBtYXAyXG4gIGVuZClcblxubGV0ICggKj4gKSA9IEZvcl9hcHBsaWNhdGl2ZS4oICo+IClcbmxldCAoIDwqICkgPSBGb3JfYXBwbGljYXRpdmUuKCA8KiApXG5sZXQgKCA8Kj4gKSA9IEZvcl9hcHBsaWNhdGl2ZS4oIDwqPiApXG5sZXQgYXBwbHkgPSBGb3JfYXBwbGljYXRpdmUuYXBwbHlcbmxldCBib3RoID0gRm9yX2FwcGxpY2F0aXZlLmJvdGhcbmxldCBtYXAzID0gRm9yX2FwcGxpY2F0aXZlLm1hcDNcblxubW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gRm9yX2FwcGxpY2F0aXZlLkFwcGxpY2F0aXZlX2luZml4XG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSByZXR1cm5cblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgKCogZnJvbSBBcHBsaWNhdGl2ZS5NYWtlICopXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICBlbmRcbmVuZFxuXG5sZXQgb2sgPSBSZXN1bHQub2tcbmxldCBpc19vayA9IFJlc3VsdC5pc19va1xubGV0IGlzX2Vycm9yID0gUmVzdWx0LmlzX2Vycm9yXG5cbmxldCB0cnlfd2l0aCA/KGJhY2t0cmFjZSA9IGZhbHNlKSBmID1cbiAgdHJ5IE9rIChmICgpKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuID9iYWNrdHJhY2U6KGlmIGJhY2t0cmFjZSB0aGVuIFNvbWUgYEdldCBlbHNlIE5vbmUpKVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gP2JhY2t0cmFjZSBmID0gam9pbiAodHJ5X3dpdGggP2JhY2t0cmFjZSBmKVxuXG5sZXQgb2tfZXhuID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBlcnIgLT4gRXJyb3IucmFpc2UgZXJyXG47O1xuXG5sZXQgb2ZfZXhuID9iYWNrdHJhY2UgZXhuID0gRXJyb3IgKEVycm9yLm9mX2V4biA/YmFja3RyYWNlIGV4bilcblxubGV0IG9mX2V4bl9yZXN1bHQgP2JhY2t0cmFjZSA9IGZ1bmN0aW9uXG4gIHwgT2sgXyBhcyB6IC0+IHpcbiAgfCBFcnJvciBleG4gLT4gb2ZfZXhuID9iYWNrdHJhY2UgZXhuXG47O1xuXG5sZXQgZXJyb3IgP2hlcmUgP3N0cmljdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgRXJyb3IgKEVycm9yLmNyZWF0ZSA/aGVyZSA/c3RyaWN0IG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgZXJyb3JfcyBzZXhwID0gRXJyb3IgKEVycm9yLmNyZWF0ZV9zIHNleHApXG5sZXQgZXJyb3Jfc3RyaW5nIG1lc3NhZ2UgPSBFcnJvciAoRXJyb3Iub2Zfc3RyaW5nIG1lc3NhZ2UpXG5sZXQgZXJyb3JmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBlcnJvcl9zdHJpbmcgZm9ybWF0XG5sZXQgdGFnIHQgfnRhZyA9IFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooRXJyb3IudGFnIH50YWcpXG5sZXQgdGFnX3MgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWdfcyB+dGFnKVxubGV0IHRhZ19zX2xhenkgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWdfc19sYXp5IH50YWcpXG5cbmxldCB0YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooZnVuIGUgLT4gRXJyb3IudGFnX2FyZyBlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgdW5pbXBsZW1lbnRlZCBzID0gZXJyb3IgXCJ1bmltcGxlbWVudGVkXCIgcyBzZXhwX29mX3N0cmluZ1xuXG5cbmxldCBjb21iaW5lX2ludGVybmFsIGxpc3Qgfm9uX29rIH5vbl9lcnJvciA9XG4gIG1hdGNoIFJlc3VsdC5jb21iaW5lX2Vycm9ycyBsaXN0IHdpdGhcbiAgfCBPayB4IC0+IE9rIChvbl9vayB4KVxuICB8IEVycm9yIGVycnMgLT4gRXJyb3IgKG9uX2Vycm9yIGVycnMpXG47O1xuXG5sZXQgaWdub3JlX3VuaXRfbGlzdCAoXyA6IHVuaXQgbGlzdCkgPSAoKVxuXG5sZXQgZXJyb3Jfb2ZfbGlzdF9pZl9uZWNlc3NhcnkgPSBmdW5jdGlvblxuICB8IFsgZSBdIC0+IGVcbiAgfCBsaXN0IC0+IEVycm9yLm9mX2xpc3QgbGlzdFxuOztcblxubGV0IGFsbCBsaXN0ID0gY29tYmluZV9pbnRlcm5hbCBsaXN0IH5vbl9vazpGbi5pZCB+b25fZXJyb3I6ZXJyb3Jfb2ZfbGlzdF9pZl9uZWNlc3NhcnlcblxubGV0IGFsbF91bml0IGxpc3QgPVxuICBjb21iaW5lX2ludGVybmFsIGxpc3Qgfm9uX29rOmlnbm9yZV91bml0X2xpc3Qgfm9uX2Vycm9yOmVycm9yX29mX2xpc3RfaWZfbmVjZXNzYXJ5XG47O1xuXG5sZXQgY29tYmluZV9lcnJvcnMgbGlzdCA9IGNvbWJpbmVfaW50ZXJuYWwgbGlzdCB+b25fb2s6Rm4uaWQgfm9uX2Vycm9yOkVycm9yLm9mX2xpc3RcblxubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbGlzdCA9XG4gIGNvbWJpbmVfaW50ZXJuYWwgbGlzdCB+b25fb2s6aWdub3JlX3VuaXRfbGlzdCB+b25fZXJyb3I6RXJyb3Iub2ZfbGlzdFxuOztcblxubGV0IGZpbHRlcl9va19hdF9sZWFzdF9vbmUgbCA9XG4gIGxldCBvaywgZXJycyA9IExpc3QucGFydGl0aW9uX21hcCBsIH5mOlJlc3VsdC50b19laXRoZXIgaW5cbiAgbWF0Y2ggb2sgd2l0aFxuICB8IFtdIC0+IEVycm9yIChFcnJvci5vZl9saXN0IGVycnMpXG4gIHwgXyAtPiBPayBva1xuOztcblxubGV0IGZpbmRfb2sgbCA9XG4gIG1hdGNoIExpc3QuZmluZF9tYXAgbCB+ZjpSZXN1bHQub2sgd2l0aFxuICB8IFNvbWUgeCAtPiBPayB4XG4gIHwgTm9uZSAtPlxuICAgIEVycm9yXG4gICAgICAoRXJyb3Iub2ZfbGlzdFxuICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE9rIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiBlcnIpKSlcbjs7XG5cbmxldCBmaW5kX21hcF9vayBsIH5mID1cbiAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgRXJyb3JcbiAgICAgIChFcnJvci5vZl9saXN0XG4gICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgbWF0Y2ggZiBlbHQgd2l0aFxuICAgICAgICAgICAgfCBPayBfIGFzIHggLT4gcmV0dXJuIHhcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycikpKSkgW0Bub250YWlsXVxuOztcblxubGV0IG1hcCA9IFJlc3VsdC5tYXBcbmxldCBpdGVyID0gUmVzdWx0Lml0ZXJcbmxldCBpdGVyX2Vycm9yID0gUmVzdWx0Lml0ZXJfZXJyb3JcbiIsIigqIFRoaXMgaXMgYnJva2VuIG9mZiB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gU2lnbiBhbmQgQ29tcGFyYWJsZS4gKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTmVnXG4gIHwgWmVyb1xuICB8IFBvc1xuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaCwgZW51bWVyYXRlXVxuXG5sZXQgdF9vZl9zZXhwID1cbiAgKGxldCBlcnJvcl9zb3VyY2VfXzAwM18gPSBcInNpZ24wLm1sLnRcIiBpblxuICAgZnVuY3Rpb25cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgLT4gTmVnXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgLT4gWmVyb1xuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSAtPiBQb3NcbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDJfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICB8IHNleHBfXzAwMl8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG47O1xuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBOZWcgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmVnXCJcbiAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgfCBQb3MgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUG9zXCJcbiAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJOZWdcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlplcm9cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlBvc1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbmxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgTmVnIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IFplcm8gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxXG4gICAgIHwgUG9zIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxubGV0IGFsbCA9IChbIE5lZzsgWmVybzsgUG9zIF0gOiB0IGxpc3QpXG5cbltAQEBlbmRdXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogdCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiB0KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiB0KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiB0KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IHQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiB0KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IHQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IHQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiB0KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nIHMgPSB0X29mX3NleHAgKHNleHBfb2Zfc3RyaW5nIHMpXG5sZXQgdG9fc3RyaW5nIHQgPSBzdHJpbmdfb2Zfc2V4cCAoc2V4cF9vZl90IHQpXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IE5lZyAtPiAtMVxuICB8IFplcm8gLT4gMFxuICB8IFBvcyAtPiAxXG47O1xuXG5sZXQgXyA9IGhhc2hcblxuKCogSWdub3JlIHRoZSBoYXNoIGZ1bmN0aW9uIHByb2R1Y2VkIGJ5IFtAQGRlcml2aW5nX2lubGluZSBoYXNoXSAqKVxubGV0IGhhc2ggPSB0b19pbnRcbmxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5TaWduXCJcbmxldCBvZl9pbnQgbiA9IGlmIG4gPCAwIHRoZW4gTmVnIGVsc2UgaWYgbiA9IDAgdGhlbiBaZXJvIGVsc2UgUG9zXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29tcGFyYWJsZV9pbnRmXG5cbm1vZHVsZSBXaXRoX3plcm8gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB6ZXJvIDogdFxuICBlbmQpID1cbnN0cnVjdFxuICBvcGVuIFRcblxuICBsZXQgaXNfcG9zaXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvID4gMFxuICBsZXQgaXNfbm9uX25lZ2F0aXZlIHQgPSBjb21wYXJlIHQgemVybyA+PSAwXG4gIGxldCBpc19uZWdhdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPCAwXG4gIGxldCBpc19ub25fcG9zaXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvIDw9IDBcbiAgbGV0IHNpZ24gdCA9IFNpZ24wLm9mX2ludCAoY29tcGFyZSB0IHplcm8pXG5lbmRcblxubW9kdWxlIFBvbHkgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gKFQuc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBQb2x5XG4gIGVuZFxuXG4gIGluY2x1ZGUgUG9seVxuXG4gIGxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuICBsZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG4gIGxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAgIGFzc2VydCAobWluIDw9IG1heCk7XG4gICAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG4gIDs7XG5cbiAgbGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXhcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gICAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICA7O1xuXG4gIG1vZHVsZSBDID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSlcbiAgZW5kXG5cbiAgaW5jbHVkZSBDXG5lbmRcblxubGV0IGd0IGNtcCBhIGIgPSBjbXAgYSBiID4gMFxubGV0IGx0IGNtcCBhIGIgPSBjbXAgYSBiIDwgMFxubGV0IGdlcSBjbXAgYSBiID0gY21wIGEgYiA+PSAwXG5sZXQgbGVxIGNtcCBhIGIgPSBjbXAgYSBiIDw9IDBcbmxldCBlcXVhbCBjbXAgYSBiID0gY21wIGEgYiA9IDBcbmxldCBub3RfZXF1YWwgY21wIGEgYiA9IGNtcCBhIGIgPD4gMFxubGV0IG1pbiBjbXAgdCB0JyA9IGlmIGxlcSBjbXAgdCB0JyB0aGVuIHQgZWxzZSB0J1xubGV0IG1heCBjbXAgdCB0JyA9IGlmIGdlcSBjbXAgdCB0JyB0aGVuIHQgZWxzZSB0J1xuXG5tb2R1bGUgSW5maXggKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA6IEluZml4IHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBsZXQgKCA+ICkgYSBiID0gZ3QgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA8ICkgYSBiID0gbHQgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA+PSApIGEgYiA9IGdlcSBULmNvbXBhcmUgYSBiXG4gIGxldCAoIDw9ICkgYSBiID0gbGVxIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPSApIGEgYiA9IGVxdWFsIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPD4gKSBhIGIgPSBub3RfZXF1YWwgVC5jb21wYXJlIGEgYlxuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgQ29tcGFyaXNvbnMgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBpbmNsdWRlIEluZml4IChUKVxuXG4gIGxldCBjb21wYXJlID0gVC5jb21wYXJlXG4gIGxldCBlcXVhbCA9ICggPSApXG4gIGxldCBtaW4gdCB0JyA9IG1pbiBjb21wYXJlIHQgdCdcbiAgbGV0IG1heCB0IHQnID0gbWF4IGNvbXBhcmUgdCB0J1xuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyYXRvci5jb21wYXJlXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQ29tcGFyaXNvbnMgKFQpXG4gIGluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IGFzY2VuZGluZyA9IGNvbXBhcmVcbiAgbGV0IGRlc2NlbmRpbmcgdCB0JyA9IGNvbXBhcmUgdCcgdFxuICBsZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxuICBsZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAgIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuICA7O1xuXG4gIGxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4XG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICAgIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuICBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgW0BpbmxpbmVkIGhpbnRdIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgSW5oZXJpdCAoQyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIChUIDogc2lnXG4gICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICAgICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICAgICAgICBbQEBAZW5kXVxuXG4gICAgICAgICAgdmFsIGNvbXBvbmVudCA6IHQgLT4gQy50XG4gICAgICAgIGVuZCkgPVxuICBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gKFQuc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNvbXBhcmUgdCB0JyA9IEMuY29tcGFyZSAoVC5jb21wb25lbnQgdCkgKFQuY29tcG9uZW50IHQnKVxuICBlbmQpXG5cbigqIGNvbXBhcmUgW3hdIGFuZCBbeV0gbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgZnVuY3Rpb25zIGluIHRoZSBsaXN0IFtjbXBzXSAqKVxubGV0IGxleGljb2dyYXBoaWMgY21wcyB4IHkgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgY21wIDo6IGNtcHMgLT5cbiAgICAgIGxldCByZXMgPSBjbXAgeCB5IGluXG4gICAgICBpZiByZXMgPSAwIHRoZW4gbG9vcCBjbXBzIGVsc2UgcmVzXG4gICAgfCBbXSAtPiAwXG4gIGluXG4gIGxvb3AgY21wc1xuOztcblxubGV0IGxpZnQgY21wIH5mIHggeSA9IGNtcCAoZiB4KSAoZiB5KVxubGV0IHJldmVyc2UgY21wIHggeSA9IGNtcCB5IHhcblxudHlwZSAnYSByZXZlcnNlZCA9ICdhXG5cbmxldCBjb21wYXJlX3JldmVyc2VkIGNtcCB4IHkgPSBjbXAgeSB4XG4iLCJvcGVuISBJbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNoYWJsZS5LZXkgKilcbm1vZHVsZSB0eXBlIEtleSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuXG4gICgqKiBWYWx1ZXMgcmV0dXJuZWQgYnkgW2hhc2hdIG11c3QgYmUgbm9uLW5lZ2F0aXZlLiAgQW4gZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIGluIHRoZVxuICAgICAgY2FzZSB0aGF0IFtoYXNoXSByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUuICopXG4gIHZhbCBoYXNoIDogdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgSGFzaGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGhhc2ggOiAnYSAtPiBpbnRcbiAgICA7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgICA7IHNleHBfb2ZfdCA6ICdhIC0+IFNleHAudFxuICAgIH1cblxuICAoKiogVGhpcyBmdW5jdGlvbiBpcyBzb3VuZCBidXQgbm90IGNvbXBsZXRlLCBtZWFuaW5nIHRoYXQgaWYgaXQgcmV0dXJucyBbdHJ1ZV0gdGhlbiBpdCdzXG4gICAgICBzYWZlIHRvIHVzZSB0aGUgdHdvIGludGVyY2hhbmdlYWJseS4gIElmIGl0J3MgW2ZhbHNlXSwgeW91IGhhdmUgbm8gZ3VhcmFudGVlcy4gIEZvclxuICAgICAgZXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgPiB1dG9wXG4gICAgICAgIG9wZW4gQ29yZTs7XG4gICAgICAgIGxldCBlcXVhbCAoYSA6ICdhIEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50KSBiID1cbiAgICAgICAgICBwaHlzX2VxdWFsIGEgYlxuICAgICAgICAgIHx8IChwaHlzX2VxdWFsIGEuaGFzaCBiLmhhc2hcbiAgICAgICAgICAgICAgJiYgcGh5c19lcXVhbCBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgICAgICAgICAgICYmIHBoeXNfZXF1YWwgYS5zZXhwX29mX3QgYi5zZXhwX29mX3QpXG4gICAgICAgIDs7XG4gICAgICAgIGxldCBhID0gSGFzaHRibF9pbnRmLkhhc2hhYmxlLnsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90ID0gSW50LnNleHBfb2ZfdCB9OztcbiAgICAgICAgbGV0IGIgPSBIYXNodGJsX2ludGYuSGFzaGFibGUueyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgPSBJbnQuc2V4cF9vZl90IH07O1xuICAgICAgICBlcXVhbCBhIGI7OyAgKCogZmFsc2U/ISAqKVxuICAgICAgXX1cbiAgKilcbiAgbGV0IGVxdWFsIGEgYiA9XG4gICAgcGh5c19lcXVhbCBhIGJcbiAgICB8fCAocGh5c19lcXVhbCBhLmhhc2ggYi5oYXNoXG4gICAgICAgICYmIHBoeXNfZXF1YWwgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgICAgICAmJiBwaHlzX2VxdWFsIGEuc2V4cF9vZl90IGIuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBoYXNoX3BhcmFtID0gU3RkbGliLkhhc2h0YmwuaGFzaF9wYXJhbVxuICBsZXQgaGFzaCA9IFN0ZGxpYi5IYXNodGJsLmhhc2hcbiAgbGV0IHBvbHkgPSB7IGhhc2g7IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmU7IHNleHBfb2ZfdCA9IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIH1cblxuICBsZXQgb2Zfa2V5ICh0eXBlIGEpIChtb2R1bGUgS2V5IDogS2V5IHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIHsgaGFzaCA9IEtleS5oYXNoOyBjb21wYXJlID0gS2V5LmNvbXBhcmU7IHNleHBfb2ZfdCA9IEtleS5zZXhwX29mX3QgfVxuICA7O1xuXG4gIGxldCB0b19rZXkgKHR5cGUgYSkgeyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfSA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IGhhc2ggPSBoYXNoXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQgOiBLZXlcbiAgICAgIHdpdGggdHlwZSB0ID0gYSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEhhc2hhYmxlXG5cbm1vZHVsZSB0eXBlIEhhc2hhYmxlID0gc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIEhhc2hhYmxlLnQgPVxuICAgIHsgaGFzaCA6ICdhIC0+IGludFxuICAgIDsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBwb2x5IDogJ2EgdFxuICB2YWwgb2Zfa2V5IDogKG1vZHVsZSBLZXkgd2l0aCB0eXBlIHQgPSAnYSkgLT4gJ2EgdFxuICB2YWwgdG9fa2V5IDogJ2EgdCAtPiAobW9kdWxlIEtleSB3aXRoIHR5cGUgdCA9ICdhKVxuICB2YWwgaGFzaF9wYXJhbSA6IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50XG4gIHZhbCBoYXNoIDogJ2EgLT4gaW50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJZGVudGlmaWFibGVfaW50ZlxuXG5tb2R1bGUgTWFrZSAoVCA6IEFyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogQXJnX3dpdGhfY29tcGFyYXRvcikgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZ19pbmxpbmUgZW51bWVyYXRlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgYWxsID0gKFsgKCkgXSA6IHQgbGlzdClcbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfdW5pdCA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF91bml0XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF91bml0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9ICh1bml0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3VuaXQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gdW5pdF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBjb21wYXJlIF8gXyA9IDBcblxuICBsZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwiKClcIiAtPiAoKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkJhc2UuVW5pdC5vZl9zdHJpbmc6ICgpIGV4cGVjdGVkXCJcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nICgpID0gXCIoKVwiXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5Vbml0XCJcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKFQpXG5cbmxldCBpbnZhcmlhbnQgKCkgPSAoKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wXG5cbmxldCBnZXRfcG9zX2xlbiA/cG9zID9sZW4gKCkgfnRvdGFsX2xlbmd0aCA9XG4gIHRyeSBSZXN1bHQuT2sgKGdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aCkgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgcyAtPiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgc1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBUaGVzZSBmdW5jdGlvbnMgaW1wbGVtZW50IGEgc2VhcmNoIGZvciB0aGUgZmlyc3QgKHJlc3AuIGxhc3QpIGVsZW1lbnRcbiAgIHNhdGlzZnlpbmcgYSBwcmVkaWNhdGUsIGFzc3VtaW5nIHRoYXQgdGhlIHByZWRpY2F0ZSBpcyBpbmNyZWFzaW5nIG9uXG4gICB0aGUgY29udGFpbmVyLCBtZWFuaW5nIHRoYXQsIGlmIHRoZSBjb250YWluZXIgaXMgW3UxLi4udW5dLCB0aGVyZSBleGlzdHMgYVxuICAgayBzdWNoIHRoYXQgcCh1MSk9Li4uLj1wKHVrKSA9IGZhbHNlIGFuZCBwKHVrKzEpPS4uLi49cCh1bik9IHRydWUuXG4gICBJZiB0aGlzIGsgPSAxIChyZXNwIG4pLCBmaW5kX2xhc3Rfbm90X3NhdGlzZnlpbmcgKHJlc3AgZmluZF9maXJzdF9zYXRpc2Z5aW5nKVxuICAgd2lsbCByZXR1cm4gTm9uZS4gKilcblxubGV0IHJlYyBsaW5lYXJfc2VhcmNoX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWQgPVxuICBpZiBsbyA+IGhpXG4gIHRoZW4gTm9uZVxuICBlbHNlIGlmIHByZWQgKGdldCB0IGxvKVxuICB0aGVuIFNvbWUgbG9cbiAgZWxzZSBsaW5lYXJfc2VhcmNoX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbzoobG8gKyAxKSB+aGkgfnByZWRcbjs7XG5cbigqIFRha2VzIGEgY29udGFpbmVyIFt0XSwgYSBwcmVkaWNhdGUgW3ByZWRdIGFuZCB0d28gaW5kaWNlcyBbbG8gPCBoaV0sIHN1Y2ggdGhhdFxuICAgW3ByZWRdIGlzIGluY3JlYXNpbmcgb24gW3RdIGJldHdlZW4gW2xvXSBhbmQgW2hpXS5cblxuICAgcmV0dXJuIGEgcmFuZ2UgKGxvLCBoaSkgd2hlcmU6XG4gICAtIGxvIGFuZCBoaSBhcmUgY2xvc2UgZW5vdWdoIHRvZ2V0aGVyIGZvciBhIGxpbmVhciBzZWFyY2hcbiAgIC0gSWYgW3ByZWRdIGlzIG5vdCBjb25zdGFudGx5IFtmYWxzZV0gb24gW3RdIGJldHdlZW4gW2xvXSBhbmQgW2hpXSwgdGhlIGZpcnN0IGVsZW1lbnRcbiAgICAgb24gd2hpY2ggW3ByZWRdIGlzIFt0cnVlXSBpcyBiZXR3ZWVuIFtsb10gYW5kIFtoaV0uICopXG4oKiBJbnZhcmlhbnQ6IHRoZSBmaXJzdCBlbGVtZW50IHNhdGlzZnlpbmcgW3ByZWRdLCBpZiBpdCBleGlzdHMgaXMgYmV0d2VlbiBbbG9dIGFuZCBbaGldICopXG5sZXQgcmVjIGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkID1cbiAgKCogV2FybmluZzogdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCB0ZXJtaW5hdGUgaWYgdGhlIGNvbnN0YW50IChjdXJyZW50bHkgOCkgaXNcbiAgICAgc2V0IDw9IDEgKilcbiAgaWYgaGkgLSBsbyA8PSA4XG4gIHRoZW4gbG8sIGhpXG4gIGVsc2UgKFxuICAgIGxldCBtaWQgPSBsbyArICgoaGkgLSBsbykgLyAyKSBpblxuICAgIGlmIHByZWQgKGdldCB0IG1pZClcbiAgICAoKiBJTlZBUklBTlQgY2hlY2s6IGl0IG1lYW5zIHRoZSBmaXJzdCBzYXRpc2Z5aW5nIGVsZW1lbnQgaXMgYmV0d2VlbiBbbG9dIGFuZCBbbWlkXSAqKVxuICAgIHRoZW5cbiAgICAgIGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpOm1pZCB+cHJlZFxuICAgICAgKCogSU5WQVJJQU5UIGNoZWNrOiBpdCBtZWFucyB0aGUgZmlyc3Qgc2F0aXNmeWluZyBlbGVtZW50LCBpZiBpdCBleGlzdHMsXG4gICAgICAgICBpcyBiZXR3ZWVuIFttaWQrMV0gYW5kIFtoaV0gKilcbiAgICBlbHNlIGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG86KG1pZCArIDEpIH5oaSB+cHJlZClcbjs7XG5cbmxldCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gIGluXG4gIGxldCBsbyA9IHBvcyBpblxuICBsZXQgaGkgPSBwb3MgKyBsZW4gLSAxIGluXG4gIGxldCBsbywgaGkgPSBmaW5kX3JhbmdlX25lYXJfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZCBpblxuICBsaW5lYXJfc2VhcmNoX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWRcbjs7XG5cbigqIFRha2VzIGFuIGFycmF5IHdpdGggc2hhcGUgW3RydWUsLi4udHJ1ZSxmYWxzZSwuLi5mYWxzZV0gKGkuZS4sIHRoZSBfcmV2ZXJzZV8gb2Ygd2hhdFxuICAgaXMgZGVzY3JpYmVkIGFib3ZlKSBhbmQgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdHJ1ZSBvciBOb25lIGlmIHRoZXJlIGFyZSBub1xuICAgdHJ1ZSopXG5sZXQgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfnByZWQgfmdldCB+bGVuZ3RoID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gIGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgICgqIFRoZSBsYXN0IHNhdGlzZnlpbmcgaXMgdGhlIG9uZSBqdXN0IGJlZm9yZSB0aGUgZmlyc3Qgbm90IHNhdGlzZnlpbmcgKilcbiAgICBtYXRjaFxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIH5wb3MgfmxlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gbm90IChwcmVkIHgpKVxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSAocG9zICsgbGVuIC0gMSlcbiAgICAoKiBUaGlzIG1lYW5zIHRoYXQgYWxsIGVsZW1lbnRzIHNhdGlzZnkgcHJlZC5cbiAgICAgICBUaGVyZSBpcyBhdCBsZWFzdCBhbiBlbGVtZW50IGFzIChsZW4gPiAwKSAqKVxuICAgIHwgU29tZSBpIHdoZW4gaSA9IHBvcyAtPiBOb25lICgqIG5vIGVsZW1lbnQgc2F0aXNmaWVzIHByZWQgKilcbiAgICB8IFNvbWUgaSAtPiBTb21lIChpIC0gMSkpXG47O1xuXG5sZXQgYmluYXJ5X3NlYXJjaFxuICAgICAgP3Bvc1xuICAgICAgP2xlblxuICAgICAgdFxuICAgICAgfmxlbmd0aDooKGxlbmd0aCA6IF8gLT4gXykgW0Bsb2NhbF0pXG4gICAgICB+Z2V0OigoZ2V0IDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKVxuICAgICAgfmNvbXBhcmU6KChjb21wYXJlIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKVxuICAgICAgaG93XG4gICAgICB2XG4gID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gLT5cbiAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDwgMCkgW0Bub250YWlsXG4gICAgXVxuICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMCkgW0Bub250YWlsXG4gICAgXVxuICB8IGBGaXJzdF9lcXVhbF90byAtPlxuICAgIChtYXRjaFxuICAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApXG4gICAgIHdpdGhcbiAgICAgfCBTb21lIHggd2hlbiBjb21wYXJlIChnZXQgdCB4KSB2ID0gMCAtPiBTb21lIHhcbiAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gIHwgYExhc3RfZXF1YWxfdG8gLT5cbiAgICAobWF0Y2hcbiAgICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApXG4gICAgIHdpdGhcbiAgICAgfCBTb21lIHggd2hlbiBjb21wYXJlIChnZXQgdCB4KSB2ID0gMCAtPiBTb21lIHhcbiAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApIFtAbm9udGFpbFxuICAgIF1cbiAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIC0+XG4gICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPiAwKSBbQG5vbnRhaWxcbiAgICBdXG47O1xuXG5sZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5zZWdtZW50X29mIGhvdyA9XG4gIGxldCBpc19sZWZ0IHggPVxuICAgIG1hdGNoIHNlZ21lbnRfb2YgeCB3aXRoXG4gICAgfCBgTGVmdCAtPiB0cnVlXG4gICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgaW5cbiAgbGV0IGlzX3JpZ2h0IHggPSBub3QgKGlzX2xlZnQgeCkgaW5cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgTGFzdF9vbl9sZWZ0IC0+XG4gICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5wcmVkOmlzX2xlZnQgW0Bub250YWlsXVxuICB8IGBGaXJzdF9vbl9yaWdodCAtPlxuICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnByZWQ6aXNfcmlnaHQgW0Bub250YWlsXVxuOztcbiIsIigqKiBNb2R1bGUgdHlwZXMgZm9yIGEgW2JpbmFyeV9zZWFyY2hdIGZ1bmN0aW9uIGZvciBhIHNlcXVlbmNlLCBhbmQgZnVuY3RvcnMgZm9yIGJ1aWxkaW5nXG4gICAgW2JpbmFyeV9zZWFyY2hdIGZ1bmN0aW9ucy4gKilcblxub3BlbiEgSW1wb3J0XG5cbigqKiBBbiBbSW5kZXhhYmxlXSB0eXBlIGlzIGEgZmluaXRlIHNlcXVlbmNlIG9mIGVsZW1lbnRzIGluZGV4ZWQgYnkgY29uc2VjdXRpdmUgaW50ZWdlcnNcbiAgICBbMF0gLi4uIFtsZW5ndGggdCAtIDFdLiAgW2dldF0gYW5kIFtsZW5ndGhdIG11c3QgYmUgTygxKSBmb3IgdGhlIHJlc3VsdGluZ1xuICAgIFtiaW5hcnlfc2VhcmNoXSB0byBiZSBsZyhuKS4gKilcbm1vZHVsZSB0eXBlIEluZGV4YWJsZSA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICB2YWwgZ2V0IDogdCAtPiBpbnQgLT4gZWx0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZGV4YWJsZTEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIFdoaWNoX3RhcmdldF9ieV9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAoKiogICAgICAgIHt2IHwgPCBlbHQgWCB8ICAgICAgICAgICAgICAgICAgICAgICB2fSAqKVxuICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvICgqKiAgICAge3YgfCAgICAgIDw9IGVsdCAgICAgICBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgfCBgTGFzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCAgID0gZWx0IFggfCAgICAgICAgICAgdn0gKilcbiAgICB8IGBGaXJzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8IFggPSBlbHQgICB8ICAgICAgICAgICB2fSAqKVxuICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAoKioge3YgICAgICAgICAgIHwgWCAgICAgICA+PSBlbHQgICAgICB8IHZ9ICopXG4gICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuICgqKiAgICB7diAgICAgICAgICAgICAgICAgICAgICAgfCBYID4gZWx0IHwgdn0gKilcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGVdXG5cbiAgbGV0IGFsbCA9XG4gICAgKFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuXG4gICAgIDsgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvXG4gICAgIDsgYExhc3RfZXF1YWxfdG9cbiAgICAgOyBgRmlyc3RfZXF1YWxfdG9cbiAgICAgOyBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgIDsgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhblxuICAgICBdXG4gICAgIDogdCBsaXN0KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIFdoaWNoX3RhcmdldF9ieV9zZWdtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgTGFzdF9vbl9sZWZ0XG4gICAgfCBgRmlyc3Rfb25fcmlnaHRcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGVdXG5cbiAgbGV0IGFsbCA9IChbIGBMYXN0X29uX2xlZnQ7IGBGaXJzdF9vbl9yaWdodCBdIDogdCBsaXN0KVxuXG4gIFtAQEBlbmRdXG5lbmRcblxudHlwZSAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2ggPVxuICA/cG9zOmludFxuICAtPiA/bGVuOmludFxuICAtPiAndFxuICAtPiBjb21wYXJlOigoJ2VsdCAtPiAna2V5IC0+IGludClbQGxvY2FsXSlcbiAgLT4gV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gIC0+ICdrZXlcbiAgLT4gaW50IG9wdGlvblxuXG50eXBlICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPVxuICA/cG9zOmludFxuICAtPiA/bGVuOmludFxuICAtPiAndFxuICAtPiBzZWdtZW50X29mOigoJ2VsdCAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pW0Bsb2NhbF0pXG4gIC0+IFdoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgLT4gaW50IG9wdGlvblxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgdFxuXG4gICgqKiBTZWUgW0JpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaF0gaW4gYmluYXJ5X3NlYXJjaC5tbCAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICh0LCBlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2hcblxuICAoKiogU2VlIFtCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSBpbiBiaW5hcnlfc2VhcmNoLm1sICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA6ICh0LCBlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2ggOiAoJ2EgdCwgJ2EsICdrZXkpIGJpbmFyeV9zZWFyY2hcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKCdhIHQsICdhKSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJpbmFyeV9zZWFyY2hhYmxlID0gc2lnXG4gIG1vZHVsZSB0eXBlIFMgPSBTXG4gIG1vZHVsZSB0eXBlIFMxID0gUzFcbiAgbW9kdWxlIHR5cGUgSW5kZXhhYmxlID0gSW5kZXhhYmxlXG4gIG1vZHVsZSB0eXBlIEluZGV4YWJsZTEgPSBJbmRleGFibGUxXG5cbiAgbW9kdWxlIFdoaWNoX3RhcmdldF9ieV9rZXkgPSBXaGljaF90YXJnZXRfYnlfa2V5XG4gIG1vZHVsZSBXaGljaF90YXJnZXRfYnlfc2VnbWVudCA9IFdoaWNoX3RhcmdldF9ieV9zZWdtZW50XG5cbiAgdHlwZSBub25yZWMgKCd0LCAnZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoID0gKCd0LCAnZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoXG4gIHR5cGUgbm9ucmVjICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSAoJ3QsICdlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgbW9kdWxlIE1ha2UgKFQgOiBJbmRleGFibGUpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgd2l0aCB0eXBlIGVsdCA6PSBULmVsdFxuICBtb2R1bGUgTWFrZTEgKFQgOiBJbmRleGFibGUxKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGVfaW50ZlxuXG5tb2R1bGUgdHlwZSBBcmcgPSBzaWdcbiAgdHlwZSAnYSBlbHRcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhIGVsdFxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbiAoVCA6IEFyZykgPSBzdHJ1Y3RcbiAgbGV0IGdldCA9IFQuZ2V0XG4gIGxldCBsZW5ndGggPSBULmxlbmd0aFxuXG4gIGxldCBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5jb21wYXJlIGhvdyB2ID1cbiAgICBCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5jb21wYXJlIGhvdyB2XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBJbmRleGFibGUpID0gTWFrZV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgdHlwZSAnYSBlbHQgPSBULmVsdFxuICAgIHR5cGUgJ2EgdCA9IFQudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMSAoVCA6IEluZGV4YWJsZTEpID0gTWFrZV9nZW4gKHN0cnVjdFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgIGxldCBnZXQgPSBULmdldFxuICAgIGxldCBsZW5ndGggPSBULmxlbmd0aFxuICBlbmQpXG4iLCIoKiBbQnl0ZXMwXSBkZWZpbmVzIHN0cmluZyBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5XG4gICBkZWZpbmVkIGluIHRlcm1zIG9mIFtTdGRsaWIuQnl0ZXNdLiBbQnl0ZXMwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3NcbiAgIHRoZSBwYXJ0IG9mIFtTdGRsaWIuQnl0ZXNdIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyXG4gICB0aGFuIGJ5dGVzMC5tbCBzaG91bGQgdXNlIFtTdGRsaWIuQnl0ZXNdLiBbQnl0ZXMwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kXG4gICBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLlxuXG4gICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIHN0cmluZ3MgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkJ5dGVzXSBpblxuICAgYnVpbGQgb3JkZXIgc2hvdWxkIGRvOlxuXG4gICB7W1xuICAgICBtb2R1bGUgQnl0ZXMgID0gQnl0ZXMwXG4gICBdfVxuXG4gICBEZWZpbmluZyBbbW9kdWxlIEJ5dGVzID0gQnl0ZXMwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzXG4gICBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkJ5dGVzXS4gKilcblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIFN5cyA9IFN5czBcblxubW9kdWxlIFByaW1pdGl2ZXMgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgZ2V0IDogKGJ5dGVzW0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiAoYnl0ZXNbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2dldFxuICAgIDogIChieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGNoYXJcbiAgICA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuXG4gIGV4dGVybmFsIHNldFxuICAgIDogIChieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChjaGFyW0Bsb2NhbF9vcHRdKVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGNoYXJbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5cbiAgKCogW3Vuc2FmZV9ibGl0X3N0cmluZ10gaXMgbm90IGV4cG9ydGVkIGluIHRoZSBbc3RkbGliXSBzbyB3ZSBleHBvcnQgaXQgaGVyZSAqKVxuICBleHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmdcbiAgICA6ICBzcmM6KHN0cmluZ1tAbG9jYWxfb3B0XSlcbiAgICAtPiBzcmNfcG9zOmludFxuICAgIC0+IGRzdDooYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gZHN0X3BvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdFxuICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0X2ludDY0XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gaW50NjRcbiAgICA9IFwiJWNhbWxfYnl0ZXNfZ2V0NjR1XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0X2ludDY0XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludDY0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0X2ludDMyXG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gaW50MzJcbiAgICA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJ1XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0X2ludDMyXG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludDMyW0Bsb2NhbF9vcHRdKVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0X2ludDE2XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gaW50XG4gICAgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQxNlxuICAgIDogIChieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZW5kXG5cbmluY2x1ZGUgUHJpbWl0aXZlc1xuXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxubGV0IGJsaXQgPSBTdGRsaWIuQnl0ZXMuYmxpdFxubGV0IGJsaXRfc3RyaW5nID0gU3RkbGliLkJ5dGVzLmJsaXRfc3RyaW5nXG5sZXQgY29tcGFyZSA9IFN0ZGxpYi5CeXRlcy5jb21wYXJlXG5sZXQgY29weSA9IFN0ZGxpYi5CeXRlcy5jb3B5XG5sZXQgY3JlYXRlID0gU3RkbGliLkJ5dGVzLmNyZWF0ZVxuXG5leHRlcm5hbCB1bnNhZmVfY3JlYXRlX2xvY2FsIDogaW50IC0+IChieXRlc1tAbG9jYWxdKSA9IFwiQmFzZV91bnNhZmVfY3JlYXRlX2xvY2FsX2J5dGVzXCJcbltAQG5vYWxsb2NdXG5cbmxldCBjcmVhdGVfbG9jYWwgbGVuID1cbiAgXG4gICAgKGlmIGxlbiA+IFN5czAubWF4X3N0cmluZ19sZW5ndGggdGhlbiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmNyZWF0ZV9sb2NhbFwiO1xuICAgICB1bnNhZmVfY3JlYXRlX2xvY2FsIGxlbilcbjs7XG5cbmxldCBmaWxsID0gU3RkbGliLkJ5dGVzLmZpbGxcbmxldCBtYWtlID0gU3RkbGliLkJ5dGVzLm1ha2VcblxubGV0IG1hcCB0IH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IGwgPSBsZW5ndGggdCBpblxuICBpZiBsID0gMFxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgdCBpKSlcbiAgICBkb25lO1xuICAgIHIpXG47O1xuXG5sZXQgbWFwaSB0IH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgbCA9IGxlbmd0aCB0IGluXG4gIGlmIGwgPSAwXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IHQgaSkpXG4gICAgZG9uZTtcbiAgICByKVxuOztcblxubGV0IHN1YiA9IFN0ZGxpYi5CeXRlcy5zdWJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgOiAgc3JjOihieXRlc1tAbG9jYWxfb3B0XSlcbiAgLT4gc3JjX3BvczppbnRcbiAgLT4gZHN0OihieXRlc1tAbG9jYWxfb3B0XSlcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJjYW1sX2JsaXRfYnl0ZXNcIlxuW0BAbm9hbGxvY11cblxubGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5CeXRlcy50b19zdHJpbmdcbmxldCBvZl9zdHJpbmcgPSBTdGRsaWIuQnl0ZXMub2Zfc3RyaW5nXG5cbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmdcbiAgOiAgbm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooYnl0ZXNbQGxvY2FsX29wdF0pXG4gIC0+IChzdHJpbmdbQGxvY2FsX29wdF0pXG4gID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxuZXh0ZXJuYWwgdW5zYWZlX29mX3N0cmluZ19wcm9taXNlX25vX211dGF0aW9uXG4gIDogIChzdHJpbmdbQGxvY2FsX29wdF0pXG4gIC0+IChieXRlc1tAbG9jYWxfb3B0XSlcbiAgPSBcIiVieXRlc19vZl9zdHJpbmdcIlxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJsaXRfaW50ZlxuXG5tb2R1bGUgdHlwZSBTZXF1ZW5jZV9nZW4gPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGxlbmd0aCA6IChfIHRbQGxvY2FsXSkgLT4gaW50XG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuXG4gICAgKFNyYyA6IFNlcXVlbmNlX2dlbikgKERzdCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VfZ2VuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY3JlYXRlX2xpa2UgOiBsZW46aW50IC0+ICdhIFNyYy50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2EgU3JjLnQsICdhIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IHVuc2FmZV9ibGl0ID0gRHN0LnVuc2FmZV9ibGl0XG5cbiAgbGV0IGJsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgIH5wb3M6c3JjX3Bvc1xuICAgICAgfmxlblxuICAgICAgfnRvdGFsX2xlbmd0aDooU3JjLmxlbmd0aCBzcmMpO1xuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgIH5wb3M6ZHN0X3Bvc1xuICAgICAgfmxlblxuICAgICAgfnRvdGFsX2xlbmd0aDooRHN0Lmxlbmd0aCBkc3QpO1xuICAgIGlmIGxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlblxuICA7O1xuXG4gIGxldCBibGl0b1xuICAgICAgICB+c3JjXG4gICAgICAgID8oc3JjX3BvcyA9IDApXG4gICAgICAgID8oc3JjX2xlbiA9IFNyYy5sZW5ndGggc3JjIC0gc3JjX3BvcylcbiAgICAgICAgfmRzdFxuICAgICAgICA/KGRzdF9wb3MgPSAwKVxuICAgICAgICAoKVxuICAgID1cbiAgICBibGl0IH5zcmMgfnNyY19wb3MgfmxlbjpzcmNfbGVuIH5kc3QgfmRzdF9wb3NcbiAgOztcblxuICAoKiBbc3ViXSBhbmQgW3N1Ym9dIGVuc3VyZSB0aGF0IGV2ZXJ5IHBvc2l0aW9uIG9mIHRoZSBjcmVhdGVkIHNlcXVlbmNlIGlzIHBvcHVsYXRlZCBieVxuICAgICBhbiBlbGVtZW50IG9mIHRoZSBzb3VyY2UgYXJyYXkuICBUaHVzIGV2ZXJ5IGVsZW1lbnQgb2YgW2RzdF0gYmVsb3cgaXMgd2VsbFxuICAgICBkZWZpbmVkLiAqKVxuICBsZXQgc3ViIHNyYyB+cG9zIH5sZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg6KFNyYy5sZW5ndGggc3JjKTtcbiAgICBsZXQgZHN0ID0gRHN0LmNyZWF0ZV9saWtlIH5sZW4gc3JjIGluXG4gICAgaWYgbGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3M6cG9zIH5kc3QgfmRzdF9wb3M6MCB+bGVuO1xuICAgIGRzdFxuICA7O1xuXG4gIGxldCBzdWJvID8ocG9zID0gMCkgP2xlbiBzcmMgPVxuICAgIHN1YlxuICAgICAgc3JjXG4gICAgICB+cG9zXG4gICAgICB+bGVuOlxuICAgICAgICAobWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICAgIHwgTm9uZSAtPiBTcmMubGVuZ3RoIHNyYyAtIHBvcylcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFNlcXVlbmNlIDogc2lnXG4gICAgaW5jbHVkZSBTZXF1ZW5jZV9nZW5cblxuICAgIHZhbCBjcmVhdGVfbGlrZSA6IGxlbjppbnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHQsICdhIHQpIGJsaXRcbiAgZW5kKSA9XG4gIE1ha2VfZ2VuIChTZXF1ZW5jZSkgKFNlcXVlbmNlKVxuXG5tb2R1bGUgTWFrZTFfZ2VuZXJpYyAoU2VxdWVuY2UgOiBTZXF1ZW5jZTEpID0gTWFrZV9nZW4gKFNlcXVlbmNlKSAoU2VxdWVuY2UpXG5cbm1vZHVsZSBNYWtlIChTZXF1ZW5jZSA6IHNpZ1xuICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+IHRcbiAgICB2YWwgdW5zYWZlX2JsaXQgOiAodCwgdCkgYmxpdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgU2VxdWVuY2UgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBTZXF1ZW5jZS50XG5cbiAgICBvcGVuIFNlcXVlbmNlXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiBfID0gY3JlYXRlIH5sZW5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kXG5cbiAgaW5jbHVkZSBNYWtlX2dlbiAoU2VxdWVuY2UpIChTZXF1ZW5jZSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9kaXN0aW5jdFxuICAgIChTcmMgOiBTZXF1ZW5jZSkgKERzdCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAoU3JjLnQsIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgTWFrZV9nZW5cbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBTcmMudFxuXG4gICAgICBvcGVuIFNyY1xuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IERzdC50XG5cbiAgICAgIG9wZW4gRHN0XG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgICBlbmQpXG5cbm1vZHVsZSBNYWtlX3RvX3N0cmluZyAoVCA6IHNpZ1xuICAgIHR5cGUgdFxuICBlbmQpXG4gICAgKFRvX2J5dGVzIDogU19kaXN0aW5jdCB3aXRoIHR5cGUgc3JjIDo9IFQudCB3aXRoIHR5cGUgZHN0IDo9IGJ5dGVzKSA9XG5zdHJ1Y3RcbiAgb3BlbiBUb19ieXRlc1xuXG4gIGxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gICAgQnl0ZXMwLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KHN1YiBzcmMgfnBvcyB+bGVuKVxuICA7O1xuXG4gIGxldCBzdWJvID9wb3MgP2xlbiBzcmMgPVxuICAgIEJ5dGVzMC51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihzdWJvID9wb3MgP2xlbiBzcmMpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBFaXRoZXJfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBFaXRoZXIwXG5cbmxldCBzd2FwID0gZnVuY3Rpb25cbiAgfCBGaXJzdCB4IC0+IFNlY29uZCB4XG4gIHwgU2Vjb25kIHggLT4gRmlyc3QgeFxuOztcblxubGV0IGlzX2ZpcnN0ID0gZnVuY3Rpb25cbiAgfCBGaXJzdCBfIC0+IHRydWVcbiAgfCBTZWNvbmQgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3NlY29uZCA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgXyAtPiBmYWxzZVxuICB8IFNlY29uZCBfIC0+IHRydWVcbjs7XG5cbmxldCB2YWx1ZSAoRmlyc3QgeCB8IFNlY29uZCB4KSA9IHhcblxubGV0IHZhbHVlX21hcCB0IH5maXJzdCB+c2Vjb25kID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRmlyc3QgeCAtPiBmaXJzdCB4XG4gIHwgU2Vjb25kIHggLT4gc2Vjb25kIHhcbjs7XG5cbmxldCBpdGVyID0gdmFsdWVfbWFwXG5cbmxldCBtYXAgdCB+Zmlyc3QgfnNlY29uZCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEZpcnN0IHggLT4gRmlyc3QgKGZpcnN0IHgpXG4gIHwgU2Vjb25kIHggLT4gU2Vjb25kIChzZWNvbmQgeClcbjs7XG5cbmxldCBmaXJzdCB4ID0gRmlyc3QgeFxubGV0IHNlY29uZCB4ID0gU2Vjb25kIHhcblxubGV0IGVxdWFsIGVxMSBlcTIgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IEZpcnN0IHgsIEZpcnN0IHkgLT4gZXExIHggeVxuICB8IFNlY29uZCB4LCBTZWNvbmQgeSAtPiBlcTIgeCB5XG4gIHwgRmlyc3QgXywgU2Vjb25kIF8gfCBTZWNvbmQgXywgRmlyc3QgXyAtPiBmYWxzZVxuOztcblxubGV0IGludmFyaWFudCBmIHMgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gZiB4XG4gIHwgU2Vjb25kIHkgLT4gcyB5XG47O1xuXG5tb2R1bGUgRm9jdXMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IEZvY3VzIG9mIHsgdmFsdWUgOiAnYSBbQGdsb2JhbF0gfVxuICAgIHwgT3RoZXIgb2YgeyB2YWx1ZSA6ICdiIFtAZ2xvYmFsXSB9XG5lbmRcblxubW9kdWxlIE1ha2VfZm9jdXNlZCAoTSA6IHNpZ1xuICAgIHR5cGUgKCsnYSwgKydiKSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gICAgdmFsIG90aGVyIDogJ2IgLT4gKF8sICdiKSB0XG4gICAgdmFsIGZvY3VzIDogKCdhLCAnYikgdCAtPiAoKCdhLCAnYikgRm9jdXMudFtAbG9jYWxdKVxuXG4gICAgdmFsIGNvbWJpbmVcbiAgICAgIDogICgnYSwgJ2QpIHRcbiAgICAgIC0+ICgnYiwgJ2QpIHRcbiAgICAgIC0+IGY6KCgnYSAtPiAnYiAtPiAnYylbQGxvY2FsXSlcbiAgICAgIC0+IG90aGVyOigoJ2QgLT4gJ2QgLT4gJ2QpW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2MsICdkKSB0XG5cbiAgICB2YWwgYmluZCA6ICgnYSwgJ2IpIHQgLT4gZjooKCdhIC0+ICgnYywgJ2IpIHQpW0Bsb2NhbF0pIC0+ICgnYywgJ2IpIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNXG4gIG9wZW4gV2l0aF9yZXR1cm5cblxuICBsZXQgbWFwIHQgfmYgPVxuICAgIGxldCByZXMgPSBiaW5kIHQgfmY6KGZ1biB4IC0+IHJldHVybiAoZiB4KSkgaW5cbiAgICByZXNcbiAgOztcblxuICBpbmNsdWRlIE1vbmFkLk1ha2UyX2xvY2FsIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBBcHAgPSBBcHBsaWNhdGl2ZS5NYWtlMl91c2luZ19tYXAyX2xvY2FsIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuXG4gICAgICBsZXQgbWFwMiA6ICgnYSwgJ3gpIHQgLT4gKCdiLCAneCkgdCAtPiBmOigoJ2EgLT4gJ2IgLT4gJ2MpW0Bsb2NhbF0pIC0+ICgnYywgJ3gpIHQgPVxuICAgICAgICBmdW4gdDEgdDIgfmYgLT5cbiAgICAgICAgYmluZCB0MSB+ZjooZnVuIHggLT4gYmluZCB0MiB+ZjooZnVuIHkgLT4gcmV0dXJuIChmIHggeSkpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQXBwXG5cbiAgbGV0IGNvbWJpbmVfYWxsID1cbiAgICBsZXQgcmVjIG90aGVyX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBvdGhlciBhY2NcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICAobWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgICAgICB8IEZvY3VzIF8gLT4gb3RoZXJfbG9vcCBmIGFjYyB0c1xuICAgICAgICAgfCBPdGhlciBvIC0+IG90aGVyX2xvb3AgZiAoZiBhY2Mgby52YWx1ZSkgdHMpXG4gICAgaW5cbiAgICBsZXQgcmVjIHJldHVybl9sb29wIGYgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiBhY2MpXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgKG1hdGNoIGZvY3VzIHQgd2l0aFxuICAgICAgICAgfCBGb2N1cyB4IC0+IHJldHVybl9sb29wIGYgKHgudmFsdWUgOjogYWNjKSB0c1xuICAgICAgICAgfCBPdGhlciBvIC0+IG90aGVyX2xvb3AgZiBvLnZhbHVlIHRzKVxuICAgIGluXG4gICAgZnVuIHRzIH5mIC0+IHJldHVybl9sb29wIGYgW10gdHNcbiAgOztcblxuICBsZXQgY29tYmluZV9hbGxfdW5pdCA9XG4gICAgbGV0IHJlYyBvdGhlcl9sb29wIGYgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gb3RoZXIgYWNjXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgKG1hdGNoIGZvY3VzIHQgd2l0aFxuICAgICAgICAgfCBGb2N1cyBfIC0+IG90aGVyX2xvb3AgZiBhY2MgdHNcbiAgICAgICAgIHwgT3RoZXIgbyAtPiBvdGhlcl9sb29wIGYgKGYgYWNjIG8udmFsdWUpIHRzKVxuICAgIGluXG4gICAgbGV0IHJlYyByZXR1cm5fbG9vcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgKG1hdGNoIGZvY3VzIHQgd2l0aFxuICAgICAgICAgfCBGb2N1cyB7IHZhbHVlID0gKCkgfSAtPiByZXR1cm5fbG9vcCBmIHRzXG4gICAgICAgICB8IE90aGVyIHsgdmFsdWUgPSBvIH0gLT4gb3RoZXJfbG9vcCBmIG8gdHMpXG4gICAgaW5cbiAgICBmdW4gdHMgfmYgLT4gcmV0dXJuX2xvb3AgZiB0c1xuICA7O1xuXG4gIGxldCB0b19vcHRpb24gdCA9XG4gICAgbWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgfCBGb2N1cyB4IC0+IFNvbWUgeC52YWx1ZVxuICAgIHwgT3RoZXIgXyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIGZvY3VzIHQgd2l0aFxuICAgIHwgRm9jdXMgeCAtPiB4LnZhbHVlXG4gICAgfCBPdGhlciBfIC0+IGRlZmF1bHRcbiAgOztcblxuICBsZXQgd2l0aF9yZXR1cm4gZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByZXQgLT4gb3RoZXIgKGYgKFdpdGhfcmV0dXJuLnByZXBlbmQgcmV0IH5mOnJldHVybikpKSBbQG5vbnRhaWxdXG4gIDs7XG5lbmRcblxubW9kdWxlIEZpcnN0ID0gTWFrZV9mb2N1c2VkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICAgbGV0IHJldHVybiA9IGZpcnN0XG4gICAgbGV0IG90aGVyID0gc2Vjb25kXG5cbiAgICBsZXQgZm9jdXMgdCA6IF8gRm9jdXMudCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRmlyc3QgeCAtPiBGb2N1cyB7IHZhbHVlID0geCB9XG4gICAgICB8IFNlY29uZCB5IC0+IE90aGVyIHsgdmFsdWUgPSB5IH1cbiAgICA7O1xuXG4gICAgbGV0IGNvbWJpbmUgdDEgdDIgfmYgfm90aGVyID1cbiAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICB8IEZpcnN0IHgsIEZpcnN0IHkgLT4gRmlyc3QgKGYgeCB5KVxuICAgICAgfCBTZWNvbmQgeCwgU2Vjb25kIHkgLT4gU2Vjb25kIChvdGhlciB4IHkpXG4gICAgICB8IFNlY29uZCB4LCBfIHwgXywgU2Vjb25kIHggLT4gU2Vjb25kIHhcbiAgICA7O1xuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRmlyc3QgeCAtPiBmIHhcbiAgICAgICgqIFJldXNlIHRoZSB2YWx1ZSBpbiBvcmRlciB0byBhdm9pZCBhbGxvY2F0aW9uLiAqKVxuICAgICAgfCBTZWNvbmQgXyBhcyB5IC0+IHlcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBTZWNvbmQgPSBNYWtlX2ZvY3VzZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2IsICdhKSB0XG5cbiAgICBsZXQgcmV0dXJuID0gc2Vjb25kXG4gICAgbGV0IG90aGVyID0gZmlyc3RcblxuICAgIGxldCBmb2N1cyB0IDogXyBGb2N1cy50ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBTZWNvbmQgeCAtPiBGb2N1cyB7IHZhbHVlID0geCB9XG4gICAgICB8IEZpcnN0IHkgLT4gT3RoZXIgeyB2YWx1ZSA9IHkgfVxuICAgIDs7XG5cbiAgICBsZXQgY29tYmluZSB0MSB0MiB+ZiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgU2Vjb25kIHgsIFNlY29uZCB5IC0+IFNlY29uZCAoZiB4IHkpXG4gICAgICB8IEZpcnN0IHgsIEZpcnN0IHkgLT4gRmlyc3QgKG90aGVyIHggeSlcbiAgICAgIHwgRmlyc3QgeCwgXyB8IF8sIEZpcnN0IHggLT4gRmlyc3QgeFxuICAgIDs7XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBTZWNvbmQgeCAtPiBmIHhcbiAgICAgICgqIFJldXNlIHRoZSB2YWx1ZSBpbiBvcmRlciB0byBhdm9pZCBhbGxvY2F0aW9uLCBsaWtlIFtGaXJzdC5iaW5kXSBhYm92ZS4gKilcbiAgICAgIHwgRmlyc3QgXyBhcyB5IC0+IHlcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2YsICdzKSBfZWl0aGVyID0gKCdmLCAncykgdCA9XG4gICAgfCBGaXJzdCBvZiAnZlxuICAgIHwgU2Vjb25kIG9mICdzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBvcHRpb24gW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX29wdGlvblxuXG4gIGxldCBnbG9iYWxpemUgOiAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdCA9XG4gICAgZnVuICh0eXBlIGFfXzAwNV8pXG4gICAgICAgIDogKCgoYV9fMDA1X1tAb2NhbWwubG9jYWxdKSAtPiBhX18wMDVfKSAtPiAoYV9fMDA1XyB0W0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwNV8gdCkgLT5cbiAgICAgIGdsb2JhbGl6ZV9vcHRpb25cbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX3QgOlxuICAgICdhLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+ICdhIHRcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgaGFzaF9mb2xkX29wdGlvblxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICAgIG9wdGlvbl9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgc2V4cF9vZl9vcHRpb25cbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gb3B0aW9uX3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgZ2xvYmFsaXplIDogKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdFxuXG4gIGluY2x1ZGUgUHB4X2hhc2hfbGliLkhhc2hhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmQpXG5cbnR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9XG4gIHwgTm9uZVxuICB8IFNvbWUgb2YgJ2FcblxubGV0IGlzX25vbmUgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19zb21lID0gZnVuY3Rpb25cbiAgfCBTb21lIF8gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCB2YWx1ZV9tYXAgbyB+ZGVmYXVsdCB+ZiA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IFNvbWUgeCAtPiBmIHhcbiAgfCBOb25lIC0+IGRlZmF1bHRcbjs7XG5cbmxldCBpdGVyIG8gfmYgPVxuICBtYXRjaCBvIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBhIC0+IGYgYVxuOztcblxubGV0IGludmFyaWFudCBmIHQgPSBpdGVyIHQgfmZcblxubGV0IGNhbGwgeCB+ZiA9XG4gIG1hdGNoIGYgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGYgLT4gZiB4XG47O1xuXG5sZXQgdmFsdWUgdCB+ZGVmYXVsdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gZGVmYXVsdFxuICB8IFNvbWUgeCAtPiB4XG47O1xuXG5sZXQgdmFsdWVfZXhuID9oZXJlID9lcnJvciA/bWVzc2FnZSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+XG4gICAgbGV0IGVycm9yID1cbiAgICAgIG1hdGNoIGhlcmUsIGVycm9yLCBtZXNzYWdlIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSwgTm9uZSAtPiBFcnJvci5vZl9zdHJpbmcgXCJPcHRpb24udmFsdWVfZXhuIE5vbmVcIlxuICAgICAgfCBOb25lLCBOb25lLCBTb21lIG0gLT4gRXJyb3Iub2Zfc3RyaW5nIG1cbiAgICAgIHwgTm9uZSwgU29tZSBlLCBOb25lIC0+IGVcbiAgICAgIHwgTm9uZSwgU29tZSBlLCBTb21lIG0gLT4gRXJyb3IudGFnIGUgfnRhZzptXG4gICAgICB8IFNvbWUgcCwgTm9uZSwgTm9uZSAtPlxuICAgICAgICBFcnJvci5jcmVhdGUgXCJPcHRpb24udmFsdWVfZXhuXCIgcCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90XG4gICAgICB8IFNvbWUgcCwgTm9uZSwgU29tZSBtIC0+IEVycm9yLmNyZWF0ZSBtIHAgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdFxuICAgICAgfCBTb21lIHAsIFNvbWUgZSwgXyAtPlxuICAgICAgICBFcnJvci5jcmVhdGVcbiAgICAgICAgICAodmFsdWUgbWVzc2FnZSB+ZGVmYXVsdDpcIlwiKVxuICAgICAgICAgIChlLCBwKVxuICAgICAgICAgIChzZXhwX29mX3BhaXIgRXJyb3Iuc2V4cF9vZl90IFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3QpXG4gICAgaW5cbiAgICBFcnJvci5yYWlzZSBlcnJvclxuOztcblxubGV0IHZhbHVlX29yX3RodW5rIG8gfmRlZmF1bHQgPVxuICBtYXRjaCBvIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT4gZGVmYXVsdCAoKVxuOztcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IFt8fF1cbiAgfCBTb21lIHggLT4gW3wgeCB8XVxuOztcblxubGV0IHRvX2xpc3QgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gW11cbiAgfCBTb21lIHggLT4gWyB4IF1cbjs7XG5cbmxldCBtaW5fZWx0IHQgfmNvbXBhcmU6XyA9IHRcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmU6XyA9IHRcblxubGV0IHN1bSAodHlwZSBhKSAobW9kdWxlIE0gOiBDb250YWluZXIuU3VtbWFibGUgd2l0aCB0eXBlIHQgPSBhKSB0IH5mID1cbiAgdmFsdWVfbWFwIHQgfmRlZmF1bHQ6TS56ZXJvIH5mXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSB4IC0+IGYgeFxuOztcblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgeCAtPiBmIHhcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGEnIC0+IGVxdWFsIGEgYSdcbjs7XG5cbmxldCBsZW5ndGggdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgXyAtPiAxXG47O1xuXG5sZXQgaXNfZW1wdHkgPSBpc19ub25lXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIHggLT4gZiBpbml0IHhcbjs7XG5cbmxldCBjb3VudCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBhIC0+IGlmIGYgYSB0aGVuIDEgZWxzZSAwXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB4IC0+IGlmIGYgeCB0aGVuIHQgZWxzZSBOb25lXG47O1xuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYSAtPiBmIGFcbjs7XG5cbmxldCBlcXVhbCBmIHQgdCcgPVxuICBtYXRjaCB0LCB0JyB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSB4LCBTb21lIHgnIC0+IGYgeCB4J1xuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBzb21lIHggPSBTb21lIHhcblxubGV0IGZpcnN0X3NvbWUgeCB5ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU29tZSBfIC0+IHhcbiAgfCBOb25lIC0+IHlcbjs7XG5cbmxldCBzb21lX2lmIGNvbmQgeCA9IGlmIGNvbmQgdGhlbiBTb21lIHggZWxzZSBOb25lXG5cbmxldCBtZXJnZSBhIGIgfmYgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb25lLCB4IHwgeCwgTm9uZSAtPiB4XG4gIHwgU29tZSBhLCBTb21lIGIgLT4gU29tZSAoZiBhIGIpXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTb21lIHYgYXMgbyB3aGVuIGYgdiAtPiBvXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgdHJ5X3dpdGggZiA9XG4gIG1hdGNoIGYgKCkgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gZiA9XG4gIG1hdGNoIGYgKCkgd2l0aFxuICB8IHggLT4geFxuICB8IGV4Y2VwdGlvbiBfIC0+IE5vbmVcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYSAtPiBTb21lIChmIGEpXG47O1xuXG5tb2R1bGUgTW9uYWRfYXJnID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvblxuXG4gIGxldCByZXR1cm4geCA9IFNvbWUgeFxuICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcblxuICBsZXQgYmluZCBvIH5mID1cbiAgICBtYXRjaCBvIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICA7O1xuZW5kXG5cbmluY2x1ZGUgTW9uYWQuTWFrZV9sb2NhbCAoTW9uYWRfYXJnKVxuXG5tb2R1bGUgQXBwbGljYXRpdmVfYXJnID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvblxuXG4gIGxldCByZXR1cm4geCA9IFNvbWUgeFxuICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcblxuICBsZXQgbWFwMiB4IHkgfmYgPVxuICAgIG1hdGNoIHgsIHkgd2l0aFxuICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB4LCBTb21lIHkgLT4gU29tZSAoZiB4IHkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlX3VzaW5nX21hcDJfbG9jYWwgKEFwcGxpY2F0aXZlX2FyZylcblxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQm9vbDBcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYm9vbFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2Jvb2wgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgZmFsc2U7IHRydWUgXSA6IHQgbGlzdClcbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfYm9vbCA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9ib29sXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9ib29sIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChib29sX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2Jvb2wgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gYm9vbF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cblxuICBsZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICAgIHwgcyAtPiBpbnZhbGlkX2FyZ2YgXCJCb29sLm9mX3N0cmluZzogZXhwZWN0ZWQgdHJ1ZSBvciBmYWxzZSBidXQgZ290ICVzXCIgcyAoKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSBTdGRsaWIuc3RyaW5nX29mX2Jvb2xcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5Cb29sXCJcbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBCb29sX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0IHRvX2ludCB4ID0gYm9vbF90b19pbnQgeFxuXG5tb2R1bGUgTm9uX3Nob3J0X2NpcmN1aXRpbmcgPSBzdHJ1Y3RcbiAgKCogV2UgZG9uJ3QgZXhwb3NlIHRoaXMsIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgdGhlIGludmFyaWFudCBtZW50aW9uZWQgYmVsb3cgb2ZcbiAgICAgKHRvX2ludCB0cnVlID0gMSkgYW5kICh0b19pbnQgZmFsc2UgPSAwKS4gKilcbiAgbGV0IHVuc2FmZV9vZl9pbnQgKHggOiBpbnQpIDogYm9vbCA9IFN0ZGxpYi5PYmoubWFnaWMgeFxuICBsZXQgKCB8fCApIGEgYiA9IHVuc2FmZV9vZl9pbnQgKHRvX2ludCBhIGxvciB0b19pbnQgYilcbiAgbGV0ICggJiYgKSBhIGIgPSB1bnNhZmVfb2ZfaW50ICh0b19pbnQgYSBsYW5kIHRvX2ludCBiKVxuZW5kXG5cbigqIFdlIGRvIHRoaXMgYXMgYSBkaXJlY3QgYXNzZXJ0IG9uIHRoZSB0aGVvcnkgdGhhdCBpdCdzIGEgY2hlYXAgdGhpbmcgdG8gdGVzdCBhbmQgYVxuICAgcmVhbGx5IGNvcmUgaW52YXJpYW50IHRoYXQgd2UgbmV2ZXIgZXhwZWN0IHRvIGJyZWFrLCBhbmQgd2Ugc2hvdWxkIGJlIGhhcHB5IGZvciBhXG4gICBwcm9ncmFtIHRvIGZhaWwgaW1tZWRpYXRlbHkgaWYgdGhpcyBpcyB2aW9sYXRlZC4gKilcbmxldCAoKSA9IGFzc2VydCAoUG9seS4oID0gKSAodG9faW50IHRydWUpIDEgJiYgUG9seS4oID0gKSAodG9faW50IGZhbHNlKSAwKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQm9vbF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm1vZHVsZSBMaXN0ID0gTGlzdFxuXG5tb2R1bGUgRW51bWVyYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgYWxsIDogdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gKCdhLCAnYikgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAnYyBsaXN0IC0+ICgnYSwgJ2IsICdjKSB0IGxpc3RcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb250YWluZXJfaW50Zi5FeHBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIExpc3QgPSBMaXN0MVxuXG5tb2R1bGUgU3RlcCA9IHN0cnVjdFxuICAoKiAnYSBpcyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSwgJ3MgaXMgdGhlIHN0YXRlIHRoYXQgd2lsbCBwcm9kdWNlIHRoZSByZW1haW5kZXIgb2ZcbiAgICAgdGhlIHNlcXVlbmNlICopXG4gIHR5cGUgKCdhLCAncykgdCA9XG4gICAgfCBEb25lXG4gICAgfCBTa2lwIG9mIHsgc3RhdGUgOiAncyB9XG4gICAgfCBZaWVsZCBvZlxuICAgICAgICB7IHZhbHVlIDogJ2FcbiAgICAgICAgOyBzdGF0ZSA6ICdzXG4gICAgICAgIH1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2EgJ3MuXG4gICAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ3MgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYSwgJ3MpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuICh0eXBlIGFfXzAxMV8gc19fMDEyXylcbiAgICAgICAgOiAgKChhX18wMTFfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKHNfXzAxMl8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgICAgLT4gKGFfXzAxMV8sIHNfXzAxMl8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgICAgZnVuIF9vZl9hX18wMDFfIF9vZl9zX18wMDJfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgRG9uZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJEb25lXCJcbiAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzdGF0ZV9fMDA0XyB9IC0+XG4gICAgICAgICAgbGV0IGJuZHNfXzAwM18gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICAgICAgbGV0IGFyZ19fMDA1XyA9IF9vZl9zX18wMDJfIHN0YXRlX18wMDRfIGluXG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhdGVcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJTa2lwXCIgOjogYm5kc19fMDAzXylcbiAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gdmFsdWVfXzAwN187IHN0YXRlID0gc3RhdGVfXzAwOV8gfSAtPlxuICAgICAgICAgIGxldCBibmRzX18wMDZfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgICAgIGxldCBibmRzX18wMDZfID1cbiAgICAgICAgICAgIGxldCBhcmdfXzAxMF8gPSBfb2Zfc19fMDAyXyBzdGF0ZV9fMDA5XyBpblxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInN0YXRlXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwNl9cbiAgICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBibmRzX18wMDZfID1cbiAgICAgICAgICAgIGxldCBhcmdfXzAwOF8gPSBfb2ZfYV9fMDAxXyB2YWx1ZV9fMDA3XyBpblxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInZhbHVlXCI7IGFyZ19fMDA4XyBdIDo6IGJuZHNfXzAwNl9cbiAgICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgICBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiWWllbGRcIiA6OiBibmRzX18wMDZfKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxub3BlbiBTdGVwXG5cbigqICdhIGlzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlLCAncyBpcyB0aGUgc3RhdGUgdGhhdCB3aWxsIHByb2R1Y2UgdGhlIHJlbWFpbmRlciBvZiB0aGVcbiAgIHNlcXVlbmNlICopXG50eXBlICtfIHQgPVxuICB8IFNlcXVlbmNlIDpcbiAgICAgIHsgc3RhdGUgOiAnc1xuICAgICAgOyBuZXh0IDogJ3MgLT4gKCdhLCAncykgU3RlcC50XG4gICAgICB9XG4gICAgICAtPiAnYSB0XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IG5leHRfc3RlcCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgPSBmIH0pID1cbiAgICBtYXRjaCBmIHMgd2l0aFxuICAgIHwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgPSBmIH0gfVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSB9XG4gIDs7XG5cbiAgbGV0IGRlbGF5ZWRfZm9sZF9zdGVwIHMgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBsb29wIHMgbmV4dCBmaW5pc2ggZiBhY2MgPVxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBmaW5pc2ggYWNjXG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBmIGFjYyBOb25lIH5rOihsb29wIHMgbmV4dCBmaW5pc2ggZilcbiAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IGYgYWNjIChTb21lIGEpIH5rOihsb29wIHMgbmV4dCBmaW5pc2ggZilcbiAgICBpblxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIHMgbmV4dCBmaW5pc2ggZiBpbml0XG4gIDs7XG5lbmRcblxubGV0IHVuZm9sZF9zdGVwIH5pbml0IH5mID0gU2VxdWVuY2UgeyBzdGF0ZSA9IGluaXQ7IG5leHQgPSBmIH1cblxubGV0IHVuZm9sZCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF9zdGVwIH5pbml0IH5mOihmdW4gcyAtPlxuICAgIG1hdGNoIGYgcyB3aXRoXG4gICAgfCBOb25lIC0+IFN0ZXAuRG9uZVxuICAgIHwgU29tZSAoYSwgcykgLT4gU3RlcC5ZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0pXG47O1xuXG5sZXQgdW5mb2xkX3dpdGggcyB+aW5pdCB+ZiA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGluaXQsIHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biAoc2VlZCwgcykgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gc2VlZCwgcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgICAgICAgIChtYXRjaCBmIHNlZWQgYSB3aXRoXG4gICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHNlZWQgfSAtPiBTa2lwIHsgc3RhdGUgPSBzZWVkLCBzIH1cbiAgICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHNlZWQgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzZWVkLCBzIH0pKVxuICAgICAgfVxuOztcblxubGV0IHVuZm9sZF93aXRoX2FuZF9maW5pc2ggcyB+aW5pdCB+cnVubmluZ19zdGVwIH5pbm5lcl9maW5pc2hlZCB+ZmluaXNoaW5nX3N0ZXAgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBgSW5uZXJfcnVubmluZyAoaW5pdCwgcylcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biBzdGF0ZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgICAgICB8IGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpIC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBpbm5lcl9zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBEb25lIC0+IFNraXAgeyBzdGF0ZSA9IGBJbm5lcl9maW5pc2hlZCAoaW5uZXJfZmluaXNoZWQgc3RhdGUpIH1cbiAgICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IGlubmVyX3N0YXRlIH0gLT5cbiAgICAgICAgICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpIH1cbiAgICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IGlubmVyX3N0YXRlIH0gLT5cbiAgICAgICAgICAgICAgICAgIChtYXRjaCBydW5uaW5nX3N0ZXAgc3RhdGUgeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSB9IC0+IFNraXAgeyBzdGF0ZSA9IGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpIH1cbiAgICAgICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB5OyBzdGF0ZSB9IC0+XG4gICAgICAgICAgICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0geTsgc3RhdGUgPSBgSW5uZXJfcnVubmluZyAoc3RhdGUsIGlubmVyX3N0YXRlKSB9KSlcbiAgICAgICAgICAgICB8IGBJbm5lcl9maW5pc2hlZCBzdGF0ZSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIGZpbmlzaGluZ19zdGVwIHN0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlIH0gLT4gU2tpcCB7IHN0YXRlID0gYElubmVyX2ZpbmlzaGVkIHN0YXRlIH1cbiAgICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB5OyBzdGF0ZSB9IC0+XG4gICAgICAgICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0geTsgc3RhdGUgPSBgSW5uZXJfZmluaXNoZWQgc3RhdGUgfSkpXG4gICAgICB9XG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6bCB+ZjooZnVuY3Rpb25cbiAgICB8IFtdIC0+IERvbmVcbiAgICB8IHggOjogbCAtPiBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBsIH0pXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIHNlZWQgdiBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgfCBEb25lIC0+IHZcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgdiBuZXh0IGZcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgKGYgdiBhKSBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgaW5pdCBuZXh0IGZcbjs7XG5cbmxldCB0b19saXN0X3JldiB0ID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gbCB4IC0+IHggOjogbClcblxuXG5sZXQgdG9fbGlzdCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgPVxuICBsZXQgc2FmZV90b19saXN0IHQgPSBMaXN0LnJldiAodG9fbGlzdF9yZXYgdCkgaW5cbiAgbGV0IHJlYyB0b19saXN0IHMgbmV4dCBpID1cbiAgICBpZiBpID0gMFxuICAgIHRoZW4gc2FmZV90b19saXN0IChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBbXVxuICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gdG9fbGlzdCBzIG5leHQgaVxuICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gYSA6OiB0b19saXN0IHMgbmV4dCAoaSAtIDEpKVxuICBpblxuICB0b19saXN0IHMgbmV4dCA1MDBcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5cbmxldCByYW5nZSA/KHN0cmlkZSA9IDEpID8oc3RhcnQgPSBgaW5jbHVzaXZlKSA/KHN0b3AgPSBgZXhjbHVzaXZlKSBzdGFydF92IHN0b3BfdiA9XG4gIGxldCBzdGVwID1cbiAgICBtYXRjaCBzdG9wIHdpdGhcbiAgICB8IGBpbmNsdXNpdmUgd2hlbiBzdHJpZGUgPj0gMCAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA+IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCB7IHZhbHVlID0gaTsgc3RhdGUgPSBpICsgc3RyaWRlIH1cbiAgICB8IGBpbmNsdXNpdmUgLT5cbiAgICAgIGZ1biBpIC0+IGlmIGkgPCBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGk7IHN0YXRlID0gaSArIHN0cmlkZSB9XG4gICAgfCBgZXhjbHVzaXZlIHdoZW4gc3RyaWRlID49IDAgLT5cbiAgICAgIGZ1biBpIC0+IGlmIGkgPj0gc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIHsgdmFsdWUgPSBpOyBzdGF0ZSA9IGkgKyBzdHJpZGUgfVxuICAgIHwgYGV4Y2x1c2l2ZSAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA8PSBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGk7IHN0YXRlID0gaSArIHN0cmlkZSB9XG4gIGluXG4gIGxldCBpbml0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBgaW5jbHVzaXZlIC0+IHN0YXJ0X3ZcbiAgICB8IGBleGNsdXNpdmUgLT4gc3RhcnRfdiArIHN0cmlkZVxuICBpblxuICB1bmZvbGRfc3RlcCB+aW5pdCB+ZjpzdGVwXG47O1xuXG5sZXQgb2ZfbGF6eSB0X2xhenkgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDp0X2xhenkgfmY6KGZ1biB0X2xhenkgLT5cbiAgICBsZXQgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pID0gTGF6eS5mb3JjZSB0X2xhenkgaW5cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT5cbiAgICAgIFNraXBcbiAgICAgICAgeyBzdGF0ZSA9XG4gICAgICAgICAgICAobGV0IHYgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IGluXG4gICAgICAgICAgICAgbGF6eSB2KVxuICAgICAgICB9XG4gICAgfCBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBzIH0gLT5cbiAgICAgIFlpZWxkXG4gICAgICAgIHsgdmFsdWUgPSB4XG4gICAgICAgIDsgc3RhdGUgPVxuICAgICAgICAgICAgKGxldCB2ID0gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSBpblxuICAgICAgICAgICAgIGxhenkgdilcbiAgICAgICAgfSlcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IHNlZWRcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biBzZWVkIC0+XG4gICAgICAgICAgICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBmIGE7IHN0YXRlID0gcyB9KVxuICAgICAgfVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IDAsIHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biAoaSwgcykgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSwgcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGYgaSBhOyBzdGF0ZSA9IGkgKyAxLCBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgZm9sZGluZ19tYXAgdCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF93aXRoIHQgfmluaXQgfmY6KGZ1biBhY2MgeCAtPlxuICAgIGxldCBhY2MsIHggPSBmIGFjYyB4IGluXG4gICAgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gYWNjIH0pXG47O1xuXG5sZXQgZm9sZGluZ19tYXBpIHQgfmluaXQgfmYgPVxuICB1bmZvbGRfd2l0aCB0IH5pbml0OigwLCBpbml0KSB+ZjooZnVuIChpLCBhY2MpIHggLT5cbiAgICBsZXQgYWNjLCB4ID0gZiBpIGFjYyB4IGluXG4gICAgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gaSArIDEsIGFjYyB9KVxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gc2VlZFxuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHNlZWQgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gd2hlbiBmIGEgLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9KVxuICAgICAgfVxuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIG1hcCB+ZjpzbmQgKGZpbHRlciAobWFwaSB0IH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcykpXG47O1xuXG5sZXQgbGVuZ3RoIHQgPVxuICBsZXQgcmVjIGxvb3AgaSBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGlcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIGkgcyBuZXh0XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gbG9vcCAoaSArIDEpIHMgbmV4dFxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3AgMCBzZWVkIG5leHRcbjs7XG5cbmxldCB0b19saXN0X3Jldl93aXRoX2xlbmd0aCB0ID0gZm9sZCB0IH5pbml0OihbXSwgMCkgfmY6KGZ1biAobCwgaSkgeCAtPiB4IDo6IGwsIGkgKyAxKVxuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIGxldCBsLCBsZW4gPSB0b19saXN0X3Jldl93aXRoX2xlbmd0aCB0IGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCB4IDo6IGwgLT5cbiAgICBsZXQgYSA9IEFycmF5LmNyZWF0ZSB+bGVuIHggaW5cbiAgICBsZXQgcmVjIGxvb3AgaSBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgKGkgPSAtMSlcbiAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGEuKGkpIDwtIHg7XG4gICAgICAgIGxvb3AgKGkgLSAxKSBsXG4gICAgaW5cbiAgICBsb29wIChsZW4gLSAyKSBsO1xuICAgIGFcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIGYgYSAtPiBTb21lIGFcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgKG1hdGNoIGYgYSB3aXRoXG4gICAgICAgfCBOb25lIC0+IGxvb3AgcyBuZXh0IGZcbiAgICAgICB8IHNvbWVfYiAtPiBzb21lX2IpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGkgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgKG1hdGNoIGYgaSBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBzIG5leHQgZiAoaSArIDEpXG4gICAgICAgfCBzb21lX2IgLT4gc29tZV9iKVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGYgaVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGYgMFxuOztcblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gdHJ1ZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gXyB9IHdoZW4gbm90IChmIGEpIC0+IGZhbHNlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGkgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IHRydWVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIG5vdCAoZiBpIGEpIC0+IGZhbHNlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiAoaSArIDEpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZhbHNlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gd2hlbiBmIGEgLT4gdHJ1ZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGkgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZhbHNlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gd2hlbiBmIGkgYSAtPiB0cnVlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiAoaSArIDEpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHNlZWQgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgIHwgRG9uZSAtPiAoKVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGZcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgZiBhO1xuICAgICAgbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBpc19lbXB0eSB0ID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gdHJ1ZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCBfIC0+IGZhbHNlXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHRcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgYSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IF8gfSB3aGVuIGVxdWFsIGEgYiAtPiB0cnVlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgYVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGEgW0Bub250YWlsXVxuOztcblxubGV0IGVtcHR5ID0gU2VxdWVuY2UgeyBzdGF0ZSA9ICgpOyBuZXh0ID0gKGZ1biAoKSAtPiBEb25lKSB9XG5cbmxldCBiaW5kIHQgfmYgPVxuICB1bmZvbGRfc3RlcFxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9LCByZXN0IC0+XG4gICAgICAgIChtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgfCBEb25lIC0+XG4gICAgICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICAgICAgICBTa2lwIHsgc3RhdGUgPSBlbXB0eSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICAgICAgICBTa2lwIHsgc3RhdGUgPSBmIGEsIFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gfSkpXG4gICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9LCByZXN0IH1cbiAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0sIHJlc3QgfSkpXG4gICAgfmluaXQ6KGVtcHR5LCB0KVxuOztcblxubGV0IHJldHVybiB4ID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6KFNvbWUgeCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IERvbmVcbiAgICB8IFNvbWUgeCAtPiBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBOb25lIH0pXG47O1xuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gIGVuZClcblxubGV0IG50aCBzIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGkgcyBuZXh0ID1cbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gTm9uZVxuICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBpIHMgbmV4dFxuICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBpIDAgdGhlbiBTb21lIGEgZWxzZSBsb29wIChpIC0gMSkgcyBuZXh0XG4gICAgaW5cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBuIHMgbmV4dClcbjs7XG5cbmxldCBudGhfZXhuIHMgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTZXF1ZW5jZS5udGhcIlxuICBlbHNlIChcbiAgICBtYXRjaCBudGggcyBuIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS5udGhcIlxuICAgIHwgU29tZSB4IC0+IHgpXG47O1xuXG5tb2R1bGUgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IExlZnQgb2YgJ2FcbiAgICB8IFJpZ2h0IG9mICdiXG4gICAgfCBCb3RoIG9mICdhICogJ2JcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2EgJ2IuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICgnYiAtPiAnYiAtPiBpbnQpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2EgX2NtcF9fYiBhX18wMTNfIGJfXzAxNF8gLT5cbiAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAxM18gYl9fMDE0X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDEzXywgYl9fMDE0XyB3aXRoXG4gICAgICB8IExlZnQgX2FfXzAxNV8sIExlZnQgX2JfXzAxNl8gLT4gX2NtcF9fYSBfYV9fMDE1XyBfYl9fMDE2X1xuICAgICAgfCBMZWZ0IF8sIF8gLT4gLTFcbiAgICAgIHwgXywgTGVmdCBfIC0+IDFcbiAgICAgIHwgUmlnaHQgX2FfXzAxN18sIFJpZ2h0IF9iX18wMThfIC0+IF9jbXBfX2IgX2FfXzAxN18gX2JfXzAxOF9cbiAgICAgIHwgUmlnaHQgXywgXyAtPiAtMVxuICAgICAgfCBfLCBSaWdodCBfIC0+IDFcbiAgICAgIHwgQm90aCAoX2FfXzAxOV8sIF9hX18wMjFfKSwgQm90aCAoX2JfXzAyMF8sIF9iX18wMjJfKSAtPlxuICAgICAgICAobWF0Y2ggX2NtcF9fYSBfYV9fMDE5XyBfYl9fMDIwXyB3aXRoXG4gICAgICAgICB8IDAgLT4gX2NtcF9fYiBfYV9fMDIxXyBfYl9fMDIyX1xuICAgICAgICAgfCBuIC0+IG4pKVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdFxuICAgIDogdHlwZSBhIGIuXG4gICAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGEgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBiIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgICAgLT4gKGEsIGIpIHRcbiAgICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBmdW4gX2hhc2hfZm9sZF9hIF9oYXNoX2ZvbGRfYiBoc3YgYXJnIC0+XG4gICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICAgfCBMZWZ0IF9hMCAtPlxuICAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgX2hhc2hfZm9sZF9hIGhzdiBfYTBcbiAgICAgIHwgUmlnaHQgX2EwIC0+XG4gICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMFxuICAgICAgfCBCb3RoIChfYTAsIF9hMSkgLT5cbiAgICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMiBpblxuICAgICAgICBsZXQgaHN2ID1cbiAgICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgICAgX2hhc2hfZm9sZF9hIGhzdiBfYTBcbiAgICAgICAgaW5cbiAgICAgICAgX2hhc2hfZm9sZF9iIGhzdiBfYTFcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnYSAnYi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdhLCAnYikgdFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDQ2XyBiX18wNDdfKVxuICAgICAgICA6ICAoKFNleHBsaWIwLlNleHAudCAtPiBhX18wNDZfKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+IGJfXzA0N18pIC0+IFNleHBsaWIwLlNleHAudFxuICAgICAgICAgICAgLT4gKGFfXzA0Nl8sIGJfXzA0N18pIHQpIC0+XG4gICAgICBsZXQgZXJyb3Jfc291cmNlX18wMjdfID0gXCJzZXF1ZW5jZS5tbC5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudC50XCIgaW5cbiAgICAgIGZ1biBfb2ZfYV9fMDIzXyBfb2ZfYl9fMDI0XyAtPiBmdW5jdGlvblxuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwibGVmdFwiIHwgXCJMZWZ0XCIpIGFzIF90YWdfXzAzMF8pIDo6IHNleHBfYXJnc19fMDMxXykgYXNcbiAgICAgICAgICBfc2V4cF9fMDI5XyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAzMV8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDMyXyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzAzM18gPSBfb2ZfYV9fMDIzXyBhcmcwX18wMzJfIGluXG4gICAgICAgICAgICAgTGVmdCByZXMwX18wMzNfXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI3X1xuICAgICAgICAgICAgICAgX3RhZ19fMDMwX1xuICAgICAgICAgICAgICAgX3NleHBfXzAyOV8pXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJyaWdodFwiIHwgXCJSaWdodFwiKSBhcyBfdGFnX18wMzVfKSA6OiBzZXhwX2FyZ3NfXzAzNl8pIGFzXG4gICAgICAgICAgX3NleHBfXzAzNF8gLT5cbiAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMzZfIHdpdGhcbiAgICAgICAgICAgfCBbIGFyZzBfXzAzN18gXSAtPlxuICAgICAgICAgICAgIGxldCByZXMwX18wMzhfID0gX29mX2JfXzAyNF8gYXJnMF9fMDM3XyBpblxuICAgICAgICAgICAgIFJpZ2h0IHJlczBfXzAzOF9cbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjdfXG4gICAgICAgICAgICAgICBfdGFnX18wMzVfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDM0XylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImJvdGhcIiB8IFwiQm90aFwiKSBhcyBfdGFnX18wNDBfKSA6OiBzZXhwX2FyZ3NfXzA0MV8pIGFzXG4gICAgICAgICAgX3NleHBfXzAzOV8gLT5cbiAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNDFfIHdpdGhcbiAgICAgICAgICAgfCBbIGFyZzBfXzA0Ml87IGFyZzFfXzA0M18gXSAtPlxuICAgICAgICAgICAgIGxldCByZXMwX18wNDRfID0gX29mX2FfXzAyM18gYXJnMF9fMDQyX1xuICAgICAgICAgICAgIGFuZCByZXMxX18wNDVfID0gX29mX2JfXzAyNF8gYXJnMV9fMDQzXyBpblxuICAgICAgICAgICAgIEJvdGggKHJlczBfXzA0NF8sIHJlczFfXzA0NV8pXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI3X1xuICAgICAgICAgICAgICAgX3RhZ19fMDQwX1xuICAgICAgICAgICAgICAgX3NleHBfXzAzOV8pXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImxlZnRcIiB8IFwiTGVmdFwiKSBhcyBzZXhwX18wMjhfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJyaWdodFwiIHwgXCJSaWdodFwiKSBhcyBzZXhwX18wMjhfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJib3RoXCIgfCBcIkJvdGhcIikgYXMgc2V4cF9fMDI4XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDI2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICAgICAgIHwgc2V4cF9fMDI2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAnYi5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDU4XyBiX18wNTlfKVxuICAgICAgICA6ICAoKGFfXzA1OF8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoYl9fMDU5XyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgICAtPiAoYV9fMDU4XywgYl9fMDU5XykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgICBmdW4gX29mX2FfXzA0OF8gX29mX2JfXzA0OV8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBMZWZ0IGFyZzBfXzA1MF8gLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDUxXyA9IF9vZl9hX18wNDhfIGFyZzBfXzA1MF8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJMZWZ0XCI7IHJlczBfXzA1MV8gXVxuICAgICAgICB8IFJpZ2h0IGFyZzBfXzA1Ml8gLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDUzXyA9IF9vZl9iX18wNDlfIGFyZzBfXzA1Ml8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJSaWdodFwiOyByZXMwX18wNTNfIF1cbiAgICAgICAgfCBCb3RoIChhcmcwX18wNTRfLCBhcmcxX18wNTVfKSAtPlxuICAgICAgICAgIGxldCByZXMwX18wNTZfID0gX29mX2FfXzA0OF8gYXJnMF9fMDU0X1xuICAgICAgICAgIGFuZCByZXMxX18wNTdfID0gX29mX2JfXzA0OV8gYXJnMV9fMDU1XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkJvdGhcIjsgcmVzMF9fMDU2XzsgcmVzMV9fMDU3XyBdXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDpcbiAgICAnYSAnYi5cbiAgICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIFZhcmlhbnRcbiAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJMZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIlJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkJvdGhcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXydhX3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5sZXQgbWVyZ2Vfd2l0aF9kdXBsaWNhdGVzXG4gICAgICAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMxOyBuZXh0ID0gbmV4dDEgfSlcbiAgICAgIChTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBuZXh0MiB9KVxuICAgICAgfmNvbXBhcmVcbiAgPVxuICBsZXQgdW5zaGFkb3dlZF9jb21wYXJlID0gY29tcGFyZSBpblxuICBsZXQgb3BlbiBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCBpblxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzMSB9LCBzMiAtPiBTa2lwIHsgc3RhdGUgPSBuZXh0MSBzMSwgczIgfVxuICAgIHwgczEsIFNraXAgeyBzdGF0ZSA9IHMyIH0gLT4gU2tpcCB7IHN0YXRlID0gczEsIG5leHQyIHMyIH1cbiAgICB8IChZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMScgfSBhcyBzMSksIChZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMicgfSBhcyBzMilcbiAgICAgIC0+XG4gICAgICBsZXQgY29tcGFyaXNvbiA9IHVuc2hhZG93ZWRfY29tcGFyZSBhIGIgaW5cbiAgICAgIGlmIGNvbXBhcmlzb24gPCAwXG4gICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBMZWZ0IGE7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEnIH0sIHMyIH1cbiAgICAgIGVsc2UgaWYgY29tcGFyaXNvbiA9IDBcbiAgICAgIHRoZW5cbiAgICAgICAgWWllbGQgeyB2YWx1ZSA9IEJvdGggKGEsIGIpOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxJyB9LCBTa2lwIHsgc3RhdGUgPSBzMicgfSB9XG4gICAgICBlbHNlIFlpZWxkIHsgdmFsdWUgPSBSaWdodCBiOyBzdGF0ZSA9IHMxLCBTa2lwIHsgc3RhdGUgPSBzMicgfSB9XG4gICAgfCBEb25lLCBEb25lIC0+IERvbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxIH0sIERvbmUgLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBMZWZ0IGE7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgRG9uZSB9XG4gICAgfCBEb25lLCBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gUmlnaHQgYjsgc3RhdGUgPSBEb25lLCBTa2lwIHsgc3RhdGUgPSBzMiB9IH1cbiAgaW5cbiAgU2VxdWVuY2UgeyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIFNraXAgeyBzdGF0ZSA9IHMyIH07IG5leHQgfVxuOztcblxubGV0IG1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZCBzMSBzMiB+Y29tcGFyZSA9XG4gIG1hcCAobWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIHMxIHMyIH5jb21wYXJlKSB+ZjooZnVuY3Rpb25cbiAgICB8IExlZnQgeCB8IFJpZ2h0IHggfCBCb3RoICh4LCBfKSAtPiB4KVxuOztcblxubGV0IChtZXJnZSBbQGRlcHJlY2F0ZWRcbiAgICAgICBcIltzaW5jZSAyMDIxLTA3XSBGb3IgaWRlbnRpY2FsIGJlaGF2aW9yLCB1c2UgXFxcbiAgICAgICAgW1NlcXVlbmNlLm1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZF0sIGJ1dCBjb25zaWRlciB1c2luZyBcXFxuICAgICAgICBbU2VxdWVuY2UubWVyZ2Vfc29ydGVkXSBpbnN0ZWFkLlwiXSlcbiAgPVxuICBtZXJnZV9kZWR1cGVkX2FuZF9zb3J0ZWRcbjs7XG5cbmxldCBtZXJnZV9zb3J0ZWRcbiAgICAgIChTZXF1ZW5jZSB7IHN0YXRlID0gczE7IG5leHQgPSBuZXh0MSB9KVxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IG5leHQyIH0pXG4gICAgICB+Y29tcGFyZVxuICA9XG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMxIH0sIHMyIC0+IFNraXAgeyBzdGF0ZSA9IG5leHQxIHMxLCBzMiB9XG4gICAgfCBzMSwgU2tpcCB7IHN0YXRlID0gczIgfSAtPiBTa2lwIHsgc3RhdGUgPSBzMSwgbmV4dDIgczIgfVxuICAgIHwgKFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxJyB9IGFzIHMxKSwgKFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyJyB9IGFzIHMyKVxuICAgICAgLT5cbiAgICAgIGxldCBjb21wYXJpc29uID0gY29tcGFyZSBhIGIgaW5cbiAgICAgIGlmIGNvbXBhcmlzb24gPD0gMFxuICAgICAgdGhlbiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMScgfSwgczIgfVxuICAgICAgZWxzZSBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMSwgU2tpcCB7IHN0YXRlID0gczInIH0gfVxuICAgIHwgRG9uZSwgRG9uZSAtPiBEb25lXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9LCBEb25lIC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBEb25lIH1cbiAgICB8IERvbmUsIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IERvbmUsIFNraXAgeyBzdGF0ZSA9IHMyIH0gfVxuICBpblxuICBTZXF1ZW5jZSB7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgU2tpcCB7IHN0YXRlID0gczIgfTsgbmV4dCB9XG47O1xuXG5sZXQgaGQgcyA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gXyB9IC0+IFNvbWUgYVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuZXh0XG47O1xuXG5sZXQgaGRfZXhuIHMgPVxuICBtYXRjaCBoZCBzIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiaGRfZXhuXCJcbiAgfCBTb21lIGEgLT4gYVxuOztcblxubGV0IHRsIHMgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IGEgfSAtPiBTb21lIGFcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIChtYXRjaCBsb29wIHMgbmV4dCB3aXRoXG4gICAgIHwgTm9uZSAtPiBOb25lXG4gICAgIHwgU29tZSBzIC0+IFNvbWUgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pKVxuOztcblxubGV0IHRsX2VhZ2VybHlfZXhuIHMgPVxuICBtYXRjaCB0bCBzIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UudGxfZXhuXCJcbiAgfCBTb21lIHMgLT4gc1xuOztcblxubGV0IGxpZnRfaWRlbnRpdHkgbmV4dCBzID1cbiAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgfCBEb25lIC0+IERvbmVcbiAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gYElkZW50aXR5IHMgfVxuICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBgSWRlbnRpdHkgcyB9XG47O1xuXG5sZXQgbmV4dCBzID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gU29tZSAoYSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSlcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIHMgbmV4dFxuOztcblxubGV0IGZpbHRlcl9vcHQgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biBzIC0+XG4gICAgICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IE5vbmU7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IFNvbWUgYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9KVxuICAgICAgfVxuOztcblxubGV0IGZpbHRlcl9tYXAgcyB+ZiA9IGZpbHRlcl9vcHQgKG1hcCBzIH5mKVxubGV0IGZpbHRlcl9tYXBpIHMgfmYgPSBmaWx0ZXJfbWFwIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgc3BsaXRfbiBzIG4gPVxuICBsZXQgcmVjIGxvb3AgcyBpIGFjY3VtIG5leHQgPVxuICAgIGlmIGkgPD0gMFxuICAgIHRoZW4gTGlzdC5yZXYgYWNjdW0sIFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH1cbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gTGlzdC5yZXYgYWNjdW0sIGVtcHR5XG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgaSBhY2N1bSBuZXh0XG4gICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgKGkgLSAxKSAoYSA6OiBhY2N1bSkgbmV4dClcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIHMgbiBbXSBuZXh0XG47O1xuXG5sZXQgY2h1bmtzX2V4biB0IG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLmNodW5rc19leG5cIlxuICBlbHNlXG4gICAgdW5mb2xkX3N0ZXAgfmluaXQ6dCB+ZjooZnVuIHQgLT5cbiAgICAgIG1hdGNoIHNwbGl0X24gdCBuIHdpdGhcbiAgICAgIHwgW10sIF9lbXB0eSAtPiBEb25lXG4gICAgICB8IChfIDo6IF8gYXMgeHMpLCB0IC0+IFlpZWxkIHsgdmFsdWUgPSB4czsgc3RhdGUgPSB0IH0pXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgaSBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gd2hlbiBmIGkgYSAtPiBTb21lIChpLCBhKVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IChpICsgMSkgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IDAgZlxuOztcblxubGV0IGZpbmRfZXhuIHMgfmYgPVxuICBtYXRjaCBmaW5kIHMgfmYgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS5maW5kX2V4blwiXG4gIHwgU29tZSB4IC0+IHhcbjs7XG5cbmxldCBhcHBlbmQgczEgczIgPVxuICBtYXRjaCBzMSwgczIgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IG5leHQxIH0sIFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IG5leHQyIH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGBGaXJzdF9saXN0IHMxXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgRmlyc3RfbGlzdCBzMSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dDEgczEgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IFNraXAgeyBzdGF0ZSA9IGBTZWNvbmRfbGlzdCBzMiB9XG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMxIH0gLT4gU2tpcCB7IHN0YXRlID0gYEZpcnN0X2xpc3QgczEgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9IC0+XG4gICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGBGaXJzdF9saXN0IHMxIH0pXG4gICAgICAgICAgICB8IGBTZWNvbmRfbGlzdCBzMiAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dDIgczIgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gczIgfSAtPiBTa2lwIHsgc3RhdGUgPSBgU2Vjb25kX2xpc3QgczIgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGBTZWNvbmRfbGlzdCBzMiB9KSlcbiAgICAgIH1cbjs7XG5cbmxldCBjb25jYXRfbWFwIHMgfmYgPSBiaW5kIHMgfmZcbmxldCBjb25jYXQgcyA9IGNvbmNhdF9tYXAgcyB+ZjpGbi5pZFxubGV0IGNvbmNhdF9tYXBpIHMgfmYgPSBjb25jYXRfbWFwIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgemlwIChTZXF1ZW5jZSB7IHN0YXRlID0gczE7IG5leHQgPSBuZXh0MSB9KSAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gbmV4dDIgfSkgPVxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9LCBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYSwgYjsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9IH1cbiAgICB8IERvbmUsIF8gfCBfLCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMxIH0sIHMyIC0+IFNraXAgeyBzdGF0ZSA9IG5leHQxIHMxLCBzMiB9XG4gICAgfCBzMSwgU2tpcCB7IHN0YXRlID0gczIgfSAtPiBTa2lwIHsgc3RhdGUgPSBzMSwgbmV4dDIgczIgfVxuICBpblxuICBTZXF1ZW5jZSB7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgU2tpcCB7IHN0YXRlID0gczIgfTsgbmV4dCB9XG47O1xuXG5sZXQgemlwX2Z1bGxcbiAgICAgIChTZXF1ZW5jZSB7IHN0YXRlID0gczE7IG5leHQgPSBuZXh0MSB9KVxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IG5leHQyIH0pXG4gID1cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEgfSwgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gczIgfSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IGBCb3RoIChhLCBiKTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9IH1cbiAgICB8IERvbmUsIERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSwgczIgLT4gU2tpcCB7IHN0YXRlID0gbmV4dDEgczEsIHMyIH1cbiAgICB8IHMxLCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+IFNraXAgeyBzdGF0ZSA9IHMxLCBuZXh0MiBzMiB9XG4gICAgfCBEb25lLCBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYFJpZ2h0IGI7IHN0YXRlID0gRG9uZSwgbmV4dDIgczIgfVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEgfSwgRG9uZSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IGBMZWZ0IGE7IHN0YXRlID0gbmV4dDEgczEsIERvbmUgfVxuICBpblxuICBTZXF1ZW5jZSB7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgU2tpcCB7IHN0YXRlID0gczIgfTsgbmV4dCB9XG47O1xuXG5sZXQgYm91bmRlZF9sZW5ndGggKFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0pIH5hdF9tb3N0ID1cbiAgbGV0IHJlYyBsb29wIGkgc2VlZCBuZXh0ID1cbiAgICBpZiBpID4gYXRfbW9zdFxuICAgIHRoZW4gYEdyZWF0ZXJcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICB8IERvbmUgLT4gYElzIGlcbiAgICAgIHwgU2tpcCB7IHN0YXRlID0gc2VlZCB9IC0+IGxvb3AgaSBzZWVkIG5leHRcbiAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gc2VlZCB9IC0+IGxvb3AgKGkgKyAxKSBzZWVkIG5leHQpXG4gIGluXG4gIGxvb3AgMCBzZWVkIG5leHRcbjs7XG5cbmxldCBsZW5ndGhfaXNfYm91bmRlZF9ieSA/KG1pbiA9IC0xKSA/bWF4IHQgPVxuICBsZXQgbGVuZ3RoX2lzX2F0X2xlYXN0IChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSA9XG4gICAgbGV0IHJlYyBsb29wIHMgYWNjID1cbiAgICAgIGlmIGFjYyA+PSBtaW5cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgYWNjXG4gICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IC0+IGxvb3AgcyAoYWNjICsgMSkpXG4gICAgaW5cbiAgICBsb29wIHMgMFxuICBpblxuICBtYXRjaCBtYXggd2l0aFxuICB8IE5vbmUgLT4gbGVuZ3RoX2lzX2F0X2xlYXN0IHRcbiAgfCBTb21lIG1heCAtPlxuICAgIChtYXRjaCBib3VuZGVkX2xlbmd0aCB0IH5hdF9tb3N0Om1heCB3aXRoXG4gICAgIHwgYElzIGxlbiB3aGVuIGxlbiA+PSBtaW4gLT4gdHJ1ZVxuICAgICB8IF8gLT4gZmFsc2UpXG47O1xuXG5sZXQgaXRlcmkgcyB+ZiA9IGl0ZXIgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpIFtAbm9udGFpbF1cblxubGV0IGZvbGRpIHMgfmluaXQgfmYgPVxuICBmb2xkIH5pbml0IChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gYWNjIChpLCBzKSAtPiBmIGkgYWNjIHMpIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZWR1Y2UgcyB+ZiA9XG4gIG1hdGNoIG5leHQgcyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoYSwgcykgLT4gU29tZSAoZm9sZCBzIH5pbml0OmEgfmYpXG47O1xuXG5sZXQgcmVkdWNlX2V4biBzIH5mID1cbiAgbWF0Y2ggcmVkdWNlIHMgfmYgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS5yZWR1Y2VfZXhuXCJcbiAgfCBTb21lIHJlcyAtPiByZXNcbjs7XG5cbmxldCBncm91cCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgfmJyZWFrID1cbiAgdW5mb2xkX3N0ZXBcbiAgICB+aW5pdDooU29tZSAoW10sIHMpKVxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IERvbmVcbiAgICAgIHwgU29tZSAoYWNjLCBzKSAtPlxuICAgICAgICAobWF0Y2ggYWNjLCBuZXh0IHMgd2l0aFxuICAgICAgICAgfCBfLCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gU29tZSAoYWNjLCBzKSB9XG4gICAgICAgICB8IFtdLCBEb25lIC0+IERvbmVcbiAgICAgICAgIHwgYWNjLCBEb25lIC0+IFlpZWxkIHsgdmFsdWUgPSBMaXN0LnJldiBhY2M7IHN0YXRlID0gTm9uZSB9XG4gICAgICAgICB8IFtdLCBZaWVsZCB7IHZhbHVlID0gY3VyOyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBTb21lIChbIGN1ciBdLCBzKSB9XG4gICAgICAgICB8IChwcmV2IDo6IF8gYXMgYWNjKSwgWWllbGQgeyB2YWx1ZSA9IGN1cjsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgICAgaWYgYnJlYWsgcHJldiBjdXJcbiAgICAgICAgICAgdGhlbiBZaWVsZCB7IHZhbHVlID0gTGlzdC5yZXYgYWNjOyBzdGF0ZSA9IFNvbWUgKFsgY3VyIF0sIHMpIH1cbiAgICAgICAgICAgZWxzZSBTa2lwIHsgc3RhdGUgPSBTb21lIChjdXIgOjogYWNjLCBzKSB9KSlcbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIGxhc3RfZWx0IHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIGxhc3RfZWx0IHNcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgKG1hdGNoIGxhc3RfZWx0IHdpdGhcbiAgICAgICB8IFNvbWUgYiB3aGVuIGVxdWFsIGEgYiAtPiBTb21lIChiLCBhKVxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBsb29wIChTb21lIGEpIHMpXG4gIGluXG4gIGxvb3AgTm9uZSBzIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyBzIH5lcXVhbCA9XG4gIHVuZm9sZF93aXRoIHMgfmluaXQ6Tm9uZSB+ZjooZnVuIHByZXYgYSAtPlxuICAgIG1hdGNoIHByZXYgd2l0aFxuICAgIHwgU29tZSBiIHdoZW4gZXF1YWwgYSBiIC0+IFNraXAgeyBzdGF0ZSA9IFNvbWUgYSB9XG4gICAgfCBOb25lIHwgU29tZSBfIC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNvbWUgYSB9KVxuOztcblxubGV0IGNvdW50IHMgfmYgPSBmb2xkIHMgfmluaXQ6MCB+ZjooZnVuIGFjYyBlbHQgLT4gYWNjICsgQm9vbC50b19pbnQgKGYgZWx0KSkgW0Bub250YWlsXVxuXG5sZXQgY291bnRpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpIGFjYyBlbHQgLT4gYWNjICsgQm9vbC50b19pbnQgKGYgaSBlbHQpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxubGV0IGluaXQgbiB+ZiA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OjAgfmY6KGZ1biBpIC0+XG4gICAgaWYgaSA+PSBuIHRoZW4gRG9uZSBlbHNlIFlpZWxkIHsgdmFsdWUgPSBmIGk7IHN0YXRlID0gaSArIDEgfSlcbjs7XG5cbmxldCBzdWIgcyB+cG9zIH5sZW4gPVxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLnN1YlwiO1xuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSAwLCBzXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gKGksIHMpIC0+XG4gICAgICAgICAgICAgaWYgaSAtIHBvcyA+PSBsZW5cbiAgICAgICAgICAgICB0aGVuIERvbmVcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSwgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGkgPj0gcG9zIC0+XG4gICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGkgKyAxLCBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IGkgKyAxLCBzIH0pKVxuICAgICAgfVxuOztcblxubGV0IHRha2UgcyBsZW4gPVxuICBpZiBsZW4gPCAwIHRoZW4gZmFpbHdpdGggXCJTZXF1ZW5jZS50YWtlXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IDAsIHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biAoaSwgcykgLT5cbiAgICAgICAgICAgICBpZiBpID49IGxlblxuICAgICAgICAgICAgIHRoZW4gRG9uZVxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBpLCBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGkgKyAxLCBzIH0pKVxuICAgICAgfVxuOztcblxubGV0IGRyb3AgcyBsZW4gPVxuICBpZiBsZW4gPCAwIHRoZW4gZmFpbHdpdGggXCJTZXF1ZW5jZS5kcm9wXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IDAsIHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biAoaSwgcykgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSwgcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gd2hlbiBpID49IGxlbiAtPlxuICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gaSArIDEsIHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IGkgKyAxLCBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgdGFrZV93aGlsZSBzIH5mID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHMgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gd2hlbiBmIGEgLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBfIH0gLT4gRG9uZSlcbiAgICAgIH1cbjs7XG5cbmxldCBkcm9wX3doaWxlIHMgfmYgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBgRHJvcHBpbmcgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYERyb3BwaW5nIHMgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gYERyb3BwaW5nIHMgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gd2hlbiBmIGEgLT4gU2tpcCB7IHN0YXRlID0gYERyb3BwaW5nIHMgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gYElkZW50aXR5IHMgfSlcbiAgICAgICAgICAgIHwgYElkZW50aXR5IHMgLT4gbGlmdF9pZGVudGl0eSBuZXh0IHMpXG4gICAgICB9XG47O1xuXG5sZXQgc2hpZnRfcmlnaHQgcyB4ID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gYENvbnNpbmcgKHNlZWQsIHgpXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgQ29uc2luZyAoc2VlZCwgeCkgLT4gWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gYElkZW50aXR5IHNlZWQgfVxuICAgICAgICAgICAgfCBgSWRlbnRpdHkgcyAtPiBsaWZ0X2lkZW50aXR5IG5leHQgcylcbiAgICAgIH1cbjs7XG5cbmxldCBzaGlmdF9yaWdodF93aXRoX2xpc3QgcyBsID0gYXBwZW5kIChvZl9saXN0IGwpIHNcbmxldCBzaGlmdF9sZWZ0ID0gZHJvcFxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggQCApID0gYXBwZW5kXG5lbmRcblxubGV0IGludGVyc3BlcnNlIHMgfnNlcCA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGBJbml0IHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBJbml0IHMgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gYEluaXQgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBgUnVubmluZyBzIH0pXG4gICAgICAgICAgICB8IGBSdW5uaW5nIHMgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gYFJ1bm5pbmcgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gc2VwOyBzdGF0ZSA9IGBQdXR0aW5nIChhLCBzKSB9KVxuICAgICAgICAgICAgfCBgUHV0dGluZyAoYSwgcykgLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gYFJ1bm5pbmcgcyB9KVxuICAgICAgfVxuOztcblxubGV0IHJlcGVhdCB4ID0gdW5mb2xkX3N0ZXAgfmluaXQ6eCB+ZjooZnVuIHggLT4gWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0geCB9KVxuXG5sZXQgY3ljbGVfbGlzdF9leG4geHMgPVxuICBpZiBMaXN0LmlzX2VtcHR5IHhzIHRoZW4gaW52YWxpZF9hcmcgXCJTZXF1ZW5jZS5jeWNsZV9saXN0X2V4blwiO1xuICBsZXQgcyA9IG9mX2xpc3QgeHMgaW5cbiAgY29uY2F0X21hcCB+ZjooZnVuICgpIC0+IHMpIChyZXBlYXQgKCkpXG47O1xuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3Qgc2Egc2IgPSBjb25jYXRfbWFwIHNhIH5mOihmdW4gYSAtPiB6aXAgKHJlcGVhdCBhKSBzYilcbmxldCBzaW5nbGV0b24geCA9IHJldHVybiB4XG5cbmxldCBkZWxheWVkX2ZvbGQgcyB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwIHMgfmluaXQgfmZpbmlzaCB+ZjooZnVuIGFjYyBvcHRpb24gfmsgLT5cbiAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgIHwgTm9uZSAtPiBrIGFjY1xuICAgIHwgU29tZSBhIC0+IGYgYWNjIGEgfmspXG47O1xuXG5sZXQgZm9sZF9tIH5iaW5kIH5yZXR1cm4gdCB+aW5pdCB+ZiA9XG4gIEV4cGVydC5kZWxheWVkX2ZvbGRfc3RlcFxuICAgIHRcbiAgICB+aW5pdFxuICAgIH5mOihmdW4gYWNjIG9wdGlvbiB+ayAtPlxuICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBiaW5kIChyZXR1cm4gYWNjKSB+ZjprXG4gICAgICB8IFNvbWUgYSAtPiBiaW5kIChmIGFjYyBhKSB+ZjprKVxuICAgIH5maW5pc2g6cmV0dXJuXG47O1xuXG5sZXQgaXRlcl9tIH5iaW5kIH5yZXR1cm4gdCB+ZiA9XG4gIEV4cGVydC5kZWxheWVkX2ZvbGRfc3RlcFxuICAgIHRcbiAgICB+aW5pdDooKVxuICAgIH5mOihmdW4gKCkgb3B0aW9uIH5rIC0+XG4gICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGJpbmQgKHJldHVybiAoKSkgfmY6a1xuICAgICAgfCBTb21lIGEgLT4gYmluZCAoZiBhKSB+ZjprKVxuICAgIH5maW5pc2g6cmV0dXJuXG47O1xuXG5sZXQgZm9sZF91bnRpbCBzIH5pbml0IH5mIH5maW5pc2ggPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgYWNjID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmaW5pc2ggYWNjXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiBhY2NcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgKG1hdGNoIChmIGFjYyBhIDogKCdhLCAnYikgQ29udGludWVfb3Jfc3RvcC50KSB3aXRoXG4gICAgICAgfCBTdG9wIHggLT4geFxuICAgICAgIHwgQ29udGludWUgYWNjIC0+IGxvb3AgcyBuZXh0IGYgYWNjKVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuZXh0IGYgaW5pdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgcyB+aW5pdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBhY2MgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IFJlc3VsdC5yZXR1cm4gYWNjXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiBhY2NcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgKG1hdGNoIChmIGFjYyBhIDogKF8sIF8pIFJlc3VsdC50KSB3aXRoXG4gICAgICAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICAgICAgIHwgT2sgYWNjIC0+IGxvb3AgcyBuZXh0IGYgYWNjKVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuZXh0IGYgaW5pdFxuOztcblxubGV0IGZvcmNlX2VhZ2VybHkgdCA9IG9mX2xpc3QgKHRvX2xpc3QgdClcblxubGV0IG1lbW9pemUgKHR5cGUgYSkgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVCBvZiAoYSwgdCkgU3RlcC50IExhenkudFxuICBlbmRcbiAgaW5cbiAgbGV0IHJlYyBtZW1vaXplIHMgPSBNLlQgKGxhenkgKGZpbmRfc3RlcCBzKSlcbiAgYW5kIGZpbmRfc3RlcCBzID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gZmluZF9zdGVwIHNcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBtZW1vaXplIHMgfVxuICBpblxuICBTZXF1ZW5jZSB7IHN0YXRlID0gbWVtb2l6ZSBzOyBuZXh0ID0gKGZ1biAoTS5UIGwpIC0+IExhenkuZm9yY2UgbCkgfVxuOztcblxubGV0IGRyb3BfZWFnZXJseSBzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBpIH5sZW4gcyBuZXh0ID1cbiAgICBpZiBpID49IGxlblxuICAgIHRoZW4gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBlbXB0eVxuICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBpIH5sZW4gcyBuZXh0XG4gICAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBsb29wIChpICsgMSkgfmxlbiBzIG5leHQpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCAwIH5sZW4gcyBuZXh0XG47O1xuXG5sZXQgZHJvcF93aGlsZV9vcHRpb24gKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pIH5mID1cbiAgbGV0IHJlYyBsb29wIHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHNcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgaWYgZiB4IHRoZW4gbG9vcCBzIGVsc2UgU29tZSAoeCwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSlcbiAgaW5cbiAgbG9vcCBzIFtAbm9udGFpbF1cbjs7XG5cbmxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgKHppcF9mdWxsIHQxIHQyKSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgXyAtPiByLnJldHVybiAxXG4gICAgICB8IGBSaWdodCBfIC0+IHIucmV0dXJuICgtMSlcbiAgICAgIHwgYEJvdGggKHYxLCB2MikgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2EgdjEgdjIgaW5cbiAgICAgICAgaWYgYyA8PiAwIHRoZW4gci5yZXR1cm4gYyk7XG4gICAgMClcbjs7XG5cbmxldCBlcXVhbCBlcXVhbF9hIHQxIHQyID1cbiAgZm9yX2FsbCAoemlwX2Z1bGwgdDEgdDIpIH5mOihmdW5jdGlvblxuICAgIHwgYEJvdGggKGExLCBhMikgLT4gZXF1YWxfYSBhMSBhMlxuICAgIHwgYExlZnQgXyB8IGBSaWdodCBfIC0+IGZhbHNlKVxuOztcblxubGV0IHJvdW5kX3JvYmluIGxpc3QgPVxuICBsZXQgbmV4dCAodG9kb19zdGFjaywgZG9uZV9zdGFjaykgPVxuICAgIG1hdGNoIHRvZG9fc3RhY2sgd2l0aFxuICAgIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgPSBmIH0gOjogdG9kb19zdGFjayAtPlxuICAgICAgKG1hdGNoIGYgcyB3aXRoXG4gICAgICAgfCBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgIFlpZWxkXG4gICAgICAgICAgIHsgdmFsdWUgPSB4XG4gICAgICAgICAgIDsgc3RhdGUgPSB0b2RvX3N0YWNrLCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSA6OiBkb25lX3N0YWNrXG4gICAgICAgICAgIH1cbiAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgU2tpcCB7IHN0YXRlID0gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgPSBmIH0gOjogdG9kb19zdGFjaywgZG9uZV9zdGFjayB9XG4gICAgICAgfCBEb25lIC0+IFNraXAgeyBzdGF0ZSA9IHRvZG9fc3RhY2ssIGRvbmVfc3RhY2sgfSlcbiAgICB8IFtdIC0+XG4gICAgICBpZiBMaXN0LmlzX2VtcHR5IGRvbmVfc3RhY2sgdGhlbiBEb25lIGVsc2UgU2tpcCB7IHN0YXRlID0gTGlzdC5yZXYgZG9uZV9zdGFjaywgW10gfVxuICBpblxuICBsZXQgc3RhdGUgPSBsaXN0LCBbXSBpblxuICBTZXF1ZW5jZSB7IHN0YXRlOyBuZXh0IH1cbjs7XG5cbmxldCBpbnRlcmxlYXZlIChTZXF1ZW5jZSB7IHN0YXRlID0gczE7IG5leHQgPSBmMSB9KSA9XG4gIGxldCBuZXh0ICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrLCBzMSkgPVxuICAgIG1hdGNoIHRvZG9fc3RhY2sgd2l0aFxuICAgIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gZjIgfSA6OiB0b2RvX3N0YWNrIC0+XG4gICAgICAobWF0Y2ggZjIgczIgd2l0aFxuICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gczIgfSAtPlxuICAgICAgICAgWWllbGRcbiAgICAgICAgICAgeyB2YWx1ZSA9IHhcbiAgICAgICAgICAgOyBzdGF0ZSA9IHRvZG9fc3RhY2ssIFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IGYyIH0gOjogZG9uZV9zdGFjaywgczFcbiAgICAgICAgICAgfVxuICAgICAgIHwgU2tpcCB7IHN0YXRlID0gczIgfSAtPlxuICAgICAgICAgU2tpcCB7IHN0YXRlID0gdG9kb19zdGFjaywgU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gZjIgfSA6OiBkb25lX3N0YWNrLCBzMSB9XG4gICAgICAgfCBEb25lIC0+IFNraXAgeyBzdGF0ZSA9IHRvZG9fc3RhY2ssIGRvbmVfc3RhY2ssIHMxIH0pXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIGYxIHMxLCBkb25lX3N0YWNrIHdpdGhcbiAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB0OyBzdGF0ZSA9IHMxIH0sIF8gLT5cbiAgICAgICAgIFNraXAgeyBzdGF0ZSA9IExpc3QucmV2ICh0IDo6IGRvbmVfc3RhY2spLCBbXSwgczEgfVxuICAgICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSwgXyAtPiBTa2lwIHsgc3RhdGUgPSBMaXN0LnJldiBkb25lX3N0YWNrLCBbXSwgczEgfVxuICAgICAgIHwgRG9uZSwgXyA6OiBfIC0+IFNraXAgeyBzdGF0ZSA9IExpc3QucmV2IGRvbmVfc3RhY2ssIFtdLCBzMSB9XG4gICAgICAgfCBEb25lLCBbXSAtPiBEb25lKVxuICBpblxuICBsZXQgc3RhdGUgPSBbXSwgW10sIHMxIGluXG4gIFNlcXVlbmNlIHsgc3RhdGU7IG5leHQgfVxuOztcblxubGV0IGludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0IHMxIHMyID1cbiAgbWFwIHMxIH5mOihmdW4geDEgLT4gbWFwIHMyIH5mOihmdW4geDIgLT4geDEsIHgyKSkgfD4gaW50ZXJsZWF2ZVxuOztcblxubGV0IG9mX3NlcSAoc2VxIDogXyBTdGRsaWIuU2VxLnQpID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6c2VxIH5mOihmdW4gc2VxIC0+XG4gICAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiBEb25lXG4gICAgfCBDb25zIChoZCwgdGwpIC0+IFlpZWxkIHsgdmFsdWUgPSBoZDsgc3RhdGUgPSB0bCB9KVxuOztcblxubGV0IHRvX3NlcSAoU2VxdWVuY2UgeyBzdGF0ZTsgbmV4dCB9KSA9XG4gIGxldCByZWMgbG9vcCBzdGF0ZSA9XG4gICAgbWF0Y2ggbmV4dCBzdGF0ZSB3aXRoXG4gICAgfCBEb25lIC0+IFN0ZGxpYi5TZXEuTmlsXG4gICAgfCBTa2lwIHsgc3RhdGUgfSAtPiBsb29wIHN0YXRlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gaGQ7IHN0YXRlIH0gLT4gU3RkbGliLlNlcS5Db25zIChoZCwgZnVuICgpIC0+IGxvb3Agc3RhdGUpXG4gIGluXG4gIGZ1biAoKSAtPiBsb29wIHN0YXRlXG47O1xuXG5tb2R1bGUgR2VuZXJhdG9yID0gc3RydWN0XG4gIHR5cGUgJ2VsdCBzdGVwcyA9IFdyYXAgb2YgKCdlbHQsIHVuaXQgLT4gJ2VsdCBzdGVwcykgU3RlcC50XG5cbiAgbGV0IHVud3JhcCAoV3JhcCBzdGVwKSA9IHN0ZXBcblxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnZWx0KSB0ID0gKCdhIC0+ICdlbHQgc3RlcHMpIC0+ICdlbHQgc3RlcHNcblxuICAgIGxldCByZXR1cm4geCBrID0gayB4XG5cbiAgICBsZXQgYmluZCBtIH5mIGsgPVxuICAgICAgbSAoZnVuIGEgLT5cbiAgICAgICAgbGV0IG0nID0gZiBhIGluXG4gICAgICAgIG0nIGspXG4gICAgOztcblxuICAgIGxldCBtYXAgbSB+ZiBrID0gbSAoZnVuIGEgLT4gayAoZiBhKSlcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgTW9uYWQuTWFrZTIgKFQpXG5cbiAgbGV0IHlpZWxkIGUgayA9IFdyYXAgKFlpZWxkIHsgdmFsdWUgPSBlOyBzdGF0ZSA9IGsgfSlcbiAgbGV0IHRvX3N0ZXBzIHQgPSB0IChmdW4gKCkgLT4gV3JhcCBEb25lKVxuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSA9XG4gICAgZGVsYXllZF9mb2xkXG4gICAgICBzZXF1ZW5jZVxuICAgICAgfmluaXQ6KClcbiAgICAgIH5mOihmdW4gKCkgeCB+ayBmIC0+IFdyYXAgKFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IChmdW4gKCkgLT4gayAoKSBmKSB9KSlcbiAgICAgIH5maW5pc2g6cmV0dXJuXG4gIDs7XG5cbiAgbGV0IHJ1biB0ID1cbiAgICBsZXQgaW5pdCAoKSA9IHRvX3N0ZXBzIHQgaW5cbiAgICBsZXQgZiB0aHVuayA9IHVud3JhcCAodGh1bmsgKCkpIGluXG4gICAgdW5mb2xkX3N0ZXAgfmluaXQgfmZcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlXG5cbm1vZHVsZSBPZl9zZXhwYWJsZVxuICAgIChTZXhwYWJsZSA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiB0IC0+IFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiBTZXhwYWJsZS50IC0+IHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cGFibGUuc2V4cF9vZl90IChNLnRvX3NleHBhYmxlIHQpXG5lbmRcblxubW9kdWxlIE9mX3NleHBhYmxlMVxuICAgIChTZXhwYWJsZSA6IFMxKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAnYSB0IC0+ICdhIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogJ2EgU2V4cGFibGUudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSAoTS50b19zZXhwYWJsZSB0KVxuZW5kXG5cbm1vZHVsZSBPZl9zZXhwYWJsZTJcbiAgICAoU2V4cGFibGUgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IpIFNleHBhYmxlLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgdCA9XG4gICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgKE0udG9fc2V4cGFibGUgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2Zfc2V4cGFibGUzXG4gICAgKFNleHBhYmxlIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgU2V4cGFibGUudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyB0ID1cbiAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgKE0udG9fc2V4cGFibGUgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2Zfc3RyaW5nYWJsZSAoTSA6IFN0cmluZ2FibGUuUykgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBTIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxud2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBNLm9mX3N0cmluZyBzIHdpdGhcbiAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cClcbiAgICB8IFNleHAuTGlzdCBfIC0+XG4gICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgIFwiU2V4cGFibGUuT2Zfc3RyaW5nYWJsZS50X29mX3NleHAgZXhwZWN0ZWQgYW4gYXRvbSwgYnV0IGdvdCBhIGxpc3RcIlxuICAgICAgICBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIChNLnRvX3N0cmluZyB0KVxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6IE0udCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSBzdHJpbmdfc2V4cF9ncmFtbWFyXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBcnJheTBcblxudHlwZSAnYSB0ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID0gY29tcGFyZV9hcnJheVxuXG5sZXQgZ2xvYmFsaXplIDogJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSB0W0BvY2FtbC5sb2NhbF0pIC0+ICdhIHQgPVxuICBmdW4gKHR5cGUgYV9fMDA1XylcbiAgICAgIDogKCgoYV9fMDA1X1tAb2NhbWwubG9jYWxdKSAtPiBhX18wMDVfKSAtPiAoYV9fMDA1XyB0W0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwNV8gdCkgLT5cbiAgICBnbG9iYWxpemVfYXJyYXlcbjs7XG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBhcnJheV9vZl9zZXhwXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9hcnJheVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGFycmF5X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG47O1xuXG5bQEBAZW5kXVxuXG4oKiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGEgbmV3IGluLXBsYWNlLCBjb25zdGFudCBoZWFwIHNvcnRpbmcgYWxnb3JpdGhtIHRvIHJlcGxhY2UgdGhlXG4gICBvbmUgdXNlZCBieSB0aGUgc3RhbmRhcmQgbGlicmFyaWVzLiAgSXRzIG9ubHkgcHVycG9zZSBpcyB0byBiZSBmYXN0ZXIgKGhvcGVmdWxseVxuICAgc3RyaWN0bHkgZmFzdGVyKSB0aGFuIHRoZSBiYXNlIHNvcnQgYW5kIHN0YWJsZV9zb3J0LlxuXG4gICBBdCBhIGhpZ2ggbGV2ZWwgdGhlIGFsZ29yaXRobSBpczpcbiAgIC0gcGljayB0d28gcGl2b3QgcG9pbnRzIGJ5OlxuICAgLSBwaWNrIDUgYXJiaXRyYXJ5IGVsZW1lbnRzIGZyb20gdGhlIGFycmF5XG4gICAtIHNvcnQgdGhlbSB3aXRoaW4gdGhlIGFycmF5XG4gICAtIHRha2UgdGhlIGVsZW1lbnRzIG9uIGVpdGhlciBzaWRlIG9mIHRoZSBtaWRkbGUgZWxlbWVudCBvZiB0aGUgc29ydCBhcyB0aGUgcGl2b3RzXG4gICAtIHNvcnQgdGhlIGFycmF5IHdpdGg6XG4gICAtIGFsbCBlbGVtZW50cyBsZXNzIHRoYW4gcGl2b3QxIHRvIHRoZSBsZWZ0IChyYW5nZSAxKVxuICAgLSBhbGwgZWxlbWVudHMgPj0gcGl2b3QxIGFuZCA8PSBwaXZvdDIgaW4gdGhlIG1pZGRsZSAocmFuZ2UgMilcbiAgIC0gYWxsIGVsZW1lbnRzID4gcGl2b3QyIHRvIHRoZSByaWdodCAocmFuZ2UgMylcbiAgIC0gaWYgcGl2b3QxIGFuZCBwaXZvdDIgYXJlIGVxdWFsLCB0aGVuIHRoZSBtaWRkbGUgcmFuZ2UgaXMgc29ydGVkLCBzbyBpZ25vcmUgaXRcbiAgIC0gcmVjdXJzZSBpbnRvIHJhbmdlIDEsIDIgKGlmIHBpdm90MSBhbmQgcGl2b3QyIGFyZSB1bmVxdWFsKSwgYW5kIDNcbiAgIC0gZHVyaW5nIHJlY3Vyc2lvbiB0aGVyZSBhcmUgdHdvIGluZmxlY3Rpb24gcG9pbnRzOlxuICAgLSBpZiB0aGUgc2l6ZSBvZiB0aGUgY3VycmVudCByYW5nZSBpcyBzbWFsbCwgdXNlIGluc2VydGlvbiBzb3J0IHRvIHNvcnQgaXRcbiAgIC0gaWYgdGhlIHN0YWNrIGRlcHRoIGlzIGxhcmdlLCBzb3J0IHRoZSByYW5nZSB3aXRoIGhlYXAtc29ydCB0byBhdm9pZCBuXjIgd29yc3QtY2FzZVxuICAgICBiZWhhdmlvclxuXG4gICBTZWUgdGhlIGZvbGxvd2luZyBmb3IgbW9yZSBpbmZvcm1hdGlvbjpcbiAgIC0gXCJEdWFsLVBpdm90IFF1aWNrc29ydFwiIGJ5IFZsYWRpbWlyIFlhcm9zbGF2c2tpeS5cbiAgICAgQXZhaWxhYmxlIGF0XG4gICAgIGh0dHA6Ly93d3cua3JpY2hlLmNvbS5hci9yb290L3Byb2dyYW1taW5nL3NwYWNlVGltZUNvbXBsZXhpdHkvRHVhbFBpdm90UXVpY2tzb3J0LnBkZlxuICAgLSBcIlF1aWNrc29ydCBpcyBPcHRpbWFsXCIgYnkgU2VkZ2V3aWNrIGFuZCBCZW50bGV5LlxuICAgICBTbGlkZXMgYXQgaHR0cDovL3d3dy5jcy5wcmluY2V0b24uZWR1L35ycy90YWxrcy9RdWlja3NvcnRJc09wdGltYWwucGRmXG4gICAtIGh0dHA6Ly93d3cuc29ydGluZy1hbGdvcml0aG1zLmNvbS9xdWljay1zb3J0LTMtd2F5ICopXG5cbm1vZHVsZSBTb3J0ZXIgKFMgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICAgIHZhbCBzZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgU1xuXG4gIGxldCBzd2FwIGFyciBpIGogPVxuICAgIGxldCB0bXAgPSBnZXQgYXJyIGkgaW5cbiAgICBzZXQgYXJyIGkgKGdldCBhcnIgaik7XG4gICAgc2V0IGFyciBqIHRtcFxuICA7O1xuXG4gIG1vZHVsZSB0eXBlIFNvcnQgPSBzaWdcbiAgICB2YWwgc29ydFxuICAgICAgOiAgJ2EgdFxuICAgICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAgIC0+IGxlZnQ6aW50ICgqIGxlZnRtb3N0IGluZGV4IG9mIHN1Yi1hcnJheSB0byBzb3J0ICopXG4gICAgICAtPiByaWdodDppbnQgKCogcmlnaHRtb3N0IGluZGV4IG9mIHN1Yi1hcnJheSB0byBzb3J0ICopXG4gICAgICAtPiB1bml0XG4gIGVuZFxuXG4gICgqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5zZXJ0aW9uX3NvcnQgKilcbiAgbW9kdWxlIEluc2VydGlvbl9zb3J0IDogU29ydCA9IHN0cnVjdFxuICAgICgqIGxvb3AgaW52YXJpYW50czpcbiAgICAgICAxLiAgdGhlIHN1YmFycmF5IGFycltsZWZ0IC4uIGktMV0gaXMgc29ydGVkXG4gICAgICAgMi4gIHRoZSBzdWJhcnJheSBhcnJbaSsxIC4uIHBvc10gaXMgc29ydGVkIGFuZCBjb250YWlucyBvbmx5IGVsZW1lbnRzID4gdlxuICAgICAgIDMuICBhcnJbaV0gbWF5IGJlIHRob3VnaHQgb2YgYXMgY29udGFpbmluZyB2XG4gICAgKilcbiAgICBsZXQgcmVjIGluc2VydF9sb29wIGFyciB+bGVmdCB+Y29tcGFyZSBpIHYgPVxuICAgICAgbGV0IGlfbmV4dCA9IGkgLSAxIGluXG4gICAgICBpZiBpX25leHQgPj0gbGVmdCAmJiBjb21wYXJlIChnZXQgYXJyIGlfbmV4dCkgdiA+IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBzZXQgYXJyIGkgKGdldCBhcnIgaV9uZXh0KTtcbiAgICAgICAgaW5zZXJ0X2xvb3AgYXJyIH5sZWZ0IH5jb21wYXJlIGlfbmV4dCB2KVxuICAgICAgZWxzZSBpXG4gICAgOztcblxuICAgIGxldCBzb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgKCogbG9vcCBpbnZhcmlhbnQ6XG4gICAgICAgICBbYXJyXSBpcyBzb3J0ZWQgZnJvbSBbbGVmdF0gdG8gW3BvcyAtIDFdLCBpbmNsdXNpdmUgKilcbiAgICAgIGZvciBwb3MgPSBsZWZ0ICsgMSB0byByaWdodCBkb1xuICAgICAgICBsZXQgdiA9IGdldCBhcnIgcG9zIGluXG4gICAgICAgIGxldCBmaW5hbF9wb3MgPSBpbnNlcnRfbG9vcCBhcnIgfmxlZnQgfmNvbXBhcmUgcG9zIHYgaW5cbiAgICAgICAgc2V0IGFyciBmaW5hbF9wb3MgdlxuICAgICAgZG9uZVxuICAgIDs7XG4gIGVuZFxuXG4gICgqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVhcHNvcnQgKilcbiAgbW9kdWxlIEhlYXBfc29ydCA6IFNvcnQgPSBzdHJ1Y3RcbiAgICAoKiBsb29wIGludmFyaWFudDpcbiAgICAgICByb290J3MgY2hpbGRyZW4gYXJlIGJvdGggZWl0aGVyIHJvb3RzIG9mIG1heC1oZWFwcyBvciA+IHJpZ2h0ICopXG4gICAgbGV0IHJlYyBoZWFwaWZ5IGFyciB+Y29tcGFyZSByb290IH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgcmVsYXRpdmVfcm9vdCA9IHJvb3QgLSBsZWZ0IGluXG4gICAgICBsZXQgbGVmdF9jaGlsZCA9ICgyICogcmVsYXRpdmVfcm9vdCkgKyBsZWZ0ICsgMSBpblxuICAgICAgbGV0IHJpZ2h0X2NoaWxkID0gKDIgKiByZWxhdGl2ZV9yb290KSArIGxlZnQgKyAyIGluXG4gICAgICBsZXQgbGFyZ2VzdCA9XG4gICAgICAgIGlmIGxlZnRfY2hpbGQgPD0gcmlnaHQgJiYgY29tcGFyZSAoZ2V0IGFyciBsZWZ0X2NoaWxkKSAoZ2V0IGFyciByb290KSA+IDBcbiAgICAgICAgdGhlbiBsZWZ0X2NoaWxkXG4gICAgICAgIGVsc2Ugcm9vdFxuICAgICAgaW5cbiAgICAgIGxldCBsYXJnZXN0ID1cbiAgICAgICAgaWYgcmlnaHRfY2hpbGQgPD0gcmlnaHQgJiYgY29tcGFyZSAoZ2V0IGFyciByaWdodF9jaGlsZCkgKGdldCBhcnIgbGFyZ2VzdCkgPiAwXG4gICAgICAgIHRoZW4gcmlnaHRfY2hpbGRcbiAgICAgICAgZWxzZSBsYXJnZXN0XG4gICAgICBpblxuICAgICAgaWYgbGFyZ2VzdCA8PiByb290XG4gICAgICB0aGVuIChcbiAgICAgICAgc3dhcCBhcnIgcm9vdCBsYXJnZXN0O1xuICAgICAgICBoZWFwaWZ5IGFyciB+Y29tcGFyZSBsYXJnZXN0IH5sZWZ0IH5yaWdodClcbiAgICA7O1xuXG4gICAgbGV0IGJ1aWxkX2hlYXAgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICAoKiBFbGVtZW50cyBpbiB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIGFycmF5IGFyZSBhbHJlYWR5IGhlYXBzIG9mIHNpemUgMS4gIFdlIG1vdmVcbiAgICAgICAgIHRocm91Z2ggdGhlIGZpcnN0IGhhbGYgb2YgdGhlIGFycmF5IGZyb20gYmFjayB0byBmcm9udCBleGFtaW5pbmcgdGhlIGVsZW1lbnQgYXRcbiAgICAgICAgIGhhbmQsIGFuZCB0aGUgbGVmdCBhbmQgcmlnaHQgY2hpbGRyZW4sIGZpeGluZyB0aGUgaGVhcCBwcm9wZXJ0eSBhcyB3ZSBnby4gKilcbiAgICAgIGZvciBpID0gKGxlZnQgKyByaWdodCkgLyAyIGRvd250byBsZWZ0IGRvXG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGkgfmxlZnQgfnJpZ2h0XG4gICAgICBkb25lXG4gICAgOztcblxuICAgIGxldCBzb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgYnVpbGRfaGVhcCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0O1xuICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgICAgMS4gIHRoZSBzdWJhcnJheSBhcnJbbGVmdCAuLi4gaV0gaXMgYSBtYXgtaGVhcCBIXG4gICAgICAgICAyLiAgdGhlIHN1YmFycmF5IGFycltpKzEgLi4uIHJpZ2h0XSBpcyBzb3J0ZWQgKGNhbGwgaXQgUylcbiAgICAgICAgIDMuICBldmVyeSBlbGVtZW50IG9mIEggaXMgbGVzcyB0aGFuIGV2ZXJ5IGVsZW1lbnQgb2YgUyAqKVxuICAgICAgZm9yIGkgPSByaWdodCBkb3dudG8gbGVmdCArIDEgZG9cbiAgICAgICAgc3dhcCBhcnIgbGVmdCBpO1xuICAgICAgICBoZWFwaWZ5IGFyciB+Y29tcGFyZSBsZWZ0IH5sZWZ0IH5yaWdodDooaSAtIDEpXG4gICAgICBkb25lXG4gICAgOztcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRyb3NvcnQgKilcbiAgbW9kdWxlIEludHJvX3NvcnQgOiBzaWdcbiAgICBpbmNsdWRlIFNvcnRcblxuICAgIHZhbCBmaXZlX2VsZW1lbnRfc29ydFxuICAgICAgOiAgJ2EgdFxuICAgICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiB1bml0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBmaXZlX2VsZW1lbnRfc29ydCBhcnIgfmNvbXBhcmU6KChjb21wYXJlIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSBtMSBtMiBtMyBtNCBtNSA9XG4gICAgICBsZXQgY29tcGFyZV9hbmRfc3dhcCBpIGogPVxuICAgICAgICBpZiBjb21wYXJlIChnZXQgYXJyIGkpIChnZXQgYXJyIGopID4gMCB0aGVuIHN3YXAgYXJyIGkgalxuICAgICAgaW5cbiAgICAgICgqIE9wdGltYWwgNS1lbGVtZW50IHNvcnRpbmcgbmV0d29yazpcblxuICAgICAgICAge3ZcbiAgICAgICAgICAgIDEtLW8tLS0tLW8tLS0tLW8tLS0tLS0tLS0tLS0tLTFcbiAgICAgICAgICAgICAgIHwgICAgIHwgICAgIHxcbiAgICAgICAgICAgIDItLW8tLS0tLXwtLW8tLXwtLS0tLW8tLW8tLS0tLTJcbiAgICAgICAgICAgICAgICAgICAgIHwgIHwgIHwgICAgIHwgIHxcbiAgICAgICAgICAgIDMtLS0tLS0tLW8tLW8tLXwtLW8tLXwtLW8tLS0tLTNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwgIHxcbiAgICAgICAgICAgIDQtLS0tLW8tLS0tLS0tLW8tLW8tLXwtLS0tLW8tLTRcbiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgIHxcbiAgICAgICAgICAgIDUtLS0tLW8tLS0tLS0tLS0tLS0tLW8tLS0tLW8tLTVcbiAgICAgICAgICB2fSAqKVxuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMSBtMjtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTQgbTU7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0xIG0zO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMiBtMztcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTEgbTQ7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0zIG00O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMiBtNTtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTIgbTM7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG00IG01IFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgKCogY2hvb3NlIHBpdm90cyBmb3IgdGhlIGFycmF5IGJ5IHNvcnRpbmcgNSBlbGVtZW50cyBhbmQgZXhhbWluaW5nIHRoZSBjZW50ZXIgdGhyZWVcbiAgICAgICBlbGVtZW50cy4gIFRoZSBnb2FsIGlzIHRvIGNob29zZSB0d28gcGl2b3RzIHRoYXQgd2lsbCBlaXRoZXI6XG4gICAgICAgLSBicmVhayB0aGUgcmFuZ2UgdXAgaW50byAzIGV2ZW4gcGFydGl0aW9uc1xuICAgICAgICAgb3JcbiAgICAgICAtIGVsaW1pbmF0ZSBhIGNvbW1vbmx5IGFwcGVhcmluZyBlbGVtZW50IGJ5IHNvcnRpbmcgaXQgaW50byB0aGUgY2VudGVyIHBhcnRpdGlvblxuICAgICAgICAgYnkgaXRzZWxmXG4gICAgICAgICBUbyB0aGlzIGVuZCB3ZSBsb29rIGF0IHRoZSBjZW50ZXIgMyBlbGVtZW50cyBvZiB0aGUgNSBhbmQgcmV0dXJuIHBhaXJzIG9mIGVxdWFsXG4gICAgICAgICBlbGVtZW50cyBvciB0aGUgd2lkZXN0IHJhbmdlICopXG4gICAgbGV0IGNob29zZV9waXZvdHMgYXJyIH5jb21wYXJlOigoY29tcGFyZSA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBzaXh0aCA9IChyaWdodCAtIGxlZnQpIC8gNiBpblxuICAgICAgbGV0IG0xID0gbGVmdCArIHNpeHRoIGluXG4gICAgICBsZXQgbTIgPSBtMSArIHNpeHRoIGluXG4gICAgICBsZXQgbTMgPSBtMiArIHNpeHRoIGluXG4gICAgICBsZXQgbTQgPSBtMyArIHNpeHRoIGluXG4gICAgICBsZXQgbTUgPSBtNCArIHNpeHRoIGluXG4gICAgICBmaXZlX2VsZW1lbnRfc29ydCBhcnIgfmNvbXBhcmUgbTEgbTIgbTMgbTQgbTU7XG4gICAgICBsZXQgbTJfdmFsID0gZ2V0IGFyciBtMiBpblxuICAgICAgbGV0IG0zX3ZhbCA9IGdldCBhcnIgbTMgaW5cbiAgICAgIGxldCBtNF92YWwgPSBnZXQgYXJyIG00IGluXG4gICAgICBpZiBjb21wYXJlIG0yX3ZhbCBtM192YWwgPSAwXG4gICAgICB0aGVuIG0yX3ZhbCwgbTNfdmFsLCB0cnVlXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgbTNfdmFsIG00X3ZhbCA9IDBcbiAgICAgIHRoZW4gbTNfdmFsLCBtNF92YWwsIHRydWVcbiAgICAgIGVsc2UgbTJfdmFsLCBtNF92YWwsIGZhbHNlXG4gICAgOztcblxuICAgIGxldCBkdWFsX3Bpdm90X3BhcnRpdGlvbiBhcnIgfmNvbXBhcmU6KChjb21wYXJlIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IHBpdm90MSwgcGl2b3QyLCBwaXZvdHNfZXF1YWwgPSBjaG9vc2VfcGl2b3RzIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgaW5cbiAgICAgICgqIGxvb3AgaW52YXJpYW50czpcbiAgICAgICAgIDEuICBsZWZ0IDw9IGwgPCByIDw9IHJpZ2h0XG4gICAgICAgICAyLiAgbCA8PSBwIDw9IHJcbiAgICAgICAgIDMuICBsIDw9IHggPCBwICAgICBpbXBsaWVzIGFyclt4XSA+PSBwaXZvdDFcbiAgICAgICAgIGFuZCBhcnJbeF0gPD0gcGl2b3QyXG4gICAgICAgICA0LiAgbGVmdCA8PSB4IDwgbCAgaW1wbGllcyBhcnJbeF0gPCBwaXZvdDFcbiAgICAgICAgIDUuICByIDwgeCA8PSByaWdodCBpbXBsaWVzIGFyclt4XSA+IHBpdm90MiAqKVxuICAgICAgbGV0IHJlYyBsb29wIGwgcCByID1cbiAgICAgICAgbGV0IHB2ID0gZ2V0IGFyciBwIGluXG4gICAgICAgIGlmIGNvbXBhcmUgcHYgcGl2b3QxIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBzd2FwIGFyciBwIGw7XG4gICAgICAgICAgY29udCAobCArIDEpIChwICsgMSkgcilcbiAgICAgICAgZWxzZSBpZiBjb21wYXJlIHB2IHBpdm90MiA+IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOiAgc2FtZSBhcyB0aG9zZSBvZiB0aGUgb3V0ZXIgbG9vcCAqKVxuICAgICAgICAgIGxldCByZWMgc2Nhbl9iYWNrd2FyZHMgciA9XG4gICAgICAgICAgICBpZiByID4gcCAmJiBjb21wYXJlIChnZXQgYXJyIHIpIHBpdm90MiA+IDAgdGhlbiBzY2FuX2JhY2t3YXJkcyAociAtIDEpIGVsc2UgclxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHIgPSBzY2FuX2JhY2t3YXJkcyByIGluXG4gICAgICAgICAgc3dhcCBhcnIgciBwO1xuICAgICAgICAgIGNvbnQgbCBwIChyIC0gMSkpXG4gICAgICAgIGVsc2UgY29udCBsIChwICsgMSkgclxuICAgICAgYW5kIGNvbnQgbCBwIHIgPSBpZiBwID4gciB0aGVuIGwsIHIgZWxzZSBsb29wIGwgcCByIGluXG4gICAgICBsZXQgbCwgciA9IGNvbnQgbGVmdCBsZWZ0IHJpZ2h0IGluXG4gICAgICBsLCByLCBwaXZvdHNfZXF1YWxcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgbGVuID0gcmlnaHQgLSBsZWZ0ICsgMSBpblxuICAgICAgKCogVGhpcyB0YWtlcyBjYXJlIG9mIHNvbWUgZWRnZSBjYXNlcywgc3VjaCBhcyBsZWZ0ID4gcmlnaHQgb3IgdmVyeSBzaG9ydCBhcnJheXMsXG4gICAgICAgICBzaW5jZSBJbnNlcnRpb25fc29ydC5zb3J0IGhhbmRsZXMgdGhlc2UgY2FzZXMgcHJvcGVybHkuICBUaHVzIHdlIGRvbid0IG5lZWQgdG9cbiAgICAgICAgIG1ha2Ugc3VyZSB0aGF0IGxlZnQgYW5kIHJpZ2h0IGFyZSB2YWxpZCBpbiByZWN1cnNpdmUgY2FsbHMuICopXG4gICAgICBpZiBsZW4gPD0gMzJcbiAgICAgIHRoZW4gSW5zZXJ0aW9uX3NvcnQuc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgICBlbHNlIGlmIG1heF9kZXB0aCA8IDBcbiAgICAgIHRoZW4gSGVhcF9zb3J0LnNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBtYXhfZGVwdGggPSBtYXhfZGVwdGggLSAxIGluXG4gICAgICAgIGxldCBsLCByLCBtaWRkbGVfc29ydGVkID0gZHVhbF9waXZvdF9wYXJ0aXRpb24gYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCBpblxuICAgICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0IH5yaWdodDoobCAtIDEpO1xuICAgICAgICBpZiBub3QgbWlkZGxlX3NvcnRlZCB0aGVuIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQ6bCB+cmlnaHQ6cjtcbiAgICAgICAgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdDoociArIDEpIH5yaWdodClcbiAgICA7O1xuXG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgaGVhcF9zb3J0X3N3aXRjaF9kZXB0aCA9XG4gICAgICAgICgqIFdlIGJhaWwgb3V0IHRvIGhlYXAgc29ydCBhdCBhIHJlY3Vyc2lvbiBkZXB0aCBvZiAzMi4gR05VIGludHJvc29ydCB1c2VzIDJsZyhuKS5cbiAgICAgICAgICAgVGhlIGV4cGVjdGVkIHJlY3Vyc2lvbiBkZXB0aCBmb3IgcGVyZmVjdCAzLXdheSBzcGxpdHMgaXMgbG9nXzMobikuXG5cbiAgICAgICAgICAgVXNpbmcgMzIgbWVhbnMgYSBiYWxhbmNlZCAzLXdheSBzcGxpdCB3b3VsZCB3b3JrIHVwIHRvIDNeMzIgZWxlbWVudHMgKHJvdWdobHlcbiAgICAgICAgICAgMl41MCBvciAxMF4xNSkuIEdOVSByZWFjaGVzIGEgZGVwdGggb2YgMzIgYXQgNjU1MzYgZWxlbWVudHMuXG5cbiAgICAgICAgICAgRm9yIHNtYWxsIGFycmF5cywgdGhpcyBtYWtlcyB1cyBsZXNzIGxpa2VseSB0byBiYWlsIG91dCB0byBoZWFwIHNvcnQsIGJ1dCB0aGVcbiAgICAgICAgICAgMzIqTiBjb3N0IGJlZm9yZSB3ZSBkbyBpcyBub3QgdGhhdCBtdWNoLlxuXG4gICAgICAgICAgIEZvciBsYXJnZSBhcnJheXMsIHRoaXMgbWVhbnMgd2UgYXJlIG1vcmUgbGlrZWx5IHRvIGJhaWwgb3V0IHRvIGhlYXAgc29ydCBhdFxuICAgICAgICAgICBzb21lIHBvaW50IGlmIHdlIGdldCBzb21lIGJhZCBzcGxpdHMgb3IgaWYgdGhlIGFycmF5IGlzIGh1Z2UuIEJ1dCB0aGF0J3Mgb25seSBhXG4gICAgICAgICAgIGNvbnN0YW50IGZhY3RvciBjb3N0IGluIHRoZSBmaW5hbCBzdGFnZXMgb2YgcmVjdXJzaW9uLlxuXG4gICAgICAgICAgIEFsbCBpbiBhbGwsIHRoaXMgc2VlbXMgdG8gYmUgYSBzbWFsbCB0cmFkZW9mZiBhbmQgYXZvaWRzIHBheWluZyBhIGNvc3QgdG9cbiAgICAgICAgICAgY29tcHV0ZSBhIGxvZ2FyaXRobSBhdCB0aGUgc3RhcnQuICopXG4gICAgICAgIDMyXG4gICAgICBpblxuICAgICAgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aDpoZWFwX3NvcnRfc3dpdGNoX2RlcHRoIH5jb21wYXJlIH5sZWZ0IH5yaWdodFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzb3J0ID9wb3MgP2xlbiBhcnIgfmNvbXBhcmU6KChjb21wYXJlIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gICAgbGV0IHBvcywgbGVuID1cbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggYXJyKVxuICAgIGluXG4gICAgSW50cm9fc29ydC5zb3J0IGFyciB+Y29tcGFyZSB+bGVmdDpwb3MgfnJpZ2h0Oihwb3MgKyBsZW4gLSAxKVxuICA7O1xuZW5kXG5bQEBpbmxpbmVdXG5cbm1vZHVsZSBTb3J0ID0gU29ydGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCA9IHVuc2FmZV9nZXRcbiAgICBsZXQgc2V0ID0gdW5zYWZlX3NldFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgc29ydCA9IFNvcnQuc29ydFxubGV0IG9mX2FycmF5IHQgPSB0XG5sZXQgdG9fYXJyYXkgdCA9IHRcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCBpc19zb3J0ZWQgdCB+Y29tcGFyZSA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+IDAgJiYgIXJlc3VsdCBkb1xuICAgIGxldCBlbHRfaSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgIGxldCBlbHRfaV9taW51c18xID0gdW5zYWZlX2dldCB0ICghaSAtIDEpIGluXG4gICAgaWYgY29tcGFyZSBlbHRfaV9taW51c18xIGVsdF9pID4gMCB0aGVuIHJlc3VsdCA6PSBmYWxzZTtcbiAgICBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGlzX3NvcnRlZF9zdHJpY3RseSB0IH5jb21wYXJlID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID4gMCAmJiAhcmVzdWx0IGRvXG4gICAgbGV0IGVsdF9pID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgbGV0IGVsdF9pX21pbnVzXzEgPSB1bnNhZmVfZ2V0IHQgKCFpIC0gMSkgaW5cbiAgICBpZiBjb21wYXJlIGVsdF9pX21pbnVzXzEgZWx0X2kgPj0gMCB0aGVuIHJlc3VsdCA6PSBmYWxzZTtcbiAgICBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IG1lcmdlIGExIGEyIH5jb21wYXJlID1cbiAgbGV0IGwxID0gQXJyYXkubGVuZ3RoIGExIGluXG4gIGxldCBsMiA9IEFycmF5Lmxlbmd0aCBhMiBpblxuICBpZiBsMSA9IDBcbiAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbDIgPSAwXG4gIHRoZW4gY29weSBhMVxuICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYTIgMCkgKHVuc2FmZV9nZXQgYTEgKGwxIC0gMSkpID49IDBcbiAgdGhlbiBhcHBlbmQgYTEgYTJcbiAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGExIDApICh1bnNhZmVfZ2V0IGEyIChsMiAtIDEpKSA+IDBcbiAgdGhlbiBhcHBlbmQgYTIgYTFcbiAgZWxzZSAoXG4gICAgbGV0IGxlbiA9IGwxICsgbDIgaW5cbiAgICBsZXQgbWVyZ2VkID0gY3JlYXRlIH5sZW4gKHVuc2FmZV9nZXQgYTEgMCkgaW5cbiAgICBsZXQgYTFfaW5kZXggPSByZWYgMCBpblxuICAgIGxldCBhMl9pbmRleCA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCB1c2VfYTEgPVxuICAgICAgICBpZiBsMSA9ICFhMV9pbmRleFxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgaWYgbDIgPSAhYTJfaW5kZXhcbiAgICAgICAgdGhlbiB0cnVlXG4gICAgICAgIGVsc2UgY29tcGFyZSAodW5zYWZlX2dldCBhMSAhYTFfaW5kZXgpICh1bnNhZmVfZ2V0IGEyICFhMl9pbmRleCkgPD0gMFxuICAgICAgaW5cbiAgICAgIGlmIHVzZV9hMVxuICAgICAgdGhlbiAoXG4gICAgICAgIHVuc2FmZV9zZXQgbWVyZ2VkIGkgKHVuc2FmZV9nZXQgYTEgIWExX2luZGV4KTtcbiAgICAgICAgYTFfaW5kZXggOj0gIWExX2luZGV4ICsgMSlcbiAgICAgIGVsc2UgKFxuICAgICAgICB1bnNhZmVfc2V0IG1lcmdlZCBpICh1bnNhZmVfZ2V0IGEyICFhMl9pbmRleCk7XG4gICAgICAgIGEyX2luZGV4IDo9ICFhMl9pbmRleCArIDEpXG4gICAgZG9uZTtcbiAgICBtZXJnZWQpXG47O1xuXG5sZXQgY29weV9tYXRyaXggPSBtYXAgfmY6Y29weVxuXG5sZXQgZm9sZGluZ19tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG5sZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGFjYyA6PSBmIGkgIWFjYyAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmU7XG4gICFhY2Ncbjs7XG5cbmxldCBmb2xkaW5nX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgY291bnRpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpZHggY291bnQgYSAtPiBpZiBmIGlkeCBhIHRoZW4gY291bnQgKyAxIGVsc2UgY291bnQpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBjb25jYXRfbWFwIHQgfmYgPSBjb25jYXQgKHRvX2xpc3QgKG1hcCB+ZiB0KSlcbmxldCBjb25jYXRfbWFwaSB0IH5mID0gY29uY2F0ICh0b19saXN0IChtYXBpIH5mIHQpKVxuXG5sZXQgcmV2X2lucGxhY2UgdCA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgd2hpbGUgIWkgPCAhaiBkb1xuICAgIHN3YXAgdCAhaSAhajtcbiAgICBpbmNyIGk7XG4gICAgZGVjciBqXG4gIGRvbmVcbjs7XG5cbmxldCByZXYgdCA9XG4gIGxldCB0ID0gY29weSB0IGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0X3JldiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IGEgOjogbCAtPlxuICAgIGxldCBsZW4gPSAxICsgTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCB0ID0gY3JlYXRlIH5sZW4gYSBpblxuICAgIGxldCByID0gcmVmIGwgaW5cbiAgICAoKiBXZSBzdGFydCBhdCBbbGVuIC0gMl0gYmVjYXVzZSB3ZSBhbHJlYWR5IHB1dCBbYV0gYXQgW3QuKGxlbiAtIDEpXS4gKilcbiAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IGEgOjogbCAtPlxuICAgICAgICB0LihpKSA8LSBhO1xuICAgICAgICByIDo9IGxcbiAgICBkb25lO1xuICAgIHRcbjs7XG5cbigqIFtvZl9saXN0X21hcF0gYW5kIFtvZl9saXN0X3Jldl9tYXBdIGFyZSBiYXNlZCBvbiBmdW5jdGlvbnMgZnJvbSB0aGUgT0NhbWxcbiAgIGRpc3RyaWJ1dGlvbi4gKilcblxubGV0IG9mX2xpc3RfbWFwIHhzIH5mID1cbiAgbWF0Y2ggeHMgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCBoZCA6OiB0bCAtPlxuICAgIGxldCBhID0gY3JlYXRlIH5sZW46KDEgKyBMaXN0Lmxlbmd0aCB0bCkgKGYgaGQpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBhXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIHVuc2FmZV9zZXQgYSBpIChmIGhkKTtcbiAgICAgICAgZmlsbCAoaSArIDEpIHRsXG4gICAgaW5cbiAgICBmaWxsIDEgdGwgW0Bub250YWlsXVxuOztcblxubGV0IG9mX2xpc3RfbWFwaSB4cyB+ZiA9XG4gIG1hdGNoIHhzIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgaGQgOjogdGwgLT5cbiAgICBsZXQgYSA9IGNyZWF0ZSB+bGVuOigxICsgTGlzdC5sZW5ndGggdGwpIChmIDAgaGQpIGluXG4gICAgbGV0IHJlYyBmaWxsIGEgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgdW5zYWZlX3NldCBhIGkgKGYgaSBoZCk7XG4gICAgICAgIGZpbGwgYSAoaSArIDEpIHRsXG4gICAgaW5cbiAgICBmaWxsIGEgMSB0bCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgb2ZfbGlzdF9yZXZfbWFwIHhzIH5mID1cbiAgbGV0IHQgPSBvZl9saXN0X21hcCB4cyB+ZiBpblxuICByZXZfaW5wbGFjZSB0O1xuICB0XG47O1xuXG5sZXQgb2ZfbGlzdF9yZXZfbWFwaSB4cyB+ZiA9XG4gIGxldCB0ID0gb2ZfbGlzdF9tYXBpIHhzIH5mIGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHIgPSByZWYgW3x8XSBpblxuICBsZXQgayA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBtYXRjaCBmIGkgKHVuc2FmZV9nZXQgdCBpKSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGEgLT5cbiAgICAgIGlmICFrID0gMCB0aGVuIHIgOj0gY3JlYXRlIH5sZW46KGxlbmd0aCB0KSBhO1xuICAgICAgdW5zYWZlX3NldCAhciAhayBhO1xuICAgICAgaW5jciBrXG4gIGRvbmU7XG4gIGlmICFrID0gbGVuZ3RoIHQgdGhlbiAhciBlbHNlIGlmICFrID4gMCB0aGVuIHN1YiB+cG9zOjAgfmxlbjohayAhciBlbHNlIFt8fF1cbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gX2kgYSAtPiBmIGEpIFtAbm9udGFpbF1cbmxldCBmaWx0ZXJfb3B0IHQgPSBmaWx0ZXJfbWFwIHQgfmY6Rm4uaWRcblxubGV0IHJhaXNlX2xlbmd0aF9taXNtYXRjaCBuYW1lIG4xIG4yID1cbiAgaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZFwiIG5hbWUgbjEgbjIgKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMl9leG4gbmFtZSB0MSB0MiA9XG4gIGxldCBuMSA9IGxlbmd0aCB0MSBpblxuICBsZXQgbjIgPSBsZW5ndGggdDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiByYWlzZV9sZW5ndGhfbWlzbWF0Y2ggbmFtZSBuMSBuMlxuOztcblxubGV0IGl0ZXIyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuaXRlcjJfZXhuXCIgdDEgdDI7XG4gIGl0ZXJpIHQxIH5mOihmdW4gaSB4MSAtPiBmIHgxICh1bnNhZmVfZ2V0IHQyIGkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWFwMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5Lm1hcDJfZXhuXCIgdDEgdDI7XG4gIGluaXQgKGxlbmd0aCB0MSkgfmY6KGZ1biBpIC0+IGYgKHVuc2FmZV9nZXQgdDEgaSkgKHVuc2FmZV9nZXQgdDIgaSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkMl9leG4gdDEgdDIgfmluaXQgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmZvbGQyX2V4blwiIHQxIHQyO1xuICBmb2xkaSB0MSB+aW5pdCB+ZjooZnVuIGkgYWMgeCAtPiBmIGFjIHggKHVuc2FmZV9nZXQgdDIgaSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9IGZpbHRlcl9tYXAgdCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSkgW0Bub250YWlsXVxubGV0IGZpbHRlcmkgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiBTb21lIHggZWxzZSBOb25lKSBbQG5vbnRhaWxdXG5cblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiBmYWxzZSBpblxuICB3aGlsZSAhaSA+PSAwICYmIG5vdCAhcmVzdWx0IGRvXG4gICAgaWYgZiAodW5zYWZlX2dldCB0ICFpKSB0aGVuIHJlc3VsdCA6PSB0cnVlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICFpICh1bnNhZmVfZ2V0IHQgIWkpIHRoZW4gcmVzdWx0IDo9IHRydWUgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID0gZXhpc3RzIHQgfmY6KGVxdWFsIGEpIFtAbm9udGFpbF1cblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgKHVuc2FmZV9nZXQgdCAhaSkpIHRoZW4gcmVzdWx0IDo9IGZhbHNlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGxldCBpID0gcmVmIChsZW5ndGggLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiAhcmVzdWx0IGRvXG4gICAgaWYgbm90IChmICFpICh1bnNhZmVfZ2V0IHQgIWkpKSB0aGVuIHJlc3VsdCA6PSBmYWxzZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZXhpc3RzMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmV4aXN0czJfZXhuXCIgdDEgdDI7XG4gIGxldCBpID0gcmVmIChsZW5ndGggdDEgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICh1bnNhZmVfZ2V0IHQxICFpKSAodW5zYWZlX2dldCB0MiAhaSkgdGhlbiByZXN1bHQgOj0gdHJ1ZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZm9yX2FsbDJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5mb3JfYWxsMl9leG5cIiB0MSB0MjtcbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0MSAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgKHVuc2FmZV9nZXQgdDEgIWkpICh1bnNhZmVfZ2V0IHQyICFpKSkgdGhlbiByZXN1bHQgOj0gZmFsc2UgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGVxdWFsIGVxdWFsIHQxIHQyID0gbGVuZ3RoIHQxID0gbGVuZ3RoIHQyICYmIGZvcl9hbGwyX2V4biB0MSB0MiB+ZjplcXVhbFxuXG5cbmxldCBtYXBfaW5wbGFjZSB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgdCBpIChmICh1bnNhZmVfZ2V0IHQgaSkpXG4gIGRvbmVcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gZmluZGlfaW50ZXJuYWwgdCB+ZiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gaWZfbm90X2ZvdW5kICgpXG4gIGVsc2UgKFxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgZm91bmQgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgdmFsdWVfZm91bmQgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIHdoaWxlIChub3QgIWZvdW5kKSAmJiAhaSA8IGxlbmd0aCBkb1xuICAgICAgbGV0IHZhbHVlID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICBpZiBmICFpIHZhbHVlXG4gICAgICB0aGVuIChcbiAgICAgICAgdmFsdWVfZm91bmQgOj0gdmFsdWU7XG4gICAgICAgIGZvdW5kIDo9IHRydWUpXG4gICAgICBlbHNlIGluY3IgaVxuICAgIGRvbmU7XG4gICAgaWYgIWZvdW5kIHRoZW4gaWZfZm91bmQgfmk6IWkgfnZhbHVlOiF2YWx1ZV9mb3VuZCBlbHNlIGlmX25vdF9mb3VuZCAoKSlcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmZcbiAgICB+aWZfZm91bmQ6KGZ1biB+aSB+dmFsdWUgLT4gU29tZSAoaSwgdmFsdWUpKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biAoKSAtPiBOb25lKVxuOztcblxubGV0IGZpbmRpX2V4biB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmZcbiAgICB+aWZfZm91bmQ6KGZ1biB+aSB+dmFsdWUgLT4gaSwgdmFsdWUpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuICgpIC0+IHJhaXNlIChOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRpX2V4bjogbm90IGZvdW5kXCIpKSlcbjs7XG5cbmxldCBmaW5kX2V4biB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmY6KGZ1biBfaSB4IC0+IGYgeClcbiAgICB+aWZfZm91bmQ6KGZ1biB+aTpfIH52YWx1ZSAtPiB2YWx1ZSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4gKCkgLT4gcmFpc2UgKE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZF9leG46IG5vdCBmb3VuZFwiKSkpXG4gIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kIHQgfmYgPSBPcHRpb24ubWFwIChmaW5kaSB0IH5mOihmdW4gX2kgeCAtPiBmIHgpKSB+ZjooZnVuIChfaSwgeCkgLT4geClcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiBOb25lIGluXG4gICAgd2hpbGUgT3B0aW9uLmlzX25vbmUgIXZhbHVlX2ZvdW5kICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIHZhbHVlX2ZvdW5kIDo9IGYgdmFsdWU7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgICF2YWx1ZV9mb3VuZClcbjs7XG5cbmxldCBmaW5kX21hcF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX21hcF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBfZXhuXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiBOb25lIGluXG4gICAgd2hpbGUgT3B0aW9uLmlzX25vbmUgIXZhbHVlX2ZvdW5kICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIHZhbHVlX2ZvdW5kIDo9IGYgIWkgdmFsdWU7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgICF2YWx1ZV9mb3VuZClcbjs7XG5cbmxldCBmaW5kX21hcGlfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZF9tYXBpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwaSB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwaV9leG5cbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSB0IH5lcXVhbCA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbiA8PSAxXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVzdWx0ID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgaSA9IHJlZiAxIGluXG4gICAgbGV0IHByZXYgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIHdoaWxlICFpIDwgbiBkb1xuICAgICAgbGV0IGN1ciA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgaWYgZXF1YWwgY3VyICFwcmV2XG4gICAgICB0aGVuIChcbiAgICAgICAgcmVzdWx0IDo9IFNvbWUgKCFwcmV2LCBjdXIpO1xuICAgICAgICBpIDo9IG4pXG4gICAgICBlbHNlIChcbiAgICAgICAgcHJldiA6PSBjdXI7XG4gICAgICAgIGluY3IgaSlcbiAgICBkb25lO1xuICAgICFyZXN1bHQpXG47O1xuXG5sZXQgcmVkdWNlIHQgfmYgPVxuICBpZiBsZW5ndGggdCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByID0gcmVmICh1bnNhZmVfZ2V0IHQgMCkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgdCBpKVxuICAgIGRvbmU7XG4gICAgU29tZSAhcilcbjs7XG5cbmxldCByZWR1Y2VfZXhuIHQgfmYgPVxuICBtYXRjaCByZWR1Y2UgdCB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkFycmF5LnJlZHVjZV9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgcGVybXV0ZSA9IEFycmF5X3Blcm11dGUucGVybXV0ZVxuXG5sZXQgcmFuZG9tX2VsZW1lbnRfZXhuID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJBcnJheS5yYW5kb21fZWxlbWVudF9leG46IGVtcHR5IGFycmF5XCJcbiAgZWxzZSB0LihSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAobGVuZ3RoIHQpKVxuOztcblxubGV0IHJhbmRvbV9lbGVtZW50ID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgPVxuICB0cnkgU29tZSAocmFuZG9tX2VsZW1lbnRfZXhuIH5yYW5kb21fc3RhdGUgdCkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHppcCB0MSB0MiA9XG4gIGlmIGxlbmd0aCB0MSA8PiBsZW5ndGggdDIgdGhlbiBOb25lIGVsc2UgU29tZSAobWFwMl9leG4gdDEgdDIgfmY6KGZ1biB4MSB4MiAtPiB4MSwgeDIpKVxuOztcblxubGV0IHppcF9leG4gdDEgdDIgPVxuICBpZiBsZW5ndGggdDEgPD4gbGVuZ3RoIHQyXG4gIHRoZW4gZmFpbHdpdGggXCJBcnJheS56aXBfZXhuXCJcbiAgZWxzZSBtYXAyX2V4biB0MSB0MiB+ZjooZnVuIHgxIHgyIC0+IHgxLCB4Milcbjs7XG5cbmxldCB1bnppcCB0ID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBpZiBuID0gMFxuICB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHgsIHkgPSB0LigwKSBpblxuICAgIGxldCByZXMxID0gY3JlYXRlIH5sZW46biB4IGluXG4gICAgbGV0IHJlczIgPSBjcmVhdGUgfmxlbjpuIHkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgIGxldCB4LCB5ID0gdC4oaSkgaW5cbiAgICAgIHJlczEuKGkpIDwtIHg7XG4gICAgICByZXMyLihpKSA8LSB5XG4gICAgZG9uZTtcbiAgICByZXMxLCByZXMyKVxuOztcblxubGV0IHNvcnRlZF9jb3B5IHQgfmNvbXBhcmUgPVxuICBsZXQgdDEgPSBjb3B5IHQgaW5cbiAgc29ydCB0MSB+Y29tcGFyZTtcbiAgdDFcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgbGV0IChib3RoIDogXyBFaXRoZXIudCB0KSA9IG1hcGkgdCB+ZiBpblxuICBsZXQgZmlyc3RzID1cbiAgICBmaWx0ZXJfbWFwIGJvdGggfmY6KGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IHggLT4gU29tZSB4XG4gICAgICB8IFNlY29uZCBfIC0+IE5vbmUpXG4gIGluXG4gIGxldCBzZWNvbmRzID1cbiAgICBmaWx0ZXJfbWFwIGJvdGggfmY6KGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IF8gLT4gTm9uZVxuICAgICAgfCBTZWNvbmQgeCAtPiBTb21lIHgpXG4gIGluXG4gIGZpcnN0cywgc2Vjb25kc1xuOztcblxubGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gIHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiBGaXJzdCB4IGVsc2UgU2Vjb25kIHgpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gXyB4IC0+IGYgeCkgW0Bub250YWlsXVxubGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gXyB4IC0+IGYgeCkgW0Bub250YWlsXVxubGV0IGxhc3QgdCA9IHQuKGxlbmd0aCB0IC0gMSlcblxuKCogQ29udmVydCB0byBhIHNlcXVlbmNlIGJ1dCBkb2VzIG5vdCBhdHRlbXB0IHRvIHByb3RlY3QgYWdhaW5zdCBtb2RpZmljYXRpb25cbiAgIGluIHRoZSBhcnJheS4gKilcbmxldCB0b19zZXF1ZW5jZV9tdXRhYmxlIHQgPVxuICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDowIH5mOihmdW4gaSAtPlxuICAgIGlmIGkgPj0gbGVuZ3RoIHRcbiAgICB0aGVuIFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgIGVsc2UgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gdC4oaSk7IHN0YXRlID0gaSArIDEgfSlcbjs7XG5cbmxldCB0b19zZXF1ZW5jZSB0ID0gdG9fc2VxdWVuY2VfbXV0YWJsZSAoY29weSB0KVxuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3QgdDEgdDIgPVxuICBpZiBpc19lbXB0eSB0MSB8fCBpc19lbXB0eSB0MlxuICB0aGVuIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IG4xID0gbGVuZ3RoIHQxIGluXG4gICAgbGV0IG4yID0gbGVuZ3RoIHQyIGluXG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbjoobjEgKiBuMikgKHQxLigwKSwgdDIuKDApKSBpblxuICAgIGxldCByID0gcmVmIDAgaW5cbiAgICBmb3IgaTEgPSAwIHRvIG4xIC0gMSBkb1xuICAgICAgZm9yIGkyID0gMCB0byBuMiAtIDEgZG9cbiAgICAgICAgdC4oIXIpIDwtIHQxLihpMSksIHQyLihpMik7XG4gICAgICAgIGluY3IgclxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgdClcbjs7XG5cbmxldCB0cmFuc3Bvc2UgdHQgPVxuICBpZiBsZW5ndGggdHQgPSAwXG4gIHRoZW4gU29tZSBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCB3aWR0aCA9IGxlbmd0aCB0dCBpblxuICAgIGxldCBkZXB0aCA9IGxlbmd0aCB0dC4oMCkgaW5cbiAgICBpZiBleGlzdHMgdHQgfmY6KGZ1biB0IC0+IGxlbmd0aCB0IDw+IGRlcHRoKVxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAoaW5pdCBkZXB0aCB+ZjooZnVuIGQgLT4gaW5pdCB3aWR0aCB+ZjooZnVuIHcgLT4gdHQuKHcpLihkKSkpKSlcbjs7XG5cbmxldCB0cmFuc3Bvc2VfZXhuIHR0ID1cbiAgbWF0Y2ggdHJhbnNwb3NlIHR0IHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiQXJyYXkudHJhbnNwb3NlX2V4blwiXG4gIHwgU29tZSB0dCcgLT4gdHQnXG47O1xuXG5pbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCA9IGdldFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgZW5kKVxuXG5pbmNsdWRlIEJsaXQuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiB0ID1cbiAgICAgIGlmIGxlbiA9IDBcbiAgICAgIHRoZW4gW3x8XVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFzc2VydCAobGVuZ3RoIHQgPiAwKTtcbiAgICAgICAgY3JlYXRlIH5sZW4gdC4oMCkpXG4gICAgOztcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaXRlciB0IH5mOmludmFyaWFudF9hXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBTb3J0ID0gU29ydFxuICBtb2R1bGUgU29ydGVyID0gU29ydGVyXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxuKCogV2UgbWFpbnRhaW4gdGhlIHByb3BlcnR5IHRoYXQgYWxsIHZhbHVlcyBvZiB0eXBlIFt0XSBkbyBub3QgaGF2ZSB0aGUgdGFnXG4gICBbZG91YmxlX2FycmF5X3RhZ10uICBTb21lIGZ1bmN0aW9ucyBiZWxvdyBhc3N1bWUgdGhpcyBpbiBvcmRlciB0byBhdm9pZCB0ZXN0aW5nIHRoZVxuICAgdGFnLCBhbmQgd2lsbCBzZWdmYXVsdCBpZiB0aGlzIHByb3BlcnR5IGRvZXNuJ3QgaG9sZC4gKilcbnR5cGUgdCA9IFN0ZGxpYi5PYmoudCBhcnJheVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBhc3NlcnQgKFN0ZGxpYi5PYmoudGFnIChTdGRsaWIuT2JqLnJlcHIgdCkgPD4gU3RkbGliLk9iai5kb3VibGVfYXJyYXlfdGFnKVxuOztcblxubGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCAoKiB3b3VsZCBjaGVjayBmb3IgZmxvYXQgYXJyYXlzIGluIDMyIGJpdCwgYnV0IHdoYXRldmVyICopXG5cbmxldCBzZXhwX29mX3QgdCA9XG4gIFNleHAuQXRvbVxuICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIFwiPE9ial9hcnJheS50IG9mIGxlbmd0aCBcIjsgSW50LnRvX3N0cmluZyAobGVuZ3RoIHQpOyBcIj5cIiBdKVxuOztcblxubGV0IHplcm9fb2JqID0gU3RkbGliLk9iai5yZXByICgwIDogaW50KVxuXG4oKiBXZSBjYWxsIFtBcnJheS5jcmVhdGVdIHdpdGggYSB2YWx1ZSB0aGF0IGlzIG5vdCBhIGZsb2F0IHNvIHRoYXQgdGhlIGFycmF5IGRvZXNuJ3QgZ2V0XG4gICB0YWdnZWQgd2l0aCBbRG91YmxlX2FycmF5X3RhZ10uICopXG5sZXQgY3JlYXRlX3plcm8gfmxlbiA9IEFycmF5LmNyZWF0ZSB+bGVuIHplcm9fb2JqXG5sZXQgZW1wdHkgPSBbfHxdXG5cbnR5cGUgbm90X2FfZmxvYXQgPVxuICB8IE5vdF9hX2Zsb2F0XzBcbiAgfCBOb3RfYV9mbG9hdF8xIG9mIGludFxuXG5sZXQgX25vdF9hX2Zsb2F0XzAgPSBOb3RfYV9mbG9hdF8wXG5sZXQgX25vdF9hX2Zsb2F0XzEgPSBOb3RfYV9mbG9hdF8xIDQyXG5cbmxldCBnZXQgdCBpID1cbiAgKCogTWFrZSB0aGUgY29tcGlsZXIgYmVsaWV2ZSBbdF0gaXMgYW4gYXJyYXkgbm90IGNvbnRhaW5pbmcgZmxvYXRzIHNvIGl0IGRvZXMgbm90IGNoZWNrXG4gICAgIGlmIFt0XSBpcyB0YWdnZWQgd2l0aCBbRG91YmxlX2FycmF5X3RhZ10uICBJdCBpcyBOT1Qgb2sgdG8gdXNlIFtpbnQgYXJyYXldIHNpbmNlIChpZlxuICAgICB0aGlzIGZ1bmN0aW9uIGlzIGlubGluZWQgYW5kIHRoZSBhcnJheSBjb250YWlucyBpbi1oZWFwIGJveGVkIHZhbHVlcykgd3JvbmcgcmVnaXN0ZXJcbiAgICAgdHlwaW5nIG1heSByZXN1bHQsIGxlYWRpbmcgdG8gYSBmYWlsdXJlIHRvIHJlZ2lzdGVyIG5lY2Vzc2FyeSBHQyByb290cy4gKilcbiAgU3RkbGliLk9iai5yZXByXG4gICAgKCogW1N5cy5vcGFxdWVfaWRlbnRpdHldIGlzIHJlcXVpcmVkIG9uIHRoZSBhcnJheSBiZWNhdXNlIHRoaXMgY29kZSBicmVha3MgdGhlIHVzdWFsXG4gICAgICAgYXNzdW1wdGlvbnMgYWJvdXQgYXJyYXkga2luZHMgdGhhdCB0aGUgRmxhbWJkYSAyIG9wdGltaXNlciBjYW4gc2VlLiAqKVxuICAgICgoU3lzLm9wYXF1ZV9pZGVudGl0eSAoU3RkbGliLk9iai5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpKS4oaSlcbiAgICAgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX2dldCB0IGkgPVxuICAoKiBNYWtlIHRoZSBjb21waWxlciBiZWxpZXZlIFt0XSBpcyBhbiBhcnJheSBub3QgY29udGFpbmluZyBmbG9hdHMgc28gaXQgZG9lcyBub3QgY2hlY2tcbiAgICAgaWYgW3RdIGlzIHRhZ2dlZCB3aXRoIFtEb3VibGVfYXJyYXlfdGFnXS4gKilcbiAgU3RkbGliLk9iai5yZXByXG4gICAgKEFycmF5LnVuc2FmZV9nZXRcbiAgICAgICAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoT2JqX2xvY2FsLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkpXG4gICAgICAgaVxuICAgICA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9iaiA9XG4gICgqIFNhbWUgY29tbWVudCBhcyBbdW5zYWZlX2dldF0uIFN5cy5vcGFxdWVfaWRlbnRpdHkgcHJldmVudHMgdGhlIGNvbXBpbGVyIGZyb21cbiAgICAgcG90ZW50aWFsbHkgd3JvbmdseSBndWVzc2luZyB0aGUgdHlwZSBvZiB0aGUgYXJyYXkgYmFzZWQgb24gdGhlIHR5cGUgb2YgZWxlbWVudCwgdGhhdFxuICAgICBpcyBwcmV2ZW50IHRoZSBpbXBsaWNhdGlvbjogKE9iai50YWcgb2JqID0gT2JqLmRvdWJsZV90YWcpID0+IChPYmoudGFnIHQgPVxuICAgICBPYmouZG91YmxlX2FycmF5X3RhZykgd2hpY2ggZmxhbWJkYSBoYXMgdHJpZWQgaW4gdGhlIHBhc3QgKGF0IGxlYXN0IHRoYXQncyBhc3N1bWluZ1xuICAgICB0aGUgY29tcGlsZXIgcmVzcGVjdHMgU3lzLm9wYXF1ZV9pZGVudGl0eSwgd2hpY2ggaXMgbm90IGFsd2F5cyB0aGUgY2FzZSkuICopXG4gIEFycmF5LnVuc2FmZV9zZXRcbiAgICAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoT2JqX2xvY2FsLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkpXG4gICAgaVxuICAgIChTdGRsaWIuT2JqLm9iaiAoU3lzLm9wYXF1ZV9pZGVudGl0eSBvYmopIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmogPVxuICAoKiBzYW1lIGFzIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSBidXQgc2FmZSAqKVxuICAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoU3RkbGliLk9iai5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpKS4oaSlcbiAgPC0gKFN0ZGxpYi5PYmoub2JqIChTeXMub3BhcXVlX2lkZW50aXR5IG9iaikgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgaW50ID1cbiAgKCogVGhpcyBza2lwcyBbY2FtbF9tb2RpZnldLCB3aGljaCBpcyBPSyBpZiBib3RoIHRoZSBvbGQgYW5kIG5ldyB2YWx1ZXMgYXJlIGludGVnZXJzLiAqKVxuICBBcnJheS51bnNhZmVfc2V0XG4gICAgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKE9ial9sb2NhbC5tYWdpYyAodCA6IHQpIDogaW50IGFycmF5KSlcbiAgICBpXG4gICAgKFN5cy5vcGFxdWVfaWRlbnRpdHkgaW50KVxuOztcblxuKCogRm9yIFtzZXRdIGFuZCBbdW5zYWZlX3NldF0sIGlmIGEgcG9pbnRlciBpcyBpbnZvbHZlZCwgd2UgZmlyc3QgZG8gYSBwaHlzaWNhbC1lcXVhbGl0eVxuICAgdGVzdCB0byBzZWUgaWYgdGhlIHBvaW50ZXIgaXMgY2hhbmdpbmcuICBJZiBub3QsIHdlIGRvbid0IG5lZWQgdG8gZG8gdGhlIFtzZXRdLCB3aGljaFxuICAgc2F2ZXMgYSBjYWxsIHRvIFtjYW1sX21vZGlmeV0uICBXZSB0aGluayB0aGlzIHBoeXNpY2FsLWVxdWFsaXR5IHRlc3QgaXMgd29ydGggaXRcbiAgIGJlY2F1c2UgaXQgaXMgdmVyeSBjaGVhcCAoYm90aCB2YWx1ZXMgYXJlIGFscmVhZHkgYXZhaWxhYmxlIGZyb20gdGhlIFtpc19pbnRdIHRlc3QpXG4gICBhbmQgYmVjYXVzZSBbY2FtbF9tb2RpZnldIGlzIGV4cGVuc2l2ZS4gKilcblxubGV0IHNldCB0IGkgb2JqID1cbiAgKCogV2UgdXNlIFtnZXRdIGZpcnN0IGJ1dCB0aGVuIHdlIHVzZSBbQXJyYXkudW5zYWZlX3NldF0gc2luY2Ugd2Uga25vdyB0aGF0IFtpXSBpc1xuICAgICB2YWxpZC4gKilcbiAgbGV0IG9sZF9vYmogPSBnZXQgdCBpIGluXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9sZF9vYmogJiYgU3RkbGliLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKFN0ZGxpYi5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSBpZiBub3QgKHBoeXNfZXF1YWwgb2xkX29iaiBvYmopXG4gIHRoZW4gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldCB0IGkgb2JqID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBTdGRsaWIuT2JqLmlzX2ludCBvbGRfb2JqICYmIFN0ZGxpYi5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChTdGRsaWIuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2UgaWYgbm90IChwaHlzX2VxdWFsIG9sZF9vYmogb2JqKVxuICB0aGVuIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSBvYmogPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9sZF9vYmogJiYgU3RkbGliLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKFN0ZGxpYi5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0IHN3YXAgdCBpIGogPVxuICBsZXQgYSA9IGdldCB0IGkgaW5cbiAgbGV0IGIgPSBnZXQgdCBqIGluXG4gIHVuc2FmZV9zZXQgdCBpIGI7XG4gIHVuc2FmZV9zZXQgdCBqIGFcbjs7XG5cbmxldCBjcmVhdGUgfmxlbiB4ID1cbiAgKCogSWYgd2UgY2FuLCB1c2UgW0FycmF5LmNyZWF0ZV0gZGlyZWN0bHkuIEV2ZW4gdGhvdWdoIFtpc19pbnRdIGNoZWNrIGlzIHN1YnN1bWVkIGJ5XG4gICAgIHRoZSB0YWcgY2hlY2ssIGNoZWNraW5nIGl0IGlzIG11Y2ggZmFzdGVyLCBzaW5jZSBpdCBhdm9pZHMgYSBDIGZ1bmN0aW9uIGNhbGwuICAqKVxuICBpZiBTdGRsaWIuT2JqLmlzX2ludCB4IHx8IFN0ZGxpYi5PYmoudGFnIHggPD4gU3RkbGliLk9iai5kb3VibGVfdGFnXG4gIHRoZW4gQXJyYXkuY3JlYXRlIH5sZW4geFxuICBlbHNlIChcbiAgICAoKiBPdGhlcndpc2UgdXNlIFtjcmVhdGVfemVyb10gYW5kIHNldCB0aGUgY29udGVudHMgKilcbiAgICBsZXQgdCA9IGNyZWF0ZV96ZXJvIH5sZW4gaW5cbiAgICBsZXQgeCA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgeCBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIHhcbiAgICBkb25lO1xuICAgIHQpXG47O1xuXG5sZXQgc2luZ2xldG9uIG9iaiA9IGNyZWF0ZSB+bGVuOjEgb2JqXG5cbigqIFByZS1jb25kaXRpb246IHQuKGkpIGlzIGFuIGludGVnZXIuICopXG5sZXQgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBvYmogPVxuICBpZiBTdGRsaWIuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoU3RkbGliLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlXG4gICAgKCogW3QuKGkpXSBpcyBhbiBpbnRlZ2VyIGFuZCBbb2JqXSBpcyBub3QsIHNvIHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIGlmIHRoZXkgYXJlXG4gICAgICAgZXF1YWwuICopXG4gICAgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludCB0IGkgaW50ID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBTdGRsaWIuT2JqLmlzX2ludCBvbGRfb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgaW50XG4gIGVsc2UgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoU3RkbGliLk9iai5yZXByIGludClcbjs7XG5cbmxldCB1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciB0IGkgPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIG5vdCAoU3RkbGliLk9iai5pc19pbnQgb2xkX29iailcbiAgdGhlbiB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChTdGRsaWIuT2JqLnJlcHIgMClcbjs7XG5cbigqKiBbdW5zYWZlX2JsaXRdIGlzIGxpa2UgW0FycmF5LmJsaXRdLCBleGNlcHQgaXQgdXNlcyBvdXIgb3duIGZvci1sb29wIHRvIGF2b2lkXG4gICAgY2FtbF9tb2RpZnkgd2hlbiBwb3NzaWJsZS4gIEl0cyBwZXJmb3JtYW5jZSBpcyBzdGlsbCBub3QgY29tcGFyYWJsZSB0byBhIG1lbWNweS4gKilcbmxldCB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICgqIFdoZW4gW3BoeXNfZXF1YWwgc3JjIGRzdF0sIHdlIG5lZWQgdG8gY2hlY2sgd2hldGhlciBbZHN0X3BvcyA8IHNyY19wb3NdIGFuZCBoYXZlIHRoZVxuICAgICBmb3IgbG9vcCBnbyBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uIHNvIHRoYXQgd2UgZG9uJ3Qgb3ZlcndyaXRlIGRhdGEgdGhhdCB3ZSBzdGlsbCBuZWVkXG4gICAgIHRvIHJlYWQuICBXaGVuIFtub3QgKHBoeXNfZXF1YWwgc3JjIGRzdCldLCBkb2luZyB0aGlzIGlzIGhhcm1sZXNzLiAgRnJvbSBhXG4gICAgIG1lbW9yeS1wZXJmb3JtYW5jZSBwZXJzcGVjdGl2ZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hldGhlciBvbmUgbG9vcHMgdXAgb3IgZG93bi5cbiAgICAgQ29uc3RhbnQtc3RyaWRlIGFjY2VzcywgZm9yd2FyZCBvciBiYWNrd2FyZCwgc2hvdWxkIGJlIGluZGlzdGluZ3Vpc2hhYmxlIChhdCBsZWFzdCBvblxuICAgICBhbiBpbnRlbCBpNykuICBTbywgd2UgZG9uJ3QgZG8gYSBjaGVjayBmb3IgW3BoeXNfZXF1YWwgc3JjIGRzdF0gYW5kIGFsd2F5cyBsb29wIHVwIGluXG4gICAgIHRoYXQgY2FzZS4gKilcbiAgaWYgZHN0X3BvcyA8IHNyY19wb3NcbiAgdGhlblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IGRzdCAoZHN0X3BvcyArIGkpICh1bnNhZmVfZ2V0IHNyYyAoc3JjX3BvcyArIGkpKVxuICAgIGRvbmVcbiAgZWxzZVxuICAgIGZvciBpID0gbGVuIC0gMSBkb3dudG8gMCBkb1xuICAgICAgdW5zYWZlX3NldCBkc3QgKGRzdF9wb3MgKyBpKSAodW5zYWZlX2dldCBzcmMgKHNyY19wb3MgKyBpKSlcbiAgICBkb25lXG47O1xuXG5pbmNsdWRlIEJsaXQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBjcmVhdGUgPSBjcmVhdGVfemVyb1xuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBjb3B5IHNyYyA9XG4gIGxldCBkc3QgPSBjcmVhdGVfemVybyB+bGVuOihsZW5ndGggc3JjKSBpblxuICBibGl0byB+c3JjIH5kc3QgKCk7XG4gIGRzdFxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBXQVJOSU5HOlxuICAgV2UgdXNlIG5vbi1tZW1vcnktc2FmZSB0aGluZ3MgdGhyb3VnaG91dCB0aGUgW1RydXN0ZWRdIG1vZHVsZS5cbiAgIE1vc3Qgb2YgaXQgaXMgb25seSBzYWZlIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIHR5cGUgc2lnbmF0dXJlIChlLmcuIGV4cG9zaW5nXG4gICBbdmFsIGNvcHkgOiAnYSB0IC0+ICdiIHRdIHdvdWxkIGJlIGEgYmlnIG1pc3Rha2UpLiAqKVxubW9kdWxlIFRydXN0ZWQgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGVtcHR5IDogJ2EgdFxuICB2YWwgdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIDogbGVuOmludCAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfb2JqX2FycmF5IDogbGVuOmludCAtPiAnYSB0XG4gIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHNpbmdsZXRvbiA6ICdhIC0+ICdhIHRcbiAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBzZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBzd2FwIDogXyB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgdW5zYWZlX2dldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCB1bnNhZmVfc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X2ludCA6ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHNldF93aXRoX2NhbWxfbW9kaWZ5IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbGVuZ3RoIDogKCdhIHRbQGxvY2FsXSkgLT4gaW50XG4gIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSB0LCAnYSB0KSBCbGl0LmJsaXRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIHVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIDogXyB0IC0+IGludCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gT2JqX2FycmF5LnRcblxuICBsZXQgZW1wdHkgPSBPYmpfYXJyYXkuZW1wdHlcbiAgbGV0IHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuID0gT2JqX2FycmF5LmNyZWF0ZV96ZXJvIH5sZW5cbiAgbGV0IGNyZWF0ZV9vYmpfYXJyYXkgfmxlbiA9IE9ial9hcnJheS5jcmVhdGVfemVybyB+bGVuXG4gIGxldCBjcmVhdGUgfmxlbiB4ID0gT2JqX2FycmF5LmNyZWF0ZSB+bGVuIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgbGV0IHNpbmdsZXRvbiB4ID0gT2JqX2FycmF5LnNpbmdsZXRvbiAoU3RkbGliLk9iai5yZXByIHgpXG4gIGxldCBzd2FwIHQgaSBqID0gT2JqX2FycmF5LnN3YXAgdCBpIGpcbiAgbGV0IGdldCBhcnIgaSA9IFN0ZGxpYi5PYmoub2JqIChPYmpfYXJyYXkuZ2V0IGFyciBpKVxuICBsZXQgc2V0IGFyciBpIHggPSBPYmpfYXJyYXkuc2V0IGFyciBpIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgbGV0IHVuc2FmZV9nZXQgYXJyIGkgPSBTdGRsaWIuT2JqLm9iaiAoT2JqX2FycmF5LnVuc2FmZV9nZXQgYXJyIGkpXG4gIGxldCB1bnNhZmVfc2V0IGFyciBpIHggPSBPYmpfYXJyYXkudW5zYWZlX3NldCBhcnIgaSAoU3RkbGliLk9iai5yZXByIHgpXG4gIGxldCB1bnNhZmVfc2V0X2ludCBhcnIgaSB4ID0gT2JqX2FycmF5LnVuc2FmZV9zZXRfaW50IGFyciBpIHhcblxuICBsZXQgdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSB4XG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgbGVuZ3RoID0gT2JqX2FycmF5Lmxlbmd0aFxuICBsZXQgdW5zYWZlX2JsaXQgPSBPYmpfYXJyYXkudW5zYWZlX2JsaXRcbiAgbGV0IGNvcHkgPSBPYmpfYXJyYXkuY29weVxuXG4gIGxldCB1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayB0IGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSAoU3RkbGliLk9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKFN0ZGxpYi5PYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCBzZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeCA9IE9ial9hcnJheS5zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKFN0ZGxpYi5PYmoucmVwciB4KVxuICBsZXQgdW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgPSBPYmpfYXJyYXkudW5zYWZlX2NsZWFyX2lmX3BvaW50ZXJcbmVuZFxuXG5pbmNsdWRlIFRydXN0ZWRcblxubGV0IGludmFyaWFudCB0ID1cbiAgYXNzZXJ0IChTdGRsaWIuT2JqLnRhZyAoU3RkbGliLk9iai5yZXByIHQpIDw+IFN0ZGxpYi5PYmouZG91YmxlX2FycmF5X3RhZylcbjs7XG5cbmxldCBpbml0IGwgfmYgPVxuICBpZiBsIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiVW5pZm9ybV9hcnJheS5pbml0XCJcbiAgZWxzZSAoXG4gICAgbGV0IHJlcyA9IHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuOmwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICBkb25lO1xuICAgIHJlcylcbjs7XG5cbmxldCBvZl9hcnJheSBhcnIgPSBpbml0IH5mOihBcnJheS51bnNhZmVfZ2V0IGFycikgKEFycmF5Lmxlbmd0aCBhcnIpIFtAbm9udGFpbF1cbmxldCBtYXAgYSB+ZiA9IGluaXQgfmY6KGZ1biBpIC0+IGYgKHVuc2FmZV9nZXQgYSBpKSkgKGxlbmd0aCBhKSBbQG5vbnRhaWxdXG5sZXQgbWFwaSBhIH5mID0gaW5pdCB+ZjooZnVuIGkgLT4gZiBpICh1bnNhZmVfZ2V0IGEgaSkpIChsZW5ndGggYSkgW0Bub250YWlsXVxuXG5sZXQgaXRlciBhIH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIGYgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lXG47O1xuXG5sZXQgaXRlcmkgYSB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lXG47O1xuXG5sZXQgZm9sZGkgYSB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgYWNjIDo9IGYgaSAhYWNjICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIWFjY1xuOztcblxubGV0IHRvX2xpc3QgdCA9IExpc3QuaW5pdCB+ZjooZ2V0IHQpIChsZW5ndGggdClcblxubGV0IG9mX2xpc3QgbCA9XG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gIGxldCByZXMgPSB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgfmxlbiBpblxuICBMaXN0Lml0ZXJpIGwgfmY6KGZ1biBpIHggLT4gc2V0IHJlcyBpIHgpO1xuICByZXNcbjs7XG5cbigqIEl0IGlzIG5vdCBzYWZlIGZvciBbdG9fYXJyYXldIHRvIGJlIHRoZSBpZGVudGl0eSBmdW5jdGlvbiBiZWNhdXNlIHdlIGhhdmUgY29kZSB0aGF0XG4gICByZWxpZXMgb24gW2Zsb2F0IGFycmF5XXMgYmVpbmcgdW5ib3hlZCwgZm9yIGV4YW1wbGUgaW4gW2Jpbl93cml0ZV9hcnJheV0uICopXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB0IH5mIGkgPVxuICAgIGlmIGkgPCAwIHRoZW4gZmFsc2UgZWxzZSBmICh1bnNhZmVfZ2V0IHQgaSkgfHwgbG9vcCB0IH5mIChpIC0gMSlcbiAgaW5cbiAgbG9vcCB0IH5mIChsZW5ndGggdCAtIDEpXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgaSA9IGlmIGkgPCAwIHRoZW4gdHJ1ZSBlbHNlIGYgKHVuc2FmZV9nZXQgdCBpKSAmJiBsb29wIHQgfmYgKGkgLSAxKSBpblxuICBsb29wIHQgfmYgKGxlbmd0aCB0IC0gMSlcbjs7XG5cbmxldCBtYXAyX2V4biB0MSB0MiB+ZiA9XG4gIGxldCBsZW4gPSBsZW5ndGggdDEgaW5cbiAgaWYgbGVuZ3RoIHQyIDw+IGxlbiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkubWFwMl9leG5cIjtcbiAgaW5pdCBsZW4gfmY6KGZ1biBpIC0+IGYgKHVuc2FmZV9nZXQgdDEgaSkgKHVuc2FmZV9nZXQgdDIgaSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBlbHQpIChncmFtbWFyIDogZWx0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGVsdCB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQXJyYXkudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmluY2x1ZGVcbiAgU2V4cGFibGUuT2Zfc2V4cGFibGUxXG4gICAgKEFycmF5KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX2FycmF5XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9hcnJheVxuICAgIGVuZClcblxuaW5jbHVkZSBCbGl0Lk1ha2UxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gdCA9XG4gICAgICBpZiBsZW4gPSAwXG4gICAgICB0aGVuIGVtcHR5XG4gICAgICBlbHNlIChcbiAgICAgICAgYXNzZXJ0IChsZW5ndGggdCA+IDApO1xuICAgICAgICBjcmVhdGUgfmxlbiAoZ2V0IHQgMCkpXG4gICAgOztcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCByID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmU7XG4gICFyXG47O1xuXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxuKCogVGhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgcHB4X2NvbXBhcmUgW2NvbXBhcmVfYXJyYXldIGJ1dCB1c2VzIG91ciBbdW5zYWZlX2dldF0gYW5kIFtsZW5ndGhdLiAqKVxubGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgYSBiID1cbiAgaWYgcGh5c19lcXVhbCBhIGJcbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIGxldCBsZW5fYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxlbl9iID0gbGVuZ3RoIGIgaW5cbiAgICBsZXQgcmV0ID0gY29tcGFyZSBsZW5fYSBsZW5fYiBpblxuICAgIGlmIHJldCA8PiAwXG4gICAgdGhlbiByZXRcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgaWYgaSA9IGxlbl9hXG4gICAgICAgIHRoZW4gMFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbCA9IHVuc2FmZV9nZXQgYSBpXG4gICAgICAgICAgYW5kIHIgPSB1bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgICAgIGxldCByZXMgPSBjb21wYXJlX2VsdCBsIHIgaW5cbiAgICAgICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGxvb3AgKGkgKyAxKSlcbiAgICAgIGluXG4gICAgICBsb29wIDApKVxuOztcblxubW9kdWxlIFNvcnQgPSBBcnJheS5Qcml2YXRlLlNvcnRlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldFxuICAgIGxldCBzZXQgPSB1bnNhZmVfc2V0XG4gIGVuZClcblxubGV0IHNvcnQgPSBTb3J0LnNvcnRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGNlaWwgPSBTdGRsaWIuY2VpbFxubGV0IGZsb29yID0gU3RkbGliLmZsb29yXG5sZXQgbW9kX2Zsb2F0ID0gU3RkbGliLm1vZF9mbG9hdFxubGV0IG1vZGYgPSBTdGRsaWIubW9kZlxubGV0IGZsb2F0X29mX3N0cmluZyA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdcbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0ID0gU3RkbGliLmZsb2F0X29mX3N0cmluZ19vcHRcbmxldCBuYW4gPSBTdGRsaWIubmFuXG5sZXQgaW5maW5pdHkgPSBTdGRsaWIuaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBTdGRsaWIubmVnX2luZmluaXR5XG5sZXQgbWF4X2Zpbml0ZV92YWx1ZSA9IFN0ZGxpYi5tYXhfZmxvYXRcbmxldCBlcHNpbG9uX2Zsb2F0ID0gU3RkbGliLmVwc2lsb25fZmxvYXRcbmxldCBjbGFzc2lmeV9mbG9hdCA9IFN0ZGxpYi5jbGFzc2lmeV9mbG9hdFxubGV0IGFic19mbG9hdCA9IFN0ZGxpYi5hYnNfZmxvYXRcbmxldCBpc19pbnRlZ2VyID0gU3RkbGliLkZsb2F0LmlzX2ludGVnZXJcbmxldCAoICoqICkgPSBTdGRsaWIuKCAqKiApXG5cbmxldCAoICUuICkgYSBiID1cbiAgKCogUmFpc2UgaW4gY2FzZSBvZiBhIG5lZ2F0aXZlIG1vZHVsdXMsIGFzIGRvZXMgSW50LiggJSApLiAqKVxuICBpZiBiIDwgMC5cbiAgdGhlbiBQcmludGYuaW52YWxpZF9hcmdmIFwiJWYgJSUgJWYgaW4gZmxvYXQwLm1sOiBtb2R1bHVzIHNob3VsZCBiZSBwb3NpdGl2ZVwiIGEgYiAoKTtcbiAgbGV0IG0gPSBTdGRsaWIubW9kX2Zsb2F0IGEgYiBpblxuICAoKiBQcm9kdWNlIGEgbm9uLW5lZ2F0aXZlIHJlc3VsdCBpbiBhbmFsb2d5IHdpdGggSW50LiggJSApLiAqKVxuICBpZiBtIDwgMC4gdGhlbiBtICsuIGIgZWxzZSBtXG47O1xuXG4oKiBUaGUgYml0cyBvZiBJTlJJQSdzIFtQZXJ2YXNpdmVzXSB0aGF0IHdlIGp1c3Qgd2FudCB0byBleHBvc2UgaW4gW0Zsb2F0XS4gTW9zdCBhcmVcbiAgIGFscmVhZHkgZGVwcmVjYXRlZCBpbiBbUGVydmFzaXZlc10sIGFuZCBldmVudHVhbGx5IGFsbCBvZiB0aGVtIHNob3VsZCBiZS4gKilcbmluY2x1ZGUgKFxuICBTdGRsaWIgOlxuICBzaWdcbiAgICBleHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcblxuICAgIGV4dGVybmFsIGxkZXhwXG4gICAgICA6ICAoZmxvYXRbQHVuYm94ZWRdKVxuICAgICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgICAgLT4gKGZsb2F0W0B1bmJveGVkXSlcbiAgICAgID0gXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIlxuICAgIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBhc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5oX2Zsb2F0XCIgXCJjYW1sX2FzaW5oXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICBlbmQpXG5cbigqIFdlIG5lZWQgdGhpcyBpbmRpcmVjdGlvbiBiZWNhdXNlIHRoZXNlIGFyZSBleHBvc2VkIGFzIFwidmFsXCIgaW5zdGVhZCBvZiBcImV4dGVybmFsXCIgKilcbmxldCBmcmV4cCA9IGZyZXhwXG5sZXQgbGRleHAgPSBsZGV4cFxubGV0IGlzX25hbiB4ID0gKHggOiBmbG9hdCkgPD4geFxuXG4oKiBBbiBvcmRlci1wcmVzZXJ2aW5nIGJpamVjdGlvbiBiZXR3ZWVuIGFsbCBmbG9hdHMgZXhjZXB0IGZvciBOYU5zLCBhbmQgOTkuOTUlIG9mXG4gICBpbnQ2NHMuXG5cbiAgIE5vdGUgd2UgZG9uJ3QgZGlzdGluZ3Vpc2ggMC4gYW5kIC0wLiBhcyBzZXBhcmF0ZSB2YWx1ZXMgaGVyZSwgdGhleSBib3RoIG1hcCB0byAwTCwgd2hpY2hcbiAgIG1hcHMgYmFjayB0byAwLlxuXG4gICBUaGlzIHNob3VsZCB3b3JrIGJvdGggb24gbGl0dGxlLWVuZGlhbiBhbmQgaGlnaC1lbmRpYW4gQ1BVcy4gIFdpa2lwZWRpYSBzYXlzOiBcIm9uXG4gICBtb2Rlcm4gc3RhbmRhcmQgY29tcHV0ZXJzIChpLmUuLCBpbXBsZW1lbnRpbmcgSUVFRSA3NTQpLCBvbmUgbWF5IGluIHByYWN0aWNlIHNhZmVseVxuICAgYXNzdW1lIHRoYXQgdGhlIGVuZGlhbm5lc3MgaXMgdGhlIHNhbWUgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYXMgZm9yIGludGVnZXJzXCJcbiAgIChodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VuZGlhbm5lc3MjRmxvYXRpbmctcG9pbnRfYW5kX2VuZGlhbm5lc3MpLlxuKilcbmxldCB0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB0ID1cbiAgaWYgaXNfbmFuIHRcbiAgdGhlbiBOb25lXG4gIGVsc2UgaWYgdCA9IDAuXG4gIHRoZW4gKCogYWxzbyBpbmNsdWRlcyAtMC4gKilcbiAgICBTb21lIDBMXG4gIGVsc2UgaWYgdCA+IDAuXG4gIHRoZW4gU29tZSAoU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgdClcbiAgZWxzZSBTb21lIChTdGRsaWIuSW50NjQubmVnIChTdGRsaWIuSW50NjQuYml0c19vZl9mbG9hdCAoLS50KSkpXG47O1xuXG5sZXQgdG9faW50NjRfcHJlc2VydmVfb3JkZXJfZXhuIHggPSBPcHRpb24udmFsdWVfZXhuICh0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB4KVxuXG5sZXQgb2ZfaW50NjRfcHJlc2VydmVfb3JkZXIgeCA9XG4gIGlmIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgeCAwTFxuICB0aGVuIFN0ZGxpYi5JbnQ2NC5mbG9hdF9vZl9iaXRzIHhcbiAgZWxzZSB+LS4oU3RkbGliLkludDY0LmZsb2F0X29mX2JpdHMgKFN0ZGxpYi5JbnQ2NC5uZWcgeCkpXG47O1xuXG5sZXQgb25lX3VscCBkaXIgdCA9XG4gIG1hdGNoIHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHQgd2l0aFxuICB8IE5vbmUgLT4gU3RkbGliLm5hblxuICB8IFNvbWUgeCAtPlxuICAgIG9mX2ludDY0X3ByZXNlcnZlX29yZGVyXG4gICAgICAoU3RkbGliLkludDY0LmFkZFxuICAgICAgICAgeFxuICAgICAgICAgKG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgfCBgVXAgLT4gMUxcbiAgICAgICAgICB8IGBEb3duIC0+IC0xTCkpXG47O1xuXG4oKiBbdXBwZXJfYm91bmRfZm9yX2ludF0gYW5kIFtsb3dlcl9ib3VuZF9mb3JfaW50XSBhcmUgZm9yIGNhbGN1bGF0aW5nIHRoZSBtYXgvbWluIGZsb2F0XG4gICB0aGF0IGZpdHMgaW4gYSBnaXZlbi1zaXplIGludGVnZXIgd2hlbiByb3VuZGVkIHRvd2FyZHMgMCAodXNpbmcgW2ludF9vZl9mbG9hdF0pLlxuXG4gICBtYXhfaW50L21pbl9pbnQgZGVwZW5kIG9uIFtudW1fYml0c10sIGUuZy4gKy8tIDJeMzAsICsvLSAyXjYyIGlmIDMxLWJpdCwgNjMtYml0XG4gICAocmVzcGVjdGl2ZWx5KSB3aGlsZSBmbG9hdCBpcyBJRUVFIHN0YW5kYXJkIGZvciBkb3VibGUgKDUyIHNpZ25pZmljYW50IGJpdHMpLlxuXG4gICBJbiBhbGwgY2FzZXMsIHdlIHdhbnQgdG8gZ3VhcmFudGVlIHRoYXRcbiAgIFtsb3dlcl9ib3VuZF9mb3JfaW50IDw9IHggPD0gdXBwZXJfYm91bmRfZm9yX2ludF1cbiAgIGlmZiBbaW50X29mX2Zsb2F0IHhdIGZpdHMgaW4gYW4gaW50IHdpdGggW251bV9iaXRzXSBiaXRzLlxuXG4gICBbMiAqKiAobnVtX2JpdHMgLSAxKV0gaXMgdGhlIGZpcnN0IGZsb2F0IGdyZWF0ZXIgdGhhdCBtYXhfaW50LCB3ZSB1c2UgdGhlIHByZWNlZGluZ1xuICAgZmxvYXQgYXMgdXBwZXIgYm91bmQuXG5cbiAgIFstICgyICoqIChudW1fYml0cyAtIDEpKV0gaXMgZXF1YWwgdG8gbWluX2ludC5cbiAgIEZvciBsb3dlciBib3VuZCB3ZSBsb29rIGZvciB0aGUgc21hbGxlc3QgZmxvYXQgW2ZdIHNhdGlzZnlpbmcgW2YgPiBtaW5faW50IC0gMV0gc28gdGhhdFxuICAgW2ZdIHJvdW5kcyB0b3dhcmQgemVybyB0byBbbWluX2ludF1cblxuICAgU28gaW4gcGFydGljdWxhciB3ZSB3aWxsIGhhdmU6XG4gICBbbG93ZXJfYm91bmRfZm9yX2ludCB4IDw9IC0gKDIgKiogKDEteCkpXVxuICAgW3VwcGVyX2JvdW5kX2Zvcl9pbnQgeCAgPCAgICAyICoqICgxLXgpIF1cbiopXG5sZXQgdXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0cyA9XG4gIGxldCBleHAgPSBTdGRsaWIuZmxvYXRfb2ZfaW50IChudW1fYml0cyAtIDEpIGluXG4gIG9uZV91bHAgYERvd24gKDIuICoqIGV4cClcbjs7XG5cbmxldCBpc194X21pbnVzX29uZV9leGFjdCB4ID1cbiAgKCogW3ggPSB4IC0uIDEuXSBkb2VzIG5vdCB3b3JrIHdpdGggeDg3IGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgYmFja2VuZCAod2hpY2ggaXMgdXNlZFxuICAgICBvbiAzMi1iaXQgb2NhbWwpIGJlY2F1c2Ugb2YgODAtYml0IHJlZ2lzdGVyIHByZWNpc2lvbiBvZiBpbnRlcm1lZGlhdGUgY29tcHV0YXRpb25zLlxuXG4gICAgIEFuIGFsdGVybmF0aXZlIHdheSBvZiBjb21wdXRpbmcgdGhpczogW3ggLS4gb25lX3VscCBgRG93biB4IDw9IDEuXSBpcyBhbHNvIHByb25lIHRvXG4gICAgIHRoZSBzYW1lIHByZWNpc2lvbiBpc3N1ZXM6IHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSBbeF0gaXMgNjQtYml0LlxuICAqKVxuICBsZXQgb3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgbm90IChTdGRsaWIuSW50NjQuYml0c19vZl9mbG9hdCB4ID0gU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgKHggLS4gMS4pKVxuOztcblxubGV0IGxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHMgPVxuICBsZXQgZXhwID0gU3RkbGliLmZsb2F0X29mX2ludCAobnVtX2JpdHMgLSAxKSBpblxuICBsZXQgbWluX2ludF9hc19mbG9hdCA9IH4tLigyLiAqKiBleHApIGluXG4gIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgbnVtX2JpdHMgLSAxIDwgNTMgKCogNTMgPSAjYml0cyBpbiB0aGUgZmxvYXQncyBtYW50aXNzYSB3aXRoIHNpZ24gaW5jbHVkZWQgKilcbiAgdGhlbiAoXG4gICAgKCogVGhlIHNtYWxsZXN0IGZsb2F0IHRoYXQgcm91bmRzIHRvd2FyZHMgemVybyB0byBbbWluX2ludF0gaXNcbiAgICAgICBbbWluX2ludCAtIDEgKyBlcHNpbG9uXSAqKVxuICAgIGFzc2VydCAoaXNfeF9taW51c19vbmVfZXhhY3QgbWluX2ludF9hc19mbG9hdCk7XG4gICAgb25lX3VscCBgVXAgKG1pbl9pbnRfYXNfZmxvYXQgLS4gMS4pKVxuICBlbHNlIChcbiAgICAoKiBbbWluX2ludF9hc19mbG9hdF0gaXMgYWxyZWFkeSB0aGUgc21hbGxlc3QgZmxvYXQgW2ZdIHNhdGlzZnlpbmcgW2YgPiBtaW5faW50IC0gMV0uICopXG4gICAgYXNzZXJ0IChub3QgKGlzX3hfbWludXNfb25lX2V4YWN0IG1pbl9pbnRfYXNfZmxvYXQpKTtcbiAgICBtaW5faW50X2FzX2Zsb2F0KVxuOztcblxuKCogRmxvYXQgY2xhbXBpbmcgaXMgc3RydWN0dXJlZCBzbGlnaHRseSBkaWZmZXJlbnRseSB0aGFuIGNsYW1waW5nIGZvciBvdGhlciB0eXBlcywgc29cbiAgIHRoYXQgd2UgZ2V0IHRoZSBiZWhhdmlvciBvZiBbY2xhbXBfdW5jaGVja2VkIG5hbiB+bWluIH5tYXggPSBuYW5dIChmb3IgYW55IFttaW5dIGFuZFxuICAgW21heF0pIGZvciBmcmVlLlxuKilcbmxldCBjbGFtcF91bmNoZWNrZWQgKHQgOiBmbG9hdCkgfm1pbiB+bWF4ID1cbiAgaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIG1heCA8IHQgdGhlbiBtYXggZWxzZSB0XG47O1xuXG5sZXQgYm94ID1cbiAgKCogUHJldmVudCBwb3RlbnRpYWwgY29uc3RhbnQgZm9sZGluZyBvZiBbKy4gMC5dIGluIHRoZSBuZWFyIG9jYW1sb3B0IGZ1dHVyZS4gKilcbiAgbGV0IHggPSBTeXMwLm9wYXF1ZV9pZGVudGl0eSAwLiBpblxuICBmdW4gZiAtPiBmICsuIHhcbjs7XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuaW5jbHVkZSBDaGFyMFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2NoYXIgOiB0IC0+IHQgLT4gaW50KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfY2hhclxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfY2hhciBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2NoYXIgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuICBsZXQgdF9vZl9zZXhwID0gKGNoYXJfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfY2hhciA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBjaGFyX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gU3RyaW5nLm1ha2UgMSB0XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBtYXRjaCBTdHJpbmcubGVuZ3RoIHMgd2l0aFxuICAgIHwgMSAtPiBzLlswXVxuICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJDaGFyLm9mX3N0cmluZzogJVNcIiBzICgpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkNoYXJcIlxuICBlbmQpXG5cbmxldCBwcCBmbXQgYyA9IFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBmbXQgXCIlQ1wiIGNcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgQ2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBhbGwgPSBBcnJheS5pbml0IDI1NiB+Zjp1bnNhZmVfb2ZfaW50IHw+IEFycmF5LnRvX2xpc3RcblxubGV0IGlzX2xvd2VyY2FzZSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3VwcGVyY2FzZSA9IGZ1bmN0aW9uXG4gIHwgJ0EnIC4uICdaJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3ByaW50ID0gZnVuY3Rpb25cbiAgfCAnICcgLi4gJ34nIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfd2hpdGVzcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXDAxMScgKCogdmVydGljYWwgdGFiICopIHwgJ1xcMDEyJyAoKiBmb3JtIGZlZWQgKikgfCAnXFxyJyB8ICcgJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfYWxwaGEgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG4oKiBXcml0aW5nIHRoZXNlIG91dCwgaW5zdGVhZCBvZiBjYWxsaW5nIFtpc19hbHBoYV0gYW5kIFtpc19kaWdpdF0sIHJlZHVjZXNcbiAgIHJ1bnRpbWUgYnkgYXBwcm94LiAzMCUgKilcbmxldCBpc19hbHBoYW51bSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgZ2V0X2RpZ2l0X3Vuc2FmZSB0ID0gdG9faW50IHQgLSB0b19pbnQgJzAnXG5cbmxldCBnZXRfZGlnaXRfZXhuIHQgPVxuICBpZiBpc19kaWdpdCB0XG4gIHRoZW4gZ2V0X2RpZ2l0X3Vuc2FmZSB0XG4gIGVsc2UgZmFpbHdpdGhmIFwiQ2hhci5nZXRfZGlnaXRfZXhuICVDOiBub3QgYSBkaWdpdFwiIHQgKClcbjs7XG5cbmxldCBnZXRfZGlnaXQgdCA9IGlmIGlzX2RpZ2l0IHQgdGhlbiBTb21lIChnZXRfZGlnaXRfdW5zYWZlIHQpIGVsc2UgTm9uZVxuXG5sZXQgaXNfaGV4X2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19oZXhfZGlnaXRfbG93ZXIgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfaGV4X2RpZ2l0X3VwcGVyID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGdldF9oZXhfZGlnaXRfZXhuID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJzAnXG4gIHwgJ2EnIC4uICdmJyBhcyB0IC0+IHRvX2ludCB0IC0gdG9faW50ICdhJyArIDEwXG4gIHwgJ0EnIC4uICdGJyBhcyB0IC0+IHRvX2ludCB0IC0gdG9faW50ICdBJyArIDEwXG4gIHwgdCAtPlxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiQ2hhci5nZXRfaGV4X2RpZ2l0X2V4bjogbm90IGEgaGV4YWRlY2ltYWwgZGlnaXRcIlxuICAgICAgICAgWyBcImNoYXJcIiwgc2V4cF9vZl90IHQgXSlcbjs7XG5cbmxldCBnZXRfaGV4X2RpZ2l0IHQgPSBpZiBpc19oZXhfZGlnaXQgdCB0aGVuIFNvbWUgKGdldF9oZXhfZGlnaXRfZXhuIHQpIGVsc2UgTm9uZVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBsZXQgKCA+PSApID0gKCA+PSApXG4gIGxldCAoIDw9ICkgPSAoIDw9IClcbiAgbGV0ICggPSApID0gKCA9IClcbiAgbGV0ICggPiApID0gKCA+IClcbiAgbGV0ICggPCApID0gKCA8IClcbiAgbGV0ICggPD4gKSA9ICggPD4gKVxuZW5kXG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCB0X29mX3NleHAgPSAoY2hhcl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2NoYXIgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBjaGFyX3NleHBfZ3JhbW1hclxuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjb21wYXJlIGMxIGMyID0gY29tcGFyZSAobG93ZXJjYXNlIGMxKSAobG93ZXJjYXNlIGMyKVxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2NoYXIgc3RhdGUgKGxvd2VyY2FzZSB0KVxuICAgIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQ2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydDAuSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIEJ5dGVzID0gQnl0ZXMwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuXG4oKiBDb25zdHJ1Y3QgYSBieXRlIHN0cmluZyBvZiBsZW5ndGggMjU2LCBtYXBwaW5nIGV2ZXJ5IGlucHV0IGNoYXJhY3RlciBjb2RlIHRvXG4gICBpdHMgY29ycmVzcG9uZGluZyBvdXRwdXQgY2hhcmFjdGVyLlxuXG4gICBCZW5jaG1hcmtzIGluZGljYXRlIHRoYXQgdGhpcyBpcyBmYXN0ZXIgdGhhbiB0aGUgbGFtYmRhIChpbmNsdWRpbmcgY29zdCBvZlxuICAgdGhpcyBmdW5jdGlvbiksIGV2ZW4gaWYgdGFyZ2V0L3JlcGxhY2VtZW50IGFyZSBqdXN0IDIgY2hhcmFjdGVycyBlYWNoLlxuXG4gICBSZXR1cm4gTm9uZSBpZiB0aGUgdHJhbnNsYXRpb24gbWFwIGlzIGVxdWl2YWxlbnQgdG8ganVzdCB0aGUgaWRlbnRpdHkuICopXG5sZXQgdHJfY3JlYXRlX21hcCB+dGFyZ2V0IH5yZXBsYWNlbWVudCA9XG4gIGxldCB0cl9tYXAgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGZvciBpID0gMCB0byAyNTUgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHRyX21hcCBpIChDaGFyLm9mX2ludF9leG4gaSlcbiAgZG9uZTtcbiAgZm9yIGkgPSAwIHRvIG1pbiAoU3RyaW5nLmxlbmd0aCB0YXJnZXQpIChTdHJpbmcubGVuZ3RoIHJlcGxhY2VtZW50KSAtIDEgZG9cbiAgICBsZXQgaW5kZXggPSBDaGFyLnRvX2ludCAoU3RyaW5nLnVuc2FmZV9nZXQgdGFyZ2V0IGkpIGluXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0cl9tYXAgaW5kZXggKFN0cmluZy51bnNhZmVfZ2V0IHJlcGxhY2VtZW50IGkpXG4gIGRvbmU7XG4gIGxldCBsYXN0X3JlcGxhY2VtZW50ID0gU3RyaW5nLnVuc2FmZV9nZXQgcmVwbGFjZW1lbnQgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQgLSAxKSBpblxuICBmb3JcbiAgICBpID0gbWluIChTdHJpbmcubGVuZ3RoIHRhcmdldCkgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQpIHRvIFN0cmluZy5sZW5ndGggdGFyZ2V0IC0gMVxuICBkb1xuICAgIGxldCBpbmRleCA9IENoYXIudG9faW50IChTdHJpbmcudW5zYWZlX2dldCB0YXJnZXQgaSkgaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHRyX21hcCBpbmRleCBsYXN0X3JlcGxhY2VtZW50XG4gIGRvbmU7XG4gIGxldCByZWMgaGF2ZV9hbnlfZGlmZmVyZW50IHRyX21hcCBpID1cbiAgICBpZiBpID0gMjU2XG4gICAgdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgQ2hhci4oIDw+ICkgKEJ5dGVzMC51bnNhZmVfZ2V0IHRyX21hcCBpKSAoQ2hhci5vZl9pbnRfZXhuIGkpXG4gICAgdGhlbiB0cnVlXG4gICAgZWxzZSBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIChpICsgMSlcbiAgaW5cbiAgKCogcXVpY2sgY2hlY2sgb24gdGhlIGZpcnN0IHRhcmdldCBjaGFyYWN0ZXIgd2hpY2ggd2lsbCA5OSUgYmUgdHJ1ZSAqKVxuICBsZXQgZmlyc3RfdGFyZ2V0ID0gdGFyZ2V0LlswXSBpblxuICBpZiBDaGFyLiggPD4gKSAoQnl0ZXMwLnVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBmaXJzdF90YXJnZXQpKSBmaXJzdF90YXJnZXRcbiAgfHwgaGF2ZV9hbnlfZGlmZmVyZW50IHRyX21hcCAwXG4gIHRoZW4gU29tZSAoQnl0ZXMwLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dHJfbWFwKVxuICBlbHNlIE5vbmVcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2FcblxubGV0IHN0YWdlID0gRm4uaWRcbmxldCB1bnN0YWdlID0gRm4uaWRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbm1vZHVsZSBJbnQgPSBJbnQwXG5pbmNsdWRlIFN0cmluZzBcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xubGV0IHN0YWdlID0gU3RhZ2VkLnN0YWdlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfc3RyaW5nIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX3N0cmluZ1xuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfc3RyaW5nIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChzdHJpbmdfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2Zfc3RyaW5nIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHN0cmluZ19zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxudHlwZSBlbHQgPSBjaGFyXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5cbigqIFRoaXMgaXMgY29waWVkL2FkYXB0ZWQgZnJvbSAnYmxpdC5tbCcuXG4gICBbc3ViXSwgW3N1Ym9dIGNvdWxkIGJlIGltcGxlbWVudGVkIHVzaW5nIFtCbGl0Lk1ha2UoQnl0ZXMpXSBwbHVzIHVuc2FmZSBjYXN0cyB0by9mcm9tXG4gICBzdHJpbmcgYnV0IHdlcmUgaW5saW5lZCBoZXJlIHRvIGF2b2lkIHVzaW5nIFtCeXRlcy51bnNhZmVfb2Zfc3RyaW5nXSBhcyBtdWNoIGFzIHBvc3NpYmxlLlxuKilcbmxldCB1bnNhZmVfc3ViIHNyYyB+cG9zIH5sZW4gPVxuICBpZiBsZW4gPSAwXG4gIHRoZW4gXCJcIlxuICBlbHNlIChcbiAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOnBvcyB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbjs7XG5cbmxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gIGlmIHBvcyA9IDAgJiYgbGVuID0gU3RyaW5nLmxlbmd0aCBzcmNcbiAgdGhlbiBzcmNcbiAgZWxzZSAoXG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHNyYyk7XG4gICAgdW5zYWZlX3N1YiBzcmMgfnBvcyB+bGVuKVxuOztcblxubGV0IHN1Ym8gPyhwb3MgPSAwKSA/bGVuIHNyYyA9XG4gIHN1YlxuICAgIHNyY1xuICAgIH5wb3NcbiAgICB+bGVuOlxuICAgICAgKG1hdGNoIGxlbiB3aXRoXG4gICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgIHwgTm9uZSAtPiBsZW5ndGggc3JjIC0gcG9zKVxuOztcblxubGV0IHJlYyBjb250YWluc191bnNhZmUgdCB+cG9zIH5lbmRfIGNoYXIgPVxuICBwb3MgPCBlbmRfXG4gICYmIChDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHQgcG9zKSBjaGFyIHx8IGNvbnRhaW5zX3Vuc2FmZSB0IH5wb3M6KHBvcyArIDEpIH5lbmRfIGNoYXIpXG47O1xuXG5sZXQgY29udGFpbnMgPyhwb3MgPSAwKSA/bGVuIHQgY2hhciA9XG4gIGxldCB0b3RhbF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgbGV0IGxlbiA9IE9wdGlvbi52YWx1ZSBsZW4gfmRlZmF1bHQ6KHRvdGFsX2xlbmd0aCAtIHBvcykgaW5cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgY29udGFpbnNfdW5zYWZlIHQgfnBvcyB+ZW5kXzoocG9zICsgbGVuKSBjaGFyXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgcmVjIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyID1cbiAgaWYgcG9zID49IGxlblxuICB0aGVuIHJhaXNlIG5vdF9mb3VuZFxuICBlbHNlIGlmIENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgc3RyaW5nIHBvcykgY2hhclxuICB0aGVuIHBvc1xuICBlbHNlIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zOihwb3MgKyAxKSB+bGVuIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IGluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciA9XG4gIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvczowIH5sZW46KGxlbmd0aCB0KSB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCBpbmRleF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcuaW5kZXhfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGluZGV4X2V4biB0IGNoYXIgPSBpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBpbmRleF9leG5cbjs7XG5cbmxldCBpbmRleF9mcm9tX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5pbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBwb3MgPCAwIHx8IHBvcyA+IGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9leG5cIlxuICAgIGVsc2UgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgaW5kZXhfZnJvbV9leG5cbjs7XG5cbmxldCByZWMgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyID1cbiAgaWYgcG9zIDwgMFxuICB0aGVuIHJhaXNlIG5vdF9mb3VuZFxuICBlbHNlIGlmIENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgc3RyaW5nIHBvcykgY2hhclxuICB0aGVuIHBvc1xuICBlbHNlIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvczoocG9zIC0gMSkgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCByaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3M6KGxlbiAtIDEpIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgcmluZGV4X2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yaW5kZXhfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJpbmRleF9leG4gdCBjaGFyID0gcmluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJpbmRleF9leG5cbjs7XG5cbmxldCByaW5kZXhfZnJvbV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcucmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBwb3MgPCAtMSB8fCBwb3MgPj0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9leG5cIlxuICAgIGVsc2UgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhclxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJpbmRleF9mcm9tX2V4blxuOztcblxubGV0IGluZGV4IHQgY2hhciA9XG4gIHRyeSBTb21lIChpbmRleF9leG4gdCBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJpbmRleCB0IGNoYXIgPVxuICB0cnkgU29tZSAocmluZGV4X2V4biB0IGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgaW5kZXhfZnJvbSB0IHBvcyBjaGFyID1cbiAgdHJ5IFNvbWUgKGluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmluZGV4X2Zyb20gdCBwb3MgY2hhciA9XG4gIHRyeSBTb21lIChyaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbm1vZHVsZSBTZWFyY2hfcGF0dGVybjAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHBhdHRlcm4gOiBzdHJpbmdcbiAgICA7IGNhc2Vfc2Vuc2l0aXZlIDogYm9vbFxuICAgIDsga21wX2FycmF5IDogaW50IGFycmF5XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5ID0gXyB9IDogU2V4cC50ID1cbiAgICBMaXN0XG4gICAgICBbIExpc3QgWyBBdG9tIFwicGF0dGVyblwiOyBzZXhwX29mX3N0cmluZyBwYXR0ZXJuIF1cbiAgICAgIDsgTGlzdCBbIEF0b20gXCJjYXNlX3NlbnNpdGl2ZVwiOyBzZXhwX29mX2Jvb2wgY2FzZV9zZW5zaXRpdmUgXVxuICAgICAgXVxuICA7O1xuXG4gIGxldCBwYXR0ZXJuIHQgPSB0LnBhdHRlcm5cbiAgbGV0IGNhc2Vfc2Vuc2l0aXZlIHQgPSB0LmNhc2Vfc2Vuc2l0aXZlXG5cbiAgKCogRmluZCBtYXggbnVtYmVyIG9mIG1hdGNoZWQgY2hhcmFjdGVycyBhdCBbbmV4dF90ZXh0X2NoYXJdLCBnaXZlbiB0aGUgY3VycmVudFxuICAgICBbbWF0Y2hlZF9jaGFyc10uIFRyeSB0byBleHRlbmQgdGhlIGN1cnJlbnQgbWF0Y2gsIGlmIGNoYXJzIGRvbid0IG1hdGNoLCB0cnkgdG8gbWF0Y2hcbiAgICAgZmV3ZXIgY2hhcnMuIElmIGNoYXJzIG1hdGNoIHRoZW4gZXh0ZW5kIHRoZSBtYXRjaC4gKilcbiAgbGV0IGttcF9pbnRlcm5hbF9sb29wIH5tYXRjaGVkX2NoYXJzIH5uZXh0X3RleHRfY2hhciB+cGF0dGVybiB+a21wX2FycmF5IH5jaGFyX2VxdWFsID1cbiAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiBtYXRjaGVkX2NoYXJzIGluXG4gICAgd2hpbGVcbiAgICAgICFtYXRjaGVkX2NoYXJzID4gMFxuICAgICAgJiYgbm90IChjaGFyX2VxdWFsIG5leHRfdGV4dF9jaGFyICh1bnNhZmVfZ2V0IHBhdHRlcm4gIW1hdGNoZWRfY2hhcnMpKVxuICAgIGRvXG4gICAgICBtYXRjaGVkX2NoYXJzIDo9IEFycmF5LnVuc2FmZV9nZXQga21wX2FycmF5ICghbWF0Y2hlZF9jaGFycyAtIDEpXG4gICAgZG9uZTtcbiAgICBpZiBjaGFyX2VxdWFsIG5leHRfdGV4dF9jaGFyICh1bnNhZmVfZ2V0IHBhdHRlcm4gIW1hdGNoZWRfY2hhcnMpXG4gICAgdGhlbiBtYXRjaGVkX2NoYXJzIDo9ICFtYXRjaGVkX2NoYXJzICsgMTtcbiAgICAhbWF0Y2hlZF9jaGFyc1xuICA7O1xuXG4gIGxldCBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgPVxuICAgIG1hdGNoIGNhc2Vfc2Vuc2l0aXZlIHdpdGhcbiAgICB8IHRydWUgLT4gQ2hhci5lcXVhbFxuICAgIHwgZmFsc2UgLT4gQ2hhci5DYXNlbGVzcy5lcXVhbFxuICA7O1xuXG4gICgqIENsYXNzaWMgS01QIHByZS1wcm9jZXNzaW5nIG9mIHRoZSBwYXR0ZXJuOiBidWlsZCB0aGUgaW50IGFycmF5LCB3aGljaCwgZm9yIGVhY2ggaSxcbiAgICAgY29udGFpbnMgdGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBub24tdHJpdmlhbCBwcmVmaXggb2YgcyB3aGljaCBpcyBlcXVhbCB0byBhIHN1ZmZpeFxuICAgICBlbmRpbmcgYXQgcy5baV0gKilcbiAgbGV0IGNyZWF0ZSBwYXR0ZXJuIH5jYXNlX3NlbnNpdGl2ZSA9XG4gICAgbGV0IG4gPSBsZW5ndGggcGF0dGVybiBpblxuICAgIGxldCBrbXBfYXJyYXkgPSBBcnJheS5jcmVhdGUgfmxlbjpuICgtMSkgaW5cbiAgICBpZiBuID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IGNoYXJfZXF1YWwgPSBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgaW5cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQga21wX2FycmF5IDAgMDtcbiAgICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIDAgaW5cbiAgICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgIDo9IGttcF9pbnRlcm5hbF9sb29wXG4gICAgICAgICAgICAgfm1hdGNoZWRfY2hhcnM6IW1hdGNoZWRfY2hhcnNcbiAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXI6KHVuc2FmZV9nZXQgcGF0dGVybiBpKVxuICAgICAgICAgICAgIH5wYXR0ZXJuXG4gICAgICAgICAgICAgfmttcF9hcnJheVxuICAgICAgICAgICAgIH5jaGFyX2VxdWFsO1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IGttcF9hcnJheSBpICFtYXRjaGVkX2NoYXJzXG4gICAgICBkb25lKTtcbiAgICB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgfVxuICA7O1xuXG4gICgqIENsYXNzaWMgS01QOiB1c2UgdGhlIHByZS1wcm9jZXNzZWQgcGF0dGVybiB0byBvcHRpbWl6ZSBsb29rLWJlaGluZHMgb24gbm9uLW1hdGNoZXMuXG4gICAgIFdlIHJldHVybiBpbnQgdG8gYXZvaWQgYWxsb2NhdGlvbiBpbiBbaW5kZXhfZXhuXS4gLTEgbWVhbnMgbm8gbWF0Y2guICopXG4gIGxldCBpbmRleF9pbnRlcm5hbCA/KHBvcyA9IDApIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9IH5pbl86dGV4dCA9XG4gICAgaWYgcG9zIDwgMCB8fCBwb3MgPiBsZW5ndGggdGV4dCAtIGxlbmd0aCBwYXR0ZXJuXG4gICAgdGhlbiAtMVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNoYXJfZXF1YWwgPSBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgaW5cbiAgICAgIGxldCBqID0gcmVmIHBvcyBpblxuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgbGV0IGsgPSBsZW5ndGggcGF0dGVybiBpblxuICAgICAgbGV0IG4gPSBsZW5ndGggdGV4dCBpblxuICAgICAgd2hpbGUgIWogPCBuICYmICFtYXRjaGVkX2NoYXJzIDwgayBkb1xuICAgICAgICBsZXQgbmV4dF90ZXh0X2NoYXIgPSB1bnNhZmVfZ2V0IHRleHQgIWogaW5cbiAgICAgICAgbWF0Y2hlZF9jaGFyc1xuICAgICAgICA6PSBrbXBfaW50ZXJuYWxfbG9vcFxuICAgICAgICAgICAgIH5tYXRjaGVkX2NoYXJzOiFtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgICAgfm5leHRfdGV4dF9jaGFyXG4gICAgICAgICAgICAgfnBhdHRlcm5cbiAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgfmNoYXJfZXF1YWw7XG4gICAgICAgIGogOj0gIWogKyAxXG4gICAgICBkb25lO1xuICAgICAgaWYgIW1hdGNoZWRfY2hhcnMgPSBrIHRoZW4gIWogLSBrIGVsc2UgLTEpXG4gIDs7XG5cbiAgbGV0IG1hdGNoZXMgdCBzdHIgPSBpbmRleF9pbnRlcm5hbCB0IH5pbl86c3RyID49IDBcblxuICBsZXQgaW5kZXggP3BvcyB0IH5pbl8gPVxuICAgIGxldCBwID0gaW5kZXhfaW50ZXJuYWwgP3BvcyB0IH5pbl8gaW5cbiAgICBpZiBwIDwgMCB0aGVuIE5vbmUgZWxzZSBTb21lIHBcbiAgOztcblxuICBsZXQgaW5kZXhfZXhuID9wb3MgdCB+aW5fID1cbiAgICBsZXQgcCA9IGluZGV4X2ludGVybmFsID9wb3MgdCB+aW5fIGluXG4gICAgaWYgcCA+PSAwXG4gICAgdGhlbiBwXG4gICAgZWxzZVxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiU3Vic3RyaW5nIG5vdCBmb3VuZFwiIFsgXCJzdWJzdHJpbmdcIiwgc2V4cF9vZl9zdHJpbmcgdC5wYXR0ZXJuIF0pXG4gIDs7XG5cbiAgbGV0IGluZGV4X2FsbCB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgfSB+bWF5X292ZXJsYXAgfmluXzp0ZXh0ID1cbiAgICBpZiBsZW5ndGggcGF0dGVybiA9IDBcbiAgICB0aGVuIExpc3QuaW5pdCAoMSArIGxlbmd0aCB0ZXh0KSB+ZjpGbi5pZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNoYXJfZXF1YWwgPSBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgaW5cbiAgICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIDAgaW5cbiAgICAgIGxldCBrID0gbGVuZ3RoIHBhdHRlcm4gaW5cbiAgICAgIGxldCBuID0gbGVuZ3RoIHRleHQgaW5cbiAgICAgIGxldCBmb3VuZCA9IHJlZiBbXSBpblxuICAgICAgZm9yIGogPSAwIHRvIG4gZG9cbiAgICAgICAgaWYgIW1hdGNoZWRfY2hhcnMgPSBrXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGZvdW5kIDo9IChqIC0gaykgOjogIWZvdW5kO1xuICAgICAgICAgICgqIHdlIGp1c3QgZm91bmQgYSBtYXRjaCBpbiB0aGUgcHJldmlvdXMgaXRlcmF0aW9uICopXG4gICAgICAgICAgbWF0Y2ggbWF5X292ZXJsYXAgd2l0aFxuICAgICAgICAgIHwgdHJ1ZSAtPiBtYXRjaGVkX2NoYXJzIDo9IEFycmF5LnVuc2FmZV9nZXQga21wX2FycmF5IChrIC0gMSlcbiAgICAgICAgICB8IGZhbHNlIC0+IG1hdGNoZWRfY2hhcnMgOj0gMCk7XG4gICAgICAgIGlmIGogPCBuXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBuZXh0X3RleHRfY2hhciA9IHVuc2FmZV9nZXQgdGV4dCBqIGluXG4gICAgICAgICAgbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgIDo9IGttcF9pbnRlcm5hbF9sb29wXG4gICAgICAgICAgICAgICB+bWF0Y2hlZF9jaGFyczohbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgICAgICAgfm5leHRfdGV4dF9jaGFyXG4gICAgICAgICAgICAgICB+cGF0dGVyblxuICAgICAgICAgICAgICAgfmttcF9hcnJheVxuICAgICAgICAgICAgICAgfmNoYXJfZXF1YWwpXG4gICAgICBkb25lO1xuICAgICAgTGlzdC5yZXYgIWZvdW5kKVxuICA7O1xuXG4gIGxldCByZXBsYWNlX2ZpcnN0ID9wb3MgdCB+aW5fOnMgfndpdGhfID1cbiAgICBtYXRjaCBpbmRleCA/cG9zIHQgfmluXzpzIHdpdGhcbiAgICB8IE5vbmUgLT4gc1xuICAgIHwgU29tZSBpIC0+XG4gICAgICBsZXQgbGVuX3MgPSBsZW5ndGggcyBpblxuICAgICAgbGV0IGxlbl90ID0gbGVuZ3RoIHQucGF0dGVybiBpblxuICAgICAgbGV0IGxlbl93aXRoID0gbGVuZ3RoIHdpdGhfIGluXG4gICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIChsZW5fcyArIGxlbl93aXRoIC0gbGVuX3QpIGluXG4gICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOjAgfmxlbjppO1xuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzp3aXRoXyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6aSB+bGVuOmxlbl93aXRoO1xuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmdcbiAgICAgICAgfnNyYzpzXG4gICAgICAgIH5zcmNfcG9zOihpICsgbGVuX3QpXG4gICAgICAgIH5kc3RcbiAgICAgICAgfmRzdF9wb3M6KGkgKyBsZW5fd2l0aClcbiAgICAgICAgfmxlbjoobGVuX3MgLSBpIC0gbGVuX3QpO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3RcbiAgOztcblxuXG4gIGxldCByZXBsYWNlX2FsbCB0IH5pbl86cyB+d2l0aF8gPVxuICAgIGxldCBtYXRjaGVzID0gaW5kZXhfYWxsIHQgfm1heV9vdmVybGFwOmZhbHNlIH5pbl86cyBpblxuICAgIG1hdGNoIG1hdGNoZXMgd2l0aFxuICAgIHwgW10gLT4gc1xuICAgIHwgXyA6OiBfIC0+XG4gICAgICBsZXQgbGVuX3MgPSBsZW5ndGggcyBpblxuICAgICAgbGV0IGxlbl90ID0gbGVuZ3RoIHQucGF0dGVybiBpblxuICAgICAgbGV0IGxlbl93aXRoID0gbGVuZ3RoIHdpdGhfIGluXG4gICAgICBsZXQgbnVtX21hdGNoZXMgPSBMaXN0Lmxlbmd0aCBtYXRjaGVzIGluXG4gICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIChsZW5fcyArICgobGVuX3dpdGggLSBsZW5fdCkgKiBudW1fbWF0Y2hlcykpIGluXG4gICAgICBsZXQgbmV4dF9kc3RfcG9zID0gcmVmIDAgaW5cbiAgICAgIGxldCBuZXh0X3NyY19wb3MgPSByZWYgMCBpblxuICAgICAgTGlzdC5pdGVyIG1hdGNoZXMgfmY6KGZ1biBpIC0+XG4gICAgICAgIGxldCBsZW4gPSBpIC0gIW5leHRfc3JjX3BvcyBpblxuICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnMgfnNyY19wb3M6IW5leHRfc3JjX3BvcyB+ZHN0IH5kc3RfcG9zOiFuZXh0X2RzdF9wb3MgfmxlbjtcbiAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmdcbiAgICAgICAgICB+c3JjOndpdGhfXG4gICAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICAgIH5kc3RcbiAgICAgICAgICB+ZHN0X3BvczooIW5leHRfZHN0X3BvcyArIGxlbilcbiAgICAgICAgICB+bGVuOmxlbl93aXRoO1xuICAgICAgICBuZXh0X2RzdF9wb3MgOj0gIW5leHRfZHN0X3BvcyArIGxlbiArIGxlbl93aXRoO1xuICAgICAgICBuZXh0X3NyY19wb3MgOj0gIW5leHRfc3JjX3BvcyArIGxlbiArIGxlbl90KTtcbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nXG4gICAgICAgIH5zcmM6c1xuICAgICAgICB+c3JjX3BvczohbmV4dF9zcmNfcG9zXG4gICAgICAgIH5kc3RcbiAgICAgICAgfmRzdF9wb3M6IW5leHRfZHN0X3Bvc1xuICAgICAgICB+bGVuOihsZW5fcyAtICFuZXh0X3NyY19wb3MpO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3RcbiAgOztcblxuICBsZXQgc3BsaXRfb24gdCBzID1cbiAgICBsZXQgcGF0dGVybl9sZW4gPSBTdHJpbmcubGVuZ3RoIHQucGF0dGVybiBpblxuICAgIGxldCBtYXRjaGVzID0gaW5kZXhfYWxsIHQgfm1heV9vdmVybGFwOmZhbHNlIH5pbl86cyBpblxuICAgIExpc3QubWFwMl9leG5cbiAgICAgICgtcGF0dGVybl9sZW4gOjogbWF0Y2hlcylcbiAgICAgIChtYXRjaGVzIEAgWyBTdHJpbmcubGVuZ3RoIHMgXSlcbiAgICAgIH5mOihmdW4gaSBqIC0+IHN1YiBzIH5wb3M6KGkgKyBwYXR0ZXJuX2xlbikgfmxlbjooaiAtIGkgLSBwYXR0ZXJuX2xlbikpXG4gIDs7XG5cbiAgbW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHB1YmxpYyA9IHRcblxuICAgIHR5cGUgbm9ucmVjIHQgPSB0ID1cbiAgICAgIHsgcGF0dGVybiA6IHN0cmluZ1xuICAgICAgOyBjYXNlX3NlbnNpdGl2ZSA6IGJvb2xcbiAgICAgIDsga21wX2FycmF5IDogaW50IGFycmF5XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgbGV0IGVxdWFsID1cbiAgICAgIChmdW4gYV9fMDAzXyBiX18wMDRfIC0+XG4gICAgICAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAwM18gYl9fMDA0X1xuICAgICAgICAgdGhlbiB0cnVlXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFN0ZGxpYi4oICYmIClcbiAgICAgICAgICAgICAoZXF1YWxfc3RyaW5nIGFfXzAwM18ucGF0dGVybiBiX18wMDRfLnBhdHRlcm4pXG4gICAgICAgICAgICAgKFN0ZGxpYi4oICYmIClcbiAgICAgICAgICAgICAgICAoZXF1YWxfYm9vbCBhX18wMDNfLmNhc2Vfc2Vuc2l0aXZlIGJfXzAwNF8uY2FzZV9zZW5zaXRpdmUpXG4gICAgICAgICAgICAgICAgKGVxdWFsX2FycmF5IGVxdWFsX2ludCBhX18wMDNfLmttcF9hcnJheSBiX18wMDRfLmttcF9hcnJheSkpXG4gICAgICAgICAgIDogdCAtPiB0IC0+IGJvb2wpXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgPVxuICAgICAgKGZ1biB7IHBhdHRlcm4gPSBwYXR0ZXJuX18wMDhfXG4gICAgICAgICAgIDsgY2FzZV9zZW5zaXRpdmUgPSBjYXNlX3NlbnNpdGl2ZV9fMDEwX1xuICAgICAgICAgICA7IGttcF9hcnJheSA9IGttcF9hcnJheV9fMDEyX1xuICAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBibmRzX18wMDdfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgICBsZXQgYm5kc19fMDA3XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDEzXyA9IHNleHBfb2ZfYXJyYXkgc2V4cF9vZl9pbnQga21wX2FycmF5X18wMTJfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImttcF9hcnJheVwiOyBhcmdfXzAxM18gXSA6OiBibmRzX18wMDdfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA3XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDExXyA9IHNleHBfb2ZfYm9vbCBjYXNlX3NlbnNpdGl2ZV9fMDEwXyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjYXNlX3NlbnNpdGl2ZVwiOyBhcmdfXzAxMV8gXVxuICAgICAgICAgICA6OiBibmRzX18wMDdfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA3XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDA5XyA9IHNleHBfb2Zfc3RyaW5nIHBhdHRlcm5fXzAwOF8gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicGF0dGVyblwiOyBhcmdfXzAwOV8gXSA6OiBibmRzX18wMDdfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDA3X1xuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHJlcHJlc2VudGF0aW9uID0gRm4uaWRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFNlYXJjaF9wYXR0ZXJuX2hlbHBlciA9IHN0cnVjdFxuICBtb2R1bGUgU2VhcmNoX3BhdHRlcm4gPSBTZWFyY2hfcGF0dGVybjBcbmVuZFxuXG5vcGVuIFNlYXJjaF9wYXR0ZXJuX2hlbHBlclxuXG5sZXQgc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXggP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXhfZXhuID9wb3MgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlIHQgfm1heV9vdmVybGFwIH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXhfYWxsXG4gICAgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybilcbiAgICB+bWF5X292ZXJsYXBcbiAgICB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfcmVwbGFjZV9maXJzdF9nZW4gfmNhc2Vfc2Vuc2l0aXZlID9wb3MgdCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLnJlcGxhY2VfZmlyc3QgP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZSB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4ucmVwbGFjZV9hbGwgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgaXNfc3Vic3RyaW5nX2dlbiB+Y2FzZV9zZW5zaXRpdmUgdCB+c3Vic3RyaW5nID1cbiAgT3B0aW9uLmlzX3NvbWUgKHN1YnN0cl9pbmRleF9nZW4gdCB+cGF0dGVybjpzdWJzdHJpbmcgfmNhc2Vfc2Vuc2l0aXZlKVxuOztcblxubGV0IHN1YnN0cl9pbmRleCA9IHN1YnN0cl9pbmRleF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfaW5kZXhfZXhuID0gc3Vic3RyX2luZGV4X2V4bl9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfaW5kZXhfYWxsID0gc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfcmVwbGFjZV9maXJzdCA9IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9yZXBsYWNlX2FsbCA9IHN1YnN0cl9yZXBsYWNlX2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBpc19zdWJzdHJpbmcgPSBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5cbmxldCBpc19zdWJzdHJpbmdfYXRfZ2VuID1cbiAgbGV0IHJlYyBsb29wIH5zdHIgfnN0cl9wb3MgfnN1YiB+c3ViX3BvcyB+c3ViX2xlbiB+Y2hhcl9lcXVhbCA9XG4gICAgaWYgc3ViX3BvcyA9IHN1Yl9sZW5cbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIGlmIGNoYXJfZXF1YWwgKHVuc2FmZV9nZXQgc3RyIHN0cl9wb3MpICh1bnNhZmVfZ2V0IHN1YiBzdWJfcG9zKVxuICAgIHRoZW4gbG9vcCB+c3RyIH5zdHJfcG9zOihzdHJfcG9zICsgMSkgfnN1YiB+c3ViX3Bvczooc3ViX3BvcyArIDEpIH5zdWJfbGVuIH5jaGFyX2VxdWFsXG4gICAgZWxzZSBmYWxzZVxuICBpblxuICBmdW4gc3RyIH5wb3M6c3RyX3BvcyB+c3Vic3RyaW5nOnN1YiB+Y2hhcl9lcXVhbCAtPlxuICAgIGxldCBzdHJfbGVuID0gbGVuZ3RoIHN0ciBpblxuICAgIGxldCBzdWJfbGVuID0gbGVuZ3RoIHN1YiBpblxuICAgIGlmIHN0cl9wb3MgPCAwIHx8IHN0cl9wb3MgPiBzdHJfbGVuXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiU3RyaW5nLmlzX3N1YnN0cmluZ19hdDogaW52YWxpZCBpbmRleCAlZCBmb3Igc3RyaW5nIG9mIGxlbmd0aCAlZFwiXG4gICAgICAgIHN0cl9wb3NcbiAgICAgICAgc3RyX2xlblxuICAgICAgICAoKTtcbiAgICBzdHJfcG9zICsgc3ViX2xlbiA8PSBzdHJfbGVuXG4gICAgJiYgbG9vcCB+c3RyIH5zdHJfcG9zIH5zdWIgfnN1Yl9wb3M6MCB+c3ViX2xlbiB+Y2hhcl9lcXVhbFxuOztcblxubGV0IGlzX3N1ZmZpeF9nZW4gc3RyaW5nIH5zdWZmaXggfmNoYXJfZXF1YWwgPVxuICBsZXQgc3RyaW5nX2xlbiA9IGxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IHN1ZmZpeF9sZW4gPSBsZW5ndGggc3VmZml4IGluXG4gIHN0cmluZ19sZW4gPj0gc3VmZml4X2xlblxuICAmJiBpc19zdWJzdHJpbmdfYXRfZ2VuXG4gICAgICAgc3RyaW5nXG4gICAgICAgfnBvczooc3RyaW5nX2xlbiAtIHN1ZmZpeF9sZW4pXG4gICAgICAgfnN1YnN0cmluZzpzdWZmaXhcbiAgICAgICB+Y2hhcl9lcXVhbFxuOztcblxubGV0IGlzX3ByZWZpeF9nZW4gc3RyaW5nIH5wcmVmaXggfmNoYXJfZXF1YWwgPVxuICBsZXQgc3RyaW5nX2xlbiA9IGxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IHByZWZpeF9sZW4gPSBsZW5ndGggcHJlZml4IGluXG4gIHN0cmluZ19sZW4gPj0gcHJlZml4X2xlblxuICAmJiBpc19zdWJzdHJpbmdfYXRfZ2VuIHN0cmluZyB+cG9zOjAgfnN1YnN0cmluZzpwcmVmaXggfmNoYXJfZXF1YWxcbjs7XG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChzdHJpbmdfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICAgIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9zdHJpbmcgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBzdHJpbmdfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNoYXJfY29tcGFyZV9jYXNlbGVzcyBjMSBjMiA9IENoYXIuY29tcGFyZSAoQ2hhci5sb3dlcmNhc2UgYzEpIChDaGFyLmxvd2VyY2FzZSBjMilcblxuICAgIGxldCByZWMgY29tcGFyZV9sb29wIH5wb3MgfnN0cmluZzEgfmxlbjEgfnN0cmluZzIgfmxlbjIgPVxuICAgICAgaWYgcG9zID0gbGVuMVxuICAgICAgdGhlbiBpZiBwb3MgPSBsZW4yIHRoZW4gMCBlbHNlIC0xXG4gICAgICBlbHNlIGlmIHBvcyA9IGxlbjJcbiAgICAgIHRoZW4gMVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjID0gY2hhcl9jb21wYXJlX2Nhc2VsZXNzICh1bnNhZmVfZ2V0IHN0cmluZzEgcG9zKSAodW5zYWZlX2dldCBzdHJpbmcyIHBvcykgaW5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgMCAtPiBjb21wYXJlX2xvb3AgfnBvczoocG9zICsgMSkgfnN0cmluZzEgfmxlbjEgfnN0cmluZzIgfmxlbjJcbiAgICAgICAgfCBfIC0+IGMpXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIHN0cmluZzEgc3RyaW5nMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHN0cmluZzEgc3RyaW5nMlxuICAgICAgdGhlbiAwXG4gICAgICBlbHNlXG4gICAgICAgIGNvbXBhcmVfbG9vcFxuICAgICAgICAgIH5wb3M6MFxuICAgICAgICAgIH5zdHJpbmcxXG4gICAgICAgICAgfmxlbjE6KFN0cmluZy5sZW5ndGggc3RyaW5nMSlcbiAgICAgICAgICB+c3RyaW5nMlxuICAgICAgICAgIH5sZW4yOihTdHJpbmcubGVuZ3RoIHN0cmluZzIpXG4gICAgOztcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID1cbiAgICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgICAgbGV0IHN0YXRlID0gcmVmIChoYXNoX2ZvbGRfaW50IHN0YXRlIGxlbikgaW5cbiAgICAgIGZvciBwb3MgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgc3RhdGUgOj0gaGFzaF9mb2xkX2NoYXIgIXN0YXRlIChDaGFyLmxvd2VyY2FzZSAodW5zYWZlX2dldCB0IHBvcykpXG4gICAgICBkb25lO1xuICAgICAgIXN0YXRlXG4gICAgOztcblxuICAgIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gICAgbGV0IGlzX3N1ZmZpeCBzIH5zdWZmaXggPSBpc19zdWZmaXhfZ2VuIHMgfnN1ZmZpeCB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gICAgbGV0IGlzX3ByZWZpeCBzIH5wcmVmaXggPSBpc19wcmVmaXhfZ2VuIHMgfnByZWZpeCB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gICAgbGV0IHN1YnN0cl9pbmRleCA9IHN1YnN0cl9pbmRleF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9pbmRleF9leG4gPSBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX2luZGV4X2FsbCA9IHN1YnN0cl9pbmRleF9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfcmVwbGFjZV9maXJzdCA9IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX3JlcGxhY2VfYWxsID0gc3Vic3RyX3JlcGxhY2VfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgaXNfc3Vic3RyaW5nID0gaXNfc3Vic3RyaW5nX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgaXNfc3Vic3RyaW5nX2F0ID0gaXNfc3Vic3RyaW5nX2F0X2dlbiB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nID0gRm4uaWRcbmxldCB0b19zdHJpbmcgPSBGbi5pZFxuXG5sZXQgaW5pdCBuIH5mID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJTdHJpbmcuaW5pdCAlZFwiIG4gKCk7XG4gIGxldCB0ID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHQgaSAoZiBpKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnRcbjs7XG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPSBpZiBpIDwgMCB0aGVuIGFjYyBlbHNlIGxvb3AgKHMuW2ldIDo6IGFjYykgKGkgLSAxKSBpblxuICBsb29wIFtdIChsZW5ndGggcyAtIDEpXG47O1xuXG5sZXQgdG9fbGlzdF9yZXYgcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPSBpZiBpID0gbGVuIHRoZW4gYWNjIGVsc2UgbG9vcCAocy5baV0gOjogYWNjKSAoaSArIDEpIGluXG4gIGxvb3AgW10gMFxuOztcblxubGV0IHJldiB0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXMgaSAodW5zYWZlX2dldCB0IChsZW4gLSAxIC0gaSkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzXG47O1xuXG4oKiogRWZmaWNpZW50IHN0cmluZyBzcGxpdHRpbmcgKilcblxubGV0IGxzcGxpdDJfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLmxzcGxpdDJfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGxzcGxpdDJfZXhuIGxpbmUgfm9uOmRlbGltID1cbiAgICBsZXQgcG9zID0gaW5kZXhfZXhuX2ludGVybmFsIGxpbmUgfm5vdF9mb3VuZCBkZWxpbSBpblxuICAgIHN1YiBsaW5lIH5wb3M6MCB+bGVuOnBvcywgc3ViIGxpbmUgfnBvczoocG9zICsgMSkgfmxlbjoobGVuZ3RoIGxpbmUgLSBwb3MgLSAxKVxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGxzcGxpdDJfZXhuXG47O1xuXG5sZXQgcnNwbGl0Ml9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcucnNwbGl0Ml9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcnNwbGl0Ml9leG4gbGluZSB+b246ZGVsaW0gPVxuICAgIGxldCBwb3MgPSByaW5kZXhfZXhuX2ludGVybmFsIGxpbmUgfm5vdF9mb3VuZCBkZWxpbSBpblxuICAgIHN1YiBsaW5lIH5wb3M6MCB+bGVuOnBvcywgc3ViIGxpbmUgfnBvczoocG9zICsgMSkgfmxlbjoobGVuZ3RoIGxpbmUgLSBwb3MgLSAxKVxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJzcGxpdDJfZXhuXG47O1xuXG5sZXQgbHNwbGl0MiBsaW5lIH5vbiA9XG4gIHRyeSBTb21lIChsc3BsaXQyX2V4biBsaW5lIH5vbikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByc3BsaXQyIGxpbmUgfm9uID1cbiAgdHJ5IFNvbWUgKHJzcGxpdDJfZXhuIGxpbmUgfm9uKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJlYyBjaGFyX2xpc3RfbWVtIGwgKGMgOiBjaGFyKSA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGZhbHNlXG4gIHwgaGQgOjogdGwgLT4gQ2hhci5lcXVhbCBoZCBjIHx8IGNoYXJfbGlzdF9tZW0gdGwgY1xuOztcblxubGV0IHNwbGl0X2dlbiBzdHIgfm9uID1cbiAgbGV0IGlzX2RlbGltID1cbiAgICBtYXRjaCBvbiB3aXRoXG4gICAgfCBgY2hhciBjJyAtPiBmdW4gYyAtPiBDaGFyLmVxdWFsIGMgYydcbiAgICB8IGBjaGFyX2xpc3QgbCAtPiBmdW4gYyAtPiBjaGFyX2xpc3RfbWVtIGwgY1xuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIHN0ciBpblxuICBsZXQgcmVjIGxvb3AgYWNjIGxhc3RfcG9zIHBvcyA9XG4gICAgaWYgcG9zID0gLTFcbiAgICB0aGVuIHN1YiBzdHIgfnBvczowIH5sZW46bGFzdF9wb3MgOjogYWNjXG4gICAgZWxzZSBpZiBpc19kZWxpbSBzdHIuW3Bvc11cbiAgICB0aGVuIChcbiAgICAgIGxldCBwb3MxID0gcG9zICsgMSBpblxuICAgICAgbGV0IHN1Yl9zdHIgPSBzdWIgc3RyIH5wb3M6cG9zMSB+bGVuOihsYXN0X3BvcyAtIHBvczEpIGluXG4gICAgICBsb29wIChzdWJfc3RyIDo6IGFjYykgcG9zIChwb3MgLSAxKSlcbiAgICBlbHNlIGxvb3AgYWNjIGxhc3RfcG9zIChwb3MgLSAxKVxuICBpblxuICBsb29wIFtdIGxlbiAobGVuIC0gMSlcbjs7XG5cbmxldCBzcGxpdCBzdHIgfm9uID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyIG9uKVxubGV0IHNwbGl0X29uX2NoYXJzIHN0ciB+b246Y2hhcnMgPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXJfbGlzdCBjaGFycylcblxubGV0IHNwbGl0X2xpbmVzID1cbiAgbGV0IGJhY2tfdXBfYXRfbmV3bGluZSB+dCB+cG9zIH5lb2wgPVxuICAgIHBvcyA6PSAhcG9zIC0gaWYgIXBvcyA+IDAgJiYgQ2hhci5lcXVhbCB0LlshcG9zIC0gMV0gJ1xccicgdGhlbiAyIGVsc2UgMTtcbiAgICBlb2wgOj0gIXBvcyArIDFcbiAgaW5cbiAgZnVuIHQgLT5cbiAgICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgbiA9IDBcbiAgICB0aGVuIFtdXG4gICAgZWxzZSAoXG4gICAgICAoKiBJbnZhcmlhbnQ6IFstMSA8PSBwb3MgPCBlb2xdLiAqKVxuICAgICAgbGV0IHBvcyA9IHJlZiAobiAtIDEpIGluXG4gICAgICBsZXQgZW9sID0gcmVmIG4gaW5cbiAgICAgIGxldCBhYyA9IHJlZiBbXSBpblxuICAgICAgKCogV2UgdHJlYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIHNwZWNpYWxseSwgYmVjYXVzZSBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBhXG4gICAgICAgICBuZXdsaW5lLCB3ZSBkb24ndCB3YW50IGFuIGV4dHJhIGVtcHR5IHN0cmluZyBhdCB0aGUgZW5kIG9mIHRoZSBvdXRwdXQuICopXG4gICAgICBpZiBDaGFyLmVxdWFsIHQuWyFwb3NdICdcXG4nIHRoZW4gYmFja191cF9hdF9uZXdsaW5lIH50IH5wb3MgfmVvbDtcbiAgICAgIHdoaWxlICFwb3MgPj0gMCBkb1xuICAgICAgICBpZiBDaGFyLiggPD4gKSB0LlshcG9zXSAnXFxuJ1xuICAgICAgICB0aGVuIGRlY3IgcG9zXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIEJlY2F1c2UgW3BvcyA8IGVvbF0sIHdlIGtub3cgdGhhdCBbc3RhcnQgPD0gZW9sXS4gKilcbiAgICAgICAgICBsZXQgc3RhcnQgPSAhcG9zICsgMSBpblxuICAgICAgICAgIGFjIDo9IHN1YiB0IH5wb3M6c3RhcnQgfmxlbjooIWVvbCAtIHN0YXJ0KSA6OiAhYWM7XG4gICAgICAgICAgYmFja191cF9hdF9uZXdsaW5lIH50IH5wb3MgfmVvbClcbiAgICAgIGRvbmU7XG4gICAgICBzdWIgdCB+cG9zOjAgfmxlbjohZW9sIDo6ICFhYylcbjs7XG5cbmxldCBpc19zdWZmaXggcyB+c3VmZml4ID0gaXNfc3VmZml4X2dlbiBzIH5zdWZmaXggfmNoYXJfZXF1YWw6Q2hhci5lcXVhbFxubGV0IGlzX3ByZWZpeCBzIH5wcmVmaXggPSBpc19wcmVmaXhfZ2VuIHMgfnByZWZpeCB+Y2hhcl9lcXVhbDpDaGFyLmVxdWFsXG5cbmxldCBpc19zdWJzdHJpbmdfYXQgcyB+cG9zIH5zdWJzdHJpbmcgPVxuICBpc19zdWJzdHJpbmdfYXRfZ2VuIHMgfnBvcyB+c3Vic3RyaW5nIH5jaGFyX2VxdWFsOkNoYXIuZXF1YWxcbjs7XG5cbmxldCB3cmFwX3N1Yl9uIHQgbiB+bmFtZSB+cG9zIH5sZW4gfm9uX2Vycm9yID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyAobmFtZSBeIFwiIGV4cGVjdGluZyBub25uZWdhdGl2ZSBhcmd1bWVudFwiKVxuICBlbHNlIChcbiAgICB0cnkgc3ViIHQgfnBvcyB+bGVuIHdpdGhcbiAgICB8IF8gLT4gb25fZXJyb3IpXG47O1xuXG5sZXQgZHJvcF9wcmVmaXggdCBuID1cbiAgd3JhcF9zdWJfbiB+bmFtZTpcImRyb3BfcHJlZml4XCIgdCBuIH5wb3M6biB+bGVuOihsZW5ndGggdCAtIG4pIH5vbl9lcnJvcjpcIlwiXG47O1xuXG5sZXQgZHJvcF9zdWZmaXggdCBuID1cbiAgd3JhcF9zdWJfbiB+bmFtZTpcImRyb3Bfc3VmZml4XCIgdCBuIH5wb3M6MCB+bGVuOihsZW5ndGggdCAtIG4pIH5vbl9lcnJvcjpcIlwiXG47O1xuXG5sZXQgcHJlZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJwcmVmaXhcIiB0IG4gfnBvczowIH5sZW46biB+b25fZXJyb3I6dFxubGV0IHN1ZmZpeCB0IG4gPSB3cmFwX3N1Yl9uIH5uYW1lOlwic3VmZml4XCIgdCBuIH5wb3M6KGxlbmd0aCB0IC0gbikgfmxlbjpuIH5vbl9lcnJvcjp0XG5cbmxldCBsZmluZGkgPyhwb3MgPSAwKSB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgcmVjIGxvb3AgaSA9IGlmIGkgPSBuIHRoZW4gTm9uZSBlbHNlIGlmIGYgaSB0LltpXSB0aGVuIFNvbWUgaSBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICBsb29wIHBvcyBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbWF0Y2ggbGZpbmRpIHQgfmY6KGZ1biBfIGMgLT4gZiBjKSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBpIC0+IFNvbWUgdC5baV1cbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG5cbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGYgdC5baV0gd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgfCBTb21lIF8gYXMgcmVzIC0+IHJlcylcbiAgaW5cbiAgbG9vcCAwIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZmluZGkgP3BvcyB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgPSBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZSBpZiBmIGkgdC5baV0gdGhlbiBTb21lIGkgZWxzZSBsb29wIChpIC0gMSkgaW5cbiAgbGV0IHBvcyA9XG4gICAgbWF0Y2ggcG9zIHdpdGhcbiAgICB8IFNvbWUgcG9zIC0+IHBvc1xuICAgIHwgTm9uZSAtPiBsZW5ndGggdCAtIDFcbiAgaW5cbiAgbG9vcCBwb3MgW0Bub250YWlsXVxuOztcblxubGV0IGxhc3Rfbm9uX2Ryb3AgfmRyb3AgdCA9IHJmaW5kaSB0IH5mOihmdW4gXyBjIC0+IG5vdCAoZHJvcCBjKSkgW0Bub250YWlsXVxuXG5sZXQgcnN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIG1hdGNoIGxhc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gIHwgTm9uZSAtPiBcIlwiXG4gIHwgU29tZSBpIC0+IGlmIGkgPSBsZW5ndGggdCAtIDEgdGhlbiB0IGVsc2UgcHJlZml4IHQgKGkgKyAxKVxuOztcblxubGV0IGZpcnN0X25vbl9kcm9wIH5kcm9wIHQgPSBsZmluZGkgdCB+ZjooZnVuIF8gYyAtPiBub3QgKGRyb3AgYykpIFtAbm9udGFpbF1cblxubGV0IGxzdHJpcCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgPVxuICBtYXRjaCBmaXJzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgfCBOb25lIC0+IFwiXCJcbiAgfCBTb21lIDAgLT4gdFxuICB8IFNvbWUgbiAtPiBkcm9wX3ByZWZpeCB0IG5cbjs7XG5cbigqIFtzdHJpcCB0XSBjb3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBbbHN0cmlwIChyc3RyaXAgdCldLiAgVGhlIGltcGxlbWVudGF0aW9uXG4gICBiZWxvdyBzYXZlcyAoYXQgbGVhc3QpIGEgZmFjdG9yIG9mIHR3byBhbGxvY2F0aW9uLCBieSBvbmx5IGFsbG9jYXRpbmcgdGhlXG4gICBmaW5hbCByZXN1bHQuICBUaGlzIGFsc28gc2F2ZXMgc29tZSBhbW91bnQgb2YgdGltZS4gKilcbmxldCBzdHJpcCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMCB8fCBub3QgKGRyb3AgdC5bMF0gfHwgZHJvcCB0LltsZW5ndGggLSAxXSlcbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIGZpcnN0IC0+XG4gICAgICAobWF0Y2ggbGFzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgfCBTb21lIGxhc3QgLT4gc3ViIHQgfnBvczpmaXJzdCB+bGVuOihsYXN0IC0gZmlyc3QgKyAxKSkpXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IGwgPSBsZW5ndGggdCBpblxuICBsZXQgdCcgPSBCeXRlcy5jcmVhdGUgbCBpblxuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHQnIGkgKGYgaSB0LltpXSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0J1xuOztcblxuKCogcmVwZWF0ZWQgY29kZSB0byBhdm9pZCByZXF1aXJpbmcgYW4gZXh0cmEgYWxsb2NhdGlvbiBmb3IgYSBjbG9zdXJlIG9uIGVhY2ggY2FsbC4gKilcbmxldCBtYXAgdCB+ZiA9XG4gIGxldCBsID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHQnID0gQnl0ZXMuY3JlYXRlIGwgaW5cbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0JyBpIChmIHQuW2ldKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnQnXG47O1xuXG5sZXQgdG9fYXJyYXkgcyA9IEFycmF5LmluaXQgKGxlbmd0aCBzKSB+ZjooZnVuIGkgLT4gcy5baV0pXG5cbmxldCBleGlzdHMgPVxuICBsZXQgcmVjIGxvb3AgcyBpIH5sZW4gfmYgPSBpIDwgbGVuICYmIChmIHMuW2ldIHx8IGxvb3AgcyAoaSArIDEpIH5sZW4gfmYpIGluXG4gIGZ1biBzIH5mIC0+IGxvb3AgcyAwIH5sZW46KGxlbmd0aCBzKSB+ZlxuOztcblxubGV0IGZvcl9hbGwgPVxuICBsZXQgcmVjIGxvb3AgcyBpIH5sZW4gfmYgPSBpID0gbGVuIHx8IChmIHMuW2ldICYmIGxvb3AgcyAoaSArIDEpIH5sZW4gfmYpIGluXG4gIGZ1biBzIH5mIC0+IGxvb3AgcyAwIH5sZW46KGxlbmd0aCBzKSB+ZlxuOztcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGxvb3AgdCBpIGFjIH5mIH5sZW4gPVxuICAgIGlmIGkgPSBsZW4gdGhlbiBhYyBlbHNlIGxvb3AgdCAoaSArIDEpIChmIGFjIHQuW2ldKSB+ZiB+bGVuXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCAwIGluaXQgfmYgfmxlbjoobGVuZ3RoIHQpXG47O1xuXG5sZXQgZm9sZGkgPVxuICBsZXQgcmVjIGxvb3AgdCBpIGFjIH5mIH5sZW4gPVxuICAgIGlmIGkgPSBsZW4gdGhlbiBhYyBlbHNlIGxvb3AgdCAoaSArIDEpIChmIGkgYWMgdC5baV0pIH5mIH5sZW5cbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IDAgaW5pdCB+ZiB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmVcbjs7XG5cbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0XG5sZXQgbWF4X2VsdCB0ID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdFxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG5sZXQgZmluZF9tYXBpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5maW5kX21hcGkgfml0ZXJpIHQgfmZcbmxldCBmaW5kaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZmluZGkgfml0ZXJpIHQgfmZcbmxldCBjb3VudGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmNvdW50aSB+Zm9sZGkgdCB+ZlxubGV0IGZvcl9hbGxpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5mb3JfYWxsaSB+aXRlcmkgdCB+ZlxubGV0IGV4aXN0c2kgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmV4aXN0c2kgfml0ZXJpIHQgfmZcblxubGV0IG1lbSA9XG4gIGxldCByZWMgbG9vcCB0IGMgfnBvczppIH5sZW4gPVxuICAgIGkgPCBsZW4gJiYgKENoYXIuZXF1YWwgYyAodW5zYWZlX2dldCB0IGkpIHx8IGxvb3AgdCBjIH5wb3M6KGkgKyAxKSB+bGVuKVxuICBpblxuICBmdW4gdCBjIC0+IGxvb3AgdCBjIH5wb3M6MCB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCB0ciB+dGFyZ2V0IH5yZXBsYWNlbWVudCBzID1cbiAgaWYgQ2hhci5lcXVhbCB0YXJnZXQgcmVwbGFjZW1lbnRcbiAgdGhlbiBzXG4gIGVsc2UgaWYgbWVtIHMgdGFyZ2V0XG4gIHRoZW4gbWFwIHMgfmY6KGZ1biBjIC0+IGlmIENoYXIuZXF1YWwgYyB0YXJnZXQgdGhlbiByZXBsYWNlbWVudCBlbHNlIGMpXG4gIGVsc2Ugc1xuOztcblxubGV0IHRyX211bHRpIH50YXJnZXQgfnJlcGxhY2VtZW50ID1cbiAgaWYgaXNfZW1wdHkgdGFyZ2V0XG4gIHRoZW4gc3RhZ2UgRm4uaWRcbiAgZWxzZSBpZiBpc19lbXB0eSByZXBsYWNlbWVudFxuICB0aGVuIGludmFsaWRfYXJnIFwidHJfbXVsdGkgcmVwbGFjZW1lbnQgaXMgZW1wdHkgc3RyaW5nXCJcbiAgZWxzZSAoXG4gICAgbWF0Y2ggQnl0ZXNfdHIudHJfY3JlYXRlX21hcCB+dGFyZ2V0IH5yZXBsYWNlbWVudCB3aXRoXG4gICAgfCBOb25lIC0+IHN0YWdlIEZuLmlkXG4gICAgfCBTb21lIHRyX21hcCAtPlxuICAgICAgc3RhZ2UgKGZ1biBzIC0+XG4gICAgICAgIGlmIGV4aXN0cyBzIH5mOihmdW4gYyAtPiBDaGFyLiggPD4gKSBjICh1bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgYykpKVxuICAgICAgICB0aGVuIG1hcCBzIH5mOihmdW4gYyAtPiB1bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgYykpXG4gICAgICAgIGVsc2UgcykpXG47O1xuXG4oKiBmYXN0IHZlcnNpb24sIGlmIHdlIGV2ZXIgbmVlZCBpdDpcbiAgIHtbXG4gICAgIGxldCBjb25jYXRfYXJyYXkgfnNlcCBhciA9XG4gICAgICAgbGV0IGFyX2xlbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgICAgIGlmIGFyX2xlbiA9IDAgdGhlbiBcIlwiXG4gICAgICAgZWxzZVxuICAgICAgICAgbGV0IHNlcF9sZW4gPSBsZW5ndGggc2VwIGluXG4gICAgICAgICBsZXQgcmVzX2xlbl9yZWYgPSByZWYgKHNlcF9sZW4gKiAoYXJfbGVuIC0gMSkpIGluXG4gICAgICAgICBmb3IgaSA9IDAgdG8gYXJfbGVuIC0gMSBkb1xuICAgICAgICAgICByZXNfbGVuX3JlZiA6PSAhcmVzX2xlbl9yZWYgKyBsZW5ndGggYXIuKGkpXG4gICAgICAgICBkb25lO1xuICAgICAgICAgbGV0IHJlcyA9IGNyZWF0ZSAhcmVzX2xlbl9yZWYgaW5cbiAgICAgICAgIGxldCBzdHJfMCA9IGFyLigwKSBpblxuICAgICAgICAgbGV0IGxlbl8wID0gbGVuZ3RoIHN0cl8wIGluXG4gICAgICAgICBibGl0IH5zcmM6c3RyXzAgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3BvczowIH5sZW46bGVuXzA7XG4gICAgICAgICBsZXQgcG9zX3JlZiA9IHJlZiBsZW5fMCBpblxuICAgICAgICAgZm9yIGkgPSAxIHRvIGFyX2xlbiAtIDEgZG9cbiAgICAgICAgICAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gICAgICAgICAgIGJsaXQgfnNyYzpzZXAgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3Bvczpwb3MgfmxlbjpzZXBfbGVuO1xuICAgICAgICAgICBsZXQgbmV3X3BvcyA9IHBvcyArIHNlcF9sZW4gaW5cbiAgICAgICAgICAgbGV0IHN0cl9pID0gYXIuKGkpIGluXG4gICAgICAgICAgIGxldCBsZW5faSA9IGxlbmd0aCBzdHJfaSBpblxuICAgICAgICAgICBibGl0IH5zcmM6c3RyX2kgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3BvczpuZXdfcG9zIH5sZW46bGVuX2k7XG4gICAgICAgICAgIHBvc19yZWYgOj0gbmV3X3BvcyArIGxlbl9pXG4gICAgICAgICBkb25lO1xuICAgICAgICAgcmVzXG4gICBdfSAqKVxuXG5sZXQgY29uY2F0X2FycmF5ID9zZXAgYXIgPSBjb25jYXQgP3NlcCAoQXJyYXkudG9fbGlzdCBhcilcbmxldCBjb25jYXRfbWFwID9zZXAgcyB+ZiA9IGNvbmNhdF9hcnJheSA/c2VwIChBcnJheS5tYXAgKHRvX2FycmF5IHMpIH5mKVxubGV0IGNvbmNhdF9tYXBpID9zZXAgdCB+ZiA9IGNvbmNhdF9hcnJheSA/c2VwIChBcnJheS5tYXBpICh0b19hcnJheSB0KSB+ZilcblxubGV0IGNvbmNhdF9saW5lcyA9XG4gIGxldCByZWMgbGluZV9sZW5ndGhzIH5saW5lcyB+bmV3bGluZV9sZW4gfnN1bSA9XG4gICAgbWF0Y2ggbGluZXMgd2l0aFxuICAgIHwgW10gLT4gc3VtXG4gICAgfCBsaW5lIDo6IGxpbmVzIC0+XG4gICAgICBsZXQgc3VtID0gc3VtICsgU3RyaW5nLmxlbmd0aCBsaW5lICsgbmV3bGluZV9sZW4gaW5cbiAgICAgIGxpbmVfbGVuZ3RocyB+bGluZXMgfm5ld2xpbmVfbGVuIH5zdW1cbiAgaW5cbiAgbGV0IHJlYyB3cml0ZV9saW5lcyB+YnVmIH5saW5lcyB+Y3JsZiB+cG9zID1cbiAgICBtYXRjaCBsaW5lcyB3aXRoXG4gICAgfCBbXSAtPiBwb3NcbiAgICB8IGxpbmUgOjogbGluZXMgLT5cbiAgICAgIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZ1xuICAgICAgICB+c3JjOmxpbmVcbiAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICB+ZHN0OmJ1ZlxuICAgICAgICB+ZHN0X3Bvczpwb3NcbiAgICAgICAgfmxlbjooU3RyaW5nLmxlbmd0aCBsaW5lKTtcbiAgICAgIGxldCBwb3MgPSBwb3MgKyBTdHJpbmcubGVuZ3RoIGxpbmUgaW5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICBpZiBjcmxmXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIHBvcyAnXFxyJztcbiAgICAgICAgICBwb3MgKyAxKVxuICAgICAgICBlbHNlIHBvc1xuICAgICAgaW5cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIHBvcyAnXFxuJztcbiAgICAgIGxldCBwb3MgPSBwb3MgKyAxIGluXG4gICAgICB3cml0ZV9saW5lcyB+YnVmIH5saW5lcyB+Y3JsZiB+cG9zXG4gIGluXG4gIGZ1biA/KGNybGYgPSBmYWxzZSkgbGluZXMgLT5cbiAgICBsZXQgbmV3bGluZV9sZW4gPSBpZiBjcmxmIHRoZW4gMiBlbHNlIDEgaW5cbiAgICBsZXQgbGVuID0gbGluZV9sZW5ndGhzIH5uZXdsaW5lX2xlbiB+bGluZXMgfnN1bTowIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgd3JpdHRlbiA9IHdyaXRlX2xpbmVzIH5idWYgfmxpbmVzIH5jcmxmIH5wb3M6MCBpblxuICAgIGFzc2VydCAod3JpdHRlbiA9IGxlbik7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbjs7XG5cbigqIFtmaWx0ZXIgdCBmXSBpcyBpbXBsZW1lbnRlZCBieSB0aGUgZm9sbG93aW5nIGFsZ29yaXRobS5cblxuICAgTGV0IFtuID0gbGVuZ3RoIHRdLlxuXG4gICAxLiBGaW5kIHRoZSBsb3dlc3QgW2ldIHN1Y2ggdGhhdCBbbm90IChmIHQuW2ldKV0uXG5cbiAgIDIuIElmIHRoZXJlIGlzIG5vIHN1Y2ggW2ldLCB0aGVuIHJldHVybiBbdF0uXG5cbiAgIDMuIElmIHRoZXJlIGlzIHN1Y2ggYW4gW2ldLCBhbGxvY2F0ZSBhIHN0cmluZywgW291dF0sIHRvIGhvbGQgdGhlIHJlc3VsdC4gIFtvdXRdIGhhc1xuICAgbGVuZ3RoIFtuIC0gMV0sIHdoaWNoIGlzIHRoZSBtYXhpbXVtIHBvc3NpYmxlIG91dHB1dCBzaXplIGdpdmVuIHRoYXQgdGhlcmUgaXMgYXQgbGVhc3RcbiAgIG9uZSBjaGFyYWN0ZXIgbm90IHNhdGlzZnlpbmcgW2ZdLlxuXG4gICA0LiBDb3B5IGNoYXJhY3RlcnMgYXQgaW5kaWNlcyAwIC4uLiBbaSAtIDFdIGZyb20gW3RdIHRvIFtvdXRdLlxuXG4gICA1LiBXYWxrIHRocm91Z2ggY2hhcmFjdGVycyBhdCBpbmRpY2VzIFtpKzFdIC4uLiBbbi0xXSBvZiBbdF0sIGNvcHlpbmcgdGhvc2UgdGhhdFxuICAgc2F0aXNmeSBbZl0gZnJvbSBbdF0gdG8gW291dF0uXG5cbiAgIDYuIElmIHdlIGNvbXBsZXRlbHkgZmlsbGVkIFtvdXRdLCB0aGVuIHJldHVybiBpdC4gIElmIG5vdCwgcmV0dXJuIHRoZSBwcmVmaXggb2YgW291dF1cbiAgIHRoYXQgd2UgZGlkIGZpbGwgaW4uXG5cbiAgIFRoaXMgYWxnb3JpdGhtIGhhcyB0aGUgcHJvcGVydHkgdGhhdCBpdCBkb2Vzbid0IGFsbG9jYXRlIGEgbmV3IHN0cmluZyBpZiB0aGVyZSdzXG4gICBub3RoaW5nIHRvIGZpbHRlciwgd2hpY2ggaXMgYSBjb21tb24gY2FzZS4gKilcbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IG4gJiYgZiB0LlshaV0gZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgaWYgIWkgPSBuXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBsZXQgb3V0ID0gQnl0ZXMuY3JlYXRlIChuIC0gMSkgaW5cbiAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om91dCB+ZHN0X3BvczowIH5sZW46IWk7XG4gICAgbGV0IG91dF9wb3MgPSByZWYgIWkgaW5cbiAgICBpbmNyIGk7XG4gICAgd2hpbGUgIWkgPCBuIGRvXG4gICAgICBsZXQgYyA9IHQuWyFpXSBpblxuICAgICAgaWYgZiBjXG4gICAgICB0aGVuIChcbiAgICAgICAgQnl0ZXMuc2V0IG91dCAhb3V0X3BvcyBjO1xuICAgICAgICBpbmNyIG91dF9wb3MpO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICBsZXQgb3V0ID0gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpvdXQgaW5cbiAgICBpZiAhb3V0X3BvcyA9IG4gLSAxIHRoZW4gb3V0IGVsc2Ugc3ViIG91dCB+cG9zOjAgfmxlbjohb3V0X3Bvcylcbjs7XG5cbigqIHJlcGVhdGVkIGNvZGUgdG8gYXZvaWQgcmVxdWlyaW5nIGFuIGV4dHJhIGFsbG9jYXRpb24gZm9yIGEgY2xvc3VyZSBvbiBlYWNoIGNhbGwuICopXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbiAmJiBmICFpIHQuWyFpXSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBpZiAhaSA9IG5cbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIGxldCBvdXQgPSBCeXRlcy5jcmVhdGUgKG4gLSAxKSBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6b3V0IH5kc3RfcG9zOjAgfmxlbjohaTtcbiAgICBsZXQgb3V0X3BvcyA9IHJlZiAhaSBpblxuICAgIGluY3IgaTtcbiAgICB3aGlsZSAhaSA8IG4gZG9cbiAgICAgIGxldCBjID0gdC5bIWldIGluXG4gICAgICBpZiBmICFpIGNcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0ICFvdXRfcG9zIGM7XG4gICAgICAgIGluY3Igb3V0X3Bvcyk7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGxldCBvdXQgPSBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOm91dCBpblxuICAgIGlmICFvdXRfcG9zID0gbiAtIDEgdGhlbiBvdXQgZWxzZSBzdWIgb3V0IH5wb3M6MCB+bGVuOiFvdXRfcG9zKVxuOztcblxubGV0IGNob3BfcHJlZml4IHMgfnByZWZpeCA9XG4gIGlmIGlzX3ByZWZpeCBzIH5wcmVmaXggdGhlbiBTb21lIChkcm9wX3ByZWZpeCBzIChsZW5ndGggcHJlZml4KSkgZWxzZSBOb25lXG47O1xuXG5sZXQgY2hvcF9wcmVmaXhfaWZfZXhpc3RzIHMgfnByZWZpeCA9XG4gIGlmIGlzX3ByZWZpeCBzIH5wcmVmaXggdGhlbiBkcm9wX3ByZWZpeCBzIChsZW5ndGggcHJlZml4KSBlbHNlIHNcbjs7XG5cbmxldCBjaG9wX3ByZWZpeF9leG4gcyB+cHJlZml4ID1cbiAgbWF0Y2ggY2hvcF9wcmVmaXggcyB+cHJlZml4IHdpdGhcbiAgfCBTb21lIHN0ciAtPiBzdHJcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIlN0cmluZy5jaG9wX3ByZWZpeF9leG4gJVMgJVNcIiBzIHByZWZpeCAoKVxuOztcblxubGV0IGNob3Bfc3VmZml4IHMgfnN1ZmZpeCA9XG4gIGlmIGlzX3N1ZmZpeCBzIH5zdWZmaXggdGhlbiBTb21lIChkcm9wX3N1ZmZpeCBzIChsZW5ndGggc3VmZml4KSkgZWxzZSBOb25lXG47O1xuXG5sZXQgY2hvcF9zdWZmaXhfaWZfZXhpc3RzIHMgfnN1ZmZpeCA9XG4gIGlmIGlzX3N1ZmZpeCBzIH5zdWZmaXggdGhlbiBkcm9wX3N1ZmZpeCBzIChsZW5ndGggc3VmZml4KSBlbHNlIHNcbjs7XG5cbmxldCBjaG9wX3N1ZmZpeF9leG4gcyB+c3VmZml4ID1cbiAgbWF0Y2ggY2hvcF9zdWZmaXggcyB+c3VmZml4IHdpdGhcbiAgfCBTb21lIHN0ciAtPiBzdHJcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIlN0cmluZy5jaG9wX3N1ZmZpeF9leG4gJVMgJVNcIiBzIHN1ZmZpeCAoKVxuOztcblxubW9kdWxlIEZvcl9jb21tb25fcHJlZml4X2FuZF9zdWZmaXggPSBzdHJ1Y3RcbiAgKCogV2hlbiB0YWtpbmcgYSBzdHJpbmcgcHJlZml4IG9yIHN1ZmZpeCwgd2UgZXh0cmFjdCBmcm9tIHRoZSBzaG9ydGVzdCBpbnB1dCBhdmFpbGFibGVcbiAgICAgaW4gY2FzZSB3ZSBjYW4ganVzdCByZXR1cm4gb25lIG9mIG91ciBpbnB1dHMgd2l0aG91dCBhbGxvY2F0aW5nIGEgbmV3IHN0cmluZy4gKilcblxuICBsZXQgc2hvcnRlciBhIGIgPSBpZiBsZW5ndGggYSA8PSBsZW5ndGggYiB0aGVuIGEgZWxzZSBiXG5cbiAgbGV0IHNob3J0ZXN0IGxpc3QgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gXCJcIlxuICAgIHwgZmlyc3QgOjogcmVzdCAtPiBMaXN0LmZvbGQgcmVzdCB+aW5pdDpmaXJzdCB+ZjpzaG9ydGVyXG4gIDs7XG5cbiAgKCogT3VyIGdlbmVyaWMgYWNjZXNzb3JzIGZvciBjb21tb24gcHJlZml4L3N1ZmZpeCBhYnN0cmFjdCBvdmVyIFtnZXRfcG9zXSwgd2hpY2ggaXNcbiAgICAgZWl0aGVyIFtwb3NfZnJvbV9sZWZ0XSBvciBbcG9zX2Zyb21fcmlnaHRdLiAqKVxuXG4gIGxldCBwb3NfZnJvbV9sZWZ0IChfIDogdCkgKGkgOiBpbnQpID0gaVxuICBsZXQgcG9zX2Zyb21fcmlnaHQgdCBpID0gbGVuZ3RoIHQgLSBpIC0gMVxuXG4gIGxldCByZWMgY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGEgYiB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhciA9XG4gICAgaWYgbGVuX3NvX2ZhciA+PSBtYXhfbGVuXG4gICAgdGhlbiBtYXhfbGVuXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsXG4gICAgICAgICAgICAgICh1bnNhZmVfZ2V0IGEgKGdldF9wb3MgYSBsZW5fc29fZmFyKSlcbiAgICAgICAgICAgICAgKHVuc2FmZV9nZXQgYiAoZ2V0X3BvcyBiIGxlbl9zb19mYXIpKVxuICAgIHRoZW4gY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGEgYiB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhcjoobGVuX3NvX2ZhciArIDEpXG4gICAgZWxzZSBsZW5fc29fZmFyXG4gIDs7XG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zID1cbiAgICBsZXQgbWF4X2xlbiA9IG1pbiAobGVuZ3RoIGEpIChsZW5ndGggYikgaW5cbiAgICBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyOjBcbiAgOztcblxuICBsZXQgcmVjIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIGZpcnN0IGxpc3QgfmdldF9wb3Mgfm1heF9sZW4gPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbWF4X2xlblxuICAgIHwgc2Vjb25kIDo6IHJlc3QgLT5cbiAgICAgIGxldCBtYXhfbGVuID1cbiAgICAgICAgKCogV2UgY2FsbCBbY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wXSByYXRoZXIgdGhhbiBbY29tbW9uX2dlbmVyaWMyX2xlbmd0aF0gc29cbiAgICAgICAgICAgdGhhdCBbbWF4X2xlbl0gbGltaXRzIG91ciB0cmF2ZXJzYWwgb2YgW2ZpcnN0XSBhbmQgW3NlY29uZF0uICopXG4gICAgICAgIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBmaXJzdCBzZWNvbmQgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXI6MFxuICAgICAgaW5cbiAgICAgIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIHNlY29uZCByZXN0IH5nZXRfcG9zIH5tYXhfbGVuXG4gIDs7XG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljX2xlbmd0aCBsaXN0IH5nZXRfcG9zID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IDBcbiAgICB8IGZpcnN0IDo6IHJlc3QgLT5cbiAgICAgICgqIFByZWNvbXB1dGluZyBbbWF4X2xlbl0gYmFzZWQgb24gW3Nob3J0ZXN0IGxpc3RdIHNhdmVzIHVzIHdvcmsgaW4gbG9uZ2VyIHN0cmluZ3MsXG4gICAgICAgICBhdCB0aGUgY29zdCBvZiBhbiBleHRyYSBwYXNzIG92ZXIgdGhlIHNwaW5lIG9mIFtsaXN0XS5cblxuICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSdyZSBsb29raW5nIGZvciB0aGUgbG9uZ2VzdCBwcmVmaXggb2YgdGhlIHN0cmluZ3M6XG5cbiAgICAgICAgIHt2XG4gICAgICAgICAgICBsZXQgbG9uZ19hID0gTGlzdC5pbml0IDEwMDAgfmY6KEZuLmNvbnN0ICdhJylcbiAgICAgICAgICAgIFsgbG9uZ19hOyBsb25nX2E7ICdhYScgXVxuICAgICAgICAgdn1cblxuICAgICAgICAgdGhlIGFwcHJvYWNoIGJlbG93IHdpbGwganVzdCBjaGVjayB0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMgb2YgYWxsIHRoZSBzdHJpbmdzLlxuICAgICAgKilcbiAgICAgIGxldCBtYXhfbGVuID0gbGVuZ3RoIChzaG9ydGVzdCBsaXN0KSBpblxuICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgcmVzdCB+Z2V0X3BvcyB+bWF4X2xlblxuICA7O1xuXG4gICgqIE91ciBnZW5lcmljIGFjY2Vzc29ycyB0aGF0IHByb2R1Y2UgYSBzdHJpbmcgYWJzdHJhY3Qgb3ZlciBbdGFrZV0sIHdoaWNoIGlzIGVpdGhlclxuICAgICBbcHJlZml4XSBvciBbc3VmZml4XS4gKilcblxuICBsZXQgY29tbW9uX2dlbmVyaWMyIGEgYiB+Z2V0X3BvcyB+dGFrZSA9XG4gICAgbGV0IGxlbiA9IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zIGluXG4gICAgKCogVXNlIHRoZSBzaG9ydGVyIG9mIHRoZSB0d28gc3RyaW5ncywgc28gdGhhdCBpZiB0aGUgc2hvcnRlciBvbmUgaXMgdGhlIHNoYXJlZFxuICAgICAgIHByZWZpeCwgW3Rha2VdIHdvbid0IGFsbG9jYXRlIGFub3RoZXIgc3RyaW5nLiAqKVxuICAgIHRha2UgKHNob3J0ZXIgYSBiKSBsZW5cbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWMgbGlzdCB+Z2V0X3BvcyB+dGFrZSA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBcIlwiXG4gICAgfCBmaXJzdCA6OiByZXN0IC0+XG4gICAgICAoKiBBcyB3aXRoIFtjb21tb25fZ2VuZXJpY19sZW5ndGhdLCB3ZSBiYXNlIFttYXhfbGVuXSBvbiBbc2hvcnRlc3QgbGlzdF0uIFdlIGFsc29cbiAgICAgICAgIHVzZSB0aGlzIHJlc3VsdCBmb3IgW3Rha2VdLCBiZWxvdywgdG8gcG90ZW50aWFsbHkgYXZvaWQgYWxsb2NhdGluZyBhIHN0cmluZy4gKilcbiAgICAgIGxldCBzID0gc2hvcnRlc3QgbGlzdCBpblxuICAgICAgbGV0IG1heF9sZW4gPSBsZW5ndGggcyBpblxuICAgICAgaWYgbWF4X2xlbiA9IDBcbiAgICAgIHRoZW4gXCJcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsZW4gPVxuICAgICAgICAgICgqIFdlIGNhbGwgZGlyZWN0bHkgaW50byBbY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3BdIHJhdGhlciB0aGFuXG4gICAgICAgICAgICAgW2NvbW1vbl9nZW5lcmljX2xlbmd0aF0gdG8gYXZvaWQgcmVjb21wdXRpbmcgW3Nob3J0ZXN0IGxpc3RdLiAqKVxuICAgICAgICAgIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIGZpcnN0IHJlc3QgfmdldF9wb3Mgfm1heF9sZW5cbiAgICAgICAgaW5cbiAgICAgICAgdGFrZSBzIGxlbilcbiAgOztcbmVuZFxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIEZvcl9jb21tb25fcHJlZml4X2FuZF9zdWZmaXhcblxuICBsZXQgY29tbW9uX3ByZWZpeCBsaXN0ID0gY29tbW9uX2dlbmVyaWMgbGlzdCB+dGFrZTpwcmVmaXggfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeCBsaXN0ID0gY29tbW9uX2dlbmVyaWMgbGlzdCB+dGFrZTpzdWZmaXggfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXgyIGEgYiA9IGNvbW1vbl9nZW5lcmljMiBhIGIgfnRha2U6cHJlZml4IH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXgyIGEgYiA9IGNvbW1vbl9nZW5lcmljMiBhIGIgfnRha2U6c3VmZml4IH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG4gIGxldCBjb21tb25fcHJlZml4X2xlbmd0aCBsaXN0ID0gY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeF9sZW5ndGggbGlzdCA9IGNvbW1vbl9nZW5lcmljX2xlbmd0aCBsaXN0IH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG4gIGxldCBjb21tb25fcHJlZml4Ml9sZW5ndGggYSBiID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIGEgYiA9IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG5lbmRcblxuKCogVGhlcmUgdXNlZCB0byBiZSBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiB0aGF0IHdhcyBmYXN0ZXIgZm9yIHZlcnkgc2hvcnQgc3RyaW5nc1xuICAgKHBlYWtpbmcgYXQgNDAlIGZhc3RlciBmb3IgNC02IGNoYXIgbG9uZyBzdHJpbmdzKS5cbiAgIFRoaXMgbmV3IGZ1bmN0aW9uIGlzIGFyb3VuZCAyMCUgZmFzdGVyIHRoYW4gdGhlIGRlZmF1bHQgaGFzaCBmdW5jdGlvbiwgYnV0IHNsb3dlclxuICAgdGhhbiB0aGUgcHJldmlvdXMgY3VzdG9tIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCB0aGUgbmV3IE9DYW1sIGZ1bmN0aW9uIGlzIHdlbGxcbiAgIGJlaGF2ZWQsIGFuZCB0aGlzIGltcGxlbWVudGF0aW9uIGlzIGxlc3MgbGlrZWx5IHRvIGRpdmVyZ2UgZnJvbSB0aGUgZGVmYXVsdCBPQ2FtbFxuICAgaW1wbGVtZW50YXRpb24gZG9lcywgd2hpY2ggaXMgYSBkZXNpcmFibGUgcHJvcGVydHkuIChUaGUgb25seSB3YXkgdG8gYXZvaWQgdGhlXG4gICBkaXZlcmdlbmNlIGlzIHRvIGV4cG9zZSB0aGUgbWFjcm8gcmVkZWZpbmVkIGluIGhhc2hfc3R1YnMuYyBpbiB0aGUgaGFzaC5oIGhlYWRlciBvZlxuICAgdGhlIE9DYW1sIGNvbXBpbGVyLikgKilcbm1vZHVsZSBIYXNoID0gc3RydWN0XG4gIGV4dGVybmFsIGhhc2ggOiBzdHJpbmcgLT4gaW50ID0gXCJCYXNlX2hhc2hfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmVuZFxuXG4oKiBbaW5jbHVkZSBIYXNoXSB0byBtYWtlIHRoZSBbZXh0ZXJuYWxdIHZlcnNpb24gb3ZlcnJpZGUgdGhlIFtoYXNoXSBmcm9tXG4gICBbSGFzaGFibGUuTWFrZV9iaW5hYmxlXSwgc28gdGhhdCB3ZSBnZXQgYSBsaXR0bGUgYml0IG9mIGEgc3BlZWR1cCBieSBleHBvc2luZyBpdCBhc1xuICAgZXh0ZXJuYWwgaW4gdGhlIG1saS4gKilcbmxldCBfID0gaGFzaFxuXG5pbmNsdWRlIEhhc2hcblxuKCogZm9yIGludGVyYWN0aXZlIHRvcC1sZXZlbHMgLS0gbW9kdWxlcyBkZXJpdmluZyBmcm9tIFN0cmluZyBzaG91bGQgaGF2ZSBTdHJpbmcncyBwcmV0dHlcbiAgIHByaW50ZXIuICopXG5sZXQgcHAgcHBmIHN0cmluZyA9IFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBwcGYgXCIlU1wiIHN0cmluZ1xubGV0IG9mX2NoYXIgYyA9IG1ha2UgMSBjXG5cbmxldCBvZl9jaGFyX2xpc3QgbCA9XG4gIGxldCB0ID0gQnl0ZXMuY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICBMaXN0Lml0ZXJpIGwgfmY6KGZ1biBpIGMgLT4gQnl0ZXMuc2V0IHQgaSBjKTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0XG47O1xuXG5sZXQgb2ZfbGlzdCA9IG9mX2NoYXJfbGlzdFxubGV0IG9mX2FycmF5IGEgPSBpbml0IChBcnJheS5sZW5ndGggYSkgfmY6KEFycmF5LmdldCBhKVxubGV0IGFwcGVuZCA9ICggXiApXG5cbmxldCBwYWRfcmlnaHQgPyhjaGFyID0gJyAnKSBzIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzIGluXG4gIGlmIHNyY19sZW4gPj0gbGVuXG4gIHRoZW4gc1xuICBlbHNlIChcbiAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+ZHN0OnJlcyB+c3JjX3BvczowIH5kc3RfcG9zOjAgfmxlbjpzcmNfbGVuO1xuICAgIEJ5dGVzLmZpbGwgfnBvczpzcmNfbGVuIH5sZW46KGxlbiAtIHNyY19sZW4pIHJlcyBjaGFyO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzKVxuOztcblxubGV0IHBhZF9sZWZ0ID8oY2hhciA9ICcgJykgcyB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBsZW5ndGggcyBpblxuICBpZiBzcmNfbGVuID49IGxlblxuICB0aGVuIHNcbiAgZWxzZSAoXG4gICAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnMgfmRzdDpyZXMgfnNyY19wb3M6MCB+ZHN0X3BvczoobGVuIC0gc3JjX2xlbikgfmxlbjpzcmNfbGVuO1xuICAgIEJ5dGVzLmZpbGwgfnBvczowIH5sZW46KGxlbiAtIHNyY19sZW4pIHJlcyBjaGFyO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzKVxuOztcblxuKCogQ2FsbGVkIHVwb24gZmlyc3QgZGlmZmVyZW5jZSBnZW5lcmF0ZWQgYnkgZmlsdGVyaW5nLiBBbGxvY2F0ZXMgW2J1ZmZlcl9sZW5dIGJ5dGVzXG4gICBmb3IgbmV3IHJlc3VsdCwgYW5kIGNvcGllcyBbcHJlZml4X2xlbl0gdW5jaGFuZ2VkIGNoYXJhY3RlcnMgZnJvbSBbc3JjXS5cbiAgIEFsd2F5cyByZXR1cm5zIGEgbG9jYWwgYnVmZmVyLiAqKVxubGV0IGxvY2FsX2NvcHlfcHJlZml4IChzcmMgW0Bsb2NhbF0pIH5wcmVmaXhfbGVuIH5idWZmZXJfbGVuID1cbiAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZV9sb2NhbCBidWZmZXJfbGVuIGluXG4gIEJ5dGVzLlByaW1pdGl2ZXMudW5zYWZlX2JsaXRfc3RyaW5nIH5zcmMgfmRzdCB+c3JjX3BvczowIH5kc3RfcG9zOjAgfmxlbjpwcmVmaXhfbGVuO1xuICAgZHN0XG47O1xuXG4oKiBDb3BpZXMgYSBwZXJoYXBzLWxvY2FsIGJ1ZmZlciBpbnRvIGEgZGVmaW5pdGVseS1nbG9iYWwgc3RyaW5nLiAqKVxubGV0IGxvY2FsX2NvcHlfdG9fc3RyaW5nIChidWYgW0Bsb2NhbF0pIH5wb3MgPVxuICBsZXQgc3RyID0gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWYgaW5cbiAgdW5zYWZlX3N1YiBzdHIgfnBvczowIH5sZW46cG9zIFtAbm9udGFpbF1cbjs7XG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gc3RydWN0XG4gICAgKCogZmlsdGVyX21hcCBoZWxwZXJzICopXG5cbiAgICAoKiBGaWx0ZXJzIGZyb20gc3RyaW5nIFtzcmNdIGludG8gYW4gYWxsb2NhdGVkIGJ1ZmZlciBbZHN0XTtcbiAgICAgICBjb3BpZXMgdGhlIGFsbG9jYXRlZCBidWZmZXIgdG8gYSBoZWFwLWFsbG9jYXRlZCByZXN1bHQgc3RyaW5nLlxuXG4gICAgICAgUHJlLWNvbmRpdGlvbnM6XG4gICAgICAgW3NyY19sZW4gPSBsZW5ndGggc3JjXVxuICAgICAgIFtzcmMgIT0gZHN0XVxuICAgICAgIFswIDw9IHNyY19wb3MgPCBzcmNfbGVuXVxuICAgICAgIFswIDw9IGRzdF9wb3MgPCBsZW5ndGggZHN0XVxuICAgICopXG4gICAgbGV0IGZpbHRlcl9tYXBpX2ludG8gc3JjIChkc3QgW0Bsb2NhbF0pIH5mIH5zcmNfcG9zIH5kc3RfcG9zIH5zcmNfbGVuID1cbiAgICAgIGxldCBkc3RfcG9zID0gIChyZWYgZHN0X3BvcykgaW5cbiAgICAgIGZvciBzcmNfcG9zID0gc3JjX3BvcyB0byBzcmNfbGVuIC0gMSBkb1xuICAgICAgICBtYXRjaCBmIHNyY19wb3MgKHVuc2FmZV9nZXQgc3JjIHNyY19wb3MpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBkc3QgIWRzdF9wb3MgYztcbiAgICAgICAgICBpbmNyIGRzdF9wb3NcbiAgICAgIGRvbmU7XG4gICAgICBsb2NhbF9jb3B5X3RvX3N0cmluZyBkc3QgfnBvczohZHN0X3Bvc1xuICAgIDs7XG5cbiAgICAoKiBGaWx0ZXJzIFt0XS4gSWYgdGhlIHJlc3VsdCB0dXJucyBvdXQgdG8gYmUgaWRlbnRpY2FsIHRvIHRoZSBpbnB1dCwgcmV0dXJucyBbdF1cbiAgICAgICBkaXJlY3RseSB3aXRob3V0IG5lZWRpbmcgdG8gYWxsb2NhdGUgYSBidWZmZXIgYW5kIHRyYXZlcnNlIHRoZSBzdHJpbmcgdHdpY2UuXG5cbiAgICAgICBQcmUtY29uZGl0aW9uOiBbbGVuID09IGxlbmd0aCB0XVxuICAgICAgIFByZS1jb25kaXRpb246IFswIDw9IHBvcyA8PSBsZW5dICopXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwaV9tYXliZV9pZCB0IH5mIH5wb3MgfmxlbiA9XG4gICAgICBpZiBwb3MgPSBsZW5cbiAgICAgIHRoZW4gdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjMSA9IHVuc2FmZV9nZXQgdCBwb3MgaW5cbiAgICAgICAgbGV0IG5leHQgPSBJbnQuc3VjYyBwb3MgaW5cbiAgICAgICAgbWF0Y2ggZiBwb3MgYzEgd2l0aFxuICAgICAgICB8IFNvbWUgYzIgd2hlbiBDaGFyLmVxdWFsIGMxIGMyIC0+XG4gICAgICAgICAgKCogaWYgbm90aGluZyBoYXMgY2hhbmdlZCwgY29udGludWUgKilcbiAgICAgICAgICBmaWx0ZXJfbWFwaV9tYXliZV9pZCB0IH5mIH5wb3M6bmV4dCB+bGVuXG4gICAgICAgIHwgb3B0aW9uIC0+XG4gICAgICAgICAgKCogSWYgYSBjaGFyYWN0ZXIgaGFzIGJlZW4gY2hhbmdlZCBvciBkcm9wcGVkLCBiZWdpbiBhbiBvdXRwdXQgYnVmZmVyIHVwIHRvXG4gICAgICAgICAgICAgW3Bvc10sIGFuZCB3cml0ZSB0aGUgbmV3IGNoYXJhY3RlciBpbnRvIGl0LiAqKVxuICAgICAgICAgIGxldCBjb3B5ID0gbG9jYWxfY29weV9wcmVmaXggdCB+cHJlZml4X2xlbjpwb3MgfmJ1ZmZlcl9sZW46bGVuIGluXG4gICAgICAgICAgbGV0IGRzdF9wb3MgPVxuICAgICAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBwb3NcbiAgICAgICAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgY29weSBwb3MgYztcbiAgICAgICAgICAgICAgbmV4dFxuICAgICAgICAgIGluXG4gICAgICAgICAgZmlsdGVyX21hcGlfaW50byB0IGNvcHkgfmYgfnNyY19wb3M6bmV4dCB+ZHN0X3BvcyB+c3JjX2xlbjpsZW4gW0Bub250YWlsXSlcbiAgICA7O1xuICBlbmRcblxuICAoKiBmaWx0ZXJfbWFwIGZ1bmN0aW9ucyAqKVxuXG4gIGxldCBmaWx0ZXJfbWFwaSB0IH5mID0gZmlsdGVyX21hcGlfbWF5YmVfaWQgdCB+ZiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gXyBjIC0+IGYgYykgW0Bub250YWlsXVxuZW5kXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gc3RydWN0XG4gICAgKCogcGFydGl0aW9uIGhlbHBlcnMgKilcblxuICAgIGxldCBwYXJ0aXRpb25fbWFwX2ludG8gc3JjIH5mc3RzIH5zbmRzIH5mIH5sZW4gfnNyY19wb3MgfmZzdF9wb3MgfnNuZF9wb3MgPVxuICAgICAgbGV0IGZzdF9wb3MgPSAgKHJlZiBmc3RfcG9zKSBpblxuICAgICAgbGV0IHNuZF9wb3MgPSAgKHJlZiBzbmRfcG9zKSBpblxuICAgICAgZm9yIHNyY19wb3MgPSBzcmNfcG9zIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggIChmICh1bnNhZmVfZ2V0IHNyYyBzcmNfcG9zKSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IEZpcnN0IGMgLT5cbiAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGZzdHMgIWZzdF9wb3MgYztcbiAgICAgICAgICBpbmNyIGZzdF9wb3NcbiAgICAgICAgfCBTZWNvbmQgYyAtPlxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgc25kcyAhc25kX3BvcyBjO1xuICAgICAgICAgIGluY3Igc25kX3Bvc1xuICAgICAgZG9uZTtcbiAgICAgIGxvY2FsX2NvcHlfdG9fc3RyaW5nIGZzdHMgfnBvczohZnN0X3BvcywgbG9jYWxfY29weV90b19zdHJpbmcgc25kcyB+cG9zOiFzbmRfcG9zXG4gICAgOztcblxuICAgIGxldCBwYXJ0aXRpb25fbWFwX2RpZmZlcmVuY2Ugc3JjIH5mIH5sZW4gfnBvczpzcmNfcG9zIH5mc3RfcG9zIH5zbmRfcG9zIGVpdGhlciA9XG4gICAgICBsZXQgZnN0cyA9IGxvY2FsX2NvcHlfcHJlZml4IHNyYyB+cHJlZml4X2xlbjpmc3RfcG9zIH5idWZmZXJfbGVuOmxlbiBpblxuICAgICAgbGV0IHNuZHMgPSBsb2NhbF9jb3B5X3ByZWZpeCBzcmMgfnByZWZpeF9sZW46c25kX3BvcyB+YnVmZmVyX2xlbjpsZW4gaW5cbiAgICAgIGxldCBmc3RfcG9zLCBzbmRfcG9zID1cbiAgICAgICAgbWF0Y2ggKGVpdGhlciA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IEZpcnN0IGMgLT5cbiAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGZzdHMgZnN0X3BvcyBjO1xuICAgICAgICAgICAoZnN0X3BvcyArIDEsIHNuZF9wb3MpXG4gICAgICAgIHwgU2Vjb25kIGMgLT5cbiAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHNuZHMgc25kX3BvcyBjO1xuICAgICAgICAgICAoZnN0X3Bvcywgc25kX3BvcyArIDEpXG4gICAgICBpblxuICAgICAgcGFydGl0aW9uX21hcF9pbnRvXG4gICAgICAgIHNyY1xuICAgICAgICB+ZnN0c1xuICAgICAgICB+c25kc1xuICAgICAgICB+ZlxuICAgICAgICB+bGVuXG4gICAgICAgIH5zcmNfcG9zOihzcmNfcG9zICsgMSlcbiAgICAgICAgfmZzdF9wb3NcbiAgICAgICAgfnNuZF9wb3MgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbl9tYXBfZmlyc3RfbWF5YmVfaWQgc3JjIH5mIH5wb3MgfmxlbiA9XG4gICAgICBpZiBwb3MgPSBsZW5cbiAgICAgIHRoZW4gc3JjLCBcIlwiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGMxID0gdW5zYWZlX2dldCBzcmMgcG9zIGluXG4gICAgICAgIG1hdGNoICAoZiBjMSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IEZpcnN0IGMyIHdoZW4gQ2hhci5lcXVhbCBjMSBjMiAtPlxuICAgICAgICAgIHBhcnRpdGlvbl9tYXBfZmlyc3RfbWF5YmVfaWQgc3JjIH5mIH5sZW4gfnBvczoocG9zICsgMSlcbiAgICAgICAgfCBlaXRoZXIgLT5cbiAgICAgICAgICBwYXJ0aXRpb25fbWFwX2RpZmZlcmVuY2VcbiAgICAgICAgICAgIHNyY1xuICAgICAgICAgICAgfmZcbiAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgIH5mc3RfcG9zOnBvc1xuICAgICAgICAgICAgfnNuZF9wb3M6MFxuICAgICAgICAgICAgZWl0aGVyIFtAbm9udGFpbF0pXG4gICAgOztcblxuICAgIGxldCByZWMgcGFydGl0aW9uX21hcF9zZWNvbmRfbWF5YmVfaWQgc3JjIH5mIH5wb3MgfmxlbiA9XG4gICAgICBpZiBwb3MgPSBsZW5cbiAgICAgIHRoZW4gXCJcIiwgc3JjXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGMxID0gdW5zYWZlX2dldCBzcmMgcG9zIGluXG4gICAgICAgIG1hdGNoICAoZiBjMSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IFNlY29uZCBjMiB3aGVuIENoYXIuZXF1YWwgYzEgYzIgLT5cbiAgICAgICAgICBwYXJ0aXRpb25fbWFwX3NlY29uZF9tYXliZV9pZCBzcmMgfmYgfmxlbiB+cG9zOihwb3MgKyAxKVxuICAgICAgICB8IGVpdGhlciAtPlxuICAgICAgICAgIHBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZVxuICAgICAgICAgICAgc3JjXG4gICAgICAgICAgICB+ZlxuICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgfmZzdF9wb3M6MFxuICAgICAgICAgICAgfnNuZF9wb3M6cG9zXG4gICAgICAgICAgICBlaXRoZXIgW0Bub250YWlsXSlcbiAgICA7O1xuICBlbmRcblxuICAoKiBwYXJ0aXRpb24gZnVuY3Rpb25zICopXG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgc3JjIH5mID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHNyYyBpblxuICAgIGlmIGxlbiA9IDBcbiAgICB0aGVuIFwiXCIsIFwiXCJcbiAgICBlbHNlIChcbiAgICAgIGxldCBjMSA9IHVuc2FmZV9nZXQgc3JjIDAgaW5cbiAgICAgIG1hdGNoICAoZiBjMSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgfCBGaXJzdCBjMiB3aGVuIENoYXIuZXF1YWwgYzEgYzIgLT4gcGFydGl0aW9uX21hcF9maXJzdF9tYXliZV9pZCBzcmMgfmYgfmxlbiB+cG9zOjFcbiAgICAgIHwgU2Vjb25kIGMyIHdoZW4gQ2hhci5lcXVhbCBjMSBjMiAtPlxuICAgICAgICBwYXJ0aXRpb25fbWFwX3NlY29uZF9tYXliZV9pZCBzcmMgfmYgfmxlbiB+cG9zOjFcbiAgICAgIHwgZWl0aGVyIC0+XG4gICAgICAgIHBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZVxuICAgICAgICAgIHNyY1xuICAgICAgICAgIH5mXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5wb3M6MFxuICAgICAgICAgIH5mc3RfcG9zOjBcbiAgICAgICAgICB+c25kX3BvczowXG4gICAgICAgICAgZWl0aGVyIFtAbm9udGFpbF0pXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgICBwYXJ0aXRpb25fbWFwIHQgfmY6KGZ1biBjIC0+IGlmIGYgYyB0aGVuICAoRmlyc3QgYykgZWxzZSAgKFNlY29uZCBjKSkgW0Bub250YWlsXG4gICAgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFc2NhcGluZyA9IHN0cnVjdFxuICAoKiBJZiB0aGlzIGlzIGNoYW5nZWQsIG1ha2Ugc3VyZSB0byB1cGRhdGUgW2VzY2FwZV0sIHdoaWNoIGF0dGVtcHRzIHRvIGVuc3VyZSBhbGwgdGhlXG4gICAgIGludmFyaWFudHMgY2hlY2tlZCBoZXJlLiAgKilcbiAgbGV0IGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgZnVuYyA9XG4gICAgbGV0IGVzY2FwZXdvcnRoeV9tYXAgPVxuICAgICAgaWYgTGlzdC5Bc3NvYy5tZW0gZXNjYXBld29ydGh5X21hcCB+ZXF1YWw6Q2hhci5lcXVhbCBlc2NhcGVfY2hhclxuICAgICAgdGhlbiBlc2NhcGV3b3J0aHlfbWFwXG4gICAgICBlbHNlIChlc2NhcGVfY2hhciwgZXNjYXBlX2NoYXIpIDo6IGVzY2FwZXdvcnRoeV9tYXBcbiAgICBpblxuICAgIGxldCBhcnIgPSBBcnJheS5jcmVhdGUgfmxlbjoyNTYgKC0xKSBpblxuICAgIGxldCB2YWxzID0gQXJyYXkuY3JlYXRlIH5sZW46MjU2IGZhbHNlIGluXG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gT2sgYXJyXG4gICAgICB8IChjX2Zyb20sIGNfdG8pIDo6IGwgLT5cbiAgICAgICAgbGV0IGssIHYgPVxuICAgICAgICAgIG1hdGNoIGZ1bmMgd2l0aFxuICAgICAgICAgIHwgYEVzY2FwZSAtPiBDaGFyLnRvX2ludCBjX2Zyb20sIGNfdG9cbiAgICAgICAgICB8IGBVbmVzY2FwZSAtPiBDaGFyLnRvX2ludCBjX3RvLCBjX2Zyb21cbiAgICAgICAgaW5cbiAgICAgICAgaWYgYXJyLihrKSA8PiAtMSB8fCB2YWxzLihDaGFyLnRvX2ludCB2KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgICAgXCJlc2NhcGV3b3J0aHlfbWFwIG5vdCBvbmUtdG8tb25lXCJcbiAgICAgICAgICAgICAgIFsgXCJjX2Zyb21cIiwgc2V4cF9vZl9jaGFyIGNfZnJvbVxuICAgICAgICAgICAgICAgOyBcImNfdG9cIiwgc2V4cF9vZl9jaGFyIGNfdG9cbiAgICAgICAgICAgICAgIDsgKCBcImVzY2FwZXdvcnRoeV9tYXBcIlxuICAgICAgICAgICAgICAgICAsIHNleHBfb2ZfbGlzdCAoc2V4cF9vZl9wYWlyIHNleHBfb2ZfY2hhciBzZXhwX29mX2NoYXIpIGVzY2FwZXdvcnRoeV9tYXBcbiAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgXSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgYXJyLihrKSA8LSBDaGFyLnRvX2ludCB2O1xuICAgICAgICAgIHZhbHMuKENoYXIudG9faW50IHYpIDwtIHRydWU7XG4gICAgICAgICAgbG9vcCBsKVxuICAgIGluXG4gICAgbG9vcCBlc2NhcGV3b3J0aHlfbWFwXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBidWlsZF9hbmRfdmFsaWRhdGVfZXNjYXBld29ydGh5X21hcCBlc2NhcGV3b3J0aHlfbWFwIGVzY2FwZV9jaGFyIGBFc2NhcGUgd2l0aFxuICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICB8IE9rIGVzY2FwZXdvcnRoeSAtPlxuICAgICAgT2tcbiAgICAgICAgKGZ1biBzcmMgLT5cbiAgICAgICAgICAgKCogY2FsY3VsYXRlIGEgbGlzdCBvZiAoaW5kZXggb2YgY2hhciB0byBlc2NhcGUgKiBlc2NhcGVkIGNoYXIpIGZpcnN0LCB0aGUgb3JkZXJcbiAgICAgICAgICAgICAgaXMgZnJvbSB0YWlsIHRvIGhlYWQgKilcbiAgICAgICAgICAgbGV0IHRvX2VzY2FwZV9sZW4gPSByZWYgMCBpblxuICAgICAgICAgICBsZXQgdG9fZXNjYXBlID1cbiAgICAgICAgICAgICBmb2xkaSBzcmMgfmluaXQ6W10gfmY6KGZ1biBpIGFjYyBjIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBlc2NhcGV3b3J0aHkuKENoYXIudG9faW50IGMpIHdpdGhcbiAgICAgICAgICAgICAgIHwgLTEgLT4gYWNjXG4gICAgICAgICAgICAgICB8IG4gLT5cbiAgICAgICAgICAgICAgICAgKCogKGluZGV4IG9mIGNoYXIgdG8gZXNjYXBlICogZXNjYXBlZCBjaGFyKSAqKVxuICAgICAgICAgICAgICAgICBpbmNyIHRvX2VzY2FwZV9sZW47XG4gICAgICAgICAgICAgICAgIChpLCBDaGFyLnVuc2FmZV9vZl9pbnQgbikgOjogYWNjKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCB0b19lc2NhcGUgd2l0aFxuICAgICAgICAgICB8IFtdIC0+IHNyY1xuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAoKiBbdG9fZXNjYXBlXSBkaXZpZGUgW3NyY10gdG8gW0xpc3QubGVuZ3RoIHRvX2VzY2FwZSArIDFdIHBpZWNlcyBzZXBhcmF0ZWQgYnlcbiAgICAgICAgICAgICAgICB0aGUgY2hhcnMgdG8gZXNjYXBlLlxuXG4gICAgICAgICAgICAgICAgTGV0cyB0YWtlXG4gICAgICAgICAgICAgICAge1tcbiAgICAgICAgICAgICAgICAgIGVzY2FwZV9nZW5fZXhuXG4gICAgICAgICAgICAgICAgICAgIH5lc2NhcGV3b3J0aHlfbWFwOlsoJ2EnLCAnQScpOyAoJ2InLCAnQicpOyAoJ2MnLCAnQycpXVxuICAgICAgICAgICAgICAgICAgICB+ZXNjYXBlX2NoYXI6J18nXG4gICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSwgYW5kIGFzc3VtZSB0aGUgc3RyaW5nIHRvIGVzY2FwZSBpc1xuXG4gICAgICAgICAgICAgICAgXCIwMDBhMTExYjIyMmMzMzNcIlxuXG4gICAgICAgICAgICAgICAgdGhlbiBbdG9fZXNjYXBlXSBpcyBbKDExLCAnQycpOyAoNywgJ0InKTsgKDMsICdBJyldLlxuXG4gICAgICAgICAgICAgICAgVGhlbiB3ZSBjcmVhdGUgYSBbZHN0XSBvZiBsZW5ndGggW2xlbmd0aCBzcmMgKyAzXSB0byBzdG9yZSB0aGVcbiAgICAgICAgICAgICAgICByZXN1bHQsIGNvcHkgcGllY2UgXCIzMzNcIiB0byBbZHN0XSBkaXJlY3RseSwgdGhlbiBjb3B5ICdfJyBhbmQgJ0MnIHRvIFtkc3RdO1xuICAgICAgICAgICAgICAgIHRoZW4gbW92ZSBvbiB0byBuZXh0OyBhZnRlciAzIGl0ZXJhdGlvbnMsIGNvcHkgcGllY2UgXCIwMDBcIiBhbmQgd2UgYXJlIGRvbmUuXG5cbiAgICAgICAgICAgICAgICBGaW5hbGx5IHRoZSByZXN1bHQgd2lsbCBiZVxuXG4gICAgICAgICAgICAgICAgXCIwMDBfQTExMV9CMjIyX0MzMzNcIiAqKVxuICAgICAgICAgICAgIGxldCBzcmNfbGVuID0gbGVuZ3RoIHNyYyBpblxuICAgICAgICAgICAgIGxldCBkc3RfbGVuID0gc3JjX2xlbiArICF0b19lc2NhcGVfbGVuIGluXG4gICAgICAgICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSBkc3RfbGVuIGluXG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGxhc3RfaWR4IGxhc3RfZHN0X3BvcyA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIwMDBcIiBhdCBsYXN0ICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOjAgfmxlbjpsYXN0X2lkeFxuICAgICAgICAgICAgICAgfCAoaWR4LCBlc2NhcGVkX2NoYXIpIDo6IHRvX2VzY2FwZSAtPlxuICAgICAgICAgICAgICAgICAoKltpZHhdID0gdGhlIGNoYXIgdG8gZXNjYXBlKilcbiAgICAgICAgICAgICAgICAgKCogdGFrZSBmaXJzdCBpdGVyYXRpb24gZm9yIGV4YW1wbGUgKilcbiAgICAgICAgICAgICAgICAgKCogY2FsY3VsYXRlIGxlbmd0aCBvZiBcIjMzM1wiLCBtaW51cyAxIGJlY2F1c2Ugd2UgZG9uJ3QgY29weSAnYycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGxlbiA9IGxhc3RfaWR4IC0gaWR4IC0gMSBpblxuICAgICAgICAgICAgICAgICAoKiBzZXQgdGhlIGRzdF9wb3MgdG8gY29weSB0byAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGxhc3RfZHN0X3BvcyAtIGxlbiBpblxuICAgICAgICAgICAgICAgICAoKiBjb3B5IFwiMzMzXCIsIHNldCBbc3JjX3Bvc10gdG8gW2lkeCArIDFdIHRvIHNraXAgJ2MnICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6KGlkeCArIDEpIH5kc3QgfmRzdF9wb3MgfmxlbjtcbiAgICAgICAgICAgICAgICAgKCogYmFja29mZiBbZHN0X3Bvc10gYnkgMiB0byBjb3B5ICdfJyBhbmQgJ0MnICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gZHN0X3BvcyAtIDIgaW5cbiAgICAgICAgICAgICAgICAgQnl0ZXMuc2V0IGRzdCBkc3RfcG9zIGVzY2FwZV9jaGFyO1xuICAgICAgICAgICAgICAgICBCeXRlcy5zZXQgZHN0IChkc3RfcG9zICsgMSkgZXNjYXBlZF9jaGFyO1xuICAgICAgICAgICAgICAgICBsb29wIGlkeCBkc3RfcG9zIHRvX2VzY2FwZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKCogc2V0IFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdIHRvIGxlbmd0aCBvZiBbZHN0XSBhbmQgW3NyY10gZmlyc3QgKilcbiAgICAgICAgICAgICBsb29wIHNyY19sZW4gZHN0X2xlbiB0b19lc2NhcGU7XG4gICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgT3JfZXJyb3Iub2tfZXhuIChlc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhcikgfD4gc3RhZ2VcbiAgOztcblxuICBsZXQgZXNjYXBlIH5lc2NhcGV3b3J0aHkgfmVzY2FwZV9jaGFyID1cbiAgICAoKiBGb3IgW2VzY2FwZV9nZW5fZXhuXSwgd2UgZG9uJ3Qga25vdyBob3cgdG8gZml4IGludmFsaWQgZXNjYXBld29ydGh5X21hcCBzbyB3ZSBoYXZlXG4gICAgICAgdG8gcmFpc2UgZXhjZXB0aW9uOyBidXQgaW4gdGhpcyBjYXNlLCB3ZSBrbm93IGhvdyB0byBmaXggZHVwbGljYXRlZCBlbGVtZW50cyBpblxuICAgICAgIGVzY2FwZXdvcnRoeSBsaXN0LCBzbyB3ZSBqdXN0IGZpeCBpdCBpbnN0ZWFkIG9mIHJhaXNpbmcgZXhjZXB0aW9uIHRvIG1ha2UgdGhpc1xuICAgICAgIGZ1bmN0aW9uIGVhc2llciB0byB1c2UuICAqKVxuICAgIGxldCBlc2NhcGV3b3J0aHlfbWFwID1cbiAgICAgIGVzY2FwZXdvcnRoeVxuICAgICAgfD4gTGlzdC5kZWR1cF9hbmRfc29ydCB+Y29tcGFyZTpDaGFyLmNvbXBhcmVcbiAgICAgIHw+IExpc3QubWFwIH5mOihmdW4gYyAtPiBjLCBjKVxuICAgIGluXG4gICAgZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyXG4gIDs7XG5cbiAgKCogSW4gYW4gZXNjYXBlZCBzdHJpbmcsIGFueSBjaGFyIGlzIGVpdGhlciBgRXNjYXBpbmcsIGBFc2NhcGVkIG9yIGBMaXRlcmFsLiBGb3JcbiAgICAgZXhhbXBsZSwgdGhlIGVzY2FwZSBzdGF0dXNlcyBvZiBjaGFycyBpbiBzdHJpbmcgXCJhX2FfX1wiIHdpdGggZXNjYXBlX2NoYXIgPSAnXycgYXJlXG5cbiAgICAgYSA6IGBMaXRlcmFsXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgYSA6IGBFc2NhcGVkXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgXyA6IGBFc2NhcGVkXG5cbiAgICAgW3VwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBwcmV2aW91c19zdGF0dXNdIGdldHMgZXNjYXBlIHN0YXR1cyBvZlxuICAgICBzdHIuW2ldIGJhc2luZyBvbiBlc2NhcGUgc3RhdHVzIG9mIHN0ci5baSAtIDFdICopXG4gIGxldCB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgPSBmdW5jdGlvblxuICAgIHwgYEVzY2FwaW5nIC0+IGBFc2NhcGVkXG4gICAgfCBgTGl0ZXJhbCB8IGBFc2NhcGVkIC0+XG4gICAgICBpZiBDaGFyLmVxdWFsIHN0ci5baV0gZXNjYXBlX2NoYXIgdGhlbiBgRXNjYXBpbmcgZWxzZSBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCB1bmVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBidWlsZF9hbmRfdmFsaWRhdGVfZXNjYXBld29ydGh5X21hcCBlc2NhcGV3b3J0aHlfbWFwIGVzY2FwZV9jaGFyIGBVbmVzY2FwZSB3aXRoXG4gICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgIHwgT2sgZXNjYXBld29ydGh5IC0+XG4gICAgICBPa1xuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgICAoKiBDb250aW51ZSB0aGUgZXhhbXBsZSBpbiBbZXNjYXBlX2dlbl9leG5dLCBub3cgd2UgdW5lc2NhcGVcblxuICAgICAgICAgICAgICBcIjAwMF9BMTExX0IyMjJfQzMzM1wiXG5cbiAgICAgICAgICAgICAgYmFjayB0b1xuXG4gICAgICAgICAgICAgIFwiMDAwYTExMWIyMjJjMzMzXCJcblxuICAgICAgICAgICAgICBUaGVuIFt0b191bmVzY2FwZV0gaXMgWzE0OyA5OyA0XSwgd2hpY2ggaXMgaW5kZXhlcyBvZiAnXydzLlxuXG4gICAgICAgICAgICAgIFRoZW4gd2UgY3JlYXRlIGEgc3RyaW5nIFtkc3RdIHRvIHN0b3JlIHRoZSByZXN1bHQsIGNvcHkgXCIzMzNcIiB0byBpdCwgdGhlbiBjb3B5XG4gICAgICAgICAgICAgICdjJywgdGhlbiBtb3ZlIG9uIHRvIG5leHQgaXRlcmF0aW9uLiBBZnRlciAzIGl0ZXJhdGlvbnMgY29weSBcIjAwMFwiIGFuZCB3ZSBhcmVcbiAgICAgICAgICAgICAgZG9uZS4gICopXG4gICAgICAgICAgICgqIGluZGV4ZXMgb2YgZXNjYXBlIGNoYXJzICopXG4gICAgICAgICAgIGxldCB0b191bmVzY2FwZSA9XG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGkgc3RhdHVzIGFjYyA9XG4gICAgICAgICAgICAgICBpZiBpID49IGxlbmd0aCBzcmNcbiAgICAgICAgICAgICAgIHRoZW4gYWNjXG4gICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHNyYyB+ZXNjYXBlX2NoYXIgaSBzdGF0dXMgaW5cbiAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgIChpICsgMSlcbiAgICAgICAgICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBgRXNjYXBpbmcgLT4gaSA6OiBhY2NcbiAgICAgICAgICAgICAgICAgICAgfCBgRXNjYXBlZCB8IGBMaXRlcmFsIC0+IGFjYykpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsb29wIDAgYExpdGVyYWwgW11cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbWF0Y2ggdG9fdW5lc2NhcGUgd2l0aFxuICAgICAgICAgICB8IFtdIC0+IHNyY1xuICAgICAgICAgICB8IGlkeCA6OiB0b191bmVzY2FwZScgLT5cbiAgICAgICAgICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIChsZW5ndGggc3JjIC0gTGlzdC5sZW5ndGggdG9fdW5lc2NhcGUpIGluXG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGxhc3RfaWR4IGxhc3RfZHN0X3BvcyA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIwMDBcIiBhdCBsYXN0ICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOjAgfmxlbjpsYXN0X2lkeFxuICAgICAgICAgICAgICAgfCBpZHggOjogdG9fdW5lc2NhcGUgLT5cbiAgICAgICAgICAgICAgICAgKCogW2lkeF0gPSBpbmRleCBvZiBlc2NhcGluZyBjaGFyICopXG4gICAgICAgICAgICAgICAgICgqIHRha2UgMXN0IGl0ZXJhdGlvbiBhcyBleGFtcGxlLCBjYWxjdWxhdGUgdGhlIGxlbmd0aCBvZiBcIjMzM1wiLCBtaW51cyAyIHRvXG4gICAgICAgICAgICAgICAgICAgIHNraXAgJ19DJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgbGVuID0gbGFzdF9pZHggLSBpZHggLSAyIGluXG4gICAgICAgICAgICAgICAgICgqIHBvaW50IFtkc3RfcG9zXSB0byB0aGUgcG9zaXRpb24gdG8gY29weSBcIjMzM1wiIHRvICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gbGFzdF9kc3RfcG9zIC0gbGVuIGluXG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIzMzNcIiAqKVxuICAgICAgICAgICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOihpZHggKyAyKSB+ZHN0IH5kc3RfcG9zIH5sZW47XG4gICAgICAgICAgICAgICAgICgqIGJhY2tvZmYgW2RzdF9wb3NdIGJ5IDEgdG8gY29weSAnYycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBkc3RfcG9zIC0gMSBpblxuICAgICAgICAgICAgICAgICBCeXRlcy5zZXRcbiAgICAgICAgICAgICAgICAgICBkc3RcbiAgICAgICAgICAgICAgICAgICBkc3RfcG9zXG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIGVzY2FwZXdvcnRoeS4oQ2hhci50b19pbnQgc3JjLltpZHggKyAxXSkgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IC0xIC0+IHNyYy5baWR4ICsgMV1cbiAgICAgICAgICAgICAgICAgICAgfCBuIC0+IENoYXIudW5zYWZlX29mX2ludCBuKTtcbiAgICAgICAgICAgICAgICAgKCogdXBkYXRlIFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdICopXG4gICAgICAgICAgICAgICAgIGxvb3AgaWR4IGRzdF9wb3MgdG9fdW5lc2NhcGVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGlmIGlkeCA8IGxlbmd0aCBzcmMgLSAxXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgKCogc2V0IFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdIHRvIGxlbmd0aCBvZiBbZHN0XSBhbmQgW3NyY10gKilcbiAgICAgICAgICAgICAgIGxvb3AgKGxlbmd0aCBzcmMpIChCeXRlcy5sZW5ndGggZHN0KSB0b191bmVzY2FwZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICgqIGZvciBlc2NhcGVkIHN0cmluZyBlbmRpbmcgd2l0aCBhbiBlc2NhcGluZyBjaGFyIGxpa2UgXCIwMDBfXCIsIGp1c3QgaWdub3JlXG4gICAgICAgICAgICAgICAgICB0aGUgbGFzdCBlc2NhcGluZyBjaGFyICopXG4gICAgICAgICAgICAgICBsb29wIChsZW5ndGggc3JjIC0gMSkgKEJ5dGVzLmxlbmd0aCBkc3QpIHRvX3VuZXNjYXBlJztcbiAgICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbiAgOztcblxuICBsZXQgdW5lc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIE9yX2Vycm9yLm9rX2V4biAodW5lc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhcikgfD4gc3RhZ2VcbiAgOztcblxuICBsZXQgdW5lc2NhcGUgfmVzY2FwZV9jaGFyID0gdW5lc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcDpbXSB+ZXNjYXBlX2NoYXJcblxuICBsZXQgcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgbGV0IHJlYyBsb29wIHAgY250ID1cbiAgICAgIGlmIHAgPCAwIHx8IENoYXIuKCA8PiApIHN0ci5bcF0gZXNjYXBlX2NoYXIgdGhlbiBjbnQgZWxzZSBsb29wIChwIC0gMSkgKGNudCArIDEpXG4gICAgaW5cbiAgICBsb29wIChwb3MgLSAxKSAwXG4gIDs7XG5cbiAgKCogSW4gYW4gZXNjYXBlZCBzdHJpbmcsIGFueSBjaGFyIGlzIGVpdGhlciBgRXNjYXBpbmcsIGBFc2NhcGVkIG9yIGBMaXRlcmFsLiBGb3JcbiAgICAgZXhhbXBsZSwgdGhlIGVzY2FwZSBzdGF0dXNlcyBvZiBjaGFycyBpbiBzdHJpbmcgXCJhX2FfX1wiIHdpdGggZXNjYXBlX2NoYXIgPSAnXycgYXJlXG5cbiAgICAgYSA6IGBMaXRlcmFsXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgYSA6IGBFc2NhcGVkXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgXyA6IGBFc2NhcGVkXG5cbiAgICAgW3VwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBwcmV2aW91c19zdGF0dXNdIGdldHMgZXNjYXBlIHN0YXR1cyBvZlxuICAgICBzdHIuW2ldIGJhc2luZyBvbiBlc2NhcGUgc3RhdHVzIG9mIHN0ci5baSAtIDFdICopXG4gIGxldCB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgPSBmdW5jdGlvblxuICAgIHwgYEVzY2FwaW5nIC0+IGBFc2NhcGVkXG4gICAgfCBgTGl0ZXJhbCB8IGBFc2NhcGVkIC0+XG4gICAgICBpZiBDaGFyLmVxdWFsIHN0ci5baV0gZXNjYXBlX2NoYXIgdGhlbiBgRXNjYXBpbmcgZWxzZSBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBsZXQgb2RkID0gcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyBtb2QgMiA9IDEgaW5cbiAgICBtYXRjaCBvZGQsIENoYXIuZXF1YWwgc3RyLltwb3NdIGVzY2FwZV9jaGFyIHdpdGhcbiAgICB8IHRydWUsICh0cnVlIHwgZmFsc2UpIC0+IGBFc2NhcGVkXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiBgRXNjYXBpbmdcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCBjaGVja19ib3VuZCBzdHIgcG9zIGZ1bmN0aW9uX25hbWUgPVxuICAgIGlmIHBvcyA+PSBsZW5ndGggc3RyIHx8IHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCIlczogb3V0IG9mIGJvdW5kc1wiIGZ1bmN0aW9uX25hbWUgKClcbiAgOztcblxuICBsZXQgaXNfY2hhcl9lc2NhcGluZyBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImlzX2NoYXJfZXNjYXBpbmdcIjtcbiAgICBtYXRjaCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHdpdGhcbiAgICB8IGBFc2NhcGluZyAtPiB0cnVlXG4gICAgfCBgRXNjYXBlZCB8IGBMaXRlcmFsIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGlzX2NoYXJfZXNjYXBlZCBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImlzX2NoYXJfZXNjYXBlZFwiO1xuICAgIG1hdGNoIGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgd2l0aFxuICAgIHwgYEVzY2FwZWQgLT4gdHJ1ZVxuICAgIHwgYEVzY2FwaW5nIHwgYExpdGVyYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfY2hhcl9saXRlcmFsIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9saXRlcmFsXCI7XG4gICAgbWF0Y2ggZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyB3aXRoXG4gICAgfCBgTGl0ZXJhbCAtPiB0cnVlXG4gICAgfCBgRXNjYXBlZCB8IGBFc2NhcGluZyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpbmRleF9mcm9tXCI7XG4gICAgbGV0IHJlYyBsb29wIGkgc3RhdHVzID1cbiAgICAgIGlmIGkgPj0gcG9zXG4gICAgICAmJiAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICAgICAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlKVxuICAgICAgJiYgQ2hhci5lcXVhbCBzdHIuW2ldIGNoYXJcbiAgICAgIHRoZW4gU29tZSBpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGkgPSBpICsgMSBpblxuICAgICAgICBpZiBpID49IGxlbmd0aCBzdHJcbiAgICAgICAgdGhlbiBOb25lXG4gICAgICAgIGVsc2UgbG9vcCBpICh1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgc3RhdHVzKSlcbiAgICBpblxuICAgIGxvb3AgcG9zIChlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zKVxuICA7O1xuXG4gIGxldCBpbmRleF9mcm9tX2V4biBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyID1cbiAgICBtYXRjaCBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiXG4gICAgICAgICAgIFsgXCJzdHJcIiwgc2V4cF9vZl90IHN0clxuICAgICAgICAgICA7IFwiZXNjYXBlX2NoYXJcIiwgc2V4cF9vZl9jaGFyIGVzY2FwZV9jaGFyXG4gICAgICAgICAgIDsgXCJwb3NcIiwgc2V4cF9vZl9pbnQgcG9zXG4gICAgICAgICAgIDsgXCJjaGFyXCIsIHNleHBfb2ZfY2hhciBjaGFyXG4gICAgICAgICAgIF0pXG4gICAgfCBTb21lIHBvcyAtPiBwb3NcbiAgOztcblxuICBsZXQgaW5kZXggc3RyIH5lc2NhcGVfY2hhciBjaGFyID0gaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIDAgY2hhclxuICBsZXQgaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9IGluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgMCBjaGFyXG5cbiAgbGV0IHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJyaW5kZXhfZnJvbVwiO1xuICAgICgqIGlmIHRoZSB0YXJnZXQgY2hhciBpcyB0aGUgc2FtZSBhcyBbZXNjYXBlX2NoYXJdLCB3ZSBoYXZlIG5vIHdheSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICBlc2NhcGVfY2hhciBpcyBsaXRlcmFsLCBzbyBqdXN0IHJldHVybiBOb25lICopXG4gICAgaWYgQ2hhci5lcXVhbCBjaGFyIGVzY2FwZV9jaGFyXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgcG9zID1cbiAgICAgICAgaWYgcG9zIDwgMFxuICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVzY2FwZV9jaGFycyA9IHByZWNlZGluZ19lc2NhcGVfY2hhcnMgc3RyIH5lc2NhcGVfY2hhciBwb3MgaW5cbiAgICAgICAgICBpZiBlc2NhcGVfY2hhcnMgbW9kIDIgPSAwICYmIENoYXIuZXF1YWwgc3RyLltwb3NdIGNoYXJcbiAgICAgICAgICB0aGVuIFNvbWUgcG9zXG4gICAgICAgICAgZWxzZSBsb29wIChwb3MgLSBlc2NhcGVfY2hhcnMgLSAxKSlcbiAgICAgIGluXG4gICAgICBsb29wIHBvcylcbiAgOztcblxuICBsZXQgcmluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIG1hdGNoIHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwicmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIlxuICAgICAgICAgICBbIFwic3RyXCIsIHNleHBfb2ZfdCBzdHJcbiAgICAgICAgICAgOyBcImVzY2FwZV9jaGFyXCIsIHNleHBfb2ZfY2hhciBlc2NhcGVfY2hhclxuICAgICAgICAgICA7IFwicG9zXCIsIHNleHBfb2ZfaW50IHBvc1xuICAgICAgICAgICA7IFwiY2hhclwiLCBzZXhwX29mX2NoYXIgY2hhclxuICAgICAgICAgICBdKVxuICAgIHwgU29tZSBwb3MgLT4gcG9zXG4gIDs7XG5cbiAgbGV0IHJpbmRleCBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPVxuICAgIGlmIGlzX2VtcHR5IHN0ciB0aGVuIE5vbmUgZWxzZSByaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIChsZW5ndGggc3RyIC0gMSkgY2hhclxuICA7O1xuXG4gIGxldCByaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9XG4gICAgcmluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgKGxlbmd0aCBzdHIgLSAxKSBjaGFyXG4gIDs7XG5cbiAgKCogW3NwbGl0X2dlbiBzdHIgfmVzY2FwZV9jaGFyIH5vbl0gd29ya3Mgc2ltaWxhcmx5IHRvIFtTdHJpbmcuc3BsaXRfZ2VuXSwgd2l0aCBhblxuICAgICBhZGRpdGlvbmFsIHJlcXVpcmVtZW50OiBvbmx5IHNwbGl0IG9uIGxpdGVyYWwgY2hhcnMsIG5vdCBlc2NhcGluZyBvciBlc2NhcGVkICopXG4gIGxldCBzcGxpdF9nZW4gc3RyIH5lc2NhcGVfY2hhciB+b24gPVxuICAgIGxldCBpc19kZWxpbSA9XG4gICAgICBtYXRjaCBvbiB3aXRoXG4gICAgICB8IGBjaGFyIGMnIC0+IGZ1biBjIC0+IENoYXIuZXF1YWwgYyBjJ1xuICAgICAgfCBgY2hhcl9saXN0IGwgLT4gZnVuIGMgLT4gY2hhcl9saXN0X21lbSBsIGNcbiAgICBpblxuICAgIGxldCBsZW4gPSBsZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBsb29wIGFjYyBzdGF0dXMgbGFzdF9wb3MgcG9zID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiBMaXN0LnJldiAoc3ViIHN0ciB+cG9zOmxhc3RfcG9zIH5sZW46KGxlbiAtIGxhc3RfcG9zKSA6OiBhY2MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHN0YXR1cyA9IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHN0YXR1cyBpblxuICAgICAgICBpZiAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICAgICAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlKVxuICAgICAgICAmJiBpc19kZWxpbSBzdHIuW3Bvc11cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHN1Yl9zdHIgPSBzdWIgc3RyIH5wb3M6bGFzdF9wb3MgfmxlbjoocG9zIC0gbGFzdF9wb3MpIGluXG4gICAgICAgICAgbG9vcCAoc3ViX3N0ciA6OiBhY2MpIHN0YXR1cyAocG9zICsgMSkgKHBvcyArIDEpKVxuICAgICAgICBlbHNlIGxvb3AgYWNjIHN0YXR1cyBsYXN0X3BvcyAocG9zICsgMSkpXG4gICAgaW5cbiAgICBsb29wIFtdIGBMaXRlcmFsIDAgMFxuICA7O1xuXG4gIGxldCBzcGxpdCBzdHIgfm9uID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyIG9uKVxuICBsZXQgc3BsaXRfb25fY2hhcnMgc3RyIH5vbjpjaGFycyA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhcl9saXN0IGNoYXJzKVxuXG4gIGxldCBzcGxpdF9hdCBzdHIgcG9zID1cbiAgICBzdWIgc3RyIH5wb3M6MCB+bGVuOnBvcywgc3ViIHN0ciB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggc3RyIC0gcG9zIC0gMSlcbiAgOztcblxuICBsZXQgbHNwbGl0MiBzdHIgfm9uIH5lc2NhcGVfY2hhciA9XG4gICAgT3B0aW9uLm1hcCAoaW5kZXggc3RyIH5lc2NhcGVfY2hhciBvbikgfmY6KGZ1biB4IC0+IHNwbGl0X2F0IHN0ciB4KVxuICA7O1xuXG4gIGxldCByc3BsaXQyIHN0ciB+b24gfmVzY2FwZV9jaGFyID1cbiAgICBPcHRpb24ubWFwIChyaW5kZXggc3RyIH5lc2NhcGVfY2hhciBvbikgfmY6KGZ1biB4IC0+IHNwbGl0X2F0IHN0ciB4KVxuICA7O1xuXG4gIGxldCBsc3BsaXQyX2V4biBzdHIgfm9uIH5lc2NhcGVfY2hhciA9IHNwbGl0X2F0IHN0ciAoaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgb24pXG4gIGxldCByc3BsaXQyX2V4biBzdHIgfm9uIH5lc2NhcGVfY2hhciA9IHNwbGl0X2F0IHN0ciAocmluZGV4X2V4biBzdHIgfmVzY2FwZV9jaGFyIG9uKVxuXG4gICgqIFtsYXN0X25vbl9kcm9wX2xpdGVyYWxdIGFuZCBbZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbF0gYXJlIGVpdGhlciBib3RoIFtOb25lXSBvciBib3RoXG4gICAgIFtTb21lXS4gSWYgW1NvbWVdLCB0aGVuIHRoZSBmb3JtZXIgaXMgPj0gdGhlIGxhdHRlci4gKilcbiAgbGV0IGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB+ZHJvcCB+ZXNjYXBlX2NoYXIgdCA9XG4gICAgcmZpbmRpIHQgfmY6KGZ1biBpIGMgLT5cbiAgICAgIChub3QgKGRyb3AgYykpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwaW5nIHQgfmVzY2FwZV9jaGFyIGlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBlZCB0IH5lc2NhcGVfY2hhciBpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgfmRyb3AgfmVzY2FwZV9jaGFyIHQgPVxuICAgIGxmaW5kaSB0IH5mOihmdW4gaSBjIC0+XG4gICAgICAobm90IChkcm9wIGMpKVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGluZyB0IH5lc2NhcGVfY2hhciBpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwZWQgdCB+ZXNjYXBlX2NoYXIgaSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCByc3RyaXBfbGl0ZXJhbCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBsYXN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIGkgLT4gaWYgaSA9IGxlbmd0aCB0IC0gMSB0aGVuIHQgZWxzZSBwcmVmaXggdCAoaSArIDEpXG4gIDs7XG5cbiAgbGV0IGxzdHJpcF9saXRlcmFsID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIDAgLT4gdFxuICAgIHwgU29tZSBuIC0+IGRyb3BfcHJlZml4IHQgblxuICA7O1xuXG4gICgqIFtzdHJpcCB0XSBjb3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBbbHN0cmlwIChyc3RyaXAgdCldLiAgVGhlIGltcGxlbWVudGF0aW9uXG4gICAgIGJlbG93IHNhdmVzIChhdCBsZWFzdCkgYSBmYWN0b3Igb2YgdHdvIGFsbG9jYXRpb24sIGJ5IG9ubHkgYWxsb2NhdGluZyB0aGVcbiAgICAgZmluYWwgcmVzdWx0LiAgVGhpcyBhbHNvIHNhdmVzIHNvbWUgYW1vdW50IG9mIHRpbWUuICopXG4gIGxldCBzdHJpcF9saXRlcmFsID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCB+ZXNjYXBlX2NoYXIgPVxuICAgIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICAgICgqIHBlcmZvcm1hbmNlIGhhY2s6IGF2b2lkIGNvcHlpbmcgW3RdIGluIGNvbW1vbiBjYXNlcyAqKVxuICAgIGlmIGxlbmd0aCA9IDAgfHwgbm90IChkcm9wIHQuWzBdIHx8IGRyb3AgdC5bbGVuZ3RoIC0gMV0pXG4gICAgdGhlbiB0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBmaXJzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgICAgKG1hdGNoIGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICB8IFNvbWUgbGFzdCAtPiBzdWIgdCB+cG9zOmZpcnN0IH5sZW46KGxhc3QgLSBmaXJzdCArIDEpKSlcbiAgOztcbmVuZFxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBTdHJpbmdfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbigqIE92ZXJyaWRlIFtTZWFyY2hfcGF0dGVybl0gd2l0aCBkZWZhdWx0IGNhc2Utc2Vuc2l0aXZpdHkgYXJndW1lbnQgYXQgdGhlIGVuZCBvZiB0aGVcbiAgIGZpbGUsIHNvIHRoYXQgY2FsbCBzaXRlcyBhYm92ZSBhcmUgZm9yY2VkIHRvIHN1cHBseSBjYXNlLXNlbnNpdGl2aXR5IGV4cGxpY2l0bHkuICopXG5tb2R1bGUgU2VhcmNoX3BhdHRlcm4gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZWFyY2hfcGF0dGVybjBcblxuICBsZXQgY3JlYXRlID8oY2FzZV9zZW5zaXRpdmUgPSB0cnVlKSBwYXR0ZXJuID0gY3JlYXRlIHBhdHRlcm4gfmNhc2Vfc2Vuc2l0aXZlXG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIFN0cmluZ19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5cbmxldCBzdGFnZSA9IFN0YWdlZC5zdGFnZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBieXRlcyBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfYnl0ZXMgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuICBsZXQgdF9vZl9zZXhwID0gKGJ5dGVzX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2J5dGVzIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGJ5dGVzX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBCeXRlczBcblxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuQnl0ZXNcIlxuICBsZXQgcHAgZm10IHQgPSBTdGRsaWIuRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiAodG9fc3RyaW5nIHQpXG5lbmRcblxuaW5jbHVkZSBUXG5cbm1vZHVsZSBUb19ieXRlcyA9IEJsaXQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG4gIGVuZClcblxuaW5jbHVkZSBUb19ieXRlc1xuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChUKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBCeXRlc19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBUb19zdHJpbmcgPSBCbGl0Lk1ha2VfdG9fc3RyaW5nIChUKSAoVG9fYnl0ZXMpXG5cbm1vZHVsZSBGcm9tX3N0cmluZyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdF9zdHJpbmdcbiAgICBlbmQpXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5cbmxldCBpbml0IG4gfmYgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIG4gMFxuICB0aGVuIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJCeXRlcy5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHQgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHQgaSAoZiBpKVxuICBkb25lO1xuICB0XG47O1xuXG5sZXQgb2ZfY2hhcl9saXN0IGwgPVxuICBsZXQgdCA9IGNyZWF0ZSAoTGlzdC5sZW5ndGggbCkgaW5cbiAgTGlzdC5pdGVyaSBsIH5mOihmdW4gaSBjIC0+IHNldCB0IGkgYyk7XG4gIHRcbjs7XG5cbmxldCB0b19saXN0IHQgPVxuICBsZXQgcmVjIGxvb3AgdCBpIGFjYyA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBpIDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2UgbG9vcCB0IChpIC0gMSkgKHVuc2FmZV9nZXQgdCBpIDo6IGFjYylcbiAgaW5cbiAgbG9vcCB0IChsZW5ndGggdCAtIDEpIFtdXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5sZXQgbWFwIHQgfmYgPSBtYXAgdCB+ZlxubGV0IG1hcGkgdCB+ZiA9IG1hcGkgdCB+ZlxuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgbG9vcCB0IH5mIH5sZW4gfnBvcyBhY2MgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgcG9zIGxlblxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgfmYgfmxlbiB+cG9zOihwb3MgKyAxKSAoZiBhY2MgKHVuc2FmZV9nZXQgdCBwb3MpKVxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgfmYgfmxlbjoobGVuZ3RoIHQpIH5wb3M6MCBpbml0XG47O1xuXG5sZXQgZm9sZGkgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiB+bGVuIH5wb3MgYWNjID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmVxdWFsIHBvcyBsZW5cbiAgICB0aGVuIGFjY1xuICAgIGVsc2UgbG9vcCB0IH5mIH5sZW4gfnBvczoocG9zICsgMSkgKGYgcG9zIGFjYyAodW5zYWZlX2dldCB0IHBvcykpXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCB+ZiB+bGVuOihsZW5ndGggdCkgfnBvczowIGluaXRcbjs7XG5cbmxldCB0ciB+dGFyZ2V0IH5yZXBsYWNlbWVudCBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgIGlmIENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgcyBpKSB0YXJnZXQgdGhlbiB1bnNhZmVfc2V0IHMgaSByZXBsYWNlbWVudFxuICBkb25lXG47O1xuXG5sZXQgdHJfbXVsdGkgfnRhcmdldCB+cmVwbGFjZW1lbnQgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChTdHJpbmcubGVuZ3RoIHRhcmdldCkgMFxuICB0aGVuIHN0YWdlIGlnbm9yZVxuICBlbHNlIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQpIDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcInRyX211bHRpOiByZXBsYWNlbWVudCBpcyB0aGUgZW1wdHkgc3RyaW5nXCJcbiAgZWxzZSAoXG4gICAgbWF0Y2ggQnl0ZXNfdHIudHJfY3JlYXRlX21hcCB+dGFyZ2V0IH5yZXBsYWNlbWVudCB3aXRoXG4gICAgfCBOb25lIC0+IHN0YWdlIGlnbm9yZVxuICAgIHwgU29tZSB0cl9tYXAgLT5cbiAgICAgIHN0YWdlIChmdW4gcyAtPlxuICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBzIGkgKFN0cmluZy51bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgKHVuc2FmZV9nZXQgcyBpKSkpXG4gICAgICAgIGRvbmUpKVxuOztcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0IGNvbnRhaW5zID9wb3MgP2xlbiB0IGNoYXIgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgbGV0IGxhc3QgPSBwb3MgKyBsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgaSBsYXN0XG4gICAgJiYgKENoYXIuZXF1YWwgKGdldCB0IGkpIGNoYXIgfHwgbG9vcCAoaSArIDEpKVxuICBpblxuICBsb29wIHBvc1xuOztcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiIyAxIFwic3JjL2hleF9sZXhlci5tbGxcIlxuIFxudHlwZSByZXN1bHQgPVxufCBOZWcgb2Ygc3RyaW5nXG58IFBvcyBvZiBzdHJpbmdcblxuIyA4IFwic3JjL2hleF9sZXhlci5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDI3XFwwMDBcXDA4MlxcMDAwXFwxMDVcXDAwMFxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA0XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcGFyc2VfaGV4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9wYXJzZV9oZXhfcmVjIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcGFyc2VfaGV4X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgOCBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlcbiMgMTM1IFwic3JjL2hleF9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMykgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTQgXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggTmVnIGJvZHkgKVxuIyAxMzkgXCJzcmMvaGV4X2xleGVyLm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyA4IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keVxuIyAxNDUgXCJzcmMvaGV4X2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNSBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBQb3MgYm9keSApXG4jIDE0OSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9wYXJzZV9oZXhfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5sZXQgY29udmVydF9mYWlsdXJlIHggYSBiIHRvX3N0cmluZyA9XG4gIFByaW50Zi5mYWlsd2l0aGZcbiAgICBcImNvbnZlcnNpb24gZnJvbSAlcyB0byAlcyBmYWlsZWQ6ICVzIGlzIG91dCBvZiByYW5nZVwiXG4gICAgYVxuICAgIGJcbiAgICAodG9fc3RyaW5nIHgpXG4gICAgKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgbnVtX2JpdHNfaW50ID0gU3lzLmludF9zaXplX2luX2JpdHNcbmxldCBudW1fYml0c19pbnQzMiA9IDMyXG5sZXQgbnVtX2JpdHNfaW50NjQgPSA2NFxubGV0IG51bV9iaXRzX25hdGl2ZWludCA9IFdvcmRfc2l6ZS5udW1fYml0cyBXb3JkX3NpemUud29yZF9zaXplXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludCA9IDYzIHx8IG51bV9iaXRzX2ludCA9IDMxIHx8IG51bV9iaXRzX2ludCA9IDMyKVxubGV0IG1pbl9pbnQzMiA9IFN0ZGxpYi5JbnQzMi5taW5faW50XG5sZXQgbWF4X2ludDMyID0gU3RkbGliLkludDMyLm1heF9pbnRcbmxldCBtaW5faW50NjQgPSBTdGRsaWIuSW50NjQubWluX2ludFxubGV0IG1heF9pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5tYXhfaW50XG5sZXQgbWluX25hdGl2ZWludCA9IFN0ZGxpYi5OYXRpdmVpbnQubWluX2ludFxubGV0IG1heF9uYXRpdmVpbnQgPSBTdGRsaWIuTmF0aXZlaW50Lm1heF9pbnRcbmxldCBpbnRfdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9pbnRcbmxldCBpbnQzMl90b19zdHJpbmcgPSBTdGRsaWIuSW50MzIudG9fc3RyaW5nXG5sZXQgaW50NjRfdG9fc3RyaW5nID0gU3RkbGliLkludDY0LnRvX3N0cmluZ1xubGV0IG5hdGl2ZWludF90b19zdHJpbmcgPSBTdGRsaWIuTmF0aXZlaW50LnRvX3N0cmluZ1xuXG4oKiBpbnQgPC0+IGludDMyICopXG5cbmxldCBpbnRfdG9faW50MzJfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnRcIiBcImludDMyXCIgaW50X3RvX3N0cmluZ1xubGV0IGludDMyX3RvX2ludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDMyXCIgXCJpbnRcIiBpbnQzMl90b19zdHJpbmdcbmxldCBpbnQzMl90b19pbnRfdHJ1bmMgPSBTdGRsaWIuSW50MzIudG9faW50XG5sZXQgaW50X3RvX2ludDMyX3RydW5jID0gU3RkbGliLkludDMyLm9mX2ludFxuXG5sZXQgaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgPVxuICBpZiBudW1fYml0c19pbnQgPD0gbnVtX2JpdHNfaW50MzJcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnQzMl90b19pbnRfdHJ1bmMgbWluX2ludDMyIGluXG4gICAgbGV0IG1heCA9IGludDMyX3RvX2ludF90cnVuYyBtYXhfaW50MzIgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX2ludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgaW50MzJfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgPVxuICBpZiBudW1fYml0c19pbnQzMiA8PSBudW1fYml0c19pbnRcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnRfdG9faW50MzJfdHJ1bmMgSW50Lm1pbl92YWx1ZSBpblxuICAgIGxldCBtYXggPSBpbnRfdG9faW50MzJfdHJ1bmMgSW50Lm1heF92YWx1ZSBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfaW50MzIgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDMyIHggbWF4IDw9IDApXG47O1xuXG5sZXQgaW50X3RvX2ludDMyIHggPVxuICBpZiBpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4IHRoZW4gU29tZSAoaW50X3RvX2ludDMyX3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludDMyX3RvX2ludCB4ID1cbiAgaWYgaW50MzJfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIFNvbWUgKGludDMyX3RvX2ludF90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnRfdG9faW50MzJfZXhuIHggPVxuICBpZiBpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4IHRoZW4gaW50X3RvX2ludDMyX3RydW5jIHggZWxzZSBpbnRfdG9faW50MzJfZmFpbHVyZSB4XG47O1xuXG5sZXQgaW50MzJfdG9faW50X2V4biB4ID1cbiAgaWYgaW50MzJfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIGludDMyX3RvX2ludF90cnVuYyB4IGVsc2UgaW50MzJfdG9faW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50IDwtPiBpbnQ2NCAqKVxuXG5sZXQgaW50NjRfdG9faW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludFwiIGludDY0X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQgPCBudW1fYml0c19pbnQ2NClcbmxldCBpbnRfdG9faW50NjQgPSBTdGRsaWIuSW50NjQub2ZfaW50XG5sZXQgaW50NjRfdG9faW50X3RydW5jID0gU3RkbGliLkludDY0LnRvX2ludFxuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgPVxuICBsZXQgbWluID0gaW50X3RvX2ludDY0IEludC5taW5fdmFsdWUgaW5cbiAgbGV0IG1heCA9IGludF90b19pbnQ2NCBJbnQubWF4X3ZhbHVlIGluXG4gIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDBcbjs7XG5cbmxldCBpbnQ2NF90b19pbnQgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBTb21lIChpbnQ2NF90b19pbnRfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50NjRfdG9faW50X2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIGludDY0X3RvX2ludF90cnVuYyB4IGVsc2UgaW50NjRfdG9faW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50IDwtPiBuYXRpdmVpbnQgKilcblxubGV0IG5hdGl2ZWludF90b19pbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJuYXRpdmVpbnRcIiBcImludFwiIG5hdGl2ZWludF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50IDw9IG51bV9iaXRzX25hdGl2ZWludClcbmxldCBpbnRfdG9fbmF0aXZlaW50ID0gU3RkbGliLk5hdGl2ZWludC5vZl9pbnRcbmxldCBuYXRpdmVpbnRfdG9faW50X3RydW5jID0gU3RkbGliLk5hdGl2ZWludC50b19pbnRcblxubGV0IG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGlmIG51bV9iaXRzX25hdGl2ZWludCA8PSBudW1fYml0c19pbnRcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnRfdG9fbmF0aXZlaW50IEludC5taW5fdmFsdWUgaW5cbiAgICBsZXQgbWF4ID0gaW50X3RvX25hdGl2ZWludCBJbnQubWF4X3ZhbHVlIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9uYXRpdmVpbnQgbWluIHggPD0gMCAmJiBjb21wYXJlX25hdGl2ZWludCB4IG1heCA8PSAwKVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnQgeCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gU29tZSAobmF0aXZlaW50X3RvX2ludF90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50X2V4biB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHhcbiAgdGhlbiBuYXRpdmVpbnRfdG9faW50X3RydW5jIHhcbiAgZWxzZSBuYXRpdmVpbnRfdG9faW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50MzIgPC0+IGludDY0ICopXG5cbmxldCBpbnQ2NF90b19pbnQzMl9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJpbnQzMlwiIGludDY0X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQzMiA8IG51bV9iaXRzX2ludDY0KVxubGV0IGludDMyX3RvX2ludDY0ID0gU3RkbGliLkludDY0Lm9mX2ludDMyXG5sZXQgaW50NjRfdG9faW50MzJfdHJ1bmMgPSBTdGRsaWIuSW50NjQudG9faW50MzJcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgPVxuICBsZXQgbWluID0gaW50MzJfdG9faW50NjQgbWluX2ludDMyIGluXG4gIGxldCBtYXggPSBpbnQzMl90b19pbnQ2NCBtYXhfaW50MzIgaW5cbiAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMFxuOztcblxubGV0IGludDY0X3RvX2ludDMyIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBTb21lIChpbnQ2NF90b19pbnQzMl90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19pbnQzMl9leG4geCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeFxuICB0aGVuIGludDY0X3RvX2ludDMyX3RydW5jIHhcbiAgZWxzZSBpbnQ2NF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbigqIGludDMyIDwtPiBuYXRpdmVpbnQgKilcblxubGV0IG5hdGl2ZWludF90b19pbnQzMl9mYWlsdXJlIHggPVxuICBjb252ZXJ0X2ZhaWx1cmUgeCBcIm5hdGl2ZWludFwiIFwiaW50MzJcIiBuYXRpdmVpbnRfdG9fc3RyaW5nXG47O1xuXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludDMyIDw9IG51bV9iaXRzX25hdGl2ZWludClcbmxldCBpbnQzMl90b19uYXRpdmVpbnQgPSBTdGRsaWIuTmF0aXZlaW50Lm9mX2ludDMyXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX3RydW5jID0gU3RkbGliLk5hdGl2ZWludC50b19pbnQzMlxuXG5sZXQgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgPVxuICBpZiBudW1fYml0c19uYXRpdmVpbnQgPD0gbnVtX2JpdHNfaW50MzJcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnQzMl90b19uYXRpdmVpbnQgbWluX2ludDMyIGluXG4gICAgbGV0IG1heCA9IGludDMyX3RvX25hdGl2ZWludCBtYXhfaW50MzIgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX25hdGl2ZWludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfbmF0aXZlaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyIHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4XG4gIHRoZW4gU29tZSAobmF0aXZlaW50X3RvX2ludDMyX3RydW5jIHgpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnQzMl9leG4geCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHhcbiAgdGhlbiBuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgeFxuICBlbHNlIG5hdGl2ZWludF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbigqIGludDY0IDwtPiBuYXRpdmVpbnQgKilcblxubGV0IGludDY0X3RvX25hdGl2ZWludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJuYXRpdmVpbnRcIiBpbnQ2NF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50NjQgPj0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludDY0X3RvX25hdGl2ZWludF90cnVuYyA9IFN0ZGxpYi5JbnQ2NC50b19uYXRpdmVpbnRcbmxldCBuYXRpdmVpbnRfdG9faW50NjQgPSBTdGRsaWIuSW50NjQub2ZfbmF0aXZlaW50XG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX25hdGl2ZWludCA9XG4gIGlmIG51bV9iaXRzX2ludDY0IDw9IG51bV9iaXRzX25hdGl2ZWludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IG5hdGl2ZWludF90b19pbnQ2NCBtaW5fbmF0aXZlaW50IGluXG4gICAgbGV0IG1heCA9IG5hdGl2ZWludF90b19pbnQ2NCBtYXhfbmF0aXZlaW50IGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnQ2NF90b19uYXRpdmVpbnQgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aXZlaW50IHhcbiAgdGhlbiBTb21lIChpbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmMgeClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpdmVpbnQgeFxuICB0aGVuIGludDY0X3RvX25hdGl2ZWludF90cnVuYyB4XG4gIGVsc2UgaW50NjRfdG9fbmF0aXZlaW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50NjQgPC0+IGludDYzICopXG5cbmxldCBpbnQ2NF90b19pbnQ2M19mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJpbnQ2M1wiIGludDY0X3RvX3N0cmluZ1xuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyA9XG4gIGxldCBtaW4gPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgbWluX2ludDY0IDEgaW5cbiAgbGV0IG1heCA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodCBtYXhfaW50NjQgMSBpblxuICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwXG47O1xuXG5sZXQgaW50NjRfZml0X29uX2ludDYzX2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyB4IHRoZW4gKCkgZWxzZSBpbnQ2NF90b19pbnQ2M19mYWlsdXJlIHhcbjs7XG5cbigqIHN0cmluZyBjb252ZXJzaW9ucyAqKVxuXG5sZXQgaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSBpbnB1dCB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyID1cbiAgbGV0IGlucHV0X2xlbmd0aCA9IFN0cmluZy5sZW5ndGggaW5wdXQgaW5cbiAgaWYgaW5wdXRfbGVuZ3RoIDw9IGNoYXJzX3Blcl9kZWxpbWl0ZXJcbiAgdGhlbiBpbnB1dFxuICBlbHNlIChcbiAgICBsZXQgaGFzX3NpZ24gPVxuICAgICAgbWF0Y2ggaW5wdXQuWzBdIHdpdGhcbiAgICAgIHwgJysnIHwgJy0nIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgbGV0IG51bV9kaWdpdHMgPSBpZiBoYXNfc2lnbiB0aGVuIGlucHV0X2xlbmd0aCAtIDEgZWxzZSBpbnB1dF9sZW5ndGggaW5cbiAgICBsZXQgbnVtX2RlbGltaXRlcnMgPSAobnVtX2RpZ2l0cyAtIDEpIC8gY2hhcnNfcGVyX2RlbGltaXRlciBpblxuICAgIGxldCBvdXRwdXRfbGVuZ3RoID0gaW5wdXRfbGVuZ3RoICsgbnVtX2RlbGltaXRlcnMgaW5cbiAgICBsZXQgb3V0cHV0ID0gQnl0ZXMuY3JlYXRlIG91dHB1dF9sZW5ndGggaW5cbiAgICBsZXQgaW5wdXRfcG9zID0gcmVmIChpbnB1dF9sZW5ndGggLSAxKSBpblxuICAgIGxldCBvdXRwdXRfcG9zID0gcmVmIChvdXRwdXRfbGVuZ3RoIC0gMSkgaW5cbiAgICBsZXQgbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciA9IHJlZiBjaGFyc19wZXJfZGVsaW1pdGVyIGluXG4gICAgbGV0IGZpcnN0X2RpZ2l0X3BvcyA9IGlmIGhhc19zaWduIHRoZW4gMSBlbHNlIDAgaW5cbiAgICB3aGlsZSAhaW5wdXRfcG9zID49IGZpcnN0X2RpZ2l0X3BvcyBkb1xuICAgICAgaWYgIW51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXIgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgQnl0ZXMuc2V0IG91dHB1dCAhb3V0cHV0X3BvcyBkZWxpbWl0ZXI7XG4gICAgICAgIGRlY3Igb3V0cHV0X3BvcztcbiAgICAgICAgbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciA6PSBjaGFyc19wZXJfZGVsaW1pdGVyKTtcbiAgICAgIEJ5dGVzLnNldCBvdXRwdXQgIW91dHB1dF9wb3MgaW5wdXQuWyFpbnB1dF9wb3NdO1xuICAgICAgZGVjciBpbnB1dF9wb3M7XG4gICAgICBkZWNyIG91dHB1dF9wb3M7XG4gICAgICBkZWNyIG51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXJcbiAgICBkb25lO1xuICAgIGlmIGhhc19zaWduIHRoZW4gQnl0ZXMuc2V0IG91dHB1dCAwIGlucHV0LlswXTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOm91dHB1dClcbjs7XG5cbmxldCBpbnNlcnRfZGVsaW1pdGVyIGlucHV0IH5kZWxpbWl0ZXIgPVxuICBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IGlucHV0IH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXI6M1xuOztcblxubGV0IGluc2VydF91bmRlcnNjb3JlcyBpbnB1dCA9IGluc2VydF9kZWxpbWl0ZXIgaW5wdXQgfmRlbGltaXRlcjonXydcbmxldCBzZXhwX29mX2ludF9zdHlsZSA9IFNleHAub2ZfaW50X3N0eWxlXG5cbm1vZHVsZSBNYWtlIChJIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgb3BlbiBJXG5cbiAgbGV0IGNoYXJzX3Blcl9kZWxpbWl0ZXIgPSAzXG5cbiAgbGV0IHRvX3N0cmluZ19odW0gPyhkZWxpbWl0ZXIgPSAnXycpIHQgPVxuICAgIGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgKHRvX3N0cmluZyB0KSB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICBsZXQgcyA9IHRvX3N0cmluZyB0IGluXG4gICAgU2V4cC5BdG9tXG4gICAgICAobWF0Y2ggIXNleHBfb2ZfaW50X3N0eWxlIHdpdGhcbiAgICAgICB8IGBVbmRlcnNjb3JlcyAtPiBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IHMgfmNoYXJzX3Blcl9kZWxpbWl0ZXIgfmRlbGltaXRlcjonXydcbiAgICAgICB8IGBOb191bmRlcnNjb3JlcyAtPiBzKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2hleCAoSSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgdmFsIHplcm8gOiB0XG4gICAgdmFsICggPCApIDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgbmVnIDogdCAtPiB0XG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUX2hleCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEkudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKEkuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBJLmhhc2hfZm9sZF90XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IEkuaGFzaCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY2hhcnNfcGVyX2RlbGltaXRlciA9IDRcblxuICAgIGxldCB0b19zdHJpbmcnID9kZWxpbWl0ZXIgdCA9XG4gICAgICBsZXQgbWFrZV9zdWZmaXggPVxuICAgICAgICBtYXRjaCBkZWxpbWl0ZXIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gSS50b19zdHJpbmdcbiAgICAgICAgfCBTb21lIGRlbGltaXRlciAtPlxuICAgICAgICAgIGZ1biB0IC0+IGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgKEkudG9fc3RyaW5nIHQpIH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXJcbiAgICAgIGluXG4gICAgICBpZiBJLiggPCApIHQgSS56ZXJvIHRoZW4gXCItMHhcIiBeIG1ha2Vfc3VmZml4IChJLm5lZyB0KSBlbHNlIFwiMHhcIiBeIG1ha2Vfc3VmZml4IHRcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyB0ID0gdG9fc3RyaW5nJyB0ID9kZWxpbWl0ZXI6Tm9uZVxuICAgIGxldCB0b19zdHJpbmdfaHVtID8oZGVsaW1pdGVyID0gJ18nKSB0ID0gdG9fc3RyaW5nJyB0IH5kZWxpbWl0ZXJcblxuICAgIGxldCBpbnZhbGlkIHN0ciA9XG4gICAgICBQcmludGYuZmFpbHdpdGhmIFwiJXMub2Zfc3RyaW5nOiBpbnZhbGlkIGlucHV0ICVTXCIgSS5tb2R1bGVfbmFtZSBzdHIgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZ193aXRoX2RlbGltaXRlciBzdHIgPVxuICAgICAgSS5vZl9zdHJpbmcgKFN0cmluZy5maWx0ZXIgc3RyIH5mOihmdW4gYyAtPiBDaGFyLiggPD4gKSBjICdfJykpXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgc3RyID1cbiAgICAgIGxldCBtb2R1bGUgTCA9IEhleF9sZXhlciBpblxuICAgICAgbGV0IGxleCA9IFN0ZGxpYi5MZXhpbmcuZnJvbV9zdHJpbmcgc3RyIGluXG4gICAgICBsZXQgcmVzdWx0ID0gT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gTC5wYXJzZV9oZXggbGV4KSBpblxuICAgICAgaWYgbGV4LmxleF9jdXJyX3BvcyA9IGxleC5sZXhfYnVmZmVyX2xlblxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpbnZhbGlkIHN0clxuICAgICAgICB8IFNvbWUgKE5lZyBib2R5KSAtPiBJLm5lZyAob2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIGJvZHkpXG4gICAgICAgIHwgU29tZSAoUG9zIGJvZHkpIC0+IG9mX3N0cmluZ193aXRoX2RlbGltaXRlciBib2R5KVxuICAgICAgZWxzZSBpbnZhbGlkIHN0clxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRfaGV4XG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zdHJpbmdhYmxlIChUX2hleClcbiAgZW5kXG5lbmRcbiIsIigqIFRoaXMgZmlsZSB3YXMgYXV0b2dlbmVyYXRlZCBieSAuLi9nZW5lcmF0ZS9nZW5lcmF0ZV9wb3dfb3ZlcmZsb3dfYm91bmRzLmV4ZSAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5cbigqIFdlIGhhdmUgdG8gdXNlIEludDY0LnRvX2ludF9leG4gaW5zdGVhZCBvZiBpbnQgY29uc3RhbnRzIHRvIG1ha2VcbiAgIHN1cmUgdGhhdCBmaWxlIGNhbiBiZSBwcmVwcm9jZXNzZWQgb24gMzItYml0IG1hY2hpbmVzLiAqKVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDMyX3ZhbHVlIDogaW50MzIgPVxuICAyMTQ3NDgzNjQ3bFxuXG5sZXQgaW50MzJfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50MzIgYXJyYXkgPVxuICBbfCAyMTQ3NDgzNjQ3bFxuICA7ICAyMTQ3NDgzNjQ3bFxuICA7ICA0NjM0MGxcbiAgOyAgMTI5MGxcbiAgOyAgMjE1bFxuICA7ICA3M2xcbiAgOyAgMzVsXG4gIDsgIDIxbFxuICA7ICAxNGxcbiAgOyAgMTBsXG4gIDsgIDhsXG4gIDsgIDdsXG4gIDsgIDVsXG4gIDsgIDVsXG4gIDsgIDRsXG4gIDsgIDRsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIHxdXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50X3ZhbHVlIDogaW50ID1cbiAgKC0xKSBsc3IgMVxuXG5sZXQgaW50X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludCBhcnJheSA9XG4gIG1hdGNoIEludF9jb252ZXJzaW9ucy5udW1fYml0c19pbnQgd2l0aFxuICB8IDMyIC0+IEFycmF5Lm1hcCBpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgfmY6U3RkbGliLkludDMyLnRvX2ludFxuICB8IDYzIC0+XG4gICAgW3wgU3RkbGliLkludDY0LnRvX2ludCA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICAgIDsgIFN0ZGxpYi5JbnQ2NC50b19pbnQgNDYxMTY4NjAxODQyNzM4NzkwM0xcbiAgICA7ICBTdGRsaWIuSW50NjQudG9faW50IDIxNDc0ODM2NDdMXG4gICAgOyAgMTY2NDUxMFxuICAgIDsgIDQ2MzQwXG4gICAgOyAgNTQwNFxuICAgIDsgIDEyOTBcbiAgICA7ICA0NjNcbiAgICA7ICAyMTVcbiAgICA7ICAxMThcbiAgICA7ICA3M1xuICAgIDsgIDQ5XG4gICAgOyAgMzVcbiAgICA7ICAyN1xuICAgIDsgIDIxXG4gICAgOyAgMTdcbiAgICA7ICAxNFxuICAgIDsgIDEyXG4gICAgOyAgMTBcbiAgICA7ICA5XG4gICAgOyAgOFxuICAgIDsgIDdcbiAgICA7ICA3XG4gICAgOyAgNlxuICAgIDsgIDVcbiAgICA7ICA1XG4gICAgOyAgNVxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICB8XVxuICB8IDMxIC0+XG4gICAgW3wgMTA3Mzc0MTgyM1xuICAgIDsgIDEwNzM3NDE4MjNcbiAgICA7ICAzMjc2N1xuICAgIDsgIDEwMjNcbiAgICA7ICAxODFcbiAgICA7ICA2M1xuICAgIDsgIDMxXG4gICAgOyAgMTlcbiAgICA7ICAxM1xuICAgIDsgIDEwXG4gICAgOyAgN1xuICAgIDsgIDZcbiAgICA7ICA1XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgfF1cbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDYzX29uX2ludDY0X3ZhbHVlIDogaW50NjQgPVxuICA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuXG5sZXQgaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50NjQgYXJyYXkgPVxuICBbfCA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICA7ICA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICA7ICAyMTQ3NDgzNjQ3TFxuICA7ICAxNjY0NTEwTFxuICA7ICA0NjM0MExcbiAgOyAgNTQwNExcbiAgOyAgMTI5MExcbiAgOyAgNDYzTFxuICA7ICAyMTVMXG4gIDsgIDExOExcbiAgOyAgNzNMXG4gIDsgIDQ5TFxuICA7ICAzNUxcbiAgOyAgMjdMXG4gIDsgIDIxTFxuICA7ICAxN0xcbiAgOyAgMTRMXG4gIDsgIDEyTFxuICA7ICAxMExcbiAgOyAgOUxcbiAgOyAgOExcbiAgOyAgN0xcbiAgOyAgN0xcbiAgOyAgNkxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMUxcbiAgOyAgMUxcbiAgfF1cblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnQ2NF92YWx1ZSA6IGludDY0ID1cbiAgOTIyMzM3MjAzNjg1NDc3NTgwN0xcblxubGV0IGludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDY0IGFycmF5ID1cbiAgW3wgOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgMzAzNzAwMDQ5OUxcbiAgOyAgMjA5NzE1MUxcbiAgOyAgNTUxMDhMXG4gIDsgIDYyMDhMXG4gIDsgIDE0NDhMXG4gIDsgIDUxMUxcbiAgOyAgMjM0TFxuICA7ICAxMjdMXG4gIDsgIDc4TFxuICA7ICA1MkxcbiAgOyAgMzhMXG4gIDsgIDI4TFxuICA7ICAyMkxcbiAgOyAgMThMXG4gIDsgIDE1TFxuICA7ICAxM0xcbiAgOyAgMTFMXG4gIDsgIDlMXG4gIDsgIDhMXG4gIDsgIDdMXG4gIDsgIDdMXG4gIDsgIDZMXG4gIDsgIDZMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDFMXG4gIHxdXG5cbmxldCBpbnQ2NF9uZWdhdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQ2NCBhcnJheSA9XG4gIFt8IC05MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAtOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgLTMwMzcwMDA0OTlMXG4gIDsgIC0yMDk3MTUxTFxuICA7ICAtNTUxMDhMXG4gIDsgIC02MjA4TFxuICA7ICAtMTQ0OExcbiAgOyAgLTUxMUxcbiAgOyAgLTIzNExcbiAgOyAgLTEyN0xcbiAgOyAgLTc4TFxuICA7ICAtNTJMXG4gIDsgIC0zOExcbiAgOyAgLTI4TFxuICA7ICAtMjJMXG4gIDsgIC0xOExcbiAgOyAgLTE1TFxuICA7ICAtMTNMXG4gIDsgIC0xMUxcbiAgOyAgLTlMXG4gIDsgIC04TFxuICA7ICAtN0xcbiAgOyAgLTdMXG4gIDsgIC02TFxuICA7ICAtNkxcbiAgOyAgLTVMXG4gIDsgIC01TFxuICA7ICAtNUxcbiAgOyAgLTRMXG4gIDsgIC00TFxuICA7ICAtNExcbiAgOyAgLTRMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMUxcbiAgfF1cbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IG5lZ2F0aXZlX2V4cG9uZW50ICgpID0gUHJpbnRmLmludmFsaWRfYXJnZiBcImV4cG9uZW50IGNhbiBub3QgYmUgbmVnYXRpdmVcIiAoKVxubGV0IG92ZXJmbG93ICgpID0gUHJpbnRmLmludmFsaWRfYXJnZiBcImludGVnZXIgb3ZlcmZsb3cgaW4gcG93XCIgKClcblxuKCogVG8gaW1wbGVtZW50IFtpbnQ2NF9wb3ddLCB3ZSB1c2UgQyBjb2RlIHJhdGhlciB0aGFuIE9DYW1sIHRvIGVsaW1pbmF0ZSBhbGxvY2F0aW9uLiAqKVxuZXh0ZXJuYWwgaW50X21hdGhfaW50X3BvdyA6IGludCAtPiBpbnQgLT4gaW50ID0gXCJCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YlwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBpbnRfbWF0aF9pbnQ2NF9wb3cgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YlwiXG5cbmxldCBpbnRfcG93IGJhc2UgZXhwb25lbnQgPVxuICBpZiBleHBvbmVudCA8IDAgdGhlbiBuZWdhdGl2ZV9leHBvbmVudCAoKTtcbiAgaWYgYWJzIGJhc2UgPiAxXG4gICYmIChleHBvbmVudCA+IDYzXG4gICAgICB8fCBhYnMgYmFzZSA+IFBvd19vdmVyZmxvd19ib3VuZHMuaW50X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcy4oZXhwb25lbnQpKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnRfcG93IGJhc2UgZXhwb25lbnRcbjs7XG5cbm1vZHVsZSBJbnQ2NF93aXRoX2NvbXBhcmlzb25zID0gc3RydWN0XG4gIGluY2x1ZGUgU3RkbGliLkludDY0XG5cbiAgZXh0ZXJuYWwgKCA8ICkgOiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+ICkgOiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+PSApIDogKGludDY0W0Bsb2NhbF9vcHRdKSAtPiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZW5kXG5cbigqIHdlIGRvbid0IGRvIFthYnNdIGluIGludDY0IGNhc2UgdG8gYXZvaWQgYWxsb2NhdGlvbiAqKVxubGV0IGludDY0X3BvdyBiYXNlIGV4cG9uZW50ID1cbiAgbGV0IG9wZW4gSW50NjRfd2l0aF9jb21wYXJpc29ucyBpblxuICBpZiBleHBvbmVudCA8IDBMIHRoZW4gbmVnYXRpdmVfZXhwb25lbnQgKCk7XG4gIGlmIChiYXNlID4gMUwgfHwgYmFzZSA8IC0xTClcbiAgJiYgKGV4cG9uZW50ID4gNjNMXG4gICAgICB8fCAoYmFzZSA+PSAwTFxuICAgICAgICAgICYmIGJhc2VcbiAgICAgICAgICAgICA+IFBvd19vdmVyZmxvd19ib3VuZHMuaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzLih0b19pbnQgZXhwb25lbnQpKVxuICAgICAgfHwgKGJhc2UgPCAwTFxuICAgICAgICAgICYmIGJhc2VcbiAgICAgICAgICAgICA8IFBvd19vdmVyZmxvd19ib3VuZHMuaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzLih0b19pbnQgZXhwb25lbnQpKSlcbiAgdGhlbiBvdmVyZmxvdyAoKTtcbiAgaW50X21hdGhfaW50NjRfcG93IGJhc2UgZXhwb25lbnRcbjs7XG5cbmxldCBpbnQ2M19wb3dfb25faW50NjQgYmFzZSBleHBvbmVudCA9XG4gIGxldCBvcGVuIEludDY0X3dpdGhfY29tcGFyaXNvbnMgaW5cbiAgaWYgZXhwb25lbnQgPCAwTCB0aGVuIG5lZ2F0aXZlX2V4cG9uZW50ICgpO1xuICBpZiBhYnMgYmFzZSA+IDFMXG4gICYmIChleHBvbmVudCA+IDYzTFxuICAgICAgfHwgYWJzIGJhc2VcbiAgICAgICAgID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2M19vbl9pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudClcbiAgICAgKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnQ2NF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubW9kdWxlIHR5cGUgTWFrZV9hcmcgPSBzaWdcbiAgdHlwZSB0XG5cbiAgaW5jbHVkZSBGbG9hdGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCB+LSApIDogdCAtPiB0XG5cbiAgaW5jbHVkZSBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIGFicyA6IHQgLT4gdFxuICB2YWwgbmVnIDogdCAtPiB0XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgb2ZfaW50X2V4biA6IGludCAtPiB0XG4gIHZhbCByZW0gOiB0IC0+IHQgLT4gdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChYIDogTWFrZV9hcmcpID0gc3RydWN0XG4gIG9wZW4gWFxuXG4gIGxldCAoICUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIiVzICUlICVzIGluIGNvcmVfaW50Lm1sOiBtb2R1bHVzIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBsZXQgcnZhbCA9IFgucmVtIHggeSBpblxuICAgIGlmIHJ2YWwgPCB6ZXJvIHRoZW4gcnZhbCArIHkgZWxzZSBydmFsXG4gIDs7XG5cbiAgbGV0IG9uZSA9IG9mX2ludF9leG4gMVxuXG4gIGxldCAoIC8lICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAvJSUgJXMgaW4gY29yZV9pbnQubWw6IGRpdmlzb3Igc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGlmIHggPCB6ZXJvIHRoZW4gKCh4ICsgb25lKSAvIHkpIC0gb25lIGVsc2UgeCAvIHlcbiAgOztcblxuICAoKiogZmxvYXQgZGl2aXNpb24gb2YgaW50ZWdlcnMgKilcbiAgbGV0ICggLy8gKSB4IHkgPSB0b19mbG9hdCB4IC8uIHRvX2Zsb2F0IHlcblxuICBsZXQgcm91bmRfZG93biBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID0gaSAtIChpICUgbW9kdWx1cylcblxuICBsZXQgcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2Y6bW9kdWx1cyA9XG4gICAgbGV0IHJlbWFpbmRlciA9IGkgJSBtb2R1bHVzIGluXG4gICAgaWYgcmVtYWluZGVyID0gemVybyB0aGVuIGkgZWxzZSBpICsgbW9kdWx1cyAtIHJlbWFpbmRlclxuICA7O1xuXG4gIGxldCByb3VuZF90b3dhcmRzX3plcm8gaSB+dG9fbXVsdGlwbGVfb2YgPVxuICAgIGlmIGkgPSB6ZXJvXG4gICAgdGhlbiB6ZXJvXG4gICAgZWxzZSBpZiBpID4gemVyb1xuICAgIHRoZW4gcm91bmRfZG93biBpIH50b19tdWx0aXBsZV9vZlxuICAgIGVsc2Ugcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2ZcbiAgOztcblxuICBsZXQgcm91bmRfbmVhcmVzdCBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID1cbiAgICBsZXQgcmVtYWluZGVyID0gaSAlIG1vZHVsdXMgaW5cbiAgICBsZXQgbW9kdWx1c19taW51c19yZW1haW5kZXIgPSBtb2R1bHVzIC0gcmVtYWluZGVyIGluXG4gICAgaWYgbW9kdWx1c19taW51c19yZW1haW5kZXIgPD0gcmVtYWluZGVyXG4gICAgdGhlbiBpICsgbW9kdWx1c19taW51c19yZW1haW5kZXJcbiAgICBlbHNlIGkgLSByZW1haW5kZXJcbiAgOztcblxuICBsZXRbQGlubGluZSBhbHdheXNdIHJvdW5kID8oZGlyID0gYE5lYXJlc3QpIGkgfnRvX211bHRpcGxlX29mID1cbiAgICBtYXRjaCBkaXIgd2l0aFxuICAgIHwgYE5lYXJlc3QgLT4gcm91bmRfbmVhcmVzdCBpIH50b19tdWx0aXBsZV9vZlxuICAgIHwgYERvd24gLT4gcm91bmRfZG93biBpIH50b19tdWx0aXBsZV9vZlxuICAgIHwgYFVwIC0+IHJvdW5kX3VwIGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgWmVybyAtPiByb3VuZF90b3dhcmRzX3plcm8gaSB+dG9fbXVsdGlwbGVfb2ZcbiAgOztcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgaW50X3BvdyA9IGludF9wb3dcbiAgbGV0IGludDY0X3BvdyA9IGludDY0X3Bvd1xuICBsZXQgaW50NjNfcG93X29uX2ludDY0ID0gaW50NjNfcG93X29uX2ludDY0XG5cbiAgbW9kdWxlIFBvd19vdmVyZmxvd19ib3VuZHMgPSBQb3dfb3ZlcmZsb3dfYm91bmRzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBDIHN0dWIgZm9yIGludCBwb3Bjb3VudCB0byB1c2UgdGhlIFBPUENOVCBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuZXh0ZXJuYWwgaW50X3BvcGNvdW50IDogaW50IC0+IGludCA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnRcIiBbQEBub2FsbG9jXVxuXG4oKiBUbyBtYWludGFpbiBqYXZhc2NyaXB0IGNvbXBhdGliaWxpdHkgYW5kIGVuYWJsZSB1bmJveGluZywgd2UgaW1wbGVtZW50IHBvcGNvdW50IGluXG4gICBPQ2FtbCByYXRoZXIgdGhhbiB1c2UgQyBzdHVicy4gSW1wbGVtZW50YXRpb24gYWRhcHRlZCBmcm9tOlxuICAgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFtbWluZ193ZWlnaHQjRWZmaWNpZW50X2ltcGxlbWVudGF0aW9uICopXG5sZXQgaW50NjRfcG9wY291bnQgPVxuICBsZXQgb3BlbiBTdGRsaWIuSW50NjQgaW5cbiAgbGV0ICggKyApID0gYWRkIGluXG4gIGxldCAoIC0gKSA9IHN1YiBpblxuICBsZXQgKCAqICkgPSBtdWwgaW5cbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsIGluXG4gIGxldCAoIGxhbmQgKSA9IGxvZ2FuZCBpblxuICBsZXQgbTEgPSAweDU1NTU1NTU1NTU1NTU1NTVMIGluXG4gICgqIDBiMDEwMTAxMDEuLi4gKilcbiAgbGV0IG0yID0gMHgzMzMzMzMzMzMzMzMzMzMzTCBpblxuICAoKiAwYjAwMTEwMDExLi4uICopXG4gIGxldCBtNCA9IDB4MGYwZjBmMGYwZjBmMGYwZkwgaW5cbiAgKCogMGIwMDAwMTExMS4uLiAqKVxuICBsZXQgaDAxID0gMHgwMTAxMDEwMTAxMDEwMTAxTCBpblxuICAoKiAxIGJpdCBzZXQgcGVyIGJ5dGUgKilcbiAgZnVuIFtAaW5saW5lXSB4IC0+XG4gICAgKCogZ2F0aGVyIHRoZSBiaXQgY291bnQgZm9yIGV2ZXJ5IHBhaXIgb2YgYml0cyAqKVxuICAgIGxldCB4ID0geCAtICgoeCBsc3IgMSkgbGFuZCBtMSkgaW5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgNCBiaXRzICopXG4gICAgbGV0IHggPSAoeCBsYW5kIG0yKSArICgoeCBsc3IgMikgbGFuZCBtMikgaW5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgYnl0ZSAqKVxuICAgIGxldCB4ID0gKHggKyAoeCBsc3IgNCkpIGxhbmQgbTQgaW5cbiAgICAoKiBzdW0gdGhlIGJpdCBjb3VudHMgaW4gdGhlIHRvcCBieXRlIGFuZCBzaGlmdCBpdCBkb3duICopXG4gICAgdG9faW50ICgoeCAqIGgwMSkgbHNyIDU2KVxuOztcblxubGV0IGludDMyX3BvcGNvdW50ID1cbiAgKCogT24gNjQtYml0IHN5c3RlbXMsIHRoaXMgaXMgZmFzdGVyIHRoYW4gaW1wbGVtZW50aW5nIHVzaW5nIFtpbnQzMl0gYXJpdGhtZXRpYy4gKilcbiAgbGV0IG1hc2sgPSAweGZmZmZfZmZmZkwgaW5cbiAgZnVuIFtAaW5saW5lXSB4IC0+IGludDY0X3BvcGNvdW50IChTdGRsaWIuSW50NjQubG9nYW5kIChTdGRsaWIuSW50NjQub2ZfaW50MzIgeCkgbWFzaylcbjs7XG5cbmxldCBuYXRpdmVpbnRfcG9wY291bnQgPVxuICBtYXRjaCBTdGRsaWIuTmF0aXZlaW50LnNpemUgd2l0aFxuICB8IDMyIC0+IGZ1biBbQGlubGluZV0geCAtPiBpbnQzMl9wb3Bjb3VudCAoU3RkbGliLk5hdGl2ZWludC50b19pbnQzMiB4KVxuICB8IDY0IC0+IGZ1biBbQGlubGluZV0geCAtPiBpbnQ2NF9wb3Bjb3VudCAoU3RkbGliLkludDY0Lm9mX25hdGl2ZWludCB4KVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNpZ24wXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChTaWduMClcblxuKCogT3BlbiBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbnMgc29cbiAgIHRoZXkgZG8gbm90IHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9uc1xuICAgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCB0b19zdHJpbmdfaHVtID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gXCJuZWdhdGl2ZVwiXG4gIHwgWmVybyAtPiBcInplcm9cIlxuICB8IFBvcyAtPiBcInBvc2l0aXZlXCJcbjs7XG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IC0xLlxuICB8IFplcm8gLT4gMC5cbiAgfCBQb3MgLT4gMS5cbjs7XG5cbmxldCBmbGlwID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gUG9zXG4gIHwgWmVybyAtPiBaZXJvXG4gIHwgUG9zIC0+IE5lZ1xuOztcblxubGV0ICggKiApIHQgdCcgPSBvZl9pbnQgKHRvX2ludCB0ICogdG9faW50IHQnKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhdCB0aGUgZW5kLCBhZnRlciBhbnlcbiAgIGZ1bmN0b3IgYXBwbGljYXRpb25zIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvXG4gICB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5IHRoaXNcbiAgIG1vZHVsZS4gKilcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50X2ludGZcbmluY2x1ZGUgSW50MFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2ludCA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9pbnRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoaW50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlIHggeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZSB4IHlcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgfCBfIC0+IFByaW50Zi5mYWlsd2l0aGYgXCJJbnQub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG5lbmRcblxubGV0IG51bV9iaXRzID0gSW50X2NvbnZlcnNpb25zLm51bV9iaXRzX2ludFxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgdG9fZmxvYXQgPSBTdGRsaWIuZmxvYXRfb2ZfaW50XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gU3RkbGliLmludF9vZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBTdGRsaWIuaW50X29mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50Lm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggZilcbiAgICAgICgpXG47O1xuXG5sZXQgemVybyA9IDBcbmxldCBvbmUgPSAxXG5sZXQgbWludXNfb25lID0gLTFcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSAoIH4tIClcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJXhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJXhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnRcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvXG4gICB0aGV5IGRvIG5vdCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnNcbiAgIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmV4dGVybmFsIHRvX2ludDMyX3RydW5jIDogKHRbQGxvY2FsX29wdF0pIC0+IChpbnQzMltAbG9jYWxfb3B0XSkgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgb2ZfaW50MzJfdHJ1bmMgOiAoaW50MzJbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfaW50NjRfdHJ1bmMgOiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50X3RydW5jIDogKG5hdGl2ZWludFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJW5hdGl2ZWludF90b19pbnRcIlxuXG5sZXQgcHJlZCBpID0gaSAtIDFcbmxldCBzdWNjIGkgPSBpICsgMVxubGV0IHRvX2ludCBpID0gaVxubGV0IHRvX2ludF9leG4gPSB0b19pbnRcbmxldCBvZl9pbnQgaSA9IGlcbmxldCBvZl9pbnRfZXhuID0gb2ZfaW50XG5sZXQgbWF4X3ZhbHVlID0gU3RkbGliLm1heF9pbnRcbmxldCBtaW5fdmFsdWUgPSBTdGRsaWIubWluX2ludFxubGV0IG1heF92YWx1ZV8zMF9iaXRzID0gMHgzRkZGX0ZGRkZcbmxldCBvZl9pbnQzMiA9IENvbnYuaW50MzJfdG9faW50XG5sZXQgb2ZfaW50MzJfZXhuID0gQ29udi5pbnQzMl90b19pbnRfZXhuXG5sZXQgdG9faW50MzIgPSBDb252LmludF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYuaW50X3RvX2ludDMyX2V4blxubGV0IG9mX2ludDY0ID0gQ29udi5pbnQ2NF90b19pbnRcbmxldCBvZl9pbnQ2NF9leG4gPSBDb252LmludDY0X3RvX2ludF9leG5cbmxldCB0b19pbnQ2NCA9IENvbnYuaW50X3RvX2ludDY0XG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50XG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludF9leG5cbmxldCB0b19uYXRpdmVpbnQgPSBDb252LmludF90b19uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gdG9fbmF0aXZlaW50XG5sZXQgYWJzIHggPSBhYnMgeFxuXG4oKiBub3RlIHRoYXQgcmVtIGlzIG5vdCBzYW1lIGFzICUgKilcbmxldCByZW0gYSBiID0gYSBtb2QgYlxubGV0IGluY3IgPSBTdGRsaWIuaW5jclxubGV0IGRlY3IgPSBTdGRsaWIuZGVjclxubGV0IHNoaWZ0X3JpZ2h0IGEgYiA9IGEgYXNyIGJcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsIGEgYiA9IGEgbHNyIGJcbmxldCBzaGlmdF9sZWZ0IGEgYiA9IGEgbHNsIGJcbmxldCBiaXRfbm90IGEgPSBsbm90IGFcbmxldCBiaXRfb3IgYSBiID0gYSBsb3IgYlxubGV0IGJpdF9hbmQgYSBiID0gYSBsYW5kIGJcbmxldCBiaXRfeG9yIGEgYiA9IGEgbHhvciBiXG5sZXQgcG93ID0gSW50X21hdGguUHJpdmF0ZS5pbnRfcG93XG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyIHggPVxuICAgIGlmIHggPD0gMCB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggLSAxIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICAoKiBUaGUgbmV4dCBsaW5lIGlzIHN1cGVyZmx1b3VzIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyBmYXN0ZXIgdG8gZG8gaXRcbiAgICAgICBhbnl3YXkgdGhhbiB0byBicmFuY2ggKilcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICB4ICsgMVxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgKCogVGhlIG5leHQgbGluZSBpcyBzdXBlcmZsdW91cyBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYnV0IGl0J3MgZmFzdGVyIHRvIGRvIGl0XG4gICAgICAgYW55d2F5IHRoYW4gdG8gYnJhbmNoICopXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgeCAtICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gMCB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgKHggLSAxKSA9IDBcbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBpbnQgY2x6IGFuZCBjdHogdG8gdXNlIHRoZSBDTFovQlNSL0NUWi9CU0YgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbiAgZXh0ZXJuYWwgY2x6XG4gICAgOiAgKCogTm90ZSB0aGF0IHdlIHBhc3MgdGhlIHRhZ2dlZCBpbnQgaGVyZS4gU2VlIGludF9tYXRoX3N0dWJzLmMgZm9yIGRldGFpbHMgb24gd2h5XG4gICAgICAgICAgdGhpcyBpcyBjb3JyZWN0LiAqKVxuICAgIGludFxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfY2x6XCIgXCJCYXNlX2ludF9tYXRoX2ludF9jbHpfdW50YWdnZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChpbnRbQHVudGFnZ2VkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50X2N0elwiIFwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6X3VudGFnZ2VkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIGkgPD0gMFxuICAgIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50IGkgXSk7XG4gICAgaWYgaSA9IDEgdGhlbiAwIGVsc2UgbnVtX2JpdHMgLSBjbHogKGkgLSAxKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuXG5sZXQgc2lnbiA9IFNpZ24ub2ZfaW50XG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5pbnRfcG9wY291bnRcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGV4dGVybmFsICggKyApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlYWRkaW50XCJcbiAgZXh0ZXJuYWwgKCAtICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVzdWJpbnRcIlxuICBleHRlcm5hbCAoICogKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJW11bGludFwiXG4gIGV4dGVybmFsICggLyApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlZGl2aW50XCJcbiAgZXh0ZXJuYWwgKCB+LSApIDogKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVuZWdpbnRcIlxuXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYWJzID0gYWJzXG5cbiAgZXh0ZXJuYWwgbmVnIDogKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVuZWdpbnRcIlxuXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgbW9kdWxlIEYgPSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBpbmNsdWRlIEZcblxuICBleHRlcm5hbCBic3dhcDE2IDogKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5cbiAgKCogVGhlc2UgaW5saW5lZCB2ZXJzaW9ucyBvZiAoJSksICgvJSksIGFuZCAoLy8pIHBlcmZvcm0gYmV0dGVyIHRoYW4gdGhlaXIgZnVuY3Rvcml6ZWRcbiAgICAgY291bnRlcnBhcnRzIGluIFtGXSAoc2VlIGJlbmNobWFya3MgYmVsb3cpLlxuXG4gICAgIFRoZSByZWFzb24gdGhlc2UgZnVuY3Rpb25zIGFyZSBpbmxpbmVkIGluIFtJbnRdIGJ1dCBub3QgaW4gYW55IG9mIHRoZSBvdGhlciBpbnRlZ2VyXG4gICAgIG1vZHVsZXMgaXMgdGhhdCB0aGV5IGV4aXN0ZWQgaW4gW0ludF0gYW5kIFtJbnRdIGFsb25lIHByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2ZcbiAgICAgdGhlIFtJbnRfbWF0aC5NYWtlXSBmdW5jdG9yLCBhbmQgd2UgZGlkbid0IHdhbnQgdG8gZGVncmFkZSB0aGVpciBwZXJmb3JtYW5jZS5cblxuICAgICBXZSB3b24ndCBwcmUtZW1wdGl2ZWx5IGRvIHRoZSBzYW1lIGZvciBuZXcgZnVuY3Rpb25zLCB1bmxlc3Mgc29tZW9uZSBjYXJlcywgb24gYSBjYXNlXG4gICAgIGJ5IGNhc2UgZmFzaGlvbi4gICopXG5cbiAgbGV0ICggJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgICBcIiVzICUlICVzIGluIGNvcmVfaW50Lm1sOiBtb2R1bHVzIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBsZXQgcnZhbCA9IHJlbSB4IHkgaW5cbiAgICBpZiBydmFsIDwgemVybyB0aGVuIHJ2YWwgKyB5IGVsc2UgcnZhbFxuICA7O1xuXG4gIGxldCAoIC8lICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgLyUlICVzIGluIGNvcmVfaW50Lm1sOiBkaXZpc29yIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBpZiB4IDwgemVybyB0aGVuICgoeCArIG9uZSkgLyB5KSAtIG9uZSBlbHNlIHggLyB5XG4gIDs7XG5cbiAgbGV0ICggLy8gKSB4IHkgPSB0b19mbG9hdCB4IC8uIHRvX2Zsb2F0IHlcblxuICBleHRlcm5hbCAoIGxhbmQgKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWFuZGludFwiXG4gIGV4dGVybmFsICggbG9yICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVvcmludFwiXG4gIGV4dGVybmFsICggbHhvciApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIleG9yaW50XCJcblxuICBsZXQgbG5vdCA9IGxub3RcblxuICBleHRlcm5hbCAoIGxzbCApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlbHNsaW50XCJcbiAgZXh0ZXJuYWwgKCBsc3IgKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWxzcmludFwiXG4gIGV4dGVybmFsICggYXNyICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50XSBhbmQgW0ludC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBPX0YgPSBPLkZcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3JcbiAgIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zXG4gICBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVY2hhcjBcblxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuVWNoYXJcIlxuICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IEhhc2guZm9sZF9pbnQgc3RhdGUgKHRvX2ludCB0KVxuICBsZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuICBsZXQgdG9fc3RyaW5nIHQgPSBQcmludGYuc3ByaW50ZiBcIlUrJTA0WFwiICh0b19pbnQgdClcblxuICAoKiBEbyBub3QgYWN0dWFsbHkgZXhwb3J0IHRoaXMuIFNlZSBkaXNjdXNzaW9uIGluIHRoZSAubWxpICopXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIlVjaGFyLnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCJVKyVYXCIgKGZ1biBpIC0+IFVjaGFyMC5vZl9pbnQgaSkgd2l0aFxuICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiVWNoYXIudF9vZl9zZXhwOiBhdG9tIG9mIHRoZSBmb3JtIFUrWFhYWCBuZWVkZWRcIiBzZXhwKVxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICAgIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFVjaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGludF9pc19zY2FsYXIgPSBpc192YWxpZFxuXG5sZXQgc3VjY19leG4gYyA9XG4gIHRyeSBVY2hhcjAuc3VjYyBjIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBmYWlsd2l0aGYgXCJVY2hhci5zdWNjX2V4bjogJXNcIiBtc2cgKClcbjs7XG5cbmxldCBzdWNjIGMgPVxuICB0cnkgU29tZSAoVWNoYXIwLnN1Y2MgYykgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG47O1xuXG5sZXQgcHJlZF9leG4gYyA9XG4gIHRyeSBVY2hhcjAucHJlZCBjIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBmYWlsd2l0aGYgXCJVY2hhci5wcmVkX2V4bjogJXNcIiBtc2cgKClcbjs7XG5cbmxldCBwcmVkIGMgPVxuICB0cnkgU29tZSAoVWNoYXIwLnByZWQgYykgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG47O1xuXG5sZXQgb2Zfc2NhbGFyIGkgPSBpZiBpbnRfaXNfc2NhbGFyIGkgdGhlbiBTb21lICh1bnNhZmVfb2ZfaW50IGkpIGVsc2UgTm9uZVxuXG5sZXQgb2Zfc2NhbGFyX2V4biBpID1cbiAgaWYgaW50X2lzX3NjYWxhciBpXG4gIHRoZW4gdW5zYWZlX29mX2ludCBpXG4gIGVsc2UgZmFpbHdpdGhmIFwiVWNoYXIub2ZfaW50X2V4biBnb3QgYSBpbnZhbGlkIFVuaWNvZGUgc2NhbGFyIHZhbHVlOiAlMDRYXCIgaSAoKVxuOztcblxubGV0IHRvX3NjYWxhciB0ID0gVWNoYXIwLnRvX2ludCB0XG5sZXQgdG9fY2hhciBjID0gaWYgaXNfY2hhciBjIHRoZW4gU29tZSAodW5zYWZlX3RvX2NoYXIgYykgZWxzZSBOb25lXG5cbmxldCB0b19jaGFyX2V4biBjID1cbiAgaWYgaXNfY2hhciBjXG4gIHRoZW4gdW5zYWZlX3RvX2NoYXIgY1xuICBlbHNlIGZhaWx3aXRoZiBcIlVjaGFyLnRvX2NoYXJfZXhuIGdvdCBhIG5vbiBsYXRpbi0xIGNoYXJhY3RlcjogVSslMDRYXCIgKHRvX2ludCBjKSAoKVxuOztcblxubGV0IHV0ZjhfYnl0ZV9sZW5ndGggdWNoYXIgPVxuICBsZXQgY29kZXBvaW50ID0gdG9fc2NhbGFyIHVjaGFyIGluXG4gIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHg4MFxuICB0aGVuIDFcbiAgZWxzZSBpZiBJbnQuKCA8ICkgY29kZXBvaW50IDB4ODAwXG4gIHRoZW4gMlxuICBlbHNlIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHgxMDAwMFxuICB0aGVuIDNcbiAgZWxzZSA0XG47O1xuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2EpIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOlxuICAnYSAnYi5cbiAgKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdhLCAnYikgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgYV9fMDAzXyBiX18wMDRfKVxuICAgICAgOiAgKChhX18wMDNfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKGJfXzAwNF8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChhX18wMDNfLCBiX18wMDRfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAwMV8gX29mX2JfXzAwMl8gVCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJUXCJcbjs7XG5cbltAQEBlbmRdXG5cbnR5cGUgKCdhLCAnYikgZXF1YWwgPSAoJ2EsICdiKSB0XG5cbmxldCByZWZsID0gVFxubGV0IHN5bSAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIDogKGIsIGEpIHQgPSBUXG5sZXQgdHJhbnMgKHR5cGUgYSBiIGMpIChUIDogKGEsIGIpIHQpIChUIDogKGIsIGMpIHQpIDogKGEsIGMpIHQgPSBUXG5sZXQgY29udiAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIChhIDogYSkgOiBiID0gYVxuXG5tb2R1bGUgTGlmdCAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIDogKGEgWC50LCBiIFgudCkgdCA9IFRcbmVuZFxuXG5tb2R1bGUgTGlmdDIgKFggOiBzaWdcbiAgICB0eXBlICgnYTEsICdhMikgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhMSBiMSBhMiBiMikgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpXG4gICAgOiAoKGExLCBhMikgWC50LCAoYjEsIGIyKSBYLnQpIHRcbiAgICA9XG4gICAgVFxuICA7O1xuZW5kXG5cbm1vZHVsZSBMaWZ0MyAoWCA6IHNpZ1xuICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYTEgYjEgYTIgYjIgYTMgYjMpIChUIDogKGExLCBiMSkgdCkgKFQgOiAoYTIsIGIyKSB0KSAoVCA6IChhMywgYjMpIHQpXG4gICAgOiAoKGExLCBhMiwgYTMpIFgudCwgKGIxLCBiMiwgYjMpIFgudCkgdFxuICAgID1cbiAgICBUXG4gIDs7XG5lbmRcblxubGV0IGRldHVwbGUyICh0eXBlIGExIGEyIGIxIGIyKSAoVCA6IChhMSAqIGEyLCBiMSAqIGIyKSB0KSA6IChhMSwgYjEpIHQgKiAoYTIsIGIyKSB0ID1cbiAgVCwgVFxuOztcblxubGV0IHR1cGxlMiAodHlwZSBhMSBhMiBiMSBiMikgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpIDogKGExICogYTIsIGIxICogYjIpIHQgPSBUXG5cbm1vZHVsZSB0eXBlIEluamVjdGl2ZSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgc3RyaXAgOiAoJ2EgdCwgJ2IgdCkgZXF1YWwgLT4gKCdhLCAnYikgZXF1YWxcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmplY3RpdmUyID0gc2lnXG4gIHR5cGUgKCdhMSwgJ2EyKSB0XG5cbiAgdmFsIHN0cmlwIDogKCgnYTEsICdhMikgdCwgKCdiMSwgJ2IyKSB0KSBlcXVhbCAtPiAoJ2ExLCAnYjEpIGVxdWFsICogKCdhMiwgJ2IyKSBlcXVhbFxuZW5kXG5cbm1vZHVsZSBDb21wb3NpdGlvbl9wcmVzZXJ2ZXNfaW5qZWN0aXZpdHkgKE0xIDogSW5qZWN0aXZlKSAoTTIgOiBJbmplY3RpdmUpID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIE0xLnQgTTIudFxuXG4gIGxldCBzdHJpcCBlID0gTTEuc3RyaXAgKE0yLnN0cmlwIGUpXG5lbmRcblxubW9kdWxlIElkID0gc3RydWN0XG4gIG1vZHVsZSBVaWQgPSBJbnRcblxuICBtb2R1bGUgV2l0bmVzcyA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgXyB0ID0gLi5cbiAgICAgIHR5cGUgdHlwZV93aXRuZXNzX2ludCA9IFsgYHR5cGVfd2l0bmVzcyBvZiBpbnQgXSBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgbGV0IHNleHBfb2ZfdHlwZV93aXRuZXNzX2ludCA9XG4gICAgICAgIChmdW4gKGB0eXBlX3dpdG5lc3Mgdl9fMDA1XykgLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidHlwZV93aXRuZXNzXCI7IHNleHBfb2ZfaW50IHZfXzAwNV8gXVxuICAgICAgICAgICA6IHR5cGVfd2l0bmVzc19pbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgOztcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgbGV0IHNleHBfb2ZfdCBfc2V4cF9vZl9hIHQgPVxuICAgICAgICBgdHlwZV93aXRuZXNzXG4gICAgICAgICAgKFN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkXG4gICAgICAgICAgICAgKFN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCB0KSlcbiAgICAgICAgfD4gc2V4cF9vZl90eXBlX3dpdG5lc3NfaW50XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB0eXBlIF8gS2V5LnQgKz0gS2V5IDogdCBLZXkudFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICBsZXQgc2V4cF9vZl90ICh0eXBlIGEpIHNleHBfb2ZfYSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgICAgTS5LZXkgfD4gS2V5LnNleHBfb2ZfdCBzZXhwX29mX2FcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSB0KSAoKSA9XG4gICAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcbiAgICAgICAgdHlwZSBfIEtleS50ICs9IEtleSA6IHQgS2V5LnRcbiAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSB0KVxuICAgIDs7XG5cbiAgICBsZXQgdWlkICh0eXBlIGEpIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgICBTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCAoU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIE0uS2V5KVxuICAgIDs7XG5cbiAgICAoKiBXZSB3YW50IGEgY29uc3RhbnQgYWxsb2NhdGVkIG9uY2UgdGhhdCBbc2FtZV0gY2FuIHJldHVybiB3aGVuZXZlciBpdCBnZXRzIHRoZSBzYW1lXG4gICAgICAgd2l0bmVzc2VzLiAgSWYgd2Ugd3JpdGUgdGhlIGNvbnN0YW50IGluc2lkZSB0aGUgYm9keSBvZiBbc2FtZV0sIHRoZSBuYXRpdmUtY29kZVxuICAgICAgIGNvbXBpbGVyIHdpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nIGFuZCBsaWZ0IGl0IG91dC4gIEJ1dCBmb3IgY2xhcml0eSBhbmQgcm9idXN0bmVzcyxcbiAgICAgICB3ZSBkbyBpdCBvdXJzZWx2ZXMuICopXG4gICAgbGV0IHNvbWVfdCA9IFNvbWUgVFxuXG4gICAgbGV0IHNhbWUgKHR5cGUgYSBiKSAoYSA6IGEgdCkgKGIgOiBiIHQpIDogKGEsIGIpIGVxdWFsIG9wdGlvbiA9XG4gICAgICBsZXQgbW9kdWxlIEEgPSAodmFsIGEgOiBTIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQiA9ICh2YWwgYiA6IFMgd2l0aCB0eXBlIHQgPSBiKSBpblxuICAgICAgbWF0Y2ggQS5LZXkgd2l0aFxuICAgICAgfCBCLktleSAtPiBzb21lX3RcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgOztcbiAgZW5kXG5cblxuICB0eXBlICdhIHQgPVxuICAgIHsgd2l0bmVzcyA6ICdhIFdpdG5lc3MudFxuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIDsgdG9fc2V4cCA6ICdhIC0+IFNleHAudFxuICAgIH1cblxuICBsZXQgc2V4cF9vZl90IF8geyB3aXRuZXNzOyBuYW1lOyB0b19zZXhwIH0gOiBTZXhwLnQgPVxuICAgIGlmIGFtX3Rlc3RpbmdcbiAgICB0aGVuIEF0b20gbmFtZVxuICAgIGVsc2VcbiAgICAgIExpc3RcbiAgICAgICAgWyBMaXN0IFsgQXRvbSBcIm5hbWVcIjsgQXRvbSBuYW1lIF1cbiAgICAgICAgOyBMaXN0IFsgQXRvbSBcIndpdG5lc3NcIjsgd2l0bmVzcyB8PiBXaXRuZXNzLnNleHBfb2ZfdCB0b19zZXhwIF1cbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zZXhwIHQgPSB0LnRvX3NleHBcbiAgbGV0IG5hbWUgdCA9IHQubmFtZVxuICBsZXQgY3JlYXRlIH5uYW1lIHRvX3NleHAgPSB7IHdpdG5lc3MgPSBXaXRuZXNzLmNyZWF0ZSAoKTsgbmFtZTsgdG9fc2V4cCB9XG4gIGxldCB1aWQgdCA9IFdpdG5lc3MudWlkIHQud2l0bmVzc1xuICBsZXQgaGFzaCB0ID0gdWlkIHRcbiAgbGV0IGhhc2hfZm9sZF90IHMgdCA9IGhhc2hfZm9sZF9pbnQgcyAodWlkIHQpXG4gIGxldCBzYW1lX3dpdG5lc3MgdDEgdDIgPSBXaXRuZXNzLnNhbWUgdDEud2l0bmVzcyB0Mi53aXRuZXNzXG4gIGxldCBzYW1lIHQxIHQyID0gT3B0aW9uLmlzX3NvbWUgKHNhbWVfd2l0bmVzcyB0MSB0MilcblxuICBsZXQgc2FtZV93aXRuZXNzX2V4biB0MSB0MiA9XG4gICAgbWF0Y2ggc2FtZV93aXRuZXNzIHQxIHQyIHdpdGhcbiAgICB8IFNvbWUgdyAtPiB3XG4gICAgfCBOb25lIC0+XG4gICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gZ290IGRpZmZlcmVudCBpZHNcIlxuICAgICAgICAgICBbICggXCJcIlxuICAgICAgICAgICAgICwgc2V4cF9vZl9wYWlyIChzZXhwX29mX3Qgc2V4cF9vZl9vcGFxdWUpIChzZXhwX29mX3Qgc2V4cF9vZl9vcGFxdWUpICh0MSwgdDIpXG4gICAgICAgICAgICAgKVxuICAgICAgICAgICBdKVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuKCoqIFsnYSBDaGVhcF9vcHRpb24udF0gaXMgbGlrZSBbJ2Egb3B0aW9uXSwgYnV0IGl0IGRvZXNuJ3QgYm94IFtzb21lIF9dIHZhbHVlcy5cblxuICAgIFRoZXJlIGFyZSBzZXZlcmFsIHRoaW5ncyB0aGF0IGFyZSB1bnNhZmUgYWJvdXQgaXQ6XG5cbiAgICAtIFtmbG9hdCB0IGFycmF5XSAob3IgYW55IGFycmF5LWJhY2tlZCBjb250YWluZXIpIGlzIG5vdCBtZW1vcnktc2FmZVxuICAgICAgYmVjYXVzZSBmbG9hdCBhcnJheSBvcHRpbWl6YXRpb24gaXMgaW5jb21wYXRpYmxlIHdpdGggdW5ib3hlZCBvcHRpb25cbiAgICAgIG9wdGltaXphdGlvbi4gWW91IGhhdmUgdG8gdXNlIFtVbmlmb3JtX2FycmF5LnRdIGluc3RlYWQgb2YgW2FycmF5XS5cblxuICAgIC0gTmVzdGVkIG9wdGlvbnMgKFsnYSB0IHRdKSBkb24ndCB3b3JrLiBUaGV5IGFyZSBiZWxpZXZlZCB0byBiZVxuICAgICAgbWVtb3J5LXNhZmUsIGJ1dCBub3QgcGFyYW1ldHJpYy5cblxuICAgIC0gQSByZWNvcmQgd2l0aCBbZmxvYXQgdF1zIGluIGl0IHNob3VsZCBiZSBzYWZlLCBidXQgaXQncyBvbmx5IFt0XSBiZWluZ1xuICAgICAgYWJzdHJhY3QgdGhhdCBnaXZlcyB5b3Ugc2FmZXR5LiBJZiB0aGUgY29tcGlsZXIgd2FzIHNtYXJ0IGVub3VnaCB0byBwZWVrXG4gICAgICB0aHJvdWdoIHRoZSBtb2R1bGUgc2lnbmF0dXJlIHRoZW4gaXQgY291bGQgZGVjaWRlIHRvIGNvbnN0cnVjdCBhIGZsb2F0XG4gICAgICBhcnJheSBpbnN0ZWFkLiAqKVxubW9kdWxlIENoZWFwX29wdGlvbiA9IHN0cnVjdFxuICAoKiBUaGlzIGlzIHRha2VuIGZyb20gY29yZS4gUmF0aGVyIHRoYW4gZXhwb3NlIGl0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG9mIGJhc2UsIGp1c3RcbiAgICAga2VlcCBhIGNvcHkgYXJvdW5kIGhlcmUuICopXG4gIGxldCBwaHlzX3NhbWUgKHR5cGUgYSBiKSAoYSA6IGEpIChiIDogYikgPSBwaHlzX2VxdWFsIGEgKFN0ZGxpYi5PYmoubWFnaWMgYiA6IGEpXG5cbiAgbW9kdWxlIFQwIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbm9uZSA6IF8gdFxuICAgIHZhbCBzb21lIDogJ2EgLT4gJ2EgdFxuICAgIHZhbCBpc19ub25lIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgaXNfc29tZSA6IF8gdCAtPiBib29sXG4gICAgdmFsIHZhbHVlX2V4biA6ICdhIHQgLT4gJ2FcbiAgICB2YWwgdmFsdWVfdW5zYWZlIDogJ2EgdCAtPiAnYVxuICAgIHZhbCBpdGVyX3NvbWUgOiAnYSB0IC0+IGY6KCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgKydhIHRcblxuICAgICgqIEJlaW5nIGEgcG9pbnRlciwgbm8gb25lIG91dHNpZGUgdGhpcyBtb2R1bGUgY2FuIGNvbnN0cnVjdCBhIHZhbHVlIHRoYXQgaXNcbiAgICAgICBbcGh5c19zYW1lXSBhcyB0aGlzIG9uZS5cblxuICAgICAgIEl0IHdvdWxkIGJlIHNpbXBsZXIgdG8gdXNlIHRoaXMgdmFsdWUgYXMgW25vbmVdLCBidXQgd2UgdXNlIGFuIGltbWVkaWF0ZSBpbnN0ZWFkXG4gICAgICAgYmVjYXVzZSBpdCBsZXRzIHVzIGF2b2lkIGNhbWxfbW9kaWZ5IHdoZW4gc2V0dGluZyB0byBbbm9uZV0sIG1ha2luZyBjZXJ0YWluXG4gICAgICAgYmVuY2htYXJrcyBzaWduaWZpY2FudGx5IGZhc3RlciAoZS5nLiAuLi9iZW5jaC9hcnJheV9xdWV1ZS5leGUpLlxuXG4gICAgICAgdGhpcyBjb2RlIGlzIGR1cGxpY2F0ZWQgaW4gTW9wdGlvbiwgYW5kIGlmIHdlIGZpbmQgeWV0IGFub3RoZXIgcGxhY2Ugd2hlcmUgd2Ugd2FudFxuICAgICAgIGl0IHdlIHNob3VsZCByZWNvbnNpZGVyIG1ha2luZyBpdCBzaGFyZWQuICopXG4gICAgbGV0IG5vbmVfc3Vic3RpdHV0ZSA6IF8gdCA9XG4gICAgICBTdGRsaWIuT2JqLm9iaiAoU3RkbGliLk9iai5uZXdfYmxvY2sgU3RkbGliLk9iai5hYnN0cmFjdF90YWcgMSlcbiAgICA7O1xuXG4gICAgbGV0IG5vbmUgOiBfIHQgPVxuICAgICAgKCogVGhlIG51bWJlciB3YXMgcHJvZHVjZWQgYnlcbiAgICAgICAgIFs8IC9kZXYvdXJhbmRvbSB0ciAtYyAtZCAnMTIzNDU2Nzg5MGFiY2RlZicgfCBoZWFkIC1jIDE2XS5cblxuICAgICAgICAgVGhlIGlkZWEgaXMgdGhhdCBhIHJhbmRvbSBudW1iZXIgd2lsbCBoYXZlIGxvd2VyIHByb2JhYmlsaXR5IHRvIGNvbGxpZGUgd2l0aFxuICAgICAgICAgYW55dGhpbmcgdGhhbiBhbnkgbnVtYmVyIHdlIGNhbiBjaG9vc2Ugb3Vyc2VsdmVzLlxuXG4gICAgICAgICBXZSBhcmUgdXNpbmcgYSBwb2x5bW9ycGhpYyB2YXJpYW50IGluc3RlYWQgb2YgYW4gaW50ZWdlciBjb25zdGFudCBiZWNhdXNlIHRoZXJlXG4gICAgICAgICBpcyBhIGNvbXBpbGVyIGJ1ZyB3aGVyZSBpdCB3cm9uZ2x5IGFzc3VtZXMgdGhhdCB0aGUgcmVzdWx0IG9mIFtpZiBfIHRoZW4gYyBlbHNlXG4gICAgICAgICB5XSBpcyBub3QgYSBwb2ludGVyIGlmIFtjXSBpcyBhbiBpbnRlZ2VyIGNvbXBpbGUtdGltZSBjb25zdGFudC4gIFRoaXMgaXMgYmVpbmdcbiAgICAgICAgIGZpeGVkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9wdWxsLzU1NS4gIFRoZSBcIm1lbW9yeSBjb3JydXB0aW9uXCIgdGVzdFxuICAgICAgICAgYmVsb3cgZGVtb25zdHJhdGVzIHRoZSBpc3N1ZS4gICopXG4gICAgICBTdGRsaWIuT2JqLm1hZ2ljIGB4NmU4ZWUzNDc4ZTFkNzQ0OVxuICAgIDs7XG5cbiAgICBsZXQgaXNfbm9uZSB4ID0gcGh5c19lcXVhbCB4IG5vbmVcbiAgICBsZXQgaXNfc29tZSB4ID0gbm90IChwaHlzX2VxdWFsIHggbm9uZSlcblxuICAgIGxldCBzb21lICh0eXBlIGEpICh4IDogYSkgOiBhIHQgPVxuICAgICAgaWYgcGh5c19zYW1lIHggbm9uZSB0aGVuIG5vbmVfc3Vic3RpdHV0ZSBlbHNlIFN0ZGxpYi5PYmoubWFnaWMgeFxuICAgIDs7XG5cbiAgICBsZXQgdmFsdWVfdW5zYWZlICh0eXBlIGEpICh4IDogYSB0KSA6IGEgPVxuICAgICAgaWYgcGh5c19lcXVhbCB4IG5vbmVfc3Vic3RpdHV0ZSB0aGVuIFN0ZGxpYi5PYmoubWFnaWMgbm9uZSBlbHNlIFN0ZGxpYi5PYmoubWFnaWMgeFxuICAgIDs7XG5cbiAgICBsZXQgdmFsdWVfZXhuIHggPVxuICAgICAgaWYgaXNfc29tZSB4XG4gICAgICB0aGVuIHZhbHVlX3Vuc2FmZSB4XG4gICAgICBlbHNlIGZhaWx3aXRoIFwiT3B0aW9uX2FycmF5LmdldF9zb21lX2V4bjogdGhlIGVsZW1lbnQgaXMgW05vbmVdXCJcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXJfc29tZSB0IH5mID0gaWYgaXNfc29tZSB0IHRoZW4gZiAodmFsdWVfdW5zYWZlIHQpXG4gIGVuZFxuXG4gIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVDBcblxuICAgIGxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgIHwgU29tZSB4IC0+IHNvbWUgeFxuICAgIDs7XG5cbiAgICBsZXRbQGlubGluZV0gdG9fb3B0aW9uIHggPSBpZiBpc19zb21lIHggdGhlbiBTb21lICh2YWx1ZV91bnNhZmUgeCkgZWxzZSBOb25lXG4gICAgbGV0IHRvX3NleHBhYmxlID0gdG9fb3B0aW9uXG4gICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfb3B0aW9uXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgICAgOiBhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgID1cbiAgICAgIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKE9wdGlvbi50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVDFcbiAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTEgKE9wdGlvbikgKFQxKVxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIENoZWFwX29wdGlvbi50IFVuaWZvcm1fYXJyYXkudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgZnVuIF9vZl9hX18wMDFfIHhfXzAwM18gLT5cbiAgVW5pZm9ybV9hcnJheS50X29mX3NleHAgKENoZWFwX29wdGlvbi50X29mX3NleHAgX29mX2FfXzAwMV8pIHhfXzAwM19cbjs7XG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwNF8geF9fMDA1XyAtPlxuICBVbmlmb3JtX2FycmF5LnNleHBfb2ZfdCAoQ2hlYXBfb3B0aW9uLnNleHBfb2ZfdCBfb2ZfYV9fMDA0XykgeF9fMDA1X1xuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPlxuICBVbmlmb3JtX2FycmF5LnRfc2V4cF9ncmFtbWFyIChDaGVhcF9vcHRpb24udF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hcilcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBlbXB0eSA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbmxldCBjcmVhdGUgfmxlbiA9IFVuaWZvcm1fYXJyYXkuY3JlYXRlIH5sZW4gQ2hlYXBfb3B0aW9uLm5vbmVcbmxldCBpbml0IG4gfmYgPSBVbmlmb3JtX2FycmF5LmluaXQgbiB+ZjooZnVuIGkgLT4gQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiAoZiBpKSkgW0Bub250YWlsXVxubGV0IGluaXRfc29tZSBuIH5mID0gVW5pZm9ybV9hcnJheS5pbml0IG4gfmY6KGZ1biBpIC0+IENoZWFwX29wdGlvbi5zb21lIChmIGkpKSBbQG5vbnRhaWxdXG5sZXQgbGVuZ3RoID0gVW5pZm9ybV9hcnJheS5sZW5ndGhcbmxldFtAaW5saW5lXSBnZXQgdCBpID0gQ2hlYXBfb3B0aW9uLnRvX29wdGlvbiAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IGdldF9zb21lX2V4biB0IGkgPSBDaGVhcF9vcHRpb24udmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgaXNfbm9uZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IGlzX3NvbWUgdCBpID0gQ2hlYXBfb3B0aW9uLmlzX3NvbWUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBzZXQgdCBpIHggPSBVbmlmb3JtX2FycmF5LnNldCB0IGkgKENoZWFwX29wdGlvbi5vZl9vcHRpb24geClcbmxldCBzZXRfc29tZSB0IGkgeCA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLnNvbWUgeClcbmxldCBzZXRfbm9uZSB0IGkgPSBVbmlmb3JtX2FycmF5LnNldCB0IGkgQ2hlYXBfb3B0aW9uLm5vbmVcbmxldCBzd2FwIHQgaSBqID0gVW5pZm9ybV9hcnJheS5zd2FwIHQgaSBqXG5sZXQgdW5zYWZlX2dldCB0IGkgPSBDaGVhcF9vcHRpb24udG9fb3B0aW9uIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxubGV0IHVuc2FmZV9nZXRfc29tZV9leG4gdCBpID0gQ2hlYXBfb3B0aW9uLnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcblxubGV0IHVuc2FmZV9nZXRfc29tZV9hc3N1bWluZ19zb21lIHQgaSA9XG4gIENoZWFwX29wdGlvbi52YWx1ZV91bnNhZmUgKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG47O1xuXG5sZXQgdW5zYWZlX2lzX3NvbWUgdCBpID0gQ2hlYXBfb3B0aW9uLmlzX3NvbWUgKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG5sZXQgdW5zYWZlX3NldCB0IGkgeCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgKENoZWFwX29wdGlvbi5vZl9vcHRpb24geClcbmxldCB1bnNhZmVfc2V0X3NvbWUgdCBpIHggPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIChDaGVhcF9vcHRpb24uc29tZSB4KVxubGV0IHVuc2FmZV9zZXRfbm9uZSB0IGkgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIENoZWFwX29wdGlvbi5ub25lXG5cbmxldCBjbGVhciB0ID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHVuc2FmZV9zZXRfbm9uZSB0IGlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIGlucHV0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBpbnB1dCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgaW5wdXQgaSlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXIgaW5wdXQgfmYgPSBpdGVyaSBpbnB1dCB+ZjooZnVuIChfIDogaW50KSB4IC0+IGYgeCkgW0Bub250YWlsXVxuXG5sZXQgZm9sZGkgaW5wdXQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgaXRlcmkgaW5wdXQgfmY6KGZ1biBpIGVsZW0gLT4gYWNjIDo9IGYgaSAhYWNjIGVsZW0pO1xuICAhYWNjXG47O1xuXG5sZXQgZm9sZCBpbnB1dCB+aW5pdCB+ZiA9IGZvbGRpIGlucHV0IH5pbml0IH5mOihmdW4gKF8gOiBpbnQpIGFjYyB4IC0+IGYgYWNjIHgpIFtAbm9udGFpbF1cblxuaW5jbHVkZSBJbmRleGVkX2NvbnRhaW5lci5NYWtlX2dlbiAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCBfKSB0ID0gJ2EgdFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2Egb3B0aW9uXG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgZm9sZGkgPSBgQ3VzdG9tIGZvbGRpXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgaXRlcmkgPSBgQ3VzdG9tIGl0ZXJpXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IGxlbmd0aCA9IFVuaWZvcm1fYXJyYXkubGVuZ3RoXG5cbmxldCBtYXBpIGlucHV0IH5mID1cbiAgbGV0IG91dHB1dCA9IGNyZWF0ZSB+bGVuOihsZW5ndGggaW5wdXQpIGluXG4gIGl0ZXJpIGlucHV0IH5mOihmdW4gaSBlbGVtIC0+IHVuc2FmZV9zZXQgb3V0cHV0IGkgKGYgaSBlbGVtKSk7XG4gIG91dHB1dFxuOztcblxubGV0IG1hcCBpbnB1dCB+ZiA9IG1hcGkgaW5wdXQgfmY6KGZ1biAoXyA6IGludCkgZWxlbSAtPiBmIGVsZW0pIFtAbm9udGFpbF1cblxubGV0IG1hcF9zb21lIGlucHV0IH5mID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBpbnB1dCBpblxuICBsZXQgb3V0cHV0ID0gY3JlYXRlIH5sZW4gaW5cbiAgbGV0ICgpID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IG9wdCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCBpbnB1dCBpIGluXG4gICAgICBDaGVhcF9vcHRpb24uaXRlcl9zb21lIG9wdCB+ZjooZnVuIHggLT4gdW5zYWZlX3NldF9zb21lIG91dHB1dCBpIChmIHgpKVxuICAgIGRvbmVcbiAgaW5cbiAgb3V0cHV0XG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyYXkgPSBpbml0IChBcnJheS5sZW5ndGggYXJyYXkpIH5mOihmdW4gaSAtPiBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkpXG5cbmxldCBvZl9hcnJheV9zb21lIGFycmF5ID1cbiAgaW5pdF9zb21lIChBcnJheS5sZW5ndGggYXJyYXkpIH5mOihmdW4gaSAtPiBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkpXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmluY2x1ZGUgQmxpdC5NYWtlMV9nZW5lcmljIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgY29weSA9IFVuaWZvcm1fYXJyYXkuY29weVxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVuc2FmZV9jaGVhcF9vcHRpb24gPSBDaGVhcF9vcHRpb25cbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFN0YWNrX2ludGZcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgc2ltaWxhciB0byBbRGVxdWVdIGluIHRoYXQgaXQgdXNlcyBhbiBhcnJheSBvZiBbJ2FdIGFuZFxuICAgYSBtdXRhYmxlIFtpbnRdIHRvIGluZGljYXRlIHdoYXQgaW4gdGhlIGFycmF5IGlzIHVzZWQuICBXZSBjaG9vc2UgdG8gaW1wbGVtZW50IFtTdGFja11cbiAgIGRpcmVjdGx5IHJhdGhlciB0aGFuIG9uIHRvcCBvZiBbRGVxdWVdIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiAgRS5nLiBhIHNpbXBsZVxuICAgbWljcm9iZW5jaG1hcmsgc2hvd3MgdGhhdCBwdXNoL3BvcCBpcyBhYm91dCAyMCUgZmFzdGVyLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgZWx0cyA6ICdhIE9wdGlvbl9hcnJheS50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMDFfIHsgbGVuZ3RoID0gbGVuZ3RoX18wMDNfOyBlbHRzID0gZWx0c19fMDA1XyB9IC0+XG4gIGxldCBibmRzX18wMDJfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICBsZXQgYm5kc19fMDAyXyA9XG4gICAgbGV0IGFyZ19fMDA2XyA9IE9wdGlvbl9hcnJheS5zZXhwX29mX3QgX29mX2FfXzAwMV8gZWx0c19fMDA1XyBpblxuICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbHRzXCI7IGFyZ19fMDA2XyBdIDo6IGJuZHNfXzAwMl9cbiAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gIGluXG4gIGxldCBibmRzX18wMDJfID1cbiAgICBsZXQgYXJnX18wMDRfID0gc2V4cF9vZl9pbnQgbGVuZ3RoX18wMDNfIGluXG4gICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxlbmd0aFwiOyBhcmdfXzAwNF8gXSA6OiBibmRzX18wMDJfXG4gICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICBpblxuICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAyX1xuOztcblxuW0BAQGVuZF1cblxubGV0IHNleHBfb2ZfdF9pbnRlcm5hbCA9IHNleHBfb2ZfdFxubGV0IHNleHBfb2ZfdCA9IGBSZWJvdW5kX2xhdGVyXG5sZXQgXyA9IHNleHBfb2ZfdFxubGV0IGNhcGFjaXR5IHQgPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0c1xuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hICh7IGxlbmd0aDsgZWx0cyB9IGFzIHQpIDogdW5pdCA9XG4gIHRyeVxuICAgIGFzc2VydCAoMCA8PSBsZW5ndGggJiYgbGVuZ3RoIDw9IE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyk7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICAgIGludmFyaWFudF9hIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGVsdHMgaSlcbiAgICBkb25lO1xuICAgICgqIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB1bnVzZWQgZWxlbWVudHMgYXJlIHVuc2V0IHRvIGF2b2lkIGEgc3BhY2VcbiAgICAgICBsZWFrLiAqKVxuICAgIGZvciBpID0gbGVuZ3RoIHRvIE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyAtIDEgZG9cbiAgICAgIGFzc2VydCAobm90IChPcHRpb25fYXJyYXkuaXNfc29tZSBlbHRzIGkpKVxuICAgIGRvbmVcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiU3RhY2suaW52YXJpYW50IGZhaWxlZFwiXG4gICAgICAgICBbIFwiZXhuXCIsIGV4biB8PiBFeG4uc2V4cF9vZl90OyBcInN0YWNrXCIsIHQgfD4gc2V4cF9vZl90X2ludGVybmFsIHNleHBfb2Zfb3BhcXVlIF0pXG47O1xuXG5sZXQgY3JlYXRlICh0eXBlIGEpICgpIDogYSB0ID0geyBsZW5ndGggPSAwOyBlbHRzID0gT3B0aW9uX2FycmF5LmVtcHR5IH1cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG4oKiBUaGUgb3JkZXIgaW4gd2hpY2ggZWxlbWVudHMgYXJlIHZpc2l0ZWQgaGFzIGJlZW4gY2hvc2VuIHNvIGFzIHRvIGJlIGJhY2t3YXJkc1xuICAgY29tcGF0aWJsZSB3aXRoIFtTdGRsaWIuU3RhY2tdICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAhciAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSlcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIGYgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkpXG4gIGRvbmVcbjs7XG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBtZW0gPSBDLm1lbVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IG9mX2xpc3QgKHR5cGUgYSkgKGwgOiBhIGxpc3QpID1cbiAgaWYgTGlzdC5pc19lbXB0eSBsXG4gIHRoZW4gY3JlYXRlICgpXG4gIGVsc2UgKFxuICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGVsdHMgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KDIgKiBsZW5ndGgpIGluXG4gICAgbGV0IHIgPSByZWYgbCBpblxuICAgIGZvciBpID0gbGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgICAgbWF0Y2ggIXIgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgYSA6OiBsIC0+XG4gICAgICAgIE9wdGlvbl9hcnJheS5zZXRfc29tZSBlbHRzIGkgYTtcbiAgICAgICAgciA6PSBsXG4gICAgZG9uZTtcbiAgICB7IGxlbmd0aDsgZWx0cyB9KVxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IExpc3Quc2V4cF9vZl90IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9IG9mX2xpc3QgKExpc3QudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwKVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmxldCByZXNpemUgdCBzaXplID1cbiAgbGV0IGFyciA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpzaXplIGluXG4gIE9wdGlvbl9hcnJheS5ibGl0IH5zcmM6dC5lbHRzIH5kc3Q6YXJyIH5zcmNfcG9zOjAgfmRzdF9wb3M6MCB+bGVuOnQubGVuZ3RoO1xuICB0LmVsdHMgPC0gYXJyXG47O1xuXG5sZXQgc2V0X2NhcGFjaXR5IHQgbmV3X2NhcGFjaXR5ID1cbiAgbGV0IG5ld19jYXBhY2l0eSA9IG1heCBuZXdfY2FwYWNpdHkgKGxlbmd0aCB0KSBpblxuICBpZiBuZXdfY2FwYWNpdHkgPD4gY2FwYWNpdHkgdCB0aGVuIHJlc2l6ZSB0IG5ld19jYXBhY2l0eVxuOztcblxubGV0IHB1c2ggdCBhID1cbiAgaWYgdC5sZW5ndGggPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0cyB0aGVuIHJlc2l6ZSB0ICgyICogKHQubGVuZ3RoICsgMSkpO1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5lbHRzIHQubGVuZ3RoIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHBvcF9ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSB0Lmxlbmd0aCAtIDEgaW5cbiAgbGV0IHJlc3VsdCA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuZWx0cyBpO1xuICB0Lmxlbmd0aCA8LSBpO1xuICByZXN1bHRcbjs7XG5cbmxldCBwb3BfZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgXCJTdGFjay5wb3Agb2YgZW1wdHkgc3RhY2tcIlxubGV0IHBvcCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwb3Bfbm9uZW1wdHkgdClcbmxldCBwb3BfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gRXJyb3IucmFpc2UgcG9wX2Vycm9yIGVsc2UgcG9wX25vbmVtcHR5IHRcbmxldCB0b3Bfbm9uZW1wdHkgdCA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzICh0Lmxlbmd0aCAtIDEpXG5sZXQgdG9wX2Vycm9yID0gRXJyb3Iub2Zfc3RyaW5nIFwiU3RhY2sudG9wIG9mIGVtcHR5IHN0YWNrXCJcbmxldCB0b3AgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAodG9wX25vbmVtcHR5IHQpXG5sZXQgdG9wX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIEVycm9yLnJhaXNlIHRvcF9lcnJvciBlbHNlIHRvcF9ub25lbXB0eSB0XG5sZXQgY29weSB7IGxlbmd0aDsgZWx0cyB9ID0geyBsZW5ndGg7IGVsdHMgPSBPcHRpb25fYXJyYXkuY29weSBlbHRzIH1cblxubGV0IGNsZWFyIHQgPVxuICBpZiB0Lmxlbmd0aCA+IDBcbiAgdGhlbiAoXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuZWx0cyBpXG4gICAgZG9uZTtcbiAgICB0Lmxlbmd0aCA8LSAwKVxuOztcblxubGV0IHVudGlsX2VtcHR5IHQgZiA9XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgaWYgdC5sZW5ndGggPiAwXG4gICAgdGhlbiAoXG4gICAgICBmIChwb3Bfbm9uZW1wdHkgdCk7XG4gICAgICBsb29wICgpKVxuICBpblxuICBsb29wICgpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgIG1hdGNoIGYgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBwdXNoIHRfcmVzdWx0IHhcbiAgZG9uZTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgbGV0IHggPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpIGluXG4gICAgaWYgZiB4IHRoZW4gcHVzaCB0X3Jlc3VsdCB4XG4gIGRvbmU7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB3cml0ZV9pbmRleCA9IHJlZiAwIGluXG4gIEV4bi5wcm90ZWN0XG4gICAgfmY6KGZ1biAoKSAtPlxuICAgICAgZm9yIHJlYWRfaW5kZXggPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgICBsZXQgeCA9IE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSB0LmVsdHMgcmVhZF9pbmRleCBpblxuICAgICAgICBpZiBmIHhcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgaWYgIXdyaXRlX2luZGV4IDwgcmVhZF9pbmRleFxuICAgICAgICAgIHRoZW4gT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0LmVsdHMgIXdyaXRlX2luZGV4IHg7XG4gICAgICAgICAgaW5jciB3cml0ZV9pbmRleClcbiAgICAgIGRvbmUpXG4gICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgZm9yIGkgPSAhd3JpdGVfaW5kZXggdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmUgdC5lbHRzIGlcbiAgICAgIGRvbmU7XG4gICAgICB0Lmxlbmd0aCA8LSAhd3JpdGVfaW5kZXgpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBzaW5nbGV0b24geCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIHB1c2ggdCB4O1xuICB0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFRoaXMgaXMgbGlmdGVkIG91dCBvZiBbTV0gYmVjYXVzZSBbU291cmNlX2NvZGVfcG9zaXRpb24wXSBleHBvcnRzIFtTdHJpbmcwXVxuICAgYXMgW1N0cmluZ10sIHdoaWNoIGRvZXMgbm90IGV4cG9ydCBhIGhhc2ggZnVuY3Rpb24uICopXG5sZXQgaGFzaF9vdmVycmlkZSB7IFN0ZGxpYi5MZXhpbmcucG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSA9XG4gIFN0cmluZy5oYXNoIHBvc19mbmFtZVxuICBseG9yIEludC5oYXNoIHBvc19sbnVtXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2JvbFxuICBseG9yIEludC5oYXNoIHBvc19jbnVtXG47O1xuXG5tb2R1bGUgTSA9IHN0cnVjdFxuICBpbmNsdWRlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxuXG4gIGxldCBoYXNoID0gaGFzaF9vdmVycmlkZVxuZW5kXG5cbmluY2x1ZGUgTVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoTSlcblxubGV0IG9mX3BvcyAocG9zX2ZuYW1lLCBwb3NfbG51bSwgcG9zX2NudW0sIF8pID1cbiAgeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfY251bTsgcG9zX2JvbCA9IDAgfVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmVnXG4gICAgfCBaZXJvXG4gICAgfCBQb3NcbiAgICB8IE5hblxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoLCBlbnVtZXJhdGVdXG5cbiAgbGV0IHRfb2Zfc2V4cCA9XG4gICAgKGxldCBlcnJvcl9zb3VyY2VfXzAwM18gPSBcInNpZ25fb3JfbmFuLm1sLlQudFwiIGluXG4gICAgIGZ1bmN0aW9uXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgLT4gTmVnXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgLT4gUG9zXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgLT4gTmFuXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDJfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICB8IHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgTmVnIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5lZ1wiXG4gICAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgICB8IFBvcyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQb3NcIlxuICAgICAgfCBOYW4gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmFuXCJcbiAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICB7IHVudHlwZWQgPVxuICAgICAgICBWYXJpYW50XG4gICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiTmVnXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlplcm9cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiUG9zXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIk5hblwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICAgIHwgTmVnIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICAgIHwgWmVybyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgICB8IFBvcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICB8IE5hbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDNcbiAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgOztcblxuICBsZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgYXJnID1cbiAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gICAgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgYWxsID0gKFsgTmVnOyBaZXJvOyBQb3M7IE5hbiBdIDogdCBsaXN0KVxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG9mX3N0cmluZyBzID0gdF9vZl9zZXhwIChzZXhwX29mX3N0cmluZyBzKVxuICBsZXQgdG9fc3RyaW5nIHQgPSBzdHJpbmdfb2Zfc2V4cCAoc2V4cF9vZl90IHQpXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5TaWduX29yX25hblwiXG5lbmRcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogVC50KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogVC50KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogVC50KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogVC50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogVC50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IFQudCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogVC50KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IFQudCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBULnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoVClcblxuKCogT3BlbiBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBvZl9zaWduID0gZnVuY3Rpb25cbiAgfCBTaWduLk5lZyAtPiBOZWdcbiAgfCBTaWduLlplcm8gLT4gWmVyb1xuICB8IFNpZ24uUG9zIC0+IFBvc1xuOztcblxubGV0IHRvX3NpZ25fZXhuID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gU2lnbi5OZWdcbiAgfCBaZXJvIC0+IFNpZ24uWmVyb1xuICB8IFBvcyAtPiBTaWduLlBvc1xuICB8IE5hbiAtPiBpbnZhbGlkX2FyZyBcIkJhc2UuU2lnbl9vcl9uYW4udG9fc2lnbl9leG46IE5hblwiXG47O1xuXG5sZXQgb2ZfaW50IG4gPSBvZl9zaWduIChTaWduLm9mX2ludCBuKVxubGV0IHRvX2ludF9leG4gdCA9IFNpZ24udG9faW50ICh0b19zaWduX2V4biB0KVxuXG5sZXQgZmxpcCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFBvc1xuICB8IFplcm8gLT4gWmVyb1xuICB8IFBvcyAtPiBOZWdcbiAgfCBOYW4gLT4gTmFuXG47O1xuXG5sZXQgKCAqICkgdCB0JyA9XG4gIG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOYW4sIF8gfCBfLCBOYW4gLT4gTmFuXG4gIHwgXyAtPiBvZl9zaWduIChTaWduLiggKiApICh0b19zaWduX2V4biB0KSAodG9fc2lnbl9leG4gdCcpKVxuOztcblxubGV0IHRvX3N0cmluZ19odW0gPSBmdW5jdGlvblxuICB8IE5lZyAtPiBcIm5lZ2F0aXZlXCJcbiAgfCBaZXJvIC0+IFwiemVyb1wiXG4gIHwgUG9zIC0+IFwicG9zaXRpdmVcIlxuICB8IE5hbiAtPiBcIm5vdC1hLW51bWJlclwiXG47O1xuXG4oKiBJbmNsdWRlIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyIGFueSBmdW5jdG9yIGFwcGxpY2F0aW9ucyB0aGF0XG4gICBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9XG4gIHwgSW5jbCBvZiAnYVxuICB8IEV4Y2wgb2YgJ2FcbiAgfCBVbmJvdW5kZWRcbltAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGFsbCA6ICdhLiAnYSBsaXN0IC0+ICdhIHQgbGlzdCA9XG4gIGZ1biBfYWxsX29mX2EgLT5cbiAgUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5hcHBlbmRcbiAgICAobGV0IHJlYyBtYXAgbCBhY2MgPVxuICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgIHwgW10gLT4gUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5yZXYgYWNjXG4gICAgICAgfCBlbnVtZXJhdGVfXzAwMV8gOjogbCAtPiBtYXAgbCAoSW5jbCBlbnVtZXJhdGVfXzAwMV8gOjogYWNjKVxuICAgICBpblxuICAgICBtYXAgX2FsbF9vZl9hIFtdKVxuICAgIChQcHhfZW51bWVyYXRlX2xpYi5MaXN0LmFwcGVuZFxuICAgICAgIChsZXQgcmVjIG1hcCBsIGFjYyA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LnJldiBhY2NcbiAgICAgICAgICB8IGVudW1lcmF0ZV9fMDAyXyA6OiBsIC0+IG1hcCBsIChFeGNsIGVudW1lcmF0ZV9fMDAyXyA6OiBhY2MpXG4gICAgICAgIGluXG4gICAgICAgIG1hcCBfYWxsX29mX2EgW10pXG4gICAgICAgWyBVbmJvdW5kZWQgXSlcbjs7XG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICBmdW4gKHR5cGUgYV9fMDE4XykgOiAoKFNleHBsaWIwLlNleHAudCAtPiBhX18wMThfKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDE4XyB0KSAtPlxuICBsZXQgZXJyb3Jfc291cmNlX18wMDZfID0gXCJtYXliZV9ib3VuZC5tbC50XCIgaW5cbiAgZnVuIF9vZl9hX18wMDNfIC0+IGZ1bmN0aW9uXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiaW5jbFwiIHwgXCJJbmNsXCIpIGFzIF90YWdfXzAwOV8pIDo6IHNleHBfYXJnc19fMDEwXykgYXNcbiAgICAgIF9zZXhwX18wMDhfIC0+XG4gICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTBfIHdpdGhcbiAgICAgICB8IFsgYXJnMF9fMDExXyBdIC0+XG4gICAgICAgICBsZXQgcmVzMF9fMDEyXyA9IF9vZl9hX18wMDNfIGFyZzBfXzAxMV8gaW5cbiAgICAgICAgIEluY2wgcmVzMF9fMDEyX1xuICAgICAgIHwgXyAtPlxuICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNl9cbiAgICAgICAgICAgX3RhZ19fMDA5X1xuICAgICAgICAgICBfc2V4cF9fMDA4XylcbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJleGNsXCIgfCBcIkV4Y2xcIikgYXMgX3RhZ19fMDE0XykgOjogc2V4cF9hcmdzX18wMTVfKSBhc1xuICAgICAgX3NleHBfXzAxM18gLT5cbiAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxNV8gd2l0aFxuICAgICAgIHwgWyBhcmcwX18wMTZfIF0gLT5cbiAgICAgICAgIGxldCByZXMwX18wMTdfID0gX29mX2FfXzAwM18gYXJnMF9fMDE2XyBpblxuICAgICAgICAgRXhjbCByZXMwX18wMTdfXG4gICAgICAgfCBfIC0+XG4gICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA2X1xuICAgICAgICAgICBfdGFnX18wMTRfXG4gICAgICAgICAgIF9zZXhwX18wMTNfKVxuICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInVuYm91bmRlZFwiIHwgXCJVbmJvdW5kZWRcIikgLT4gVW5ib3VuZGVkXG4gICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5jbFwiIHwgXCJJbmNsXCIpIGFzIHNleHBfXzAwN18gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJleGNsXCIgfCBcIkV4Y2xcIikgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwidW5ib3VuZGVkXCIgfCBcIlVuYm91bmRlZFwiKSA6OiBfKSBhc1xuICAgICAgc2V4cF9fMDA3XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNV8gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNV8gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgfCBzZXhwX18wMDVfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbjs7XG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gKHR5cGUgYV9fMDI0XykgOiAoKGFfXzAyNF8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiBhX18wMjRfIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICBmdW4gX29mX2FfXzAxOV8gLT4gZnVuY3Rpb25cbiAgICB8IEluY2wgYXJnMF9fMDIwXyAtPlxuICAgICAgbGV0IHJlczBfXzAyMV8gPSBfb2ZfYV9fMDE5XyBhcmcwX18wMjBfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJJbmNsXCI7IHJlczBfXzAyMV8gXVxuICAgIHwgRXhjbCBhcmcwX18wMjJfIC0+XG4gICAgICBsZXQgcmVzMF9fMDIzXyA9IF9vZl9hX18wMTlfIGFyZzBfXzAyMl8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkV4Y2xcIjsgcmVzMF9fMDIzXyBdXG4gICAgfCBVbmJvdW5kZWQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5ib3VuZGVkXCJcbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkluY2xcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkV4Y2xcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJVbmJvdW5kZWRcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxuW0BAQGVuZF1cblxudHlwZSBpbnRlcnZhbF9jb21wYXJpc29uID1cbiAgfCBCZWxvd19sb3dlcl9ib3VuZFxuICB8IEluX3JhbmdlXG4gIHwgQWJvdmVfdXBwZXJfYm91bmRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2hdXG5cbmxldCBpbnRlcnZhbF9jb21wYXJpc29uX29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDI3XyA9IFwibWF5YmVfYm91bmQubWwuaW50ZXJ2YWxfY29tcGFyaXNvblwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiYmVsb3dfbG93ZXJfYm91bmRcIiB8IFwiQmVsb3dfbG93ZXJfYm91bmRcIikgLT4gQmVsb3dfbG93ZXJfYm91bmRcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImluX3JhbmdlXCIgfCBcIkluX3JhbmdlXCIpIC0+IEluX3JhbmdlXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJhYm92ZV91cHBlcl9ib3VuZFwiIHwgXCJBYm92ZV91cHBlcl9ib3VuZFwiKSAtPiBBYm92ZV91cHBlcl9ib3VuZFxuICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImJlbG93X2xvd2VyX2JvdW5kXCIgfCBcIkJlbG93X2xvd2VyX2JvdW5kXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbl9yYW5nZVwiIHwgXCJJbl9yYW5nZVwiKSA6OiBfKSBhcyBzZXhwX18wMjhfXG4gICAgIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJhYm92ZV91cHBlcl9ib3VuZFwiIHwgXCJBYm92ZV91cHBlcl9ib3VuZFwiKSA6OiBfKSBhcyBzZXhwX18wMjhfXG4gICAgIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMjZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDI2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgfCBzZXhwX18wMjZfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgICAgICAgICAgICAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiBpbnRlcnZhbF9jb21wYXJpc29uKVxuOztcblxubGV0IHNleHBfb2ZfaW50ZXJ2YWxfY29tcGFyaXNvbiA9XG4gIChmdW5jdGlvblxuICAgIHwgQmVsb3dfbG93ZXJfYm91bmQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiQmVsb3dfbG93ZXJfYm91bmRcIlxuICAgIHwgSW5fcmFuZ2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiSW5fcmFuZ2VcIlxuICAgIHwgQWJvdmVfdXBwZXJfYm91bmQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiQWJvdmVfdXBwZXJfYm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbmxldCAoaW50ZXJ2YWxfY29tcGFyaXNvbl9zZXhwX2dyYW1tYXIgOiBpbnRlcnZhbF9jb21wYXJpc29uIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiQmVsb3dfbG93ZXJfYm91bmRcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkluX3JhbmdlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJBYm92ZV91cHBlcl9ib3VuZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZV9pbnRlcnZhbF9jb21wYXJpc29uID1cbiAgKFN0ZGxpYi5jb21wYXJlIDogaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IGludClcbjs7XG5cbmxldCAoaGFzaF9mb2xkX2ludGVydmFsX2NvbXBhcmlzb24gOlxuICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgfCBJbl9yYW5nZSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaF9pbnRlcnZhbF9jb21wYXJpc29uIDogaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX2ludGVydmFsX2NvbXBhcmlzb24gaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBJbmNsIGluY2wgLT4gSW5jbCAoZiBpbmNsKVxuICB8IEV4Y2wgZXhjbCAtPiBFeGNsIChmIGV4Y2wpXG4gIHwgVW5ib3VuZGVkIC0+IFVuYm91bmRlZFxuOztcblxubGV0IGlzX2xvd2VyX2JvdW5kIHQgfm9mXzphIH5jb21wYXJlID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgSW5jbCBpbmNsIC0+IGNvbXBhcmUgaW5jbCBhIDw9IDBcbiAgfCBFeGNsIGV4Y2wgLT4gY29tcGFyZSBleGNsIGEgPCAwXG4gIHwgVW5ib3VuZGVkIC0+IHRydWVcbjs7XG5cbmxldCBpc191cHBlcl9ib3VuZCB0IH5vZl86YSB+Y29tcGFyZSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEluY2wgaW5jbCAtPiBjb21wYXJlIGEgaW5jbCA8PSAwXG4gIHwgRXhjbCBleGNsIC0+IGNvbXBhcmUgYSBleGNsIDwgMFxuICB8IFVuYm91bmRlZCAtPiB0cnVlXG47O1xuXG5sZXQgYm91bmRzX2Nyb3NzZWQgfmxvd2VyIH51cHBlciB+Y29tcGFyZSA9XG4gIG1hdGNoIGxvd2VyIHdpdGhcbiAgfCBVbmJvdW5kZWQgLT4gZmFsc2VcbiAgfCBJbmNsIGxvd2VyIHwgRXhjbCBsb3dlciAtPlxuICAgIChtYXRjaCB1cHBlciB3aXRoXG4gICAgIHwgVW5ib3VuZGVkIC0+IGZhbHNlXG4gICAgIHwgSW5jbCB1cHBlciB8IEV4Y2wgdXBwZXIgLT4gY29tcGFyZSBsb3dlciB1cHBlciA+IDApXG47O1xuXG5sZXQgY2hlY2tfaW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgfmNvbXBhcmUgPVxuICBpZiBib3VuZHNfY3Jvc3NlZCB+bG93ZXIgfnVwcGVyIH5jb21wYXJlXG4gIHRoZW4gZmFpbHdpdGggXCJNYXliZV9ib3VuZC5jb21wYXJlX3RvX2ludGVydmFsX2V4bjogbG93ZXIgYm91bmQgPiB1cHBlciBib3VuZFwiXG47O1xuXG5sZXQgY29tcGFyZV90b19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciBhIH5jb21wYXJlID1cbiAgY2hlY2tfaW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgfmNvbXBhcmU7XG4gIGlmIG5vdCAoaXNfbG93ZXJfYm91bmQgbG93ZXIgfm9mXzphIH5jb21wYXJlKVxuICB0aGVuIEJlbG93X2xvd2VyX2JvdW5kXG4gIGVsc2UgaWYgbm90IChpc191cHBlcl9ib3VuZCB1cHBlciB+b2ZfOmEgfmNvbXBhcmUpXG4gIHRoZW4gQWJvdmVfdXBwZXJfYm91bmRcbiAgZWxzZSBJbl9yYW5nZVxuOztcblxubGV0IGludGVydmFsX2NvbnRhaW5zX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgPVxuICBtYXRjaCBjb21wYXJlX3RvX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgd2l0aFxuICB8IEluX3JhbmdlIC0+IHRydWVcbiAgfCBCZWxvd19sb3dlcl9ib3VuZCB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+IGZhbHNlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBUXG5cbm1vZHVsZSBPcl9kdXBsaWNhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICBbIGBPayBvZiAnYVxuICAgIHwgYER1cGxpY2F0ZVxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDAxXyBiX18wMDJfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMDFfLCBiX18wMDJfIHdpdGhcbiAgICAgIHwgYE9rIF9sZWZ0X18wMDNfLCBgT2sgX3JpZ2h0X18wMDRfIC0+IF9jbXBfX2EgX2xlZnRfXzAwM18gX3JpZ2h0X18wMDRfXG4gICAgICB8IGBEdXBsaWNhdGUsIGBEdXBsaWNhdGUgLT4gMFxuICAgICAgfCB4LCB5IC0+IFN0ZGxpYi5jb21wYXJlIHggeSlcbiAgOztcblxuICBsZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMDVfIGJfXzAwNl8gLT5cbiAgICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDA1XyBiX18wMDZfXG4gICAgICB0aGVuIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhX18wMDVfLCBiX18wMDZfIHdpdGhcbiAgICAgICAgfCBgT2sgX2xlZnRfXzAwN18sIGBPayBfcmlnaHRfXzAwOF8gLT4gX2NtcF9fYSBfbGVmdF9fMDA3XyBfcmlnaHRfXzAwOF9cbiAgICAgICAgfCBgRHVwbGljYXRlLCBgRHVwbGljYXRlIC0+IHRydWVcbiAgICAgICAgfCB4LCB5IC0+IFN0ZGxpYi4oID0gKSB4IHkpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuIF9vZl9hX18wMDlfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBPayB2X18wMTBfIC0+IFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IF9vZl9hX18wMDlfIHZfXzAxMF8gXVxuICAgICAgfCBgRHVwbGljYXRlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkR1cGxpY2F0ZVwiXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gJ3pcbmVuZFxuXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gY29tcGFyYXRvcjooJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICd6XG5lbmRcblxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gKCdrZXksICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ3pcbmVuZFxuXG5tb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOlxuICAgICdrICd2LiAoJ2sgLT4gJ2sgLT4gaW50KSAtPiAoJ3YgLT4gJ3YgLT4gaW50KSAtPiAoJ2ssICd2KSB0IC0+ICgnaywgJ3YpIHQgLT4gaW50XG4gICAgPVxuICAgIGZ1biBfY21wX19rIF9jbXBfX3YgYV9fMDExXyBiX18wMTJfIC0+XG4gICAgbGV0IHRfXzAxM18sIHRfXzAxNF8gPSBhX18wMTFfIGluXG4gICAgbGV0IHRfXzAxNV8sIHRfXzAxNl8gPSBiX18wMTJfIGluXG4gICAgbWF0Y2ggX2NtcF9fayB0X18wMTNfIHRfXzAxNV8gd2l0aFxuICAgIHwgMCAtPlxuICAgICAgaWYgU3RkbGliLiggPT0gKSB0X18wMTRfIHRfXzAxNl9cbiAgICAgIHRoZW4gMFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHRfXzAxNF8sIHRfXzAxNl8gd2l0aFxuICAgICAgICB8IGBMZWZ0IF9sZWZ0X18wMTdfLCBgTGVmdCBfcmlnaHRfXzAxOF8gLT4gX2NtcF9fdiBfbGVmdF9fMDE3XyBfcmlnaHRfXzAxOF9cbiAgICAgICAgfCBgUmlnaHQgX2xlZnRfXzAxOV8sIGBSaWdodCBfcmlnaHRfXzAyMF8gLT4gX2NtcF9fdiBfbGVmdF9fMDE5XyBfcmlnaHRfXzAyMF9cbiAgICAgICAgfCBgVW5lcXVhbCBfbGVmdF9fMDIxXywgYFVuZXF1YWwgX3JpZ2h0X18wMjJfIC0+XG4gICAgICAgICAgbGV0IHRfXzAyM18sIHRfXzAyNF8gPSBfbGVmdF9fMDIxXyBpblxuICAgICAgICAgIGxldCB0X18wMjVfLCB0X18wMjZfID0gX3JpZ2h0X18wMjJfIGluXG4gICAgICAgICAgKG1hdGNoIF9jbXBfX3YgdF9fMDIzXyB0X18wMjVfIHdpdGhcbiAgICAgICAgICAgfCAwIC0+IF9jbXBfX3YgdF9fMDI0XyB0X18wMjZfXG4gICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICB8IHgsIHkgLT4gU3RkbGliLmNvbXBhcmUgeCB5KVxuICAgIHwgbiAtPiBuXG4gIDs7XG5cbiAgbGV0IGVxdWFsIDpcbiAgICAnayAndi5cbiAgICAoJ2sgLT4gJ2sgLT4gYm9vbCkgLT4gKCd2IC0+ICd2IC0+IGJvb2wpIC0+ICgnaywgJ3YpIHQgLT4gKCdrLCAndikgdCAtPiBib29sXG4gICAgPVxuICAgIGZ1biBfY21wX19rIF9jbXBfX3YgYV9fMDI3XyBiX18wMjhfIC0+XG4gICAgICBsZXQgdF9fMDI5XywgdF9fMDMwXyA9IGFfXzAyN18gaW5cbiAgICAgIGxldCB0X18wMzFfLCB0X18wMzJfID0gYl9fMDI4XyBpblxuICAgICAgU3RkbGliLiggJiYgKVxuICAgICAgICAoX2NtcF9fayB0X18wMjlfIHRfXzAzMV8pXG4gICAgICAgIChpZiBTdGRsaWIuKCA9PSApIHRfXzAzMF8gdF9fMDMyX1xuICAgICAgICAgdGhlbiB0cnVlXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbWF0Y2ggdF9fMDMwXywgdF9fMDMyXyB3aXRoXG4gICAgICAgICAgIHwgYExlZnQgX2xlZnRfXzAzM18sIGBMZWZ0IF9yaWdodF9fMDM0XyAtPiBfY21wX192IF9sZWZ0X18wMzNfIF9yaWdodF9fMDM0X1xuICAgICAgICAgICB8IGBSaWdodCBfbGVmdF9fMDM1XywgYFJpZ2h0IF9yaWdodF9fMDM2XyAtPiBfY21wX192IF9sZWZ0X18wMzVfIF9yaWdodF9fMDM2X1xuICAgICAgICAgICB8IGBVbmVxdWFsIF9sZWZ0X18wMzdfLCBgVW5lcXVhbCBfcmlnaHRfXzAzOF8gLT5cbiAgICAgICAgICAgICBsZXQgdF9fMDM5XywgdF9fMDQwXyA9IF9sZWZ0X18wMzdfIGluXG4gICAgICAgICAgICAgbGV0IHRfXzA0MV8sIHRfXzA0Ml8gPSBfcmlnaHRfXzAzOF8gaW5cbiAgICAgICAgICAgICBTdGRsaWIuKCAmJiApIChfY21wX192IHRfXzAzOV8gdF9fMDQxXykgKF9jbXBfX3YgdF9fMDQwXyB0X18wNDJfKVxuICAgICAgICAgICB8IHgsIHkgLT4gU3RkbGliLiggPSApIHggeSkpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6XG4gICAgJ2sgJ3YuXG4gICAgKFNleHBsaWIwLlNleHAudCAtPiAnaylcbiAgICAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICd2KVxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICA9XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDU3XyA9IFwibWFwX2ludGYubWwuU3ltbWV0cmljX2RpZmZfZWxlbWVudC50XCIgaW5cbiAgICBmdW4gX29mX2tfXzA0M18gX29mX3ZfXzA0NF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFsgYXJnMF9fMDY3XzsgYXJnMV9fMDY4XyBdIC0+XG4gICAgICAgIGxldCByZXMwX18wNjlfID0gX29mX2tfXzA0M18gYXJnMF9fMDY3X1xuICAgICAgICBhbmQgcmVzMV9fMDcwXyA9XG4gICAgICAgICAgbGV0IHNleHBfXzA2Nl8gPSBhcmcxX18wNjhfIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBtYXRjaCBzZXhwX18wNjZfIHdpdGhcbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIGF0b21fXzA0N18gYXMgX3NleHBfXzA0OV8gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGF0b21fXzA0N18gd2l0aFxuICAgICAgICAgICAgICAgfCBcIkxlZnRcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBcIlJpZ2h0XCIgLT5cbiAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzA1N18gX3NleHBfXzA0OV9cbiAgICAgICAgICAgICAgIHwgXCJVbmVxdWFsXCIgLT5cbiAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzA1N18gX3NleHBfXzA0OV9cbiAgICAgICAgICAgICAgIHwgXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iubm9fdmFyaWFudF9tYXRjaCAoKSlcbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gYXRvbV9fMDQ3XyA6OiBzZXhwX2FyZ3NfXzA1MF8pIGFzXG4gICAgICAgICAgICAgIF9zZXhwX18wNDlfIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBhdG9tX18wNDdfIHdpdGhcbiAgICAgICAgICAgICAgIHwgXCJMZWZ0XCIgYXMgX3RhZ19fMDYzXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNTBfIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgWyBhcmcwX18wNjRfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA2NV8gPSBfb2Zfdl9fMDQ0XyBhcmcwX18wNjRfIGluXG4gICAgICAgICAgICAgICAgICAgIGBMZWZ0IHJlczBfXzA2NV9cbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgX3RhZ19fMDYzX1xuICAgICAgICAgICAgICAgICAgICAgIF9zZXhwX18wNDlfKVxuICAgICAgICAgICAgICAgfCBcIlJpZ2h0XCIgYXMgX3RhZ19fMDYwXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNTBfIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgWyBhcmcwX18wNjFfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA2Ml8gPSBfb2Zfdl9fMDQ0XyBhcmcwX18wNjFfIGluXG4gICAgICAgICAgICAgICAgICAgIGBSaWdodCByZXMwX18wNjJfXG4gICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgIF90YWdfXzA2MF9cbiAgICAgICAgICAgICAgICAgICAgICBfc2V4cF9fMDQ5XylcbiAgICAgICAgICAgICAgIHwgXCJVbmVxdWFsXCIgYXMgX3RhZ19fMDUxXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNTBfIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgWyBhcmcwX18wNThfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA1OV8gPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFyZzBfXzA1OF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFsgYXJnMF9fMDUyXzsgYXJnMV9fMDUzXyBdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDU0XyA9IF9vZl92X18wNDRfIGFyZzBfXzA1Ml9cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCByZXMxX18wNTVfID0gX29mX3ZfXzA0NF8gYXJnMV9fMDUzXyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzMF9fMDU0XywgcmVzMV9fMDU1X1xuICAgICAgICAgICAgICAgICAgICAgIHwgc2V4cF9fMDU2XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXhwX18wNTZfXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGBVbmVxdWFsIHJlczBfXzA1OV9cbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgX3RhZ19fMDUxX1xuICAgICAgICAgICAgICAgICAgICAgIF9zZXhwX18wNDlfKVxuICAgICAgICAgICAgICAgfCBfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5ub192YXJpYW50X21hdGNoICgpKVxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzA0OF8gLT5cbiAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICBzZXhwX18wNDhfXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wNDhfIC0+XG4gICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICBzZXhwX18wNDhfXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2ggLT5cbiAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5ub19tYXRjaGluZ192YXJpYW50X2ZvdW5kXG4gICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICBzZXhwX18wNjZfXG4gICAgICAgIGluXG4gICAgICAgIHJlczBfXzA2OV8sIHJlczFfXzA3MF9cbiAgICAgIHwgc2V4cF9fMDcxXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGVycm9yX3NvdXJjZV9fMDU3XyAyIHNleHBfXzA3MV9cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnayAndi5cbiAgICAoJ2sgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgndiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2tfXzA3Ml8gX29mX3ZfXzA3M18gKGFyZzBfXzA4MV8sIGFyZzFfXzA4Ml8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDgzXyA9IF9vZl9rX18wNzJfIGFyZzBfXzA4MV9cbiAgICAgIGFuZCByZXMxX18wODRfID1cbiAgICAgICAgbWF0Y2ggYXJnMV9fMDgyXyB3aXRoXG4gICAgICAgIHwgYExlZnQgdl9fMDc0XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkxlZnRcIjsgX29mX3ZfXzA3M18gdl9fMDc0XyBdXG4gICAgICAgIHwgYFJpZ2h0IHZfXzA3NV8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJSaWdodFwiOyBfb2Zfdl9fMDczXyB2X18wNzVfIF1cbiAgICAgICAgfCBgVW5lcXVhbCB2X18wNzZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlVuZXF1YWxcIlxuICAgICAgICAgICAgOyAobGV0IGFyZzBfXzA3N18sIGFyZzFfXzA3OF8gPSB2X18wNzZfIGluXG4gICAgICAgICAgICAgICBsZXQgcmVzMF9fMDc5XyA9IF9vZl92X18wNzNfIGFyZzBfXzA3N19cbiAgICAgICAgICAgICAgIGFuZCByZXMxX18wODBfID0gX29mX3ZfXzA3M18gYXJnMV9fMDc4XyBpblxuICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMDc5XzsgcmVzMV9fMDgwXyBdKVxuICAgICAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzA4M187IHJlczFfXzA4NF8gXVxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6XG4gICAgJ2sgJ3YuXG4gICAgJ2sgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnaywgJ3YpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8na19zZXhwX2dyYW1tYXIgXyd2X3NleHBfZ3JhbW1hciAtPlxuICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICBMaXN0XG4gICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgKCBfJ2tfc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgICAgICwgQ29uc1xuICAgICAgICAgICAgICAgICAgICggVmFyaWFudFxuICAgICAgICAgICAgICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9IENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9IENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiVW5lcXVhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBFbXB0eSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICwgRW1wdHkgKSApKVxuICAgICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIE1lcmdlX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2xlZnQsICdyaWdodCkgdCA9XG4gICAgWyBgTGVmdCBvZiAnbGVmdFxuICAgIHwgYFJpZ2h0IG9mICdyaWdodFxuICAgIHwgYEJvdGggb2YgJ2xlZnQgKiAncmlnaHRcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2xlZnQgJ3JpZ2h0LlxuICAgICgnbGVmdCAtPiAnbGVmdCAtPiBpbnQpXG4gICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gaW50KVxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2xlZnQgX2NtcF9fcmlnaHQgYV9fMDg1XyBiX18wODZfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wODVfIGJfXzA4Nl9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzA4NV8sIGJfXzA4Nl8gd2l0aFxuICAgICAgfCBgTGVmdCBfbGVmdF9fMDg3XywgYExlZnQgX3JpZ2h0X18wODhfIC0+IF9jbXBfX2xlZnQgX2xlZnRfXzA4N18gX3JpZ2h0X18wODhfXG4gICAgICB8IGBSaWdodCBfbGVmdF9fMDg5XywgYFJpZ2h0IF9yaWdodF9fMDkwXyAtPiBfY21wX19yaWdodCBfbGVmdF9fMDg5XyBfcmlnaHRfXzA5MF9cbiAgICAgIHwgYEJvdGggX2xlZnRfXzA5MV8sIGBCb3RoIF9yaWdodF9fMDkyXyAtPlxuICAgICAgICBsZXQgdF9fMDkzXywgdF9fMDk0XyA9IF9sZWZ0X18wOTFfIGluXG4gICAgICAgIGxldCB0X18wOTVfLCB0X18wOTZfID0gX3JpZ2h0X18wOTJfIGluXG4gICAgICAgIChtYXRjaCBfY21wX19sZWZ0IHRfXzA5M18gdF9fMDk1XyB3aXRoXG4gICAgICAgICB8IDAgLT4gX2NtcF9fcmlnaHQgdF9fMDk0XyB0X18wOTZfXG4gICAgICAgICB8IG4gLT4gbilcbiAgICAgIHwgeCwgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHkpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGJvb2wpXG4gICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gYm9vbClcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gYm9vbFxuICAgID1cbiAgICBmdW4gX2NtcF9fbGVmdCBfY21wX19yaWdodCBhX18wOTdfIGJfXzA5OF8gLT5cbiAgICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDk3XyBiX18wOThfXG4gICAgICB0aGVuIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhX18wOTdfLCBiX18wOThfIHdpdGhcbiAgICAgICAgfCBgTGVmdCBfbGVmdF9fMDk5XywgYExlZnQgX3JpZ2h0X18xMDBfIC0+IF9jbXBfX2xlZnQgX2xlZnRfXzA5OV8gX3JpZ2h0X18xMDBfXG4gICAgICAgIHwgYFJpZ2h0IF9sZWZ0X18xMDFfLCBgUmlnaHQgX3JpZ2h0X18xMDJfIC0+IF9jbXBfX3JpZ2h0IF9sZWZ0X18xMDFfIF9yaWdodF9fMTAyX1xuICAgICAgICB8IGBCb3RoIF9sZWZ0X18xMDNfLCBgQm90aCBfcmlnaHRfXzEwNF8gLT5cbiAgICAgICAgICBsZXQgdF9fMTA1XywgdF9fMTA2XyA9IF9sZWZ0X18xMDNfIGluXG4gICAgICAgICAgbGV0IHRfXzEwN18sIHRfXzEwOF8gPSBfcmlnaHRfXzEwNF8gaW5cbiAgICAgICAgICBTdGRsaWIuKCAmJiApIChfY21wX19sZWZ0IHRfXzEwNV8gdF9fMTA3XykgKF9jbXBfX3JpZ2h0IHRfXzEwNl8gdF9fMTA4XylcbiAgICAgICAgfCB4LCB5IC0+IFN0ZGxpYi4oID0gKSB4IHkpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2xlZnQgJ3JpZ2h0LlxuICAgICgnbGVmdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdyaWdodCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuIF9vZl9sZWZ0X18xMDlfIF9vZl9yaWdodF9fMTEwXyAtPiBmdW5jdGlvblxuICAgICAgfCBgTGVmdCB2X18xMTFfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkxlZnRcIjsgX29mX2xlZnRfXzEwOV8gdl9fMTExXyBdXG4gICAgICB8IGBSaWdodCB2X18xMTJfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IF9vZl9yaWdodF9fMTEwXyB2X18xMTJfIF1cbiAgICAgIHwgYEJvdGggdl9fMTEzXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkJvdGhcIlxuICAgICAgICAgIDsgKGxldCBhcmcwX18xMTRfLCBhcmcxX18xMTVfID0gdl9fMTEzXyBpblxuICAgICAgICAgICAgIGxldCByZXMwX18xMTZfID0gX29mX2xlZnRfXzEwOV8gYXJnMF9fMTE0X1xuICAgICAgICAgICAgIGFuZCByZXMxX18xMTdfID0gX29mX3JpZ2h0X18xMTBfIGFyZzFfXzExNV8gaW5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18xMTZfOyByZXMxX18xMTdfIF0pXG4gICAgICAgICAgXVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5NYXAuQ29udGludWVfb3Jfc3RvcCAqKVxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvbnRpbnVlXG4gICAgfCBTdG9wXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogdCAtPiB0IC0+IGludClcbiAgbGV0IGFsbCA9IChbIENvbnRpbnVlOyBTdG9wIF0gOiB0IGxpc3QpXG4gIGxldCBlcXVhbCA9IChTdGRsaWIuKCA9ICkgOiB0IC0+IHQgLT4gYm9vbClcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgQ29udGludWUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiQ29udGludWVcIlxuICAgICAgfCBTdG9wIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlN0b3BcIlxuICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLk1hcC5GaW5pc2hlZF9vcl91bmZpbmlzaGVkICopXG5tb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRmluaXNoZWRcbiAgICB8IFVuZmluaXNoZWRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgRmluaXNoZWQ7IFVuZmluaXNoZWQgXSA6IHQgbGlzdClcbiAgbGV0IGVxdWFsID0gKFN0ZGxpYi4oID0gKSA6IHQgLT4gdCAtPiBib29sKVxuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBGaW5pc2hlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJGaW5pc2hlZFwiXG4gICAgICB8IFVuZmluaXNoZWQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5maW5pc2hlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2IsICdjbXApIHRyZWVcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAnY21wIGNtcFxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGludmFyaWFudHMgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogKF8sIF8sIF8pIHQgLT4gaW50XG5cbiAgdmFsIGFkZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZHVwbGljYXRlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBhZGRfZXhuXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHNldFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBhZGRfbXVsdGlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHJlbW92ZV9tdWx0aVxuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZmluZF9tdWx0aSA6ICgnaywgJ2NtcCwgKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIGtleSAtPiAndiBsaXN0KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBjaGFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAnayBrZXlcbiAgICAgIC0+IGY6KCgndiBvcHRpb24gLT4gJ3Ygb3B0aW9uKVtAbG9jYWxdKVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHVwZGF0ZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+IGY6KCgndiBvcHRpb24gLT4gJ3YpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZmluZCA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gJ3Ygb3B0aW9uKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgZmluZF9leG4gOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICd2KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgcmVtb3ZlIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAoJ2ssICd2LCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgbWVtIDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gJ2sga2V5IC0+IGJvb2wpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2ssIF8sIF8pIHQgLT4gZjooKCdrIGtleSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICd2LCBfKSB0IC0+IGY6KCgndiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gIHZhbCBpdGVyMlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVtAbG9jYWxdKVxuICAgICAgLT4gdW5pdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIG1hcCA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCgndjEgLT4gJ3YyKVtAbG9jYWxdKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gIHZhbCBtYXBpXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAndjIpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICB2YWwgZm9sZFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjpcbiAgICAgICAgICgoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gKCdhY2MsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAgICAgICBbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgdmFsIGZvbGQyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBpbml0OidhY2NcbiAgICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgICAgLT4gJ2FjYyApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigoJ2sga2V5IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgdmFsIGZpbHRlciA6ICgnaywgJ3YsICdjbXApIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgZmlsdGVyaVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoJ3YxIC0+ICd2MiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoJ3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgY29tYmluZV9lcnJvcnNcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2IE9yX2Vycm9yLnQsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgY29tcGFyZV9kaXJlY3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ3YgLT4gJ3YgLT4gaW50KSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gaW50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZXF1YWxcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGJvb2wgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBrZXlzIDogKCdrLCBfLCBfKSB0IC0+ICdrIGtleSBsaXN0XG4gIHZhbCBkYXRhIDogKF8sICd2LCBfKSB0IC0+ICd2IGxpc3RcblxuICB2YWwgdG9fYWxpc3RcbiAgICA6ICA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gKCdrLCAndiwgXykgdFxuICAgIC0+ICgnayBrZXkgKiAndikgbGlzdFxuXG4gIHZhbCBtZXJnZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgLT4gZjooKGtleTonayBrZXkgLT4gKCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ3YzIG9wdGlvbilbQGxvY2FsXSlcbiAgICAgIC0+ICgnaywgJ3YzLCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgbWVyZ2Vfc2tld2VkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gY29tYmluZTooKGtleTonayBrZXkgLT4gJ3YgLT4gJ3YgLT4gJ3YpW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgICAgLT4gKCdrIGtleSwgJ3YpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGRhdGFfZXF1YWw6KCgndiAtPiAndiAtPiBib29sKVtAbG9jYWxdKVxuICAgICAgLT4gaW5pdDonYWNjXG4gICAgICAtPiBmOigoJ2FjYyAtPiAoJ2sga2V5LCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgICAtPiAnYWNjIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgbWluX2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayBrZXkgKiAndlxuICB2YWwgbWF4X2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayBrZXkgKiAndlxuICB2YWwgZm9yX2FsbCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICB2YWwgc3BsaXRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAnayBrZXlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2sga2V5ICogJ3YpIG9wdGlvbiAqICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzcGxpdF9sZV9ndFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc3BsaXRfbHRfZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGFwcGVuZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGxvd2VyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gdXBwZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXSApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gbG93ZXJfYm91bmQ6J2sga2V5IE1heWJlX2JvdW5kLnRcbiAgICAgIC0+IHVwcGVyX2JvdW5kOidrIGtleSBNYXliZV9ib3VuZC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBtaW46J2sga2V5XG4gICAgICAtPiBtYXg6J2sga2V5XG4gICAgICAtPiBpbml0OidhY2NcbiAgICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgICAgLT4gJ2FjYyApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHJhbmdlX3RvX2FsaXN0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBtaW46J2sga2V5IC0+IG1heDonayBrZXkgLT4gKCdrIGtleSAqICd2KSBsaXN0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgICAtPiAnayBrZXlcbiAgICAgIC0+ICgnayBrZXkgKiAndikgb3B0aW9uIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgbnRoIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG50aF9leG4gOiAoJ2ssICd2LCAnY21wKSB0IC0+IGludCAtPiAnayBrZXkgKiAndlxuICB2YWwgcmFuayA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0IC0+ICdrIGtleSAtPiBpbnQgb3B0aW9uKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrIGtleSwgJ3YsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzonayBrZXlcbiAgICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2sga2V5XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gY29tcGFyZTooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClbQGxvY2FsXSlcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgICAgLT4gJ2tleVxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IHNlZ21lbnRfb2Y6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVtAbG9jYWxdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gY29tcGFyZTooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICBtb2R1bGUgTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBIDogQXBwbGljYXRpdmUuTGF6eV9hcHBsaWNhdGl2ZSkgOiBzaWdcbiAgICB2YWwgbWFwaVxuICAgICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gJ3YyIEEudClcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0IEEudFxuXG4gICAgdmFsIGZpbHRlcl9tYXBpXG4gICAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAndjIgb3B0aW9uIEEudClcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0IEEudFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdrLCAndiwgJ2NtcCkgdFxuICB0eXBlICgnaywgJ3YsICdjbXApIHRyZWVcbiAgdHlwZSAnayBrZXlcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBjcmVhdGVfb3B0aW9uc1xuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGFjY2Vzc19vcHRpb25zXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgZW1wdHkgOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIHNpbmdsZXRvbiA6ICgnaywgJ2NtcCwgJ2sga2V5IC0+ICd2IC0+ICgnaywgJ3YsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAoICdrMlxuICAgICAgLCAnY21wMlxuICAgICAgLCAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAgIC0+IGY6KCgnazEga2V5IC0+ICdrMiBrZXkpW0Bsb2NhbF0pXG4gICAgICAtPiBbIGBPayBvZiAoJ2syLCAndiwgJ2NtcDIpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnazIga2V5IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBtYXBfa2V5c19leG5cbiAgICA6ICggJ2syXG4gICAgICAsICdjbXAyXG4gICAgICAsICgnazEsICd2LCAnY21wMSkgdCAtPiBmOigoJ2sxIGtleSAtPiAnazIga2V5KVtAbG9jYWxdKSAtPiAoJ2syLCAndiwgJ2NtcDIpIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCB0cmFuc3Bvc2Vfa2V5c1xuICAgIDogKCAnazFcbiAgICAgICwgJ2NtcDFcbiAgICAgICwgKCAnazJcbiAgICAgICAgLCAnY21wMlxuICAgICAgICAsICgnazEsICgnazIsICdhLCAnY21wMikgdCwgJ2NtcDEpIHQgLT4gKCdrMiwgKCdrMSwgJ2EsICdjbXAxKSB0LCAnY21wMikgdCApXG4gICAgICAgICAgY3JlYXRlX29wdGlvbnMgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBhcnJheSAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBhcnJheSAtPiAoJ2ssICd2LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGxlbjppbnQgLT4gZjooKGludCAtPiAnayBrZXkgKiAndilbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2KSBsaXN0IC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBrZXkgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X2V4biA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X2ZvbGRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YxKSBsaXN0XG4gICAgICAtPiBpbml0Oid2MlxuICAgICAgLT4gZjooKCd2MiAtPiAndjEgLT4gJ3YyKVtAbG9jYWxdKVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gZjooKCd2IC0+ICd2IC0+ICd2KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF1cbiAgICAgIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2Vfb3JfZXJyb3JcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfZXhuXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2MSkgU2VxdWVuY2UudFxuICAgICAgLT4gaW5pdDondjJcbiAgICAgIC0+IGY6KCgndjIgLT4gJ3YxIC0+ICd2MilbQGxvY2FsXSlcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfcmVkdWNlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+IGY6KCgndiAtPiAndiAtPiAndilbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2xpc3Rfd2l0aF9rZXlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAndiBsaXN0XG4gICAgICAtPiBnZXRfa2V5OigoJ3YgLT4gJ2sga2V5KVtAbG9jYWxdKVxuICAgICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvclxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICd2IGxpc3QgLT4gZ2V0X2tleTooKCd2IC0+ICdrIGtleSlbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9leG5cbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAndiBsaXN0IC0+IGdldF9rZXk6KCgndiAtPiAnayBrZXkpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5X211bHRpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ3YgbGlzdCAtPiBnZXRfa2V5OigoJ3YgLT4gJ2sga2V5KVtAbG9jYWxdKSAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGl0ZXJpOigoZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0KVtAbG9jYWxdKVxuICAgICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfaXRlcmlfZXhuXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgaXRlcmk6KChmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfdHJlZSA6ICgnaywgJ2NtcCwgKCdrIGtleSwgJ3YsICdjbXApIHRyZWUgLT4gKCdrLCAndiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0cmVlXG4gIHR5cGUgJ2Ega2V5XG4gIHR5cGUgJ2EgY21wXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcG9seSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2sga2V5IDo9ICdrXG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG4gIHZhbCBzZXhwX29mX21fX3RcbiAgICA6ICAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICgndiAtPiBTZXhwLnQpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKFNleHAudCAtPiAndilcbiAgICAtPiBTZXhwLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgOiAgKG1vZHVsZSBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIHZhbCBjb21wYXJlX21fX3RcbiAgICA6ICAobW9kdWxlIENvbXBhcmVfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gaW50KVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gaW50XG5cbiAgdmFsIGVxdWFsX21fX3RcbiAgICA6ICAobW9kdWxlIEVxdWFsX20pXG4gICAgLT4gKCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBib29sXG5cbiAgdmFsIGhhc2hfZm9sZF9tX190XG4gICAgOiAgKG1vZHVsZSBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+IChIYXNoLnN0YXRlIC0+ICd2IC0+IEhhc2guc3RhdGUpXG4gICAgLT4gSGFzaC5zdGF0ZVxuICAgIC0+ICgnaywgJ3YsIF8pIHRcbiAgICAtPiBIYXNoLnN0YXRlXG5lbmRcblxubW9kdWxlIHR5cGUgTWFwID0gc2lnXG4gICgqKiBbTWFwXSBpcyBhIGZ1bmN0aW9uYWwgZGF0YSBzdHJ1Y3R1cmUgKGJhbGFuY2VkIGJpbmFyeSB0cmVlKSBpbXBsZW1lbnRpbmcgZmluaXRlIG1hcHNcbiAgICAgIG92ZXIgYSB0b3RhbGx5LW9yZGVyZWQgZG9tYWluLCBjYWxsZWQgYSBcImtleVwiLiAqKVxuXG4gIHR5cGUgKCEna2V5LCArISd2YWx1ZSwgISdjbXApIHRcblxuICBtb2R1bGUgT3JfZHVwbGljYXRlID0gT3JfZHVwbGljYXRlXG4gIG1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQ29udGludWVfb3Jfc3RvcFxuXG4gIG1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkIDogc2lnXG4gICAgdHlwZSB0ID0gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50ID1cbiAgICAgIHwgRmluaXNoZWRcbiAgICAgIHwgVW5maW5pc2hlZFxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9lbnVtZXJhdGVfbGliLkVudW1lcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuRXF1YWwuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICAoKiogTWFwcyBbQ29udGludWVdIHRvIFtGaW5pc2hlZF0gYW5kIFtTdG9wXSB0byBbVW5maW5pc2hlZF0uICopXG4gICAgdmFsIG9mX2NvbnRpbnVlX29yX3N0b3AgOiBDb250aW51ZV9vcl9zdG9wLnQgLT4gdFxuXG4gICAgKCoqIE1hcHMgW0ZpbmlzaGVkXSB0byBbQ29udGludWVdIGFuZCBbVW5maW5pc2hlZF0gdG8gW1N0b3BdLiAqKVxuICAgIHZhbCB0b19jb250aW51ZV9vcl9zdG9wIDogdCAtPiBDb250aW51ZV9vcl9zdG9wLnRcbiAgZW5kXG5cbiAgbW9kdWxlIE1lcmdlX2VsZW1lbnQgOiBzaWdcbiAgICB0eXBlICgnbGVmdCwgJ3JpZ2h0KSB0ID1cbiAgICAgIFsgYExlZnQgb2YgJ2xlZnRcbiAgICAgIHwgYFJpZ2h0IG9mICdyaWdodFxuICAgICAgfCBgQm90aCBvZiAnbGVmdCAqICdyaWdodFxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICAgIHZhbCBjb21wYXJlXG4gICAgICA6ICAoJ2xlZnQgLT4gJ2xlZnQgLT4gaW50KVxuICAgICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gaW50KVxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBpbnRcblxuICAgIHZhbCBlcXVhbFxuICAgICAgOiAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGJvb2wpXG4gICAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBib29sKVxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBib29sXG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2xlZnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdyaWdodCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIGxlZnQgOiAoJ2xlZnQsIF8pIHQgLT4gJ2xlZnQgb3B0aW9uXG4gICAgdmFsIHJpZ2h0IDogKF8sICdyaWdodCkgdCAtPiAncmlnaHQgb3B0aW9uXG4gICAgdmFsIGxlZnRfdmFsdWUgOiAoJ2xlZnQsIF8pIHQgLT4gZGVmYXVsdDonbGVmdCAtPiAnbGVmdFxuICAgIHZhbCByaWdodF92YWx1ZSA6IChfLCAncmlnaHQpIHQgLT4gZGVmYXVsdDoncmlnaHQgLT4gJ3JpZ2h0XG5cbiAgICB2YWwgdmFsdWVzXG4gICAgICA6ICAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gbGVmdF9kZWZhdWx0OidsZWZ0XG4gICAgICAtPiByaWdodF9kZWZhdWx0OidyaWdodFxuICAgICAgLT4gJ2xlZnQgKiAncmlnaHRcbiAgZW5kXG5cbiAgdHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPSAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTEyXSB1c2UgW0NvbXBhcmF0b3IuTW9kdWxlLnRdIGluc3RlYWRcIl1cblxuICAoKiogVGVzdCBpZiB0aGUgaW52YXJpYW50cyBvZiB0aGUgaW50ZXJuYWwgQVZMIHNlYXJjaCB0cmVlIGhvbGQuICopXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIGEgZmlyc3QtY2xhc3MgbW9kdWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgb3RoZXIgbWFwL3NldC9ldGMuXG4gICAgICB3aXRoIHRoZSBzYW1lIG5vdGlvbiBvZiBjb21wYXJpc29uLiAqKVxuICB2YWwgY29tcGFyYXRvcl9zIDogKCdhLCBfLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCBfLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG5cbiAgKCoqIFRoZSBlbXB0eSBtYXAuICopXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIEEgbWFwIHdpdGggb25lIChrZXksIGRhdGEpIHBhaXIuICopXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgLT4gJ2IgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHVuaXF1ZSBrZXlzLiAqKVxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMsIHJldHVybmluZyBhbiBlcnJvciBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuICopXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMsIHJhaXNpbmcgYW4gZXhjZXB0aW9uIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2FsaXN0X2V4biA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EgKiAnYikgbGlzdCAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggcG9zc2libHkgcmVwZWF0ZWQga2V5cy4gVGhlIHZhbHVlcyBpblxuICAgICAgdGhlIG1hcCBmb3IgYSBnaXZlbiBrZXkgYXBwZWFyIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZXkgZGlkIGluIHRoZSBhc3NvY2lhdGlvblxuICAgICAgbGlzdC4gKilcbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gbGlzdCBpbnRvIGEgbWFwLCBmb2xkaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy4gVGhlIGFjY3VtdWxhdG9yIGlzIHBlci1rZXkuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgICMgbGV0IG1hcCA9IFN0cmluZy5NYXAub2ZfYWxpc3RfZm9sZFxuICAgICAgICAgICAgICAgICAgICAgIFsgXCJhXCIsIDE7IFwiYVwiLCAxMDsgXCJiXCIsIDI7IFwiYlwiLCAyMDsgXCJiXCIsIDIwMCBdXG4gICAgICAgICAgICAgICAgICAgICAgfmluaXQ6SW50LlNldC5lbXB0eVxuICAgICAgICAgICAgICAgICAgICAgIH5mOlNldC5hZGRcbiAgICAgICAgICBpblxuICAgICAgICAgIHByaW50X3MgWyVzZXhwIChtYXAgOiBJbnQuU2V0LnQgU3RyaW5nLk1hcC50KV07O1xuICAgICAgICAoKGEgKDEgMTApKSAoYiAoMiAyMCAyMDApKSlcbiAgICAgICAgLSA6IHVuaXQgPSAoKVxuICAgICAgXX1cbiAgKilcbiAgdmFsIG9mX2FsaXN0X2ZvbGRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOigoJ2MgLT4gJ2IgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBsaXN0IGludG8gYSBtYXAsIHJlZHVjaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy4gKilcbiAgdmFsIG9mX2FsaXN0X3JlZHVjZVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gZjooKCdiIC0+ICdiIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogW29mX2l0ZXJpIH5pdGVyaV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF0sIGV4Y2VwdCB0aGF0IGluc3RlYWQgb2YgdGFraW5nIGEgY29uY3JldGVcbiAgICAgIGRhdGEgc3RydWN0dXJlLCBpdCB0YWtlcyBhbiBpdGVyYXRpb24gZnVuY3Rpb24uICBGb3IgaW5zdGFuY2UsIHRvIGNvbnZlcnQgYSBzdHJpbmcgdGFibGVcbiAgICAgIGludG8gYSBtYXA6IFtvZl9pdGVyaSAobW9kdWxlIFN0cmluZykgfmY6KEhhc2h0YmwuaXRlcmkgdGFibGUpXS4gIEl0IGlzIGZhc3RlciB0aGFuXG4gICAgICBhZGRpbmcgdGhlIGVsZW1lbnRzIG9uZSBieSBvbmUuICopXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGl0ZXJpOigoZjooKGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogTGlrZSBbb2ZfaXRlcmldIGV4Y2VwdCB0aGF0IGl0IHJhaXNlcyBhbiBleGNlcHRpb24gaWYgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuICopXG4gIHZhbCBvZl9pdGVyaV9leG5cbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpdGVyaTooKGY6KChrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0KVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGEgc29ydGVkIGFycmF5IG9mIGtleS1kYXRhIHBhaXJzLiBUaGUgaW5wdXQgYXJyYXkgbXVzdCBiZSBzb3J0ZWRcbiAgICAgIChlaXRoZXIgaW4gYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgb3JkZXIpLCBhcyBnaXZlbiBieSB0aGUgcmVsZXZhbnQgY29tcGFyYXRvciwgYW5kXG4gICAgICBtdXN0IG5vdCBjb250YWluIGR1cGxpY2F0ZSBrZXlzLiBJZiBlaXRoZXIgb2YgdGhlc2UgY29uZGl0aW9ucyBkb2VzIG5vdCBob2xkLFxuICAgICAgYW4gZXJyb3IgaXMgcmV0dXJuZWQuICAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGFycmF5XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIExpa2UgW29mX3NvcnRlZF9hcnJheV0gZXhjZXB0IHRoYXQgaXQgcmV0dXJucyBhIG1hcCB3aXRoIGJyb2tlbiBpbnZhcmlhbnRzIHdoZW4gYW5cbiAgICAgIFtFcnJvcl0gd291bGQgaGF2ZSBiZWVuIHJldHVybmVkLiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBhcnJheVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogW29mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIGMgfmxlbiB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGNcbiAgICAgIChBcnJheS5pbml0IGxlbiB+ZildLCB3aXRoIHRoZSBhZGRpdGlvbmFsIHJlc3RyaWN0aW9uIHRoYXQgYSBkZWNyZWFzaW5nIG9yZGVyIGlzIG5vdFxuICAgICAgc3VwcG9ydGVkLiAgVGhlIGFkdmFudGFnZSBpcyBub3QgcmVxdWlyaW5nIHlvdSB0byBhbGxvY2F0ZSBhbiBpbnRlcm1lZGlhdGUgYXJyYXkuICBbZl1cbiAgICAgIHdpbGwgYmUgY2FsbGVkIHdpdGggMCwgMSwgLi4uIFtsZW4gLSAxXSwgaW4gb3JkZXIuICopXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOigoaW50IC0+ICdhICogJ2IpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXkgYyAoU2VxdWVuY2UudG9fYXJyYXlcbiAgICAgIHNlcSldLCBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBhcnJheS5cblxuICAgICAgVGhlIHNlcXVlbmNlIHdpbGwgYmUgZm9sZGVkIG92ZXIgb25jZSwgYW5kIHRoZSBhZGRpdGlvbmFsIHRpbWUgY29tcGxleGl0eSBpcyB7ZSBPKG4pfS5cbiAgKilcbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2VcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCB1bmlxdWUga2V5cy5cblxuICAgICAgW29mX3NlcXVlbmNlIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0IGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG5cbiAgICAgIElmIHlvdXIgc2VxdWVuY2UgaXMgaW5jcmVhc2luZywgdXNlIFtvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXS5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrICogJ3YpIFNlcXVlbmNlLnRcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sgXVxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCB1bmlxdWUga2V5cywgcmV0dXJuaW5nIGFuIGVycm9yIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC5cblxuICAgICAgW29mX3NlcXVlbmNlX29yX2Vycm9yIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X29yX2Vycm9yIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV1cbiAgICAgIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvclxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLCByYWlzaW5nIGFuIGV4Y2VwdGlvbiBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9leG4gYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZXhuIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9leG5cbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggcG9zc2libHkgcmVwZWF0ZWQga2V5cy4gVGhlIHZhbHVlcyBpblxuICAgICAgdGhlIG1hcCBmb3IgYSBnaXZlbiBrZXkgYXBwZWFyIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZXkgZGlkIGluIHRoZSBhc3NvY2lhdGlvblxuICAgICAgbGlzdC5cblxuICAgICAgW29mX3NlcXVlbmNlX211bHRpIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X2V4biBjIChTZXF1ZW5jZS50b19saXN0IHNlcSldIGJ1dFxuICAgICAgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSBpbnRvIGEgbWFwLCBmb2xkaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy5cblxuICAgICAgW29mX3NlcXVlbmNlX2ZvbGQgYyBzZXEgfmluaXQgfmZdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZm9sZCBjIChTZXF1ZW5jZS50b19saXN0IHNlcSkgfmluaXQgfmZdXG4gICAgICBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfZm9sZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCgnYyAtPiAnYiAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIGludG8gYSBtYXAsIHJlZHVjaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy5cblxuICAgICAgW29mX3NlcXVlbmNlX3JlZHVjZSBjIHNlcSB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9yZWR1Y2UgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpIH5mXVxuICAgICAgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2VcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IGY6KCgnYiAtPiAnYiAtPiAnYilbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENvbnN0cnVjdHMgYSBtYXAgZnJvbSBhIGxpc3Qgb2YgdmFsdWVzLCB3aGVyZSBbZ2V0X2tleV0gZXh0cmFjdHMgYSBrZXkgZnJvbSBhIHZhbHVlLlxuICAqKVxuICB2YWwgb2ZfbGlzdF93aXRoX2tleVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICd2IGxpc3RcbiAgICAtPiBnZXRfa2V5OigoJ3YgLT4gJ2spW0Bsb2NhbF0pXG4gICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIF1cblxuICAoKiogTGlrZSBbb2ZfbGlzdF93aXRoX2tleV07IHJldHVybnMgW0Vycm9yXSBvbiBkdXBsaWNhdGUga2V5LiAqKVxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvclxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICd2IGxpc3RcbiAgICAtPiBnZXRfa2V5OigoJ3YgLT4gJ2spW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIExpa2UgW29mX2xpc3Rfd2l0aF9rZXldOyByYWlzZXMgb24gZHVwbGljYXRlIGtleS4gKilcbiAgdmFsIG9mX2xpc3Rfd2l0aF9rZXlfZXhuXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3YgbGlzdFxuICAgIC0+IGdldF9rZXk6KCgndiAtPiAnaylbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIExpa2UgW29mX2xpc3Rfd2l0aF9rZXldOyBwcm9kdWNlcyBsaXN0cyBvZiBhbGwgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGtleS4gKilcbiAgdmFsIG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGlcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAndiBsaXN0XG4gICAgLT4gZ2V0X2tleTooKCd2IC0+ICdrKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBUZXN0cyB3aGV0aGVyIGEgbWFwIGlzIGVtcHR5LiAqKVxuICB2YWwgaXNfZW1wdHkgOiAoXywgXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFtsZW5ndGggbWFwXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gW21hcF0uICBPKDEpLCBidXQgW1RyZWUubGVuZ3RoXSBpc1xuICAgICAgTyhuKS4gKilcbiAgdmFsIGxlbmd0aCA6IChfLCBfLCBfKSB0IC0+IGludFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIHRoZSBzcGVjaWZpZWQgbmV3IGJpbmRpbmc7IGlmIHRoZSBrZXkgd2FzIGFscmVhZHkgYm91bmQsIGl0c1xuICAgICAgcHJldmlvdXMgYmluZGluZyBkaXNhcHBlYXJzLiAqKVxuICB2YWwgc2V0IDogKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFthZGQgdCB+a2V5IH5kYXRhXSBhZGRzIGEgbmV3IGVudHJ5IHRvIFt0XSBtYXBwaW5nIFtrZXldIHRvIFtkYXRhXSBhbmQgcmV0dXJucyBbYE9rXVxuICAgICAgd2l0aCB0aGUgbmV3IG1hcCwgb3IgaWYgW2tleV0gaXMgYWxyZWFkeSBwcmVzZW50IGluIFt0XSwgcmV0dXJucyBbYER1cGxpY2F0ZV0uICopXG4gIHZhbCBhZGQgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZHVwbGljYXRlLnRcblxuICB2YWwgYWRkX2V4biA6ICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBJZiBba2V5XSBpcyBub3QgcHJlc2VudCB0aGVuIGFkZCBhIHNpbmdsZXRvbiBsaXN0LCBvdGhlcndpc2UsIGNvbnMgZGF0YSBvbnRvIHRoZVxuICAgICAgaGVhZCBvZiB0aGUgZXhpc3RpbmcgbGlzdC4gKilcbiAgdmFsIGFkZF9tdWx0aSA6ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHRcblxuICAoKiogSWYgdGhlIGtleSBpcyBwcmVzZW50LCB0aGVuIHJlbW92ZSBpdHMgaGVhZCBlbGVtZW50OyBpZiB0aGUgcmVzdWx0IGlzIGVtcHR5LCByZW1vdmVcbiAgICAgIHRoZSBrZXkuICopXG4gIHZhbCByZW1vdmVfbXVsdGkgOiAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIFJldHVybnMgdGhlIHZhbHVlIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIG9yIHRoZSBlbXB0eSBsaXN0IGlmIHRoZXJlIGlzIG5vbmUuICopXG4gIHZhbCBmaW5kX211bHRpIDogKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIC0+ICd2IGxpc3RcblxuICAoKiogW2NoYW5nZSB0IGtleSB+Zl0gcmV0dXJucyBhIG5ldyBtYXAgW21dIHRoYXQgaXMgdGhlIHNhbWUgYXMgW3RdIG9uIGFsbCBrZXlzIGV4Y2VwdFxuICAgICAgZm9yIFtrZXldLCBhbmQgd2hvc2UgdmFsdWUgZm9yIFtrZXldIGlzIGRlZmluZWQgYnkgW2ZdLCBpLmUuLCBbZmluZCBtIGtleSA9IGYgKGZpbmRcbiAgICAgIHQga2V5KV0uICopXG4gIHZhbCBjaGFuZ2VcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gJ2tcbiAgICAtPiBmOigoJ3Ygb3B0aW9uIC0+ICd2IG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFt1cGRhdGUgdCBrZXkgfmZdIGlzIFtjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvIC0+IFNvbWUgKGYgbykpXS4gKilcbiAgdmFsIHVwZGF0ZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gZjooKCd2IG9wdGlvbiAtPiAndilbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG5cbiAgKCoqIFJldHVybnMgW1NvbWUgdmFsdWVdIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIG9yIFtOb25lXSBpZiBub25lIGV4aXN0cy4gKilcbiAgdmFsIGZpbmQgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICd2IG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSB2YWx1ZSBib3VuZCB0byB0aGUgZ2l2ZW4ga2V5LCByYWlzaW5nIFtTdGRsaWIuTm90X2ZvdW5kXSBvciBbTm90X2ZvdW5kX3NdXG4gICAgICBpZiBub25lIGV4aXN0cy4gKilcbiAgdmFsIGZpbmRfZXhuIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAndlxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGFueSBiaW5kaW5nIGZvciB0aGUga2V5IGluIHF1ZXN0aW9uIHJlbW92ZWQuICopXG4gIHZhbCByZW1vdmUgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW21lbSBtYXAga2V5XSB0ZXN0cyB3aGV0aGVyIFttYXBdIGNvbnRhaW5zIGEgYmluZGluZyBmb3IgW2tleV0uICopXG4gIHZhbCBtZW0gOiAoJ2ssIF8sICdjbXApIHQgLT4gJ2sgLT4gYm9vbFxuXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2ssIF8sIF8pIHQgLT4gZjooKCdrIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBJdGVyYXRlcyB1bnRpbCB0aGUgZmlyc3QgdGltZSBbZl0gcmV0dXJucyBbU3RvcF0uIElmIFtmXSByZXR1cm5zIFtTdG9wXSwgdGhlIGZpbmFsXG4gICAgICByZXN1bHQgaXMgW1VuZmluaXNoZWRdLiBPdGhlcndpc2UsIHRoZSBmaW5hbCByZXN1bHQgaXMgW0ZpbmlzaGVkXS4gKilcbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgKCoqIEl0ZXJhdGVzIHR3byBtYXBzIHNpZGUgYnkgc2lkZS4gVGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBmdW5jdGlvbiBpcyBPKE0gKyBOKS4gIElmIHR3b1xuICAgICAgaW5wdXRzIGFyZSBbWygwLCBhKTsgKDEsIGEpXV0gYW5kIFtbKDEsIGIpOyAoMiwgYildXSwgW2ZdIHdpbGwgYmUgY2FsbGVkIHdpdGggW1soMCxcbiAgICAgIGBMZWZ0IGEpOyAoMSwgYEJvdGggKGEsIGIpKTsgKDIsIGBSaWdodCBiKV1dLiAqKVxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgLT4gdW5pdFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGJvdW5kIHZhbHVlcyByZXBsYWNlZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmQgdmFsdWVzLiopXG4gIHZhbCBtYXAgOiAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOigoJ3YxIC0+ICd2MilbQGxvY2FsXSkgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogTGlrZSBbbWFwXSwgYnV0IHRoZSBwYXNzZWQgZnVuY3Rpb24gdGFrZXMgYm90aCBba2V5XSBhbmQgW2RhdGFdIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIG1hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIENvbnZlcnQgbWFwIHdpdGgga2V5cyBvZiB0eXBlIFsnazJdIHRvIGEgbWFwIHdpdGgga2V5cyBvZiB0eXBlIFsnazJdIHVzaW5nIFtmXS4gKilcbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAgKCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOigoJ2sxIC0+ICdrMilbQGxvY2FsXSlcbiAgICAtPiBbIGBPayBvZiAoJ2syLCAndiwgJ2NtcDIpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnazIgXVxuXG4gICgqKiBMaWtlIFttYXBfa2V5c10sIGJ1dCByYWlzZXMgb24gZHVwbGljYXRlIGtleS4gKilcbiAgdmFsIG1hcF9rZXlzX2V4blxuICAgIDogICgnazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgLT4gZjooKCdrMSAtPiAnazIpW0Bsb2NhbF0pXG4gICAgLT4gKCdrMiwgJ3YsICdjbXAyKSB0XG5cbiAgKCoqIEZvbGRzIG92ZXIga2V5cyBhbmQgZGF0YSBpbiB0aGUgbWFwIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgW2tleV0uICopXG4gIHZhbCBmb2xkXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gICgqKiBGb2xkcyBvdmVyIGtleXMgYW5kIGRhdGEgaW4gdGhlIG1hcCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIFtrZXldLCB1bnRpbCB0aGUgZmlyc3RcbiAgICAgIHRpbWUgdGhhdCBbZl0gcmV0dXJucyBbU3RvcCBfXS4gSWYgW2ZdIHJldHVybnMgW1N0b3AgZmluYWxdLCB0aGlzIGZ1bmN0aW9uIHJldHVybnNcbiAgICAgIGltbWVkaWF0ZWx5IHdpdGggdGhlIHZhbHVlIFtmaW5hbF0uIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCBhbmQgdGhlIGZpbmFsXG4gICAgICBjYWxsIHRvIFtmXSByZXR1cm5zIFtDb250aW51ZSBsYXN0XSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIFtmaW5pc2ggbGFzdF0uICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6XG4gICAgICAgICAoKGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gKCdhY2MsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAgICAgICBbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICAoKiogRm9sZHMgb3ZlciBrZXlzIGFuZCBkYXRhIGluIHRoZSBtYXAgaW4gZGVjcmVhc2luZyBvcmRlciBvZiBba2V5XS4gKilcbiAgdmFsIGZvbGRfcmlnaHRcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgKCoqIEZvbGRzIG92ZXIgdHdvIG1hcHMgc2lkZSBieSBzaWRlLCBsaWtlIFtpdGVyMl0uICopXG4gIHZhbCBmb2xkMlxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICAoKiogW2ZpbHRlcl0sIFtmaWx0ZXJpXSwgW2ZpbHRlcl9rZXlzXSwgW2ZpbHRlcl9tYXBdLCBhbmQgW2ZpbHRlcl9tYXBpXSBydW4gaW4gTyhuKVxuICAgICAgdGltZS5cblxuICAgICAgW2ZpbHRlcl0sIFtmaWx0ZXJpXSwgW2ZpbHRlcl9rZXlzXSwgW3BhcnRpdGlvbl90Zl0gYW5kIFtwYXJ0aXRpb25pX3RmXSBrZWVwIGEgbG90XG4gICAgICBvZiBzaGFyaW5nIGJldHdlZW4gdGhlaXIgcmVzdWx0IGFuZCB0aGUgb3JpZ2luYWwgbWFwLiAgRHJvcHBpbmcgb3Iga2VlcGluZyBhIHJ1biBvZlxuICAgICAgW2tdIGNvbnNlY3V0aXZlIGVsZW1lbnRzIGNvc3RzIFtPKGxvZyhrKSldIGV4dHJhIG1lbW9yeS4gS2VlcGluZyB0aGUgZW50aXJlIG1hcFxuICAgICAgY29zdHMgbm8gZXh0cmEgbWVtb3J5IGF0IGFsbDogW2ZpbHRlciB+ZjooZnVuIF8gLT4gdHJ1ZSldIHJldHVybnMgdGhlIG9yaWdpbmFsIG1hcC5cbiAgKilcbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigoJ2sgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXIgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcmlcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGJvdW5kIHZhbHVlcyBmaWx0ZXJlZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmQgdmFsdWVzLiAqKVxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKCd2MSAtPiAndjIgb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIExpa2UgW2ZpbHRlcl9tYXBdLCBidXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0YWtlcyBib3RoIFtrZXldIGFuZCBbZGF0YV0gYXNcbiAgICAgIGFyZ3VtZW50cy4gKilcbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXBpIHQgfmZdIHJldHVybnMgdHdvIG5ldyBbdF1zLCB3aXRoIGVhY2gga2V5IGluIFt0XSBhcHBlYXJpbmcgaW5cbiAgICAgIGV4YWN0bHkgb25lIG9mIHRoZSByZXN1bHRpbmcgbWFwcyBkZXBlbmRpbmcgb24gaXRzIG1hcHBpbmcgaW4gW2ZdLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSldICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoJ3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gICgqKlxuICAgICB7W1xuICAgICAgIHBhcnRpdGlvbmlfdGYgdCB+ZlxuICAgICAgID1cbiAgICAgICBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgaWYgZiB+a2V5IH5kYXRhXG4gICAgICAgICB0aGVuIEZpcnN0IGRhdGFcbiAgICAgICAgIGVsc2UgU2Vjb25kIGRhdGEpXG4gICAgIF19ICopXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXSAqKVxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFByb2R1Y2VzIFtPa10gb2YgYSBtYXAgaW5jbHVkaW5nIGFsbCBrZXlzIGlmIGFsbCBkYXRhIGlzIFtPa10sIG9yIGFuIFtFcnJvcl1cbiAgICAgIGluY2x1ZGluZyBhbGwgZXJyb3JzIG90aGVyd2lzZS4gKilcbiAgdmFsIGNvbWJpbmVfZXJyb3JzIDogKCdrLCAndiBPcl9lcnJvci50LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBSZXR1cm5zIGEgdG90YWwgb3JkZXJpbmcgYmV0d2VlbiBtYXBzLiBUaGUgZmlyc3QgYXJndW1lbnQgaXMgYSB0b3RhbCBvcmRlcmluZyB1c2VkXG4gICAgICB0byBjb21wYXJlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGVxdWFsIGtleXMgaW4gdGhlIHR3byBtYXBzLiAqKVxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ3YgLT4gJ3YgLT4gaW50KSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gaW50XG5cbiAgKCoqIEhhc2ggZnVuY3Rpb246IGEgYnVpbGRpbmcgYmxvY2sgdG8gdXNlIHdoZW4gaGFzaGluZyBkYXRhIHN0cnVjdHVyZXMgY29udGFpbmluZyBtYXBzIGluXG4gICAgICB0aGVtLiBbaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggW2NvbXBhcmVfZGlyZWN0XSBpZmZcbiAgICAgIFtoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggWyhjb21wYXJhdG9yIG0pLmNvbXBhcmVdIG9mIHRoZSBtYXAgW21dIGJlaW5nXG4gICAgICBoYXNoZWQuICopXG4gIHZhbCBoYXNoX2ZvbGRfZGlyZWN0IDogJ2sgSGFzaC5mb2xkZXIgLT4gJ3YgSGFzaC5mb2xkZXIgLT4gKCdrLCAndiwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICgqKiBbZXF1YWwgY21wIG0xIG0yXSB0ZXN0cyB3aGV0aGVyIHRoZSBtYXBzIFttMV0gYW5kIFttMl0gYXJlIGVxdWFsLCB0aGF0IGlzLCBjb250YWluXG4gICAgICB0aGUgc2FtZSBrZXlzIGFuZCBhc3NvY2lhdGUgZWFjaCBrZXkgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gIFtjbXBdIGlzIHRoZSBlcXVhbGl0eVxuICAgICAgcHJlZGljYXRlIHVzZWQgdG8gY29tcGFyZSB0aGUgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5cy4gKilcbiAgdmFsIGVxdWFsIDogKCd2IC0+ICd2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgYSBsaXN0IG9mIHRoZSBrZXlzIGluIHRoZSBnaXZlbiBtYXAuICopXG4gIHZhbCBrZXlzIDogKCdrLCBfLCBfKSB0IC0+ICdrIGxpc3RcblxuICAoKiogUmV0dXJucyBhIGxpc3Qgb2YgdGhlIGRhdGEgaW4gdGhlIGdpdmVuIG1hcC4gKilcbiAgdmFsIGRhdGEgOiAoXywgJ3YsIF8pIHQgLT4gJ3YgbGlzdFxuXG4gICgqKiBDcmVhdGVzIGFuIGFzc29jaWF0aW9uIGxpc3QgZnJvbSB0aGUgZ2l2ZW4gbWFwLiAqKVxuICB2YWwgdG9fYWxpc3RcbiAgICA6ICA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdICgqKiBkZWZhdWx0IGlzIFtgSW5jcmVhc2luZ10gKilcbiAgICAtPiAoJ2ssICd2LCBfKSB0XG4gICAgLT4gKCdrICogJ3YpIGxpc3RcblxuICAoKiogezIgQWRkaXRpb25hbCBvcGVyYXRpb25zIG9uIG1hcHN9ICopXG5cbiAgKCoqIE1lcmdlcyB0d28gbWFwcy4gVGhlIHJ1bnRpbWUgaXMgTyhsZW5ndGgodDEpICsgbGVuZ3RoKHQyKSkuIFlvdSBzaG91bGRuJ3QgdXNlIHRoaXNcbiAgICAgIGZ1bmN0aW9uIHRvIG1lcmdlIGEgbGlzdCBvZiBtYXBzOyBjb25zaWRlciB1c2luZyBbbWVyZ2Vfc2tld2VkXSBpbnN0ZWFkLiAqKVxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiAoJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgKCoqIEEgc3BlY2lhbCBjYXNlIG9mIFttZXJnZV0sIFttZXJnZV9za2V3ZWQgdDEgdDJdIGlzIGEgbWFwIGNvbnRhaW5pbmcgYWxsIHRoZVxuICAgICAgYmluZGluZ3Mgb2YgW3QxXSBhbmQgW3QyXS4gQmluZGluZ3MgdGhhdCBhcHBlYXIgaW4gYm90aCBbdDFdIGFuZCBbdDJdIGFyZVxuICAgICAgY29tYmluZWQgaW50byBhIHNpbmdsZSB2YWx1ZSB1c2luZyB0aGUgW2NvbWJpbmVdIGZ1bmN0aW9uLiBJbiBhIGNhbGxcbiAgICAgIFtjb21iaW5lIH5rZXkgdjEgdjJdLCB0aGUgdmFsdWUgW3YxXSBjb21lcyBmcm9tIFt0MV0gYW5kIFt2Ml0gZnJvbSBbdDJdLlxuXG4gICAgICBUaGUgcnVudGltZSBvZiBbbWVyZ2Vfc2tld2VkXSBpcyBbTyhtaW4obDEsIGwyKSAqIGxvZyhtYXgobDEsIGwyKSkpXSwgd2hlcmUgW2wxXSBpc1xuICAgICAgdGhlIGxlbmd0aCBvZiBbdDFdIGFuZCBbbDJdIHRoZSBsZW5ndGggb2YgW3QyXS4gVGhpcyBpcyBsaWtlbHkgdG8gYmUgZmFzdGVyIHRoYW5cbiAgICAgIFttZXJnZV0gd2hlbiBvbmUgb2YgdGhlIG1hcHMgaXMgYSBsb3Qgc21hbGxlciwgb3Igd2hlbiB5b3UgbWVyZ2UgYSBsaXN0IG9mIG1hcHMuICopXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbWJpbmU6KChrZXk6J2sgLT4gJ3YgLT4gJ3YgLT4gJ3YpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIG1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50IDogc2lnXG4gICAgdHlwZSAoJ2ssICd2KSB0ID0gJ2sgKiBbIGBMZWZ0IG9mICd2IHwgYFJpZ2h0IG9mICd2IHwgYFVuZXF1YWwgb2YgJ3YgKiAndiBdXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5FcXVhbC5TMiB3aXRoIHR5cGUgKCdrLCAndikgdCA6PSAoJ2ssICd2KSB0XG4gICAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdrLCAndikgdCA6PSAoJ2ssICd2KSB0XG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXJcbiAgICAgIDogICdrIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgLT4gKCdrLCAndikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgKCoqIFtzeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbF0gcmV0dXJucyBhIGxpc3Qgb2YgY2hhbmdlcyBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0uXG4gICAgICBJdCBpcyBpbnRlbmRlZCB0byBiZSBlZmZpY2llbnQgaW4gdGhlIGNhc2Ugd2hlcmUgW3QxXSBhbmQgW3QyXSBzaGFyZSBhIGxhcmdlIGFtb3VudFxuICAgICAgb2Ygc3RydWN0dXJlLiBUaGUga2V5cyBpbiB0aGUgb3V0cHV0IHNlcXVlbmNlIHdpbGwgYmUgaW4gc29ydGVkIG9yZGVyLlxuXG4gICAgICBJdCBpcyBhc3N1bWVkIHRoYXQgW2RhdGFfZXF1YWxdIGlzIGF0IGxlYXN0IGFzIGVxdWF0aW5nIGFzIHBoeXNpY2FsIGVxdWFsaXR5OiB0aGF0XG4gICAgICBbcGh5c19lcXVhbCB4IHldIGltcGxpZXMgW2RhdGFfZXF1YWwgeCB5XS4gT3RoZXJ3aXNlLCBbc3ltbWV0cmljX2RpZmZdIG1heSBiZWhhdmUgaW5cbiAgICAgIHVuZXhwZWN0ZWQgd2F5cy4gRm9yIGV4YW1wbGUsIHdpdGggW35kYXRhX2VxdWFsOihmdW4gXyBfIC0+IGZhbHNlKV0gaXQgaXMgTk9UXG4gICAgICBuZWNlc3NhcmlseSB0aGUgY2FzZSB0aGUgcmVzdWx0aW5nIGNoYW5nZSBzZXF1ZW5jZSB3aWxsIGNvbnRhaW4gYW4gZWxlbWVudFxuICAgICAgWyhrLCBgVW5lcXVhbCBfKV0gZm9yIGV2ZXJ5IGtleSBba10gc2hhcmVkIGJ5IGJvdGggbWFwcy5cblxuICAgICAgV2FybmluZzogRmxvYXQgZXF1YWxpdHkgdmlvbGF0ZXMgdGhpcyBwcm9wZXJ0eSEgW3BoeXNfZXF1YWwgRmxvYXQubmFuIEZsb2F0Lm5hbl0gaXNcbiAgICAgIHRydWUsIGJ1dCBbRmxvYXQuKD0pIEZsb2F0Lm5hbiBGbG9hdC5uYW5dIGlzIGZhbHNlLiAqKVxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICAoKiogW2ZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWxdIGZvbGRzIGFjcm9zcyBhbiBpbXBsaWNpdCBzZXF1ZW5jZSBvZiBjaGFuZ2VzXG4gICAgICBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0sIGluIHNvcnRlZCBvcmRlciBieSBrZXlzLiBFcXVpdmFsZW50IHRvXG4gICAgICBbU2VxdWVuY2UuZm9sZCAoc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWwpXSwgYW5kIG1vcmUgZWZmaWNpZW50LiAqKVxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooKCd2IC0+ICd2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gKCdrLCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gICgqKiBbbWluX2VsdCBtYXBdIHJldHVybnMgW1NvbWUgKGtleSwgZGF0YSldIHBhaXIgY29ycmVzcG9uZGluZyB0byB0aGUgbWluaW11bSBrZXkgaW5cbiAgICAgIFttYXBdLCBvciBbTm9uZV0gaWYgZW1wdHkuICopXG4gIHZhbCBtaW5fZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayAqICd2XG5cbiAgKCoqIFttYXhfZWx0IG1hcF0gcmV0dXJucyBbU29tZSAoa2V5LCBkYXRhKV0gcGFpciBjb3JyZXNwb25kaW5nIHRvIHRoZSBtYXhpbXVtIGtleSBpblxuICAgICAgW21hcF0sIG9yIFtOb25lXSBpZiBbbWFwXSBpcyBlbXB0eS4gKilcbiAgdmFsIG1heF9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrICogJ3ZcblxuICAoKiogU3dhcCB0aGUgaW5uZXIgYW5kIG91dGVyIGtleXMgb2YgbmVzdGVkIG1hcHMuIElmIFt0cmFuc3Bvc2Vfa2V5cyBtIGEgPSBiXSwgdGhlblxuICAgICAgW2ZpbmRfZXhuIChmaW5kX2V4biBhIGkpIGogPSBmaW5kX2V4biAoZmluZF9leG4gYiBqKSBpXS4gKilcbiAgdmFsIHRyYW5zcG9zZV9rZXlzXG4gICAgOiAgKCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAoJ2syLCAndiwgJ2NtcDIpIHQsICdjbXAxKSB0XG4gICAgLT4gKCdrMiwgKCdrMSwgJ3YsICdjbXAxKSB0LCAnY21wMikgdFxuXG4gICgqKiBUaGVzZSBmdW5jdGlvbnMgaGF2ZSB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgc2ltaWxhciBmdW5jdGlvbnMgaW4gW0xpc3RdLiAqKVxuXG4gIHZhbCBmb3JfYWxsIDogKCdrLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG5cbiAgKCoqIFtzcGxpdCB0IGtleV0gcmV0dXJucyBhIG1hcCBvZiBrZXlzIHN0cmljdGx5IGxlc3MgdGhhbiBba2V5XSwgdGhlIG1hcHBpbmcgb2YgW2tleV0gaWZcbiAgICAgIGFueSwgYW5kIGEgbWFwIG9mIGtleXMgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIFtrZXldLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgc21hbGxlciBvZiB0aGUgdHdvIG91dHB1dCBtYXBzLiAgVGhlIE8obSkgdGVybSBpcyBkdWUgdG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlXG4gICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWFwcy4gKilcbiAgdmFsIHNwbGl0XG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICdrXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnayAqICd2KSBvcHRpb24gKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFtzcGxpdF9sZV9ndCB0IGtleV0gcmV0dXJucyBhIG1hcCBvZiBrZXlzIHRoYXQgYXJlIGxlc3Mgb3IgZXF1YWwgdG8gW2tleV0gYW5kIGFcbiAgICAgIG1hcCBvZiBrZXlzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiBba2V5XS5cblxuICAgICAgUnVudGltZSBpcyBPKG0gKyBsb2cgbiksIHdoZXJlIG4gaXMgdGhlIHNpemUgb2YgdGhlIGlucHV0IG1hcCBhbmQgbSBpcyB0aGUgc2l6ZSBvZlxuICAgICAgdGhlIHNtYWxsZXIgb2YgdGhlIHR3byBvdXRwdXQgbWFwcy4gIFRoZSBPKG0pIHRlcm0gaXMgZHVlIHRvIHRoZSBuZWVkIHRvIGNhbGN1bGF0ZVxuICAgICAgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1hcHMuICopXG4gIHZhbCBzcGxpdF9sZV9ndCA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3NwbGl0X2x0X2dlIHQga2V5XSByZXR1cm5zIGEgbWFwIG9mIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIFtrZXldIGFuZCBhIG1hcCBvZlxuICAgICAga2V5cyB0aGF0IGFyZSBncmVhdGVyIG9yIGVxdWFsIHRvIFtrZXldLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgc21hbGxlciBvZiB0aGUgdHdvIG91dHB1dCBtYXBzLiAgVGhlIE8obSkgdGVybSBpcyBkdWUgdG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlXG4gICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWFwcy4gKilcbiAgdmFsIHNwbGl0X2x0X2dlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0XSByZXR1cm5zIFtgT2sgbWFwXSB3aGVyZSBbbWFwXSBjb250YWlucyBhbGwgdGhlXG4gICAgICBbKGtleSwgdmFsdWUpXSBwYWlycyBmcm9tIHRoZSB0d28gaW5wdXQgbWFwcyBpZiBhbGwgdGhlIGtleXMgZnJvbSBbbG93ZXJfcGFydF0gYXJlXG4gICAgICBsZXNzIHRoYW4gYWxsIHRoZSBrZXlzIGZyb20gW3VwcGVyX3BhcnRdLiAgT3RoZXJ3aXNlIGl0IHJldHVybnNcbiAgICAgIFtgT3ZlcmxhcHBpbmdfa2V5X3Jhbmdlc10uXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhsb2cgbikgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgbGFyZ2VyIGlucHV0IG1hcC4gIFRoaXMgY2FuIGJlXG4gICAgICBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIFtNYXAubWVyZ2VdIG9yIHJlcGVhdGVkIFtNYXAuYWRkXS5cblxuICAgICAge1tcbiAgICAgICAgYXNzZXJ0IChtYXRjaCBNYXAuYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IHdpdGhcbiAgICAgICAgICB8IGBPayB3aG9sZV9tYXAgLT5cbiAgICAgICAgICAgIE1hcC50b19hbGlzdCB3aG9sZV9tYXBcbiAgICAgICAgICAgID0gTGlzdC5hcHBlbmQgKHRvX2FsaXN0IGxvd2VyX3BhcnQpICh0b19hbGlzdCB1cHBlcl9wYXJ0KVxuICAgICAgICAgIHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgLT4gdHJ1ZSk7XG4gICAgICBdfSAqKVxuICB2YWwgYXBwZW5kXG4gICAgOiAgbG93ZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gdXBwZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF1cblxuICAoKiogW3N1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZF0gcmV0dXJucyBhIG1hcCBjb250YWluaW5nIGFsbCB0aGUgZW50cmllcyBmcm9tXG4gICAgICBbdF0gd2hvc2Uga2V5cyBsaWUgaW5zaWRlIHRoZSBpbnRlcnZhbCBpbmRpY2F0ZWQgYnkgW35sb3dlcl9ib3VuZF0gYW5kXG4gICAgICBbfnVwcGVyX2JvdW5kXS4gIElmIHRoaXMgaW50ZXJ2YWwgaXMgZW1wdHksIGFuIGVtcHR5IG1hcCBpcyByZXR1cm5lZC5cblxuICAgICAgUnVudGltZSBpcyBPKG0gKyBsb2cgbiksIHdoZXJlIG4gaXMgdGhlIHNpemUgb2YgdGhlIGlucHV0IG1hcCBhbmQgbSBpcyB0aGUgc2l6ZSBvZlxuICAgICAgdGhlIG91dHB1dCBtYXAuICBUaGUgTyhtKSB0ZXJtIGlzIGR1ZSB0byB0aGUgbmVlZCB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCBvZiB0aGVcbiAgICAgIG91dHB1dCBtYXAuICopXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBsb3dlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2sgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW2ZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mXSBmb2xkcyBbZl0gKHdpdGggaW5pdGlhbCB2YWx1ZSBbfmluaXRdKVxuICAgICAgb3ZlciBhbGwga2V5cyAoYW5kIHRoZWlyIGFzc29jaWF0ZWQgdmFsdWVzKSB0aGF0IGFyZSBpbiB0aGUgcmFuZ2UgW1ttaW4sIG1heF1dXG4gICAgICAoaW5jbHVzaXZlKS4gICopXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBtaW46J2tcbiAgICAtPiBtYXg6J2tcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICAoKiogW3JhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4XSByZXR1cm5zIGFuIGFzc29jaWF0aXZlIGxpc3Qgb2YgdGhlIGVsZW1lbnRzIHdob3NlIGtleXNcbiAgICAgIGxpZSBpbiBbW21pbiwgbWF4XV0gKGluY2x1c2l2ZSksIHdpdGggdGhlIHNtYWxsZXN0IGtleSBiZWluZyBhdCB0aGUgaGVhZCBvZiB0aGVcbiAgICAgIGxpc3QuICopXG4gIHZhbCByYW5nZV90b19hbGlzdCA6ICgnaywgJ3YsICdjbXApIHQgLT4gbWluOidrIC0+IG1heDonayAtPiAoJ2sgKiAndikgbGlzdFxuXG4gICgqKiBbY2xvc2VzdF9rZXkgdCBkaXIga10gcmV0dXJucyB0aGUgWyhrZXksIHZhbHVlKV0gcGFpciBpbiBbdF0gd2l0aCBba2V5XSBjbG9zZXN0IHRvXG4gICAgICBba10gdGhhdCBzYXRpc2ZpZXMgdGhlIGdpdmVuIGluZXF1YWxpdHkgYm91bmQuXG5cbiAgICAgIEZvciBleGFtcGxlLCBbY2xvc2VzdF9rZXkgdCBgTGVzc190aGFuIGtdIHdvdWxkIGJlIHRoZSBwYWlyIHdpdGggdGhlIGNsb3Nlc3Qga2V5IHRvXG4gICAgICBba10gd2hlcmUgW2tleSA8IGtdLlxuXG4gICAgICBbdG9fc2VxdWVuY2VdIGNhbiBiZSB1c2VkIHRvIGdldCB0aGUgc2FtZSByZXN1bHRzIGFzIFtjbG9zZXN0X2tleV0uICBJdCBpcyBsZXNzXG4gICAgICBlZmZpY2llbnQgZm9yIGluZGl2aWR1YWwgbG9va3VwcyBidXQgbW9yZSBlZmZpY2llbnQgZm9yIGZpbmRpbmcgbWFueSBlbGVtZW50cyBzdGFydGluZ1xuICAgICAgYXQgc29tZSB2YWx1ZS4gKilcbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAtPiAna1xuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICAoKiogW250aCB0IG5dIGZpbmRzIHRoZSAoa2V5LCB2YWx1ZSkgcGFpciBvZiByYW5rIG4gKGkuZS4sIHN1Y2ggdGhhdCB0aGVyZSBhcmUgZXhhY3RseSBuXG4gICAgICBrZXlzIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZm91bmQga2V5KSwgaWYgb25lIGV4aXN0cy4gIE8obG9nKGxlbmd0aCB0KSArIG4pIHRpbWUuICopXG4gIHZhbCBudGggOiAoJ2ssICd2LCBfKSB0IC0+IGludCAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIG50aF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+IGludCAtPiAnayAqICd2XG5cbiAgKCoqIFtyYW5rIHQga10gSWYgW2tdIGlzIGluIFt0XSwgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIFtrXSBpblxuICAgICAgW3RdLCBhbmQgW05vbmVdIG90aGVyd2lzZS4gKilcbiAgdmFsIHJhbmsgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+IGludCBvcHRpb25cblxuXG5cbiAgKCoqIFt0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHRdXG4gICAgICBnaXZlcyBhIHNlcXVlbmNlIG9mIGtleS12YWx1ZSBwYWlycyBiZXR3ZWVuIFtrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dIGFuZFxuICAgICAgW2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b10gaW5jbHVzaXZlLCBwcmVzZW50ZWQgaW4gW29yZGVyXS4gIElmXG4gICAgICBba2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID4ga2V5c19sZXNzX29yX2VxdWFsX3RvXSwgdGhlIHNlcXVlbmNlIGlzXG4gICAgICBlbXB0eS5cblxuICAgICAgV2hlbiBuZWl0aGVyIFtrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9dIG5vciBba2V5c19sZXNzX29yX2VxdWFsX3RvXSBhcmVcbiAgICAgIHByb3ZpZGVkLCB0aGUgY29zdCBpcyBPKGxvZyBuKSB1cCBmcm9udCBhbmQgYW1vcnRpemVkIE8oMSkgdG8gcHJvZHVjZVxuICAgICAgZWFjaCBlbGVtZW50LiBJZiBlaXRoZXIgaXMgcHJvdmlkZWQgKGFuZCBpcyB1c2VkIGJ5IHRoZSBvcmRlciBwYXJhbWV0ZXJcbiAgICAgIHByb3ZpZGVkKSwgdGhlbiB0aGUgdGhlIGNvc3QgaXMgTyhuKSB1cCBmcm9udCwgYW5kIGFtb3J0aXplZCBPKDEpIHRvXG4gICAgICBwcm9kdWNlIGVhY2ggZWxlbWVudC4gKilcbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5ICgqKiBkZWZhdWx0ICopIHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidrXG4gICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzona1xuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIHdoaWNoIGVsdF0gcmV0dXJucyB0aGUgWyhrZXksIHZhbHVlKV0gcGFpciBpbiBbdF1cbiAgICAgIHNwZWNpZmllZCBieSBbY29tcGFyZV0gYW5kIFt3aGljaF0sIGlmIG9uZSBleGlzdHMuXG5cbiAgICAgIFt0XSBtdXN0IGJlIHNvcnRlZCBpbiBpbmNyZWFzaW5nIG9yZGVyIGFjY29yZGluZyB0byBbY29tcGFyZV0sIHdoZXJlIFtjb21wYXJlXSBhbmRcbiAgICAgIFtlbHRdIGRpdmlkZSBbdF0gaW50byB0aHJlZSAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8ICA8IGVsdCAgfCAgPSBlbHQgIHwgID4gZWx0ICB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gcmV0dXJucyBhbiBlbGVtZW50IG9uIHRoZSBib3VuZGFyeSBvZiBzZWdtZW50cyBhcyBzcGVjaWZpZWQgYnlcbiAgICAgIFt3aGljaF0uICBTZWUgdGhlIGRpYWdyYW0gYmVsb3cgbmV4dCB0byB0aGUgW3doaWNoXSB2YXJpYW50cy5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIGRvZXMgbm90IGNoZWNrIHRoYXQgW2NvbXBhcmVdIG9yZGVycyBbdF0sIGFuZCBiZWhhdmlvciBpc1xuICAgICAgdW5zcGVjaWZpZWQgaWYgW2NvbXBhcmVdIGRvZXNuJ3Qgb3JkZXIgW3RdLiAgQmVoYXZpb3IgaXMgYWxzbyB1bnNwZWNpZmllZCBpZlxuICAgICAgW2NvbXBhcmVdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gKCoqICAgICAgICB7diB8IDwgZWx0IFggfCAgICAgICAgICAgICAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAoKiogICAgIHt2IHwgICAgICA8PSBlbHQgICAgICAgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgICA9IGVsdCBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCBYID0gZWx0ICAgfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gKCoqIHt2ICAgICAgICAgICB8IFggICAgICAgPj0gZWx0ICAgICAgfCB2fSAqKVxuICAgICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAoKiogICAge3YgICAgICAgICAgICAgICAgICAgICAgIHwgWCA+IGVsdCB8IHZ9ICopXG4gICAgICAgXVxuICAgIC0+ICdrZXlcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIHdoaWNoXSB0YWtlcyBhIFtzZWdtZW50X29mXSBmdW5jdGlvbiB0aGF0XG4gICAgICBkaXZpZGVzIFt0XSBpbnRvIHR3byAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8IHNlZ21lbnRfb2YgZWx0ID0gYExlZnQgfCBzZWdtZW50X29mIGVsdCA9IGBSaWdodCB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIHJldHVybnMgdGhlIFsoa2V5LCB2YWx1ZSldIHBhaXIgb24gdGhlIGJvdW5kYXJ5IG9mIHRoZVxuICAgICAgc2VnbWVudHMgYXMgc3BlY2lmaWVkIGJ5IFt3aGljaF06IFtgTGFzdF9vbl9sZWZ0XSB5aWVsZHMgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGVcbiAgICAgIGxlZnQgc2VnbWVudCwgd2hpbGUgW2BGaXJzdF9vbl9yaWdodF0geWllbGRzIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSByaWdodCBzZWdtZW50LlxuICAgICAgSXQgcmV0dXJucyBbTm9uZV0gaWYgdGhlIHNlZ21lbnQgaXMgZW1wdHkuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbc2VnbWVudF9vZl0gc2VnbWVudHMgW3RdIGFzIGluIHRoZVxuICAgICAgZGlhZ3JhbSwgYW5kIGJlaGF2aW9yIGlzIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBkb2Vzbid0IHNlZ21lbnQgW3RdLiAgQmVoYXZpb3JcbiAgICAgIGlzIGFsc28gdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooKGtleTonayAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlbQGxvY2FsXSlcbiAgICAtPiBbIGBMYXN0X29uX2xlZnQgfCBgRmlyc3Rfb25fcmlnaHQgXVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc3VicmFuZ2VdIHRha2VzIGEgW2NvbXBhcmVdIGZ1bmN0aW9uIHRoYXQgZGl2aWRlcyBbdF0gaW50byB0aHJlZVxuICAgICAgKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50cyB3aXRoIHJlc3BlY3QgdG8gW2xvd2VyX2JvdW5kXSBhbmQgW3VwcGVyX2JvdW5kXTpcblxuICAgICAge3ZcbiAgICAgICAgfCBCZWxvd19sb3dlcl9ib3VuZCB8IEluX3JhbmdlIHwgQWJvdmVfdXBwZXJfYm91bmQgfFxuICAgICAgdn1cblxuICAgICAgYW5kIHJldHVybnMgYSBtYXAgb2YgdGhlIFtJbl9yYW5nZV0gc2VnbWVudC5cblxuICAgICAgUnVudGltZSBpcyBPKGxvZyBtICsgbikgd2hlcmUgW21dIGlzIHRoZSBsZW5ndGggb2YgdGhlIGlucHV0IG1hcCBhbmQgW25dIGlzIHRoZVxuICAgICAgbGVuZ3RoIG9mIHRoZSBvdXRwdXQuIFRoZSBsaW5lYXIgdGVybSBpbiBbbl0gaXMgdG8gY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQuXG5cbiAgICAgIEJlaGF2aW9yIGlzIHVuZGVmaW5lZCBpZiBbY29tcGFyZV0gZG9lcyBub3Qgc2VnbWVudCBbdF0gYXMgc2hvd24gYWJvdmUsIG9yIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBpdHMgaW5wdXRzLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2JvdW5kIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIHRyYXZlcnNhbHMgdG8gcmVjb25zdHJ1Y3QgYSBtYXAgd2l0aGluIGFuIGFwcGxpY2F0aXZlLiBVc2VzXG4gICAgICBbTGF6eV9hcHBsaWNhdGl2ZV0gc28gdGhhdCB0aGUgbWFwIGNhbiBiZSB0cmF2ZXJzZWQgd2l0aGluIHRoZSBhcHBsaWNhdGl2ZSwgcmF0aGVyXG4gICAgICB0aGFuIG5lZWRpbmcgdG8gYmUgdHJhdmVyc2VkIGFsbCBhdCBvbmNlLCBvdXRzaWRlIHRoZSBhcHBsaWNhdGl2ZS4gKilcbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpIDogc2lnXG4gICAgdmFsIG1hcGlcbiAgICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIEEudClcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0IEEudFxuXG4gICAgdmFsIGZpbHRlcl9tYXBpXG4gICAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24gQS50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgQS50XG4gIGVuZFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF9tYXAgPSBpbnQgTWFwLk0oU3RyaW5nKS50XG4gICAgICBdfVxuXG4gICAgICB3aGljaCBzdGFuZHMgZm9yOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfbWFwID0gKFN0cmluZy50LCBpbnQsIFN0cmluZy5jb21wYXJhdG9yX3dpdG5lc3MpIE1hcC50XG4gICAgICBdfVxuXG4gICAgICBUaGUgcG9pbnQgaXMgdGhhdCBbaW50IE1hcC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZCBzeW50YXhcbiAgICAgIGRvZXNuJ3QgKGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcywgc2F5LCBbU3RyaW5nLnNleHBfb2ZfY29tcGFyYXRvcl93aXRuZXNzXVxuICAgICAgLS0gaW5zdGVhZCB5b3Ugd291bGQgd2FudCB0byBwYXNzIHRoZSBjb21wYXJhdG9yIGRpcmVjdGx5KS5cblxuICAgICAgSW4gYWRkaXRpb24sIHdoZW4gdXNpbmcgW0BAZGVyaXZpbmddLCB0aGUgcmVxdWlyZW1lbnRzIG9uIHRoZSBrZXkgbW9kdWxlIGFyZSBvbmx5XG4gICAgICB0aG9zZSBuZWVkZWQgdG8gc2F0aXNmeSB3aGF0IHlvdSBhcmUgdHJ5aW5nIHRvIGRlcml2ZSBvbiB0aGUgbWFwIGl0c2VsZi4gU2F5IHlvdVxuICAgICAgd3JpdGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgdCA9IGludCBNYXAuTShYKS50IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICBdfVxuXG4gICAgICB0aGVuIHRoaXMgd2lsbCBiZSB3ZWxsIHR5cGVkIGV4YWN0bHkgaWYgW1hdIGNvbnRhaW5zIGF0IGxlYXN0OlxuICAgICAgLSBhIHR5cGUgW3RdIHdpdGggbm8gcGFyYW1ldGVyc1xuICAgICAgLSBhIGNvbXBhcmF0b3Igd2l0bmVzc1xuICAgICAgLSBhIFtoYXNoX2ZvbGRfdF0gZnVuY3Rpb24gd2l0aCB0aGUgcmlnaHQgdHlwZSAqKVxuICBtb2R1bGUgTSAoSyA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZCkgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2tleSwgJ3ZhbHVlLCAnY21wKSB0IDo9ICgna2V5LCAndmFsdWUsICdjbXApIHRcblxuICAoKiogW1VzaW5nX2NvbXBhcmF0b3JdIGlzIGEgc2ltaWxhciBpbnRlcmZhY2UgYXMgdGhlIHRvcGxldmVsIG9mIFtNYXBdLCBleGNlcHQgdGhlXG4gICAgICBmdW5jdGlvbnMgdGFrZSBhIFt+Y29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudF0sIHdoZXJlYXMgdGhlIGZ1bmN0aW9ucyBhdCB0aGVcbiAgICAgIHRvcGxldmVsIG9mIFtNYXBdIHRha2UgYSBbKCdrLCAnY21wKSBjb21wYXJhdG9yXS4gKilcbiAgbW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAoJ2ssICsndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2sgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoU2V4cC50IC0+ICdrKVxuICAgICAgLT4gKFNleHAudCAtPiAndilcbiAgICAgIC0+IFNleHAudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgbW9kdWxlIFRyZWUgOiBzaWdcbiAgICAgIHR5cGUgKCsnaywgKyd2LCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICB2YWwgc2V4cF9vZl90XG4gICAgICAgIDogICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgndiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgICAtPiAoU2V4cC50IC0+ICdrKVxuICAgICAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgICAgICAtPiBTZXhwLnRcbiAgICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2tcbiAgICAgICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnY1xuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuXG4gICAgICB2YWwgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA6IChfLCBfLCBfKSB0XG5cbiAgICAgICgqKiBbQnVpbGRfaW5jcmVhc2luZ10gY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGEgbWFwIGluY3JlbWVudGFsbHkgZnJvbSBhXG4gICAgICAgICAgc2VxdWVuY2UgdGhhdCBpcyBrbm93biB0byBiZSBpbmNyZWFzaW5nLlxuXG4gICAgICAgICAgVGhlIHRvdGFsIHRpbWUgY29tcGxleGl0eSBvZiBjb25zdHJ1Y3RpbmcgYSBtYXAgdGhpcyB3YXkgaXMgTyhuKSwgd2hpY2ggaXMgbW9yZVxuICAgICAgICAgIGVmZmljaWVudCB0aGFuIHVzaW5nIFtNYXAuYWRkXSBieSBhIGxvZ2FyaXRobWljIGZhY3Rvci5cblxuICAgICAgICAgIFRoaXMgaW50ZXJmYWNlIGNhbiBiZSB0aG91Z2h0IG9mIGFzIGEgZHVhbCBvZiBbdG9fc2VxdWVuY2VdLCBidXQgd2UgZG9uJ3QgaGF2ZVxuICAgICAgICAgIGFuIGVxdWFsbHkgbmVhdCBpZGlvbSBmb3IgdGhlIGR1YWxzIG9mIHNlcXVlbmNlcyAoW29mX3NlcXVlbmNlXSBpcyBtdWNoIGxlc3NcbiAgICAgICAgICBnZW5lcmFsIGJlY2F1c2UgaXQgZG9lcyBub3QgYWxsb3cgdGhlIHNlcXVlbmNlIHRvIGJlIHByb2R1Y2VkIGFzeW5jaHJvbm91c2x5KS4gKilcbiAgICAgIG1vZHVsZSBCdWlsZF9pbmNyZWFzaW5nIDogc2lnXG4gICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgdHlwZSAoJ2ssICd2LCAndykgdFxuXG4gICAgICAgIHZhbCBlbXB0eSA6ICgnaywgJ3YsICd3KSB0XG5cbiAgICAgICAgKCoqIFRpbWUgY29tcGxleGl0eSBvZiBbYWRkX2V4bl0gaXMgYW1vcnRpemVkIGNvbnN0YW50LXRpbWUgKGlmIFt0XSBpcyB1c2VkXG4gICAgICAgICAgICBsaW5lYXJseSksIHdpdGggYSB3b3JzdC1jYXNlIE8obG9nKG4pKSB0aW1lLiAqKVxuICAgICAgICB2YWwgYWRkX2V4blxuICAgICAgICAgIDogICgnaywgJ3YsICd3KSB0XG4gICAgICAgICAgLT4gY29tcGFyYXRvcjooJ2ssICd3KSBDb21wYXJhdG9yLnRcbiAgICAgICAgICAtPiBrZXk6J2tcbiAgICAgICAgICAtPiBkYXRhOid2XG4gICAgICAgICAgLT4gKCdrLCAndiwgJ3cpIHRcblxuICAgICAgICAoKiogVGltZSBjb21wbGV4aXR5IGlzIE8obG9nKG4pKS4gKilcbiAgICAgICAgdmFsIHRvX3RyZWUgOiAoJ2ssICd2LCAndykgdCAtPiAoJ2ssICd2LCAndykgdHJlZVxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2tcbiAgICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gJ2NcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAgIHZhbCBoYXNoX2ZvbGRfZGlyZWN0XG4gICAgICA6ICAnayBIYXNoLmZvbGRlclxuICAgICAgLT4gJ3YgSGFzaC5mb2xkZXJcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAgICgqKiBUbyBnZXQgYXJvdW5kIHRoZSB2YWx1ZSByZXN0cmljdGlvbiwgYXBwbHkgdGhlIGZ1bmN0b3IgYW5kIGluY2x1ZGUgaXQuIFlvdVxuICAgICAgICBjYW4gc2VlIGFuIGV4YW1wbGUgb2YgdGhpcyBpbiB0aGUgW1BvbHldIHN1Ym1vZHVsZSBiZWxvdy4gKilcbiAgICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoSyA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gICAgICB2YWwgZW1wdHkgOiAoJ2EgSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmRcbiAgZW5kXG5cbiAgKCoqIEEgcG9seW1vcnBoaWMgTWFwLiAqKVxuICBtb2R1bGUgUG9seSA6XG4gICAgU19wb2x5XG4gICAgd2l0aCB0eXBlICgna2V5LCArJ3ZhbHVlKSB0ID0gKCdrZXksICd2YWx1ZSwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgICBhbmQgdHlwZSAoJ2tleSwgKyd2YWx1ZSkgdHJlZSA9XG4gICAgICAgICAgICgna2V5LCAndmFsdWUsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIFVzaW5nX2NvbXBhcmF0b3IuVHJlZS50XG4gICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAoKiogQ3JlYXRlIGEgbWFwIGZyb20gYSB0cmVlIHVzaW5nIHRoZSBnaXZlbiBjb21wYXJhdG9yLiAqKVxuICB2YWwgb2ZfdHJlZVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIFVzaW5nX2NvbXBhcmF0b3IuVHJlZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBFeHRyYWN0IGEgdHJlZSBmcm9tIGEgbWFwLiAqKVxuICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcblxuXG4gICgqKiB7MiBNb2R1bGVzIGFuZCBtb2R1bGUgdHlwZXMgZm9yIGV4dGVuZGluZyBbTWFwXX1cblxuICAgICAgRm9yIHVzZSBpbiBleHRlbnNpb25zIG9mIEJhc2UsIGxpa2UgW0NvcmVdLiAqKVxuXG4gIG1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBXaXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbiAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IFdpdGhvdXRfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBBY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBUXG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBNYXBfaW50Zi5XaXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBNYXBfaW50Zi5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IE1hcF9pbnRmLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG5tb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA9IFNlcXVlbmNlLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50XG5cbm1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgc2V0IDogJ2FcbiAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICB9XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBDb250YWluZXIuR2VuZXJpY1xuXG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgKCoqIFRoZSBbYWNjZXNzX29wdGlvbnNdIHR5cGUgaXMgdXNlZCB0byBtYWtlIFtBY2Nlc3NvcnNfZ2VuZXJpY10gZmxleGlibGUgYXMgdG8gd2hldGhlclxuICAgICAgYSBjb21wYXJhdG9yIGlzIHJlcXVpcmVkIHRvIGJlIHBhc3NlZCB0byBjZXJ0YWluIGZ1bmN0aW9ucy4gKilcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgaW52YXJpYW50cyA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IGJvb2wpIGFjY2Vzc19vcHRpb25zXG5cbiAgKCoqIG92ZXJyaWRlIFtDb250YWluZXJdJ3MgW21lbV0gKilcbiAgdmFsIG1lbSA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBhZGQgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgcmVtb3ZlIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIHVuaW9uIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGludGVyIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGRpZmYgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhIGVsdCwgJ2EgZWx0KSBFaXRoZXIudCBTZXF1ZW5jZS50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gaW50KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgZXF1YWwgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IG9mXzooJ2EsICdjbXApIHQgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGFyZV9kaXNqb2ludCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHZhbCBpc19zdWJzZXRcbiAgICAgIDogKCAnYVxuICAgICAgICAsICdjbXBcbiAgICAgICAgLCAoJ2EsICdjbXApIHQgTmFtZWQudCAtPiBvZl86KCdhLCAnY21wKSB0IE5hbWVkLnQgLT4gdW5pdCBPcl9lcnJvci50IClcbiAgICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gICAgdmFsIGVxdWFsXG4gICAgICA6ICggJ2FcbiAgICAgICAgLCAnY21wXG4gICAgICAgICwgKCdhLCAnY21wKSB0IE5hbWVkLnQgLT4gKCdhLCAnY21wKSB0IE5hbWVkLnQgLT4gdW5pdCBPcl9lcnJvci50IClcbiAgICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuICBlbmRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIGVsdCAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2EgZWx0IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gIHZhbCBpdGVyMlxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiBmOlxuICAgICAgICAgICAoKFsgYExlZnQgb2YgJ2EgZWx0IHwgYFJpZ2h0IG9mICdhIGVsdCB8IGBCb3RoIG9mICdhIGVsdCAqICdhIGVsdCBdIC0+IHVuaXQpXG4gICAgICAgICAgICBbQGxvY2FsXSlcbiAgICAgIC0+IHVuaXQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdjbXApIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBlbGVtZW50cyA6ICgnYSwgXykgdCAtPiAnYSBlbHQgbGlzdFxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0XG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcblxuICB2YWwgc3BsaXRcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCAqICdhIGVsdCBvcHRpb24gKiAoJ2EsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzcGxpdF9sZV9ndFxuICAgIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc3BsaXRfbHRfZ2VcbiAgICA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGdyb3VwX2J5XG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gZXF1aXY6KCgnYSBlbHQgLT4gJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnY21wKSB0IGxpc3RcblxuICB2YWwgZmluZF9leG4gOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSBlbHRcbiAgdmFsIG50aCA6ICgnYSwgXykgdCAtPiBpbnQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgcmVtb3ZlX2luZGV4IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gaW50IC0+ICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdjbXApIHQgLT4gKCdhIGVsdCwgJ2NtcCBjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICdhIGVsdCBTZXF1ZW5jZS50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gY29tcGFyZTooKCdhIGVsdCAtPiAna2V5IC0+IGludClbQGxvY2FsXSlcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgICAgLT4gJ2tleVxuICAgICAgLT4gJ2EgZWx0IG9wdGlvbiApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiBzZWdtZW50X29mOigoJ2EgZWx0IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlbQGxvY2FsXSlcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAgIC0+ICdhIGVsdCBvcHRpb24gKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EgZWx0LCAnYSBlbHQpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnY21wKSBzZXRcbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcbiAgdHlwZSAnYSBlbHRcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBjcmVhdGVfb3B0aW9uc1xuICB0eXBlICdjbXAgY21wXG5cbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2EsICdjbXAsICdhIGVsdCAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCB1bmlvbl9saXN0IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgbGlzdCAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBvZl9saXN0IDogKCdhLCAnY21wLCAnYSBlbHQgbGlzdCAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBvZl9zZXF1ZW5jZSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IFNlcXVlbmNlLnQgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgb2ZfYXJyYXkgOiAoJ2EsICdjbXAsICdhIGVsdCBhcnJheSAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiAoJ2EsICdjbXAsICdhIGVsdCBhcnJheSAtPiAoJ2EsICdjbXApIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgOiAoJ2EsICdjbXAsICdhIGVsdCBhcnJheSAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAoJ2EsICdjbXAsIGxlbjppbnQgLT4gZjooKGludCAtPiAnYSBlbHQpW0Bsb2NhbF0pIC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAoJ2EsIF8sICdhIGVsdCBsaXN0IC0+ICdhIGVsdCBsaXN0KSBjcmVhdGVfb3B0aW9uc1xuXG4gICgqKiBUaGUgdHlwZXMgb2YgW21hcF0gYW5kIFtmaWx0ZXJfbWFwXSBhcmUgc3VidGxlLiAgVGhlIGlucHV0IHNldCwgWygnYSwgXykgc2V0XSxcbiAgICAgIHJlZmxlY3RzIHRoZSBmYWN0IHRoYXQgdGhlc2UgZnVuY3Rpb25zIHRha2UgYSBzZXQgb2YgKmFueSogdHlwZSwgd2l0aCBhbnlcbiAgICAgIGNvbXBhcmF0b3IsIHdoaWxlIHRoZSBvdXRwdXQgc2V0LCBbKCdiLCAnY21wKSB0XSwgcmVmbGVjdHMgdGhhdCB0aGUgb3V0cHV0IHNldCBoYXNcbiAgICAgIHRoZSBwYXJ0aWN1bGFyIFsnY21wXSBvZiB0aGUgY3JlYXRpb24gZnVuY3Rpb24uICBUaGUgY29tcGFyYXRvciBjYW4gY29tZSBpbiBvbmUgb2ZcbiAgICAgIHRocmVlIHdheXMsIGRlcGVuZGluZyBvbiB3aGljaCBzZXQgbW9kdWxlIGlzIHVzZWRcblxuICAgICAgLSBbU2V0Lm1hcF0gLS0gY29tcGFyYXRvciBjb21lcyBhcyBhbiBhcmd1bWVudFxuICAgICAgLSBbU2V0LlBvbHkubWFwXSAtLSBjb21wYXJhdG9yIGlzIHBvbHltb3JwaGljIGNvbXBhcmlzb25cbiAgICAgIC0gW0Zvby5TZXQubWFwXSAtLSBjb21wYXJhdG9yIGlzIFtGb28uY29tcGFyYXRvcl0gKilcbiAgdmFsIG1hcFxuICAgIDogKCdiLCAnY21wLCAoJ2EsIF8pIHNldCAtPiBmOigoJ2EgLT4gJ2IgZWx0KVtAbG9jYWxdKSAtPiAoJ2IsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICggJ2JcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsIF8pIHNldCAtPiBmOigoJ2EgLT4gJ2IgZWx0IG9wdGlvbilbQGxvY2FsXSkgLT4gKCdiLCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfdHJlZSA6ICgnYSwgJ2NtcCwgKCdhIGVsdCwgJ2NtcCBjbXApIHRyZWUgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnZWx0LCAnY21wKSB0XG4gIHR5cGUgKCdlbHQsICdjbXApIHRyZWVcbiAgdHlwZSAnZWx0IGVsdFxuICB0eXBlICdjbXAgY21wXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIGNtcFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIGNtcFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcG9seSA9IHNpZ1xuICB0eXBlICdlbHQgdFxuICB0eXBlICdlbHQgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdlbHQsICdjbXApIHQgOj0gJ2VsdCB0XG4gICAgd2l0aCB0eXBlICgnZWx0LCAnY21wKSB0cmVlIDo9ICdlbHQgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2FcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgbW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxuICB2YWwgc2V4cF9vZl9tX190IDogKG1vZHVsZSBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSAnZWx0KSAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiBTZXhwLnRcblxuICB2YWwgbV9fdF9vZl9zZXhwXG4gICAgOiAgKG1vZHVsZSBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSAnZWx0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gU2V4cC50XG4gICAgLT4gKCdlbHQsICdjbXApIHRcblxuICB2YWwgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAobW9kdWxlIE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gJ2VsdClcbiAgICAtPiAoJ2VsdCwgJ2NtcCkgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIHZhbCBjb21wYXJlX21fX3QgOiAobW9kdWxlIENvbXBhcmVfbSkgLT4gKCdlbHQsICdjbXApIHQgLT4gKCdlbHQsICdjbXApIHQgLT4gaW50XG4gIHZhbCBlcXVhbF9tX190IDogKG1vZHVsZSBFcXVhbF9tKSAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiBib29sXG5cbiAgdmFsIGhhc2hfZm9sZF9tX190XG4gICAgOiAgKG1vZHVsZSBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9ICdlbHQpXG4gICAgLT4gSGFzaC5zdGF0ZVxuICAgIC0+ICgnZWx0LCBfKSB0XG4gICAgLT4gSGFzaC5zdGF0ZVxuXG4gIHZhbCBoYXNoX21fX3QgOiAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2VsdCkgLT4gKCdlbHQsIF8pIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIHR5cGUgU2V0ID0gc2lnXG4gICgqKiBTZXRzIGJhc2VkIG9uIHshQ29tcGFyYXRvci5TfS5cblxuICAgICAgQ3JlYXRvcnMgcmVxdWlyZSBhIGNvbXBhcmF0b3IgYXJndW1lbnQgdG8gYmUgcGFzc2VkIGluLCB3aGVyZWFzIGFjY2Vzc29ycyB1c2UgdGhlXG4gICAgICBjb21wYXJhdG9yIHByb3ZpZGVkIGJ5IHRoZSBpbnB1dCBzZXQuICopXG5cbiAgKCoqIFRoZSB0eXBlIG9mIGEgc2V0LiAgVGhlIGZpcnN0IHR5cGUgcGFyYW1ldGVyIGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgdGhlIGVsZW1lbnQsIGFuZFxuICAgICAgdGhlIHNlY29uZCBpZGVudGlmaWVzIHRoZSBjb21wYXJhdG9yLCB3aGljaCBkZXRlcm1pbmVzIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uIHRoYXRcbiAgICAgIGlzIHVzZWQgZm9yIG9yZGVyaW5nIGVsZW1lbnRzIGluIHRoaXMgc2V0LiAgTWFueSBvcGVyYXRpb25zIChlLmcuLCB7IXVuaW9ufSksXG4gICAgICByZXF1aXJlIHRoYXQgdGhleSBiZSBwYXNzZWQgc2V0cyB3aXRoIHRoZSBzYW1lIGVsZW1lbnQgdHlwZSBhbmQgdGhlIHNhbWUgY29tcGFyYXRvclxuICAgICAgdHlwZS4gKilcbiAgdHlwZSAoISdlbHQsICEnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICghJ2VsdCwgISdjbXApIHQgOj0gKCdlbHQsICdjbXApIHRcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID0gKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0xMl0gdXNlIFtDb21wYXJhdG9yLk1vZHVsZS50XSBpbnN0ZWFkXCJdXG5cbiAgKCoqIFRlc3RzIGludGVybmFsIGludmFyaWFudHMgb2YgdGhlIHNldCBkYXRhIHN0cnVjdHVyZS4gIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLiAqKVxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBhIGZpcnN0LWNsYXNzIG1vZHVsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIG90aGVyIG1hcC9zZXQvZXRjXG4gICAgICB3aXRoIHRoZSBzYW1lIG5vdGlvbiBvZiBjb21wYXJpc29uLiAqKVxuICB2YWwgY29tcGFyYXRvcl9zIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG5cbiAgKCoqIENyZWF0ZXMgYW4gZW1wdHkgc2V0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb21wYXJhdG9yLiAqKVxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBzZXQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbXBhcmF0b3IgdGhhdCBjb250YWlucyBvbmx5IHRoZSBwcm92aWRlZFxuICAgICAgZWxlbWVudC4gKilcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogUmV0dXJucyB0aGUgY2FyZGluYWxpdHkgb2YgdGhlIHNldC4gW08oMSldLiAqKVxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG5cbiAgKCoqIFtpc19lbXB0eSB0XSBpcyBbdHJ1ZV0gaWZmIFt0XSBpcyBlbXB0eS4gIFtPKDEpXS4gKilcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBbbWVtIHQgYV0gcmV0dXJucyBbdHJ1ZV0gaWZmIFthXSBpcyBpbiBbdF0uICBbTyhsb2cgbildLiAqKVxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIC0+IGJvb2xcblxuICAoKiogW2FkZCB0IGFdIHJldHVybnMgYSBuZXcgc2V0IHdpdGggW2FdIGFkZGVkIHRvIFt0XSwgb3IgcmV0dXJucyBbdF0gaWYgW21lbSB0IGFdLlxuICAgICAgW08obG9nIG4pXS4gKilcbiAgdmFsIGFkZCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3JlbW92ZSB0IGFdIHJldHVybnMgYSBuZXcgc2V0IHdpdGggW2FdIHJlbW92ZWQgZnJvbSBbdF0gaWYgW21lbSB0IGFdLCBvciByZXR1cm5zIFt0XVxuICAgICAgb3RoZXJ3aXNlLiAgW08obG9nIG4pXS4gKilcbiAgdmFsIHJlbW92ZSA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3VuaW9uIHQxIHQyXSByZXR1cm5zIHRoZSB1bmlvbiBvZiB0aGUgdHdvIHNldHMuICBbTyhsZW5ndGggdDEgKyBsZW5ndGggdDIpXS4gKilcbiAgdmFsIHVuaW9uIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3VuaW9uIGMgbGlzdF0gcmV0dXJucyB0aGUgdW5pb24gb2YgYWxsIHRoZSBzZXRzIGluIFtsaXN0XS4gIFRoZVxuICAgICAgW2NvbXBhcmF0b3JdIGFyZ3VtZW50IGlzIHJlcXVpcmVkIGZvciB0aGUgY2FzZSB3aGVyZSBbbGlzdF0gaXMgZW1wdHkuXG4gICAgICBbTyhtYXgoTGlzdC5sZW5ndGggbGlzdCwgbiBsb2cgbikpXSwgd2hlcmUgW25dIGlzIHRoZSBzdW0gb2Ygc2l6ZXMgb2YgdGhlIGlucHV0IHNldHMuICopXG4gIHZhbCB1bmlvbl9saXN0IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbaW50ZXIgdDEgdDJdIGNvbXB1dGVzIHRoZSBpbnRlcnNlY3Rpb24gb2Ygc2V0cyBbdDFdIGFuZCBbdDJdLiAgW08obGVuZ3RoIHQxICtcbiAgICAgIGxlbmd0aCB0MildLiAqKVxuICB2YWwgaW50ZXIgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbZGlmZiB0MSB0Ml0gY29tcHV0ZXMgdGhlIHNldCBkaWZmZXJlbmNlIFt0MSAtIHQyXSwgaS5lLiwgdGhlIHNldCBjb250YWluaW5nIGFsbFxuICAgICAgZWxlbWVudHMgaW4gW3QxXSB0aGF0IGFyZSBub3QgaW4gW3QyXS4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgZGlmZiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtzeW1tZXRyaWNfZGlmZiB0MSB0Ml0gcmV0dXJucyBhIHNlcXVlbmNlIG9mIGNoYW5nZXMgYmV0d2VlbiBbdDFdIGFuZCBbdDJdLiBJdCBpc1xuICAgICAgaW50ZW5kZWQgdG8gYmUgZWZmaWNpZW50IGluIHRoZSBjYXNlIHdoZXJlIFt0MV0gYW5kIFt0Ml0gc2hhcmUgYSBsYXJnZSBhbW91bnQgb2ZcbiAgICAgIHN0cnVjdHVyZS4gKilcbiAgdmFsIHN5bW1ldHJpY19kaWZmIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdhKSBFaXRoZXIudCBTZXF1ZW5jZS50XG5cbiAgKCoqIFtjb21wYXJlX2RpcmVjdCB0MSB0Ml0gY29tcGFyZXMgdGhlIHNldHMgW3QxXSBhbmQgW3QyXS4gIEl0IHJldHVybnMgdGhlIHNhbWUgcmVzdWx0XG4gICAgICBhcyBbY29tcGFyZV0sIGJ1dCB1bmxpa2UgY29tcGFyZSwgZG9lc24ndCByZXF1aXJlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgaW4gZm9yIHRoZVxuICAgICAgdHlwZSBwYXJhbWV0ZXJzIG9mIHRoZSBzZXQuICBbTyhsZW5ndGggdDEgKyBsZW5ndGggdDIpXS4gKilcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBpbnRcblxuICAoKiogSGFzaCBmdW5jdGlvbjogYSBidWlsZGluZyBibG9jayB0byB1c2Ugd2hlbiBoYXNoaW5nIGRhdGEgc3RydWN0dXJlcyBjb250YWluaW5nIHNldHMgaW5cbiAgICAgIHRoZW0uIFtoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbY29tcGFyZV9kaXJlY3RdIGlmZlxuICAgICAgW2hhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbKGNvbXBhcmF0b3IgcykuY29tcGFyZV0gb2YgdGhlIHNldCBbc10gYmVpbmdcbiAgICAgIGhhc2hlZC4gKilcbiAgdmFsIGhhc2hfZm9sZF9kaXJlY3QgOiAnYSBIYXNoLmZvbGRlciAtPiAoJ2EsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAoKiogW2VxdWFsIHQxIHQyXSByZXR1cm5zIFt0cnVlXSBpZmYgdGhlIHR3byBzZXRzIGhhdmUgdGhlIHNhbWUgZWxlbWVudHMuICBbTyhsZW5ndGggdDEgK1xuICAgICAgbGVuZ3RoIHQyKV0gKilcbiAgdmFsIGVxdWFsIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFtleGlzdHMgdCB+Zl0gcmV0dXJucyBbdHJ1ZV0gaWZmIHRoZXJlIGV4aXN0cyBhbiBbYV0gaW4gW3RdIGZvciB3aGljaCBbZiBhXS4gIFtPKG4pXSxcbiAgICAgIGJ1dCByZXR1cm5zIGFzIHNvb24gYXMgaXQgZmluZHMgYW4gW2FdIGZvciB3aGljaCBbZiBhXS4gKilcbiAgdmFsIGV4aXN0cyA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBbZm9yX2FsbCB0IH5mXSByZXR1cm5zIFt0cnVlXSBpZmYgZm9yIGFsbCBbYV0gaW4gW3RdLCBbZiBhXS4gIFtPKG4pXSwgYnV0IHJldHVybnMgYXNcbiAgICAgIHNvb24gYXMgaXQgZmluZHMgYW4gW2FdIGZvciB3aGljaCBbbm90IChmIGEpXS4gKilcbiAgdmFsIGZvcl9hbGwgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogW2NvdW50IHRdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBvZiBbdF0gZm9yIHdoaWNoIFtmXSByZXR1cm5zIFt0cnVlXS5cbiAgICAgIFtPKG4pXS4gKilcbiAgdmFsIGNvdW50IDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICAoKiogW3N1bSB0XSByZXR1cm5zIHRoZSBzdW0gb2YgW2YgdF0gZm9yIGVhY2ggW3RdIGluIHRoZSBzZXQuXG4gICAgICBbTyhuKV0uICopXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIENvbnRhaW5lci5TdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pXG4gICAgLT4gKCdhLCBfKSB0XG4gICAgLT4gZjooKCdhIC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gICgqKiBbZmluZCB0IGZdIHJldHVybnMgYW4gZWxlbWVudCBvZiBbdF0gZm9yIHdoaWNoIFtmXSByZXR1cm5zIHRydWUsIHdpdGggbm8gZ3VhcmFudGVlIGFzXG4gICAgICB0byB3aGljaCBlbGVtZW50IGlzIHJldHVybmVkLiAgW08obildLCBidXQgcmV0dXJucyBhcyBzb29uIGFzIGEgc3VpdGFibGUgZWxlbWVudCBpc1xuICAgICAgZm91bmQuICopXG4gIHZhbCBmaW5kIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICAoKiogW2ZpbmRfbWFwIHQgZl0gcmV0dXJucyBbYl0gZm9yIHNvbWUgW2FdIGluIFt0XSBmb3Igd2hpY2ggW2YgYSA9IFNvbWUgYl0uICBJZiBubyBzdWNoXG4gICAgICBbYV0gZXhpc3RzLCB0aGVuIFtmaW5kXSByZXR1cm5zIFtOb25lXS4gIFtPKG4pXSwgYnV0IHJldHVybnMgYXMgc29vbiBhcyBhIHN1aXRhYmxlXG4gICAgICBlbGVtZW50IGlzIGZvdW5kLiAqKVxuICB2YWwgZmluZF9tYXAgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Igb3B0aW9uXG5cbiAgKCoqIExpa2UgW2ZpbmRdLCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBmYWlsdXJlLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhXG5cbiAgKCoqIFtudGggdCBpXSByZXR1cm5zIHRoZSBbaV10aCBzbWFsbGVzdCBlbGVtZW50IG9mIFt0XSwgaW4gW08obG9nIG4pXSB0aW1lLiAgVGhlXG4gICAgICBzbWFsbGVzdCBlbGVtZW50IGhhcyBbaSA9IDBdLiAgUmV0dXJucyBbTm9uZV0gaWYgW2kgPCAwXSBvciBbaSA+PSBsZW5ndGggdF0uICopXG4gIHZhbCBudGggOiAoJ2EsIF8pIHQgLT4gaW50IC0+ICdhIG9wdGlvblxuXG4gICgqKiBbcmVtb3ZlX2luZGV4IHQgaV0gcmV0dXJucyBhIHZlcnNpb24gb2YgW3RdIHdpdGggdGhlIFtpXXRoIHNtYWxsZXN0IGVsZW1lbnQgcmVtb3ZlZCxcbiAgICAgIGluIFtPKGxvZyBuKV0gdGltZS4gIFRoZSBzbWFsbGVzdCBlbGVtZW50IGhhcyBbaSA9IDBdLiAgUmV0dXJucyBbdF0gaWYgW2kgPCAwXSBvclxuICAgICAgW2kgPj0gbGVuZ3RoIHRdLiAqKVxuICB2YWwgcmVtb3ZlX2luZGV4IDogKCdhLCAnY21wKSB0IC0+IGludCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2lzX3N1YnNldCB0MSB+b2ZfOnQyXSByZXR1cm5zIHRydWUgaWZmIFt0MV0gaXMgYSBzdWJzZXQgb2YgW3QyXS4gKilcbiAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgdCAtPiBvZl86KCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogW2FyZV9kaXNqb2ludCB0MSB0Ml0gcmV0dXJucyBbdHJ1ZV0gaWZmIFtpc19lbXB0eSAoaW50ZXIgdDEgdDIpXSwgYnV0IGlzIG1vcmVcbiAgICAgIGVmZmljaWVudC4gKilcbiAgdmFsIGFyZV9kaXNqb2ludCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBbTmFtZWRdIGFsbG93cyB0aGUgdmFsaWRhdGlvbiBvZiBzdWJzZXQgYW5kIGVxdWFsaXR5IHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBzZXRzLiAgQVxuICAgICAgW05hbWVkLnRdIGlzIGEgcmVjb3JkIG9mIGEgc2V0IGFuZCBhIG5hbWUsIHdoZXJlIHRoZSBuYW1lIGlzIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXMsXG4gICAgICBhbmQgW05hbWVkLmlzX3N1YnNldF0gYW5kIFtOYW1lZC5lcXVhbF0gdmFsaWRhdGUgc3Vic2V0IGFuZCBlcXVhbGl0eSByZWxhdGlvbnNoaXBzXG4gICAgICByZXNwZWN0aXZlbHkuXG5cbiAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGZvciwgZS5nLixcbiAgICAgIHtbXG4gICAgICAgIE5hbWVkLmlzX3N1YnNldCB7IHNldCA9IHNldDE7IG5hbWUgPSBcInNldDFcIiB9IH5vZl86e3NldCA9IHNldDI7IG5hbWUgPSBcInNldDJcIiB9XG4gICAgICBdfVxuXG4gICAgICBsb29rcyBsaWtlXG4gICAgICB7dlxuICAgICAgICAoXCJzZXQxIGlzIG5vdCBhIHN1YnNldCBvZiBzZXQyXCIgKGludmFsaWRfZWxlbWVudHMgKC4uLmVsZW1lbnRzIG9mIHNldDEgLSBzZXQyLi4uKSkpXG4gICAgICAgdn1cblxuICAgICAgc28gW25hbWVdIHNob3VsZCBiZSBhIG5vdW4gcGhyYXNlIHRoYXQgZG9lc24ndCBzb3VuZCBhd2t3YXJkIGluIHRoZSBhYm92ZSBlcnJvclxuICAgICAgbWVzc2FnZS4gIEV2ZW4gdGhvdWdoIGl0IGFkZHMgdmVyYm9zaXR5LCBjaG9vc2luZyBbbmFtZV1zIHRoYXQgc3RhcnQgd2l0aCB0aGUgcGhyYXNlXG4gICAgICBcInRoZSBzZXQgb2ZcIiBvZnRlbiBtYWtlcyB0aGUgZXJyb3IgbWVzc2FnZSBzb3VuZCBtb3JlIG5hdHVyYWwuXG4gICopXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnY21wKSBzZXQgOj0gKCdhLCAnY21wKSB0XG5cbiAgICB0eXBlICdhIHQgPSAnYSBOYW1lZC50ID1cbiAgICAgIHsgc2V0IDogJ2FcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgfVxuXG4gICAgKCoqIFtpc19zdWJzZXQgdDEgfm9mXzp0Ml0gcmV0dXJucyBbT2sgKCldIGlmIFt0MV0gaXMgYSBzdWJzZXQgb2YgW3QyXSBhbmQgYVxuICAgICAgICBodW1hbi1yZWFkYWJsZSBlcnJvciBvdGhlcndpc2UuICAqKVxuICAgIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXApIHNldCB0IC0+IG9mXzooJ2EsICdjbXApIHNldCB0IC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgKCoqIFtlcXVhbCB0MSB0Ml0gcmV0dXJucyBbT2sgKCldIGlmIFt0MV0gaXMgZXF1YWwgdG8gW3QyXSBhbmQgYSBodW1hbi1yZWFkYWJsZVxuICAgICAgICBlcnJvciBvdGhlcndpc2UuICAqKVxuICAgIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCkgc2V0IHQgLT4gKCdhLCAnY21wKSBzZXQgdCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgZW5kXG5cbiAgKCoqIFRoZSBsaXN0IG9yIGFycmF5IGdpdmVuIHRvIFtvZl9saXN0XSBhbmQgW29mX2FycmF5XSBuZWVkIG5vdCBiZSBzb3J0ZWQuICopXG4gIHZhbCBvZl9saXN0IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGxpc3QgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIFNlcXVlbmNlLnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9hcnJheSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSBhcnJheSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3RvX2xpc3RdIGFuZCBbdG9fYXJyYXldIHByb2R1Y2Ugc2VxdWVuY2VzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIHRoZVxuICAgICAgY29tcGFyYXRvci4gKilcbiAgdmFsIHRvX2xpc3QgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuXG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBhcnJheVxuXG4gICgqKiBDcmVhdGUgc2V0IGZyb20gc29ydGVkIGFycmF5LiAgVGhlIGlucHV0IG11c3QgYmUgc29ydGVkIChlaXRoZXIgaW4gYXNjZW5kaW5nIG9yXG4gICAgICBkZXNjZW5kaW5nIG9yZGVyIGFzIGdpdmVuIGJ5IHRoZSBjb21wYXJhdG9yKSBhbmQgY29udGFpbiBubyBkdXBsaWNhdGVzLCBvdGhlcndpc2UgdGhlXG4gICAgICByZXN1bHQgaXMgYW4gZXJyb3IuICBUaGUgY29tcGxleGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGlzIFtPKG4pXS4gKilcbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICdhIGFycmF5XG4gICAgLT4gKCdhLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogU2ltaWxhciB0byBbb2Zfc29ydGVkX2FycmF5XSwgYnV0IHdpdGhvdXQgY2hlY2tpbmcgdGhlIGlucHV0IGFycmF5LiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICdhIGFycmF5XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCBjIH5sZW4gfmZdIGJlaGF2ZXMgbGlrZSBbb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBjXG4gICAgICAoQXJyYXkuaW5pdCBsZW4gfmYpXSwgd2l0aCB0aGUgYWRkaXRpb25hbCByZXN0cmljdGlvbiB0aGF0IGEgZGVjcmVhc2luZyBvcmRlciBpcyBub3RcbiAgICAgIHN1cHBvcnRlZC4gIFRoZSBhZHZhbnRhZ2UgaXMgbm90IHJlcXVpcmluZyB5b3UgdG8gYWxsb2NhdGUgYW4gaW50ZXJtZWRpYXRlIGFycmF5LiAgW2ZdXG4gICAgICB3aWxsIGJlIGNhbGxlZCB3aXRoIDAsIDEsIC4uLiBbbGVuIC0gMV0sIGluIG9yZGVyLiAqKVxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gZjooKGludCAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3N0YWJsZV9kZWR1cF9saXN0XSBpcyBoZXJlIHJhdGhlciB0aGFuIGluIHRoZSBbTGlzdF0gbW9kdWxlIGJlY2F1c2UgdGhlXG4gICAgICBpbXBsZW1lbnRhdGlvbiByZWxpZXMgY3J1Y2lhbGx5IG9uIHNldHMsIGFuZCBiZWNhdXNlIGRvaW5nIHNvIGFsbG93cyBvbmUgdG8gYXZvaWQgdXNlc1xuICAgICAgb2YgcG9seW1vcnBoaWMgY29tcGFyaXNvbiBieSBpbnN0YW50aWF0aW5nIHRoZSBmdW5jdG9yIGF0IGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uXG4gICAgICBvZiBbQ29tcGFyYXRvcl0gYW5kIHVzaW5nIHRoZSByZXN1bHRpbmcgW3N0YWJsZV9kZWR1cF9saXN0XS4gKilcbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogKCdhLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuXG4gICgqKiBbbWFwIGMgdCB+Zl0gcmV0dXJucyBhIG5ldyBzZXQgY3JlYXRlZCBieSBhcHBseWluZyBbZl0gdG8gZXZlcnkgZWxlbWVudCBpblxuICAgICAgW3RdLiAgVGhlIHJldHVybmVkIHNldCBpcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgW2NvbXBhcmF0b3JdLiAgW08obiBsb2cgbildLiAqKVxuICB2YWwgbWFwXG4gICAgOiAgKCdiLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhLCBfKSB0XG4gICAgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIHshbWFwfSwgZXhjZXB0IGVsZW1lbnRzIGZvciB3aGljaCBbZl0gcmV0dXJucyBbTm9uZV0gd2lsbCBiZSBkcm9wcGVkLiAgKilcbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICAoJ2IsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgJ2NtcCkgdFxuXG4gICgqKiBbZmlsdGVyIHQgfmZdIHJldHVybnMgdGhlIHN1YnNldCBvZiBbdF0gZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gIFtPKG4gbG9nXG4gICAgICBuKV0uICopXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdjbXApIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSBmb2xkcyBvdmVyIHRoZSBlbGVtZW50cyBvZiB0aGUgc2V0IGZyb20gc21hbGxlc3QgdG8gbGFyZ2VzdC4gKilcbiAgdmFsIGZvbGQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICAoKiogW2ZvbGRfcmVzdWx0IH5pbml0IH5mXSBmb2xkcyBvdmVyIHRoZSBlbGVtZW50cyBvZiB0aGUgc2V0IGZyb20gc21hbGxlc3QgdG9cbiAgICAgIGxhcmdlc3QsIHNob3J0IGNpcmN1aXRpbmcgdGhlIGZvbGQgaWYgW2YgYWNjdW0geF0gaXMgYW4gW0Vycm9yIF9dICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG5cbiAgKCoqIExpa2UgeyFmb2xkfSwgZXhjZXB0IHRoYXQgaXQgZ29lcyBmcm9tIHRoZSBsYXJnZXN0IHRvIHRoZSBzbWFsbGVzdCBlbGVtZW50LiAqKVxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhIC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbaXRlciB0IH5mXSBjYWxscyBbZl0gb24gZXZlcnkgZWxlbWVudCBvZiBbdF0sIGdvaW5nIGluIG9yZGVyIGZyb20gdGhlIHNtYWxsZXN0IHRvXG4gICAgICBsYXJnZXN0LiAgKilcbiAgdmFsIGl0ZXIgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogSXRlcmF0ZSB0d28gc2V0cyBzaWRlIGJ5IHNpZGUuICBDb21wbGV4aXR5IGlzIFtPKG0rbildIHdoZXJlIFttXSBhbmQgW25dIGFyZSB0aGUgc2l6ZXNcbiAgICAgIG9mIHRoZSB0d28gaW5wdXQgc2V0cy4gIEFzIGFuIGV4YW1wbGUsIHdpdGggdGhlIGlucHV0cyBbMDsgMV0gYW5kIFsxOyAyXSwgW2ZdIHdpbGwgYmVcbiAgICAgIGNhbGxlZCB3aXRoIFtgTGVmdCAwXTsgW2BCb3RoICgxLCAxKV07IGFuZCBbYFJpZ2h0IDJdLiAqKVxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOigoWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYSB8IGBCb3RoIG9mICdhICogJ2EgXSAtPiB1bml0KVtAbG9jYWxdKVxuICAgIC0+IHVuaXRcblxuICAoKiogaWYgW2EsIGIgPSBwYXJ0aXRpb25fdGYgc2V0IH5mXSB0aGVuIFthXSBpcyB0aGUgZWxlbWVudHMgb24gd2hpY2ggW2ZdIHByb2R1Y2VkIFt0cnVlXSxcbiAgICAgIGFuZCBbYl0gaXMgdGhlIGVsZW1lbnRzIG9uIHdoaWNoIFtmXSBwcm9kdWNlcyBbZmFsc2VdLiAqKVxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIFNhbWUgYXMgeyF0b19saXN0fS4gKilcbiAgdmFsIGVsZW1lbnRzIDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcblxuICAoKiogUmV0dXJucyB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgc2V0LiAgW08obG9nIG4pXS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIExpa2UgeyFtaW5fZWx0fSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gd2hlbiBnaXZlbiBhbiBlbXB0eSBzZXQuICopXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuXG4gICgqKiBSZXR1cm5zIHRoZSBsYXJnZXN0IGVsZW1lbnQgb2YgdGhlIHNldC4gIFtPKGxvZyBuKV0uICAqKVxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cblxuICAoKiogTGlrZSB7IW1heF9lbHR9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGdpdmVuIGFuIGVtcHR5IHNldC4gKilcbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIHJldHVybnMgYW4gYXJiaXRyYXJ5IGVsZW1lbnQsIG9yIFtOb25lXSBpZiB0aGUgc2V0IGlzIGVtcHR5LiAqKVxuICB2YWwgY2hvb3NlIDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuXG4gICgqKiBMaWtlIHshY2hvb3NlfSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gb24gYW4gZW1wdHkgc2V0LiAqKVxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgXykgdCAtPiAnYVxuXG4gICgqKiBbc3BsaXQgdCB4XSBwcm9kdWNlcyBhIHRyaXBsZSBbKHQxLCBtYXliZV94LCB0MildLlxuXG4gICAgICBbdDFdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgc3RyaWN0bHkgbGVzcyB0aGFuIFt4XSxcbiAgICAgIFttYXliZV94XSBpcyB0aGUgbWVtYmVyIChpZiBhbnkpIG9mIFt0XSB3aGljaCBjb21wYXJlcyBlcXVhbCB0byBbeF0sXG4gICAgICBbdDJdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgc3RyaWN0bHkgbGFyZ2VyIHRoYW4gW3hdLiAqKVxuICB2YWwgc3BsaXQgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0ICogJ2Egb3B0aW9uICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtzcGxpdF9sZV9ndCB0IHhdIHByb2R1Y2VzIGEgcGFpciBbKHQxLCB0MildLlxuXG4gICAgICBbdDFdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIFt4XSxcbiAgICAgIFt0Ml0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBncmVhdGVyIHRoYW4gW3hdLiAqKVxuICB2YWwgc3BsaXRfbGVfZ3QgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtzcGxpdF9sdF9nZSB0IHhdIHByb2R1Y2VzIGEgcGFpciBbKHQxLCB0MildLlxuXG4gICAgICBbdDFdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgc3RyaWN0bHkgbGVzcyB0aGFuIFt4XSxcbiAgICAgIFt0Ml0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gW3hdLiAqKVxuICB2YWwgc3BsaXRfbHRfZ2UgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIGlmIFtlcXVpdl0gaXMgYW4gZXF1aXZhbGVuY2UgcHJlZGljYXRlLCB0aGVuIFtncm91cF9ieSBzZXQgfmVxdWl2XSBwcm9kdWNlcyBhIGxpc3RcbiAgICAgIG9mIGVxdWl2YWxlbmNlIGNsYXNzZXMgKGkuZS4sIGEgc2V0LXRoZW9yZXRpYyBxdW90aWVudCkuICBFLmcuLFxuXG4gICAgICB7W1xuICAgICAgICBsZXQgY2hhcnMgPSBTZXQub2ZfbGlzdCBbJ0EnOyAnYSc7ICdiJzsgJ2MnXSBpblxuICAgICAgICBsZXQgZXF1aXYgYyBjJyA9IENoYXIuZXF1YWwgKENoYXIudXBwZXJjYXNlIGMpIChDaGFyLnVwcGVyY2FzZSBjJykgaW5cbiAgICAgICAgZ3JvdXBfYnkgY2hhcnMgfmVxdWl2XG4gICAgICBdfVxuXG4gICAgICBwcm9kdWNlczpcblxuICAgICAge1tcbiAgICAgICAgW1NldC5vZl9saXN0IFsnQSc7J2EnXTsgU2V0LnNpbmdsZXRvbiAnYic7IFNldC5zaW5nbGV0b24gJ2MnXVxuICAgICAgXX1cblxuICAgICAgW2dyb3VwX2J5XSBydW5zIGluIE8obl4yKSB0aW1lLCBzbyBpZiB5b3UgaGF2ZSBhIGNvbXBhcmlzb24gZnVuY3Rpb24sIGl0J3MgdXN1YWxseVxuICAgICAgbXVjaCBmYXN0ZXIgdG8gdXNlIFtTZXQub2ZfbGlzdF0uICopXG4gIHZhbCBncm91cF9ieSA6ICgnYSwgJ2NtcCkgdCAtPiBlcXVpdjooKCdhIC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ2NtcCkgdCBsaXN0XG5cbiAgKCoqIFt0b19zZXF1ZW5jZSB0XSBjb252ZXJ0cyB0aGUgc2V0IFt0XSB0byBhIHNlcXVlbmNlIG9mIHRoZSBlbGVtZW50cyBiZXR3ZWVuXG4gICAgICBbZ3JlYXRlcl9vcl9lcXVhbF90b10gYW5kIFtsZXNzX29yX2VxdWFsX3RvXSBpbmNsdXNpdmUgaW4gdGhlIG9yZGVyIGluZGljYXRlZCBieVxuICAgICAgW29yZGVyXS4gIElmIFtncmVhdGVyX29yX2VxdWFsX3RvID4gbGVzc19vcl9lcXVhbF90b10gdGhlIHNlcXVlbmNlIGlzIGVtcHR5LiAgQ29zdCBpc1xuICAgICAgTyhsb2cgbikgdXAgZnJvbnQgYW5kIGFtb3J0aXplZCBPKDEpIGZvciBlYWNoIGVsZW1lbnQgcHJvZHVjZWQuICopXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nICgqKiBkZWZhdWx0ICopIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgd2hpY2ggZWx0XSByZXR1cm5zIHRoZSBlbGVtZW50IGluIFt0XSBzcGVjaWZpZWQgYnlcbiAgICAgIFtjb21wYXJlXSBhbmQgW3doaWNoXSwgaWYgb25lIGV4aXN0cy5cblxuICAgICAgW3RdIG11c3QgYmUgc29ydGVkIGluIGluY3JlYXNpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIFtjb21wYXJlXSwgd2hlcmUgW2NvbXBhcmVdIGFuZFxuICAgICAgW2VsdF0gZGl2aWRlIFt0XSBpbnRvIHRocmVlIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgIDwgZWx0ICB8ICA9IGVsdCAgfCAgPiBlbHQgIHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSByZXR1cm5zIGFuIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHNlZ21lbnRzIGFzIHNwZWNpZmllZCBieVxuICAgICAgW3doaWNoXS4gIFNlZSB0aGUgZGlhZ3JhbSBiZWxvdyBuZXh0IHRvIHRoZSBbd2hpY2hdIHZhcmlhbnRzLlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbY29tcGFyZV0gb3JkZXJzIFt0XSwgYW5kIGJlaGF2aW9yIGlzXG4gICAgICB1bnNwZWNpZmllZCBpZiBbY29tcGFyZV0gZG9lc24ndCBvcmRlciBbdF0uICBCZWhhdmlvciBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdrZXkgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+IFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuICgqKiAgICAgICAge3YgfCA8IGVsdCBYIHwgICAgICAgICAgICAgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gKCoqICAgICB7diB8ICAgICAgPD0gZWx0ICAgICAgIFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8ICAgPSBlbHQgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgWCA9IGVsdCAgIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvICgqKiB7diAgICAgICAgICAgfCBYICAgICAgID49IGVsdCAgICAgIHwgdn0gKilcbiAgICAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gKCoqICAgIHt2ICAgICAgICAgICAgICAgICAgICAgICB8IFggPiBlbHQgfCB2fSAqKVxuICAgICAgIF1cbiAgICAtPiAna2V5XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIHdoaWNoXSB0YWtlcyBhIFtzZWdtZW50X29mXSBmdW5jdGlvbiB0aGF0XG4gICAgICBkaXZpZGVzIFt0XSBpbnRvIHR3byAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8IHNlZ21lbnRfb2YgZWx0ID0gYExlZnQgfCBzZWdtZW50X29mIGVsdCA9IGBSaWdodCB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIHJldHVybnMgdGhlIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHRoZSBzZWdtZW50cyBhc1xuICAgICAgc3BlY2lmaWVkIGJ5IFt3aGljaF06IFtgTGFzdF9vbl9sZWZ0XSB5aWVsZHMgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgbGVmdCBzZWdtZW50LFxuICAgICAgd2hpbGUgW2BGaXJzdF9vbl9yaWdodF0geWllbGRzIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSByaWdodCBzZWdtZW50LiAgSXQgcmV0dXJuc1xuICAgICAgW05vbmVdIGlmIHRoZSBzZWdtZW50IGlzIGVtcHR5LlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIGRvZXMgbm90IGNoZWNrIHRoYXQgW3NlZ21lbnRfb2ZdIHNlZ21lbnRzIFt0XSBhcyBpbiB0aGVcbiAgICAgIGRpYWdyYW0sIGFuZCBiZWhhdmlvciBpcyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gZG9lc24ndCBzZWdtZW50IFt0XS4gIEJlaGF2aW9yXG4gICAgICBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooKCdhIC0+IFsgYExlZnQgfCBgUmlnaHQgXSlbQGxvY2FsXSlcbiAgICAtPiBbIGBMYXN0X29uX2xlZnQgfCBgRmlyc3Rfb25fcmlnaHQgXVxuICAgIC0+ICdhIG9wdGlvblxuXG4gICgqKiBQcm9kdWNlcyB0aGUgZWxlbWVudHMgb2YgdGhlIHR3byBzZXRzIGJldHdlZW4gW2dyZWF0ZXJfb3JfZXF1YWxfdG9dIGFuZFxuICAgICAgW2xlc3Nfb3JfZXF1YWxfdG9dIGluIFtvcmRlcl0sIG5vdGluZyB3aGV0aGVyIGVhY2ggZWxlbWVudCBhcHBlYXJzIGluIHRoZSBsZWZ0IHNldCxcbiAgICAgIHRoZSByaWdodCBzZXQsIG9yIGJvdGguICBJbiB0aGUgYm90aCBjYXNlLCBib3RoIGVsZW1lbnRzIGFyZSByZXR1cm5lZCwgaW4gY2FzZSB0aGVcbiAgICAgIGNhbGxlciBjYW4gZGlzdGluZ3Vpc2ggYmV0d2VlbiBlbGVtZW50cyB0aGF0IGFyZSBlcXVhbCB0byB0aGUgc2V0cycgY29tcGFyYXRvci4gIFJ1bnNcbiAgICAgIGluIE8obGVuZ3RoIHQgKyBsZW5ndGggdCcpLiAqKVxuICBtb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFNlcXVlbmNlLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnQgPVxuICAgICAgfCBMZWZ0IG9mICdhXG4gICAgICB8IFJpZ2h0IG9mICdiXG4gICAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyAoKiogZGVmYXVsdCAqKSB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYSkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICAoKiogW01dIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBPQ2FtbCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVzOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ19zZXQgPSBTZXQuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3NldCA9IChTdHJpbmcudCwgU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzcykgU2V0LnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtTZXQuTShTdHJpbmcpLnRdIHN1cHBvcnRzIGRlcml2aW5nLCB3aGVyZWFzIHRoZSBzZWNvbmQgc3ludGF4XG4gICAgICBkb2Vzbid0IChiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMsIHNheSwgU3RyaW5nLnNleHBfb2ZfY29tcGFyYXRvcl93aXRuZXNzLFxuICAgICAgaW5zdGVhZCB5b3Ugd291bGQgd2FudCB0byBwYXNzIHRoZSBjb21wYXJhdG9yIGRpcmVjdGx5KS4gKilcbiAgbW9kdWxlIE0gKEVsdCA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZCkgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAoKiogQSBwb2x5bW9ycGhpYyBTZXQuICopXG4gIG1vZHVsZSBQb2x5IDogU19wb2x5IHdpdGggdHlwZSAnZWx0IHQgPSAoJ2VsdCwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gICgqKiBVc2luZyBjb21wYXJhdG9yIGlzIGEgc2ltaWxhciBpbnRlcmZhY2UgYXMgdGhlIHRvcGxldmVsIG9mIFtTZXRdLCBleGNlcHQgdGhlIGZ1bmN0aW9uc1xuICAgICAgdGFrZSBhIFt+Y29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XSB3aGVyZSB0aGUgZnVuY3Rpb25zIGF0IHRoZSB0b3BsZXZlbCBvZlxuICAgICAgW1NldF0gdGFrZXMgYSBbKCdlbHQsICdjbXApIGNvbXBhcmF0b3JdLiAqKVxuICBtb2R1bGUgVXNpbmdfY29tcGFyYXRvciA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSB0ID0gKCdlbHQsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2VsdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdlbHQsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKFNleHAudCAtPiAnZWx0KVxuICAgICAgLT4gU2V4cC50XG4gICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gICAgbW9kdWxlIFRyZWUgOiBzaWdcbiAgICAgICgqKiBBIFtUcmVlLnRdIGNvbnRhaW5zIGp1c3QgdGhlIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCBhIHNldCBpcyBiYXNlZCBvbiwgd2l0aG91dFxuICAgICAgICAgIGluY2x1ZGluZyB0aGUgY29tcGFyYXRvci4gIEFjY29yZGluZ2x5LCBhbnkgb3BlcmF0aW9uIG9uIGEgW1RyZWUudF0gbXVzdCBhbHNvIHRha2VcbiAgICAgICAgICBhcyBhbiBhcmd1bWVudCB0aGUgY29ycmVzcG9uZGluZyBjb21wYXJhdG9yLiAqKVxuICAgICAgdHlwZSAoJ2EsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgIHZhbCBzZXhwX29mX3RcbiAgICAgICAgOiAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICAgIFtAQEBlbmRdXG5cbiAgICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICAgIDogIGNvbXBhcmF0b3I6KCdlbHQsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgICAtPiAoU2V4cC50IC0+ICdlbHQpXG4gICAgICAgIC0+IFNleHAudFxuICAgICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2FcbiAgICAgICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnY1xuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuXG4gICAgICB2YWwgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA6IChfLCBfKSB0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhXG4gICAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aF9jb21wYXJhdG9yLnRcblxuICAgIHZhbCBjb21wYXJhdG9yX3MgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICB2YWwgaGFzaF9mb2xkX2RpcmVjdCA6ICdlbHQgSGFzaC5mb2xkZXIgLT4gKCdlbHQsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAgIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChFbHQgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICAgICAgdmFsIGVtcHR5IDogKCdhIEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kXG4gIGVuZFxuXG4gIHZhbCB0b190cmVlIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcblxuICB2YWwgb2ZfdHJlZVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogezIgTW9kdWxlcyBhbmQgbW9kdWxlIHR5cGVzIGZvciBleHRlbmRpbmcgW1NldF19XG5cbiAgICAgIEZvciB1c2UgaW4gZXh0ZW5zaW9ucyBvZiBCYXNlLCBsaWtlIFtDb3JlXS4gKilcblxuICBtb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gV2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG4gIG1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBXaXRob3V0X2NvbXBhcmF0b3JcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcbiAgbW9kdWxlIHR5cGUgU19wb2x5ID0gU19wb2x5XG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gQWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEVsdF9wbGFpblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgMi4wIGxpY2Vuc2UuIFNlZSAuLi9USElSRC1QQVJUWS50eHQgICopXG4oKiAgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFNldHMgb3ZlciBvcmRlcmVkIHR5cGVzICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTZXRfaW50ZlxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG5cbm1vZHVsZSBUcmVlMCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgRW1wdHlcbiAgICAoKiAoTGVhZiB4KSBpcyB0aGUgc2FtZSBhcyAoTm9kZSAoRW1wdHksIHgsIEVtcHR5LCAxLCAxKSkgYnV0IHVzZXMgbGVzcyBzcGFjZS4gKilcbiAgICB8IExlYWYgb2YgJ2FcbiAgICAoKiBmaXJzdCBpbnQgaXMgaGVpZ2h0LCBzZWNvbmQgaXMgc3ViLXRyZWUgc2l6ZSAqKVxuICAgIHwgTm9kZSBvZiAnYSB0ICogJ2EgKiAnYSB0ICogaW50ICogaW50XG5cbiAgdHlwZSAnYSB0cmVlID0gJ2EgdFxuXG4gICgqIFNldHMgYXJlIHJlcHJlc2VudGVkIGJ5IGJhbGFuY2VkIGJpbmFyeSB0cmVlcyAodGhlIGhlaWdodHMgb2YgdGhlIGNoaWxkcmVuIGRpZmZlciBieVxuICAgICBhdCBtb3N0IDIuICopXG4gIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgOztcblxuICBsZXQgbGVuZ3RoID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudHMgPVxuICAgIGxldCBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB2ID1cbiAgICAgIChtYXRjaCBsb3dlciB3aXRoXG4gICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICB8IFNvbWUgbG93ZXIgLT4gY29tcGFyZV9lbHQgbG93ZXIgdiA8IDApXG4gICAgICAmJlxuICAgICAgbWF0Y2ggdXBwZXIgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgIHwgU29tZSB1cHBlciAtPiBjb21wYXJlX2VsdCB2IHVwcGVyIDwgMFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTGVhZiB2IC0+IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHZcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgaCwgbikgLT5cbiAgICAgICAgbGV0IGhsID0gaGVpZ2h0IGxcbiAgICAgICAgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgICAgYWJzIChobCAtIGhyKSA8PSAyXG4gICAgICAgICYmIGggPSBtYXggaGwgaHIgKyAxXG4gICAgICAgICYmIG4gPSBsZW5ndGggbCArIGxlbmd0aCByICsgMVxuICAgICAgICAmJiBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB2XG4gICAgICAgICYmIGxvb3AgbG93ZXIgKFNvbWUgdikgY29tcGFyZV9lbHQgbFxuICAgICAgICAmJiBsb29wIChTb21lIHYpIHVwcGVyIGNvbXBhcmVfZWx0IHJcbiAgICBpblxuICAgIGZ1biB0IH5jb21wYXJlX2VsdCAtPiBsb29wIE5vbmUgTm9uZSBjb21wYXJlX2VsdCB0XG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgXyB8IE5vZGUgXyAtPiBmYWxzZVxuICA7O1xuXG4gICgqIENyZWF0ZXMgYSBuZXcgbm9kZSB3aXRoIGxlZnQgc29uIGwsIHZhbHVlIHYgYW5kIHJpZ2h0IHNvbiByLlxuICAgICBXZSBtdXN0IGhhdmUgYWxsIGVsZW1lbnRzIG9mIGwgPCB2IDwgYWxsIGVsZW1lbnRzIG9mIHIuXG4gICAgIGwgYW5kIHIgbXVzdCBiZSBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi5cbiAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBoZWlnaHQgZm9yIGJldHRlciBzcGVlZC4gKilcblxuICBsZXQgY3JlYXRlIGwgdiByID1cbiAgICBsZXQgaGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGhyID1cbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGxldCBoID0gaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEgaW5cbiAgICBpZiBoID0gMVxuICAgIHRoZW4gTGVhZiB2XG4gICAgZWxzZSAoXG4gICAgICBsZXQgc2wgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgbGV0IHNyID1cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIE5vZGUgKGwsIHYsIHIsIGgsIHNsICsgc3IgKyAxKSlcbiAgOztcblxuICAoKiBXZSBtdXN0IGNhbGwgW2ZdIHdpdGggaW5jcmVhc2luZyBpbmRleGVzLCBiZWNhdXNlIHRoZSBiaW5fcHJvdCByZWFkZXIgaW5cbiAgICAgQ29yZS5TZXQgbmVlZHMgaXQuICopXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgbiB+ZiBpID1cbiAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgfCAwIC0+IEVtcHR5XG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IGsgPSBmIGkgaW5cbiAgICAgICAgTGVhZiBrXG4gICAgICB8IDIgLT5cbiAgICAgICAgbGV0IGtsID0gZiBpIGluXG4gICAgICAgIGxldCBrID0gZiAoaSArIDEpIGluXG4gICAgICAgIGNyZWF0ZSAoTGVhZiBrbCkgayBFbXB0eVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBrbCA9IGYgaSBpblxuICAgICAgICBsZXQgayA9IGYgKGkgKyAxKSBpblxuICAgICAgICBsZXQga3IgPSBmIChpICsgMikgaW5cbiAgICAgICAgY3JlYXRlIChMZWFmIGtsKSBrIChMZWFmIGtyKVxuICAgICAgfCBuIC0+XG4gICAgICAgIGxldCBsZWZ0X2xlbmd0aCA9IG4gbHNyIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X2xlbmd0aCA9IG4gLSBsZWZ0X2xlbmd0aCAtIDEgaW5cbiAgICAgICAgbGV0IGxlZnQgPSBsb29wIGxlZnRfbGVuZ3RoIH5mIGkgaW5cbiAgICAgICAgbGV0IGsgPSBmIChpICsgbGVmdF9sZW5ndGgpIGluXG4gICAgICAgIGxldCByaWdodCA9IGxvb3AgcmlnaHRfbGVuZ3RoIH5mIChpICsgbGVmdF9sZW5ndGggKyAxKSBpblxuICAgICAgICBjcmVhdGUgbGVmdCBrIHJpZ2h0XG4gICAgaW5cbiAgICBsb29wIGxlbiB+ZiAwXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgYXJyYXlfbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGFycmF5IGluXG4gICAgbGV0IG5leHQgPVxuICAgICAgKCogV2UgZG9uJ3QgY2hlY2sgaWYgdGhlIGFycmF5IGlzIHNvcnRlZCBvciBrZXlzIGFyZSBkdXBsaWNhdGVkLCBiZWNhdXNlIHRoYXRcbiAgICAgICAgIGNoZWNraW5nIGlzIHNsb3dlciB0aGFuIHRoZSB3aG9sZSBbb2Zfc29ydGVkX2FycmF5XSBmdW5jdGlvbiAqKVxuICAgICAgaWYgYXJyYXlfbGVuZ3RoIDwgMiB8fCBjb21wYXJlX2VsdCBhcnJheS4oMCkgYXJyYXkuKDEpIDwgMFxuICAgICAgdGhlbiBmdW4gaSAtPiBhcnJheS4oaSlcbiAgICAgIGVsc2UgZnVuIGkgLT4gYXJyYXkuKGFycmF5X2xlbmd0aCAtIDEgLSBpKVxuICAgIGluXG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbjphcnJheV9sZW5ndGggfmY6bmV4dFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBhcnJheSB3aXRoXG4gICAgfCBbfHxdIHwgW3wgXyB8XSAtPiBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0KVxuICAgIHwgXyAtPlxuICAgICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICAgIGxldCBpbmNyZWFzaW5nID1cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2VsdCBhcnJheS4oMCkgYXJyYXkuKDEpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPiBpIDwgMFxuICAgICAgICBpblxuICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIGFycmF5IC0gMiBkb1xuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfZWx0IGFycmF5LihpKSBhcnJheS4oaSArIDEpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPlxuICAgICAgICAgICAgaWYgUG9seS4oIDw+ICkgKGkgPCAwKSBpbmNyZWFzaW5nXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGVsZW1lbnRzIGFyZSBub3Qgb3JkZXJlZFwiKVxuICAgICAgICBkb25lO1xuICAgICAgICBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0KSlcbiAgOztcblxuICAoKiBTYW1lIGFzIGNyZWF0ZSwgYnV0IHBlcmZvcm1zIG9uZSBzdGVwIG9mIHJlYmFsYW5jaW5nIGlmIG5lY2Vzc2FyeS5cbiAgICAgQXNzdW1lcyBsIGFuZCByIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAzLlxuICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGNyZWF0ZSBmb3IgYmV0dGVyIHNwZWVkIGluIHRoZSBtb3N0IGZyZXF1ZW50IGNhc2VcbiAgICAgd2hlcmUgbm8gcmViYWxhbmNpbmcgaXMgcmVxdWlyZWQuICopXG5cbiAgbGV0IGJhbCBsIHYgciA9XG4gICAgbGV0IGhsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGxldCBociA9XG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGJlY2F1c2UgaChsKT5oKHIpKzIgYW5kIGgobGVhZik9MSAqKVxuICAgICAgfCBOb2RlIChsbCwgbHYsIGxyLCBfLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyXG4gICAgICAgIHRoZW4gY3JlYXRlIGxsIGx2IChjcmVhdGUgbHIgdiByKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IExlYWYgbHJ2IC0+XG4gICAgICAgICAgICBhc3NlcnQgKGlzX2VtcHR5IGxsKTtcbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IEVtcHR5KSBscnYgKGNyZWF0ZSBFbXB0eSB2IHIpXG4gICAgICAgICAgfCBOb2RlIChscmwsIGxydiwgbHJyLCBfLCBfKSAtPiBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBscmwpIGxydiAoY3JlYXRlIGxyciB2IHIpKSlcbiAgICBlbHNlIGlmIGhyID4gaGwgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogYmVjYXVzZSBoKHIpPmgobCkrMiBhbmQgaChsZWFmKT0xICopXG4gICAgICB8IE5vZGUgKHJsLCBydiwgcnIsIF8sIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmxcbiAgICAgICAgdGhlbiBjcmVhdGUgKGNyZWF0ZSBsIHYgcmwpIHJ2IHJyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTGVhZiBybHYgLT5cbiAgICAgICAgICAgIGFzc2VydCAoaXNfZW1wdHkgcnIpO1xuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IEVtcHR5KSBybHYgKGNyZWF0ZSBFbXB0eSBydiBycilcbiAgICAgICAgICB8IE5vZGUgKHJsbCwgcmx2LCBybHIsIF8sIF8pIC0+IGNyZWF0ZSAoY3JlYXRlIGwgdiBybGwpIHJsdiAoY3JlYXRlIHJsciBydiBycikpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGggPSBpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSBpblxuICAgICAgbGV0IHNsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIGxldCBzciA9XG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBpZiBoID0gMSB0aGVuIExlYWYgdiBlbHNlIE5vZGUgKGwsIHYsIHIsIGgsIHNsICsgc3IgKyAxKSlcbiAgOztcblxuICAoKiBJbnNlcnRpb24gb2Ygb25lIGVsZW1lbnQgKilcblxuICBleGNlcHRpb24gU2FtZVxuXG4gIGxldCBhZGQgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBMZWFmIHhcbiAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFNhbWVcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIGNyZWF0ZSAoTGVhZiB4KSB2IEVtcHR5XG4gICAgICAgIGVsc2UgY3JlYXRlIEVtcHR5IHYgKExlYWYgeClcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gYmFsIChhdXggbCkgdiByXG4gICAgICAgIGVsc2UgYmFsIGwgdiAoYXV4IHIpXG4gICAgaW5cbiAgICB0cnkgYXV4IHQgd2l0aFxuICAgIHwgU2FtZSAtPiB0XG4gIDs7XG5cbiAgKCogc3BlY2lhbGl6YXRpb24gb2YgW2FkZF0gdGhhdCBhc3N1bWVzIHRoYXQgW3hdIGlzIGxlc3MgdGhhbiBhbGwgZXhpc3RpbmcgZWxlbWVudHMgKilcbiAgbGV0IHJlYyBhZGRfbWluIHggdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBMZWFmIHhcbiAgICB8IExlYWYgXyAtPiBOb2RlIChFbXB0eSwgeCwgdCwgMiwgMilcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGJhbCAoYWRkX21pbiB4IGwpIHYgclxuICA7O1xuXG4gICgqIHNwZWNpYWxpemF0aW9uIG9mIFthZGRdIHRoYXQgYXNzdW1lcyB0aGF0IFt4XSBpcyBncmVhdGVyIHRoYW4gYWxsIGV4aXN0aW5nIGVsZW1lbnRzICopXG4gIGxldCByZWMgYWRkX21heCB0IHggPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTGVhZiB4XG4gICAgfCBMZWFmIF8gLT4gTm9kZSAodCwgeCwgRW1wdHksIDIsIDIpXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBiYWwgbCB2IChhZGRfbWF4IHIgeClcbiAgOztcblxuICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmRcbiAgICAgci4gKilcbiAgbGV0IHJlYyBqb2luIGwgdiByID1cbiAgICBtYXRjaCBsLCByIHdpdGhcbiAgICB8IEVtcHR5LCBfIC0+IGFkZF9taW4gdiByXG4gICAgfCBfLCBFbXB0eSAtPiBhZGRfbWF4IGwgdlxuICAgIHwgTGVhZiBsdiwgXyAtPiBhZGRfbWluIGx2IChhZGRfbWluIHYgcilcbiAgICB8IF8sIExlYWYgcnYgLT4gYWRkX21heCAoYWRkX21heCBsIHYpIHJ2XG4gICAgfCBOb2RlIChsbCwgbHYsIGxyLCBsaCwgXyksIE5vZGUgKHJsLCBydiwgcnIsIHJoLCBfKSAtPlxuICAgICAgaWYgbGggPiByaCArIDJcbiAgICAgIHRoZW4gYmFsIGxsIGx2IChqb2luIGxyIHYgcilcbiAgICAgIGVsc2UgaWYgcmggPiBsaCArIDJcbiAgICAgIHRoZW4gYmFsIChqb2luIGwgdiBybCkgcnYgcnJcbiAgICAgIGVsc2UgY3JlYXRlIGwgdiByXG4gIDs7XG5cbiAgKCogU21hbGxlc3QgYW5kIGdyZWF0ZXN0IGVsZW1lbnQgb2YgYSBzZXQgKilcbiAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiB8IE5vZGUgKEVtcHR5LCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcbiAgICB8IE5vZGUgKGwsIF8sIF8sIF8sIF8pIC0+IG1pbl9lbHQgbFxuICA7O1xuXG4gIGV4Y2VwdGlvbiBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcInNldC5tbC5UcmVlMC5TZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGV4Y2VwdGlvbiBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0XVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcInNldC5tbC5UcmVlMC5TZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCBtaW5fZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtaW5fZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBmb2xkX3VudGlsX2hlbHBlciB+ZiB0IGFjYyA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AuQ29udGludWUgYWNjXG4gICAgICB8IExlYWYgdmFsdWUgLT4gZiBhY2MgdmFsdWUgW0Bub250YWlsXVxuICAgICAgfCBOb2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIChtYXRjaCBmb2xkX3VudGlsX2hlbHBlciB+ZiBsZWZ0IGFjYyB3aXRoXG4gICAgICAgICB8IFN0b3AgX2EgYXMgeCAtPiB4XG4gICAgICAgICB8IENvbnRpbnVlIGFjYyAtPlxuICAgICAgICAgICAobWF0Y2ggZiBhY2MgdmFsdWUgd2l0aFxuICAgICAgICAgICAgfCBTdG9wIF9hIGFzIHggLT4geFxuICAgICAgICAgICAgfCBDb250aW51ZSBhIC0+IGZvbGRfdW50aWxfaGVscGVyIH5mIHJpZ2h0IGEpKVxuICAgIGluXG4gICAgbWF0Y2ggZm9sZF91bnRpbF9oZWxwZXIgfmYgdCBpbml0IHdpdGhcbiAgICB8IENvbnRpbnVlIHggLT4gZmluaXNoIHggW0Bub250YWlsXVxuICAgIHwgU3RvcCB4IC0+IHhcbiAgOztcblxuICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IHwgTm9kZSAoXywgdiwgRW1wdHksIF8sIF8pIC0+IFNvbWUgdlxuICAgIHwgTm9kZSAoXywgXywgciwgXywgXykgLT4gbWF4X2VsdCByXG4gIDs7XG5cbiAgbGV0IG1heF9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1heF9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgKCogUmVtb3ZlIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBnaXZlbiBzZXQgKilcblxuICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LnJlbW92ZV9taW5fZWx0XCJcbiAgICB8IExlYWYgXyAtPiBFbXB0eVxuICAgIHwgTm9kZSAoRW1wdHksIF8sIHIsIF8sIF8pIC0+IHJcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgdiByXG4gIDs7XG5cbiAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgIEFzc3VtZSB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLiAqKVxuICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+IGJhbCB0MSAobWluX2VsdF9leG4gdDIpIChyZW1vdmVfbWluX2VsdCB0MilcbiAgOztcblxuICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS4gIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+IGpvaW4gdDEgKG1pbl9lbHRfZXhuIHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgc3BsaXQgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRW1wdHksIE5vbmUsIEVtcHR5XG4gICAgICB8IExlYWYgdiAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIEVtcHR5LCBTb21lIHYsIEVtcHR5XG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBFbXB0eSwgTm9uZSwgTGVhZiB2XG4gICAgICAgIGVsc2UgTGVhZiB2LCBOb25lLCBFbXB0eVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIGwsIFNvbWUgdiwgclxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsbCwgbWF5YmVfZWx0LCBybCA9IHNwbGl0IGwgaW5cbiAgICAgICAgICBsbCwgbWF5YmVfZWx0LCBqb2luIHJsIHYgcilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGxyLCBtYXliZV9lbHQsIHJyID0gc3BsaXQgciBpblxuICAgICAgICAgIGpvaW4gbCB2IGxyLCBtYXliZV9lbHQsIHJyKVxuICAgIGluXG4gICAgc3BsaXQgdFxuICA7O1xuXG4gIGxldCByZWMgc3BsaXRfbGVfZ3QgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eSwgRW1wdHlcbiAgICB8IExlYWYgdiAtPiBpZiBjb21wYXJlX2VsdCB4IHYgPj0gMCB0aGVuIExlYWYgdiwgRW1wdHkgZWxzZSBFbXB0eSwgTGVhZiB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIGFkZF9tYXggbCB2LCByXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGxsLCBybCA9IHNwbGl0X2xlX2d0IGwgeCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgbGwsIGpvaW4gcmwgdiByKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsciwgcnIgPSBzcGxpdF9sZV9ndCByIHggfmNvbXBhcmVfZWx0IGluXG4gICAgICAgIGpvaW4gbCB2IGxyLCBycilcbiAgOztcblxuICBsZXQgcmVjIHNwbGl0X2x0X2dlIHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHksIEVtcHR5XG4gICAgfCBMZWFmIHYgLT4gaWYgY29tcGFyZV9lbHQgeCB2ID4gMCB0aGVuIExlYWYgdiwgRW1wdHkgZWxzZSBFbXB0eSwgTGVhZiB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIGwsIGFkZF9taW4gdiByXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGxsLCBybCA9IHNwbGl0X2x0X2dlIGwgeCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgbGwsIGpvaW4gcmwgdiByKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsciwgcnIgPSBzcGxpdF9sdF9nZSByIHggfmNvbXBhcmVfZWx0IGluXG4gICAgICAgIGpvaW4gbCB2IGxyLCBycilcbiAgOztcblxuICAoKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2V0IG9wZXJhdGlvbnMgKilcblxuICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gIGxldCByZWMgbWVtIHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gZmFsc2VcbiAgICB8IExlYWYgdiAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgIGMgPSAwXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgIGMgPSAwIHx8IG1lbSAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcikgeCB+Y29tcGFyZV9lbHRcbiAgOztcblxuICBsZXQgc2luZ2xldG9uIHggPSBMZWFmIHhcblxuICBsZXQgcmVtb3ZlIHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgYXV4IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBTYW1lXG4gICAgICB8IExlYWYgdiAtPiBpZiBjb21wYXJlX2VsdCB4IHYgPSAwIHRoZW4gRW1wdHkgZWxzZSBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgciBlbHNlIGlmIGMgPCAwIHRoZW4gYmFsIChhdXggbCkgdiByIGVsc2UgYmFsIGwgdiAoYXV4IHIpXG4gICAgaW5cbiAgICB0cnkgYXV4IHQgd2l0aFxuICAgIHwgU2FtZSAtPiB0XG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9pbmRleCB0IGkgfmNvbXBhcmVfZWx0Ol8gPVxuICAgIGxldCByZWMgYXV4IHQgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFNhbWVcbiAgICAgIHwgTGVhZiBfIC0+IGlmIGkgPSAwIHRoZW4gRW1wdHkgZWxzZSBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbF9zaXplID0gbGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGMgPSBQb2x5LmNvbXBhcmUgaSBsX3NpemUgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIGJhbCAoYXV4IGwgaSkgdiByXG4gICAgICAgIGVsc2UgYmFsIGwgdiAoYXV4IHIgKGkgLSBsX3NpemUgLSAxKSlcbiAgICBpblxuICAgIHRyeSBhdXggdCBpIHdpdGhcbiAgICB8IFNhbWUgLT4gdFxuICA7O1xuXG4gIGxldCB1bmlvbiBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgdW5pb24gczEgczIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBzMVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICAgIHwgRW1wdHksIHQgfCB0LCBFbXB0eSAtPiB0XG4gICAgICAgIHwgTGVhZiB2MSwgXyAtPiB1bmlvbiAoTm9kZSAoRW1wdHksIHYxLCBFbXB0eSwgMSwgMSkpIHMyXG4gICAgICAgIHwgXywgTGVhZiB2MiAtPiB1bmlvbiBzMSAoTm9kZSAoRW1wdHksIHYyLCBFbXB0eSwgMSwgMSkpXG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgaDEsIF8pLCBOb2RlIChsMiwgdjIsIHIyLCBoMiwgXykgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMlxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIGlmIGgyID0gMVxuICAgICAgICAgICAgdGhlbiBhZGQgczEgdjIgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGwyLCBfLCByMiA9IHNwbGl0IHMyIHYxIH5jb21wYXJlX2VsdCBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjEgKHVuaW9uIHIxIHIyKSlcbiAgICAgICAgICBlbHNlIGlmIGgxID0gMVxuICAgICAgICAgIHRoZW4gYWRkIHMyIHYxIH5jb21wYXJlX2VsdFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGwxLCBfLCByMSA9IHNwbGl0IHMxIHYyIH5jb21wYXJlX2VsdCBpblxuICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYyICh1bmlvbiByMSByMikpKVxuICAgIGluXG4gICAgdW5pb24gczEgczJcbiAgOztcblxuICBsZXQgdW5pb25fbGlzdCB+Y29tcGFyYXRvciB+dG9fdHJlZSB4cyA9XG4gICAgbGV0IGNvbXBhcmVfZWx0ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICBMaXN0LmZvbGQgeHMgfmluaXQ6ZW1wdHkgfmY6KGZ1biBhYyB4IC0+IHVuaW9uIGFjICh0b190cmVlIHgpIH5jb21wYXJlX2VsdClcbiAgOztcblxuICBsZXQgaW50ZXIgczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGludGVyIHMxIHMyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gczFcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgICB8IEVtcHR5LCBfIHwgXywgRW1wdHkgLT4gRW1wdHlcbiAgICAgICAgfCAoTGVhZiBlbHQgYXMgc2luZ2xldG9uKSwgb3RoZXJfc2V0IHwgb3RoZXJfc2V0LCAoTGVhZiBlbHQgYXMgc2luZ2xldG9uKSAtPlxuICAgICAgICAgIGlmIG1lbSBvdGhlcl9zZXQgZWx0IH5jb21wYXJlX2VsdCB0aGVuIHNpbmdsZXRvbiBlbHNlIEVtcHR5XG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICAgICAgKG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+IGNvbmNhdCAoaW50ZXIgbDEgbDIpIChpbnRlciByMSByMilcbiAgICAgICAgICAgfCBsMiwgU29tZSB2MSwgcjIgLT4gam9pbiAoaW50ZXIgbDEgbDIpIHYxIChpbnRlciByMSByMikpKVxuICAgIGluXG4gICAgaW50ZXIgczEgczJcbiAgOztcblxuICBsZXQgZGlmZiBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgZGlmZiBzMSBzMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIEVtcHR5XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgXyAtPiBFbXB0eVxuICAgICAgICB8IHQxLCBFbXB0eSAtPiB0MVxuICAgICAgICB8IExlYWYgdjEsIHQyIC0+IGRpZmYgKE5vZGUgKEVtcHR5LCB2MSwgRW1wdHksIDEsIDEpKSB0MlxuICAgICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCB0MiAtPlxuICAgICAgICAgIChtYXRjaCBzcGxpdCB0MiB2MSB+Y29tcGFyZV9lbHQgd2l0aFxuICAgICAgICAgICB8IGwyLCBOb25lLCByMiAtPiBqb2luIChkaWZmIGwxIGwyKSB2MSAoZGlmZiByMSByMilcbiAgICAgICAgICAgfCBsMiwgU29tZSBfLCByMiAtPiBjb25jYXQgKGRpZmYgbDEgbDIpIChkaWZmIHIxIHIyKSkpXG4gICAgaW5cbiAgICBkaWZmIHMxIHMyXG4gIDs7XG5cbiAgbW9kdWxlIEVudW0gPSBzdHJ1Y3RcbiAgICB0eXBlIGluY3JlYXNpbmdcbiAgICB0eXBlIGRlY3JlYXNpbmdcblxuICAgIHR5cGUgKCdhLCAnZGlyZWN0aW9uKSB0ID1cbiAgICAgIHwgRW5kXG4gICAgICB8IE1vcmUgb2YgJ2EgKiAnYSB0cmVlICogKCdhLCAnZGlyZWN0aW9uKSB0XG5cbiAgICBsZXQgcmVjIGNvbnMgcyAoZSA6IChfLCBpbmNyZWFzaW5nKSB0KSA6IChfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgdiAtPiBNb3JlICh2LCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gY29ucyBsIChNb3JlICh2LCByLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBjb25zX3JpZ2h0IHMgKGUgOiAoXywgZGVjcmVhc2luZykgdCkgOiAoXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmIHYgLT4gTW9yZSAodiwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGNvbnNfcmlnaHQgciAoTW9yZSAodiwgbCwgZSkpXG4gICAgOztcblxuICAgIGxldCBvZl9zZXQgcyA6IChfLCBpbmNyZWFzaW5nKSB0ID0gY29ucyBzIEVuZFxuICAgIGxldCBvZl9zZXRfcmlnaHQgcyA6IChfLCBkZWNyZWFzaW5nKSB0ID0gY29uc19yaWdodCBzIEVuZFxuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiB2IC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBFbXB0eSwgMSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChfLCB2LCByLCBfLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPCAwIC0+IGxvb3AgciBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gbG9vcCBsIChNb3JlICh2LCByLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBzdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgdiAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgRW1wdHksIDEsIDEpKSBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgXywgXywgXykgd2hlbiBjb21wYXJlIHYga2V5ID4gMCAtPiBsb29wIGwgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGxvb3AgciAoTW9yZSAodiwgbCwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgY29tcGFyZSBjb21wYXJlX2VsdCBlMSBlMiA9XG4gICAgICBsZXQgcmVjIGxvb3AgZTEgZTIgPVxuICAgICAgICBtYXRjaCBlMSwgZTIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgICAgfCBFbmQsIF8gLT4gLTFcbiAgICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgICB8IE1vcmUgKHYxLCByMSwgZTEpLCBNb3JlICh2MiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIGlmIHBoeXNfZXF1YWwgcjEgcjJcbiAgICAgICAgICB0aGVuIGxvb3AgZTEgZTJcbiAgICAgICAgICBlbHNlIGxvb3AgKGNvbnMgcjEgZTEpIChjb25zIHIyIGUyKVxuICAgICAgaW5cbiAgICAgIGxvb3AgZTEgZTJcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBpdGVyIH5mID0gZnVuY3Rpb25cbiAgICAgIHwgRW5kIC0+ICgpXG4gICAgICB8IE1vcmUgKGEsIHRyZWUsIGVudW0pIC0+XG4gICAgICAgIGYgYTtcbiAgICAgICAgaXRlciAoY29ucyB0cmVlIGVudW0pIH5mXG4gICAgOztcblxuICAgIGxldCBpdGVyMiBjb21wYXJlX2VsdCB0MSB0MiB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+ICgpXG4gICAgICAgIHwgRW5kLCBfIC0+IGl0ZXIgdDIgfmY6KGZ1biBhIC0+IGYgKGBSaWdodCBhKSkgW0Bub250YWlsXVxuICAgICAgICB8IF8sIEVuZCAtPiBpdGVyIHQxIH5mOihmdW4gYSAtPiBmIChgTGVmdCBhKSkgW0Bub250YWlsXVxuICAgICAgICB8IE1vcmUgKGExLCB0cmVlMSwgZW51bTEpLCBNb3JlIChhMiwgdHJlZTIsIGVudW0yKSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IGExIGEyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBmIChgQm90aCAoYTEsIGEyKSk7XG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSAoY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGYgKGBMZWZ0IGExKTtcbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIHQyKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgZiAoYFJpZ2h0IGEyKTtcbiAgICAgICAgICAgIGxvb3AgdDEgKGNvbnMgdHJlZTIgZW51bTIpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDIgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfZWx0ID1cbiAgICAgIGxldCBzdGVwIHN0YXRlIDogKChfLCBfKSBFaXRoZXIudCwgXykgU2VxdWVuY2UuU3RlcC50ID1cbiAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IERvbmVcbiAgICAgICAgfCBFbmQsIE1vcmUgKGVsdCwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gU2Vjb25kIGVsdDsgc3RhdGUgPSBFbmQsIGNvbnMgdHJlZSBlbnVtIH1cbiAgICAgICAgfCBNb3JlIChlbHQsIHRyZWUsIGVudW0pLCBFbmQgLT5cbiAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gRmlyc3QgZWx0OyBzdGF0ZSA9IGNvbnMgdHJlZSBlbnVtLCBFbmQgfVxuICAgICAgICB8IChNb3JlIChhMSwgdHJlZTEsIGVudW0xKSBhcyBsZWZ0KSwgKE1vcmUgKGEyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IGExIGEyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dF9zdGF0ZSA9XG4gICAgICAgICAgICAgIGlmIHBoeXNfZXF1YWwgdHJlZTEgdHJlZTJcbiAgICAgICAgICAgICAgdGhlbiBlbnVtMSwgZW51bTJcbiAgICAgICAgICAgICAgZWxzZSBjb25zIHRyZWUxIGVudW0xLCBjb25zIHRyZWUyIGVudW0yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU2tpcCB7IHN0YXRlID0gbmV4dF9zdGF0ZSB9KVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiBZaWVsZCB7IHZhbHVlID0gRmlyc3QgYTE7IHN0YXRlID0gY29ucyB0cmVlMSBlbnVtMSwgcmlnaHQgfVxuICAgICAgICAgIGVsc2UgWWllbGQgeyB2YWx1ZSA9IFNlY29uZCBhMjsgc3RhdGUgPSBsZWZ0LCBjb25zIHRyZWUyIGVudW0yIH1cbiAgICAgIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDoob2Zfc2V0IHQxLCBvZl9zZXQgdDIpIH5mOnN0ZXBcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdCB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB0LCBlKSAtPiBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrOyBzdGF0ZSA9IEVudW0uY29ucyB0IGUgfVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9lbHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2Zfc2V0IHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdCwgZSkgLT5cbiAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gazsgc3RhdGUgPSBFbnVtLmNvbnNfcmlnaHQgdCBlIH1cbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fZWx0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3NldF9yaWdodCB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZVxuICAgICAgICBjb21wYXJhdG9yXG4gICAgICAgID8ob3JkZXIgPSBgSW5jcmVhc2luZylcbiAgICAgICAgP2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgICAgP2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgaW5jbHVzaXZlX2JvdW5kIHNpZGUgdCBib3VuZCA9XG4gICAgICBsZXQgY29tcGFyZV9lbHQgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgICAgbGV0IGwsIG1heWJlLCByID0gc3BsaXQgdCBib3VuZCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgIGxldCB0ID0gc2lkZSAobCwgcikgaW5cbiAgICAgIG1hdGNoIG1heWJlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0XG4gICAgICB8IFNvbWUgZWx0IC0+IGFkZCB0IGVsdCB+Y29tcGFyZV9lbHRcbiAgICBpblxuICAgIG1hdGNoIG9yZGVyIHdpdGhcbiAgICB8IGBJbmNyZWFzaW5nIC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGxlc3Nfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIGZzdCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQ6Z3JlYXRlcl9vcl9lcXVhbF90byB0XG4gICAgfCBgRGVjcmVhc2luZyAtPlxuICAgICAgbGV0IHQgPSBPcHRpb24uZm9sZCBncmVhdGVyX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBzbmQpIGluXG4gICAgICB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0Omxlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG5cbiAgbGV0IHJlYyBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgZiB2IHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGlmIGYgdlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyBsIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgdlxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyByIH5mXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgciB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIHZcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2xhc3Rfc2F0aXNmeWluZyBsIH5mXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPlxuICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPCAwKSBbQG5vbnRhaWxdXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApIFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA+PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIHggYXMgZWx0IHdoZW4gY29tcGFyZSB4IHYgPSAwIC0+IGVsdFxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYExhc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIHggYXMgZWx0IHdoZW4gY29tcGFyZSB4IHYgPSAwIC0+IGVsdFxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApIFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA+IDApIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGxldCBpc19sZWZ0IHggPVxuICAgICAgbWF0Y2ggc2VnbWVudF9vZiB4IHdpdGhcbiAgICAgIHwgYExlZnQgLT4gdHJ1ZVxuICAgICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgICBpblxuICAgIGxldCBpc19yaWdodCB4ID0gbm90IChpc19sZWZ0IHgpIGluXG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X29uX2xlZnQgLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+Zjppc19sZWZ0IFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9vbl9yaWdodCAtPiBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Zjppc19yaWdodCBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgICAgIGNvbXBhcmF0b3JcbiAgICAgICAgPyhvcmRlciA9IGBJbmNyZWFzaW5nKVxuICAgICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgICA/bGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgICAgIHQnXG4gICAgPVxuICAgIFNlcXVlbmNlLm1lcmdlX3dpdGhfZHVwbGljYXRlc1xuICAgICAgKHRvX3NlcXVlbmNlIGNvbXBhcmF0b3Igfm9yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQpXG4gICAgICAodG9fc2VxdWVuY2UgY29tcGFyYXRvciB+b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCcpXG4gICAgICB+Y29tcGFyZTpcbiAgICAgICAgKG1hdGNoIG9yZGVyIHdpdGhcbiAgICAgICAgIHwgYEluY3JlYXNpbmcgLT4gY29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgICB8IGBEZWNyZWFzaW5nIC0+IEZuLmZsaXAgY29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfZWx0IHMxIHMyID1cbiAgICBFbnVtLmNvbXBhcmUgY29tcGFyZV9lbHQgKEVudW0ub2Zfc2V0IHMxKSAoRW51bS5vZl9zZXQgczIpXG4gIDs7XG5cbiAgbGV0IGl0ZXIyIHMxIHMyIH5jb21wYXJlX2VsdCB+ZiA9XG4gICAgRW51bS5pdGVyMiBjb21wYXJlX2VsdCAoRW51bS5vZl9zZXQgczEpIChFbnVtLm9mX3NldCBzMikgfmZcbiAgOztcblxuICBsZXQgZXF1YWwgczEgczIgfmNvbXBhcmVfZWx0ID0gY29tcGFyZSBjb21wYXJlX2VsdCBzMSBzMiA9IDBcblxuICBsZXQgaXNfc3Vic2V0IHMxIH5vZl86czIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGlzX3N1YnNldCBzMSB+b2ZfOnMyID1cbiAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICB8IEVtcHR5LCBfIC0+IHRydWVcbiAgICAgIHwgXywgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTGVhZiB2MSwgdDIgLT4gbWVtIHQyIHYxIH5jb21wYXJlX2VsdFxuICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgTGVhZiB2MiAtPlxuICAgICAgICAobWF0Y2ggbDEsIHIxIHdpdGhcbiAgICAgICAgIHwgRW1wdHksIEVtcHR5IC0+XG4gICAgICAgICAgICgqIFRoaXMgY2FzZSBzaG91bGRuJ3Qgb2NjdXIgaW4gcHJhY3RpY2UgYmVjYXVzZSB3ZSBzaG91bGQgaGF2ZSBjb25zdHJ1Y3RlZFxuICAgICAgICAgICAgICBhIExlYWYgcmF0aGVyIHRoYW4gYSBOb2RlIHdpdGggdHdvIEVtcHR5IHN1YnRyZWVzICopXG4gICAgICAgICAgIGNvbXBhcmVfZWx0IHYxIHYyID0gMFxuICAgICAgICAgfCBfLCBfIC0+IGZhbHNlKVxuICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgKE5vZGUgKGwyLCB2MiwgcjIsIF8sIF8pIGFzIHQyKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHYxIHYyIGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBwaHlzX2VxdWFsIHMxIHMyIHx8IChpc19zdWJzZXQgbDEgfm9mXzpsMiAmJiBpc19zdWJzZXQgcjEgfm9mXzpyMilcbiAgICAgICAgICAoKiBOb3RlIHRoYXQgaGVpZ2h0IGFuZCBzaXplIGRvbid0IG1hdHRlciBoZXJlLiAqKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gaXNfc3Vic2V0IChOb2RlIChsMSwgdjEsIEVtcHR5LCAwLCAwKSkgfm9mXzpsMiAmJiBpc19zdWJzZXQgcjEgfm9mXzp0MlxuICAgICAgICBlbHNlIGlzX3N1YnNldCAoTm9kZSAoRW1wdHksIHYxLCByMSwgMCwgMCkpIH5vZl86cjIgJiYgaXNfc3Vic2V0IGwxIH5vZl86dDJcbiAgICBpblxuICAgIGlzX3N1YnNldCBzMSB+b2ZfOnMyXG4gIDs7XG5cbiAgbGV0IHJlYyBhcmVfZGlzam9pbnQgczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgIHwgRW1wdHksIF8gfCBfLCBFbXB0eSAtPiB0cnVlXG4gICAgfCBMZWFmIGVsdCwgb3RoZXJfc2V0IHwgb3RoZXJfc2V0LCBMZWFmIGVsdCAtPiBub3QgKG1lbSBvdGhlcl9zZXQgZWx0IH5jb21wYXJlX2VsdClcbiAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCB0MiAtPlxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBmYWxzZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+XG4gICAgICAgICAgYXJlX2Rpc2pvaW50IGwxIGwyIH5jb21wYXJlX2VsdCAmJiBhcmVfZGlzam9pbnQgcjEgcjIgfmNvbXBhcmVfZWx0XG4gICAgICAgIHwgXywgU29tZSBfLCBfIC0+IGZhbHNlKVxuICA7O1xuXG4gIGxldCBpdGVyIHQgfmYgPVxuICAgIGxldCByZWMgaXRlciA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICB8IExlYWYgdiAtPiBmIHZcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgaXRlciBsO1xuICAgICAgICBmIHY7XG4gICAgICAgIGl0ZXIgclxuICAgIGluXG4gICAgaXRlciB0IFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgPSBFbnVtLnN5bW1ldHJpY19kaWZmXG5cbiAgbGV0IHJlYyBmb2xkIHMgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmIHYgLT4gZiBhY2N1IHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGZvbGQgfmYgciB+aW5pdDooZiAoZm9sZCB+ZiBsIH5pbml0OmFjY3UpIHYpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfZWxlbSBzdGF0ZSB0ID1cbiAgICBmb2xkIHQgfmluaXQ6KGhhc2hfZm9sZF9pbnQgc3RhdGUgKGxlbmd0aCB0KSkgfmY6aGFzaF9mb2xkX2VsZW1cbiAgOztcblxuICBsZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG4gIGxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcblxuICBsZXQgcmVjIGZvbGRfcmlnaHQgcyB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiBmIHYgYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZm9sZF9yaWdodCB+ZiBsIH5pbml0OihmIHYgKGZvbGRfcmlnaHQgfmYgciB+aW5pdDphY2N1KSlcbiAgOztcblxuICBsZXQgcmVjIGZvcl9hbGwgdCB+ZjpwID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgdiAtPiBwIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IHAgdiAmJiBmb3JfYWxsIH5mOnAgbCAmJiBmb3JfYWxsIH5mOnAgclxuICA7O1xuXG4gIGxldCByZWMgZXhpc3RzIHQgfmY6cCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBmYWxzZVxuICAgIHwgTGVhZiB2IC0+IHAgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gcCB2IHx8IGV4aXN0cyB+ZjpwIGwgfHwgZXhpc3RzIH5mOnAgclxuICA7O1xuXG4gIGxldCBmaWx0ZXIgcyB+ZjpwID1cbiAgICBsZXQgcmVjIGZpbHQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBMZWFmIHYgYXMgdCAtPiBpZiBwIHYgdGhlbiB0IGVsc2UgRW1wdHlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgYXMgdCAtPlxuICAgICAgICBsZXQgbCcgPSBmaWx0IGwgaW5cbiAgICAgICAgbGV0IGtlZXBfdiA9IHAgdiBpblxuICAgICAgICBsZXQgcicgPSBmaWx0IHIgaW5cbiAgICAgICAgaWYga2VlcF92ICYmIHBoeXNfZXF1YWwgbCBsJyAmJiBwaHlzX2VxdWFsIHIgcidcbiAgICAgICAgdGhlbiB0XG4gICAgICAgIGVsc2UgaWYga2VlcF92XG4gICAgICAgIHRoZW4gam9pbiBsJyB2IHInXG4gICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG4gICAgaW5cbiAgICBmaWx0IHMgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIHMgfmY6cCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgZmlsdCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgKG1hdGNoIHAgdiB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gYWNjdVxuICAgICAgICAgfCBTb21lIHYgLT4gYWRkIGFjY3UgdiB+Y29tcGFyZV9lbHQpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGZpbHRcbiAgICAgICAgICAoZmlsdFxuICAgICAgICAgICAgIChtYXRjaCBwIHYgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjdVxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdClcbiAgICAgICAgICAgICBsKVxuICAgICAgICAgIHJcbiAgICBpblxuICAgIGZpbHQgRW1wdHkgcyBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiBzIH5mOnAgPVxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5LCBFbXB0eVxuICAgICAgfCBMZWFmIHYgYXMgdCAtPiBpZiBwIHYgdGhlbiB0LCBFbXB0eSBlbHNlIEVtcHR5LCB0XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIGFzIHQgLT5cbiAgICAgICAgbGV0IGwndCwgbCdmID0gbG9vcCBsIGluXG4gICAgICAgIGxldCBrZWVwX3ZfdCA9IHAgdiBpblxuICAgICAgICBsZXQgcid0LCByJ2YgPSBsb29wIHIgaW5cbiAgICAgICAgbGV0IG1rIGtlZXBfdiBsJyByJyA9XG4gICAgICAgICAgaWYga2VlcF92ICYmIHBoeXNfZXF1YWwgbCBsJyAmJiBwaHlzX2VxdWFsIHIgcidcbiAgICAgICAgICB0aGVuIHRcbiAgICAgICAgICBlbHNlIGlmIGtlZXBfdlxuICAgICAgICAgIHRoZW4gam9pbiBsJyB2IHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcbiAgICAgICAgaW5cbiAgICAgICAgbWsga2VlcF92X3QgbCd0IHIndCwgbWsgKG5vdCBrZWVwX3ZfdCkgbCdmIHInZlxuICAgIGluXG4gICAgbG9vcCBzIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiB2IDo6IGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGVsZW1lbnRzX2F1eCAodiA6OiBlbGVtZW50c19hdXggYWNjdSByKSBsXG4gIDs7XG5cbiAgbGV0IGVsZW1lbnRzIHMgPSBlbGVtZW50c19hdXggW10gc1xuXG4gIGxldCBjaG9vc2UgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gU29tZSB2XG4gICAgfCBOb2RlIChfLCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcbiAgOztcblxuICBsZXQgY2hvb3NlX2V4biA9XG4gICAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU2V0LmNob29zZV9leG46IGVtcHR5IHNldFwiKSBpblxuICAgIGxldCBjaG9vc2VfZXhuIHQgPVxuICAgICAgbWF0Y2ggY2hvb3NlIHQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGNob29zZV9leG5cbiAgOztcblxuICBsZXQgb2ZfbGlzdCBsc3QgfmNvbXBhcmVfZWx0ID1cbiAgICBMaXN0LmZvbGQgbHN0IH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSB+Y29tcGFyZV9lbHQgPVxuICAgIFNlcXVlbmNlLmZvbGQgc2VxdWVuY2UgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgbGV0IHRvX2xpc3QgcyA9IGVsZW1lbnRzIHNcblxuICBsZXQgb2ZfYXJyYXkgYSB+Y29tcGFyZV9lbHQgPVxuICAgIEFycmF5LmZvbGQgYSB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJlX2VsdClcbiAgOztcblxuICAoKiBmYXN0ZXIgYnV0IGVxdWl2YWxlbnQgdG8gW0FycmF5Lm9mX2xpc3QgKHRvX2xpc3QgdCldICopXG4gIGxldCB0b19hcnJheSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBbfHxdXG4gICAgfCBMZWFmIHYgLT4gW3wgdiB8XVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgcykgLT5cbiAgICAgIGxldCByZXMgPSBBcnJheS5jcmVhdGUgfmxlbjpzIHYgaW5cbiAgICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgICgqIEludmFyaWFudDogb24gZW50cnkgYW5kIG9uIGV4aXQgdG8gW2xvb3BdLCAhcG9zX3JlZiBpcyB0aGUgbmV4dFxuICAgICAgICAgICBhdmFpbGFibGUgY2VsbCBpbiB0aGUgYXJyYXkuICopXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgICByZXMuKCFwb3NfcmVmKSA8LSB2O1xuICAgICAgICAgIGluY3IgcG9zX3JlZlxuICAgICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgICAgbG9vcCBsO1xuICAgICAgICAgIHJlcy4oIXBvc19yZWYpIDwtIHY7XG4gICAgICAgICAgaW5jciBwb3NfcmVmO1xuICAgICAgICAgIGxvb3AgclxuICAgICAgaW5cbiAgICAgIGxvb3AgbDtcbiAgICAgICgqIHJlcy4oIXBvc19yZWYpIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQgKGJ5IEFycmF5LmNyZWF0ZSB+bGVuOmFib3ZlKS4gKilcbiAgICAgIGluY3IgcG9zX3JlZjtcbiAgICAgIGxvb3AgcjtcbiAgICAgIHJlc1xuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiB+Y29tcGFyZV9lbHQgPVxuICAgIGZvbGQgdCB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCAoZiB4KSB+Y29tcGFyZV9lbHQpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZ3JvdXBfYnkgc2V0IH5lcXVpdiA9XG4gICAgbGV0IHJlYyBsb29wIHNldCBlcXVpdl9jbGFzc2VzID1cbiAgICAgIGlmIGlzX2VtcHR5IHNldFxuICAgICAgdGhlbiBlcXVpdl9jbGFzc2VzXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHggPSBjaG9vc2VfZXhuIHNldCBpblxuICAgICAgICBsZXQgZXF1aXZfeCwgbm90X2VxdWl2X3ggPVxuICAgICAgICAgIHBhcnRpdGlvbl90ZiBzZXQgfmY6KGZ1biBlbHQgLT4gcGh5c19lcXVhbCB4IGVsdCB8fCBlcXVpdiB4IGVsdClcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCBub3RfZXF1aXZfeCAoZXF1aXZfeCA6OiBlcXVpdl9jbGFzc2VzKSlcbiAgICBpblxuICAgIGxvb3Agc2V0IFtdIFtAbm9udGFpbF1cbiAgOztcblxuXG4gIGxldCByZWMgZmluZCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIFNvbWUgdlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGZpbmQgbCB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmaW5kIHIgfmZcbiAgICAgICAgfCBTb21lIF8gYXMgciAtPiByKVxuICA7O1xuXG4gIGxldCByZWMgZmluZF9tYXAgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gZiB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgKG1hdGNoIGYgdiB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICAobWF0Y2ggZmluZF9tYXAgbCB+ZiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZpbmRfbWFwIHIgfmZcbiAgICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHIpKVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNldC5maW5kX2V4biBmYWlsZWQgdG8gZmluZCBhIG1hdGNoaW5nIGVsZW1lbnRcIlxuICAgIHwgU29tZSBlIC0+IGVcbiAgOztcblxuICBsZXQgcmVjIG50aCB0IGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGkgPSAwIHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgcykgLT5cbiAgICAgIGlmIGkgPj0gc1xuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxfc2l6ZSA9IGxlbmd0aCBsIGluXG4gICAgICAgIGxldCBjID0gUG9seS5jb21wYXJlIGkgbF9zaXplIGluXG4gICAgICAgIGlmIGMgPCAwIHRoZW4gbnRoIGwgaSBlbHNlIGlmIGMgPSAwIHRoZW4gU29tZSB2IGVsc2UgbnRoIHIgKGkgLSBsX3NpemUgLSAxKSlcbiAgOztcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGxvb3AgeHMgbGVmdG92ZXJzIGFscmVhZHlfc2VlbiA9XG4gICAgICBtYXRjaCB4cyB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGxlZnRvdmVyc1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBpZiBtZW0gYWxyZWFkeV9zZWVuIGhkIH5jb21wYXJlX2VsdFxuICAgICAgICB0aGVuIGxvb3AgdGwgbGVmdG92ZXJzIGFscmVhZHlfc2VlblxuICAgICAgICBlbHNlIGxvb3AgdGwgKGhkIDo6IGxlZnRvdmVycykgKGFkZCBhbHJlYWR5X3NlZW4gaGQgfmNvbXBhcmVfZWx0KVxuICAgIGluXG4gICAgbG9vcCB4cyBbXSBlbXB0eVxuICA7O1xuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IGFfb2Zfc2V4cCBzZXhwIH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkxpc3QgbHN0IC0+XG4gICAgICBsZXQgZWx0X2xzdCA9IExpc3QubWFwIGxzdCB+ZjphX29mX3NleHAgaW5cbiAgICAgIGxldCBzZXQgPSBvZl9saXN0IGVsdF9sc3QgfmNvbXBhcmVfZWx0IGluXG4gICAgICBpZiBsZW5ndGggc2V0ID0gTGlzdC5sZW5ndGggbHN0XG4gICAgICB0aGVuIHNldFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzZXQgPSByZWYgZW1wdHkgaW5cbiAgICAgICAgTGlzdC5pdGVyMl9leG4gbHN0IGVsdF9sc3QgfmY6KGZ1biBlbF9zZXhwIGVsIC0+XG4gICAgICAgICAgaWYgbWVtICFzZXQgZWwgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiU2V0LnRfb2Zfc2V4cDogZHVwbGljYXRlIGVsZW1lbnQgaW4gc2V0XCIgZWxfc2V4cFxuICAgICAgICAgIGVsc2Ugc2V0IDo9IGFkZCAhc2V0IGVsIH5jb21wYXJlX2VsdCk7XG4gICAgICAgIGFzc2VydCBmYWxzZSlcbiAgICB8IHNleHAgLT4gb2Zfc2V4cF9lcnJvciBcIlNldC50X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIFNleHAuTGlzdCAoZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4gZWwgYWNjIC0+IHNleHBfb2ZfYSBlbCA6OiBhY2MpKVxuICA7O1xuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIGxldCBpc19zdWJzZXRcbiAgICAgICAgICAoc3Vic2V0IDogXyBOYW1lZC50KVxuICAgICAgICAgIH5vZl86KHN1cGVyc2V0IDogXyBOYW1lZC50KVxuICAgICAgICAgIH5zZXhwX29mX2VsdFxuICAgICAgICAgIH5jb21wYXJlX2VsdFxuICAgICAgPVxuICAgICAgbGV0IGludmFsaWRfZWxlbWVudHMgPSBkaWZmIHN1YnNldC5zZXQgc3VwZXJzZXQuc2V0IH5jb21wYXJlX2VsdCBpblxuICAgICAgaWYgaXNfZW1wdHkgaW52YWxpZF9lbGVtZW50c1xuICAgICAgdGhlbiBPayAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBpbnZhbGlkX2VsZW1lbnRzX3NleHAgPSBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgaW52YWxpZF9lbGVtZW50cyBpblxuICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgIChzdWJzZXQubmFtZSBeIFwiIGlzIG5vdCBhIHN1YnNldCBvZiBcIiBeIHN1cGVyc2V0Lm5hbWUpXG4gICAgICAgICAgICAgWyBcImludmFsaWRfZWxlbWVudHNcIiwgaW52YWxpZF9lbGVtZW50c19zZXhwIF0pKVxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgczEgczIgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdCA9XG4gICAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG4gICAgICAgIFsgaXNfc3Vic2V0IHMxIH5vZl86czIgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdFxuICAgICAgICA7IGlzX3N1YnNldCBzMiB+b2ZfOnMxIH5zZXhwX29mX2VsdCB+Y29tcGFyZV9lbHRcbiAgICAgICAgXVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbnR5cGUgKCdhLCAnY29tcGFyYXRvcikgdCA9XG4gIHsgKCogW2NvbXBhcmF0b3JdIGlzIHRoZSBmaXJzdCBmaWVsZCBzbyB0aGF0IHBvbHltb3JwaGljIGVxdWFsaXR5IGZhaWxzIG9uIGEgbWFwIGR1ZVxuICAgICAgIHRvIHRoZSBmdW5jdGlvbmFsIHZhbHVlIGluIHRoZSBjb21wYXJhdG9yLlxuICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFmZmVjdCBwb2x5bW9ycGhpYyBbY29tcGFyZV06IHRoYXQgc3RpbGwgcHJvZHVjZXNcbiAgICAgICBub25zZW5zZS4gKilcbiAgICBjb21wYXJhdG9yIDogKCdhLCAnY29tcGFyYXRvcikgQ29tcGFyYXRvci50XG4gIDsgdHJlZSA6ICdhIFRyZWUwLnRcbiAgfVxuXG50eXBlICgnYSwgJ2NvbXBhcmF0b3IpIHRyZWUgPSAnYSBUcmVlMC50XG5cbmxldCBsaWtlIHsgdHJlZSA9IF87IGNvbXBhcmF0b3IgfSB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yIH1cblxubGV0IGxpa2VfbWF5YmVfbm9fb3AgKHsgdHJlZSA9IG9sZF90cmVlOyBjb21wYXJhdG9yIH0gYXMgb2xkX3QpIHRyZWUgPVxuICBpZiBwaHlzX2VxdWFsIG9sZF90cmVlIHRyZWUgdGhlbiBvbGRfdCBlbHNlIHsgdHJlZTsgY29tcGFyYXRvciB9XG47O1xuXG5sZXQgY29tcGFyZV9lbHQgdCA9IHQuY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciB0ID0gdC5jb21wYXJhdG9yXG5cbiAgbGV0IGNvbXBhcmF0b3JfcyAodHlwZSBrIGNtcCkgdCA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICB0eXBlIHQgPSBrXG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgICBsZXQgY29tcGFyYXRvciA9IHQuY29tcGFyYXRvclxuICAgIGVuZClcbiAgOztcblxuICBsZXQgaW52YXJpYW50cyB0ID0gVHJlZTAuaW52YXJpYW50cyB0LnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KVxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdC50cmVlXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdC50cmVlXG4gIGxldCBlbGVtZW50cyB0ID0gVHJlZTAuZWxlbWVudHMgdC50cmVlXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHQudHJlZVxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHQudHJlZVxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0LnRyZWVcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0LnRyZWVcbiAgbGV0IGNob29zZSB0ID0gVHJlZTAuY2hvb3NlIHQudHJlZVxuICBsZXQgY2hvb3NlX2V4biB0ID0gVHJlZTAuY2hvb3NlX2V4biB0LnRyZWVcbiAgbGV0IHRvX2xpc3QgdCA9IFRyZWUwLnRvX2xpc3QgdC50cmVlXG4gIGxldCB0b19hcnJheSB0ID0gVHJlZTAudG9fYXJyYXkgdC50cmVlXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQudHJlZSB+aW5pdCB+ZlxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBUcmVlMC5mb2xkX3VudGlsIHQudHJlZSB+aW5pdCB+ZiB+ZmluaXNoXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQudHJlZSB+aW5pdCB+ZlxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQudHJlZSB+ZlxuICBsZXQgaXRlcjIgYSBiIH5mID0gVHJlZTAuaXRlcjIgYS50cmVlIGIudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IGEpXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0LnRyZWUgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdC50cmVlIH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdC50cmVlIH5mXG4gIGxldCBzdW0gbSB0IH5mID0gVHJlZTAuc3VtIG0gdC50cmVlIH5mXG4gIGxldCBmaW5kIHQgfmYgPSBUcmVlMC5maW5kIHQudHJlZSB+ZlxuICBsZXQgZmluZF9leG4gdCB+ZiA9IFRyZWUwLmZpbmRfZXhuIHQudHJlZSB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IFRyZWUwLmZpbmRfbWFwIHQudHJlZSB+ZlxuICBsZXQgbWVtIHQgYSA9IFRyZWUwLm1lbSB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IGxpa2VfbWF5YmVfbm9fb3AgdCAoVHJlZTAuZmlsdGVyIHQudHJlZSB+ZilcbiAgbGV0IGFkZCB0IGEgPSBsaWtlIHQgKFRyZWUwLmFkZCB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKVxuICBsZXQgcmVtb3ZlIHQgYSA9IGxpa2UgdCAoVHJlZTAucmVtb3ZlIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCB1bmlvbiB0MSB0MiA9IGxpa2UgdDEgKFRyZWUwLnVuaW9uIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKSlcbiAgbGV0IGludGVyIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAuaW50ZXIgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuICBsZXQgZGlmZiB0MSB0MiA9IGxpa2UgdDEgKFRyZWUwLmRpZmYgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IHQxIHQyID0gVHJlZTAuY29tcGFyZSAoY29tcGFyZV9lbHQgdDEpIHQxLnRyZWUgdDIudHJlZVxuICBsZXQgZXF1YWwgdDEgdDIgPSBUcmVlMC5lcXVhbCB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgbGV0IGlzX3N1YnNldCB0IH5vZl8gPSBUcmVlMC5pc19zdWJzZXQgdC50cmVlIH5vZl86b2ZfLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KVxuXG4gIGxldCBhcmVfZGlzam9pbnQgdDEgdDIgPVxuICAgIFRyZWUwLmFyZV9kaXNqb2ludCB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgOztcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBsZXQgdG9fbmFtZWRfdHJlZSAobmFtZWQgOiAoXywgXykgdCBOYW1lZC50KSA9IHsgbmFtZWQgd2l0aCBzZXQgPSBuYW1lZC5zZXQudHJlZSB9XG5cbiAgICBsZXQgaXNfc3Vic2V0IHN1YnNldCB+b2ZfOnN1cGVyc2V0ID1cbiAgICAgIFRyZWUwLk5hbWVkLmlzX3N1YnNldFxuICAgICAgICAodG9fbmFtZWRfdHJlZSBzdWJzZXQpXG4gICAgICAgIH5vZl86KHRvX25hbWVkX3RyZWUgc3VwZXJzZXQpXG4gICAgICAgIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgc3Vic2V0LnNldClcbiAgICAgICAgfnNleHBfb2ZfZWx0OnN1YnNldC5zZXQuY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIHQxIHQyID1cbiAgICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXQgWyBpc19zdWJzZXQgdDEgfm9mXzp0MjsgaXNfc3Vic2V0IHQyIH5vZl86dDEgXVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIE5hbWVkXG4gIGVuZFxuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gICAgbGV0IHRyZWVfdCwgdHJlZV9mID0gVHJlZTAucGFydGl0aW9uX3RmIHQudHJlZSB+ZiBpblxuICAgIGxpa2VfbWF5YmVfbm9fb3AgdCB0cmVlX3QsIGxpa2VfbWF5YmVfbm9fb3AgdCB0cmVlX2ZcbiAgOztcblxuICBsZXQgc3BsaXQgdCBhID1cbiAgICBsZXQgdHJlZTEsIGIsIHRyZWUyID0gVHJlZTAuc3BsaXQgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSBpblxuICAgIGxpa2UgdCB0cmVlMSwgYiwgbGlrZSB0IHRyZWUyXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2xlX2d0IHQgYSA9XG4gICAgbGV0IHRyZWUxLCB0cmVlMiA9IFRyZWUwLnNwbGl0X2xlX2d0IHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkgaW5cbiAgICBsaWtlIHQgdHJlZTEsIGxpa2UgdCB0cmVlMlxuICA7O1xuXG4gIGxldCBzcGxpdF9sdF9nZSB0IGEgPVxuICAgIGxldCB0cmVlMSwgdHJlZTIgPSBUcmVlMC5zcGxpdF9sdF9nZSB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpIGluXG4gICAgbGlrZSB0IHRyZWUxLCBsaWtlIHQgdHJlZTJcbiAgOztcblxuICBsZXQgZ3JvdXBfYnkgdCB+ZXF1aXYgPSBMaXN0Lm1hcCAoVHJlZTAuZ3JvdXBfYnkgdC50cmVlIH5lcXVpdikgfmY6KGxpa2UgdClcbiAgbGV0IG50aCB0IGkgPSBUcmVlMC5udGggdC50cmVlIGlcbiAgbGV0IHJlbW92ZV9pbmRleCB0IGkgPSBsaWtlIHQgKFRyZWUwLnJlbW92ZV9pbmRleCB0LnRyZWUgaSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9hIHQudHJlZVxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2UgdC5jb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0LnRyZWVcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0LnRyZWUgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQudHJlZSB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2UgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCcgPVxuICAgIFRyZWUwLm1lcmdlX3RvX3NlcXVlbmNlXG4gICAgICB0LmNvbXBhcmF0b3JcbiAgICAgID9vcmRlclxuICAgICAgP2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgID9sZXNzX29yX2VxdWFsX3RvXG4gICAgICB0LnRyZWVcbiAgICAgIHQnLnRyZWVcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5IHN0YXRlIHQgPVxuICAgIFRyZWUwLmhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfa2V5IHN0YXRlIHQudHJlZVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgQWNjZXNzb3JzXG5cbmxldCBjb21wYXJlIF8gXyB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG5cbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnY29tcGFyYXRvcikgdCA9ICgnYSwgJ2NvbXBhcmF0b3IpIHRyZWVcblxuICBsZXQgY2UgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3IgYV9vZl9zZXhwIHNleHAgPVxuICAgIFRyZWUwLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKSBhX29mX3NleHAgc2V4cFxuICA7O1xuXG4gIGxldCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uID0gVHJlZTAuZW1wdHlcbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yOl8gPSBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3I6XyBlID0gVHJlZTAuc2luZ2xldG9uIGVcbiAgbGV0IGxlbmd0aCB0ID0gVHJlZTAubGVuZ3RoIHRcbiAgbGV0IGludmFyaWFudHMgfmNvbXBhcmF0b3IgdCA9IFRyZWUwLmludmFyaWFudHMgdCB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdFxuICBsZXQgZWxlbWVudHMgdCA9IFRyZWUwLmVsZW1lbnRzIHRcbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdFxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHRcbiAgbGV0IG1heF9lbHQgdCA9IFRyZWUwLm1heF9lbHQgdFxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHRcbiAgbGV0IGNob29zZSB0ID0gVHJlZTAuY2hvb3NlIHRcbiAgbGV0IGNob29zZV9leG4gdCA9IFRyZWUwLmNob29zZV9leG4gdFxuICBsZXQgdG9fbGlzdCB0ID0gVHJlZTAudG9fbGlzdCB0XG4gIGxldCB0b19hcnJheSB0ID0gVHJlZTAudG9fYXJyYXkgdFxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0IH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0IH5mXG4gIGxldCBzdW0gbSB0IH5mID0gVHJlZTAuc3VtIG0gdCB+ZlxuICBsZXQgZmluZCB0IH5mID0gVHJlZTAuZmluZCB0IH5mXG4gIGxldCBmaW5kX2V4biB0IH5mID0gVHJlZTAuZmluZF9leG4gdCB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IFRyZWUwLmZpbmRfbWFwIHQgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdCB+aW5pdCB+ZlxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBUcmVlMC5mb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaFxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0IH5pbml0IH5mXG4gIGxldCBtYXAgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLm1hcCB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGZpbHRlciB0IH5mID0gVHJlZTAuZmlsdGVyIHQgfmZcbiAgbGV0IGZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLmZpbHRlcl9tYXAgdCB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl90ZiB0IH5mXG4gIGxldCBpdGVyMiB+Y29tcGFyYXRvciBhIGIgfmYgPSBUcmVlMC5pdGVyMiBhIGIgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgbWVtIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLm1lbSB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgYWRkIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLmFkZCB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgcmVtb3ZlIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLnJlbW92ZSB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgdW5pb24gfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC51bmlvbiB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBpbnRlciB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmludGVyIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGRpZmYgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5kaWZmIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgfmNvbXBhcmF0b3IgdDEgdDIgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5jb21wYXJlIChjZSBjb21wYXJhdG9yKSB0MSB0MlxuICBsZXQgZXF1YWwgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5lcXVhbCB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBpc19zdWJzZXQgfmNvbXBhcmF0b3IgdCB+b2ZfID0gVHJlZTAuaXNfc3Vic2V0IHQgfm9mXyB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG5cbiAgbGV0IGFyZV9kaXNqb2ludCB+Y29tcGFyYXRvciB0MSB0MiA9XG4gICAgVHJlZTAuYXJlX2Rpc2pvaW50IHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfbGlzdCB+Y29tcGFyYXRvciBsID0gVHJlZTAub2ZfbGlzdCBsIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHMgPSBUcmVlMC5vZl9zZXF1ZW5jZSBzIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG9mX2FycmF5IH5jb21wYXJhdG9yIGEgPSBUcmVlMC5vZl9hcnJheSBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhID1cbiAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvcjpfIH5sZW4gfmYgPVxuICAgIFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGEgPSBUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIGwgPSBUcmVlMC51bmlvbl9saXN0IGwgfnRvX3RyZWU6Rm4uaWQgfmNvbXBhcmF0b3JcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgeHMgPVxuICAgIFRyZWUwLnN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgZ3JvdXBfYnkgdCB+ZXF1aXYgPSBUcmVlMC5ncm91cF9ieSB0IH5lcXVpdlxuICBsZXQgc3BsaXQgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuc3BsaXQgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHNwbGl0X2xlX2d0IH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLnNwbGl0X2xlX2d0IHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBzcGxpdF9sdF9nZSB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5zcGxpdF9sdF9nZSB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgbnRoIHQgaSA9IFRyZWUwLm50aCB0IGlcbiAgbGV0IHJlbW92ZV9pbmRleCB+Y29tcGFyYXRvciB0IGkgPSBUcmVlMC5yZW1vdmVfaW5kZXggdCBpIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gVHJlZTAuc2V4cF9vZl90IHNleHBfb2ZfYSB0XG4gIGxldCB0b190cmVlIHQgPSB0XG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yOl8gdCA9IHRcblxuICBsZXQgdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlIGNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB+Y29tcGFyYXRvcjpfIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgfmNvbXBhcmF0b3I6XyB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCcgPVxuICAgIFRyZWUwLm1lcmdlX3RvX3NlcXVlbmNlIGNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCdcbiAgOztcblxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgaW5jbHVkZSBUcmVlMC5OYW1lZFxuXG4gICAgbGV0IGlzX3N1YnNldCB+Y29tcGFyYXRvciB0MSB+b2ZfOnQyID1cbiAgICAgIFRyZWUwLk5hbWVkLmlzX3N1YnNldFxuICAgICAgICB0MVxuICAgICAgICB+b2ZfOnQyXG4gICAgICAgIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgICAgICAgfnNleHBfb2ZfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIH5jb21wYXJhdG9yIHQxIHQyID1cbiAgICAgIFRyZWUwLk5hbWVkLmVxdWFsXG4gICAgICAgIHQxXG4gICAgICAgIHQyXG4gICAgICAgIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgICAgICAgfnNleHBfb2ZfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2VsdCwgJ2NtcCkgdCA9ICgnZWx0LCAnY21wKSB0XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgdG9fdHJlZSB0ID0gdC50cmVlXG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yIHRyZWUgPSB7IGNvbXBhcmF0b3I7IHRyZWUgfVxuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuY29tcGFyZSBhX29mX3NleHAgc2V4cClcbiAgOztcblxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3IgPSB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5lbXB0eSB9XG5cbiAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEVsdCA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gICAgbGV0IGVtcHR5ID0geyBjb21wYXJhdG9yID0gRWx0LmNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5lbXB0eSB9XG4gIGVuZFxuXG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3IgZSA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLnNpbmdsZXRvbiBlIH1cblxuICBsZXQgdW5pb25fbGlzdCB+Y29tcGFyYXRvciBsID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlMC51bmlvbl9saXN0IH5jb21wYXJhdG9yIH50b190cmVlIGwpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIGxldCB0cmVlID1cbiAgICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgfVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlMC5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIE9yX2Vycm9yLk1vbmFkX2luZml4LihcbiAgICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgID4+fCBmdW4gdHJlZSAtPiB7IGNvbXBhcmF0b3I7IHRyZWUgfSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdCB+Y29tcGFyYXRvciBsID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5vZl9saXN0IGwgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgcyA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAub2Zfc2VxdWVuY2UgcyB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBvZl9hcnJheSB+Y29tcGFyYXRvciBhID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5vZl9hcnJheSBhIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIHhzID1cbiAgICBUcmVlMC5zdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm1hcCB0LnRyZWUgfmYgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mID1cbiAgICB7IGNvbXBhcmF0b3JcbiAgICA7IHRyZWUgPSBUcmVlMC5maWx0ZXJfbWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB9XG4gIDs7XG5cbiAgbW9kdWxlIFRyZWUgPSBUcmVlXG5lbmRcblxudHlwZSAoJ2VsdCwgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2VsdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBlbHQgY21wKSAoKG1vZHVsZSBNKSA6IChlbHQsIGNtcCkgY29tcGFyYXRvcikgPSBNLmNvbXBhcmF0b3JcbmxldCBlbXB0eSBtID0gVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxubGV0IHNpbmdsZXRvbiBtIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgdW5pb25fbGlzdCBtIGEgPSBVc2luZ19jb21wYXJhdG9yLnVuaW9uX2xpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIG0gfmxlbiB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgfmxlbiB+ZlxuOztcblxubGV0IG9mX3NvcnRlZF9hcnJheSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfbGlzdCBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX3NlcXVlbmNlIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2FycmF5IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYXJyYXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgc3RhYmxlX2RlZHVwX2xpc3QgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5zdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgbWFwIG0gYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmZcbmxldCBmaWx0ZXJfbWFwIG0gYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IuZmlsdGVyX21hcCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5mXG5sZXQgdG9fdHJlZSA9IFVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxubGV0IG9mX3RyZWUgbSB0ID0gVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHRcblxubW9kdWxlIE0gKEVsdCA6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBlbHQpIHQgPVxuICBzZXhwX29mX3QgRWx0LnNleHBfb2ZfdCAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwXG4gICAgICAodHlwZSBlbHQgY21wKVxuICAgICAgKG1vZHVsZSBFbHQgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBlbHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgc2V4cFxuICA9XG4gIFVzaW5nX2NvbXBhcmF0b3IudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvcjpFbHQuY29tcGFyYXRvciBFbHQudF9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hciAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBlbHQpXG4gIDogKGVsdCwgXykgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKGxpc3Rfc2V4cF9ncmFtbWFyIEVsdC50X3NleHBfZ3JhbW1hcilcbjs7XG5cbmxldCBjb21wYXJlX21fX3QgKG1vZHVsZSBfIDogQ29tcGFyZV9tKSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSB0MSB0MiA9IGVxdWFsIHQxIHQyXG5cbmxldCBoYXNoX2ZvbGRfbV9fdCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSBlbHQpIHN0YXRlID1cbiAgaGFzaF9mb2xkX2RpcmVjdCBFbHQuaGFzaF9mb2xkX3Qgc3RhdGVcbjs7XG5cbmxldCBoYXNoX21fX3QgZm9sZGVyIHQgPVxuICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfbV9fdCBmb2xkZXIgKEhhc2guY3JlYXRlICgpKSB0IGluXG4gIEhhc2guZ2V0X2hhc2hfdmFsdWUgc3RhdGVcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICB0eXBlIG5vbnJlYyAoJ2VsdCwgJ2NtcCkgc2V0ID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlIG5vbnJlYyAnZWx0IHQgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICdlbHQgdHJlZSA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIHRyZWVcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJhdG9yID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcblxuICBpbmNsdWRlIFVzaW5nX2NvbXBhcmF0b3IuRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIGxldCBzaW5nbGV0b24gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGFcbiAgbGV0IHVuaW9uX2xpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3IudW5pb25fbGlzdCB+Y29tcGFyYXRvciBhXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9saXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX3NlcXVlbmNlIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FycmF5IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FycmF5IH5jb21wYXJhdG9yIGFcbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLnN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG1hcCBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXAgfmNvbXBhcmF0b3IgYSB+ZlxuICBsZXQgZmlsdGVyX21hcCBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5maWx0ZXJfbWFwIH5jb21wYXJhdG9yIGEgfmZcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IHsgY29tcGFyYXRvcjsgdHJlZSB9XG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX3JlZlxuICBsZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID0gZXF1YWxfcmVmXG5cbiAgbGV0IGdsb2JhbGl6ZSA6ICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgdFtAb2NhbWwubG9jYWxdKSAtPiAnYSB0ID1cbiAgICBmdW4gKHR5cGUgYV9fMDA5XylcbiAgICAgICAgOiAoKChhX18wMDlfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwOV8pIC0+IChhX18wMDlfIHRbQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA5XyB0KSAtPlxuICAgICAgZ2xvYmFsaXplX3JlZlxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSByZWZfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9yZWZcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gcmVmX3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkVxdWFsLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgZ2xvYmFsaXplIDogKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdFxuXG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kKVxuXG4oKiBJbiB0aGUgZGVmaW5pdGlvbiBvZiBbdF0sIHdlIGRvIG5vdCBoYXZlIFtbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXV0gYmVjYXVzZVxuICAgaW4gZ2VuZXJhbCwgc3ludGF4IGV4dGVuc2lvbnMgdGVuZCB0byB1c2UgdGhlIGltcGxlbWVudGF0aW9uIHdoZW4gYXZhaWxhYmxlIHJhdGhlciB0aGFuXG4gICB1c2luZyB0aGUgYWxpYXMuICBIZXJlIHRoYXQgd291bGQgbGVhZCB0byB1c2UgdGhlIHJlY29yZCByZXByZXNlbnRhdGlvbiBbIHsgbXV0YWJsZVxuICAgY29udGVudHMgOiAnYSB9IF0gd2hpY2ggd291bGQgcmVzdWx0IGluIGRpZmZlcmVudCAoYW5kIHVud2FudGVkKSBiZWhhdmlvci4gICopXG50eXBlICdhIHQgPSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5cbmV4dGVybmFsIGNyZWF0ZSA6ICdhIC0+ICgnYSB0W0Bsb2NhbF9vcHRdKSA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogKCdhIHRbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICgnYSB0W0Bsb2NhbF9vcHRdKSAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcblxubGV0IHN3YXAgdDEgdDIgPVxuICBsZXQgdG1wID0gIXQxIGluXG4gIHQxIDo9ICF0MjtcbiAgdDIgOj0gdG1wXG47O1xuXG5sZXQgcmVwbGFjZSB0IGYgPSB0IDo9IGYgIXRcblxubGV0IHNldF90ZW1wb3JhcmlseSB0IGEgfmYgPVxuICBsZXQgcmVzdG9yZV90byA9ICF0IGluXG4gIHQgOj0gYTtcbiAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiB0IDo9IHJlc3RvcmVfdG8pXG47O1xuXG5tb2R1bGUgQW5kX3ZhbHVlID0gc3RydWN0XG4gIHR5cGUgdCA9IFQgOiAnYSByZWYgKiAnYSAtPiB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHNldCAoVCAociwgYSkpID0gciA6PSBhXG4gIGxldCBzZXRzIHRzID0gTGlzdC5pdGVyIHRzIH5mOnNldFxuICBsZXQgc25hcHNob3QgKFQgKHIsIF8pKSA9IFQgKHIsICFyKVxuICBsZXQgc25hcHNob3RzIHRzID0gTGlzdC5tYXAgdHMgfmY6c25hcHNob3RcbmVuZFxuXG5sZXQgc2V0c190ZW1wb3JhcmlseSBhbmRfdmFsdWVzIH5mID1cbiAgbGV0IHJlc3RvcmVfdG8gPSBBbmRfdmFsdWUuc25hcHNob3RzIGFuZF92YWx1ZXMgaW5cbiAgQW5kX3ZhbHVlLnNldHMgYW5kX3ZhbHVlcztcbiAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiBBbmRfdmFsdWUuc2V0cyByZXN0b3JlX3RvKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5cbigqIFt0XSBzdG9yZXMgdGhlIFt0Lmxlbmd0aF0gcXVldWUgZWxlbWVudHMgYXQgY29uc2VjdXRpdmUgaW5jcmVhc2luZyBpbmRpY2VzIG9mIFt0LmVsdHNdLFxuICAgbW9kIHRoZSBjYXBhY2l0eSBvZiBbdF0sIHdoaWNoIGlzIFtPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0c10uICBUaGUgY2FwYWNpdHkgaXNcbiAgIHJlcXVpcmVkIHRvIGJlIGEgcG93ZXIgb2YgdHdvICh1c2VyLXJlcXVlc3RlZCBjYXBhY2l0aWVzIGFyZSByb3VuZGVkIHVwIHRvIHRoZSBuZWFyZXN0XG4gICBwb3dlciksIHNvIHRoYXQgbW9kIGNhbiBxdWlja2x5IGJlIGNvbXB1dGVkIHVzaW5nIFtsYW5kIHQubWFza10sIHdoZXJlIFt0Lm1hc2sgPVxuICAgY2FwYWNpdHkgdCAtIDFdLiAgU28sIHF1ZXVlIGVsZW1lbnQgW2ldIGlzIGF0IFt0LmVsdHMuKCAodC5mcm9udCArIGkpIGxhbmQgdC5tYXNrICldLlxuXG4gICBbbnVtX211dGF0aW9uc10gaXMgdXNlZCB0byBkZXRlY3QgbW9kaWZpY2F0aW9uIGR1cmluZyBpdGVyYXRpb24uICopXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbnVtX211dGF0aW9ucyA6IGludFxuICA7IG11dGFibGUgZnJvbnQgOiBpbnRcbiAgOyBtdXRhYmxlIG1hc2sgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgZWx0cyA6ICdhIE9wdGlvbl9hcnJheS50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMDFfXG4gICAgeyBudW1fbXV0YXRpb25zID0gbnVtX211dGF0aW9uc19fMDAzX1xuICAgIDsgZnJvbnQgPSBmcm9udF9fMDA1X1xuICAgIDsgbWFzayA9IG1hc2tfXzAwN19cbiAgICA7IGxlbmd0aCA9IGxlbmd0aF9fMDA5X1xuICAgIDsgZWx0cyA9IGVsdHNfXzAxMV9cbiAgICB9IC0+XG4gICAgbGV0IGJuZHNfXzAwMl8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDEyXyA9IE9wdGlvbl9hcnJheS5zZXhwX29mX3QgX29mX2FfXzAwMV8gZWx0c19fMDExXyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsdHNcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDAyX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDEwXyA9IHNleHBfb2ZfaW50IGxlbmd0aF9fMDA5XyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxlbmd0aFwiOyBhcmdfXzAxMF8gXSA6OiBibmRzX18wMDJfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDhfID0gc2V4cF9vZl9pbnQgbWFza19fMDA3XyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm1hc2tcIjsgYXJnX18wMDhfIF0gOjogYm5kc19fMDAyX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDA2XyA9IHNleHBfb2ZfaW50IGZyb250X18wMDVfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZnJvbnRcIjsgYXJnX18wMDZfIF0gOjogYm5kc19fMDAyX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDA0XyA9IHNleHBfb2ZfaW50IG51bV9tdXRhdGlvbnNfXzAwM18gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJudW1fbXV0YXRpb25zXCI7IGFyZ19fMDA0XyBdIDo6IGJuZHNfXzAwMl9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDJfXG47O1xuXG5bQEBAZW5kXVxuXG5tb2R1bGUgdHlwZSBTID0gUXVldWVfaW50Zi5TXG5cbmxldCBpbmNfbnVtX211dGF0aW9ucyB0ID0gdC5udW1fbXV0YXRpb25zIDwtIHQubnVtX211dGF0aW9ucyArIDFcbmxldCBjYXBhY2l0eSB0ID0gdC5tYXNrICsgMVxubGV0IGVsdHNfaW5kZXggdCBpID0gKHQuZnJvbnQgKyBpKSBsYW5kIHQubWFza1xubGV0IHVuc2FmZV9nZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gdC5lbHRzIChlbHRzX2luZGV4IHQgaSlcbmxldCB1bnNhZmVfaXNfc2V0IHQgaSA9IE9wdGlvbl9hcnJheS51bnNhZmVfaXNfc29tZSB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxubGV0IHVuc2FmZV9zZXQgdCBpIGEgPSBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpIGFcbmxldCB1bnNhZmVfdW5zZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxuXG5sZXQgY2hlY2tfaW5kZXhfZXhuIHQgaSA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gdC5sZW5ndGhcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiUXVldWUgaW5kZXggb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgICBbIFwiaW5kZXhcIiwgaSB8PiBJbnQuc2V4cF9vZl90OyBcImxlbmd0aFwiLCB0Lmxlbmd0aCB8PiBJbnQuc2V4cF9vZl90IF0pXG47O1xuXG5sZXQgZ2V0IHQgaSA9XG4gIGNoZWNrX2luZGV4X2V4biB0IGk7XG4gIHVuc2FmZV9nZXQgdCBpXG47O1xuXG5sZXQgc2V0IHQgaSBhID1cbiAgY2hlY2tfaW5kZXhfZXhuIHQgaTtcbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgdW5zYWZlX3NldCB0IGkgYVxuOztcblxubGV0IGlzX2VtcHR5IHQgPSB0Lmxlbmd0aCA9IDBcbmxldCBsZW5ndGggeyBsZW5ndGg7IF8gfSA9IGxlbmd0aFxuXG5sZXQgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9ucyA9XG4gIGlmIHQubnVtX211dGF0aW9ucyA8PiBudW1fbXV0YXRpb25zXG4gIHRoZW5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIm11dGF0aW9uIG9mIHF1ZXVlIGR1cmluZyBpdGVyYXRpb25cIlxuICAgICAgICAgWyBcIlwiLCB0IHw+IHNleHBfb2ZfdCAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSBdKVxuOztcblxubGV0IGNvbXBhcmUgPVxuICBsZXQgcmVjIHVuc2FmZV9jb21wYXJlX2Zyb20gY29tcGFyZV9lbHQgcG9zIH50MSB+dDIgfmxlbjEgfmxlbjIgfm11dDEgfm11dDIgPVxuICAgIG1hdGNoIHBvcyA9IGxlbjEsIHBvcyA9IGxlbjIgd2l0aFxuICAgIHwgdHJ1ZSwgdHJ1ZSAtPiAwXG4gICAgfCB0cnVlLCBmYWxzZSAtPiAtMVxuICAgIHwgZmFsc2UsIHRydWUgLT4gMVxuICAgIHwgZmFsc2UsIGZhbHNlIC0+XG4gICAgICBsZXQgeCA9IGNvbXBhcmVfZWx0ICh1bnNhZmVfZ2V0IHQxIHBvcykgKHVuc2FmZV9nZXQgdDIgcG9zKSBpblxuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQxIG11dDE7XG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDIgbXV0MjtcbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICB8IDAgLT4gdW5zYWZlX2NvbXBhcmVfZnJvbSBjb21wYXJlX2VsdCAocG9zICsgMSkgfnQxIH50MiB+bGVuMSB+bGVuMiB+bXV0MSB+bXV0MlxuICAgICAgIHwgbiAtPiBuKVxuICBpblxuICBmdW4gY29tcGFyZV9lbHQgdDEgdDIgLT5cbiAgICBpZiBwaHlzX2VxdWFsIHQxIHQyXG4gICAgdGhlbiAwXG4gICAgZWxzZVxuICAgICAgdW5zYWZlX2NvbXBhcmVfZnJvbVxuICAgICAgICBjb21wYXJlX2VsdFxuICAgICAgICAwXG4gICAgICAgIH50MVxuICAgICAgICB+dDJcbiAgICAgICAgfmxlbjE6dDEubGVuZ3RoXG4gICAgICAgIH5sZW4yOnQyLmxlbmd0aFxuICAgICAgICB+bXV0MTp0MS5udW1fbXV0YXRpb25zXG4gICAgICAgIH5tdXQyOnQyLm51bV9tdXRhdGlvbnNcbjs7XG5cbmxldCBlcXVhbCA9XG4gIGxldCByZWMgdW5zYWZlX2VxdWFsX2Zyb20gZXF1YWxfZWx0IHBvcyB+dDEgfnQyIH5tdXQxIH5tdXQyIH5sZW4gPVxuICAgIHBvcyA9IGxlblxuICAgIHx8XG4gICAgbGV0IGIgPSBlcXVhbF9lbHQgKHVuc2FmZV9nZXQgdDEgcG9zKSAodW5zYWZlX2dldCB0MiBwb3MpIGluXG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQxIG11dDE7XG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQyIG11dDI7XG4gICAgYiAmJiB1bnNhZmVfZXF1YWxfZnJvbSBlcXVhbF9lbHQgKHBvcyArIDEpIH50MSB+dDIgfm11dDEgfm11dDIgfmxlblxuICBpblxuICBmdW4gZXF1YWxfZWx0IHQxIHQyIC0+XG4gICAgcGh5c19lcXVhbCB0MSB0MlxuICAgIHx8XG4gICAgbGV0IGxlbjEgPSB0MS5sZW5ndGggaW5cbiAgICBsZXQgbGVuMiA9IHQyLmxlbmd0aCBpblxuICAgIGxlbjEgPSBsZW4yXG4gICAgJiYgdW5zYWZlX2VxdWFsX2Zyb21cbiAgICAgICAgIGVxdWFsX2VsdFxuICAgICAgICAgMFxuICAgICAgICAgfnQxXG4gICAgICAgICB+dDJcbiAgICAgICAgIH5sZW46bGVuMVxuICAgICAgICAgfm11dDE6dDEubnVtX211dGF0aW9uc1xuICAgICAgICAgfm11dDI6dDIubnVtX211dGF0aW9uc1xuOztcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbGV0IHsgbnVtX211dGF0aW9uczsgbWFzayA9IF87IGVsdHM7IGZyb250OyBsZW5ndGggfSA9IHQgaW5cbiAgYXNzZXJ0IChmcm9udCA+PSAwKTtcbiAgYXNzZXJ0IChmcm9udCA8IGNhcGFjaXR5IHQpO1xuICBsZXQgY2FwYWNpdHkgPSBjYXBhY2l0eSB0IGluXG4gIGFzc2VydCAoY2FwYWNpdHkgPSBPcHRpb25fYXJyYXkubGVuZ3RoIGVsdHMpO1xuICBhc3NlcnQgKGNhcGFjaXR5ID49IDEpO1xuICBhc3NlcnQgKEludC5pc19wb3cyIGNhcGFjaXR5KTtcbiAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gIGFzc2VydCAobGVuZ3RoIDw9IGNhcGFjaXR5KTtcbiAgZm9yIGkgPSAwIHRvIGNhcGFjaXR5IC0gMSBkb1xuICAgIGlmIGkgPCB0Lmxlbmd0aFxuICAgIHRoZW4gKFxuICAgICAgaW52YXJpYW50X2EgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnMpXG4gICAgZWxzZSBhc3NlcnQgKG5vdCAodW5zYWZlX2lzX3NldCB0IGkpKVxuICBkb25lXG47O1xuXG5sZXQgY3JlYXRlICh0eXBlIGEpID9jYXBhY2l0eSAoKSA6IGEgdCA9XG4gIGxldCBjYXBhY2l0eSA9XG4gICAgbWF0Y2ggY2FwYWNpdHkgd2l0aFxuICAgIHwgTm9uZSAtPiAyXG4gICAgfCBTb21lIGNhcGFjaXR5IC0+XG4gICAgICBpZiBjYXBhY2l0eSA8IDBcbiAgICAgIHRoZW5cbiAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICBcImNhbm5vdCBoYXZlIHF1ZXVlIHdpdGggbmVnYXRpdmUgY2FwYWNpdHlcIlxuICAgICAgICAgICAgIFsgXCJjYXBhY2l0eVwiLCBjYXBhY2l0eSB8PiBJbnQuc2V4cF9vZl90IF0pXG4gICAgICBlbHNlIGlmIGNhcGFjaXR5ID0gMFxuICAgICAgdGhlbiAxXG4gICAgICBlbHNlIEludC5jZWlsX3BvdzIgY2FwYWNpdHlcbiAgaW5cbiAgeyBudW1fbXV0YXRpb25zID0gMFxuICA7IGZyb250ID0gMFxuICA7IG1hc2sgPSBjYXBhY2l0eSAtIDFcbiAgOyBsZW5ndGggPSAwXG4gIDsgZWx0cyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpjYXBhY2l0eVxuICB9XG47O1xuXG5sZXQgYmxpdF90b19hcnJheSB+c3JjIGRzdCA9XG4gIGFzc2VydCAoc3JjLmxlbmd0aCA8PSBPcHRpb25fYXJyYXkubGVuZ3RoIGRzdCk7XG4gIGxldCBmcm9udF9sZW4gPSBJbnQubWluIHNyYy5sZW5ndGggKGNhcGFjaXR5IHNyYyAtIHNyYy5mcm9udCkgaW5cbiAgbGV0IHJlc3RfbGVuID0gc3JjLmxlbmd0aCAtIGZyb250X2xlbiBpblxuICBPcHRpb25fYXJyYXkuYmxpdCB+bGVuOmZyb250X2xlbiB+c3JjOnNyYy5lbHRzIH5zcmNfcG9zOnNyYy5mcm9udCB+ZHN0IH5kc3RfcG9zOjA7XG4gIE9wdGlvbl9hcnJheS5ibGl0IH5sZW46cmVzdF9sZW4gfnNyYzpzcmMuZWx0cyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6ZnJvbnRfbGVuXG47O1xuXG5sZXQgc2V0X2NhcGFjaXR5X2ludGVybmFsIHQgbmV3X2NhcGFjaXR5ID1cbiAgbGV0IGRzdCA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpuZXdfY2FwYWNpdHkgaW5cbiAgYmxpdF90b19hcnJheSB+c3JjOnQgZHN0O1xuICB0LmZyb250IDwtIDA7XG4gIHQubWFzayA8LSBuZXdfY2FwYWNpdHkgLSAxO1xuICB0LmVsdHMgPC0gZHN0XG47O1xuXG5sZXQgc2V0X2NhcGFjaXR5IHQgZGVzaXJlZF9jYXBhY2l0eSA9XG4gICgqIFdlIGFsbG93IGFyZ3VtZW50cyBsZXNzIHRoYW4gMSB0byBbc2V0X2NhcGFjaXR5XSwgYnV0IHRyYW5zbGF0ZSB0aGVtIHRvIDEgdG8gc2ltcGxpZnlcbiAgICAgdGhlIGNvZGUgdGhhdCByZWxpZXMgb24gdGhlIGFycmF5IGxlbmd0aCBiZWluZyBhIHBvd2VyIG9mIDIuICopXG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGxldCBuZXdfY2FwYWNpdHkgPSBJbnQuY2VpbF9wb3cyIChtYXggMSAobWF4IGRlc2lyZWRfY2FwYWNpdHkgdC5sZW5ndGgpKSBpblxuICBpZiBuZXdfY2FwYWNpdHkgPD4gY2FwYWNpdHkgdCB0aGVuIHNldF9jYXBhY2l0eV9pbnRlcm5hbCB0IG5ld19jYXBhY2l0eVxuOztcblxubGV0IGVucXVldWUgdCBhID1cbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgaWYgdC5sZW5ndGggPSBjYXBhY2l0eSB0IHRoZW4gc2V0X2NhcGFjaXR5X2ludGVybmFsIHQgKDIgKiB0Lmxlbmd0aCk7XG4gIHVuc2FmZV9zZXQgdCB0Lmxlbmd0aCBhO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBkZXF1ZXVlX25vbmVtcHR5IHQgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBsZXQgZWx0cyA9IHQuZWx0cyBpblxuICBsZXQgZnJvbnQgPSB0LmZyb250IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGVsdHMgZnJvbnQgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIGVsdHMgZnJvbnQ7XG4gIHQuZnJvbnQgPC0gZWx0c19pbmRleCB0IDE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgcmVzXG47O1xuXG5sZXQgZGVxdWV1ZV9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBTdGRsaWIuUXVldWUuRW1wdHkgZWxzZSBkZXF1ZXVlX25vbmVtcHR5IHRcbmxldCBkZXF1ZXVlIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGRlcXVldWVfbm9uZW1wdHkgdClcbmxldCBkZXF1ZXVlX2FuZF9pZ25vcmVfZXhuICh0eXBlIGVsdCkgKHQgOiBlbHQgdCkgPSBpZ25vcmUgKGRlcXVldWVfZXhuIHQgOiBlbHQpXG5sZXQgZnJvbnRfbm9uZW1wdHkgdCA9IE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHQuZWx0cyB0LmZyb250XG5sZXQgbGFzdF9ub25lbXB0eSB0ID0gdW5zYWZlX2dldCB0ICh0Lmxlbmd0aCAtIDEpXG5sZXQgcGVlayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChmcm9udF9ub25lbXB0eSB0KVxubGV0IHBlZWtfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2UgU3RkbGliLlF1ZXVlLkVtcHR5IGVsc2UgZnJvbnRfbm9uZW1wdHkgdFxubGV0IGxhc3QgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAobGFzdF9ub25lbXB0eSB0KVxubGV0IGxhc3RfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2UgU3RkbGliLlF1ZXVlLkVtcHR5IGVsc2UgbGFzdF9ub25lbXB0eSB0XG5cbmxldCBjbGVhciB0ID1cbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgaWYgdC5sZW5ndGggPiAwXG4gIHRoZW4gKFxuICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgIHVuc2FmZV91bnNldCB0IGlcbiAgICBkb25lO1xuICAgIHQubGVuZ3RoIDwtIDA7XG4gICAgdC5mcm9udCA8LSAwKVxuOztcblxubGV0IGJsaXRfdHJhbnNmZXIgfnNyYyB+ZHN0ID9sZW4gKCkgPVxuICBpbmNfbnVtX211dGF0aW9ucyBzcmM7XG4gIGluY19udW1fbXV0YXRpb25zIGRzdDtcbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IE5vbmUgLT4gc3JjLmxlbmd0aFxuICAgIHwgU29tZSBsZW4gLT5cbiAgICAgIGlmIGxlbiA8IDBcbiAgICAgIHRoZW5cbiAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICBcIlF1ZXVlLmJsaXRfdHJhbnNmZXI6IG5lZ2F0aXZlIGxlbmd0aFwiXG4gICAgICAgICAgICAgWyBcImxlbmd0aFwiLCBsZW4gfD4gSW50LnNleHBfb2ZfdCBdKTtcbiAgICAgIG1pbiBsZW4gc3JjLmxlbmd0aFxuICBpblxuICBpZiBsZW4gPiAwXG4gIHRoZW4gKFxuICAgIHNldF9jYXBhY2l0eSBkc3QgKG1heCAoY2FwYWNpdHkgZHN0KSAoZHN0Lmxlbmd0aCArIGxlbikpO1xuICAgIGxldCBkc3Rfc3RhcnQgPSBkc3QuZnJvbnQgKyBkc3QubGVuZ3RoIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICgqIFRoaXMgaXMgc2lnbmlmaWNhbnRseSBmYXN0ZXIgdGhhbiBzaW1wbHkgW2VucXVldWUgZHN0IChkZXF1ZXVlX25vbmVtcHR5IHNyYyldICopXG4gICAgICBsZXQgc3JjX2kgPSAoc3JjLmZyb250ICsgaSkgbGFuZCBzcmMubWFzayBpblxuICAgICAgbGV0IGRzdF9pID0gKGRzdF9zdGFydCArIGkpIGxhbmQgZHN0Lm1hc2sgaW5cbiAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWVcbiAgICAgICAgZHN0LmVsdHNcbiAgICAgICAgZHN0X2lcbiAgICAgICAgKE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHNyYy5lbHRzIHNyY19pKTtcbiAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmUgc3JjLmVsdHMgc3JjX2lcbiAgICBkb25lO1xuICAgIGRzdC5sZW5ndGggPC0gZHN0Lmxlbmd0aCArIGxlbjtcbiAgICBzcmMuZnJvbnQgPC0gKHNyYy5mcm9udCArIGxlbikgbGFuZCBzcmMubWFzaztcbiAgICBzcmMubGVuZ3RoIDwtIHNyYy5sZW5ndGggLSBsZW4pXG47O1xuXG5sZXQgZW5xdWV1ZV9hbGwgdCBsID1cbiAgKCogVHJhdmVyc2luZyB0aGUgbGlzdCB1cCBmcm9udCB0byBjb21wdXRlIGl0cyBsZW5ndGggaXMgcHJvYmFibHkgKGJ1dCBub3QgZGVmaW5pdGVseSlcbiAgICAgYmV0dGVyIHRoYW4gZG91YmxpbmcgdGhlIHVuZGVybHlpbmcgYXJyYXkgc2l6ZSBzZXZlcmFsIHRpbWVzIGZvciBsYXJnZSBxdWV1ZXMuICopXG4gIHNldF9jYXBhY2l0eSB0IChJbnQubWF4IChjYXBhY2l0eSB0KSAodC5sZW5ndGggKyBMaXN0Lmxlbmd0aCBsKSk7XG4gIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeClcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBpZiB0Lmxlbmd0aCA9IDBcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBudW1fbXV0YXRpb25zID0gdC5udW1fbXV0YXRpb25zIGluXG4gICAgbGV0IHIgPSByZWYgaW5pdCBpblxuICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpO1xuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9uc1xuICAgIGRvbmU7XG4gICAgIXIpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIGEgLT5cbiAgICBsZXQgYWNjID0gZiAhaSBhY2MgYSBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIGFjYykgW0Bub250YWlsXVxuOztcblxuXG4oKiBbaXRlcl0gaXMgaW1wbGVtZW50ZWQgZGlyZWN0bHkgYmVjYXVzZSBpbXBsZW1lbnRpbmcgaXQgaW4gdGVybXMgb2YgW2ZvbGRdIGlzXG4gICBzbG93ZXIuICopXG5sZXQgaXRlciB0IH5mID1cbiAgbGV0IG51bV9tdXRhdGlvbnMgPSB0Lm51bV9tdXRhdGlvbnMgaW5cbiAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgIGYgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgbGV0IG51bV9tdXRhdGlvbnMgPSB0Lm51bV9tdXRhdGlvbnMgaW5cbiAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCB0IGkpO1xuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnNcbiAgZG9uZVxuOztcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCByZXN1bHQgPSByZWYgW10gaW5cbiAgZm9yIGkgPSB0Lmxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICByZXN1bHQgOj0gdW5zYWZlX2dldCB0IGkgOjogIXJlc3VsdFxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5tb2R1bGUgQyA9IEluZGV4ZWRfY29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICAgIGxldCBmb2xkaSA9IGBDdXN0b20gZm9sZGlcbiAgICBsZXQgaXRlcmkgPSBgQ3VzdG9tIGl0ZXJpXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IG1lbSA9IEMubWVtXG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgY291bnRpID0gQy5jb3VudGlcbmxldCBleGlzdHNpID0gQy5leGlzdHNpXG5sZXQgZmluZF9tYXBpID0gQy5maW5kX21hcGlcbmxldCBmaW5kaSA9IEMuZmluZGlcbmxldCBmb3JfYWxsaSA9IEMuZm9yX2FsbGlcblxuXG4oKiBGb3IgW2NvbmNhdF9tYXBdLCBbZmlsdGVyX21hcF0sIGFuZCBbZmlsdGVyXSwgd2UgZG9uJ3QgY3JlYXRlIFt0X3Jlc3VsdF0gd2l0aCBbdF0nc1xuICAgY2FwYWNpdHkgYmVjYXVzZSB3ZSBoYXZlIG5vIGlkZWEgaG93IG1hbnkgZWxlbWVudHMgW3RfcmVzdWx0XSB3aWxsIHVsdGltYXRlbHkgaG9sZC4gKilcbmxldCBjb25jYXRfbWFwIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBMaXN0Lml0ZXIgKGYgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgdF9yZXN1bHQgYikpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGNvbmNhdF9tYXBpIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBMaXN0Lml0ZXIgKGYgaSBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT5cbiAgICBtYXRjaCBmIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgdF9yZXN1bHQgYik7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+XG4gICAgbWF0Y2ggZiBpIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgdF9yZXN1bHQgYik7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBlbnF1ZXVlIHRfcmVzdWx0IGEpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IGlmIGYgaSBhIHRoZW4gZW5xdWV1ZSB0X3Jlc3VsdCBhKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHQyID0gZmlsdGVyIHQgfmYgaW5cbiAgY2xlYXIgdDtcbiAgYmxpdF90cmFuc2ZlciB+c3JjOnQyIH5kc3Q6dCAoKVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHQyID0gZmlsdGVyaSB0IH5mIGluXG4gIGNsZWFyIHQ7XG4gIGJsaXRfdHJhbnNmZXIgfnNyYzp0MiB+ZHN0OnQgKClcbjs7XG5cbmxldCBjb3B5IHNyYyA9XG4gIGxldCBkc3QgPSBjcmVhdGUgfmNhcGFjaXR5OnNyYy5sZW5ndGggKCkgaW5cbiAgYmxpdF90b19hcnJheSB+c3JjIGRzdC5lbHRzO1xuICBkc3QubGVuZ3RoIDwtIHNyYy5sZW5ndGg7XG4gIGRzdFxuOztcblxubGV0IG9mX2xpc3QgbCA9XG4gICgqIFRyYXZlcnNpbmcgdGhlIGxpc3QgdXAgZnJvbnQgdG8gY29tcHV0ZSBpdHMgbGVuZ3RoIGlzIHByb2JhYmx5IChidXQgbm90IGRlZmluaXRlbHkpXG4gICAgIGJldHRlciB0aGFuIGRvdWJsaW5nIHRoZSB1bmRlcmx5aW5nIGFycmF5IHNpemUgc2V2ZXJhbCB0aW1lcyBmb3IgbGFyZ2UgcXVldWVzLiAqKVxuICBsZXQgdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6KExpc3QubGVuZ3RoIGwpICgpIGluXG4gIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeCk7XG4gIHRcbjs7XG5cbigqIFRoZSBxdWV1ZSBbdF0gcmV0dXJuZWQgYnkgW2NyZWF0ZV0gd2lsbCBoYXZlIFt0Lmxlbmd0aCA9IDBdLCBbdC5mcm9udCA9IDBdLCBhbmRcbiAgIFtjYXBhY2l0eSB0ID0gSW50LmNlaWxfcG93MiBsZW5dLiAgU28sIHdlIG9ubHkgaGF2ZSB0byBzZXQgW3QubGVuZ3RoXSB0byBbbGVuXSBhZnRlclxuICAgdGhlIGJsaXQgdG8gbWFpbnRhaW4gYWxsIHRoZSBpbnZhcmlhbnRzOiBbdC5sZW5ndGhdIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHNcbiAgIGluIHRoZSBxdWV1ZSwgW3QuZnJvbnRdIGlzIHRoZSBhcnJheSBpbmRleCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgcXVldWUsIGFuZFxuICAgW2NhcGFjaXR5IHQgPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0c10uICopXG5sZXQgaW5pdCBsZW4gfmYgPVxuICBpZiBsZW4gPCAwXG4gIHRoZW5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlIFwiUXVldWUuaW5pdDogbmVnYXRpdmUgbGVuZ3RoXCIgWyBcImxlbmd0aFwiLCBsZW4gfD4gSW50LnNleHBfb2ZfdCBdKTtcbiAgbGV0IHQgPSBjcmVhdGUgfmNhcGFjaXR5OmxlbiAoKSBpblxuICBhc3NlcnQgKE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzID49IGxlbik7XG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0LmVsdHMgaSAoZiBpKVxuICBkb25lO1xuICB0Lmxlbmd0aCA8LSBsZW47XG4gIHRcbjs7XG5cbmxldCBvZl9hcnJheSBhID0gaW5pdCAoQXJyYXkubGVuZ3RoIGEpIH5mOihBcnJheS51bnNhZmVfZ2V0IGEpXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgdC5sZW5ndGggfmY6KGZ1biBpIC0+IHVuc2FmZV9nZXQgdCBpKVxuXG5sZXQgbWFwIHRhIH5mID1cbiAgbGV0IG51bV9tdXRhdGlvbnMgPSB0YS5udW1fbXV0YXRpb25zIGluXG4gIGxldCB0YiA9IGNyZWF0ZSB+Y2FwYWNpdHk6dGEubGVuZ3RoICgpIGluXG4gIHRiLmxlbmd0aCA8LSB0YS5sZW5ndGg7XG4gIGZvciBpID0gMCB0byB0YS5sZW5ndGggLSAxIGRvXG4gICAgbGV0IGIgPSBmICh1bnNhZmVfZ2V0IHRhIGkpIGluXG4gICAgZW5zdXJlX25vX211dGF0aW9uIHRhIG51bV9tdXRhdGlvbnM7XG4gICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0Yi5lbHRzIGkgYlxuICBkb25lO1xuICB0YlxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbWFwIHQgfmY6KGZ1biBhIC0+XG4gICAgbGV0IHJlc3VsdCA9IGYgIWkgYSBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIHJlc3VsdCkgW0Bub250YWlsXVxuOztcblxubGV0IHNpbmdsZXRvbiB4ID1cbiAgbGV0IHQgPSBjcmVhdGUgfmNhcGFjaXR5OjEgKCkgaW5cbiAgZW5xdWV1ZSB0IHg7XG4gIHRcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSB0b19saXN0IHQgfD4gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID0gTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHNleHAgfD4gb2ZfbGlzdFxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gfFxuXG4gIGxldCB1bnJlYWNoYWJsZV9jb2RlID0gZnVuY3Rpb25cbiAgICB8IChfIDogdCkgLT4gLlxuICA7O1xuXG4gIGxldCBhbGwgPSBbXVxuICBsZXQgaGFzaF9mb2xkX3QgXyB0ID0gdW5yZWFjaGFibGVfY29kZSB0XG4gIGxldCBoYXNoID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgY29tcGFyZSBhIF8gPSB1bnJlYWNoYWJsZV9jb2RlIGFcbiAgbGV0IHNleHBfb2ZfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X3R5cGUgXCJCYXNlLk5vdGhpbmcudFwiIHNleHBcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0geyB1bnR5cGVkID0gVW5pb24gW10gfVxuICBsZXQgdG9fc3RyaW5nID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgb2Zfc3RyaW5nIChfIDogc3RyaW5nKSA9IGZhaWx3aXRoIFwiQmFzZS5Ob3RoaW5nLm9mX3N0cmluZzogbm90IHN1cHBvcnRlZFwiXG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5vdGhpbmdcIlxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZGxpYi5OYXRpdmVpbnRcbmluY2x1ZGUgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPVxuICAgIChnbG9iYWxpemVfbmF0aXZlaW50IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX25hdGl2ZWludFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfbmF0aXZlaW50IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChuYXRpdmVpbnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfbmF0aXZlaW50IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IG5hdGl2ZWludF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmVcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gIGxldCBvZl9zdHJpbmdfb3B0ID0gb2Zfc3RyaW5nX29wdFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gICAgdHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9uYXRpdmVpbnQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX25hdGl2ZWludFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX25hdGl2ZWludCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gbmVnXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiVueFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIlbnhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5OYXRpdmVpbnQuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5OYXRpdmVpbnRcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBudW1fYml0cyA9IFdvcmRfc2l6ZS5udW1fYml0cyBXb3JkX3NpemUud29yZF9zaXplXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBsb2dub3RcbmxldCBiaXRfeG9yID0gbG9neG9yXG5sZXQgYml0X29yID0gbG9nb3JcbmxldCBiaXRfYW5kID0gbG9nYW5kXG5sZXQgbWluX3ZhbHVlID0gbWluX2ludFxubGV0IG1heF92YWx1ZSA9IG1heF9pbnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWludXNfb25lID0gbWludXNfb25lXG5sZXQgb25lID0gb25lXG5sZXQgemVybyA9IHplcm9cbmxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gb2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJOYXRpdmVpbnQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuICBvcGVuIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBTdGRsaWIuTmF0aXZlaW50LmxvZ29yXG4gIGxldCAoIGxzciApID0gU3RkbGliLk5hdGl2ZWludC5zaGlmdF9yaWdodF9sb2dpY2FsXG4gIGxldCAoIGxhbmQgKSA9IFN0ZGxpYi5OYXRpdmVpbnQubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyICh4IDogbmF0aXZlaW50KSA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IFN0ZGxpYi5OYXRpdmVpbnQucHJlZCB4IGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICAoKiBUaGUgbmV4dCBsaW5lIGlzIHN1cGVyZmx1b3VzIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyBmYXN0ZXIgdG8gZG8gaXRcbiAgICAgICBhbnl3YXkgdGhhbiB0byBicmFuY2ggKilcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBTdGRsaWIuTmF0aXZlaW50LnN1Y2MgeFxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIFN0ZGxpYi5OYXRpdmVpbnQuc3ViIHggKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgU3RkbGliLk5hdGl2ZWludC5wcmVkIHggPSAwblxuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIG5hdGl2ZWludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAobmF0aXZlaW50W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2NselwiIFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChuYXRpdmVpbnRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIFN0ZGxpYi5OYXRpdmVpbnQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIltOYXRpdmVpbnQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgICBbIFwiXCIsIHNleHBfb2ZfbmF0aXZlaW50IGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgUG9seS4oIDw9ICkgaSBTdGRsaWIuTmF0aXZlaW50Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJbTmF0aXZlaW50LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgICBbIFwiXCIsIHNleHBfb2ZfbmF0aXZlaW50IGkgXSk7XG4gICAgaWYgU3RkbGliLk5hdGl2ZWludC5lcXVhbCBpIFN0ZGxpYi5OYXRpdmVpbnQub25lXG4gICAgdGhlbiAwXG4gICAgZWxzZSBudW1fYml0cyAtIGNseiAoU3RkbGliLk5hdGl2ZWludC5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0IGluY3IgciA9IHIgOj0gIXIgKyBvbmVcbmxldCBkZWNyIHIgPSByIDo9ICFyIC0gb25lXG5sZXQgb2ZfbmF0aXZlaW50IHQgPSB0XG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IG9mX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludCB0ID0gdFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50Lm5hdGl2ZWludF9wb3Bjb3VudFxubGV0IG9mX2ludCA9IENvbnYuaW50X3RvX25hdGl2ZWludFxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCB0b19pbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnRcbmxldCB0b19pbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50X2V4blxubGV0IHRvX2ludF90cnVuYyA9IENvbnYubmF0aXZlaW50X3RvX2ludF90cnVuY1xubGV0IG9mX2ludDMyID0gQ29udi5pbnQzMl90b19uYXRpdmVpbnRcbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJcbmxldCB0b19pbnQzMl9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl9leG5cbmxldCB0b19pbnQzMl90cnVuYyA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX3RydW5jXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX25hdGl2ZWludFxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X2V4blxubGV0IG9mX2ludDY0X3RydW5jID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IENvbnYubmF0aXZlaW50X3RvX2ludDY0XG5sZXQgcG93IGIgZSA9IG9mX2ludF9leG4gKEludF9tYXRoLlByaXZhdGUuaW50X3BvdyAodG9faW50X2V4biBiKSAodG9faW50X2V4biBlKSlcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgbGV0ICggKyApID0gKCArIClcbiAgbGV0ICggLSApID0gKCAtIClcbiAgbGV0ICggKiApID0gKCAqIClcbiAgbGV0ICggLyApID0gKCAvIClcbiAgbGV0ICggfi0gKSA9ICggfi0gKVxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSAoTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBsZXQgKCBsYW5kICkgPSBiaXRfYW5kXG4gIGxldCAoIGxvciApID0gYml0X29yXG4gIGxldCAoIGx4b3IgKSA9IGJpdF94b3JcbiAgbGV0IGxub3QgPSBiaXRfbm90XG4gIGxldCAoIGxzbCApID0gc2hpZnRfbGVmdFxuICBsZXQgKCBhc3IgKSA9IHNoaWZ0X3JpZ2h0XG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbFxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbTmF0aXZlaW50XSBhbmQgW05hdGl2ZWludC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmV4dGVybmFsIGJzd2FwIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWJzd2FwX25hdGl2ZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgMi4wIGxpY2Vuc2UuIFNlZSAuLi9USElSRC1QQVJUWS50eHQgICopXG4oKiAgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBNYXBfaW50ZlxuXG5tb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1hcF9pbnRmLkZpbmlzaGVkX29yX3VuZmluaXNoZWRcblxuICAoKiBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSB0ZXN0ZWQgaW4gW3Rlc3RfbWFwLm1sXSB0byBtYWtlIHN1cmUgb3VyIHVzZSBvZlxuICAgICBbU3RkbGliLk9iai5tYWdpY10gaXMgY29ycmVjdCBhbmQgc2FmZS4gKilcbiAgbGV0IG9mX2NvbnRpbnVlX29yX3N0b3AgOiBDb250aW51ZV9vcl9zdG9wLnQgLT4gdCA9IFN0ZGxpYi5PYmoubWFnaWNcbiAgbGV0IHRvX2NvbnRpbnVlX29yX3N0b3AgOiB0IC0+IENvbnRpbnVlX29yX3N0b3AudCA9IFN0ZGxpYi5PYmoubWFnaWNcbmVuZFxuXG5tb2R1bGUgTWVyZ2VfZWxlbWVudCA9IHN0cnVjdFxuICBpbmNsdWRlIE1hcF9pbnRmLk1lcmdlX2VsZW1lbnRcblxuICBsZXQgbGVmdCA9IGZ1bmN0aW9uXG4gICAgfCBgUmlnaHQgXyAtPiBOb25lXG4gICAgfCBgTGVmdCBsZWZ0IHwgYEJvdGggKGxlZnQsIF8pIC0+IFNvbWUgbGVmdFxuICA7O1xuXG4gIGxldCByaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICB8IGBSaWdodCByaWdodCB8IGBCb3RoIChfLCByaWdodCkgLT4gU29tZSByaWdodFxuICA7O1xuXG4gIGxldCBsZWZ0X3ZhbHVlIHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYFJpZ2h0IF8gLT4gZGVmYXVsdFxuICAgIHwgYExlZnQgbGVmdCB8IGBCb3RoIChsZWZ0LCBfKSAtPiBsZWZ0XG4gIDs7XG5cbiAgbGV0IHJpZ2h0X3ZhbHVlIHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYExlZnQgXyAtPiBkZWZhdWx0XG4gICAgfCBgUmlnaHQgcmlnaHQgfCBgQm90aCAoXywgcmlnaHQpIC0+IHJpZ2h0XG4gIDs7XG5cbiAgbGV0IHZhbHVlcyB0IH5sZWZ0X2RlZmF1bHQgfnJpZ2h0X2RlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYExlZnQgbGVmdCAtPiBsZWZ0LCByaWdodF9kZWZhdWx0XG4gICAgfCBgUmlnaHQgcmlnaHQgLT4gbGVmdF9kZWZhdWx0LCByaWdodFxuICAgIHwgYEJvdGggKGxlZnQsIHJpZ2h0KSAtPiBsZWZ0LCByaWdodFxuICA7O1xuZW5kXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbmV4Y2VwdGlvbiBEdXBsaWNhdGUgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBEdXBsaWNhdGVdIChmdW5jdGlvblxuICAgIHwgRHVwbGljYXRlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIm1hcC5tbC5EdXBsaWNhdGVcIlxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG4oKiBbV2l0aF9sZW5ndGgudF0gYWxsb3dzIHVzIHRvIHN0b3JlIGxlbmd0aCBpbmZvcm1hdGlvbiBvbiB0aGUgc3RhY2sgd2hpbGVcbiAgIGtlZXBpbmcgdGhlIHRyZWUgZ2xvYmFsLiBUaGlzIHNhdmVzIHVwIHRvIE8obG9nIG4pIGJsb2NrcyBvZiBoZWFwIGFsbG9jYXRpb24uICopXG5tb2R1bGUgV2l0aF9sZW5ndGggOiBzaWdcbiAgdHlwZSAnYSB0ID0gcHJpdmF0ZVxuICAgIHsgdHJlZSA6ICdhXG4gICAgICAgICAgICAgW0BnbG9iYWxdXG4gICAgOyBsZW5ndGggOiBpbnQgW0BnbG9iYWxdXG4gICAgfVxuXG4gIHZhbCB3aXRoX2xlbmd0aCA6ICdhIC0+IGludCAtPiAoJ2EgdFtAbG9jYWxdKVxuICB2YWwgd2l0aF9sZW5ndGhfZ2xvYmFsIDogJ2EgLT4gaW50IC0+ICdhIHRcbiAgdmFsIGdsb2JhbGl6ZSA6ICgnYSB0W0Bsb2NhbF0pIC0+ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgdHJlZSA6ICdhIFtAZ2xvYmFsXVxuICAgIDsgbGVuZ3RoIDogaW50IFtAZ2xvYmFsXVxuICAgIH1cblxuICBsZXQgd2l0aF9sZW5ndGggdHJlZSBsZW5ndGggPSAgeyB0cmVlOyBsZW5ndGggfVxuICBsZXQgd2l0aF9sZW5ndGhfZ2xvYmFsIHRyZWUgbGVuZ3RoID0geyB0cmVlOyBsZW5ndGggfVxuICBsZXQgZ2xvYmFsaXplICh7IHRyZWU7IGxlbmd0aCB9IFtAbG9jYWxdKSA9IHsgdHJlZTsgbGVuZ3RoIH1cbmVuZFxuXG5vcGVuIFdpdGhfbGVuZ3RoXG5cbm1vZHVsZSBUcmVlMCA9IHN0cnVjdFxuICB0eXBlICgnaywgJ3YpIHQgPVxuICAgIHwgRW1wdHlcbiAgICB8IExlYWYgb2YgJ2sgKiAndlxuICAgIHwgTm9kZSBvZiAoJ2ssICd2KSB0ICogJ2sgKiAndiAqICgnaywgJ3YpIHQgKiBpbnRcblxuICB0eXBlICgnaywgJ3YpIHRyZWUgPSAoJ2ssICd2KSB0XG5cbiAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAoXywgXywgXywgXywgaCkgLT4gaFxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRzID1cbiAgICBsZXQgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkgayA9XG4gICAgICAobWF0Y2ggbG93ZXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgfCBTb21lIGxvd2VyIC0+IGNvbXBhcmVfa2V5IGxvd2VyIGsgPCAwKVxuICAgICAgJiZcbiAgICAgIG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICB8IFNvbWUgdXBwZXIgLT4gY29tcGFyZV9rZXkgayB1cHBlciA8IDBcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBsb3dlciB1cHBlciBjb21wYXJlX2tleSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgICB8IExlYWYgKGssIF8pIC0+IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IGtcbiAgICAgIHwgTm9kZSAobCwgaywgXywgciwgaCkgLT5cbiAgICAgICAgbGV0IGhsID0gaGVpZ2h0IGxcbiAgICAgICAgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgICAgYWJzIChobCAtIGhyKSA8PSAyXG4gICAgICAgICYmIGggPSBtYXggaGwgaHIgKyAxXG4gICAgICAgICYmIGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IGtcbiAgICAgICAgJiYgbG9vcCBsb3dlciAoU29tZSBrKSBjb21wYXJlX2tleSBsXG4gICAgICAgICYmIGxvb3AgKFNvbWUgaykgdXBwZXIgY29tcGFyZV9rZXkgclxuICAgIGluXG4gICAgZnVuIHQgfmNvbXBhcmVfa2V5IC0+IGxvb3AgTm9uZSBOb25lIGNvbXBhcmVfa2V5IHRcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobCkgLSBoZWlnaHQocil8IDw9IDIgKilcbiAgbGV0IGNyZWF0ZSBsIHggZCByID1cbiAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgaWYgaGwgPSAwICYmIGhyID0gMFxuICAgIHRoZW4gTGVhZiAoeCwgZClcbiAgICBlbHNlIE5vZGUgKGwsIHgsIGQsIHIsIGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKVxuICA7O1xuXG4gIGxldCBzaW5nbGV0b24ga2V5IGRhdGEgPSBMZWFmIChrZXksIGRhdGEpXG5cbiAgKCogV2UgbXVzdCBjYWxsIFtmXSB3aXRoIGluY3JlYXNpbmcgaW5kZXhlcywgYmVjYXVzZSB0aGUgYmluX3Byb3QgcmVhZGVyIGluXG4gICAgIENvcmUuTWFwIG5lZWRzIGl0LiAqKVxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIG4gfmYgaSA6IChfLCBfKSB0ID1cbiAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgfCAwIC0+IEVtcHR5XG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IGssIHYgPSBmIGkgaW5cbiAgICAgICAgTGVhZiAoaywgdilcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQga2wsIHZsID0gZiBpIGluXG4gICAgICAgIGxldCBrLCB2ID0gZiAoaSArIDEpIGluXG4gICAgICAgIE5vZGUgKExlYWYgKGtsLCB2bCksIGssIHYsIEVtcHR5LCAyKVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBrbCwgdmwgPSBmIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgMSkgaW5cbiAgICAgICAgbGV0IGtyLCB2ciA9IGYgKGkgKyAyKSBpblxuICAgICAgICBOb2RlIChMZWFmIChrbCwgdmwpLCBrLCB2LCBMZWFmIChrciwgdnIpLCAyKVxuICAgICAgfCBuIC0+XG4gICAgICAgIGxldCBsZWZ0X2xlbmd0aCA9IG4gbHNyIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X2xlbmd0aCA9IG4gLSBsZWZ0X2xlbmd0aCAtIDEgaW5cbiAgICAgICAgbGV0IGxlZnQgPSBsb29wIGxlZnRfbGVuZ3RoIH5mIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgbGVmdF9sZW5ndGgpIGluXG4gICAgICAgIGxldCByaWdodCA9IGxvb3AgcmlnaHRfbGVuZ3RoIH5mIChpICsgbGVmdF9sZW5ndGggKyAxKSBpblxuICAgICAgICBjcmVhdGUgbGVmdCBrIHYgcmlnaHRcbiAgICBpblxuICAgIGxvb3AgbGVuIH5mIDBcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBhcnJheV9sZW5ndGggPSBBcnJheS5sZW5ndGggYXJyYXkgaW5cbiAgICBsZXQgbmV4dCA9XG4gICAgICBpZiBhcnJheV9sZW5ndGggPCAyXG4gICAgICAgICB8fFxuICAgICAgICAgbGV0IGswLCBfID0gYXJyYXkuKDApIGluXG4gICAgICAgICBsZXQgazEsIF8gPSBhcnJheS4oMSkgaW5cbiAgICAgICAgIGNvbXBhcmVfa2V5IGswIGsxIDwgMFxuICAgICAgdGhlbiBmdW4gaSAtPiBhcnJheS4oaSlcbiAgICAgIGVsc2UgZnVuIGkgLT4gYXJyYXkuKGFycmF5X2xlbmd0aCAtIDEgLSBpKVxuICAgIGluXG4gICAgXG4gICAgICAod2l0aF9sZW5ndGhcbiAgICAgICAgIChvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuOmFycmF5X2xlbmd0aCB+ZjpuZXh0KVxuICAgICAgICAgYXJyYXlfbGVuZ3RoKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCBhcnJheSB3aXRoXG4gICAgfCBbfHxdIHwgW3wgXyB8XSAtPlxuICAgICAgUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSB8PiBnbG9iYWxpemUpXG4gICAgfCBfIC0+XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IGluY3JlYXNpbmcgPVxuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfa2V5IChmc3QgYXJyYXkuKDApKSAoZnN0IGFycmF5LigxKSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+IGkgPCAwXG4gICAgICAgIGluXG4gICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAyIGRvXG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9rZXkgKGZzdCBhcnJheS4oaSkpIChmc3QgYXJyYXkuKGkgKyAxKSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+XG4gICAgICAgICAgICBpZiBQb2x5LiggPD4gKSAoaSA8IDApIGluY3JlYXNpbmdcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZWxlbWVudHMgYXJlIG5vdCBvcmRlcmVkXCIpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXkgfD4gZ2xvYmFsaXplKSlcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobCkgLSBoZWlnaHQocil8IDw9IDMgKilcbiAgbGV0IGJhbCBsIHggZCByID1cbiAgICBsZXQgaGwgPSBoZWlnaHQgbCBpblxuICAgIGxldCBociA9IGhlaWdodCByIGluXG4gICAgaWYgaGwgPiBociArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGhlaWdodChMZWFmKSA9IDEgJiYgMSBpcyBub3QgbGFyZ2VyIHRoYW4gaHIgKyAyICopXG4gICAgICB8IE5vZGUgKGxsLCBsdiwgbGQsIGxyLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyXG4gICAgICAgIHRoZW4gY3JlYXRlIGxsIGx2IGxkIChjcmVhdGUgbHIgeCBkIHIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgfCBMZWFmIChscnYsIGxyZCkgLT4gY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgRW1wdHkpIGxydiBscmQgKGNyZWF0ZSBFbXB0eSB4IGQgcilcbiAgICAgICAgICB8IE5vZGUgKGxybCwgbHJ2LCBscmQsIGxyciwgXykgLT5cbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxkIGxybCkgbHJ2IGxyZCAoY3JlYXRlIGxyciB4IGQgcikpKVxuICAgIGVsc2UgaWYgaHIgPiBobCArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGhlaWdodChMZWFmKSA9IDEgJiYgMSBpcyBub3QgbGFyZ2VyIHRoYW4gaGwgKyAyICopXG4gICAgICB8IE5vZGUgKHJsLCBydiwgcmQsIHJyLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsXG4gICAgICAgIHRoZW4gY3JlYXRlIChjcmVhdGUgbCB4IGQgcmwpIHJ2IHJkIHJyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgfCBMZWFmIChybHYsIHJsZCkgLT4gY3JlYXRlIChjcmVhdGUgbCB4IGQgRW1wdHkpIHJsdiBybGQgKGNyZWF0ZSBFbXB0eSBydiByZCBycilcbiAgICAgICAgICB8IE5vZGUgKHJsbCwgcmx2LCBybGQsIHJsciwgXykgLT5cbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsbCkgcmx2IHJsZCAoY3JlYXRlIHJsciBydiByZCBycikpKVxuICAgIGVsc2UgY3JlYXRlIGwgeCBkIHJcbiAgOztcblxuICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQgfmtleSB+c2V4cF9vZl9rZXkgPVxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2UgXCJbTWFwLmFkZF9leG5dIGdvdCBrZXkgYWxyZWFkeSBwcmVzZW50XCIgWyBcImtleVwiLCBrZXkgfD4gc2V4cF9vZl9rZXkgXSlcbiAgOztcblxuICBtb2R1bGUgQWRkX29yX3NldCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEFkZF9leG5faW50ZXJuYWxcbiAgICAgIHwgQWRkX2V4blxuICAgICAgfCBTZXRcbiAgZW5kXG5cbiAgbGV0IHJlYyBmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICAgICAgICB0XG4gICAgICAgICAgICB+bGVuZ3RoXG4gICAgICAgICAgICB+a2V5OnhcbiAgICAgICAgICAgIH5kYXRhXG4gICAgICAgICAgICB+Y29tcGFyZV9rZXlcbiAgICAgICAgICAgIH5zZXhwX29mX2tleVxuICAgICAgICAgICAgfihhZGRfb3Jfc2V0IDogQWRkX29yX3NldC50KVxuICAgID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICAod2l0aF9sZW5ndGggKExlYWYgKHgsIGRhdGEpKSAobGVuZ3RoICsgMSkpXG4gICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggYWRkX29yX3NldCB3aXRoXG4gICAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbCAtPiAgKEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBEdXBsaWNhdGUpXG4gICAgICAgIHwgQWRkX2V4biAtPiAgKHJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQgfmtleTp4IH5zZXhwX29mX2tleSlcbiAgICAgICAgfCBTZXQgLT4gICh3aXRoX2xlbmd0aCAoTGVhZiAoeCwgZGF0YSkpIGxlbmd0aCkpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuICAod2l0aF9sZW5ndGggKE5vZGUgKExlYWYgKHgsIGRhdGEpLCB2LCBkLCBFbXB0eSwgMikpIChsZW5ndGggKyAxKSlcbiAgICAgIGVsc2UgICh3aXRoX2xlbmd0aCAoTm9kZSAoRW1wdHksIHYsIGQsIExlYWYgKHgsIGRhdGEpLCAyKSkgKGxlbmd0aCArIDEpKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGFkZF9vcl9zZXQgd2l0aFxuICAgICAgICB8IEFkZF9leG5faW50ZXJuYWwgLT4gIChFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgRHVwbGljYXRlKVxuICAgICAgICB8IEFkZF9leG4gLT4gIChyYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50IH5rZXk6eCB+c2V4cF9vZl9rZXkpXG4gICAgICAgIHwgU2V0IC0+ICAod2l0aF9sZW5ndGggKE5vZGUgKGwsIHgsIGRhdGEsIHIsIGgpKSBsZW5ndGgpKVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB7IHRyZWUgPSBsOyBsZW5ndGggfSA9XG4gICAgICAgICAgZmluZF9hbmRfYWRkX29yX3NldCB+bGVuZ3RoIH5rZXk6eCB+ZGF0YSBsIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgfmFkZF9vcl9zZXRcbiAgICAgICAgaW5cbiAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHsgdHJlZSA9IHI7IGxlbmd0aCB9ID1cbiAgICAgICAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0IH5sZW5ndGggfmtleTp4IH5kYXRhIHIgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB+YWRkX29yX3NldFxuICAgICAgICBpblxuICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgOztcblxuICAoKiBzcGVjaWFsaXphdGlvbiBvZiBbc2V0J10gZm9yIHRoZSBjYXNlIHdoZW4gW2tleV0gaXMgbGVzcyB0aGFuIGFsbCB0aGUgZXhpc3Rpbmcga2V5cyAqKVxuICBsZXQgcmVjIHNldF9taW4ga2V5IGRhdGEgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBMZWFmIChrZXksIGRhdGEpXG4gICAgfCBMZWFmICh2LCBkKSAtPiBOb2RlIChMZWFmIChrZXksIGRhdGEpLCB2LCBkLCBFbXB0eSwgMilcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgbCA9IHNldF9taW4ga2V5IGRhdGEgbCBpblxuICAgICAgYmFsIGwgdiBkIHJcbiAgOztcblxuICAoKiBzcGVjaWFsaXphdGlvbiBvZiBbc2V0J10gZm9yIHRoZSBjYXNlIHdoZW4gW2tleV0gaXMgZ3JlYXRlciB0aGFuIGFsbCB0aGVcbiAgICAgZXhpc3Rpbmcga2V5cyAgKilcbiAgbGV0IHJlYyBzZXRfbWF4IHQga2V5IGRhdGEgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTGVhZiAoa2V5LCBkYXRhKVxuICAgIHwgTGVhZiAodiwgZCkgLT4gTm9kZSAoRW1wdHksIHYsIGQsIExlYWYgKGtleSwgZGF0YSksIDIpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgbGV0IHIgPSBzZXRfbWF4IHIga2V5IGRhdGEgaW5cbiAgICAgIGJhbCBsIHYgZCByXG4gIDs7XG5cbiAgbGV0IGFkZF9leG4gdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgXG4gICAgICAoZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgICAgdFxuICAgICAgICAgfmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleVxuICAgICAgICAgfnNleHBfb2Zfa2V5XG4gICAgICAgICB+YWRkX29yX3NldDpBZGRfZXhuKVxuICA7O1xuXG4gIGxldCBhZGRfZXhuX2ludGVybmFsIHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgPVxuICAgIFxuICAgICAgKGZpbmRfYW5kX2FkZF9vcl9zZXRcbiAgICAgICAgIHRcbiAgICAgICAgIH5sZW5ndGhcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+Y29tcGFyZV9rZXlcbiAgICAgICAgIH5zZXhwX29mX2tleVxuICAgICAgICAgfmFkZF9vcl9zZXQ6QWRkX2V4bl9pbnRlcm5hbClcbiAgOztcblxuICBsZXQgc2V0IHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSA9XG4gICAgXG4gICAgICAoZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgICAgdFxuICAgICAgICAgfmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleVxuICAgICAgICAgfnNleHBfb2Zfa2V5OihmdW4gXyAtPiBMaXN0IFtdKVxuICAgICAgICAgfmFkZF9vcl9zZXQ6U2V0KVxuICA7O1xuXG4gIGxldCBzZXQnIHQga2V5IGRhdGEgfmNvbXBhcmVfa2V5ID0gKHNldCB0IH5sZW5ndGg6MCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSkudHJlZVxuXG4gIG1vZHVsZSBCdWlsZF9pbmNyZWFzaW5nID0gc3RydWN0XG4gICAgbW9kdWxlIEZyYWdtZW50ID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2ssICd2KSB0ID1cbiAgICAgICAgeyBsZWZ0X3N1YnRyZWUgOiAoJ2ssICd2KSB0XG4gICAgICAgIDsga2V5IDogJ2tcbiAgICAgICAgOyBkYXRhIDogJ3ZcbiAgICAgICAgfVxuXG4gICAgICBsZXQgc2luZ2xldG9uX3RvX3RyZWVfZXhuID0gZnVuY3Rpb25cbiAgICAgICAgfCB7IGxlZnRfc3VidHJlZSA9IEVtcHR5OyBrZXk7IGRhdGEgfSAtPiBzaW5nbGV0b24ga2V5IGRhdGFcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwiTWFwLnNpbmdsZXRvbl90b190cmVlX2V4bjogbm90IGEgc2luZ2xldG9uXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzaW5nbGV0b24gfmtleSB+ZGF0YSA9IHsgbGVmdF9zdWJ0cmVlID0gRW1wdHk7IGtleTsgZGF0YSB9XG5cbiAgICAgICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsLmxlZnRfc3VidHJlZSkgLSBoZWlnaHQocil8IDw9IDIsXG4gICAgICAgICBtYXhfa2V5KGwpIDwgbWluX2tleShyKVxuICAgICAgKilcbiAgICAgIGxldCBjb2xsYXBzZSBsIHIgPSBjcmVhdGUgbC5sZWZ0X3N1YnRyZWUgbC5rZXkgbC5kYXRhIHJcblxuICAgICAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwubGVmdF9zdWJ0cmVlKSAtIGhlaWdodChyLmxlZnRfc3VidHJlZSl8IDw9IDIsXG4gICAgICAgICBtYXhfa2V5KGwpIDwgbWluX2tleShyKVxuICAgICAgKilcbiAgICAgIGxldCBqb2luIGwgciA9IHsgciB3aXRoIGxlZnRfc3VidHJlZSA9IGNvbGxhcHNlIGwgci5sZWZ0X3N1YnRyZWUgfVxuICAgICAgbGV0IG1heF9rZXkgdCA9IHQua2V5XG4gICAgZW5kXG5cbiAgICAoKiogQnVpbGQgdHJlZXMgZnJvbSBzaW5nbGV0b25zIGluIGEgYmFsYW5jZWQgd2F5IGJ5IHVzaW5nIHNrZXcgYmluYXJ5IGVuY29kaW5nLlxuICAgICAgICBFYWNoIGxldmVsIGNvbnRhaW5zIHRyZWVzIG9mIHRoZSBzYW1lIGhlaWdodCwgY29uc2VjdXRpdmUgbGV2ZWxzIGhhdmUgY29uc2VjdXRpdmVcbiAgICAgICAgaGVpZ2h0cy4gVGhlcmUgYXJlIG5vIGdhcHMuIFRoZSBmaXJzdCBsZXZlbCBhcmUgc2luZ2xlIGtleXMuXG4gICAgKilcbiAgICB0eXBlICgnaywgJ3YpIHQgPVxuICAgICAgfCBaZXJvIG9mIHVuaXRcbiAgICAgICgqIFt1bml0XSB0byBtYWtlIHBhdHRlcm4gbWF0Y2hpbmcgZmFzdGVyICopXG4gICAgICB8IE9uZSBvZiAoJ2ssICd2KSB0ICogKCdrLCAndikgRnJhZ21lbnQudFxuICAgICAgfCBUd28gb2YgKCdrLCAndikgdCAqICgnaywgJ3YpIEZyYWdtZW50LnQgKiAoJ2ssICd2KSBGcmFnbWVudC50XG5cbiAgICBsZXQgZW1wdHkgPSBaZXJvICgpXG5cbiAgICBsZXQgYWRkX3VuY2hlY2tlZCA9XG4gICAgICBsZXQgcmVjIGdvIHQgeCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFplcm8gKCkgLT4gT25lICh0LCB4KVxuICAgICAgICB8IE9uZSAodCwgeSkgLT4gVHdvICh0LCB5LCB4KVxuICAgICAgICB8IFR3byAodCwgeiwgeSkgLT4gT25lIChnbyB0IChGcmFnbWVudC5qb2luIHogeSksIHgpXG4gICAgICBpblxuICAgICAgZnVuIHQgfmtleSB+ZGF0YSAtPiBnbyB0IChGcmFnbWVudC5zaW5nbGV0b24gfmtleSB+ZGF0YSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RyZWVfdW5jaGVja2VkID1cbiAgICAgIGxldCByZWMgZ28gdCByID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgWmVybyAoKSAtPiByXG4gICAgICAgIHwgT25lICh0LCBsKSAtPiBnbyB0IChGcmFnbWVudC5jb2xsYXBzZSBsIHIpXG4gICAgICAgIHwgVHdvICh0LCBsbCwgbCkgLT4gZ28gdCAoRnJhZ21lbnQuY29sbGFwc2UgKEZyYWdtZW50LmpvaW4gbGwgbCkgcilcbiAgICAgIGluXG4gICAgICBmdW5jdGlvblxuICAgICAgfCBaZXJvICgpIC0+IEVtcHR5XG4gICAgICB8IE9uZSAodCwgcikgLT4gZ28gdCAoRnJhZ21lbnQuc2luZ2xldG9uX3RvX3RyZWVfZXhuIHIpXG4gICAgICB8IFR3byAodCwgbCwgcikgLT4gZ28gKE9uZSAodCwgbCkpIChGcmFnbWVudC5zaW5nbGV0b25fdG9fdHJlZV9leG4gcilcbiAgICA7O1xuXG4gICAgbGV0IG1heF9rZXkgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvICgpIC0+IE5vbmVcbiAgICAgIHwgT25lIChfLCByKSB8IFR3byAoXywgXywgcikgLT4gU29tZSAoRnJhZ21lbnQubWF4X2tleSByKVxuICAgIDs7XG4gIGVuZFxuXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleSA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICBsZXQgeyB0cmVlID0gYnVpbGRlcjsgbGVuZ3RoIH0gPVxuICAgICAgICBTZXF1ZW5jZS5mb2xkXG4gICAgICAgICAgc2VxXG4gICAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBCdWlsZF9pbmNyZWFzaW5nLmVtcHR5IDApXG4gICAgICAgICAgfmY6KGZ1biB7IHRyZWUgPSBidWlsZGVyOyBsZW5ndGggfSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICAgbWF0Y2ggQnVpbGRfaW5jcmVhc2luZy5tYXhfa2V5IGJ1aWxkZXIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHByZXZfa2V5IHdoZW4gY29tcGFyZV9rZXkgcHJldl9rZXkga2V5ID49IDAgLT5cbiAgICAgICAgICAgICAgcmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlOiBub24taW5jcmVhc2luZyBrZXlcIilcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICB3aXRoX2xlbmd0aF9nbG9iYWxcbiAgICAgICAgICAgICAgICAoQnVpbGRfaW5jcmVhc2luZy5hZGRfdW5jaGVja2VkIGJ1aWxkZXIgfmtleSB+ZGF0YSlcbiAgICAgICAgICAgICAgICAobGVuZ3RoICsgMSkpXG4gICAgICBpblxuICAgICAgT2sgKHdpdGhfbGVuZ3RoX2dsb2JhbCAoQnVpbGRfaW5jcmVhc2luZy50b190cmVlX3VuY2hlY2tlZCBidWlsZGVyKSBsZW5ndGgpKVxuICA7O1xuXG4gICgqIExpa2UgW2JhbF0gYnV0IGFsbG93cyBhbnkgZGlmZmVyZW5jZSBpbiBoZWlnaHQgYmV0d2VlbiBbbF0gYW5kIFtyXS5cblxuICAgICBPKHxoZWlnaHQgbCAtIGhlaWdodCByfCkgKilcbiAgbGV0IHJlYyBqb2luIGwgayBkIHIgPVxuICAgIG1hdGNoIGwsIHIgd2l0aFxuICAgIHwgRW1wdHksIF8gLT4gc2V0X21pbiBrIGQgclxuICAgIHwgXywgRW1wdHkgLT4gc2V0X21heCBsIGsgZFxuICAgIHwgTGVhZiAobGssIGxkKSwgXyAtPiBzZXRfbWluIGxrIGxkIChzZXRfbWluIGsgZCByKVxuICAgIHwgXywgTGVhZiAocmssIHJkKSAtPiBzZXRfbWF4IChzZXRfbWF4IGwgayBkKSByayByZFxuICAgIHwgTm9kZSAobGwsIGxrLCBsZCwgbHIsIGxoKSwgTm9kZSAocmwsIHJrLCByZCwgcnIsIHJoKSAtPlxuICAgICAgKCogW2JhbF0gcmVxdWlyZXMgaGVpZ2h0IGRpZmZlcmVuY2UgPD0gMy4gKilcbiAgICAgIGlmIGxoID4gcmggKyAzXG4gICAgICAoKiBbaGVpZ2h0IGxyID49IGhlaWdodCByXSxcbiAgICAgICAgIHRoZXJlZm9yZSBbaGVpZ2h0IChqb2luIGxyIGsgZCByIC4uLildIGlzIFtoZWlnaHQgcmwgKyAxXSBvciBbaGVpZ2h0IHJsXVxuICAgICAgICAgdGhlcmVmb3JlIHRoZSBoZWlnaHQgZGlmZmVyZW5jZSB3aXRoIFtsbF0gd2lsbCBiZSA8PSAzICopXG4gICAgICB0aGVuIGJhbCBsbCBsayBsZCAoam9pbiBsciBrIGQgcilcbiAgICAgIGVsc2UgaWYgcmggPiBsaCArIDNcbiAgICAgIHRoZW4gYmFsIChqb2luIGwgayBkIHJsKSByayByZCByclxuICAgICAgZWxzZSBiYWwgbCBrIGQgclxuICA7O1xuXG4gIGxldFtAaW5saW5lXSByZWMgc3BsaXRfZ2VuIHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHksIE5vbmUsIEVtcHR5XG4gICAgfCBMZWFmIChrLCBkKSAtPlxuICAgICAgbGV0IGNtcCA9IGNvbXBhcmVfa2V5IGsgaW5cbiAgICAgIGlmIGNtcCA9IDBcbiAgICAgIHRoZW4gRW1wdHksIFNvbWUgKGssIGQpLCBFbXB0eVxuICAgICAgZWxzZSBpZiBjbXAgPCAwXG4gICAgICB0aGVuIEVtcHR5LCBOb25lLCB0XG4gICAgICBlbHNlIHQsIE5vbmUsIEVtcHR5XG4gICAgfCBOb2RlIChsLCBrLCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGNtcCA9IGNvbXBhcmVfa2V5IGsgaW5cbiAgICAgIGlmIGNtcCA9IDBcbiAgICAgIHRoZW4gbCwgU29tZSAoaywgZCksIHJcbiAgICAgIGVsc2UgaWYgY21wIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBsbCwgbWF5YmUsIGxyID0gc3BsaXRfZ2VuIGwgeCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgbGwsIG1heWJlLCBqb2luIGxyIGsgZCByKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBybCwgbWF5YmUsIHJyID0gc3BsaXRfZ2VuIHIgeCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgam9pbiBsIGsgZCBybCwgbWF5YmUsIHJyKVxuICA7O1xuXG4gIGxldCBzcGxpdCB0IHggfmNvbXBhcmVfa2V5ID0gc3BsaXRfZ2VuIHQgeCB+Y29tcGFyZV9rZXk6KGZ1biB5IC0+IGNvbXBhcmVfa2V5IHggeSlcblxuICAoKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJlYWxseSByZWluc2VydCBbeF0sIGJ1dCBqdXN0IGFycmFuZ2VzIHNvIHRoYXQgW3NwbGl0XVxuICAgICBwcm9kdWNlcyB0aGUgZXF1aXZhbGVudCB0cmVlIGluIHRoZSBmaXJzdCBwbGFjZS4gKilcbiAgbGV0IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB0IH5pbnRvIHggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgbGVmdCwgYm91bmRhcnlfb3B0LCByaWdodCA9XG4gICAgICBzcGxpdF9nZW5cbiAgICAgICAgdFxuICAgICAgICB4XG4gICAgICAgIH5jb21wYXJlX2tleTpcbiAgICAgICAgICAobWF0Y2ggaW50byB3aXRoXG4gICAgICAgICAgIHwgYExlZnQgLT5cbiAgICAgICAgICAgICBmdW4geSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfa2V5IHggeSB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IDFcbiAgICAgICAgICAgICAgICB8IHJlcyAtPiByZXMpXG4gICAgICAgICAgIHwgYFJpZ2h0IC0+XG4gICAgICAgICAgICAgZnVuIHkgLT5cbiAgICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2tleSB4IHkgd2l0aFxuICAgICAgICAgICAgICAgIHwgMCAtPiAtMVxuICAgICAgICAgICAgICAgIHwgcmVzIC0+IHJlcykpXG4gICAgaW5cbiAgICBhc3NlcnQgKE9wdGlvbi5pc19ub25lIGJvdW5kYXJ5X29wdCk7XG4gICAgbGVmdCwgcmlnaHRcbiAgOztcblxuICBsZXQgc3BsaXRfcmFuZ2VcbiAgICAgICAgdFxuICAgICAgICB+KGxvd2VyX2JvdW5kIDogJ2EgTWF5YmVfYm91bmQudClcbiAgICAgICAgfih1cHBlcl9ib3VuZCA6ICdhIE1heWJlX2JvdW5kLnQpXG4gICAgICAgIH5jb21wYXJlX2tleVxuICAgID1cbiAgICBpZiBNYXliZV9ib3VuZC5ib3VuZHNfY3Jvc3NlZFxuICAgICAgICAgfmNvbXBhcmU6Y29tcGFyZV9rZXlcbiAgICAgICAgIH5sb3dlcjpsb3dlcl9ib3VuZFxuICAgICAgICAgfnVwcGVyOnVwcGVyX2JvdW5kXG4gICAgdGhlbiBlbXB0eSwgZW1wdHksIGVtcHR5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbGVmdCwgbWlkX2FuZF9yaWdodCA9XG4gICAgICAgIG1hdGNoIGxvd2VyX2JvdW5kIHdpdGhcbiAgICAgICAgfCBVbmJvdW5kZWQgLT4gZW1wdHksIHRcbiAgICAgICAgfCBJbmNsIGxiIC0+IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgUmlnaHQgdCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgICAgfCBFeGNsIGxiIC0+IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgTGVmdCB0IGxiIH5jb21wYXJlX2tleVxuICAgICAgaW5cbiAgICAgIGxldCBtaWQsIHJpZ2h0ID1cbiAgICAgICAgbWF0Y2ggdXBwZXJfYm91bmQgd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCAtPiBtaWRfYW5kX3JpZ2h0LCBlbXB0eVxuICAgICAgICB8IEluY2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBMZWZ0IG1pZF9hbmRfcmlnaHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICAgIHwgRXhjbCBsYiAtPlxuICAgICAgICAgIHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgUmlnaHQgbWlkX2FuZF9yaWdodCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgIGluXG4gICAgICBsZWZ0LCBtaWQsIHJpZ2h0KVxuICA7O1xuXG4gIGxldCByZWMgZmluZCB0IHggfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKHYsIGQpIC0+IGlmIGNvbXBhcmVfa2V5IHggdiA9IDAgdGhlbiBTb21lIGQgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkIGVsc2UgZmluZCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcikgeCB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBsZXQgYWRkX211bHRpIHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGRhdGEgPSBkYXRhIDo6IE9wdGlvbi52YWx1ZSAoZmluZCB0IGtleSB+Y29tcGFyZV9rZXkpIH5kZWZhdWx0OltdIGluXG4gICAgIChzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIHQgfmNvbXBhcmVfa2V5KVxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB4IH5jb21wYXJlX2tleSB3aXRoXG4gICAgfCBOb25lIC0+IFtdXG4gICAgfCBTb21lIGwgLT4gbFxuICA7O1xuXG4gIGxldCBmaW5kX2V4biA9XG4gICAgbGV0IGlmX25vdF9mb3VuZCBrZXkgfnNleHBfb2Zfa2V5ID1cbiAgICAgIHJhaXNlIChOb3RfZm91bmRfcyAoTGlzdCBbIEF0b20gXCJNYXAuZmluZF9leG46IG5vdCBmb3VuZFwiOyBzZXhwX29mX2tleSBrZXkgXSkpXG4gICAgaW5cbiAgICBsZXQgcmVjIGZpbmRfZXhuIHQgeCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpZl9ub3RfZm91bmQgeCB+c2V4cF9vZl9rZXlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gaWYgY29tcGFyZV9rZXkgeCB2ID0gMCB0aGVuIGQgZWxzZSBpZl9ub3RfZm91bmQgeCB+c2V4cF9vZl9rZXlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiBkIGVsc2UgZmluZF9leG4gKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpIHggfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleVxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGZpbmRfZXhuXG4gIDs7XG5cbiAgbGV0IG1lbSB0IHggfmNvbXBhcmVfa2V5ID0gT3B0aW9uLmlzX3NvbWUgKGZpbmQgdCB4IH5jb21wYXJlX2tleSlcblxuICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgZCkgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKEVtcHR5LCBrLCBkLCBfLCBfKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAobCwgXywgXywgXywgXykgLT4gbWluX2VsdCBsXG4gIDs7XG5cbiAgZXhjZXB0aW9uIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLlRyZWUwLk1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgZXhjZXB0aW9uIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLlRyZWUwLk1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1pbl9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1pbl9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIGQpIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChfLCBrLCBkLCBFbXB0eSwgXykgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKF8sIF8sIF8sIHIsIF8pIC0+IG1heF9lbHQgclxuICA7O1xuXG4gIGxldCBtYXhfZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtYXhfZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwXG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgfCBMZWFmIF8gLT4gRW1wdHlcbiAgICB8IE5vZGUgKEVtcHR5LCBfLCBfLCByLCBfKSAtPiByXG4gICAgfCBOb2RlIChsLCB4LCBkLCByLCBfKSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHggZCByXG4gIDs7XG5cbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIG1heF9lbHQgbG93ZXJfcGFydCwgbWluX2VsdCB1cHBlcl9wYXJ0IHdpdGhcbiAgICB8IE5vbmUsIF8gLT4gYE9rIHVwcGVyX3BhcnRcbiAgICB8IF8sIE5vbmUgLT4gYE9rIGxvd2VyX3BhcnRcbiAgICB8IFNvbWUgKG1heF9sb3dlciwgXyksIFNvbWUgKG1pbl91cHBlciwgdikgd2hlbiBjb21wYXJlX2tleSBtYXhfbG93ZXIgbWluX3VwcGVyIDwgMCAtPlxuICAgICAgbGV0IHVwcGVyX3BhcnRfd2l0aG91dF9taW4gPSByZW1vdmVfbWluX2VsdCB1cHBlcl9wYXJ0IGluXG4gICAgICBgT2sgKGpvaW4gbG93ZXJfcGFydCBtaW5fdXBwZXIgdiB1cHBlcl9wYXJ0X3dpdGhvdXRfbWluKVxuICAgIHwgXyAtPiBgT3ZlcmxhcHBpbmdfa2V5X3Jhbmdlc1xuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSA9XG4gICAgKCogVGhpcyBhc3N1bWVzIHRoYXQgbWluIDw9IG1heCwgd2hpY2ggaXMgY2hlY2tlZCBieSB0aGUgb3V0ZXIgZnVuY3Rpb24uICopXG4gICAgbGV0IHJlYyBnbyB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGluaXRcbiAgICAgIHwgTGVhZiAoaywgZCkgLT5cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgayBtaW4gPCAwIHx8IGNvbXBhcmVfa2V5IGsgbWF4ID4gMFxuICAgICAgICB0aGVuICgqIGsgPCBtaW4gfHwgayA+IG1heCAqKVxuICAgICAgICAgIGluaXRcbiAgICAgICAgZWxzZSBmIH5rZXk6ayB+ZGF0YTpkIGluaXRcbiAgICAgIHwgTm9kZSAobCwgaywgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGNfbWluID0gY29tcGFyZV9rZXkgayBtaW4gaW5cbiAgICAgICAgaWYgY19taW4gPCAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBpZiBrIDwgbWluLCB0aGVuIHRoaXMgbm9kZSBhbmQgaXRzIGxlZnQgYnJhbmNoIGFyZSBvdXRzaWRlIG91ciByYW5nZSAqKVxuICAgICAgICAgIGdvIHIgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleVxuICAgICAgICBlbHNlIGlmIGNfbWluID0gMFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogaWYgayA9IG1pbiwgdGhlbiB0aGlzIG5vZGUncyBsZWZ0IGJyYW5jaCBpcyBvdXRzaWRlIG91ciByYW5nZSAqKVxuICAgICAgICAgIGdvIHIgfm1pbiB+bWF4IH5pbml0OihmIH5rZXk6ayB+ZGF0YTpkIGluaXQpIH5mIH5jb21wYXJlX2tleVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBrID4gbWluICopXG4gICAgICAgICAgbGV0IHogPSBnbyBsIH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgICBsZXQgY19tYXggPSBjb21wYXJlX2tleSBrIG1heCBpblxuICAgICAgICAgICgqIGlmIGsgPiBtYXgsIHdlJ3JlIGRvbmUgKilcbiAgICAgICAgICBpZiBjX21heCA+IDBcbiAgICAgICAgICB0aGVuIHpcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCB6ID0gZiB+a2V5OmsgfmRhdGE6ZCB6IGluXG4gICAgICAgICAgICAoKiBpZiBrID0gbWF4LCB0aGVuIHdlIGZvbGQgaW4gdGhpcyBvbmUgbGFzdCB2YWx1ZSBhbmQgd2UncmUgZG9uZSAqKVxuICAgICAgICAgICAgaWYgY19tYXggPSAwIHRoZW4geiBlbHNlIGdvIHIgfm1pbiB+bWF4IH5pbml0OnogfmYgfmNvbXBhcmVfa2V5KSlcbiAgICBpblxuICAgIGZ1biB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgLT5cbiAgICAgIGlmIGNvbXBhcmVfa2V5IG1pbiBtYXggPD0gMCB0aGVuIGdvIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSBlbHNlIGluaXRcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggfmNvbXBhcmVfa2V5ID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgICAgICB0XG4gICAgICAgICB+bWluXG4gICAgICAgICB+bWF4XG4gICAgICAgICB+aW5pdDpbXVxuICAgICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhIGwgLT4gKGtleSwgZGF0YSkgOjogbClcbiAgICAgICAgIH5jb21wYXJlX2tleSlcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb25zOlxuICAgICAtIGFsbCBlbGVtZW50cyBpbiB0MSBhcmUgbGVzcyB0aGFuIGVsZW1lbnRzIGluIHQyXG4gICAgIC0gfGhlaWdodCh0MSkgLSBoZWlnaHQodDIpfCA8PSAyICopXG4gIGxldCBjb25jYXRfdW5jaGVja2VkIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPlxuICAgICAgbGV0IHgsIGQgPSBtaW5fZWx0X2V4biB0MiBpblxuICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9lbHQgdDIpXG4gIDs7XG5cbiAgKCogc2ltaWxhciB0byBbY29uY2F0X3VuY2hlY2tlZF0sIGFuZCBiYWxhbmNlcyB0cmVlcyBvZiBhcmJpdHJhcnkgaGVpZ2h0IGRpZmZlcmVuY2VzICopXG4gIGxldCBjb25jYXRfYW5kX2JhbGFuY2VfdW5jaGVja2VkIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPlxuICAgICAgbGV0IHgsIGQgPSBtaW5fZWx0X2V4biB0MiBpblxuICAgICAgam9pbiB0MSB4IGQgKHJlbW92ZV9taW5fZWx0IHQyKVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBSZW1vdmVfbm9fb3BcblxuICBsZXQgcmVtb3ZlIHQgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IHJlYyByZW1vdmVfbG9vcCB0IHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+ICAoRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFJlbW92ZV9ub19vcClcbiAgICAgIHwgTGVhZiAodiwgXykgLT5cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgeCB2ID0gMFxuICAgICAgICB0aGVuICAod2l0aF9sZW5ndGggRW1wdHkgKGxlbmd0aCAtIDEpKVxuICAgICAgICBlbHNlICAoRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFJlbW92ZV9ub19vcClcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAgKHdpdGhfbGVuZ3RoIChjb25jYXRfdW5jaGVja2VkIGwgcikgKGxlbmd0aCAtIDEpKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSBsOyBsZW5ndGggfSA9IHJlbW92ZV9sb29wIGwgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gcjsgbGVuZ3RoIH0gPSByZW1vdmVfbG9vcCByIHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICBpblxuICAgIHRyeSAgKHJlbW92ZV9sb29wIHQgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSkgd2l0aFxuICAgIHwgUmVtb3ZlX25vX29wIC0+ICAod2l0aF9sZW5ndGggdCBsZW5ndGgpXG4gIDs7XG5cbiAgKCogVXNlIGV4Y2VwdGlvbiB0byBhdm9pZCB0cmVlLXJlYnVpbGQgaW4gbm8tb3AgY2FzZSAqKVxuICBleGNlcHRpb24gQ2hhbmdlX25vX29wXG5cbiAgbGV0IGNoYW5nZSB0IGtleSB+ZiB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IHJlYyBjaGFuZ2VfY29yZSB0IGtleSBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAobWF0Y2ggZiBOb25lIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAoKiBlcXVpdmFsZW50IHRvIHJldHVybmluZzogRW1wdHkgKilcbiAgICAgICAgICAgIChFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgQ2hhbmdlX25vX29wKVxuICAgICAgICAgfCBTb21lIGRhdGEgLT4gICh3aXRoX2xlbmd0aCAoTGVhZiAoa2V5LCBkYXRhKSkgKGxlbmd0aCArIDEpKSlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gICh3aXRoX2xlbmd0aCBFbXB0eSAobGVuZ3RoIC0gMSkpXG4gICAgICAgICAgfCBTb21lIGQnIC0+ICAod2l0aF9sZW5ndGggKExlYWYgKHYsIGQnKSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gbDsgbGVuZ3RoIH0gPSBjaGFuZ2VfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCBFbXB0eSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IHI7IGxlbmd0aCB9ID0gY2hhbmdlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgRW1wdHkgdiBkIHIpIGxlbmd0aCkpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICAod2l0aF9sZW5ndGggKGNvbmNhdF91bmNoZWNrZWQgbCByKSAobGVuZ3RoIC0gMSkpXG4gICAgICAgICAgfCBTb21lIGRhdGEgLT4gICh3aXRoX2xlbmd0aCAoTm9kZSAobCwga2V5LCBkYXRhLCByLCBoKSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gbDsgbGVuZ3RoIH0gPSBjaGFuZ2VfY29yZSBsIGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSByOyBsZW5ndGggfSA9IGNoYW5nZV9jb3JlIHIga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICBpblxuICAgIHRyeSAgKGNoYW5nZV9jb3JlIHQga2V5IGYpIHdpdGhcbiAgICB8IENoYW5nZV9ub19vcCAtPiAgKHdpdGhfbGVuZ3RoIHQgbGVuZ3RoKVxuICA7O1xuXG4gIGxldCB1cGRhdGUgdCBrZXkgfmYgfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCByZWMgdXBkYXRlX2NvcmUgdCBrZXkgZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgbGV0IGRhdGEgPSBmIE5vbmUgaW5cbiAgICAgICAgICh3aXRoX2xlbmd0aCAoTGVhZiAoa2V5LCBkYXRhKSkgKGxlbmd0aCArIDEpKVxuICAgICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBkJyA9IGYgKFNvbWUgZCkgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChMZWFmICh2LCBkJykpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IGw7IGxlbmd0aCB9ID0gdXBkYXRlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgRW1wdHkpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSByOyBsZW5ndGggfSA9IHVwZGF0ZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIEVtcHR5IHYgZCByKSBsZW5ndGgpKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBkYXRhID0gZiAoU29tZSBkKSBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKE5vZGUgKGwsIGtleSwgZGF0YSwgciwgaCkpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IGw7IGxlbmd0aCB9ID0gdXBkYXRlX2NvcmUgbCBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gcjsgbGVuZ3RoIH0gPSB1cGRhdGVfY29yZSByIGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgaW5cbiAgICAgKHVwZGF0ZV9jb3JlIHQga2V5IGYpXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9tdWx0aSB0IGtleSB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgXG4gICAgICAoY2hhbmdlIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgfCBOb25lIHwgU29tZSAoW10gfCBbIF8gXSkgLT4gTm9uZVxuICAgICAgICAgfCBTb21lIChfIDo6IChfIDo6IF8gYXMgbm9uX2VtcHR5X3RhaWwpKSAtPiBTb21lIG5vbl9lbXB0eV90YWlsKSlcbiAgOztcblxuICBsZXQgcmVjIGl0ZXJfa2V5cyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmICh2LCBfKSAtPiBmIHZcbiAgICB8IE5vZGUgKGwsIHYsIF8sIHIsIF8pIC0+XG4gICAgICBpdGVyX2tleXMgfmYgbDtcbiAgICAgIGYgdjtcbiAgICAgIGl0ZXJfa2V5cyB+ZiByXG4gIDs7XG5cbiAgbGV0IHJlYyBpdGVyIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgKF8sIGQpIC0+IGYgZFxuICAgIHwgTm9kZSAobCwgXywgZCwgciwgXykgLT5cbiAgICAgIGl0ZXIgfmYgbDtcbiAgICAgIGYgZDtcbiAgICAgIGl0ZXIgfmYgclxuICA7O1xuXG4gIGxldCByZWMgaXRlcmkgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZFxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGl0ZXJpIH5mIGw7XG4gICAgICBmIH5rZXk6diB+ZGF0YTpkO1xuICAgICAgaXRlcmkgfmYgclxuICA7O1xuXG4gIGxldCBpdGVyaV91bnRpbCA9XG4gICAgbGV0IHJlYyBpdGVyaV91bnRpbF9sb29wIHQgfmYgOiBDb250aW51ZV9vcl9zdG9wLnQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IENvbnRpbnVlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmRcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgKG1hdGNoIGl0ZXJpX3VudGlsX2xvb3AgfmYgbCB3aXRoXG4gICAgICAgICB8IFN0b3AgLT4gU3RvcFxuICAgICAgICAgfCBDb250aW51ZSAtPlxuICAgICAgICAgICAobWF0Y2ggZiB+a2V5OnYgfmRhdGE6ZCB3aXRoXG4gICAgICAgICAgICB8IFN0b3AgLT4gU3RvcFxuICAgICAgICAgICAgfCBDb250aW51ZSAtPiBpdGVyaV91bnRpbF9sb29wIH5mIHIpKVxuICAgIGluXG4gICAgZnVuIHQgfmYgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC5vZl9jb250aW51ZV9vcl9zdG9wIChpdGVyaV91bnRpbF9sb29wIHQgfmYpXG4gIDs7XG5cbiAgbGV0IHJlYyBtYXAgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAodiwgZCkgLT4gTGVhZiAodiwgZiBkKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgIGxldCBsJyA9IG1hcCB+ZiBsIGluXG4gICAgICBsZXQgZCcgPSBmIGQgaW5cbiAgICAgIGxldCByJyA9IG1hcCB+ZiByIGluXG4gICAgICBOb2RlIChsJywgdiwgZCcsIHInLCBoKVxuICA7O1xuXG4gIGxldCByZWMgbWFwaSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmICh2LCBkKSAtPiBMZWFmICh2LCBmIH5rZXk6diB+ZGF0YTpkKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgIGxldCBsJyA9IG1hcGkgfmYgbCBpblxuICAgICAgbGV0IGQnID0gZiB+a2V5OnYgfmRhdGE6ZCBpblxuICAgICAgbGV0IHInID0gbWFwaSB+ZiByIGluXG4gICAgICBOb2RlIChsJywgdiwgZCcsIHInLCBoKVxuICA7O1xuXG4gIGxldCByZWMgZm9sZCB0IH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZCBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBmb2xkIH5mIHIgfmluaXQ6KGYgfmtleTp2IH5kYXRhOmQgKGZvbGQgfmYgbCB+aW5pdDphY2N1KSlcbiAgOztcblxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPVxuICAgIGxldCByZWMgZm9sZF91bnRpbF9sb29wIHQgfmFjYyB+ZiA6IChfLCBfKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBDb250aW51ZSBhY2NcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZCBhY2NcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgKG1hdGNoIGZvbGRfdW50aWxfbG9vcCBsIH5hY2MgfmYgd2l0aFxuICAgICAgICAgfCBTdG9wIGZpbmFsIC0+IFN0b3AgZmluYWxcbiAgICAgICAgIHwgQ29udGludWUgYWNjIC0+XG4gICAgICAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIGFjYyB3aXRoXG4gICAgICAgICAgICB8IFN0b3AgZmluYWwgLT4gU3RvcCBmaW5hbFxuICAgICAgICAgICAgfCBDb250aW51ZSBhY2MgLT4gZm9sZF91bnRpbF9sb29wIHIgfmFjYyB+ZikpXG4gICAgaW5cbiAgICBtYXRjaCBmb2xkX3VudGlsX2xvb3AgdCB+YWNjOmluaXQgfmYgd2l0aFxuICAgIHwgQ29udGludWUgYWNjIC0+IGZpbmlzaCBhY2MgW0Bub250YWlsXVxuICAgIHwgU3RvcCBzdG9wIC0+IHN0b3BcbiAgOztcblxuICBsZXQgcmVjIGZvbGRfcmlnaHQgdCB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmQgYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGZvbGRfcmlnaHQgfmYgbCB+aW5pdDooZiB+a2V5OnYgfmRhdGE6ZCAoZm9sZF9yaWdodCB+ZiByIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCByZWMgZmlsdGVyX21hcGkgdCB+ZiB+bGVuID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgd2l0aFxuICAgICAgIHwgU29tZSBuZXdfZGF0YSAtPiBMZWFmICh2LCBuZXdfZGF0YSlcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGRlY3IgbGVuO1xuICAgICAgICAgRW1wdHkpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGwnID0gZmlsdGVyX21hcGkgbCB+ZiB+bGVuIGluXG4gICAgICBsZXQgbmV3X2RhdGEgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwaSByIH5mIH5sZW4gaW5cbiAgICAgIChtYXRjaCBuZXdfZGF0YSB3aXRoXG4gICAgICAgfCBTb21lIG5ld19kYXRhIC0+IGpvaW4gbCcgdiBuZXdfZGF0YSByJ1xuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgZGVjciBsZW47XG4gICAgICAgICBjb25jYXRfYW5kX2JhbGFuY2VfdW5jaGVja2VkIGwnIHInKVxuICA7O1xuXG4gIGxldCByZWMgZmlsdGVyaSB0IH5mIH5sZW4gPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAobWF0Y2ggZiB+a2V5OnYgfmRhdGE6ZCB3aXRoXG4gICAgICAgfCB0cnVlIC0+IHRcbiAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICBkZWNyIGxlbjtcbiAgICAgICAgIEVtcHR5KVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGxldCBsJyA9IGZpbHRlcmkgbCB+ZiB+bGVuIGluXG4gICAgICBsZXQga2VlcF9kYXRhID0gZiB+a2V5OnYgfmRhdGE6ZCBpblxuICAgICAgbGV0IHInID0gZmlsdGVyaSByIH5mIH5sZW4gaW5cbiAgICAgIGlmIHBoeXNfZXF1YWwgbCBsJyAmJiBrZWVwX2RhdGEgJiYgcGh5c19lcXVhbCByIHInXG4gICAgICB0aGVuIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBrZWVwX2RhdGEgd2l0aFxuICAgICAgICB8IHRydWUgLT4gam9pbiBsJyB2IGQgcidcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIGRlY3IgbGVuO1xuICAgICAgICAgIGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgbCcgcicpXG4gIDs7XG5cbiAgbGV0IGZpbHRlciB0IH5mIH5sZW4gPSBmaWx0ZXJpIHQgfmxlbiB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlcl9rZXlzIHQgfmYgfmxlbiA9IGZpbHRlcmkgdCB+bGVuIH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgfmxlbiA9IGZpbHRlcl9tYXBpIHQgfmxlbiB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9XG4gICAgbGV0IHQxLCB0MiA9XG4gICAgICBmb2xkXG4gICAgICAgIHRcbiAgICAgICAgfmluaXQ6KEJ1aWxkX2luY3JlYXNpbmcuZW1wdHksIEJ1aWxkX2luY3JlYXNpbmcuZW1wdHkpXG4gICAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSAodDEsIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIChmIH5rZXkgfmRhdGEgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCB4IC0+IEJ1aWxkX2luY3JlYXNpbmcuYWRkX3VuY2hlY2tlZCB0MSB+a2V5IH5kYXRhOngsIHQyXG4gICAgICAgICAgfCBTZWNvbmQgeSAtPiB0MSwgQnVpbGRfaW5jcmVhc2luZy5hZGRfdW5jaGVja2VkIHQyIH5rZXkgfmRhdGE6eSlcbiAgICBpblxuICAgIEJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZV91bmNoZWNrZWQgdDEsIEJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZV91bmNoZWNrZWQgdDJcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgICBsZXQgcmVjIGxvb3AgdCB+ZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRW1wdHksIEVtcHR5XG4gICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIHdpdGhcbiAgICAgICAgIHwgdHJ1ZSAtPiB0LCBFbXB0eVxuICAgICAgICAgfCBmYWxzZSAtPiBFbXB0eSwgdClcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGwndCwgbCdmID0gbG9vcCBsIH5mIGluXG4gICAgICAgIGxldCBrZWVwX2RhdGFfdCA9IGYgfmtleTp2IH5kYXRhOmQgaW5cbiAgICAgICAgbGV0IHIndCwgcidmID0gbG9vcCByIH5mIGluXG4gICAgICAgIGxldCBtayBsJyBrZWVwX2RhdGEgcicgPVxuICAgICAgICAgIGlmIHBoeXNfZXF1YWwgbCBsJyAmJiBrZWVwX2RhdGEgJiYgcGh5c19lcXVhbCByIHInXG4gICAgICAgICAgdGhlbiB0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCBrZWVwX2RhdGEgd2l0aFxuICAgICAgICAgICAgfCB0cnVlIC0+IGpvaW4gbCcgdiBkIHInXG4gICAgICAgICAgICB8IGZhbHNlIC0+IGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgbCcgcicpXG4gICAgICAgIGluXG4gICAgICAgIG1rIGwndCBrZWVwX2RhdGFfdCByJ3QsIG1rIGwnZiAobm90IGtlZXBfZGF0YV90KSByJ2ZcbiAgICBpblxuICAgIGxvb3AgdCB+ZlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxuICBtb2R1bGUgRW51bSA9IHN0cnVjdFxuICAgIHR5cGUgaW5jcmVhc2luZ1xuICAgIHR5cGUgZGVjcmVhc2luZ1xuXG4gICAgdHlwZSAoJ2ssICd2LCAnZGlyZWN0aW9uKSB0ID1cbiAgICAgIHwgRW5kXG4gICAgICB8IE1vcmUgb2YgJ2sgKiAndiAqICgnaywgJ3YpIHRyZWUgKiAoJ2ssICd2LCAnZGlyZWN0aW9uKSB0XG5cbiAgICBsZXQgcmVjIGNvbnMgdCAoZSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0KSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IE1vcmUgKHYsIGQsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBjb25zIGwgKE1vcmUgKHYsIGQsIHIsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGNvbnNfcmlnaHQgdCAoZSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0KSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IE1vcmUgKHYsIGQsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBjb25zX3JpZ2h0IHIgKE1vcmUgKHYsIGQsIGwsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfdHJlZSB0cmVlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPSBjb25zIHRyZWUgRW5kXG4gICAgbGV0IG9mX3RyZWVfcmlnaHQgdHJlZSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0ID0gY29uc19yaWdodCB0cmVlIEVuZFxuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiAodiwgZCkgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIGQsIEVtcHR5LCAxKSkgZVxuICAgICAgICB8IE5vZGUgKF8sIHYsIF8sIHIsIF8pIHdoZW4gY29tcGFyZSB2IGtleSA8IDAgLT4gbG9vcCByIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBsb29wIGwgKE1vcmUgKHYsIGQsIHIsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiAodiwgZCkgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIGQsIEVtcHR5LCAxKSkgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIF8sIF8sIF8pIHdoZW4gY29tcGFyZSB2IGtleSA+IDAgLT4gbG9vcCBsIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBsb29wIHIgKE1vcmUgKHYsIGQsIGwsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IHN0ZXBfZGVlcGVyX2V4biB0cmVlIGUgPVxuICAgICAgbWF0Y2ggdHJlZSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBFbXB0eSwgTW9yZSAodiwgZCwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGwsIE1vcmUgKHYsIGQsIHIsIGUpXG4gICAgOztcblxuICAgICgqIFtkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMl0gZHJvcHMgdGhlIGxhcmdlc3QgcGh5c2ljYWxseS1lcXVhbFxuICAgICAgIHByZWZpeCBvZiB0cmVlMSBhbmQgdHJlZTIgdGhhdCB0aGV5IHNoYXJlLCBhbmQgdGhlbiBwcmVwZW5kcyB0aGUgcmVtYWluaW5nIGRhdGFcbiAgICAgICBpbnRvIGFjYzEgYW5kIGFjYzIsIHJlc3BlY3RpdmVseS5cbiAgICAgICBUaGlzIGNhbiBiZSBhc3ltcHRvdGljYWxseSBmYXN0ZXIgdGhhbiBbY29uc10gZXZlbiBpZiBpdCBza2lwcyBhIHNtYWxsIHByb3BvcnRpb25cbiAgICAgICBvZiB0aGUgdHJlZSBiZWNhdXNlIFtjb25zXSBpcyBhbHdheXMgTyhsb2cobikpIGluIHRoZSBzaXplIG9mIHRoZSB0cmVlLCB3aGlsZVxuICAgICAgIHRoaXMgZnVuY3Rpb24gaXMgTyhsb2cobi9tKSkgd2hlcmUgW21dIGlzIHRoZSBzaXplIG9mIHRoZSBwYXJ0IG9mIHRoZSB0cmVlIHRoYXRcbiAgICAgICBpcyBza2lwcGVkLiAqKVxuICAgIGxldCByZWMgZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBhY2MxIHRyZWUyIGFjYzIgPVxuICAgICAgaWYgcGh5c19lcXVhbCB0cmVlMSB0cmVlMlxuICAgICAgdGhlbiBhY2MxLCBhY2MyXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGgyID0gaGVpZ2h0IHRyZWUyIGluXG4gICAgICAgIGxldCBoMSA9IGhlaWdodCB0cmVlMSBpblxuICAgICAgICBpZiBoMiA9IGgxXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB0cmVlMSwgYWNjMSA9IHN0ZXBfZGVlcGVyX2V4biB0cmVlMSBhY2MxIGluXG4gICAgICAgICAgbGV0IHRyZWUyLCBhY2MyID0gc3RlcF9kZWVwZXJfZXhuIHRyZWUyIGFjYzIgaW5cbiAgICAgICAgICBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMilcbiAgICAgICAgZWxzZSBpZiBoMiA+IGgxXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB0cmVlMiwgYWNjMiA9IHN0ZXBfZGVlcGVyX2V4biB0cmVlMiBhY2MyIGluXG4gICAgICAgICAgZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBhY2MxIHRyZWUyIGFjYzIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB0cmVlMSwgYWNjMSA9IHN0ZXBfZGVlcGVyX2V4biB0cmVlMSBhY2MxIGluXG4gICAgICAgICAgZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBhY2MxIHRyZWUyIGFjYzIpKVxuICAgIDs7XG5cbiAgICBsZXQgY29tcGFyZSBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICAgIHwgXywgRW5kIC0+IDFcbiAgICAgICAgfCBNb3JlICh2MSwgZDEsIHIxLCBlMSksIE1vcmUgKHYyLCBkMiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBjID0gY29tcGFyZV9kYXRhIGQxIGQyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlMSwgZTIgPSBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHIxIGUxIHIyIGUyIGluXG4gICAgICAgICAgICAgIGxvb3AgZTEgZTIpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDJcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIGNvbXBhcmVfa2V5IGRhdGFfZXF1YWwgdDEgdDIgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiB0cnVlXG4gICAgICAgIHwgRW5kLCBfIHwgXywgRW5kIC0+IGZhbHNlXG4gICAgICAgIHwgTW9yZSAodjEsIGQxLCByMSwgZTEpLCBNb3JlICh2MiwgZDIsIHIyLCBlMikgLT5cbiAgICAgICAgICBjb21wYXJlX2tleSB2MSB2MiA9IDBcbiAgICAgICAgICAmJiBkYXRhX2VxdWFsIGQxIGQyXG4gICAgICAgICAgJiZcbiAgICAgICAgICBsZXQgZTEsIGUyID0gZHJvcF9waHlzX2VxdWFsX3ByZWZpeCByMSBlMSByMiBlMiBpblxuICAgICAgICAgIGxvb3AgZTEgZTJcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyXG4gICAgOztcblxuICAgIGxldCByZWMgZm9sZCB+aW5pdCB+ZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVuZCAtPiBpbml0XG4gICAgICB8IE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgbGV0IG5leHQgPSBmIH5rZXkgfmRhdGEgaW5pdCBpblxuICAgICAgICBmb2xkIChjb25zIHRyZWUgZW51bSkgfmluaXQ6bmV4dCB+ZlxuICAgIDs7XG5cbiAgICBsZXQgZm9sZDIgY29tcGFyZV9rZXkgdDEgdDIgfmluaXQgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyIGN1cnIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IGN1cnJcbiAgICAgICAgfCBFbmQsIF8gLT5cbiAgICAgICAgICBmb2xkIHQyIH5pbml0OmN1cnIgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBmIH5rZXkgfmRhdGE6KGBSaWdodCBkYXRhKSBhY2MpIFtAbm9udGFpbFxuICAgICAgICAgIF1cbiAgICAgICAgfCBfLCBFbmQgLT5cbiAgICAgICAgICBmb2xkIHQxIH5pbml0OmN1cnIgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBmIH5rZXkgfmRhdGE6KGBMZWZ0IGRhdGEpIGFjYykgW0Bub250YWlsXG4gICAgICAgICAgXVxuICAgICAgICB8IE1vcmUgKGsxLCB2MSwgdHJlZTEsIGVudW0xKSwgTW9yZSAoazIsIHYyLCB0cmVlMiwgZW51bTIpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9rZXkgazEgazIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0ID0gZiB+a2V5OmsxIH5kYXRhOihgQm90aCAodjEsIHYyKSkgY3VyciBpblxuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgKGNvbnMgdHJlZTIgZW51bTIpIG5leHQpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0ID0gZiB+a2V5OmsxIH5kYXRhOihgTGVmdCB2MSkgY3VyciBpblxuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgdDIgbmV4dClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBuZXh0ID0gZiB+a2V5OmsyIH5kYXRhOihgUmlnaHQgdjIpIGN1cnIgaW5cbiAgICAgICAgICAgIGxvb3AgdDEgKGNvbnMgdHJlZTIgZW51bTIpIG5leHQpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MiBpbml0IFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCA9XG4gICAgICBsZXQgc3RlcCBzdGF0ZSA9XG4gICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgICAgfCBFbmQsIE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrZXksIGBSaWdodCBkYXRhOyBzdGF0ZSA9IEVuZCwgY29ucyB0cmVlIGVudW0gfVxuICAgICAgICB8IE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSksIEVuZCAtPlxuICAgICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGtleSwgYExlZnQgZGF0YTsgc3RhdGUgPSBjb25zIHRyZWUgZW51bSwgRW5kIH1cbiAgICAgICAgfCAoTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoazIsIHYyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfa2V5IGsxIGsyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dF9zdGF0ZSA9IGRyb3BfcGh5c19lcXVhbF9wcmVmaXggdHJlZTEgZW51bTEgdHJlZTIgZW51bTIgaW5cbiAgICAgICAgICAgIGlmIGRhdGFfZXF1YWwgdjEgdjJcbiAgICAgICAgICAgIHRoZW4gU2VxdWVuY2UuU3RlcC5Ta2lwIHsgc3RhdGUgPSBuZXh0X3N0YXRlIH1cbiAgICAgICAgICAgIGVsc2UgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gazEsIGBVbmVxdWFsICh2MSwgdjIpOyBzdGF0ZSA9IG5leHRfc3RhdGUgfSlcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGsxLCBgTGVmdCB2MTsgc3RhdGUgPSBjb25zIHRyZWUxIGVudW0xLCByaWdodCB9XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gazIsIGBSaWdodCB2Mjsgc3RhdGUgPSBsZWZ0LCBjb25zIHRyZWUyIGVudW0yIH1cbiAgICAgIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDooZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0MSBFbmQgdDIgRW5kKSB+ZjpzdGVwXG4gICAgOztcblxuICAgIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgYWRkIGFjYyBrIHYgPSBmIGFjYyAoaywgYFJpZ2h0IHYpIGluXG4gICAgICBsZXQgcmVtb3ZlIGFjYyBrIHYgPSBmIGFjYyAoaywgYExlZnQgdikgaW5cbiAgICAgIGxldCByZWMgbG9vcCBsZWZ0IHJpZ2h0IGFjYyA9XG4gICAgICAgIG1hdGNoIGxlZnQsIHJpZ2h0IHdpdGhcbiAgICAgICAgfCBFbmQsIGVudW0gLT5cbiAgICAgICAgICBmb2xkIGVudW0gfmluaXQ6YWNjIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gYWRkIGFjYyBrZXkgZGF0YSkgW0Bub250YWlsXVxuICAgICAgICB8IGVudW0sIEVuZCAtPlxuICAgICAgICAgIGZvbGQgZW51bSB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiByZW1vdmUgYWNjIGtleSBkYXRhKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgKE1vcmUgKGsxLCB2MSwgdHJlZTEsIGVudW0xKSBhcyBsZWZ0KSwgKE1vcmUgKGsyLCB2MiwgdHJlZTIsIGVudW0yKSBhcyByaWdodCkgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2tleSBrMSBrMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGFjYyA9IGlmIGRhdGFfZXF1YWwgdjEgdjIgdGhlbiBhY2MgZWxzZSBmIGFjYyAoazEsIGBVbmVxdWFsICh2MSwgdjIpKSBpblxuICAgICAgICAgICAgbGV0IGVudW0xLCBlbnVtMiA9IGRyb3BfcGh5c19lcXVhbF9wcmVmaXggdHJlZTEgZW51bTEgdHJlZTIgZW51bTIgaW5cbiAgICAgICAgICAgIGxvb3AgZW51bTEgZW51bTIgYWNjKVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBrMSB2MSBpblxuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgcmlnaHQgYWNjKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgazIgdjIgaW5cbiAgICAgICAgICAgIGxvb3AgbGVmdCAoY29ucyB0cmVlMiBlbnVtMikgYWNjKVxuICAgICAgaW5cbiAgICAgIGxldCBsZWZ0LCByaWdodCA9IGRyb3BfcGh5c19lcXVhbF9wcmVmaXggdDEgRW5kIHQyIEVuZCBpblxuICAgICAgbG9vcCBsZWZ0IHJpZ2h0IGluaXQgW0Bub250YWlsXVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHYsIHQsIGUpIC0+XG4gICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGssIHY7IHN0YXRlID0gRW51bS5jb25zIHQgZSB9XG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2tleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl90cmVlIHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXkgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdiwgdCwgZSkgLT5cbiAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gaywgdjsgc3RhdGUgPSBFbnVtLmNvbnNfcmlnaHQgdCBlIH1cbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fa2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3RyZWVfcmlnaHQgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VcbiAgICAgICAgY29tcGFyYXRvclxuICAgICAgICA/KG9yZGVyID0gYEluY3JlYXNpbmdfa2V5KVxuICAgICAgICA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICAgID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgaW5jbHVzaXZlX2JvdW5kIHNpZGUgdCBib3VuZCA9XG4gICAgICBsZXQgY29tcGFyZV9rZXkgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgICAgbGV0IGwsIG1heWJlLCByID0gc3BsaXQgdCBib3VuZCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgIGxldCB0ID0gc2lkZSAobCwgcikgaW5cbiAgICAgIG1hdGNoIG1heWJlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0XG4gICAgICB8IFNvbWUgKGtleSwgZGF0YSkgLT4gc2V0JyB0IGtleSBkYXRhIH5jb21wYXJlX2tleVxuICAgIGluXG4gICAgbWF0Y2ggb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmdfa2V5IC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGtleXNfbGVzc19vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgZnN0KSBpblxuICAgICAgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleTprZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gdFxuICAgIHwgYERlY3JlYXNpbmdfa2V5IC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgc25kKSBpblxuICAgICAgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleTprZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgbGV0IGUxLCBlMiA9IEVudW0uZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0MSBFbmQgdDIgRW5kIGluXG4gICAgRW51bS5jb21wYXJlIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSBlMSBlMlxuICA7O1xuXG4gIGxldCBlcXVhbCBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIGxldCBlMSwgZTIgPSBFbnVtLmRyb3BfcGh5c19lcXVhbF9wcmVmaXggdDEgRW5kIHQyIEVuZCBpblxuICAgIEVudW0uZXF1YWwgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIGUxIGUyXG4gIDs7XG5cbiAgbGV0IGl0ZXIyIHQxIHQyIH5mIH5jb21wYXJlX2tleSA9XG4gICAgRW51bS5mb2xkMlxuICAgICAgY29tcGFyZV9rZXlcbiAgICAgIChFbnVtLm9mX3RyZWUgdDEpXG4gICAgICAoRW51bS5vZl90cmVlIHQyKVxuICAgICAgfmluaXQ6KClcbiAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSAoKSAtPiBmIH5rZXkgfmRhdGEpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZm9sZDIgdDEgdDIgfmluaXQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBFbnVtLmZvbGQyIGNvbXBhcmVfa2V5IChFbnVtLm9mX3RyZWUgdDEpIChFbnVtLm9mX3RyZWUgdDIpIH5mIH5pbml0XG4gIDs7XG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmID0gRW51bS5zeW1tZXRyaWNfZGlmZlxuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgKCogW0VudW0uZm9sZF9kaWZmc10gaXMgYSBjb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24sIGJ1dCBpcyBjb25zaWRlcmFibHlcbiAgICAgICBzbG93ZXIsIGFzIHdlIGhhdmUgdG8gYWxsb2NhdGUgcXVpdGUgYSBsb3Qgb2Ygc3RhdGUgdG8gdHJhY2sgZW51bWVyYXRpb24gb2YgYSB0cmVlLlxuICAgICAgIEF2b2lkIGlmIHdlIGNhbi5cbiAgICAqKVxuICAgIGxldCBzbG93IHggeSB+aW5pdCA9IEVudW0uZm9sZF9zeW1tZXRyaWNfZGlmZiB4IHkgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5mIH5pbml0IGluXG4gICAgbGV0IGFkZCBhY2MgayB2ID0gZiBhY2MgKGssIGBSaWdodCB2KSBpblxuICAgIGxldCByZW1vdmUgYWNjIGsgdiA9IGYgYWNjIChrLCBgTGVmdCB2KSBpblxuICAgIGxldCBkZWx0YSBhY2MgayB2IHYnID0gaWYgZGF0YV9lcXVhbCB2IHYnIHRoZW4gYWNjIGVsc2UgZiBhY2MgKGssIGBVbmVxdWFsICh2LCB2JykpIGluXG4gICAgKCogSWYgdHdvIHRyZWVzIGhhdmUgdGhlIHNhbWUgc3RydWN0dXJlIGF0IHRoZSByb290IChhbmQgdGhlIHNhbWUga2V5LCBpZiB0aGV5J3JlXG4gICAgICAgW05vZGVdcykgd2UgY2FuIHRyaXZpYWxseSBkaWZmIGVhY2ggc3VicGFydCBpbiBvYnZpb3VzIHdheXMuICopXG4gICAgbGV0IHJlYyBsb29wIHQgdCcgYWNjID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgdCB0J1xuICAgICAgdGhlbiBhY2NcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0LCB0JyB3aXRoXG4gICAgICAgIHwgRW1wdHksIG5ld192YWxzIC0+XG4gICAgICAgICAgZm9sZCBuZXdfdmFscyB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgYWNjIGtleSBkYXRhKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgb2xkX3ZhbHMsIEVtcHR5IC0+XG4gICAgICAgICAgZm9sZCBvbGRfdmFscyB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiByZW1vdmUgYWNjIGtleSBkYXRhKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgTGVhZiAoaywgdiksIExlYWYgKGsnLCB2JykgLT5cbiAgICAgICAgICAobWF0Y2ggY29tcGFyZV9rZXkgayBrJyB3aXRoXG4gICAgICAgICAgIHwgeCB3aGVuIHggPSAwIC0+IGRlbHRhIGFjYyBrIHYgdidcbiAgICAgICAgICAgfCB4IHdoZW4geCA8IDAgLT5cbiAgICAgICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBrIHYgaW5cbiAgICAgICAgICAgICBhZGQgYWNjIGsnIHYnXG4gICAgICAgICAgIHwgXyAoKiB3aGVuIHggPiAwICopIC0+XG4gICAgICAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgaycgdicgaW5cbiAgICAgICAgICAgICByZW1vdmUgYWNjIGsgdilcbiAgICAgICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSwgTm9kZSAobCcsIGsnLCB2JywgcicsIF8pIHdoZW4gY29tcGFyZV9rZXkgayBrJyA9IDAgLT5cbiAgICAgICAgICBsZXQgYWNjID0gbG9vcCBsIGwnIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBkZWx0YSBhY2MgayB2IHYnIGluXG4gICAgICAgICAgbG9vcCByIHInIGFjY1xuICAgICAgICAoKiBPdXIgcm9vdHMgYXJlbid0IHRoZSBzYW1lIGtleS4gRmFsbGJhY2sgdG8gdGhlIHNsb3cgbW9kZS4gVHJlZXMgd2l0aCBzbWFsbFxuICAgICAgICAgICBkaWZmcyB3aWxsIG9ubHkgZG8gdGhpcyBvbiB2ZXJ5IHNtYWxsIHBhcnRzIG9mIHRoZSB0cmVlIChob3BlZnVsbHkgLSBpZiB0aGVcbiAgICAgICAgICAgb3ZlcmFsbCByb290IGlzIHJlYmFsYW5jZWQsIHdlJ2xsIGVhdCB0aGUgd2hvbGUgY29zdCwgdW5mb3J0dW5hdGVseS4pICopXG4gICAgICAgIHwgTm9kZSBfLCBOb2RlIF8gfCBOb2RlIF8sIExlYWYgXyB8IExlYWYgXywgTm9kZSBfIC0+IHNsb3cgdCB0JyB+aW5pdDphY2MpXG4gICAgaW5cbiAgICBsb29wIHQxIHQyIGluaXQgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCByZWMgbGVuZ3RoID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChsLCBfLCBfLCByLCBfKSAtPiBsZW5ndGggbCArIGxlbmd0aCByICsgMVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0ID1cbiAgICBmb2xkXG4gICAgICB0XG4gICAgICB+aW5pdDooaGFzaF9mb2xkX2ludCBzdGF0ZSAobGVuZ3RoIHQpKVxuICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhIHN0YXRlIC0+IGhhc2hfZm9sZF9kYXRhIChoYXNoX2ZvbGRfa2V5IHN0YXRlIGtleSkgZGF0YSlcbiAgOztcblxuICBsZXQga2V5cyB0ID0gZm9sZF9yaWdodCB+ZjooZnVuIH5rZXkgfmRhdGE6XyBsaXN0IC0+IGtleSA6OiBsaXN0KSB0IH5pbml0OltdXG4gIGxldCBkYXRhIHQgPSBmb2xkX3JpZ2h0IH5mOihmdW4gfmtleTpfIH5kYXRhIGxpc3QgLT4gZGF0YSA6OiBsaXN0KSB0IH5pbml0OltdXG5cbiAgbW9kdWxlIHR5cGUgRm9sZGFibGUgPSBzaWdcbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcbiAgZW5kXG5cbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSBvZl9mb2xkYWJsZScgfmZvbGQgZm9sZGFibGUgfmluaXQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICAoZm9sZCBbQGlubGluZWQgaGludF0pXG4gICAgICBmb2xkYWJsZVxuICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgfmY6KGZ1biB7IHRyZWUgPSBhY2N1bTsgbGVuZ3RoIH0gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgbGV0IHByZXZfZGF0YSA9XG4gICAgICAgICAgbWF0Y2ggZmluZCBhY2N1bSBrZXkgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5pdFxuICAgICAgICAgIHwgU29tZSBwcmV2IC0+IHByZXZcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGRhdGEgPSBmIHByZXZfZGF0YSBkYXRhIGluXG4gICAgICAgIChzZXQgYWNjdW0gfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB8PiBnbG9iYWxpemUpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgOztcblxuICBtb2R1bGUgT2ZfZm9sZGFibGUgKE0gOiBGb2xkYWJsZSkgPSBzdHJ1Y3RcbiAgICBsZXQgb2ZfZm9sZGFibGVfZm9sZCBmb2xkYWJsZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgICAgb2ZfZm9sZGFibGUnIH5mb2xkOk0uZm9sZCBmb2xkYWJsZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXlcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX3JlZHVjZSBmb2xkYWJsZSB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgICAgTS5mb2xkXG4gICAgICAgIGZvbGRhYmxlXG4gICAgICAgIH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMClcbiAgICAgICAgfmY6KGZ1biB7IHRyZWUgPSBhY2N1bTsgbGVuZ3RoIH0gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICBsZXQgbmV3X2RhdGEgPVxuICAgICAgICAgICAgbWF0Y2ggZmluZCBhY2N1bSBrZXkgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhXG4gICAgICAgICAgICB8IFNvbWUgcHJldiAtPiBmIHByZXYgZGF0YVxuICAgICAgICAgIGluXG4gICAgICAgICAgKHNldCBhY2N1bSB+bGVuZ3RoIH5rZXkgfmRhdGE6bmV3X2RhdGEgfmNvbXBhcmVfa2V5IHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXG4gICAgICBdXG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXkgPVxuICAgICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICAgIGxldCBtYXAgPVxuICAgICAgICAgIE0uZm9sZFxuICAgICAgICAgICAgZm9sZGFibGVcbiAgICAgICAgICAgIH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMClcbiAgICAgICAgICAgIH5mOihmdW4geyB0cmVlID0gdDsgbGVuZ3RoIH0gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgICAgbGV0ICh7IHRyZWUgPSBfOyBsZW5ndGggPSBsZW5ndGgnIH0gYXMgYWNjKSA9XG4gICAgICAgICAgICAgICAgc2V0IH5sZW5ndGggfmtleSB+ZGF0YSB0IH5jb21wYXJlX2tleVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBpZiBsZW5ndGggPSBsZW5ndGgnXG4gICAgICAgICAgICAgIHRoZW4gci5yZXR1cm4gKGBEdXBsaWNhdGVfa2V5IGtleSlcbiAgICAgICAgICAgICAgZWxzZSBnbG9iYWxpemUgYWNjIFtAbm9udGFpbF0pXG4gICAgICAgIGluXG4gICAgICAgIGBPayBtYXApXG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZV9vcl9lcnJvciBmb2xkYWJsZSB+Y29tcGFyYXRvciA9XG4gICAgICBtYXRjaCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgICAgfCBgT2sgeCAtPiBSZXN1bHQuT2sgeFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAoXCJNYXAub2ZfXCIgXiBNLm5hbWUgXiBcIl9vcl9lcnJvcjogZHVwbGljYXRlIGtleVwiKVxuICAgICAgICAgIGtleVxuICAgICAgICAgIGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZV9leG4gZm9sZGFibGUgfmNvbXBhcmF0b3IgPVxuICAgICAgbWF0Y2ggb2ZfZm9sZGFibGUgZm9sZGFibGUgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICAgIHwgYE9rIHggLT4geFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgICAgRXJyb3IuY3JlYXRlIChcIk1hcC5vZl9cIiBeIE0ubmFtZSBeIFwiX2V4bjogZHVwbGljYXRlIGtleVwiKSBrZXkgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICAgICAgfD4gRXJyb3IucmFpc2VcbiAgICA7O1xuXG4gICAgKCogUmV2ZXJzZSB0aGUgaW5wdXQsIHRoZW4gZm9sZCBmcm9tIGxlZnQgdG8gcmlnaHQuIFRoZSByZXN1bHRpbmcgbWFwIHVzZXMgdGhlIGZpcnN0XG4gICAgICAgaW5zdGFuY2Ugb2YgZWFjaCBrZXkgZnJvbSB0aGUgaW5wdXQgbGlzdC4gVGhlIHJlbGF0aXZlIG9yZGVyaW5nIG9mIGVsZW1lbnRzIGluIGVhY2hcbiAgICAgICBvdXRwdXQgbGlzdCBpcyB0aGUgc2FtZSBhcyBpbiB0aGUgaW5wdXQgbGlzdC4gKilcbiAgICBsZXQgb2ZfZm9sZGFibGVfbXVsdGkgZm9sZGFibGUgfmNvbXBhcmVfa2V5ID1cbiAgICAgIGxldCBhbGlzdCA9IE0uZm9sZCBmb2xkYWJsZSB+aW5pdDpbXSB+ZjooZnVuIGwgeCAtPiB4IDo6IGwpIGluXG4gICAgICBvZl9mb2xkYWJsZScgYWxpc3QgfmZvbGQ6TGlzdC5mb2xkIH5pbml0OltdIH5mOihmdW4gbCB4IC0+IHggOjogbCkgfmNvbXBhcmVfa2V5XG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2FsaXN0ID0gT2ZfZm9sZGFibGUgKHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBcImFsaXN0XCJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICBsZXQgZm9sZCA9IExpc3QuZm9sZFxuICAgIGVuZClcblxuICBsZXQgb2ZfYWxpc3RfZm9sZCA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX2ZvbGRcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX3JlZHVjZVxuICBsZXQgb2ZfYWxpc3QgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZVxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9vcl9lcnJvclxuICBsZXQgb2ZfYWxpc3RfZXhuID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfZXhuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX211bHRpXG5cbiAgbW9kdWxlIE9mX3NlcXVlbmNlID0gT2ZfZm9sZGFibGUgKHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBcInNlcXVlbmNlXCJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgU2VxdWVuY2UudFxuXG4gICAgICBsZXQgZm9sZCA9IFNlcXVlbmNlLmZvbGRcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9mb2xkXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9yZWR1Y2VcbiAgbGV0IG9mX3NlcXVlbmNlID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfb3JfZXJyb3JcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX2V4blxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9tdWx0aVxuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5IGxpc3QgfmdldF9rZXkgfmNvbXBhcmVfa2V5ID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGxldCBtYXAgPVxuICAgICAgICBMaXN0LmZvbGRcbiAgICAgICAgICBsaXN0XG4gICAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgICAgIH5mOihmdW4geyB0cmVlID0gdDsgbGVuZ3RoIH0gZGF0YSAtPlxuICAgICAgICAgICAgbGV0IGtleSA9IGdldF9rZXkgZGF0YSBpblxuICAgICAgICAgICAgbGV0ICh7IHRyZWUgPSBfOyBsZW5ndGggPSBuZXdfbGVuZ3RoIH0gYXMgYWNjKSA9XG4gICAgICAgICAgICAgIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgdCB+Y29tcGFyZV9rZXlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBsZW5ndGggPSBuZXdfbGVuZ3RoXG4gICAgICAgICAgICB0aGVuIHIucmV0dXJuIChgRHVwbGljYXRlX2tleSBrZXkpXG4gICAgICAgICAgICBlbHNlIGdsb2JhbGl6ZSBhY2MgW0Bub250YWlsXSlcbiAgICAgIGluXG4gICAgICBgT2sgbWFwKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvciA9XG4gICAgbWF0Y2ggb2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgeCAtPiBSZXN1bHQuT2sgeFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICBcIk1hcC5vZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAga2V5XG4gICAgICAgIGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIGxpc3QgfmdldF9rZXkgfmNvbXBhcmF0b3IgPVxuICAgIG1hdGNoIG9mX2xpc3Rfd2l0aF9rZXkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rIHggLT4geFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBFcnJvci5jcmVhdGUgXCJNYXAub2ZfbGlzdF93aXRoX2tleV9leG46IGR1cGxpY2F0ZSBrZXlcIiBrZXkgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICAgIHw+IEVycm9yLnJhaXNlXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBsaXN0ID0gTGlzdC5yZXYgbGlzdCBpblxuICAgIExpc3QuZm9sZCBsaXN0IH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMCkgfmY6KGZ1biB7IHRyZWUgPSB0OyBsZW5ndGggfSBkYXRhIC0+XG4gICAgICBsZXQga2V5ID0gZ2V0X2tleSBkYXRhIGluXG4gICAgICAodXBkYXRlIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5IH5mOihmdW4gb3B0aW9uIC0+XG4gICAgICAgICBsZXQgbGlzdCA9IE9wdGlvbi52YWx1ZSBvcHRpb24gfmRlZmF1bHQ6W10gaW5cbiAgICAgICAgIGRhdGEgOjogbGlzdClcbiAgICAgICB8PiBnbG9iYWxpemUpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZm9yX2FsbCB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXIgdCB+ZjooZnVuIGRhdGEgLT4gaWYgbm90IChmIGRhdGEpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgICAgdHJ1ZSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIG5vdCAoZiB+a2V5IH5kYXRhKSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICAgIHRydWUpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZXhpc3RzIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlciB0IH5mOihmdW4gZGF0YSAtPiBpZiBmIGRhdGEgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICAgIGZhbHNlKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGV4aXN0c2kgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICAgIGZhbHNlKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGNvdW50IHQgfmYgPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleTpfIH5kYXRhIGFjYyAtPiBpZiBmIGRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGNvdW50aSB0IH5mID1cbiAgICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpIFtAbm9udGFpbFxuICAgIF1cbiAgOztcblxuICBsZXQgdG9fYWxpc3QgPyhrZXlfb3JkZXIgPSBgSW5jcmVhc2luZykgdCA9XG4gICAgbWF0Y2gga2V5X29yZGVyIHdpdGhcbiAgICB8IGBJbmNyZWFzaW5nIC0+IGZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgeCAtPiAoa2V5LCBkYXRhKSA6OiB4KVxuICAgIHwgYERlY3JlYXNpbmcgLT4gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSB4IC0+IChrZXksIGRhdGEpIDo6IHgpXG4gIDs7XG5cbiAgbGV0IG1lcmdlIHQxIHQyIH5mIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGVsdHMgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuOihsZW5ndGggdDEgKyBsZW5ndGggdDIpIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGl0ZXIyIHQxIHQyIH5jb21wYXJlX2tleSB+ZjooZnVuIH5rZXkgfmRhdGE6dmFsdWVzIC0+XG4gICAgICBtYXRjaCBmIH5rZXkgdmFsdWVzIHdpdGhcbiAgICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgICBVbmlmb3JtX2FycmF5LnNldCBlbHRzICFpIChrZXksIHZhbHVlKTtcbiAgICAgICAgaW5jciBpXG4gICAgICB8IE5vbmUgLT4gKCkpO1xuICAgIGxldCBsZW4gPSAhaSBpblxuICAgIGxldCBnZXQgaSA9IFVuaWZvcm1fYXJyYXkuZ2V0IGVsdHMgaSBpblxuICAgIGxldCB0cmVlID0gb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZjpnZXQgaW5cbiAgICAgKHdpdGhfbGVuZ3RoIHRyZWUgbGVuKVxuICA7O1xuXG4gIGxldCBtZXJnZV9za2V3ZWQgPVxuICAgIGxldCBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGhfbGFyZ2UgdF9sYXJnZSB0X3NtYWxsIH5jYWxsIH5jb21iaW5lIH5jb21wYXJlX2tleSA9XG4gICAgICBmb2xkXG4gICAgICAgIHRfc21hbGxcbiAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCB0X2xhcmdlIGxlbmd0aF9sYXJnZSlcbiAgICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhOmRhdGEnIHsgdHJlZSA9IHQ7IGxlbmd0aCB9IC0+XG4gICAgICAgICAgKHVwZGF0ZSB0IGtleSB+bGVuZ3RoIH5jb21wYXJlX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE5vbmUgLT4gZGF0YSdcbiAgICAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBjYWxsIGNvbWJpbmUgfmtleSBkYXRhIGRhdGEnKVxuICAgICAgICAgICB8PiBnbG9iYWxpemUpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgICBpblxuICAgIGxldCBjYWxsIGYgfmtleSB4IHkgPSBmIH5rZXkgeCB5IGluXG4gICAgbGV0IHN3YXAgZiB+a2V5IHggeSA9IGYgfmtleSB5IHggaW5cbiAgICBmdW4gdDEgdDIgfmxlbmd0aDEgfmxlbmd0aDIgfmNvbWJpbmUgfmNvbXBhcmVfa2V5IC0+XG4gICAgICBpZiBsZW5ndGgyIDw9IGxlbmd0aDFcbiAgICAgIHRoZW4gbWVyZ2VfbGFyZ2VfZmlyc3QgbGVuZ3RoMSB0MSB0MiB+Y2FsbCB+Y29tYmluZSB+Y29tcGFyZV9rZXlcbiAgICAgIGVsc2UgbWVyZ2VfbGFyZ2VfZmlyc3QgbGVuZ3RoMiB0MiB0MSB+Y2FsbDpzd2FwIH5jb21iaW5lIH5jb21wYXJlX2tleVxuICA7O1xuXG4gIG1vZHVsZSBDbG9zZXN0X2tleV9pbXBsID0gc3RydWN0XG4gICAgKCogW21hcmtlcl0gYW5kIFtyZXBhY2thZ2VdIGFsbG93IHVzIHRvIGNyZWF0ZSBcImxvZ2ljYWxcIiBvcHRpb25zIHdpdGhvdXQgYWN0dWFsbHlcbiAgICAgICBhbGxvY2F0aW5nIGFueSBvcHRpb25zLiBQYXNzaW5nIFtGb3VuZCBrZXkgdmFsdWVdIHRvIGEgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0b1xuICAgICAgIHBhc3NpbmcgW1NvbWUgKGtleSwgdmFsdWUpXTsgcGFzc2luZyBbTWlzc2luZyAoKSAoKV0gaXMgZXF1aXZhbGVudCB0byBwYXNzaW5nXG4gICAgICAgW05vbmVdLiAqKVxuICAgIHR5cGUgKCdrLCAndiwgJ2tfb3B0LCAndl9vcHQpIG1hcmtlciA9XG4gICAgICB8IE1pc3NpbmcgOiAoJ2ssICd2LCB1bml0LCB1bml0KSBtYXJrZXJcbiAgICAgIHwgRm91bmQgOiAoJ2ssICd2LCAnaywgJ3YpIG1hcmtlclxuXG4gICAgbGV0IHJlcGFja2FnZVxuICAgICAgICAgICh0eXBlIGsgdiBrX29wdCB2X29wdClcbiAgICAgICAgICAobWFya2VyIDogKGssIHYsIGtfb3B0LCB2X29wdCkgbWFya2VyKVxuICAgICAgICAgIChrIDoga19vcHQpXG4gICAgICAgICAgKHYgOiB2X29wdClcbiAgICAgIDogKGsgKiB2KSBvcHRpb25cbiAgICAgID1cbiAgICAgIG1hdGNoIG1hcmtlciB3aXRoXG4gICAgICB8IE1pc3NpbmcgLT4gTm9uZVxuICAgICAgfCBGb3VuZCAtPiBTb21lIChrLCB2KVxuICAgIDs7XG5cbiAgICAoKiBUaGUgdHlwZSBzaWduYXR1cmUgaXMgZXhwbGljaXQgaGVyZSB0byBhbGxvdyBwb2x5bW9ycGhpYyByZWN1cnNpb24uICopXG4gICAgbGV0IHJlYyBsb29wIDpcbiAgICAgICdrICd2ICdrX29wdCAndl9vcHQuXG4gICAgICAoJ2ssICd2KSB0cmVlXG4gICAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgICAtPiAna1xuICAgICAgLT4gY29tcGFyZV9rZXk6KCdrIC0+ICdrIC0+IGludClcbiAgICAgIC0+ICgnaywgJ3YsICdrX29wdCwgJ3Zfb3B0KSBtYXJrZXJcbiAgICAgIC0+ICdrX29wdFxuICAgICAgLT4gJ3Zfb3B0XG4gICAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG4gICAgICA9XG4gICAgICBmdW4gdCBkaXIgayB+Y29tcGFyZV9rZXkgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSAtPlxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICB8IExlYWYgKGsnLCB2JykgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGsnIGsgaW5cbiAgICAgICAgICBpZiBtYXRjaCBkaXIgd2l0aFxuICAgICAgICAgICAgfCBgR3JlYXRlcl9vcl9lcXVhbF90byAtPiBjID49IDBcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfdGhhbiAtPiBjID4gMFxuICAgICAgICAgICAgfCBgTGVzc19vcl9lcXVhbF90byAtPiBjIDw9IDBcbiAgICAgICAgICAgIHwgYExlc3NfdGhhbiAtPiBjIDwgMFxuICAgICAgICAgIHRoZW4gU29tZSAoaycsIHYnKVxuICAgICAgICAgIGVsc2UgcmVwYWNrYWdlIGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWVcbiAgICAgICAgfCBOb2RlIChsLCBrJywgdicsIHIsIF8pIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrJyBrIGluXG4gICAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICgqIFRoaXMgaXMgYSBiYXNlIGNhc2UgKG5vIHJlY3Vyc2l2ZSBjYWxsKS4gKilcbiAgICAgICAgICAgIG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgICB8IGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYExlc3Nfb3JfZXF1YWxfdG8gLT4gU29tZSAoaycsIHYnKVxuICAgICAgICAgICAgfCBgR3JlYXRlcl90aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGlzX2VtcHR5IHIgdGhlbiByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSBlbHNlIG1pbl9lbHQgclxuICAgICAgICAgICAgfCBgTGVzc190aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGlzX2VtcHR5IGwgdGhlbiByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSBlbHNlIG1heF9lbHQgbClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICgqIFdlIGFyZSBndWFyYW50ZWVkIGhlcmUgdGhhdCBrJyA8PiBrLiAqKVxuICAgICAgICAgICAgKCogVGhpcyBpcyB0aGUgb25seSByZWN1cnNpdmUgY2FzZS4gKilcbiAgICAgICAgICAgIG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgICB8IGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiAtPlxuICAgICAgICAgICAgICBpZiBjID4gMFxuICAgICAgICAgICAgICB0aGVuIGxvb3AgbCBkaXIgayB+Y29tcGFyZV9rZXkgRm91bmQgaycgdidcbiAgICAgICAgICAgICAgZWxzZSBsb29wIHIgZGlyIGsgfmNvbXBhcmVfa2V5IGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWVcbiAgICAgICAgICAgIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGMgPCAwXG4gICAgICAgICAgICAgIHRoZW4gbG9vcCByIGRpciBrIH5jb21wYXJlX2tleSBGb3VuZCBrJyB2J1xuICAgICAgICAgICAgICBlbHNlIGxvb3AgbCBkaXIgayB+Y29tcGFyZV9rZXkgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGNsb3Nlc3Rfa2V5IHQgZGlyIGsgfmNvbXBhcmVfa2V5ID0gbG9vcCB0IGRpciBrIH5jb21wYXJlX2tleSBNaXNzaW5nICgpICgpXG4gIGVuZFxuXG4gIGxldCBjbG9zZXN0X2tleSA9IENsb3Nlc3Rfa2V5X2ltcGwuY2xvc2VzdF9rZXlcblxuICBsZXQgcmVjIHJhbmsgdCBrIH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrJywgXykgLT4gaWYgY29tcGFyZV9rZXkgaycgayA9IDAgdGhlbiBTb21lIDAgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCBrJywgXywgciwgXykgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgaycgayBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gU29tZSAobGVuZ3RoIGwpXG4gICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICB0aGVuIHJhbmsgbCBrIH5jb21wYXJlX2tleVxuICAgICAgZWxzZSBPcHRpb24ubWFwIChyYW5rIHIgayB+Y29tcGFyZV9rZXkpIH5mOihmdW4gcmFuayAtPiByYW5rICsgMSArIGxlbmd0aCBsKVxuICA7O1xuXG4gICgqIHRoaXMgY291bGQgYmUgaW1wbGVtZW50ZWQgdXNpbmcgW1NlcXVlbmNlXSBpbnRlcmZhY2UgYnV0IHRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb25cbiAgICAgYWxsb2NhdGVzIG9ubHkgMiB3b3JkcyBhbmQgZG9lc24ndCByZXF1aXJlIHdyaXRlLWJhcnJpZXIgKilcbiAgbGV0IHJlYyBudGgnIG51bV90b19zZWFyY2ggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgdikgLT5cbiAgICAgIGlmICFudW1fdG9fc2VhcmNoID0gMFxuICAgICAgdGhlbiBTb21lIChrLCB2KVxuICAgICAgZWxzZSAoXG4gICAgICAgIGRlY3IgbnVtX3RvX3NlYXJjaDtcbiAgICAgICAgTm9uZSlcbiAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pIC0+XG4gICAgICAobWF0Y2ggbnRoJyBudW1fdG9fc2VhcmNoIGwgd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gc29tZVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgaWYgIW51bV90b19zZWFyY2ggPSAwXG4gICAgICAgICB0aGVuIFNvbWUgKGssIHYpXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgZGVjciBudW1fdG9fc2VhcmNoO1xuICAgICAgICAgICBudGgnIG51bV90b19zZWFyY2ggcikpXG4gIDs7XG5cbiAgbGV0IG50aCB0IG4gPSBudGgnIChyZWYgbikgdFxuXG5cbiAgbGV0IHJlYyBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPiBpZiBmIH5rZXk6ayB+ZGF0YTp2IHRoZW4gU29tZSAoaywgdikgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSAtPlxuICAgICAgaWYgZiB+a2V5OmsgfmRhdGE6dlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyBsIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgKGssIHYpXG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHIgfmZcbiAgOztcblxuICBsZXQgcmVjIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgdikgLT4gaWYgZiB+a2V5OmsgfmRhdGE6diB0aGVuIFNvbWUgKGssIHYpIGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgaywgdiwgciwgXykgLT5cbiAgICAgIGlmIGYgfmtleTprIH5kYXRhOnZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyByIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgKGssIHYpXG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9sYXN0X3NhdGlzZnlpbmcgbCB+ZlxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gLT5cbiAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2IDwgMCkgW0Bub250YWlsXVxuICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA8PSAwKSBbQG5vbnRhaWxdXG4gICAgfCBgRmlyc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPj0gMCkgd2l0aFxuICAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSBhcyBwYWlyIHdoZW4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPSAwIC0+IHBhaXJcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBMYXN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPD0gMCkgd2l0aFxuICAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSBhcyBwYWlyIHdoZW4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPSAwIC0+IHBhaXJcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+PSAwKSBbQG5vbnRhaWxdXG4gICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPiAwKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBsZXQgaXNfbGVmdCB+a2V5IH5kYXRhID1cbiAgICAgIG1hdGNoIHNlZ21lbnRfb2YgfmtleSB+ZGF0YSB3aXRoXG4gICAgICB8IGBMZWZ0IC0+IHRydWVcbiAgICAgIHwgYFJpZ2h0IC0+IGZhbHNlXG4gICAgaW5cbiAgICBsZXQgaXNfcmlnaHQgfmtleSB+ZGF0YSA9IG5vdCAoaXNfbGVmdCB+a2V5IH5kYXRhKSBpblxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9vbl9sZWZ0IC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfbGVmdCBbQG5vbnRhaWxdXG4gICAgfCBgRmlyc3Rfb25fcmlnaHQgLT4gZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfcmlnaHQgW0Bub250YWlsXVxuICA7O1xuXG4gICgqIFtiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZF0gZmluZHMgdGhlIGtleSBpbiBbdF0gd2hpY2ggc2F0aXNmaWVzIFttYXliZV9ib3VuZF1cbiAgICAgYW5kIHRoZSByZWxldmFudCBvbmUgb2YgW2lmX2V4Y2x1c2l2ZV0gb3IgW2lmX2luY2x1c2l2ZV0sIGFzIGp1ZGdlZCBieSBbY29tcGFyZV0uICopXG4gIGxldCBiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZCB0IG1heWJlX2JvdW5kIH5jb21wYXJlIH5pZl9leGNsdXNpdmUgfmlmX2luY2x1c2l2ZSA9XG4gICAgbGV0IGZpbmRfYm91bmQgdCBob3cgYm91bmQgfmNvbXBhcmUgOiBfIE1heWJlX2JvdW5kLnQgb3B0aW9uID1cbiAgICAgIG1hdGNoIGJpbmFyeV9zZWFyY2ggdCBob3cgYm91bmQgfmNvbXBhcmUgd2l0aFxuICAgICAgfCBTb21lIChib3VuZCwgXykgLT4gU29tZSAoSW5jbCBib3VuZClcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgaW5cbiAgICBtYXRjaCAobWF5YmVfYm91bmQgOiBfIE1heWJlX2JvdW5kLnQpIHdpdGhcbiAgICB8IEV4Y2wgYm91bmQgLT4gZmluZF9ib3VuZCB0IGlmX2V4Y2x1c2l2ZSBib3VuZCB+Y29tcGFyZVxuICAgIHwgSW5jbCBib3VuZCAtPiBmaW5kX2JvdW5kIHQgaWZfaW5jbHVzaXZlIGJvdW5kIH5jb21wYXJlXG4gICAgfCBVbmJvdW5kZWQgLT4gU29tZSBVbmJvdW5kZWRcbiAgOztcblxuICAoKiBbYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzXSBmaW5kcyB0aGUgKG5vdCBuZWNlc3NhcmlseSBkaXN0aW5jdCkga2V5cyBpbiBbdF1cbiAgICAgd2hpY2ggbW9zdCBjbG9zZWx5IGFwcHJvYWNoIChidXQgZG8gbm90IGNyb3NzKSBbbG93ZXJfYm91bmRdIGFuZCBbdXBwZXJfYm91bmRdLCBhc1xuICAgICBqdWRnZWQgYnkgW2NvbXBhcmVdLiBJdCByZXR1cm5zIFtOb25lXSBpZiBubyBrZXlzIGluIFt0XSBhcmUgd2l0aGluIHRoYXQgcmFuZ2UuICopXG4gIGxldCBiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgZmluZF9sb3dlcl9ib3VuZCB0IG1heWJlX2JvdW5kIH5jb21wYXJlID1cbiAgICAgIGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXG4gICAgICAgIHRcbiAgICAgICAgbWF5YmVfYm91bmRcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAgfmlmX2V4Y2x1c2l2ZTpgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuXG4gICAgICAgIH5pZl9pbmNsdXNpdmU6YEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90b1xuICAgIGluXG4gICAgbGV0IGZpbmRfdXBwZXJfYm91bmQgdCBtYXliZV9ib3VuZCB+Y29tcGFyZSA9XG4gICAgICBiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZFxuICAgICAgICB0XG4gICAgICAgIG1heWJlX2JvdW5kXG4gICAgICAgIH5jb21wYXJlXG4gICAgICAgIH5pZl9leGNsdXNpdmU6YExhc3Rfc3RyaWN0bHlfbGVzc190aGFuXG4gICAgICAgIH5pZl9pbmNsdXNpdmU6YExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvXG4gICAgaW5cbiAgICBtYXRjaCBmaW5kX2xvd2VyX2JvdW5kIHQgbG93ZXJfYm91bmQgfmNvbXBhcmUgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGxvd2VyX2JvdW5kIC0+XG4gICAgICAobWF0Y2ggZmluZF91cHBlcl9ib3VuZCB0IHVwcGVyX2JvdW5kIH5jb21wYXJlIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgIHwgU29tZSB1cHBlcl9ib3VuZCAtPiBTb21lIChsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpKVxuICA7O1xuXG5cbiAgdHlwZSAoJ2ssICd2KSBhY2MgPVxuICAgIHsgbXV0YWJsZSBiYWRfa2V5IDogJ2sgb3B0aW9uXG4gICAgOyBtdXRhYmxlIG1hcF9sZW5ndGggOiAoJ2ssICd2KSB0IFdpdGhfbGVuZ3RoLnRcbiAgICB9XG5cbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBhY2MgPSB7IGJhZF9rZXkgPSBOb25lOyBtYXBfbGVuZ3RoID0gd2l0aF9sZW5ndGhfZ2xvYmFsIGVtcHR5IDAgfSBpblxuICAgIGl0ZXJpIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgbGV0IHsgdHJlZSA9IG1hcDsgbGVuZ3RoIH0gPSBhY2MubWFwX2xlbmd0aCBpblxuICAgICAgbGV0ICh7IHRyZWUgPSBfOyBsZW5ndGggPSBsZW5ndGgnIH0gYXMgcGFpcikgPVxuICAgICAgICBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIG1hcCB+Y29tcGFyZV9rZXlcbiAgICAgIGluXG4gICAgICBpZiBsZW5ndGggPSBsZW5ndGgnICYmIE9wdGlvbi5pc19ub25lIGFjYy5iYWRfa2V5XG4gICAgICB0aGVuIGFjYy5iYWRfa2V5IDwtIFNvbWUga2V5XG4gICAgICBlbHNlIGFjYy5tYXBfbGVuZ3RoIDwtIGdsb2JhbGl6ZSBwYWlyKTtcbiAgICBtYXRjaCBhY2MuYmFkX2tleSB3aXRoXG4gICAgfCBOb25lIC0+IGBPayBhY2MubWFwX2xlbmd0aFxuICAgIHwgU29tZSBrZXkgLT4gYER1cGxpY2F0ZV9rZXkga2V5XG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgfihjb21wYXJhdG9yIDogXyBDb21wYXJhdG9yLnQpID1cbiAgICBtYXRjaCBvZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIEVycm9yLmNyZWF0ZSBcIk1hcC5vZl9pdGVyaV9leG46IGR1cGxpY2F0ZSBrZXlcIiBrZXkgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICAgIHw+IEVycm9yLnJhaXNlXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3Qga2V5X29mX3NleHAgdmFsdWVfb2Zfc2V4cCBzZXhwIH4oY29tcGFyYXRvciA6IF8gQ29tcGFyYXRvci50KSA9XG4gICAgbGV0IGFsaXN0ID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAga2V5X29mX3NleHAgdmFsdWVfb2Zfc2V4cCkgc2V4cCBpblxuICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgIG1hdGNoIG9mX2FsaXN0IGFsaXN0IH5jb21wYXJlX2tleSB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRHVwbGljYXRlX2tleSBrIC0+XG4gICAgICAoKiBmaW5kIHRoZSBzZXhwIG9mIGEgZHVwbGljYXRlIGtleSwgc28gdGhlIGVycm9yIGlzIG5hcnJvd2VkIHRvIGEga2V5IGFuZCBub3RcbiAgICAgICAgIHRoZSB3aG9sZSBtYXAgKilcbiAgICAgIGxldCBhbGlzdF9zZXhwcyA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIEZuLmlkIEZuLmlkKSBzZXhwIGluXG4gICAgICBsZXQgZm91bmRfZmlyc3RfayA9IHJlZiBmYWxzZSBpblxuICAgICAgTGlzdC5pdGVyMl9vayBhbGlzdCBhbGlzdF9zZXhwcyB+ZjooZnVuIChrMiwgXykgKGsyX3NleHAsIF8pIC0+XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IGsgazIgPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiAhZm91bmRfZmlyc3Rfa1xuICAgICAgICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcIk1hcC50X29mX3NleHBfZGlyZWN0OiBkdXBsaWNhdGUga2V5XCIgazJfc2V4cFxuICAgICAgICAgIGVsc2UgZm91bmRfZmlyc3RfayA6PSB0cnVlKTtcbiAgICAgIGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl92YWx1ZSB0ID1cbiAgICBsZXQgZiB+a2V5IH5kYXRhIGFjYyA9IFNleHAuTGlzdCBbIHNleHBfb2Zfa2V5IGtleTsgc2V4cF9vZl92YWx1ZSBkYXRhIF0gOjogYWNjIGluXG4gICAgU2V4cC5MaXN0IChmb2xkX3JpZ2h0IH5mIHQgfmluaXQ6W10pXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIHQgfnNleHBfb2Zfa2V5ID1cbiAgICBsZXQgb2tzLCBlcnJvcnMgPSBwYXJ0aXRpb25fbWFwIHQgfmY6UmVzdWx0LnRvX2VpdGhlciBpblxuICAgIGlmIGlzX2VtcHR5IGVycm9yc1xuICAgIHRoZW4gT2sgb2tzXG4gICAgZWxzZSBPcl9lcnJvci5lcnJvcl9zIChzZXhwX29mX3Qgc2V4cF9vZl9rZXkgRXJyb3Iuc2V4cF9vZl90IGVycm9ycylcbiAgOztcblxuICBsZXQgbWFwX2tleXNcbiAgICAgICAgdDFcbiAgICAgICAgfmZcbiAgICAgICAgfmNvbXBhcmF0b3I6KHsgY29tcGFyZSA9IGNvbXBhcmVfa2V5OyBzZXhwX29mX3QgPSBzZXhwX29mX2tleSB9IDogXyBDb21wYXJhdG9yLnQpXG4gICAgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgYE9rXG4gICAgICAgIChmb2xkXG4gICAgICAgICAgIHQxXG4gICAgICAgICAgIH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMClcbiAgICAgICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhIHsgdHJlZSA9IHQyOyBsZW5ndGggfSAtPlxuICAgICAgICAgICAgIGxldCBrZXkgPSBmIGtleSBpblxuICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgYWRkX2V4bl9pbnRlcm5hbCB0MiB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB8PiBnbG9iYWxpemVcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBEdXBsaWNhdGUgLT4gcmV0dXJuIChgRHVwbGljYXRlX2tleSBrZXkpKSkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgfmNvbXBhcmF0b3IgPVxuICAgIG1hdGNoIG1hcF9rZXlzIHQgfmYgfmNvbXBhcmF0b3Igd2l0aFxuICAgIHwgYE9rIHJlc3VsdCAtPiByZXN1bHRcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgbGV0IHNleHBfb2Zfa2V5ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdCBpblxuICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiTWFwLm1hcF9rZXlzX2V4bjogZHVwbGljYXRlIGtleVwiIFsgXCJrZXlcIiwga2V5IHw+IHNleHBfb2Zfa2V5IF0pXG4gIDs7XG5cbiAgbGV0IHRyYW5zcG9zZV9rZXlzIH5vdXRlcl9jb21wYXJhdG9yIH5pbm5lcl9jb21wYXJhdG9yIG91dGVyX3QgPVxuICAgIGZvbGRcbiAgICAgIG91dGVyX3RcbiAgICAgIH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMClcbiAgICAgIH5mOihmdW4gfmtleTpvdXRlcl9rZXkgfmRhdGE6aW5uZXJfdCBhY2MgLT5cbiAgICAgICAgZm9sZFxuICAgICAgICAgIGlubmVyX3RcbiAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICB+ZjooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIHsgdHJlZSA9IGFjYzsgbGVuZ3RoID0gYWNjX2xlbiB9IC0+XG4gICAgICAgICAgICAodXBkYXRlXG4gICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgIGlubmVyX2tleVxuICAgICAgICAgICAgICAgfmxlbmd0aDphY2NfbGVuXG4gICAgICAgICAgICAgICB+Y29tcGFyZV9rZXk6aW5uZXJfY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gd2l0aF9sZW5ndGhfZ2xvYmFsIChzaW5nbGV0b24gb3V0ZXJfa2V5IGRhdGEpIDFcbiAgICAgICAgICAgICAgICAgfCBTb21lIHsgdHJlZSA9IGVsdDsgbGVuZ3RoID0gZWx0X2xlbiB9IC0+XG4gICAgICAgICAgICAgICAgICAgKHNldFxuICAgICAgICAgICAgICAgICAgICAgIGVsdFxuICAgICAgICAgICAgICAgICAgICAgIH5rZXk6b3V0ZXJfa2V5XG4gICAgICAgICAgICAgICAgICAgICAgfmRhdGFcbiAgICAgICAgICAgICAgICAgICAgICB+bGVuZ3RoOmVsdF9sZW5cbiAgICAgICAgICAgICAgICAgICAgICB+Y29tcGFyZV9rZXk6b3V0ZXJfY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgICAgICAgICAgICAgfD4gZ2xvYmFsaXplKSBbQG5vbnRhaWxdKVxuICAgICAgICAgICAgIHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkpXG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpID0gc3RydWN0XG4gICAgbGV0IHJlYyBtYXBpIHQgfmYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IEEucmV0dXJuIEVtcHR5XG4gICAgICB8IExlYWYgKHYsIGQpIC0+IEEubWFwIChmIH5rZXk6diB+ZGF0YTpkKSB+ZjooZnVuIG5ld19kYXRhIC0+IExlYWYgKHYsIG5ld19kYXRhKSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgICAgbGV0IGwnID0gQS5vZl90aHVuayAoZnVuICgpIC0+IG1hcGkgfmYgbCkgaW5cbiAgICAgICAgbGV0IGQnID0gZiB+a2V5OnYgfmRhdGE6ZCBpblxuICAgICAgICBsZXQgcicgPSBBLm9mX3RodW5rIChmdW4gKCkgLT4gbWFwaSB+ZiByKSBpblxuICAgICAgICBBLm1hcDMgbCcgZCcgcicgfmY6KGZ1biBsJyBkJyByJyAtPiBOb2RlIChsJywgdiwgZCcsIHInLCBoKSlcbiAgICA7O1xuXG4gICAgKCogSW4gdGhlb3J5IHRoZSBjb21wdXRhdGlvbiBvZiBsZW5ndGggb24tdGhlLWZseSBpcyBub3QgbmVjZXNzYXJ5IGhlcmUgYmVjYXVzZSBpdCBjYW5cbiAgICAgICBiZSBkb25lIGJ5IHdyYXBwaW5nIHRoZSBhcHBsaWNhdGl2ZSBbQV0gd2l0aCBsZW5ndGgtY29tcHV0aW5nIGxvZ2ljLiBIb3dldmVyLFxuICAgICAgIGludHJvZHVjaW5nIGFuIGFwcGxpY2F0aXZlIHRyYW5zZm9ybWVyIGxpa2UgdGhhdCBtYWtlcyB0aGUgbWFwIGJlbmNobWFya3MgaW5cbiAgICAgICBhc3luY19rZXJuZWwvYmVuY2gvc3JjL2JlbmNoX2RlZmVycmVkX21hcC5tbCBub3RpY2VhYmx5IHNsb3dlci4gKilcbiAgICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gICAgICBsZXQgcmVjIHRyZWVfZmlsdGVyX21hcGkgdCB+ZiA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IEEucmV0dXJuICh3aXRoX2xlbmd0aF9nbG9iYWwgRW1wdHkgMClcbiAgICAgICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgICAgIEEubWFwIChmIH5rZXk6diB+ZGF0YTpkKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgU29tZSBuZXdfZGF0YSAtPiB3aXRoX2xlbmd0aF9nbG9iYWwgKExlYWYgKHYsIG5ld19kYXRhKSkgMVxuICAgICAgICAgICAgfCBOb25lIC0+IHdpdGhfbGVuZ3RoX2dsb2JhbCBFbXB0eSAwKVxuICAgICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgICAgQS5tYXAzXG4gICAgICAgICAgICAoQS5vZl90aHVuayAoZnVuICgpIC0+IHRyZWVfZmlsdGVyX21hcGkgbCB+ZikpXG4gICAgICAgICAgICAoZiB+a2V5OnYgfmRhdGE6ZClcbiAgICAgICAgICAgIChBLm9mX3RodW5rIChmdW4gKCkgLT4gdHJlZV9maWx0ZXJfbWFwaSByIH5mKSlcbiAgICAgICAgICAgIH5mOlxuICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgeyB0cmVlID0gbCc7IGxlbmd0aCA9IGxfbGVuIH0gbmV3X2RhdGEgeyB0cmVlID0gcic7IGxlbmd0aCA9IHJfbGVuIH0gLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBuZXdfZGF0YSB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIG5ld19kYXRhIC0+XG4gICAgICAgICAgICAgICAgICB3aXRoX2xlbmd0aF9nbG9iYWwgKGpvaW4gbCcgdiBuZXdfZGF0YSByJykgKGxfbGVuICsgcl9sZW4gKyAxKVxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgd2l0aF9sZW5ndGhfZ2xvYmFsIChjb25jYXRfYW5kX2JhbGFuY2VfdW5jaGVja2VkIGwnIHInKSAobF9sZW4gKyByX2xlbikpXG4gICAgICBpblxuICAgICAgdHJlZV9maWx0ZXJfbWFwaSB0IH5mXG4gICAgOztcbiAgZW5kXG5lbmRcblxudHlwZSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdCA9XG4gIHsgKCogW2NvbXBhcmF0b3JdIGlzIHRoZSBmaXJzdCBmaWVsZCBzbyB0aGF0IHBvbHltb3JwaGljIGVxdWFsaXR5IGZhaWxzIG9uIGEgbWFwIGR1ZVxuICAgICAgIHRvIHRoZSBmdW5jdGlvbmFsIHZhbHVlIGluIHRoZSBjb21wYXJhdG9yLlxuICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFmZmVjdCBwb2x5bW9ycGhpYyBbY29tcGFyZV06IHRoYXQgc3RpbGwgcHJvZHVjZXNcbiAgICAgICBub25zZW5zZS4gKilcbiAgICBjb21wYXJhdG9yIDogKCdrLCAnY29tcGFyYXRvcikgQ29tcGFyYXRvci50XG4gIDsgdHJlZSA6ICgnaywgJ3YpIFRyZWUwLnRcbiAgOyBsZW5ndGggOiBpbnRcbiAgfVxuXG50eXBlICgnaywgJ3YsICdjb21wYXJhdG9yKSB0cmVlID0gKCdrLCAndikgVHJlZTAudFxuXG5sZXQgY29tcGFyZV9rZXkgdCA9IHQuY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuXG5sZXQgbGlrZSB7IHRyZWUgPSBfOyBsZW5ndGggPSBfOyBjb21wYXJhdG9yIH0gKHsgdHJlZTsgbGVuZ3RoIH0gOiBfIFdpdGhfbGVuZ3RoLnQpID1cbiAgeyB0cmVlOyBsZW5ndGg7IGNvbXBhcmF0b3IgfVxuOztcblxubGV0IGxpa2VfbWF5YmVfbm9fb3BcbiAgICAgICh7IHRyZWUgPSBvbGRfdHJlZTsgbGVuZ3RoID0gXzsgY29tcGFyYXRvciB9IGFzIG9sZF90KVxuICAgICAgKHsgdHJlZTsgbGVuZ3RoIH0gOiBfIFdpdGhfbGVuZ3RoLnQpXG4gID1cbiAgaWYgcGh5c19lcXVhbCBvbGRfdHJlZSB0cmVlIHRoZW4gb2xkX3QgZWxzZSB7IHRyZWU7IGxlbmd0aDsgY29tcGFyYXRvciB9XG47O1xuXG5sZXQgd2l0aF9zYW1lX2xlbmd0aCB7IHRyZWUgPSBfOyBjb21wYXJhdG9yOyBsZW5ndGggfSB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggfVxubGV0IG9mX2xpa2VfdHJlZSB0IHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3I7IGxlbmd0aCA9IFRyZWUwLmxlbmd0aCB0cmVlIH1cblxubGV0IG9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCB0IHRyZWUgPVxuICBpZiBwaHlzX2VxdWFsIHQudHJlZSB0cmVlXG4gIHRoZW4gdFxuICBlbHNlIHsgdHJlZTsgY29tcGFyYXRvciA9IHQuY29tcGFyYXRvcjsgbGVuZ3RoID0gVHJlZTAubGVuZ3RoIHRyZWUgfVxuOztcblxubGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoID0gVHJlZTAubGVuZ3RoIHRyZWUgfVxuXG4oKiBFeHBvc2luZyB0aGlzIGZ1bmN0aW9uIHdvdWxkIG1ha2UgaXQgdmVyeSBlYXN5IGZvciB0aGUgaW52YXJpYW50c1xuICAgb2YgdGhpcyBtb2R1bGUgdG8gYmUgYnJva2VuLiAqKVxubGV0IG9mX3RyZWVfdW5zYWZlIH5jb21wYXJhdG9yIH5sZW5ndGggdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoIH1cblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciB0ID0gdC5jb21wYXJhdG9yXG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcblxuICBsZXQgaW52YXJpYW50cyB0ID1cbiAgICBUcmVlMC5pbnZhcmlhbnRzIHQudHJlZSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpICYmIFRyZWUwLmxlbmd0aCB0LnRyZWUgPSB0Lmxlbmd0aFxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdC50cmVlXG4gIGxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5cbiAgbGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5zZXQgdC50cmVlIH5sZW5ndGg6dC5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICAgIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5hZGRfZXhuXG4gICAgICAgICB0LnRyZWVcbiAgICAgICAgIH5sZW5ndGg6dC5sZW5ndGhcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdCkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBhZGRfZXhuX2ludGVybmFsIHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmFkZF9leG5faW50ZXJuYWxcbiAgICAgICAgIHQudHJlZVxuICAgICAgICAgfmxlbmd0aDp0Lmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90KSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGFkZCB0IH5rZXkgfmRhdGEgPVxuICAgIG1hdGNoIGFkZF9leG5faW50ZXJuYWwgdCB+a2V5IH5kYXRhIHdpdGhcbiAgICB8IHJlc3VsdCAtPiBgT2sgcmVzdWx0XG4gICAgfCBleGNlcHRpb24gRHVwbGljYXRlIC0+IGBEdXBsaWNhdGVcbiAgOztcblxuICBsZXQgYWRkX211bHRpIHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmFkZF9tdWx0aSB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCByZW1vdmVfbXVsdGkgdCBrZXkgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5yZW1vdmVfbXVsdGkgdC50cmVlIH5sZW5ndGg6dC5sZW5ndGgga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIHQga2V5ID0gVHJlZTAuZmluZF9tdWx0aSB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcblxuICBsZXQgY2hhbmdlIHQga2V5IH5mID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuY2hhbmdlIHQudHJlZSBrZXkgfmYgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICAgIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgdXBkYXRlIHQga2V5IH5mID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAudXBkYXRlIHQudHJlZSBrZXkgfmYgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICAgIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmluZF9leG4gdCBrZXkgPVxuICAgIFRyZWUwLmZpbmRfZXhuXG4gICAgICB0LnRyZWVcbiAgICAgIGtleVxuICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgZmluZCB0IGtleSA9IFRyZWUwLmZpbmQgdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG5cbiAgbGV0IHJlbW92ZSB0IGtleSA9XG4gICAgbGlrZV9tYXliZV9ub19vcFxuICAgICAgdFxuICAgICAgKFRyZWUwLnJlbW92ZSB0LnRyZWUga2V5IH5sZW5ndGg6dC5sZW5ndGggfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBtZW0gdCBrZXkgPSBUcmVlMC5tZW0gdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIGxldCBpdGVyX2tleXMgdCB+ZiA9IFRyZWUwLml0ZXJfa2V5cyB0LnRyZWUgfmZcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdC50cmVlIH5mXG4gIGxldCBpdGVyaSB0IH5mID0gVHJlZTAuaXRlcmkgdC50cmVlIH5mXG4gIGxldCBpdGVyaV91bnRpbCB0IH5mID0gVHJlZTAuaXRlcmlfdW50aWwgdC50cmVlIH5mXG4gIGxldCBpdGVyMiB0MSB0MiB+ZiA9IFRyZWUwLml0ZXIyIHQxLnRyZWUgdDIudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICBsZXQgbWFwIHQgfmYgPSB3aXRoX3NhbWVfbGVuZ3RoIHQgKFRyZWUwLm1hcCB0LnRyZWUgfmYpXG4gIGxldCBtYXBpIHQgfmYgPSB3aXRoX3NhbWVfbGVuZ3RoIHQgKFRyZWUwLm1hcGkgdC50cmVlIH5mKVxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0LnRyZWUgfmYgfmluaXRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gVHJlZTAuZm9sZF91bnRpbCB0LnRyZWUgfmluaXQgfmYgfmZpbmlzaFxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0LnRyZWUgfmYgfmluaXRcblxuICBsZXQgZm9sZDIgdDEgdDIgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGQyIHQxLnRyZWUgdDIudHJlZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfa2V5cyB0IH5mID1cbiAgICBsZXQgbGVuID0gIChyZWYgdC5sZW5ndGgpIGluXG4gICAgbGV0IHRyZWUgPSBUcmVlMC5maWx0ZXJfa2V5cyB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2VfbWF5YmVfbm9fb3AgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlciB0IH5mID1cbiAgICBsZXQgbGVuID0gIChyZWYgdC5sZW5ndGgpIGluXG4gICAgbGV0IHRyZWUgPSBUcmVlMC5maWx0ZXIgdC50cmVlIH5mIH5sZW4gaW5cbiAgICBsaWtlX21heWJlX25vX29wIHQgKHdpdGhfbGVuZ3RoIHRyZWUgIWxlbikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaWx0ZXJpIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlcmkgdC50cmVlIH5mIH5sZW4gaW5cbiAgICBsaWtlX21heWJlX25vX29wIHQgKHdpdGhfbGVuZ3RoIHRyZWUgIWxlbikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlcl9tYXAgdC50cmVlIH5mIH5sZW4gaW5cbiAgICBsaWtlIHQgKHdpdGhfbGVuZ3RoIHRyZWUgIWxlbikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgICBsZXQgbGVuID0gIChyZWYgdC5sZW5ndGgpIGluXG4gICAgbGV0IHRyZWUgPSBUcmVlMC5maWx0ZXJfbWFwaSB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2UgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG9mX2xpa2VfdHJlZTIgdCAodDEsIHQyKSA9IG9mX2xpa2VfdHJlZSB0IHQxLCBvZl9saWtlX3RyZWUgdCB0MlxuXG4gIGxldCBvZl9saWtlX3RyZWUyX21heWJlX25vX29wIHQgKHQxLCB0MikgPVxuICAgIG9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCB0IHQxLCBvZl9saWtlX3RyZWVfbWF5YmVfbm9fb3AgdCB0MlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID0gb2ZfbGlrZV90cmVlMiB0IChUcmVlMC5wYXJ0aXRpb25fbWFwaSB0LnRyZWUgfmYpXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBvZl9saWtlX3RyZWUyIHQgKFRyZWUwLnBhcnRpdGlvbl9tYXAgdC50cmVlIH5mKVxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID0gb2ZfbGlrZV90cmVlMl9tYXliZV9ub19vcCB0IChUcmVlMC5wYXJ0aXRpb25pX3RmIHQudHJlZSB+ZilcbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gb2ZfbGlrZV90cmVlMl9tYXliZV9ub19vcCB0IChUcmVlMC5wYXJ0aXRpb25fdGYgdC50cmVlIH5mKVxuXG4gIGxldCBjb21iaW5lX2Vycm9ycyB0ID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOihvZl9saWtlX3RyZWUgdClcbiAgICAgIChUcmVlMC5jb21iaW5lX2Vycm9ycyB0LnRyZWUgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgVHJlZTAuY29tcGFyZSAoY29tcGFyZV9rZXkgdDEpIGNvbXBhcmVfZGF0YSB0MS50cmVlIHQyLnRyZWVcbiAgOztcblxuICBsZXQgZXF1YWwgY29tcGFyZV9kYXRhIHQxIHQyID0gVHJlZTAuZXF1YWwgKGNvbXBhcmVfa2V5IHQxKSBjb21wYXJlX2RhdGEgdDEudHJlZSB0Mi50cmVlXG4gIGxldCBrZXlzIHQgPSBUcmVlMC5rZXlzIHQudHJlZVxuICBsZXQgZGF0YSB0ID0gVHJlZTAuZGF0YSB0LnRyZWVcbiAgbGV0IHRvX2FsaXN0ID9rZXlfb3JkZXIgdCA9IFRyZWUwLnRvX2FsaXN0ID9rZXlfb3JkZXIgdC50cmVlXG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSkgfmRhdGFfZXF1YWxcbiAgOztcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgdDEudHJlZVxuICAgICAgdDIudHJlZVxuICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSlcbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgOztcblxuICBsZXQgbWVyZ2UgdDEgdDIgfmYgPVxuICAgIGxpa2UgdDEgKFRyZWUwLm1lcmdlIHQxLnRyZWUgdDIudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBtZXJnZV9za2V3ZWQgdDEgdDIgfmNvbWJpbmUgPVxuICAgICgqIFRoaXMgaXMgb25seSBhIG5vLW9wIGluIHRoZSBjYXNlIHdoZXJlIGF0IGxlYXN0IG9uZSBvZiB0aGUgbWFwcyBpcyBlbXB0eS4gKilcbiAgICBsaWtlX21heWJlX25vX29wXG4gICAgICAoaWYgdDIubGVuZ3RoIDw9IHQxLmxlbmd0aCB0aGVuIHQxIGVsc2UgdDIpXG4gICAgICAoVHJlZTAubWVyZ2Vfc2tld2VkXG4gICAgICAgICB0MS50cmVlXG4gICAgICAgICB0Mi50cmVlXG4gICAgICAgICB+bGVuZ3RoMTp0MS5sZW5ndGhcbiAgICAgICAgIH5sZW5ndGgyOnQyLmxlbmd0aFxuICAgICAgICAgfmNvbWJpbmVcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpKVxuICA7O1xuXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHQudHJlZVxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHQudHJlZVxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0LnRyZWVcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0LnRyZWVcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdC50cmVlIH5mXG4gIGxldCBmb3JfYWxsaSB0IH5mID0gVHJlZTAuZm9yX2FsbGkgdC50cmVlIH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0LnRyZWUgfmZcbiAgbGV0IGV4aXN0c2kgdCB+ZiA9IFRyZWUwLmV4aXN0c2kgdC50cmVlIH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdC50cmVlIH5mXG4gIGxldCBjb3VudGkgdCB+ZiA9IFRyZWUwLmNvdW50aSB0LnRyZWUgfmZcblxuICBsZXQgc3BsaXQgdCBrID1cbiAgICBsZXQgbCwgbWF5YmUsIHIgPSBUcmVlMC5zcGxpdCB0LnRyZWUgayB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpIGluXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHQgaW5cbiAgICAoKiBUcnkgdG8gdHJhdmVyc2UgdGhlIGxlYXN0IGFtb3VudCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCxcbiAgICAgICB1c2luZyBoZWlnaHQgYXMgYSBoZXVyaXN0aWMuICopXG4gICAgbGV0IGJvdGhfbGVuID0gaWYgT3B0aW9uLmlzX3NvbWUgbWF5YmUgdGhlbiB0Lmxlbmd0aCAtIDEgZWxzZSB0Lmxlbmd0aCBpblxuICAgIGlmIFRyZWUwLmhlaWdodCBsIDwgVHJlZTAuaGVpZ2h0IHJcbiAgICB0aGVuIChcbiAgICAgIGxldCBsID0gb2ZfdHJlZSBsIH5jb21wYXJhdG9yIGluXG4gICAgICBsLCBtYXliZSwgb2ZfdHJlZV91bnNhZmUgciB+Y29tcGFyYXRvciB+bGVuZ3RoOihib3RoX2xlbiAtIGxlbmd0aCBsKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCByID0gb2ZfdHJlZSByIH5jb21wYXJhdG9yIGluXG4gICAgICBvZl90cmVlX3Vuc2FmZSBsIH5jb21wYXJhdG9yIH5sZW5ndGg6KGJvdGhfbGVuIC0gbGVuZ3RoIHIpLCBtYXliZSwgcilcbiAgOztcblxuICBsZXQgc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG8gayA9XG4gICAgbGV0IGwsIHIgPVxuICAgICAgVHJlZTAuc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQudHJlZSB+aW50byBrIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICBpblxuICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvciB0IGluXG4gICAgKCogVHJ5IHRvIHRyYXZlcnNlIHRoZSBsZWFzdCBhbW91bnQgcG9zc2libGUgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGgsXG4gICAgICAgdXNpbmcgaGVpZ2h0IGFzIGEgaGV1cmlzdGljLiAqKVxuICAgIGlmIFRyZWUwLmhlaWdodCBsIDwgVHJlZTAuaGVpZ2h0IHJcbiAgICB0aGVuIChcbiAgICAgIGxldCBsID0gb2ZfdHJlZSBsIH5jb21wYXJhdG9yIGluXG4gICAgICBsLCBvZl90cmVlX3Vuc2FmZSByIH5jb21wYXJhdG9yIH5sZW5ndGg6KHQubGVuZ3RoIC0gbGVuZ3RoIGwpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHIgPSBvZl90cmVlIHIgfmNvbXBhcmF0b3IgaW5cbiAgICAgIG9mX3RyZWVfdW5zYWZlIGwgfmNvbXBhcmF0b3Igfmxlbmd0aDoodC5sZW5ndGggLSBsZW5ndGggciksIHIpXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2xlX2d0IHQgayA9IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB0IH5pbnRvOmBMZWZ0IGtcbiAgbGV0IHNwbGl0X2x0X2dlIHQgayA9IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB0IH5pbnRvOmBSaWdodCBrXG5cbiAgbGV0IHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbGV0IGxlZnQsIG1pZCwgcmlnaHQgPVxuICAgICAgVHJlZTAuc3BsaXRfcmFuZ2UgdC50cmVlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgIGluXG4gICAgKCogVHJ5IHRvIHRyYXZlcnNlIHRoZSBsZWFzdCBhbW91bnQgcG9zc2libGUgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGgsXG4gICAgICAgdXNpbmcgaGVpZ2h0IGFzIGEgaGV1cmlzdGljLiAqKVxuICAgIGxldCBvdXRlcl9qb2luZWRfaGVpZ2h0ID1cbiAgICAgIGxldCBoX2wgPSBUcmVlMC5oZWlnaHQgbGVmdFxuICAgICAgYW5kIGhfciA9IFRyZWUwLmhlaWdodCByaWdodCBpblxuICAgICAgaWYgaF9sID0gaF9yIHRoZW4gaF9sICsgMSBlbHNlIG1heCBoX2wgaF9yXG4gICAgaW5cbiAgICBpZiBvdXRlcl9qb2luZWRfaGVpZ2h0IDwgVHJlZTAuaGVpZ2h0IG1pZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IG1pZF9sZW5ndGggPSB0Lmxlbmd0aCAtIChUcmVlMC5sZW5ndGggbGVmdCArIFRyZWUwLmxlbmd0aCByaWdodCkgaW5cbiAgICAgIG9mX3RyZWVfdW5zYWZlIG1pZCB+Y29tcGFyYXRvcjooY29tcGFyYXRvciB0KSB+bGVuZ3RoOm1pZF9sZW5ndGgpXG4gICAgZWxzZSBvZl90cmVlIG1pZCB+Y29tcGFyYXRvcjooY29tcGFyYXRvciB0KVxuICA7O1xuXG4gIGxldCBhcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgPVxuICAgIG1hdGNoXG4gICAgICBUcmVlMC5hcHBlbmRcbiAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSBsb3dlcl9wYXJ0KVxuICAgICAgICB+bG93ZXJfcGFydDpsb3dlcl9wYXJ0LnRyZWVcbiAgICAgICAgfnVwcGVyX3BhcnQ6dXBwZXJfcGFydC50cmVlXG4gICAgd2l0aFxuICAgIHwgYE9rIHRyZWUgLT5cbiAgICAgIGBPa1xuICAgICAgICAob2ZfdHJlZV91bnNhZmVcbiAgICAgICAgICAgdHJlZVxuICAgICAgICAgICB+Y29tcGFyYXRvcjooY29tcGFyYXRvciBsb3dlcl9wYXJ0KVxuICAgICAgICAgICB+bGVuZ3RoOihsb3dlcl9wYXJ0Lmxlbmd0aCArIHVwcGVyX3BhcnQubGVuZ3RoKSlcbiAgICB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIC0+IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3JhbmdlX2luY2x1c2l2ZSB0LnRyZWUgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggPVxuICAgIFRyZWUwLnJhbmdlX3RvX2FsaXN0IHQudHJlZSB+bWluIH5tYXggfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCBjbG9zZXN0X2tleSB0IGRpciBrZXkgPVxuICAgIFRyZWUwLmNsb3Nlc3Rfa2V5IHQudHJlZSBkaXIga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgOztcblxuICBsZXQgbnRoIHQgbiA9IFRyZWUwLm50aCB0LnRyZWUgblxuICBsZXQgbnRoX2V4biB0IG4gPSBPcHRpb24udmFsdWVfZXhuIChudGggdCBuKVxuICBsZXQgcmFuayB0IGtleSA9IFRyZWUwLnJhbmsgdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0LnRyZWVcblxuICBsZXQgdG9fc2VxdWVuY2UgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZVxuICAgICAgdC5jb21wYXJhdG9yXG4gICAgICA/b3JkZXJcbiAgICAgID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgIHQudHJlZVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQudHJlZSB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmVlIH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgdCA9XG4gICAgVHJlZTAuaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9rZXkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgdC50cmVlXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBtYXRjaFxuICAgICAgVHJlZTAuYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIHQudHJlZSB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gICAgd2l0aFxuICAgIHwgU29tZSAobG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kKSAtPiBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgICB8IE5vbmUgLT4gbGlrZV9tYXliZV9ub19vcCB0ICh3aXRoX2xlbmd0aCBUcmVlMC5FbXB0eSAwKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpID0gc3RydWN0XG4gICAgbW9kdWxlIFRyZWVfdHJhdmVyc2FscyA9IFRyZWUwLk1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSlcblxuICAgIGxldCBtYXBpIHQgfmYgPVxuICAgICAgQS5tYXAgKFRyZWVfdHJhdmVyc2Fscy5tYXBpIHQudHJlZSB+ZikgfmY6KGZ1biBuZXdfdHJlZSAtPlxuICAgICAgICB3aXRoX3NhbWVfbGVuZ3RoIHQgbmV3X3RyZWUpXG4gICAgOztcblxuICAgIGxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgICAgIEEubWFwIChUcmVlX3RyYXZlcnNhbHMuZmlsdGVyX21hcGkgdC50cmVlIH5mKSB+ZjooZnVuIG5ld190cmVlX3dpdGhfbGVuZ3RoIC0+XG4gICAgICAgIGxpa2UgdCBuZXdfdHJlZV93aXRoX2xlbmd0aClcbiAgICA7O1xuICBlbmRcbmVuZFxuXG4oKiBbMF0gaXMgdXNlZCBhcyB0aGUgW2xlbmd0aF0gYXJndW1lbnQgZXZlcnl3aGVyZSBpbiB0aGlzIG1vZHVsZSwgc2luY2UgdHJlZXMgZG8gbm90XG4gICBoYXZlIHRoZWlyIGxlbmd0aHMgc3RvcmVkIGF0IHRoZSByb290LCB1bmxpa2UgbWFwcy4gVGhlIHZhbHVlcyBhcmUgZGlzY2FyZGVkIGFsd2F5cy4gKilcbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHQgPSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdHJlZVxuXG4gIGxldCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uID0gVHJlZTAuZW1wdHlcbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yOl8gPSBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yOl8gdHJlZSA9IHRyZWVcbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvcjpfIGsgdiA9IFRyZWUwLnNpbmdsZXRvbiBrIHZcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgKFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgIC50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjooZnVuICh4IDogKCdrLCAndikgVHJlZTAudCBXaXRoX2xlbmd0aC50KSAtPiB4LnRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0IH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBtYXRjaCBUcmVlMC5vZl9hbGlzdCBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCA9IF8gfSAtPiBgT2sgdHJlZVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgVHJlZTAub2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgfmNvbXBhcmF0b3JcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYWxpc3QgPSAoVHJlZTAub2ZfYWxpc3RfZXhuIGFsaXN0IH5jb21wYXJhdG9yKS50cmVlXG5cbiAgbGV0IG9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICAoVHJlZTAub2ZfYWxpc3RfbXVsdGkgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmYgPVxuICAgIChUcmVlMC5vZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYWxpc3QgfmYgPVxuICAgIChUcmVlMC5vZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaSA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggPSBfIH0gLT4gYE9rIHRyZWVcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmkgPSAoVHJlZTAub2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvcikudHJlZVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvcjpfcmVxdWlyZWRfYnlfaW50ZiB+bGVuIH5mID1cbiAgICBUcmVlMC5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgICAgIChUcmVlMC5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgbWF0Y2ggVHJlZTAub2Zfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICAgIHwgYE9rIHsgdHJlZTsgbGVuZ3RoID0gXyB9IC0+IGBPayB0cmVlXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgVHJlZTAub2Zfc2VxdWVuY2Vfb3JfZXJyb3Igc2VxIH5jb21wYXJhdG9yXG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yIHNlcSA9IChUcmVlMC5vZl9zZXF1ZW5jZV9leG4gc2VxIH5jb21wYXJhdG9yKS50cmVlXG5cbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgKFRyZWUwLm9mX3NlcXVlbmNlX211bHRpIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzZXEgfmluaXQgfmYgPVxuICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9mb2xkIHNlcSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yIHNlcSB+ZiA9XG4gICAgKFRyZWUwLm9mX3NlcXVlbmNlX3JlZHVjZSBzZXEgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgbWF0Y2hcbiAgICAgIFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB3aXRoXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICAgIHwgYE9rIHsgdHJlZTsgbGVuZ3RoID0gXyB9IC0+IGBPayB0cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgVHJlZTAub2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsaXN0IH5nZXRfa2V5IH5jb21wYXJhdG9yXG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgKFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXlfZXhuIGxpc3QgfmdldF9rZXkgfmNvbXBhcmF0b3IpLnRyZWVcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICAoVHJlZTAub2ZfbGlzdF93aXRoX2tleV9tdWx0aVxuICAgICAgIGxpc3RcbiAgICAgICB+Z2V0X2tleVxuICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCB0b190cmVlIHQgPSB0XG5cbiAgbGV0IGludmFyaWFudHMgfmNvbXBhcmF0b3IgdCA9XG4gICAgVHJlZTAuaW52YXJpYW50cyB0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdFxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdFxuXG4gIGxldCBzZXQgfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICAoVHJlZTAuc2V0IHQgfmtleSB+ZGF0YSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IGFkZF9leG4gfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICAoVHJlZTAuYWRkX2V4blxuICAgICAgIHRcbiAgICAgICB+a2V5XG4gICAgICAgfmRhdGFcbiAgICAgICB+bGVuZ3RoOjBcbiAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICB+c2V4cF9vZl9rZXk6Y29tcGFyYXRvci5zZXhwX29mX3QpXG4gICAgLnRyZWVcbiAgOztcblxuICBsZXQgYWRkX2V4bl9pbnRlcm5hbCB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIChUcmVlMC5hZGRfZXhuX2ludGVybmFsXG4gICAgICAgdFxuICAgICAgIH5rZXlcbiAgICAgICB+ZGF0YVxuICAgICAgIH5sZW5ndGg6MFxuICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgIH5zZXhwX29mX2tleTpjb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCBhZGQgfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICB0cnkgYE9rIChhZGRfZXhuX2ludGVybmFsIHQgfmNvbXBhcmF0b3IgfmtleSB+ZGF0YSkgd2l0aFxuICAgIHwgXyAtPiBgRHVwbGljYXRlXG4gIDs7XG5cbiAgbGV0IGFkZF9tdWx0aSB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIChUcmVlMC5hZGRfbXVsdGkgdCB+a2V5IH5kYXRhIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gICAgLnRyZWVcbiAgOztcblxuICBsZXQgcmVtb3ZlX211bHRpIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICAoVHJlZTAucmVtb3ZlX211bHRpIHQga2V5IH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgZmluZF9tdWx0aSB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9tdWx0aSB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgY2hhbmdlIH5jb21wYXJhdG9yIHQga2V5IH5mID1cbiAgICAoVHJlZTAuY2hhbmdlIHQga2V5IH5mIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgdXBkYXRlIH5jb21wYXJhdG9yIHQga2V5IH5mID1cbiAgICBjaGFuZ2UgfmNvbXBhcmF0b3IgdCBrZXkgfmY6KGZ1biBkYXRhIC0+IFNvbWUgKGYgZGF0YSkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmluZF9leG4gfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIFRyZWUwLmZpbmRfZXhuXG4gICAgICB0XG4gICAgICBrZXlcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgZmluZCB+Y29tcGFyYXRvciB0IGtleSA9IFRyZWUwLmZpbmQgdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbiAgbGV0IHJlbW92ZSB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgKFRyZWUwLnJlbW92ZSB0IGtleSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG1lbSB+Y29tcGFyYXRvciB0IGtleSA9IFRyZWUwLm1lbSB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgbGV0IGl0ZXJfa2V5cyB0IH5mID0gVHJlZTAuaXRlcl9rZXlzIHQgfmZcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdCB+ZlxuICBsZXQgaXRlcmkgdCB+ZiA9IFRyZWUwLml0ZXJpIHQgfmZcbiAgbGV0IGl0ZXJpX3VudGlsIHQgfmYgPSBUcmVlMC5pdGVyaV91bnRpbCB0IH5mXG5cbiAgbGV0IGl0ZXIyIH5jb21wYXJhdG9yIHQxIHQyIH5mID1cbiAgICBUcmVlMC5pdGVyMiB0MSB0MiB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPSBUcmVlMC5tYXAgdCB+ZlxuICBsZXQgbWFwaSB0IH5mID0gVHJlZTAubWFwaSB0IH5mXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQgfmYgfmluaXRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gVHJlZTAuZm9sZF91bnRpbCB0IH5mIH5pbml0IH5maW5pc2hcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdCB+ZiB+aW5pdFxuXG4gIGxldCBmb2xkMiB+Y29tcGFyYXRvciB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZDIgdDEgdDIgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9rZXlzIHQgfmYgPSBUcmVlMC5maWx0ZXJfa2V5cyB0IH5mIH5sZW46KCAocmVmIDApKSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IFRyZWUwLmZpbHRlciB0IH5mIH5sZW46KCAocmVmIDApKSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXJpIHQgfmYgPSBUcmVlMC5maWx0ZXJpIHQgfmYgfmxlbjooIChyZWYgMCkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IFRyZWUwLmZpbHRlcl9tYXAgdCB+ZiB+bGVuOiggKHJlZiAwKSkgW0Bub250YWlsXVxuICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9IFRyZWUwLmZpbHRlcl9tYXBpIHQgfmYgfmxlbjooIChyZWYgMCkpIFtAbm9udGFpbF1cbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPSBUcmVlMC5wYXJ0aXRpb25fbWFwaSB0IH5mXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBUcmVlMC5wYXJ0aXRpb25fbWFwIHQgfmZcbiAgbGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbmlfdGYgdCB+ZlxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBUcmVlMC5wYXJ0aXRpb25fdGYgdCB+ZlxuXG4gIGxldCBjb21iaW5lX2Vycm9ycyB+Y29tcGFyYXRvciB0ID1cbiAgICBUcmVlMC5jb21iaW5lX2Vycm9ycyB0IH5zZXhwX29mX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IH5jb21wYXJhdG9yIGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgVHJlZTAuY29tcGFyZSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBjb21wYXJlX2RhdGEgdDEgdDJcbiAgOztcblxuICBsZXQgZXF1YWwgfmNvbXBhcmF0b3IgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5lcXVhbCBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBjb21wYXJlX2RhdGEgdDEgdDJcbiAgOztcblxuICBsZXQga2V5cyB0ID0gVHJlZTAua2V5cyB0XG4gIGxldCBkYXRhIHQgPSBUcmVlMC5kYXRhIHRcbiAgbGV0IHRvX2FsaXN0ID9rZXlfb3JkZXIgdCA9IFRyZWUwLnRvX2FsaXN0ID9rZXlfb3JkZXIgdFxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiB+ZGF0YV9lcXVhbCA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH5kYXRhX2VxdWFsXG4gIDs7XG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgfmNvbXBhcmF0b3IgdDEgdDIgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgIHQxXG4gICAgICB0MlxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICB+ZGF0YV9lcXVhbFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gIDs7XG5cbiAgbGV0IG1lcmdlIH5jb21wYXJhdG9yIHQxIHQyIH5mID1cbiAgICAoVHJlZTAubWVyZ2UgdDEgdDIgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCB+Y29tcGFyYXRvciB0MSB0MiB+Y29tYmluZSA9XG4gICAgKCogTGVuZ3RoIGNvbXB1dGF0aW9uIG1ha2VzIHRoaXMgc2lnbmlmaWNhbnRseSBzbG93ZXIgdGhhbiBbbWVyZ2Vfc2tld2VkXSBvbiBhIG1hcFxuICAgICAgIHdpdGggYSBbbGVuZ3RoXSBmaWVsZCwgYnV0IGRvZXMgcHJlc2VydmUgYW1vdW50IG9mIGFsbG9jYXRpb24uICopXG4gICAgKFRyZWUwLm1lcmdlX3NrZXdlZFxuICAgICAgIHQxXG4gICAgICAgdDJcbiAgICAgICB+bGVuZ3RoMToobGVuZ3RoIHQxKVxuICAgICAgIH5sZW5ndGgyOihsZW5ndGggdDIpXG4gICAgICAgfmNvbWJpbmVcbiAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gICAgLnRyZWVcbiAgOztcblxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0XG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdFxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0XG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdFxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0IH5mXG4gIGxldCBmb3JfYWxsaSB0IH5mID0gVHJlZTAuZm9yX2FsbGkgdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlMC5leGlzdHMgdCB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gVHJlZTAuZXhpc3RzaSB0IH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdCB+ZlxuICBsZXQgY291bnRpIHQgfmYgPSBUcmVlMC5jb3VudGkgdCB+ZlxuICBsZXQgc3BsaXQgfmNvbXBhcmF0b3IgdCBrID0gVHJlZTAuc3BsaXQgdCBrIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG4gIGxldCBzcGxpdF9sZV9ndCB+Y29tcGFyYXRvciB0IGsgPVxuICAgIFRyZWUwLnNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeVxuICAgICAgdFxuICAgICAgfmludG86YExlZnRcbiAgICAgIGtcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBzcGxpdF9sdF9nZSB+Y29tcGFyYXRvciB0IGsgPVxuICAgIFRyZWUwLnNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeVxuICAgICAgdFxuICAgICAgfmludG86YFJpZ2h0XG4gICAgICBrXG4gICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgYXBwZW5kIH5jb21wYXJhdG9yIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0ID1cbiAgICBUcmVlMC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IHN1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbGV0IF8sIHJldCwgXyA9XG4gICAgICBUcmVlMC5zcGxpdF9yYW5nZVxuICAgICAgICB0XG4gICAgICAgIH5sb3dlcl9ib3VuZFxuICAgICAgICB+dXBwZXJfYm91bmRcbiAgICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICByZXRcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgfmNvbXBhcmF0b3IgdCB+bWluIH5tYXggfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgICB0XG4gICAgICB+bWluXG4gICAgICB+bWF4XG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB+Y29tcGFyYXRvciB0IH5taW4gfm1heCA9XG4gICAgVHJlZTAucmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGNsb3Nlc3Rfa2V5IH5jb21wYXJhdG9yIHQgZGlyIGtleSA9XG4gICAgVHJlZTAuY2xvc2VzdF9rZXkgdCBkaXIga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBudGggdCBuID0gVHJlZTAubnRoIHQgblxuICBsZXQgbnRoX2V4biB0IG4gPSBPcHRpb24udmFsdWVfZXhuIChudGggdCBuKVxuICBsZXQgcmFuayB+Y29tcGFyYXRvciB0IGtleSA9IFRyZWUwLnJhbmsgdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3Iga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID1cbiAgICAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpLnRyZWVcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZSBjb21wYXJhdG9yID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yOl8gdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvcjpfIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbWF0Y2ggVHJlZTAuYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB3aXRoXG4gICAgfCBTb21lIChsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpIC0+IHN1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICAgIHwgTm9uZSAtPiBFbXB0eVxuICA7O1xuXG4gIG1vZHVsZSBNYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEgOiBBcHBsaWNhdGl2ZS5MYXp5X2FwcGxpY2F0aXZlKSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUcmVlMF90cmF2ZXJzYWxzID0gVHJlZTAuTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBKVxuXG4gICAgbGV0IG1hcGkgdCB+ZiA9IFRyZWUwX3RyYXZlcnNhbHMubWFwaSB0IH5mXG5cbiAgICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gICAgICBBLm1hcFxuICAgICAgICAoVHJlZTBfdHJhdmVyc2Fscy5maWx0ZXJfbWFwaSB0IH5mKVxuICAgICAgICB+ZjooZnVuICh4IDogKCdrLCAndikgVHJlZTAudCBXaXRoX2xlbmd0aC50KSAtPiB4LnRyZWUpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG1hdGNoIFRyZWUwLm1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgd2l0aFxuICAgIHwgYE9rIHsgdHJlZSA9IHQ7IGxlbmd0aCA9IF8gfSAtPiBgT2sgdFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkdXAgLT4gZHVwXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mID0gKFRyZWUwLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mKS50cmVlXG5cbiAgKCogVGhpcyBjYWxsaW5nIGNvbnZlbnRpb24gb2YgW35jb21wYXJhdG9yIH5jb21wYXJhdG9yXSBpcyBjb25mdXNpbmcuIEl0IGlzIHJlcXVpcmVkXG4gICAgIGJlY2F1c2UgW2FjY2Vzc19vcHRpb25zXSBhbmQgW2NyZWF0ZV9vcHRpb25zXSBib3RoIGRlbWFuZCBhIFt+Y29tcGFyYXRvcl0gYXJndW1lbnQgaW5cbiAgICAgW01hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWVdLlxuXG4gICAgIE1ha2luZyBpdCBsZXNzIGNvbmZ1c2luZyB3b3VsZCByZXF1aXJlIHNvbWUgdW5uZWNlc3NhcnkgY29tcGxleGl0eSBpbiBzaWduYXR1cmVzLlxuICAgICBCZXR0ZXIgdG8ganVzdCBsaXZlIHdpdGggYW4gdW5kZXNpcmFibGUgaW50ZXJmYWNlIGluIGEgZnVuY3Rpb24gdGhhdCB3aWxsIHByb2JhYmx5XG4gICAgIG5ldmVyIGJlIGNhbGxlZCBkaXJlY3RseS4gKilcbiAgbGV0IHRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yOm91dGVyX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3I6aW5uZXJfY29tcGFyYXRvciB0ID1cbiAgICAoVHJlZTAudHJhbnNwb3NlX2tleXMgfm91dGVyX2NvbXBhcmF0b3IgfmlubmVyX2NvbXBhcmF0b3IgdCkudHJlZVxuICAgIHw+IG1hcCB+ZjooZnVuICh4IDogKCdrLCAndikgVHJlZTAudCBXaXRoX2xlbmd0aC50KSAtPiB4LnRyZWUpXG4gIDs7XG5cbiAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlICgnaywgJ3YsICd3KSB0ID0gKCdrLCAndikgVHJlZTAuQnVpbGRfaW5jcmVhc2luZy50XG5cbiAgICBsZXQgZW1wdHkgPSBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLmVtcHR5XG5cbiAgICBsZXQgYWRkX2V4biB0IH5jb21wYXJhdG9yIH5rZXkgfmRhdGEgPVxuICAgICAgbWF0Y2ggVHJlZTAuQnVpbGRfaW5jcmVhc2luZy5tYXhfa2V5IHQgd2l0aFxuICAgICAgfCBTb21lIHByZXZfa2V5IHdoZW4gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgcHJldl9rZXkga2V5ID49IDAgLT5cbiAgICAgICAgRXJyb3IucmFpc2VfcyAoU2V4cC5BdG9tIFwiTWFwLkJ1aWxkX2luY3JlYXNpbmcuYWRkOiBub24taW5jcmVhc2luZyBrZXlcIilcbiAgICAgIHwgXyAtPiBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLmFkZF91bmNoZWNrZWQgdCB+a2V5IH5kYXRhXG4gICAgOztcblxuICAgIGxldCB0b190cmVlIHQgPSBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLnRvX3RyZWVfdW5jaGVja2VkIHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdrLCAndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXApIHRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvciA9IHsgdHJlZSA9IFRyZWUwLmVtcHR5OyBjb21wYXJhdG9yOyBsZW5ndGggPSAwIH1cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvciBrIHYgPSB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5zaW5nbGV0b24gayB2OyBsZW5ndGggPSAxIH1cblxuICBsZXQgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKHsgdHJlZTsgbGVuZ3RoIH0gOiBfIFdpdGhfbGVuZ3RoLnQpID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gIDs7XG5cbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKHdpdGhfbGVuZ3RoIHRyZWUgKFRyZWUwLmxlbmd0aCB0cmVlKSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCB0b190cmVlID0gdG9fdHJlZVxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICAoVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICAgIH5mOihmdW4gdHJlZSAtPiBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdCB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfYWxpc3QgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCB9IC0+IGBPayB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgUmVzdWx0Lm1hcCAoVHJlZTAub2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgfmNvbXBhcmF0b3IpIH5mOihmdW4gdHJlZSAtPlxuICAgICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfYWxpc3RfZXhuIGFsaXN0IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2ZfYWxpc3RfbXVsdGkgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGFsaXN0IH5pbml0IH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGFsaXN0IH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmkgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2l0ZXJpIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB+aXRlcmkgd2l0aFxuICAgIHwgYE9rIHRyZWVfbGVuZ3RoIC0+IGBPayAob2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZV9sZW5ndGgpXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaSlcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAod2l0aF9sZW5ndGggKFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYpIGxlbikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICB+ZjooZnVuIHggLT4gb2ZfdHJlZTAgfmNvbXBhcmF0b3IgeClcbiAgICAgIChUcmVlMC5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgbWF0Y2ggVHJlZTAub2Zfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggfSAtPiBgT2sgeyBjb21wYXJhdG9yOyB0cmVlOyBsZW5ndGggfVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyB6IC0+IHpcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBSZXN1bHQubWFwIChUcmVlMC5vZl9zZXF1ZW5jZV9vcl9lcnJvciBzZXEgfmNvbXBhcmF0b3IpIH5mOihmdW4gdHJlZSAtPlxuICAgICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX3NlcXVlbmNlX2V4biBzZXEgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfbXVsdGkgc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzZXEgfmluaXQgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yIHNlcSB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfcmVkdWNlIHNlcSB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgbWF0Y2hcbiAgICAgIFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB3aXRoXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggfSAtPiBgT2sgeyBjb21wYXJhdG9yOyB0cmVlOyBsZW5ndGggfVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyB6IC0+IHpcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBSZXN1bHQubWFwIChUcmVlMC5vZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGxpc3QgfmdldF9rZXkgfmNvbXBhcmF0b3IpIH5mOihmdW4gdHJlZSAtPlxuICAgICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXlfZXhuIGxpc3QgfmdldF9rZXkgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgVHJlZTAub2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHw+IG9mX3RyZWUwIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3Iga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG1hdGNoIFRyZWUwLm1hcF9rZXlzIHQudHJlZSB+ZiB+Y29tcGFyYXRvciB3aXRoXG4gICAgfCBgT2sgcGFpciAtPiBgT2sgKG9mX3RyZWUwIH5jb21wYXJhdG9yIHBhaXIpXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGR1cCAtPiBkdXBcbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5tYXBfa2V5c19leG4gdC50cmVlIH5mIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCB0cmFuc3Bvc2Vfa2V5cyB+Y29tcGFyYXRvcjppbm5lcl9jb21wYXJhdG9yIHQgPVxuICAgIGxldCBvdXRlcl9jb21wYXJhdG9yID0gdC5jb21wYXJhdG9yIGluXG4gICAgVHJlZTAudHJhbnNwb3NlX2tleXMgfm91dGVyX2NvbXBhcmF0b3IgfmlubmVyX2NvbXBhcmF0b3IgKFRyZWUwLm1hcCB0LnRyZWUgfmY6dG9fdHJlZSlcbiAgICB8PiBvZl90cmVlMCB+Y29tcGFyYXRvcjppbm5lcl9jb21wYXJhdG9yXG4gICAgfD4gbWFwIH5mOihmdW4geCAtPiBvZl90cmVlMCB+Y29tcGFyYXRvcjpvdXRlcl9jb21wYXJhdG9yIHgpXG4gIDs7XG5cbiAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEsgOiBDb21wYXJhdG9yLlMxKSA9IHN0cnVjdFxuICAgIGxldCBlbXB0eSA9IHsgdHJlZSA9IFRyZWUwLmVtcHR5OyBjb21wYXJhdG9yID0gSy5jb21wYXJhdG9yOyBsZW5ndGggPSAwIH1cbiAgZW5kXG5cbiAgbW9kdWxlIFRyZWUgPSBUcmVlXG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxudHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCBjb21wYXJhdG9yX3MgKHR5cGUgayBjbXApIHQgOiAoaywgY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXBcblxuICAgIGxldCBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIGNvbXBhcmF0b3IpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl90cmVlICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIGNvbXBhcmF0b3IpIHRyZWUgPVxuICBvZl90cmVlIH5jb21wYXJhdG9yOk0uY29tcGFyYXRvciB0cmVlXG47O1xuXG5sZXQgZW1wdHkgbSA9IFVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbmxldCBzaW5nbGV0b24gbSBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2FsaXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9hbGlzdF9tdWx0aSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IG9mX2FsaXN0X2ZvbGQgbSBhIH5pbml0IH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmluaXQgfmZcbjs7XG5cbmxldCBvZl9hbGlzdF9yZWR1Y2UgbSBhIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+ZlxuOztcblxubGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBvZl9zb3J0ZWRfYXJyYXkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2l0ZXJpIG0gfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcblxubGV0IG9mX2l0ZXJpX2V4biBtIH5pdGVyaSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuOztcblxubGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIG0gfmxlbiB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuOztcblxubGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgbSBzZXEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc2VxXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2UgbSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG5cbmxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBtIHMgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZV9leG4gbSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuXG5sZXQgb2Zfc2VxdWVuY2VfbXVsdGkgbSBzID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2VfZm9sZCBtIHMgfmluaXQgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgcyB+aW5pdCB+ZlxuOztcblxubGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBtIHMgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzIH5mXG47O1xuXG5sZXQgb2ZfbGlzdF93aXRoX2tleSBtIGwgfmdldF9rZXkgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgbCB+Z2V0X2tleVxuOztcblxubGV0IG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbSBsIH5nZXRfa2V5ID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGwgfmdldF9rZXlcbjs7XG5cbmxldCBvZl9saXN0X3dpdGhfa2V5X2V4biBtIGwgfmdldF9rZXkgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGwgfmdldF9rZXlcbjs7XG5cbmxldCBvZl9saXN0X3dpdGhfa2V5X211bHRpIG0gbCB+Z2V0X2tleSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9tdWx0aSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBsIH5nZXRfa2V5XG47O1xuXG5sZXQgbWFwX2tleXMgbSB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5cyB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0IH5mXG5sZXQgbWFwX2tleXNfZXhuIG0gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHQgfmZcbmxldCB0cmFuc3Bvc2Vfa2V5cyBtIHQgPSBVc2luZ19jb21wYXJhdG9yLnRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHRcblxubW9kdWxlIE0gKEsgOiBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBrKSAobW9kdWxlIEsgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBrKSBzZXhwX29mX3YgdCA9XG4gIHNleHBfb2ZfdCBLLnNleHBfb2ZfdCBzZXhwX29mX3YgKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cFxuICAgICAgKHR5cGUgayBjbXApXG4gICAgICAobW9kdWxlIEsgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgIHZfb2Zfc2V4cFxuICAgICAgc2V4cFxuICA9XG4gIFVzaW5nX2NvbXBhcmF0b3IudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvcjpLLmNvbXBhcmF0b3IgSy50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hclxuICAgICAgKHR5cGUgaylcbiAgICAgIChtb2R1bGUgSyA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gaylcbiAgICAgICh2X2dyYW1tYXIgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICB7IHVudHlwZWQgPVxuICAgICAgVGFnZ2VkXG4gICAgICAgIHsga2V5ID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX3RhZ1xuICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICA7IGdyYW1tYXIgPVxuICAgICAgICAgICAgTGlzdFxuICAgICAgICAgICAgICAoTWFueVxuICAgICAgICAgICAgICAgICAoTGlzdFxuICAgICAgICAgICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAoIFRhZ2dlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBrZXkgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2Nfa2V5X3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgOyB2YWx1ZSA9IExpc3QgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgZ3JhbW1hciA9IEsudF9zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAsIENvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggVGFnZ2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBrZXkgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2NfdmFsdWVfdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyB2YWx1ZSA9IExpc3QgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGdyYW1tYXIgPSB2X2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICwgRW1wdHkgKSApKSkpXG4gICAgICAgIH1cbiAgfVxuOztcblxubGV0IGNvbXBhcmVfbV9fdCAobW9kdWxlIF8gOiBDb21wYXJlX20pIGNvbXBhcmVfdiB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IGNvbXBhcmVfdiB0MSB0MlxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgZXF1YWxfdiB0MSB0MiA9IGVxdWFsIGVxdWFsX3YgdDEgdDJcblxubGV0IGhhc2hfZm9sZF9tX190ICh0eXBlIGspIChtb2R1bGUgSyA6IEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gaykgaGFzaF9mb2xkX3Ygc3RhdGUgPVxuICBoYXNoX2ZvbGRfZGlyZWN0IEsuaGFzaF9mb2xkX3QgaGFzaF9mb2xkX3Ygc3RhdGVcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnaywgJ3YpIHQgPSAoJ2ssICd2LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICgnaywgJ3YpIHRyZWUgPSAoJ2ssICd2KSBUcmVlMC50XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICBsZXQgb2ZfdHJlZSB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggPSBUcmVlMC5sZW5ndGggdHJlZSB9XG5cbiAgaW5jbHVkZSBVc2luZ19jb21wYXJhdG9yLkVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKENvbXBhcmF0b3IuUG9seSlcblxuICBsZXQgc2luZ2xldG9uIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9leG4gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X211bHRpIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X2ZvbGQgYSB+aW5pdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhIH5pbml0IH5mXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGEgfmZcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJhdG9yXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIHMgfmluaXQgfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzIH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3IgcyB+ZlxuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5IGwgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleSB+Y29tcGFyYXRvciBsIH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIH5jb21wYXJhdG9yIGwgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gbCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X2V4biB+Y29tcGFyYXRvciBsIH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X211bHRpIH5jb21wYXJhdG9yIGwgfmdldF9rZXlcbiAgOztcblxuICBsZXQgbWFwX2tleXMgdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCB0cmFuc3Bvc2Vfa2V5cyB0ID0gVXNpbmdfY29tcGFyYXRvci50cmFuc3Bvc2Vfa2V5cyB+Y29tcGFyYXRvciB0XG5lbmRcbiIsIm9wZW4hIEltcG9ydDBcblxudHlwZSAnYSB0ID0gJ2EgU3RkbGliLlF1ZXVlLnRcblxubGV0IGNyZWF0ZSA9IFN0ZGxpYi5RdWV1ZS5jcmVhdGVcbmxldCBjbGVhciA9IFN0ZGxpYi5RdWV1ZS5jbGVhclxubGV0IGNvcHkgPSBTdGRsaWIuUXVldWUuY29weVxubGV0IGlzX2VtcHR5ID0gU3RkbGliLlF1ZXVlLmlzX2VtcHR5XG5sZXQgbGVuZ3RoID0gU3RkbGliLlF1ZXVlLmxlbmd0aFxubGV0IHBlZWsgPSBTdGRsaWIuUXVldWUucGVla1xubGV0IHBvcCA9IFN0ZGxpYi5RdWV1ZS5wb3BcbmxldCBwdXNoID0gU3RkbGliLlF1ZXVlLnB1c2hcbmxldCB0cmFuc2ZlciA9IFN0ZGxpYi5RdWV1ZS50cmFuc2ZlclxuXG5sZXQgaXRlciB0IH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IGNhbWxfaXRlciA6ICgoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gJ2EgdCAtPiB1bml0ID1cbiAgICBTdGRsaWIuT2JqLm1hZ2ljIChTdGRsaWIuUXVldWUuaXRlciA6ICgnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXQpXG4gIGluXG4gIGNhbWxfaXRlciBmIHRcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBjYW1sX2ZvbGQgOiAoKCdiIC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiAtPiAnYSB0IC0+ICdiID1cbiAgICBTdGRsaWIuT2JqLm1hZ2ljIChTdGRsaWIuUXVldWUuZm9sZCA6ICgnYiAtPiAnYSAtPiAnYikgLT4gJ2IgLT4gJ2EgdCAtPiAnYilcbiAgaW5cbiAgY2FtbF9mb2xkIGYgaW5pdCB0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIExpbmtlZF9xdWV1ZTBcblxubGV0IGVucXVldWUgdCB4ID0gTGlua2VkX3F1ZXVlMC5wdXNoIHggdFxubGV0IGRlcXVldWUgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoTGlua2VkX3F1ZXVlMC5wb3AgdClcbmxldCBkZXF1ZXVlX2V4biA9IExpbmtlZF9xdWV1ZTAucG9wXG5sZXQgZGVxdWV1ZV9hbmRfaWdub3JlX2V4biAodHlwZSBlbHQpICh0IDogZWx0IHQpID0gaWdub3JlIChkZXF1ZXVlX2V4biB0IDogZWx0KVxubGV0IHBlZWsgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoTGlua2VkX3F1ZXVlMC5wZWVrIHQpXG5sZXQgcGVla19leG4gPSBMaW5rZWRfcXVldWUwLnBlZWtcblxubW9kdWxlIEMgPSBJbmRleGVkX2NvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgICBsZXQgZm9sZGkgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgICBsZXQgaXRlcmkgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgbWVtID0gQy5tZW1cbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgc3VtID0gQy5zdW1cbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgY291bnRpID0gQy5jb3VudGlcbmxldCBleGlzdHNpID0gQy5leGlzdHNpXG5sZXQgZmluZF9tYXBpID0gQy5maW5kX21hcGlcbmxldCBmaW5kaSA9IEMuZmluZGlcbmxldCBmb2xkaSA9IEMuZm9sZGlcbmxldCBmb3JfYWxsaSA9IEMuZm9yX2FsbGlcbmxldCBpdGVyaSA9IEMuaXRlcmlcbmxldCB0cmFuc2ZlciB+c3JjIH5kc3QgPSBMaW5rZWRfcXVldWUwLnRyYW5zZmVyIHNyYyBkc3RcblxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBMaXN0Lml0ZXIgKGYgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgcmVzIGIpKTtcbiAgcmVzXG47O1xuXG5sZXQgY29uY2F0X21hcGkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBMaXN0Lml0ZXIgKGYgaSBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSByZXMgYikpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT5cbiAgICBtYXRjaCBmIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgcmVzIGIpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+XG4gICAgbWF0Y2ggZiBpIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgcmVzIGIpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBlbnF1ZXVlIHJlcyBhKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IGlmIGYgaSBhIHRoZW4gZW5xdWV1ZSByZXMgYSk7XG4gIHJlc1xuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGVucXVldWUgcmVzIChmIGEpKTtcbiAgcmVzXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IGVucXVldWUgcmVzIChmIGkgYSkpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSBxIH5mID1cbiAgbGV0IHEnID0gZmlsdGVyIHEgfmYgaW5cbiAgY2xlYXIgcTtcbiAgdHJhbnNmZXIgfnNyYzpxJyB+ZHN0OnFcbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgcSB+ZiA9XG4gIGxldCBxJyA9IGZpbHRlcmkgcSB+ZiBpblxuICBjbGVhciBxO1xuICB0cmFuc2ZlciB+c3JjOnEnIH5kc3Q6cVxuOztcblxubGV0IGVucXVldWVfYWxsIHQgbGlzdCA9IExpc3QuaXRlciBsaXN0IH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeClcblxubGV0IG9mX2xpc3QgbGlzdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIExpc3QuaXRlciBsaXN0IH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeCk7XG4gIHRcbjs7XG5cbmxldCBvZl9hcnJheSBhcnJheSA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyYXkgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxubGV0IGluaXQgbGVuIH5mID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBlbnF1ZXVlIHQgKGYgaSlcbiAgZG9uZTtcbiAgdFxuOztcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCBsZW5ndGggdCB3aXRoXG4gIHwgMCAtPiBbfHxdXG4gIHwgbGVuIC0+XG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuIChwZWVrX2V4biB0KSBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biB2IC0+XG4gICAgICBhcnIuKCFpKSA8LSB2O1xuICAgICAgaW5jciBpKTtcbiAgICBhcnJcbjs7XG5cbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPSBvZl9saXN0IChsaXN0X29mX3NleHAgYV9vZl9zZXhwIHNleHApXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmxldCBzaW5nbGV0b24gYSA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGVucXVldWUgdCBhO1xuICB0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGRsaWIuSW50NjRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2ludDY0IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2ludDY0XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9pbnQ2NCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoaW50NjRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50NjQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50NjRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5cbiAgbGV0IGNvbXBhcmUgPSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZVxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgbGV0IG9mX3N0cmluZ19vcHQgPSBvZl9zdHJpbmdfb3B0XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxubGV0IG51bV9iaXRzID0gNjRcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X29mX2JpdHMgPSBmbG9hdF9vZl9iaXRzXG5sZXQgYml0c19vZl9mbG9hdCA9IGJpdHNfb2ZfZmxvYXRcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBsb2dub3RcbmxldCBiaXRfeG9yID0gbG9neG9yXG5sZXQgYml0X29yID0gbG9nb3JcbmxldCBiaXRfYW5kID0gbG9nYW5kXG5sZXQgbWluX3ZhbHVlID0gbWluX2ludFxubGV0IG1heF92YWx1ZSA9IG1heF9pbnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcG93ID0gSW50X21hdGguUHJpdmF0ZS5pbnQ2NF9wb3dcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtaW51c19vbmUgPSBtaW51c19vbmVcbmxldCBvbmUgPSBvbmVcbmxldCB6ZXJvID0gemVyb1xubGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBTdGRsaWIuSW50NjQub2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gU3RkbGliLkludDY0Lm9mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50NjQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5leHRlcm5hbCBic3dhcDY0IDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBic3dhcDE2IHggPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSA0OFxuXG5sZXRbQGlubGluZSBhbHdheXNdIGJzd2FwMzIgeCA9XG4gICgqIFRoaXMgaXMgc3RyaWN0bHkgYmV0dGVyIHRoYW4gY29lcmNpbmcgdG8gYW4gaW50MzIgdG8gcGVyZm9ybSBieXRlc3dhcC4gQ29lcmNpbmdcbiAgICAgZnJvbSBhbiBpbnQzMiB3aWxsIGFkZCB1bm5lY2Vzc2FyeSBzaGlmdCBvcGVyYXRpb25zIHRvIHNpZ24gZXh0ZW5kIHRoZSBudW1iZXJcbiAgICAgYXBwcm9wcmlhdGVseS5cbiAgKilcbiAgU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwNjQgeCkgMzJcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYnN3YXA0OCB4ID0gU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwNjQgeCkgMTZcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0IGluY3IgciA9IHIgOj0gYWRkICFyIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gc3ViICFyIG9uZVxuXG5leHRlcm5hbCBvZl9pbnQ2NCA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBvZl9pbnQ2NF9leG4gPSBvZl9pbnQ2NFxubGV0IHRvX2ludDY0IHQgPSB0XG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5pbnQ2NF9wb3Bjb3VudFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5leHRlcm5hbCB0b19pbnRfdHJ1bmMgOiAodFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIHRvX2ludDMyX3RydW5jIDogKGludDY0W0Bsb2NhbF9vcHRdKSAtPiAoaW50MzJbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfdG9faW50MzJcIlxuXG5leHRlcm5hbCB0b19uYXRpdmVpbnRfdHJ1bmNcbiAgOiAgKGludDY0W0Bsb2NhbF9vcHRdKVxuICAtPiAobmF0aXZlaW50W0Bsb2NhbF9vcHRdKVxuICA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIG9mX2ludCA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnQ2NFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgb2ZfaW50MzIgOiAoaW50MzJbQGxvY2FsX29wdF0pIC0+IChpbnQ2NFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG5cbmxldCBvZl9pbnRfZXhuID0gb2ZfaW50XG5sZXQgdG9faW50ID0gQ29udi5pbnQ2NF90b19pbnRcbmxldCB0b19pbnRfZXhuID0gQ29udi5pbnQ2NF90b19pbnRfZXhuXG5sZXQgb2ZfaW50MzJfZXhuID0gb2ZfaW50MzJcbmxldCB0b19pbnQzMiA9IENvbnYuaW50NjRfdG9faW50MzJcbmxldCB0b19pbnQzMl9leG4gPSBDb252LmludDY0X3RvX2ludDMyX2V4blxubGV0IG9mX25hdGl2ZWludCA9IENvbnYubmF0aXZlaW50X3RvX2ludDY0XG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IG9mX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X2V4blxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcbiAgb3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBTdGRsaWIuSW50NjQubG9nb3JcbiAgbGV0ICggbHNyICkgPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbFxuICBsZXQgKCBsYW5kICkgPSBTdGRsaWIuSW50NjQubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSBTdGRsaWIuSW50NjQucHJlZCB4IGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBTdGRsaWIuSW50NjQuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IFN0ZGxpYi5JbnQ2NC56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgU3RkbGliLkludDY0LnN1YiB4ICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kIFN0ZGxpYi5JbnQ2NC5wcmVkIHggPSBTdGRsaWIuSW50NjQuemVyb1xuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoaW50NjRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50NjRfY2x6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X2N0elwiIFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBpIDw9IFN0ZGxpYi5JbnQ2NC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiW0ludDY0LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDY0IGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgUG9seS4oIDw9ICkgaSBTdGRsaWIuSW50NjQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQ2NC5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDY0IGkgXSk7XG4gICAgaWYgU3RkbGliLkludDY0LmVxdWFsIGkgU3RkbGliLkludDY0Lm9uZVxuICAgIHRoZW4gMFxuICAgIGVsc2UgbnVtX2JpdHMgLSBjbHogKFN0ZGxpYi5JbnQ2NC5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50NjQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDY0XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50NjQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9IG5lZ1xuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIlTHhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJUx4XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjQuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2NFwiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGV4dGVybmFsICggKyApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9hZGRcIlxuICBleHRlcm5hbCAoIC0gKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfc3ViXCJcbiAgZXh0ZXJuYWwgKCAqICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X211bFwiXG4gIGV4dGVybmFsICggLyApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9kaXZcIlxuICBleHRlcm5hbCAoIH4tICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfbmVnXCJcblxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYWJzID0gYWJzXG5cbiAgZXh0ZXJuYWwgbmVnIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X25lZ1wiXG5cbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGV4dGVybmFsICggbGFuZCApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9hbmRcIlxuICBleHRlcm5hbCAoIGxvciApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9vclwiXG4gIGV4dGVybmFsICggbHhvciApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF94b3JcIlxuXG4gIGxldCBsbm90ID0gYml0X25vdFxuXG4gIGV4dGVybmFsICggbHNsIClcbiAgICA6ICAodFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICh0W0Bsb2NhbF9vcHRdKVxuICAgID0gXCIlaW50NjRfbHNsXCJcblxuICBleHRlcm5hbCAoIGFzciApXG4gICAgOiAgKHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAodFtAbG9jYWxfb3B0XSlcbiAgICA9IFwiJWludDY0X2FzclwiXG5cbiAgZXh0ZXJuYWwgKCBsc3IgKVxuICAgIDogICh0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKHRbQGxvY2FsX29wdF0pXG4gICAgPSBcIiVpbnQ2NF9sc3JcIlxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50NjRdIGFuZCBbSW50NjQuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIoKiBBIDYzYml0IGludGVnZXIgaXMgYSA2NGJpdCBpbnRlZ2VyIHdpdGggaXRzIGJpdHMgc2hpZnRlZCB0byB0aGUgbGVmdFxuICAgYW5kIGl0cyBsb3dlc3QgYml0IHNldCB0byAwLlxuICAgVGhpcyBpcyB0aGUgc2FtZSBraW5kIG9mIGVuY29kaW5nIGFzIE9DYW1sIGludCBvbiA2NGJpdCBhcmNoaXRlY3R1cmUuXG4gICBUaGUgb25seSBkaWZmZXJlbmNlIGJlaW5nIHRoZSBsb3dlc3QgYml0IChpbW1lZGlhdGUgYml0KSBzZXQgdG8gMS4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5cbm1vZHVsZSBUMCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50NjQgOiB0IC0+IHQgLT4gaW50KVxuICAgIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2ludDY0IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnQ2NFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludDY0IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChpbnQ2NF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludDY0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50NjRfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcblxubW9kdWxlIFcgOiBzaWdcblxuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgVDBcbiAgZW5kXG5cbiAgdHlwZSB0ID0gaW50NjRcblxuICB2YWwgd3JhcF9leG4gOiBTdGRsaWIuSW50NjQudCAtPiB0XG4gIHZhbCB3cmFwX21vZHVsbyA6IFN0ZGxpYi5JbnQ2NC50IC0+IHRcbiAgdmFsIHVud3JhcCA6IHQgLT4gU3RkbGliLkludDY0LnRcblxuICAoKiogUmV0dXJucyBhIG5vbi1uZWdhdGl2ZSBpbnQ2NCB0aGF0IGlzIGVxdWFsIHRvIHRoZSBpbnB1dCBpbnQ2MyBtb2R1bG8gMl42My4gKilcbiAgdmFsIHVud3JhcF91bnNpZ25lZCA6IHQgLT4gU3RkbGliLkludDY0LnRcblxuICB2YWwgaW52YXJpYW50IDogdCAtPiB1bml0XG4gIHZhbCBhZGQgOiB0IC0+IHQgLT4gdFxuICB2YWwgc3ViIDogdCAtPiB0IC0+IHRcbiAgdmFsIG5lZyA6IHQgLT4gdFxuICB2YWwgYWJzIDogdCAtPiB0XG4gIHZhbCBzdWNjIDogdCAtPiB0XG4gIHZhbCBwcmVkIDogdCAtPiB0XG4gIHZhbCBtdWwgOiB0IC0+IHQgLT4gdFxuICB2YWwgcG93IDogdCAtPiB0IC0+IHRcbiAgdmFsIGRpdiA6IHQgLT4gdCAtPiB0XG4gIHZhbCByZW0gOiB0IC0+IHQgLT4gdFxuICB2YWwgcG9wY291bnQgOiB0IC0+IGludFxuICB2YWwgYml0X25vdCA6IHQgLT4gdFxuICB2YWwgYml0X3hvciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBiaXRfb3IgOiB0IC0+IHQgLT4gdFxuICB2YWwgYml0X2FuZCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzaGlmdF9sZWZ0IDogdCAtPiBpbnQgLT4gdFxuICB2YWwgc2hpZnRfcmlnaHQgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogdCAtPiBpbnQgLT4gdFxuICB2YWwgbWluX3ZhbHVlIDogdFxuICB2YWwgbWF4X3ZhbHVlIDogdFxuICB2YWwgdG9faW50NjQgOiB0IC0+IFN0ZGxpYi5JbnQ2NC50XG4gIHZhbCBvZl9pbnQ2NCA6IFN0ZGxpYi5JbnQ2NC50IC0+IHQgb3B0aW9uXG4gIHZhbCBvZl9pbnQ2NF9leG4gOiBTdGRsaWIuSW50NjQudCAtPiB0XG4gIHZhbCBvZl9pbnQ2NF90cnVuYyA6IFN0ZGxpYi5JbnQ2NC50IC0+IHRcbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBjZWlsX3BvdzIgOiB0IC0+IHRcbiAgdmFsIGZsb29yX3BvdzIgOiB0IC0+IHRcbiAgdmFsIGNlaWxfbG9nMiA6IHQgLT4gaW50XG4gIHZhbCBmbG9vcl9sb2cyIDogdCAtPiBpbnRcbiAgdmFsIGlzX3BvdzIgOiB0IC0+IGJvb2xcbiAgdmFsIGNseiA6IHQgLT4gaW50XG4gIHZhbCBjdHogOiB0IC0+IGludFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgVDBcblxuICB0eXBlIHQgPSBpbnQ2NFxuXG4gIGxldCB3cmFwX2V4biB4ID1cbiAgICAoKiBSYWlzZXMgaWYgdGhlIGludDY0IHZhbHVlIGRvZXMgbm90IGZpdCBvbiBpbnQ2My4gKilcbiAgICBDb252LmludDY0X2ZpdF9vbl9pbnQ2M19leG4geDtcbiAgICBTdGRsaWIuSW50NjQubXVsIHggMkxcbiAgOztcblxuICBsZXQgd3JhcCB4ID1cbiAgICBpZiBDb252LmludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NjMgeCB0aGVuIFNvbWUgKFN0ZGxpYi5JbnQ2NC5tdWwgeCAyTCkgZWxzZSBOb25lXG4gIDs7XG5cbiAgbGV0IHdyYXBfbW9kdWxvIHggPSBTdGRsaWIuSW50NjQubXVsIHggMkxcbiAgbGV0IHVud3JhcCB4ID0gU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IHggMVxuICBsZXQgdW53cmFwX3Vuc2lnbmVkIHggPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IDFcblxuICAoKiBUaGlzIGRvZXMgbm90IHVzZSB3cmFwIG9yIHVud3JhcCB0byBhdm9pZCBnZW5lcmF0aW5nIGV4Y2VwdGlvbnMgaW4gdGhlIGNhc2Ugb2ZcbiAgICAgb3ZlcmZsb3dzLiBUaGlzIGlzIHRvIHByZXNlcnZlIHRoZSBzZW1hbnRpY3Mgb2YgaW50IHR5cGUgb24gNjQgYml0IGFyY2hpdGVjdHVyZS4gKilcbiAgbGV0IGYyIGYgYSBiID1cbiAgICBTdGRsaWIuSW50NjQubXVsIChmIChTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgYSAxKSAoU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IGIgMSkpIDJMXG4gIDs7XG5cbiAgbGV0IG1hc2sgPSAweGZmZmZfZmZmZl9mZmZmX2ZmZmVMXG4gIGxldCBtIHggPSBTdGRsaWIuSW50NjQubG9nYW5kIHggbWFza1xuICBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKG0gdCA9IHQpXG4gIGxldCBhZGQgeCB5ID0gU3RkbGliLkludDY0LmFkZCB4IHlcbiAgbGV0IHN1YiB4IHkgPSBTdGRsaWIuSW50NjQuc3ViIHggeVxuICBsZXQgbmVnIHggPSBTdGRsaWIuSW50NjQubmVnIHhcbiAgbGV0IGFicyB4ID0gU3RkbGliLkludDY0LmFicyB4XG4gIGxldCBvbmUgPSB3cmFwX2V4biAxTFxuICBsZXQgc3VjYyBhID0gYWRkIGEgb25lXG4gIGxldCBwcmVkIGEgPSBzdWIgYSBvbmVcbiAgbGV0IG1pbl92YWx1ZSA9IG0gU3RkbGliLkludDY0Lm1pbl9pbnRcbiAgbGV0IG1heF92YWx1ZSA9IG0gU3RkbGliLkludDY0Lm1heF9pbnRcbiAgbGV0IGJpdF9ub3QgeCA9IG0gKFN0ZGxpYi5JbnQ2NC5sb2dub3QgeClcbiAgbGV0IGJpdF9hbmQgPSBTdGRsaWIuSW50NjQubG9nYW5kXG4gIGxldCBiaXRfeG9yID0gU3RkbGliLkludDY0LmxvZ3hvclxuICBsZXQgYml0X29yID0gU3RkbGliLkludDY0LmxvZ29yXG4gIGxldCBzaGlmdF9sZWZ0IHggaSA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9sZWZ0IHggaVxuICBsZXQgc2hpZnRfcmlnaHQgeCBpID0gbSAoU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IHggaSlcbiAgbGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCBpID0gbSAoU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCBpKVxuICBsZXQgcG93ID0gZjIgSW50X21hdGguUHJpdmF0ZS5pbnQ2M19wb3dfb25faW50NjRcbiAgbGV0IG11bCBhIGIgPSBTdGRsaWIuSW50NjQubXVsIGEgKFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodCBiIDEpXG4gIGxldCBkaXYgYSBiID0gd3JhcF9tb2R1bG8gKFN0ZGxpYi5JbnQ2NC5kaXYgYSBiKVxuICBsZXQgcmVtIGEgYiA9IFN0ZGxpYi5JbnQ2NC5yZW0gYSBiXG4gIGxldCBwb3Bjb3VudCB4ID0gUG9wY291bnQuaW50NjRfcG9wY291bnQgeFxuICBsZXQgdG9faW50NjQgdCA9IHVud3JhcCB0XG4gIGxldCBvZl9pbnQ2NCB0ID0gd3JhcCB0XG4gIGxldCBvZl9pbnQ2NF9leG4gdCA9IHdyYXBfZXhuIHRcbiAgbGV0IG9mX2ludDY0X3RydW5jIHQgPSB3cmFwX21vZHVsbyB0XG4gIGxldCB0X29mX3NleHAgeCA9IHdyYXBfZXhuIChpbnQ2NF9vZl9zZXhwIHgpXG4gIGxldCBzZXhwX29mX3QgeCA9IHNleHBfb2ZfaW50NjQgKHVud3JhcCB4KVxuICBsZXQgY29tcGFyZSAoeCA6IHQpIHkgPSBjb21wYXJlIHggeVxuICBsZXQgaXNfcG93MiB4ID0gSW50NjQuaXNfcG93MiAodW53cmFwIHgpXG5cbiAgbGV0IGNseiB4ID1cbiAgICAoKiBXZSBydW4gSW50NjQuY2x6IGRpcmVjdGx5IG9uIHRoZSB3cmFwcGVkIGludDYzIHZhbHVlLiBUaGlzIGlzIGNvcnJlY3QgYmVjYXVzZSB0aGVcbiAgICAgICBiaXRzIG9mIHRoZSBpbnQ2M19lbXVsIGFyZSBsZWZ0LWFsaWduZWQgaW4gdGhlIEludDY0LiAqKVxuICAgIEludDY0LmNseiB4XG4gIDs7XG5cbiAgbGV0IGN0eiB4ID0gSW50NjQuY3R6ICh1bndyYXAgeClcbiAgbGV0IGZsb29yX3BvdzIgeCA9IEludDY0LmZsb29yX3BvdzIgKHVud3JhcCB4KSB8PiB3cmFwX2V4blxuICBsZXQgY2VpbF9wb3cyIHggPSBJbnQ2NC5mbG9vcl9wb3cyICh1bndyYXAgeCkgfD4gd3JhcF9leG5cbiAgbGV0IGZsb29yX2xvZzIgeCA9IEludDY0LmZsb29yX2xvZzIgKHVud3JhcCB4KVxuICBsZXQgY2VpbF9sb2cyIHggPSBJbnQ2NC5jZWlsX2xvZzIgKHVud3JhcCB4KVxuZW5kXG5cbm9wZW4gV1xuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBXLnQgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoVy5nbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBXLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gVy5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChXLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKFcuc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IFcudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFcuY29tcGFyYXRvclxuICBsZXQgY29tcGFyZSA9IFcuY29tcGFyZVxuICBsZXQgaW52YXJpYW50ID0gVy5pbnZhcmlhbnRcblxuICAoKiBXZSBkb24ndCBleHBlY3QgW2hhc2hdIHRvIGZvbGxvdyB0aGUgYmVoYXZpb3Igb2YgaW50IGluIDY0Yml0IGFyY2hpdGVjdHVyZSAqKVxuICBsZXQgXyA9IGhhc2hcbiAgbGV0IGhhc2ggKHggOiB0KSA9IFN0ZGxpYi5IYXNodGJsLmhhc2ggeFxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBpbnZhbGlkX3N0ciB4ID0gUHJpbnRmLmZhaWx3aXRoZiBcIkludDYzLm9mX3N0cmluZzogaW52YWxpZCBpbnB1dCAlU1wiIHggKClcblxuICAoKlxuICAgICBcInNpZ25cIiByZWZlcnMgdG8gd2hldGhlciB0aGUgbnVtYmVyIHN0YXJ0cyB3aXRoIGEgJy0nXG4gICAgIFwic2lnbmVkbmVzcyA9IGZhbHNlXCIgbWVhbnMgdGhlIHJlc3Qgb2YgdGhlIG51bWJlciBpcyBwYXJzZWQgYXMgdW5zaWduZWQgYW5kIHRoZW4gY2FzdFxuICAgICB0byBzaWduZWQgd2l0aCB3cmFwLWFyb3VuZCBtb2R1bG8gMl5pXG4gICAgIFwic2lnbmVkbmVzcyA9IHRydWVcIiBtZWFucyBubyBzdWNoIGNyYXppbmVzcyBoYXBwZW5zXG5cbiAgICAgVGhlIHRlcm1pbm9sb2d5IGFuZCB0aGUgbG9naWMgaXMgZHVlIHRvIHRoZSBjb2RlIGluIGJ5dGVydW4vaW50cy5jIGluIG9jYW1sIDQuMDNcbiAgICAgKFtwYXJzZV9zaWduX2FuZF9iYXNlXSBmdW5jdGlvbikuXG5cbiAgICAgU2lnbmVkbmVzcyBlcXVhbHMgdHJ1ZSBmb3IgcGxhaW4gZGVjaW1hbCBudW1iZXIgKGUuZy4gMTIzNSwgLTY3ODkpXG5cbiAgICAgU2lnbmVkbmVzcyBlcXVhbHMgZmFsc2UgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAgLSBbMHhmZmZmXSwgWy0weGZmZmZdIChoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMGIwMTAxXSwgWy0wYjAxMDFdIChiaW5hcnkgcmVwcmVzZW50YXRpb24pXG4gICAgIC0gWzBvMTIzN10sIFstMG8xMjM3XSAob2N0YWwgcmVwcmVzZW50YXRpb24pXG4gICAgIC0gWzB1OTgxMl0sIFstMHU5ODEyXSAodW5zaWduZWQgZGVjaW1hbCByZXByZXNlbnRhdGlvbiAtIGF2YWlsYWJsZSBmcm9tIE9DYW1sIDQuMDMpICopXG4gIGxldCBzaWduX2FuZF9zaWduZWRuZXNzIHggPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHggaW5cbiAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHBvcywgc2lnbiA9XG4gICAgICBpZiAwIDwgbGVuXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggeC5bMF0gd2l0aFxuICAgICAgICB8ICctJyAtPiAxLCBgTmVnXG4gICAgICAgIHwgJysnIC0+IDEsIGBQb3NcbiAgICAgICAgfCBfIC0+IDAsIGBQb3MpXG4gICAgICBlbHNlIDAsIGBQb3NcbiAgICBpblxuICAgIGlmIHBvcyArIDIgPCBsZW5cbiAgICB0aGVuIChcbiAgICAgIGxldCBjMSA9IHguW3Bvc10gaW5cbiAgICAgIGxldCBjMiA9IHguW3BvcyArIDFdIGluXG4gICAgICBtYXRjaCBjMSwgYzIgd2l0aFxuICAgICAgfCAnMCcsICcwJyAuLiAnOScgLT4gc2lnbiwgdHJ1ZVxuICAgICAgfCAnMCcsIF8gLT4gc2lnbiwgZmFsc2VcbiAgICAgIHwgXyAtPiBzaWduLCB0cnVlKVxuICAgIGVsc2Ugc2lnbiwgdHJ1ZVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgeCA9IFN0ZGxpYi5JbnQ2NC50b19zdHJpbmcgKHVud3JhcCB4KVxuXG4gIGxldCBvZl9zdHJpbmdfcmF3IHN0ciA9XG4gICAgbGV0IHNpZ24sIHNpZ25lZG5lc3MgPSBzaWduX2FuZF9zaWduZWRuZXNzIHN0ciBpblxuICAgIGlmIHNpZ25lZG5lc3NcbiAgICB0aGVuIG9mX2ludDY0X2V4biAoU3RkbGliLkludDY0Lm9mX3N0cmluZyBzdHIpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9zX3N0ciA9XG4gICAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgICB8IGBOZWcgLT4gU3RyaW5nLnN1YiBzdHIgfnBvczoxIH5sZW46KFN0cmluZy5sZW5ndGggc3RyIC0gMSlcbiAgICAgICAgfCBgUG9zIC0+IHN0clxuICAgICAgaW5cbiAgICAgIGxldCBpbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5vZl9zdHJpbmcgcG9zX3N0ciBpblxuICAgICAgKCogdW5zaWduZWQgNjMtYml0IGludCBtdXN0IHBhcnNlIGFzIGEgcG9zaXRpdmUgc2lnbmVkIDY0LWJpdCBpbnQgKilcbiAgICAgIGlmIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBpbnQ2NCAwTCB0aGVuIGludmFsaWRfc3RyIHN0cjtcbiAgICAgIGxldCBpbnQ2MyA9IHdyYXBfbW9kdWxvIGludDY0IGluXG4gICAgICBtYXRjaCBzaWduIHdpdGhcbiAgICAgIHwgYE5lZyAtPiBuZWcgaW50NjNcbiAgICAgIHwgYFBvcyAtPiBpbnQ2MylcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgdHJ5IG9mX3N0cmluZ19yYXcgc3RyIHdpdGhcbiAgICB8IF8gLT4gaW52YWxpZF9zdHIgc3RyXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZ19vcHQgc3RyID1cbiAgICBtYXRjaCBvZl9zdHJpbmdfcmF3IHN0ciB3aXRoXG4gICAgfCB0IC0+IFNvbWUgdFxuICAgIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuICA7O1xuXG4gIGxldCBic3dhcDE2IHQgPSB3cmFwX21vZHVsbyAoSW50NjQuYnN3YXAxNiAodW53cmFwIHQpKVxuICBsZXQgYnN3YXAzMiB0ID0gd3JhcF9tb2R1bG8gKEludDY0LmJzd2FwMzIgKHVud3JhcCB0KSlcbiAgbGV0IGJzd2FwNDggdCA9IHdyYXBfbW9kdWxvIChJbnQ2NC5ic3dhcDQ4ICh1bndyYXAgdCkpXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBudW1fYml0cyA9IDYzXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBiaXRfbm90XG5sZXQgYml0X3hvciA9IGJpdF94b3JcbmxldCBiaXRfb3IgPSBiaXRfb3JcbmxldCBiaXRfYW5kID0gYml0X2FuZFxubGV0IHBvcGNvdW50ID0gcG9wY291bnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcG93ID0gcG93XG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWF4X3ZhbHVlID0gbWF4X3ZhbHVlXG5sZXQgbWluX3ZhbHVlID0gbWluX3ZhbHVlXG5sZXQgbWludXNfb25lID0gd3JhcF9leG4gU3RkbGliLkludDY0Lm1pbnVzX29uZVxubGV0IG9uZSA9IHdyYXBfZXhuIFN0ZGxpYi5JbnQ2NC5vbmVcbmxldCB6ZXJvID0gd3JhcF9leG4gU3RkbGliLkludDY0Lnplcm9cbmxldCBpc19wb3cyID0gaXNfcG93MlxubGV0IGZsb29yX3BvdzIgPSBmbG9vcl9wb3cyXG5sZXQgY2VpbF9wb3cyID0gY2VpbF9wb3cyXG5sZXQgZmxvb3JfbG9nMiA9IGZsb29yX2xvZzJcbmxldCBjZWlsX2xvZzIgPSBjZWlsX2xvZzJcbmxldCBjbHogPSBjbHpcbmxldCBjdHogPSBjdHpcbmxldCB0b19mbG9hdCB4ID0gU3RkbGliLkludDY0LnRvX2Zsb2F0ICh1bndyYXAgeClcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgeCA9IHdyYXBfbW9kdWxvIChTdGRsaWIuSW50NjQub2ZfZmxvYXQgeClcblxubGV0IG9mX2Zsb2F0IHQgPVxuICBsZXQgb3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgdCA+PSBmbG9hdF9sb3dlcl9ib3VuZCAmJiB0IDw9IGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gd3JhcF9tb2R1bG8gKFN0ZGxpYi5JbnQ2NC5vZl9mbG9hdCB0KVxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQ2My5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAoKVxuOztcblxubGV0IG9mX2ludDY0ID0gb2ZfaW50NjRcbmxldCBvZl9pbnQ2NF9leG4gPSBvZl9pbnQ2NF9leG5cbmxldCBvZl9pbnQ2NF90cnVuYyA9IG9mX2ludDY0X3RydW5jXG5sZXQgdG9faW50NjQgPSB0b19pbnQ2NFxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5sZXQgaW5jciByID0gciA6PSAhciArIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gIXIgLSBvbmVcblxuKCogV2UgY2FuIHJldXNlIGNvbnZlcnNpb24gZnVuY3Rpb24gZnJvbS90byBpbnQ2NCBoZXJlLiAqKVxubGV0IG9mX2ludCB4ID0gd3JhcF9leG4gKENvbnYuaW50X3RvX2ludDY0IHgpXG5sZXQgb2ZfaW50X2V4biB4ID0gb2ZfaW50IHhcbmxldCB0b19pbnQgeCA9IENvbnYuaW50NjRfdG9faW50ICh1bndyYXAgeClcbmxldCB0b19pbnRfZXhuIHggPSBDb252LmludDY0X3RvX2ludF9leG4gKHVud3JhcCB4KVxubGV0IHRvX2ludF90cnVuYyB4ID0gQ29udi5pbnQ2NF90b19pbnRfdHJ1bmMgKHVud3JhcCB4KVxubGV0IG9mX2ludDMyIHggPSB3cmFwX2V4biAoQ29udi5pbnQzMl90b19pbnQ2NCB4KVxubGV0IG9mX2ludDMyX2V4biB4ID0gb2ZfaW50MzIgeFxubGV0IHRvX2ludDMyIHggPSBDb252LmludDY0X3RvX2ludDMyICh1bndyYXAgeClcbmxldCB0b19pbnQzMl9leG4geCA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuICh1bndyYXAgeClcbmxldCB0b19pbnQzMl90cnVuYyB4ID0gQ29udi5pbnQ2NF90b19pbnQzMl90cnVuYyAodW53cmFwIHgpXG5sZXQgb2ZfbmF0aXZlaW50IHggPSBvZl9pbnQ2NCAoQ29udi5uYXRpdmVpbnRfdG9faW50NjQgeClcbmxldCBvZl9uYXRpdmVpbnRfZXhuIHggPSB3cmFwX2V4biAoQ29udi5uYXRpdmVpbnRfdG9faW50NjQgeClcbmxldCBvZl9uYXRpdmVpbnRfdHJ1bmMgeCA9IG9mX2ludDY0X3RydW5jIChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IHRvX25hdGl2ZWludCB4ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnQgKHVud3JhcCB4KVxubGV0IHRvX25hdGl2ZWludF9leG4geCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X2V4biAodW53cmFwIHgpXG5sZXQgdG9fbmF0aXZlaW50X3RydW5jIHggPSBDb252LmludDY0X3RvX25hdGl2ZWludF90cnVuYyAodW53cmFwIHgpXG5cbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKFQuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBULmhhc2hfZm9sZF90XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IFQuaGFzaCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gKCB+LSApXG4gICAgbGV0ICggPCApID0gKCA8IClcblxuICAgIGxldCB0b19zdHJpbmcgaSA9XG4gICAgICAoKiB0aGUgdXNlIG9mIFt1bndyYXBfdW5zaWduZWRdIGhlcmUgaXMgaW1wb3J0YW50IGZvciB0aGUgY2FzZSBvZiBbbWluX3ZhbHVlXSAqKVxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlTHhcIiAodW53cmFwX3Vuc2lnbmVkIGkpXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgcyA9IG9mX3N0cmluZyAoXCIweFwiIF4gcylcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjMuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyB4ID0gdG9fc3RyaW5nIHhcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjNcIlxuICBlbmQpXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgbGV0ICggbGFuZCApID0gYml0X2FuZFxuICBsZXQgKCBsb3IgKSA9IGJpdF9vclxuICBsZXQgKCBseG9yICkgPSBiaXRfeG9yXG4gIGxldCBsbm90ID0gYml0X25vdFxuICBsZXQgKCBsc2wgKSA9IHNoaWZ0X2xlZnRcbiAgbGV0ICggYXNyICkgPSBzaGlmdF9yaWdodFxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludDYzXSBhbmQgW0ludDYzLk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxubW9kdWxlIFJlcHIgPSBzdHJ1Y3RcbiAgdHlwZSBlbXVsYXRlZCA9IHRcblxuICB0eXBlICgndW5kZXJseWluZ190eXBlLCAnaW50ZXJtZWRpYXRlX3R5cGUpIHQgPVxuICAgIHwgSW50IDogKGludCwgaW50KSB0XG4gICAgfCBJbnQ2NCA6IChpbnQ2NCwgZW11bGF0ZWQpIHRcbmVuZFxuXG5sZXQgcmVwciA9IFJlcHIuSW50NjRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGRsaWIuSW50MzJcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2ludDMyIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2ludDMyXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoaW50MzJfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50MzIgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50MzJfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nX29wdCA9IG9mX3N0cmluZ19vcHRcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5sZXQgbnVtX2JpdHMgPSAzMlxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfb2ZfYml0cyA9IGZsb2F0X29mX2JpdHNcbmxldCBiaXRzX29mX2Zsb2F0ID0gYml0c19vZl9mbG9hdFxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGxvZ25vdFxubGV0IGJpdF94b3IgPSBsb2d4b3JcbmxldCBiaXRfb3IgPSBsb2dvclxubGV0IGJpdF9hbmQgPSBsb2dhbmRcbmxldCBtaW5fdmFsdWUgPSBtaW5faW50XG5sZXQgbWF4X3ZhbHVlID0gbWF4X2ludFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtaW51c19vbmUgPSBtaW51c19vbmVcbmxldCBvbmUgPSBvbmVcbmxldCB6ZXJvID0gemVyb1xubGV0IGNvbXBhcmUgPSBjb21wYXJlXG5sZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IG9mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIG9mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50MzIub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIEluZml4X2NvbXBhcmUgPSBzdHJ1Y3RcbiAgb3BlbiBQb2x5XG5cbiAgbGV0ICggPj0gKSAoeCA6IHQpIHkgPSB4ID49IHlcbiAgbGV0ICggPD0gKSAoeCA6IHQpIHkgPSB4IDw9IHlcbiAgbGV0ICggPSApICh4IDogdCkgeSA9IHggPSB5XG4gIGxldCAoID4gKSAoeCA6IHQpIHkgPSB4ID4geVxuICBsZXQgKCA8ICkgKHggOiB0KSB5ID0geCA8IHlcbiAgbGV0ICggPD4gKSAoeCA6IHQpIHkgPSB4IDw+IHlcbmVuZFxuXG5tb2R1bGUgQ29tcGFyZSA9IHN0cnVjdFxuICBpbmNsdWRlIEluZml4X2NvbXBhcmVcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IGFzY2VuZGluZyA9IGNvbXBhcmVcbiAgbGV0IGRlc2NlbmRpbmcgeCB5ID0gY29tcGFyZSB5IHhcbiAgbGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5XG4gIGxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgZXF1YWwgKHggOiB0KSB5ID0geCA9IHlcbiAgbGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG4gIGxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbiAgbGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbiAgOztcblxuICBsZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBDb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgKCAvICkgPSBkaXZcbmxldCAoICogKSA9IG11bFxubGV0ICggLSApID0gc3ViXG5sZXQgKCArICkgPSBhZGRcbmxldCAoIH4tICkgPSBuZWdcbmxldCBpbmNyIHIgPSByIDo9ICFyICsgb25lXG5sZXQgZGVjciByID0gciA6PSAhciAtIG9uZVxubGV0IG9mX2ludDMyIHQgPSB0XG5sZXQgb2ZfaW50MzJfZXhuID0gb2ZfaW50MzJcbmxldCB0b19pbnQzMiB0ID0gdFxubGV0IHRvX2ludDMyX2V4biA9IHRvX2ludDMyXG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5pbnQzMl9wb3Bjb3VudFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5sZXQgb2ZfaW50ID0gQ29udi5pbnRfdG9faW50MzJcbmxldCBvZl9pbnRfZXhuID0gQ29udi5pbnRfdG9faW50MzJfZXhuXG5sZXQgb2ZfaW50X3RydW5jID0gQ29udi5pbnRfdG9faW50MzJfdHJ1bmNcbmxldCB0b19pbnQgPSBDb252LmludDMyX3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252LmludDMyX3RvX2ludF9leG5cbmxldCB0b19pbnRfdHJ1bmMgPSBDb252LmludDMyX3RvX2ludF90cnVuY1xubGV0IG9mX2ludDY0ID0gQ29udi5pbnQ2NF90b19pbnQzMlxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuXG5sZXQgb2ZfaW50NjRfdHJ1bmMgPSBDb252LmludDY0X3RvX2ludDMyX3RydW5jXG5sZXQgdG9faW50NjQgPSBDb252LmludDMyX3RvX2ludDY0XG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfZXhuXG5sZXQgb2ZfbmF0aXZlaW50X3RydW5jID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfdHJ1bmNcbmxldCB0b19uYXRpdmVpbnQgPSBDb252LmludDMyX3RvX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBwb3cgYiBlID0gb2ZfaW50X2V4biAoSW50X21hdGguUHJpdmF0ZS5pbnRfcG93ICh0b19pbnRfZXhuIGIpICh0b19pbnRfZXhuIGUpKVxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbmV4dGVybmFsIGJzd2FwMzIgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlYnN3YXBfaW50MzJcIlxuXG5sZXQgYnN3YXAxNiB4ID0gU3RkbGliLkludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwMzIgeCkgMTZcblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG4gIG9wZW4gSW50MzJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG4gIGxldCAoIGxvciApID0gU3RkbGliLkludDMyLmxvZ29yXG4gIGxldCAoIGxzciApID0gU3RkbGliLkludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbiAgbGV0ICggbGFuZCApID0gU3RkbGliLkludDMyLmxvZ2FuZFxuXG4gICgqKiBcImNlaWxpbmcgcG93ZXIgb2YgMlwiIC0gTGVhc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGNlaWxfcG93MiB4ID1cbiAgICBpZiB4IDw9IFN0ZGxpYi5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0gU3RkbGliLkludDMyLnByZWQgeCBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgU3RkbGliLkludDMyLnN1Y2MgeFxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBTdGRsaWIuSW50MzIuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIFN0ZGxpYi5JbnQzMi5zdWIgeCAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IFN0ZGxpYi5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCBTdGRsaWIuSW50MzIucHJlZCB4ID0gU3RkbGliLkludDMyLnplcm9cbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBpbnQzMiBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoaW50MzJbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50MzJfY2x6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChpbnQzMltAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDMyX2N0elwiIFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBpIDw9IFN0ZGxpYi5JbnQzMi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiW0ludDMyLmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDMyIGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgaSA8PSBTdGRsaWIuSW50MzIuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQzMi5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDMyIGkgXSk7XG4gICAgKCogVGhlIFtpID0gMV0gY2hlY2sgaXMgbmVlZGVkIGJlY2F1c2UgY2x6KDApIGlzIHVuZGVmaW5lZCAqKVxuICAgIGlmIFN0ZGxpYi5JbnQzMi5lcXVhbCBpIFN0ZGxpYi5JbnQzMi5vbmVcbiAgICB0aGVuIDBcbiAgICBlbHNlIG51bV9iaXRzIC0gY2x6IChTdGRsaWIuSW50MzIucHJlZCBpKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgdHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludDMyIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnQzMlxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludDMyIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSAoIH4tIClcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJWx4XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIiVseFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDMyLkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50MzJcIlxuICBlbmQpXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChDb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGxldCAoIGxhbmQgKSA9IGJpdF9hbmRcbiAgbGV0ICggbG9yICkgPSBiaXRfb3JcbiAgbGV0ICggbHhvciApID0gYml0X3hvclxuICBsZXQgbG5vdCA9IGJpdF9ub3RcbiAgbGV0ICggbHNsICkgPSBzaGlmdF9sZWZ0XG4gIGxldCAoIGFzciApID0gc2hpZnRfcmlnaHRcbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnQzMl0gYW5kIFtJbnQzMi5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbm1vZHVsZSBSZXByID0gSW50NjNfZW11bC5SZXByXG5cbigqIEluIGEgd29ybGQgd2hlcmUgdGhlIGNvbXBpbGVyIHdvdWxkIHVuZGVyc3RhbmQgW0BAaW1tZWRpYXRlNjRdIGF0dHJpYnV0ZXMgb24gdHlwZVxuICAgZGVjbGFyYXRpb25zLCB0aGlzIG1vZHVsZSBpcyBob3cgb25lIHdvdWxkIHByb2R1Y2UgYSBbdHlwZSB0XSB3aXRoIHRoaXMgYXR0cmlidXRlLiAqKVxubW9kdWxlIEltbWVkaWF0ZTY0IDogc2lnXG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkgKE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlKSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGU2NF1cblxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG5cbiAgICB2YWwgcmVwciA6IHQgcmVwclxuICBlbmRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBOb25faW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChJbW1lZGlhdGUgOiBJbW1lZGlhdGUpIChOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZSkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlNjRdXG5cbiAgICB0eXBlICdhIHJlcHIgPVxuICAgICAgfCBJbW1lZGlhdGUgOiBJbW1lZGlhdGUudCByZXByXG4gICAgICB8IE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlLnQgcmVwclxuXG4gICAgZXh0ZXJuYWwgdHJhbnNwYXJlbnRfbWFnaWMgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYltAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG5cbiAgICBsZXQgcmVwciA9XG4gICAgICAoKiBbT2JqLm1hZ2ljXSBpbnZvbHZlcyBvcGFxdWVuZXNzIHVuZGVyIEZsYW1iZGEgMiB3aGljaCB3aWxsIGluaGliaXRcbiAgICAgICAgIGF2YWlsYWJpbGl0eSBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSBmb3IgbGF0ZXIgaW5saW5pbmdcbiAgICAgICAgIChlLmcuIGludG8gZmxvYXQubWwpLiBBcyBzdWNoIHdlIGV4cGxpY2l0bHkgdXNlICVpZGVudGl0eSBoZXJlLiAqKVxuICAgICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgICB8IFc2NCAtPiAodHJhbnNwYXJlbnRfbWFnaWMgSW1tZWRpYXRlIDogdCByZXByKVxuICAgICAgfCBXMzIgLT4gKHRyYW5zcGFyZW50X21hZ2ljIE5vbl9pbW1lZGlhdGUgOiB0IHJlcHIpXG4gICAgOztcbiAgZW5kXG4gIFtAQGlubGluZSBhbHdheXNdXG5lbmRcblxuaW5jbHVkZSBJbW1lZGlhdGU2NC5NYWtlIChJbnQpIChJbnQ2M19lbXVsKVxuXG5tb2R1bGUgQmFja2VuZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICBpbmNsdWRlIEludF9pbnRmLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gICAgdmFsIHRvX2ludCA6IHQgLT4gaW50IG9wdGlvblxuICAgIHZhbCB0b19pbnRfdHJ1bmMgOiB0IC0+IGludFxuICAgIHZhbCBvZl9pbnQzMiA6IGludDMyIC0+IHRcbiAgICB2YWwgdG9faW50MzIgOiB0IC0+IEludDMyLnQgb3B0aW9uXG4gICAgdmFsIHRvX2ludDMyX3RydW5jIDogdCAtPiBJbnQzMi50XG4gICAgdmFsIG9mX2ludDY0IDogSW50NjQudCAtPiB0IG9wdGlvblxuICAgIHZhbCBvZl9pbnQ2NF90cnVuYyA6IEludDY0LnQgLT4gdFxuICAgIHZhbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gdCBvcHRpb25cbiAgICB2YWwgdG9fbmF0aXZlaW50IDogdCAtPiBuYXRpdmVpbnQgb3B0aW9uXG4gICAgdmFsIG9mX25hdGl2ZWludF90cnVuYyA6IG5hdGl2ZWludCAtPiB0XG4gICAgdmFsIHRvX25hdGl2ZWludF90cnVuYyA6IHQgLT4gbmF0aXZlaW50XG4gICAgdmFsIG9mX2Zsb2F0X3VuY2hlY2tlZCA6IGZsb2F0IC0+IHRcbiAgICB2YWwgcmVwciA6ICh0LCB0KSBJbnQ2M19lbXVsLlJlcHIudFxuICAgIHZhbCBic3dhcDE2IDogdCAtPiB0XG4gICAgdmFsIGJzd2FwMzIgOiB0IC0+IHRcbiAgICB2YWwgYnN3YXA0OCA6IHQgLT4gdFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBOYXRpdmUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IHRvX2ludCB4ID0gU29tZSB4XG4gICAgbGV0IHRvX2ludF90cnVuYyB4ID0geFxuXG4gICAgKCogW29mX2ludDMyX2V4bl0gaXMgYSBzYWZlIG9wZXJhdGlvbiBvbiBwbGF0Zm9ybXMgd2l0aCA2NC1iaXQgd29yZCBzaXplcy4gKilcbiAgICBsZXQgb2ZfaW50MzIgPSBvZl9pbnQzMl9leG5cbiAgICBsZXQgdG9fbmF0aXZlaW50X3RydW5jIHggPSB0b19uYXRpdmVpbnQgeFxuICAgIGxldCB0b19uYXRpdmVpbnQgeCA9IFNvbWUgKHRvX25hdGl2ZWludCB4KVxuICAgIGxldCByZXByID0gSW50NjNfZW11bC5SZXByLkludFxuICAgIGxldCBic3dhcDMyIHQgPSBJbnQ2NC50b19pbnRfdHJ1bmMgKEludDY0LmJzd2FwMzIgKEludDY0Lm9mX2ludCB0KSlcbiAgICBsZXQgYnN3YXA0OCB0ID0gSW50NjQudG9faW50X3RydW5jIChJbnQ2NC5ic3dhcDQ4IChJbnQ2NC5vZl9pbnQgdCkpXG4gIGVuZFxuXG4gIGxldCBpbXBsIDogKG1vZHVsZSBTKSA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gKG1vZHVsZSBOYXRpdmUgOiBTKVxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiAobW9kdWxlIEludDYzX2VtdWwgOiBTKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgKHZhbCBCYWNrZW5kLmltcGwgOiBCYWNrZW5kLlMpXG5cbm1vZHVsZSBPdmVyZmxvd19leG4gPSBzdHJ1Y3RcbiAgbGV0ICggKyApIHQgdSA9XG4gICAgbGV0IHN1bSA9IHQgKyB1IGluXG4gICAgaWYgYml0X29yIChiaXRfeG9yIHQgdSkgKGJpdF94b3IgdCAoYml0X25vdCBzdW0pKSA8IHplcm9cbiAgICB0aGVuIHN1bVxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggKyApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJzdW1cIiwgc2V4cF9vZl90IHN1bSBdKVxuICA7O1xuXG4gIGxldCAoIC0gKSB0IHUgPVxuICAgIGxldCBkaWZmID0gdCAtIHUgaW5cbiAgICBsZXQgcG9zX2RpZmYgPSB0ID4gdSBpblxuICAgIGlmIHQgPD4gdSAmJiBCb29sLiggPD4gKSBwb3NfZGlmZiAoaXNfcG9zaXRpdmUgZGlmZilcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoIC0gKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwiZGlmZlwiLCBzZXhwX29mX3QgZGlmZiBdKVxuICAgIGVsc2UgZGlmZlxuICA7O1xuXG4gIGxldCBuZWdhdGl2ZV9vbmUgPSBvZl9pbnQgKC0xKVxuICBsZXQgZGl2X3dvdWxkX292ZXJmbG93IHQgdSA9IHQgPSBtaW5fdmFsdWUgJiYgdSA9IG5lZ2F0aXZlX29uZVxuXG4gIGxldCAoICogKSB0IHUgPVxuICAgIGxldCBwcm9kdWN0ID0gdCAqIHUgaW5cbiAgICBpZiB1IDw+IHplcm8gJiYgKGRpdl93b3VsZF9vdmVyZmxvdyBwcm9kdWN0IHUgfHwgcHJvZHVjdCAvIHUgPD4gdClcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoICogKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwicHJvZHVjdFwiLCBzZXhwX29mX3QgcHJvZHVjdCBdKVxuICAgIGVsc2UgcHJvZHVjdFxuICA7O1xuXG4gIGxldCAoIC8gKSB0IHUgPVxuICAgIGlmIGRpdl93b3VsZF9vdmVyZmxvdyB0IHVcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoIC8gKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwicHJvZHVjdFwiLCBzZXhwX29mX3QgKHQgLyB1KSBdKVxuICAgIGVsc2UgdCAvIHVcbiAgOztcblxuICBsZXQgYWJzIHQgPSBpZiB0ID0gbWluX3ZhbHVlIHRoZW4gZmFpbHdpdGggXCJhYnMgb3ZlcmZsb3dcIiBlbHNlIGFicyB0XG4gIGxldCBuZWcgdCA9IGlmIHQgPSBtaW5fdmFsdWUgdGhlbiBmYWlsd2l0aCBcIm5lZyBvdmVyZmxvd1wiIGVsc2UgbmVnIHRcbmVuZFxuXG5sZXQgKCkgPSBhc3NlcnQgKEludC4oID0gKSBudW1fYml0cyA2MylcblxubGV0IHJhbmRvbV9vZl9pbnQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBib3VuZCA9XG4gIG9mX2ludCAoUmFuZG9tLlN0YXRlLmludCBzdGF0ZSAodG9faW50X2V4biBib3VuZCkpXG47O1xuXG5sZXQgcmFuZG9tX29mX2ludDY0ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgYm91bmQgPVxuICBvZl9pbnQ2NF9leG4gKFJhbmRvbS5TdGF0ZS5pbnQ2NCBzdGF0ZSAodG9faW50NjQgYm91bmQpKVxuOztcblxubGV0IHJhbmRvbSA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiByYW5kb21fb2ZfaW50XG4gIHwgVzMyIC0+IHJhbmRvbV9vZl9pbnQ2NFxuOztcblxubGV0IHJhbmRvbV9pbmNsX29mX2ludCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxvIGhpID1cbiAgb2ZfaW50IChSYW5kb20uU3RhdGUuaW50X2luY2wgc3RhdGUgKHRvX2ludF9leG4gbG8pICh0b19pbnRfZXhuIGhpKSlcbjs7XG5cbmxldCByYW5kb21faW5jbF9vZl9pbnQ2NCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxvIGhpID1cbiAgb2ZfaW50NjRfZXhuIChSYW5kb20uU3RhdGUuaW50NjRfaW5jbCBzdGF0ZSAodG9faW50NjQgbG8pICh0b19pbnQ2NCBoaSkpXG47O1xuXG5sZXQgcmFuZG9tX2luY2wgPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gcmFuZG9tX2luY2xfb2ZfaW50XG4gIHwgVzMyIC0+IHJhbmRvbV9pbmNsX29mX2ludDY0XG47O1xuXG5sZXQgZmxvb3JfbG9nMiB0ID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IHQgfD4gdG9faW50X2V4biB8PiBJbnQuZmxvb3JfbG9nMlxuICB8IFczMiAtPlxuICAgIGlmIHQgPD0gemVyb1xuICAgIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl90IHQgXSk7XG4gICAgbGV0IGZsb29yX2xvZzIgPSByZWYgKEludC4oIC0gKSBudW1fYml0cyAyKSBpblxuICAgIHdoaWxlIGVxdWFsIHplcm8gKGJpdF9hbmQgdCAoc2hpZnRfbGVmdCBvbmUgIWZsb29yX2xvZzIpKSBkb1xuICAgICAgZmxvb3JfbG9nMiA6PSBJbnQuKCAtICkgIWZsb29yX2xvZzIgMVxuICAgIGRvbmU7XG4gICAgIWZsb29yX2xvZzJcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBSZXByID0gUmVwclxuXG4gIGxldCByZXByID0gcmVwclxuXG4gIG1vZHVsZSBFbXVsID0gSW50NjNfZW11bFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNodGJsLktleSAqKVxubW9kdWxlIEtleSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgICgqKiBUd28gW3RdcyB0aGF0IFtjb21wYXJlXSBlcXVhbCBtdXN0IGhhdmUgZXF1YWwgaGFzaGVzIGZvciB0aGUgaGFzaHRhYmxlXG4gICAgICAgIHRvIGJlaGF2ZSBwcm9wZXJseS4gKilcbiAgICB2YWwgaGFzaCA6IHQgLT4gaW50XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuZW5kXG5cbigqKiBAY2Fub25pY2FsIEJhc2UuSGFzaHRibC5NZXJnZV9pbnRvX2FjdGlvbiAqKVxubW9kdWxlIE1lcmdlX2ludG9fYWN0aW9uID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBSZW1vdmVcbiAgICB8IFNldF90byBvZiAnYVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29ycyA9IHNpZ1xuICAoKiogezIgQWNjZXNzb3JzfSAqKVxuXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdhIGtleVxuXG4gIHZhbCBzZXhwX29mX2tleSA6ICgnYSwgXykgdCAtPiAnYSBrZXkgLT4gU2V4cC50XG4gIHZhbCBjbGVhciA6IChfLCBfKSB0IC0+IHVuaXRcbiAgdmFsIGNvcHkgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHRcblxuICAoKiogQXR0ZW1wdGluZyB0byBtb2RpZnkgKFtzZXRdLCBbcmVtb3ZlXSwgZXRjLikgdGhlIGhhc2h0YWJsZSBkdXJpbmcgaXRlcmF0aW9uIChbZm9sZF0sXG4gICAgICBbaXRlcl0sIFtpdGVyX2tleXNdLCBbaXRlcmldKSB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbi4gKilcbiAgdmFsIGZvbGRcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGtleSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIEl0ZXJhdGVzIG92ZXIgYm90aCBrZXlzIGFuZCB2YWx1ZXMuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBIYXNodGJsLml0ZXJpIGggfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIHByaW50X2VuZGxpbmUgKFByaW50Zi5zcHJpbnRmIFwiJWQtJWRcIiBrZXkgZGF0YSkpOztcbiAgICAgIDEtNFxuICAgICAgNS02XG4gICAgICAtIDogdW5pdCA9ICgpXG4gICAgICB2fSAqKVxuICB2YWwgaXRlcmkgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gIHZhbCBleGlzdHNpIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgY291bnRpIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuICB2YWwgY291bnQgOiAoXywgJ2IpIHQgLT4gZjooKCdiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSBrZXkgLT4gYm9vbFxuICB2YWwgcmVtb3ZlIDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiB1bml0XG5cbiAgKCoqIENob29zZSBhbiBhcmJpdHJhcnkga2V5L3ZhbHVlIHBhaXIgb2YgYSBoYXNoIHRhYmxlLiBSZXR1cm5zIFtOb25lXSBpZiBbdF0gaXMgZW1wdHkuXG5cbiAgICAgIFRoZSBjaG9pY2UgaXMgZGV0ZXJtaW5pc3RpYy4gQ2FsbGluZyBbY2hvb3NlXSBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSB0YWJsZVxuICAgICAgcmV0dXJucyB0aGUgc2FtZSBrZXkvdmFsdWUgcGFpciwgc28gbG9uZyBhcyB0aGUgdGFibGUgaXMgbm90IG11dGF0ZWQgaW4gYmV0d2Vlbi5cbiAgICAgIEJleW9uZCBkZXRlcm1pbmlzbSwgbm8gZ3VhcmFudGVlcyBhcmUgbWFkZSBhYm91dCBob3cgdGhlIGNob2ljZSBpcyBtYWRlLiBFeHBlY3RcbiAgICAgIGJpYXMgdG93YXJkIGNlcnRhaW4gaGFzaCB2YWx1ZXMuXG5cbiAgICAgIFRoaXMgaGFzaCBiaWFzIGNhbiBsZWFkIHRvIGRlZ2VuZXJhdGUgcGVyZm9ybWFuY2UgaW4gc29tZSBjYXNlcywgc3VjaCBhcyBjbGVhcmluZ1xuICAgICAgYSBoYXNoIHRhYmxlIHVzaW5nIHJlcGVhdGVkIFtjaG9vc2VdIGFuZCBbcmVtb3ZlXS4gQXQgZWFjaCBpdGVyYXRpb24sIGZpbmRpbmcgdGhlXG4gICAgICBuZXh0IGVsZW1lbnQgbWF5IGhhdmUgdG8gc2NhbiBmYXJ0aGVyIGZyb20gaXRzIGluaXRpYWwgaGFzaCB2YWx1ZS4gKilcbiAgdmFsIGNob29zZSA6ICgnYSwgJ2IpIHQgLT4gKCdhIGtleSAqICdiKSBvcHRpb25cblxuICAoKiogTGlrZSBbY2hvb3NlXS4gUmFpc2VzIGlmIFt0XSBpcyBlbXB0eS4gKilcbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAqICdiXG5cbiAgKCoqIENob29zZXMgYSByYW5kb20ga2V5L3ZhbHVlIHBhaXIgb2YgYSBoYXNoIHRhYmxlLiBSZXR1cm5zIFtOb25lXSBpZiBbdF0gaXMgZW1wdHkuXG5cbiAgICAgIFRoZSBjaG9pY2UgaXMgZGlzdHJpYnV0ZWQgdW5pZm9ybWx5IGFjcm9zcyBoYXNoIHZhbHVlcywgcmF0aGVyIHRoYW4gYWNyb3NzIGtleXNcbiAgICAgIHRoZW1zZWx2ZXMuIEFzIGEgY29uc2VxdWVuY2UsIHRoZSBjbG9zZXIgdGhlIGtleXMgYXJlIHRvIGV2ZW5seSBzcGFjZWQgb3V0IGluIHRoZVxuICAgICAgdGFibGUsIHRoZSBjbG9zZXIgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHRvIGEgdW5pZm9ybSBjaG9pY2Ugb2Yga2V5cy5cblxuICAgICAgVGhpcyBmdW5jdGlvbiBtYXkgYmUgcHJlZmVyYWJsZSB0byBbY2hvb3NlXSB3aGVuIG5vbmRldGVybWluaXN0aWMgY2hvaWNlIGlzXG4gICAgICBhY2NlcHRhYmxlLCBhbmQgYmlhcyB0b3dhcmQgY2VydGFpbiBoYXNoIHZhbHVlcyBpcyB1bmRlc2lyYWJsZS4gKilcbiAgdmFsIGNob29zZV9yYW5kb21seVxuICAgIDogID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgKCoqIGRlZmF1bHQ6IFtSYW5kb20uU3RhdGUuZGVmYXVsdF0gKilcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gKCdhIGtleSAqICdiKSBvcHRpb25cblxuICAoKiogTGlrZSBbY2hvb3NlX3JhbmRvbWx5XS4gUmFpc2VzIGlmIFt0XSBpcyBlbXB0eS4gKilcbiAgdmFsIGNob29zZV9yYW5kb21seV9leG5cbiAgICA6ICA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50ICgqKiBkZWZhdWx0OiBbUmFuZG9tLlN0YXRlLmRlZmF1bHRdICopXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleSAqICdiXG5cbiAgKCoqIFNldHMgdGhlIGdpdmVuIFtrZXldIHRvIFtkYXRhXS4gKilcbiAgdmFsIHNldCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW2FkZF0gYW5kIFthZGRfZXhuXSBsZWF2ZSB0aGUgdGFibGUgdW5jaGFuZ2VkIGlmIHRoZSBrZXkgd2FzIGFscmVhZHkgcHJlc2VudC4gKilcbiAgdmFsIGFkZCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IFsgYE9rIHwgYER1cGxpY2F0ZSBdXG5cbiAgdmFsIGFkZF9leG4gOiAoJ2EsICdiKSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0XG5cbiAgKCoqIFtjaGFuZ2UgdCBrZXkgfmZdIGNoYW5nZXMgW3RdJ3MgdmFsdWUgZm9yIFtrZXldIHRvIGJlIFtmIChmaW5kIHQga2V5KV0uICopXG4gIHZhbCBjaGFuZ2UgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBmOigoJ2Igb3B0aW9uIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbdXBkYXRlIHQga2V5IH5mXSBpcyBbY2hhbmdlIHQga2V5IH5mOihmdW4gbyAtPiBTb21lIChmIG8pKV0uICopXG4gIHZhbCB1cGRhdGUgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBmOigoJ2Igb3B0aW9uIC0+ICdiKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFt1cGRhdGVfYW5kX3JldHVybiB0IGtleSB+Zl0gaXMgW3VwZGF0ZV0sIGJ1dCByZXR1cm5zIHRoZSByZXN1bHQgb2YgW2Ygb10uICopXG4gIHZhbCB1cGRhdGVfYW5kX3JldHVybiA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCgnYiBvcHRpb24gLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiXG5cbiAgKCoqIFttYXAgdCBmXSByZXR1cm5zIGEgbmV3IHRhYmxlIHdpdGggdmFsdWVzIHJlcGxhY2VkIGJ5IHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgW2ZdXG4gICAgICB0byB0aGUgY3VycmVudCB2YWx1ZXMuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBsZXQgaCcgPSBIYXNodGJsLm1hcCBoIH5mOigoZnVuIHggLT4geCAqIDIpW0Bsb2NhbF0pIGluXG4gICAgICBIYXNodGJsLnRvX2FsaXN0IGgnOztcbiAgICAgIC0gOiAoaW50ICogaW50KSBsaXN0ID0gWyg1LCAxMik7ICgxLCA4KV1cbiAgICAgIHZ9ICopXG4gIHZhbCBtYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYiAtPiAnYylbQGxvY2FsXSkgLT4gKCdhLCAnYykgdFxuXG4gICgqKiBMaWtlIFttYXBdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBtYXBpIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjKVtAbG9jYWxdKSAtPiAoJ2EsICdjKSB0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgdGFibGUgYnkgZmlsdGVyaW5nIHRoZSBnaXZlbiB0YWJsZSdzIHZhbHVlcyBieSBbZl06IHRoZSBrZXlzIGZvciB3aGljaFxuICAgICAgW2ZdIGFwcGxpZWQgdG8gdGhlIGN1cnJlbnQgdmFsdWUgcmV0dXJucyBbU29tZV0gYXJlIGtlcHQsIGFuZCB0aG9zZSBmb3Igd2hpY2ggaXRcbiAgICAgIHJldHVybnMgW05vbmVdIGFyZSBkaXNjYXJkZWQuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBIYXNodGJsLmZpbHRlcl9tYXAgaCB+ZjooKGZ1biB4IC0+IGlmIHggPiA1IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlbQGxvY2FsXSlcbiAgICAgIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgLSA6IChpbnQgKiBpbnQpIGxpc3QgPSBbKDUsIDYpXVxuICAgICAgdn0gKilcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYiAtPiAnYyBvcHRpb24pW0Bsb2NhbF0pIC0+ICgnYSwgJ2MpIHRcblxuICAoKiogTGlrZSBbZmlsdGVyX21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2Mgb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2MpIHRcblxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYSBrZXkgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyIDogKCdhLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyaSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIFJldHVybnMgbmV3IHRhYmxlcyB3aXRoIGJvdW5kIHZhbHVlcyBwYXJ0aXRpb25lZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmRcbiAgICAgIHZhbHVlcy4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooKCdiIC0+ICgnYywgJ2QpIEVpdGhlci50KVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2MpIHQgKiAoJ2EsICdkKSB0XG5cbiAgKCoqIExpa2UgW3BhcnRpdGlvbl9tYXBdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICgnYywgJ2QpIEVpdGhlci50KVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2MpIHQgKiAoJ2EsICdkKSB0XG5cbiAgKCoqIFJldHVybnMgYSBwYWlyIG9mIHRhYmxlcyBbKHQxLCB0MildLCB3aGVyZSBbdDFdIGNvbnRhaW5zIGFsbCB0aGUgZWxlbWVudHMgb2YgdGhlXG4gICAgICBpbml0aWFsIHRhYmxlIHdoaWNoIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBbZl0sIGFuZCBbdDJdIGNvbnRhaW5zIHRoZSByZXN0LiAqKVxuICB2YWwgcGFydGl0aW9uX3RmIDogKCdhLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnYikgdCAqICgnYSwgJ2IpIHRcblxuICAoKiogTGlrZSBbcGFydGl0aW9uX3RmXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYikgdCAqICgnYSwgJ2IpIHRcblxuICAoKiogW2ZpbmRfb3JfYWRkIHQgayB+ZGVmYXVsdF0gcmV0dXJucyB0aGUgZGF0YSBhc3NvY2lhdGVkIHdpdGgga2V5IFtrXSBpZiBpdCBpcyBpbiB0aGVcbiAgICAgIHRhYmxlIFt0XSwgYW5kIG90aGVyd2lzZSBhc3NpZ25zIFtrXSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgW2RlZmF1bHQgKCldLiAqKVxuICB2YWwgZmluZF9vcl9hZGQgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBkZWZhdWx0OigodW5pdCAtPiAnYilbQGxvY2FsXSkgLT4gJ2JcblxuICAoKiogTGlrZSBbZmluZF9vcl9hZGRdIGJ1dCBbZGVmYXVsdF0gdGFrZXMgdGhlIGtleSBhcyBhbiBhcmd1bWVudC4gKilcbiAgdmFsIGZpbmRpX29yX2FkZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGRlZmF1bHQ6KCgnYSBrZXkgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiXG5cbiAgKCoqIFtmaW5kIHQga10gcmV0dXJucyBbU29tZV0gKHRoZSBjdXJyZW50IGJpbmRpbmcpIG9mIFtrXSBpbiBbdF0sIG9yIFtOb25lXSBpZiBubyBzdWNoXG4gICAgICBiaW5kaW5nIGV4aXN0cy4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiAnYiBvcHRpb25cblxuICAoKiogW2ZpbmRfZXhuIHQga10gcmV0dXJucyB0aGUgY3VycmVudCBiaW5kaW5nIG9mIFtrXSBpbiBbdF0sIG9yIHJhaXNlcyBbU3RkbGliLk5vdF9mb3VuZF1cbiAgICAgIG9yIFtOb3RfZm91bmRfc10gaWYgbm8gc3VjaCBiaW5kaW5nIGV4aXN0cy4gKilcbiAgdmFsIGZpbmRfZXhuIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gJ2JcblxuICAoKiogW2ZpbmRfYW5kX2NhbGwgdCBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXVxuXG4gICAgICBpcyBlcXVpdmFsZW50IHRvOlxuXG4gICAgICBbbWF0Y2ggZmluZCB0IGsgd2l0aCBTb21lIHYgLT4gaWZfZm91bmQgdiB8IE5vbmUgLT4gaWZfbm90X2ZvdW5kIGtdXG5cbiAgICAgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYWxsb2NhdGUgdGhlIG9wdGlvbi4gKilcbiAgdmFsIGZpbmRfYW5kX2NhbGxcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gaWZfZm91bmQ6KCgnYiAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCgnYSBrZXkgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICAoKiogSnVzdCBsaWtlIFtmaW5kX2FuZF9jYWxsXSwgYnV0IHRha2VzIGFuIGV4dHJhIGFyZ3VtZW50IHdoaWNoIGlzIHBhc3NlZCB0byBbaWZfZm91bmRdXG4gICAgICBhbmQgW2lmX25vdF9mb3VuZF0sIHNvIHRoYXQgdGhlIGNsaWVudCBjb2RlIGNhbiBhdm9pZCBhbGxvY2F0aW5nIGNsb3N1cmVzIG9yIHVzaW5nXG4gICAgICByZWZzIHRvIHBhc3MgdGhpcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWZ1bCBpbiBjb2RlXG4gICAgICB3aGljaCB0cmllcyB0byBtaW5pbWl6ZSBoZWFwIGFsbG9jYXRpb24uICopXG4gIHZhbCBmaW5kX2FuZF9jYWxsMVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gaWZfZm91bmQ6KCgnYiAtPiAnZCAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCgnYSBrZXkgLT4gJ2QgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZF9hbmRfY2FsbDJcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGI6J2VcbiAgICAtPiBpZl9mb3VuZDooKCdiIC0+ICdkIC0+ICdlIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnZCAtPiAnZSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBpZl9mb3VuZDooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCgnYSBrZXkgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZGlfYW5kX2NhbGwxXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBpZl9mb3VuZDooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnZCAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCgnYSBrZXkgLT4gJ2QgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZGlfYW5kX2NhbGwyXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBiOidlXG4gICAgLT4gaWZfZm91bmQ6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2QgLT4gJ2UgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gaWZfbm90X2ZvdW5kOigoJ2Ega2V5IC0+ICdkIC0+ICdlIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICdjXG5cbiAgKCoqIFtmaW5kX2FuZF9yZW1vdmUgdCBrXSByZXR1cm5zIFNvbWUgKHRoZSBjdXJyZW50IGJpbmRpbmcpIG9mIGsgaW4gdCBhbmQgcmVtb3ZlcyBpdCxcbiAgICAgIG9yIE5vbmUgaXMgbm8gc3VjaCBiaW5kaW5nIGV4aXN0cy4gKilcbiAgdmFsIGZpbmRfYW5kX3JlbW92ZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+ICdiIG9wdGlvblxuXG4gICgqKiBNZXJnZXMgdHdvIGhhc2h0YWJsZXMuXG5cbiAgICAgIFRoZSByZXN1bHQgb2YgW21lcmdlIGYgaDEgaDJdIGhhcyBhcyBrZXlzIHRoZSBzZXQgb2YgYWxsIFtrXSBpbiB0aGUgdW5pb24gb2YgdGhlXG4gICAgICBzZXRzIG9mIGtleXMgb2YgW2gxXSBhbmQgW2gyXSBmb3Igd2hpY2ggW2QoayldIGlzIG5vdCBOb25lLCB3aGVyZTpcblxuICAgICAgZChrKSA9XG4gICAgICAtIFtmIH5rZXk6ayAoYExlZnQgZDEpXVxuICAgICAgICBpZiBba10gaW4gW2gxXSBtYXBzIHRvIGQxLCBhbmQgW2gyXSBkb2VzIG5vdCBoYXZlIGRhdGEgZm9yIFtrXTtcblxuICAgICAgLSBbZiB+a2V5OmsgKGBSaWdodCBkMildXG4gICAgICAgIGlmIFtrXSBpbiBbaDJdIG1hcHMgdG8gZDIsIGFuZCBbaDFdIGRvZXMgbm90IGhhdmUgZGF0YSBmb3IgW2tdO1xuXG4gICAgICAtIFtmIH5rZXk6ayAoYEJvdGggKGQxLCBkMikpXVxuICAgICAgICBvdGhlcndpc2UsIHdoZXJlIFtrXSBpbiBbaDFdIG1hcHMgdG8gW2QxXSBhbmQgW2tdIGluIFtoMl0gbWFwcyB0byBbZDJdLlxuXG4gICAgICBFYWNoIGtleSBba10gaXMgbWFwcGVkIHRvIGEgc2luZ2xlIHBpZWNlIG9mIGRhdGEgW3hdLCB3aGVyZSBbZChrKSA9IFNvbWUgeF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaDEgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA1KTsgKDIsIDMyMzIpXSBpblxuICAgICAgbGV0IGgyID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgMyldIGluXG4gICAgICBIYXNodGJsLm1lcmdlIGgxIGgyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgYExlZnQgeCAtPiBTb21lIChgTGVmdCB4KVxuICAgICAgICB8IGBSaWdodCB4IC0+IFNvbWUgKGBSaWdodCB4KVxuICAgICAgICB8IGBCb3RoICh4LCB5KSAtPiBpZiB4PXkgdGhlbiBOb25lIGVsc2UgU29tZSAoYEJvdGggKHgseSkpXG4gICAgICApIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgLSA6IChpbnQgKiBbPiBgQm90aCBvZiBpbnQgKiBpbnQgfCBgTGVmdCBvZiBpbnQgfCBgUmlnaHQgb2YgaW50IF0pIGxpc3QgPVxuICAgICAgWygyLCBgTGVmdCAzMjMyKTsgKDEsIGBCb3RoICg1LCAzKSldXG4gICAgICB2fSAqKVxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2ssICdhKSB0XG4gICAgLT4gKCdrLCAnYikgdFxuICAgIC0+IGY6XG4gICAgICAgICAoKGtleTonayBrZXkgLT4gWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYiB8IGBCb3RoIG9mICdhICogJ2IgXSAtPiAnYyBvcHRpb24pXG4gICAgICAgICAgW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAnYykgdFxuXG5cbiAgKCoqIEV2ZXJ5IFtrZXldIGluIFtzcmNdIHdpbGwgYmUgcmVtb3ZlZCBvciBzZXQgaW4gW2RzdF0gYWNjb3JkaW5nIHRvIHRoZSByZXR1cm4gdmFsdWVcbiAgICAgIG9mIFtmXS4gKilcbiAgdmFsIG1lcmdlX2ludG9cbiAgICA6ICBzcmM6KCdrLCAnYSkgdFxuICAgIC0+IGRzdDooJ2ssICdiKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gJ2EgLT4gJ2Igb3B0aW9uIC0+ICdiIE1lcmdlX2ludG9fYWN0aW9uLnQpW0Bsb2NhbF0pXG4gICAgLT4gdW5pdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBrZXlzIGZvciBnaXZlbiBoYXNodGFibGUuICopXG4gIHZhbCBrZXlzIDogKCdhLCBfKSB0IC0+ICdhIGtleSBsaXN0XG5cbiAgKCoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIGRhdGEgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIGRhdGEgOiAoXywgJ2IpIHQgLT4gJ2IgbGlzdFxuXG4gICgqKiBbZmlsdGVyX2lucGxhY2UgdCB+Zl0gcmVtb3ZlcyBhbGwgdGhlIGVsZW1lbnRzIGZyb20gW3RdIHRoYXQgZG9uJ3Qgc2F0aXNmeSBbZl0uICopXG4gIHZhbCBmaWx0ZXJfa2V5c19pbnBsYWNlIDogKCdhLCBfKSB0IC0+IGY6KCgnYSBrZXkgLT4gYm9vbClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXJfaW5wbGFjZSA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgZmlsdGVyaV9pbnBsYWNlIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW21hcF9pbnBsYWNlIHQgfmZdIGFwcGxpZXMgW2ZdIHRvIGFsbCBlbGVtZW50cyBpbiBbdF0sIHRyYW5zZm9ybWluZyB0aGVtIGluXG4gICAgICBwbGFjZS4gKilcbiAgdmFsIG1hcF9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiAnYilbQGxvY2FsXSkgLT4gdW5pdFxuXG4gIHZhbCBtYXBpX2lucGxhY2UgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2IpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW2ZpbHRlcl9tYXBfaW5wbGFjZV0gY29tYmluZXMgdGhlIGVmZmVjdHMgb2YgW21hcF9pbnBsYWNlXSBhbmQgW2ZpbHRlcl9pbnBsYWNlXS4gKilcbiAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZSA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIGZpbHRlcl9tYXBpX2lucGxhY2VcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbZXF1YWwgZiB0MSB0Ml0gYW5kIFtzaW1pbGFyIGYgdDEgdDJdIGJvdGggcmV0dXJuIHRydWUgaWZmIFt0MV0gYW5kIFt0Ml0gaGF2ZSB0aGVcbiAgICAgIHNhbWUga2V5cyBhbmQgZm9yIGFsbCBrZXlzIFtrXSwgW2YgKGZpbmRfZXhuIHQxIGspIChmaW5kX2V4biB0MiBrKV0uICBbZXF1YWxdIGFuZFxuICAgICAgW3NpbWlsYXJdIG9ubHkgZGlmZmVyIGluIHRoZWlyIHR5cGVzLiAqKVxuICB2YWwgZXF1YWwgOiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGJvb2xcblxuICB2YWwgc2ltaWxhciA6ICgnYjEgLT4gJ2IyIC0+IGJvb2wpIC0+ICgnYSwgJ2IxKSB0IC0+ICgnYSwgJ2IyKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgKGtleSwgZGF0YSkgcGFpcnMgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIHRvX2FsaXN0IDogKCdhLCAnYikgdCAtPiAoJ2Ega2V5ICogJ2IpIGxpc3RcblxuXG4gICgqKiBbcmVtb3ZlX2lmX3plcm9dJ3MgZGVmYXVsdCBpcyBbZmFsc2VdLiAqKVxuICB2YWwgaW5jciA6ID9ieTppbnQgLT4gP3JlbW92ZV9pZl96ZXJvOmJvb2wgLT4gKCdhLCBpbnQpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcblxuICB2YWwgZGVjciA6ID9ieTppbnQgLT4gP3JlbW92ZV9pZl96ZXJvOmJvb2wgLT4gKCdhLCBpbnQpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNdWx0aSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXlcblxuICAoKiogW2FkZF9tdWx0aSB0IH5rZXkgfmRhdGFdIGlmIFtrZXldIGlzIHByZXNlbnQgaW4gdGhlIHRhYmxlIHRoZW4gY29uc1xuICAgICAgW2RhdGFdIG9uIHRoZSBsaXN0LCBvdGhlcndpc2UgYWRkIFtrZXldIHdpdGggYSBzaW5nbGUgZWxlbWVudCBsaXN0LiAqKVxuICB2YWwgYWRkX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0XG5cbiAgKCoqIFtyZW1vdmVfbXVsdGkgdCBrZXldIHVwZGF0ZXMgdGhlIHRhYmxlLCByZW1vdmluZyB0aGUgaGVhZCBvZiB0aGUgbGlzdCBib3VuZCB0b1xuICAgICAgW2tleV0uIElmIHRoZSBsaXN0IGhhcyBvbmx5IG9uZSBlbGVtZW50IChvciBpcyBlbXB0eSkgdGhlbiB0aGUgYmluZGluZyBpc1xuICAgICAgcmVtb3ZlZC4gKilcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICgnYSwgXyBsaXN0KSB0IC0+ICdhIGtleSAtPiB1bml0XG5cbiAgKCoqIFtmaW5kX211bHRpIHQga2V5XSByZXR1cm5zIHRoZSBlbXB0eSBsaXN0IGlmIFtrZXldIGlzIG5vdCBwcmVzZW50IGluIHRoZSB0YWJsZSxcbiAgICAgIHJldHVybnMgW3RdJ3MgdmFsdWVzIGZvciBba2V5XSBvdGhlcndpc2UuICopXG4gIHZhbCBmaW5kX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+ICdhIGtleSAtPiAnYiBsaXN0XG5lbmRcblxudHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA9XG4gID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gIC0+ICdrZXkgS2V5LnRcbiAgLT4gJ3pcblxudHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZSA9XG4gID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gIC0+ICd6XG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5XG4gIHR5cGUgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlIDogKCdhIGtleSwgJ2IsIHVuaXQgLT4gKCdhLCAnYikgdCkgY3JlYXRlX29wdGlvbnNcblxuXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgKCdhIGtleSAqICdiKSBsaXN0IC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBrZXkgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc1xuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgKCdhIGtleSAqICdiKSBsaXN0IC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2Ega2V5IGxpc3QgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAoJ2Ega2V5LCAnYiwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdhIGtleSwgJ2IsICgnYSBrZXkgKiAnYikgbGlzdCAtPiAoJ2EsICdiKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9tdWx0aVxuICAgIDogKCdhIGtleSwgJ2IgbGlzdCwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IgbGlzdCkgdCkgY3JlYXRlX29wdGlvbnNcblxuXG4gICgqKiB7WyBjcmVhdGVfbWFwcGVkIGdldF9rZXkgZ2V0X2RhdGEgW3gxLC4uLix4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIGdldF9kYXRhIHgxOyAuLi47IGdldF9rZXkgeG4sIGdldF9kYXRhIHhuXSBdfSAqKVxuICB2YWwgY3JlYXRlX21hcHBlZFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgZ2V0X2tleTooKCdyIC0+ICdhIGtleSlbQGxvY2FsXSlcbiAgICAgICAgLT4gZ2V0X2RhdGE6KCgnciAtPiAnYilbQGxvY2FsXSlcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGtleSBsaXN0IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgKCoqIHtbIGNyZWF0ZV93aXRoX2tleSB+Z2V0X2tleSBbeDEsLi4uLHhuXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgeDE7IC4uLjsgZ2V0X2tleSB4biwgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdyXG4gICAgICAsIGdldF9rZXk6KCgnciAtPiAnYSBrZXkpW0Bsb2NhbF0pXG4gICAgICAgIC0+ICdyIGxpc3RcbiAgICAgICAgLT4gWyBgT2sgb2YgKCdhLCAncikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBrZXkgbGlzdCBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnclxuICAgICAgLCBnZXRfa2V5OigoJ3IgLT4gJ2Ega2V5KVtAbG9jYWxdKSAtPiAnciBsaXN0IC0+ICgnYSwgJ3IpIHQgT3JfZXJyb3IudCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9leG5cbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdyXG4gICAgICAsIGdldF9rZXk6KCgnciAtPiAnYSBrZXkpW0Bsb2NhbF0pIC0+ICdyIGxpc3QgLT4gKCdhLCAncikgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cblxuICB2YWwgZ3JvdXBcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdiXG4gICAgICAsIGdldF9rZXk6KCgnciAtPiAnYSBrZXkpW0Bsb2NhbF0pXG4gICAgICAgIC0+IGdldF9kYXRhOigoJ3IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgICAgIC0+IGNvbWJpbmU6KCgnYiAtPiAnYiAtPiAnYilbQGxvY2FsXSlcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiAoJ2EsICdiKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9ycyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICAoKiogezIgQ3JlYXRvcnN9ICopXG5cbiAgKCoqIFRoZSBtb2R1bGUgeW91IHBhc3MgdG8gW2NyZWF0ZV0gbXVzdCBoYXZlIGEgdHlwZSB0aGF0IGlzIGhhc2hhYmxlLCBzZXhwYWJsZSwgYW5kXG4gICAgICBjb21wYXJhYmxlLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIEludCk7O1xuICAgICAgICAtIDogKGludCwgJ19hKSBIYXNodGJsLnQgPSA8YWJzdHI+OztcbiAgICAgIHZ9ICopXG4gIHZhbCBjcmVhdGVcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgICBIYXNodGJsLm9mX2FsaXN0IChtb2R1bGUgSW50KSBbKDMsIFwic29tZXRoaW5nXCIpOyAoMiwgXCJ3aGF0ZXZlclwiKV1cbiAgICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5IG9mIGludCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYE9rIDxhYnN0cj5cbiAgICAgIHZ9ICopXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogV2hlcmVhcyBbb2ZfYWxpc3RdIHdpbGwgcmVwb3J0IFtEdXBsaWNhdGVfa2V5XSBubyBtYXR0ZXIgaG93IG1hbnkgZHVwcyB0aGVyZSBhcmUgaW5cbiAgICAgIHlvdXIgbGlzdCwgW29mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc10gd2lsbCByZXBvcnQgZWFjaCBhbmQgZXZlcnkgZHVwbGljYXRlIGVudHJ5LlxuXG4gICAgICBGb3IgZXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgSGFzaHRibC5vZl9hbGlzdCAobW9kdWxlIEludCkgWygxLCBcImZvb1wiKTsgKDEsIFwiYmFyXCIpOyAoMiwgXCJmb29cIik7ICgyLCBcImJhclwiKV07O1xuICAgICAgICAtIDogWyBgRHVwbGljYXRlX2tleSBvZiBpbnQgfCBgT2sgb2YgKGludCwgc3RyaW5nKSBIYXNodGJsLnQgXSA9IGBEdXBsaWNhdGVfa2V5IDFcblxuICAgICAgICBIYXNodGJsLm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyAobW9kdWxlIEludCkgWygxLCBcImZvb1wiKTsgKDEsIFwiYmFyXCIpOyAoMiwgXCJmb29cIik7ICgyLCBcImJhclwiKV07O1xuICAgICAgICAtIDogWyBgRHVwbGljYXRlX2tleXMgb2YgaW50IGxpc3QgfCBgT2sgb2YgKGludCwgc3RyaW5nKSBIYXNodGJsLnQgXSA9IGBEdXBsaWNhdGVfa2V5cyBbMTsgMl1cbiAgICAgIHZ9ICopXG4gIHZhbCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHNcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2EgbGlzdCBdXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2ZfYWxpc3RfZXhuXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSB7eyFNdWx0aX0gXCJtdWx0aVwifSBoYXNodGFibGUsIGkuZS4sIGEgaGFzaHRhYmxlIHdoZXJlIGVhY2gga2V5IHBvaW50cyB0byBhXG4gICAgICBsaXN0IHBvdGVudGlhbGx5IGNvbnRhaW5pbmcgbXVsdGlwbGUgdmFsdWVzLiBTbyBpbnN0ZWFkIG9mIHNob3J0LWNpcmN1aXRpbmcgd2l0aCBhXG4gICAgICBbYER1cGxpY2F0ZV9rZXldIHZhcmlhbnQgb24gZHVwbGljYXRlcywgYXMgaW4gW29mX2FsaXN0XSwgW29mX2FsaXN0X211bHRpXSBmb2xkc1xuICAgICAgdGhvc2UgdmFsdWVzIGludG8gYSBsaXN0IGZvciB0aGUgZ2l2ZW4ga2V5OlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X211bHRpIChtb2R1bGUgSW50KSBbKDEsIFwiYVwiKTsgKDEsIFwiYlwiKTsgKDIsIFwiY1wiKTsgKDIsIFwiZFwiKV07O1xuICAgICAgdmFsIGggOiAoaW50LCBzdHJpbmcgbGlzdCkgSGFzaHRibC50ID0gPGFic3RyPlxuXG4gICAgICBIYXNodGJsLmZpbmRfZXhuIGggMTs7XG4gICAgICAtIDogc3RyaW5nIGxpc3QgPSBbXCJiXCI7IFwiYVwiXVxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiIGxpc3QpIHRcblxuICAoKiogQXBwbGllcyB0aGUgW2dldF9rZXldIGFuZCBbZ2V0X2RhdGFdIGZ1bmN0aW9ucyB0byB0aGUgWydyIGxpc3RdIHRvIGNyZWF0ZSB0aGVcbiAgICAgIGluaXRpYWwga2V5cyBhbmQgdmFsdWVzLCByZXNwZWN0aXZlbHksIGZvciB0aGUgbmV3IGhhc2h0YWJsZS5cblxuICAgICAge1sgY3JlYXRlX21hcHBlZCBnZXRfa2V5IGdldF9kYXRhIFt4MTsuLi47eG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCBnZXRfZGF0YSB4MTsgLi4uOyBnZXRfa2V5IHhuLCBnZXRfZGF0YSB4bl1cbiAgICAgIF19XG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgIGxldCBoID1cbiAgICAgICAgICBIYXNodGJsLmNyZWF0ZV9tYXBwZWQgKG1vZHVsZSBJbnQpXG4gICAgICAgICAgICB+Z2V0X2tleTooKGZ1biB4IC0+IHgpW0Bsb2NhbF0pXG4gICAgICAgICAgICB+Z2V0X2RhdGE6KChmdW4geCAtPiB4ICsgMSlbQGxvY2FsXSlcbiAgICAgICAgICAgWzE7IDI7IDNdOztcbiAgICAgICAgdmFsIGggOiBbIGBEdXBsaWNhdGVfa2V5cyBvZiBpbnQgbGlzdCB8IGBPayBvZiAoaW50LCBpbnQpIEhhc2h0YmwudCBdID0gYE9rIDxhYnN0cj5cblxuICAgICAgICBsZXQgaCA9XG4gICAgICAgICAgbWF0Y2ggaCB3aXRoXG4gICAgICAgICAgfCBgT2sgeCAtPiB4XG4gICAgICAgICAgfCBgRHVwbGljYXRlX2tleXMgXyAtPiBmYWlsd2l0aCBcIlwiXG4gICAgICAgIGluXG4gICAgICAgIEhhc2h0YmwuZmluZF9leG4gaCAxOztcbiAgICAgICAgLSA6IGludCA9IDJcbiAgICAgIHZ9ICopXG4gIHZhbCBjcmVhdGVfbWFwcGVkXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooKCdyIC0+ICdhKVtAbG9jYWxdKVxuICAgIC0+IGdldF9kYXRhOigoJ3IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2EgbGlzdCBdXG5cbiAgKCoqIHtbIGNyZWF0ZV93aXRoX2tleSB+Z2V0X2tleSBbeDE7Li4uO3huXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgeDE7IC4uLjsgZ2V0X2tleSB4biwgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OigoJ3IgLT4gJ2EpW0Bsb2NhbF0pXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ3IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2EgbGlzdCBdXG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvclxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCgnciAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAncikgdCBPcl9lcnJvci50XG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9leG5cbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OigoJ3IgLT4gJ2EpW0Bsb2NhbF0pXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+ICgnYSwgJ3IpIHRcblxuICAoKiogTGlrZSBbY3JlYXRlX21hcHBlZF0sIGFwcGxpZXMgdGhlIFtnZXRfa2V5XSBhbmQgW2dldF9kYXRhXSBmdW5jdGlvbnMgdG8gdGhlIFsnclxuICAgICAgbGlzdF0gdG8gY3JlYXRlIHRoZSBpbml0aWFsIGtleXMgYW5kIHZhbHVlcywgcmVzcGVjdGl2ZWx5LCBmb3IgdGhlIG5ldyBoYXNodGFibGUgLS1cbiAgICAgIGFuZCB0aGVuLCBsaWtlIFthZGRfbXVsdGldLCBmb2xkcyB0b2dldGhlciB2YWx1ZXMgYmVsb25naW5nIHRvIHRoZSBzYW1lIGtleXMuIEhlcmUsXG4gICAgICB0aG91Z2gsIHRoZSBmdW5jdGlvbiB1c2VkIGZvciB0aGUgZm9sZGluZyBpcyBnaXZlbiBieSBbY29tYmluZV0gKGluc3RlYWQgb2YganVzdFxuICAgICAgYmVpbmcgYSBbY29uc10pLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICAgSGFzaHRibC5ncm91cCAobW9kdWxlIEludClcbiAgICAgICAgICAgfmdldF9rZXk6KChmdW4geCAtPiB4IC8gMilbQGxvY2FsXSlcbiAgICAgICAgICAgfmdldF9kYXRhOigoZnVuIHggLT4geClbQGxvY2FsXSlcbiAgICAgICAgICAgfmNvbWJpbmU6KChmdW4geCB5IC0+IHggKiB5KVtAbG9jYWxdKVxuICAgICAgICAgICAgWyAxOyAyOyAzOyA0XVxuICAgICAgICAgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAgICAtIDogKGludCAqIGludCkgbGlzdCA9IFsoMiwgNCk7ICgxLCA2KTsgKDAsIDEpXVxuICAgICAgIHZ9ICopXG4gIHZhbCBncm91cFxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCgnciAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiBnZXRfZGF0YTooKCdyIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+IGNvbWJpbmU6KCgnYiAtPiAnYiAtPiAnYilbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAnYikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfd2l0aG91dF9zdWJtb2R1bGVzID0gc2lnXG4gIHZhbCBoYXNoIDogJ2EgLT4gaW50XG4gIHZhbCBoYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiAnYSAtPiBpbnRcblxuICB0eXBlICghJ2EsICEnYikgdFxuXG4gICgqKiBXZSBwcm92aWRlIGEgW3NleHBfb2ZfdF0gYnV0IG5vdCBhIFt0X29mX3NleHBdIGZvciB0aGlzIHR5cGUgYmVjYXVzZSBvbmUgbmVlZHMgdG8gYmVcbiAgICAgIGV4cGxpY2l0IGFib3V0IHRoZSBoYXNoIGFuZCBjb21wYXJpc29uIGZ1bmN0aW9ucyB1c2VkIHdoZW4gY3JlYXRpbmcgYSBoYXNodGFibGUuXG4gICAgICBOb3RlIHRoYXQgW0hhc2h0YmwuUG9seS50XSBkb2VzIGhhdmUgW1tAQGRlcml2aW5nIHNleHBdXSwgYW5kIHVzZXMgT0NhbWwncyBidWlsdC1pblxuICAgICAgcG9seW1vcnBoaWMgY29tcGFyaXNvbiBhbmQgYW5kIHBvbHltb3JwaGljIGhhc2hpbmcuICopXG4gIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cC50KSAtPiAoJ2IgLT4gU2V4cC50KSAtPiAoJ2EsICdiKSB0IC0+IFNleHAudFxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCAoKiogQGlubGluZSAqKVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA9ICdhXG4gICgqKiBAaW5saW5lICopXG5cblxuICBpbmNsdWRlIE11bHRpIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgKCoqIEBpbmxpbmUgKilcblxuICB2YWwgaGFzaGFibGVfcyA6ICgna2V5LCBfKSB0IC0+ICdrZXkgS2V5LnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hclxuICAgIDogICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cblxuICB2YWwgaGFzaGFibGUgOiAnYSBIYXNoYWJsZS50XG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAnYSBrZXkgPSAnYVxuICAgIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICBpbmNsdWRlIEFjY2Vzc29ycyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gIGluY2x1ZGUgTXVsdGkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICB0eXBlICgnaywgJ3YpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgS2V5LlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcblxuICB2YWwgc2V4cF9vZl9tX190XG4gICAgOiAgKG1vZHVsZSBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoJ3YgLT4gU2V4cC50KVxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBTZXhwLnRcblxuICB2YWwgbV9fdF9vZl9zZXhwXG4gICAgOiAgKG1vZHVsZSBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgIC0+IFNleHAudFxuICAgIC0+ICgnaywgJ3YpIHRcblxuICB2YWwgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAobW9kdWxlIE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2ssICd2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGVxdWFsX21fX3RcbiAgICA6ICAobW9kdWxlIEVxdWFsX20pXG4gICAgLT4gKCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBib29sXG5lbmRcblxubW9kdWxlIHR5cGUgSGFzaHRibCA9IHNpZ1xuICAoKiogQSBoYXNoIHRhYmxlIGlzIGEgbXV0YWJsZSBkYXRhIHN0cnVjdHVyZSBpbXBsZW1lbnRpbmcgYSBtYXAgYmV0d2VlbiBrZXlzIGFuZCB2YWx1ZXMuXG4gICAgICBJdCBzdXBwb3J0cyBjb25zdGFudC10aW1lIGxvb2t1cCBhbmQgaW4tcGxhY2UgbW9kaWZpY2F0aW9uLlxuXG4gICAgICB7MSBVc2FnZX1cblxuICAgICAgQXMgYSBzaW1wbGUgZXhhbXBsZSwgd2UnbGwgY3JlYXRlIGEgaGFzaCB0YWJsZSB3aXRoIHN0cmluZyBrZXlzIHVzaW5nIHRoZVxuICAgICAge3shY3JlYXRlfVtjcmVhdGVdfSBjb25zdHJ1Y3Rvciwgd2hpY2ggZXhwZWN0cyBhIG1vZHVsZSBkZWZpbmluZyB0aGUga2V5J3MgdHlwZTpcblxuICAgICAge1tcbiAgICAgICAgbGV0IGggPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIFN0cmluZyk7O1xuICAgICAgICB2YWwgaCA6IChzdHJpbmcsICdfYSkgSGFzaHRibC50ID0gPGFic3RyPlxuICAgICAgXX1cblxuICAgICAgV2UgY2FuIHNldCB0aGUgdmFsdWVzIG9mIGluZGl2aWR1YWwga2V5cyB3aXRoIHt7IXNldH1bc2V0XX0uIElmIHRoZSBrZXkgYWxyZWFkeSBoYXNcbiAgICAgIGEgdmFsdWUsIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLnNldCBoIH5rZXk6XCJmb29cIiB+ZGF0YTo1OztcbiAgICAgIC0gOiB1bml0ID0gKClcblxuICAgICAgSGFzaHRibC5zZXQgaCB+a2V5OlwiZm9vXCIgfmRhdGE6Njs7XG4gICAgICAtIDogdW5pdCA9ICgpXG5cbiAgICAgIEhhc2h0Ymwuc2V0IGggfmtleTpcImJhclwiIH5kYXRhOjY7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuICAgICAgdn1cblxuICAgICAgV2UgY2FuIGFjY2VzcyB2YWx1ZXMgYnkga2V5LCBvciBkdW1wIGFsbCBvZiB0aGUgaGFzaCB0YWJsZSdzIGRhdGE6XG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLmZpbmQgaCBcImZvb1wiOztcbiAgICAgIC0gOiBpbnQgb3B0aW9uID0gU29tZSA2XG5cbiAgICAgIEhhc2h0YmwuZmluZF9leG4gaCBcImZvb1wiOztcbiAgICAgIC0gOiBpbnQgPSA2XG5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaDs7XG4gICAgICAtIDogKHN0cmluZyAqIGludCkgbGlzdCA9IFsoXCJmb29cIiwgNik7IChcImJhclwiLCA2KV1cbiAgICAgIHZ9XG5cbiAgICAgIHt7IWNoYW5nZX1bY2hhbmdlXX0gbGV0cyB1cyBjaGFuZ2UgYSBrZXkncyB2YWx1ZSBieSBhcHBseWluZyB0aGUgZ2l2ZW4gZnVuY3Rpb246XG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLmNoYW5nZSBoIFwiZm9vXCIgKGZ1biB4IC0+XG4gICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgfCBTb21lIHggLT4gU29tZSAoeCAqIDIpXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICk7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuXG4gICAgICBIYXNodGJsLnRvX2FsaXN0IGg7O1xuICAgICAgLSA6IChzdHJpbmcgKiBpbnQpIGxpc3QgPSBbKFwiZm9vXCIsIDEyKTsgKFwiYmFyXCIsIDYpXVxuICAgICAgdn1cblxuXG4gICAgICBXZSBjYW4gdXNlIHt7IW1lcmdlfVttZXJnZV19IHRvIG1lcmdlIHR3byBoYXNodGFibGVzIHdpdGggZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlclxuICAgICAgaG93IHdlIGNob29zZSB2YWx1ZXMgd2hlbiBhIGtleSBpcyBwcmVzZW50IGluIHRoZSBmaXJzdCAoXCJsZWZ0XCIpIGhhc2h0YWJsZSwgdGhlXG4gICAgICBzZWNvbmQgKFwicmlnaHRcIiksIG9yIGJvdGguIEhlcmUsIHdlJ2xsIGNvbnMgdGhlIHZhbHVlcyB3aGVuIGJvdGggaGFzaHRhYmxlcyBoYXZlIGFcbiAgICAgIGtleTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoMSA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDUpOyAoMiwgMzIzMildIGluXG4gICAgICBsZXQgaDIgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCAzKV0gaW5cbiAgICAgIEhhc2h0YmwubWVyZ2UgaDEgaDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBgTGVmdCB4IC0+IFNvbWUgKGBMZWZ0IHgpXG4gICAgICAgIHwgYFJpZ2h0IHggLT4gU29tZSAoYFJpZ2h0IHgpXG4gICAgICAgIHwgYEJvdGggKHgsIHkpIC0+IGlmIHg9eSB0aGVuIE5vbmUgZWxzZSBTb21lIChgQm90aCAoeCx5KSlcbiAgICAgICkgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIFs+IGBCb3RoIG9mIGludCAqIGludCB8IGBMZWZ0IG9mIGludCB8IGBSaWdodCBvZiBpbnQgXSkgbGlzdCA9XG4gICAgICBbKDIsIGBMZWZ0IDMyMzIpOyAoMSwgYEJvdGggKDUsIDMpKV1cbiAgICAgIHZ9XG5cbiAgICAgIHsxIEludGVyZmFjZX0gKilcblxuICBpbmNsdWRlIFNfd2l0aG91dF9zdWJtb2R1bGVzICgqKiBAaW5saW5lICopXG5cbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzID0gQWNjZXNzb3JzXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzID0gQ3JlYXRvcnNcbiAgbW9kdWxlIHR5cGUgTXVsdGkgPSBNdWx0aVxuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgU193aXRob3V0X3N1Ym1vZHVsZXMgPSBTX3dpdGhvdXRfc3VibW9kdWxlc1xuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcblxuICBtb2R1bGUgS2V5ID0gS2V5XG4gIG1vZHVsZSBNZXJnZV9pbnRvX2FjdGlvbiA9IE1lcmdlX2ludG9fYWN0aW9uXG5cbiAgdHlwZSBub25yZWMgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnMgPSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc1xuXG4gIG1vZHVsZSBDcmVhdG9ycyAoS2V5IDogc2lnXG4gICAgICB0eXBlICdhIHRcblxuICAgICAgdmFsIGhhc2hhYmxlIDogJ2EgdCBIYXNoYWJsZS50XG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdF8gPSAoJ2EgS2V5LnQsICdiKSB0XG5cbiAgICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBLZXkudCkgLT4gKFNleHAudCAtPiAnYikgLT4gU2V4cC50IC0+ICgnYSwgJ2IpIHRfXG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X1xuICAgICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgICAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAgICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG4gIGVuZFxuXG4gIG1vZHVsZSBQb2x5IDogU19wb2x5IHdpdGggdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF90YWJsZSA9IGludCBIYXNodGJsLk0oU3RyaW5nKS50XG4gICAgICBdfVxuXG4gICAgICB3aGljaCBzdGFuZHMgZm9yOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfdGFibGUgPSAoU3RyaW5nLnQsIGludCkgSGFzaHRibC50XG4gICAgICBdfVxuXG4gICAgICBUaGUgcG9pbnQgaXMgdGhhdCBbaW50IEhhc2h0YmwuTShTdHJpbmcpLnRdIHN1cHBvcnRzIGRlcml2aW5nLCB3aGVyZWFzIHRoZSBzZWNvbmRcbiAgICAgIHN5bnRheCBkb2Vzbid0IChiZWNhdXNlIFt0X29mX3NleHBdIGRvZXNuJ3Qga25vdyB3aGF0IGNvbXBhcmlzb24vaGFzaCBmdW5jdGlvbiB0b1xuICAgICAgdXNlKS4gKilcbiAgbW9kdWxlIE0gKEsgOiBULlQpIDogc2lnXG4gICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2KSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAoKiovKiopXG5cbiAgKCpfIFNlZSB0aGUgSmFuZSBTdHJlZXQgU3R5bGUgR3VpZGUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIFtQcml2YXRlXSBzdWJtb2R1bGVzOlxuXG4gICAgaHR0cHM6Ly9vcGVuc291cmNlLmphbmVzdHJlZXQuY29tL3N0YW5kYXJkcy8jcHJpdmF0ZS1zdWJtb2R1bGVzICopXG4gIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcblxuICAgIHR5cGUgbm9ucmVjICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlID1cbiAgICAgICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiAoJ2tleSwgXykgdCAtPiAna2V5IEhhc2hhYmxlLnRcbiAgZW5kXG5lbmRcbiIsIigqIEEgZmV3IHNtYWxsIHRoaW5ncyBjb3BpZWQgZnJvbSBvdGhlciBwYXJ0cyBvZiBCYXNlIGJlY2F1c2UgdGhleSBkZXBlbmQgb24gdXMsIHNvIHdlXG4gICBjYW4ndCB1c2UgdGhlbS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbigqIEl0cyBpbXBvcnRhbnQgdGhhdCBFbXB0eSBoYXZlIG5vIGFyZ3MuIEl0J3MgdGVtcHRpbmcgdG8gbWFrZSB0aGlzIHR5cGUgYSByZWNvcmRcbiAgIChlLmcuIHRvIGhvbGQgdGhlIGNvbXBhcmUgZnVuY3Rpb24pLCBidXQgYSBsb3Qgb2YgbWVtb3J5IGlzIHNhdmVkIGJ5IEVtcHR5IGJlaW5nIGFuXG4gICBpbW1lZGlhdGUsIHNpbmNlIGFsbCB1bnVzZWQgYnVja2V0cyBpbiB0aGUgaGFzaHRibCBkb24ndCB1c2UgYW55IG1lbW9yeSAoYmVzaWRlcyB0aGVcbiAgIGFycmF5IGNlbGwpICopXG50eXBlICgnaywgJ3YpIHQgPVxuICB8IEVtcHR5XG4gIHwgTm9kZSBvZlxuICAgICAgeyBtdXRhYmxlIGxlZnQgOiAoJ2ssICd2KSB0XG4gICAgICA7IGtleSA6ICdrXG4gICAgICA7IG11dGFibGUgdmFsdWUgOiAndlxuICAgICAgOyBtdXRhYmxlIGhlaWdodCA6IGludFxuICAgICAgOyBtdXRhYmxlIHJpZ2h0IDogKCdrLCAndikgdFxuICAgICAgfVxuICB8IExlYWYgb2ZcbiAgICAgIHsga2V5IDogJ2tcbiAgICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICd2XG4gICAgICB9XG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gdHJ1ZVxuICB8IExlYWYgXyB8IE5vZGUgXyAtPiBmYWxzZVxuOztcblxubGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMFxuICB8IExlYWYgXyAtPiAxXG4gIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodDsgcmlnaHQgPSBfIH0gLT4gaGVpZ2h0XG47O1xuXG5sZXQgaW52YXJpYW50IGNvbXBhcmUgPVxuICBsZXQgbGVnYWxfbGVmdF9rZXkga2V5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmIHsga2V5ID0gbGVmdF9rZXk7IHZhbHVlID0gXyB9XG4gICAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IGxlZnRfa2V5OyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+XG4gICAgICBhc3NlcnQgKGNvbXBhcmUgbGVmdF9rZXkga2V5IDwgMClcbiAgaW5cbiAgbGV0IGxlZ2FsX3JpZ2h0X2tleSBrZXkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgeyBrZXkgPSByaWdodF9rZXk7IHZhbHVlID0gXyB9XG4gICAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IHJpZ2h0X2tleTsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPlxuICAgICAgYXNzZXJ0IChjb21wYXJlIHJpZ2h0X2tleSBrZXkgPiAwKVxuICBpblxuICBsZXQgcmVjIGludiA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSB8IExlYWYgXyAtPiAoKVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IGs7IHZhbHVlID0gXzsgaGVpZ2h0ID0gaDsgcmlnaHQgfSAtPlxuICAgICAgbGV0IGhsLCBociA9IGhlaWdodCBsZWZ0LCBoZWlnaHQgcmlnaHQgaW5cbiAgICAgIGludiBsZWZ0O1xuICAgICAgaW52IHJpZ2h0O1xuICAgICAgbGVnYWxfbGVmdF9rZXkgayBsZWZ0O1xuICAgICAgbGVnYWxfcmlnaHRfa2V5IGsgcmlnaHQ7XG4gICAgICBhc3NlcnQgKGggPSBJbnQubWF4IGhsIGhyICsgMSk7XG4gICAgICBhc3NlcnQgKGFicyAoaGwgLSBocikgPD0gMilcbiAgaW5cbiAgaW52XG47O1xuXG5sZXQgaW52YXJpYW50IHQgfmNvbXBhcmUgPSBpbnZhcmlhbnQgY29tcGFyZSB0XG5cbigqIEluIHRoZSBmb2xsb3dpbmcgY29tbWVudHMsXG4gICAndCBpcyBiYWxhbmNlZCcgbWVhbnMgdGhhdCAnaW52YXJpYW50IHQnIGRvZXMgbm90XG4gICByYWlzZSBhbiBleGNlcHRpb24uICBUaGlzIGltcGxpZXMgb2YgY291cnNlIHRoYXQgZWFjaCBub2RlJ3MgaGVpZ2h0IGZpZWxkIGlzXG4gICBjb3JyZWN0LlxuICAgJ3QgaXMgYmFsYW5jZWFibGUnIG1lYW5zIHRoYXQgaGVpZ2h0IG9mIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBvZiB0XG4gICBkaWZmZXIgYnkgYXQgbW9zdCAzLiAqKVxuXG4oKiBAcHJlOiBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBoYXZlIGNvcnJlY3QgaGVpZ2h0c1xuICAgQHBvc3Q6IG91dHB1dCBoYXMgdGhlIGNvcnJlY3QgaGVpZ2h0ICopXG5sZXQgdXBkYXRlX2hlaWdodCA9IGZ1bmN0aW9uXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IG9sZF9oZWlnaHQ7IHJpZ2h0IH0gYXMgeCkgLT5cbiAgICBsZXQgbmV3X2hlaWdodCA9IEludC5tYXggKGhlaWdodCBsZWZ0KSAoaGVpZ2h0IHJpZ2h0KSArIDEgaW5cbiAgICBpZiBuZXdfaGVpZ2h0IDw+IG9sZF9oZWlnaHQgdGhlbiB4LmhlaWdodCA8LSBuZXdfaGVpZ2h0XG4gIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBhcmUgYmFsYW5jZWRcbiAgIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwb3N0OiBvdXRwdXQgaXMgYmFsYW5jZWQgKGluIHBhcnRpY3VsYXIsIGhlaWdodCBpcyBjb3JyZWN0KSAqKVxubGV0IGJhbGFuY2UgdHJlZSA9XG4gIG1hdGNoIHRyZWUgd2l0aFxuICB8IEVtcHR5IHwgTGVhZiBfIC0+IHRyZWVcbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyByb290X25vZGUpIC0+XG4gICAgbGV0IGhsID0gaGVpZ2h0IGxlZnRcbiAgICBhbmQgaHIgPSBoZWlnaHQgcmlnaHQgaW5cbiAgICAoKiArIDIgaXMgY3JpdGljYWxseSBpbXBvcnRhbnQsIGxvd2VyaW5nIGl0IHRvIDEgd2lsbCBicmVhayB0aGUgTGVhZlxuICAgICAgIGFzc3VtcHRpb25zIGluIHRoZSBjb2RlIGJlbG93LCBhbmQgd2lsbCBmb3JjZSB1cyB0byBwcm9tb3RlIGxlYWYgbm9kZXMgaW5cbiAgICAgICB0aGUgYmFsYW5jZSByb3V0aW5lLiBJdCdzIGFsc28gZmFzdGVyLCBzaW5jZSBpdCB3aWxsIGJhbGFuY2UgbGVzcyBvZnRlbi5cbiAgICAgICBOb3RlIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIGlzIGRlbGljYXRlLiAgVGhlIHVwZGF0ZV9oZWlnaHQgY2FsbHMgbXVzdFxuICAgICAgIG9jY3VyIGluIHRoZSBjb3JyZWN0IG9yZGVyLCBzaW5jZSB1cGRhdGVfaGVpZ2h0IGFzc3VtZXMgaXRzIGNoaWxkcmVuIGhhdmVcbiAgICAgICB0aGUgY29ycmVjdCBoZWlnaHRzLiAgKilcbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbGVmdCB3aXRoXG4gICAgICAoKiBJdCBjYW5ub3QgYmUgYSBsZWFmLCBiZWNhdXNlIGV2ZW4gaWYgcmlnaHQgaXMgZW1wdHksIGEgbGVhZlxuICAgICAgICAgaXMgb25seSBoZWlnaHQgMSAqKVxuICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTm9kZVxuICAgICAgICAgICh7IGxlZnQgPSBsZWZ0X25vZGVfbGVmdFxuICAgICAgICAgICA7IGtleSA9IF9cbiAgICAgICAgICAgOyB2YWx1ZSA9IF9cbiAgICAgICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICAgICAgIDsgcmlnaHQgPSBsZWZ0X25vZGVfcmlnaHRcbiAgICAgICAgICAgfSBhcyBsZWZ0X25vZGUpIC0+XG4gICAgICAgIGlmIGhlaWdodCBsZWZ0X25vZGVfbGVmdCA+PSBoZWlnaHQgbGVmdF9ub2RlX3JpZ2h0XG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJvb3Rfbm9kZS5sZWZ0IDwtIGxlZnRfbm9kZV9yaWdodDtcbiAgICAgICAgICBsZWZ0X25vZGUucmlnaHQgPC0gdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0O1xuICAgICAgICAgIGxlZnQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGlmIHJpZ2h0IGlzIGEgbGVhZiwgdGhlbiBsZWZ0IG11c3QgYmUgZW1wdHkuIFRoYXQgbWVhbnNcbiAgICAgICAgICAgICBoZWlnaHQgaXMgMi4gRXZlbiBpZiBociBpcyBlbXB0eSB3ZSBzdGlsbCBjYW4ndCBnZXQgaGVyZS4gKilcbiAgICAgICAgICBtYXRjaCBsZWZ0X25vZGVfcmlnaHQgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBOb2RlXG4gICAgICAgICAgICAgICh7IGxlZnQgPSBscl9sZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gbHJfcmlnaHQgfSBhc1xuICAgICAgICAgICAgICAgbHJfbm9kZSkgLT5cbiAgICAgICAgICAgIGxlZnRfbm9kZS5yaWdodCA8LSBscl9sZWZ0O1xuICAgICAgICAgICAgcm9vdF9ub2RlLmxlZnQgPC0gbHJfcmlnaHQ7XG4gICAgICAgICAgICBscl9ub2RlLnJpZ2h0IDwtIHRyZWU7XG4gICAgICAgICAgICBscl9ub2RlLmxlZnQgPC0gbGVmdDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgbGVmdDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgbGVmdF9ub2RlX3JpZ2h0O1xuICAgICAgICAgICAgbGVmdF9ub2RlX3JpZ2h0KSlcbiAgICBlbHNlIGlmIGhyID4gaGwgKyAyXG4gICAgdGhlbiAoXG4gICAgICAoKiBzZWUgYWJvdmUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSByaWdodCBjYW5ub3QgYmUgYSBsZWFmICopXG4gICAgICBtYXRjaCByaWdodCB3aXRoXG4gICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBOb2RlXG4gICAgICAgICAgKHsgbGVmdCA9IHJpZ2h0X25vZGVfbGVmdFxuICAgICAgICAgICA7IGtleSA9IF9cbiAgICAgICAgICAgOyB2YWx1ZSA9IF9cbiAgICAgICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICAgICAgIDsgcmlnaHQgPSByaWdodF9ub2RlX3JpZ2h0XG4gICAgICAgICAgIH0gYXMgcmlnaHRfbm9kZSkgLT5cbiAgICAgICAgaWYgaGVpZ2h0IHJpZ2h0X25vZGVfcmlnaHQgPj0gaGVpZ2h0IHJpZ2h0X25vZGVfbGVmdFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByb290X25vZGUucmlnaHQgPC0gcmlnaHRfbm9kZV9sZWZ0O1xuICAgICAgICAgIHJpZ2h0X25vZGUubGVmdCA8LSB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHJpZ2h0O1xuICAgICAgICAgIHJpZ2h0KVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBzZWUgYWJvdmUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIGNhbm5vdCBiZSBhIGxlYWYgKilcbiAgICAgICAgICBtYXRjaCByaWdodF9ub2RlX2xlZnQgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBOb2RlXG4gICAgICAgICAgICAgICh7IGxlZnQgPSBybF9sZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gcmxfcmlnaHQgfSBhc1xuICAgICAgICAgICAgICAgcmxfbm9kZSkgLT5cbiAgICAgICAgICAgIHJpZ2h0X25vZGUubGVmdCA8LSBybF9yaWdodDtcbiAgICAgICAgICAgIHJvb3Rfbm9kZS5yaWdodCA8LSBybF9sZWZ0O1xuICAgICAgICAgICAgcmxfbm9kZS5sZWZ0IDwtIHRyZWU7XG4gICAgICAgICAgICBybF9ub2RlLnJpZ2h0IDwtIHJpZ2h0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCByaWdodDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgcmlnaHRfbm9kZV9sZWZ0O1xuICAgICAgICAgICAgcmlnaHRfbm9kZV9sZWZ0KSlcbiAgICBlbHNlIChcbiAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgIHRyZWUpXG47O1xuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAocmlnaHQgbm9kZSkgLSBoZWlnaHQgKGJhbGFuY2UgdHJlZSkpIDw9IDNcbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWFibGUgKilcblxuKCogQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHByZTogYWJzIChoZWlnaHQgKHJpZ2h0IG5vZGUpIC0gaGVpZ2h0IChiYWxhbmNlIHRyZWUpKSA8PSAzXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VhYmxlICopXG5sZXQgc2V0X2xlZnQgbm9kZSB0cmVlID1cbiAgbGV0IHRyZWUgPSBiYWxhbmNlIHRyZWUgaW5cbiAgbWF0Y2ggbm9kZSB3aXRoXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIHIpIC0+XG4gICAgaWYgcGh5c19lcXVhbCBsZWZ0IHRyZWUgdGhlbiAoKSBlbHNlIHIubGVmdCA8LSB0cmVlO1xuICAgIHVwZGF0ZV9oZWlnaHQgbm9kZVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAobGVmdCBub2RlKSAtIGhlaWdodCAoYmFsYW5jZSB0cmVlKSkgPD0gM1xuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlYWJsZSAqKVxubGV0IHNldF9yaWdodCBub2RlIHRyZWUgPVxuICBsZXQgdHJlZSA9IGJhbGFuY2UgdHJlZSBpblxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBOb2RlICh7IGxlZnQgPSBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgcikgLT5cbiAgICBpZiBwaHlzX2VxdWFsIHJpZ2h0IHRyZWUgdGhlbiAoKSBlbHNlIHIucmlnaHQgPC0gdHJlZTtcbiAgICB1cGRhdGVfaGVpZ2h0IG5vZGVcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxuKCogQHByZTogdCBpcyBiYWxhbmNlZC5cbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWQsIHdpdGggbmV3IG5vZGUgaW5zZXJ0ZWRcbiAgIEBwb3N0OiAhYWRkZWQgPSB0cnVlIGlmZiB0aGUgc2hhcGUgb2YgdGhlIGlucHV0IHRyZWUgY2hhbmdlZC4gICopXG5sZXQgYWRkID1cbiAgbGV0IHJlYyBhZGQgdCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICBhZGRlZCA6PSB0cnVlO1xuICAgICAgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gICAgfCBMZWFmICh7IGtleSA9IGsnOyB2YWx1ZSA9IF8gfSBhcyByKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsnIGsgaW5cbiAgICAgICgqIFRoaXMgY29tcGFyZSBpcyByZXZlcnNlZCBvbiBwdXJwb3NlLCB3ZSBhcmUgcHJldGVuZGluZ1xuICAgICAgICAgdGhhdCB0aGUgbGVhZiB3YXMganVzdCBpbnNlcnRlZCBpbnN0ZWFkIG9mIHRoZSBvdGhlciB3YXlcbiAgICAgICAgIHJvdW5kLCB0aGF0IHdheSB3ZSBvbmx5IGFsbG9jYXRlIG9uZSBub2RlLiAqKVxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRlZCA6PSBmYWxzZTtcbiAgICAgICAgaWYgcmVwbGFjZSB0aGVuIHIudmFsdWUgPC0gdjtcbiAgICAgICAgdClcbiAgICAgIGVsc2UgKFxuICAgICAgICBhZGRlZCA6PSB0cnVlO1xuICAgICAgICBpZiBjIDwgMFxuICAgICAgICB0aGVuIE5vZGUgeyBsZWZ0ID0gdDsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSAyOyByaWdodCA9IEVtcHR5IH1cbiAgICAgICAgZWxzZSBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IDI7IHJpZ2h0ID0gdCB9KVxuICAgIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgayBrJyBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRlZCA6PSBmYWxzZTtcbiAgICAgICAgaWYgcmVwbGFjZSB0aGVuIHIudmFsdWUgPC0gdilcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gc2V0X2xlZnQgdCAoYWRkIGxlZnQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGsgdilcbiAgICAgIGVsc2Ugc2V0X3JpZ2h0IHQgKGFkZCByaWdodCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2KTtcbiAgICAgIHRcbiAgaW5cbiAgZnVuIHQgfnJlcGxhY2UgfmNvbXBhcmUgfmFkZGVkIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQgdCA9IGFkZCB0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrZXkgZGF0YSBpblxuICAgIGlmICFhZGRlZCB0aGVuIGJhbGFuY2UgdCBlbHNlIHRcbjs7XG5cbmxldCByZWMgZmlyc3QgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgfCBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IFNvbWUgKGssIHYpXG4gIHwgTm9kZSB7IGxlZnQgPSBsOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IGZpcnN0IGxcbjs7XG5cbmxldCByZWMgbGFzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCA9IEVtcHR5IH0gLT4gU29tZSAoaywgdilcbiAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSByIH0gLT4gbGFzdCByXG47O1xuXG5cbmxldFtAaW5saW5lIGFsd2F5c10gcmVjIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y29tcGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBrXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMlxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmlmX2ZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5pZl9ub3RfZm91bmRcbiAgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGsgYXJnMSBhcmcyXG4gIHwgTGVhZiB7IGtleSA9IGsnOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmUgayBrJyA9IDBcbiAgICB0aGVuIGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6aycgfmRhdGE6diBhcmcxIGFyZzJcbiAgICBlbHNlIGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQgayBhcmcxIGFyZzJcbiAgfCBOb2RlIHsgbGVmdDsga2V5ID0gayc7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgIGxldCBjID0gY29tcGFyZSBrIGsnIGluXG4gICAgaWYgYyA9IDBcbiAgICB0aGVuIGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6aycgfmRhdGE6diBhcmcxIGFyZzJcbiAgICBlbHNlXG4gICAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICAgIChpZiBjIDwgMCB0aGVuIGxlZnQgZWxzZSByaWdodClcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAga1xuICAgICAgICBhcmcxXG4gICAgICAgIGFyZzJcbiAgICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICAgIH5pZl9mb3VuZFxuICAgICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbCA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5Ol8gfmRhdGEgKCkgKCkgPSBpZl9mb3VuZCBkYXRhIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSAoKSAoKSA9IGlmX25vdF9mb3VuZCBrZXkgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICAoKVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXkgfmRhdGEgKCkgKCkgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSAoKSAoKSA9IGlmX25vdF9mb3VuZCBrZXkgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICAoKVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwxID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSBhcmcgKCkgPSBpZl9mb3VuZCBkYXRhIGFyZyBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnICgpID0gaWZfbm90X2ZvdW5kIGtleSBhcmcgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwxID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnICgpID0gaWZfZm91bmQgfmtleSB+ZGF0YSBhcmcgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZyAoKSA9IGlmX25vdF9mb3VuZCBrZXkgYXJnIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwyID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSBhcmcxIGFyZzIgPSBpZl9mb3VuZCBkYXRhIGFyZzEgYXJnMiBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyID0gaWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICBiXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDIgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSBhcmcxIGFyZzIgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGFyZzEgYXJnMiBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyID0gaWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICBiXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kID1cbiAgbGV0IGlmX2ZvdW5kIHYgPSBTb21lIHYgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBfID0gTm9uZSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIC0+IGZpbmRfYW5kX2NhbGwgdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgbWVtID1cbiAgbGV0IGlmX2ZvdW5kIF8gPSB0cnVlIGluXG4gIGxldCBpZl9ub3RfZm91bmQgXyA9IGZhbHNlIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgLT4gZmluZF9hbmRfY2FsbCB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCByZW1vdmUgPVxuICBsZXQgcmVjIG1pbl9lbHQgdHJlZSA9XG4gICAgbWF0Y2ggdHJlZSB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiBfIC0+IHRyZWVcbiAgICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gdHJlZVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gbWluX2VsdCBsZWZ0XG4gIGluXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgdHJlZSA9XG4gICAgbWF0Y2ggdHJlZSB3aXRoXG4gICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IExlYWYgXyAtPiBFbXB0eSAoKiBUaGlzIG11c3QgYmUgdGhlIHJvb3QgKilcbiAgICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPiByaWdodFxuICAgIHwgTm9kZSB7IGxlZnQgPSBMZWFmIF87IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBFbXB0eSB9IC0+XG4gICAgICBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gTGVhZiBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIG5vZGUgLT5cbiAgICAgIHNldF9sZWZ0IG5vZGUgRW1wdHk7XG4gICAgICB0cmVlXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSBhcyBub2RlIC0+XG4gICAgICBzZXRfbGVmdCBub2RlIChyZW1vdmVfbWluX2VsdCBsZWZ0KTtcbiAgICAgIHRyZWVcbiAgaW5cbiAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPlxuICAgICAgbGV0IHRyZWUgPSBtaW5fZWx0IHQyIGluXG4gICAgICAobWF0Y2ggdHJlZSB3aXRoXG4gICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgICAgICAgbGV0IHQyID0gYmFsYW5jZSAocmVtb3ZlX21pbl9lbHQgdDIpIGluXG4gICAgICAgICBOb2RlXG4gICAgICAgICAgIHsgbGVmdCA9IHQxXG4gICAgICAgICAgIDsga2V5ID0ga1xuICAgICAgICAgICA7IHZhbHVlID0gdlxuICAgICAgICAgICA7IGhlaWdodCA9IEludC5tYXggKGhlaWdodCB0MSkgKGhlaWdodCB0MikgKyAxXG4gICAgICAgICAgIDsgcmlnaHQgPSB0MlxuICAgICAgICAgICB9XG4gICAgICAgfCBOb2RlIF8gYXMgbm9kZSAtPlxuICAgICAgICAgc2V0X3JpZ2h0IG5vZGUgKHJlbW92ZV9taW5fZWx0IHQyKTtcbiAgICAgICAgIHNldF9sZWZ0IG5vZGUgdDE7XG4gICAgICAgICBub2RlKVxuICBpblxuICBsZXQgcmVjIHJlbW92ZSB0IHJlbW92ZWQgY29tcGFyZSBrID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICByZW1vdmVkIDo9IGZhbHNlO1xuICAgICAgRW1wdHlcbiAgICB8IExlYWYgeyBrZXkgPSBrJzsgdmFsdWUgPSBfIH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrJyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZW1vdmVkIDo9IHRydWU7XG4gICAgICAgIEVtcHR5KVxuICAgICAgZWxzZSAoXG4gICAgICAgIHJlbW92ZWQgOj0gZmFsc2U7XG4gICAgICAgIHQpXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gayc7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsgaycgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgcmVtb3ZlZCA6PSB0cnVlO1xuICAgICAgICBtZXJnZSBsZWZ0IHJpZ2h0KVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHNldF9sZWZ0IHQgKHJlbW92ZSBsZWZ0IHJlbW92ZWQgY29tcGFyZSBrKTtcbiAgICAgICAgdClcbiAgICAgIGVsc2UgKFxuICAgICAgICBzZXRfcmlnaHQgdCAocmVtb3ZlIHJpZ2h0IHJlbW92ZWQgY29tcGFyZSBrKTtcbiAgICAgICAgdClcbiAgaW5cbiAgZnVuIHQgfnJlbW92ZWQgfmNvbXBhcmUgayAtPiBiYWxhbmNlIChyZW1vdmUgdCByZW1vdmVkIGNvbXBhcmUgaylcbjs7XG5cbmxldCByZWMgZm9sZCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gaW5pdFxuICB8IExlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YSBpbml0XG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gTGVhZiB7IGtleSA9IGxrZXk7IHZhbHVlID0gbGRhdGEgfVxuICAgICAgOyBrZXlcbiAgICAgIDsgdmFsdWUgPSBkYXRhXG4gICAgICA7IGhlaWdodCA9IF9cbiAgICAgIDsgcmlnaHQgPSBMZWFmIHsga2V5ID0gcmtleTsgdmFsdWUgPSByZGF0YSB9XG4gICAgICB9IC0+IGYgfmtleTpya2V5IH5kYXRhOnJkYXRhIChmIH5rZXkgfmRhdGEgKGYgfmtleTpsa2V5IH5kYXRhOmxkYXRhIGluaXQpKVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IExlYWYgeyBrZXkgPSBsa2V5OyB2YWx1ZSA9IGxkYXRhIH1cbiAgICAgIDsga2V5XG4gICAgICA7IHZhbHVlID0gZGF0YVxuICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICA7IHJpZ2h0ID0gRW1wdHlcbiAgICAgIH0gLT4gZiB+a2V5IH5kYXRhIChmIH5rZXk6bGtleSB+ZGF0YTpsZGF0YSBpbml0KVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IEVtcHR5XG4gICAgICA7IGtleVxuICAgICAgOyB2YWx1ZSA9IGRhdGFcbiAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgOyByaWdodCA9IExlYWYgeyBrZXkgPSBya2V5OyB2YWx1ZSA9IHJkYXRhIH1cbiAgICAgIH0gLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSBpbml0KVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdDsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0ID0gTGVhZiB7IGtleSA9IHJrZXk7IHZhbHVlID0gcmRhdGEgfSB9XG4gICAgLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSAoZm9sZCBsZWZ0IH5pbml0IH5mKSlcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBMZWFmIHsga2V5ID0gbGtleTsgdmFsdWUgPSBsZGF0YSB9OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgfVxuICAgIC0+IGZvbGQgcmlnaHQgfmluaXQ6KGYgfmtleSB+ZGF0YSAoZiB+a2V5OmxrZXkgfmRhdGE6bGRhdGEgaW5pdCkpIH5mXG4gIHwgTm9kZSB7IGxlZnQ7IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgZm9sZCByaWdodCB+aW5pdDooZiB+a2V5IH5kYXRhIChmb2xkIGxlZnQgfmluaXQgfmYpKSB+ZlxuOztcblxubGV0IHJlYyBpdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiAoKVxuICB8IExlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YVxuICB8IE5vZGUgeyBsZWZ0OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgIGl0ZXIgbGVmdCB+ZjtcbiAgICBmIH5rZXkgfmRhdGE7XG4gICAgaXRlciByaWdodCB+ZlxuOztcblxubGV0IHJlYyBtYXBpX2lucGxhY2UgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTGVhZiAoeyBrZXk7IHZhbHVlIH0gYXMgdCkgLT4gdC52YWx1ZSA8LSBmIH5rZXkgfmRhdGE6dmFsdWVcbiAgfCBOb2RlICh7IGxlZnQ7IGtleTsgdmFsdWU7IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgdCkgLT5cbiAgICBtYXBpX2lucGxhY2UgfmYgbGVmdDtcbiAgICB0LnZhbHVlIDwtIGYgfmtleSB+ZGF0YTp2YWx1ZTtcbiAgICBtYXBpX2lucGxhY2UgfmYgcmlnaHRcbjs7XG5cbmxldCBjaG9vc2VfZXhuID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbQXZsdHJlZS5jaG9vc2VfZXhuXSBvZiBlbXB0eSBoYXNodGJsXCIgW10pXG4gIHwgTGVhZiB7IGtleTsgdmFsdWU7IF8gfSB8IE5vZGUgeyBrZXk7IHZhbHVlOyBfIH0gLT4ga2V5LCB2YWx1ZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNodGJsX2ludGZcblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5LlNcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cbmxldCBoYXNoX3BhcmFtID0gSGFzaGFibGUuaGFzaF9wYXJhbVxubGV0IGhhc2ggPSBIYXNoYWJsZS5oYXNoXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxudHlwZSAoJ2ssICd2KSB0ID1cbiAgeyBtdXRhYmxlIHRhYmxlIDogKCdrLCAndikgQXZsdHJlZS50IGFycmF5XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBncm93dGhfYWxsb3dlZCA6IGJvb2xcbiAgOyBoYXNoYWJsZSA6ICdrIEhhc2hhYmxlLnRcbiAgOyBtdXRhYmxlIG11dGF0aW9uX2FsbG93ZWQgOiBib29sICgqIFNldCBkdXJpbmcgYWxsIGl0ZXJhdGlvbiBvcGVyYXRpb25zICopXG4gIH1cblxudHlwZSAnYSBrZXkgPSAnYVxuXG5sZXQgc2V4cF9vZl9rZXkgdCA9IHQuaGFzaGFibGUuSGFzaGFibGUuc2V4cF9vZl90XG5sZXQgY29tcGFyZV9rZXkgdCA9IHQuaGFzaGFibGUuSGFzaGFibGUuY29tcGFyZVxuXG5sZXQgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdCA9XG4gIGlmIG5vdCB0Lm11dGF0aW9uX2FsbG93ZWQgdGhlbiBmYWlsd2l0aCBcIkhhc2h0Ymw6IG11dGF0aW9uIG5vdCBhbGxvd2VkIGR1cmluZyBpdGVyYXRpb25cIlxuOztcblxubGV0IHdpdGhvdXRfbXV0YXRpbmcgdCBmID1cbiAgaWYgdC5tdXRhdGlvbl9hbGxvd2VkXG4gIHRoZW4gKFxuICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBmYWxzZTtcbiAgICBtYXRjaCBmICgpIHdpdGhcbiAgICB8IHggLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSB0cnVlO1xuICAgICAgeFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIHRydWU7XG4gICAgICByYWlzZSBleG4pXG4gIGVsc2UgZiAoKVxuOztcblxuKCoqIEludGVybmFsbHkgdXNlIGEgbWF4aW11bSBzaXplIHRoYXQgaXMgYSBwb3dlciBvZiAyLiBSZXZlcnNlcyB0aGUgYWJvdmUgdG8gZmluZCB0aGVcbiAgICBmbG9vciBwb3dlciBvZiAyIGJlbG93IHRoZSBzeXN0ZW0gbWF4IGFycmF5IGxlbmd0aCAqKVxubGV0IG1heF90YWJsZV9sZW5ndGggPSBJbnQuZmxvb3JfcG93MiBBcnJheS5tYXhfbGVuZ3RoXG5cbigqIFRoZSBkZWZhdWx0IHNpemUgaXMgY2hvc2VuIHRvIGJlIDAgKGFzIG9wcG9zZWQgdG8gMTI4IGFzIGl0IHdhcyBiZWZvcmUpIGJlY2F1c2U6XG4gICAtIDEyOCBjYW4gY3JlYXRlIHN1YnN0YW50aWFsIG1lbW9yeSBvdmVyaGVhZCAoeDEwKSB3aGVuIGNyZWF0aW5nIG1hbnkgdGFibGVzLCBtb3N0XG4gICAgIG9mIHdoaWNoIGFyZSBub3QgYmlnIChzYXksIGlmIHlvdSBoYXZlIGEgaGFzaHRibCBvZiBoYXNodGJsKS4gQW5kIG1lbW9yeSBvdmVyaGVhZCBpc1xuICAgICBub3QgdGhhdCBlYXN5IHRvIHByb2ZpbGUuXG4gICAtIGlmIGEgaGFzaHRibCBpcyBnb2luZyB0byBncm93LCBpdCdzIG5vdCBjbGVhciB3aHkgMTI4IGlzIG1hcmtlZGx5IGJldHRlciB0aGFuIG90aGVyXG4gICAgIHNpemVzIChpZiB5b3UgZ29pbmcgdG8gc3RpY2sgMTAwMCBlbGVtZW50cywgeW91J3JlIGdvaW5nIHRvIGdyb3cgdGhlIGhhc2h0YWJsZSBvbmNlXG4gICAgIG9yIHR3aWNlIGFueXdheSlcbiAgIC0gaW4gb3RoZXIgbGFuZ3VhZ2VzIChsaWtlIHJ1c3QsIHB5dGhvbiwgYW5kIGFwcGFyZW50bHkgZ28pLCB0aGUgZGVmYXVsdCBpcyBhbHNvIGFcbiAgICAgc21hbGwgc2l6ZS4gKilcbmxldCBjcmVhdGUgPyhncm93dGhfYWxsb3dlZCA9IHRydWUpID8oc2l6ZSA9IDApIH5oYXNoYWJsZSAoKSA9XG4gIGxldCBzaXplID0gSW50Lm1pbiAoSW50Lm1heCAxIHNpemUpIG1heF90YWJsZV9sZW5ndGggaW5cbiAgbGV0IHNpemUgPSBJbnQuY2VpbF9wb3cyIHNpemUgaW5cbiAgeyB0YWJsZSA9IEFycmF5LmNyZWF0ZSB+bGVuOnNpemUgQXZsdHJlZS5lbXB0eVxuICA7IGxlbmd0aCA9IDBcbiAgOyBncm93dGhfYWxsb3dlZFxuICA7IGhhc2hhYmxlXG4gIDsgbXV0YXRpb25fYWxsb3dlZCA9IHRydWVcbiAgfVxuOztcblxuKCoqIFN1cHBsZW1lbnRhbCBoYXNoLiBUaGlzIG1heSBub3QgYmUgbmVjZXNzYXJ5LCBpdCBpcyBpbnRlbmRlZCBhcyBhIGRlZmVuc2UgYWdhaW5zdCBwb29yXG4gICAgaGFzaCBmdW5jdGlvbnMsIGZvciB3aGljaCB0aGUgcG93ZXIgb2YgMiBzaXplZCB0YWJsZSB3aWxsIGJlIGVzcGVjaWFsbHkgc2Vuc2l0aXZlLlxuICAgIFdpdGggc29tZSB0ZXN0aW5nIHdlIG1heSBjaG9vc2UgdG8gYWRkIGl0LCBidXQgdGhpcyB0YWJsZSBpcyBkZXNpZ25lZCB0byBiZSByb2J1c3QgdG9cbiAgICBjb2xsaXNpb25zLCBhbmQgaW4gbW9zdCBvZiBteSB0ZXN0aW5nIHRoaXMgZGVncmFkZXMgcGVyZm9ybWFuY2UuICopXG5sZXQgX3N1cHBsZW1lbnRhbF9oYXNoIGggPVxuICBsZXQgaCA9IGggbHhvciAoKGggbHNyIDIwKSBseG9yIChoIGxzciAxMikpIGluXG4gIGggbHhvciAoaCBsc3IgNykgbHhvciAoaCBsc3IgNClcbjs7XG5cbmxldCBzbG90IHQga2V5ID1cbiAgbGV0IGhhc2ggPSB0Lmhhc2hhYmxlLkhhc2hhYmxlLmhhc2gga2V5IGluXG4gICgqIHRoaXMgaXMgYWx3YXlzIG5vbi1uZWdhdGl2ZSBiZWNhdXNlIHdlIGRvIFtsYW5kXSB3aXRoIG5vbi1uZWdhdGl2ZSBudW1iZXIgKilcbiAgaGFzaCBsYW5kIChBcnJheS5sZW5ndGggdC50YWJsZSAtIDEpXG47O1xuXG5sZXQgYWRkX3dvcmtlciB0IH5yZXBsYWNlIH5rZXkgfmRhdGEgPVxuICBsZXQgaSA9IHNsb3QgdCBrZXkgaW5cbiAgbGV0IHJvb3QgPSB0LnRhYmxlLihpKSBpblxuICBsZXQgYWRkZWQgPSAgKHJlZiBmYWxzZSkgaW5cbiAgbGV0IG5ld19yb290ID1cbiAgICAoKiBUaGUgYXZsIHRyZWUgbWlnaHQgcmVwbGFjZSB0aGUgdmFsdWUgW3JlcGxhY2U9dHJ1ZV0gb3IgZG8gbm90aGluZyBbcmVwbGFjZT1mYWxzZV1cbiAgICAgICB0byB0aGUgZW50cnksIGluIHRoYXQgY2FzZSB0aGUgdGFibGUgZGlkIG5vdCBnZXQgYmlnZ2VyLCBzbyB3ZSBzaG91bGQgbm90XG4gICAgICAgaW5jcmVtZW50IGxlbmd0aCwgd2UgcGFzcyBpbiB0aGUgYm9vbCByZWYgdC5hZGRlZCBzbyB0aGF0IGl0IGNhbiB0ZWxsIHVzIHdoZXRoZXJcbiAgICAgICBpdCBhZGRlZCBvciByZXBsYWNlZC4gV2UgZG8gaXQgdGhpcyB3YXkgdG8gYXZvaWQgZXh0cmEgYWxsb2NhdGlvbi4gU2luY2UgdGhlIGJvb2xcbiAgICAgICBpcyBhbiBpbW1lZGlhdGUgaXQgZG9lcyBub3QgZ28gdGhyb3VnaCB0aGUgd3JpdGUgYmFycmllci4gKilcbiAgICBBdmx0cmVlLmFkZCB+cmVwbGFjZSByb290IH5jb21wYXJlOihjb21wYXJlX2tleSB0KSB+YWRkZWQgfmtleSB+ZGF0YVxuICBpblxuICBpZiAhYWRkZWQgdGhlbiB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gICgqIFRoaXMgbGl0dGxlIG9wdGltaXphdGlvbiBzYXZlcyBhIGNhbWxfbW9kaWZ5IHdoZW4gdGhlIHRyZWVcbiAgICAgaGFzbid0IGJlZW4gcmViYWxhbmNlZC4gKilcbiAgaWYgbm90IChwaHlzX2VxdWFsIG5ld19yb290IHJvb3QpIHRoZW4gdC50YWJsZS4oaSkgPC0gbmV3X3Jvb3Q7XG4gICFhZGRlZFxuOztcblxubGV0IG1heWJlX3Jlc2l6ZV90YWJsZSB0ID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gIGxldCBzaG91bGRfZ3JvdyA9IHQubGVuZ3RoID4gbGVuIGluXG4gIGlmIHNob3VsZF9ncm93ICYmIHQuZ3Jvd3RoX2FsbG93ZWRcbiAgdGhlbiAoXG4gICAgbGV0IG5ld19hcnJheV9sZW5ndGggPSBJbnQubWluIChsZW4gKiAyKSBtYXhfdGFibGVfbGVuZ3RoIGluXG4gICAgaWYgbmV3X2FycmF5X2xlbmd0aCA+IGxlblxuICAgIHRoZW4gKFxuICAgICAgbGV0IG5ld190YWJsZSA9IEFycmF5LmNyZWF0ZSB+bGVuOm5ld19hcnJheV9sZW5ndGggQXZsdHJlZS5lbXB0eSBpblxuICAgICAgbGV0IG9sZF90YWJsZSA9IHQudGFibGUgaW5cbiAgICAgIHQudGFibGUgPC0gbmV3X3RhYmxlO1xuICAgICAgdC5sZW5ndGggPC0gMDtcbiAgICAgIGxldCBmIH5rZXkgfmRhdGEgPSBpZ25vcmUgKGFkZF93b3JrZXIgfnJlcGxhY2U6dHJ1ZSB0IH5rZXkgfmRhdGEgOiBib29sKSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvbGRfdGFibGUgLSAxIGRvXG4gICAgICAgIEF2bHRyZWUuaXRlciBvbGRfdGFibGUuKGkpIH5mXG4gICAgICBkb25lKSlcbjs7XG5cbmxldCBzZXQgdCB+a2V5IH5kYXRhID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgaWdub3JlIChhZGRfd29ya2VyIH5yZXBsYWNlOnRydWUgdCB+a2V5IH5kYXRhIDogYm9vbCk7XG4gIG1heWJlX3Jlc2l6ZV90YWJsZSB0XG47O1xuXG5sZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIGxldCBhZGRlZCA9IGFkZF93b3JrZXIgfnJlcGxhY2U6ZmFsc2UgdCB+a2V5IH5kYXRhIGluXG4gIGlmIGFkZGVkXG4gIHRoZW4gKFxuICAgIG1heWJlX3Jlc2l6ZV90YWJsZSB0O1xuICAgIGBPaylcbiAgZWxzZSBgRHVwbGljYXRlXG47O1xuXG5sZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGhcbiAgfCBgT2sgLT4gKClcbiAgfCBgRHVwbGljYXRlIC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gc2V4cF9vZl9rZXkgdCBpblxuICAgIGxldCBlcnJvciA9IEVycm9yLmNyZWF0ZSBcIkhhc2h0YmwuYWRkX2V4biBnb3Qga2V5IGFscmVhZHkgcHJlc2VudFwiIGtleSBzZXhwX29mX2tleSBpblxuICAgIEVycm9yLnJhaXNlIGVycm9yXG47O1xuXG5sZXQgY2xlYXIgdCA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICB0LnRhYmxlLihpKSA8LSBBdmx0cmVlLmVtcHR5XG4gIGRvbmU7XG4gIHQubGVuZ3RoIDwtIDBcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsIHQga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgKCogd2l0aCBhIGdvb2QgaGFzaCBmdW5jdGlvbiB0aGVzZSBmaXJzdCB0d28gY2FzZXMgd2lsbCBiZSB0aGUgb3ZlcndoZWxtaW5nIG1ham9yaXR5LFxuICAgICBhbmQgQXZsdHJlZS5maW5kIGlzIHJlY3Vyc2l2ZSwgc28gaXQgY2FuJ3QgYmUgaW5saW5lZCwgc28gZG9pbmcgdGhpcyBhdm9pZHMgYVxuICAgICBmdW5jdGlvbiBjYWxsIGluIG1vc3QgY2FzZXMuICopXG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXlcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgdiBlbHNlIGlmX25vdF9mb3VuZCBrZXlcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kX2FuZF9jYWxsIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwxIHQga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIHYgYSBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRfYW5kX2NhbGwxIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwyIHQga2V5IH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgdiBhIGIgZWxzZSBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRfYW5kX2NhbGwyIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsIHQga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgKCogd2l0aCBhIGdvb2QgaGFzaCBmdW5jdGlvbiB0aGVzZSBmaXJzdCB0d28gY2FzZXMgd2lsbCBiZSB0aGUgb3ZlcndoZWxtaW5nIG1ham9yaXR5LFxuICAgICBhbmQgQXZsdHJlZS5maW5kIGlzIHJlY3Vyc2l2ZSwgc28gaXQgY2FuJ3QgYmUgaW5saW5lZCwgc28gZG9pbmcgdGhpcyBhdm9pZHMgYVxuICAgICBmdW5jdGlvbiBjYWxsIGluIG1vc3QgY2FzZXMuICopXG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXlcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgfmtleTprIH5kYXRhOnYgZWxzZSBpZl9ub3RfZm91bmQga2V5XG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZGlfYW5kX2NhbGwgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwxIHQga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIH5rZXk6ayB+ZGF0YTp2IGEgZWxzZSBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kaV9hbmRfY2FsbDEgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwyIHQga2V5IH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgfmtleTprIH5kYXRhOnYgYSBiIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kaV9hbmRfY2FsbDJcbiAgICAgIHRyZWVcbiAgICAgIH5jb21wYXJlOihjb21wYXJlX2tleSB0KVxuICAgICAga2V5XG4gICAgICB+YVxuICAgICAgfmJcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmQgPVxuICBsZXQgaWZfZm91bmQgdiA9IFNvbWUgdiBpblxuICBsZXQgaWZfbm90X2ZvdW5kIF8gPSBOb25lIGluXG4gIGZ1biB0IGtleSAtPiBmaW5kX2FuZF9jYWxsIHQga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgbWVtIHQga2V5ID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gZmFsc2VcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IF8gfSAtPiBjb21wYXJlX2tleSB0IGsga2V5ID0gMFxuICB8IHRyZWUgLT4gQXZsdHJlZS5tZW0gdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5XG47O1xuXG5sZXQgcmVtb3ZlIHQga2V5ID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgbGV0IGkgPSBzbG90IHQga2V5IGluXG4gIGxldCByb290ID0gdC50YWJsZS4oaSkgaW5cbiAgbGV0IGFkZGVkX29yX3JlbW92ZWQgPSAgKHJlZiBmYWxzZSkgaW5cbiAgbGV0IG5ld19yb290ID1cbiAgICBBdmx0cmVlLnJlbW92ZSByb290IH5yZW1vdmVkOmFkZGVkX29yX3JlbW92ZWQgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleVxuICBpblxuICBpZiBub3QgKHBoeXNfZXF1YWwgcm9vdCBuZXdfcm9vdCkgdGhlbiB0LnRhYmxlLihpKSA8LSBuZXdfcm9vdDtcbiAgaWYgIWFkZGVkX29yX3JlbW92ZWQgdGhlbiB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDFcbjs7XG5cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgaWYgbGVuZ3RoIHQgPSAwXG4gIHRoZW4gaW5pdFxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gICAgbGV0IG0gPSB0Lm11dGF0aW9uX2FsbG93ZWQgaW5cbiAgICBtYXRjaFxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoIEFycmF5LnVuc2FmZV9nZXQgdC50YWJsZSBpIHdpdGhcbiAgICAgICAgfCBBdmx0cmVlLkVtcHR5IC0+ICgpXG4gICAgICAgIHwgQXZsdHJlZS5MZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBhY2MgOj0gZiB+a2V5IH5kYXRhICFhY2NcbiAgICAgICAgfCBidWNrZXQgLT4gYWNjIDo9IEF2bHRyZWUuZm9sZCBidWNrZXQgfmluaXQ6IWFjYyB+ZlxuICAgICAgZG9uZVxuICAgIHdpdGhcbiAgICB8ICgpIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbTtcbiAgICAgICFhY2NcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgcmFpc2UgZXhuKVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBpZiB0Lmxlbmd0aCA9IDBcbiAgdGhlbiAoKVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IG0gPSB0Lm11dGF0aW9uX2FsbG93ZWQgaW5cbiAgICBtYXRjaFxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoIEFycmF5LnVuc2FmZV9nZXQgdC50YWJsZSBpIHdpdGhcbiAgICAgICAgfCBBdmx0cmVlLkVtcHR5IC0+ICgpXG4gICAgICAgIHwgQXZsdHJlZS5MZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBmIH5rZXkgfmRhdGFcbiAgICAgICAgfCBidWNrZXQgLT4gQXZsdHJlZS5pdGVyIGJ1Y2tldCB+ZlxuICAgICAgZG9uZVxuICAgIHdpdGhcbiAgICB8ICgpIC0+IHQubXV0YXRpb25fYWxsb3dlZCA8LSBtXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbTtcbiAgICAgIHJhaXNlIGV4bilcbjs7XG5cbmxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxubGV0IGl0ZXJfa2V5cyB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSkgW0Bub250YWlsXVxuXG5sZXQgcmVjIGNob29zZV9ub25lbXB0eSB0YWJsZSBpID1cbiAgbGV0IGF2bHRyZWUgPSBBcnJheS51bnNhZmVfZ2V0IHRhYmxlIGkgaW5cbiAgaWYgQXZsdHJlZS5pc19lbXB0eSBhdmx0cmVlXG4gIHRoZW4gY2hvb3NlX25vbmVtcHR5IHRhYmxlICgoaSArIDEpIGxhbmQgKEFycmF5Lmxlbmd0aCB0YWJsZSAtIDEpKVxuICBlbHNlIEF2bHRyZWUuY2hvb3NlX2V4biBhdmx0cmVlXG47O1xuXG5sZXQgY2hvb3NlX2V4biB0ID1cbiAgaWYgdC5sZW5ndGggPSAwIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0hhc2h0YmwuY2hvb3NlX2V4bl0gb2YgZW1wdHkgaGFzaHRibFwiIFtdKTtcbiAgY2hvb3NlX25vbmVtcHR5IHQudGFibGUgMFxuOztcblxubGV0IGNob29zZSB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChjaG9vc2Vfbm9uZW1wdHkgdC50YWJsZSAwKVxuXG5sZXQgY2hvb3NlX3JhbmRvbWx5X25vbmVtcHR5IH5yYW5kb21fc3RhdGUgdCA9XG4gIGxldCBzdGFydF9pZHggPSBSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAoQXJyYXkubGVuZ3RoIHQudGFibGUpIGluXG4gIGNob29zZV9ub25lbXB0eSB0LnRhYmxlIHN0YXJ0X2lkeFxuOztcblxubGV0IGNob29zZV9yYW5kb21seSA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0ID1cbiAgaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChjaG9vc2VfcmFuZG9tbHlfbm9uZW1wdHkgfnJhbmRvbV9zdGF0ZSB0KVxuOztcblxubGV0IGNob29zZV9yYW5kb21seV9leG4gPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltIYXNodGJsLmNob29zZV9yYW5kb21seV9leG5dIG9mIGVtcHR5IGhhc2h0YmxcIiBbXSk7XG4gIGNob29zZV9yYW5kb21seV9ub25lbXB0eSB+cmFuZG9tX3N0YXRlIHRcbjs7XG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2tleSBpbnZhcmlhbnRfZGF0YSB0ID1cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgIEF2bHRyZWUuaW52YXJpYW50IHQudGFibGUuKGkpIH5jb21wYXJlOihjb21wYXJlX2tleSB0KVxuICBkb25lO1xuICBsZXQgcmVhbF9sZW4gPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBpIC0+XG4gICAgICBpbnZhcmlhbnRfa2V5IGtleTtcbiAgICAgIGludmFyaWFudF9kYXRhIGRhdGE7XG4gICAgICBpICsgMSlcbiAgaW5cbiAgYXNzZXJ0IChyZWFsX2xlbiA9IHQubGVuZ3RoKVxuOztcblxubGV0IGZpbmRfZXhuID1cbiAgbGV0IGlmX2ZvdW5kIHYgXyA9IHYgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBrIHQgPVxuICAgIHJhaXNlXG4gICAgICAoTm90X2ZvdW5kX3MgKExpc3QgWyBBdG9tIFwiSGFzaHRibC5maW5kX2V4bjogbm90IGZvdW5kXCI7IHQuaGFzaGFibGUuc2V4cF9vZl90IGsgXSkpXG4gIGluXG4gIGxldCBmaW5kX2V4biB0IGtleSA9IGZpbmRfYW5kX2NhbGwxIHQga2V5IH5hOnQgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX2V4blxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgIGZhbHNlKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IG5vdCAoZXhpc3RzaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBub3QgKGYgfmtleSB+ZGF0YSkpKVxubGV0IGZvcl9hbGwgdCB+ZiA9IG5vdCAoZXhpc3RzaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IG5vdCAoZiBkYXRhKSkpXG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYykgW0Bub250YWlsXG4gIF1cbjs7XG5cbmxldCBjb3VudCB0IH5mID1cbiAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgYWNjIC0+IGlmIGYgZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgbmV3X3QgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBzZXQgbmV3X3QgfmtleSB+ZGF0YTooZiB+a2V5IH5kYXRhKSk7XG4gIG5ld190XG47O1xuXG5sZXQgbWFwIHQgfmYgPSBtYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5sZXQgY29weSB0ID0gbWFwIHQgfmY6Rm4uaWRcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgbmV3X3QgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgfCBTb21lIG5ld19kYXRhIC0+IHNldCBuZXdfdCB+a2V5IH5kYXRhOm5ld19kYXRhXG4gICAgfCBOb25lIC0+ICgpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgZmlsdGVyX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxubGV0IGZpbHRlcl9rZXlzIHQgfmYgPSBmaWx0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOl8gLT4gZiBrZXkpIFtAbm9udGFpbF1cblxubGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICBsZXQgdDAgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBsZXQgdDEgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIG1hdGNoIChmIH5rZXkgfmRhdGEgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgfCBGaXJzdCBuZXdfZGF0YSAtPiBzZXQgdDAgfmtleSB+ZGF0YTpuZXdfZGF0YVxuICAgIHwgU2Vjb25kIG5ld19kYXRhIC0+IHNldCB0MSB+a2V5IH5kYXRhOm5ld19kYXRhKTtcbiAgdDAsIHQxXG47O1xuXG5sZXQgcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxubGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gIHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIEZpcnN0IGRhdGEgZWxzZSBTZWNvbmQgZGF0YSkgXG4gIFtAbm9udGFpbF1cbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxuXG5sZXQgZmluZF9vcl9hZGQgdCBpZCB+ZGVmYXVsdDooZGVmYXVsdCBbQGxvY2FsXSkgPVxuICBmaW5kX2FuZF9jYWxsXG4gICAgdFxuICAgIGlkXG4gICAgfmlmX2ZvdW5kOihmdW4gZGF0YSAtPiBkYXRhKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biBrZXkgLT5cbiAgICAgIGxldCBkZWZhdWx0ID0gZGVmYXVsdCAoKSBpblxuICAgICAgc2V0IHQgfmtleSB+ZGF0YTpkZWZhdWx0O1xuICAgICAgZGVmYXVsdCkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRpX29yX2FkZCB0IGlkIH5kZWZhdWx0ID1cbiAgZmluZF9hbmRfY2FsbFxuICAgIHRcbiAgICBpZFxuICAgIH5pZl9mb3VuZDooZnVuIGRhdGEgLT4gZGF0YSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4ga2V5IC0+XG4gICAgICBsZXQgZGVmYXVsdCA9IGRlZmF1bHQga2V5IGluXG4gICAgICBzZXQgdCB+a2V5IH5kYXRhOmRlZmF1bHQ7XG4gICAgICBkZWZhdWx0KSBbQG5vbnRhaWxdXG47O1xuXG4oKiBTb21lIGhhc2h0YmwgaW1wbGVtZW50YXRpb25zIG1heSBiZSBhYmxlIHRvIHBlcmZvcm0gdGhpcyBtb3JlIGVmZmljaWVudGx5IHRoYW4gdHdvXG4gICBzZXBhcmF0ZSBsb29rdXBzICopXG5sZXQgZmluZF9hbmRfcmVtb3ZlIHQgaWQgPVxuICBsZXQgcmVzdWx0ID0gZmluZCB0IGlkIGluXG4gIGlmIE9wdGlvbi5pc19zb21lIHJlc3VsdCB0aGVuIHJlbW92ZSB0IGlkO1xuICByZXN1bHRcbjs7XG5cblxubGV0IGNoYW5nZSB0IGlkIH5mID1cbiAgbWF0Y2ggZiAoZmluZCB0IGlkKSB3aXRoXG4gIHwgTm9uZSAtPiByZW1vdmUgdCBpZFxuICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5OmlkIH5kYXRhXG47O1xuXG5sZXQgdXBkYXRlX2FuZF9yZXR1cm4gdCBpZCB+ZiA9XG4gIGxldCBkYXRhID0gZiAoZmluZCB0IGlkKSBpblxuICBzZXQgdCB+a2V5OmlkIH5kYXRhO1xuICBkYXRhXG47O1xuXG5sZXQgdXBkYXRlIHQgaWQgfmYgPSBpZ25vcmUgKHVwZGF0ZV9hbmRfcmV0dXJuIHQgaWQgfmYgOiBfKVxuXG5sZXQgaW5jcl9ieSB+cmVtb3ZlX2lmX3plcm8gdCBrZXkgYnkgPVxuICBpZiByZW1vdmVfaWZfemVyb1xuICB0aGVuXG4gICAgY2hhbmdlIHQga2V5IH5mOihmdW4gb3B0IC0+XG4gICAgICBtYXRjaCBieSArIE9wdGlvbi52YWx1ZSBvcHQgfmRlZmF1bHQ6MCB3aXRoXG4gICAgICB8IDAgLT4gTm9uZVxuICAgICAgfCBuIC0+IFNvbWUgbilcbiAgZWxzZVxuICAgIHVwZGF0ZSB0IGtleSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBieVxuICAgICAgfCBTb21lIGkgLT4gYnkgKyBpKVxuOztcblxubGV0IGluY3IgPyhieSA9IDEpID8ocmVtb3ZlX2lmX3plcm8gPSBmYWxzZSkgdCBrZXkgPSBpbmNyX2J5IH5yZW1vdmVfaWZfemVybyB0IGtleSBieVxubGV0IGRlY3IgPyhieSA9IDEpID8ocmVtb3ZlX2lmX3plcm8gPSBmYWxzZSkgdCBrZXkgPSBpbmNyX2J5IH5yZW1vdmVfaWZfemVybyB0IGtleSAoLWJ5KVxuXG5sZXQgYWRkX211bHRpIHQgfmtleSB+ZGF0YSA9XG4gIHVwZGF0ZSB0IGtleSB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gWyBkYXRhIF1cbiAgICB8IFNvbWUgbCAtPiBkYXRhIDo6IGwpXG47O1xuXG5sZXQgcmVtb3ZlX211bHRpIHQga2V5ID1cbiAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgW10gfCBTb21lIFsgXyBdIC0+IHJlbW92ZSB0IGtleVxuICB8IFNvbWUgKF8gOjogdGwpIC0+IHNldCB0IH5rZXkgfmRhdGE6dGxcbjs7XG5cbmxldCBmaW5kX211bHRpIHQga2V5ID1cbiAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gIHwgTm9uZSAtPiBbXVxuICB8IFNvbWUgbCAtPiBsXG47O1xuXG5sZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSByb3dzID1cbiAgbGV0IHNpemUgPVxuICAgIG1hdGNoIHNpemUgd2l0aFxuICAgIHwgU29tZSBzIC0+IHNcbiAgICB8IE5vbmUgLT4gTGlzdC5sZW5ndGggcm93c1xuICBpblxuICBsZXQgcmVzID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgfnNpemUgKCkgaW5cbiAgbGV0IGR1cGVzID0gcmVmIFtdIGluXG4gIExpc3QuaXRlciByb3dzIH5mOihmdW4gciAtPlxuICAgIGxldCBrZXkgPSBnZXRfa2V5IHIgaW5cbiAgICBsZXQgZGF0YSA9IGdldF9kYXRhIHIgaW5cbiAgICBpZiBtZW0gcmVzIGtleSB0aGVuIGR1cGVzIDo9IGtleSA6OiAhZHVwZXMgZWxzZSBzZXQgcmVzIH5rZXkgfmRhdGEpO1xuICBtYXRjaCAhZHVwZXMgd2l0aFxuICB8IFtdIC0+IGBPayByZXNcbiAgfCBrZXlzIC0+IGBEdXBsaWNhdGVfa2V5cyAoTGlzdC5kZWR1cF9hbmRfc29ydCB+Y29tcGFyZTpoYXNoYWJsZS5IYXNoYWJsZS5jb21wYXJlIGtleXMpXG47O1xuXG5sZXQgY3JlYXRlX21hcHBlZF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSByb3dzID1cbiAgbGV0IHNpemUgPVxuICAgIG1hdGNoIHNpemUgd2l0aFxuICAgIHwgU29tZSBzIC0+IHNcbiAgICB8IE5vbmUgLT4gTGlzdC5sZW5ndGggcm93c1xuICBpblxuICBsZXQgcmVzID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCB+c2l6ZSB+aGFzaGFibGUgKCkgaW5cbiAgTGlzdC5pdGVyIHJvd3MgfmY6KGZ1biByIC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgciBpblxuICAgIGxldCBkYXRhID0gZ2V0X2RhdGEgciBpblxuICAgIGFkZF9tdWx0aSByZXMgfmtleSB+ZGF0YSk7XG4gIHJlc1xuOztcblxubGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgbWF0Y2ggY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5OmZzdCB+Z2V0X2RhdGE6c25kIGxzdCB3aXRoXG4gIHwgYE9rIHQgLT4gYE9rIHRcbiAgfCBgRHVwbGljYXRlX2tleXMgayAtPiBgRHVwbGljYXRlX2tleSAoTGlzdC5oZF9leG4gaylcbjs7XG5cbmxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXk6ZnN0IH5nZXRfZGF0YTpzbmQgbHN0XG47O1xuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCB3aXRoXG4gIHwgYE9rIHYgLT4gUmVzdWx0Lk9rIHZcbiAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBoYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3QgaW5cbiAgICBPcl9lcnJvci5lcnJvciBcIkhhc2h0Ymwub2ZfYWxpc3RfZXhuOiBkdXBsaWNhdGUga2V5XCIga2V5IHNleHBfb2Zfa2V5XG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgbWF0Y2ggb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3Qgd2l0aFxuICB8IFJlc3VsdC5PayB2IC0+IHZcbiAgfCBSZXN1bHQuRXJyb3IgZSAtPiBFcnJvci5yYWlzZSBlXG47O1xuXG5sZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBjcmVhdGVfbWFwcGVkX211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXk6ZnN0IH5nZXRfZGF0YTpzbmQgbHN0XG47O1xuXG5sZXQgdG9fYWxpc3QgdCA9IGZvbGQgfmY6KGZ1biB+a2V5IH5kYXRhIGxpc3QgLT4gKGtleSwgZGF0YSkgOjogbGlzdCkgfmluaXQ6W10gdFxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSB0ID1cbiAgdFxuICB8PiB0b19hbGlzdFxuICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6KGZ1biAoazEsIF8pIChrMiwgXykgLT4gdC5oYXNoYWJsZS5jb21wYXJlIGsxIGsyKVxuICB8PiBzZXhwX29mX2xpc3QgKHNleHBfb2ZfcGFpciBzZXhwX29mX2tleSBzZXhwX29mX2RhdGEpXG47O1xuXG5sZXQgdF9vZl9zZXhwIH5oYXNoYWJsZSBrX29mX3NleHAgZF9vZl9zZXhwIHNleHAgPVxuICBsZXQgYWxpc3QgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBrX29mX3NleHAgZF9vZl9zZXhwKSBzZXhwIGluXG4gIG1hdGNoIG9mX2FsaXN0IH5oYXNoYWJsZSBhbGlzdCB+c2l6ZTooTGlzdC5sZW5ndGggYWxpc3QpIHdpdGhcbiAgfCBgT2sgdiAtPiB2XG4gIHwgYER1cGxpY2F0ZV9rZXkgayAtPlxuICAgICgqIGZpbmQgdGhlIHNleHAgb2YgYSBkdXBsaWNhdGUga2V5LCBzbyB0aGUgZXJyb3IgaXMgbmFycm93ZWQgdG8gYSBrZXkgYW5kIG5vdFxuICAgICAgIHRoZSB3aG9sZSBtYXAgKilcbiAgICBsZXQgYWxpc3Rfc2V4cHMgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBGbi5pZCBGbi5pZCkgc2V4cCBpblxuICAgIGxldCBmb3VuZF9maXJzdF9rID0gcmVmIGZhbHNlIGluXG4gICAgTGlzdC5pdGVyMl9leG4gYWxpc3QgYWxpc3Rfc2V4cHMgfmY6KGZ1biAoazIsIF8pIChrMl9zZXhwLCBfKSAtPlxuICAgICAgaWYgaGFzaGFibGUuY29tcGFyZSBrIGsyID0gMFxuICAgICAgdGhlblxuICAgICAgICBpZiAhZm91bmRfZmlyc3Rfa1xuICAgICAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJIYXNodGJsLnRfb2Zfc2V4cDogZHVwbGljYXRlIGtleVwiIGsyX3NleHBcbiAgICAgICAgZWxzZSBmb3VuZF9maXJzdF9rIDo9IHRydWUpO1xuICAgIGFzc2VydCBmYWxzZVxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyXG4gICAgICAodHlwZSBrIHYpXG4gICAgICAoa19ncmFtbWFyIDogayBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICAgICh2X2dyYW1tYXIgOiB2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IChrLCB2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC5Bc3NvYy50X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyKVxuOztcblxubGV0IGtleXMgdCA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGE6XyBhY2MgLT4ga2V5IDo6IGFjYylcbmxldCBkYXRhIHQgPSBmb2xkIH5mOihmdW4gfmtleTpfIH5kYXRhIGxpc3QgLT4gZGF0YSA6OiBsaXN0KSB+aW5pdDpbXSB0XG5cbmxldCBhZGRfdG9fZ3JvdXBzIGdyb3VwcyB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgfnJvd3MgPVxuICBMaXN0Lml0ZXIgcm93cyB+ZjooZnVuIHJvdyAtPlxuICAgIGxldCBrZXkgPSBnZXRfa2V5IHJvdyBpblxuICAgIGxldCBkYXRhID0gZ2V0X2RhdGEgcm93IGluXG4gICAgbGV0IGRhdGEgPVxuICAgICAgbWF0Y2ggZmluZCBncm91cHMga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkYXRhXG4gICAgICB8IFNvbWUgb2xkIC0+IGNvbWJpbmUgb2xkIGRhdGFcbiAgICBpblxuICAgIHNldCBncm91cHMgfmtleSB+ZGF0YSkgW0Bub250YWlsXVxuOztcblxubGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIHJvd3MgPVxuICBsZXQgcmVzID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKCkgaW5cbiAgYWRkX3RvX2dyb3VwcyByZXMgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIH5yb3dzO1xuICByZXNcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YTpGbi5pZCByb3dzXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyA9XG4gIG1hdGNoIGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3Mgd2l0aFxuICB8IGBPayB0IC0+IFJlc3VsdC5PayB0XG4gIHwgYER1cGxpY2F0ZV9rZXlzIGtleXMgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBoYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3QgaW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIkhhc2h0YmwuY3JlYXRlX3dpdGhfa2V5OiBkdXBsaWNhdGUga2V5c1wiXG4gICAgICAgICBbIFwia2V5c1wiLCBzZXhwX29mX2xpc3Qgc2V4cF9vZl9rZXkga2V5cyBdKVxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgT3JfZXJyb3Iub2tfZXhuIChjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzKVxuOztcblxubGV0IG1lcmdlID1cbiAgbGV0IG1heWJlX3NldCB0IH5rZXkgfmYgZCA9XG4gICAgbWF0Y2ggZiB+a2V5IGQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB2IC0+IHNldCB0IH5rZXkgfmRhdGE6dlxuICBpblxuICBmdW4gdF9sZWZ0IHRfcmlnaHQgfmYgLT5cbiAgICBpZiBub3QgKEhhc2hhYmxlLmVxdWFsIHRfbGVmdC5oYXNoYWJsZSB0X3JpZ2h0Lmhhc2hhYmxlKVxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJIYXNodGJsLm1lcmdlOiBkaWZmZXJlbnQgJ2hhc2hhYmxlJyB2YWx1ZXNcIjtcbiAgICBsZXQgbmV3X3QgPVxuICAgICAgY3JlYXRlXG4gICAgICAgIH5ncm93dGhfYWxsb3dlZDp0X2xlZnQuZ3Jvd3RoX2FsbG93ZWRcbiAgICAgICAgfmhhc2hhYmxlOnRfbGVmdC5oYXNoYWJsZVxuICAgICAgICB+c2l6ZTp0X2xlZnQubGVuZ3RoXG4gICAgICAgICgpXG4gICAgaW5cbiAgICB3aXRob3V0X211dGF0aW5nIHRfbGVmdCAoZnVuICgpIC0+XG4gICAgICB3aXRob3V0X211dGF0aW5nIHRfcmlnaHQgKGZ1biAoKSAtPlxuICAgICAgICBpdGVyaSB0X2xlZnQgfmY6KGZ1biB+a2V5IH5kYXRhOmxlZnQgLT5cbiAgICAgICAgICBtYXRjaCBmaW5kIHRfcmlnaHQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBMZWZ0IGxlZnQpXG4gICAgICAgICAgfCBTb21lIHJpZ2h0IC0+IG1heWJlX3NldCBuZXdfdCB+a2V5IH5mIChgQm90aCAobGVmdCwgcmlnaHQpKSk7XG4gICAgICAgIGl0ZXJpIHRfcmlnaHQgfmY6KGZ1biB+a2V5IH5kYXRhOnJpZ2h0IC0+XG4gICAgICAgICAgbWF0Y2ggZmluZCB0X2xlZnQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBSaWdodCByaWdodClcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICAgICgqIGFscmVhZHkgZG9uZSBhYm92ZSAqKSkgW0Bub250YWlsXSkgW0Bub250YWlsXSk7XG4gICAgbmV3X3Rcbjs7XG5cbmxldCBtZXJnZV9pbnRvIH5zcmMgfmRzdCB+ZiA9XG4gIGl0ZXJpIHNyYyB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQgZHN0X2RhdGEgPSBmaW5kIGRzdCBrZXkgaW5cbiAgICBsZXQgYWN0aW9uID0gd2l0aG91dF9tdXRhdGluZyBkc3QgKGZ1biAoKSAtPiBmIH5rZXkgZGF0YSBkc3RfZGF0YSkgaW5cbiAgICBtYXRjaCAoYWN0aW9uIDogXyBNZXJnZV9pbnRvX2FjdGlvbi50KSB3aXRoXG4gICAgfCBSZW1vdmUgLT4gcmVtb3ZlIGRzdCBrZXlcbiAgICB8IFNldF90byBkYXRhIC0+XG4gICAgICAobWF0Y2ggZHN0X2RhdGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBzZXQgZHN0IH5rZXkgfmRhdGFcbiAgICAgICB8IFNvbWUgZHN0X2RhdGEgLT4gaWYgbm90IChwaHlzX2VxdWFsIGRzdF9kYXRhIGRhdGEpIHRoZW4gc2V0IGRzdCB+a2V5IH5kYXRhKSkgW0Bub250YWlsXG4gIF1cbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgYWMgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWMgZWxzZSBrZXkgOjogYWMpXG4gIGluXG4gIExpc3QuaXRlciB0b19yZW1vdmUgfmY6KGZ1biBrZXkgLT4gcmVtb3ZlIHQga2V5KVxuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPSBmaWx0ZXJpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbmxldCBmaWx0ZXJfa2V5c19pbnBsYWNlIHQgfmYgPSBmaWx0ZXJpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSkgW0Bub250YWlsXVxuXG5sZXQgZmlsdGVyX21hcGlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IG1hcF9yZXN1bHRzID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhYyAtPiAoa2V5LCBmIH5rZXkgfmRhdGEpIDo6IGFjKSBpblxuICBMaXN0Lml0ZXIgbWFwX3Jlc3VsdHMgfmY6KGZ1biAoa2V5LCByZXN1bHQpIC0+XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmVtb3ZlIHQga2V5XG4gICAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleSB+ZGF0YSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtYXBpX2lucGxhY2UgdCB+ZiA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIHdpdGhvdXRfbXV0YXRpbmcgdCAoZnVuICgpIC0+XG4gICAgQXJyYXkuaXRlciB0LnRhYmxlIH5mOihBdmx0cmVlLm1hcGlfaW5wbGFjZSB+ZikgW0Bub250YWlsXSkgW0Bub250YWlsXVxuOztcblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPSBtYXBpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxubGV0IGVxdWFsIGVxdWFsIHQgdCcgPVxuICBsZW5ndGggdCA9IGxlbmd0aCB0J1xuICAmJiAod2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgd2l0aG91dF9tdXRhdGluZyB0JyAoZnVuICgpIC0+XG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICBtYXRjaCBmaW5kIHQnIGtleSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByLnJldHVybiBmYWxzZVxuICAgICAgICB8IFNvbWUgZGF0YScgLT4gaWYgbm90IChlcXVhbCBkYXRhIGRhdGEnKSB0aGVuIHIucmV0dXJuIGZhbHNlKSBbQG5vbnRhaWxdKTtcbiAgICB0cnVlKSBbQG5vbnRhaWxdKVxuOztcblxubGV0IHNpbWlsYXIgPSBlcXVhbFxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGNob29zZSA9IGNob29zZVxuICBsZXQgY2hvb3NlX2V4biA9IGNob29zZV9leG5cbiAgbGV0IGNob29zZV9yYW5kb21seSA9IGNob29zZV9yYW5kb21seVxuICBsZXQgY2hvb3NlX3JhbmRvbWx5X2V4biA9IGNob29zZV9yYW5kb21seV9leG5cbiAgbGV0IGNsZWFyID0gY2xlYXJcbiAgbGV0IGNvcHkgPSBjb3B5XG4gIGxldCByZW1vdmUgPSByZW1vdmVcbiAgbGV0IHNldCA9IHNldFxuICBsZXQgYWRkID0gYWRkXG4gIGxldCBhZGRfZXhuID0gYWRkX2V4blxuICBsZXQgY2hhbmdlID0gY2hhbmdlXG4gIGxldCB1cGRhdGUgPSB1cGRhdGVcbiAgbGV0IHVwZGF0ZV9hbmRfcmV0dXJuID0gdXBkYXRlX2FuZF9yZXR1cm5cbiAgbGV0IGFkZF9tdWx0aSA9IGFkZF9tdWx0aVxuICBsZXQgcmVtb3ZlX211bHRpID0gcmVtb3ZlX211bHRpXG4gIGxldCBmaW5kX211bHRpID0gZmluZF9tdWx0aVxuICBsZXQgbWVtID0gbWVtXG4gIGxldCBpdGVyX2tleXMgPSBpdGVyX2tleXNcbiAgbGV0IGl0ZXIgPSBpdGVyXG4gIGxldCBpdGVyaSA9IGl0ZXJpXG4gIGxldCBleGlzdHMgPSBleGlzdHNcbiAgbGV0IGV4aXN0c2kgPSBleGlzdHNpXG4gIGxldCBmb3JfYWxsID0gZm9yX2FsbFxuICBsZXQgZm9yX2FsbGkgPSBmb3JfYWxsaVxuICBsZXQgY291bnQgPSBjb3VudFxuICBsZXQgY291bnRpID0gY291bnRpXG4gIGxldCBmb2xkID0gZm9sZFxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGxldCBpc19lbXB0eSA9IGlzX2VtcHR5XG4gIGxldCBtYXAgPSBtYXBcbiAgbGV0IG1hcGkgPSBtYXBpXG4gIGxldCBmaWx0ZXJfbWFwID0gZmlsdGVyX21hcFxuICBsZXQgZmlsdGVyX21hcGkgPSBmaWx0ZXJfbWFwaVxuICBsZXQgZmlsdGVyX2tleXMgPSBmaWx0ZXJfa2V5c1xuICBsZXQgZmlsdGVyID0gZmlsdGVyXG4gIGxldCBmaWx0ZXJpID0gZmlsdGVyaVxuICBsZXQgcGFydGl0aW9uX21hcCA9IHBhcnRpdGlvbl9tYXBcbiAgbGV0IHBhcnRpdGlvbl9tYXBpID0gcGFydGl0aW9uX21hcGlcbiAgbGV0IHBhcnRpdGlvbl90ZiA9IHBhcnRpdGlvbl90ZlxuICBsZXQgcGFydGl0aW9uaV90ZiA9IHBhcnRpdGlvbmlfdGZcbiAgbGV0IGZpbmRfb3JfYWRkID0gZmluZF9vcl9hZGRcbiAgbGV0IGZpbmRpX29yX2FkZCA9IGZpbmRpX29yX2FkZFxuICBsZXQgZmluZCA9IGZpbmRcbiAgbGV0IGZpbmRfZXhuID0gZmluZF9leG5cbiAgbGV0IGZpbmRfYW5kX2NhbGwgPSBmaW5kX2FuZF9jYWxsXG4gIGxldCBmaW5kX2FuZF9jYWxsMSA9IGZpbmRfYW5kX2NhbGwxXG4gIGxldCBmaW5kX2FuZF9jYWxsMiA9IGZpbmRfYW5kX2NhbGwyXG4gIGxldCBmaW5kaV9hbmRfY2FsbCA9IGZpbmRpX2FuZF9jYWxsXG4gIGxldCBmaW5kaV9hbmRfY2FsbDEgPSBmaW5kaV9hbmRfY2FsbDFcbiAgbGV0IGZpbmRpX2FuZF9jYWxsMiA9IGZpbmRpX2FuZF9jYWxsMlxuICBsZXQgZmluZF9hbmRfcmVtb3ZlID0gZmluZF9hbmRfcmVtb3ZlXG4gIGxldCB0b19hbGlzdCA9IHRvX2FsaXN0XG4gIGxldCBtZXJnZSA9IG1lcmdlXG4gIGxldCBtZXJnZV9pbnRvID0gbWVyZ2VfaW50b1xuICBsZXQga2V5cyA9IGtleXNcbiAgbGV0IGRhdGEgPSBkYXRhXG4gIGxldCBmaWx0ZXJfa2V5c19pbnBsYWNlID0gZmlsdGVyX2tleXNfaW5wbGFjZVxuICBsZXQgZmlsdGVyX2lucGxhY2UgPSBmaWx0ZXJfaW5wbGFjZVxuICBsZXQgZmlsdGVyaV9pbnBsYWNlID0gZmlsdGVyaV9pbnBsYWNlXG4gIGxldCBtYXBfaW5wbGFjZSA9IG1hcF9pbnBsYWNlXG4gIGxldCBtYXBpX2lucGxhY2UgPSBtYXBpX2lucGxhY2VcbiAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSA9IGZpbHRlcl9tYXBfaW5wbGFjZVxuICBsZXQgZmlsdGVyX21hcGlfaW5wbGFjZSA9IGZpbHRlcl9tYXBpX2lucGxhY2VcbiAgbGV0IGVxdWFsID0gZXF1YWxcbiAgbGV0IHNpbWlsYXIgPSBzaW1pbGFyXG4gIGxldCBpbmNyID0gaW5jclxuICBsZXQgZGVjciA9IGRlY3JcbiAgbGV0IHNleHBfb2Zfa2V5ID0gc2V4cF9vZl9rZXlcbmVuZFxuXG5tb2R1bGUgQ3JlYXRvcnMgKEtleSA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGhhc2hhYmxlIDogJ2EgdCBIYXNoYWJsZS50XG4gIGVuZCkgOiBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XyA9ICgnYSBLZXkudCwgJ2IpIHRcblxuICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBLZXkudCkgLT4gKFNleHAudCAtPiAnYikgLT4gU2V4cC50IC0+ICgnYSwgJ2IpIHRfXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X1xuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICB3aXRoIHR5cGUgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gS2V5Lmhhc2hhYmxlXG5cbiAgdHlwZSAoJ2EsICdiKSB0XyA9ICgnYSBLZXkudCwgJ2IpIHRcblxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKSA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlICgpXG4gIGxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuXG4gIGxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGtfb2Zfc2V4cCBkX29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCB+aGFzaGFibGUga19vZl9zZXhwIGRfb2Zfc2V4cCBzZXhwXG5cbiAgbGV0IG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIGwgPVxuICAgIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbCA9XG4gICAgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbFxuICA7O1xuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5ID0gJ2FcblxuICBsZXQgaGFzaGFibGUgPSBIYXNoYWJsZS5wb2x5XG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICAgIGVuZClcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBIYXNoYWJsZSA9IEhhc2hhYmxlLkhhc2hhYmxlXG5cbiAgdHlwZSBub25yZWMgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGUgPVxuICAgICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5cbiAgbGV0IGhhc2hhYmxlIHQgPSB0Lmhhc2hhYmxlXG5lbmRcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9XG4gIGNyZWF0ZSB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKClcbjs7XG5cbmxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3Qgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9vcl9lcnJvciB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfZXhuIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X211bHRpIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gIGNyZWF0ZV9tYXBwZWQgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSBsXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IGwgPVxuICBjcmVhdGVfd2l0aF9rZXkgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGxcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgbCA9XG4gIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgbCA9XG4gIGNyZWF0ZV93aXRoX2tleV9leG4gfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGxcbjs7XG5cbmxldCBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbCA9XG4gIGdyb3VwIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbFxuOztcblxubGV0IGhhc2hhYmxlX3MgdCA9IEhhc2hhYmxlLnRvX2tleSB0Lmhhc2hhYmxlXG5cbm1vZHVsZSBNIChLIDogVC5UKSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgS2V5LlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgaykgKG1vZHVsZSBLIDogU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gaykgc2V4cF9vZl92IHQgPVxuICBzZXhwX29mX3QgSy5zZXhwX29mX3Qgc2V4cF9vZl92IHRcbjs7XG5cbmxldCBtX190X29mX3NleHAgKHR5cGUgaykgKG1vZHVsZSBLIDogTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gaykgdl9vZl9zZXhwIHNleHAgPVxuICB0X29mX3NleHAgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgKG1vZHVsZSBLKSkgSy50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hciAodHlwZSBrKSAobW9kdWxlIEsgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGspIHZfZ3JhbW1hciA9XG4gIHRfc2V4cF9ncmFtbWFyIEsudF9zZXhwX2dyYW1tYXIgdl9ncmFtbWFyXG47O1xuXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSBlcXVhbF92IHQxIHQyID0gZXF1YWwgZXF1YWxfdiB0MSB0MlxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2hfc2V0X2ludGZcblxubGV0IGhhc2hhYmxlX3MgPSBIYXNodGJsLmhhc2hhYmxlX3NcbmxldCBoYXNoYWJsZSA9IEhhc2h0YmwuUHJpdmF0ZS5oYXNoYWJsZVxubGV0IHBvbHlfaGFzaGFibGUgPSBIYXNodGJsLlBvbHkuaGFzaGFibGVcbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbnR5cGUgJ2EgdCA9ICgnYSwgdW5pdCkgSGFzaHRibC50XG50eXBlICdhIGhhc2hfc2V0ID0gJ2EgdFxudHlwZSAnYSBlbHQgPSAnYVxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gIGxldCBjbGVhciA9IEhhc2h0YmwuY2xlYXJcbiAgbGV0IGxlbmd0aCA9IEhhc2h0YmwubGVuZ3RoXG4gIGxldCBtZW0gPSBIYXNodGJsLm1lbVxuICBsZXQgaXNfZW1wdHkgdCA9IEhhc2h0YmwuaXNfZW1wdHkgdFxuXG4gIGxldCBmaW5kX21hcCB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIEhhc2h0YmwuaXRlcl9rZXlzIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgbWF0Y2ggZiBlbHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIF8gYXMgbyAtPiByLnJldHVybiBvKTtcbiAgICAgIE5vbmUpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmluZCB0IH5mID0gZmluZF9tYXAgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gU29tZSBhIGVsc2UgTm9uZSkgW0Bub250YWlsXVxuICBsZXQgYWRkIHQgayA9IEhhc2h0Ymwuc2V0IHQgfmtleTprIH5kYXRhOigpXG5cbiAgbGV0IHN0cmljdF9hZGQgdCBrID1cbiAgICBpZiBtZW0gdCBrXG4gICAgdGhlbiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJlbGVtZW50IGFscmVhZHkgZXhpc3RzXCJcbiAgICBlbHNlIChcbiAgICAgIEhhc2h0Ymwuc2V0IHQgfmtleTprIH5kYXRhOigpO1xuICAgICAgUmVzdWx0Lk9rICgpKVxuICA7O1xuXG4gIGxldCBzdHJpY3RfYWRkX2V4biB0IGsgPSBPcl9lcnJvci5va19leG4gKHN0cmljdF9hZGQgdCBrKVxuICBsZXQgcmVtb3ZlID0gSGFzaHRibC5yZW1vdmVcblxuICBsZXQgc3RyaWN0X3JlbW92ZSB0IGsgPVxuICAgIGlmIG1lbSB0IGtcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZSB0IGs7XG4gICAgICBSZXN1bHQuT2sgKCkpXG4gICAgZWxzZSBPcl9lcnJvci5lcnJvciBcImVsZW1lbnQgbm90IGluIHNldFwiIGsgKEhhc2h0Ymwuc2V4cF9vZl9rZXkgdClcbiAgOztcblxuICBsZXQgc3RyaWN0X3JlbW92ZV9leG4gdCBrID0gT3JfZXJyb3Iub2tfZXhuIChzdHJpY3RfcmVtb3ZlIHQgaylcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICBIYXNodGJsLmZvbGQgdCB+aW5pdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgYWNjIC0+IGYgYWNjIGtleSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBpdGVyIHQgfmYgPSBIYXNodGJsLml0ZXJfa2V5cyB0IH5mXG4gIGxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxuICBsZXQgdG9fbGlzdCA9IEhhc2h0Ymwua2V5c1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lIHQgPVxuICAgIHNleHBfb2ZfbGlzdCBzZXhwX29mX2UgKHRvX2xpc3QgdCB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6KGhhc2hhYmxlIHQpLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IHRvX2FycmF5IHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBpbmRleCA9IHJlZiAobGVuIC0gMSkgaW5cbiAgICBmb2xkIHQgfmluaXQ6W3x8XSB+ZjooZnVuIGFjYyBrZXkgLT5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCBhY2MgPSAwXG4gICAgICB0aGVuIEFycmF5LmNyZWF0ZSB+bGVuIGtleVxuICAgICAgZWxzZSAoXG4gICAgICAgIGluZGV4IDo9ICFpbmRleCAtIDE7XG4gICAgICAgIGFjYy4oIWluZGV4KSA8LSBrZXk7XG4gICAgICAgIGFjYykpXG4gIDs7XG5cbiAgbGV0IGV4aXN0cyB0IH5mOihmIFtAbG9jYWxdKSA9XG4gICAgSGFzaHRibC5leGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IGYga2V5KSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IG5vdCAoSGFzaHRibC5leGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IG5vdCAoZiBrZXkpKSlcbiAgbGV0IGVxdWFsIHQxIHQyID0gSGFzaHRibC5lcXVhbCAoZnVuICgpICgpIC0+IHRydWUpIHQxIHQyXG4gIGxldCBjb3B5IHQgPSBIYXNodGJsLmNvcHkgdFxuICBsZXQgZmlsdGVyIHQgfmYgPSBIYXNodGJsLmZpbHRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gZiBrZXkpIFtAbm9udGFpbF1cbiAgbGV0IHVuaW9uIHQxIHQyID0gSGFzaHRibC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXk6XyBfIC0+IFNvbWUgKCkpXG4gIGxldCBkaWZmIHQxIHQyID0gZmlsdGVyIHQxIH5mOihmdW4ga2V5IC0+IG5vdCAoSGFzaHRibC5tZW0gdDIga2V5KSlcblxuICBsZXQgaW50ZXIgdDEgdDIgPVxuICAgIGxldCBzbWFsbGVyLCBsYXJnZXIgPSBpZiBsZW5ndGggdDEgPiBsZW5ndGggdDIgdGhlbiB0MiwgdDEgZWxzZSB0MSwgdDIgaW5cbiAgICBIYXNodGJsLmZpbHRlcmkgc21hbGxlciB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gSGFzaHRibC5tZW0gbGFyZ2VyIGtleSlcbiAgOztcblxuICBsZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gICAgbGV0IHRvX3JlbW92ZSA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjIHggLT4gaWYgZiB4IHRoZW4gYWMgZWxzZSB4IDo6IGFjKSBpblxuICAgIExpc3QuaXRlciB0b19yZW1vdmUgfmY6KGZ1biB4IC0+IHJlbW92ZSB0IHgpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoYXNodGJsID0gSGFzaHRibC5tYXAgaGFzaHRibCB+ZjppZ25vcmVcbiAgbGV0IHRvX2hhc2h0YmwgdCB+ZiA9IEhhc2h0YmwubWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBmIGtleSkgW0Bub250YWlsXVxuZW5kXG5cbmluY2x1ZGUgQWNjZXNzb3JzXG5cbmxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gPSBIYXNodGJsLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbVxuXG5sZXQgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgbGV0IHNpemUgPVxuICAgIG1hdGNoIHNpemUgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gTGlzdC5sZW5ndGggbFxuICBpblxuICBsZXQgdCA9IEhhc2h0YmwuY3JlYXRlID9ncm93dGhfYWxsb3dlZCB+c2l6ZSBtIGluXG4gIExpc3QuaXRlciBsIH5mOihmdW4gayAtPiBhZGQgdCBrKTtcbiAgdFxuOztcblxubGV0IHRfb2Zfc2V4cCBtIGVfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgU2V4cC5BdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcIkhhc2hfc2V0LnRfb2Zfc2V4cCByZXF1aXJlcyBhIGxpc3RcIiBzZXhwXG4gIHwgU2V4cC5MaXN0IGxpc3QgLT5cbiAgICBsZXQgdCA9IGNyZWF0ZSBtIH5zaXplOihMaXN0Lmxlbmd0aCBsaXN0KSBpblxuICAgIExpc3QuaXRlciBsaXN0IH5mOihmdW4gc2V4cCAtPlxuICAgICAgbGV0IGUgPSBlX29mX3NleHAgc2V4cCBpblxuICAgICAgbWF0Y2ggc3RyaWN0X2FkZCB0IGUgd2l0aFxuICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgfCBFcnJvciBfIC0+IG9mX3NleHBfZXJyb3IgXCJIYXNoX3NldC50X29mX3NleHAgZ290IGEgZHVwbGljYXRlIGVsZW1lbnRcIiBzZXhwKTtcbiAgICB0XG47O1xuXG5tb2R1bGUgQ3JlYXRvcnMgKEVsdCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGhhc2hhYmxlIDogJ2EgdCBIYXNoYWJsZS50XG4gIGVuZCkgOiBzaWdcbiAgdmFsIHRfb2Zfc2V4cCA6IChTZXhwLnQgLT4gJ2EgRWx0LnQpIC0+IFNleHAudCAtPiAnYSBFbHQudCB0XG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBFbHQudCB0XG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBFbHQudFxuICAgIHdpdGggdHlwZSAoJ2VsdCwgJ3opIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2VsdCwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKCkgPVxuICAgIGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2hhYmxlLnRvX2tleSBFbHQuaGFzaGFibGUpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIChIYXNoYWJsZS50b19rZXkgRWx0Lmhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBlX29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCAoSGFzaGFibGUudG9fa2V5IEVsdC5oYXNoYWJsZSkgZV9vZl9zZXhwIHNleHBcbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBoYXNoX3NldFxuICB0eXBlICdhIGVsdCA9ICdhXG5cbiAgbGV0IGhhc2hhYmxlID0gcG9seV9oYXNoYWJsZVxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuZW5kXG5cbm1vZHVsZSBNIChFbHQgOiBULlQpID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSBFbHQudCB0XG5lbmRcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gZWx0KSB0ID1cbiAgc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gZWx0KSBzZXhwID1cbiAgdF9vZl9zZXhwIChtb2R1bGUgRWx0KSBFbHQudF9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hciAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBlbHQpID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAobGlzdF9zZXhwX2dyYW1tYXIgRWx0LnRfc2V4cF9ncmFtbWFyKVxuOztcblxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgdDEgdDIgPSBlcXVhbCB0MSB0MlxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBIYXNodGJsLlByaXZhdGUuaGFzaGFibGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBQcmludGZcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxuaW5jbHVkZSBGbG9hdDBcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2Zsb2F0XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9mbG9hdCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2Zsb2F0IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcbiAgbGV0IHRfb2Zfc2V4cCA9IChmbG9hdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9mbG9hdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBmbG9hdF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgdG9fZmxvYXQgeCA9IHhcbmxldCBvZl9mbG9hdCB4ID0geFxuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICB0cnkgZmxvYXRfb2Zfc3RyaW5nIHMgd2l0aFxuICB8IF8gLT4gaW52YWxpZF9hcmdmIFwiRmxvYXQub2Zfc3RyaW5nICVzXCIgcyAoKVxuOztcblxubGV0IG9mX3N0cmluZ19vcHQgPSBmbG9hdF9vZl9zdHJpbmdfb3B0XG5cbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuKCogU3RvbGVuIGZyb20gW3BlcnZhc2l2ZXMubWxdLiAgQWRkcyBhIFwiLlwiIGF0IHRoZSBlbmQgaWYgbmVlZGVkLiAgSXQgaXMgaW5cbiAgIFtwZXJ2YXNpdmVzLm1saV0sIGJ1dCBpdCBhbHNvIHNheXMgbm90IHRvIHVzZSBpdCBkaXJlY3RseSwgc28gd2UgY29weSBhbmQgcGFzdGUgdGhlXG4gICBjb2RlLiBJdCBtYWtlcyB0aGUgYXNzdW1wdGlvbiBvbiB0aGUgc3RyaW5nIHBhc3NlZCBpbiBhcmd1bWVudCB0aGF0IGl0IHdhcyByZXR1cm5lZCBieVxuICAgW2Zvcm1hdF9mbG9hdF0uICopXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBpIGxcbiAgICB0aGVuIHMgXiBcIi5cIlxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgfCBfIC0+IHMpXG4gIGluXG4gIGxvb3AgMFxuOztcblxuKCogTGV0IFt5XSBiZSBhIHBvd2VyIG9mIDIuICBUaGVuIHRoZSBuZXh0IHJlcHJlc2VudGFibGUgZmxvYXQgaXM6XG4gICBbeiA9IHkgKiAoMSArIDIgKiogLTUyKV1cbiAgIGFuZCB0aGUgcHJldmlvdXMgb25lIGlzXG4gICBbeCA9IHkgKiAoMSAtIDIgKiogLTUzKV1cblxuICAgSW4gZ2VuZXJhbCwgZXZlcnkgdHdvIGFkamFjZW50IGZsb2F0cyBhcmUgd2l0aGluIGEgZmFjdG9yIG9mIGJldHdlZW4gWzEgKyAyKiotNTNdXG4gICBhbmQgWzEgKyAyKiotNTJdIGZyb20gZWFjaCBvdGhlciwgdGhhdCBpcyB3aXRoaW4gWzEgKyAxLjFlLTE2XSBhbmQgWzEgKyAyLjNlLTE2XS5cblxuICAgU28gaWYgdGhlIGRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYSBmbG9hdCBzdGFydHMgd2l0aCBcIjFcIiwgdGhlbiBpdHMgYWRqYWNlbnQgZmxvYXRzXG4gICB3aWxsIHVzdWFsbHkgZGlmZmVyIGZyb20gaXQgYnkgMSwgYW5kIHNvbWV0aW1lcyBieSAyLCBhdCB0aGUgMTd0aCBzaWduaWZpY2FudCBkaWdpdFxuICAgKGNvdW50aW5nIGZyb20gMSkuXG5cbiAgIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBzdGFydHMgd2l0aCBcIjlcIiwgdGhlbiB0aGUgYWRqYWNlbnRcbiAgIGZsb2F0cyB3aWxsIGJlIG9mZiBieSBubyBtb3JlIHRoYW4gMjMgYXQgdGhlIDE2dGggYW5kIDE3dGggc2lnbmlmaWNhbnQgZGlnaXRzLlxuXG4gICBFLmcuOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiICgxMDI0LiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExXG4gICAgICAgICAgICAgICAgICAgMTIzNCA1Njc4OTAxMjM0NTY3XG4gICAgIC0gOiBzdHJpbmcgPSBcIjEwMjMuOTk5OTk5OTk5OTk5OVwiXG4gICB2fVxuICAgUHJpbnRpbmcgYSBjb3VwbGUgb2YgZXh0cmEgZGlnaXRzIHJldmVhbHMgdGhhdCB0aGUgZGlmZmVyZW5jZSBpbmRlZWQgaXMgcm91Z2hseSAxMSBhdFxuICAgZGlnaXRzIDE3dGggYW5kIDE4dGggKHRoYXQgaXMsIDEzdGggYW5kIDE0dGggYWZ0ZXIgXCIuXCIpOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE5Z1wiICgxMDI0LiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAtIDogc3RyaW5nID0gXCIxMDIzLjk5OTk5OTk5OTk5OTg4NlwiXG4gICB2fVxuXG4gICBUaGUgdWxwICh0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGFkamFjZW50IGZsb2F0cykgaXMgdHdpY2UgYXMgYmlnIG9uIHRoZSBvdGhlciBzaWRlIG9mXG4gICAxMDI0LjpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xOWdcIiAoMTAyNC4gKi4gKDEuICsuIDIuKiogKC01Mi4pKSk7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMTExXG4gICAgICAgICAgICAgICAgICAgMTIzNCA1Njc4OTAxMjM0NTY3ODlcbiAgICAgLSA6IHN0cmluZyA9IFwiMTAyNC4wMDAwMDAwMDAwMDAyMjdcIlxuICAgdn1cblxuICAgTm93IHRha2UgYSBwb3dlciBvZiAyIHdoaWNoIHN0YXJ0cyB3aXRoIDk5OlxuXG4gICB7dlxuICAgICAjIDIuKio5My4gOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTExMVxuICAgICAgICAgICAgICAgICAxIDIzNDU2Nzg5MDEyMzQ1Njc4XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQyMmUrMjdcblxuICAgICAjIDIuKio5My4gKi4gKDEuICsuIDIuKiogKC01Mi4pKTs7XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQ0NGUrMjdcblxuICAgICAjIDIuKio5My4gKi4gKDEuIC0uIDIuKiogKC01My4pKTs7XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQxMWUrMjdcbiAgIHZ9XG5cbiAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gMioqOTMgYW5kIGl0cyB0d28gbmVpZ2hib3JzIGlzIHNsaWdodGx5IG1vcmUgdGhhbiwgcmVzcGVjdGl2ZWx5LFxuICAgMSBhbmQgMiBhdCBzaWduaWZpY2FudCBkaWdpdCAxNi5cblxuICAgVGhvc2UgZXhhbXBsZXMgc2hvdyB0aGF0OlxuICAgLSAxNyBzaWduaWZpY2FudCBkaWdpdHMgaXMgYWx3YXlzIHN1ZmZpY2llbnQgdG8gcmVwcmVzZW50IGEgZmxvYXQgd2l0aG91dCBhbWJpZ3VpdHlcbiAgIC0gMTV0aCBzaWduaWZpY2FudCBkaWdpdCBjYW4gYWx3YXlzIGJlIHJlcHJlc2VudGVkIGFjY3VyYXRlbHlcbiAgIC0gY29udmVydGluZyBhIGRlY2ltYWwgbnVtYmVyIHdpdGggMTYgc2lnbmlmaWNhbnQgZGlnaXRzIHRvIGl0cyBuZWFyZXN0IGZsb2F0IGFuZCBiYWNrXG4gICAgIGNhbiBjaGFuZ2UgdGhlIGxhc3QgZGVjaW1hbCBkaWdpdCBieSBubyBtb3JlIHRoYW4gMVxuXG4gICBUbyBtYWtlIHN1cmUgdGhhdCBmbG9hdHMgb2J0YWluZWQgYnkgY29udmVyc2lvbiBmcm9tIGRlY2ltYWwgZnJhY3Rpb25zIChlLmcuIFwiMy4xNFwiKVxuICAgYXJlIHByaW50ZWQgd2l0aG91dCB0cmFpbGluZyBub24temVybyBkaWdpdHMsIG9uZSBzaG91bGQgY2hvb3NlIHRoZSBmaXJzdCBhbW9uZyB0aGVcbiAgICclLjE1ZycsICclLjE2ZycsIGFuZCAnJS4xN2cnIHJlcHJlc2VudGF0aW9ucyB3aGljaCBkb2VzIHJvdW5kLXRyaXA6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTVnXCIgMy4xNDs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjMuMTRcIiAgICAgICAgICAgICAgICAgICAgICgqIHBpY2sgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNFwiXG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgMy4xNDs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjMuMTQwMDAwMDAwMDAwMDAwMVwiICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lICopXG5cbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjhcIiAgICAgICAgICAgICAgICAgICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lLS1kb2VzIG5vdCByb3VuZC10cmlwICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTZnXCIgOC4wMDAwMDAwMDAwMDAwMDI7O1xuICAgICAtIDogc3RyaW5nID0gXCI4LjAwMDAwMDAwMDAwMDAwMlwiICAgICAgICAoKiBwcmVmZXIgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjguMDAwMDAwMDAwMDAwMDAxOFwiICAgICAgICgqIHRoaXMgb25lIGhhcyBvbmUgZGlnaXQgb2YganVuayBhdCB0aGUgZW5kICopXG4gICB2fVxuXG4gICBTa2lwcGluZyB0aGUgJyUuMTZnJyBpbiB0aGUgYWJvdmUgcHJvY2VkdXJlIHNhdmVzIHVzIHNvbWUgdGltZSwgYnV0IGl0IG1lYW5zIHRoYXQsIGFzXG4gICBzZWVuIGluIHRoZSBzZWNvbmQgZXhhbXBsZSBhYm92ZSwgb2NjYXNpb25hbGx5IG51bWJlcnMgd2l0aCBleGFjdGx5IDE2IHNpZ25pZmljYW50XG4gICBkaWdpdHMgd2lsbCBoYXZlIGFuIGVycm9yIGludHJvZHVjZWQgYXQgdGhlIDE3dGggZGlnaXQuICBUaGF0IGlzIHByb2JhYmx5IE9LIGZvclxuICAgdHlwaWNhbCB1c2UsIGJlY2F1c2UgYSBudW1iZXIgd2l0aCAxNiBzaWduaWZpY2FudCBkaWdpdHMgaXMgXCJ1Z2x5XCIgYWxyZWFkeS4gIEFkZGluZyBvbmVcbiAgIG1vcmUgZG9lc24ndCBtYWtlIGl0IG11Y2ggd29yc2UgZm9yIGEgaHVtYW4gcmVhZGVyLlxuXG4gICBPbiB0aGUgb3RoZXIgaGFuZCwgd2UgY2Fubm90IHNraXAgJyUuMTVnJyBhbmQgb25seSBsb29rIGF0ICclLjE2ZycgYW5kICclLjE3ZycsIHNpbmNlXG4gICB0aGUgaW5hY2N1cmFjeSBhdCB0aGUgMTZ0aCBkaWdpdCBtaWdodCBpbnRyb2R1Y2UgdGhlIG5vaXNlIHdlIHdhbnQgdG8gYXZvaWQ6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTVnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MlwiICAgICAgICAgICAgICAgICAgICAoKiBwaWNrIHRoaXMgb25lICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTZnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MjAwMDAwMDAwMDAwMVwiICAgICAgICAoKiBkbyBub3QgcGljayB0aGlzIG9uZS0tanVuayBhdCB0aGUgZW5kICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MjAwMDAwMDAwMDAwMDlcIlxuICAgdn1cbiopXG5sZXQgdG9fc3RyaW5nIHggPVxuICB2YWxpZF9mbG9hdF9sZXhlbVxuICAgIChsZXQgeSA9IGZvcm1hdF9mbG9hdCBcIiUuMTVnXCIgeCBpblxuICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgeSA9IHggdGhlbiB5IGVsc2UgZm9ybWF0X2Zsb2F0IFwiJS4xN2dcIiB4KVxuOztcblxubGV0IG1heF92YWx1ZSA9IGluZmluaXR5XG5sZXQgbWluX3ZhbHVlID0gbmVnX2luZmluaXR5XG5sZXQgbWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZSA9IDIuICoqIC0xMDc0LlxubGV0IG1pbl9wb3NpdGl2ZV9ub3JtYWxfdmFsdWUgPSAyLiAqKiAtMTAyMi5cbmxldCB6ZXJvID0gMC5cbmxldCBvbmUgPSAxLlxubGV0IG1pbnVzX29uZSA9IC0xLlxubGV0IHBpID0gMHgzLjI0M0Y2QTg4ODVBMzA4RDMxMzE5OEEyRTAzNzA3M1xubGV0IHNxcnRfcGkgPSAweDEuQzVCRjg5MUI0RUY2QUE3OUMzQjA1MjBENURCOTM4XG5sZXQgc3FydF8ycGkgPSAweDIuODFCMjYzRkVDNEUwQjJDQUY5NDgzRjVDRTQ1OURDXG5sZXQgZXVsZXIgPSAweDAuOTNDNDY3RTM3REIwQzdBNEQxQkUzRjgxMDE1MkNCXG5sZXQgb2ZfaW50ID0gSW50LnRvX2Zsb2F0XG5sZXQgdG9faW50ID0gSW50Lm9mX2Zsb2F0XG5sZXQgb2ZfaW50NjMgaSA9IEludDYzLnRvX2Zsb2F0IGlcbmxldCBvZl9pbnQ2NCBpID0gU3RkbGliLkludDY0LnRvX2Zsb2F0IGlcbmxldCB0b19pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5vZl9mbG9hdFxubGV0IGlyb3VuZF9sYm91bmQgPSBsb3dlcl9ib3VuZF9mb3JfaW50IEludC5udW1fYml0c1xubGV0IGlyb3VuZF91Ym91bmQgPSB1cHBlcl9ib3VuZF9mb3JfaW50IEludC5udW1fYml0c1xuXG4oKiBUaGUgcGVyZm9ybWFuY2Ugb2YgdGhlIFwiZXhuXCIgcm91bmRpbmcgZnVuY3Rpb25zIGlzIGltcG9ydGFudCwgc28gdGhleSBhcmUgd3JpdHRlblxuICAgb3V0IHNlcGFyYXRlbHksIGFuZCB0dW5lZCBpbmRpdmlkdWFsbHkuICAoV2UgY291bGQgaGF2ZSB0aGUgb3B0aW9uIHZlcnNpb25zIGNhbGxcbiAgIHRoZSBcImV4blwiIHZlcnNpb25zLCBidXQgdGhhdCBpbXBvc2VzIGFyZ3VhYmx5IGdyYXR1aXRvdXMgb3ZlcmhlYWQtLS1lc3BlY2lhbGx5XG4gICBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgY2FwdHVyZSBvZiBiYWNrdHJhY2VzIGlzIGVuYWJsZWQgdXBvbiBcIndpdGhcIi0tLWFuZCB0aGF0IHNlZW1zXG4gICBub3Qgd29ydGggaXQgd2hlbiBjb21wYXJlZCB0byB0aGUgcmVsYXRpdmVseSBzbWFsbCBhbW91bnQgb2YgY29kZSBkdXBsaWNhdGlvbi4pICopXG5cbigqIEVycm9yIHJlcG9ydGluZyBiZWxvdyBpcyB2ZXJ5IGNhcmVmdWxseSBhcnJhbmdlZCBzbyB0aGF0LCBlLmcuLCBbaXJvdW5kX25lYXJlc3RfZXhuXVxuICAgaXRzZWxmIGNhbiBiZSBpbmxpbmVkIGludG8gY2FsbGVycyBzdWNoIHRoYXQgdGhleSBkb24ndCBuZWVkIHRvIGFsbG9jYXRlIGEgYm94IGZvciB0aGVcbiAgIFtmbG9hdF0gYXJndW1lbnQuICBUaGlzIGlzIGRvbmUgd2l0aCBhIGJveCBbYm94XSBmdW5jdGlvbiBjYXJlZnVsbHkgY2hvc2VuIHRvIGFsbG93IHRoZVxuICAgY29tcGlsZXIgdG8gY3JlYXRlIGEgc2VwYXJhdGUgYm94IGZvciB0aGUgZmxvYXQgb25seSBpbiBlcnJvciBjYXNlcy4gIFNlZSwgZS5nLixcbiAgIFsuLi8uLi96ZXJvL3Rlc3QvcHJpY2VfdGVzdC5tbF0gZm9yIGEgbWVjaGFuaWNhbCB0ZXN0IG9mIHRoaXMgcHJvcGVydHkgd2hlbiBidWlsZGluZ1xuICAgd2l0aCBbWF9MSUJSQVJZX0lOTElOSU5HPXRydWVdLiAqKVxuXG5sZXQgaXJvdW5kX3VwIHQgPVxuICBpZiB0ID4gMC4wXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGNlaWwgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX3VwX2V4biB0ID1cbiAgaWYgdCA+IDAuMFxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBjZWlsIHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKCkpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCIgKGJveCB0KSAoKVxuOztcblxubGV0IGlyb3VuZF9kb3duIHQgPVxuICBpZiB0ID49IDAuMFxuICB0aGVuIGlmIHQgPD0gaXJvdW5kX3Vib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCkgZWxzZSBOb25lXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yIHQgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfZG93bl9leG4gdCA9XG4gIGlmIHQgPj0gMC4wXG4gIHRoZW5cbiAgICBpZiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKClcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiIChib3ggdCkgKCkpXG47O1xuXG5sZXQgaXJvdW5kX3Rvd2FyZHNfemVybyB0ID1cbiAgaWYgdCA+PSBpcm91bmRfbGJvdW5kICYmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF90b3dhcmRzX3plcm9fZXhuIHQgPVxuICBpZiB0ID49IGlyb3VuZF9sYm91bmQgJiYgdCA8PSBpcm91bmRfdWJvdW5kXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQuaXJvdW5kX3Rvd2FyZHNfemVyb19leG46IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoYm94IHQpXG4gICAgICAoKVxuOztcblxuKCogT3V0c2lkZSBvZiB0aGUgcmFuZ2UgKHJvdW5kX25lYXJlc3RfbGIuLnJvdW5kX25lYXJlc3RfdWIpLCBhbGwgcmVwcmVzZW50YWJsZSBkb3VibGVzXG4gICBhcmUgaW50ZWdlcnMgaW4gdGhlIG1hdGhlbWF0aWNhbCBzZW5zZSwgYW5kIFtyb3VuZF9uZWFyZXN0XSBzaG91bGQgYmUgaWRlbnRpdHkuXG5cbiAgIEhvd2V2ZXIsIGZvciBvZGQgbnVtYmVycyB3aXRoIHRoZSBhYnNvbHV0ZSB2YWx1ZSBiZXR3ZWVuIDIqKjUyIGFuZCAyKio1MywgdGhlIGZvcm11bGFcbiAgIFtyb3VuZF9uZWFyZXN0IHggPSBmbG9vciAoeCArIDAuNSldIGRvZXMgbm90IGhvbGQ6XG5cbiAgIHt2XG4gICAgICMgbGV0IG5haXZlX3JvdW5kX25lYXJlc3QgeCA9IGZsb29yICh4ICsuIDAuNSk7O1xuICAgICAjIGxldCB4ID0gMi4gKiogNTIuICsuIDEuOztcbiAgICAgdmFsIHggOiBmbG9hdCA9IDQ1MDM1OTk2MjczNzA0OTcuXG4gICAgICMgbmFpdmVfcm91bmRfbmVhcmVzdCB4OztcbiAgICAgLSA6ICAgICBmbG9hdCA9IDQ1MDM1OTk2MjczNzA0OTguXG4gICB2fVxuKilcblxubGV0IHJvdW5kX25lYXJlc3RfbGIgPSAtLigyLiAqKiA1Mi4pXG5sZXQgcm91bmRfbmVhcmVzdF91YiA9IDIuICoqIDUyLlxuXG4oKiBGb3IgW3ggPSBvbmVfdWxwIGBEb3duIDAuNV0sIHRoZSBmb3JtdWxhIFtmbG9vciAoeCArLiAwLjUpXSBmb3Igcm91bmRpbmcgdG8gbmVhcmVzdFxuICAgZG9lcyBub3Qgd29yaywgYmVjYXVzZSB0aGUgZXhhY3QgcmVzdWx0IGlzIGhhbGZ3YXkgYmV0d2VlbiBbb25lX3VscCBgRG93biAxLl0gYW5kIFsxLl0sXG4gICBhbmQgaXQgZ2V0cyByb3VuZGVkIHVwIHRvIFsxLl0gZHVlIHRvIHRoZSByb3VuZC10aWVzLXRvLWV2ZW4gcnVsZS4gKilcbmxldCBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmID0gb25lX3VscCBgRG93biAwLjVcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0ID1cbiAgdFxuICArLlxuICBpZiB0ID0gb25lX3VscF9sZXNzX3RoYW5faGFsZlxuICB0aGVuIG9uZV91bHBfbGVzc190aGFuX2hhbGYgKCogc2luY2UgdCA8IDAuNSwgbWFrZSBzdXJlIHRoZSByZXN1bHQgaXMgPCAxLjAgKilcbiAgZWxzZSAwLjVcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF8zMiB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgKHQgKy4gMC41KSBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfNjQgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlblxuICAgIGlmIHQgPCByb3VuZF9uZWFyZXN0X3ViXG4gICAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0KSlcbiAgICBlbHNlIGlmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICAgIGVsc2UgTm9uZVxuICBlbHNlIGlmIHQgPiByb3VuZF9uZWFyZXN0X2xiXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoZmxvb3IgKHQgKy4gMC41KSkpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdCA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiBpcm91bmRfbmVhcmVzdF82NFxuICB8IFczMiAtPiBpcm91bmRfbmVhcmVzdF8zMlxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0X2V4bl8zMiB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKCkpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yICh0ICsuIDAuNSkgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsXCIgKGJveCB0KSAoKSlcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX25lYXJlc3RfZXhuXzY0IHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW5cbiAgICBpZiB0IDwgcm91bmRfbmVhcmVzdF91YlxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdClcbiAgICBlbHNlIGlmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKVxuICBlbHNlIGlmIHQgPiByb3VuZF9uZWFyZXN0X2xiXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoZmxvb3IgKHQgKy4gMC41KSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCIgKGJveCB0KSAoKVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0X2V4biA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiBpcm91bmRfbmVhcmVzdF9leG5fNjRcbiAgfCBXMzIgLT4gaXJvdW5kX25lYXJlc3RfZXhuXzMyXG47O1xuXG4oKiBUaGUgZm9sbG93aW5nIFtpcm91bmRfZXhuXSBhbmQgW2lyb3VuZF0gZnVuY3Rpb25zIGFyZSBzbG93ZXIgdGhhbiB0aGUgb25lcyBhYm92ZS5cbiAgIFRoZWlyIGVxdWl2YWxlbmNlIHRvIHRob3NlIGZ1bmN0aW9ucyBpcyB0ZXN0ZWQgaW4gdGhlIHVuaXQgdGVzdHMgYmVsb3cuICopXG5cbmxldFtAaW5saW5lXSBpcm91bmRfZXhuID8oZGlyID0gYE5lYXJlc3QpIHQgPVxuICBtYXRjaCBkaXIgd2l0aFxuICB8IGBaZXJvIC0+IGlyb3VuZF90b3dhcmRzX3plcm9fZXhuIHRcbiAgfCBgTmVhcmVzdCAtPiBpcm91bmRfbmVhcmVzdF9leG4gdFxuICB8IGBVcCAtPiBpcm91bmRfdXBfZXhuIHRcbiAgfCBgRG93biAtPiBpcm91bmRfZG93bl9leG4gdFxuOztcblxubGV0IGlyb3VuZCA/KGRpciA9IGBOZWFyZXN0KSB0ID1cbiAgdHJ5IFNvbWUgKGlyb3VuZF9leG4gfmRpciB0KSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgaXNfaW5mIHQgPSAxLiAvLiB0ID0gMC5cbmxldCBpc19maW5pdGUgdCA9IHQgLS4gdCA9IDAuXG5cbmxldCBtaW5faW5hbiAoeCA6IHQpIHkgPVxuICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5XG47O1xuXG5sZXQgbWF4X2luYW4gKHggOiB0KSB5ID1cbiAgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgaWYgeCA+IHkgdGhlbiB4IGVsc2UgeVxuOztcblxubGV0IGFkZCA9ICggKy4gKVxubGV0IHN1YiA9ICggLS4gKVxubGV0IG5lZyA9ICggfi0uIClcbmxldCBhYnMgPSBhYnNfZmxvYXRcbmxldCBzY2FsZSA9ICggKi4gKVxubGV0IHNxdWFyZSB4ID0geCAqLiB4XG5cbm1vZHVsZSBQYXJ0cyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZnJhY3Rpb25hbCA6IHQgLT4gZmxvYXRcbiAgdmFsIGludGVncmFsIDogdCAtPiBmbG9hdFxuICB2YWwgbW9kZiA6IGZsb2F0IC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdCAqIGZsb2F0XG5cbiAgbGV0IGZyYWN0aW9uYWwgdCA9IGZzdCB0XG4gIGxldCBpbnRlZ3JhbCB0ID0gc25kIHRcbiAgbGV0IG1vZGYgPSBtb2RmXG5lbmRcblxubGV0IG1vZGYgPSBQYXJ0cy5tb2RmXG5sZXQgcm91bmRfZG93biA9IGZsb29yXG5sZXQgcm91bmRfdXAgPSBjZWlsXG5sZXQgcm91bmRfdG93YXJkc196ZXJvIHQgPSBpZiB0ID49IDAuIHRoZW4gcm91bmRfZG93biB0IGVsc2Ugcm91bmRfdXAgdFxuXG4oKiBzZWUgdGhlIGNvbW1lbnQgYWJvdmUgW3JvdW5kX25lYXJlc3RfbGJdIGFuZCBbcm91bmRfbmVhcmVzdF91Yl0gZm9yIGFuIGV4cGxhbmF0aW9uICopXG5sZXRbQG9jYW1sLmlubGluZV0gcm91bmRfbmVhcmVzdF9pbmxpbmUgdCA9XG4gIGlmIHQgPiByb3VuZF9uZWFyZXN0X2xiICYmIHQgPCByb3VuZF9uZWFyZXN0X3ViXG4gIHRoZW4gZmxvb3IgKGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQpXG4gIGVsc2UgdCArLiAwLlxuOztcblxubGV0IHJvdW5kX25lYXJlc3QgdCA9IChyb3VuZF9uZWFyZXN0X2lubGluZSBbQG9jYW1sLmlubGluZWQgYWx3YXlzXSkgdFxuXG5sZXQgcm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4gdCA9XG4gIGlmIHQgPD0gcm91bmRfbmVhcmVzdF9sYiB8fCB0ID49IHJvdW5kX25lYXJlc3RfdWJcbiAgdGhlbiB0ICsuIDAuXG4gIGVsc2UgKFxuICAgIGxldCBmbG9vciA9IGZsb29yIHQgaW5cbiAgICAoKiBbY2VpbF9vcl9zdWNjID0gaWYgdCBpcyBhbiBpbnRlZ2VyIHRoZW4gdCArLiAxLiBlbHNlIGNlaWwgdF0uICBGYXN0ZXIgdGhhbiBbY2VpbF0uICopXG4gICAgbGV0IGNlaWxfb3Jfc3VjYyA9IGZsb29yICsuIDEuIGluXG4gICAgbGV0IGRpZmZfZmxvb3IgPSB0IC0uIGZsb29yIGluXG4gICAgbGV0IGRpZmZfY2VpbCA9IGNlaWxfb3Jfc3VjYyAtLiB0IGluXG4gICAgaWYgZGlmZl9mbG9vciA8IGRpZmZfY2VpbFxuICAgIHRoZW4gZmxvb3JcbiAgICBlbHNlIGlmIGRpZmZfZmxvb3IgPiBkaWZmX2NlaWxcbiAgICB0aGVuIGNlaWxfb3Jfc3VjY1xuICAgIGVsc2UgaWYgKCogZXhhY3QgdGllLCBwaWNrIHRoZSBldmVuICopXG4gICAgICBtb2RfZmxvYXQgZmxvb3IgMi4gPSAwLlxuICAgIHRoZW4gZmxvb3JcbiAgICBlbHNlIGNlaWxfb3Jfc3VjYylcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9sYm91bmQgPSBsb3dlcl9ib3VuZF9mb3JfaW50IEludDYzLm51bV9iaXRzXG5sZXQgaW50NjNfcm91bmRfdWJvdW5kID0gdXBwZXJfYm91bmRfZm9yX2ludCBJbnQ2My5udW1fYml0c1xuXG5sZXQgaW50NjNfcm91bmRfdXBfZXhuIHQgPVxuICBpZiB0ID4gMC4wXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGNlaWwgdCBpblxuICAgIGlmIHQnIDw9IGludDYzX3JvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiXG4gICAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAgICgpKVxuICBlbHNlIGlmIHQgPj0gaW50NjNfcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgKClcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9kb3duX2V4biB0ID1cbiAgaWYgdCA+PSAwLjBcbiAgdGhlblxuICAgIGlmIHQgPD0gaW50NjNfcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiXG4gICAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yIHQgaW5cbiAgICBpZiB0JyA+PSBpbnQ2M19yb3VuZF9sYm91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIlxuICAgICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgICAoKSlcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4biB0MCA9XG4gIGxldCB0ID0gKHJvdW5kX25lYXJlc3RfaW5saW5lIFtAb2NhbWwuaW5saW5lZCBhbHdheXNdKSB0MCBpblxuICBpZiB0ID4gMC5cbiAgdGhlblxuICAgIGlmIHQgPD0gaW50NjNfcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiXG4gICAgICAgIChib3ggdDApXG4gICAgICAgICgpXG4gIGVsc2UgaWYgdCA+PSBpbnQ2M19yb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIlxuICAgICAgKGJveCB0MClcbiAgICAgICgpXG47O1xuXG5sZXQgaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG4gZiA9IEludDYzLm9mX2ludCAoaXJvdW5kX25lYXJlc3RfZXhuIGYpXG5cbmxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X2V4biA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4blxuICB8IFczMiAtPiBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4blxuOztcblxubGV0IHJvdW5kID8oZGlyID0gYE5lYXJlc3QpIHQgPVxuICBtYXRjaCBkaXIgd2l0aFxuICB8IGBOZWFyZXN0IC0+IHJvdW5kX25lYXJlc3QgdFxuICB8IGBEb3duIC0+IHJvdW5kX2Rvd24gdFxuICB8IGBVcCAtPiByb3VuZF91cCB0XG4gIHwgYFplcm8gLT4gcm91bmRfdG93YXJkc196ZXJvIHRcbjs7XG5cbm1vZHVsZSBDbGFzcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgSW5maW5pdGVcbiAgICB8IE5hblxuICAgIHwgTm9ybWFsXG4gICAgfCBTdWJub3JtYWxcbiAgICB8IFplcm9cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogdCAtPiB0IC0+IGludClcbiAgbGV0IGFsbCA9IChbIEluZmluaXRlOyBOYW47IE5vcm1hbDsgU3Vibm9ybWFsOyBaZXJvIF0gOiB0IGxpc3QpXG5cbiAgbGV0IHRfb2Zfc2V4cCA9XG4gICAgKGxldCBlcnJvcl9zb3VyY2VfXzAwN18gPSBcImZsb2F0Lm1sLkNsYXNzLnRcIiBpblxuICAgICBmdW5jdGlvblxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbmZpbml0ZVwiIHwgXCJJbmZpbml0ZVwiKSAtPiBJbmZpbml0ZVxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIC0+IE5hblxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJub3JtYWxcIiB8IFwiTm9ybWFsXCIpIC0+IE5vcm1hbFxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJzdWJub3JtYWxcIiB8IFwiU3Vibm9ybWFsXCIpIC0+IFN1Ym5vcm1hbFxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgLT4gWmVyb1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImluZmluaXRlXCIgfCBcIkluZmluaXRlXCIpIDo6IF8pIGFzXG4gICAgICAgc2V4cF9fMDA4XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDhfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSA6OiBfKSBhcyBzZXhwX18wMDhfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwN18gc2V4cF9fMDA4X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5vcm1hbFwiIHwgXCJOb3JtYWxcIikgOjogXykgYXMgc2V4cF9fMDA4XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwOF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJzdWJub3JtYWxcIiB8IFwiU3Vibm9ybWFsXCIpIDo6IF8pIGFzXG4gICAgICAgc2V4cF9fMDA4XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDhfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwOF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDhfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDZfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwN18gc2V4cF9fMDA2X1xuICAgICB8IHNleHBfXzAwNl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDZfXG4gICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgSW5maW5pdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiSW5maW5pdGVcIlxuICAgICAgfCBOYW4gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmFuXCJcbiAgICAgIHwgTm9ybWFsIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5vcm1hbFwiXG4gICAgICB8IFN1Ym5vcm1hbCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJTdWJub3JtYWxcIlxuICAgICAgfCBaZXJvIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlplcm9cIlxuICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICB7IHVudHlwZWQgPVxuICAgICAgICBWYXJpYW50XG4gICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiSW5maW5pdGVcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTmFuXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIk5vcm1hbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJTdWJub3JtYWxcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSBzdHJpbmdfb2Zfc2V4cCAoc2V4cF9vZl90IHQpXG4gIGxldCBvZl9zdHJpbmcgcyA9IHRfb2Zfc2V4cCAoc2V4cF9vZl9zdHJpbmcgcylcbmVuZFxuXG5sZXQgY2xhc3NpZnkgdCA9XG4gIGxldCBtb2R1bGUgQyA9IENsYXNzIGluXG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHQgd2l0aFxuICB8IEZQX25vcm1hbCAtPiBDLk5vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbCAtPiBDLlN1Ym5vcm1hbFxuICB8IEZQX3plcm8gLT4gQy5aZXJvXG4gIHwgRlBfaW5maW5pdGUgLT4gQy5JbmZpbml0ZVxuICB8IEZQX25hbiAtPiBDLk5hblxuOztcblxubGV0IGluc2VydF91bmRlcnNjb3JlcyA/KGRlbGltaXRlciA9ICdfJykgPyhzdHJpcF96ZXJvID0gZmFsc2UpIHN0cmluZyA9XG4gIG1hdGNoIFN0cmluZy5sc3BsaXQyIHN0cmluZyB+b246Jy4nIHdpdGhcbiAgfCBOb25lIC0+IEludF9jb252ZXJzaW9ucy5pbnNlcnRfZGVsaW1pdGVyIHN0cmluZyB+ZGVsaW1pdGVyXG4gIHwgU29tZSAobGVmdCwgcmlnaHQpIC0+XG4gICAgbGV0IGxlZnQgPSBJbnRfY29udmVyc2lvbnMuaW5zZXJ0X2RlbGltaXRlciBsZWZ0IH5kZWxpbWl0ZXIgaW5cbiAgICBsZXQgcmlnaHQgPVxuICAgICAgaWYgc3RyaXBfemVybyB0aGVuIFN0cmluZy5yc3RyaXAgcmlnaHQgfmRyb3A6KGZ1biBjIC0+IENoYXIuKCA9ICkgYyAnMCcpIGVsc2UgcmlnaHRcbiAgICBpblxuICAgIChtYXRjaCByaWdodCB3aXRoXG4gICAgIHwgXCJcIiAtPiBsZWZ0XG4gICAgIHwgXyAtPiBsZWZ0IF4gXCIuXCIgXiByaWdodClcbjs7XG5cbmxldCB0b19zdHJpbmdfaHVtID9kZWxpbWl0ZXIgPyhkZWNpbWFscyA9IDMpID9zdHJpcF96ZXJvID8oZXhwbGljaXRfcGx1cyA9IGZhbHNlKSBmID1cbiAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBkZWNpbWFscyAwXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwidG9fc3RyaW5nX2h1bTogaW52YWxpZCBhcmd1bWVudCB+ZGVjaW1hbHM9JWRcIiBkZWNpbWFscyAoKTtcbiAgbWF0Y2ggY2xhc3NpZnkgZiB3aXRoXG4gIHwgQ2xhc3MuSW5maW5pdGUgLT4gaWYgZiA+IDAuIHRoZW4gXCJpbmZcIiBlbHNlIFwiLWluZlwiXG4gIHwgQ2xhc3MuTmFuIC0+IFwibmFuXCJcbiAgfCBDbGFzcy5Ob3JtYWwgfCBDbGFzcy5TdWJub3JtYWwgfCBDbGFzcy5aZXJvIC0+XG4gICAgbGV0IHMgPVxuICAgICAgaWYgZXhwbGljaXRfcGx1cyB0aGVuIHNwcmludGYgXCIlKy4qZlwiIGRlY2ltYWxzIGYgZWxzZSBzcHJpbnRmIFwiJS4qZlwiIGRlY2ltYWxzIGZcbiAgICBpblxuICAgIGluc2VydF91bmRlcnNjb3JlcyBzID9kZWxpbWl0ZXIgP3N0cmlwX3plcm9cbjs7XG5cbmxldCBzZXhwX29mX3QgdCA9XG4gIGxldCBzZXhwID0gc2V4cF9vZl90IHQgaW5cbiAgbWF0Y2ggIVNleHAub2ZfZmxvYXRfc3R5bGUgd2l0aFxuICB8IGBOb191bmRlcnNjb3JlcyAtPiBzZXhwXG4gIHwgYFVuZGVyc2NvcmVzIC0+XG4gICAgKG1hdGNoIHNleHAgd2l0aFxuICAgICB8IExpc3QgXyAtPlxuICAgICAgIHJhaXNlX3NcbiAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgIFwiW3NleHBfb2ZfZmxvYXRdIHByb2R1Y2VkIHN0cmFuZ2Ugc2V4cFwiXG4gICAgICAgICAgICBbIFwic2V4cFwiLCBTZXhwLnNleHBfb2ZfdCBzZXhwIF0pXG4gICAgIHwgQXRvbSBzdHJpbmcgLT5cbiAgICAgICBpZiBTdHJpbmcuY29udGFpbnMgc3RyaW5nICdFJyB0aGVuIHNleHAgZWxzZSBBdG9tIChpbnNlcnRfdW5kZXJzY29yZXMgc3RyaW5nKSlcbjs7XG5cbmxldCB0b19wYWRkZWRfY29tcGFjdF9zdHJpbmdfY3VzdG9tIHQgPyhwcmVmaXggPSBcIlwiKSB+a2lsbyB+bWVnYSB+Z2lnYSB+dGVyYSA/cGV0YSAoKSA9XG4gICgqIFJvdW5kIGEgcmF0aW8gdG93YXJkIHRoZSBuZWFyZXN0IGludGVnZXIsIHJlc29sdmluZyB0aWVzIHRvd2FyZCB0aGUgbmVhcmVzdCBldmVuXG4gICAgIG51bWJlci4gIEZvciBzYW5lIGlucHV0cyAoaW4gcGFydGljdWxhciwgd2hlbiBbZGVub21pbmF0b3JdIGlzIGFuIGludGVnZXIgYW5kXG4gICAgIFthYnMgbnVtZXJhdG9yIDwgMmU1Ml0pIHRoaXMgc2hvdWxkIGJlIGFjY3VyYXRlLiAgT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IG1pZ2h0IGJlIGFcbiAgICAgbGl0dGxlIGJpdCBvZmYsIGJ1dCB3ZSBkb24ndCByZWFsbHkgdXNlIHRoYXQgY2FzZS4gKilcbiAgbGV0IGlyb3VuZF9yYXRpb19leG4gfm51bWVyYXRvciB+ZGVub21pbmF0b3IgPVxuICAgIGxldCBrID0gZmxvb3IgKG51bWVyYXRvciAvLiBkZW5vbWluYXRvcikgaW5cbiAgICAoKiBpZiBbYWJzIGsgPCAyZTUzXSwgdGhlbiBib3RoIFtrXSBhbmQgW2sgKy4gMS5dIGFyZSBhY2N1cmF0ZWx5IHJlcHJlc2VudGVkLCBhbmQgaW5cbiAgICAgICBwYXJ0aWN1bGFyIFtrICsuIDEuID4ga10uICBJZiBbZGVub21pbmF0b3JdIGlzIGFsc28gYW4gaW50ZWdlciwgYW5kXG4gICAgICAgW2FicyAoZGVub21pbmF0b3IgKi4gKGsgKy4gMSkpIDwgMmU1M10gKGFuZCBpbiBzb21lIG90aGVyIGNhc2VzLCB0b28pLCB0aGVuIFtsb3dlcl1cbiAgICAgICBhbmQgW2hpZ2hlcl0gYXJlIGFjdHVhbGx5IGJvdGggYWNjdXJhdGUuICBTaW5jZSAocm91Z2hseSlcbiAgICAgICBbbnVtZXJhdG9yID0gZGVub21pbmF0b3IgKi4ga10gdGhlbiBmb3IgW2FicyBudW1lcmF0b3IgPCAyZTUyXSB3ZSBzaG91bGQgYmVcbiAgICAgICBmaW5lLiAqKVxuICAgIGxldCBsb3dlciA9IGRlbm9taW5hdG9yICouIGsgaW5cbiAgICBsZXQgaGlnaGVyID0gZGVub21pbmF0b3IgKi4gKGsgKy4gMS4pIGluXG4gICAgKCogU3VidHJhY3RpbmcgbnVtYmVycyB3aXRoaW4gYSBmYWN0b3Igb2YgdHdvIGZyb20gZWFjaCBvdGhlciBpcyBhY2N1cmF0ZS5cbiAgICAgICBTbyBlaXRoZXIgdGhlIHR3byBzdWJ0cmFjdGlvbnMgYmVsb3cgYXJlIGFjY3VyYXRlLCBvciBrID0gMCwgb3IgayA9IC0xLlxuICAgICAgIEluIGNhc2Ugb2YgYSB0aWUsIHJvdW5kIHRvIGV2ZW4uICopXG4gICAgbGV0IGRpZmZfcmlnaHQgPSBoaWdoZXIgLS4gbnVtZXJhdG9yIGluXG4gICAgbGV0IGRpZmZfbGVmdCA9IG51bWVyYXRvciAtLiBsb3dlciBpblxuICAgIGxldCBrID0gaXJvdW5kX25lYXJlc3RfZXhuIGsgaW5cbiAgICBpZiBkaWZmX3JpZ2h0IDwgZGlmZl9sZWZ0XG4gICAgdGhlbiBrICsgMVxuICAgIGVsc2UgaWYgZGlmZl9yaWdodCA+IGRpZmZfbGVmdFxuICAgIHRoZW4ga1xuICAgIGVsc2UgaWYgKCogYSB0aWUgKilcbiAgICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKGsgbW9kIDIpIDBcbiAgICB0aGVuIGtcbiAgICBlbHNlIGsgKyAxXG4gIGluXG4gIG1hdGNoIGNsYXNzaWZ5IHQgd2l0aFxuICB8IENsYXNzLkluZmluaXRlIC0+IGlmIHQgPCAwLjAgdGhlbiBcIi1pbmYgIFwiIGVsc2UgXCJpbmYgIFwiXG4gIHwgQ2xhc3MuTmFuIC0+IFwibmFuICBcIlxuICB8IENsYXNzLlN1Ym5vcm1hbCB8IENsYXNzLk5vcm1hbCB8IENsYXNzLlplcm8gLT5cbiAgICBsZXQgZ28gdCA9XG4gICAgICBsZXQgY29udl9vbmUgdCA9XG4gICAgICAgIGFzc2VydCAoMC4gPD0gdCAmJiB0IDwgOTk5Ljk1KTtcbiAgICAgICAgbGV0IHggPSBwcmVmaXggXiBmb3JtYXRfZmxvYXQgXCIlLjFmXCIgdCBpblxuICAgICAgICAoKiBGaXggdGhlIFwiLjBcIiBzdWZmaXggKilcbiAgICAgICAgaWYgU3RyaW5nLmlzX3N1ZmZpeCB4IH5zdWZmaXg6XCIuMFwiXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB4ID0gQnl0ZXMub2Zfc3RyaW5nIHggaW5cbiAgICAgICAgICBsZXQgbiA9IEJ5dGVzLmxlbmd0aCB4IGluXG4gICAgICAgICAgQnl0ZXMuc2V0IHggKG4gLSAxKSAnICc7XG4gICAgICAgICAgQnl0ZXMuc2V0IHggKG4gLSAyKSAnICc7XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp4KVxuICAgICAgICBlbHNlIHhcbiAgICAgIGluXG4gICAgICBsZXQgY29udiBtYWcgdCBkZW5vbWluYXRvciA9XG4gICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgKGRlbm9taW5hdG9yID0gMTAwLiAmJiB0ID49IDk5OS45NSlcbiAgICAgICAgICB8fCAoZGVub21pbmF0b3IgPj0gMTAwXzAwMC4gJiYgdCA+PSByb3VuZF9uZWFyZXN0IChkZW5vbWluYXRvciAqLiA5Ljk5OV81KSkpO1xuICAgICAgICBhc3NlcnQgKHQgPCByb3VuZF9uZWFyZXN0IChkZW5vbWluYXRvciAqLiA5Xzk5OS41KSk7XG4gICAgICAgIGxldCBpLCBkID1cbiAgICAgICAgICBsZXQgayA9IGlyb3VuZF9yYXRpb19leG4gfm51bWVyYXRvcjp0IH5kZW5vbWluYXRvciBpblxuICAgICAgICAgICgqIFttb2RdIGlzIG9rYXkgaGVyZSBiZWNhdXNlIHdlIGtub3cgaSA+PSAwLiAqKVxuICAgICAgICAgIGsgLyAxMCwgayBtb2QgMTBcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgICAgICBhc3NlcnQgKDAgPD0gaSAmJiBpIDwgMTAwMCk7XG4gICAgICAgIGFzc2VydCAoMCA8PSBkICYmIGQgPCAxMCk7XG4gICAgICAgIGlmIGQgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIiVzJWQlcyBcIiBwcmVmaXggaSBtYWdcbiAgICAgICAgZWxzZSBzcHJpbnRmIFwiJXMlZCVzJWRcIiBwcmVmaXggaSBtYWcgZFxuICAgICAgaW5cbiAgICAgICgqIFdoaWxlIHRoZSBzdGFuZGFyZCBtZXRyaWMgcHJlZml4ZXMgKGUuZy4gY2FwaXRhbCBcIk1cIiByYXRoZXIgdGhhbiBcIm1cIiwgWzFdKSBhcmVcbiAgICAgICAgIG5vbWluYWxseSBtb3JlIGNvcnJlY3QsIHRoaXMgaGluZGVycyByZWFkYWJpbGl0eSBpbiBvdXIgY2FzZS4gIEUuZy4sIDEwRzYgYW5kXG4gICAgICAgICAxMDY2IGxvb2sgdG9vIHNpbWlsYXIuICBUaGF0J3MgYW4gZXh0cmVtZSBleGFtcGxlLCBidXQgaW4gZ2VuZXJhbCBrLG0sZyx0LHBcbiAgICAgICAgIHByb2JhYmx5IHN0YW5kIG91dCBiZXR0ZXIgdGhhbiBLLE0sRyxULFAgd2hlbiBpbnRlcnNwZXJzZWQgd2l0aCBkaWdpdHMuXG5cbiAgICAgICAgIFsxXSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01ldHJpY19wcmVmaXggKilcbiAgICAgICgqIFRoZSB0cmljayBoZXJlIGlzIHRoYXQ6XG4gICAgICAgICAtIHRoZSBmaXJzdCBib3VuZGFyeSAoOTk5Ljk1KSBhcyBhIGZsb2F0IGlzIHNsaWdodGx5IG92ZXItcmVwcmVzZW50ZWQgKHNvIGl0IGlzXG4gICAgICAgICAgIGJldHRlciBhcHByb3hpbWF0ZWQgYXMgXCIxa1wiIHRoYW4gYXMgXCI5OTkuOVwiKSxcbiAgICAgICAgIC0gdGhlIG90aGVyIGJvdW5kYXJpZXMgYXJlIGFjY3VyYXRlbHkgcmVwcmVzZW50ZWQsIGJlY2F1c2UgdGhleSBhcmUgaW50ZWdlcnMuXG4gICAgICAgICAgIFRoYXQncyB3aHkgdGhlIHN0cmljdCBlcXVhbGl0aWVzIGJlbG93IGRvIGV4YWN0bHkgd2hhdCB3ZSB3YW50LiAqKVxuICAgICAgaWYgdCA8IDk5OS45NUUwXG4gICAgICB0aGVuIGNvbnZfb25lIHRcbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUUzXG4gICAgICB0aGVuIGNvbnYga2lsbyB0IDEwMC5cbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUU2XG4gICAgICB0aGVuIGNvbnYgbWVnYSB0IDEwMF8wMDAuXG4gICAgICBlbHNlIGlmIHQgPCA5OTkuOTVFOVxuICAgICAgdGhlbiBjb252IGdpZ2EgdCAxMDBfMDAwXzAwMC5cbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUUxMlxuICAgICAgdGhlbiBjb252IHRlcmEgdCAxMDBfMDAwXzAwMF8wMDAuXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcGV0YSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzcHJpbnRmIFwiJXMlLjFlXCIgcHJlZml4IHRcbiAgICAgICAgfCBTb21lIHBldGEgLT5cbiAgICAgICAgICBpZiB0IDwgOTk5Ljk1RTE1XG4gICAgICAgICAgdGhlbiBjb252IHBldGEgdCAxMDBfMDAwXzAwMF8wMDBfMDAwLlxuICAgICAgICAgIGVsc2Ugc3ByaW50ZiBcIiVzJS4xZVwiIHByZWZpeCB0KVxuICAgIGluXG4gICAgaWYgdCA+PSAwLiB0aGVuIGdvIHQgZWxzZSBcIi1cIiBeIGdvIH4tLnRcbjs7XG5cbmxldCB0b19wYWRkZWRfY29tcGFjdF9zdHJpbmcgdCA9XG4gIHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0b20gdCB+a2lsbzpcImtcIiB+bWVnYTpcIm1cIiB+Z2lnYTpcImdcIiB+dGVyYTpcInRcIiB+cGV0YTpcInBcIiAoKVxuOztcblxuKCogUGVyZm9ybWFuY2Ugbm90ZTogSW5pdGlhbGl6aW5nIHRoZSBhY2N1bXVsYXRvciB0byAxIHJlc3VsdHMgaW4gb25lIGV4dHJhXG4gICBtdWx0aXBseTsgZS5nLiwgdG8gY29tcHV0ZSB4ICoqIDQsIHdlIGluIHByaW5jaXBsZSBvbmx5IG5lZWQgMiBtdWx0aXBsaWVzLFxuICAgYnV0IHRoaXMgZnVuY3Rpb24gd2lsbCBoYXZlIDMgbXVsdGlwbGllcy4gIEhvd2V2ZXIsIGF0dGVtcHRzIHRvIGF2b2lkIHRoaXNcbiAgIChsaWtlIGRlY3JlbWVudGluZyBuIGFuZCBpbml0aWFsaXppbmcgYWNjdW0gdG8gYmUgeCwgb3IgaGFuZGxpbmcgc21hbGxcbiAgIGV4cG9uZW50cyBhcyBhIHNwZWNpYWwgY2FzZSkgaGF2ZSBub3QgeWllbGRlZCBhbnl0aGluZyB0aGF0IGlzIGEgbmV0XG4gICBpbXByb3ZlbWVudC5cbiopXG5sZXQgaW50X3BvdyB4IG4gPVxuICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gMS5cbiAgZWxzZSAoXG4gICAgKCogVXNpbmcgW3ggKy4gKC0wLildIG9uIHRoZSBmb2xsb3dpbmcgbGluZSBjb252aW5jZXMgdGhlIGNvbXBpbGVyIHRvIGF2b2lkIGEgY2VydGFpblxuICAgICAgIGJveGluZyAodGhhdCB3b3VsZCByZXN1bHQgaW4gYWxsb2NhdGlvbiBpbiBlYWNoIGl0ZXJhdGlvbikuICBTb29uLCB0aGUgY29tcGlsZXJcbiAgICAgICBzaG91bGRuJ3QgbmVlZCB0aGlzIFwiaGludFwiIHRvIGF2b2lkIHRoZSBib3hpbmcuICBUaGUgcmVhc29uIHdlIGFkZCAtMCByYXRoZXIgdGhhbiAwXG4gICAgICAgaXMgdGhhdCBbeCArLiAoLTAuKV0gaXMgYXBwYXJlbnRseSBhbHdheXMgdGhlIHNhbWUgYXMgW3hdLCB3aGVyZWFzIFt4ICsuIDAuXSBpc1xuICAgICAgIG5vdCwgaW4gdGhhdCBpdCBzZW5kcyBbLTAuXSB0byBbMC5dLiAgVGhpcyBtYWtlcyBhIGRpZmZlcmVuY2UgYmVjYXVzZSB3ZSB3YW50XG4gICAgICAgW2ludF9wb3cgKC0wLikgKC0xKV0gdG8gcmV0dXJuIG5lZ19pbmZpbml0eSBqdXN0IGxpa2UgWy0wLiAqKiAtMS5dIHdvdWxkLiAgKilcbiAgICBsZXQgeCA9IHJlZiAoeCArLiAtMC4pIGluXG4gICAgbGV0IG4gPSByZWYgbiBpblxuICAgIGxldCBhY2N1bSA9IHJlZiAxLiBpblxuICAgIGlmICFuIDwgMFxuICAgIHRoZW4gKFxuICAgICAgKCogeCAqKiBuID0gKDEveCkgKiogLW4gKilcbiAgICAgIHggOj0gMS4gLy4gIXg7XG4gICAgICBuIDo9IH4tICghbik7XG4gICAgICBpZiAhbiA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBuIG11c3QgaGF2ZSBiZWVuIG1pbl9pbnQsIHNvIGl0IGlzIG5vdyBzbyBiaWcgdGhhdCBpdCBoYXMgd3JhcHBlZCBhcm91bmQuXG4gICAgICAgICAgIFdlIGRlY3JlbWVudCBpdCBzbyB0aGF0IGl0IGxvb2tzIHBvc2l0aXZlIGFnYWluLCBidXQgYWNjb3JkaW5nbHkgaGF2ZVxuICAgICAgICAgICB0byBwdXQgYW4gZXh0cmEgZmFjdG9yIG9mIHggaW4gdGhlIGFjY3VtdWxhdG9yLlxuICAgICAgICAqKVxuICAgICAgICBhY2N1bSA6PSAheDtcbiAgICAgICAgZGVjciBuKSk7XG4gICAgKCogTGV0dGluZyBbYV0gZGVub3RlICh0aGUgb3JpZ2luYWwgdmFsdWUgb2YpIFt4ICoqIG5dLCB3ZSBtYWludGFpblxuICAgICAgIHRoZSBpbnZhcmlhbnQgdGhhdCBbKHggKiogbikgKi4gYWNjdW0gPSBhXS4gKilcbiAgICB3aGlsZSAhbiA+IDEgZG9cbiAgICAgIGlmICFuIGxhbmQgMSA8PiAwIHRoZW4gYWNjdW0gOj0gIXggKi4gIWFjY3VtO1xuICAgICAgeCA6PSAheCAqLiAheDtcbiAgICAgIG4gOj0gIW4gbHNyIDFcbiAgICBkb25lO1xuICAgICgqIG4gaXMgbmVjZXNzYXJpbHkgMSBhdCB0aGlzIHBvaW50LCBzbyB0aGVyZSBpcyBvbmUgYWRkaXRpb25hbFxuICAgICAgIG11bHRpcGxpY2F0aW9uIGJ5IHguICopXG4gICAgIXggKi4gIWFjY3VtKVxuOztcblxubGV0IHJvdW5kX2dlbiB4IH5ob3cgPVxuICBpZiB4ID0gMC5cbiAgdGhlbiAwLlxuICBlbHNlIGlmIG5vdCAoaXNfZmluaXRlIHgpXG4gIHRoZW4geFxuICBlbHNlIChcbiAgICAoKiBTaWduaWZpY2FudCBkaWdpdHMgYW5kIGRlY2ltYWwgZGlnaXRzLiAqKVxuICAgIGxldCBzZCwgZGQgPVxuICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgIHwgYHNpZ25pZmljYW50X2RpZ2l0cyBzZCAtPlxuICAgICAgICBsZXQgZGQgPSBzZCAtIHRvX2ludCAocm91bmRfdXAgKGxvZzEwIChhYnMgeCkpKSBpblxuICAgICAgICBzZCwgZGRcbiAgICAgIHwgYGRlY2ltYWxfZGlnaXRzIGRkIC0+XG4gICAgICAgIGxldCBzZCA9IGRkICsgdG9faW50IChyb3VuZF91cCAobG9nMTAgKGFicyB4KSkpIGluXG4gICAgICAgIHNkLCBkZFxuICAgIGluXG4gICAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGlmIHNkIDwgMFxuICAgIHRoZW4gMC5cbiAgICBlbHNlIGlmIHNkID49IDE3XG4gICAgdGhlbiB4XG4gICAgZWxzZSAoXG4gICAgICAoKiBDaG9vc2UgdGhlIG9yZGVyIHRoYXQgaXMgZXhhY3RseSByZXByZXNlbnRhYmxlIGFzIGEgZmxvYXQuIFNtYWxsIHBvc2l0aXZlXG4gICAgICAgICBpbnRlZ2VycyBhcmUsIGJ1dCB0aGVpciBpbnZlcnNlcyBpbiBtb3N0IGNhc2VzIGFyZSBub3QuICopXG4gICAgICBsZXQgYWJzX2RkID0gSW50LmFicyBkZCBpblxuICAgICAgaWYgYWJzX2RkID4gMjIgfHwgc2QgPj0gMTZcbiAgICAgICgqIDEwKioyMiBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYSBmbG9hdCwgYnV0IDEwKioyMyBpcyBub3QsIHNvIHVzZSB0aGUgc2xvd1xuICAgICAgICAgcGF0aC4gIFNpbWlsYXJseSwgaWYgd2UgbmVlZCAxNiBzaWduaWZpY2FudCBkaWdpdHMgaW4gdGhlIHJlc3VsdCwgdGhlbiB0aGUgaW50ZWdlclxuICAgICAgICAgW3JvdW5kX25lYXJlc3QgKHggPG9wPiBvcmRlcildIG1pZ2h0IG5vdCBiZSBleGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYSBmbG9hdCwgc2luY2VcbiAgICAgICAgIGZvciBzb21lIHJhbmdlcyB3ZSBvbmx5IGhhdmUgMTUgZGlnaXRzIG9mIHByZWNpc2lvbiBndWFyYW50ZWVkLlxuXG4gICAgICAgICBUaGF0IHNhaWQsIHdlIGFyZSBzdGlsbCByb3VuZGluZyB0d2ljZSBoZXJlOlxuXG4gICAgICAgICAxKSBmaXJzdCB0aW1lIHdoZW4gcm91bmRpbmcgW3ggKi4gb3JkZXJdIG9yIFt4IC8uIG9yZGVyXSB0byB0aGUgbmVhcmVzdCBmbG9hdFxuICAgICAgICAgKGp1c3QgdGhlIG5vcm1hbCB3YXkgZmxvYXRpbmctcG9pbnQgbXVsdGlwbGljYXRpb24gb3IgZGl2aXNpb24gd29ya3MpLFxuXG4gICAgICAgICAyKSBzZWNvbmQgdGltZSB3aGVuIGFwcGx5aW5nIFtyb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbl0gdG8gdGhlIHJlc3VsdCBvZiB0aGVcbiAgICAgICAgIGFib3ZlIG9wZXJhdGlvblxuXG4gICAgICAgICBTbyBmb3IgYXJndW1lbnRzIHdpdGhpbiBhbiB1bHAgZnJvbSBhIHRpZSB3ZSBtaWdodCBzdGlsbCBwcm9kdWNlIGFuIG9mZi1ieS1vbmVcbiAgICAgICAgIHJlc3VsdC4gKilcbiAgICAgIHRoZW4gb2Zfc3RyaW5nIChzcHJpbnRmIFwiJS4qZ1wiIHNkIHgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG9yZGVyID0gaW50X3BvdyAxMC4gYWJzX2RkIGluXG4gICAgICAgIGlmIGRkID49IDBcbiAgICAgICAgdGhlbiByb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbiAoeCAqLiBvcmRlcikgLy4gb3JkZXJcbiAgICAgICAgZWxzZSByb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbiAoeCAvLiBvcmRlcikgKi4gb3JkZXIpKSlcbjs7XG5cbmxldCByb3VuZF9zaWduaWZpY2FudCB4IH5zaWduaWZpY2FudF9kaWdpdHMgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBzaWduaWZpY2FudF9kaWdpdHMgMFxuICB0aGVuXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0LnJvdW5kX3NpZ25pZmljYW50OiBpbnZhbGlkIGFyZ3VtZW50IHNpZ25pZmljYW50X2RpZ2l0czolZFwiXG4gICAgICBzaWduaWZpY2FudF9kaWdpdHNcbiAgICAgICgpXG4gIGVsc2Ugcm91bmRfZ2VuIHggfmhvdzooYHNpZ25pZmljYW50X2RpZ2l0cyBzaWduaWZpY2FudF9kaWdpdHMpXG47O1xuXG5sZXQgcm91bmRfZGVjaW1hbCB4IH5kZWNpbWFsX2RpZ2l0cyA9IHJvdW5kX2dlbiB4IH5ob3c6KGBkZWNpbWFsX2RpZ2l0cyBkZWNpbWFsX2RpZ2l0cylcbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgKCogQWxzbyBmYWlscyBpZiBbbWluXSBvciBbbWF4XSBpcyBuYW4gKilcbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgKCogY2xhbXBfdW5jaGVja2VkIGlzIGluIGZsb2F0MC5tbCAqKVxuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICgqIEFsc28gZmFpbHMgaWYgW21pbl0gb3IgW21heF0gaXMgbmFuICopXG4gIGlmIG1pbiA8PSBtYXhcbiAgdGhlbiBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICBlbHNlXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuOztcblxubGV0ICggKyApID0gKCArLiApXG5sZXQgKCAtICkgPSAoIC0uIClcbmxldCAoICogKSA9ICggKi4gKVxubGV0ICggKiogKSA9ICggKiogKVxubGV0ICggLyApID0gKCAvLiApXG5sZXQgKCAlICkgPSAoICUuIClcbmxldCAoIH4tICkgPSAoIH4tLiApXG5cbmxldCBzaWduX2V4biB0IDogU2lnbi50ID1cbiAgaWYgdCA+IDAuXG4gIHRoZW4gUG9zXG4gIGVsc2UgaWYgdCA8IDAuXG4gIHRoZW4gTmVnXG4gIGVsc2UgaWYgdCA9IDAuXG4gIHRoZW4gWmVyb1xuICBlbHNlIEVycm9yLnJhaXNlX3MgKFNleHAubWVzc2FnZSBcIkZsb2F0LnNpZ25fZXhuIG9mIE5BTlwiIFsgXCJcIiwgc2V4cF9vZl90IHQgXSlcbjs7XG5cbmxldCBzaWduX29yX25hbiB0IDogU2lnbl9vcl9uYW4udCA9XG4gIGlmIHQgPiAwLiB0aGVuIFBvcyBlbHNlIGlmIHQgPCAwLiB0aGVuIE5lZyBlbHNlIGlmIHQgPSAwLiB0aGVuIFplcm8gZWxzZSBOYW5cbjs7XG5cbmxldCBpZWVlX25lZ2F0aXZlIHQgPVxuICBsZXQgYml0cyA9IFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQgaW5cbiAgUG9seS4oYml0cyA8IFN0ZGxpYi5JbnQ2NC56ZXJvKVxuOztcblxubGV0IGV4cG9uZW50X2JpdHMgPSAxMVxubGV0IG1hbnRpc3NhX2JpdHMgPSA1MlxubGV0IGV4cG9uZW50X21hc2s2NCA9IEludDY0LihzaGlmdF9sZWZ0IG9uZSBleHBvbmVudF9iaXRzIC0gb25lKVxubGV0IGV4cG9uZW50X21hc2sgPSBJbnQ2NC50b19pbnRfZXhuIGV4cG9uZW50X21hc2s2NFxubGV0IG1hbnRpc3NhX21hc2sgPSBJbnQ2My4oc2hpZnRfbGVmdCBvbmUgbWFudGlzc2FfYml0cyAtIG9uZSlcbmxldCBtYW50aXNzYV9tYXNrNjQgPSBJbnQ2My50b19pbnQ2NCBtYW50aXNzYV9tYXNrXG5cbmxldCBpZWVlX2V4cG9uZW50IHQgPVxuICBsZXQgYml0cyA9IFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQgaW5cbiAgSW50NjQuKGJpdF9hbmQgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgYml0cyBtYW50aXNzYV9iaXRzKSBleHBvbmVudF9tYXNrNjQpXG4gIHw+IFN0ZGxpYi5JbnQ2NC50b19pbnRcbjs7XG5cbmxldCBpZWVlX21hbnRpc3NhIHQgPVxuICBsZXQgYml0cyA9IFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQgaW5cbiAgKCogVGhpcyBpcyBzYWZlIGJlY2F1c2UgbWFudGlzc2FfbWFzazY0IDwgSW50NjMubWF4X3ZhbHVlICopXG4gIChJbnQ2My5vZl9pbnQ2NF90cnVuYykgU3RkbGliLkludDY0Lihsb2dhbmQgYml0cyBtYW50aXNzYV9tYXNrNjQpXG47O1xuXG5sZXQgY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhID1cbiAgaWYgSW50LihiaXRfYW5kIGV4cG9uZW50IGV4cG9uZW50X21hc2sgPD4gZXhwb25lbnQpXG4gIHRoZW4gZmFpbHdpdGhmIFwiZXhwb25lbnQgJWQgb3V0IG9mIHJhbmdlIFswLCAlZF1cIiBleHBvbmVudCBleHBvbmVudF9tYXNrICgpXG4gIGVsc2UgaWYgSW50NjMuKGJpdF9hbmQgbWFudGlzc2EgbWFudGlzc2FfbWFzayA8PiBtYW50aXNzYSlcbiAgdGhlblxuICAgIGZhaWx3aXRoZlxuICAgICAgXCJtYW50aXNzYSAlcyBvdXQgb2YgcmFuZ2UgWzAsICVzXVwiXG4gICAgICAoSW50NjMudG9fc3RyaW5nIG1hbnRpc3NhKVxuICAgICAgKEludDYzLnRvX3N0cmluZyBtYW50aXNzYV9tYXNrKVxuICAgICAgKClcbiAgZWxzZSAoXG4gICAgbGV0IHNpZ25fYml0cyA9IGlmIG5lZ2F0aXZlIHRoZW4gU3RkbGliLkludDY0Lm1pbl9pbnQgZWxzZSBTdGRsaWIuSW50NjQuemVybyBpblxuICAgIGxldCBleHB0X2JpdHMgPVxuICAgICAgU3RkbGliLkludDY0LnNoaWZ0X2xlZnQgKFN0ZGxpYi5JbnQ2NC5vZl9pbnQgZXhwb25lbnQpIG1hbnRpc3NhX2JpdHNcbiAgICBpblxuICAgIGxldCBtYW50X2JpdHMgPSBJbnQ2My50b19pbnQ2NCBtYW50aXNzYSBpblxuICAgIGxldCBiaXRzID0gU3RkbGliLkludDY0Lihsb2dvciBzaWduX2JpdHMgKGxvZ29yIGV4cHRfYml0cyBtYW50X2JpdHMpKSBpblxuICAgIFN0ZGxpYi5JbnQ2NC5mbG9hdF9vZl9iaXRzIGJpdHMpXG47O1xuXG5sZXQgY3JlYXRlX2llZWUgfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2EgPVxuICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYSlcbjs7XG5cbm1vZHVsZSBUZXJzZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgbGV0IHRvX3N0cmluZyB4ID0gUHJpbnRmLnNwcmludGYgXCIlLjhHXCIgeFxuICBsZXQgc2V4cF9vZl90IHggPSBTZXhwLkF0b20gKHRvX3N0cmluZyB4KVxuICBsZXQgb2Zfc3RyaW5nIHggPSBvZl9zdHJpbmcgeFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuZW5kXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxuKCogVGhlc2UgYXJlIHBhcnRseSBoZXJlIGFzIGEgcGVyZm9ybWFuY2UgaGFjayB0byBhdm9pZCBzb21lIGJveGluZyB3ZSdyZSBnZXR0aW5nIHdpdGhcbiAgIHRoZSB2ZXJzaW9ucyB3ZSBnZXQgZnJvbSBbV2l0aF96ZXJvXS4gIFRoZXkgYWxzbyBtYWtlIFtGbG9hdC5pc19uZWdhdGl2ZSBuYW5dIGFuZFxuICAgW0Zsb2F0LmlzX25vbl9wb3NpdGl2ZSBuYW5dIHJldHVybiBbZmFsc2VdOyB0aGUgdmVyc2lvbnMgd2UgZ2V0IGZyb20gW1dpdGhfemVyb10gcmV0dXJuXG4gICBbdHJ1ZV0uICopXG5sZXQgaXNfcG9zaXRpdmUgdCA9IHQgPiAwLlxubGV0IGlzX25vbl9uZWdhdGl2ZSB0ID0gdCA+PSAwLlxubGV0IGlzX25lZ2F0aXZlIHQgPSB0IDwgMC5cbmxldCBpc19ub25fcG9zaXRpdmUgdCA9IHQgPD0gMC5cblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuRmxvYXRcIlxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgZW5kKVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCAlICkgPSAoICUgKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludCA9IG9mX2ludFxuICBsZXQgb2ZfZmxvYXQgeCA9IHhcbmVuZFxuXG5tb2R1bGUgT19kb3QgPSBzdHJ1Y3RcbiAgbGV0ICggKi4gKSA9ICggKiApXG4gIGxldCAoICsuICkgPSAoICsgKVxuICBsZXQgKCAtLiApID0gKCAtIClcbiAgbGV0ICggLy4gKSA9ICggLyApXG4gIGxldCAoICUuICkgPSAoICUgKVxuICBsZXQgKCB+LS4gKSA9ICggfi0gKVxuICBsZXQgKCAqKi4gKSA9ICggKiogKVxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBib3ggPSBib3hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCA9IGNsYW1wX3VuY2hlY2tlZFxuICBsZXQgbG93ZXJfYm91bmRfZm9yX2ludCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnRcbiAgbGV0IHVwcGVyX2JvdW5kX2Zvcl9pbnQgPSB1cHBlcl9ib3VuZF9mb3JfaW50XG4gIGxldCBzcGVjaWFsaXplZF9oYXNoID0gaGFzaF9mbG9hdFxuICBsZXQgb25lX3VscF9sZXNzX3RoYW5faGFsZiA9IG9uZV91bHBfbGVzc190aGFuX2hhbGZcbiAgbGV0IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuID0gaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG5cbiAgbGV0IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuID0gaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG5cbiAgbGV0IGlyb3VuZF9uZWFyZXN0X2V4bl82NCA9IGlyb3VuZF9uZWFyZXN0X2V4bl82NFxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuKCogVGhlc2UgZnVuY3Rpb25zIHNwZWNpZmljYWxseSByZXBsYWNlIGRlZmF1bHRzIGluIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5cblxuICAgVGhlIGRlc2lyZWQgYmVoYXZpb3IgaGVyZSBpcyB0byBwcm9wYWdhdGUgYSBuYW4gaWYgZWl0aGVyIGFyZ3VtZW50IGlzIG5hbi4gQmVjYXVzZSB0aGVcbiAgIGZpcnN0IGNvbXBhcmlzb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGlmIGVpdGhlciBhcmd1bWVudCBpcyBuYW4sIGl0IHN1ZmZpY2VzIHRvXG4gICBjaGVjayBpZiB4IGlzIG5hbi4gVGhlbiwgd2hlbiB4IGlzIG5hbiBvciBib3RoIHggYW5kIHkgYXJlIG5hbiwgd2UgcmV0dXJuIHggPSBuYW47IGFuZFxuICAgd2hlbiB5IGlzIG5hbiBidXQgbm90IHgsIHdlIHJldHVybiB5ID0gbmFuLlxuXG4gICBUaGVyZSBhcmUgdmFyaW91cyB3YXlzIHRvIGltcGxlbWVudCB0aGVzZSBmdW5jdGlvbnMuICBUaGUgYmVuY2htYXJrIGJlbG93IHNob3dzIGEgZmV3XG4gICBkaWZmZXJlbnQgdmVyc2lvbnMuICBUaGlzIGJlbmNobWFyayB3YXMgcnVuIG92ZXIgYW4gYXJyYXkgb2YgcmFuZG9tIGZsb2F0cyAobm9uZSBvZlxuICAgd2hpY2ggYXJlIG5hbikuXG5cbiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAg4pSCIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pSCIFRpbWUvUnVuIOKUglxuICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkXG4gICDilIIgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgaWYgeCA8IHkgdGhlbiB4IGVsc2UgeSDilIIgICAyLjQydXMg4pSCXG4gICDilIIgaWYgaXNfbmFuIHggfHwgeCA8IHkgdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAyLjAydXMg4pSCXG4gICDilIIgaWYgeCA8IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAxLjg4dXMg4pSCXG4gICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcblxuICAgVGhlIGJlbmNobWFyayBiZWxvdyB3YXMgcnVuIHdoZW4geCA+IHkgaXMgYWx3YXlzIHRydWUgKGFnYWluLCBubyBuYW4gdmFsdWVzKS5cblxuICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICDilIIgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgVGltZS9SdW4g4pSCXG4gICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbiAgIOKUgiBpZiBpc19uYW4geCB0aGVuIHggZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5IOKUgiAgIDIuODN1cyDilIJcbiAgIOKUgiBpZiBpc19uYW4geCB8fCB4IDwgeSB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuOTd1cyDilIJcbiAgIOKUgiBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuNTZ1cyDilIJcbiAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuKilcbmxldCBtaW4gKHggOiB0KSB5ID0gaWYgeCA8IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxubGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQnVmZmVyX2ludGZcbmluY2x1ZGUgU3RkbGliLkJ1ZmZlclxuXG5sZXQgY29udGVudHNfYnl0ZXMgPSB0b19ieXRlc1xubGV0IGFkZF9zdWJzdHJpbmcgdCBzIH5wb3MgfmxlbiA9IGFkZF9zdWJzdHJpbmcgdCBzIHBvcyBsZW5cbmxldCBhZGRfc3ViYnl0ZXMgdCBzIH5wb3MgfmxlbiA9IGFkZF9zdWJieXRlcyB0IHMgcG9zIGxlblxubGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl9zdHJpbmcgKGNvbnRlbnRzIHQpXG5cbmxldCBjYW1sX2J1ZmZlcl9sZW5ndGggPVxuICAoU3RkbGliLk9iai5tYWdpYyAoU3RkbGliLkJ1ZmZlci5sZW5ndGggOiB0IC0+IGludCkgOiAodFtAbG9jYWxdKSAtPiBpbnQpXG47O1xuXG5sZXQgY2FtbF9idWZmZXJfYmxpdCA9XG4gIChTdGRsaWIuT2JqLm1hZ2ljXG4gICAgIChTdGRsaWIuQnVmZmVyLmJsaXQgOiBTdGRsaWIuQnVmZmVyLnQgLT4gaW50IC0+IEJ5dGVzLnQgLT4gaW50IC0+IGludCAtPiB1bml0KVxuICAgOiAoU3RkbGliLkJ1ZmZlci50W0Bsb2NhbF0pIC0+IGludCAtPiAoQnl0ZXMudFtAbG9jYWxdKSAtPiBpbnQgLT4gaW50IC0+IHVuaXQpXG47O1xuXG5tb2R1bGUgVG9fYnl0ZXMgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbGVuZ3RoID0gY2FtbF9idWZmZXJfbGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJ5dGVzLnRcblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gQnl0ZXMuY3JlYXRlIGxlblxuICAgICAgbGV0IGxlbmd0aCA9IEJ5dGVzLmxlbmd0aFxuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgICAgICBjYW1sX2J1ZmZlcl9ibGl0IHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuICAgICAgOztcbiAgICBlbmQpXG5cbmluY2x1ZGUgVG9fYnl0ZXNcbm1vZHVsZSBUb19zdHJpbmcgPSBCbGl0Lk1ha2VfdG9fc3RyaW5nIChTdGRsaWIuQnVmZmVyKSAoVG9fYnl0ZXMpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbnR5cGUgdCA9IFN0ZGxpYi5QcmludGV4Yy5yYXdfYmFja3RyYWNlXG5cbmxldCBlbGlkZSA9IHJlZiBmYWxzZVxubGV0IGVsaWRlZF9tZXNzYWdlID0gXCI8YmFja3RyYWNlIGVsaWRlZCBpbiB0ZXN0PlwiXG5cbmxldCBnZXQgPyhhdF9tb3N0X251bV9mcmFtZXMgPSBJbnQubWF4X3ZhbHVlKSAoKSA9XG4gIFN0ZGxpYi5QcmludGV4Yy5nZXRfY2FsbHN0YWNrIGF0X21vc3RfbnVtX2ZyYW1lc1xuOztcblxubGV0IHRvX3N0cmluZyB0ID1cbiAgaWYgIWVsaWRlIHRoZW4gZWxpZGVkX21lc3NhZ2UgZWxzZSBTdGRsaWIuUHJpbnRleGMucmF3X2JhY2t0cmFjZV90b19zdHJpbmcgdFxuOztcblxubGV0IHRvX3N0cmluZ19saXN0IHQgPSBTdHJpbmcuc3BsaXRfbGluZXMgKHRvX3N0cmluZyB0KVxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5MaXN0IChMaXN0Lm1hcCAodG9fc3RyaW5nX2xpc3QgdCkgfmY6KGZ1biB4IC0+IFNleHAuQXRvbSB4KSlcblxubW9kdWxlIEV4biA9IHN0cnVjdFxuICBsZXQgc2V0X3JlY29yZGluZyA9IFN0ZGxpYi5QcmludGV4Yy5yZWNvcmRfYmFja3RyYWNlXG4gIGxldCBhbV9yZWNvcmRpbmcgPSBTdGRsaWIuUHJpbnRleGMuYmFja3RyYWNlX3N0YXR1c1xuICBsZXQgbW9zdF9yZWNlbnQgKCkgPSBTdGRsaWIuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKClcblxuICBsZXQgbW9zdF9yZWNlbnRfZm9yX2V4biBleG4gPVxuICAgIGlmIEV4bi5pc19waHlzX2VxdWFsX21vc3RfcmVjZW50IGV4biB0aGVuIFNvbWUgKG1vc3RfcmVjZW50ICgpKSBlbHNlIE5vbmVcbiAgOztcblxuICAoKiBXZSB0dXJuIG9uIGJhY2t0cmFjZXMgYnkgZGVmYXVsdCBpZiBPQ0FNTFJVTlBBUkFNIGRvZXNuJ3QgZXhwbGljaXRseSBtZW50aW9uIHRoZW0uICopXG4gIGxldCBtYXliZV9zZXRfcmVjb3JkaW5nICgpID1cbiAgICBsZXQgb2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhY2VzID1cbiAgICAgIG1hdGNoIFN5cy5nZXRlbnYgXCJPQ0FNTFJVTlBBUkFNXCIgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgeCAtPiBMaXN0LmV4aXN0cyAoU3RyaW5nLnNwbGl0IHggfm9uOicsJykgfmY6KFN0cmluZy5pc19wcmVmaXggfnByZWZpeDpcImJcIilcbiAgICBpblxuICAgIGlmIG5vdCBvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmFjZXMgdGhlbiBzZXRfcmVjb3JkaW5nIHRydWVcbiAgOztcblxuICAoKiB0aGUgY2FsbGVyIHNldCBzb21ldGhpbmcsIHRoZXkgYXJlIHJlc3BvbnNpYmxlICopXG5cbiAgbGV0IHdpdGhfcmVjb3JkaW5nIGIgfmYgPVxuICAgIGxldCBzYXZlZCA9IGFtX3JlY29yZGluZyAoKSBpblxuICAgIHNldF9yZWNvcmRpbmcgYjtcbiAgICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IHNldF9yZWNvcmRpbmcgc2F2ZWQpXG4gIDs7XG5lbmRcblxubGV0IGluaXRpYWxpemVfbW9kdWxlICgpID0gRXhuLm1heWJlX3NldF9yZWNvcmRpbmcgKClcbiIsIigqKiBUaGlzIG1vZHVsZSBpcyB0aGUgdG9wbGV2ZWwgb2YgdGhlIEJhc2UgbGlicmFyeTsgaXQncyB3aGF0IHlvdSBnZXQgd2hlbiB5b3Ugd3JpdGVcbiAgICBbb3BlbiBCYXNlXS5cblxuICAgIFRoZSBnb2FsIG9mIEJhc2UgaXMgYm90aCB0byBiZSBhIG1vcmUgY29tcGxldGUgc3RhbmRhcmQgbGlicmFyeSwgd2l0aCByaWNoZXIgQVBJcyxcbiAgICBhbmQgdG8gYmUgbW9yZSBjb25zaXN0ZW50IGluIGl0cyBkZXNpZ24uIEZvciBpbnN0YW5jZSwgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnlcbiAgICBzb21lIHRoaW5ncyBoYXZlIG1vZHVsZXMgYW5kIG90aGVycyBkb24ndDsgaW4gQmFzZSwgZXZlcnl0aGluZyBpcyBhIG1vZHVsZS5cblxuICAgIEJhc2UgZXh0ZW5kcyBzb21lIG1vZHVsZXMgYW5kIGRhdGEgc3RydWN0dXJlcyBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCBsaWtlIFtBcnJheV0sXG4gICAgW0J1ZmZlcl0sIFtCeXRlc10sIFtDaGFyXSwgW0hhc2h0YmxdLCBbSW50MzJdLCBbSW50NjRdLCBbTGF6eV0sIFtMaXN0XSwgW01hcF0sXG4gICAgW05hdGl2ZWludF0sIFtQcmludGZdLCBbUmFuZG9tXSwgW1NldF0sIFtTdHJpbmddLCBbU3lzXSwgYW5kIFtVY2hhcl0uIE9uZSBrZXlcbiAgICBkaWZmZXJlbmNlIGlzIHRoYXQgQmFzZSBkb2Vzbid0IHVzZSBleGNlcHRpb25zIGFzIG11Y2ggYXMgdGhlIHN0YW5kYXJkIGxpYnJhcnkgYW5kXG4gICAgaW5zdGVhZCBtYWtlcyBoZWF2eSB1c2Ugb2YgdGhlIFtSZXN1bHRdIHR5cGUsIGFzIGluOlxuXG4gICAge1sgdHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2IgXX1cblxuICAgIEJhc2UgYWxzbyBhZGRzIGVudGlyZWx5IG5ldyBtb2R1bGVzLCBtb3N0IG5vdGFibHk6XG5cbiAgICAtIFtDb21wYXJhYmxlXSwgW0NvbXBhcmF0b3JdLCBhbmQgW0NvbXBhcmlzb25zXSBpbiBsaWV1IG9mIHBvbHltb3JwaGljIGNvbXBhcmUuXG4gICAgLSBbQ29udGFpbmVyXSwgd2hpY2ggcHJvdmlkZXMgYSBjb25zaXN0ZW50IGludGVyZmFjZSBhY3Jvc3MgY29udGFpbmVyLWxpa2UgZGF0YVxuICAgICAgc3RydWN0dXJlcyAoYXJyYXlzLCBsaXN0cywgc3RyaW5ncykuXG4gICAgLSBbUmVzdWx0XSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0sIHN1cHBvcnRpbmcgdGhlIG9yLWVycm9yIHBhdHRlcm4uXG4qKVxuXG4oKl8gV2UgaGlkZSB0aGlzIGZyb20gdGhlIHdlYiBkb2NzIGJlY2F1c2UgdGhlIGxpbmUgd3JhcHBpbmcgaXMgYmFkLCBtYWtpbmcgaXRcbiAgcHJldHR5IG11Y2ggaW5zY3J1dGFibGUuICopXG4oKiovKiopXG5cbigqIFRoZSBpbnRlbnQgaXMgdG8gc2hhZG93IGFsbCBvZiBJTlJJQSdzIHN0YW5kYXJkIGxpYnJhcnkuICBNb2R1bGVzIGJlbG93IHdvdWxkIGNhdXNlXG4gICBjb21waWxhdGlvbiBlcnJvcnMgd2l0aG91dCBiZWluZyByZW1vdmVkIGZyb20gW1NoYWRvd19zdGRsaWJdIGJlZm9yZSBpbmNsdXNpb24uICopXG5cbmluY2x1ZGUgKFxuICBTaGFkb3dfc3RkbGliIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNoYWRvd19zdGRsaWJcbiAgZW5kXG4gICgqIE1vZHVsZXMgZGVmaW5lZCBpbiBCYXNlICopXG4gIHdpdGggbW9kdWxlIEFycmF5IDo9IFNoYWRvd19zdGRsaWIuQXJyYXlcbiAgd2l0aCBtb2R1bGUgQXRvbWljIDo9IFNoYWRvd19zdGRsaWIuQXRvbWljXG4gIHdpdGggbW9kdWxlIEJvb2wgOj0gU2hhZG93X3N0ZGxpYi5Cb29sXG4gIHdpdGggbW9kdWxlIEJ1ZmZlciA6PSBTaGFkb3dfc3RkbGliLkJ1ZmZlclxuICB3aXRoIG1vZHVsZSBCeXRlcyA6PSBTaGFkb3dfc3RkbGliLkJ5dGVzXG4gIHdpdGggbW9kdWxlIENoYXIgOj0gU2hhZG93X3N0ZGxpYi5DaGFyXG4gIHdpdGggbW9kdWxlIEVpdGhlciA6PSBTaGFkb3dfc3RkbGliLkVpdGhlclxuICB3aXRoIG1vZHVsZSBGbG9hdCA6PSBTaGFkb3dfc3RkbGliLkZsb2F0XG4gIHdpdGggbW9kdWxlIEhhc2h0YmwgOj0gU2hhZG93X3N0ZGxpYi5IYXNodGJsXG4gIHdpdGggbW9kdWxlIEluX2NoYW5uZWwgOj0gU2hhZG93X3N0ZGxpYi5Jbl9jaGFubmVsXG4gIHdpdGggbW9kdWxlIEludCA6PSBTaGFkb3dfc3RkbGliLkludFxuICB3aXRoIG1vZHVsZSBJbnQzMiA6PSBTaGFkb3dfc3RkbGliLkludDMyXG4gIHdpdGggbW9kdWxlIEludDY0IDo9IFNoYWRvd19zdGRsaWIuSW50NjRcbiAgd2l0aCBtb2R1bGUgTGF6eSA6PSBTaGFkb3dfc3RkbGliLkxhenlcbiAgd2l0aCBtb2R1bGUgTGlzdCA6PSBTaGFkb3dfc3RkbGliLkxpc3RcbiAgd2l0aCBtb2R1bGUgTWFwIDo9IFNoYWRvd19zdGRsaWIuTWFwXG4gIHdpdGggbW9kdWxlIE5hdGl2ZWludCA6PSBTaGFkb3dfc3RkbGliLk5hdGl2ZWludFxuICB3aXRoIG1vZHVsZSBPcHRpb24gOj0gU2hhZG93X3N0ZGxpYi5PcHRpb25cbiAgd2l0aCBtb2R1bGUgT3V0X2NoYW5uZWwgOj0gU2hhZG93X3N0ZGxpYi5PdXRfY2hhbm5lbFxuICB3aXRoIG1vZHVsZSBQcmludGYgOj0gU2hhZG93X3N0ZGxpYi5QcmludGZcbiAgd2l0aCBtb2R1bGUgUXVldWUgOj0gU2hhZG93X3N0ZGxpYi5RdWV1ZVxuICB3aXRoIG1vZHVsZSBSYW5kb20gOj0gU2hhZG93X3N0ZGxpYi5SYW5kb21cbiAgd2l0aCBtb2R1bGUgUmVzdWx0IDo9IFNoYWRvd19zdGRsaWIuUmVzdWx0XG4gIHdpdGggbW9kdWxlIFNldCA6PSBTaGFkb3dfc3RkbGliLlNldFxuICB3aXRoIG1vZHVsZSBTdGFjayA6PSBTaGFkb3dfc3RkbGliLlN0YWNrXG4gIHdpdGggbW9kdWxlIFN0cmluZyA6PSBTaGFkb3dfc3RkbGliLlN0cmluZ1xuICB3aXRoIG1vZHVsZSBTeXMgOj0gU2hhZG93X3N0ZGxpYi5TeXNcbiAgd2l0aCBtb2R1bGUgVWNoYXIgOj0gU2hhZG93X3N0ZGxpYi5VY2hhclxuICB3aXRoIG1vZHVsZSBVbml0IDo9IFNoYWRvd19zdGRsaWIuVW5pdFxuICAoKiBTdXBwb3J0IGZvciBnZW5lcmF0ZWQgbGV4ZXJzICopXG4gIHdpdGggbW9kdWxlIExleGluZyA6PSBTaGFkb3dfc3RkbGliLkxleGluZ1xuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA6PSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgOj0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA6PSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICB3aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZilcbiAgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuKCoqLyoqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlXG5tb2R1bGUgQXJyYXkgPSBBcnJheVxubW9kdWxlIEF2bHRyZWUgPSBBdmx0cmVlXG5tb2R1bGUgQmFja3RyYWNlID0gQmFja3RyYWNlXG5tb2R1bGUgQmluYXJ5X3NlYXJjaCA9IEJpbmFyeV9zZWFyY2hcbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IEJpbmFyeV9zZWFyY2hhYmxlXG5tb2R1bGUgQmxpdCA9IEJsaXRcbm1vZHVsZSBCb29sID0gQm9vbFxubW9kdWxlIEJ1ZmZlciA9IEJ1ZmZlclxubW9kdWxlIEJ5dGVzID0gQnl0ZXNcbm1vZHVsZSBDaGFyID0gQ2hhclxubW9kdWxlIENvbXBhcmFibGUgPSBDb21wYXJhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3Jcbm1vZHVsZSBDb21wYXJpc29ucyA9IENvbXBhcmlzb25zXG5tb2R1bGUgQ29udGFpbmVyID0gQ29udGFpbmVyXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyXG5tb2R1bGUgRXF1YWwgPSBFcXVhbFxubW9kdWxlIEVycm9yID0gRXJyb3Jcbm1vZHVsZSBFeG4gPSBFeG5cbm1vZHVsZSBGaWVsZCA9IEZpZWxkXG5tb2R1bGUgRmxvYXQgPSBGbG9hdFxubW9kdWxlIEZsb2F0YWJsZSA9IEZsb2F0YWJsZVxubW9kdWxlIEZuID0gRm5cbm1vZHVsZSBGb3JtYXR0ZXIgPSBGb3JtYXR0ZXJcbm1vZHVsZSBIYXNoID0gSGFzaFxubW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXRcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlXG5tb2R1bGUgSGFzaGVyID0gSGFzaGVyXG5tb2R1bGUgSGFzaHRibCA9IEhhc2h0Ymxcbm1vZHVsZSBJZGVudGlmaWFibGUgPSBJZGVudGlmaWFibGVcbm1vZHVsZSBJbmRleGVkX2NvbnRhaW5lciA9IEluZGV4ZWRfY29udGFpbmVyXG5tb2R1bGUgSW5mbyA9IEluZm9cbm1vZHVsZSBJbnQgPSBJbnRcbm1vZHVsZSBJbnRfY29udmVyc2lvbnMgPSBJbnRfY29udmVyc2lvbnNcbm1vZHVsZSBJbnQzMiA9IEludDMyXG5tb2R1bGUgSW50NjMgPSBJbnQ2M1xubW9kdWxlIEludDY0ID0gSW50NjRcbm1vZHVsZSBJbnRhYmxlID0gSW50YWJsZVxubW9kdWxlIEludF9tYXRoID0gSW50X21hdGhcbm1vZHVsZSBJbnZhcmlhbnQgPSBJbnZhcmlhbnRcbm1vZHVsZSBMYXp5ID0gTGF6eVxubW9kdWxlIExpc3QgPSBMaXN0XG5tb2R1bGUgTWFwID0gTWFwXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZFxubW9kdWxlIE1vbmFkID0gTW9uYWRcbm1vZHVsZSBOYXRpdmVpbnQgPSBOYXRpdmVpbnRcbm1vZHVsZSBOb3RoaW5nID0gTm90aGluZ1xubW9kdWxlIE9wdGlvbiA9IE9wdGlvblxubW9kdWxlIE9wdGlvbl9hcnJheSA9IE9wdGlvbl9hcnJheVxubW9kdWxlIE9yX2Vycm9yID0gT3JfZXJyb3Jcbm1vZHVsZSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vblxubW9kdWxlIE9yZGVyaW5nID0gT3JkZXJpbmdcbm1vZHVsZSBQb2x5ID0gUG9seVxuXG5tb2R1bGUgUG9wY291bnQgPSBQb3Bjb3VudFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTEwXSB1c2UgW3BvcGNvdW50XSBmdW5jdGlvbnMgaW4gdGhlIGluZGl2aWR1YWwgaW50IG1vZHVsZXNcIl1cblxubW9kdWxlIFByZXR0eV9wcmludGVyID0gUHJldHR5X3ByaW50ZXJcbm1vZHVsZSBQcmludGYgPSBQcmludGZcbm1vZHVsZSBMaW5rZWRfcXVldWUgPSBMaW5rZWRfcXVldWVcbm1vZHVsZSBRdWV1ZSA9IFF1ZXVlXG5tb2R1bGUgUmFuZG9tID0gUmFuZG9tXG5tb2R1bGUgUmVmID0gUmVmXG5tb2R1bGUgUmVzdWx0ID0gUmVzdWx0XG5tb2R1bGUgU2VxdWVuY2UgPSBTZXF1ZW5jZVxubW9kdWxlIFNldCA9IFNldFxubW9kdWxlIFNleHBhYmxlID0gU2V4cGFibGVcbm1vZHVsZSBTaWduID0gU2lnblxubW9kdWxlIFNpZ25fb3JfbmFuID0gU2lnbl9vcl9uYW5cbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5tb2R1bGUgU3RhY2sgPSBTdGFja1xubW9kdWxlIFN0YWdlZCA9IFN0YWdlZFxubW9kdWxlIFN0cmluZyA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ2FibGUgPSBTdHJpbmdhYmxlXG5tb2R1bGUgU3lzID0gU3lzXG5tb2R1bGUgVCA9IFRcbm1vZHVsZSBUeXBlX2VxdWFsID0gVHlwZV9lcXVhbFxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBVbmlmb3JtX2FycmF5XG5tb2R1bGUgVW5pdCA9IFVuaXRcbm1vZHVsZSBVY2hhciA9IFVjaGFyXG5tb2R1bGUgVmFyaWFudCA9IFZhcmlhbnRcbm1vZHVsZSBXaXRoX3JldHVybiA9IFdpdGhfcmV0dXJuXG5tb2R1bGUgV29yZF9zaXplID0gV29yZF9zaXplXG5cbigqIEF2b2lkIGEgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gZm9yIHVzZXMgb2YgdGhlIHNpZ25hdHVyZXMgZGVmaW5lZCBpbiBbVF0uICopXG5pbmNsdWRlIFRcblxuKCogVGhpcyBpcyBhIGhhY2sgc28gdGhhdCBvZG9jIGNyZWF0ZXMgYmV0dGVyIGRvY3VtZW50YXRpb24uICopXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBfd2l0aF9jb21wYXJhYmxlICgqKiBAaW5saW5lICopXG5lbmRcblxuKCoqLyoqKVxuXG5tb2R1bGUgRXhwb3J0ZWRfZm9yX3NwZWNpZmljX3VzZXMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZpZWxkc2xpYiA9IEZpZWxkc2xpYlxuICBtb2R1bGUgR2xvYmFsaXplID0gR2xvYmFsaXplXG4gIG1vZHVsZSBPYmpfbG9jYWwgPSBPYmpfbG9jYWxcbiAgbW9kdWxlIFBweF9jb21wYXJlX2xpYiA9IFBweF9jb21wYXJlX2xpYlxuICBtb2R1bGUgUHB4X2VudW1lcmF0ZV9saWIgPSBQcHhfZW51bWVyYXRlX2xpYlxuICBtb2R1bGUgUHB4X2hhc2hfbGliID0gUHB4X2hhc2hfbGliXG4gIG1vZHVsZSBWYXJpYW50c2xpYiA9IFZhcmlhbnRzbGliXG5cbiAgbGV0IGFtX3Rlc3RpbmcgPSBhbV90ZXN0aW5nXG5lbmRcblxuKCoqLyoqKVxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gICgqIFtkZXJpdmluZyBoYXNoXSBpcyBtaXNzaW5nIGZvciBbYXJyYXldIGFuZCBbcmVmXSBzaW5jZSB0aGVzZSB0eXBlcyBhcmUgbXV0YWJsZS4gKilcbiAgdHlwZSAnYSBhcnJheSA9ICdhIEFycmF5LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9hcnJheSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiBpbnQgPSBBcnJheS5jb21wYXJlXG4gIGxldCBlcXVhbF9hcnJheSA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgLT4gYm9vbCA9IEFycmF5LmVxdWFsXG5cbiAgbGV0IGdsb2JhbGl6ZV9hcnJheSA6XG4gICAgJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSBhcnJheVtAb2NhbWwubG9jYWxdKSAtPiAnYSBhcnJheVxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDA5XylcbiAgICAgICAgOiAgKCgoYV9fMDA5X1tAb2NhbWwubG9jYWxdKSAtPiBhX18wMDlfKSAtPiAoYV9fMDA5XyBhcnJheVtAb2NhbWwubG9jYWxdKVxuICAgICAgICAgICAgLT4gYV9fMDA5XyBhcnJheSkgLT5cbiAgICAgIEFycmF5Lmdsb2JhbGl6ZVxuICA7O1xuXG4gIGxldCBhcnJheV9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBhcnJheSA9XG4gICAgQXJyYXkudF9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfYXJyYXkgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgYXJyYXkgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBBcnJheS5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgYXJyYXlfc2V4cF9ncmFtbWFyIDpcbiAgICAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgYXJyYXkgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gQXJyYXkudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBib29sID0gQm9vbC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfYm9vbCA9IChCb29sLmNvbXBhcmUgOiBib29sIC0+IGJvb2wgLT4gaW50KVxuICBsZXQgZXF1YWxfYm9vbCA9IChCb29sLmVxdWFsIDogYm9vbCAtPiBib29sIC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfYm9vbCA6IChib29sW0BvY2FtbC5sb2NhbF0pIC0+IGJvb2wpID1cbiAgICAoQm9vbC5nbG9iYWxpemUgOiAoYm9vbFtAb2NhbWwubG9jYWxdKSAtPiBib29sKVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX2Jvb2wgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGJvb2wgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBCb29sLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2Jvb2wgOiBib29sIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBCb29sLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgYm9vbF9vZl9zZXhwID0gKEJvb2wudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGJvb2wpXG4gIGxldCBzZXhwX29mX2Jvb2wgPSAoQm9vbC5zZXhwX29mX3QgOiBib29sIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChib29sX3NleHBfZ3JhbW1hciA6IGJvb2wgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gQm9vbC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBjaGFyID0gQ2hhci50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfY2hhciA9IChDaGFyLmNvbXBhcmUgOiBjaGFyIC0+IGNoYXIgLT4gaW50KVxuICBsZXQgZXF1YWxfY2hhciA9IChDaGFyLmVxdWFsIDogY2hhciAtPiBjaGFyIC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfY2hhciA6IChjaGFyW0BvY2FtbC5sb2NhbF0pIC0+IGNoYXIpID1cbiAgICAoQ2hhci5nbG9iYWxpemUgOiAoY2hhcltAb2NhbWwubG9jYWxdKSAtPiBjaGFyKVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX2NoYXIgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGNoYXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBDaGFyLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2NoYXIgOiBjaGFyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBDaGFyLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgY2hhcl9vZl9zZXhwID0gKENoYXIudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGNoYXIpXG4gIGxldCBzZXhwX29mX2NoYXIgPSAoQ2hhci5zZXhwX29mX3QgOiBjaGFyIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChjaGFyX3NleHBfZ3JhbW1hciA6IGNoYXIgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gQ2hhci50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBleG4gPSBFeG4udCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl9leG4gPSAoRXhuLnNleHBfb2ZfdCA6IGV4biAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGZsb2F0ID0gRmxvYXQudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2Zsb2F0ID0gKEZsb2F0LmNvbXBhcmUgOiBmbG9hdCAtPiBmbG9hdCAtPiBpbnQpXG4gIGxldCBlcXVhbF9mbG9hdCA9IChGbG9hdC5lcXVhbCA6IGZsb2F0IC0+IGZsb2F0IC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfZmxvYXQgOiAoZmxvYXRbQG9jYW1sLmxvY2FsXSkgLT4gZmxvYXQpID1cbiAgICAoRmxvYXQuZ2xvYmFsaXplIDogKGZsb2F0W0BvY2FtbC5sb2NhbF0pIC0+IGZsb2F0KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX2Zsb2F0IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBmbG9hdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEZsb2F0Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2Zsb2F0IDogZmxvYXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEZsb2F0Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgZmxvYXRfb2Zfc2V4cCA9IChGbG9hdC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gZmxvYXQpXG4gIGxldCBzZXhwX29mX2Zsb2F0ID0gKEZsb2F0LnNleHBfb2ZfdCA6IGZsb2F0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChmbG9hdF9zZXhwX2dyYW1tYXIgOiBmbG9hdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBGbG9hdC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBpbnQgPSBJbnQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludCA9IChJbnQuY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50KVxuICBsZXQgZXF1YWxfaW50ID0gKEludC5lcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9pbnQgOiAoaW50W0BvY2FtbC5sb2NhbF0pIC0+IGludCkgPVxuICAgIChJbnQuZ2xvYmFsaXplIDogKGludFtAb2NhbWwubG9jYWxdKSAtPiBpbnQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfaW50IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBJbnQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfaW50IDogaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBJbnQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBpbnRfb2Zfc2V4cCA9IChJbnQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGludClcbiAgbGV0IHNleHBfb2ZfaW50ID0gKEludC5zZXhwX29mX3QgOiBpbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGludF9zZXhwX2dyYW1tYXIgOiBpbnQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gSW50LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludDMyID0gSW50MzIudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludDMyID0gKEludDMyLmNvbXBhcmUgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQzMiA9IChJbnQzMi5lcXVhbCA6IGludDMyIC0+IGludDMyIC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfaW50MzIgOiAoaW50MzJbQG9jYW1sLmxvY2FsXSkgLT4gaW50MzIpID1cbiAgICAoSW50MzIuZ2xvYmFsaXplIDogKGludDMyW0BvY2FtbC5sb2NhbF0pIC0+IGludDMyKVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX2ludDMyIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnQzMiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEludDMyLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2ludDMyIDogaW50MzIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludDMyLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgaW50MzJfb2Zfc2V4cCA9IChJbnQzMi50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50MzIpXG4gIGxldCBzZXhwX29mX2ludDMyID0gKEludDMyLnNleHBfb2ZfdCA6IGludDMyIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChpbnQzMl9zZXhwX2dyYW1tYXIgOiBpbnQzMiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQzMi50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBpbnQ2NCA9IEludDY0LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9pbnQ2NCA9IChJbnQ2NC5jb21wYXJlIDogaW50NjQgLT4gaW50NjQgLT4gaW50KVxuICBsZXQgZXF1YWxfaW50NjQgPSAoSW50NjQuZXF1YWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX2ludDY0IDogKGludDY0W0BvY2FtbC5sb2NhbF0pIC0+IGludDY0KSA9XG4gICAgKEludDY0Lmdsb2JhbGl6ZSA6IChpbnQ2NFtAb2NhbWwubG9jYWxdKSAtPiBpbnQ2NClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF9pbnQ2NCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50NjQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBJbnQ2NC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9pbnQ2NCA6IGludDY0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBJbnQ2NC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGludDY0X29mX3NleHAgPSAoSW50NjQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGludDY0KVxuICBsZXQgc2V4cF9vZl9pbnQ2NCA9IChJbnQ2NC5zZXhwX29mX3QgOiBpbnQ2NCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoaW50NjRfc2V4cF9ncmFtbWFyIDogaW50NjQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gSW50NjQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2EgbGlzdCA9ICdhIExpc3QudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2xpc3QgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0IC0+IGludCA9IExpc3QuY29tcGFyZVxuICBsZXQgZXF1YWxfbGlzdCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0IC0+IGJvb2wgPSBMaXN0LmVxdWFsXG5cbiAgbGV0IGdsb2JhbGl6ZV9saXN0IDpcbiAgICAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIGxpc3RbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgbGlzdFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDYyXylcbiAgICAgICAgOiAgKCgoYV9fMDYyX1tAb2NhbWwubG9jYWxdKSAtPiBhX18wNjJfKSAtPiAoYV9fMDYyXyBsaXN0W0BvY2FtbC5sb2NhbF0pXG4gICAgICAgICAgICAtPiBhX18wNjJfIGxpc3QpIC0+XG4gICAgICBMaXN0Lmdsb2JhbGl6ZVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfbGlzdCA6XG4gICAgJ2EuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gJ2EgbGlzdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBMaXN0Lmhhc2hfZm9sZF90XG4gIDs7XG5cbiAgbGV0IGxpc3Rfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgbGlzdCA9XG4gICAgTGlzdC50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9saXN0IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIGxpc3QgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBMaXN0LnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBsaXN0X3NleHBfZ3JhbW1hciA6XG4gICAgJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIGxpc3QgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gTGlzdC50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIG5hdGl2ZWludCA9IE5hdGl2ZWludC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfbmF0aXZlaW50ID0gKE5hdGl2ZWludC5jb21wYXJlIDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBpbnQpXG4gIGxldCBlcXVhbF9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LmVxdWFsIDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX25hdGl2ZWludCA6IChuYXRpdmVpbnRbQG9jYW1sLmxvY2FsXSkgLT4gbmF0aXZlaW50KSA9XG4gICAgKE5hdGl2ZWludC5nbG9iYWxpemUgOiAobmF0aXZlaW50W0BvY2FtbC5sb2NhbF0pIC0+IG5hdGl2ZWludClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF9uYXRpdmVpbnQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IG5hdGl2ZWludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIE5hdGl2ZWludC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IE5hdGl2ZWludC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IG5hdGl2ZWludF9vZl9zZXhwID0gKE5hdGl2ZWludC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gbmF0aXZlaW50KVxuICBsZXQgc2V4cF9vZl9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LnNleHBfb2ZfdCA6IG5hdGl2ZWludCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgbGV0IChuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIDogbmF0aXZlaW50IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgTmF0aXZlaW50LnRfc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIG9wdGlvbiA9ICdhIE9wdGlvbi50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfb3B0aW9uIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gLT4gaW50ID1cbiAgICBPcHRpb24uY29tcGFyZVxuICA7O1xuXG4gIGxldCBlcXVhbF9vcHRpb24gOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gLT4gYm9vbCA9XG4gICAgT3B0aW9uLmVxdWFsXG4gIDs7XG5cbiAgbGV0IGdsb2JhbGl6ZV9vcHRpb24gOlxuICAgICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2Egb3B0aW9uW0BvY2FtbC5sb2NhbF0pIC0+ICdhIG9wdGlvblxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDg1XylcbiAgICAgICAgOiAgKCgoYV9fMDg1X1tAb2NhbWwubG9jYWxdKSAtPiBhX18wODVfKSAtPiAoYV9fMDg1XyBvcHRpb25bQG9jYW1sLmxvY2FsXSlcbiAgICAgICAgICAgIC0+IGFfXzA4NV8gb3B0aW9uKSAtPlxuICAgICAgT3B0aW9uLmdsb2JhbGl6ZVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfb3B0aW9uIDpcbiAgICAnYS5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAnYSBvcHRpb25cbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgT3B0aW9uLmhhc2hfZm9sZF90XG4gIDs7XG5cbiAgbGV0IG9wdGlvbl9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBvcHRpb24gPVxuICAgIE9wdGlvbi50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9vcHRpb24gOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2Egb3B0aW9uIC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgT3B0aW9uLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBvcHRpb25fc2V4cF9ncmFtbWFyIDpcbiAgICAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2Egb3B0aW9uIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IE9wdGlvbi50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIHJlZiA9ICdhIFJlZi50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfcmVmIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHJlZiAtPiAnYSByZWYgLT4gaW50ID0gUmVmLmNvbXBhcmVcbiAgbGV0IGVxdWFsX3JlZiA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgcmVmIC0+ICdhIHJlZiAtPiBib29sID0gUmVmLmVxdWFsXG5cbiAgbGV0IGdsb2JhbGl6ZV9yZWYgOiAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHJlZltAb2NhbWwubG9jYWxdKSAtPiAnYSByZWYgPVxuICAgIGZ1biAodHlwZSBhX18xMDJfKVxuICAgICAgICA6ICAoKChhX18xMDJfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzEwMl8pIC0+IChhX18xMDJfIHJlZltAb2NhbWwubG9jYWxdKVxuICAgICAgICAgICAgLT4gYV9fMTAyXyByZWYpIC0+XG4gICAgICBSZWYuZ2xvYmFsaXplXG4gIDs7XG5cbiAgbGV0IHJlZl9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSByZWYgPVxuICAgIFJlZi50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9yZWYgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgcmVmIC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgUmVmLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCByZWZfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHJlZiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gUmVmLnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgc3RyaW5nID0gU3RyaW5nLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9zdHJpbmcgPSAoU3RyaW5nLmNvbXBhcmUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGludClcbiAgbGV0IGVxdWFsX3N0cmluZyA9IChTdHJpbmcuZXF1YWwgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfc3RyaW5nIDogKHN0cmluZ1tAb2NhbWwubG9jYWxdKSAtPiBzdHJpbmcpID1cbiAgICAoU3RyaW5nLmdsb2JhbGl6ZSA6IChzdHJpbmdbQG9jYW1sLmxvY2FsXSkgLT4gc3RyaW5nKVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX3N0cmluZyA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gc3RyaW5nIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgU3RyaW5nLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX3N0cmluZyA6IHN0cmluZyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gU3RyaW5nLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgc3RyaW5nX29mX3NleHAgPSAoU3RyaW5nLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBzdHJpbmcpXG4gIGxldCBzZXhwX29mX3N0cmluZyA9IChTdHJpbmcuc2V4cF9vZl90IDogc3RyaW5nIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChzdHJpbmdfc2V4cF9ncmFtbWFyIDogc3RyaW5nIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IFN0cmluZy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBieXRlcyA9IEJ5dGVzLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9ieXRlcyA9IChCeXRlcy5jb21wYXJlIDogYnl0ZXMgLT4gYnl0ZXMgLT4gaW50KVxuICBsZXQgZXF1YWxfYnl0ZXMgPSAoQnl0ZXMuZXF1YWwgOiBieXRlcyAtPiBieXRlcyAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX2J5dGVzIDogKGJ5dGVzW0BvY2FtbC5sb2NhbF0pIC0+IGJ5dGVzKSA9XG4gICAgKEJ5dGVzLmdsb2JhbGl6ZSA6IChieXRlc1tAb2NhbWwubG9jYWxdKSAtPiBieXRlcylcbiAgOztcblxuICBsZXQgYnl0ZXNfb2Zfc2V4cCA9IChCeXRlcy50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gYnl0ZXMpXG4gIGxldCBzZXhwX29mX2J5dGVzID0gKEJ5dGVzLnNleHBfb2ZfdCA6IGJ5dGVzIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChieXRlc19zZXhwX2dyYW1tYXIgOiBieXRlcyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBCeXRlcy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSB1bml0ID0gVW5pdC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfdW5pdCA9IChVbml0LmNvbXBhcmUgOiB1bml0IC0+IHVuaXQgLT4gaW50KVxuICBsZXQgZXF1YWxfdW5pdCA9IChVbml0LmVxdWFsIDogdW5pdCAtPiB1bml0IC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfdW5pdCA6ICh1bml0W0BvY2FtbC5sb2NhbF0pIC0+IHVuaXQpID1cbiAgICAoVW5pdC5nbG9iYWxpemUgOiAodW5pdFtAb2NhbWwubG9jYWxdKSAtPiB1bml0KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX3VuaXQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHVuaXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBVbml0Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX3VuaXQgOiB1bml0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBVbml0Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdW5pdF9vZl9zZXhwID0gKFVuaXQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHVuaXQpXG4gIGxldCBzZXhwX29mX3VuaXQgPSAoVW5pdC5zZXhwX29mX3QgOiB1bml0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh1bml0X3NleHBfZ3JhbW1hciA6IHVuaXQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gVW5pdC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgKCoqIEZvcm1hdCBzdHVmZiAqKVxuXG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG5cbiAgKCoqIExpc3Qgb3BlcmF0b3JzICopXG5cbiAgaW5jbHVkZSBMaXN0LkluZml4XG5cbiAgKCoqIEludCBvcGVyYXRvcnMgYW5kIGNvbXBhcmlzb25zICopXG5cbiAgaW5jbHVkZSBJbnQuT1xuICBpbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICAoKiogRmxvYXQgb3BlcmF0b3JzICopXG5cbiAgaW5jbHVkZSBGbG9hdC5PX2RvdFxuXG4gICgqIFRoaXMgaXMgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgdG8gYmUgb3B0aW1pemVkIGF3YXkgaW4gbW9yZSBjb250ZXh0cy4gKilcblxuICAoKiogUmV2ZXJzZSBhcHBsaWNhdGlvbiBvcGVyYXRvci4gW3ggfD4gZyB8PiBmXSBpcyBlcXVpdmFsZW50IHRvIFtmIChnICh4KSldLiAqKVxuICBleHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoKCdhIC0+ICdiKVtAbG9jYWxfb3B0XSkgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5cbiAgKCoqIEFwcGxpY2F0aW9uIG9wZXJhdG9yLiBbZyBAQCBmIEBAIHhdIGlzIGVxdWl2YWxlbnQgdG8gW2cgKGYgKHgpKV0uICopXG4gIGV4dGVybmFsICggQEAgKSA6ICgoJ2EgLT4gJ2IpW0Bsb2NhbF9vcHRdKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcblxuICAoKiogQm9vbGVhbiBvcGVyYXRpb25zICopXG5cbiAgKCogVGhlc2UgbmVlZCB0byBiZSBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBnZXQgdGhlIGxhenkgYmVoYXZpb3IgKilcbiAgZXh0ZXJuYWwgKCAmJiApIDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlc2VxdWFuZFwiXG4gIGV4dGVybmFsICggfHwgKSA6IChib29sW0Bsb2NhbF9vcHRdKSAtPiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG4gIGV4dGVybmFsIG5vdCA6IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5cbiAgKCogVGhpcyBtdXN0IGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIGZvciB0aGUgd2FybmluZ3MgdG8gd29yayBwcm9wZXJseS4gKilcbiAgZXh0ZXJuYWwgaWdub3JlIDogKF9bQGxvY2FsX29wdF0pIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4gICgqKiBDb21tb24gc3RyaW5nIG9wZXJhdGlvbnMgKilcbiAgbGV0ICggXiApID0gU3RyaW5nLiggXiApXG5cbiAgKCoqIFJlZmVyZW5jZSBvcGVyYXRpb25zICopXG5cbiAgKCogRGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWxzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIHNraXBzIHRoZSBjYW1sX21vZGlmeSB3aGVuIHBvc3NpYmxlIGFuZFxuICAgICB0byBrZWVwIHJlZmVyZW5jZSB1bmJveGluZyB3b3JraW5nICopXG4gIGV4dGVybmFsICggISApIDogKCdhIHJlZltAbG9jYWxfb3B0XSkgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuICBleHRlcm5hbCByZWYgOiAnYSAtPiAoJ2EgcmVmW0Bsb2NhbF9vcHRdKSA9IFwiJW1ha2VtdXRhYmxlXCJcbiAgZXh0ZXJuYWwgKCA6PSApIDogKCdhIHJlZltAbG9jYWxfb3B0XSkgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5cbiAgKCoqIFBhaXIgb3BlcmF0aW9ucyAqKVxuXG4gIGxldCBmc3QgPSBmc3RcbiAgbGV0IHNuZCA9IHNuZFxuXG4gICgqKiBFeGNlcHRpb25zIHN0dWZmICopXG5cbiAgKCogRGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgc28gdGhhdCB0aGUgY29tcGlsZXIgbWF5IHJld3JpdGUgJyVyYWlzZScgYXMgJyVyZXJhaXNlJy4gKilcbiAgZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gXyA9IFwiJXJhaXNlXCJcblxuICBsZXQgZmFpbHdpdGggPSBmYWlsd2l0aFxuICBsZXQgaW52YWxpZF9hcmcgPSBpbnZhbGlkX2FyZ1xuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICAoKiogTWlzYyAqKVxuXG4gIGV4dGVybmFsIHBoeXNfZXF1YWwgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxXCJcbiAgZXh0ZXJuYWwgZm9yY2UgOiAoJ2EgTGF6eS50W0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWxhenlfZm9yY2VcIlxuZW5kXG5cbmluY2x1ZGUgRXhwb3J0XG5cbmluY2x1ZGUgQ29udGFpbmVyX2ludGYuRXhwb3J0ICgqKiBAaW5saW5lICopXG5cbmV4Y2VwdGlvbiBOb3RfZm91bmRfcyA9IE5vdF9mb3VuZF9zXG5cbigqIFdlIHBlcmZvcm0gdGhlc2Ugc2lkZSBlZmZlY3RzIGhlcmUgYmVjYXVzZSB3ZSB3YW50IHRoZW0gdG8gcnVuIGZvciBhbnkgY29kZSB0aGF0IHVzZXNcbiAgIFtCYXNlXS4gIElmIHRoaXMgd2VyZSBpbiBhbm90aGVyIG1vZHVsZSBpbiBbQmFzZV0gdGhhdCB3YXMgbm90IHVzZWQgaW4gc29tZSBwcm9ncmFtLFxuICAgdGhlbiB0aGUgc2lkZSBlZmZlY3RzIG1pZ2h0IG5vdCBiZSBydW4gaW4gdGhhdCBwcm9ncmFtLiAgVGhpcyB3aWxsIHJ1biBhcyBsb25nIGFzIHRoZVxuICAgcHJvZ3JhbSByZWZlcnMgdG8gYXQgbGVhc3Qgb25lIHZhbHVlIGRpcmVjdGx5IGluIFtCYXNlXTsgcmVmZXJyaW5nIHRvIHZhbHVlcyBpblxuICAgW0Jhc2UuQm9vbF0sIGZvciBleGFtcGxlLCBpcyBub3Qgc3VmZmljaWVudC4gKilcbmxldCAoKSA9IEJhY2t0cmFjZS5pbml0aWFsaXplX21vZHVsZSAoKVxuIiwibW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmVuZFxuIiwiaW5jbHVkZSBPY2FtbF9jb21tb24uTG9jYXRpb25cblxubGV0IHNldF9pbnB1dF9uYW1lIG5hbWUgPSBpbnB1dF9uYW1lIDo9IG5hbWVcbmxldCBzZXRfaW5wdXRfbGV4YnVmIGxleGJ1Zl9vcHQgPSBpbnB1dF9sZXhidWYgOj0gbGV4YnVmX29wdFxuXG5tb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgW0BAQHdhcm5pbmcgXCItMzdcIl1cblxuICB0eXBlIG9sZF90ICgqSUZfTk9UX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5lcnJvciAqKSA9IHtcbiAgICBsb2M6IHQ7XG4gICAgbXNnOiBzdHJpbmc7XG4gICAgc3ViOiBvbGRfdCBsaXN0O1xuICAgIGlmX2hpZ2hsaWdodDogc3RyaW5nO1xuICB9XG5cbiAgdHlwZSBsb2NhdGlvbl9yZXBvcnRfa2luZCAoKklGX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5yZXBvcnRfa2luZCAqKSA9XG4gIHwgUmVwb3J0X2Vycm9yXG4gIHwgUmVwb3J0X3dhcm5pbmcgb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X3dhcm5pbmdfYXNfZXJyb3Igb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X2FsZXJ0IG9mIHN0cmluZ1xuICB8IFJlcG9ydF9hbGVydF9hc19lcnJvciBvZiBzdHJpbmdcblxuICB0eXBlIGxvY2F0aW9uX21zZyA9IChGb3JtYXQuZm9ybWF0dGVyIC0+IHVuaXQpIGxvY1xuXG4gIHR5cGUgbG9jYXRpb25fcmVwb3J0ICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLnJlcG9ydCAqKSA9IHtcbiAgICBraW5kIDogbG9jYXRpb25fcmVwb3J0X2tpbmQ7XG4gICAgbWFpbiA6IGxvY2F0aW9uX21zZztcbiAgICBzdWIgOiBsb2NhdGlvbl9tc2cgbGlzdDtcbiAgfVxuXG4gIHR5cGUgdCAoKklGX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5lcnJvciAqKSAoKklGX05PVF9BVF9MRUFTVCA0MDggPSBvbGRfdCAqKVxuICAoKiogT24gb2NhbWwgPj0gNC4wODogW3RdIGlzIGEgW2xvY2F0aW9uX3JlcG9ydF0gZm9yIHdoaWNoIFtsb2NhdGlvbl9yZXBvcnRfa2luZF0gbXVzdCBiZSBbUmVwb3J0X2Vycm9yXS4gKilcblxuICB0eXBlIHZlcnNpb25fc3BlY2lmaWNfdCA9IFtgTmV3X2Vycm9yIG9mIGxvY2F0aW9uX3JlcG9ydCB8IGBPbGRfZXJyb3Igb2Ygb2xkX3RdXG5cbiAgbGV0IHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IDogdCAtPiB2ZXJzaW9uX3NwZWNpZmljX3QgPSBmdW4geCAtPlxuICAgICgqSUZfQVRfTEVBU1QgNDA4IGBOZXdfZXJyb3IgeCAqKVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBgT2xkX2Vycm9yIHggKilcblxuICBsZXQgaXNfd2VsbF9mb3JtZWQgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBraW5kID0gUmVwb3J0X2Vycm9yOyBfIH0gLT4gdHJ1ZVxuICAgIHwgYE5ld19lcnJvciBfIC0+IGZhbHNlXG4gICAgfCBgT2xkX2Vycm9yIF8gLT4gdHJ1ZVxuXG4gIGxldCBzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIChtc2cgOiBsb2NhdGlvbl9tc2cpID0gRm9ybWF0LmFzcHJpbnRmIFwiJXRcIiBtc2cudHh0XG5cbiAgbGV0IG1haW5fbXNnIGVycm9yID1cbiAgICBtYXRjaCB2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCBlcnJvciB3aXRoXG4gICAgfCBgTmV3X2Vycm9yIHsgbWFpbjsgXyB9IC0+XG4gICAgICAgIHsgdHh0ID0gc3RyaW5nX29mX2xvY2F0aW9uX21zZyBtYWluOyBsb2MgPSBtYWluLmxvYyB9XG4gICAgfCBgT2xkX2Vycm9yIHsgbXNnOyBsb2M7IF8gfSAtPiB7IHR4dCA9IG1zZzsgbG9jIH1cblxuICBsZXQgc3ViX21zZ3MgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBzdWI7IF8gfSAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gZXJyIC0+IHsgdHh0ID0gc3RyaW5nX29mX2xvY2F0aW9uX21zZyBlcnI7IGxvYyA9IGVyci5sb2MgfSlcbiAgICAgICAgICBzdWJcbiAgICB8IGBPbGRfZXJyb3IgeyBzdWI7IF8gfSAtPlxuICAgICAgICBsZXQgcmVjIGRlZXBseV9mbGF0dGVuZWRfc3ViX21zZ3MgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICAgIHwgeyBsb2M7IG1zZzsgc3ViOyBfIH0gOjogdGFpbCAtPlxuICAgICAgICAgICAgICBkZWVwbHlfZmxhdHRlbmVkX3N1Yl9tc2dzICh7IHR4dCA9IG1zZzsgbG9jIH0gOjogYWNjKSAoc3ViIEAgdGFpbClcbiAgICAgICAgaW5cbiAgICAgICAgZGVlcGx5X2ZsYXR0ZW5lZF9zdWJfbXNncyBbXSBzdWJcblxuICBsZXQgb2ZfZXhuIGV4biA9XG4gICAgKCpJRl9BVF9MRUFTVCA0MDYgbWF0Y2ggZXJyb3Jfb2ZfZXhuIGV4biB3aXRoIHwgU29tZSAoYE9rIGUpIC0+IFNvbWUgZSB8IE5vbmUgfCBTb21lIGBBbHJlYWR5X2Rpc3BsYXllZCAtPiBOb25lICopXG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA2IGVycm9yX29mX2V4biBleG4qKVxuXG4gIGxldCBfc2V0X21haW5fbXNnX29sZCBlcnJvciBtc2cgPSB7IGVycm9yIHdpdGggbXNnIH1cblxuICBsZXQgX3NldF9tYWluX21zZ19uZXcgZXJyb3IgbXNnID1cbiAgICBsZXQgdHh0IHBwZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIG1zZyBpblxuICAgIGxldCBtYWluID0geyBlcnJvci5tYWluIHdpdGggdHh0IH0gaW5cbiAgICB7IGVycm9yIHdpdGggbWFpbiB9XG5cbiAgbGV0IHNldF9tYWluX21zZyBlcnJvciBtc2cgPVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbXNnX29sZCBlcnJvciBtc2cqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9tc2dfbmV3IGVycm9yIG1zZyopXG5cbiAgbGV0IF9tYWtlX2Vycm9yX29mX21lc3NhZ2Vfb2xkIH5zdWIgeyBsb2M7IHR4dCB9ID1cbiAgICBsZXQgc3ViID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geyBsb2M7IHR4dCB9IC0+IHsgbG9jOyBtc2cgPSB0eHQ7IHN1YiA9IFtdOyBpZl9oaWdobGlnaHQgPSB0eHQgfSlcbiAgICAgICAgc3ViXG4gICAgaW5cbiAgICB7IGxvYzsgbXNnID0gdHh0OyBzdWI7IGlmX2hpZ2hsaWdodCA9IHR4dCB9XG5cbiAgbGV0IF9tYWtlX2Vycm9yX29mX21lc3NhZ2VfbmV3IH5zdWIgeyBsb2M7IHR4dCB9ID1cbiAgICBsZXQgbWtfdHh0IHggcHBmID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgeCBpblxuICAgIGxldCBtayBsb2MgeCA9IHsgbG9jOyB0eHQgPSBta190eHQgeCB9IGluXG4gICAge1xuICAgICAga2luZCA9IFJlcG9ydF9lcnJvcjtcbiAgICAgIG1haW4gPSBtayBsb2MgdHh0O1xuICAgICAgc3ViID0gTGlzdC5tYXAgKGZ1biB7IGxvYzsgdHh0IH0gLT4gbWsgbG9jIHR4dCkgc3ViO1xuICAgIH1cblxuICBsZXQgbWFrZSB+c3ViIG1zZyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9tYWtlX2Vycm9yX29mX21lc3NhZ2Vfb2xkIH5zdWIgbXNnKilcbiAgICAoKklGX0FUX0xFQVNUIDQwOCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX25ldyB+c3ViIG1zZyopXG5cbiAgbGV0IF9zZXRfbWFpbl9sb2Nfb2xkIGVycm9yIGxvYyA9IHsgZXJyb3Igd2l0aCBsb2MgfVxuXG4gIGxldCBfc2V0X21haW5fbG9jX25ldyBlcnJvciBsb2MgPVxuICAgIGxldCBtYWluID0geyBlcnJvci5tYWluIHdpdGggbG9jIH0gaW5cbiAgICB7IGVycm9yIHdpdGggbWFpbiB9XG5cbiAgbGV0IHNldF9tYWluX2xvYyBlcnJvciBsb2MgPVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbG9jX29sZCBlcnJvciBsb2MqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9sb2NfbmV3IGVycm9yIGxvYyopXG5lbmRcblxubGV0IHJhaXNlX2Vycm9yZiA/bG9jIG1zZyA9IHJhaXNlX2Vycm9yZiA/bG9jIG1zZ1xuIiwiaW5jbHVkZSBPY2FtbF9jb21tb24uTG9uZ2lkZW50XG5cbmxldCBwYXJzZSBzID1cbiAgKCpJRl9OT1RfQVRfTEVBU1QgNDExIHBhcnNlIHMgKilcbiAgKCpJRl9BVF9MRUFTVCA0MTEgT2NhbWxfY29tbW9uLlBhcnNlLmxvbmdpZGVudCBAQCBMZXhpbmcuZnJvbV9zdHJpbmcgQEAgcyAqKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgIHwgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBleGNlcHQgWydsJ10sIFsnTCddIGFuZCBbJ24nXSBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgICBbe2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfV0uXG5cbiAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiogQXR0cmlidXRlcyBzdWNoIGFzIFtbXFxAaWQgQVJHXV0gYW5kIFtbXFxAXFxAaWQgQVJHXV0uXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqKiBFeHRlbnNpb24gcG9pbnRzIHN1Y2ggYXMgW1slaWQgQVJHXSBhbmQgWyUlaWQgQVJHXV0uXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCoqIFs6IFRdIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbPyBQXSAgb3IgIFs/IFAgd2hlbiBFXSwgaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55ICAoKiogW19dICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1B0eXBfYXJyb3cobGJsLCBUMSwgVDIpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUMSAtPiBUMl0gICAgd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX3R1cGxlKFtUMSA7IC4uLiA7IFRuXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCB0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gICAgIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jbGFzcyh0Y29uc3RyLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbI3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgI3Rjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSAjdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgICgqKiBbVCBhcyAnYV0uICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICgqKiBbUHR5cF92YXJpYW50KFtgQTtgQl0sIGZsYWcsIGxhYmVscyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1sgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPiBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogWydhMSAuLi4gJ2FuLiBUXVxuXG4gICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1bUHBhdF9jb25zdHJhaW50XX0gbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzpcblxuICAgICAgICAgICAge1tsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUID0gZSAuLi5dfVxuICAgICAgICAgICAgIC0gVW5kZXIge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgICB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9W1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfVtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH1bUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9W3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dLiAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICgqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuICAgICAgICAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAgICAgICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLlxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbYEFdICAgICAgICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFRdICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCoqIHsyIFBhdHRlcm5zfSAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sIFsxbl0gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbQyBQXSAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW10sIFApXVxuICAgICAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFthOyBiXSwgUCldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2BBIFBdIHdoZW4gW3BhdF0gaXMgW1NvbWUgUF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQcGF0X3JlY29yZChbKGwxLCBQMSkgOyAuLi4gOyAobG4sIFBuKV0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfVxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuOyBffV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX1cblxuICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0ICAoKiogUGF0dGVybiBbW3wgUDE7IC4uLjsgUG4gfF1dICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogUGF0dGVybiBbWyVpZF1dICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBjb25zdGFudCBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLFxuICAgICAgICAgICAgICBbMUxdLCBbMW5dICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3QgICgqKiBbZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2Z1bihsYmwsIGV4cDAsIFAsIEUxKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seVxuICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBbZnVuIFAxIFAyIC4uIFBuIC0+IEUxXSBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgICAtIFtsZXQgZiBQID0gRV0gaXMgcmVwcmVzZW50ZWQgdXNpbmdcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGV4cF9hcHBseShFMCwgWyhsMSwgRTEpIDsgLi4uIDsgKGxuLCBFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmVcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19ICAgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSxcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0gKGxhYmVsbGVkIGFyZ3VtZW50cykgb3JcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgIC0gW0MgRV0gICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dICAgICAgICAgd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICAoKiogW0UubF0gKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICAgIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b31bVXB0b119XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99W0Rvd250b119XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFsoRSA6PiBUKV0gICAgICB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW25ldyBNLmNdICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICAgICB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9XG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqKiB7MiBWYWx1ZSBkZXNjcmlwdGlvbnN9ICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IXZhbHVlX2Rlc2NyaXB0aW9ufSByZXByZXNlbnRzOlxuICAgICAgLSBbdmFsIHg6IFRdLFxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV1cbiAgKilcblxuICAoKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiogWygnYTEsLi4uJ2FuKSB0XSAqKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKipcbiAgICAgSGVyZSBhcmUgdHlwZSBkZWNsYXJhdGlvbnMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uLFxuICAgICBmb3IgdmFyaW91cyB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9W3B0eXBlX2tpbmRdfVxuICAgICAgICAgICAgIGFuZCB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX21hbmlmZXN0fVtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcbiAgIC0gW3R5cGUgdF0gICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn1bUHR5cGVfb3Blbl19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdCAgKCoqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtsIDogVCBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKlxuICAgICAtIFt7IC4uLjsgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfSxcbiAgICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19LlxuXG4gICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX3ZhcnM6IHN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbn1cbiAgICAgIHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBvZjpcbiAgICAtIFtDIG9mIFQxICogLi4uICogVG5dICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0M6IFQwXSAgICAgICAgICAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDIG9mIHsuLi59XSAgICAgICAgICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAtIFtDOiB7Li4ufSAtPiBUMF0gICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS5cbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiAuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl0gKilcbiAgICB9XG4gICgqKlxuICAgICBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAgKFt0eXBlIHQgKz0gLi4uXSkuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQ6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBbUGV4dF9kZWNsKGV4aXN0ZW50aWFscywgY19hcmdzLCB0X29wdCldXG4gICAgICAgICAgICBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG4gICAgICAgICAgICAtIFtDIG9mIFQxICogLi4uICogVG5dIHdoZW46XG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtOb25lXS59fVxuICAgICAgICAgICAgLSBbQzogVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6ICdhLi4uIC4gVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1snYTsuLi5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi4gOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogLSBbY11cbiAgICAgICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3Nfc2lnbmF0dXJlXSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9W3Bjc2lnX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9W1B0eXBfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGUgICgqKiBbaW5oZXJpdCBDVF0gKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gICAgfCBQY3RmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICAgVGhleSBhcmUgYWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbY10gYW5kIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2Z1bihsYmwsIGV4cDAsIFAsIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoIFs/XVxuICAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGUgICgqKiBbKENFIDogQ1QpXSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNsYXNzX3N0cnVjdHVyZX0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdChzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9W3Bjc3RyX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fVtQcGF0X2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRV1cbiAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XVxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdmFsIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX0pXG4gICAgICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByICAoKiogW21vZHVsZSB0eXBlIG9mIE1FXSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbKG1vZHVsZSBNKV0gKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXQgICgqKiBbKCldICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbTmFtZWQobmFtZSwgTVQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgICAgIC0gWyhfIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbTm9uZV0gKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSBYID0gTV0gYW5kIFttb2R1bGUgWCA6IE1UXSAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG5dICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9zdWJzdGl0dXRpb25dIHJlcHJlc2VudHMgW1MgOj0gTV0gKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV90eXBlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAtIFtTID0gTVRdLFxuICAgICAtIFtTXSBmb3IgYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sXG4gICAgICAgd2hlbiB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9W3BtdGRfdHlwZV19IGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgKHNpbGVuY2VzIHRoZSBcInVzZWQgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgICAgLSBbb3BlbiAgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZXNjcmlwdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbWF0gKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZSAgKCoqIFtzdHJ1Y3QgLi4uIGVuZF0gKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwciAgKCoqIFtNRTEoTUUyKV0gKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmc6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMxXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMxXCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgVGhvbWFzIEdhemFnbmFpcmUsIE9DYW1sUHJvICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgRmFicmljZSBMZSBGZXNzYW50LCBJTlJJQSBTYWNsYXkgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBIb25nYm8gWmhhbmcsIFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBPcmlnaW5hbCBDb2RlIGZyb20gQmVyLW1ldGFvY2FtbCwgbW9kaWZpZWQgZm9yIDMuMTIuMCBhbmQgZml4ZWQgKilcbigqIFByaW50aW5nIGNvZGUgZXhwcmVzc2lvbnMgKilcbigqIEF1dGhvcnM6ICBFZCBQaXp6aSwgRmFicmljZSBMZSBGZXNzYW50ICopXG4oKiBFeHRlbnNpdmUgUmV3cml0ZTogSG9uZ2JvIFpoYW5nOiBVbml2ZXJzaXR5IG9mIFBlbm5zeWx2YW5pYSAqKVxuKCogVE9ETyBtb3JlIGZpbmUtZ3JhaW5lZCBwcmVjZWRlbmNlIHByZXR0eS1wcmludGluZyAqKVxuXG5vcGVuIEFzdF80MTRcbm9wZW4gQXN0dHlwZXNcbm9wZW4gRm9ybWF0XG5vcGVuIExvY2F0aW9uXG5vcGVuIExvbmdpZGVudFxub3BlbiBQYXJzZXRyZWVcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IGRlZmF1bHQgfCBTb21lIHggLT4geFxuZW5kXG5cbmxldCB2YXJpZnlfdHlwZV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICBsZXQgY2hlY2tfdmFyaWFibGUgdmwgbG9jIHYgPVxuICAgIGlmIExpc3QubWVtIHYgdmwgdGhlblxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ2YXJpYWJsZSBpbiBzY29wZSBzeW50YXggZXJyb3I6ICVzXCIgdlxuICBpblxuICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB2YXJfbmFtZXMgaW5cbiAgbGV0IHJlYyBsb29wIHQgPVxuICAgIGxldCBkZXNjID1cbiAgICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgIHwgUHR5cF92YXIgeCAtPlxuICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHg7XG4gICAgICAgICAgUHR5cF92YXIgeFxuICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKSB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzXG4gICAgICAgIC0+XG4gICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+IFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPiBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT5cbiAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyBzdHJpbmc7XG4gICAgICAgICAgUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAoTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKVxuICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW4gdiAtPiBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB2LnR4dClcbiAgICAgICAgICAgIHN0cmluZ19sc3Q7XG4gICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgaW5cbiAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgfCBSdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPiBSdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICBpblxuICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgbGV0IHBvZl9kZXNjID1cbiAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgIHwgT3RhZyAobGFiZWwsIHQpIC0+IE90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICBpblxuICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gIGluXG4gIGxvb3AgdFxuXG5sZXQgcHJlZml4X3N5bWJvbHMgPSBbICchJzsgJz8nOyAnficgXVxuXG5sZXQgaW5maXhfc3ltYm9scyA9XG4gIFsgJz0nOyAnPCc7ICc+JzsgJ0AnOyAnXic7ICd8JzsgJyYnOyAnKyc7ICctJzsgJyonOyAnLyc7ICckJzsgJyUnOyAnIycgXVxuXG4oKiB0eXBlIGZpeGl0eSA9IEluZml4fCBQcmVmaXggICopXG5sZXQgc3BlY2lhbF9pbmZpeF9zdHJpbmdzID1cbiAgWyBcImFzclwiOyBcImxhbmRcIjsgXCJsb3JcIjsgXCJsc2xcIjsgXCJsc3JcIjsgXCJseG9yXCI7IFwibW9kXCI7IFwib3JcIjsgXCI6PVwiOyBcIiE9XCI7IFwiOjpcIiBdXG5cbmxldCBsZXRvcCBzID1cbiAgU3RyaW5nLmxlbmd0aCBzID4gM1xuICAmJiBzLlswXSA9ICdsJ1xuICAmJiBzLlsxXSA9ICdlJ1xuICAmJiBzLlsyXSA9ICd0J1xuICAmJiBMaXN0Lm1lbSBzLlszXSBpbmZpeF9zeW1ib2xzXG5cbmxldCBhbmRvcCBzID1cbiAgU3RyaW5nLmxlbmd0aCBzID4gM1xuICAmJiBzLlswXSA9ICdhJ1xuICAmJiBzLlsxXSA9ICduJ1xuICAmJiBzLlsyXSA9ICdkJ1xuICAmJiBMaXN0Lm1lbSBzLlszXSBpbmZpeF9zeW1ib2xzXG5cbigqIGRldGVybWluZXMgaWYgdGhlIHN0cmluZyBpcyBhbiBpbmZpeCBzdHJpbmcuXG4gICBjaGVja3MgYmFja3dhcmRzLCBmaXJzdCBhbGxvd2luZyBhIHJlbmFtaW5nIHBvc3RmaXggKFwiXzEwMlwiKSB3aGljaFxuICAgbWF5IGhhdmUgcmVzdWx0ZWQgZnJvbSBQZXhwIC0+IFRleHAgLT4gUGV4cCB0cmFuc2xhdGlvbiwgdGhlbiBjaGVja2luZ1xuICAgaWYgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBhcmUgdmFsaWQgaW5maXhcbiAgIGNoYXJhY3RlcnMuICopXG5sZXQgZml4aXR5X29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJcIiAtPiBgTm9ybWFsXG4gIHwgcyB3aGVuIExpc3QubWVtIHMgc3BlY2lhbF9pbmZpeF9zdHJpbmdzIC0+IGBJbmZpeCBzXG4gIHwgcyB3aGVuIExpc3QubWVtIHMuWzBdIGluZml4X3N5bWJvbHMgLT4gYEluZml4IHNcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcy5bMF0gcHJlZml4X3N5bWJvbHMgLT4gYFByZWZpeCBzXG4gIHwgcyB3aGVuIHMuWzBdID0gJy4nIC0+IGBNaXhmaXggc1xuICB8IHMgd2hlbiBsZXRvcCBzIC0+IGBMZXRvcCBzXG4gIHwgcyB3aGVuIGFuZG9wIHMgLT4gYEFuZG9wIHNcbiAgfCBfIC0+IGBOb3JtYWxcblxubGV0IHZpZXdfZml4aXR5X29mX2V4cCA9IGZ1bmN0aW9uXG4gIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGw7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgZml4aXR5X29mX3N0cmluZyBsXG4gIHwgXyAtPiBgTm9ybWFsXG5cbmxldCBpc19pbmZpeCA9IGZ1bmN0aW9uIGBJbmZpeCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgaXNfbWl4Zml4ID0gZnVuY3Rpb24gYE1peGZpeCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgaXNfa3dkb3AgPSBmdW5jdGlvbiBgTGV0b3AgXyB8IGBBbmRvcCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgZmlyc3RfaXMgYyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBzdHIuWzBdID0gY1xubGV0IGxhc3RfaXMgYyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBzdHIuW1N0cmluZy5sZW5ndGggc3RyIC0gMV0gPSBjXG5sZXQgZmlyc3RfaXNfaW4gY3Mgc3RyID0gc3RyIDw+IFwiXCIgJiYgTGlzdC5tZW0gc3RyLlswXSBjc1xuXG4oKiB3aGljaCBpZGVudGlmaWVycyBhcmUgaW4gZmFjdCBvcGVyYXRvcnMgbmVlZGluZyBwYXJlbnRoZXNlcyAqKVxubGV0IG5lZWRzX3BhcmVucyB0eHQgPVxuICBsZXQgZml4ID0gZml4aXR5X29mX3N0cmluZyB0eHQgaW5cbiAgaXNfaW5maXggZml4IHx8IGlzX21peGZpeCBmaXggfHwgaXNfa3dkb3AgZml4XG4gIHx8IGZpcnN0X2lzX2luIHByZWZpeF9zeW1ib2xzIHR4dFxuXG4oKiBzb21lIGluZml4ZXMgbmVlZCBzcGFjZXMgYXJvdW5kIHBhcmVucyB0byBhdm9pZCBjbGFzaGVzIHdpdGggY29tbWVudFxuICAgc3ludGF4ICopXG5sZXQgbmVlZHNfc3BhY2VzIHR4dCA9IGZpcnN0X2lzICcqJyB0eHQgfHwgbGFzdF9pcyAnKicgdHh0XG5sZXQgc3RyaW5nX2xvYyBwcGYgeCA9IGZwcmludGYgcHBmIFwiJXNcIiB4LnR4dFxuXG4oKiBhZGQgcGFyZW50aGVzZXMgdG8gYmluZGVycyB3aGVuIHRoZXkgYXJlIGluIGZhY3QgaW5maXggb3IgcHJlZml4IG9wZXJhdG9ycyAqKVxubGV0IHByb3RlY3RfaWRlbnQgcHBmIHR4dCA9XG4gIGxldCBmb3JtYXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICBpZiBub3QgKG5lZWRzX3BhcmVucyB0eHQpIHRoZW4gXCIlc1wiXG4gICAgZWxzZSBpZiBuZWVkc19zcGFjZXMgdHh0IHRoZW4gXCIoQDslc0A7KVwiXG4gICAgZWxzZSBcIiglcylcIlxuICBpblxuICBmcHJpbnRmIHBwZiBmb3JtYXQgdHh0XG5cbmxldCBwcm90ZWN0X2xvbmdpZGVudCBwcGYgcHJpbnRfbG9uZ2lkZW50IGxvbmdwcmVmaXggdHh0ID1cbiAgbGV0IGZvcm1hdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgIGlmIG5vdCAobmVlZHNfcGFyZW5zIHR4dCkgdGhlbiBcIiVhLiVzXCJcbiAgICBlbHNlIGlmIG5lZWRzX3NwYWNlcyB0eHQgdGhlbiBcIiVhLihAOyVzQDspXCJcbiAgICBlbHNlIFwiJWEuKCVzKVwiXG4gIGluXG4gIGZwcmludGYgcHBmIGZvcm1hdCBwcmludF9sb25naWRlbnQgbG9uZ3ByZWZpeCB0eHRcblxudHlwZSBzcGFjZV9mb3JtYXR0ZXIgPSAodW5pdCwgRm9ybWF0LmZvcm1hdHRlciwgdW5pdCkgZm9ybWF0XG5cbmxldCBvdmVycmlkZSA9IGZ1bmN0aW9uIE92ZXJyaWRlIC0+IFwiIVwiIHwgRnJlc2ggLT4gXCJcIlxuXG4oKiB2YXJpYW5jZSBlbmNvZGluZzogbmVlZCB0byBzeW5jIHVwIHdpdGggdGhlIFtwYXJzZXIubWx5XSAqKVxubGV0IHR5cGVfdmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IE5vVmFyaWFuY2UgLT4gXCJcIlxuICB8IENvdmFyaWFudCAtPiBcIitcIlxuICB8IENvbnRyYXZhcmlhbnQgLT4gXCItXCJcblxubGV0IHR5cGVfaW5qZWN0aXZpdHkgPSBmdW5jdGlvbiBOb0luamVjdGl2aXR5IC0+IFwiXCIgfCBJbmplY3RpdmUgLT4gXCIhXCJcblxudHlwZSBjb25zdHJ1Y3QgPVxuICBbIGBjb25zIG9mIGV4cHJlc3Npb24gbGlzdFxuICB8IGBsaXN0IG9mIGV4cHJlc3Npb24gbGlzdFxuICB8IGBuaWxcbiAgfCBgbm9ybWFsXG4gIHwgYHNpbXBsZSBvZiBMb25naWRlbnQudFxuICB8IGB0dXBsZSBdXG5cbmxldCB2aWV3X2V4cHIgeCA9XG4gIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCIoKVwiOyBfIH0sIF8pIC0+IGB0dXBsZVxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgXykgLT4gYG5pbFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSwgU29tZSBfKSAtPlxuICAgICAgbGV0IHJlYyBsb29wIGV4cCBhY2MgPVxuICAgICAgICBtYXRjaCBleHAgd2l0aFxuICAgICAgICB8IHtcbiAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgXyk7XG4gICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgfSAtPlxuICAgICAgICAgICAgKExpc3QucmV2IGFjYywgdHJ1ZSlcbiAgICAgICAgfCB7XG4gICAgICAgICBwZXhwX2Rlc2MgPVxuICAgICAgICAgICBQZXhwX2NvbnN0cnVjdFxuICAgICAgICAgICAgICggeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sXG4gICAgICAgICAgICAgICBTb21lIHsgcGV4cF9kZXNjID0gUGV4cF90dXBsZSBbIGUxOyBlMiBdOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAgICAgICAgKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICBsb29wIGUyIChlMSA6OiBhY2MpXG4gICAgICAgIHwgZSAtPiAoTGlzdC5yZXYgKGUgOjogYWNjKSwgZmFsc2UpXG4gICAgICBpblxuICAgICAgbGV0IGxzLCBiID0gbG9vcCB4IFtdIGluXG4gICAgICBpZiBiIHRoZW4gYGxpc3QgbHMgZWxzZSBgY29ucyBsc1xuICB8IFBleHBfY29uc3RydWN0ICh4LCBOb25lKSAtPiBgc2ltcGxlIHgudHh0XG4gIHwgXyAtPiBgbm9ybWFsXG5cbmxldCBpc19zaW1wbGVfY29uc3RydWN0IDogY29uc3RydWN0IC0+IGJvb2wgPSBmdW5jdGlvblxuICB8IGBuaWwgfCBgdHVwbGUgfCBgbGlzdCBfIHwgYHNpbXBsZSBfIC0+IHRydWVcbiAgfCBgY29ucyBfIHwgYG5vcm1hbCAtPiBmYWxzZVxuXG5sZXQgcHAgPSBmcHJpbnRmXG5cbnR5cGUgY3R4dCA9IHsgcGlwZSA6IGJvb2w7IHNlbWkgOiBib29sOyBpZnRoZW5lbHNlIDogYm9vbCB9XG5cbmxldCByZXNldF9jdHh0ID0geyBwaXBlID0gZmFsc2U7IHNlbWkgPSBmYWxzZTsgaWZ0aGVuZWxzZSA9IGZhbHNlIH1cbmxldCB1bmRlcl9waXBlIGN0eHQgPSB7IGN0eHQgd2l0aCBwaXBlID0gdHJ1ZSB9XG5sZXQgdW5kZXJfc2VtaSBjdHh0ID0geyBjdHh0IHdpdGggc2VtaSA9IHRydWUgfVxubGV0IHVuZGVyX2lmdGhlbmVsc2UgY3R4dCA9IHsgY3R4dCB3aXRoIGlmdGhlbmVsc2UgPSB0cnVlIH1cbigqXG5sZXQgcmVzZXRfc2VtaSBjdHh0ID0geyBjdHh0IHdpdGggc2VtaT1mYWxzZSB9XG5sZXQgcmVzZXRfaWZ0aGVuZWxzZSBjdHh0ID0geyBjdHh0IHdpdGggaWZ0aGVuZWxzZT1mYWxzZSB9XG5sZXQgcmVzZXRfcGlwZSBjdHh0ID0geyBjdHh0IHdpdGggcGlwZT1mYWxzZSB9XG4qKVxuXG5sZXQgbGlzdCA6XG4gICAgICAnYS5cbiAgICAgID9zZXA6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/Zmlyc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/bGFzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+XG4gICAgICBGb3JtYXQuZm9ybWF0dGVyIC0+XG4gICAgICAnYSBsaXN0IC0+XG4gICAgICB1bml0ID1cbiBmdW4gP3NlcCA/Zmlyc3QgP2xhc3QgZnUgZiB4cyAtPlxuICBsZXQgZmlyc3QgPSBtYXRjaCBmaXJzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NilcbiAgYW5kIGxhc3QgPSBtYXRjaCBsYXN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgc2VwID0gbWF0Y2ggc2VwIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIkAgXCIgOiBfIGZvcm1hdDYpIGluXG4gIGxldCBhdXggZiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgWyB4IF0gLT4gZnUgZiB4XG4gICAgfCB4cyAtPlxuICAgICAgICBsZXQgcmVjIGxvb3AgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBbIHggXSAtPiBmdSBmIHhcbiAgICAgICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgICAgICAgZnUgZiB4O1xuICAgICAgICAgICAgICBwcCBmIHNlcDtcbiAgICAgICAgICAgICAgbG9vcCBmIHhzXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIGZpcnN0O1xuICAgICAgICBsb29wIGYgeHM7XG4gICAgICAgIHBwIGYgbGFzdFxuICBpblxuICBhdXggZiB4c1xuXG5sZXQgb3B0aW9uIDpcbiAgICAgICdhLlxuICAgICAgP2ZpcnN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2xhc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICAoRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0KSAtPlxuICAgICAgRm9ybWF0LmZvcm1hdHRlciAtPlxuICAgICAgJ2Egb3B0aW9uIC0+XG4gICAgICB1bml0ID1cbiBmdW4gP2ZpcnN0ID9sYXN0IGZ1IGYgYSAtPlxuICBsZXQgZmlyc3QgPSBtYXRjaCBmaXJzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NilcbiAgYW5kIGxhc3QgPSBtYXRjaCBsYXN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KSBpblxuICBtYXRjaCBhIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB4IC0+XG4gICAgICBwcCBmIGZpcnN0O1xuICAgICAgZnUgZiB4O1xuICAgICAgcHAgZiBsYXN0XG5cbmxldCBwYXJlbiA6XG4gICAgICAnYS5cbiAgICAgID9maXJzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9sYXN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgYm9vbCAtPlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT5cbiAgICAgIEZvcm1hdC5mb3JtYXR0ZXIgLT5cbiAgICAgICdhIC0+XG4gICAgICB1bml0ID1cbiBmdW4gPyhmaXJzdCA9IChcIlwiIDogXyBmb3JtYXQ2KSkgPyhsYXN0ID0gKFwiXCIgOiBfIGZvcm1hdDYpKSBiIGZ1IGYgeCAtPlxuICBpZiBiIHRoZW4gKFxuICAgIHBwIGYgXCIoXCI7XG4gICAgcHAgZiBmaXJzdDtcbiAgICBmdSBmIHg7XG4gICAgcHAgZiBsYXN0O1xuICAgIHBwIGYgXCIpXCIpXG4gIGVsc2UgZnUgZiB4XG5cbmxldCByZWMgbG9uZ2lkZW50IGYgPSBmdW5jdGlvblxuICB8IExpZGVudCBzIC0+IHByb3RlY3RfaWRlbnQgZiBzXG4gIHwgTGRvdCAoeSwgcykgLT4gcHJvdGVjdF9sb25naWRlbnQgZiBsb25naWRlbnQgeSBzXG4gIHwgTGFwcGx5ICh5LCBzKSAtPiBwcCBmIFwiJWEoJWEpXCIgbG9uZ2lkZW50IHkgbG9uZ2lkZW50IHNcblxubGV0IGxvbmdpZGVudF9sb2MgZiB4ID0gcHAgZiBcIiVhXCIgbG9uZ2lkZW50IHgudHh0XG5cbmxldCBjb25zdGFudCBmID0gZnVuY3Rpb25cbiAgfCBQY29uc3RfY2hhciBpIC0+IHBwIGYgXCIlQ1wiIGlcbiAgfCBQY29uc3Rfc3RyaW5nIChpLCBfLCBOb25lKSAtPiBwcCBmIFwiJVNcIiBpXG4gIHwgUGNvbnN0X3N0cmluZyAoaSwgXywgU29tZSBkZWxpbSkgLT4gcHAgZiBcInslc3wlc3wlc31cIiBkZWxpbSBpIGRlbGltXG4gIHwgUGNvbnN0X2ludGVnZXIgKGksIE5vbmUpIC0+IHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIC0+IHBwIGYgXCIlc1wiKSBmIGlcbiAgfCBQY29uc3RfaW50ZWdlciAoaSwgU29tZSBtKSAtPlxuICAgICAgcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgKGksIG0pIC0+IHBwIGYgXCIlcyVjXCIgaSBtKSBmIChpLCBtKVxuICB8IFBjb25zdF9mbG9hdCAoaSwgTm9uZSkgLT4gcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgLT4gcHAgZiBcIiVzXCIpIGYgaVxuICB8IFBjb25zdF9mbG9hdCAoaSwgU29tZSBtKSAtPlxuICAgICAgcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgKGksIG0pIC0+IHBwIGYgXCIlcyVjXCIgaSBtKSBmIChpLCBtKVxuXG4oKiB0cmFpbGluZyBzcGFjZSopXG5sZXQgbXV0YWJsZV9mbGFnIGYgPSBmdW5jdGlvbiBJbW11dGFibGUgLT4gKCkgfCBNdXRhYmxlIC0+IHBwIGYgXCJtdXRhYmxlQDtcIlxubGV0IHZpcnR1YWxfZmxhZyBmID0gZnVuY3Rpb24gQ29uY3JldGUgLT4gKCkgfCBWaXJ0dWFsIC0+IHBwIGYgXCJ2aXJ0dWFsQDtcIlxuXG4oKiB0cmFpbGluZyBzcGFjZSBhZGRlZCAqKVxubGV0IHJlY19mbGFnIGYgcmYgPVxuICBtYXRjaCByZiB3aXRoIE5vbnJlY3Vyc2l2ZSAtPiAoKSB8IFJlY3Vyc2l2ZSAtPiBwcCBmIFwicmVjIFwiXG5cbmxldCBub25yZWNfZmxhZyBmIHJmID1cbiAgbWF0Y2ggcmYgd2l0aCBOb25yZWN1cnNpdmUgLT4gcHAgZiBcIm5vbnJlYyBcIiB8IFJlY3Vyc2l2ZSAtPiAoKVxuXG5sZXQgZGlyZWN0aW9uX2ZsYWcgZiA9IGZ1bmN0aW9uXG4gIHwgVXB0byAtPiBwcCBmIFwidG9AIFwiXG4gIHwgRG93bnRvIC0+IHBwIGYgXCJkb3dudG9AIFwiXG5cbmxldCBwcml2YXRlX2ZsYWcgZiA9IGZ1bmN0aW9uIFB1YmxpYyAtPiAoKSB8IFByaXZhdGUgLT4gcHAgZiBcInByaXZhdGVAIFwiXG5sZXQgaXRlcl9sb2MgZiBjdHh0IHsgdHh0OyBsb2MgPSBfIH0gPSBmIGN0eHQgdHh0XG5sZXQgY29uc3RhbnRfc3RyaW5nIGYgcyA9IHBwIGYgXCIlU1wiIHNcblxubGV0IHR5dmFyIHBwZiBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzID49IDIgJiYgcy5bMV0gPSAnXFwnJyB0aGVuXG4gICAgKCogd2l0aG91dCB0aGUgc3BhY2UsIHRoaXMgd291bGQgYmUgcGFyc2VkIGFzXG4gICAgICAgYSBjaGFyYWN0ZXIgbGl0ZXJhbCAqKVxuICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIicgJXNcIiBzXG4gIGVsc2UgRm9ybWF0LmZwcmludGYgcHBmIFwiJyVzXCIgc1xuXG5sZXQgdHl2YXJfbG9jIGYgc3RyID0gdHl2YXIgZiBzdHIudHh0XG5sZXQgc3RyaW5nX3F1b3QgZiB4ID0gcHAgZiBcImAlc1wiIHhcblxuKCogYyBbJ2EsJ2JdICopXG5sZXQgcmVjIGNsYXNzX3BhcmFtc19kZWYgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGwgLT4gcHAgZiBcIlslYV0gXCIgKCogc3BhY2UgKikgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfnNlcDpcIixcIikgbFxuXG5hbmQgdHlwZV93aXRoX2xhYmVsIGN0eHQgZiAobGFiZWwsIGMpID1cbiAgbWF0Y2ggbGFiZWwgd2l0aFxuICB8IE5vbGFiZWwgLT4gY29yZV90eXBlMSBjdHh0IGYgYyAoKiBvdGhlcndpc2UgcGFyZW50aGVzaXplICopXG4gIHwgTGFiZWxsZWQgcyAtPiBwcCBmIFwiJXM6JWFcIiBzIChjb3JlX3R5cGUxIGN0eHQpIGNcbiAgfCBPcHRpb25hbCBzIC0+IHBwIGYgXCI/JXM6JWFcIiBzIChjb3JlX3R5cGUxIGN0eHQpIGNcblxuYW5kIGNvcmVfdHlwZSBjdHh0IGYgeCA9XG4gIGlmIHgucHR5cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAoY29yZV90eXBlIGN0eHQpXG4gICAgICB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnB0eXBfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wdHlwX2Rlc2Mgd2l0aFxuICAgIHwgUHR5cF9hcnJvdyAobCwgY3QxLCBjdDIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhQDstPkA7JWFAXVwiICgqIEZJWE1FIHJlbW92ZSBwYXJlbnMgbGF0ZXIgKilcbiAgICAgICAgICAodHlwZV93aXRoX2xhYmVsIGN0eHQpIChsLCBjdDEpIChjb3JlX3R5cGUgY3R4dCkgY3QyXG4gICAgfCBQdHlwX2FsaWFzIChjdCwgcykgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAO2FzQDslYUBdXCIgKGNvcmVfdHlwZTEgY3R4dCkgY3QgdHl2YXIgc1xuICAgIHwgUHR5cF9wb2x5IChbXSwgY3QpIC0+IGNvcmVfdHlwZSBjdHh0IGYgY3RcbiAgICB8IFB0eXBfcG9seSAoc2wsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYSVhQF1cIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBwcCBmIFwiJWFcIlxuICAgICAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICAgICB8IF8gLT4gcHAgZiBcIiVhQDsuQDtcIiAobGlzdCB0eXZhcl9sb2MgfnNlcDpcIkA7XCIpIGwpXG4gICAgICAgICAgICAgIGwpXG4gICAgICAgICAgc2wgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgXyAtPiBwcCBmIFwiQFs8Mj4lYUBdXCIgKGNvcmVfdHlwZTEgY3R4dCkgeFxuXG5hbmQgY29yZV90eXBlMSBjdHh0IGYgeCA9XG4gIGlmIHgucHR5cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gY29yZV90eXBlIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2FueSAtPiBwcCBmIFwiX1wiXG4gICAgfCBQdHlwX3ZhciBzIC0+IHR5dmFyIGYgc1xuICAgIHwgUHR5cF90dXBsZSBsIC0+IHBwIGYgXCIoJWEpXCIgKGxpc3QgKGNvcmVfdHlwZTEgY3R4dCkgfnNlcDpcIkA7KkA7XCIpIGxcbiAgICB8IFB0eXBfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgICAgcHAgZiAoKiBcIiVhJWFAO1wiICopIFwiJWElYVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgfCBbIHggXSAtPiBwcCBmIFwiJWFAO1wiIChjb3JlX3R5cGUxIGN0eHQpIHhcbiAgICAgICAgICAgIHwgXyAtPiBsaXN0IH5maXJzdDpcIihcIiB+bGFzdDpcIilAO1wiIChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixAO1wiIGYgbClcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFB0eXBfdmFyaWFudCAobCwgY2xvc2VkLCBsb3cpIC0+XG4gICAgICAgIGxldCBmaXJzdF9pc19pbmhlcml0ID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IHsgUGFyc2V0cmVlLnByZl9kZXNjID0gUmluaGVyaXQgXyB9IDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgdHlwZV92YXJpYW50X2hlbHBlciBmIHggPVxuICAgICAgICAgIG1hdGNoIHgucHJmX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUnRhZyAobCwgXywgY3RsKSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSVhQDslYUBdXCIgKGl0ZXJfbG9jIHN0cmluZ19xdW90KSBsXG4gICAgICAgICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IHBwIGYgXCJAO29mQDslYVwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIiZcIikgY3RsKVxuICAgICAgICAgICAgICAgIGN0bCAoYXR0cmlidXRlcyBjdHh0KSB4LnByZl9hdHRyaWJ1dGVzXG4gICAgICAgICAgfCBSaW5oZXJpdCBjdCAtPiBjb3JlX3R5cGUgY3R4dCBmIGN0XG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzwyPlslYSVhXUBdXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgbWF0Y2ggKGwsIGNsb3NlZCkgd2l0aFxuICAgICAgICAgICAgfCBbXSwgQ2xvc2VkIC0+ICgpXG4gICAgICAgICAgICB8IFtdLCBPcGVuIC0+IHBwIGYgXCI+XCIgKCogQ2YgIzcyMDA6IHByaW50IFs+XSBjb3JyZWN0bHkgKilcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIlc0A7JWFcIlxuICAgICAgICAgICAgICAgICAgKG1hdGNoIChjbG9zZWQsIGxvdykgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBDbG9zZWQsIE5vbmUgLT4gaWYgZmlyc3RfaXNfaW5oZXJpdCB0aGVuIFwiIHxcIiBlbHNlIFwiXCJcbiAgICAgICAgICAgICAgICAgIHwgQ2xvc2VkLCBTb21lIF8gLT4gXCI8XCIgKCogRklYTUUgZGVzdWdhciB0aGUgc3ludGF4IHN1Z2FyKilcbiAgICAgICAgICAgICAgICAgIHwgT3BlbiwgXyAtPiBcIj5cIilcbiAgICAgICAgICAgICAgICAgIChsaXN0IHR5cGVfdmFyaWFudF9oZWxwZXIgfnNlcDpcIkA7PDEgLTI+fCBcIilcbiAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgbFxuICAgICAgICAgIChmdW4gZiBsb3cgLT5cbiAgICAgICAgICAgIG1hdGNoIGxvdyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgW10gfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgeHMgLT4gcHAgZiBcIj5AICVhXCIgKGxpc3Qgc3RyaW5nX3F1b3QpIHhzKVxuICAgICAgICAgIGxvd1xuICAgIHwgUHR5cF9vYmplY3QgKGwsIG8pIC0+XG4gICAgICAgIGxldCBjb3JlX2ZpZWxkX3R5cGUgZiB4ID1cbiAgICAgICAgICBtYXRjaCB4LnBvZl9kZXNjIHdpdGhcbiAgICAgICAgICB8IE90YWcgKGwsIGN0KSAtPlxuICAgICAgICAgICAgICAoKiBDZiAjNzIwMCAqKVxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lczogJWFAICVhQCBAXVwiIGwudHh0IChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgICAgICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBvZl9hdHRyaWJ1dGVzXG4gICAgICAgICAgfCBPaW5oZXJpdCBjdCAtPiBwcCBmIFwiQFs8aG92Mj4lYUAgQF1cIiAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBmaWVsZF92YXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBBc3R0eXBlcy5DbG9zZWQgLT4gKClcbiAgICAgICAgICB8IEFzdHR5cGVzLk9wZW4gLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGggW10gLT4gcHAgZiBcIi4uXCIgfCBfIC0+IHBwIGYgXCIgOy4uXCIpXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxob3YyPjxAICVhJWFAID4gQF1cIlxuICAgICAgICAgIChsaXN0IGNvcmVfZmllbGRfdHlwZSB+c2VwOlwiO1wiKVxuICAgICAgICAgIGwgZmllbGRfdmFyIG9cbiAgICAgICAgKCogQ2YgIzcyMDAgKilcbiAgICB8IFB0eXBfY2xhc3MgKGxpLCBsKSAtPlxuICAgICAgICAoKkZJWE1FKilcbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWEjJWFAXVwiXG4gICAgICAgICAgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIilcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFB0eXBfcGFja2FnZSAobGlkLCBjc3RycykgLT4gKFxuICAgICAgICBsZXQgYXV4IGYgKHMsIGN0KSA9XG4gICAgICAgICAgcHAgZiBcInR5cGUgJWFAID1AICVhXCIgbG9uZ2lkZW50X2xvYyBzIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggY3N0cnMgd2l0aFxuICAgICAgICB8IFtdIC0+IHBwIGYgXCJAWzxob3YyPihtb2R1bGVAICVhKUBdXCIgbG9uZ2lkZW50X2xvYyBsaWRcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4obW9kdWxlQCAlYUAgd2l0aEAgJWEpQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICAgICAgICAobGlzdCBhdXggfnNlcDpcIkAgYW5kQCBcIikgY3N0cnMpXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChjb3JlX3R5cGUgY3R4dCkgZiB4XG5cbigqKioqKioqKioqKioqKioqKioqKnBhdHRlcm4qKioqKioqKioqKioqKioqKioqKilcbigqIGJlIGNhdXRpb3VzIHdoZW4gdXNlIFtwYXR0ZXJuXSwgW3BhdHRlcm4xXSBpcyBwcmVmZXJyZWQgKilcbmFuZCBwYXR0ZXJuIGN0eHQgZiB4ID1cbiAgaWYgeC5wcGF0X2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChwYXR0ZXJuIGN0eHQpXG4gICAgICB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBwYXRfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF9hbGlhcyAocCwgcykgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAO2FzQDslYUBdXCIgKHBhdHRlcm4gY3R4dCkgcCBwcm90ZWN0X2lkZW50IHMudHh0XG4gICAgfCBfIC0+IHBhdHRlcm5fb3IgY3R4dCBmIHhcblxuYW5kIHBhdHRlcm5fb3IgY3R4dCBmIHggPVxuICBsZXQgcmVjIGxlZnRfYXNzb2NpYXRpdmUgeCBhY2MgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X29yIChwMSwgcDIpOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgIGxlZnRfYXNzb2NpYXRpdmUgcDEgKHAyIDo6IGFjYylcbiAgICB8IHggLT4geCA6OiBhY2NcbiAgaW5cbiAgbWF0Y2ggbGVmdF9hc3NvY2lhdGl2ZSB4IFtdIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBbIHggXSAtPiBwYXR0ZXJuMSBjdHh0IGYgeFxuICB8IG9ycGF0cyAtPiBwcCBmIFwiQFs8aG92MD4lYUBdXCIgKGxpc3QgfnNlcDpcIkAgfCBcIiAocGF0dGVybjEgY3R4dCkpIG9ycGF0c1xuXG5hbmQgcGF0dGVybjEgY3R4dCAoZiA6IEZvcm1hdC5mb3JtYXR0ZXIpICh4IDogcGF0dGVybikgOiB1bml0ID1cbiAgbGV0IHJlYyBwYXR0ZXJuX2xpc3RfaGVscGVyIGYgPSBmdW5jdGlvblxuICAgIHwge1xuICAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgIFBwYXRfY29uc3RydWN0XG4gICAgICAgICAgICAoIHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LFxuICAgICAgICAgICAgICBTb21lIChbXSwgeyBwcGF0X2Rlc2MgPSBQcGF0X3R1cGxlIFsgcGF0MTsgcGF0MiBdOyBfIH0pICk7XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICBwcCBmIFwiJWE6OiVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBhdDEgcGF0dGVybl9saXN0X2hlbHBlciBwYXQyICgqUkEqKVxuICAgIHwgcCAtPiBwYXR0ZXJuMSBjdHh0IGYgcFxuICBpblxuICBpZiB4LnBwYXRfYXR0cmlidXRlcyA8PiBbXSB0aGVuIHBhdHRlcm4gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucHBhdF9kZXNjIHdpdGhcbiAgICB8IFBwYXRfdmFyaWFudCAobCwgU29tZSBwKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5gJXNAOyVhQF1cIiBsIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKFwiKClcIiB8IFwiW11cIik7IF8gfSwgXykgLT5cbiAgICAgICAgc2ltcGxlX3BhdHRlcm4gY3R4dCBmIHhcbiAgICB8IFBwYXRfY29uc3RydWN0ICgoeyB0eHQ7IF8gfSBhcyBsaSksIHBvKSAtPiAoXG4gICAgICAgIGlmICgqIEZJWE1FIFRoZSB0aGlyZCBmaWVsZCBhbHdheXMgZmFsc2UgKilcbiAgICAgICAgICAgdHh0ID0gTGlkZW50IFwiOjpcIiB0aGVuIHBwIGYgXCIlYVwiIHBhdHRlcm5fbGlzdF9oZWxwZXIgeFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggcG8gd2l0aFxuICAgICAgICAgIHwgU29tZSAoW10sIHgpIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7JWFcIiBsb25naWRlbnRfbG9jIGxpIChzaW1wbGVfcGF0dGVybiBjdHh0KSB4XG4gICAgICAgICAgfCBTb21lICh2bCwgeCkgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQCAodHlwZSAlYSlAOyVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgICAgICAgIChsaXN0IH5zZXA6XCJAIFwiIHN0cmluZ19sb2MpXG4gICAgICAgICAgICAgICAgdmwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHhcbiAgICAgICAgICB8IE5vbmUgLT4gcHAgZiBcIiVhXCIgbG9uZ2lkZW50X2xvYyBsaSlcbiAgICB8IF8gLT4gc2ltcGxlX3BhdHRlcm4gY3R4dCBmIHhcblxuYW5kIHNpbXBsZV9wYXR0ZXJuIGN0eHQgKGYgOiBGb3JtYXQuZm9ybWF0dGVyKSAoeCA6IHBhdHRlcm4pIDogdW5pdCA9XG4gIGlmIHgucHBhdF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcGF0dGVybiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50ICgoXCIoKVwiIHwgXCJbXVwiKSBhcyB4KTsgXyB9LCBOb25lKSAtPlxuICAgICAgICBwcCBmIFwiJXNcIiB4XG4gICAgfCBQcGF0X2FueSAtPiBwcCBmIFwiX1wiXG4gICAgfCBQcGF0X3ZhciB7IHR4dDsgXyB9IC0+IHByb3RlY3RfaWRlbnQgZiB0eHRcbiAgICB8IFBwYXRfYXJyYXkgbCAtPiBwcCBmIFwiQFs8Mj5bfCVhfF1AXVwiIChsaXN0IChwYXR0ZXJuMSBjdHh0KSB+c2VwOlwiO1wiKSBsXG4gICAgfCBQcGF0X3VucGFjayB7IHR4dCA9IE5vbmUgfSAtPiBwcCBmIFwiKG1vZHVsZUAgXylAIFwiXG4gICAgfCBQcGF0X3VucGFjayB7IHR4dCA9IFNvbWUgcyB9IC0+IHBwIGYgXCIobW9kdWxlQCAlcylAIFwiIHNcbiAgICB8IFBwYXRfdHlwZSBsaSAtPiBwcCBmIFwiIyVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHBhdF9yZWNvcmQgKGwsIGNsb3NlZCkgLT4gKFxuICAgICAgICBsZXQgbG9uZ2lkZW50X3hfcGF0dGVybiBmIChsaSwgcCkgPVxuICAgICAgICAgIG1hdGNoIChsaSwgcCkgd2l0aFxuICAgICAgICAgIHwgKCB7IHR4dCA9IExpZGVudCBzOyBfIH0sXG4gICAgICAgICAgICAgIHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQ7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW107IF8gfSApXG4gICAgICAgICAgICB3aGVuIHMgPSB0eHQgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICB8IF8gLT4gcHAgZiBcIkBbPDI+JWFAOz1AOyVhQF1cIiBsb25naWRlbnRfbG9jIGxpIChwYXR0ZXJuMSBjdHh0KSBwXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNsb3NlZCB3aXRoXG4gICAgICAgIHwgQ2xvc2VkIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8Mj57QDslYUA7fUBdXCIgKGxpc3QgbG9uZ2lkZW50X3hfcGF0dGVybiB+c2VwOlwiO0A7XCIpIGxcbiAgICAgICAgfCBfIC0+IHBwIGYgXCJAWzwyPntAOyVhO199QF1cIiAobGlzdCBsb25naWRlbnRfeF9wYXR0ZXJuIH5zZXA6XCI7QDtcIikgbClcbiAgICB8IFBwYXRfdHVwbGUgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8MT4oJWEpQF1cIiAobGlzdCB+c2VwOlwiLEA7XCIgKHBhdHRlcm4xIGN0eHQpKSBsICgqIGxldmVsMSopXG4gICAgfCBQcGF0X2NvbnN0YW50IGMgLT4gcHAgZiBcIiVhXCIgY29uc3RhbnQgY1xuICAgIHwgUHBhdF9pbnRlcnZhbCAoYzEsIGMyKSAtPiBwcCBmIFwiJWEuLiVhXCIgY29uc3RhbnQgYzEgY29uc3RhbnQgYzJcbiAgICB8IFBwYXRfdmFyaWFudCAobCwgTm9uZSkgLT4gcHAgZiBcImAlc1wiIGxcbiAgICB8IFBwYXRfY29uc3RyYWludCAocCwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiglYUA7OkA7JWEpQF1cIiAocGF0dGVybjEgY3R4dCkgcCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQcGF0X2xhenkgcCAtPiBwcCBmIFwiQFs8Mj4obGF6eUA7JWEpQF1cIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgIHwgUHBhdF9leGNlcHRpb24gcCAtPiBwcCBmIFwiQFs8Mj5leGNlcHRpb25AOyVhQF1cIiAocGF0dGVybjEgY3R4dCkgcFxuICAgIHwgUHBhdF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IFBwYXRfb3BlbiAobGlkLCBwKSAtPlxuICAgICAgICBsZXQgd2l0aF9wYXJlbiA9XG4gICAgICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHBhdF9hcnJheSBfIHwgUHBhdF9yZWNvcmQgX1xuICAgICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IChcIigpXCIgfCBcIltdXCIpOyBfIH0sIE5vbmUpIC0+XG4gICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgfCBfIC0+IHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWEuJWEgQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICAgIChwYXJlbiB3aXRoX3BhcmVuIEBAIHBhdHRlcm4xIGN0eHQpXG4gICAgICAgICAgcFxuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChwYXR0ZXJuIGN0eHQpIGYgeFxuXG5hbmQgbGFiZWxfZXhwIGN0eHQgZiAobCwgb3B0LCBwKSA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IE5vbGFiZWwgLT5cbiAgICAgICgqIHNpbmdsZSBjYXNlIHBhdHRlcm4gcGFyZW5zIG5lZWRlZCBoZXJlICopXG4gICAgICBwcCBmIFwiJWFAIFwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gIHwgT3B0aW9uYWwgcmVzdCAtPiAoXG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dDsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAgIHdoZW4gdHh0ID0gcmVzdCAtPiAoXG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgbyAtPiBwcCBmIFwiPyglcz1AOyVhKUA7XCIgcmVzdCAoZXhwcmVzc2lvbiBjdHh0KSBvXG4gICAgICAgICAgfCBOb25lIC0+IHBwIGYgXCI/JXNAIFwiIHJlc3QpXG4gICAgICB8IF8gLT4gKFxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBTb21lIG8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIj8lczooJWE9QDslYSlAO1wiIHJlc3QgKHBhdHRlcm4xIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgb1xuICAgICAgICAgIHwgTm9uZSAtPiBwcCBmIFwiPyVzOiVhQDtcIiByZXN0IChzaW1wbGVfcGF0dGVybiBjdHh0KSBwKSlcbiAgfCBMYWJlbGxlZCBsIC0+IChcbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0OyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gd2hlbiB0eHQgPSBsXG4gICAgICAgIC0+XG4gICAgICAgICAgcHAgZiBcIn4lc0A7XCIgbFxuICAgICAgfCBfIC0+IHBwIGYgXCJ+JXM6JWFAO1wiIGwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHApXG5cbmFuZCBzdWdhcl9leHByIGN0eHQgZiBlID1cbiAgaWYgZS5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBmYWxzZVxuICBlbHNlXG4gICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9hcHBseVxuICAgICAgICAoIHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IGlkOyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0sXG4gICAgICAgICAgYXJncyApXG4gICAgICB3aGVuIExpc3QuZm9yX2FsbCAoZnVuIChsYWIsIF8pIC0+IGxhYiA9IE5vbGFiZWwpIGFyZ3MgLT4gKFxuICAgICAgICBsZXQgcHJpbnRfaW5kZXhvcCBhIHBhdGhfcHJlZml4IGFzc2lnbiBsZWZ0IHNlcCByaWdodCBwcmludF9pbmRleFxuICAgICAgICAgICAgaW5kaWNlcyByZW1fYXJncyA9XG4gICAgICAgICAgbGV0IHByaW50X3BhdGggcHBmID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIG0gLT4gcHAgcHBmIFwiLiVhXCIgbG9uZ2lkZW50IG1cbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIChhc3NpZ24sIHJlbV9hcmdzKSB3aXRoXG4gICAgICAgICAgfCBmYWxzZSwgW10gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbJWElYSVzJWElc0BdXCIgKHNpbXBsZV9leHByIGN0eHQpIGEgcHJpbnRfcGF0aCBwYXRoX3ByZWZpeFxuICAgICAgICAgICAgICAgIGxlZnQgKGxpc3QgfnNlcCBwcmludF9pbmRleCkgaW5kaWNlcyByaWdodDtcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgdHJ1ZSwgWyB2IF0gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbJWElYSVzJWElc0AgPC1AOzwxIDI+JWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBhIHByaW50X3BhdGhcbiAgICAgICAgICAgICAgICBwYXRoX3ByZWZpeCBsZWZ0IChsaXN0IH5zZXAgcHJpbnRfaW5kZXgpIGluZGljZXMgcmlnaHRcbiAgICAgICAgICAgICAgICAoc2ltcGxlX2V4cHIgY3R4dCkgdjtcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCAoaWQsIExpc3QubWFwIHNuZCBhcmdzKSB3aXRoXG4gICAgICAgIHwgTGlkZW50IFwiIVwiLCBbIGUgXSAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdj4hJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlO1xuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICB8IExkb3QgKHBhdGgsICgoXCJnZXRcIiB8IFwic2V0XCIpIGFzIGZ1bmMpKSwgYSA6OiBvdGhlcl9hcmdzIC0+IChcbiAgICAgICAgICAgIGxldCBhc3NpZ24gPSBmdW5jID0gXCJzZXRcIiBpblxuICAgICAgICAgICAgbGV0IHByaW50ID0gcHJpbnRfaW5kZXhvcCBhIE5vbmUgYXNzaWduIGluXG4gICAgICAgICAgICBtYXRjaCAocGF0aCwgb3RoZXJfYXJncykgd2l0aFxuICAgICAgICAgICAgfCBMaWRlbnQgXCJBcnJheVwiLCBpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi4oXCIgXCJcIiBcIilcIiAoZXhwcmVzc2lvbiBjdHh0KSBbIGkgXSByZXN0XG4gICAgICAgICAgICB8IExpZGVudCBcIlN0cmluZ1wiLCBpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi5bXCIgXCJcIiBcIl1cIiAoZXhwcmVzc2lvbiBjdHh0KSBbIGkgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkxXCIpLCBpMSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxIF0gcmVzdFxuICAgICAgICAgICAgfCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkFycmF5MlwiKSwgaTEgOjogaTIgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgWyBpMTsgaTIgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkzXCIpLCBpMSA6OiBpMiA6OiBpMyA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxOyBpMjsgaTMgXSByZXN0XG4gICAgICAgICAgICB8ICggTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJHZW5hcnJheVwiKSxcbiAgICAgICAgICAgICAgICB7IHBleHBfZGVzYyA9IFBleHBfYXJyYXkgaW5kZXhlczsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSA6OiByZXN0XG4gICAgICAgICAgICAgICkgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIGluZGV4ZXMgcmVzdFxuICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICB8IChMaWRlbnQgcyB8IExkb3QgKF8sIHMpKSwgYSA6OiBpIDo6IHJlc3Qgd2hlbiBmaXJzdF9pcyAnLicgcyAtPlxuICAgICAgICAgICAgKCogZXh0cmFjdCBvcGVyYXRvcjpcbiAgICAgICAgICAgICAgIGFzc2lnbm1lbnQgb3BlcmF0b3JzIGVuZCB3aXRoIFtyaWdodF9icmFja2V0IF4gXCI8LVwiXSxcbiAgICAgICAgICAgICAgIGFjY2VzcyBvcGVyYXRvcnMgZW5kIHdpdGggW3JpZ2h0X2JyYWNrZXRdIGRpcmVjdGx5XG4gICAgICAgICAgICAqKVxuICAgICAgICAgICAgbGV0IG11bHRpX2luZGljZXMgPSBTdHJpbmcuY29udGFpbnMgcyAnOycgaW5cbiAgICAgICAgICAgIGxldCBpID1cbiAgICAgICAgICAgICAgbWF0Y2ggaS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXJyYXkgbCB3aGVuIG11bHRpX2luZGljZXMgLT4gbFxuICAgICAgICAgICAgICB8IF8gLT4gWyBpIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYXNzaWduID0gbGFzdF9pcyAnLScgcyBpblxuICAgICAgICAgICAgbGV0IGtpbmQgPVxuICAgICAgICAgICAgICAoKiBleHRyYWN0IHRoZSByaWdodCBlbmQgYnJhY2tldCAqKVxuICAgICAgICAgICAgICBsZXQgbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgICBpZiBhc3NpZ24gdGhlbiBzLltuIC0gM10gZWxzZSBzLltuIC0gMV1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbGVmdCwgcmlnaHQgPVxuICAgICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICAgfCAnKScgLT4gKCcoJywgXCIpXCIpXG4gICAgICAgICAgICAgIHwgJ10nIC0+ICgnWycsIFwiXVwiKVxuICAgICAgICAgICAgICB8ICd9JyAtPiAoJ3snLCBcIn1cIilcbiAgICAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwYXRoX3ByZWZpeCA9XG4gICAgICAgICAgICAgIG1hdGNoIGlkIHdpdGggTGRvdCAobSwgXykgLT4gU29tZSBtIHwgXyAtPiBOb25lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxlZnQgPSBTdHJpbmcuc3ViIHMgMCAoMSArIFN0cmluZy5pbmRleCBzIGxlZnQpIGluXG4gICAgICAgICAgICBwcmludF9pbmRleG9wIGEgcGF0aF9wcmVmaXggYXNzaWduIGxlZnQgXCI7XCIgcmlnaHRcbiAgICAgICAgICAgICAgKGlmIG11bHRpX2luZGljZXMgdGhlbiBleHByZXNzaW9uIGN0eHQgZWxzZSBzaW1wbGVfZXhwciBjdHh0KVxuICAgICAgICAgICAgICBpIHJlc3RcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgXyAtPiBmYWxzZVxuXG5hbmQgZXhwcmVzc2lvbiBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSlALCVhKVwiIChleHByZXNzaW9uIGN0eHQpXG4gICAgICB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBleHBfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9mdW5jdGlvbiBfIHwgUGV4cF9mdW4gXyB8IFBleHBfbWF0Y2ggXyB8IFBleHBfdHJ5IF8gfCBQZXhwX3NlcXVlbmNlIF9cbiAgICB8IFBleHBfbmV3dHlwZSBfXG4gICAgICB3aGVuIGN0eHQucGlwZSB8fCBjdHh0LnNlbWkgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IChQZXhwX2lmdGhlbmVsc2UgXyB8IFBleHBfc2VxdWVuY2UgXykgd2hlbiBjdHh0LmlmdGhlbmVsc2UgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IFBleHBfbGV0IF8gfCBQZXhwX2xldG1vZHVsZSBfIHwgUGV4cF9vcGVuIF8gfCBQZXhwX2xldGV4Y2VwdGlvbiBfXG4gICAgfCBQZXhwX2xldG9wIF9cbiAgICAgIHdoZW4gY3R4dC5zZW1pIC0+XG4gICAgICAgIHBhcmVuIHRydWUgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgZiB4XG4gICAgfCBQZXhwX2Z1biAobCwgZTAsIHAsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmZ1bkA7JWEtPkA7JWFAXVwiIChsYWJlbF9leHAgY3R4dCkgKGwsIGUwLCBwKVxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfbmV3dHlwZSAobGlkLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5mdW5AOyh0eXBlQDslcylAOy0+QDslYUBdXCIgbGlkLnR4dCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2Z1bmN0aW9uIGwgLT4gcHAgZiBcIkBbPGh2PmZ1bmN0aW9uJWFAXVwiIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF9tYXRjaCAoZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGh2MD5AWzxodjA+QFs8Mj5tYXRjaCAlYUBdQCB3aXRoQF0lYUBdXCIgKGV4cHJlc3Npb24gcmVzZXRfY3R4dClcbiAgICAgICAgICBlIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF90cnkgKGUsIGwpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwwPkBbPGh2Mj50cnlAICVhQF1AIEBbPDA+d2l0aCVhQF1AXVwiXG4gICAgICAgICAgKCogXCJ0cnlAO0BbPDI+JWFAXUBcXG53aXRoQFxcbiVhXCIqKVxuICAgICAgICAgIChleHByZXNzaW9uIHJlc2V0X2N0eHQpXG4gICAgICAgICAgZSAoY2FzZV9saXN0IGN0eHQpIGxcbiAgICB8IFBleHBfbGV0IChyZiwgbCwgZSkgLT5cbiAgICAgICAgKCogcHAgZiBcIkBbPDI+bGV0ICVhJWEgaW5AOzwxIC0yPiVhQF1cIlxuICAgICAgICAgICAoKm5vIGluZGVudGF0aW9uIGhlcmUsIGEgbmV3IGxpbmUqKSAqKVxuICAgICAgICAoKiAgIHJlY19mbGFnIHJmICopXG4gICAgICAgIHBwIGYgXCJAWzwyPiVhIGluQDs8MSAtMj4lYUBdXCIgKGJpbmRpbmdzIHJlc2V0X2N0eHQpIChyZiwgbClcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2FwcGx5IChlLCBsKSAtPiAoXG4gICAgICAgIGlmIG5vdCAoc3VnYXJfZXhwciBjdHh0IGYgeCkgdGhlblxuICAgICAgICAgIG1hdGNoIHZpZXdfZml4aXR5X29mX2V4cCBlIHdpdGhcbiAgICAgICAgICB8IGBJbmZpeCBzIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgWyAoKE5vbGFiZWwsIF8pIGFzIGFyZzEpOyAoKE5vbGFiZWwsIF8pIGFzIGFyZzIpIF0gLT5cbiAgICAgICAgICAgICAgICAgICgqIEZJWE1FIGFzc29jaWF0aXZpdHkgbGFiZWxfeF9leHByZXNzaW9uX3BhcmFtICopXG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7JXNAOyVhQF1cIlxuICAgICAgICAgICAgICAgICAgICAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIHJlc2V0X2N0eHQpXG4gICAgICAgICAgICAgICAgICAgIGFyZzEgc1xuICAgICAgICAgICAgICAgICAgICAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpXG4gICAgICAgICAgICAgICAgICAgIGFyZzJcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICB8IGBQcmVmaXggcyAtPiAoXG4gICAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgTGlzdC5tZW0gcyBbIFwifitcIjsgXCJ+LVwiOyBcIn4rLlwiOyBcIn4tLlwiIF1cbiAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgICAgICgqIFNlZSAjNzIwMDogYXZvaWQgdHVybmluZyAofi0gMSkgaW50byAoLSAxKSB3aGljaCBpc1xuICAgICAgICAgICAgICAgICAgICAgcGFyc2VkIGFzIGFuIGludCBsaXRlcmFsICopXG4gICAgICAgICAgICAgICAgICB8IFsgKF8sIHsgcGV4cF9kZXNjID0gUGV4cF9jb25zdGFudCBfIH0pIF0gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgdGhlbiBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICAgICAgICAgICAgICBlbHNlIHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgWyAoTm9sYWJlbCwgeCkgXSAtPiBwcCBmIFwiQFs8Mj4lc0A7JWFAXVwiIHMgKHNpbXBsZV9leHByIGN0eHQpIHhcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAXVwiXG4gICAgICAgICAgICAgICAgKGZ1biBmIChlLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChleHByZXNzaW9uMiBjdHh0KSBlXG4gICAgICAgICAgICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gcmVzZXRfY3R4dCkpXG4gICAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgICAgICgqIHJlc2V0IGhlcmUgb25seSBiZWNhdXNlIFtmdW5jdGlvbixtYXRjaCx0cnksc2VxdWVuY2VdXG4gICAgICAgICAgICAgICAgICAgICBhcmUgbG93ZXIgcHJpb3JpdHkgKikpXG4gICAgICAgICAgICAgICAgKGUsIGwpKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGxpLCBTb21lIGVvKSB3aGVuIG5vdCAoaXNfc2ltcGxlX2NvbnN0cnVjdCAodmlld19leHByIHgpKVxuICAgICAgLT4gKFxuICAgICAgICAoKiBOb3QgZWZmaWNpZW50IEZJWE1FKilcbiAgICAgICAgbWF0Y2ggdmlld19leHByIHggd2l0aFxuICAgICAgICB8IGBjb25zIGxzIC0+IGxpc3QgKHNpbXBsZV9leHByIGN0eHQpIGYgbHMgfnNlcDpcIkA7OjpAO1wiXG4gICAgICAgIHwgYG5vcm1hbCAtPiBwcCBmIFwiQFs8Mj4lYUA7JWFAXVwiIGxvbmdpZGVudF9sb2MgbGkgKHNpbXBsZV9leHByIGN0eHQpIGVvXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgfCBQZXhwX3NldGZpZWxkIChlMSwgbGksIGUyKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYS4lYUAgPC1AICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZTEgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgIChzaW1wbGVfZXhwciBjdHh0KSBlMlxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIChlMSwgZTIsIGVvKSAtPlxuICAgICAgICAoKiBAO0BbPDI+ZWxzZUAgJWFAXUBdICopXG4gICAgICAgIGxldCBmbXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICAgICAgICBcIkBbPGh2MD5AWzwyPmlmQCAlYUBdQDtAWzwyPnRoZW5AICVhQF0lYUBdXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSA9IGV4cHJlc3Npb24gKHVuZGVyX2lmdGhlbmVsc2UgY3R4dCkgaW5cbiAgICAgICAgcHAgZiBmbXQgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIGUxIGV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSBlMlxuICAgICAgICAgIChmdW4gZiBlbyAtPlxuICAgICAgICAgICAgbWF0Y2ggZW8gd2l0aFxuICAgICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiQDtAWzwyPmVsc2VAOyVhQF1cIiAoZXhwcmVzc2lvbiAodW5kZXJfc2VtaSBjdHh0KSkgeFxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAoKiBwcCBmIFwiKClcIiAqKSlcbiAgICAgICAgICBlb1xuICAgIHwgUGV4cF9zZXF1ZW5jZSBfIC0+XG4gICAgICAgIGxldCByZWMgc2VxdWVuY2VfaGVscGVyIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfc2VxdWVuY2UgKGUxLCBlMik7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgc2VxdWVuY2VfaGVscGVyIChlMSA6OiBhY2MpIGUyXG4gICAgICAgICAgfCB2IC0+IExpc3QucmV2ICh2IDo6IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxzdCA9IHNlcXVlbmNlX2hlbHBlciBbXSB4IGluXG4gICAgICAgIHBwIGYgXCJAWzxodj4lYUBdXCIgKGxpc3QgKGV4cHJlc3Npb24gKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7QDtcIikgbHN0XG4gICAgfCBQZXhwX25ldyBsaSAtPiBwcCBmIFwiQFs8aG92Mj5uZXdAICVhQF1cIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQZXhwX3NldGluc3R2YXIgKHMsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVzQCA8LUAgJWFAXVwiIHMudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfb3ZlcnJpZGUgbCAtPlxuICAgICAgICAoKiBGSVhNRSAqKVxuICAgICAgICBsZXQgc3RyaW5nX3hfZXhwcmVzc2lvbiBmIChzLCBlKSA9XG4gICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JXNAID1AICVhQF1cIiBzLnR4dCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxob3YyPns8JWE+fUBdXCIgKGxpc3Qgc3RyaW5nX3hfZXhwcmVzc2lvbiB+c2VwOlwiO1wiKSBsXG4gICAgfCBQZXhwX2xldG1vZHVsZSAocywgbWUsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmxldEAgbW9kdWxlQCAlc0AgPUAgJWFAIGluQCAlYUBdXCJcbiAgICAgICAgICAoT3B0aW9uLnZhbHVlIHMudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgIChtb2R1bGVfZXhwciByZXNldF9jdHh0KSBtZSAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoY2QsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmxldEAgZXhjZXB0aW9uQCAlYUAgaW5AICVhQF1cIlxuICAgICAgICAgIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dClcbiAgICAgICAgICBjZCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2Fzc2VydCBlIC0+IHBwIGYgXCJAWzxob3YyPmFzc2VydEAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgfCBQZXhwX2xhenkgZSAtPiBwcCBmIFwiQFs8aG92Mj5sYXp5QCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAoKiBQZXhwX3BvbHk6IGltcG9zc2libGUgYnV0IHdlIHNob3VsZCBwcmludCBpdCBhbnl3YXksIHJhdGhlciB0aGFuXG4gICAgICAgYXNzZXJ0IGZhbHNlICopXG4gICAgfCBQZXhwX3BvbHkgKGUsIE5vbmUpIC0+IHBwIGYgXCJAWzxob3YyPiFwb2x5IUAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgfCBQZXhwX3BvbHkgKGUsIFNvbWUgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPighcG9seSFAICVhQCA6ICVhKUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQZXhwX29wZW4gKG8sIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAgIChvdmVycmlkZSBvLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBvLnBvcGVuX2V4cHIgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF92YXJpYW50IChsLCBTb21lIGVvKSAtPiBwcCBmIFwiQFs8Mj5gJXNAOyVhQF1cIiBsIChzaW1wbGVfZXhwciBjdHh0KSBlb1xuICAgIHwgUGV4cF9sZXRvcCB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5AWzx2PiVhQCwlYUBdIGluQDs8MSAtMj4lYUBdXCIgKGJpbmRpbmdfb3AgY3R4dCkgbGV0X1xuICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChiaW5kaW5nX29wIGN0eHQpKVxuICAgICAgICAgIGFuZHMgKGV4cHJlc3Npb24gY3R4dCkgYm9keVxuICAgIHwgUGV4cF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gcHAgZiBcIi5cIlxuICAgIHwgXyAtPiBleHByZXNzaW9uMSBjdHh0IGYgeFxuXG5hbmQgZXhwcmVzc2lvbjEgY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGV4cHJlc3Npb24gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfb2JqZWN0IGNzIC0+IHBwIGYgXCIlYVwiIChjbGFzc19zdHJ1Y3R1cmUgY3R4dCkgY3NcbiAgICB8IF8gLT4gZXhwcmVzc2lvbjIgY3R4dCBmIHhcbigqIHVzZWQgaW4gW1BleHBfYXBwbHldICopXG5cbmFuZCBleHByZXNzaW9uMiBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9maWVsZCAoZSwgbGkpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVhLiVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZSBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQZXhwX3NlbmQgKGUsIHMpIC0+IHBwIGYgXCJAWzxob3YyPiVhIyVzQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZSBzLnR4dFxuICAgIHwgXyAtPiBzaW1wbGVfZXhwciBjdHh0IGYgeFxuXG5hbmQgc2ltcGxlX2V4cHIgY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGV4cHJlc3Npb24gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfY29uc3RydWN0IF8gd2hlbiBpc19zaW1wbGVfY29uc3RydWN0ICh2aWV3X2V4cHIgeCkgLT4gKFxuICAgICAgICBtYXRjaCB2aWV3X2V4cHIgeCB3aXRoXG4gICAgICAgIHwgYG5pbCAtPiBwcCBmIFwiW11cIlxuICAgICAgICB8IGB0dXBsZSAtPiBwcCBmIFwiKClcIlxuICAgICAgICB8IGBsaXN0IHhzIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aHYwPlslYV1AXVwiXG4gICAgICAgICAgICAgIChsaXN0IChleHByZXNzaW9uICh1bmRlcl9zZW1pIGN0eHQpKSB+c2VwOlwiO0A7XCIpXG4gICAgICAgICAgICAgIHhzXG4gICAgICAgIHwgYHNpbXBsZSB4IC0+IGxvbmdpZGVudCBmIHhcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICB8IFBleHBfaWRlbnQgbGkgLT4gbG9uZ2lkZW50X2xvYyBmIGxpXG4gICAgKCogKG1hdGNoIHZpZXdfZml4aXR5X29mX2V4cCB4IHdpdGggKilcbiAgICAoKiB8YE5vcm1hbCAtPiBsb25naWRlbnRfbG9jIGYgbGkgKilcbiAgICAoKiB8IGBQcmVmaXggXyB8IGBJbmZpeCBfIC0+IHBwIGYgXCIoICVhIClcIiBsb25naWRlbnRfbG9jIGxpKSAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBjIC0+IGNvbnN0YW50IGYgY1xuICAgIHwgUGV4cF9wYWNrIG1lIC0+IHBwIGYgXCIobW9kdWxlQDslYSlcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBleHBfdHVwbGUgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4oJWEpQF1cIiAobGlzdCAoc2ltcGxlX2V4cHIgY3R4dCkgfnNlcDpcIixAO1wiKSBsXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiKCVhIDogJWEpXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQZXhwX2NvZXJjZSAoZSwgY3RvMSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWElYSA6PiAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgICAgICAgKG9wdGlvbiAoY29yZV90eXBlIGN0eHQpIH5maXJzdDpcIiA6IFwiIH5sYXN0OlwiIFwiKVxuICAgICAgICAgIGN0bzFcbiAgICAgICAgICAoKiBubyBzZXAgaGludCopIChjb3JlX3R5cGUgY3R4dClcbiAgICAgICAgICBjdFxuICAgIHwgUGV4cF92YXJpYW50IChsLCBOb25lKSAtPiBwcCBmIFwiYCVzXCIgbFxuICAgIHwgUGV4cF9yZWNvcmQgKGwsIGVvKSAtPlxuICAgICAgICBsZXQgbG9uZ2lkZW50X3hfZXhwcmVzc2lvbiBmIChsaSwgZSkgPVxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0OyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH1cbiAgICAgICAgICAgIHdoZW4gbGkudHh0ID0gdHh0IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQF1cIiBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQDs9QDslYUBdXCIgbG9uZ2lkZW50X2xvYyBsaSAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj57QDslYSVhQF1AO31AXVwiICgqIFwiQFs8aG92Mj57JWElYX1AXVwiICopXG4gICAgICAgICAgKG9wdGlvbiB+bGFzdDpcIiB3aXRoQDtcIiAoc2ltcGxlX2V4cHIgY3R4dCkpXG4gICAgICAgICAgZW9cbiAgICAgICAgICAobGlzdCBsb25naWRlbnRfeF9leHByZXNzaW9uIH5zZXA6XCI7QDtcIilcbiAgICAgICAgICBsXG4gICAgfCBQZXhwX2FycmF5IGwgLT5cbiAgICAgICAgcHAgZiBcIkBbPDA+QFs8Mj5bfCVhfF1AXUBdXCJcbiAgICAgICAgICAobGlzdCAoc2ltcGxlX2V4cHIgKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7XCIpXG4gICAgICAgICAgbFxuICAgIHwgUGV4cF93aGlsZSAoZTEsIGUyKSAtPlxuICAgICAgICBsZXQgZm10IDogKF8sIF8sIF8pIGZvcm1hdCA9IFwiQFs8Mj53aGlsZUA7JWFAO2RvQDslYUA7ZG9uZUBdXCIgaW5cbiAgICAgICAgcHAgZiBmbXQgKGV4cHJlc3Npb24gY3R4dCkgZTEgKGV4cHJlc3Npb24gY3R4dCkgZTJcbiAgICB8IFBleHBfZm9yIChzLCBlMSwgZTIsIGRmLCBlMykgLT5cbiAgICAgICAgbGV0IGZtdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgICAgICAgIFwiQFs8aHYwPkBbPGh2Mj5AWzwyPmZvciAlYSA9QDslYUA7JWElYUA7ZG9AXUA7JWFAXUA7ZG9uZUBdXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHJlc3Npb24gPSBleHByZXNzaW9uIGN0eHQgaW5cbiAgICAgICAgcHAgZiBmbXQgKHBhdHRlcm4gY3R4dCkgcyBleHByZXNzaW9uIGUxIGRpcmVjdGlvbl9mbGFnIGRmIGV4cHJlc3Npb24gZTJcbiAgICAgICAgICBleHByZXNzaW9uIGUzXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKGV4cHJlc3Npb24gY3R4dCkgZiB4XG5cbmFuZCBhdHRyaWJ1dGVzIGN0eHQgZiBsID0gTGlzdC5pdGVyIChhdHRyaWJ1dGUgY3R4dCBmKSBsXG5hbmQgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiBsID0gTGlzdC5pdGVyIChpdGVtX2F0dHJpYnV0ZSBjdHh0IGYpIGxcblxuYW5kIGF0dHJpYnV0ZSBjdHh0IGYgYSA9XG4gIHBwIGYgXCJAWzwyPltAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgaXRlbV9hdHRyaWJ1dGUgY3R4dCBmIGEgPVxuICBwcCBmIFwiQFs8Mj5bQEBAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhID1cbiAgcHAgZiBcIkBbPDI+W0BAQEBAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgdmFsdWVfZGVzY3JpcHRpb24gY3R4dCBmIHggPVxuICAoKiBub3RlOiB2YWx1ZV9kZXNjcmlwdGlvbiBoYXMgYW4gYXR0cmlidXRlIGZpZWxkLFxuICAgICAgICAgICBidXQgdGhleSdyZSBhbHJlYWR5IHByaW50ZWQgYnkgdGhlIGNhbGxlcnMgdGhpcyBtZXRob2QgKilcbiAgcHAgZiBcIkBbPGhvdjI+JWElYUBdXCIgKGNvcmVfdHlwZSBjdHh0KSB4LnB2YWxfdHlwZVxuICAgIChmdW4gZiB4IC0+XG4gICAgICBpZiB4LnB2YWxfcHJpbSA8PiBbXSB0aGVuXG4gICAgICAgIHBwIGYgXCJAID1AICVhXCIgKGxpc3QgY29uc3RhbnRfc3RyaW5nKSB4LnB2YWxfcHJpbSlcbiAgICB4XG5cbmFuZCBleHRlbnNpb24gY3R4dCBmIChzLCBlKSA9IHBwIGYgXCJAWzwyPlslJSVzQCAlYV1AXVwiIHMudHh0IChwYXlsb2FkIGN0eHQpIGVcblxuYW5kIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiAocywgZSkgPVxuICBwcCBmIFwiQFs8Mj5bJSUlJSVzQCAlYV1AXVwiIHMudHh0IChwYXlsb2FkIGN0eHQpIGVcblxuYW5kIGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgeCA9XG4gIHBwIGYgXCJAWzxob3YyPmV4Y2VwdGlvbkAgJWFAXSVhXCJcbiAgICAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQpXG4gICAgeC5wdHlleG5fY29uc3RydWN0b3IgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB0eWV4bl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY3RmX2Rlc2Mgd2l0aFxuICB8IFBjdGZfaW5oZXJpdCBjdCAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5oZXJpdEAgJWFAXSVhXCIgKGNsYXNzX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfdmFsIChzLCBtZiwgdmYsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+dmFsIEAgJWElYSVzQCA6QCAlYUBdJWFcIiBtdXRhYmxlX2ZsYWcgbWYgdmlydHVhbF9mbGFnIHZmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfbWV0aG9kIChzLCBwZiwgdmYsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kICVhICVhJXMgOkA7JWFAXSVhXCIgcHJpdmF0ZV9mbGFnIHBmIHZpcnR1YWxfZmxhZyB2ZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX2NvbnN0cmFpbnQgKGN0MSwgY3QyKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+Y29uc3RyYWludEAgJWFAID1AICVhQF0lYVwiIChjb3JlX3R5cGUgY3R4dCkgY3QxXG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QyIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBjdGZfZXh0ZW5zaW9uIGUgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdGZfYXR0cmlidXRlc1xuXG5hbmQgY2xhc3Nfc2lnbmF0dXJlIGN0eHQgZiB7IHBjc2lnX3NlbGYgPSBjdDsgcGNzaWdfZmllbGRzID0gbDsgXyB9ID1cbiAgcHAgZiBcIkBbPGh2MD5AWzxodjI+b2JqZWN0QFs8MT4lYUBdQCAlYUBdQCBlbmRAXVwiXG4gICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbnk7IHB0eXBfYXR0cmlidXRlcyA9IFtdOyBfIH0gLT4gKClcbiAgICAgIHwgY3QgLT4gcHAgZiBcIiAoJWEpXCIgKGNvcmVfdHlwZSBjdHh0KSBjdClcbiAgICBjdFxuICAgIChsaXN0IChjbGFzc190eXBlX2ZpZWxkIGN0eHQpIH5zZXA6XCJAO1wiKVxuICAgIGxcblxuKCogY2FsbCBbY2xhc3Nfc2lnbmF0dXJlXSBjYWxsZWQgYnkgW2NsYXNzX3NpZ25hdHVyZV0gKilcbmFuZCBjbGFzc190eXBlIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY3R5X2Rlc2Mgd2l0aFxuICB8IFBjdHlfc2lnbmF0dXJlIGNzIC0+XG4gICAgICBjbGFzc19zaWduYXR1cmUgY3R4dCBmIGNzO1xuICAgICAgYXR0cmlidXRlcyBjdHh0IGYgeC5wY3R5X2F0dHJpYnV0ZXNcbiAgfCBQY3R5X2NvbnN0ciAobGksIGwpIC0+XG4gICAgICBwcCBmIFwiJWElYSVhXCJcbiAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IHBwIGYgXCJbJWFdQCBcIiAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIpIGwpXG4gICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaSAoYXR0cmlidXRlcyBjdHh0KSB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfYXJyb3cgKGwsIGNvLCBjbCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVhQDstPkA7JWFAXVwiICgqIEZJWE1FIHJlbW92ZSBwYXJlbnMgbGF0ZXIgKilcbiAgICAgICAgKHR5cGVfd2l0aF9sYWJlbCBjdHh0KSAobCwgY28pIChjbGFzc190eXBlIGN0eHQpIGNsXG4gIHwgUGN0eV9leHRlbnNpb24gZSAtPlxuICAgICAgZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgYXR0cmlidXRlcyBjdHh0IGYgeC5wY3R5X2F0dHJpYnV0ZXNcbiAgfCBQY3R5X29wZW4gKG8sIGUpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5sZXQgb3BlbiVzICVhIGluQDslYUBdXCJcbiAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIGxvbmdpZGVudF9sb2Mgby5wb3Blbl9leHByIChjbGFzc190eXBlIGN0eHQpIGVcblxuKCogW2NsYXNzIHR5cGUgYSA9IG9iamVjdCBlbmRdICopXG5hbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsID1cbiAgbGV0IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24ga3dkIGYgeCA9XG4gICAgbGV0IHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSA9IHggaW5cbiAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXNAID1AICVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgKGNsYXNzX3BhcmFtc19kZWYgY3R4dCkgbHMgdHh0IChjbGFzc190eXBlIGN0eHQpIHgucGNpX2V4cHJcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2lfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IFsgeCBdIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gXCJjbGFzcyB0eXBlXCIgZiB4XG4gIHwgeCA6OiB4cyAtPlxuICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAoY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImNsYXNzIHR5cGVcIilcbiAgICAgICAgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImFuZFwiKSlcbiAgICAgICAgeHNcblxuYW5kIGNsYXNzX2ZpZWxkIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY2ZfZGVzYyB3aXRoXG4gIHwgUGNmX2luaGVyaXQgKG92ZiwgY2UsIHNvKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5oZXJpdEAgJXNAICVhJWFAXSVhXCIgKG92ZXJyaWRlIG92ZikgKGNsYXNzX2V4cHIgY3R4dCkgY2VcbiAgICAgICAgKGZ1biBmIHNvIC0+XG4gICAgICAgICAgbWF0Y2ggc28gd2l0aCBOb25lIC0+ICgpIHwgU29tZSBzIC0+IHBwIGYgXCJAIGFzICVzXCIgcy50eHQpXG4gICAgICAgIHNvIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl92YWwgKHMsIG1mLCBDZmtfY29uY3JldGUgKG92ZiwgZSkpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj52YWwlcyAlYSVzID1AOyVhQF0lYVwiIChvdmVycmlkZSBvdmYpIG11dGFibGVfZmxhZyBtZiBzLnR4dFxuICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9tZXRob2QgKHMsIHBmLCBDZmtfdmlydHVhbCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPm1ldGhvZCB2aXJ0dWFsICVhICVzIDpAOyVhQF0lYVwiIHByaXZhdGVfZmxhZyBwZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl92YWwgKHMsIG1mLCBDZmtfdmlydHVhbCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPnZhbCB2aXJ0dWFsICVhJXMgOkAgJWFAXSVhXCIgbXV0YWJsZV9mbGFnIG1mIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX21ldGhvZCAocywgcGYsIENma19jb25jcmV0ZSAob3ZmLCBlKSkgLT5cbiAgICAgIGxldCBiaW5kIGUgPVxuICAgICAgICBiaW5kaW5nIGN0eHQgZlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB2Yl9wYXQgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gUHBhdF92YXIgcztcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHB2Yl9leHByID0gZTtcbiAgICAgICAgICAgIHB2Yl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdmJfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kJXMgJWElYUBdJWFcIiAob3ZlcnJpZGUgb3ZmKSBwcml2YXRlX2ZsYWcgcGZcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfcG9seSAoZSwgU29tZSBjdCk7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVzIDpAOyVhPUA7JWFcIiBzLnR4dCAoY29yZV90eXBlIGN0eHQpIGN0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9wb2x5IChlLCBOb25lKTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPlxuICAgICAgICAgICAgICBiaW5kIGVcbiAgICAgICAgICB8IF8gLT4gYmluZCBlKVxuICAgICAgICBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9jb25zdHJhaW50IChjdDEsIGN0MikgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmNvbnN0cmFpbnQgJWEgPUA7JWFAXSVhXCIgKGNvcmVfdHlwZSBjdHh0KSBjdDEgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgICBjdDIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2luaXRpYWxpemVyIGUgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmluaXRpYWxpemVyQCAlYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQY2ZfZXh0ZW5zaW9uIGUgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiB4LnBjZl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc19zdHJ1Y3R1cmUgY3R4dCBmIHsgcGNzdHJfc2VsZiA9IHA7IHBjc3RyX2ZpZWxkcyA9IGwgfSA9XG4gIHBwIGYgXCJAWzxodjA+QFs8aHYyPm9iamVjdCVhQDslYUBdQDtlbmRAXVwiXG4gICAgKGZ1biBmIHAgLT5cbiAgICAgIG1hdGNoIHAucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF9hbnkgLT4gKClcbiAgICAgIHwgUHBhdF9jb25zdHJhaW50IF8gLT4gcHAgZiBcIiAlYVwiIChwYXR0ZXJuIGN0eHQpIHBcbiAgICAgIHwgXyAtPiBwcCBmIFwiICglYSlcIiAocGF0dGVybiBjdHh0KSBwKVxuICAgIHBcbiAgICAobGlzdCAoY2xhc3NfZmllbGQgY3R4dCkpXG4gICAgbFxuXG5hbmQgY2xhc3NfZXhwciBjdHh0IGYgeCA9XG4gIGlmIHgucGNsX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChjbGFzc19leHByIGN0eHQpXG4gICAgICB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucGNsX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucGNsX2Rlc2Mgd2l0aFxuICAgIHwgUGNsX3N0cnVjdHVyZSBjcyAtPiBjbGFzc19zdHJ1Y3R1cmUgY3R4dCBmIGNzXG4gICAgfCBQY2xfZnVuIChsLCBlbywgcCwgZSkgLT5cbiAgICAgICAgcHAgZiBcImZ1bkAgJWFAIC0+QCAlYVwiIChsYWJlbF9leHAgY3R4dCkgKGwsIGVvLCBwKSAoY2xhc3NfZXhwciBjdHh0KSBlXG4gICAgfCBQY2xfbGV0IChyZiwgbCwgY2UpIC0+XG4gICAgICAgIHBwIGYgXCIlYUAgaW5AICVhXCIgKGJpbmRpbmdzIGN0eHQpIChyZiwgbCkgKGNsYXNzX2V4cHIgY3R4dCkgY2VcbiAgICB8IFBjbF9hcHBseSAoY2UsIGwpIC0+XG4gICAgICAgIHBwIGYgXCIoKCVhKUAgJWEpXCJcbiAgICAgICAgICAoKiBDZjogIzcyMDAgKikgKGNsYXNzX2V4cHIgY3R4dClcbiAgICAgICAgICBjZVxuICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCkpXG4gICAgICAgICAgbFxuICAgIHwgUGNsX2NvbnN0ciAobGksIGwpIC0+XG4gICAgICAgIHBwIGYgXCIlYSVhXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgaWYgbCA8PiBbXSB0aGVuIHBwIGYgXCJbJWFdQCBcIiAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIpIGwpXG4gICAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQY2xfY29uc3RyYWludCAoY2UsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiKCVhQCA6QCAlYSlcIiAoY2xhc3NfZXhwciBjdHh0KSBjZSAoY2xhc3NfdHlwZSBjdHh0KSBjdFxuICAgIHwgUGNsX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUGNsX29wZW4gKG8sIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAgIChvdmVycmlkZSBvLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICAgIGxvbmdpZGVudF9sb2Mgby5wb3Blbl9leHByIChjbGFzc19leHByIGN0eHQpIGVcblxuYW5kIG1vZHVsZV90eXBlIGN0eHQgZiB4ID1cbiAgaWYgeC5wbXR5X2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChtb2R1bGVfdHlwZSBjdHh0KVxuICAgICAgeyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wbXR5X2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucG10eV9kZXNjIHdpdGhcbiAgICB8IFBtdHlfZnVuY3RvciAoVW5pdCwgbXQyKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5mdW5jdG9yICgpIC0+QCAlYUBdXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10MlxuICAgIHwgUG10eV9mdW5jdG9yIChOYW1lZCAocywgbXQxKSwgbXQyKSAtPiAoXG4gICAgICAgIG1hdGNoIHMudHh0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUAgLT5AICVhQF1cIiAobW9kdWxlX3R5cGUxIGN0eHQpIG10MVxuICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQyXG4gICAgICAgIHwgU29tZSBuYW1lIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5mdW5jdG9yQCAoJXNAIDpAICVhKUAgLT5AICVhQF1cIiBuYW1lXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdDEgKG1vZHVsZV90eXBlIGN0eHQpIG10MilcbiAgICB8IFBtdHlfd2l0aCAobXQsIFtdKSAtPiBtb2R1bGVfdHlwZSBjdHh0IGYgbXRcbiAgICB8IFBtdHlfd2l0aCAobXQsIGwpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQCB3aXRoQCAlYUBdXCIgKG1vZHVsZV90eXBlMSBjdHh0KSBtdFxuICAgICAgICAgIChsaXN0ICh3aXRoX2NvbnN0cmFpbnQgY3R4dCkgfnNlcDpcIkAgYW5kQCBcIilcbiAgICAgICAgICBsXG4gICAgfCBfIC0+IG1vZHVsZV90eXBlMSBjdHh0IGYgeFxuXG5hbmQgd2l0aF9jb25zdHJhaW50IGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgUHdpdGhfdHlwZSAobGksICh7IHB0eXBlX3BhcmFtcyA9IGxzOyBfIH0gYXMgdGQpKSAtPlxuICAgICAgbGV0IGxzID0gTGlzdC5tYXAgZnN0IGxzIGluXG4gICAgICBwcCBmIFwidHlwZUAgJWEgJWEgPUAgJWFcIlxuICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICBscyBsb25naWRlbnRfbG9jIGxpICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHRkXG4gIHwgUHdpdGhfbW9kdWxlIChsaSwgbGkyKSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSAlYSA9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgbG9uZ2lkZW50X2xvYyBsaTJcbiAgfCBQd2l0aF9tb2R0eXBlIChsaSwgbXR5KSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSB0eXBlICVhID1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSAobW9kdWxlX3R5cGUgY3R4dCkgbXR5XG4gIHwgUHdpdGhfdHlwZXN1YnN0IChsaSwgKHsgcHR5cGVfcGFyYW1zID0gbHM7IF8gfSBhcyB0ZCkpIC0+XG4gICAgICBsZXQgbHMgPSBMaXN0Lm1hcCBmc3QgbHMgaW5cbiAgICAgIHBwIGYgXCJ0eXBlQCAlYSAlYSA6PUAgJWFcIlxuICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICBscyBsb25naWRlbnRfbG9jIGxpICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHRkXG4gIHwgUHdpdGhfbW9kc3Vic3QgKGxpLCBsaTIpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlICVhIDo9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgbG9uZ2lkZW50X2xvYyBsaTJcbiAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGxpLCBtdHkpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlIHR5cGUgJWEgOj1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSAobW9kdWxlX3R5cGUgY3R4dCkgbXR5XG5cbmFuZCBtb2R1bGVfdHlwZTEgY3R4dCBmIHggPVxuICBpZiB4LnBtdHlfYXR0cmlidXRlcyA8PiBbXSB0aGVuIG1vZHVsZV90eXBlIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBtdHlfZGVzYyB3aXRoXG4gICAgfCBQbXR5X2lkZW50IGxpIC0+IHBwIGYgXCIlYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBtdHlfYWxpYXMgbGkgLT4gcHAgZiBcIihtb2R1bGUgJWEpXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUG10eV9zaWduYXR1cmUgcyAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj5zaWdAICVhQF1AIGVuZEBdXCIgKCogXCJAWzxob3Y+c2lnQCAlYUAgZW5kQF1cIiAqKVxuICAgICAgICAgIChsaXN0IChzaWduYXR1cmVfaXRlbSBjdHh0KSlcbiAgICAgICAgICBzXG4gICAgICAgICgqIEZJWE1FIHdyb25nIGluZGVudGF0aW9uKilcbiAgICB8IFBtdHlfdHlwZW9mIG1lIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgb2ZAICVhQF1cIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKG1vZHVsZV90eXBlIGN0eHQpIGYgeFxuXG5hbmQgc2lnbmF0dXJlIGN0eHQgZiB4ID0gbGlzdCB+c2VwOlwiQFxcblwiIChzaWduYXR1cmVfaXRlbSBjdHh0KSBmIHhcblxuYW5kIHNpZ25hdHVyZV9pdGVtIGN0eHQgZiB4IDogdW5pdCA9XG4gIG1hdGNoIHgucHNpZ19kZXNjIHdpdGhcbiAgfCBQc2lnX3R5cGUgKHJmLCBsKSAtPiB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIHRydWUsIGwpXG4gIHwgUHNpZ190eXBlc3Vic3QgbCAtPlxuICAgICAgKCogUHNpZ190eXBlc3Vic3QgaXMgbmV2ZXIgcmVjdXJzaXZlLCBidXQgd2Ugc3BlY2lmeSBbUmVjdXJzaXZlXSBoZXJlIHRvXG4gICAgICAgICBhdm9pZCBwcmludGluZyBhIFtub25yZWNdIGZsYWcsIHdoaWNoIHdvdWxkIGJlIHJlamVjdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAqKVxuICAgICAgdHlwZV9kZWZfbGlzdCBjdHh0IGYgKFJlY3Vyc2l2ZSwgZmFsc2UsIGwpXG4gIHwgUHNpZ192YWx1ZSB2ZCAtPlxuICAgICAgbGV0IGludHJvID0gaWYgdmQucHZhbF9wcmltID0gW10gdGhlbiBcInZhbFwiIGVsc2UgXCJleHRlcm5hbFwiIGluXG4gICAgICBwcCBmIFwiQFs8Mj4lc0AgJWFAIDpAICVhQF0lYVwiIGludHJvIHByb3RlY3RfaWRlbnQgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb24gY3R4dCkgdmQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB2ZC5wdmFsX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX3R5cGV4dCB0ZSAtPiB0eXBlX2V4dGVuc2lvbiBjdHh0IGYgdGVcbiAgfCBQc2lnX2V4Y2VwdGlvbiBlZCAtPiBleGNlcHRpb25fZGVjbGFyYXRpb24gY3R4dCBmIGVkXG4gIHwgUHNpZ19jbGFzcyBsIC0+IChcbiAgICAgIGxldCBjbGFzc19kZXNjcmlwdGlvbiBrd2QgZlxuICAgICAgICAgICh7IHBjaV9wYXJhbXMgPSBsczsgcGNpX25hbWUgPSB7IHR4dDsgXyB9OyBfIH0gYXMgeCkgPVxuICAgICAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXNAOzpAOyVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgICAgIChjbGFzc19wYXJhbXNfZGVmIGN0eHQpIGxzIHR4dCAoY2xhc3NfdHlwZSBjdHh0KSB4LnBjaV9leHByXG4gICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjaV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IFsgeCBdIC0+IGNsYXNzX2Rlc2NyaXB0aW9uIFwiY2xhc3NcIiBmIHhcbiAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCJcbiAgICAgICAgICAgIChjbGFzc19kZXNjcmlwdGlvbiBcImNsYXNzXCIpXG4gICAgICAgICAgICB4XG4gICAgICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoY2xhc3NfZGVzY3JpcHRpb24gXCJhbmRcIikpXG4gICAgICAgICAgICB4cylcbiAgfCBQc2lnX21vZHVsZVxuICAgICAgKHtcbiAgICAgICAgIHBtZF90eXBlID0geyBwbXR5X2Rlc2MgPSBQbXR5X2FsaWFzIGFsaWFzOyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHBtZCkgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgPUAgJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICBsb25naWRlbnRfbG9jIGFsaWFzIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1kLnBtZF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2R1bGUgcG1kIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Pm1vZHVsZUAgJXNAIDpAICVhQF0lYVwiXG4gICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHBtZC5wbWRfdHlwZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHBtZC5wbWRfYXR0cmlidXRlc1xuICB8IFBzaWdfbW9kc3Vic3QgcG1zIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Pm1vZHVsZUAgJXNAIDo9QCAlYUBdJWFcIiBwbXMucG1zX25hbWUudHh0IGxvbmdpZGVudF9sb2NcbiAgICAgICAgcG1zLnBtc19tYW5pZmVzdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtcy5wbXNfYXR0cmlidXRlc1xuICB8IFBzaWdfb3BlbiBvZCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+b3BlbiVzQCAlYUBdJWFcIlxuICAgICAgICAob3ZlcnJpZGUgb2QucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIGxvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIG9kLnBvcGVuX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX2luY2x1ZGUgaW5jbCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+aW5jbHVkZUAgJWFAXSVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIGluY2wucGluY2xfbW9kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgaW5jbC5waW5jbF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2R0eXBlIHsgcG10ZF9uYW1lID0gczsgcG10ZF90eXBlID0gbWQ7IHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgJXMlYUBdJWFcIiBzLnR4dFxuICAgICAgICAoZnVuIGYgbWQgLT5cbiAgICAgICAgICBtYXRjaCBtZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIHBwX3ByaW50X3NwYWNlIGYgKCk7XG4gICAgICAgICAgICAgIHBwIGYgXCJAID1AICVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10KVxuICAgICAgICBtZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHNpZ19tb2R0eXBlc3Vic3QgeyBwbXRkX25hbWUgPSBzOyBwbXRkX3R5cGUgPSBtZDsgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIC0+XG4gICAgICBsZXQgbWQgPVxuICAgICAgICBtYXRjaCBtZCB3aXRoIE5vbmUgLT4gYXNzZXJ0IGZhbHNlICgqIGFzdCBpbnZhcmlhbnQgKikgfCBTb21lIG10IC0+IG10XG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCAlc0AgOj1AICVhQF0lYVwiIHMudHh0IChtb2R1bGVfdHlwZSBjdHh0KSBtZFxuICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHNpZ19jbGFzc190eXBlIGwgLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsXG4gIHwgUHNpZ19yZWNtb2R1bGUgZGVjbHMgLT5cbiAgICAgIGxldCByZWMgc3RyaW5nX3hfbW9kdWxlX3R5cGVfbGlzdCBmID8oZmlyc3QgPSB0cnVlKSBsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBwbWQgOjogdGwgLT5cbiAgICAgICAgICAgIGlmIG5vdCBmaXJzdCB0aGVuXG4gICAgICAgICAgICAgIHBwIGYgXCJAIEBbPGhvdjI+YW5kQCAlczpAICVhQF0lYVwiXG4gICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAgIChtb2R1bGVfdHlwZTEgY3R4dCkgcG1kLnBtZF90eXBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgICAgICBwbWQucG1kX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCByZWNAICVzOkAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgKG1vZHVsZV90eXBlMSBjdHh0KSBwbWQucG1kX3R5cGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICAgIHBtZC5wbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHN0cmluZ194X21vZHVsZV90eXBlX2xpc3QgZiB+Zmlyc3Q6ZmFsc2UgdGxcbiAgICAgIGluXG4gICAgICBzdHJpbmdfeF9tb2R1bGVfdHlwZV9saXN0IGYgZGVjbHNcbiAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBzaWdfZXh0ZW5zaW9uIChlLCBhKSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGFcblxuYW5kIG1vZHVsZV9leHByIGN0eHQgZiB4ID1cbiAgaWYgeC5wbW9kX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChtb2R1bGVfZXhwciBjdHh0KVxuICAgICAgeyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wbW9kX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucG1vZF9kZXNjIHdpdGhcbiAgICB8IFBtb2Rfc3RydWN0dXJlIHMgLT5cbiAgICAgICAgcHAgZiBcIkBbPGh2Mj5zdHJ1Y3RAO0BbPDA+JWFAXUA7PDEgLTI+ZW5kQF1cIlxuICAgICAgICAgIChsaXN0IChzdHJ1Y3R1cmVfaXRlbSBjdHh0KSB+c2VwOlwiQFxcblwiKVxuICAgICAgICAgIHNcbiAgICB8IFBtb2RfY29uc3RyYWludCAobWUsIG10KSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4oJWFAIDpAICVhKUBdXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lIChtb2R1bGVfdHlwZSBjdHh0KSBtdFxuICAgIHwgUG1vZF9pZGVudCBsaSAtPiBwcCBmIFwiJWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQbW9kX2Z1bmN0b3IgKFVuaXQsIG1lKSAtPiBwcCBmIFwiZnVuY3RvciAoKUA7LT5AOyVhXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQbW9kX2Z1bmN0b3IgKE5hbWVkIChzLCBtdCksIG1lKSAtPlxuICAgICAgICBwcCBmIFwiZnVuY3RvckAgKCVzQCA6QCAlYSlAOy0+QDslYVwiXG4gICAgICAgICAgKE9wdGlvbi52YWx1ZSBzLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQbW9kX2FwcGx5IChtZTEsIG1lMikgLT5cbiAgICAgICAgcHAgZiBcIiglYSkoJWEpXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lMSAobW9kdWxlX2V4cHIgY3R4dCkgbWUyXG4gICAgICAgICgqIENmOiAjNzIwMCAqKVxuICAgIHwgUG1vZF91bnBhY2sgZSAtPiBwcCBmIFwiKHZhbEAgJWEpXCIgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUG1vZF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcblxuYW5kIHN0cnVjdHVyZSBjdHh0IGYgeCA9IGxpc3QgfnNlcDpcIkBcXG5cIiAoc3RydWN0dXJlX2l0ZW0gY3R4dCkgZiB4XG5cbmFuZCBwYXlsb2FkIGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgUFN0ciBbIHsgcHN0cl9kZXNjID0gUHN0cl9ldmFsIChlLCBhdHRycykgfSBdIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQU3RyIHggLT4gc3RydWN0dXJlIGN0eHQgZiB4XG4gIHwgUFR5cCB4IC0+XG4gICAgICBwcCBmIFwiOkAgXCI7XG4gICAgICBjb3JlX3R5cGUgY3R4dCBmIHhcbiAgfCBQU2lnIHggLT5cbiAgICAgIHBwIGYgXCI6QCBcIjtcbiAgICAgIHNpZ25hdHVyZSBjdHh0IGYgeFxuICB8IFBQYXQgKHgsIE5vbmUpIC0+XG4gICAgICBwcCBmIFwiP0AgXCI7XG4gICAgICBwYXR0ZXJuIGN0eHQgZiB4XG4gIHwgUFBhdCAoeCwgU29tZSBlKSAtPlxuICAgICAgcHAgZiBcIj9AIFwiO1xuICAgICAgcGF0dGVybiBjdHh0IGYgeDtcbiAgICAgIHBwIGYgXCIgd2hlbiBcIjtcbiAgICAgIGV4cHJlc3Npb24gY3R4dCBmIGVcblxuKCogdHJhbnNmb3JtIFtmID0gZnVuIGcgaCAtPiAuLl0gdG8gW2YgZyBoID0gLi4uIF0gY291bGQgYmUgaW1wcm92ZWQgKilcbmFuZCBiaW5kaW5nIGN0eHQgZiB7IHB2Yl9wYXQgPSBwOyBwdmJfZXhwciA9IHg7IF8gfSA9XG4gICgqIC5wdmJfYXR0cmlidXRlcyBoYXZlIGFscmVhZHkgYmVlbiBwcmludGVkIGJ5IHRoZSBjYWxsZXIsICNiaW5kaW5ncyAqKVxuICBsZXQgcmVjIHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZiB4ID1cbiAgICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIHBwIGYgXCI9QDslYVwiIChleHByZXNzaW9uIGN0eHQpIHhcbiAgICBlbHNlXG4gICAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfZnVuIChsYWJlbCwgZW8sIHAsIGUpIC0+XG4gICAgICAgICAgaWYgbGFiZWwgPSBOb2xhYmVsIHRoZW5cbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIGVcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKGxhYmVsX2V4cCBjdHh0KSAobGFiZWwsIGVvLCBwKSBwcF9wcmludF9wZXhwX2Z1bmN0aW9uXG4gICAgICAgICAgICAgIGVcbiAgICAgIHwgUGV4cF9uZXd0eXBlIChzdHIsIGUpIC0+XG4gICAgICAgICAgcHAgZiBcIih0eXBlQCAlcylAICVhXCIgc3RyLnR4dCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIGVcbiAgICAgIHwgXyAtPiBwcCBmIFwiPUA7JWFcIiAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gIGluXG4gIGxldCB0eXZhcnNfc3RyIHR5dmFycyA9IExpc3QubWFwIChmdW4gdiAtPiB2LnR4dCkgdHl2YXJzIGluXG4gIGxldCBpc19kZXN1Z2FyZWRfZ2FkdCBwIGUgPVxuICAgIGxldCBnYWR0X3BhdHRlcm4gPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHtcbiAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICAgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKGFyZ3NfdHl2YXJzLCBydCkgfSApO1xuICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIFNvbWUgKHBhdCwgYXJnc190eXZhcnMsIHJ0KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCByZWMgZ2FkdF9leHAgdHl2YXJzIGUgPVxuICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9uZXd0eXBlICh0eXZhciwgZSk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICBnYWR0X2V4cCAodHl2YXIgOjogdHl2YXJzKSBlXG4gICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJhaW50IChlLCBjdCk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICBTb21lIChMaXN0LnJldiB0eXZhcnMsIGUsIGN0KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCBnYWR0X2V4cCA9IGdhZHRfZXhwIFtdIGUgaW5cbiAgICBtYXRjaCAoZ2FkdF9wYXR0ZXJuLCBnYWR0X2V4cCkgd2l0aFxuICAgIHwgU29tZSAocCwgcHRfdHl2YXJzLCBwdF9jdCksIFNvbWUgKGVfdHl2YXJzLCBlLCBlX2N0KVxuICAgICAgd2hlbiB0eXZhcnNfc3RyIHB0X3R5dmFycyA9IHR5dmFyc19zdHIgZV90eXZhcnMgLT5cbiAgICAgICAgbGV0IGV0eSA9IHZhcmlmeV90eXBlX2NvbnN0cnVjdG9ycyBlX3R5dmFycyBlX2N0IGluXG4gICAgICAgIGlmIGV0eSA9IHB0X2N0IHRoZW4gU29tZSAocCwgcHRfdHl2YXJzLCBlX2N0LCBlKSBlbHNlIE5vbmVcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCB7XG4gICAgIHBwYXRfZGVzYyA9XG4gICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAoICh7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IF8gfSBhcyBwYXQpLFxuICAgICAgICAgICAoeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgXyB9IGFzIHR5cCkgKTtcbiAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgIF87XG4gICAgfSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogJWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBhdCAoY29yZV90eXBlIGN0eHQpIHR5cFxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIHhcbiAgICB8IF8gLT4gcHAgZiBcIiVhQDs9QDslYVwiIChwYXR0ZXJuIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgeFxuICBlbHNlXG4gICAgbWF0Y2ggaXNfZGVzdWdhcmVkX2dhZHQgcCB4IHdpdGhcbiAgICB8IFNvbWUgKHAsIFtdLCBjdCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIiVhQDs6ICVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBTb21lIChwLCB0eXZhcnMsIGN0LCBlKSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogdHlwZUA7JWEuQDslYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgICAgICAgIChsaXN0IHBwX3ByaW50X3N0cmluZyB+c2VwOlwiQDtcIilcbiAgICAgICAgICAodHl2YXJzX3N0ciB0eXZhcnMpIChjb3JlX3R5cGUgY3R4dCkgY3QgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF9jb25zdHJhaW50IChwLCB0eSk7IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT4gKFxuICAgICAgICAgICAgKCogc3BlY2lhbCBjYXNlIGZvciB0aGUgZmlyc3QqKVxuICAgICAgICAgICAgbWF0Y2ggdHkgd2l0aFxuICAgICAgICAgICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBwdHlwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiVhQDs6QDslYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCAoY29yZV90eXBlIGN0eHQpXG4gICAgICAgICAgICAgICAgICB0eSAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiKCVhQDs6QDslYSlAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICAgICAgICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgdHkgKGV4cHJlc3Npb24gY3R4dCkgeClcbiAgICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIHhcbiAgICAgICAgfCBfIC0+IHBwIGYgXCIlYUA7PUA7JWFcIiAocGF0dGVybiBjdHh0KSBwIChleHByZXNzaW9uIGN0eHQpIHgpXG5cbigqIFtpbl0gaXMgbm90IHByaW50ZWQgKilcbmFuZCBiaW5kaW5ncyBjdHh0IGYgKHJmLCBsKSA9XG4gIGxldCBiaW5kaW5nIGt3ZCByZiBmIHggPVxuICAgIHBwIGYgXCJAWzwyPiVzICVhJWFAXSVhXCIga3dkIHJlY19mbGFnIHJmIChiaW5kaW5nIGN0eHQpIHhcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdmJfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IFsgeCBdIC0+IGJpbmRpbmcgXCJsZXRcIiByZiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiIChiaW5kaW5nIFwibGV0XCIgcmYpIHhcbiAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGJpbmRpbmcgXCJhbmRcIiBOb25yZWN1cnNpdmUpKVxuICAgICAgICB4c1xuXG5hbmQgYmluZGluZ19vcCBjdHh0IGYgeCA9XG4gIG1hdGNoICh4LnBib3BfcGF0LCB4LnBib3BfZXhwKSB3aXRoXG4gIHwgKCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0ID0gcHZhcjsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXTsgXyB9LFxuICAgICAge1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGV2YXI7IF8gfTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIF87XG4gICAgICB9IClcbiAgICB3aGVuIHB2YXIgPSBldmFyIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lcyAlc0BdXCIgeC5wYm9wX29wLnR4dCBldmFyXG4gIHwgcGF0LCBleHAgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVzICVhQDs9QDslYUBdXCIgeC5wYm9wX29wLnR4dCAocGF0dGVybiBjdHh0KSBwYXRcbiAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZXhwXG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbSBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucHN0cl9kZXNjIHdpdGhcbiAgfCBQc3RyX2V2YWwgKGUsIGF0dHJzKSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+OzslYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc3RyX3R5cGUgKF8sIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBQc3RyX3R5cGUgKHJmLCBsKSAtPiB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIHRydWUsIGwpXG4gIHwgUHN0cl92YWx1ZSAocmYsIGwpIC0+XG4gICAgICAoKiBwcCBmIFwiQFs8aG92Mj5sZXQgJWElYUBdXCIgIHJlY19mbGFnIHJmIGJpbmRpbmdzIGwgKilcbiAgICAgIHBwIGYgXCJAWzwyPiVhQF1cIiAoYmluZGluZ3MgY3R4dCkgKHJmLCBsKVxuICB8IFBzdHJfdHlwZXh0IHRlIC0+IHR5cGVfZXh0ZW5zaW9uIGN0eHQgZiB0ZVxuICB8IFBzdHJfZXhjZXB0aW9uIGVkIC0+IGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgZWRcbiAgfCBQc3RyX21vZHVsZSB4IC0+XG4gICAgICBsZXQgcmVjIG1vZHVsZV9oZWxwZXIgPSBmdW5jdGlvblxuICAgICAgICB8IHsgcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChhcmdfb3B0LCBtZScpOyBwbW9kX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAobWF0Y2ggYXJnX29wdCB3aXRoXG4gICAgICAgICAgICB8IFVuaXQgLT4gcHAgZiBcIigpXCJcbiAgICAgICAgICAgIHwgTmFtZWQgKHMsIG10KSAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIoJXM6JWEpXCJcbiAgICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcy50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQpO1xuICAgICAgICAgICAgbW9kdWxlX2hlbHBlciBtZSdcbiAgICAgICAgfCBtZSAtPiBtZVxuICAgICAgaW5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZSAlcyVhQF0lYVwiXG4gICAgICAgIChPcHRpb24udmFsdWUgeC5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgIChmdW4gZiBtZSAtPlxuICAgICAgICAgIGxldCBtZSA9IG1vZHVsZV9oZWxwZXIgbWUgaW5cbiAgICAgICAgICBtYXRjaCBtZSB3aXRoXG4gICAgICAgICAgfCB7XG4gICAgICAgICAgIHBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgUG1vZF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAobWUnLCAoeyBwbXR5X2Rlc2MgPSBQbXR5X2lkZW50IF8gfCBQbXR5X3NpZ25hdHVyZSBfOyBfIH0gYXMgbXQpKTtcbiAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiIDpAOyVhQDs9QDslYUA7XCIgKG1vZHVsZV90eXBlIGN0eHQpIG10IChtb2R1bGVfZXhwciBjdHh0KVxuICAgICAgICAgICAgICAgIG1lJ1xuICAgICAgICAgIHwgXyAtPiBwcCBmIFwiID1AICVhXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lKVxuICAgICAgICB4LnBtYl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wbWJfYXR0cmlidXRlc1xuICB8IFBzdHJfb3BlbiBvZCAtPlxuICAgICAgcHAgZiBcIkBbPDI+b3BlbiVzQDslYUBdJWFcIlxuICAgICAgICAob3ZlcnJpZGUgb2QucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBvZC5wb3Blbl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgb2QucG9wZW5fYXR0cmlidXRlc1xuICB8IFBzdHJfbW9kdHlwZSB7IHBtdGRfbmFtZSA9IHM7IHBtdGRfdHlwZSA9IG1kOyBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAICVzJWFAXSVhXCIgcy50eHRcbiAgICAgICAgKGZ1biBmIG1kIC0+XG4gICAgICAgICAgbWF0Y2ggbWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBwcF9wcmludF9zcGFjZSBmICgpO1xuICAgICAgICAgICAgICBwcCBmIFwiQCA9QCAlYVwiIChtb2R1bGVfdHlwZSBjdHh0KSBtdClcbiAgICAgICAgbWQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzdHJfY2xhc3MgbCAtPiAoXG4gICAgICBsZXQgZXh0cmFjdF9jbGFzc19hcmdzIGNsID1cbiAgICAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBjbF9kZXNjID0gUGNsX2Z1biAobCwgZW8sIHAsIGNsJyk7IHBjbF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICBsb29wICgobCwgZW8sIHApIDo6IGFjYykgY2wnXG4gICAgICAgICAgfCBjbCAtPiAoTGlzdC5yZXYgYWNjLCBjbClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFyZ3MsIGNsID0gbG9vcCBbXSBjbCBpblxuICAgICAgICBsZXQgY29uc3RyLCBjbCA9XG4gICAgICAgICAgbWF0Y2ggY2wgd2l0aFxuICAgICAgICAgIHwgeyBwY2xfZGVzYyA9IFBjbF9jb25zdHJhaW50IChjbCcsIGN0KTsgcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgIChTb21lIGN0LCBjbCcpXG4gICAgICAgICAgfCBfIC0+IChOb25lLCBjbClcbiAgICAgICAgaW5cbiAgICAgICAgKGFyZ3MsIGNvbnN0ciwgY2wpXG4gICAgICBpblxuICAgICAgbGV0IGNsYXNzX2NvbnN0cmFpbnQgZiBjdCA9IHBwIGYgXCI6IEBbJWFAXSBcIiAoY2xhc3NfdHlwZSBjdHh0KSBjdCBpblxuICAgICAgbGV0IGNsYXNzX2RlY2xhcmF0aW9uIGt3ZCBmXG4gICAgICAgICAgKHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSBhcyB4KSA9XG4gICAgICAgIGxldCBhcmdzLCBjb25zdHIsIGNsID0gZXh0cmFjdF9jbGFzc19hcmdzIHgucGNpX2V4cHIgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzICVhJWE9QDslYUBdJWFcIiBrd2QgdmlydHVhbF9mbGFnIHgucGNpX3ZpcnRcbiAgICAgICAgICAoY2xhc3NfcGFyYW1zX2RlZiBjdHh0KSBscyB0eHRcbiAgICAgICAgICAobGlzdCAobGFiZWxfZXhwIGN0eHQpKVxuICAgICAgICAgIGFyZ3MgKG9wdGlvbiBjbGFzc19jb25zdHJhaW50KSBjb25zdHIgKGNsYXNzX2V4cHIgY3R4dCkgY2xcbiAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNpX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgWyB4IF0gLT4gY2xhc3NfZGVjbGFyYXRpb24gXCJjbGFzc1wiIGYgeFxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAgICAgKGNsYXNzX2RlY2xhcmF0aW9uIFwiY2xhc3NcIilcbiAgICAgICAgICAgIHhcbiAgICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc19kZWNsYXJhdGlvbiBcImFuZFwiKSlcbiAgICAgICAgICAgIHhzKVxuICB8IFBzdHJfY2xhc3NfdHlwZSBsIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCBjdHh0IGYgbFxuICB8IFBzdHJfcHJpbWl0aXZlIHZkIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5leHRlcm5hbEAgJWFAIDpAICVhQF0lYVwiIHByb3RlY3RfaWRlbnQgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb24gY3R4dCkgdmQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB2ZC5wdmFsX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX2luY2x1ZGUgaW5jbCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+aW5jbHVkZUAgJWFAXSVhXCIgKG1vZHVsZV9leHByIGN0eHQpIGluY2wucGluY2xfbW9kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgaW5jbC5waW5jbF9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9yZWNtb2R1bGUgZGVjbHMgLT4gKFxuICAgICAgKCogMy4wNyAqKVxuICAgICAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICAgICAgfCB7IHBtYl9leHByID0geyBwbW9kX2Rlc2MgPSBQbW9kX2NvbnN0cmFpbnQgKGV4cHIsIHR5cCkgfSB9IGFzIHBtYiAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBhbmRAICVzOiVhQCA9QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSB0eXAgKG1vZHVsZV9leHByIGN0eHQpIGV4cHJcbiAgICAgICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgfCBwbWIgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPkAgYW5kQCAlc0AgPUAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgcG1iLnBtYl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgICAgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbWF0Y2ggZGVjbHMgd2l0aFxuICAgICAgfCAoeyBwbWJfZXhwciA9IHsgcG1vZF9kZXNjID0gUG1vZF9jb25zdHJhaW50IChleHByLCB0eXApIH0gfSBhcyBwbWIpXG4gICAgICAgIDo6IGwyIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPGh2PkBbPGhvdjI+bW9kdWxlQCByZWNAICVzOiVhQCA9QCAlYUBdJWFAICVhQF1cIlxuICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHR5cCAobW9kdWxlX2V4cHIgY3R4dCkgZXhwclxuICAgICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIChmdW4gZiBsMiAtPiBMaXN0Lml0ZXIgKGF1eCBmKSBsMilcbiAgICAgICAgICAgIGwyXG4gICAgICB8IHBtYiA6OiBsMiAtPlxuICAgICAgICAgIHBwIGYgXCJAWzxodj5AWzxob3YyPm1vZHVsZUAgcmVjQCAlc0AgPUAgJWFAXSVhQCAlYUBdXCJcbiAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBwbWIucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICAgICAgICAoZnVuIGYgbDIgLT4gTGlzdC5pdGVyIChhdXggZikgbDIpXG4gICAgICAgICAgICBsMlxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBzdHJfZXh0ZW5zaW9uIChlLCBhKSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGFcblxuYW5kIHR5cGVfcGFyYW0gY3R4dCBmIChjdCwgKGEsIGIpKSA9XG4gIHBwIGYgXCIlcyVzJWFcIiAodHlwZV92YXJpYW5jZSBhKSAodHlwZV9pbmplY3Rpdml0eSBiKSAoY29yZV90eXBlIGN0eHQpIGN0XG5cbmFuZCB0eXBlX3BhcmFtcyBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgbCAtPiBwcCBmIFwiJWEgXCIgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiIH5zZXA6XCIsQDtcIikgbFxuXG5hbmQgdHlwZV9kZWZfbGlzdCBjdHh0IGYgKHJmLCBleHBvcnRlZCwgbCkgPVxuICBsZXQgdHlwZV9kZWNsIGt3ZCByZiBmIHggPVxuICAgIGxldCBlcSA9XG4gICAgICBpZiB4LnB0eXBlX2tpbmQgPSBQdHlwZV9hYnN0cmFjdCAmJiB4LnB0eXBlX21hbmlmZXN0ID0gTm9uZSB0aGVuIFwiXCJcbiAgICAgIGVsc2UgaWYgZXhwb3J0ZWQgdGhlbiBcIiA9XCJcbiAgICAgIGVsc2UgXCIgOj1cIlxuICAgIGluXG4gICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzJXMlYUBdJWFcIiBrd2Qgbm9ucmVjX2ZsYWcgcmYgKHR5cGVfcGFyYW1zIGN0eHQpXG4gICAgICB4LnB0eXBlX3BhcmFtcyB4LnB0eXBlX25hbWUudHh0IGVxICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHhcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdHlwZV9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IFsgeCBdIC0+IHR5cGVfZGVjbCBcInR5cGVcIiByZiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiICh0eXBlX2RlY2wgXCJ0eXBlXCIgcmYpIHhcbiAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKHR5cGVfZGVjbCBcImFuZFwiIFJlY3Vyc2l2ZSkpXG4gICAgICAgIHhzXG5cbmFuZCByZWNvcmRfZGVjbGFyYXRpb24gY3R4dCBmIGxibHMgPVxuICBsZXQgdHlwZV9yZWNvcmRfZmllbGQgZiBwbGQgPVxuICAgIHBwIGYgXCJAWzwyPiVhJXM6QDslYUA7JWFAXVwiIG11dGFibGVfZmxhZyBwbGQucGxkX211dGFibGUgcGxkLnBsZF9uYW1lLnR4dFxuICAgICAgKGNvcmVfdHlwZSBjdHh0KSBwbGQucGxkX3R5cGUgKGF0dHJpYnV0ZXMgY3R4dCkgcGxkLnBsZF9hdHRyaWJ1dGVzXG4gIGluXG4gIHBwIGYgXCJ7QFxcbiVhfVwiIChsaXN0IHR5cGVfcmVjb3JkX2ZpZWxkIH5zZXA6XCI7QFxcblwiKSBsYmxzXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9uIGN0eHQgZiB4ID1cbiAgKCogdHlwZV9kZWNsYXJhdGlvbiBoYXMgYW4gYXR0cmlidXRlIGZpZWxkLFxuICAgICBidXQgaXQncyBiZWVuIHByaW50ZWQgYnkgdGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCAqKVxuICBsZXQgcHJpdiBmID1cbiAgICBtYXRjaCB4LnB0eXBlX3ByaXZhdGUgd2l0aCBQdWJsaWMgLT4gKCkgfCBQcml2YXRlIC0+IHBwIGYgXCJAO3ByaXZhdGVcIlxuICBpblxuICBsZXQgbWFuaWZlc3QgZiA9XG4gICAgbWF0Y2ggeC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHkgLT5cbiAgICAgICAgaWYgeC5wdHlwZV9raW5kID0gUHR5cGVfYWJzdHJhY3QgdGhlblxuICAgICAgICAgIHBwIGYgXCIldEA7JWFcIiBwcml2IChjb3JlX3R5cGUgY3R4dCkgeVxuICAgICAgICBlbHNlIHBwIGYgXCJAOyVhXCIgKGNvcmVfdHlwZSBjdHh0KSB5XG4gIGluXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBmIHBjZCA9XG4gICAgcHAgZiBcInxAO1wiO1xuICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZlxuICAgICAgKCBwY2QucGNkX25hbWUudHh0LFxuICAgICAgICBwY2QucGNkX3ZhcnMsXG4gICAgICAgIHBjZC5wY2RfYXJncyxcbiAgICAgICAgcGNkLnBjZF9yZXMsXG4gICAgICAgIHBjZC5wY2RfYXR0cmlidXRlcyApXG4gIGluXG4gIGxldCByZXByIGYgPVxuICAgIGxldCBpbnRybyBmID0gaWYgeC5wdHlwZV9tYW5pZmVzdCA9IE5vbmUgdGhlbiAoKSBlbHNlIHBwIGYgXCJAOz1cIiBpblxuICAgIG1hdGNoIHgucHR5cGVfa2luZCB3aXRoXG4gICAgfCBQdHlwZV92YXJpYW50IHhzIC0+XG4gICAgICAgIGxldCB2YXJpYW50cyBmbXQgeHMgPVxuICAgICAgICAgIGlmIHhzID0gW10gdGhlbiBwcCBmbXQgXCIgfFwiXG4gICAgICAgICAgZWxzZSBwcCBmbXQgXCJAXFxuJWFcIiAobGlzdCB+c2VwOlwiQFxcblwiIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uKSB4c1xuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiJXQldCVhXCIgaW50cm8gcHJpdiB2YXJpYW50cyB4c1xuICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKClcbiAgICB8IFB0eXBlX3JlY29yZCBsIC0+IHBwIGYgXCIldCV0QDslYVwiIGludHJvIHByaXYgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsXG4gICAgfCBQdHlwZV9vcGVuIC0+IHBwIGYgXCIldCV0QDsuLlwiIGludHJvIHByaXZcbiAgaW5cbiAgbGV0IGNvbnN0cmFpbnRzIGYgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoY3QxLCBjdDIsIF8pIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPkAgY29uc3RyYWludEAgJWFAID1AICVhQF1cIiAoY29yZV90eXBlIGN0eHQpIGN0MVxuICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QyKVxuICAgICAgeC5wdHlwZV9jc3Ryc1xuICBpblxuICBwcCBmIFwiJXQldCV0XCIgbWFuaWZlc3QgcmVwciBjb25zdHJhaW50c1xuXG5hbmQgdHlwZV9leHRlbnNpb24gY3R4dCBmIHggPVxuICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGYgeCA9XG4gICAgcHAgZiBcIkBcXG58QDslYVwiIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dCkgeFxuICBpblxuICBwcCBmIFwiQFs8Mj50eXBlICVhJWEgKz0gJWFAICVhQF0lYVwiXG4gICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IGwgLT5cbiAgICAgICAgICBwcCBmIFwiJWFAO1wiIChsaXN0ICh0eXBlX3BhcmFtIGN0eHQpIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIiB+c2VwOlwiLFwiKSBsKVxuICAgIHgucHR5ZXh0X3BhcmFtcyBsb25naWRlbnRfbG9jIHgucHR5ZXh0X3BhdGggcHJpdmF0ZV9mbGFnXG4gICAgeC5wdHlleHRfcHJpdmF0ZSAoKiBDZjogIzcyMDAgKilcbiAgICAobGlzdCB+c2VwOlwiXCIgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yKVxuICAgIHgucHR5ZXh0X2NvbnN0cnVjdG9ycyAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHR5ZXh0X2F0dHJpYnV0ZXNcblxuYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZiAobmFtZSwgdmFycywgYXJncywgcmVzLCBhdHRycykgPVxuICBsZXQgbmFtZSA9IG1hdGNoIG5hbWUgd2l0aCBcIjo6XCIgLT4gXCIoOjopXCIgfCBzIC0+IHMgaW5cbiAgbGV0IHBwX3ZhcnMgZiB2cyA9XG4gICAgbWF0Y2ggdnMgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IHZzIC0+IHBwIGYgXCIlYUA7LkA7XCIgKGxpc3QgdHl2YXJfbG9jIH5zZXA6XCJAO1wiKSB2c1xuICBpblxuICBtYXRjaCByZXMgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIHBwIGYgXCIlcyVhQDslYVwiIG5hbWVcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBbXSAtPiAoKVxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQDtvZkA7JWFcIiAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIikgbFxuICAgICAgICAgIHwgUGNzdHJfcmVjb3JkIGwgLT4gcHAgZiBcIkA7b2ZAOyVhXCIgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsKVxuICAgICAgICBhcmdzIChhdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgU29tZSByIC0+XG4gICAgICBwcCBmIFwiJXM6QDslYSVhQDslYVwiIG5hbWUgcHBfdmFycyB2YXJzXG4gICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgW10gLT4gY29yZV90eXBlMSBjdHh0IGYgclxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAOy0+QDslYVwiXG4gICAgICAgICAgICAgICAgKGxpc3QgKGNvcmVfdHlwZTEgY3R4dCkgfnNlcDpcIkA7KkA7XCIpXG4gICAgICAgICAgICAgICAgbCAoY29yZV90eXBlMSBjdHh0KSByXG4gICAgICAgICAgfCBQY3N0cl9yZWNvcmQgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAOy0+QDslYVwiIChyZWNvcmRfZGVjbGFyYXRpb24gY3R4dCkgbCAoY29yZV90eXBlMSBjdHh0KSByKVxuICAgICAgICBhcmdzIChhdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG5cbmFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dCBmIHggPVxuICAoKiBDZjogIzcyMDAgKilcbiAgbWF0Y2ggeC5wZXh0X2tpbmQgd2l0aFxuICB8IFBleHRfZGVjbCAodiwgbCwgcikgLT5cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZlxuICAgICAgICAoeC5wZXh0X25hbWUudHh0LCB2LCBsLCByLCB4LnBleHRfYXR0cmlidXRlcylcbiAgfCBQZXh0X3JlYmluZCBsaSAtPlxuICAgICAgcHAgZiBcIiVzQDs9QDslYSVhXCIgeC5wZXh0X25hbWUudHh0IGxvbmdpZGVudF9sb2MgbGkgKGF0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgeC5wZXh0X2F0dHJpYnV0ZXNcblxuYW5kIGNhc2VfbGlzdCBjdHh0IGYgbCA6IHVuaXQgPVxuICBsZXQgYXV4IGYgeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSA9XG4gICAgcHAgZiBcIkA7fCBAWzwyPiVhJWFAOy0+QDslYUBdXCIgKHBhdHRlcm4gY3R4dCkgcGNfbGhzXG4gICAgICAob3B0aW9uIChleHByZXNzaW9uIGN0eHQpIH5maXJzdDpcIkA7d2hlbkA7XCIpXG4gICAgICBwY19ndWFyZFxuICAgICAgKGV4cHJlc3Npb24gKHVuZGVyX3BpcGUgY3R4dCkpXG4gICAgICBwY19yaHNcbiAgaW5cbiAgbGlzdCBhdXggZiBsIH5zZXA6XCJcIlxuXG5hbmQgbGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQgZiAobCwgZSkgPVxuICBsZXQgc2ltcGxlX25hbWUgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGw7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICBTb21lIGxcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBOb2xhYmVsIC0+IGV4cHJlc3Npb24yIGN0eHQgZiBlICgqIGxldmVsIDIqKVxuICB8IE9wdGlvbmFsIHN0ciAtPlxuICAgICAgaWYgU29tZSBzdHIgPSBzaW1wbGVfbmFtZSB0aGVuIHBwIGYgXCI/JXNcIiBzdHJcbiAgICAgIGVsc2UgcHAgZiBcIj8lczolYVwiIHN0ciAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICB8IExhYmVsbGVkIGxibCAtPlxuICAgICAgaWYgU29tZSBsYmwgPSBzaW1wbGVfbmFtZSB0aGVuIHBwIGYgXCJ+JXNcIiBsYmxcbiAgICAgIGVsc2UgcHAgZiBcIn4lczolYVwiIGxibCAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuXG5hbmQgZGlyZWN0aXZlX2FyZ3VtZW50IGYgeCA9XG4gIG1hdGNoIHgucGRpcmFfZGVzYyB3aXRoXG4gIHwgUGRpcl9zdHJpbmcgcyAtPiBwcCBmIFwiQCAlU1wiIHNcbiAgfCBQZGlyX2ludCAobiwgTm9uZSkgLT4gcHAgZiBcIkAgJXNcIiBuXG4gIHwgUGRpcl9pbnQgKG4sIFNvbWUgbSkgLT4gcHAgZiBcIkAgJXMlY1wiIG4gbVxuICB8IFBkaXJfaWRlbnQgbGkgLT4gcHAgZiBcIkAgJWFcIiBsb25naWRlbnQgbGlcbiAgfCBQZGlyX2Jvb2wgYiAtPiBwcCBmIFwiQCAlc1wiIChzdHJpbmdfb2ZfYm9vbCBiKVxuXG5sZXQgdG9wbGV2ZWxfcGhyYXNlIGYgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFB0b3BfZGVmIHMgLT4gcHAgZiBcIkBbPGhvdjA+JWFAXVwiIChsaXN0IChzdHJ1Y3R1cmVfaXRlbSByZXNldF9jdHh0KSkgc1xuICAoKiBwcF9vcGVuX2h2Ym94IGYgMDsgKilcbiAgKCogcHBfcHJpbnRfbGlzdCBzdHJ1Y3R1cmVfaXRlbSBmIHMgOyAqKVxuICAoKiBwcF9jbG9zZV9ib3ggZiAoKTsgKilcbiAgfCBQdG9wX2RpciB7IHBkaXJfbmFtZTsgcGRpcl9hcmcgPSBOb25lOyBfIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPiMlc0BdXCIgcGRpcl9uYW1lLnR4dFxuICB8IFB0b3BfZGlyIHsgcGRpcl9uYW1lOyBwZGlyX2FyZyA9IFNvbWUgcGRpcl9hcmc7IF8gfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+IyVzQCAlYUBdXCIgcGRpcl9uYW1lLnR4dCBkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmdcblxubGV0IGV4cHJlc3Npb24gZiB4ID0gcHAgZiBcIkBbJWFAXVwiIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIHhcblxubGV0IHN0cmluZ19vZl9leHByZXNzaW9uIHggPVxuICBpZ25vcmUgKGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpO1xuICBsZXQgZiA9IHN0cl9mb3JtYXR0ZXIgaW5cbiAgZXhwcmVzc2lvbiBmIHg7XG4gIGZsdXNoX3N0cl9mb3JtYXR0ZXIgKClcblxubGV0IHN0cmluZ19vZl9zdHJ1Y3R1cmUgeCA9XG4gIGlnbm9yZSAoZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSk7XG4gIGxldCBmID0gc3RyX2Zvcm1hdHRlciBpblxuICBzdHJ1Y3R1cmUgcmVzZXRfY3R4dCBmIHg7XG4gIGZsdXNoX3N0cl9mb3JtYXR0ZXIgKClcblxubGV0IHRvcF9waHJhc2UgZiB4ID1cbiAgcHBfcHJpbnRfbmV3bGluZSBmICgpO1xuICB0b3BsZXZlbF9waHJhc2UgZiB4O1xuICBwcCBmIFwiOztcIjtcbiAgcHBfcHJpbnRfbmV3bGluZSBmICgpXG5cbmxldCBjb3JlX3R5cGUgPSBjb3JlX3R5cGUgcmVzZXRfY3R4dFxubGV0IHBhdHRlcm4gPSBwYXR0ZXJuIHJlc2V0X2N0eHRcbmxldCBzaWduYXR1cmUgPSBzaWduYXR1cmUgcmVzZXRfY3R4dFxubGV0IHN0cnVjdHVyZSA9IHN0cnVjdHVyZSByZXNldF9jdHh0XG5sZXQgY2xhc3NfZXhwciA9IGNsYXNzX2V4cHIgcmVzZXRfY3R4dFxubGV0IGNsYXNzX2ZpZWxkID0gY2xhc3NfZmllbGQgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3R5cGUgPSBjbGFzc190eXBlIHJlc2V0X2N0eHRcbmxldCBjbGFzc19zaWduYXR1cmUgPSBjbGFzc19zaWduYXR1cmUgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3R5cGVfZmllbGQgPSBjbGFzc190eXBlX2ZpZWxkIHJlc2V0X2N0eHRcbmxldCBtb2R1bGVfZXhwciA9IG1vZHVsZV9leHByIHJlc2V0X2N0eHRcbmxldCBtb2R1bGVfdHlwZSA9IG1vZHVsZV90eXBlIHJlc2V0X2N0eHRcbmxldCBzaWduYXR1cmVfaXRlbSA9IHNpZ25hdHVyZV9pdGVtIHJlc2V0X2N0eHRcbmxldCBzdHJ1Y3R1cmVfaXRlbSA9IHN0cnVjdHVyZV9pdGVtIHJlc2V0X2N0eHRcbmxldCB0eXBlX2RlY2xhcmF0aW9uID0gdHlwZV9kZWNsYXJhdGlvbiByZXNldF9jdHh0XG4iLCJtb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhciAgKCoqIENoYXJhY3RlciBzdWNoIGFzIFsnYyddLiAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICAgICAoKiogQ29uc3RhbnQgc3RyaW5nIHN1Y2ggYXMgW1wiY29uc3RhbnRcIl0gb3JcbiAgICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tcXEBpZCBBUkddXSBhbmQgW1tcXEBcXEBpZCBBUkddXS5cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFs/IFBdICBvciAgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QxIC0+IFQyXSAgICB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19LFxuICAgICAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGUgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS5cbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUIHRjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSAgICAgd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsjdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCAjdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyAgKCoqIFtUIGFzICdhXS4gKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbWyBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s+IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAgICB7W2xldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLl19XG4gICAgICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAgIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1bUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9W3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fVtQdHlwX29iamVjdF19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX1bcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG4gICAgICAgICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgICAgICAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtgQV0gICAgICAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVF0gICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiogezIgUGF0dGVybnN9ICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtDIFBdICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfVxuXG4gICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sXG4gICAgICAgICAgICAgIFsxTF0sIFsxbl0gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdCAgKCoqIFtmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZnVuKGxibCwgZXhwMCwgUCwgRTEpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5XG4gICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFtmdW4gUDEgUDIgLi4gUG4gLT4gRTFdIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZFxuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZ1xuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtFMCB+bDE6RTEgLi4uIH5sbjpFbl1cblxuICAgICAgICAgICAgICBbbGldIGNhbiBiZVxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0gICAobm9uIGxhYmVsZWQgYXJndW1lbnQpLFxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSAobGFiZWxsZWQgYXJndW1lbnRzKSBvclxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgLSBbQyBFXSAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbYEEgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfcmVjb3JkKFsobDEsUDEpIDsgLi4uIDsgKGxuLFBuKV0sIGV4cDApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gICAgICAgICB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgICgqKiBbRS5sXSAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW0UxLmwgPC0gRTJdICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbaWYgRTEgdGhlbiBFMiBlbHNlIEUzXSAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gICAgfCBQZXhwX2ZvciBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfVtVcHRvXX1cbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLkRvd250b31bRG93bnRvXX1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gWyhFIDo+IFQpXSAgICAgIHdoZW4gW2Zyb21dIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2MgICgqKiBbRSAjIG1dICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbbmV3IE0uY10gKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uICAoKiogW3ggPC0gMl0gKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IGV4Y2VwdGlvbiBDIGluIEVdICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXJcbiAgICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgICAgIHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbZnVuICh0eXBlIHQpIC0+IEVdICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiBNIGluIEVdXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAgICAgLSBbbGV0KiBQMCA9IEUwMCBhbmQqIFAxID0gRTAxIGluIEUxXSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID1cbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjYXNlfSByZXByZXNlbnRzIFsoUCAtPiBFKV0gb3IgWyhQIHdoZW4gRTAgLT4gRSldICopXG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG4gICAgICAtIFt2YWwgeDogVF0sXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXVxuICAqKVxuXG4gICgqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKlxuICAgICBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sXG4gICAgIGZvciB2YXJpb3VzIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH1bcHR5cGVfa2luZF19XG4gICAgICAgICAgICAgYW5kIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9W3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuICAgLSBbdHlwZSB0XSAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDBdXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSAuLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufVtQdHlwZV9vcGVuXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19LFxuICAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX0uXG5cbiAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfdmFyczogc3RyaW5nIGxvYyBsaXN0O1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufVxuICAgICAgcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mOlxuICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQzogVDBdICAgICAgICAgICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0Mgb2Ygey4uLn1dICAgICAgICAgICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgIC0gW0M6IHsuLi59IC0+IFQwXSAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLlxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgICAoW3R5cGUgdCArPSAuLi5dKS5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV1cbiAgICAgICAgICAgIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb24gY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcbiAgICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbjpcbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW05vbmVdLn19XG4gICAgICAgICAgICAtIFtDOiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiAtIFtjXVxuICAgICAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn1bcGNzaWdfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX1bUHR5cF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdLlxuICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLlxuICAgICAgICAgICAgICBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggWz9dXG4gICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn1bcGNzdHJfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9W1BwYXRfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFXVxuICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRV1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdXG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt2YWwgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfSlcbiAgICAgICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgIC0gW1MgPSBNVF0sXG4gICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbixcbiAgICAgICB3aGVuIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX1bcG10ZF90eXBlXX0gaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAoc2lsZW5jZXMgdGhlIFwidXNlZCBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT10gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT11cbiAgICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtYXSAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICAgIHwgUG1vZF9hcHBseV91bml0IG9mIG1vZHVsZV9leHByICgqKiBbTUUxKCldICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZSAgKCoqIFsoTUUgOiBNVCldICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAgICAgLSBbZXhjZXB0aW9uIEMgPSBNLlhdICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW5dICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIHZhbHVlX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHZjX2NvbnN0cmFpbnQgb2Yge1xuICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOnN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHR5cDpjb3JlX3R5cGU7XG4gICAgICB9XG4gICAgfCBQdmNfY29lcmNpb24gb2Yge2dyb3VuZDpjb3JlX3R5cGUgb3B0aW9uOyBjb2VyY2lvbjpjb3JlX3R5cGUgfVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfY29uc3RyYWludDogdmFsdWVfY29uc3RyYWludCBvcHRpb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZzogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2M6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzNcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzNcIlxuZW5kXG4iLCJtb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhciAgKCoqIENoYXJhY3RlciBzdWNoIGFzIFsnYyddLiAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICAgICAoKiogQ29uc3RhbnQgc3RyaW5nIHN1Y2ggYXMgW1wiY29uc3RhbnRcIl0gb3JcbiAgICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tcXEBpZCBBUkddXSBhbmQgW1tcXEBcXEBpZCBBUkddXS5cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFs/IFBdICBvciAgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QxIC0+IFQyXSAgICB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19LFxuICAgICAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGUgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS5cbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUIHRjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSAgICAgd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsjdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCAjdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyBsb2MgICgqKiBbVCBhcyAnYV0uICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICgqKiBbUHR5cF92YXJpYW50KFtgQTtgQl0sIGZsYWcsIGxhYmVscyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1sgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPiBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogWydhMSAuLi4gJ2FuLiBUXVxuXG4gICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1bUHBhdF9jb25zdHJhaW50XX0gbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzpcblxuICAgICAgICAgICAge1tsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUID0gZSAuLi5dfVxuICAgICAgICAgICAgIC0gVW5kZXIge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgICB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9W1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfVtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH1bUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9W3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gICAgfCBQdHlwX29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlICgqKiBbTS4oVCldICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dLiAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICgqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuICAgICAgICAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAgICAgICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLlxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbYEFdICAgICAgICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFRdICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCoqIHsyIFBhdHRlcm5zfSAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sIFsxbl0gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbQyBQXSAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW10sIFApXVxuICAgICAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFthOyBiXSwgUCldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2BBIFBdIHdoZW4gW3BhdF0gaXMgW1NvbWUgUF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQcGF0X3JlY29yZChbKGwxLCBQMSkgOyAuLi4gOyAobG4sIFBuKV0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfVxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuOyBffV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX1cblxuICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0ICAoKiogUGF0dGVybiBbW3wgUDE7IC4uLjsgUG4gfF1dICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogUGF0dGVybiBbWyVpZF1dICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBjb25zdGFudCBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLFxuICAgICAgICAgICAgICBbMUxdLCBbMW5dICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZlxuICAgICAgICBmdW5jdGlvbl9wYXJhbSBsaXN0ICogdHlwZV9jb25zdHJhaW50IG9wdGlvbiAqIGZ1bmN0aW9uX2JvZHlcbiAgICAoKiogW1BleHBfZnVuY3Rpb24gKFtQMTsgLi4uOyBQbl0sIEMsIGJvZHkpXSByZXByZXNlbnRzIGFueSBjb25zdHJ1Y3RcbiAgICAgICAgaW52b2x2aW5nIFtmdW5dIG9yIFtmdW5jdGlvbl0sIGluY2x1ZGluZzpcbiAgICAgICAgLSBbZnVuIFAxIC4uLiBQbiAtPiBFXVxuICAgICAgICAgIHdoZW4gW2JvZHkgPSBQZnVuY3Rpb25fYm9keSBFXVxuICAgICAgICAtIFtmdW4gUDEgLi4uIFBuIC0+IGZ1bmN0aW9uIHAxIC0+IGUxIHwgLi4uIHwgcG0gLT4gZW1dXG4gICAgICAgICAgd2hlbiBbYm9keSA9IFBmdW5jdGlvbl9jYXNlcyBbIHAxIC0+IGUxOyAuLi47IHBtIC0+IGVtIF1dXG4gICAgICAgIFtDXSByZXByZXNlbnRzIGEgdHlwZSBjb25zdHJhaW50IG9yIGNvZXJjaW9uIHBsYWNlZCBpbW1lZGlhdGVseSBiZWZvcmUgdGhlXG4gICAgICAgIGFycm93LCBlLmcuIFtmdW4gUDEgLi4uIFBuIDogdHkgLT4gLi4uXSB3aGVuIFtDID0gU29tZSAoUGNvbnN0cmFpbnQgdHkpXS5cbiAgICAgICAgQSBmdW5jdGlvbiBtdXN0IGhhdmUgcGFyYW1ldGVycy4gW1BleHBfZnVuY3Rpb24gKHBhcmFtcywgXywgYm9keSldIG11c3RcbiAgICAgICAgaGF2ZSBub24tZW1wdHkgW3BhcmFtc10gb3IgYSBbUGZ1bmN0aW9uX2Nhc2VzIF9dIGJvZHkuXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXVxuICAgICAgICAgICAgICAgIHJlcHJlc2VudHMgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgICAgICAgW2xpXSBjYW4gYmVcbiAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0gICAobm9uIGxhYmVsZWQgYXJndW1lbnQpLFxuICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19IChsYWJlbGxlZCBhcmd1bWVudHMpIG9yXG4gICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAtIFtDIEVdICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSAgICAgICAgIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAgKCoqIFtFLmxdICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99W1VwdG9dfVxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfVtEb3dudG9dfVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbKEUgOj4gVCldICAgICAgd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgICAgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZnVuY3Rpb25fcGFyYW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rpb25fcGFyYW1fZGVzYyAqKSA9XG4gICAgfCBQcGFyYW1fdmFsIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVyblxuICAgICgqKiBbUHBhcmFtX3ZhbCAobGJsLCBleHAwLCBQKV0gcmVwcmVzZW50cyB0aGUgcGFyYW1ldGVyOlxuICAgICAgICAtIFtQXVxuICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgIC0gW35sOlBdXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgIC0gWz9sOlBdXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgIC0gWz9sOihQID0gRTApXVxuICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgIE5vdGU6IElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHlcbiAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgKilcbiAgICB8IFBwYXJhbV9uZXd0eXBlIG9mIHN0cmluZyBsb2NcbiAgICAoKiogW1BwYXJhbV9uZXd0eXBlIHhdIHJlcHJlc2VudHMgdGhlIHBhcmFtZXRlciBbKHR5cGUgeCldLlxuICAgICAgICBbeF0gY2FycmllcyB0aGUgbG9jYXRpb24gb2YgdGhlIGlkZW50aWZpZXIsIHdoZXJlYXMgdGhlIFtwcGFyYW1fbG9jXVxuICAgICAgICBvbiB0aGUgZW5jbG9zaW5nIFtmdW5jdGlvbl9wYXJhbV0gbm9kZSBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIFsodHlwZSB4KV1cbiAgICAgICAgYXMgYSB3aG9sZS5cblxuICAgICAgICBNdWx0aXBsZSBwYXJhbWV0ZXJzIFsodHlwZSBhIGIgYyldIGFyZSByZXByZXNlbnRlZCBhcyBtdWx0aXBsZVxuICAgICAgICBbUHBhcmFtX25ld3R5cGVdIG5vZGVzLCBsZXQncyBzYXk6XG5cbiAgICAgICAge1sgWyB7IHBwYXJhbV9raW5kID0gUHBhcmFtX25ld3R5cGUgYTsgcHBhcmFtX2xvYyA9IGxvYzEgfTtcbiAgICAgICAgICAgICB7IHBwYXJhbV9raW5kID0gUHBhcmFtX25ld3R5cGUgYjsgcHBhcmFtX2xvYyA9IGxvYzIgfTtcbiAgICAgICAgICAgICB7IHBwYXJhbV9raW5kID0gUHBhcmFtX25ld3R5cGUgYzsgcHBhcmFtX2xvYyA9IGxvYzMgfTtcbiAgICAgICAgICAgXVxuICAgICAgICBdfVxuXG4gICAgICAgIEhlcmUsIHRoZSBmaXJzdCBsb2MgW2xvYzFdIGlzIHRoZSBsb2NhdGlvbiBvZiBbKHR5cGUgYSBiIGMpXSwgYW5kIHRoZVxuICAgICAgICBzdWJzZXF1ZW50IGxvY3MgW2xvYzJdIGFuZCBbbG9jM10gYXJlIHRoZSBzYW1lIGFzIFtsb2MxXSwgZXhjZXB0IG1hcmtlZCBhc1xuICAgICAgICBnaG9zdCBsb2NhdGlvbnMuIFRoZSBsb2NhdGlvbnMgb24gW2FdLCBbYl0sIFtjXSwgY29ycmVzcG9uZCB0byB0aGVcbiAgICAgICAgdmFyaWFibGVzIFthXSwgW2JdLCBhbmQgW2NdIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgICAqKVxuXG4gIGFuZCBmdW5jdGlvbl9wYXJhbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rpb25fcGFyYW0gKikgPVxuICAgIHsgcHBhcmFtX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwcGFyYW1fZGVzYyA6IGZ1bmN0aW9uX3BhcmFtX2Rlc2M7XG4gICAgfVxuXG4gIGFuZCBmdW5jdGlvbl9ib2R5ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdGlvbl9ib2R5ICopID1cbiAgICB8IFBmdW5jdGlvbl9ib2R5IG9mIGV4cHJlc3Npb25cbiAgICB8IFBmdW5jdGlvbl9jYXNlcyBvZiBjYXNlIGxpc3QgKiBMb2NhdGlvbi50ICogYXR0cmlidXRlc1xuICAgICgqKiBJbiBbUGZ1bmN0aW9uX2Nhc2VzIChfLCBsb2MsIGF0dHJzKV0sIHRoZSBsb2NhdGlvbiBleHRlbmRzIGZyb20gdGhlXG4gICAgICAgIHN0YXJ0IG9mIHRoZSBbZnVuY3Rpb25dIGtleXdvcmQgdG8gdGhlIGVuZCBvZiB0aGUgbGFzdCBjYXNlLiBUaGUgY29tcGlsZXJcbiAgICAgICAgd2lsbCBvbmx5IHVzZSB0eXBlY2hlY2tpbmctcmVsYXRlZCBhdHRyaWJ1dGVzIGZyb20gW2F0dHJzXSwgZS5nLiBlbmFibGluZ1xuICAgICAgICBvciBkaXNhYmxpbmcgYSB3YXJuaW5nLlxuICAgICopXG4gICgqKiBTZWUgdGhlIGNvbW1lbnQgb24ge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVuY3Rpb259W1BleHBfZnVuY3Rpb25dfS4gKilcblxuICBhbmQgdHlwZV9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUGNvbnN0cmFpbnQgb2YgY29yZV90eXBlXG4gICAgfCBQY29lcmNlIG9mIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgKCoqIFNlZSB0aGUgY29tbWVudCBvbiB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW5jdGlvbn1bUGV4cF9mdW5jdGlvbl19LiAqKVxuXG4gICgqKiB7MiBWYWx1ZSBkZXNjcmlwdGlvbnN9ICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IXZhbHVlX2Rlc2NyaXB0aW9ufSByZXByZXNlbnRzOlxuICAgICAgLSBbdmFsIHg6IFRdLFxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV1cbiAgKilcblxuICAoKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiogWygnYTEsLi4uJ2FuKSB0XSAqKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKipcbiAgICAgSGVyZSBhcmUgdHlwZSBkZWNsYXJhdGlvbnMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uLFxuICAgICBmb3IgdmFyaW91cyB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9W3B0eXBlX2tpbmRdfVxuICAgICAgICAgICAgIGFuZCB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX21hbmlmZXN0fVtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcbiAgIC0gW3R5cGUgdF0gICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn1bUHR5cGVfb3Blbl19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdCAgKCoqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtsIDogVCBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKlxuICAgICAtIFt7IC4uLjsgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfSxcbiAgICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19LlxuXG4gICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX3ZhcnM6IHN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbn1cbiAgICAgIHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBvZjpcbiAgICAtIFtDIG9mIFQxICogLi4uICogVG5dICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0M6IFQwXSAgICAgICAgICAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDIG9mIHsuLi59XSAgICAgICAgICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAtIFtDOiB7Li4ufSAtPiBUMF0gICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS5cbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiAuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl0gKilcbiAgICB9XG4gICgqKlxuICAgICBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAgKFt0eXBlIHQgKz0gLi4uXSkuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQ6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBbUGV4dF9kZWNsKGV4aXN0ZW50aWFscywgY19hcmdzLCB0X29wdCldXG4gICAgICAgICAgICBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG4gICAgICAgICAgICAtIFtDIG9mIFQxICogLi4uICogVG5dIHdoZW46XG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtOb25lXS59fVxuICAgICAgICAgICAgLSBbQzogVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6ICdhLi4uIC4gVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1snYTsuLi5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi4gOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogLSBbY11cbiAgICAgICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3Nfc2lnbmF0dXJlXSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9W3Bjc2lnX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9W1B0eXBfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGUgICgqKiBbaW5oZXJpdCBDVF0gKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gICAgfCBQY3RmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICAgVGhleSBhcmUgYWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbY10gYW5kIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2Z1bihsYmwsIGV4cDAsIFAsIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoIFs/XVxuICAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGUgICgqKiBbKENFIDogQ1QpXSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNsYXNzX3N0cnVjdHVyZX0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdChzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9W3Bjc3RyX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fVtQcGF0X2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRV1cbiAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XVxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdmFsIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX0pXG4gICAgICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByICAoKiogW21vZHVsZSB0eXBlIG9mIE1FXSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbKG1vZHVsZSBNKV0gKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXQgICgqKiBbKCldICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbTmFtZWQobmFtZSwgTVQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgICAgIC0gWyhfIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbTm9uZV0gKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSBYID0gTV0gYW5kIFttb2R1bGUgWCA6IE1UXSAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG5dICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9zdWJzdGl0dXRpb25dIHJlcHJlc2VudHMgW1MgOj0gTV0gKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV90eXBlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAtIFtTID0gTVRdLFxuICAgICAtIFtTXSBmb3IgYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sXG4gICAgICAgd2hlbiB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9W3BtdGRfdHlwZV19IGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgKHNpbGVuY2VzIHRoZSBcInVzZWQgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgICAgLSBbb3BlbiAgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZXNjcmlwdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbWF0gKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZSAgKCoqIFtzdHJ1Y3QgLi4uIGVuZF0gKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwciAgKCoqIFtNRTEoTUUyKV0gKilcbiAgICB8IFBtb2RfYXBwbHlfdW5pdCBvZiBtb2R1bGVfZXhwciAoKiogW01FMSgpXSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvbiAgKCoqIFsodmFsIEUpXSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW1BzdHJfdmFsdWUocmVjLCBbKFAxLCBFMSA7IC4uLiA7IChQbiwgRW4pKV0pXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICAgKCoqIC0gW2V4Y2VwdGlvbiBDIG9mIFRdXG4gICAgICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgICgqKiBbbW9kdWxlIFggPSBNRV0gKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uICAoKiogW2luY2x1ZGUgTUVdICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCB2YWx1ZV9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50ICopID1cbiAgICB8IFB2Y19jb25zdHJhaW50IG9mIHtcbiAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczpzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICB0eXA6Y29yZV90eXBlO1xuICAgICAgfVxuICAgIHwgUHZjX2NvZXJjaW9uIG9mIHtncm91bmQ6Y29yZV90eXBlIG9wdGlvbjsgY29lcmNpb246Y29yZV90eXBlIH1cblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2NvbnN0cmFpbnQ6IHZhbHVlX2NvbnN0cmFpbnQgb3B0aW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmc6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDM0XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDM0XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF81MDJcbm1vZHVsZSBUbyA9IEFzdF81MDFcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNS4wMlwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgbWtfZ2hvc3RfYXR0ciBuYW1lID1cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IHsgTG9jYXRpb24udHh0ID0gbmFtZTsgbG9jID0gTG9jYXRpb24ubm9uZSB9O1xuICAgIGF0dHJfcGF5bG9hZCA9IFBTdHIgW107XG4gICAgYXR0cl9sb2MgPSBMb2NhdGlvbi5ub25lO1xuICB9XG5cbmxldCByZWMgY29uY2F0X2xpc3RfbGl0IGxlZnQgcmlnaHQgPVxuICBsZXQgb3BlbiBBc3RfNTAyLlBhcnNldHJlZSBpblxuICBsZXQgb3BlbiBBc3RfNTAyLkFzdHR5cGVzIGluXG4gIG1hdGNoIChsZWZ0LnBleHBfZGVzYywgcmlnaHQucGV4cF9kZXNjKSB3aXRoXG4gIHwgXywgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKSAtPiBsZWZ0XG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKSwgXyAtPiByaWdodFxuICB8ICggUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IGxvYyB9LFxuICAgICAgICAgIFNvbWUgKHsgcGV4cF9kZXNjID0gUGV4cF90dXBsZSBbIGhkOyB0bCBdOyBfIH0gYXMgYXJnX2V4cHIpICksXG4gICAgICBfICkgLT5cbiAgICAgIHtcbiAgICAgICAgbGVmdCB3aXRoXG4gICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICAgUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgICAgICggeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBsb2MgfSxcbiAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGFyZ19leHByIHdpdGhcbiAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfdHVwbGUgWyBoZDsgY29uY2F0X2xpc3RfbGl0IHRsIHJpZ2h0IF07XG4gICAgICAgICAgICAgICAgfSApO1xuICAgICAgfVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJJbnZhbGlkIG9jYW1sLnBweC5jb250ZXh0J3MgbG9hZF9wYXRoXCJcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfbG9hZF9wYXRoIGV4cHIgPVxuICBsZXQgb3BlbiBBc3RfNTAyLlBhcnNldHJlZSBpblxuICBsZXQgbG9jID0gZXhwci5wZXhwX2xvYyBpblxuICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF90dXBsZSBbIHZpc2libGU7IGhpZGRlbiBdIC0+XG4gICAgICBsZXQgbWlncmF0aW9uX2F0dHIgPVxuICAgICAgICB7XG4gICAgICAgICAgYXR0cl9uYW1lID0geyBMb2NhdGlvbi50eHQgPSBcInBweGxpYi5taWdyYXRpb24ubG9hZF9wYXRoXCI7IGxvYyB9O1xuICAgICAgICAgIGF0dHJfbG9jID0gbG9jO1xuICAgICAgICAgIGF0dHJfcGF5bG9hZCA9XG4gICAgICAgICAgICBQU3RyIFsgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gUHN0cl9ldmFsIChleHByLCBbXSkgfSBdO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGV4cHInID0gY29uY2F0X2xpc3RfbGl0IHZpc2libGUgaGlkZGVuIGluXG4gICAgICB7IGV4cHInIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gbWlncmF0aW9uX2F0dHIgOjogZXhwci5wZXhwX2F0dHJpYnV0ZXMgfVxuICB8IF8gLT4gZXhwclxuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9maWVsZHMgZmllbGRzID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuIChsaWRlbnRfbG9jLCBleHByKSAtPlxuICAgICAgbWF0Y2ggbGlkZW50X2xvYy5Bc3RfNTAyLkFzdHR5cGVzLnR4dCB3aXRoXG4gICAgICB8IExvbmdpZGVudC5MaWRlbnQgXCJsb2FkX3BhdGhcIiAtPlxuICAgICAgICAgIChsaWRlbnRfbG9jLCBtaWdyYXRlX3BweF9jb250ZXh0X2xvYWRfcGF0aCBleHByKVxuICAgICAgfCBfIC0+IChsaWRlbnRfbG9jLCBleHByKSlcbiAgICBmaWVsZHNcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBwYXlsb2FkID1cbiAgbGV0IG9wZW4gQXN0XzUwMi5QYXJzZXRyZWUgaW5cbiAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gIHwgUFN0clxuICAgICAgW1xuICAgICAgICAoe1xuICAgICAgICAgICBwc3RyX2Rlc2MgPVxuICAgICAgICAgICAgIFBzdHJfZXZhbFxuICAgICAgICAgICAgICAgKCh7IHBleHBfZGVzYyA9IFBleHBfcmVjb3JkIChmaWVsZHMsIE5vbmUpIH0gYXMgZXhwciksIGF0dHJpYnV0ZXMpO1xuICAgICAgICAgfSBhcyBzdHJpKTtcbiAgICAgIF0gLT5cbiAgICAgIGxldCBuZXdfZmllbGRzID0gbWlncmF0ZV9wcHhfY29udGV4dF9maWVsZHMgZmllbGRzIGluXG4gICAgICBsZXQgbmV3X2V4cHIgPSB7IGV4cHIgd2l0aCBwZXhwX2Rlc2MgPSBQZXhwX3JlY29yZCAobmV3X2ZpZWxkcywgTm9uZSkgfSBpblxuICAgICAgUFN0ciBbIHsgc3RyaSB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAobmV3X2V4cHIsIGF0dHJpYnV0ZXMpIH0gXVxuICB8IF8gLT4gcGF5bG9hZFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAyLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAocGFyYW1zLCB0Y29uc3RyYWludCwgYm9keSkgLT5cbiAgICAgIGxldCBleHByID1cbiAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgIHwgUGZ1bmN0aW9uX2JvZHkgZXhwciAtPiAoXG4gICAgICAgICAgICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgICB8IFBleHBfZnVuY3Rpb24gXyAtPlxuICAgICAgICAgICAgICAgICgqIFdlIGRvbid0IHdhbnQgdGhpcyBbZnVuXSB0byBiZSBtZXJnZWQgd2l0aCB0aGUgcGFyZW50IGR1cmluZ1xuICAgICAgICAgICAgICAgICAgIHRoZSByb3VuZC10cmlwLiBUaGlzIGF0dHJpYnV0ZSBzaWduYWxzIHRoYXQgdGhpcyBleHByZXNzaW9uXG4gICAgICAgICAgICAgICAgICAgcmVhbGx5IGlzIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbi4gKilcbiAgICAgICAgICAgICAgICBsZXQgYXR0ciA9IG1rX2dob3N0X2F0dHIgXCJwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXCIgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBleHByIGluXG4gICAgICAgICAgICAgICAgeyBleHByIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gYXR0ciA6OiBleHByLnBleHBfYXR0cmlidXRlcyB9XG4gICAgICAgICAgICB8IF8gLT4gY29weV9leHByZXNzaW9uIGV4cHIpXG4gICAgICAgIHwgUGZ1bmN0aW9uX2Nhc2VzIChjYXNlcywgbG9jLCBhdHRycykgLT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgY2FzZXMpO1xuICAgICAgICAgICAgICBwZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gbG9jO1xuICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgYXR0cnM7XG4gICAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGV4cHIgPVxuICAgICAgICBtYXRjaCB0Y29uc3RyYWludCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBleHByXG4gICAgICAgIHwgU29tZSAoUGNvbnN0cmFpbnQgYykgLT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGV4cHIsIGNvcHlfY29yZV90eXBlIGMpO1xuICAgICAgICAgICAgICBwZXhwX2xvYyA9IGV4cHIucGV4cF9sb2M7XG4gICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB8IFNvbWUgKFBjb2VyY2UgKGMxLCBjMikpIC0+XG4gICAgICAgICAgICBsZXQgYzEgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGMxIGluXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKGV4cHIsIGMxLCBjb3B5X2NvcmVfdHlwZSBjMik7XG4gICAgICAgICAgICAgIHBleHBfbG9jID0gZXhwci5wZXhwX2xvYztcbiAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGV4cHIgPVxuICAgICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAgICAoZnVuIHBhcmFtIGV4cHIgLT5cbiAgICAgICAgICAgIG1hdGNoIHBhcmFtIHdpdGhcbiAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXJhbV9kZXNjID0gUHBhcmFtX3ZhbCAobGJsLCBleHAwLCBwKTtcbiAgICAgICAgICAgICBwcGFyYW1fbG9jO1xuICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgIGxldCBwZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgICAgICAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCBsYmwsXG4gICAgICAgICAgICAgICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gZXhwMCxcbiAgICAgICAgICAgICAgICAgICAgICBjb3B5X3BhdHRlcm4gcCxcbiAgICAgICAgICAgICAgICAgICAgICBleHByIClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gcHBhcmFtX2xvYztcbiAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB8IHsgcHBhcmFtX2Rlc2MgPSBQcGFyYW1fbmV3dHlwZSB4OyBwcGFyYW1fbG9jIH0gLT5cbiAgICAgICAgICAgICAgICBsZXQgcGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgsIGV4cHIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IHBwYXJhbV9sb2M7XG4gICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBwYXJhbXMgZXhwclxuICAgICAgaW5cbiAgICAgIGV4cHIucGV4cF9kZXNjXG4gICAgICAoKiBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApICopXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF81MDIuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5sZXRfOyBBc3RfNTAyLlBhcnNldHJlZS5hbmRzOyBBc3RfNTAyLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuVXB0byAtPiBBc3RfNTAxLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNTAxLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzUwMi5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludCA9XG4gICAgICBPcHRpb24ubWFwIGNvcHlfdmFsdWVfY29uc3RyYWludCBwdmJfY29uc3RyYWludDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAyLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfdmFsdWVfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczsgdHlwIH0gLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50XG4gICAgICAgIHtcbiAgICAgICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPVxuICAgICAgICAgICAgTGlzdC5tYXAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzO1xuICAgICAgICAgIHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cDtcbiAgICAgICAgfVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb2VyY2lvbiB7IGdyb3VuZDsgY29lcmNpb24gfSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uXG4gICAgICAgIHtcbiAgICAgICAgICBncm91bmQgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGdyb3VuZDtcbiAgICAgICAgICBjb2VyY2lvbiA9IGNvcHlfY29yZV90eXBlIGNvZXJjaW9uO1xuICAgICAgICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF81MDIuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfbG9jIHB0eXBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgbG9jIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEudHh0KVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcIm1vZHVsZSBvcGVuIGluIHR5cGVzXCJcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAyLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID1cbiAgICAgIChtYXRjaCBhdHRyX25hbWUudHh0IHdpdGhcbiAgICAgIHwgXCJvY2FtbC5wcHguY29udGV4dFwiIC0+XG4gICAgICAgICAgY29weV9wYXlsb2FkIChtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQgYXR0cl9wYXlsb2FkKVxuICAgICAgfCBfIC0+IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQpO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMi5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMi5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAxLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAxLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMi5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAxLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDIuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMi5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMi5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDIuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAyLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDIuQXN0dHlwZXMudHh0OyBBc3RfNTAyLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAxXG5tb2R1bGUgVG8gPSBBc3RfNTAyXG5cbigqKiBMb29rIGZvciBhIHBhcnRpY3VsYXIgYXR0cmlidXRlIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgbGlzdC4gQXR0cmlidXRlcyBhcmVcbiAgICB1c2VkIHRvIG1ha2UgY2VydGFpbiBtaWdyYXRpb25zIHJvdW5kLXRyaXAuIFJldHVybnMgW05vbmVdIGlmIHRoZSBzcGVjaWZpZWRcbiAgICBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLiAqKVxubGV0IGV4dHJhY3RfYXR0ciBuYW1lIChhdHRycyA6IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMpID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoTm9uZSwgTGlzdC5yZXYgYWNjKVxuICAgIHwgeyBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWUgPSB7IHR4dDsgXyB9OyBhdHRyX3BheWxvYWQ7IF8gfSA6OiBxXG4gICAgICB3aGVuIHR4dCA9IG5hbWUgLT5cbiAgICAgICAgKFNvbWUgYXR0cl9wYXlsb2FkLCBMaXN0LnJldl9hcHBlbmQgYWNjIHEpXG4gICAgfCBoZCA6OiB0bCAtPiBsb29wIChoZCA6OiBhY2MpIHRsXG4gIGluXG4gIGxvb3AgW10gYXR0cnNcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfbG9hZF9wYXRoIGV4cHIgPVxuICBsZXQgb3BlbiBBc3RfNTAxLlBhcnNldHJlZSBpblxuICBsZXQgcGF5bG9hZCwgb3RoZXJfYXR0cnMgPVxuICAgIGV4dHJhY3RfYXR0ciBcInBweGxpYi5taWdyYXRpb24ubG9hZF9wYXRoXCIgZXhwci5wZXhwX2F0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgbGV0IHBleHBfZGVzYyA9XG4gICAgICAgIFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IGxvYyA9IGV4cHIucGV4cF9sb2MgfSwgTm9uZSlcbiAgICAgIGluXG4gICAgICBsZXQgaGlkZGVuID0geyBleHByIHdpdGggcGV4cF9kZXNjOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICBsZXQgdmlzaWJsZSA9IGV4cHIgaW5cbiAgICAgIHtcbiAgICAgICAgZXhwciB3aXRoXG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IG90aGVyX2F0dHJzO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX3R1cGxlIFsgdmlzaWJsZTsgaGlkZGVuIF07XG4gICAgICB9XG4gIHwgU29tZSAoUFN0ciBbIHsgcHN0cl9kZXNjID0gUHN0cl9ldmFsIChleHByLCBbXSk7IF8gfSBdKSAtPiBleHByXG4gIHwgU29tZSBfIC0+IGludmFsaWRfYXJnIFwiSW52YWxpZCBwcHhsaWIubWlncmF0aW9uLmxvYWRfcGF0aCBwYXlsb2FkXCJcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfZmllbGRzIGZpZWxkcyA9XG4gIExpc3QubWFwXG4gICAgKGZ1biAobGlkZW50X2xvYywgZXhwcikgLT5cbiAgICAgIG1hdGNoIGxpZGVudF9sb2MuQXN0XzUwMS5Bc3R0eXBlcy50eHQgd2l0aFxuICAgICAgfCBMb25naWRlbnQuTGlkZW50IFwibG9hZF9wYXRoXCIgLT5cbiAgICAgICAgICAobGlkZW50X2xvYywgbWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGggZXhwcilcbiAgICAgIHwgXyAtPiAobGlkZW50X2xvYywgZXhwcikpXG4gICAgZmllbGRzXG5cbmxldCBtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQgcGF5bG9hZCA9XG4gIGxldCBvcGVuIEFzdF81MDEuUGFyc2V0cmVlIGluXG4gIG1hdGNoIHBheWxvYWQgd2l0aFxuICB8IFBTdHJcbiAgICAgIFtcbiAgICAgICAgKHtcbiAgICAgICAgICAgcHN0cl9kZXNjID1cbiAgICAgICAgICAgICBQc3RyX2V2YWxcbiAgICAgICAgICAgICAgICgoeyBwZXhwX2Rlc2MgPSBQZXhwX3JlY29yZCAoZmllbGRzLCBOb25lKSB9IGFzIGV4cHIpLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgIH0gYXMgc3RyaSk7XG4gICAgICBdIC0+XG4gICAgICBsZXQgbmV3X2ZpZWxkcyA9IG1pZ3JhdGVfcHB4X2NvbnRleHRfZmllbGRzIGZpZWxkcyBpblxuICAgICAgbGV0IG5ld19leHByID0geyBleHByIHdpdGggcGV4cF9kZXNjID0gUGV4cF9yZWNvcmQgKG5ld19maWVsZHMsIE5vbmUpIH0gaW5cbiAgICAgIFBTdHIgWyB7IHN0cmkgd2l0aCBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKG5ld19leHByLCBhdHRyaWJ1dGVzKSB9IF1cbiAgfCBfIC0+IHBheWxvYWRcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNTAyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIGxldCBwZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2MgaW5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfbG9jIHBleHBfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgbG9jIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvblxuICAgICAgICAoIFtdLFxuICAgICAgICAgIE5vbmUsXG4gICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGZ1bmN0aW9uX2Nhc2VzIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDAsIGxvYywgW10pIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1biAoYXJnX2xhYmVsLCBvcHRfZGVmYXVsdCwgcGF0LCBleHByKSAtPlxuICAgICAgbGV0IHRha2VfYm9keSAoZSA6IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24pID1cbiAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gY2FzZV9saXN0IC0+XG4gICAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZnVuY3Rpb25fY2FzZXNcbiAgICAgICAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X2Nhc2UgY2FzZV9saXN0LFxuICAgICAgICAgICAgICAgIGUucGV4cF9sb2MsXG4gICAgICAgICAgICAgICAgY29weV9hdHRyaWJ1dGVzIGUucGV4cF9hdHRyaWJ1dGVzIClcbiAgICAgICAgfCBfIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9ib2R5IChjb3B5X2V4cHJlc3Npb24gZSlcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIHRha2VfYXJndW1lbnRzIGFjYyAoZSA6IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24pID1cbiAgICAgICAgaWYgZS5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgICAgICAgICgqIFRoZSBhdHRyaWJ1dGUgbGlzdCBpcyBub3QgZW1wdHksIG5vbmUgb2YgdGhlc2Ugbm9kZXMgY291bGQgaGF2ZVxuICAgICAgICAgICAgIGJlZW4gY3JlYXRlZCBieSB0aGUgZG93bndhcmQgbWlncmF0aW9uLiBFeGNlcHQgZm9yIFtQZXhwX2Z1bl0sIGZvclxuICAgICAgICAgICAgIHdoaWNoIHdlIGFkZCBhIGdob3N0IGF0dHJpYnV0ZSB0byBoZWxwIHVzIHJvdW5kdHJpcC4gKilcbiAgICAgICAgICBsZXQgXywgYXR0cnMgPVxuICAgICAgICAgICAgZXh0cmFjdF9hdHRyIFwicHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1wiIGUucGV4cF9hdHRyaWJ1dGVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgIE5vbmUsXG4gICAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZnVuY3Rpb25fYm9keVxuICAgICAgICAgICAgICAoY29weV9leHByZXNzaW9uIHsgZSB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGF0dHJzIH0pIClcbiAgICAgICAgZWxzZVxuICAgICAgICAgICgqIFRoZXNlIG5vZGVzIGFyZSBsaWtlbHkgdG8gaGF2ZSBiZWVuIHN5bnRoZXRpemVkIGR1cmluZyB0aGVcbiAgICAgICAgICAgICBkb3dud2FyZCBtaWdyYXRpb24uICopXG4gICAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW4gKGFyZ19sYWJlbCwgb3B0X2RlZmF1bHQsIHBhdCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgdGFrZV9hcmd1bWVudHNfZnVuIGFjYyBhcmdfbGFiZWwgb3B0X2RlZmF1bHQgcGF0IGV4cHJcbiAgICAgICAgICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAodCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhcmFtX2xvYyA9IHQubG9jO1xuICAgICAgICAgICAgICAgICAgcHBhcmFtX2Rlc2MgPSBQcGFyYW1fbmV3dHlwZSB0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6OiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgdGFrZV9hcmd1bWVudHMgYWNjIGV4cHJcbiAgICAgICAgICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoZXhwLCBjdCkgLT5cbiAgICAgICAgICAgICAgKCogVGhlc2UgdHdvIGV4cHJlc3Npb24gYXJlIHJlcHJlc2VudGVkIHRoZSBzYW1lIG9uIDUuMSBidXRcbiAgICAgICAgICAgICAgICAgZGlmZmVyZW50bHkgb24gNS4yOlxuICAgICAgICAgICAgICAgICB7W1xuICAgICAgICAgICAgICAgICAgIGxldCBfID0gZnVuIHggOiAoXyAtPiBpbnQpIC0+IGZ1biB5IC0+IHgreVxuICAgICAgICAgICAgICAgICAgIGxldCBfID0gZnVuIHggLT4gKChmdW4geSAtPiB4K3kpIDogXyAtPiBpbnQpXG4gICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAgICAgIFdlIG5vcm1hbGl6ZSB0aGUgc2Vjb25kIGludG8gdGhlIGZpcnN0IHdoZW4gbWlncmF0aW5nIHRvIDUuMixcbiAgICAgICAgICAgICAgICAgbWFraW5nIHRoZSBtaWdyYXRpb24gNS4yLT41LjEtPjUuMiBub3Qgcm91bmR0cmlwIGJ1dCBob3BlZnVsbHlcbiAgICAgICAgICAgICAgICAgd2l0aG91dCBjaGFuZ2UgaW4gc2VtYW50aWNzLiAqKVxuICAgICAgICAgICAgICBsZXQgY3QgPVxuICAgICAgICAgICAgICAgIFNvbWUgKEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdHJhaW50IChjb3B5X2NvcmVfdHlwZSBjdCkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhY2MsIGN0LCB0YWtlX2JvZHkgZXhwKVxuICAgICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKGV4cCwgYzEsIGMyKSAtPlxuICAgICAgICAgICAgICAoKiBTYW1lIGFzIGFib3ZlLCBtaWdodCBub3Qgcm91bmR0cmlwIGJ1dCBob3BlZnVsbHkgT0suICopXG4gICAgICAgICAgICAgIGxldCBjMSA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgYzFcbiAgICAgICAgICAgICAgYW5kIGMyID0gY29weV9jb3JlX3R5cGUgYzIgaW5cbiAgICAgICAgICAgICAgKGFjYywgU29tZSAoQXN0XzUwMi5QYXJzZXRyZWUuUGNvZXJjZSAoYzEsIGMyKSksIHRha2VfYm9keSBleHApXG4gICAgICAgICAgfCBfIC0+IChhY2MsIE5vbmUsIHRha2VfYm9keSBlKVxuICAgICAgYW5kIHRha2VfYXJndW1lbnRzX2Z1biBhY2MgYXJnX2xhYmVsIG9wdF9kZWZhdWx0IHBhdCBleHByID1cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgbGV0IHBwYXJhbV9kZXNjID1cbiAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXJhbV92YWxcbiAgICAgICAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCBhcmdfbGFiZWwsXG4gICAgICAgICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gb3B0X2RlZmF1bHQsXG4gICAgICAgICAgICAgICAgY29weV9wYXR0ZXJuIHBhdCApXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBCZXN0LWVmZm9ydCBsb2NhdGlvbi4gKilcbiAgICAgICAgICB7IEFzdF81MDIuUGFyc2V0cmVlLnBwYXJhbV9sb2MgPSBwYXQucHBhdF9sb2M7IHBwYXJhbV9kZXNjIH0gOjogYWNjXG4gICAgICAgIGluXG4gICAgICAgIHRha2VfYXJndW1lbnRzIGFjYyBleHByXG4gICAgICBpblxuICAgICAgKCogVGhlIGFyZ3VtZW50IGxpc3QgcmV0dXJuZWQgYnkgW3Rha2VfYXJndW1lbnRzXSBpcyByZXZlcnNlZCAqKVxuICAgICAgbGV0IGFyZ19saXN0LCB0eXBlX2NvbnN0cmFpbnQsIGJvZHkgPVxuICAgICAgICB0YWtlX2FyZ3VtZW50c19mdW4gW10gYXJnX2xhYmVsIG9wdF9kZWZhdWx0IHBhdCBleHByXG4gICAgICBpblxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5yZXYgYXJnX2xpc3QsIHR5cGVfY29uc3RyYWludCwgYm9keSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMi5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLmxldF87IEFzdF81MDEuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAyLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDIuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDIuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50ID1cbiAgICAgIE9wdGlvbi5tYXAgY29weV92YWx1ZV9jb25zdHJhaW50IHB2Yl9jb25zdHJhaW50O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMi5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV92YWx1ZV9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOyB0eXAgfSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnRcbiAgICAgICAge1xuICAgICAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7XG4gICAgICAgICAgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwO1xuICAgICAgICB9XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9IC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdmNfY29lcmNpb25cbiAgICAgICAge1xuICAgICAgICAgIGdyb3VuZCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgZ3JvdW5kO1xuICAgICAgICAgIGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNpb247XG4gICAgICAgIH1cblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hbGlhc1xuICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIHsgQXN0XzUwMi5Bc3R0eXBlcy50eHQgPSB4MTsgbG9jID0geDAucHR5cF9sb2MgfSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID1cbiAgICAgIChtYXRjaCBhdHRyX25hbWUudHh0IHdpdGhcbiAgICAgIHwgXCJvY2FtbC5wcHguY29udGV4dFwiIC0+XG4gICAgICAgICAgY29weV9wYXlsb2FkIChtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQgYXR0cl9wYXlsb2FkKVxuICAgICAgfCBfIC0+IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQpO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAyLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAyLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDIuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDIuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMi5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDIuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMi5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDIuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMi5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAyLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDIuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDIuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMi5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMi5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAyLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMi5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDEuQXN0dHlwZXMudHh0OyBBc3RfNTAxLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMi5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDIuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiA0LjE0IGFuZCA1LjAgZnJvbSBhIFBhcnNldHJlZSBwb2ludCBvZiB2aWV3IGFyZSB0aGUgbWFnaWMgbnVtYmVycyAqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RfNDE0LkFzdHR5cGVzXG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdF80MTQuUGFyc2V0cmVlXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzJcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzJcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMVxubW9kdWxlIFRvID0gQXN0XzUwMFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF81MDEuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF81MDAuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5sZXRfOyBBc3RfNTAxLlBhcnNldHJlZS5hbmRzOyBBc3RfNTAxLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuVXB0byAtPiBBc3RfNTAwLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNTAwLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzUwMS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAgbGV0IG1lcmdlX2xvYyBsZWZ0IHJpZ2h0ID1cbiAgICBMb2NhdGlvbi5cbiAgICAgIHsgbG9jX3N0YXJ0ID0gbGVmdC5sb2Nfc3RhcnQ7IGxvY19lbmQgPSByaWdodC5sb2NfZW5kOyBsb2NfZ2hvc3QgPSBmYWxzZSB9XG4gIGluXG4gIGxldCBnaG9zdF9sb2MgbG9jID0geyBsb2Mgd2l0aCBMb2NhdGlvbi5sb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgbGV0IGdob3N0X2NvbnN0cmFpbnQgcGF0IHR5cCA9XG4gICAgbGV0IHBwYXRfbG9jID1cbiAgICAgIGdob3N0X2xvY1xuICAgICAgICAobWVyZ2VfbG9jIHBhdC5Bc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvYyB0eXAuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2MpXG4gICAgaW5cbiAgICB7XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIHBwYXRfbG9jO1xuICAgICAgcHBhdF9kZXNjID0gQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChwYXQsIHR5cCk7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgIH1cbiAgaW5cbiAgbGV0IHB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdCBhbmQgcHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgbGV0IGNvbnN0cmFpbl9wYXQgcGF0IHR5cCBleHByID1cbiAgICBsZXQgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwIGluXG4gICAgbGV0IHB2Yl9wYXQgPSBnaG9zdF9jb25zdHJhaW50IHBhdCB0eXAgaW5cbiAgICAocHZiX3BhdCwgcHZiX2V4cHIpXG4gIGluXG4gIGxldCBwdmJfcGF0LCBwdmJfZXhwciA9XG4gICAgbWF0Y2ggKHB2Yl9jb25zdHJhaW50LCBwdmJfcGF0KSB3aXRoXG4gICAgfCAoIFNvbWVcbiAgICAgICAgICAoUHZjX2NvbnN0cmFpbnRcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID0gW107XG4gICAgICAgICAgICAgIHR5cCA9IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IF8gfSBhcyB0eXA7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgeyBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBQcGF0X3ZhciBfOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9ICkgLT5cbiAgICAgICAgKCogdGhlIHN1Z2FyaW5nIG9mIFtsZXQgeDogdW5pdmFycyAuIHR5cCA9IGV4cCBdIHdhcyBkZXN1Z2FyZWQgdG9cbiAgICAgICAgICAgW2xldCAoeDp1bml2YXJzIC4gdHlwKSA9IGV4cF0gaW4gNS4wIHdoaWNoIGRvZXNuJ3QgZml0IHRoZSBjYXNlIGJlbG93ICopXG4gICAgICAgIGNvbnN0cmFpbl9wYXQgcHZiX3BhdCB0eXAgcHZiX2V4cHJcbiAgICB8ICggU29tZSAoUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7IHR5cCB9KSxcbiAgICAgICAgeyBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBQcGF0X3ZhciBfOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9ICkgLT5cbiAgICAgICAgKCogQ29waWVkIGFuZCBhZGFwdGVkIGZyb20gT0NhbWwgNS4wIEFzdF9oZWxwZXIgKilcbiAgICAgICAgbGV0IHZhcmlmeV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICAgICAgICAgIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi5Mb2NhdGlvbi50eHQpIHZhcl9uYW1lcyBpblxuICAgICAgICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgICAgICAgIGxldCBkZXNjID1cbiAgICAgICAgICAgICAgbWF0Y2ggdC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gICAgICAgICAgICAgIHwgUHR5cF92YXIgeCAtPiBQdHlwX3ZhciB4XG4gICAgICAgICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICAgICAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICAgICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgICAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgICAgICAgICAoIExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgIGZsYWcsXG4gICAgICAgICAgICAgICAgICAgICAgbGJsX2xzdF9vcHRpb24gKVxuICAgICAgICAgICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgICAgICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9wYWNrYWdlXG4gICAgICAgICAgICAgICAgICAgIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gICAgICAgICAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICAgICAgICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICAgICAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPlxuICAgICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICAgICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICAgICAgICAgIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgICAgICAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgICAgICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIHQpIC0+XG4gICAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgbG9vcCB0KVxuICAgICAgICAgICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IGZpZWxkIHdpdGggcG9mX2Rlc2MgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgbG9vcCB0XG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXAgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gbWVyZ2VfbG9jIHB2Yl9wYXQucHBhdF9sb2MgcHZiX2V4cHIucGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID1cbiAgICAgICAgICBtYXRjaCBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgd2l0aFxuICAgICAgICAgIHwgW10gLT4gZ2hvc3RfbG9jIHR5cC5wdHlwX2xvY1xuICAgICAgICAgIHwgXyA6OiBfIC0+IGdob3N0X2xvYyBwZXhwX2xvY1xuICAgICAgICBpblxuICAgICAgICBsZXQgdHlwX3BvbHkgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cCB3aXRoXG4gICAgICAgICAgICBwdHlwX2xvYztcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9kZXNjID1cbiAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgICAgICAgICAgKCBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMsXG4gICAgICAgICAgICAgICAgICB2YXJpZnlfY29uc3RydWN0b3JzIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyB0eXAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG5cbiAgICAgICAgbGV0IHBwYXRfbG9jID1cbiAgICAgICAgICBnaG9zdF9sb2NcbiAgICAgICAgICAgIChtZXJnZV9sb2MgcHZiX3BhdC5Bc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY1xuICAgICAgICAgICAgICAgdHlwLkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHZiX3BhdCA9IHsgKGdob3N0X2NvbnN0cmFpbnQgcHZiX3BhdCB0eXBfcG9seSkgd2l0aCBwcGF0X2xvYyB9XG4gICAgICAgIGFuZCBwdmJfZXhwciA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gZXhwciB2YXIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGV4cHIgd2l0aFxuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jO1xuICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHZhciwgZXhwcik7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHB2Yl9leHByIHdpdGhcbiAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgIHBleHBfbG9jO1xuICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cmFpbnQgKHB2Yl9leHByLCB0eXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKExpc3QucmV2IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycylcbiAgICAgICAgaW5cbiAgICAgICAgKHB2Yl9wYXQsIHB2Yl9leHByKVxuICAgIHwgU29tZSAoUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSBbXTsgdHlwIH0pLCBfIC0+XG4gICAgICAgIGNvbnN0cmFpbl9wYXQgcHZiX3BhdCB0eXAgcHZiX2V4cHJcbiAgICB8IFNvbWUgKFB2Y19jb2VyY2lvbiB7IGdyb3VuZDsgY29lcmNpb24gfSksIF8gLT5cbiAgICAgICAgbGV0IGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNpb24gaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gZ2hvc3RfbG9jIGNvZXJjaW9uLnB0eXBfbG9jIGluXG4gICAgICAgIGxldCB0eXAgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvZXJjaW9uIHdpdGhcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHkgKFtdLCBjb2VyY2lvbik7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHZiX3BhdCA9IGdob3N0X2NvbnN0cmFpbnQgcHZiX3BhdCB0eXAgaW5cbiAgICAgICAgbGV0IGdyb3VuZCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgZ3JvdW5kIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IG1lcmdlX2xvYyBwdmJfcGF0LnBwYXRfbG9jIHB2Yl9leHByLnBleHBfbG9jIGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHZiX2V4cHIgd2l0aFxuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29lcmNlIChwdmJfZXhwciwgZ3JvdW5kLCBjb2VyY2lvbik7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICAocHZiX3BhdCwgcHZiX2V4cHIpXG4gICAgfCBfIC0+IChwdmJfcGF0LCBwdmJfZXhwcilcbiAgaW5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF81MDAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF81MDEuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzUwMC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbGV0IGxvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2MgaW5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBsb2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfbG9jID0gbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBsb2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4MSA9IGNvcHlfbW9kdWxlX2V4cHIgeDEgaW5cbiAgICAgIGxldCB4MSA9XG4gICAgICAgIG1hdGNoIHgxLnBtb2RfZGVzYyB3aXRoXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgW10gLT5cbiAgICAgICAgICAgIGxldCBsb2MgPSB7IHgxLnBtb2RfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9XG4gICAgICAgICAgICAgICAgICB7IHR4dCA9IFwicHB4bGliLm1pZ3JhdGlvbi5rZWVwX3N0cnVjdHVyZVwiOyBsb2MgfTtcbiAgICAgICAgICAgICAgICBhdHRyX3BheWxvYWQgPSBBc3RfNTAwLlBhcnNldHJlZS5QU3RyIFtdO1xuICAgICAgICAgICAgICAgIGF0dHJfbG9jID0gbG9jO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDo6IHgxLnBtb2RfYXR0cmlidXRlc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgeDEgd2l0aCBwbW9kX2F0dHJpYnV0ZXMgfVxuICAgICAgICB8IF8gLT4geDFcbiAgICAgIGluXG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgeDAgLT5cbiAgICAgIGxldCBlbXB0eV9zdHJ1Y3QgPVxuICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSBQbW9kX3N0cnVjdHVyZSBbXTtcbiAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGVtcHR5X3N0cnVjdClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzUwMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF81MDAuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF81MDAuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzUwMC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3ZhcnMgPVxuICAgICAgTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSBwY2RfdmFycztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF81MDAuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF81MDAuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNTAwLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNTAxLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF81MDAuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF81MDAuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF81MDAuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF81MDEuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF81MDAuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNTAwLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNTAwLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF81MDAuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF81MDAuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF81MDEuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNTAxLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF81MDAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNTAxLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW5jdGlvblxuICB8IExvbmdpZGVudC5MaWRlbnQgeDAgLT4gTG9uZ2lkZW50LkxpZGVudCB4MFxuICB8IExvbmdpZGVudC5MZG90ICh4MCwgeDEpIC0+IExvbmdpZGVudC5MZG90IChjb3B5X0xvbmdpZGVudF90IHgwLCB4MSlcbiAgfCBMb25naWRlbnQuTGFwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBMb25naWRlbnQuTGFwcGx5IChjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF81MDAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNTAxLkFzdHR5cGVzLnR4dDsgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF81MDAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNTAwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPVxuIGZ1biB7IExvY2F0aW9uLmxvY19zdGFydDsgTG9jYXRpb24ubG9jX2VuZDsgTG9jYXRpb24ubG9jX2dob3N0IH0gLT5cbiAge1xuICAgIExvY2F0aW9uLmxvY19zdGFydCA9IGNvcHlfcG9zaXRpb24gbG9jX3N0YXJ0O1xuICAgIExvY2F0aW9uLmxvY19lbmQgPSBjb3B5X3Bvc2l0aW9uIGxvY19lbmQ7XG4gICAgTG9jYXRpb24ubG9jX2dob3N0O1xuICB9XG5cbmFuZCBjb3B5X3Bvc2l0aW9uIDogTGV4aW5nLnBvc2l0aW9uIC0+IExleGluZy5wb3NpdGlvbiA9XG4gZnVuIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH0gLT5cbiAgeyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfVxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF81MDBcbm1vZHVsZSBUbyA9IEFzdF81MDFcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzUwMC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNTAwLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNTAxLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUubGV0XzsgQXN0XzUwMC5QYXJzZXRyZWUuYW5kczsgQXN0XzUwMC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF81MDEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gICgqIENvcGllZCBhbmQgYWRhcHRlZCBmcm9tIE9DYW1sIDUuMCBBc3RfaGVscGVyICopXG4gIGxldCB2YXJpZnlfY29uc3RydWN0b3JzIHZhcl9uYW1lcyB0ID1cbiAgICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYuTG9jYXRpb24udHh0KSB2YXJfbmFtZXMgaW5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBsZXQgZGVzYyA9XG4gICAgICAgIG1hdGNoIHQuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIHggLT4gUHR5cF92YXIgeFxuICAgICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pXG4gICAgICAgICAgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lcyAtPlxuICAgICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+IFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPiBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pXG4gICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX3BhY2thZ2VcbiAgICAgICAgICAgICAgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICAgIGluXG4gICAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgICAgbGV0IHByZl9kZXNjID1cbiAgICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+XG4gICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgdCkgLT5cbiAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gICAgaW5cbiAgICBsb29wIHRcbiAgaW5cbiAgKCogTWF0Y2ggdGhlIGZvcm0gb2YgdGhlIGV4cHIgYW5kIHBhdHRlcm4gdG8gZGVjaWRlIHRoZSB2YWx1ZSBvZlxuICAgICBbcHZiX2NvbnN0cmFpbnRdLiBBZGFwdGVkIGZyb20gT0NhbWwgNS4wIFBQcmludGVyLiAqKVxuICBsZXQgdHl2YXJzX3N0ciB0eXZhcnMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi5Mb2NhdGlvbi50eHQpIHR5dmFycyBpblxuICBsZXQgcmVzdWdhcmFibGVfdmFsdWVfYmluZGluZyBwIGUgPVxuICAgIGxldCB2YWx1ZV9wYXR0ZXJuID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID1cbiAgICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAoICh7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF8gfSBhcyBwYXQpLFxuICAgICAgICAgICAgICh7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoYXJnc190eXZhcnMsIHJ0KSB9IGFzIHR5X2V4dCkgKTtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICBhc3NlcnQgKG1hdGNoIHJ0LnB0eXBfZGVzYyB3aXRoIFB0eXBfcG9seSBfIC0+IGZhbHNlIHwgXyAtPiB0cnVlKTtcbiAgICAgICAgICBsZXQgdHkgPSBtYXRjaCBhcmdzX3R5dmFycyB3aXRoIFtdIC0+IHJ0IHwgXyAtPiB0eV9leHQgaW5cbiAgICAgICAgICBgVmFyIChwYXQsIGFyZ3NfdHl2YXJzLCBydCwgdHkpXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cmFpbnQgKHBhdCwgcnQpO1xuICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIGBOb25WYXIgKHBhdCwgcnQpXG4gICAgICB8IF8gLT4gYE5vbmVcbiAgICBpblxuICAgIGxldCByZWMgdmFsdWVfZXhwIHR5dmFycyBlID1cbiAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgfCB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gUGV4cF9uZXd0eXBlICh0eXZhciwgZSk7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgdmFsdWVfZXhwICh0eXZhciA6OiB0eXZhcnMpIGVcbiAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgIFNvbWUgKExpc3QucmV2IHR5dmFycywgZSwgY3QpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IHZhbHVlX2V4cCA9IHZhbHVlX2V4cCBbXSBlIGluXG4gICAgbWF0Y2ggKHZhbHVlX3BhdHRlcm4sIHZhbHVlX2V4cCkgd2l0aFxuICAgIHwgYFZhciAocCwgcHRfdHl2YXJzLCBwdF9jdCwgZXh0ZXJuX2N0KSwgU29tZSAoZV90eXZhcnMsIGlubmVyX2UsIGVfY3QpXG4gICAgICB3aGVuIHR5dmFyc19zdHIgcHRfdHl2YXJzID0gdHl2YXJzX3N0ciBlX3R5dmFycyAtPlxuICAgICAgICBsZXQgZXR5ID0gdmFyaWZ5X2NvbnN0cnVjdG9ycyBlX3R5dmFycyBlX2N0IGluXG4gICAgICAgIGlmIGV0eSA9IHB0X2N0IHRoZW5cbiAgICAgICAgICBgRGVzdWdhcmVkX2xvY2FsbHlfYWJzdHJhY3QgKHAsIHB0X3R5dmFycywgZV9jdCwgaW5uZXJfZSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgICgqIHRoZSBleHByZXNzaW9uIGNvbnN0cmFpbnQgYW5kIHRoZSBwYXR0ZXJuIGNvbnN0cmFpbnQsXG4gICAgICAgICAgICAgZG9uJ3QgbWF0Y2gsIGJ1dCB3ZSBzdGlsbCBoYXZlIGEgUHR5cF9wb2x5IHBhdHRlcm4gY29uc3RyYWludCB0aGF0XG4gICAgICAgICAgICAgc2hvdWxkIGJlIHJlc3VnYXJlZCB0byBhIHZhbHVlIGJpbmRpbmcgKilcbiAgICAgICAgICBgVW5pdmFycyAocCwgcHRfdHl2YXJzLCBleHRlcm5fY3QsIGUpXG4gICAgfCBgVmFyIChwLCBwdF90eXZhcnMsIHB0X2N0LCBleHRlcm5fY3QpLCBfIC0+XG4gICAgICAgIGBVbml2YXJzIChwLCBwdF90eXZhcnMsIGV4dGVybl9jdCwgZSlcbiAgICB8IGBOb25WYXIgKHBhdCwgY3QpLCBfIC0+IGBOb25WYXIgKHBhdCwgY3QsIGUpXG4gICAgfCBfIC0+IGBOb25lXG4gIGluXG4gIGxldCB3aXRoX2NvbnN0cmFpbnQgdHlfdmFycyB0eXAgPVxuICAgIGxldCB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXAgaW5cbiAgICBTb21lXG4gICAgICAoQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnRcbiAgICAgICAgIHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID0gdHlfdmFyczsgdHlwIH0pXG4gIGluXG4gIGxldCBwdmJfcGF0LCBwdmJfZXhwciwgcHZiX2NvbnN0cmFpbnQgPVxuICAgIG1hdGNoIHJlc3VnYXJhYmxlX3ZhbHVlX2JpbmRpbmcgcHZiX3BhdCBwdmJfZXhwciB3aXRoXG4gICAgfCBgRGVzdWdhcmVkX2xvY2FsbHlfYWJzdHJhY3QgKHAsIHR5X3ZhcnMsIHR5cCwgZSkgLT5cbiAgICAgICAgKHAsIGUsIHdpdGhfY29uc3RyYWludCB0eV92YXJzIHR5cClcbiAgICB8IGBVbml2YXJzIChwYXQsIFtdLCBjdCwgZXhwcikgLT4gKFxuICAgICAgICAoKiBjaGVjayBpZiB3ZSBhcmUgaW4gdGhlIFtsZXQgeCA6IHR5PyA6PiBjb2VyID0gZXhwciBdIGNhc2UgKilcbiAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvZXJjZSAoZXhwciwgZ3IsIGNvZXJjZSk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgICAgICAtPlxuICAgICAgICAgICAgbGV0IGdyb3VuZCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgZ3IgaW5cbiAgICAgICAgICAgIGxldCBjb2VyY2lvbiA9IGNvcHlfY29yZV90eXBlIGNvZXJjZSBpblxuICAgICAgICAgICAgbGV0IHB2Yl9jb25zdHJhaW50ID1cbiAgICAgICAgICAgICAgU29tZSAoQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChwYXQsIGV4cHIsIHB2Yl9jb25zdHJhaW50KVxuICAgICAgICB8IF8gLT4gKHBhdCwgZXhwciwgd2l0aF9jb25zdHJhaW50IFtdIGN0KSlcbiAgICB8IGBVbml2YXJzIChwYXQsIF8sIGN0LCBleHByKSAtPiAocGF0LCBleHByLCB3aXRoX2NvbnN0cmFpbnQgW10gY3QpXG4gICAgfCBgTm9uVmFyIChwLCB0eXAsIGUpIC0+IChwLCBlLCB3aXRoX2NvbnN0cmFpbnQgW10gdHlwKVxuICAgIHwgYE5vbmUgLT4gKHB2Yl9wYXQsIHB2Yl9leHByLCBOb25lKVxuICBpblxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAxLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAwLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4MSwgaXNfdW5pdCA9XG4gICAgICAgIG1hdGNoIHgxLnBtb2RfZGVzYyB3aXRoXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgW10gLT5cbiAgICAgICAgICAgIGxldCByZWMgZXh0cmFjdF9hdHRyIGFjYyA6IEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gXyA9XG4gICAgICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgW10gLT4gKExpc3QucmV2IGFjYywgdHJ1ZSlcbiAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICBhdHRyX25hbWUgPSB7IHR4dCA9IFwicHB4bGliLm1pZ3JhdGlvbi5rZWVwX3N0cnVjdHVyZVwiOyBfIH07XG4gICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6OiBxIC0+XG4gICAgICAgICAgICAgICAgICAoTGlzdC5yZXZfYXBwZW5kIGFjYyBxLCBmYWxzZSlcbiAgICAgICAgICAgICAgfCBoZCA6OiB0bCAtPiBleHRyYWN0X2F0dHIgKGhkIDo6IGFjYykgdGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzLCBiID0gZXh0cmFjdF9hdHRyIFtdIHgxLnBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICAgICAgKHsgeDEgd2l0aCBwbW9kX2F0dHJpYnV0ZXMgfSwgYilcbiAgICAgICAgfCBfIC0+ICh4MSwgZmFsc2UpXG4gICAgICBpblxuICAgICAgaWYgaXNfdW5pdCB0aGVuIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgICAgIGVsc2VcbiAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF81MDEuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF81MDEuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzUwMS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3ZhcnMgPVxuICAgICAgTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSBwY2RfdmFycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF81MDEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF81MDEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNTAxLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNTAwLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF81MDEuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF81MDEuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF81MDEuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF81MDAuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNTAxLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNTAxLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF81MDEuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF81MDEuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF81MDAuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNTAwLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNTAwLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW5jdGlvblxuICB8IExvbmdpZGVudC5MaWRlbnQgeDAgLT4gTG9uZ2lkZW50LkxpZGVudCB4MFxuICB8IExvbmdpZGVudC5MZG90ICh4MCwgeDEpIC0+IExvbmdpZGVudC5MZG90IChjb3B5X0xvbmdpZGVudF90IHgwLCB4MSlcbiAgfCBMb25naWRlbnQuTGFwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBMb25naWRlbnQuTGFwcGx5IChjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF81MDEuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNTAwLkFzdHR5cGVzLnR4dDsgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF81MDEuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNTAxLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPVxuIGZ1biB7IExvY2F0aW9uLmxvY19zdGFydDsgTG9jYXRpb24ubG9jX2VuZDsgTG9jYXRpb24ubG9jX2dob3N0IH0gLT5cbiAge1xuICAgIExvY2F0aW9uLmxvY19zdGFydCA9IGNvcHlfcG9zaXRpb24gbG9jX3N0YXJ0O1xuICAgIExvY2F0aW9uLmxvY19lbmQgPSBjb3B5X3Bvc2l0aW9uIGxvY19lbmQ7XG4gICAgTG9jYXRpb24ubG9jX2dob3N0O1xuICB9XG5cbmFuZCBjb3B5X3Bvc2l0aW9uIDogTGV4aW5nLnBvc2l0aW9uIC0+IExleGluZy5wb3NpdGlvbiA9XG4gZnVuIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH0gLT5cbiAgeyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNTAwXG5tb2R1bGUgVG8gPSBBc3RfNDE0XG5cbigqJCBvcGVuIEFzdGxpYl9jaW5hcHNfaGVscGVycyAkKilcblxuKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgUHJpbnRmLnByaW50ZlxuICAgICAgICBcImxldCBjb3B5XyVzXFxuXFxcbiAgICAgICAgXFwgIDogQXN0XzUwMC5QYXJzZXRyZWUuJXMgLT4gQXN0XzQxNC5QYXJzZXRyZWUuJXNcXG5cXFxuICAgICAgICBcXCAgPSBmdW4geCAtPiB4XFxuXFxuXCJcbiAgICAgICAgcyBzIHNcbiAgKVxuKilcbmxldCBjb3B5X3N0cnVjdHVyZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3RvcGxldmVsX3BocmFzZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NvcmVfdHlwZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHJlc3Npb25cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3BhdHRlcm5cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm5cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2Nhc2VcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3JcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2V4cHJcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2ZpZWxkXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV9leHByXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV90eXBlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3N0cnVjdHVyZV9pdGVtXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbigqJCopXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MTRcbm1vZHVsZSBUbyA9IEFzdF81MDBcblxuKCokIG9wZW4gQXN0bGliX2NpbmFwc19oZWxwZXJzICQqKVxuXG4oKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBQcmludGYucHJpbnRmXG4gICAgICAgIFwibGV0IGNvcHlfJXNcXG5cXFxuICAgICAgICBcXCAgOiBBc3RfNDE0LlBhcnNldHJlZS4lcyAtPiBBc3RfNTAwLlBhcnNldHJlZS4lc1xcblxcXG4gICAgICAgIFxcICA9IGZ1biB4IC0+IHhcXG5cXG5cIlxuICAgICAgICBzIHMgc1xuICApXG4qKVxubGV0IGNvcHlfc3RydWN0dXJlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY29yZV90eXBlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwcmVzc2lvblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfcGF0dGVyblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVyblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2FzZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2FzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZXhwclxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZmllbGRcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX2V4cHJcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX3R5cGVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc3RydWN0dXJlX2l0ZW1cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxuKCokKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuXG4gICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIChbXSwgUClcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgQyAodHlwZSBhIGIpIFAgICBTb21lIChbYTsgYl0sIFApXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAoKiAobW9kdWxlIFApICAgICAgICBTb21lIFwiUFwiXG4gICAgICAgKG1vZHVsZSBfKSAgICAgICAgTm9uZVxuXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXRcbiAgICAoKiAoKSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIChYIDogTVQpICAgICAgICAgIFNvbWUgWCwgTVRcbiAgICAgICAoXyA6IE1UKSAgICAgICAgICBOb25lLCBNVCAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTIDo9ICAuLi4gICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiB3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIHdpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmQgKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzBcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzBcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxNFxubW9kdWxlIFRvID0gQXN0XzQxM1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjEzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxNC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLmxldF87IEFzdF80MTQuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTQuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTMuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTQuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxNC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDE0LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPiAoXG4gICAgICBtYXRjaCB4MCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gICAgICB8IGhkIDo6IF8gLT5cbiAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgaGQubG9jIFwidHlwZSBwYXJhbWV0ZXJzIGluIGV4dGVuc2lvbiBjb25zdHJ1Y3RvcnNcIilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIG1hdGNoIHBjZF92YXJzIHdpdGhcbiAgfCBbXSAtPlxuICAgICAge1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gICAgICB9XG4gIHwgaGQgOjogXyAtPiBtaWdyYXRpb25fZXJyb3IgaGQubG9jIFwicGNkX3ZhcnMgaW4gY29uc3RydWN0b3IgZGVjbGFyYXRpb25zXCJcblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxNC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDE0LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTQuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTQuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTQuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDE0LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxNC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTMuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDE0LkFzdHR5cGVzLnR4dDsgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTMuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxM1xubW9kdWxlIFRvID0gQXN0XzQxNFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTMuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTQuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEzLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEzLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDE0LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDE0LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxNC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxNC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTQuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTQuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChbXSwgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxNC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3ZhcnMgPSBbXTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTQuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTQuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDE0LkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTQuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTQuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTQuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTQuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDE0LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDE0LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTQuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTQuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTQuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTMuQXN0dHlwZXMudHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxNC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTQuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuXG4gICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAoKiAobW9kdWxlIFApICAgICAgICBTb21lIFwiUFwiXG4gICAgICAgKG1vZHVsZSBfKSAgICAgICAgTm9uZVxuXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXRcbiAgICAoKiAoKSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIChYIDogTVQpICAgICAgICAgIFNvbWUgWCwgTVRcbiAgICAgICAoXyA6IE1UKSAgICAgICAgICBOb25lLCBNVCAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI5XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI5XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTNcbm1vZHVsZSBUbyA9IEFzdF80MTJcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4xM1wiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTMuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEzLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEzLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEyLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEyLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAobWF0Y2ggeDAgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICAgIHwgdHkgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgbWlncmF0aW9uX2Vycm9yIHR5LkFzdF80MTMuQXN0dHlwZXMubG9jXG4gICAgICAgICAgICAgICAgICAgIFwiZXhpc3RlbnRpYWxzIGluIHBhdHRlcm4tbWF0Y2hpbmdcIik7XG4gICAgICAgICAgICAgIGNvcHlfcGF0dGVybiB4MSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEyLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlIChfeDAsIHgxKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgxLkFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jIFwibW9kdWxlIHR5cGUgc3Vic3RpdHV0aW9uXCJcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKF94MCwgeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDEuQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2NcbiAgICAgICAgXCJkZXN0cnVjdGl2ZSBtb2R1bGUgdHlwZSBzdWJzdGl0dXRpb25cIlxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5Bc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvY1xuICAgICAgICBcImxvY2FsIG1vZHVsZSB0eXBlIHN1YnN0aXR1dGlvblwiXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEyLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxMi5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTIuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTIuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMlxubW9kdWxlIFRvID0gQXN0XzQxM1xuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTIuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEyLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEyLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEzLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEzLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IChbXSwgY29weV9wYXR0ZXJuIHgpKSB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTMuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTMuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEyLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTIuQXN0dHlwZXMudHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjhcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjhcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMlxubW9kdWxlIFRvID0gQXN0XzQxMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTIuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEyLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEyLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDExLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDExLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDExLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgXyA9IHgxIGluXG4gICAgICAgICAgICBjb3B5X3ZhcmlhbmNlIHgwICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgXyA9IHgxIGluXG4gICAgICAgICAgICBjb3B5X3ZhcmlhbmNlIHgwICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIF8gPSB4MSBpblxuICAgICAgICAgICAgY29weV92YXJpYW5jZSB4MCApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTEuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEyLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTIuQXN0dHlwZXMudHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDExXG5tb2R1bGUgVG8gPSBBc3RfNDEyXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLmxldF87IEFzdF80MTEuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTIuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIChjb3B5X3ZhcmlhbmNlIHgxLCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkpKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEyLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIChjb3B5X3ZhcmlhbmNlIHgxLCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkpKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCAoY29weV92YXJpYW5jZSB4MSwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5KSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMS5Bc3R0eXBlcy50eHQ7IEFzdF80MTEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAoKiAobW9kdWxlIFApICAgICAgICBTb21lIFwiUFwiXG4gICAgICAgKG1vZHVsZSBfKSAgICAgICAgTm9uZVxuXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXRcbiAgICAoKiAoKSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIChYIDogTVQpICAgICAgICAgIFNvbWUgWCwgTVRcbiAgICAgICAoXyA6IE1UKSAgICAgICAgICBOb25lLCBNVCAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjdcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjdcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMVxubW9kdWxlIFRvID0gQXN0XzQxMFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwciB4ID0gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5sZXRfOyBBc3RfNDExLlBhcnNldHJlZS5hbmRzOyBBc3RfNDExLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEwLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEwLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSBsaXN0IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdCB4ID0gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXAgeCA9IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEwLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEwLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTAuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgXywgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMS5Bc3R0eXBlcy50eHQ7IEFzdF80MTEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEwLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTBcbm1vZHVsZSBUbyA9IEFzdF80MTFcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHIgeCA9IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMC5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgbGlzdCAtPiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXQgeCA9IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwIHggPSBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTEuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDExLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIExvY2F0aW9uLm5vbmUsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTAuQXN0dHlwZXMudHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcblxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCB0eXAgPSBjb3JlX3R5cGVcblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgIChtb2R1bGUgUylcbiAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdCA9IHBhdHRlcm5cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgKCogKG1vZHVsZSBQKVxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHIgPSBleHByZXNzaW9uXG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzXG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGNhc2VzID0gY2FzZSBsaXN0XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgfCBDID0gRFxuICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgdmFsIHg6IFRcbiAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyNlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyNlwiXG5lbmRcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQxMFxubW9kdWxlIFRvID0gQXN0XzQwOVxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjEwXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCBtYXBfb3B0aW9uIGYgeCA9IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZyA9IG1hcF9vcHRpb24gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBOb25lIC0+IG1pZ3JhdGlvbl9lcnJvciB4MC5sb2MgXCJhbm9ueW1vdXMgbGV0IG1vZHVsZVwiXG4gICAgICAgICAgICAgIHwgU29tZSB4IC0+IHgpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEwLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDA5LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDA5LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0IC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2NcbiAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBOb25lIC0+IG1pZ3JhdGlvbl9lcnJvciB4MC5sb2MgXCJhbnlueW1vdXMgdW5wYWNrXCIgfCBTb21lIHggLT4geClcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDogQXN0XzQxMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gTG9jYXRpb24udCBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvY1xuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgfCBOb25lIC0+IG1pZ3JhdGlvbl9lcnJvciBwbWJfbmFtZS5sb2MgXCJhbm9ueW1vdXMgbW9kdWxlIGJpbmRpbmdcIilcbiAgICAgICAgcG1iX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeCwgeSA9IGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAgaW5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeCwgeSwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPlxuICAgIHN0cmluZyBBc3RfNDA5LkFzdHR5cGVzLmxvYyAqIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlIG9wdGlvbiA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuVW5pdCAtPiAoeyBsb2MgPSBMb2NhdGlvbi5ub25lOyB0eHQgPSBcIipcIiB9LCBOb25lKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICAoIGNvcHlfbG9jIChmdW5jdGlvbiBOb25lIC0+IFwiX1wiIHwgU29tZSB4IC0+IHgpIHgwLFxuICAgICAgICBTb21lIChjb3B5X21vZHVsZV90eXBlIHgxKSApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgsIHkgPSBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwIGluXG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgsIHksIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MDkuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlID0gbWFwX29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvY1xuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHBtZF9uYW1lLmxvYyBcImFub255bW91cyBtb2R1bGUgZGVjbGFyYXRpb25cIlxuICAgICAgICAgIHwgU29tZSB4IC0+IHgpXG4gICAgICAgIHBtZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MDkuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX3JlcyA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTAuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MDkuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEwLkFzdHR5cGVzLnR4dDsgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MDkuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQwOVxubW9kdWxlIFRvID0gQXN0XzQxMFxuXG5sZXQgbWFwX29wdGlvbiBmIHggPSBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmcgPSBtYXBfb3B0aW9uIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5sZXRfOyBBc3RfNDA5LlBhcnNldHJlZS5hbmRzOyBBc3RfNDA5LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEwLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEwLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkID0gbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCAobWF0Y2ggKHgwLnR4dCwgeDEpIHdpdGhcbiAgICAgICAgICB8IFwiKlwiLCBOb25lIC0+IFVuaXRcbiAgICAgICAgICB8IFwiX1wiLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIF8gLT4gTm9uZSkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIChtYXRjaCAoeDAudHh0LCB4MSkgd2l0aFxuICAgICAgICAgIHwgXCIqXCIsIE5vbmUgLT4gVW5pdFxuICAgICAgICAgIHwgXCJfXCIsIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4gXyAtPiBOb25lKSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8sIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IG1hcF9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXMgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEwLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTAuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MDkuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEwLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBc3QgcG9ydGVkIG9uIFRodSBNYXIgMjEgMDk6NTA6NDIgR01UIDIwMTlcbiAgIE9DYW1sIHdhczpcbiAgIGNvbW1pdCA1NWM5YmE0NjYzNjJmMzAzZWI0ZDVlZDUxMWY2ZmRhMTQyODc5MTM3IChIRUFEIC0+IDQuMDgsIG9yaWdpbi80LjA4KVxuICAgICBBdXRob3I6IE5pY29sw6FzIE9qZWRhIELDpHIgPG4ub2plLmJhckBnbWFpbC5jb20+XG4gICAgIERhdGU6ICAgVHVlIE1hciAxOSAwODoxMTowMiAyMDE5ICswMTAwXG5cbiAgICAgICAgIE1lcmdlIHB1bGwgcmVxdWVzdCAjODUyMSBmcm9tIG5vamIvZml4X3VuaXhfdGVzdHNfNDA4XG5cbiAgICAgICAgIEFjdHVhbGx5IHJ1biBhbGwgbGliLXVuaXggdGVzdHMgWzQuMDhdXG4qKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5cbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgdHlwID0gY29yZV90eXBlXG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAobW9kdWxlIFMpXG4gICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXQgPSBwYXR0ZXJuXG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICgqIChtb2R1bGUgUClcbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByID0gZXhwcmVzc2lvblxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlc1xuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBjYXNlcyA9IGNhc2UgbGlzdFxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgIHwgQyA9IERcbiAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgIHZhbCB4OiBUXG4gICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjVcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjVcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQwOVxubW9kdWxlIFRvID0gQXN0XzQwOFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfdHlwIDogQXN0XzQwOS5QYXJzZXRyZWUudHlwIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cCA9XG4gZnVuIHggLT4gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9wYXQgOiBBc3RfNDA5LlBhcnNldHJlZS5wYXQgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF0ID1cbiBmdW4geCAtPiBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9leHByIDogQXN0XzQwOS5QYXJzZXRyZWUuZXhwciAtPiBBc3RfNDA4LlBhcnNldHJlZS5leHByID1cbiBmdW4geCAtPiBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChjb3B5X2Nhc2VzIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQwOC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLmxldF87IEFzdF80MDkuUGFyc2V0cmVlLmFuZHM7IEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDA4LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MDguQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MDguQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2FzZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDA4LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MDguQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDguUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQwOC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MDguQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MDguQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDA4LkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDA4LkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDA4LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDA4LkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDA4LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MDguQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MDguQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQwOC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDA4LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MDguUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MDguQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MDguQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDA4LkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQwOFxubW9kdWxlIFRvID0gQXN0XzQwOVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfdHlwIDogQXN0XzQwOC5QYXJzZXRyZWUudHlwIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cCA9XG4gZnVuIHggLT4gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9wYXQgOiBBc3RfNDA4LlBhcnNldHJlZS5wYXQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0ID1cbiBmdW4geCAtPiBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9leHByIDogQXN0XzQwOC5QYXJzZXRyZWUuZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByID1cbiBmdW4geCAtPiBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChjb3B5X2Nhc2VzIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQwOC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLmxldF87IEFzdF80MDguUGFyc2V0cmVlLmFuZHM7IEFzdF80MDguUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MDkuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MDguQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQwOC5QYXJzZXRyZWUuY2FzZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MDguUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MDguQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MDguQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MDkuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQwOC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MDguQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQwOC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQwOC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MDguQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MDguUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MDkuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDA4LkFzdHR5cGVzLnR4dDsgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MDkuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBc3QgcG9ydGVkIG9uIFdlZCBBcHIgMTggMTA6MzM6MjkgQlNUIDIwMThcbiAgIE9DYW1sIHRydW5rIHdhczpcbiAgICAgY29tbWl0IGMwYmQ2YTI3ZTEzODkxMTU2MGY0M2RjNzVkNWZkZTJhZGU0ZDZjZmUgKEhFQUQsIHRhZzogNC4wNy4wK2JldGEyKVxuICAgICBBdXRob3I6IERhbWllbiBEb2xpZ2V6IDxkYW1pZW4uZG9saWdlekBpbnJpYS5mcj5cbiAgICAgRGF0ZTogICBUdWUgQXByIDEwIDE0OjUwOjQ4IDIwMTggKzAyMDBcblxuICAgICAgICAgY2hhbmdlIFZFUlNJT04gZm9yIDQuMDcuMCtiZXRhMlxuKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICAgICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIE0uKEUpXG4gICAgICAgICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyM1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyM1wiXG5lbmRcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQwOFxubW9kdWxlIFRvID0gQXN0XzQwN1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjA4XCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyXG4gICAgICB7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBkaXJfbG9jID0gXztcbiAgICAgIH0gLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpclxuICAgICAgICAoIHBkaXJfbmFtZS5Mb2NhdGlvbi50eHQsXG4gICAgICAgICAgbWF0Y2ggcGRpcl9hcmcgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBhcmcgKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBGcm9tLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBfcGRpcmFfbG9jIH0gLT5cbiAgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT4gKFxuICAgICAgbWF0Y2ggeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwci5Gcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgfCBQbW9kX2lkZW50IGxpZCAtPlxuICAgICAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlLFxuICAgICAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsaWQsXG4gICAgICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gICAgICB8IFBtb2Rfc3RydWN0dXJlIF8gfCBQbW9kX2Z1bmN0b3IgXyB8IFBtb2RfYXBwbHkgXyB8IFBtb2RfY29uc3RyYWludCBfXG4gICAgICB8IFBtb2RfdW5wYWNrIF8gfCBQbW9kX2V4dGVuc2lvbiBfIC0+XG4gICAgICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYyBcImNvbXBsZXggb3BlblwiKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0b3AgeyBsZXRfOyBhbmRzID0gXzsgYm9keSA9IF8gfSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxldF8ucGJvcF9vcC5sb2MgXCJsZXQgb3BlcmF0b3JzXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnByZl9sb2MgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIG1hdGNoIHByZl9kZXNjIHdpdGhcbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDEsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9mX2xvYyA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcG9mX2Rlc2Mgd2l0aFxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMsXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBfO1xuICAgICB9IC0+XG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lLCBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb25cbiAgICAgICAgKGxldCBlID1cbiAgICAgICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAuRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgICBpblxuICAgICAgICAge1xuICAgICAgICAgICBlIHdpdGhcbiAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID1cbiAgICAgICAgICAgICBlLnBleHRfYXR0cmlidXRlcyBAIGNvcHlfYXR0cmlidXRlcyB4MC5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgIH0pXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT4gKFxuICAgICAgbWF0Y2ggeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwci5Gcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgfCBQbW9kX2lkZW50IGxpZCAtPlxuICAgICAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxpZDtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID1cbiAgICAgICAgICAgICAgICBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgfVxuICAgICAgfCBQbW9kX3N0cnVjdHVyZSBfIHwgUG1vZF9mdW5jdG9yIF8gfCBQbW9kX2FwcGx5IF8gfCBQbW9kX2NvbnN0cmFpbnQgX1xuICAgICAgfCBQbW9kX3VucGFjayBfIHwgUG1vZF9leHRlbnNpb24gXyAtPlxuICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9sb2MgXCJjb21wbGV4IG9wZW5cIilcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwcixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEgKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgbGV0IHgwX2xvYyA9XG4gICAgICAgIG1hdGNoIHgwIHdpdGhcbiAgICAgICAgfCBbXSAtPiBMb2NhdGlvbi5ub25lXG4gICAgICAgIHwgeyBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7IF8gfSA6OiBfIC0+IHB0eXBlX2xvY1xuICAgICAgaW5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MF9sb2MgXCJ0eXBlIHN1YnN0aXR1dGlvbiBpbiBzaWduYXR1cmVzXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb25cbiAgICAgICAgKGxldCBlID1cbiAgICAgICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAuRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgICBpblxuICAgICAgICAge1xuICAgICAgICAgICBlIHdpdGhcbiAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID1cbiAgICAgICAgICAgICBlLnBleHRfYXR0cmlidXRlcyBAIGNvcHlfYXR0cmlidXRlcyB4MC5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgIH0pXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLnBtc19sb2MgXCJtb2R1bGUgc3Vic3RpdHV0aW9uIGluIHNpZ25hdHVyZXNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIsXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgxIClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIGxldCB4MSA9XG4gICAgbWF0Y2ggeDAudHh0IHdpdGhcbiAgICB8IFwib2NhbWwuZXJyb3JcIiB8IFwiZXJyb3JcIiAtPiAoXG4gICAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgICAgfCBQU3RyIChoZCA6OiB0bCkgLT4gRnJvbS5QYXJzZXRyZWUuUFN0ciAoaGQgOjogaGQgOjogdGwpXG4gICAgICAgIHwgXyAtPiB4MSlcbiAgICB8IF8gLT4geDFcbiAgaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuKCogYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiAgIGZ1blxuICAgICB7IEZyb20uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9IHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleG5fbG9jID0gcHR5ZXhuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IHB0eWV4bl9hdHRyaWJ1dGVzIH1cbiAgICAgIC0+XG4gICAgIHtcbiAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3IpO1xuICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fbG9jID0gKGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYyk7XG4gICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID1cbiAgICAgICAgIChjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMpXG4gICAgIH0qKVxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQwN1xubW9kdWxlIFRvID0gQXN0XzQwOFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucGRpcl9uYW1lID1cbiAgICAgICAgICAgIHsgTG9jYXRpb24udHh0ID0geDA7IExvY2F0aW9uLmxvYyA9IExvY2F0aW9uLm5vbmUgfTtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucGRpcl9hcmcgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MTtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucGRpcl9sb2MgPSBMb2NhdGlvbi5ub25lO1xuICAgICAgICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uXG4gICAgPVxuICBsZXQgd3JhcCBwZGlyYV9kZXNjID1cbiAgICBTb21lIHsgVG8uUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IFRvLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBMb2NhdGlvbi5ub25lIH1cbiAgaW5cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gTm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSkgfD4gd3JhcFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MCkgfD4gd3JhcFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApIHw+IHdyYXBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IFtdO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPVxuICAgICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKTtcbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHgwO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IFtdO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IFtdO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9kZXNjID1cbiAgICAgICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfYm9vbCB4MiwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMpO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2xvYyA9IHgwLkxvY2F0aW9uLmxvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHgxO1xuICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfZGVzYyA9IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9kZXNjID1cbiAgICAgICAgICBUby5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDIpO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2xvYyA9IHgwLkxvY2F0aW9uLmxvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHgxO1xuICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfZGVzYyA9IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIHtcbiAgICBUby5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwO1xuICAgIFRvLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgeDE7XG4gICAgVG8uUGFyc2V0cmVlLmF0dHJfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIGxldCBhdGF0LCBhdCA9XG4gICAgICAgIExpc3QucGFydGl0aW9uXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IHsgTG9jYXRpb24udHh0ID0gXCJvY2FtbC5kZXByZWNhdGVkXCIgfCBcImRlcHJlY2F0ZWRcIjsgXyB9LCBfIC0+XG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgIHwgXyAtPiB0cnVlKVxuICAgICAgICAgIHgwLnBleHRfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIGxldCB4MCA9IHsgeDAgd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBhdCB9IGluXG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb25cbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MDtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBhdGF0O1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW5cbiAgICAgIHtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgfSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID1cbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkKTtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gcG9wZW5fbG9jO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHgwO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDIgKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICBsZXQgZmllbGRzID1cbiAgICBMaXN0LnNvcnRcbiAgICAgIChmdW4gKGEgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCkgKGIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCkgLT5cbiAgICAgICAgY29tcGFyZSBhLnBjZl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtIGIucGNmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0pXG4gICAgICBwY3N0cl9maWVsZHNcbiAgaW5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgbGV0IGF0YXQsIGF0ID1cbiAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgeyBMb2NhdGlvbi50eHQgPSBcIm9jYW1sLmRlcHJlY2F0ZWRcIiB8IFwiZGVwcmVjYXRlZFwiOyBfIH0sIF8gLT5cbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgfCBfIC0+IHRydWUpXG4gICAgICAgICAgeDAucGV4dF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbGV0IHgwID0geyB4MCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IGF0IH0gaW5cblxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDA7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgYXRhdDtcbiAgICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID0gY29weV9sb2MgY29weV9sb25naWRlbnQgeDE7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSB4MiApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIGxldCBmaWVsZHMgPVxuICAgIExpc3Quc29ydFxuICAgICAgKGZ1biAoYSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQpXG4gICAgICAgICAgIChiIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCkgLT5cbiAgICAgICAgY29tcGFyZSBhLnBjdGZfbG9jLmxvY19zdGFydC5wb3NfY251bSBiLnBjdGZfbG9jLmxvY19zdGFydC5wb3NfY251bSlcbiAgICAgIHBjc2lnX2ZpZWxkc1xuICBpblxuXG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBmaWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICBsZXQgeDEgPVxuICAgIG1hdGNoIHgwLnR4dCB3aXRoXG4gICAgfCBcIm9jYW1sLmVycm9yXCIgfCBcImVycm9yXCIgLT4gKFxuICAgICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICAgIHwgUFN0ciAoaGQgOjogXyA6OiB0bCkgLT4gRnJvbS5QYXJzZXRyZWUuUFN0ciAoaGQgOjogdGwpXG4gICAgICAgIHwgXyAtPiB4MSlcbiAgICB8IF8gLT4geDFcbiAgaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBwdHlleHRfcGF0aC5Mb2NhdGlvbi5sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQXN0IHBvcnRlZCBvbiBNb24gT2N0ICAyIDExOjI1OjU3IENFU1QgMjAxN1xuICAgT0NhbWwgdHJ1bmsgd2FzOlxuICAgICBjb21taXQgNjU5NDBhMmM2YmU0M2M0MmY3NWM2YzZiMjU1OTc0ZjdlNmRlMDNjYSAoSEVBRCAtPiA0LjA2LCBvcmlnaW4vNC4wNilcbiAgICAgQXV0aG9yOiBDaHJpc3RvcGhlIFJhZmZhbGxpIDxjaHJpc3RvcGhlQHJhZmZhbGxpLmV1PlxuICAgICBEYXRlOiAgIFN1biBPY3QgMSAxODoyNzowNyAyMDE3ICswMjAwXG5cbiAgICAgICAgIGZpeGVkIHBvc2l0aW9uIG9mIGxhc3Qgb3B0aW9uYWwgbGFzdCBzZW1pY29sdW1uIGluIHNlcXVlbmNlICgjMTM4NylcbiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBNLihFKVxuICAgICAgICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjJcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjJcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA3XG5tb2R1bGUgVG8gPSBBc3RfNDA2XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IHggLT4gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4KVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAob3ZmLCBsb2MsIGNlKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsIGNvcHlfY2xhc3NfZXhwciBjZSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAob3ZmLCBsb2MsIGN0eSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYyxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgY3R5IClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDZcbm1vZHVsZSBUbyA9IEFzdF80MDdcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeCAtPiBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgpXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChvdmYsIGxvYywgY2UpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYywgY29weV9jbGFzc19leHByIGNlKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuIChvdmYsIGxvYywgY3R5KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSBjdHkgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiAoc3RyaW5nIGxvYyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgICAgICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogTS4oRSlcbiAgICAgICAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgW0BpZDFdIFtAaWQyXSA6IFQgKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjBcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA2XG5tb2R1bGUgVG8gPSBBc3RfNDA1XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDZcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MiApXG4gICAgICAgICAgICAgIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgbWlncmF0aW9uX2Vycm9yIExvY2F0aW9uLm5vbmUgXCJpbmhlcml0YW5jZSBpbiBvYmplY3QgdHlwZVwiKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLnR4dCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAoXywgbG9jLCBfKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYy5Mb2NhdGlvbi5sb2MgXCJtb2R1bGUgb3BlbiBpbiBjbGFzcyBleHByZXNzaW9uXCJcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgXzsgXyB9LCB4MCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHgwOyBsb2MgfSwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHsgdHh0ID0geDA7IGxvYyB9LCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHsgbG9jOyBfIH0sIF94MCkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJ0eXBlIHN1YnN0aXR1dGlvbiBpbnNpZGUgYSBzdWJtb2R1bGVcIlxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh7IGxvYzsgXyB9LCBfeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwibW9kdWxlIHN1YnN0aXR1dGlvbiBpbnNpZGUgYSBzdWJtb2R1bGVcIlxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuIChfLCBsb2MsIF8pIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jLkxvY2F0aW9uLmxvYyBcIm1vZHVsZSBvcGVuIGluIGNsYXNzIHR5cGVcIlxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNVxubW9kdWxlIFRvID0gQXN0XzQwNlxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCB7IHR4dCA9IGNvcHlfbGFiZWwgeDA7IGxvYyA9IExvY2F0aW9uLm5vbmUgfSxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeDAuRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZSxcbiAgICAgICAgICBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDAgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBMb25naWRlbnQuTGlkZW50IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiAoc3RyaW5nICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmdcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgW0BpZDFdIFtAaWQyXSA6IFQgKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKHN0cmluZyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIwXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE4XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNVxubW9kdWxlIFRvID0gQXN0XzQwNFxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEuRnJvbS5Bc3R0eXBlcy50eHQpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MC5Gcm9tLkFzdHR5cGVzLnR4dCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLkZyb20uQXN0dHlwZXMudHh0LCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4geC5Gcm9tLkFzdHR5cGVzLnR4dCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IHguRnJvbS5Bc3R0eXBlcy50eHQpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIHgwLkZyb20uQXN0dHlwZXMudHh0LFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggeDAuRnJvbS5Bc3R0eXBlcy50eHQsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDRcbm1vZHVsZSBUbyA9IEFzdF80MDVcblxubGV0IG5vbG9jIHggPSB7IExvY2F0aW9uLnR4dCA9IHg7IGxvYyA9IExvY2F0aW9uLm5vbmUgfVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbm9sb2MgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChub2xvYyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKG5vbG9jIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4gbm9sb2MgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IG5vbG9jIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIG5vbG9jIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggbm9sb2MgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiBBdXhpbGlhcnkgYS5zLnQuIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiAoc3RyaW5nICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZ1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgW0BpZDFdIFtAaWQyXSA6IFQgKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKHN0cmluZyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDE5XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE4XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNFxubW9kdWxlIFRvID0gQXN0XzQwM1xuXG5sZXQgZnJvbV9sb2MgeyBMb2NhdGlvbi50eHQgPSBfOyBsb2MgfSA9IGxvY1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjA0XCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9sb2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwibG9jYWwgZXhjZXB0aW9uc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9sb2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwibW9kdWxlIG9wZW4gaW4gcGF0dGVybnNcIlxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwM1xubW9kdWxlIFRvID0gQXN0XzQwNFxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqIEF1eGlsaWFyeSBhLnMudC4gdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGxhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgKGxhYmVsID0gXCJcIilcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICAobGFiZWwgPSBcImxcIilcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICAobGFiZWwgPSBcIj9sXCIpXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiAoc3RyaW5nICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwibFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgbGFiIG11c3Qgc3RhcnQgd2l0aCAnPycuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChsYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZ1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG5cbiAgICBOb3RlOiB3aGVuIHVzZWQgdW5kZXIgUHN0cl9wcmltaXRpdmUsIHByaW0gY2Fubm90IGJlIGVtcHR5XG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29yZV90eXBlIGxpc3Q7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoYXJncyA9IFtdLCByZXMgPSBTb21lIFQwKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvcmVfdHlwZSBsaXN0ICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGxhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgKGxhYmVsID0gXCJcIilcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIChsYWJlbCA9IFwibFwiKVxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgKGxhYmVsID0gXCI/bFwiKVxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIlwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJsXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChsYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBpbnRcbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMTZcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMTVcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDAzXG5tb2R1bGUgVG8gPSBBc3RfNDAyXG5cbmxldCBpbmplY3RfcHJlZGVmX29wdGlvbiBsYWJlbCBkID1cbiAgbGV0IG9wZW4gVG8gaW5cbiAgbGV0IG9wZW4gUGFyc2V0cmVlIGluXG4gIG1hdGNoIGxhYmVsIHdpdGhcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIF8gLT5cbiAgICAgIGxldCBsb2MgPSB7IGQucHR5cF9sb2Mgd2l0aCBMb2NhdGlvbi5sb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgIGxldCB0eHQgPSBMb25naWRlbnQuTGRvdCAoTG9uZ2lkZW50LkxpZGVudCBcIipwcmVkZWYqXCIsIFwib3B0aW9uXCIpIGluXG4gICAgICBsZXQgaWRlbnQgPSB7IExvY2F0aW9uLnR4dDsgbG9jIH0gaW5cbiAgICAgIHtcbiAgICAgICAgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkZW50LCBbIGQgXSk7XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH1cbiAgfCBfIC0+IGRcblxubGV0IGZyb21fbG9jIHsgTG9jYXRpb24udHh0ID0gXzsgbG9jIH0gPSBsb2NcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wM1wiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfbG9jIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgbG9jIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwidW5yZWFjaGFibGUgcGF0dGVybnNcIlxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9sb2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgbG9jIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IGxvYyB4MCwgY29weV9jb25zdGFudCBsb2MgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgaW5qZWN0X3ByZWRlZl9vcHRpb24geDAgKGNvcHlfY29yZV90eXBlIHgxKSxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgKGZyb21fbG9jIHgwKSB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCBsb2MgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIF94MCAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwic2lnbmF0dXJlcyBpbiBhdHRyaWJ1dGVcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlICh0eXBlX2RlY2xhcmF0aW9ucyB4MCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZSAodHlwZV9kZWNsYXJhdGlvbnMgeDAgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBpbmplY3RfcHJlZGVmX29wdGlvbiB4MCAoY29weV9jb3JlX3R5cGUgeDEpLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIChmcm9tX2xvYyB4MCkgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKGZyb21fbG9jIHBleHRfbmFtZSkgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBsb2MgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID1cbiAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIChmcm9tX2xvYyBwY2RfbmFtZSkgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSBsaXN0ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPiBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCBfeDAgLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImlubGluZSByZWNvcmRzXCJcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFwiXCJcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBcIj9cIiBeIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCBsb2MgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5Bc3R0eXBlcy5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT4gKFxuICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgfCBOb25lIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2ludCAoaW50X29mX3N0cmluZyB4MClcbiAgICAgIHwgU29tZSAnbCcgLT4gVG8uQXN0dHlwZXMuQ29uc3RfaW50MzIgKEludDMyLm9mX3N0cmluZyB4MClcbiAgICAgIHwgU29tZSAnTCcgLT4gVG8uQXN0dHlwZXMuQ29uc3RfaW50NjQgKEludDY0Lm9mX3N0cmluZyB4MClcbiAgICAgIHwgU29tZSAnbicgLT4gVG8uQXN0dHlwZXMuQ29uc3RfbmF0aXZlaW50IChOYXRpdmVpbnQub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImN1c3RvbSBpbnRlZ2VyIGxpdGVyYWxzXCIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uQXN0dHlwZXMuQ29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT4gVG8uQXN0dHlwZXMuQ29uc3Rfc3RyaW5nICh4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+IChcbiAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBUby5Bc3R0eXBlcy5Db25zdF9mbG9hdCB4MFxuICAgICAgfCBTb21lIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImN1c3RvbSBmbG9hdCBsaXRlcmFsc1wiKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9ucyByZWNmbGFnIHR5cGVzID1cbiAgbWF0Y2ggKHJlY2ZsYWcsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB0eXBlcykgd2l0aFxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlLCB0eXBlcyAtPiB0eXBlc1xuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlLCBbXSAtPiBbXVxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlLCB4IDo6IHhzIC0+XG4gICAgICBsZXQgcG9zID1cbiAgICAgICAge1xuICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIl9ub25lX1wiO1xuICAgICAgICAgIHBvc19sbnVtID0gMTtcbiAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICBwb3NfY251bSA9IC0xO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGxvYyA9IHsgTG9jYXRpb24ubG9jX3N0YXJ0ID0gcG9zOyBsb2NfZW5kID0gcG9zOyBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID1cbiAgICAgICAgKHsgVG8uQXN0dHlwZXMudHh0ID0gXCJub25yZWNcIjsgbG9jIH0sIFRvLlBhcnNldHJlZS5QU3RyIFtdKVxuICAgICAgICA6OiB4LlRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgeyB4IHdpdGggVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgfSA6OiB4c1xuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBfeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKGludF9vZl9zdHJpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDAyXG5tb2R1bGUgVG8gPSBBc3RfNDAzXG5cbmxldCBleHRyYWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgdHlwID1cbiAgbGV0IG9wZW4gRnJvbSBpblxuICBsZXQgb3BlbiBMb25naWRlbnQgaW5cbiAgbWF0Y2ggKGxhYmVsLCB0eXAuUGFyc2V0cmVlLnB0eXBfZGVzYykgd2l0aFxuICB8ICggVG8uQXN0dHlwZXMuT3B0aW9uYWwgXyxcbiAgICAgIEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgICh7IExvY2F0aW9uLnR4dCA9IExkb3QgKExpZGVudCBcIipwcmVkZWYqXCIsIFwib3B0aW9uXCIpOyBfIH0sIFsgZCBdKSApIC0+XG4gICAgICBkXG4gIHwgXyAtPiB0eXBcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgbGV0IGxhYmVsID0gY29weV9hcmdfbGFiZWwgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgICggbGFiZWwsXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgKGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB4MSksXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgeDAgLT5cbiAgICAgIGxldCByZWNmbGFnLCB0eXBlcyA9IHR5cGVfZGVjbGFyYXRpb25zIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlIChyZWNmbGFnLCB0eXBlcylcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSB4MCAtPlxuICAgICAgbGV0IHJlY2ZsYWcsIHR5cGVzID0gdHlwZV9kZWNsYXJhdGlvbnMgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHJlY2ZsYWcsIHR5cGVzKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIGxldCBsYWJlbCA9IGNvcHlfYXJnX2xhYmVsIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoIGxhYmVsLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIChleHRyYWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgeDEpLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKSxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPVxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfYXJncyk7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID1cbiBmdW4geCAtPlxuICBpZiB4IDw+IFwiXCIgdGhlblxuICAgIGlmIHguWzBdID0gJz8nIHRoZW5cbiAgICAgIFRvLkFzdHR5cGVzLk9wdGlvbmFsIChTdHJpbmcuc3ViIHggMSAoU3RyaW5nLmxlbmd0aCB4IC0gMSkpXG4gICAgZWxzZSBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4XG4gIGVsc2UgVG8uQXN0dHlwZXMuTm9sYWJlbFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uQXN0dHlwZXMuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2ludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChzdHJpbmdfb2ZfaW50IHgwLCBOb25lKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9mbG9hdCB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgTm9uZSlcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2ludDMyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKEludDMyLnRvX3N0cmluZyB4MCwgU29tZSAnbCcpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9pbnQ2NCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChJbnQ2NC50b19zdHJpbmcgeDAsIFNvbWUgJ0wnKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfbmF0aXZlaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKE5hdGl2ZWludC50b19zdHJpbmcgeDAsIFNvbWUgJ24nKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9ucyB0eXBlcyA9XG4gIGxldCBpc19ub25yZWMgKGF0dHIsIF8pID0gYXR0ci5Mb2NhdGlvbi50eHQgPSBcIm5vbnJlY1wiIGluXG4gIG1hdGNoIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB0eXBlcyB3aXRoXG4gIHwgeCA6OiB4cyB3aGVuIExpc3QuZXhpc3RzIGlzX25vbnJlYyB4LlRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzIC0+XG4gICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9XG4gICAgICAgIExpc3QuZmlsdGVyIChmdW4geCAtPiBub3QgKGlzX25vbnJlYyB4KSkgeC5Uby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIChUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIHsgeCB3aXRoIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzIH0gOjogeHMpXG4gIHwgdHlwZXMgLT4gKFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZSwgdHlwZXMpXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHN0cmluZ19vZl9pbnQgeDAsIE5vbmUpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCJsZXQgaXNfa2V5d29yZCA9IGZ1bmN0aW9uXG4gIHwgXCJhbmRcIiAtPiB0cnVlXG4gIHwgXCJhc1wiIC0+IHRydWVcbiAgfCBcImFzc2VydFwiIC0+IHRydWVcbiAgfCBcImJlZ2luXCIgLT4gdHJ1ZVxuICB8IFwiY2xhc3NcIiAtPiB0cnVlXG4gIHwgXCJjb25zdHJhaW50XCIgLT4gdHJ1ZVxuICB8IFwiZG9cIiAtPiB0cnVlXG4gIHwgXCJkb25lXCIgLT4gdHJ1ZVxuICB8IFwiZG93bnRvXCIgLT4gdHJ1ZVxuICB8IFwiZWxzZVwiIC0+IHRydWVcbiAgfCBcImVuZFwiIC0+IHRydWVcbiAgfCBcImV4Y2VwdGlvblwiIC0+IHRydWVcbiAgfCBcImV4dGVybmFsXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiB0cnVlXG4gIHwgXCJmb3JcIiAtPiB0cnVlXG4gIHwgXCJmdW5cIiAtPiB0cnVlXG4gIHwgXCJmdW5jdGlvblwiIC0+IHRydWVcbiAgfCBcImZ1bmN0b3JcIiAtPiB0cnVlXG4gIHwgXCJpZlwiIC0+IHRydWVcbiAgfCBcImluXCIgLT4gdHJ1ZVxuICB8IFwiaW5jbHVkZVwiIC0+IHRydWVcbiAgfCBcImluaGVyaXRcIiAtPiB0cnVlXG4gIHwgXCJpbml0aWFsaXplclwiIC0+IHRydWVcbiAgfCBcImxhenlcIiAtPiB0cnVlXG4gIHwgXCJsZXRcIiAtPiB0cnVlXG4gIHwgXCJtYXRjaFwiIC0+IHRydWVcbiAgfCBcIm1ldGhvZFwiIC0+IHRydWVcbiAgfCBcIm1vZHVsZVwiIC0+IHRydWVcbiAgfCBcIm11dGFibGVcIiAtPiB0cnVlXG4gIHwgXCJuZXdcIiAtPiB0cnVlXG4gIHwgXCJub25yZWNcIiAtPiB0cnVlXG4gIHwgXCJvYmplY3RcIiAtPiB0cnVlXG4gIHwgXCJvZlwiIC0+IHRydWVcbiAgfCBcIm9wZW5cIiAtPiB0cnVlXG4gIHwgXCJvclwiIC0+IHRydWVcbiAgKCogfCBcInBhcnNlclwiIC0+IHRydWUgKilcbiAgfCBcInByaXZhdGVcIiAtPiB0cnVlXG4gIHwgXCJyZWNcIiAtPiB0cnVlXG4gIHwgXCJzaWdcIiAtPiB0cnVlXG4gIHwgXCJzdHJ1Y3RcIiAtPiB0cnVlXG4gIHwgXCJ0aGVuXCIgLT4gdHJ1ZVxuICB8IFwidG9cIiAtPiB0cnVlXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwidHJ5XCIgLT4gdHJ1ZVxuICB8IFwidHlwZVwiIC0+IHRydWVcbiAgfCBcInZhbFwiIC0+IHRydWVcbiAgfCBcInZpcnR1YWxcIiAtPiB0cnVlXG4gIHwgXCJ3aGVuXCIgLT4gdHJ1ZVxuICB8IFwid2hpbGVcIiAtPiB0cnVlXG4gIHwgXCJ3aXRoXCIgLT4gdHJ1ZVxuICB8IFwibG9yXCIgLT4gdHJ1ZVxuICB8IFwibHhvclwiIC0+IHRydWVcbiAgfCBcIm1vZFwiIC0+IHRydWVcbiAgfCBcImxhbmRcIiAtPiB0cnVlXG4gIHwgXCJsc2xcIiAtPiB0cnVlXG4gIHwgXCJsc3JcIiAtPiB0cnVlXG4gIHwgXCJhc3JcIiAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCokIG9wZW4gQXN0bGliX2NpbmFwc19oZWxwZXJzXG4gICAgb3BlbiBQcmludGYgJCopXG5cbigqIENvcHkgb2YgT0NhbWwgcGFyc2V0cmVlcyAqKVxuKCokXG4gIGZvcmVhY2hfdmVyc2lvbiAoZnVuIHN1ZmZpeCBfIC0+XG4gICAgICBwcmludGYgXCJtb2R1bGUgQXN0XyVzID0gQXN0XyVzXFxuXCIgc3VmZml4IHN1ZmZpeClcbiopXG5tb2R1bGUgQXN0XzQwMiA9IEFzdF80MDJcbm1vZHVsZSBBc3RfNDAzID0gQXN0XzQwM1xubW9kdWxlIEFzdF80MDQgPSBBc3RfNDA0XG5tb2R1bGUgQXN0XzQwNSA9IEFzdF80MDVcbm1vZHVsZSBBc3RfNDA2ID0gQXN0XzQwNlxubW9kdWxlIEFzdF80MDcgPSBBc3RfNDA3XG5tb2R1bGUgQXN0XzQwOCA9IEFzdF80MDhcbm1vZHVsZSBBc3RfNDA5ID0gQXN0XzQwOVxubW9kdWxlIEFzdF80MTAgPSBBc3RfNDEwXG5tb2R1bGUgQXN0XzQxMSA9IEFzdF80MTFcbm1vZHVsZSBBc3RfNDEyID0gQXN0XzQxMlxubW9kdWxlIEFzdF80MTMgPSBBc3RfNDEzXG5tb2R1bGUgQXN0XzQxNCA9IEFzdF80MTRcbm1vZHVsZSBBc3RfNTAwID0gQXN0XzUwMFxubW9kdWxlIEFzdF81MDEgPSBBc3RfNTAxXG5tb2R1bGUgQXN0XzUwMiA9IEFzdF81MDJcbigqJCopXG5cbigqIE1hbnVhbCBtaWdyYXRpb24gYmV0d2VlbiB2ZXJzaW9ucyAqKVxuKCokXG4gIGZvcmVhY2hfdmVyc2lvbl9wYWlyIChmdW4geCB5IC0+XG4gICAgICBwcmludGYgXCJtb2R1bGUgTWlncmF0ZV8lc18lcyA9IE1pZ3JhdGVfJXNfJXNcXG5cIiB4IHkgeCB5O1xuICAgICAgcHJpbnRmIFwibW9kdWxlIE1pZ3JhdGVfJXNfJXMgPSBNaWdyYXRlXyVzXyVzXFxuXCIgeSB4IHkgeClcbiopXG5tb2R1bGUgTWlncmF0ZV80MDJfNDAzID0gTWlncmF0ZV80MDJfNDAzXG5tb2R1bGUgTWlncmF0ZV80MDNfNDAyID0gTWlncmF0ZV80MDNfNDAyXG5tb2R1bGUgTWlncmF0ZV80MDNfNDA0ID0gTWlncmF0ZV80MDNfNDA0XG5tb2R1bGUgTWlncmF0ZV80MDRfNDAzID0gTWlncmF0ZV80MDRfNDAzXG5tb2R1bGUgTWlncmF0ZV80MDRfNDA1ID0gTWlncmF0ZV80MDRfNDA1XG5tb2R1bGUgTWlncmF0ZV80MDVfNDA0ID0gTWlncmF0ZV80MDVfNDA0XG5tb2R1bGUgTWlncmF0ZV80MDVfNDA2ID0gTWlncmF0ZV80MDVfNDA2XG5tb2R1bGUgTWlncmF0ZV80MDZfNDA1ID0gTWlncmF0ZV80MDZfNDA1XG5tb2R1bGUgTWlncmF0ZV80MDZfNDA3ID0gTWlncmF0ZV80MDZfNDA3XG5tb2R1bGUgTWlncmF0ZV80MDdfNDA2ID0gTWlncmF0ZV80MDdfNDA2XG5tb2R1bGUgTWlncmF0ZV80MDdfNDA4ID0gTWlncmF0ZV80MDdfNDA4XG5tb2R1bGUgTWlncmF0ZV80MDhfNDA3ID0gTWlncmF0ZV80MDhfNDA3XG5tb2R1bGUgTWlncmF0ZV80MDhfNDA5ID0gTWlncmF0ZV80MDhfNDA5XG5tb2R1bGUgTWlncmF0ZV80MDlfNDA4ID0gTWlncmF0ZV80MDlfNDA4XG5tb2R1bGUgTWlncmF0ZV80MDlfNDEwID0gTWlncmF0ZV80MDlfNDEwXG5tb2R1bGUgTWlncmF0ZV80MTBfNDA5ID0gTWlncmF0ZV80MTBfNDA5XG5tb2R1bGUgTWlncmF0ZV80MTBfNDExID0gTWlncmF0ZV80MTBfNDExXG5tb2R1bGUgTWlncmF0ZV80MTFfNDEwID0gTWlncmF0ZV80MTFfNDEwXG5tb2R1bGUgTWlncmF0ZV80MTFfNDEyID0gTWlncmF0ZV80MTFfNDEyXG5tb2R1bGUgTWlncmF0ZV80MTJfNDExID0gTWlncmF0ZV80MTJfNDExXG5tb2R1bGUgTWlncmF0ZV80MTJfNDEzID0gTWlncmF0ZV80MTJfNDEzXG5tb2R1bGUgTWlncmF0ZV80MTNfNDEyID0gTWlncmF0ZV80MTNfNDEyXG5tb2R1bGUgTWlncmF0ZV80MTNfNDE0ID0gTWlncmF0ZV80MTNfNDE0XG5tb2R1bGUgTWlncmF0ZV80MTRfNDEzID0gTWlncmF0ZV80MTRfNDEzXG5tb2R1bGUgTWlncmF0ZV80MTRfNTAwID0gTWlncmF0ZV80MTRfNTAwXG5tb2R1bGUgTWlncmF0ZV81MDBfNDE0ID0gTWlncmF0ZV81MDBfNDE0XG5tb2R1bGUgTWlncmF0ZV81MDBfNTAxID0gTWlncmF0ZV81MDBfNTAxXG5tb2R1bGUgTWlncmF0ZV81MDFfNTAwID0gTWlncmF0ZV81MDFfNTAwXG5tb2R1bGUgTWlncmF0ZV81MDFfNTAyID0gTWlncmF0ZV81MDFfNTAyXG5tb2R1bGUgTWlncmF0ZV81MDJfNTAxID0gTWlncmF0ZV81MDJfNTAxXG4oKiQqKVxuXG4oKiBDb21waWxlciBtb2R1bGVzICopXG5tb2R1bGUgQXN0X21ldGFkYXRhID0gQXN0X21ldGFkYXRhXG5tb2R1bGUgQ29uZmlnID0gQ29uZmlnXG5tb2R1bGUgS2V5d29yZCA9IEtleXdvcmRcbm1vZHVsZSBMb2NhdGlvbiA9IExvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gTG9uZ2lkZW50XG5tb2R1bGUgUGFyc2UgPSBQYXJzZVxubW9kdWxlIFBwcmludGFzdCA9IFBwcmludGFzdFxuXG5sZXQgaW5pdF9lcnJvcl9yZXBvcnRpbmdfc3R5bGVfdXNpbmdfZW52X3ZhcnMgKCkgPVxuICAoKklGX0FUX0xFQVNUIDQwOCBPY2FtbF9jb21tb24uQ29tcG1pc2MucmVhZF9jbGZsYWdzX2Zyb21fZW52ICgpICopXG4gICgqSUZfTk9UX0FUX0xFQVNUIDQwOCAoKSAqKVxuKCoqIEFkanVzdCB0aGUgcmVwb3J0aW5nIHN0eWxlIG9mIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgT0NBTUxfQ09MT1IgYW5kIE9DQU1MX0VSUk9SX1NUWUxFLiAqKVxuIiwibW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUT0RPOiByZW1vdmUgdGhpcyBvcGVuICopXG5vcGVuIFN0ZGxpYjBcbm1vZHVsZSBMb2NhdGlvbiA9IEFzdGxpYi5Mb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IEFzdGxpYi5Mb25naWRlbnRcbm9wZW4gQXN0bGliLkFzdF81MDBcblxuW0BAQHdhcm5pbmcgXCItOVwiXVxuXG5vcGVuIEFzdHR5cGVzXG5vcGVuIFBhcnNldHJlZVxuXG50eXBlICdhIHdpdGhfbG9jID0gJ2EgTG9jYXRpb24ubG9jXG50eXBlIGxvYyA9IExvY2F0aW9uLnRcbnR5cGUgbGlkID0gTG9uZ2lkZW50LnQgd2l0aF9sb2NcbnR5cGUgc3RyID0gc3RyaW5nIHdpdGhfbG9jXG50eXBlIHN0cl9vcHQgPSBzdHJpbmcgb3B0aW9uIHdpdGhfbG9jXG50eXBlIGF0dHJzID0gYXR0cmlidXRlIGxpc3RcblxubGV0IGRlZmF1bHRfbG9jID0gcmVmIExvY2F0aW9uLm5vbmVcblxudHlwZSByZWZfYW5kX3ZhbHVlID0gUiA6ICdhIHJlZiAqICdhIC0+IHJlZl9hbmRfdmFsdWVcblxubGV0IHByb3RlY3RfcmVmID1cbiAgbGV0IHNldF9yZWYgKFIgKHIsIHYpKSA9IHIgOj0gdiBpblxuICBmdW4gcmVmIGYgLT5cbiAgICBsZXQgKFIgKHIsIF8pKSA9IHJlZiBpblxuICAgIGxldCBiYWNrdXAgPSBSIChyLCAhcikgaW5cbiAgICBzZXRfcmVmIHJlZjtcbiAgICBtYXRjaCBmICgpIHdpdGhcbiAgICB8IHggLT5cbiAgICAgICAgc2V0X3JlZiBiYWNrdXA7XG4gICAgICAgIHhcbiAgICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICAgIHNldF9yZWYgYmFja3VwO1xuICAgICAgICByYWlzZSBlXG5cbmxldCB3aXRoX2RlZmF1bHRfbG9jIGwgZiA9IHByb3RlY3RfcmVmIChSIChkZWZhdWx0X2xvYywgbCkpIGZcblxubW9kdWxlIENvbnN0ID0gc3RydWN0XG4gIGxldCBpbnRlZ2VyID9zdWZmaXggaSA9IFBjb25zdF9pbnRlZ2VyIChpLCBzdWZmaXgpXG4gIGxldCBpbnQgP3N1ZmZpeCBpID0gaW50ZWdlciA/c3VmZml4IChJbnQudG9fc3RyaW5nIGkpXG4gIGxldCBpbnQzMiA/KHN1ZmZpeCA9ICdsJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoSW50MzIudG9fc3RyaW5nIGkpXG4gIGxldCBpbnQ2NCA/KHN1ZmZpeCA9ICdMJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoSW50NjQudG9fc3RyaW5nIGkpXG4gIGxldCBuYXRpdmVpbnQgPyhzdWZmaXggPSAnbicpIGkgPSBpbnRlZ2VyIH5zdWZmaXggKE5hdGl2ZWludC50b19zdHJpbmcgaSlcbiAgbGV0IGZsb2F0ID9zdWZmaXggZiA9IFBjb25zdF9mbG9hdCAoZiwgc3VmZml4KVxuICBsZXQgY2hhciBjID0gUGNvbnN0X2NoYXIgY1xuXG4gIGxldCBzdHJpbmcgP3F1b3RhdGlvbl9kZWxpbWl0ZXIgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIHMgPVxuICAgIFBjb25zdF9zdHJpbmcgKHMsIGxvYywgcXVvdGF0aW9uX2RlbGltaXRlcilcbmVuZFxuXG5tb2R1bGUgQXR0ciA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIG5hbWUgcGF5bG9hZCA9XG4gICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIFR5cCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjID0gZDtcbiAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHB0eXBfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBkLnB0eXBfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGFueSA/bG9jID9hdHRycyAoKSA9IG1rID9sb2MgP2F0dHJzIFB0eXBfYW55XG4gIGxldCB2YXIgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3ZhciBhKVxuICBsZXQgYXJyb3cgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUHR5cF9hcnJvdyAoYSwgYiwgYykpXG4gIGxldCB0dXBsZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfdHVwbGUgYSlcbiAgbGV0IGNvbnN0ciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9jb25zdHIgKGEsIGIpKVxuICBsZXQgb2JqZWN0XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9vYmplY3QgKGEsIGIpKVxuICBsZXQgY2xhc3NfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2NsYXNzIChhLCBiKSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2FsaWFzIChhLCBiKSlcbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUHR5cF92YXJpYW50IChhLCBiLCBjKSlcbiAgbGV0IHBvbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfcG9seSAoYSwgYikpXG4gIGxldCBwYWNrYWdlID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3BhY2thZ2UgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHR5cF9leHRlbnNpb24gYSlcblxuICBsZXQgZm9yY2VfcG9seSB0ID1cbiAgICBtYXRjaCB0LnB0eXBfZGVzYyB3aXRoIFB0eXBfcG9seSBfIC0+IHQgfCBfIC0+IHBvbHkgfmxvYzp0LnB0eXBfbG9jIFtdIHRcbiAgKCogLT4gZ2hvc3Q/ICopXG5cbiAgbGV0IHZhcmlmeV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICAgIGxldCBjaGVja192YXJpYWJsZSB2bCBsb2MgdiA9XG4gICAgICBpZiBMaXN0Lm1lbSB2IHZsIHRoZW5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ2YXJpYWJsZSBpbiBzY29wZSBzeW50YXggZXJyb3I6ICVzXCIgdlxuICAgIGluXG4gICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LnR4dCkgdmFyX25hbWVzIGluXG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgbGV0IGRlc2MgPVxuICAgICAgICBtYXRjaCB0LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgICAgfCBQdHlwX3ZhciB4IC0+XG4gICAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB4O1xuICAgICAgICAgICAgUHR5cF92YXIgeFxuICAgICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pXG4gICAgICAgICAgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lcyAtPlxuICAgICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+IFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPlxuICAgICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2Mgc3RyaW5nO1xuICAgICAgICAgICAgUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgICAoTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKVxuICAgICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gdiAtPiBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB2LnR4dClcbiAgICAgICAgICAgICAgc3RyaW5nX2xzdDtcbiAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgaW5cbiAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgIHwgUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT4gUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICAgIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgIHwgT3RhZyAobGFiZWwsIHQpIC0+IE90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gICAgaW5cbiAgICBsb29wIHRcbmVuZFxuXG5tb2R1bGUgUGF0ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2MgPSBkO1xuICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGQucHBhdF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgYW55ID9sb2MgP2F0dHJzICgpID0gbWsgP2xvYyA/YXR0cnMgUHBhdF9hbnlcbiAgbGV0IHZhciA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdmFyIGEpXG4gIGxldCBhbGlhcyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9hbGlhcyAoYSwgYikpXG4gIGxldCBjb25zdGFudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfY29uc3RhbnQgYSlcbiAgbGV0IGludGVydmFsID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2ludGVydmFsIChhLCBiKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF90dXBsZSBhKVxuXG4gIGxldCBjb25zdHJ1Y3QgP2xvYyA/YXR0cnMgYSBiID1cbiAgICBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdHJ1Y3QgKGEsIE9wdGlvbi5tYXAgKGZ1biBiIC0+IChbXSwgYikpIGIpKVxuXG4gIGxldCB2YXJpYW50ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3ZhcmlhbnQgKGEsIGIpKVxuICBsZXQgcmVjb3JkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3JlY29yZCAoYSwgYikpXG4gIGxldCBhcnJheSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfYXJyYXkgYSlcbiAgbGV0IG9yXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9vciAoYSwgYikpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IHR5cGVfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF90eXBlIGEpXG4gIGxldCBsYXp5XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfbGF6eSBhKVxuICBsZXQgdW5wYWNrID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF91bnBhY2sgYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X29wZW4gKGEsIGIpKVxuICBsZXQgZXhjZXB0aW9uXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfZXhjZXB0aW9uIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2V4dGVuc2lvbiBhKVxuZW5kXG5cbm1vZHVsZSBFeHAgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYyA9IGQ7XG4gICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gZC5wZXhwX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfaWRlbnQgYSlcbiAgbGV0IGNvbnN0YW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb25zdGFudCBhKVxuICBsZXQgbGV0XyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xldCAoYSwgYiwgYykpXG4gIGxldCBmdW5fID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mdW4gKGEsIGIsIGMsIGQpKVxuICBsZXQgZnVuY3Rpb25fID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mdW5jdGlvbiBhKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfYXBwbHkgKGEsIGIpKVxuICBsZXQgbWF0Y2hfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX21hdGNoIChhLCBiKSlcbiAgbGV0IHRyeV8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfdHJ5IChhLCBiKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF90dXBsZSBhKVxuICBsZXQgY29uc3RydWN0ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0cnVjdCAoYSwgYikpXG4gIGxldCB2YXJpYW50ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3ZhcmlhbnQgKGEsIGIpKVxuICBsZXQgcmVjb3JkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3JlY29yZCAoYSwgYikpXG4gIGxldCBmaWVsZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9maWVsZCAoYSwgYikpXG4gIGxldCBzZXRmaWVsZCA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3NldGZpZWxkIChhLCBiLCBjKSlcbiAgbGV0IGFycmF5ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9hcnJheSBhKVxuICBsZXQgaWZ0aGVuZWxzZSA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpKVxuICBsZXQgc2VxdWVuY2UgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2VxdWVuY2UgKGEsIGIpKVxuICBsZXQgd2hpbGVfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3doaWxlIChhLCBiKSlcbiAgbGV0IGZvcl8gP2xvYyA/YXR0cnMgYSBiIGMgZCBlID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgY29lcmNlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29lcmNlIChhLCBiLCBjKSlcbiAgbGV0IHNlbmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2VuZCAoYSwgYikpXG4gIGxldCBuZXdfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9uZXcgYSlcbiAgbGV0IHNldGluc3R2YXIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2V0aW5zdHZhciAoYSwgYikpXG4gIGxldCBvdmVycmlkZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfb3ZlcnJpZGUgYSlcbiAgbGV0IGxldG1vZHVsZSA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykpXG4gIGxldCBsZXRleGNlcHRpb24gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSlcbiAgbGV0IGFzc2VydF8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Fzc2VydCBhKVxuICBsZXQgbGF6eV8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xhenkgYSlcbiAgbGV0IHBvbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfcG9seSAoYSwgYikpXG4gIGxldCBvYmplY3RfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vYmplY3QgYSlcbiAgbGV0IG5ld3R5cGUgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbmV3dHlwZSAoYSwgYikpXG4gIGxldCBwYWNrID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9wYWNrIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vcGVuIChhLCBiKSlcblxuICBsZXQgbGV0b3AgP2xvYyA/YXR0cnMgbGV0XyBhbmRzIGJvZHkgPVxuICAgIG1rID9sb2MgP2F0dHJzIChQZXhwX2xldG9wIHsgbGV0XzsgYW5kczsgYm9keSB9KVxuXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2V4dGVuc2lvbiBhKVxuICBsZXQgdW5yZWFjaGFibGUgP2xvYyA/YXR0cnMgKCkgPSBtayA/bG9jID9hdHRycyBQZXhwX3VucmVhY2hhYmxlXG4gIGxldCBjYXNlIGxocyA/Z3VhcmQgcmhzID0geyBwY19saHMgPSBsaHM7IHBjX2d1YXJkID0gZ3VhcmQ7IHBjX3JocyA9IHJocyB9XG5cbiAgbGV0IGJpbmRpbmdfb3Agb3AgcGF0IGV4cCBsb2MgPVxuICAgIHsgcGJvcF9vcCA9IG9wOyBwYm9wX3BhdCA9IHBhdDsgcGJvcF9leHAgPSBleHA7IHBib3BfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgTXR5ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBtdHlfZGVzYyA9IGQ7IHBtdHlfbG9jID0gbG9jOyBwbXR5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcG10eV9hdHRyaWJ1dGVzID0gZC5wbXR5X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfaWRlbnQgYSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9hbGlhcyBhKVxuICBsZXQgc2lnbmF0dXJlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9zaWduYXR1cmUgYSlcbiAgbGV0IGZ1bmN0b3JfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2Z1bmN0b3IgKGEsIGIpKVxuICBsZXQgd2l0aF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfd2l0aCAoYSwgYikpXG4gIGxldCB0eXBlb2ZfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV90eXBlb2YgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIE1vZCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwbW9kX2Rlc2MgPSBkOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IGQucG1vZF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgaWRlbnQgP2xvYyA/YXR0cnMgeCA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2lkZW50IHgpXG4gIGxldCBzdHJ1Y3R1cmUgP2xvYyA/YXR0cnMgeCA9IG1rID9sb2MgP2F0dHJzIChQbW9kX3N0cnVjdHVyZSB4KVxuICBsZXQgZnVuY3Rvcl8gP2xvYyA/YXR0cnMgYXJnIGJvZHkgPSBtayA/bG9jID9hdHRycyAoUG1vZF9mdW5jdG9yIChhcmcsIGJvZHkpKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgbTEgbTIgPSBtayA/bG9jID9hdHRycyAoUG1vZF9hcHBseSAobTEsIG0yKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIG0gbXR5ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfY29uc3RyYWludCAobSwgbXR5KSlcbiAgbGV0IHVucGFjayA/bG9jID9hdHRycyBlID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfdW5wYWNrIGUpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2V4dGVuc2lvbiBhKVxuZW5kXG5cbm1vZHVsZSBTaWcgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSBkID0geyBwc2lnX2Rlc2MgPSBkOyBwc2lnX2xvYyA9IGxvYyB9XG4gIGxldCB2YWx1ZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3ZhbHVlIGEpXG4gIGxldCB0eXBlXyA/bG9jIHJlY19mbGFnIGEgPSBtayA/bG9jIChQc2lnX3R5cGUgKHJlY19mbGFnLCBhKSlcbiAgbGV0IHR5cGVfc3Vic3QgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ190eXBlc3Vic3QgYSlcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfdHlwZXh0IGEpXG4gIGxldCBleGNlcHRpb25fID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfZXhjZXB0aW9uIGEpXG4gIGxldCBtb2R1bGVfID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfbW9kdWxlIGEpXG4gIGxldCBtb2Rfc3Vic3QgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19tb2RzdWJzdCBhKVxuICBsZXQgcmVjX21vZHVsZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3JlY21vZHVsZSBhKVxuICBsZXQgbW9kdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX21vZHR5cGUgYSlcbiAgbGV0IG9wZW5fID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfb3BlbiBhKVxuICBsZXQgaW5jbHVkZV8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19pbmNsdWRlIGEpXG4gIGxldCBjbGFzc18gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19jbGFzcyBhKVxuICBsZXQgY2xhc3NfdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2NsYXNzX3R5cGUgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzaWdfZXh0ZW5zaW9uIChhLCBhdHRycykpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19hdHRyaWJ1dGUgYSlcbmVuZFxuXG5tb2R1bGUgU3RyID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgZCA9IHsgcHN0cl9kZXNjID0gZDsgcHN0cl9sb2MgPSBsb2MgfVxuICBsZXQgZXZhbCA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzdHJfZXZhbCAoYSwgYXR0cnMpKVxuICBsZXQgdmFsdWUgP2xvYyBhIGIgPSBtayA/bG9jIChQc3RyX3ZhbHVlIChhLCBiKSlcbiAgbGV0IHByaW1pdGl2ZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3ByaW1pdGl2ZSBhKVxuICBsZXQgdHlwZV8gP2xvYyByZWNfZmxhZyBhID0gbWsgP2xvYyAoUHN0cl90eXBlIChyZWNfZmxhZywgYSkpXG4gIGxldCB0eXBlX2V4dGVuc2lvbiA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3R5cGV4dCBhKVxuICBsZXQgZXhjZXB0aW9uXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2V4Y2VwdGlvbiBhKVxuICBsZXQgbW9kdWxlXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX21vZHVsZSBhKVxuICBsZXQgcmVjX21vZHVsZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3JlY21vZHVsZSBhKVxuICBsZXQgbW9kdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX21vZHR5cGUgYSlcbiAgbGV0IG9wZW5fID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfb3BlbiBhKVxuICBsZXQgY2xhc3NfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfY2xhc3MgYSlcbiAgbGV0IGNsYXNzX3R5cGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9jbGFzc190eXBlIGEpXG4gIGxldCBpbmNsdWRlXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2luY2x1ZGUgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzdHJfZXh0ZW5zaW9uIChhLCBhdHRycykpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9hdHRyaWJ1dGUgYSlcbmVuZFxuXG5tb2R1bGUgQ2wgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGNsX2Rlc2MgPSBkOyBwY2xfbG9jID0gbG9jOyBwY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY2xfYXR0cmlidXRlcyA9IGQucGNsX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBjb25zdHIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9jb25zdHIgKGEsIGIpKVxuICBsZXQgc3RydWN0dXJlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNsX3N0cnVjdHVyZSBhKVxuICBsZXQgZnVuXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9mdW4gKGEsIGIsIGMsIGQpKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9hcHBseSAoYSwgYikpXG4gIGxldCBsZXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9sZXQgKGEsIGIsIGMpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9leHRlbnNpb24gYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2xfb3BlbiAoYSwgYikpXG5lbmRcblxubW9kdWxlIEN0eSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY3R5X2Rlc2MgPSBkOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IGQucGN0eV9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgY29uc3RyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2NvbnN0ciAoYSwgYikpXG4gIGxldCBzaWduYXR1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3R5X3NpZ25hdHVyZSBhKVxuICBsZXQgYXJyb3cgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGN0eV9hcnJvdyAoYSwgYiwgYykpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2V4dGVuc2lvbiBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfb3BlbiAoYSwgYikpXG5lbmRcblxubW9kdWxlIEN0ZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY3RmX2Rlc2MgPSBkOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBpbmhlcml0XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfaW5oZXJpdCBhKVxuICBsZXQgdmFsXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfdmFsIChhLCBiLCBjLCBkKSlcbiAgbGV0IG1ldGhvZF8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQY3RmX21ldGhvZCAoYSwgYiwgYywgZCkpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfZXh0ZW5zaW9uIGEpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUGN0Zl9hdHRyaWJ1dGUgYSlcbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gZC5wY3RmX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG5lbmRcblxubW9kdWxlIENmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjZl9kZXNjID0gZDsgcGNmX2xvYyA9IGxvYzsgcGNmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGluaGVyaXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9pbmhlcml0IChhLCBiLCBjKSlcbiAgbGV0IHZhbF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX3ZhbCAoYSwgYiwgYykpXG4gIGxldCBtZXRob2RfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9tZXRob2QgKGEsIGIsIGMpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGluaXRpYWxpemVyXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9pbml0aWFsaXplciBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNmX2V4dGVuc2lvbiBhKVxuICBsZXQgYXR0cmlidXRlID9sb2MgYSA9IG1rID9sb2MgKFBjZl9hdHRyaWJ1dGUgYSlcbiAgbGV0IHZpcnR1YWxfIGN0ID0gQ2ZrX3ZpcnR1YWwgY3RcbiAgbGV0IGNvbmNyZXRlIG8gZSA9IENma19jb25jcmV0ZSAobywgZSlcbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBkLnBjZl9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuZW5kXG5cbm1vZHVsZSBWYWwgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocHJpbSA9IFtdKSBuYW1lIHR5cCA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lID0gbmFtZTtcbiAgICAgIHB2YWxfdHlwZSA9IHR5cDtcbiAgICAgIHB2YWxfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcHZhbF9sb2MgPSBsb2M7XG4gICAgICBwdmFsX3ByaW0gPSBwcmltO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTWQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgdHlwID1cbiAgICB7IHBtZF9uYW1lID0gbmFtZTsgcG1kX3R5cGUgPSB0eXA7IHBtZF9hdHRyaWJ1dGVzID0gYXR0cnM7IHBtZF9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBNcyA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBzeW4gPVxuICAgIHtcbiAgICAgIHBtc19uYW1lID0gbmFtZTtcbiAgICAgIHBtc19tYW5pZmVzdCA9IHN5bjtcbiAgICAgIHBtc19hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwbXNfbG9jID0gbG9jO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTXRkID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/dHlwIG5hbWUgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZSA9IG5hbWU7XG4gICAgICBwbXRkX3R5cGUgPSB0eXA7XG4gICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBtdGRfbG9jID0gbG9jO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTWIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgZXhwciA9XG4gICAgeyBwbWJfbmFtZSA9IG5hbWU7IHBtYl9leHByID0gZXhwcjsgcG1iX2F0dHJpYnV0ZXMgPSBhdHRyczsgcG1iX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIE9wbiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhvdmVycmlkZSA9IEZyZXNoKSBleHByID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByID0gZXhwcjtcbiAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBJbmNsID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBtZXhwciA9XG4gICAgeyBwaW5jbF9tb2QgPSBtZXhwcjsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuZW5kXG5cbm1vZHVsZSBWYiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgcGF0IGV4cHIgPVxuICAgIHsgcHZiX3BhdCA9IHBhdDsgcHZiX2V4cHIgPSBleHByOyBwdmJfYXR0cmlidXRlcyA9IGF0dHJzOyBwdmJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgQ2kgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmlydCA9IENvbmNyZXRlKSA/KHBhcmFtcyA9IFtdKVxuICAgICAgbmFtZSBleHByID1cbiAgICB7XG4gICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICBwY2lfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgcGNpX25hbWUgPSBuYW1lO1xuICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBjaV9sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBUeXBlID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHBhcmFtcyA9IFtdKSA/KGNzdHJzID0gW10pXG4gICAgICA/KGtpbmQgPSBQdHlwZV9hYnN0cmFjdCkgPyhwcml2ID0gUHVibGljKSA/bWFuaWZlc3QgbmFtZSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwdHlwZV9jc3RycyA9IGNzdHJzO1xuICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlID0gcHJpdjtcbiAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwdHlwZV9sb2MgPSBsb2M7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3RvciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHZhcnMgPSBbXSlcbiAgICAgID8oYXJncyA9IFBjc3RyX3R1cGxlIFtdKSA/cmVzIG5hbWUgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gdmFycztcbiAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGZpZWxkID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8obXV0ID0gSW1tdXRhYmxlKSBuYW1lIHR5cCA9XG4gICAge1xuICAgICAgcGxkX25hbWUgPSBuYW1lO1xuICAgICAgcGxkX211dGFibGUgPSBtdXQ7XG4gICAgICBwbGRfdHlwZSA9IHR5cDtcbiAgICAgIHBsZF9sb2MgPSBsb2M7XG4gICAgICBwbGRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cbmVuZFxuXG4oKiogVHlwZSBleHRlbnNpb25zICopXG5tb2R1bGUgVGUgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocGFyYW1zID0gW10pID8ocHJpdiA9IFB1YmxpYylcbiAgICAgIHBhdGggY29uc3RydWN0b3JzID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICBwdHlleHRfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycztcbiAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdjtcbiAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICBwdHlleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgbWtfZXhjZXB0aW9uID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGNvbnN0cnVjdG9yID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3IgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBraW5kID1cbiAgICB7XG4gICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgcGV4dF9raW5kID0ga2luZDtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBkZWNsID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmFycyA9IFtdKVxuICAgICAgPyhhcmdzID0gUGNzdHJfdHVwbGUgW10pID9yZXMgbmFtZSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgIHBleHRfa2luZCA9IFBleHRfZGVjbCAodmFycywgYXJncywgcmVzKTtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCByZWJpbmQgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBsaWQgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICBwZXh0X2tpbmQgPSBQZXh0X3JlYmluZCBsaWQ7XG4gICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgQ3NpZyA9IHN0cnVjdFxuICBsZXQgbWsgc2VsZiBmaWVsZHMgPSB7IHBjc2lnX3NlbGYgPSBzZWxmOyBwY3NpZ19maWVsZHMgPSBmaWVsZHMgfVxuZW5kXG5cbm1vZHVsZSBDc3RyID0gc3RydWN0XG4gIGxldCBtayBzZWxmIGZpZWxkcyA9IHsgcGNzdHJfc2VsZiA9IHNlbGY7IHBjc3RyX2ZpZWxkcyA9IGZpZWxkcyB9XG5lbmRcblxuKCoqIFJvdyBmaWVsZHMgKilcbm1vZHVsZSBSZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZGVzYyA9XG4gICAgeyBwcmZfZGVzYyA9IGRlc2M7IHByZl9sb2MgPSBsb2M7IHByZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCB0YWcgP2xvYyA/YXR0cnMgbGFiZWwgY29uc3QgdHlzID1cbiAgICBtayA/bG9jID9hdHRycyAoUnRhZyAobGFiZWwsIGNvbnN0LCB0eXMpKVxuXG4gIGxldCBpbmhlcml0XyA/bG9jIHR5ID0gbWsgP2xvYyAoUmluaGVyaXQgdHkpXG5lbmRcblxuKCoqIE9iamVjdCBmaWVsZHMgKilcbm1vZHVsZSBPZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZGVzYyA9XG4gICAgeyBwb2ZfZGVzYyA9IGRlc2M7IHBvZl9sb2MgPSBsb2M7IHBvZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCB0YWcgP2xvYyA/YXR0cnMgbGFiZWwgdHkgPSBtayA/bG9jID9hdHRycyAoT3RhZyAobGFiZWwsIHR5KSlcbiAgbGV0IGluaGVyaXRfID9sb2MgdHkgPSBtayA/bG9jIChPaW5oZXJpdCB0eSlcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQkVHSU4gb2YgQkxBQ0sgTUFHSUMgKilcbigqJCBvcGVuIEFzdF9jaW5hcHNfaGVscGVycyAkKilcblxudHlwZSBfIHdpdG5lc3NlcyA9IC4uXG5cbnR5cGUgXyBtaWdyYXRpb24gPSAuLlxudHlwZSBfIG1pZ3JhdGlvbiArPSBVbmRlZmluZWQgOiBfIG1pZ3JhdGlvblxuXG50eXBlICdhIG1pZ3JhdGlvbl9pbmZvID0ge1xuICBtdXRhYmxlIG5leHRfdmVyc2lvbiA6ICdhIG1pZ3JhdGlvbjtcbiAgbXV0YWJsZSBwcmV2aW91c192ZXJzaW9uIDogJ2EgbWlncmF0aW9uO1xufVxuXG4oKiogQWJzdHJhY3QgdmlldyBvZiBhIHZlcnNpb24gb2YgYW4gT0NhbWwgQXN0ICopXG5tb2R1bGUgdHlwZSBBc3QgPSBzaWdcbiAgKCokIGZvcmVhY2hfbW9kdWxlIChmdW4gbSB0eXBlcyAtPlxuICAgICAgcHJpbnRmIFwiICBtb2R1bGUgJXMgOiBzaWdcXG5cIiBtO1xuICAgICAgTGlzdC5pdGVyIHR5cGVzIH5mOihwcmludGYgXCIgICAgdHlwZSAlc1xcblwiKTtcbiAgICAgIHByaW50ZiBcIiAgZW5kXFxuXCJcbiAgICApXG4gICopXG4gIG1vZHVsZSBQYXJzZXRyZWUgOiBzaWdcbiAgICB0eXBlIHN0cnVjdHVyZVxuICAgIHR5cGUgc2lnbmF0dXJlXG4gICAgdHlwZSB0b3BsZXZlbF9waHJhc2VcbiAgICB0eXBlIGNvcmVfdHlwZVxuICAgIHR5cGUgZXhwcmVzc2lvblxuICAgIHR5cGUgcGF0dGVyblxuICAgIHR5cGUgY2FzZVxuICAgIHR5cGUgdHlwZV9kZWNsYXJhdGlvblxuICAgIHR5cGUgdHlwZV9leHRlbnNpb25cbiAgICB0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgIHR5cGUgY2xhc3NfZXhwclxuICAgIHR5cGUgY2xhc3NfZmllbGRcbiAgICB0eXBlIGNsYXNzX3R5cGVcbiAgICB0eXBlIGNsYXNzX3NpZ25hdHVyZVxuICAgIHR5cGUgY2xhc3NfdHlwZV9maWVsZFxuICAgIHR5cGUgbW9kdWxlX2V4cHJcbiAgICB0eXBlIG1vZHVsZV90eXBlXG4gICAgdHlwZSBzaWduYXR1cmVfaXRlbVxuICAgIHR5cGUgc3RydWN0dXJlX2l0ZW1cbiAgZW5kXG4oKiQqKVxuICBtb2R1bGUgQ29uZmlnIDogc2lnXG4gICAgdmFsIGFzdF9pbXBsX21hZ2ljX251bWJlciA6IHN0cmluZ1xuICAgIHZhbCBhc3RfaW50Zl9tYWdpY19udW1iZXIgOiBzdHJpbmdcbiAgZW5kXG5lbmRcblxuKCogU2hvcnRjdXRzIGZvciB0YWxraW5nIGFib3V0IGFzdCB0eXBlcyBvdXRzaWRlIG9mIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxudHlwZSAnYSBfdHlwZXMgPSAnYSBjb25zdHJhaW50ICdhXG4gID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogXztcXG5cIiBzKSAqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IF87XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogXztcbiAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiBfO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IF87XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogXztcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBfO1xuICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IF87XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogXztcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBfO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IF87XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogXztcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBfO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IF87XG4gICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogXztcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBfO1xuICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IF87XG4gICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogXztcbiAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBfO1xuICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IF87XG4oKiQqKVxuICA+XG47O1xuXG4oKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgcHJpbnRmIFwidHlwZSAnYSBnZXRfJXMgPVxcblwiIHM7XG4gICAgcHJpbnRmIFwiICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgJXMgOiAneDsgLi4gPlxcblwiIHNcbiAgKSAqKVxudHlwZSAnYSBnZXRfc3RydWN0dXJlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHN0cnVjdHVyZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9zaWduYXR1cmUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc2lnbmF0dXJlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3RvcGxldmVsX3BocmFzZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCB0b3BsZXZlbF9waHJhc2UgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY29yZV90eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNvcmVfdHlwZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9leHByZXNzaW9uID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGV4cHJlc3Npb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfcGF0dGVybiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBwYXR0ZXJuIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2Nhc2UgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2FzZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF90eXBlX2RlY2xhcmF0aW9uID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHR5cGVfZGVjbGFyYXRpb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfdHlwZV9leHRlbnNpb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgdHlwZV9leHRlbnNpb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc19leHByID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX2V4cHIgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfZmllbGQgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfZmllbGQgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfdHlwZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc190eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX3NpZ25hdHVyZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc19zaWduYXR1cmUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfdHlwZV9maWVsZCA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc190eXBlX2ZpZWxkIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X21vZHVsZV9leHByID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IG1vZHVsZV9leHByIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X21vZHVsZV90eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IG1vZHVsZV90eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3NpZ25hdHVyZV9pdGVtID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHNpZ25hdHVyZV9pdGVtIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3N0cnVjdHVyZV9pdGVtID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHN0cnVjdHVyZV9pdGVtIDogJ3g7IC4uID5cbigqJCopXG5cbm1vZHVsZSB0eXBlIE9DYW1sX3ZlcnNpb24gPSBzaWdcbiAgbW9kdWxlIEFzdCA6IEFzdFxuICB2YWwgdmVyc2lvbiA6IGludFxuICB2YWwgc3RyaW5nX3ZlcnNpb24gOiBzdHJpbmdcbiAgdHlwZSB0eXBlcyA9IDxcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+IHByaW50ZiBcIiAgICAlLTIxcyA6IEFzdC4lcy4lcztcXG5cIiBzIG0gcykqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlO1xuICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY29yZV90eXBlO1xuICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnBhdHRlcm47XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jYXNlO1xuICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbjtcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwcjtcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZTtcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZTtcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQ7XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcjtcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW07XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gID4gX3R5cGVzXG4gIHR5cGUgXyB3aXRuZXNzZXMgKz0gVmVyc2lvbiA6IHR5cGVzIHdpdG5lc3Nlc1xuICB2YWwgbWlncmF0aW9uX2luZm8gOiB0eXBlcyBtaWdyYXRpb25faW5mb1xuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdG5lc3MoQXN0IDogQXN0KSA9XG5zdHJ1Y3RcbiAgdHlwZSB0eXBlcyA9IDxcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+IHByaW50ZiBcIiAgICAlLTIxcyA6IEFzdC4lcy4lcztcXG5cIiBzIG0gcykqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlO1xuICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY29yZV90eXBlO1xuICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnBhdHRlcm47XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jYXNlO1xuICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbjtcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwcjtcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZTtcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZTtcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQ7XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcjtcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW07XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gID4gX3R5cGVzXG4gIHR5cGUgXyB3aXRuZXNzZXMgKz0gVmVyc2lvbiA6IHR5cGVzIHdpdG5lc3Nlc1xuICBsZXQgbWlncmF0aW9uX2luZm8gOiB0eXBlcyBtaWdyYXRpb25faW5mbyA9XG4gICAgeyBuZXh0X3ZlcnNpb24gPSBVbmRlZmluZWQ7IHByZXZpb3VzX3ZlcnNpb24gPSBVbmRlZmluZWQgfVxuZW5kXG5cbnR5cGUgJ3R5cGVzIG9jYW1sX3ZlcnNpb24gPVxuICAobW9kdWxlIE9DYW1sX3ZlcnNpb25cbiAgICAoKiQgbGV0IHNlcCA9IHdpdGhfdGhlbl9hbmQgKCkgaW5cbiAgICAgIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPlxuICAgICAgICAgIHByaW50ZiBcIiAgICAldCB0eXBlIEFzdC4lcy4lcyA9ICd0eXBlcyBnZXRfJXNcXG5cIiBzZXAgbSBzIHMpICopXG4gICAgd2l0aCB0eXBlIEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlID0gJ3R5cGVzIGdldF9zdHJ1Y3R1cmVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5zaWduYXR1cmUgPSAndHlwZXMgZ2V0X3NpZ25hdHVyZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9ICd0eXBlcyBnZXRfdG9wbGV2ZWxfcGhyYXNlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY29yZV90eXBlID0gJ3R5cGVzIGdldF9jb3JlX3R5cGVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5leHByZXNzaW9uID0gJ3R5cGVzIGdldF9leHByZXNzaW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUucGF0dGVybiA9ICd0eXBlcyBnZXRfcGF0dGVyblxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNhc2UgPSAndHlwZXMgZ2V0X2Nhc2VcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID0gJ3R5cGVzIGdldF90eXBlX2RlY2xhcmF0aW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPSAndHlwZXMgZ2V0X3R5cGVfZXh0ZW5zaW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gJ3R5cGVzIGdldF9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc19leHByID0gJ3R5cGVzIGdldF9jbGFzc19leHByXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPSAndHlwZXMgZ2V0X2NsYXNzX2ZpZWxkXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9ICd0eXBlcyBnZXRfY2xhc3NfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9ICd0eXBlcyBnZXRfY2xhc3Nfc2lnbmF0dXJlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9ICd0eXBlcyBnZXRfY2xhc3NfdHlwZV9maWVsZFxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByID0gJ3R5cGVzIGdldF9tb2R1bGVfZXhwclxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlID0gJ3R5cGVzIGdldF9tb2R1bGVfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID0gJ3R5cGVzIGdldF9zaWduYXR1cmVfaXRlbVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID0gJ3R5cGVzIGdldF9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgKVxuXG50eXBlICgnZnJvbSwgJ3RvXykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgcHJpbnRmIFwiICBjb3B5XyVzOiAnZnJvbSBnZXRfJXMgLT4gJ3RvXyBnZXRfJXM7XFxuXCIgcyBzIHMpICopXG4gIGNvcHlfc3RydWN0dXJlOiAnZnJvbSBnZXRfc3RydWN0dXJlIC0+ICd0b18gZ2V0X3N0cnVjdHVyZTtcbiAgY29weV9zaWduYXR1cmU6ICdmcm9tIGdldF9zaWduYXR1cmUgLT4gJ3RvXyBnZXRfc2lnbmF0dXJlO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZTogJ2Zyb20gZ2V0X3RvcGxldmVsX3BocmFzZSAtPiAndG9fIGdldF90b3BsZXZlbF9waHJhc2U7XG4gIGNvcHlfY29yZV90eXBlOiAnZnJvbSBnZXRfY29yZV90eXBlIC0+ICd0b18gZ2V0X2NvcmVfdHlwZTtcbiAgY29weV9leHByZXNzaW9uOiAnZnJvbSBnZXRfZXhwcmVzc2lvbiAtPiAndG9fIGdldF9leHByZXNzaW9uO1xuICBjb3B5X3BhdHRlcm46ICdmcm9tIGdldF9wYXR0ZXJuIC0+ICd0b18gZ2V0X3BhdHRlcm47XG4gIGNvcHlfY2FzZTogJ2Zyb20gZ2V0X2Nhc2UgLT4gJ3RvXyBnZXRfY2FzZTtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uOiAnZnJvbSBnZXRfdHlwZV9kZWNsYXJhdGlvbiAtPiAndG9fIGdldF90eXBlX2RlY2xhcmF0aW9uO1xuICBjb3B5X3R5cGVfZXh0ZW5zaW9uOiAnZnJvbSBnZXRfdHlwZV9leHRlbnNpb24gLT4gJ3RvXyBnZXRfdHlwZV9leHRlbnNpb247XG4gIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yOiAnZnJvbSBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICd0b18gZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgY29weV9jbGFzc19leHByOiAnZnJvbSBnZXRfY2xhc3NfZXhwciAtPiAndG9fIGdldF9jbGFzc19leHByO1xuICBjb3B5X2NsYXNzX2ZpZWxkOiAnZnJvbSBnZXRfY2xhc3NfZmllbGQgLT4gJ3RvXyBnZXRfY2xhc3NfZmllbGQ7XG4gIGNvcHlfY2xhc3NfdHlwZTogJ2Zyb20gZ2V0X2NsYXNzX3R5cGUgLT4gJ3RvXyBnZXRfY2xhc3NfdHlwZTtcbiAgY29weV9jbGFzc19zaWduYXR1cmU6ICdmcm9tIGdldF9jbGFzc19zaWduYXR1cmUgLT4gJ3RvXyBnZXRfY2xhc3Nfc2lnbmF0dXJlO1xuICBjb3B5X2NsYXNzX3R5cGVfZmllbGQ6ICdmcm9tIGdldF9jbGFzc190eXBlX2ZpZWxkIC0+ICd0b18gZ2V0X2NsYXNzX3R5cGVfZmllbGQ7XG4gIGNvcHlfbW9kdWxlX2V4cHI6ICdmcm9tIGdldF9tb2R1bGVfZXhwciAtPiAndG9fIGdldF9tb2R1bGVfZXhwcjtcbiAgY29weV9tb2R1bGVfdHlwZTogJ2Zyb20gZ2V0X21vZHVsZV90eXBlIC0+ICd0b18gZ2V0X21vZHVsZV90eXBlO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtOiAnZnJvbSBnZXRfc2lnbmF0dXJlX2l0ZW0gLT4gJ3RvXyBnZXRfc2lnbmF0dXJlX2l0ZW07XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW06ICdmcm9tIGdldF9zdHJ1Y3R1cmVfaXRlbSAtPiAndG9fIGdldF9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG59XG5cbmxldCBpZCB4ID0geFxubGV0IG1pZ3JhdGlvbl9pZGVudGl0eSA6ICgnYSwgJ2EpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPSB7XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICBjb3B5XyVzID0gaWQ7XFxuXCIgcykgKilcbiAgY29weV9zdHJ1Y3R1cmUgPSBpZDtcbiAgY29weV9zaWduYXR1cmUgPSBpZDtcbiAgY29weV90b3BsZXZlbF9waHJhc2UgPSBpZDtcbiAgY29weV9jb3JlX3R5cGUgPSBpZDtcbiAgY29weV9leHByZXNzaW9uID0gaWQ7XG4gIGNvcHlfcGF0dGVybiA9IGlkO1xuICBjb3B5X2Nhc2UgPSBpZDtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uID0gaWQ7XG4gIGNvcHlfdHlwZV9leHRlbnNpb24gPSBpZDtcbiAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgPSBpZDtcbiAgY29weV9jbGFzc19leHByID0gaWQ7XG4gIGNvcHlfY2xhc3NfZmllbGQgPSBpZDtcbiAgY29weV9jbGFzc190eXBlID0gaWQ7XG4gIGNvcHlfY2xhc3Nfc2lnbmF0dXJlID0gaWQ7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA9IGlkO1xuICBjb3B5X21vZHVsZV9leHByID0gaWQ7XG4gIGNvcHlfbW9kdWxlX3R5cGUgPSBpZDtcbiAgY29weV9zaWduYXR1cmVfaXRlbSA9IGlkO1xuICBjb3B5X3N0cnVjdHVyZV9pdGVtID0gaWQ7XG4oKiQqKVxufVxuXG5sZXQgY29tcG9zZSBmIGcgeCA9IGYgKGcgeClcbmxldCBtaWdyYXRpb25fY29tcG9zZSAoYWIgOiAoJ2EsICdiKSBtaWdyYXRpb25fZnVuY3Rpb25zKSAoYmMgOiAoJ2IsICdjKSBtaWdyYXRpb25fZnVuY3Rpb25zKSA6ICgnYSwgJ2MpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPSB7XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIHByaW50ZiBcIiAgY29weV8lLTIxcyA9IGNvbXBvc2UgYmMuY29weV8lLTIxcyBhYi5jb3B5XyVzO1xcblwiIHMgcyBzKSAqKVxuICBjb3B5X3N0cnVjdHVyZSAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zdHJ1Y3R1cmUgICAgICAgICAgICAgYWIuY29weV9zdHJ1Y3R1cmU7XG4gIGNvcHlfc2lnbmF0dXJlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3NpZ25hdHVyZSAgICAgICAgICAgICBhYi5jb3B5X3NpZ25hdHVyZTtcbiAgY29weV90b3BsZXZlbF9waHJhc2UgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdG9wbGV2ZWxfcGhyYXNlICAgICAgIGFiLmNvcHlfdG9wbGV2ZWxfcGhyYXNlO1xuICBjb3B5X2NvcmVfdHlwZSAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jb3JlX3R5cGUgICAgICAgICAgICAgYWIuY29weV9jb3JlX3R5cGU7XG4gIGNvcHlfZXhwcmVzc2lvbiAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2V4cHJlc3Npb24gICAgICAgICAgICBhYi5jb3B5X2V4cHJlc3Npb247XG4gIGNvcHlfcGF0dGVybiAgICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3BhdHRlcm4gICAgICAgICAgICAgICBhYi5jb3B5X3BhdHRlcm47XG4gIGNvcHlfY2FzZSAgICAgICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2Nhc2UgICAgICAgICAgICAgICAgICBhYi5jb3B5X2Nhc2U7XG4gIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiAgICAgID0gY29tcG9zZSBiYy5jb3B5X3R5cGVfZGVjbGFyYXRpb24gICAgICBhYi5jb3B5X3R5cGVfZGVjbGFyYXRpb247XG4gIGNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3R5cGVfZXh0ZW5zaW9uICAgICAgICBhYi5jb3B5X3R5cGVfZXh0ZW5zaW9uO1xuICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IGNvbXBvc2UgYmMuY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgYWIuY29weV9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gIGNvcHlfY2xhc3NfZXhwciAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX2V4cHIgICAgICAgICAgICBhYi5jb3B5X2NsYXNzX2V4cHI7XG4gIGNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX2ZpZWxkICAgICAgICAgICBhYi5jb3B5X2NsYXNzX2ZpZWxkO1xuICBjb3B5X2NsYXNzX3R5cGUgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc190eXBlICAgICAgICAgICAgYWIuY29weV9jbGFzc190eXBlO1xuICBjb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc19zaWduYXR1cmUgICAgICAgYWIuY29weV9jbGFzc19zaWduYXR1cmU7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3R5cGVfZmllbGQgICAgICBhYi5jb3B5X2NsYXNzX3R5cGVfZmllbGQ7XG4gIGNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X21vZHVsZV9leHByICAgICAgICAgICBhYi5jb3B5X21vZHVsZV9leHByO1xuICBjb3B5X21vZHVsZV90eXBlICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9tb2R1bGVfdHlwZSAgICAgICAgICAgYWIuY29weV9tb2R1bGVfdHlwZTtcbiAgY29weV9zaWduYXR1cmVfaXRlbSAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc2lnbmF0dXJlX2l0ZW0gICAgICAgIGFiLmNvcHlfc2lnbmF0dXJlX2l0ZW07XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3N0cnVjdHVyZV9pdGVtICAgICAgICBhYi5jb3B5X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbn1cblxudHlwZSBfIG1pZ3JhdGlvbiArPSBNaWdyYXRpb24gOiAnZnJvbSBvY2FtbF92ZXJzaW9uICogKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zICogJ3RvXyBvY2FtbF92ZXJzaW9uIC0+ICdmcm9tIG1pZ3JhdGlvblxuXG5tb2R1bGUgdHlwZSBNaWdyYXRlX21vZHVsZSA9IHNpZ1xuICBtb2R1bGUgRnJvbSA6IEFzdFxuICBtb2R1bGUgVG8gOiBBc3RcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPlxuICAgICAgcHJpbnRmIFwiICB2YWwgY29weV8lLTIxczogRnJvbS4lcy4lcyAtPiBUby4lcy4lc1xcblwiIHMgbSBzIG0gcykgKilcbiAgdmFsIGNvcHlfc3RydWN0dXJlICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZVxuICB2YWwgY29weV9zaWduYXR1cmUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gIHZhbCBjb3B5X3RvcGxldmVsX3BocmFzZSAgICAgIDogRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2VcbiAgdmFsIGNvcHlfY29yZV90eXBlICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZVxuICB2YWwgY29weV9leHByZXNzaW9uICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25cbiAgdmFsIGNvcHlfcGF0dGVybiAgICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuXG4gIHZhbCBjb3B5X2Nhc2UgICAgICAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZVxuICB2YWwgY29weV90eXBlX2RlY2xhcmF0aW9uICAgICA6IEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb25cbiAgdmFsIGNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgOiBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb25cbiAgdmFsIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICB2YWwgY29weV9jbGFzc19leHByICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJcbiAgdmFsIGNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRcbiAgdmFsIGNvcHlfY2xhc3NfdHlwZSAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlXG4gIHZhbCBjb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmVcbiAgdmFsIGNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gIHZhbCBjb3B5X21vZHVsZV9leHByICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gIHZhbCBjb3B5X21vZHVsZV90eXBlICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gIHZhbCBjb3B5X3NpZ25hdHVyZV9pdGVtICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gIHZhbCBjb3B5X3N0cnVjdHVyZV9pdGVtICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4oKiQqKVxuZW5kXG5cbm1vZHVsZSBNaWdyYXRpb25fZnVuY3Rpb25zXG4gICAgKEEgOiBPQ2FtbF92ZXJzaW9uKSAoQiA6IE9DYW1sX3ZlcnNpb24pXG4gICAgKEFfdG9fQiA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBBLkFzdCBhbmQgbW9kdWxlIFRvID0gQi5Bc3QpXG49XG5zdHJ1Y3RcbiAgbGV0IG1pZ3JhdGlvbl9mdW5jdGlvbnMgOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9XG4gICAgbGV0IG9wZW4gQV90b19CIGluXG4gICAge1xuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgICBjb3B5XyVzO1xcblwiIHMpICopXG4gICAgICBjb3B5X3N0cnVjdHVyZTtcbiAgICAgIGNvcHlfc2lnbmF0dXJlO1xuICAgICAgY29weV90b3BsZXZlbF9waHJhc2U7XG4gICAgICBjb3B5X2NvcmVfdHlwZTtcbiAgICAgIGNvcHlfZXhwcmVzc2lvbjtcbiAgICAgIGNvcHlfcGF0dGVybjtcbiAgICAgIGNvcHlfY2FzZTtcbiAgICAgIGNvcHlfdHlwZV9kZWNsYXJhdGlvbjtcbiAgICAgIGNvcHlfdHlwZV9leHRlbnNpb247XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIGNvcHlfY2xhc3NfZXhwcjtcbiAgICAgIGNvcHlfY2xhc3NfZmllbGQ7XG4gICAgICBjb3B5X2NsYXNzX3R5cGU7XG4gICAgICBjb3B5X2NsYXNzX3NpZ25hdHVyZTtcbiAgICAgIGNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgICAgIGNvcHlfbW9kdWxlX2V4cHI7XG4gICAgICBjb3B5X21vZHVsZV90eXBlO1xuICAgICAgY29weV9zaWduYXR1cmVfaXRlbTtcbiAgICAgIGNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICAgIH1cbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXJfbWlncmF0aW9uIChBIDogT0NhbWxfdmVyc2lvbikgKEIgOiBPQ2FtbF92ZXJzaW9uKVxuICAgIChBX3RvX0IgOiBNaWdyYXRlX21vZHVsZSB3aXRoIG1vZHVsZSBGcm9tID0gQS5Bc3QgYW5kIG1vZHVsZSBUbyA9IEIuQXN0KVxuICAgIChCX3RvX0EgOiBNaWdyYXRlX21vZHVsZSB3aXRoIG1vZHVsZSBGcm9tID0gQi5Bc3QgYW5kIG1vZHVsZSBUbyA9IEEuQXN0KVxuPVxuc3RydWN0XG4gIGxldCAoKSA9IChcbiAgICBsZXQgaXNfdW5kZWZpbmVkIDogdHlwZSBhLiBhIG1pZ3JhdGlvbiAtPiBib29sID0gZnVuY3Rpb25cbiAgICAgIHwgVW5kZWZpbmVkIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgYXNzZXJ0IChBLnZlcnNpb24gPCBCLnZlcnNpb24pO1xuICAgIGFzc2VydCAoaXNfdW5kZWZpbmVkIEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uKTtcbiAgICBhc3NlcnQgKGlzX3VuZGVmaW5lZCBCLm1pZ3JhdGlvbl9pbmZvLnByZXZpb3VzX3ZlcnNpb24pO1xuICAgIGxldCBtb2R1bGUgQV90b19CX2Z1biA9IE1pZ3JhdGlvbl9mdW5jdGlvbnMoQSkoQikoQV90b19CKSBpblxuICAgIGxldCBtb2R1bGUgQl90b19BX2Z1biA9IE1pZ3JhdGlvbl9mdW5jdGlvbnMoQikoQSkoQl90b19BKSBpblxuICAgIEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uIDwtXG4gICAgICBNaWdyYXRpb24gKChtb2R1bGUgQSksIEFfdG9fQl9mdW4ubWlncmF0aW9uX2Z1bmN0aW9ucywgKG1vZHVsZSBCKSk7XG4gICAgQi5taWdyYXRpb25faW5mby5wcmV2aW91c192ZXJzaW9uIDwtXG4gICAgICBNaWdyYXRpb24gKChtb2R1bGUgQiksIEJfdG9fQV9mdW4ubWlncmF0aW9uX2Z1bmN0aW9ucywgKG1vZHVsZSBBKSk7XG4gIClcbmVuZFxuXG50eXBlICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb24gPVxuICB8IE5vX21pZ3JhdGlvbiA6ICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb25cbiAgfCBJbW1lZGlhdGVfbWlncmF0aW9uXG4gICAgOiAgKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zICogJ3RvXyBvY2FtbF92ZXJzaW9uXG4gICAgICAtPiAnZnJvbSBpbW1lZGlhdGVfbWlncmF0aW9uXG5cbmxldCBpbW1lZGlhdGVfbWlncmF0aW9uXG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgKHR5cGUgJXMpXFxuXCIgcykgKilcbiAgICAodHlwZSBzdHJ1Y3R1cmUpXG4gICAgKHR5cGUgc2lnbmF0dXJlKVxuICAgICh0eXBlIHRvcGxldmVsX3BocmFzZSlcbiAgICAodHlwZSBjb3JlX3R5cGUpXG4gICAgKHR5cGUgZXhwcmVzc2lvbilcbiAgICAodHlwZSBwYXR0ZXJuKVxuICAgICh0eXBlIGNhc2UpXG4gICAgKHR5cGUgdHlwZV9kZWNsYXJhdGlvbilcbiAgICAodHlwZSB0eXBlX2V4dGVuc2lvbilcbiAgICAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IpXG4gICAgKHR5cGUgY2xhc3NfZXhwcilcbiAgICAodHlwZSBjbGFzc19maWVsZClcbiAgICAodHlwZSBjbGFzc190eXBlKVxuICAgICh0eXBlIGNsYXNzX3NpZ25hdHVyZSlcbiAgICAodHlwZSBjbGFzc190eXBlX2ZpZWxkKVxuICAgICh0eXBlIG1vZHVsZV9leHByKVxuICAgICh0eXBlIG1vZHVsZV90eXBlKVxuICAgICh0eXBlIHNpZ25hdHVyZV9pdGVtKVxuICAgICh0eXBlIHN0cnVjdHVyZV9pdGVtKVxuKCokKilcbiAgICAoKG1vZHVsZSBBKSA6IDxcbiAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgIFwiICAgICAlLTIxcyA6ICVzO1xcblwiIHMgcykgKilcbiAgICAgc3RydWN0dXJlICAgICAgICAgICAgIDogc3RydWN0dXJlO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmU7XG4gICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IHRvcGxldmVsX3BocmFzZTtcbiAgICAgY29yZV90eXBlICAgICAgICAgICAgIDogY29yZV90eXBlO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uO1xuICAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBwYXR0ZXJuO1xuICAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBjYXNlO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uO1xuICAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiB0eXBlX2V4dGVuc2lvbjtcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByO1xuICAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBjbGFzc19maWVsZDtcbiAgICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogY2xhc3NfdHlwZTtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlO1xuICAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBjbGFzc190eXBlX2ZpZWxkO1xuICAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBtb2R1bGVfZXhwcjtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGU7XG4gICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IHNpZ25hdHVyZV9pdGVtO1xuICAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgICBkaXJlY3Rpb25cbiAgPVxuICBsZXQgdmVyc2lvbiA9IG1hdGNoIGRpcmVjdGlvbiB3aXRoXG4gICAgfCBgTmV4dCAtPiBBLm1pZ3JhdGlvbl9pbmZvLm5leHRfdmVyc2lvblxuICAgIHwgYFByZXZpb3VzIC0+IEEubWlncmF0aW9uX2luZm8ucHJldmlvdXNfdmVyc2lvblxuICBpblxuICBtYXRjaCB2ZXJzaW9uIHdpdGhcbiAgfCBVbmRlZmluZWQgLT4gTm9fbWlncmF0aW9uXG4gIHwgTWlncmF0aW9uIChfLCBmdW5zLCB0b18pIC0+IEltbWVkaWF0ZV9taWdyYXRpb24gKGZ1bnMsIHRvXylcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgbWlncmF0ZVxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICh0eXBlICVzMSkgKHR5cGUgJXMyKVxcblwiIHMgcykgKilcbiAgICAodHlwZSBzdHJ1Y3R1cmUxKSAodHlwZSBzdHJ1Y3R1cmUyKVxuICAgICh0eXBlIHNpZ25hdHVyZTEpICh0eXBlIHNpZ25hdHVyZTIpXG4gICAgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlMSkgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlMilcbiAgICAodHlwZSBjb3JlX3R5cGUxKSAodHlwZSBjb3JlX3R5cGUyKVxuICAgICh0eXBlIGV4cHJlc3Npb24xKSAodHlwZSBleHByZXNzaW9uMilcbiAgICAodHlwZSBwYXR0ZXJuMSkgKHR5cGUgcGF0dGVybjIpXG4gICAgKHR5cGUgY2FzZTEpICh0eXBlIGNhc2UyKVxuICAgICh0eXBlIHR5cGVfZGVjbGFyYXRpb24xKSAodHlwZSB0eXBlX2RlY2xhcmF0aW9uMilcbiAgICAodHlwZSB0eXBlX2V4dGVuc2lvbjEpICh0eXBlIHR5cGVfZXh0ZW5zaW9uMilcbiAgICAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IxKSAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IyKVxuICAgICh0eXBlIGNsYXNzX2V4cHIxKSAodHlwZSBjbGFzc19leHByMilcbiAgICAodHlwZSBjbGFzc19maWVsZDEpICh0eXBlIGNsYXNzX2ZpZWxkMilcbiAgICAodHlwZSBjbGFzc190eXBlMSkgKHR5cGUgY2xhc3NfdHlwZTIpXG4gICAgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlMSkgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlMilcbiAgICAodHlwZSBjbGFzc190eXBlX2ZpZWxkMSkgKHR5cGUgY2xhc3NfdHlwZV9maWVsZDIpXG4gICAgKHR5cGUgbW9kdWxlX2V4cHIxKSAodHlwZSBtb2R1bGVfZXhwcjIpXG4gICAgKHR5cGUgbW9kdWxlX3R5cGUxKSAodHlwZSBtb2R1bGVfdHlwZTIpXG4gICAgKHR5cGUgc2lnbmF0dXJlX2l0ZW0xKSAodHlwZSBzaWduYXR1cmVfaXRlbTIpXG4gICAgKHR5cGUgc3RydWN0dXJlX2l0ZW0xKSAodHlwZSBzdHJ1Y3R1cmVfaXRlbTIpXG4oKiQqKVxuICAgICgobW9kdWxlIEEpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgJS0yMXMgOiAlczE7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmUxO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmUxO1xuICAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiB0b3BsZXZlbF9waHJhc2UxO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGUxO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uMTtcbiAgICAgcGF0dGVybiAgICAgICAgICAgICAgIDogcGF0dGVybjE7XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2UxO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uMTtcbiAgICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogdHlwZV9leHRlbnNpb24xO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IxO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByMTtcbiAgICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogY2xhc3NfZmllbGQxO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlMTtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlMTtcbiAgICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogY2xhc3NfdHlwZV9maWVsZDE7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByMTtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGUxO1xuICAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBzaWduYXR1cmVfaXRlbTE7XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtMTtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgICAoKG1vZHVsZSBCKSA6IDxcbiAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgICUtMjFzIDogJXMyO1xcblwiIHMgcykgKilcbiAgICAgc3RydWN0dXJlICAgICAgICAgICAgIDogc3RydWN0dXJlMjtcbiAgICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogc2lnbmF0dXJlMjtcbiAgICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogdG9wbGV2ZWxfcGhyYXNlMjtcbiAgICAgY29yZV90eXBlICAgICAgICAgICAgIDogY29yZV90eXBlMjtcbiAgICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogZXhwcmVzc2lvbjI7XG4gICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IHBhdHRlcm4yO1xuICAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBjYXNlMjtcbiAgICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogdHlwZV9kZWNsYXJhdGlvbjI7XG4gICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IHR5cGVfZXh0ZW5zaW9uMjtcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yMjtcbiAgICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogY2xhc3NfZXhwcjI7XG4gICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IGNsYXNzX2ZpZWxkMjtcbiAgICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogY2xhc3NfdHlwZTI7XG4gICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IGNsYXNzX3NpZ25hdHVyZTI7XG4gICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IGNsYXNzX3R5cGVfZmllbGQyO1xuICAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBtb2R1bGVfZXhwcjI7XG4gICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IG1vZHVsZV90eXBlMjtcbiAgICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogc2lnbmF0dXJlX2l0ZW0yO1xuICAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbTI7XG4oKiQqKVxuICAgICA+IG9jYW1sX3ZlcnNpb24pXG4gIDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnNcbiAgPVxuICBtYXRjaCBBLlZlcnNpb24gd2l0aFxuICB8IEIuVmVyc2lvbiAtPiBtaWdyYXRpb25faWRlbnRpdHlcbiAgfCBfIC0+XG4gICAgbGV0IGRpcmVjdGlvbiA9IGlmIEEudmVyc2lvbiA8IEIudmVyc2lvbiB0aGVuIGBOZXh0IGVsc2UgYFByZXZpb3VzIGluXG4gICAgbGV0IHJlYyBtaWdyYXRlIChtIDogQS50eXBlcyBpbW1lZGlhdGVfbWlncmF0aW9uKSA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgfCBOb19taWdyYXRpb24gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IEltbWVkaWF0ZV9taWdyYXRpb24gKGYsIChtb2R1bGUgVG8pKSAtPlxuICAgICAgICBtYXRjaCBUby5WZXJzaW9uIHdpdGhcbiAgICAgICAgfCBCLlZlcnNpb24gLT4gZlxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBtYXRjaCBpbW1lZGlhdGVfbWlncmF0aW9uIChtb2R1bGUgVG8pIGRpcmVjdGlvbiB3aXRoXG4gICAgICAgICAgfCBOb19taWdyYXRpb24gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBJbW1lZGlhdGVfbWlncmF0aW9uIChnLCB0bzIpIC0+XG4gICAgICAgICAgICBtaWdyYXRlIChJbW1lZGlhdGVfbWlncmF0aW9uIChtaWdyYXRpb25fY29tcG9zZSBmIGcsIHRvMikpXG4gICAgaW5cbiAgICBtaWdyYXRlIChpbW1lZGlhdGVfbWlncmF0aW9uIChtb2R1bGUgQSkgZGlyZWN0aW9uKVxuXG5tb2R1bGUgQ29udmVydCAoQSA6IE9DYW1sX3ZlcnNpb24pIChCIDogT0NhbWxfdmVyc2lvbikgPSBzdHJ1Y3RcbiAgbGV0IHtcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICBjb3B5XyVzO1xcblwiIHMpICopXG4gICAgY29weV9zdHJ1Y3R1cmU7XG4gICAgY29weV9zaWduYXR1cmU7XG4gICAgY29weV90b3BsZXZlbF9waHJhc2U7XG4gICAgY29weV9jb3JlX3R5cGU7XG4gICAgY29weV9leHByZXNzaW9uO1xuICAgIGNvcHlfcGF0dGVybjtcbiAgICBjb3B5X2Nhc2U7XG4gICAgY29weV90eXBlX2RlY2xhcmF0aW9uO1xuICAgIGNvcHlfdHlwZV9leHRlbnNpb247XG4gICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY29weV9jbGFzc19leHByO1xuICAgIGNvcHlfY2xhc3NfZmllbGQ7XG4gICAgY29weV9jbGFzc190eXBlO1xuICAgIGNvcHlfY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgICBjb3B5X21vZHVsZV9leHByO1xuICAgIGNvcHlfbW9kdWxlX3R5cGU7XG4gICAgY29weV9zaWduYXR1cmVfaXRlbTtcbiAgICBjb3B5X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgfSA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICBtaWdyYXRlIChtb2R1bGUgQSkgKG1vZHVsZSBCKVxuZW5kXG5cbigqJCBmb3JlYWNoX3ZlcnNpb24gKGZ1biBuIHZlcnNpb24gLT5cbiAgICBwcmludGYgXCJtb2R1bGUgT0NhbWxfJWQgPSBzdHJ1Y3RcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfJWRcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF8lZClcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgbGV0IHZlcnNpb24gPSAlZFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBsZXQgc3RyaW5nX3ZlcnNpb24gPSAlU1xcblwiIHZlcnNpb247XG4gICAgcHJpbnRmIFwiZW5kXFxuXCI7XG4gICAgcHJpbnRmIFwibGV0IG9jYW1sXyVkIDogT0NhbWxfJWQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfJWQpXFxuXCJcbiAgICAgIG4gbiBuO1xuICApXG4qKVxubW9kdWxlIE9DYW1sXzQwMiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDJcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDIpXG4gIGxldCB2ZXJzaW9uID0gNDAyXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wMlwiXG5lbmRcbmxldCBvY2FtbF80MDIgOiBPQ2FtbF80MDIudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDAyKVxubW9kdWxlIE9DYW1sXzQwMyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDNcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDMpXG4gIGxldCB2ZXJzaW9uID0gNDAzXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wM1wiXG5lbmRcbmxldCBvY2FtbF80MDMgOiBPQ2FtbF80MDMudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDAzKVxubW9kdWxlIE9DYW1sXzQwNCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDRcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDQpXG4gIGxldCB2ZXJzaW9uID0gNDA0XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNFwiXG5lbmRcbmxldCBvY2FtbF80MDQgOiBPQ2FtbF80MDQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA0KVxubW9kdWxlIE9DYW1sXzQwNSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDVcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDUpXG4gIGxldCB2ZXJzaW9uID0gNDA1XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNVwiXG5lbmRcbmxldCBvY2FtbF80MDUgOiBPQ2FtbF80MDUudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA1KVxubW9kdWxlIE9DYW1sXzQwNiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDZcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDYpXG4gIGxldCB2ZXJzaW9uID0gNDA2XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNlwiXG5lbmRcbmxldCBvY2FtbF80MDYgOiBPQ2FtbF80MDYudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA2KVxubW9kdWxlIE9DYW1sXzQwNyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDdcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDcpXG4gIGxldCB2ZXJzaW9uID0gNDA3XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wN1wiXG5lbmRcbmxldCBvY2FtbF80MDcgOiBPQ2FtbF80MDcudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA3KVxubW9kdWxlIE9DYW1sXzQwOCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDhcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDgpXG4gIGxldCB2ZXJzaW9uID0gNDA4XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wOFwiXG5lbmRcbmxldCBvY2FtbF80MDggOiBPQ2FtbF80MDgudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA4KVxubW9kdWxlIE9DYW1sXzQwOSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDlcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDkpXG4gIGxldCB2ZXJzaW9uID0gNDA5XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wOVwiXG5lbmRcbmxldCBvY2FtbF80MDkgOiBPQ2FtbF80MDkudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA5KVxubW9kdWxlIE9DYW1sXzQxMCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTBcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTApXG4gIGxldCB2ZXJzaW9uID0gNDEwXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMFwiXG5lbmRcbmxldCBvY2FtbF80MTAgOiBPQ2FtbF80MTAudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEwKVxubW9kdWxlIE9DYW1sXzQxMSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTFcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTEpXG4gIGxldCB2ZXJzaW9uID0gNDExXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMVwiXG5lbmRcbmxldCBvY2FtbF80MTEgOiBPQ2FtbF80MTEudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDExKVxubW9kdWxlIE9DYW1sXzQxMiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTJcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTIpXG4gIGxldCB2ZXJzaW9uID0gNDEyXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMlwiXG5lbmRcbmxldCBvY2FtbF80MTIgOiBPQ2FtbF80MTIudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEyKVxubW9kdWxlIE9DYW1sXzQxMyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTNcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTMpXG4gIGxldCB2ZXJzaW9uID0gNDEzXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xM1wiXG5lbmRcbmxldCBvY2FtbF80MTMgOiBPQ2FtbF80MTMudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEzKVxubW9kdWxlIE9DYW1sXzQxNCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTRcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTQpXG4gIGxldCB2ZXJzaW9uID0gNDE0XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xNFwiXG5lbmRcbmxldCBvY2FtbF80MTQgOiBPQ2FtbF80MTQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDE0KVxubW9kdWxlIE9DYW1sXzUwMCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF81MDBcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF81MDApXG4gIGxldCB2ZXJzaW9uID0gNTAwXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNS4wXCJcbmVuZFxubGV0IG9jYW1sXzUwMCA6IE9DYW1sXzUwMC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF81MDApXG5tb2R1bGUgT0NhbWxfNTAxID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzUwMVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzUwMSlcbiAgbGV0IHZlcnNpb24gPSA1MDFcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI1LjFcIlxuZW5kXG5sZXQgb2NhbWxfNTAxIDogT0NhbWxfNTAxLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzUwMSlcbm1vZHVsZSBPQ2FtbF81MDIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNTAyXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNTAyKVxuICBsZXQgdmVyc2lvbiA9IDUwMlxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjUuMlwiXG5lbmRcbmxldCBvY2FtbF81MDIgOiBPQ2FtbF81MDIudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNTAyKVxuKCokKilcblxubGV0IGFsbF92ZXJzaW9ucyA6IChtb2R1bGUgT0NhbWxfdmVyc2lvbikgbGlzdCA9IFtcbiAgKCokZm9yZWFjaF92ZXJzaW9uIChmdW4gbiBfIC0+XG4gICAgICBwcmludGYgXCIobW9kdWxlIE9DYW1sXyVkIDogT0NhbWxfdmVyc2lvbik7XFxuXCIgbikqKVxuKG1vZHVsZSBPQ2FtbF80MDIgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDAzIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDUgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA2IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNyA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDggOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA5IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTEgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEyIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMyA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTQgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNTAwIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzUwMSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF81MDIgOiBPQ2FtbF92ZXJzaW9uKTtcbigqJCopXG5dXG5cbigqJGZvcmVhY2hfdmVyc2lvbl9wYWlyIChmdW4gYSBiIC0+XG4gICAgcHJpbnRmIFwiaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfJWQpKE9DYW1sXyVkKVxcblwiIGEgYjtcbiAgICBwcmludGYgXCIgICAgKEFzdGxpYi5NaWdyYXRlXyVkXyVkKShBc3RsaWIuTWlncmF0ZV8lZF8lZClcXG5cIiBhIGIgYiBhXG4gIClcbiopXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDIpKE9DYW1sXzQwMylcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDAyXzQwMykoQXN0bGliLk1pZ3JhdGVfNDAzXzQwMilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwMykoT0NhbWxfNDA0KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDNfNDA0KShBc3RsaWIuTWlncmF0ZV80MDRfNDAzKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA0KShPQ2FtbF80MDUpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwNF80MDUpKEFzdGxpYi5NaWdyYXRlXzQwNV80MDQpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDUpKE9DYW1sXzQwNilcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA1XzQwNikoQXN0bGliLk1pZ3JhdGVfNDA2XzQwNSlcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNikoT0NhbWxfNDA3KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDZfNDA3KShBc3RsaWIuTWlncmF0ZV80MDdfNDA2KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA3KShPQ2FtbF80MDgpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwN180MDgpKEFzdGxpYi5NaWdyYXRlXzQwOF80MDcpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDgpKE9DYW1sXzQwOSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA4XzQwOSkoQXN0bGliLk1pZ3JhdGVfNDA5XzQwOClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwOSkoT0NhbWxfNDEwKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDlfNDEwKShBc3RsaWIuTWlncmF0ZV80MTBfNDA5KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEwKShPQ2FtbF80MTEpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxMF80MTEpKEFzdGxpYi5NaWdyYXRlXzQxMV80MTApXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTEpKE9DYW1sXzQxMilcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDExXzQxMikoQXN0bGliLk1pZ3JhdGVfNDEyXzQxMSlcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMikoT0NhbWxfNDEzKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTJfNDEzKShBc3RsaWIuTWlncmF0ZV80MTNfNDEyKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEzKShPQ2FtbF80MTQpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxM180MTQpKEFzdGxpYi5NaWdyYXRlXzQxNF80MTMpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTQpKE9DYW1sXzUwMClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDE0XzUwMCkoQXN0bGliLk1pZ3JhdGVfNTAwXzQxNClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzUwMCkoT0NhbWxfNTAxKVxuICAgIChBc3RsaWIuTWlncmF0ZV81MDBfNTAxKShBc3RsaWIuTWlncmF0ZV81MDFfNTAwKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNTAxKShPQ2FtbF81MDIpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzUwMV81MDIpKEFzdGxpYi5NaWdyYXRlXzUwMl81MDEpXG4oKiQqKVxuXG5tb2R1bGUgT0NhbWxfY3VycmVudCA9IE9DYW1sX09DQU1MX1ZFUlNJT05cblxubW9kdWxlIEZpbmRfdmVyc2lvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbXBsIG9mIChtb2R1bGUgT0NhbWxfdmVyc2lvbikgfCBJbnRmIG9mIChtb2R1bGUgT0NhbWxfdmVyc2lvbikgfCBVbmtub3duXG5cbiAgbGV0IGZyb21fbWFnaWMgbWFnaWMgPVxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFVua25vd25cbiAgICAgIHwgKG1vZHVsZSBWZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgOjogdGFpbCAtPlxuICAgICAgICAgIGlmIFZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXIgPSBtYWdpYyB0aGVuXG4gICAgICAgICAgICBJbXBsIChtb2R1bGUgVmVyc2lvbilcbiAgICAgICAgICBlbHNlIGlmIFZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW50Zl9tYWdpY19udW1iZXIgPSBtYWdpYyB0aGVuXG4gICAgICAgICAgICBJbnRmIChtb2R1bGUgVmVyc2lvbilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsb29wIHRhaWxcbiAgICBpblxuICAgICgqIFRyYXZlcnNlIHRoZSB2ZXJzaW9ucyBmcm9tIGxhc3QgdG8gZmlyc3Q6XG4gICAgICAgaWYgdGhlIG1hZ2ljIG51bWJlcnMgYXJlbid0IHVuaXF1ZSBhbW9uZyB2ZXJzaW9ucyxcbiAgICAgICB3ZSB3YW50IHRoZSBsYXRlc3QgdmVyc2lvbiB3aXRoIGEgbWFnaWMgbnVtYmVyIG1hdGNoLlxuICAgICAgIFRoZSBzaXR1YXRpb24gaW4gbWluZCBpcyB0cnVuayBzdXBwb3J0LiAqKVxuICAgICAgbGV0IGFsbF92ZXJzaW9uc190b3BfZG93biA9IExpc3QucmV2IGFsbF92ZXJzaW9ucyBpblxuICAgICAgbG9vcCBhbGxfdmVyc2lvbnNfdG9wX2Rvd25cbmVuZFxuIiwiKCogVGhpcyBmaWxlIGlzIHVzZWQgdG8gY29udHJvbCB3aGF0IHdlIHVzZSBmcm9tIHRoZSBjdXJyZW50IGNvbXBpbGVyIGFuZCB3aGF0IGlzIGVtYmVkIGluXG4gICB0aGlzIGxpYnJhcnkuXG5cbiAgIEl0IG11c3QgYmUgb3BlbmVkIGluIGFsbCBtb2R1bGVzLCBlc3BlY2lhbGx5IHRoZSBvbmVzIGNvbWluZyBmcm9tIHRoZSBjb21waWxlci5cbiopXG5cbigqJCBvcGVuIEFzdF9jaW5hcHNfaGVscGVycyAkKilcblxubW9kdWxlIEpzID0gVmVyc2lvbnMuT0NhbWxfNTAwXG5tb2R1bGUgT2NhbWwgPSBWZXJzaW9ucy5PQ2FtbF9jdXJyZW50XG5cbm1vZHVsZSBTZWxlY3RfYXN0IChPY2FtbCA6IFZlcnNpb25zLk9DYW1sX3ZlcnNpb24pID0gc3RydWN0XG4gIGluY2x1ZGUgSnNcblxuICBtb2R1bGUgVHlwZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdqcywgJ29jYW1sKSB0ID1cbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXNcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS4lcyxcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS4lcyApXFxuXFxcbiAgICAgICAgICAgICAgXFwgICAgICAgICAgICB0XFxuXCJcbiAgICAgICAgICAgICAgKGNhcGl0YWxpemVfYXNjaWkgcykgcyBzXG4gICAgICAgICAgKVxuICAgICAgKilcbiAgICAgIHwgU3RydWN0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFNpZ25hdHVyZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zaWduYXR1cmUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBUb3BsZXZlbF9waHJhc2VcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ29yZV90eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY29yZV90eXBlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNvcmVfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IEV4cHJlc3Npb25cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5leHByZXNzaW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBQYXR0ZXJuXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUucGF0dGVybixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5wYXR0ZXJuIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2FzZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNhc2UsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2FzZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBUeXBlX2V4dGVuc2lvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX2V4cHJcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc19leHByLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc19maWVsZFxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfdHlwZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgTW9kdWxlX2V4cHJcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwciApXG4gICAgICAgICAgICB0XG4gICAgICB8IE1vZHVsZV90eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBTaWduYXR1cmVfaXRlbVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgU3RydWN0dXJlX2l0ZW1cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSApXG4gICAgICAgICAgICB0XG4oKiQqKVxuICAgICAgfCBMaXN0IDogKCdhLCAnYikgdCAtPiAoJ2EgbGlzdCwgJ2IgbGlzdCkgdFxuICAgICAgfCBQYWlyIDogKCdhLCAnYikgdCAqICgnYywgJ2QpIHQgLT4gKCdhICogJ2MsICdiICogJ2QpIHRcbiAgZW5kXG5cbiAgb3BlbiBUeXBlXG4gIG1vZHVsZSBPZl9vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKE9jYW1sKSAoSnMpXG4gIG1vZHVsZSBUb19vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKEpzKSAoT2NhbWwpXG5cbiAgbGV0IHJlYyBvZl9vY2FtbCA6IHR5cGUgb2NhbWwganMuIChqcywgb2NhbWwpIFR5cGUudCAtPiBvY2FtbCAtPiBqcyA9XG4gICAgbGV0IG9wZW4gT2Zfb2NhbWwgaW5cbiAgICBmdW4gbm9kZSAtPlxuICAgICAgbWF0Y2ggbm9kZSB3aXRoXG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICAgICAgICBwcmludGZcbiAgICAgICAgICAgICAgXCIgICAgICB8ICVzIC0+IGNvcHlfJXNcXG5cIlxuICAgICAgICAgICAgICAoY2FwaXRhbGl6ZV9hc2NpaSBzKSBzXG4gICAgICAgICAgKVxuICAgICAgKilcbiAgICAgIHwgU3RydWN0dXJlIC0+IGNvcHlfc3RydWN0dXJlXG4gICAgICB8IFNpZ25hdHVyZSAtPiBjb3B5X3NpZ25hdHVyZVxuICAgICAgfCBUb3BsZXZlbF9waHJhc2UgLT4gY29weV90b3BsZXZlbF9waHJhc2VcbiAgICAgIHwgQ29yZV90eXBlIC0+IGNvcHlfY29yZV90eXBlXG4gICAgICB8IEV4cHJlc3Npb24gLT4gY29weV9leHByZXNzaW9uXG4gICAgICB8IFBhdHRlcm4gLT4gY29weV9wYXR0ZXJuXG4gICAgICB8IENhc2UgLT4gY29weV9jYXNlXG4gICAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4gY29weV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICB8IENsYXNzX2V4cHIgLT4gY29weV9jbGFzc19leHByXG4gICAgICB8IENsYXNzX2ZpZWxkIC0+IGNvcHlfY2xhc3NfZmllbGRcbiAgICAgIHwgQ2xhc3NfdHlwZSAtPiBjb3B5X2NsYXNzX3R5cGVcbiAgICAgIHwgQ2xhc3Nfc2lnbmF0dXJlIC0+IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gICAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gY29weV9jbGFzc190eXBlX2ZpZWxkXG4gICAgICB8IE1vZHVsZV9leHByIC0+IGNvcHlfbW9kdWxlX2V4cHJcbiAgICAgIHwgTW9kdWxlX3R5cGUgLT4gY29weV9tb2R1bGVfdHlwZVxuICAgICAgfCBTaWduYXR1cmVfaXRlbSAtPiBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gICAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IGNvcHlfc3RydWN0dXJlX2l0ZW1cbigqJCopXG4gICAgICB8IExpc3QgdCAtPiBMaXN0Lm1hcCAob2Zfb2NhbWwgdClcbiAgICAgIHwgUGFpciAoYSwgYikgLT5cbiAgICAgICAgICBsZXQgZiA9IG9mX29jYW1sIGEgaW5cbiAgICAgICAgICBsZXQgZyA9IG9mX29jYW1sIGIgaW5cbiAgICAgICAgICBmdW4gKHgsIHkpIC0+IChmIHgsIGcgeSlcblxuICBsZXQgcmVjIHRvX29jYW1sIDogdHlwZSBvY2FtbCBqcy4gKGpzLCBvY2FtbCkgVHlwZS50IC0+IGpzIC0+IG9jYW1sID1cbiAgICBsZXQgb3BlbiBUb19vY2FtbCBpblxuICAgIGZ1biBub2RlIC0+XG4gICAgICBtYXRjaCBub2RlIHdpdGhcbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXMgLT4gY29weV8lc1xcblwiXG4gICAgICAgICAgICAgIChjYXBpdGFsaXplX2FzY2lpIHMpIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmUgLT4gY29weV9zdHJ1Y3R1cmVcbiAgICAgIHwgU2lnbmF0dXJlIC0+IGNvcHlfc2lnbmF0dXJlXG4gICAgICB8IFRvcGxldmVsX3BocmFzZSAtPiBjb3B5X3RvcGxldmVsX3BocmFzZVxuICAgICAgfCBDb3JlX3R5cGUgLT4gY29weV9jb3JlX3R5cGVcbiAgICAgIHwgRXhwcmVzc2lvbiAtPiBjb3B5X2V4cHJlc3Npb25cbiAgICAgIHwgUGF0dGVybiAtPiBjb3B5X3BhdHRlcm5cbiAgICAgIHwgQ2FzZSAtPiBjb3B5X2Nhc2VcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgIHwgVHlwZV9leHRlbnNpb24gLT4gY29weV90eXBlX2V4dGVuc2lvblxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgIHwgQ2xhc3NfZXhwciAtPiBjb3B5X2NsYXNzX2V4cHJcbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4gY29weV9jbGFzc19maWVsZFxuICAgICAgfCBDbGFzc190eXBlIC0+IGNvcHlfY2xhc3NfdHlwZVxuICAgICAgfCBDbGFzc19zaWduYXR1cmUgLT4gY29weV9jbGFzc19zaWduYXR1cmVcbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgICAgIHwgTW9kdWxlX2V4cHIgLT4gY29weV9tb2R1bGVfZXhwclxuICAgICAgfCBNb2R1bGVfdHlwZSAtPiBjb3B5X21vZHVsZV90eXBlXG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gY29weV9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgICAgIHwgTGlzdCB0IC0+IExpc3QubWFwICh0b19vY2FtbCB0KVxuICAgICAgfCBQYWlyIChhLCBiKSAtPlxuICAgICAgICAgIGxldCBmID0gdG9fb2NhbWwgYSBpblxuICAgICAgICAgIGxldCBnID0gdG9fb2NhbWwgYiBpblxuICAgICAgICAgIGZ1biAoeCwgeSkgLT4gKGYgeCwgZyB5KVxuXG4gIGxldCBvZl9vY2FtbF9tYXBwZXIgaXRlbSBmIGN0eHQgeCA9IHRvX29jYW1sIGl0ZW0geCB8PiBmIGN0eHQgfD4gb2Zfb2NhbWwgaXRlbVxuICBsZXQgdG9fb2NhbWxfbWFwcGVyIGl0ZW0gZiBjdHh0IHggPSBvZl9vY2FtbCBpdGVtIHggfD4gZiBjdHh0IHw+IHRvX29jYW1sIGl0ZW1cbmVuZFxuXG5tb2R1bGUgU2VsZWN0ZWRfYXN0ID0gU2VsZWN0X2FzdCAoT2NhbWwpXG5tb2R1bGUgQXN0X2hlbHBlciA9IEFzdF9oZWxwZXJfbGl0ZVxuXG4oKiBNb2R1bGVzIGZyb20gQXN0XzxuPiBvZiBBc3RsaWIsIHdoZXJlIDxuPiBpcyB0aGUgY29tcGlsZXIgdmVyc2lvbiB0aGUgcHB4bGliIGRyaXZlciBpcyBjb21waWxlZCB3aXRoICopXG5tb2R1bGUgUGFyc2V0cmVlID0gU2VsZWN0ZWRfYXN0LkFzdC5QYXJzZXRyZWVcbm1vZHVsZSBBc3R0eXBlcyA9IFNlbGVjdGVkX2FzdC5Bc3QuQXN0dHlwZXNcblxuKCogT3RoZXIgQXN0bGliIG1vZHVsZXMgKilcbm1vZHVsZSBMb2NhdGlvbiA9IEFzdGxpYi5Mb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IEFzdGxpYi5Mb25naWRlbnRcblxubW9kdWxlIFBhcnNlID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0bGliLlBhcnNlXG4gIG1vZHVsZSBPZl9vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKE9jYW1sKSAoSnMpXG5cbiAgbGV0IGltcGxlbWVudGF0aW9uIGxleGJ1ZiA9IGltcGxlbWVudGF0aW9uIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3N0cnVjdHVyZVxuICBsZXQgaW50ZXJmYWNlIGxleGJ1ZiA9IGludGVyZmFjZSBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9zaWduYXR1cmVcblxuICBsZXQgdG9wbGV2ZWxfcGhyYXNlIGxleGJ1ZiA9XG4gICAgdG9wbGV2ZWxfcGhyYXNlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3RvcGxldmVsX3BocmFzZVxuXG4gIGxldCB1c2VfZmlsZSBsZXhidWYgPVxuICAgIHVzZV9maWxlIGxleGJ1ZiB8PiBMaXN0Lm1hcCBPZl9vY2FtbC5jb3B5X3RvcGxldmVsX3BocmFzZVxuXG4gIGxldCBjb3JlX3R5cGUgbGV4YnVmID0gY29yZV90eXBlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X2NvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiBsZXhidWYgPSBleHByZXNzaW9uIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X2V4cHJlc3Npb25cbiAgbGV0IHBhdHRlcm4gbGV4YnVmID0gcGF0dGVybiBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9wYXR0ZXJuXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgZGVmYXVsdF9wcmludF93YXJuaW5nIF9sb2MgPSAoKVxubGV0IGFib3V0X2l0ZV9icmFuY2hfcmVmID0gcmVmIGRlZmF1bHRfcHJpbnRfd2FybmluZ1xubGV0IGNhcmVfYWJvdXRfaXRlX2JyYW5jaCA9IHJlZiBmYWxzZVxubGV0IGFib3V0X2l0ZV9icmFuY2ggbG9jID0gIWFib3V0X2l0ZV9icmFuY2hfcmVmIGxvY1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogRGVmaW5pdGlvbiBvZiB0aGUgT0NhbWwgQVNUICopXG5cbm9wZW4gSW1wb3J0XG5cbigqIFRoaXMgZmlsZSBpcyBvYnRhaW5lZCBieTpcblxuICAgLSBjb3B5aW5nIGEgc3Vic2V0IG9mIHRoZSBjb3JyZXNwb25kaW5nIGFzdF94eHgubWwgZmlsZSBmcm9tIEFzdGxpYlxuICAgKHN1Yi1tb2R1bGVzIEFzdHR5cGVzIGFuZCBQYXJzZXRyZWUpXG4gICAtIGFkZGluZyB0aGUgdHlwZSBkZWZpbml0aW9ucyBmb3IgcG9zaXRpb24sIGxvY2F0aW9uLCBsb2MgYW5kIGxvbmdpZGVudFxuICAgLSBmbGF0dGVuaW5nIGFsbCB0aGUgbW9kdWxlc1xuICAgLSByZW1vdmluZyBBc3R0eXBlcy5jb25zdGFudCAodW51c2VkIGFuZCBjb25mbGljdHMgd2l0aCBQYXJzZXRyZWUuY29uc3RhbnQpXG4gICAtIHJlbmFtaW5nIGEgZmV3IHR5cGVzOlxuICAgLSAtIExvY2F0aW9uLnQgLT4gbG9jYXRpb25cbiAgIC0gLSBMb25naWRlbnQudCAtPiBsb25naWRlbnRcbiAgIC0gYWRkaW5nIGEgdHlwZSBsb25naWRlbnRfbG9jID0gbG9uZ2lkZW50IGxvYyBhbmQgcmVwbGFjaW5nIGFsbCB0aGUgb2NjdXJyZW5jZXMgb2YgdGhlXG4gICBsYXR0ZXIgYnkgdGhlIGZvcm1lci4gVGhpcyBpcyBzbyB0aGF0IHdlIGNhbiBvdmVycmlkZSBpdGVyYXRpb24gYW4gdGhlIGxldmVsIG9mIGFcbiAgIGxvbmdpZGVudCBsb2NcbiAgIC0gYWRkaW5nIGEgdHlwZSBjYXNlcyA9IGNhc2UgbGlzdFxuICAgLSByZXBsYWNpbmcgYWxsIG9jY3VyZW5jZXMgb2YgXCJjYXNlIGxpc3RcIiBieSBcImNhc2VzXCJcbiAgIC0gcmVwbGFjaW5nIGFsbCB0aGUgKCpJRl9DVVJSRU5UID0gRm9vLmJhciopIGJ5OiA9IEZvby5iYXJcbiAgIC0gcmVtb3ZpbmcgdGhlIGV4dHJhIHZhbHVlcyBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlXG4gICAtIHJlcGxhY2luZyBhcHAgW3R5cGUgLi4uXSBieSBbYW5kIC4uLl0gdG8gbWFrZSBldmVyeXRoaW5nIG9uZSByZWN1cnNpdmUgYmxvY2tcbiAgIC0gYWRkaW5nIFtAQGRlcml2aW5nX2lubGluZSB0cmF2ZXJzZV1bQEBAZW5kXSBhdCB0aGUgZW5kXG5cbiAgIFRvIHVwZGF0ZSBpdCB0byBhIG5ld2VyIE9DYW1sIHZlcnNpb24sIGNyZWF0ZSBhIG5ldyBtb2R1bGUgd2l0aCB0aGUgYWJvdmUgZnJvbSB0aGVcbiAgIGxhdGVzdCBjb21waWxlciBhbmQgYWRkIHRoZSBmb2xsb3dpbmcgbW9kdWxlIGRlZmluaXRpb25zIGFuZCBvcGVucyB0byBnZXQgaXQgdG9cbiAgIGNvbXBpbGU6XG4gICBbe1xuICAgIG1vZHVsZSBBc3QgPSBWZXJzaW9ucy5PQ2FtbF80eHhcbiAgICBvcGVuIEFzdC5Bc3RcbiAgICBtb2R1bGUgTG9jYXRpb24gICA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvblxuICAgIG1vZHVsZSBMb25naWRlbnQgPSBPY2FtbF9jb21tb24uTG9uZ2lkZW50XG4gICB9XVxuXG4gICBPbmNlIHlvdSBoYXZlIGdlbmVyYXRlZCB0aGUgaW5saW5lZCBkZXJpdmVkIHRyYXZlcnNhbCBjbGFzc2VzIGJ5IHJ1bm5pbmdcbiAgIFt7IGR1bmUgYnVpbGQgQGxpbnQgfV0geW91IGNhbiByZXBsYWNlIHRoZSBhYm92ZSBtZW50aW9uZWQgbW9kdWxlIGRlZmluaXRpb25zIGJ5IGFcbiAgIFtvcGVuIEltcG9ydF0gYW5kIHVwZGF0ZSBbSW1wb3J0XSBzbyB0aGF0IHRoZSBbSnNdIG1vZHVsZSBwb2ludHMgdG9cbiAgIFtWZXJzaW9ucy5PQ2FtbF80eHhdLlxuKilcblxuKCogU291cmNlIGNvZGUgbG9jYXRpb25zIChyYW5nZXMgb2YgcG9zaXRpb25zKSwgdXNlZCBpbiBwYXJzZXRyZWUuICopXG5cbnR5cGUgcG9zaXRpb24gPSBMZXhpbmcucG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5hbmQgbG9jYXRpb24gPSBMb2NhdGlvbi50ID0ge1xuICBsb2Nfc3RhcnQgOiBwb3NpdGlvbjtcbiAgbG9jX2VuZCA6IHBvc2l0aW9uO1xuICBsb2NfZ2hvc3QgOiBib29sO1xufVxuXG5hbmQgbG9jYXRpb25fc3RhY2sgPSBsb2NhdGlvbiBsaXN0XG5cbigqIE5vdGUgb24gdGhlIHVzZSBvZiBMZXhpbmcucG9zaXRpb24gaW4gdGhpcyBtb2R1bGUuXG4gICBJZiBbcG9zX2ZuYW1lID0gXCJcIl0sIHRoZW4gdXNlIFshaW5wdXRfbmFtZV0gaW5zdGVhZC5cbiAgIElmIFtwb3NfbG51bSA9IC0xXSwgdGhlbiBbcG9zX2JvbCA9IDBdLiBVc2UgW3Bvc19jbnVtXSBhbmRcbiAgIHJlLXBhcnNlIHRoZSBmaWxlIHRvIGdldCB0aGUgbGluZSBhbmQgY2hhcmFjdGVyIG51bWJlcnMuXG4gICBFbHNlIGFsbCBmaWVsZHMgYXJlIGNvcnJlY3QuXG4qKVxuYW5kICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IGxvY2F0aW9uIH1cblxuKCogTG9uZyBpZGVudGlmaWVycywgdXNlZCBpbiBwYXJzZXRyZWUuICopXG5hbmQgbG9uZ2lkZW50ID0gTG9uZ2lkZW50LnQgPVxuICB8IExpZGVudCBvZiBzdHJpbmdcbiAgfCBMZG90IG9mIGxvbmdpZGVudCAqIHN0cmluZ1xuICB8IExhcHBseSBvZiBsb25naWRlbnQgKiBsb25naWRlbnRcblxuYW5kIGxvbmdpZGVudF9sb2MgPSBsb25naWRlbnQgbG9jXG5cbigqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbmFuZCByZWNfZmxhZyA9IEFzdHR5cGVzLnJlY19mbGFnID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbmFuZCBkaXJlY3Rpb25fZmxhZyA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gVXB0byB8IERvd250b1xuXG4oKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbmFuZCBwcml2YXRlX2ZsYWcgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBQcml2YXRlIHwgUHVibGljXG5hbmQgbXV0YWJsZV9mbGFnID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuYW5kIHZpcnR1YWxfZmxhZyA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuYW5kIG92ZXJyaWRlX2ZsYWcgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gT3ZlcnJpZGUgfCBGcmVzaFxuYW5kIGNsb3NlZF9mbGFnID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBDbG9zZWQgfCBPcGVuXG5hbmQgbGFiZWwgPSBzdHJpbmdcblxuYW5kIGFyZ19sYWJlbCA9IEFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIHwgTm9sYWJlbFxuICB8IExhYmVsbGVkIG9mIHN0cmluZyAgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgfCBPcHRpb25hbCBvZiBzdHJpbmcgICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG5hbmQgdmFyaWFuY2UgPSBBc3R0eXBlcy52YXJpYW5jZSA9IENvdmFyaWFudCB8IENvbnRyYXZhcmlhbnQgfCBOb1ZhcmlhbmNlXG5hbmQgaW5qZWN0aXZpdHkgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSA9IEluamVjdGl2ZSB8IE5vSW5qZWN0aXZpdHlcblxuKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuYW5kIGNvbnN0YW50ID0gUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLiBTdWZmaXhlcyBleGNlcHRcbiAgICAgICAgICBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIgKilcbiAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBsb2NhdGlvbiAqIHN0cmluZyBvcHRpb25cbiAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuICopXG4gIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLiBTdWZmaXhlcyBhcmUgcmVqZWN0ZWRcbiAgICAgICAgICBieSB0aGUgdHlwZWNoZWNrZXIuICopXG5cbigqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG5hbmQgYXR0cmlidXRlID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSA9IHtcbiAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgYXR0cl9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tAaWQgQVJHXV0gYW5kIFtbQEBpZCBBUkddXS5cblxuICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC4gVGhlIGNvbXBpbGVyIGlnbm9yZXNcbiAgICB1bmtub3duIGF0dHJpYnV0ZXMuICopXG5cbmFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuICopXG5cbmFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuYW5kIHBheWxvYWQgPSBQYXJzZXRyZWUucGF5bG9hZCA9XG4gIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogWz8gUF0gb3IgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbigqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbmFuZCBjb3JlX3R5cGUgPSBQYXJzZXRyZWUuY29yZV90eXBlID0ge1xuICBwdHlwX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYztcbiAgcHR5cF9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5cF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcHR5cF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjb3JlX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSxcbiAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWRdfSxcbiAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWxdfS4gKilcbiAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV0gcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZVxuICAgICAgICAgIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uICopXG4gIHwgUHR5cF9jb25zdHIgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt0Y29uc3RyXSB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAtIFtUIHRjb25zdHJdIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS4gKilcbiAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9IFtDbG9zZWRdfSxcbiAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfS4gKilcbiAgfCBQdHlwX2NsYXNzIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbI3Rjb25zdHJdIHdoZW4gW2w9W11dLFxuICAgICAgICAgIC0gW1QgI3Rjb25zdHJdIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uICopXG4gIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgICgqKiBbVCBhcyAnYV0uICopXG4gIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1sgYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW1s+IGBBfGBCIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59IFtPcGVuXX0sXG4gICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW1s8IGBBfGBCIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1cbiAgICAgICAgICAgIFtDbG9zZWRdfSwgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1cbiAgICAgICAgICAgIFtDbG9zZWRdfSwgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLiAqKVxuICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1cbiAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gYSBjb25zdHJhaW50IG9uIGFcbiAgICAgICAgICAgIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAge1tcbiAgICAgICAgICAgIGxldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLlxuICAgICAgICAgIF19XG4gICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfSBbQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVxuICAgICAgICAgICAgW1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9IFtQZXhwX3BvbHldfVxuICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfSBbcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH0gW1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9IFtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS4gKilcbiAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbmFuZCBwYWNrYWdlX3R5cGUgPSBsb25naWRlbnRfbG9jICogKGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUpIGxpc3RcbigqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuXG4gICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldIHJlcHJlc2VudHNcbiAgICAgIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLiAqKVxuXG5hbmQgcm93X2ZpZWxkID0gUGFyc2V0cmVlLnJvd19maWVsZCA9IHtcbiAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgcHJmX2xvYyA6IGxvY2F0aW9uO1xuICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG5cbmFuZCByb3dfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbYl0gaXMgW3RydWVdIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAtIFtgQSBvZiBUXSB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGEgY29uc3RhbnQgKGVtcHR5KVxuICAgICAgICAgICAgY29uc3RydWN0b3IuXG4gICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3IgKHNlZVxuICAgICAgICAgICAgNC4yIGluIHRoZSBtYW51YWwpICopXG4gIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbmFuZCBvYmplY3RfZmllbGQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkID0ge1xuICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICBwb2ZfbG9jIDogbG9jYXRpb247XG4gIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIG9iamVjdF9maWVsZF9kZXNjID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4oKiogezIgUGF0dGVybnN9ICopXG5cbmFuZCBwYXR0ZXJuID0gUGFyc2V0cmVlLnBhdHRlcm4gPSB7XG4gIHBwYXRfZGVzYyA6IHBhdHRlcm5fZGVzYztcbiAgcHBhdF9sb2MgOiBsb2NhdGlvbjtcbiAgcHBhdF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcHBhdF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBwYXR0ZXJuX2Rlc2MgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjID1cbiAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXIgYnV0IHJlamVjdGVkIGJ5XG4gICAgICAgICAgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0gKilcbiAgfCBQcGF0X2NvbnN0cnVjdCBvZiBsb25naWRlbnRfbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW0NdIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtDIFBdIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV0gKilcbiAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXSAqKVxuICB8IFBwYXRfcmVjb3JkIG9mIChsb25naWRlbnRfbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9IFtDbG9zZWRdfVxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gIHwgUHBhdF90eXBlIG9mIGxvbmdpZGVudF9sb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgfCBQcGF0X29wZW4gb2YgbG9uZ2lkZW50X2xvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG5hbmQgZXhwcmVzc2lvbiA9IFBhcnNldHJlZS5leHByZXNzaW9uID0ge1xuICBwZXhwX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2M7XG4gIHBleHBfbG9jIDogbG9jYXRpb247XG4gIHBleHBfbG9jX3N0YWNrIDogbG9jYXRpb25fc3RhY2s7XG4gIHBleHBfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgZXhwcmVzc2lvbl9kZXNjID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIHwgUGV4cF9pZGVudCBvZiBsb25naWRlbnRfbG9jICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdICopXG4gIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sXG4gICAgICAgICAgWzFuXSAqKVxuICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9IFtSZWN1cnNpdmVdfS4gKilcbiAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2Z1bihsYmwsIGV4cDAsIFAsIEUxKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVxuICAgICAgICAgICAgW05vbGFiZWxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBFMV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9IFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpc1xuICAgICAgICAgICAgW1NvbWUgRTBdXG5cbiAgICAgICAgICBOb3RlczpcblxuICAgICAgICAgIC0gSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seSB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59IFtQZXhwX2Z1bl19LlxuICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZyB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59XG4gICAgICAgICAgICBbUGV4cF9mdW5dfS4gKilcbiAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXSByZXByZXNlbnRzXG4gICAgICAgICAgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgW2xpXSBjYW4gYmUge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9IFtOb2xhYmVsXX0gKG5vbiBsYWJlbGVkXG4gICAgICAgICAgYXJndW1lbnQpLCB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9IFtMYWJlbGxlZF19IChsYWJlbGxlZFxuICAgICAgICAgIGFyZ3VtZW50cykgb3Ige3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfSBbT3B0aW9uYWxdfSAob3B0aW9uYWxcbiAgICAgICAgICBhcmd1bWVudCkuXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0gKilcbiAgfCBQZXhwX2NvbnN0cnVjdCBvZiBsb25naWRlbnRfbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW0NdIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW0MgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldICopXG4gIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdICopXG4gIHwgUGV4cF9yZWNvcmQgb2YgKGxvbmdpZGVudF9sb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogbG9uZ2lkZW50X2xvYyAgKCoqIFtFLmxdICopXG4gIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogbG9uZ2lkZW50X2xvYyAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXSB3aGVuIFtkaXJlY3Rpb25dIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfSBbVXB0b119XG4gICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV0gd2hlbiBbZGlyZWN0aW9uXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfSBbRG93bnRvXX0gKilcbiAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG5cbiAgICAgICAgICAtIFsoRSA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS4gKilcbiAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgfCBQZXhwX25ldyBvZiBsb25naWRlbnRfbG9jICAoKiogW25ldyBNLmNdICopXG4gIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfSBbQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgIHZhbHVlcykuICopXG4gIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuYW5kIGNhc2UgPSBQYXJzZXRyZWUuY2FzZSA9IHtcbiAgcGNfbGhzIDogcGF0dGVybjtcbiAgcGNfZ3VhcmQgOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgcGNfcmhzIDogZXhwcmVzc2lvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuYW5kIGxldG9wID0gUGFyc2V0cmVlLmxldG9wID0ge1xuICBsZXRfIDogYmluZGluZ19vcDtcbiAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgYm9keSA6IGV4cHJlc3Npb247XG59XG5cbmFuZCBiaW5kaW5nX29wID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgPSB7XG4gIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgcGJvcF9sb2MgOiBsb2NhdGlvbjtcbn1cblxuKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuYW5kIHZhbHVlX2Rlc2NyaXB0aW9uID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID0ge1xuICBwdmFsX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwdmFsX3R5cGUgOiBjb3JlX3R5cGU7XG4gIHB2YWxfcHJpbSA6IHN0cmluZyBsaXN0O1xuICBwdmFsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwdmFsX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG5cbiAgICAtIFt2YWwgeDogVF0sIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfSBbcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl0gd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19XG4gICAgICBbcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV0gKilcblxuKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID0ge1xuICBwdHlwZV9uYW1lIDogc3RyaW5nIGxvYztcbiAgcHR5cGVfcGFyYW1zIDogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gIHB0eXBlX2NzdHJzIDogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIGxvY2F0aW9uKSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgcHR5cGVfa2luZCA6IHR5cGVfa2luZDtcbiAgcHR5cGVfcHJpdmF0ZSA6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gIHB0eXBlX21hbmlmZXN0IDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gIHB0eXBlX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwdHlwZV9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sIGZvciB2YXJpb3VzXG4gICAge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfSBbcHR5cGVfa2luZF19IGFuZFxuICAgIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9IFtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcblxuICAgIC0gW3R5cGUgdF0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9XG4gICAgICBbUHR5cGVfYWJzdHJhY3RdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwXSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1cbiAgICAgIFtQdHlwZV9hYnN0cmFjdF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVxuICAgICAgW1B0eXBlX3ZhcmlhbnRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXSB3aGVuIFt0eXBlX2tpbmRdIGlzXG4gICAgICB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH0gW1B0eXBlX3ZhcmlhbnRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW1NvbWUgVDBdLFxuICAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9XG4gICAgICBbUHR5cGVfcmVjb3JkXX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXSxcbiAgICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV0gd2hlbiBbdHlwZV9raW5kXSBpc1xuICAgICAge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH0gW1B0eXBlX3JlY29yZF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0gLi5dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59IFtQdHlwZV9vcGVuXX0sXG4gICAgICBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0uICopXG5cbmFuZCB0eXBlX2tpbmQgPSBQYXJzZXRyZWUudHlwZV9raW5kID1cbiAgfCBQdHlwZV9hYnN0cmFjdFxuICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICB8IFB0eXBlX29wZW5cblxuYW5kIGxhYmVsX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID0ge1xuICBwbGRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBsZF9tdXRhYmxlIDogbXV0YWJsZV9mbGFnO1xuICBwbGRfdHlwZSA6IGNvcmVfdHlwZTtcbiAgcGxkX2xvYyA6IGxvY2F0aW9uO1xuICBwbGRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtAaWQxXSBbQGlkMl1dICopXG59XG4oKiogLSBbeyAuLi47IGw6IFQ7IC4uLiB9XSB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfSBbcGxkX211dGFibGVdfVxuICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX0gW0ltbXV0YWJsZV19LFxuICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XSB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVxuICAgICAgW3BsZF9tdXRhYmxlXX0gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9IFtNdXRhYmxlXX0uXG5cbiAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fSBbUHR5cF9wb2x5XX0uICopXG5cbmFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IHtcbiAgcGNkX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwY2RfdmFycyA6IHN0cmluZyBsb2MgbGlzdDtcbiAgcGNkX2FyZ3MgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gIHBjZF9yZXMgOiBjb3JlX3R5cGUgb3B0aW9uO1xuICBwY2RfbG9jIDogbG9jYXRpb247XG4gIHBjZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufSByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvclxuICAgICAgICAgIGFyZ3VtZW50cyBvZjpcblxuICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbiBbcmVzID0gTm9uZV0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgLSBbQzogVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLCBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgLSBbQyBvZiB7Li4ufV0gd2hlbiBbcmVzID0gTm9uZV0sIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgICAgICAgLSBbQzogey4uLn0gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLCBhbmRcbiAgICAgICAgICAgIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS4gKilcblxuYW5kIHR5cGVfZXh0ZW5zaW9uID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID0ge1xuICBwdHlleHRfcGF0aCA6IGxvbmdpZGVudF9sb2M7XG4gIHB0eWV4dF9wYXJhbXMgOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICBwdHlleHRfY29uc3RydWN0b3JzIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gIHB0eWV4dF9wcml2YXRlIDogcHJpdmF0ZV9mbGFnO1xuICBwdHlleHRfbG9jIDogbG9jYXRpb247XG4gIHB0eWV4dF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG59XG4oKiogRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgKFt0eXBlIHQgKz0gLi4uXSkuICopXG5cbmFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0ge1xuICBwZXh0X25hbWUgOiBzdHJpbmcgbG9jO1xuICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgcGV4dF9sb2MgOiBsb2NhdGlvbjtcbiAgcGV4dF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIHR5cGVfZXhjZXB0aW9uID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID0ge1xuICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gIHB0eWV4bl9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID1cbiAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV0gZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvblxuICAgICAgICAgIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG5cbiAgICAgICAgICB7dWxcbiAgICAgICAgICAgey0gW0Mgb2YgVDEgKiAuLi4gKiBUbl1cbiAgICAgICAgICAgICAgd2hlbjpcblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW05vbmVdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiBUMF1cbiAgICAgICAgICAgICAgd2hlblxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgICB7LSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICB9ICopXG4gIHwgUGV4dF9yZWJpbmQgb2YgbG9uZ2lkZW50X2xvY1xuICAgICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbigqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbigqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbmFuZCBjbGFzc190eXBlID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgPSB7XG4gIHBjdHlfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYztcbiAgcGN0eV9sb2MgOiBsb2NhdGlvbjtcbiAgcGN0eV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc190eXBlX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgfCBQY3R5X2NvbnN0ciBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiAtIFtjXVxuICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1QgLT4gQ1RdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9IFtOb2xhYmVsXX0sXG4gICAgICAgICAgLSBbfmw6VCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWQgbF19LFxuICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsIGxdfS4gKilcbiAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG5hbmQgY2xhc3Nfc2lnbmF0dXJlID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9IHtcbiAgcGNzaWdfc2VsZiA6IGNvcmVfdHlwZTtcbiAgcGNzaWdfZmllbGRzIDogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9IFtwY3NpZ19zZWxmXX0gaXNcbiAgICAgIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fSBbUHR5cF9hbnldfSAqKVxuXG5hbmQgY2xhc3NfdHlwZV9maWVsZCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID0ge1xuICBwY3RmX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gIHBjdGZfbG9jIDogbG9jYXRpb247XG4gIHBjdGZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX0gW1B0eXBfcG9seV19LiAqKVxuICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuYW5kICdhIGNsYXNzX2luZm9zID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zID0ge1xuICBwY2lfdmlydCA6IHZpcnR1YWxfZmxhZztcbiAgcGNpX3BhcmFtcyA6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gIHBjaV9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGNpX2V4cHIgOiAnYTtcbiAgcGNpX2xvYyA6IGxvY2F0aW9uO1xuICBwY2lfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLiAqKVxuXG5hbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5hbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbmFuZCBjbGFzc19leHByID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgPSB7XG4gIHBjbF9kZXNjIDogY2xhc3NfZXhwcl9kZXNjO1xuICBwY2xfbG9jIDogbG9jYXRpb247XG4gIHBjbF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc19leHByX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgfCBQY2xfY29uc3RyIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9XG4gICAgICAgICAgICBbTm9sYWJlbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH0gW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzXG4gICAgICAgICAgICBbU29tZSBFMF0uICopXG4gIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXSByZXByZXNlbnRzXG4gICAgICAgICAgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS4gW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvclxuICAgICAgICAgIHN0YXJ0IHdpdGggWz9dIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9IFtSZWN1cnNpdmVdfS4gKilcbiAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuYW5kIGNsYXNzX3N0cnVjdHVyZSA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPSB7XG4gIHBjc3RyX3NlbGYgOiBwYXR0ZXJuO1xuICBwY3N0cl9maWVsZHMgOiBjbGFzc19maWVsZCBsaXN0O1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuXG4gICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9IFtwY3N0cl9zZWxmXX0gaXNcbiAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX0gW1BwYXRfYW55XX0gKilcblxuYW5kIGNsYXNzX2ZpZWxkID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID0ge1xuICBwY2ZfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gIHBjZl9sb2MgOiBsb2NhdGlvbjtcbiAgcGNmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuXG5hbmQgY2xhc3NfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2luaGVyaXQgQ0VdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9XG4gICAgICAgICAgICBbRnJlc2hdfSBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9XG4gICAgICAgICAgICBbRnJlc2hdfSBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgIC0gW2luaGVyaXQhIENFXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVxuICAgICAgICAgICAgW092ZXJyaWRlXX0gYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9IFtPdmVycmlkZV19IGFuZCBbc10gaXMgW1NvbWUgeF0gKilcbiAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt2YWwgeCA9IEVdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9XG4gICAgICAgICAgICBbSW1tdXRhYmxlXX0gYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1cbiAgICAgICAgICAgIFtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX0gW0ltbXV0YWJsZV19IGFuZCBba2luZF0gaXNcbiAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVxuICAgICAgICAgICAgW011dGFibGVdfSBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVxuICAgICAgICAgICAgW0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfSBbTXV0YWJsZV19IGFuZCBba2luZF0gaXNcbiAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbChUKV19ICopXG4gIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1cbiAgICAgICAgICAgIFtQZXhwX3BvbHldfSlcbiAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXSAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1cbiAgICAgICAgICAgIFtQdHlwX3BvbHldfSkgKilcbiAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuYW5kIGNsYXNzX2ZpZWxkX2tpbmQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbmFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbigqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG5hbmQgbW9kdWxlX3R5cGUgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgPSB7XG4gIHBtdHlfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2M7XG4gIHBtdHlfbG9jIDogbG9jYXRpb247XG4gIHBtdHlfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgbW9kdWxlX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgfCBQbXR5X2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICB8IFBtdHlfYWxpYXMgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG5hbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICB8IFVuaXQgICgqKiBbKCldICopXG4gIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG5hbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG5hbmQgc2lnbmF0dXJlX2l0ZW0gPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPSB7XG4gIHBzaWdfZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gIHBzaWdfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBzaWduYXR1cmVfaXRlbV9kZXNjID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdICopXG4gIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICopXG4gIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAqKVxuICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPSB7XG4gIHBtZF9uYW1lIDogc3RyaW5nIG9wdGlvbiBsb2M7XG4gIHBtZF90eXBlIDogbW9kdWxlX3R5cGU7XG4gIHBtZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG1kX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9IHtcbiAgcG1zX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwbXNfbWFuaWZlc3QgOiBsb25naWRlbnRfbG9jO1xuICBwbXNfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHBtc19sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG5hbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSB7XG4gIHBtdGRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBtdGRfdHlwZSA6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgcG10ZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG10ZF9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtTID0gTVRdLFxuICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgd2hlblxuICAgICAge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfSBbcG10ZF90eXBlXX0gaXMgW05vbmVdLiAqKVxuXG5hbmQgJ2Egb3Blbl9pbmZvcyA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zID0ge1xuICBwb3Blbl9leHByIDogJ2E7XG4gIHBvcGVuX292ZXJyaWRlIDogb3ZlcnJpZGVfZmxhZztcbiAgcG9wZW5fbG9jIDogbG9jYXRpb247XG4gIHBvcGVuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfSBbcG9wZW5fb3ZlcnJpZGVdfSBpc1xuICAgICAge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX0gW092ZXJyaWRlXX0gKHNpbGVuY2VzIHRoZSBcInVzZWRcbiAgICAgIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9IFtwb3Blbl9vdmVycmlkZV19IGlzXG4gICAgICB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofSBbRnJlc2hdfSAqKVxuXG5hbmQgb3Blbl9kZXNjcmlwdGlvbiA9IGxvbmdpZGVudF9sb2Mgb3Blbl9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiBNLk5dXG4gICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbmFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiBNLk5dXG4gICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuYW5kICdhIGluY2x1ZGVfaW5mb3MgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9IHtcbiAgcGluY2xfbW9kIDogJ2E7XG4gIHBpbmNsX2xvYyA6IGxvY2F0aW9uO1xuICBwaW5jbF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbmFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG5hbmQgd2l0aF9jb25zdHJhaW50ID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIHwgUHdpdGhfdHlwZSBvZiBsb25naWRlbnRfbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaCB0aGUgbmFtZSBvZiB0aGVcbiAgICAgICAgICB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICB8IFB3aXRoX21vZHVsZSBvZiBsb25naWRlbnRfbG9jICogbG9uZ2lkZW50X2xvYyAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICB8IFB3aXRoX21vZHR5cGUgb2YgbG9uZ2lkZW50X2xvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gIHwgUHdpdGhfdHlwZXN1YnN0IG9mIGxvbmdpZGVudF9sb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gIHwgUHdpdGhfbW9kc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIGxvbmdpZGVudF9sb2NcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbigqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuYW5kIG1vZHVsZV9leHByID0gUGFyc2V0cmVlLm1vZHVsZV9leHByID0ge1xuICBwbW9kX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjO1xuICBwbW9kX2xvYyA6IGxvY2F0aW9uO1xuICBwbW9kX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIG1vZHVsZV9leHByX2Rlc2MgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIHwgUG1vZF9pZGVudCBvZiBsb25naWRlbnRfbG9jICAoKiogW1hdICopXG4gIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG5hbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG5hbmQgc3RydWN0dXJlX2l0ZW0gPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPSB7XG4gIHBzdHJfZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gIHBzdHJfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9IFtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuYW5kIHZhbHVlX2JpbmRpbmcgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyA9IHtcbiAgcHZiX3BhdCA6IHBhdHRlcm47XG4gIHB2Yl9leHByIDogZXhwcmVzc2lvbjtcbiAgcHZiX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICBwdmJfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBtb2R1bGVfYmluZGluZyA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9IHtcbiAgcG1iX25hbWUgOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgcG1iX2V4cHIgOiBtb2R1bGVfZXhwcjtcbiAgcG1iX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICBwbWJfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4oKiogezEgVG9wbGV2ZWx9ICopXG4oKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuYW5kIHRvcGxldmVsX3BocmFzZSA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgPSB7XG4gIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgcGRpcl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPSB7XG4gIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgcGRpcmFfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9XG4gIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgfCBQZGlyX2lkZW50IG9mIGxvbmdpZGVudFxuICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmFuZCBjYXNlcyA9IGNhc2UgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgdHJhdmVyc2VdXG5cbmNsYXNzIHZpcnR1YWwgbWFwID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+IGJvb2xcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiBjaGFyXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+IGludFxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+IHN0cmluZ1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gcG9zaXRpb24gPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBwb3NfY251bSBpblxuICAgICAgICB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+IGxvY2F0aW9uID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGluXG4gICAgICAgIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gbG9jYXRpb25fc3RhY2sgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBsb2MgLT4gJ2EgbG9jID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBsb2MgaW5cbiAgICAgICAgeyB0eHQ7IGxvYyB9XG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+IGxvbmdpZGVudCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBMaWRlbnQgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgTGRvdCAoYSwgYilcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgYiBpblxuICAgICAgICAgICAgTGFwcGx5IChhLCBiKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+IGxvbmdpZGVudF9sb2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+IHJlY19mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+IGRpcmVjdGlvbl9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gcHJpdmF0ZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gbXV0YWJsZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gdmlydHVhbF9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiBvdmVycmlkZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+IGNsb3NlZF9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+IGxhYmVsID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gYXJnX2xhYmVsID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gTm9sYWJlbFxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgTGFiZWxsZWQgYVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgT3B0aW9uYWwgYVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gdmFyaWFuY2UgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gaW5qZWN0aXZpdHkgPSBmdW4geCAtPiB4XG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiBjb25zdGFudCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgUGNvbnN0X2ludGVnZXIgKGEsIGIpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgYSBpblxuICAgICAgICAgICAgUGNvbnN0X2NoYXIgYVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgaW5cbiAgICAgICAgICAgIFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQY29uc3RfZmxvYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgaW5cbiAgICAgICAgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgYiBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiBhdHRyaWJ1dGVzID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gcGF5bG9hZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUFN0ciBhXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIFBTaWcgYVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQVHlwIGFcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUFBhdCAoYSwgYilcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gY29yZV90eXBlID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUHR5cF92YXIgYVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQdHlwX2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUHR5cF90dXBsZSBhXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBQdHlwX29iamVjdCAoYSwgYilcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHR5cF9jbGFzcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIFB0eXBfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGluXG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBhIGluXG4gICAgICAgICAgICBQdHlwX3BhY2thZ2UgYVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHR5cF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGJcbiAgICAgICAgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+IHJvd19maWVsZCA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFJ0YWcgKGEsIGIsIGMpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBSaW5oZXJpdCBhXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgT3RhZyAoYSwgYilcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIE9pbmhlcml0IGFcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiBwYXR0ZXJuID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiBwYXR0ZXJuX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gUHBhdF9hbnlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBQcGF0X2FsaWFzIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGIgaW5cbiAgICAgICAgICAgIFBwYXRfaW50ZXJ2YWwgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF90dXBsZSBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgUHBhdF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF9hcnJheSBhXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3IgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHlwZSBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfbGF6eSBhXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdW5wYWNrIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQcGF0X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24gPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHBfaWRlbnQgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBhIGluXG4gICAgICAgICAgICBQZXhwX2Z1bmN0aW9uIGFcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gZCBpblxuICAgICAgICAgICAgUGV4cF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgUGV4cF9tYXRjaCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBQZXhwX3RyeSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX3R1cGxlIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBQZXhwX2ZpZWxkIChhLCBiKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX3NldGZpZWxkIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfYXJyYXkgYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9zZXF1ZW5jZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF93aGlsZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgICBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSlcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQZXhwX2NvZXJjZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBpblxuICAgICAgICAgICAgUGV4cF9zZW5kIChhLCBiKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHBfbmV3IGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9zZXRpbnN0dmFyIChhLCBiKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9vdmVycmlkZSBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX2Fzc2VydCBhXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfbGF6eSBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQZXhwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQZXhwX29iamVjdCBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX25ld3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBQZXhwX3BhY2sgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfb3BlbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBhIGluXG4gICAgICAgICAgICBQZXhwX2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IFBleHBfdW5yZWFjaGFibGVcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiBjYXNlID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBpblxuICAgICAgICB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9XG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiBsZXRvcCA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGluXG4gICAgICAgIHsgbGV0XzsgYW5kczsgYm9keSB9XG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gYmluZGluZ19vcCA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBpblxuICAgICAgICB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gdmFsdWVfZGVzY3JpcHRpb24gPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGluXG4gICAgICAgIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9XG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjIGluXG4gICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gUHR5cGVfYWJzdHJhY3RcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHR5cGVfdmFyaWFudCBhXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHR5cGVfcmVjb3JkIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IFB0eXBlX29wZW5cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+IGxhYmVsX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUGNzdHJfdHVwbGUgYVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3JlY29yZCBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiB0eXBlX2V4dGVuc2lvbiA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGluXG4gICAgICAgIGxldCBwZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiB0eXBlX2V4Y2VwdGlvbiA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUGV4dF9kZWNsIChhLCBiLCBjKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHRfcmViaW5kIGFcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBjdHlfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgUGN0eV9zaWduYXR1cmUgYVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgYyBpblxuICAgICAgICAgICAgUGN0eV9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBQY3R5X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgYSBpblxuICAgICAgICAgICAgUGN0Zl9pbmhlcml0IGFcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfdmFsIGFcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfbWV0aG9kIGFcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBjdGZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjdGZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGNsYXNzX2luZm9zIC0+ICdhIGNsYXNzX2luZm9zID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiBjbGFzc19leHByID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2xfZGVzYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUGNsX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgZCBpblxuICAgICAgICAgICAgUGNsX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNsX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGMgaW5cbiAgICAgICAgICAgIFBjbF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGNsX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBQY2xfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiBjbGFzc19maWVsZCA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiBjbGFzc19maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgaW5cbiAgICAgICAgICAgIFBjZl9pbmhlcml0IChhLCBiLCBjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX3ZhbCBhXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfbWV0aG9kIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfY29uc3RyYWludCBhXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBjZl9pbml0aWFsaXplciBhXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBjZl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY2ZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiBjbGFzc19maWVsZF9raW5kID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgQ2ZrX3ZpcnR1YWwgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIENma19jb25jcmV0ZSAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+IGNsYXNzX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiBtb2R1bGVfdHlwZSA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiBtb2R1bGVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG10eV9pZGVudCBhXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBQbXR5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQbXR5X2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgaW5cbiAgICAgICAgICAgIFBtdHlfd2l0aCAoYSwgYilcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgUG10eV90eXBlb2YgYVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUG10eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG10eV9hbGlhcyBhXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiBmdW5jdG9yX3BhcmFtZXRlciA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IFVuaXRcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgTmFtZWQgKGEsIGIpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+IHNpZ25hdHVyZSA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiBzaWduYXR1cmVfaXRlbSA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBpblxuICAgICAgICB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ192YWx1ZSBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQc2lnX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHNpZ190eXBleHQgYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfb3BlbiBhXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfaW5jbHVkZSBhXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3MgYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBzaWdfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHNpZ19leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBpblxuICAgICAgICB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgaW5cbiAgICAgICAgeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgaW5cbiAgICAgICAgeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9XG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvcyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIG9wZW5faW5mb3MgLT4gJ2Egb3Blbl9pbmZvcyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAnYSBpbmNsdWRlX2luZm9zID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiB3aXRoX2NvbnN0cmFpbnQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdWxlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHN1YnN0IChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gbW9kdWxlX2V4cHIgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gbW9kdWxlX2V4cHJfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBtb2RfaWRlbnQgYVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUG1vZF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgUG1vZF9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIFBtb2RfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUG1vZF91bnBhY2sgYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUG1vZF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiBzdHJ1Y3R1cmUgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgaW5cbiAgICAgICAgeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXZhbCAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBQc3RyX3ZhbHVlIChhLCBiKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX3ByaW1pdGl2ZSBhXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQc3RyX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZXh0IGFcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBQc3RyX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHR5cGUgYVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX29wZW4gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2NsYXNzIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfaW5jbHVkZSBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBQc3RyX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+IHZhbHVlX2JpbmRpbmcgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGluXG4gICAgICAgIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGluXG4gICAgICAgIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9XG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+IHRvcGxldmVsX3BocmFzZSA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGVmIGFcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGlyIGFcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGluXG4gICAgICAgIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGluXG4gICAgICAgIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUGRpcl9zdHJpbmcgYVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQZGlyX2ludCAoYSwgYilcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgUGRpcl9pZGVudCBhXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGEgaW5cbiAgICAgICAgICAgIFBkaXJfYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiBjYXNlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgaXRlciA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgbGlzdCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBvcHRpb24gLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiB1bml0XG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgc2VsZiNzdHJpbmcgcG9zX2ZuYW1lO1xuICAgICAgICBzZWxmI2ludCBwb3NfbG51bTtcbiAgICAgICAgc2VsZiNpbnQgcG9zX2JvbDtcbiAgICAgICAgc2VsZiNpbnQgcG9zX2NudW1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydDtcbiAgICAgICAgc2VsZiNwb3NpdGlvbiBsb2NfZW5kO1xuICAgICAgICBzZWxmI2Jvb2wgbG9jX2dob3N0XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGxvYyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgX2EgdHh0O1xuICAgICAgICBzZWxmI2xvY2F0aW9uIGxvY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnQgYTtcbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGJcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnQgYlxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+IHVuaXQgPSBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiB1bml0ID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+ICgpXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPiBzZWxmI3N0cmluZyBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiB1bml0ID0gZnVuIF8gLT4gKClcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+IHNlbGYjY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI2xvY2F0aW9uIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lO1xuICAgICAgICBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBhO1xuICAgICAgICBzZWxmI3BheWxvYWQgYlxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUFNpZyBhIC0+IHNlbGYjc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQVHlwIGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+ICgpXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGJcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhO1xuICAgICAgICAgICAgc2VsZiNjbG9zZWRfZmxhZyBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPiBzZWxmI3BhY2thZ2VfdHlwZSBhXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYilcbiAgICAgICAgICBiXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwcmZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjYm9vbCBiO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IE9pbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwcGF0X2xvYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+ICgpXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPiBzZWxmI2xvYyBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGFcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb25zdGFudCBhO1xuICAgICAgICAgICAgc2VsZiNjb25zdGFudCBiXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGIpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYlxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGIpXG4gICAgICAgICAgICAgIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGJcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGJcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPiBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYlxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZXhwX2xvYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGFcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+IHNlbGYjY2FzZXMgYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGM7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZFxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGIpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2Nhc2VzIGJcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNjYXNlcyBiXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYztcbiAgICAgICAgICAgIHNlbGYjZGlyZWN0aW9uX2ZsYWcgZDtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGJcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfcGFjayBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT4gc2VsZiNsZXRvcCBhXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiAoKVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBjX2xocztcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkO1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcGNfcmhzXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBzZWxmI2JpbmRpbmdfb3AgbGV0XztcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzO1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gYm9keVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3A7XG4gICAgICAgIHNlbGYjcGF0dGVybiBwYm9wX3BhdDtcbiAgICAgICAgc2VsZiNleHByZXNzaW9uIHBib3BfZXhwO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBib3BfbG9jXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWU7XG4gICAgICAgIHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdmFsX2xvY1xuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZTtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI3ZhcmlhbmNlIGE7XG4gICAgICAgICAgICAgIHNlbGYjaW5qZWN0aXZpdHkgYilcbiAgICAgICAgICAgICAgYilcbiAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjbG9jYXRpb24gYylcbiAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvY1xuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+ICgpXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoKVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lO1xuICAgICAgICBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGxkX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWU7XG4gICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzO1xuICAgICAgICBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2RfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gdW5pdCA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjdmFyaWFuY2UgYTtcbiAgICAgICAgICAgICAgc2VsZiNpbmplY3Rpdml0eSBiKVxuICAgICAgICAgICAgICBiKVxuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZTtcbiAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPiBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNjbGFzc190eXBlIGNcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI29wZW5fZGVzY3JpcHRpb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfdHlwZSBiXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHNcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY3RmX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+IHNlbGYjY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI211dGFibGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBjO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBkKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBjO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBkKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiN2YXJpYW5jZSBhO1xuICAgICAgICAgICAgICBzZWxmI2luamVjdGl2aXR5IGIpXG4gICAgICAgICAgICAgIGIpXG4gICAgICAgICAgcGNpX3BhcmFtcztcbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWU7XG4gICAgICAgIF9hIHBjaV9leHByO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGM7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgZFxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGI7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgY1xuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX3R5cGUgYlxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI29wZW5fZGVzY3JpcHRpb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBiXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkc1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNmX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGNcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNtdXRhYmxlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiNjbGFzc19maWVsZF9raW5kIGMpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiNjbGFzc19maWVsZF9raW5kIGMpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI292ZXJyaWRlX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG10eV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNzaWduYXR1cmUgYVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPiBzZWxmI21vZHVsZV9leHByIGFcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwc2lnX2xvY1xuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT4gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPiBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHRlbnNpb24gYTtcbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBiXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWU7XG4gICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbWRfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lO1xuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0O1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1zX2xvY1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZTtcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG10ZF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBvcGVuX2luZm9zIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIF9hIHBvcGVuX2V4cHI7XG4gICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIF9hIHBpbmNsX21vZDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbW9kX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYlxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBiXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYlxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfYmluZGluZyBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT4gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4dGVuc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybiBwdmJfcGF0O1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdmJfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lO1xuICAgICAgICBzZWxmI21vZHVsZV9leHByIHBtYl9leHByO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1iX2xvY1xuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT4gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZGlyX2xvY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnQgYVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+IHNlbGYjYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2FjY10gZm9sZCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gJ2FjYyAtPiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBsaXN0IC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIG9wdGlvbiAtPiAnYWNjIC0+ICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiAnYWNjIC0+ICdhY2NcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNpbnQgcG9zX2xudW0gYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfYm9sIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNpbnQgcG9zX2NudW0gYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX2VuZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGxvYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IF9hIHR4dCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gYWNjXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IE9wdGlvbmFsIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+IHNlbGYjY2hhciBhIGFjY1xuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXlsb2FkIGIgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+IHNlbGYjc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUFNpZyBhIC0+IHNlbGYjc2lnbmF0dXJlIGEgYWNjXG4gICAgICAgIHwgUFR5cCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBhY2NcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+IHNlbGYjcGFja2FnZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBiIGFjY1xuICAgICAgICBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYm9vbCBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IE9pbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBhY2NcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYSBhY2NcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0YW50IGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT4gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjY1xuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT4gc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhIGFjY1xuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT4gc2VsZiNjYXNlcyBhIGFjY1xuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGQgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfbGF6eSBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhIGFjY1xuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPiBzZWxmI2xldG9wIGEgYWNjXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gYWNjXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBjX2xocyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwY19yaHMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGJvZHkgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBjIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwdHlwZV9jc3RycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBhY2NcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT4gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFB0eXBlX29wZW4gLT4gYWNjXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgYWNjXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+IHNlbGYjY2xhc3NfdHlwZSBhIGFjY1xuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBkIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuICAgICAgICAgIGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcGNpX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gX2EgcGNpX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGQgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNzaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2NcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IGFjY1xuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPiBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPiBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPiBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPiBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgcG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgcGluY2xfbW9kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPiBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2NcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPiBzZWxmI3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFB0b3BfZGlyIGEgLT4gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBhY2NcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50IGEgYWNjXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT4gc2VsZiNib29sIGEgYWNjXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnYWNjXSBmb2xkX21hcCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiAnYWNjIC0+IGJvb2wgKiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gJ2FjYyAtPiBjaGFyICogJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiAnYWNjIC0+IGludCAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3RcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPiAnYSBsaXN0IC0+ICdhY2MgLT4gJ2EgbGlzdCAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIG9wdGlvbiAtPiAnYWNjIC0+ICdhIG9wdGlvbiAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiAnYWNjIC0+IHN0cmluZyAqICdhY2NcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdhY2MgLT4gcG9zaXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gYWNjIC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUsIGFjYyA9IHNlbGYjc3RyaW5nIHBvc19mbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtLCBhY2MgPSBzZWxmI2ludCBwb3NfbG51bSBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19ib2wsIGFjYyA9IHNlbGYjaW50IHBvc19ib2wgYWNjIGluXG4gICAgICAgIGxldCBwb3NfY251bSwgYWNjID0gc2VsZiNpbnQgcG9zX2NudW0gYWNjIGluXG4gICAgICAgICh7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0sIGFjYylcblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+ICdhY2MgLT4gbG9jYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gYWNjIC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQsIGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGFjYyBpblxuICAgICAgICBsZXQgbG9jX2VuZCwgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGFjYyBpblxuICAgICAgICBsZXQgbG9jX2dob3N0LCBhY2MgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGFjYyBpblxuICAgICAgICAoeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9LCBhY2MpXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAnYWNjIC0+IGxvY2F0aW9uX3N0YWNrICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvY1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIGxvYyAtPiAnYWNjIC0+ICdhIGxvYyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHR4dCwgYWNjID0gX2EgdHh0IGFjYyBpblxuICAgICAgICBsZXQgbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBhY2MgaW5cbiAgICAgICAgKHsgdHh0OyBsb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAnYWNjIC0+IGxvbmdpZGVudCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChMaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgKExkb3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIChMYXBwbHkgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ2FjYyAtPiBsb25naWRlbnRfbG9jICogJ2FjYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gJ2FjYyAtPiByZWNfZmxhZyAqICdhY2MgPSBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdhY2MgLT4gZGlyZWN0aW9uX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiAnYWNjIC0+IHByaXZhdGVfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdhY2MgLT4gbXV0YWJsZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ2FjYyAtPiB2aXJ0dWFsX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+ICdhY2MgLT4gb3ZlcnJpZGVfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiAnYWNjIC0+IGNsb3NlZF9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+ICdhY2MgLT4gbGFiZWwgKiAnYWNjID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gJ2FjYyAtPiBhcmdfbGFiZWwgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IChOb2xhYmVsLCBhY2MpXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoTGFiZWxsZWQgYSwgYWNjKVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKE9wdGlvbmFsIGEsIGFjYylcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdhY2MgLT4gdmFyaWFuY2UgKiAnYWNjID0gZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAnYWNjIC0+IGluamVjdGl2aXR5ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdhY2MgLT4gY29uc3RhbnQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9pbnRlZ2VyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NoYXIgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3RfY2hhciBhLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9jYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X2Zsb2F0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiAnYWNjIC0+IGF0dHJpYnV0ZSAqICdhY2MgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCwgYWNjID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBhY2MgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGFjYyBpblxuICAgICAgICAoeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiAnYWNjIC0+IGV4dGVuc2lvbiAqICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BheWxvYWQgYiBhY2MgaW5cbiAgICAgICAgKChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+ICdhY2MgLT4gYXR0cmlidXRlcyAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ2FjYyAtPiBwYXlsb2FkICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQU3RyIGEsIGFjYylcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBTaWcgYSwgYWNjKVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUFR5cCBhLCBhY2MpXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQUGF0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiAnYWNjIC0+IGNvcmVfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiBjb3JlX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IChQdHlwX2FueSwgYWNjKVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfdmFyIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfYXJyb3cgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9jb25zdHIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfb2JqZWN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9jbGFzcyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2FsaWFzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfdmFyaWFudCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfcG9seSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGFja2FnZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9wYWNrYWdlIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2V4dGVuc2lvbiBhLCBhY2MpXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+ICdhY2MgLT4gcGFja2FnZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBiIGFjY1xuICAgICAgICBpblxuICAgICAgICAoKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+ICdhY2MgLT4gcm93X2ZpZWxkICogJ2FjYyA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHByZl9kZXNjLCBhY2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHJmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdhY2MgLT4gcm93X2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Jvb2wgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChSdGFnIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFJpbmhlcml0IGEsIGFjYylcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gJ2FjYyAtPiBvYmplY3RfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MsIGFjYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjXG4gICAgICAgIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBvYmplY3RfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoT3RhZyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChPaW5oZXJpdCBhLCBhY2MpXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gJ2FjYyAtPiBwYXR0ZXJuICogJ2FjYyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MsIGFjYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAnYWNjIC0+IHBhdHRlcm5fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IChQcGF0X2FueSwgYWNjKVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdmFyIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9hbGlhcyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdGFudCBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb25zdGFudCBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfaW50ZXJ2YWwgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdHJ1Y3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3ZhcmlhbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3JlY29yZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9hcnJheSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X29yIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2xhenkgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF91bnBhY2sgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X29wZW4gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ2FjYyAtPiBleHByZXNzaW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAnYWNjIC0+IGV4cHJlc3Npb25fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0YW50IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2FzZXMgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2Z1bmN0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBkIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZnVuIChhLCBiLCBjLCBkKSwgYWNjKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9hcHBseSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX21hdGNoIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3RyeSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb25zdHJ1Y3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3ZhcmlhbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcmVjb3JkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9maWVsZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfYXJyYXkgYSwgYWNjKVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NlcXVlbmNlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF93aGlsZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgYWNjIGluXG4gICAgICAgICAgICBsZXQgZSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvZXJjZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2VuZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9uZXcgYSwgYWNjKVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZXRpbnN0dmFyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9vdmVycmlkZSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG1vZHVsZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2Fzc2VydCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xhenkgYSwgYWNjKVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcG9seSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX29iamVjdCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9uZXd0eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcGFjayBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfb3BlbiAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xldG9wIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRvcCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gKFBleHBfdW5yZWFjaGFibGUsIGFjYylcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAnYWNjIC0+IGNhc2UgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNfbGhzLCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGFjYyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBhY2MgaW5cbiAgICAgICAgbGV0IHBjX3JocywgYWNjID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBhY2MgaW5cbiAgICAgICAgKHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0sIGFjYylcblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+ICdhY2MgLT4gbGV0b3AgKiAnYWNjID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSBhY2MgLT5cbiAgICAgICAgbGV0IGxldF8sIGFjYyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGFjYyBpblxuICAgICAgICBsZXQgYW5kcywgYWNjID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGFjYyBpblxuICAgICAgICBsZXQgYm9keSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGJvZHkgYWNjIGluXG4gICAgICAgICh7IGxldF87IGFuZHM7IGJvZHkgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+ICdhY2MgLT4gYmluZGluZ19vcCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGJvcF9vcCwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcCBhY2MgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0LCBhY2MgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgYWNjIGluXG4gICAgICAgIGxldCBwYm9wX2V4cCwgYWNjID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGFjYyBpblxuICAgICAgICBsZXQgcGJvcF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGJvcF9sb2MgYWNjIGluXG4gICAgICAgICh7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUsIGFjYyA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGFjYyBpblxuICAgICAgICAoeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IHR5cGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNsb2NhdGlvbiBjIGFjYyBpblxuICAgICAgICAgICAgICAoKGEsIGIsIGMpLCBhY2MpKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kLCBhY2MgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0LCBhY2MgPVxuICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0IGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGFjYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgYWNjIClcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ2FjYyAtPiB0eXBlX2tpbmQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoUHR5cGVfYWJzdHJhY3QsIGFjYylcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBlX3ZhcmlhbnQgYSwgYWNjKVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwZV9yZWNvcmQgYSwgYWNjKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gKFB0eXBlX29wZW4sIGFjYylcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvblxuICAgICAgICA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gbGFiZWxfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNkX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MsIGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX3JlcywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gJ2FjYyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNzdHJfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3N0cl9yZWNvcmQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ2FjYyAtPiB0eXBlX2V4dGVuc2lvbiAqICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGgsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBhY2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAnYWNjIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqICdhY2MgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9raW5kLCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAnYWNjIC0+IHR5cGVfZXhjZXB0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IsIGFjYyA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXh0X2RlY2wgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHRfcmViaW5kIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiAnYWNjIC0+IGNsYXNzX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc190eXBlX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X3NpZ25hdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc190eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9hcnJvdyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ2FjYyAtPiBjbGFzc19zaWduYXR1cmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgKHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIDogY2xhc3NfdHlwZV9maWVsZCAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdGZfaW5oZXJpdCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjLCBkKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY3RmX3ZhbCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjLCBkKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY3RmX21ldGhvZCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfY29uc3RyYWludCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdGZfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG4gICAgICAgICAgYWNjIC0+XG4gICAgICAgIGxldCBwY2lfdmlydCwgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgYWNjIGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBwY2lfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2V4cHIsIGFjYyA9IF9hIHBjaV9leHByIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKCB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0sXG4gICAgICAgICAgYWNjIClcblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvblxuICAgICAgICA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gY2xhc3NfZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+ICdhY2MgLT4gY2xhc3NfZXhwciAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2xfZGVzYywgYWNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX2V4cHJfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9zdHJ1Y3R1cmUgYSwgYWNjKVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgZCBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfZnVuIChhLCBiLCBjLCBkKSwgYWNjKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2xfYXBwbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBjIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9sZXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ2FjYyAtPiBjbGFzc19zdHJ1Y3R1cmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiwgYWNjID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgKHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+ICdhY2MgLT4gY2xhc3NfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzY1xuICAgICAgICA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc19maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9pbmhlcml0IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiwgYyksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX3ZhbCBhLCBhY2MpXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfbWV0aG9kIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfY29uc3RyYWludCBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfaW5pdGlhbGl6ZXIgYSwgYWNjKVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kXG4gICAgICAgIDogY2xhc3NfZmllbGRfa2luZCAtPiAnYWNjIC0+IGNsYXNzX2ZpZWxkX2tpbmQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChDZmtfdmlydHVhbCBhLCBhY2MpXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKENma19jb25jcmV0ZSAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gY2xhc3NfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAnYWNjIC0+IG1vZHVsZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYywgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2NcbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gbW9kdWxlX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfc2lnbmF0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2Z1bmN0b3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X3dpdGggKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X3R5cGVvZiBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfYWxpYXMgYSwgYWNjKVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyXG4gICAgICAgIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ2FjYyAtPiBmdW5jdG9yX3BhcmFtZXRlciAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gKFVuaXQsIGFjYylcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKE5hbWVkIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAnYWNjIC0+IHNpZ25hdHVyZSAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdhY2MgLT4gc2lnbmF0dXJlX2l0ZW0gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYywgYWNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGFjYyBpblxuICAgICAgICAoeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ192YWx1ZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBlc3Vic3QgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBleHQgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19leGNlcHRpb24gYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHN1YnN0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19yZWNtb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHR5cGVzdWJzdCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX29wZW4gYSwgYWNjKVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19pbmNsdWRlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfY2xhc3MgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfY2xhc3NfdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19leHRlbnNpb24gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gbW9kdWxlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG1zX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0LCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGFjYyBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtc19sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF90eXBlLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgKiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIsIGFjYyA9IF9hIHBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogb3Blbl9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IG9wZW5fZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uXG4gICAgICAgIDogb3Blbl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IG9wZW5fZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgKiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QsIGFjYyA9IF9hIHBpbmNsX21vZCBhY2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdhY2MgLT4gd2l0aF9jb25zdHJhaW50ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF90eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2R1bGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfdHlwZXN1YnN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHN1YnN0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gJ2FjYyAtPiBtb2R1bGVfZXhwciAqICdhY2MgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjXG4gICAgICAgIDogbW9kdWxlX2V4cHJfZGVzYyAtPiAnYWNjIC0+IG1vZHVsZV9leHByX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX3N0cnVjdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9mdW5jdG9yIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2FwcGx5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF91bnBhY2sgYSwgYWNjKVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ2FjYyAtPiBzdHJ1Y3R1cmUgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAnYWNjIC0+IHN0cnVjdHVyZV9pdGVtICogJ2FjYyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MsIGFjYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfZXZhbCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl92YWx1ZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfcHJpbWl0aXZlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3R5cGV4dCBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9yZWNtb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfbW9kdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX29wZW4gYSwgYWNjKVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9jbGFzcyBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9jbGFzc190eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfaW5jbHVkZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9leHRlbnNpb24gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ2FjYyAtPiB2YWx1ZV9iaW5kaW5nICogJ2FjYyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQsIGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICBsZXQgcHZiX2V4cHIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwdmJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgYWNjIGluXG4gICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiAnYWNjIC0+IG1vZHVsZV9iaW5kaW5nICogJ2FjYyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtYl9leHByLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdhY2MgLT4gdG9wbGV2ZWxfcGhyYXNlICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHRvcF9kZWYgYSwgYWNjKVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFB0b3BfZGlyIGEsIGFjYylcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAgICAgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ2FjYyAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgIDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+ICdhY2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50ICogJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MsIGFjYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgYWNjIGluXG4gICAgICAgICh7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAnYWNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9zdHJpbmcgYSwgYWNjKVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9pbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYm9vbCBhIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfYm9vbCBhLCBhY2MpXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAnYWNjIC0+IGNhc2VzICogJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydjdHhdIG1hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICdjdHggLT4gYm9vbCAtPiBib29sXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6ICdjdHggLT4gY2hhciAtPiBjaGFyXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogJ2N0eCAtPiBpbnQgLT4gaW50XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAnY3R4IC0+IHN0cmluZyAtPiBzdHJpbmdcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6ICdjdHggLT4gcG9zaXRpb24gLT4gcG9zaXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSA9IHNlbGYjc3RyaW5nIGN0eCBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgY3R4IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgY3R4IHBvc19ib2wgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtID0gc2VsZiNpbnQgY3R4IHBvc19jbnVtIGluXG4gICAgICAgIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogJ2N0eCAtPiBsb2NhdGlvbiAtPiBsb2NhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX2VuZCBpblxuICAgICAgICBsZXQgbG9jX2dob3N0ID0gc2VsZiNib29sIGN0eCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiAnY3R4IC0+IGxvY2F0aW9uX3N0YWNrIC0+IGxvY2F0aW9uX3N0YWNrID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGxvYyAtPiAnYSBsb2MgPVxuICAgICAgZnVuIF9hIGN0eCB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIGN0eCB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGxvYyBpblxuICAgICAgICB7IHR4dDsgbG9jIH1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiAnY3R4IC0+IGxvbmdpZGVudCAtPiBsb25naWRlbnQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBMaWRlbnQgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBMZG90IChhLCBiKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIExhcHBseSAoYSwgYilcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogJ2N0eCAtPiBsb25naWRlbnRfbG9jIC0+IGxvbmdpZGVudF9sb2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6ICdjdHggLT4gcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6ICdjdHggLT4gZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgPVxuICAgICAgZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogJ2N0eCAtPiBwcml2YXRlX2ZsYWcgLT4gcHJpdmF0ZV9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6ICdjdHggLT4gbXV0YWJsZV9mbGFnIC0+IG11dGFibGVfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiAnY3R4IC0+IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogJ2N0eCAtPiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgPVxuICAgICAgZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiAnY3R4IC0+IGNsb3NlZF9mbGFnIC0+IGNsb3NlZF9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIGxhYmVsIDogJ2N0eCAtPiBsYWJlbCAtPiBsYWJlbCA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogJ2N0eCAtPiBhcmdfbGFiZWwgLT4gYXJnX2xhYmVsID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IE5vbGFiZWxcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBMYWJlbGxlZCBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgT3B0aW9uYWwgYVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogJ2N0eCAtPiB2YXJpYW5jZSAtPiB2YXJpYW5jZSA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6ICdjdHggLT4gaW5qZWN0aXZpdHkgLT4gaW5qZWN0aXZpdHkgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBjb25zdGFudCA6ICdjdHggLT4gY29uc3RhbnQgLT4gY29uc3RhbnQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9pbnRlZ2VyIChhLCBiKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGN0eCBhIGluXG4gICAgICAgICAgICBQY29uc3RfY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjdHggYyBpblxuICAgICAgICAgICAgUGNvbnN0X3N0cmluZyAoYSwgYiwgYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGNvbnN0X2Zsb2F0IChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6ICdjdHggLT4gYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSA9XG4gICAgICBmdW4gY3R4IHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBjdHggYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGF0dHJfbG9jIGluXG4gICAgICAgIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiAnY3R4IC0+IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBjdHggYiBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogJ2N0eCAtPiBhdHRyaWJ1dGVzIC0+IGF0dHJpYnV0ZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6ICdjdHggLT4gcGF5bG9hZCAtPiBwYXlsb2FkID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBTdHIgYVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUFNpZyBhXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQVHlwIGFcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQUGF0IChhLCBiKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6ICdjdHggLT4gY29yZV90eXBlIC0+IGNvcmVfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIGN0eCBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiAnY3R4IC0+IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyIGFcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUHR5cF9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX3R1cGxlIGFcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX29iamVjdCAoYSwgYilcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2NsYXNzIChhLCBiKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2FsaWFzIChhLCBiKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjdHggYyBpblxuICAgICAgICAgICAgUHR5cF92YXJpYW50IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlIGFcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogJ2N0eCAtPiBwYWNrYWdlX3R5cGUgLT4gcGFja2FnZV90eXBlID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBiXG4gICAgICAgIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6ICdjdHggLT4gcm93X2ZpZWxkIC0+IHJvd19maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBjdHggcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogJ2N0eCAtPiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBSdGFnIChhLCBiLCBjKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFJpbmhlcml0IGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiAnY3R4IC0+IG9iamVjdF9maWVsZCAtPiBvYmplY3RfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgY3R4IHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIE90YWcgKGEsIGIpXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgT2luaGVyaXQgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiAnY3R4IC0+IHBhdHRlcm4gLT4gcGF0dGVybiA9XG4gICAgICBmdW4gY3R4IHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBjdHggcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6ICdjdHggLT4gcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gUHBhdF9hbnlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3ZhciBhXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X2FsaWFzIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0YW50IGFcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfaW50ZXJ2YWwgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHVwbGUgYVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2FycmF5IGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X29yIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3R5cGUgYVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9sYXp5IGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdW5wYWNrIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9leGNlcHRpb24gYVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogJ2N0eCAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24gPVxuICAgICAgZnVuIGN0eCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4IHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiAnY3R4IC0+IGV4cHJlc3Npb25fZGVzYyAtPiBleHByZXNzaW9uX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfaWRlbnQgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0YW50IGFcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfZnVuY3Rpb24gYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZCBpblxuICAgICAgICAgICAgUGV4cF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbWF0Y2ggKGEsIGIpXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3RyeSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF90dXBsZSBhXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX2ZpZWxkIChhLCBiKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX3NldGZpZWxkIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2FycmF5IGFcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9zZXF1ZW5jZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3doaWxlIChhLCBiKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGN0eCBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZSBpblxuICAgICAgICAgICAgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2NvZXJjZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlbmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfbmV3IGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NldGluc3R2YXIgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9vdmVycmlkZSBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2Fzc2VydCBhXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2xhenkgYVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9vYmplY3QgYVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX25ld3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9wYWNrIGFcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfb3BlbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9sZXRvcCBhXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9leHRlbnNpb24gYVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gUGV4cF91bnJlYWNoYWJsZVxuXG4gICAgbWV0aG9kIGNhc2UgOiAnY3R4IC0+IGNhc2UgLT4gY2FzZSA9XG4gICAgICBmdW4gY3R4IHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBjdHggcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfZ3VhcmQgaW5cbiAgICAgICAgbGV0IHBjX3JocyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfcmhzIGluXG4gICAgICAgIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH1cblxuICAgIG1ldGhvZCBsZXRvcCA6ICdjdHggLT4gbGV0b3AgLT4gbGV0b3AgPVxuICAgICAgZnVuIGN0eCB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBjdHggbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgY3R4IGFuZHMgaW5cbiAgICAgICAgbGV0IGJvZHkgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGJvZHkgaW5cbiAgICAgICAgeyBsZXRfOyBhbmRzOyBib2R5IH1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogJ2N0eCAtPiBiaW5kaW5nX29wIC0+IGJpbmRpbmdfb3AgPVxuICAgICAgZnVuIGN0eCB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBjdHggcGJvcF9wYXQgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwID0gc2VsZiNleHByZXNzaW9uIGN0eCBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwYm9wX2xvYyBpblxuICAgICAgICB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgY3R4IHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZhbF9sb2MgaW5cbiAgICAgICAgeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiB0eXBlX2RlY2xhcmF0aW9uIC0+IHR5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjdHggYyBpblxuICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICBjdHggcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBjdHggcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cGVfbG9jIGluXG4gICAgICAgIHtcbiAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiAnY3R4IC0+IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IFB0eXBlX2Fic3RyYWN0XG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwZV92YXJpYW50IGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHR5cGVfcmVjb3JkIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IFB0eXBlX29wZW5cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6ICdjdHggLT4gbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggcGNkX3ZhcnMgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2RfbG9jIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUGNzdHJfdHVwbGUgYVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY3N0cl9yZWNvcmQgYVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogJ2N0eCAtPiB0eXBlX2V4dGVuc2lvbiAtPiB0eXBlX2V4dGVuc2lvbiA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogJ2N0eCAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgICAgIGZ1biBjdHggeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGN0eCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogJ2N0eCAtPiB0eXBlX2V4Y2VwdGlvbiAtPiB0eXBlX2V4Y2VwdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6ICdjdHggLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHRfZGVjbCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4dF9yZWJpbmQgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiAnY3R4IC0+IGNsYXNzX3R5cGUgLT4gY2xhc3NfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIGN0eCBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVzYyAtPiBjbGFzc190eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY3R5X2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3R5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc190eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQY3R5X2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjdHlfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiAnY3R4IC0+IGNsYXNzX3NpZ25hdHVyZSAtPiBjbGFzc19zaWduYXR1cmUgPVxuICAgICAgZnVuIGN0eCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgY3R4IHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgY3R4IHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2luaGVyaXQgYVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl92YWwgYVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9tZXRob2QgYVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGN0Zl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGNsYXNzX2luZm9zIC0+ICdhIGNsYXNzX2luZm9zID1cbiAgICAgIGZ1biBfYSBjdHhcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgY3R4IHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiAnY3R4IC0+IGNsYXNzX2V4cHIgLT4gY2xhc3NfZXhwciA9XG4gICAgICBmdW4gY3R4IHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgY3R4IHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX2V4cHJfZGVzYyAtPiBjbGFzc19leHByX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQY2xfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBjdHggZCBpblxuICAgICAgICAgICAgUGNsX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2xfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjdHggYyBpblxuICAgICAgICAgICAgUGNsX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY2xfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUGNsX29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogJ2N0eCAtPiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlID1cbiAgICAgIGZ1biBjdHggeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBjdHggcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgY3R4IHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgY3R4IHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogJ2N0eCAtPiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjZl9pbmhlcml0IChhLCBiLCBjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfdmFsIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX21ldGhvZCBhXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9pbml0aWFsaXplciBhXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQY2ZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2tpbmQgLT4gY2xhc3NfZmllbGRfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgQ2ZrX3ZpcnR1YWwgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgQ2ZrX2NvbmNyZXRlIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBjbGFzc19kZWNsYXJhdGlvbiAtPiBjbGFzc19kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogJ2N0eCAtPiBtb2R1bGVfdHlwZSAtPiBtb2R1bGVfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBjdHggcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVzYyAtPiBtb2R1bGVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X2lkZW50IGFcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtdHlfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGN0eCBiIGluXG4gICAgICAgICAgICBQbXR5X3dpdGggKGEsIGIpXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X3R5cGVvZiBhXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfYWxpYXMgYVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogJ2N0eCAtPiBmdW5jdG9yX3BhcmFtZXRlciAtPiBmdW5jdG9yX3BhcmFtZXRlciA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiBVbml0XG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgTmFtZWQgKGEsIGIpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogJ2N0eCAtPiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiAnY3R4IC0+IHNpZ25hdHVyZV9pdGVtIC0+IHNpZ25hdHVyZV9pdGVtID1cbiAgICAgIGZ1biBjdHggeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBjdHggcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzaWdfbG9jIGluXG4gICAgICAgIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9XG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ192YWx1ZSBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXh0IGFcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2RzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R0eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19vcGVuIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfaW5jbHVkZSBhXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc2lnX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiAnY3R4IC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgPVxuICAgICAgZnVuIGN0eCB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1kX2xvYyBpblxuICAgICAgICB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXNfbG9jIGluXG4gICAgICAgIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXRkX2xvYyBpblxuICAgICAgICB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH1cblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIG9wZW5faW5mb3MgLT4gJ2Egb3Blbl9pbmZvcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgY3R4IHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6ICdjdHggLT4gb3Blbl9kZXNjcmlwdGlvbiAtPiBvcGVuX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ2EgaW5jbHVkZV9pbmZvc1xuICAgICAgICA9XG4gICAgICBmdW4gX2EgY3R4IHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgY3R4IHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6ICdjdHggLT4gd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHVsZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHN1YnN0IChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogJ2N0eCAtPiBtb2R1bGVfZXhwciAtPiBtb2R1bGVfZXhwciA9XG4gICAgICBmdW4gY3R4IHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBjdHggcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6ICdjdHggLT4gbW9kdWxlX2V4cHJfZGVzYyAtPiBtb2R1bGVfZXhwcl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX2lkZW50IGFcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF91bnBhY2sgYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2RfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiAnY3R4IC0+IHN0cnVjdHVyZSAtPiBzdHJ1Y3R1cmUgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gPVxuICAgICAgZnVuIGN0eCB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIGN0eCBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHN0cl9sb2MgaW5cbiAgICAgICAgeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl9ldmFsIChhLCBiKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl92YWx1ZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfcHJpbWl0aXZlIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl90eXBlIChhLCBiKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl90eXBleHQgYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9tb2R1bGUgYVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHR5cGUgYVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9vcGVuIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3MgYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2luY2x1ZGUgYVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogJ2N0eCAtPiB2YWx1ZV9iaW5kaW5nIC0+IHZhbHVlX2JpbmRpbmcgPVxuICAgICAgZnVuIGN0eCB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2Yl9sb2MgaW5cbiAgICAgICAgeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogJ2N0eCAtPiBtb2R1bGVfYmluZGluZyAtPiBtb2R1bGVfYmluZGluZyA9XG4gICAgICBmdW4gY3R4IHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWJfbG9jIGluXG4gICAgICAgIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9XG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogJ2N0eCAtPiB0b3BsZXZlbF9waHJhc2UgLT4gdG9wbGV2ZWxfcGhyYXNlID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQdG9wX2RlZiBhXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBjdHggYSBpblxuICAgICAgICAgICAgUHRvcF9kaXIgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6ICdjdHggLT4gdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICAgICA9XG4gICAgICBmdW4gY3R4IHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBjdHggcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcl9sb2MgaW5cbiAgICAgICAgeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgID1cbiAgICAgIGZ1biBjdHggeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgY3R4IHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJhX2xvYyBpblxuICAgICAgICB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQZGlyX3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGRpcl9pbnQgKGEsIGIpXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBQZGlyX2lkZW50IGFcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiAnY3R4IC0+IGNhc2VzIC0+IGNhc2VzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ3Jlc10gbGlmdCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIG9wdGlvbiAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdyZXNcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBwb3NfY251bSBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBvc19mbmFtZVwiLCBwb3NfZm5hbWUpO1xuICAgICAgICAgICAgKFwicG9zX2xudW1cIiwgcG9zX2xudW0pO1xuICAgICAgICAgICAgKFwicG9zX2JvbFwiLCBwb3NfYm9sKTtcbiAgICAgICAgICAgIChcInBvc19jbnVtXCIsIHBvc19jbnVtKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwibG9jX3N0YXJ0XCIsIGxvY19zdGFydCk7XG4gICAgICAgICAgICAoXCJsb2NfZW5kXCIsIGxvY19lbmQpO1xuICAgICAgICAgICAgKFwibG9jX2dob3N0XCIsIGxvY19naG9zdCk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBsb2MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwidHh0XCIsIHR4dCk7IChcImxvY1wiLCBsb2MpIF1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxpZGVudFwiIFsgYSBdXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxkb3RcIiBbIGE7IGIgXVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxhcHBseVwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ3JlcyA9IHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBzZWxmI2NvbnN0ciBcIk5vbnJlY3Vyc2l2ZVwiIFtdXG4gICAgICAgIHwgUmVjdXJzaXZlIC0+IHNlbGYjY29uc3RyIFwiUmVjdXJzaXZlXCIgW11cblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVXB0byAtPiBzZWxmI2NvbnN0ciBcIlVwdG9cIiBbXVxuICAgICAgICB8IERvd250byAtPiBzZWxmI2NvbnN0ciBcIkRvd250b1wiIFtdXG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZSAtPiBzZWxmI2NvbnN0ciBcIlByaXZhdGVcIiBbXVxuICAgICAgICB8IFB1YmxpYyAtPiBzZWxmI2NvbnN0ciBcIlB1YmxpY1wiIFtdXG5cbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgSW1tdXRhYmxlIC0+IHNlbGYjY29uc3RyIFwiSW1tdXRhYmxlXCIgW11cbiAgICAgICAgfCBNdXRhYmxlIC0+IHNlbGYjY29uc3RyIFwiTXV0YWJsZVwiIFtdXG5cbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVmlydHVhbCAtPiBzZWxmI2NvbnN0ciBcIlZpcnR1YWxcIiBbXVxuICAgICAgICB8IENvbmNyZXRlIC0+IHNlbGYjY29uc3RyIFwiQ29uY3JldGVcIiBbXVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3ZlcnJpZGUgLT4gc2VsZiNjb25zdHIgXCJPdmVycmlkZVwiIFtdXG4gICAgICAgIHwgRnJlc2ggLT4gc2VsZiNjb25zdHIgXCJGcmVzaFwiIFtdXG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENsb3NlZCAtPiBzZWxmI2NvbnN0ciBcIkNsb3NlZFwiIFtdXG4gICAgICAgIHwgT3BlbiAtPiBzZWxmI2NvbnN0ciBcIk9wZW5cIiBbXVxuXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gJ3JlcyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBzZWxmI2NvbnN0ciBcIk5vbGFiZWxcIiBbXVxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJMYWJlbGxlZFwiIFsgYSBdXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk9wdGlvbmFsXCIgWyBhIF1cblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ292YXJpYW50IC0+IHNlbGYjY29uc3RyIFwiQ292YXJpYW50XCIgW11cbiAgICAgICAgfCBDb250cmF2YXJpYW50IC0+IHNlbGYjY29uc3RyIFwiQ29udHJhdmFyaWFudFwiIFtdXG4gICAgICAgIHwgTm9WYXJpYW5jZSAtPiBzZWxmI2NvbnN0ciBcIk5vVmFyaWFuY2VcIiBbXVxuXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBJbmplY3RpdmUgLT4gc2VsZiNjb25zdHIgXCJJbmplY3RpdmVcIiBbXVxuICAgICAgICB8IE5vSW5qZWN0aXZpdHkgLT4gc2VsZiNjb25zdHIgXCJOb0luamVjdGl2aXR5XCIgW11cblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2ludGVnZXJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2NoYXJcIiBbIGEgXVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X3N0cmluZ1wiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjb25zdF9mbG9hdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwiYXR0cl9uYW1lXCIsIGF0dHJfbmFtZSk7XG4gICAgICAgICAgICAoXCJhdHRyX3BheWxvYWRcIiwgYXR0cl9wYXlsb2FkKTtcbiAgICAgICAgICAgIChcImF0dHJfbG9jXCIsIGF0dHJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgYiBpblxuICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFN0clwiIFsgYSBdXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFNpZ1wiIFsgYSBdXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFR5cFwiIFsgYSBdXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFBhdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlwX2Rlc2NcIiwgcHR5cF9kZXNjKTtcbiAgICAgICAgICAgIChcInB0eXBfbG9jXCIsIHB0eXBfbG9jKTtcbiAgICAgICAgICAgIChcInB0eXBfbG9jX3N0YWNrXCIsIHB0eXBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInB0eXBfYXR0cmlidXRlc1wiLCBwdHlwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gc2VsZiNjb25zdHIgXCJQdHlwX2FueVwiIFtdXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfdmFyXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2Fycm93XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfb2JqZWN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2NsYXNzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9hbGlhc1wiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfdmFyaWFudFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9wb2x5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfcGFja2FnZVwiIFsgYSBdXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIGJcbiAgICAgICAgaW5cbiAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHJmX2Rlc2NcIiwgcHJmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicHJmX2xvY1wiLCBwcmZfbG9jKTtcbiAgICAgICAgICAgIChcInByZl9hdHRyaWJ1dGVzXCIsIHByZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJSdGFnXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUmluaGVyaXRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9mX2Rlc2NcIiwgcG9mX2Rlc2MpO1xuICAgICAgICAgICAgKFwicG9mX2xvY1wiLCBwb2ZfbG9jKTtcbiAgICAgICAgICAgIChcInBvZl9hdHRyaWJ1dGVzXCIsIHBvZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk90YWdcIiBbIGE7IGIgXVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJPaW5oZXJpdFwiIFsgYSBdXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwcGF0X2Rlc2NcIiwgcHBhdF9kZXNjKTtcbiAgICAgICAgICAgIChcInBwYXRfbG9jXCIsIHBwYXRfbG9jKTtcbiAgICAgICAgICAgIChcInBwYXRfbG9jX3N0YWNrXCIsIHBwYXRfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInBwYXRfYXR0cmlidXRlc1wiLCBwcGF0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBzZWxmI2NvbnN0ciBcIlBwYXRfYW55XCIgW11cbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF92YXJcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9hbGlhc1wiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0YW50XCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfaW50ZXJ2YWxcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0cnVjdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF92YXJpYW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfcmVjb3JkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfYXJyYXlcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfb3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9sYXp5XCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3VucGFja1wiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfb3BlblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwZXhwX2Rlc2NcIiwgcGV4cF9kZXNjKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jXCIsIHBleHBfbG9jKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIHBleHBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInBleHBfYXR0cmlidXRlc1wiLCBwZXhwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0YW50XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Z1bmN0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gZCBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Z1blwiIFsgYTsgYjsgYzsgZCBdXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2FwcGx5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9tYXRjaFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3RyeVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb25zdHJ1Y3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdmFyaWFudFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfcmVjb3JkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2ZpZWxkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NldGZpZWxkXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfYXJyYXlcIiBbIGEgXVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9pZnRoZW5lbHNlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NlcXVlbmNlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3doaWxlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZm9yXCIgWyBhOyBiOyBjOyBkOyBlIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29lcmNlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NlbmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9uZXdcIiBbIGEgXVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2V0aW5zdHZhclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX292ZXJyaWRlXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldG1vZHVsZVwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sZXRleGNlcHRpb25cIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9hc3NlcnRcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGF6eVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfcG9seVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb2JqZWN0XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9uZXd0eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9wYWNrXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb3BlblwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldG9wXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gc2VsZiNjb25zdHIgXCJQZXhwX3VucmVhY2hhYmxlXCIgW11cblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFsgKFwicGNfbGhzXCIsIHBjX2xocyk7IChcInBjX2d1YXJkXCIsIHBjX2d1YXJkKTsgKFwicGNfcmhzXCIsIHBjX3JocykgXVxuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwibGV0X1wiLCBsZXRfKTsgKFwiYW5kc1wiLCBhbmRzKTsgKFwiYm9keVwiLCBib2R5KSBdXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBib3Bfb3BcIiwgcGJvcF9vcCk7XG4gICAgICAgICAgICAoXCJwYm9wX3BhdFwiLCBwYm9wX3BhdCk7XG4gICAgICAgICAgICAoXCJwYm9wX2V4cFwiLCBwYm9wX2V4cCk7XG4gICAgICAgICAgICAoXCJwYm9wX2xvY1wiLCBwYm9wX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdmFsX25hbWVcIiwgcHZhbF9uYW1lKTtcbiAgICAgICAgICAgIChcInB2YWxfdHlwZVwiLCBwdmFsX3R5cGUpO1xuICAgICAgICAgICAgKFwicHZhbF9wcmltXCIsIHB2YWxfcHJpbSk7XG4gICAgICAgICAgICAoXCJwdmFsX2F0dHJpYnV0ZXNcIiwgcHZhbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB2YWxfbG9jXCIsIHB2YWxfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGMgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGMgXSlcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlwZV9uYW1lXCIsIHB0eXBlX25hbWUpO1xuICAgICAgICAgICAgKFwicHR5cGVfcGFyYW1zXCIsIHB0eXBlX3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9jc3Ryc1wiLCBwdHlwZV9jc3Rycyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9raW5kXCIsIHB0eXBlX2tpbmQpO1xuICAgICAgICAgICAgKFwicHR5cGVfcHJpdmF0ZVwiLCBwdHlwZV9wcml2YXRlKTtcbiAgICAgICAgICAgIChcInB0eXBlX21hbmlmZXN0XCIsIHB0eXBlX21hbmlmZXN0KTtcbiAgICAgICAgICAgIChcInB0eXBlX2F0dHJpYnV0ZXNcIiwgcHR5cGVfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9sb2NcIiwgcHR5cGVfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gc2VsZiNjb25zdHIgXCJQdHlwZV9hYnN0cmFjdFwiIFtdXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cGVfdmFyaWFudFwiIFsgYSBdXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwZV9yZWNvcmRcIiBbIGEgXVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gc2VsZiNjb25zdHIgXCJQdHlwZV9vcGVuXCIgW11cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbGRfbmFtZVwiLCBwbGRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbGRfbXV0YWJsZVwiLCBwbGRfbXV0YWJsZSk7XG4gICAgICAgICAgICAoXCJwbGRfdHlwZVwiLCBwbGRfdHlwZSk7XG4gICAgICAgICAgICAoXCJwbGRfbG9jXCIsIHBsZF9sb2MpO1xuICAgICAgICAgICAgKFwicGxkX2F0dHJpYnV0ZXNcIiwgcGxkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNkX25hbWVcIiwgcGNkX25hbWUpO1xuICAgICAgICAgICAgKFwicGNkX3ZhcnNcIiwgcGNkX3ZhcnMpO1xuICAgICAgICAgICAgKFwicGNkX2FyZ3NcIiwgcGNkX2FyZ3MpO1xuICAgICAgICAgICAgKFwicGNkX3Jlc1wiLCBwY2RfcmVzKTtcbiAgICAgICAgICAgIChcInBjZF9sb2NcIiwgcGNkX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2RfYXR0cmlidXRlc1wiLCBwY2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNzdHJfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNzdHJfcmVjb3JkXCIgWyBhIF1cblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlleHRfcGF0aFwiLCBwdHlleHRfcGF0aCk7XG4gICAgICAgICAgICAoXCJwdHlleHRfcGFyYW1zXCIsIHB0eWV4dF9wYXJhbXMpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X2NvbnN0cnVjdG9yc1wiLCBwdHlleHRfY29uc3RydWN0b3JzKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9wcml2YXRlXCIsIHB0eWV4dF9wcml2YXRlKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9sb2NcIiwgcHR5ZXh0X2xvYyk7XG4gICAgICAgICAgICAoXCJwdHlleHRfYXR0cmlidXRlc1wiLCBwdHlleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHRfbmFtZVwiLCBwZXh0X25hbWUpO1xuICAgICAgICAgICAgKFwicGV4dF9raW5kXCIsIHBleHRfa2luZCk7XG4gICAgICAgICAgICAoXCJwZXh0X2xvY1wiLCBwZXh0X2xvYyk7XG4gICAgICAgICAgICAoXCJwZXh0X2F0dHJpYnV0ZXNcIiwgcGV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHR5ZXhuX2NvbnN0cnVjdG9yXCIsIHB0eWV4bl9jb25zdHJ1Y3Rvcik7XG4gICAgICAgICAgICAoXCJwdHlleG5fbG9jXCIsIHB0eWV4bl9sb2MpO1xuICAgICAgICAgICAgKFwicHR5ZXhuX2F0dHJpYnV0ZXNcIiwgcHR5ZXhuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXh0X2RlY2xcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4dF9yZWJpbmRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGN0eV9kZXNjXCIsIHBjdHlfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY3R5X2xvY1wiLCBwY3R5X2xvYyk7XG4gICAgICAgICAgICAoXCJwY3R5X2F0dHJpYnV0ZXNcIiwgcGN0eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9zaWduYXR1cmVcIiBbIGEgXVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X2Fycm93XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgWyAoXCJwY3NpZ19zZWxmXCIsIHBjc2lnX3NlbGYpOyAoXCJwY3NpZ19maWVsZHNcIiwgcGNzaWdfZmllbGRzKSBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY3RmX2Rlc2NcIiwgcGN0Zl9kZXNjKTtcbiAgICAgICAgICAgIChcInBjdGZfbG9jXCIsIHBjdGZfbG9jKTtcbiAgICAgICAgICAgIChcInBjdGZfYXR0cmlidXRlc1wiLCBwY3RmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2luaGVyaXRcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjOyBkIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl92YWxcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjOyBkIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9tZXRob2RcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2NvbnN0cmFpbnRcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2lfdmlydFwiLCBwY2lfdmlydCk7XG4gICAgICAgICAgICAoXCJwY2lfcGFyYW1zXCIsIHBjaV9wYXJhbXMpO1xuICAgICAgICAgICAgKFwicGNpX25hbWVcIiwgcGNpX25hbWUpO1xuICAgICAgICAgICAgKFwicGNpX2V4cHJcIiwgcGNpX2V4cHIpO1xuICAgICAgICAgICAgKFwicGNpX2xvY1wiLCBwY2lfbG9jKTtcbiAgICAgICAgICAgIChcInBjaV9hdHRyaWJ1dGVzXCIsIHBjaV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNsX2Rlc2NcIiwgcGNsX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGNsX2xvY1wiLCBwY2xfbG9jKTtcbiAgICAgICAgICAgIChcInBjbF9hdHRyaWJ1dGVzXCIsIHBjbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2NvbnN0clwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX3N0cnVjdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgZCBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfZnVuXCIgWyBhOyBiOyBjOyBkIF1cbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2FwcGx5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9sZXRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbIChcInBjc3RyX3NlbGZcIiwgcGNzdHJfc2VsZik7IChcInBjc3RyX2ZpZWxkc1wiLCBwY3N0cl9maWVsZHMpIF1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjZl9kZXNjXCIsIHBjZl9kZXNjKTtcbiAgICAgICAgICAgIChcInBjZl9sb2NcIiwgcGNmX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2ZfYXR0cmlidXRlc1wiLCBwY2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfaW5oZXJpdFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGMgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfdmFsXCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9tZXRob2RcIiBbIGEgXVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9jb25zdHJhaW50XCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfaW5pdGlhbGl6ZXJcIiBbIGEgXVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkNma192aXJ0dWFsXCIgWyBhIF1cbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkNma19jb25jcmV0ZVwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXR5X2Rlc2NcIiwgcG10eV9kZXNjKTtcbiAgICAgICAgICAgIChcInBtdHlfbG9jXCIsIHBtdHlfbG9jKTtcbiAgICAgICAgICAgIChcInBtdHlfYXR0cmlidXRlc1wiLCBwbXR5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9zaWduYXR1cmVcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2Z1bmN0b3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfd2l0aFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV90eXBlb2ZcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfYWxpYXNcIiBbIGEgXVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IHNlbGYjY29uc3RyIFwiVW5pdFwiIFtdXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTmFtZWRcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJwc2lnX2Rlc2NcIiwgcHNpZ19kZXNjKTsgKFwicHNpZ19sb2NcIiwgcHNpZ19sb2MpIF1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ192YWx1ZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBlc3Vic3RcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdHlwZXh0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2RzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3JlY21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R0eXBlc3Vic3RcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfb3BlblwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19pbmNsdWRlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2NsYXNzXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19jbGFzc190eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfZXh0ZW5zaW9uXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtZF9uYW1lXCIsIHBtZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBtZF90eXBlXCIsIHBtZF90eXBlKTtcbiAgICAgICAgICAgIChcInBtZF9hdHRyaWJ1dGVzXCIsIHBtZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtZF9sb2NcIiwgcG1kX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXNfbmFtZVwiLCBwbXNfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbXNfbWFuaWZlc3RcIiwgcG1zX21hbmlmZXN0KTtcbiAgICAgICAgICAgIChcInBtc19hdHRyaWJ1dGVzXCIsIHBtc19hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtc19sb2NcIiwgcG1zX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXRkX25hbWVcIiwgcG10ZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBtdGRfdHlwZVwiLCBwbXRkX3R5cGUpO1xuICAgICAgICAgICAgKFwicG10ZF9hdHRyaWJ1dGVzXCIsIHBtdGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwbXRkX2xvY1wiLCBwbXRkX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIG9wZW5faW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBvcGVuX2V4cHJcIiwgcG9wZW5fZXhwcik7XG4gICAgICAgICAgICAoXCJwb3Blbl9vdmVycmlkZVwiLCBwb3Blbl9vdmVycmlkZSk7XG4gICAgICAgICAgICAoXCJwb3Blbl9sb2NcIiwgcG9wZW5fbG9jKTtcbiAgICAgICAgICAgIChcInBvcGVuX2F0dHJpYnV0ZXNcIiwgcG9wZW5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdyZXMgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGluY2xfbW9kXCIsIHBpbmNsX21vZCk7XG4gICAgICAgICAgICAoXCJwaW5jbF9sb2NcIiwgcGluY2xfbG9jKTtcbiAgICAgICAgICAgIChcInBpbmNsX2F0dHJpYnV0ZXNcIiwgcGluY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R1bGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R0eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R0eXBlc3Vic3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfdHlwZXN1YnN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfbW9kc3Vic3RcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1vZF9kZXNjXCIsIHBtb2RfZGVzYyk7XG4gICAgICAgICAgICAoXCJwbW9kX2xvY1wiLCBwbW9kX2xvYyk7XG4gICAgICAgICAgICAoXCJwbW9kX2F0dHJpYnV0ZXNcIiwgcG1vZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2Rfc3RydWN0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9mdW5jdG9yXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF91bnBhY2tcIiBbIGEgXVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBzdHJfZGVzY1wiLCBwc3RyX2Rlc2MpOyAoXCJwc3RyX2xvY1wiLCBwc3RyX2xvYykgXVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V2YWxcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl92YWx1ZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9wcmltaXRpdmVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfdHlwZXh0XCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9tb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3JlY21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfbW9kdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9vcGVuXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2NsYXNzXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9jbGFzc190eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2luY2x1ZGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9leHRlbnNpb25cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHZiX3BhdFwiLCBwdmJfcGF0KTtcbiAgICAgICAgICAgIChcInB2Yl9leHByXCIsIHB2Yl9leHByKTtcbiAgICAgICAgICAgIChcInB2Yl9hdHRyaWJ1dGVzXCIsIHB2Yl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB2Yl9sb2NcIiwgcHZiX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBpblxuICAgICAgICBsZXQgcG1iX2V4cHIgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtYl9uYW1lXCIsIHBtYl9uYW1lKTtcbiAgICAgICAgICAgIChcInBtYl9leHByXCIsIHBtYl9leHByKTtcbiAgICAgICAgICAgIChcInBtYl9hdHRyaWJ1dGVzXCIsIHBtYl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtYl9sb2NcIiwgcG1iX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdG9wX2RlZlwiIFsgYSBdXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0b3BfZGlyXCIgWyBhIF1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBkaXJfbmFtZVwiLCBwZGlyX25hbWUpO1xuICAgICAgICAgICAgKFwicGRpcl9hcmdcIiwgcGRpcl9hcmcpO1xuICAgICAgICAgICAgKFwicGRpcl9sb2NcIiwgcGRpcl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJwZGlyYV9kZXNjXCIsIHBkaXJhX2Rlc2MpOyAoXCJwZGlyYV9sb2NcIiwgcGRpcmFfbG9jKSBdXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX3N0cmluZ1wiIFsgYSBdXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9pbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfYm9vbFwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2N0eCwgJ3Jlc10gbGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6ICdjdHggLT4gKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAnY3R4IC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICdjdHggLT4gYm9vbCAtPiBib29sICogJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAnY3R4IC0+IGNoYXIgLT4gY2hhciAqICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAnY3R4IC0+IGludCAtPiBpbnQgKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBsaXN0XG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT4gJ2N0eCAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAnY3R4IC0+IHN0cmluZyAtPiBzdHJpbmcgKiAncmVzXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiAnY3R4IC0+IHBvc2l0aW9uIC0+IHBvc2l0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgY3R4IHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBjdHggcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBjdHggcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBjdHggcG9zX2NudW0gaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb3NfZm5hbWUgPSBTdGRsaWIuZnN0IHBvc19mbmFtZTtcbiAgICAgICAgICAgIHBvc19sbnVtID0gU3RkbGliLmZzdCBwb3NfbG51bTtcbiAgICAgICAgICAgIHBvc19ib2wgPSBTdGRsaWIuZnN0IHBvc19ib2w7XG4gICAgICAgICAgICBwb3NfY251bSA9IFN0ZGxpYi5mc3QgcG9zX2NudW07XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG9zX2ZuYW1lXCIsIFN0ZGxpYi5zbmQgcG9zX2ZuYW1lKTtcbiAgICAgICAgICAgICAgKFwicG9zX2xudW1cIiwgU3RkbGliLnNuZCBwb3NfbG51bSk7XG4gICAgICAgICAgICAgIChcInBvc19ib2xcIiwgU3RkbGliLnNuZCBwb3NfYm9sKTtcbiAgICAgICAgICAgICAgKFwicG9zX2NudW1cIiwgU3RkbGliLnNuZCBwb3NfY251bSk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6ICdjdHggLT4gbG9jYXRpb24gLT4gbG9jYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgY3R4IGxvY19naG9zdCBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGxvY19zdGFydCA9IFN0ZGxpYi5mc3QgbG9jX3N0YXJ0O1xuICAgICAgICAgICAgbG9jX2VuZCA9IFN0ZGxpYi5mc3QgbG9jX2VuZDtcbiAgICAgICAgICAgIGxvY19naG9zdCA9IFN0ZGxpYi5mc3QgbG9jX2dob3N0O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImxvY19zdGFydFwiLCBTdGRsaWIuc25kIGxvY19zdGFydCk7XG4gICAgICAgICAgICAgIChcImxvY19lbmRcIiwgU3RkbGliLnNuZCBsb2NfZW5kKTtcbiAgICAgICAgICAgICAgKFwibG9jX2dob3N0XCIsIFN0ZGxpYi5zbmQgbG9jX2dob3N0KTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogJ2N0eCAtPiBsb2NhdGlvbl9zdGFjayAtPiBsb2NhdGlvbl9zdGFjayAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIGxvYyAtPiAnYSBsb2MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSBjdHggdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBsb2MgaW5cbiAgICAgICAgKCB7IHR4dCA9IFN0ZGxpYi5mc3QgdHh0OyBsb2MgPSBTdGRsaWIuZnN0IGxvYyB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eCBbIChcInR4dFwiLCBTdGRsaWIuc25kIHR4dCk7IChcImxvY1wiLCBTdGRsaWIuc25kIGxvYykgXVxuICAgICAgICApXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogJ2N0eCAtPiBsb25naWRlbnQgLT4gbG9uZ2lkZW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIChMaWRlbnQgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIkxpZGVudFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggTGRvdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMZG90XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGN0eCBiIGluXG4gICAgICAgICAgICAoIExhcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiAnY3R4IC0+IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyAqICdyZXMgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6ICdjdHggLT4gcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6ICdjdHggLT4gZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiAnY3R4IC0+IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiAnY3R4IC0+IG11dGFibGVfZmxhZyAtPiBtdXRhYmxlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiAnY3R4IC0+IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogJ2N0eCAtPiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6ICdjdHggLT4gY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBsYWJlbCA6ICdjdHggLT4gbGFiZWwgLT4gbGFiZWwgKiAncmVzID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiAnY3R4IC0+IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IChOb2xhYmVsLCBzZWxmI2NvbnN0ciBjdHggXCJOb2xhYmVsXCIgW10pXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBMYWJlbGxlZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTGFiZWxsZWRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIE9wdGlvbmFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPcHRpb25hbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogJ2N0eCAtPiB2YXJpYW5jZSAtPiB2YXJpYW5jZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogJ2N0eCAtPiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogJ2N0eCAtPiBjb25zdGFudCAtPiBjb25zdGFudCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNvbnN0X2ludGVnZXIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X2ludGVnZXJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjb25zdF9jaGFyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfY2hhclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNvbnN0X3N0cmluZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9zdHJpbmdcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY29uc3RfZmxvYXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X2Zsb2F0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiAnY3R4IC0+IGF0dHJpYnV0ZSAtPiBhdHRyaWJ1dGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGN0eCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggYXR0cl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBhdHRyX25hbWUgPSBTdGRsaWIuZnN0IGF0dHJfbmFtZTtcbiAgICAgICAgICAgIGF0dHJfcGF5bG9hZCA9IFN0ZGxpYi5mc3QgYXR0cl9wYXlsb2FkO1xuICAgICAgICAgICAgYXR0cl9sb2MgPSBTdGRsaWIuZnN0IGF0dHJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImF0dHJfbmFtZVwiLCBTdGRsaWIuc25kIGF0dHJfbmFtZSk7XG4gICAgICAgICAgICAgIChcImF0dHJfcGF5bG9hZFwiLCBTdGRsaWIuc25kIGF0dHJfcGF5bG9hZCk7XG4gICAgICAgICAgICAgIChcImF0dHJfbG9jXCIsIFN0ZGxpYi5zbmQgYXR0cl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogJ2N0eCAtPiBleHRlbnNpb24gLT4gZXh0ZW5zaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGN0eCBiIGluXG4gICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiAnY3R4IC0+IGF0dHJpYnV0ZXMgLT4gYXR0cmlidXRlcyAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6ICdjdHggLT4gcGF5bG9hZCAtPiBwYXlsb2FkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFN0ciAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFN0clwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFNpZyAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFNpZ1wiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFR5cCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFR5cFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQUGF0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBQYXRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6ICdjdHggLT4gY29yZV90eXBlIC0+IGNvcmVfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBjdHggcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IFN0ZGxpYi5mc3QgcHR5cF9kZXNjO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBTdGRsaWIuZnN0IHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHB0eXBfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5cF9kZXNjXCIsIFN0ZGxpYi5zbmQgcHR5cF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHR5cF9sb2NcIiwgU3RkbGliLnNuZCBwdHlwX2xvYyk7XG4gICAgICAgICAgICAgIChcInB0eXBfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcHR5cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwdHlwX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiAnY3R4IC0+IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKFB0eXBfYW55LCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2FueVwiIFtdKVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF92YXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfdmFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUHR5cF9hcnJvdyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYXJyb3dcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2NvbnN0clwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfb2JqZWN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfb2JqZWN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfY2xhc3MgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9jbGFzc1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9hbGlhcyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2FsaWFzXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgY3R4IGMgaW5cbiAgICAgICAgICAgICggUHR5cF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF92YXJpYW50XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX3BvbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9wb2x5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX3BhY2thZ2UgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfcGFja2FnZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogJ2N0eCAtPiBwYWNrYWdlX3R5cGUgLT4gcGFja2FnZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggYlxuICAgICAgICBpblxuICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiAnY3R4IC0+IHJvd19maWVsZCAtPiByb3dfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIGN0eCBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHByZl9kZXNjID0gU3RkbGliLmZzdCBwcmZfZGVzYztcbiAgICAgICAgICAgIHByZl9sb2MgPSBTdGRsaWIuZnN0IHByZl9sb2M7XG4gICAgICAgICAgICBwcmZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHJmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHJmX2Rlc2NcIiwgU3RkbGliLnNuZCBwcmZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInByZl9sb2NcIiwgU3RkbGliLnNuZCBwcmZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHJmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwcmZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6ICdjdHggLT4gcm93X2ZpZWxkX2Rlc2MgLT4gcm93X2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUnRhZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlJ0YWdcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFJpbmhlcml0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJSaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgY3R4IHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG9mX2Rlc2MgPSBTdGRsaWIuZnN0IHBvZl9kZXNjO1xuICAgICAgICAgICAgcG9mX2xvYyA9IFN0ZGxpYi5mc3QgcG9mX2xvYztcbiAgICAgICAgICAgIHBvZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwb2ZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb2ZfZGVzY1wiLCBTdGRsaWIuc25kIHBvZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG9mX2xvY1wiLCBTdGRsaWIuc25kIHBvZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwb2ZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBvZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggT3RhZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPdGFnXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIE9pbmhlcml0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiAnY3R4IC0+IHBhdHRlcm4gLT4gcGF0dGVybiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgY3R4IHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSBTdGRsaWIuZnN0IHBwYXRfZGVzYztcbiAgICAgICAgICAgIHBwYXRfbG9jID0gU3RkbGliLmZzdCBwcGF0X2xvYztcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gU3RkbGliLmZzdCBwcGF0X2xvY19zdGFjaztcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBwYXRfZGVzY1wiLCBTdGRsaWIuc25kIHBwYXRfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBwYXRfbG9jXCIsIFN0ZGxpYi5zbmQgcHBhdF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwcGF0X2xvY19zdGFja1wiLCBTdGRsaWIuc25kIHBwYXRfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgICAgKFwicHBhdF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHBhdF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6ICdjdHggLT4gcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IChQcGF0X2FueSwgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hbnlcIiBbXSlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdmFyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3ZhclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2FsaWFzIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfY29uc3RhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9pbnRlcnZhbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2ludGVydmFsXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RydWN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfY29uc3RydWN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfdmFyaWFudCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3ZhcmlhbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X3JlY29yZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3JlY29yZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9hcnJheSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hcnJheVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9vciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X29yXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF90eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfbGF6eSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9sYXp5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdW5wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3VucGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiAnY3R4IC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4IHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSBTdGRsaWIuZnN0IHBleHBfZGVzYztcbiAgICAgICAgICAgIHBleHBfbG9jID0gU3RkbGliLmZzdCBwZXhwX2xvYztcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gU3RkbGliLmZzdCBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBTdGRsaWIuc25kIHBleHBfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBleHBfbG9jXCIsIFN0ZGxpYi5zbmQgcGV4cF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwZXhwX2xvY19zdGFja1wiLCBTdGRsaWIuc25kIHBleHBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgICAgKFwicGV4cF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGV4cF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6ICdjdHggLT4gZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfY29uc3RhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29uc3RhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2xldCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9mdW5jdGlvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mdW5jdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZCBpblxuICAgICAgICAgICAgKCBQZXhwX2Z1biAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mdW5cIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF0gKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQZXhwX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfbWF0Y2ggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9tYXRjaFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfdHJ5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdHJ5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9jb25zdHJ1Y3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdHJ1Y3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdmFyaWFudFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9yZWNvcmQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9maWVsZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2ZpZWxkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX3NldGZpZWxkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZXRmaWVsZFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfYXJyYXkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfYXJyYXlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfaWZ0aGVuZWxzZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfaWZ0aGVuZWxzZVwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9zZXF1ZW5jZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NlcXVlbmNlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfd2hpbGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF93aGlsZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgY3R4IGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGN0eCBlIGluXG4gICAgICAgICAgICAoIFBleHBfZm9yXG4gICAgICAgICAgICAgICAgKCBTdGRsaWIuZnN0IGEsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGIsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGMsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGQsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGUgKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mb3JcIlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYTtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYjtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYztcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgZDtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgZTtcbiAgICAgICAgICAgICAgICBdIClcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2NvZXJjZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29lcmNlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3NlbmQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZW5kXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX25ldyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9uZXdcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfc2V0aW5zdHZhciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NldGluc3R2YXJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQZXhwX292ZXJyaWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX292ZXJyaWRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRtb2R1bGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldG1vZHVsZVwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRleGNlcHRpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRleGNlcHRpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2Fzc2VydCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hc3NlcnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9sYXp5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xhenlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3BvbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9wb2x5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfb2JqZWN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX29iamVjdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfbmV3dHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX25ld3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3BhY2tcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRvcCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRvcFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPlxuICAgICAgICAgICAgKFBleHBfdW5yZWFjaGFibGUsIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdW5yZWFjaGFibGVcIiBbXSlcblxuICAgIG1ldGhvZCBjYXNlIDogJ2N0eCAtPiBjYXNlIC0+IGNhc2UgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIGN0eCBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIGN0eCBwY19yaHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY19saHMgPSBTdGRsaWIuZnN0IHBjX2xocztcbiAgICAgICAgICAgIHBjX2d1YXJkID0gU3RkbGliLmZzdCBwY19ndWFyZDtcbiAgICAgICAgICAgIHBjX3JocyA9IFN0ZGxpYi5mc3QgcGNfcmhzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjX2xoc1wiLCBTdGRsaWIuc25kIHBjX2xocyk7XG4gICAgICAgICAgICAgIChcInBjX2d1YXJkXCIsIFN0ZGxpYi5zbmQgcGNfZ3VhcmQpO1xuICAgICAgICAgICAgICAoXCJwY19yaHNcIiwgU3RkbGliLnNuZCBwY19yaHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbGV0b3AgOiAnY3R4IC0+IGxldG9wIC0+IGxldG9wICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGN0eCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBjdHggYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYm9keSBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGxldF8gPSBTdGRsaWIuZnN0IGxldF87XG4gICAgICAgICAgICBhbmRzID0gU3RkbGliLmZzdCBhbmRzO1xuICAgICAgICAgICAgYm9keSA9IFN0ZGxpYi5mc3QgYm9keTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJsZXRfXCIsIFN0ZGxpYi5zbmQgbGV0Xyk7XG4gICAgICAgICAgICAgIChcImFuZHNcIiwgU3RkbGliLnNuZCBhbmRzKTtcbiAgICAgICAgICAgICAgKFwiYm9keVwiLCBTdGRsaWIuc25kIGJvZHkpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6ICdjdHggLT4gYmluZGluZ19vcCAtPiBiaW5kaW5nX29wICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBib3BfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGJvcF9vcCA9IFN0ZGxpYi5mc3QgcGJvcF9vcDtcbiAgICAgICAgICAgIHBib3BfcGF0ID0gU3RkbGliLmZzdCBwYm9wX3BhdDtcbiAgICAgICAgICAgIHBib3BfZXhwID0gU3RkbGliLmZzdCBwYm9wX2V4cDtcbiAgICAgICAgICAgIHBib3BfbG9jID0gU3RkbGliLmZzdCBwYm9wX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwYm9wX29wXCIsIFN0ZGxpYi5zbmQgcGJvcF9vcCk7XG4gICAgICAgICAgICAgIChcInBib3BfcGF0XCIsIFN0ZGxpYi5zbmQgcGJvcF9wYXQpO1xuICAgICAgICAgICAgICAoXCJwYm9wX2V4cFwiLCBTdGRsaWIuc25kIHBib3BfZXhwKTtcbiAgICAgICAgICAgICAgKFwicGJvcF9sb2NcIiwgU3RkbGliLnNuZCBwYm9wX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gdmFsdWVfZGVzY3JpcHRpb24gLT4gdmFsdWVfZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBjdHggcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmFsX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB2YWxfbmFtZSA9IFN0ZGxpYi5mc3QgcHZhbF9uYW1lO1xuICAgICAgICAgICAgcHZhbF90eXBlID0gU3RkbGliLmZzdCBwdmFsX3R5cGU7XG4gICAgICAgICAgICBwdmFsX3ByaW0gPSBTdGRsaWIuZnN0IHB2YWxfcHJpbTtcbiAgICAgICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHZhbF9sb2MgPSBTdGRsaWIuZnN0IHB2YWxfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB2YWxfbmFtZVwiLCBTdGRsaWIuc25kIHB2YWxfbmFtZSk7XG4gICAgICAgICAgICAgIChcInB2YWxfdHlwZVwiLCBTdGRsaWIuc25kIHB2YWxfdHlwZSk7XG4gICAgICAgICAgICAgIChcInB2YWxfcHJpbVwiLCBTdGRsaWIuc25kIHB2YWxfcHJpbSk7XG4gICAgICAgICAgICAgIChcInB2YWxfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB2YWxfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInB2YWxfbG9jXCIsIFN0ZGxpYi5zbmQgcHZhbF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gdHlwZV9kZWNsYXJhdGlvbiAtPiB0eXBlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjdHggYyBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApKVxuICAgICAgICAgICAgY3R4IHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgY3R4IHB0eXBlX2tpbmQgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBlX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBlX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWUgPSBTdGRsaWIuZnN0IHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXMgPSBTdGRsaWIuZnN0IHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzID0gU3RkbGliLmZzdCBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQgPSBTdGRsaWIuZnN0IHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlID0gU3RkbGliLmZzdCBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBTdGRsaWIuZnN0IHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYyA9IFN0ZGxpYi5mc3QgcHR5cGVfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eXBlX25hbWVcIiwgU3RkbGliLnNuZCBwdHlwZV9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcHR5cGVfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfY3N0cnNcIiwgU3RkbGliLnNuZCBwdHlwZV9jc3Rycyk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2tpbmRcIiwgU3RkbGliLnNuZCBwdHlwZV9raW5kKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfcHJpdmF0ZVwiLCBTdGRsaWIuc25kIHB0eXBlX3ByaXZhdGUpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9tYW5pZmVzdFwiLCBTdGRsaWIuc25kIHB0eXBlX21hbmlmZXN0KTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eXBlX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9sb2NcIiwgU3RkbGliLnNuZCBwdHlwZV9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogJ2N0eCAtPiB0eXBlX2tpbmQgLT4gdHlwZV9raW5kICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKFB0eXBlX2Fic3RyYWN0LCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9hYnN0cmFjdFwiIFtdKVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwZV92YXJpYW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV92YXJpYW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cGVfcmVjb3JkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IChQdHlwZV9vcGVuLCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9vcGVuXCIgW10pXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGxhYmVsX2RlY2xhcmF0aW9uIC0+IGxhYmVsX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBsZF9uYW1lID0gU3RkbGliLmZzdCBwbGRfbmFtZTtcbiAgICAgICAgICAgIHBsZF9tdXRhYmxlID0gU3RkbGliLmZzdCBwbGRfbXV0YWJsZTtcbiAgICAgICAgICAgIHBsZF90eXBlID0gU3RkbGliLmZzdCBwbGRfdHlwZTtcbiAgICAgICAgICAgIHBsZF9sb2MgPSBTdGRsaWIuZnN0IHBsZF9sb2M7XG4gICAgICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGxkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGxkX25hbWVcIiwgU3RkbGliLnNuZCBwbGRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBsZF9tdXRhYmxlXCIsIFN0ZGxpYi5zbmQgcGxkX211dGFibGUpO1xuICAgICAgICAgICAgICAoXCJwbGRfdHlwZVwiLCBTdGRsaWIuc25kIHBsZF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicGxkX2xvY1wiLCBTdGRsaWIuc25kIHBsZF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwbGRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBsZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjZF9uYW1lID0gU3RkbGliLmZzdCBwY2RfbmFtZTtcbiAgICAgICAgICAgIHBjZF92YXJzID0gU3RkbGliLmZzdCBwY2RfdmFycztcbiAgICAgICAgICAgIHBjZF9hcmdzID0gU3RkbGliLmZzdCBwY2RfYXJncztcbiAgICAgICAgICAgIHBjZF9yZXMgPSBTdGRsaWIuZnN0IHBjZF9yZXM7XG4gICAgICAgICAgICBwY2RfbG9jID0gU3RkbGliLmZzdCBwY2RfbG9jO1xuICAgICAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjZF9uYW1lXCIsIFN0ZGxpYi5zbmQgcGNkX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwY2RfdmFyc1wiLCBTdGRsaWIuc25kIHBjZF92YXJzKTtcbiAgICAgICAgICAgICAgKFwicGNkX2FyZ3NcIiwgU3RkbGliLnNuZCBwY2RfYXJncyk7XG4gICAgICAgICAgICAgIChcInBjZF9yZXNcIiwgU3RkbGliLnNuZCBwY2RfcmVzKTtcbiAgICAgICAgICAgICAgKFwicGNkX2xvY1wiLCBTdGRsaWIuc25kIHBjZF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2RfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjc3RyX3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3N0cl90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjc3RyX3JlY29yZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNzdHJfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiAnY3R4IC0+IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eWV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGggPSBTdGRsaWIuZnN0IHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBTdGRsaWIuZnN0IHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jID0gU3RkbGliLmZzdCBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eWV4dF9wYXRoXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X3BhdGgpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X3BhcmFtcyk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9jb25zdHJ1Y3RvcnNcIiwgU3RkbGliLnNuZCBwdHlleHRfY29uc3RydWN0b3JzKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X3ByaXZhdGVcIiwgU3RkbGliLnNuZCBwdHlleHRfcHJpdmF0ZSk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9sb2NcIiwgU3RkbGliLnNuZCBwdHlleHRfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiAnY3R4IC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGN0eCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGV4dF9uYW1lID0gU3RkbGliLmZzdCBwZXh0X25hbWU7XG4gICAgICAgICAgICBwZXh0X2tpbmQgPSBTdGRsaWIuZnN0IHBleHRfa2luZDtcbiAgICAgICAgICAgIHBleHRfbG9jID0gU3RkbGliLmZzdCBwZXh0X2xvYztcbiAgICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBleHRfbmFtZVwiLCBTdGRsaWIuc25kIHBleHRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBleHRfa2luZFwiLCBTdGRsaWIuc25kIHBleHRfa2luZCk7XG4gICAgICAgICAgICAgIChcInBleHRfbG9jXCIsIFN0ZGxpYi5zbmQgcGV4dF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwZXh0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiAnY3R4IC0+IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBTdGRsaWIuZnN0IHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICAgICAgIHB0eWV4bl9sb2MgPSBTdGRsaWIuZnN0IHB0eWV4bl9sb2M7XG4gICAgICAgICAgICBwdHlleG5fYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5ZXhuX2NvbnN0cnVjdG9yXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXhuX2xvY1wiLCBTdGRsaWIuc25kIHB0eWV4bl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwdHlleG5fYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eWV4bl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogJ2N0eCAtPlxuICAgICAgICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgICAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHRfZGVjbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHRfZGVjbFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHRfcmViaW5kIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXh0X3JlYmluZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiAnY3R4IC0+IGNsYXNzX3R5cGUgLT4gY2xhc3NfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBjdHggcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjdHlfZGVzYyA9IFN0ZGxpYi5mc3QgcGN0eV9kZXNjO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBTdGRsaWIuZnN0IHBjdHlfbG9jO1xuICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGN0eV9kZXNjXCIsIFN0ZGxpYi5zbmQgcGN0eV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGN0eV9sb2NcIiwgU3RkbGliLnNuZCBwY3R5X2xvYyk7XG4gICAgICAgICAgICAgIChcInBjdHlfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVzYyAtPiBjbGFzc190eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY3R5X2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X2NvbnN0clwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3R5X3NpZ25hdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9zaWduYXR1cmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGN0eV9hcnJvdyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfYXJyb3dcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdHlfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY3R5X29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiAnY3R4IC0+IGNsYXNzX3NpZ25hdHVyZSAtPiBjbGFzc19zaWduYXR1cmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIGN0eCBwY3NpZ19zZWxmIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIGN0eCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3NpZ19zZWxmID0gU3RkbGliLmZzdCBwY3NpZ19zZWxmO1xuICAgICAgICAgICAgcGNzaWdfZmllbGRzID0gU3RkbGliLmZzdCBwY3NpZ19maWVsZHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNzaWdfc2VsZlwiLCBTdGRsaWIuc25kIHBjc2lnX3NlbGYpO1xuICAgICAgICAgICAgICAoXCJwY3NpZ19maWVsZHNcIiwgU3RkbGliLnNuZCBwY3NpZ19maWVsZHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIGN0eCBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gU3RkbGliLmZzdCBwY3RmX2Rlc2M7XG4gICAgICAgICAgICBwY3RmX2xvYyA9IFN0ZGxpYi5mc3QgcGN0Zl9sb2M7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3RmX2Rlc2NcIiwgU3RkbGliLnNuZCBwY3RmX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY3RmX2xvY1wiLCBTdGRsaWIuc25kIHBjdGZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGN0Zl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGN0Zl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3RmX2luaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4XG4gICAgICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF1cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX3ZhbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl92YWxcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBjdHggZCBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eFxuICAgICAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGM7IFN0ZGxpYi5zbmQgZCBdXG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGN0Zl9tZXRob2QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfbWV0aG9kXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGN0Zl9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdGZfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0Zl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+XG4gICAgICAgICAgJ2N0eCAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zIC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHhcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IHBjaV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIGN0eCBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjaV9sb2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjaV92aXJ0ID0gU3RkbGliLmZzdCBwY2lfdmlydDtcbiAgICAgICAgICAgIHBjaV9wYXJhbXMgPSBTdGRsaWIuZnN0IHBjaV9wYXJhbXM7XG4gICAgICAgICAgICBwY2lfbmFtZSA9IFN0ZGxpYi5mc3QgcGNpX25hbWU7XG4gICAgICAgICAgICBwY2lfZXhwciA9IFN0ZGxpYi5mc3QgcGNpX2V4cHI7XG4gICAgICAgICAgICBwY2lfbG9jID0gU3RkbGliLmZzdCBwY2lfbG9jO1xuICAgICAgICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjaV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjaV92aXJ0XCIsIFN0ZGxpYi5zbmQgcGNpX3ZpcnQpO1xuICAgICAgICAgICAgICAoXCJwY2lfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcGNpX3BhcmFtcyk7XG4gICAgICAgICAgICAgIChcInBjaV9uYW1lXCIsIFN0ZGxpYi5zbmQgcGNpX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwY2lfZXhwclwiLCBTdGRsaWIuc25kIHBjaV9leHByKTtcbiAgICAgICAgICAgICAgKFwicGNpX2xvY1wiLCBTdGRsaWIuc25kIHBjaV9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2lfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjaV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6ICdjdHggLT4gY2xhc3NfZXhwciAtPiBjbGFzc19leHByICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgY3R4IHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNsX2Rlc2MgPSBTdGRsaWIuZnN0IHBjbF9kZXNjO1xuICAgICAgICAgICAgcGNsX2xvYyA9IFN0ZGxpYi5mc3QgcGNsX2xvYztcbiAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2xfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2xfZGVzY1wiLCBTdGRsaWIuc25kIHBjbF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGNsX2xvY1wiLCBTdGRsaWIuc25kIHBjbF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2xfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6ICdjdHggLT4gY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNsX2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNsX3N0cnVjdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX3N0cnVjdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGN0eCBkIGluXG4gICAgICAgICAgICAoIFBjbF9mdW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9mdW5cIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF0gKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjbF9hcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNsX2xldCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9sZXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjbF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogJ2N0eCAtPiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gY3R4IHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIGN0eCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3N0cl9zZWxmID0gU3RkbGliLmZzdCBwY3N0cl9zZWxmO1xuICAgICAgICAgICAgcGNzdHJfZmllbGRzID0gU3RkbGliLmZzdCBwY3N0cl9maWVsZHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNzdHJfc2VsZlwiLCBTdGRsaWIuc25kIHBjc3RyX3NlbGYpO1xuICAgICAgICAgICAgICAoXCJwY3N0cl9maWVsZHNcIiwgU3RkbGliLnNuZCBwY3N0cl9maWVsZHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIGN0eCBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjZl9kZXNjID0gU3RkbGliLmZzdCBwY2ZfZGVzYztcbiAgICAgICAgICAgIHBjZl9sb2MgPSBTdGRsaWIuZnN0IHBjZl9sb2M7XG4gICAgICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNmX2Rlc2NcIiwgU3RkbGliLnNuZCBwY2ZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjZl9sb2NcIiwgU3RkbGliLnNuZCBwY2ZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGNmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBjZl9pbmhlcml0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2luaGVyaXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl92YWwgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIlBjZl92YWxcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjZl9tZXRob2QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9tZXRob2RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjZl9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2ZfaW5pdGlhbGl6ZXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9pbml0aWFsaXplclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2ZfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19maWVsZF9raW5kIC0+IGNsYXNzX2ZpZWxkX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIENma192aXJ0dWFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJDZmtfdmlydHVhbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBDZmtfY29uY3JldGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiQ2ZrX2NvbmNyZXRlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfZGVjbGFyYXRpb24gLT4gY2xhc3NfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiAnY3R4IC0+IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBjdHggcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IFN0ZGxpYi5mc3QgcG10eV9kZXNjO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBTdGRsaWIuZnN0IHBtdHlfbG9jO1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG10eV9kZXNjXCIsIFN0ZGxpYi5zbmQgcG10eV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG10eV9sb2NcIiwgU3RkbGliLnNuZCBwbXR5X2xvYyk7XG4gICAgICAgICAgICAgIChcInBtdHlfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfc2lnbmF0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X3NpZ25hdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtdHlfZnVuY3RvciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2Z1bmN0b3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG10eV93aXRoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfd2l0aFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfdHlwZW9mIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X3R5cGVvZlwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X2FsaWFzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2FsaWFzXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXJcbiAgICAgICAgOiAnY3R4IC0+IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoVW5pdCwgc2VsZiNjb25zdHIgY3R4IFwiVW5pdFwiIFtdKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggTmFtZWQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTmFtZWRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6ICdjdHggLT4gc2lnbmF0dXJlIC0+IHNpZ25hdHVyZSAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW0gLT4gc2lnbmF0dXJlX2l0ZW0gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBjdHggcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzaWdfbG9jIGluXG4gICAgICAgICggeyBwc2lnX2Rlc2MgPSBTdGRsaWIuZnN0IHBzaWdfZGVzYzsgcHNpZ19sb2MgPSBTdGRsaWIuZnN0IHBzaWdfbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBzaWdfZGVzY1wiLCBTdGRsaWIuc25kIHBzaWdfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBzaWdfbG9jXCIsIFN0ZGxpYi5zbmQgcHNpZ19sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ192YWx1ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ192YWx1ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzaWdfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3R5cGVzdWJzdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ190eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ190eXBleHQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdHlwZXh0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19tb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHN1YnN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19yZWNtb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfcmVjbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHR5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHR5cGVzdWJzdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R0eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19vcGVuIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX29wZW5cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19pbmNsdWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2luY2x1ZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19jbGFzcyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19jbGFzc1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19jbGFzc190eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2NsYXNzX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHNpZ19leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1kX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtZF9uYW1lID0gU3RkbGliLmZzdCBwbWRfbmFtZTtcbiAgICAgICAgICAgIHBtZF90eXBlID0gU3RkbGliLmZzdCBwbWRfdHlwZTtcbiAgICAgICAgICAgIHBtZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtZF9sb2MgPSBTdGRsaWIuZnN0IHBtZF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1kX25hbWVcIiwgU3RkbGliLnNuZCBwbWRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtZF90eXBlXCIsIFN0ZGxpYi5zbmQgcG1kX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbWRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG1kX2xvY1wiLCBTdGRsaWIuc25kIHBtZF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXNfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1zX25hbWUgPSBTdGRsaWIuZnN0IHBtc19uYW1lO1xuICAgICAgICAgICAgcG1zX21hbmlmZXN0ID0gU3RkbGliLmZzdCBwbXNfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbXNfbG9jID0gU3RkbGliLmZzdCBwbXNfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtc19uYW1lXCIsIFN0ZGxpYi5zbmQgcG1zX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbXNfbWFuaWZlc3RcIiwgU3RkbGliLnNuZCBwbXNfbWFuaWZlc3QpO1xuICAgICAgICAgICAgICAoXCJwbXNfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtc19hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG1zX2xvY1wiLCBTdGRsaWIuc25kIHBtc19sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXRkX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtdGRfbmFtZSA9IFN0ZGxpYi5mc3QgcG10ZF9uYW1lO1xuICAgICAgICAgICAgcG10ZF90eXBlID0gU3RkbGliLmZzdCBwbXRkX3R5cGU7XG4gICAgICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtdGRfbG9jID0gU3RkbGliLmZzdCBwbXRkX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbXRkX25hbWVcIiwgU3RkbGliLnNuZCBwbXRkX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbXRkX3R5cGVcIiwgU3RkbGliLnNuZCBwbXRkX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbXRkX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbXRkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbXRkX2xvY1wiLCBTdGRsaWIuc25kIHBtdGRfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+XG4gICAgICAgICAgJ2N0eCAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zICogJ3JlcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgY3R4IHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG9wZW5fZXhwciA9IFN0ZGxpYi5mc3QgcG9wZW5fZXhwcjtcbiAgICAgICAgICAgIHBvcGVuX292ZXJyaWRlID0gU3RkbGliLmZzdCBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICAgIHBvcGVuX2xvYyA9IFN0ZGxpYi5mc3QgcG9wZW5fbG9jO1xuICAgICAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb3Blbl9leHByXCIsIFN0ZGxpYi5zbmQgcG9wZW5fZXhwcik7XG4gICAgICAgICAgICAgIChcInBvcGVuX292ZXJyaWRlXCIsIFN0ZGxpYi5zbmQgcG9wZW5fb3ZlcnJpZGUpO1xuICAgICAgICAgICAgICAoXCJwb3Blbl9sb2NcIiwgU3RkbGliLnNuZCBwb3Blbl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwb3Blbl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG9wZW5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBjdHggcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwaW5jbF9tb2QgPSBTdGRsaWIuZnN0IHBpbmNsX21vZDtcbiAgICAgICAgICAgIHBpbmNsX2xvYyA9IFN0ZGxpYi5mc3QgcGluY2xfbG9jO1xuICAgICAgICAgICAgcGluY2xfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGluY2xfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwaW5jbF9tb2RcIiwgU3RkbGliLnNuZCBwaW5jbF9tb2QpO1xuICAgICAgICAgICAgICAoXCJwaW5jbF9sb2NcIiwgU3RkbGliLnNuZCBwaW5jbF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwaW5jbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGluY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6ICdjdHggLT4gd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF90eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdWxlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHVsZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2R0eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHR5cGVzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2R0eXBlc3Vic3RcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX3R5cGVzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF90eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2RzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2RzdWJzdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiAnY3R4IC0+IG1vZHVsZV9leHByIC0+IG1vZHVsZV9leHByICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBjdHggcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IFN0ZGxpYi5mc3QgcG1vZF9kZXNjO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBTdGRsaWIuZnN0IHBtb2RfbG9jO1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1vZF9kZXNjXCIsIFN0ZGxpYi5zbmQgcG1vZF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG1vZF9sb2NcIiwgU3RkbGliLnNuZCBwbW9kX2xvYyk7XG4gICAgICAgICAgICAgIChcInBtb2RfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtb2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfZXhwcl9kZXNjIC0+IG1vZHVsZV9leHByX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2Rfc3RydWN0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX3N0cnVjdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfZnVuY3RvciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2Z1bmN0b3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgKCBQbW9kX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQbW9kX3VucGFjayAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF91bnBhY2tcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6ICdjdHggLT4gc3RydWN0dXJlIC0+IHN0cnVjdHVyZSAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBjdHggcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzdHJfbG9jIGluXG4gICAgICAgICggeyBwc3RyX2Rlc2MgPSBTdGRsaWIuZnN0IHBzdHJfZGVzYzsgcHN0cl9sb2MgPSBTdGRsaWIuZnN0IHBzdHJfbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBzdHJfZGVzY1wiLCBTdGRsaWIuc25kIHBzdHJfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBzdHJfbG9jXCIsIFN0ZGxpYi5zbmQgcHN0cl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfZXZhbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V2YWxcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX3ZhbHVlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfdmFsdWVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX3ByaW1pdGl2ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9wcmltaXRpdmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX3R5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl90eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl90eXBleHQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfdHlwZXh0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9tb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfcmVjbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3JlY21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9tb2R0eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX21vZHR5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9vcGVuIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX29wZW5cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9jbGFzcyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9jbGFzc1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9jbGFzc190eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2NsYXNzX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9pbmNsdWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2luY2x1ZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiAnY3R4IC0+IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2Yl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdmJfcGF0ID0gU3RkbGliLmZzdCBwdmJfcGF0O1xuICAgICAgICAgICAgcHZiX2V4cHIgPSBTdGRsaWIuZnN0IHB2Yl9leHByO1xuICAgICAgICAgICAgcHZiX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHZiX2xvYyA9IFN0ZGxpYi5mc3QgcHZiX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdmJfcGF0XCIsIFN0ZGxpYi5zbmQgcHZiX3BhdCk7XG4gICAgICAgICAgICAgIChcInB2Yl9leHByXCIsIFN0ZGxpYi5zbmQgcHZiX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwdmJfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB2Yl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBTdGRsaWIuc25kIHB2Yl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiAnY3R4IC0+IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWJfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1iX25hbWUgPSBTdGRsaWIuZnN0IHBtYl9uYW1lO1xuICAgICAgICAgICAgcG1iX2V4cHIgPSBTdGRsaWIuZnN0IHBtYl9leHByO1xuICAgICAgICAgICAgcG1iX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtYl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG1iX2xvYyA9IFN0ZGxpYi5mc3QgcG1iX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbWJfbmFtZVwiLCBTdGRsaWIuc25kIHBtYl9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG1iX2V4cHJcIiwgU3RkbGliLnNuZCBwbWJfZXhwcik7XG4gICAgICAgICAgICAgIChcInBtYl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1iX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbWJfbG9jXCIsIFN0ZGxpYi5zbmQgcG1iX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiAnY3R4IC0+IHRvcGxldmVsX3BocmFzZSAtPiB0b3BsZXZlbF9waHJhc2UgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0b3BfZGVmIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdG9wX2RlZlwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHRvcF9kaXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0b3BfZGlyXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgICAgIDogJ2N0eCAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBjdHggcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZGlyX25hbWUgPSBTdGRsaWIuZnN0IHBkaXJfbmFtZTtcbiAgICAgICAgICAgIHBkaXJfYXJnID0gU3RkbGliLmZzdCBwZGlyX2FyZztcbiAgICAgICAgICAgIHBkaXJfbG9jID0gU3RkbGliLmZzdCBwZGlyX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZGlyX25hbWVcIiwgU3RkbGliLnNuZCBwZGlyX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwZGlyX2FyZ1wiLCBTdGRsaWIuc25kIHBkaXJfYXJnKTtcbiAgICAgICAgICAgICAgKFwicGRpcl9sb2NcIiwgU3RkbGliLnNuZCBwZGlyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgY3R4IHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJhX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBkaXJhX2Rlc2MgPSBTdGRsaWIuZnN0IHBkaXJhX2Rlc2M7XG4gICAgICAgICAgICBwZGlyYV9sb2MgPSBTdGRsaWIuZnN0IHBkaXJhX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZGlyYV9kZXNjXCIsIFN0ZGxpYi5zbmQgcGRpcmFfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBkaXJhX2xvY1wiLCBTdGRsaWIuc25kIHBkaXJhX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfc3RyaW5nIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX3N0cmluZ1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGRpcl9pbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9pbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZGlyX2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfYm9vbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9ib29sXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2FzZXMgOiAnY3R4IC0+IGNhc2VzIC0+IGNhc2VzICogJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbltAQEBlbmRdXG5bQEBAZW5kXVxuIiwib3BlbiBJbXBvcnRcblxudHlwZSB0ID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnRcblxubGV0IHRvX2V4dGVuc2lvbiAoZXJyb3IgOiBBc3RsaWIuTG9jYXRpb24uRXJyb3IudCkgPVxuICBsZXQgb3BlbiBBc3RsaWIuTG9jYXRpb24uRXJyb3IgaW5cbiAgbGV0IG9wZW4gQXN0X2hlbHBlciBpblxuICBpZiBub3QgKGlzX3dlbGxfZm9ybWVkIGVycm9yKSB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJ0b19leHRlbnNpb246IGV4cGVjdGVkIGtpbmQgUmVwb3J0X2Vycm9yXCIpO1xuICBsZXQgc3ViX21zZ3MgPSBzdWJfbXNncyBlcnJvciBpblxuICBsZXQgbWFpbl9tc2cgPSBtYWluX21zZyBlcnJvciBpblxuICBsZXQgZXJyX2V4dGVuc2lvbl9uYW1lIGxvYyA9IHsgTG9jYXRpb24ubG9jOyB0eHQgPSBcIm9jYW1sLmVycm9yXCIgfSBpblxuICBsZXQgbWtfc3RyaW5nX2NvbnN0YW50IHggPSBTdHIuZXZhbCAoRXhwLmNvbnN0YW50IChDb25zdC5zdHJpbmcgeCkpIGluXG4gIGxldCBleHRlbnNpb25fb2Zfc3ViX21zZyAoc3ViX21zZyA6IHN0cmluZyBMb2NhdGlvbi5sb2MpID1cbiAgICBTdHIuZXh0ZW5zaW9uXG4gICAgICAoZXJyX2V4dGVuc2lvbl9uYW1lIHN1Yl9tc2cubG9jLCBQU3RyIFsgbWtfc3RyaW5nX2NvbnN0YW50IHN1Yl9tc2cudHh0IF0pXG4gIGluXG4gICggZXJyX2V4dGVuc2lvbl9uYW1lIG1haW5fbXNnLmxvYyxcbiAgICBQYXJzZXRyZWUuUFN0clxuICAgICAgKG1rX3N0cmluZ19jb25zdGFudCBtYWluX21zZy50eHQgOjogTGlzdC5tYXAgZXh0ZW5zaW9uX29mX3N1Yl9tc2cgc3ViX21zZ3MpXG4gIClcblxubGV0IHJlZ2lzdGVyX2Vycm9yX29mX2V4biA9IEFzdGxpYi5Mb2NhdGlvbi5yZWdpc3Rlcl9lcnJvcl9vZl9leG5cblxubGV0IG1lc3NhZ2UgZXJyb3IgPVxuICBsZXQgeyBBc3RsaWIuTG9jYXRpb24udHh0OyBfIH0gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IubWFpbl9tc2cgZXJyb3IgaW5cbiAgdHh0XG5cbmxldCBzZXRfbWVzc2FnZSA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5zZXRfbWFpbl9tc2dcblxubGV0IG1ha2UgfmxvYyB0eHQgfnN1YiA9XG4gIGxldCBzdWIgPSBMaXN0Lm1hcCAoZnVuIChsb2MsIHR4dCkgLT4geyBBc3RsaWIuTG9jYXRpb24ubG9jOyB0eHQgfSkgc3ViIGluXG4gIEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5tYWtlIH5zdWIgeyBsb2M7IHR4dCB9XG5cbmxldCB1cGRhdGVfbG9jID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnNldF9tYWluX2xvY1xuXG5sZXQgZ2V0X2xvY2F0aW9uIGVycm9yID1cbiAgbGV0IHsgQXN0bGliLkxvY2F0aW9uLmxvYzsgXyB9ID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLm1haW5fbXNnIGVycm9yIGluXG4gIGxvY1xuXG5sZXQgb2ZfZXhuID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLm9mX2V4blxubGV0IHJhaXNlIGVycm9yID0gcmFpc2UgKEFzdGxpYi5Mb2NhdGlvbi5FcnJvciBlcnJvcilcbiIsIm1vZHVsZSBEb19ub3RfdXNlX2RpcmVjdGx5ID0gc3RydWN0IGVuZFxubW9kdWxlIEFmbF9pbnN0cnVtZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFmbF9pbnN0cnVtZW50IGluc3RlYWRcIl1cbm1vZHVsZSBBbGlhc19hbmFseXNpcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BbGlhc19hbmFseXNpcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQWxsb2NhdGVkX2NvbnN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFsbG9jYXRlZF9jb25zdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQW5ub3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEFyY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXJjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgQXJnX2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFyZ19oZWxwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzbWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21nZW4gaW5zdGVhZFwiXVxubW9kdWxlIEFzbWxpYnJhcmlhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21saWJyYXJpYW4gaW5zdGVhZFwiXVxubW9kdWxlIEFzbWxpbmsgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtbGluayBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtcGFja2FnZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtcGFja2FnZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9oZWxwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfaGVscGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfaW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfaXRlcmF0b3IgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfaXRlcmF0b3IgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9tYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfbWFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBc3R0eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQXR0cl9oZWxwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5BdHRyX2hlbHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXVnbWVudF9zcGVjaWFsaXNlZF9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkF1Z21lbnRfc3BlY2lhbGlzZWRfYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgQmFja2VuZF9pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBCYWNrZW5kX3ZhciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CYWNrZW5kX3ZhciBpbnN0ZWFkXCJdXG5tb2R1bGUgQmludXRpbHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CaW51dGlscyBpbnN0ZWFkXCJdXG5tb2R1bGUgQnJhbmNoX3JlbGF4YXRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnJhbmNoX3JlbGF4YXRpb24gaW5zdGVhZFwiXVxubW9kdWxlIEJyYW5jaF9yZWxheGF0aW9uX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEJ0eXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnR5cGUgaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWxkX2V4cG9ydF9pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkJ1aWxkX2V4cG9ydF9pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBCdWlsZF9wYXRoX3ByZWZpeF9tYXAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CdWlsZF9wYXRoX3ByZWZpeF9tYXAgaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWx0aW5fYXR0cmlidXRlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ1aWx0aW5fYXR0cmlidXRlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZWxpYnJhcmlhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWxpYnJhcmlhbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZWxpbmsgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkJ5dGVsaW5rIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlcGFja2FnZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkJ5dGVwYWNrYWdlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZXNlY3Rpb25zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnl0ZXNlY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBDU0UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ1NFIGluc3RlYWRcIl1cbm1vZHVsZSBDU0VnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ1NFZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBDYW1saW50ZXJuYWxNZW5oaXJMaWIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DYW1saW50ZXJuYWxNZW5oaXJMaWIgaW5zdGVhZFwiXVxubW9kdWxlIENjb21wID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ2NvbXAgaW5zdGVhZFwiXVxubW9kdWxlIENsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xhbWJkYV9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsYW1iZGFfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xmbGFncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNsZmxhZ3MgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9jb252ZXJzaW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfY29udmVyc2lvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9jb252ZXJzaW9uX2F1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2NvbnZlcnNpb25fYXV4IGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2VsZW1lbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9lbGVtZW50IGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2lkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfaWQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfbWlkZGxlX2VuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX21pZGRsZV9lbmQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfb2Zmc2V0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX29mZnNldHMgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfb3JpZ2luID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfb3JpZ2luIGluc3RlYWRcIl1cbm1vZHVsZSBDbWlfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ21pX2Zvcm1hdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tX2hlbHBlcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tX2hlbHBlcnMgaW5zdGVhZFwiXVxubW9kdWxlIENtbV9pbnZhcmlhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbV9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1nZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1nZW5fc3RhdGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tZ2VuX3N0YXRlIGluc3RlYWRcIl1cbm1vZHVsZSBDbW9fZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDbXQyYW5ub3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbXQyYW5ub3QgaW5zdGVhZFwiXVxubW9kdWxlIENtdF9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbXRfZm9ybWF0IGluc3RlYWRcIl1cbm1vZHVsZSBDbXhfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDbXhzX2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ29sb3JpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29sb3JpbmcgaW5zdGVhZFwiXVxubW9kdWxlIENvbWJhbGxvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db21iYWxsb2MgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBlbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21wZW52IGluc3RlYWRcIl1cbm1vZHVsZSBDb21waWxhdGlvbl91bml0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbXBpbGF0aW9uX3VuaXQgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkNvbXBpbGUgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGVfY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29tcGlsZV9jb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db21waWxlbnYgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBtaXNjID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29tcG1pc2MgaW5zdGVhZFwiXVxubW9kdWxlIENvbXByZXNzaW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29tcHJlc3Npb24gaW5zdGVhZFwiXVxubW9kdWxlIENvbmZpZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbmZpZyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29uZmlnX2Jvb3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENvbmZpZ19tYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDb25zaXN0YmwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db25zaXN0YmwgaW5zdGVhZFwiXVxubW9kdWxlIENvbnZlcnRfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db252ZXJ0X3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIEN0eXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ3R5cGUgaW5zdGVhZFwiXVxubW9kdWxlIERhdGFmbG93ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkRhdGFmbG93IGluc3RlYWRcIl1cbm1vZHVsZSBEYXRhcmVwciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRhdGFyZXByIGluc3RlYWRcIl1cbm1vZHVsZSBEZWFkY29kZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5EZWFkY29kZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRGVidWdpbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGVidWdpbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBEZXBlbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EZXBlbmQgaW5zdGVhZFwiXVxubW9kdWxlIERpZmZpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EaWZmaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBEaWZmaW5nX3dpdGhfa2V5cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRpZmZpbmdfd2l0aF9rZXlzIGluc3RlYWRcIl1cbm1vZHVsZSBEbGwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EbGwgaW5zdGVhZFwiXVxubW9kdWxlIERvY3N0cmluZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Eb2NzdHJpbmdzIGluc3RlYWRcIl1cbm1vZHVsZSBEb21haW5zdGF0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRvbWFpbnN0YXRlIGluc3RlYWRcIl1cbm1vZHVsZSBFZmZlY3RfYW5hbHlzaXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRWZmZWN0X2FuYWx5c2lzIGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkVtaXQgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXRhdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRW1pdGF1eCBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdGNvZGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkVtaXRjb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0ZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBFbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5FbnYgaW5zdGVhZFwiXVxubW9kdWxlIEVudmF1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVudmF1eCBpbnN0ZWFkXCJdXG5tb2R1bGUgRXJyb3JzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5FcnJvcnMgaW5zdGVhZFwiXVxubW9kdWxlIEVycm9ydHJhY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5FcnJvcnRyYWNlIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXhwb3J0X2lkIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwb3J0X2luZm9fZm9yX3BhY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXhwb3J0X2luZm9fZm9yX3BhY2sgaW5zdGVhZFwiXVxubW9kdWxlIEV4cHVuZ2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEV4dHJhY3RfcHJvamVjdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXh0cmFjdF9wcm9qZWN0aW9ucyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmluZF9yZWN1cnNpdmVfZnVuY3Rpb25zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZpbmRfcmVjdXJzaXZlX2Z1bmN0aW9ucyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX2ludmFyaWFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX2l0ZXJhdG9ycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX2l0ZXJhdG9ycyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV9taWRkbGVfZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfbWlkZGxlX2VuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV90b19jbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfdG9fY2xhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV91dGlscyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX3V0aWxzIGluc3RlYWRcIl1cbm1vZHVsZSBGcmVzaGVuaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZyZXNoZW5pbmcgaW5zdGVhZFwiXVxubW9kdWxlIEdlbnByaW50dmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5HZW5wcmludHZhbCBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRfdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSWRfdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIElkZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSWRlbnQgaW5zdGVhZFwiXVxubW9kdWxlIElkZW50aWZpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLklkZW50aWZpYWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW1wb3J0X2FwcHJveCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbXBvcnRfYXBwcm94IGluc3RlYWRcIl1cbm1vZHVsZSBJbmNsdWRlY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVjb3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZWNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVtb2QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlbW9kIGluc3RlYWRcIl1cbm1vZHVsZSBJbmNsdWRlbW9kX2Vycm9ycHJpbnRlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVtb2RfZXJyb3JwcmludGVyIGluc3RlYWRcIl1cbm1vZHVsZSBJbmNvbnN0YW50X2lkZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmNvbnN0YW50X2lkZW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5pdGlhbGl6ZV9zeW1ib2xfdG9fbGV0X3N5bWJvbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Jbml0aWFsaXplX3N5bWJvbF90b19sZXRfc3ltYm9sIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmVfYW5kX3NpbXBsaWZ5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluZV9hbmRfc2ltcGxpZnkgaW5zdGVhZFwiXVxubW9kdWxlIElubGluZV9hbmRfc2ltcGxpZnlfYXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluZV9hbmRfc2ltcGxpZnlfYXV4IGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19jb3N0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX2Nvc3QgaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2RlY2lzaW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX2RlY2lzaW9uIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19kZWNpc2lvbl9pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBJbmxpbmluZ19zdGF0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19zdGF0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfc3RhdHNfdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfc3RhdHNfdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX3RyYW5zZm9ybXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfdHJhbnNmb3JtcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5zdHJ1Y3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkluc3RydWN0IGluc3RlYWRcIl1cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludGVyZiBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJuYWxfdmFyaWFibGVfbmFtZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJuYWxfdmFyaWFibGVfbmFtZXMgaW5zdGVhZFwiXVxubW9kdWxlIEludGVydmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludGVydmFsIGluc3RlYWRcIl1cbm1vZHVsZSBJbnZhcmlhbnRfcGFyYW1zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludmFyaWFudF9wYXJhbXMgaW5zdGVhZFwiXVxubW9kdWxlIExhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGF6eV9iYWNrdHJhY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5MYXp5X2JhY2t0cmFjayBpbnN0ZWFkXCJdXG5tb2R1bGUgTGV4ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5MZXhlciBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9jb2RlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpZnRfY29kZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9jb25zdGFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9jb25zdGFudHMgaW5zdGVhZFwiXVxubW9kdWxlIExpZnRfbGV0X3RvX2luaXRpYWxpemVfc3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpZnRfbGV0X3RvX2luaXRpYWxpemVfc3ltYm9sIGluc3RlYWRcIl1cbm1vZHVsZSBMaW5lYXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluZWFyIGluc3RlYWRcIl1cbm1vZHVsZSBMaW5lYXJfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmVhcl9mb3JtYXQgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhcml6ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5lYXJpemUgaW5zdGVhZFwiXVxubW9kdWxlIExpbmthZ2VfbmFtZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5rYWdlX25hbWUgaW5zdGVhZFwiXVxubW9kdWxlIExpbnNjYW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluc2NhbiBpbnN0ZWFkXCJdXG5tb2R1bGUgTGl2ZW5lc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGl2ZW5lc3MgaW5zdGVhZFwiXVxubW9kdWxlIExvYWRfcGF0aCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvYWRfcGF0aCBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9jYWxfc3RvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb2NhbF9zdG9yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9jYXRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb2NhdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9uZ2lkZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9uZ2lkZW50IGluc3RlYWRcIl1cbm1vZHVsZSBNYWNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk1hY2ggaW5zdGVhZFwiXVxubW9kdWxlIE1haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIE1haW5fYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1haW5fYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFpbmRyaXZlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuTWFpbmRyaXZlciBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFrZWRlcGVuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1ha2VkZXBlbmQgaW5zdGVhZFwiXVxubW9kdWxlIE1hdGNoaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWF0Y2hpbmcgaW5zdGVhZFwiXVxubW9kdWxlIE1ldGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NZXRhIGluc3RlYWRcIl1cbm1vZHVsZSBNaXNjID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWlzYyBpbnN0ZWFkXCJdXG5tb2R1bGUgTXR5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTXV0YWJsZV92YXJpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5NdXRhYmxlX3ZhcmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBOdW1iZXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTnVtYmVycyBpbnN0ZWFkXCJdXG5tb2R1bGUgT3Bjb2RlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk9wY29kZXMgaW5zdGVhZFwiXVxubW9kdWxlIE9wcmludCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk9wcmludCBpbnN0ZWFkXCJdXG5tb2R1bGUgT3B0Y29tcGlsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5PcHRjb21waWxlIGluc3RlYWRcIl1cbm1vZHVsZSBPcHRlcnJvcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuT3B0ZXJyb3JzIGluc3RlYWRcIl1cbm1vZHVsZSBPcHRtYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBPcHRtYWluZHJpdmVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk9wdG1haW5kcml2ZXIgaW5zdGVhZFwiXVxubW9kdWxlIE91dGNvbWV0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBQYXJhbWV0ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUGFyYW1ldGVyIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJtYXRjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcm1hdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJzZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcnNlIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJzZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXJzZXIgaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNldHJlZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgUGFzc193cmFwcGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlBhc3Nfd3JhcHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgUGF0aCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhdGggaW5zdGVhZFwiXVxubW9kdWxlIFBhdHRlcm5zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGF0dGVybnMgaW5zdGVhZFwiXVxubW9kdWxlIFBlcnNpc3RlbnRfZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGVyc2lzdGVudF9lbnYgaW5zdGVhZFwiXVxubW9kdWxlIFBvbGxpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUG9sbGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgUHBhcnNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHBhcnNlIGluc3RlYWRcIl1cbm1vZHVsZSBQcHJpbnRhc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcHJpbnRhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFByZWRlZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByZWRlZiBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbWl0aXZlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbWl0aXZlIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50YXN0IGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRjbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNsYW1iZGFfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNsYW1iZGFfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRjbW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRjbW0gaW5zdGVhZFwiXVxubW9kdWxlIFByaW50aW5zdHIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLlByaW50aW5zdHIgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bGluZWFyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50bGluZWFyIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludG1hY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRtYWNoIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHBhdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50cGF0IGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHR5cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50dHlwIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHR5cGVkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnR0eXBlZCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qcm9jIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9maWxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJvZmlsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJvamVjdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qcm9qZWN0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBSZWZfdG9fdmFyaWFibGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlZl90b192YXJpYWJsZXMgaW5zdGVhZFwiXVxubW9kdWxlIFJlZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZWcgaW5zdGVhZFwiXVxubW9kdWxlIFJlbG9hZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZWxvYWQgaW5zdGVhZFwiXVxubW9kdWxlIFJlbG9hZGdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZWxvYWRnZW4gaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV9mcmVlX3ZhcnNfZXF1YWxfdG9fYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfZnJlZV92YXJzX2VxdWFsX3RvX2FyZ3MgaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV91bnVzZWRfYXJndW1lbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV91bnVzZWRfYXJndW1lbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfdW51c2VkX2Nsb3N1cmVfdmFycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfdW51c2VkX2Nsb3N1cmVfdmFycyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX3VudXNlZF9wcm9ncmFtX2NvbnN0cnVjdHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX3VudXNlZF9wcm9ncmFtX2NvbnN0cnVjdHMgaW5zdGVhZFwiXVxubW9kdWxlIFJ1bnRpbWVkZWYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5SdW50aW1lZGVmIGluc3RlYWRcIl1cbm1vZHVsZSBTY2hlZGdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TY2hlZGdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2NoZWR1bGluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TY2hlZHVsaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBTZWxlY3RnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2VsZWN0Z2VuIGluc3RlYWRcIl1cbm1vZHVsZSBTZWxlY3Rpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2VsZWN0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBTZW1hbnRpY3Nfb2ZfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZW1hbnRpY3Nfb2ZfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2V0X29mX2Nsb3N1cmVzX2lkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNldF9vZl9jbG9zdXJlc19pZCBpbnN0ZWFkXCJdXG5tb2R1bGUgU2V0X29mX2Nsb3N1cmVzX29yaWdpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZXRfb2ZfY2xvc3VyZXNfb3JpZ2luIGluc3RlYWRcIl1cbm1vZHVsZSBTaGFwZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlNoYXBlIGluc3RlYWRcIl1cbm1vZHVsZSBTaGFwZV9yZWR1Y2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TaGFwZV9yZWR1Y2UgaW5zdGVhZFwiXVxubW9kdWxlIFNoYXJlX2NvbnN0YW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaGFyZV9jb25zdGFudHMgaW5zdGVhZFwiXVxubW9kdWxlIFNpZ25hdHVyZV9ncm91cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlNpZ25hdHVyZV9ncm91cCBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxlX3ZhbHVlX2FwcHJveCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGVfdmFsdWVfYXBwcm94IGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2ltcGxpZiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHMgaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWZ5X2JveGVkX2ludGVnZXJfb3BzX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFNpbXBsaWZ5X2NvbW1vbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9jb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWZ5X3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2ltcGxpZnlfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU3BpbGwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3BpbGwgaW5zdGVhZFwiXVxubW9kdWxlIFNwbGl0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNwbGl0IGluc3RlYWRcIl1cbm1vZHVsZSBTdGFja2ZyYW1lID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0YWNrZnJhbWUgaW5zdGVhZFwiXVxubW9kdWxlIFN0YWNrZnJhbWVnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3RhY2tmcmFtZWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU3RhdGljX2V4Y2VwdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TdGF0aWNfZXhjZXB0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBTdHJtYXRjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TdHJtYXRjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3Ryb25nbHlfY29ubmVjdGVkX2NvbXBvbmVudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TdHJvbmdseV9jb25uZWN0ZWRfY29tcG9uZW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgU3R5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3R5cGVzIGluc3RlYWRcIl1cbm1vZHVsZSBTdWJzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN1YnN0IGluc3RlYWRcIl1cbm1vZHVsZSBTd2l0Y2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Td2l0Y2ggaW5zdGVhZFwiXVxubW9kdWxlIFN5bWJvbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIFN5bXRhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3ltdGFibGUgaW5zdGVhZFwiXVxubW9kdWxlIFN5bnRheGVyciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN5bnRheGVyciBpbnN0ZWFkXCJdXG5tb2R1bGUgVGFnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlRhZyBpbnN0ZWFkXCJdXG5tb2R1bGUgVGFyZ2V0aW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGFyZ2V0aW50IGluc3RlYWRcIl1cbm1vZHVsZSBUYXN0X2l0ZXJhdG9yID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGFzdF9pdGVyYXRvciBpbnN0ZWFkXCJdXG5tb2R1bGUgVGFzdF9tYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXN0X21hcHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgVGVybWluZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UZXJtaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgVGhyZWFkX3Nhbml0aXplciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5UaHJlYWRfc2FuaXRpemVyIGluc3RlYWRcIl1cbm1vZHVsZSBUbWMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UbWMgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGNvbW1vbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wY29tbW9uIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BkaXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BkaXJzIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BldmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BldmFsIGluc3RlYWRcIl1cbm1vZHVsZSBUb3Bob29rcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgVG9wbG9vcCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wbG9vcCBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wbWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wbWFpbiBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wcHJpbnRlcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcHByaW50ZXJzIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BzdGFydCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgVHJhY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRyYWNlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xhdHRyaWJ1dGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xhdHRyaWJ1dGUgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGNsYXNzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xjb3JlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xtb2QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xtb2QgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbG9iaiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbG9iaiBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNscHJpbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbHByaW0gaW5zdGVhZFwiXVxubW9kdWxlIFRyYXZlcnNlX2Zvcl9leHBvcnRlZF9zeW1ib2xzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlRyYXZlcnNlX2Zvcl9leHBvcnRlZF9zeW1ib2xzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlX2ltbWVkaWFjeSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVfaW1tZWRpYWN5IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVjb3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2wgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX2ltbWVkaWFjeSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX2ltbWVkaWFjeSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfcHJvcGVydGllcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3Byb3BlcnRpZXMgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3NlcGFyYWJpbGl0eSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3NlcGFyYWJpbGl0eSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfdW5ib3hlZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3VuYm94ZWQgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3ZhcmlhbmNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfdmFyaWFuY2UgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkdHJlZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkdHJlZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZW1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVtb2QgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVvcHQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlb3B0IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBldGV4cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGV0ZXhwIGluc3RlYWRcIl1cbm1vZHVsZSBVbl9hbmYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5fYW5mIGluc3RlYWRcIl1cbm1vZHVsZSBVbmJveF9jbG9zdXJlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9jbG9zdXJlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfZnJlZV92YXJzX29mX2Nsb3N1cmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuYm94X2ZyZWVfdmFyc19vZl9jbG9zdXJlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfc3BlY2lhbGlzZWRfYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9zcGVjaWFsaXNlZF9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBVbml0X2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Vbml0X2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIFVudHlwZWFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlVudHlwZWFzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgVmFsdWVfcmVjX2NoZWNrID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVmFsdWVfcmVjX2NoZWNrIGluc3RlYWRcIl1cbm1vZHVsZSBWYWx1ZV9yZWNfY29tcGlsZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5WYWx1ZV9yZWNfY29tcGlsZXIgaW5zdGVhZFwiXVxubW9kdWxlIFZhbHVlX3JlY190eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgVmFyX3dpdGhpbl9jbG9zdXJlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlZhcl93aXRoaW5fY2xvc3VyZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVmFyaWFibGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVmFyaWFibGUgaW5zdGVhZFwiXVxubW9kdWxlIFdhcm5pbmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uV2FybmluZ3MgaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9hc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFg4Nl9kc2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X2RzbCBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X2dhcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfZ2FzIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfbWFzbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfbWFzbSBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X3Byb2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X3Byb2MgaW5zdGVhZFwiXVxuIiwib3BlbiBTdGRMYWJlbHNcblxubGV0IHBhdGRpZmZfY21kIH51c2VfY29sb3IgfmV4dHJhX3BhdGRpZmZfYXJncyA9XG4gIGxldCBhcmdzID1cbiAgICBMaXN0LmNvbmNhdFxuICAgICAgW1xuICAgICAgICBbIFwiLWtlZXAtd2hpdGVzcGFjZVwiIF07XG4gICAgICAgIFsgXCItbG9jYXRpb24tc3R5bGUgb21ha2VcIiBdO1xuICAgICAgICAoaWYgdXNlX2NvbG9yIHRoZW4gW10gZWxzZSBbIFwiLWFzY2lpXCIgXSk7XG4gICAgICAgIGV4dHJhX3BhdGRpZmZfYXJncztcbiAgICAgIF1cbiAgaW5cbiAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIChcInBhdGRpZmZcIiA6OiBhcmdzKVxuXG5sZXQgcHJpbnQgP2RpZmZfY29tbWFuZCA/KGV4dHJhX3BhdGRpZmZfYXJncyA9IFtdKSA/KHVzZV9jb2xvciA9IGZhbHNlKSB+ZmlsZTFcbiAgICB+ZmlsZTIgKCkgPVxuICBsZXQgZXhlYyBjbWQgPVxuICAgIGxldCBjbWQgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlcyAlcyAlcyAxPiYyXCIgY21kIChGaWxlbmFtZS5xdW90ZSBmaWxlMSlcbiAgICAgICAgKEZpbGVuYW1lLnF1b3RlIGZpbGUyKVxuICAgIGluXG4gICAgbWF0Y2ggU3lzLmNvbW1hbmQgY21kIHdpdGhcbiAgICB8IDAgLT4gYFNhbWVcbiAgICB8IDEgLT4gYERpZmZlcmVudFxuICAgIHwgbiAtPiBgRXJyb3IgKG4sIGNtZClcbiAgaW5cbiAgbWF0Y2ggZGlmZl9jb21tYW5kIHdpdGhcbiAgfCBTb21lIHMgLT4gaWdub3JlIChleGVjIHMgOiBbPiBgU2FtZSB8IGBEaWZmZXJlbnQgfCBgRXJyb3Igb2YgaW50ICogc3RyaW5nIF0pXG4gIHwgTm9uZSAtPiAoXG4gICAgICBtYXRjaCBleGVjIChwYXRkaWZmX2NtZCB+dXNlX2NvbG9yIH5leHRyYV9wYXRkaWZmX2FyZ3MpIHdpdGhcbiAgICAgIHwgYFNhbWUgLT5cbiAgICAgICAgICAoKiBwYXRkaWZmIHByb2R1Y2VkIG5vIG91dHB1dCwgZmFsbGJhY2sgdG8gZGlmZiAtdSAqKVxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lIDEsIGNoYXJhY3RlcnMgMC0wOlxcbiUhXCIgZmlsZTE7XG4gICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAoZXhlYyBcImRpZmYgLXVcIiA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSlcbiAgICAgIHwgYERpZmZlcmVudCAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgc3VjY2Vzc2Z1bGx5IGZvdW5kIGEgZGlmZmVyZW5jZSAqKVxuICAgICAgICAgICgpXG4gICAgICB8IGBFcnJvciAoZXJyX2NvZGUsIGNtZCkgLT5cbiAgICAgICAgICAoKiBwYXRkaWZmIHRocmV3IGFuIGVycm9yLi4uIHBlcmhhcHMgaXQgd2Fzbid0IGluc3RhbGxlZD8gZmFsbGJhY2sgdG8gZGlmZiAtdSAqKVxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICBcIkVycm9yOlxcblxcXG4gICAgICAgICAgICAgPiAlUyBleGl0ZWQgd2l0aCBjb2RlICVkXFxuXFxcbiAgICAgICAgICAgICA+IFBlcmhhcHMgcGF0ZGlmZiBpcyBub3QgaW5zdGFsbGVkPyBIaW50LCB0cnk6IG9wYW0gaW5zdGFsbCBwYXRkaWZmXFxuXFxcbiAgICAgICAgICAgICA+IEZhbGxpbmcgYmFjayB0byBkaWZmIC11XFxuXFxuXCJcbiAgICAgICAgICAgIGNtZCBlcnJfY29kZTtcbiAgICAgICAgICBQcmludGYuZXByaW50ZiBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAxLCBjaGFyYWN0ZXJzIDAtMDpcXG4lIVwiIGZpbGUxO1xuICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgKGV4ZWMgXCJkaWZmIC11XCIgOiBbPiBgU2FtZSB8IGBEaWZmZXJlbnQgfCBgRXJyb3Igb2YgaW50ICogc3RyaW5nIF0pKVxuIiwidHlwZSBkZXJpdmVyID0gLi5cblxubGV0IGFsbCA9IEhhc2h0YmwuY3JlYXRlIDQyXG5cbmxldCByZWdpc3RlciBuYW1lIGRlcml2ZXIgPVxuICBpZiBIYXNodGJsLm1lbSBhbGwgbmFtZSB0aGVuXG4gICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICBcIlBweF9kZXJpdmllcnMucmVnaXN0ZXI6ICVTIGlzIGFscmVhZHkgcmVnaXN0ZXJlZFwiIG5hbWU7XG4gIEhhc2h0YmwuYWRkIGFsbCBuYW1lIGRlcml2ZXJcblxubGV0IGxvb2t1cCBuYW1lID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIGFsbCBuYW1lIHdpdGhcbiAgfCBkcnYgLT4gU29tZSBkcnZcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxubGV0IGRlcml2ZXJzICgpID1cbiAgSGFzaHRibC5mb2xkIChmdW4gbmFtZSBkcnYgYWNjIC0+IChuYW1lLCBkcnYpIDo6IGFjYykgYWxsIFtdXG4iLCJtb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIG1hcCA9ICdhIC0+ICdhXG4gIHR5cGUgJ2EgaXRlciA9ICdhIC0+IHVuaXRcbiAgdHlwZSAoJ2EsICdhY2MpIGZvbGQgPSAnYSAtPiAnYWNjIC0+ICdhY2NcbiAgdHlwZSAoJ2EsICdhY2MpIGZvbGRfbWFwID0gJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2NcbiAgdHlwZSAoJ2N0eCwgJ2EpIG1hcF93aXRoX2NvbnRleHQgPSAnY3R4IC0+ICdhIC0+ICdhXG4gIHR5cGUgKCdhLCAncmVzKSBsaWZ0ID0gJ2EgLT4gJ3Jlc1xuICB0eXBlICgnY3R4LCAnYSwgJ3JlcykgbGlmdF9tYXBfd2l0aF9jb250ZXh0ID0gJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXNcbmVuZFxuXG5jbGFzcyBtYXAgPVxuICBsZXQgYW55IHggPSB4IGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiBpbnQgVC5tYXAgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogc3RyaW5nIFQubWFwID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiBib29sIFQubWFwID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiBjaGFyIFQubWFwID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICdhIFQubWFwIC0+ICdhIG9wdGlvbiBULm1hcCA9XG4gICAgICBmdW4gZiB4IC0+IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gJ2EgVC5tYXAgLT4gJ2EgbGlzdCBULm1hcCA9IExpc3QubWFwXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICdhIFQubWFwIC0+ICdhIGFycmF5IFQubWFwID0gQXJyYXkubWFwXG4gIGVuZFxuXG5jbGFzcyBpdGVyID1cbiAgbGV0IGFueSA9IGlnbm9yZSBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogaW50IFQuaXRlciA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiBzdHJpbmcgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiBib29sIFQuaXRlciA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogY2hhciBULml0ZXIgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gJ2EgVC5pdGVyIC0+ICdhIG9wdGlvbiBULml0ZXIgPVxuICAgICAgZnVuIGYgeCAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiAoKSB8IFNvbWUgeCAtPiBmIHhcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICdhIFQuaXRlciAtPiAnYSBsaXN0IFQuaXRlciA9IExpc3QuaXRlclxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAnYSBULml0ZXIgLT4gJ2EgYXJyYXkgVC5pdGVyID0gQXJyYXkuaXRlclxuICBlbmRcblxuY2xhc3MgWydhY2NdIGZvbGQgPVxuICBsZXQgYW55IF8gYWNjID0gYWNjIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiAoaW50LCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogKHN0cmluZywgJ2FjYykgVC5mb2xkID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiAoYm9vbCwgJ2FjYykgVC5mb2xkID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiAoY2hhciwgJ2FjYykgVC5mb2xkID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkIC0+ICgnYSBvcHRpb24sICdhY2MpIFQuZm9sZCA9XG4gICAgICBmdW4gZiB4IGFjYyAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiBhY2MgfCBTb21lIHggLT4gZiB4IGFjY1xuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIGxpc3QsICdhY2MpIFQuZm9sZCA9XG4gICAgICBsZXQgcmVjIGxvb3AgZiBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBhY2MgfCB4IDo6IGwgLT4gbG9vcCBmIGwgKGYgeCBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcFxuXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkIC0+ICgnYSBhcnJheSwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGZ1biBmIGEgYWNjIC0+XG4gICAgICAgIGxldCByID0gcmVmIGFjYyBpblxuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgICAgciA6PSBmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkgIXJcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIXJcbiAgZW5kXG5cbmNsYXNzIFsnYWNjXSBmb2xkX21hcCA9XG4gIGxldCBhbnkgeCBhY2MgPSAoeCwgYWNjKSBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogKGludCwgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiAoYm9vbCwgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogKGNoYXIsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAnYWNjKSBULmZvbGRfbWFwIC0+ICgnYSBvcHRpb24sICdhY2MpIFQuZm9sZF9tYXAgPVxuICAgICAgZnVuIGYgeCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoTm9uZSwgYWNjKVxuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgbGV0IHgsIGFjYyA9IGYgeCBhY2MgaW5cbiAgICAgICAgICAgIChTb21lIHgsIGFjYylcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkX21hcCAtPiAoJ2EgbGlzdCwgJ2FjYykgVC5mb2xkX21hcCA9XG4gICAgICBsZXQgcmVjIGxvb3AgZiBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IChbXSwgYWNjKVxuICAgICAgICB8IHggOjogbCAtPlxuICAgICAgICAgICAgbGV0IHgsIGFjYyA9IGYgeCBhY2MgaW5cbiAgICAgICAgICAgIGxldCBsLCBhY2MgPSBsb29wIGYgbCBhY2MgaW5cbiAgICAgICAgICAgICh4IDo6IGwsIGFjYylcbiAgICAgIGluXG4gICAgICBsb29wXG5cbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGRfbWFwIC0+ICgnYSBhcnJheSwgJ2FjYykgVC5mb2xkX21hcCA9XG4gICAgICBmdW4gZiBhIGFjYyAtPlxuICAgICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICAgICAgaWYgbGVuID0gMCB0aGVuIChhLCBhY2MpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgeCwgYWNjID0gZiAoQXJyYXkudW5zYWZlX2dldCBhIDApIGFjYyBpblxuICAgICAgICAgIGxldCBhJyA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiBhY2MgaW5cbiAgICAgICAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgICAgbGV0IHgsIGFjYyA9IGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSAhciBpblxuICAgICAgICAgICAgQXJyYXkudW5zYWZlX3NldCBhJyBpIHg7XG4gICAgICAgICAgICByIDo9IGFjY1xuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgKGEnLCAhcilcbiAgZW5kXG5cbmNsYXNzIFsnY3R4XSBtYXBfd2l0aF9jb250ZXh0ID1cbiAgbGV0IGFueSBfIHggPSB4IGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiAoJ2N0eCwgaW50KSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogKCdjdHgsIHN0cmluZykgVC5tYXBfd2l0aF9jb250ZXh0ID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiAoJ2N0eCwgYm9vbCkgVC5tYXBfd2l0aF9jb250ZXh0ID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiAoJ2N0eCwgY2hhcikgVC5tYXBfd2l0aF9jb250ZXh0ID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhKSBULm1hcF93aXRoX2NvbnRleHQgLT4gKCdjdHgsICdhIG9wdGlvbikgVC5tYXBfd2l0aF9jb250ZXh0XG4gICAgICAgID1cbiAgICAgIGZ1biBmIGN0eCB4IC0+IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiBjdHggeClcblxuICAgIG1ldGhvZCBsaXN0XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhKSBULm1hcF93aXRoX2NvbnRleHQgLT4gKCdjdHgsICdhIGxpc3QpIFQubWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggbCAtPiBMaXN0Lm1hcCAoZiBjdHgpIGxcblxuICAgIG1ldGhvZCBhcnJheVxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSkgVC5tYXBfd2l0aF9jb250ZXh0IC0+ICgnY3R4LCAnYSBhcnJheSkgVC5tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCBhIC0+IEFycmF5Lm1hcCAoZiBjdHgpIGFcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydyZXNdIGxpZnQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gKCdhLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAoaW50LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAoc3RyaW5nLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogKGJvb2wsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAoY2hhciwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgYXJyYXkgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGFycmF5LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBmbG9hdCA6IChmbG9hdCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50MzIgOiAoaW50MzIsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDY0IDogKGludDY0LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBuYXRpdmVpbnQgOiAobmF0aXZlaW50LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCB1bml0IDogKHVuaXQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdyZXMgbGlzdCAtPiAncmVzXG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBvcHRpb24sICdyZXMpIFQubGlmdCA9XG4gICAgICBmdW4gZiB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc2VsZiNjb25zdHIgXCJOb25lXCIgW11cbiAgICAgICAgfCBTb21lIHggLT4gc2VsZiNjb25zdHIgXCJTb21lXCIgWyBmIHggXVxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGxpc3QsICdyZXMpIFQubGlmdCA9XG4gICAgICBmdW4gZiBsIC0+XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHNlbGYjY29uc3RyIFwiW11cIiBbXVxuICAgICAgICB8IHggOjogbCAtPiBzZWxmI2NvbnN0ciBcIjo6XCIgWyBmIHg7IHNlbGYjbGlzdCBmIGwgXVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2N0eCwgJ3Jlc10gbGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIG90aGVyIDogJ2EuICdjdHggLT4gJ2EgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6ICgnY3R4LCBpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogKCdjdHgsIHN0cmluZywgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogKCdjdHgsIGJvb2wsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6ICgnY3R4LCBjaGFyLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gICAgbWV0aG9kIHZpcnR1YWwgYXJyYXlcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgICAgICAgKCdjdHgsICdhIGFycmF5LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gICAgbWV0aG9kIHZpcnR1YWwgZmxvYXQgOiAoJ2N0eCwgZmxvYXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50MzIgOiAoJ2N0eCwgaW50MzIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50NjQgOiAoJ2N0eCwgaW50NjQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgbmF0aXZlaW50IDogKCdjdHgsIG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCB1bml0IDogKCdjdHgsIHVuaXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogJ2N0eCAtPiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogJ2N0eCAtPiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdjdHggLT4gJ3JlcyBsaXN0IC0+ICdyZXNcblxuICAgIG1ldGhvZCBvcHRpb25cbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgICAgICAgKCdjdHgsICdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoTm9uZSwgc2VsZiNjb25zdHIgY3R4IFwiTm9uZVwiIFtdKVxuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgbGV0IHgsIHJlcyA9IGYgY3R4IHggaW5cbiAgICAgICAgICAgIChTb21lIHgsIHNlbGYjY29uc3RyIGN0eCBcIlNvbWVcIiBbIHJlcyBdKVxuXG4gICAgbWV0aG9kIGxpc3RcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgICAgICAgKCdjdHgsICdhIGxpc3QsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCBsIC0+XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IChbXSwgc2VsZiNjb25zdHIgY3R4IFwiW11cIiBbXSlcbiAgICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgICAgIGxldCB4LCByZXNfaGVhZCA9IGYgY3R4IHggaW5cbiAgICAgICAgICAgIGxldCBsLCByZXNfdGFpbCA9IHNlbGYjbGlzdCBmIGN0eCBsIGluXG4gICAgICAgICAgICAoeCA6OiBsLCBzZWxmI2NvbnN0ciBjdHggXCI6OlwiIFsgcmVzX2hlYWQ7IHJlc190YWlsIF0pXG4gIGVuZFxuXG5jbGFzcyB0eXBlIFsncmVzXSBzdGRfbGlmdGVycyA9IG9iamVjdFxuICBtZXRob2Qgb3RoZXIgOiAnYS4gKCdhLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGludCA6IChpbnQsICdyZXMpIFQubGlmdFxuICBtZXRob2Qgc3RyaW5nIDogKHN0cmluZywgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBib29sIDogKGJvb2wsICdyZXMpIFQubGlmdFxuICBtZXRob2QgY2hhciA6IChjaGFyLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBhcnJheSwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCByZWNvcmQgOiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCBjb25zdHIgOiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIHR1cGxlIDogJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGZsb2F0IDogKGZsb2F0LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGludDMyIDogKGludDMyLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGludDY0IDogKGludDY0LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIG5hdGl2ZWludCA6IChuYXRpdmVpbnQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgdW5pdCA6ICh1bml0LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2Egb3B0aW9uLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGxpc3QsICdyZXMpIFQubGlmdFxuZW5kXG5cbmNsYXNzIHR5cGUgWydjdHgsICdyZXNdIHN0ZF9saWZ0X21hcHBlcnNfd2l0aF9jb250ZXh0ID0gb2JqZWN0XG4gIG1ldGhvZCBvdGhlciA6ICdhLiAnY3R4IC0+ICdhIC0+ICdyZXNcbiAgbWV0aG9kIGludCA6ICgnY3R4LCBpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgYm9vbCA6ICgnY3R4LCBib29sLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgY2hhciA6ICgnY3R4LCBjaGFyLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCBhcnJheSA6XG4gICAgJ2EuXG4gICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICgnY3R4LCAnYSBhcnJheSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2QgcmVjb3JkIDogJ2N0eCAtPiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCBjb25zdHIgOiAnY3R4IC0+IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgdHVwbGUgOiAnY3R4IC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCBmbG9hdCA6ICgnY3R4LCBmbG9hdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGludDMyIDogKCdjdHgsIGludDMyLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgaW50NjQgOiAoJ2N0eCwgaW50NjQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBuYXRpdmVpbnQgOiAoJ2N0eCwgbmF0aXZlaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgdW5pdCA6ICgnY3R4LCB1bml0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCBvcHRpb24gOlxuICAgICdhLlxuICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAoJ2N0eCwgJ2Egb3B0aW9uLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCBsaXN0IDpcbiAgICAnYS5cbiAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgKCdjdHgsICdhIGxpc3QsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5lbmRcbiIsIm1vZHVsZSBDYW1sID0gU3RkbGliIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMy0wNl0gdXNlIFN0ZGxpYiBpbnN0ZWFkXCJdXG5vcGVuIFN0ZGxpYlxub3BlbiBTdGRMYWJlbHNcbm1vZHVsZSBTZXhwID0gU2V4cGxpYjAuU2V4cFxubW9kdWxlIFNleHBhYmxlID0gU2V4cGxpYjAuU2V4cGFibGVcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cF9jb252XG5cbm1vZHVsZSB0eXBlIENvbXBhcmlzb25zID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA9ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA8ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA+ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA8PiApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPD0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID49ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgbWluIDogdCAtPiB0IC0+IHRcbiAgdmFsIG1heCA6IHQgLT4gdCAtPiB0XG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBlcXVhbCA9ICggPSApXG4gIGxldCAoID0gKSA9ICggPSApXG4gIGxldCAoIDwgKSA9ICggPCApXG4gIGxldCAoID4gKSA9ICggPiApXG4gIGxldCAoIDw+ICkgPSAoIDw+IClcbiAgbGV0ICggPD0gKSA9ICggPD0gKVxuICBsZXQgKCA+PSApID0gKCA+PSApXG4gIGxldCBtaW4gPSBtaW5cbiAgbGV0IG1heCA9IG1heFxuZW5kXG5cbmluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBpbnQpXG5tb2R1bGUgQXJyYXkgPSBBcnJheVxuXG5tb2R1bGUgQm9vbCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2Jvb2xcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gYm9vbClcbmVuZFxuXG5tb2R1bGUgQnl0ZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCeXRlc1xuXG4gIGxldCBzdWJfc3RyaW5nIHQgfnBvcyB+bGVuID0gU3RkbGliLkJ5dGVzLnN1Yl9zdHJpbmcgdCBwb3MgbGVuXG5cbiAgbGV0IGJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgICBTdGRsaWIuQnl0ZXMuYmxpdF9zdHJpbmcgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG5lbmRcblxubW9kdWxlIENoYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDaGFyXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBjaGFyKVxuZW5kXG5cbm1vZHVsZSBFeG4gPSBzdHJ1Y3RcbiAgbGV0IHByb3RlY3R4IHggfmYgfmZpbmFsbHkgPVxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgfCB5IC0+XG4gICAgICAgIGZpbmFsbHkgeDtcbiAgICAgICAgeVxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICBmaW5hbGx5IHg7XG4gICAgICAgIHJhaXNlIGV4blxuZW5kXG5cbm1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2Zsb2F0XG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGZsb2F0KVxuZW5kXG5cbm1vZHVsZSBGbiA9IHN0cnVjdFxuICBsZXQgaWQgeCA9IHhcbmVuZFxuXG5tb2R1bGUgSGFzaHRibCA9IHN0cnVjdFxuICBpbmNsdWRlIEhhc2h0YmxcblxuICBsZXQgc2V0IHQgfmtleSB+ZGF0YSA9XG4gICAgd2hpbGUgbWVtIHQga2V5IGRvXG4gICAgICByZW1vdmUgdCBrZXlcbiAgICBkb25lO1xuICAgIGFkZCB0IGtleSBkYXRhXG5cbiAgbGV0IGFkZCB0IH5rZXkgfmRhdGEgPVxuICAgIGlmIG1lbSB0IGtleSB0aGVuIEVycm9yIChJbnZhbGlkX2FyZ3VtZW50IFwiSGFzaHRibC5hZGRfZXhuXCIpXG4gICAgZWxzZSAoXG4gICAgICBhZGQgdCBrZXkgZGF0YTtcbiAgICAgIE9rICgpKVxuXG4gIGxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoIE9rICgpIC0+ICgpIHwgRXJyb3IgZXhuIC0+IHJhaXNlIGV4blxuXG4gIGxldCBmaW5kX29wdCB0IGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoIGRhdGEgLT4gU29tZSBkYXRhIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IGZpbmRfb3JfYWRkIHQga2V5IH5kZWZhdWx0ID1cbiAgICBtYXRjaCBmaW5kX29wdCB0IGtleSB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gZGF0YVxuICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgZGF0YSA9IGRlZmF1bHQgKCkgaW5cbiAgICAgICAgYWRkX2V4biB0IH5rZXkgfmRhdGE7XG4gICAgICAgIGRhdGFcblxuICBsZXQgcmVjIGFkZF9hbGlzdCB0IGFsaXN0ID1cbiAgICBtYXRjaCBhbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBPayAoKVxuICAgIHwgKGtleSwgZGF0YSkgOjogdGFpbCAtPiAoXG4gICAgICAgIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aFxuICAgICAgICB8IE9rICgpIC0+IGFkZF9hbGlzdCB0IHRhaWxcbiAgICAgICAgfCBFcnJvciAoXyA6IGV4bikgLT4gRXJyb3Iga2V5KVxuXG4gIGxldCBvZl9hbGlzdCA/c2l6ZSBhbGlzdCA9XG4gICAgbGV0IHNpemUgPVxuICAgICAgbWF0Y2ggc2l6ZSB3aXRoIFNvbWUgc2l6ZSAtPiBzaXplIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCBhbGlzdFxuICAgIGluXG4gICAgbGV0IHQgPSBjcmVhdGUgc2l6ZSBpblxuICAgIG1hdGNoIGFkZF9hbGlzdCB0IGFsaXN0IHdpdGggT2sgKCkgLT4gT2sgdCB8IEVycm9yIF8gYXMgZXJyb3IgLT4gZXJyb3JcblxuICBsZXQgb2ZfYWxpc3RfZXhuID9zaXplIGFsaXN0ID1cbiAgICBtYXRjaCBvZl9hbGlzdCA/c2l6ZSBhbGlzdCB3aXRoXG4gICAgfCBPayB0IC0+IHRcbiAgICB8IEVycm9yIF8gLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJIYXNodGJsLm9mX2FsaXN0X2V4blwiKVxuZW5kXG5cbm1vZHVsZSBJbl9jaGFubmVsID0gc3RydWN0XG4gIGxldCBjcmVhdGUgPyhiaW5hcnkgPSB0cnVlKSBmaWxlID1cbiAgICBsZXQgZmxhZ3MgPSBbIE9wZW5fcmRvbmx5IF0gaW5cbiAgICBsZXQgZmxhZ3MgPSBpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSA6OiBmbGFncyBlbHNlIGZsYWdzIGluXG4gICAgb3Blbl9pbl9nZW4gZmxhZ3MgMG8wMDAgZmlsZVxuXG4gIGxldCB3aXRoX2ZpbGUgP2JpbmFyeSBmaWxlbmFtZSB+ZiA9XG4gICAgbGV0IHQgPSBjcmVhdGUgP2JpbmFyeSBmaWxlbmFtZSBpblxuICAgIEV4bi5wcm90ZWN0eCB0IH5mIH5maW5hbGx5OmNsb3NlX2luXG5cbiAgbGV0IGlucHV0X2FsbCB0ID1cbiAgICBsZXQgcmVjIHJlYWRfYWxsX2ludG8gdCBidWYgPVxuICAgICAgbWF0Y2ggaW5wdXRfY2hhciB0IHdpdGhcbiAgICAgIHwgY2hhciAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgY2hhcjtcbiAgICAgICAgICByZWFkX2FsbF9pbnRvIHQgYnVmXG4gICAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiAoKVxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICByZWFkX2FsbF9pbnRvIHQgYnVmO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgcmVhZF9hbGwgZmlsZW5hbWUgPSB3aXRoX2ZpbGUgZmlsZW5hbWUgfmY6aW5wdXRfYWxsXG5lbmRcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgbWF4X2ludCA9IG1heF9pbnRcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9pbnRcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gaW50KVxuZW5kXG5cbm1vZHVsZSBFaXRoZXIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gTGVmdCBvZiAnYSB8IFJpZ2h0IG9mICdiXG5lbmRcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBMaXN0XG5cbiAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAoKiBzaGFkb3cgbm9uLXRhaWwtcmVjdXJzaXZlIGZ1bmN0aW9ucyAqKVxuICAgIGxldCBtZXJnZSA9IGBub3RfdGFpbF9yZWN1cnNpdmVcbiAgICBsZXQgcmVtb3ZlX2Fzc29jID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuICAgIGxldCByZW1vdmVfYXNzcSA9IGBub3RfdGFpbF9yZWN1cnNpdmVcblxuICAgIGxldCByZXZfbWFwaSBsaXN0IH5mID1cbiAgICAgIGxldCByZWMgcmV2X21hcGlfYXQgbGlzdCBpIH5mIH5hY2MgPVxuICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT4gcmV2X21hcGlfYXQgdGFpbCAoaSArIDEpIH5mIH5hY2M6KGYgaSBoZWFkIDo6IGFjYylcbiAgICAgIGluXG4gICAgICByZXZfbWFwaV9hdCBsaXN0IDAgfmYgfmFjYzpbXVxuXG4gICAgbGV0IGZvbGRfcmlnaHQyIGxpc3QxIGxpc3QyIH5pbml0IH5mID1cbiAgICAgIGZvbGRfbGVmdDIgKHJldiBsaXN0MSkgKHJldiBsaXN0MikgfmluaXQgfmY6KGZ1biBhY2MgeCB5IC0+IGYgeCB5IGFjYylcblxuICAgIGxldCBtYXAgbGlzdCB+ZiA9IHJldiAocmV2X21hcCBsaXN0IH5mKVxuICAgIGxldCBtYXBpIGxpc3QgfmYgPSByZXYgKHJldl9tYXBpIGxpc3QgfmYpXG5cbiAgICBsZXQgZm9sZF9yaWdodCBsaXN0IH5pbml0IH5mID1cbiAgICAgIGZvbGRfbGVmdCAoTGlzdC5yZXYgbGlzdCkgfmluaXQgfmY6KGZ1biBhY2MgeCAtPiBmIHggYWNjKVxuXG4gICAgbGV0IGFwcGVuZCB4IHkgPSByZXZfYXBwZW5kIChyZXYgeCkgeVxuICAgIGxldCBjb25jYXQgbGlzdCA9IGZvbGRfcmlnaHQgbGlzdCB+aW5pdDpbXSB+ZjphcHBlbmRcblxuICAgIGxldCByZXZfY29tYmluZSBsaXN0MSBsaXN0MiA9XG4gICAgICBmb2xkX2xlZnQyIGxpc3QxIGxpc3QyIH5pbml0OltdIH5mOihmdW4gYWNjIHggeSAtPiAoeCwgeSkgOjogYWNjKVxuXG4gICAgbGV0IGNvbWJpbmUgbGlzdDEgbGlzdDIgPSByZXYgKHJldl9jb21iaW5lIGxpc3QxIGxpc3QyKVxuXG4gICAgbGV0IHNwbGl0IGxpc3QgPVxuICAgICAgZm9sZF9yaWdodCBsaXN0IH5pbml0OihbXSwgW10pIH5mOihmdW4gKHgsIHkpICh4cywgeXMpIC0+XG4gICAgICAgICAgKHggOjogeHMsIHkgOjogeXMpKVxuXG4gICAgbGV0IG1hcDIgbGlzdDEgbGlzdDIgfmYgPVxuICAgICAgcmV2IChmb2xkX2xlZnQyIGxpc3QxIGxpc3QyIH5pbml0OltdIH5mOihmdW4gYWNjIHggeSAtPiBmIHggeSA6OiBhY2MpKVxuICBlbmRcblxuICBsZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICAgIGxldCByZWMgcGFydCBsZWZ0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gICAgICB8IHggOjogbCAtPiAoXG4gICAgICAgICAgbWF0Y2ggcCB4IHdpdGhcbiAgICAgICAgICB8IEVpdGhlci5MZWZ0IHYgLT4gcGFydCAodiA6OiBsZWZ0KSByaWdodCBsXG4gICAgICAgICAgfCBFaXRoZXIuUmlnaHQgdiAtPiBwYXJ0IGxlZnQgKHYgOjogcmlnaHQpIGwpXG4gICAgaW5cbiAgICBwYXJ0IFtdIFtdIGxcblxuICBsZXQgaW5pdCB+bGVuIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgfmxlbiB+cG9zIH5mIH5hY2MgPVxuICAgICAgaWYgcG9zID49IGxlbiB0aGVuIExpc3QucmV2IGFjY1xuICAgICAgZWxzZSBsb29wIH5sZW4gfnBvczoocG9zICsgMSkgfmYgfmFjYzooZiBwb3MgOjogYWNjKVxuICAgIGluXG4gICAgbG9vcCB+bGVuIH5wb3M6MCB+ZiB+YWNjOltdXG5cbiAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gW10gLT4gdHJ1ZSB8IF8gOjogXyAtPiBmYWxzZVxuXG4gIGxldCByZXZfZmlsdGVyX29wdCBsaXN0ID1cbiAgICBmb2xkX2xlZnQgbGlzdCB+aW5pdDpbXSB+ZjooZnVuIHRhaWwgb3B0aW9uIC0+XG4gICAgICAgIG1hdGNoIG9wdGlvbiB3aXRoIE5vbmUgLT4gdGFpbCB8IFNvbWUgaGVhZCAtPiBoZWFkIDo6IHRhaWwpXG5cbiAgbGV0IGZpbHRlcl9vcHQgbGlzdCA9IHJldiAocmV2X2ZpbHRlcl9vcHQgbGlzdClcbiAgbGV0IGZpbHRlcl9tYXAgbGlzdCB+ZiA9IHJldl9maWx0ZXJfb3B0IChyZXZfbWFwIGxpc3QgfmYpXG4gIGxldCBjb25jYXRfbWFwIGxpc3QgfmYgPSBjb25jYXQgKG1hcCBsaXN0IH5mKVxuXG4gIGxldCByZWMgZmluZF9tYXAgbGlzdCB+ZiA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBoZWFkIDo6IHRhaWwgLT4gKFxuICAgICAgICBtYXRjaCBmIGhlYWQgd2l0aCBTb21lIF8gYXMgc29tZSAtPiBzb21lIHwgTm9uZSAtPiBmaW5kX21hcCB0YWlsIH5mKVxuXG4gIGxldCBmaW5kX21hcF9leG4gbGlzdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXAgbGlzdCB+ZiB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcblxuICBsZXQgcmVjIGxhc3QgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgWyB4IF0gLT4gU29tZSB4XG4gICAgfCBfIDo6IChfIDo6IF8gYXMgcmVzdCkgLT4gbGFzdCByZXN0XG5cbiAgbGV0IHNwbGl0X3doaWxlIGxpc3QgfmYgPVxuICAgIGxldCByZWMgc3BsaXRfd2hpbGVfaW50byBsaXN0IH5mIH5hY2MgPVxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IGhlYWQgOjogdGFpbCB3aGVuIGYgaGVhZCAtPiBzcGxpdF93aGlsZV9pbnRvIHRhaWwgfmYgfmFjYzooaGVhZCA6OiBhY2MpXG4gICAgICB8IF8gOjogXyB8IFtdIC0+IChMaXN0LnJldiBhY2MsIGxpc3QpXG4gICAgaW5cbiAgICBzcGxpdF93aGlsZV9pbnRvIGxpc3QgfmYgfmFjYzpbXVxuXG4gIGxldCBmaW5kX2FfZHVwICh0eXBlIGVsdCkgbGlzdCB+Y29tcGFyZSA9XG4gICAgbGV0IG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGVsdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBlbmQgaW5cbiAgICBsZXQgbW9kdWxlIEVsdF9zZXQgPSBTZXQuTWFrZSAoRWx0KSBpblxuICAgIGxldCByZWMgZmluZF9hX2R1cF9pbiBsaXN0IH5zZXQgPVxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgaWYgRWx0X3NldC5tZW0gaGVhZCBzZXQgdGhlbiBTb21lIGhlYWRcbiAgICAgICAgICBlbHNlIGZpbmRfYV9kdXBfaW4gdGFpbCB+c2V0OihFbHRfc2V0LmFkZCBoZWFkIHNldClcbiAgICBpblxuICAgIGZpbmRfYV9kdXBfaW4gbGlzdCB+c2V0OkVsdF9zZXQuZW1wdHlcblxuICBsZXQgYXNzb2Nfb3B0IGtleSBhbGlzdCA9XG4gICAgbWF0Y2ggYXNzb2Mga2V5IGFsaXN0IHdpdGggeCAtPiBTb21lIHggfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICAoKiByZW9yZGVycyBhcmd1bWVudHMgdG8gaW1wcm92ZSB0eXBlIGluZmVyZW5jZSAqKVxuICBsZXQgaXRlciBsaXN0IH5mID0gaXRlciBsaXN0IH5mXG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgaXNfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gZmFsc2UgfCBTb21lIF8gLT4gdHJ1ZVxuICBsZXQgaXRlciB0IH5mID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gKCkgfCBTb21lIHggLT4gZiB4XG4gIGxldCBtYXAgdCB+ZiA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IGRlZmF1bHQgfCBTb21lIHggLT4geFxuICBsZXQgdG9fbGlzdCB0ID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gW10gfCBTb21lIHggLT4gWyB4IF1cbmVuZFxuXG5tb2R1bGUgUmVzdWx0ID0gc3RydWN0XG4gIGxldCBiaW5kIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBmIGEgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgbGV0IG1hcCB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gT2sgKGYgYSkgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgbGV0IG1hcF9lcnJvciB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gT2sgKGYgYSkgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBoYW5kbGVfZXJyb3IgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IGEgfCBFcnJvciBlIC0+IGYgZVxuZW5kXG5cbm1vZHVsZSBOb25FbXB0eUxpc3QgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgKiAnYSBsaXN0XG5cbiAgbGV0ICggQCApICh0MSwgcTEpICh0MiwgcTIpID0gKHQxLCBxMSBAICh0MiA6OiBxMikpXG4gIGxldCBoZCA9IGZzdFxuICBsZXQgdG9fbGlzdCAodCwgcSkgPSB0IDo6IHFcbiAgbGV0IG1hcCB+ZiAodCwgcSkgPSAoZiB0LCBMaXN0Lm1hcCB+ZiBxKVxuZW5kXG5cbm1vZHVsZSBPdXRfY2hhbm5lbCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID8oYmluYXJ5ID0gdHJ1ZSkgPyhhcHBlbmQgPSBmYWxzZSkgPyhmYWlsX2lmX2V4aXN0cyA9IGZhbHNlKVxuICAgICAgPyhwZXJtID0gMG82NjYpIGZpbGUgPVxuICAgIGxldCBmbGFncyA9IFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQgXSBpblxuICAgIGxldCBmbGFncyA9IChpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSBlbHNlIE9wZW5fdGV4dCkgOjogZmxhZ3MgaW5cbiAgICBsZXQgZmxhZ3MgPSAoaWYgYXBwZW5kIHRoZW4gT3Blbl9hcHBlbmQgZWxzZSBPcGVuX3RydW5jKSA6OiBmbGFncyBpblxuICAgIGxldCBmbGFncyA9IGlmIGZhaWxfaWZfZXhpc3RzIHRoZW4gT3Blbl9leGNsIDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgICBvcGVuX291dF9nZW4gZmxhZ3MgcGVybSBmaWxlXG5cbiAgbGV0IHdpdGhfZmlsZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUgfmYgPVxuICAgIGxldCB0ID0gY3JlYXRlID9iaW5hcnkgP2FwcGVuZCA/ZmFpbF9pZl9leGlzdHMgP3Blcm0gZmlsZSBpblxuICAgIEV4bi5wcm90ZWN0eCB0IH5mIH5maW5hbGx5OmNsb3NlX291dFxuXG4gIGxldCB3cml0ZV9hbGwgZmlsZW5hbWUgfmRhdGEgPVxuICAgIHdpdGhfZmlsZSBmaWxlbmFtZSB+ZjooZnVuIHQgLT4gb3V0cHV0X3N0cmluZyB0IGRhdGEpXG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBpc19lbXB0eSAodCA6IHQpID0gbGVuZ3RoIHQgPSAwXG4gIGxldCBwcmVmaXggdCBsZW4gPSBzdWIgdCB+cG9zOjAgfmxlblxuICBsZXQgc3VmZml4IHQgbGVuID0gc3ViIHQgfnBvczoobGVuZ3RoIHQgLSBsZW4pIH5sZW5cbiAgbGV0IGRyb3BfcHJlZml4IHQgbGVuID0gc3ViIHQgfnBvczpsZW4gfmxlbjoobGVuZ3RoIHQgLSBsZW4pXG4gIGxldCBkcm9wX3N1ZmZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6MCB+bGVuOihsZW5ndGggdCAtIGxlbilcblxuICBsZXQgaXNfcHJlZml4IHQgfnByZWZpeCA9XG4gICAgbGV0IHJlYyBpc19wcmVmaXhfZnJvbSB0IH5wcmVmaXggfnBvcyB+bGVuID1cbiAgICAgIHBvcyA+PSBsZW5cbiAgICAgIHx8IENoYXIuZXF1YWwgKGdldCB0IHBvcykgKGdldCBwcmVmaXggcG9zKVxuICAgICAgICAgJiYgaXNfcHJlZml4X2Zyb20gdCB+cHJlZml4IH5wb3M6KHBvcyArIDEpIH5sZW5cbiAgICBpblxuICAgIGxlbmd0aCB0ID49IGxlbmd0aCBwcmVmaXhcbiAgICAmJiBpc19wcmVmaXhfZnJvbSB0IH5wcmVmaXggfnBvczowIH5sZW46KGxlbmd0aCBwcmVmaXgpXG5cbiAgbGV0IGlzX3N1ZmZpeCB0IH5zdWZmaXggPVxuICAgIGxldCByZWMgaXNfc3VmZml4X3VwX3RvIHQgfnN1ZmZpeCB+cG9zIH5zdWZmaXhfb2Zmc2V0ID1cbiAgICAgIHBvcyA8IDBcbiAgICAgIHx8IENoYXIuZXF1YWwgKGdldCB0IChzdWZmaXhfb2Zmc2V0ICsgcG9zKSkgKGdldCBzdWZmaXggcG9zKVxuICAgICAgICAgJiYgaXNfc3VmZml4X3VwX3RvIHQgfnN1ZmZpeCB+cG9zOihwb3MgLSAxKSB+c3VmZml4X29mZnNldFxuICAgIGluXG4gICAgbGVuZ3RoIHQgPj0gbGVuZ3RoIHN1ZmZpeFxuICAgICYmIGlzX3N1ZmZpeF91cF90byB0IH5zdWZmaXhcbiAgICAgICAgIH5wb3M6KGxlbmd0aCBzdWZmaXggLSAxKVxuICAgICAgICAgfnN1ZmZpeF9vZmZzZXQ6KGxlbmd0aCB0IC0gbGVuZ3RoIHN1ZmZpeClcblxuICBsZXQgZXhpc3RzIHQgfmYgPVxuICAgIGxldCByZWMgZXhpc3RzX2F0IHQgfmYgfnBvcyB+bGVuID1cbiAgICAgIHBvcyA8IGxlbiAmJiAoZiAoZ2V0IHQgcG9zKSB8fCBleGlzdHNfYXQgdCB+ZiB+cG9zOihwb3MgKyAxKSB+bGVuKVxuICAgIGluXG4gICAgZXhpc3RzX2F0IHQgfmYgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuXG4gIGxldCBmb3JfYWxsIHQgfmYgPVxuICAgIGxldCByZWMgZm9yX2FsbF9hdCB0IH5mIH5wb3MgfmxlbiA9XG4gICAgICBwb3MgPj0gbGVuIHx8IChmIChnZXQgdCBwb3MpICYmIGZvcl9hbGxfYXQgdCB+ZiB+cG9zOihwb3MgKyAxKSB+bGVuKVxuICAgIGluXG4gICAgZm9yX2FsbF9hdCB0IH5mIH5wb3M6MCB+bGVuOihsZW5ndGggdClcblxuICBsZXQgaW5kZXhfb3B0IHQgY2hhciA9XG4gICAgbWF0Y2ggaW5kZXggdCBjaGFyIHdpdGggaSAtPiBTb21lIGkgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgcmluZGV4X29wdCB0IGNoYXIgPVxuICAgIG1hdGNoIHJpbmRleCB0IGNoYXIgd2l0aCBpIC0+IFNvbWUgaSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCBpbmRleF9mcm9tX29wdCB0IGNoYXIgcG9zID1cbiAgICBtYXRjaCBpbmRleF9mcm9tIHQgY2hhciBwb3Mgd2l0aCBpIC0+IFNvbWUgaSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCByaW5kZXhfZnJvbV9vcHQgdCBjaGFyIHBvcyA9XG4gICAgbWF0Y2ggcmluZGV4X2Zyb20gdCBjaGFyIHBvcyB3aXRoXG4gICAgfCBpIC0+IFNvbWUgaVxuICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IGxzcGxpdDIgdCB+b24gPVxuICAgIG1hdGNoIGluZGV4X29wdCB0IG9uIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBpIC0+XG4gICAgICAgIFNvbWUgKHN1YiB0IH5wb3M6MCB+bGVuOmksIHN1YiB0IH5wb3M6KGkgKyAxKSB+bGVuOihsZW5ndGggdCAtIGkgLSAxKSlcblxuICBsZXQgY2FwaXRhbGl6ZV9hc2NpaSA9IFN0ZGxpYi5TdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaVxuICBsZXQgbG93ZXJjYXNlX2FzY2lpID0gU3RkbGliLlN0cmluZy5sb3dlcmNhc2VfYXNjaWlcbiAgbGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSA9IFN0ZGxpYi5TdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpXG4gIGxldCBzcGxpdF9vbl9jaGFyIHQgfnNlcCA9IFN0ZGxpYi5TdHJpbmcuc3BsaXRfb25fY2hhciBzZXAgdFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBzdHJpbmcpXG5cbiAgbW9kdWxlIE1hcCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFwLk1ha2UgKFN0cmluZylcblxuICAgIGxldCBmaW5kX29wdCBrZXkgdCA9XG4gICAgICBtYXRjaCBmaW5kIGtleSB0IHdpdGggeCAtPiBTb21lIHggfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcbiAgZW5kXG5cbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlIChTdHJpbmcpXG5lbmRcblxubGV0ICggQCApID0gTGlzdC5hcHBlbmRcbmxldCBvdXRwdXQgb2MgYnl0ZXMgfnBvcyB+bGVuID0gb3V0cHV0IG9jIGJ5dGVzIHBvcyBsZW5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIG9jIHN0cmluZyB+cG9zIH5sZW4gPSBvdXRwdXRfc3Vic3RyaW5nIG9jIHN0cmluZyBwb3MgbGVuXG4iLCJvcGVuIEltcG9ydFxubW9kdWxlIEwgPSBBc3RsaWIuTG9jYXRpb25cblxudHlwZSB0ID0gbG9jYXRpb24gPSB7XG4gIGxvY19zdGFydCA6IExleGluZy5wb3NpdGlvbjtcbiAgbG9jX2VuZCA6IExleGluZy5wb3NpdGlvbjtcbiAgbG9jX2dob3N0IDogYm9vbDtcbn1cblxubGV0IGluX2ZpbGUgbmFtZSA9XG4gIGxldCBsb2MgPSB7IHBvc19mbmFtZSA9IG5hbWU7IHBvc19sbnVtID0gMTsgcG9zX2JvbCA9IDA7IHBvc19jbnVtID0gLTEgfSBpblxuICB7IGxvY19zdGFydCA9IGxvYzsgbG9jX2VuZCA9IGxvYzsgbG9jX2dob3N0ID0gdHJ1ZSB9XG5cbmxldCBzZXRfZmlsZW5hbWUgbG9jIGZuID1cbiAgbGV0IGxvY19zdGFydCA9IHsgbG9jLmxvY19zdGFydCB3aXRoIHBvc19mbmFtZSA9IGZuIH0gaW5cbiAgbGV0IGxvY19lbmQgPSB7IGxvYy5sb2NfZW5kIHdpdGggcG9zX2ZuYW1lID0gZm4gfSBpblxuICB7IGxvYyB3aXRoIGxvY19zdGFydDsgbG9jX2VuZCB9XG5cbmxldCBub25lID0gaW5fZmlsZSBcIl9ub25lX1wiXG5cbmxldCBpbml0IGxleGJ1ZiBmbmFtZSA9XG4gIGxldCBvcGVuIExleGluZyBpblxuICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgIHsgcG9zX2ZuYW1lID0gZm5hbWU7IHBvc19sbnVtID0gMTsgcG9zX2JvbCA9IDA7IHBvc19jbnVtID0gMCB9XG5cbmxldCByYWlzZV9lcnJvcmYgP2xvYyBmbXQgPSBMLnJhaXNlX2Vycm9yZiA/bG9jIGZtdFxubGV0IHJlcG9ydF9leGNlcHRpb24gPSBMLnJlcG9ydF9leGNlcHRpb25cblxubGV0IG9mX2xleGJ1ZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICB7XG4gICAgbG9jX3N0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wO1xuICAgIGxvY19lbmQgPSBsZXhidWYubGV4X2N1cnJfcDtcbiAgICBsb2NfZ2hvc3QgPSBmYWxzZTtcbiAgfVxuXG5sZXQgcHJpbnQgcHBmIHQgPVxuICBTdGRsaWIuRm9ybWF0LmZwcmludGYgcHBmIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOlwiXG4gICAgdC5sb2Nfc3RhcnQucG9zX2ZuYW1lIHQubG9jX3N0YXJ0LnBvc19sbnVtXG4gICAgKHQubG9jX3N0YXJ0LnBvc19jbnVtIC0gdC5sb2Nfc3RhcnQucG9zX2JvbClcbiAgICAodC5sb2NfZW5kLnBvc19jbnVtIC0gdC5sb2Nfc3RhcnQucG9zX2JvbClcblxudHlwZSBub25yZWMgJ2EgbG9jID0gJ2EgbG9jID0geyB0eHQgOiAnYTsgbG9jIDogdCB9XG5cbmxldCBjb21wYXJlX3BvcyBwMSBwMiA9XG4gIGxldCBvcGVuIExleGluZyBpblxuICBsZXQgY29sdW1uIHAgPVxuICAgICgqIE1hbnVhbCBleHRyYWN0OlxuICAgICAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gcG9zX2NudW0gYW5kIHBvc19ib2wgaXMgdGhlIGNoYXJhY3RlciBvZmZzZXRcbiAgICAgICB3aXRoaW4gdGhlIGxpbmUgKGkuZS4gdGhlIGNvbHVtbiBudW1iZXIsIGFzc3VtaW5nIGVhY2ggY2hhcmFjdGVyIGlzXG4gICAgICAgb25lIGNvbHVtbiB3aWRlKS4gKilcbiAgICBwLnBvc19jbnVtIC0gcC5wb3NfYm9sXG4gIGluXG4gIG1hdGNoIEludC5jb21wYXJlIHAxLnBvc19sbnVtIHAyLnBvc19sbnVtIHdpdGhcbiAgfCAwIC0+IEludC5jb21wYXJlIChjb2x1bW4gcDEpIChjb2x1bW4gcDIpXG4gIHwgbiAtPiBuXG5cbmxldCBtaW5fcG9zIHAxIHAyID0gaWYgY29tcGFyZV9wb3MgcDEgcDIgPD0gMCB0aGVuIHAxIGVsc2UgcDJcbmxldCBtYXhfcG9zIHAxIHAyID0gaWYgY29tcGFyZV9wb3MgcDEgcDIgPj0gMCB0aGVuIHAxIGVsc2UgcDJcblxubGV0IGNvbXBhcmUgbG9jMSBsb2MyID1cbiAgbWF0Y2ggY29tcGFyZV9wb3MgbG9jMS5sb2Nfc3RhcnQgbG9jMi5sb2Nfc3RhcnQgd2l0aFxuICB8IDAgLT4gY29tcGFyZV9wb3MgbG9jMS5sb2NfZW5kIGxvYzIubG9jX2VuZFxuICB8IG4gLT4gblxuXG5tb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcHhsaWJfYXN0LkxvY2F0aW9uX2Vycm9yXG5cbiAgbGV0IGNyZWF0ZWYgfmxvYyBmbXQgPSBGb3JtYXQua2FzcHJpbnRmIChmdW4gc3RyIC0+IG1ha2UgfmxvYyB+c3ViOltdIHN0cikgZm10XG5lbmRcblxubGV0IGVycm9yX2V4dGVuc2lvbmYgfmxvYyBmbXQgPVxuICBGb3JtYXQua2FzcHJpbnRmXG4gICAgKGZ1biBzdHIgLT4gRXJyb3IudG9fZXh0ZW5zaW9uIEBAIEVycm9yLm1ha2UgfmxvYyB+c3ViOltdIHN0cilcbiAgICBmbXRcblxuZXhjZXB0aW9uIEVycm9yID0gTC5FcnJvclxuXG5sZXQgKCkgPVxuICBTdGRsaWIuUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuY3Rpb25cbiAgICB8IEVycm9yIGUgLT4gU29tZSAoRXJyb3IubWVzc2FnZSBlKVxuICAgIHwgXyAtPiBOb25lKVxuIiwib3BlbiEgSW1wb3J0XG5cbmV4Y2VwdGlvbiBFeHBlY3RlZCBvZiBMb2NhdGlvbi50ICogc3RyaW5nXG5cbmxldCBmYWlsIGxvYyBleHBlY3RlZCA9IHJhaXNlIChFeHBlY3RlZCAobG9jLCBleHBlY3RlZCkpXG5cbnR5cGUgY29udGV4dCA9IHtcbiAgKCogW21hdGNoZWRdIGNvdW50cyBob3cgbWFueSBjb25zdHJ1Y3RvcnMgaGF2ZSBiZWVuIG1hdGNoZWQuIFRoaXMgaXMgdXNlZCB0byBmaW5kIHdoYXRcbiAgICAgcGF0dGVybiBtYXRjaGVzIHRoZSBtb3N0IHNvbWUgcGllY2Ugb2YgYXN0IGluIFtBc3RfcGF0dGVybi5hbHRdLiBJbiB0aGUgY2FzZSB3aGVyZVxuICAgICBhbGwgYnJhbmNoZXMgZmFpbCB0byBtYXRjaCwgd2UgcmVwb3J0IHRoZSBlcnJvciBmcm9tIHRoZSBvbmUgdGhhdCBtYXRjaGVzIHRoZVxuICAgICBtb3N0LlxuXG4gICAgIFRoaXMgaXMgb25seSBpbmNyZW1lbnRlZCBieSBjb21iaW5hdG9ycyB0aGF0IGNhbiBmYWlsLiAqKVxuICBtdXRhYmxlIG1hdGNoZWQgOiBpbnQ7XG59XG5cbnR5cGUgKCdtYXRjaGVkX3ZhbHVlLCAnaywgJ2tfcmVzdWx0KSB0ID1cbiAgfCBUIG9mIChjb250ZXh0IC0+IExvY2F0aW9uLnQgLT4gJ21hdGNoZWRfdmFsdWUgLT4gJ2sgLT4gJ2tfcmVzdWx0KVxuIiwib3BlbiBJbXBvcnRcbm1vZHVsZSBNID1cbiAgc3RydWN0XG4gICAgbGV0IGF0dHJpYnV0ZSB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5wYXlsb2FkIC0+XG4gICAgICAgICAgICAgIHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgYXR0cl9sb2MgPSBsb2MgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGJpbmRpbmdfb3AgfmxvYyAgPVxuICAgICAgKChmdW4gfm9wIC0+XG4gICAgICAgICAgKChmdW4gfnBhdCAtPlxuICAgICAgICAgICAgICAoKGZ1biB+ZXhwIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBib3Bfb3AgPSBvcDtcbiAgICAgICAgICAgICAgICAgICAgcGJvcF9wYXQgPSBwYXQ7XG4gICAgICAgICAgICAgICAgICAgIHBib3BfZXhwID0gZXhwO1xuICAgICAgICAgICAgICAgICAgICBwYm9wX2xvYyA9IGxvY1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY2FzZSB+bGhzICA9XG4gICAgICAoKGZ1biB+Z3VhcmQgLT5cbiAgICAgICAgICAoKGZ1biB+cmhzIC0+IHsgcGNfbGhzID0gbGhzOyBwY19ndWFyZCA9IGd1YXJkOyBwY19yaHMgPSByaHMgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2NvbnN0ciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX3N0cnVjdHVyZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX3N0cnVjdHVyZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2Z1biB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9hcHBseSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfbGV0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9jb25zdHJhaW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX29wZW4gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfaW5oZXJpdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBjZl9kZXNjID0gKFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX3ZhbCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX3ZhbCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9tZXRob2QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9tZXRob2QgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfY29uc3RyYWludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY2ZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGNmX2Rlc2MgPSAoUGNmX2NvbnN0cmFpbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9pbml0aWFsaXplciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY2ZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGNmX2Rlc2MgPSAoUGNmX2luaXRpYWxpemVyIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfYXR0cmlidXRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfYXR0cmlidXRlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjbGFzc19pbmZvcyB+bG9jICA9XG4gICAgICAoKGZ1biB+dmlydCAtPlxuICAgICAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX3ZpcnQgPSB2aXJ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9leHByID0gZXhwcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZiAgPVxuICAgICAgKChmdW4gfmZpZWxkcyAtPiB7IHBjc2lnX3NlbGYgPSBzZWxmOyBwY3NpZ19maWVsZHMgPSBmaWVsZHMgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjbGFzc19zdHJ1Y3R1cmUgfnNlbGYgID1cbiAgICAgICgoZnVuIH5maWVsZHMgLT4geyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9jb25zdHIgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X3NpZ25hdHVyZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9zaWduYXR1cmUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfYXJyb3cgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X29wZW4gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9pbmhlcml0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3RmX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2luaGVyaXQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdGZfdmFsIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX3ZhbCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdGZfbWV0aG9kIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3RmX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX21ldGhvZCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9jb25zdHJhaW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3RmX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2NvbnN0cmFpbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdGZfYXR0cmlidXRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3RmX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2F0dHJpYnV0ZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH52YXJzIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5hcmdzIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB+cmVzIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfYW55IH5sb2MgID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSBQdHlwX2FueVxuICAgICAgfVxuICAgIGxldCBwdHlwX3ZhciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdmFyIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2Fycm93IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfdHVwbGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3R1cGxlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2NvbnN0ciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9vYmplY3QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9vYmplY3QgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfY2xhc3MgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jbGFzcyAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9hbGlhcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2FsaWFzICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX3ZhcmlhbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX3BvbHkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX3BhY2thZ2UgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BhY2thZ2UgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBkaXJfc3RyaW5nIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfc3RyaW5nIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGRpcl9pbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPiB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2ludCAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGRpcl9pZGVudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2lkZW50IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGRpcl9ib29sIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfYm9vbCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfaWRlbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lkZW50IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvbnN0YW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdGFudCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sZXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZnVuY3Rpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1bmN0aW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2Z1biB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9hcHBseSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX21hdGNoIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbWF0Y2ggKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdHJ5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHJ5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3R1cGxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90dXBsZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9jb25zdHJ1Y3QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdmFyaWFudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcmVjb3JkIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2ZpZWxkIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZmllbGQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfc2V0ZmllbGQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9hcnJheSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXJyYXkgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfaWZ0aGVuZWxzZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfc2VxdWVuY2UgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF93aGlsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3doaWxlICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2ZvciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHg0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvZXJjZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29lcmNlICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZW5kIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VuZCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9uZXcgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ldyB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZXRpbnN0dmFyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9vdmVycmlkZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3ZlcnJpZGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbGV0bW9kdWxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xldGV4Y2VwdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9hc3NlcnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Fzc2VydCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sYXp5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sYXp5IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3BvbHkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX29iamVjdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb2JqZWN0IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX25ld3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXd0eXBlICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3BhY2sgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BhY2sgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbGV0b3AgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG9wIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3VucmVhY2hhYmxlIH5sb2MgID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX3VucmVhY2hhYmxlXG4gICAgICB9XG4gICAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5raW5kIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBleHRfa2luZCA9IGtpbmQ7XG4gICAgICAgICAgICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGluY2x1ZGVfaW5mb3MgfmxvYyAgPVxuICAgICAgKChmdW4gbW9kXyAtPlxuICAgICAgICAgIHsgcGluY2xfbW9kID0gbW9kXzsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfm11dGFibGVfIC0+XG4gICAgICAgICAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHBsZF9tdXRhYmxlID0gbXV0YWJsZV87XG4gICAgICAgICAgICAgICAgICAgIHBsZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgICAgIHBsZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBsZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGxldG9wIH5sZXRfICA9XG4gICAgICAoKGZ1biB+YW5kcyAtPiAoKGZ1biB+Ym9keSAtPiB7IGxldF87IGFuZHM7IGJvZHkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbG9jYXRpb24gfnN0YXJ0ICA9XG4gICAgICAoKGZ1biB+ZW5kXyAtPlxuICAgICAgICAgICgoZnVuIH5naG9zdCAtPlxuICAgICAgICAgICAgICB7IGxvY19zdGFydCA9IHN0YXJ0OyBsb2NfZW5kID0gZW5kXzsgbG9jX2dob3N0ID0gZ2hvc3QgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX2JpbmRpbmcgfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1iX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBtYl9leHByID0gZXhwcjtcbiAgICAgICAgICAgICAgICBwbWJfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtYl9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG1vZHVsZV9kZWNsYXJhdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1kX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBtZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgcG1kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbWRfbG9jID0gbG9jXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2lkZW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2lkZW50IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX3N0cnVjdHVyZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9zdHJ1Y3R1cmUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfZnVuY3RvciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9mdW5jdG9yICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2FwcGx5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF91bnBhY2sgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfdW5wYWNrIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+bWFuaWZlc3QgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtc19uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwbXNfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtc19sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfaWRlbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfaWRlbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfc2lnbmF0dXJlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X3NpZ25hdHVyZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9mdW5jdG9yIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfd2l0aCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV93aXRoICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X3R5cGVvZiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV90eXBlb2YgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9hbGlhcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9hbGlhcyB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtdGRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcG10ZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgcG10ZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG10ZF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG90YWcgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9mX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwb2ZfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBvZl9kZXNjID0gKE90YWcgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG9pbmhlcml0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPaW5oZXJpdCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG9wZW5faW5mb3MgfmxvYyAgPVxuICAgICAgKChmdW4gfmV4cHIgLT5cbiAgICAgICAgICAoKGZ1biB+b3ZlcnJpZGUgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvcGVuX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICAgICAgICAgICAgcG9wZW5fbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9hbnkgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfYW55XG4gICAgICB9XG4gICAgbGV0IHBwYXRfdmFyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXIgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfYWxpYXMgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9jb25zdGFudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RhbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfaW50ZXJ2YWwgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF90dXBsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHVwbGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfY29uc3RydWN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3ZhcmlhbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3JlY29yZCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3JlY29yZCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9hcnJheSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYXJyYXkgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfb3IgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9vciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9jb25zdHJhaW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF90eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90eXBlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2xhenkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2xhenkgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfdW5wYWNrIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF91bnBhY2sgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfZXhjZXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leGNlcHRpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBvc2l0aW9uIH5mbmFtZSAgPVxuICAgICAgKChmdW4gfmxudW0gLT5cbiAgICAgICAgICAoKGZ1biB+Ym9sIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5jbnVtIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBvc19mbmFtZSA9IGZuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwb3NfbG51bSA9IGxudW07XG4gICAgICAgICAgICAgICAgICAgIHBvc19ib2wgPSBib2w7XG4gICAgICAgICAgICAgICAgICAgIHBvc19jbnVtID0gY251bVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBydGFnIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHJmX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcHJmX2Rlc2MgPSAoUnRhZyAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHJpbmhlcml0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwcmZfYXR0cmlidXRlcyA9IFtdOyBwcmZfbG9jID0gbG9jOyBwcmZfZGVzYyA9IChSaW5oZXJpdCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdmFsdWUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdmFsdWUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX3R5cGVzdWJzdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlc3Vic3QgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX3R5cGV4dCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBleHQgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX2V4Y2VwdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leGNlcHRpb24geDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX21vZHVsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R1bGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX21vZHN1YnN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHN1YnN0IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19yZWNtb2R1bGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfcmVjbW9kdWxlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19tb2R0eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX21vZHR5cGVzdWJzdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlc3Vic3QgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX29wZW4gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfb3BlbiB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfaW5jbHVkZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19pbmNsdWRlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19jbGFzcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzcyB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfY2xhc3NfdHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzc190eXBlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19hdHRyaWJ1dGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfYXR0cmlidXRlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leHRlbnNpb24gKHgwLCB4MSkpIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfZXZhbCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V2YWwgKHgwLCB4MSkpIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfdmFsdWUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl92YWx1ZSAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9wcmltaXRpdmUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcHJpbWl0aXZlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl90eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdHlwZSAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl90eXBleHQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdHlwZXh0IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9leGNlcHRpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXhjZXB0aW9uIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9tb2R1bGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdWxlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9yZWNtb2R1bGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcmVjbW9kdWxlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9tb2R0eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHR5cGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX29wZW4gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfb3BlbiB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfY2xhc3MgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3MgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2NsYXNzX3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3NfdHlwZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfaW5jbHVkZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9pbmNsdWRlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9hdHRyaWJ1dGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfYXR0cmlidXRlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leHRlbnNpb24gKHgwLCB4MSkpIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHRvcGxldmVsX2RpcmVjdGl2ZSB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5hcmcgLT4geyBwZGlyX25hbWUgPSBuYW1lOyBwZGlyX2FyZyA9IGFyZzsgcGRpcl9sb2MgPSBsb2MgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHR5cGVfZGVjbGFyYXRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+cGFyYW1zIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5jc3RycyAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4gfmtpbmQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB+cHJpdmF0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gfm1hbmlmZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2tpbmQgPSBraW5kO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbG9jID0gbG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB0eXBlX2V4Y2VwdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biBjb25zdHJ1Y3RvciAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICAgICAgICAgICAgcHR5ZXhuX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdHlwZV9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfnBhdGggLT5cbiAgICAgICAgICAoKGZ1biB+cGFyYW1zIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5jb25zdHJ1Y3RvcnMgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9wYXRoID0gcGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHZhbHVlX2JpbmRpbmcgfmxvYyAgPVxuICAgICAgKChmdW4gfnBhdCAtPlxuICAgICAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdmJfcGF0ID0gcGF0O1xuICAgICAgICAgICAgICAgIHB2Yl9leHByID0gZXhwcjtcbiAgICAgICAgICAgICAgICBwdmJfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB2Yl9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5wcmltIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHB2YWxfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHB2YWxfdHlwZSA9IHR5cGVfO1xuICAgICAgICAgICAgICAgICAgICBwdmFsX3ByaW0gPSBwcmltO1xuICAgICAgICAgICAgICAgICAgICBwdmFsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHZhbF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gIGVuZFxubW9kdWxlIE1ha2UoTG9jOnNpZyB2YWwgbG9jIDogTG9jYXRpb24udCBlbmQpID1cbiAgc3RydWN0XG4gICAgbGV0IGxvYyA9IExvYy5sb2NcbiAgICBsZXQgYXR0cmlidXRlIH5uYW1lICA9XG4gICAgICAoKGZ1biB+cGF5bG9hZCAtPlxuICAgICAgICAgIHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgYXR0cl9sb2MgPSBsb2MgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBiaW5kaW5nX29wIH5vcCAgPVxuICAgICAgKChmdW4gfnBhdCAtPlxuICAgICAgICAgICgoZnVuIH5leHAgLT5cbiAgICAgICAgICAgICAgeyBwYm9wX29wID0gb3A7IHBib3BfcGF0ID0gcGF0OyBwYm9wX2V4cCA9IGV4cDsgcGJvcF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY2FzZSB+bGhzICA9XG4gICAgICAoKGZ1biB+Z3VhcmQgLT5cbiAgICAgICAgICAoKGZ1biB+cmhzIC0+IHsgcGNfbGhzID0gbGhzOyBwY19ndWFyZCA9IGd1YXJkOyBwY19yaHMgPSByaHMgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2NvbnN0ciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX3N0cnVjdHVyZSB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9zdHJ1Y3R1cmUgeDApIH1cbiAgICBsZXQgcGNsX2Z1biB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgzIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2FwcGx5IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9sZXQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9sZXQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfY29uc3RyYWludCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9leHRlbnNpb24geDAgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfZXh0ZW5zaW9uIHgwKSB9XG4gICAgbGV0IHBjbF9vcGVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX2luaGVyaXQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY2ZfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjZl9kZXNjID0gKFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX3ZhbCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl92YWwgeDApIH1cbiAgICBsZXQgcGNmX21ldGhvZCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGNmX2NvbnN0cmFpbnQgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfY29uc3RyYWludCB4MCkgfVxuICAgIGxldCBwY2ZfaW5pdGlhbGl6ZXIgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfaW5pdGlhbGl6ZXIgeDApIH1cbiAgICBsZXQgcGNmX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcGNmX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9leHRlbnNpb24geDApIH1cbiAgICBsZXQgY2xhc3NfaW5mb3MgfnZpcnQgID1cbiAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICAgICAgICAgICAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgIHBjaV9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgICAgICBwY2lfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZiAgPVxuICAgICAgKChmdW4gfmZpZWxkcyAtPiB7IHBjc2lnX3NlbGYgPSBzZWxmOyBwY3NpZ19maWVsZHMgPSBmaWVsZHMgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjbGFzc19zdHJ1Y3R1cmUgfnNlbGYgID1cbiAgICAgICgoZnVuIH5maWVsZHMgLT4geyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9jb25zdHIgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X3NpZ25hdHVyZSB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X2Fycm93IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9leHRlbnNpb24geDAgPVxuICAgICAgeyBwY3R5X2F0dHJpYnV0ZXMgPSBbXTsgcGN0eV9sb2MgPSBsb2M7IHBjdHlfZGVzYyA9IChQY3R5X2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9vcGVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdGZfaW5oZXJpdCB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfaW5oZXJpdCB4MCkgfVxuICAgIGxldCBwY3RmX3ZhbCB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfdmFsIHgwKSB9XG4gICAgbGV0IHBjdGZfbWV0aG9kIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGN0Zl9jb25zdHJhaW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICBwY3RmX2Rlc2MgPSAoUGN0Zl9jb25zdHJhaW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfYXR0cmlidXRlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfnZhcnMgLT5cbiAgICAgICAgICAoKGZ1biB+YXJncyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+cmVzIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgICAgICAgICAgICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICAgICAgICAgICAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICAgICAgICAgICAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9hbnkgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfYW55XG4gICAgICB9XG4gICAgbGV0IHB0eXBfdmFyIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXIgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYXJyb3cgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfdHVwbGUgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2NvbnN0ciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX29iamVjdCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfb2JqZWN0ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2NsYXNzIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jbGFzcyAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9hbGlhcyB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYWxpYXMgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfdmFyaWFudCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX3BvbHkgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BvbHkgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfcGFja2FnZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcGFja2FnZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9leHRlbnNpb24geDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGRpcl9zdHJpbmcgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX3N0cmluZyB4MCkgfVxuICAgIGxldCBwZGlyX2ludCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPiB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2ludCAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBkaXJfaWRlbnQgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2lkZW50IHgwKSB9XG4gICAgbGV0IHBkaXJfYm9vbCB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfYm9vbCB4MCkgfVxuICAgIGxldCBwZXhwX2lkZW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZGVudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdGFudCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9mdW5jdGlvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuY3Rpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZnVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgKChmdW4geDMgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9hcHBseSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbWF0Y2ggeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX21hdGNoICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3RyeSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHJ5ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdHJ1Y3QgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF92YXJpYW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3JlY29yZCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2ZpZWxkIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9maWVsZCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZXRmaWVsZCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9hcnJheSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXJyYXkgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfaWZ0aGVuZWxzZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NlcXVlbmNlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF93aGlsZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfd2hpbGUgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZm9yIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgKChmdW4geDMgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIHg0IC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkpXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9jb25zdHJhaW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvZXJjZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfc2VuZCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VuZCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9uZXcgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ldyB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXRpbnN0dmFyIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX292ZXJyaWRlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vdmVycmlkZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRtb2R1bGUgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xldGV4Y2VwdGlvbiB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2Fzc2VydCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXNzZXJ0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xhenkgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfcG9seSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcG9seSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9vYmplY3QgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29iamVjdCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9uZXd0eXBlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXd0eXBlICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3BhY2sgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfb3BlbiB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sZXRvcCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0b3AgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfdW5yZWFjaGFibGUgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdW5yZWFjaGFibGVcbiAgICAgIH1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIH5uYW1lICA9XG4gICAgICAoKGZ1biB+a2luZCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgaW5jbHVkZV9pbmZvcyBtb2RfID1cbiAgICAgIHsgcGluY2xfbW9kID0gbW9kXzsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfVxuICAgIGxldCBsYWJlbF9kZWNsYXJhdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfm11dGFibGVfIC0+XG4gICAgICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcGxkX211dGFibGUgPSBtdXRhYmxlXztcbiAgICAgICAgICAgICAgICBwbGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICAgICAgICAgIHBsZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGxkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBsZXRvcCB+bGV0XyAgPVxuICAgICAgKChmdW4gfmFuZHMgLT4gKChmdW4gfmJvZHkgLT4geyBsZXRfOyBhbmRzOyBib2R5IH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGxvY2F0aW9uIH5zdGFydCAgPVxuICAgICAgKChmdW4gfmVuZF8gLT5cbiAgICAgICAgICAoKGZ1biB+Z2hvc3QgLT5cbiAgICAgICAgICAgICAgeyBsb2Nfc3RhcnQgPSBzdGFydDsgbG9jX2VuZCA9IGVuZF87IGxvY19naG9zdCA9IGdob3N0IH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG1vZHVsZV9iaW5kaW5nIH5uYW1lICA9XG4gICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtYl9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIHBtYl9leHByID0gZXhwcjtcbiAgICAgICAgICAgIHBtYl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbWJfbG9jID0gbG9jXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBtb2R1bGVfZGVjbGFyYXRpb24gfm5hbWUgID1cbiAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIHBtZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICBwbWRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1kX2xvYyA9IGxvY1xuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9pZGVudCB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfaWRlbnQgeDApIH1cbiAgICBsZXQgcG1vZF9zdHJ1Y3R1cmUgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX3N0cnVjdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9mdW5jdG9yIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfYXBwbHkgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfY29uc3RyYWludCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX3VucGFjayB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfdW5wYWNrIHgwKSB9XG4gICAgbGV0IHBtb2RfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfm5hbWUgID1cbiAgICAgICgoZnVuIH5tYW5pZmVzdCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtc19uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIHBtc19tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtc19sb2MgPSBsb2NcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfaWRlbnQgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2lkZW50IHgwKSB9XG4gICAgbGV0IHBtdHlfc2lnbmF0dXJlIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9zaWduYXR1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBtdHlfZnVuY3RvciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV9mdW5jdG9yICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X3dpdGggeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfd2l0aCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV90eXBlb2YgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3R5cGVvZiB4MCkgfVxuICAgIGxldCBwbXR5X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2FsaWFzIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9hbGlhcyB4MCkgfVxuICAgIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIHBtdGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICAgICAgcG10ZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXRkX2xvYyA9IGxvY1xuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb3RhZyB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHsgcG9mX2F0dHJpYnV0ZXMgPSBbXTsgcG9mX2xvYyA9IGxvYzsgcG9mX2Rlc2MgPSAoT3RhZyAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG9pbmhlcml0IHgwID1cbiAgICAgIHsgcG9mX2F0dHJpYnV0ZXMgPSBbXTsgcG9mX2xvYyA9IGxvYzsgcG9mX2Rlc2MgPSAoT2luaGVyaXQgeDApIH1cbiAgICBsZXQgb3Blbl9pbmZvcyB+ZXhwciAgPVxuICAgICAgKChmdW4gfm92ZXJyaWRlIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG9wZW5fZXhwciA9IGV4cHI7XG4gICAgICAgICAgICBwb3Blbl9vdmVycmlkZSA9IG92ZXJyaWRlO1xuICAgICAgICAgICAgcG9wZW5fbG9jID0gbG9jO1xuICAgICAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2FueSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gUHBhdF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXIgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9hbGlhcyB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYWxpYXMgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfY29uc3RhbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0YW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2ludGVydmFsIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF90dXBsZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RydWN0IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfdmFyaWFudCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyaWFudCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9yZWNvcmQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3JlY29yZCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9hcnJheSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYXJyYXkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3IgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29yICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2NvbnN0cmFpbnQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfdHlwZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHlwZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9sYXp5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9sYXp5IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3VucGFjayB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdW5wYWNrIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfZXhjZXB0aW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X29wZW4geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBvc2l0aW9uIH5mbmFtZSAgPVxuICAgICAgKChmdW4gfmxudW0gLT5cbiAgICAgICAgICAoKGZ1biB+Ym9sIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5jbnVtIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBvc19mbmFtZSA9IGZuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwb3NfbG51bSA9IGxudW07XG4gICAgICAgICAgICAgICAgICAgIHBvc19ib2wgPSBib2w7XG4gICAgICAgICAgICAgICAgICAgIHBvc19jbnVtID0gY251bVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBydGFnIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHJmX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcmZfZGVzYyA9IChSdGFnICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcmluaGVyaXQgeDAgPVxuICAgICAgeyBwcmZfYXR0cmlidXRlcyA9IFtdOyBwcmZfbG9jID0gbG9jOyBwcmZfZGVzYyA9IChSaW5oZXJpdCB4MCkgfVxuICAgIGxldCBwc2lnX3ZhbHVlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdmFsdWUgeDApIH1cbiAgICBsZXQgcHNpZ190eXBlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGUgKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX3R5cGVzdWJzdCB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ190eXBleHQgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBleHQgeDApIH1cbiAgICBsZXQgcHNpZ19leGNlcHRpb24geDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdWxlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kc3Vic3QgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2RzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3JlY21vZHVsZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19yZWNtb2R1bGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2R0eXBlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGVzdWJzdCB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ19vcGVuIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfb3BlbiB4MCkgfVxuICAgIGxldCBwc2lnX2luY2x1ZGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19pbmNsdWRlIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3MgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzcyB4MCkgfVxuICAgIGxldCBwc2lnX2NsYXNzX3R5cGUgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHNpZ19leHRlbnNpb24geDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9ldmFsIHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V2YWwgKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3ZhbHVlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3ZhbHVlICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9wcmltaXRpdmUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcHJpbWl0aXZlIHgwKSB9XG4gICAgbGV0IHBzdHJfdHlwZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBlICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl90eXBleHQgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBleHQgeDApIH1cbiAgICBsZXQgcHN0cl9leGNlcHRpb24geDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzdHJfbW9kdWxlIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzdHJfcmVjbW9kdWxlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX21vZHR5cGUgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzdHJfb3BlbiB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX29wZW4geDApIH1cbiAgICBsZXQgcHN0cl9jbGFzcyB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzIHgwKSB9XG4gICAgbGV0IHBzdHJfY2xhc3NfdHlwZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzc190eXBlIHgwKSB9XG4gICAgbGV0IHBzdHJfaW5jbHVkZSB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHN0cl9hdHRyaWJ1dGUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBzdHJfZXh0ZW5zaW9uIHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHRvcGxldmVsX2RpcmVjdGl2ZSB+bmFtZSAgPVxuICAgICAgKChmdW4gfmFyZyAtPiB7IHBkaXJfbmFtZSA9IG5hbWU7IHBkaXJfYXJnID0gYXJnOyBwZGlyX2xvYyA9IGxvYyB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHR5cGVfZGVjbGFyYXRpb24gfm5hbWUgID1cbiAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAoKGZ1biB+Y3N0cnMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmtpbmQgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICgoZnVuIH5tYW5pZmVzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2xvYyA9IGxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB0eXBlX2V4Y2VwdGlvbiBjb25zdHJ1Y3RvciA9XG4gICAgICB7XG4gICAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICAgICAgICBwdHlleG5fbG9jID0gbG9jO1xuICAgICAgICBwdHlleG5fYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHR5cGVfZXh0ZW5zaW9uIH5wYXRoICA9XG4gICAgICAoKGZ1biB+cGFyYW1zIC0+XG4gICAgICAgICAgKChmdW4gfmNvbnN0cnVjdG9ycyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+cHJpdmF0ZV8gLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X3BhdGggPSBwYXRoO1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHZhbHVlX2JpbmRpbmcgfnBhdCAgPVxuICAgICAgKChmdW4gfmV4cHIgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdmJfcGF0ID0gcGF0O1xuICAgICAgICAgICAgcHZiX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgcHZiX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB2Yl9sb2MgPSBsb2NcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICAoKGZ1biB+cHJpbSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHZhbF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwdmFsX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgICAgICBwdmFsX3ByaW0gPSBwcmltO1xuICAgICAgICAgICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB2YWxfbG9jID0gbG9jXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gIGVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIGxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IExvY2F0aW9uLnQgfVxuXG5sZXQgdHh0IHQgPSB0LnR4dFxubGV0IGxvYyB0ID0gdC5sb2NcbmxldCBtYWtlIH5sb2MgdHh0ID0geyBsb2M7IHR4dCB9XG5sZXQgbWFwIHQgfmYgPSB7IHQgd2l0aCB0eHQgPSBmIHQudHh0IH1cbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBsb25naWRlbnQgPSBMaWRlbnQgb2Ygc3RyaW5nIHwgTGRvdCBvZiB0ICogc3RyaW5nIHwgTGFwcGx5IG9mIHQgKiB0XG5cbiAgbGV0IGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50ID0gUG9seS5jb21wYXJlXG5cbiAgbGV0IGlzX25vcm1hbF9pZGVudF9jaGFyID0gZnVuY3Rpb25cbiAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIHwgJzAnIC4uICc5JyB8ICdfJyB8ICdcXCcnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICBsZXQgaXNfbm9ybWFsX2lkZW50ID0gZnVuY3Rpb25cbiAgICB8IFwiYXNyXCIgfCBcImxhbmRcIiB8IFwibG9yXCIgfCBcImxzbFwiIHwgXCJsc3JcIiB8IFwibHhvclwiIHwgXCJtb2RcIiB8IFwib3JcIiAtPiBmYWxzZVxuICAgIHwgc3RyaW5nIC0+IFN0cmluZy5mb3JfYWxsIHN0cmluZyB+Zjppc19ub3JtYWxfaWRlbnRfY2hhclxuXG4gIGxldCBzaG9ydF9uYW1lIHN0cmluZyA9XG4gICAgaWYgaXNfbm9ybWFsX2lkZW50IHN0cmluZyB0aGVuIHN0cmluZyBlbHNlIFwiKCBcIiBeIHN0cmluZyBeIFwiIClcIlxuXG4gIGxldCByZWMgbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBMaWRlbnQgcyAtPiBzaG9ydF9uYW1lIHNcbiAgICB8IExkb3QgKGEsIGIpIC0+IG5hbWUgYSBeIFwiLlwiIF4gc2hvcnRfbmFtZSBiXG4gICAgfCBMYXBwbHkgKGEsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwiJXMoJXMpXCIgKG5hbWUgYSkgKG5hbWUgYilcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKG5hbWUgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IHJlYyBmbGF0IGFjY3UgPSBmdW5jdGlvblxuICB8IExpZGVudCBzIC0+IHMgOjogYWNjdVxuICB8IExkb3QgKGxpZCwgcykgLT4gZmxhdCAocyA6OiBhY2N1KSBsaWRcbiAgfCBMYXBwbHkgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkxvbmdpZGVudC5mbGF0dGVuXCJcblxubGV0IGZsYXR0ZW5fZXhuIGxpZCA9IGZsYXQgW10gbGlkXG5cbmxldCBsYXN0X2V4biA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gc1xuICB8IExkb3QgKF8sIHMpIC0+IHNcbiAgfCBMYXBwbHkgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkxvbmdpZGVudC5mbGF0dGVuXCJcblxubGV0IHVuZmxhdHRlbiB+aW5pdCBsID0gTGlzdC5mb2xkX2xlZnQgbCB+aW5pdCB+ZjooZnVuIGFjYyBzIC0+IExkb3QgKGFjYywgcykpXG5cbigqIGZvciBjYXNlcyB3aXRob3V0IGRvdHRlZCBvcGVyYXRvcnMgKGUuZy4gW3BhcnNlIFwiQS5CLkNcIl0pICopXG5sZXQgcGFyc2Vfc2ltcGxlIHMgPVxuICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciBzIH5zZXA6Jy4nIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBzIDo6IGwgLT4gdW5mbGF0dGVuIH5pbml0OihMaWRlbnQgcykgbFxuXG4oKiBoYW5kbGUgW1wiQS5CLigrLispXCJdIG9yIFtcIlZlYy4oLiUuKCk8LSlcIl0gKilcbmxldCBwYXJzZSBzID1cbiAgbGV0IGludmFsaWQgKCkgPVxuICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIlBweGxpYi5Mb25naWRlbnQucGFyc2U6ICVTXCIgcylcbiAgaW5cbiAgaWYgU3RyaW5nLmxlbmd0aCBzIDwgMSB0aGVuIGludmFsaWQgKCk7XG4gIGxldCBvcGVuX3BhciA9IFN0cmluZy5pbmRleF9vcHQgcyAnKCcgaW5cbiAgbGV0IGNsb3NlX3BhciA9IFN0cmluZy5pbmRleF9vcHQgcyAnKScgaW5cbiAgbWF0Y2ggKHMuWzBdLCBvcGVuX3BhciwgY2xvc2VfcGFyKSB3aXRoXG4gIHwgKCdBJyAuLiAnWicgfCAnYScgLi4gJ3onIHwgJ18nKSwgTm9uZSwgTm9uZSAtPiBwYXJzZV9zaW1wbGUgc1xuICB8IF8sIE5vbmUsIE5vbmUgLT4gTGlkZW50IHMgKCogVGhpcyBpcyBhIHJhdyBvcGVyYXRvciwgbm8gbW9kdWxlIHBhdGggKilcbiAgfCBfLCBOb25lLCBfIHwgXywgXywgTm9uZSAtPiBpbnZhbGlkICgpXG4gIHwgXywgU29tZSBsLCBTb21lIHIgLT4gKFxuICAgICAgaWYgSW50LihyIDw+IFN0cmluZy5sZW5ndGggcyAtIDEpIHRoZW4gaW52YWxpZCAoKTtcbiAgICAgIGxldCBncm91cCA9XG4gICAgICAgIGlmIEludC4ociA9IGwgKyAxKSB0aGVuIFwiKClcIlxuICAgICAgICBlbHNlIFN0cmluZy50cmltIChTdHJpbmcuc3ViIHMgfnBvczoobCArIDEpIH5sZW46KHIgLSBsIC0gMSkpXG4gICAgICBpblxuICAgICAgaWYgSW50LihsID0gMCkgdGhlbiBMaWRlbnQgZ3JvdXBcbiAgICAgIGVsc2UgaWYgQ2hhci4ocy5bbCAtIDFdIDw+ICcuJykgdGhlbiBpbnZhbGlkICgpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBiZWZvcmUgPSBTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46KGwgLSAxKSBpblxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciBiZWZvcmUgfnNlcDonLicgd2l0aFxuICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IHMgOjogbCAtPiBMZG90ICh1bmZsYXR0ZW4gfmluaXQ6KExpZGVudCBzKSBsLCBncm91cCkpXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZSAoVClcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZSAoVClcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRGVmYXVsdCA9IHN0cnVjdFxuICBtb2R1bGUgTG9jYXRlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIExvYy50XG5cbiAgICBsZXQgbG9jICh4IDogXyB0KSA9IHgubG9jXG4gICAgbGV0IG1rIH5sb2MgeCA9IHsgbG9jOyB0eHQgPSB4IH1cbiAgICBsZXQgbWFwIGYgdCA9IHsgdCB3aXRoIHR4dCA9IGYgdC50eHQgfVxuICAgIGxldCBtYXBfbGlkZW50IHggPSBtYXAgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeFxuICAgIGxldCBsaWRlbnQgfmxvYyB4ID0gbWsgfmxvYyAoTG9uZ2lkZW50LnBhcnNlIHgpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1cblxuICBtb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gICAgbGV0IHBwYXRfY29uc3RydWN0ID0gcHBhdF9jb25zdHJ1Y3RcblxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH52YXJzIH5hcmdzIH5yZXMgKCkgPVxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+dmFycyB+YXJncyB+cmVzXG4gIGVuZFxuXG4gICgqLS0tLS0tIHN0YWJsZSBsYXllciBhYm92ZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTSAtLS0tLSopXG4gIGxldCBwcGF0X2NvbnN0cnVjdCB+bG9jIGxpZCBwID1cbiAgICB7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfZGVzYyA9IFBwYXRfY29uc3RydWN0IChsaWQsIE9wdGlvbi5tYXAgcCB+ZjooZnVuIHAgLT4gKFtdLCBwKSkpO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+YXJncyB+cmVzID1cbiAgICB7XG4gICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICBwY2RfdmFycyA9IFtdO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IFtdO1xuICAgIH1cblxuICAoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4gIGxldCBwc3RyX3ZhbHVlX2xpc3QgfmxvYyByZWNfZmxhZyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgdmJzIC0+IFsgcHN0cl92YWx1ZSB+bG9jIHJlY19mbGFnIHZicyBdXG5cbiAgbGV0IG5vbnJlY190eXBlX2RlY2xhcmF0aW9uIH5sb2M6XyB+bmFtZTpfIH5wYXJhbXM6XyB+Y3N0cnM6XyB+a2luZDpfXG4gICAgICB+cHJpdmF0ZV86XyB+bWFuaWZlc3Q6XyA9XG4gICAgZmFpbHdpdGhcbiAgICAgIFwiUHB4bGliLkFzdF9idWlsZGVyLm5vbnJlY190eXBlX2RlY2xhcmF0aW9uOiBkb24ndCB1c2UgdGhpcyBmdW5jdGlvblwiXG5cbiAgbGV0IGVpbnQgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50LnRvX3N0cmluZyB0LCBOb25lKSlcbiAgbGV0IGVjaGFyIH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2NoYXIgdClcbiAgbGV0IGVzdHJpbmcgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3Rfc3RyaW5nICh0LCBsb2MsIE5vbmUpKVxuICBsZXQgZWZsb2F0IH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2Zsb2F0ICh0LCBOb25lKSlcblxuICBsZXQgZWludDMyIH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHQsIFNvbWUgJ2wnKSlcblxuICBsZXQgZWludDY0IH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50NjQudG9fc3RyaW5nIHQsIFNvbWUgJ0wnKSlcblxuICBsZXQgZW5hdGl2ZWludCB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKE5hdGl2ZWludC50b19zdHJpbmcgdCwgU29tZSAnbicpKVxuXG4gIGxldCBwaW50IH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludC50b19zdHJpbmcgdCwgTm9uZSkpXG4gIGxldCBwY2hhciB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9jaGFyIHQpXG4gIGxldCBwc3RyaW5nIH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X3N0cmluZyAodCwgbG9jLCBOb25lKSlcbiAgbGV0IHBmbG9hdCB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9mbG9hdCAodCwgTm9uZSkpXG5cbiAgbGV0IHBpbnQzMiB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDMyLnRvX3N0cmluZyB0LCBTb21lICdsJykpXG5cbiAgbGV0IHBpbnQ2NCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB0LCBTb21lICdMJykpXG5cbiAgbGV0IHBuYXRpdmVpbnQgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChOYXRpdmVpbnQudG9fc3RyaW5nIHQsIFNvbWUgJ24nKSlcblxuICBsZXQgZWJvb2wgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIChCb29sLnRvX3N0cmluZyB0KSkgTm9uZVxuXG4gIGxldCBwYm9vbCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgKEJvb2wudG9fc3RyaW5nIHQpKSBOb25lXG5cbiAgbGV0IGV2YXIgfmxvYyB2ID0gcGV4cF9pZGVudCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5wYXJzZSB2KSlcbiAgbGV0IHB2YXIgfmxvYyB2ID0gcHBhdF92YXIgfmxvYyAoTG9jYXRlZC5tayB+bG9jIHYpXG4gIGxldCBldW5pdCB+bG9jID0gcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIpIE5vbmVcbiAgbGV0IHB1bml0IH5sb2MgPSBwcGF0X2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIFwiKClcIikgTm9uZVxuICBsZXQgcGV4cF90dXBsZSB+bG9jIGwgPSBtYXRjaCBsIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gcGV4cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGUgfmxvYyBsID0gbWF0Y2ggbCB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBsXG4gIGxldCBwdHlwX3R1cGxlIH5sb2MgbCA9IG1hdGNoIGwgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBwdHlwX3R1cGxlIH5sb2MgbFxuXG4gIGxldCBwZXhwX3R1cGxlX29wdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBOb25lIHwgXyA6OiBfIC0+IFNvbWUgKHBleHBfdHVwbGUgfmxvYyBsKVxuXG4gIGxldCBwcGF0X3R1cGxlX29wdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBOb25lIHwgXyA6OiBfIC0+IFNvbWUgKHBwYXRfdHVwbGUgfmxvYyBsKVxuXG4gIGxldCBwdHlwX3BvbHkgfmxvYyB2YXJzIHR5ID1cbiAgICBtYXRjaCB2YXJzIHdpdGggW10gLT4gdHkgfCBfIC0+IHB0eXBfcG9seSB+bG9jIHZhcnMgdHlcblxuICBsZXQgcGV4cF9hcHBseSB+bG9jIGUgZWwgPVxuICAgIG1hdGNoIChlLCBlbCkgd2l0aFxuICAgIHwgXywgW10gLT4gZVxuICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChlLCBhcmdzKTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSwgXyAtPlxuICAgICAgICB7IGUgd2l0aCBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChlLCBhcmdzIEAgZWwpIH1cbiAgICB8IF8gLT4gcGV4cF9hcHBseSB+bG9jIGUgZWxcblxuICBsZXQgZWFwcGx5IH5sb2MgZSBlbCA9XG4gICAgcGV4cF9hcHBseSB+bG9jIGUgKExpc3QubWFwIGVsIH5mOihmdW4gZSAtPiAoQXN0dHlwZXMuTm9sYWJlbCwgZSkpKVxuXG4gIGxldCBlYWJzdHJhY3QgfmxvYyBwcyBlID1cbiAgICBMaXN0LmZvbGRfcmlnaHQgcHMgfmluaXQ6ZSB+ZjooZnVuIHAgZSAtPlxuICAgICAgICBwZXhwX2Z1biB+bG9jIEFzdHR5cGVzLk5vbGFiZWwgTm9uZSBwIGUpXG5cbiAgbGV0IGVzZXF1ZW5jZSB+bG9jIGVsID1cbiAgICBtYXRjaCBMaXN0LnJldiBlbCB3aXRoXG4gICAgfCBbXSAtPiBldW5pdCB+bG9jXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdCB0bCB+aW5pdDpoZCB+ZjooZnVuIGFjYyBlIC0+IHBleHBfc2VxdWVuY2UgfmxvYyBlIGFjYylcblxuICBsZXQgcGNvbnN0cnVjdCBjZCBhcmcgPVxuICAgIHBwYXRfY29uc3RydWN0IH5sb2M6Y2QucGNkX2xvYyAoTG9jYXRlZC5tYXBfbGlkZW50IGNkLnBjZF9uYW1lKSBhcmdcblxuICBsZXQgZWNvbnN0cnVjdCBjZCBhcmcgPVxuICAgIHBleHBfY29uc3RydWN0IH5sb2M6Y2QucGNkX2xvYyAoTG9jYXRlZC5tYXBfbGlkZW50IGNkLnBjZF9uYW1lKSBhcmdcblxuICBsZXQgcmVjIGVsaXN0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCJbXVwiKSkgTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIHBleHBfY29uc3RydWN0IH5sb2NcbiAgICAgICAgICAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiOjpcIikpXG4gICAgICAgICAgKFNvbWUgKHBleHBfdHVwbGUgfmxvYyBbIHg7IGVsaXN0IH5sb2MgbCBdKSlcblxuICBsZXQgcmVjIHBsaXN0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBwcGF0X2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCJbXVwiKSkgTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIHBwYXRfY29uc3RydWN0IH5sb2NcbiAgICAgICAgICAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiOjpcIikpXG4gICAgICAgICAgKFNvbWUgKHBwYXRfdHVwbGUgfmxvYyBbIHg7IHBsaXN0IH5sb2MgbCBdKSlcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnZfd2l0aG91dF9hcHBseSB+bG9jIChpZGVudCA6IExvbmdpZGVudC50KSB+ZiA9XG4gICAgbWF0Y2ggaWRlbnQgd2l0aFxuICAgIHwgTGlkZW50IG4gLT4gcGV4cF9pZGVudCB+bG9jIHsgdHh0ID0gTGlkZW50IChmIG4pOyBsb2MgfVxuICAgIHwgTGRvdCAocGF0aCwgbikgLT4gcGV4cF9pZGVudCB+bG9jIHsgdHh0ID0gTGRvdCAocGF0aCwgZiBuKTsgbG9jIH1cbiAgICB8IExhcHBseSBfIC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidW5leHBlY3RlZCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVcIlxuXG4gIGxldCB0eXBlX2NvbnN0cl9jb252IH5sb2M6YXBwbHlfbG9jIHsgTG9jLmxvYzsgdHh0ID0gbG9uZ2lkZW50IH0gfmYgYXJncyA9XG4gICAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbWF0Y2ggKGxvbmdpZGVudCA6IExvbmdpZGVudC50KSB3aXRoXG4gICAgfCBMaWRlbnQgXyB8IExkb3QgKChMaWRlbnQgXyB8IExkb3QgXyksIF8pIHwgTGFwcGx5IF8gLT4gKFxuICAgICAgICBsZXQgaWRlbnQgPVxuICAgICAgICAgIHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgbG9uZ2lkZW50IH5sb2MgfmZcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gaWRlbnRcbiAgICAgICAgfCBfIDo6IF8gLT4gZWFwcGx5IH5sb2M6YXBwbHlfbG9jIGlkZW50IGFyZ3MpXG4gICAgfCBMZG90ICgoTGFwcGx5IF8gYXMgbW9kdWxlX3BhdGgpLCBuKSAtPlxuICAgICAgICBsZXQgc3VmZml4X24gZnVuY3Rvcl8gPSBTdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpIGZ1bmN0b3JfIF4gXCJfX1wiIF4gbiBpblxuICAgICAgICBsZXQgcmVjIGdhdGhlcl9sYXBwbHkgZnVuY3Rvcl9hcmdzIDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgKiBfID1cbiAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgIHwgTGFwcGx5IChyZXN0LCBhcmcpIC0+IGdhdGhlcl9sYXBwbHkgKGFyZyA6OiBmdW5jdG9yX2FyZ3MpIHJlc3RcbiAgICAgICAgICB8IExpZGVudCBmdW5jdG9yXyAtPiAoTGlkZW50IChzdWZmaXhfbiBmdW5jdG9yXyksIGZ1bmN0b3JfYXJncylcbiAgICAgICAgICB8IExkb3QgKGZ1bmN0b3JfcGF0aCwgZnVuY3Rvcl8pIC0+XG4gICAgICAgICAgICAgIChMZG90IChmdW5jdG9yX3BhdGgsIHN1ZmZpeF9uIGZ1bmN0b3JfKSwgZnVuY3Rvcl9hcmdzKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaWRlbnQsIGZ1bmN0b3JfYXJncyA9IGdhdGhlcl9sYXBwbHkgW10gbW9kdWxlX3BhdGggaW5cbiAgICAgICAgZWFwcGx5IH5sb2M6YXBwbHlfbG9jXG4gICAgICAgICAgKHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgaWRlbnQgfmxvYyB+ZilcbiAgICAgICAgICAoTGlzdC5tYXAgZnVuY3Rvcl9hcmdzIH5mOihmdW4gcGF0aCAtPlxuICAgICAgICAgICAgICAgcGV4cF9wYWNrIH5sb2MgKHBtb2RfaWRlbnQgfmxvYyB7IHR4dCA9IHBhdGg7IGxvYyB9KSlcbiAgICAgICAgICBAIGFyZ3MpXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IH5sb2MgbG9uZ2lkZW50IH5mID1cbiAgICB0eXBlX2NvbnN0cl9jb252IGxvbmdpZGVudCB+bG9jIH5mIFtdXG5cbiAgbGV0IGV0YV9yZWR1Y2UgPVxuICAgIGxldCByZWMgZ2F0aGVyX3BhcmFtcyBhY2MgZXhwciA9XG4gICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgIHwge1xuICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICBQZXhwX2Z1biAobGFiZWwsIE5vbmUgKCogbm8gZGVmYXVsdCBleHByZXNzaW9uICopLCBzdWJwYXQsIGJvZHkpO1xuICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgIHBleHBfbG9jID0gXztcbiAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICB9IC0+IChcbiAgICAgICAgICBtYXRjaCBzdWJwYXQgd2l0aFxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBuYW1lO1xuICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICBnYXRoZXJfcGFyYW1zICgobGFiZWwsIG5hbWUsIE5vbmUpIDo6IGFjYykgYm9keVxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gUHBhdF92YXIgbmFtZTtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IF87XG4gICAgICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICB0eSApO1xuICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAoKiBXZSByZWR1Y2UgW2Z1biAoeCA6IHR5KSAtPiBmIHhdIGJ5IHJld3JpdGluZyBpdCBbKGYgOiB0eSAtPiBfKV0uICopXG4gICAgICAgICAgICAgIGdhdGhlcl9wYXJhbXMgKChsYWJlbCwgbmFtZSwgU29tZSB0eSkgOjogYWNjKSBib2R5XG4gICAgICAgICAgfCBfIC0+IChMaXN0LnJldiBhY2MsIGV4cHIpKVxuICAgICAgfCBfIC0+IChMaXN0LnJldiBhY2MsIGV4cHIpXG4gICAgaW5cbiAgICBsZXQgYW5ub3RhdGUgfmxvYyBleHByIHBhcmFtcyA9XG4gICAgICBpZiBMaXN0LmV4aXN0cyBwYXJhbXMgfmY6KGZ1biAoXywgXywgdHkpIC0+IE9wdGlvbi5pc19zb21lIHR5KSB0aGVuXG4gICAgICAgIGxldCB0eSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IHBhcmFtcyB+aW5pdDoocHR5cF9hbnkgfmxvYylcbiAgICAgICAgICAgIH5mOihmdW4gKHBhcmFtX2xhYmVsLCBwYXJhbSwgdHlfb3B0KSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGxvYyA9IHBhcmFtLmxvYyBpblxuICAgICAgICAgICAgICBsZXQgdHkgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHR5X29wdCB3aXRoIE5vbmUgLT4gcHR5cF9hbnkgfmxvYyB8IFNvbWUgdHkgLT4gdHlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgcHR5cF9hcnJvdyB+bG9jIHBhcmFtX2xhYmVsIHR5IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgcGV4cF9jb25zdHJhaW50IH5sb2MgZXhwciB0eVxuICAgICAgZWxzZSBleHByXG4gICAgaW5cbiAgICBsZXQgcmVjIGdhdGhlcl9hcmdzIG4geCA9XG4gICAgICBpZiBuID0gMCB0aGVuIFNvbWUgKHgsIFtdKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCB7XG4gICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChib2R5LCBhcmdzKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICBpZiBMaXN0Lmxlbmd0aCBhcmdzIDw9IG4gdGhlblxuICAgICAgICAgICAgICBtYXRjaCBnYXRoZXJfYXJncyAobiAtIExpc3QubGVuZ3RoIGFyZ3MpIGJvZHkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgKGJvZHksIGFyZ3MnKSAtPiBTb21lIChib2R5LCBhcmdzJyBAIGFyZ3MpXG4gICAgICAgICAgICBlbHNlIE5vbmVcbiAgICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGZ1biBleHByIC0+XG4gICAgICBsZXQgcGFyYW1zLCBib2R5ID0gZ2F0aGVyX3BhcmFtcyBbXSBleHByIGluXG4gICAgICBtYXRjaCBnYXRoZXJfYXJncyAoTGlzdC5sZW5ndGggcGFyYW1zKSBib2R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgKCh7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgXzsgXyB9IGFzIGZfaWRlbnQpLCBhcmdzKSAtPiAoXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIExpc3QuZm9yX2FsbDIgYXJncyBwYXJhbXNcbiAgICAgICAgICAgICAgfmY6KGZ1biAoYXJnX2xhYmVsLCBhcmcpIChwYXJhbV9sYWJlbCwgcGFyYW0sIF8pIC0+XG4gICAgICAgICAgICAgICAgUG9seS4oID0gKSAoYXJnX2xhYmVsIDogYXJnX2xhYmVsKSBwYXJhbV9sYWJlbFxuICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBuYW1lJzsgXyB9O1xuICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgICBTdHJpbmcuKCA9ICkgbmFtZScgcGFyYW0udHh0XG4gICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgICAgICB8IHRydWUgLT4gU29tZSAoYW5ub3RhdGUgfmxvYzpleHByLnBleHBfbG9jIGZfaWRlbnQgcGFyYW1zKSlcbiAgICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgZXhwciA9IE9wdGlvbi52YWx1ZSAoZXRhX3JlZHVjZSBleHByKSB+ZGVmYXVsdDpleHByXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyBleHByIH5yZWNfZmxhZyA9XG4gICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgIHwgUmVjdXJzaXZlIC0+IGV4cHJcbiAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIGV4cHJcbmVuZFxuXG5tb2R1bGUgdHlwZSBMb2MgPSBBc3RfYnVpbGRlcl9pbnRmLkxvY1xuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfaW50Zi5TXG5cbiAgbW9kdWxlIExhdGVzdCA6IHNpZ1xuICAgIHZhbCBwcGF0X2NvbnN0cnVjdCA6XG4gICAgICBsb25naWRlbnQgbG9jIC0+IChsYWJlbCBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvbiAtPiBwYXR0ZXJuXG5cbiAgICB2YWwgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgICAgbmFtZTpsYWJlbCBsb2MgLT5cbiAgICAgIHZhcnM6bGFiZWwgbG9jIGxpc3QgLT5cbiAgICAgIGFyZ3M6Y29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgICByZXM6Y29yZV90eXBlIG9wdGlvbiAtPlxuICAgICAgdW5pdCAtPlxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgZW5kXG5cbiAgdmFsIHBwYXRfY29uc3RydWN0IDogbG9uZ2lkZW50IGxvYyAtPiBwYXR0ZXJuIG9wdGlvbiAtPiBwYXR0ZXJuXG5cbiAgdmFsIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBuYW1lOmxhYmVsIGxvYyAtPlxuICAgIGFyZ3M6Y29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgcmVzOmNvcmVfdHlwZSBvcHRpb24gLT5cbiAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuZW5kXG5cbm1vZHVsZSBNYWtlIChMb2MgOiBzaWdcbiAgdmFsIGxvYyA6IExvY2F0aW9uLnRcbmVuZCkgOiBTID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1ha2UgKExvYylcblxuICBtb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gICAgbGV0IHBwYXRfY29uc3RydWN0ID0gcHBhdF9jb25zdHJ1Y3RcblxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSB+dmFycyB+YXJncyB+cmVzICgpID1cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH52YXJzIH5hcmdzIH5yZXNcbiAgZW5kXG5cbiAgKCotLS0tLSBzdGFibGUgbGF5ZXIgYWJvdmUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1ha2UgKExvYykgLS0tLS0qKVxuXG4gIGxldCBwcGF0X2NvbnN0cnVjdCBsaWQgcCA9XG4gICAge1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cnVjdCAobGlkLCBPcHRpb24ubWFwIHAgfmY6KGZ1biBwIC0+IChbXSwgcCkpKTtcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH5hcmdzIH5yZXMgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gW107XG4gICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW107XG4gICAgfVxuXG4gICgqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuICBsZXQgcHN0cl92YWx1ZV9saXN0ID0gRGVmYXVsdC5wc3RyX3ZhbHVlX2xpc3RcblxuICBsZXQgbm9ucmVjX3R5cGVfZGVjbGFyYXRpb24gfm5hbWUgfnBhcmFtcyB+Y3N0cnMgfmtpbmQgfnByaXZhdGVfIH5tYW5pZmVzdCA9XG4gICAgRGVmYXVsdC5ub25yZWNfdHlwZV9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH5wYXJhbXMgfmNzdHJzIH5raW5kIH5wcml2YXRlX1xuICAgICAgfm1hbmlmZXN0XG5cbiAgbW9kdWxlIExvY2F0ZWQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERlZmF1bHQuTG9jYXRlZFxuXG4gICAgbGV0IGxvYyBfID0gTG9jLmxvY1xuICAgIGxldCBtayB4ID0gbWsgfmxvYzpMb2MubG9jIHhcbiAgICBsZXQgbGlkZW50IHggPSBsaWRlbnQgfmxvYzpMb2MubG9jIHhcbiAgZW5kXG5cbiAgbGV0IHBleHBfdHVwbGUgbCA9IERlZmF1bHQucGV4cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGUgbCA9IERlZmF1bHQucHBhdF90dXBsZSB+bG9jIGxcbiAgbGV0IHB0eXBfdHVwbGUgbCA9IERlZmF1bHQucHR5cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBleHBfdHVwbGVfb3B0IGwgPSBEZWZhdWx0LnBleHBfdHVwbGVfb3B0IH5sb2MgbFxuICBsZXQgcHBhdF90dXBsZV9vcHQgbCA9IERlZmF1bHQucHBhdF90dXBsZV9vcHQgfmxvYyBsXG4gIGxldCBwdHlwX3BvbHkgdmFycyB0eSA9IERlZmF1bHQucHR5cF9wb2x5IH5sb2MgdmFycyB0eVxuICBsZXQgcGV4cF9hcHBseSBlIGVsID0gRGVmYXVsdC5wZXhwX2FwcGx5IH5sb2MgZSBlbFxuICBsZXQgZWludCB0ID0gRGVmYXVsdC5laW50IH5sb2MgdFxuICBsZXQgZWNoYXIgdCA9IERlZmF1bHQuZWNoYXIgfmxvYyB0XG4gIGxldCBlc3RyaW5nIHQgPSBEZWZhdWx0LmVzdHJpbmcgfmxvYyB0XG4gIGxldCBlZmxvYXQgdCA9IERlZmF1bHQuZWZsb2F0IH5sb2MgdFxuICBsZXQgZWludDMyIHQgPSBEZWZhdWx0LmVpbnQzMiB+bG9jIHRcbiAgbGV0IGVpbnQ2NCB0ID0gRGVmYXVsdC5laW50NjQgfmxvYyB0XG4gIGxldCBlbmF0aXZlaW50IHQgPSBEZWZhdWx0LmVuYXRpdmVpbnQgfmxvYyB0XG4gIGxldCBlYm9vbCB0ID0gRGVmYXVsdC5lYm9vbCB+bG9jIHRcbiAgbGV0IGV2YXIgdCA9IERlZmF1bHQuZXZhciB+bG9jIHRcbiAgbGV0IHBpbnQgdCA9IERlZmF1bHQucGludCB+bG9jIHRcbiAgbGV0IHBjaGFyIHQgPSBEZWZhdWx0LnBjaGFyIH5sb2MgdFxuICBsZXQgcHN0cmluZyB0ID0gRGVmYXVsdC5wc3RyaW5nIH5sb2MgdFxuICBsZXQgcGZsb2F0IHQgPSBEZWZhdWx0LnBmbG9hdCB+bG9jIHRcbiAgbGV0IHBpbnQzMiB0ID0gRGVmYXVsdC5waW50MzIgfmxvYyB0XG4gIGxldCBwaW50NjQgdCA9IERlZmF1bHQucGludDY0IH5sb2MgdFxuICBsZXQgcG5hdGl2ZWludCB0ID0gRGVmYXVsdC5wbmF0aXZlaW50IH5sb2MgdFxuICBsZXQgcGJvb2wgdCA9IERlZmF1bHQucGJvb2wgfmxvYyB0XG4gIGxldCBwdmFyIHQgPSBEZWZhdWx0LnB2YXIgfmxvYyB0XG4gIGxldCBldW5pdCA9IERlZmF1bHQuZXVuaXQgfmxvY1xuICBsZXQgcHVuaXQgPSBEZWZhdWx0LnB1bml0IH5sb2NcbiAgbGV0IGVjb25zdHJ1Y3QgPSBEZWZhdWx0LmVjb25zdHJ1Y3RcbiAgbGV0IHBjb25zdHJ1Y3QgPSBEZWZhdWx0LnBjb25zdHJ1Y3RcbiAgbGV0IGVhcHBseSBlIGVsID0gRGVmYXVsdC5lYXBwbHkgfmxvYyBlIGVsXG4gIGxldCBlYWJzdHJhY3QgcHMgZSA9IERlZmF1bHQuZWFic3RyYWN0IH5sb2MgcHMgZVxuICBsZXQgZXNlcXVlbmNlIGVsID0gRGVmYXVsdC5lc2VxdWVuY2UgfmxvYyBlbFxuICBsZXQgZWxpc3QgbCA9IERlZmF1bHQuZWxpc3QgfmxvYyBsXG4gIGxldCBwbGlzdCBsID0gRGVmYXVsdC5wbGlzdCB+bG9jIGxcblxuICBsZXQgdHlwZV9jb25zdHJfY29udiBpZGVudCB+ZiBhcmdzID1cbiAgICBEZWZhdWx0LnR5cGVfY29uc3RyX2NvbnYgfmxvYyBpZGVudCB+ZiBhcmdzXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IGlkZW50IH5mID1cbiAgICBEZWZhdWx0LnVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IH5sb2MgaWRlbnQgfmZcblxuICBsZXQgZXRhX3JlZHVjZSA9IERlZmF1bHQuZXRhX3JlZHVjZVxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSA9IERlZmF1bHQuZXRhX3JlZHVjZV9pZl9wb3NzaWJsZVxuXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgPVxuICAgIERlZmF1bHQuZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjXG5lbmRcblxubGV0IG1ha2UgbG9jID1cbiAgKG1vZHVsZSBNYWtlIChzdHJ1Y3RcbiAgICBsZXQgbG9jID0gbG9jXG4gIGVuZCkgOiBTKVxuIiwiKCoqIFNtYWxsIGhlbHBlciB0byBmaW5kIG91dCB3aG8gaXMgdGhlIGNhbGxlciBvZiBhIGZ1bmN0aW9uICopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFByaW50ZXhjID0gU3RkbGliLlByaW50ZXhjXG5cbnR5cGUgdCA9IFByaW50ZXhjLmxvY2F0aW9uIG9wdGlvblxuXG5sZXQgZ2V0IH5za2lwID1cbiAgbGV0IHNraXAgPSBfX0ZJTEVfXyA6OiBza2lwIGluXG4gIGxldCBzdGFjayA9IFByaW50ZXhjLmdldF9jYWxsc3RhY2sgMTYgaW5cbiAgbGV0IGxlbiA9IFByaW50ZXhjLnJhd19iYWNrdHJhY2VfbGVuZ3RoIHN0YWNrIGluXG4gIGxldCByZWMgbG9vcCBwb3MgPVxuICAgIGlmIHBvcyA9IGxlbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaFxuICAgICAgICBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZV9zbG90IHN0YWNrIHBvc1xuICAgICAgICB8PiBQcmludGV4Yy5jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCB8PiBQcmludGV4Yy5TbG90LmxvY2F0aW9uXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGxvYyAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIH5zZXQ6c2tpcCBsb2MuZmlsZW5hbWUgdGhlbiBsb29wIChwb3MgKyAxKSBlbHNlIFNvbWUgbG9jXG4gIGluXG4gIGxvb3AgMFxuIiwiKCoqIEhlbHBlcnMgdG8gcHJvdmlkZSBoaW50cyB0byBQUFggdXNlcnMgZm9yIHR5cG9zIG9yIHNwZWxsY2hlY2tzLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuZXhjZXB0aW9uIEN1dG9mZl9tZXRcblxuKCogQXMgZm91bmQgaGVyZSBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvTGV2ZW5zaHRlaW5fZGlzdGFuY2UjT0NhbWwgKilcbmxldCBsZXZlbnNodGVpbl9kaXN0YW5jZSBzIHQgY3V0b2ZmID1cbiAgbGV0IG0gPSBTdHJpbmcubGVuZ3RoIHMgYW5kIG4gPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgaWYgY3V0b2ZmID0gMCB8fCBhYnMgKG0gLSBuKSA+PSBjdXRvZmYgdGhlbiBOb25lXG4gIGVsc2VcbiAgICAoKiBmb3IgYWxsIGkgYW5kIGosIGQuKGkpLihqKSB3aWxsIGhvbGQgdGhlIExldmVuc2h0ZWluIGRpc3RhbmNlIGJldHdlZW4gdGhlXG4gICAgICAgZmlyc3QgaSBjaGFyYWN0ZXJzIG9mIHMgYW5kIHRoZSBmaXJzdCBqIGNoYXJhY3RlcnMgb2YgdCAqKVxuICAgIGxldCBkID0gQXJyYXkubWFrZV9tYXRyaXggfmRpbXg6KG0gKyAxKSB+ZGlteToobiArIDEpIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbSBkb1xuICAgICAgKCogdGhlIGRpc3RhbmNlIG9mIGFueSBmaXJzdCBzdHJpbmcgdG8gYW4gZW1wdHkgc2Vjb25kIHN0cmluZyAqKVxuICAgICAgZC4oaSkuKDApIDwtIGlcbiAgICBkb25lO1xuICAgIGZvciBqID0gMCB0byBuIGRvXG4gICAgICAoKiB0aGUgZGlzdGFuY2Ugb2YgYW55IHNlY29uZCBzdHJpbmcgdG8gYW4gZW1wdHkgZmlyc3Qgc3RyaW5nICopXG4gICAgICBkLigwKS4oaikgPC0galxuICAgIGRvbmU7XG4gICAgKCogdGhlIG1pbmltdW0gb2YgZWFjaCBsaW5lIHRvZ2V0aGVyIHdpdGggdGhlIGNvbHVtbiBpbmRleCB3aWxsIGJlIHVzZWRcbiAgICAgICB0byBub3RpY2UgY3V0b2ZmIGV4Y2VlZGluZyBhbmQgcmV0dXJuIGVhcmx5IGluIHRoYXQgY2FzZSAqKVxuICAgIGxldCBsaW5lX21pbiA9IHJlZiAwIGluXG4gICAgbGV0IGRpc3RhbmNlID1cbiAgICAgIHRyeVxuICAgICAgICBmb3IgaiA9IDEgdG8gbiBkb1xuICAgICAgICAgIGlmICFsaW5lX21pbiA+PSBjdXRvZmYgLSAxICYmIGogPj0gY3V0b2ZmIC0gMSB0aGVuIHJhaXNlIEN1dG9mZl9tZXQ7XG4gICAgICAgICAgbGluZV9taW4gOj0gbWF4IG0gbjtcbiAgICAgICAgICBmb3IgaSA9IDEgdG8gbSBkb1xuICAgICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgICAgaWYgQ2hhci5lcXVhbCBzLltpIC0gMV0gdC5baiAtIDFdIHRoZW4gZC4oaSAtIDEpLihqIC0gMSlcbiAgICAgICAgICAgICAgICAoKiBubyBvcGVyYXRpb24gcmVxdWlyZWQgKilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1pblxuICAgICAgICAgICAgICAgICAgKGQuKGkgLSAxKS4oaikgKyAxKSAoKiBhIGRlbGV0aW9uICopXG4gICAgICAgICAgICAgICAgICAobWluXG4gICAgICAgICAgICAgICAgICAgICAoZC4oaSkuKGogLSAxKSArIDEpICgqIGFuIGluc2VydGlvbiAqKVxuICAgICAgICAgICAgICAgICAgICAgKGQuKGkgLSAxKS4oaiAtIDEpICsgMSkgKCogYSBzdWJzdGl0dXRpb24gKikpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZC4oaSkuKGopIDwtIHZhbHVlO1xuICAgICAgICAgICAgbGluZV9taW4gOj0gbWluICFsaW5lX21pbiB2YWx1ZVxuICAgICAgICAgIGRvbmVcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaWYgZC4obSkuKG4pIDwgY3V0b2ZmIHRoZW4gU29tZSBkLihtKS4obikgZWxzZSBOb25lXG4gICAgICB3aXRoIEN1dG9mZl9tZXQgLT4gTm9uZVxuICAgIGluXG4gICAgZGlzdGFuY2VcblxubGV0IHNwZWxsY2hlY2sgbmFtZXMgbmFtZSA9XG4gIGxldCBjdXRvZmYgPVxuICAgIG1hdGNoIFN0cmluZy5sZW5ndGggbmFtZSB3aXRoXG4gICAgfCAxIHwgMiAtPiAwXG4gICAgfCAzIHwgNCAtPiAxXG4gICAgfCA1IHwgNiAtPiAyXG4gICAgfCBfIC0+IDNcbiAgaW5cbiAgbGV0IF8sIHN1Z2dlc3Rpb25zID1cbiAgICBMaXN0LmZvbGRfbGVmdCBuYW1lcyB+aW5pdDooSW50Lm1heF9pbnQsIFtdKVxuICAgICAgfmY6KGZ1blxuICAgICAgICAgICgoYmVzdF9kaXN0YW5jZSwgbmFtZXNfYXRfYmVzdF9kaXN0YW5jZSkgYXMgYWNjKSByZWdpc3RlcmVkX25hbWUgLT5cbiAgICAgICAgbWF0Y2ggbGV2ZW5zaHRlaW5fZGlzdGFuY2UgbmFtZSByZWdpc3RlcmVkX25hbWUgY3V0b2ZmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgZGlzdCAtPlxuICAgICAgICAgICAgaWYgZGlzdCA8IGJlc3RfZGlzdGFuY2UgdGhlbiAoZGlzdCwgWyByZWdpc3RlcmVkX25hbWUgXSlcbiAgICAgICAgICAgIGVsc2UgaWYgZGlzdCA+IGJlc3RfZGlzdGFuY2UgdGhlbiBhY2NcbiAgICAgICAgICAgIGVsc2UgKGRpc3QsIHJlZ2lzdGVyZWRfbmFtZSA6OiBuYW1lc19hdF9iZXN0X2Rpc3RhbmNlKSlcbiAgaW5cbiAgbWF0Y2ggTGlzdC5yZXYgc3VnZ2VzdGlvbnMgfD4gTGlzdC5maWx0ZXIgfmY6KFN0cmluZy4oIDw+ICkgbmFtZSkgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBsYXN0IDo6IHJldl9yZXN0IC0+XG4gICAgICBTb21lXG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcIkhpbnQ6IERpZCB5b3UgbWVhbiAlcyVzJXM/XCJcbiAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKExpc3QucmV2IHJldl9yZXN0KSlcbiAgICAgICAgICAgKGlmIExpc3QuaXNfZW1wdHkgcmV2X3Jlc3QgdGhlbiBcIlwiIGVsc2UgXCIgb3IgXCIpXG4gICAgICAgICAgIGxhc3QpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5cbmxldCBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFjYyB+ZiA9XG4gIGxldCByZWMgY29sbGFwc2VfYWZ0ZXJfYXQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IHBhcnQgOjogcGFydHMgLT5cbiAgICAgICAgaWYgKG5vdCAoU3RyaW5nLmlzX2VtcHR5IHBhcnQpKSAmJiBDaGFyLmVxdWFsIHBhcnQuWzBdICdAJyB0aGVuXG4gICAgICAgICAgWyBTdHJpbmcuY29uY2F0IChTdHJpbmcuZHJvcF9wcmVmaXggcGFydCAxIDo6IHBhcnRzKSB+c2VwOlwiLlwiIF1cbiAgICAgICAgZWxzZSBwYXJ0IDo6IGNvbGxhcHNlX2FmdGVyX2F0IHBhcnRzXG4gIGluXG4gIGxldCByZWMgbG9vcCBhY2MgcGFydHMgPVxuICAgIG1hdGNoIHBhcnRzIHdpdGhcbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgcGFydCA6OiBwYXJ0cyAtPlxuICAgICAgICBsb29wIChmIChTdHJpbmcuY29uY2F0IChwYXJ0IDo6IHBhcnRzKSB+c2VwOlwiLlwiKSBhY2MpIHBhcnRzXG4gIGluXG4gIFN0cmluZy5zcGxpdF9vbl9jaGFyIG5hbWUgfnNlcDonLicgfD4gY29sbGFwc2VfYWZ0ZXJfYXQgfD4gbG9vcCBhY2NcblxubGV0IGRvdF9zdWZmaXhlcyBuYW1lID1cbiAgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDpbXSB+ZjooZnVuIHggYWNjIC0+IHggOjogYWNjKVxuXG5sZXQgc3BsaXRfcGF0aCA9XG4gIGxldCByZWMgbG9vcCBzIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlbiAocywgTm9uZSlcbiAgICBlbHNlIG1hdGNoIHMuW2ldIHdpdGggJy4nIC0+IGFmdGVyX2RvdCBzIChpICsgMSkgfCBfIC0+IGxvb3AgcyAoaSArIDEpXG4gIGFuZCBhZnRlcl9kb3QgcyBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gKHMsIE5vbmUpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnQScgLi4gJ1onIC0+IChTdHJpbmcucHJlZml4IHMgKGkgLSAxKSwgU29tZSAoU3RyaW5nLmRyb3BfcHJlZml4IHMgaSkpXG4gICAgICB8ICcuJyAtPiBhZnRlcl9kb3QgcyAoaSArIDEpXG4gICAgICB8IF8gLT4gbG9vcCBzIChpICsgMSlcbiAgaW5cbiAgZnVuIHMgLT4gbG9vcCBzIDBcblxubW9kdWxlIFBhdHRlcm4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBuYW1lIDogc3RyaW5nOyBkb3Rfc3VmZml4ZXMgOiBTdHJpbmcuU2V0LnQgfVxuXG4gIGxldCBtYWtlIG5hbWUgPVxuICAgIHsgbmFtZTsgZG90X3N1ZmZpeGVzID0gU3RyaW5nLlNldC5vZl9saXN0IChkb3Rfc3VmZml4ZXMgbmFtZSkgfVxuXG4gIGxldCBuYW1lIHQgPSB0Lm5hbWVcbiAgbGV0IG1hdGNoZXMgdCBtYXRjaGVkID0gU3RyaW5nLlNldC5tZW0gbWF0Y2hlZCB0LmRvdF9zdWZmaXhlc1xuZW5kXG5cbigqIE9uIHRoZSBuYW1lc3BhY2UgXCJhLk5BTUVTUEFDRVwiLCByZXR1cm4gdGhlIHBhaXIgKFwiYVwiLCBOQU1FU1BBQ0UpICopXG5sZXQgc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5hbWUgPVxuICBtYXRjaCBTdHJpbmcuaW5kZXhfb3B0IG5hbWUgJy4nIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGkgLT5cbiAgICAgIGxldCBuID0gU3RyaW5nLmxlbmd0aCBuYW1lIGluXG4gICAgICBsZXQgYmVmb3JlX2RvdCA9IFN0cmluZy5zdWIgbmFtZSB+cG9zOjAgfmxlbjppIGluXG4gICAgICBsZXQgYWZ0ZXJfZG90ID0gU3RyaW5nLnN1YiBuYW1lIH5wb3M6KGkgKyAxKSB+bGVuOihuIC0gaSAtIDEpIGluXG4gICAgICBTb21lIChiZWZvcmVfZG90LCBhZnRlcl9kb3QpXG5cbm1vZHVsZSBBbGxvd2xpc3RlZCA9IHN0cnVjdFxuICAoKiBBbGxvdyBsaXN0IHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcywgYXMgd2VsbCBhcyBhbGwgdGhlaXIgZG90IHN1ZmZpeGVzLlxuXG4gICAgIFNpbmNlIHRoZXNlIGF0dHJpYnV0ZXMgYXJlIGludGVycHJldGVkIGJ5IHRoZSBjb21waWxlciBpdHNlbGYsIHdlIGNhbm5vdCBjaGVja1xuICAgICBhdCB0aGUgbGV2ZWwgb2YgYSBwcHggcmV3cml0ZXIgdGhhdCB0aGV5IGhhdmUgYmVlbiBwcm9wZXJseSBpbnRlcnByZXRlZCwgc29cbiAgICAgd2UganVzdCBhY2NlcHQgdGhlbSBhbnl3aGVyZS5cblxuICAgICBTYWRseSwgdGhlIGNvbXBpbGVyIHNpbGVudGx5IGlnbm9yZXMgdGhlbSBpZiB0aGV5IGFyZSBtaXNwbGFjZWQuLi5cbiAgKilcbiAgbGV0IGNyZWF0ZV9zZXQgZnVsbHlfcXVhbGlmaWVkX25hbWVzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgfmY6KGZ1biBhY2MgbmFtZSAtPlxuICAgICAgICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFjYyB+ZjooZnVuIHggYWNjIC0+IFN0cmluZy5TZXQuYWRkIHggYWNjKSlcbiAgICAgIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgZnVsbHlfcXVhbGlmaWVkX25hbWVzXG5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIGNyZWF0ZV9zZXRcbiAgICAgIFtcbiAgICAgICAgXCJvY2FtbC5hbGVydFwiO1xuICAgICAgICBcIm9jYW1sLmJveGVkXCI7XG4gICAgICAgIFwib2NhbWwuZGVwcmVjYXRlZFwiO1xuICAgICAgICBcIm9jYW1sLmRlcHJlY2F0ZWRfbXV0YWJsZVwiO1xuICAgICAgICBcIm9jYW1sLmRvY1wiO1xuICAgICAgICBcIm9jYW1sLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiO1xuICAgICAgICBcIm9jYW1sLmltbWVkaWF0ZVwiO1xuICAgICAgICBcIm9jYW1sLmltbWVkaWF0ZTY0XCI7XG4gICAgICAgIFwib2NhbWwuaW5saW5lXCI7XG4gICAgICAgIFwib2NhbWwuaW5saW5lZFwiO1xuICAgICAgICBcIm9jYW1sLmxvY2FsXCI7XG4gICAgICAgIFwib2NhbWwubm9hbGxvY1wiO1xuICAgICAgICBcIm9jYW1sLnBwd2FybmluZ1wiO1xuICAgICAgICBcIm9jYW1sLnJlbW92ZV9hbGlhc2VzXCI7XG4gICAgICAgIFwib2NhbWwuc3BlY2lhbGlzZVwiO1xuICAgICAgICBcIm9jYW1sLnNwZWNpYWxpc2VkXCI7XG4gICAgICAgIFwib2NhbWwudGFpbGNhbGxcIjtcbiAgICAgICAgXCJvY2FtbC50ZXh0XCI7XG4gICAgICAgIFwib2NhbWwudW5ib3hlZFwiO1xuICAgICAgICBcIm9jYW1sLnVucm9sbFwiO1xuICAgICAgICBcIm9jYW1sLnVucm9sbGVkXCI7XG4gICAgICAgIFwib2NhbWwudW50YWdnZWRcIjtcbiAgICAgICAgXCJvY2FtbC53YXJuX29uX2xpdGVyYWxfcGF0dGVyblwiO1xuICAgICAgICBcIm9jYW1sLndhcm5lcnJvclwiO1xuICAgICAgICBcIm9jYW1sLndhcm5pbmdcIjtcbiAgICAgICAgXCJvY2FtbC50b3BsZXZlbF9wcmludGVyXCIgKCpJbnRlcnByZXRlZCBieSB0aGUgdG9wbGV2ZWwvdXRvcCopO1xuICAgICAgICBcInRvcGxldmVsX3ByaW50ZXJcIiAoKkludGVycHJldGVkIGJ5IHRoZSB0b3BsZXZlbC91dG9wKik7XG4gICAgICBdXG5cbiAgKCogQWxsb3cgbGlzdCB0aGUgZm9sbG93aW5nIGV4dGVuc2lvbnMuXG5cbiAgICAgU2luY2UgdGhlc2UgZXh0ZW5zaW9ucyBhcmUgaW50ZXJwcmV0ZWQgYnkgdGhlIGNvbXBpbGVyIGl0c2VsZiwgd2UgY2Fubm90IGNoZWNrXG4gICAgIGF0IHRoZSBsZXZlbCBvZiBhIHBweCByZXdyaXRlciB0aGF0IHRoZXkgaGF2ZSBiZWVuIHByb3Blcmx5IGludGVycHJldGVkLCBzb1xuICAgICB3ZSBqdXN0IGFjY2VwdCB0aGVtIGFueXdoZXJlLlxuICAqKVxuICBsZXQgZXh0ZW5zaW9ucyA9IGNyZWF0ZV9zZXQgWyBcIm9jYW1sLmVycm9yXCI7IFwib2NhbWwuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCIgXVxuXG4gIGxldCBpc19hbGxvd2xpc3RlZCB+a2luZCBuYW1lID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IGBBdHRyaWJ1dGUgLT4gU3RyaW5nLlNldC5tZW0gbmFtZSBhdHRyaWJ1dGVzXG4gICAgfCBgRXh0ZW5zaW9uIC0+IFN0cmluZy5TZXQubWVtIG5hbWUgZXh0ZW5zaW9uc1xuXG4gIGxldCBnZXRfYXR0cmlidXRlX2xpc3QgKCkgPSBTdHJpbmcuU2V0LmVsZW1lbnRzIGF0dHJpYnV0ZXNcbiAgbGV0IGdldF9leHRlbnNpb25fbGlzdCAoKSA9IFN0cmluZy5TZXQuZWxlbWVudHMgZXh0ZW5zaW9uc1xuZW5kXG5cbm1vZHVsZSBSZXNlcnZlZF9uYW1lc3BhY2VzID0gc3RydWN0XG4gIHR5cGUgcmVzZXJ2ZWQgPSAoc3RyaW5nLCBzdWJfbmFtZXNwYWNlcykgSGFzaHRibC50XG4gIGFuZCBzdWJfbmFtZXNwYWNlcyA9IEFsbCB8IFN1Yl9uYW1lc3BhY2VzIG9mIHJlc2VydmVkXG5cbiAgKCogSWYgW3RibF0gY29udGFpbnMgYSBtYXBwaW5nIGZyb20gXCJ4XCIgdG8gW0FsbF0sIHRoZW4gXCJ4XCIgYW5kIGFsbCBwYXRocyB0aGF0XG4gICAqIHN0YXJ0IHdpdGggXCJ4LlwiIGFyZSByZXNlcnZlZCB3aXRoIHJlc3BlY3QgdG8gW3RibF1cbiAgICpcbiAgICogSWYgW3RibF0gY29udGFpbnMgYSBtYXBwaW5nIGZyb20gXCJ4XCIgdG8gW1N1Yl9uYW1lc3BhY2VzIHRibCddLCBhbmQgUCBpc1xuICAgKiByZXNlcnZlZCB3aXRoIHJlc3BlY3QgdG8gW3RibCddLCB0aGVuIGFsbCBwYXRocyBcInguUFwiIGFyZSByZXNlcnZlZCB3aXRoXG4gICAqIHJlc3BlY3QgdG8gW3RibF0uXG4gICAqKVxuICBsZXQgY3JlYXRlX3Jlc2VydmVkICgpIDogcmVzZXJ2ZWQgPSBIYXNodGJsLmNyZWF0ZSAxNlxuXG4gIGxldCByZWMgcmVzZXJ2ZSBucyB0YmwgPVxuICAgIG1hdGNoIHNwbGl0X291dGVyX25hbWVzcGFjZSBucyB3aXRoXG4gICAgfCBOb25lIC0+IEhhc2h0YmwuYWRkX2V4biB0YmwgfmtleTpucyB+ZGF0YTpBbGxcbiAgICB8IFNvbWUgKG91dGVyX25zLCByZXN0X25zKSAtPiAoXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgSGFzaHRibC5maW5kX29yX2FkZCB0Ymwgb3V0ZXJfbnMgfmRlZmF1bHQ6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICBTdWJfbmFtZXNwYWNlcyAoY3JlYXRlX3Jlc2VydmVkICgpKSlcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFN1Yl9uYW1lc3BhY2VzIHJlc3RfdGJsIC0+IHJlc2VydmUgcmVzdF9ucyByZXN0X3RibFxuICAgICAgICB8IEFsbCAtPiAoKSlcblxuICBsZXQgcmVjIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0YmwgPVxuICAgIG1hdGNoIHNwbGl0X291dGVyX25hbWVzcGFjZSBuYW1lIHdpdGhcbiAgICB8IFNvbWUgKG5zLCByZXN0KSAtPiAoXG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgdGJsIG5zIHdpdGhcbiAgICAgICAgfCBTb21lIChTdWJfbmFtZXNwYWNlcyByZXN0X3RibCkgLT5cbiAgICAgICAgICAgIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgcmVzdCByZXN0X3RibFxuICAgICAgICB8IFNvbWUgQWxsIC0+IHRydWVcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlKVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgdGJsIG5hbWUgd2l0aFxuICAgICAgICB8IFNvbWUgQWxsIC0+IHRydWVcbiAgICAgICAgfCBTb21lIChTdWJfbmFtZXNwYWNlcyBfKSB8IE5vbmUgLT4gZmFsc2UpXG5cbiAgbGV0IHRibCA9IGNyZWF0ZV9yZXNlcnZlZCAoKVxuICBsZXQgcmVzZXJ2ZSBucyA9IHJlc2VydmUgbnMgdGJsXG4gIGxldCBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgPSBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgdGJsXG4gIGxldCAoKSA9IHJlc2VydmUgXCJtZXJsaW5cIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicmVhc29uXCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInJlZm10XCIgKCogcmVhc29uICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJuc1wiICgqIHJlc2NyaXB0ICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJyZXNcIiAoKiByZXNjcmlwdCAqKVxuICBsZXQgKCkgPSByZXNlcnZlIFwibWV0YW9jYW1sXCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm9jYW1sZm9ybWF0XCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInBweGxpYi5taWdyYXRpb25cIlxuXG4gIGxldCBjaGVja19ub3RfcmVzZXJ2ZWQgfmtpbmQgbmFtZSA9XG4gICAgbGV0IGtpbmQsIGxpc3QgPVxuICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICB8IGBBdHRyaWJ1dGUgLT4gKFwiYXR0cmlidXRlXCIsIEFsbG93bGlzdGVkLmF0dHJpYnV0ZXMpXG4gICAgICB8IGBFeHRlbnNpb24gLT4gKFwiZXh0ZW5zaW9uXCIsIEFsbG93bGlzdGVkLmV4dGVuc2lvbnMpXG4gICAgaW5cbiAgICBpZiBTdHJpbmcuU2V0Lm1lbSBuYW1lIGxpc3QgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICAgIFwiQ2Fubm90IHJlZ2lzdGVyICVzIHdpdGggbmFtZSAnJXMnIGFzIGl0IG1hdGNoZXMgYW4gJXMgcmVzZXJ2ZWQgYnkgdGhlIFxcXG4gICAgICAgICBjb21waWxlclwiXG4gICAgICAgIGtpbmQgbmFtZSBraW5kXG4gICAgZWxzZSBpZiBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICAgIFwiQ2Fubm90IHJlZ2lzdGVyICVzIHdpdGggbmFtZSAnJXMnIGFzIGl0cyBuYW1lc3BhY2UgaXMgbWFya2VkIGFzIFxcXG4gICAgICAgICByZXNlcnZlZFwiXG4gICAgICAgIGtpbmQgbmFtZVxuZW5kXG5cbmxldCBpZ25vcmVfY2hlY2tzIG5hbWUgPVxuICBSZXNlcnZlZF9uYW1lc3BhY2VzLmlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZVxuICB8fCBTdHJpbmcuaXNfcHJlZml4IG5hbWUgfnByZWZpeDpcIl9cIlxuXG5tb2R1bGUgUmVnaXN0cmFyID0gc3RydWN0XG4gIHR5cGUgZWxlbWVudCA9IHsgZnVsbHlfcXVhbGlmaWVkX25hbWUgOiBzdHJpbmc7IGRlY2xhcmVkX2F0IDogQ2FsbGVyX2lkLnQgfVxuICB0eXBlIGFsbF9mb3JfY29udGV4dCA9IHsgbXV0YWJsZSBhbGwgOiBlbGVtZW50IFN0cmluZy5NYXAudCB9XG5cbiAgdHlwZSAnYSB0ID0ge1xuICAgIGFsbF9ieV9jb250ZXh0IDogKCdhLCBhbGxfZm9yX2NvbnRleHQpIEhhc2h0YmwudDtcbiAgICBza2lwIDogc3RyaW5nIGxpc3Q7XG4gICAga2luZCA6IHN0cmluZztcbiAgICBzdHJpbmdfb2ZfY29udGV4dCA6ICdhIC0+IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgY3JlYXRlIH5raW5kIH5jdXJyZW50X2ZpbGUgfnN0cmluZ19vZl9jb250ZXh0ID1cbiAgICB7XG4gICAgICBhbGxfYnlfY29udGV4dCA9IEhhc2h0YmwuY3JlYXRlIDE2O1xuICAgICAgc2tpcCA9IFsgY3VycmVudF9maWxlOyBfX0ZJTEVfXyBdO1xuICAgICAga2luZDtcbiAgICAgIHN0cmluZ19vZl9jb250ZXh0O1xuICAgIH1cblxuICBsZXQgZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgPVxuICAgIEhhc2h0YmwuZmluZF9vcl9hZGQgdC5hbGxfYnlfY29udGV4dCBjb250ZXh0IH5kZWZhdWx0OihmdW4gKCkgLT5cbiAgICAgICAgeyBhbGwgPSBTdHJpbmcuTWFwLmVtcHR5IH0pXG5cbiAgbGV0IGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBuYW1lID1cbiAgICBtYXRjaCBTdHJpbmcuTWFwLmZpbmRfb3B0IG5hbWUgYWxsX2Zvcl9jb250ZXh0LmFsbCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGUgLT5cbiAgICAgICAgbGV0IGRlY2xhcmVkX2F0ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSAobG9jIDogU3RkbGliLlByaW50ZXhjLmxvY2F0aW9uKSAtPlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIiBkZWNsYXJlZCBhdCAlczolZFwiIGxvYy5maWxlbmFtZSBsb2MubGluZV9udW1iZXJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvbnRleHQgPVxuICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY29udGV4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICB8IFNvbWUgcyAtPiBcIiBvbiBcIiBeIHMgXiBcInNcIlxuICAgICAgICBpblxuICAgICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgICBcIlNvbWUgcHB4LWVzIHRyaWVkIHRvIHJlZ2lzdGVyIGNvbmZsaWN0aW5nIHRyYW5zZm9ybWF0aW9uczogJXMgXFxcbiAgICAgICAgICAgJyVzJyVzJXMgbWF0Y2hlcyAlcyAnJXMnJXNcIlxuICAgICAgICAgIChTdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaSB0LmtpbmQpXG4gICAgICAgICAgbmFtZSBjb250ZXh0IChkZWNsYXJlZF9hdCBjYWxsZXIpIHQua2luZCBlLmZ1bGx5X3F1YWxpZmllZF9uYW1lXG4gICAgICAgICAgKGRlY2xhcmVkX2F0IGUuZGVjbGFyZWRfYXQpXG5cbiAgbGV0IGNoZWNrX2NvbGxpc2lvbnMgdCBjb250ZXh0IG5hbWUgPVxuICAgIGxldCBjYWxsZXIgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOnQuc2tpcCBpblxuICAgIGxldCBhbGxfZm9yX2NvbnRleHQgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBuYW1lXG5cbiAgbGV0IHJlZ2lzdGVyIH5raW5kIHQgY29udGV4dCBuYW1lID1cbiAgICBSZXNlcnZlZF9uYW1lc3BhY2VzLmNoZWNrX25vdF9yZXNlcnZlZCB+a2luZCBuYW1lO1xuICAgIGxldCBjYWxsZXIgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOnQuc2tpcCBpblxuICAgIGxldCBhbGwgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0OmFsbCB0IGNvbnRleHQgbmFtZTtcbiAgICBsZXQgdCA9IHsgZnVsbHlfcXVhbGlmaWVkX25hbWUgPSBuYW1lOyBkZWNsYXJlZF9hdCA9IGNhbGxlciB9IGluXG4gICAgYWxsLmFsbCA8LVxuICAgICAgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDphbGwuYWxsIH5mOihmdW4gbmFtZSBhY2MgLT5cbiAgICAgICAgICBTdHJpbmcuTWFwLmFkZCBuYW1lIHQgYWNjKVxuXG4gIGxldCBzcGVsbGNoZWNrIHQgY29udGV4dCA/KGFsbG93bGlzdCA9IFtdKSBuYW1lID1cbiAgICBsZXQgYWxsX2Zvcl9jb250ZXh0ID0gZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgaW5cbiAgICBsZXQgYWxsID1cbiAgICAgIFN0cmluZy5NYXAuZm9sZCAoZnVuIGtleSBfIGFjYyAtPiBrZXkgOjogYWNjKSBhbGxfZm9yX2NvbnRleHQuYWxsIFtdXG4gICAgaW5cbiAgICBtYXRjaCBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKGFsbCBAIGFsbG93bGlzdCkgbmFtZSB3aXRoXG4gICAgfCBTb21lIF8gYXMgeCAtPiB4XG4gICAgfCBOb25lIHdoZW4gU3RyaW5nLk1hcC5tZW0gbmFtZSBhbGxfZm9yX2NvbnRleHQuYWxsIC0+IE5vbmVcbiAgICB8IE5vbmUgLT4gKFxuICAgICAgICBsZXQgb3RoZXJfY29udGV4dHMgPVxuICAgICAgICAgIEhhc2h0YmwuZm9sZFxuICAgICAgICAgICAgKGZ1biBjdHggYWxsX2Zyb21fY29udGV4dCBhY2MgLT5cbiAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICBQb2x5LiggPD4gKSBjb250ZXh0IGN0eFxuICAgICAgICAgICAgICAgICYmIFN0cmluZy5NYXAubWVtIG5hbWUgYWxsX2Zyb21fY29udGV4dC5hbGxcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY3R4IHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBTb21lIHMgLT4gKHMgXiBcInNcIikgOjogYWNjXG4gICAgICAgICAgICAgIGVsc2UgYWNjKVxuICAgICAgICAgICAgdC5hbGxfYnlfY29udGV4dCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHBfdGV4dCA9IEZvcm1hdC5wcF9wcmludF90ZXh0IGluXG4gICAgICAgIGxldCBjdXJyZW50X2NvbnRleHQgcHBmID1cbiAgICAgICAgICBtYXRjaCB0LnN0cmluZ19vZl9jb250ZXh0IGNvbnRleHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSB8IFNvbWUgXCJcIiAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgIGxldCBhX29yX2FuID1cbiAgICAgICAgICAgICAgICBtYXRjaCBzLlswXSB3aXRoXG4gICAgICAgICAgICAgICAgfCAnYScgfCAnZScgfCAnaScgfCAnbycgfCAndScgfCAneScgLT4gXCJhblwiXG4gICAgICAgICAgICAgICAgfCBfIC0+IFwiYVwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZlxuICAgICAgICAgICAgICAgIFwiQCBidXRAIGlzQCB1c2VkQCBoZXJlQCBpbkAgdGhlQCBjb250ZXh0QCBvZkAgJXNAICVhXCIgYV9vcl9hblxuICAgICAgICAgICAgICAgIHBwX3RleHQgc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIExpc3Quc29ydCB+Y21wOihmdW4geCB5IC0+IC1TdHJpbmcuY29tcGFyZSB4IHkpIG90aGVyX2NvbnRleHRzXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgIHwgWyBjIF0gLT5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkBbSGludDpAIGAlcydAIGlzQCBhdmFpbGFibGVAIGZvckAgJWEldC5AXUBcXG5cXFxuICAgICAgICAgICAgICAgICAgRGlkIHlvdSBwdXQgaXQgYXQgdGhlIHdyb25nIGxldmVsP1wiIG5hbWUgcHBfdGV4dCBjXG4gICAgICAgICAgICAgICAgIGN1cnJlbnRfY29udGV4dClcbiAgICAgICAgfCBsYXN0IDo6IHJldl9vdGhlcnMgLT5cbiAgICAgICAgICAgIGxldCBvdGhlcnMgPSBMaXN0LnJldiByZXZfb3RoZXJzIGluXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJAW0hpbnQ6QCBgJXMnQCBpc0AgYXZhaWxhYmxlQCBmb3JAICVhQCBhbmRAICVhJXQuQF1AXFxuXFxcbiAgICAgICAgICAgICAgICAgIERpZCB5b3UgcHV0IGl0IGF0IHRoZSB3cm9uZyBsZXZlbD9cIiBuYW1lXG4gICAgICAgICAgICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdCBwcF90ZXh0IH5wcF9zZXA6KGZ1biBwcGYgKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIsQCBcIikpXG4gICAgICAgICAgICAgICAgIG90aGVycyBwcF90ZXh0IGxhc3QgY3VycmVudF9jb250ZXh0KSlcblxuICBtb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgICAoKiBUT0RPOiBoaW50IHNwZWxsaW5nIGVycm9ycyByZWdhcmRpbmcgcmVzZXJ2ZWQgbmFtZXNwYWNlcyBuYW1lcyBhbmQgYWxsb3dsaXN0ZWRcbiAgICAgICBuYW1lcyBpbnN0ZWFkIG9mIHRha2luZyBhbiBvcHRpb25hbCBbYWxsb3dsaXN0XSBwYXJhbWV0ZXIuICopXG4gICAgbGV0IGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IChuYW1lIDogc3RyaW5nIExvYy50KSA9XG4gICAgICBQcmludGYua3NwcmludGZcbiAgICAgICAgKGZ1biBtc2cgLT5cbiAgICAgICAgICBtYXRjaCBzcGVsbGNoZWNrIHQgY29udGV4dCBuYW1lLnR4dCA/YWxsb3dsaXN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jIFwiJXNcIiBtc2dcbiAgICAgICAgICB8IFNvbWUgcyAtPiBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCIlcy5cXG4lc1wiIG1zZyBzKVxuICAgICAgICBmbXQgbmFtZS50eHRcblxuICAgIGxldCByYWlzZV9lcnJvcmYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IChuYW1lIDogc3RyaW5nIExvYy50KSA9XG4gICAgICBMb2NhdGlvbi5FcnJvci5yYWlzZSBAQCBjcmVhdGVmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCBuYW1lXG5cbiAgICBsZXQgZXJyb3JfZXh0ZW5zaW9uZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBAQCBjcmVhdGVmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCBuYW1lXG4gIGVuZFxuXG4gIGxldCByYWlzZV9lcnJvcmYgPSBFcnJvci5yYWlzZV9lcnJvcmZcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcbm1vZHVsZSBCdWZmZXIgPSBTdGRsaWIuQnVmZmVyXG5tb2R1bGUgRm9ybWF0ID0gU3RkbGliLkZvcm1hdFxuXG5sZXQgbGlkZW50IHggPSBMb25naWRlbnQuTGlkZW50IHhcblxubGV0IGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkID1cbiAgbGV0IGxvYyA9IHRkLnB0eXBlX25hbWUubG9jIGluXG4gIHB0eXBfY29uc3RyIH5sb2NcbiAgICAoTG9jYXRlZC5tYXAgbGlkZW50IHRkLnB0eXBlX25hbWUpXG4gICAgKExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+Zjpmc3QpXG5cbmxldCBzdHJpcF9nZW5fc3ltYm9sX3N1ZmZpeCA9XG4gIGxldCBjaG9wIG4gfm9yX21vcmUgc3RyaW5nIHBvcyBmID1cbiAgICBsZXQgdGFyZ2V0ID0gIXBvcyAtIG4gaW5cbiAgICB3aGlsZSAhcG9zID4gMCAmJiAob3JfbW9yZSB8fCAhcG9zID4gdGFyZ2V0KSAmJiBmIHN0cmluZy5bIXBvcyAtIDFdIGRvXG4gICAgICBwb3MgOj0gIXBvcyAtIDFcbiAgICBkb25lO1xuICAgICFwb3MgPD0gdGFyZ2V0XG4gIGluXG4gIGZ1biBzdHJpbmcgLT5cbiAgICBsZXQgcG9zID0gcmVmIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBpZlxuICAgICAgY2hvcCAxIH5vcl9tb3JlOmZhbHNlIHN0cmluZyBwb3MgKENoYXIuZXF1YWwgJ18nKVxuICAgICAgJiYgY2hvcCAzIH5vcl9tb3JlOnRydWUgc3RyaW5nIHBvcyAoZnVuY3Rpb25cbiAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgJiYgY2hvcCAyIH5vcl9tb3JlOmZhbHNlIHN0cmluZyBwb3MgKENoYXIuZXF1YWwgJ18nKVxuICAgIHRoZW4gU3RyaW5nLnByZWZpeCBzdHJpbmcgIXBvc1xuICAgIGVsc2Ugc3RyaW5nXG5cbmxldCBnZW5fc3ltYm9sID1cbiAgbGV0IGNudCA9IHJlZiAwIGluXG4gIGZ1biA/KHByZWZpeCA9IFwiX3hcIikgKCkgLT5cbiAgICBjbnQgOj0gIWNudCArIDE7XG4gICAgbGV0IHByZWZpeCA9IHN0cmlwX2dlbl9zeW1ib2xfc3VmZml4IHByZWZpeCBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXNfXyUwM2lfXCIgcHJlZml4ICFjbnRcblxubGV0IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGRfcmVzICh0ZCA6IHR5cGVfZGVjbGFyYXRpb24pIDpcbiAgICAodHlwZV9kZWNsYXJhdGlvbiwgXykgcmVzdWx0ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBwcmVmaXhfc3RyaW5nIGkgPVxuICAgICgqIGEsIGIsIC4uLiwgeSwgeiwgYWEsIGJiLCAuLi4gKilcbiAgICBTdHJpbmcubWFrZSAoKGkgLyAyNikgKyAxKSAoQ2hhci5jaHIgKENoYXIuY29kZSAnYScgKyAoaSBtb2QgMjYpKSlcbiAgaW5cbiAgbGV0IG5hbWVfcGFyYW0gaSAodHAsIHZhcmlhbmNlKSA9XG4gICAgKG1hdGNoIHRwLnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2FueSAtPiBPayAoUHR5cF92YXIgKGdlbl9zeW1ib2wgfnByZWZpeDoocHJlZml4X3N0cmluZyBpKSAoKSkpXG4gICAgfCBQdHlwX3ZhciBfIGFzIHYgLT4gT2sgdlxuICAgIHwgXyAtPlxuICAgICAgICBFcnJvciAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOnRwLnB0eXBfbG9jIFwibm90IGEgdHlwZSBwYXJhbWV0ZXJcIikpXG4gICAgPj58IGZ1biBwdHlwX2Rlc2MgLT4gKHsgdHAgd2l0aCBwdHlwX2Rlc2MgfSwgdmFyaWFuY2UpXG4gIGluXG4gIGxldCBwdHlwZV9wYXJhbXMsIGVycm9ycyA9XG4gICAgdGQucHR5cGVfcGFyYW1zIHw+IExpc3QubWFwaSB+ZjpuYW1lX3BhcmFtXG4gICAgfD4gTGlzdC5wYXJ0aXRpb25fbWFwIChmdW5jdGlvblxuICAgICAgICAgfCBPayBvIC0+IEVpdGhlci5MZWZ0IG9cbiAgICAgICAgIHwgRXJyb3IgZSAtPiBFaXRoZXIuUmlnaHQgZSlcbiAgaW5cbiAgbWF0Y2ggZXJyb3JzIHdpdGggW10gLT4gT2sgeyB0ZCB3aXRoIHB0eXBlX3BhcmFtcyB9IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKVxuXG5sZXQgbmFtZV90eXBlX3BhcmFtc19pbl90ZCAodGQgOiB0eXBlX2RlY2xhcmF0aW9uKSA6IHR5cGVfZGVjbGFyYXRpb24gPVxuICBtYXRjaCBuYW1lX3R5cGVfcGFyYW1zX2luX3RkX3JlcyB0ZCB3aXRoXG4gIHwgT2sgcmVzIC0+IHJlc1xuICB8IEVycm9yIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmYgPVxuICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gIGxldCByZXN1bHRfdHlwZSA9XG4gICAgZiB+bG9jOnRkLnB0eXBlX25hbWUubG9jIChjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZClcbiAgaW5cbiAgTGlzdC5mb2xkX3JpZ2h0IHRkLnB0eXBlX3BhcmFtcyB+aW5pdDpyZXN1bHRfdHlwZVxuICAgIH5mOihmdW4gKHRwLCBfdmFyaWFuY2UpIGFjYyAtPlxuICAgICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgICBwdHlwX2Fycm93IH5sb2MgTm9sYWJlbCAoZiB+bG9jIHRwKSBhY2MpXG5cbmxldCBzdHJpbmdfb2ZfY29yZV90eXBlIGN0ID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gIGxldCBwcGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgUHByaW50YXN0LmNvcmVfdHlwZSBwcGYgY3Q7XG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IGdldF90eXBlX3BhcmFtX25hbWVfcmVzICh0eSwgXykgPVxuICBsZXQgbG9jID0gdHkucHR5cF9sb2MgaW5cbiAgbWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgfCBQdHlwX3ZhciBuYW1lIC0+IE9rIChMb2NhdGVkLm1rIH5sb2MgbmFtZSlcbiAgfCBfIC0+IEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJub3QgYSB0eXBlIHBhcmFtZXRlclwiLCBbXSlcblxubGV0IGdldF90eXBlX3BhcmFtX25hbWUgdCA9XG4gIG1hdGNoIGdldF90eXBlX3BhcmFtX25hbWVfcmVzIHQgd2l0aFxuICB8IE9rIGUgLT4gZVxuICB8IEVycm9yIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5leGNlcHRpb24gVHlwZV9pc19yZWN1cnNpdmVcblxuY2xhc3MgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG4gICAgdmFsIHR5cGVfbmFtZXMgOiBzdHJpbmcgbGlzdCA9IExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+IHRkLnB0eXBlX25hbWUudHh0KVxuICAgIG1ldGhvZCByZXR1cm5fdHJ1ZSAoKSA9IHJhaXNlX25vdHJhY2UgVHlwZV9pc19yZWN1cnNpdmVcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGN0eXBlID1cbiAgICAgIG1hdGNoIGN0eXBlLnB0eXBfZGVzYyB3aXRoXG4gICAgICB8IFB0eXBfYXJyb3cgXyAtPiAoKVxuICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IGlkOyBfIH0sIF8pXG4gICAgICAgIHdoZW4gTGlzdC5tZW0gfnNldDp0eXBlX25hbWVzIGlkIC0+XG4gICAgICAgICAgc2VsZiNyZXR1cm5fdHJ1ZSAoKVxuICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSBjdHlwZVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjZCA9XG4gICAgICAoKiBEb24ndCByZWN1cnNlIHRocm91Z2ggY2QucGNkX3JlcyAqKVxuICAgICAgbWF0Y2ggY2QucGNkX2FyZ3Mgd2l0aFxuICAgICAgfCBQY3N0cl90dXBsZSBhcmdzIC0+IExpc3QuaXRlciBhcmdzIH5mOnNlbGYjY29yZV90eXBlXG4gICAgICB8IFBjc3RyX3JlY29yZCBmaWVsZHMgLT4gTGlzdC5pdGVyIGZpZWxkcyB+ZjpzZWxmI2xhYmVsX2RlY2xhcmF0aW9uXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZXMgXyA9ICgqIERvbid0IHJlY3Vyc2UgdGhyb3VnaCBhdHRyaWJ1dGVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKVxuXG4gICAgbWV0aG9kIGdvICgpID1cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IE5vbnJlY3Vyc2l2ZVxuICAgICAgfCBSZWN1cnNpdmUgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuaXRlciB0ZHMgfmY6c2VsZiN0eXBlX2RlY2xhcmF0aW9uIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBUeXBlX2lzX3JlY3Vyc2l2ZSAtPiBSZWN1cnNpdmVcbiAgICAgICAgICB8ICgpIC0+IE5vbnJlY3Vyc2l2ZSlcbiAgZW5kXG5cbmxldCByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyA9IChuZXcgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzKSNnbyAoKVxubGV0IHJlYyBsYXN0IHggbCA9IG1hdGNoIGwgd2l0aCBbXSAtPiB4IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbmxldCBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBuYW1lIHBheWxvYWQgPVxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBQU3RyIFtdIC0+IG5hbWUubG9jXG4gIHwgUFN0ciAoeCA6OiBsKSAtPiB7IHgucHN0cl9sb2Mgd2l0aCBsb2NfZW5kID0gKGxhc3QgeCBsKS5wc3RyX2xvYy5sb2NfZW5kIH1cbiAgfCBQU2lnIFtdIC0+IG5hbWUubG9jXG4gIHwgUFNpZyAoeCA6OiBsKSAtPiB7IHgucHNpZ19sb2Mgd2l0aCBsb2NfZW5kID0gKGxhc3QgeCBsKS5wc2lnX2xvYy5sb2NfZW5kIH1cbiAgfCBQVHlwIHQgLT4gdC5wdHlwX2xvY1xuICB8IFBQYXQgKHgsIE5vbmUpIC0+IHgucHBhdF9sb2NcbiAgfCBQUGF0ICh4LCBTb21lIGUpIC0+IHsgeC5wcGF0X2xvYyB3aXRoIGxvY19lbmQgPSBlLnBleHBfbG9jLmxvY19lbmQgfVxuXG5sZXQgbG9jX29mX3BheWxvYWQgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgPSBfIH0gPVxuICBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkXG5cbmxldCBsb2Nfb2ZfYXR0cmlidXRlIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jID0gXyB9ID1cbiAgKCogVE9ETzogZml4IHRoaXMgaW4gdGhlIGNvbXBpbGVyLCBhbmQgbW92ZSB0aGUgbG9naWMgdG8gb21wIHdoZW4gY29udmVydGluZ1xuICAgICBmcm9tIG9sZGVyIGFzdHMuICopXG4gICgqIFwib2NhbWwuZG9jXCIgYXR0cmlidXRlcyBhcmUgZ2VuZXJhdGVkIHdpdGggW0xvY2F0aW9uLm5vbmVdLCB3aGljaCBpcyBub3QgaGVscGZ1bCBmb3JcbiAgICAgZXJyb3IgbWVzc2FnZXMuICopXG4gIGlmIFBvbHkuKCA9ICkgYXR0cl9uYW1lLmxvYyBMb2NhdGlvbi5ub25lIHRoZW5cbiAgICBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkXG4gIGVsc2VcbiAgICB7XG4gICAgICBhdHRyX25hbWUubG9jIHdpdGhcbiAgICAgIGxvY19lbmQgPSAobG9jX29mX25hbWVfYW5kX3BheWxvYWQgYXR0cl9uYW1lIGF0dHJfcGF5bG9hZCkubG9jX2VuZDtcbiAgICB9XG5cbmxldCBsb2Nfb2ZfZXh0ZW5zaW9uIChuYW1lLCBwYXlsb2FkKSA9XG4gIGlmIFBvbHkuKCA9ICkgbmFtZS5sb2MgTG9jYXRpb24ubm9uZSB0aGVuIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIG5hbWUgcGF5bG9hZFxuICBlbHNlXG4gICAgeyBuYW1lLmxvYyB3aXRoIGxvY19lbmQgPSAobG9jX29mX25hbWVfYW5kX3BheWxvYWQgbmFtZSBwYXlsb2FkKS5sb2NfZW5kIH1cblxubGV0IGN1cnJ5X2FwcGxpY2F0aW9ucyBleHByID1cbiAgbGV0IG9wZW4gQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk0gaW5cbiAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfYXBwbHkgKGYsIG9yaWdfZm9yd2FyZF9hcmdzKSAtPlxuICAgICAgbGV0IGxvYyA9IGV4cHIucGV4cF9sb2MgaW5cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gZlxuICAgICAgICB8IGxhc3RfYXJnIDo6IHJldl9mcm9udF9hcmdzIC0+XG4gICAgICAgICAgICBwZXhwX2FwcGx5IH5sb2MgKGxvb3AgcmV2X2Zyb250X2FyZ3MpIFsgbGFzdF9hcmcgXVxuICAgICAgaW5cbiAgICAgIGxvb3AgKExpc3QucmV2IG9yaWdfZm9yd2FyZF9hcmdzKVxuICB8IF8gLT4gZXhwclxuXG5sZXQgYXR0cmlidXRlc19lcnJvcnMgPVxuICBMaXN0LmZpbHRlcl9tYXAgfmY6KGZ1bmN0aW9uXG4gICAgfCB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfbG9jID0gXzsgYXR0cl9wYXlsb2FkID0gXyB9XG4gICAgICB3aGVuIE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLkxvY2F0aW9uLnR4dCAtPlxuICAgICAgICBOb25lXG4gICAgfCBhdHRyIC0+XG4gICAgICAgIGxldCBsb2MgPSBsb2Nfb2ZfYXR0cmlidXRlIGF0dHIgaW5cbiAgICAgICAgU29tZSAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiQXR0cmlidXRlcyBub3QgYWxsb3dlZCBoZXJlXCIpKVxuXG5sZXQgY29sbGVjdF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlMC5mb2xkXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgYSBhY2MgPSBhdHRyaWJ1dGVzX2Vycm9ycyBbIGEgXSBAIGFjY1xuICBlbmRcblxubGV0IGFzc2VydF9ub19hdHRyaWJ1dGVzIGwgPVxuICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgYXNzZXJ0X25vX2F0dHJpYnV0ZXNfaW4gPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlclxuICAgIG1ldGhvZCEgYXR0cmlidXRlIGEgPSBhc3NlcnRfbm9fYXR0cmlidXRlcyBbIGEgXVxuICBlbmRcblxubGV0IGF0dHJpYnV0ZV9vZl93YXJuaW5nIGxvYyBzID1cbiAge1xuICAgIGF0dHJfbmFtZSA9IHsgbG9jOyB0eHQgPSBcIm9jYW1sLnBwd2FybmluZ1wiIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2MgcykgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG5sZXQgaXNfcG9seW1vcnBoaWNfdmFyaWFudCA9XG4gIGxldCByZWMgY2hlY2sgPSBmdW5jdGlvblxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhcmlhbnQgXzsgXyB9IC0+IGBEZWZpbml0ZWx5XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKHR5cCwgXyk7IF8gfSAtPiBjaGVjayB0eXBcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgXzsgXyB9IC0+IGBNYXliZVxuICAgIHwgXyAtPiBgU3VyZWx5X25vdFxuICAgICgqIFR5cGUgdmFycyBnbyBoZXJlIGV2ZW4gdGhvdWdoIHRoZXkgY291bGQgYmUgcG9seW1vcnBoaWNcbiAgICAgICB2YXJpYW50cywgaG93ZXZlciB3ZSBkb24ndCBoYW5kbGUgaXQgaWYgdGhleSBnZXQgc3Vic3RpdHV0ZWRcbiAgICAgICBieSBhIHBvbHltb3JwaGljIHZhcmlhbnQgdGhhdCBpcyB0aGVuIGluY2x1ZGVkLiAqKVxuICBpblxuICBmdW4gdGQgfnNpZ18gLT5cbiAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICB8IFB0eXBlX3ZhcmlhbnQgXyB8IFB0eXBlX3JlY29yZCBfIHwgUHR5cGVfb3BlbiAtPiBgU3VyZWx5X25vdFxuICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKFxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpZiBzaWdfIHRoZW4gYE1heWJlIGVsc2UgYFN1cmVseV9ub3RcbiAgICAgICAgfCBTb21lIHR5cCAtPiBjaGVjayB0eXApXG5cbmxldCBta19uYW1lZF9zaWcgfmxvYyB+c2dfbmFtZSB+aGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQgPSBmdW5jdGlvblxuICB8IFsgdGQgXVxuICAgIHdoZW4gU3RyaW5nLmVxdWFsIHRkLnB0eXBlX25hbWUudHh0IFwidFwiICYmIExpc3QuaXNfZW1wdHkgdGQucHR5cGVfY3N0cnMgLT5cbiAgICAgIGlmXG4gICAgICAgIChub3QgaGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQpXG4gICAgICAgICYmIFBvbHkuKCA9ICkgKGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgdGQgfnNpZ186dHJ1ZSkgYERlZmluaXRlbHlcbiAgICAgIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgYXJpdHkgPSBMaXN0Lmxlbmd0aCB0ZC5wdHlwZV9wYXJhbXMgaW5cbiAgICAgICAgaWYgYXJpdHkgPj0gNCB0aGVuIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtdHkgPVxuICAgICAgICAgICAgaWYgYXJpdHkgPSAwIHRoZW4gc2dfbmFtZSBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJXMlZFwiIHNnX25hbWUgYXJpdHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICAgICAgICBsZXQgZm9yX3N1YnN0ID1cbiAgICAgICAgICAgIEFzdF9oZWxwZXIuVHlwZS5tayB+bG9jIHRkLnB0eXBlX25hbWUgfnBhcmFtczp0ZC5wdHlwZV9wYXJhbXNcbiAgICAgICAgICAgICAgfm1hbmlmZXN0OlxuICAgICAgICAgICAgICAgIChwdHlwX2NvbnN0ciB+bG9jXG4gICAgICAgICAgICAgICAgICAgKExvY2F0ZWQubWFwX2xpZGVudCB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcCB+Zjpmc3QgdGQucHR5cGVfcGFyYW1zKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChpbmNsdWRlX2luZm9zIH5sb2NcbiAgICAgICAgICAgICAgIChwbXR5X3dpdGggfmxvY1xuICAgICAgICAgICAgICAgICAgKHBtdHlfaWRlbnQgfmxvYyAoTG9jYXRlZC5saWRlbnQgbXR5IH5sb2MpKVxuICAgICAgICAgICAgICAgICAgWyBQd2l0aF90eXBlc3Vic3QgKExvY2F0ZWQubGlkZW50IH5sb2MgXCJ0XCIsIGZvcl9zdWJzdCkgXSkpXG4gIHwgXyAtPiBOb25lXG5cbmxldCBleG5fdG9fbG9jX2Vycm9yIGV4biA9XG4gIG1hdGNoIExvY2F0aW9uLkVycm9yLm9mX2V4biBleG4gd2l0aCBTb21lIGVycm9yIC0+IGVycm9yIHwgTm9uZSAtPiByYWlzZSBleG5cblxubW9kdWxlIFdpdGhfZXJyb3JzID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhICogTG9jYXRpb24uRXJyb3IudCBsaXN0XG5cbiAgbGV0IHJldHVybiBlID0gKGUsIFtdKVxuXG4gIGxldCAoID4+PSApICh4LCBlcnJvcnMxKSBmID1cbiAgICBsZXQgeSwgZXJyb3JzMiA9IGYgeCBpblxuICAgICh5LCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICBsZXQgKCA+PnwgKSAoeCwgZXJyb3JzKSBmID0gKGYgeCwgZXJyb3JzKVxuXG4gIGxldCBvZl9yZXN1bHQgcmVzdWx0IH5kZWZhdWx0ID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgT2sgeCAtPiAoeCwgW10pXG4gICAgfCBFcnJvciBlcnJvcnMgLT4gKGRlZmF1bHQsIE5vbkVtcHR5TGlzdC50b19saXN0IGVycm9ycylcblxuICBsZXQgY29tYmluZV9lcnJvcnMgbGlzdCA9IChMaXN0Lm1hcCBsaXN0IH5mOmZzdCwgTGlzdC5jb25jYXRfbWFwIGxpc3QgfmY6c25kKVxuZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBBc3RfcGF0dGVybjBcbmxldCBub2xhYmVsID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbGFiZWwgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vbGFiZWxcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBsYWJlbGxlZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTGFiZWxsZWQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxhYmVsbGVkXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBvcHRpb25hbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgT3B0aW9uYWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk9wdGlvbmFsXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBhdHRyaWJ1dGUgfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfnBheWxvYWQ6KFQgcGF5bG9hZCkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IG5hbWUgY3R4ICh4LmF0dHJfbmFtZSkubG9jICh4LmF0dHJfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwYXlsb2FkIGN0eCBsb2MgeC5hdHRyX3BheWxvYWQgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgYmluZGluZ19vcCB+b3A6KFQgb3ApICA9XG4gICgoZnVuIH5wYXQ6KFQgcGF0KSAtPlxuICAgICAgKChmdW4gfmV4cDooVCBleHApIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBvcCBjdHggKHgucGJvcF9vcCkubG9jICh4LnBib3Bfb3ApLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHBhdCBjdHggbG9jIHgucGJvcF9wYXQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBleHAgY3R4IGxvYyB4LnBib3BfZXhwIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNhc2UgfmxoczooVCBsaHMpICA9XG4gICgoZnVuIH5ndWFyZDooVCBndWFyZCkgLT5cbiAgICAgICgoZnVuIH5yaHM6KFQgcmhzKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gbGhzIGN0eCBsb2MgeC5wY19saHMgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBndWFyZCBjdHggbG9jIHgucGNfZ3VhcmQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSByaHMgY3R4IGxvYyB4LnBjX3JocyBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY2xfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY2xfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjbF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY2xfY29uc3RyIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9zdHJ1Y3R1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cnVjdHVyZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjbF9mdW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICAoKGZ1biAoVCBmMykgLT5cbiAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9hcHBseSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcHBseVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY2xfbGV0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY2xfY29uc3RyYWludCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNsX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNsX29wZW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjZl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjZl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjZl9pbmhlcml0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluaGVyaXRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjZl92YWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjZl92YWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjZl9tZXRob2QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjZl9tZXRob2QgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1ldGhvZFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjZl9jb25zdHJhaW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjZl9pbml0aWFsaXplciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbml0aWFsaXplclwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjZl9hdHRyaWJ1dGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjZl9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGNma192aXJ0dWFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBDZmtfdmlydHVhbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmlydHVhbFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY2ZrX2NvbmNyZXRlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IENma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uY3JldGVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBjbGFzc19pbmZvc19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2lfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNpX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNpX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGNsYXNzX2luZm9zIH52aXJ0OihUIHZpcnQpICA9XG4gICgoZnVuIH5wYXJhbXM6KFQgcGFyYW1zKSAtPlxuICAgICAgKChmdW4gfm5hbWU6KFQgbmFtZSkgLT5cbiAgICAgICAgICAoKGZ1biB+ZXhwcjooVCBleHByKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjaV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IHZpcnQgY3R4IGxvYyB4LnBjaV92aXJ0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwYXJhbXMgY3R4IGxvYyB4LnBjaV9wYXJhbXMgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucGNpX25hbWUpLmxvYyAoeC5wY2lfbmFtZSkudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucGNpX2V4cHIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBjbGFzc19zaWduYXR1cmUgfnNlbGY6KFQgc2VsZikgID1cbiAgKChmdW4gfmZpZWxkczooVCBmaWVsZHMpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBzZWxmIGN0eCBsb2MgeC5wY3NpZ19zZWxmIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmaWVsZHMgY3R4IGxvYyB4LnBjc2lnX2ZpZWxkcyBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBjbGFzc19zdHJ1Y3R1cmUgfnNlbGY6KFQgc2VsZikgID1cbiAgKChmdW4gfmZpZWxkczooVCBmaWVsZHMpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBzZWxmIGN0eCBsb2MgeC5wY3N0cl9zZWxmIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmaWVsZHMgY3R4IGxvYyB4LnBjc3RyX2ZpZWxkcyBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY3R5X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdHlfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY3R5X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3R5X2NvbnN0ciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGN0eV9zaWduYXR1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzaWduYXR1cmVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3R5X2Fycm93IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyb3dcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjdHlfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGN0eV9vcGVuIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGN0Zl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3RmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGN0Zl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGN0Zl9pbmhlcml0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluaGVyaXRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3RmX3ZhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGN0Zl92YWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdGZfbWV0aG9kIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX21ldGhvZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWV0aG9kXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGN0Zl9jb25zdHJhaW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3RmX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdGZfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY2xvc2VkID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IENsb3NlZCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ2xvc2VkXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgb3Blbl8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgT3BlbiAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3BlblwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjb25zdF9pbnRlZ2VyIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRlZ2VyXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNvbnN0X2NoYXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBjb25zdF9jaGFyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjaGFyXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY29uc3Rfc3RyaW5nIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cmluZ1wiKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY29uc3RfZmxvYXQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmbG9hdFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjc3RyX3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQY3N0cl90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjc3RyX3JlY29yZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2RfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2RfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfnZhcnM6KFQgdmFycykgLT5cbiAgICAgICgoZnVuIH5hcmdzOihUIGFyZ3MpIC0+XG4gICAgICAgICAgKChmdW4gfnJlczooVCByZXMpIC0+XG4gICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGN0eCAoeC5wY2RfbmFtZSkubG9jICh4LnBjZF9uYW1lKS50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSB2YXJzIGN0eCBsb2MgeC5wY2RfdmFycyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gYXJncyBjdHggbG9jIHgucGNkX2FyZ3MgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHJlcyBjdHggbG9jIHgucGNkX3JlcyBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHR5cF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eXBfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHB0eXBfYW55ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfYW55IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYW55XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB0eXBfdmFyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQdHlwX3ZhciB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cF9hcnJvdyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycm93XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQdHlwX3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB0eXBfY29uc3RyIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0clwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX29iamVjdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9iamVjdFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX2NsYXNzIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cF9hbGlhcyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cF92YXJpYW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX3BvbHkgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicG9seVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX3BhY2thZ2UgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicGFja2FnZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB0eXBfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgdXB0byA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBVcHRvIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJVcHRvXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgZG93bnRvXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBEb3dudG8gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkRvd250b1wiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBkaXJhX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwZGlyX3N0cmluZyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGRpcl9zdHJpbmcgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cmluZ1wiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGRpcl9pbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW50XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGRpcl9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGRpcl9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBkaXJfYm9vbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGRpcl9ib29sIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJib29sXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBleHBfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wZXhwX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwZXhwX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2NvbnN0YW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdGFudFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfbGV0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9mdW5jdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuY3Rpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2Z1biAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgICgoZnVuIChUIGYzKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfYXBwbHkgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfbWF0Y2ggKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1hdGNoXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfdHJ5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHJ5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfdHVwbGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR1cGxlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9jb25zdHJ1Y3QgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RydWN0XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfdmFyaWFudCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfcmVjb3JkIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfZmllbGQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmaWVsZFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3NldGZpZWxkIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNldGZpZWxkXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2FycmF5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2FycmF5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJheVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfaWZ0aGVuZWxzZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWZ0aGVuZWxzZVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9zZXF1ZW5jZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2VxdWVuY2VcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF93aGlsZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwid2hpbGVcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9mb3IgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICAoKGZ1biAoVCBmMykgLT5cbiAgICAgICAgICAgICAgKChmdW4gKFQgZjQpIC0+XG4gICAgICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGY0IGN0eCBsb2MgeDQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZvclwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9jb25zdHJhaW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9jb2VyY2UgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29lcmNlXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3NlbmQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNlbmRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9uZXcgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfbmV3IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibmV3XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9zZXRpbnN0dmFyIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXRpbnN0dmFyXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfb3ZlcnJpZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm92ZXJyaWRlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9sZXRtb2R1bGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldG1vZHVsZVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9sZXRleGNlcHRpb24gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRleGNlcHRpb25cIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9hc3NlcnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhc3NlcnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2xhenkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfbGF6eSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGF6eVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfcG9seSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwb2x5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfb2JqZWN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX29iamVjdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib2JqZWN0XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9uZXd0eXBlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJuZXd0eXBlXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfcGFjayAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9wYWNrIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwYWNrXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9vcGVuIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9sZXRvcCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0b3BcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfdW5yZWFjaGFibGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ1bnJlYWNoYWJsZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBleHRlbnNpb25fY29uc3RydWN0b3JfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGV4dF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wZXh0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBleHRlbnNpb25fY29uc3RydWN0b3Igfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfmtpbmQ6KFQga2luZCkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnBleHRfbmFtZSkubG9jICh4LnBleHRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0ga2luZCBjdHggbG9jIHgucGV4dF9raW5kIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXh0X2RlY2wgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkZWNsXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHRfcmViaW5kIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQZXh0X3JlYmluZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlYmluZFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgdW5pdCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBVbml0IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJVbml0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbmFtZWQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOYW1lZFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGluY2x1ZGVfaW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGluY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGluY2xfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBpbmNsdWRlX2luZm9zIH5tb2RfOihUIG1vZF8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGluY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBtb2RfIGN0eCBsb2MgeC5waW5jbF9tb2QgayBpbiBrKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBpbmplY3RpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgSW5qZWN0aXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJJbmplY3RpdmVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBub2luamVjdGl2aXR5ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vSW5qZWN0aXZpdHkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vSW5qZWN0aXZpdHlcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBsYWJlbF9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbGRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGxkX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGxkX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH5tdXRhYmxlXzooVCBtdXRhYmxlXykgLT5cbiAgICAgICgoZnVuIH50eXBlXzooVCB0eXBlXykgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGN0eCAoeC5wbGRfbmFtZSkubG9jICh4LnBsZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gbXV0YWJsZV8gY3R4IGxvYyB4LnBsZF9tdXRhYmxlIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wbGRfdHlwZSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbGV0b3AgfmxldF86KFQgbGV0XykgID1cbiAgKChmdW4gfmFuZHM6KFQgYW5kcykgLT5cbiAgICAgICgoZnVuIH5ib2R5OihUIGJvZHkpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBsZXRfIGN0eCBsb2MgeC5sZXRfIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gYW5kcyBjdHggbG9jIHguYW5kcyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGJvZHkgY3R4IGxvYyB4LmJvZHkgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbG9jYXRpb24gfnN0YXJ0OihUIHN0YXJ0KSAgPVxuICAoKGZ1biB+ZW5kXzooVCBlbmRfKSAtPlxuICAgICAgKChmdW4gfmdob3N0OihUIGdob3N0KSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gc3RhcnQgY3R4IGxvYyB4LmxvY19zdGFydCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGVuZF8gY3R4IGxvYyB4LmxvY19lbmQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBnaG9zdCBjdHggbG9jIHgubG9jX2dob3N0IGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGxpZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTGlkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMaWRlbnRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGxkb3QgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgTGRvdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGRvdFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGxhcHBseSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBMYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxhcHBseVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IG1vZHVsZV9iaW5kaW5nX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtYl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbWJfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbWJfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX2JpbmRpbmcgfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfmV4cHI6KFQgZXhwcikgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbWJfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1iX25hbWUpLmxvYyAoeC5wbWJfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucG1iX2V4cHIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IG1vZHVsZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbWRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1kX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1kX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+dHlwZV86KFQgdHlwZV8pIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBtZF9uYW1lKS5sb2MgKHgucG1kX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wbWRfdHlwZSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG1vZF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbW9kX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1vZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG1vZF9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG1vZF9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlkZW50XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG1vZF9zdHJ1Y3R1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJ1Y3R1cmVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbW9kX2Z1bmN0b3IgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuY3RvclwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbW9kX2FwcGx5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcHBseVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbW9kX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbW9kX3VucGFjayAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucGFja1wiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtb2RfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbW9kdWxlX3N1YnN0aXR1dGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXNfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1zX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1zX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfm1hbmlmZXN0OihUIG1hbmlmZXN0KSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXNfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1zX25hbWUpLmxvYyAoeC5wbXNfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3QgY3R4ICh4LnBtc19tYW5pZmVzdCkubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHgucG1zX21hbmlmZXN0KS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbXR5X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtdHlfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbXR5X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbXR5X2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbXR5X2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbXR5X3NpZ25hdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNpZ25hdHVyZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtdHlfZnVuY3RvciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdG9yXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtdHlfd2l0aCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ3aXRoXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtdHlfdHlwZW9mIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZW9mXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG10eV9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbXR5X2FsaWFzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbXR5X2FsaWFzIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXRkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtdGRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXRkX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH50eXBlXzooVCB0eXBlXykgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnBtdGRfbmFtZSkubG9jICh4LnBtdGRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnBtdGRfdHlwZSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgaW1tdXRhYmxlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IEltbXV0YWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiSW1tdXRhYmxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbXV0YWJsZV8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTXV0YWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTXV0YWJsZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBvZl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBvZl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG9mX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG9mX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG90YWcgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBvZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPdGFnXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IG9pbmhlcml0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wb2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBPaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT2luaGVyaXRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBvcGVuX2luZm9zX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvcGVuX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBvcGVuX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG9wZW5fYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgb3Blbl9pbmZvcyB+ZXhwcjooVCBleHByKSAgPVxuICAoKGZ1biB+b3ZlcnJpZGU6KFQgb3ZlcnJpZGUpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZXhwciBjdHggbG9jIHgucG9wZW5fZXhwciBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IG92ZXJyaWRlIGN0eCBsb2MgeC5wb3Blbl9vdmVycmlkZSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgb3ZlcnJpZGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgT3ZlcnJpZGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk92ZXJyaWRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgZnJlc2ggPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgRnJlc2ggLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkZyZXNoXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcGF0X2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHBhdF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHBhdF9hbnkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9hbnkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbnlcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF92YXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfdmFyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9hbGlhcyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFsaWFzXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBwYXRfY29uc3RhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0YW50XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9pbnRlcnZhbCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW50ZXJ2YWxcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2NvbnN0cnVjdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJ1Y3RcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF92YXJpYW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF9yZWNvcmQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF9hcnJheSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9hcnJheSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyYXlcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X29yIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvclwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X2NvbnN0cmFpbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2xhenkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfbGF6eSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGF6eVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfdW5wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X3VucGFjayB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucGFja1wiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfZXhjZXB0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXhjZXB0aW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X29wZW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHN0ciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUFN0ciB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFN0clwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUFNpZyB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFNpZ1wiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUFR5cCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFR5cFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQUGF0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQUGF0XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG9zaXRpb24gfmZuYW1lOihUIGZuYW1lKSAgPVxuICAoKGZ1biB+bG51bTooVCBsbnVtKSAtPlxuICAgICAgKChmdW4gfmJvbDooVCBib2wpIC0+XG4gICAgICAgICAgKChmdW4gfmNudW06KFQgY251bSkgLT5cbiAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGZuYW1lIGN0eCBsb2MgeC5wb3NfZm5hbWUgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gbG51bSBjdHggbG9jIHgucG9zX2xudW0gayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gYm9sIGN0eCBsb2MgeC5wb3NfYm9sIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGNudW0gY3R4IGxvYyB4LnBvc19jbnVtIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcml2YXRlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQcml2YXRlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQcml2YXRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHVibGljID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB1YmxpYyAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUHVibGljXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbm9ucmVjdXJzaXZlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9ucmVjdXJzaXZlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcmVjdXJzaXZlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFJlY3Vyc2l2ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUmVjdXJzaXZlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHJmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHJmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wcmZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwcmZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcnRhZyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcmZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnByZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJSdGFnXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCByaW5oZXJpdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcmZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHJmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUmluaGVyaXQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlJpbmhlcml0XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwc2lnX3ZhbHVlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsdWVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfdHlwZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc2lnX3R5cGVzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlc3Vic3RcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfdHlwZXh0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ190eXBleHQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGV4dFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19leGNlcHRpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXhjZXB0aW9uXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfbW9kc3Vic3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2RzdWJzdFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19yZWNtb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjbW9kdWxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX21vZHR5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfbW9kdHlwZXN1YnN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVzdWJzdFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19vcGVuIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19vcGVuIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2luY2x1ZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluY2x1ZGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfY2xhc3MgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX2NsYXNzIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc1wiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19jbGFzc190eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc190eXBlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfZXh0ZW5zaW9uIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBzdHJfZXZhbCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV2YWxcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyX3ZhbHVlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbHVlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHN0cl9wcmltaXRpdmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicHJpbWl0aXZlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX3R5cGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHN0cl90eXBleHQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXh0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfbW9kdWxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHVsZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9yZWNtb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjbW9kdWxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX21vZHR5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfb3BlbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfb3BlbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9jbGFzcyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfY2xhc3MgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2NsYXNzX3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzX3R5cGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfaW5jbHVkZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5jbHVkZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9hdHRyaWJ1dGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2V4dGVuc2lvbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH5hcmc6KFQgYXJnKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gbmFtZSBjdHggKHgucGRpcl9uYW1lKS5sb2MgKHgucGRpcl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGFyZyBjdHggbG9jIHgucGRpcl9hcmcgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHRvcF9kZWYgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB0b3BfZGVmIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkZWZcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB0b3BfZGlyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdG9wX2RpciB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZGlyXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB0eXBlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBlX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eXBlX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5cGVfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+cGFyYW1zOihUIHBhcmFtcykgLT5cbiAgICAgICgoZnVuIH5jc3RyczooVCBjc3RycykgLT5cbiAgICAgICAgICAoKGZ1biB+a2luZDooVCBraW5kKSAtPlxuICAgICAgICAgICAgICAoKGZ1biB+cHJpdmF0ZV86KFQgcHJpdmF0ZV8pIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB+bWFuaWZlc3Q6KFQgbWFuaWZlc3QpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGN0eCAoeC5wdHlwZV9uYW1lKS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHgucHR5cGVfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMgY3R4IGxvYyB4LnB0eXBlX3BhcmFtcyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBjc3RycyBjdHggbG9jIHgucHR5cGVfY3N0cnMgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0ga2luZCBjdHggbG9jIHgucHR5cGVfa2luZCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZV8gY3R4IGxvYyB4LnB0eXBlX3ByaXZhdGUgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0IGN0eCBsb2MgeC5wdHlwZV9tYW5pZmVzdCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCB0eXBlX2V4Y2VwdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlleG5fbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5ZXhuX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5ZXhuX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHR5cGVfZXhjZXB0aW9uIH5jb25zdHJ1Y3RvcjooVCBjb25zdHJ1Y3RvcikgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBjb25zdHJ1Y3RvciBjdHggbG9jIHgucHR5ZXhuX2NvbnN0cnVjdG9yIGsgaW4gaykpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgdHlwZV9leHRlbnNpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5ZXh0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eWV4dF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eWV4dF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB0eXBlX2V4dGVuc2lvbiB+cGF0aDooVCBwYXRoKSAgPVxuICAoKGZ1biB+cGFyYW1zOihUIHBhcmFtcykgLT5cbiAgICAgICgoZnVuIH5jb25zdHJ1Y3RvcnM6KFQgY29uc3RydWN0b3JzKSAtPlxuICAgICAgICAgICgoZnVuIH5wcml2YXRlXzooVCBwcml2YXRlXykgLT5cbiAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoIGN0eCAoeC5wdHlleHRfcGF0aCkubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeC5wdHlleHRfcGF0aCkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwYXJhbXMgY3R4IGxvYyB4LnB0eWV4dF9wYXJhbXMgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3JzIGN0eCBsb2MgeC5wdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcHJpdmF0ZV8gY3R4IGxvYyB4LnB0eWV4dF9wcml2YXRlIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cGVfYWJzdHJhY3QgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFic3RyYWN0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cGVfdmFyaWFudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyaWFudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cGVfcmVjb3JkIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cGVfb3BlbiA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdHlwZV9vcGVuIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgdmFsdWVfYmluZGluZ19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdmJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHZiX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHZiX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHZhbHVlX2JpbmRpbmcgfnBhdDooVCBwYXQpICA9XG4gICgoZnVuIH5leHByOihUIGV4cHIpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IHBhdCBjdHggbG9jIHgucHZiX3BhdCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnB2Yl9leHByIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCB2YWx1ZV9kZXNjcmlwdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdmFsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB2YWxfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdmFsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH50eXBlXzooVCB0eXBlXykgLT5cbiAgICAgICgoZnVuIH5wcmltOihUIHByaW0pIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnB2YWxfbmFtZSkubG9jICh4LnB2YWxfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wdmFsX3R5cGUgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcHJpbSBjdHggbG9jIHgucHZhbF9wcmltIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBjb3ZhcmlhbnQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgQ292YXJpYW50IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDb3ZhcmlhbnRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBjb250cmF2YXJpYW50ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IENvbnRyYXZhcmlhbnQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNvbnRyYXZhcmlhbnRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBub3ZhcmlhbmNlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vVmFyaWFuY2UgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vVmFyaWFuY2VcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB2aXJ0dWFsXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBWaXJ0dWFsIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJWaXJ0dWFsXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY29uY3JldGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgQ29uY3JldGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNvbmNyZXRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHdpdGhfdHlwZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB3aXRoX21vZHVsZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdWxlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHdpdGhfbW9kdHlwZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB3aXRoX21vZHR5cGVzdWJzdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlc3Vic3RcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwd2l0aF90eXBlc3Vic3QgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXN1YnN0XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHdpdGhfbW9kc3Vic3QgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kc3Vic3RcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBc3RfcGF0dGVybjBcblxubGV0IHNhdmVfY29udGV4dCBjdHggPSBjdHgubWF0Y2hlZFxubGV0IHJlc3RvcmVfY29udGV4dCBjdHggYmFja3VwID0gY3R4Lm1hdGNoZWQgPC0gYmFja3VwXG5sZXQgaW5jcl9tYXRjaGVkIGMgPSBjLm1hdGNoZWQgPC0gYy5tYXRjaGVkICsgMVxuXG5sZXQgcGFyc2VfcmVzIChUIGYpIGxvYyA/b25fZXJyb3IgeCBrID1cbiAgdHJ5IE9rIChmIHsgbWF0Y2hlZCA9IDAgfSBsb2MgeCBrKVxuICB3aXRoIEV4cGVjdGVkIChsb2MsIGV4cGVjdGVkKSAtPiAoXG4gICAgbWF0Y2ggb25fZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiBFcnJvciAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiJXMgZXhwZWN0ZWRcIiBleHBlY3RlZCwgW10pXG4gICAgfCBTb21lIGYgLT4gT2sgKGYgKCkpKVxuXG5sZXQgcGFyc2UgKFQgZikgbG9jID9vbl9lcnJvciB4IGsgPVxuICBtYXRjaCBwYXJzZV9yZXMgKFQgZikgbG9jID9vbl9lcnJvciB4IGsgd2l0aFxuICB8IE9rIHIgLT4gclxuICB8IEVycm9yIChyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSByXG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybjAudCAqICdiIC0+ICgnYSwgJ2MpIHRcblxuICBsZXQgY3JlYXRlIHQgZiA9IFQgKHQsIGYpXG4gIGxldCBwYXJzZV9yZXMgKFQgKHQsIGYpKSBsb2MgeCA9IHBhcnNlX3JlcyB0IGxvYyB4IGZcbiAgbGV0IHBhcnNlIChUICh0LCBmKSkgbG9jIHggPSBwYXJzZSB0IGxvYyB4IGZcbmVuZFxuXG5sZXQgX18gPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyB4IGsgLT5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrIHgpXG5cbmxldCBfXycgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGsgeyBsb2M7IHR4dCA9IHggfSlcblxubGV0IGRyb3AgPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyBfIGsgLT5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrKVxuXG5sZXQgYXNfXyAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHggKGsgeCkgaW5cbiAgICAgIGspXG5cbmxldCBjc3QgfnRvX3N0cmluZyA/KGVxdWFsID0gUG9seS5lcXVhbCkgdiA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBpZiBlcXVhbCB4IHYgdGhlbiAoXG4gICAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICAgIGspXG4gICAgICBlbHNlIGZhaWwgbG9jICh0b19zdHJpbmcgdikpXG5cbmxldCBpbnQgdiA9IGNzdCB+dG9fc3RyaW5nOkludC50b19zdHJpbmcgdlxubGV0IGNoYXIgdiA9IGNzdCB+dG9fc3RyaW5nOihQcmludGYuc3ByaW50ZiBcIiVDXCIpIHZcbmxldCBzdHJpbmcgdiA9IGNzdCB+dG9fc3RyaW5nOihQcmludGYuc3ByaW50ZiBcIiVTXCIpIHZcbmxldCBmbG9hdCB2ID0gY3N0IH50b19zdHJpbmc6RmxvYXQudG9fc3RyaW5nIHZcbmxldCBpbnQzMiB2ID0gY3N0IH50b19zdHJpbmc6SW50MzIudG9fc3RyaW5nIHZcbmxldCBpbnQ2NCB2ID0gY3N0IH50b19zdHJpbmc6SW50NjQudG9fc3RyaW5nIHZcbmxldCBuYXRpdmVpbnQgdiA9IGNzdCB+dG9fc3RyaW5nOk5hdGl2ZWludC50b19zdHJpbmcgdlxubGV0IGJvb2wgdiA9IGNzdCB+dG9fc3RyaW5nOkJvb2wudG9fc3RyaW5nIHZcblxubGV0IGJvb2wnIChUIGZ1bmMpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBcInRydWVcIiAtPiBmdW5jIGN0eCBsb2MgdHJ1ZSBrXG4gICAgICB8IFwiZmFsc2VcIiAtPiBmdW5jIGN0eCBsb2MgZmFsc2Uga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQm9vbFwiKVxuXG5sZXQgZmFsc2VfID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmYWxzZVwiKVxuXG5sZXQgdHJ1ZV8gPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHJ1ZVwiKVxuXG5sZXQgbmlsID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJbXVwiKVxuXG5sZXQgKCBeOjogKSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCB4MCA6OiB4MSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiOjpcIilcblxubGV0IG5vbmUgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9uZVwiKVxuXG5sZXQgc29tZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFNvbWUgeDAgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAgbGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJTb21lXCIpXG5cbmxldCBwYWlyIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jICh4MSwgeDIpIGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgaylcblxubGV0ICggKiogKSA9IHBhaXJcblxubGV0IHRyaXBsZSAoVCBmMSkgKFQgZjIpIChUIGYzKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgKHgxLCB4MiwgeDMpIGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW5cbiAgICAgIGspXG5cbmxldCBhbHQgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBsZXQgYmFja3VwID0gc2F2ZV9jb250ZXh0IGN0eCBpblxuICAgICAgdHJ5IGYxIGN0eCBsb2MgeCBrXG4gICAgICB3aXRoIGUxIC0+IChcbiAgICAgICAgbGV0IG0xID0gc2F2ZV9jb250ZXh0IGN0eCBpblxuICAgICAgICByZXN0b3JlX2NvbnRleHQgY3R4IGJhY2t1cDtcbiAgICAgICAgdHJ5IGYyIGN0eCBsb2MgeCBrXG4gICAgICAgIHdpdGggZTIgLT5cbiAgICAgICAgICBsZXQgbTIgPSBzYXZlX2NvbnRleHQgY3R4IGluXG4gICAgICAgICAgaWYgbTEgPj0gbTIgdGhlbiAoXG4gICAgICAgICAgICByZXN0b3JlX2NvbnRleHQgY3R4IG0xO1xuICAgICAgICAgICAgcmFpc2UgZTEpXG4gICAgICAgICAgZWxzZSByYWlzZSBlMikpXG5cbmxldCAoIHx8fCApID0gYWx0XG5sZXQgbWFwIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmIGspKVxubGV0IG1hcCcgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGYgbG9jIGspKVxubGV0IG1hcF9yZXN1bHQgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiAoZnVuYyBjdHggbG9jIHggaykpXG5sZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxubGV0IG1hcDAgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGsgZikpXG5sZXQgbWFwMSAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgLT4gayAoZiBhKSkpXG5cbmxldCBtYXAyIChUIGZ1bmMpIH5mID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSBiIC0+IGsgKGYgYSBiKSkpXG5cbmxldCBtYXAwJyAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoayAoZiBsb2MpKSlcblxubGV0IG1hcDEnIChUIGZ1bmMpIH5mID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSAtPiBrIChmIGxvYyBhKSkpXG5cbmxldCBtYXAyJyAoVCBmdW5jKSB+ZiA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgYiAtPiBrIChmIGxvYyBhIGIpKSlcblxubGV0IG1hcF92YWx1ZSAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgKGYgeCkgaylcbmxldCBtYXBfdmFsdWUnIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyAoZiBsb2MgeCkgaylcblxubGV0IGFsdF9vcHRpb24gc29tZSBub25lID1cbiAgYWx0IChtYXAxIHNvbWUgfmY6KGZ1biB4IC0+IFNvbWUgeCkpIChtYXAwIG5vbmUgfmY6Tm9uZSlcblxubGV0IG1hbnkgKFQgZikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIGwgayAtPlxuICAgICAgbGV0IHJlYyBhdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gayAoTGlzdC5yZXYgYWNjdSlcbiAgICAgICAgfCB4IDo6IHhzIC0+IGYgY3R4IGxvYyB4IChmdW4geCAtPiBhdXggKHggOjogYWNjdSkgeHMpXG4gICAgICBpblxuICAgICAgYXV4IFtdIGwpXG5cbmxldCBsb2MgKFQgZikgPSBUIChmdW4gY3R4IF9sb2MgKHggOiBfIExvYy50KSBrIC0+IGYgY3R4IHgubG9jIHgudHh0IGspXG5sZXQgcGFjazAgdCA9IG1hcCB0IH5mOihmdW4gZiAtPiBmICgpKVxubGV0IHBhY2syIHQgPSBtYXAgdCB+ZjooZnVuIGYgeCB5IC0+IGYgKHgsIHkpKVxubGV0IHBhY2szIHQgPSBtYXAgdCB+ZjooZnVuIGYgeCB5IHogLT4gZiAoeCwgeSwgeikpXG5cbmluY2x1ZGUgQXN0X3BhdHRlcm5fZ2VuZXJhdGVkXG5cbmxldCBlY2hhciB0ID0gcGV4cF9jb25zdGFudCAocGNvbnN0X2NoYXIgdClcbmxldCBlc3RyaW5nIHQgPSBwZXhwX2NvbnN0YW50IChwY29uc3Rfc3RyaW5nIHQgZHJvcCBkcm9wKVxubGV0IGVmbG9hdCB0ID0gcGV4cF9jb25zdGFudCAocGNvbnN0X2Zsb2F0IHQgZHJvcClcbmxldCBwY2hhciB0ID0gcHBhdF9jb25zdGFudCAocGNvbnN0X2NoYXIgdClcbmxldCBwc3RyaW5nIHQgPSBwcGF0X2NvbnN0YW50IChwY29uc3Rfc3RyaW5nIHQgZHJvcCBkcm9wKVxubGV0IHBmbG9hdCB0ID0gcHBhdF9jb25zdGFudCAocGNvbnN0X2Zsb2F0IHQgZHJvcClcbmxldCBpbnQnIChUIGYpID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoaW50X29mX3N0cmluZyB4KSBrKVxubGV0IGludDMyJyAoVCBmKSA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKEludDMyLm9mX3N0cmluZyB4KSBrKVxubGV0IGludDY0JyAoVCBmKSA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKEludDY0Lm9mX3N0cmluZyB4KSBrKVxuXG5sZXQgbmF0aXZlaW50JyAoVCBmKSA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKE5hdGl2ZWludC5vZl9zdHJpbmcgeCkgaylcblxubGV0IGNvbnN0X2ludCB0ID0gcGNvbnN0X2ludGVnZXIgKGludCcgdCkgbm9uZVxubGV0IGNvbnN0X2ludDMyIHQgPSBwY29uc3RfaW50ZWdlciAoaW50MzInIHQpIChzb21lIChjaGFyICdsJykpXG5sZXQgY29uc3RfaW50NjQgdCA9IHBjb25zdF9pbnRlZ2VyIChpbnQ2NCcgdCkgKHNvbWUgKGNoYXIgJ0wnKSlcbmxldCBjb25zdF9uYXRpdmVpbnQgdCA9IHBjb25zdF9pbnRlZ2VyIChuYXRpdmVpbnQnIHQpIChzb21lIChjaGFyICduJykpXG5sZXQgZWludCB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfaW50IHQpXG5sZXQgZWludDMyIHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9pbnQzMiB0KVxubGV0IGVpbnQ2NCB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfaW50NjQgdClcbmxldCBlbmF0aXZlaW50IHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9uYXRpdmVpbnQgdClcbmxldCBwaW50IHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9pbnQgdClcbmxldCBwaW50MzIgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X2ludDMyIHQpXG5sZXQgcGludDY0IHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9pbnQ2NCB0KVxubGV0IHBuYXRpdmVpbnQgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X25hdGl2ZWludCB0KVxubGV0IHNpbmdsZV9leHByX3BheWxvYWQgdCA9IHBzdHIgKHBzdHJfZXZhbCB0IG5pbCBeOjogbmlsKVxubGV0IG5vX2xhYmVsIHQgPSBjc3QgQXN0dHlwZXMuTm9sYWJlbCB+dG9fc3RyaW5nOihmdW4gXyAtPiBcIk5vbGFiZWxcIikgKiogdFxubGV0IGVib29sIHQgPSBwZXhwX2NvbnN0cnVjdCAobGlkZW50IChib29sJyB0KSkgbm9uZVxubGV0IHBib29sIHQgPSBwcGF0X2NvbnN0cnVjdCAobGlkZW50IChib29sJyB0KSkgbm9uZVxuXG5sZXQgZXh0ZW5zaW9uIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jICgobmFtZSA6IF8gTG9jLnQpLCBwYXlsb2FkKSBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBuYW1lLmxvYyBuYW1lLnR4dCBrIGluXG4gICAgICBsZXQgayA9IGYyIGN0eCBsb2MgcGF5bG9hZCBrIGluXG4gICAgICBrKVxuXG5sZXQgcmVjIHBhcnNlX2VsaXN0IChlIDogUGFyc2V0cmVlLmV4cHJlc3Npb24pIGFjYyA9XG4gIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyBlLnBleHBfYXR0cmlidXRlcztcbiAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgTm9uZSkgLT4gTGlzdC5yZXYgYWNjXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LCBTb21lIGFyZykgLT4gKFxuICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIGFyZy5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICBtYXRjaCBhcmcucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF90dXBsZSBbIGhkOyB0bCBdIC0+IHBhcnNlX2VsaXN0IHRsIChoZCA6OiBhY2MpXG4gICAgICB8IF8gLT4gZmFpbCBhcmcucGV4cF9sb2MgXCJsaXN0XCIpXG4gIHwgXyAtPiBmYWlsIGUucGV4cF9sb2MgXCJsaXN0XCJcblxubGV0IGVsaXN0IChUIGYpID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgZSBrIC0+XG4gICAgICBsZXQgbCA9IHBhcnNlX2VsaXN0IGUgW10gaW5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrIChMaXN0Lm1hcCBsIH5mOihmdW4geCAtPiBmIGN0eCB4LlBhcnNldHJlZS5wZXhwX2xvYyB4IChmdW4geCAtPiB4KSkpKVxuXG5sZXQgZXNlcXVlbmNlIChUIGYpID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgZSBrIC0+XG4gICAgICBsZXQgcmVjIHBhcnNlX3NlcSBleHByIGFjYyA9XG4gICAgICAgIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChleHByLCBuZXh0KSAtPiBwYXJzZV9zZXEgbmV4dCAoZXhwciA6OiBhY2MpXG4gICAgICAgIHwgXyAtPiBleHByIDo6IGFjY1xuICAgICAgaW5cbiAgICAgIGtcbiAgICAgICAgKExpc3QucmV2X21hcCAocGFyc2Vfc2VxIGUgW10pIH5mOihmdW4gZXhwciAtPlxuICAgICAgICAgICAgIGYgY3R4IGV4cHIucGV4cF9sb2MgZXhwciAoZnVuIHggLT4geCkpKSlcblxubGV0IG9mX2Z1bmMgZiA9IFQgZlxubGV0IHRvX2Z1bmMgKFQgZikgPSBmXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHBvbHlfZXF1YWwgYSBiID1cbiAgbGV0IG1vZHVsZSBQb2x5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVCA6IF8gLT4gdFxuICBlbmQgaW5cbiAgU3RkcHB4LlBvbHkuZXF1YWwgKFBvbHkuVCBhKSAoUG9seS5UIGIpXG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIHRcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gdFxuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gdFxuICAgIHwgVHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiB0XG4gICAgfCBUeXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIHRcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB0XG4gICAgfCBQYXR0ZXJuIDogcGF0dGVybiB0XG4gICAgfCBDb3JlX3R5cGUgOiBjb3JlX3R5cGUgdFxuICAgIHwgRXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gdFxuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiB0XG4gICAgfCBDbGFzc190eXBlIDogY2xhc3NfdHlwZSB0XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCB0XG4gICAgfCBDbGFzc19pbmZvcyA6IF8gY2xhc3NfaW5mb3MgdFxuICAgIHwgQ2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgdFxuICAgIHwgQ2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCB0XG4gICAgfCBNb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIHRcbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiB0XG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHRcbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIHRcbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIHRcbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIHRcbiAgICB8IEluY2x1ZGVfaW5mb3MgOiBfIGluY2x1ZGVfaW5mb3MgdFxuICAgIHwgTW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciB0XG4gICAgfCBWYWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyB0XG4gICAgfCBNb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIHRcbiAgICB8IFBzdHJfZXZhbCA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgUHNpZ19leHRlbnNpb24gOiBzaWduYXR1cmVfaXRlbSB0XG4gICAgfCBSdGFnIDogcm93X2ZpZWxkIHRcbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIDogb2JqZWN0X2ZpZWxkIHRcblxuICBsZXQgbGFiZWxfZGVjbGFyYXRpb24gPSBMYWJlbF9kZWNsYXJhdGlvblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPSBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICBsZXQgdHlwZV9kZWNsYXJhdGlvbiA9IFR5cGVfZGVjbGFyYXRpb25cbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID0gVHlwZV9leHRlbnNpb25cbiAgbGV0IHR5cGVfZXhjZXB0aW9uID0gVHlwZV9leGNlcHRpb25cbiAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IEV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICBsZXQgcGF0dGVybiA9IFBhdHRlcm5cbiAgbGV0IGNvcmVfdHlwZSA9IENvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiA9IEV4cHJlc3Npb25cbiAgbGV0IHZhbHVlX2Rlc2NyaXB0aW9uID0gVmFsdWVfZGVzY3JpcHRpb25cbiAgbGV0IGNsYXNzX3R5cGUgPSBDbGFzc190eXBlXG4gIGxldCBjbGFzc190eXBlX2ZpZWxkID0gQ2xhc3NfdHlwZV9maWVsZFxuICBsZXQgY2xhc3NfaW5mb3MgPSBDbGFzc19pbmZvc1xuICBsZXQgY2xhc3NfZXhwciA9IENsYXNzX2V4cHJcbiAgbGV0IGNsYXNzX2ZpZWxkID0gQ2xhc3NfZmllbGRcbiAgbGV0IG1vZHVsZV90eXBlID0gTW9kdWxlX3R5cGVcbiAgbGV0IG1vZHVsZV9kZWNsYXJhdGlvbiA9IE1vZHVsZV9kZWNsYXJhdGlvblxuICBsZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICBsZXQgb3Blbl9kZXNjcmlwdGlvbiA9IE9wZW5fZGVzY3JpcHRpb25cbiAgbGV0IGluY2x1ZGVfaW5mb3MgPSBJbmNsdWRlX2luZm9zXG4gIGxldCBtb2R1bGVfZXhwciA9IE1vZHVsZV9leHByXG4gIGxldCB2YWx1ZV9iaW5kaW5nID0gVmFsdWVfYmluZGluZ1xuICBsZXQgbW9kdWxlX2JpbmRpbmcgPSBNb2R1bGVfYmluZGluZ1xuICBsZXQgcHN0cl9ldmFsID0gUHN0cl9ldmFsXG4gIGxldCBwc3RyX2V4dGVuc2lvbiA9IFBzdHJfZXh0ZW5zaW9uXG4gIGxldCBwc2lnX2V4dGVuc2lvbiA9IFBzaWdfZXh0ZW5zaW9uXG4gIGxldCBydGFnID0gUnRhZ1xuICBsZXQgb2JqZWN0X3R5cGVfZmllbGQgPSBPYmplY3RfdHlwZV9maWVsZFxuXG4gIGxldCBnZXRfcHN0cl9ldmFsIHN0ID1cbiAgICBtYXRjaCBzdC5wc3RyX2Rlc2Mgd2l0aFxuICAgIHwgUHN0cl9ldmFsIChlLCBsKSAtPiAoZSwgbClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuQ29udGV4dC5nZXRfcHN0cl9ldmFsXCJcblxuICBsZXQgZ2V0X3BzdHJfZXh0ZW5zaW9uIHN0ID1cbiAgICBtYXRjaCBzdC5wc3RyX2Rlc2Mgd2l0aFxuICAgIHwgUHN0cl9leHRlbnNpb24gKGUsIGwpIC0+IChlLCBsKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5Db250ZXh0LmdldF9wc3RyX2V4dGVuc2lvblwiXG5cbiAgbGV0IGdldF9wc2lnX2V4dGVuc2lvbiBzdCA9XG4gICAgbWF0Y2ggc3QucHNpZ19kZXNjIHdpdGhcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIChlLCBsKSAtPiAoZSwgbClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuQ29udGV4dC5nZXRfcHNpZ19leHRlbnNpb25cIlxuXG4gIGxldCBnZXRfYXR0cmlidXRlcyA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlcyA9XG4gICBmdW4gdCB4IC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAtPiB4LnBsZF9hdHRyaWJ1dGVzXG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB4LnBjZF9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IHgucHR5cGVfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9leHRlbnNpb24gLT4geC5wdHlleHRfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9leGNlcHRpb24gLT4geC5wdHlleG5fYXR0cmlidXRlc1xuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IHgucGV4dF9hdHRyaWJ1dGVzXG4gICAgfCBQYXR0ZXJuIC0+IHgucHBhdF9hdHRyaWJ1dGVzXG4gICAgfCBDb3JlX3R5cGUgLT4geC5wdHlwX2F0dHJpYnV0ZXNcbiAgICB8IEV4cHJlc3Npb24gLT4geC5wZXhwX2F0dHJpYnV0ZXNcbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIC0+IHgucHZhbF9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc190eXBlIC0+IHgucGN0eV9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IHgucGN0Zl9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc19pbmZvcyAtPiB4LnBjaV9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc19leHByIC0+IHgucGNsX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX2ZpZWxkIC0+IHgucGNmX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV90eXBlIC0+IHgucG10eV9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gLT4geC5wbWRfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4geC5wbXRkX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gLT4geC5wbXNfYXR0cmlidXRlc1xuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiAtPiB4LnBvcGVuX2F0dHJpYnV0ZXNcbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gLT4geC5wb3Blbl9hdHRyaWJ1dGVzXG4gICAgfCBJbmNsdWRlX2luZm9zIC0+IHgucGluY2xfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX2V4cHIgLT4geC5wbW9kX2F0dHJpYnV0ZXNcbiAgICB8IFZhbHVlX2JpbmRpbmcgLT4geC5wdmJfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX2JpbmRpbmcgLT4geC5wbWJfYXR0cmlidXRlc1xuICAgIHwgUHN0cl9ldmFsIC0+IHNuZCAoZ2V0X3BzdHJfZXZhbCB4KVxuICAgIHwgUHN0cl9leHRlbnNpb24gLT4gc25kIChnZXRfcHN0cl9leHRlbnNpb24geClcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIC0+IHNuZCAoZ2V0X3BzaWdfZXh0ZW5zaW9uIHgpXG4gICAgfCBSdGFnIC0+IHgucHJmX2F0dHJpYnV0ZXNcbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIC0+IHgucG9mX2F0dHJpYnV0ZXNcblxuICBsZXQgc2V0X2F0dHJpYnV0ZXMgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgLT4gYSA9XG4gICBmdW4gdCB4IGF0dHJzIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwbGRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBjZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwdHlwZV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVHlwZV9leHRlbnNpb24gLT4geyB4IHdpdGggcHR5ZXh0X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBUeXBlX2V4Y2VwdGlvbiAtPiB7IHggd2l0aCBwdHlleG5fYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiB7IHggd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBQYXR0ZXJuIC0+IHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENvcmVfdHlwZSAtPiB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBFeHByZXNzaW9uIC0+IHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIC0+IHsgeCB3aXRoIHB2YWxfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGUgLT4geyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiB7IHggd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc19pbmZvcyAtPiB7IHggd2l0aCBwY2lfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX2V4cHIgLT4geyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc19maWVsZCAtPiB7IHggd2l0aCBwY2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV90eXBlIC0+IHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwbWRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gLT4geyB4IHdpdGggcG1zX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIC0+IHsgeCB3aXRoIHBvcGVuX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBvcGVuX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBJbmNsdWRlX2luZm9zIC0+IHsgeCB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfZXhwciAtPiB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBWYWx1ZV9iaW5kaW5nIC0+IHsgeCB3aXRoIHB2Yl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX2JpbmRpbmcgLT4geyB4IHdpdGggcG1iX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBQc3RyX2V2YWwgLT5cbiAgICAgICAgeyB4IHdpdGggcHN0cl9kZXNjID0gUHN0cl9ldmFsIChnZXRfcHN0cl9ldmFsIHggfD4gZnN0LCBhdHRycykgfVxuICAgIHwgUHN0cl9leHRlbnNpb24gLT5cbiAgICAgICAge1xuICAgICAgICAgIHggd2l0aFxuICAgICAgICAgIHBzdHJfZGVzYyA9IFBzdHJfZXh0ZW5zaW9uIChnZXRfcHN0cl9leHRlbnNpb24geCB8PiBmc3QsIGF0dHJzKTtcbiAgICAgICAgfVxuICAgIHwgUHNpZ19leHRlbnNpb24gLT5cbiAgICAgICAge1xuICAgICAgICAgIHggd2l0aFxuICAgICAgICAgIHBzaWdfZGVzYyA9IFBzaWdfZXh0ZW5zaW9uIChnZXRfcHNpZ19leHRlbnNpb24geCB8PiBmc3QsIGF0dHJzKTtcbiAgICAgICAgfVxuICAgIHwgUnRhZyAtPiB7IHggd2l0aCBwcmZfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIC0+IHsgeCB3aXRoIHBvZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBkZXNjIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIC0+IFwibGFiZWwgZGVjbGFyYXRpb25cIlxuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gXCJjb25zdHJ1Y3RvciBkZWNsYXJhdGlvblwiXG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IFwidHlwZSBkZWNsYXJhdGlvblwiXG4gICAgfCBUeXBlX2V4dGVuc2lvbiAtPiBcInR5cGUgZXh0ZW5zaW9uXCJcbiAgICB8IFR5cGVfZXhjZXB0aW9uIC0+IFwidHlwZSBleGNlcHRpb25cIlxuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFwiZXh0ZW5zaW9uIGNvbnN0cnVjdG9yXCJcbiAgICB8IFBhdHRlcm4gLT4gXCJwYXR0ZXJuXCJcbiAgICB8IENvcmVfdHlwZSAtPiBcImNvcmUgdHlwZVwiXG4gICAgfCBFeHByZXNzaW9uIC0+IFwiZXhwcmVzc2lvblwiXG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiAtPiBcInZhbHVlXCJcbiAgICB8IENsYXNzX3R5cGUgLT4gXCJjbGFzcyB0eXBlXCJcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gXCJjbGFzcyB0eXBlIGZpZWxkXCJcbiAgICB8IENsYXNzX2luZm9zIC0+IFwiY2xhc3MgZGVjbGFyYXRpb25cIlxuICAgIHwgQ2xhc3NfZXhwciAtPiBcImNsYXNzIGV4cHJlc3Npb25cIlxuICAgIHwgQ2xhc3NfZmllbGQgLT4gXCJjbGFzcyBmaWVsZFwiXG4gICAgfCBNb2R1bGVfdHlwZSAtPiBcIm1vZHVsZSB0eXBlXCJcbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiAtPiBcIm1vZHVsZSBkZWNsYXJhdGlvblwiXG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBcIm1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uXCJcbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gLT4gXCJtb2R1bGUgc3Vic3RpdHV0aW9uXCJcbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gLT4gXCJvcGVuXCJcbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gLT4gXCJvcGVuXCJcbiAgICB8IEluY2x1ZGVfaW5mb3MgLT4gXCJpbmNsdWRlXCJcbiAgICB8IE1vZHVsZV9leHByIC0+IFwibW9kdWxlIGV4cHJlc3Npb25cIlxuICAgIHwgVmFsdWVfYmluZGluZyAtPiBcInZhbHVlIGJpbmRpbmdcIlxuICAgIHwgTW9kdWxlX2JpbmRpbmcgLT4gXCJtb2R1bGUgYmluZGluZ1wiXG4gICAgfCBQc3RyX2V2YWwgLT4gXCJ0b3BsZXZlbCBleHByZXNzaW9uXCJcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIC0+IFwidG9wbGV2ZWwgZXh0ZW5zaW9uXCJcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIC0+IFwidG9wbGV2ZWwgc2lnbmF0dXJlIGV4dGVuc2lvblwiXG4gICAgfCBSdGFnIC0+IFwicG9seW1vcnBoaWMgdmFyaWFudCB0YWdcIlxuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgLT4gXCJvYmplY3QgdHlwZSBmaWVsZFwiXG5cbiAgKCpcbiAgbGV0IHBhdHRlcm4gOiB0eXBlIGEgYiBjIGQuIGEgdFxuICAgIC0+IChhdHRyaWJ1dGVzLCBiLCBjKSBBc3RfcGF0dGVybi50XG4gICAgLT4gKGEsIGMsIGQpIEFzdF9wYXR0ZXJuLnRcbiAgICAtPiAoYSwgYiwgZCkgQXN0X3BhdHRlcm4udCA9IGZ1bmN0aW9uXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAgICAgICAtPiBBc3RfcGF0dGVybi5wbGRfYXR0cmlidXRlc1xuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gQXN0X3BhdHRlcm4ucGNkX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gICAgICAgIC0+IEFzdF9wYXR0ZXJuLnB0eXBlX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZXh0ZW5zaW9uICAgICAgICAgIC0+IEFzdF9wYXR0ZXJuLnB0eWV4dF9hdHRyaWJ1dGVzXG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgICAtPiBBc3RfcGF0dGVybi5wZXh0X2F0dHJpYnV0ZXNcbiopXG5cbiAgbGV0IGVxdWFsIDogXyB0IC0+IF8gdCAtPiBib29sID0gcG9seV9lcXVhbFxuZW5kXG5cbm1vZHVsZSBGbG9hdGluZ19jb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gdFxuICAgIHwgQ2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCB0XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCB0XG5cbiAgbGV0IHN0cnVjdHVyZV9pdGVtID0gU3RydWN0dXJlX2l0ZW1cbiAgbGV0IHNpZ25hdHVyZV9pdGVtID0gU2lnbmF0dXJlX2l0ZW1cbiAgbGV0IGNsYXNzX2ZpZWxkID0gQ2xhc3NfZmllbGRcbiAgbGV0IGNsYXNzX3R5cGVfZmllbGQgPSBDbGFzc190eXBlX2ZpZWxkXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGVfaWZfaXNfZmxvYXRpbmdfbm9kZSA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlIG9wdGlvbiA9XG4gICBmdW4gdCB4IC0+XG4gICAgbWF0Y2ggKHQsIHgpIHdpdGhcbiAgICB8IFN0cnVjdHVyZV9pdGVtLCB7IHBzdHJfZGVzYyA9IFBzdHJfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IFNpZ25hdHVyZV9pdGVtLCB7IHBzaWdfZGVzYyA9IFBzaWdfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IENsYXNzX2ZpZWxkLCB7IHBjZl9kZXNjID0gUGNmX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkLCB7IHBjdGZfZGVzYyA9IFBjdGZfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBnZXRfYXR0cmlidXRlIHQgeCA9XG4gICAgbWF0Y2ggZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19ub2RlIHQgeCB3aXRoXG4gICAgfCBTb21lIGEgLT4gYVxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0LmdldF9hdHRyaWJ1dGVcIlxuXG4gIGxldCByZXBsYWNlX2J5X2R1bW15IDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhID1cbiAgICBsZXQgZHVtbXlfZXh0ID0gKHsgdHh0ID0gXCJcIjsgbG9jID0gTG9jYXRpb24ubm9uZSB9LCBQU3RyIFtdKSBpblxuICAgIGZ1biB0IHggLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiB7IHggd2l0aCBwc3RyX2Rlc2MgPSBQc3RyX2V4dGVuc2lvbiAoZHVtbXlfZXh0LCBbXSkgfVxuICAgICAgfCBTaWduYXR1cmVfaXRlbSAtPiB7IHggd2l0aCBwc2lnX2Rlc2MgPSBQc2lnX2V4dGVuc2lvbiAoZHVtbXlfZXh0LCBbXSkgfVxuICAgICAgfCBDbGFzc19maWVsZCAtPiB7IHggd2l0aCBwY2ZfZGVzYyA9IFBjZl9leHRlbnNpb24gZHVtbXlfZXh0IH1cbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiB7IHggd2l0aCBwY3RmX2Rlc2MgPSBQY3RmX2V4dGVuc2lvbiBkdW1teV9leHQgfVxuXG4gIGxldCBkZXNjIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IFwic3RydWN0dXJlIGl0ZW1cIlxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gXCJzaWduYXR1cmUgaXRlbVwiXG4gICAgfCBDbGFzc19maWVsZCAtPiBcImNsYXNzIGZpZWxkXCJcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gXCJjbGFzcyB0eXBlIGZpZWxkXCJcblxuICBsZXQgZXF1YWwgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBwb2x5X2VxdWFsXG5lbmRcblxudHlwZSBwYWNrZWRfY29udGV4dCA9XG4gIHwgT25faXRlbSA6IF8gQ29udGV4dC50IC0+IHBhY2tlZF9jb250ZXh0XG4gIHwgRmxvYXRpbmcgOiBfIEZsb2F0aW5nX2NvbnRleHQudCAtPiBwYWNrZWRfY29udGV4dFxuXG50eXBlIF8gcGF5bG9hZF9wYXJzZXIgPVxuICB8IFBheWxvYWRfcGFyc2VyIDpcbiAgICAgIChwYXlsb2FkLCAnYSwgJ2IpIEFzdF9wYXR0ZXJuLnRcbiAgICAgICogKGF0dHJfbG9jOkxvY2F0aW9uLnQgLT4gbmFtZV9sb2M6TG9jYXRpb24udCAtPiAnYSlcbiAgICAgIC0+ICdiIHBheWxvYWRfcGFyc2VyXG5cbnR5cGUgKCdhLCAnYikgdCA9IHtcbiAgbmFtZSA6IE5hbWUuUGF0dGVybi50O1xuICBjb250ZXh0IDogJ2EgQ29udGV4dC50O1xuICBwYXlsb2FkIDogJ2IgcGF5bG9hZF9wYXJzZXI7XG59XG5cbnR5cGUgcGFja2VkID0gVCA6IChfLCBfKSB0IC0+IHBhY2tlZFxuXG5sZXQgbmFtZSB0ID0gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lXG5sZXQgY29udGV4dCB0ID0gdC5jb250ZXh0XG5cbmxldCByZWdpc3RyYXIgPVxuICBOYW1lLlJlZ2lzdHJhci5jcmVhdGUgfmtpbmQ6XCJhdHRyaWJ1dGVcIiB+Y3VycmVudF9maWxlOl9fRklMRV9fXG4gICAgfnN0cmluZ19vZl9jb250ZXh0OihmdW5jdGlvblxuICAgIHwgT25faXRlbSB0IC0+IFNvbWUgKENvbnRleHQuZGVzYyB0KVxuICAgIHwgRmxvYXRpbmcgdCAtPiBTb21lIChGbG9hdGluZ19jb250ZXh0LmRlc2MgdCBeIFwiIChmbG9hdGluZylcIikpXG5cbmxldCBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIE5hbWUuUmVnaXN0cmFyLnJlZ2lzdGVyIH5raW5kOmBBdHRyaWJ1dGUgcmVnaXN0cmFyIChPbl9pdGVtIGNvbnRleHQpIG5hbWU7XG4gIHtcbiAgICBuYW1lID0gTmFtZS5QYXR0ZXJuLm1ha2UgbmFtZTtcbiAgICBjb250ZXh0O1xuICAgIHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgayk7XG4gIH1cblxubGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5hdHRyX2xvYzpfIH5uYW1lX2xvYzpfIC0+IGspXG5cbmxldCBkZWNsYXJlX3dpdGhfbmFtZV9sb2MgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5hdHRyX2xvYzpfIH5uYW1lX2xvYyAtPlxuICAgICAgayB+bmFtZV9sb2MpXG5cbmxldCBkZWNsYXJlX3dpdGhfYXR0cl9sb2MgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5hdHRyX2xvYyB+bmFtZV9sb2M6XyAtPlxuICAgICAgayB+YXR0cl9sb2MpXG5cbnR5cGUgJ2EgZmxhZyA9ICgnYSwgdW5pdCkgdFxuXG5sZXQgZGVjbGFyZV9mbGFnIG5hbWUgY29udGV4dCA9XG4gIGxldCBwYXlsb2FkX3BhdHRlcm4gPSBBc3RfcGF0dGVybi4ocHN0ciBuaWwpIGluXG4gIGxldCBjb250aW51YXRpb24gfmF0dHJfbG9jOl8gfm5hbWVfbG9jOl8gPSAoKSBpblxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBheWxvYWRfcGF0dGVybiBjb250aW51YXRpb25cblxubW9kdWxlIEF0dHJpYnV0ZV90YWJsZSA9IFN0ZGxpYi5IYXNodGJsLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgbG9jXG5cbiAgbGV0IG5vcm1hbGl6ZSB0ID0geyB0IHdpdGggbG9jID0geyB0LmxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSB9XG4gIGxldCBoYXNoIHQgPSBIYXNodGJsLmhhc2ggKG5vcm1hbGl6ZSB0KVxuICBsZXQgZXF1YWwgeCB5ID0gUG9seS5lcXVhbCAobm9ybWFsaXplIHgpIChub3JtYWxpemUgeSlcbmVuZClcblxubGV0IG5vdF9zZWVuID0gQXR0cmlidXRlX3RhYmxlLmNyZWF0ZSAxMjhcbmxldCBtYXJrX2FzX3NlZW4geyBhdHRyX25hbWU7IF8gfSA9IEF0dHJpYnV0ZV90YWJsZS5yZW1vdmUgbm90X3NlZW4gYXR0cl9uYW1lXG5sZXQgbWFya19hc19oYW5kbGVkX21hbnVhbGx5ID0gbWFya19hc19zZWVuXG5cbmxldCBleHBsaWNpdGx5X2Ryb3AgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlclxuICAgIG1ldGhvZCEgYXR0cmlidXRlID0gbWFya19hc19zZWVuXG4gIGVuZFxuXG5sZXQgZ2V0X2ludGVybmFsID1cbiAgbGV0IHJlYyBmaW5kX2Jlc3RfbWF0Y2ggdCBhdHRyaWJ1dGVzIGxvbmdlc3RfbWF0Y2ggPVxuICAgIG1hdGNoIGF0dHJpYnV0ZXMgd2l0aFxuICAgIHwgW10gLT4gT2sgbG9uZ2VzdF9tYXRjaFxuICAgIHwgKHsgYXR0cl9uYW1lID0gbmFtZTsgXyB9IGFzIGF0dHIpIDo6IHJlc3QgLT5cbiAgICAgICAgaWYgTmFtZS5QYXR0ZXJuLm1hdGNoZXMgdC5uYW1lIG5hbWUudHh0IHRoZW5cbiAgICAgICAgICBtYXRjaCBsb25nZXN0X21hdGNoIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmluZF9iZXN0X21hdGNoIHQgcmVzdCAoU29tZSBhdHRyKVxuICAgICAgICAgIHwgU29tZSB7IGF0dHJfbmFtZSA9IG5hbWUnOyBfIH0gLT5cbiAgICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggbmFtZS50eHQgaW5cbiAgICAgICAgICAgICAgbGV0IGxlbicgPSBTdHJpbmcubGVuZ3RoIG5hbWUnLnR4dCBpblxuICAgICAgICAgICAgICBpZiBsZW4gPiBsZW4nIHRoZW4gZmluZF9iZXN0X21hdGNoIHQgcmVzdCAoU29tZSBhdHRyKVxuICAgICAgICAgICAgICBlbHNlIGlmIGxlbiA8IGxlbicgdGhlbiBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IGxvbmdlc3RfbWF0Y2hcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvYyBcIkR1cGxpY2F0ZWQgYXR0cmlidXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIFtdIClcbiAgICAgICAgZWxzZSBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IGxvbmdlc3RfbWF0Y2hcbiAgaW5cbiAgZnVuIHQgYXR0cmlidXRlcyAtPiBmaW5kX2Jlc3RfbWF0Y2ggdCBhdHRyaWJ1dGVzIE5vbmVcblxubGV0IGNvbnZlcnQgPyhkb19tYXJrX2FzX3NlZW4gPSB0cnVlKSBwYXR0ZXJuIGF0dHIgPVxuICBpZiBkb19tYXJrX2FzX3NlZW4gdGhlbiBtYXJrX2FzX3NlZW4gYXR0cjtcbiAgbGV0IChQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgaykpID0gcGF0dGVybiBpblxuICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVyblxuICAgIChDb21tb24ubG9jX29mX3BheWxvYWQgYXR0cilcbiAgICBhdHRyLmF0dHJfcGF5bG9hZFxuICAgIChrIH5hdHRyX2xvYzphdHRyLmF0dHJfbG9jIH5uYW1lX2xvYzphdHRyLmF0dHJfbmFtZS5sb2MpXG5cbmxldCBnZXRfcmVzIHQgP21hcmtfYXNfc2Vlbjpkb19tYXJrX2FzX3NlZW4geCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIHQuY29udGV4dCB4IGluXG4gIGdldF9pbnRlcm5hbCB0IGF0dHJzID4+PSBmdW4gcmVzIC0+XG4gIG1hdGNoIHJlcyB3aXRoXG4gIHwgTm9uZSAtPiBPayBOb25lXG4gIHwgU29tZSBhdHRyIC0+XG4gICAgICBjb252ZXJ0IHQucGF5bG9hZCBhdHRyID9kb19tYXJrX2FzX3NlZW4gPj58IGZ1biB2YWx1ZSAtPiBTb21lIHZhbHVlXG5cbmxldCBnZXQgdCA/bWFya19hc19zZWVuOmRvX21hcmtfYXNfc2VlbiB4ID1cbiAgZ2V0X3JlcyB0ID9tYXJrX2FzX3NlZW46ZG9fbWFya19hc19zZWVuIHhcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IGhhc19mbGFnX3JlcyB0ID9tYXJrX2FzX3NlZW4geCA9XG4gIG1hdGNoIGdldF9yZXMgP21hcmtfYXNfc2VlbiB0IHggd2l0aFxuICB8IE9rIChTb21lICgpKSAtPiBPayB0cnVlXG4gIHwgT2sgTm9uZSAtPiBPayBmYWxzZVxuICB8IEVycm9yIF8gYXMgZSAtPiBlXG5cbmxldCBoYXNfZmxhZyB0ID9tYXJrX2FzX3NlZW4geCA9XG4gIGhhc19mbGFnX3JlcyB0ID9tYXJrX2FzX3NlZW4geFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgY29uc3VtZV9yZXMgdCB4ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgdC5jb250ZXh0IHggaW5cbiAgZ2V0X2ludGVybmFsIHQgYXR0cnMgPj49IGZ1biByZXMgLT5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgfCBOb25lIC0+IE9rIE5vbmVcbiAgfCBTb21lIGF0dHIgLT5cbiAgICAgIGxldCBhdHRycyA9IExpc3QuZmlsdGVyIGF0dHJzIH5mOihmdW4gYXR0cicgLT4gbm90IChhdHRyID09IGF0dHInKSkgaW5cbiAgICAgIGxldCB4ID0gQ29udGV4dC5zZXRfYXR0cmlidXRlcyB0LmNvbnRleHQgeCBhdHRycyBpblxuICAgICAgY29udmVydCB0LnBheWxvYWQgYXR0ciA+PnwgZnVuIHZhbHVlIC0+IFNvbWUgKHgsIHZhbHVlKVxuXG5sZXQgY29uc3VtZSB0IHggPVxuICBjb25zdW1lX3JlcyB0IHhcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IHJlbW92ZV9zZWVuX3JlcyAodHlwZSBhKSAoY29udGV4dCA6IGEgQ29udGV4dC50KSBwYWNrZWRzICh4IDogYSkgPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyBjb250ZXh0IHggaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBPayBhY2NcbiAgICB8IFQgdCA6OiByZXN0IC0+XG4gICAgICAgIGlmIENvbnRleHQuZXF1YWwgdC5jb250ZXh0IGNvbnRleHQgdGhlblxuICAgICAgICAgIGdldF9pbnRlcm5hbCB0IGF0dHJzID4+PSBmdW4gcmVzIC0+XG4gICAgICAgICAgbWF0Y2ggcmVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCBhY2MgcmVzdFxuICAgICAgICAgIHwgU29tZSBhdHRyIC0+XG4gICAgICAgICAgICAgIGxldCBuYW1lID0gYXR0ci5hdHRyX25hbWUgaW5cbiAgICAgICAgICAgICAgaWYgQXR0cmlidXRlX3RhYmxlLm1lbSBub3Rfc2VlbiBuYW1lIHRoZW4gbG9vcCBhY2MgcmVzdFxuICAgICAgICAgICAgICBlbHNlIGxvb3AgKGF0dHIgOjogYWNjKSByZXN0XG4gICAgICAgIGVsc2UgbG9vcCBhY2MgcmVzdFxuICBpblxuICBsb29wIFtdIHBhY2tlZHMgPj58IGZ1biBtYXRjaGVkIC0+XG4gIGxldCBhdHRycyA9XG4gICAgTGlzdC5maWx0ZXIgYXR0cnMgfmY6KGZ1biBhdHRyJyAtPiBub3QgKExpc3QubWVtcSB+c2V0Om1hdGNoZWQgYXR0cicpKVxuICBpblxuICBDb250ZXh0LnNldF9hdHRyaWJ1dGVzIGNvbnRleHQgeCBhdHRyc1xuXG5sZXQgcmVtb3ZlX3NlZW4gKHR5cGUgYSkgKGNvbnRleHQgOiBhIENvbnRleHQudCkgcGFja2VkcyAoeCA6IGEpID1cbiAgcmVtb3ZlX3NlZW5fcmVzIChjb250ZXh0IDogYSBDb250ZXh0LnQpIHBhY2tlZHMgKHggOiBhKVxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgcGF0dGVybl9yZXMgdCBwID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBmID0gQXN0X3BhdHRlcm4udG9fZnVuYyBwIGluXG4gIEFzdF9wYXR0ZXJuLm9mX2Z1bmMgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgY29uc3VtZV9yZXMgdCB4ID4+fCBmdW4gcmVzIC0+XG4gICAgICBtYXRjaCByZXMgd2l0aFxuICAgICAgfCBOb25lIC0+IGYgY3R4IGxvYyB4IChrIE5vbmUpXG4gICAgICB8IFNvbWUgKHgsIHYpIC0+IGYgY3R4IGxvYyB4IChrIChTb21lIHYpKSlcblxubGV0IHBhdHRlcm4gdCBwID1cbiAgcGF0dGVybl9yZXMgdCBwIHw+IEFzdF9wYXR0ZXJuLnRvX2Z1bmNcbiAgfD4gKGZ1biBmIGEgYiBjIGQgLT5cbiAgICAgICBmIGEgYiBjIGRcbiAgICAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKSlcbiAgfD4gQXN0X3BhdHRlcm4ub2ZfZnVuY1xuXG5tb2R1bGUgRmxvYXRpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbnRleHQgPSBGbG9hdGluZ19jb250ZXh0XG5cbiAgdHlwZSAoJ2EsICdiKSB0ID0ge1xuICAgIG5hbWUgOiBOYW1lLlBhdHRlcm4udDtcbiAgICBjb250ZXh0IDogJ2EgQ29udGV4dC50O1xuICAgIHBheWxvYWQgOiAnYiBwYXlsb2FkX3BhcnNlcjtcbiAgfVxuXG4gIGxldCBuYW1lIHQgPSBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWVcblxuICBsZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBOYW1lLlJlZ2lzdHJhci5yZWdpc3RlciB+a2luZDpgQXR0cmlidXRlIHJlZ2lzdHJhciAoRmxvYXRpbmcgY29udGV4dCkgbmFtZTtcbiAgICB7XG4gICAgICBuYW1lID0gTmFtZS5QYXR0ZXJuLm1ha2UgbmFtZTtcbiAgICAgIGNvbnRleHQ7XG4gICAgICBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGZ1biB+YXR0cl9sb2M6XyB+bmFtZV9sb2M6XyAtPiBrKTtcbiAgICB9XG5cbiAgbGV0IGNvbnZlcnRfcmVzIHRzIHggPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIG1hdGNoIHRzIHdpdGhcbiAgICB8IFtdIC0+IE9rIE5vbmVcbiAgICB8IHsgY29udGV4dDsgXyB9IDo6IF8gLT4gKFxuICAgICAgICBhc3NlcnQgKExpc3QuZm9yX2FsbCB0cyB+ZjooZnVuIHQgLT4gQ29udGV4dC5lcXVhbCB0LmNvbnRleHQgY29udGV4dCkpO1xuICAgICAgICBsZXQgYXR0ciA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZSBjb250ZXh0IHggaW5cbiAgICAgICAgbGV0IG5hbWUgPSBhdHRyLmF0dHJfbmFtZSBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIExpc3QuZmlsdGVyIHRzIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubWF0Y2hlcyB0Lm5hbWUgbmFtZS50eHQpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBbXSAtPiBPayBOb25lXG4gICAgICAgIHwgWyB0IF0gLT4gY29udmVydCB0LnBheWxvYWQgYXR0ciA+PnwgZnVuIHZhbHVlIC0+IFNvbWUgdmFsdWVcbiAgICAgICAgfCBsIC0+XG4gICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgICAgICAgXCJNdWx0aXBsZSBtYXRjaCBmb3IgZmxvYXRpbmcgYXR0cmlidXRlczogJXNcIlxuICAgICAgICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWUpKSksXG4gICAgICAgICAgICAgICAgW10gKSlcblxuICBsZXQgY29udmVydCB0cyB4ID1cbiAgICBjb252ZXJ0X3JlcyB0cyB4XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG5sZXQgY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciBjb250ZXh0IG5hbWUgPVxuICBpZlxuICAgIChub3RcbiAgICAgICAoTmFtZS5BbGxvd2xpc3RlZC5pc19hbGxvd2xpc3RlZCB+a2luZDpgQXR0cmlidXRlIG5hbWUudHh0XG4gICAgICAgfHwgTmFtZS5pZ25vcmVfY2hlY2tzIG5hbWUudHh0KSlcbiAgICAmJiBBdHRyaWJ1dGVfdGFibGUubWVtIG5vdF9zZWVuIG5hbWVcbiAgdGhlblxuICAgIGxldCBhbGxvd2xpc3QgPSBOYW1lLkFsbG93bGlzdGVkLmdldF9hdHRyaWJ1dGVfbGlzdCAoKSBpblxuICAgIFtcbiAgICAgIE5hbWUuUmVnaXN0cmFyLkVycm9yLmNyZWF0ZWYgcmVnaXN0cmFyIGNvbnRleHQgfmFsbG93bGlzdFxuICAgICAgICBcIkF0dHJpYnV0ZSBgJXMnIHdhcyBub3QgdXNlZFwiIG5hbWU7XG4gICAgXVxuICBlbHNlIFtdXG5cbmxldCBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IFtMb2NhdGlvbi5FcnJvci50IGxpc3RdIEFzdF90cmF2ZXJzZTAuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSBuYW1lOyBfIH0gXyA9XG4gICAgICBbXG4gICAgICAgIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgIFwiYXR0cmlidXRlIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuQXR0cmlidXRlIG5lZWRzIHVwZGF0aW5nIVwiO1xuICAgICAgXVxuXG4gICAgbWV0aG9kIHByaXZhdGUgY2hlY2tfbm9kZSA6IHR5cGUgYS5cbiAgICAgICAgYSBDb250ZXh0LnQgLT4gYSAtPiBhICogTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBjb250ZXh0IG5vZGUgLT5cbiAgICAgICAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgaW5cbiAgICAgICAgbWF0Y2ggYXR0cnMgd2l0aFxuICAgICAgICB8IFtdIC0+IChub2RlLCBbXSlcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgICAgICAgTGlzdC5tYXAgYXR0cnNcbiAgICAgICAgICAgICAgICB+ZjooZnVuXG4gICAgICAgICAgICAgICAgICAgICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGNvbGxlY3RlZF9lcnJvcnMgPVxuICAgICAgICAgICAgICAgICAgICBzZWxmI3BheWxvYWQgcGF5bG9hZCBbXVxuICAgICAgICAgICAgICAgICAgICBAIGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgKE9uX2l0ZW0gY29udGV4dCkgbmFtZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICgqIElmIHdlIGFsbG93IHRoZSBhdHRyaWJ1dGUgdG8gcGFzcyB0aHJvdWdoLCBtYXJrIGl0IGFzIHNlZW4gKilcbiAgICAgICAgICAgICAgICAgIG1hcmtfYXNfc2VlbiBhdHRyO1xuICAgICAgICAgICAgICAgICAgY29sbGVjdGVkX2Vycm9ycylcbiAgICAgICAgICAgICAgfD4gTGlzdC5jb25jYXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoQ29udGV4dC5zZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgW10sIGVycm9ycylcblxuICAgIG1ldGhvZCBwcml2YXRlIGNoZWNrX2Zsb2F0aW5nIDogdHlwZSBhLlxuICAgICAgICBhIEZsb2F0aW5nLkNvbnRleHQudCAtPiBhIC0+IGEgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIGNvbnRleHQgbm9kZSAtPlxuICAgICAgICBtYXRjaFxuICAgICAgICAgIEZsb2F0aW5nLkNvbnRleHQuZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19ub2RlIGNvbnRleHQgbm9kZVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAobm9kZSwgW10pXG4gICAgICAgIHwgU29tZSAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgIGxldCBjb2xsZWN0ZWRfZXJyb3JzID1cbiAgICAgICAgICAgICAgc2VsZiNwYXlsb2FkIHBheWxvYWQgW11cbiAgICAgICAgICAgICAgQCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIChGbG9hdGluZyBjb250ZXh0KSBuYW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWFya19hc19zZWVuIGF0dHI7XG4gICAgICAgICAgICAoRmxvYXRpbmcuQ29udGV4dC5yZXBsYWNlX2J5X2R1bW15IGNvbnRleHQgbm9kZSwgY29sbGVjdGVkX2Vycm9ycylcblxuICAgIG1ldGhvZCEgbGFiZWxfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIExhYmVsX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI2xhYmVsX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFR5cGVfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjdHlwZV9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdHlwZV9leHRlbnNpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFR5cGVfZXh0ZW5zaW9uIHggaW5cbiAgICAgIHN1cGVyI3R5cGVfZXh0ZW5zaW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB0eXBlX2V4Y2VwdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVHlwZV9leGNlcHRpb24geCBpblxuICAgICAgc3VwZXIjdHlwZV9leGNlcHRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggaW5cbiAgICAgIHN1cGVyI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgcGF0dGVybiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgUGF0dGVybiB4IGluXG4gICAgICBzdXBlciNwYXR0ZXJuIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENvcmVfdHlwZSB4IGluXG4gICAgICBzdXBlciNjb3JlX3R5cGUgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIEV4cHJlc3Npb24geCBpblxuICAgICAgc3VwZXIjZXhwcmVzc2lvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFZhbHVlX2Rlc2NyaXB0aW9uIHggaW5cbiAgICAgIHN1cGVyI3ZhbHVlX2Rlc2NyaXB0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc190eXBlIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX3R5cGUgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX2luZm9zIGYgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENsYXNzX2luZm9zIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX2luZm9zIGYgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENsYXNzX2V4cHIgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfZXhwciByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGUgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV90eXBlIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgb3Blbl9kZXNjcmlwdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgT3Blbl9kZXNjcmlwdGlvbiB4IGluXG4gICAgICBzdXBlciNvcGVuX2Rlc2NyaXB0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBvcGVuX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBPcGVuX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI29wZW5fZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGluY2x1ZGVfaW5mb3MgZiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgSW5jbHVkZV9pbmZvcyB4IGluXG4gICAgICBzdXBlciNpbmNsdWRlX2luZm9zIGYgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfZXhwciB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfZXhwciByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVmFsdWVfYmluZGluZyB4IGluXG4gICAgICBzdXBlciN2YWx1ZV9iaW5kaW5nIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX2JpbmRpbmcgeCBpblxuICAgICAgc3VwZXIjbW9kdWxlX2JpbmRpbmcgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMxID0gc2VsZiNjaGVja19ub2RlIENsYXNzX2ZpZWxkIHggaW5cbiAgICAgIGxldCB4LCBlcnJvcnMyID0gc2VsZiNjaGVja19mbG9hdGluZyBDbGFzc19maWVsZCB4IGluXG4gICAgICBzdXBlciNjbGFzc19maWVsZCB4IChhY2MgQCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzMSA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc190eXBlX2ZpZWxkIHggaW5cbiAgICAgIGxldCB4LCBlcnJvcnMyID0gc2VsZiNjaGVja19mbG9hdGluZyBDbGFzc190eXBlX2ZpZWxkIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX3R5cGVfZmllbGQgeCAoYWNjIEAgZXJyb3JzMSBAIGVycm9yczIpXG5cbiAgICBtZXRob2QhIHJvd19maWVsZCB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzID1cbiAgICAgICAgbWF0Y2ggeC5wcmZfZGVzYyB3aXRoIFJ0YWcgXyAtPiBzZWxmI2NoZWNrX25vZGUgUnRhZyB4IHwgXyAtPiAoeCwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjcm93X2ZpZWxkIHggKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9ycyA9XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfb2JqZWN0IChmaWVsZHMsIGNsb3NlZF9mbGFnKSAtPlxuICAgICAgICAgICAgbGV0IGZpZWxkcywgZXJyb3JzID1cbiAgICAgICAgICAgICAgTGlzdC5tYXAgZmllbGRzIH5mOihzZWxmI2NoZWNrX25vZGUgT2JqZWN0X3R5cGVfZmllbGQpXG4gICAgICAgICAgICAgIHw+IExpc3Quc3BsaXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUHR5cF9vYmplY3QgKGZpZWxkcywgY2xvc2VkX2ZsYWcpLCBMaXN0LmNvbmNhdCBlcnJvcnMpXG4gICAgICAgIHwgXyAtPiAoeCwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjY29yZV90eXBlX2Rlc2MgeCAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBpdGVtIGFjYyA9XG4gICAgICBsZXQgaXRlbSwgZXJyb3JzID0gc2VsZiNjaGVja19mbG9hdGluZyBTdHJ1Y3R1cmVfaXRlbSBpdGVtIGluXG4gICAgICBsZXQgaXRlbSwgZXJyb3JzMiA9XG4gICAgICAgIG1hdGNoIGl0ZW0ucHN0cl9kZXNjIHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgXyAtPiBzZWxmI2NoZWNrX25vZGUgUHN0cl9ldmFsIGl0ZW1cbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiBfIC0+IHNlbGYjY2hlY2tfbm9kZSBQc3RyX2V4dGVuc2lvbiBpdGVtXG4gICAgICAgIHwgXyAtPiAoaXRlbSwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gaXRlbSAoYWNjIEAgZXJyb3JzIEAgZXJyb3JzMilcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0gaXRlbSBhY2MgPVxuICAgICAgbGV0IGl0ZW0sIGVycm9ycyA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgU2lnbmF0dXJlX2l0ZW0gaXRlbSBpblxuICAgICAgbGV0IGl0ZW0sIGVycm9yczIgPVxuICAgICAgICBtYXRjaCBpdGVtLnBzaWdfZGVzYyB3aXRoXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gXyAtPiBzZWxmI2NoZWNrX25vZGUgUHNpZ19leHRlbnNpb24gaXRlbVxuICAgICAgICB8IF8gLT4gKGl0ZW0sIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGl0ZW0gKGFjYyBAIGVycm9ycyBAIGVycm9yczIpXG4gIGVuZFxuXG5sZXQgY2hlY2tfYXR0cmlidXRlIHJlZ2lzdHJhciBjb250ZXh0IG5hbWUgPVxuICBtYXRjaCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIGNvbnRleHQgbmFtZSB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IHJhaXNlX2lmX25vbl9lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IGNoZWNrX3VudXNlZCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuXG4gICAgbWV0aG9kIHByaXZhdGUgY2hlY2tfbm9kZSA6IHR5cGUgYS4gYSBDb250ZXh0LnQgLT4gYSAtPiBhID1cbiAgICAgIGZ1biBjb250ZXh0IG5vZGUgLT5cbiAgICAgICAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgaW5cbiAgICAgICAgbWF0Y2ggYXR0cnMgd2l0aFxuICAgICAgICB8IFtdIC0+IG5vZGVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBMaXN0Lml0ZXIgYXR0cnNcbiAgICAgICAgICAgICAgfmY6KGZ1blxuICAgICAgICAgICAgICAgICAgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNwYXlsb2FkIHBheWxvYWQ7XG4gICAgICAgICAgICAgICAgY2hlY2tfYXR0cmlidXRlIHJlZ2lzdHJhciAoT25faXRlbSBjb250ZXh0KSBuYW1lO1xuICAgICAgICAgICAgICAgICgqIElmIHdlIGFsbG93IHRoZSBhdHRyaWJ1dGUgdG8gcGFzcyB0aHJvdWdoLCBtYXJrIGl0IGFzIHNlZW4gKilcbiAgICAgICAgICAgICAgICBtYXJrX2FzX3NlZW4gYXR0cik7XG4gICAgICAgICAgICBDb250ZXh0LnNldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBbXVxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSBuYW1lOyBfIH0gPVxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgXCJhdHRyaWJ1dGUgbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5BdHRyaWJ1dGUgbmVlZHMgdXBkYXRpbmchXCJcblxuICAgIG1ldGhvZCEgbGFiZWxfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNsYWJlbF9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3R5cGVfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHR5cGVfZXh0ZW5zaW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdHlwZV9leHRlbnNpb24geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdHlwZV9leGNlcHRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN0eXBlX2V4Y2VwdGlvbiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBleHRlbnNpb25fY29uc3RydWN0b3IgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNleHRlbnNpb25fY29uc3RydWN0b3IgeCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHBhdHRlcm4geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNwYXR0ZXJuIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NvcmVfdHlwZSB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjZXhwcmVzc2lvbiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3ZhbHVlX2Rlc2NyaXB0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfdHlwZSB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc19pbmZvcyBmIHggPVxuICAgICAgc3VwZXIjY2xhc3NfaW5mb3MgZiAoc2VsZiNjaGVja19ub2RlIENsYXNzX2luZm9zIHgpXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc19leHByIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX3R5cGUgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBvcGVuX2Rlc2NyaXB0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjb3Blbl9kZXNjcmlwdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgb3Blbl9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI29wZW5fZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGluY2x1ZGVfaW5mb3MgZiB4ID1cbiAgICAgIHN1cGVyI2luY2x1ZGVfaW5mb3MgZiAoc2VsZiNjaGVja19ub2RlIEluY2x1ZGVfaW5mb3MgeClcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfZXhwciB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdmFsdWVfYmluZGluZyB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV9iaW5kaW5nIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfZmllbGQgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX3R5cGVfZmllbGQgeCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHJvd19maWVsZCB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3Jvd19maWVsZCB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NvcmVfdHlwZV9kZXNjIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIGl0ZW0gPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc3RydWN0dXJlX2l0ZW0gaXRlbSBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGl0ZW0gPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc2lnbmF0dXJlX2l0ZW0gaXRlbSBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG4gIGVuZFxuXG5sZXQgcmVzZXRfY2hlY2tzICgpID0gQXR0cmlidXRlX3RhYmxlLmNsZWFyIG5vdF9zZWVuXG5cbmxldCBjb2xsZWN0ID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKVxuICAgICAgICA9XG4gICAgICBsZXQgbG9jID0gQ29tbW9uLmxvY19vZl9hdHRyaWJ1dGUgYXR0ciBpblxuICAgICAgc3VwZXIjcGF5bG9hZCBwYXlsb2FkO1xuICAgICAgQXR0cmlidXRlX3RhYmxlLmFkZCBub3Rfc2VlbiBuYW1lIGxvY1xuICBlbmRcblxubGV0IGNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSA9XG4gIGxldCBmYWlsIG5hbWUgbG9jIGFjYyA9XG4gICAgbGV0IHR4dCA9IG5hbWUudHh0IGluXG4gICAgaWYgbm90IChOYW1lLmlnbm9yZV9jaGVja3MgdHh0KSB0aGVuXG4gICAgICBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJBdHRyaWJ1dGUgYCVzJyB3YXMgc2lsZW50bHkgZHJvcHBlZFwiIHR4dFxuICAgICAgOjogYWNjXG4gICAgZWxzZSBhY2NcbiAgaW5cbiAgQXR0cmlidXRlX3RhYmxlLmZvbGQgZmFpbCBub3Rfc2VlbiBbXVxuXG5sZXQgY2hlY2tfYWxsX3NlZW4gKCkgPVxuICBtYXRjaCBjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCByZW1vdmVfYXR0cmlidXRlc19wcmVzZW50X2luIHRhYmxlID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9ID1cbiAgICAgIHN1cGVyI3BheWxvYWQgcGF5bG9hZDtcbiAgICAgIEF0dHJpYnV0ZV90YWJsZS5yZW1vdmUgdGFibGUgbmFtZVxuICBlbmRcblxubGV0IGNvcHlfb2Zfbm90X3NlZW4gKCkgPVxuICBsZXQgY29weSA9IEF0dHJpYnV0ZV90YWJsZS5jcmVhdGUgKEF0dHJpYnV0ZV90YWJsZS5sZW5ndGggbm90X3NlZW4pIGluXG4gIEF0dHJpYnV0ZV90YWJsZS5pdGVyIChBdHRyaWJ1dGVfdGFibGUuYWRkIGNvcHkpIG5vdF9zZWVuO1xuICBjb3B5XG5cbmxldCBkcm9wcGVkX3NvX2Zhcl9zdHJ1Y3R1cmUgc3QgPVxuICBsZXQgdGFibGUgPSBjb3B5X29mX25vdF9zZWVuICgpIGluXG4gIChyZW1vdmVfYXR0cmlidXRlc19wcmVzZW50X2luIHRhYmxlKSNzdHJ1Y3R1cmUgc3Q7XG4gIEF0dHJpYnV0ZV90YWJsZS5mb2xkXG4gICAgKGZ1biBuYW1lIGxvYyBhY2MgLT4geyB0eHQgPSBuYW1lLnR4dDsgbG9jIH0gOjogYWNjKVxuICAgIHRhYmxlIFtdXG5cbmxldCBkcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUgc2cgPVxuICBsZXQgdGFibGUgPSBjb3B5X29mX25vdF9zZWVuICgpIGluXG4gIChyZW1vdmVfYXR0cmlidXRlc19wcmVzZW50X2luIHRhYmxlKSNzaWduYXR1cmUgc2c7XG4gIEF0dHJpYnV0ZV90YWJsZS5mb2xkXG4gICAgKGZ1biBuYW1lIGxvYyBhY2MgLT4geyB0eHQgPSBuYW1lLnR4dDsgbG9jIH0gOjogYWNjKVxuICAgIHRhYmxlIFtdXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0ge1xuICBmaWxlX3BhdGggOiBzdHJpbmc7XG4gIG1haW5fbW9kdWxlX25hbWUgOiBzdHJpbmc7XG4gIHN1Ym1vZHVsZV9wYXRoIDogc3RyaW5nIGxvYyBsaXN0O1xuICBlbmNsb3NpbmdfbW9kdWxlIDogc3RyaW5nO1xuICBlbmNsb3NpbmdfdmFsdWUgOiBzdHJpbmcgb3B0aW9uO1xuICB2YWx1ZSA6IHN0cmluZyBsb2Mgb3B0aW9uO1xuICBpbl9leHByIDogYm9vbDtcbn1cblxubGV0IHRvcF9sZXZlbCB+ZmlsZV9wYXRoID1cbiAgbGV0IG1haW5fbW9kdWxlX25hbWUgPVxuICAgIGZpbGVfcGF0aCB8PiBTdGRsaWIuRmlsZW5hbWUuYmFzZW5hbWUgfD4gU3RkbGliLkZpbGVuYW1lLnJlbW92ZV9leHRlbnNpb25cbiAgICB8PiBTdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaVxuICBpblxuICB7XG4gICAgZmlsZV9wYXRoO1xuICAgIG1haW5fbW9kdWxlX25hbWU7XG4gICAgc3VibW9kdWxlX3BhdGggPSBbXTtcbiAgICBlbmNsb3NpbmdfbW9kdWxlID0gbWFpbl9tb2R1bGVfbmFtZTtcbiAgICBlbmNsb3NpbmdfdmFsdWUgPSBOb25lO1xuICAgIHZhbHVlID0gTm9uZTtcbiAgICBpbl9leHByID0gZmFsc2U7XG4gIH1cblxubGV0IGZpbGVfcGF0aCB0ID0gdC5maWxlX3BhdGhcbmxldCBtYWluX21vZHVsZV9uYW1lIHQgPSB0Lm1haW5fbW9kdWxlX25hbWVcbmxldCBlbmNsb3NpbmdfbW9kdWxlIHQgPSB0LmVuY2xvc2luZ19tb2R1bGVcbmxldCBlbmNsb3NpbmdfdmFsdWUgdCA9IHQuZW5jbG9zaW5nX3ZhbHVlXG5cbmxldCBzdWJtb2R1bGVfcGF0aCB0ID1cbiAgTGlzdC5yZXZfbWFwIH5mOihmdW4gbG9jYXRlZCAtPiBsb2NhdGVkLnR4dCkgdC5zdWJtb2R1bGVfcGF0aFxuXG5sZXQgdmFsdWUgdCA9IE9wdGlvbi5tYXAgfmY6KGZ1biBsb2NhdGVkIC0+IGxvY2F0ZWQudHh0KSB0LnZhbHVlXG5cbmxldCBmdWxseV9xdWFsaWZpZWRfcGF0aCB0ID1cbiAgbGV0IHZhbHVlID0gdmFsdWUgdCBpblxuICBsZXQgc3VibW9kdWxlX3BhdGggPVxuICAgIExpc3QucmV2X21hcCB+ZjooZnVuIGxvY2F0ZWQgLT4gU29tZSBsb2NhdGVkLnR4dCkgdC5zdWJtb2R1bGVfcGF0aFxuICBpblxuICBsZXQgbmFtZXMgPSAoU29tZSB0Lm1haW5fbW9kdWxlX25hbWUgOjogc3VibW9kdWxlX3BhdGgpIEAgWyB2YWx1ZSBdIGluXG4gIFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiBAQCBMaXN0LmZpbHRlcl9vcHQgbmFtZXNcblxubGV0IGVudGVyX2V4cHIgdCA9IHsgdCB3aXRoIGluX2V4cHIgPSB0cnVlIH1cblxubGV0IGVudGVyX21vZHVsZSB+bG9jIG1vZHVsZV9uYW1lIHQgPVxuICBpZiB0LmluX2V4cHIgdGhlbiB7IHQgd2l0aCBlbmNsb3NpbmdfbW9kdWxlID0gbW9kdWxlX25hbWUgfVxuICBlbHNlXG4gICAge1xuICAgICAgdCB3aXRoXG4gICAgICBzdWJtb2R1bGVfcGF0aCA9IHsgdHh0ID0gbW9kdWxlX25hbWU7IGxvYyB9IDo6IHQuc3VibW9kdWxlX3BhdGg7XG4gICAgICBlbmNsb3NpbmdfbW9kdWxlID0gbW9kdWxlX25hbWU7XG4gICAgfVxuXG5sZXQgZW50ZXJfdmFsdWUgfmxvYyB2YWx1ZV9uYW1lIHQgPVxuICBpZiB0LmluX2V4cHIgdGhlbiB7IHQgd2l0aCBlbmNsb3NpbmdfdmFsdWUgPSBTb21lIHZhbHVlX25hbWUgfVxuICBlbHNlXG4gICAge1xuICAgICAgdCB3aXRoXG4gICAgICB2YWx1ZSA9IFNvbWUgeyB0eHQgPSB2YWx1ZV9uYW1lOyBsb2MgfTtcbiAgICAgIGVuY2xvc2luZ192YWx1ZSA9IFNvbWUgdmFsdWVfbmFtZTtcbiAgICB9XG5cbmxldCB0b19zdHJpbmdfcGF0aCB0ID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiICh0LmZpbGVfcGF0aCA6OiBzdWJtb2R1bGVfcGF0aCB0KVxubGV0IHdpdGhfc3RyaW5nX3BhdGggZiB+bG9jIH5wYXRoID0gZiB+bG9jIH5wYXRoOih0b19zdHJpbmdfcGF0aCBwYXRoKTs7XG5cbmxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICBsZXQgYSA9IFwibG9sXCJcbmVuZCBpblxuTS5hXG4iLCJtb2R1bGUgQmFzZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IHRvb2xfbmFtZSA6IHN0cmluZzsgY29kZV9wYXRoIDogQ29kZV9wYXRoLnQ7IGlucHV0X25hbWUgOiBzdHJpbmcgfVxuXG4gIGxldCB0b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lID1cbiAgICBsZXQgY29kZV9wYXRoID0gQ29kZV9wYXRoLnRvcF9sZXZlbCB+ZmlsZV9wYXRoIGluXG4gICAgeyB0b29sX25hbWU7IGNvZGVfcGF0aDsgaW5wdXRfbmFtZSB9XG5cbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5jb2RlX3BhdGhcbiAgbGV0IGlucHV0X25hbWUgdCA9IHQuaW5wdXRfbmFtZVxuICBsZXQgdG9vbF9uYW1lIHQgPSB0LnRvb2xfbmFtZVxuICBsZXQgZW50ZXJfZXhwciB0ID0geyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX2V4cHIgdC5jb2RlX3BhdGggfVxuXG4gIGxldCBlbnRlcl9tb2R1bGUgfmxvYyBuYW1lIHQgPVxuICAgIHsgdCB3aXRoIGNvZGVfcGF0aCA9IENvZGVfcGF0aC5lbnRlcl9tb2R1bGUgfmxvYyBuYW1lIHQuY29kZV9wYXRoIH1cblxuICBsZXQgZW50ZXJfdmFsdWUgfmxvYyBuYW1lIHQgPVxuICAgIHsgdCB3aXRoIGNvZGVfcGF0aCA9IENvZGVfcGF0aC5lbnRlcl92YWx1ZSB+bG9jIG5hbWUgdC5jb2RlX3BhdGggfVxuZW5kXG5cbm1vZHVsZSBFeHRlbnNpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBleHRlbnNpb25fcG9pbnRfbG9jIDogTG9jYXRpb24udDsgYmFzZSA6IEJhc2UudCB9XG5cbiAgbGV0IG1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2MgfmJhc2UgKCkgPSB7IGV4dGVuc2lvbl9wb2ludF9sb2M7IGJhc2UgfVxuICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyB0ID0gdC5leHRlbnNpb25fcG9pbnRfbG9jXG4gIGxldCBjb2RlX3BhdGggdCA9IHQuYmFzZS5jb2RlX3BhdGhcbiAgbGV0IGlucHV0X25hbWUgdCA9IHQuYmFzZS5pbnB1dF9uYW1lXG4gIGxldCB0b29sX25hbWUgdCA9IHQuYmFzZS50b29sX25hbWVcblxuICBsZXQgd2l0aF9sb2NfYW5kX3BhdGggZiB+Y3R4dCA9XG4gICAgZiB+bG9jOmN0eHQuZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgfnBhdGg6KENvZGVfcGF0aC50b19zdHJpbmdfcGF0aCBjdHh0LmJhc2UuY29kZV9wYXRoKVxuZW5kXG5cbm1vZHVsZSBEZXJpdmVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZGVyaXZlZF9pdGVtX2xvYyA6IExvY2F0aW9uLnQ7IGlubGluZSA6IGJvb2w7IGJhc2UgOiBCYXNlLnQgfVxuXG4gIGxldCBtYWtlIH5kZXJpdmVkX2l0ZW1fbG9jIH5pbmxpbmUgfmJhc2UgKCkgPVxuICAgIHsgZGVyaXZlZF9pdGVtX2xvYzsgYmFzZTsgaW5saW5lIH1cblxuICBsZXQgZGVyaXZlZF9pdGVtX2xvYyB0ID0gdC5kZXJpdmVkX2l0ZW1fbG9jXG4gIGxldCBjb2RlX3BhdGggdCA9IHQuYmFzZS5jb2RlX3BhdGhcbiAgbGV0IGlucHV0X25hbWUgdCA9IHQuYmFzZS5pbnB1dF9uYW1lXG4gIGxldCB0b29sX25hbWUgdCA9IHQuYmFzZS50b29sX25hbWVcbiAgbGV0IGlubGluZSB0ID0gdC5pbmxpbmVcblxuICBsZXQgd2l0aF9sb2NfYW5kX3BhdGggZiB+Y3R4dCA9XG4gICAgZiB+bG9jOmN0eHQuZGVyaXZlZF9pdGVtX2xvY1xuICAgICAgfnBhdGg6KENvZGVfcGF0aC50b19zdHJpbmdfcGF0aCBjdHh0LmJhc2UuY29kZV9wYXRoKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQ29tbW9uLldpdGhfZXJyb3JzXG5pbmNsdWRlIEFzdF90cmF2ZXJzZTBcblxuY2xhc3MgdmlydHVhbCBbJ2N0eCwgJ3Jlc10gbGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbJ2N0eCwgJ3Jlc10gUHB4bGliX3RyYXZlcnNlX2J1aWx0aW5zLmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIGluaGVyaXQgWydjdHgsICdyZXNdIEFzdC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgZW5kXG5cbmxldCBtb2R1bGVfbmFtZSA9IGZ1bmN0aW9uIE5vbmUgLT4gXCJfXCIgfCBTb21lIG5hbWUgLT4gbmFtZVxubGV0IGVudGVyIG5hbWUgcGF0aCA9IGlmIFN0cmluZy5pc19lbXB0eSBwYXRoIHRoZW4gbmFtZSBlbHNlIHBhdGggXiBcIi5cIiBeIG5hbWVcbmxldCBlbnRlcl9vcHQgbmFtZV9vcHQgcGF0aCA9IGVudGVyIChtb2R1bGVfbmFtZSBuYW1lX29wdCkgcGF0aFxuXG5jbGFzcyBtYXBfd2l0aF9wYXRoID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbc3RyaW5nXSBtYXBfd2l0aF9jb250ZXh0IGFzIHN1cGVyXG5cbiAgICAoKiBXQVM6XG4gICAgICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBhdGggeCA9XG4gICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgfCBQc3RyX21vZHVsZSBtYiAtPiBzdXBlciNzdHJ1Y3R1cmVfaXRlbV9kZXNjIChlbnRlciBtYi5wbWJfbmFtZS50eHQgcGF0aCkgeFxuICAgICAgIHwgXyAtPiBzdXBlciNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBhdGggeFxuXG4gICAgICAgT3ZlcnJpZGluZyBbbW9kdWxlX2JpbmRpbmddIHNlZW1zIHRvIGJlIE9LIGJlY2F1c2UgaXQgZG9lcyBub3QgY2F0Y2hcbiAgICAgICBsb2NhbCBtb2R1bGUgYmluZGluZ3MgYmVjYXVzZSBhdCB0aGUgbW9tZW50IHRoZSBwYXJzZXRyZWUgZG9lc24ndCBtYWtlXG4gICAgICAgdXNlIG9mIFttb2R1bGVfYmluZGluZ10gZm9yIGxvY2FsIG1vZHVsZXMsIGJ1dCB0aGF0IG1pZ2h0IGNoYW5nZSBpbiB0aGVcbiAgICAgICBmdXR1cmUsIHNvIHRoaXMgbWlnaHQgYmUgc29tZXRoaW5nIHRvIGtlZXAgaW4gbWluZC5cblxuICAgICAgIFRoZSBmb2xsb3dpbmc6XG5cbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG4gICAgICAgICAgIG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZFxuXG4gICAgICAgaXMgZGlzYWxsb3dlZCwgYnV0XG5cbiAgICAgICAgICAgbGV0IF8gPSAuLiBsZXQgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kIGluIC4uXG4gICAgICAgICAgIG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZFxuICAgICAgICAgICBsZXQgXyA9IC4uIGxldCBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmQgaW4gLi5cblxuICAgICAgIGlzbid0LCBhbmQgdGhlIFwicGF0aFwiIGNvbnN0cnVjdGVkIGhlcmUgd291bGQgYmUgYWJsZSB0byBkaWZmZXJlbnRpYXRlXG4gICAgICAgYmV0d2VlbiB0aGVtLiAqKVxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgcGF0aCBtYiA9XG4gICAgICBzdXBlciNtb2R1bGVfYmluZGluZyAoZW50ZXJfb3B0IG1iLnBtYl9uYW1lLnR4dCBwYXRoKSBtYlxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gcGF0aCBtZCA9XG4gICAgICBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gKGVudGVyX29wdCBtZC5wbWRfbmFtZS50eHQgcGF0aCkgbWRcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gcGF0aCBtdGQgPVxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKGVudGVyIG10ZC5wbXRkX25hbWUudHh0IHBhdGgpIG10ZFxuICBlbmRcblxubGV0IHZhcl9uYW1lc19vZiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW3N0cmluZyBsaXN0XSBmb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIHBhdHRlcm4gcCBhY2MgPVxuICAgICAgbGV0IGFjYyA9IHN1cGVyI3BhdHRlcm4gcCBhY2MgaW5cbiAgICAgIG1hdGNoIHAucHBhdF9kZXNjIHdpdGggUHBhdF92YXIgeyB0eHQ7IF8gfSAtPiB0eHQgOjogYWNjIHwgXyAtPiBhY2NcbiAgZW5kXG5cbmxldCBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2MgbmFtZV9vcHQgY3R4dCA9XG4gIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfbW9kdWxlIH5sb2MgKG1vZHVsZV9uYW1lIG5hbWVfb3B0KSBjdHh0XG5cbmxldCBlbnRlcl92YWx1ZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmVudGVyX3ZhbHVlXCIgRXhwcmVzc2lvblxuICAgIEFzdF9wYXR0ZXJuLihzaW5nbGVfZXhwcl9wYXlsb2FkIChwZXhwX2lkZW50IChsaWRlbnQgX18nKSkpXG4gICAgRm4uaWRcblxubGV0IGVudGVyX21vZHVsZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmVudGVyX21vZHVsZVwiIE1vZHVsZV9leHByXG4gICAgQXN0X3BhdHRlcm4uKHNpbmdsZV9leHByX3BheWxvYWQgKHBleHBfY29uc3RydWN0IChsaWRlbnQgX18nKSBub25lKSlcbiAgICBGbi5pZFxuXG5sZXQgZG9fbm90X2VudGVyX3ZhbHVlX2JpbmRpbmcgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfdmFsdWVcIiBWYWx1ZV9iaW5kaW5nXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfdmFsdWVfZGVzY3JpcHRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfdmFsdWVcIiBWYWx1ZV9kZXNjcmlwdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX21vZHVsZV9iaW5kaW5nID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIE1vZHVsZV9iaW5kaW5nXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX2RlY2xhcmF0aW9uID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIE1vZHVsZV9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbGV0X21vZHVsZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBFeHByZXNzaW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmNsYXNzIG1hcF93aXRoX2V4cGFuc2lvbl9jb250ZXh0X2FuZF9lcnJvcnMgPVxuICBsZXQgcmV0dXJuIF9jdHggeCA9ICh4LCBbXSkgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXRcbiAgICAgIFtFeHBhbnNpb25fY29udGV4dC5CYXNlLnQsIExvY2F0aW9uLkVycm9yLnQgbGlzdF0gbGlmdF9tYXBfd2l0aF9jb250ZXh0IGFzIHN1cGVyXG5cbiAgICBtZXRob2QgaW50ID0gcmV0dXJuXG4gICAgbWV0aG9kIHN0cmluZyA9IHJldHVyblxuICAgIG1ldGhvZCBib29sID0gcmV0dXJuXG4gICAgbWV0aG9kIGNoYXIgPSByZXR1cm5cbiAgICBtZXRob2QgZmxvYXQgPSByZXR1cm5cbiAgICBtZXRob2QgaW50MzIgPSByZXR1cm5cbiAgICBtZXRob2QgaW50NjQgPSByZXR1cm5cbiAgICBtZXRob2QgbmF0aXZlaW50ID0gcmV0dXJuXG4gICAgbWV0aG9kIHVuaXQgPSByZXR1cm5cblxuICAgIG1ldGhvZCBhcnJheVxuICAgICAgICA6ICdhLlxuICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gJ2EgLT4gJ2EgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QpIC0+XG4gICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICAgICAgJ2EgYXJyYXkgLT5cbiAgICAgICAgICAnYSBhcnJheSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gZiBjdHggYSAtPlxuICAgICAgICBsZXQgbGlzdCwgZXJyb3JzID0gc2VsZiNsaXN0IGYgY3R4IChBcnJheS50b19saXN0IGEpIGluXG4gICAgICAgIChBcnJheS5vZl9saXN0IGxpc3QsIGVycm9ycylcblxuICAgIG1ldGhvZCBvdGhlciA6ICdhLiBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gJ2EgLT4gTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBfIF8gLT4gW11cblxuICAgIG1ldGhvZCByZWNvcmQgX2N0eCBmaWVsZHMgPSBMaXN0LmNvbmNhdF9tYXAgZmllbGRzIH5mOnNuZFxuICAgIG1ldGhvZCBjb25zdHIgX2N0eCBfdGFnIGFyZ3MgPSBMaXN0LmNvbmNhdCBhcmdzXG4gICAgbWV0aG9kIHR1cGxlIF9jdHggbCA9IExpc3QuY29uY2F0IGxcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiBjdHh0XG4gICAgICAgICh7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSBhcyBleHByKSA9XG4gICAgICBsZXQgd2l0aF92YWx1ZSA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGVudGVyX3ZhbHVlIGV4cHIgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBjdHh0XG4gICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT4gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl92YWx1ZSB+bG9jIHR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF92YWx1ZSA+Pj0gZnVuIGN0eHQgLT5cbiAgICAgIGxldCBjdHh0ID0gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9leHByIGN0eHQgaW5cbiAgICAgIGxldCBwZXhwX2Rlc2MsIGRlc2NfZXJyb3JzID1cbiAgICAgICAgbWF0Y2ggcGV4cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAobmFtZSwgbW9kdWxlX2V4cHIsIGJvZHkpIC0+XG4gICAgICAgICAgICBsZXQgbmFtZSwgbmFtZV9lcnJvcnMgPVxuICAgICAgICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eHQgbmFtZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBtb2R1bGVfZXhwciwgbW9kdWxlX2V4cHJfZXJyb3JzID1cbiAgICAgICAgICAgICAgbGV0IHdpdGhfbGV0X21vZHVsZSA9XG4gICAgICAgICAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX2xldF9tb2R1bGUgZXhwclxuICAgICAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jOm1vZHVsZV9leHByLnBtb2RfbG9jIG5hbWUudHh0IGN0eHRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgd2l0aF9sZXRfbW9kdWxlID4+PSBmdW4gY3R4dCAtPiBzZWxmI21vZHVsZV9leHByIGN0eHQgbW9kdWxlX2V4cHJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYm9keSwgYm9keV9lcnJvcnMgPSBzZWxmI2V4cHJlc3Npb24gY3R4dCBib2R5IGluXG4gICAgICAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4dCBcIlBleHBfbGV0bW9kdWxlXCJcbiAgICAgICAgICAgICAgICBbIG5hbWVfZXJyb3JzOyBtb2R1bGVfZXhwcl9lcnJvcnM7IGJvZHlfZXJyb3JzIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRtb2R1bGUgKG5hbWUsIG1vZHVsZV9leHByLCBib2R5KSwgZXJyb3JzKVxuICAgICAgICB8IF8gLT4gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4dCBwZXhwX2Rlc2NcbiAgICAgIGluXG4gICAgICBsZXQgcGV4cF9sb2MsIGxvY19lcnJvcnMgPSBzZWxmI2xvY2F0aW9uIGN0eHQgcGV4cF9sb2MgaW5cbiAgICAgIGxldCBwZXhwX2xvY19zdGFjaywgbG9jX3N0YWNrX2Vycm9ycyA9XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uIGN0eHQgcGV4cF9sb2Nfc3RhY2tcbiAgICAgIGluXG4gICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBjdHh0IHBleHBfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgICggeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0sXG4gICAgICAgIHNlbGYjcmVjb3JkIGN0eHRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwZXhwX2Rlc2NcIiwgZGVzY19lcnJvcnMpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2NcIiwgbG9jX2Vycm9ycyk7XG4gICAgICAgICAgICAoXCJwZXhwX2xvY19zdGFja1wiLCBsb2Nfc3RhY2tfZXJyb3JzKTtcbiAgICAgICAgICAgIChcImF0dHJpYnV0ZXNcIiwgYXR0cmlidXRlc19lcnJvcnMpO1xuICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciBjdHh0IG1lID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV9leHByID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZW50ZXJfbW9kdWxlIG1lIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gY3R4dFxuICAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfbW9kdWxlIH5sb2MgdHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV9leHByID4+PSBmdW4gY3R4dCAtPiBzdXBlciNtb2R1bGVfZXhwciBjdHh0IG1lXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIGN0eHQgbWIgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX2JpbmRpbmcgPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX2JpbmRpbmcgbWJcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPiBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2M6bWIucG1iX2xvYyBtYi5wbWJfbmFtZS50eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX2JpbmRpbmcgPj49IGZ1biBjdHh0IC0+IHN1cGVyI21vZHVsZV9iaW5kaW5nIGN0eHQgbWJcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIGN0eHQgbWQgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX2RlY2xhcmF0aW9uID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX21vZHVsZV9kZWNsYXJhdGlvbiBtZFxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYzptZC5wbWRfbG9jIG1kLnBtZF9uYW1lLnR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfZGVjbGFyYXRpb24gPj49IGZ1biBjdHh0IC0+IHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiBjdHh0IG1kXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eHQgbXRkID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIG10ZFxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jOm10ZC5wbXRkX2xvY1xuICAgICAgICAgICAgICBtdGQucG10ZF9uYW1lLnR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA+Pj0gZnVuIGN0eHQgLT5cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eHQgbXRkXG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQgdmQgPVxuICAgICAgbGV0IHdpdGhfdmFsdWVfZGVzY3JpcHRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfdmFsdWVfZGVzY3JpcHRpb24gdmRcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl92YWx1ZSB+bG9jOnZkLnB2YWxfbG9jIHZkLnB2YWxfbmFtZS50eHRcbiAgICAgICAgICAgICAgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfdmFsdWVfZGVzY3JpcHRpb24gPj49IGZ1biBjdHh0IC0+IHN1cGVyI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQgdmRcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyBjdHh0XG4gICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IGFzIHZiKSA9XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyB2YiB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICB8IFNvbWUgKCkgLT4gc3VwZXIjdmFsdWVfYmluZGluZyBjdHh0IHZiXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgaW5fYmluZGluZ19jdHh0ID1cbiAgICAgICAgICAgIG1hdGNoIHZhcl9uYW1lc19vZiNwYXR0ZXJuIHB2Yl9wYXQgW10gd2l0aFxuICAgICAgICAgICAgfCBbXSB8IF8gOjogXyA6OiBfIC0+IGN0eHRcbiAgICAgICAgICAgIHwgWyB2YXJfbmFtZSBdIC0+XG4gICAgICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl92YWx1ZSB+bG9jOnB2Yl9sb2MgdmFyX25hbWUgY3R4dFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHB2Yl9wYXQsIHBhdF9lcnJvcnMgPSBzZWxmI3BhdHRlcm4gY3R4dCBwdmJfcGF0IGluXG4gICAgICAgICAgbGV0IHB2Yl9leHByLCBleHByX2Vycm9ycyA9XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gaW5fYmluZGluZ19jdHh0IHB2Yl9leHByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMsIGF0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBpbl9iaW5kaW5nX2N0eHQgcHZiX2F0dHJpYnV0ZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwdmJfbG9jLCBsb2NfZXJyb3JzID0gc2VsZiNsb2NhdGlvbiBjdHh0IHB2Yl9sb2MgaW5cbiAgICAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eHRcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIChcInB2Yl9wYXRcIiwgcGF0X2Vycm9ycyk7XG4gICAgICAgICAgICAgICAgKFwicHZiX2V4cHJcIiwgZXhwcl9lcnJvcnMpO1xuICAgICAgICAgICAgICAgIChcInB2Yl9hdHRyaWJ1dGVzXCIsIGF0dHJpYnV0ZXNfZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAoXCJwdmJfbG9jXCIsIGxvY19lcnJvcnMpO1xuICAgICAgICAgICAgICBdXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSwgZXJyb3JzKVxuICBlbmRcblxuY2xhc3Mgc2V4cF9vZiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW1NleHAudF0gQXN0LmxpZnRcbiAgICBtZXRob2QgaW50ID0gc2V4cF9vZl9pbnRcbiAgICBtZXRob2Qgc3RyaW5nID0gc2V4cF9vZl9zdHJpbmdcbiAgICBtZXRob2QgYm9vbCA9IHNleHBfb2ZfYm9vbFxuICAgIG1ldGhvZCBjaGFyID0gc2V4cF9vZl9jaGFyXG4gICAgbWV0aG9kIGZsb2F0ID0gc2V4cF9vZl9mbG9hdFxuICAgIG1ldGhvZCBpbnQzMiA9IHNleHBfb2ZfaW50MzJcbiAgICBtZXRob2QgaW50NjQgPSBzZXhwX29mX2ludDY0XG4gICAgbWV0aG9kIG5hdGl2ZWludCA9IHNleHBfb2ZfbmF0aXZlaW50XG4gICAgbWV0aG9kIHVuaXQgPSBzZXhwX29mX3VuaXRcbiAgICBtZXRob2Qgb3B0aW9uID0gc2V4cF9vZl9vcHRpb25cbiAgICBtZXRob2QgbGlzdCA9IHNleHBfb2ZfbGlzdFxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EgLT4gU2V4cC50KSAtPiAnYSBhcnJheSAtPiBTZXhwLnQgPSBzZXhwX29mX2FycmF5XG4gICAgbWV0aG9kIG90aGVyIDogJ2EuICdhIC0+IFNleHAudCA9IGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIlxuXG4gICAgbWV0aG9kIHJlY29yZCBmaWVsZHMgPVxuICAgICAgTGlzdFxuICAgICAgICAoTGlzdC5tYXAgZmllbGRzIH5mOihmdW4gKGxhYmVsLCBzZXhwKSAtPlxuICAgICAgICAgICAgIFNleHAuTGlzdCBbIEF0b20gbGFiZWw7IHNleHAgXSkpXG5cbiAgICBtZXRob2QgY29uc3RyIHRhZyBhcmdzID1cbiAgICAgIG1hdGNoIGFyZ3Mgd2l0aCBbXSAtPiBBdG9tIHRhZyB8IF8gLT4gTGlzdCAoQXRvbSB0YWcgOjogYXJncylcblxuICAgIG1ldGhvZCB0dXBsZSBsID0gTGlzdCBsXG4gIGVuZFxuXG5sZXQgc2V4cF9vZiA9IG5ldyBzZXhwX29mXG4iLCIjIDEgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiBcbm9wZW4gTGV4aW5nXG5cbmxldCB1cGRhdGVfbG9jIGxleGJ1ZiBsaW5lc190b19za2lwID1cbiAgbGV0IHBvcyA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHsgcG9zIHdpdGhcbiAgICBwb3NfbG51bSA9IHBvcy5wb3NfbG51bSArIGxpbmVzX3RvX3NraXA7XG4gICAgcG9zX2JvbCA9IHBvcy5wb3NfY251bTtcbiAgfVxuXG4jIDEzIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwNlxcMDAwXFwwMDFcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHNraXBfaGFzaF9iYW5nIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2hhc2hfYmFuZ19yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9za2lwX2hhc2hfYmFuZ19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxNCBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuICAgICAgKCB1cGRhdGVfbG9jIGxleGJ1ZiAzIClcbiMgMTEzIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IDEgLT5cbiMgMTYgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiAgICAgICggdXBkYXRlX2xvYyBsZXhidWYgMSApXG4jIDExOCBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5cbiAgfCAyIC0+XG4jIDE3IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gICAgICAgKCAoKSApXG4jIDEyMyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIiwib3BlbiBJbXBvcnRcblxubGV0IHdpdGhfb3V0cHV0IGZuIH5iaW5hcnkgfmYgPVxuICBtYXRjaCBmbiB3aXRoXG4gIHwgTm9uZSB8IFNvbWUgXCItXCIgLT5cbiAgICAgICgqIEZsaXBwaW5nIGJhY2sgYW5kIGZvcnRoIGZyb20gYmluYXJ5IHRvIHRleHQgaXMgbm90XG4gICAgICAgICBhIGdvb2QgaWRlYSwgc28gd2UnbGwgbWFrZSB0d28gc2ltcGxpZnlpbmcgYXNzdW1wdGlvbnM6XG4gICAgICAgICAxLiBBc3N1bWUgdGhhdCBub3RoaW5nIGlzIGJ1ZmZlcmVkIG9uIHN0ZG91dCBiZWZvcmVcbiAgICAgICAgICAgIGVudGVyaW5nIFt3aXRoX291dHB1dF0uIFRoYXQgbWVhbnMgd2UgZG9uJ3QgbmVlZCB0b1xuICAgICAgICAgICAgZmx1c2ggdGhlIHN0ZG91dCBvbiBlbnRyeS5cbiAgICAgICAgIDIuIEFzc3VtZSB0aGF0IG5vdGhpbmcgZWxzZSBpcyBzZW50IHRvIHN0ZG91dCBhZnRlclxuICAgICAgICAgICAgW3dpdGhfb3V0cHV0XS4gVGhhdCBtZWFucyBpdCBpcyBzYWZlIHRvIGxlYXZlIHN0ZG91dFxuICAgICAgICAgICAgY2hhbm5lbCBpbiBiaW5hcnkgbW9kZSAob3IgdGV4dCBtb2RlIGlmIFtiaW5hcnk9dHJ1ZV0pXG4gICAgICAgICAgICBhZnRlciB0aGUgZnVuY3Rpb24gaXMgZG9uZS4gKilcbiAgICAgIHNldF9iaW5hcnlfbW9kZV9vdXQgc3Rkb3V0IGJpbmFyeTtcbiAgICAgIGYgc3Rkb3V0XG4gIHwgU29tZSBmbiAtPiBPdXRfY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmJpbmFyeSB+ZlxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnRmIHwgSW1wbFxuXG4gIGxldCBvZl9maWxlbmFtZSBmbiA6IHQgb3B0aW9uID1cbiAgICBpZiBTdGRsaWIuRmlsZW5hbWUuY2hlY2tfc3VmZml4IGZuIFwiLm1sXCIgdGhlbiBTb21lIEltcGxcbiAgICBlbHNlIGlmIFN0ZGxpYi5GaWxlbmFtZS5jaGVja19zdWZmaXggZm4gXCIubWxpXCIgdGhlbiBTb21lIEludGZcbiAgICBlbHNlIE5vbmVcblxuICBsZXQgZGVzY3JpYmUgPSBmdW5jdGlvbiBJbXBsIC0+IFwiaW1wbGVtZW50YXRpb25cIiB8IEludGYgLT4gXCJpbnRlcmZhY2VcIlxuICBsZXQgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFBvbHkuZXF1YWxcbmVuZFxuXG5tb2R1bGUgSW50Zl9vcl9pbXBsID0gc3RydWN0XG4gIHR5cGUgdCA9IEludGYgb2Ygc2lnbmF0dXJlIHwgSW1wbCBvZiBzdHJ1Y3R1cmVcblxuICBsZXQgbWFwIHQgKG1hcCA6IEFzdF90cmF2ZXJzZS5tYXApID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltcGwgeCAtPiBJbXBsIChtYXAjc3RydWN0dXJlIHgpXG4gICAgfCBJbnRmIHggLT4gSW50ZiAobWFwI3NpZ25hdHVyZSB4KVxuXG4gIGxldCBtYXBfd2l0aF9jb250ZXh0IHQgKG1hcCA6IF8gQXN0X3RyYXZlcnNlLm1hcF93aXRoX2NvbnRleHQpIGN0eCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBJbXBsIHggLT4gSW1wbCAobWFwI3N0cnVjdHVyZSBjdHggeClcbiAgICB8IEludGYgeCAtPiBJbnRmIChtYXAjc2lnbmF0dXJlIGN0eCB4KVxuXG4gIGxldCBraW5kIDogXyAtPiBLaW5kLnQgPSBmdW5jdGlvbiBJbnRmIF8gLT4gSW50ZiB8IEltcGwgXyAtPiBJbXBsXG5lbmRcblxubW9kdWxlIEFzdF9pbyA9IHN0cnVjdFxuICB0eXBlIGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sX3ZlcnNpb24pXG5cbiAgbGV0IGZhbGxfYmFja19pbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBDb21waWxlcl92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbilcbiAgKCogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHdoZW4gdGhlIGlucHV0IHZlcnNpb24gY2FuJ3QgYmUgZGV0ZXJtaW5lZCBkdWUgdG9cbiAgICAgIGxvYWRpbmcgb3IgcHJlcHJvY2Vzc2luZyBlcnJvcnMgKilcblxuICB0eXBlIHQgPSB7XG4gICAgaW5wdXRfbmFtZSA6IHN0cmluZztcbiAgICBpbnB1dF92ZXJzaW9uIDogaW5wdXRfdmVyc2lvbjtcbiAgICBhc3QgOiBJbnRmX29yX2ltcGwudDtcbiAgfVxuXG4gIHR5cGUgcmVhZF9lcnJvciA9XG4gICAgfCBOb3RfYV9iaW5hcnlfYXN0XG4gICAgfCBVbmtub3duX3ZlcnNpb24gb2Ygc3RyaW5nICogaW5wdXRfdmVyc2lvblxuICAgIHwgU291cmNlX3BhcnNlX2Vycm9yIG9mIExvY2F0aW9uLkVycm9yLnQgKiBpbnB1dF92ZXJzaW9uXG4gICAgfCBTeXN0ZW1fZXJyb3Igb2YgTG9jYXRpb24uRXJyb3IudCAqIGlucHV0X3ZlcnNpb25cblxuICB0eXBlIGlucHV0X3NvdXJjZSA9IFN0ZGluIHwgRmlsZSBvZiBzdHJpbmdcbiAgdHlwZSBpbnB1dF9raW5kID0gUG9zc2libHlfc291cmNlIG9mIEtpbmQudCAqIHN0cmluZyB8IE5lY2Vzc2FyaWx5X2JpbmFyeVxuXG4gIGxldCByZWFkX2Vycm9yX3RvX3N0cmluZyAoZXJyb3IgOiByZWFkX2Vycm9yKSA9XG4gICAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm90X2FfYmluYXJ5X2FzdCAtPiBcIkVycm9yOiBOb3QgYSBiaW5hcnkgYXN0XCJcbiAgICB8IFVua25vd25fdmVyc2lvbiAocywgXykgLT4gXCJFcnJvcjogVW5rbm93biB2ZXJzaW9uIFwiIF4gc1xuICAgIHwgU291cmNlX3BhcnNlX2Vycm9yIChsb2MsIF8pIC0+XG4gICAgICAgIFwiU291cmNlIHBhcnNlIGVycm9yOlwiIF4gTG9jYXRpb24uRXJyb3IubWVzc2FnZSBsb2NcbiAgICB8IFN5c3RlbV9lcnJvciAobG9jLCBfKSAtPiBcIlN5c3RlbSBlcnJvcjogXCIgXiBMb2NhdGlvbi5FcnJvci5tZXNzYWdlIGxvY1xuXG4gIGxldCBwYXJzZV9zb3VyY2VfY29kZSB+KGtpbmQgOiBLaW5kLnQpIH5pbnB1dF9uYW1lIH5wcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSBpY1xuICAgICAgPVxuICAgICgqIFRoZSBpbnB1dCB2ZXJzaW9uIGlzIGRldGVybWluZWQgYnkgdGhlIGZhY3QgdGhhdCB0aGUgaW5wdXQgd2lsbCBnZXQgcGFyc2VkIGJ5XG4gICAgICAgdGhlIGN1cnJlbnQgY29tcGlsZXIgUGFyc2UgbW9kdWxlICopXG4gICAgbGV0IGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIENvbXBpbGVyX3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSBpblxuICAgIHRyeVxuICAgICAgKCogVG8gdGVzdCBpZiBhIGZpbGUgaXMgYW4gQVNUIGZpbGUsIHdlIGhhdmUgdG8gcmVhZCB0aGUgZmlyc3QgZmV3IGJ5dGVzIG9mIHRoZVxuICAgICAgICAgZmlsZS4gSWYgaXQgaXMgbm90LCB3ZSBoYXZlIHRvIHBhcnNlIHRoZXNlIGJ5dGVzIGFuZCB0aGUgcmVzdCBvZiB0aGUgZmlsZSBhc1xuICAgICAgICAgc291cmNlIGNvZGUuXG4gICAgICAgICBUaGUgY29tcGlsZXIganVzdCBkb2VzIFtzZWVrX29uIDBdIGluIHRoaXMgY2FzZSwgaG93ZXZlciB0aGlzIGRvZXNuJ3Qgd29ya1xuICAgICAgICAgd2hlbiB0aGUgaW5wdXQgaXMgYSBwaXBlLlxuICAgICAgICAgV2hhdCB3ZSBkbyBpcyB3ZSBidWlsZCBhIHN0cmluZyBvZiB0aGUgd2hvbGUgc291cmNlLCBhcHBlbmQgdGhlIHByZWZpeFxuICAgICAgICAgYW5kIGJ1aWx0IGEgbGV4aW5nIGJ1ZmZlciBmcm9tIHRoYXQuXG4gICAgICAgICBXZSBoYXZlIHRvIHB1dCBhbGwgdGhlIHNvdXJjZSBpbnRvIHRoZSBsZXhpbmcgYnVmZmVyIGF0IG9uY2UgdGhpcyB3YXlcbiAgICAgICAgIGZvciBzb3VyY2UgcXVvdGF0aW9uIHRvIHdvcmsgaW4gZXJyb3IgbWVzc2FnZXMuXG4gICAgICAgICBTZWUgb2NhbWwjMTIyMzggYW5kIG9jYW1sL2RyaXZlci9wcGFyc2UubWwuICopXG4gICAgICBsZXQgYWxsX3NvdXJjZSA9IHByZWZpeF9yZWFkX2Zyb21fc291cmNlIF4gSW5fY2hhbm5lbC5pbnB1dF9hbGwgaWMgaW5cbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgYWxsX3NvdXJjZSBpblxuICAgICAgbGV4YnVmLmxleF9jdXJyX3AgPC0geyBsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGlucHV0X25hbWUgfTtcbiAgICAgIEFzdGxpYi5Mb2NhdGlvbi5zZXRfaW5wdXRfbGV4YnVmIChTb21lIGxleGJ1Zik7XG4gICAgICBTa2lwX2hhc2hfYmFuZy5za2lwX2hhc2hfYmFuZyBsZXhidWY7XG4gICAgICBsZXQgYXN0IDogSW50Zl9vcl9pbXBsLnQgPVxuICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgfCBJbnRmIC0+IEludGYgKFBhcnNlLmludGVyZmFjZSBsZXhidWYpXG4gICAgICAgIHwgSW1wbCAtPiBJbXBsIChQYXJzZS5pbXBsZW1lbnRhdGlvbiBsZXhidWYpXG4gICAgICBpblxuICAgICAgT2sgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfVxuICAgIHdpdGggZXhuIC0+IChcbiAgICAgIG1hdGNoIExvY2F0aW9uLkVycm9yLm9mX2V4biBleG4gd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIGV4blxuICAgICAgfCBTb21lIGVycm9yIC0+IEVycm9yIChTb3VyY2VfcGFyc2VfZXJyb3IgKGVycm9yLCBpbnB1dF92ZXJzaW9uKSkpXG5cbiAgbGV0IG1hZ2ljX2xlbmd0aCA9IFN0cmluZy5sZW5ndGggQXN0bGliLkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXJcblxuICBsZXQgcmVhZF9tYWdpYyBpYyA9XG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBtYWdpY19sZW5ndGggaW5cbiAgICBsZXQgbGVuID0gaW5wdXQgaWMgYnVmIDAgbWFnaWNfbGVuZ3RoIGluXG4gICAgbGV0IHMgPSBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiB+cG9zOjAgfmxlbiBpblxuICAgIGlmIGxlbiA9IG1hZ2ljX2xlbmd0aCB0aGVuIE9rIHMgZWxzZSBFcnJvciBzXG5cbiAgbGV0IHNldF9pbnB1dF9sZXhidWYgaW5wdXRfbmFtZSA9XG4gICAgbGV0IHNldF9pbnB1dF9sZXhidWYgaWMgPVxuICAgICAgKCogc2V0IGlucHV0IGxleGJ1ZiBmb3IgZXJyb3IgbWVzc2FnZXMuICopXG4gICAgICBsZXQgc291cmNlID0gSW5fY2hhbm5lbC5pbnB1dF9hbGwgaWMgaW5cbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgc291cmNlIGluXG4gICAgICBBc3RsaWIuTG9jYXRpb24uc2V0X2lucHV0X2xleGJ1ZiAoU29tZSBsZXhidWYpO1xuICAgICAgbGV4YnVmXG4gICAgaW5cbiAgICBtYXRjaCBJbl9jaGFubmVsLndpdGhfZmlsZSB+YmluYXJ5OnRydWUgaW5wdXRfbmFtZSB+ZjpzZXRfaW5wdXRfbGV4YnVmIHdpdGhcbiAgICB8IChfIDogTGV4aW5nLmxleGJ1ZikgLT4gKClcbiAgICB8IGV4Y2VwdGlvbiBTeXNfZXJyb3IgXyAtPiAoKVxuXG4gIGxldCBmcm9tX2NoYW5uZWwgY2ggfmlucHV0X2tpbmQgPVxuICAgIGxldCBoYW5kbGVfbm9uX2JpbmFyeSBwcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSA9XG4gICAgICBtYXRjaCBpbnB1dF9raW5kIHdpdGhcbiAgICAgIHwgUG9zc2libHlfc291cmNlIChraW5kLCBpbnB1dF9uYW1lKSAtPlxuICAgICAgICAgIHBhcnNlX3NvdXJjZV9jb2RlIH5raW5kIH5pbnB1dF9uYW1lIH5wcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSBjaFxuICAgICAgfCBOZWNlc3NhcmlseV9iaW5hcnkgLT4gRXJyb3IgTm90X2FfYmluYXJ5X2FzdFxuICAgIGluXG4gICAgKCogTWFyc2hhbGxlZCBBU1QgbXVzdCBiZSByZWFkIGluIGJpbmFyeSBtb2RlLiBFdmVuIHRob3VnaCB3ZSBkb24ndCBrbm93XG4gICAgICAgYmVmb3JlIHJlYWRpbmcgdGhlIG1hZ2ljIG51bWJlciB3aGVuIHRoZSBmaWxlIGhhcyBhIG1hcnNoYWxsZWQgQVNULFxuICAgICAgIGl0IGlzIHNhZmUgdG8gcmVhZCBzb3VyY2UgZmlsZXMgaW4gYmluYXJ5IG1vZGUuICopXG4gICAgc2V0X2JpbmFyeV9tb2RlX2luIGNoIHRydWU7XG4gICAgbWF0Y2ggcmVhZF9tYWdpYyBjaCB3aXRoXG4gICAgfCBFcnJvciBzIC0+IGhhbmRsZV9ub25fYmluYXJ5IHNcbiAgICB8IE9rIHMgLT4gKFxuICAgICAgICBtYXRjaCBGaW5kX3ZlcnNpb24uZnJvbV9tYWdpYyBzIHdpdGhcbiAgICAgICAgfCBJbnRmIChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIC0+XG4gICAgICAgICAgICBsZXQgaW5wdXRfbmFtZSA6IHN0cmluZyA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgYXN0ID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBtb2R1bGUgSW5wdXRfdG9fcHB4bGliID0gQ29udmVydCAoSW5wdXRfdmVyc2lvbikgKEpzKSBpblxuICAgICAgICAgICAgc2V0X2lucHV0X2xleGJ1ZiBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgbGV0IGFzdCA9IEludGZfb3JfaW1wbC5JbnRmIChJbnB1dF90b19wcHhsaWIuY29weV9zaWduYXR1cmUgYXN0KSBpblxuICAgICAgICAgICAgT2tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlucHV0X25hbWU7XG4gICAgICAgICAgICAgICAgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pO1xuICAgICAgICAgICAgICAgIGFzdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICB8IEltcGwgKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgLT5cbiAgICAgICAgICAgIGxldCBpbnB1dF9uYW1lIDogc3RyaW5nID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBhc3QgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZSBJbnB1dF90b19wcHhsaWIgPSBDb252ZXJ0IChJbnB1dF92ZXJzaW9uKSAoSnMpIGluXG4gICAgICAgICAgICBzZXRfaW5wdXRfbGV4YnVmIGlucHV0X25hbWU7XG4gICAgICAgICAgICBsZXQgYXN0ID0gSW50Zl9vcl9pbXBsLkltcGwgKElucHV0X3RvX3BweGxpYi5jb3B5X3N0cnVjdHVyZSBhc3QpIGluXG4gICAgICAgICAgICBPa1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgICAgICBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgYXN0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgIHwgVW5rbm93biAtPlxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgU3RyaW5nLmVxdWFsXG4gICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIEFzdGxpYi5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICAgIHx8IFN0cmluZy5lcXVhbFxuICAgICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBBc3RsaWIuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlciB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgdGhlbiBFcnJvciAoVW5rbm93bl92ZXJzaW9uIChzLCBmYWxsX2JhY2tfaW5wdXRfdmVyc2lvbikpXG4gICAgICAgICAgICBlbHNlIGhhbmRsZV9ub25fYmluYXJ5IHMpXG5cbiAgbGV0IHJlYWQgaW5wdXRfc291cmNlIH5pbnB1dF9raW5kID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIGlucHV0X3NvdXJjZSB3aXRoXG4gICAgICB8IFN0ZGluIC0+XG4gICAgICAgICAgc2V0X2JpbmFyeV9tb2RlX2luIHN0ZGluIHRydWU7XG4gICAgICAgICAgZnJvbV9jaGFubmVsIHN0ZGluIH5pbnB1dF9raW5kXG4gICAgICB8IEZpbGUgZm4gLT4gSW5fY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmY6KGZyb21fY2hhbm5lbCB+aW5wdXRfa2luZClcbiAgICB3aXRoIGV4biAtPiAoXG4gICAgICBtYXRjaCBMb2NhdGlvbi5FcnJvci5vZl9leG4gZXhuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBleG5cbiAgICAgIHwgU29tZSBlcnJvciAtPiBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24pKSlcblxuICBsZXQgd3JpdGUgb2MgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uKTsgYXN0IH1cbiAgICAgIH5hZGRfcHB4X2NvbnRleHQgPVxuICAgIGxldCBtb2R1bGUgUHB4bGliX3RvX2lucHV0ID0gQ29udmVydCAoSnMpIChJbnB1dF92ZXJzaW9uKSBpblxuICAgIGxldCBtb2R1bGUgT2NhbWxfdG9faW5wdXQgPSBDb252ZXJ0IChDb21waWxlcl92ZXJzaW9uKSAoSW5wdXRfdmVyc2lvbikgaW5cbiAgICBtYXRjaCBhc3Qgd2l0aFxuICAgIHwgSW50ZiBzZyAtPlxuICAgICAgICBsZXQgc2cgPVxuICAgICAgICAgIGlmIGFkZF9wcHhfY29udGV4dCB0aGVuXG4gICAgICAgICAgICBTZWxlY3RlZF9hc3QuVG9fb2NhbWwuY29weV9zaWduYXR1cmUgc2dcbiAgICAgICAgICAgIHw+IEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3NpZyB+dG9vbF9uYW1lOlwicHB4X2RyaXZlclwiXG4gICAgICAgICAgICB8PiBPY2FtbF90b19pbnB1dC5jb3B5X3NpZ25hdHVyZVxuICAgICAgICAgIGVsc2UgUHB4bGliX3RvX2lucHV0LmNvcHlfc2lnbmF0dXJlIHNnXG4gICAgICAgIGluXG4gICAgICAgIG91dHB1dF9zdHJpbmcgb2MgSW5wdXRfdmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlcjtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIGlucHV0X25hbWU7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBzZ1xuICAgIHwgSW1wbCBzdCAtPlxuICAgICAgICBsZXQgc3QgPVxuICAgICAgICAgIGlmIGFkZF9wcHhfY29udGV4dCB0aGVuXG4gICAgICAgICAgICBTZWxlY3RlZF9hc3QuVG9fb2NhbWwuY29weV9zdHJ1Y3R1cmUgc3RcbiAgICAgICAgICAgIHw+IEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3N0ciB+dG9vbF9uYW1lOlwicHB4X2RyaXZlclwiXG4gICAgICAgICAgICB8PiBPY2FtbF90b19pbnB1dC5jb3B5X3N0cnVjdHVyZVxuICAgICAgICAgIGVsc2UgUHB4bGliX3RvX2lucHV0LmNvcHlfc3RydWN0dXJlIHN0XG4gICAgICAgIGluXG4gICAgICAgIG91dHB1dF9zdHJpbmcgb2MgSW5wdXRfdmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlcjtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIGlucHV0X25hbWU7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBzdFxuXG4gIG1vZHVsZSBSZWFkX2JpbiA9IHN0cnVjdFxuICAgIHR5cGUgYXN0ID0gSW50ZiBvZiBzaWduYXR1cmUgfCBJbXBsIG9mIHN0cnVjdHVyZVxuICAgIHR5cGUgdCA9IHsgYXN0IDogYXN0OyBpbnB1dF9uYW1lIDogc3RyaW5nIH1cblxuICAgIGxldCByZWFkX2JpbmFyeSBmbiA9XG4gICAgICBtYXRjaFxuICAgICAgICBJbl9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnJvbV9jaGFubmVsIH5pbnB1dF9raW5kOk5lY2Vzc2FyaWx5X2JpbmFyeSlcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgeyBhc3Q7IGlucHV0X25hbWU7IF8gfSAtPlxuICAgICAgICAgIGxldCBhc3QgPVxuICAgICAgICAgICAgbWF0Y2ggYXN0IHdpdGhcbiAgICAgICAgICAgIHwgSW1wbCBzdHJ1Y3R1cmUgLT4gSW1wbCBzdHJ1Y3R1cmVcbiAgICAgICAgICAgIHwgSW50ZiBzaWduYXR1cmUgLT4gSW50ZiBzaWduYXR1cmVcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIHsgYXN0OyBpbnB1dF9uYW1lIH1cbiAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciAocmVhZF9lcnJvcl90b19zdHJpbmcgZSlcblxuICAgIGxldCBnZXRfYXN0IHQgPSB0LmFzdFxuICAgIGxldCBnZXRfaW5wdXRfbmFtZSB0ID0gdC5pbnB1dF9uYW1lXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTeXN0ZW0gPSBzdHJ1Y3RcbiAgbGV0IHJ1bl9wcmVwcm9jZXNzb3IgfnBwIH5pbnB1dCB+b3V0cHV0ID1cbiAgICBsZXQgY29tbWFuZCA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzID4gJXNcIiBwcFxuICAgICAgICAoaWYgU3RyaW5nLmVxdWFsIGlucHV0IFwiLVwiIHRoZW4gXCJcIiBlbHNlIFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSBpbnB1dClcbiAgICAgICAgKFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSBvdXRwdXQpXG4gICAgaW5cbiAgICBpZiBTdGRsaWIuU3lzLmNvbW1hbmQgY29tbWFuZCA9IDAgdGhlbiBPayAoKVxuICAgIGVsc2UgRXJyb3IgKGNvbW1hbmQsIEFzdF9pby5mYWxsX2JhY2tfaW5wdXRfdmVyc2lvbilcbmVuZFxuIiwiKCokIG9wZW4gUHB4bGliX2NpbmFwc19oZWxwZXJzICQqKVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRm9ybWF0ID0gU3RkbGliLkZvcm1hdFxubW9kdWxlIEZpbGVuYW1lID0gU3RkbGliLkZpbGVuYW1lXG5cbigqIFRPRE86IG1ha2UgdGhlIFwiZGVyaXZpbmcuXCIgZGVwZW5kIG9uIHRoZSBtYXRjaGluZyBhdHRyaWJ1dGUgbmFtZS4gKilcbmxldCBlbmRfbWFya2VyX3NpZyA9XG4gIEF0dHJpYnV0ZS5GbG9hdGluZy5kZWNsYXJlIFwiZGVyaXZpbmcuZW5kXCIgU2lnbmF0dXJlX2l0ZW1cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGVuZF9tYXJrZXJfc3RyID1cbiAgQXR0cmlidXRlLkZsb2F0aW5nLmRlY2xhcmUgXCJkZXJpdmluZy5lbmRcIiBTdHJ1Y3R1cmVfaXRlbVxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5tb2R1bGUgdHlwZSBUMSA9IHNpZ1xuICB0eXBlICdhIHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZ2V0X2xvYyA6IHQgLT4gTG9jYXRpb24udFxuICB2YWwgZW5kX21hcmtlciA6ICh0LCB1bml0KSBBdHRyaWJ1dGUuRmxvYXRpbmcudFxuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgOiBzaWdcbiAgICB2YWwgYXBwbHkgOlxuICAgICAgPCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIFQudFxuICAgICAgOyBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIFQudFxuICAgICAgOyAuLiA+IC0+XG4gICAgICB0IFQudFxuICBlbmRcblxuICB2YWwgcGFyc2UgOiBMZXhpbmcubGV4YnVmIC0+IHQgbGlzdFxuICB2YWwgcHAgOiBGb3JtYXQuZm9ybWF0dGVyIC0+IHQgLT4gdW5pdFxuICB2YWwgdG9fc2V4cCA6IHQgLT4gU2V4cC50XG5lbmQpID1cbnN0cnVjdFxuICBsZXQgZXh0cmFjdF9wcmVmaXggfnBvcyBsID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICAgIHsgTG9jYXRpb24ubG9jX3N0YXJ0ID0gcG9zOyBsb2NfZW5kID0gcG9zOyBsb2NfZ2hvc3QgPSBmYWxzZSB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJwcHhsaWI6IFtAQEBAQEAlc10gYXR0cmlidXRlIG1pc3NpbmdcIlxuICAgICAgICAgICAgICAgIChBdHRyaWJ1dGUuRmxvYXRpbmcubmFtZSBNLmVuZF9tYXJrZXIpLFxuICAgICAgICAgICAgICBbXSApXG4gICAgICB8IHggOjogbCAtPiAoXG4gICAgICAgICAgbWF0Y2ggQXR0cmlidXRlLkZsb2F0aW5nLmNvbnZlcnRfcmVzIFsgTS5lbmRfbWFya2VyIF0geCB3aXRoXG4gICAgICAgICAgfCBPayBOb25lIC0+IGxvb3AgKHggOjogYWNjKSBsXG4gICAgICAgICAgfCBPayAoU29tZSAoKSkgLT4gT2sgKExpc3QucmV2IGFjYywgKE0uZ2V0X2xvYyB4KS5sb2Nfc3RhcnQpXG4gICAgICAgICAgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBGYWlsdXJlIF8gLT4gbG9vcCAoeCA6OiBhY2MpIGwpXG4gICAgaW5cbiAgICBsb29wIFtdIGxcblxuICBsZXQgcmVtb3ZlX2xvYyA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXBcbiAgICAgIG1ldGhvZCEgbG9jYXRpb24gXyA9IExvY2F0aW9uLm5vbmVcbiAgICAgIG1ldGhvZCEgbG9jYXRpb25fc3RhY2sgXyA9IFtdXG4gICAgZW5kXG5cbiAgbW9kdWxlIE1fbWFwID0gTS5UcmFuc2Zvcm0gKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIC0+ICdhXG4gIGVuZClcblxuICBsZXQgcmVtb3ZlX2xvYyB4ID0gTV9tYXAuYXBwbHkgcmVtb3ZlX2xvYyB4XG4gIGxldCByZWMgbGFzdCBwcmV2ID0gZnVuY3Rpb24gW10gLT4gcHJldiB8IHggOjogbCAtPiBsYXN0IHggbFxuXG4gIGxldCBkaWZmX2FzdHMgfmdlbmVyYXRlZCB+cm91bmRfdHJpcCA9XG4gICAgbGV0IHdpdGhfdGVtcF9maWxlIGYgPVxuICAgICAgRXhuLnByb3RlY3R4XG4gICAgICAgIChGaWxlbmFtZS50ZW1wX2ZpbGUgXCJwcHhsaWJcIiBcIlwiKVxuICAgICAgICB+ZmluYWxseTpTdGRsaWIuU3lzLnJlbW92ZSB+ZlxuICAgIGluXG4gICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBmbjEgLT5cbiAgICAgICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBmbjIgLT5cbiAgICAgICAgICAgIHdpdGhfdGVtcF9maWxlIChmdW4gb3V0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGR1bXAgZm4gYXN0ID1cbiAgICAgICAgICAgICAgICAgIE91dF9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHBwZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICBTZXhwLnBwX2h1bSBwcGYgKE0udG9fc2V4cCBhc3QpO1xuICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9mbHVzaCBwcGYgKCkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBkdW1wIGZuMSBnZW5lcmF0ZWQ7XG4gICAgICAgICAgICAgICAgZHVtcCBmbjIgcm91bmRfdHJpcDtcbiAgICAgICAgICAgICAgICBsZXQgY21kID1cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIFwicGF0ZGlmZiAtYXNjaWkgLWFsdC1vbGQgZ2VuZXJhdGVkIC1hbHQtbmV3IFxcXG4gICAgICAgICAgICAgICAgICAgICAnZ2VuZXJhdGVkLT5wcmludGVkLT5wYXJzZWQnICVzICVzICY+ICVzXCJcbiAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIGZuMSkgKEZpbGVuYW1lLnF1b3RlIGZuMilcbiAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIG91dClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBvayA9XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuU3lzLmNvbW1hbmQgY21kID0gMVxuICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgIGxldCBjbWQgPVxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIFwiZGlmZiAtLWxhYmVsIGdlbmVyYXRlZCAtLWxhYmVsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICdnZW5lcmF0ZWQtPnByaW50ZWQtPnBhcnNlZCcgJXMgJXMgJj4gJXNcIlxuICAgICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBmbjEpIChGaWxlbmFtZS5xdW90ZSBmbjIpXG4gICAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIG91dClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuU3lzLmNvbW1hbmQgY21kID0gMVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgaWYgb2sgdGhlbiBJbl9jaGFubmVsLnJlYWRfYWxsIG91dFxuICAgICAgICAgICAgICAgIGVsc2UgXCI8bm8gZGlmZmVyZW5jZXMgcHJvZHVjZWQgYnkgZGlmZj5cIikpKVxuXG4gIGxldCBwYXJzZV9zdHJpbmcgcyA9XG4gICAgbWF0Y2ggTS5wYXJzZSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IHJlYyBtYXRjaF9sb29wIH5lbmRfcG9zIH5taXNtYXRjaF9oYW5kbGVyIH5leHBlY3RlZCB+c291cmNlID1cbiAgICBtYXRjaCAoZXhwZWN0ZWQsIHNvdXJjZSkgd2l0aFxuICAgIHwgW10sIFtdIC0+ICgpXG4gICAgfCBbXSwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgIHsgKE0uZ2V0X2xvYyB4KSB3aXRoIGxvY19lbmQgPSAoTS5nZXRfbG9jIChsYXN0IHggbCkpLmxvY19lbmQgfVxuICAgICAgICBpblxuICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBbXVxuICAgIHwgXywgW10gLT5cbiAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgeyBMb2NhdGlvbi5sb2NfZ2hvc3QgPSBmYWxzZTsgbG9jX3N0YXJ0ID0gZW5kX3BvczsgbG9jX2VuZCA9IGVuZF9wb3MgfVxuICAgICAgICBpblxuICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBleHBlY3RlZFxuICAgIHwgeCA6OiBleHBlY3RlZCwgeSA6OiBzb3VyY2UgLT5cbiAgICAgICAgbGV0IGxvYyA9IE0uZ2V0X2xvYyB5IGluXG4gICAgICAgIGxldCB4ID0gcmVtb3ZlX2xvYyB4IGluXG4gICAgICAgIGxldCB5ID0gcmVtb3ZlX2xvYyB5IGluXG4gICAgICAgIGlmIFBvbHkuKCA8PiApIHggeSB0aGVuIChcbiAgICAgICAgICBsZXQgcm91bmRfdHJpcCA9XG4gICAgICAgICAgICByZW1vdmVfbG9jIChwYXJzZV9zdHJpbmcgKEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiBNLnBwIHgpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgUG9seS4oIDw+ICkgeCByb3VuZF90cmlwIHRoZW5cbiAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgICAgICAgICAgIFwicHB4bGliOiB0aGUgY29ycmVjdGVkIGNvZGUgZG9lc24ndCByb3VuZC10cmlwLlxcblxcXG4gICAgICAgICAgICAgICBUaGlzIGlzIHByb2JhYmx5IGEgYnVnIGluIHRoZSBPQ2FtbCBwcmludGVyOlxcblxcXG4gICAgICAgICAgICAgICAlc1wiXG4gICAgICAgICAgICAgIChkaWZmX2FzdHMgfmdlbmVyYXRlZDp4IH5yb3VuZF90cmlwKTtcbiAgICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBbIHggXSk7XG4gICAgICAgIG1hdGNoX2xvb3AgfmVuZF9wb3Mgfm1pc21hdGNoX2hhbmRsZXIgfmV4cGVjdGVkIH5zb3VyY2VcblxuICBsZXQgZG9fbWF0Y2ggfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgc291cmNlID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBleHRyYWN0X3ByZWZpeCB+cG9zIHNvdXJjZSA+PnwgZnVuIChzb3VyY2UsIGVuZF9wb3MpIC0+XG4gICAgbWF0Y2hfbG9vcCB+ZW5kX3BvcyB+bWlzbWF0Y2hfaGFuZGxlciB+ZXhwZWN0ZWQgfnNvdXJjZVxuZW5kXG5cbigqJCopXG5tb2R1bGUgU3RyID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHN0cnVjdHVyZV9pdGVtXG5cbiAgbGV0IGdldF9sb2MgeCA9IHgucHN0cl9sb2NcbiAgbGV0IGVuZF9tYXJrZXIgPSBlbmRfbWFya2VyX3N0clxuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgPSBzdHJ1Y3RcbiAgICBsZXQgYXBwbHkgbyA9IG8jc3RydWN0dXJlX2l0ZW1cbiAgZW5kXG5cbiAgbGV0IHBhcnNlID0gUGFyc2UuaW1wbGVtZW50YXRpb25cbiAgbGV0IHBwID0gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gIGxldCB0b19zZXhwID0gQXN0X3RyYXZlcnNlLnNleHBfb2Yjc3RydWN0dXJlX2l0ZW1cbmVuZClcblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxubW9kdWxlIFNpZyA9IE1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzaWduYXR1cmVfaXRlbVxuXG4gIGxldCBnZXRfbG9jIHggPSB4LnBzaWdfbG9jXG4gIGxldCBlbmRfbWFya2VyID0gZW5kX21hcmtlcl9zaWdcblxuICBtb2R1bGUgVHJhbnNmb3JtIChUIDogVDEpID0gc3RydWN0XG4gICAgbGV0IGFwcGx5IG8gPSBvI3NpZ25hdHVyZV9pdGVtXG4gIGVuZFxuXG4gIGxldCBwYXJzZSA9IFBhcnNlLmludGVyZmFjZVxuICBsZXQgcHAgPSBQcHJpbnRhc3Quc2lnbmF0dXJlX2l0ZW1cbiAgbGV0IHRvX3NleHAgPSBBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzaWduYXR1cmVfaXRlbVxuZW5kKVxuXG4oKiQqKVxuXG5sZXQgbWF0Y2hfc3RydWN0dXJlX3JlcyA9IFN0ci5kb19tYXRjaFxuXG5sZXQgbWF0Y2hfc3RydWN0dXJlIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGwgPVxuICBtYXRjaF9zdHJ1Y3R1cmVfcmVzIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGxcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IG1hdGNoX3NpZ25hdHVyZV9yZXMgPSBTaWcuZG9fbWF0Y2hcblxubGV0IG1hdGNoX3NpZ25hdHVyZSB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsID1cbiAgbWF0Y2hfc2lnbmF0dXJlX3JlcyB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsXG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQ29tbW9uXG5cbnR5cGUgKF8sIF8pIGVxdWFsaXR5ID0gRXEgOiAoJ2EsICdhKSBlcXVhbGl0eSB8IE5lIDogKF8sIF8pIGVxdWFsaXR5XG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBDbGFzc19leHByIDogY2xhc3NfZXhwciB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IENsYXNzX3R5cGUgOiBjbGFzc190eXBlIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcbiAgICB8IENvcmVfdHlwZSA6IGNvcmVfdHlwZSB0XG4gICAgfCBFeHByZXNzaW9uIDogZXhwcmVzc2lvbiB0XG4gICAgfCBNb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIHRcbiAgICB8IE1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgdFxuICAgIHwgUGF0dGVybiA6IHBhdHRlcm4gdFxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSB0XG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFBweF9pbXBvcnQgOiB0eXBlX2RlY2xhcmF0aW9uIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiBfIHQgLT4gcGFja2VkXG5cbiAgbGV0IGNsYXNzX2V4cHIgPSBDbGFzc19leHByXG4gIGxldCBjbGFzc19maWVsZCA9IENsYXNzX2ZpZWxkXG4gIGxldCBjbGFzc190eXBlID0gQ2xhc3NfdHlwZVxuICBsZXQgY2xhc3NfdHlwZV9maWVsZCA9IENsYXNzX3R5cGVfZmllbGRcbiAgbGV0IGNvcmVfdHlwZSA9IENvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiA9IEV4cHJlc3Npb25cbiAgbGV0IG1vZHVsZV9leHByID0gTW9kdWxlX2V4cHJcbiAgbGV0IG1vZHVsZV90eXBlID0gTW9kdWxlX3R5cGVcbiAgbGV0IHBhdHRlcm4gPSBQYXR0ZXJuXG4gIGxldCBzaWduYXR1cmVfaXRlbSA9IFNpZ25hdHVyZV9pdGVtXG4gIGxldCBzdHJ1Y3R1cmVfaXRlbSA9IFN0cnVjdHVyZV9pdGVtXG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgQ2xhc3NfZXhwciAtPiBcImNsYXNzIGV4cHJlc3Npb25cIlxuICAgIHwgQ2xhc3NfZmllbGQgLT4gXCJjbGFzcyBmaWVsZFwiXG4gICAgfCBDbGFzc190eXBlIC0+IFwiY2xhc3MgdHlwZVwiXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IFwiY2xhc3MgdHlwZSBmaWVsZFwiXG4gICAgfCBDb3JlX3R5cGUgLT4gXCJjb3JlIHR5cGVcIlxuICAgIHwgRXhwcmVzc2lvbiAtPiBcImV4cHJlc3Npb25cIlxuICAgIHwgTW9kdWxlX2V4cHIgLT4gXCJtb2R1bGUgZXhwcmVzc2lvblwiXG4gICAgfCBNb2R1bGVfdHlwZSAtPiBcIm1vZHVsZSB0eXBlXCJcbiAgICB8IFBhdHRlcm4gLT4gXCJwYXR0ZXJuXCJcbiAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IFwic2lnbmF0dXJlIGl0ZW1cIlxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gXCJzdHJ1Y3R1cmUgaXRlbVwiXG4gICAgfCBQcHhfaW1wb3J0IC0+IFwidHlwZSBkZWNsYXJhdGlvblwiXG5cbiAgbGV0IGVxIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIGVxdWFsaXR5ID1cbiAgIGZ1biBhIGIgLT5cbiAgICBtYXRjaCAoYSwgYikgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciwgQ2xhc3NfZXhwciAtPiBFcVxuICAgIHwgQ2xhc3NfZmllbGQsIENsYXNzX2ZpZWxkIC0+IEVxXG4gICAgfCBDbGFzc190eXBlLCBDbGFzc190eXBlIC0+IEVxXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkLCBDbGFzc190eXBlX2ZpZWxkIC0+IEVxXG4gICAgfCBDb3JlX3R5cGUsIENvcmVfdHlwZSAtPiBFcVxuICAgIHwgRXhwcmVzc2lvbiwgRXhwcmVzc2lvbiAtPiBFcVxuICAgIHwgTW9kdWxlX2V4cHIsIE1vZHVsZV9leHByIC0+IEVxXG4gICAgfCBNb2R1bGVfdHlwZSwgTW9kdWxlX3R5cGUgLT4gRXFcbiAgICB8IFBhdHRlcm4sIFBhdHRlcm4gLT4gRXFcbiAgICB8IFNpZ25hdHVyZV9pdGVtLCBTaWduYXR1cmVfaXRlbSAtPiBFcVxuICAgIHwgU3RydWN0dXJlX2l0ZW0sIFN0cnVjdHVyZV9pdGVtIC0+IEVxXG4gICAgfCBQcHhfaW1wb3J0LCBQcHhfaW1wb3J0IC0+IEVxXG4gICAgfCBfIC0+XG4gICAgICAgIGFzc2VydCAoUG9seS4oIDw+ICkgKFQgYSkgKFQgYikpO1xuICAgICAgICBOZVxuXG4gIGxldCBnZXRfcHB4X2ltcG9ydF9leHRlbnNpb24gdHlwZV9kZWNsID1cbiAgICBtYXRjaCB0eXBlX2RlY2wgd2l0aFxuICAgIHwgeyBwdHlwZV9tYW5pZmVzdCA9IFNvbWUgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiAobmFtZSwgXyk7IF8gfTsgXyB9XG4gICAgICAtPlxuICAgICAgICBsZXQgdmlydHVhbF9wYXlsb2FkID1cbiAgICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfdHlwZSB+bG9jOnR5cGVfZGVjbC5wdHlwZV9sb2MgUmVjdXJzaXZlXG4gICAgICAgICAgICBbIHR5cGVfZGVjbCBdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhdHRyID0gW10gaW5cbiAgICAgICAgU29tZSAoKG5hbWUsIFBTdHIgWyB2aXJ0dWFsX3BheWxvYWQgXSksIGF0dHIpXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgZ2V0X2V4dGVuc2lvbiA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gKGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMpIG9wdGlvbiA9XG4gICBmdW4gdCB4IC0+XG4gICAgbWF0Y2ggKHQsIHgpIHdpdGhcbiAgICB8IENsYXNzX2V4cHIsIHsgcGNsX2Rlc2MgPSBQY2xfZXh0ZW5zaW9uIGU7IHBjbF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDbGFzc19maWVsZCwgeyBwY2ZfZGVzYyA9IFBjZl9leHRlbnNpb24gZTsgcGNmX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX3R5cGUsIHsgcGN0eV9kZXNjID0gUGN0eV9leHRlbnNpb24gZTsgcGN0eV9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkLCB7IHBjdGZfZGVzYyA9IFBjdGZfZXh0ZW5zaW9uIGU7IHBjdGZfYXR0cmlidXRlcyA9IGE7IF8gfVxuICAgICAgLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENvcmVfdHlwZSwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBlOyBwdHlwX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IEV4cHJlc3Npb24sIHsgcGV4cF9kZXNjID0gUGV4cF9leHRlbnNpb24gZTsgcGV4cF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBNb2R1bGVfZXhwciwgeyBwbW9kX2Rlc2MgPSBQbW9kX2V4dGVuc2lvbiBlOyBwbW9kX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IE1vZHVsZV90eXBlLCB7IHBtdHlfZGVzYyA9IFBtdHlfZXh0ZW5zaW9uIGU7IHBtdHlfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgUGF0dGVybiwgeyBwcGF0X2Rlc2MgPSBQcGF0X2V4dGVuc2lvbiBlOyBwcGF0X2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IFNpZ25hdHVyZV9pdGVtLCB7IHBzaWdfZGVzYyA9IFBzaWdfZXh0ZW5zaW9uIChlLCBhKTsgXyB9IC0+IFNvbWUgKGUsIGEpXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSwgeyBwc3RyX2Rlc2MgPSBQc3RyX2V4dGVuc2lvbiAoZSwgYSk7IF8gfSAtPiBTb21lIChlLCBhKVxuICAgIHwgUHB4X2ltcG9ydCwgdHlwZV9kZWNsIC0+IGdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbiB0eXBlX2RlY2xcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBtZXJnZV9hdHRyaWJ1dGVzX3JlcyA6XG4gICAgICB0eXBlIGEuXG4gICAgICBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzIC0+IChhLCBMb2NhdGlvbi5FcnJvci50IE5vbkVtcHR5TGlzdC50KSByZXN1bHQgPVxuICAgZnVuIHQgeCBhdHRycyAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciAtPiBPayB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IHgucGNsX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc19maWVsZCAtPiBPayB7IHggd2l0aCBwY2ZfYXR0cmlidXRlcyA9IHgucGNmX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlIC0+IE9rIHsgeCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IHgucGN0eV9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPlxuICAgICAgICBPayB7IHggd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSB4LnBjdGZfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENvcmVfdHlwZSAtPiBPayB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSB4LnB0eXBfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IEV4cHJlc3Npb24gLT4gT2sgeyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0geC5wZXhwX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBNb2R1bGVfZXhwciAtPiBPayB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSB4LnBtb2RfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IE1vZHVsZV90eXBlIC0+IE9rIHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IHgucG10eV9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgUGF0dGVybiAtPiBPayB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSB4LnBwYXRfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IChcbiAgICAgICAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgYXR0cnMgd2l0aCBbXSAtPiBPayB4IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKSlcbiAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IChcbiAgICAgICAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgYXR0cnMgd2l0aCBbXSAtPiBPayB4IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKSlcbiAgICB8IFBweF9pbXBvcnQgLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuXG4gIGxldCBtZXJnZV9hdHRyaWJ1dGVzIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzIC0+IGEgPVxuICAgZnVuIHQgeCBhdHRycyAtPlxuICAgIG1lcmdlX2F0dHJpYnV0ZXNfcmVzIHQgeCBhdHRyc1xuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxubGV0IHJlZ2lzdHJhciA9XG4gIE5hbWUuUmVnaXN0cmFyLmNyZWF0ZSB+a2luZDpcImV4dGVuc2lvblwiIH5jdXJyZW50X2ZpbGU6X19GSUxFX19cbiAgICB+c3RyaW5nX29mX2NvbnRleHQ6KGZ1biAoQ29udGV4dC5UIGN0eCkgLT4gU29tZSAoQ29udGV4dC5kZXNjIGN0eCkpXG5cbm1vZHVsZSBNYWtlIChDYWxsYmFjayA6IHNpZ1xuICB0eXBlICdhIHRcbmVuZCkgPVxuc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgcGF5bG9hZF9wYXJzZXIgPVxuICAgIHwgUGF5bG9hZF9wYXJzZXIgOlxuICAgICAgICAoJ2EsICdiLCAnYykgQXN0X3BhdHRlcm4udCAqICdiIENhbGxiYWNrLnRcbiAgICAgICAgLT4gKCdhLCAnYykgcGF5bG9hZF9wYXJzZXJcblxuICB0eXBlICgnY29udGV4dCwgJ3BheWxvYWQpIHQgPSB7XG4gICAgbmFtZSA6IE5hbWUuUGF0dGVybi50O1xuICAgIGNvbnRleHQgOiAnY29udGV4dCBDb250ZXh0LnQ7XG4gICAgcGF5bG9hZCA6IChwYXlsb2FkLCAncGF5bG9hZCkgcGF5bG9hZF9wYXJzZXI7XG4gICAgd2l0aF9hcmcgOiBib29sO1xuICB9XG5cbiAgbGV0IGRlY2xhcmUgOlxuICAgICAgdHlwZSBhLlxuICAgICAgd2l0aF9hcmc6Ym9vbCAtPlxuICAgICAgc3RyaW5nIC0+XG4gICAgICBhIENvbnRleHQudCAtPlxuICAgICAgKHBheWxvYWQsICdiLCAncGF5bG9hZCkgQXN0X3BhdHRlcm4udCAtPlxuICAgICAgJ2IgQ2FsbGJhY2sudCAtPlxuICAgICAgKGEsICdwYXlsb2FkKSB0ID1cbiAgIGZ1biB+d2l0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayAtPlxuICAgICgqIENoZWNrIHRoYXQgdGhlcmUgaXMgbm8gY29sbGlzaW9ucyBiZXR3ZWVuIHBweF9pbXBvcnQgYW5kIGNvcmVfdHlwZVxuICAgICAgIGV4dGVuc2lvbnMgKilcbiAgICAobWF0Y2ggY29udGV4dCB3aXRoXG4gICAgfCBDb250ZXh0LlBweF9pbXBvcnQgLT5cbiAgICAgICAgTmFtZS5SZWdpc3RyYXIuY2hlY2tfY29sbGlzaW9ucyByZWdpc3RyYXIgKENvbnRleHQuVCBDb3JlX3R5cGUpIG5hbWVcbiAgICB8IENvbnRleHQuQ29yZV90eXBlIC0+XG4gICAgICAgIE5hbWUuUmVnaXN0cmFyLmNoZWNrX2NvbGxpc2lvbnMgcmVnaXN0cmFyIChDb250ZXh0LlQgUHB4X2ltcG9ydCkgbmFtZVxuICAgIHwgXyAtPiAoKSk7XG4gICAgTmFtZS5SZWdpc3RyYXIucmVnaXN0ZXIgfmtpbmQ6YEV4dGVuc2lvbiByZWdpc3RyYXIgKENvbnRleHQuVCBjb250ZXh0KSBuYW1lO1xuICAgIHtcbiAgICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgICAgY29udGV4dDtcbiAgICAgIHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgayk7XG4gICAgICB3aXRoX2FyZztcbiAgICB9XG5cbiAgbGV0IGZpbmQgdHMgKGV4dCA6IGV4dGVuc2lvbikgPVxuICAgIGxldCB7IHR4dCA9IG5hbWU7IGxvYyB9ID0gZnN0IGV4dCBpblxuICAgIGxldCBuYW1lLCBhcmcgPSBOYW1lLnNwbGl0X3BhdGggbmFtZSBpblxuICAgIG1hdGNoIExpc3QuZmlsdGVyIHRzIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubWF0Y2hlcyB0Lm5hbWUgbmFtZSkgd2l0aFxuICAgIHwgW10gLT4gT2sgTm9uZVxuICAgIHwgXyA6OiBfIDo6IF8gYXMgbCAtPlxuICAgICAgICBFcnJvclxuICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiTXVsdGlwbGUgbWF0Y2ggZm9yIGV4dGVuc2lvbnM6ICVzXCJcbiAgICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgICAgICAgICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZSkpKSxcbiAgICAgICAgICAgIFtdIClcbiAgICB8IFsgdCBdIC0+XG4gICAgICAgIGlmIChub3QgdC53aXRoX2FyZykgJiYgT3B0aW9uLmlzX3NvbWUgYXJnIHRoZW5cbiAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2NcbiAgICAgICAgICAgICAgICBcIkV4dGVuc2lvbiAlcyBkb2Vzbid0IGV4cGVjdCBhIHBhdGggYXJndW1lbnRcIiBuYW1lLFxuICAgICAgICAgICAgICBbXSApXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgYXJnID1cbiAgICAgICAgICAgIE9wdGlvbi5tYXAgYXJnIH5mOihmdW4gcyAtPlxuICAgICAgICAgICAgICAgIGxldCBzaGlmdCA9IFN0cmluZy5sZW5ndGggbmFtZSArIDEgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBsb2MubG9jX3N0YXJ0IGluXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHh0ID0gTG9uZ2lkZW50LnBhcnNlIHM7XG4gICAgICAgICAgICAgICAgICBsb2MgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbG9jIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICBsb2Nfc3RhcnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGFydCB3aXRoIHBvc19jbnVtID0gc3RhcnQucG9zX2NudW0gKyBzaGlmdCB9O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBPayAoU29tZSAodCwgYXJnKSlcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gYXJnOkxvbmdpZGVudC50IExvYy50IG9wdGlvbiAtPiAnYVxuICBlbmQpXG5cbiAgbGV0IGRlY2xhcmVfd2l0aF9wYXRoX2FyZyBuYW1lIGN0eCBwYXR0IGYgPVxuICAgIGRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjdHggcGF0dCBmXG5cbiAgbGV0IGRlY2xhcmUgbmFtZSBjdHggcGF0dCBmID1cbiAgICBkZWNsYXJlIH53aXRoX2FyZzpmYWxzZSBuYW1lIGN0eCBwYXR0IChmdW4gfmFyZzpfIC0+IGYpXG5cbiAgbGV0IGNvbnZlcnRfcmVzIHRzIH5sb2MgZXh0ID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBmaW5kIHRzIGV4dCA+Pj0gZnVuIHIgLT5cbiAgICBtYXRjaCByIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGYpOyBfIH0sIGFyZykgLT5cbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gbG9jIChzbmQgZXh0KSAoZiB+YXJnKSA+PnwgZnVuIHBheWxvYWQgLT5cbiAgICAgICAgU29tZSBwYXlsb2FkXG5cbiAgbGV0IGNvbnZlcnQgdHMgfmxvYyBleHQgPVxuICAgIGNvbnZlcnRfcmVzIHRzIH5sb2MgZXh0XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG5tb2R1bGUgTSA9IE1ha2UgKHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLnQgLT4gYXJnOkxvbmdpZGVudC50IExvYy50IG9wdGlvbiAtPiAnYVxuZW5kKVxuXG50eXBlICdhIGV4cGFuZGVyX3Jlc3VsdCA9IFNpbXBsZSBvZiAnYSB8IElubGluZSBvZiAnYSBsaXN0XG5cbm1vZHVsZSBGb3JfY29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsICdhIGV4cGFuZGVyX3Jlc3VsdCkgTS50XG5cbiAgbGV0IGNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dCA9XG4gICAgbGV0IGxvYyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5leHRlbnNpb25fcG9pbnRfbG9jIGN0eHQgaW5cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBNLmZpbmQgdHMgZXh0ID4+PSBmdW4gZm91bmQgLT5cbiAgICBtYXRjaCBmb3VuZCB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKHsgcGF5bG9hZCA9IE0uUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGYpOyBfIH0sIGFyZykgLT4gKFxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBsb2MgKHNuZCBleHQpIChmIH5jdHh0IH5hcmcpXG4gICAgICAgID4+fCBmdW4gcGF5bG9hZCAtPlxuICAgICAgICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgICAgICAgfCBTaW1wbGUgeCAtPiBTb21lIHhcbiAgICAgICAgfCBJbmxpbmUgXyAtPiBmYWlsd2l0aCBcIkV4dGVuc2lvbi5jb252ZXJ0XCIpXG5cbiAgbGV0IGNvbnZlcnQgdHMgfmN0eHQgZXh0ID1cbiAgICBjb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG4gIGxldCBjb252ZXJ0X2lubGluZV9yZXMgdHMgfmN0eHQgZXh0ID1cbiAgICBsZXQgbG9jID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLmV4dGVuc2lvbl9wb2ludF9sb2MgY3R4dCBpblxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIE0uZmluZCB0cyBleHQgPj49IGZ1biBmb3VuZCAtPlxuICAgIG1hdGNoIGZvdW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gTS5QYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPiAoXG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGxvYyAoc25kIGV4dCkgKGYgfmN0eHQgfmFyZylcbiAgICAgICAgPj58IGZ1biBwYXlsb2FkIC0+XG4gICAgICAgIG1hdGNoIHBheWxvYWQgd2l0aCBTaW1wbGUgeCAtPiBTb21lIFsgeCBdIHwgSW5saW5lIGwgLT4gU29tZSBsKVxuXG4gIGxldCBjb252ZXJ0X2lubGluZSB0cyB+Y3R4dCBleHQgPVxuICAgIGNvbnZlcnRfaW5saW5lX3JlcyB0cyB+Y3R4dCBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbnR5cGUgdCA9IFQgOiBfIEZvcl9jb250ZXh0LnQgLT4gdFxuXG5sZXQgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIDogdHlwZSBhLiBmdW5jOnN0cmluZyAtPiBhIENvbnRleHQudCAtPiB1bml0ID1cbiBmdW4gfmZ1bmMgY3R4IC0+XG4gIG1hdGNoIGN0eCB3aXRoXG4gIHwgQ29udGV4dC5DbGFzc19maWVsZCAtPiAoKVxuICB8IENvbnRleHQuQ2xhc3NfdHlwZV9maWVsZCAtPiAoKVxuICB8IENvbnRleHQuU2lnbmF0dXJlX2l0ZW0gLT4gKClcbiAgfCBDb250ZXh0LlN0cnVjdHVyZV9pdGVtIC0+ICgpXG4gIHwgY29udGV4dCAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnIFwiJXM6ICVzIGNhbid0IGJlIGlubGluZWRcIiBmdW5jXG4gICAgICAgIChDb250ZXh0LmRlc2MgY29udGV4dClcblxubGV0IHJlYyBmaWx0ZXJfYnlfY29udGV4dCA6XG4gICAgdHlwZSBhLiBhIENvbnRleHQudCAtPiB0IGxpc3QgLT4gYSBGb3JfY29udGV4dC50IGxpc3QgPVxuIGZ1biBjb250ZXh0IGV4cGFuZGVycyAtPlxuICBtYXRjaCBleHBhbmRlcnMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgVCB0IDo6IHJlc3QgLT4gKFxuICAgICAgbWF0Y2ggQ29udGV4dC5lcSBjb250ZXh0IHQuY29udGV4dCB3aXRoXG4gICAgICB8IEVxIC0+IHQgOjogZmlsdGVyX2J5X2NvbnRleHQgY29udGV4dCByZXN0XG4gICAgICB8IE5lIC0+IGZpbHRlcl9ieV9jb250ZXh0IGNvbnRleHQgcmVzdClcblxubGV0IHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgY3R4IChuYW1lLCBfKSA9XG4gIGlmXG4gICAgbm90XG4gICAgICAoTmFtZS5BbGxvd2xpc3RlZC5pc19hbGxvd2xpc3RlZCB+a2luZDpgRXh0ZW5zaW9uIG5hbWUudHh0XG4gICAgICB8fCBOYW1lLmlnbm9yZV9jaGVja3MgbmFtZS50eHQpXG4gIHRoZW5cbiAgICBbXG4gICAgICBOYW1lLlJlZ2lzdHJhci5FcnJvci5jcmVhdGVmIHJlZ2lzdHJhciAoQ29udGV4dC5UIGN0eClcbiAgICAgICAgXCJFeHRlbnNpb24gYCVzJyB3YXMgbm90IHRyYW5zbGF0ZWRcIiBuYW1lO1xuICAgIF1cbiAgZWxzZSBbXVxuXG5sZXQgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uIChuYW1lLCBfKSBhY2MgPVxuICAgICAgYWNjXG4gICAgICBAIFtcbiAgICAgICAgICBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgIFwiZXh0ZW5zaW9uIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuRXh0ZW5zaW9uIG5lZWRzIHVwZGF0aW5nIVwiO1xuICAgICAgICBdXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQdHlwX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDb3JlX3R5cGUgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgcGF0dGVybl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQcGF0X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBQYXR0ZXJuIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI3BhdHRlcm5fZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBleHByZXNzaW9uX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBleHBfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIEV4cHJlc3Npb24gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGN0eV9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc190eXBlX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3RmX2V4dGVuc2lvbiBleHQgLT5cbiAgICAgICAgICBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX3R5cGVfZmllbGQgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGNsX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc19leHByIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZF9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX2ZpZWxkIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX2ZpZWxkX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUG10eV9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgTW9kdWxlX3R5cGUgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjbW9kdWxlX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoZXh0LCBfKSAtPlxuICAgICAgICAgIGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgU2lnbmF0dXJlX2l0ZW0gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjc2lnbmF0dXJlX2l0ZW1fZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbW9kX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBNb2R1bGVfZXhwciBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNtb2R1bGVfZXhwcl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBzdHJfZXh0ZW5zaW9uIChleHQsIF8pIC0+XG4gICAgICAgICAgYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBTdHJ1Y3R1cmVfaXRlbSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggYWNjXG4gIGVuZFxuXG5sZXQgZXJyb3JfbGlzdF90b19leGNlcHRpb24gPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBjaGVja191bnVzZWQgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5pdGVyXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbiAobmFtZSwgXykgPVxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgXCJleHRlbnNpb24gbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5FeHRlbnNpb24gbmVlZHMgdXBkYXRpbmchXCJcblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NvcmVfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIHBhdHRlcm5fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjcGF0dGVybl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjZXhwcmVzc2lvbl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGRfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHJfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfZXhwcl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX2ZpZWxkX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjbW9kdWxlX3R5cGVfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzaWduYXR1cmVfaXRlbV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI21vZHVsZV9leHByX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW1fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc3RydWN0dXJlX2l0ZW1fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuICBlbmRcblxubW9kdWxlIFYzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICAgIFRcbiAgICAgIChNLmRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmN0eHQgfmFyZzpfIC0+XG4gICAgICAgICAgIGsgfmN0eHQpKVxuXG4gIGxldCBkZWNsYXJlX2lubGluZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dCB+ZnVuYzpcIkV4dGVuc2lvbi5kZWNsYXJlX2lubGluZVwiO1xuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBJbmxpbmUgeCkgaW5cbiAgICBUXG4gICAgICAoTS5kZWNsYXJlIH53aXRoX2FyZzpmYWxzZSBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5jdHh0IH5hcmc6XyAtPlxuICAgICAgICAgICBrIH5jdHh0KSlcblxuICBsZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBTaW1wbGUgeCkgaW5cbiAgICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaylcblxuICBsZXQgZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dFxuICAgICAgfmZ1bmM6XCJFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZ1wiO1xuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBJbmxpbmUgeCkgaW5cbiAgICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaylcbmVuZFxuXG5sZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBmID1cbiAgVjMuZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVyblxuICAgIChFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggZilcblxubGV0IGRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuIGYgPVxuICBWMy5kZWNsYXJlX2lubGluZSBuYW1lIGNvbnRleHQgcGF0dGVyblxuICAgIChFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggZilcblxubGV0IGRlY2xhcmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgbGV0IGsnID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGsgaW5cbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaycpXG5cbmxldCBkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBsZXQgaycgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggayBpblxuICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dFxuICAgIH5mdW5jOlwiRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmdcIjtcbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaycpXG5cbmxldCBfX2RlY2xhcmVfcHB4X2ltcG9ydCBuYW1lIGV4cGFuZCA9XG4gICgqIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIHVud3JhcCB0aGUgdHlwZSBkZWNsYXJhdGlvbiBmcm9tIHRoZSBwYXlsb2FkXG4gICAgIGFzc2VtYmxlZCBieSBbQ29udGV4dC5nZXRfcHB4X2ltcG9ydF9leHRlbnNpb25dICopXG4gIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfdHlwZSByZWN1cnNpdmUgKF9fIF46OiBuaWwpIF46OiBuaWwpKSBpblxuICBWMy5kZWNsYXJlIG5hbWUgQ29udGV4dC5QcHhfaW1wb3J0IHBhdHRlcm4gZXhwYW5kXG5cbm1vZHVsZSBWMiA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCBkZWNsYXJlID0gZGVjbGFyZVxuICBsZXQgZGVjbGFyZV9pbmxpbmUgPSBkZWNsYXJlX2lubGluZVxuZW5kXG4iLCIoKiQgb3BlbiBQcHhsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5vcGVuISBJbXBvcnRcbm9wZW4gQ29tbW9uXG5vcGVuIFdpdGhfZXJyb3JzXG5tb2R1bGUgRSA9IEV4dGVuc2lvblxubW9kdWxlIEVDID0gRXh0ZW5zaW9uLkNvbnRleHRcbm1vZHVsZSBBID0gQXR0cmlidXRlXG5tb2R1bGUgQUMgPSBBdHRyaWJ1dGUuQ29udGV4dFxuXG5tb2R1bGUgUnVsZSA9IHN0cnVjdFxuICBtb2R1bGUgQXR0cl9ncm91cF9pbmxpbmUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB1bnBhY2tlZCA9IHtcbiAgICAgIGF0dHJpYnV0ZSA6ICgnYiwgJ2MpIEF0dHJpYnV0ZS50O1xuICAgICAgZXhwZWN0IDogYm9vbDtcbiAgICAgIGV4cGFuZCA6XG4gICAgICAgIGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+XG4gICAgICAgIEFzdHR5cGVzLnJlY19mbGFnIC0+XG4gICAgICAgICdiIGxpc3QgLT5cbiAgICAgICAgJ2Mgb3B0aW9uIGxpc3QgLT5cbiAgICAgICAgJ2EgbGlzdDtcbiAgICB9XG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgXykgdW5wYWNrZWQgLT4gKCdhLCAnYikgdFxuXG4gICAgbGV0IGF0dHJfbmFtZSAoVCB0KSA9IEF0dHJpYnV0ZS5uYW1lIHQuYXR0cmlidXRlXG5cbiAgICBsZXQgc3BsaXRfbm9ybWFsX2FuZF9leHBlY3QgbCA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiBsIH5mOihmdW4gKFQgdCkgLT4gbm90IHQuZXhwZWN0KVxuICBlbmRcblxuICBtb2R1bGUgQXR0cl9pbmxpbmUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB1bnBhY2tlZCA9IHtcbiAgICAgIGF0dHJpYnV0ZSA6ICgnYiwgJ2MpIEF0dHJpYnV0ZS50O1xuICAgICAgZXhwZWN0IDogYm9vbDtcbiAgICAgIGV4cGFuZCA6IGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjIC0+ICdhIGxpc3Q7XG4gICAgfVxuXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2IsIF8pIHVucGFja2VkIC0+ICgnYSwgJ2IpIHRcblxuICAgIGxldCBhdHRyX25hbWUgKFQgdCkgPSBBdHRyaWJ1dGUubmFtZSB0LmF0dHJpYnV0ZVxuXG4gICAgbGV0IHNwbGl0X25vcm1hbF9hbmRfZXhwZWN0IGwgPVxuICAgICAgTGlzdC5wYXJ0aXRpb24gbCB+ZjooZnVuIChUIHQpIC0+IG5vdCB0LmV4cGVjdClcbiAgZW5kXG5cbiAgbW9kdWxlIFNwZWNpYWxfZnVuY3Rpb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAgaWRlbnQgOiBMb25naWRlbnQudDtcbiAgICAgIGV4cGFuZCA6IFBhcnNldHJlZS5leHByZXNzaW9uIC0+IFBhcnNldHJlZS5leHByZXNzaW9uIG9wdGlvbjtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBDb25zdGFudF9raW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRmxvYXQgfCBJbnRlZ2VyXG4gIGVuZFxuXG4gIG1vZHVsZSBDb25zdGFudCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIHN1ZmZpeCA6IGNoYXI7XG4gICAgICBraW5kIDogQ29uc3RhbnRfa2luZC50O1xuICAgICAgZXhwYW5kIDogTG9jYXRpb24udCAtPiBzdHJpbmcgLT4gUGFyc2V0cmVlLmV4cHJlc3Npb247XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgRmllbGQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBFeHRlbnNpb24gOiBFeHRlbnNpb24udCB0XG4gICAgICB8IFNwZWNpYWxfZnVuY3Rpb24gOiBTcGVjaWFsX2Z1bmN0aW9uLnQgdFxuICAgICAgfCBDb25zdGFudCA6IENvbnN0YW50LnQgdFxuICAgICAgfCBBdHRyX3N0cl90eXBlX2RlY2xcbiAgICAgICAgICA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9ncm91cF9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2dyb3VwX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHN0cnVjdHVyZV9pdGVtLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICAgICAgICA6IChzaWduYXR1cmVfaXRlbSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl90eXBlX2V4dCA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9leHRlbnNpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ190eXBlX2V4dCA6IChzaWduYXR1cmVfaXRlbSwgdHlwZV9leHRlbnNpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl9leGNlcHRpb24gOiAoc3RydWN0dXJlX2l0ZW0sIHR5cGVfZXhjZXB0aW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfZXhjZXB0aW9uIDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2V4Y2VwdGlvbikgQXR0cl9pbmxpbmUudCB0XG5cbiAgICB0eXBlIChfLCBfKSBlcXVhbGl0eSA9IEVxIDogKCdhLCAnYSkgZXF1YWxpdHkgfCBOZSA6IChfLCBfKSBlcXVhbGl0eVxuXG4gICAgbGV0IGVxIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIGVxdWFsaXR5ID1cbiAgICAgZnVuIGEgYiAtPlxuICAgICAgbWF0Y2ggKGEsIGIpIHdpdGhcbiAgICAgIHwgRXh0ZW5zaW9uLCBFeHRlbnNpb24gLT4gRXFcbiAgICAgIHwgU3BlY2lhbF9mdW5jdGlvbiwgU3BlY2lhbF9mdW5jdGlvbiAtPiBFcVxuICAgICAgfCBDb25zdGFudCwgQ29uc3RhbnQgLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9kZWNsLCBBdHRyX3N0cl90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9kZWNsLCBBdHRyX3NpZ190eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9leHQsIEF0dHJfc3RyX3R5cGVfZXh0IC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZXh0LCBBdHRyX3NpZ190eXBlX2V4dCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl9leGNlcHRpb24sIEF0dHJfc3RyX2V4Y2VwdGlvbiAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ19leGNlcHRpb24sIEF0dHJfc2lnX2V4Y2VwdGlvbiAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsLCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wsIEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgXyAtPiBOZVxuICBlbmRcblxuICB0eXBlIHQgPSBUIDogJ2EgRmllbGQudCAqICdhIC0+IHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSBhdHRyX2dyb3VwX2lubGluZSA9XG4gICAgKCdiLCAnYykgQXR0cmlidXRlLnQgLT5cbiAgICAoY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT5cbiAgICBBc3R0eXBlcy5yZWNfZmxhZyAtPlxuICAgICdiIGxpc3QgLT5cbiAgICAnYyBvcHRpb24gbGlzdCAtPlxuICAgICdhIGxpc3QpIC0+XG4gICAgdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGF0dHJfaW5saW5lID1cbiAgICAoJ2IsICdjKSBBdHRyaWJ1dGUudCAtPlxuICAgIChjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPiAnYiAtPiAnYyAtPiAnYSBsaXN0KSAtPlxuICAgIHRcblxuICBsZXQgcmVjIGZpbHRlciA6IHR5cGUgYS4gYSBGaWVsZC50IC0+IHQgbGlzdCAtPiBhIGxpc3QgPVxuICAgZnVuIGZpZWxkIGwgLT5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCBUIChmaWVsZCcsIHgpIDo6IGwgLT4gKFxuICAgICAgICBtYXRjaCBGaWVsZC5lcSBmaWVsZCBmaWVsZCcgd2l0aFxuICAgICAgICB8IEZpZWxkLkVxIC0+IHggOjogZmlsdGVyIGZpZWxkIGxcbiAgICAgICAgfCBGaWVsZC5OZSAtPiBmaWx0ZXIgZmllbGQgbClcblxuICBsZXQgZXh0ZW5zaW9uIGV4dCA9IFQgKEV4dGVuc2lvbiwgZXh0KVxuXG4gIGxldCBzcGVjaWFsX2Z1bmN0aW9uIGlkIGYgPVxuICAgIFQgKFNwZWNpYWxfZnVuY3Rpb24sIHsgbmFtZSA9IGlkOyBpZGVudCA9IExvbmdpZGVudC5wYXJzZSBpZDsgZXhwYW5kID0gZiB9KVxuXG4gIGxldCBjb25zdGFudCBraW5kIHN1ZmZpeCBleHBhbmQgPSBUIChDb25zdGFudCwgeyBzdWZmaXg7IGtpbmQ7IGV4cGFuZCB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb24gYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbiBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19leGNlcHRpb25fZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5lbmRcblxubW9kdWxlIEdlbmVyYXRlZF9jb2RlX2hvb2sgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBzaW5nbGVfb3JfbWFueSA9IFNpbmdsZSBvZiAnYSB8IE1hbnkgb2YgJ2EgbGlzdFxuXG4gIHR5cGUgdCA9IHtcbiAgICBmIDogJ2EuICdhIEV4dGVuc2lvbi5Db250ZXh0LnQgLT4gTG9jYXRpb24udCAtPiAnYSBzaW5nbGVfb3JfbWFueSAtPiB1bml0O1xuICB9XG5cbiAgbGV0IG5vcCA9IHsgZiA9IChmdW4gXyBfIF8gLT4gKCkpIH1cbiAgbGV0IHJlcGxhY2UgdCBjb250ZXh0IGxvYyB4ID0gdC5mIGNvbnRleHQgbG9jIHhcblxuICBsZXQgaW5zZXJ0X2FmdGVyIHQgY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBNYW55IFtdIC0+ICgpXG4gICAgfCBfIC0+IHQuZiBjb250ZXh0IHsgbG9jIHdpdGggbG9jX3N0YXJ0ID0gbG9jLmxvY19lbmQgfSB4XG5lbmRcblxuKCogVXNlZCB0byBpbnNlcnQgZXJyb3IgZXh0ZW5zaW9ucyAqKVxubGV0IHdyYXBfZXh0ZW5zaW9uIDogdHlwZSBhLiBsb2M6TG9jYXRpb24udCAtPiBhIEVDLnQgLT4gYSAtPiBleHRlbnNpb24gLT4gYSA9XG4gZnVuIH5sb2MgdCBvcmlnaW5hbF9ub2RlIGV4dGVuc2lvbiAtPlxuICAoKiBQcmVmaXhpbmcgY29uc3RydWN0b3JzIHdpdGggdGhlIG1vZHVsZSBwYXRoIGlzIG5lY2Vzc2FyeSBmb3IgT0NhbWwgPCA0LjA3LFxuICAgICBzZWUgaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vlcy82ODUyICopXG4gIG1hdGNoIHQgd2l0aFxuICB8IEVDLkNsYXNzX2V4cHIgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wY2xfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuQ2xhc3NfZmllbGQgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wY2ZfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuQ2xhc3NfdHlwZSAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjdHlfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuQ2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjdGZfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuQ29yZV90eXBlIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucHR5cF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5FeHByZXNzaW9uIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucGV4cF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5Nb2R1bGVfZXhwciAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBtb2RfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuTW9kdWxlX3R5cGUgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wbXR5X2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLlBhdHRlcm4gLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wcGF0X2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLlNpZ25hdHVyZV9pdGVtIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYyBleHRlbnNpb24gW11cbiAgfCBFQy5TdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uIFtdXG4gIHwgRUMuUHB4X2ltcG9ydCAtPlxuICAgICAgKCogSW5zZXJ0IHRoZSBlcnJvciBpbiB0aGUgdHlwZSBkZWNsIG1hbmlmZXN0ICopXG4gICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPVxuICAgICAgICBTb21lIChBc3RfYnVpbGRlci5EZWZhdWx0LnB0eXBfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uKVxuICAgICAgaW5cbiAgICAgIHsgb3JpZ2luYWxfbm9kZSB3aXRoIHB0eXBlX21hbmlmZXN0IH1cblxubGV0IGV4bl90b19leHRlbnNpb24gZXhuID1cbiAgbGV0IGVycm9yID0gZXhuX3RvX2xvY19lcnJvciBleG4gaW5cbiAgbGV0IGxvYyA9IExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvciBpblxuICBsZXQgZXh0ZW5zaW9uID0gTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yIGluXG4gIChleHRlbnNpb24sIGxvYylcblxubGV0IGV4bl90b19lcnJvcl9leHRlbnNpb24gY29udGV4dCBvcmlnaW5hbF9ub2RlIGV4biA9XG4gIGxldCBleHRlbnNpb24sIGxvYyA9IGV4bl90b19leHRlbnNpb24gZXhuIGluXG4gIHdyYXBfZXh0ZW5zaW9uIH5sb2MgY29udGV4dCBvcmlnaW5hbF9ub2RlIGV4dGVuc2lvblxuXG5sZXQgZXhuX3RvX3N0cmkgZXhuID1cbiAgbGV0IGV4dGVuc2lvbiwgbG9jID0gZXhuX3RvX2V4dGVuc2lvbiBleG4gaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvbiBbXVxuXG5sZXQgZXhuX3RvX3NpZ2kgZXhuID1cbiAgbGV0IGV4dGVuc2lvbiwgbG9jID0gZXhuX3RvX2V4dGVuc2lvbiBleG4gaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvbiBbXVxuXG5sZXQgcmVjIG1hcF9ub2RlX3JlYyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgbG9jIGJhc2VfY3R4dCB4IH5lbWJlZF9lcnJvcnMgPVxuICBsZXQgY3R4dCA9XG4gICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2M6bG9jIH5iYXNlOmJhc2VfY3R4dCAoKVxuICBpblxuICBtYXRjaCBFQy5nZXRfZXh0ZW5zaW9uIGNvbnRleHQgeCB3aXRoXG4gIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gIHwgU29tZSAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgKHRyeVxuICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHRcbiAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgIFdpdGhfZXJyb3JzLnJldHVybiAoU29tZSAoZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBjb250ZXh0IHggZXhuKSkpXG4gICAgICA+Pj0gZnVuIGNvbnZlcnRlZCAtPlxuICAgICAgbWF0Y2ggY29udmVydGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIEVDLm1lcmdlX2F0dHJpYnV0ZXNfcmVzIGNvbnRleHQgeCBhdHRyc1xuICAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDp4XG4gICAgICAgICAgPj49IGZ1biB4IC0+XG4gICAgICAgICAgbWFwX25vZGVfcmVjIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0IHggfmVtYmVkX2Vycm9ycylcblxubGV0IG1hcF9ub2RlIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0IHggfmhvb2sgfmVtYmVkX2Vycm9ycyA9XG4gIGxldCBjdHh0ID1cbiAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYzpsb2MgfmJhc2U6YmFzZV9jdHh0ICgpXG4gIGluXG4gIG1hdGNoIEVDLmdldF9leHRlbnNpb24gY29udGV4dCB4IHdpdGhcbiAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgfCBTb21lIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAodHJ5XG4gICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgV2l0aF9lcnJvcnMucmV0dXJuIChTb21lIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIGNvbnRleHQgeCBleG4pKSlcbiAgICAgID4+PSBmdW4gY29udmVydGVkIC0+XG4gICAgICBtYXRjaCBjb252ZXJ0ZWQgd2l0aFxuICAgICAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgbWFwX25vZGVfcmVjIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0XG4gICAgICAgICAgICAoRUMubWVyZ2VfYXR0cmlidXRlcyBjb250ZXh0IHggYXR0cnMpXG4gICAgICAgICAgICB+ZW1iZWRfZXJyb3JzXG4gICAgICAgICAgPj58IGZ1biBnZW5lcmF0ZWRfY29kZSAtPlxuICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIGNvbnRleHQgbG9jIChTaW5nbGUgZ2VuZXJhdGVkX2NvZGUpO1xuICAgICAgICAgIGdlbmVyYXRlZF9jb2RlKVxuXG5sZXQgcmVjIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9vayB+ZW1iZWRfZXJyb3JzXG4gICAgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmV0dXJuIFtdXG4gIHwgeCA6OiBsIC0+IChcbiAgICAgIG1hdGNoIEVDLmdldF9leHRlbnNpb24gY29udGV4dCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIFRoZXNlIHR3byBsZXRzIGZvcmNlIHRoZSBldmFsdWF0aW9uIG9yZGVyLCBzbyB0aGF0IGVycm9ycyBhcmUgcmVwb3J0ZWQgaW4gdGhlXG4gICAgICAgICAgICAgc2FtZSBvcmRlciBhcyB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGZpbGUuICopXG4gICAgICAgICAgc3VwZXJfY2FsbCBiYXNlX2N0eHQgeCA+Pj0gZnVuIHggLT5cbiAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2tcbiAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgPj58IGZ1biBsIC0+IHggOjogbFxuICAgICAgfCBTb21lIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAgICAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgPSBnZXRfbG9jIHggaW5cbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICBpblxuICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfaW5saW5lX3JlcyB0cyB+Y3R4dCBleHRcbiAgICAgICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgIFdpdGhfZXJyb3JzLnJldHVybiAoU29tZSBbIGV4bl90b19lcnJvcl9leHRlbnNpb24gY29udGV4dCB4IGV4biBdKSlcbiAgICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgc3VwZXJfY2FsbCBiYXNlX2N0eHQgeCA+Pj0gZnVuIHggLT5cbiAgICAgICAgICAgICAgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rXG4gICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgPj58IGZ1biBsIC0+IHggOjogbFxuICAgICAgICAgIHwgU29tZSBjb252ZXJ0ZWQgLT5cbiAgICAgICAgICAgICAgKCgpLCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycykgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGNvbnZlcnRlZCB+aG9va1xuICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlOnRydWVcbiAgICAgICAgICAgICAgPj49IGZ1biBnZW5lcmF0ZWRfY29kZSAtPlxuICAgICAgICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIGNvbnRleHQgZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICAgICAgKE1hbnkgZ2VuZXJhdGVkX2NvZGUpO1xuICAgICAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2tcbiAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICA+PnwgZnVuIGNvZGUgLT4gZ2VuZXJhdGVkX2NvZGUgQCBjb2RlKSlcblxubGV0IG1hcF9ub2RlcyA9IG1hcF9ub2RlcyB+aW5fZ2VuZXJhdGVkX2NvZGU6ZmFsc2VcblxubGV0IHRhYmxlX29mX3NwZWNpYWxfZnVuY3Rpb25zIHNwZWNpYWxfZnVuY3Rpb25zID1cbiAgbWF0Y2hcbiAgICBMaXN0Lm1hcCBzcGVjaWFsX2Z1bmN0aW9uc1xuICAgICAgfmY6KGZ1biB7IFJ1bGUuU3BlY2lhbF9mdW5jdGlvbi5pZGVudDsgZXhwYW5kOyBfIH0gLT4gKGlkZW50LCBleHBhbmQpKVxuICAgICgqIFdlIGV4cGVjdCB0aGUgbG9va3VwIHRvIGZhaWwgbW9zdCBvZiB0aGUgdGltZSwgYnkgbWFraW5nIHRoZSB0YWJsZSBiaWcgKGFuZFxuICAgICAgIHNwYXJzZSksIHdlIG1ha2UgaXQgbW9yZSBsaWtlbHkgdG8gZmFpbCBxdWlja2x5ICopXG4gICAgfD4gSGFzaHRibC5vZl9hbGlzdCB+c2l6ZToobWF4IDEwMjQgKExpc3QubGVuZ3RoIHNwZWNpYWxfZnVuY3Rpb25zICogMikpXG4gIHdpdGhcbiAgfCBPayB0YWJsZSAtPiB0YWJsZVxuICB8IEVycm9yIGlkZW50IC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgICAgXCJDb250ZXh0X2ZyZWUuVjEubWFwX3RvcF9kb3duOiAlcyBwcmVzZW50IHR3aWNlIGluIGxpc3Qgb2Ygc3BlY2lhbCBcXFxuICAgICAgICAgZnVuY3Rpb25zXCJcbiAgICAgICAgKExpc3QuZmluZF9tYXBfZXhuIHNwZWNpYWxfZnVuY3Rpb25zIH5mOihmdW4gciAtPlxuICAgICAgICAgICAgIGlmIFBvbHkuZXF1YWwgci5pZGVudCBpZGVudCB0aGVuIFNvbWUgci5uYW1lIGVsc2UgTm9uZSkpXG5cbigqIFtnZXRfZ3JvdXAgYXR0ciBsXSByZXR1cm5zIHRoZSBsaXN0IG9mIHRoZSBhdHRyaWJ1dGVzIGZvciBlYWNoXG4gICBub2RlIGluIFtsXS5cbiAgIElmIFtsXSBpcyBlbXB0eSBvciBpZiBub25lIG9mIHRoZSBub2RlcyBpbiBbbF0gaGF2ZSBhbiBhdHRyaWJ1dGUgYXR0YWNoZWQsXG4gICBbZ2V0X2dyb3VwXSByZXR1cm5zIFtOb25lXS5cbiAgIElmIFtsXSBpcyBub3QgZW1wdHkgYW5kIGF0IGxlYXN0IG9uZSBvZiB0aGUgbm9kZXMgaW4gW2xdIGhhcyBhbiBhdHRyaWJ1ZVxuICAgYXR0YWNoZWQsIFtnZXRfZ3JvdXBdIHJldHVybnMgdGhlIGVxdWl2YWxlbnQgb2ZcbiAgIFtTb21lIChMaXN0Lm1hcCB+ZjooQXR0cmlidXRlLmdldCBhdHRyKSBsKV0uICopXG5sZXQgcmVjIGdldF9ncm91cCBhdHRyIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICB8IHggOjogbCAtPiAoXG4gICAgICBnZXRfZ3JvdXAgYXR0ciBsID4+PSBmdW4gZ3JvdXAgLT5cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGF0dHIgeCB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZSA+PnwgZnVuIGF0dHIyIC0+XG4gICAgICBtYXRjaCAoYXR0cjIsIGdyb3VwKSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgICAgfCBOb25lLCBTb21lIHZhbHMgLT4gU29tZSAoTm9uZSA6OiB2YWxzKVxuICAgICAgfCBTb21lIHZhbHVlLCBOb25lIC0+IFNvbWUgKFNvbWUgdmFsdWUgOjogTGlzdC5tYXAgbCB+ZjooZnVuIF8gLT4gTm9uZSkpXG4gICAgICB8IFNvbWUgdmFsdWUsIFNvbWUgdmFscyAtPiBTb21lIChTb21lIHZhbHVlIDo6IHZhbHMpKVxuXG4oKiBTYW1lIGFzIFtMaXN0LnJldl0gdGhlbiBbTGlzdC5jb25jYXRdIGJ1dCBleHBlY3RpbmcgdGhlIGlucHV0IHRvIGJlIG9mIGxlbmd0aCA8PSAyICopXG5sZXQgcmV2X2NvbmNhdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCBbIHggXSAtPiB4XG4gIHwgWyB4OyB5IF0gLT4geSBAIHhcbiAgfCBsIC0+IExpc3QuY29uY2F0IChMaXN0LnJldiBsKVxuXG5sZXQgc29ydF9hdHRyX2dyb3VwX2lubGluZSBsID1cbiAgTGlzdC5zb3J0IGwgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgU3RyaW5nLmNvbXBhcmVcbiAgICAgICAgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuYXR0cl9uYW1lIGEpXG4gICAgICAgIChSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLmF0dHJfbmFtZSBiKSlcblxubGV0IHNvcnRfYXR0cl9pbmxpbmUgbCA9XG4gIExpc3Quc29ydCBsIH5jbXA6KGZ1biBhIGIgLT5cbiAgICAgIFN0cmluZy5jb21wYXJlXG4gICAgICAgIChSdWxlLkF0dHJfaW5saW5lLmF0dHJfbmFtZSBhKVxuICAgICAgICAoUnVsZS5BdHRyX2lubGluZS5hdHRyX25hbWUgYikpXG5cbmxldCBjb250ZXh0X2ZyZWVfYXR0cmlidXRlX21vZGlmaWNhdGlvbiB+bG9jID1cbiAgRXJyb3JcbiAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvY1xuICAgICAgICBcIkEgY29udGV4dC1mcmVlIHJ1bGUgZGVsZXRlZCBvciBhZGRlZCBhdHRyaWJ1ZXMgb2YgYSBzdHIvc2lnIGl0ZW1cIixcbiAgICAgIFtdIClcblxuKCogUmV0dXJucyB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgYXR0cmlidXRlIGhhbmRsZXJzLiBXZSBkb24ndCByZW1vdmUgdGhlc2UgYXR0cmlidXRlcywgYXNcbiAgIGFub3RoZXIgcGFzcyBtaWdodCBpbnRlcnByZXQgdGhlbSBsYXRlci4gRm9yIGluc3RhbmNlIGJvdGggcHB4X2Rlcml2aW5nIGFuZFxuICAgcHB4bGliX2Rlcml2aW5nIGludGVycHJldHMgW0BAZGVyaXZpbmddIGF0dHJpYnV0ZXMuXG5cbiAgIFRoaXMgY29tcGxleGl0eSBpcyBob3JyaWJsZSwgYnV0IGluIHByYWN0aWNlIHdlIGRvbid0IGNhcmUgYXMgW2F0dHJzXSBpcyBhbHdheXMgYSBsaXN0XG4gICBvZiBvbmUgZWxlbWVudDsgaXQgb25seSBoYXMgW0BAZGVyaXZpbmddLlxuKilcbmxldCBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cnMgcmYgfml0ZW1zIH5leHBhbmRlZF9pdGVtcyB+bG9jIH5iYXNlX2N0eHRcbiAgICB+ZW1iZWRfZXJyb3JzIH5jb252ZXJ0X2V4biA9XG4gIExpc3QuZm9sZF9sZWZ0IGF0dHJzIH5pbml0OihyZXR1cm4gW10pXG4gICAgfmY6KGZ1biBhY2MgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuVCBncm91cCkgLT5cbiAgICAgIGFjYyA+Pj0gZnVuIGFjYyAtPlxuICAgICAgZ2V0X2dyb3VwIGdyb3VwLmF0dHJpYnV0ZSBpdGVtcyA+Pj0gZnVuIGcxIC0+XG4gICAgICBnZXRfZ3JvdXAgZ3JvdXAuYXR0cmlidXRlIGV4cGFuZGVkX2l0ZW1zID4+PSBmdW4gZzIgLT5cbiAgICAgIG1hdGNoIChnMSwgZzIpIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiByZXR1cm4gYWNjXG4gICAgICB8IE5vbmUsIFNvbWUgXyB8IFNvbWUgXywgTm9uZSAtPlxuICAgICAgICAgIGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OmFjY1xuICAgICAgfCBTb21lIHZhbHVlcywgU29tZSBfIC0+IChcbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLm1ha2UgfmRlcml2ZWRfaXRlbV9sb2M6bG9jXG4gICAgICAgICAgICAgIH5pbmxpbmU6Z3JvdXAuZXhwZWN0IH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZXhwZWN0X2l0ZW1zID0gZ3JvdXAuZXhwYW5kIH5jdHh0IHJmIGV4cGFuZGVkX2l0ZW1zIHZhbHVlcyBpblxuICAgICAgICAgICAgcmV0dXJuIChleHBlY3RfaXRlbXMgOjogYWNjKVxuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3JfaXRlbSA9IFsgY29udmVydF9leG4gZXhuIF0gaW5cbiAgICAgICAgICAgIHJldHVybiAoZXJyb3JfaXRlbSA6OiBhY2MpKSlcblxubGV0IGhhbmRsZV9hdHRyX2lubGluZSBhdHRycyB+Y29udmVydF9leG4gfml0ZW0gfmV4cGFuZGVkX2l0ZW0gfmxvYyB+YmFzZV9jdHh0XG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIExpc3QuZm9sZF9sZWZ0IGF0dHJzIH5pbml0OihyZXR1cm4gW10pIH5mOihmdW4gYWNjIChSdWxlLkF0dHJfaW5saW5lLlQgYSkgLT5cbiAgICAgIGFjYyA+Pj0gZnVuIGFjYyAtPlxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgYS5hdHRyaWJ1dGUgaXRlbSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgPj49IGZ1biBnMSAtPlxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgYS5hdHRyaWJ1dGUgZXhwYW5kZWRfaXRlbSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgPj49IGZ1biBnMiAtPlxuICAgICAgbWF0Y2ggKGcxLCBnMikgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IHJldHVybiBhY2NcbiAgICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+XG4gICAgICAgICAgY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljYXRpb24gfmxvYyB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6YWNjXG4gICAgICB8IFNvbWUgdmFsdWUsIFNvbWUgXyAtPiAoXG4gICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5tYWtlIH5kZXJpdmVkX2l0ZW1fbG9jOmxvY1xuICAgICAgICAgICAgICB+aW5saW5lOmEuZXhwZWN0IH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZXhwZWN0X2l0ZW1zID0gYS5leHBhbmQgfmN0eHQgZXhwYW5kZWRfaXRlbSB2YWx1ZSBpblxuICAgICAgICAgICAgcmV0dXJuIChleHBlY3RfaXRlbXMgOjogYWNjKVxuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3JfaXRlbSA9IFsgY29udmVydF9leG4gZXhuIF0gaW5cbiAgICAgICAgICAgIHJldHVybiAoZXJyb3JfaXRlbSA6OiBhY2MpKSlcblxubW9kdWxlIEV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBmIDogJ2EuICdhIEF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0LnQgLT4gTG9jYXRpb24udCAtPiAnYSBsaXN0IC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgbm9wID0geyBmID0gKGZ1biBfIF8gXyAtPiAoKSkgfVxuZW5kXG5cbmNsYXNzIG1hcF90b3BfZG93biA/KGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wKVxuICA/KGdlbmVyYXRlZF9jb2RlX2hvb2sgPSBHZW5lcmF0ZWRfY29kZV9ob29rLm5vcCkgPyhlbWJlZF9lcnJvcnMgPSBmYWxzZSkgcnVsZXNcbiAgPVxuICBsZXQgaG9vayA9IGdlbmVyYXRlZF9jb2RlX2hvb2sgaW5cblxuICBsZXQgc3BlY2lhbF9mdW5jdGlvbnMgPVxuICAgIFJ1bGUuZmlsdGVyIFNwZWNpYWxfZnVuY3Rpb24gcnVsZXMgfD4gdGFibGVfb2Zfc3BlY2lhbF9mdW5jdGlvbnNcbiAgaW5cbiAgbGV0IGNvbnN0YW50cyA9XG4gICAgUnVsZS5maWx0ZXIgQ29uc3RhbnQgcnVsZXNcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIChjIDogUnVsZS5Db25zdGFudC50KSAtPiAoKGMuc3VmZml4LCBjLmtpbmQpLCBjLmV4cGFuZCkpXG4gICAgfD4gSGFzaHRibC5vZl9hbGlzdF9leG5cbiAgaW5cbiAgbGV0IGV4dGVuc2lvbnMgPSBSdWxlLmZpbHRlciBFeHRlbnNpb24gcnVsZXMgaW5cbiAgbGV0IGNsYXNzX2V4cHIgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX2V4cHIgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfZmllbGQgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX2ZpZWxkIGV4dGVuc2lvbnNcbiAgYW5kIGNsYXNzX3R5cGUgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX3R5cGUgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfdHlwZV9maWVsZCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfdHlwZV9maWVsZCBleHRlbnNpb25zXG4gIGFuZCBjb3JlX3R5cGUgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNvcmVfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBleHByZXNzaW9uID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5leHByZXNzaW9uIGV4dGVuc2lvbnNcbiAgYW5kIG1vZHVsZV9leHByID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5tb2R1bGVfZXhwciBleHRlbnNpb25zXG4gIGFuZCBtb2R1bGVfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMubW9kdWxlX3R5cGUgZXh0ZW5zaW9uc1xuICBhbmQgcGF0dGVybiA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMucGF0dGVybiBleHRlbnNpb25zXG4gIGFuZCBzaWduYXR1cmVfaXRlbSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuc2lnbmF0dXJlX2l0ZW0gZXh0ZW5zaW9uc1xuICBhbmQgc3RydWN0dXJlX2l0ZW0gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLnN0cnVjdHVyZV9pdGVtIGV4dGVuc2lvbnNcbiAgYW5kIHBweF9pbXBvcnQgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLlBweF9pbXBvcnQgZXh0ZW5zaW9ucyBpblxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2xzLCBhdHRyX3N0cl90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2dyb3VwX2lubGluZSB8PiBSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ190eXBlX2RlY2xzLCBhdHRyX3NpZ190eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2dyb3VwX2lubGluZSB8PiBSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzLCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzLCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgYXR0cl9zdHJfdHlwZV9leHRzLCBhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl90eXBlX2V4dCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfdHlwZV9leHRzLCBhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ190eXBlX2V4dCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb25zLCBhdHRyX3N0cl9leGNlcHRpb25zX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfZXhjZXB0aW9uIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ19leGNlcHRpb25zLCBhdHRyX3NpZ19leGNlcHRpb25zX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfZXhjZXB0aW9uIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IG1hcF9ub2RlID0gbWFwX25vZGUgfmhvb2sgfmVtYmVkX2Vycm9ycyBpblxuICBsZXQgbWFwX25vZGVzID0gbWFwX25vZGVzIH5ob29rIH5lbWJlZF9lcnJvcnMgaW5cbiAgbGV0IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSA9IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSB+ZW1iZWRfZXJyb3JzIGluXG4gIGxldCBoYW5kbGVfYXR0cl9pbmxpbmUgPSBoYW5kbGVfYXR0cl9pbmxpbmUgfmVtYmVkX2Vycm9ycyBpblxuXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXBfd2l0aF9leHBhbnNpb25fY29udGV4dF9hbmRfZXJyb3JzIGFzIHN1cGVyXG5cbiAgICAoKiBObyBwb2ludCByZWN1cnNpbmcgaW50byBldmVyeSBsb2NhdGlvbiAqKVxuICAgIG1ldGhvZCEgbG9jYXRpb24gXyB4ID0gcmV0dXJuIHhcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNvcmVfdHlwZSBjb3JlX3R5cGUgc3VwZXIjY29yZV90eXBlIHgucHR5cF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgcGF0dGVybiBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5wYXR0ZXJuIHBhdHRlcm4gc3VwZXIjcGF0dGVybiB4LnBwYXRfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24gYmFzZV9jdHh0IGUgPVxuICAgICAgbGV0IHdpdGhfY29udGV4dCA9XG4gICAgICAgICgqIE1ha2Ugc3VyZSBjb2RlLXBhdGggYXR0cmlidXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cGFuZGluZy4gKilcbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgQXN0X3RyYXZlcnNlLmVudGVyX3ZhbHVlIGUgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj49IGZ1biBvcHRpb24gLT5cbiAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJldHVybiAoYmFzZV9jdHh0LCBlKVxuICAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+XG4gICAgICAgICAgICBBdHRyaWJ1dGUucmVtb3ZlX3NlZW5fcmVzIEV4cHJlc3Npb25cbiAgICAgICAgICAgICAgWyBUIEFzdF90cmF2ZXJzZS5lbnRlcl92YWx1ZSBdXG4gICAgICAgICAgICAgIGVcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDplXG4gICAgICAgICAgICA+PnwgZnVuIGUgLT5cbiAgICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2MgdHh0IGJhc2VfY3R4dCwgZSlcbiAgICAgIGluXG4gICAgICB3aXRoX2NvbnRleHQgPj49IGZ1biAoYmFzZV9jdHh0LCBlKSAtPlxuICAgICAgbGV0IGV4cGFuZGVkID1cbiAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICAgIG1hcF9ub2RlIEVDLmV4cHJlc3Npb24gZXhwcmVzc2lvblxuICAgICAgICAgICAgICAoZnVuIF8gZSAtPiByZXR1cm4gZSlcbiAgICAgICAgICAgICAgZS5wZXhwX2xvYyBiYXNlX2N0eHQgZVxuICAgICAgICB8IF8gLT4gcmV0dXJuIGVcbiAgICAgIGluXG4gICAgICBleHBhbmRlZCA+Pj0gZnVuIGUgLT5cbiAgICAgIGxldCBleHBhbmRfY29uc3RhbnQga2luZCBjaGFyIHRleHQgPVxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IGNvbnN0YW50cyAoY2hhciwga2luZCkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZVxuICAgICAgICB8IFNvbWUgZXhwYW5kIC0+IHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgKGV4cGFuZCBlLnBleHBfbG9jIHRleHQpXG4gICAgICBpblxuICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX2FwcGx5ICgoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IGlkOyBfIH0gYXMgZnVuYyksIGFyZ3MpIC0+IChcbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHNwZWNpYWxfZnVuY3Rpb25zIGlkLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHNlbGYjcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuYyBhcmdzXG4gICAgICAgICAgfCBTb21lIHBhdHRlcm4gLT4gKFxuICAgICAgICAgICAgICBsZXQgZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICAgICAgICAgIHRyeSByZXR1cm4gKHBhdHRlcm4gZSlcbiAgICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChTb21lIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIEVDLmV4cHJlc3Npb24gZSBleG4pKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBnZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgc2VsZiNwZXhwX2FwcGx5X3dpdGhvdXRfdHJhdmVyc2luZ19mdW5jdGlvbiBiYXNlX2N0eHQgZSBmdW5jXG4gICAgICAgICAgICAgICAgICAgIGFyZ3NcbiAgICAgICAgICAgICAgfCBTb21lIGUgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBlKSlcbiAgICAgIHwgUGV4cF9pZGVudCBpZCAtPiAoXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCBzcGVjaWFsX2Z1bmN0aW9ucyBpZC50eHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgICAgfCBTb21lIHBhdHRlcm4gLT4gKFxuICAgICAgICAgICAgICBsZXQgZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICAgICAgICAgIHRyeSByZXR1cm4gKHBhdHRlcm4gZSlcbiAgICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChTb21lIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIEVDLmV4cHJlc3Npb24gZSBleG4pKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBnZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgICAgICAgIHwgU29tZSBlIC0+IHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZSkpXG4gICAgICB8IFBleHBfY29uc3RhbnQgKFBjb25zdF9pbnRlZ2VyIChzLCBTb21lIGMpKSAtPiAoXG4gICAgICAgICAgdHJ5IGV4cGFuZF9jb25zdGFudCBJbnRlZ2VyIGMgc1xuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICByZXR1cm4gKGV4bl90b19lcnJvcl9leHRlbnNpb24gRUMuZXhwcmVzc2lvbiBlIGV4bikpXG4gICAgICB8IFBleHBfY29uc3RhbnQgKFBjb25zdF9mbG9hdCAocywgU29tZSBjKSkgLT4gKFxuICAgICAgICAgIHRyeSBleHBhbmRfY29uc3RhbnQgRmxvYXQgYyBzXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIHJldHVybiAoZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBFQy5leHByZXNzaW9uIGUgZXhuKSlcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG5cbiAgICAoKiBQcmUtY29uZGl0aW9uczpcbiAgICAgICAtIGUucGV4cF9kZXNjID0gUGV4cF9hcHBseShmdW5jLCBhcmdzKVxuICAgICAgIC0gZnVuYy5wZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF9cbiAgICAqKVxuICAgIG1ldGhvZCBwcml2YXRlIHBleHBfYXBwbHlfd2l0aG91dF90cmF2ZXJzaW5nX2Z1bmN0aW9uIGJhc2VfY3R4dCBlIGZ1bmMgYXJnc1xuICAgICAgICA9XG4gICAgICBsZXQgeyBwZXhwX2Rlc2MgPSBfOyBwZXhwX2xvYzsgcGV4cF9hdHRyaWJ1dGVzOyBwZXhwX2xvY19zdGFjayB9ID0gZSBpblxuICAgICAgbGV0IGZ1bmMgPVxuICAgICAgICBsZXQgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2F0dHJpYnV0ZXM7IHBleHBfbG9jX3N0YWNrIH0gPSBmdW5jIGluXG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBiYXNlX2N0eHQgcGV4cF9hdHRyaWJ1dGVzID4+fCBmdW4gcGV4cF9hdHRyaWJ1dGVzIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBwZXhwX2Rlc2M7XG4gICAgICAgICAgcGV4cF9sb2MgKCogbG9jYXRpb24gZG9lc24ndCBuZWVkIHRvIGJlIHRyYXZlcnNlZCAqKTtcbiAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBmdW5jID4+PSBmdW4gZnVuYyAtPlxuICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICBMaXN0Lm1hcCBhcmdzIH5mOihmdW4gKGxhYiwgZXhwKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBleHAgPj58IGZ1biBleHAgLT4gKGxhYiwgZXhwKSlcbiAgICAgICAgfD4gY29tYmluZV9lcnJvcnNcbiAgICAgIGluXG4gICAgICBhcmdzID4+PSBmdW4gYXJncyAtPlxuICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJhc2VfY3R4dCBwZXhwX2F0dHJpYnV0ZXMgPj58IGZ1biBwZXhwX2F0dHJpYnV0ZXMgLT5cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgIHBleHBfYXR0cmlidXRlcztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoZnVuYywgYXJncyk7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrO1xuICAgICAgfVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX3R5cGUgY2xhc3NfdHlwZSBzdXBlciNjbGFzc190eXBlIHgucGN0eV9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc190eXBlX2ZpZWxkIGNsYXNzX3R5cGVfZmllbGQgc3VwZXIjY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICB4LnBjdGZfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfZXhwciBjbGFzc19leHByIHN1cGVyI2NsYXNzX2V4cHIgeC5wY2xfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX2ZpZWxkIGNsYXNzX2ZpZWxkIHN1cGVyI2NsYXNzX2ZpZWxkIHgucGNmX2xvYyBiYXNlX2N0eHRcbiAgICAgICAgeFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5tb2R1bGVfdHlwZSBtb2R1bGVfdHlwZSBzdXBlciNtb2R1bGVfdHlwZSB4LnBtdHlfbG9jIGJhc2VfY3R4dFxuICAgICAgICB4XG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIGJhc2VfY3R4dCB4ID1cbiAgICAgICgoKiBNYWtlIHN1cmUgY29kZS1wYXRoIGF0dHJpYnV0ZSBpcyBhcHBsaWVkIGJlZm9yZSBleHBhbmRpbmcuICopXG4gICAgICAgQXR0cmlidXRlLmdldF9yZXMgQXN0X3RyYXZlcnNlLmVudGVyX21vZHVsZSB4IHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgfCBOb25lIC0+IHJldHVybiAoYmFzZV9jdHh0LCB4KVxuICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT5cbiAgICAgICAgICAgQXR0cmlidXRlLnJlbW92ZV9zZWVuX3JlcyBNb2R1bGVfZXhwclxuICAgICAgICAgICAgIFsgVCBBc3RfdHJhdmVyc2UuZW50ZXJfbW9kdWxlIF1cbiAgICAgICAgICAgICB4XG4gICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDp4XG4gICAgICAgICAgID4+fCBmdW4geCAtPlxuICAgICAgICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyB0eHQgYmFzZV9jdHh0LCB4KSlcbiAgICAgID4+PSBmdW4gKGJhc2VfY3R4dCwgeCkgLT5cbiAgICAgIG1hcF9ub2RlIEVDLm1vZHVsZV9leHByIG1vZHVsZV9leHByIHN1cGVyI21vZHVsZV9leHByIHgucG1vZF9sb2MgYmFzZV9jdHh0XG4gICAgICAgIHhcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuc3RydWN0dXJlX2l0ZW0gc3RydWN0dXJlX2l0ZW0gc3VwZXIjc3RydWN0dXJlX2l0ZW0geC5wc3RyX2xvY1xuICAgICAgICBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5zaWduYXR1cmVfaXRlbSBzaWduYXR1cmVfaXRlbSBzdXBlciNzaWduYXR1cmVfaXRlbSB4LnBzaWdfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX3N0cnVjdHVyZSBiYXNlX2N0eHQgeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSA9XG4gICAgICBzZWxmI3BhdHRlcm4gYmFzZV9jdHh0IHBjc3RyX3NlbGYgPj49IGZ1biBwY3N0cl9zZWxmIC0+XG4gICAgICBtYXBfbm9kZXMgRUMuY2xhc3NfZmllbGQgY2xhc3NfZmllbGQgc3VwZXIjY2xhc3NfZmllbGRcbiAgICAgICAgKGZ1biB4IC0+IHgucGNmX2xvYylcbiAgICAgICAgYmFzZV9jdHh0IHBjc3RyX2ZpZWxkc1xuICAgICAgPj58IGZ1biBwY3N0cl9maWVsZHMgLT4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfVxuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLlBweF9pbXBvcnQgcHB4X2ltcG9ydCBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHgucHR5cGVfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX3NpZ25hdHVyZSBiYXNlX2N0eHQgeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSA9XG4gICAgICBzZWxmI2NvcmVfdHlwZSBiYXNlX2N0eHQgcGNzaWdfc2VsZiA+Pj0gZnVuIHBjc2lnX3NlbGYgLT5cbiAgICAgIG1hcF9ub2RlcyBFQy5jbGFzc190eXBlX2ZpZWxkIGNsYXNzX3R5cGVfZmllbGQgc3VwZXIjY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICAoZnVuIHggLT4geC5wY3RmX2xvYylcbiAgICAgICAgYmFzZV9jdHh0IHBjc2lnX2ZpZWxkc1xuICAgICAgPj58IGZ1biBwY3NpZ19maWVsZHMgLT4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfVxuXG4gICAgKCogVE9ETzogdHJ5IHRvIGZhY3Rvcml6ZSAjc3RydWN0dXJlIGFuZCAjc2lnbmF0dXJlIHdpdGhvdXQgbWV0YS1wcm9ncmFtbWluZyAqKVxuICAgICgqJCopXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmUgYmFzZV9jdHh0IHN0ID1cbiAgICAgIGxldCByZWMgd2l0aF9leHRyYV9pdGVtcyBpdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zIH5yZXN0XG4gICAgICAgICAgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbG9vcCAocmV2X2NvbmNhdCBleHRyYV9pdGVtcykgfmluX2dlbmVyYXRlZF9jb2RlOnRydWVcbiAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2suaW5zZXJ0X2FmdGVyIGhvb2sgU3RydWN0dXJlX2l0ZW0gaXRlbS5wc3RyX2xvY1xuICAgICAgICAgICAgKE1hbnkgZXh0cmFfaXRlbXMpO1xuICAgICAgICBsZXQgb3JpZ2luYWxfcmVzdCA9IHJlc3QgaW5cbiAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIGV4cGVjdF9pdGVtcyB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IGV4cGVjdGVkID0gcmV2X2NvbmNhdCBleHBlY3RfaXRlbXMgaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSBpdGVtLnBzdHJfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICAgIENvZGVfbWF0Y2hlci5tYXRjaF9zdHJ1Y3R1cmVfcmVzIG9yaWdpbmFsX3Jlc3QgfnBvcyB+ZXhwZWN0ZWRcbiAgICAgICAgICAgICAgfm1pc21hdGNoX2hhbmRsZXI6KGZ1biBsb2MgcmVwbCAtPlxuICAgICAgICAgICAgICAgIGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLmYgU3RydWN0dXJlX2l0ZW0gbG9jIHJlcGwpXG4gICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6KCkpXG4gICAgICAgID4+fCBmdW4gKCkgLT4gaXRlbSA6OiAoZXh0cmFfaXRlbXMgQCByZXN0KVxuICAgICAgYW5kIGxvb3Agc3QgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbWF0Y2ggc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiBbXVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiAoXG4gICAgICAgICAgICBsZXQgbG9jID0gaXRlbS5wc3RyX2xvYyBpblxuICAgICAgICAgICAgbWF0Y2ggaXRlbS5wc3RyX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb25fcG9pbnRfbG9jID0gaXRlbS5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X2lubGluZV9yZXMgc3RydWN0dXJlX2l0ZW0gfmN0eHQgZXh0XG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBpdGVtIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc3RydWN0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPiBpdGVtIDo6IHJlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgKCgpLCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycykgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBhc3NlcnRfbm9fYXR0cmlidXRlcyBhdHRyczsgKilcbiAgICAgICAgICAgICAgICAgICAgbG9vcCBpdGVtcyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZSA+Pj0gZnVuIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgU3RydWN0dXJlX2l0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHN0cl9sb2MgKE1hbnkgaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+fCBmdW4gcmVzdCAtPiBpdGVtcyBAIHJlc3QpXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gZXhwYW5kZWRfaXRlbSAtPlxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X2V4biA9IGV4bl90b19zdHJpIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggKGl0ZW0ucHN0cl9kZXNjLCBleHBhbmRlZF9pdGVtLnBzdHJfZGVzYykgd2l0aFxuICAgICAgICAgICAgICAgIHwgUHN0cl90eXBlIChyZiwgdGRzKSwgUHN0cl90eXBlIChleHBfcmYsIGV4cF90ZHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIE5vIGNvbnRleHQtZnJlZSBydWxlIGNhbiByZXdyaXRlIHJlYyBmbGFncyBhdG0sIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGFjdHMgYXMgYSBmYWlsc2FmZSBpbiBjYXNlIGl0IGV2ZXIgY2hhbmdlcyAqKVxuICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFBvbHkuKHJmID0gZXhwX3JmKSk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3N0cl90eXBlX2RlY2xzIHJmIH5pdGVtczp0ZHNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0IHJmXG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW1zOnRkcyB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgICB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc3RyX21vZHR5cGUgbXRkLCBQc3RyX21vZHR5cGUgZXhwX210ZCAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMgfml0ZW06bXRkXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdFxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtOm10ZCB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICAgIH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfdHlwZXh0IHRlLCBQc3RyX3R5cGV4dCBleHBfdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX3R5cGVfZXh0cyB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3Qgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGVjLCBQc3RyX2V4Y2VwdGlvbiBleHBfZWMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX2V4Y2VwdGlvbnMgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9leGNlcHRpb25zX2V4cGVjdCB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3N0cnVjdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWRfaXRlbSA6OiByZXN0KSlcbiAgICAgIGluXG4gICAgICBsb29wIHN0IH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG4gICAgKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuICAgIG1ldGhvZCEgc2lnbmF0dXJlIGJhc2VfY3R4dCBzZyA9XG4gICAgICBsZXQgcmVjIHdpdGhfZXh0cmFfaXRlbXMgaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtcyB+cmVzdFxuICAgICAgICAgIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIGxvb3AgKHJldl9jb25jYXQgZXh0cmFfaXRlbXMpIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlXG4gICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLmluc2VydF9hZnRlciBob29rIFNpZ25hdHVyZV9pdGVtIGl0ZW0ucHNpZ19sb2NcbiAgICAgICAgICAgIChNYW55IGV4dHJhX2l0ZW1zKTtcbiAgICAgICAgbGV0IG9yaWdpbmFsX3Jlc3QgPSByZXN0IGluXG4gICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj49IGZ1biByZXN0IC0+XG4gICAgICAgIChtYXRjaCBleHBlY3RfaXRlbXMgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBleHBlY3RlZCA9IHJldl9jb25jYXQgZXhwZWN0X2l0ZW1zIGluXG4gICAgICAgICAgICBsZXQgcG9zID0gaXRlbS5wc2lnX2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgICBDb2RlX21hdGNoZXIubWF0Y2hfc2lnbmF0dXJlX3JlcyBvcmlnaW5hbF9yZXN0IH5wb3MgfmV4cGVjdGVkXG4gICAgICAgICAgICAgIH5taXNtYXRjaF9oYW5kbGVyOihmdW4gbG9jIHJlcGwgLT5cbiAgICAgICAgICAgICAgICBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5mIFNpZ25hdHVyZV9pdGVtIGxvYyByZXBsKVxuICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OigpKVxuICAgICAgICA+PnwgZnVuICgpIC0+IGl0ZW0gOjogKGV4dHJhX2l0ZW1zIEAgcmVzdClcbiAgICAgIGFuZCBsb29wIHNnIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIG1hdGNoIHNnIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gW11cbiAgICAgICAgfCBpdGVtIDo6IHJlc3QgLT4gKFxuICAgICAgICAgICAgbGV0IGxvYyA9IGl0ZW0ucHNpZ19sb2MgaW5cbiAgICAgICAgICAgIG1hdGNoIGl0ZW0ucHNpZ19kZXNjIHdpdGhcbiAgICAgICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICAgICAgICAgICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyA9IGl0ZW0ucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICAgICAgICB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9pbmxpbmVfcmVzIHNpZ25hdHVyZV9pdGVtIH5jdHh0IGV4dFxuICAgICAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gaXRlbSAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3NpZ25hdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT4gaXRlbSA6OiByZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgICgoKSwgYXR0cmlidXRlc19lcnJvcnMgYXR0cnMpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogYXNzZXJ0X25vX2F0dHJpYnV0ZXMgYXR0cnM7ICopXG4gICAgICAgICAgICAgICAgICAgIGxvb3AgaXRlbXMgfmluX2dlbmVyYXRlZF9jb2RlOnRydWUgPj49IGZ1biBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIFNpZ25hdHVyZV9pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBzaWdfbG9jIChNYW55IGl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+PnwgZnVuIHJlc3QgLT4gaXRlbXMgQCByZXN0KVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGV4cGFuZGVkX2l0ZW0gLT5cbiAgICAgICAgICAgICAgICBsZXQgY29udmVydF9leG4gPSBleG5fdG9fc2lnaSBpblxuICAgICAgICAgICAgICAgIG1hdGNoIChpdGVtLnBzaWdfZGVzYywgZXhwYW5kZWRfaXRlbS5wc2lnX2Rlc2MpIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZSAocmYsIHRkcyksIFBzaWdfdHlwZSAoZXhwX3JmLCBleHBfdGRzKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBObyBjb250ZXh0LWZyZWUgcnVsZSBjYW4gcmV3cml0ZSByZWMgZmxhZ3MgYXRtLCB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBhY3RzIGFzIGEgZmFpbHNhZmUgaW4gY2FzZSBpdCBldmVyIGNoYW5nZXMgKilcbiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChQb2x5LihyZiA9IGV4cF9yZikpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zaWdfdHlwZV9kZWNscyByZiB+aXRlbXM6dGRzXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW1zOmV4cF90ZHMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3NpZ190eXBlX2RlY2xzX2V4cGVjdCByZlxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtczp0ZHMgfmV4cGFuZGVkX2l0ZW1zOmV4cF90ZHMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgICAgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHNpZ19tb2R0eXBlIG10ZCwgUHNpZ19tb2R0eXBlIGV4cF9tdGQgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzIH5pdGVtOm10ZFxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHBlY3RcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbTptdGQgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgICB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX3R5cGV4dCB0ZSwgUHNpZ190eXBleHQgZXhwX3RlIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ190eXBlX2V4dHMgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0IH5pdGVtOnRlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX3RlIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBlYywgUHNpZ19leGNlcHRpb24gZXhwX2VjIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19leGNlcHRpb25zIH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfZXhjZXB0aW9uc19leHBlY3Qgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IF8sIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzaWduYXR1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkX2l0ZW0gOjogcmVzdCkpXG4gICAgICBpblxuICAgICAgbG9vcCBzZyB+aW5fZ2VuZXJhdGVkX2NvZGU6ZmFsc2VcblxuICAgICgqJCopXG4gIGVuZFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gVXRpbHNcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEV4dGVuc2lvbiBvZiAnYSBFeHRlbnNpb24uQ29udGV4dC50XG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgb2YgJ2EgQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQudFxuXG4gIGxldCBwYXJlbiBwcCBwcGYgeCA9IFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBwcGYgXCIoJWEpXCIgcHAgeFxuXG4gIGxldCBwcmludGVyIDogdHlwZSBhLiBhIHQgLT4gU3RkbGliLkZvcm1hdC5mb3JtYXR0ZXIgLT4gYSAtPiB1bml0ID1cbiAgICBsZXQgb3BlbiBFeHRlbnNpb24uQ29udGV4dCBpblxuICAgIGxldCBvcGVuIEF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0IGluXG4gICAgZnVuY3Rpb25cbiAgICB8IEV4dGVuc2lvbiBDbGFzc19leHByIC0+IFBwcmludGFzdC5jbGFzc19leHByXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX2ZpZWxkXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfdHlwZSAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZVxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX3R5cGVfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX3R5cGVfZmllbGRcbiAgICB8IEV4dGVuc2lvbiBDb3JlX3R5cGUgLT4gcGFyZW4gUHByaW50YXN0LmNvcmVfdHlwZVxuICAgIHwgRXh0ZW5zaW9uIEV4cHJlc3Npb24gLT4gcGFyZW4gUHByaW50YXN0LmV4cHJlc3Npb25cbiAgICB8IEV4dGVuc2lvbiBNb2R1bGVfZXhwciAtPiBQcHJpbnRhc3QubW9kdWxlX2V4cHJcbiAgICB8IEV4dGVuc2lvbiBNb2R1bGVfdHlwZSAtPiBQcHJpbnRhc3QubW9kdWxlX3R5cGVcbiAgICB8IEV4dGVuc2lvbiBQYXR0ZXJuIC0+IHBhcmVuIFBwcmludGFzdC5wYXR0ZXJuXG4gICAgfCBFeHRlbnNpb24gU2lnbmF0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnNpZ25hdHVyZV9pdGVtXG4gICAgfCBFeHRlbnNpb24gU3RydWN0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gICAgfCBFeHRlbnNpb24gUHB4X2ltcG9ydCAtPiBQcHJpbnRhc3QudHlwZV9kZWNsYXJhdGlvblxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIFN0cnVjdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zdHJ1Y3R1cmVfaXRlbVxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIFNpZ25hdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zaWduYXR1cmVfaXRlbVxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIENsYXNzX2ZpZWxkIC0+IFBwcmludGFzdC5jbGFzc19maWVsZFxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIENsYXNzX3R5cGVfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX3R5cGVfZmllbGRcbmVuZFxuXG5tb2R1bGUgUmVwbGFjZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSBkYXRhID1cbiAgICB8IFZhbHVlcyA6XG4gICAgICAgICdhIENvbnRleHQudCAqICdhIENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLnNpbmdsZV9vcl9tYW55XG4gICAgICAgIC0+IGRhdGFcbiAgICB8IFRleHQgb2Ygc3RyaW5nXG5cbiAgdHlwZSB0ID0geyBzdGFydCA6IExleGluZy5wb3NpdGlvbjsgc3RvcCA6IExleGluZy5wb3NpdGlvbjsgZGF0YSA6IGRhdGEgfVxuXG4gIGxldCBtYWtlIH5jb250ZXh0IH5zdGFydCB+c3RvcCB+cmVwbCAoKSA9XG4gICAgeyBzdGFydDsgc3RvcDsgZGF0YSA9IFZhbHVlcyAoY29udGV4dCwgcmVwbCkgfVxuXG4gIGxldCBtYWtlX3RleHQgfnN0YXJ0IH5zdG9wIH5yZXBsICgpID0geyBzdGFydDsgc3RvcDsgZGF0YSA9IFRleHQgcmVwbCB9XG5cbiAgbGV0IHRleHQgYmxvY2sgPVxuICAgIG1hdGNoIGJsb2NrLmRhdGEgd2l0aFxuICAgIHwgVGV4dCBzIC0+IHNcbiAgICB8IFZhbHVlcyAoY29udGV4dCwgZ2VuZXJhdGVkKSAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IHByaW50ZXIgPSBDb250ZXh0LnByaW50ZXIgY29udGV4dCBpblxuICAgICAgICAgIG1hdGNoIGdlbmVyYXRlZCB3aXRoXG4gICAgICAgICAgfCBTaW5nbGUgeCAtPiBTdGRsaWIuRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcmludGVyIHhcbiAgICAgICAgICB8IE1hbnkgbCAtPlxuICAgICAgICAgICAgICBTdGRsaWIuRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAgICAgIChmdW4gcHBmIGwgLT5cbiAgICAgICAgICAgICAgICAgIExpc3QuaXRlciBsIH5mOihmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgIHByaW50ZXIgcHBmIHg7XG4gICAgICAgICAgICAgICAgICAgICAgU3RkbGliLkZvcm1hdC5wcF9wcmludF9uZXdsaW5lIHBwZiAoKSkpXG4gICAgICAgICAgICAgICAgbFxuICAgICAgICBpblxuICAgICAgICBsZXQgaXNfd3MgPSBmdW5jdGlvbiAnICcgfCAnXFx0JyB8ICdcXHInIC0+IHRydWUgfCBfIC0+IGZhbHNlIGluXG4gICAgICAgIGxldCBzdHJpcF93cyBzIGkgbGVuID1cbiAgICAgICAgICBsZXQgbGVuID0gcmVmIGxlbiBpblxuICAgICAgICAgIHdoaWxlICFsZW4gPiAwICYmIGlzX3dzIHMuW2kgKyAhbGVuIC0gMV0gZG9cbiAgICAgICAgICAgIGxlbiA6PSAhbGVuIC0gMVxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgU3RyaW5nLnN1YiBzIH5wb3M6aSB+bGVuOiFsZW5cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyBsb29wIHMgcG9zID1cbiAgICAgICAgICBpZiBwb3MgPj0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gW11cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgaWR4ID1cbiAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmluZGV4X2Zyb21fb3B0IHMgcG9zICdcXG4nIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc3RyaXBfd3MgcyBwb3MgKGlkeCAtIHBvcykgOjogXCJcXG5cIiA6OiBsb29wIHMgKGlkeCArIDEpXG4gICAgICAgIGluXG4gICAgICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIChsb29wIHMgMClcbmVuZFxuXG5vcGVuIFJlcGxhY2VtZW50XG5cbm1vZHVsZSBSZXBsYWNlbWVudHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUmVwbGFjZW1lbnQudCBsaXN0XG5cbiAgKCogTWVyZ2UgbG9jYXRpb25zIG9mIHRoZSBnZW5lcmF0ZWQgY29kZS4gT3ZlcmxhcHBpbmcgbG9jYXRpb25zIGFyZSBtZXJnZWQgaW50byBvbmUuIFRoZVxuICAgICByZXN1bHQgaXMgc29ydGVkIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSB0byB0aGUgZW5kLiAqKVxuICBsZXQgY2hlY2tfYW5kX3NvcnQgfmlucHV0X2ZpbGVuYW1lIH5pbnB1dF9uYW1lIHJlcGxzID1cbiAgICBMaXN0Lml0ZXIgcmVwbHMgfmY6KGZ1biByZXBsIC0+XG4gICAgICAgIGlmXG4gICAgICAgICAgU3RyaW5nLiggPD4gKSByZXBsLnN0YXJ0LnBvc19mbmFtZSBpbnB1dF9uYW1lXG4gICAgICAgICAgfHwgU3RyaW5nLiggPD4gKSByZXBsLnN0b3AucG9zX2ZuYW1lIGlucHV0X25hbWVcbiAgICAgICAgdGhlblxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBpbnB1dF9maWxlbmFtZSlcbiAgICAgICAgICAgIFwicHB4bGliX2RyaXZlcjogdGhlIHJld3JpdGluZyBjb250YWlucyBwYXJ0cyBmcm9tIGFub3RoZXIgZmlsZS5cXG5cXFxuICAgICAgICAgICAgIEl0IGlzIHRvbyBjb21wbGljYXRlZCB0byByZWNvbmNpbGUgaXQgd2l0aCB0aGUgc291cmNlOiAlcyBvciAlcyBcXFxuICAgICAgICAgICAgIGFuZCAlc1wiXG4gICAgICAgICAgICByZXBsLnN0YXJ0LnBvc19mbmFtZSByZXBsLnN0b3AucG9zX2ZuYW1lIGlucHV0X25hbWU7XG4gICAgICAgIGFzc2VydCAocmVwbC5zdGFydC5wb3NfY251bSA8PSByZXBsLnN0b3AucG9zX2NudW0pKTtcbiAgICBsZXQgcmVwbHMgPVxuICAgICAgTGlzdC5zb3J0IHJlcGxzIH5jbXA6KGZ1biBhIGIgLT5cbiAgICAgICAgICBsZXQgZCA9IGNvbXBhcmUgYS5zdGFydC5wb3NfY251bSBiLnN0b3AucG9zX2NudW0gaW5cbiAgICAgICAgICBpZiBkID0gMCB0aGVuXG4gICAgICAgICAgICAoKiBQdXQgdGhlIGxhcmdlc3QgZmlyc3QsIHNvIHRoYXQgdGhlIGZvbGxvd2luZyBbZmlsdGVyXSBmdW5jdGlvbnMgYWx3YXlzIHBpY2tzIHVwXG4gICAgICAgICAgICAgICB0aGUgbGFydGVzdCBmaXJzdCB3aGVuIHNldmVyYWwgZ2VuZXJhdGVkIHJlcGxzIHN0YXJ0IGF0IHRoZSBzYW1lIHBvc2l0aW9uICopXG4gICAgICAgICAgICBjb21wYXJlIGIuc3RvcC5wb3NfY251bSBhLnN0b3AucG9zX2NudW1cbiAgICAgICAgICBlbHNlIGQpXG4gICAgaW5cbiAgICBsZXQgcmVjIGZpbHRlciBwcmV2IHJlcGxzIH5hY2MgPVxuICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgfCBbXSAtPiBMaXN0LnJldiAocHJldiA6OiBhY2MpXG4gICAgICB8IHJlcGwgOjogcmVwbHMgLT5cbiAgICAgICAgICBpZiBwcmV2LnN0b3AucG9zX2NudW0gPiByZXBsLnN0YXJ0LnBvc19jbnVtIHRoZW5cbiAgICAgICAgICAgIGlmIHByZXYuc3RvcC5wb3NfY251bSA+PSByZXBsLnN0b3AucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgICAoKiBbcmVwbF0gaXMgaW5jbHVkZWQgaW4gW3ByZXZdID0+IHNraXAgW3JlcGxdICopXG4gICAgICAgICAgICAgIGZpbHRlciBwcmV2IHJlcGxzIH5hY2NcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICAgICAgXCJwcHhsaWJfZHJpdmVyOiBsb2NhdGlvbnMgb2YgZ2VuZXJhdGVkIGNvZGUgYXJlIG92ZXJsYXBwaW5nLCBcXFxuICAgICAgICAgICAgICAgICBjYW5ub3QgcmVjb25jaWxlXCJcbiAgICAgICAgICAgICAgICB+bG9jOlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsb2Nfc3RhcnQgPSByZXBsLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBsb2NfZW5kID0gcHJldi5zdG9wO1xuICAgICAgICAgICAgICAgICAgICBsb2NfZ2hvc3QgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGZpbHRlciByZXBsIHJlcGxzIH5hY2M6KHByZXYgOjogYWNjKVxuICAgIGluXG4gICAgbWF0Y2ggcmVwbHMgd2l0aCBbXSAtPiBbXSB8IHJlcGwgOjogcmVwbHMgLT4gZmlsdGVyIHJlcGwgcmVwbHMgfmFjYzpbXVxuZW5kXG5cbmxldCBjb3VudF9uZXdsaW5lcyBzID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBTdHJpbmcuaXRlciBzIH5mOihmdW5jdGlvbiAnXFxuJyAtPiBuIDo9ICFuICsgMSB8IF8gLT4gKCkpO1xuICAhblxuXG5sZXQgZ2VuZXJhdGVkX2NvZGVfYmVnaW4gPVxuICBcIigqIC0tLS0teyBHRU5FUkFURUQgQ09ERSBCRUdJTiB9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVwiXG5cbmxldCBnZW5lcmF0ZWRfY29kZV9lbmQgPVxuICBcIigqIC0tLS0teyBHRU5FUkFURUQgQ09ERSBFTkQgICB9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVwiXG5cbnR5cGUgbW9kZSA9IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2Nrc1xudHlwZSB0YXJnZXQgPSBPdXRwdXQgb2YgbW9kZSB8IENvcnJlY3RlZFxuXG5sZXQgc2tpcF9ibGFua19lb2wgY29udGVudHMgKHBvcyA6IExleGluZy5wb3NpdGlvbikgPVxuICBsZXQgcmVjIGxvb3AgY251bSA9XG4gICAgaWYgY251bSA9IFN0cmluZy5sZW5ndGggY29udGVudHMgdGhlbiB7IHBvcyB3aXRoIHBvc19jbnVtID0gY251bSB9XG4gICAgZWxzZVxuICAgICAgbWF0Y2ggY29udGVudHMuW2NudW1dIHdpdGhcbiAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxyJyAtPiBsb29wIChjbnVtICsgMSlcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb3Mgd2l0aFxuICAgICAgICAgICAgcG9zX2NudW0gPSBjbnVtICsgMTtcbiAgICAgICAgICAgIHBvc19sbnVtID0gcG9zLnBvc19sbnVtICsgMTtcbiAgICAgICAgICAgIHBvc19ib2wgPSBjbnVtICsgMTtcbiAgICAgICAgICB9XG4gICAgICB8IF8gLT4gcG9zXG4gIGluXG4gIGxvb3AgcG9zLnBvc19jbnVtXG5cbmxldCB3aXRoX291dHB1dCB+c3R5bGVyIH4oa2luZCA6IEtpbmQudCkgZm4gfmYgPVxuICBtYXRjaCBzdHlsZXIgd2l0aFxuICB8IE5vbmUgLT4gd2l0aF9vdXRwdXQgZm4gfmJpbmFyeTpmYWxzZSB+ZlxuICB8IFNvbWUgY21kIC0+XG4gICAgICBsZXQgdG1wX2ZuLCBvYyA9XG4gICAgICAgIFN0ZGxpYi5GaWxlbmFtZS5vcGVuX3RlbXBfZmlsZSBcInBweGxpYl9kcml2ZXJcIlxuICAgICAgICAgIChtYXRjaCBraW5kIHdpdGggSW1wbCAtPiBcIi5tbFwiIHwgSW50ZiAtPiBcIi5tbGlcIilcbiAgICAgIGluXG4gICAgICBsZXQgY21kID1cbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCIlcyAlcyVzXCIgY21kXG4gICAgICAgICAgKFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSB0bXBfZm4pXG4gICAgICAgICAgKG1hdGNoIGZuIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSBmbiAtPiBcIiA+IFwiIF4gU3RkbGliLkZpbGVuYW1lLnF1b3RlIGZuKVxuICAgICAgaW5cbiAgICAgIGxldCBuID1cbiAgICAgICAgRXhuLnByb3RlY3R4IHRtcF9mbiB+ZmluYWxseTpTdGRsaWIuU3lzLnJlbW92ZSB+ZjooZnVuIF8gLT5cbiAgICAgICAgICAgIEV4bi5wcm90ZWN0eCBvYyB+ZmluYWxseTpjbG9zZV9vdXQgfmY7XG4gICAgICAgICAgICBTdGRsaWIuU3lzLmNvbW1hbmQgY21kKVxuICAgICAgaW5cbiAgICAgIGlmIG4gPD4gMCB0aGVuIChcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCJjb21tYW5kIGV4aXRlZCB3aXRoIGNvZGUgJWQ6ICVzXFxuXCIgbiBjbWQ7XG4gICAgICAgIFN0ZGxpYi5leGl0IDEpXG5cbmxldCByZWNvbmNpbGUgP3N0eWxlciAocmVwbHMgOiBSZXBsYWNlbWVudHMudCkgfmtpbmQgfmNvbnRlbnRzIH5pbnB1dF9maWxlbmFtZVxuICAgIH5vdXRwdXQgfmlucHV0X25hbWUgfnRhcmdldCA9XG4gIGxldCByZXBscyA9IFJlcGxhY2VtZW50cy5jaGVja19hbmRfc29ydCB+aW5wdXRfZmlsZW5hbWUgfmlucHV0X25hbWUgcmVwbHMgaW5cbiAgbGV0IG91dHB1dF9uYW1lID0gbWF0Y2ggb3V0cHV0IHdpdGggTm9uZSAtPiBcIjxzdGRvdXQ+XCIgfCBTb21lIGZuIC0+IGZuIGluXG4gIHdpdGhfb3V0cHV0IG91dHB1dCB+c3R5bGVyIH5raW5kIH5mOihmdW4gb2MgLT5cbiAgICAgIGxldCBjb3B5X2lucHV0IHBvcyB+dXBfdG8gfmxpbmUgfmxhc3RfaXNfdGV4dCB+aXNfdGV4dCA9XG4gICAgICAgIGxldCBwb3MgPSBpZiBsYXN0X2lzX3RleHQgdGhlbiBwb3MgZWxzZSBza2lwX2JsYW5rX2VvbCBjb250ZW50cyBwb3MgaW5cbiAgICAgICAgaWYgcG9zLnBvc19jbnVtIDwgdXBfdG8gdGhlbiAoXG4gICAgICAgICAgKG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiIyAlZCAlU1xcbiUqc1wiIHBvcy5wb3NfbG51bSBpbnB1dF9uYW1lXG4gICAgICAgICAgICAgICAgKHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKVxuICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgfCBDb3JyZWN0ZWQgLT4gKCkpO1xuICAgICAgICAgIG91dHB1dF9zdWJzdHJpbmcgb2MgY29udGVudHMgfnBvczpwb3MucG9zX2NudW1cbiAgICAgICAgICAgIH5sZW46KHVwX3RvIC0gcG9zLnBvc19jbnVtKTtcbiAgICAgICAgICBsZXQgbGluZSA9IHJlZiAobGluZSArIDEpIGluXG4gICAgICAgICAgZm9yIGkgPSBwb3MucG9zX2NudW0gdG8gdXBfdG8gLSAxIGRvXG4gICAgICAgICAgICBpZiBDaGFyLmVxdWFsIGNvbnRlbnRzLltpXSAnXFxuJyB0aGVuIGxpbmUgOj0gIWxpbmUgKyAxXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBsZXQgbGluZSA9ICFsaW5lIGluXG4gICAgICAgICAgaWYgKG5vdCBpc190ZXh0KSAmJiBDaGFyLiggPD4gKSBjb250ZW50cy5bdXBfdG8gLSAxXSAnXFxuJyB0aGVuIChcbiAgICAgICAgICAgIG91dHB1dF9jaGFyIG9jICdcXG4nO1xuICAgICAgICAgICAgbGluZSArIDEpXG4gICAgICAgICAgZWxzZSBsaW5lKVxuICAgICAgICBlbHNlIGxpbmVcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGxvb3AgbGluZSAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSByZXBscyB+bGFzdF9pc190ZXh0ID1cbiAgICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAgKGNvcHlfaW5wdXQgcG9zIH51cF90bzooU3RyaW5nLmxlbmd0aCBjb250ZW50cykgfmxpbmVcbiAgICAgICAgICAgICAgICAgfmxhc3RfaXNfdGV4dCB+aXNfdGV4dDpmYWxzZVxuICAgICAgICAgICAgICAgIDogaW50KVxuICAgICAgICB8IHJlcGwgOjogcmVwbHMgLT5cbiAgICAgICAgICAgIGxldCBpc190ZXh0ID1cbiAgICAgICAgICAgICAgbWF0Y2ggcmVwbC5kYXRhIHdpdGggVGV4dCBfIC0+IHRydWUgfCBWYWx1ZXMgXyAtPiBmYWxzZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsaW5lID1cbiAgICAgICAgICAgICAgY29weV9pbnB1dCBwb3MgfnVwX3RvOnJlcGwuc3RhcnQucG9zX2NudW0gfmxpbmUgfmxhc3RfaXNfdGV4dFxuICAgICAgICAgICAgICAgIH5pc190ZXh0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHMgPSBSZXBsYWNlbWVudC50ZXh0IHJlcGwgaW5cbiAgICAgICAgICAgIGxldCBsaW5lID1cbiAgICAgICAgICAgICAgbWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIC0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiMgJWQgJVNcXG5cIiAobGluZSArIDEpIG91dHB1dF9uYW1lO1xuICAgICAgICAgICAgICAgICAgbGluZSArIDFcbiAgICAgICAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiVzXFxuXCIgZ2VuZXJhdGVkX2NvZGVfYmVnaW47XG4gICAgICAgICAgICAgICAgICBsaW5lICsgMVxuICAgICAgICAgICAgICB8IENvcnJlY3RlZCAtPiBsaW5lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBzO1xuICAgICAgICAgICAgbGV0IGxpbmUgPSBsaW5lICsgY291bnRfbmV3bGluZXMgcyBpblxuICAgICAgICAgICAgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHJlcGwuc3RvcCByZXBscyB+bGFzdF9pc190ZXh0OmlzX3RleHRcbiAgICAgIGFuZCBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgKHBvcyA6IExleGluZy5wb3NpdGlvbikgcmVwbHNcbiAgICAgICAgICB+bGFzdF9pc190ZXh0ID1cbiAgICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgICB8IFtdIC0+IGVuZF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0XG4gICAgICAgIHwgcmVwbCA6OiByZXBscycgLT5cbiAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICBpZiBsYXN0X2lzX3RleHQgdGhlbiBwb3MgZWxzZSBza2lwX2JsYW5rX2VvbCBjb250ZW50cyBwb3NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBwb3MucG9zX2NudW0gPCByZXBsLnN0YXJ0LnBvc19jbnVtIHRoZW5cbiAgICAgICAgICAgICAgZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IHMgPSBSZXBsYWNlbWVudC50ZXh0IHJlcGwgaW5cbiAgICAgICAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBzO1xuICAgICAgICAgICAgICBsZXQgbGluZSA9IGxpbmUgKyBjb3VudF9uZXdsaW5lcyBzIGluXG4gICAgICAgICAgICAgIGxldCBsYXN0X2lzX3RleHQgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlcGwuZGF0YSB3aXRoIFRleHQgXyAtPiB0cnVlIHwgVmFsdWVzIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHJlcGwuc3RvcCByZXBscycgfmxhc3RfaXNfdGV4dFxuICAgICAgYW5kIGVuZF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0ID1cbiAgICAgICAgKG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IENvcnJlY3RlZCAtPiAoKVxuICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT5cbiAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9lbmQpO1xuICAgICAgICBsb29wIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHRcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID1cbiAgICAgICAge1xuICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBpbnB1dF9uYW1lO1xuICAgICAgICAgIHBvc19sbnVtID0gMTtcbiAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICBwb3NfY251bSA9IDA7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICB8IHsgc3RhcnQgPSB7IHBvc19jbnVtID0gMDsgXyB9OyBfIH0gOjogXyAtPlxuICAgICAgICAgIChtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IENvcnJlY3RlZCAtPiAoKVxuICAgICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPlxuICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiVzXFxuXCIgZ2VuZXJhdGVkX2NvZGVfYmVnaW4pO1xuICAgICAgICAgIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgMSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dDpmYWxzZVxuICAgICAgfCBfIC0+IGxvb3AgMSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dDpmYWxzZSlcbiIsIm9wZW4gSW1wb3J0XG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBuZXh0X2lkIDogaW50O1xuICBtdXRhYmxlIGJpbmRpbmdzIDogUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgbGlzdDtcbn1cblxubGV0IGNyZWF0ZSAoKSA9IHsgbmV4dF9pZCA9IDA7IGJpbmRpbmdzID0gW10gfVxuXG5sZXQgc2FuaXRpemUgdCBlID1cbiAgbWF0Y2ggdC5iaW5kaW5ncyB3aXRoXG4gIHwgW10gLT4gZVxuICB8IGJpbmRpbmdzIC0+XG4gICAgICBsZXQgKG1vZHVsZSBBc3QpID0gQXN0X2J1aWxkZXIubWFrZSBlLnBleHBfbG9jIGluXG4gICAgICBBc3QucGV4cF9sZXQgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGVcblxubGV0IHF1b3RlIHQgKGUgOiBleHByZXNzaW9uKSA9XG4gIGxldCBsb2MgPSBlLnBleHBfbG9jIGluXG4gIGxldCAobW9kdWxlIEFzdCkgPSBBc3RfYnVpbGRlci5tYWtlIGxvYyBpblxuICBsZXQgbmFtZSA9IFwiX19cIiBeIEludC50b19zdHJpbmcgdC5uZXh0X2lkIGluXG4gIGxldCBiaW5kaW5nX2V4cHIsIHF1b3RlZF9leHByID1cbiAgICBtYXRjaCBlIHdpdGhcbiAgICAoKiBPcHRpbWl6ZSBpZGVudGlmaWVyIHF1b3RpbmcgYnkgYXZvaWRpbmcgY2xvc3VyZS5cbiAgICAgICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL29jYW1sLXBweC9wcHhfZGVyaXZpbmcvcHVsbC8yNTIuICopXG4gICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgXzsgXyB9IC0+IChlLCBBc3QuZXZhciBuYW1lKVxuICAgIHwgXyAtPlxuICAgICAgICBsZXQgYmluZGluZ19leHByID1cbiAgICAgICAgICBBc3QucGV4cF9mdW4gTm9sYWJlbCBOb25lXG4gICAgICAgICAgICAobGV0IHVuaXQgPSBBc3RfYnVpbGRlci5EZWZhdWx0LkxvY2F0ZWQubGlkZW50IH5sb2MgXCIoKVwiIGluXG4gICAgICAgICAgICAgQXN0LnBwYXRfY29uc3RydWN0IHVuaXQgTm9uZSlcbiAgICAgICAgICAgIGVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHF1b3RlZF9leHByID0gQXN0LmVhcHBseSAoQXN0LmV2YXIgbmFtZSkgWyBBc3QuZXVuaXQgXSBpblxuICAgICAgICAoYmluZGluZ19leHByLCBxdW90ZWRfZXhwcilcbiAgaW5cbiAgbGV0IGJpbmRpbmcgPVxuICAgIGxldCBwYXQgPSBBc3QucHZhciBuYW1lIGluXG4gICAgQXN0LnZhbHVlX2JpbmRpbmcgfnBhdCB+ZXhwcjpiaW5kaW5nX2V4cHJcbiAgaW5cbiAgdC5iaW5kaW5ncyA8LSBiaW5kaW5nIDo6IHQuYmluZGluZ3M7XG4gIHQubmV4dF9pZCA8LSB0Lm5leHRfaWQgKyAxO1xuICBxdW90ZWRfZXhwclxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBta19hdHRyX25vbG9jIHR4dCA9IEFzdF9oZWxwZXIuQXR0ci5tayBMb2NhdGlvbi57IHR4dDsgbG9jID0gbm9uZSB9XG5sZXQgaGlkZV9hdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgPSBta19hdHRyX25vbG9jIFwibWVybGluLmhpZGVcIiAoUFN0ciBbXSlcbmxldCBmb2N1c19hdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgPSBta19hdHRyX25vbG9jIFwibWVybGluLmZvY3VzXCIgKFBTdHIgW10pXG5cbmxldCBoaWRlX3BhdHRlcm4gKHsgcHBhdF9hdHRyaWJ1dGVzOyBfIH0gYXMgcCkgPVxuICB7IHAgd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBoaWRlX2F0dHJpYnV0ZSA6OiBwcGF0X2F0dHJpYnV0ZXMgfVxuXG5sZXQgZm9jdXNfcGF0dGVybiAoeyBwcGF0X2F0dHJpYnV0ZXM7IF8gfSBhcyBwKSA9XG4gIHsgcCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGZvY3VzX2F0dHJpYnV0ZSA6OiBwcGF0X2F0dHJpYnV0ZXMgfVxuXG5sZXQgaGlkZV9leHByZXNzaW9uICh7IHBleHBfYXR0cmlidXRlczsgXyB9IGFzIGUpID1cbiAgeyBlIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gaGlkZV9hdHRyaWJ1dGUgOjogcGV4cF9hdHRyaWJ1dGVzIH1cblxubGV0IGZvY3VzX2V4cHJlc3Npb24gKHsgcGV4cF9hdHRyaWJ1dGVzOyBfIH0gYXMgZSkgPVxuICB7IGUgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBmb2N1c19hdHRyaWJ1dGUgOjogcGV4cF9hdHRyaWJ1dGVzIH1cbiIsIm9wZW4gSW1wb3J0XG5cbm1vZHVsZSBOb25faW50ZXJzZWN0aW5nX3JhbmdlcyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBpbnNlcnQgOiBub2RlX25hbWU6c3RyaW5nIC0+IExvY2F0aW9uLnQgLT4gdCAtPiB0XG4gIHZhbCB1bmlvbiA6IHQgLT4gdCAtPiB0XG5cbiAgdmFsIGNvdmVyZWRfYnkgOiB0IC0+IGxvYzpMb2NhdGlvbi50IC0+IGJvb2xcbiAgKCoqIFtjb3ZlcmVkX2J5IHQgfmxvYyA9IHRydWVdIGlmZiBbdF0gaXMgY292ZXJlZCBieSBbbG9jXSAqKVxuXG4gIHZhbCBmaW5kX291dHNpZGUgOiBMb2NhdGlvbi50IC0+IHQgLT4gc3RyaW5nICogTG9jYXRpb24udFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtaW5fcG9zIDogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbjtcbiAgICBtYXhfcG9zIDogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbjtcbiAgICByYW5nZXMgOiAoc3RyaW5nICogTG9jYXRpb24udCkgbGlzdDtcbiAgfVxuXG4gIGxldCBlbXB0eSA9IHsgbWluX3BvcyA9IE5vbmU7IG1heF9wb3MgPSBOb25lOyByYW5nZXMgPSBbXSB9XG5cbiAgbGV0IHJlYyBpbnNlcnQgcmFuZ2VzICgobm9kZV9uYW1lLCBub2RlX2xvYykgYXMgbm9kZSkgPVxuICAgIG1hdGNoIHJhbmdlcyB3aXRoXG4gICAgfCBbXSAtPiBbIG5vZGUgXVxuICAgIHwgKCh4X25hbWUsIHhfbG9jKSBhcyB4KSA6OiB4cyAtPlxuICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbiBpblxuICAgICAgICBpZiBjb21wYXJlX3BvcyBub2RlX2xvYy5sb2Nfc3RhcnQgeF9sb2MubG9jX2VuZCA+PSAwIHRoZW5cbiAgICAgICAgICBub2RlIDo6IHggOjogeHNcbiAgICAgICAgZWxzZSBpZiBjb21wYXJlX3BvcyB4X2xvYy5sb2Nfc3RhcnQgbm9kZV9sb2MubG9jX2VuZCA+PSAwIHRoZW5cbiAgICAgICAgICB4IDo6IGluc2VydCB4cyBub2RlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICByYWlzZV9lcnJvcmYgfmxvYzpub2RlX2xvY1xuICAgICAgICAgICAgXCJpbnZhbGlkIG91dHB1dCBmcm9tIHBweCwgJXMgb3ZlcmxhcHMgd2l0aCAlcyBhdCBsb2NhdGlvbjpALiVhXCJcbiAgICAgICAgICAgIG5vZGVfbmFtZSB4X25hbWUgTG9jYXRpb24ucHJpbnQgeF9sb2NcblxuICBsZXQgbWluX3BvcyBwMSBwMiA9XG4gICAgbWF0Y2ggKHAxLCBwMikgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCAoU29tZSBfIGFzIHApLCBOb25lIHwgTm9uZSwgKFNvbWUgXyBhcyBwKSAtPiBwXG4gICAgfCBTb21lIHAxLCBTb21lIHAyIC0+IFNvbWUgKExvY2F0aW9uLm1pbl9wb3MgcDEgcDIpXG5cbiAgbGV0IG1heF9wb3MgcDEgcDIgPVxuICAgIG1hdGNoIChwMSwgcDIpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgKFNvbWUgXyBhcyBwKSwgTm9uZSB8IE5vbmUsIChTb21lIF8gYXMgcCkgLT4gcFxuICAgIHwgU29tZSBwMSwgU29tZSBwMiAtPiBTb21lIChMb2NhdGlvbi5tYXhfcG9zIHAxIHAyKVxuXG4gIGxldCBsb25nZXN0X2ZpcnN0IGwxIGwyIH5zdG9wX2FmdGVyID1cbiAgICBsZXQgcmVjIGxvb3AgeHMgeXMgbiA9XG4gICAgICBtYXRjaCAoeHMsIHlzLCBuKSB3aXRoXG4gICAgICB8IFtdLCBfLCBfIHwgXywgXywgMCAtPiAobDIsIGwxKVxuICAgICAgfCBfLCBbXSwgXyAtPiAobDEsIGwyKVxuICAgICAgfCBfIDo6IHhzLCBfIDo6IHlzLCBuIC0+IGxvb3AgeHMgeXMgKG4gLSAxKVxuICAgIGluXG4gICAgbG9vcCBsMSBsMiBzdG9wX2FmdGVyXG5cbiAgbGV0IHVuaW9uIHQxIHQyID1cbiAgICBsZXQgaW5pdCwgbCA9IGxvbmdlc3RfZmlyc3QgdDEucmFuZ2VzIHQyLnJhbmdlcyB+c3RvcF9hZnRlcjo0MiBpblxuICAgIGxldCByYW5nZXMgPSBMaXN0LmZvbGRfbGVmdCBsIH5pbml0IH5mOmluc2VydCBpblxuICAgIHtcbiAgICAgIG1pbl9wb3MgPSBtaW5fcG9zIHQxLm1pbl9wb3MgdDIubWluX3BvcztcbiAgICAgIG1heF9wb3MgPSBtYXhfcG9zIHQxLm1heF9wb3MgdDIubWF4X3BvcztcbiAgICAgIHJhbmdlcztcbiAgICB9XG5cbiAgbGV0IGluc2VydCB+bm9kZV9uYW1lIGxvYyB0ID1cbiAgICB7XG4gICAgICBtaW5fcG9zID0gbWluX3BvcyAoU29tZSBsb2MubG9jX3N0YXJ0KSB0Lm1pbl9wb3M7XG4gICAgICBtYXhfcG9zID0gbWF4X3BvcyAoU29tZSBsb2MubG9jX2VuZCkgdC5tYXhfcG9zO1xuICAgICAgcmFuZ2VzID0gaW5zZXJ0IHQucmFuZ2VzIChub2RlX25hbWUsIGxvYyk7XG4gICAgfVxuXG4gIGxldCBjb3ZlcmVkX2J5IHQgfmxvYyA9XG4gICAgbWF0Y2ggKHQubWluX3BvcywgdC5tYXhfcG9zKSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgbWluX3BvcywgU29tZSBtYXhfcG9zIC0+XG4gICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIG1pbl9wb3MgbG9jLmxvY19zdGFydCA+PSAwXG4gICAgICAgICYmIExvY2F0aW9uLmNvbXBhcmVfcG9zIG1heF9wb3MgbG9jLmxvY19lbmQgPD0gMFxuICAgIHwgXywgXyAtPlxuICAgICAgICAoKiB0aGVyZSBhcmUgbm8gb3BlbiByYW5nZXMgKilcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGZpbmRfb3V0c2lkZSBsb2MgdCA9XG4gICAgTGlzdC5maW5kIHQucmFuZ2VzIH5mOihmdW4gKF8sIGwpIC0+XG4gICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxvYy5sb2Nfc3RhcnQgbC5sb2Nfc3RhcnQgPiAwXG4gICAgICAgIHx8IExvY2F0aW9uLmNvbXBhcmVfcG9zIGxvYy5sb2NfZW5kIGwubG9jX2VuZCA8IDApXG5lbmRcblxubGV0IHJlbG9jX3BtdHlfZnVuY3RvcnMgeCA9XG4gIGxldCBvdXRtb3N0X2xvYyA9IHgucG10eV9sb2MgaW5cbiAgbGV0IHJlYyBhdXggeCA9XG4gICAgbWF0Y2ggeC5wbXR5X2Rlc2Mgd2l0aFxuICAgIHwgUG10eV9mdW5jdG9yIChVbml0LCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG10eV9kZXNjID0gUG10eV9mdW5jdG9yIChVbml0LCByZXMpIH1cbiAgICB8IFBtdHlfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIG91dG1vc3RfbG9jIHJlcy5wbXR5X2xvYyA9IDAgdGhlblxuICAgICAgICAgIGxldCBsb2Nfc3RhcnQgPSBtdHkucG10eV9sb2MubG9jX2VuZCBpblxuICAgICAgICAgIGxldCByZXMgPSB7IHJlcyB3aXRoIHBtdHlfbG9jID0geyByZXMucG10eV9sb2Mgd2l0aCBsb2Nfc3RhcnQgfSB9IGluXG4gICAgICAgICAgeyB4IHdpdGggcG10eV9kZXNjID0gUG10eV9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgICAgICBlbHNlIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgfCBfIC0+IHhcbiAgaW5cbiAgYXV4IHhcblxubGV0IHJlbG9jX3Btb2RfZnVuY3RvcnMgeCA9XG4gIGxldCBvdXRtb3N0X2xvYyA9IHgucG1vZF9sb2MgaW5cbiAgbGV0IHJlYyBhdXggeCA9XG4gICAgbWF0Y2ggeC5wbW9kX2Rlc2Mgd2l0aFxuICAgIHwgUG1vZF9mdW5jdG9yIChVbml0LCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChVbml0LCByZXMpIH1cbiAgICB8IFBtb2RfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIG91dG1vc3RfbG9jIHJlcy5wbW9kX2xvYyA9IDAgdGhlblxuICAgICAgICAgIGxldCBsb2Nfc3RhcnQgPSBtdHkucG10eV9sb2MubG9jX2VuZCBpblxuICAgICAgICAgIGxldCByZXMgPSB7IHJlcyB3aXRoIHBtb2RfbG9jID0geyByZXMucG1vZF9sb2Mgd2l0aCBsb2Nfc3RhcnQgfSB9IGluXG4gICAgICAgICAgeyB4IHdpdGggcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgICAgICBlbHNlIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgfCBfIC0+IHhcbiAgaW5cbiAgYXV4IHhcblxubGV0IGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2MgPVxuICBMaXN0LmZvcl9hbGwgfmY6KGZ1biBhdHRyIC0+XG4gICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsb2MubG9jX2VuZCBhdHRyLmF0dHJfbG9jLmxvY19lbmQgPj0gMClcblxubGV0IGZpbGUgOiBzdHJpbmcgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG5sZXQgc2FtZV9maWxlX3NvX2ZhciA9IHJlZiB0cnVlXG5cbmxldCBzdGF5ZWRfaW5fdGhlX3NhbWVfZmlsZSBmbmFtZSA9XG4gICgqIFRPRE86IHJlbW92ZSB1c2VzIG9mIExvY2F0aW9uLm5vbmUgZnJvbSB0aGUgcHB4ZXMuICopXG4gIGlmIFN0cmluZy5lcXVhbCBmbmFtZSBcIl9ub25lX1wiIHRoZW4gdHJ1ZSAoKiBkbyBub3RoaW5nIGZvciBub3cuICopXG4gIGVsc2VcbiAgICBtYXRjaCAhZmlsZSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIGZpbGUgOj0gU29tZSBmbmFtZTtcbiAgICAgICAgdHJ1ZVxuICAgIHwgU29tZSBvcmlnX2ZuYW1lIC0+XG4gICAgICAgIFN0cmluZy5lcXVhbCBvcmlnX2ZuYW1lIGZuYW1lXG4gICAgICAgIHx8XG4gICAgICAgIChzYW1lX2ZpbGVfc29fZmFyIDo9IGZhbHNlO1xuICAgICAgICAgZmFsc2UpXG5cbmxldCBzaG91bGRfaWdub3JlIGxvYyBhdHRycyA9XG4gICgqIElmIHRoZSBmaWxlbmFtZSBjaGFuZ2VkLCB0aGVuIHRoZXJlIHdlcmUgbGluZSBkaXJlY3RpdmVzLCBhbmQgdGhlIGxvY2F0aW9uc1xuICAgICBhcmUgYWxsIG1lc3NlZCB1cC4gKilcbiAgKG5vdCAoc3RheWVkX2luX3RoZV9zYW1lX2ZpbGUgbG9jLmxvY19zdGFydC5wb3NfZm5hbWUpKVxuICB8fCAoKiBJZ25vcmUgdGhpbmdzIGV4cGxpY2l0bHkgbWFya2VkLiAqKVxuICBMaXN0LmV4aXN0c1xuICAgIH5mOihmdW4gYXR0ciAtPlxuICAgICAgU3RyaW5nLmVxdWFsIGF0dHIuYXR0cl9uYW1lLnR4dFxuICAgICAgICBNZXJsaW5faGVscGVycy5oaWRlX2F0dHJpYnV0ZS5hdHRyX25hbWUudHh0KVxuICAgIGF0dHJzXG5cbmxldCByZWMgZXh0cmFjdF9jb25zdHJhaW50IGUgPVxuICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9jb25zdHJhaW50IChlLCBjdCkgfCBQZXhwX2NvZXJjZSAoZSwgXywgY3QpIC0+IFNvbWUgKGUsIGN0KVxuICB8IFBleHBfbmV3dHlwZSAobmFtZSwgZXhwKSAtPlxuICAgICAgT3B0aW9uLm1hcCAoZXh0cmFjdF9jb25zdHJhaW50IGV4cCkgfmY6KGZ1biAoZXhwLCBjdCkgLT5cbiAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgZSB3aXRoXG4gICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfbmV3dHlwZSAobmFtZSwgZXhwKTtcbiAgICAgICAgICAgICAgcGV4cF9sb2MgPSB7IGUucGV4cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3QgKSlcbiAgfCBfIC0+IE5vbmVcblxubGV0IGRvX2NoZWNrIH5ub2RlX25hbWUgbm9kZV9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jcyA9XG4gIGlmIG5vdCAhc2FtZV9maWxlX3NvX2ZhciB0aGVuIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gIGVsc2UgaWYgbm9kZV9sb2MubG9jX2dob3N0IHRoZW5cbiAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy51bmlvbiBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG4gIGVsc2UgaWYgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuY292ZXJlZF9ieSBjaGlsZHJlbnNfbG9jcyB+bG9jOm5vZGVfbG9jIHRoZW5cbiAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5pbnNlcnQgfm5vZGVfbmFtZSBub2RlX2xvYyBzaWJsaW5nc19sb2NzXG4gIGVsc2VcbiAgICBsZXQgY2hpbGRfbmFtZSwgY2hpbGRfbG9jID1cbiAgICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmZpbmRfb3V0c2lkZSBub2RlX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgIGluXG4gICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6bm9kZV9sb2NcbiAgICAgIFwiaW52YWxpZCBvdXRwdXQgZnJvbSBwcHg6QCB0aGlzICVzIGlzIGJ1aWx0IGZyb20gYSVzIHdob3NlIGxvY2F0aW9uIGlzIFxcXG4gICAgICAgb3V0c2lkZSBvZiB0aGlzIG5vZGUncy5ALkNoaWxkICVzIGZvdW5kIGF0OkAgJWFcIlxuICAgICAgbm9kZV9uYW1lXG4gICAgICAoKG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IGNoaWxkX25hbWUgMCB3aXRoXG4gICAgICAgfCAnYScgfCAnZScgfCAnaScgfCAnbycgfCAndScgLT4gXCJuIFwiXG4gICAgICAgfCBfIC0+IFwiIFwiKVxuICAgICAgXiBjaGlsZF9uYW1lKVxuICAgICAgY2hpbGRfbmFtZSBMb2NhdGlvbi5wcmludCBjaGlsZF9sb2NcblxubGV0IGVuZm9yY2VfaW52YXJpYW50cyBmbmFtZSA9XG4gIGxldCAoKSA9IGZpbGUgOj0gZm5hbWUgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgW05vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnRdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICAoKiBUT0RPOiB3ZSBzaG91bGQgZ2VuZXJhdGUgYSBjbGFzcyB3aGljaCBlbmZvcmNlcyB0aGUgbG9jYXRpb24gaW52YXJpYW50LlxuICAgICAgIEFuZCB0aGVuIHdlIHNob3VsZCBvbmx5IG92ZXJyaWRlIHRoZSBtZXRob2RzIHdoZXJlIHdlIG5lZWQgYW4gZXNjYXBlXG4gICAgICAgaGF0Y2ggYmVjYXVzZSB0aGUgcGFyc2VyIGlzbid0IGRvaW5nIHRoZSByaWdodCB0aGluZy5cblxuICAgICAgIFRoYXQgd291bGQgZW5zdXJlIHRoYXQgd2Ugc3RheSB1cCB0byBkYXRlIGFzIHRoZSBBU1QgY2hhbmdlcy4gKilcblxuICAgIG1ldGhvZCEgbG9uZ2lkZW50X2xvYyB4IHNpYmxpbmdzID1cbiAgICAgIGlmIHgubG9jLmxvY19naG9zdCB0aGVuIHNpYmxpbmdzXG4gICAgICBlbHNlIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmluc2VydCB+bm9kZV9uYW1lOlwiaWRlbnRcIiB4LmxvYyBzaWJsaW5nc1xuXG4gICAgbWV0aG9kISByb3dfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wcmZfbG9jIHgucHJmX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI3Jvd19maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJyb3cgZmllbGRcIiB4LnByZl9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBvYmplY3RfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wb2ZfbG9jIHgucG9mX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjb2JqZWN0X2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm9iamVjdCBmaWVsZFwiIHgucG9mX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgYmluZGluZ19vcCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjYmluZGluZ19vcCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiYmluZGluZyBvcGVyYXRvclwiIHgucGJvcF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB2YWxfbG9jIHgucHZhbF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3ZhbHVlX2Rlc2NyaXB0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInZhbHVlIGRlc2NyaXB0aW9uXCIgeC5wdmFsX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eXBlX2xvYyB4LnB0eXBlX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjdHlwZV9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ0eXBlIGRlY2xhcmF0aW9uXCIgeC5wdHlwZV9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGxhYmVsX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGxkX2xvYyB4LnBsZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2xhYmVsX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImxhYmVsIGRlY2xhcmF0aW9uXCIgeC5wbGRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjZF9sb2MgeC5wY2RfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjb25zdHJ1Y3RvciBkZWNsYXJhdGlvblwiIHgucGNkX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgdHlwZV9leHRlbnNpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdHlleHRfbG9jIHgucHR5ZXh0X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjdHlwZV9leHRlbnNpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidHlwZSBleHRlbnNpb25cIiB4LnB0eWV4dF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBleHRfbG9jIHgucGV4dF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleHRlbnNpb24gY29uc3RydWN0b3JcIiB4LnBleHRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGN0eV9sb2MgeC5wY3R5X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI2NsYXNzX3R5cGUgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3MgdHlwZVwiIHgucGN0eV9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGN0Zl9sb2MgeC5wY3RmX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjY2xhc3NfdHlwZV9maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyB0eXBlIGZpZWxkXCIgeC5wY3RmX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfaW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjaV9sb2MgeC5wY2lfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjbGFzc19pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzXCIgeC5wY2lfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjbF9sb2MgeC5wY2xfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjY2xhc3NfZXhwciB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyBleHByZXNzaW9uXCIgeC5wY2xfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjZl9sb2MgeC5wY2ZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjbGFzc19maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyBmaWVsZFwiIHgucGNmX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHNpZ19sb2MgW10gdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwic2lnbmF0dXJlIGl0ZW1cIiB4LnBzaWdfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbWRfbG9jIHgucG1kX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBkZWNsYXJhdGlvblwiIHgucG1kX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3N1YnN0aXR1dGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtc19sb2MgeC5wbXNfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfc3Vic3RpdHV0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBzdWJzdGl0dXRpb25cIiB4LnBtc19sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG10ZF9sb2MgeC5wbXRkX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIHR5cGUgZGVjbGFyYXRpb25cIiB4LnBtdGRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBvcGVuX2luZm9zIGYgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wb3Blbl9sb2MgeC5wb3Blbl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI29wZW5faW5mb3MgZiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJvcGVuXCIgeC5wb3Blbl9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBpbmNsdWRlX2luZm9zIGYgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5waW5jbF9sb2MgeC5waW5jbF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2luY2x1ZGVfaW5mb3MgZiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJpbmNsdWRlXCIgeC5waW5jbF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBzdHJfbG9jIFtdIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInN0cnVjdHVyZSBpdGVtXCIgeC5wc3RyX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbWJfbG9jIHgucG1iX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX2JpbmRpbmcgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIGJpbmRpbmdcIiB4LnBtYl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlICopXG4gICAgKCogdGhlIHR5cGUgY29uc3RyYWludCBpcyBkdXBsaWNhdGVkLiAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHZiX2xvYyB4LnB2Yl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIG1hdGNoICh4LnB2Yl9wYXQucHBhdF9kZXNjLCBleHRyYWN0X2NvbnN0cmFpbnQgeC5wdmJfZXhwcikgd2l0aFxuICAgICAgICAgICgqIGxldCB4IDogdHlwZSBhIGIgYy4gY3QgPSBlICopXG4gICAgICAgICAgfCAoIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAgICAgIChwdmJfcGF0LCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoXyA6OiBfLCBjdHApOyBfIH0pLFxuICAgICAgICAgICAgICBTb21lIChwdmJfZXhwciwgY3RlKSApXG4gICAgICAgICAgKCogbGV0IHggOiAgY3QgPSBlXG4gICAgICAgICAgICAgbGV0IHggOj4gY3QgPSBlICopXG4gICAgICAgICAgfCAoIFBwYXRfY29uc3RyYWludCAocHZiX3BhdCwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKFtdLCBjdHApOyBfIH0pLFxuICAgICAgICAgICAgICBTb21lIChwdmJfZXhwciwgY3RlKSApXG4gICAgICAgICAgICB3aGVuIExvY2F0aW9uLmNvbXBhcmUgY3RwLnB0eXBfbG9jIGN0ZS5wdHlwX2xvYyA9IDAgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IF9hY2MgPSBzZWxmI2NvcmVfdHlwZSBjdHAgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgeC5wdmJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI3ZhbHVlX2JpbmRpbmcgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidmFsdWUgYmluZGluZ1wiIHgucHZiX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlIG9mOiAqKVxuICAgICgqICAgICBNVCBbQGF0dHIgcGF5bG9hZF0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgcGF5bG9hZCBpcyBvdXRzaWRlIHRoZSAgICAqKVxuICAgICgqIGxvYyBvZiB0aGUgbW9kdWxlIHR5cGUuLi4uICAgICAgICAgICAgICAgICAqKVxuICAgICgqIGFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqICAgICBmdW5jdG9yIChBIDogUykgKEIgOiBTKSAuLi4gICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgWyhCIDogUykgLi4uXSBpcyB0aGUgc2FtZSAqKVxuICAgICgqIGFzIHRoZSBsb2Mgb2YgdGhlIG91dGVybW9zdCBtb2R1bGUgdHlwZS4gICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtdHlfbG9jIHgucG10eV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgeCA9IHJlbG9jX3BtdHlfZnVuY3RvcnMgeCBpblxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wbXR5X2xvYyB4LnBtdHlfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNtb2R1bGVfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGVfZGVzYyB4LnBtdHlfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgdHlwZVwiIHgucG10eV9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSBvZjogKilcbiAgICAoKiAgICAgTUUgW0BhdHRyIHBheWxvYWRdICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIHBheWxvYWQgaXMgb3V0c2lkZSB0aGUgICAgKilcbiAgICAoKiBsb2Mgb2YgdGhlIG1vZHVsZSBleHByLi4uLiAgICAgICAgICAgICAgICAgKilcbiAgICAoKiBhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAgICAgZnVuY3RvciAoQSA6IFMpIChCIDogUykgLi4uICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIFsoQiA6IFMpIC4uLl0gaXMgdGhlIHNhbWUgKilcbiAgICAoKiBhcyB0aGUgbG9jIG9mIHRoZSBvdXRlcm1vc3QgbW9kdWxlIGV4cHIuICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbW9kX2xvYyB4LnBtb2RfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHggPSByZWxvY19wbW9kX2Z1bmN0b3JzIHggaW5cbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucG1vZF9sb2MgeC5wbW9kX2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjbW9kdWxlX2V4cHIgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI21vZHVsZV9leHByX2Rlc2MgeC5wbW9kX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIGV4cHJlc3Npb25cIiB4LnBtb2RfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBTYW1lIGFzIGFib3ZlIC4uLiAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eXBfbG9jIHgucHR5cF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wdHlwX2xvYyB4LnB0eXBfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNjb3JlX3R5cGUgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZV9kZXNjIHgucHR5cF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNvcmUgdHlwZVwiIHgucHR5cF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuICAgICgqIEFuZCBhZ2FpbiAuLi4gKilcbiAgICAoKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wZXhwX2xvYyB4LnBleHBfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucGV4cF9sb2MgeC5wZXhwX2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjZXhwcmVzc2lvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbl9kZXNjIHgucGV4cF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4cHJlc3Npb25cIiB4LnBleHBfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKilcbiAgICAoKiAuLi4gYW5kIGFnYWluICopXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHBhdF9sb2MgeC5wcGF0X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBwYXRfbG9jIHgucHBhdF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI3BhdHRlcm4geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI3BhdHRlcm5fZGVzYyB4LnBwYXRfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJwYXR0ZXJuXCIgeC5wcGF0X2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2UgdGhlIGxvY2F0aW9uIG9mICAqKVxuICAgICgqIHRoZSBjb25zdHJ1Y3QgZXF1YWxzIHRoZSBsb2NhdGlvbiBvZiB0aGUgdHlwZV9leGNlcHRpb24gKilcbiAgICAoKiAoYW5kIHNvIGNvdmVycyB0aGUgbG9jYXRpb24gb2YgdGhlIGF0dHJpYnV0ZXMpLiAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISB0eXBlX2V4Y2VwdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eWV4bl9sb2MgeC5wdHlleG5fYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGluaXQgPSBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBsZXQgY2hpbGRzX2xvY3MgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgucHR5ZXhuX2NvbnN0cnVjdG9yIGluaXRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGF0dHJzX2xvY3MgPSBzZWxmI2F0dHJpYnV0ZXMgeC5wdHlleG5fYXR0cmlidXRlcyBpbml0IGluXG4gICAgICAgIGlnbm9yZVxuICAgICAgICAgIChkb19jaGVjayB+bm9kZV9uYW1lOlwiZXhjZXB0aW9uXCIgeC5wdHlleG5fbG9jIGF0dHJzX2xvY3Mgc2libGluZ3NfbG9jcyk7XG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleGNlcHRpb25cIiB4LnB0eWV4bl9sb2MgY2hpbGRzX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgdGhlICopXG4gICAgKCogbGhzIGlzIHNvbWV0aW1lcyBpbmNsdWRlZCBpbiB0aGUgcmhzLiAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHdpdGhfY29uc3RyYWludCB4IHNpYmxpbmdzX2xvYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHdpdGhfdHlwZSAoXywgdGRlY2wpIHwgUHdpdGhfdHlwZXN1YnN0IChfLCB0ZGVjbCkgLT5cbiAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gdGRlY2wgc2libGluZ3NfbG9jXG4gICAgICB8IF8gLT4gc3VwZXIjd2l0aF9jb25zdHJhaW50IHggc2libGluZ3NfbG9jXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIG9mOiopXG4gICAgKCogLSBGb28ueyBiYXI7IC4uLiB9ICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIEZvby5bIGJhcjsgLi4uIF0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gRm9vLiggYmFyOyAuLi4gKSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBtZXRob2QgeCA6IHR5cGUgYS4gLi4uID0gLi4uICAgICAgICAgKilcbiAgICAoKiAtIGZvby5AKGJhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLkAoYmFyKSA8LSBiYXogICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS57YmFyfSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLntiYXJ9IDwtIGJheiAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUuW2Jhcl0gICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS5bYmFyXSA8LSBiYXogICAgICAgICAgICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBleHBfcmVjb3JkIChsYWJlbHMsIGV4cHJfbykgLT5cbiAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChsaWQsIGUpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsaWQubG9jLmxvY19zdGFydCBlLnBleHBfbG9jLmxvY19zdGFydFxuICAgICAgICAgICAgICAgICAgPSAwXG4gICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBsaWQubG9jIGUucGV4cF9sb2MgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKCogcHVubmluZy4gKilcbiAgICAgICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2NcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfY29uc3RyYWludCAoZSwgYykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIHsgZm9vIDogaW50IH0gYW5kIHsgZm9vIDogaW50ID0geCB9IC4uLiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGUgYWNjXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogTm8gaWRlYSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuICopXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZSBhY2NcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgbGFiZWxzIGFjY1xuICAgICAgICAgIGluXG4gICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGV4cHJfbyBhY2NcbiAgICAgIHwgUGV4cF9vcGVuXG4gICAgICAgICAgKCh7IHBvcGVuX2V4cHIgPSB7IHBtb2RfZGVzYyA9IFBtb2RfaWRlbnQgbGlkOyBfIH07IF8gfSBhcyBvcG4pLCBlKVxuICAgICAgICB3aGVuIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX3N0YXJ0IGUucGV4cF9sb2MubG9jX3N0YXJ0ID0gMFxuICAgICAgICAgICAgICYmIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX2VuZCBlLnBleHBfbG9jLmxvY19lbmQgPD4gMCAtPlxuICAgICAgICAgICgqIGxldCdzIHJlbG9jYXRlIC4uLiAqKVxuICAgICAgICAgIGxldCBlX2xvYyA9IHsgZS5wZXhwX2xvYyB3aXRoIGxvY19zdGFydCA9IGxpZC5sb2MubG9jX2VuZCB9IGluXG4gICAgICAgICAgc3VwZXIjZXhwcmVzc2lvbl9kZXNjXG4gICAgICAgICAgICAoUGV4cF9vcGVuIChvcG4sIHsgZSB3aXRoIHBleHBfbG9jID0gZV9sb2MgfSkpXG4gICAgICAgICAgICBhY2NcbiAgICAgIHwgUGV4cF9wb2x5IChlLCBTb21lIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChfLCBjdCk7IF8gfSkgLT4gKFxuICAgICAgICAgIG1hdGNoIGV4dHJhY3RfY29uc3RyYWludCBlIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKGUsIGN0ZSkgd2hlbiBMb2NhdGlvbi5jb21wYXJlIGN0ZS5wdHlwX2xvYyBjdC5wdHlwX2xvYyA9IDAgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgY3QgYWNjIGluXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2MpXG4gICAgICB8IFBleHBfYXBwbHkgKHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IGxpZDsgXyB9OyBfIH0sIGFyZ3MpIC0+IChcbiAgICAgICAgICBtYXRjaCBMb25naWRlbnQubGFzdF9leG4gbGlkIHdpdGhcbiAgICAgICAgICB8IGlkXG4gICAgICAgICAgICB3aGVuIFN0cmluZy5pc19wcmVmaXggaWQgfnByZWZpeDpcIi5cIlxuICAgICAgICAgICAgICAgICAmJiAoU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiKClcIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCIoKTwtXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiW11cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJbXTwtXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4Olwie31cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJ7fTwtXCIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbGlzdCAoZnVuIChfLCBlKSAtPiBzZWxmI2V4cHJlc3Npb24gZSkgYXJncyBhY2NcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjY1xuICAgICAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2MpXG4gICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSBvZjogICAgICAgICAgICAgKilcbiAgICAoKiAtIHB1bm5pbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIHJlY29yZCBmaWVsZCB3aXRoIHR5cGUgY29uc3RyYWludC4gICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIHVucGFjayBsb2NhdGlvbnMgYmVpbmcgaW5jb3JyZWN0IHdoZW4gY29uc3RyYWluZWQgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgcGF0dGVybl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQcGF0X3JlY29yZCAobGFiZWxzLCBfKSAtPlxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAobGlkLCBwYXQpIGFjYyAtPlxuICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX3N0YXJ0IHBhdC5wcGF0X2xvYy5sb2Nfc3RhcnRcbiAgICAgICAgICAgICAgICA9IDBcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgbGlkLmxvYyBwYXQucHBhdF9sb2MgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICgqIHNpbXBsZSBwdW5uaW5nISAqKVxuICAgICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2NcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBtYXRjaCBwYXQucHBhdF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChwLCBjKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICgqIHsgZm9vIDogaW50IH0gYW5kIHsgZm9vIDogaW50ID0geCB9IC4uLiAqKVxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gcCBhY2NcbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICgqIE5vIGlkZWEgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiAqKVxuICAgICAgICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBwYXQgYWNjXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBhdCBhY2MgaW5cbiAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBsYWJlbHMgYWNjXG4gICAgICB8IFBwYXRfY29uc3RyYWludCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3VucGFjayBhOyBfIH0sIGIpIC0+XG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI3BhdHRlcm5fZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIHRoZSBsb2NhdGlvbiBvZiB0aGUgKilcbiAgICAoKiBmYWtlIHN0cnVjdHVyZSBmb3IgYSBnZW5lcmF0aXZlIGFyZ3VtZW50IGNvdmVycyB0aGUgICAgICopXG4gICAgKCogbG9jYXRpb24gb2YgdGhlIGZ1bmN0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUG1vZF9hcHBseSAobSwgeyBwbW9kX2Rlc2MgPSBQbW9kX3N0cnVjdHVyZSBbXTsgcG1vZF9sb2M7IF8gfSlcbiAgICAgICAgd2hlbiBMb2NhdGlvbi5jb21wYXJlX3BvcyBtLnBtb2RfbG9jLmxvY19zdGFydCBwbW9kX2xvYy5sb2Nfc3RhcnQgPSAwIC0+XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX2V4cHIgbSBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNtb2R1bGVfZXhwcl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgdGhlIGxvY2F0aW9uIG9mIHRoZSAqKVxuICAgICgqIG9wZW5faW5mb3MgZm9yIFBjbF9vcGVuIG9ubHkgY292ZXJzIHRoZSBcIm9wZW5cIiBrZXl3b3JkICAqKVxuICAgICgqIGFuZCBub3QgdGhlIG1vZHVsZSBvcGVuZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGNsX29wZW4gKG9kLCBjZSkgLT5cbiAgICAgICAgICAoKiBpbmxpbmUgb2Ygb3Blbl9kZXNjcmlwdGlvbiAod2hpY2ggZWZmZWN0aXZlbHkgbWFrZXMgdGhhdCBub2RlXG4gICAgICAgICAgICAgZGlzYXBwZWFyKSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIG9kLnBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIG9kLnBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIG9kLnBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgKCogY29udGludWUgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGNlIGFjYyBpblxuICAgICAgICAgIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI2NsYXNzX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBTYW1lIGFzIGFib3ZlIC4uLiAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGN0eV9vcGVuIChvZCwgY3QpIC0+XG4gICAgICAgICAgKCogaW5saW5lIG9mIG9wZW5fZGVzY3JpcHRpb24gKHdoaWNoIGVmZmVjdGl2ZWx5IG1ha2VzIHRoYXQgbm9kZVxuICAgICAgICAgICAgIGRpc2FwcGVhcikgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIG9kLnBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBvZC5wb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBvZC5wb3Blbl9sb2MgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBvZC5wb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICgqIGNvbnRpbnVlICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBjdCBhY2MgaW5cbiAgICAgICAgICBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNjbGFzc190eXBlX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIGRvY3N0cmluZ3MgaGF2ZSAgICAqKVxuICAgICgqIHRoZSBzYW1lIGxvY2F0aW9uIGFzIHRoZSBpdGVtIHRoZXkgZ2V0IGF0dGFjaGVkIHRvLiAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeCBhY2MgPVxuICAgICAgbWF0Y2ggeC5hdHRyX25hbWUudHh0IHdpdGhcbiAgICAgIHwgXCJvY2FtbC5kb2NcIiB8IFwib2NhbWwudGV4dFwiIC0+IGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI2F0dHJpYnV0ZSB4IGFjY1xuICBlbmRcbiIsIigqJCBvcGVuIFBweGxpYl9jaW5hcHNfaGVscGVycyAkKilcbm9wZW4gSW1wb3J0XG5vcGVuIFV0aWxzXG5vcGVuIENvbW1vblxub3BlbiBXaXRoX2Vycm9yc1xubW9kdWxlIEFyZyA9IFN0ZGxpYi5BcmdcblxubGV0IGV4ZV9uYW1lID0gU3RkbGliLkZpbGVuYW1lLmJhc2VuYW1lIFN0ZGxpYi5TeXMuZXhlY3V0YWJsZV9uYW1lXG5sZXQgYXJncyA9IHJlZiBbXVxubGV0IGFkZF9hcmcga2V5IHNwZWMgfmRvYyA9IGFyZ3MgOj0gKGtleSwgc3BlYywgZG9jKSA6OiAhYXJnc1xubGV0IGxvY19mbmFtZSA9IHJlZiBOb25lXG5sZXQgcGVyZm9ybV9jaGVja3MgPSByZWYgT3B0aW9ucy5wZXJmb3JtX2NoZWNrc1xubGV0IHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgPSByZWYgT3B0aW9ucy5wZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zXG5sZXQgcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgPSByZWYgT3B0aW9ucy5wZXJmb3JtX2xvY2F0aW9uc19jaGVja1xubGV0IGRlYnVnX2F0dHJpYnV0ZV9kcm9wID0gcmVmIGZhbHNlXG5sZXQgYXBwbHlfbGlzdCA9IHJlZiBOb25lXG5sZXQgcHJlcHJvY2Vzc29yID0gcmVmIE5vbmVcbmxldCBub19tZXJnZSA9IHJlZiBmYWxzZVxubGV0IHJlcXVlc3RfcHJpbnRfcGFzc2VzID0gcmVmIGZhbHNlXG5sZXQgcmVxdWVzdF9wcmludF90cmFuc2Zvcm1hdGlvbnMgPSByZWYgZmFsc2VcbmxldCB1c2VfY29sb3IgPSByZWYgdHJ1ZVxubGV0IGRpZmZfY29tbWFuZCA9IHJlZiBPcHRpb25zLmRpZmZfY29tbWFuZFxubGV0IHByZXR0eSA9IHJlZiBmYWxzZVxubGV0IHN0eWxlciA9IHJlZiBOb25lXG5sZXQgb3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lID0gcmVmIE5vbmVcbmxldCBjb3JyZWN0ZWRfc3VmZml4ID0gcmVmIFwiLnBweC1jb3JyZWN0ZWRcIlxuXG5sZXQgZ2hvc3QgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXBcbiAgICBtZXRob2QhIGxvY2F0aW9uIGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9XG4gIGVuZFxuXG5sZXQgY2hvcF9wcmVmaXggfnByZWZpeCB4ID1cbiAgaWYgU3RyaW5nLmlzX3ByZWZpeCB+cHJlZml4IHggdGhlblxuICAgIFNvbWUgKFN0cmluZy5kcm9wX3ByZWZpeCB4IChTdHJpbmcubGVuZ3RoIHByZWZpeCkpXG4gIGVsc2UgTm9uZVxuXG5sZXQgZ2V0X2RlZmF1bHRfcGF0aCAobG9jIDogTG9jYXRpb24udCkgPVxuICBsZXQgZm5hbWUgPSBsb2MubG9jX3N0YXJ0LnBvc19mbmFtZSBpblxuICBtYXRjaCBjaG9wX3ByZWZpeCB+cHJlZml4OlwiLi9cIiBmbmFtZSB3aXRoXG4gIHwgU29tZSBmbmFtZSAtPiBmbmFtZVxuICB8IE5vbmUgLT4gZm5hbWVcblxubGV0IGdldF9kZWZhdWx0X3BhdGhfc3RyIDogc3RydWN0dXJlIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gXCJcIlxuICB8IHsgcHN0cl9sb2MgPSBsb2M7IF8gfSA6OiBfIC0+IGdldF9kZWZhdWx0X3BhdGggbG9jXG5cbmxldCBnZXRfZGVmYXVsdF9wYXRoX3NpZyA6IHNpZ25hdHVyZSAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IFtdIC0+IFwiXCJcbiAgfCB7IHBzaWdfbG9jID0gbG9jOyBfIH0gOjogXyAtPiBnZXRfZGVmYXVsdF9wYXRoIGxvY1xuXG5tb2R1bGUgTGludF9lcnJvciA9IHN0cnVjdFxuICB0eXBlIHQgPSBMb2NhdGlvbi50ICogc3RyaW5nXG5cbiAgbGV0IG9mX3N0cmluZyBsb2MgcyA9IChsb2MsIHMpXG5lbmRcblxubW9kdWxlIENvb2tpZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVFxuXG4gIGxldCBnaXZlbl90aHJvdWdoX2NsaSA9IHJlZiBbXVxuXG4gIGxldCBnZXQgVCBuYW1lIHBhdHRlcm4gPVxuICAgIE9wdGlvbi5tYXAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZ2V0X2Nvb2tpZSBuYW1lKSB+ZjooZnVuIGUgLT5cbiAgICAgICAgbGV0IGUgPSBTZWxlY3RlZF9hc3Qub2Zfb2NhbWwgRXhwcmVzc2lvbiBlIGluXG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlIHBhdHRlcm4gZS5wZXhwX2xvYyBlIEZuLmlkKVxuXG4gIGxldCBnZXRfcmVzIFQgbmFtZSBwYXR0ZXJuID1cbiAgICBtYXRjaFxuICAgICAgT3B0aW9uLm1hcCAoQXN0bGliLkFzdF9tZXRhZGF0YS5nZXRfY29va2llIG5hbWUpIH5mOihmdW4gZSAtPlxuICAgICAgICAgIGxldCBlID0gU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIEV4cHJlc3Npb24gZSBpblxuICAgICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGUucGV4cF9sb2MgZSBGbi5pZClcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKE9rIGUpIC0+IE9rIChTb21lIGUpXG4gICAgfCBTb21lIChFcnJvciBlKSAtPiBFcnJvciBlXG5cbiAgbGV0IHNldCBUIG5hbWUgZXhwciA9XG4gICAgQXN0bGliLkFzdF9tZXRhZGF0YS5zZXRfY29va2llIG5hbWUgKFNlbGVjdGVkX2FzdC50b19vY2FtbCBFeHByZXNzaW9uIGV4cHIpXG5cbiAgbGV0IGhhbmRsZXJzID0gcmVmIFtdXG4gIGxldCBhZGRfaGFuZGxlciBmID0gaGFuZGxlcnMgOj0gIWhhbmRsZXJzIEAgWyBmIF1cblxuICBsZXQgYWRkX3NpbXBsZV9oYW5kbGVyIG5hbWUgcGF0dGVybiB+ZiA9XG4gICAgYWRkX2hhbmRsZXIgKGZ1biBUIC0+IGYgKGdldCBUIG5hbWUgcGF0dGVybikpXG5cbiAgbGV0IGFja25vd2xlZGdlX2Nvb2tpZXMgVCA9IExpc3QuaXRlciAhaGFuZGxlcnMgfmY6KGZ1biBmIC0+IGYgVClcbiAgbGV0IHBvc3RfaGFuZGxlcnMgPSByZWYgW11cbiAgbGV0IGFkZF9wb3N0X2hhbmRsZXIgZiA9IHBvc3RfaGFuZGxlcnMgOj0gIXBvc3RfaGFuZGxlcnMgQCBbIGYgXVxuICBsZXQgY2FsbF9wb3N0X2hhbmRsZXJzIFQgPSBMaXN0Lml0ZXIgIXBvc3RfaGFuZGxlcnMgfmY6KGZ1biBmIC0+IGYgVClcbmVuZFxuXG5tb2R1bGUgSW5zdHJ1bWVudCA9IHN0cnVjdFxuICB0eXBlIHBvcyA9IEJlZm9yZSB8IEFmdGVyXG5cbiAgdHlwZSB0ID0ge1xuICAgIHRyYW5zZm9ybWF0aW9uIDpcbiAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50O1xuICAgIHBvc2l0aW9uIDogcG9zO1xuICB9XG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgbGV0IG1ha2UgdHJhbnNmb3JtYXRpb24gfnBvc2l0aW9uID1cbiAgICAgIGxldCB0cmFuc2Zvcm1hdGlvbiBjdHggc3QgPSByZXR1cm4gKHRyYW5zZm9ybWF0aW9uIGN0eCBzdCkgaW5cbiAgICAgIHsgdHJhbnNmb3JtYXRpb247IHBvc2l0aW9uIH1cbiAgZW5kXG5cbiAgbGV0IG1ha2UgdHJhbnNmb3JtYXRpb24gfnBvc2l0aW9uID1cbiAgICBsZXQgdHJhbnNmb3JtYXRpb24gXyBzdCA9IHRyYW5zZm9ybWF0aW9uIHN0IGluXG4gICAgVjIubWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb25cbmVuZFxuXG5tb2R1bGUgVHJhbnNmb3JtID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBuYW1lIDogc3RyaW5nO1xuICAgIGFsaWFzZXMgOiBzdHJpbmcgbGlzdDtcbiAgICBpbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgV2l0aF9lcnJvcnMudClcbiAgICAgIG9wdGlvbjtcbiAgICBpbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgV2l0aF9lcnJvcnMudClcbiAgICAgIG9wdGlvbjtcbiAgICBsaW50X2ltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiBQYXJzZXRyZWUuc3RydWN0dXJlIC0+IExpbnRfZXJyb3IudCBsaXN0KVxuICAgICAgb3B0aW9uO1xuICAgIGxpbnRfaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+IFBhcnNldHJlZS5zaWduYXR1cmUgLT4gTGludF9lcnJvci50IGxpc3QpXG4gICAgICBvcHRpb247XG4gICAgcHJlcHJvY2Vzc19pbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgV2l0aF9lcnJvcnMudClcbiAgICAgIG9wdGlvbjtcbiAgICBwcmVwcm9jZXNzX2ludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGVuY2xvc2VfaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBMb2NhdGlvbi50IG9wdGlvbiAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAqIFBhcnNldHJlZS5zdHJ1Y3R1cmUpXG4gICAgICBvcHRpb247XG4gICAgZW5jbG9zZV9pbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIExvY2F0aW9uLnQgb3B0aW9uIC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlICogUGFyc2V0cmVlLnNpZ25hdHVyZSlcbiAgICAgIG9wdGlvbjtcbiAgICBpbnN0cnVtZW50IDogSW5zdHJ1bWVudC50IG9wdGlvbjtcbiAgICBydWxlcyA6IENvbnRleHRfZnJlZS5SdWxlLnQgbGlzdDtcbiAgICByZWdpc3RlcmVkX2F0IDogQ2FsbGVyX2lkLnQ7XG4gIH1cblxuICBsZXQgaGFzX25hbWUgdCBuYW1lID1cbiAgICBTdHJpbmcuZXF1YWwgbmFtZSB0Lm5hbWUgfHwgTGlzdC5leGlzdHMgfmY6KFN0cmluZy5lcXVhbCBuYW1lKSB0LmFsaWFzZXNcblxuICBsZXQgYWxsIDogdCBsaXN0IHJlZiA9IHJlZiBbXVxuXG4gIGxldCBwcmludF9jYWxsZXJfaWQgb2MgKGNhbGxlcl9pZCA6IENhbGxlcl9pZC50KSA9XG4gICAgbWF0Y2ggY2FsbGVyX2lkIHdpdGhcbiAgICB8IE5vbmUgLT4gb3V0cHV0X3N0cmluZyBvYyBcIjx1bmtub3duIGxvY2F0aW9uPlwiXG4gICAgfCBTb21lIGxvYyAtPiBQcmludGYuZnByaW50ZiBvYyBcIiVzOiVkXCIgbG9jLmZpbGVuYW1lIGxvYy5saW5lX251bWJlclxuXG4gIGxldCByZWdpc3RlciA/KGV4dGVuc2lvbnMgPSBbXSkgPyhydWxlcyA9IFtdKSA/ZW5jbG9zZV9pbXBsID9lbmNsb3NlX2ludGZcbiAgICAgID9pbXBsID9pbnRmID9saW50X2ltcGwgP2xpbnRfaW50ZiA/cHJlcHJvY2Vzc19pbXBsID9wcmVwcm9jZXNzX2ludGZcbiAgICAgID9pbnN0cnVtZW50ID8oYWxpYXNlcyA9IFtdKSBuYW1lID1cbiAgICBsZXQgcnVsZXMgPSBMaXN0Lm1hcCBleHRlbnNpb25zIH5mOkNvbnRleHRfZnJlZS5SdWxlLmV4dGVuc2lvbiBAIHJ1bGVzIGluXG4gICAgbGV0IGNhbGxlcl9pZCA9IENhbGxlcl9pZC5nZXQgfnNraXA6WyBTdGRsaWIuX19GSUxFX18gXSBpblxuICAgIChtYXRjaCBMaXN0LmZpbHRlciAhYWxsIH5mOihmdW4gY3QgLT4gaGFzX25hbWUgY3QgbmFtZSkgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IGN0IDo6IF8gLT5cbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCJXYXJuaW5nOiBjb2RlIHRyYW5zZm9ybWF0aW9uICVzIHJlZ2lzdGVyZWQgdHdpY2UuXFxuXCJcbiAgICAgICAgICBuYW1lO1xuICAgICAgICBQcmludGYuZXByaW50ZiBcIiAgLSBmaXJzdCB0aW1lIHdhcyBhdCAlYVxcblwiIHByaW50X2NhbGxlcl9pZFxuICAgICAgICAgIGN0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiICAtIHNlY29uZCB0aW1lIGlzIGF0ICVhXFxuXCIgcHJpbnRfY2FsbGVyX2lkIGNhbGxlcl9pZCk7XG4gICAgbGV0IGltcGwgPSBPcHRpb24ubWFwIGltcGwgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKSBpblxuICAgIGxldCBpbnRmID0gT3B0aW9uLm1hcCBpbnRmIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSkgaW5cbiAgICBsZXQgcHJlcHJvY2Vzc19pbXBsID1cbiAgICAgIE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbXBsIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSlcbiAgICBpblxuICAgIGxldCBwcmVwcm9jZXNzX2ludGYgPVxuICAgICAgT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ludGYgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKVxuICAgIGluXG4gICAgbGV0IGN0ID1cbiAgICAgIHtcbiAgICAgICAgbmFtZTtcbiAgICAgICAgYWxpYXNlcztcbiAgICAgICAgcnVsZXM7XG4gICAgICAgIGVuY2xvc2VfaW1wbDtcbiAgICAgICAgZW5jbG9zZV9pbnRmO1xuICAgICAgICBpbXBsO1xuICAgICAgICBpbnRmO1xuICAgICAgICBsaW50X2ltcGw7XG4gICAgICAgIHByZXByb2Nlc3NfaW1wbDtcbiAgICAgICAgcHJlcHJvY2Vzc19pbnRmO1xuICAgICAgICBsaW50X2ludGY7XG4gICAgICAgIGluc3RydW1lbnQ7XG4gICAgICAgIHJlZ2lzdGVyZWRfYXQgPSBjYWxsZXJfaWQ7XG4gICAgICB9XG4gICAgaW5cbiAgICBhbGwgOj0gY3QgOjogIWFsbFxuXG4gIGxldCByZWMgbGFzdCBwcmV2IGwgPSBtYXRjaCBsIHdpdGggW10gLT4gcHJldiB8IHggOjogbCAtPiBsYXN0IHggbFxuXG4gIGxldCBsb2Nfb2ZfbGlzdCB+Z2V0X2xvYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBsZXQgZmlyc3QgOiBMb2NhdGlvbi50ID0gZ2V0X2xvYyB4IGluXG4gICAgICAgIGxldCBsYXN0ID0gZ2V0X2xvYyAobGFzdCB4IGwpIGluXG4gICAgICAgIFNvbWUgeyBmaXJzdCB3aXRoIGxvY19lbmQgPSBsYXN0LmxvY19lbmQgfVxuXG4gIGxldCBtZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyB0IH5lbWJlZF9lcnJvcnMgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICB+dG9vbF9uYW1lIH5pbnB1dF9uYW1lID1cbiAgICBsZXQgeyBydWxlczsgZW5jbG9zZV9pbXBsOyBlbmNsb3NlX2ludGY7IGltcGw7IGludGY7IF8gfSA9IHQgaW5cbiAgICBsZXQgbWFwID1cbiAgICAgIG5ldyBDb250ZXh0X2ZyZWUubWFwX3RvcF9kb3duXG4gICAgICAgIHJ1bGVzIH5lbWJlZF9lcnJvcnMgfmdlbmVyYXRlZF9jb2RlX2hvb2s6aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICBpblxuICAgIGxldCBnZW5faGVhZGVyX2FuZF9mb290ZXIgY29udGV4dCB3aG9sZV9sb2MgZiA9XG4gICAgICBsZXQgaGVhZGVyLCBmb290ZXIgPSBmIHdob2xlX2xvYyBpblxuICAgICAgKG1hdGNoIHdob2xlX2xvYyB3aXRoXG4gICAgICB8IFNvbWUgKGxvYyA6IExvY2F0aW9uLnQpIC0+IChcbiAgICAgICAgICBsZXQgbG9jX2hlYWRlciA9IHsgbG9jIHdpdGggbG9jX2VuZCA9IGxvYy5sb2Nfc3RhcnQgfSBpblxuICAgICAgICAgIGxldCBsb2NfZm9vdGVyID0geyBsb2Mgd2l0aCBsb2Nfc3RhcnQgPSBsb2MubG9jX2VuZCB9IGluXG4gICAgICAgICAgKG1hdGNoIGhlYWRlciB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiBob29rLmYgY29udGV4dCBsb2NfaGVhZGVyIChNYW55IGhlYWRlcikpO1xuICAgICAgICAgIG1hdGNoIGZvb3RlciB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiBob29rLmYgY29udGV4dCBsb2NfZm9vdGVyIChNYW55IGZvb3RlcikpXG4gICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgIG1hdGNoIGhlYWRlciBAIGZvb3RlciB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgbCAtPlxuICAgICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBMZXhpbmcucG9zX2ZuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgIHBvc19sbnVtID0gMTtcbiAgICAgICAgICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgICAgICAgICAgcG9zX2NudW0gPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgICAgICAgeyBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBwb3M7IGxvY19lbmQgPSBwb3M7IGxvY19naG9zdCA9IGZhbHNlIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaG9vay5mIGNvbnRleHQgbG9jIChNYW55IGwpKSk7XG4gICAgICAoaGVhZGVyLCBmb290ZXIpXG4gICAgaW5cbiAgICBsZXQgaW5wdXRfbmFtZSA9XG4gICAgICBtYXRjaCBpbnB1dF9uYW1lIHdpdGggU29tZSBpbnB1dF9uYW1lIC0+IGlucHV0X25hbWUgfCBOb25lIC0+IFwiX25vbmVfXCJcbiAgICBpblxuICAgIGxldCBtYXBfaW1wbCBjdHh0IHN0X3dpdGhfYXR0cnMgPVxuICAgICAgbGV0IGF0dHJzLCBzdCA9XG4gICAgICAgIExpc3Quc3BsaXRfd2hpbGUgc3Rfd2l0aF9hdHRycyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcHN0cl9kZXNjID0gUHN0cl9hdHRyaWJ1dGUgXzsgXyB9IC0+IHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICBpblxuICAgICAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc3RyIHN0IGluXG4gICAgICBsZXQgYmFzZV9jdHh0ID1cbiAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICBpblxuICAgICAgbGV0IGhlYWRlciwgZm9vdGVyID1cbiAgICAgICAgbWF0Y2ggZW5jbG9zZV9pbXBsIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChbXSwgW10pXG4gICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICBsZXQgd2hvbGVfbG9jID1cbiAgICAgICAgICAgICAgbG9jX29mX2xpc3Qgc3QgfmdldF9sb2M6KGZ1biBzdCAtPiBzdC5QYXJzZXRyZWUucHN0cl9sb2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIFN0cnVjdHVyZV9pdGVtIHdob2xlX2xvYyAoZiBiYXNlX2N0eHQpXG4gICAgICBpblxuICAgICAgbWFwI3N0cnVjdHVyZSBiYXNlX2N0eHQgKExpc3QuY29uY2F0IFsgYXR0cnM7IGhlYWRlcjsgc3Q7IGZvb3RlciBdKVxuICAgICAgPj49IGZ1biBzdCAtPiBtYXRjaCBpbXBsIHdpdGggTm9uZSAtPiByZXR1cm4gc3QgfCBTb21lIGYgLT4gZiBjdHh0IHN0XG4gICAgaW5cbiAgICBsZXQgbWFwX2ludGYgY3R4dCBzZ193aXRoX2F0dHJzID1cbiAgICAgIGxldCBhdHRycywgc2cgPVxuICAgICAgICBMaXN0LnNwbGl0X3doaWxlIHNnX3dpdGhfYXR0cnMgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBzaWdfZGVzYyA9IFBzaWdfYXR0cmlidXRlIF87IF8gfSAtPiB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3NpZyBzZyBpblxuICAgICAgbGV0IGJhc2VfY3R4dCA9XG4gICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZVxuICAgICAgaW5cbiAgICAgIGxldCBoZWFkZXIsIGZvb3RlciA9XG4gICAgICAgIG1hdGNoIGVuY2xvc2VfaW50ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoW10sIFtdKVxuICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgbGV0IHdob2xlX2xvYyA9XG4gICAgICAgICAgICAgIGxvY19vZl9saXN0IHNnIH5nZXRfbG9jOihmdW4gc2cgLT4gc2cuUGFyc2V0cmVlLnBzaWdfbG9jKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGdlbl9oZWFkZXJfYW5kX2Zvb3RlciBTaWduYXR1cmVfaXRlbSB3aG9sZV9sb2MgKGYgYmFzZV9jdHh0KVxuICAgICAgaW5cbiAgICAgIG1hcCNzaWduYXR1cmUgYmFzZV9jdHh0IChMaXN0LmNvbmNhdCBbIGF0dHJzOyBoZWFkZXI7IHNnOyBmb290ZXIgXSlcbiAgICAgID4+PSBmdW4gc2cgLT4gbWF0Y2ggaW50ZiB3aXRoIE5vbmUgLT4gcmV0dXJuIHNnIHwgU29tZSBmIC0+IGYgY3R4dCBzZ1xuICAgIGluXG4gICAgeyB0IHdpdGggaW1wbCA9IFNvbWUgbWFwX2ltcGw7IGludGYgPSBTb21lIG1hcF9pbnRmIH1cblxuICBsZXQgYnVpbHRpbl9vZl9jb250ZXh0X2ZyZWVfcmV3cml0ZXJzIH5ob29rIH5ydWxlcyB+ZW5jbG9zZV9pbXBsIH5lbmNsb3NlX2ludGZcbiAgICAgIH5pbnB1dF9uYW1lID1cbiAgICBtZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyB+aG9vayB+aW5wdXRfbmFtZVxuICAgICAge1xuICAgICAgICBuYW1lID0gXCI8YnVpbHRpbjpjb250ZXh0LWZyZWU+XCI7XG4gICAgICAgIGFsaWFzZXMgPSBbXTtcbiAgICAgICAgaW1wbCA9IE5vbmU7XG4gICAgICAgIGludGYgPSBOb25lO1xuICAgICAgICBsaW50X2ltcGwgPSBOb25lO1xuICAgICAgICBsaW50X2ludGYgPSBOb25lO1xuICAgICAgICBwcmVwcm9jZXNzX2ltcGwgPSBOb25lO1xuICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICBlbmNsb3NlX2ltcGw7XG4gICAgICAgIGVuY2xvc2VfaW50ZjtcbiAgICAgICAgaW5zdHJ1bWVudCA9IE5vbmU7XG4gICAgICAgIHJ1bGVzO1xuICAgICAgICByZWdpc3RlcmVkX2F0ID0gQ2FsbGVyX2lkLmdldCB+c2tpcDpbXTtcbiAgICAgIH1cblxuICBsZXQgcGFydGl0aW9uX3RyYW5zZm9ybWF0aW9ucyB0cyA9XG4gICAgbGV0IGJlZm9yZV9pbnN0cnMsIGFmdGVyX2luc3RycywgcmVzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB0cyB+aW5pdDooW10sIFtdLCBbXSkgfmY6KGZ1biAoYmVmX2ksIGFmdF9pLCByZXN0KSB0IC0+XG4gICAgICAgICAgbGV0IHJlZHVjZWRfdCA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHQgd2l0aFxuICAgICAgICAgICAgICBsaW50X2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICBsaW50X2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGYgaW5zdHIgPVxuICAgICAgICAgICAgKGluc3RyLkluc3RydW1lbnQucG9zaXRpb24sIGluc3RyLkluc3RydW1lbnQudHJhbnNmb3JtYXRpb24pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBPcHRpb24ubWFwIHQuaW5zdHJ1bWVudCB+ZiB3aXRoXG4gICAgICAgICAgfCBTb21lIChCZWZvcmUsIHRyYW5zZikgLT5cbiAgICAgICAgICAgICAgKCB7IHJlZHVjZWRfdCB3aXRoIGltcGwgPSBTb21lIHRyYW5zZjsgcnVsZXMgPSBbXSB9IDo6IGJlZl9pLFxuICAgICAgICAgICAgICAgIGFmdF9pLFxuICAgICAgICAgICAgICAgIHJlZHVjZWRfdCA6OiByZXN0IClcbiAgICAgICAgICB8IFNvbWUgKEFmdGVyLCB0cmFuc2YpIC0+XG4gICAgICAgICAgICAgICggYmVmX2ksXG4gICAgICAgICAgICAgICAgeyByZWR1Y2VkX3Qgd2l0aCBpbXBsID0gU29tZSB0cmFuc2Y7IHJ1bGVzID0gW10gfSA6OiBhZnRfaSxcbiAgICAgICAgICAgICAgICByZWR1Y2VkX3QgOjogcmVzdCApXG4gICAgICAgICAgfCBOb25lIC0+IChiZWZfaSwgYWZ0X2ksIHJlZHVjZWRfdCA6OiByZXN0KSlcbiAgICBpblxuICAgICggYExpbnRlcnNcbiAgICAgICAgKExpc3QuZmlsdGVyX21hcCB0cyB+ZjooZnVuIHQgLT5cbiAgICAgICAgICAgICBpZiBPcHRpb24uaXNfc29tZSB0LmxpbnRfaW1wbCB8fCBPcHRpb24uaXNfc29tZSB0LmxpbnRfaW50ZiB0aGVuXG4gICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBuYW1lID0gUHJpbnRmLnNwcmludGYgXCI8bGludDolcz5cIiB0Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgYWxpYXNlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIGltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW1wbCA9IHQubGludF9pbXBsO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW50ZiA9IHQubGludF9pbnRmO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcnVsZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkX2F0ID0gdC5yZWdpc3RlcmVkX2F0O1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgZWxzZSBOb25lKSksXG4gICAgICBgUHJlcHJvY2Vzc1xuICAgICAgICAoTGlzdC5maWx0ZXJfbWFwIHRzIH5mOihmdW4gdCAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICBPcHRpb24uaXNfc29tZSB0LnByZXByb2Nlc3NfaW1wbFxuICAgICAgICAgICAgICAgfHwgT3B0aW9uLmlzX3NvbWUgdC5wcmVwcm9jZXNzX2ludGZcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBuYW1lID0gUHJpbnRmLnNwcmludGYgXCI8cHJlcHJvY2Vzczolcz5cIiB0Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgYWxpYXNlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIGltcGwgPSB0LnByZXByb2Nlc3NfaW1wbDtcbiAgICAgICAgICAgICAgICAgICBpbnRmID0gdC5wcmVwcm9jZXNzX2ludGY7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcnVsZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkX2F0ID0gdC5yZWdpc3RlcmVkX2F0O1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgZWxzZSBOb25lKSksXG4gICAgICBgQmVmb3JlX2luc3RycyBiZWZvcmVfaW5zdHJzLFxuICAgICAgYEFmdGVyX2luc3RycyBhZnRlcl9pbnN0cnMsXG4gICAgICBgUmVzdCByZXN0IClcbmVuZFxuXG5tb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgbGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID0gVHJhbnNmb3JtLnJlZ2lzdGVyXG5cbiAgbGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nX29jYW1sX2N1cnJlbnRfYXN0ID9pbXBsID9pbnRmID9hbGlhc2VzIG5hbWVcbiAgICAgID1cbiAgICBsZXQgaW1wbCA9XG4gICAgICBPcHRpb24ubWFwIGltcGwgfmY6KFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sX21hcHBlciBTdHJ1Y3R1cmUpXG4gICAgaW5cbiAgICBsZXQgaW50ZiA9XG4gICAgICBPcHRpb24ubWFwIGludGYgfmY6KFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sX21hcHBlciBTaWduYXR1cmUpXG4gICAgaW5cbiAgICByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA/aW1wbCA/aW50ZiA/YWxpYXNlcyBuYW1lXG5lbmRcblxubGV0IGFkZF9jdHh0X2FyZyAoZiA6ICdhIC0+ICdiKSA6IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiAnYiA9XG4gZnVuIF8geCAtPiBmIHhcblxubGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9leHRlbnNpb25zID9ydWxlcyA/ZW5jbG9zZV9pbXBsID9lbmNsb3NlX2ludGYgP2ltcGxcbiAgICA/aW50ZiA/bGludF9pbXBsID9saW50X2ludGYgP3ByZXByb2Nlc3NfaW1wbCA/cHJlcHJvY2Vzc19pbnRmID1cbiAgbGV0IGltcGwgPSBPcHRpb24ubWFwIGltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBpbnRmID0gT3B0aW9uLm1hcCBpbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgcHJlcHJvY2Vzc19pbXBsID0gT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBwcmVwcm9jZXNzX2ludGYgPSBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGxpbnRfaW1wbCA9IE9wdGlvbi5tYXAgbGludF9pbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgbGludF9pbnRmID0gT3B0aW9uLm1hcCBsaW50X2ludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBlbmNsb3NlX2ltcGwgPSBPcHRpb24ubWFwIGVuY2xvc2VfaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGVuY2xvc2VfaW50ZiA9IE9wdGlvbi5tYXAgZW5jbG9zZV9pbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBWMi5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA/ZXh0ZW5zaW9ucyA/cnVsZXMgP2VuY2xvc2VfaW1wbCA/ZW5jbG9zZV9pbnRmXG4gICAgP2ltcGwgP2ludGYgP2xpbnRfaW1wbCA/bGludF9pbnRmID9wcmVwcm9jZXNzX2ltcGwgP3ByZXByb2Nlc3NfaW50ZlxuXG5sZXQgcmVnaXN0ZXJfY29kZV90cmFuc2Zvcm1hdGlvbiB+bmFtZSA/KGFsaWFzZXMgPSBbXSkgfmltcGwgfmludGYgPVxuICByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiBuYW1lIH5pbXBsIH5pbnRmIH5hbGlhc2VzXG5bQEB3YXJuaW5nIFwiLTE2XCJdXG4oKiBUaGlzIGZ1bmN0aW9uIHRyaWdnZXJzIGEgd2FybmluZyAxNiBhcyBvZiBvY2FtbCA0LjEyICopXG5cbmxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ19vY2FtbF9jdXJyZW50X2FzdCA/aW1wbCA/aW50ZiA9XG4gIGxldCBpbXBsID0gT3B0aW9uLm1hcCBpbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgaW50ZiA9IE9wdGlvbi5tYXAgaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgVjIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfb2NhbWxfY3VycmVudF9hc3QgP2ltcGwgP2ludGZcblxubGV0IGRlYnVnX2Ryb3BwZWRfYXR0cmlidXRlIG5hbWUgfm9sZF9kcm9wcGVkIH5uZXdfZHJvcHBlZCA9XG4gIGxldCBwcmludF9kaWZmIHdoYXQgYSBiID1cbiAgICBsZXQgZGlmZiA9XG4gICAgICBMaXN0LmZpbHRlciBhIH5mOihmdW4gKG5hbWUgOiBfIExvYy50KSAtPlxuICAgICAgICAgIG5vdFxuICAgICAgICAgICAgKExpc3QuZXhpc3RzIGIgfmY6KGZ1biAobmFtZScgOiBfIExvY2F0aW9uLmxvYykgLT5cbiAgICAgICAgICAgICAgICAgbmFtZS50eHQgPT0gbmFtZScudHh0KSkpXG4gICAgaW5cbiAgICBpZiBub3QgKExpc3QuaXNfZW1wdHkgZGlmZikgdGhlbiAoXG4gICAgICBQcmludGYuZXByaW50ZiBcIlRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyAlcyBhZnRlciBhcHBseWluZyAlczpcXG5cIiB3aGF0XG4gICAgICAgIG5hbWU7XG4gICAgICBMaXN0Lml0ZXIgZGlmZiB+ZjooZnVuIHsgTG9jYXRpb24udHh0OyBsb2MgfSAtPlxuICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQuZXByaW50ZiBcIi0gJWE6ICVzXFxuXCIgTG9jYXRpb24ucHJpbnQgbG9jIHR4dCk7XG4gICAgICBTdGRsaWIuRm9ybWF0LmVwcmludGYgXCJALlwiKVxuICBpblxuICBwcmludF9kaWZmIFwiZGlzYXBwZWFyZWRcIiBuZXdfZHJvcHBlZCBvbGRfZHJvcHBlZDtcbiAgcHJpbnRfZGlmZiBcInJlYXBwZWFyZWRcIiBvbGRfZHJvcHBlZCBuZXdfZHJvcHBlZFxuXG5sZXQgZ2V0X3dob2xlX2FzdF9wYXNzZXMgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfnRvb2xfbmFtZVxuICAgIH5pbnB1dF9uYW1lID1cbiAgbGV0IGN0cyA9XG4gICAgbWF0Y2ggIWFwcGx5X2xpc3Qgd2l0aFxuICAgIHwgTm9uZSAtPiBMaXN0LnJldiAhVHJhbnNmb3JtLmFsbFxuICAgIHwgU29tZSBuYW1lcyAtPlxuICAgICAgICBMaXN0Lm1hcCBuYW1lcyB+ZjooZnVuIG5hbWUgLT5cbiAgICAgICAgICAgIExpc3QuZmluZCAhVHJhbnNmb3JtLmFsbCB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgICAgIFRyYW5zZm9ybS5oYXNfbmFtZSBjdCBuYW1lKSlcbiAgaW5cbiAgbGV0ICggYExpbnRlcnMgbGludGVycyxcbiAgICAgICAgYFByZXByb2Nlc3MgcHJlcHJvY2VzcyxcbiAgICAgICAgYEJlZm9yZV9pbnN0cnMgYmVmb3JlX2luc3RycyxcbiAgICAgICAgYEFmdGVyX2luc3RycyBhZnRlcl9pbnN0cnMsXG4gICAgICAgIGBSZXN0IGN0cyApID1cbiAgICBUcmFuc2Zvcm0ucGFydGl0aW9uX3RyYW5zZm9ybWF0aW9ucyBjdHNcbiAgaW5cbiAgKCogQWxsb3cgb25seSBvbmUgcHJlcHJvY2Vzc29yIHRvIGFzc3VyZSBkZXRlcm1pbmlzdGljIG9yZGVyICopXG4gIChpZiBMaXN0Lmxlbmd0aCBwcmVwcm9jZXNzID4gMSB0aGVuXG4gICAgIGxldCBwcCA9XG4gICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoTGlzdC5tYXAgcHJlcHJvY2VzcyB+ZjooZnVuIHQgLT4gdC5uYW1lKSlcbiAgICAgaW5cbiAgICAgbGV0IGVyciA9XG4gICAgICAgUHJpbnRmLnNwcmludGYgXCJBdCBtb3N0IG9uZSBwcmVwcm9jZXNzb3IgaXMgYWxsb3dlZCwgd2hpbGUgZ290OiAlc1wiIHBwXG4gICAgIGluXG4gICAgIGZhaWx3aXRoIGVycik7XG4gIGxldCBtYWtlX2dlbmVyaWMgdHJhbnNmb3JtcyA9XG4gICAgaWYgIW5vX21lcmdlIHRoZW5cbiAgICAgIExpc3QubWFwIHRyYW5zZm9ybXNcbiAgICAgICAgfmY6XG4gICAgICAgICAgKFRyYW5zZm9ybS5tZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyB+ZW1iZWRfZXJyb3JzIH5ob29rIH50b29sX25hbWVcbiAgICAgICAgICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWUpXG4gICAgZWxzZVxuICAgICAgKGxldCBnZXRfZW5jbG9zZXJzIH5mID1cbiAgICAgICAgIExpc3QuZmlsdGVyX21hcCB0cmFuc2Zvcm1zIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggZiBjdCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChjdC5uYW1lLCB4KSlcbiAgICAgICAgICgqIFNvcnQgdGhlbSB0byBlbnN1cmUgZGV0ZXJtaW5pc3RpYyBvcmRlcmluZyAqKVxuICAgICAgICAgfD4gTGlzdC5zb3J0IH5jbXA6KGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYilcbiAgICAgICAgIHw+IExpc3QubWFwIH5mOnNuZFxuICAgICAgIGluXG5cbiAgICAgICBsZXQgcnVsZXMgPVxuICAgICAgICAgTGlzdC5tYXAgdHJhbnNmb3JtcyB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5ydWxlcylcbiAgICAgICAgIHw+IExpc3QuY29uY2F0XG4gICAgICAgYW5kIGltcGxfZW5jbG9zZXJzID0gZ2V0X2VuY2xvc2VycyB+ZjooZnVuIGN0IC0+IGN0LmVuY2xvc2VfaW1wbClcbiAgICAgICBhbmQgaW50Zl9lbmNsb3NlcnMgPSBnZXRfZW5jbG9zZXJzIH5mOihmdW4gY3QgLT4gY3QuZW5jbG9zZV9pbnRmKSBpblxuICAgICAgIG1hdGNoIChydWxlcywgaW1wbF9lbmNsb3NlcnMsIGludGZfZW5jbG9zZXJzKSB3aXRoXG4gICAgICAgfCBbXSwgW10sIFtdIC0+IHRyYW5zZm9ybXNcbiAgICAgICB8IF8gLT5cbiAgICAgICAgICAgbGV0IG1lcmdlX2VuY2xvc2VyID0gZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgICAgICB8IGVuY2xvc2VycyAtPlxuICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgKGZ1biBjdHh0IGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IGhlYWRlcnMsIGZvb3RlcnMgPVxuICAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcCBlbmNsb3NlcnMgfmY6KGZ1biBmIC0+IGYgY3R4dCBsb2MpIHw+IExpc3Quc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgaGVhZGVycyA9IExpc3QuY29uY2F0IGhlYWRlcnMgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBmb290ZXJzID0gTGlzdC5jb25jYXQgKExpc3QucmV2IGZvb3RlcnMpIGluXG4gICAgICAgICAgICAgICAgICAgICAoaGVhZGVycywgZm9vdGVycykpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIFRyYW5zZm9ybS5idWlsdGluX29mX2NvbnRleHRfZnJlZV9yZXdyaXRlcnMgfnJ1bGVzIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgICAgICB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgICB+ZW5jbG9zZV9pbXBsOihtZXJnZV9lbmNsb3NlciBpbXBsX2VuY2xvc2VycylcbiAgICAgICAgICAgICB+ZW5jbG9zZV9pbnRmOihtZXJnZV9lbmNsb3NlciBpbnRmX2VuY2xvc2VycylcbiAgICAgICAgICAgICB+dG9vbF9uYW1lIH5pbnB1dF9uYW1lXG4gICAgICAgICAgIDo6IHRyYW5zZm9ybXMpXG4gICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgIG1hdGNoIChjdC5pbXBsLCBjdC5pbnRmKSB3aXRoIE5vbmUsIE5vbmUgLT4gZmFsc2UgfCBfIC0+IHRydWUpXG4gIGluXG4gIGxpbnRlcnMgQCBwcmVwcm9jZXNzIEAgYmVmb3JlX2luc3RycyBAIG1ha2VfZ2VuZXJpYyBjdHMgQCBhZnRlcl9pbnN0cnNcblxubGV0IGFwcGx5X3RyYW5zZm9ybXMgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5maWVsZCB+bGludF9maWVsZCB+ZHJvcHBlZF9zb19mYXJcbiAgICB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWUgfmVtYmVkX2Vycm9ycyBhc3QgPVxuICBsZXQgY3RzID1cbiAgICBnZXRfd2hvbGVfYXN0X3Bhc3NlcyB+dG9vbF9uYW1lIH5lbWJlZF9lcnJvcnMgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICB+aW5wdXRfbmFtZVxuICBpblxuICBsZXQgZmluaXNoIChhc3QsIF9kcm9wcGVkLCBsaW50X2Vycm9ycywgZXJyb3JzKSA9XG4gICAgKCBhc3QsXG4gICAgICBMaXN0Lm1hcCBsaW50X2Vycm9ycyB+ZjooZnVuIChsb2MsIHMpIC0+XG4gICAgICAgICAgQ29tbW9uLmF0dHJpYnV0ZV9vZl93YXJuaW5nIGxvYyBzKSxcbiAgICAgIGVycm9ycyApXG4gIGluXG4gIGxldCBhY2MgPVxuICAgIExpc3QuZm9sZF9sZWZ0IGN0cyB+aW5pdDooYXN0LCBbXSwgW10sIFtdKVxuICAgICAgfmY6KGZ1blxuICAgICAgICAgIChhc3QsIGRyb3BwZWQsIChsaW50X2Vycm9ycyA6IF8gbGlzdCksIGVycm9ycykgKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgIGxldCBpbnB1dF9uYW1lID1cbiAgICAgICAgICBtYXRjaCBpbnB1dF9uYW1lIHdpdGhcbiAgICAgICAgICB8IFNvbWUgaW5wdXRfbmFtZSAtPiBpbnB1dF9uYW1lXG4gICAgICAgICAgfCBOb25lIC0+IFwiX25vbmVfXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZVxuICAgICAgICBpblxuXG4gICAgICAgIGxldCBsaW50X2Vycm9ycywgZXJyb3JzID1cbiAgICAgICAgICBtYXRjaCBsaW50X2ZpZWxkIGN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKGxpbnRfZXJyb3JzLCBlcnJvcnMpXG4gICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICB0cnkgKGxpbnRfZXJyb3JzIEAgZiBjdHh0IGFzdCwgZXJyb3JzKVxuICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgICAgIChsaW50X2Vycm9ycywgZXhuX3RvX2xvY19lcnJvciBleG4gOjogZXJyb3JzKSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZmllbGQgY3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKGFzdCwgZHJvcHBlZCwgbGludF9lcnJvcnMsIGVycm9ycylcbiAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgIGxldCAoYXN0LCBtb3JlX2Vycm9ycyksIGVycm9ycyA9XG4gICAgICAgICAgICAgIHRyeSAoZiBjdHh0IGFzdCwgZXJyb3JzKVxuICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgICAgICgoYXN0LCBbXSksIGV4bl90b19sb2NfZXJyb3IgZXhuIDo6IGVycm9ycylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZHJvcHBlZCA9XG4gICAgICAgICAgICAgIGlmICFkZWJ1Z19hdHRyaWJ1dGVfZHJvcCB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgbmV3X2Ryb3BwZWQgPSBkcm9wcGVkX3NvX2ZhciBhc3QgaW5cbiAgICAgICAgICAgICAgICBkZWJ1Z19kcm9wcGVkX2F0dHJpYnV0ZSBjdC5uYW1lIH5vbGRfZHJvcHBlZDpkcm9wcGVkXG4gICAgICAgICAgICAgICAgICB+bmV3X2Ryb3BwZWQ7XG4gICAgICAgICAgICAgICAgbmV3X2Ryb3BwZWQpXG4gICAgICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoYXN0LCBkcm9wcGVkLCBsaW50X2Vycm9ycywgZXJyb3JzIEAgbW9yZV9lcnJvcnMpKVxuICBpblxuICBmaW5pc2ggYWNjXG5cbigqJCopXG5cbmxldCBlcnJvcl90b19zdHJfZXh0ZW5zaW9uIGVycm9yID1cbiAgbGV0IGxvYyA9IExvY2F0aW9uLm5vbmUgaW5cbiAgbGV0IGV4dCA9IExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvciBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2MgZXh0IFtdXG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcblxubGV0IGVycm9yX3RvX3NpZ19leHRlbnNpb24gZXJyb3IgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgZXh0ID0gTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yIGluXG4gIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYyBleHQgW11cblxuKCokKilcblxubGV0IGVycm9yX3RvX2V4dGVuc2lvbiBlcnJvciB+KGtpbmQgOiBLaW5kLnQpID1cbiAgbWF0Y2gga2luZCB3aXRoXG4gIHwgSW50ZiAtPiBJbnRmX29yX2ltcGwuSW50ZiBbIGVycm9yX3RvX3NpZ19leHRlbnNpb24gZXJyb3IgXVxuICB8IEltcGwgLT4gSW50Zl9vcl9pbXBsLkltcGwgWyBlcnJvcl90b19zdHJfZXh0ZW5zaW9uIGVycm9yIF1cblxubGV0IGV4bl90b19leHRlbnNpb24gZXhuIH4oa2luZCA6IEtpbmQudCkgPVxuICBleG5fdG9fbG9jX2Vycm9yIGV4biB8PiBlcnJvcl90b19leHRlbnNpb24gfmtpbmRcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBBY3R1YWwgcmV3cml0aW5nIG9mIHN0cnVjdHVyZS9zaWduYXR1cmVzICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgcHJpbnRfcGFzc2VzICgpID1cbiAgbGV0IHRvb2xfbmFtZSA9IFwicHB4bGliX2RyaXZlclwiIGluXG4gIGxldCBlbWJlZF9lcnJvcnMgPSBmYWxzZSBpblxuICBsZXQgaG9vayA9IENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcCBpblxuICBsZXQgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wIGluXG4gIGxldCBjdHMgPVxuICAgIGdldF93aG9sZV9hc3RfcGFzc2VzIH5lbWJlZF9lcnJvcnMgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH50b29sX25hbWVcbiAgICAgIH5pbnB1dF9uYW1lOk5vbmVcbiAgaW5cbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW5cbiAgICBQcmludGYucHJpbnRmIFwiPGJ1aWx0aW46ZnJlc2hlbi1hbmQtY29sbGVjdC1hdHRyaWJ1dGVzPlxcblwiO1xuICBMaXN0Lml0ZXIgY3RzIH5mOihmdW4gY3QgLT4gUHJpbnRmLnByaW50ZiBcIiVzXFxuXCIgY3QuVHJhbnNmb3JtLm5hbWUpO1xuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgUHJpbnRmLnByaW50ZiBcIjxidWlsdGluOmNoZWNrLXVudXNlZC1hdHRyaWJ1dGVzPlxcblwiO1xuICAgIGlmICFwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIHRoZW5cbiAgICAgIFByaW50Zi5wcmludGYgXCI8YnVpbHRpbjpjaGVjay11bnVzZWQtZXh0ZW5zaW9ucz5cXG5cIilcblxubGV0IHNvcnRfZXJyb3JzX2J5X2xvYyBlcnJvcnMgPVxuICBMaXN0LnNvcnQgZXJyb3JzIH5jbXA6KGZ1biBlcnJvciBlcnJvcicgLT5cbiAgICAgIGxldCBsb2MgPSBMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3IgaW5cbiAgICAgIGxldCBsb2MnID0gTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yJyBpblxuICAgICAgTG9jYXRpb24uY29tcGFyZSBsb2MgbG9jJylcblxuKCokKilcblxubGV0IG1hcF9zdHJ1Y3R1cmVfZ2VuIHN0IH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lXG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIENvb2tpZXMuYWNrbm93bGVkZ2VfY29va2llcyBUO1xuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgQXR0cmlidXRlLnJlc2V0X2NoZWNrcyAoKTtcbiAgICBBdHRyaWJ1dGUuY29sbGVjdCNzdHJ1Y3R1cmUgc3QpO1xuICBsZXQgbGludCBsaW50X2Vycm9ycyBzdCA9XG4gICAgbGV0IHN0ID1cbiAgICAgIG1hdGNoIGxpbnRfZXJyb3JzIHdpdGhcbiAgICAgIHwgW10gLT4gc3RcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzXG4gICAgICAgICAgICB+ZjooZnVuICh7IGF0dHJfbmFtZSA9IHsgbG9jOyBfIH07IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfYXR0cmlidXRlIH5sb2MgYXR0cilcbiAgICAgICAgICBAIHN0XG4gICAgaW5cbiAgICBzdFxuICBpblxuICBsZXQgd2l0aF9lcnJvcnMgZXJyb3JzIHN0ID1cbiAgICBsZXQgc29ydGVkID0gc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyBpblxuICAgIExpc3QubWFwIHNvcnRlZCB+ZjooZnVuIGVycm9yIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICAgICAgICB+bG9jOihMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3IpXG4gICAgICAgICAgKExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvcilcbiAgICAgICAgICBbXVxuICAgICAgICB8PiBnaG9zdCNzdHJ1Y3R1cmVfaXRlbSlcbiAgICBAIHN0XG4gIGluXG4gIGxldCBjb29raWVzX2FuZF9jaGVjayBzdCA9XG4gICAgQ29va2llcy5jYWxsX3Bvc3RfaGFuZGxlcnMgVDtcbiAgICBsZXQgZXJyb3JzID1cbiAgICAgIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHdvIHBhc3NlcyBjb3VsZCBiZSBtZXJnZWQsIHdlIG5vdyBoYXZlIG1vcmUgcGFzc2VzIGZvclxuICAgICAgICAgICBjaGVja3MgdGhhbiBmb3IgYWN0dWFsIHJld3JpdGluZy4gKilcbiAgICAgICAgbGV0IHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgICAgQXR0cmlidXRlLmNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3N0cnVjdHVyZSBzdCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgPVxuICAgICAgICAgIGlmICFwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIHRoZW5cbiAgICAgICAgICAgIEV4dGVuc2lvbi5jb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3N0cnVjdHVyZSBzdCBbXVxuICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vdF9zZWVuX2Vycm9ycyA9IEF0dHJpYnV0ZS5jb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgaW5cbiAgICAgICAgKGlmICFwZXJmb3JtX2xvY2F0aW9uc19jaGVjayB0aGVuXG4gICAgICAgICAgIGxldCBvcGVuIExvY2F0aW9uX2NoZWNrIGluXG4gICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICgoZW5mb3JjZV9pbnZhcmlhbnRzICFsb2NfZm5hbWUpI3N0cnVjdHVyZSBzdFxuICAgICAgICAgICAgICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICAgICA6IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnQpKTtcbiAgICAgICAgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIEAgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgQCBub3Rfc2Vlbl9lcnJvcnMpXG4gICAgICBlbHNlIFtdXG4gICAgaW5cbiAgICB3aXRoX2Vycm9ycyBlcnJvcnMgc3RcbiAgaW5cbiAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc3RyIHN0IGluXG4gIGxldCBzdCwgbGludF9lcnJvcnMsIGVycm9ycyA9XG4gICAgYXBwbHlfdHJhbnNmb3JtcyBzdCB+dG9vbF9uYW1lIH5maWxlX3BhdGhcbiAgICAgIH5maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5pbXBsKVxuICAgICAgfmxpbnRfZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QubGludF9pbXBsKVxuICAgICAgfmRyb3BwZWRfc29fZmFyOkF0dHJpYnV0ZS5kcm9wcGVkX3NvX2Zhcl9zdHJ1Y3R1cmUgfmhvb2tcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzXG4gIGluXG4gIHN0IHw+IGxpbnQgbGludF9lcnJvcnMgfD4gY29va2llc19hbmRfY2hlY2sgfD4gd2l0aF9lcnJvcnMgKExpc3QucmV2IGVycm9ycylcblxubGV0IG1hcF9zdHJ1Y3R1cmUgc3QgPVxuICBtYXRjaFxuICAgIG1hcF9zdHJ1Y3R1cmVfZ2VuIHN0XG4gICAgICB+dG9vbF9uYW1lOihBc3RsaWIuQXN0X21ldGFkYXRhLnRvb2xfbmFtZSAoKSlcbiAgICAgIH5ob29rOkNvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcFxuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyOkNvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3BcbiAgICAgIH5pbnB1dF9uYW1lOk5vbmUgfmVtYmVkX2Vycm9yczpmYWxzZVxuICB3aXRoXG4gIHwgYXN0IC0+IGFzdFxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5cbmxldCBtYXBfc2lnbmF0dXJlX2dlbiBzZyB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZVxuICAgIH5lbWJlZF9lcnJvcnMgPVxuICBDb29raWVzLmFja25vd2xlZGdlX2Nvb2tpZXMgVDtcbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgIEF0dHJpYnV0ZS5yZXNldF9jaGVja3MgKCk7XG4gICAgQXR0cmlidXRlLmNvbGxlY3Qjc2lnbmF0dXJlIHNnKTtcbiAgbGV0IGxpbnQgbGludF9lcnJvcnMgc2cgPVxuICAgIGxldCBzZyA9XG4gICAgICBtYXRjaCBsaW50X2Vycm9ycyB3aXRoXG4gICAgICB8IFtdIC0+IHNnXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBMaXN0Lm1hcCBsaW50X2Vycm9yc1xuICAgICAgICAgICAgfmY6KGZ1biAoeyBhdHRyX25hbWUgPSB7IGxvYzsgXyB9OyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2F0dHJpYnV0ZSB+bG9jIGF0dHIpXG4gICAgICAgICAgQCBzZ1xuICAgIGluXG4gICAgc2dcbiAgaW5cbiAgbGV0IHdpdGhfZXJyb3JzIGVycm9ycyBzZyA9XG4gICAgbGV0IHNvcnRlZCA9IHNvcnRfZXJyb3JzX2J5X2xvYyBlcnJvcnMgaW5cbiAgICBMaXN0Lm1hcCBzb3J0ZWQgfmY6KGZ1biBlcnJvciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgICAgICAgfmxvYzooTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yKVxuICAgICAgICAgIChMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IpXG4gICAgICAgICAgW11cbiAgICAgICAgfD4gZ2hvc3Qjc2lnbmF0dXJlX2l0ZW0pXG4gICAgQCBzZ1xuICBpblxuICBsZXQgY29va2llc19hbmRfY2hlY2sgc2cgPVxuICAgIENvb2tpZXMuY2FsbF9wb3N0X2hhbmRsZXJzIFQ7XG4gICAgbGV0IGVycm9ycyA9XG4gICAgICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR3byBwYXNzZXMgY291bGQgYmUgbWVyZ2VkLCB3ZSBub3cgaGF2ZSBtb3JlIHBhc3NlcyBmb3JcbiAgICAgICAgICAgY2hlY2tzIHRoYW4gZm9yIGFjdHVhbCByZXdyaXRpbmcuICopXG4gICAgICAgIGxldCB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICAgIEF0dHJpYnV0ZS5jb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzaWduYXR1cmUgc2cgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHVudXNlZF9leHRlbnNpb25fZXJyb3JzID1cbiAgICAgICAgICBpZiAhcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyB0aGVuXG4gICAgICAgICAgICBFeHRlbnNpb24uY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzaWduYXR1cmUgc2cgW11cbiAgICAgICAgICBlbHNlIFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub3Rfc2Vlbl9lcnJvcnMgPSBBdHRyaWJ1dGUuY29sbGVjdF91bnNlZW5fZXJyb3JzICgpIGluXG4gICAgICAgIChpZiAhcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgdGhlblxuICAgICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbl9jaGVjayBpblxuICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAoKGVuZm9yY2VfaW52YXJpYW50cyAhbG9jX2ZuYW1lKSNzaWduYXR1cmUgc2dcbiAgICAgICAgICAgICAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgICAgOiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy50KSk7XG4gICAgICAgIHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyBAIHVudXNlZF9leHRlbnNpb25fZXJyb3JzIEAgbm90X3NlZW5fZXJyb3JzKVxuICAgICAgZWxzZSBbXVxuICAgIGluXG4gICAgd2l0aF9lcnJvcnMgZXJyb3JzIHNnXG4gIGluXG4gIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3NpZyBzZyBpblxuICBsZXQgc2csIGxpbnRfZXJyb3JzLCBlcnJvcnMgPVxuICAgIGFwcGx5X3RyYW5zZm9ybXMgc2cgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoXG4gICAgICB+ZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QuaW50ZilcbiAgICAgIH5saW50X2ZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmxpbnRfaW50ZilcbiAgICAgIH5kcm9wcGVkX3NvX2ZhcjpBdHRyaWJ1dGUuZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIH5ob29rXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWUgfmVtYmVkX2Vycm9yc1xuICBpblxuICBzZyB8PiBsaW50IGxpbnRfZXJyb3JzIHw+IGNvb2tpZXNfYW5kX2NoZWNrIHw+IHdpdGhfZXJyb3JzIChMaXN0LnJldiBlcnJvcnMpXG5cbmxldCBtYXBfc2lnbmF0dXJlIHNnID1cbiAgbWF0Y2hcbiAgICBtYXBfc2lnbmF0dXJlX2dlbiBzZ1xuICAgICAgfnRvb2xfbmFtZTooQXN0bGliLkFzdF9tZXRhZGF0YS50b29sX25hbWUgKCkpXG4gICAgICB+aG9vazpDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3BcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlcjpDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wXG4gICAgICB+aW5wdXRfbmFtZTpOb25lIH5lbWJlZF9lcnJvcnM6ZmFsc2VcbiAgd2l0aFxuICB8IGFzdCAtPiBhc3RcblxuKCokKilcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBFbnRyeSBwb2ludHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgc3RyaW5nX2NvbnRhaW5zX2JpbmFyeV9hc3QgcyA9XG4gIGxldCB0ZXN0IG1hZ2ljX251bWJlciA9XG4gICAgU3RyaW5nLmlzX3ByZWZpeCBzIH5wcmVmaXg6KFN0cmluZy5zdWIgbWFnaWNfbnVtYmVyIH5wb3M6MCB+bGVuOjkpXG4gIGluXG4gIHRlc3QgQXN0X21hZ2ljLmFzdF9pbnRmX21hZ2ljX251bWJlciB8fCB0ZXN0IEFzdF9tYWdpYy5hc3RfaW1wbF9tYWdpY19udW1iZXJcblxubGV0IHZlcnNpb25lZF9lcnJvcmYgaW5wdXRfdmVyc2lvbiBpbnB1dF9maWxlX25hbWUgPVxuICBQcmludGYua3NwcmludGYgKGZ1biBtc2cgLT5cbiAgICAgIGxldCBlcnIgPVxuICAgICAgICBMb2NhdGlvbi5FcnJvci5tYWtlIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgaW5wdXRfZmlsZV9uYW1lKSBtc2cgfnN1YjpbXVxuICAgICAgaW5cbiAgICAgIEVycm9yIChlcnIsIGlucHV0X3ZlcnNpb24pKVxuXG5sZXQgcmVtb3ZlX25vX2Vycm9yIGZuID0gdHJ5IFN0ZGxpYi5TeXMucmVtb3ZlIGZuIHdpdGggU3lzX2Vycm9yIF8gLT4gKClcblxubGV0IHByb3RlY3R4IHggfmYgfmZpbmFsbHkgPVxuICBtYXRjaCBmIHggd2l0aFxuICB8IHYgLT5cbiAgICAgIGZpbmFsbHkgeDtcbiAgICAgIHZcbiAgfCBleGNlcHRpb24gZSAtPlxuICAgICAgZmluYWxseSB4O1xuICAgICAgcmFpc2UgZVxuXG5sZXQgd2l0aF9wcmVwcm9jZXNzZWRfZmlsZSBmbiB+ZiA9XG4gIG1hdGNoICFwcmVwcm9jZXNzb3Igd2l0aFxuICB8IE5vbmUgLT4gZiBmblxuICB8IFNvbWUgcHAgLT5cbiAgICAgIHByb3RlY3R4IChTdGRsaWIuRmlsZW5hbWUudGVtcF9maWxlIFwib2NhbWxwcFwiIFwiXCIpIH5maW5hbGx5OnJlbW92ZV9ub19lcnJvclxuICAgICAgICB+ZjooZnVuIHRtcGZpbGUgLT5cbiAgICAgICAgICBtYXRjaCBTeXN0ZW0ucnVuX3ByZXByb2Nlc3NvciB+cHAgfmlucHV0OmZuIH5vdXRwdXQ6dG1wZmlsZSB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBmIHRtcGZpbGVcbiAgICAgICAgICB8IEVycm9yIChmYWlsZWRfY29tbWFuZCwgZmFsbF9iYWNrX3ZlcnNpb24pIC0+XG4gICAgICAgICAgICAgIHZlcnNpb25lZF9lcnJvcmYgZmFsbF9iYWNrX3ZlcnNpb24gZm5cbiAgICAgICAgICAgICAgICBcIkVycm9yIHdoaWxlIHJ1bm5pbmcgZXh0ZXJuYWwgcHJlcHJvY2Vzc29yXFxuQ29tbWFuZCBsaW5lOiAlc1xcblwiXG4gICAgICAgICAgICAgICAgZmFpbGVkX2NvbW1hbmQpXG5cbmxldCByZWxvY2F0ZV9tYXBwZXIgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtzdHJpbmcgKiBzdHJpbmddIEFzdF90cmF2ZXJzZS5tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QhIHBvc2l0aW9uIChvbGRfZm4sIG5ld19mbikgcG9zID1cbiAgICAgIGlmIFN0cmluZy5lcXVhbCBwb3MucG9zX2ZuYW1lIG9sZF9mbiB0aGVuIHsgcG9zIHdpdGggcG9zX2ZuYW1lID0gbmV3X2ZuIH1cbiAgICAgIGVsc2UgcG9zXG4gIGVuZFxuXG4oKiBTZXQgdGhlIGlucHV0IG5hbWUgZ2xvYmFsbHkuIFRoaXMgaXMgdXNlZCBieSBzb21lIHBweCByZXdyaXRlcnNcbiAgIHN1Y2ggYXMgYmlzZWN0X3BweC4gKilcbmxldCBzZXRfaW5wdXRfbmFtZSA9IEFzdGxpYi5Mb2NhdGlvbi5zZXRfaW5wdXRfbmFtZVxuXG5sZXQgbG9hZF9pbnB1dCB+KGtpbmQgOiBLaW5kLnQpIH5pbnB1dF9uYW1lIH5yZWxvY2F0ZSBmbiA9XG4gIHNldF9pbnB1dF9uYW1lIGlucHV0X25hbWU7XG4gIGxldCBpbnB1dF9zb3VyY2UgPSBpZiBTdHJpbmcuZXF1YWwgZm4gXCItXCIgdGhlbiBBc3RfaW8uU3RkaW4gZWxzZSBGaWxlIGZuIGluXG4gIGxldCBpbnB1dF9raW5kID0gQXN0X2lvLlBvc3NpYmx5X3NvdXJjZSAoa2luZCwgaW5wdXRfbmFtZSkgaW5cbiAgbWF0Y2ggQXN0X2lvLnJlYWQgaW5wdXRfc291cmNlIH5pbnB1dF9raW5kIHdpdGhcbiAgfCBPayB7IGlucHV0X25hbWUgPSBhc3RfaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH0gLT5cbiAgICAgIGxldCBhc3Rfa2luZCA9IEludGZfb3JfaW1wbC5raW5kIGFzdCBpblxuICAgICAgaWYgbm90IChLaW5kLmVxdWFsIGtpbmQgYXN0X2tpbmQpIHRoZW5cbiAgICAgICAgdmVyc2lvbmVkX2Vycm9yZiBpbnB1dF92ZXJzaW9uIGZuXG4gICAgICAgICAgXCJGaWxlIGNvbnRhaW5zIGEgYmluYXJ5ICVzIEFTVCBidXQgYW4gJXMgd2FzIGV4cGVjdGVkXCJcbiAgICAgICAgICAoS2luZC5kZXNjcmliZSBhc3Rfa2luZCkgKEtpbmQuZGVzY3JpYmUga2luZClcbiAgICAgIGVsc2UgaWYgU3RyaW5nLmVxdWFsIGFzdF9pbnB1dF9uYW1lIGlucHV0X25hbWUgfHwgbm90IHJlbG9jYXRlIHRoZW4gKFxuICAgICAgICBzZXRfaW5wdXRfbmFtZSBhc3RfaW5wdXRfbmFtZTtcbiAgICAgICAgT2sgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBPa1xuICAgICAgICAgICggaW5wdXRfbmFtZSxcbiAgICAgICAgICAgIGlucHV0X3ZlcnNpb24sXG4gICAgICAgICAgICBJbnRmX29yX2ltcGwubWFwX3dpdGhfY29udGV4dCBhc3QgcmVsb2NhdGVfbWFwcGVyXG4gICAgICAgICAgICAgIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfbmFtZSkgKVxuICB8IEVycm9yIChVbmtub3duX3ZlcnNpb24gKHVua25vd25fbWFnaWMsIGZhbGxfYmFja192ZXJzaW9uKSkgLT5cbiAgICAgIHZlcnNpb25lZF9lcnJvcmYgZmFsbF9iYWNrX3ZlcnNpb24gZm5cbiAgICAgICAgXCJGaWxlIGlzIGEgYmluYXJ5IGFzdCBmb3IgYW4gdW5rbm93biB2ZXJzaW9uIG9mIE9DYW1sIHdpdGggbWFnaWMgXFxcbiAgICAgICAgIG51bWJlciAnJXMnXCJcbiAgICAgICAgdW5rbm93bl9tYWdpY1xuICB8IEVycm9yIChTeXN0ZW1fZXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfdmVyc2lvbikpXG4gIHwgRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIGZhbGxfYmFja192ZXJzaW9uKSkgLT5cbiAgICAgIEVycm9yIChlcnJvciwgZmFsbF9iYWNrX3ZlcnNpb24pXG4gIHwgRXJyb3IgTm90X2FfYmluYXJ5X2FzdCAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGxvYWRfaW5wdXRfcnVuX2FzX3BweCBmbiA9XG4gICgqIElmIHRoZXJlJ3MgYW4gZXJyb3Igd2hpbGUgbG9hZGluZyBpbiBydW5fYXNfcHB4IG1vZGUsIHRoZSBraW5kIG9mIEFTVCAoaW1wbC9pbnRmKSBpcyBzdGlsbCB1bmtub3duLlxuICAgICBUaGF0J3Mgd2h5LCBhcyBvcHBvc2VkIHRvIGxvYWRfaW5wdXQsIHRoaXMgZnVuY3Rpb24gcmFpc2VzIGVycm9ycyBpbnN0ZWFkIG9mIHJldHVybmluZyBhIHJlc3VsdDpcbiAgICAgaGFuZGxpbmcgYW4gZXJyb3IgYnkgcmV0dXJuaW5nIGFuIEFTVCB3aXRoIHRoZSBlcnJvciBwYWNrZWQgYXMgZXh0ZW5zaW9uIG5vZGUgd291bGRuJ3QgYmUgcG9zc2libGUuICopXG4gIG1hdGNoIEFzdF9pby5yZWFkIChGaWxlIGZuKSB+aW5wdXRfa2luZDpBc3RfaW8uTmVjZXNzYXJpbHlfYmluYXJ5IHdpdGhcbiAgfCBPayB7IGlucHV0X25hbWUgPSBhc3RfaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH0gLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaCAhbG9jX2ZuYW1lIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBzZXRfaW5wdXRfbmFtZSBhc3RfaW5wdXRfbmFtZTtcbiAgICAgICAgICAgIGFzdFxuICAgICAgICB8IFNvbWUgaW5wdXRfbmFtZSAtPlxuICAgICAgICAgICAgc2V0X2lucHV0X25hbWUgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgIGlmIFN0cmluZy5lcXVhbCBhc3RfaW5wdXRfbmFtZSBpbnB1dF9uYW1lIHRoZW4gYXN0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIEludGZfb3JfaW1wbC5tYXBfd2l0aF9jb250ZXh0IGFzdCByZWxvY2F0ZV9tYXBwZXJcbiAgICAgICAgICAgICAgICAoYXN0X2lucHV0X25hbWUsIGlucHV0X25hbWUpXG4gICAgICBpblxuICAgICAgKCogV2l0aCBgLS1hcy1wcHhgLCBvY2FtbCBjYWxscyB0aGUgc3RhbmRhbG9uZSBzZXBhcmF0ZWx5IGZvciBldmVyeSBzdHJ1Y3R1cmUvc2lnbmF0dXJlIGl0ZW1cbiAgICAgICAgIHdpdGggdGhlIGZpbGVuYW1lIGFzIG1ldGFkYXRhIHRoYXQgaXQgZ2V0cyBmcm9tIHRoZSBwcmV2aW91cyBjYWxsLiByZWxvY2F0ZV9tYXBwZXIgb25seVxuICAgICAgICAgcmVsb2NhdGVzIHBvc2l0aW9ucyB3aG9zZSBwb3NpdGlvbiBmaWxlbmFtZSBjb2luY2lkZXMgd2l0aCB0aGF0IG1ldGFkYXRhIGZpbGVuYW1lLlxuICAgICAgICAgU28gYWx3YXlzIHJldHVybiB0aGUgbWV0YWRhdGEgZmlsZW5hbWUgaXRzZWxmLCBldmVuIGlmIGAtbG9jLWZpbGVuYW1lYCBpcyBwcm92aWRlZC4gKilcbiAgICAgIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KVxuICB8IEVycm9yIChVbmtub3duX3ZlcnNpb24gKHVua25vd25fbWFnaWMsIF8pKSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgZm4pXG4gICAgICAgIFwiVGhlIGlucHV0IGlzIGEgYmluYXJ5IGFzdCBmb3IgYW4gdW5rbm93biB2ZXJzaW9uIG9mIE9DYW1sIHdpdGggbWFnaWMgXFxcbiAgICAgICAgIG51bWJlciAnJXMnXCJcbiAgICAgICAgdW5rbm93bl9tYWdpY1xuICB8IEVycm9yIE5vdF9hX2JpbmFyeV9hc3QgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGZuKVxuICAgICAgICBcIkV4cGVjdGVkIGEgYmluYXJ5IEFTVCBhcyBpbnB1dFwiXG4gIHwgRXJyb3IgKFN5c3RlbV9lcnJvciAoZXJyb3IsIF8pKSB8IEVycm9yIChTb3VyY2VfcGFyc2VfZXJyb3IgKGVycm9yLCBfKSkgLT5cbiAgICAgIGxldCBvcGVuIExvY2F0aW9uLkVycm9yIGluXG4gICAgICBMb2NhdGlvbi5zZXRfZmlsZW5hbWUgKGdldF9sb2NhdGlvbiBlcnJvcikgZm4gfD4gdXBkYXRlX2xvYyBlcnJvciB8PiByYWlzZVxuXG5sZXQgbG9hZF9zb3VyY2VfZmlsZSBmbiA9XG4gIGxldCBzID0gSW5fY2hhbm5lbC5yZWFkX2FsbCBmbiBpblxuICBpZiBzdHJpbmdfY29udGFpbnNfYmluYXJ5X2FzdCBzIHRoZW5cbiAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBmbilcbiAgICAgIFwicHB4bGliX2RyaXZlcjogY2Fubm90IHVzZSAtcmVjb25jaWxlIHdpdGggYmluYXJ5IEFTVCBmaWxlc1wiO1xuICBzXG5cbnR5cGUgb3V0cHV0X21vZGUgPVxuICB8IFByZXR0eV9wcmludFxuICB8IER1bXBfYXN0XG4gIHwgRHBhcnNldHJlZVxuICB8IFJlY29uY2lsZSBvZiBSZWNvbmNpbGUubW9kZVxuICB8IE51bGxcblxuKCokKilcbmxldCBleHRyYWN0X2Nvb2tpZXNfc3RyIHN0ID1cbiAgbGV0IHN0ID1cbiAgICBtYXRjaCBzdCB3aXRoXG4gICAgfCAoe1xuICAgICAgICAgcHN0cl9kZXNjID1cbiAgICAgICAgICAgUHN0cl9hdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwucHB4LmNvbnRleHRcIjsgXyB9OyBfIH07XG4gICAgICAgICBfO1xuICAgICAgIH0gYXMgcHJlZml4KVxuICAgICAgOjogc3QgLT5cbiAgICAgICAgbGV0IHByZWZpeCA9IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0LnRvX29jYW1sIFN0cnVjdHVyZSBbIHByZWZpeCBdIGluXG4gICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgTGlzdC5pc19lbXB0eVxuICAgICAgICAgICAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZHJvcF9wcHhfY29udGV4dF9zdHIgfnJlc3RvcmU6dHJ1ZSBwcmVmaXgpKTtcbiAgICAgICAgc3RcbiAgICB8IF8gLT4gc3RcbiAgaW5cbiAgKCogVGhlIGNsaSBjb29raWVzIGhhdmUgdG8gYmUgc2V0IGFmdGVyIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQsXG4gICAgIHNpbmNlIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQgcmVzZXRzIHRoZSBjb29raWVzICopXG4gIExpc3QuaXRlciAhQ29va2llcy5naXZlbl90aHJvdWdoX2NsaSB+ZjooZnVuIChuYW1lLCBleHByKSAtPlxuICAgICAgQ29va2llcy5zZXQgVCBuYW1lIGV4cHIpO1xuICBzdFxuXG5sZXQgYWRkX2Nvb2tpZXNfc3RyIHN0ID1cbiAgbGV0IHByZWZpeCA9XG4gICAgQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc3RyIH50b29sX25hbWU6XCJwcHhsaWJfZHJpdmVyXCIgW11cbiAgICB8PiBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbCBTdHJ1Y3R1cmVcbiAgaW5cbiAgcHJlZml4IEAgc3RcblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxubGV0IGV4dHJhY3RfY29va2llc19zaWcgc2cgPVxuICBsZXQgc2cgPVxuICAgIG1hdGNoIHNnIHdpdGhcbiAgICB8ICh7XG4gICAgICAgICBwc2lnX2Rlc2MgPVxuICAgICAgICAgICBQc2lnX2F0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC5wcHguY29udGV4dFwiOyBfIH07IF8gfTtcbiAgICAgICAgIF87XG4gICAgICAgfSBhcyBwcmVmaXgpXG4gICAgICA6OiBzZyAtPlxuICAgICAgICBsZXQgcHJlZml4ID0gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3QudG9fb2NhbWwgU2lnbmF0dXJlIFsgcHJlZml4IF0gaW5cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICBMaXN0LmlzX2VtcHR5XG4gICAgICAgICAgICAoQXN0bGliLkFzdF9tZXRhZGF0YS5kcm9wX3BweF9jb250ZXh0X3NpZyB+cmVzdG9yZTp0cnVlIHByZWZpeCkpO1xuICAgICAgICBzZ1xuICAgIHwgXyAtPiBzZ1xuICBpblxuICAoKiBUaGUgY2xpIGNvb2tpZXMgaGF2ZSB0byBiZSBzZXQgYWZ0ZXIgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCxcbiAgICAgc2luY2UgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCByZXNldHMgdGhlIGNvb2tpZXMgKilcbiAgTGlzdC5pdGVyICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpIH5mOihmdW4gKG5hbWUsIGV4cHIpIC0+XG4gICAgICBDb29raWVzLnNldCBUIG5hbWUgZXhwcik7XG4gIHNnXG5cbmxldCBhZGRfY29va2llc19zaWcgc2cgPVxuICBsZXQgcHJlZml4ID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zaWcgfnRvb2xfbmFtZTpcInBweGxpYl9kcml2ZXJcIiBbXVxuICAgIHw+IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIFNpZ25hdHVyZVxuICBpblxuICBwcmVmaXggQCBzZ1xuXG4oKiQqKVxuXG5sZXQgZXh0cmFjdF9jb29raWVzIChhc3QgOiBJbnRmX29yX2ltcGwudCkgOiBJbnRmX29yX2ltcGwudCA9XG4gIG1hdGNoIGFzdCB3aXRoXG4gIHwgSW50ZiB4IC0+IEludGYgKGV4dHJhY3RfY29va2llc19zaWcgeClcbiAgfCBJbXBsIHggLT4gSW1wbCAoZXh0cmFjdF9jb29raWVzX3N0ciB4KVxuXG5sZXQgYWRkX2Nvb2tpZXMgKGFzdCA6IEludGZfb3JfaW1wbC50KSA6IEludGZfb3JfaW1wbC50ID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT4gSW50ZiAoYWRkX2Nvb2tpZXNfc2lnIHgpXG4gIHwgSW1wbCB4IC0+IEltcGwgKGFkZF9jb29raWVzX3N0ciB4KVxuXG5sZXQgY29ycmVjdGlvbnMgPSByZWYgW11cbmxldCBhZGRfdG9fbGlzdCByIHggPSByIDo9IHggOjogIXJcblxubGV0IHJlZ2lzdGVyX2NvcnJlY3Rpb24gfmxvYyB+cmVwbCA9XG4gIGFkZF90b19saXN0IGNvcnJlY3Rpb25zXG4gICAgKFJlY29uY2lsZS5SZXBsYWNlbWVudC5tYWtlX3RleHQgKCkgfnN0YXJ0OmxvYy5sb2Nfc3RhcnQgfnN0b3A6bG9jLmxvY19lbmRcbiAgICAgICB+cmVwbClcblxubGV0IHByb2Nlc3NfZmlsZV9ob29rcyA9IHJlZiBbXVxubGV0IHJlZ2lzdGVyX3Byb2Nlc3NfZmlsZV9ob29rIGYgPSBhZGRfdG9fbGlzdCBwcm9jZXNzX2ZpbGVfaG9va3MgZlxuXG5tb2R1bGUgRmlsZV9wcm9wZXJ0eSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSB7XG4gICAgbmFtZSA6IHN0cmluZztcbiAgICBtdXRhYmxlIGRhdGEgOiAnYSBvcHRpb247XG4gICAgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50O1xuICB9XG5cbiAgdHlwZSBwYWNrZWQgPSBUIDogXyB0IC0+IHBhY2tlZFxuXG4gIGxldCBhbGwgPSByZWYgW11cbiAgbGV0IHJlZ2lzdGVyIHQgPSBhZGRfdG9fbGlzdCBhbGwgKFQgdClcbiAgbGV0IHJlc2V0X2FsbCAoKSA9IExpc3QuaXRlciAhYWxsIH5mOihmdW4gKFQgdCkgLT4gdC5kYXRhIDwtIE5vbmUpXG5cbiAgbGV0IGR1bXBfYW5kX3Jlc2V0X2FsbCAoKSA9XG4gICAgTGlzdC5maWx0ZXJfbWFwIChMaXN0LnJldiAhYWxsKSB+ZjooZnVuIChUIHQpIC0+XG4gICAgICAgIG1hdGNoIHQuZGF0YSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICAgICB0LmRhdGEgPC0gTm9uZTtcbiAgICAgICAgICAgIFNvbWUgKHQubmFtZSwgdC5zZXhwX29mX3QgdikpXG5lbmRcblxubW9kdWxlIENyZWF0ZV9maWxlX3Byb3BlcnR5XG4gICAgKE5hbWUgOiBzaWdcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kKVxuICAgIChUIDogU2V4cGFibGUuUykgPVxuc3RydWN0XG4gIGxldCB0IDogXyBGaWxlX3Byb3BlcnR5LnQgPVxuICAgIHsgbmFtZSA9IE5hbWUubmFtZTsgZGF0YSA9IE5vbmU7IHNleHBfb2ZfdCA9IFQuc2V4cF9vZl90IH1cblxuICBsZXQgKCkgPSBGaWxlX3Byb3BlcnR5LnJlZ2lzdGVyIHRcbiAgbGV0IHNldCB4ID0gdC5kYXRhIDwtIFNvbWUgeFxuZW5kXG5cbmxldCBwcm9jZXNzX2FzdCAoYXN0IDogSW50Zl9vcl9pbXBsLnQpIH5pbnB1dF9uYW1lIH50b29sX25hbWUgfmhvb2tcbiAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmVtYmVkX2Vycm9ycyA9XG4gIG1hdGNoIGFzdCB3aXRoXG4gIHwgSW50ZiB4IC0+XG4gICAgICBsZXQgYXN0ID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBtYXBfc2lnbmF0dXJlX2dlbiB4IH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICB+aW5wdXRfbmFtZTooU29tZSBpbnB1dF9uYW1lKSB+ZW1iZWRfZXJyb3JzXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBhc3QgLT4gYXN0XG4gICAgICBpblxuICAgICAgSW50Zl9vcl9pbXBsLkludGYgYXN0XG4gIHwgSW1wbCB4IC0+XG4gICAgICBsZXQgYXN0ID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBtYXBfc3RydWN0dXJlX2dlbiB4IH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICB+aW5wdXRfbmFtZTooU29tZSBpbnB1dF9uYW1lKSB+ZW1iZWRfZXJyb3JzXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBhc3QgLT4gYXN0XG4gICAgICBpblxuICAgICAgSW50Zl9vcl9pbXBsLkltcGwgYXN0XG5cbmxldCBwcm9jZXNzX2ZpbGUgKGtpbmQgOiBLaW5kLnQpIGZuIH5pbnB1dF9uYW1lIH5yZWxvY2F0ZSB+b3V0cHV0X21vZGVcbiAgICB+ZW1iZWRfZXJyb3JzIH5vdXRwdXQgPVxuICBGaWxlX3Byb3BlcnR5LnJlc2V0X2FsbCAoKTtcbiAgTGlzdC5pdGVyIChMaXN0LnJldiAhcHJvY2Vzc19maWxlX2hvb2tzKSB+ZjooZnVuIGYgLT4gZiAoKSk7XG4gIGNvcnJlY3Rpb25zIDo9IFtdO1xuICBsZXQgcmVwbGFjZW1lbnRzID0gcmVmIFtdIGluXG4gIGxldCB0b29sX25hbWUgPSBcInBweF9kcml2ZXJcIiBpblxuICBsZXQgaG9vayA6IENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLnQgPVxuICAgIG1hdGNoIG91dHB1dF9tb2RlIHdpdGhcbiAgICB8IFJlY29uY2lsZSAoVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzKSAtPlxuICAgICAgICB7XG4gICAgICAgICAgZiA9XG4gICAgICAgICAgICAoZnVuIGNvbnRleHQgKGxvYyA6IExvY2F0aW9uLnQpIGdlbmVyYXRlZCAtPlxuICAgICAgICAgICAgICBhZGRfdG9fbGlzdCByZXBsYWNlbWVudHNcbiAgICAgICAgICAgICAgICAoUmVjb25jaWxlLlJlcGxhY2VtZW50Lm1ha2UgKCkgfmNvbnRleHQ6KEV4dGVuc2lvbiBjb250ZXh0KVxuICAgICAgICAgICAgICAgICAgIH5zdGFydDpsb2MubG9jX3N0YXJ0IH5zdG9wOmxvYy5sb2NfZW5kIH5yZXBsOmdlbmVyYXRlZCkpO1xuICAgICAgICB9XG4gICAgfCBfIC0+IENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcFxuICBpblxuICBsZXQgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgOiBDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIudCA9XG4gICAge1xuICAgICAgZiA9XG4gICAgICAgIChmdW4gY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgZ2VuZXJhdGVkIC0+XG4gICAgICAgICAgYWRkX3RvX2xpc3QgY29ycmVjdGlvbnNcbiAgICAgICAgICAgIChSZWNvbmNpbGUuUmVwbGFjZW1lbnQubWFrZSAoKSB+Y29udGV4dDooRmxvYXRpbmdfYXR0cmlidXRlIGNvbnRleHQpXG4gICAgICAgICAgICAgICB+c3RhcnQ6bG9jLmxvY19zdGFydCB+c3RvcDpsb2MubG9jX2VuZCB+cmVwbDooTWFueSBnZW5lcmF0ZWQpKSk7XG4gICAgfVxuICBpblxuXG4gIGxldCBpbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QgPVxuICAgIGxldCBwcmVwcm9jZXNzZWRfYW5kX2xvYWRlZCA9XG4gICAgICB3aXRoX3ByZXByb2Nlc3NlZF9maWxlIGZuIH5mOihsb2FkX2lucHV0IH5raW5kIH5pbnB1dF9uYW1lIH5yZWxvY2F0ZSlcbiAgICBpblxuICAgIG1hdGNoIHByZXByb2Nlc3NlZF9hbmRfbG9hZGVkIHdpdGhcbiAgICB8IE9rIChpbnB1dF9mbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KSAtPiAoXG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBhc3QgPVxuICAgICAgICAgICAgZXh0cmFjdF9jb29raWVzIGFzdFxuICAgICAgICAgICAgfD4gcHJvY2Vzc19hc3QgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9yc1xuICAgICAgICAgIGluXG4gICAgICAgICAgKGlucHV0X2ZuYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpXG4gICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgKGlucHV0X2ZuYW1lLCBpbnB1dF92ZXJzaW9uLCBleG5fdG9fZXh0ZW5zaW9uIGV4biB+a2luZCkpXG4gICAgfCBFcnJvciAoZXJyb3IsIGlucHV0X3ZlcnNpb24pIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgIChpbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBlcnJvcl90b19leHRlbnNpb24gZXJyb3IgfmtpbmQpXG4gICAgfCBFcnJvciAoZXJyb3IsIF8pIC0+XG4gICAgICAgIGxldCBvcGVuIExvY2F0aW9uLkVycm9yIGluXG4gICAgICAgIExvY2F0aW9uLnNldF9maWxlbmFtZSAoZ2V0X2xvY2F0aW9uIGVycm9yKSBmblxuICAgICAgICB8PiB1cGRhdGVfbG9jIGVycm9yIHw+IHJhaXNlXG4gIGluXG4gIE9wdGlvbi5pdGVyICFvdXRwdXRfbWV0YWRhdGFfZmlsZW5hbWUgfmY6KGZ1biBmbiAtPlxuICAgICAgbGV0IG1ldGFkYXRhID0gRmlsZV9wcm9wZXJ0eS5kdW1wX2FuZF9yZXNldF9hbGwgKCkgaW5cbiAgICAgIE91dF9jaGFubmVsLndyaXRlX2FsbCBmblxuICAgICAgICB+ZGF0YTpcbiAgICAgICAgICAoTGlzdC5tYXAgbWV0YWRhdGEgfmY6KGZ1biAocywgc2V4cCkgLT5cbiAgICAgICAgICAgICAgIFNleHAudG9fc3RyaW5nX2h1bSAoU2V4cC5MaXN0IFsgQXRvbSBzOyBzZXhwIF0pIF4gXCJcXG5cIilcbiAgICAgICAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIikpO1xuXG4gIGxldCBpbnB1dF9jb250ZW50cyA9IGxhenkgKGxvYWRfc291cmNlX2ZpbGUgZm4pIGluXG4gIGxldCBjb3JyZWN0ZWQgPSBmbiBeICFjb3JyZWN0ZWRfc3VmZml4IGluXG4gIGxldCBtaXNtYXRjaGVzX2ZvdW5kID1cbiAgICBtYXRjaCAhY29ycmVjdGlvbnMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgICAgaWYgU3RkbGliLlN5cy5maWxlX2V4aXN0cyBjb3JyZWN0ZWQgdGhlbiBTdGRsaWIuU3lzLnJlbW92ZSBjb3JyZWN0ZWQ7XG4gICAgICAgIGZhbHNlXG4gICAgfCBjb3JyZWN0aW9ucyAtPlxuICAgICAgICBSZWNvbmNpbGUucmVjb25jaWxlIGNvcnJlY3Rpb25zXG4gICAgICAgICAgfmNvbnRlbnRzOihMYXp5LmZvcmNlIGlucHV0X2NvbnRlbnRzKVxuICAgICAgICAgIH5vdXRwdXQ6KFNvbWUgY29ycmVjdGVkKSB+aW5wdXRfZmlsZW5hbWU6Zm4gfmlucHV0X25hbWVcbiAgICAgICAgICB+dGFyZ2V0OkNvcnJlY3RlZCA/c3R5bGVyOiFzdHlsZXIgfmtpbmQ7XG4gICAgICAgIHRydWVcbiAgaW5cblxuICAobWF0Y2ggb3V0cHV0X21vZGUgd2l0aFxuICB8IE51bGwgLT4gKClcbiAgfCBQcmV0dHlfcHJpbnQgLT5cbiAgICAgIHdpdGhfb3V0cHV0IG91dHB1dCB+YmluYXJ5OmZhbHNlIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICBsZXQgcHBmID0gU3RkbGliLkZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgICAgICAgICAobWF0Y2ggYXN0IHdpdGhcbiAgICAgICAgICB8IEludGYgYXN0IC0+IFBwcmludGFzdC5zaWduYXR1cmUgcHBmIGFzdFxuICAgICAgICAgIHwgSW1wbCBhc3QgLT4gUHByaW50YXN0LnN0cnVjdHVyZSBwcGYgYXN0KTtcbiAgICAgICAgICBsZXQgbnVsbF9hc3QgPVxuICAgICAgICAgICAgbWF0Y2ggYXN0IHdpdGggSW50ZiBbXSB8IEltcGwgW10gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIG5vdCBudWxsX2FzdCB0aGVuIFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfbmV3bGluZSBwcGYgKCkpXG4gIHwgRHVtcF9hc3QgLT5cbiAgICAgIHdpdGhfb3V0cHV0IG91dHB1dCB+YmluYXJ5OnRydWUgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIEFzdF9pby53cml0ZSBvY1xuICAgICAgICAgICAgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfVxuICAgICAgICAgICAgfmFkZF9wcHhfY29udGV4dDp0cnVlKVxuICB8IERwYXJzZXRyZWUgLT5cbiAgICAgIHdpdGhfb3V0cHV0IG91dHB1dCB+YmluYXJ5OmZhbHNlIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICBsZXQgcHBmID0gU3RkbGliLkZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgICAgICAgICBsZXQgYXN0ID0gYWRkX2Nvb2tpZXMgYXN0IGluXG4gICAgICAgICAgKG1hdGNoIGFzdCB3aXRoXG4gICAgICAgICAgfCBJbnRmIGFzdCAtPiBTZXhwLnBwX2h1bSBwcGYgKEFzdF90cmF2ZXJzZS5zZXhwX29mI3NpZ25hdHVyZSBhc3QpXG4gICAgICAgICAgfCBJbXBsIGFzdCAtPiBTZXhwLnBwX2h1bSBwcGYgKEFzdF90cmF2ZXJzZS5zZXhwX29mI3N0cnVjdHVyZSBhc3QpKTtcbiAgICAgICAgICBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgcHBmICgpKVxuICB8IFJlY29uY2lsZSBtb2RlIC0+XG4gICAgICBSZWNvbmNpbGUucmVjb25jaWxlICFyZXBsYWNlbWVudHNcbiAgICAgICAgfmNvbnRlbnRzOihMYXp5LmZvcmNlIGlucHV0X2NvbnRlbnRzKVxuICAgICAgICB+b3V0cHV0IH5pbnB1dF9maWxlbmFtZTpmbiB+aW5wdXRfbmFtZSB+dGFyZ2V0OihPdXRwdXQgbW9kZSlcbiAgICAgICAgP3N0eWxlcjohc3R5bGVyIH5raW5kKTtcblxuICBpZlxuICAgIG1pc21hdGNoZXNfZm91bmQgJiYgbWF0Y2ggIWRpZmZfY29tbWFuZCB3aXRoIFNvbWUgXCItXCIgLT4gZmFsc2UgfCBfIC0+IHRydWVcbiAgdGhlbiAoXG4gICAgUHB4bGliX3ByaW50X2RpZmYucHJpbnQgKCkgfmZpbGUxOmZuIH5maWxlMjpjb3JyZWN0ZWQgfnVzZV9jb2xvcjohdXNlX2NvbG9yXG4gICAgICA/ZGlmZl9jb21tYW5kOiFkaWZmX2NvbW1hbmQ7XG4gICAgU3RkbGliLmV4aXQgMSlcblxubGV0IG91dHB1dF9tb2RlID0gcmVmIFByZXR0eV9wcmludFxubGV0IG91dHB1dCA9IHJlZiBOb25lXG5sZXQga2luZCA9IHJlZiBOb25lXG5sZXQgaW5wdXQgPSByZWYgTm9uZVxubGV0IGVtYmVkX2Vycm9ycyA9IHJlZiBmYWxzZVxuXG5sZXQgc2V0X2lucHV0IGZuID1cbiAgbWF0Y2ggIWlucHV0IHdpdGhcbiAgfCBOb25lIC0+IGlucHV0IDo9IFNvbWUgZm5cbiAgfCBTb21lIF8gLT4gcmFpc2UgKEFyZy5CYWQgXCJ0b28gbWFueSBpbnB1dCBmaWxlc1wiKVxuXG5sZXQgc2V0X2tpbmQgayA9XG4gIG1hdGNoICFraW5kIHdpdGhcbiAgfCBTb21lIGsnIHdoZW4gbm90IChLaW5kLmVxdWFsIGsgaycpIC0+XG4gICAgICByYWlzZSAoQXJnLkJhZCBcIm11c3Qgc3BlY2lmeSBhdCBtb3N0IG9uZSBvZiAtaW1wbCBvciAtaW50ZlwiKVxuICB8IF8gLT4ga2luZCA6PSBTb21lIGtcblxubGV0IHNldF9vdXRwdXRfbW9kZSBtb2RlID1cbiAgbWF0Y2ggKCFvdXRwdXRfbW9kZSwgbW9kZSkgd2l0aFxuICB8IFByZXR0eV9wcmludCwgXyAtPiBvdXRwdXRfbW9kZSA6PSBtb2RlXG4gIHwgXywgUHJldHR5X3ByaW50IC0+IGFzc2VydCBmYWxzZVxuICB8IER1bXBfYXN0LCBEdW1wX2FzdCB8IERwYXJzZXRyZWUsIERwYXJzZXRyZWUgLT4gKClcbiAgfCBSZWNvbmNpbGUgYSwgUmVjb25jaWxlIGIgd2hlbiBQb2x5LmVxdWFsIGEgYiAtPiAoKVxuICB8IHgsIHkgLT5cbiAgICAgIGxldCBhcmdfb2Zfb3V0cHV0X21vZGUgPSBmdW5jdGlvblxuICAgICAgICB8IFByZXR0eV9wcmludCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBEdW1wX2FzdCAtPiBcIi1kdW1wLWFzdFwiXG4gICAgICAgIHwgRHBhcnNldHJlZSAtPiBcIi1kcGFyc2V0cmVlXCJcbiAgICAgICAgfCBSZWNvbmNpbGUgVXNpbmdfbGluZV9kaXJlY3RpdmVzIC0+IFwiLXJlY29uY2lsZVwiXG4gICAgICAgIHwgUmVjb25jaWxlIERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPiBcIi1yZWNvbmNpbGUtd2l0aC1jb21tZW50c1wiXG4gICAgICAgIHwgTnVsbCAtPiBcIi1udWxsXCJcbiAgICAgIGluXG4gICAgICByYWlzZVxuICAgICAgICAoQXJnLkJhZFxuICAgICAgICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyBhbmQgJXMgYXJlIGluY29tcGF0aWJsZVwiIChhcmdfb2Zfb3V0cHV0X21vZGUgeClcbiAgICAgICAgICAgICAgKGFyZ19vZl9vdXRwdXRfbW9kZSB5KSkpXG5cbmxldCBwcmludF90cmFuc2Zvcm1hdGlvbnMgKCkgPVxuICBMaXN0Lml0ZXIgIVRyYW5zZm9ybS5hbGwgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgIFByaW50Zi5wcmludGYgXCIlc1xcblwiIGN0Lm5hbWUpXG5cbmxldCBwYXJzZV9hcHBseV9saXN0IHMgPVxuICBsZXQgbmFtZXMgPVxuICAgIGlmIFN0cmluZy5lcXVhbCBzIFwiXCIgdGhlbiBbXSBlbHNlIFN0cmluZy5zcGxpdF9vbl9jaGFyIHMgfnNlcDonLCdcbiAgaW5cbiAgTGlzdC5pdGVyIG5hbWVzIH5mOihmdW4gbmFtZSAtPlxuICAgICAgaWZcbiAgICAgICAgbm90XG4gICAgICAgICAgKExpc3QuZXhpc3RzICFUcmFuc2Zvcm0uYWxsIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgICBUcmFuc2Zvcm0uaGFzX25hbWUgY3QgbmFtZSkpXG4gICAgICB0aGVuXG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKFN0ZGxpYi5BcmcuQmFkXG4gICAgICAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiY29kZSB0cmFuc2Zvcm1hdGlvbiAnJXMnIGRvZXMgbm90IGV4aXN0XCIgbmFtZSkpKTtcbiAgbmFtZXNcblxudHlwZSBtYXNrID0ge1xuICBtdXRhYmxlIGFwcGx5IDogc3RyaW5nIGxpc3Qgb3B0aW9uO1xuICBtdXRhYmxlIGRvbnRfYXBwbHkgOiBzdHJpbmcgbGlzdCBvcHRpb247XG59XG5cbmxldCBtYXNrID0geyBhcHBseSA9IE5vbmU7IGRvbnRfYXBwbHkgPSBOb25lIH1cblxubGV0IGhhbmRsZV9hcHBseSBzID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5hcHBseSB0aGVuXG4gICAgcmFpc2UgKEFyZy5CYWQgXCItYXBwbHkgY2FsbGVkIHRvbyBtYW55IHRpbWVzXCIpO1xuICAoKiBUaGlzIGlzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0J3MgbW9yZSBpbnR1aXRpdmUgKilcbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgLWRvbnQtYXBwbHlcIik7XG4gIG1hc2suYXBwbHkgPC0gU29tZSAocGFyc2VfYXBwbHlfbGlzdCBzKVxuXG5sZXQgaGFuZGxlX2RvbnRfYXBwbHkgcyA9XG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suZG9udF9hcHBseSB0aGVuXG4gICAgcmFpc2UgKEFyZy5CYWQgXCItYXBwbHkgY2FsbGVkIHRvbyBtYW55IHRpbWVzXCIpO1xuICBtYXNrLmRvbnRfYXBwbHkgPC0gU29tZSAocGFyc2VfYXBwbHlfbGlzdCBzKVxuXG5sZXQgaW50ZXJwcmV0X21hc2sgKCkgPVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmFwcGx5IHx8IE9wdGlvbi5pc19zb21lIG1hc2suZG9udF9hcHBseSB0aGVuXG4gICAgbGV0IHNlbGVjdGVkX3RyYW5zZm9ybV9uYW1lIGN0ID1cbiAgICAgIGxldCBpc19jYW5kaWRhdGUgPVxuICAgICAgICBtYXRjaCBtYXNrLmFwcGx5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIG5hbWVzIC0+IExpc3QuZXhpc3RzIG5hbWVzIH5mOihUcmFuc2Zvcm0uaGFzX25hbWUgY3QpXG4gICAgICBpblxuICAgICAgbGV0IGlzX3NlbGVjdGVkID1cbiAgICAgICAgbWF0Y2ggbWFzay5kb250X2FwcGx5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGlzX2NhbmRpZGF0ZVxuICAgICAgICB8IFNvbWUgbmFtZXMgLT5cbiAgICAgICAgICAgIGlzX2NhbmRpZGF0ZSAmJiBub3QgKExpc3QuZXhpc3RzIG5hbWVzIH5mOihUcmFuc2Zvcm0uaGFzX25hbWUgY3QpKVxuICAgICAgaW5cbiAgICAgIGlmIGlzX3NlbGVjdGVkIHRoZW4gU29tZSBjdC5uYW1lIGVsc2UgTm9uZVxuICAgIGluXG4gICAgYXBwbHlfbGlzdCA6PVxuICAgICAgU29tZSAoTGlzdC5maWx0ZXJfbWFwICFUcmFuc2Zvcm0uYWxsIH5mOnNlbGVjdGVkX3RyYW5zZm9ybV9uYW1lKVxuXG5sZXQgc2V0X2Nvb2tpZSBzID1cbiAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246Jz0nIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICByYWlzZSAoQXJnLkJhZCBcImludmFsaWQgY29va2llLCBtdXN0IGJlIG9mIHRoZSBmb3JtIFxcXCI8bmFtZT49PGV4cHI+XFxcIlwiKVxuICB8IFNvbWUgKG5hbWUsIHZhbHVlKSAtPlxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyB2YWx1ZSBpblxuICAgICAgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIDwtXG4gICAgICAgIHtcbiAgICAgICAgICBMZXhpbmcucG9zX2ZuYW1lID0gXCI8Y29tbWFuZC1saW5lPlwiO1xuICAgICAgICAgIHBvc19sbnVtID0gMTtcbiAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICBwb3NfY251bSA9IDA7XG4gICAgICAgIH07XG4gICAgICBsZXQgZXhwciA9IFBhcnNlLmV4cHJlc3Npb24gbGV4YnVmIGluXG4gICAgICBDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpIDo9IChuYW1lLCBleHByKSA6OiAhQ29va2llcy5naXZlbl90aHJvdWdoX2NsaVxuXG5sZXQgc2hhcmVkX2FyZ3MgPVxuICBbXG4gICAgKCBcIi1sb2MtZmlsZW5hbWVcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IGxvY19mbmFtZSA6PSBTb21lIHMpLFxuICAgICAgXCI8c3RyaW5nPiBGaWxlIG5hbWUgdG8gdXNlIGluIGxvY2F0aW9uc1wiICk7XG4gICAgKCBcIi1yZXNlcnZlLW5hbWVzcGFjZVwiLFxuICAgICAgQXJnLlN0cmluZyBOYW1lLlJlc2VydmVkX25hbWVzcGFjZXMucmVzZXJ2ZSxcbiAgICAgIFwiPHN0cmluZz4gTWFyayB0aGUgZ2l2ZW4gbmFtZXNwYWNlIGFzIHJlc2VydmVkXCIgKTtcbiAgICAoXCItbm8tY2hlY2tcIiwgQXJnLkNsZWFyIHBlcmZvcm1fY2hlY2tzLCBcIiBEaXNhYmxlIGNoZWNrcyAodW5zYWZlKVwiKTtcbiAgICAoXCItY2hlY2tcIiwgQXJnLlNldCBwZXJmb3JtX2NoZWNrcywgXCIgRW5hYmxlIGNoZWNrc1wiKTtcbiAgICAoIFwiLW5vLWNoZWNrLW9uLWV4dGVuc2lvbnNcIixcbiAgICAgIEFyZy5DbGVhciBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zLFxuICAgICAgXCIgRGlzYWJsZSBjaGVja3Mgb24gZXh0ZW5zaW9uIHBvaW50IG9ubHlcIiApO1xuICAgICggXCItY2hlY2stb24tZXh0ZW5zaW9uc1wiLFxuICAgICAgQXJnLlNldCBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zLFxuICAgICAgXCIgRW5hYmxlIGNoZWNrcyBvbiBleHRlbnNpb24gcG9pbnQgb25seVwiICk7XG4gICAgKCBcIi1uby1sb2NhdGlvbnMtY2hlY2tcIixcbiAgICAgIEFyZy5DbGVhciBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayxcbiAgICAgIFwiIERpc2FibGUgbG9jYXRpb25zIGNoZWNrIG9ubHlcIiApO1xuICAgICggXCItbG9jYXRpb25zLWNoZWNrXCIsXG4gICAgICBBcmcuU2V0IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrLFxuICAgICAgXCIgRW5hYmxlIGxvY2F0aW9ucyBjaGVjayBvbmx5XCIgKTtcbiAgICAoIFwiLWFwcGx5XCIsXG4gICAgICBBcmcuU3RyaW5nIGhhbmRsZV9hcHBseSxcbiAgICAgIFwiPG5hbWVzPiBBcHBseSB0aGVzZSB0cmFuc2Zvcm1hdGlvbnMgaW4gb3JkZXIgKGNvbW1hLXNlcGFyYXRlZCBsaXN0KVwiICk7XG4gICAgKCBcIi1kb250LWFwcGx5XCIsXG4gICAgICBBcmcuU3RyaW5nIGhhbmRsZV9kb250X2FwcGx5LFxuICAgICAgXCI8bmFtZXM+IEV4Y2x1ZGUgdGhlc2UgdHJhbnNmb3JtYXRpb25zXCIgKTtcbiAgICAoIFwiLW5vLW1lcmdlXCIsXG4gICAgICBBcmcuU2V0IG5vX21lcmdlLFxuICAgICAgXCIgRG8gbm90IG1lcmdlIGNvbnRleHQgZnJlZSB0cmFuc2Zvcm1hdGlvbnMgKGJldHRlciBmb3IgZGVidWdnaW5nIFxcXG4gICAgICAgcmV3cml0ZXJzKS4gQXMgYSByZXN1bHQsIHRoZSBjb250ZXh0LWZyZWUgdHJhbnNmb3JtYXRpb25zIGFyZSBub3QgYWxsIFxcXG4gICAgICAgYXBwbGllZCBiZWZvcmUgYWxsIGltcGwgYW5kIGludGYuXCIgKTtcbiAgICAoXCItY29va2llXCIsIEFyZy5TdHJpbmcgc2V0X2Nvb2tpZSwgXCJOQU1FPUVYUFIgU2V0IHRoZSBjb29raWUgTkFNRSB0byBFWFBSXCIpO1xuICAgIChcIi0tY29va2llXCIsIEFyZy5TdHJpbmcgc2V0X2Nvb2tpZSwgXCIgU2FtZSBhcyAtY29va2llXCIpO1xuICBdXG5cbmxldCAoKSA9XG4gIExpc3QuaXRlciBzaGFyZWRfYXJncyB+ZjooZnVuIChrZXksIHNwZWMsIGRvYykgLT4gYWRkX2FyZyBrZXkgc3BlYyB+ZG9jKVxuXG5sZXQgYXNfcHAgKCkgPVxuICBzZXRfb3V0cHV0X21vZGUgRHVtcF9hc3Q7XG4gIGVtYmVkX2Vycm9ycyA6PSB0cnVlXG5cbmxldCBzdGFuZGFsb25lX2FyZ3MgPVxuICBbXG4gICAgKCBcIi1hcy1wcHhcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gcmFpc2UgKEFyZy5CYWQgXCItYXMtcHB4IG11c3QgYmUgdGhlIGZpcnN0IGFyZ3VtZW50XCIpKSxcbiAgICAgIFwiIFJ1biBhcyBhIC1wcHggcmV3cml0ZXIgKG11c3QgYmUgdGhlIGZpcnN0IGFyZ3VtZW50KVwiICk7XG4gICAgKCBcIi0tYXMtcHB4XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHJhaXNlIChBcmcuQmFkIFwiLS1hcy1wcHggbXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnRcIikpLFxuICAgICAgXCIgU2FtZSBhcyAtYXMtcHB4XCIgKTtcbiAgICAoXCItYXMtcHBcIiwgQXJnLlVuaXQgYXNfcHAsIFwiIFNob3J0aGFuZCBmb3I6IC1kdW1wLWFzdCAtZW1iZWQtZXJyb3JzXCIpO1xuICAgIChcIi0tYXMtcHBcIiwgQXJnLlVuaXQgYXNfcHAsIFwiIFNhbWUgYXMgLWFzLXBwXCIpO1xuICAgICggXCItb1wiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gb3V0cHV0IDo9IFNvbWUgcyksXG4gICAgICBcIjxmaWxlbmFtZT4gT3V0cHV0IGZpbGUgKHVzZSAnLScgZm9yIHN0ZG91dClcIiApO1xuICAgIChcIi1cIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfaW5wdXQgXCItXCIpLCBcIiBSZWFkIGlucHV0IGZyb20gc3RkaW5cIik7XG4gICAgKCBcIi1kdW1wLWFzdFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHVtcF9hc3QpLFxuICAgICAgXCIgRHVtcCB0aGUgbWFyc2hhbGVkIGFzdCB0byB0aGUgb3V0cHV0IGZpbGUgaW5zdGVhZCBvZiBwcmV0dHktcHJpbnRpbmcgaXRcIlxuICAgICk7XG4gICAgKCBcIi0tZHVtcC1hc3RcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIER1bXBfYXN0KSxcbiAgICAgIFwiIFNhbWUgYXMgLWR1bXAtYXN0XCIgKTtcbiAgICAoIFwiLWRwYXJzZXRyZWVcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIERwYXJzZXRyZWUpLFxuICAgICAgXCIgUHJpbnQgdGhlIHBhcnNldHJlZSAoc2FtZSBhcyBvY2FtbGMgLWRwYXJzZXRyZWUpXCIgKTtcbiAgICAoIFwiLWVtYmVkLWVycm9yc1wiLFxuICAgICAgQXJnLlNldCBlbWJlZF9lcnJvcnMsXG4gICAgICBcIiBFbWJlZCBlcnJvcnMgaW4gdGhlIG91dHB1dCBBU1QgKGRlZmF1bHQ6IHRydWUgd2hlbiAtYXMtcHAsIGZhbHNlIFxcXG4gICAgICAgb3RoZXJ3aXNlKVwiICk7XG4gICAgKCBcIi1udWxsXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBOdWxsKSxcbiAgICAgIFwiIFByb2R1Y2Ugbm8gb3V0cHV0LCBleGNlcHQgZm9yIGVycm9yc1wiICk7XG4gICAgKCBcIi1pbXBsXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEltcGwpLFxuICAgICAgXCI8ZmlsZT4gVHJlYXQgdGhlIGlucHV0IGFzIGEgLm1sIGZpbGVcIiApO1xuICAgIChcIi0taW1wbFwiLCBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEltcGwpLCBcIjxmaWxlPiBTYW1lIGFzIC1pbXBsXCIpO1xuICAgICggXCItaW50ZlwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbnRmKSxcbiAgICAgIFwiPGZpbGU+IFRyZWF0IHRoZSBpbnB1dCBhcyBhIC5tbGkgZmlsZVwiICk7XG4gICAgKFwiLS1pbnRmXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW50ZiksIFwiPGZpbGU+IFNhbWUgYXMgLWludGZcIik7XG4gICAgKCBcIi1kZWJ1Zy1hdHRyaWJ1dGUtZHJvcFwiLFxuICAgICAgQXJnLlNldCBkZWJ1Z19hdHRyaWJ1dGVfZHJvcCxcbiAgICAgIFwiIERlYnVnIGF0dHJpYnV0ZSBkcm9wcGluZ1wiICk7XG4gICAgKCBcIi1wcmludC10cmFuc2Zvcm1hdGlvbnNcIixcbiAgICAgIEFyZy5TZXQgcmVxdWVzdF9wcmludF90cmFuc2Zvcm1hdGlvbnMsXG4gICAgICBcIiBQcmludCBsaW5rZWQtaW4gY29kZSB0cmFuc2Zvcm1hdGlvbnMsIGluIHRoZSBvcmRlciB0aGV5IGFyZSBhcHBsaWVkXCIgKTtcbiAgICAoIFwiLXByaW50LXBhc3Nlc1wiLFxuICAgICAgQXJnLlNldCByZXF1ZXN0X3ByaW50X3Bhc3NlcyxcbiAgICAgIFwiIFByaW50IHRoZSBhY3R1YWwgcGFzc2VzIG92ZXIgdGhlIHdob2xlIEFTVCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgXFxcbiAgICAgICBhcHBsaWVkXCIgKTtcbiAgICAoIFwiLWl0ZS1jaGVja1wiLFxuICAgICAgQXJnLlVuaXRcbiAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICBcIldhcm5pbmc6IHRoZSAtaXRlLWNoZWNrIGZsYWcgaXMgZGVwcmVjYXRlZCBhbmQgaGFzIG5vIGVmZmVjdC5cXG4lIVwiO1xuICAgICAgICAgIEV4dHJhX3dhcm5pbmdzLmNhcmVfYWJvdXRfaXRlX2JyYW5jaCA6PSB0cnVlKSxcbiAgICAgIFwiIChubyBlZmZlY3QgLS0ga2VwdCBmb3IgY29tcGF0aWJpbGl0eSlcIiApO1xuICAgICggXCItcHBcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IHByZXByb2Nlc3NvciA6PSBTb21lIHMpLFxuICAgICAgXCI8Y29tbWFuZD4gIFBpcGUgc291cmNlcyB0aHJvdWdoIHByZXByb2Nlc3NvciA8Y29tbWFuZD4gKGluY29tcGF0aWJsZSBcXFxuICAgICAgIHdpdGggLWFzLXBweClcIiApO1xuICAgICggXCItcmVjb25jaWxlXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSAoUmVjb25jaWxlIFVzaW5nX2xpbmVfZGlyZWN0aXZlcykpLFxuICAgICAgXCIgKFdJUCkgUHJldHR5IHByaW50IHRoZSBvdXRwdXQgdXNpbmcgYSBtaXggb2YgdGhlIGlucHV0IHNvdXJjZSBhbmQgdGhlIFxcXG4gICAgICAgZ2VuZXJhdGVkIGNvZGVcIiApO1xuICAgICggXCItcmVjb25jaWxlLXdpdGgtY29tbWVudHNcIixcbiAgICAgIEFyZy5Vbml0XG4gICAgICAgIChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIChSZWNvbmNpbGUgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzKSksXG4gICAgICBcIiAoV0lQKSBzYW1lIGFzIC1yZWNvbmNpbGUgYnV0IHVzZXMgY29tbWVudHMgdG8gZW5jbG9zZSB0aGUgZ2VuZXJhdGVkIFxcXG4gICAgICAgY29kZVwiICk7XG4gICAgKFwiLW5vLWNvbG9yXCIsIEFyZy5DbGVhciB1c2VfY29sb3IsIFwiIERvbid0IHVzZSBjb2xvcnMgd2hlbiBwcmludGluZyBlcnJvcnNcIik7XG4gICAgKCBcIi1kaWZmLWNtZFwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gZGlmZl9jb21tYW5kIDo9IFNvbWUgcyksXG4gICAgICBcIiBEaWZmIGNvbW1hbmQgd2hlbiB1c2luZyBjb2RlIGV4cGVjdGF0aW9ucyAodXNlIC0gdG8gZGlzYWJsZSBkaWZmaW5nKVwiICk7XG4gICAgKCBcIi1wcmV0dHlcIixcbiAgICAgIEFyZy5TZXQgcHJldHR5LFxuICAgICAgXCIgSW5zdHJ1Y3QgY29kZSBnZW5lcmF0b3JzIHRvIGltcHJvdmUgdGhlIHByZXR0aW5lc3Mgb2YgdGhlIGdlbmVyYXRlZCBcXFxuICAgICAgIGNvZGVcIiApO1xuICAgIChcIi1zdHlsZXJcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT4gc3R5bGVyIDo9IFNvbWUgcyksIFwiIENvZGUgc3R5bGVyXCIpO1xuICAgICggXCItb3V0cHV0LW1ldGFkYXRhXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBvdXRwdXRfbWV0YWRhdGFfZmlsZW5hbWUgOj0gU29tZSBzKSxcbiAgICAgIFwiRklMRSBXaGVyZSB0byBzdG9yZSB0aGUgb3V0cHV0IG1ldGFkYXRhXCIgKTtcbiAgICAoIFwiLWNvcnJlY3RlZC1zdWZmaXhcIixcbiAgICAgIEFyZy5TZXRfc3RyaW5nIGNvcnJlY3RlZF9zdWZmaXgsXG4gICAgICBcIlNVRkZJWCBTdWZmaXggdG8gYXBwZW5kIHRvIGNvcnJlY3RlZCBmaWxlc1wiICk7XG4gIF1cblxubGV0IGdldF9hcmdzID8oc3RhbmRhbG9uZV9hcmdzID0gc3RhbmRhbG9uZV9hcmdzKSAoKSA9XG4gIHN0YW5kYWxvbmVfYXJncyBAIExpc3QucmV2ICFhcmdzXG5cbmxldCBzdGFuZGFsb25lX21haW4gKCkgPVxuICBsZXQgdXNhZ2UgPSBQcmludGYuc3ByaW50ZiBcIiVzIFtleHRyYV9hcmdzXSBbPGZpbGVzPl1cIiBleGVfbmFtZSBpblxuICBsZXQgYXJncyA9IGdldF9hcmdzICgpIGluXG4gIEFyZy5wYXJzZSAoQXJnLmFsaWduIGFyZ3MpIHNldF9pbnB1dCB1c2FnZTtcbiAgaW50ZXJwcmV0X21hc2sgKCk7XG4gIGlmICFyZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyB0aGVuIChcbiAgICBwcmludF90cmFuc2Zvcm1hdGlvbnMgKCk7XG4gICAgU3RkbGliLmV4aXQgMCk7XG4gIGlmICFyZXF1ZXN0X3ByaW50X3Bhc3NlcyB0aGVuIChcbiAgICBwcmludF9wYXNzZXMgKCk7XG4gICAgU3RkbGliLmV4aXQgMCk7XG4gIG1hdGNoICFpbnB1dCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCIlczogbm8gaW5wdXQgZmlsZSBnaXZlblxcbiUhXCIgZXhlX25hbWU7XG4gICAgICBTdGRsaWIuZXhpdCAyXG4gIHwgU29tZSBmbiAtPlxuICAgICAgbGV0IGtpbmQgPVxuICAgICAgICBtYXRjaCAha2luZCB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+IGtcbiAgICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICAgIG1hdGNoIEtpbmQub2ZfZmlsZW5hbWUgZm4gd2l0aFxuICAgICAgICAgICAgfCBTb21lIGsgLT4ga1xuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgICAgICAgIFwiJXM6IGRvbid0IGtub3cgd2hhdCB0byBkbyB3aXRoICclcycsIHVzZSAtaW1wbCBvciAtaW50Zi5cXG5cIlxuICAgICAgICAgICAgICAgICAgZXhlX25hbWUgZm47XG4gICAgICAgICAgICAgICAgU3RkbGliLmV4aXQgMilcbiAgICAgIGluXG4gICAgICBsZXQgaW5wdXRfbmFtZSwgcmVsb2NhdGUgPVxuICAgICAgICBtYXRjaCAhbG9jX2ZuYW1lIHdpdGggTm9uZSAtPiAoZm4sIGZhbHNlKSB8IFNvbWUgZm4gLT4gKGZuLCB0cnVlKVxuICAgICAgaW5cbiAgICAgIHByb2Nlc3NfZmlsZSBraW5kIGZuIH5pbnB1dF9uYW1lIH5yZWxvY2F0ZSB+b3V0cHV0X21vZGU6IW91dHB1dF9tb2RlXG4gICAgICAgIH5vdXRwdXQ6IW91dHB1dCB+ZW1iZWRfZXJyb3JzOiFlbWJlZF9lcnJvcnNcblxubGV0IHJld3JpdGVfYmluYXJ5X2FzdF9maWxlIGlucHV0X2ZuIG91dHB1dF9mbiA9XG4gIGxldCBpbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QgPSBsb2FkX2lucHV0X3J1bl9hc19wcHggaW5wdXRfZm4gaW5cbiAgbGV0IGFzdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgYXN0ID0gZXh0cmFjdF9jb29raWVzIGFzdCBpblxuICAgICAgbGV0IHRvb2xfbmFtZSA9IEFzdGxpYi5Bc3RfbWV0YWRhdGEudG9vbF9uYW1lICgpIGluXG4gICAgICBsZXQgaG9vayA9IENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcCBpblxuICAgICAgbGV0IGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gQ29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcCBpblxuICAgICAgcHJvY2Vzc19hc3QgYXN0IH5pbnB1dF9uYW1lIH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgIH5lbWJlZF9lcnJvcnM6dHJ1ZVxuICAgIHdpdGggZXhuIC0+IGV4bl90b19leHRlbnNpb24gZXhuIH5raW5kOihJbnRmX29yX2ltcGwua2luZCBhc3QpXG4gIGluXG4gIHdpdGhfb3V0cHV0IChTb21lIG91dHB1dF9mbikgfmJpbmFyeTp0cnVlIH5mOihmdW4gb2MgLT5cbiAgICAgIEFzdF9pby53cml0ZSBvYyB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9IH5hZGRfcHB4X2NvbnRleHQ6dHJ1ZSlcblxubGV0IHBhcnNlX2lucHV0IHBhc3NlZF9pbl9hcmdzIH52YWxpZF9hcmdzIH5pbmNvcnJlY3RfaW5wdXRfbXNnID1cbiAgdHJ5XG4gICAgQXJnLnBhcnNlX2FyZ3YgcGFzc2VkX2luX2FyZ3MgKEFyZy5hbGlnbiB2YWxpZF9hcmdzKVxuICAgICAgKGZ1biBfIC0+IHJhaXNlIChBcmcuQmFkIFwiYW5vbnltb3VzIGFyZ3VtZW50cyBub3QgYWNjZXB0ZWRcIikpXG4gICAgICBpbmNvcnJlY3RfaW5wdXRfbXNnXG4gIHdpdGhcbiAgfCBBcmcuQmFkIG1zZyAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZztcbiAgICAgIFN0ZGxpYi5leGl0IDJcbiAgfCBBcmcuSGVscCBtc2cgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXNcIiBtc2c7XG4gICAgICBTdGRsaWIuZXhpdCAwXG5cbmxldCBydW5fYXNfcHB4X3Jld3JpdGVyX21haW4gfnN0YW5kYWxvbmVfYXJncyB+dXNhZ2UgaW5wdXQgPVxuICBsZXQgdmFsaWRfYXJncyA9IGdldF9hcmdzIH5zdGFuZGFsb25lX2FyZ3MgKCkgaW5cbiAgbWF0Y2ggTGlzdC5yZXYgQEAgQXJyYXkudG9fbGlzdCBAQCBpbnB1dCB3aXRoXG4gIHwgb3V0cHV0X2ZuIDo6IGlucHV0X2ZuIDo6IGZsYWdzX2FuZF9wcm9nX25hbWVcbiAgICB3aGVuIExpc3QubGVuZ3RoIGZsYWdzX2FuZF9wcm9nX25hbWUgPiAwIC0+XG4gICAgICBsZXQgcHJvZ19uYW1lX2FuZF9mbGFncyA9IExpc3QucmV2IGZsYWdzX2FuZF9wcm9nX25hbWUgfD4gQXJyYXkub2ZfbGlzdCBpblxuICAgICAgcGFyc2VfaW5wdXQgcHJvZ19uYW1lX2FuZF9mbGFncyB+dmFsaWRfYXJncyB+aW5jb3JyZWN0X2lucHV0X21zZzp1c2FnZTtcbiAgICAgIGludGVycHJldF9tYXNrICgpO1xuICAgICAgcmV3cml0ZV9iaW5hcnlfYXN0X2ZpbGUgaW5wdXRfZm4gb3V0cHV0X2ZuO1xuICAgICAgU3RkbGliLmV4aXQgMFxuICB8IFsgaGVscDsgXyBdIHdoZW4gU3RyaW5nLmVxdWFsIGhlbHAgXCItaGVscFwiIHx8IFN0cmluZy5lcXVhbCBoZWxwIFwiLS1oZWxwXCIgLT5cbiAgICAgIHBhcnNlX2lucHV0IGlucHV0IH52YWxpZF9hcmdzIH5pbmNvcnJlY3RfaW5wdXRfbXNnOnVzYWdlO1xuICAgICAgYXNzZXJ0IGZhbHNlXG4gIHwgXyAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCJVc2FnZTogJXNcXG4lIVwiIHVzYWdlO1xuICAgICAgU3RkbGliLmV4aXQgMlxuXG5sZXQgc3RhbmRhbG9uZV9ydW5fYXNfcHB4X3Jld3JpdGVyICgpID1cbiAgbGV0IG4gPSBBcnJheS5sZW5ndGggU3RkbGliLlN5cy5hcmd2IGluXG4gIGxldCB1c2FnZSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCIlcyAtYXMtcHB4IFtleHRyYV9hcmdzXSA8aW5maWxlPiA8b3V0ZmlsZT5cIiBleGVfbmFtZVxuICBpblxuICBsZXQgYXJndiA9IEFycmF5Lm1ha2UgKG4gLSAxKSBcIlwiIGluXG4gIGFyZ3YuKDApIDwtIFN0ZGxpYi5TeXMuYXJndi4oMCk7XG4gIGZvciBpID0gMSB0byBuIC0gMiBkb1xuICAgIGFyZ3YuKGkpIDwtIFN0ZGxpYi5TeXMuYXJndi4oaSArIDEpXG4gIGRvbmU7XG4gIGxldCBzdGFuZGFsb25lX2FyZ3MgPVxuICAgIExpc3QubWFwIHN0YW5kYWxvbmVfYXJncyB+ZjooZnVuIChhcmcsIHNwZWMsIF9kb2MpIC0+XG4gICAgICAgIChhcmcsIHNwZWMsIFwiIFVudXNlZCB3aXRoIC1hcy1wcHhcIikpXG4gIGluXG4gIHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzIH51c2FnZSBhcmd2XG5cbmxldCBzdGFuZGFsb25lICgpID1cbiAgQXN0bGliLmluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaW5nX2Vudl92YXJzICgpO1xuICB0cnlcbiAgICBpZlxuICAgICAgQXJyYXkubGVuZ3RoIFN0ZGxpYi5TeXMuYXJndiA+PSAyXG4gICAgICAmJlxuICAgICAgbWF0Y2ggU3RkbGliLlN5cy5hcmd2LigxKSB3aXRoXG4gICAgICB8IFwiLWFzLXBweFwiIHwgXCItLWFzLXBweFwiIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIHRoZW4gc3RhbmRhbG9uZV9ydW5fYXNfcHB4X3Jld3JpdGVyICgpXG4gICAgZWxzZSBzdGFuZGFsb25lX21haW4gKCk7XG4gICAgU3RkbGliLmV4aXQgMFxuICB3aXRoIGV4biAtPlxuICAgIExvY2F0aW9uLnJlcG9ydF9leGNlcHRpb24gU3RkbGliLkZvcm1hdC5lcnJfZm9ybWF0dGVyIGV4bjtcbiAgICBTdGRsaWIuZXhpdCAxXG5cbmxldCBydW5fYXNfcHB4X3Jld3JpdGVyICgpID1cbiAgbGV0IHVzYWdlID0gUHJpbnRmLnNwcmludGYgXCIlcyBbZXh0cmFfYXJnc10gPGluZmlsZT4gPG91dGZpbGU+XCIgZXhlX25hbWUgaW5cbiAgbGV0IGlucHV0ID0gU3RkbGliLlN5cy5hcmd2IGluXG4gIHRyeSBydW5fYXNfcHB4X3Jld3JpdGVyX21haW4gfnN0YW5kYWxvbmVfYXJnczpbXSB+dXNhZ2UgaW5wdXRcbiAgd2l0aCBleG4gLT5cbiAgICBMb2NhdGlvbi5yZXBvcnRfZXhjZXB0aW9uIFN0ZGxpYi5Gb3JtYXQuZXJyX2Zvcm1hdHRlciBleG47XG4gICAgU3RkbGliLmV4aXQgMVxuXG5sZXQgcHJldHR5ICgpID0gIXByZXR0eVxuXG5sZXQgZW5hYmxlX2NoZWNrcyAoKSA9XG4gICgqIFdlIGRvIG5vdCBlbmFibGUgdGhlIGxvY2F0aW9ucyBjaGVjayBoZXJlLCB3ZSBjdXJyZW50bHkgcmVxdWlyZSB0aGF0IG9uZVxuICAgICB0byBiZSBzcGVjaWZpY2FsbHkgZW5hYmxlZC4gKilcbiAgcGVyZm9ybV9jaGVja3MgOj0gdHJ1ZTtcbiAgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyA6PSB0cnVlXG5cbmxldCBlbmFibGVfbG9jYXRpb25fY2hlY2sgKCkgPSBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayA6PSB0cnVlXG5sZXQgZGlzYWJsZV9sb2NhdGlvbl9jaGVjayAoKSA9IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIDo9IGZhbHNlXG5sZXQgbWFwX3N0cnVjdHVyZSBzdCA9IG1hcF9zdHJ1Y3R1cmUgc3RcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcblxubGV0IHVuZGVyc2NvcmVfYmluZGluZyBleHAgPVxuICBsZXQgbG9jID0gZXhwLnBleHBfbG9jIGluXG4gIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OihwcGF0X2FueSB+bG9jKSB+ZXhwcjpleHBcblxubGV0IHZhcnNfb2YgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtMb25naWRlbnQudCBMb2NhdGVkLnQgbGlzdF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgcGF0dGVybiBwYXR0IGFjYyA9XG4gICAgICBtYXRjaCBwYXR0LnBwYXRfZGVzYyB3aXRoXG4gICAgICB8IFBwYXRfdmFyIHYgLT4gTG9jYXRlZC5tYXAgKGZ1biB2YXIgLT4gTG9uZ2lkZW50LkxpZGVudCB2YXIpIHYgOjogYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjcGF0dGVybiBwYXR0IGFjY1xuICBlbmRcblxuKCogRm9yIGV2ZXJ5IFtsZXQgeCA9IC4uLl0gc3RydWN0dXJlIGl0ZW0sIGFkZCBhIFtsZXQgXyA9IHhdICopXG5sZXQgYWRkX2R1bW15X3VzZXJfZm9yX3ZhbHVlcyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmUgc3QgPVxuICAgICAgbGV0IHJlYyBsb29wIHN0IGFjYyA9XG4gICAgICAgIG1hdGNoIHN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgICAgICAgfCAoeyBwc3RyX2Rlc2MgPSBQc3RyX3ZhbHVlIChfLCB2YnMpOyBwc3RyX2xvYyA9IGxvYyB9IGFzIGl0ZW0pIDo6IHJlc3RcbiAgICAgICAgICAtPlxuICAgICAgICAgICAgbGV0IHZhcnMgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdCB2YnMgfmluaXQ6W10gfmY6KGZ1biBhY2MgdmIgLT5cbiAgICAgICAgICAgICAgICAgIHZhcnNfb2YjcGF0dGVybiB2Yi5wdmJfcGF0IGFjYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgaWduID1cbiAgICAgICAgICAgICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgICAgICAgKExpc3QucmV2X21hcCB2YXJzIH5mOihmdW4gdiAtPlxuICAgICAgICAgICAgICAgICAgICAgdW5kZXJzY29yZV9iaW5kaW5nIChwZXhwX2lkZW50IH5sb2M6di5sb2MgdikpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxvb3AgcmVzdCAoaWduIEAgKGl0ZW0gOjogYWNjKSlcbiAgICAgICAgfCBpdGVtIDo6IHJlc3QgLT4gbG9vcCByZXN0IChpdGVtIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wIChzdXBlciNzdHJ1Y3R1cmUgc3QpIFtdXG4gIGVuZFxuXG5sZXQgYmluZHNfbW9kdWxlX25hbWVzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbYm9vbF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgbWIgYWNjID1cbiAgICAgIG1hdGNoIG1iLnBtYl9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgIHwgTm9uZSAtPiBzdXBlciNtb2R1bGVfYmluZGluZyBtYiBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIG1kIGFjYyA9XG4gICAgICBtYXRjaCBtZC5wbWRfbmFtZS50eHQgd2l0aFxuICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICB8IE5vbmUgLT4gc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIG1kIGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfc3Vic3RpdHV0aW9uIG1zIF8gPVxuICAgICAgbWF0Y2ggbXMucG1zX25hbWUudHh0IHdpdGggKF8gOiBzdHJpbmcpIC0+IHRydWVcblxuICAgIG1ldGhvZCEgZnVuY3Rvcl9wYXJhbWV0ZXIgZnAgYWNjID1cbiAgICAgIG1hdGNoIGZwIHdpdGhcbiAgICAgIHwgVW5pdCAtPiBhY2NcbiAgICAgIHwgTmFtZWQgKG5hbWUsIF8pIC0+IChcbiAgICAgICAgICBtYXRjaCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2Z1bmN0b3JfcGFyYW1ldGVyIGZwIGFjYylcblxuICAgIG1ldGhvZCEgcGF0dGVybiBwYXQgYWNjID1cbiAgICAgIG1hdGNoIHBhdC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgfCBQcGF0X3VucGFjayBuYW1lIC0+IChcbiAgICAgICAgICBtYXRjaCBuYW1lLnR4dCB3aXRoIFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWUgfCBOb25lIC0+IGFjYylcbiAgICAgIHwgXyAtPiBzdXBlciNwYXR0ZXJuIHBhdCBhY2NcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiBleHByIGFjYyA9XG4gICAgICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfbGV0bW9kdWxlIChuYW1lLCBfLCBfKSAtPiAoXG4gICAgICAgICAgbWF0Y2ggbmFtZS50eHQgd2l0aFxuICAgICAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGV4cHIgYWNjKVxuICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb24gZXhwciBhY2NcbiAgZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBBc3RfYnVpbGRlci5EZWZhdWx0XG5cbigqIFtkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlXSAtLSBJZiB0cnVlLCBnZW5lcmF0ZWQgY29kZVxuICAgY29udGFpbnMgY29tcGlsZXIgYXR0cmlidXRlIHRvIGRpc2FibGUgdW51c2VkIHdhcm5pbmdzLCBpbnN0ZWFkIG9mXG4gICBpbnNlcnRpbmcgW2xldCBfID0gLi4uIF0uICopXG5sZXQgZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA9IHJlZiBmYWxzZVxubGV0IGtlZXBfdzMyX2ltcGwgPSByZWYgZmFsc2VcbmxldCBrZWVwX3czMl9pbnRmID0gcmVmIGZhbHNlXG5cbmxldCAoKSA9XG4gIGxldCBrZWVwX3czMl9zcGVjID1cbiAgICBTdGRsaWIuQXJnLlN5bWJvbFxuICAgICAgKCBbIFwiaW1wbFwiOyBcImludGZcIjsgXCJib3RoXCIgXSxcbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBcImltcGxcIiAtPiBrZWVwX3czMl9pbXBsIDo9IHRydWVcbiAgICAgICAgfCBcImludGZcIiAtPiBrZWVwX3czMl9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBcImJvdGhcIiAtPlxuICAgICAgICAgICAga2VlcF93MzJfaW1wbCA6PSB0cnVlO1xuICAgICAgICAgICAga2VlcF93MzJfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICBpblxuICBsZXQgY29udl93MzJfc3BlYyA9XG4gICAgU3RkbGliLkFyZy5TeW1ib2xcbiAgICAgICggWyBcImNvZGVcIjsgXCJhdHRyaWJ1dGVcIiBdLFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFwiY29kZVwiIC0+IGRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgOj0gZmFsc2VcbiAgICAgICAgfCBcImF0dHJpYnV0ZVwiIC0+IGRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgOj0gdHJ1ZVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgaW5cbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmcta2VlcC13MzJcIiBrZWVwX3czMl9zcGVjXG4gICAgfmRvYzpcIiBEbyBub3QgdHJ5IHRvIGRpc2FibGUgd2FybmluZyAzMiBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCI7XG4gIERyaXZlci5hZGRfYXJnIFwiLWRlcml2aW5nLWRpc2FibGUtdzMyLW1ldGhvZFwiIGNvbnZfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIEhvdyB0byBkaXNhYmxlIHdhcm5pbmcgMzIgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZVwiO1xuICBEcml2ZXIuYWRkX2FyZyBcIi10eXBlLWNvbnYta2VlcC13MzJcIiBrZWVwX3czMl9zcGVjXG4gICAgfmRvYzpcIiBEZXByZWNhdGVkLCB1c2UgLWRlcml2aW5nLWtlZXAtdzMyXCI7XG4gIERyaXZlci5hZGRfYXJnIFwiLXR5cGUtY29udi13MzJcIiBjb252X3czMl9zcGVjXG4gICAgfmRvYzpcIiBEZXByZWNhdGVkLCB1c2UgLWRlcml2aW5nLWRpc2FibGUtdzMyLW1ldGhvZFwiXG5cbmxldCBrZWVwX3czMl9pbXBsICgpID0gIWtlZXBfdzMyX2ltcGwgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGtlZXBfdzMyX2ludGYgKCkgPSAha2VlcF93MzJfaW50ZiB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93NjBfaW1wbCA9IHJlZiBmYWxzZVxubGV0IGtlZXBfdzYwX2ludGYgPSByZWYgZmFsc2VcblxubGV0ICgpID1cbiAgbGV0IGtlZXBfdzYwX3NwZWMgPVxuICAgIFN0ZGxpYi5BcmcuU3ltYm9sXG4gICAgICAoIFsgXCJpbXBsXCI7IFwiaW50ZlwiOyBcImJvdGhcIiBdLFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFwiaW1wbFwiIC0+IGtlZXBfdzYwX2ltcGwgOj0gdHJ1ZVxuICAgICAgICB8IFwiaW50ZlwiIC0+IGtlZXBfdzYwX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IFwiYm90aFwiIC0+XG4gICAgICAgICAgICBrZWVwX3c2MF9pbXBsIDo9IHRydWU7XG4gICAgICAgICAgICBrZWVwX3c2MF9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gIGluXG4gIERyaXZlci5hZGRfYXJnIFwiLWRlcml2aW5nLWtlZXAtdzYwXCIga2VlcF93NjBfc3BlY1xuICAgIH5kb2M6XCIgRG8gbm90IHRyeSB0byBkaXNhYmxlIHdhcm5pbmcgNjAgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZVwiXG5cbmxldCBrZWVwX3c2MF9pbXBsICgpID0gIWtlZXBfdzYwX2ltcGwgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGtlZXBfdzYwX2ludGYgKCkgPSAha2VlcF93NjBfaW50ZiB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgPSByZWYgT3B0aW9ucy5kZWZhdWx0X2FsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzXG5cbmxldCAoKSA9XG4gIERyaXZlci5hZGRfYXJnIFwiLXVudXNlZC1jb2RlLXdhcm5pbmdzXCJcbiAgICAoQm9vbCAoKCA6PSApIGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzKSlcbiAgICB+ZG9jOlwiXyBBbGxvdyBwcHggZGVyaXZlcnMgdG8gZW5hYmxlIHVudXNlZCBjb2RlIHdhcm5pbmdzXCJcblxubGV0IGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzICgpID0gIWFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzXG5cbm1vZHVsZSBBcmdzID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIEFzdF9wYXR0ZXJuIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEFzdF9wYXR0ZXJuXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgQXN0X3BhdHRlcm4udClcblxuICB0eXBlICdhIHBhcmFtID0ge1xuICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgcGF0dGVybiA6IChleHByZXNzaW9uLCAnYSkgQXN0X3BhdHRlcm4uUGFja2VkLnQ7XG4gICAgZGVmYXVsdCA6ICdhO1xuICB9XG5cbiAgbGV0IGFyZyBuYW1lIHBhdHRlcm4gPVxuICAgIHtcbiAgICAgIG5hbWU7XG4gICAgICBkZWZhdWx0ID0gTm9uZTtcbiAgICAgIHBhdHRlcm4gPSBBc3RfcGF0dGVybi5QYWNrZWQuY3JlYXRlIHBhdHRlcm4gKGZ1biB4IC0+IFNvbWUgeCk7XG4gICAgfVxuXG4gIGxldCBmbGFnIG5hbWUgPVxuICAgIGxldCBwYXR0ZXJuID0gcGV4cF9pZGVudCAobGlkZW50IChzdHJpbmcgbmFtZSkpIGluXG4gICAgeyBuYW1lOyBkZWZhdWx0ID0gZmFsc2U7IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5QYWNrZWQuY3JlYXRlIHBhdHRlcm4gdHJ1ZSB9XG5cbiAgdHlwZSAoXywgXykgdCA9XG4gICAgfCBOaWwgOiAoJ20sICdtKSB0XG4gICAgfCBDb25zIDogKCdtMSwgJ2EgLT4gJ20yKSB0ICogJ2EgcGFyYW0gLT4gKCdtMSwgJ20yKSB0XG5cbiAgbGV0IGVtcHR5ID0gTmlsXG4gIGxldCAoICs+ICkgYSBiID0gQ29ucyAoYSwgYilcblxuICBsZXQgcmVjIG5hbWVzIDogdHlwZSBhIGIuIChhLCBiKSB0IC0+IHN0cmluZyBsaXN0ID0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBbXVxuICAgIHwgQ29ucyAodCwgcCkgLT4gcC5uYW1lIDo6IG5hbWVzIHRcblxuICBtb2R1bGUgSW5zdGFuY2UgPSBzdHJ1Y3RcbiAgICB0eXBlIChfLCBfKSBpbnN0YW5jZSA9XG4gICAgICB8IElfbmlsIDogKCdtLCAnbSkgaW5zdGFuY2VcbiAgICAgIHwgSV9jb25zIDogKCdtMSwgJ2EgLT4gJ20yKSBpbnN0YW5jZSAqICdhIC0+ICgnbTEsICdtMikgaW5zdGFuY2VcblxuICAgIGxldCByZWMgY3JlYXRlIDpcbiAgICAgICAgdHlwZSBhIGIuIChhLCBiKSB0IC0+IChzdHJpbmcgKiBleHByZXNzaW9uKSBsaXN0IC0+IChhLCBiKSBpbnN0YW5jZSA9XG4gICAgIGZ1biBzcGVjIGFyZ3MgLT5cbiAgICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgICAgfCBOaWwgLT4gSV9uaWxcbiAgICAgIHwgQ29ucyAodCwgcCkgLT5cbiAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvY19vcHQgcC5uYW1lIGFyZ3Mgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHAuZGVmYXVsdFxuICAgICAgICAgICAgfCBTb21lIGV4cHIgLT4gQXN0X3BhdHRlcm4uUGFja2VkLnBhcnNlIHAucGF0dGVybiBleHByLnBleHBfbG9jIGV4cHJcbiAgICAgICAgICBpblxuICAgICAgICAgIElfY29ucyAoY3JlYXRlIHQgYXJncywgdmFsdWUpXG5cbiAgICBsZXQgcmVjIGFwcGx5IDogdHlwZSBhIGIuIChhLCBiKSBpbnN0YW5jZSAtPiBhIC0+IGIgPVxuICAgICBmdW4gdCBmIC0+IG1hdGNoIHQgd2l0aCBJX25pbCAtPiBmIHwgSV9jb25zICh0LCB4KSAtPiBhcHBseSB0IGYgeFxuICBlbmRcblxuICBsZXQgYXBwbHkgdCBhcmdzIGYgPSBJbnN0YW5jZS5hcHBseSAoSW5zdGFuY2UuY3JlYXRlIHQgYXJncykgZlxuZW5kXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgR2VuZXJhdG9ycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBpZ25vcmUgKF8gOiB0KSA9ICgpXG5cbnR5cGUgcGFyc2VkX2FyZ3MgPVxuICB8IEFyZ3Mgb2YgKHN0cmluZyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgfCBVbmtub3duX3N5bnRheCBvZiBMb2NhdGlvbi50ICogc3RyaW5nXG5cbnR5cGUgJ2l0ZW0gZGVyaXZlZF9jb2RlID0geyBpdGVtcyA6ICdpdGVtIGxpc3Q7IHVudXNlZF9jb2RlX3dhcm5pbmdzIDogYm9vbCB9XG5cbm1vZHVsZSBHZW5lcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSBkZXJpdmVyID0gdFxuXG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBUIDoge1xuICAgICAgICBzcGVjIDogKCdjLCAnYSkgQXJncy50O1xuICAgICAgICBnZW4gOiBjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPiAnYiAtPiAnYztcbiAgICAgICAgYXJnX25hbWVzIDogU3RyaW5nLlNldC50O1xuICAgICAgICBkZXBzIDogZGVyaXZlciBsaXN0O1xuICAgICAgICB1bnVzZWRfY29kZV93YXJuaW5ncyA6IGJvb2w7XG4gICAgICB9XG4gICAgICAgIC0+ICgnYSwgJ2IpIHRcblxuICBsZXQgZGVwcyAoVCB0KSA9IHQuZGVwc1xuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIGxldCBtYWtlID9hdHRyaWJ1dGVzOihfID0gW10pID8oZGVwcyA9IFtdKSA/KHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UpXG4gICAgICAgIHNwZWMgZ2VuID1cbiAgICAgIGxldCBhcmdfbmFtZXMgPSBTdHJpbmcuU2V0Lm9mX2xpc3QgKEFyZ3MubmFtZXMgc3BlYykgaW5cbiAgICAgIFQgeyBzcGVjOyBnZW47IGFyZ19uYW1lczsgZGVwczsgdW51c2VkX2NvZGVfd2FybmluZ3MgfVxuXG4gICAgbGV0IG1ha2Vfbm9hcmcgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIGdlbiA9XG4gICAgICBtYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBBcmdzLmVtcHR5IGdlblxuICBlbmRcblxuICBsZXQgbWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3Mgc3BlYyBnZW4gPVxuICAgIFYyLm1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIHNwZWNcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLndpdGhfbG9jX2FuZF9wYXRoIGdlbilcblxuICBsZXQgbWFrZV9ub2FyZyA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgZ2VuID1cbiAgICBtYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBBcmdzLmVtcHR5IGdlblxuXG4gIGxldCBtZXJnZV9hY2NlcHRlZF9hcmdzIGwgPVxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIHwgVCB0IDo6IHJlc3QgLT4gbG9vcCAoU3RyaW5nLlNldC51bmlvbiBhY2MgdC5hcmdfbmFtZXMpIHJlc3RcbiAgICBpblxuICAgIGxvb3AgU3RyaW5nLlNldC5lbXB0eSBsXG5cbiAgbGV0IGNoZWNrX2FyZ3VtZW50cyBuYW1lIGdlbmVyYXRvcnMgKGFyZ3MgOiAoc3RyaW5nICogZXhwcmVzc2lvbikgbGlzdCkgPVxuICAgIGxldCBlbXB0eV9sYWJlbF9lcnJvciA9XG4gICAgICBMaXN0LmZpbHRlcl9tYXAgYXJncyB+ZjooZnVuIChsYWJlbCwgZSkgLT5cbiAgICAgICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgbGFiZWwgdGhlblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6IGdlbmVyYXRvciBhcmd1bWVudHMgbXVzdCBiZSBsYWJlbGxlZFwiKVxuICAgICAgICAgIGVsc2UgTm9uZSlcbiAgICBpblxuICAgIGxldCBkdXBsaWNhdGVfYXJndW1lbnRfZXJyb3IgPVxuICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAoTGlzdC5maW5kX2FfZHVwIGFyZ3MgfmNvbXBhcmU6KGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikpXG4gICAgICAgIH5mOihmdW4gKGxhYmVsLCBlKSAtPlxuICAgICAgICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzplLnBleHBfbG9jXG4gICAgICAgICAgICBcIlBweGxpYi5EZXJpdmluZzogYXJndW1lbnQgbGFiZWxsZWQgJyVzJyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlXCJcbiAgICAgICAgICAgIGxhYmVsKVxuICAgICAgfD4gT3B0aW9uLnRvX2xpc3RcbiAgICBpblxuICAgIGxldCBhY2NlcHRlZF9hcmdzID0gbWVyZ2VfYWNjZXB0ZWRfYXJncyBnZW5lcmF0b3JzIGluXG4gICAgbGV0IHVuYWNjZXB0ZWRfYXJndW1lbnQgPVxuICAgICAgTGlzdC5maWx0ZXJfbWFwIGFyZ3MgfmY6KGZ1biAobGFiZWwsIGUpIC0+XG4gICAgICAgICAgaWYgbm90IChTdHJpbmcuU2V0Lm1lbSBsYWJlbCBhY2NlcHRlZF9hcmdzKSB0aGVuXG4gICAgICAgICAgICBsZXQgc3BlbGxjaGVja19tc2cgPVxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFNwZWxsY2hlY2suc3BlbGxjaGVjayAoU3RyaW5nLlNldC5lbGVtZW50cyBhY2NlcHRlZF9hcmdzKSBsYWJlbFxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgIHwgU29tZSBzIC0+IFwiLlxcblwiIF4gc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzplLnBleHBfbG9jXG4gICAgICAgICAgICAgICAgIFwiUHB4bGliLkRlcml2aW5nOiBnZW5lcmF0b3IgJyVzJyBkb2Vzbid0IGFjY2VwdCBhcmd1bWVudCBcXFxuICAgICAgICAgICAgICAgICAgJyVzJyVzXCJcbiAgICAgICAgICAgICAgICAgbmFtZSBsYWJlbCBzcGVsbGNoZWNrX21zZylcbiAgICAgICAgICBlbHNlIE5vbmUpXG4gICAgaW5cbiAgICBsZXQgZXJyb3JzID1cbiAgICAgIGVtcHR5X2xhYmVsX2Vycm9yIEAgZHVwbGljYXRlX2FyZ3VtZW50X2Vycm9yIEAgdW5hY2NlcHRlZF9hcmd1bWVudFxuICAgIGluXG4gICAgaWYgTGlzdC5sZW5ndGggZXJyb3JzID0gMCB0aGVuIE9rICgpIGVsc2UgRXJyb3IgZXJyb3JzXG5cbiAgbGV0IGFwcGx5IChUIHQpIH5uYW1lOl8gfmN0eHQgeCBhcmdzID0gQXJncy5hcHBseSB0LnNwZWMgYXJncyAodC5nZW4gfmN0eHQgeClcblxuICBsZXQgYXBwbHlfYWxsIH5jdHh0IGVudHJ5IChuYW1lLCBnZW5lcmF0b3JzLCBhcmdzKSA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgY2hlY2tfYXJndW1lbnRzIG5hbWUudHh0IGdlbmVyYXRvcnMgYXJncyA+PnwgZnVuICgpIC0+XG4gICAgTGlzdC5tYXAgZ2VuZXJhdG9ycyB+ZjooZnVuIChUIHQpIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBpdGVtcyA9IGFwcGx5IChUIHQpIH5uYW1lOm5hbWUudHh0IH5jdHh0IGVudHJ5IGFyZ3M7XG4gICAgICAgICAgdW51c2VkX2NvZGVfd2FybmluZ3MgPSB0LnVudXNlZF9jb2RlX3dhcm5pbmdzO1xuICAgICAgICB9KVxuXG4gIGxldCBhcHBseV9hbGwgfmN0eHQgZW50cnkgZ2VuZXJhdG9ycyBleHRfdG9faXRlbSA9XG4gICAgbGV0IGwgPSBMaXN0Lm1hcCBnZW5lcmF0b3JzIH5mOihhcHBseV9hbGwgfmN0eHQgZW50cnkpIGluXG4gICAgbGV0IGwxLCBsZXJyID1cbiAgICAgIExpc3QucGFydGl0aW9uX21hcCAoZnVuY3Rpb24gT2sgZSAtPiBMZWZ0IGUgfCBFcnJvciBlIC0+IFJpZ2h0IGUpIGxcbiAgICBpblxuICAgIGxldCBsZXJyID1cbiAgICAgIExpc3QuY29uY2F0IGxlcnJcbiAgICAgIHw+IExpc3QubWFwIH5mOihmdW4gZXJyIC0+IGV4dF90b19pdGVtIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgaW5cbiAgICBMaXN0LmNvbmNhdCBsMSBAIFsgeyBpdGVtcyA9IGxlcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfSBdXG5lbmRcblxubW9kdWxlIERlcml2ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFjdHVhbF9kZXJpdmVyID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgbmFtZSA6IHN0cmluZztcbiAgICAgIHN0cl90eXBlX2RlY2wgOlxuICAgICAgICAoc3RydWN0dXJlLCByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdCkgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc3RyX3R5cGVfZXh0IDogKHN0cnVjdHVyZSwgdHlwZV9leHRlbnNpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHN0cl9leGNlcHRpb24gOiAoc3RydWN0dXJlLCB0eXBlX2V4Y2VwdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc3RyX21vZHVsZV90eXBlX2RlY2wgOlxuICAgICAgICAoc3RydWN0dXJlLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX3R5cGVfZGVjbCA6XG4gICAgICAgIChzaWduYXR1cmUsIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0KSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfdHlwZV9leHQgOiAoc2lnbmF0dXJlLCB0eXBlX2V4dGVuc2lvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX2V4Y2VwdGlvbiA6IChzaWduYXR1cmUsIHR5cGVfZXhjZXB0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbCA6XG4gICAgICAgIChzaWduYXR1cmUsIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBleHRlbnNpb24gOlxuICAgICAgICAobG9jOkxvY2F0aW9uLnQgLT4gcGF0aDpzdHJpbmcgLT4gY29yZV90eXBlIC0+IGV4cHJlc3Npb24pIG9wdGlvbjtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBBbGlhcyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIHN0cl90eXBlX2RlY2wgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHN0cl90eXBlX2V4dCA6IHN0cmluZyBsaXN0O1xuICAgICAgc3RyX2V4Y2VwdGlvbiA6IHN0cmluZyBsaXN0O1xuICAgICAgc3RyX21vZHVsZV90eXBlX2RlY2wgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ190eXBlX2RlY2wgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ190eXBlX2V4dCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX2V4Y2VwdGlvbiA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2wgOiBzdHJpbmcgbGlzdDtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBGaWVsZCA9IHN0cnVjdFxuICAgIHR5cGUga2luZCA9IFN0ciB8IFNpZ1xuXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0ge1xuICAgICAgbmFtZSA6IHN0cmluZztcbiAgICAgIGtpbmQgOiBraW5kO1xuICAgICAgZ2V0IDogQWN0dWFsX2Rlcml2ZXIudCAtPiAoJ2EsICdiKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBnZXRfc2V0IDogQWxpYXMudCAtPiBzdHJpbmcgbGlzdDtcbiAgICB9XG5cbiAgICBsZXQgc3RyX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcInR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzdHJfdHlwZV9leHQgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJ0eXBlIGV4dGVuc2lvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9leHQpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZXh0KTtcbiAgICAgIH1cblxuICAgIGxldCBzdHJfZXhjZXB0aW9uID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwiZXhjZXB0aW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl9leGNlcHRpb24pO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX2V4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICBsZXQgc3RyX21vZHVsZV90eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJtb2R1bGUgdHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSB0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZGVjbCk7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX3R5cGVfZXh0ID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIHR5cGUgZXh0ZW5zaW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2V4dCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9leHQpO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ19leGNlcHRpb24gPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgZXhjZXB0aW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnNpZ19leGNlcHRpb24pO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc2lnX2V4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX21vZHVsZV90eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgbW9kdWxlIHR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc2lnX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgfVxuICBlbmRcblxuICB0eXBlIHQgPSBBY3R1YWxfZGVyaXZlciBvZiBBY3R1YWxfZGVyaXZlci50IHwgQWxpYXMgb2YgQWxpYXMudFxuICB0eXBlIFBweF9kZXJpdmVycy5kZXJpdmVyICs9IFQgb2YgdFxuXG4gIGxldCBkZXJpdmVycyAoKSA9XG4gICAgTGlzdC5maWx0ZXJfbWFwIChQcHhfZGVyaXZlcnMuZGVyaXZlcnMgKCkpIH5mOihmdW5jdGlvblxuICAgICAgfCBuYW1lLCBUIHQgLT4gU29tZSAobmFtZSwgdClcbiAgICAgIHwgXyAtPiBOb25lKVxuXG4gIGV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkIG9mIHN0cmluZ1xuXG4gIGxldCByZXNvbHZlX2FjdHVhbF9kZXJpdmVycyAoZmllbGQgOiAoXywgXykgRmllbGQudCkgbmFtZSA9XG4gICAgbGV0IHJlYyBsb29wIG5hbWUgY29sbGVjdGVkID1cbiAgICAgIGlmXG4gICAgICAgIExpc3QuZXhpc3RzIGNvbGxlY3RlZCB+ZjooZnVuIChkIDogQWN0dWFsX2Rlcml2ZXIudCkgLT5cbiAgICAgICAgICAgIFN0cmluZy5lcXVhbCBkLm5hbWUgbmFtZSlcbiAgICAgIHRoZW4gY29sbGVjdGVkXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIFBweF9kZXJpdmVycy5sb29rdXAgbmFtZSB3aXRoXG4gICAgICAgIHwgU29tZSAoVCAoQWN0dWFsX2Rlcml2ZXIgZHJ2KSkgLT4gZHJ2IDo6IGNvbGxlY3RlZFxuICAgICAgICB8IFNvbWUgKFQgKEFsaWFzIGFsaWFzKSkgLT5cbiAgICAgICAgICAgIGxldCBzZXQgPSBmaWVsZC5nZXRfc2V0IGFsaWFzIGluXG4gICAgICAgICAgICBMaXN0LmZvbGRfcmlnaHQgc2V0IH5pbml0OmNvbGxlY3RlZCB+Zjpsb29wXG4gICAgICAgIHwgXyAtPiByYWlzZSAoTm90X3N1cHBvcnRlZCBuYW1lKVxuICAgIGluXG4gICAgTGlzdC5yZXYgKGxvb3AgbmFtZSBbXSlcblxuICBsZXQgcmVzb2x2ZV9pbnRlcm5hbCAoZmllbGQgOiAoXywgXykgRmllbGQudCkgbmFtZSA9XG4gICAgTGlzdC5tYXAgKHJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIGZpZWxkIG5hbWUpIH5mOihmdW4gZHJ2IC0+XG4gICAgICAgIG1hdGNoIGZpZWxkLmdldCBkcnYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKE5vdF9zdXBwb3J0ZWQgbmFtZSlcbiAgICAgICAgfCBTb21lIGcgLT4gKGRydi5uYW1lLCBnKSlcblxuICBsZXQgc3VwcG9ydGVkX2ZvciBmaWVsZCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKGRlcml2ZXJzICgpKSB+aW5pdDpTdHJpbmcuU2V0LmVtcHR5IH5mOihmdW4gYWNjIChuYW1lLCBfKSAtPlxuICAgICAgICBtYXRjaCByZXNvbHZlX2ludGVybmFsIGZpZWxkIG5hbWUgd2l0aFxuICAgICAgICB8IF8gLT4gU3RyaW5nLlNldC5hZGQgbmFtZSBhY2NcbiAgICAgICAgfCBleGNlcHRpb24gTm90X3N1cHBvcnRlZCBfIC0+IGFjYylcbiAgICB8PiBTdHJpbmcuU2V0LmVsZW1lbnRzXG5cbiAgbGV0IG5vdF9zdXBwb3J0ZWQgKGZpZWxkIDogKF8sIF8pIEZpZWxkLnQpID8oc3BlbGxjaGVjayA9IHRydWUpIG5hbWUgPVxuICAgIGxldCBzcGVsbGNoZWNrX21zZyA9XG4gICAgICBpZiBzcGVsbGNoZWNrIHRoZW5cbiAgICAgICAgbWF0Y2ggU3BlbGxjaGVjay5zcGVsbGNoZWNrIChzdXBwb3J0ZWRfZm9yIGZpZWxkKSBuYW1lLnR4dCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBzIC0+IFwiLlxcblwiIF4gc1xuICAgICAgZWxzZSBcIlwiXG4gICAgaW5cbiAgICBMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6bmFtZS5sb2NcbiAgICAgIFwiUHB4bGliLkRlcml2aW5nOiAnJXMnIGlzIG5vdCBhIHN1cHBvcnRlZCAlcyBkZXJpdmluZyBnZW5lcmF0b3Ilc1wiXG4gICAgICBuYW1lLnR4dCBmaWVsZC5uYW1lIHNwZWxsY2hlY2tfbXNnXG5cbiAgbGV0IHJlc29sdmUgZmllbGQgbmFtZSA9XG4gICAgdHJ5IE9rIChyZXNvbHZlX2ludGVybmFsIGZpZWxkIG5hbWUudHh0KVxuICAgIHdpdGggTm90X3N1cHBvcnRlZCBuYW1lJyAtPlxuICAgICAgRXJyb3IgKG5vdF9zdXBwb3J0ZWQgZmllbGQgfnNwZWxsY2hlY2s6KFN0cmluZy5lcXVhbCBuYW1lLnR4dCBuYW1lJykgbmFtZSlcblxuICBsZXQgcmVzb2x2ZV9hbGwgZmllbGQgZGVyaXZlcnMgPVxuICAgIGxldCBkZXJpdmVyc19hbmRfYXJncywgZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzID1cbiAgICAgIExpc3QucGFydGl0aW9uX21hcFxuICAgICAgICAoZnVuIChuYW1lLCBhcmdzKSAtPlxuICAgICAgICAgIG1hdGNoIFBweF9kZXJpdmVycy5sb29rdXAgbmFtZS50eHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFaXRoZXIuUmlnaHQgKG5vdF9zdXBwb3J0ZWQgZmllbGQgbmFtZSlcbiAgICAgICAgICB8IFNvbWUgKFQgXykgLT4gKFxuICAgICAgICAgICAgICAoKiBJdCdzIG9uZSBvZiBvdXJzLCBwYXJzZSB0aGUgYXJndW1lbnRzIG5vdy4gV2UgY2FuJ3QgZG8gaXQgYmVmb3JlIHNpbmNlXG4gICAgICAgICAgICAgICAgIHBweF9kZXJpdmluZyB1c2VzIGEgZGlmZmVyZW50IHN5bnRheCBmb3IgYXJndW1lbnRzLiAqKVxuICAgICAgICAgICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgICAgICAgfCBBcmdzIGwgLT4gRWl0aGVyLkxlZnQgKFNvbWUgKG5hbWUsIGwpKVxuICAgICAgICAgICAgICB8IFVua25vd25fc3ludGF4IChsb2MsIG1zZykgLT5cbiAgICAgICAgICAgICAgICAgIEVpdGhlci5SaWdodFxuICAgICAgICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jIFwiUHB4bGliLkRlcml2aW5nOiAlc1wiIG1zZykpXG4gICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgKCogSXQncyBub3Qgb25lIG9mIG91cnMsIGlnbm9yZSBpdC4gKilcbiAgICAgICAgICAgICAgRWl0aGVyLkxlZnQgTm9uZSlcbiAgICAgICAgZGVyaXZlcnNcbiAgICAgIHw+IGZ1biAobDEsIGwyKSAtPiAoTGlzdC5maWx0ZXJfb3B0IGwxLCBsMilcbiAgICBpblxuICAgICgqIFNldCBvZiBhY3R1YWwgZGVyaXZlciBuYW1lcyAqKVxuICAgIGxldCBzZWVuID0gSGFzaHRibC5jcmVhdGUgMTYgaW5cbiAgICBsZXQgcmVzdWx0LCBkZXBfZXJyb3JzID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IH5pbml0OihbXSwgW10pIGRlcml2ZXJzX2FuZF9hcmdzXG4gICAgICAgIH5mOihmdW4gKHJlc3VsdCwgZXJyb3JzKSAobmFtZSwgYXJncykgLT5cbiAgICAgICAgICBtYXRjaCByZXNvbHZlIGZpZWxkIG5hbWUgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgZSAtPiAocmVzdWx0LCBlcnJvcnMgQCBbIGUgXSlcbiAgICAgICAgICB8IE9rIG5hbWVkX2dlbmVyYXRvcnMgLT5cbiAgICAgICAgICAgICAgbGV0IGxfZXJyID1cbiAgICAgICAgICAgICAgICBMaXN0LmNvbmNhdF9tYXAgbmFtZWRfZ2VuZXJhdG9yc1xuICAgICAgICAgICAgICAgICAgfmY6KGZ1biAoYWN0dWFsX2Rlcml2ZXJfbmFtZSwgZ2VuKSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZHVwX2Vycm9yID1cbiAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9ucy5mYWlsX29uX2R1cGxpY2F0ZV9kZXJpdmVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgJiYgSGFzaHRibC5tZW0gc2VlbiBhY3R1YWxfZGVyaXZlcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRlcml2ZXIgJXMgYXBwZWFycyB0d2ljZVwiIGFjdHVhbF9kZXJpdmVyX25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBbXVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbF9lcnIgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuY29uY2F0X21hcCAoR2VuZXJhdG9yLmRlcHMgZ2VuKSB+ZjooZnVuIGRlcCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZpbHRlcl9tYXAgKHJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIGZpZWxkIGRlcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuIGRydiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRlcF9uYW1lID0gZHJ2Lm5hbWUgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAoSGFzaHRibC5tZW0gc2VlbiBkZXBfbmFtZSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGVyaXZlciAlcyBpcyBuZWVkZWQgZm9yICVzLCB5b3UgbmVlZCB0byBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgaXQgYmVmb3JlIGluIHRoZSBsaXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBfbmFtZSBuYW1lLnR4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgTm9uZSkpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIEhhc2h0Ymwuc2V0IHNlZW4gfmtleTphY3R1YWxfZGVyaXZlcl9uYW1lIH5kYXRhOigpO1xuICAgICAgICAgICAgICAgICAgICBkdXBfZXJyb3IgQCBsX2VycilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCByZXN1bHQgQCBbIChuYW1lLCBMaXN0Lm1hcCBuYW1lZF9nZW5lcmF0b3JzIH5mOnNuZCwgYXJncykgXSxcbiAgICAgICAgICAgICAgICBlcnJvcnMgQCBsX2VyciApKVxuICAgIGluXG4gICAgKHJlc3VsdCwgZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIEAgZGVwX2Vycm9ycylcblxuICBsZXQgYWRkID9zdHJfdHlwZV9kZWNsID9zdHJfdHlwZV9leHQgP3N0cl9leGNlcHRpb24gP3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgICA/c2lnX3R5cGVfZGVjbCA/c2lnX3R5cGVfZXh0ID9zaWdfZXhjZXB0aW9uID9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgP2V4dGVuc2lvbiBuYW1lID1cbiAgICBsZXQgYWN0dWFsX2Rlcml2ZXIgOiBBY3R1YWxfZGVyaXZlci50ID1cbiAgICAgIHtcbiAgICAgICAgbmFtZTtcbiAgICAgICAgc3RyX3R5cGVfZGVjbDtcbiAgICAgICAgc3RyX3R5cGVfZXh0O1xuICAgICAgICBzdHJfZXhjZXB0aW9uO1xuICAgICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZXh0O1xuICAgICAgICBzaWdfZXhjZXB0aW9uO1xuICAgICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgICAgZXh0ZW5zaW9uO1xuICAgICAgfVxuICAgIGluXG4gICAgUHB4X2Rlcml2ZXJzLnJlZ2lzdGVyIG5hbWUgKFQgKEFjdHVhbF9kZXJpdmVyIGFjdHVhbF9kZXJpdmVyKSk7XG4gICAgKG1hdGNoIGV4dGVuc2lvbiB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGYgLT5cbiAgICAgICAgbGV0IGV4dGVuc2lvbiA9XG4gICAgICAgICAgRXh0ZW5zaW9uLmRlY2xhcmUgbmFtZSBFeHByZXNzaW9uIEFzdF9wYXR0ZXJuLihwdHlwIF9fKSBmXG4gICAgICAgIGluXG4gICAgICAgIERyaXZlci5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvblxuICAgICAgICAgIChcIlBweGxpYi5EZXJpdmluZy5cIiBeIG5hbWUpXG4gICAgICAgICAgfnJ1bGVzOlsgQ29udGV4dF9mcmVlLlJ1bGUuZXh0ZW5zaW9uIGV4dGVuc2lvbiBdKTtcbiAgICBuYW1lXG5cbiAgbGV0IGFkZF9hbGlhcyBuYW1lID9zdHJfdHlwZV9kZWNsID9zdHJfdHlwZV9leHQgP3N0cl9leGNlcHRpb25cbiAgICAgID9zdHJfbW9kdWxlX3R5cGVfZGVjbCA/c2lnX3R5cGVfZGVjbCA/c2lnX3R5cGVfZXh0ID9zaWdfZXhjZXB0aW9uXG4gICAgICA/c2lnX21vZHVsZV90eXBlX2RlY2wgc2V0ID1cbiAgICBsZXQgYWxpYXMgOiBBbGlhcy50ID1cbiAgICAgIGxldCBnZXQgPSBmdW5jdGlvbiBOb25lIC0+IHNldCB8IFNvbWUgc2V0IC0+IHNldCBpblxuICAgICAge1xuICAgICAgICBzdHJfdHlwZV9kZWNsID0gZ2V0IHN0cl90eXBlX2RlY2w7XG4gICAgICAgIHN0cl90eXBlX2V4dCA9IGdldCBzdHJfdHlwZV9leHQ7XG4gICAgICAgIHN0cl9leGNlcHRpb24gPSBnZXQgc3RyX2V4Y2VwdGlvbjtcbiAgICAgICAgc3RyX21vZHVsZV90eXBlX2RlY2wgPSBnZXQgc3RyX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2RlY2wgPSBnZXQgc2lnX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZXh0ID0gZ2V0IHNpZ190eXBlX2V4dDtcbiAgICAgICAgc2lnX2V4Y2VwdGlvbiA9IGdldCBzaWdfZXhjZXB0aW9uO1xuICAgICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbCA9IGdldCBzaWdfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgIH1cbiAgICBpblxuICAgIFBweF9kZXJpdmVycy5yZWdpc3RlciBuYW1lIChUIChBbGlhcyBhbGlhcykpO1xuICAgIG5hbWVcbmVuZFxuXG5sZXQgYWRkID0gRGVyaXZlci5hZGRcbmxldCBhZGRfYWxpYXMgPSBEZXJpdmVyLmFkZF9hbGlhc1xuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFtAQGRlcml2aW5nIF0gcGFyc2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBpbnZhbGlkX3dpdGggfmxvYyA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiaW52YWxpZCBbQEBkZXJpdmluZyBdIGF0dHJpYnV0ZSBzeW50YXhcIlxuXG5sZXQgZ2VuZXJhdG9yX25hbWVfb2ZfaWQgbG9jIGlkID1cbiAgbWF0Y2ggTG9uZ2lkZW50LmZsYXR0ZW5fZXhuIGlkIHdpdGhcbiAgfCBsIC0+IHsgbG9jOyB0eHQgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgbCB9XG4gIHwgZXhjZXB0aW9uIF8gLT4gaW52YWxpZF93aXRoIH5sb2NcblxuZXhjZXB0aW9uIFVua25vd25fc3ludGF4IG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxubGV0IHBhcnNlX2FyZ3VtZW50cyBsID1cbiAgdHJ5XG4gICAgQXJnc1xuICAgICAgKG1hdGNoIGwgd2l0aFxuICAgICAgfCBbIChOb2xhYmVsLCBlKSBdIC0+IChcbiAgICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQZXhwX3JlY29yZCAoZmllbGRzLCBOb25lKSAtPlxuICAgICAgICAgICAgICBMaXN0Lm1hcCBmaWVsZHMgfmY6KGZ1biAoaWQsIGV4cHIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgbmFtZSA9XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGlkLnR4dCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTGlkZW50IHMgLT4gc1xuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFVua25vd25fc3ludGF4IChpZC5sb2MsIFwic2ltcGxlIGlkZW50aWZpZXIgZXhwZWN0ZWRcIikpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKG5hbWUsIGV4cHIpKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICByYWlzZV9ub3RyYWNlXG4gICAgICAgICAgICAgICAgKFVua25vd25fc3ludGF4XG4gICAgICAgICAgICAgICAgICAgKCBlLnBleHBfbG9jLFxuICAgICAgICAgICAgICAgICAgICAgXCJub24tb3B0aW9uYWwgbGFiZWxsZWQgYXJndW1lbnQgb3IgcmVjb3JkIGV4cGVjdGVkXCIgKSkpXG4gICAgICB8IGwgLT5cbiAgICAgICAgICBMaXN0Lm1hcCBsIH5mOihmdW4gKGxhYmVsLCBleHByKSAtPlxuICAgICAgICAgICAgICBtYXRjaCBsYWJlbCB3aXRoXG4gICAgICAgICAgICAgIHwgTGFiZWxsZWQgcyAtPiAocywgZXhwcilcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICByYWlzZV9ub3RyYWNlXG4gICAgICAgICAgICAgICAgICAgIChVbmtub3duX3N5bnRheFxuICAgICAgICAgICAgICAgICAgICAgICAoZXhwci5wZXhwX2xvYywgXCJub24tb3B0aW9uYWwgbGFiZWxsZWQgYXJndW1lbnQgZXhwZWN0ZWRcIikpKSlcbiAgd2l0aCBVbmtub3duX3N5bnRheCAobG9jLCBtc2cpIC0+IFVua25vd25fc3ludGF4IChsb2MsIG1zZylcblxubGV0IG1rX2Rlcml2aW5nX2F0dHIgY29udGV4dCB+cHJlZml4IH5zdWZmaXggPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIChwcmVmaXggXiBcImRlcml2aW5nXCIgXiBzdWZmaXgpXG4gICAgY29udGV4dFxuICAgIEFzdF9wYXR0ZXJuLihcbiAgICAgIGxldCBnZW5lcmF0b3JfbmFtZSAoKSA9XG4gICAgICAgIG1hcCcgKHBleHBfaWRlbnQgX18pIH5mOihmdW4gbG9jIGYgaWQgLT5cbiAgICAgICAgICAgIGYgKGdlbmVyYXRvcl9uYW1lX29mX2lkIGxvYyBpZCkpXG4gICAgICBpblxuICAgICAgbGV0IGdlbmVyYXRvciAoKSA9XG4gICAgICAgIG1hcCAoZ2VuZXJhdG9yX25hbWUgKCkpIH5mOihmdW4gZiB4IC0+IGYgKHgsIEFyZ3MgW10pKVxuICAgICAgICB8fHwgcGFjazJcbiAgICAgICAgICAgICAgKHBleHBfYXBwbHkgKGdlbmVyYXRvcl9uYW1lICgpKVxuICAgICAgICAgICAgICAgICAobWFwMSAobWFueSBfXykgfmY6cGFyc2VfYXJndW1lbnRzKSlcbiAgICAgIGluXG4gICAgICBsZXQgZ2VuZXJhdG9ycyA9XG4gICAgICAgIHBleHBfdHVwbGUgKG1hbnkgKGdlbmVyYXRvciAoKSkpXG4gICAgICAgIHx8fCBtYXAgKGdlbmVyYXRvciAoKSkgfmY6KGZ1biBmIHggLT4gZiBbIHggXSlcbiAgICAgIGluXG4gICAgICBwc3RyIChwc3RyX2V2YWwgZ2VuZXJhdG9ycyBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVW51c2VkIHdhcm5pbmcgc3R1ZmYgKyBsb2NhdGlvbnMgY2hlY2sgc2lsZW5jaW5nICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IGRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIHdhcm5pbmdzID1cbiAgbGV0IGxvYyA9IExvY2F0aW9uLm5vbmUgaW5cbiAgbGV0IHN0cmluZyA9XG4gICAgTGlzdC5zb3J0IHdhcm5pbmdzIH5jbXA6SW50LmNvbXBhcmVcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHdhcm5pbmcgLT4gXCItXCIgXiBJbnQudG9fc3RyaW5nIHdhcm5pbmcpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCJcbiAgaW5cbiAge1xuICAgIGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC53YXJuaW5nXCI7IGxvYyB9O1xuICAgIGF0dHJfcGF5bG9hZCA9IFBTdHIgWyBwc3RyX2V2YWwgfmxvYyAoZXN0cmluZyB+bG9jIHN0cmluZykgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG5sZXQgaW5saW5lX2RvY19hdHRyID1cbiAgbGV0IGxvYyA9IExvY2F0aW9uLm5vbmUgaW5cbiAge1xuICAgIGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC5kb2NcIjsgbG9jIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2MgXCJAaW5saW5lXCIpIFtdIF07XG4gICAgYXR0cl9sb2MgPSBsb2M7XG4gIH1cblxuKCogd3JhcCBhIHN0cnVjdHVyZSBpbiBleHRyYSBhdHRyaWJ1dGVzICopXG5sZXQgd3JhcF9zdHIgfmxvYyB+aGlkZSBzdCA9XG4gIGxldCBpbmNsdWRlX2luZm9zID0gaW5jbHVkZV9pbmZvcyB+bG9jIChwbW9kX3N0cnVjdHVyZSB+bG9jIHN0KSBpblxuICBsZXQgcGluY2xfYXR0cmlidXRlcyA9XG4gICAgaWYgaGlkZSB0aGVuIFsgaW5saW5lX2RvY19hdHRyOyBNZXJsaW5faGVscGVycy5oaWRlX2F0dHJpYnV0ZSBdXG4gICAgZWxzZSBbIGlubGluZV9kb2NfYXR0ciBdXG4gIGluXG4gIFsgcHN0cl9pbmNsdWRlIH5sb2MgeyBpbmNsdWRlX2luZm9zIHdpdGggcGluY2xfYXR0cmlidXRlcyB9IF1cblxuKCogZGVjaWRlIHdoYXQgdG8gd3JhcCBhIHN0cnVjdHVyZSBpbiwgdGhlbiBjYWxsIGFib3ZlIFt3cmFwX3N0cl0gKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBzdCA9XG4gIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgdW51c2VkX2NvZGVfd2FybmluZ3MgPVxuICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzICYmIGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzICgpXG4gIGluXG4gIGxldCB3YXJuaW5ncywgc3QgPVxuICAgIGlmIGtlZXBfdzMyX2ltcGwgKCkgfHwgdW51c2VkX2NvZGVfd2FybmluZ3MgdGhlbiAoW10sIHN0KVxuICAgIGVsc2UgaWYgbm90ICFkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlIHRoZW5cbiAgICAgIChbXSwgSWdub3JlX3VudXNlZF93YXJuaW5nLmFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMjc3RydWN0dXJlIHN0KVxuICAgIGVsc2UgKFsgMzIgXSwgc3QpXG4gIGluXG4gIGxldCB3YXJuaW5ncywgc3QgPVxuICAgIGlmXG4gICAgICBrZWVwX3c2MF9pbXBsICgpIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzXG4gICAgICB8fCBub3QgKElnbm9yZV91bnVzZWRfd2FybmluZy5iaW5kc19tb2R1bGVfbmFtZXMjc3RydWN0dXJlIHN0IGZhbHNlKVxuICAgIHRoZW4gKHdhcm5pbmdzLCBzdClcbiAgICBlbHNlICg2MCA6OiB3YXJuaW5ncywgc3QpXG4gIGluXG4gIGxldCB3cmFwLCBzdCA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSB3YXJuaW5ncyB0aGVuIChoaWRlLCBzdClcbiAgICBlbHNlICh0cnVlLCBwc3RyX2F0dHJpYnV0ZSB+bG9jIChkaXNhYmxlX3dhcm5pbmdzX2F0dHJpYnV0ZSB3YXJuaW5ncykgOjogc3QpXG4gIGluXG4gIGlmIHdyYXAgdGhlbiB3cmFwX3N0ciB+bG9jIH5oaWRlIHN0IGVsc2Ugc3RcblxuKCogd3JhcCBibG9ja3MgdGhhdCBzaGFyZSBbdW51c2VkX2NvZGVfd2FybmluZ3NdLCB1c2luZyBhYm92ZSBbd3JhcF9zdHJdIGFib3ZlICopXG5sZXQgd3JhcF9zdHIgfmxvYyB+aGlkZSBsaXN0ID1cbiAgTGlzdC5jb25jYXRfbWFwIGxpc3QgfmY6KGZ1biB7IGl0ZW1zOyB1bnVzZWRfY29kZV93YXJuaW5ncyB9IC0+XG4gICAgICBpZiBMaXN0LmlzX2VtcHR5IGl0ZW1zIHRoZW4gW11cbiAgICAgIGVsc2Ugd3JhcF9zdHIgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3MgaXRlbXMpXG5cbigqIHdyYXAgYSBzaWduYXR1cmUgaW4gZXh0cmEgYXR0cmlidXRlcyAqKVxubGV0IHdyYXBfc2lnIH5sb2MgfmhpZGUgc3QgPVxuICBsZXQgaW5jbHVkZV9pbmZvcyA9IGluY2x1ZGVfaW5mb3MgfmxvYyAocG10eV9zaWduYXR1cmUgfmxvYyBzdCkgaW5cbiAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPVxuICAgIGlmIGhpZGUgdGhlbiBbIGlubGluZV9kb2NfYXR0cjsgTWVybGluX2hlbHBlcnMuaGlkZV9hdHRyaWJ1dGUgXVxuICAgIGVsc2UgWyBpbmxpbmVfZG9jX2F0dHIgXVxuICBpblxuICBbIHBzaWdfaW5jbHVkZSB+bG9jIHsgaW5jbHVkZV9pbmZvcyB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgfSBdXG5cbigqIGRlY2lkZSB3aGF0IHRvIHdyYXAgYSBzaWduYXR1cmUgaW4sIHRoZW4gY2FsbCBhYm92ZSBbd3JhcF9zaWddICopXG5sZXQgd3JhcF9zaWcgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3Mgc2cgPVxuICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgbGV0IHVudXNlZF9jb2RlX3dhcm5pbmdzID1cbiAgICB1bnVzZWRfY29kZV93YXJuaW5ncyAmJiBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyAoKVxuICBpblxuICBsZXQgd2FybmluZ3MgPVxuICAgIGlmIGtlZXBfdzMyX2ludGYgKCkgfHwgdW51c2VkX2NvZGVfd2FybmluZ3MgdGhlbiBbXSBlbHNlIFsgMzIgXVxuICBpblxuICBsZXQgd2FybmluZ3MgPVxuICAgIGlmXG4gICAgICBrZWVwX3c2MF9pbnRmICgpXG4gICAgICB8fCAobm90IChJZ25vcmVfdW51c2VkX3dhcm5pbmcuYmluZHNfbW9kdWxlX25hbWVzI3NpZ25hdHVyZSBzZyBmYWxzZSkpXG4gICAgICB8fCB1bnVzZWRfY29kZV93YXJuaW5nc1xuICAgIHRoZW4gd2FybmluZ3NcbiAgICBlbHNlIDYwIDo6IHdhcm5pbmdzXG4gIGluXG4gIGxldCB3cmFwLCBzZyA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSB3YXJuaW5ncyB0aGVuIChoaWRlLCBzZylcbiAgICBlbHNlICh0cnVlLCBwc2lnX2F0dHJpYnV0ZSB+bG9jIChkaXNhYmxlX3dhcm5pbmdzX2F0dHJpYnV0ZSB3YXJuaW5ncykgOjogc2cpXG4gIGluXG4gIGlmIHdyYXAgdGhlbiB3cmFwX3NpZyB+bG9jIH5oaWRlIHNnIGVsc2Ugc2dcblxuKCogd3JhcCBibG9ja3MgdGhhdCBzaGFyZSBbdW51c2VkX2NvZGVfd2FybmluZ3NdLCB1c2luZyBhYm92ZSBbd3JhcF9zaWddIGFib3ZlICopXG5sZXQgd3JhcF9zaWcgfmxvYyB+aGlkZSBsaXN0ID1cbiAgTGlzdC5jb25jYXRfbWFwIGxpc3QgfmY6KGZ1biB7IGl0ZW1zOyB1bnVzZWRfY29kZV93YXJuaW5ncyB9IC0+XG4gICAgICBpZiBMaXN0LmlzX2VtcHR5IGl0ZW1zIHRoZW4gW11cbiAgICAgIGVsc2Ugd3JhcF9zaWcgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3MgaXRlbXMpXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTWFpbiBleHBhbnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IHR5cGVzX3VzZWRfYnlfZGVyaXZpbmcgKHRkcyA6IHR5cGVfZGVjbGFyYXRpb24gbGlzdCkgOiBzdHJ1Y3R1cmVfaXRlbSBsaXN0ID1cbiAgaWYga2VlcF93MzJfaW1wbCAoKSB0aGVuIFtdXG4gIGVsc2VcbiAgICBMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICBsZXQgdHlwID0gQ29tbW9uLmNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIGluXG4gICAgICAgIGxldCBsb2MgPSB0ZC5wdHlwZV9sb2MgaW5cbiAgICAgICAgcHN0cl92YWx1ZSB+bG9jIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OihwcGF0X2FueSB+bG9jKVxuICAgICAgICAgICAgICB+ZXhwcjpcbiAgICAgICAgICAgICAgICAocGV4cF9mdW4gfmxvYyBOb2xhYmVsIE5vbmVcbiAgICAgICAgICAgICAgICAgICAocHBhdF9jb25zdHJhaW50IH5sb2MgKHBwYXRfYW55IH5sb2MpIHR5cClcbiAgICAgICAgICAgICAgICAgICAoZXVuaXQgfmxvYykpO1xuICAgICAgICAgIF0pXG5cbmxldCBtZXJnZV9nZW5lcmF0b3JzIGZpZWxkIGwgPVxuICBMaXN0LmZpbHRlcl9tYXAgbCB+ZjooZnVuIHggLT4geCkgfD4gTGlzdC5jb25jYXQgfD4gRGVyaXZlci5yZXNvbHZlX2FsbCBmaWVsZFxuXG4oKiBUaGlzIGZ1bmN0aW9uIG1lcmdlcyBbJ2EgZGVyaXZlZF0gaWYgdGhleSBoYXZlIHRoZSBzYW1lIFt1bnVzZWRfY29kZV93YXJuaW5nc10uIFRoaXNcbiAgIHJlZHVjZXMgdGhlIG51bWJlciBvZiB0aW1lcyB3ZSBhZGQgW2luY2x1ZGUgc3RydWN0IC4uLiBlbmRdIHRvIGRpc2FibGUgd2FybmluZ3MuICopXG5sZXQgbWVyZ2VfZGVyaXZlZCBsaXN0cyA9XG4gIExpc3QuZm9sZF9yaWdodCBsaXN0cyB+aW5pdDpbXSB+ZjooZnVuIGRlcml2ZWQgYWNjIC0+XG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBvdGhlciA6OiBvdGhlcnNcbiAgICAgICAgd2hlbiBCb29sLmVxdWFsIGRlcml2ZWQudW51c2VkX2NvZGVfd2FybmluZ3Mgb3RoZXIudW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICAgICAgLT5cbiAgICAgICAgICB7IG90aGVyIHdpdGggaXRlbXMgPSBkZXJpdmVkLml0ZW1zIEAgb3RoZXIuaXRlbXMgfSA6OiBvdGhlcnNcbiAgICAgIHwgXyAtPiBkZXJpdmVkIDo6IGFjYylcblxubGV0IGV4cGFuZF9zdHJfdHlwZV9kZWNscyB+Y3R4dCByZWNfZmxhZyB0ZHMgdmFsdWVzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID0gbWVyZ2VfZ2VuZXJhdG9ycyBEZXJpdmVyLkZpZWxkLnN0cl90eXBlX2RlY2wgdmFsdWVzIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gICgqIFRPRE86IGluc3RlYWQgb2YgZGlzYWJsaW5nIHRoZSB1bnVzZWQgd2FybmluZyBmb3IgdHlwZXMgdGhlbXNlbHZlcywgd2VcbiAgICAgc2hvdWxkIGFkZCBhIHRhZyBbQEB1bnVzZWRdLiAqKVxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gdHlwZXNfdXNlZF9ieV9kZXJpdmluZyB0ZHMgQCBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCAocmVjX2ZsYWcsIHRkcykgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX3R5cGVfZGVjbHMgfmN0eHQgcmVjX2ZsYWcgdGRzIHZhbHVlcyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9IG1lcmdlX2dlbmVyYXRvcnMgRGVyaXZlci5GaWVsZC5zaWdfdHlwZV9kZWNsIHZhbHVlcyBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgKHJlY19mbGFnLCB0ZHMpIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3N0cl9tb2R1bGVfdHlwZV9kZWNsIH5jdHh0IG10ZCBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc3RyX21vZHVsZV90eXBlX2RlY2wgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgbXRkIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ19tb2R1bGVfdHlwZV9kZWNsIH5jdHh0IG10ZCBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc2lnX21vZHVsZV90eXBlX2RlY2wgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgbXRkIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3N0cl9leGNlcHRpb24gfmN0eHQgZWMgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnN0cl9leGNlcHRpb24gZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgZWMgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX2V4Y2VwdGlvbiB+Y3R4dCBlYyBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc2lnX2V4Y2VwdGlvbiBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBlYyBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zdHJfdHlwZV9leHQgfmN0eHQgdGUgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnN0cl90eXBlX2V4dCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCB0ZSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfdHlwZV9leHQgfmN0eHQgdGUgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnNpZ190eXBlX2V4dCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCB0ZSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IHJ1bGVzIH50eXAgfmV4cGFuZF9zaWcgfmV4cGFuZF9zdHIgfnJ1bGVfc3RyIH5ydWxlX3NpZyB+cnVsZV9zdHJfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdCA9XG4gIGxldCBwcmVmaXggPSBcInBweGxpYi5cIiBpblxuICBsZXQgZGVyaXZpbmdfYXR0ciA9IG1rX2Rlcml2aW5nX2F0dHIgfnN1ZmZpeDpcIlwiIH5wcmVmaXggdHlwIGluXG4gIGxldCBkZXJpdmluZ19hdHRyX2V4cGVjdCA9IG1rX2Rlcml2aW5nX2F0dHIgfnN1ZmZpeDpcIl9pbmxpbmVcIiB+cHJlZml4IHR5cCBpblxuICBbXG4gICAgcnVsZV9zaWcgZGVyaXZpbmdfYXR0ciBleHBhbmRfc2lnO1xuICAgIHJ1bGVfc3RyIGRlcml2aW5nX2F0dHIgZXhwYW5kX3N0cjtcbiAgICBydWxlX3N0cl9leHBlY3QgZGVyaXZpbmdfYXR0cl9leHBlY3QgZXhwYW5kX3N0cjtcbiAgICBydWxlX3NpZ19leHBlY3QgZGVyaXZpbmdfYXR0cl9leHBlY3QgZXhwYW5kX3NpZztcbiAgXVxuXG5sZXQgcnVsZXNfdHlwZV9kZWNsID1cbiAgcnVsZXMgfnR5cDpUeXBlX2RlY2xhcmF0aW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfdHlwZV9kZWNsc1xuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfdHlwZV9kZWNsc1xuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2RlY2xcbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2RlY2xfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0XG5cbmxldCBydWxlc190eXBlX2V4dCA9XG4gIHJ1bGVzIH50eXA6VHlwZV9leHRlbnNpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl90eXBlX2V4dFxuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfdHlwZV9leHRcbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9leHRcbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9leHRcbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZXh0X2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0XG5cbmxldCBydWxlc19leGNlcHRpb24gPVxuICBydWxlcyB+dHlwOlR5cGVfZXhjZXB0aW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfZXhjZXB0aW9uXG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ19leGNlcHRpb25cbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfZXhjZXB0aW9uXG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX2V4Y2VwdGlvblxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfZXhjZXB0aW9uX2V4cGVjdFxuXG5sZXQgcnVsZXNfbW9kdWxlX3R5cGVfZGVjbCA9XG4gIHJ1bGVzIH50eXA6TW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0XG5cbmxldCAoKSA9XG4gIGxldCBydWxlcyA9XG4gICAgWyBydWxlc190eXBlX2RlY2w7IHJ1bGVzX3R5cGVfZXh0OyBydWxlc19leGNlcHRpb247IHJ1bGVzX21vZHVsZV90eXBlX2RlY2wgXVxuICAgIHw+IExpc3QuY29uY2F0XG4gIGluXG4gIERyaXZlci5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiBcImRlcml2aW5nXCIgfmFsaWFzZXM6WyBcInR5cGVfY29udlwiIF0gfnJ1bGVzXG4iLCJvcGVuIEltcG9ydFxuXG50eXBlIGFmZml4ID1cbiAgfCBQcmVmaXggb2Ygc3RyaW5nXG4gIHwgU3VmZml4IG9mIHN0cmluZ1xuICB8IFByZWZpeFN1ZmZpeCBvZiBzdHJpbmcgKiBzdHJpbmdcblxubGV0IG1hbmdsZSA/KGZpeHBvaW50ID0gXCJ0XCIpIGFmZml4IG5hbWUgPVxuICBtYXRjaCAoU3RyaW5nLihuYW1lID0gZml4cG9pbnQpLCBhZmZpeCkgd2l0aFxuICB8IHRydWUsIChQcmVmaXggeCB8IFN1ZmZpeCB4KSAtPiB4XG4gIHwgdHJ1ZSwgUHJlZml4U3VmZml4IChwLCBzKSAtPiBwIF4gXCJfXCIgXiBzXG4gIHwgZmFsc2UsIFByZWZpeFN1ZmZpeCAocCwgcykgLT4gcCBeIFwiX1wiIF4gbmFtZSBeIFwiX1wiIF4gc1xuICB8IGZhbHNlLCBQcmVmaXggeCAtPiB4IF4gXCJfXCIgXiBuYW1lXG4gIHwgZmFsc2UsIFN1ZmZpeCB4IC0+IG5hbWUgXiBcIl9cIiBeIHhcblxubGV0IG1hbmdsZV90eXBlX2RlY2wgP2ZpeHBvaW50IGFmZml4IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gbmFtZTsgXyB9OyBfIH0gPVxuICBtYW5nbGUgP2ZpeHBvaW50IGFmZml4IG5hbWVcblxubGV0IG1hbmdsZV9saWQgP2ZpeHBvaW50IGFmZml4IGxpZCA9XG4gIG1hdGNoIGxpZCB3aXRoXG4gIHwgTGlkZW50IHMgLT4gTGlkZW50IChtYW5nbGUgP2ZpeHBvaW50IGFmZml4IHMpXG4gIHwgTGRvdCAocCwgcykgLT4gTGRvdCAocCwgbWFuZ2xlID9maXhwb2ludCBhZmZpeCBzKVxuICB8IExhcHBseSBfIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkV4cGFuc2lvbl9oZWxwZXJzLm1hbmdsZV9saWQ6IExhcHBseVwiXG5cbm1vZHVsZSBRdW90ZXIgPSBRdW90ZXJcbiIsIigqKiBTdGFuZGFyZCBsaWJyYXJ5IGZvciBwcHggcmV3cml0ZXJzICopXG5cbigqKiBbcHB4bGliXSBpcyBtZWFudCB0byBiZSBvcGVuZWQgZ2xvYmFsbHkgaW4geW91ciBQUFggc291cmNlIGZpbGVzLlxuXG4gICAgT3BlbmluZyBpdCBjb21lcyB3aXRoIHR3byBhZHZhbnRhZ2VzLiBGaXJzdCwgaXQgd2lsbCBzaGFkb3cgdGhlXG4gICAgW2NvbXBpbGVyLWxpYnNdIG1vZHVsZXMuIFRoZSBbY29tcGlsZXItbGlic10gbW9kdWxlcyBhcmUgdW5zdGFibGUgYW5kIGFyZW4ndFxuICAgIG1lYW50IHRvIGJlIHVzZWQsIHNvIHNoYWRvd2luZyB0aGVtIGlzIGEgZ29vZCBwcm90ZWN0aW9uIG1lY2hhbmlzbS4gSW4gY2FzZVxuICAgIHlvdSBkb24ndCB3YW50IHRvIG9wZW4gW1BweGxpYl0sIHlvdSBjYW4gb3BlbiBbT2NhbWxfc2hhZG93XSB0byBnZXQgdGhlIHNhbWVcbiAgICBwcm90ZWN0aW9uLiBTZWNvbmQsIGl0IHdpbGwgYnJpbmcgc2V2ZXJhbCBtb2R1bGVzIGluIHNjb3BlLCB0aGF0IGFyZSB1c2VmdWxcbiAgICB0byBoYXZlIHdoZW4gd3JpdGluZyBhIHJld3JpdGVyOlxuXG4gICAgLSBUaGUgbWFpbiBbcHB4bGliXSBtb2R1bGVzLCBzdWNoIGFzIG1vZHVsZXMgdG8gaGVscCBtYW5pcHVsYXRlIHRoZSBBU1RcbiAgICAgICh7IUFzdF9idWlsZGVyfSwgeyFBc3RfcGF0dGVybn0pLCBhbmQgYSBmZXcgZnVuY3Rpb25zLlxuICAgIC0gTW9kdWxlcyBmcm9tIG90aGVyIGxpYnJhcmllcywgc3VjaCBhcyB7IUFzdF9oZWxwZXJ9IG9yIHshUHByaW50YXN0fSxcbiAgICAtIFRoZSB3aG9sZSBBU1QgdHlwZXMgKGJ5IFtpbmNsdWRpbmddIHRoZSB7IUFzdH0gbW9kdWxlKS5cblxuICAgIHsxIFRoZSBjb3JlIFtwcHhsaWJdIGVudHJpZXN9ICopXG5cbigqKiB7MiBNYW5pcHVsYXRpbmcgdGhlIEFTVH0gKilcblxubW9kdWxlIEFzdF9idWlsZGVyID0gQXN0X2J1aWxkZXJcbm1vZHVsZSBBc3RfcGF0dGVybiA9IEFzdF9wYXR0ZXJuXG5tb2R1bGUgQXN0X3RyYXZlcnNlID0gQXN0X3RyYXZlcnNlXG5cbigqKiB7MiBDb250ZXh0LWZyZWUgcmV3cml0aW5nfSAqKVxuXG5tb2R1bGUgQ29udGV4dF9mcmVlID0gQ29udGV4dF9mcmVlXG5tb2R1bGUgRGVyaXZpbmcgPSBEZXJpdmluZ1xubW9kdWxlIEV4dGVuc2lvbiA9IEV4dGVuc2lvblxubW9kdWxlIEV4cGFuc2lvbl9jb250ZXh0ID0gRXhwYW5zaW9uX2NvbnRleHRcbm1vZHVsZSBDb2RlX3BhdGggPSBDb2RlX3BhdGhcblxuKCoqIHsyIE90aGVyIGhlbHBlcnN9ICopXG5cbm1vZHVsZSBFeHBhbnNpb25faGVscGVycyA9IEV4cGFuc2lvbl9oZWxwZXJzXG5tb2R1bGUgTWVybGluX2hlbHBlcnMgPSBNZXJsaW5faGVscGVyc1xubW9kdWxlIFNwZWxsY2hlY2sgPSBTcGVsbGNoZWNrXG5tb2R1bGUgS2V5d29yZCA9IEtleXdvcmRcblxuKCoqIHsyIERyaXZlci1yZWxhdGVkIG1vZHVsZXN9ICopXG5cbm1vZHVsZSBEcml2ZXIgPSBEcml2ZXJcbm1vZHVsZSBDYWxsZXJfaWQgPSBDYWxsZXJfaWRcbm1vZHVsZSBBc3RfaW8gPSBVdGlscy5Bc3RfaW8uUmVhZF9iaW5cblxuKCoqIHsyIENoZWNrc30gKilcblxubW9kdWxlIEF0dHJpYnV0ZSA9IEF0dHJpYnV0ZVxubW9kdWxlIFJlc2VydmVkX25hbWVzcGFjZXMgPSBOYW1lLlJlc2VydmVkX25hbWVzcGFjZXNcblxuKCoqIHsyIENvbW1vbiBoZWxwZXIgZnVuY3Rpb25zfSAqKVxuXG5pbmNsdWRlIENvbW1vblxuXG4oKiogezEgTW9kdWxlcyBmcm9tIG90aGVyIGxpYnJhcmllc31cblxuICAgIEV4cG9zZSBzb21lIG1vZHVsZXMgZnJvbSB7IVBweGxpYl9hc3R9LiAqKVxuXG5tb2R1bGUgQXN0ID0gUHB4bGliX2FzdC5Bc3Rcbm1vZHVsZSBBc3RfaGVscGVyID0gUHB4bGliX2FzdC5Bc3RfaGVscGVyXG5tb2R1bGUgQXN0dHlwZXMgPSBQcHhsaWJfYXN0LkFzdHR5cGVzXG5tb2R1bGUgUGFyc2UgPSBQcHhsaWJfYXN0LlBhcnNlXG5tb2R1bGUgUGFyc2V0cmVlID0gUHB4bGliX2FzdC5QYXJzZXRyZWVcbm1vZHVsZSBQcHJpbnRhc3QgPSBQcHhsaWJfYXN0LlBwcmludGFzdFxubW9kdWxlIFNlbGVjdGVkX2FzdCA9IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0XG5tb2R1bGUgTG9jYXRpb24gPSBMb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IExvbmdpZGVudFxubW9kdWxlIExvYyA9IExvY1xuXG4oKiogezEgVGhlIHdob2xlIEFTVCB0eXBlc30gKilcblxuaW5jbHVkZSBBc3RcbigqKiBJbmNsdWRlIGFsbCB0aGUgQXN0IGRlZmluaXRpb25zIHNpbmNlIHdlIG5lZWQgdGhlbSBpbiBldmVyeSBzaW5nbGUgcHB4XG5cbiAgICBAY2xvc2VkICopXG5cbigqKiBNYWtlIHN1cmUgY29kZSB1c2luZyBQcHhsaWIgZG9lc24ndCByZWZlciB0byBjb21waWxlci1saWJzIHdpdGhvdXQgYmVpbmdcbiAgICBleHBsaWNpdCBhYm91dCBpdDpcblxuICAgIEBjbG9zZWQgKilcbmluY2x1ZGUgc3RydWN0XG4gIFtAQEB3YXJuaW5nIFwiLTNcIl1cblxuICBvcGVuIE9jYW1sX3NoYWRvd1xuXG4gIGluY2x1ZGUgKFxuICAgIE9jYW1sX3NoYWRvdyA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBPY2FtbF9zaGFkb3dcbiAgICAgIGVuZFxuICAgICAgd2l0aCBtb2R1bGUgQXN0X2hlbHBlciA6PSBBc3RfaGVscGVyXG4gICAgICB3aXRoIG1vZHVsZSBBc3R0eXBlcyA6PSBBc3R0eXBlc1xuICAgICAgd2l0aCBtb2R1bGUgRG9jc3RyaW5ncyA6PSBEb2NzdHJpbmdzXG4gICAgICB3aXRoIG1vZHVsZSBJZGVudGlmaWFibGUgOj0gSWRlbnRpZmlhYmxlXG4gICAgICB3aXRoIG1vZHVsZSBMZXhlciA6PSBMZXhlclxuICAgICAgd2l0aCBtb2R1bGUgTG9jYXRpb24gOj0gTG9jYXRpb25cbiAgICAgIHdpdGggbW9kdWxlIExvbmdpZGVudCA6PSBMb25naWRlbnRcbiAgICAgIHdpdGggbW9kdWxlIFBhcnNlIDo9IFBhcnNlXG4gICAgICB3aXRoIG1vZHVsZSBQYXJzZXRyZWUgOj0gUGFyc2V0cmVlXG4gICAgICB3aXRoIG1vZHVsZSBQcHJpbnRhc3QgOj0gUHByaW50YXN0XG4gICAgICB3aXRoIG1vZHVsZSBTeW50YXhlcnIgOj0gU3ludGF4ZXJyKVxuZW5kXG5cbigqKi8qKilcblxuKCogRm9yIHRlc3RzIGFuZCBQcHhfY29yZSBjb21wYXRpYmlsaXR5IGxheWVyICopXG5tb2R1bGUgUHB4bGliX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbW1vbiA9IENvbW1vblxuICBtb2R1bGUgTmFtZSA9IE5hbWVcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgUHB4bGliXG5cbmxldCBkZWZhdWx0ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5kZWZhdWx0XCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgX18gbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IGRyb3BfZGVmYXVsdCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ueW9qc29uX2Ryb3BfZGVmYXVsdFwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAoYWx0X29wdGlvbiAocHN0cl9ldmFsIF9fIG5pbCBeOjogbmlsKSBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IGRyb3BfZGVmYXVsdF9lcXVhbCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uQHlvanNvbl9kcm9wX2RlZmF1bHQuZXF1YWxcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0X2NvbXBhcmUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLkB5b2pzb25fZHJvcF9kZWZhdWx0LmNvbXBhcmVcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0X3lvanNvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGRyb3BfaWYgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLnlvanNvbl9kcm9wX2lmXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgX18gbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IG9wYXF1ZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwieW9qc29uLm9wYXF1ZVwiIEF0dHJpYnV0ZS5Db250ZXh0LmNvcmVfdHlwZSBBc3RfcGF0dGVybi4ocHN0ciBuaWwpICgpXG47O1xuXG5sZXQgb3B0aW9uID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5vcHRpb25cIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgYWxsb3dfZXh0cmFfZmllbGRzX3RkID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5hbGxvd19leHRyYV9maWVsZHNcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LnR5cGVfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBhbGxvd19leHRyYV9maWVsZHNfY2QgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmFsbG93X2V4dHJhX2ZpZWxkc1wiXG4gICAgQXR0cmlidXRlLkNvbnRleHQuY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCB5b2pzb25fa2V5ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5rZXlcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCAoZXN0cmluZyBfXykgbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IHlvanNvbl92YXJpYW50X25hbWUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLm5hbWVcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCAoZXN0cmluZyBfXykgbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IHlvanNvbl9wb2x5bW9ycGhpY192YXJpYW50X25hbWUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLm5hbWVcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LnJ0YWdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIChlc3RyaW5nIF9fKSBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgaW52YWxpZF9hdHRyaWJ1dGUgfmxvYyBhdHRyIGRlc2NyaXB0aW9uID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgfmxvY1xuICAgIFwicHB4X3lvanNvbl9jb252OiBbQCVzXSBpcyBvbmx5IGFsbG93ZWQgb24gdHlwZSBbJXNdLlwiXG4gICAgKEF0dHJpYnV0ZS5uYW1lIGF0dHIpXG4gICAgZGVzY3JpcHRpb25cbjs7XG5cbmxldCBmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIH5sb2MgeCA9XG4gIGlmIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IGFsbG93X2V4dHJhX2ZpZWxkc19jZCB4KVxuICB0aGVuXG4gICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICB+bG9jXG4gICAgICBcInBweF95b2pzb25fY29udjogW0BAYWxsb3dfZXh0cmFfZmllbGRzXSBpcyBvbmx5IGFsbG93ZWQgb24gaW5saW5lIHJlY29yZHMuXCJcbjs7XG5cbmxldCBmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX3RkIH5sb2MgeCA9XG4gIGlmIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IGFsbG93X2V4dHJhX2ZpZWxkc190ZCB4KVxuICB0aGVuIChcbiAgICBtYXRjaCB4LnB0eXBlX2tpbmQgd2l0aFxuICAgIHwgUHR5cGVfdmFyaWFudCBjZHNcbiAgICAgIHdoZW4gTGlzdC5leGlzdHMgY2RzIH5mOihmdW4gY2QgLT5cbiAgICAgICAgbWF0Y2ggY2QucGNkX2FyZ3Mgd2l0aFxuICAgICAgICB8IFBjc3RyX3JlY29yZCBfIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgIH5sb2NcbiAgICAgICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAQEBAYWxsb3dfZXh0cmFfZmllbGRzXSBvbmx5IHdvcmtzIG9uIHJlY29yZHMuIEZvciBpbmxpbmUgXFxcbiAgICAgICAgIHJlY29yZHMsIGRvOiB0eXBlIHQgPSBBIG9mIHsgYSA6IGludCB9IFtAQGFsbG93X2V4dHJhX2ZpZWxkc10gfCBCIFtAQEBAZGVyaXZpbmcgXFxcbiAgICAgICAgIHlvanNvbl1cIlxuICAgIHwgXyAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgIH5sb2NcbiAgICAgICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAQEBAYWxsb3dfZXh0cmFfZmllbGRzXSBpcyBvbmx5IGFsbG93ZWQgb24gcmVjb3Jkcy5cIilcbjs7XG5cbm1vZHVsZSBSZWNvcmRfZmllbGRfaGFuZGxlciA9IHN0cnVjdFxuICB0eXBlIGNvbW1vbiA9IFsgYHlvanNvbl9vcHRpb24gb2YgY29yZV90eXBlIF1cblxuICBsZXQgZ2V0X2F0dHJpYnV0ZSBhdHRyIGxkIH5mID1cbiAgICBPcHRpb24ubWFwIChBdHRyaWJ1dGUuZ2V0IGF0dHIgbGQpIH5mOihmdW4geCAtPiBmIHgsIEF0dHJpYnV0ZS5uYW1lIGF0dHIpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB+bG9jIGdldHRlcnMgbGQgPVxuICAgIGxldCBjb21tb25fZ2V0dGVycyA9XG4gICAgICBbIChmdW4gbGQgLT5cbiAgICAgICAgICBtYXRjaCBBdHRyaWJ1dGUuZ2V0IG9wdGlvbiBsZCB3aXRoXG4gICAgICAgICAgfCBTb21lICgpIC0+XG4gICAgICAgICAgICAobWF0Y2ggbGQucGxkX3R5cGUgd2l0aFxuICAgICAgICAgICAgIHwgWyV0eXBlOiBbJXQ/IHR5XSBvcHRpb25dIC0+IFNvbWUgKGB5b2pzb25fb3B0aW9uIHR5LCBcIltAeW9qc29uLm9wdGlvbl1cIilcbiAgICAgICAgICAgICB8IF8gLT4gaW52YWxpZF9hdHRyaWJ1dGUgfmxvYyBvcHRpb24gXCJfIG9wdGlvblwiKVxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgXVxuICAgIGluXG4gICAgbWF0Y2ggTGlzdC5maWx0ZXJfbWFwIChnZXR0ZXJzIEAgY29tbW9uX2dldHRlcnMpIH5mOihmdW4gZiAtPiBmIGxkKSB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBbICh2LCBfKSBdIC0+IFNvbWUgdlxuICAgIHwgXyA6OiBfIDo6IF8gYXMgYXR0cmlidXRlcyAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgIH5sb2NcbiAgICAgICAgXCJUaGUgZm9sbG93aW5nIGVsZW1lbnRzIGFyZSBtdXR1YWxseSBleGNsdXNpdmU6ICVzXCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAoTGlzdC5tYXAgYXR0cmlidXRlcyB+ZjpzbmQpKVxuICA7O1xuXG4gIG1vZHVsZSBPZl95b2pzb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBjb21tb25cbiAgICAgIHwgYGRlZmF1bHQgb2YgZXhwcmVzc2lvblxuICAgICAgXVxuXG4gICAgbGV0IGNyZWF0ZSB+bG9jIGxkID1cbiAgICAgIGNyZWF0ZSB+bG9jIFsgZ2V0X2F0dHJpYnV0ZSBkZWZhdWx0IH5mOihmdW4gZGVmYXVsdCAtPiBgZGVmYXVsdCBkZWZhdWx0KSBdIGxkXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFlvanNvbl9vZiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICBbIGNvbW1vblxuICAgICAgfCBgZHJvcF9kZWZhdWx0IG9mIFsgYG5vX2FyZyB8IGBjb21wYXJlIHwgYGVxdWFsIHwgYHlvanNvbiB8IGBmdW5jIG9mIGV4cHJlc3Npb24gXVxuICAgICAgfCBgZHJvcF9pZiBvZiBleHByZXNzaW9uXG4gICAgICB8IGBrZWVwXG4gICAgICBdXG5cbiAgICBsZXQgY3JlYXRlIH5sb2MgbGQgPVxuICAgICAgY3JlYXRlXG4gICAgICAgIH5sb2NcbiAgICAgICAgWyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPiBgZHJvcF9kZWZhdWx0IGBub19hcmdcbiAgICAgICAgICAgIHwgU29tZSBlIC0+IGBkcm9wX2RlZmF1bHQgKGBmdW5jIGUpKVxuICAgICAgICA7IGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0X2VxdWFsIH5mOihmdW4gKCkgLT4gYGRyb3BfZGVmYXVsdCBgZXF1YWwpXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHRfY29tcGFyZSB+ZjooZnVuICgpIC0+IGBkcm9wX2RlZmF1bHQgYGNvbXBhcmUpXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHRfeW9qc29uIH5mOihmdW4gKCkgLT4gYGRyb3BfZGVmYXVsdCBgeW9qc29uKVxuICAgICAgICA7IGdldF9hdHRyaWJ1dGUgZHJvcF9pZiB+ZjooZnVuIHggLT4gYGRyb3BfaWYgeClcbiAgICAgICAgXVxuICAgICAgICBsZFxuICAgICAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OmBrZWVwXG4gICAgOztcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEJhc2VcblxudHlwZSB0ID1cbiAgeyBsYWJlbCA6IHN0cmluZ1xuICA7IG5hbWVfb3ZlcnJpZGUgOiBzdHJpbmcgb3B0aW9uXG4gIH1cblxubGV0IGNyZWF0ZSB+bGFiZWwgfm5hbWVfb3ZlcnJpZGUgPSB7IGxhYmVsOyBuYW1lX292ZXJyaWRlIH1cblxubGV0IG9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIChjZCA6IFBweGxpYi5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbikgPVxuICBsZXQgbGFiZWwgPSBjZC5wY2RfbmFtZS50eHQgaW5cbiAgbGV0IG5hbWVfb3ZlcnJpZGUgPSBQcHhsaWIuQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fdmFyaWFudF9uYW1lIGNkIGluXG4gIGNyZWF0ZSB+bGFiZWwgfm5hbWVfb3ZlcnJpZGVcbjs7XG5cbmxldCBsYWJlbCB0ID0gdC5sYWJlbFxubGV0IG5hbWUgdCA9IE9wdGlvbi52YWx1ZSB0Lm5hbWVfb3ZlcnJpZGUgfmRlZmF1bHQ6dC5sYWJlbFxuIiwib3BlbiBCYXNlXG5vcGVuIFBweGxpYlxub3BlbiBBc3RfYnVpbGRlci5EZWZhdWx0XG5tb2R1bGUgQXR0cnMgPSBBdHRyc1xuXG5sZXQgKCAtLT4gKSBsaHMgcmhzID0gY2FzZSB+Z3VhcmQ6Tm9uZSB+bGhzIH5yaHNcblxuKCogU2ltcGxpZmllcyBtYXRjaCBjYXNlcywgZm9yIHJlYWRhYmlsaXR5IG9mIHRoZSBnZW5lcmF0ZWQgY29kZS4gSXQncyBub3Qgb2J2aW91cyB3ZSBjYW5cbiAgIHN0aWNrIHRoaXMgaW4gcHB4X2NvcmUsIGFzIChtYXRjaCBlMSB3aXRoIHAgLT4gZTIpIGFuZCAobGV0IHAgPSBlMSBpbiBlMikgYXJlIG5vdCB0eXBlZFxuICAgZXhhY3RseSB0aGUgc2FtZSAodHlwZSBpbmZlcmVuY2UgZ29lcyBpbiBkaWZmZXJlbnQgb3JkZXIsIG1lYW5pbmcgdHlwZSBkaXNhbWJpZ3VhdGlvblxuICAgZGlmZmVycykuICopXG5sZXQgcGV4cF9tYXRjaCB+bG9jIGV4cHIgY2FzZXMgPVxuICBtYXRjaCBjYXNlcyB3aXRoXG4gIHwgWyB7IHBjX2xoczsgcGNfZ3VhcmQgPSBOb25lOyBwY19yaHMgfSBdIC0+XG4gICAgKG1hdGNoIHBjX2xocywgZXhwciB3aXRoXG4gICAgIHwgKCB7IHBwYXRfYXR0cmlidXRlcyA9IFtdOyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dCA9IGlkZW50OyBfIH07IF8gfVxuICAgICAgICwgeyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBpZGVudCc7IF8gfTsgXyB9IClcbiAgICAgICB3aGVuIFN0cmluZy5lcXVhbCBpZGVudCBpZGVudCcgLT4gcGNfcmhzXG4gICAgIHwgXyAtPiBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBbIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OnBjX2xocyB+ZXhwciBdIHBjX3JocylcbiAgfCBfIC0+IHBleHBfbWF0Y2ggfmxvYyBleHByIGNhc2VzXG47O1xuXG5tb2R1bGUgRnVuX29yX21hdGNoID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBGdW4gb2YgZXhwcmVzc2lvblxuICAgIHwgTWF0Y2ggb2YgY2FzZSBsaXN0XG5cbiAgbGV0IGV4cHIgfmxvYyB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEZ1biBmIC0+IGZcbiAgICB8IE1hdGNoIGNhc2VzIC0+IHBleHBfZnVuY3Rpb24gfmxvYyBjYXNlc1xuICA7O1xuXG4gIGxldCB1bnJvbGwgfmxvYyBlIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRnVuIGYgLT4gZWFwcGx5IH5sb2MgZiBbIGUgXVxuICAgIHwgTWF0Y2ggY2FzZXMgLT4gcGV4cF9tYXRjaCB+bG9jIGUgY2FzZXNcbiAgOztcblxuICBsZXQgbWFwX3RtcF92YXJzIH5sb2MgdHMgPVxuICAgIGxldCB2YXJzID0gTGlzdC5tYXBpIHRzIH5mOihmdW4gaSBfIC0+IFwidlwiIF4gSW50LnRvX3N0cmluZyBpKSBpblxuICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICBMaXN0Lm1hcDJfZXhuIHZhcnMgdHMgfmY6KGZ1biB2YXIgdCAtPlxuICAgICAgICBsZXQgZXhwciA9IHVucm9sbCB+bG9jIChldmFyIH5sb2MgdmFyKSB0IGluXG4gICAgICAgIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OihwdmFyIH5sb2MgdmFyKSB+ZXhwcilcbiAgICBpblxuICAgIGJpbmRpbmdzLCBMaXN0Lm1hcCB2YXJzIH5mOihwdmFyIH5sb2MpLCBMaXN0Lm1hcCB2YXJzIH5mOihldmFyIH5sb2MpXG4gIDs7XG5lbmRcblxuKCogQSByZW5hbWluZyBpcyBhIG1hcHBpbmcgZnJvbSB0eXBlIHZhcmlhYmxlIG5hbWUgdG8gdHlwZSB2YXJpYWJsZSBuYW1lLlxuICAgSW4gZGVmaW5pdGlvbnMgc3VjaCBhczpcblxuICAgdHlwZSAnYSB0ID1cbiAgIHwgQSA6IDx0eXBlPiAtPiAnYiB0XG4gICB8IEIgb2YgJ2FcblxuICAgd2UgZ2VuZXJhdGUgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFuIHlvanNvbl9vZiBwYXJhbWV0ZXIgbmFtZWQgYWZ0ZXIgJ2EsIGJ1dCAnYSBpcyBub3QgaW5cbiAgIHNjb3BlIGluIDx0eXBlPiB3aGVuIGhhbmRsaW5nIHRoZSBjb25zdHJ1Y3RvciBBIChiZWNhdXNlIEEgaXMgYSBnYWR0IGNvbnN0cnVjdG9yKS5cbiAgIEluc3RlYWQgdGhlIHR5cGUgdmFyaWFibGVzIGluIHNjb3BlIGFyZSB0aGUgb25lcyBkZWZpbmVkIGluIHRoZSByZXR1cm4gdHlwZSBvZiBBLFxuICAgbmFtZWx5ICdiLiBUaGVyZSBjb3VsZCBiZSBsZXNzIG9yIG1vcmUgdHlwZSB2YXJpYWJsZSBpbiBjYXNlcyBzdWNoIGFzOlxuXG4gICB0eXBlIF8gbGVzcyA9IExlc3MgOiBpbnQgbGVzc1xuICAgdHlwZSBfIG1vcmUgPSBNb3JlIDogKCdhICogJ2EpIG1vcmVcblxuICAgSWYgZm9yIGluc3RhbmNlLCA8dHlwZT4gaXMgWydiICogJ2NdLCB3aGVuIHdlIGZpbmQgJ2IsIHdlIHdpbGwgbG9vayBmb3IgWydiXSBpbiB0aGVcbiAgIHJlbmFtaW5nIGFuZCBmaW5kIFsnYV0gKG9ubHkgaW4gdGhhdCBnYWR0IGJyYW5jaCwgaXQgY291bGQgYmUgc29tZXRoaW5nIGVsc2UgaW4gb3RoZXJcbiAgIGJyYW5jaGVzKSwgYXQgd2hpY2ggcG9pbnQgd2UgY2FuIGNhbGwgdGhlIHByZXZpb3VzbHkgYm91bmQgeW9qc29uX29mIHBhcmFtZXRlciBuYW1lZFxuICAgYWZ0ZXIgJ2EuXG4gICBJZiB3ZSBjYW4ndCBmaW5kIGEgcmVzdWx0aW5nIG5hbWUsIGxpa2Ugd2hlbiBsb29raW5nIHVwIFsnY10gaW4gdGhlIHJlbmFtaW5nLCB0aGVuIHdlXG4gICBhc3N1bWUgdGhlIHZhcmlhYmxlIGlzIGV4aXN0ZW50aWFsbHkgcXVhbnRpZmllZCBhbmQgdHJlYXQgaXQgYXMgW19dICh3aGljaCBpcyBvayxcbiAgIGFzc3VtaW5nIHRoZXJlIGFyZSBubyBjb25zdHJhaW50cykuICopXG5tb2R1bGUgUmVuYW1pbmcgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGlkZW50aXR5IDogdFxuICB2YWwgYWRkX3VuaXZlcnNhbGx5X2JvdW5kIDogdCAtPiBzdHJpbmcgbG9jIC0+IHRcblxuICB0eXBlIGJpbmRpbmdfa2luZCA9XG4gICAgfCBVbml2ZXJzYWxseV9ib3VuZCBvZiBzdHJpbmdcbiAgICB8IEV4aXN0ZW50aWFsbHlfYm91bmRcblxuICB2YWwgYmluZGluZ19raW5kIDogdCAtPiBzdHJpbmcgLT4gYmluZGluZ19raW5kXG4gIHZhbCBvZl9nYWR0IDogc3RyaW5nIGxpc3QgLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgZXJyb3IgPSBzdHJpbmcgTG9jLnRcbiAgdHlwZSB0ID0gKHN0cmluZywgZXJyb3IpIFJlc3VsdC50IE1hcC5NKFN0cmluZykudCBvcHRpb25cblxuICBsZXQgaWRlbnRpdHkgPSBOb25lXG5cbiAgdHlwZSBiaW5kaW5nX2tpbmQgPVxuICAgIHwgVW5pdmVyc2FsbHlfYm91bmQgb2Ygc3RyaW5nXG4gICAgfCBFeGlzdGVudGlhbGx5X2JvdW5kXG5cbiAgbGV0IGFkZF91bml2ZXJzYWxseV9ib3VuZCAodCA6IHQpIG5hbWUgOiB0ID1cbiAgICBsZXQgbmFtZSA9IG5hbWUudHh0IGluXG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbWFwIC0+IFNvbWUgKE1hcC5zZXQgfmtleTpuYW1lIH5kYXRhOihPayBuYW1lKSBtYXApXG4gIDs7XG5cbiAgbGV0IGJpbmRpbmdfa2luZCB0IHZhciA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBOb25lIC0+IFVuaXZlcnNhbGx5X2JvdW5kIHZhclxuICAgIHwgU29tZSBtYXAgLT5cbiAgICAgIChtYXRjaCBNYXAuZmluZCBtYXAgdmFyIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gRXhpc3RlbnRpYWxseV9ib3VuZFxuICAgICAgIHwgU29tZSAoT2sgdmFsdWUpIC0+IFVuaXZlcnNhbGx5X2JvdW5kIHZhbHVlXG4gICAgICAgfCBTb21lIChFcnJvciB7IGxvYzsgdHh0IH0pIC0+IExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiJXNcIiB0eHQpXG4gIDs7XG5cbiAgKCogUmV0dXJuIGEgbWFwIHRyYW5zbGF0aW5nIHR5cGUgdmFyaWFibGVzIGFwcGVhcmluZyBpbiB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQURUXG4gICAgIGNvbnN0cnVjdG9yIHRvIHRoZWlyIG5hbWUgaW4gdGhlIHR5cGUgcGFyYW1ldGVyIGxpc3QuXG5cbiAgICAgRm9yIGluc3RhbmNlOlxuXG4gICAgIHtbXG4gICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gWCA6ICd4ICogJ3kgLT4gKCd4LCAneSkgdFxuICAgICBdfVxuXG4gICAgIHdpbGwgcHJvZHVjZTpcblxuICAgICB7W1xuICAgICAgIFwieFwiIC0+IE9rIFwiYVwiXG4gICAgICAgICAgICAgICAgXCJ5XCIgLT4gT2sgXCJiXCJcbiAgICAgXX1cblxuICAgICBJZiBhIHZhcmlhYmxlIGFwcGVhcnMgdHdpY2UgaW4gdGhlIHJldHVybiB0eXBlIGl0IHdpbGwgbWFwIHRvIFtFcnJvciBfXS4gSWYgYVxuICAgICB2YXJpYWJsZSBjYW5ub3QgYmUgbWFwcGVkIHRvIGEgcGFyYW1ldGVyIG9mIHRoZSB0eXBlIGRlY2xhcmF0aW9uLCBpdCB3aWxsIG1hcCB0b1xuICAgICBbRXJyb3JdIChmb3IgaW5zdGFuY2UgW0EgOiAnYSAtPiAnYSBsaXN0IHRdKS5cblxuICAgICBJdCByZXR1cm5zIE5vbmUgb24gdXNlciBlcnJvciwgdG8gbGV0IHRoZSB0eXBlciBnaXZlIHRoZSBlcnJvciBtZXNzYWdlICopXG4gIGxldCBvZl9nYWR0ID1cbiAgICAoKiBBZGQgYWxsIHR5cGUgdmFyaWFibGVzIG9mIGEgdHlwZSB0byBhIG1hcC4gKilcbiAgICBsZXQgYWRkX3R5cGV2YXJzID1cbiAgICAgIG9iamVjdFxuICAgICAgICBpbmhlcml0IFsoc3RyaW5nLCBlcnJvcikgUmVzdWx0LnQgTWFwLk0oU3RyaW5nKS50XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgICAgIG1ldGhvZCEgY29yZV90eXBlIHR5IG1hcCA9XG4gICAgICAgICAgbWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFB0eXBfdmFyIHZhciAtPlxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgeyBsb2MgPSB0eS5wdHlwX2xvY1xuICAgICAgICAgICAgICA7IHR4dCA9XG4gICAgICAgICAgICAgICAgICBcInBweF95b2pzb25fY29udjogdmFyaWFibGUgaXMgbm90IGEgcGFyYW1ldGVyIG9mIHRoZSB0eXBlIGNvbnN0cnVjdG9yXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIE1hcC5zZXQgbWFwIH5rZXk6dmFyIH5kYXRhOihFcnJvciBlcnJvcilcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIHR5IG1hcFxuICAgICAgZW5kXG4gICAgaW5cbiAgICBsZXQgYXV4IG1hcCB0cF9uYW1lIHRwX2luX3JldHVybl90eXBlID1cbiAgICAgIG1hdGNoIHRwX2luX3JldHVybl90eXBlLnB0eXBfZGVzYyB3aXRoXG4gICAgICB8IFB0eXBfdmFyIHZhciAtPlxuICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgaWYgTWFwLm1lbSBtYXAgdmFyXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbG9jID0gdHBfaW5fcmV0dXJuX3R5cGUucHR5cF9sb2MgaW5cbiAgICAgICAgICAgIEVycm9yIHsgbG9jOyB0eHQgPSBcInBweF95b2pzb25fY29udjogZHVwbGljYXRlIHZhcmlhYmxlXCIgfSlcbiAgICAgICAgICBlbHNlIE9rIHRwX25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgTWFwLnNldCBtYXAgfmtleTp2YXIgfmRhdGFcbiAgICAgIHwgXyAtPiBhZGRfdHlwZXZhcnMjY29yZV90eXBlIHRwX2luX3JldHVybl90eXBlIG1hcFxuICAgIGluXG4gICAgZnVuIHRwcyBjZCAtPlxuICAgICAgbWF0Y2ggY2QucGNkX3JlcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHR5IC0+XG4gICAgICAgIChtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgfCBQdHlwX2NvbnN0ciAoXywgcGFyYW1zKSAtPlxuICAgICAgICAgICBpZiBMaXN0Lmxlbmd0aCBwYXJhbXMgPD4gTGlzdC5sZW5ndGggdHBzXG4gICAgICAgICAgIHRoZW4gTm9uZVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgKFN0ZGxpYi5MaXN0TGFiZWxzLmZvbGRfbGVmdDJcbiAgICAgICAgICAgICAgICAgIHRwc1xuICAgICAgICAgICAgICAgICAgcGFyYW1zXG4gICAgICAgICAgICAgICAgICB+aW5pdDooTWFwLmVtcHR5IChtb2R1bGUgU3RyaW5nKSlcbiAgICAgICAgICAgICAgICAgIH5mOmF1eClcbiAgICAgICAgIHwgXyAtPiBOb25lKVxuICA7O1xuZW5kXG5cbigqIFV0aWxpdHkgZnVuY3Rpb25zICopXG5cbmxldCByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyA9XG4gIGxldCBtYXAgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwIGFzIHN1cGVyXG5cbiAgICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgPVxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFB0eXBfdmFyIF8gLT4gUHR5cF9hbnlcbiAgICAgICAgfCB0IC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIHRcbiAgICBlbmRcbiAgaW5cbiAgbWFwI2NvcmVfdHlwZVxuOztcblxubGV0IHJpZ2lkX3R5cGVfdmFyIH50eXBlX25hbWUgeCA9XG4gIGxldCBwcmVmaXggPSBcInJpZ2lkX1wiIGluXG4gIGlmIFN0cmluZy5lcXVhbCB4IHR5cGVfbmFtZSB8fCBTdHJpbmcuaXNfcHJlZml4IHggfnByZWZpeFxuICB0aGVuIHByZWZpeCBeIHggXiBcIl9vZl90eXBlX1wiIF4gdHlwZV9uYW1lXG4gIGVsc2UgeFxuOztcblxubGV0IG1ha2VfdHlwZV9yaWdpZCB+dHlwZV9uYW1lID1cbiAgbGV0IG1hcCA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXAgYXMgc3VwZXJcblxuICAgICAgbWV0aG9kISBjb3JlX3R5cGUgdHkgPVxuICAgICAgICBsZXQgcHR5cF9kZXNjID1cbiAgICAgICAgICBtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF92YXIgcyAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKExvY2F0ZWQubGlkZW50IH5sb2M6dHkucHR5cF9sb2MgKHJpZ2lkX3R5cGVfdmFyIH50eXBlX25hbWUgcyksIFtdKVxuICAgICAgICAgIHwgZGVzYyAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyBkZXNjXG4gICAgICAgIGluXG4gICAgICAgIHsgdHkgd2l0aCBwdHlwX2Rlc2MgfVxuICAgIGVuZFxuICBpblxuICBtYXAjY29yZV90eXBlXG47O1xuXG4oKiBHZW5lcmF0ZXMgdGhlIHF1YW50aWZpZWQgdHlwZSBbICEgJ2EgLi4gJ3ogLiAobWFrZV9tb25vX3R5cGUgdCAoJ2EgLi4gJ3opKSBdIG9yXG4gICBbdHlwZSBhIC4uIHouIG1ha2VfbW9ub190eXBlIHQgKGEgLi4geildIHdoZW4gW3VzZV9yaWdpZF92YXJpYWJsZXNdIGlzIHRydWUuXG4gICBBbm5vdGF0aW9uIGFyZSBuZWVkZWQgZm9yIG5vbiByZWd1bGFyIHJlY3Vyc2l2ZSBkYXRhdHlwZXMgYW5kIGdhZHQgd2hlbiB0aGUgcmV0dXJuIHR5cGVcbiAgIG9mIGNvbnN0cnVjdG9ycyBhcmUgY29uc3RyYWluZWQuIFVuZm9ydHVuYXRlbHksIHB1dHRpbmcgcmlnaWQgdmFyaWFibGVzIGV2ZXJ5d2hlcmUgZG9lc1xuICAgbm90IHdvcmsgYmVjYXVzZSBvZiBjZXJ0YWlucyB0eXBlcyB3aXRoIGNvbnN0cmFpbnRzLiBXZSB0aHVzIG9ubHkgdXNlIHJpZ2lkIHZhcmlhYmxlc1xuICAgZm9yIHN1bSB0eXBlcywgd2hpY2ggaW5jbHVkZXMgYWxsIEdBRFRzLiAqKVxuXG5sZXQgdHZhcnNfb2ZfY29yZV90eXBlIDogY29yZV90eXBlIC0+IHN0cmluZyBsaXN0ID1cbiAgbGV0IHR2YXJzID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgW3N0cmluZyBsaXN0XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgICBtZXRob2QhIGNvcmVfdHlwZSB4IGFjYyA9XG4gICAgICAgIG1hdGNoIHgucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQdHlwX3ZhciB4IC0+IGlmIExpc3QubWVtIGFjYyB4IH5lcXVhbDpTdHJpbmcuZXF1YWwgdGhlbiBhY2MgZWxzZSB4IDo6IGFjY1xuICAgICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIHggYWNjXG4gICAgZW5kXG4gIGluXG4gIGZ1biB0eXAgLT4gTGlzdC5yZXYgKHR2YXJzI2NvcmVfdHlwZSB0eXAgW10pXG47O1xuXG5sZXQgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZ1xuICAgICAgKCogcGxhY2luZyBhIHN1aXRhYmx5IHBvbHltb3JwaGljIG9yIHJpZ2lkIHR5cGUgY29uc3RyYWludCBvbiB0aGUgcGF0dGVybiBvciBib2R5ICopXG4gICAgICAobG9jIDogTG9jYXRpb24udClcbiAgICAgICh0ZCA6IHR5cGVfZGVjbGFyYXRpb24pXG4gICAgICAodHlwIDogY29yZV90eXBlKVxuICAgICAgfih0cHMgOiBzdHJpbmcgbG9jIGxpc3QpXG4gICAgICB+KGZ1bmNfbmFtZSA6IHN0cmluZylcbiAgICAgIChib2R5IDogZXhwcmVzc2lvbilcbiAgPVxuICBsZXQgdmFycyA9IHR2YXJzX29mX2NvcmVfdHlwZSB0eXAgaW5cbiAgbGV0IGhhc192YXJzID1cbiAgICBtYXRjaCB2YXJzIHdpdGhcbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBfIDo6IF8gLT4gdHJ1ZVxuICBpblxuICBsZXQgcGF0ID1cbiAgICBsZXQgcGF0ID0gcHZhciB+bG9jIGZ1bmNfbmFtZSBpblxuICAgIGlmIG5vdCBoYXNfdmFyc1xuICAgIHRoZW4gcGF0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgdmFycyA9IExpc3QubWFwIH5mOihmdW4gdHh0IC0+IHsgdHh0OyBsb2MgfSkgdmFycyBpblxuICAgICAgcHBhdF9jb25zdHJhaW50IH5sb2MgcGF0IChwdHlwX3BvbHkgfmxvYyB2YXJzIHR5cCkpXG4gIGluXG4gIGxldCBib2R5ID1cbiAgICBsZXQgdXNlX3JpZ2lkX3ZhcmlhYmxlcyA9XG4gICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICAgIHwgUHR5cGVfdmFyaWFudCBfIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgaWYgdXNlX3JpZ2lkX3ZhcmlhYmxlc1xuICAgIHRoZW4gKFxuICAgICAgbGV0IHR5cGVfbmFtZSA9IHRkLnB0eXBlX25hbWUudHh0IGluXG4gICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAgdHBzXG4gICAgICAgIH5mOihmdW4gdHAgYm9keSAtPlxuICAgICAgICAgIHBleHBfbmV3dHlwZSB+bG9jIHsgdHh0ID0gcmlnaWRfdHlwZV92YXIgfnR5cGVfbmFtZSB0cC50eHQ7IGxvYyA9IHRwLmxvYyB9IGJvZHkpXG4gICAgICAgIH5pbml0OihwZXhwX2NvbnN0cmFpbnQgfmxvYyBib2R5IChtYWtlX3R5cGVfcmlnaWQgfnR5cGVfbmFtZSB0eXApKSlcbiAgICBlbHNlIGlmIGhhc192YXJzXG4gICAgdGhlbiBib2R5XG4gICAgZWxzZSBwZXhwX2NvbnN0cmFpbnQgfmxvYyBib2R5IHR5cFxuICBpblxuICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdCB+ZXhwcjpib2R5XG47O1xuXG5sZXQgcmVhbGx5X3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgPVxuICAob2JqZWN0XG4gICAgaW5oZXJpdCB0eXBlX2lzX3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGN0eXBlID1cbiAgICAgIG1hdGNoIGN0eXBlIHdpdGhcbiAgICAgIHwgXyB3aGVuIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IH5tYXJrX2FzX3NlZW46ZmFsc2UgQXR0cnMub3BhcXVlIGN0eXBlKSAtPlxuICAgICAgICAoKVxuICAgICAgfCBbJXR5cGU6IFsldD8gX10geW9qc29uX29wYXF1ZV0gLT4gKClcbiAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgY3R5cGVcbiAgZW5kKVxuICAjZ29cbiAgICAoKVxuOztcblxuKCogR2VuZXJhdGVzIHRoZSBzaWduYXR1cmUgZm9yIHR5cGUgY29udmVyc2lvbiB0byBZb2pzb25zICopXG5tb2R1bGUgU2lnX2dlbmVyYXRlX3lvanNvbl9vZiA9IHN0cnVjdFxuICBsZXQgdHlwZV9vZl95b2pzb25fb2YgfmxvYyB0ID0gWyV0eXBlOiBbJXQgdF0gLT4gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb24uU2FmZS50XVxuICBsZXQgbWtfdHlwZSB0ZCA9IGNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIH5mOnR5cGVfb2ZfeW9qc29uX29mXG5cbiAgbGV0IG1rX3NpZyB+bG9jOl8gfnBhdGg6XyAoX3JmLCB0ZHMpID1cbiAgICBMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgbGV0IGxvYyA9IHRkLnB0eXBlX2xvYyBpblxuICAgICAgcHNpZ192YWx1ZVxuICAgICAgICB+bG9jXG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIH5uYW1lOihMb2NhdGVkLm1hcCAoKCBeICkgXCJ5b2pzb25fb2ZfXCIpIHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgIH50eXBlXzoobWtfdHlwZSB0ZClcbiAgICAgICAgICAgfnByaW06W10pKVxuICA7O1xuZW5kXG5cbigqIEdlbmVyYXRlcyB0aGUgc2lnbmF0dXJlIGZvciB0eXBlIGNvbnZlcnNpb24gZnJvbSBZb2pzb25zICopXG5tb2R1bGUgU2lnX2dlbmVyYXRlX29mX3lvanNvbiA9IHN0cnVjdFxuICBsZXQgdHlwZV9vZl9vZl95b2pzb24gfmxvYyB0ID0gWyV0eXBlOiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbi5TYWZlLnQgLT4gWyV0IHRdXVxuICBsZXQgbWtfdHlwZSB0ZCA9IGNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIH5mOnR5cGVfb2Zfb2ZfeW9qc29uXG5cbiAgbGV0IHNpZ19vZl90ZCB3aXRoX3BvbHkgdGQgPVxuICAgIGxldCBvZl95b2pzb25fdHlwZSA9IG1rX3R5cGUgdGQgaW5cbiAgICBsZXQgbG9jID0geyB0ZC5wdHlwZV9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBsZXQgb2ZfeW9qc29uX2l0ZW0gPVxuICAgICAgcHNpZ192YWx1ZVxuICAgICAgICB+bG9jXG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIH5uYW1lOihMb2NhdGVkLm1hcCAoZnVuIHMgLT4gcyBeIFwiX29mX3lvanNvblwiKSB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICB+dHlwZV86b2ZfeW9qc29uX3R5cGVcbiAgICAgICAgICAgfnByaW06W10pXG4gICAgaW5cbiAgICBtYXRjaCB3aXRoX3BvbHksIGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgdGQgfnNpZ186dHJ1ZSB3aXRoXG4gICAgfCB0cnVlLCBgU3VyZWx5X25vdCAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgIH5sb2NcbiAgICAgICAgXCJTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLnNpZ19vZl90ZDogeW9qc29uX3BvbHkgYW5ub3RhdGlvbiBidXQgdHlwZSBpcyBzdXJlbHkgbm90IFxcXG4gICAgICAgICBhIHBvbHltb3JwaGljIHZhcmlhbnRcIlxuICAgIHwgZmFsc2UsIChgU3VyZWx5X25vdCB8IGBNYXliZSkgLT4gWyBvZl95b2pzb25faXRlbSBdXG4gICAgfCAodHJ1ZSB8IGZhbHNlKSwgYERlZmluaXRlbHkgfCB0cnVlLCBgTWF5YmUgLT5cbiAgICAgIFsgb2ZfeW9qc29uX2l0ZW1cbiAgICAgIDsgcHNpZ192YWx1ZVxuICAgICAgICAgIH5sb2NcbiAgICAgICAgICAodmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgfm5hbWU6KExvY2F0ZWQubWFwIChmdW4gcyAtPiBcIl9fXCIgXiBzIF4gXCJfb2ZfeW9qc29uX19cIikgdGQucHR5cGVfbmFtZSlcbiAgICAgICAgICAgICB+dHlwZV86b2ZfeW9qc29uX3R5cGVcbiAgICAgICAgICAgICB+cHJpbTpbXSlcbiAgICAgIF1cbiAgOztcblxuICBsZXQgbWtfc2lnIH5wb2x5IH5sb2M6XyB+cGF0aDpfIChfcmYsIHRkcykgPSBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOihzaWdfb2ZfdGQgcG9seSlcbmVuZFxuXG5tb2R1bGUgU3RyX2dlbmVyYXRlX3lvanNvbl9vZiA9IHN0cnVjdFxuICAoKiBIYW5kbGluZyBvZiByZWNvcmQgZGVmYXVsdHMgKilcblxuICBsZXQgeW9qc29uX29mX3R5cGVfY29uc3RyIH5sb2MgaWQgYXJncyA9XG4gICAgdHlwZV9jb25zdHJfY29udiB+bG9jIGlkIH5mOihmdW4gcyAtPiBcInlvanNvbl9vZl9cIiBeIHMpIGFyZ3NcbiAgOztcblxuICAoKiBDb252ZXJzaW9uIG9mIHR5cGVzICopXG4gIGxldCByZWMgeW9qc29uX29mX3R5cGVcbiAgICAgICAgICAgIH4odHlwZXZhcl9oYW5kbGluZyA6IFsgYG9rIG9mIFJlbmFtaW5nLnQgfCBgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgXSlcbiAgICAgICAgICAgIHR5cFxuICAgIDogRnVuX29yX21hdGNoLnRcbiAgICA9XG4gICAgbGV0IGxvYyA9IHsgdHlwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbWF0Y2ggdHlwIHdpdGhcbiAgICB8IF8gd2hlbiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBBdHRycy5vcGFxdWUgdHlwKSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9vcGFxdWVdXG4gICAgfCBbJXR5cGU6IF9dIC0+IEZ1biBbJWV4cHIgZnVuIF8gLT4gYFN0cmluZyBcIl9cIl1cbiAgICB8IFsldHlwZTogWyV0PyBfXSB5b2pzb25fb3BhcXVlXSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9vcGFxdWVdXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdHVwbGUgdHA7IF8gfSAtPlxuICAgICAgTWF0Y2ggWyB5b2pzb25fb2ZfdHVwbGUgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHApIF1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXIgcGFybTsgXyB9IC0+XG4gICAgICAobWF0Y2ggdHlwZXZhcl9oYW5kbGluZyB3aXRoXG4gICAgICAgfCBgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgLT5cbiAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIFwiVHlwZSB2YXJpYWJsZXMgbm90IGFsbG93ZWQgaW4gWyUleW9qc29uX29mOiBdLiBQbGVhc2UgdXNlIGxvY2FsbHkgYWJzdHJhY3QgXFxcbiAgICAgICAgICAgIHR5cGVzIGluc3RlYWQuXCJcbiAgICAgICB8IGBvayByZW5hbWluZyAtPlxuICAgICAgICAgKG1hdGNoIFJlbmFtaW5nLmJpbmRpbmdfa2luZCByZW5hbWluZyBwYXJtIHdpdGhcbiAgICAgICAgICB8IFVuaXZlcnNhbGx5X2JvdW5kIHBhcm0gLT4gRnVuIChldmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybSkpXG4gICAgICAgICAgfCBFeGlzdGVudGlhbGx5X2JvdW5kIC0+IHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIFsldHlwZTogX10pKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIGFyZ3MpOyBfIH0gLT5cbiAgICAgIEZ1blxuICAgICAgICAoeW9qc29uX29mX3R5cGVfY29uc3RyXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgaWRcbiAgICAgICAgICAgKExpc3QubWFwIGFyZ3MgfmY6KGZ1biB0cCAtPlxuICAgICAgICAgICAgICBGdW5fb3JfbWF0Y2guZXhwciB+bG9jICh5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZyB0cCkpKSlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hcnJvdyAoXywgXywgXyk7IF8gfSAtPlxuICAgICAgRnVuXG4gICAgICAgIFslZXhwclxuICAgICAgICAgIGZ1biBfZiAtPlxuICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi55b2pzb25fb2ZfZnVuIFBweF95b2pzb25fY29udl9saWIuaWdub3JlXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZHMsIF8sIF8pOyBfIH0gLT5cbiAgICAgIHlvanNvbl9vZl92YXJpYW50IH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHJvd19maWVsZHMpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAocGFybXMsIHBvbHlfdHApOyBfIH0gLT5cbiAgICAgIHlvanNvbl9vZl9wb2x5IH50eXBldmFyX2hhbmRsaW5nIHBhcm1zIHBvbHlfdHBcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9vYmplY3QgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jbGFzcyAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2FsaWFzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcGFja2FnZSBfOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9leHRlbnNpb24gXzsgXyB9IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIlR5cGUgdW5zdXBwb3J0ZWQgZm9yIHBweCBbeW9qc29uX29mXSBjb252ZXJzaW9uXCJcblxuICAoKiBDb252ZXJzaW9uIG9mIHR1cGxlcyAqKVxuICBhbmQgeW9qc29uX29mX3R1cGxlIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHRwcykgPVxuICAgIGxldCBmcHMgPSBMaXN0Lm1hcCB+ZjooZnVuIHRwIC0+IHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIHRwKSB0cHMgaW5cbiAgICBsZXQgYmluZGluZ3MsIHB2YXJzLCBldmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyBmcHMgaW5cbiAgICBsZXQgaW5fZXhwciA9IFslZXhwciBgTGlzdCBbJWUgZWxpc3QgfmxvYyBldmFyc11dIGluXG4gICAgbGV0IGV4cHIgPSBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBpbl9leHByIGluXG4gICAgcHBhdF90dXBsZSB+bG9jIHB2YXJzIC0tPiBleHByXG5cbiAgKCogQ29udmVyc2lvbiBvZiB2YXJpYW50IHR5cGVzICopXG4gIGFuZCB5b2pzb25fb2ZfdmFyaWFudFxuICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAoKGxvYywgcm93X2ZpZWxkcykgOiBMb2NhdGlvbi50ICogcm93X2ZpZWxkIGxpc3QpXG4gICAgOiBGdW5fb3JfbWF0Y2gudFxuICAgID1cbiAgICBsZXQgaXRlbSByb3cgPVxuICAgICAgbGV0IG5hbWVfb3ZlcnJpZGUgPSBBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9wb2x5bW9ycGhpY192YXJpYW50X25hbWUgcm93IGluXG4gICAgICBtYXRjaCByb3cucHJmX2Rlc2Mgd2l0aFxuICAgICAgfCBSdGFnIChjbnN0ciwgdHJ1ZSwgW10pIC0+XG4gICAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgICBwcGF0X3ZhcmlhbnQgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsKSBOb25lXG4gICAgICAgIC0tPiBbJWV4cHIgYExpc3QgWyBgU3RyaW5nIFslZSBlc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKV0gXV1cbiAgICAgIHwgUnRhZyAoY25zdHIsIGZhbHNlLCBbIHRwIF0pIC0+XG4gICAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgICBsZXQgYXJncyA9XG4gICAgICAgICAgbWF0Y2ggdHAucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFB0eXBfdHVwbGUgdHBzIC0+IHRwc1xuICAgICAgICAgIHwgXyAtPiBbIHRwIF1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNuc3RyX2V4cHIgPSBbJWV4cHIgYFN0cmluZyBbJWUgZXN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCldXSBpblxuICAgICAgICBsZXQgeW9qc29uX29mX2FyZ3MgPSBMaXN0Lm1hcCB+ZjooeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcpIGFyZ3MgaW5cbiAgICAgICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyB5b2pzb25fb2ZfYXJncyBpblxuICAgICAgICBsZXQgcGF0dCA9XG4gICAgICAgICAgbWF0Y2ggcGF0dHMgd2l0aFxuICAgICAgICAgIHwgWyBwYXR0IF0gLT4gcGF0dFxuICAgICAgICAgIHwgXyAtPiBwcGF0X3R1cGxlIH5sb2MgcGF0dHNcbiAgICAgICAgaW5cbiAgICAgICAgcHBhdF92YXJpYW50IChMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwpIH5sb2MgKFNvbWUgcGF0dClcbiAgICAgICAgLS0+IHBleHBfbGV0XG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgICAgIGJpbmRpbmdzXG4gICAgICAgICAgICAgIFslZXhwciBgTGlzdCBbJWUgZWxpc3QgfmxvYyAoY25zdHJfZXhwciA6OiB2YXJzKV1dXG4gICAgICB8IFJpbmhlcml0IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBbXSk7IF8gfSAtPlxuICAgICAgICBwcGF0X2FsaWFzIH5sb2MgKHBwYXRfdHlwZSB+bG9jIGlkKSAoTG9jLm1ha2UgXCJ2XCIgfmxvYylcbiAgICAgICAgLS0+IHlvanNvbl9vZl90eXBlX2NvbnN0ciB+bG9jIGlkIFsgWyVleHByIHZdIF1cbiAgICAgIHwgUnRhZyAoXywgdHJ1ZSwgWyBfIF0pIHwgUnRhZyAoXywgXywgXyA6OiBfIDo6IF8pIC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidW5zdXBwb3J0ZWQ6IHlvanNvbl9vZl92YXJpYW50L1J0YWcvJlwiXG4gICAgICB8IFJpbmhlcml0ICh7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgXyA6OiBfKTsgXyB9IGFzIHR5cCkgLT5cbiAgICAgICAgbGV0IGNhbGwgPSBGdW5fb3JfbWF0Y2guZXhwciB+bG9jICh5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZyB0eXApIGluXG4gICAgICAgIHBwYXRfYWxpYXMgfmxvYyAocHBhdF90eXBlIH5sb2MgaWQpIChMb2MubWFrZSBcInZcIiB+bG9jKSAtLT4gWyVleHByIFslZSBjYWxsXSB2XVxuICAgICAgfCBSaW5oZXJpdCBfIC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidW5zdXBwb3J0ZWQ6IHlvanNvbl9vZl92YXJpYW50L1Jpbmhlcml0L25vbi1pZFwiXG4gICAgICAoKiBpbXBvc3NpYmxlPyopXG4gICAgICB8IFJ0YWcgKF8sIGZhbHNlLCBbXSkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgaW5cbiAgICBNYXRjaCAoTGlzdC5tYXAgfmY6aXRlbSByb3dfZmllbGRzKVxuXG4gICgqIFBvbHltb3JwaGljIHJlY29yZCBmaWVsZHMgKilcbiAgYW5kIHlvanNvbl9vZl9wb2x5IH50eXBldmFyX2hhbmRsaW5nIHBhcm1zIHRwID1cbiAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICBtYXRjaCB0eXBldmFyX2hhbmRsaW5nIHdpdGhcbiAgICB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciAtPlxuICAgICAgKCogU2hvdWxkIGJlIGltcG9zc2libGUgYmVjYXVzZSBbeW9qc29uX29mX3BvbHldIGlzIG9ubHkgY2FsbGVkIG9uIHBvbHltb3JwaGljIHJlY29yZFxuICAgICAgICAgZmllbGRzIGFuZCByZWNvcmQgdHlwZSBkZWZpbml0aW9ucyBjYW4ndCBvY2N1ciBpbiB0eXBlIGV4cHJlc3Npb25zLiAqKVxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwb2x5bW9ycGhpYyB0eXBlIGluIGEgdHlwZSBleHByZXNzaW9uXCJcbiAgICB8IGBvayByZW5hbWluZyAtPlxuICAgICAgbGV0IGJpbmRpbmdzID1cbiAgICAgICAgbGV0IG1rX2JpbmRpbmcgcGFybSA9XG4gICAgICAgICAgdmFsdWVfYmluZGluZ1xuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgfnBhdDoocHZhciB+bG9jIChcIl9vZl9cIiBeIHBhcm0udHh0KSlcbiAgICAgICAgICAgIH5leHByOlslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9vcGFxdWVdXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIH5mOm1rX2JpbmRpbmcgcGFybXNcbiAgICAgIGluXG4gICAgICBsZXQgcmVuYW1pbmcgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdCBwYXJtcyB+aW5pdDpyZW5hbWluZyB+ZjpSZW5hbWluZy5hZGRfdW5pdmVyc2FsbHlfYm91bmRcbiAgICAgIGluXG4gICAgICAobWF0Y2ggeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHAgd2l0aFxuICAgICAgIHwgRnVuIGZ1bl9leHByIC0+IEZ1biAocGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgZnVuX2V4cHIpXG4gICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT5cbiAgICAgICAgIE1hdGNoXG4gICAgICAgICAgIFsgWyVwYXQ/IGFyZ11cbiAgICAgICAgICAgICAtLT4gcGV4cF9sZXRcbiAgICAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgICAgICAgICAgYmluZGluZ3NcbiAgICAgICAgICAgICAgICAgICAocGV4cF9tYXRjaCB+bG9jIFslZXhwciBhcmddIG1hdGNoaW5ncylcbiAgICAgICAgICAgXSlcbiAgOztcblxuICAoKiBDb252ZXJzaW9uIG9mIHJlY29yZCB0eXBlcyAqKVxuXG4gIGxldCBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lID1cbiAgICBsZXQgcCA9IExvYy5tYWtlIChMb25naWRlbnQuTGlkZW50IG5hbWUpIH5sb2MsIHB2YXIgfmxvYyAoXCJ2X1wiIF4gbmFtZSkgaW5cbiAgICBwYXR0IEAgWyBwIF1cbiAgOztcblxuICB0eXBlIGlzX2VtcHR5X2V4cHIgPVxuICAgIHwgSW5zcGVjdF92YWx1ZSBvZiAobG9jYXRpb24gLT4gZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uKVxuICAgIHwgSW5zcGVjdF95b2pzb24gb2YgKGNudl9leHByOmV4cHJlc3Npb24gLT4gbG9jYXRpb24gLT4gZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uKVxuXG4gIGxldCB5b2pzb25fb2ZfcmVjb3JkX2ZpZWxkIH5yZW5hbWluZyBwYXR0IGV4cHIgbmFtZSB0cCA/eW9qc29uX29mIGlzX2VtcHR5X2V4cHIga2V5ID1cbiAgICBsZXQgbG9jID0geyB0cC5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIGxldCBwYXR0ID0gbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSBpblxuICAgIGxldCBjbnZfZXhwciA9XG4gICAgICBtYXRjaCB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cCB3aXRoXG4gICAgICB8IEZ1biBleHAgLT4gZXhwXG4gICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBbJWV4cHIgZnVuIGVsIC0+IFslZSBwZXhwX21hdGNoIH5sb2MgWyVleHByIGVsXSBtYXRjaGluZ3NdXVxuICAgIGluXG4gICAgbGV0IGNudl9leHByID1cbiAgICAgIG1hdGNoIHlvanNvbl9vZiB3aXRoXG4gICAgICB8IE5vbmUgLT4gY252X2V4cHJcbiAgICAgIHwgU29tZSB5b2pzb25fb2YgLT4gWyVleHByIFslZSB5b2pzb25fb2ZdIFslZSBjbnZfZXhwcl1dXG4gICAgaW5cbiAgICBsZXQgZXhwciA9XG4gICAgICBsZXQgdl9uYW1lID0gXCJ2X1wiIF4gbmFtZSBpblxuICAgICAgWyVleHByXG4gICAgICAgIGxldCBibmRzID1cbiAgICAgICAgICBbJWVcbiAgICAgICAgICAgIG1hdGNoIGlzX2VtcHR5X2V4cHIgd2l0aFxuICAgICAgICAgICAgfCBJbnNwZWN0X3ZhbHVlIGlzX2VtcHR5X2V4cHIgLT5cbiAgICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICAgaWYgWyVlIGlzX2VtcHR5X2V4cHIgbG9jIChldmFyIH5sb2Mgdl9uYW1lKV1cbiAgICAgICAgICAgICAgICB0aGVuIGJuZHNcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIGxldCBhcmcgPSBbJWUgY252X2V4cHJdIFslZSBldmFyIH5sb2Mgdl9uYW1lXSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGJuZCA9IFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnIGluXG4gICAgICAgICAgICAgICAgICBibmQgOjogYm5kcyldXG4gICAgICAgICAgICB8IEluc3BlY3RfeW9qc29uIGlzX2VtcHR5X2V4cHIgLT5cbiAgICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gWyVlIGV2YXIgfmxvYyB2X25hbWVdIGluXG4gICAgICAgICAgICAgICAgaWYgWyVlIGlzX2VtcHR5X2V4cHIgfmNudl9leHByIGxvYyBbJWV4cHIgYXJnXV1cbiAgICAgICAgICAgICAgICB0aGVuIGJuZHNcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIGxldCBibmQgPSBbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZyBpblxuICAgICAgICAgICAgICAgICAgYm5kIDo6IGJuZHMpXV1cbiAgICAgICAgaW5cbiAgICAgICAgWyVlIGV4cHJdXVxuICAgIGluXG4gICAgcGF0dCwgZXhwclxuICA7O1xuXG4gIGxldCBkaXNhbGxvd190eXBlX3ZhcmlhYmxlc19hbmRfcmVjdXJzaXZlX29jY3VycmVuY2VzIH50eXBlc19iZWluZ19kZWZpbmVkIH5sb2MgfndoeSB0cCA9XG4gICAgbGV0IGRpc2FsbG93X3ZhcmlhYmxlcyA9XG4gICAgICBsZXQgaXRlciA9XG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLml0ZXIgYXMgc3VwZXJcblxuICAgICAgICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgPVxuICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgIHwgUHR5cF92YXIgdiAtPlxuICAgICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgXCJbQHlvanNvbl9kcm9wX2RlZmF1bHQuJXNdIHdhcyB1c2VkLCBidXQgdGhlIHR5cGUgb2YgdGhlIGZpZWxkIGNvbnRhaW5zIFxcXG4gICAgICAgICAgICAgICAgIGEgdHlwZSB2YXJpYWJsZTogJyVzLlxcblxcXG4gICAgICAgICAgICAgICAgIENvbXBhcmlzb24gaXMgbm90IGF2YWlhYmxlIGZvciB0eXBlIHZhcmlhYmxlcy5cXG5cXFxuICAgICAgICAgICAgICAgICBDb25zaWRlciB1c2luZyBbQHlvanNvbl9kcm9wX2lmIF9dIG9yIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25dIFxcXG4gICAgICAgICAgICAgICAgIGluc3RlYWQuXCJcbiAgICAgICAgICAgICAgICAobWF0Y2ggd2h5IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgY29tcGFyZSAtPiBcImNvbXBhcmVcIlxuICAgICAgICAgICAgICAgICB8IGBlcXVhbCAtPiBcImVxdWFsXCIpXG4gICAgICAgICAgICAgICAgdlxuICAgICAgICAgICAgfCB0IC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIHRcbiAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgaXRlciNjb3JlX3R5cGVcbiAgICBpblxuICAgIGxldCBkaXNhbGxvd19yZWN1cnNpdmVfb2NjdXJyZW5jZXMgPVxuICAgICAgbWF0Y2ggdHlwZXNfYmVpbmdfZGVmaW5lZCB3aXRoXG4gICAgICB8IGBOb25yZWN1cnNpdmUgLT4gZnVuIF8gLT4gKClcbiAgICAgIHwgYFJlY3Vyc2l2ZSB0eXBlc19iZWluZ19kZWZpbmVkIC0+XG4gICAgICAgIGxldCBpdGVyID1cbiAgICAgICAgICBvYmplY3RcbiAgICAgICAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLml0ZXIgYXMgc3VwZXJcblxuICAgICAgICAgICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKHsgbG9jID0gXzsgdHh0ID0gTGlkZW50IHMgfSwgXykgYXMgdCAtPlxuICAgICAgICAgICAgICAgIGlmIFNldC5tZW0gdHlwZXNfYmVpbmdfZGVmaW5lZCBzXG4gICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICAgICAgXCJbQHlvanNvbl9kcm9wX2RlZmF1bHQuJXNdIHdhcyB1c2VkLCBidXQgdGhlIHR5cGUgb2YgdGhlIGZpZWxkIFxcXG4gICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhIHR5cGUgZGVmaW5lZCBpbiB0aGUgY3VycmVudCByZWN1cnNpdmUgYmxvY2s6ICVzLlxcblxcXG4gICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQuXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIHVzaW5nIFtAeW9qc29uX2Ryb3BfaWYgX10gb3IgW0B5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvbl0gXFxcbiAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQuXCJcbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHdoeSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IGBjb21wYXJlIC0+IFwiY29tcGFyZVwiXG4gICAgICAgICAgICAgICAgICAgICB8IGBlcXVhbCAtPiBcImVxdWFsXCIpXG4gICAgICAgICAgICAgICAgICAgIHM7XG4gICAgICAgICAgICAgICAgc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgICAgICAgICAgICB8IHQgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgICAgICAgIGVuZFxuICAgICAgICBpblxuICAgICAgICBpdGVyI2NvcmVfdHlwZVxuICAgIGluXG4gICAgZGlzYWxsb3dfdmFyaWFibGVzIHRwO1xuICAgIGRpc2FsbG93X3JlY3Vyc2l2ZV9vY2N1cnJlbmNlcyB0cFxuICA7O1xuXG4gIGxldCB5b2pzb25fb2ZfZGVmYXVsdF9maWVsZFxuICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICBob3dcbiAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgIHBhdHRcbiAgICAgICAgZXhwclxuICAgICAgICBuYW1lXG4gICAgICAgIHRwXG4gICAgICAgID95b2pzb25fb2ZcbiAgICAgICAgZGVmYXVsdFxuICAgICAgICBrZXlcbiAgICA9XG4gICAgbGV0IGlzX2VtcHR5ID1cbiAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICB8IGB5b2pzb24gLT5cbiAgICAgICAgSW5zcGVjdF95b2pzb25cbiAgICAgICAgICAoZnVuIH5jbnZfZXhwciBsb2MgeW9qc29uX2V4cHIgLT5cbiAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIucG9seV9lcXVhbCAoWyVlIGNudl9leHByXSBbJWUgZGVmYXVsdF0pIFslZSB5b2pzb25fZXhwcl1dKVxuICAgICAgfCAoYG5vX2FyZyB8IGBmdW5jIF8gfCBgY29tcGFyZSB8IGBlcXVhbCkgYXMgaG93IC0+XG4gICAgICAgIGxldCBlcXVhbGl0eV9mIGxvYyA9XG4gICAgICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgICAgICB8IGBub19hcmcgLT5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLnBvbHlfZXF1YWwgW0BvY2FtbC5wcHdhcm5pbmdcbiAgICAgICAgICAgICAgICBcIltAeW9qc29uX2Ryb3BfZGVmYXVsdF0gaXMgZGVwcmVjYXRlZDogXFxcbiAgICAgICAgICAgICAgICAgcGxlYXNlIHVzZSBvbmUgb2Y6XFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQgZl0gYW5kIGdpdmUgYW4gXFxcbiAgICAgICAgICAgICAgICAgZXhwbGljaXQgZXF1YWxpdHkgZnVuY3Rpb24gKFtmID0gXFxcbiAgICAgICAgICAgICAgICAgUG9seS4oPSldIGNvcnJlc3BvbmRzIHRvIHRoZSBvbGQgXFxcbiAgICAgICAgICAgICAgICAgYmVoYXZpb3IpXFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQuY29tcGFyZV0gaWYgdGhlIFxcXG4gICAgICAgICAgICAgICAgIHR5cGUgc3VwcG9ydHMgWyVjb21wYXJlXVxcblxcXG4gICAgICAgICAgICAgICAgIC0gW0B5b2pzb25fZHJvcF9kZWZhdWx0LmVxdWFsXSBpZiB0aGUgXFxcbiAgICAgICAgICAgICAgICAgdHlwZSBzdXBwb3J0cyBbJWVxdWFsXVxcblxcXG4gICAgICAgICAgICAgICAgIC0gW0B5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvbl0gaWYgeW91IFxcXG4gICAgICAgICAgICAgICAgIHdhbnQgdG8gY29tcGFyZSB0aGUgeW9qc29uIFxcXG4gICAgICAgICAgICAgICAgIHJlcHJlc2VudGF0aW9uc1xcblwiXV1cbiAgICAgICAgICB8IGBmdW5jIGYgLT4gZlxuICAgICAgICAgIHwgYGNvbXBhcmUgLT5cbiAgICAgICAgICAgIGRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZWN1cnNpdmVfb2NjdXJyZW5jZXNcbiAgICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICAgfndoeTpgY29tcGFyZVxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIHRwO1xuICAgICAgICAgICAgWyVleHByIFslY29tcGFyZS5lcXVhbDogWyV0IHRwXV1dXG4gICAgICAgICAgfCBgZXF1YWwgLT5cbiAgICAgICAgICAgIGRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZWN1cnNpdmVfb2NjdXJyZW5jZXNcbiAgICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICAgfndoeTpgZXF1YWxcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICB0cDtcbiAgICAgICAgICAgIFslZXhwciBbJWVxdWFsOiBbJXQgdHBdXV1cbiAgICAgICAgaW5cbiAgICAgICAgSW5zcGVjdF92YWx1ZSAoZnVuIGxvYyBleHByIC0+IFslZXhwciBbJWUgZXF1YWxpdHlfZiBsb2NdIFslZSBkZWZhdWx0XSBbJWUgZXhwcl1dKVxuICAgIGluXG4gICAgeW9qc29uX29mX3JlY29yZF9maWVsZCB+cmVuYW1pbmcgcGF0dCBleHByIG5hbWUgdHAgP3lvanNvbl9vZiBpc19lbXB0eSBrZXlcbiAgOztcblxuICBsZXQgeW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3QgfnR5cGVzX2JlaW5nX2RlZmluZWQgfnJlbmFtaW5nIGxvYyBmbGRzIH53cmFwX2V4cHIgPVxuICAgIGxldCBjb2xsICgocGF0dCA6IChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0KSwgZXhwcikgbGQgPVxuICAgICAgbGV0IG5hbWUgPSBsZC5wbGRfbmFtZS50eHQgaW5cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6bGQucGxkX25hbWUudHh0IChBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9rZXkgbGQpXG4gICAgICBpblxuICAgICAgbGV0IGxvYyA9IHsgbGQucGxkX25hbWUubG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICBtYXRjaCBBdHRycy5SZWNvcmRfZmllbGRfaGFuZGxlci5Zb2pzb25fb2YuY3JlYXRlIH5sb2MgbGQgd2l0aFxuICAgICAgfCBgeW9qc29uX29wdGlvbiB0cCAtPlxuICAgICAgICBsZXQgcGF0dCA9IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgaW5cbiAgICAgICAgbGV0IHZuYW1lID0gWyVleHByIHZdIGluXG4gICAgICAgIGxldCBjbnZfZXhwciA9XG4gICAgICAgICAgRnVuX29yX21hdGNoLnVucm9sbFxuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgdm5hbWVcbiAgICAgICAgICAgICh5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgbGV0IGJuZHMgPVxuICAgICAgICAgICAgICBtYXRjaCBbJWUgZXZhciB+bG9jIChcInZfXCIgXiBuYW1lKV0gd2l0aFxuICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmUgLT4gYm5kc1xuICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgdiAtPlxuICAgICAgICAgICAgICAgIGxldCBhcmcgPSBbJWUgY252X2V4cHJdIGluXG4gICAgICAgICAgICAgICAgbGV0IGJuZCA9IFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnIGluXG4gICAgICAgICAgICAgICAgYm5kIDo6IGJuZHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBbJWUgZXhwcl1dXG4gICAgICAgIGluXG4gICAgICAgIHBhdHQsIGV4cHJcbiAgICAgIHwgYGRyb3BfZGVmYXVsdCBob3cgLT5cbiAgICAgICAgbGV0IHRwID0gbGQucGxkX3R5cGUgaW5cbiAgICAgICAgKG1hdGNoIEF0dHJpYnV0ZS5nZXQgQXR0cnMuZGVmYXVsdCBsZCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJubyBkZWZhdWx0IHRvIGRyb3BcIlxuICAgICAgICAgfCBTb21lIGRlZmF1bHQgLT5cbiAgICAgICAgICAgeW9qc29uX29mX2RlZmF1bHRfZmllbGRcbiAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgIGhvd1xuICAgICAgICAgICAgIH5yZW5hbWluZ1xuICAgICAgICAgICAgIHBhdHRcbiAgICAgICAgICAgICBleHByXG4gICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgIHRwXG4gICAgICAgICAgICAgZGVmYXVsdFxuICAgICAgICAgICAgIGtleSlcbiAgICAgIHwgYGRyb3BfaWYgdGVzdCAtPlxuICAgICAgICBsZXQgdHAgPSBsZC5wbGRfdHlwZSBpblxuICAgICAgICB5b2pzb25fb2ZfcmVjb3JkX2ZpZWxkXG4gICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgcGF0dFxuICAgICAgICAgIGV4cHJcbiAgICAgICAgICBuYW1lXG4gICAgICAgICAgdHBcbiAgICAgICAgICAoSW5zcGVjdF92YWx1ZSAoZnVuIGxvYyBleHByIC0+IFslZXhwciBbJWUgdGVzdF0gWyVlIGV4cHJdXSkpXG4gICAgICAgICAga2V5XG4gICAgICB8IGBrZWVwIGFzIHRlc3QgLT5cbiAgICAgICAgbGV0IHRwID0gbGQucGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBhdHQgPSBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lIGluXG4gICAgICAgIGxldCB2bmFtZSA9IGV2YXIgfmxvYyAoXCJ2X1wiIF4gbmFtZSkgaW5cbiAgICAgICAgbGV0IGNudl9leHByID1cbiAgICAgICAgICBGdW5fb3JfbWF0Y2gudW5yb2xsXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB2bmFtZVxuICAgICAgICAgICAgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kcyA9XG4gICAgICAgICAgbWF0Y2ggdGVzdCB3aXRoXG4gICAgICAgICAgfCBga2VlcCAtPlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIGxldCBhcmcgPSBbJWUgY252X2V4cHJdIGluXG4gICAgICAgICAgICAgIChbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZykgOjogYm5kc11cbiAgICAgICAgICB8IGBvbWl0X25pbCAtPlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIG1hdGNoIFslZSBjbnZfZXhwcl0gd2l0aFxuICAgICAgICAgICAgICB8IGBOdWxsIC0+IGJuZHNcbiAgICAgICAgICAgICAgfCBhcmcgLT4gKFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnKSA6OiBibmRzXVxuICAgICAgICBpblxuICAgICAgICAoIHBhdHRcbiAgICAgICAgLCBbJWV4cHJcbiAgICAgICAgICBsZXQgYm5kcyA9IFslZSBibmRzXSBpblxuICAgICAgICAgIFslZSBleHByXV0gKVxuICAgIGluXG4gICAgbGV0IGluaXRfZXhwciA9IHdyYXBfZXhwciBbJWV4cHIgYm5kc10gaW5cbiAgICBsZXQgcGF0dCwgZXhwciA9IExpc3QuZm9sZF9sZWZ0IH5mOmNvbGwgfmluaXQ6KFtdLCBpbml0X2V4cHIpIGZsZHMgaW5cbiAgICAoIHBwYXRfcmVjb3JkIH5sb2MgcGF0dCBDbG9zZWRcbiAgICAsIFslZXhwclxuICAgICAgbGV0IGJuZHMgOiAoc3RyaW5nICogUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb24uU2FmZS50KSBsaXN0ID0gW10gaW5cbiAgICAgIFslZSBleHByXV0gKVxuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2Ygc3VtIHR5cGVzICopXG5cbiAgbGV0IGJyYW5jaF9zdW0gfnR5cGVzX2JlaW5nX2RlZmluZWQgcmVuYW1pbmcgfmxvYyBjb25zdHJfbGlkIGNvbnN0cl9zdHIgYXJncyA9XG4gICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgfCBQY3N0cl9yZWNvcmQgbGRzIC0+XG4gICAgICBsZXQgY25zdHJfZXhwciA9IFslZXhwciBgU3RyaW5nIFslZSBjb25zdHJfc3RyXV0gaW5cbiAgICAgIGxldCBwYXR0LCBleHByID1cbiAgICAgICAgeW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3RcbiAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgIH5yZW5hbWluZ1xuICAgICAgICAgIGxvY1xuICAgICAgICAgIGxkc1xuICAgICAgICAgIH53cmFwX2V4cHI6KGZ1biBleHByIC0+IFslZXhwciBgTGlzdCBbIFslZSBjbnN0cl9leHByXTsgYEFzc29jIFslZSBleHByXSBdXSlcbiAgICAgIGluXG4gICAgICBwcGF0X2NvbnN0cnVjdCB+bG9jIGNvbnN0cl9saWQgKFNvbWUgcGF0dCkgLS0+IGV4cHJcbiAgICB8IFBjc3RyX3R1cGxlIHBjZF9hcmdzIC0+XG4gICAgICAobWF0Y2ggcGNkX2FyZ3Mgd2l0aFxuICAgICAgIHwgW10gLT5cbiAgICAgICAgIHBwYXRfY29uc3RydWN0IH5sb2MgY29uc3RyX2xpZCBOb25lIC0tPiBbJWV4cHIgYExpc3QgWyBgU3RyaW5nIFslZSBjb25zdHJfc3RyXSBdXVxuICAgICAgIHwgYXJncyAtPlxuICAgICAgICAgbGV0IHlvanNvbl9vZl9hcmdzID1cbiAgICAgICAgICAgTGlzdC5tYXAgfmY6KHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpKSBhcmdzXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IGNuc3RyX2V4cHIgPSBbJWV4cHIgYFN0cmluZyBbJWUgY29uc3RyX3N0cl1dIGluXG4gICAgICAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIHlvanNvbl9vZl9hcmdzIGluXG4gICAgICAgICBsZXQgcGF0dCA9XG4gICAgICAgICAgIG1hdGNoIHBhdHRzIHdpdGhcbiAgICAgICAgICAgfCBbIHBhdHQgXSAtPiBwYXR0XG4gICAgICAgICAgIHwgXyAtPiBwcGF0X3R1cGxlIH5sb2MgcGF0dHNcbiAgICAgICAgIGluXG4gICAgICAgICBwcGF0X2NvbnN0cnVjdCB+bG9jIGNvbnN0cl9saWQgKFNvbWUgcGF0dClcbiAgICAgICAgIC0tPiBwZXhwX2xldFxuICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgICAgICBiaW5kaW5nc1xuICAgICAgICAgICAgICAgWyVleHByIGBMaXN0IFslZSBlbGlzdCB+bG9jIChjbnN0cl9leHByIDo6IHZhcnMpXV0pXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl9zdW0gfnR5cGVzX2JlaW5nX2RlZmluZWQgdHBzIGNkcyA9XG4gICAgRnVuX29yX21hdGNoLk1hdGNoXG4gICAgICAoTGlzdC5tYXAgY2RzIH5mOihmdW4gY2QgLT5cbiAgICAgICAgIGxldCByZW5hbWluZyA9IFJlbmFtaW5nLm9mX2dhZHQgdHBzIGNkIGluXG4gICAgICAgICBsZXQgY29uc3RyX2xpZCA9IExvY2F0ZWQubWFwIGxpZGVudCBjZC5wY2RfbmFtZSBpblxuICAgICAgICAgbGV0IGNvbnN0cl9uYW1lID1cbiAgICAgICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGNkIGluXG4gICAgICAgICAgIExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsIHw+IGVzdHJpbmcgfmxvYzpjZC5wY2RfbmFtZS5sb2NcbiAgICAgICAgIGluXG4gICAgICAgICBicmFuY2hfc3VtXG4gICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgIHJlbmFtaW5nXG4gICAgICAgICAgIH5sb2M6Y2QucGNkX2xvY1xuICAgICAgICAgICBjb25zdHJfbGlkXG4gICAgICAgICAgIGNvbnN0cl9uYW1lXG4gICAgICAgICAgIGNkLnBjZF9hcmdzKSlcbiAgOztcblxuICAoKiBFbXB0eSB0eXBlICopXG4gIGxldCB5b2pzb25fb2ZfbmlsIGxvYyA9IEZ1bl9vcl9tYXRjaC5GdW4gWyVleHByIGZ1biBfdiAtPiBhc3NlcnQgZmFsc2VdXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmcm9tIHR5cGUgZGVmaW5pdGlvbnMgKilcblxuICBsZXQgeW9qc29uX29mX3RkIH50eXBlc19iZWluZ19kZWZpbmVkIHRkID1cbiAgICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gICAgbGV0IHRwcyA9IExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+ZjpnZXRfdHlwZV9wYXJhbV9uYW1lIGluXG4gICAgbGV0IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gdHlwZV9uYW1lOyBsb2MgPSBfIH07IHB0eXBlX2xvYyA9IGxvYzsgXyB9ID0gdGQgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgYm9keSA9XG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgY2RzIC0+XG4gICAgICAgICAgeW9qc29uX29mX3N1bSB+dHlwZXNfYmVpbmdfZGVmaW5lZCAoTGlzdC5tYXAgdHBzIH5mOihmdW4geCAtPiB4LnR4dCkpIGNkc1xuICAgICAgICB8IFB0eXBlX3JlY29yZCBsZHMgLT5cbiAgICAgICAgICBsZXQgcmVuYW1pbmcgPSBSZW5hbWluZy5pZGVudGl0eSBpblxuICAgICAgICAgIGxldCBwYXR0LCBleHByID1cbiAgICAgICAgICAgIHlvanNvbl9vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0XG4gICAgICAgICAgICAgIH5yZW5hbWluZ1xuICAgICAgICAgICAgICBsb2NcbiAgICAgICAgICAgICAgbGRzXG4gICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgIH53cmFwX2V4cHI6KGZ1biBleHByIC0+IFslZXhwciBgQXNzb2MgWyVlIGV4cHJdXSlcbiAgICAgICAgICBpblxuICAgICAgICAgIE1hdGNoIFsgcGF0dCAtLT4gZXhwciBdXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPlxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwicHB4X3lvanNvbl9jb252OiBvcGVuIHR5cGVzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+XG4gICAgICAgICAgKG1hdGNoIHRkLnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IHlvanNvbl9vZl9uaWwgbG9jXG4gICAgICAgICAgIHwgU29tZSB0eSAtPiB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIFJlbmFtaW5nLmlkZW50aXR5KSB0eSlcbiAgICAgIGluXG4gICAgICBsZXQgaXNfcHJpdmF0ZV9hbGlhcyA9XG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQsIHRkLnB0eXBlX21hbmlmZXN0LCB0ZC5wdHlwZV9wcml2YXRlIHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCwgU29tZSBfLCBQcml2YXRlIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICBpblxuICAgICAgaWYgaXNfcHJpdmF0ZV9hbGlhc1xuICAgICAgdGhlbiAoXG4gICAgICAgICgqIFJlcGxhY2UgYWxsIHR5cGUgdmFyaWFibGUgYnkgXyB0byBhdm9pZCBnZW5lcmFsaXphdGlvbiBwcm9ibGVtcyAqKVxuICAgICAgICBsZXQgdHlfc3JjID1cbiAgICAgICAgICBjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB8PiByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3Jlc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbWFuaWZlc3QgPVxuICAgICAgICAgIG1hdGNoIHRkLnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgbWFuaWZlc3QgLT4gbWFuaWZlc3RcbiAgICAgICAgICB8IE5vbmUgLT4gTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ5b2pzb25fb2ZfdGQvbm8tbWFuaWZlc3RcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgdHlfZHN0ID0gcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IGNvZXJjaW9uID0gWyVleHByICh2IDogWyV0IHR5X3NyY10gOj4gWyV0IHR5X2RzdF0pXSBpblxuICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIGZ1biB2IC0+IFslZSBlYXBwbHkgfmxvYyBmdW5fZXhwciBbIGNvZXJjaW9uIF1dXVxuICAgICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBbJWV4cHIgZnVuIHYgLT4gWyVlIHBleHBfbWF0Y2ggfmxvYyBjb2VyY2lvbiBtYXRjaGluZ3NdXSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgKCogUHJldmVudCB2aW9sYXRpb24gb2YgdmFsdWUgcmVzdHJpY3Rpb24gYW5kIHByb2JsZW1zIHdpdGggcmVjdXJzaXZlIHR5cGVzIGJ5XG4gICAgICAgICAgIGV0YS1leHBhbmRpbmcgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKilcbiAgICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIGZ1biB2IC0+IFslZSBlYXBwbHkgfmxvYyBmdW5fZXhwciBbIFslZXhwciB2XSBdXV1cbiAgICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gcGV4cF9mdW5jdGlvbiB+bG9jIG1hdGNoaW5ncylcbiAgICBpblxuICAgIGxldCB0eXAgPSBTaWdfZ2VuZXJhdGVfeW9qc29uX29mLm1rX3R5cGUgdGQgaW5cbiAgICBsZXQgZnVuY19uYW1lID0gXCJ5b2pzb25fb2ZfXCIgXiB0eXBlX25hbWUgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgcGF0dHMgPSBMaXN0Lm1hcCB0cHMgfmY6KGZ1biBpZCAtPiBwdmFyIH5sb2MgKFwiX29mX1wiIF4gaWQudHh0KSkgaW5cbiAgICAgIGxldCByZWNfZmxhZyA9XG4gICAgICAgIG1hdGNoIHR5cGVzX2JlaW5nX2RlZmluZWQgd2l0aFxuICAgICAgICB8IGBSZWN1cnNpdmUgXyAtPiBSZWN1cnNpdmVcbiAgICAgICAgfCBgTm9ucmVjdXJzaXZlIC0+IE5vbnJlY3Vyc2l2ZVxuICAgICAgaW5cbiAgICAgIGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyB+cmVjX2ZsYWcgKGVhYnN0cmFjdCB+bG9jIHBhdHRzIGJvZHkpXG4gICAgaW5cbiAgICBbIGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmcgbG9jIHRkIHR5cCB+dHBzIH5mdW5jX25hbWUgYm9keSBdXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl90ZHMgfmxvYyB+cGF0aDpfIChyZWNfZmxhZywgdGRzKSA9XG4gICAgbGV0IHJlY19mbGFnID0gcmVhbGx5X3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgaW5cbiAgICBsZXQgdHlwZXNfYmVpbmdfZGVmaW5lZCA9XG4gICAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBgTm9ucmVjdXJzaXZlXG4gICAgICB8IFJlY3Vyc2l2ZSAtPlxuICAgICAgICBgUmVjdXJzaXZlXG4gICAgICAgICAgKFNldC5vZl9saXN0IChtb2R1bGUgU3RyaW5nKSAoTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT4gdGQucHR5cGVfbmFtZS50eHQpKSlcbiAgICBpblxuICAgIGxldCBiaW5kaW5ncyA9IExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KHlvanNvbl9vZl90ZCB+dHlwZXNfYmVpbmdfZGVmaW5lZCkgaW5cbiAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyByZWNfZmxhZyBiaW5kaW5nc1xuICA7O1xuZW5kXG5cbm1vZHVsZSBTdHJfZ2VuZXJhdGVfeW9qc29uX2ZpZWxkcyA9IHN0cnVjdFxuICBsZXQgeW9qc29uX2ZpZWxkc19vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0IGxvYyBmbGRzID1cbiAgICBsZXQgY29sbCBsZCA9XG4gICAgICBsZXQga2V5ID1cbiAgICAgICAgT3B0aW9uLnZhbHVlIH5kZWZhdWx0OmxkLnBsZF9uYW1lLnR4dCAoQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fa2V5IGxkKVxuICAgICAgaW5cbiAgICAgIGxldCBsb2MgPSBsZC5wbGRfbmFtZS5sb2MgaW5cbiAgICAgIGVzdHJpbmcgfmxvYyBrZXlcbiAgICBpblxuICAgIGVsaXN0IH5sb2MgKExpc3QubWFwIH5mOmNvbGwgZmxkcylcbiAgOztcblxuICBsZXQgeW9qc29uX2ZpZWxkc19vZl90ZCB0ZCA9XG4gICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgIGxldCB0cHMgPSBMaXN0Lm1hcCB0ZC5wdHlwZV9wYXJhbXMgfmY6Z2V0X3R5cGVfcGFyYW1fbmFtZSBpblxuICAgIGxldCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IHR5cGVfbmFtZTsgbG9jID0gXyB9OyBwdHlwZV9sb2MgPSBsb2M7IF8gfSA9IHRkIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICB8IFB0eXBlX3JlY29yZCBsZHMgLT4geW9qc29uX2ZpZWxkc19vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0IGxvYyBsZHNcbiAgICAgIHwgUHR5cGVfdmFyaWFudCBfIHwgUHR5cGVfb3BlbiB8IFB0eXBlX2Fic3RyYWN0IC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwicHB4X3lvanNvbl9jb252OiB5b2pzb25fZmllbGRzIG9ubHkgd29ya3Mgb24gcmVjb3Jkc1wiXG4gICAgaW5cbiAgICBsZXQgdHlwID0gWyV0eXBlOiBzdHJpbmcgbGlzdF0gaW5cbiAgICBsZXQgZnVuY19uYW1lID0gXCJ5b2pzb25fZmllbGRzX29mX1wiIF4gdHlwZV9uYW1lIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbGV0IHBhdHRzID0gTGlzdC5tYXAgdHBzIH5mOihmdW4gaWQgLT4gcHZhciB+bG9jIChcIl9maWVsZHNfb2ZfXCIgXiBpZC50eHQpKSBpblxuICAgICAgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSAoZWFic3RyYWN0IH5sb2MgcGF0dHMgYm9keSlcbiAgICBpblxuICAgIGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmcgbG9jIHRkIHR5cCB+dHBzIH5mdW5jX25hbWUgYm9keVxuICA7O1xuXG4gIGxldCB5b2pzb25fZmllbGRzX29mX3RkcyB+bG9jIH5wYXRoOl8gKF8sIHRkcykgPVxuICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZSAoTGlzdC5tYXAgdGRzIH5mOnlvanNvbl9maWVsZHNfb2ZfdGQpXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0cl9nZW5lcmF0ZV9vZl95b2pzb24gPSBzdHJ1Y3RcbiAgKCogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIHBvbHltb3JwaGljIHZhcmlhbnRzICopXG5cbiAgKCogSGFuZGxlIGJhY2t0cmFja2luZyB3aGVuIHZhcmlhbnRzIGRvIG5vdCBtYXRjaCAqKVxuICBsZXQgaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2ggbG9jIGV4cHIgPVxuICAgIFsgWyVwYXQ/IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaF0gLS0+IGV4cHIgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdG8gZ2VuZXJhdGUgYSBtYXRjaCBmb3IgdGhlIGxhc3RcbiAgICAgY2FzZSBvZiBtYXRjaGluZyBhIHZhcmlhbnQgKilcbiAgbGV0IGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG1hdGNoZXMgPVxuICAgIG1hdGNoIG1hdGNoX2xhc3QsIG1hdGNoZXMgd2l0aFxuICAgIHwgdHJ1ZSwgWyB7IHBjX2xocyA9IF87IHBjX2d1YXJkID0gTm9uZTsgcGNfcmhzID0gZXhwciB9IF1cbiAgICB8IF8sIFsgeyBwY19saHMgPSBbJXBhdD8gX107IHBjX2d1YXJkID0gTm9uZTsgcGNfcmhzID0gZXhwciB9IF0gLT4gZXhwclxuICAgIHwgXyAtPiBwZXhwX21hdGNoIH5sb2MgWyVleHByIGF0b21dIG1hdGNoZXNcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBtYWxmb3JtZWQgWW9qc29ucyAqKVxuICBsZXQgbWtfdmFyaWFudF9vdGhlcl9tYXRjaGVzIGxvYyB+cmV2X2VscyBjYWxsID1cbiAgICBsZXQgY29sbF9zdHJ1Y3RzIGFjYyAobG9jLCBsYWJlbCkgPVxuICAgICAgKHBzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXG4gICAgICAgLS0+XG4gICAgICAgbWF0Y2ggY2FsbCB3aXRoXG4gICAgICAgfCBgcHRhZ19ub19hcmdzIC0+XG4gICAgICAgICBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5wdGFnX25vX2FyZ3MgX3RwX2xvYyBfeW9qc29uXVxuICAgICAgIHwgYHB0YWdfdGFrZXNfYXJncyAtPlxuICAgICAgICAgWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIF90cF9sb2MgX3lvanNvbl0pXG4gICAgICA6OiBhY2NcbiAgICBpblxuICAgIGxldCBleGNfbm9fdmFyaWFudF9tYXRjaCA9XG4gICAgICBbJXBhdD8gX10gLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5vX3ZhcmlhbnRfbWF0Y2ggKCldXG4gICAgaW5cbiAgICBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsX3N0cnVjdHMgfmluaXQ6WyBleGNfbm9fdmFyaWFudF9tYXRjaCBdIHJldl9lbHNcbiAgOztcblxuICAoKiBTcGxpdCB0aGUgcm93IGZpZWxkcyBvZiBhIHZhcmlhbnQgdHlwZSBpbnRvIGxpc3RzIG9mIGF0b21pYyB2YXJpYW50cyxcbiAgICAgc3RydWN0dXJlZCB2YXJpYW50cywgYXRvbWljIHZhcmlhbnRzICsgaW5jbHVkZWQgdmFyaWFudCB0eXBlcyxcbiAgICAgYW5kIHN0cnVjdHVyZWQgdmFyaWFudHMgKyBpbmNsdWRlZCB2YXJpYW50IHR5cGVzLiAqKVxuICBsZXQgc3BsaXRfcm93X2ZpZWxkIH5sb2MgKGF0b21zLCBzdHJ1Y3RzLCBhaW5ocywgc2luaHMpIHJvd19maWVsZCA9XG4gICAgbGV0IG5hbWVfb3ZlcnJpZGUgPSBBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9wb2x5bW9ycGhpY192YXJpYW50X25hbWUgcm93X2ZpZWxkIGluXG4gICAgbWF0Y2ggcm93X2ZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICB8IFJ0YWcgKGNuc3RyLCB0cnVlLCBbXSkgLT5cbiAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgbGV0IHRwbCA9IGxvYywgbGFiZWwgaW5cbiAgICAgIHRwbCA6OiBhdG9tcywgc3RydWN0cywgYEEgdHBsIDo6IGFpbmhzLCBzaW5oc1xuICAgIHwgUnRhZyAoY25zdHIsIGZhbHNlLCBbIHRwIF0pIC0+XG4gICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUuY3JlYXRlIH5sYWJlbDpjbnN0ci50eHQgfm5hbWVfb3ZlcnJpZGUgaW5cbiAgICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgICAgYXRvbXMsIChsb2MsIGxhYmVsKSA6OiBzdHJ1Y3RzLCBhaW5ocywgYFMgKGxvYywgbGFiZWwsIHRwLCByb3dfZmllbGQpIDo6IHNpbmhzXG4gICAgfCBSaW5oZXJpdCBpbmggLT5cbiAgICAgIGxldCBpaW5oID0gYEkgaW5oIGluXG4gICAgICBhdG9tcywgc3RydWN0cywgaWluaCA6OiBhaW5ocywgaWluaCA6OiBzaW5oc1xuICAgIHwgUnRhZyAoXywgdHJ1ZSwgWyBfIF0pIHwgUnRhZyAoXywgXywgXyA6OiBfIDo6IF8pIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInNwbGl0X3Jvd19maWVsZC8mXCJcbiAgICB8IFJ0YWcgKF8sIGZhbHNlLCBbXSkgLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHR5cGVfY29uc3RyX29mX3lvanNvbiA/KGludGVybmFsID0gZmFsc2UpIH5sb2MgaWQgYXJncyA9XG4gICAgdHlwZV9jb25zdHJfY29udiBpZCBhcmdzIH5sb2MgfmY6KGZ1biBzIC0+XG4gICAgICBsZXQgcyA9IHMgXiBcIl9vZl95b2pzb25cIiBpblxuICAgICAgaWYgaW50ZXJuYWwgdGhlbiBcIl9fXCIgXiBzIF4gXCJfX1wiIGVsc2UgcylcbiAgOztcblxuICAoKiBDb252ZXJzaW9uIG9mIHR5cGVzICopXG4gIGxldCByZWMgdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgP2Z1bGxfdHlwZSA/KGludGVybmFsID0gZmFsc2UpIHR5cFxuICAgIDogRnVuX29yX21hdGNoLnRcbiAgICA9XG4gICAgbGV0IGxvYyA9IHsgdHlwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbWF0Y2ggdHlwIHdpdGhcbiAgICB8IF8gd2hlbiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBBdHRycy5vcGFxdWUgdHlwKSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252Lm9wYXF1ZV9vZl95b2pzb25dXG4gICAgfCBbJXR5cGU6IFsldD8gX10geW9qc29uX29wYXF1ZV0gfCBbJXR5cGU6IF9dIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYub3BhcXVlX29mX3lvanNvbl1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF90dXBsZSB0cDsgXyB9IC0+XG4gICAgICBNYXRjaCAodHVwbGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHRwKSlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXIgcGFybTsgXyB9IC0+XG4gICAgICAobWF0Y2ggdHlwZXZhcl9oYW5kbGluZyB3aXRoXG4gICAgICAgfCBgb2sgLT4gRnVuIChldmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybSkpXG4gICAgICAgfCBgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgLT5cbiAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIFwiVHlwZSB2YXJpYWJsZXMgbm90IGFsbG93ZWQgaW4gWyUlb2ZfeW9qc29uOiBdLiBQbGVhc2UgdXNlIGxvY2FsbHkgYWJzdHJhY3QgXFxcbiAgICAgICAgICAgIHR5cGVzIGluc3RlYWQuXCIpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgYXJncyk7IF8gfSAtPlxuICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICBMaXN0Lm1hcCBhcmdzIH5mOihmdW4gYXJnIC0+XG4gICAgICAgICAgRnVuX29yX21hdGNoLmV4cHIgfmxvYyAodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgYXJnKSlcbiAgICAgIGluXG4gICAgICBGdW4gKHR5cGVfY29uc3RyX29mX3lvanNvbiB+bG9jIH5pbnRlcm5hbCBpZCBhcmdzKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2Fycm93IChfLCBfLCBfKTsgXyB9IC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYuZnVuX29mX3lvanNvbl1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXJpYW50IChyb3dfZmllbGRzLCBfLCBfKTsgXyB9IC0+XG4gICAgICB2YXJpYW50X29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyA/ZnVsbF90eXBlIChsb2MsIHJvd19maWVsZHMpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAocGFybXMsIHBvbHlfdHApOyBfIH0gLT5cbiAgICAgIHBvbHlfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIHBhcm1zIHBvbHlfdHBcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9vYmplY3QgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jbGFzcyAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2FsaWFzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcGFja2FnZSBfOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9leHRlbnNpb24gXzsgXyB9IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIlR5cGUgdW5zdXBwb3J0ZWQgZm9yIHBweCBbb2ZfeW9qc29uXSBjb252ZXJzaW9uXCJcblxuICAoKiBDb252ZXJzaW9uIG9mIHR1cGxlcyAqKVxuICBhbmQgdHVwbGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHRwcykgPVxuICAgIGxldCBmcHMgPSBMaXN0Lm1hcCB+ZjoodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcpIHRwcyBpblxuICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgZnBzIGluXG4gICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBmcHMgaW5cbiAgICBbIFslcGF0PyBgTGlzdCBbJXAgcGxpc3QgfmxvYyBwYXR0c11dXG4gICAgICAtLT4gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgKHBleHBfdHVwbGUgfmxvYyB2YXJzKVxuICAgIDsgWyVwYXQ/IHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWRcbiAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgWyVlIGVpbnQgfmxvYyBuXVxuICAgICAgICAgIHlvanNvbl1cbiAgICBdXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgbWF0Y2hpbmcgaW5jbHVkZWQgdmFyaWFudCB0eXBlcyAqKVxuICBhbmQgaGFuZGxlX3ZhcmlhbnRfaW5oIH50eXBldmFyX2hhbmRsaW5nIGZ1bGxfdHlwZSB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzIGluaCA9XG4gICAgbGV0IGxvYyA9IGluaC5wdHlwX2xvYyBpblxuICAgIGxldCBmdW5jX2V4cHIgPSB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+aW50ZXJuYWw6dHJ1ZSBpbmggaW5cbiAgICBsZXQgYXBwIDogRnVuX29yX21hdGNoLnQgPVxuICAgICAgbGV0IGZ1bl9leHByID0gRnVuX29yX21hdGNoLmV4cHIgfmxvYyBmdW5jX2V4cHIgaW5cbiAgICAgIEZ1biBbJWV4cHIgWyVlIGZ1bl9leHByXSBfeW9qc29uXVxuICAgIGluXG4gICAgbGV0IG1hdGNoX2V4YyA9XG4gICAgICBoYW5kbGVfbm9fdmFyaWFudF9tYXRjaFxuICAgICAgICBsb2NcbiAgICAgICAgKGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMpXG4gICAgaW5cbiAgICBsZXQgbmV3X290aGVyX21hdGNoZXMgPVxuICAgICAgWyBbJXBhdD8gX11cbiAgICAgICAgLS0+IHBleHBfdHJ5XG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICAgKFslZSBGdW5fb3JfbWF0Y2guZXhwciB+bG9jIGFwcF1cbiAgICAgICAgICAgICAgICAgOj4gWyV0IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzIGZ1bGxfdHlwZV0pXVxuICAgICAgICAgICAgICBtYXRjaF9leGNcbiAgICAgIF1cbiAgICBpblxuICAgIG5ld19vdGhlcl9tYXRjaGVzLCB0cnVlXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgbWF0Y2hpbmcgYXRvbWljIHZhcmlhbnRzICopXG4gIGFuZCBta192YXJpYW50X21hdGNoX2F0b20gfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSB+cmV2X2F0b21zX2luaHMgfnJldl9zdHJ1Y3RzID1cbiAgICBsZXQgY29sbCAob3RoZXJfbWF0Y2hlcywgbWF0Y2hfbGFzdCkgPSBmdW5jdGlvblxuICAgICAgfCBgQSAobG9jLCBsYWJlbCkgLT5cbiAgICAgICAgbGV0IG5ld19tYXRjaCA9XG4gICAgICAgICAgcHN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbClcbiAgICAgICAgICAtLT4gcGV4cF92YXJpYW50IH5sb2MgKExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCkgTm9uZVxuICAgICAgICBpblxuICAgICAgICBuZXdfbWF0Y2ggOjogb3RoZXJfbWF0Y2hlcywgZmFsc2VcbiAgICAgIHwgYEkgaW5oIC0+XG4gICAgICAgIGhhbmRsZV92YXJpYW50X2luaCB+dHlwZXZhcl9oYW5kbGluZyBmdWxsX3R5cGUgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcyBpbmhcbiAgICBpblxuICAgIGxldCBvdGhlcl9tYXRjaGVzID1cbiAgICAgIG1rX3ZhcmlhbnRfb3RoZXJfbWF0Y2hlcyBsb2MgfnJldl9lbHM6cmV2X3N0cnVjdHMgYHB0YWdfdGFrZXNfYXJnc1xuICAgIGluXG4gICAgbGV0IG1hdGNoX2F0b21zX2luaHMsIG1hdGNoX2xhc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmY6Y29sbCB+aW5pdDoob3RoZXJfbWF0Y2hlcywgZmFsc2UpIHJldl9hdG9tc19pbmhzXG4gICAgaW5cbiAgICBoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IGxvYyB+bWF0Y2hfbGFzdCBtYXRjaF9hdG9tc19pbmhzXG5cbiAgKCogVmFyaWFudCBjb252ZXJzaW9ucyAqKVxuXG4gICgqIE1hdGNoIGFyZ3VtZW50cyBvZiBjb25zdHJ1Y3RvcnMgKHZhcmlhbnRzIG9yIHN1bSB0eXBlcykgKilcbiAgYW5kIG1rX2Nuc3RyX2FyZ3NfbWF0Y2ggfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+aXNfdmFyaWFudCBsYWJlbCB0cHMgPVxuICAgIGxldCBjbnN0cl9sYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCBpblxuICAgIGxldCBjbnN0ciB2YXJzX2V4cHIgPVxuICAgICAgaWYgaXNfdmFyaWFudFxuICAgICAgdGhlbiBwZXhwX3ZhcmlhbnQgfmxvYyBjbnN0cl9sYWJlbCAoU29tZSB2YXJzX2V4cHIpXG4gICAgICBlbHNlIHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgY25zdHJfbGFiZWwpIChTb21lIHZhcnNfZXhwcilcbiAgICBpblxuICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIGdvb2RfYXJnX21hdGNoID1cbiAgICAgIGxldCBmcHMgPSBMaXN0Lm1hcCB+ZjoodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcpIHRwcyBpblxuICAgICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyBmcHMgaW5cbiAgICAgIGxldCBnb29kX2FyZ19tYXRjaCA9XG4gICAgICAgIGxldCB2YXJzX2V4cHIgPVxuICAgICAgICAgIG1hdGNoIHZhcnMgd2l0aFxuICAgICAgICAgIHwgWyB2YXJfZXhwciBdIC0+IHZhcl9leHByXG4gICAgICAgICAgfCBfIC0+IHBleHBfdHVwbGUgfmxvYyB2YXJzXG4gICAgICAgIGluXG4gICAgICAgIGNuc3RyIHZhcnNfZXhwclxuICAgICAgaW5cbiAgICAgIGJpbmRpbmdzLCBwYXR0cywgZ29vZF9hcmdfbWF0Y2hcbiAgICBpblxuICAgIFslZXhwclxuICAgICAgbWF0Y2ggeW9qc29uX2FyZ3Mgd2l0aFxuICAgICAgfCBbJXAgcGxpc3QgfmxvYyBwYXR0c10gLT4gWyVlIHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGdvb2RfYXJnX21hdGNoXVxuICAgICAgfCBfIC0+XG4gICAgICAgIFslZVxuICAgICAgICAgIGlmIGlzX3ZhcmlhbnRcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgX3RhZ1xuICAgICAgICAgICAgICAgIF95b2pzb25dXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgIF90YWdcbiAgICAgICAgICAgICAgICBfeW9qc29uXV1dXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgbWF0Y2hpbmcgc3RydWN0dXJlZCB2YXJpYW50cyAqKVxuICBhbmQgbWtfdmFyaWFudF9tYXRjaF9zdHJ1Y3QgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSB+cmV2X3N0cnVjdHNfaW5ocyB+cmV2X2F0b21zXG4gICAgPVxuICAgIGxldCBoYXNfc3RydWN0c19yZWYgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgY29sbCAob3RoZXJfbWF0Y2hlcywgbWF0Y2hfbGFzdCkgPSBmdW5jdGlvblxuICAgICAgfCBgUyAobG9jLCBsYWJlbCwgdHAsIF9yb3cpIC0+XG4gICAgICAgIGhhc19zdHJ1Y3RzX3JlZiA6PSB0cnVlO1xuICAgICAgICBsZXQgYXJncyA9XG4gICAgICAgICAgbWF0Y2ggdHAucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFB0eXBfdHVwbGUgdHBzIC0+IHRwc1xuICAgICAgICAgIHwgXyAtPiBbIHRwIF1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgIG1rX2Nuc3RyX2FyZ3NfbWF0Y2hcbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICB+bG9jOnRwLnB0eXBfbG9jXG4gICAgICAgICAgICB+aXNfdmFyaWFudDp0cnVlXG4gICAgICAgICAgICBsYWJlbFxuICAgICAgICAgICAgYXJnc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbmV3X21hdGNoID1cbiAgICAgICAgICBbJXBhdD8gWyVwIHBzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXSBhcyBfdGFnXSAtLT4gZXhwclxuICAgICAgICBpblxuICAgICAgICBuZXdfbWF0Y2ggOjogb3RoZXJfbWF0Y2hlcywgZmFsc2VcbiAgICAgIHwgYEkgaW5oIC0+XG4gICAgICAgIGhhbmRsZV92YXJpYW50X2luaCB+dHlwZXZhcl9oYW5kbGluZyBmdWxsX3R5cGUgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcyBpbmhcbiAgICBpblxuICAgIGxldCBvdGhlcl9tYXRjaGVzID0gbWtfdmFyaWFudF9vdGhlcl9tYXRjaGVzIGxvYyB+cmV2X2VsczpyZXZfYXRvbXMgYHB0YWdfbm9fYXJncyBpblxuICAgIGxldCBtYXRjaF9zdHJ1Y3RzX2luaHMsIG1hdGNoX2xhc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmY6Y29sbCB+aW5pdDoob3RoZXJfbWF0Y2hlcywgZmFsc2UpIHJldl9zdHJ1Y3RzX2luaHNcbiAgICBpblxuICAgIGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG1hdGNoX3N0cnVjdHNfaW5ocywgIWhhc19zdHJ1Y3RzX3JlZlxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGhhbmRsaW5nIGF0b21pYyBhbmQgc3RydWN0dXJlZCB2YXJpYW50cyAoaS5lLiBub3RcbiAgICAgaW5jbHVkZWQgdmFyaWFudCB0eXBlcykgKilcbiAgYW5kIGhhbmRsZV92YXJpYW50X3RhZyB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIHJvd19maWVsZF9saXN0ID1cbiAgICBsZXQgcmV2X2F0b21zLCByZXZfc3RydWN0cywgcmV2X2F0b21zX2luaHMsIHJldl9zdHJ1Y3RzX2luaHMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmY6KHNwbGl0X3Jvd19maWVsZCB+bG9jKSB+aW5pdDooW10sIFtdLCBbXSwgW10pIHJvd19maWVsZF9saXN0XG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfc3RydWN0LCBoYXNfc3RydWN0cyA9XG4gICAgICBta192YXJpYW50X21hdGNoX3N0cnVjdCB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIH5yZXZfc3RydWN0c19pbmhzIH5yZXZfYXRvbXNcbiAgICBpblxuICAgIGxldCBtYXliZV95b2pzb25fYXJnc19wYXR0ID0gaWYgaGFzX3N0cnVjdHMgdGhlbiBbJXBhdD8geW9qc29uX2FyZ3NdIGVsc2UgWyVwYXQ/IF9dIGluXG4gICAgWyBbJXBhdD8gYExpc3QgWyBgU3RyaW5nIGF0b20gXSBhcyBfeW9qc29uXVxuICAgICAgLS0+IG1rX3ZhcmlhbnRfbWF0Y2hfYXRvbVxuICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgZnVsbF90eXBlXG4gICAgICAgICAgICB+cmV2X2F0b21zX2luaHNcbiAgICAgICAgICAgIH5yZXZfc3RydWN0c1xuICAgIDsgWyVwYXQ/IGBMaXN0IChgU3RyaW5nIGF0b20gOjogWyVwIG1heWJlX3lvanNvbl9hcmdzX3BhdHRdKSBhcyBfeW9qc29uXVxuICAgICAgLS0+IG1hdGNoX3N0cnVjdFxuICAgIDsgWyVwYXQ/IGBMaXN0IChgTGlzdCBfIDo6IF8pIGFzIHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyXG4gICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgIHlvanNvbl1cbiAgICA7IFslcGF0PyBgTGlzdCBbXSBhcyB5b2pzb25dXG4gICAgICAtLT4gWyVleHByXG4gICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyXG4gICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgIHlvanNvbl1cbiAgICA7IFslcGF0PyBfIGFzIHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgX3RwX2xvYyB5b2pzb25dXG4gICAgXVxuXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIHZhcmlhbnRzICopXG4gIGFuZCB2YXJpYW50X29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyA/ZnVsbF90eXBlIChsb2MsIHJvd19maWVsZHMpID1cbiAgICBsZXQgaXNfY29udGFpbmVkLCBmdWxsX3R5cGUgPVxuICAgICAgbWF0Y2ggZnVsbF90eXBlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlLCBwdHlwX3ZhcmlhbnQgfmxvYyByb3dfZmllbGRzIENsb3NlZCBOb25lXG4gICAgICB8IFNvbWUgZnVsbF90eXBlIC0+IGZhbHNlLCBmdWxsX3R5cGVcbiAgICBpblxuICAgIGxldCB0b3BfbWF0Y2ggPVxuICAgICAgbWF0Y2ggcm93X2ZpZWxkcyB3aXRoXG4gICAgICB8IHsgcHJmX2Rlc2MgPSBSaW5oZXJpdCBpbmg7IF8gfSA6OiByZXN0IC0+XG4gICAgICAgIGxldCByZWMgbG9vcCBpbmggcm93X2ZpZWxkcyA9XG4gICAgICAgICAgbGV0IGNhbGwgPVxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIChbJWVcbiAgICAgICAgICAgICAgICBGdW5fb3JfbWF0Y2guZXhwclxuICAgICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgICAgKHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5pbnRlcm5hbDp0cnVlIGluaCldXG4gICAgICAgICAgICAgICAgIHlvanNvblxuICAgICAgICAgICAgICAgOj4gWyV0IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzIGZ1bGxfdHlwZV0pXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggcm93X2ZpZWxkcyB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBjYWxsXG4gICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgIGxldCBleHByID1cbiAgICAgICAgICAgICAgbWF0Y2ggaC5wcmZfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgUmluaGVyaXQgaW5oIC0+IGxvb3AgaW5oIHRcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJmdGFnX21hdGNoZXMgPVxuICAgICAgICAgICAgICAgICAgaGFuZGxlX3ZhcmlhbnRfdGFnIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgcm93X2ZpZWxkc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcGV4cF9tYXRjaCB+bG9jIFslZXhwciB5b2pzb25dIHJmdGFnX21hdGNoZXNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBwZXhwX3RyeSB+bG9jIGNhbGwgKGhhbmRsZV9ub192YXJpYW50X21hdGNoIGxvYyBleHByKVxuICAgICAgICBpblxuICAgICAgICBbIFslcGF0PyB5b2pzb25dIC0tPiBsb29wIGluaCByZXN0IF1cbiAgICAgIHwgXyA6OiBfIC0+IGhhbmRsZV92YXJpYW50X3RhZyB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIHJvd19maWVsZHNcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAoKiBpbXBvc3NpYmxlICopXG4gICAgaW5cbiAgICBpZiBpc19jb250YWluZWRcbiAgICB0aGVuXG4gICAgICBGdW5cbiAgICAgICAgWyVleHByXG4gICAgICAgICAgZnVuIHlvanNvbiAtPlxuICAgICAgICAgICAgdHJ5IFslZSBwZXhwX21hdGNoIH5sb2MgWyVleHByIHlvanNvbl0gdG9wX21hdGNoXSB3aXRoXG4gICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaCAtPlxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmRcbiAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgeW9qc29uXVxuICAgIGVsc2UgTWF0Y2ggdG9wX21hdGNoXG5cbiAgYW5kIHBvbHlfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIHBhcm1zIHRwID1cbiAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgbGV0IG1rX2JpbmRpbmcgcGFybSA9XG4gICAgICAgIHZhbHVlX2JpbmRpbmdcbiAgICAgICAgICB+bG9jXG4gICAgICAgICAgfnBhdDoocHZhciB+bG9jIChcIl9vZl9cIiBeIHBhcm0udHh0KSlcbiAgICAgICAgICB+ZXhwcjpcbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBmdW4geW9qc29uIC0+XG4gICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfcG9seV9maWVsZF92YWx1ZVxuICAgICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgaW5cbiAgICAgIExpc3QubWFwIH5mOm1rX2JpbmRpbmcgcGFybXNcbiAgICBpblxuICAgIG1hdGNoIHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIHRwIHdpdGhcbiAgICB8IEZ1biBmdW5fZXhwciAtPiBGdW4gKHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGZ1bl9leHByKVxuICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+XG4gICAgICBNYXRjaFxuICAgICAgICBbIFslcGF0PyBhcmddXG4gICAgICAgICAgLS0+IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIChwZXhwX21hdGNoIH5sb2MgWyVleHByIGFyZ10gbWF0Y2hpbmdzKVxuICAgICAgICBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgZXh0cmFjdGluZyByZWNvcmQgZmllbGRzICopXG4gIGxldCBta19leHRyYWN0X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIChsb2MsIGZsZHMpID1cbiAgICBsZXQgcmVjIGxvb3AgaW5pdHMgbm9fYXJncyBhcmdzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gaW5pdHMsIG5vX2FyZ3MsIGFyZ3NcbiAgICAgIHwgbGQgOjogbW9yZV9mbGRzIC0+XG4gICAgICAgIGxldCBsb2MgPSBsZC5wbGRfbmFtZS5sb2MgaW5cbiAgICAgICAgbGV0IG5tID0gbGQucGxkX25hbWUudHh0IGluXG4gICAgICAgIGxldCBrZXkgPSBPcHRpb24udmFsdWUgfmRlZmF1bHQ6bm0gKEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX2tleSBsZCkgaW5cbiAgICAgICAgKG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLk9mX3lvanNvbi5jcmVhdGUgfmxvYyBsZCwgbGQucGxkX3R5cGUgd2l0aFxuICAgICAgICAgfCBTb21lIChgeW9qc29uX29wdGlvbiB0cCksIF8gfCAoTm9uZSB8IFNvbWUgKGBkZWZhdWx0IF8pKSwgdHAgLT5cbiAgICAgICAgICAgbGV0IGluaXRzID0gWyVleHByIFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmVdIDo6IGluaXRzIGluXG4gICAgICAgICAgIGxldCB1bnJvbGxlZCA9XG4gICAgICAgICAgICAgRnVuX29yX21hdGNoLnVucm9sbFxuICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgWyVleHByIF9maWVsZF95b2pzb25dXG4gICAgICAgICAgICAgICAodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgdHApXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICAgICAocHN0cmluZyB+bG9jIGtleVxuICAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBbJWUgZXZhciB+bG9jIChubSBeIFwiX2ZpZWxkXCIpXSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgZnZhbHVlID0gWyVlIHVucm9sbGVkXSBpblxuICAgICAgICAgICAgICAgICAgWyVlIGV2YXIgfmxvYyAobm0gXiBcIl9maWVsZFwiKV1cbiAgICAgICAgICAgICAgICAgIDo9IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgZnZhbHVlXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZXMgOj0gZmllbGRfbmFtZSA6OiBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGR1cGxpY2F0ZXNdKVxuICAgICAgICAgICAgIDo6IGFyZ3NcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbG9vcCBpbml0cyBub19hcmdzIGFyZ3MgbW9yZV9mbGRzKVxuICAgIGluXG4gICAgbGV0IGhhbmRsZV9leHRyYSA9XG4gICAgICBbIChbJXBhdD8gX11cbiAgICAgICAgIC0tPlxuICAgICAgICAgaWYgYWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICAgICB0aGVuIFslZXhwciAoKV1cbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgaWYgUHB4X3lvanNvbl9jb252X2xpYi4oICEgKVxuICAgICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5yZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzXG4gICAgICAgICAgICAgdGhlbiBleHRyYSA6PSBmaWVsZF9uYW1lIDo6IFBweF95b2pzb25fY29udl9saWIuKCAhICkgZXh0cmFcbiAgICAgICAgICAgICBlbHNlICgpXSlcbiAgICAgIF1cbiAgICBpblxuICAgIGxvb3AgW10gaGFuZGxlX2V4dHJhIGhhbmRsZV9leHRyYSAoTGlzdC5yZXYgZmxkcylcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBoYW5kbGluZyB0aGUgcmVzdWx0IG9mIG1hdGNoaW5nIHJlY29yZCBmaWVsZHMgKilcbiAgbGV0IG1rX2hhbmRsZV9yZWNvcmRfbWF0Y2hfcmVzdWx0IGhhc19wb2x5IChsb2MsIGZsZHMpIH53cmFwX2V4cHIgPVxuICAgIGxldCBoYXNfbm9ub3B0X2ZpZWxkcyA9IHJlZiBmYWxzZSBpblxuICAgIGxldCByZXNfdHBscywgYmlfbHN0LCBnb29kX3BhdHRzID1cbiAgICAgIGxldCByZWMgbG9vcCAoKHJlc190cGxzLCBiaV9sc3QsIGdvb2RfcGF0dHMpIGFzIGFjYykgPSBmdW5jdGlvblxuICAgICAgICB8ICh7IHBsZF9uYW1lID0geyB0eHQgPSBubTsgbG9jIH07IF8gfSBhcyBsZCkgOjogbW9yZV9mbGRzIC0+XG4gICAgICAgICAgbGV0IGZsZCA9IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfZmllbGRcIildXSBpblxuICAgICAgICAgIGxldCBta19kZWZhdWx0IGxvYyA9XG4gICAgICAgICAgICBiaV9sc3QsIFslcGF0PyBbJXAgcHZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXV0gOjogZ29vZF9wYXR0c1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG5ld19iaV9sc3QsIG5ld19nb29kX3BhdHRzID1cbiAgICAgICAgICAgIG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLk9mX3lvanNvbi5jcmVhdGUgfmxvYyBsZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGBkZWZhdWx0IF8gfCBgeW9qc29uX29wdGlvbiBfKSAtPiBta19kZWZhdWx0IGxvY1xuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGhhc19ub25vcHRfZmllbGRzIDo9IHRydWU7XG4gICAgICAgICAgICAgICggWyVleHByXG4gICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5wb2x5X2VxdWFsIFslZSBmbGRdIFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmVcbiAgICAgICAgICAgICAgLCBbJWUgZXN0cmluZyB+bG9jIG5tXV1cbiAgICAgICAgICAgICAgICA6OiBiaV9sc3RcbiAgICAgICAgICAgICAgLCBbJXBhdD8gUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSBbJXAgcHZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXV1cbiAgICAgICAgICAgICAgICA6OiBnb29kX3BhdHRzIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBhY2MgPSBbJWV4cHIgWyVlIGZsZF1dIDo6IHJlc190cGxzLCBuZXdfYmlfbHN0LCBuZXdfZ29vZF9wYXR0cyBpblxuICAgICAgICAgIGxvb3AgYWNjIG1vcmVfZmxkc1xuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgaW5cbiAgICAgIGxvb3AgKFtdLCBbXSwgW10pIChMaXN0LnJldiBmbGRzKVxuICAgIGluXG4gICAgbGV0IG1hdGNoX2dvb2RfZXhwciA9XG4gICAgICBpZiBoYXNfcG9seVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBjbnZ0ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGxkX25hbWUgPSB7IHR4dCA9IG5tOyBfIH07IF8gfSAtPiBldmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIilcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggTGlzdC5tYXAgfmY6Y252dCBmbGRzIHdpdGhcbiAgICAgICAgfCBbIG1hdGNoX2dvb2RfZXhwciBdIC0+IG1hdGNoX2dvb2RfZXhwclxuICAgICAgICB8IG1hdGNoX2dvb2RfZXhwcnMgLT4gcGV4cF90dXBsZSB+bG9jIG1hdGNoX2dvb2RfZXhwcnMpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGNudnQgbGQgPVxuICAgICAgICAgIGxldCBubSA9IGxkLnBsZF9uYW1lLnR4dCBpblxuICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICBtYXRjaCBBdHRycy5SZWNvcmRfZmllbGRfaGFuZGxlci5PZl95b2pzb24uY3JlYXRlIH5sb2MgbGQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChgZGVmYXVsdCBkZWZhdWx0KSAtPlxuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICBtYXRjaCBbJWUgZXZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lIC0+IFslZSBkZWZhdWx0XVxuICAgICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSB2IC0+IHZdXG4gICAgICAgICAgICB8IFNvbWUgKGB5b2pzb25fb3B0aW9uIF8pIHwgTm9uZSAtPiBldmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIilcbiAgICAgICAgICBpblxuICAgICAgICAgIExvY2F0ZWQubGlkZW50IH5sb2Mgbm0sIHZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIHdyYXBfZXhwciAocGV4cF9yZWNvcmQgfmxvYyAoTGlzdC5tYXAgfmY6Y252dCBmbGRzKSBOb25lKSlcbiAgICBpblxuICAgIGxldCBleHByLCBwYXR0ID1cbiAgICAgIG1hdGNoIHJlc190cGxzLCBnb29kX3BhdHRzIHdpdGhcbiAgICAgIHwgWyByZXNfZXhwciBdLCBbIHJlc19wYXR0IF0gLT4gcmVzX2V4cHIsIHJlc19wYXR0XG4gICAgICB8IF8gLT4gcGV4cF90dXBsZSB+bG9jIHJlc190cGxzLCBwcGF0X3R1cGxlIH5sb2MgZ29vZF9wYXR0c1xuICAgIGluXG4gICAgaWYgIWhhc19ub25vcHRfZmllbGRzXG4gICAgdGhlblxuICAgICAgcGV4cF9tYXRjaFxuICAgICAgICB+bG9jXG4gICAgICAgIGV4cHJcbiAgICAgICAgWyBwYXR0IC0tPiBtYXRjaF9nb29kX2V4cHJcbiAgICAgICAgOyBbJXBhdD8gX11cbiAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF91bmRlZmluZWRfZWxlbWVudHNcbiAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICB5b2pzb25cbiAgICAgICAgICAgICAgWyVlIGVsaXN0IH5sb2MgYmlfbHN0XV1cbiAgICAgICAgXVxuICAgIGVsc2UgcGV4cF9tYXRjaCB+bG9jIGV4cHIgWyBwYXR0IC0tPiBtYXRjaF9nb29kX2V4cHIgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGNvbnZlcnRpbmcgcmVjb3JkIGZpZWxkcyAqKVxuXG4gIGxldCBta19jbnZfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwciA9XG4gICAgbGV0IGV4cHJfcmVmX2luaXRzLCBfbWNfbm9fYXJnc19maWVsZHMsIG1jX2ZpZWxkc193aXRoX2FyZ3MgPVxuICAgICAgbWtfZXh0cmFjdF9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyAobG9jLCBmbGRzKVxuICAgIGluXG4gICAgbGV0IGZpZWxkX3JlZnMgPVxuICAgICAgTGlzdC5tYXAyX2V4blxuICAgICAgICBmbGRzXG4gICAgICAgIGV4cHJfcmVmX2luaXRzXG4gICAgICAgIH5mOihmdW4geyBwbGRfbmFtZSA9IHsgdHh0ID0gbmFtZTsgbG9jIH07IF8gfSBpbml0IC0+XG4gICAgICAgICAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHB2YXIgfmxvYyAobmFtZSBeIFwiX2ZpZWxkXCIpKSB+ZXhwcjpbJWV4cHIgcmVmIFslZSBpbml0XV0pXG4gICAgaW5cbiAgICBwZXhwX2xldFxuICAgICAgfmxvY1xuICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAoZmllbGRfcmVmc1xuICAgICAgIEAgWyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpbJXBhdD8gZHVwbGljYXRlc10gfmV4cHI6WyVleHByIHJlZiBbXV1cbiAgICAgICAgIDsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6WyVwYXQ/IGV4dHJhXSB+ZXhwcjpbJWV4cHIgcmVmIFtdXVxuICAgICAgICAgXSlcbiAgICAgIFslZXhwclxuICAgICAgICBsZXQgcmVjIGl0ZXIgPVxuICAgICAgICAgIFslZVxuICAgICAgICAgICAgcGV4cF9mdW5jdGlvblxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIFsgWyVwYXQ/IChmaWVsZF9uYW1lLCBfZmllbGRfeW9qc29uKSA6OiB0YWlsXVxuICAgICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgICAgIFslZSBwZXhwX21hdGNoIH5sb2MgWyVleHByIGZpZWxkX25hbWVdIG1jX2ZpZWxkc193aXRoX2FyZ3NdO1xuICAgICAgICAgICAgICAgICAgaXRlciB0YWlsXVxuICAgICAgICAgICAgICA7IFslcGF0PyBbXV0gLS0+IFslZXhwciAoKV1cbiAgICAgICAgICAgICAgXV1cbiAgICAgICAgaW5cbiAgICAgICAgaXRlciBmaWVsZF95b2pzb25zO1xuICAgICAgICBtYXRjaCBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGR1cGxpY2F0ZXMgd2l0aFxuICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX2R1cGxpY2F0ZV9maWVsZHNcbiAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgIChQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGR1cGxpY2F0ZXMpXG4gICAgICAgICAgICB5b2pzb25cbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIChtYXRjaCBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGV4dHJhIHdpdGhcbiAgICAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9leHRyYV9maWVsZHNcbiAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgIChQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGV4dHJhKVxuICAgICAgICAgICAgICAgeW9qc29uXG4gICAgICAgICAgIHwgW10gLT4gWyVlIG1rX2hhbmRsZV9yZWNvcmRfbWF0Y2hfcmVzdWx0IGhhc19wb2x5IChsb2MsIGZsZHMpIH53cmFwX2V4cHJdKV1cbiAgOztcblxuICBsZXQgaXNfcG9seSAoXywgZmxkcykgPVxuICAgIExpc3QuZXhpc3RzIGZsZHMgfmY6KGZ1bmN0aW9uXG4gICAgICB8IHsgcGxkX3R5cGUgPSB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBfIH07IF8gfSAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2UpXG4gIDs7XG5cbiAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qc29uXG4gICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgIH5hbGxvd19leHRyYV9maWVsZHNcbiAgICAgICAgbG9jXG4gICAgICAgIGZsZHNcbiAgICAgICAgfndyYXBfZXhwclxuICAgID1cbiAgICBsZXQgaGFzX3BvbHkgPSBpc19wb2x5IChsb2MsIGZsZHMpIGluXG4gICAgbGV0IGNudl9maWVsZHMgPVxuICAgICAgbWtfY252X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIGhhc19wb2x5IChsb2MsIGZsZHMpIH53cmFwX2V4cHJcbiAgICBpblxuICAgIGlmIGhhc19wb2x5XG4gICAgdGhlbiAoXG4gICAgICBsZXQgcGF0dCA9XG4gICAgICAgIGxldCBwYXRzID1cbiAgICAgICAgICBMaXN0Lm1hcCBmbGRzIH5mOihmdW4geyBwbGRfbmFtZSA9IHsgdHh0ID0gbmFtZTsgbG9jIH07IF8gfSAtPiBwdmFyIH5sb2MgbmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggcGF0cyB3aXRoXG4gICAgICAgIHwgWyBwYXQgXSAtPiBwYXRcbiAgICAgICAgfCBwYXRzIC0+IHBwYXRfdHVwbGUgfmxvYyBwYXRzXG4gICAgICBpblxuICAgICAgbGV0IHJlY29yZF9kZWYgPVxuICAgICAgICB3cmFwX2V4cHJcbiAgICAgICAgICAocGV4cF9yZWNvcmRcbiAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgKExpc3QubWFwIGZsZHMgfmY6KGZ1biB7IHBsZF9uYW1lID0geyB0eHQgPSBuYW1lOyBsb2MgfTsgXyB9IC0+XG4gICAgICAgICAgICAgICAgTG9jYXRlZC5saWRlbnQgfmxvYyBuYW1lLCBldmFyIH5sb2MgbmFtZSkpXG4gICAgICAgICAgICAgTm9uZSlcbiAgICAgIGluXG4gICAgICBwZXhwX2xldFxuICAgICAgICB+bG9jXG4gICAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgICBbIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OnBhdHQgfmV4cHI6Y252X2ZpZWxkcyBdXG4gICAgICAgIHJlY29yZF9kZWYpXG4gICAgZWxzZSBjbnZfZmllbGRzXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3IgcmVjb3JkcyAqKVxuICBsZXQgcmVjb3JkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIChsb2MsIGZsZHMpIDogRnVuX29yX21hdGNoLnQgPVxuICAgIE1hdGNoXG4gICAgICBbIFslcGF0PyBgQXNzb2MgZmllbGRfeW9qc29ucyBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBsYWJlbF9kZWNsYXJhdGlvbl9saXN0X29mX3lvanNvblxuICAgICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgICBmbGRzXG4gICAgICAgICAgICAgIH53cmFwX2V4cHI6KGZ1biB4IC0+IHgpXG4gICAgICA7IFslcGF0PyBfIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tXG4gICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICB5b2pzb25dXG4gICAgICBdXG4gIDs7XG5cbiAgKCogU3VtIHR5cGUgY29udmVyc2lvbnMgKilcbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3Igd2VsbC1mb3JtZWQgWW9qc29ucyB3cnQuIHN1bSB0eXBlcyAqKVxuICBsZXQgbWtfZ29vZF9zdW1fbWF0Y2hlcyB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCBjZHMpID1cbiAgICBMaXN0Lm1hcCBjZHMgfmY6KGZ1biAoY2QsIGxhYmVsKSAtPlxuICAgICAgbGV0IGNuc3RyX2xhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsIGluXG4gICAgICBsZXQgY25zdHJfbmFtZSA9IExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsIGluXG4gICAgICBtYXRjaCBjZCB3aXRoXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl9yZWNvcmQgZmllbGRzOyBfIH0gLT5cbiAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgIGxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qc29uXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkczpcbiAgICAgICAgICAgICAgKE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLmFsbG93X2V4dHJhX2ZpZWxkc19jZCBjZCkpXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIGZpZWxkc1xuICAgICAgICAgICAgfndyYXBfZXhwcjooZnVuIGUgLT5cbiAgICAgICAgICAgICAgcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBjbnN0cl9sYWJlbCkgKFNvbWUgZSkpXG4gICAgICAgIGluXG4gICAgICAgIFslcGF0P1xuICAgICAgICAgICAgICAgYExpc3QgWyBgU3RyaW5nIChbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIGFzIF90YWcpOyBgQXNzb2MgZmllbGRfeW9qc29ucyBdXG4gICAgICAgICAgYXMgeW9qc29uXVxuICAgICAgICAtLT4gZXhwclxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfdHVwbGUgW107IF8gfSAtPlxuICAgICAgICBBdHRycy5mYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIH5sb2MgY2Q7XG4gICAgICAgIFslcGF0PyBgTGlzdCBbIGBTdHJpbmcgWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSBdXVxuICAgICAgICAtLT4gcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBjbnN0cl9sYWJlbCkgTm9uZVxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfdHVwbGUgKF8gOjogXyBhcyB0cHMpOyBfIH0gLT5cbiAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF9jZCB+bG9jIGNkO1xuICAgICAgICBbJXBhdD9cbiAgICAgICAgICAgICAgIGBMaXN0IChgU3RyaW5nIChbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIGFzIF90YWcpIDo6IHlvanNvbl9hcmdzKSBhcyBfeW9qc29uXVxuICAgICAgICAtLT4gbWtfY25zdHJfYXJnc19tYXRjaCB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5pc192YXJpYW50OmZhbHNlIGxhYmVsIHRwcylcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciBtYWxmb3JtZWQgWW9qc29ucyB3aXRoIGdvb2QgdGFnc1xuICAgICB3cnQuIHN1bSB0eXBlcyAqKVxuICBsZXQgbWtfYmFkX3N1bV9tYXRjaGVzIChsb2MsIGNkcykgPVxuICAgIExpc3QubWFwIGNkcyB+ZjooZnVuIChjZCwgbGFiZWwpIC0+XG4gICAgICBsZXQgY25zdHJfbmFtZSA9IExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsIGluXG4gICAgICBtYXRjaCBjZCB3aXRoXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSBbXTsgXyB9IC0+XG4gICAgICAgIFslcGF0PyBgTGlzdCAoYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIDo6IF8pIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBfdHBfbG9jIHlvanNvbl1cbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIChfIDo6IF8pIHwgUGNzdHJfcmVjb3JkIF87IF8gfSAtPlxuICAgICAgICBbJXBhdD8gYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBfdHBfbG9jIHlvanNvbl0pXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3Igc3VtIHR5cGVzICopXG4gIGxldCBzdW1fb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGFsdHMpIDogRnVuX29yX21hdGNoLnQgPVxuICAgIGxldCBhbHRzID1cbiAgICAgIExpc3QubWFwIGFsdHMgfmY6KGZ1biBjZCAtPiBjZCwgTGFiZWxfd2l0aF9uYW1lLm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGNkKVxuICAgIGluXG4gICAgTWF0Y2hcbiAgICAgIChMaXN0LmNvbmNhdFxuICAgICAgICAgWyBta19nb29kX3N1bV9tYXRjaGVzIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGFsdHMpXG4gICAgICAgICA7IG1rX2JhZF9zdW1fbWF0Y2hlcyAobG9jLCBhbHRzKVxuICAgICAgICAgOyBbIFslcGF0PyBgTGlzdCAoYExpc3QgXyA6OiBfKSBhcyB5b2pzb25dXG4gICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bVxuICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgOyBbJXBhdD8gYExpc3QgW10gYXMgeW9qc29uXVxuICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bVxuICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgOyBbJXBhdD8gXyBhcyB5b2pzb25dXG4gICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgX3RwX2xvYyB5b2pzb25dXG4gICAgICAgICAgIF1cbiAgICAgICAgIF0pXG4gIDs7XG5cbiAgKCogRW1wdHkgdHlwZSAqKVxuICBsZXQgbmlsX29mX3lvanNvbiBsb2MgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgRnVuXG4gICAgICBbJWV4cHJcbiAgICAgICAgZnVuIHlvanNvbiAtPiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLmVtcHR5X3R5cGUgX3RwX2xvYyB5b2pzb25dXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmcm9tIHR5cGUgZGVmaW5pdGlvbnMgKilcblxuICBsZXQgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5sb2M6XyB+cG9seSB+cGF0aCB+cmVjX2ZsYWcgdGQgPVxuICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICBsZXQgdHBzID0gTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmdldF90eXBlX3BhcmFtX25hbWUgaW5cbiAgICBsZXQgeyBwdHlwZV9uYW1lID0geyB0eHQgPSB0eXBlX25hbWU7IGxvYyA9IF8gfTsgcHR5cGVfbG9jID0gbG9jOyBfIH0gPSB0ZCBpblxuICAgIGxldCBmdWxsX3R5cGUgPVxuICAgICAgY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfD4gcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXNcbiAgICBpblxuICAgIGxldCBpc19wcml2YXRlID1cbiAgICAgIG1hdGNoIHRkLnB0eXBlX3ByaXZhdGUgd2l0aFxuICAgICAgfCBQcml2YXRlIC0+IHRydWVcbiAgICAgIHwgUHVibGljIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiBpc19wcml2YXRlXG4gICAgdGhlbiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIm9mX3lvanNvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBwcml2YXRlIHR5cGVcIjtcbiAgICBsZXQgY3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uID1cbiAgICAgIG1hdGNoIGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgdGQgfnNpZ186ZmFsc2Ugd2l0aFxuICAgICAgfCBgRGVmaW5pdGVseSAtPiB0cnVlXG4gICAgICB8IGBNYXliZSAtPiBwb2x5XG4gICAgICB8IGBTdXJlbHlfbm90IC0+XG4gICAgICAgIGlmIHBvbHlcbiAgICAgICAgdGhlblxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgXCJ5b2pzb25fcG9seSBhbm5vdGF0aW9uIG9uIGEgdHlwZSB0aGF0IGlzIHN1cmVseSBub3QgYSBwb2x5bW9ycGhpYyB2YXJpYW50XCI7XG4gICAgICAgIGZhbHNlXG4gICAgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgYm9keSA9XG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYWx0cyAtPlxuICAgICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB0ZDtcbiAgICAgICAgICBzdW1fb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nICh0ZC5wdHlwZV9sb2MsIGFsdHMpXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGxibHMgLT5cbiAgICAgICAgICByZWNvcmRfb2ZfeW9qc29uXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkczpcbiAgICAgICAgICAgICAgKE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLmFsbG93X2V4dHJhX2ZpZWxkc190ZCB0ZCkpXG4gICAgICAgICAgICAobG9jLCBsYmxzKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBweF95b2pzb25fY29udjogb3BlbiB0eXBlcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPlxuICAgICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB0ZDtcbiAgICAgICAgICAobWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbmlsX29mX3lvanNvbiB0ZC5wdHlwZV9sb2NcbiAgICAgICAgICAgfCBTb21lIHR5IC0+XG4gICAgICAgICAgICAgdHlwZV9vZl95b2pzb25cbiAgICAgICAgICAgICAgIH5mdWxsX3R5cGVcbiAgICAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICAgICB+aW50ZXJuYWw6Y3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uXG4gICAgICAgICAgICAgICB0eSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICgqIFByZXZlbnQgdmlvbGF0aW9uIG9mIHZhbHVlIHJlc3RyaWN0aW9uIGFuZCBwcm9ibGVtcyB3aXRoXG4gICAgICAgICByZWN1cnNpdmUgdHlwZXMgYnkgZXRhLWV4cGFuZGluZyBmdW5jdGlvbiBkZWZpbml0aW9ucyAqKVxuICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIGZ1biB0IC0+IFslZSBlYXBwbHkgfmxvYyBmdW5fZXhwciBbIFslZXhwciB0XSBdXV1cbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IHBleHBfZnVuY3Rpb24gfmxvYyBtYXRjaGluZ3NcbiAgICBpblxuICAgIGxldCBleHRlcm5hbF9uYW1lID0gdHlwZV9uYW1lIF4gXCJfb2ZfeW9qc29uXCIgaW5cbiAgICBsZXQgaW50ZXJuYWxfbmFtZSA9IFwiX19cIiBeIHR5cGVfbmFtZSBeIFwiX29mX3lvanNvbl9fXCIgaW5cbiAgICBsZXQgYXJnX3BhdHRzLCBhcmdfZXhwcnMgPVxuICAgICAgTGlzdC51bnppcFxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgfmY6KGZ1biB0cCAtPlxuICAgICAgICAgICAgIGxldCBuYW1lID0gXCJfb2ZfXCIgXiB0cC50eHQgaW5cbiAgICAgICAgICAgICBwdmFyIH5sb2MgbmFtZSwgZXZhciB+bG9jIG5hbWUpXG4gICAgICAgICAgIHRwcylcbiAgICBpblxuICAgIGxldCBiaW5kX3RwX2xvY19pbiA9XG4gICAgICBsZXQgZnVsbF90eXBlX25hbWUgPSBQcmludGYuc3ByaW50ZiBcIiVzLiVzXCIgcGF0aCB0eXBlX25hbWUgaW5cbiAgICAgIGZ1biBlIC0+XG4gICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gLT5cbiAgICAgICAgICAoKiB3ZSBkZWZpbml0ZWx5IGRvbid0IHVzZSB0aGUgc3RyaW5nLCBzbyBjbGVhbiB1cCB0aGUgZ2VuZXJhdGVkIGNvZGUgYSBiaXQgKilcbiAgICAgICAgICBlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgbGV0IF90cF9sb2MgPSBbJWUgZXN0cmluZyB+bG9jIGZ1bGxfdHlwZV9uYW1lXSBpblxuICAgICAgICAgICAgWyVlIGVdXVxuICAgIGluXG4gICAgbGV0IGludGVybmFsX2Z1bl9ib2R5ID1cbiAgICAgIGlmIGNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvblxuICAgICAgdGhlblxuICAgICAgICBTb21lXG4gICAgICAgICAgKGJpbmRfdHBfbG9jX2luXG4gICAgICAgICAgICAgKGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyB+cmVjX2ZsYWcgKGVhYnN0cmFjdCB+bG9jIGFyZ19wYXR0cyBib2R5KSkpXG4gICAgICBlbHNlIE5vbmVcbiAgICBpblxuICAgIGxldCBleHRlcm5hbF9mdW5fYm9keSA9XG4gICAgICBsZXQgbmVlZF90cF9sb2MsIGJvZHlfYmVsb3dfbGFtYmRhcyA9XG4gICAgICAgIGlmIGNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbm9fdmFyaWFudF9tYXRjaF9tYyA9XG4gICAgICAgICAgICBbIFslcGF0PyBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2hdXG4gICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmRcbiAgICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBpbnRlcm5hbF9jYWxsID1cbiAgICAgICAgICAgIGxldCBpbnRlcm5hbF9leHByID0gZXZhciB+bG9jIGludGVybmFsX25hbWUgaW5cbiAgICAgICAgICAgIGVhcHBseSB+bG9jIGludGVybmFsX2V4cHIgKGFyZ19leHBycyBAIFsgWyVleHByIHlvanNvbl0gXSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cnlfd2l0aCA9IHBleHBfdHJ5IH5sb2MgaW50ZXJuYWxfY2FsbCBub192YXJpYW50X21hdGNoX21jIGluXG4gICAgICAgICAgZmFsc2UsIGJpbmRfdHBfbG9jX2luIFslZXhwciBmdW4geW9qc29uIC0+IFslZSB0cnlfd2l0aF1dKVxuICAgICAgICBlbHNlIHRydWUsIGJvZHlcbiAgICAgIGluXG4gICAgICBsZXQgYm9keV93aXRoX2xhbWJkYXMgPVxuICAgICAgICBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWNcbiAgICAgICAgICB+cmVjX2ZsYWdcbiAgICAgICAgICAoZWFic3RyYWN0IH5sb2MgYXJnX3BhdHRzIGJvZHlfYmVsb3dfbGFtYmRhcylcbiAgICAgIGluXG4gICAgICBpZiBuZWVkX3RwX2xvYyB0aGVuIGJpbmRfdHBfbG9jX2luIGJvZHlfd2l0aF9sYW1iZGFzIGVsc2UgYm9keV93aXRoX2xhbWJkYXNcbiAgICBpblxuICAgIGxldCBta19iaW5kaW5nIGZ1bmNfbmFtZSBib2R5ID1cbiAgICAgIGxldCB0eXAgPSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLm1rX3R5cGUgdGQgaW5cbiAgICAgIGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmcgbG9jIHRkIHR5cCB+dHBzIH5mdW5jX25hbWUgYm9keVxuICAgIGluXG4gICAgbGV0IGludGVybmFsX2JpbmRpbmdzID1cbiAgICAgIG1hdGNoIGludGVybmFsX2Z1bl9ib2R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIGJvZHkgLT4gWyBta19iaW5kaW5nIGludGVybmFsX25hbWUgYm9keSBdXG4gICAgaW5cbiAgICBsZXQgZXh0ZXJuYWxfYmluZGluZyA9IG1rX2JpbmRpbmcgZXh0ZXJuYWxfbmFtZSBleHRlcm5hbF9mdW5fYm9keSBpblxuICAgIGludGVybmFsX2JpbmRpbmdzLCBbIGV4dGVybmFsX2JpbmRpbmcgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZnJvbSB0eXBlIGRlZmluaXRpb25zICopXG4gIGxldCB0ZHNfb2ZfeW9qc29uIH5sb2MgfnBvbHkgfnBhdGggKHJlY19mbGFnLCB0ZHMpID1cbiAgICBsZXQgdHlwZXZhcl9oYW5kbGluZyA9IGBvayBpblxuICAgIGxldCBzaW5nbGV0b24gPVxuICAgICAgbWF0Y2ggdGRzIHdpdGhcbiAgICAgIHwgWyBfIF0gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiBzaW5nbGV0b25cbiAgICB0aGVuIChcbiAgICAgIGxldCByZWNfZmxhZyA9IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzIGluXG4gICAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgICB8IFJlY3Vyc2l2ZSAtPlxuICAgICAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgICAgIExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICAgICAgbGV0IGludGVybmFscywgZXh0ZXJuYWxzID1cbiAgICAgICAgICAgICAgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfnBvbHkgfnBhdGggfnJlY19mbGFnIHRkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaW50ZXJuYWxzIEAgZXh0ZXJuYWxzKVxuICAgICAgICBpblxuICAgICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBSZWN1cnNpdmUgYmluZGluZ3NcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+XG4gICAgICAgIExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICAgIGxldCBpbnRlcm5hbHMsIGV4dGVybmFscyA9XG4gICAgICAgICAgICB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+cG9seSB+cGF0aCB+cmVjX2ZsYWcgdGRcbiAgICAgICAgICBpblxuICAgICAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZSBpbnRlcm5hbHNcbiAgICAgICAgICBAIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZSBleHRlcm5hbHMpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGJpbmRpbmdzID1cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgICAgbGV0IGludGVybmFscywgZXh0ZXJuYWxzID1cbiAgICAgICAgICAgIHRkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+cG9seSB+bG9jIH5wYXRoIH5yZWNfZmxhZyB0ZFxuICAgICAgICAgIGluXG4gICAgICAgICAgaW50ZXJuYWxzIEAgZXh0ZXJuYWxzKVxuICAgICAgaW5cbiAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIHJlY19mbGFnIGJpbmRpbmdzKVxuICA7O1xuXG4gIGxldCB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+cGF0aCBjdHlwID1cbiAgICBsZXQgbG9jID0geyBjdHlwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbGV0IGZwID0gdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgY3R5cCBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIG1hdGNoIGZwIHdpdGhcbiAgICAgIHwgRnVuIGZ1bl9leHByIC0+IFslZXhwciBbJWUgZnVuX2V4cHJdIHlvanNvbl1cbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgeW9qc29uXSBtYXRjaGluZ3NcbiAgICBpblxuICAgIGxldCBmdWxsX3R5cGVfbmFtZSA9XG4gICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICBcIiVzIGxpbmUgJWk6ICVzXCJcbiAgICAgICAgcGF0aFxuICAgICAgICBsb2MubG9jX3N0YXJ0LnBvc19sbnVtXG4gICAgICAgIChzdHJpbmdfb2ZfY29yZV90eXBlIGN0eXApXG4gICAgaW5cbiAgICBbJWV4cHJcbiAgICAgIGZ1biB5b2pzb24gLT5cbiAgICAgICAgbGV0IF90cF9sb2MgPSBbJWUgZXN0cmluZyB+bG9jIGZ1bGxfdHlwZV9uYW1lXSBpblxuICAgICAgICBbJWUgYm9keV1dXG4gIDs7XG5lbmRcblxubW9kdWxlIFlvanNvbl9vZiA9IHN0cnVjdFxuICBsZXQgdHlwZV9leHRlbnNpb24gdHkgPVxuICAgIFNpZ19nZW5lcmF0ZV95b2pzb25fb2YudHlwZV9vZl95b2pzb25fb2YgfmxvYzp7IHR5LnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IHR5XG4gIDs7XG5cbiAgbGV0IGNvcmVfdHlwZSB0eSA9XG4gICAgU3RyX2dlbmVyYXRlX3lvanNvbl9vZi55b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzpgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgdHlcbiAgICB8PiBGdW5fb3JfbWF0Y2guZXhwciB+bG9jOnsgdHkucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH1cbiAgOztcblxuICBsZXQgc2lnX3R5cGVfZGVjbCA9IFNpZ19nZW5lcmF0ZV95b2pzb25fb2YubWtfc2lnXG4gIGxldCBzdHJfdHlwZV9kZWNsID0gU3RyX2dlbmVyYXRlX3lvanNvbl9vZi55b2pzb25fb2ZfdGRzXG5lbmRcblxubW9kdWxlIFlvanNvbl9maWVsZHMgPSBzdHJ1Y3RcbiAgbGV0IHN0cl90eXBlX2RlY2wgPSBTdHJfZ2VuZXJhdGVfeW9qc29uX2ZpZWxkcy55b2pzb25fZmllbGRzX29mX3Rkc1xuZW5kXG5cbm1vZHVsZSBPZl95b2pzb24gPSBzdHJ1Y3RcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uIHR5ID1cbiAgICBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLnR5cGVfb2Zfb2ZfeW9qc29uIH5sb2M6eyB0eS5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSB0eVxuICA7O1xuXG4gIGxldCBjb3JlX3R5cGUgPVxuICAgIFN0cl9nZW5lcmF0ZV9vZl95b2pzb24udHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmc6YGRpc2FsbG93ZWRfaW5fdHlwZV9leHByXG4gIDs7XG5cbiAgbGV0IHNpZ190eXBlX2RlY2wgPSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLm1rX3NpZ1xuICBsZXQgc3RyX3R5cGVfZGVjbCA9IFN0cl9nZW5lcmF0ZV9vZl95b2pzb24udGRzX29mX3lvanNvblxuZW5kXG5cbm1vZHVsZSBTaWdfeW9qc29uID0gc3RydWN0XG4gIGxldCBta19zaWcgfmxvYyB+cGF0aCBkZWNscyA9XG4gICAgU2lnX2dlbmVyYXRlX3lvanNvbl9vZi5ta19zaWcgfmxvYyB+cGF0aCBkZWNsc1xuICAgIEAgU2lnX2dlbmVyYXRlX29mX3lvanNvbi5ta19zaWcgfnBvbHk6ZmFsc2UgfmxvYyB+cGF0aCBkZWNsc1xuICA7O1xuXG4gIGxldCBzaWdfdHlwZV9kZWNsIH5sb2MgfnBhdGggKChfcmYsIHRkcykgYXMgZGVjbHMpID1cbiAgICBtYXRjaFxuICAgICAgbWtfbmFtZWRfc2lnXG4gICAgICAgIH5sb2NcbiAgICAgICAgfnNnX25hbWU6XCJQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbmFibGUuU1wiXG4gICAgICAgIH5oYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudDpmYWxzZVxuICAgICAgICB0ZHNcbiAgICB3aXRoXG4gICAgfCBTb21lIGluY2x1ZGVfaW5mb3MgLT4gWyBwc2lnX2luY2x1ZGUgfmxvYyBpbmNsdWRlX2luZm9zIF1cbiAgICB8IE5vbmUgLT4gbWtfc2lnIH5sb2MgfnBhdGggZGVjbHNcbiAgOztcbmVuZFxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNvb19ydW50aW1lLlJ1bnRpbWVfdmVyc2lvbiAqKVxubW9kdWxlIFJ1bnRpbWVfdmVyc2lvbiA9IEpzb29fcnVudGltZV9fUnVudGltZV92ZXJzaW9uXG5cbm1vZHVsZSBKc29vX3J1bnRpbWVfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwibW9kdWxlIEpzID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIHR5cGUgJ2EganNfYXJyYXkgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrID0gdFxuXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBleHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNieXRlc19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbiAgZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG4gIGV4dGVybmFsIHRvX2Jvb2wgOiB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2FycmF5IDogdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuICBleHRlcm5hbCBmbG9hdF9vZl9udW1iZXIgOiB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfaW50MzIgOiBpbnQzMiAtPiB0ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG4gIGV4dGVybmFsIGludDMyX29mX251bWJlciA6IHQgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgbmF0aXZlaW50X29mX251bWJlciA6IHQgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgdHlwZW9mIDogdCAtPiB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5cbiAgZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgZXh0ZXJuYWwgZ2V0IDogdCAtPiB0IC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcblxuICBleHRlcm5hbCBzZXQgOiB0IC0+IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgZXh0ZXJuYWwgZGVsZXRlIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICBleHRlcm5hbCBjYWxsIDogdCAtPiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19jYWxsXCJcblxuICBleHRlcm5hbCBmdW5fY2FsbCA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGwgOiB0IC0+IHN0cmluZyAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuICBleHRlcm5hbCBuZXdfb2JqIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbmV3XCJcblxuICBleHRlcm5hbCBuZXdfb2JqX2FyciA6IHQgLT4gdCBqc19hcnJheSAtPiB0ID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxuICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogdCkgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gIGV4dGVybmFsIGVxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHB1cmVfZXhwciA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9qc19wdXJlX2V4cHJcIlxuXG4gIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAodCBqc19hcnJheSAtPiAnYikgLT4gKCdjLCB0IGpzX2FycmF5IC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKCdiIC0+IHQganNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgdCBqc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuZW5kXG5cbm1vZHVsZSBTeXMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBjYWxsYmFjayA9ICdhXG5cbiAgZXh0ZXJuYWwgY3JlYXRlX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBjb250ZW50OnN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2NyZWF0ZV9maWxlXCJcblxuICBleHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG4gIGV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOiBvdXRfY2hhbm5lbCAtPiAoanNfc3RyaW5nOkpzLnQgLT4gdW5pdCkgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfaW5wdXQnIDogaW5fY2hhbm5lbCAtPiAodW5pdCAtPiBzdHJpbmcpIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG4gIGV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuICBleHRlcm5hbCBtb3VudF9hdXRvbG9hZCA6IHN0cmluZyAtPiAoc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG4gIGV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxuICB0eXBlIHJlZGlyZWN0aW9uXG5cbiAgZXh0ZXJuYWwgcmVkaXJlY3RfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IGludG86b3V0X2NoYW5uZWwgLT4gcmVkaXJlY3Rpb25cbiAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3JlZGlyZWN0XCJcblxuICBleHRlcm5hbCByZXN0b3JlX2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiByZWRpcmVjdGlvbiAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfY2hhbm5lbF9yZXN0b3JlXCJcblxuICBtb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gICAgZXh0ZXJuYWwgdXNlX2pzX3N0cmluZyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmdcIlxuXG4gICAgZXh0ZXJuYWwgZWZmZWN0cyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHNcIlxuICBlbmRcblxuICBsZXQgdmVyc2lvbiA9IFJ1bnRpbWVfdmVyc2lvbi5zXG5cbiAgbGV0IGdpdF92ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLmdpdF92ZXJzaW9uXG5lbmRcblxubW9kdWxlIEVycm9yIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCByYWlzZV8gOiB0IC0+ICdhXG5cbiAgdmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG5cbiAgKCoqIEF0dGFjaCBhIEphdmFzU2NyaXB0IGVycm9yIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbi4gIGlmIFtmb3JjZSA9IGZhbHNlXSBhbmQgYVxuICAgIEphdmFzU2NyaXB0IGVycm9yIGlzIGFscmVhZHkgYXR0YWNoZWQsIGl0IHdpbGwgZG8gbm90aGluZy4gVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgdG9cbiAgICBzdG9yZSBhbmQgcmV0cmlldmUgaW5mb3JtYXRpb24gYWJvdXQgSmF2YVNjcmlwdCBzdGFjayB0cmFjZXMuXG5cbiAgICBBdHRhY2hpbmcgSmF2YXNTY3JpcHQgZXJyb3JzIHdpbGwgaGFwcGVuIGF1dG9tYXRpY2FsbHkgd2hlbiBjb21waWxpbmcgd2l0aFxuICAgIFstLWVuYWJsZSB3aXRoLWpzLWVycm9yXS4gKilcblxuICB2YWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uXG4gICgqKiBFeHRyYWN0IGEgSmF2YVNjcmlwdCBlcnJvciBhdHRhY2hlZCB0byBhbiBPQ2FtbCBleGNlcHRpb24sIGlmIGFueS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICAgICBpbnNwZWN0IGFuIGV2ZW50dWFsIHN0YWNrIHN0cmFjZSwgZXNwZWNpYWxseSB3aGVuIHNvdXJjZW1hcCBpcyBlbmFibGVkLiAqKVxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuICAoKiogVGhlIFtFcnJvcl0gZXhjZXB0aW9uIHdyYXAgamF2YXNjcmlwdCBleGNlcHRpb25zIHdoZW4gY2F1Z2h0IGJ5IE9DYW1sIGNvZGUuXG4gICAgICBJbiBjYXNlIHRoZSBqYXZhc2NyaXB0IGV4Y2VwdGlvbiBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgamF2YXNjcmlwdCBbRXJyb3JdLFxuICAgICAgaXQgd2lsbCBiZSBzZXJpYWxpemVkIGFuZCB3cmFwcGVkIGludG8gYSBbRmFpbHVyZV0gZXhjZXB0aW9uLlxuICAqKVxuZW5kID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuXG4gIGxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwianNFcnJvclwiIChFeG4gKE9iai5tYWdpYyBbfHxdKSlcblxuICBsZXQgcmFpc2VfIDogdCAtPiAnYSA9IEpzLmpzX2V4cHIgXCIoZnVuY3Rpb24gKGV4bikgeyB0aHJvdyBleG4gfSlcIlxuXG4gIGV4dGVybmFsIG9mX2V4biA6IGV4biAtPiB0IG9wdGlvbiA9IFwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXCJcblxuICBleHRlcm5hbCBhdHRhY2hfanNfYmFja3RyYWNlIDogZXhuIC0+IGZvcmNlOmJvb2wgLT4gZXhuID0gXCJjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVwiXG5lbmRcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzItNjBcIl1cblxubW9kdWxlIEZvcl9jb21wYXRpYmlsaXR5X29ubHkgPSBzdHJ1Y3RcbiAgKCogQWRkIHByaW1pdGl2ZXMgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucy4gRXhpc3RpbmcgdXNlcnMgbWlnaHRcbiAgICAgZGVwZW5kIG9uIGl0IChlLmcuIGdlbl9qc19hcGkpLCB3ZSBkb250IHdhbnQgdGhlIG9jYW1sIGNvbXBpbGVyXG4gICAgIHRvIGNvbXBsYWluIGFib3V0IHRoZXNlcyBtaXNzaW5nIHByaW1pdGl2ZXMuICopXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc19mcm9tX3N0cmluZyA6IHN0cmluZyAtPiBKcy50ID0gXCJjYW1sX2pzX2Zyb21fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fYnl0ZV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgOiAnYSBKcy5qc19hcnJheSAtPiAnYSBsaXN0ID0gXCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF90b19qc19hcnJheSA6ICdhIGxpc3QgLT4gJ2EgSnMuanNfYXJyYXkgPSBcImNhbWxfbGlzdF90b19qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbmVuZFxuXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0eXBlZEFycmF5ID0gSnMudFxuXG4gIHR5cGUgYXJyYXlCdWZmZXIgPSBKcy50XG5cbiAgdHlwZSB1aW50OEFycmF5ID0gSnMudFxuXG4gIGV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IpIEJpZ2FycmF5LmtpbmRcbiAgICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5XG4gICAgPSBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gICAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbiAgbW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgPSBcImJpZ3N0cmluZ190b19hcnJheV9idWZmZXJcIlxuXG4gICAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSA9IFwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5XCJcblxuICAgIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgLT4gdCA9IFwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcIlxuICBlbmRcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgSW50NjQgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlX2ludDY0X2xvX21pX2hpIDogaW50IC0+IGludCAtPiBpbnQgLT4gSW50NjQudFxuICAgID0gXCJjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVwiXG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkNTUyAqKVxubW9kdWxlIENTUyA9IEpzX29mX29jYW1sX19DU1NcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tICopXG5tb2R1bGUgRG9tID0gSnNfb2Zfb2NhbWxfX0RvbVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21fZXZlbnRzICopXG5tb2R1bGUgRG9tX2V2ZW50cyA9IEpzX29mX29jYW1sX19Eb21fZXZlbnRzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9odG1sICopXG5tb2R1bGUgRG9tX2h0bWwgPSBKc19vZl9vY2FtbF9fRG9tX2h0bWxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX3N2ZyAqKVxubW9kdWxlIERvbV9zdmcgPSBKc19vZl9vY2FtbF9fRG9tX3N2Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5FdmVudFNvdXJjZSAqKVxubW9kdWxlIEV2ZW50U291cmNlID0gSnNfb2Zfb2NhbWxfX0V2ZW50U291cmNlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZpbGUgKilcbm1vZHVsZSBGaWxlID0gSnNfb2Zfb2NhbWxfX0ZpbGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRmlyZWJ1ZyAqKVxubW9kdWxlIEZpcmVidWcgPSBKc19vZl9vY2FtbF9fRmlyZWJ1Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Gb3JtICopXG5tb2R1bGUgRm9ybSA9IEpzX29mX29jYW1sX19Gb3JtXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkdlb2xvY2F0aW9uICopXG5tb2R1bGUgR2VvbG9jYXRpb24gPSBKc19vZl9vY2FtbF9fR2VvbG9jYXRpb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW1wb3J0ICopXG5tb2R1bGUgSW1wb3J0ID0gSnNfb2Zfb2NhbWxfX0ltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbnRlcnNlY3Rpb25PYnNlcnZlciAqKVxubW9kdWxlIEludGVyc2VjdGlvbk9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX0ludGVyc2VjdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkludGwgKilcbm1vZHVsZSBJbnRsID0gSnNfb2Zfb2NhbWxfX0ludGxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnMgKilcbm1vZHVsZSBKcyA9IEpzX29mX29jYW1sX19Kc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Kc29uICopXG5tb2R1bGUgSnNvbiA9IEpzX29mX29jYW1sX19Kc29uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzdGFibGUgKilcbm1vZHVsZSBKc3RhYmxlID0gSnNfb2Zfb2NhbWxfX0pzdGFibGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuTGliX3ZlcnNpb24gKilcbm1vZHVsZSBMaWJfdmVyc2lvbiA9IEpzX29mX29jYW1sX19MaWJfdmVyc2lvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5NdXRhdGlvbk9ic2VydmVyICopXG5tb2R1bGUgTXV0YXRpb25PYnNlcnZlciA9IEpzX29mX29jYW1sX19NdXRhdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlBlcmZvcm1hbmNlT2JzZXJ2ZXIgKilcbm1vZHVsZSBQZXJmb3JtYW5jZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUmVnZXhwICopXG5tb2R1bGUgUmVnZXhwID0gSnNfb2Zfb2NhbWxfX1JlZ2V4cFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5SZXNpemVPYnNlcnZlciAqKVxubW9kdWxlIFJlc2l6ZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1Jlc2l6ZU9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlN5c19qcyAqKVxubW9kdWxlIFN5c19qcyA9IEpzX29mX29jYW1sX19TeXNfanNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuVHlwZWRfYXJyYXkgKilcbm1vZHVsZSBUeXBlZF9hcnJheSA9IEpzX29mX29jYW1sX19UeXBlZF9hcnJheVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5VcmwgKilcbm1vZHVsZSBVcmwgPSBKc19vZl9vY2FtbF9fVXJsXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldlYkdMICopXG5tb2R1bGUgV2ViR0wgPSBKc19vZl9vY2FtbF9fV2ViR0xcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV2ViU29ja2V0cyAqKVxubW9kdWxlIFdlYlNvY2tldHMgPSBKc19vZl9vY2FtbF9fV2ViU29ja2V0c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Xb3JrZXIgKilcbm1vZHVsZSBXb3JrZXIgPSBKc19vZl9vY2FtbF9fV29ya2VyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlhtbEh0dHBSZXF1ZXN0ICopXG5tb2R1bGUgWG1sSHR0cFJlcXVlc3QgPSBKc19vZl9vY2FtbF9fWG1sSHR0cFJlcXVlc3RcblxubW9kdWxlIEpzX29mX29jYW1sX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIigqIEpzX29mX29jYW1sXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5lbmRcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuICBsZXQgbWluICh4IDogaW50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSAoeSA6IHN0cmluZykgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuXG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpICh5IDogY2hhcikgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVGhpcyBsb2NhbCBtb2R1bGUgW0pzXSBpcyBuZWVkZWQgc28gdGhhdCB0aGUgcHB4X2pzIGV4dGVuc2lvbiB3b3JrIHdpdGhpbiB0aGF0IGZpbGUuICopXG5tb2R1bGUgSnMgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdFxuXG4gIHR5cGUgKC0nYSwgKydiKSBtZXRoX2NhbGxiYWNrXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIHR5cGUgdG9wXG5cbiAgICB0eXBlIGFueSA9IHRvcCB0XG5cbiAgICB0eXBlIGFueV9qc19hcnJheSA9IGFueVxuXG4gICAgZXh0ZXJuYWwgaW5qZWN0IDogJ2EgLT4gYW55ID0gXCIlaWRlbnRpdHlcIlxuXG4gICAgZXh0ZXJuYWwgY29lcmNlIDogXyB0IC0+IF8gdCA9IFwiJWlkZW50aXR5XCJcblxuICAgIGV4dGVybmFsIGdldCA6ICdhIC0+ICdiIC0+ICdjID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgICBleHRlcm5hbCBzZXQgOiAnYSAtPiAnYiAtPiAnYyAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgICBleHRlcm5hbCBkZWxldGUgOiAnYSAtPiAnYiAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbiAgICBleHRlcm5hbCBjYWxsIDogJ2EgLT4gJ2IgLT4gYW55IGFycmF5IC0+ICdjID0gXCJjYW1sX2pzX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgZnVuX2NhbGwgOiAnYSAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsIDogJ2EgLT4gc3RyaW5nIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29iaiA6ICdhIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19uZXdcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29ial9hcnIgOiAnYSAtPiBhbnlfanNfYXJyYXkgLT4gJ2IgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG4gICAgZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIGFueSkgYXJyYXkgLT4gJ2EgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuICAgIGV4dGVybmFsIGVxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9leHByIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2pzX3B1cmVfZXhwclwiXG5cbiAgICBleHRlcm5hbCBldmFsX3N0cmluZyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19ldmFsX3N0cmluZ1wiXG5cbiAgICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbiAgICBsZXQgZ2xvYmFsID0gcHVyZV9qc19leHByIFwiZ2xvYmFsVGhpc1wiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICAgKGFueV9qc19hcnJheSAtPiAnYikgLT4gKCdjLCBhbnlfanNfYXJyYXkgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3RcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgICAoJ2IgLT4gYW55X2pzX2FycmF5IC0+ICdhKSAtPiAoJ2IsIGFueV9qc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgICAoKiBERVBSRUNBVEVEICopXG4gICAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbiAgZW5kXG5cbiAgKCoqKiopXG5cbiAgdHlwZSAnYSBvcHQgPSAnYVxuXG4gIHR5cGUgJ2Egb3B0ZGVmID0gJ2FcblxuICBleHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuXG4gIGxldCBudWxsIDogJ2Egb3B0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIm51bGxcIlxuXG4gIGV4dGVybmFsIHNvbWUgOiAnYSAtPiAnYSBvcHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IHVuZGVmaW5lZCA6ICdhIG9wdGRlZiA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ1bmRlZmluZWRcIlxuXG4gIGV4dGVybmFsIGRlZiA6ICdhIC0+ICdhIG9wdGRlZiA9IFwiJWlkZW50aXR5XCJcblxuICBtb2R1bGUgdHlwZSBPUFQgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlbXB0eSA6ICdhIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgICB2YWwgbWFwIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcblxuICAgIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuXG4gICAgdmFsIHRlc3QgOiAnYSB0IC0+IGJvb2xcblxuICAgIHZhbCBpdGVyIDogJ2EgdCAtPiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICAgdmFsIGNhc2UgOiAnYSB0IC0+ICh1bml0IC0+ICdiKSAtPiAoJ2EgLT4gJ2IpIC0+ICdiXG5cbiAgICB2YWwgZ2V0IDogJ2EgdCAtPiAodW5pdCAtPiAnYSkgLT4gJ2FcblxuICAgIHZhbCBvcHRpb24gOiAnYSBvcHRpb24gLT4gJ2EgdFxuXG4gICAgdmFsIHRvX29wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHQgOiBPUFQgd2l0aCB0eXBlICdhIHQgPSAnYSBvcHQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBvcHRcblxuICAgIGxldCBlbXB0eSA9IG51bGxcblxuICAgIGxldCByZXR1cm4gPSBzb21lXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBsZXQgbWFwIHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBudWxsIGVsc2UgcmV0dXJuIChmIHgpXG5cbiAgICBsZXQgYmluZCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gbnVsbCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoZXF1YWxzIHggbnVsbClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoZXF1YWxzIHggbnVsbCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICBtb2R1bGUgT3B0ZGVmIDogT1BUIHdpdGggdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmXG5cbiAgICBsZXQgZW1wdHkgPSB1bmRlZmluZWRcblxuICAgIGxldCByZXR1cm4gPSBkZWZcblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGxldCBtYXAgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIHJldHVybiAoZiB4KVxuXG4gICAgbGV0IGJpbmQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICAoKioqKilcblxuICBsZXQgY29lcmNlIHggZiBnID0gT3B0LmdldCAoZiB4KSAoZnVuICgpIC0+IGcgeClcblxuICBsZXQgY29lcmNlX29wdCB4IGYgZyA9IE9wdC5nZXQgKE9wdC5iaW5kIHggZikgKGZ1biAoKSAtPiBnIHgpXG5cbiAgKCoqKiopXG5cbiAgdHlwZSArJ2EgbWV0aFxuXG4gIHR5cGUgKydhIGdlbl9wcm9wXG5cbiAgdHlwZSAnYSByZWFkb25seV9wcm9wID0gPCBnZXQgOiAnYSA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSB3cml0ZW9ubHlfcHJvcCA9IDwgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSBwcm9wID0gPCBnZXQgOiAnYSA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2Egb3B0ZGVmX3Byb3AgPSA8IGdldCA6ICdhIG9wdGRlZiA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgKydhIGNvbnN0clxuXG4gICgqKioqKVxuXG4gIHR5cGUgJ2EgY2FsbGJhY2sgPSAodW5pdCwgJ2EpIG1ldGhfY2FsbGJhY2tcblxuICBleHRlcm5hbCB3cmFwX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9tZXRoX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrXCJcblxuICAoKioqKilcblxuICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICgqKioqKVxuXG4gIGxldCBfdHJ1ZSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ0cnVlXCJcblxuICBsZXQgX2ZhbHNlID0gVW5zYWZlLnB1cmVfanNfZXhwciBcImZhbHNlXCJcblxuICB0eXBlIG1hdGNoX3Jlc3VsdF9oYW5kbGVcblxuICB0eXBlIHN0cmluZ19hcnJheVxuXG4gIHR5cGUgbnVtYmVyX3QgPSBmbG9hdFxuXG4gIGNsYXNzIHR5cGUgbnVtYmVyID0gb2JqZWN0XG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvU3RyaW5nX3JhZGl4IDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0ZpeGVkIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0V4cG9uZW50aWFsIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRXhwb25lbnRpYWxfZGlnaXRzIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1ByZWNpc2lvbiA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG4gIGVuZFxuXG4gIGFuZCBqc19zdHJpbmcgPSBvYmplY3RcbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdmFsdWVPZiA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjaGFyQXQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNoYXJDb2RlQXQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gICAgKCogVGhpcyBtYXkgcmV0dXJuIE5hTi4uLiAqKVxuICAgIG1ldGhvZCBjb25jYXQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzQgOlxuICAgICAganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2YgOiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2ZfZnJvbSA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleE9mIDoganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsYXN0SW5kZXhPZl9mcm9tIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbG9jYWxlQ29tcGFyZSA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IG1ldGhcblxuICAgIG1ldGhvZCBfbWF0Y2ggOiByZWdFeHAgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCBub3JtYWxpemUgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgbm9ybWFsaXplX2Zvcm0gOiBub3JtYWxpemF0aW9uIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHJlcGxhY2UgOiByZWdFeHAgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgcmVwbGFjZV9zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc2VhcmNoIDogcmVnRXhwIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNsaWNlX2VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXQgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfbGltaXRlZCA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfcmVnRXhwIDogcmVnRXhwIHQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X3JlZ0V4cExpbWl0ZWQgOiByZWdFeHAgdCAtPiBpbnQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZyA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZ190b0VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVMb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9VcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVVcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdHJpbSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBhbmQgcmVnRXhwID0gb2JqZWN0XG4gICAgbWV0aG9kIGV4ZWMgOiBqc19zdHJpbmcgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCB0ZXN0IDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzb3VyY2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZ2xvYmFsIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVDYXNlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtdWx0aWxpbmUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleCA6IGludCBwcm9wXG4gIGVuZFxuXG4gIGFuZCBub3JtYWxpemF0aW9uID0ganNfc3RyaW5nXG5cbiAgKCogc3RyaW5nIGlzIHVzZWQgYnkgcHB4X2pzLCBpdCBuZWVkcyB0byBjb21lIGJlZm9yZSBhbnkgdXNlIG9mIHRoZVxuICAgICBuZXcgc3ludGF4IGluIHRoaXMgZmlsZSAqKVxuICBleHRlcm5hbCBzdHJpbmcgOiBzdHJpbmcgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBsZXQgbmZjID0gc3RyaW5nIFwiTkZDXCJcblxuICBsZXQgbmZkID0gc3RyaW5nIFwiTkZEXCJcblxuICBsZXQgbmZrYyA9IHN0cmluZyBcIk5GS0NcIlxuXG4gIGxldCBuZmtkID0gc3RyaW5nIFwiTkZLRFwiXG5lbmRcblxuaW5jbHVkZSBKc1xuXG5jbGFzcyB0eXBlIHN0cmluZ19jb25zdHIgPSBvYmplY3RcbiAgbWV0aG9kIGZyb21DaGFyQ29kZSA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IHN0cmluZ19jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX1N0cmluZ1xuXG5sZXQgcmVnRXhwID0gVW5zYWZlLmdsb2JhbCMjLl9SZWdFeHBcblxubGV0IHJlZ0V4cF9jb3B5ID0gcmVnRXhwXG5cbmxldCByZWdFeHBfd2l0aEZsYWdzID0gcmVnRXhwXG5cbmNsYXNzIHR5cGUgWydhXSBqc19hcnJheSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25jYXQgOiAnYSBqc19hcnJheSB0IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBqb2luIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBwb3AgOiAnYSBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBwdXNoIDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcmV2ZXJzZSA6ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzaGlmdCA6ICdhIG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfZW5kIDogaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzb3J0IDogKCdhIC0+ICdhIC0+IG51bWJlcl90KSBjYWxsYmFjayAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc29ydF9hc1N0cmluZ3MgOiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzEgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMiA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8zIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzQgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0IDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2Qgc29tZSA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGV2ZXJ5IDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZm9yRWFjaCA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbWFwIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZmlsdGVyIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZV9pbml0IDogKCdiIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZSA6ICgnYSAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYSkgY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VSaWdodF9pbml0IDpcbiAgICAoJ2IgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIC0+ICdiIG1ldGhcblxuICBtZXRob2QgcmVkdWNlUmlnaHQgOiAoJ2EgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2EpIGNhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHByb3BcbmVuZFxuXG5sZXQgb2JqZWN0X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IG9iamVjdF9rZXlzIG8gOiBqc19zdHJpbmcgdCBqc19hcnJheSB0ID0gb2JqZWN0X2NvbnN0cnVjdG9yIyNrZXlzIG9cblxubGV0IGFycmF5X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9BcnJheVxuXG5sZXQgYXJyYXlfZW1wdHkgPSBhcnJheV9jb25zdHJ1Y3RvclxuXG5sZXQgYXJyYXlfbGVuZ3RoID0gYXJyYXlfY29uc3RydWN0b3JcblxubGV0IGFycmF5X2dldCA6ICdhICNqc19hcnJheSB0IC0+IGludCAtPiAnYSBvcHRkZWYgPSBVbnNhZmUuZ2V0XG5cbmxldCBhcnJheV9zZXQgOiAnYSAjanNfYXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFVuc2FmZS5zZXRcblxubGV0IGFycmF5X21hcF9wb2x5IDpcbiAgICAnYSAjanNfYXJyYXkgdCAtPiAoJ2EgLT4gaW50IC0+ICdhICNqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAjanNfYXJyYXkgdCA9XG4gZnVuIGEgY2IgLT4gKFVuc2FmZS5jb2VyY2UgYSkjI21hcCBjYlxuXG5sZXQgYXJyYXlfbWFwIGYgYSA9IGFycmF5X21hcF9wb2x5IGEgKHdyYXBfY2FsbGJhY2sgKGZ1biB4IF9pZHggXyAtPiBmIHgpKVxuXG5sZXQgYXJyYXlfbWFwaSBmIGEgPSBhcnJheV9tYXBfcG9seSBhICh3cmFwX2NhbGxiYWNrIChmdW4geCBpZHggXyAtPiBmIGlkeCB4KSlcblxuY2xhc3MgdHlwZSBtYXRjaF9yZXN1bHQgPSBvYmplY3RcbiAgaW5oZXJpdCBbanNfc3RyaW5nIHRdIGpzX2FycmF5XG5cbiAgbWV0aG9kIGluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5wdXQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHN0cl9hcnJheSA6IHN0cmluZ19hcnJheSB0IC0+IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgPSBVbnNhZmUuY29lcmNlXG5cbmxldCBtYXRjaF9yZXN1bHQgOiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgLT4gbWF0Y2hfcmVzdWx0IHQgPSBVbnNhZmUuY29lcmNlXG5cbmNsYXNzIHR5cGUgZGF0ZSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0ZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9UaW1lU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVEYXRlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVRpbWVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHZhbHVlT2YgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZ1bGxZZWFyIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRnVsbFllYXIgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNb250aCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01vbnRoIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0ZSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0RhdGUgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENEYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRIb3VycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0hvdXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TWludXRlcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbnV0ZXMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDU2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWV6b25lT2Zmc2V0IDogaW50IG1ldGhcblxuICBtZXRob2Qgc2V0VGltZSA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RnVsbFllYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENGdWxsWWVhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1vbnRoIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTW9udGggOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXRlIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRGF0ZSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldERheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0RheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEhvdXJzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDSG91cnMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNaW51dGVzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWludXRlcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENTZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdG9VVENTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvSVNPU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0pTT04gOiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkYXRlX2NvbnN0ciA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbW9udGggOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19kYXkgOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19ob3VyIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19taW4gOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19zZWMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbXMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBub3cgOiBudW1iZXJfdCBtZXRoXG5lbmRcblxubGV0IGRhdGVfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9EYXRlXG5cbmxldCBkYXRlIDogZGF0ZV9jb25zdHIgdCA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX25vdyA6IGRhdGUgdCBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9mcm9tVGltZVZhbHVlIDogKG51bWJlcl90IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbW9udGggOiAoaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2RheSA6IChpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2hvdXIgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbWluIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9zZWMgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9tcyA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPVxuICBkYXRlX2NvbnN0clxuXG5jbGFzcyB0eXBlIG1hdGggPSBvYmplY3RcbiAgbWV0aG9kIF9FIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4yIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4xMCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPRzJFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9HMTBFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUEkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUVJUMV8yXyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NRUlQyIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFzaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjZWlsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGV4cCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZmxvb3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGxvZyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXhfMyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4XzQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbiA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluXzMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbl80IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBwb3cgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHJhbmRvbSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgcm91bmQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNpbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc3FydCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdGFuIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbmxldCBtYXRoID0gVW5zYWZlLmdsb2JhbCMjLl9NYXRoXG5cbmNsYXNzIHR5cGUgZXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0YWNrIDoganNfc3RyaW5nIHQgb3B0ZGVmIHByb3BcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGVycm9yX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRXJyb3JcblxubW9kdWxlIEpzX2Vycm9yID0gc3RydWN0XG4gIHR5cGUgZXJyb3JfdCA9IGVycm9yIHRcblxuICBpbmNsdWRlIEpzb29fcnVudGltZS5FcnJvclxuXG4gIGV4dGVybmFsIG9mX2Vycm9yIDogZXJyb3JfdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGV4dGVybmFsIHRvX2Vycm9yIDogdCAtPiBlcnJvcl90ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBuYW1lIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubmFtZVxuXG4gIGxldCBtZXNzYWdlIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubWVzc2FnZVxuXG4gIGxldCBzdGFjayAoZSA6IHQpIDogc3RyaW5nIG9wdGlvbiA9XG4gICAgT3B0LnRvX29wdGlvbiAoT3B0Lm1hcCAodG9fZXJyb3IgZSkjIy5zdGFjayB0b19zdHJpbmcpXG5cbiAgbGV0IHRvX3N0cmluZyBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjdG9TdHJpbmdcbmVuZFxuXG5tb2R1bGUgTWFnaWMgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIGV4Y2VwdGlvbiBFcnJvciBvZiBlcnJvciB0XG4gIGVuZFxuXG4gIHR5cGUgKCdhLCAnYikgZXEgPSBFcSA6ICgnYSwgJ2EpIGVxXG5cbiAgbGV0IChlcSA6IChlcnJvciB0LCBKc19lcnJvci50KSBlcSkgPSBPYmoubWFnaWMgRXFcblxuICBsZXQgbSA9XG4gICAgbWF0Y2ggZXEgd2l0aFxuICAgIHwgRXEgLT5cbiAgICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgICBleGNlcHRpb24gRXJyb3IgPSBKc19lcnJvci5FeG5cbiAgICAgICAgZW5kIDogVClcblxuICBtb2R1bGUgRXJyb3IgPSAodmFsIG0gOiBUKVxuZW5kXG5cbmluY2x1ZGUgTWFnaWMuRXJyb3JcblxubGV0IHJhaXNlX2pzX2Vycm9yIGUgPSBKc19lcnJvci5yYWlzZV8gKEpzX2Vycm9yLm9mX2Vycm9yIGUpXG5cbmxldCBzdHJpbmdfb2ZfZXJyb3IgZSA9IEpzX2Vycm9yLnRvX3N0cmluZyAoSnNfZXJyb3Iub2ZfZXJyb3IgZSlcblxubGV0IGV4bl93aXRoX2pzX2JhY2t0cmFjZSA9IEpzX2Vycm9yLmF0dGFjaF9qc19iYWNrdHJhY2VcblxuZXh0ZXJuYWwganNfZXJyb3Jfb2ZfZXhuIDogZXhuIC0+IGVycm9yIHQgb3B0ID0gXCJjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvblwiXG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeSA6ICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgX0pTT04gOiBqc29uIHQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGRlY29kZVVSSSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5kZWNvZGVVUkkgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBkZWNvZGVVUklDb21wb25lbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZGVjb2RlVVJJQ29tcG9uZW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZW5jb2RlVVJJIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVuY29kZVVSSSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVuY29kZVVSSUNvbXBvbmVudCAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lbmNvZGVVUklDb21wb25lbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZXNjYXBlIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgdW5lc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMudW5lc2NhcGUgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmV4dGVybmFsIGJvb2wgOiBib29sIC0+IGJvb2wgdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG5leHRlcm5hbCB0b19ib29sIDogYm9vbCB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbmV4dGVybmFsIGFycmF5IDogJ2EgYXJyYXkgLT4gJ2EganNfYXJyYXkgdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcblxuZXh0ZXJuYWwgdG9fYXJyYXkgOiAnYSBqc19hcnJheSB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuZXh0ZXJuYWwgYnl0ZXN0cmluZyA6IHN0cmluZyAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuXG5leHRlcm5hbCBmbG9hdCA6IGZsb2F0IC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG5leHRlcm5hbCB0b19mbG9hdCA6IG51bWJlcl90IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gbnVtYmVyIHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbmV4dGVybmFsIGZsb2F0X29mX251bWJlciA6IG51bWJlciB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgaW50MzIgOiBpbnQzMiAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBudW1iZXJfdCAtPiBpbnQzMiA9IFwiY2FtbF9qc190b19pbnQzMlwiXG5cbmV4dGVybmFsIG5hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IG51bWJlcl90IC0+IG5hdGl2ZWludCA9IFwiY2FtbF9qc190b19uYXRpdmVpbnRcIlxuXG5leHRlcm5hbCB0eXBlb2YgOiBfIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IF8gdCAtPiBfIGNvbnN0ciAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG5sZXQgaXNOYU4gKGkgOiAnYSkgOiBib29sID1cbiAgdG9fYm9vbCAoVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5pc05hTiBbfCBVbnNhZmUuaW5qZWN0IGkgfF0pXG5cbmxldCBwYXJzZUludCAocyA6IGpzX3N0cmluZyB0KSA6IGludCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUludCBbfCBVbnNhZmUuaW5qZWN0IHMgfF0gaW5cbiAgaWYgaXNOYU4gcyB0aGVuIGZhaWx3aXRoIFwicGFyc2VJbnRcIiBlbHNlIHNcblxubGV0IHBhcnNlRmxvYXQgKHMgOiBqc19zdHJpbmcgdCkgOiBudW1iZXJfdCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUZsb2F0IFt8IFVuc2FmZS5pbmplY3QgcyB8XSBpblxuICBpZiBpc05hTiBzIHRoZW4gZmFpbHdpdGggXCJwYXJzZUZsb2F0XCIgZWxzZSBzXG5cbmxldCBfID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuY3Rpb25cbiAgICAgIHwgSnNfZXJyb3IuRXhuIGUgLT4gU29tZSAoSnNfZXJyb3IudG9fc3RyaW5nIGUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IF8gPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW4gZSAtPlxuICAgICAgbGV0IGUgOiA8IC4uID4gdCA9IE9iai5tYWdpYyBlIGluXG4gICAgICBpZiBpbnN0YW5jZW9mIGUgYXJyYXlfY29uc3RydWN0b3IgdGhlbiBOb25lIGVsc2UgU29tZSAodG9fc3RyaW5nIGUjI3RvU3RyaW5nKSlcblxubGV0IGV4cG9ydF9qcyAoZmllbGQgOiBqc19zdHJpbmcgdCkgeCA9XG4gIFVuc2FmZS5zZXRcbiAgICAoVW5zYWZlLnB1cmVfanNfZXhwciBcImpzb29fZXhwb3J0c1wiKVxuICAgIGZpZWxkXG4gICAgKGlmIFN0cmluZy5lcXVhbCAoSnMudG9fc3RyaW5nICh0eXBlb2YgKE9iai5tYWdpYyB4KSkpIFwiZnVuY3Rpb25cIlxuICAgICAgICAoKiBmdW5jdGlvbiB3aXRoIGFyaXR5L2xlbmd0aCBlcXVhbCB0byB6ZXJvIGFyZSBhbHJlYWR5IHdyYXBwZWQgKilcbiAgICAgICAgJiYgVW5zYWZlLmdldCAoT2JqLm1hZ2ljIHgpIChKcy5zdHJpbmcgXCJsZW5ndGhcIikgPiAwXG4gICAgIHRoZW4gT2JqLm1hZ2ljICh3cmFwX2NhbGxiYWNrIChPYmoubWFnaWMgeCkpXG4gICAgIGVsc2UgeClcblxubGV0IGV4cG9ydCBmaWVsZCB4ID0gZXhwb3J0X2pzIChzdHJpbmcgZmllbGQpIHhcblxubGV0IGV4cG9ydF9hbGwgb2JqID1cbiAgbGV0IGtleXMgPSBvYmplY3Rfa2V5cyBvYmogaW5cbiAga2V5cyMjZm9yRWFjaFxuICAgICh3cmFwX2NhbGxiYWNrIChmdW4gKGtleSA6IGpzX3N0cmluZyB0KSBfIF8gLT4gZXhwb3J0X2pzIGtleSAoVW5zYWZlLmdldCBvYmoga2V5KSkpXG5cbigqKioqKVxuXG4oKiBERVBSRUNBVEVEICopXG5cbnR5cGUgZmxvYXRfcHJvcCA9IG51bWJlcl90IHByb3BcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIG5vZGVMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbGlzdF9vZl9ub2RlTGlzdCAobm9kZUxpc3QgOiAnYSBub2RlTGlzdCB0KSA9XG4gIGxldCBsZW5ndGggPSBub2RlTGlzdCMjLmxlbmd0aCBpblxuICBsZXQgcmVjIGFkZF9pdGVtIGFjYyBpID1cbiAgICBpZiBpIDwgbGVuZ3RoXG4gICAgdGhlblxuICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAobm9kZUxpc3QjI2l0ZW0gaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGFkZF9pdGVtIGFjYyAoaSArIDEpXG4gICAgICB8IFNvbWUgZSAtPiBhZGRfaXRlbSAoZSA6OiBhY2MpIChpICsgMSlcbiAgICBlbHNlIExpc3QucmV2IGFjY1xuICBpblxuICBhZGRfaXRlbSBbXSAwXG5cbnR5cGUgbm9kZVR5cGUgPVxuICB8IE9USEVSXG4gICgqIFdpbGwgbm90IGhhcHBlbiAqKVxuICB8IEVMRU1FTlRcbiAgfCBBVFRSSUJVVEVcbiAgfCBURVhUXG4gIHwgQ0RBVEFfU0VDVElPTlxuICB8IEVOVElUWV9SRUZFUkVOQ0VcbiAgfCBFTlRJVFlcbiAgfCBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OXG4gIHwgQ09NTUVOVFxuICB8IERPQ1VNRU5UXG4gIHwgRE9DVU1FTlRfVFlQRVxuICB8IERPQ1VNRU5UX0ZSQUdNRU5UXG4gIHwgTk9UQVRJT05cblxubW9kdWxlIERvY3VtZW50UG9zaXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgdHlwZSBtYXNrID0gaW50XG5cbiAgbGV0IGRpc2Nvbm5lY3RlZCA9IDB4MDFcblxuICBsZXQgcHJlY2VkaW5nID0gMHgwMlxuXG4gIGxldCBmb2xsb3dpbmcgPSAweDA0XG5cbiAgbGV0IGNvbnRhaW5zID0gMHgwOFxuXG4gIGxldCBjb250YWluZWRfYnkgPSAweDEwXG5cbiAgbGV0IGltcGxlbWVudGF0aW9uX3NwZWNpZmljID0gMHgyMFxuXG4gIGxldCBoYXMgdCBtYXNrID0gdCBsYW5kIG1hc2sgPSBtYXNrXG5cbiAgbGV0IGFkZCB4IHkgPSB4IGxvciB5XG5cbiAgbGV0ICggKyApID0gYWRkXG5lbmRcblxuY2xhc3MgdHlwZSBub2RlID0gb2JqZWN0XG4gIG1ldGhvZCBub2RlTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVR5cGUgOiBub2RlVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudE5vZGUgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IG5vZGUgbm9kZUxpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbGFzdENoaWxkIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lc3BhY2VVUkkgOiBqc19zdHJpbmcgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRCZWZvcmUgOiBub2RlIHQgLT4gbm9kZSB0IG9wdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUNoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZENoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0NoaWxkTm9kZXMgOiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZU5vZGUgOiBib29sIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgY29tcGFyZURvY3VtZW50UG9zaXRpb24gOiBub2RlIHQgLT4gRG9jdW1lbnRQb3NpdGlvbi50IG1ldGhcblxuICBtZXRob2QgbG9va3VwTmFtZXNwYWNlVVJJIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbG9va3VwUHJlZml4IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgYXBwZW5kQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNhcHBlbmRDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVtb3ZlQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNyZW1vdmVDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVwbGFjZUNoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQpID1cbiAgaWdub3JlIChwIyNyZXBsYWNlQ2hpbGQgKG4gOj4gbm9kZSB0KSAobyA6PiBub2RlIHQpKVxuXG5sZXQgaW5zZXJ0QmVmb3JlIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQgb3B0KSA9XG4gIGlnbm9yZSAocCMjaW5zZXJ0QmVmb3JlIChuIDo+IG5vZGUgdCkgKG8gOj4gbm9kZSB0IG9wdCkpXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtBdHRyXSBvYmplY3RzLiAqKVxuY2xhc3MgdHlwZSBhdHRyID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGVjaWZpZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3duZXJFbGVtZW50IDogZWxlbWVudCB0IHByb3BcbmVuZFxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbTmFtZWROb2RlTWFwXSBvYmplY3RzLiAqKVxuYW5kIFsnbm9kZV0gbmFtZWROb2RlTWFwID0gb2JqZWN0XG4gIG1ldGhvZCBnZXROYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldE5hbWVkSXRlbSA6ICdub2RlIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVOYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtFbGVtZW50XSBvYmplY3RzLiAqKVxuYW5kIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIHRhZ05hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaGFzQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBoYXNBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5vZGUgOiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOb2RlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZU5TIDogYXR0ciB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5VGFnTmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgbm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyIG5hbWVkTm9kZU1hcCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGNoYXJhY3RlckRhdGEgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1YmpzX3N0cmluZ0RhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kRGF0YSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnREYXRhIDogaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVEYXRhIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZURhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgY29tbWVudCA9IGNoYXJhY3RlckRhdGFcblxuY2xhc3MgdHlwZSB0ZXh0ID0gY2hhcmFjdGVyRGF0YVxuXG5jbGFzcyB0eXBlIGRvY3VtZW50RnJhZ21lbnQgPSBub2RlXG5cbmNsYXNzIHR5cGUgWydlbGVtZW50XSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgZG9jdW1lbnRFbGVtZW50IDogJ2VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQgOiBkb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVFbGVtZW50IDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUVsZW1lbnROUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0Tm9kZSA6IGpzX3N0cmluZyB0IC0+IHRleHQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUNvbW1lbnQgOiBqc19zdHJpbmcgdCAtPiBjb21tZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeVRhZ05hbWUgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCBub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgaW1wb3J0Tm9kZSA6IGVsZW1lbnQgdCAtPiBib29sIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGFkb3B0Tm9kZSA6IGVsZW1lbnQgdCAtPiAnZWxlbWVudCB0IG1ldGhcbmVuZFxuXG50eXBlIG5vZGVfdHlwZSA9XG4gIHwgRWxlbWVudCBvZiBlbGVtZW50IHRcbiAgfCBBdHRyIG9mIGF0dHIgdFxuICB8IFRleHQgb2YgdGV4dCB0XG4gIHwgT3RoZXIgb2Ygbm9kZSB0XG5cbmxldCBub2RlVHlwZSBlID1cbiAgbWF0Y2ggZSMjLm5vZGVUeXBlIHdpdGhcbiAgfCBFTEVNRU5UIC0+IEVsZW1lbnQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBBVFRSSUJVVEUgLT4gQXR0ciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IENEQVRBX1NFQ1RJT04gfCBURVhUIC0+IFRleHQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBfIC0+IE90aGVyIChlIDo+IG5vZGUgdClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBjYXN0IChlIDogI25vZGUgSnMudCkgdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IHQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBlbGVtZW50IGUgOiBlbGVtZW50IEpzLnQgSnMub3B0ID0gY2FzdCBlIEVMRU1FTlRcblxuICBsZXQgdGV4dCBlIDogdGV4dCBKcy50IEpzLm9wdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IFRFWFQgfHwgZSMjLm5vZGVUeXBlID09IENEQVRBX1NFQ1RJT05cbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYXR0ciBlIDogYXR0ciBKcy50IEpzLm9wdCA9IGNhc3QgZSBBVFRSSUJVVEVcbmVuZFxuXG50eXBlICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gKCdhLCAnYiAtPiBib29sIHQpIG1ldGhfY2FsbGJhY2sgb3B0XG4oKiogVGhlIHR5cGUgb2YgZXZlbnQgbGlzdGVuZXIgZnVuY3Rpb25zLiAgVGhlIGZpcnN0IHR5cGUgcGFyYW1ldGVyXG4gICAgICBbJ2FdIGlzIHRoZSB0eXBlIG9mIHRoZSB0YXJnZXQgb2JqZWN0OyB0aGUgc2Vjb25kIHBhcmFtZXRlclxuICAgICAgWydiXSBpcyB0aGUgdHlwZSBvZiB0aGUgZXZlbnQgb2JqZWN0LiAqKVxuXG5jbGFzcyB0eXBlIFsnYV0gZXZlbnQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUYXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgKCogTGVnYWN5IG1ldGhvZHMgKilcbiAgbWV0aG9kIHNyY0VsZW1lbnQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gZXZlbnRcblxuICBtZXRob2QgZGV0YWlsIDogJ2IgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gSnMubnVsbFxuXG5sZXQgd2luZG93X2V2ZW50ICgpIDogJ2EgI2V2ZW50IHQgPSBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiZXZlbnRcIlxuXG4oKiBUaGUgZnVuY3Rpb24gcHJldmVudERlZmF1bHQgbXVzdCBiZSBjYWxsZWQgZXhwbGljaXRseSB3aGVuXG4gICB1c2luZyBhZGRFdmVudExpc3RlbmVyLi4uICopXG5sZXQgaGFuZGxlciBmID1cbiAgSnMuc29tZVxuICAgIChKcy5VbnNhZmUuY2FsbGJhY2sgKGZ1biBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkLiAqKVxuICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCAoc29tZSBlKSlcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBsZXQgZSA9IHdpbmRvd19ldmVudCAoKSBpblxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gZSMjLnJldHVyblZhbHVlIDo9IHJlcztcbiAgICAgICAgICAgcmVzKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgZnVsbF9oYW5kbGVyIGYgPVxuICBKcy5zb21lXG4gICAgKEpzLlVuc2FmZS5tZXRoX2NhbGxiYWNrIChmdW4gdGhpcyBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkICopXG4gICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IChzb21lIGUpKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIGxldCBlID0gd2luZG93X2V2ZW50ICgpIGluXG4gICAgICAgICAgIGxldCByZXMgPSBmIHRoaXMgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIGUjIy5yZXR1cm5WYWx1ZSA6PSByZXM7XG4gICAgICAgICAgIHJlcylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbGV0IHJlcyA9IGYgdGhpcyBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgaW52b2tlX2hhbmRsZXIgKGYgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lcikgKHRoaXMgOiAnYSkgKGV2ZW50IDogJ2IpIDogYm9vbCB0ID1cbiAgSnMuVW5zYWZlLmNhbGwgZiB0aGlzIFt8IEpzLlVuc2FmZS5pbmplY3QgZXZlbnQgfF1cblxubGV0IGV2ZW50VGFyZ2V0IChlIDogKDwgLi4gPiBhcyAnYSkgI2V2ZW50IHQpIDogJ2EgdCA9XG4gIGxldCB0YXJnZXQgPVxuICAgIE9wdC5nZXQgZSMjLnRhcmdldCAoZnVuICgpIC0+IE9wdC5nZXQgZSMjLnNyY0VsZW1lbnQgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpKVxuICBpblxuICBpZiBKcy5pbnN0YW5jZW9mIHRhcmdldCBKcy5VbnNhZmUuZ2xvYmFsIyMuX05vZGVcbiAgdGhlblxuICAgICgqIFdvcmthcm91bmQgZm9yIFNhZmFyaSBidWcgKilcbiAgICBsZXQgdGFyZ2V0JyA6IG5vZGUgSnMudCA9IEpzLlVuc2FmZS5jb2VyY2UgdGFyZ2V0IGluXG4gICAgaWYgdGFyZ2V0JyMjLm5vZGVUeXBlID09IFRFWFRcbiAgICB0aGVuIEpzLlVuc2FmZS5jb2VyY2UgKE9wdC5nZXQgdGFyZ2V0JyMjLnBhcmVudE5vZGUgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICAgIGVsc2UgdGFyZ2V0XG4gIGVsc2UgdGFyZ2V0XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlICdhIHR5cCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IG1ha2UgcyA9IEpzLnN0cmluZyBzXG5lbmRcblxudHlwZSBldmVudF9saXN0ZW5lcl9pZCA9IHVuaXQgLT4gdW5pdFxuXG5jbGFzcyB0eXBlIGV2ZW50X2xpc3RlbmVyX29wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGNhcHR1cmUgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXNzaXZlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBoID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmFkZEV2ZW50TGlzdGVuZXIpXG4gIHRoZW5cbiAgICBsZXQgZXYgPSAoSnMuc3RyaW5nIFwib25cIikjI2NvbmNhdCB0eXAgaW5cbiAgICBsZXQgY2FsbGJhY2sgZSA9IEpzLlVuc2FmZS5jYWxsIChoLCBlLCBbfHxdKSBpblxuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhdHRhY2hFdmVudCBldiBjYWxsYmFjayBpblxuICAgIGZ1biAoKSAtPiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjZGV0YWNoRXZlbnQgZXYgY2FsbGJhY2tcbiAgZWxzZVxuICAgIGxldCBvcHRzIDogZXZlbnRfbGlzdGVuZXJfb3B0aW9ucyB0ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gICAgbGV0IGl0ZXIgdCBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgYiAtPiBmIGJcbiAgICBpblxuICAgIGl0ZXIgY2FwdHVyZSAoZnVuIGIgLT4gb3B0cyMjLmNhcHR1cmUgOj0gYik7XG4gICAgaXRlciBvbmNlIChmdW4gYiAtPiBvcHRzIyMub25jZSA6PSBiKTtcbiAgICBpdGVyIHBhc3NpdmUgKGZ1biBiIC0+IG9wdHMjIy5wYXNzaXZlIDo9IGIpO1xuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhZGRFdmVudExpc3RlbmVyIHR5cCBoIG9wdHMgaW5cbiAgICBmdW4gKCkgLT4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3JlbW92ZUV2ZW50TGlzdGVuZXIgdHlwIGggb3B0c1xuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCBoIGNhcHQgPVxuICBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgZSB0eXAgfmNhcHR1cmU6Y2FwdCBoXG5cbmxldCByZW1vdmVFdmVudExpc3RlbmVyIGlkID0gaWQgKClcblxubGV0IHByZXZlbnREZWZhdWx0IGV2ID1cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyMucHJldmVudERlZmF1bHQgKCogSUUgaGFjayAqKVxuICB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGV2KSMjcHJldmVudERlZmF1bHRcbiAgZWxzZSAoSnMuVW5zYWZlLmNvZXJjZSBldikjIy5yZXR1cm5WYWx1ZSA6PSBKcy5ib29sIGZhbHNlXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA/YnViYmxlcyA/Y2FuY2VsYWJsZSA/ZGV0YWlsIHR5cCA9XG4gIGxldCBvcHRfaXRlciBmID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgbGV0IG9wdHMgPSBVbnNhZmUub2JqIFt8fF0gaW5cbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5idWJibGVzIDo9IGJvb2wgeCkgYnViYmxlcztcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5jYW5jZWxhYmxlIDo9IGJvb2wgeCkgY2FuY2VsYWJsZTtcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5kZXRhaWwgOj0gc29tZSB4KSBkZXRhaWw7XG4gIGxldCBjb25zdHIgOlxuICAgICAgKCAgICgnYSwgJ2IpICNjdXN0b21FdmVudCBKcy50IEV2ZW50LnR5cFxuICAgICAgIC0+IDwgZGV0YWlsIDogJ2Igb3B0IHByb3AgPiB0XG4gICAgICAgLT4gKCdhLCAnYikgY3VzdG9tRXZlbnQgdClcbiAgICAgIGNvbnN0ciA9XG4gICAgVW5zYWZlLmdsb2JhbCMjLl9DdXN0b21FdmVudFxuICBpblxuICBuZXclanMgY29uc3RyIHR5cCBvcHRzXG5cbigqIElFIDwgOSAqKVxuXG5jbGFzcyB0eXBlIHN0cmluZ0xpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGFpbnMgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxub3BlbiBKc1xuXG50eXBlIHVpbnQzMiA9IGZsb2F0XG5cbmNsYXNzIHR5cGUgYXJyYXlCdWZmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGJ5dGVMZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gYXJyYXlCdWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+IGFycmF5QnVmZmVyIHQgbWV0aFxuZW5kXG5cbmxldCBhcnJheUJ1ZmZlciA6IChpbnQgLT4gYXJyYXlCdWZmZXIgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9BcnJheUJ1ZmZlclxuXG5jbGFzcyB0eXBlIGFycmF5QnVmZmVyVmlldyA9IG9iamVjdFxuICBtZXRob2QgYnVmZmVyIDogYXJyYXlCdWZmZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ5dGVPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBieXRlTGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHR5cGVkQXJyYXkgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgX0JZVEVTX1BFUl9FTEVNRU5UIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0X2Zyb21BcnJheSA6ICdhIGpzX2FycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRfZnJvbVR5cGVkQXJyYXkgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdWJhcnJheSA6IGludCAtPiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3ViYXJyYXlfdG9FbmQgOiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgKCogVGhpcyBmYWtlIG1ldGhvZCBpcyBuZWVkZWQgZm9yIHR5cGluZyBwdXJwb3Nlcy5cbiAgICAgV2l0aG91dCBpdCwgWydiXSB3b3VsZCBub3QgYmUgY29uc3RyYWluZWQuICopXG4gIG1ldGhvZCBfY29udGVudF90eXBlXyA6ICdiIG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxudHlwZSBpbnQ4QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3NpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50OEFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfdW5zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgaW50MzJBcnJheSA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDMyQXJyYXkgPSAoaW50MzIsIEJpZ2FycmF5LmludDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGZsb2F0MzJBcnJheSA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBmbG9hdDY0QXJyYXkgPSAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0NjRfZWx0KSB0eXBlZEFycmF5XG5cbmV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuZXh0ZXJuYWwgZnJvbV9nZW5hcnJheSA6XG4gICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdFxuICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbmV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gID0gXCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXlcIlxuXG5sZXQgaW50OEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tQXJyYXkgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21CdWZmZXIgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9pbkJ1ZmZlciA9IGludDhBcnJheVxuXG5sZXQgdWludDhBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQXJyYXkgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQnVmZmVyID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9pbkJ1ZmZlciA9IHVpbnQ4QXJyYXlcblxubGV0IGludDE2QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUFycmF5ID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUJ1ZmZlciA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfaW5CdWZmZXIgPSBpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21BcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2luQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IGludDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUFycmF5ID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUJ1ZmZlciA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfaW5CdWZmZXIgPSBpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21BcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2luQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbUFycmF5ID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfaW5CdWZmZXIgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0NjRBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbUFycmF5ID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfaW5CdWZmZXIgPSBmbG9hdDY0QXJyYXlcblxubGV0IHNldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9XG4gZnVuIGEgaSB2IC0+IGFycmF5X3NldCAoVW5zYWZlLmNvZXJjZSBhKSBpIHZcblxubGV0IGdldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2Egb3B0ZGVmID0gZnVuIGEgaSAtPiBKcy5VbnNhZmUuZ2V0IGEgaVxuXG5sZXQgdW5zYWZlX2dldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgPSBmdW4gYSBpIC0+IEpzLlVuc2FmZS5nZXQgYSBpXG5cbmNsYXNzIHR5cGUgZGF0YVZpZXcgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgZ2V0SW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MTZfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQzMiA6IGludCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MzJfIDogaW50IC0+IGJvb2wgdCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQ2NCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0NjRfIDogaW50IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDggOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50OCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDE2IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MTZfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MzIgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQzMl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyIDogaW50IC0+IHVpbnQzMiAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyXyA6IGludCAtPiB1aW50MzIgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyXyA6IGludCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjQgOiBpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjRfIDogaW50IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgZGF0YVZpZXcgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0RhdGFWaWV3XG5cbmxldCBkYXRhVmlld19pbkJ1ZmZlciA9IGRhdGFWaWV3XG5cbm1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgSnMudCA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSBKcy50ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgSnMudCAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuXG4gIGxldCBvZl9hcnJheUJ1ZmZlciBhYiA9XG4gICAgbGV0IHVpbnQ4ID0gbmV3JWpzIHVpbnQ4QXJyYXlfZnJvbUJ1ZmZlciBhYiBpblxuICAgIG9mX3VpbnQ4QXJyYXkgdWludDhcbmVuZFxuXG5tb2R1bGUgQnl0ZXMgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgSnMudCAtPiBieXRlcyA9IFwiY2FtbF9ieXRlc19vZl9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IGJ5dGVzIC0+IHVpbnQ4QXJyYXkgSnMudCA9IFwiY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1wiXG5cbiAgbGV0IG9mX2FycmF5QnVmZmVyIGFiID1cbiAgICBsZXQgdWludDggPSBuZXclanMgdWludDhBcnJheV9mcm9tQnVmZmVyIGFiIGluXG4gICAgb2ZfdWludDhBcnJheSB1aW50OFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBibG9iID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBibG9iIHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV93aXRoQ29udGVudFR5cGUgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IC0+IGJsb2IgdCBtZXRoXG5lbmRcblxubGV0IGJsb2JfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9CbG9iXG5cbnR5cGUgJ2EgbWFrZV9ibG9iID1cbiAgP2NvbnRlbnRUeXBlOnN0cmluZyAtPiA/ZW5kaW5nczpbIGBUcmFuc3BhcmVudCB8IGBOYXRpdmUgXSAtPiAnYSAtPiBibG9iIHRcblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgdiA6OiBxIC0+IChcbiAgICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIHFcbiAgICAgIHwgU29tZSB2JyAtPiB2JyA6OiBmaWx0ZXJfbWFwIGYgcSlcblxubGV0IG1ha2VfYmxvYl9vcHRpb25zIGNvbnRlbnRUeXBlIGVuZGluZ3MgPVxuICBsZXQgb3B0aW9ucyA9XG4gICAgZmlsdGVyX21hcFxuICAgICAgKGZ1biAobmFtZSwgdikgLT5cbiAgICAgICAgbWF0Y2ggdiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSB2IC0+IFNvbWUgKG5hbWUsIFVuc2FmZS5pbmplY3QgKHN0cmluZyB2KSkpXG4gICAgICBbIFwidHlwZVwiLCBjb250ZW50VHlwZVxuICAgICAgOyAoIFwiZW5kaW5nc1wiXG4gICAgICAgICwgbWF0Y2ggZW5kaW5ncyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgYFRyYW5zcGFyZW50IC0+IFNvbWUgXCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgfCBTb21lIGBOYXRpdmUgLT4gU29tZSBcIm5hdGl2ZVwiIClcbiAgICAgIF1cbiAgaW5cbiAgbWF0Y2ggb3B0aW9ucyB3aXRoXG4gIHwgW10gLT4gdW5kZWZpbmVkXG4gIHwgbCAtPiBVbnNhZmUub2JqIChBcnJheS5vZl9saXN0IGwpXG5cbmxldCBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgYSA9XG4gIGxldCBvcHRpb25zID0gbWFrZV9ibG9iX29wdGlvbnMgY29udGVudFR5cGUgZW5kaW5ncyBpblxuICBuZXclanMgYmxvYl9jb25zdHIgKGFycmF5IGEpIG9wdGlvbnNcblxubGV0IGJsb2JfZnJvbV9zdHJpbmcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIHMgPVxuICBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgW3wgc3RyaW5nIHMgfF1cblxubGV0IGJsb2JfZnJvbV9hbnkgP2NvbnRlbnRUeXBlID9lbmRpbmdzIGwgPVxuICBsZXQgbCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IGBhcnJheUJ1ZmZlciBhIC0+IFVuc2FmZS5pbmplY3QgYVxuICAgICAgICB8IGBhcnJheUJ1ZmZlclZpZXcgYSAtPiBVbnNhZmUuaW5qZWN0IGFcbiAgICAgICAgfCBgc3RyaW5nIHMgLT4gVW5zYWZlLmluamVjdCAoc3RyaW5nIHMpXG4gICAgICAgIHwgYGpzX3N0cmluZyBzIC0+IFVuc2FmZS5pbmplY3Qgc1xuICAgICAgICB8IGBibG9iIGIgLT4gVW5zYWZlLmluamVjdCBiKVxuICAgICAgbFxuICBpblxuICBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgKEFycmF5Lm9mX2xpc3QgbClcblxuY2xhc3MgdHlwZSBmaWxlID0gb2JqZWN0XG4gIGluaGVyaXQgYmxvYlxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0TW9kaWZpZWREYXRlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGluIGZpcmVmb3ggMy4wLTMuNSBmaWxlLm5hbWUgaXMgbm90IGF2YWlsYWJsZSwgd2UgdXNlIHRoZSBub25zdGFuZGFyZCBmaWxlTmFtZSBpbnN0ZWFkICopXG5jbGFzcyB0eXBlIGZpbGVfbmFtZV9vbmx5ID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsZU5hbWUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBmaWxlbmFtZSBmaWxlID1cbiAgbGV0IGZpbGUgOiBmaWxlX25hbWVfb25seSB0ID0gSnMuVW5zYWZlLmNvZXJjZSBmaWxlIGluXG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZmlsZSMjLm5hbWUgd2l0aFxuICB8IE5vbmUgLT4gKFxuICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBmaWxlIyMuZmlsZU5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiY2FuJ3QgcmV0cmlldmUgZmlsZSBuYW1lOiBub3QgaW1wbGVtZW50ZWRcIlxuICAgICAgfCBTb21lIG5hbWUgLT4gbmFtZSlcbiAgfCBTb21lIG5hbWUgLT4gbmFtZVxuXG50eXBlIGZpbGVfYW55ID0gPCA+IHRcblxubGV0IGRvY19jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0RvY3VtZW50XG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBleHRlcm5hbCBqc29uIDogZmlsZV9hbnkgLT4gJ2EgT3B0LnQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IGRvY3VtZW50IChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgZG9jX2NvbnN0clxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogZWxlbWVudCBkb2N1bWVudCB0KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBibG9iIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgYmxvYl9jb25zdHIgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiAjYmxvYiB0KSBlbHNlIEpzLm51bGxcblxuICBsZXQgc3RyaW5nIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBKcy5lcXVhbHMgKHR5cGVvZiBlKSAoc3RyaW5nIFwic3RyaW5nXCIpXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBqc19zdHJpbmcgdClcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYXJyYXlCdWZmZXIgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdClcbiAgICBlbHNlIEpzLm51bGxcbmVuZFxuXG5jbGFzcyB0eXBlIGZpbGVMaXN0ID0gb2JqZWN0XG4gIGluaGVyaXQgW2ZpbGVdIERvbS5ub2RlTGlzdFxuZW5kXG5cbmNsYXNzIHR5cGUgZmlsZUVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBjb2RlIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gcHJvZ3Jlc3NFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gZXZlbnRcblxuICBtZXRob2QgbGVuZ3RoQ29tcHV0YWJsZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvYWRlZCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvdGFsIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHByb2dyZXNzRXZlbnRUYXJnZXQgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25sb2Fkc3RhcnQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnByb2dyZXNzIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hYm9ydCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlbmQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgRU1QVFlcbiAgfCBMT0FESU5HXG4gIHwgRE9ORVxuXG5jbGFzcyB0eXBlIGZpbGVSZWFkZXIgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2QgcmVhZEFzQXJyYXlCdWZmZXIgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNCaW5hcnlTdHJpbmcgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNUZXh0IDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzVGV4dF93aXRoRW5jb2RpbmcgOiAjYmxvYiB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNEYXRhVVJMIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXN1bHQgOiBmaWxlX2FueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVycm9yIDogZmlsZUVycm9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIGluaGVyaXQgcHJvZ3Jlc3NFdmVudFRhcmdldFxuZW5kXG5cbm1vZHVsZSBSZWFkZXJFdmVudCA9IHN0cnVjdFxuICB0eXBlIHR5cCA9IGZpbGVSZWFkZXIgcHJvZ3Jlc3NFdmVudCB0IERvbS5FdmVudC50eXBcblxuICBsZXQgbG9hZHN0YXJ0ID0gRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IHByb2dyZXNzID0gRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgYWJvcnQgPSBFdmVudC5tYWtlIFwiYWJvcnRcIlxuXG4gIGxldCBlcnJvciA9IEV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGxvYWQgPSBFdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IGxvYWRlbmQgPSBFdmVudC5tYWtlIFwibG9hZGVuZFwiXG5lbmRcblxubGV0IGZpbGVSZWFkZXIgOiBmaWxlUmVhZGVyIHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GaWxlUmVhZGVyXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuZXh0ZXJuYWwgY2FtbF9qc19vbl9pZSA6IHVuaXQgLT4gYm9vbCB0ID0gXCJjYW1sX2pzX29uX2llXCJcblxubGV0IG9uSUUgPSBKcy50b19ib29sIChjYW1sX2pzX29uX2llICgpKVxuXG5leHRlcm5hbCBodG1sX2VzY2FwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX2h0bWxfZXNjYXBlXCJcblxuZXh0ZXJuYWwgZGVjb2RlX2h0bWxfZW50aXRpZXMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc19odG1sX2VudGl0aWVzXCJcblxuY2xhc3MgdHlwZSBjc3NTdHlsZURlY2xhcmF0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBzZXRQcm9wZXJ0eSA6XG4gICAganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0ZGVmIC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvcGVydHlWYWx1ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvcGVydHlQcmlvcml0eSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlUHJvcGVydHkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGFuaW1hdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRGVsYXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRHVyYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkZpbGxNb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25JdGVyYXRpb25Db3VudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uTmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uUGxheVN0YXRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25UaW1pbmdGdW5jdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZEF0dGFjaG1lbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZEltYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kUG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRSZXBlYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21Db2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJDb2xsYXBzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJhZGl1cyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlcldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNhcHRpb25TaWRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGVhciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xpcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvdW50ZXJJbmNyZW1lbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvdW50ZXJSZXNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3NzRmxvYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNzc1RleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnNvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXNwbGF5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlbXB0eUNlbGxzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250RmFtaWx5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250U2l6ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250VmFyaWFudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFdlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZXR0ZXJTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaW5lSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZUltYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVQb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5Cb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpblJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5Ub3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1heEhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWF4V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWluV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9wYWNpdHkgOiBqc19zdHJpbmcgdCBvcHRkZWYgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVPZmZzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvdyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3dYIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvd1kgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdCb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdMZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdUb3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZ2VCcmVha0FmdGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWdlQnJlYWtCZWZvcmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBvaW50ZXJFdmVudHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFibGVMYXlvdXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFuY2hvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dERlY29yYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRJbmRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRUcmFuc2Zvcm0gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdHJhbnNmb3JtIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2ZXJ0aWNhbEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2aXNpYmlsaXR5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aGl0ZVNwYWNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd29yZFNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHpJbmRleCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG50eXBlICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gKCdhLCAnYikgRG9tLmV2ZW50X2xpc3RlbmVyXG5cbnR5cGUgbW91c2VfYnV0dG9uID1cbiAgfCBOb19idXR0b25cbiAgfCBMZWZ0X2J1dHRvblxuICB8IE1pZGRsZV9idXR0b25cbiAgfCBSaWdodF9idXR0b25cblxudHlwZSBkZWx0YV9tb2RlID1cbiAgfCBEZWx0YV9waXhlbFxuICB8IERlbHRhX2xpbmVcbiAgfCBEZWx0YV9wYWdlXG5cbmNsYXNzIHR5cGUgZXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmV2ZW50XG5lbmRcblxuYW5kIFsnYV0gY3VzdG9tRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudCwgJ2FdIERvbS5jdXN0b21FdmVudFxuZW5kXG5cbmFuZCBmb2N1c0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBidXR0b24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGljaCA6IG1vdXNlX2J1dHRvbiBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmcm9tRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG9FbGVtZW50IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBrZXlib2FyZEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvY2F0aW9uIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5IDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoaWNoIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJDb2RlIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleUNvZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRNb2RpZmllclN0YXRlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2Qga2V5SWRlbnRpZmllciA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNld2hlZWxFdmVudCA9IG9iamVjdFxuICAoKiBBbGwgbW9kZXJuIGJyb3dzZXJzICopXG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hlZWxEZWx0YVggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hlZWxEZWx0YVkgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFNb2RlIDogZGVsdGFfbW9kZSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNlU2Nyb2xsRXZlbnQgPSBvYmplY3RcbiAgKCogRmlyZWZveCAqKVxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgZGV0YWlsIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXhpcyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSE9SSVpPTlRBTF9BWElTIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJUSUNBTF9BWElTIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRvdWNoRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCB0b3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXRUb3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFuZ2VkVG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRvdWNoTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiB0b3VjaCB0IG9wdGRlZiBtZXRoXG5lbmRcblxuYW5kIHRvdWNoID0gb2JqZWN0XG4gIG1ldGhvZCBpZGVudGlmaWVyIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogZWxlbWVudCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5ZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VZIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3VibWl0RXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBzdWJtaXR0ZXIgOiBlbGVtZW50IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZHJhZ0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBkYXRhVHJhbnNmZXIgOiBkYXRhVHJhbnNmZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNsaXBib2FyZEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgY2xpcGJvYXJkRGF0YSA6IGRhdGFUcmFuc2ZlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZGF0YVRyYW5zZmVyID0gb2JqZWN0XG4gIG1ldGhvZCBkcm9wRWZmZWN0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlZmZlY3RBbGxvd2VkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHR5cGVzIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFkZEVsZW1lbnQgOiBlbGVtZW50IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGF0YSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRhdGFfYWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldERhdGEgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHNldERhdGEgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RHJhZ0ltYWdlIDogZWxlbWVudCB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIGV2ZW50VGFyZ2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9uY2xpY2sgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRibGNsaWNrIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZWRvd24gOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNldXAgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlb3ZlciA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2Vtb3ZlIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW91dCA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5cHJlc3MgOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleWRvd24gOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleXVwIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zY3JvbGwgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253aGVlbCA6ICgnc2VsZiB0LCBtb3VzZXdoZWVsRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnc3RhcnQgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2VuZCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnZW50ZXIgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ292ZXIgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2xlYXZlIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWcgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJvcCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25zdGFydCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbmVuZCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbml0ZXJhdGlvbiA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbmNhbmNlbCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25ydW4gOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbnN0YXJ0IDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25lbmQgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbmNhbmNlbCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25nb3Rwb2ludGVyY2FwdHVyZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb3N0cG9pbnRlcmNhcHR1cmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmVudGVyIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJjYW5jZWwgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmRvd24gOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmxlYXZlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJtb3ZlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJvdXQgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm92ZXIgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcnVwIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkaXNwYXRjaEV2ZW50IDogZXZlbnQgdCAtPiBib29sIHQgbWV0aFxuZW5kXG5cbmFuZCBwb3BTdGF0ZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgc3RhdGUgOiBKcy5VbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgcG9pbnRlckV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBwb2ludGVySWQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzc3VyZSA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFuZ2VudGlhbFByZXNzdXJlIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aWx0WCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbHRZIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHdpc3QgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb2ludGVyVHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNQcmltYXJ5IDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3RvcmFnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qga2V5IDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2xkVmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVybCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RvcmFnZUFyZWEgOiBzdG9yYWdlIHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3RvcmFnZSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5IDogaW50IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEl0ZW0gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJdGVtIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUl0ZW0gOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXIgOiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgaGFzaENoYW5nZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgb2xkVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXdVUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGFuaW1hdGlvbkV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgYW5pbWF0aW9uTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZWxhcHNlZFRpbWUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBzZXVkb0VsZW1lbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRyYW5zaXRpb25FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHByb3BlcnR5TmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZWxhcHNlZFRpbWUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBzZXVkb0VsZW1lbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1lZGlhRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuZW5kXG5cbmFuZCBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogVW5zYWZlLmFueSBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzb3VyY2UgOiBVbnNhZmUuYW55IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG5vZGVTZWxlY3RvciA9IG9iamVjdFxuICBtZXRob2QgcXVlcnlTZWxlY3RvciA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBxdWVyeVNlbGVjdG9yQWxsIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5lbmRcblxuYW5kIHRva2VuTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBjb250YWlucyA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGFkZCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdG9nZ2xlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZpZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuYW5kIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb20uZWxlbWVudFxuXG4gIGluaGVyaXQgbm9kZVNlbGVjdG9yXG5cbiAgbWV0aG9kIGlkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGFzc05hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsYXNzTGlzdCA6IHRva2VuTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2VzdCA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzdHlsZSA6IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBwcm9wXG5cbiAgbWV0aG9kIGlubmVySFRNTCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0ZXJIVE1MIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0Q29udGVudCA6IGpzX3N0cmluZyB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGlubmVyVGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xpZW50TGVmdCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFRvcCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50SGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0TGVmdCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFRvcCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFBhcmVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcm9sbExlZnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxUb3AgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxXaWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbEhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGdldENsaWVudFJlY3RzIDogY2xpZW50UmVjdExpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEJvdW5kaW5nQ2xpZW50UmVjdCA6IGNsaWVudFJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbEludG9WaWV3IDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGljayA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb2N1cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibHVyIDogdW5pdCBtZXRoXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbmFuZCBjbGllbnRSZWN0ID0gb2JqZWN0XG4gIG1ldGhvZCB0b3AgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJpZ2h0IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3R0b20gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlZnQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3Qgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3Qgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2xpZW50UmVjdExpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gY2xpZW50UmVjdCB0IG9wdCBtZXRoXG5lbmRcblxubGV0IG5vX2hhbmRsZXIgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9IERvbS5ub19oYW5kbGVyXG5cbmxldCBoYW5kbGVyID0gRG9tLmhhbmRsZXJcblxubGV0IGZ1bGxfaGFuZGxlciA9IERvbS5mdWxsX2hhbmRsZXJcblxubGV0IGludm9rZV9oYW5kbGVyID0gRG9tLmludm9rZV9oYW5kbGVyXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlICdhIHR5cCA9ICdhIERvbS5FdmVudC50eXBcblxuICBsZXQgY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJjYW5jZWxcIlxuXG4gIGxldCBjbGljayA9IERvbS5FdmVudC5tYWtlIFwiY2xpY2tcIlxuXG4gIGxldCBjbG9zZSA9IERvbS5FdmVudC5tYWtlIFwiY2xvc2VcIlxuXG4gIGxldCBjb3B5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjb3B5XCJcblxuICBsZXQgY3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJjdXRcIlxuXG4gIGxldCBwYXN0ZSA9IERvbS5FdmVudC5tYWtlIFwicGFzdGVcIlxuXG4gIGxldCBkYmxjbGljayA9IERvbS5FdmVudC5tYWtlIFwiZGJsY2xpY2tcIlxuXG4gIGxldCBtb3VzZWRvd24gPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlZG93blwiXG5cbiAgbGV0IG1vdXNldXAgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNldXBcIlxuXG4gIGxldCBtb3VzZW92ZXIgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3ZlclwiXG5cbiAgbGV0IG1vdXNlbW92ZSA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vtb3ZlXCJcblxuICBsZXQgbW91c2VvdXQgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3V0XCJcblxuICBsZXQga2V5cHJlc3MgPSBEb20uRXZlbnQubWFrZSBcImtleXByZXNzXCJcblxuICBsZXQga2V5ZG93biA9IERvbS5FdmVudC5tYWtlIFwia2V5ZG93blwiXG5cbiAgbGV0IGtleXVwID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXl1cFwiXG5cbiAgbGV0IG1vdXNld2hlZWwgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNld2hlZWxcIlxuXG4gIGxldCB3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwid2hlZWxcIlxuXG4gIGxldCBfRE9NTW91c2VTY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcIkRPTU1vdXNlU2Nyb2xsXCJcblxuICBsZXQgdG91Y2hzdGFydCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hzdGFydFwiXG5cbiAgbGV0IHRvdWNobW92ZSA9IERvbS5FdmVudC5tYWtlIFwidG91Y2htb3ZlXCJcblxuICBsZXQgdG91Y2hlbmQgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoZW5kXCJcblxuICBsZXQgdG91Y2hjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoY2FuY2VsXCJcblxuICBsZXQgZHJhZ3N0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnc3RhcnRcIlxuXG4gIGxldCBkcmFnZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW5kXCJcblxuICBsZXQgZHJhZ2VudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW50ZXJcIlxuXG4gIGxldCBkcmFnb3ZlciA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ292ZXJcIlxuXG4gIGxldCBkcmFnbGVhdmUgPSBEb20uRXZlbnQubWFrZSBcImRyYWdsZWF2ZVwiXG5cbiAgbGV0IGRyYWcgPSBEb20uRXZlbnQubWFrZSBcImRyYWdcIlxuXG4gIGxldCBkcm9wID0gRG9tLkV2ZW50Lm1ha2UgXCJkcm9wXCJcblxuICBsZXQgaGFzaGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiaGFzaGNoYW5nZVwiXG5cbiAgbGV0IGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiY2hhbmdlXCJcblxuICBsZXQgaW5wdXQgPSBEb20uRXZlbnQubWFrZSBcImlucHV0XCJcblxuICBsZXQgdGltZXVwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwidGltZXVwZGF0ZVwiXG5cbiAgbGV0IHN1Ym1pdCA9IERvbS5FdmVudC5tYWtlIFwic3VibWl0XCJcblxuICBsZXQgc2Nyb2xsID0gRG9tLkV2ZW50Lm1ha2UgXCJzY3JvbGxcIlxuXG4gIGxldCBmb2N1cyA9IERvbS5FdmVudC5tYWtlIFwiZm9jdXNcIlxuXG4gIGxldCBibHVyID0gRG9tLkV2ZW50Lm1ha2UgXCJibHVyXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHVubG9hZCA9IERvbS5FdmVudC5tYWtlIFwidW5sb2FkXCJcblxuICBsZXQgYmVmb3JldW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJiZWZvcmV1bmxvYWRcIlxuXG4gIGxldCByZXNpemUgPSBEb20uRXZlbnQubWFrZSBcInJlc2l6ZVwiXG5cbiAgbGV0IG9yaWVudGF0aW9uY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJvcmllbnRhdGlvbmNoYW5nZVwiXG5cbiAgbGV0IHBvcHN0YXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb3BzdGF0ZVwiXG5cbiAgbGV0IGVycm9yID0gRG9tLkV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGFib3J0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IHNlbGVjdCA9IERvbS5FdmVudC5tYWtlIFwic2VsZWN0XCJcblxuICBsZXQgb25saW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvbmxpbmVcIlxuXG4gIGxldCBvZmZsaW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvZmZsaW5lXCJcblxuICBsZXQgY2hlY2tpbmcgPSBEb20uRXZlbnQubWFrZSBcImNoZWNraW5nXCJcblxuICBsZXQgbm91cGRhdGUgPSBEb20uRXZlbnQubWFrZSBcIm5vdXBkYXRlXCJcblxuICBsZXQgZG93bmxvYWRpbmcgPSBEb20uRXZlbnQubWFrZSBcImRvd25sb2FkaW5nXCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgdXBkYXRlcmVhZHkgPSBEb20uRXZlbnQubWFrZSBcInVwZGF0ZXJlYWR5XCJcblxuICBsZXQgY2FjaGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJjYWNoZWRcIlxuXG4gIGxldCBvYnNvbGV0ZSA9IERvbS5FdmVudC5tYWtlIFwib2Jzb2xldGVcIlxuXG4gIGxldCBkb21Db250ZW50TG9hZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJET01Db250ZW50TG9hZGVkXCJcblxuICBsZXQgYW5pbWF0aW9uc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbnN0YXJ0XCJcblxuICBsZXQgYW5pbWF0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25lbmRcIlxuXG4gIGxldCBhbmltYXRpb25pdGVyYXRpb24gPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbml0ZXJhdGlvblwiXG5cbiAgbGV0IGFuaW1hdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uY2FuY2VsXCJcblxuICBsZXQgdHJhbnNpdGlvbnJ1biA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnJ1blwiXG5cbiAgbGV0IHRyYW5zaXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnN0YXJ0XCJcblxuICBsZXQgdHJhbnNpdGlvbmVuZCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmVuZFwiXG5cbiAgbGV0IHRyYW5zaXRpb25jYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25jYW5jZWxcIlxuXG4gIGxldCBjYW5wbGF5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjYW5wbGF5XCJcblxuICBsZXQgY2FucGxheXRocm91Z2ggPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXl0aHJvdWdoXCJcblxuICBsZXQgZHVyYXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcImR1cmF0aW9uY2hhbmdlXCJcblxuICBsZXQgZW1wdGllZCA9IERvbS5FdmVudC5tYWtlIFwiZW1wdGllZFwiXG5cbiAgbGV0IGVuZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbmRlZFwiXG5cbiAgbGV0IGdvdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiXG5cbiAgbGV0IGxvYWRlZGRhdGEgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlZGRhdGFcIlxuXG4gIGxldCBsb2FkZWRtZXRhZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkbWV0YWRhdGFcIlxuXG4gIGxldCBsb2Fkc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IGxvc3Rwb2ludGVyY2FwdHVyZSA9IERvbS5FdmVudC5tYWtlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbWVzc2FnZSA9IERvbS5FdmVudC5tYWtlIFwibWVzc2FnZVwiXG5cbiAgbGV0IHBhdXNlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXVzZVwiXG5cbiAgbGV0IHBsYXkgPSBEb20uRXZlbnQubWFrZSBcInBsYXlcIlxuXG4gIGxldCBwbGF5aW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJwbGF5aW5nXCJcblxuICBsZXQgcG9pbnRlcmVudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyZW50ZXJcIlxuXG4gIGxldCBwb2ludGVyY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyY2FuY2VsXCJcblxuICBsZXQgcG9pbnRlcmRvd24gPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJkb3duXCJcblxuICBsZXQgcG9pbnRlcmxlYXZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybGVhdmVcIlxuXG4gIGxldCBwb2ludGVybW92ZSA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm1vdmVcIlxuXG4gIGxldCBwb2ludGVyb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyb3V0XCJcblxuICBsZXQgcG9pbnRlcm92ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdmVyXCJcblxuICBsZXQgcG9pbnRlcnVwID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVydXBcIlxuXG4gIGxldCByYXRlY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJyYXRlY2hhbmdlXCJcblxuICBsZXQgc2Vla2VkID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVrZWRcIlxuXG4gIGxldCBzZWVraW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVraW5nXCJcblxuICBsZXQgc3RhbGxlZCA9IERvbS5FdmVudC5tYWtlIFwic3RhbGxlZFwiXG5cbiAgbGV0IHN1c3BlbmQgPSBEb20uRXZlbnQubWFrZSBcInN1c3BlbmRcIlxuXG4gIGxldCB2b2x1bWVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInZvbHVtZWNoYW5nZVwiXG5cbiAgbGV0IHdhaXRpbmcgPSBEb20uRXZlbnQubWFrZSBcIndhaXRpbmdcIlxuXG4gIGxldCBtYWtlID0gRG9tLkV2ZW50Lm1ha2VcbmVuZFxuXG50eXBlIGV2ZW50X2xpc3RlbmVyX2lkID0gRG9tLmV2ZW50X2xpc3RlbmVyX2lkXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyA9IERvbS5hZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcblxubGV0IHJlbW92ZUV2ZW50TGlzdGVuZXIgPSBEb20ucmVtb3ZlRXZlbnRMaXN0ZW5lclxuXG5sZXQgY3JlYXRlQ3VzdG9tRXZlbnQgPSBEb20uY3JlYXRlQ3VzdG9tRXZlbnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIGNvbGxlY3Rpb24gPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBuYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBodG1sRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBoZWFkRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgcHJvZmlsZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxpbmtFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyb3Nzb3JpZ2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmV2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGl0bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbWV0YUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNvbnRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGh0dHBFcXVpdiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2NoZW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYmFzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHN0eWxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBib2R5RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBmb3JtRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZWxlbWVudHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdENoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZW5jdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX21ldGhvZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdWJtaXQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVzZXQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25zdWJtaXQgOiAoJ3NlbGYgdCwgc3VibWl0RXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdEdyb3VwRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBsYWJlbCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBvcHRHcm91cEVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVmYXVsdFNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2VsZWN0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VsZWN0ZWRJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcHRpb25zIDogb3B0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2l6ZSA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgYWRkIDogI29wdEdyb3VwRWxlbWVudCB0IC0+ICNvcHRHcm91cEVsZW1lbnQgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jaGFuZ2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmlucHV0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGlucHV0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmF1bHRDaGVja2VkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2NlcHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hlY2tlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWF4TGVuZ3RoIDogaW50IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvblN0YXJ0IDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0ZXh0QXJlYUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGVmYXVsdFZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbHMgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWRPbmx5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYWNlaG9sZGVyIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBidXR0b25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBsYWJlbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHRtbEZvciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZpZWxkU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxlZ2VuZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHVMaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBvTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgZExpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGxpRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkaWFsb2dFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZV9yZXR1cm5WYWx1ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvcGVuXyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHJldHVyblZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzaG93IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNob3dNb2RhbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbmNhbmNlbCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2xvc2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZGl2RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBwYXJhZ3JhcGhFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhlYWRpbmdFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHF1b3RlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2l0ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHByZUVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgYnJFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhyRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBtb2RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjaXRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkYXRlVGltZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFuY2hvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29vcmRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkb3dubG9hZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZmxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmV2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzaGFwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW1hZ2VFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGlzTWFwIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBuYXR1cmFsV2lkdGggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmF0dXJhbEhlaWdodCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb21wbGV0ZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmFib3J0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9iamVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFyY2hpdmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvZGVCYXNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2RlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVjbGFyZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3RhbmRieSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdXNlTWFwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGFyYW1FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFyZWFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29vcmRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBub0hyZWYgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzaGFwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtYXBFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhcmVhcyA6IGFyZWFFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzY3JpcHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWZlciA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFzeW5jIDogYm9vbCB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGVtYmVkRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ2VsbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNlbGxJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFiYnIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBheGlzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbFNwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWFkZXJzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dTcGFuIDogaW50IHByb3BcblxuICBtZXRob2Qgc2NvcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlUm93RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgcm93SW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWN0aW9uUm93SW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjZWxscyA6IHRhYmxlQ2VsbEVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRDZWxsIDogaW50IC0+IHRhYmxlQ2VsbEVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNlbGwgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNvbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVTZWN0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogdGFibGVSb3dFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGluc2VydFJvdyA6IGludCAtPiB0YWJsZVJvd0VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJvdyA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ2FwdGlvbkVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgdGFibGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjYXB0aW9uIDogdGFibGVDYXB0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgdEhlYWQgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCB0Rm9vdCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiB0YWJsZVJvd0VsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdEJvZGllcyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2VsbFBhZGRpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNlbGxTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmcmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcnVsZXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN1bW1hcnkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVUSGVhZCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRIZWFkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRGb290IDogdGFibGVTZWN0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVEZvb3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQ2FwdGlvbiA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNhcHRpb24gOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0Um93IDogaW50IC0+IHRhYmxlUm93RWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUm93IDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGltZVJhbmdlcyA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBlbmRfIDogaW50IC0+IG51bWJlcl90IG1ldGhcbmVuZFxuXG50eXBlIG5ldHdvcmtTdGF0ZSA9XG4gIHwgTkVUV09SS19FTVBUWVxuICB8IE5FVFdPUktfSURMRVxuICB8IE5FVFdPUktfTE9BRElOR1xuICB8IE5FVFdPUktfTk9fU09VUkNFXG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgSEFWRV9OT1RISU5HXG4gIHwgSEFWRV9NRVRBREFUQVxuICB8IEhBVkVfQ1VSUkVOVF9EQVRBXG4gIHwgSEFWRV9GVVRVUkVfREFUQVxuICB8IEhBVkVfRU5PVUdIX0RBVEFcblxuKCogaHR0cDovL3d3dy53M3NjaG9vbHMuY29tL3RhZ3MvcmVmX2F2X2RvbS5hc3AgKilcbigqIG9ubHkgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IGFsbCBicm93c2VyLiAoSUU5KykgKilcbmNsYXNzIHR5cGUgbWVkaWFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjYW5QbGF5VHlwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgbG9hZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwbGF5IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBhdXNlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGF1dG9wbGF5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgYnVmZmVyZWQgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250cm9scyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRTcmMgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUaW1lIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkdXJhdGlvbiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb29wIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWVkaWFncm91cCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbXV0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXR3b3JrU3RhdGVfaW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV0d29ya1N0YXRlIDogbmV0d29ya1N0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGF1c2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxheWJhY2tSYXRlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBwbGF5ZWQgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVsb2FkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlX2ludCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Vla2FibGUgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWVraW5nIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2b2x1bWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIG9uY2FucGxheSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2FucGxheXRocm91Z2ggOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmR1cmF0aW9uY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lbXB0aWVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lbmRlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVkZGF0YSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVkbWV0YWRhdGEgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRzdGFydCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGF1c2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBsYXkgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBsYXlpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnJhdGVjaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlZWtlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Vla2luZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc3RhbGxlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc3VzcGVuZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udm9sdW1lY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253YWl0aW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGF1ZGlvRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG1lZGlhRWxlbWVudFxuZW5kXG5cbmNsYXNzIHR5cGUgdmlkZW9FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbWVkaWFFbGVtZW50XG5lbmRcblxudHlwZSBjb250ZXh0ID0ganNfc3RyaW5nIHRcblxubGV0IF8yZF8gPSBKcy5zdHJpbmcgXCIyZFwiXG5cbnR5cGUgY2FudmFzUGF0dGVyblxuXG5jbGFzcyB0eXBlIGNhbnZhc0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgdG9EYXRhVVJMIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGFVUkxfdHlwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRhVVJMX3R5cGVfY29tcHJlc3Npb24gOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbnRleHQgOiBqc19zdHJpbmcgdCAtPiBjYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgdCBtZXRoXG5lbmRcblxuYW5kIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCA9IG9iamVjdFxuICBtZXRob2QgY2FudmFzIDogY2FudmFzRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2F2ZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXN0b3JlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhbnNmb3JtIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VHJhbnNmb3JtIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2xvYmFsQWxwaGEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGUgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZV9ncmFkaWVudCA6IGNhbnZhc0dyYWRpZW50IHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGVfcGF0dGVybiA6IGNhbnZhc1BhdHRlcm4gdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGUgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGVfZ3JhZGllbnQgOiBjYW52YXNHcmFkaWVudCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZV9wYXR0ZXJuIDogY2FudmFzUGF0dGVybiB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZUxpbmVhckdyYWRpZW50IDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBjYW52YXNHcmFkaWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmFkaWFsR3JhZGllbnQgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGNhbnZhc0dyYWRpZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuIDogaW1hZ2VFbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybl9mcm9tQ2FudmFzIDogY2FudmFzRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm5fZnJvbVZpZGVvIDogdmlkZW9FbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgbGluZVdpZHRoIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBsaW5lQ2FwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaW5lSm9pbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWl0ZXJMaW1pdCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93T2Zmc2V0WCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93T2Zmc2V0WSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93Qmx1ciA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsZWFyUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJlZ2luUGF0aCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZVBhdGggOiB1bml0IG1ldGhcblxuICBtZXRob2QgbW92ZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBxdWFkcmF0aWNDdXJ2ZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJlemllckN1cnZlVG8gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcmNUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFyYyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbGxpcHNlIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGlwIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGlzUG9pbnRJblBhdGggOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3Rm9jdXNSaW5nIDogI2VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZm9udCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QmFzZWxpbmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGxUZXh0IDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGxUZXh0X3dpdGhXaWR0aCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VUZXh0IDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVRleHRfd2l0aFdpZHRoIDpcbiAgICBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbWVhc3VyZVRleHQgOiBqc19zdHJpbmcgdCAtPiB0ZXh0TWV0cmljcyB0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlIDogaW1hZ2VFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV93aXRoU2l6ZSA6XG4gICAgaW1hZ2VFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsIDpcbiAgICAgICBpbWFnZUVsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21DYW52YXMgOiBjYW52YXNFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tQ2FudmFzV2l0aFNpemUgOlxuICAgIGNhbnZhc0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGxGcm9tQ2FudmFzIDpcbiAgICAgICBjYW52YXNFbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tVmlkZW9XaXRoVmlkZW8gOlxuICAgIHZpZGVvRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbVZpZGVvV2l0aFNpemUgOlxuICAgIHZpZGVvRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbEZyb21WaWRlbyA6XG4gICAgICAgdmlkZW9FbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUltYWdlRGF0YSA6IGludCAtPiBpbnQgLT4gaW1hZ2VEYXRhIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbWFnZURhdGEgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBpbWFnZURhdGEgdCBtZXRoXG5cbiAgbWV0aG9kIHB1dEltYWdlRGF0YSA6IGltYWdlRGF0YSB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBjYW52YXNHcmFkaWVudCA9IG9iamVjdFxuICBtZXRob2QgYWRkQ29sb3JTdG9wIDogbnVtYmVyX3QgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIHRleHRNZXRyaWNzID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgaW1hZ2VEYXRhID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGEgOiBjYW52YXNQaXhlbEFycmF5IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjYW52YXNQaXhlbEFycmF5ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmV4dGVybmFsIHBpeGVsX2dldCA6IGNhbnZhc1BpeGVsQXJyYXkgdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX2pzX2dldFwiXG5cbmV4dGVybmFsIHBpeGVsX3NldCA6IGNhbnZhc1BpeGVsQXJyYXkgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuY2xhc3MgdHlwZSByYW5nZSA9IG9iamVjdFxuICBtZXRob2QgY29sbGFwc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydENvbnRhaW5lciA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRDb250YWluZXIgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0U3RhcnQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kIDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFN0YXJ0QmVmb3JlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kQmVmb3JlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U3RhcnRBZnRlciA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZEFmdGVyIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0Tm9kZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdE5vZGVDb250ZW50cyA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZUNvbnRlbnRzIDogRG9tLmRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGV4dHJhY3RDb250ZW50cyA6IERvbS5kb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDb250ZW50cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnROb2RlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Vycm91bmRDb250ZW50cyA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lUmFuZ2UgOiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuKCoqIEluZm9ybWF0aW9uIG9uIGN1cnJlbnQgc2VsZWN0aW9uICopXG5jbGFzcyB0eXBlIHNlbGVjdGlvbiA9IG9iamVjdFxuICBtZXRob2QgYW5jaG9yTm9kZSA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmNob3JPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb2N1c05vZGUgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9jdXNPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc0NvbGxhcHNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJhbmdlQ291bnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRSYW5nZUF0IDogaW50IC0+IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZSA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXh0ZW5kIDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1vZGlmeSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZVRvU3RhcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2VUb0VuZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3RBbGxDaGlsZHJlbiA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFkZFJhbmdlIDogcmFuZ2UgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlUmFuZ2UgOiByYW5nZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBbGxSYW5nZXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRnJvbURvY3VtZW50IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnRhaW5zTm9kZSA6IERvbS5ub2RlIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmRvY3VtZW50XG5cbiAgaW5oZXJpdCBub2RlU2VsZWN0b3JcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWZlcnJlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZG9tYWluIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWFkIDogaGVhZEVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIGJvZHkgOiBib2R5RWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgZG9jdW1lbnRFbGVtZW50IDogaHRtbEVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGltYWdlcyA6IGltYWdlRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBsZXRzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW5rcyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9ybXMgOiBmb3JtRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmNob3JzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb29raWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlc2lnbk1vZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9wZW5fIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdyaXRlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGV4ZWNDb21tYW5kIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmFuZ2UgOiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5TmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBhY3RpdmVFbGVtZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhpZGRlbiA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZnVsbHNjcmVlbmNoYW5nZSA6IChkb2N1bWVudCB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UgOiAoZG9jdW1lbnQgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxudHlwZSBpbnRlcnZhbF9pZFxuXG50eXBlIHRpbWVvdXRfaWRcblxudHlwZSBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZFxuXG5jbGFzcyB0eXBlIGxvY2F0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwcm90b2NvbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaG9zdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaG9zdG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9yaWdpbiA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvcnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhdGhuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWFyY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhhc2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFzc2lnbiA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbG9hZCA6IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBsb2NhdGlvbl9vcmlnaW4gKGxvYyA6IGxvY2F0aW9uIHQpID1cbiAgT3B0ZGVmLmNhc2VcbiAgICBsb2MjIy5vcmlnaW5cbiAgICAoZnVuICgpIC0+XG4gICAgICBsZXQgcHJvdG9jb2wgPSBsb2MjIy5wcm90b2NvbCBpblxuICAgICAgbGV0IGhvc3RuYW1lID0gbG9jIyMuaG9zdG5hbWUgaW5cbiAgICAgIGxldCBwb3J0ID0gbG9jIyMucG9ydCBpblxuICAgICAgaWYgcHJvdG9jb2wjIy5sZW5ndGggPSAwICYmIGhvc3RuYW1lIyMubGVuZ3RoID0gMFxuICAgICAgdGhlbiBKcy5zdHJpbmcgXCJcIlxuICAgICAgZWxzZVxuICAgICAgICBsZXQgb3JpZ2luID0gcHJvdG9jb2wjI2NvbmNhdF8yIChKcy5zdHJpbmcgXCIvL1wiKSBob3N0bmFtZSBpblxuICAgICAgICBpZiBwb3J0IyMubGVuZ3RoID4gMCB0aGVuIG9yaWdpbiMjY29uY2F0XzIgKEpzLnN0cmluZyBcIjpcIikgbG9jIyMucG9ydCBlbHNlIG9yaWdpbilcbiAgICAoZnVuIG8gLT4gbylcblxuY2xhc3MgdHlwZSBoaXN0b3J5ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGF0ZSA6IEpzLlVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnbyA6IGludCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJhY2sgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9yd2FyZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoU3RhdGUgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlU3RhdGUgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdW5kb01hbmFnZXIgPSBvYmplY3QgZW5kXG5cbmNsYXNzIHR5cGUgbmF2aWdhdG9yID0gb2JqZWN0XG4gIG1ldGhvZCBhcHBDb2RlTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwVmVyc2lvbiA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29va2llRW5hYmxlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uTGluZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYXRmb3JtIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2ZW5kb3IgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZXJBZ2VudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFuZ3VhZ2UgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VyTGFuZ3VhZ2UgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXhUb3VjaFBvaW50cyA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzY3JlZW4gPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXZhaWxXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF2YWlsSGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFwcGxpY2F0aW9uQ2FjaGUgPSBvYmplY3RcbiAgbWV0aG9kIHN0YXR1cyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVwZGF0ZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzd2FwQ2FjaGUgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25jaGVja2luZyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25lcnJvciA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ub3VwZGF0ZSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25kb3dubG9hZGluZyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25wcm9ncmVzcyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb251cGRhdGVyZWFkeSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jYWNoZWQgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub2Jzb2xldGUgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbmNsYXNzIHR5cGUgX1VSTCA9IG9iamVjdFxuICBtZXRob2QgY3JlYXRlT2JqZWN0VVJMIDogI0ZpbGUuYmxvYiB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmV2b2tlT2JqZWN0VVJMIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB3aW5kb3cgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCBkb2N1bWVudCA6IGRvY3VtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBsaWNhdGlvbkNhY2hlIDogYXBwbGljYXRpb25DYWNoZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGlzdG9yeSA6IGhpc3RvcnkgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVuZG9NYW5hZ2VyIDogdW5kb01hbmFnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hdmlnYXRvciA6IG5hdmlnYXRvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0U2VsZWN0aW9uIDogc2VsZWN0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdG9wIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsdXIgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsQnkgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXNzaW9uU3RvcmFnZSA6IHN0b3JhZ2UgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2NhbFN0b3JhZ2UgOiBzdG9yYWdlIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG9wIDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnQgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZyYW1lRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcGVuXyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB3aW5kb3cgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBhbGVydCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb25maXJtIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgcHJvbXB0IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcHJpbnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50ZXJ2YWwgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBudW1iZXJfdCAtPiBpbnRlcnZhbF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFySW50ZXJ2YWwgOiBpbnRlcnZhbF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VGltZW91dCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IG51bWJlcl90IC0+IHRpbWVvdXRfaWQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhclRpbWVvdXQgOiB0aW1lb3V0X2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOlxuICAgIChudW1iZXJfdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNhbmNlbEFuaW1hdGlvbkZyYW1lIDogYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcmVlbiA6IHNjcmVlbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5uZXJXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlubmVySGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3V0ZXJXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG91dGVySGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRTdHlsZSA6ICNlbGVtZW50IHQgLT4gY3NzU3R5bGVEZWNsYXJhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRTdHlsZV9wc2V1ZG9FbHQgOlxuICAgICNlbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY3NzU3R5bGVEZWNsYXJhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgYXRvYiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYnRvYSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgb25sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9udW5sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmVmb3JldW5sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICh3aW5kb3cgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAod2luZG93IHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnJlc2l6ZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9yaWVudGF0aW9uY2hhbmdlIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucG9wc3RhdGUgOiAod2luZG93IHQsIHBvcFN0YXRlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmhhc2hjaGFuZ2UgOiAod2luZG93IHQsIGhhc2hDaGFuZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub25saW5lIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm9mZmxpbmUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBfVVJMIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZXZpY2VQaXhlbFJhdGlvIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCB3aW5kb3cgOiB3aW5kb3cgdCA9IEpzLlVuc2FmZS5nbG9iYWxcblxuKCogVGhlIHRvcGxldmVsIG9iamVjdCAqKVxuXG5sZXQgZG9jdW1lbnQgPSB3aW5kb3cjIy5kb2N1bWVudFxuXG5sZXQgZ2V0RWxlbWVudEJ5SWQgaWQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgKGZ1biBwbm9kZSAtPiBwbm9kZSlcblxubGV0IGdldEVsZW1lbnRCeUlkX2V4biBpZCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiBcImdldEVsZW1lbnRCeUlkX2V4bjogJVMgbm90IGZvdW5kXCIgaWQpKVxuICAgIChmdW4gcG5vZGUgLT4gcG5vZGUpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9vcHQgaWQgPSBKcy5PcHQudG9fb3B0aW9uIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9jb2VyY2UgaWQgY29lcmNlID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAoZnVuIGUgLT4gSnMuT3B0LnRvX29wdGlvbiAoY29lcmNlIGUpKVxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBmcmFtZVNldEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNvbHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBmcmFtZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZyYW1lQm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb25nRGVzYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgbm9SZXNpemUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudERvY3VtZW50IDogZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaUZyYW1lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZnJhbWVCb3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvbmdEZXNjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudERvY3VtZW50IDogZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50V2luZG93IDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKioqKVxuXG4oKlhYWCBTaG91bGQgcHJvdmlkZSBjcmVhdGlvbiBmdW5jdGlvbnMgYSBsYSBsYWJsZ3RrLi4uICopXG5cbmxldCBvcHRfaXRlciB4IGYgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB2IC0+IGYgdlxuXG5sZXQgY3JlYXRlRWxlbWVudCAoZG9jIDogZG9jdW1lbnQgdCkgbmFtZSA9IGRvYyMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIG5hbWUpXG5cbmxldCB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBuYW1lID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgbmFtZSlcblxubGV0IGNyZWF0ZUVsZW1lbnRTeW50YXggPSByZWYgYFVua25vd25cblxubGV0IHJlYyB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBlbHQgPVxuICBpZiBQb2x5LihfdHlwZSA9IE5vbmUpICYmIFBvbHkuKG5hbWUgPSBOb25lKVxuICB0aGVuIEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIGVsdClcbiAgZWxzZVxuICAgIG1hdGNoICFjcmVhdGVFbGVtZW50U3ludGF4IHdpdGhcbiAgICB8IGBTdGFuZGFyZCAtPlxuICAgICAgICBsZXQgcmVzID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgZWx0KSBpblxuICAgICAgICBvcHRfaXRlciBfdHlwZSAoZnVuIHQgLT4gcmVzIyMuX3R5cGUgOj0gdCk7XG4gICAgICAgIG9wdF9pdGVyIG5hbWUgKGZ1biBuIC0+IHJlcyMjLm5hbWUgOj0gbik7XG4gICAgICAgIHJlc1xuICAgIHwgYEV4dGVuZGVkIC0+XG4gICAgICAgIGxldCBhID0gbmV3JWpzIEpzLmFycmF5X2VtcHR5IGluXG4gICAgICAgIGlnbm9yZSAoYSMjcHVzaF8yIChKcy5zdHJpbmcgXCI8XCIpIChKcy5zdHJpbmcgZWx0KSk7XG4gICAgICAgIG9wdF9pdGVyIF90eXBlIChmdW4gdCAtPlxuICAgICAgICAgICAgaWdub3JlIChhIyNwdXNoXzMgKEpzLnN0cmluZyBcIiB0eXBlPVxcXCJcIikgKGh0bWxfZXNjYXBlIHQpIChKcy5zdHJpbmcgXCJcXFwiXCIpKSk7XG4gICAgICAgIG9wdF9pdGVyIG5hbWUgKGZ1biBuIC0+XG4gICAgICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMyAoSnMuc3RyaW5nIFwiIG5hbWU9XFxcIlwiKSAoaHRtbF9lc2NhcGUgbikgKEpzLnN0cmluZyBcIlxcXCJcIikpKTtcbiAgICAgICAgaWdub3JlIChhIyNwdXNoIChKcy5zdHJpbmcgXCI+XCIpKTtcbiAgICAgICAgSnMuVW5zYWZlLmNvZXJjZSAoZG9jIyNjcmVhdGVFbGVtZW50IChhIyNqb2luIChKcy5zdHJpbmcgXCJcIikpKVxuICAgIHwgYFVua25vd24gLT5cbiAgICAgICAgY3JlYXRlRWxlbWVudFN5bnRheCA6PVxuICAgICAgICAgIGlmIHRyeVxuICAgICAgICAgICAgICAgbGV0IGVsIDogaW5wdXRFbGVtZW50IEpzLnQgPVxuICAgICAgICAgICAgICAgICBKcy5VbnNhZmUuY29lcmNlXG4gICAgICAgICAgICAgICAgICAgKGRvY3VtZW50IyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgXCI8aW5wdXQgbmFtZT1cXFwieFxcXCI+XCIpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIEpzLmVxdWFscyBlbCMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgXCJpbnB1dFwiKVxuICAgICAgICAgICAgICAgJiYgSnMuZXF1YWxzIGVsIyMubmFtZSAoSnMuc3RyaW5nIFwieFwiKVxuICAgICAgICAgICAgIHdpdGggXyAtPiBmYWxzZVxuICAgICAgICAgIHRoZW4gYEV4dGVuZGVkXG4gICAgICAgICAgZWxzZSBgU3RhbmRhcmQ7XG4gICAgICAgIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIGVsdFxuXG5sZXQgY3JlYXRlSHRtbCBkb2MgOiBodG1sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJodG1sXCJcblxubGV0IGNyZWF0ZUhlYWQgZG9jIDogaGVhZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaGVhZFwiXG5cbmxldCBjcmVhdGVMaW5rIGRvYyA6IGxpbmtFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmtcIlxuXG5sZXQgY3JlYXRlVGl0bGUgZG9jIDogdGl0bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRpdGxlXCJcblxubGV0IGNyZWF0ZU1ldGEgZG9jIDogbWV0YUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWV0YVwiXG5cbmxldCBjcmVhdGVCYXNlIGRvYyA6IGJhc2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJhc2VcIlxuXG5sZXQgY3JlYXRlU3R5bGUgZG9jIDogc3R5bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0eWxlXCJcblxubGV0IGNyZWF0ZUJvZHkgZG9jIDogYm9keUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYm9keVwiXG5cbmxldCBjcmVhdGVGb3JtIGRvYyA6IGZvcm1FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvcm1cIlxuXG5sZXQgY3JlYXRlT3B0Z3JvdXAgZG9jIDogb3B0R3JvdXBFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9wdGdyb3VwXCJcblxubGV0IGNyZWF0ZU9wdGlvbiBkb2MgOiBvcHRpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9wdGlvblwiXG5cbmxldCBjcmVhdGVTZWxlY3QgP190eXBlID9uYW1lIGRvYyA6IHNlbGVjdEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwic2VsZWN0XCJcblxubGV0IGNyZWF0ZUlucHV0ID9fdHlwZSA/bmFtZSBkb2MgOiBpbnB1dEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwiaW5wdXRcIlxuXG5sZXQgY3JlYXRlVGV4dGFyZWEgP190eXBlID9uYW1lIGRvYyA6IHRleHRBcmVhRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJ0ZXh0YXJlYVwiXG5cbmxldCBjcmVhdGVCdXR0b24gP190eXBlID9uYW1lIGRvYyA6IGJ1dHRvbkVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwiYnV0dG9uXCJcblxubGV0IGNyZWF0ZUxhYmVsIGRvYyA6IGxhYmVsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsYWJlbFwiXG5cbmxldCBjcmVhdGVGaWVsZHNldCBkb2MgOiBmaWVsZFNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZmllbGRzZXRcIlxuXG5sZXQgY3JlYXRlTGVnZW5kIGRvYyA6IGxlZ2VuZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGVnZW5kXCJcblxubGV0IGNyZWF0ZVVsIGRvYyA6IHVMaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ1bFwiXG5cbmxldCBjcmVhdGVPbCBkb2MgOiBvTGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib2xcIlxuXG5sZXQgY3JlYXRlRGwgZG9jIDogZExpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRsXCJcblxubGV0IGNyZWF0ZUxpIGRvYyA6IGxpRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaVwiXG5cbmxldCBjcmVhdGVEaWFsb2cgZG9jIDogZGlhbG9nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkaWFsb2dcIlxuXG5sZXQgY3JlYXRlRGl2IGRvYyA6IGRpdkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGl2XCJcblxubGV0IGNyZWF0ZUVtYmVkIGRvYyA6IGVtYmVkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJlbWJlZFwiXG5cbmxldCBjcmVhdGVQIGRvYyA6IHBhcmFncmFwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicFwiXG5cbmxldCBjcmVhdGVIMSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMVwiXG5cbmxldCBjcmVhdGVIMiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMlwiXG5cbmxldCBjcmVhdGVIMyBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoM1wiXG5cbmxldCBjcmVhdGVINCBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNFwiXG5cbmxldCBjcmVhdGVINSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNVwiXG5cbmxldCBjcmVhdGVINiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNlwiXG5cbmxldCBjcmVhdGVRIGRvYyA6IHF1b3RlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJxXCJcblxubGV0IGNyZWF0ZUJsb2NrcXVvdGUgZG9jIDogcXVvdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJsb2NrcXVvdGVcIlxuXG5sZXQgY3JlYXRlUHJlIGRvYyA6IHByZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicHJlXCJcblxubGV0IGNyZWF0ZUJyIGRvYyA6IGJyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJiclwiXG5cbmxldCBjcmVhdGVIciBkb2MgOiBockVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaHJcIlxuXG5sZXQgY3JlYXRlSW5zIGRvYyA6IG1vZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW5zXCJcblxubGV0IGNyZWF0ZURlbCBkb2MgOiBtb2RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlbFwiXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFuY2hvckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYVwiXG5cbmxldCBjcmVhdGVJbWcgZG9jIDogaW1hZ2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImltZ1wiXG5cbmxldCBjcmVhdGVPYmplY3QgZG9jIDogb2JqZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvYmplY3RcIlxuXG5sZXQgY3JlYXRlUGFyYW0gZG9jIDogcGFyYW1FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhcmFtXCJcblxubGV0IGNyZWF0ZU1hcCBkb2MgOiBtYXBFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1hcFwiXG5cbmxldCBjcmVhdGVBcmVhIGRvYyA6IGFyZWFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFyZWFcIlxuXG5sZXQgY3JlYXRlU2NyaXB0IGRvYyA6IHNjcmlwdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2NyaXB0XCJcblxubGV0IGNyZWF0ZVRhYmxlIGRvYyA6IHRhYmxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0YWJsZVwiXG5cbmxldCBjcmVhdGVDYXB0aW9uIGRvYyA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2FwdGlvblwiXG5cbmxldCBjcmVhdGVDb2wgZG9jIDogdGFibGVDb2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbFwiXG5cbmxldCBjcmVhdGVDb2xncm91cCBkb2MgOiB0YWJsZUNvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sZ3JvdXBcIlxuXG5sZXQgY3JlYXRlVGhlYWQgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aGVhZFwiXG5cbmxldCBjcmVhdGVUZm9vdCBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRmb290XCJcblxubGV0IGNyZWF0ZVRib2R5IGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGJvZHlcIlxuXG5sZXQgY3JlYXRlVHIgZG9jIDogdGFibGVSb3dFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRyXCJcblxubGV0IGNyZWF0ZVRoIGRvYyA6IHRhYmxlQ2VsbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGhcIlxuXG5sZXQgY3JlYXRlVGQgZG9jIDogdGFibGVDZWxsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZFwiXG5cbmxldCBjcmVhdGVTdWIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdWJcIlxuXG5sZXQgY3JlYXRlU3VwIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3VwXCJcblxubGV0IGNyZWF0ZVNwYW4gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzcGFuXCJcblxubGV0IGNyZWF0ZVR0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwidHRcIlxuXG5sZXQgY3JlYXRlSSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImlcIlxuXG5sZXQgY3JlYXRlQiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImJcIlxuXG5sZXQgY3JlYXRlQmlnIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYmlnXCJcblxubGV0IGNyZWF0ZVNtYWxsIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic21hbGxcIlxuXG5sZXQgY3JlYXRlRW0gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJlbVwiXG5cbmxldCBjcmVhdGVTdHJvbmcgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdHJvbmdcIlxuXG5sZXQgY3JlYXRlQ2l0ZSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImNpdGVcIlxuXG5sZXQgY3JlYXRlRGZuIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZGZuXCJcblxubGV0IGNyZWF0ZUNvZGUgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJjb2RlXCJcblxubGV0IGNyZWF0ZVNhbXAgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzYW1wXCJcblxubGV0IGNyZWF0ZUtiZCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImtiZFwiXG5cbmxldCBjcmVhdGVWYXIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJ2YXJcIlxuXG5sZXQgY3JlYXRlQWJiciBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFiYnJcIlxuXG5sZXQgY3JlYXRlRGQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkZFwiXG5cbmxldCBjcmVhdGVEdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImR0XCJcblxubGV0IGNyZWF0ZU5vc2NyaXB0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwibm9zY3JpcHRcIlxuXG5sZXQgY3JlYXRlQWRkcmVzcyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFkZHJlc3NcIlxuXG5sZXQgY3JlYXRlRnJhbWVzZXQgZG9jIDogZnJhbWVTZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZyYW1lc2V0XCJcblxubGV0IGNyZWF0ZUZyYW1lIGRvYyA6IGZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmcmFtZVwiXG5cbmxldCBjcmVhdGVJZnJhbWUgZG9jIDogaUZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpZnJhbWVcIlxuXG5sZXQgY3JlYXRlQXVkaW8gZG9jIDogYXVkaW9FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImF1ZGlvXCJcblxubGV0IGNyZWF0ZVZpZGVvIGRvYyA6IGF1ZGlvRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWRlb1wiXG5cbmV4Y2VwdGlvbiBDYW52YXNfbm90X2F2YWlsYWJsZVxuXG5sZXQgY3JlYXRlQ2FudmFzIGRvYyA6IGNhbnZhc0VsZW1lbnQgdCA9XG4gIGxldCBjID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjYW52YXNcIiBpblxuICBpZiBub3QgKE9wdC50ZXN0IGMjIy5nZXRDb250ZXh0KSB0aGVuIHJhaXNlIENhbnZhc19ub3RfYXZhaWxhYmxlO1xuICBjXG5cbmxldCBodG1sX2VsZW1lbnQgOiBodG1sRWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSFRNTEVsZW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IDogI0RvbS5ub2RlIEpzLnQgLT4gZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoZGVmIGh0bWxfZWxlbWVudCkpXG4gICAgdGhlblxuICAgICAgKCogaWUgPCA5IGRvZXMgbm90IGhhdmUgSFRNTEVsZW1lbnQ6IHdlIGhhdmUgdG8gY2hlYXQgdG8gY2hlY2tcbiAgICAgICAgIHRoYXQgc29tZXRoaW5nIGlzIGFuIGh0bWwgZWxlbWVudCAqKVxuICAgICAgZnVuIGUgLT5cbiAgICAgIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKGRlZiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmlubmVySFRNTCkpXG4gICAgICB0aGVuIEpzLm51bGxcbiAgICAgIGVsc2UgSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2VcbiAgICAgIGZ1biBlIC0+XG4gICAgICBpZiBKcy5pbnN0YW5jZW9mIGUgaHRtbF9lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIHRhZyAoZSA6ICNlbGVtZW50IHQpID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgPSB1bnNhZmVDb2VyY2UgXCJhXCIgZVxuXG4gIGxldCBhcmVhIGUgPSB1bnNhZmVDb2VyY2UgXCJhcmVhXCIgZVxuXG4gIGxldCBiYXNlIGUgPSB1bnNhZmVDb2VyY2UgXCJiYXNlXCIgZVxuXG4gIGxldCBibG9ja3F1b3RlIGUgPSB1bnNhZmVDb2VyY2UgXCJibG9ja3F1b3RlXCIgZVxuXG4gIGxldCBib2R5IGUgPSB1bnNhZmVDb2VyY2UgXCJib2R5XCIgZVxuXG4gIGxldCBiciBlID0gdW5zYWZlQ29lcmNlIFwiYnJcIiBlXG5cbiAgbGV0IGJ1dHRvbiBlID0gdW5zYWZlQ29lcmNlIFwiYnV0dG9uXCIgZVxuXG4gIGxldCBjYW52YXMgZSA9IHVuc2FmZUNvZXJjZSBcImNhbnZhc1wiIGVcblxuICBsZXQgY2FwdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwiY2FwdGlvblwiIGVcblxuICBsZXQgY29sIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xcIiBlXG5cbiAgbGV0IGNvbGdyb3VwIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xncm91cFwiIGVcblxuICBsZXQgZGVsIGUgPSB1bnNhZmVDb2VyY2UgXCJkZWxcIiBlXG5cbiAgbGV0IGRpdiBlID0gdW5zYWZlQ29lcmNlIFwiZGl2XCIgZVxuXG4gIGxldCBkbCBlID0gdW5zYWZlQ29lcmNlIFwiZGxcIiBlXG5cbiAgbGV0IGZpZWxkc2V0IGUgPSB1bnNhZmVDb2VyY2UgXCJmaWVsZHNldFwiIGVcblxuICBsZXQgZW1iZWQgZSA9IHVuc2FmZUNvZXJjZSBcImVtYmVkXCIgZVxuXG4gIGxldCBmb3JtIGUgPSB1bnNhZmVDb2VyY2UgXCJmb3JtXCIgZVxuXG4gIGxldCBmcmFtZXNldCBlID0gdW5zYWZlQ29lcmNlIFwiZnJhbWVzZXRcIiBlXG5cbiAgbGV0IGZyYW1lIGUgPSB1bnNhZmVDb2VyY2UgXCJmcmFtZVwiIGVcblxuICBsZXQgaDEgZSA9IHVuc2FmZUNvZXJjZSBcImgxXCIgZVxuXG4gIGxldCBoMiBlID0gdW5zYWZlQ29lcmNlIFwiaDJcIiBlXG5cbiAgbGV0IGgzIGUgPSB1bnNhZmVDb2VyY2UgXCJoM1wiIGVcblxuICBsZXQgaDQgZSA9IHVuc2FmZUNvZXJjZSBcImg0XCIgZVxuXG4gIGxldCBoNSBlID0gdW5zYWZlQ29lcmNlIFwiaDVcIiBlXG5cbiAgbGV0IGg2IGUgPSB1bnNhZmVDb2VyY2UgXCJoNlwiIGVcblxuICBsZXQgaGVhZCBlID0gdW5zYWZlQ29lcmNlIFwiaGVhZFwiIGVcblxuICBsZXQgaHIgZSA9IHVuc2FmZUNvZXJjZSBcImhyXCIgZVxuXG4gIGxldCBodG1sIGUgPSB1bnNhZmVDb2VyY2UgXCJodG1sXCIgZVxuXG4gIGxldCBpZnJhbWUgZSA9IHVuc2FmZUNvZXJjZSBcImlmcmFtZVwiIGVcblxuICBsZXQgaW1nIGUgPSB1bnNhZmVDb2VyY2UgXCJpbWdcIiBlXG5cbiAgbGV0IGlucHV0IGUgPSB1bnNhZmVDb2VyY2UgXCJpbnB1dFwiIGVcblxuICBsZXQgaW5zIGUgPSB1bnNhZmVDb2VyY2UgXCJpbnNcIiBlXG5cbiAgbGV0IGxhYmVsIGUgPSB1bnNhZmVDb2VyY2UgXCJsYWJlbFwiIGVcblxuICBsZXQgbGVnZW5kIGUgPSB1bnNhZmVDb2VyY2UgXCJsZWdlbmRcIiBlXG5cbiAgbGV0IGxpIGUgPSB1bnNhZmVDb2VyY2UgXCJsaVwiIGVcblxuICBsZXQgbGluayBlID0gdW5zYWZlQ29lcmNlIFwibGlua1wiIGVcblxuICBsZXQgbWFwIGUgPSB1bnNhZmVDb2VyY2UgXCJtYXBcIiBlXG5cbiAgbGV0IG1ldGEgZSA9IHVuc2FmZUNvZXJjZSBcIm1ldGFcIiBlXG5cbiAgbGV0IF9vYmplY3QgZSA9IHVuc2FmZUNvZXJjZSBcIm9iamVjdFwiIGVcblxuICBsZXQgb2wgZSA9IHVuc2FmZUNvZXJjZSBcIm9sXCIgZVxuXG4gIGxldCBvcHRncm91cCBlID0gdW5zYWZlQ29lcmNlIFwib3B0Z3JvdXBcIiBlXG5cbiAgbGV0IG9wdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwib3B0aW9uXCIgZVxuXG4gIGxldCBwIGUgPSB1bnNhZmVDb2VyY2UgXCJwXCIgZVxuXG4gIGxldCBwYXJhbSBlID0gdW5zYWZlQ29lcmNlIFwicGFyYW1cIiBlXG5cbiAgbGV0IHByZSBlID0gdW5zYWZlQ29lcmNlIFwicHJlXCIgZVxuXG4gIGxldCBxIGUgPSB1bnNhZmVDb2VyY2UgXCJxXCIgZVxuXG4gIGxldCBzY3JpcHQgZSA9IHVuc2FmZUNvZXJjZSBcInNjcmlwdFwiIGVcblxuICBsZXQgc2VsZWN0IGUgPSB1bnNhZmVDb2VyY2UgXCJzZWxlY3RcIiBlXG5cbiAgbGV0IHN0eWxlIGUgPSB1bnNhZmVDb2VyY2UgXCJzdHlsZVwiIGVcblxuICBsZXQgdGFibGUgZSA9IHVuc2FmZUNvZXJjZSBcInRhYmxlXCIgZVxuXG4gIGxldCB0Ym9keSBlID0gdW5zYWZlQ29lcmNlIFwidGJvZHlcIiBlXG5cbiAgbGV0IHRkIGUgPSB1bnNhZmVDb2VyY2UgXCJ0ZFwiIGVcblxuICBsZXQgdGV4dGFyZWEgZSA9IHVuc2FmZUNvZXJjZSBcInRleHRhcmVhXCIgZVxuXG4gIGxldCB0Zm9vdCBlID0gdW5zYWZlQ29lcmNlIFwidGZvb3RcIiBlXG5cbiAgbGV0IHRoIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aFwiIGVcblxuICBsZXQgdGhlYWQgZSA9IHVuc2FmZUNvZXJjZSBcInRoZWFkXCIgZVxuXG4gIGxldCB0aXRsZSBlID0gdW5zYWZlQ29lcmNlIFwidGl0bGVcIiBlXG5cbiAgbGV0IHRyIGUgPSB1bnNhZmVDb2VyY2UgXCJ0clwiIGVcblxuICBsZXQgdWwgZSA9IHVuc2FmZUNvZXJjZSBcInVsXCIgZVxuXG4gIGxldCBhdWRpbyBlID0gdW5zYWZlQ29lcmNlIFwiYXVkaW9cIiBlXG5cbiAgbGV0IHZpZGVvIGUgPSB1bnNhZmVDb2VyY2UgXCJ2aWRlb1wiIGVcblxuICBsZXQgdW5zYWZlQ29lcmNlRXZlbnQgY29uc3RyIChldiA6ICNldmVudCB0KSA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKGRlZiBjb25zdHIpICYmIEpzLmluc3RhbmNlb2YgZXYgY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGV2KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBtb3VzZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZUV2ZW50IGV2XG5cbiAgbGV0IGtleWJvYXJkRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX0tleWJvYXJkRXZlbnQgZXZcblxuICBsZXQgd2hlZWxFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2hlZWxFdmVudCBldlxuXG4gIGxldCBtb3VzZVNjcm9sbEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZVNjcm9sbEV2ZW50IGV2XG5cbiAgbGV0IHBvcFN0YXRlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BvcFN0YXRlRXZlbnQgZXZcblxuICBsZXQgbWVzc2FnZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9NZXNzYWdlRXZlbnQgZXZcbmVuZFxuXG4oKioqKilcblxubGV0IGV2ZW50VGFyZ2V0ID0gRG9tLmV2ZW50VGFyZ2V0XG5cbmxldCBldmVudFJlbGF0ZWRUYXJnZXQgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIE9wdGRlZi5nZXQgZSMjLnJlbGF0ZWRUYXJnZXQgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggSnMudG9fc3RyaW5nIGUjIy5fdHlwZSB3aXRoXG4gICAgICB8IFwibW91c2VvdmVyXCIgLT4gT3B0ZGVmLmdldCBlIyMuZnJvbUVsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IFwibW91c2VvdXRcIiAtPiBPcHRkZWYuZ2V0IGUjIy50b0VsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IF8gLT4gSnMubnVsbClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCBlIyMuY2xpZW50WCArIGJvZHkjIy5zY3JvbGxMZWZ0ICsgaHRtbCMjLnNjcm9sbExlZnRcbiAgLCBlIyMuY2xpZW50WSArIGJvZHkjIy5zY3JvbGxUb3AgKyBodG1sIyMuc2Nyb2xsVG9wIClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbiAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMucGFnZVhcbiAgICAoZnVuICgpIC0+IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgZSlcbiAgICAoZnVuIHggLT4gT3B0ZGVmLmNhc2UgZSMjLnBhZ2VZIChmdW4gKCkgLT4gZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyBlKSAoZnVuIHkgLT4geCwgeSkpXG5cbmxldCBlbGVtZW50Q2xpZW50UG9zaXRpb24gKGUgOiAjZWxlbWVudCB0KSA9XG4gIGxldCByID0gZSMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGluXG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCB0cnVuY2F0ZSAoSnMudG9fZmxvYXQgciMjLmxlZnQpIC0gYm9keSMjLmNsaWVudExlZnQgLSBodG1sIyMuY2xpZW50TGVmdFxuICAsIHRydW5jYXRlIChKcy50b19mbG9hdCByIyMudG9wKSAtIGJvZHkjIy5jbGllbnRUb3AgLSBodG1sIyMuY2xpZW50VG9wIClcblxubGV0IGdldERvY3VtZW50U2Nyb2xsICgpID1cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICBib2R5IyMuc2Nyb2xsTGVmdCArIGh0bWwjIy5zY3JvbGxMZWZ0LCBib2R5IyMuc2Nyb2xsVG9wICsgaHRtbCMjLnNjcm9sbFRvcFxuXG5sZXQgYnV0dG9uUHJlc3NlZCAoZXYgOiAjbW91c2VFdmVudCBKcy50KSA9XG4gIEpzLk9wdGRlZi5jYXNlXG4gICAgZXYjIy53aGljaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIGV2IyMuYnV0dG9uIHdpdGhcbiAgICAgIHwgMSAtPiBMZWZ0X2J1dHRvblxuICAgICAgfCAyIC0+IFJpZ2h0X2J1dHRvblxuICAgICAgfCA0IC0+IE1pZGRsZV9idXR0b25cbiAgICAgIHwgXyAtPiBOb19idXR0b24pXG4gICAgKGZ1biB4IC0+IHgpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIGUgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgaCA9XG4gIGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuICAgID9jYXB0dXJlXG4gICAgP29uY2VcbiAgICA/cGFzc2l2ZVxuICAgIGVcbiAgICBFdmVudC53aGVlbFxuICAgIChoYW5kbGVyIChmdW4gKGUgOiBtb3VzZXdoZWVsRXZlbnQgdCkgLT5cbiAgICAgICAgIGxldCBkeCA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWCAoZnVuICgpIC0+IDApIC8gNDAgaW5cbiAgICAgICAgIGxldCBkeSA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWSAoZnVuICgpIC0+IGUjIy53aGVlbERlbHRhKSAvIDQwIGluXG4gICAgICAgICBoIChlIDo+IG1vdXNlRXZlbnQgdCkgfmR4IH5keSkpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lciBlIGggY2FwdCA9XG4gIGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgfmNhcHR1cmU6Y2FwdCBlIGhcblxuKCoqKioqKVxuXG5tb2R1bGUgS2V5Ym9hcmRfY29kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVW5pZGVudGlmaWVkXG4gICAgKCogQWxwaGFiZXRpYyBDaGFyYWN0ZXJzICopXG4gICAgfCBLZXlBXG4gICAgfCBLZXlCXG4gICAgfCBLZXlDXG4gICAgfCBLZXlEXG4gICAgfCBLZXlFXG4gICAgfCBLZXlGXG4gICAgfCBLZXlHXG4gICAgfCBLZXlIXG4gICAgfCBLZXlJXG4gICAgfCBLZXlKXG4gICAgfCBLZXlLXG4gICAgfCBLZXlMXG4gICAgfCBLZXlNXG4gICAgfCBLZXlOXG4gICAgfCBLZXlPXG4gICAgfCBLZXlQXG4gICAgfCBLZXlRXG4gICAgfCBLZXlSXG4gICAgfCBLZXlTXG4gICAgfCBLZXlUXG4gICAgfCBLZXlVXG4gICAgfCBLZXlWXG4gICAgfCBLZXlXXG4gICAgfCBLZXlYXG4gICAgfCBLZXlZXG4gICAgfCBLZXlaXG4gICAgKCogRGlnaXRzICopXG4gICAgfCBEaWdpdDBcbiAgICB8IERpZ2l0MVxuICAgIHwgRGlnaXQyXG4gICAgfCBEaWdpdDNcbiAgICB8IERpZ2l0NFxuICAgIHwgRGlnaXQ1XG4gICAgfCBEaWdpdDZcbiAgICB8IERpZ2l0N1xuICAgIHwgRGlnaXQ4XG4gICAgfCBEaWdpdDlcbiAgICB8IE1pbnVzXG4gICAgfCBFcXVhbFxuICAgICgqIFdoaXRlc3BhY2UgKilcbiAgICB8IFRhYlxuICAgIHwgRW50ZXJcbiAgICB8IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgRXNjYXBlXG4gICAgfCBCYWNrc3BhY2VcbiAgICB8IEluc2VydFxuICAgIHwgRGVsZXRlXG4gICAgfCBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBCcmFja2V0TGVmdFxuICAgIHwgQnJhY2tldFJpZ2h0XG4gICAgfCBTZW1pY29sb25cbiAgICB8IFF1b3RlXG4gICAgfCBCYWNrcXVvdGVcbiAgICB8IEJhY2tzbGFzaFxuICAgIHwgQ29tbWFcbiAgICB8IFBlcmlvZFxuICAgIHwgU2xhc2hcbiAgICAoKiBGdW5jdGlvbiBrZXlzICopXG4gICAgfCBGMVxuICAgIHwgRjJcbiAgICB8IEYzXG4gICAgfCBGNFxuICAgIHwgRjVcbiAgICB8IEY2XG4gICAgfCBGN1xuICAgIHwgRjhcbiAgICB8IEY5XG4gICAgfCBGMTBcbiAgICB8IEYxMVxuICAgIHwgRjEyXG4gICAgKCogTnVtcGFkIGtleXMgKilcbiAgICB8IE51bXBhZDBcbiAgICB8IE51bXBhZDFcbiAgICB8IE51bXBhZDJcbiAgICB8IE51bXBhZDNcbiAgICB8IE51bXBhZDRcbiAgICB8IE51bXBhZDVcbiAgICB8IE51bXBhZDZcbiAgICB8IE51bXBhZDdcbiAgICB8IE51bXBhZDhcbiAgICB8IE51bXBhZDlcbiAgICB8IE51bXBhZE11bHRpcGx5XG4gICAgfCBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgTnVtcGFkQWRkXG4gICAgfCBOdW1wYWREZWNpbWFsXG4gICAgfCBOdW1wYWRFcXVhbFxuICAgIHwgTnVtcGFkRW50ZXJcbiAgICB8IE51bXBhZERpdmlkZVxuICAgIHwgTnVtTG9ja1xuICAgICgqIE1vZGlmaWVyIGtleXMgKilcbiAgICB8IENvbnRyb2xMZWZ0XG4gICAgfCBDb250cm9sUmlnaHRcbiAgICB8IE1ldGFMZWZ0XG4gICAgfCBNZXRhUmlnaHRcbiAgICB8IFNoaWZ0TGVmdFxuICAgIHwgU2hpZnRSaWdodFxuICAgIHwgQWx0TGVmdFxuICAgIHwgQWx0UmlnaHRcbiAgICAoKiBBcnJvdyBrZXlzICopXG4gICAgfCBBcnJvd0xlZnRcbiAgICB8IEFycm93UmlnaHRcbiAgICB8IEFycm93VXBcbiAgICB8IEFycm93RG93blxuICAgICgqIE5hdmlnYXRpb24gKilcbiAgICB8IFBhZ2VVcFxuICAgIHwgUGFnZURvd25cbiAgICB8IEhvbWVcbiAgICB8IEVuZFxuICAgICgqIFNvdW5kICopXG4gICAgfCBWb2x1bWVNdXRlXG4gICAgfCBWb2x1bWVEb3duXG4gICAgfCBWb2x1bWVVcFxuICAgICgqIE1lZGlhICopXG4gICAgfCBNZWRpYVRyYWNrUHJldmlvdXNcbiAgICB8IE1lZGlhVHJhY2tOZXh0XG4gICAgfCBNZWRpYVBsYXlQYXVzZVxuICAgIHwgTWVkaWFTdG9wXG4gICAgKCogQnJvd3NlciBzcGVjaWFsICopXG4gICAgfCBDb250ZXh0TWVudVxuICAgIHwgQnJvd3NlclNlYXJjaFxuICAgIHwgQnJvd3NlckhvbWVcbiAgICB8IEJyb3dzZXJGYXZvcml0ZXNcbiAgICB8IEJyb3dzZXJSZWZyZXNoXG4gICAgfCBCcm93c2VyU3RvcFxuICAgIHwgQnJvd3NlckZvcndhcmRcbiAgICB8IEJyb3dzZXJCYWNrXG4gICAgKCogTWlzYyAqKVxuICAgIHwgT1NMZWZ0XG4gICAgfCBPU1JpZ2h0XG4gICAgfCBTY3JvbGxMb2NrXG4gICAgfCBQcmludFNjcmVlblxuICAgIHwgSW50bEJhY2tzbGFzaFxuICAgIHwgSW50bFllblxuICAgIHwgUGF1c2VcblxuICBsZXQgdHJ5X2NvZGUgdiA9XG4gICAgbWF0Y2ggSnMudG9fc3RyaW5nIHYgd2l0aFxuICAgICgqIEFscGhhYmV0aWMgQ2hhcmFjdGVycyAqKVxuICAgIHwgXCJLZXlBXCIgLT4gS2V5QVxuICAgIHwgXCJLZXlCXCIgLT4gS2V5QlxuICAgIHwgXCJLZXlDXCIgLT4gS2V5Q1xuICAgIHwgXCJLZXlEXCIgLT4gS2V5RFxuICAgIHwgXCJLZXlFXCIgLT4gS2V5RVxuICAgIHwgXCJLZXlGXCIgLT4gS2V5RlxuICAgIHwgXCJLZXlHXCIgLT4gS2V5R1xuICAgIHwgXCJLZXlIXCIgLT4gS2V5SFxuICAgIHwgXCJLZXlJXCIgLT4gS2V5SVxuICAgIHwgXCJLZXlKXCIgLT4gS2V5SlxuICAgIHwgXCJLZXlLXCIgLT4gS2V5S1xuICAgIHwgXCJLZXlMXCIgLT4gS2V5TFxuICAgIHwgXCJLZXlNXCIgLT4gS2V5TVxuICAgIHwgXCJLZXlOXCIgLT4gS2V5TlxuICAgIHwgXCJLZXlPXCIgLT4gS2V5T1xuICAgIHwgXCJLZXlQXCIgLT4gS2V5UFxuICAgIHwgXCJLZXlRXCIgLT4gS2V5UVxuICAgIHwgXCJLZXlSXCIgLT4gS2V5UlxuICAgIHwgXCJLZXlTXCIgLT4gS2V5U1xuICAgIHwgXCJLZXlUXCIgLT4gS2V5VFxuICAgIHwgXCJLZXlVXCIgLT4gS2V5VVxuICAgIHwgXCJLZXlWXCIgLT4gS2V5VlxuICAgIHwgXCJLZXlXXCIgLT4gS2V5V1xuICAgIHwgXCJLZXlYXCIgLT4gS2V5WFxuICAgIHwgXCJLZXlZXCIgLT4gS2V5WVxuICAgIHwgXCJLZXlaXCIgLT4gS2V5WlxuICAgICgqIERpZ2l0cyAqKVxuICAgIHwgXCJEaWdpdDBcIiAtPiBEaWdpdDBcbiAgICB8IFwiRGlnaXQxXCIgLT4gRGlnaXQxXG4gICAgfCBcIkRpZ2l0MlwiIC0+IERpZ2l0MlxuICAgIHwgXCJEaWdpdDNcIiAtPiBEaWdpdDNcbiAgICB8IFwiRGlnaXQ0XCIgLT4gRGlnaXQ0XG4gICAgfCBcIkRpZ2l0NVwiIC0+IERpZ2l0NVxuICAgIHwgXCJEaWdpdDZcIiAtPiBEaWdpdDZcbiAgICB8IFwiRGlnaXQ3XCIgLT4gRGlnaXQ3XG4gICAgfCBcIkRpZ2l0OFwiIC0+IERpZ2l0OFxuICAgIHwgXCJEaWdpdDlcIiAtPiBEaWdpdDlcbiAgICB8IFwiTWludXNcIiAtPiBNaW51c1xuICAgIHwgXCJFcXVhbFwiIC0+IEVxdWFsXG4gICAgKCogV2hpdGVzcGFjZSAqKVxuICAgIHwgXCJUYWJcIiAtPiBUYWJcbiAgICB8IFwiRW50ZXJcIiAtPiBFbnRlclxuICAgIHwgXCJTcGFjZVwiIC0+IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgXCJFc2NhcGVcIiAtPiBFc2NhcGVcbiAgICB8IFwiQmFja3NwYWNlXCIgLT4gQmFja3NwYWNlXG4gICAgfCBcIkluc2VydFwiIC0+IEluc2VydFxuICAgIHwgXCJEZWxldGVcIiAtPiBEZWxldGVcbiAgICB8IFwiQ2Fwc0xvY2tcIiAtPiBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBcIkJyYWNrZXRMZWZ0XCIgLT4gQnJhY2tldExlZnRcbiAgICB8IFwiQnJhY2tldFJpZ2h0XCIgLT4gQnJhY2tldFJpZ2h0XG4gICAgfCBcIlNlbWljb2xvblwiIC0+IFNlbWljb2xvblxuICAgIHwgXCJRdW90ZVwiIC0+IFF1b3RlXG4gICAgfCBcIkJhY2txdW90ZVwiIC0+IEJhY2txdW90ZVxuICAgIHwgXCJCYWNrc2xhc2hcIiAtPiBCYWNrc2xhc2hcbiAgICB8IFwiQ29tbWFcIiAtPiBDb21tYVxuICAgIHwgXCJQZXJpb2RcIiAtPiBQZXJpb2RcbiAgICB8IFwiU2xhc2hcIiAtPiBTbGFzaFxuICAgICgqIEZ1bmN0aW9uIGtleXMgKilcbiAgICB8IFwiRjFcIiAtPiBGMVxuICAgIHwgXCJGMlwiIC0+IEYyXG4gICAgfCBcIkYzXCIgLT4gRjNcbiAgICB8IFwiRjRcIiAtPiBGNFxuICAgIHwgXCJGNVwiIC0+IEY1XG4gICAgfCBcIkY2XCIgLT4gRjZcbiAgICB8IFwiRjdcIiAtPiBGN1xuICAgIHwgXCJGOFwiIC0+IEY4XG4gICAgfCBcIkY5XCIgLT4gRjlcbiAgICB8IFwiRjEwXCIgLT4gRjEwXG4gICAgfCBcIkYxMVwiIC0+IEYxMVxuICAgIHwgXCJGMTJcIiAtPiBGMTJcbiAgICAoKiBOdW1wYWQga2V5cyAqKVxuICAgIHwgXCJOdW1wYWQwXCIgLT4gTnVtcGFkMFxuICAgIHwgXCJOdW1wYWQxXCIgLT4gTnVtcGFkMVxuICAgIHwgXCJOdW1wYWQyXCIgLT4gTnVtcGFkMlxuICAgIHwgXCJOdW1wYWQzXCIgLT4gTnVtcGFkM1xuICAgIHwgXCJOdW1wYWQ0XCIgLT4gTnVtcGFkNFxuICAgIHwgXCJOdW1wYWQ1XCIgLT4gTnVtcGFkNVxuICAgIHwgXCJOdW1wYWQ2XCIgLT4gTnVtcGFkNlxuICAgIHwgXCJOdW1wYWQ3XCIgLT4gTnVtcGFkN1xuICAgIHwgXCJOdW1wYWQ4XCIgLT4gTnVtcGFkOFxuICAgIHwgXCJOdW1wYWQ5XCIgLT4gTnVtcGFkOVxuICAgIHwgXCJOdW1wYWRNdWx0aXBseVwiIC0+IE51bXBhZE11bHRpcGx5XG4gICAgfCBcIk51bXBhZFN1YnRyYWN0XCIgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IFwiTnVtcGFkQWRkXCIgLT4gTnVtcGFkQWRkXG4gICAgfCBcIk51bXBhZERlY2ltYWxcIiAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCBcIk51bXBhZEVxdWFsXCIgLT4gTnVtcGFkRXF1YWxcbiAgICB8IFwiTnVtcGFkRW50ZXJcIiAtPiBOdW1wYWRFbnRlclxuICAgIHwgXCJOdW1wYWREaXZpZGVcIiAtPiBOdW1wYWREaXZpZGVcbiAgICB8IFwiTnVtTG9ja1wiIC0+IE51bUxvY2tcbiAgICAoKiBNb2RpZmllciBrZXlzICopXG4gICAgfCBcIkNvbnRyb2xMZWZ0XCIgLT4gQ29udHJvbExlZnRcbiAgICB8IFwiQ29udHJvbFJpZ2h0XCIgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCBcIk1ldGFMZWZ0XCIgLT4gTWV0YUxlZnRcbiAgICB8IFwiTWV0YVJpZ2h0XCIgLT4gTWV0YVJpZ2h0XG4gICAgfCBcIlNoaWZ0TGVmdFwiIC0+IFNoaWZ0TGVmdFxuICAgIHwgXCJTaGlmdFJpZ2h0XCIgLT4gU2hpZnRSaWdodFxuICAgIHwgXCJBbHRMZWZ0XCIgLT4gQWx0TGVmdFxuICAgIHwgXCJBbHRSaWdodFwiIC0+IEFsdFJpZ2h0XG4gICAgKCogQXJyb3cga2V5cyAqKVxuICAgIHwgXCJBcnJvd0xlZnRcIiAtPiBBcnJvd0xlZnRcbiAgICB8IFwiQXJyb3dSaWdodFwiIC0+IEFycm93UmlnaHRcbiAgICB8IFwiQXJyb3dVcFwiIC0+IEFycm93VXBcbiAgICB8IFwiQXJyb3dEb3duXCIgLT4gQXJyb3dEb3duXG4gICAgKCogTmF2aWdhdGlvbiAqKVxuICAgIHwgXCJQYWdlVXBcIiAtPiBQYWdlVXBcbiAgICB8IFwiUGFnZURvd25cIiAtPiBQYWdlRG93blxuICAgIHwgXCJIb21lXCIgLT4gSG9tZVxuICAgIHwgXCJFbmRcIiAtPiBFbmRcbiAgICAoKiBTb3VuZCAqKVxuICAgIHwgXCJWb2x1bWVNdXRlXCIgLT4gVm9sdW1lTXV0ZVxuICAgIHwgXCJWb2x1bWVEb3duXCIgLT4gVm9sdW1lRG93blxuICAgIHwgXCJWb2x1bWVVcFwiIC0+IFZvbHVtZVVwXG4gICAgKCogTWVkaWEgKilcbiAgICB8IFwiTWVkaWFUcmFja1ByZXZpb3VzXCIgLT4gTWVkaWFUcmFja1ByZXZpb3VzXG4gICAgfCBcIk1lZGlhVHJhY2tOZXh0XCIgLT4gTWVkaWFUcmFja05leHRcbiAgICB8IFwiTWVkaWFQbGF5UGF1c2VcIiAtPiBNZWRpYVBsYXlQYXVzZVxuICAgIHwgXCJNZWRpYVN0b3BcIiAtPiBNZWRpYVN0b3BcbiAgICAoKiBCcm93c2VyIHNwZWNpYWwgKilcbiAgICB8IFwiQ29udGV4dE1lbnVcIiAtPiBDb250ZXh0TWVudVxuICAgIHwgXCJCcm93c2VyU2VhcmNoXCIgLT4gQnJvd3NlclNlYXJjaFxuICAgIHwgXCJCcm93c2VySG9tZVwiIC0+IEJyb3dzZXJIb21lXG4gICAgfCBcIkJyb3dzZXJGYXZvcml0ZXNcIiAtPiBCcm93c2VyRmF2b3JpdGVzXG4gICAgfCBcIkJyb3dzZXJSZWZyZXNoXCIgLT4gQnJvd3NlclJlZnJlc2hcbiAgICB8IFwiQnJvd3NlclN0b3BcIiAtPiBCcm93c2VyU3RvcFxuICAgIHwgXCJCcm93c2VyRm9yd2FyZFwiIC0+IEJyb3dzZXJGb3J3YXJkXG4gICAgfCBcIkJyb3dzZXJCYWNrXCIgLT4gQnJvd3NlckJhY2tcbiAgICAoKiBNaXNjICopXG4gICAgfCBcIk9TTGVmdFwiIC0+IE9TTGVmdFxuICAgIHwgXCJPU1JpZ2h0XCIgLT4gT1NSaWdodFxuICAgIHwgXCJTY3JvbGxMb2NrXCIgLT4gU2Nyb2xsTG9ja1xuICAgIHwgXCJQcmludFNjcmVlblwiIC0+IFByaW50U2NyZWVuXG4gICAgfCBcIkludGxCYWNrc2xhc2hcIiAtPiBJbnRsQmFja3NsYXNoXG4gICAgfCBcIkludGxZZW5cIiAtPiBJbnRsWWVuXG4gICAgfCBcIlBhdXNlXCIgLT4gUGF1c2VcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9sZWZ0ID0gZnVuY3Rpb25cbiAgICB8IDE2IC0+IFNoaWZ0TGVmdFxuICAgIHwgMTcgLT4gQ29udHJvbExlZnRcbiAgICB8IDE4IC0+IEFsdExlZnRcbiAgICB8IDkxIC0+IE1ldGFMZWZ0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfcmlnaHQgPSBmdW5jdGlvblxuICAgIHwgMTYgLT4gU2hpZnRSaWdodFxuICAgIHwgMTcgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCAxOCAtPiBBbHRSaWdodFxuICAgIHwgOTEgLT4gTWV0YVJpZ2h0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbnVtcGFkID0gZnVuY3Rpb25cbiAgICB8IDQ2IC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDQ1IC0+IE51bXBhZDBcbiAgICB8IDM1IC0+IE51bXBhZDFcbiAgICB8IDQwIC0+IE51bXBhZDJcbiAgICB8IDM0IC0+IE51bXBhZDNcbiAgICB8IDM3IC0+IE51bXBhZDRcbiAgICB8IDEyIC0+IE51bXBhZDVcbiAgICB8IDM5IC0+IE51bXBhZDZcbiAgICB8IDM2IC0+IE51bXBhZDdcbiAgICB8IDM4IC0+IE51bXBhZDhcbiAgICB8IDMzIC0+IE51bXBhZDlcbiAgICB8IDEzIC0+IE51bXBhZEVudGVyXG4gICAgfCAxMTEgLT4gTnVtcGFkRGl2aWRlXG4gICAgfCAxMDcgLT4gTnVtcGFkQWRkXG4gICAgfCAxMDkgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IDEwNiAtPiBOdW1wYWRNdWx0aXBseVxuICAgIHwgMTEwIC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDk2IC0+IE51bXBhZDBcbiAgICB8IDk3IC0+IE51bXBhZDFcbiAgICB8IDk4IC0+IE51bXBhZDJcbiAgICB8IDk5IC0+IE51bXBhZDNcbiAgICB8IDEwMCAtPiBOdW1wYWQ0XG4gICAgfCAxMDEgLT4gTnVtcGFkNVxuICAgIHwgMTAyIC0+IE51bXBhZDZcbiAgICB8IDEwMyAtPiBOdW1wYWQ3XG4gICAgfCAxMDQgLT4gTnVtcGFkOFxuICAgIHwgMTA1IC0+IE51bXBhZDlcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9ub3JtYWwgPSBmdW5jdGlvblxuICAgIHwgMjcgLT4gRXNjYXBlXG4gICAgfCAxMTIgLT4gRjFcbiAgICB8IDExMyAtPiBGMlxuICAgIHwgMTE0IC0+IEYzXG4gICAgfCAxMTUgLT4gRjRcbiAgICB8IDExNiAtPiBGNVxuICAgIHwgMTE3IC0+IEY2XG4gICAgfCAxMTggLT4gRjdcbiAgICB8IDExOSAtPiBGOFxuICAgIHwgMTIwIC0+IEY5XG4gICAgfCAxMjEgLT4gRjEwXG4gICAgfCAxMjIgLT4gRjExXG4gICAgfCAxMjMgLT4gRjEyXG4gICAgfCA0MiAtPiBQcmludFNjcmVlblxuICAgIHwgMTQ1IC0+IFNjcm9sbExvY2tcbiAgICB8IDE5IC0+IFBhdXNlXG4gICAgfCAxOTIgLT4gQmFja3F1b3RlXG4gICAgfCA0OSAtPiBEaWdpdDFcbiAgICB8IDUwIC0+IERpZ2l0MlxuICAgIHwgNTEgLT4gRGlnaXQzXG4gICAgfCA1MiAtPiBEaWdpdDRcbiAgICB8IDUzIC0+IERpZ2l0NVxuICAgIHwgNTQgLT4gRGlnaXQ2XG4gICAgfCA1NSAtPiBEaWdpdDdcbiAgICB8IDU2IC0+IERpZ2l0OFxuICAgIHwgNTcgLT4gRGlnaXQ5XG4gICAgfCA0OCAtPiBEaWdpdDBcbiAgICB8IDE4OSAtPiBNaW51c1xuICAgIHwgMTg3IC0+IEVxdWFsXG4gICAgfCA4IC0+IEJhY2tzcGFjZVxuICAgIHwgOSAtPiBUYWJcbiAgICB8IDgxIC0+IEtleVFcbiAgICB8IDg3IC0+IEtleVdcbiAgICB8IDY5IC0+IEtleUVcbiAgICB8IDgyIC0+IEtleVJcbiAgICB8IDg0IC0+IEtleVRcbiAgICB8IDg5IC0+IEtleVlcbiAgICB8IDg1IC0+IEtleVVcbiAgICB8IDczIC0+IEtleUlcbiAgICB8IDc5IC0+IEtleU9cbiAgICB8IDgwIC0+IEtleVBcbiAgICB8IDIxOSAtPiBCcmFja2V0TGVmdFxuICAgIHwgMjIxIC0+IEJyYWNrZXRSaWdodFxuICAgIHwgMjIwIC0+IEJhY2tzbGFzaFxuICAgIHwgMjAgLT4gQ2Fwc0xvY2tcbiAgICB8IDY1IC0+IEtleUFcbiAgICB8IDgzIC0+IEtleVNcbiAgICB8IDY4IC0+IEtleURcbiAgICB8IDcwIC0+IEtleUZcbiAgICB8IDcxIC0+IEtleUdcbiAgICB8IDcyIC0+IEtleUhcbiAgICB8IDc0IC0+IEtleUpcbiAgICB8IDc1IC0+IEtleUtcbiAgICB8IDc2IC0+IEtleUxcbiAgICB8IDE4NiAtPiBTZW1pY29sb25cbiAgICB8IDIyMiAtPiBRdW90ZVxuICAgIHwgMTMgLT4gRW50ZXJcbiAgICB8IDkwIC0+IEtleVpcbiAgICB8IDg4IC0+IEtleVhcbiAgICB8IDY3IC0+IEtleUNcbiAgICB8IDg2IC0+IEtleVZcbiAgICB8IDY2IC0+IEtleUJcbiAgICB8IDc4IC0+IEtleU5cbiAgICB8IDc3IC0+IEtleU1cbiAgICB8IDE4OCAtPiBDb21tYVxuICAgIHwgMTkwIC0+IFBlcmlvZFxuICAgIHwgMTkxIC0+IFNsYXNoXG4gICAgfCAzMiAtPiBTcGFjZVxuICAgIHwgOTMgLT4gQ29udGV4dE1lbnVcbiAgICB8IDQ1IC0+IEluc2VydFxuICAgIHwgMzYgLT4gSG9tZVxuICAgIHwgMzMgLT4gUGFnZVVwXG4gICAgfCA0NiAtPiBEZWxldGVcbiAgICB8IDM1IC0+IEVuZFxuICAgIHwgMzQgLT4gUGFnZURvd25cbiAgICB8IDM3IC0+IEFycm93TGVmdFxuICAgIHwgNDAgLT4gQXJyb3dEb3duXG4gICAgfCAzOSAtPiBBcnJvd1JpZ2h0XG4gICAgfCAzOCAtPiBBcnJvd1VwXG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCBtYWtlX3VuaWRlbnRpZmllZCBfID0gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9uZXh0IHZhbHVlIGYgPSBmdW5jdGlvblxuICAgIHwgVW5pZGVudGlmaWVkIC0+IE9wdGRlZi5jYXNlIHZhbHVlIG1ha2VfdW5pZGVudGlmaWVkIGZcbiAgICB8IHYgLT4gdlxuXG4gIGxldCBydW5fbmV4dCB2YWx1ZSBmID0gZnVuY3Rpb25cbiAgICB8IFVuaWRlbnRpZmllZCAtPiBmIHZhbHVlXG4gICAgfCB2IC0+IHZcblxuICBsZXQgZ2V0X2tleV9jb2RlIGV2dCA9IGV2dCMjLmtleUNvZGVcblxuICBsZXQgdHJ5X2tleV9sb2NhdGlvbiBldnQgPVxuICAgIG1hdGNoIGV2dCMjLmxvY2F0aW9uIHdpdGhcbiAgICB8IDEgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9sZWZ0XG4gICAgfCAyIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfcmlnaHRcbiAgICB8IDMgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9udW1wYWRcbiAgICB8IF8gLT4gbWFrZV91bmlkZW50aWZpZWRcblxuICBsZXQgKCB8PiApIHggZiA9IGYgeFxuXG4gIGxldCBvZl9ldmVudCBldnQgPVxuICAgIFVuaWRlbnRpZmllZFxuICAgIHw+IHRyeV9uZXh0IGV2dCMjLmNvZGUgdHJ5X2NvZGVcbiAgICB8PiB0cnlfa2V5X2xvY2F0aW9uIGV2dFxuICAgIHw+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbm9ybWFsXG5cbiAgbGV0IG9mX2tleV9jb2RlID0gdHJ5X2tleV9jb2RlX25vcm1hbFxuZW5kXG5cbm1vZHVsZSBLZXlib2FyZF9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVWNoYXIudCBvcHRpb25cblxuICBsZXQgY2hhcl9vZl9pbnQgdmFsdWUgPVxuICAgIGlmIDAgPCB2YWx1ZSB0aGVuIHRyeSBTb21lIChVY2hhci5vZl9pbnQgdmFsdWUpIHdpdGggXyAtPiBOb25lIGVsc2UgTm9uZVxuXG4gIGxldCBlbXB0eV9zdHJpbmcgXyA9IEpzLnN0cmluZyBcIlwiXG5cbiAgbGV0IG5vbmUgXyA9IE5vbmVcblxuICBsZXQgb2ZfZXZlbnQgZXZ0ID1cbiAgICBsZXQga2V5ID0gT3B0ZGVmLmdldCBldnQjIy5rZXkgZW1wdHlfc3RyaW5nIGluXG4gICAgbWF0Y2gga2V5IyMubGVuZ3RoIHdpdGhcbiAgICB8IDAgLT4gT3B0ZGVmLmNhc2UgZXZ0IyMuY2hhckNvZGUgbm9uZSBjaGFyX29mX2ludFxuICAgIHwgMSAtPiBjaGFyX29mX2ludCAoaW50X29mX2Zsb2F0IChKcy50b19mbG9hdCAoa2V5IyNjaGFyQ29kZUF0IDApKSlcbiAgICB8IF8gLT4gTm9uZVxuZW5kXG5cbigqKioqKilcblxubGV0IGVsZW1lbnQgOiAjRG9tLmVsZW1lbnQgdCAtPiBlbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlXG5cbnR5cGUgdGFnZ2VkRWxlbWVudCA9XG4gIHwgQSBvZiBhbmNob3JFbGVtZW50IHRcbiAgfCBBcmVhIG9mIGFyZWFFbGVtZW50IHRcbiAgfCBBdWRpbyBvZiBhdWRpb0VsZW1lbnQgdFxuICB8IEJhc2Ugb2YgYmFzZUVsZW1lbnQgdFxuICB8IEJsb2NrcXVvdGUgb2YgcXVvdGVFbGVtZW50IHRcbiAgfCBCb2R5IG9mIGJvZHlFbGVtZW50IHRcbiAgfCBCciBvZiBickVsZW1lbnQgdFxuICB8IEJ1dHRvbiBvZiBidXR0b25FbGVtZW50IHRcbiAgfCBDYW52YXMgb2YgY2FudmFzRWxlbWVudCB0XG4gIHwgQ2FwdGlvbiBvZiB0YWJsZUNhcHRpb25FbGVtZW50IHRcbiAgfCBDb2wgb2YgdGFibGVDb2xFbGVtZW50IHRcbiAgfCBDb2xncm91cCBvZiB0YWJsZUNvbEVsZW1lbnQgdFxuICB8IERlbCBvZiBtb2RFbGVtZW50IHRcbiAgfCBEaWFsb2cgb2YgZGlhbG9nRWxlbWVudCB0XG4gIHwgRGl2IG9mIGRpdkVsZW1lbnQgdFxuICB8IERsIG9mIGRMaXN0RWxlbWVudCB0XG4gIHwgRW1iZWQgb2YgZW1iZWRFbGVtZW50IHRcbiAgfCBGaWVsZHNldCBvZiBmaWVsZFNldEVsZW1lbnQgdFxuICB8IEZvcm0gb2YgZm9ybUVsZW1lbnQgdFxuICB8IEZyYW1lc2V0IG9mIGZyYW1lU2V0RWxlbWVudCB0XG4gIHwgRnJhbWUgb2YgZnJhbWVFbGVtZW50IHRcbiAgfCBIMSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDIgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEgzIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINCBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDUgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg2IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIZWFkIG9mIGhlYWRFbGVtZW50IHRcbiAgfCBIciBvZiBockVsZW1lbnQgdFxuICB8IEh0bWwgb2YgaHRtbEVsZW1lbnQgdFxuICB8IElmcmFtZSBvZiBpRnJhbWVFbGVtZW50IHRcbiAgfCBJbWcgb2YgaW1hZ2VFbGVtZW50IHRcbiAgfCBJbnB1dCBvZiBpbnB1dEVsZW1lbnQgdFxuICB8IElucyBvZiBtb2RFbGVtZW50IHRcbiAgfCBMYWJlbCBvZiBsYWJlbEVsZW1lbnQgdFxuICB8IExlZ2VuZCBvZiBsZWdlbmRFbGVtZW50IHRcbiAgfCBMaSBvZiBsaUVsZW1lbnQgdFxuICB8IExpbmsgb2YgbGlua0VsZW1lbnQgdFxuICB8IE1hcCBvZiBtYXBFbGVtZW50IHRcbiAgfCBNZXRhIG9mIG1ldGFFbGVtZW50IHRcbiAgfCBPYmplY3Qgb2Ygb2JqZWN0RWxlbWVudCB0XG4gIHwgT2wgb2Ygb0xpc3RFbGVtZW50IHRcbiAgfCBPcHRncm91cCBvZiBvcHRHcm91cEVsZW1lbnQgdFxuICB8IE9wdGlvbiBvZiBvcHRpb25FbGVtZW50IHRcbiAgfCBQIG9mIHBhcmFncmFwaEVsZW1lbnQgdFxuICB8IFBhcmFtIG9mIHBhcmFtRWxlbWVudCB0XG4gIHwgUHJlIG9mIHByZUVsZW1lbnQgdFxuICB8IFEgb2YgcXVvdGVFbGVtZW50IHRcbiAgfCBTY3JpcHQgb2Ygc2NyaXB0RWxlbWVudCB0XG4gIHwgU2VsZWN0IG9mIHNlbGVjdEVsZW1lbnQgdFxuICB8IFN0eWxlIG9mIHN0eWxlRWxlbWVudCB0XG4gIHwgVGFibGUgb2YgdGFibGVFbGVtZW50IHRcbiAgfCBUYm9keSBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUZCBvZiB0YWJsZUNlbGxFbGVtZW50IHRcbiAgfCBUZXh0YXJlYSBvZiB0ZXh0QXJlYUVsZW1lbnQgdFxuICB8IFRmb290IG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRoIG9mIHRhYmxlQ2VsbEVsZW1lbnQgdFxuICB8IFRoZWFkIG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRpdGxlIG9mIHRpdGxlRWxlbWVudCB0XG4gIHwgVHIgb2YgdGFibGVSb3dFbGVtZW50IHRcbiAgfCBVbCBvZiB1TGlzdEVsZW1lbnQgdFxuICB8IFZpZGVvIG9mIHZpZGVvRWxlbWVudCB0XG4gIHwgT3RoZXIgb2YgZWxlbWVudCB0XG5cbmxldCBvdGhlciBlID0gT3RoZXIgKGUgOiAjZWxlbWVudCB0IDo+IGVsZW1lbnQgdClcblxubGV0IHRhZ2dlZCAoZSA6ICNlbGVtZW50IHQpID1cbiAgbGV0IHRhZyA9IEpzLnRvX2J5dGVzdHJpbmcgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIGluXG4gIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMFxuICB0aGVuIG90aGVyIGVcbiAgZWxzZVxuICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHRhZyAwIHdpdGhcbiAgICB8ICdhJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJhXCIgLT4gQSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYXJlYVwiIC0+IEFyZWEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImF1ZGlvXCIgLT4gQXVkaW8gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnYicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiYmFzZVwiIC0+IEJhc2UgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJsb2NrcXVvdGVcIiAtPiBCbG9ja3F1b3RlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJib2R5XCIgLT4gQm9keSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYnJcIiAtPiBCciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYnV0dG9uXCIgLT4gQnV0dG9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2MnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImNhbnZhc1wiIC0+IENhbnZhcyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY2FwdGlvblwiIC0+IENhcHRpb24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNvbFwiIC0+IENvbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY29sZ3JvdXBcIiAtPiBDb2xncm91cCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdkJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJkZWxcIiAtPiBEZWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImRpdlwiIC0+IERpdiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZGxcIiAtPiBEbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdlJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJlbWJlZFwiIC0+IEVtYmVkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2YnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImZpZWxkc2V0XCIgLT4gRmllbGRzZXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZvcm1cIiAtPiBGb3JtIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmcmFtZXNldFwiIC0+IEZyYW1lc2V0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmcmFtZVwiIC0+IEZyYW1lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2gnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImgxXCIgLT4gSDEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImgyXCIgLT4gSDIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImgzXCIgLT4gSDMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg0XCIgLT4gSDQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg1XCIgLT4gSDUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg2XCIgLT4gSDYgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImhlYWRcIiAtPiBIZWFkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoclwiIC0+IEhyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJodG1sXCIgLT4gSHRtbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdpJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJpZnJhbWVcIiAtPiBJZnJhbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImltZ1wiIC0+IEltZyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW5wdXRcIiAtPiBJbnB1dCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW5zXCIgLT4gSW5zIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2wnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImxhYmVsXCIgLT4gTGFiZWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxlZ2VuZFwiIC0+IExlZ2VuZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGlcIiAtPiBMaSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGlua1wiIC0+IExpbmsgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwibWFwXCIgLT4gTWFwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJtZXRhXCIgLT4gTWV0YSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdvJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJvYmplY3RcIiAtPiBPYmplY3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9sXCIgLT4gT2wgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9wdGdyb3VwXCIgLT4gT3B0Z3JvdXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9wdGlvblwiIC0+IE9wdGlvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdwJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJwXCIgLT4gUCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwicGFyYW1cIiAtPiBQYXJhbSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwicHJlXCIgLT4gUHJlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3EnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInFcIiAtPiBRIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3MnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInNjcmlwdFwiIC0+IFNjcmlwdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwic2VsZWN0XCIgLT4gU2VsZWN0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJzdHlsZVwiIC0+IFN0eWxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3QnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInRhYmxlXCIgLT4gVGFibGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRib2R5XCIgLT4gVGJvZHkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRkXCIgLT4gVGQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRleHRhcmVhXCIgLT4gVGV4dGFyZWEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRmb290XCIgLT4gVGZvb3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRoXCIgLT4gVGggKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRoZWFkXCIgLT4gVGhlYWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRpdGxlXCIgLT4gVGl0bGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRyXCIgLT4gVHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidWxcIiAtPiBVbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd2JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ2aWRlb1wiIC0+IFZpZGVvIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgXyAtPiBvdGhlciBlXG5cbmxldCBvcHRfdGFnZ2VkIGUgPSBPcHQuY2FzZSBlIChmdW4gKCkgLT4gTm9uZSkgKGZ1biBlIC0+IFNvbWUgKHRhZ2dlZCBlKSlcblxudHlwZSB0YWdnZWRFdmVudCA9XG4gIHwgTW91c2VFdmVudCBvZiBtb3VzZUV2ZW50IHRcbiAgfCBLZXlib2FyZEV2ZW50IG9mIGtleWJvYXJkRXZlbnQgdFxuICB8IE1lc3NhZ2VFdmVudCBvZiBtZXNzYWdlRXZlbnQgdFxuICB8IE1vdXNld2hlZWxFdmVudCBvZiBtb3VzZXdoZWVsRXZlbnQgdFxuICB8IE1vdXNlU2Nyb2xsRXZlbnQgb2YgbW91c2VTY3JvbGxFdmVudCB0XG4gIHwgUG9wU3RhdGVFdmVudCBvZiBwb3BTdGF0ZUV2ZW50IHRcbiAgfCBPdGhlckV2ZW50IG9mIGV2ZW50IHRcblxubGV0IHRhZ2dlZEV2ZW50IChldiA6ICNldmVudCBKcy50KSA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKENvZXJjZVRvLm1vdXNlRXZlbnQgZXYpXG4gICAgKGZ1biAoKSAtPlxuICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgKENvZXJjZVRvLmtleWJvYXJkRXZlbnQgZXYpXG4gICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKENvZXJjZVRvLndoZWVsRXZlbnQgZXYpXG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgKENvZXJjZVRvLm1vdXNlU2Nyb2xsRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAgICAgKENvZXJjZVRvLnBvcFN0YXRlRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKENvZXJjZVRvLm1lc3NhZ2VFdmVudCBldilcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT4gT3RoZXJFdmVudCAoZXYgOj4gZXZlbnQgdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IE1lc3NhZ2VFdmVudCBldikpXG4gICAgICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gUG9wU3RhdGVFdmVudCBldikpXG4gICAgICAgICAgICAgICAgKGZ1biBldiAtPiBNb3VzZVNjcm9sbEV2ZW50IGV2KSlcbiAgICAgICAgICAgIChmdW4gZXYgLT4gTW91c2V3aGVlbEV2ZW50IGV2KSlcbiAgICAgICAgKGZ1biBldiAtPiBLZXlib2FyZEV2ZW50IGV2KSlcbiAgICAoZnVuIGV2IC0+IE1vdXNlRXZlbnQgZXYpXG5cbmxldCBvcHRfdGFnZ2VkRXZlbnQgZXYgPSBPcHQuY2FzZSBldiAoZnVuICgpIC0+IE5vbmUpIChmdW4gZXYgLT4gU29tZSAodGFnZ2VkRXZlbnQgZXYpKVxuXG5sZXQgc3RvcFByb3BhZ2F0aW9uIGV2ID1cbiAgbGV0IGUgPSBKcy5VbnNhZmUuY29lcmNlIGV2IGluXG4gIE9wdGRlZi5jYXNlXG4gICAgZSMjLnN0b3BQcm9wYWdhdGlvblxuICAgIChmdW4gKCkgLT4gZSMjLmNhbmNlbEJ1YmJsZSA6PSBKcy5fdHJ1ZSlcbiAgICAoZnVuIF8gLT4gZSMjX3N0b3BQcm9wYWdhdGlvbilcblxubGV0IF9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiB1bml0ID1cbiAgSnMuVW5zYWZlLnB1cmVfZXhwciAoZnVuIF8gLT5cbiAgICAgIGxldCB3ID0gSnMuVW5zYWZlLmNvZXJjZSB3aW5kb3cgaW5cbiAgICAgIGxldCBsID1cbiAgICAgICAgWyB3IyMucmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm1velJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMub1JlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICBdXG4gICAgICBpblxuICAgICAgdHJ5XG4gICAgICAgIGxldCByZXEgPSBMaXN0LmZpbmQgKGZ1biBjIC0+IEpzLk9wdGRlZi50ZXN0IGMpIGwgaW5cbiAgICAgICAgZnVuIGNhbGxiYWNrIC0+IEpzLlVuc2FmZS5mdW5fY2FsbCByZXEgW3wgSnMuVW5zYWZlLmluamVjdCBjYWxsYmFjayB8XVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgbGV0IG5vdyAoKSA9IEpzLnRvX2Zsb2F0IChuZXclanMgSnMuZGF0ZV9ub3cpIyNnZXRUaW1lIGluXG4gICAgICAgIGxldCBsYXN0ID0gcmVmIChub3cgKCkpIGluXG4gICAgICAgIGZ1biBjYWxsYmFjayAtPlxuICAgICAgICAgIGxldCB0ID0gbm93ICgpIGluXG4gICAgICAgICAgbGV0IGR0ID0gIWxhc3QgKy4gKDEwMDAuIC8uIDYwLikgLS4gdCBpblxuICAgICAgICAgIGxldCBkdCA9IGlmIFBvbHkuKGR0IDwgMC4pIHRoZW4gMC4gZWxzZSBkdCBpblxuICAgICAgICAgIGxhc3QgOj0gdDtcbiAgICAgICAgICBpZ25vcmUgKHdpbmRvdyMjc2V0VGltZW91dCBjYWxsYmFjayAoSnMuZmxvYXQgZHQpKSlcblxuKCoqKiopXG5cbmxldCBoYXNQdXNoU3RhdGUgKCkgPSBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSB3aW5kb3cjIy5oaXN0b3J5KSMjLnB1c2hTdGF0ZVxuXG5sZXQgaGFzUGxhY2Vob2xkZXIgKCkgPVxuICBsZXQgaSA9IGNyZWF0ZUlucHV0IGRvY3VtZW50IGluXG4gIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGkpIyMucGxhY2Vob2xkZXJcblxubGV0IGhhc1JlcXVpcmVkICgpID1cbiAgbGV0IGkgPSBjcmVhdGVJbnB1dCBkb2N1bWVudCBpblxuICBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBpKSMjLnJlcXVpcmVkXG5cbmxldCBvdmVyZmxvd19saW1pdCA9IDIxNDc0ODNfMDAwLlxuXG4oKiBtcyAqKVxuXG50eXBlIHRpbWVvdXRfaWRfc2FmZSA9IHRpbWVvdXRfaWQgb3B0aW9uIHJlZlxuXG5sZXQgc2V0VGltZW91dCBjYWxsYmFjayBkIDogdGltZW91dF9pZF9zYWZlID1cbiAgbGV0IGlkID0gcmVmIE5vbmUgaW5cbiAgbGV0IHJlYyBsb29wIGQgKCkgPVxuICAgIGxldCBzdGVwLCByZW1haW4gPVxuICAgICAgaWYgUG9seS4oZCA+IG92ZXJmbG93X2xpbWl0KSB0aGVuIG92ZXJmbG93X2xpbWl0LCBkIC0uIG92ZXJmbG93X2xpbWl0IGVsc2UgZCwgMC5cbiAgICBpblxuICAgIGxldCBjYiA9IGlmIFBvbHkuKHJlbWFpbiA9IDAuKSB0aGVuIGNhbGxiYWNrIGVsc2UgbG9vcCByZW1haW4gaW5cbiAgICBpZCA6PSBTb21lICh3aW5kb3cjI3NldFRpbWVvdXQgKEpzLndyYXBfY2FsbGJhY2sgY2IpIChKcy5mbG9hdCBzdGVwKSlcbiAgaW5cbiAgbG9vcCBkICgpO1xuICBpZFxuXG5sZXQgY2xlYXJUaW1lb3V0IChpZCA6IHRpbWVvdXRfaWRfc2FmZSkgPVxuICBtYXRjaCAhaWQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHggLT5cbiAgICAgIGlkIDo9IE5vbmU7XG4gICAgICB3aW5kb3cjI2NsZWFyVGltZW91dCB4XG5cbmxldCBqc19hcnJheV9vZl9jb2xsZWN0aW9uIChjIDogI2VsZW1lbnQgY29sbGVjdGlvbiBKcy50KSA6ICNlbGVtZW50IEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgID1cbiAgSnMuVW5zYWZlLihtZXRoX2NhbGwgKGpzX2V4cHIgXCJbXS5zbGljZVwiKSBcImNhbGxcIiBbfCBpbmplY3QgYyB8XSlcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21faHRtbFxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgZm9ybURhdGEgPSBvYmplY3RcbiAgbWV0aG9kIGFwcGVuZCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRfYmxvYiA6IGpzX3N0cmluZyB0IC0+IEZpbGUuYmxvYiB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBmb3JtRGF0YSA6IGZvcm1EYXRhIHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9Gb3JtRGF0YVxuXG5sZXQgZm9ybURhdGFfZm9ybSA6IChmb3JtRWxlbWVudCB0IC0+IGZvcm1EYXRhIHQpIGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRm9ybURhdGFcblxudHlwZSBmb3JtX2VsdCA9XG4gIFsgYFN0cmluZyBvZiBqc19zdHJpbmcgdFxuICB8IGBGaWxlIG9mIEZpbGUuZmlsZSB0XG4gIF1cblxudHlwZSBmb3JtX2NvbnRlbnRzID1cbiAgWyBgRmllbGRzIG9mIChzdHJpbmcgKiBmb3JtX2VsdCkgbGlzdCByZWZcbiAgfCBgRm9ybURhdGEgb2YgZm9ybURhdGEgdFxuICBdXG5cbmxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHYgOjogcSAtPiAoXG4gICAgICBtYXRjaCBmIHYgd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBxXG4gICAgICB8IFNvbWUgdicgLT4gdicgOjogZmlsdGVyX21hcCBmIHEpXG5cbmNsYXNzIHR5cGUgc3VibWl0dGFibGVFbGVtZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmxldCBoYXZlX2NvbnRlbnQgKGVsdCA6IHN1Ym1pdHRhYmxlRWxlbWVudCB0KSA9XG4gIGVsdCMjLm5hbWUjIy5sZW5ndGggPiAwICYmIG5vdCAoSnMudG9fYm9vbCBlbHQjIy5kaXNhYmxlZClcblxubGV0IGdldF90ZXh0YXJlYV92YWwgKGVsdCA6IHRleHRBcmVhRWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIFsgbmFtZSwgYFN0cmluZyBlbHQjIy52YWx1ZSBdXG4gIGVsc2UgW11cblxubGV0IGdldF9zZWxlY3RfdmFsIChlbHQgOiBzZWxlY3RFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgaWYgdG9fYm9vbCBlbHQjIy5tdWx0aXBsZVxuICAgIHRoZW5cbiAgICAgIGxldCBvcHRpb25zID1cbiAgICAgICAgQXJyYXkuaW5pdCBlbHQjIy5vcHRpb25zIyMubGVuZ3RoIChmdW4gaSAtPiBPcHQudG9fb3B0aW9uIChlbHQjIy5vcHRpb25zIyNpdGVtIGkpKVxuICAgICAgaW5cbiAgICAgIGZpbHRlcl9tYXBcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgZSAtPlxuICAgICAgICAgICAgICBpZiBKcy50b19ib29sIGUjIy5zZWxlY3RlZCB0aGVuIFNvbWUgKG5hbWUsIGBTdHJpbmcgZSMjLnZhbHVlKSBlbHNlIE5vbmUpXG4gICAgICAgIChBcnJheS50b19saXN0IG9wdGlvbnMpXG4gICAgZWxzZSBbIG5hbWUsIGBTdHJpbmcgZWx0IyMudmFsdWUgXVxuICBlbHNlIFtdXG5cbmNsYXNzIHR5cGUgZmlsZV9pbnB1dCA9IG9iamVjdFxuICBpbmhlcml0IGlucHV0RWxlbWVudFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBsZSA6IGJvb2wgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgZ2V0X2lucHV0X3ZhbCA/KGdldCA9IGZhbHNlKSAoZWx0IDogaW5wdXRFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgbGV0IHZhbHVlID0gZWx0IyMudmFsdWUgaW5cbiAgICBtYXRjaCB0b19ieXRlc3RyaW5nIGVsdCMjLl90eXBlIyN0b0xvd2VyQ2FzZSB3aXRoXG4gICAgfCBcImNoZWNrYm94XCIgfCBcInJhZGlvXCIgLT5cbiAgICAgICAgaWYgdG9fYm9vbCBlbHQjIy5jaGVja2VkIHRoZW4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF0gZWxzZSBbXVxuICAgIHwgXCJzdWJtaXRcIiB8IFwicmVzZXRcIiAtPiBbXVxuICAgIHwgXCJ0ZXh0XCIgfCBcInBhc3N3b3JkXCIgLT4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgICB8IFwiZmlsZVwiIC0+IChcbiAgICAgICAgaWYgZ2V0XG4gICAgICAgIHRoZW4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBlbHQgOiBmaWxlX2lucHV0IHQgPSBVbnNhZmUuY29lcmNlIGVsdCBpblxuICAgICAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZWx0IyMuZmlsZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBsaXN0IC0+IChcbiAgICAgICAgICAgICAgaWYgbGlzdCMjLmxlbmd0aCA9IDBcbiAgICAgICAgICAgICAgdGhlbiBbIG5hbWUsIGBTdHJpbmcgKEpzLnN0cmluZyBcIlwiKSBdXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGVsdCMjLm11bHRpcGxlIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIGZhbHNlIC0+IChcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAobGlzdCMjaXRlbSAwKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZmlsZSAtPiBbIG5hbWUsIGBGaWxlIGZpbGUgXSlcbiAgICAgICAgICAgICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIGYgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBmaWxlIC0+IFNvbWUgKG5hbWUsIGBGaWxlIGZpbGUpKVxuICAgICAgICAgICAgICAgICAgICAgIChBcnJheS50b19saXN0IChBcnJheS5pbml0IGxpc3QjIy5sZW5ndGggKGZ1biBpIC0+IGxpc3QjI2l0ZW0gaSkpKSkpXG4gICAgfCBfIC0+IFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gIGVsc2UgW11cblxubGV0IGdldF9mb3JtX2VsZW1lbnRzIChmb3JtIDogZm9ybUVsZW1lbnQgdCkgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPVxuICAgIGlmIGkgPCAwXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlXG4gICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChmb3JtIyMuZWxlbWVudHMjI2l0ZW0gaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgYWNjIChpIC0gaSlcbiAgICAgIHwgU29tZSB4IC0+IGxvb3AgKHggOjogYWNjKSAoaSAtIDEpXG4gIGluXG4gIGxvb3AgW10gKGZvcm0jIy5lbGVtZW50cyMjLmxlbmd0aCAtIDEpXG5cbmxldCBnZXRfZWxlbWVudF9jb250ZW50ID9nZXQgdiA9XG4gIG1hdGNoIHRhZ2dlZCB2IHdpdGhcbiAgfCBTZWxlY3QgdiAtPiBnZXRfc2VsZWN0X3ZhbCB2XG4gIHwgSW5wdXQgdiAtPiBnZXRfaW5wdXRfdmFsID9nZXQgdlxuICB8IFRleHRhcmVhIHYgLT4gZ2V0X3RleHRhcmVhX3ZhbCB2XG4gIHwgXyAtPiBbXVxuXG5sZXQgZm9ybV9lbGVtZW50cyA/Z2V0IChmb3JtIDogZm9ybUVsZW1lbnQgdCkgPVxuICBMaXN0LmZsYXR0ZW4gKExpc3QubWFwIChmdW4gdiAtPiBnZXRfZWxlbWVudF9jb250ZW50ID9nZXQgdikgKGdldF9mb3JtX2VsZW1lbnRzIGZvcm0pKVxuXG5sZXQgYXBwZW5kIChmb3JtX2NvbnRlbnRzIDogZm9ybV9jb250ZW50cykgKGZvcm1fZWx0IDogc3RyaW5nICogZm9ybV9lbHQpID1cbiAgbWF0Y2ggZm9ybV9jb250ZW50cyB3aXRoXG4gIHwgYEZpZWxkcyBsaXN0IC0+IGxpc3QgOj0gZm9ybV9lbHQgOjogIWxpc3RcbiAgfCBgRm9ybURhdGEgZiAtPiAoXG4gICAgICBtYXRjaCBmb3JtX2VsdCB3aXRoXG4gICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBmIyNhcHBlbmQgKHN0cmluZyBuYW1lKSBzXG4gICAgICB8IG5hbWUsIGBGaWxlIGZpbGUgLT4gZiMjYXBwZW5kX2Jsb2IgKHN0cmluZyBuYW1lKSAoZmlsZSA6PiBGaWxlLmJsb2IgdCkpXG5cbmxldCBlbXB0eV9mb3JtX2NvbnRlbnRzICgpID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiAoSnMuZGVmIGZvcm1EYXRhKSB3aXRoXG4gIHwgTm9uZSAtPiBgRmllbGRzIChyZWYgW10pXG4gIHwgU29tZSBjb25zdHIgLT4gYEZvcm1EYXRhIChuZXclanMgY29uc3RyKVxuXG5sZXQgcG9zdF9mb3JtX2NvbnRlbnRzIGZvcm0gPVxuICBsZXQgY29udGVudHMgPSBlbXB0eV9mb3JtX2NvbnRlbnRzICgpIGluXG4gIExpc3QuaXRlciAoYXBwZW5kIGNvbnRlbnRzKSAoZm9ybV9lbGVtZW50cyBmb3JtKTtcbiAgY29udGVudHNcblxubGV0IGdldF9mb3JtX2NvbnRlbnRzIGZvcm0gPVxuICBMaXN0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBuYW1lLCBgU3RyaW5nIHMgLT4gbmFtZSwgdG9fc3RyaW5nIHNcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgKGZvcm1fZWxlbWVudHMgfmdldDp0cnVlIGZvcm0pXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgVU5TRU5UXG4gIHwgT1BFTkVEXG4gIHwgSEVBREVSU19SRUNFSVZFRFxuICB8IExPQURJTkdcbiAgfCBET05FXG5cbnR5cGUgXyByZXNwb25zZSA9XG4gIHwgQXJyYXlCdWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IE9wdC50IHJlc3BvbnNlXG4gIHwgQmxvYiA6ICNGaWxlLmJsb2IgdCBPcHQudCByZXNwb25zZVxuICB8IERvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBKU09OIDogJ2EgT3B0LnQgcmVzcG9uc2VcbiAgfCBUZXh0IDoganNfc3RyaW5nIHQgcmVzcG9uc2VcbiAgfCBEZWZhdWx0IDogc3RyaW5nIHJlc3BvbnNlXG5cbmNsYXNzIHR5cGUgeG1sSHR0cFJlcXVlc3QgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25yZWFkeXN0YXRlY2hhbmdlIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfb3BlbiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgX29wZW5fZnVsbCA6XG4gICAgICAganNfc3RyaW5nIHRcbiAgICAtPiBqc19zdHJpbmcgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGpzX3N0cmluZyB0IG9wdFxuICAgIC0+IGpzX3N0cmluZyB0IG9wdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSZXF1ZXN0SGVhZGVyIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG92ZXJyaWRlTWltZVR5cGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZCA6IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9ibG9iIDogI0ZpbGUuYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2RvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfZm9ybURhdGEgOiBGb3JtLmZvcm1EYXRhIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0YXR1cyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXR1c1RleHQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFJlc3BvbnNlSGVhZGVyIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZXNwb25zZSA6IEZpbGUuZmlsZV9hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVRleHQgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVhNTCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgaW5oZXJpdCBGaWxlLnByb2dyZXNzRXZlbnRUYXJnZXRcblxuICBtZXRob2Qgb250aW1lb3V0IDpcbiAgICAoJ3NlbGYgdCwgJ3NlbGYgRmlsZS5wcm9ncmVzc0V2ZW50IHQpIERvbS5ldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cGxvYWQgOiB4bWxIdHRwUmVxdWVzdFVwbG9hZCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHhtbEh0dHBSZXF1ZXN0VXBsb2FkID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBGaWxlLnByb2dyZXNzRXZlbnRUYXJnZXRcbmVuZFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0eXAgPSB4bWxIdHRwUmVxdWVzdCBGaWxlLnByb2dyZXNzRXZlbnQgdCBEb20uRXZlbnQudHlwXG5cbiAgbGV0IHJlYWR5c3RhdGVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInJlYWR5c3RhdGVjaGFuZ2VcIlxuXG4gIGxldCBsb2Fkc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IHByb2dyZXNzID0gRG9tLkV2ZW50Lm1ha2UgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IGFib3J0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IGVycm9yID0gRG9tLkV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGxvYWQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRcIlxuXG4gIGxldCB0aW1lb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0aW1lb3V0XCJcblxuICBsZXQgbG9hZGVuZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVuZFwiXG5lbmRcblxuZXh0ZXJuYWwgY3JlYXRlIDogdW5pdCAtPiB4bWxIdHRwUmVxdWVzdCBKcy50ID0gXCJjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZVwiXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IE9DYW1sUHJvOiBHcsOpZ29pcmUgSGVucnksIMOHYcSfZGHFnyBCb3ptYW4uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tX2h0bWxcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHdvcmtlciA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCBlcnJvckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6ICgnc2VsZiB0LCAnYiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcG9zdE1lc3NhZ2UgOiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGVybWluYXRlIDogdW5pdCBtZXRoXG5lbmRcblxuYW5kIGVycm9yRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBtZXNzYWdlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxlbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGluZW5vIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29sbm8gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlcnJvciA6IFVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiAnYSByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHdvcmtlciA9IFVuc2FmZS5nbG9iYWwjIy5fV29ya2VyXG5cbmxldCBjcmVhdGUgc2NyaXB0ID0gbmV3JWpzIHdvcmtlciAoc3RyaW5nIHNjcmlwdClcblxubGV0IGltcG9ydF9zY3JpcHRzIHNjcmlwdHMgOiB1bml0ID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMuaW1wb3J0U2NyaXB0cylcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5pbXBvcnRfc2NyaXB0cyBpcyB1bmRlZmluZWRcIjtcbiAgVW5zYWZlLmZ1bl9jYWxsXG4gICAgVW5zYWZlLmdsb2JhbCMjLmltcG9ydFNjcmlwdHNcbiAgICAoQXJyYXkubWFwIChmdW4gcyAtPiBVbnNhZmUuaW5qZWN0IChzdHJpbmcgcykpIChBcnJheS5vZl9saXN0IHNjcmlwdHMpKVxuXG5sZXQgc2V0X29ubWVzc2FnZSBoYW5kbGVyID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMub25tZXNzYWdlKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLm9ubWVzc2FnZSBpcyB1bmRlZmluZWRcIjtcbiAgbGV0IGpzX2hhbmRsZXIgKGV2IDogJ2EgbWVzc2FnZUV2ZW50IEpzLnQpID0gaGFuZGxlciBldiMjLmRhdGEgaW5cbiAgVW5zYWZlLmdsb2JhbCMjLm9ubWVzc2FnZSA6PSB3cmFwX2NhbGxiYWNrIGpzX2hhbmRsZXJcblxubGV0IHBvc3RfbWVzc2FnZSBtc2cgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5wb3N0TWVzc2FnZSlcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5vbm1lc3NhZ2UgaXMgdW5kZWZpbmVkXCI7XG4gIFVuc2FmZS5nbG9iYWwjI3Bvc3RNZXNzYWdlIG1zZ1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKYWNxdWVzLVBhc2NhbCBEZXBsYWl4XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgQ09OTkVDVElOR1xuICB8IE9QRU5cbiAgfCBDTE9TSU5HXG4gIHwgQ0xPU0VEXG5cbmNsYXNzIHR5cGUgWydhXSBjbG9zZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgY29kZSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYXNvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2FzQ2xlYW4gOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhX2J1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhX2Jsb2IgOiBGaWxlLmJsb2IgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB3ZWJTb2NrZXQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHVybCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBidWZmZXJlZEFtb3VudCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ub3BlbiA6ICgnc2VsZiBKcy50LCAnc2VsZiBEb20uZXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2xvc2UgOlxuICAgICgnc2VsZiBKcy50LCAnc2VsZiBjbG9zZUV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIEpzLnQsICdzZWxmIERvbS5ldmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZXh0ZW5zaW9ucyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJvdG9jb2wgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3dpdGhDb2RlIDogaW50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbG9zZV93aXRoQ29kZUFuZFJlYXNvbiA6IGludCAtPiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25tZXNzYWdlIDpcbiAgICAoJ3NlbGYgSnMudCwgJ3NlbGYgbWVzc2FnZUV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBiaW5hcnlUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gIG1ldGhvZCBzZW5kIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHNlbmRfYnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgc2VuZF9ibG9iIDogRmlsZS5ibG9iIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IHdlYlNvY2tldCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2ViU29ja2V0XG5cbmxldCB3ZWJTb2NrZXRfd2l0aFByb3RvY29sID0gd2ViU29ja2V0XG5cbmxldCB3ZWJTb2NrZXRfd2l0aFByb3RvY29scyA9IHdlYlNvY2tldFxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3Qgd2ViU29ja2V0XG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbigqKiA1LjEgVHlwZXMgKilcblxudHlwZSBzaXplaSA9IGludFxuXG50eXBlIHNpemVpcHRyID0gaW50XG5cbnR5cGUgaW50cHRyID0gaW50XG5cbnR5cGUgdWludCA9IGludFxuXG50eXBlIGNsYW1wZiA9IG51bWJlcl90XG5cbnR5cGUgdm9pZFxuXG50eXBlIGNsZWFyQnVmZmVyTWFzayA9IGludFxuXG50eXBlIGJlZ2luTW9kZVxuXG50eXBlIGJsZW5kaW5nRmFjdG9yXG5cbnR5cGUgYmxlbmRNb2RlXG5cbnR5cGUgYnVmZmVyVGFyZ2V0XG5cbnR5cGUgYnVmZmVyVXNhZ2VcblxudHlwZSBjdWxsRmFjZU1vZGVcblxudHlwZSBkZXB0aEZ1bmN0aW9uXG5cbnR5cGUgZW5hYmxlQ2FwXG5cbnR5cGUgZXJyb3JDb2RlXG5cbnR5cGUgZnJvbnRGYWNlRGlyXG5cbnR5cGUgaGludFRhcmdldFxuXG50eXBlIGhpbnRNb2RlXG5cbnR5cGUgdGV4dHVyZVVuaXQgPSBpbnRcblxudHlwZSAnYSBwaXhlbFN0b3JlUGFyYW1cblxudHlwZSBzdGVuY2lsT3BcblxudHlwZSBmYlRhcmdldFxuXG50eXBlIGF0dGFjaG1lbnRQb2ludFxuXG50eXBlIHJiVGFyZ2V0XG5cbnR5cGUgdGV4VGFyZ2V0XG5cbnR5cGUgJ2EgcGFyYW1ldGVyXG5cbnR5cGUgJ2EgYnVmZmVyUGFyYW1ldGVyXG5cbnR5cGUgJ2EgdmVydGV4QXR0cmliUGFyYW1cblxudHlwZSB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW1cblxudHlwZSAnYSBhdHRhY2hQYXJhbVxuXG50eXBlIGZyYW1lYnVmZmVyU3RhdHVzXG5cbnR5cGUgJ2EgcmVuZGVyYnVmZmVyUGFyYW1cblxudHlwZSBmb3JtYXRcblxudHlwZSBwaXhlbEZvcm1hdFxuXG50eXBlIHBpeGVsVHlwZVxuXG50eXBlICdhIHRleFBhcmFtXG5cbnR5cGUgZGF0YVR5cGVcblxudHlwZSBzaGFkZXJUeXBlXG5cbnR5cGUgJ2EgcHJvZ3JhbVBhcmFtXG5cbnR5cGUgJ2Egc2hhZGVyUGFyYW1cblxudHlwZSB0ZXh0dXJlRmlsdGVyXG5cbnR5cGUgd3JhcE1vZGVcblxudHlwZSB0ZXhGaWx0ZXJcblxudHlwZSB1bmlmb3JtVHlwZVxuXG50eXBlIGNvbG9yc3BhY2VDb252ZXJzaW9uXG5cbnR5cGUgc2hhZGVyUHJlY2lzaW9uVHlwZVxuXG50eXBlIG9iamVjdFR5cGVcblxuKCoqIDUuMiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzICopXG5jbGFzcyB0eXBlIGNvbnRleHRBdHRyaWJ1dGVzID0gb2JqZWN0XG4gIG1ldGhvZCBhbHBoYSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGRlcHRoIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3RlbmNpbCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGFudGlhbGlhcyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZW11bHRpcGxpZWRBbHBoYSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlRHJhd2luZ0J1ZmZlciA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZWZlckxvd1Bvd2VyVG9IaWdoUGVyZm9ybWFuY2UgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0IDogYm9vbCB0IHByb3BcbmVuZFxuXG5sZXQgZGVmYXVsdENvbnRleHRBdHRyaWJ1dGVzID1cbiAgSnMuVW5zYWZlLihcbiAgICBvYmpcbiAgICAgIFt8IFwiYWxwaGFcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcImRlcHRoXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJzdGVuY2lsXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwiYW50aWFsaWFzXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJwcmVtdWx0aXBsaWVkQWxwaGFcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXJcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJwcmVmZXJMb3dQb3dlclRvSGlnaFBlcmZvcm1hbmNlXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwiZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdFwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICB8XSlcblxudHlwZSBidWZmZXJcblxudHlwZSBmcmFtZWJ1ZmZlclxuXG50eXBlIHByb2dyYW1cblxudHlwZSByZW5kZXJidWZmZXJcblxudHlwZSBzaGFkZXJcblxudHlwZSB0ZXh0dXJlXG5cbnR5cGUgJ2EgdW5pZm9ybUxvY2F0aW9uXG5cbmNsYXNzIHR5cGUgYWN0aXZlSW5mbyA9IG9iamVjdFxuICBtZXRob2Qgc2l6ZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF90eXBlIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2hhZGVyUHJlY2lzaW9uRm9ybWF0ID0gb2JqZWN0XG4gIG1ldGhvZCByYW5nZU1pbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJhbmdlTWF4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlY2lzaW9uIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlbmRlcmluZ0NvbnRleHQgPSBvYmplY3RcbiAgKCoqIDUuMTMuMSBBdHRyaWJ1dGVzICopXG5cbiAgbWV0aG9kIGNhbnZhcyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRyYXdpbmdCdWZmZXJXaWR0aCA6IHNpemVpIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHJhd2luZ0J1ZmZlckhlaWdodCA6IHNpemVpIHJlYWRvbmx5X3Byb3BcblxuICAoKiogNS4xMy4yIEdldHRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbnRleHQgKilcblxuICBtZXRob2QgZ2V0Q29udGV4dEF0dHJpYnV0ZXMgOiBjb250ZXh0QXR0cmlidXRlcyB0IG1ldGhcblxuICAoKiogNS4xMy4zIFNldHRpbmcgYW5kIGdldHRpbmcgc3RhdGUgKilcblxuICBtZXRob2QgYWN0aXZlVGV4dHVyZSA6IHRleHR1cmVVbml0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZENvbG9yIDogY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEVxdWF0aW9uIDogYmxlbmRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUgOiBibGVuZE1vZGUgLT4gYmxlbmRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEZ1bmMgOiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRGdW5jU2VwYXJhdGUgOlxuICAgIGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckNvbG9yIDogY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRlcHRoIDogY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhclN0ZW5jaWwgOiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbG9yTWFzayA6IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3VsbEZhY2UgOiBjdWxsRmFjZU1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoRnVuYyA6IGRlcHRoRnVuY3Rpb24gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoTWFzayA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhSYW5nZSA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpc2FibGUgOiBlbmFibGVDYXAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVuYWJsZSA6IGVuYWJsZUNhcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJvbnRGYWNlIDogZnJvbnRGYWNlRGlyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQYXJhbWV0ZXIgOiAnYS4gJ2EgcGFyYW1ldGVyIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0RXJyb3IgOiBlcnJvckNvZGUgbWV0aFxuXG4gIG1ldGhvZCBoaW50IDogaGludFRhcmdldCAtPiBoaW50TW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaXNFbmFibGVkIDogZW5hYmxlQ2FwIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVXaWR0aCA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwaXhlbFN0b3JlaSA6ICdhLiAnYSBwaXhlbFN0b3JlUGFyYW0gLT4gJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBvbHlnb25PZmZzZXQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2FtcGxlQ292ZXJhZ2UgOiBjbGFtcGYgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsRnVuYyA6IGRlcHRoRnVuY3Rpb24gLT4gaW50IC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxGdW5jU2VwYXJhdGUgOiBjdWxsRmFjZU1vZGUgLT4gZGVwdGhGdW5jdGlvbiAtPiBpbnQgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE1hc2sgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsTWFza1NlcGFyYXRlIDogY3VsbEZhY2VNb2RlIC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxPcCA6IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsT3BTZXBhcmF0ZSA6XG4gICAgY3VsbEZhY2VNb2RlIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjQgVmlld2luZyBhbmQgY2xpcHBpbmcgKilcblxuICBtZXRob2Qgc2Npc3NvciA6IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZpZXdwb3J0IDogaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy41IEJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRCdWZmZXIgOiBidWZmZXJUYXJnZXQgLT4gYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRCdWZmZXJfIDogYnVmZmVyVGFyZ2V0IC0+IGJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YV9jcmVhdGUgOiBidWZmZXJUYXJnZXQgLT4gc2l6ZWlwdHIgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGEgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHQgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGFfcmF3IDpcbiAgICBidWZmZXJUYXJnZXQgLT4gVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyU3ViRGF0YSA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IGludHB0ciAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlclN1YkRhdGFfcmF3IDpcbiAgICBidWZmZXJUYXJnZXQgLT4gaW50cHRyIC0+IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUJ1ZmZlciA6IGJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQnVmZmVyIDogYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEJ1ZmZlclBhcmFtZXRlciA6ICdhLiBidWZmZXJUYXJnZXQgLT4gJ2EgYnVmZmVyUGFyYW1ldGVyIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNCdWZmZXIgOiBidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjYgRnJhbWVidWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kRnJhbWVidWZmZXIgOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kRnJhbWVidWZmZXJfIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMgOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlclN0YXR1cyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgOlxuICAgIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJhbWVidWZmZXJUZXh0dXJlMkQgOlxuICAgIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyIDpcbiAgICAnYS4gZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+ICdhIGF0dGFjaFBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy43IFJlbmRlcmJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRSZW5kZXJidWZmZXIgOiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZFJlbmRlcmJ1ZmZlcl8gOiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlciA6ICdhLiByYlRhcmdldCAtPiAnYSByZW5kZXJidWZmZXJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgcmVuZGVyYnVmZmVyU3RvcmFnZSA6IHJiVGFyZ2V0IC0+IGZvcm1hdCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy44IFRleHR1cmUgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kVGV4dHVyZSA6IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRUZXh0dXJlXyA6IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21wcmVzc2VkVGV4SW1hZ2UyRCA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29weVRleEltYWdlMkQgOlxuICAgIHRleFRhcmdldCAtPiBpbnQgLT4gcGl4ZWxGb3JtYXQgLT4gaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvcHlUZXhTdWJJbWFnZTJEIDpcbiAgICB0ZXhUYXJnZXQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVGV4dHVyZSA6IHRleHR1cmUgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRleHR1cmUgOiB0ZXh0dXJlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdlbmVyYXRlTWlwbWFwIDogdGV4VGFyZ2V0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUZXhQYXJhbWV0ZXIgOiB0ZXhUYXJnZXQgLT4gJ2EgdGV4UGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc1RleHR1cmUgOiB0ZXh0dXJlIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9uZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gdm9pZCBvcHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tVmlldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tSW1hZ2VEYXRhIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VEYXRhIHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tSW1hZ2UgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZUVsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21DYW52YXMgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5jYW52YXNFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tVmlkZW8gOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC52aWRlb0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqIHtbXG4gICAgICBtZXRob2QgdGV4UGFyYW1ldGVyZiA6IHRleFRhcmdldCAtPiB0ZXhQYXJhbSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbiAgICAgXX1cbiAgKilcbiAgbWV0aG9kIHRleFBhcmFtZXRlcmkgOiB0ZXhUYXJnZXQgLT4gJ2EgdGV4UGFyYW0gLT4gJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbVZpZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21JbWFnZURhdGEgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VEYXRhIHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tSW1hZ2UgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tQ2FudmFzIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21WaWRlbyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC52aWRlb0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjkgUHJvZ3JhbXMgYW5kIFNoYWRlcnMgKilcblxuICBtZXRob2QgYXR0YWNoU2hhZGVyIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kQXR0cmliTG9jYXRpb24gOiBwcm9ncmFtIHQgLT4gdWludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcGlsZVNoYWRlciA6IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQcm9ncmFtIDogcHJvZ3JhbSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU2hhZGVyIDogc2hhZGVyVHlwZSAtPiBzaGFkZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVNoYWRlciA6IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXRhY2hTaGFkZXIgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dGFjaGVkU2hhZGVycyA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvZ3JhbVBhcmFtZXRlciA6ICdhLiBwcm9ncmFtIHQgLT4gJ2EgcHJvZ3JhbVBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0UHJvZ3JhbUluZm9Mb2cgOiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJQYXJhbWV0ZXIgOiAnYS4gc2hhZGVyIHQgLT4gJ2Egc2hhZGVyUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQgOlxuICAgIHNoYWRlclR5cGUgLT4gc2hhZGVyUHJlY2lzaW9uVHlwZSAtPiBzaGFkZXJQcmVjaXNpb25Gb3JtYXQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlckluZm9Mb2cgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclNvdXJjZSA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgaXNQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGlzU2hhZGVyIDogc2hhZGVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgbGlua1Byb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNoYWRlclNvdXJjZSA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1c2VQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2YWxpZGF0ZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTAgVW5pZm9ybXMgYW5kIGF0dHJpYnV0ZXMgKilcblxuICBtZXRob2QgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5IDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBY3RpdmVBdHRyaWIgOiBwcm9ncmFtIHQgLT4gdWludCAtPiBhY3RpdmVJbmZvIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBY3RpdmVVbmlmb3JtIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4gYWN0aXZlSW5mbyB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmliTG9jYXRpb24gOiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VW5pZm9ybSA6ICdhICdiLiBwcm9ncmFtIHQgLT4gJ2EgdW5pZm9ybUxvY2F0aW9uIHQgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCBnZXRVbmlmb3JtTG9jYXRpb24gOiAnYS4gcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IC0+ICdhIHVuaWZvcm1Mb2NhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgZ2V0VmVydGV4QXR0cmliIDogJ2EuIHVpbnQgLT4gJ2EgdmVydGV4QXR0cmliUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQgOiB1aW50IC0+IHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbSAtPiBzaXplaXB0ciBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZiA6IG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWZ2X3R5cGVkIDpcbiAgICBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmdiA6IG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaSA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaXZfdHlwZWQgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWl2IDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmYgOiBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZnZfdHlwZWQgOlxuICAgIFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmdiA6IFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmkgOiBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaXYgOiBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMml2X3R5cGVkIDpcbiAgICBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmIDpcbiAgICBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZnZfdHlwZWQgOlxuICAgIFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmdiA6IFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2kgOiBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2l2IDogWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpdl90eXBlZCA6XG4gICAgWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZiA6XG4gICAgICAgWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmdl90eXBlZCA6XG4gICAgWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGZ2IDogWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aSA6IFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGl2IDogWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpdl90eXBlZCA6XG4gICAgWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgyZnYgOlxuICAgIFsgYG1hdDIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDJmdl90eXBlZCA6XG4gICAgWyBgbWF0MiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDNmdiA6XG4gICAgWyBgbWF0MyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4M2Z2X3R5cGVkIDpcbiAgICBbIGBtYXQzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4NGZ2IDpcbiAgICBbIGBtYXQ0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXg0ZnZfdHlwZWQgOlxuICAgIFsgYG1hdDQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmIDogdWludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2YgOiB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmIDpcbiAgICB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYlBvaW50ZXIgOlxuICAgIHVpbnQgLT4gaW50IC0+IGRhdGFUeXBlIC0+IGJvb2wgdCAtPiBzaXplaSAtPiBpbnRwdHIgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTEgV3JpdGluZyB0byB0aGUgZHJhd2luZyBidWZmZXIgKilcblxuICBtZXRob2QgY2xlYXIgOiBjbGVhckJ1ZmZlck1hc2sgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdBcnJheXMgOiBiZWdpbk1vZGUgLT4gaW50IC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3RWxlbWVudHMgOiBiZWdpbk1vZGUgLT4gc2l6ZWkgLT4gZGF0YVR5cGUgLT4gaW50cHRyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaW5pc2ggOiB1bml0IG1ldGhcblxuICBtZXRob2QgZmx1c2ggOiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMiBSZWFkaW5nIGJhY2sgcGl4ZWxzICopXG5cbiAgbWV0aG9kIHJlYWRQaXhlbHMgOlxuICAgICAgIGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEzIERldGVjdGluZyBjb250ZXh0IGxvc3QgZXZlbnRzICopXG5cbiAgbWV0aG9kIGlzQ29udGV4dExvc3QgOiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjE0IERldGVjdGluZyBhbmQgZW5hYmxpbmcgZXh0ZW5zaW9ucyAqKVxuXG4gIG1ldGhvZCBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEV4dGVuc2lvbiA6ICdhLiBqc19zdHJpbmcgdCAtPiAnYSB0IG9wdCBtZXRoXG5cbiAgKCogVW50eXBlZCEgKilcbiAgKCoqIENvbnN0YW50cyAqKVxuXG4gIG1ldGhvZCBfREVQVEhfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0lOVFMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORVMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9MT09QXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX1NUUklQXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRVMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVfU1RSSVBfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFX0ZBTl8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfWkVSTyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORSA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfU1JDX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RTVF9DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfRFNUX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19BTFBIQV9TQVRVUkFURV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX0FERF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19TVUJUUkFDVF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19SRVZFUlNFX1NVQlRSQUNUXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05TVEFOVF9DT0xPUl8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05TVEFOVF9BTFBIQV8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BUlJBWV9CVUZGRVJfIDogYnVmZmVyVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VMRU1FTlRfQVJSQVlfQlVGRkVSXyA6IGJ1ZmZlclRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVFJFQU1fRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEFUSUNfRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EWU5BTUlDX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlQgOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkFDSyA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVF9BTkRfQkFDS18gOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORCA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ESVRIRVIgOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZJTExfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT19FUlJPUl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9FTlVNXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX1ZBTFVFXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX09QRVJBVElPTl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT1VUX09GX01FTU9SWV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OVEVYVF9MT1NUX1dFQkdMXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1cgOiBmcm9udEZhY2VEaXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ0NXIDogZnJvbnRGYWNlRGlyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RPTlRfQ0FSRV8gOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GQVNURVNUIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTklDRVNUIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VORVJBVEVfTUlQTUFQX0hJTlRfIDogaGludFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OX1JHQl8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OX0FMUEhBXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRFNUX1JHQl8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfU1JDX1JHQl8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0NPTE9SXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BUlJBWV9CVUZGRVJfQklORElOR18gOiBidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDogYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ESVRIRVJfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GSUxMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX1dJRFRIXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMSUFTRURfTElORV9XSURUSF9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFX01PREVfIDogY3VsbEZhY2VNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVF9GQUNFXyA6IGZyb250RmFjZURpciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1dSSVRFTUFTS18gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NMRUFSX1ZBTFVFXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9GVU5DXyA6IGRlcHRoRnVuY3Rpb24gcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQ0xFQVJfVkFMVUVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0ZVTkNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9SRUZfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1ZBTFVFX01BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1dSSVRFTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19GVU5DXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19SRUZfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19XUklURU1BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WSUVXUE9SVCA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9CT1hfIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9DTEVBUl9WQUxVRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfV1JJVEVNQVNLXyA6IGJvb2wgdCBqc19hcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQUxJR05NRU5UX1BBUkFNIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QQUNLX0FMSUdOTUVOVF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9URVhUVVJFX1NJWkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVklFV1BPUlRfRElNU18gOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NVQlBJWEVMX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRURfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dSRUVOX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTFVFX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFBIQV9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX1VOSVRTXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GQUNUT1JfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQklORElOR18yRF8gOiB0ZXh0dXJlIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfIDogdGV4dHVyZSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0JVRkZFUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFX1ZBTFVFXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJUXyA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNfIDogVHlwZWRfYXJyYXkudWludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VORVJBVEVfTUlQTUFQX0hJTlRfUEFSQU1fIDogaGludE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JVRkZFUl9TSVpFXyA6IGludCBidWZmZXJQYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlVGRkVSX1VTQUdFXyA6IGJ1ZmZlclVzYWdlIGJ1ZmZlclBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CWVRFIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfQllURV9EVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIT1JUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfSU5UXyA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfQllURV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNF80XzRfNF8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNV81XzVfMV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNV82XzVfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMUEhBIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCQSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xVTUlOQU5DRSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xVTUlOQU5DRV9BTFBIQV8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0lOREVYXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1NURU5DSUxfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ09NUE9ORU5UXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQUdNRU5UX1NIQURFUl8gOiBzaGFkZXJUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9TSEFERVJfIDogc2hhZGVyVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX0FUVFJJQlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WQVJZSU5HX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIQURFUl9UWVBFXyA6IHNoYWRlclR5cGUgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVMRVRFX1NUQVRVU18gOiBib29sIHQgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09NUElMRV9TVEFUVVNfIDogYm9vbCB0IHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFTEVURV9TVEFUVVNfUFJPRyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElOS19TVEFUVVNfIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WQUxJREFURV9TVEFUVVNfIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BVFRBQ0hFRF9TSEFERVJTXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX1VOSUZPUk1TXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX0FUVFJJQlVURVNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSEFESU5HX0xBTkdVQUdFX1ZFUlNJT05fIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVUlJFTlRfUFJPR1JBTV8gOiBwcm9ncmFtIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRU5ET1IgOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSRVIgOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSU0lPTiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX1RFWFRVUkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9CSU5ESU5HXyA6IGZyYW1lYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQklORElOR18gOiByZW5kZXJidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9SRU5ERVJCVUZGRVJfU0laRSA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVWRVIgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xFU1MgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dSRUFURVIgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PVEVRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMV0FZUyA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfS0VFUCA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRVBMQUNFIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOQ1IgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVDUiA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZFUlQgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5DUl9XUkFQXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUNSX1dSQVBfIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1pFUk9fIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1QgOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1RfTUlQTUFQX05FQVJFU1RfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUl9NSVBNQVBfTkVBUkVTVF8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVF9NSVBNQVBfTElORUFSXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVJfTUlQTUFQX0xJTkVBUl8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9NQUdfRklMVEVSXyA6IHRleEZpbHRlciB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX01JTl9GSUxURVJfIDogdGV4RmlsdGVyIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfV1JBUF9TXyA6IHdyYXBNb2RlIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfV1JBUF9UXyA6IHdyYXBNb2RlIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PTkVfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV8yRF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1hfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWV8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1pfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWl8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMzAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMzEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRVBFQVQgOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DTEFNUF9UT19FREdFXyA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01JUlJPUkVEX1JFUEVBVF8gOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVSXzJEXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVJfQ1VCRV8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRURfIDogYm9vbCB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEXyA6IGJvb2wgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVJfIDogdmVydGV4QXR0cmliUG9pbnRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDpcbiAgICBidWZmZXIgdCBvcHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VSUkVOVF9WRVJURVhfQVRUUklCXyA6XG4gICAgVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9XX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUVESVVNX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSElHSF9GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPV19JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NRURJVU1fSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSElHSF9JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUiA6IGZiVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUiA6IHJiVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQkE0IDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQjVfQTFfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQjU2NSA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DT01QT05FTlQxNl8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9JTkRFWDhfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9XSURUSF8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0hFSUdIVF8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVF8gOiBmb3JtYXQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1JFRF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfR1JFRU5fU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0JMVUVfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0FMUEhBX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9ERVBUSF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFXyA6IG9iamVjdFR5cGUgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRV9SRU5ERVJCVUZGRVIgOlxuICAgIHJlbmRlcmJ1ZmZlciB0IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUVfVEVYVFVSRSA6IHRleHR1cmUgdCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUxfIDogaW50IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFXyA6IGludCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9BVFRBQ0hNRU5UMF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0NPTVBMRVRFXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlNfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfVU5TVVBQT1JURURfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0ZMSVBfWV9XRUJHTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMX1BBUkFNIDpcbiAgICBjb2xvcnNwYWNlQ29udmVyc2lvbiBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9ORSA6IGNvbG9yc3BhY2VDb252ZXJzaW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JST1dTRVJfREVGQVVMVF9XRUJHTF8gOiBjb2xvcnNwYWNlQ29udmVyc2lvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQUxJR05NRU5UXyA6IGludCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0ZMSVBfWV9XRUJHTF8gOiBib29sIHQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTF8gOiBib29sIHQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xfIDogaW50IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqIDUuMTQgV2ViR0xDb250ZXh0RXZlbnQgKilcblxuY2xhc3MgdHlwZSBjb250ZXh0RXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFxuXG4gIG1ldGhvZCBzdGF0dXNNZXNzYWdlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBsZXQgd2ViZ2xjb250ZXh0bG9zdCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRsb3N0XCJcblxuICBsZXQgd2ViZ2xjb250ZXh0cmVzdG9yZWQgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0cmVzdG9yZWRcIlxuXG4gIGxldCB3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JcIlxuZW5kXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIGNhbnZhc0VsZW1lbnQgPSBvYmplY3RcbiAgbWV0aG9kIGdldENvbnRleHQgOiBqc19zdHJpbmcgdCAtPiByZW5kZXJpbmdDb250ZXh0IHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29udGV4dF8gOiBqc19zdHJpbmcgdCAtPiBjb250ZXh0QXR0cmlidXRlcyB0IC0+IHJlbmRlcmluZ0NvbnRleHQgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBnZXRDb250ZXh0IChjIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0KSA9XG4gIGxldCBjIDogY2FudmFzRWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZSBjIGluXG4gIGxldCBjdHggPSBjIyNnZXRDb250ZXh0IChKcy5zdHJpbmcgXCJ3ZWJnbFwiKSBpblxuICBpZiBPcHQudGVzdCBjdHggdGhlbiBjdHggZWxzZSBjICMjIChnZXRDb250ZXh0IChKcy5zdHJpbmcgXCJleHBlcmltZW50YWwtd2ViZ2xcIikpXG5cbmxldCBnZXRDb250ZXh0V2l0aEF0dHJpYnV0ZXMgKGMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQpIGF0dHJpYnMgPVxuICBsZXQgYyA6IGNhbnZhc0VsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2UgYyBpblxuICBsZXQgY3R4ID0gYyMjZ2V0Q29udGV4dF8gKEpzLnN0cmluZyBcIndlYmdsXCIpIGF0dHJpYnMgaW5cbiAgaWYgT3B0LnRlc3QgY3R4IHRoZW4gY3R4IGVsc2UgYyMjZ2V0Q29udGV4dF8gKEpzLnN0cmluZyBcImV4cGVyaW1lbnRhbC13ZWJnbFwiKSBhdHRyaWJzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdCwgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVnZXhwID0gSnMucmVnRXhwIEpzLnRcblxudHlwZSByZXN1bHQgPSBKcy5tYXRjaF9yZXN1bHQgSnMudFxuXG5sZXQgcmVnZXhwIHMgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgcmVnZXhwX2Nhc2VfZm9sZCBzID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyBcImdpXCIpXG5cbmxldCByZWdleHBfd2l0aF9mbGFnIHMgZiA9XG4gIG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgKFwiZ1wiIF4gZikpXG5cbmxldCBibHVudF9zdHJfYXJyYXlfZ2V0IGEgaSA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCBhIGkpIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcblxubGV0IHN0cmluZ19tYXRjaCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gaTtcbiAgSnMuT3B0LnRvX29wdGlvbiAoSnMuT3B0Lm1hcCAociMjZXhlYyAoSnMuYnl0ZXN0cmluZyBzKSkgSnMubWF0Y2hfcmVzdWx0KVxuXG5sZXQgc2VhcmNoIHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSBpO1xuICBKcy5PcHQudG9fb3B0aW9uXG4gICAgKEpzLk9wdC5tYXBcbiAgICAgICAociMjZXhlYyAoSnMuYnl0ZXN0cmluZyBzKSlcbiAgICAgICAoZnVuIHJlc19wcmUgLT5cbiAgICAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgcmVzX3ByZSBpblxuICAgICAgICAgcmVzIyMuaW5kZXgsIHJlcykpXG5cbmxldCBzZWFyY2hfZm9yd2FyZCA9IHNlYXJjaFxuXG5sZXQgbWF0Y2hlZF9zdHJpbmcgciA9IGJsdW50X3N0cl9hcnJheV9nZXQgciAwXG5cbmxldCBtYXRjaGVkX2dyb3VwIHIgaSA9XG4gIEpzLk9wdGRlZi50b19vcHRpb24gKEpzLk9wdGRlZi5tYXAgKEpzLmFycmF5X2dldCByIGkpIEpzLnRvX2J5dGVzdHJpbmcpXG5cbmxldCBxdW90ZV9yZXBsX3JlID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLnN0cmluZyBcIlskXVwiKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgcXVvdGVfcmVwbCBzID0gKEpzLmJ5dGVzdHJpbmcgcykjI3JlcGxhY2UgcXVvdGVfcmVwbF9yZSAoSnMuc3RyaW5nIFwiJCQkJFwiKVxuXG5sZXQgZ2xvYmFsX3JlcGxhY2UgciBzIHNfYnkgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgciAocXVvdGVfcmVwbCBzX2J5KSlcblxubGV0IHJlcGxhY2VfZmlyc3QgciBzIHNfYnkgPVxuICBsZXQgZmxhZ3MgPVxuICAgIG1hdGNoIEpzLnRvX2Jvb2wgciMjLmlnbm9yZUNhc2UsIEpzLnRvX2Jvb2wgciMjLm11bHRpbGluZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gSnMuc3RyaW5nIFwiXCJcbiAgICB8IGZhbHNlLCB0cnVlIC0+IEpzLnN0cmluZyBcIm1cIlxuICAgIHwgdHJ1ZSwgZmFsc2UgLT4gSnMuc3RyaW5nIFwiaVwiXG4gICAgfCB0cnVlLCB0cnVlIC0+IEpzLnN0cmluZyBcIm1pXCJcbiAgaW5cbiAgbGV0IHInID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgciMjLnNvdXJjZSBmbGFncyBpblxuICBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHInIChxdW90ZV9yZXBsIHNfYnkpKVxuXG5sZXQgbGlzdF9vZl9qc19hcnJheSBhID1cbiAgbGV0IHJlYyBhdXggYWNjdSBpZHggPVxuICAgIGlmIGlkeCA8IDAgdGhlbiBhY2N1IGVsc2UgYXV4IChibHVudF9zdHJfYXJyYXlfZ2V0IGEgaWR4IDo6IGFjY3UpIChpZHggLSAxKVxuICBpblxuICBhdXggW10gKGEjIy5sZW5ndGggLSAxKVxuXG5sZXQgc3BsaXQgciBzID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBsaXN0X29mX2pzX2FycmF5IChKcy5zdHJfYXJyYXkgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHNwbGl0X3JlZ0V4cCByKSlcblxubGV0IGJvdW5kZWRfc3BsaXQgciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIGxpc3Rfb2ZfanNfYXJyYXkgKEpzLnN0cl9hcnJheSAoSnMuYnl0ZXN0cmluZyBzKSAjIyAoc3BsaXRfcmVnRXhwTGltaXRlZCByIGkpKVxuXG4oKiBNb3JlIGNvbnN0cnVjdG9ycyAqKVxuXG5sZXQgcXVvdGVfcmUgPSByZWdleHAgXCJbXFxcXF1bKClcXFxcXFxcXHwrKi4/e31eJF1cIlxuXG5sZXQgcXVvdGUgcyA9IEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgcXVvdGVfcmUgKEpzLnN0cmluZyBcIlxcXFwkJlwiKSlcblxubGV0IHJlZ2V4cF9zdHJpbmcgcyA9IHJlZ2V4cCAocXVvdGUgcylcblxubGV0IHJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIHMgPSByZWdleHBfY2FzZV9mb2xkIChxdW90ZSBzKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3RcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbigqIFVybCB0YW1wZXJpbmcuICopXG5cbmxldCBzcGxpdCBjIHMgPSBKcy5zdHJfYXJyYXkgKHMjI3NwbGl0IChKcy5zdHJpbmcgKFN0cmluZy5tYWtlIDEgYykpKVxuXG5sZXQgc3BsaXRfMiBjIHMgPVxuICBsZXQgaW5kZXggPSBzIyNpbmRleE9mIChKcy5zdHJpbmcgKFN0cmluZy5tYWtlIDEgYykpIGluXG4gIGlmIGluZGV4IDwgMCB0aGVuIEpzLnVuZGVmaW5lZCBlbHNlIEpzLmRlZiAocyMjc2xpY2UgMCBpbmRleCwgcyMjc2xpY2VfZW5kIChpbmRleCArIDEpKVxuXG5leGNlcHRpb24gTG9jYWxfZXhuXG5cbmxldCBpbnRlcnJ1cHQgKCkgPSByYWlzZSBMb2NhbF9leG5cblxuKCogdXJsIChBS0EgcGVyY2VudCkgZW5jb2RpbmcvZGVjb2RpbmcgKilcblxubGV0IHBsdXNfcmUgPSBSZWdleHAucmVnZXhwX3N0cmluZyBcIitcIlxuXG5sZXQgZXNjYXBlX3BsdXMgcyA9IFJlZ2V4cC5nbG9iYWxfcmVwbGFjZSBwbHVzX3JlIHMgXCIlMkJcIlxuXG5sZXQgdW5lc2NhcGVfcGx1cyBzID0gUmVnZXhwLmdsb2JhbF9yZXBsYWNlIHBsdXNfcmUgcyBcIiBcIlxuXG5sZXQgcGx1c19yZV9qc19zdHJpbmcgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuc3RyaW5nIFwiXFxcXCtcIikgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHVuZXNjYXBlX3BsdXNfanNfc3RyaW5nIHMgPVxuICBwbHVzX3JlX2pzX3N0cmluZyMjLmxhc3RJbmRleCA6PSAwO1xuICBzIyNyZXBsYWNlIHBsdXNfcmVfanNfc3RyaW5nIChKcy5zdHJpbmcgXCIgXCIpXG5cbmxldCB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBzID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMudW5lc2NhcGUgKHVuZXNjYXBlX3BsdXNfanNfc3RyaW5nIHMpKVxuXG5sZXQgdXJsZGVjb2RlIHMgPSBKcy50b19ieXRlc3RyaW5nIChKcy51bmVzY2FwZSAoSnMuYnl0ZXN0cmluZyAodW5lc2NhcGVfcGx1cyBzKSkpXG5cbigqbGV0IHVybGVuY29kZV9qc19zdHJpbmdfc3RyaW5nIHMgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgcykqKVxuXG5sZXQgdXJsZW5jb2RlID8od2l0aF9wbHVzID0gdHJ1ZSkgcyA9XG4gIGlmIHdpdGhfcGx1c1xuICB0aGVuIGVzY2FwZV9wbHVzIChKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgcykpKVxuICBlbHNlIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSAoSnMuYnl0ZXN0cmluZyBzKSlcblxudHlwZSBodHRwX3VybCA9XG4gIHsgaHVfaG9zdCA6IHN0cmluZyAgKCoqIFRoZSBob3N0IHBhcnQgb2YgdGhlIHVybC4gKilcbiAgOyBodV9wb3J0IDogaW50ICAoKiogVGhlIHBvcnQgZm9yIHRoZSBjb25uZWN0aW9uIGlmIGFueS4gKilcbiAgOyBodV9wYXRoIDogc3RyaW5nIGxpc3QgICgqKiBUaGUgcGF0aCBzcGxpdCBvbiBbJy8nXSBjaGFyYWN0ZXJzLiAqKVxuICA7IGh1X3BhdGhfc3RyaW5nIDogc3RyaW5nICAoKiogVGhlIG9yaWdpbmFsIGVudGlyZSBwYXRoLiAqKVxuICA7IGh1X2FyZ3VtZW50cyA6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbiAgICAgICAgKCoqIEFyZ3VtZW50cyBhcyBhIGZpZWxkLXZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGlvbiBsaXN0LiopXG4gIDsgaHVfZnJhZ21lbnQgOiBzdHJpbmcgICgqKiBUaGUgZnJhZ21lbnQgcGFydCAoYWZ0ZXIgdGhlIFsnIyddIGNoYXJhY3RlcikuICopXG4gIH1cbigqKiBUaGUgdHlwZSBmb3IgSFRUUCB1cmwuICopXG5cbnR5cGUgZmlsZV91cmwgPVxuICB7IGZ1X3BhdGggOiBzdHJpbmcgbGlzdFxuICA7IGZ1X3BhdGhfc3RyaW5nIDogc3RyaW5nXG4gIDsgZnVfYXJndW1lbnRzIDogKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICA7IGZ1X2ZyYWdtZW50IDogc3RyaW5nXG4gIH1cbigqKiBUaGUgdHlwZSBmb3IgbG9jYWwgZmlsZSB1cmxzLiAqKVxuXG50eXBlIHVybCA9XG4gIHwgSHR0cCBvZiBodHRwX3VybFxuICB8IEh0dHBzIG9mIGh0dHBfdXJsXG4gIHwgRmlsZSBvZiBmaWxlX3VybFxuICAgICAgKCoqIFRoZSB0eXBlIGZvciB1cmxzLiBbRmlsZV0gaXMgZm9yIGxvY2FsIGZpbGVzIGFuZCBbRXhvdGljIHNdIGlzIGZvclxuICAgIHVua25vd24vdW5zdXBwb3J0ZWQgcHJvdG9jb2xzLiAqKVxuXG5leGNlcHRpb24gTm90X2FuX2h0dHBfcHJvdG9jb2xcblxubGV0IGlzX3NlY3VyZSBwcm90X3N0cmluZyA9XG4gIG1hdGNoIEpzLnRvX2J5dGVzdHJpbmcgcHJvdF9zdHJpbmcjI3RvTG93ZXJDYXNlIHdpdGhcbiAgfCBcImh0dHBzOlwiIHwgXCJodHRwc1wiIC0+IHRydWVcbiAgfCBcImh0dHA6XCIgfCBcImh0dHBcIiAtPiBmYWxzZVxuICB8IFwiZmlsZTpcIiB8IFwiZmlsZVwiIHwgXyAtPiByYWlzZSBOb3RfYW5faHR0cF9wcm90b2NvbFxuXG4oKiBwb3J0IG51bWJlciAqKVxubGV0IGRlZmF1bHRfaHR0cF9wb3J0ID0gODBcblxubGV0IGRlZmF1bHRfaHR0cHNfcG9ydCA9IDQ0M1xuXG4oKiBwYXRoICopXG5sZXQgcGF0aF9vZl9wYXRoX3N0cmluZyBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgbGV0IGogPSB0cnkgU3RyaW5nLmluZGV4X2Zyb20gcyBpICcvJyB3aXRoIE5vdF9mb3VuZCAtPiBsIGluXG4gICAgbGV0IHdvcmQgPSBTdHJpbmcuc3ViIHMgaSAoaiAtIGkpIGluXG4gICAgaWYgaiA+PSBsIHRoZW4gWyB3b3JkIF0gZWxzZSB3b3JkIDo6IGF1eCAoaiArIDEpXG4gIGluXG4gIG1hdGNoIGF1eCAwIHdpdGhcbiAgfCBbIFwiXCIgXSAtPiBbXVxuICB8IFsgXCJcIjsgXCJcIiBdIC0+IFsgXCJcIiBdXG4gIHwgYSAtPiBhXG5cbigqIEFyZ3VtZW50cyAqKVxubGV0IGVuY29kZV9hcmd1bWVudHMgbCA9XG4gIFN0cmluZy5jb25jYXQgXCImXCIgKExpc3QubWFwIChmdW4gKG4sIHYpIC0+IHVybGVuY29kZSBuIF4gXCI9XCIgXiB1cmxlbmNvZGUgdikgbClcblxubGV0IGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIHMgPVxuICBsZXQgYXJyID0gc3BsaXQgJyYnIHMgaW5cbiAgbGV0IGxlbiA9IGFyciMjLmxlbmd0aCBpblxuICBsZXQgbmFtZV92YWx1ZV9zcGxpdCBzID0gc3BsaXRfMiAnPScgcyBpblxuICBsZXQgcmVjIGF1eCBhY2MgaWR4ID1cbiAgICBpZiBpZHggPCAwXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgYXV4XG4gICAgICAgICAgKEpzLk9wdGRlZi5jYXNlIChKcy5hcnJheV9nZXQgYXJyIGlkeCkgaW50ZXJydXB0IChmdW4gcyAtPlxuICAgICAgICAgICAgICAgSnMuT3B0ZGVmLmNhc2UgKG5hbWVfdmFsdWVfc3BsaXQgcykgaW50ZXJydXB0IChmdW4gKHgsIHkpIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGdldCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGluXG4gICAgICAgICAgICAgICAgICAgZ2V0IHgsIGdldCB5KSlcbiAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgKHByZWQgaWR4KVxuICAgICAgd2l0aCBMb2NhbF9leG4gLT4gYXV4IGFjYyAocHJlZCBpZHgpXG4gIGluXG4gIGF1eCBbXSAobGVuIC0gMSlcblxubGV0IGRlY29kZV9hcmd1bWVudHMgcyA9IGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpXG5cbmxldCB1cmxfcmUgPVxuICBuZXclanMgSnMucmVnRXhwXG4gICAgKEpzLmJ5dGVzdHJpbmdcbiAgICAgICBcIl4oW0hoXVtUdF1bVHRdW1BwXVtTc10/KTovLyhbMC05YS16QS1aLi1dK3xcXFxcW1swLTlhLXpBLVouLV0rXFxcXF18XFxcXFtbMC05QS1GYS1mOi5dK1xcXFxdKT8oOihbMC05XSspKT8oLyhbXlxcXFw/I10qKShcXFxcPyhbXiNdKikpPygjKC4qKSk/KT8kXCIpXG5cbmxldCBmaWxlX3JlID1cbiAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgIChKcy5ieXRlc3RyaW5nIFwiXihbRmZdW0lpXVtMbF1bRWVdKTovLyhbXlxcXFw/I10qKShcXFxcPyhbXiNdKikpPygjKC4qKSk/JFwiKVxuXG5sZXQgdXJsX29mX2pzX3N0cmluZyBzID1cbiAgSnMuT3B0LmNhc2VcbiAgICAodXJsX3JlIyNleGVjIHMpXG4gICAgKGZ1biAoKSAtPlxuICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgKGZpbGVfcmUjI2V4ZWMgcylcbiAgICAgICAgKGZ1biAoKSAtPiBOb25lKVxuICAgICAgICAoZnVuIGhhbmRsZSAtPlxuICAgICAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgaGFuZGxlIGluXG4gICAgICAgICAgbGV0IHBhdGhfc3RyID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDIpIGludGVycnVwdClcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChGaWxlXG4gICAgICAgICAgICAgICB7IGZ1X3BhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyXG4gICAgICAgICAgICAgICA7IGZ1X3BhdGhfc3RyaW5nID0gcGF0aF9zdHJcbiAgICAgICAgICAgICAgIDsgZnVfYXJndW1lbnRzID1cbiAgICAgICAgICAgICAgICAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICAgICAgICAgOyBmdV9mcmFnbWVudCA9XG4gICAgICAgICAgICAgICAgICAgSnMudG9fYnl0ZXN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNikgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICAgICAgICAgfSkpKVxuICAgIChmdW4gaGFuZGxlIC0+XG4gICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IGhhbmRsZSBpblxuICAgICAgbGV0IHNzbCA9IGlzX3NlY3VyZSAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAxKSBpbnRlcnJ1cHQpIGluXG4gICAgICBsZXQgcG9ydF9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgICAgICB8IFwiXCIgLT4gaWYgc3NsIHRoZW4gNDQzIGVsc2UgODBcbiAgICAgICAgfCBzIC0+IGludF9vZl9zdHJpbmcgc1xuICAgICAgaW5cbiAgICAgIGxldCBwYXRoX3N0ciA9XG4gICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nXG4gICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNikgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgaW5cbiAgICAgIGxldCB1cmwgPVxuICAgICAgICB7IGh1X2hvc3QgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMikgaW50ZXJydXB0KVxuICAgICAgICA7IGh1X3BvcnQgPVxuICAgICAgICAgICAgcG9ydF9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLnRvX2J5dGVzdHJpbmdcbiAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKSlcbiAgICAgICAgOyBodV9wYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0clxuICAgICAgICA7IGh1X3BhdGhfc3RyaW5nID0gcGF0aF9zdHJcbiAgICAgICAgOyBodV9hcmd1bWVudHMgPVxuICAgICAgICAgICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgOCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICA7IGh1X2ZyYWdtZW50ID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDEwKSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBTb21lIChpZiBzc2wgdGhlbiBIdHRwcyB1cmwgZWxzZSBIdHRwIHVybCkpXG5cbmxldCB1cmxfb2Zfc3RyaW5nIHMgPSB1cmxfb2ZfanNfc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpXG5cbmxldCBzdHJpbmdfb2ZfdXJsID0gZnVuY3Rpb25cbiAgfCBGaWxlIHsgZnVfcGF0aCA9IHBhdGg7IGZ1X2FyZ3VtZW50cyA9IGFyZ3M7IGZ1X2ZyYWdtZW50ID0gZnJhZzsgXyB9IC0+IChcbiAgICAgIFwiZmlsZTovL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG4gIHwgSHR0cFxuICAgICAgeyBodV9ob3N0ID0gaG9zdFxuICAgICAgOyBodV9wb3J0ID0gcG9ydFxuICAgICAgOyBodV9wYXRoID0gcGF0aFxuICAgICAgOyBodV9hcmd1bWVudHMgPSBhcmdzXG4gICAgICA7IGh1X2ZyYWdtZW50ID0gZnJhZ1xuICAgICAgOyBfXG4gICAgICB9IC0+IChcbiAgICAgIFwiaHR0cDovL1wiXG4gICAgICBeIHVybGVuY29kZSBob3N0XG4gICAgICBeIChtYXRjaCBwb3J0IHdpdGhcbiAgICAgICAgfCA4MCAtPiBcIlwiXG4gICAgICAgIHwgbiAtPiBcIjpcIiBeIHN0cmluZ19vZl9pbnQgbilcbiAgICAgIF4gXCIvXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcbiAgfCBIdHRwc1xuICAgICAgeyBodV9ob3N0ID0gaG9zdFxuICAgICAgOyBodV9wb3J0ID0gcG9ydFxuICAgICAgOyBodV9wYXRoID0gcGF0aFxuICAgICAgOyBodV9hcmd1bWVudHMgPSBhcmdzXG4gICAgICA7IGh1X2ZyYWdtZW50ID0gZnJhZ1xuICAgICAgOyBfXG4gICAgICB9IC0+IChcbiAgICAgIFwiaHR0cHM6Ly9cIlxuICAgICAgXiB1cmxlbmNvZGUgaG9zdFxuICAgICAgXiAobWF0Y2ggcG9ydCB3aXRoXG4gICAgICAgIHwgNDQzIC0+IFwiXCJcbiAgICAgICAgfCBuIC0+IFwiOlwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgXiBcIi9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuXG5tb2R1bGUgQ3VycmVudCA9IHN0cnVjdFxuICBsZXQgbCA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLk9wdGRlZi5yZXR1cm4gRG9tX2h0bWwud2luZG93IyMubG9jYXRpb24pXG4gICAgdGhlbiBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvblxuICAgIGVsc2VcbiAgICAgIGxldCBlbXB0eSA9IEpzLnN0cmluZyBcIlwiIGluXG4gICAgICBvYmplY3QlanNcbiAgICAgICAgdmFsIG11dGFibGUgaHJlZiA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcHJvdG9jb2wgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhvc3QgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhvc3RuYW1lID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwb3J0ID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwYXRobmFtZSA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgc2VhcmNoID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBoYXNoID0gZW1wdHlcblxuICAgICAgICB2YWwgb3JpZ2luID0gSnMudW5kZWZpbmVkXG5cbiAgICAgICAgbWV0aG9kIHJlbG9hZCA9ICgpXG5cbiAgICAgICAgbWV0aG9kIHJlcGxhY2UgXyA9ICgpXG5cbiAgICAgICAgbWV0aG9kIGFzc2lnbiBfID0gKClcbiAgICAgIGVuZFxuXG4gIGxldCBob3N0ID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLmhvc3RuYW1lXG5cbiAgbGV0IHByb3RvY29sID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLnByb3RvY29sXG5cbiAgbGV0IHBvcnQgPVxuICAgIChmdW4gKCkgLT5cbiAgICAgIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIChKcy50b19ieXRlc3RyaW5nIGwjIy5wb3J0KSkgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZSlcbiAgICAgICgpXG5cbiAgbGV0IHBhdGhfc3RyaW5nID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLnBhdGhuYW1lXG5cbiAgbGV0IHBhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyaW5nXG5cbiAgbGV0IGFyZ3VtZW50cyA9XG4gICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgIChpZiBKcy5lcXVhbHMgKGwjIy5zZWFyY2gjI2NoYXJBdCAwKSAoSnMuc3RyaW5nIFwiP1wiKVxuICAgICAgIHRoZW4gbCMjLnNlYXJjaCMjc2xpY2VfZW5kIDFcbiAgICAgICBlbHNlIGwjIy5zZWFyY2gpXG5cbiAgbGV0IGdldF9mcmFnbWVudCAoKSA9XG4gICAgbGV0IHMgPSBKcy50b19ieXRlc3RyaW5nIGwjIy5oYXNoIGluXG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzID4gMCAmJiBDaGFyLmVxdWFsIHMuWzBdICcjJ1xuICAgIHRoZW4gU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgZWxzZSBzXG5cbiAgbGV0IHNldF9mcmFnbWVudCBzID0gbCMjLmhhc2ggOj0gSnMuYnl0ZXN0cmluZyBzXG5cbiAgbGV0IGdldCAoKSA9IHVybF9vZl9qc19zdHJpbmcgbCMjLmhyZWZcblxuICBsZXQgc2V0IHUgPSBsIyMuaHJlZiA6PSBKcy5ieXRlc3RyaW5nIChzdHJpbmdfb2ZfdXJsIHUpXG5cbiAgbGV0IGFzX3N0cmluZyA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5ocmVmXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuZXh0ZXJuYWwgY3JlYXRlX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBjb250ZW50OnN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2NyZWF0ZV9maWxlXCJcblxuZXh0ZXJuYWwgcmVhZF9maWxlIDogbmFtZTpzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3JlYWRfZmlsZV9jb250ZW50XCJcblxubGV0IHVwZGF0ZV9maWxlIH5uYW1lIH5jb250ZW50ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgbmFtZSBpblxuICBvdXRwdXRfc3RyaW5nIG9jIGNvbnRlbnQ7XG4gIGNsb3NlX291dCBvY1xuXG5leHRlcm5hbCBzZXRfY2hhbm5lbF9vdXRwdXQnIDpcbiAgb3V0X2NoYW5uZWwgLT4gKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgc2V0X2NoYW5uZWxfaW5wdXQnIDogaW5fY2hhbm5lbCAtPiAodW5pdCAtPiBzdHJpbmcpIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXCJcblxubGV0IHNldF9jaGFubmVsX2ZsdXNoZXIgKG91dF9jaGFubmVsIDogb3V0X2NoYW5uZWwpIChmIDogc3RyaW5nIC0+IHVuaXQpID1cbiAgbGV0IGYnIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrID1cbiAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gcyAtPiBmIChKcy50b19ieXRlc3RyaW5nIHMpKVxuICBpblxuICBzZXRfY2hhbm5lbF9vdXRwdXQnIG91dF9jaGFubmVsIGYnXG5cbmxldCBzZXRfY2hhbm5lbF9maWxsZXIgKGluX2NoYW5uZWwgOiBpbl9jaGFubmVsKSAoZiA6IHVuaXQgLT4gc3RyaW5nKSA9XG4gIGxldCBmJyA6ICh1bml0IC0+IHN0cmluZykgSnMuY2FsbGJhY2sgPSBKcy53cmFwX2NhbGxiYWNrIGYgaW5cbiAgc2V0X2NoYW5uZWxfaW5wdXQnIGluX2NoYW5uZWwgZidcblxuZXh0ZXJuYWwgbW91bnRfcG9pbnQgOiB1bml0IC0+IHN0cmluZyBsaXN0ID0gXCJjYW1sX2xpc3RfbW91bnRfcG9pbnRcIlxuXG5leHRlcm5hbCBtb3VudF9hdXRvbG9hZCA6XG4gIHN0cmluZyAtPiAoc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21vdW50X2F1dG9sb2FkXCJcblxuZXh0ZXJuYWwgdW5tb3VudCA6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3VubW91bnRcIlxuXG5sZXQgbW91bnQgfnBhdGggZiA9XG4gIG1vdW50X2F1dG9sb2FkIHBhdGggKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBwcmVmaXggcGF0aCAtPiBmIH5wcmVmaXggfnBhdGgpKVxuXG5sZXQgdW5tb3VudCB+cGF0aCA9IHVubW91bnQgcGF0aFxuXG5sZXQganNfb2Zfb2NhbWxfdmVyc2lvbiA9XG4gIGlmIFN0cmluZy5lcXVhbCBMaWJfdmVyc2lvbi5naXRfdmVyc2lvbiBcIlwiXG4gIHRoZW4gTGliX3ZlcnNpb24uc1xuICBlbHNlIExpYl92ZXJzaW9uLnMgXiBcIitcIiBeIExpYl92ZXJzaW9uLmdpdF92ZXJzaW9uXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE5IEFsZXhhbmRlciBZYW5pblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJTaXplID0gb2JqZWN0XG4gIG1ldGhvZCBpbmxpbmVTaXplIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBibG9ja1NpemUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlckVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3hTaXplIDogcmVzaXplT2JzZXJ2ZXJTaXplIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRCb3hTaXplIDogcmVzaXplT2JzZXJ2ZXJTaXplIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlck9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGJveCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvYnNlcnZlX3dpdGhPcHRpb25zIDpcbiAgICAjRG9tLm5vZGUgSnMudCAtPiByZXNpemVPYnNlcnZlck9wdGlvbnMgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdW5vYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMgKCkgOiByZXNpemVPYnNlcnZlck9wdGlvbnMgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgcmVzaXplT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1Jlc2l6ZU9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCByZXNpemVPYnNlcnZlclxuXG5sZXQgcmVzaXplT2JzZXJ2ZXIgOlxuICAgICggICAocmVzaXplT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgICAgICBKcy5jYWxsYmFja1xuICAgICAtPiByZXNpemVPYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIHJlc2l6ZU9ic2VydmVyXG5cbmxldCBvYnNlcnZlXG4gICAgfihub2RlIDogI0RvbS5ub2RlIEpzLnQpXG4gICAgfihmIDogcmVzaXplT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgID8oYm94IDogSnMuanNfc3RyaW5nIEpzLnQgb3B0aW9uKVxuICAgICgpIDogcmVzaXplT2JzZXJ2ZXIgSnMudCA9XG4gIGxldCBvYnMgPSBuZXclanMgcmVzaXplT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgKG1hdGNoIGJveCB3aXRoXG4gIHwgTm9uZSAtPiBvYnMjI29ic2VydmUgbm9kZVxuICB8IFNvbWUgYm94IC0+XG4gICAgICBsZXQgb3B0cyA9IGVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zICgpIGluXG4gICAgICBvcHRzIyMuYm94IDo9IGJveDtcbiAgICAgIG9icyMjb2JzZXJ2ZV93aXRoT3B0aW9ucyBub2RlIG9wdHMpO1xuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjEgUGhpbGlwIFdoaXRlXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0ID0gb2JqZWN0XG4gIG1ldGhvZCBlbnRyeVR5cGVzIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW50cnlUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydFRpbWUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR1cmF0aW9uIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdCA9IG9iamVjdFxuICBtZXRob2QgZ2V0RW50cmllcyA6IHBlcmZvcm1hbmNlRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogcGVyZm9ybWFuY2VFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBwZXJmb3JtYW5jZU9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9QZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBwZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBwZXJmb3JtYW5jZU9ic2VydmVyIDpcbiAgICAoICAgKHBlcmZvcm1hbmNlT2JzZXJ2ZXJFbnRyeUxpc3QgSnMudCAtPiBwZXJmb3JtYW5jZU9ic2VydmVyIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgLT4gcGVyZm9ybWFuY2VPYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIHBlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IG9ic2VydmUgfmVudHJ5X3R5cGVzIH5mID1cbiAgbGV0IGVudHJ5X3R5cGVzID0gZW50cnlfdHlwZXMgfD4gTGlzdC5tYXAgSnMuc3RyaW5nIHw+IEFycmF5Lm9mX2xpc3QgfD4gSnMuYXJyYXkgaW5cbiAgbGV0IHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQgOiBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gIGxldCAoKSA9IHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQjIy5lbnRyeVR5cGVzIDo9IGVudHJ5X3R5cGVzIGluXG4gIGxldCBvYnMgPSBuZXclanMgcGVyZm9ybWFuY2VPYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICBsZXQgKCkgPSBvYnMjI29ic2VydmUgcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCBpblxuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uT2JzZXJ2ZXJJbml0ID0gb2JqZWN0XG4gIG1ldGhvZCBjaGlsZExpc3QgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJhY3RlckRhdGEgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1YnRyZWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU9sZFZhbHVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyYWN0ZXJEYXRhT2xkVmFsdWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZUZpbHRlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uUmVjb3JkID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFkZGVkTm9kZXMgOiBEb20ubm9kZSBEb20ubm9kZUxpc3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlbW92ZWROb2RlcyA6IERvbS5ub2RlIERvbS5ub2RlTGlzdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU5hbWVzcGFjZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9sZFZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVySW5pdCBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogbXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCAoKSA6IG11dGF0aW9uT2JzZXJ2ZXJJbml0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IG11dGF0aW9uT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX011dGF0aW9uT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IG11dGF0aW9uT2JzZXJ2ZXJcblxubGV0IG11dGF0aW9uT2JzZXJ2ZXIgOlxuICAgICggICAobXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgbXV0YXRpb25PYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZVxuICAgIH4obm9kZSA6ICNEb20ubm9kZSBKcy50KVxuICAgIH4oZiA6IG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICA/KGNoaWxkX2xpc3QgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZXMgOiBib29sIG9wdGlvbilcbiAgICA/KGNoYXJhY3Rlcl9kYXRhIDogYm9vbCBvcHRpb24pXG4gICAgPyhzdWJ0cmVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVfb2xkX3ZhbHVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZV9maWx0ZXIgOiBKcy5qc19zdHJpbmcgSnMudCBsaXN0IG9wdGlvbilcbiAgICAoKSA6IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCA9XG4gIGxldCBvcHRfaXRlciB4IGYgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICBpblxuICBsZXQgb2JzID0gbmV3JWpzIG11dGF0aW9uT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgbGV0IGNmZyA9IGVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQgKCkgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgY2hpbGRfbGlzdCAoZnVuIHYgLT4gY2ZnIyMuY2hpbGRMaXN0IDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGF0dHJpYnV0ZXMgKGZ1biB2IC0+IGNmZyMjLmF0dHJpYnV0ZXMgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgY2hhcmFjdGVyX2RhdGEgKGZ1biB2IC0+IGNmZyMjLmNoYXJhY3RlckRhdGEgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgc3VidHJlZSAoZnVuIHYgLT4gY2ZnIyMuc3VidHJlZSA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBhdHRyaWJ1dGVfb2xkX3ZhbHVlIChmdW4gdiAtPiBjZmcjIy5hdHRyaWJ1dGVPbGRWYWx1ZSA6PSB2KSBpblxuICBsZXQgKCkgPVxuICAgIG9wdF9pdGVyIGNoYXJhY3Rlcl9kYXRhX29sZF92YWx1ZSAoZnVuIHYgLT4gY2ZnIyMuY2hhcmFjdGVyRGF0YU9sZFZhbHVlIDo9IHYpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgb3B0X2l0ZXIgYXR0cmlidXRlX2ZpbHRlciAoZnVuIGwgLT5cbiAgICAgICAgY2ZnIyMuYXR0cmlidXRlRmlsdGVyIDo9IEpzLmFycmF5IChBcnJheS5vZl9saXN0IGwpKVxuICBpblxuICBsZXQgKCkgPSBvYnMjI29ic2VydmUgbm9kZSBjZmcgaW5cbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IFBpZXJyZSBDaGFtYmFydCAyMDEyLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9IDwgPiBKcy50XG5cbmxldCBvYmogPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxuXG5sZXQgY3JlYXRlICgpIDogJ2EgdCA9IG5ldyVqcyBvYmpcblxubGV0IGFkZCAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpICh2IDogJ2EpID1cbiAgKCogJ18nIGlzIGFkZGVkIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG9iamVjdHMgbWV0aG9kcyAqKVxuICBKcy5VbnNhZmUuc2V0IHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSkgdlxuXG5sZXQgcmVtb3ZlICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgPVxuICBKcy5VbnNhZmUuZGVsZXRlIHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSlcblxubGV0IGZpbmQgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSA6ICdhIEpzLk9wdGRlZi50ID1cbiAgSnMuVW5zYWZlLmdldCB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpXG5cbmxldCBrZXlzICh0IDogJ2EgdCkgOiBKcy5qc19zdHJpbmcgSnMudCBsaXN0ID1cbiAgbGV0IGtleV9hcnJheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgPVxuICAgIEpzLlVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0IyNrZXlzIHRcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZiBbXSBpblxuICBmb3IgaSA9IDAgdG8gcHJlZCBrZXlfYXJyYXkjIy5sZW5ndGggZG9cbiAgICBsZXQga2V5ID1cbiAgICAgIEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCBrZXlfYXJyYXkgaSkgKGZ1biAoKSAtPiBmYWlsd2l0aCBcIkpzdGFibGUua2V5c1wiKVxuICAgIGluXG4gICAgcmVzIDo9IGtleSMjc3Vic3RyaW5nIDAgKHByZWQga2V5IyMubGVuZ3RoKSA6OiAhcmVzXG4gIGRvbmU7XG4gIExpc3QucmV2ICFyZXNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgR3LDqWdvaXJlIEhlbnJ5IDIwMTAuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGpzb24gPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDogJ2EuIGpzX3N0cmluZyB0IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcGFyc2VfIDpcbiAgICAnYSAnYiAnYyAnZC4ganNfc3RyaW5nIHQgLT4gKCdiIHQsIGpzX3N0cmluZyB0IC0+ICdjIC0+ICdkKSBtZXRoX2NhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5IDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5XyA6XG4gICAgJ2EgJ2IgJ2MgJ2QuICdhIC0+ICgnYiwganNfc3RyaW5nIHQgLT4gJ2MgLT4gJ2QpIG1ldGhfY2FsbGJhY2sgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBqc29uIDoganNvbiBKcy50ID0gVW5zYWZlLmdsb2JhbCMjLl9KU09OXG5cbmxldCBpbnB1dF9yZXZpdmVyID1cbiAgbGV0IHJldml2ZXIgX3RoaXMgX2tleSAodmFsdWUgOiBVbnNhZmUuYW55KSA6IE9iai50ID1cbiAgICBpZiBKcy5lcXVhbHMgKHR5cGVvZiB2YWx1ZSkgKHN0cmluZyBcInN0cmluZ1wiKVxuICAgIHRoZW4gT2JqLnJlcHIgKHRvX2J5dGVzdHJpbmcgKFVuc2FmZS5jb2VyY2UgdmFsdWUpKVxuICAgIGVsc2UgaWYgaW5zdGFuY2VvZiB2YWx1ZSBKcy5hcnJheV9lbXB0eVxuICAgICAgICAgICAgJiYgKFVuc2FmZS5jb2VyY2UgdmFsdWUpIyMubGVuZ3RoID09IDRcbiAgICAgICAgICAgICYmIFVuc2FmZS5nZXQgdmFsdWUgMCA9PSAyNTVcbiAgICB0aGVuXG4gICAgICBPYmoucmVwclxuICAgICAgICAoSnNvb19ydW50aW1lLkludDY0LmNyZWF0ZV9pbnQ2NF9sb19taV9oaVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAxKVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAyKVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAzKSlcbiAgICBlbHNlIE9iai5yZXByIHZhbHVlXG4gIGluXG4gIHdyYXBfbWV0aF9jYWxsYmFjayByZXZpdmVyXG5cbmxldCB1bnNhZmVfaW5wdXQgcyA9IGpzb24jI3BhcnNlXyBzIGlucHV0X3Jldml2ZXJcblxuY2xhc3MgdHlwZSBvYmogPSBvYmplY3RcbiAgbWV0aG9kIGNvbnN0cnVjdG9yIDogJ2EuICdhIGNvbnN0ciBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxubGV0IG1sSW50NjRfY29uc3RyID1cbiAgbGV0IGR1bW15X2ludDY0ID0gMUwgaW5cbiAgbGV0IGR1bW15X29iaiA6IG9iaiB0ID0gT2JqLm1hZ2ljIGR1bW15X2ludDY0IGluXG4gIGR1bW15X29iaiMjLmNvbnN0cnVjdG9yXG5cbmxldCBvdXRwdXRfcmV2aXZlciBfa2V5ICh2YWx1ZSA6IFVuc2FmZS5hbnkpIDogT2JqLnQgPVxuICBpZiBPYmoudGFnIChPYmoucmVwciB2YWx1ZSkgPSBPYmouc3RyaW5nX3RhZ1xuICB0aGVuIE9iai5yZXByIChieXRlc3RyaW5nIChPYmoubWFnaWMgdmFsdWUgOiBzdHJpbmcpKVxuICBlbHNlIGlmIGluc3RhbmNlb2YgdmFsdWUgbWxJbnQ2NF9jb25zdHJcbiAgdGhlblxuICAgIGxldCB2YWx1ZSA9IFVuc2FmZS5jb2VyY2UgdmFsdWUgaW5cbiAgICBPYmoucmVwciAoYXJyYXkgW3wgMjU1OyB2YWx1ZSMjLmxvOyB2YWx1ZSMjLm1pOyB2YWx1ZSMjLmhpIHxdKVxuICBlbHNlIE9iai5yZXByIHZhbHVlXG5cbmxldCBvdXRwdXQgb2JqID0ganNvbiMjc3RyaW5naWZ5XyBvYmogKEpzLndyYXBfY2FsbGJhY2sgb3V0cHV0X3Jldml2ZXIpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQ29sb3IgPSBzdHJ1Y3RcbiAgKCogVGhlIHR5cGUgb2YgQ1NTIGNvbG9ycy4gRmlyc3QgYnkgbmFtZSBhbmQgdGhlbiBieSBjb25zdHJ1Y3Rvci4gKilcbiAgdHlwZSBuYW1lID1cbiAgICB8IEFsaWNlYmx1ZVxuICAgIHwgQW50aXF1ZXdoaXRlXG4gICAgfCBBcXVhXG4gICAgfCBBcXVhbWFyaW5lXG4gICAgfCBBenVyZVxuICAgIHwgQmVpZ2VcbiAgICB8IEJpc3F1ZVxuICAgIHwgQmxhY2tcbiAgICB8IEJsYW5jaGVkYWxtb25kXG4gICAgfCBCbHVlXG4gICAgfCBCbHVldmlvbGV0XG4gICAgfCBCcm93blxuICAgIHwgQnVybHl3b29kXG4gICAgfCBDYWRldGJsdWVcbiAgICB8IENoYXJ0cmV1c2VcbiAgICB8IENob2NvbGF0ZVxuICAgIHwgQ29yYWxcbiAgICB8IENvcm5mbG93ZXJibHVlXG4gICAgfCBDb3Juc2lsa1xuICAgIHwgQ3JpbXNvblxuICAgIHwgQ3lhblxuICAgIHwgRGFya2JsdWVcbiAgICB8IERhcmtjeWFuXG4gICAgfCBEYXJrZ29sZGVucm9kXG4gICAgfCBEYXJrZ3JheVxuICAgIHwgRGFya2dyZWVuXG4gICAgfCBEYXJrZ3JleVxuICAgIHwgRGFya2toYWtpXG4gICAgfCBEYXJrbWFnZW50YVxuICAgIHwgRGFya29saXZlZ3JlZW5cbiAgICB8IERhcmtvcmFuZ2VcbiAgICB8IERhcmtvcmNoaWRcbiAgICB8IERhcmtyZWRcbiAgICB8IERhcmtzYWxtb25cbiAgICB8IERhcmtzZWFncmVlblxuICAgIHwgRGFya3NsYXRlYmx1ZVxuICAgIHwgRGFya3NsYXRlZ3JheVxuICAgIHwgRGFya3NsYXRlZ3JleVxuICAgIHwgRGFya3R1cnF1b2lzZVxuICAgIHwgRGFya3Zpb2xldFxuICAgIHwgRGVlcHBpbmtcbiAgICB8IERlZXBza3libHVlXG4gICAgfCBEaW1ncmF5XG4gICAgfCBEaW1ncmV5XG4gICAgfCBEb2RnZXJibHVlXG4gICAgfCBGaXJlYnJpY2tcbiAgICB8IEZsb3JhbHdoaXRlXG4gICAgfCBGb3Jlc3RncmVlblxuICAgIHwgRnVjaHNpYVxuICAgIHwgR2FpbnNib3JvXG4gICAgfCBHaG9zdHdoaXRlXG4gICAgfCBHb2xkXG4gICAgfCBHb2xkZW5yb2RcbiAgICB8IEdyYXlcbiAgICB8IEdyZXlcbiAgICB8IEdyZWVuXG4gICAgfCBHcmVlbnllbGxvd1xuICAgIHwgSG9uZXlkZXdcbiAgICB8IEhvdHBpbmtcbiAgICB8IEluZGlhbnJlZFxuICAgIHwgSW5kaWdvXG4gICAgfCBJdm9yeVxuICAgIHwgS2hha2lcbiAgICB8IExhdmVuZGVyXG4gICAgfCBMYXZlbmRlcmJsdXNoXG4gICAgfCBMYXduZ3JlZW5cbiAgICB8IExlbW9uY2hpZmZvblxuICAgIHwgTGlnaHRibHVlXG4gICAgfCBMaWdodGNvcmFsXG4gICAgfCBMaWdodGN5YW5cbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93XG4gICAgfCBMaWdodGdyYXlcbiAgICB8IExpZ2h0Z3JlZW5cbiAgICB8IExpZ2h0Z3JleVxuICAgIHwgTGlnaHRwaW5rXG4gICAgfCBMaWdodHNhbG1vblxuICAgIHwgTGlnaHRzZWFncmVlblxuICAgIHwgTGlnaHRza3libHVlXG4gICAgfCBMaWdodHNsYXRlZ3JheVxuICAgIHwgTGlnaHRzbGF0ZWdyZXlcbiAgICB8IExpZ2h0c3RlZWxibHVlXG4gICAgfCBMaWdodHllbGxvd1xuICAgIHwgTGltZVxuICAgIHwgTGltZWdyZWVuXG4gICAgfCBMaW5lblxuICAgIHwgTWFnZW50YVxuICAgIHwgTWFyb29uXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lXG4gICAgfCBNZWRpdW1ibHVlXG4gICAgfCBNZWRpdW1vcmNoaWRcbiAgICB8IE1lZGl1bXB1cnBsZVxuICAgIHwgTWVkaXVtc2VhZ3JlZW5cbiAgICB8IE1lZGl1bXNsYXRlYmx1ZVxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW5cbiAgICB8IE1lZGl1bXR1cnF1b2lzZVxuICAgIHwgTWVkaXVtdmlvbGV0cmVkXG4gICAgfCBNaWRuaWdodGJsdWVcbiAgICB8IE1pbnRjcmVhbVxuICAgIHwgTWlzdHlyb3NlXG4gICAgfCBNb2NjYXNpblxuICAgIHwgTmF2YWpvd2hpdGVcbiAgICB8IE5hdnlcbiAgICB8IE9sZGxhY2VcbiAgICB8IE9saXZlXG4gICAgfCBPbGl2ZWRyYWJcbiAgICB8IE9yYW5nZVxuICAgIHwgT3JhbmdlcmVkXG4gICAgfCBPcmNoaWRcbiAgICB8IFBhbGVnb2xkZW5yb2RcbiAgICB8IFBhbGVncmVlblxuICAgIHwgUGFsZXR1cnF1b2lzZVxuICAgIHwgUGFsZXZpb2xldHJlZFxuICAgIHwgUGFwYXlhd2hpcFxuICAgIHwgUGVhY2hwdWZmXG4gICAgfCBQZXJ1XG4gICAgfCBQaW5rXG4gICAgfCBQbHVtXG4gICAgfCBQb3dkZXJibHVlXG4gICAgfCBQdXJwbGVcbiAgICB8IFJlZFxuICAgIHwgUm9zeWJyb3duXG4gICAgfCBSb3lhbGJsdWVcbiAgICB8IFNhZGRsZWJyb3duXG4gICAgfCBTYWxtb25cbiAgICB8IFNhbmR5YnJvd25cbiAgICB8IFNlYWdyZWVuXG4gICAgfCBTZWFzaGVsbFxuICAgIHwgU2llbm5hXG4gICAgfCBTaWx2ZXJcbiAgICB8IFNreWJsdWVcbiAgICB8IFNsYXRlYmx1ZVxuICAgIHwgU2xhdGVncmF5XG4gICAgfCBTbGF0ZWdyZXlcbiAgICB8IFNub3dcbiAgICB8IFNwcmluZ2dyZWVuXG4gICAgfCBTdGVlbGJsdWVcbiAgICB8IFRhblxuICAgIHwgVGVhbFxuICAgIHwgVGhpc3RsZVxuICAgIHwgVG9tYXRvXG4gICAgfCBUdXJxdW9pc2VcbiAgICB8IFZpb2xldFxuICAgIHwgV2hlYXRcbiAgICB8IFdoaXRlXG4gICAgfCBXaGl0ZXNtb2tlXG4gICAgfCBZZWxsb3dcbiAgICB8IFllbGxvd2dyZWVuXG5cbiAgbGV0IHN0cmluZ19vZl9uYW1lID0gZnVuY3Rpb25cbiAgICB8IEFsaWNlYmx1ZSAtPiBcImFsaWNlYmx1ZVwiXG4gICAgfCBBbnRpcXVld2hpdGUgLT4gXCJhbnRpcXVld2hpdGVcIlxuICAgIHwgQXF1YSAtPiBcImFxdWFcIlxuICAgIHwgQXF1YW1hcmluZSAtPiBcImFxdWFtYXJpbmVcIlxuICAgIHwgQXp1cmUgLT4gXCJhenVyZVwiXG4gICAgfCBCZWlnZSAtPiBcImJlaWdlXCJcbiAgICB8IEJpc3F1ZSAtPiBcImJpc3F1ZVwiXG4gICAgfCBCbGFjayAtPiBcImJsYWNrXCJcbiAgICB8IEJsYW5jaGVkYWxtb25kIC0+IFwiYmxhbmNoZWRhbG1vbmRcIlxuICAgIHwgQmx1ZSAtPiBcImJsdWVcIlxuICAgIHwgQmx1ZXZpb2xldCAtPiBcImJsdWV2aW9sZXRcIlxuICAgIHwgQnJvd24gLT4gXCJicm93blwiXG4gICAgfCBCdXJseXdvb2QgLT4gXCJidXJseXdvb2RcIlxuICAgIHwgQ2FkZXRibHVlIC0+IFwiY2FkZXRibHVlXCJcbiAgICB8IENoYXJ0cmV1c2UgLT4gXCJjaGFydHJldXNlXCJcbiAgICB8IENob2NvbGF0ZSAtPiBcImNob2NvbGF0ZVwiXG4gICAgfCBDb3JhbCAtPiBcImNvcmFsXCJcbiAgICB8IENvcm5mbG93ZXJibHVlIC0+IFwiY29ybmZsb3dlcmJsdWVcIlxuICAgIHwgQ29ybnNpbGsgLT4gXCJjb3Juc2lsa1wiXG4gICAgfCBDcmltc29uIC0+IFwiY3JpbXNvblwiXG4gICAgfCBDeWFuIC0+IFwiY3lhblwiXG4gICAgfCBEYXJrYmx1ZSAtPiBcImRhcmtibHVlXCJcbiAgICB8IERhcmtjeWFuIC0+IFwiZGFya2N5YW5cIlxuICAgIHwgRGFya2dvbGRlbnJvZCAtPiBcImRhcmtnb2xkZW5yb2RcIlxuICAgIHwgRGFya2dyYXkgLT4gXCJkYXJrZ3JheVwiXG4gICAgfCBEYXJrZ3JlZW4gLT4gXCJkYXJrZ3JlZW5cIlxuICAgIHwgRGFya2dyZXkgLT4gXCJkYXJrZ3JleVwiXG4gICAgfCBEYXJra2hha2kgLT4gXCJkYXJra2hha2lcIlxuICAgIHwgRGFya21hZ2VudGEgLT4gXCJkYXJrbWFnZW50YVwiXG4gICAgfCBEYXJrb2xpdmVncmVlbiAtPiBcImRhcmtvbGl2ZWdyZWVuXCJcbiAgICB8IERhcmtvcmFuZ2UgLT4gXCJkYXJrb3JhbmdlXCJcbiAgICB8IERhcmtvcmNoaWQgLT4gXCJkYXJrb3JjaGlkXCJcbiAgICB8IERhcmtyZWQgLT4gXCJkYXJrcmVkXCJcbiAgICB8IERhcmtzYWxtb24gLT4gXCJkYXJrc2FsbW9uXCJcbiAgICB8IERhcmtzZWFncmVlbiAtPiBcImRhcmtzZWFncmVlblwiXG4gICAgfCBEYXJrc2xhdGVibHVlIC0+IFwiZGFya3NsYXRlYmx1ZVwiXG4gICAgfCBEYXJrc2xhdGVncmF5IC0+IFwiZGFya3NsYXRlZ3JheVwiXG4gICAgfCBEYXJrc2xhdGVncmV5IC0+IFwiZGFya3NsYXRlZ3JleVwiXG4gICAgfCBEYXJrdHVycXVvaXNlIC0+IFwiZGFya3R1cnF1b2lzZVwiXG4gICAgfCBEYXJrdmlvbGV0IC0+IFwiZGFya3Zpb2xldFwiXG4gICAgfCBEZWVwcGluayAtPiBcImRlZXBwaW5rXCJcbiAgICB8IERlZXBza3libHVlIC0+IFwiZGVlcHNreWJsdWVcIlxuICAgIHwgRGltZ3JheSAtPiBcImRpbWdyYXlcIlxuICAgIHwgRGltZ3JleSAtPiBcImRpbWdyZXlcIlxuICAgIHwgRG9kZ2VyYmx1ZSAtPiBcImRvZGdlcmJsdWVcIlxuICAgIHwgRmlyZWJyaWNrIC0+IFwiZmlyZWJyaWNrXCJcbiAgICB8IEZsb3JhbHdoaXRlIC0+IFwiZmxvcmFsd2hpdGVcIlxuICAgIHwgRm9yZXN0Z3JlZW4gLT4gXCJmb3Jlc3RncmVlblwiXG4gICAgfCBGdWNoc2lhIC0+IFwiZnVjaHNpYVwiXG4gICAgfCBHYWluc2Jvcm8gLT4gXCJnYWluc2Jvcm9cIlxuICAgIHwgR2hvc3R3aGl0ZSAtPiBcImdob3N0d2hpdGVcIlxuICAgIHwgR29sZCAtPiBcImdvbGRcIlxuICAgIHwgR29sZGVucm9kIC0+IFwiZ29sZGVucm9kXCJcbiAgICB8IEdyYXkgLT4gXCJncmF5XCJcbiAgICB8IEdyZWVuIC0+IFwiZ3JlZW5cIlxuICAgIHwgR3JlZW55ZWxsb3cgLT4gXCJncmVlbnllbGxvd1wiXG4gICAgfCBHcmV5IC0+IFwiZ3JleVwiXG4gICAgfCBIb25leWRldyAtPiBcImhvbmV5ZGV3XCJcbiAgICB8IEhvdHBpbmsgLT4gXCJob3RwaW5rXCJcbiAgICB8IEluZGlhbnJlZCAtPiBcImluZGlhbnJlZFwiXG4gICAgfCBJbmRpZ28gLT4gXCJpbmRpZ29cIlxuICAgIHwgSXZvcnkgLT4gXCJpdm9yeVwiXG4gICAgfCBLaGFraSAtPiBcImtoYWtpXCJcbiAgICB8IExhdmVuZGVyIC0+IFwibGF2ZW5kZXJcIlxuICAgIHwgTGF2ZW5kZXJibHVzaCAtPiBcImxhdmVuZGVyYmx1c2hcIlxuICAgIHwgTGF3bmdyZWVuIC0+IFwibGF3bmdyZWVuXCJcbiAgICB8IExlbW9uY2hpZmZvbiAtPiBcImxlbW9uY2hpZmZvblwiXG4gICAgfCBMaWdodGJsdWUgLT4gXCJsaWdodGJsdWVcIlxuICAgIHwgTGlnaHRjb3JhbCAtPiBcImxpZ2h0Y29yYWxcIlxuICAgIHwgTGlnaHRjeWFuIC0+IFwibGlnaHRjeWFuXCJcbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93IC0+IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIlxuICAgIHwgTGlnaHRncmF5IC0+IFwibGlnaHRncmF5XCJcbiAgICB8IExpZ2h0Z3JlZW4gLT4gXCJsaWdodGdyZWVuXCJcbiAgICB8IExpZ2h0Z3JleSAtPiBcImxpZ2h0Z3JleVwiXG4gICAgfCBMaWdodHBpbmsgLT4gXCJsaWdodHBpbmtcIlxuICAgIHwgTGlnaHRzYWxtb24gLT4gXCJsaWdodHNhbG1vblwiXG4gICAgfCBMaWdodHNlYWdyZWVuIC0+IFwibGlnaHRzZWFncmVlblwiXG4gICAgfCBMaWdodHNreWJsdWUgLT4gXCJsaWdodHNreWJsdWVcIlxuICAgIHwgTGlnaHRzbGF0ZWdyYXkgLT4gXCJsaWdodHNsYXRlZ3JheVwiXG4gICAgfCBMaWdodHNsYXRlZ3JleSAtPiBcImxpZ2h0c2xhdGVncmV5XCJcbiAgICB8IExpZ2h0c3RlZWxibHVlIC0+IFwibGlnaHRzdGVlbGJsdWVcIlxuICAgIHwgTGlnaHR5ZWxsb3cgLT4gXCJsaWdodHllbGxvd1wiXG4gICAgfCBMaW1lIC0+IFwibGltZVwiXG4gICAgfCBMaW1lZ3JlZW4gLT4gXCJsaW1lZ3JlZW5cIlxuICAgIHwgTGluZW4gLT4gXCJsaW5lblwiXG4gICAgfCBNYWdlbnRhIC0+IFwibWFnZW50YVwiXG4gICAgfCBNYXJvb24gLT4gXCJtYXJvb25cIlxuICAgIHwgTWVkaXVtYXF1YW1hcmluZSAtPiBcIm1lZGl1bWFxdWFtYXJpbmVcIlxuICAgIHwgTWVkaXVtYmx1ZSAtPiBcIm1lZGl1bWJsdWVcIlxuICAgIHwgTWVkaXVtb3JjaGlkIC0+IFwibWVkaXVtb3JjaGlkXCJcbiAgICB8IE1lZGl1bXB1cnBsZSAtPiBcIm1lZGl1bXB1cnBsZVwiXG4gICAgfCBNZWRpdW1zZWFncmVlbiAtPiBcIm1lZGl1bXNlYWdyZWVuXCJcbiAgICB8IE1lZGl1bXNsYXRlYmx1ZSAtPiBcIm1lZGl1bXNsYXRlYmx1ZVwiXG4gICAgfCBNZWRpdW1zcHJpbmdncmVlbiAtPiBcIm1lZGl1bXNwcmluZ2dyZWVuXCJcbiAgICB8IE1lZGl1bXR1cnF1b2lzZSAtPiBcIm1lZGl1bXR1cnF1b2lzZVwiXG4gICAgfCBNZWRpdW12aW9sZXRyZWQgLT4gXCJtZWRpdW12aW9sZXRyZWRcIlxuICAgIHwgTWlkbmlnaHRibHVlIC0+IFwibWlkbmlnaHRibHVlXCJcbiAgICB8IE1pbnRjcmVhbSAtPiBcIm1pbnRjcmVhbVwiXG4gICAgfCBNaXN0eXJvc2UgLT4gXCJtaXN0eXJvc2VcIlxuICAgIHwgTW9jY2FzaW4gLT4gXCJtb2NjYXNpblwiXG4gICAgfCBOYXZham93aGl0ZSAtPiBcIm5hdmFqb3doaXRlXCJcbiAgICB8IE5hdnkgLT4gXCJuYXZ5XCJcbiAgICB8IE9sZGxhY2UgLT4gXCJvbGRsYWNlXCJcbiAgICB8IE9saXZlIC0+IFwib2xpdmVcIlxuICAgIHwgT2xpdmVkcmFiIC0+IFwib2xpdmVkcmFiXCJcbiAgICB8IE9yYW5nZSAtPiBcIm9yYW5nZVwiXG4gICAgfCBPcmFuZ2VyZWQgLT4gXCJvcmFuZ2VyZWRcIlxuICAgIHwgT3JjaGlkIC0+IFwib3JjaGlkXCJcbiAgICB8IFBhbGVnb2xkZW5yb2QgLT4gXCJwYWxlZ29sZGVucm9kXCJcbiAgICB8IFBhbGVncmVlbiAtPiBcInBhbGVncmVlblwiXG4gICAgfCBQYWxldHVycXVvaXNlIC0+IFwicGFsZXR1cnF1b2lzZVwiXG4gICAgfCBQYWxldmlvbGV0cmVkIC0+IFwicGFsZXZpb2xldHJlZFwiXG4gICAgfCBQYXBheWF3aGlwIC0+IFwicGFwYXlhd2hpcFwiXG4gICAgfCBQZWFjaHB1ZmYgLT4gXCJwZWFjaHB1ZmZcIlxuICAgIHwgUGVydSAtPiBcInBlcnVcIlxuICAgIHwgUGluayAtPiBcInBpbmtcIlxuICAgIHwgUGx1bSAtPiBcInBsdW1cIlxuICAgIHwgUG93ZGVyYmx1ZSAtPiBcInBvd2RlcmJsdWVcIlxuICAgIHwgUHVycGxlIC0+IFwicHVycGxlXCJcbiAgICB8IFJlZCAtPiBcInJlZFwiXG4gICAgfCBSb3N5YnJvd24gLT4gXCJyb3N5YnJvd25cIlxuICAgIHwgUm95YWxibHVlIC0+IFwicm95YWxibHVlXCJcbiAgICB8IFNhZGRsZWJyb3duIC0+IFwic2FkZGxlYnJvd25cIlxuICAgIHwgU2FsbW9uIC0+IFwic2FsbW9uXCJcbiAgICB8IFNhbmR5YnJvd24gLT4gXCJzYW5keWJyb3duXCJcbiAgICB8IFNlYWdyZWVuIC0+IFwic2VhZ3JlZW5cIlxuICAgIHwgU2Vhc2hlbGwgLT4gXCJzZWFzaGVsbFwiXG4gICAgfCBTaWVubmEgLT4gXCJzaWVubmFcIlxuICAgIHwgU2lsdmVyIC0+IFwic2lsdmVyXCJcbiAgICB8IFNreWJsdWUgLT4gXCJza3libHVlXCJcbiAgICB8IFNsYXRlYmx1ZSAtPiBcInNsYXRlYmx1ZVwiXG4gICAgfCBTbGF0ZWdyYXkgLT4gXCJzbGF0ZWdyYXlcIlxuICAgIHwgU2xhdGVncmV5IC0+IFwic2xhdGVncmV5XCJcbiAgICB8IFNub3cgLT4gXCJzbm93XCJcbiAgICB8IFNwcmluZ2dyZWVuIC0+IFwic3ByaW5nZ3JlZW5cIlxuICAgIHwgU3RlZWxibHVlIC0+IFwic3RlZWxibHVlXCJcbiAgICB8IFRhbiAtPiBcInRhblwiXG4gICAgfCBUZWFsIC0+IFwidGVhbFwiXG4gICAgfCBUaGlzdGxlIC0+IFwidGhpc3RsZVwiXG4gICAgfCBUb21hdG8gLT4gXCJ0b21hdG9cIlxuICAgIHwgVHVycXVvaXNlIC0+IFwidHVycXVvaXNlXCJcbiAgICB8IFZpb2xldCAtPiBcInZpb2xldFwiXG4gICAgfCBXaGVhdCAtPiBcIndoZWF0XCJcbiAgICB8IFdoaXRlIC0+IFwid2hpdGVcIlxuICAgIHwgV2hpdGVzbW9rZSAtPiBcIndoaXRlc21va2VcIlxuICAgIHwgWWVsbG93IC0+IFwieWVsbG93XCJcbiAgICB8IFllbGxvd2dyZWVuIC0+IFwieWVsbG93Z3JlZW5cIlxuXG4gIGxldCBuYW1lX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBcImFsaWNlYmx1ZVwiIC0+IEFsaWNlYmx1ZVxuICAgIHwgXCJhbnRpcXVld2hpdGVcIiAtPiBBbnRpcXVld2hpdGVcbiAgICB8IFwiYXF1YVwiIC0+IEFxdWFcbiAgICB8IFwiYXF1YW1hcmluZVwiIC0+IEFxdWFtYXJpbmVcbiAgICB8IFwiYXp1cmVcIiAtPiBBenVyZVxuICAgIHwgXCJiZWlnZVwiIC0+IEJlaWdlXG4gICAgfCBcImJpc3F1ZVwiIC0+IEJpc3F1ZVxuICAgIHwgXCJibGFja1wiIC0+IEJsYWNrXG4gICAgfCBcImJsYW5jaGVkYWxtb25kXCIgLT4gQmxhbmNoZWRhbG1vbmRcbiAgICB8IFwiYmx1ZVwiIC0+IEJsdWVcbiAgICB8IFwiYmx1ZXZpb2xldFwiIC0+IEJsdWV2aW9sZXRcbiAgICB8IFwiYnJvd25cIiAtPiBCcm93blxuICAgIHwgXCJidXJseXdvb2RcIiAtPiBCdXJseXdvb2RcbiAgICB8IFwiY2FkZXRibHVlXCIgLT4gQ2FkZXRibHVlXG4gICAgfCBcImNoYXJ0cmV1c2VcIiAtPiBDaGFydHJldXNlXG4gICAgfCBcImNob2NvbGF0ZVwiIC0+IENob2NvbGF0ZVxuICAgIHwgXCJjb3JhbFwiIC0+IENvcmFsXG4gICAgfCBcImNvcm5mbG93ZXJibHVlXCIgLT4gQ29ybmZsb3dlcmJsdWVcbiAgICB8IFwiY29ybnNpbGtcIiAtPiBDb3Juc2lsa1xuICAgIHwgXCJjcmltc29uXCIgLT4gQ3JpbXNvblxuICAgIHwgXCJjeWFuXCIgLT4gQ3lhblxuICAgIHwgXCJkYXJrYmx1ZVwiIC0+IERhcmtibHVlXG4gICAgfCBcImRhcmtjeWFuXCIgLT4gRGFya2N5YW5cbiAgICB8IFwiZGFya2dvbGRlbnJvZFwiIC0+IERhcmtnb2xkZW5yb2RcbiAgICB8IFwiZGFya2dyYXlcIiAtPiBEYXJrZ3JheVxuICAgIHwgXCJkYXJrZ3JlZW5cIiAtPiBEYXJrZ3JlZW5cbiAgICB8IFwiZGFya2dyZXlcIiAtPiBEYXJrZ3JleVxuICAgIHwgXCJkYXJra2hha2lcIiAtPiBEYXJra2hha2lcbiAgICB8IFwiZGFya21hZ2VudGFcIiAtPiBEYXJrbWFnZW50YVxuICAgIHwgXCJkYXJrb2xpdmVncmVlblwiIC0+IERhcmtvbGl2ZWdyZWVuXG4gICAgfCBcImRhcmtvcmFuZ2VcIiAtPiBEYXJrb3JhbmdlXG4gICAgfCBcImRhcmtvcmNoaWRcIiAtPiBEYXJrb3JjaGlkXG4gICAgfCBcImRhcmtyZWRcIiAtPiBEYXJrcmVkXG4gICAgfCBcImRhcmtzYWxtb25cIiAtPiBEYXJrc2FsbW9uXG4gICAgfCBcImRhcmtzZWFncmVlblwiIC0+IERhcmtzZWFncmVlblxuICAgIHwgXCJkYXJrc2xhdGVibHVlXCIgLT4gRGFya3NsYXRlYmx1ZVxuICAgIHwgXCJkYXJrc2xhdGVncmF5XCIgLT4gRGFya3NsYXRlZ3JheVxuICAgIHwgXCJkYXJrc2xhdGVncmV5XCIgLT4gRGFya3NsYXRlZ3JleVxuICAgIHwgXCJkYXJrdHVycXVvaXNlXCIgLT4gRGFya3R1cnF1b2lzZVxuICAgIHwgXCJkYXJrdmlvbGV0XCIgLT4gRGFya3Zpb2xldFxuICAgIHwgXCJkZWVwcGlua1wiIC0+IERlZXBwaW5rXG4gICAgfCBcImRlZXBza3libHVlXCIgLT4gRGVlcHNreWJsdWVcbiAgICB8IFwiZGltZ3JheVwiIC0+IERpbWdyYXlcbiAgICB8IFwiZGltZ3JleVwiIC0+IERpbWdyZXlcbiAgICB8IFwiZG9kZ2VyYmx1ZVwiIC0+IERvZGdlcmJsdWVcbiAgICB8IFwiZmlyZWJyaWNrXCIgLT4gRmlyZWJyaWNrXG4gICAgfCBcImZsb3JhbHdoaXRlXCIgLT4gRmxvcmFsd2hpdGVcbiAgICB8IFwiZm9yZXN0Z3JlZW5cIiAtPiBGb3Jlc3RncmVlblxuICAgIHwgXCJmdWNoc2lhXCIgLT4gRnVjaHNpYVxuICAgIHwgXCJnYWluc2Jvcm9cIiAtPiBHYWluc2Jvcm9cbiAgICB8IFwiZ2hvc3R3aGl0ZVwiIC0+IEdob3N0d2hpdGVcbiAgICB8IFwiZ29sZFwiIC0+IEdvbGRcbiAgICB8IFwiZ29sZGVucm9kXCIgLT4gR29sZGVucm9kXG4gICAgfCBcImdyYXlcIiAtPiBHcmF5XG4gICAgfCBcImdyZWVuXCIgLT4gR3JlZW5cbiAgICB8IFwiZ3JlZW55ZWxsb3dcIiAtPiBHcmVlbnllbGxvd1xuICAgIHwgXCJncmV5XCIgLT4gR3JleVxuICAgIHwgXCJob25leWRld1wiIC0+IEhvbmV5ZGV3XG4gICAgfCBcImhvdHBpbmtcIiAtPiBIb3RwaW5rXG4gICAgfCBcImluZGlhbnJlZFwiIC0+IEluZGlhbnJlZFxuICAgIHwgXCJpbmRpZ29cIiAtPiBJbmRpZ29cbiAgICB8IFwiaXZvcnlcIiAtPiBJdm9yeVxuICAgIHwgXCJraGFraVwiIC0+IEtoYWtpXG4gICAgfCBcImxhdmVuZGVyXCIgLT4gTGF2ZW5kZXJcbiAgICB8IFwibGF2ZW5kZXJibHVzaFwiIC0+IExhdmVuZGVyYmx1c2hcbiAgICB8IFwibGF3bmdyZWVuXCIgLT4gTGF3bmdyZWVuXG4gICAgfCBcImxlbW9uY2hpZmZvblwiIC0+IExlbW9uY2hpZmZvblxuICAgIHwgXCJsaWdodGJsdWVcIiAtPiBMaWdodGJsdWVcbiAgICB8IFwibGlnaHRjb3JhbFwiIC0+IExpZ2h0Y29yYWxcbiAgICB8IFwibGlnaHRjeWFuXCIgLT4gTGlnaHRjeWFuXG4gICAgfCBcImxpZ2h0Z29sZGVucm9keWVsbG93XCIgLT4gTGlnaHRnb2xkZW5yb2R5ZWxsb3dcbiAgICB8IFwibGlnaHRncmF5XCIgLT4gTGlnaHRncmF5XG4gICAgfCBcImxpZ2h0Z3JlZW5cIiAtPiBMaWdodGdyZWVuXG4gICAgfCBcImxpZ2h0Z3JleVwiIC0+IExpZ2h0Z3JleVxuICAgIHwgXCJsaWdodHBpbmtcIiAtPiBMaWdodHBpbmtcbiAgICB8IFwibGlnaHRzYWxtb25cIiAtPiBMaWdodHNhbG1vblxuICAgIHwgXCJsaWdodHNlYWdyZWVuXCIgLT4gTGlnaHRzZWFncmVlblxuICAgIHwgXCJsaWdodHNreWJsdWVcIiAtPiBMaWdodHNreWJsdWVcbiAgICB8IFwibGlnaHRzbGF0ZWdyYXlcIiAtPiBMaWdodHNsYXRlZ3JheVxuICAgIHwgXCJsaWdodHNsYXRlZ3JleVwiIC0+IExpZ2h0c2xhdGVncmV5XG4gICAgfCBcImxpZ2h0c3RlZWxibHVlXCIgLT4gTGlnaHRzdGVlbGJsdWVcbiAgICB8IFwibGlnaHR5ZWxsb3dcIiAtPiBMaWdodHllbGxvd1xuICAgIHwgXCJsaW1lXCIgLT4gTGltZVxuICAgIHwgXCJsaW1lZ3JlZW5cIiAtPiBMaW1lZ3JlZW5cbiAgICB8IFwibGluZW5cIiAtPiBMaW5lblxuICAgIHwgXCJtYWdlbnRhXCIgLT4gTWFnZW50YVxuICAgIHwgXCJtYXJvb25cIiAtPiBNYXJvb25cbiAgICB8IFwibWVkaXVtYXF1YW1hcmluZVwiIC0+IE1lZGl1bWFxdWFtYXJpbmVcbiAgICB8IFwibWVkaXVtYmx1ZVwiIC0+IE1lZGl1bWJsdWVcbiAgICB8IFwibWVkaXVtb3JjaGlkXCIgLT4gTWVkaXVtb3JjaGlkXG4gICAgfCBcIm1lZGl1bXB1cnBsZVwiIC0+IE1lZGl1bXB1cnBsZVxuICAgIHwgXCJtZWRpdW1zZWFncmVlblwiIC0+IE1lZGl1bXNlYWdyZWVuXG4gICAgfCBcIm1lZGl1bXNsYXRlYmx1ZVwiIC0+IE1lZGl1bXNsYXRlYmx1ZVxuICAgIHwgXCJtZWRpdW1zcHJpbmdncmVlblwiIC0+IE1lZGl1bXNwcmluZ2dyZWVuXG4gICAgfCBcIm1lZGl1bXR1cnF1b2lzZVwiIC0+IE1lZGl1bXR1cnF1b2lzZVxuICAgIHwgXCJtZWRpdW12aW9sZXRyZWRcIiAtPiBNZWRpdW12aW9sZXRyZWRcbiAgICB8IFwibWlkbmlnaHRibHVlXCIgLT4gTWlkbmlnaHRibHVlXG4gICAgfCBcIm1pbnRjcmVhbVwiIC0+IE1pbnRjcmVhbVxuICAgIHwgXCJtaXN0eXJvc2VcIiAtPiBNaXN0eXJvc2VcbiAgICB8IFwibW9jY2FzaW5cIiAtPiBNb2NjYXNpblxuICAgIHwgXCJuYXZham93aGl0ZVwiIC0+IE5hdmFqb3doaXRlXG4gICAgfCBcIm5hdnlcIiAtPiBOYXZ5XG4gICAgfCBcIm9sZGxhY2VcIiAtPiBPbGRsYWNlXG4gICAgfCBcIm9saXZlXCIgLT4gT2xpdmVcbiAgICB8IFwib2xpdmVkcmFiXCIgLT4gT2xpdmVkcmFiXG4gICAgfCBcIm9yYW5nZVwiIC0+IE9yYW5nZVxuICAgIHwgXCJvcmFuZ2VyZWRcIiAtPiBPcmFuZ2VyZWRcbiAgICB8IFwib3JjaGlkXCIgLT4gT3JjaGlkXG4gICAgfCBcInBhbGVnb2xkZW5yb2RcIiAtPiBQYWxlZ29sZGVucm9kXG4gICAgfCBcInBhbGVncmVlblwiIC0+IFBhbGVncmVlblxuICAgIHwgXCJwYWxldHVycXVvaXNlXCIgLT4gUGFsZXR1cnF1b2lzZVxuICAgIHwgXCJwYWxldmlvbGV0cmVkXCIgLT4gUGFsZXZpb2xldHJlZFxuICAgIHwgXCJwYXBheWF3aGlwXCIgLT4gUGFwYXlhd2hpcFxuICAgIHwgXCJwZWFjaHB1ZmZcIiAtPiBQZWFjaHB1ZmZcbiAgICB8IFwicGVydVwiIC0+IFBlcnVcbiAgICB8IFwicGlua1wiIC0+IFBpbmtcbiAgICB8IFwicGx1bVwiIC0+IFBsdW1cbiAgICB8IFwicG93ZGVyYmx1ZVwiIC0+IFBvd2RlcmJsdWVcbiAgICB8IFwicHVycGxlXCIgLT4gUHVycGxlXG4gICAgfCBcInJlZFwiIC0+IFJlZFxuICAgIHwgXCJyb3N5YnJvd25cIiAtPiBSb3N5YnJvd25cbiAgICB8IFwicm95YWxibHVlXCIgLT4gUm95YWxibHVlXG4gICAgfCBcInNhZGRsZWJyb3duXCIgLT4gU2FkZGxlYnJvd25cbiAgICB8IFwic2FsbW9uXCIgLT4gU2FsbW9uXG4gICAgfCBcInNhbmR5YnJvd25cIiAtPiBTYW5keWJyb3duXG4gICAgfCBcInNlYWdyZWVuXCIgLT4gU2VhZ3JlZW5cbiAgICB8IFwic2Vhc2hlbGxcIiAtPiBTZWFzaGVsbFxuICAgIHwgXCJzaWVubmFcIiAtPiBTaWVubmFcbiAgICB8IFwic2lsdmVyXCIgLT4gU2lsdmVyXG4gICAgfCBcInNreWJsdWVcIiAtPiBTa3libHVlXG4gICAgfCBcInNsYXRlYmx1ZVwiIC0+IFNsYXRlYmx1ZVxuICAgIHwgXCJzbGF0ZWdyYXlcIiAtPiBTbGF0ZWdyYXlcbiAgICB8IFwic2xhdGVncmV5XCIgLT4gU2xhdGVncmV5XG4gICAgfCBcInNub3dcIiAtPiBTbm93XG4gICAgfCBcInNwcmluZ2dyZWVuXCIgLT4gU3ByaW5nZ3JlZW5cbiAgICB8IFwic3RlZWxibHVlXCIgLT4gU3RlZWxibHVlXG4gICAgfCBcInRhblwiIC0+IFRhblxuICAgIHwgXCJ0ZWFsXCIgLT4gVGVhbFxuICAgIHwgXCJ0aGlzdGxlXCIgLT4gVGhpc3RsZVxuICAgIHwgXCJ0b21hdG9cIiAtPiBUb21hdG9cbiAgICB8IFwidHVycXVvaXNlXCIgLT4gVHVycXVvaXNlXG4gICAgfCBcInZpb2xldFwiIC0+IFZpb2xldFxuICAgIHwgXCJ3aGVhdFwiIC0+IFdoZWF0XG4gICAgfCBcIndoaXRlXCIgLT4gV2hpdGVcbiAgICB8IFwid2hpdGVzbW9rZVwiIC0+IFdoaXRlc21va2VcbiAgICB8IFwieWVsbG93XCIgLT4gWWVsbG93XG4gICAgfCBcInllbGxvd2dyZWVuXCIgLT4gWWVsbG93Z3JlZW5cbiAgICB8IHMgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvciBuYW1lXCIpKVxuXG4gIGxldCByZ2Jfb2ZfbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBBbGljZWJsdWUgLT4gMjQwLCAyNDgsIDI1NVxuICAgIHwgQW50aXF1ZXdoaXRlIC0+IDI1MCwgMjM1LCAyMTVcbiAgICB8IEFxdWEgLT4gMCwgMjU1LCAyNTVcbiAgICB8IEFxdWFtYXJpbmUgLT4gMTI3LCAyNTUsIDIxMlxuICAgIHwgQXp1cmUgLT4gMjQwLCAyNTUsIDI1NVxuICAgIHwgQmVpZ2UgLT4gMjQ1LCAyNDUsIDIyMFxuICAgIHwgQmlzcXVlIC0+IDI1NSwgMjI4LCAxOTZcbiAgICB8IEJsYWNrIC0+IDAsIDAsIDBcbiAgICB8IEJsYW5jaGVkYWxtb25kIC0+IDI1NSwgMjM1LCAyMDVcbiAgICB8IEJsdWUgLT4gMCwgMCwgMjU1XG4gICAgfCBCbHVldmlvbGV0IC0+IDEzOCwgNDMsIDIyNlxuICAgIHwgQnJvd24gLT4gMTY1LCA0MiwgNDJcbiAgICB8IEJ1cmx5d29vZCAtPiAyMjIsIDE4NCwgMTM1XG4gICAgfCBDYWRldGJsdWUgLT4gOTUsIDE1OCwgMTYwXG4gICAgfCBDaGFydHJldXNlIC0+IDEyNywgMjU1LCAwXG4gICAgfCBDaG9jb2xhdGUgLT4gMjEwLCAxMDUsIDMwXG4gICAgfCBDb3JhbCAtPiAyNTUsIDEyNywgODBcbiAgICB8IENvcm5mbG93ZXJibHVlIC0+IDEwMCwgMTQ5LCAyMzdcbiAgICB8IENvcm5zaWxrIC0+IDI1NSwgMjQ4LCAyMjBcbiAgICB8IENyaW1zb24gLT4gMjIwLCAyMCwgNjBcbiAgICB8IEN5YW4gLT4gMCwgMjU1LCAyNTVcbiAgICB8IERhcmtibHVlIC0+IDAsIDAsIDEzOVxuICAgIHwgRGFya2N5YW4gLT4gMCwgMTM5LCAxMzlcbiAgICB8IERhcmtnb2xkZW5yb2QgLT4gMTg0LCAxMzQsIDExXG4gICAgfCBEYXJrZ3JheSAtPiAxNjksIDE2OSwgMTY5XG4gICAgfCBEYXJrZ3JlZW4gLT4gMCwgMTAwLCAwXG4gICAgfCBEYXJrZ3JleSAtPiAxNjksIDE2OSwgMTY5XG4gICAgfCBEYXJra2hha2kgLT4gMTg5LCAxODMsIDEwN1xuICAgIHwgRGFya21hZ2VudGEgLT4gMTM5LCAwLCAxMzlcbiAgICB8IERhcmtvbGl2ZWdyZWVuIC0+IDg1LCAxMDcsIDQ3XG4gICAgfCBEYXJrb3JhbmdlIC0+IDI1NSwgMTQwLCAwXG4gICAgfCBEYXJrb3JjaGlkIC0+IDE1MywgNTAsIDIwNFxuICAgIHwgRGFya3JlZCAtPiAxMzksIDAsIDBcbiAgICB8IERhcmtzYWxtb24gLT4gMjMzLCAxNTAsIDEyMlxuICAgIHwgRGFya3NlYWdyZWVuIC0+IDE0MywgMTg4LCAxNDNcbiAgICB8IERhcmtzbGF0ZWJsdWUgLT4gNzIsIDYxLCAxMzlcbiAgICB8IERhcmtzbGF0ZWdyYXkgLT4gNDcsIDc5LCA3OVxuICAgIHwgRGFya3NsYXRlZ3JleSAtPiA0NywgNzksIDc5XG4gICAgfCBEYXJrdHVycXVvaXNlIC0+IDAsIDIwNiwgMjA5XG4gICAgfCBEYXJrdmlvbGV0IC0+IDE0OCwgMCwgMjExXG4gICAgfCBEZWVwcGluayAtPiAyNTUsIDIwLCAxNDdcbiAgICB8IERlZXBza3libHVlIC0+IDAsIDE5MSwgMjU1XG4gICAgfCBEaW1ncmF5IC0+IDEwNSwgMTA1LCAxMDVcbiAgICB8IERpbWdyZXkgLT4gMTA1LCAxMDUsIDEwNVxuICAgIHwgRG9kZ2VyYmx1ZSAtPiAzMCwgMTQ0LCAyNTVcbiAgICB8IEZpcmVicmljayAtPiAxNzgsIDM0LCAzNFxuICAgIHwgRmxvcmFsd2hpdGUgLT4gMjU1LCAyNTAsIDI0MFxuICAgIHwgRm9yZXN0Z3JlZW4gLT4gMzQsIDEzOSwgMzRcbiAgICB8IEZ1Y2hzaWEgLT4gMjU1LCAwLCAyNTVcbiAgICB8IEdhaW5zYm9ybyAtPiAyMjAsIDIyMCwgMjIwXG4gICAgfCBHaG9zdHdoaXRlIC0+IDI0OCwgMjQ4LCAyNTVcbiAgICB8IEdvbGQgLT4gMjU1LCAyMTUsIDBcbiAgICB8IEdvbGRlbnJvZCAtPiAyMTgsIDE2NSwgMzJcbiAgICB8IEdyYXkgLT4gMTI4LCAxMjgsIDEyOFxuICAgIHwgR3JlZW4gLT4gMCwgMTI4LCAwXG4gICAgfCBHcmVlbnllbGxvdyAtPiAxNzMsIDI1NSwgNDdcbiAgICB8IEdyZXkgLT4gMTI4LCAxMjgsIDEyOFxuICAgIHwgSG9uZXlkZXcgLT4gMjQwLCAyNTUsIDI0MFxuICAgIHwgSG90cGluayAtPiAyNTUsIDEwNSwgMTgwXG4gICAgfCBJbmRpYW5yZWQgLT4gMjA1LCA5MiwgOTJcbiAgICB8IEluZGlnbyAtPiA3NSwgMCwgMTMwXG4gICAgfCBJdm9yeSAtPiAyNTUsIDI1NSwgMjQwXG4gICAgfCBLaGFraSAtPiAyNDAsIDIzMCwgMTQwXG4gICAgfCBMYXZlbmRlciAtPiAyMzAsIDIzMCwgMjUwXG4gICAgfCBMYXZlbmRlcmJsdXNoIC0+IDI1NSwgMjQwLCAyNDVcbiAgICB8IExhd25ncmVlbiAtPiAxMjQsIDI1MiwgMFxuICAgIHwgTGVtb25jaGlmZm9uIC0+IDI1NSwgMjUwLCAyMDVcbiAgICB8IExpZ2h0Ymx1ZSAtPiAxNzMsIDIxNiwgMjMwXG4gICAgfCBMaWdodGNvcmFsIC0+IDI0MCwgMTI4LCAxMjhcbiAgICB8IExpZ2h0Y3lhbiAtPiAyMjQsIDI1NSwgMjU1XG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvdyAtPiAyNTAsIDI1MCwgMjEwXG4gICAgfCBMaWdodGdyYXkgLT4gMjExLCAyMTEsIDIxMVxuICAgIHwgTGlnaHRncmVlbiAtPiAxNDQsIDIzOCwgMTQ0XG4gICAgfCBMaWdodGdyZXkgLT4gMjExLCAyMTEsIDIxMVxuICAgIHwgTGlnaHRwaW5rIC0+IDI1NSwgMTgyLCAxOTNcbiAgICB8IExpZ2h0c2FsbW9uIC0+IDI1NSwgMTYwLCAxMjJcbiAgICB8IExpZ2h0c2VhZ3JlZW4gLT4gMzIsIDE3OCwgMTcwXG4gICAgfCBMaWdodHNreWJsdWUgLT4gMTM1LCAyMDYsIDI1MFxuICAgIHwgTGlnaHRzbGF0ZWdyYXkgLT4gMTE5LCAxMzYsIDE1M1xuICAgIHwgTGlnaHRzbGF0ZWdyZXkgLT4gMTE5LCAxMzYsIDE1M1xuICAgIHwgTGlnaHRzdGVlbGJsdWUgLT4gMTc2LCAxOTYsIDIyMlxuICAgIHwgTGlnaHR5ZWxsb3cgLT4gMjU1LCAyNTUsIDIyNFxuICAgIHwgTGltZSAtPiAwLCAyNTUsIDBcbiAgICB8IExpbWVncmVlbiAtPiA1MCwgMjA1LCA1MFxuICAgIHwgTGluZW4gLT4gMjUwLCAyNDAsIDIzMFxuICAgIHwgTWFnZW50YSAtPiAyNTUsIDAsIDI1NVxuICAgIHwgTWFyb29uIC0+IDEyOCwgMCwgMFxuICAgIHwgTWVkaXVtYXF1YW1hcmluZSAtPiAxMDIsIDIwNSwgMTcwXG4gICAgfCBNZWRpdW1ibHVlIC0+IDAsIDAsIDIwNVxuICAgIHwgTWVkaXVtb3JjaGlkIC0+IDE4NiwgODUsIDIxMVxuICAgIHwgTWVkaXVtcHVycGxlIC0+IDE0NywgMTEyLCAyMTlcbiAgICB8IE1lZGl1bXNlYWdyZWVuIC0+IDYwLCAxNzksIDExM1xuICAgIHwgTWVkaXVtc2xhdGVibHVlIC0+IDEyMywgMTA0LCAyMzhcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuIC0+IDAsIDI1MCwgMTU0XG4gICAgfCBNZWRpdW10dXJxdW9pc2UgLT4gNzIsIDIwOSwgMjA0XG4gICAgfCBNZWRpdW12aW9sZXRyZWQgLT4gMTk5LCAyMSwgMTMzXG4gICAgfCBNaWRuaWdodGJsdWUgLT4gMjUsIDI1LCAxMTJcbiAgICB8IE1pbnRjcmVhbSAtPiAyNDUsIDI1NSwgMjUwXG4gICAgfCBNaXN0eXJvc2UgLT4gMjU1LCAyMjgsIDIyNVxuICAgIHwgTW9jY2FzaW4gLT4gMjU1LCAyMjgsIDE4MVxuICAgIHwgTmF2YWpvd2hpdGUgLT4gMjU1LCAyMjIsIDE3M1xuICAgIHwgTmF2eSAtPiAwLCAwLCAxMjhcbiAgICB8IE9sZGxhY2UgLT4gMjUzLCAyNDUsIDIzMFxuICAgIHwgT2xpdmUgLT4gMTI4LCAxMjgsIDBcbiAgICB8IE9saXZlZHJhYiAtPiAxMDcsIDE0MiwgMzVcbiAgICB8IE9yYW5nZSAtPiAyNTUsIDE2NSwgMFxuICAgIHwgT3JhbmdlcmVkIC0+IDI1NSwgNjksIDBcbiAgICB8IE9yY2hpZCAtPiAyMTgsIDExMiwgMjE0XG4gICAgfCBQYWxlZ29sZGVucm9kIC0+IDIzOCwgMjMyLCAxNzBcbiAgICB8IFBhbGVncmVlbiAtPiAxNTIsIDI1MSwgMTUyXG4gICAgfCBQYWxldHVycXVvaXNlIC0+IDE3NSwgMjM4LCAyMzhcbiAgICB8IFBhbGV2aW9sZXRyZWQgLT4gMjE5LCAxMTIsIDE0N1xuICAgIHwgUGFwYXlhd2hpcCAtPiAyNTUsIDIzOSwgMjEzXG4gICAgfCBQZWFjaHB1ZmYgLT4gMjU1LCAyMTgsIDE4NVxuICAgIHwgUGVydSAtPiAyMDUsIDEzMywgNjNcbiAgICB8IFBpbmsgLT4gMjU1LCAxOTIsIDIwM1xuICAgIHwgUGx1bSAtPiAyMjEsIDE2MCwgMjIxXG4gICAgfCBQb3dkZXJibHVlIC0+IDE3NiwgMjI0LCAyMzBcbiAgICB8IFB1cnBsZSAtPiAxMjgsIDAsIDEyOFxuICAgIHwgUmVkIC0+IDI1NSwgMCwgMFxuICAgIHwgUm9zeWJyb3duIC0+IDE4OCwgMTQzLCAxNDNcbiAgICB8IFJveWFsYmx1ZSAtPiA2NSwgMTA1LCAyMjVcbiAgICB8IFNhZGRsZWJyb3duIC0+IDEzOSwgNjksIDE5XG4gICAgfCBTYWxtb24gLT4gMjUwLCAxMjgsIDExNFxuICAgIHwgU2FuZHlicm93biAtPiAyNDQsIDE2NCwgOTZcbiAgICB8IFNlYWdyZWVuIC0+IDQ2LCAxMzksIDg3XG4gICAgfCBTZWFzaGVsbCAtPiAyNTUsIDI0NSwgMjM4XG4gICAgfCBTaWVubmEgLT4gMTYwLCA4MiwgNDVcbiAgICB8IFNpbHZlciAtPiAxOTIsIDE5MiwgMTkyXG4gICAgfCBTa3libHVlIC0+IDEzNSwgMjA2LCAyMzVcbiAgICB8IFNsYXRlYmx1ZSAtPiAxMDYsIDkwLCAyMDVcbiAgICB8IFNsYXRlZ3JheSAtPiAxMTIsIDEyOCwgMTQ0XG4gICAgfCBTbGF0ZWdyZXkgLT4gMTEyLCAxMjgsIDE0NFxuICAgIHwgU25vdyAtPiAyNTUsIDI1MCwgMjUwXG4gICAgfCBTcHJpbmdncmVlbiAtPiAwLCAyNTUsIDEyN1xuICAgIHwgU3RlZWxibHVlIC0+IDcwLCAxMzAsIDE4MFxuICAgIHwgVGFuIC0+IDIxMCwgMTgwLCAxNDBcbiAgICB8IFRlYWwgLT4gMCwgMTI4LCAxMjhcbiAgICB8IFRoaXN0bGUgLT4gMjE2LCAxOTEsIDIxNlxuICAgIHwgVG9tYXRvIC0+IDI1NSwgOTksIDcxXG4gICAgfCBUdXJxdW9pc2UgLT4gNjQsIDIyNCwgMjA4XG4gICAgfCBWaW9sZXQgLT4gMjM4LCAxMzAsIDIzOFxuICAgIHwgV2hlYXQgLT4gMjQ1LCAyMjIsIDE3OVxuICAgIHwgV2hpdGUgLT4gMjU1LCAyNTUsIDI1NVxuICAgIHwgV2hpdGVzbW9rZSAtPiAyNDUsIDI0NSwgMjQ1XG4gICAgfCBZZWxsb3cgLT4gMjU1LCAyNTUsIDBcbiAgICB8IFllbGxvd2dyZWVuIC0+IDE1NCwgMjA1LCA1MFxuXG4gIHR5cGUgdCA9XG4gICAgfCBOYW1lIG9mIG5hbWVcbiAgICB8IFJHQiBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogUmVkLCBHcmVlbiBhbmQgQmx1ZSB2YWx1ZXMuIENsaXBwZWQgdG8gW1swLi4yNTVdXSBieSBtb3N0IChBbGw/KVxuICAgICAgICAgICAgYnJvd3NlcnMuICopXG4gICAgfCBSR0JfcGVyY2VudCBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogUkdCIGNoYW5uZWxzIGFyZSBzcGVjaWZpZWQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZWlyIG1heGltYWwgdmFsdWUuICopXG4gICAgfCBSR0JBIG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFNhbWUgYXMgUkdCIHdpdGggYWRkaXRpb25hbCB0cmFuc3BhcmVuY3kgYXJndW1lbnQuIE9wYWNpdHkgc2hvdWxkIGJlIGluXG4gICAgICAgICAgICBbMC5dIChjb21wbGV0ZWx5IHRyYW5zcGFyZW50KSBhbmQgWzEuXSAoY29tcGxldGVseSBvcGFxdWUpLiAqKVxuICAgIHwgUkdCQV9wZXJjZW50IG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFJHQiBjaGFubmVscyBzcGVjaWZpZWQgYXMgcGVyY2VudGFnZSBvZiB0aGVpciBtYXhpbWFsIHZhbHVlLiBBbHBoYVxuICAgICAgICAgICAgY2hhbm5lbCAob3BhY2l0eSkgaXMgc3RpbGwgYSBbMC5dIHRvIFsxLl0gZmxvYXQuICopXG4gICAgfCBIU0wgb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIEh1ZSwgU2F0dXJhdGlvbiBhbmQgTGlnaHRuZXNzIHZhbHVlcy4gSHVlIGlzIGFuIGFuZ2xlIGluIGRlZ3JlZSAoaW5cbiAgICAgICAgICAgIGludGVydmFsIFtbMC4uMzYwW10pLiBTYXR1cmF0aW9uIGlzIGEgcGVyY2VudGFnZSAoW1swLi4xMDBdXSkgd2l0aCBbMF1cbiAgICAgICAgICAgIGJlaW5nIGNvbG9ybGVzcy4gTGlnaHRuZXNzIGlzIGFsc28gYSBwZXJjZW50YWdlIChbWzAuLjEwMF1dKSB3aXRoIFswXVxuICAgICAgICAgICAgYmVpbmcgYmxhY2suICopXG4gICAgfCBIU0xBIG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFNhbWUgYXMgSFNMIHdpdGggYW4gb3BhY2l0eSBhcmd1bWVudCBiZXR3ZWVuIFswLl0gYW5kIFsxLl0uICopXG5cbiAgbGV0IHJnYiA/YSByIGcgYiA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBOb25lIC0+IFJHQiAociwgZywgYilcbiAgICB8IFNvbWUgYSAtPiBSR0JBIChyLCBnLCBiLCBhKVxuXG4gIGxldCBoc2wgP2EgaCBzIGwgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgTm9uZSAtPiBIU0wgKGgsIHMsIGwpXG4gICAgfCBTb21lIGEgLT4gSFNMQSAoaCwgcywgbCwgYSlcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgTmFtZSBuIC0+IHN0cmluZ19vZl9uYW1lIG5cbiAgICB8IFJHQiAociwgZywgYikgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2IoJWQsJWQsJWQpXCIgciBnIGJcbiAgICB8IFJHQl9wZXJjZW50IChyLCBnLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYiglZCUlLCVkJSUsJWQlJSlcIiByIGcgYlxuICAgIHwgUkdCQSAociwgZywgYiwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2JhKCVkLCVkLCVkLCVmKVwiIHIgZyBiIGFcbiAgICB8IFJHQkFfcGVyY2VudCAociwgZywgYiwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2JhKCVkJSUsJWQlJSwlZCUlLCVmKVwiIHIgZyBiIGFcbiAgICB8IEhTTCAoaCwgcywgbCkgLT4gUHJpbnRmLnNwcmludGYgXCJoc2woJWQsJWQlJSwlZCUlKVwiIGggcyBsXG4gICAgfCBIU0xBIChoLCBzLCBsLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcImhzbGEoJWQsJWQlJSwlZCUlLCVmKVwiIGggcyBsIGFcblxuICBsZXQgaGV4X29mX3JnYiAocmVkLCBncmVlbiwgYmx1ZSkgPVxuICAgIGxldCBpbl9yYW5nZSBpID1cbiAgICAgIGlmIGkgPCAwIHx8IGkgPiAyNTVcbiAgICAgIHRoZW4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHN0cmluZ19vZl9pbnQgaSBeIFwiIGlzIG91dCBvZiB2YWxpZCByYW5nZVwiKSlcbiAgICBpblxuICAgIGluX3JhbmdlIHJlZDtcbiAgICBpbl9yYW5nZSBncmVlbjtcbiAgICBpbl9yYW5nZSBibHVlO1xuICAgIFByaW50Zi5zcHJpbnRmIFwiIyUwMlglMDJYJTAyWFwiIHJlZCBncmVlbiBibHVlXG5cbiAgKCogT2NhbWwgPC0+IEpTIHJlcHJlc2VudGF0aW9uICopXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgKCogVE9ETz8gYmUgbW9yZSByZXN0cmljdGl2ZSwgY2xpcCB2YWx1ZXMgaW50byBzdGFuZGFyZCByYW5nZSAqKVxuICBsZXQganNfdF9vZl9qc19zdHJpbmcgcyA9XG4gICAgbGV0IHJnYl9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXnJnYlxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JfcGN0X3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiXFxcXChcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJVxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYmFfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JhXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JhX3BjdF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXnJnYmFcXFxcKFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IGhzbF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXmhzbFxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJVxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IGhzbGFfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5oc2xhXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgaWYgSnMudG9fYm9vbCAocmdiX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiYV9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYl9wY3RfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JhX3BjdF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKGhzbF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKGhzbGFfcmUjI3Rlc3QgcylcbiAgICB0aGVuIHNcbiAgICBlbHNlIGlmIExpc3QubWVtXG4gICAgICAgICAgICAgIChKcy50b19zdHJpbmcgcylcbiAgICAgICAgICAgICAgWyBcImFsaWNlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJhbnRpcXVld2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiYXF1YVwiXG4gICAgICAgICAgICAgIDsgXCJhcXVhbWFyaW5lXCJcbiAgICAgICAgICAgICAgOyBcImF6dXJlXCJcbiAgICAgICAgICAgICAgOyBcImJlaWdlXCJcbiAgICAgICAgICAgICAgOyBcImJpc3F1ZVwiXG4gICAgICAgICAgICAgIDsgXCJibGFja1wiXG4gICAgICAgICAgICAgIDsgXCJibGFuY2hlZGFsbW9uZFwiXG4gICAgICAgICAgICAgIDsgXCJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImJsdWV2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwiYnJvd25cIlxuICAgICAgICAgICAgICA7IFwiYnVybHl3b29kXCJcbiAgICAgICAgICAgICAgOyBcImNhZGV0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJjaGFydHJldXNlXCJcbiAgICAgICAgICAgICAgOyBcImNob2NvbGF0ZVwiXG4gICAgICAgICAgICAgIDsgXCJjb3JhbFwiXG4gICAgICAgICAgICAgIDsgXCJjb3JuZmxvd2VyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJjb3Juc2lsa1wiXG4gICAgICAgICAgICAgIDsgXCJjcmltc29uXCJcbiAgICAgICAgICAgICAgOyBcImN5YW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2JsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGFya2N5YW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2dvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyZXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya2toYWtpXCJcbiAgICAgICAgICAgICAgOyBcImRhcmttYWdlbnRhXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvbGl2ZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvcmFuZ2VcIlxuICAgICAgICAgICAgICA7IFwiZGFya29yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrcmVkXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwiZGFya3NlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmt0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwiZGFya3Zpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJkZWVwcGlua1wiXG4gICAgICAgICAgICAgIDsgXCJkZWVwc2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkaW1ncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRpbWdyZXlcIlxuICAgICAgICAgICAgICA7IFwiZG9kZ2VyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJmaXJlYnJpY2tcIlxuICAgICAgICAgICAgICA7IFwiZmxvcmFsd2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiZm9yZXN0Z3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZnVjaHNpYVwiXG4gICAgICAgICAgICAgIDsgXCJnYWluc2Jvcm9cIlxuICAgICAgICAgICAgICA7IFwiZ2hvc3R3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJnb2xkXCJcbiAgICAgICAgICAgICAgOyBcImdvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJncmF5XCJcbiAgICAgICAgICAgICAgOyBcImdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImdyZWVueWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImdyZXlcIlxuICAgICAgICAgICAgICA7IFwiaG9uZXlkZXdcIlxuICAgICAgICAgICAgICA7IFwiaG90cGlua1wiXG4gICAgICAgICAgICAgIDsgXCJpbmRpYW5yZWRcIlxuICAgICAgICAgICAgICA7IFwiaW5kaWdvXCJcbiAgICAgICAgICAgICAgOyBcIml2b3J5XCJcbiAgICAgICAgICAgICAgOyBcImtoYWtpXCJcbiAgICAgICAgICAgICAgOyBcImxhdmVuZGVyXCJcbiAgICAgICAgICAgICAgOyBcImxhdmVuZGVyYmx1c2hcIlxuICAgICAgICAgICAgICA7IFwibGF3bmdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxlbW9uY2hpZmZvblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRjb3JhbFwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGN5YW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmF5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmV5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0cGlua1wiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHN0ZWVsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJsaW1lXCJcbiAgICAgICAgICAgICAgOyBcImxpbWVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaW5lblwiXG4gICAgICAgICAgICAgIDsgXCJtYWdlbnRhXCJcbiAgICAgICAgICAgICAgOyBcIm1hcm9vblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1hcXVhbWFyaW5lXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtb3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXB1cnBsZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc3ByaW5nZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtdHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXZpb2xldHJlZFwiXG4gICAgICAgICAgICAgIDsgXCJtaWRuaWdodGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWludGNyZWFtXCJcbiAgICAgICAgICAgICAgOyBcIm1pc3R5cm9zZVwiXG4gICAgICAgICAgICAgIDsgXCJtb2NjYXNpblwiXG4gICAgICAgICAgICAgIDsgXCJuYXZham93aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJuYXZ5XCJcbiAgICAgICAgICAgICAgOyBcIm9sZGxhY2VcIlxuICAgICAgICAgICAgICA7IFwib2xpdmVcIlxuICAgICAgICAgICAgICA7IFwib2xpdmVkcmFiXCJcbiAgICAgICAgICAgICAgOyBcIm9yYW5nZVwiXG4gICAgICAgICAgICAgIDsgXCJvcmFuZ2VyZWRcIlxuICAgICAgICAgICAgICA7IFwib3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcInBhbGVnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwicGFsZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInBhbGV0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwicGFsZXZpb2xldHJlZFwiXG4gICAgICAgICAgICAgIDsgXCJwYXBheWF3aGlwXCJcbiAgICAgICAgICAgICAgOyBcInBlYWNocHVmZlwiXG4gICAgICAgICAgICAgIDsgXCJwZXJ1XCJcbiAgICAgICAgICAgICAgOyBcInBpbmtcIlxuICAgICAgICAgICAgICA7IFwicGx1bVwiXG4gICAgICAgICAgICAgIDsgXCJwb3dkZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcInB1cnBsZVwiXG4gICAgICAgICAgICAgIDsgXCJyZWRcIlxuICAgICAgICAgICAgICA7IFwicm9zeWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInJveWFsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzYWRkbGVicm93blwiXG4gICAgICAgICAgICAgIDsgXCJzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwic2FuZHlicm93blwiXG4gICAgICAgICAgICAgIDsgXCJzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJzZWFzaGVsbFwiXG4gICAgICAgICAgICAgIDsgXCJzaWVubmFcIlxuICAgICAgICAgICAgICA7IFwic2lsdmVyXCJcbiAgICAgICAgICAgICAgOyBcInNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwic25vd1wiXG4gICAgICAgICAgICAgIDsgXCJzcHJpbmdncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJzdGVlbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwidGFuXCJcbiAgICAgICAgICAgICAgOyBcInRlYWxcIlxuICAgICAgICAgICAgICA7IFwidGhpc3RsZVwiXG4gICAgICAgICAgICAgIDsgXCJ0b21hdG9cIlxuICAgICAgICAgICAgICA7IFwidHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcInZpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJ3aGVhdFwiXG4gICAgICAgICAgICAgIDsgXCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJ3aGl0ZXNtb2tlXCJcbiAgICAgICAgICAgICAgOyBcInllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJ5ZWxsb3dncmVlblwiXG4gICAgICAgICAgICAgIF1cbiAgICB0aGVuIHNcbiAgICBlbHNlIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChKcy50b19zdHJpbmcgcyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yXCIpKVxuXG4gIGxldCBuYW1lIGNuID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfbmFtZSBjbilcblxuICBsZXQganMgPSBmdW5jdGlvblxuICAgIHwgTmFtZSBuIC0+IG5hbWUgblxuICAgIHwgKFJHQiBfIHwgUkdCX3BlcmNlbnQgXyB8IFJHQkEgXyB8IFJHQkFfcGVyY2VudCBfIHwgSFNMIF8gfCBIU0xBIF8pIGFzIGMgLT5cbiAgICAgICAgSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCBjKVxuXG4gIGxldCBtbCBjID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyBjIGluXG4gICAgdHJ5IE5hbWUgKG5hbWVfb2Zfc3RyaW5nIHMpXG4gICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gKFxuICAgICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yXCIpKSBpblxuICAgICAgbGV0IHJlX3JnYiA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIocmdiYT8pXFxcXCgoPzooXFxcXGQqKSwoXFxcXGQqKSwoXFxcXGQqKSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IHJlX3JnYl9wY3QgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKHJnYmE/KVxcXFwoKD86KFxcXFxkKiklLChcXFxcZCopJSwoXFxcXGQqKSUoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCByZV9oc2wgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKGhzbGE/KVxcXFwoKD86KFxcXFxkKiksKFxcXFxkKiklLChcXFxcZCopJSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IGlfb2Zfc19vID0gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgfCBTb21lIGkgLT4gKFxuICAgICAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgaVxuICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgfCBGYWlsdXJlIHMgLT5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiY29sb3IgY29udmVyc2lvbiBlcnJvciAoXCIgXiBpIF4gXCIpOiBcIiBeIHMpKSlcbiAgICAgIGluXG4gICAgICBsZXQgZl9vZl9zIGYgPVxuICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgfCBGYWlsdXJlIHMgLT5cbiAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJjb2xvciBjb252ZXJzaW9uIGVycm9yIChcIiBeIGYgXiBcIik6IFwiIF4gcykpXG4gICAgICBpblxuICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9yZ2IgcyAwIHdpdGhcbiAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgIHwgU29tZSBcInJnYlwiIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBSR0IgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgIHwgU29tZSBcInJnYmFcIiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgfCBTb21lIGEgLT4gUkdCQSAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpKVxuICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX3JnYl9wY3QgcyAwIHdpdGhcbiAgICAgICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXCJyZ2JcIiAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gUkdCX3BlcmNlbnQgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgICAgICB8IFNvbWUgXCJyZ2JhXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAgICAgICAgICAgUkdCQV9wZXJjZW50IChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9oc2wgcyAwIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBTb21lIFwiaHNsXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IEhTTCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXCJoc2xhXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEhTTEEgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKSkpKVxuZW5kXG5cbm1vZHVsZSBMZW5ndGggPSBzdHJ1Y3RcbiAgKCogaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy12YWx1ZXMvI2xlbmd0aHMgKilcblxuICAoKiBUT0RPOlxuICAgICB7W1xuICAgICAgIHR5cGUganNfdCA9IHByaXZhdGUgSnMuc3RyaW5nIEpzLnRcbiAgICAgICB2YWwganNfdF9vZl90XG4gICAgICAgdmFsIHRfb2ZfanNfdFxuICAgICAgIHZhbCB0X29mX3N0cmluZ1xuICAgICBdfVxuICAqKVxuXG4gIHR5cGUgdCA9XG4gICAgfCBaZXJvXG4gICAgKCogcmVsYXRpdmUgKilcbiAgICB8IEVtIG9mIGZsb2F0XG4gICAgfCBFeCBvZiBmbG9hdFxuICAgIHwgUHggb2YgZmxvYXRcbiAgICB8IEdkIG9mIGZsb2F0XG4gICAgfCBSZW0gb2YgZmxvYXRcbiAgICB8IFZ3IG9mIGZsb2F0XG4gICAgfCBWaCBvZiBmbG9hdFxuICAgIHwgVm0gb2YgZmxvYXRcbiAgICB8IENoIG9mIGZsb2F0XG4gICAgKCogYWJzb2x1dGUgKilcbiAgICB8IE1tIG9mIGZsb2F0XG4gICAgfCBDbSBvZiBmbG9hdFxuICAgIHwgSW4gb2YgZmxvYXRcbiAgICB8IFB0IG9mIGZsb2F0XG4gICAgfCBQYyBvZiBmbG9hdFxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBaZXJvIC0+IFwiMFwiXG4gICAgfCBFbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJlbVwiXG4gICAgfCBFeCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJleFwiXG4gICAgfCBQeCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJweFwiXG4gICAgfCBHZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJnZFwiXG4gICAgfCBSZW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicmVtXCJcbiAgICB8IFZ3IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZ3XCJcbiAgICB8IFZoIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZoXCJcbiAgICB8IFZtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZtXCJcbiAgICB8IENoIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImNoXCJcbiAgICB8IE1tIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcIm1tXCJcbiAgICB8IENtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImNtXCJcbiAgICB8IEluIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImluXCJcbiAgICB8IFB0IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInB0XCJcbiAgICB8IFBjIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInBjXCJcblxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBqcyB0ID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCB0KVxuXG4gIGxldCBtbCB0ID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyB0IGluXG4gICAgaWYgU3RyaW5nLmVxdWFsIHMgXCIwXCJcbiAgICB0aGVuIFplcm9cbiAgICBlbHNlXG4gICAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgbGVuZ3RoXCIpKSBpblxuICAgICAgbGV0IHJlID0gUmVnZXhwLnJlZ2V4cCBcIl4oXFxcXGQqKD86XFxcXC5cXFxcZCopPylcXFxccyooXFxcXFMqKSRcIiBpblxuICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZSBzIDAgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwibGVuZ3RoIGNvbnZlcnNpb24gZXJyb3I6IFwiIF4gcykpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgIHwgU29tZSBcImVtXCIgLT4gRW0gZlxuICAgICAgICAgIHwgU29tZSBcImV4XCIgLT4gRXggZlxuICAgICAgICAgIHwgU29tZSBcInB4XCIgLT4gUHggZlxuICAgICAgICAgIHwgU29tZSBcImdkXCIgLT4gR2QgZlxuICAgICAgICAgIHwgU29tZSBcInJlbVwiIC0+IFJlbSBmXG4gICAgICAgICAgfCBTb21lIFwidndcIiAtPiBWdyBmXG4gICAgICAgICAgfCBTb21lIFwidmhcIiAtPiBWaCBmXG4gICAgICAgICAgfCBTb21lIFwidm1cIiAtPiBWbSBmXG4gICAgICAgICAgfCBTb21lIFwiY2hcIiAtPiBDaCBmXG4gICAgICAgICAgfCBTb21lIFwibW1cIiAtPiBNbSBmXG4gICAgICAgICAgfCBTb21lIFwiY21cIiAtPiBDbSBmXG4gICAgICAgICAgfCBTb21lIFwiaW5cIiAtPiBJbiBmXG4gICAgICAgICAgfCBTb21lIFwicHRcIiAtPiBQdCBmXG4gICAgICAgICAgfCBTb21lIFwicGNcIiAtPiBQYyBmXG4gICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKSlcbmVuZFxuXG5tb2R1bGUgQW5nbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IERlZyBvZiBmbG9hdFxuICAgIHwgR3JhZCBvZiBmbG9hdFxuICAgIHwgUmFkIG9mIGZsb2F0XG4gICAgfCBUdXJucyBvZiBmbG9hdFxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBEZWcgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZGVnXCJcbiAgICB8IEdyYWQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZ3JhZFwiXG4gICAgfCBSYWQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicmFkXCJcbiAgICB8IFR1cm5zIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInR1cm5zXCJcblxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBqcyB0ID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCB0KVxuXG4gIGxldCBtbCBqID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyBqIGluXG4gICAgbGV0IHJlID0gUmVnZXhwLnJlZ2V4cCBcIl4oXFxcXGQqKD86XFxcXC5cXFxcZCopKShkZWd8Z3JhZHxyYWR8dHVybnMpJFwiIGluXG4gICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGxlbmd0aFwiKSkgaW5cbiAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlIHMgMCB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgLT5cbiAgICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJsZW5ndGggY29udmVyc2lvbiBlcnJvcjogXCIgXiBzKSkpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiB3aXRoXG4gICAgICAgIHwgU29tZSBcImRlZ1wiIC0+IERlZyBmXG4gICAgICAgIHwgU29tZSBcImdyYWRcIiAtPiBHcmFkIGZcbiAgICAgICAgfCBTb21lIFwicmFkXCIgLT4gUmFkIGZcbiAgICAgICAgfCBTb21lIFwidHVybnNcIiAtPiBUdXJucyBmXG4gICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxuKCoqIEphdmFzY3JpcHQgZXZlbnRzLiAqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBUeXAgPSBEb21faHRtbC5FdmVudFxuXG50eXBlIGxpc3RlbmVyID0gRG9tX2h0bWwuZXZlbnRfbGlzdGVuZXJfaWRcblxubGV0IGxpc3RlbiA/KGNhcHR1cmUgPSBmYWxzZSkgdGFyZ2V0IHR5cCBjYiA9XG4gIERvbV9odG1sLmFkZEV2ZW50TGlzdGVuZXJcbiAgICB0YXJnZXRcbiAgICB0eXBcbiAgICAoRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gbiBlIC0+IEpzLmJvb2wgKGNiIG4gZSkpKVxuICAgIChKcy5ib29sIGNhcHR1cmUpXG5cbmxldCBzdG9wX2xpc3RlbiA9IERvbV9odG1sLnJlbW92ZUV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb25cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmxldCB4bWxucyA9IEpzLnN0cmluZyBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcblxuKCogdHJhbnNsYXRlIHNwZWMgZnJvbSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvaWRsLmh0bWwgKilcbigqIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9zdHJ1Y3QuaHRtbCAqKVxuXG50eXBlIGVycm9yX2NvZGUgPVxuICB8IFdST05HX1RZUEVfRVJSXG4gIHwgSU5WQUxJRF9WQUxVRV9FUlJcbiAgfCBNQVRSSVhfTk9UX0lOVkVSVEFCTEVcblxuY2xhc3MgdHlwZSBzdmdfZXJyb3IgPSBvYmplY3RcbiAgaW5oZXJpdCBKcy5lcnJvclxuXG4gIG1ldGhvZCBjb2RlIDogZXJyb3JfY29kZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5leGNlcHRpb24gU1ZHRXJyb3Igb2Ygc3ZnX2Vycm9yXG5cbnR5cGUgbGVuZ3RoVW5pdFR5cGUgPVxuICB8IExFTkdUSFRZUEVfVU5LTk9XTlxuICB8IExFTkdUSFRZUEVfTlVNQkVSXG4gIHwgTEVOR1RIVFlQRV9QRVJDRU5UQUdFXG4gIHwgTEVOR1RIVFlQRV9FTVNcbiAgfCBMRU5HVEhUWVBFX0VYU1xuICB8IExFTkdUSFRZUEVfUFhcbiAgfCBMRU5HVEhUWVBFX0NNXG4gIHwgTEVOR1RIVFlQRV9NTVxuICB8IExFTkdUSFRZUEVfSU5cbiAgfCBMRU5HVEhUWVBFX1BUXG4gIHwgTEVOR1RIVFlQRV9QQ1xuXG50eXBlIGFuZ2xlVW5pdFR5cGUgPVxuICB8IEFOR0xFVFlQRV9VTktOT1dOXG4gIHwgQU5HTEVUWVBFX1VOU1BFQ0lGSUVEXG4gIHwgQU5HTEVUWVBFX0RFR1xuICB8IEFOR0xFVFlQRV9SQURcbiAgfCBBTkdMRVRZUEVfR1JBRFxuXG50eXBlIGNvbG9yVHlwZSA9XG4gIHwgQ09MT1JUWVBFX1VOS05PV05cbiAgfCBDT0xPUlRZUEVfUkdCQ09MT1JcbiAgfCBDT0xPUlRZUEVfUkdCQ09MT1JfSUNDQ09MT1JcbiAgfCBDT0xPUlRZUEVfQ1VSUkVOVENPTE9SXG5cbnR5cGUgYWxpZ25tZW50VHlwZSA9XG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19VTktOT1dOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1BWFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNQVhcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYXG5cbnR5cGUgbWVldE9yU2xpY2VUeXBlID1cbiAgfCBNRUVUT1JTTElDRV9VTktOT1dOXG4gIHwgTUVFVE9SU0xJQ0VfTUVFVFxuICB8IE1FRVRPUlNMSUNFX1NMSUNFXG5cbnR5cGUgdHJhbnNmb3JtVHlwZSA9XG4gIHwgVFJBTlNGT1JNX1VOS05PV05cbiAgfCBUUkFOU0ZPUk1fTUFUUklYXG4gIHwgVFJBTlNGT1JNX1RSQU5TTEFURVxuICB8IFRSQU5TRk9STV9TQ0FMRVxuICB8IFRSQU5TRk9STV9ST1RBVEVcbiAgfCBUUkFOU0ZPUk1fU0tFV1hcbiAgfCBUUkFOU0ZPUk1fU0tFV1lcblxudHlwZSB6b29tQW5kUGFuVHlwZSA9XG4gIHwgWk9PTUFORFBBTl9VTktOT1dOXG4gIHwgWk9PTUFORFBBTl9ESVNBQkxFXG4gIHwgWk9PTUFORFBBTl9NQUdOSUZZXG5cbnR5cGUgbGVuZ3RoQWRqdXN0ID1cbiAgfCBMRU5HVEhBREpVU1RfVU5LTk9XTlxuICB8IExFTkdUSEFESlVTVF9TUEFDSU5HXG4gIHwgTEVOR1RIQURKVVNUX1NQQUNJTkdBTkRHTFlQSFNcblxudHlwZSB1bml0VHlwZSA9XG4gIHwgVU5JVF9UWVBFX1VOS05PV05cbiAgfCBVTklUX1RZUEVfVVNFUlNQQUNFT05VU0VcbiAgfCBVTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1hcblxuKCogaW50ZXJmYWNlIFNWR1JlbmRlcmluZ0ludGVudCAqKVxudHlwZSBpbnRlbnRUeXBlID1cbiAgfCBSRU5ERVJJTkdfSU5URU5UX1VOS05PV05cbiAgfCBSRU5ERVJJTkdfSU5URU5UX0FVVE9cbiAgfCBSRU5ERVJJTkdfSU5URU5UX1BFUkNFUFRVQUxcbiAgfCBSRU5ERVJJTkdfSU5URU5UX1JFTEFUSVZFX0NPTE9SSU1FVFJJQ1xuICB8IFJFTkRFUklOR19JTlRFTlRfU0FUVVJBVElPTlxuICB8IFJFTkRFUklOR19JTlRFTlRfQUJTT0xVVEVfQ09MT1JJTUVUUklDXG5cbigqIFBhdGggU2VnbWVudCBUeXBlcyAqKVxudHlwZSBwYXRoU2VnbWVudFR5cGUgPVxuICB8IFBBVEhTRUdfVU5LTk9XTlxuICB8IFBBVEhTRUdfQ0xPU0VQQVRIXG4gIHwgUEFUSFNFR19NT1ZFVE9fQUJTXG4gIHwgUEFUSFNFR19NT1ZFVE9fUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfUkVMXG4gIHwgUEFUSFNFR19BUkNfQUJTXG4gIHwgUEFUSFNFR19BUkNfUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9SRUxcblxuKCogdGV4dFBhdGggTWV0aG9kIFR5cGVzICopXG50eXBlIHRleHRQYXRoTWV0aG9kVHlwZSA9XG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9VTktOT1dOXG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTlxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfU1RSRVRDSFxuXG4oKiB0ZXh0UGF0aCBTcGFjaW5nIFR5cGVzICopXG50eXBlIHRleHRQYXRoU3BhY2luZ1R5cGUgPVxuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX1VOS05PV05cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9BVVRPXG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1RcblxuKCogU3ByZWFkIE1ldGhvZCBUeXBlcyAqKVxudHlwZSBzcHJlYWRNZXRob2RUeXBlID1cbiAgfCBTUFJFQURNRVRIT0RfVU5LTk9XTlxuICB8IFNQUkVBRE1FVEhPRF9QQURcbiAgfCBTUFJFQURNRVRIT0RfUkVGTEVDVFxuICB8IFNQUkVBRE1FVEhPRF9SRVBFQVRcblxudHlwZSBzdXNwZW5kSGFuZGxlSURcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgWydhXSBhbmltYXRlZCA9IG9iamVjdFxuICBtZXRob2QgYmFzZVZhbCA6ICdhIHByb3BcblxuICBtZXRob2QgYW5pbVZhbCA6ICdhIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gbGlzdCA9IG9iamVjdFxuICBtZXRob2QgbnVtYmVyT2ZJdGVtcyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsZWFyIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluaXRpYWxpemUgOiAnYSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldEl0ZW0gOiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnRJdGVtQmVmb3JlIDogJ2EgLT4gaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVwbGFjZUl0ZW0gOiAnYSAtPiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVJdGVtIDogaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgYXBwZW5kSXRlbSA6ICdhIC0+ICdhIG1ldGhcbmVuZFxuXG4oKioqKilcblxuKCogaW50ZXJmYWNlIFNWR0VsZW1lbnQgKilcbmNsYXNzIHR5cGUgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbS5lbGVtZW50XG5cbiAgbWV0aG9kIGlkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4bWxiYXNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvd25lclNWR0VsZW1lbnQgOiBzdmdFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFN0cmluZyAqKVxuYW5kIGFuaW1hdGVkU3RyaW5nID0gW2pzX3N0cmluZyB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRCb29sZWFuICopXG5hbmQgYW5pbWF0ZWRCb29sZWFuID0gW2Jvb2wgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1N0cmluZ0xpc3QgKilcbmFuZCBzdHJpbmdMaXN0ID0gW2pzX3N0cmluZyB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uICopXG5hbmQgYW5pbWF0ZWRFbnVtZXJhdGlvbiA9IFtpbnQgKCpzaG9ydCopXSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRJbnRlZ2VyICopXG5hbmQgYW5pbWF0ZWRJbnRlZ2VyID0gW2ludF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTnVtYmVyICopXG5hbmQgYW5pbWF0ZWROdW1iZXIgPSBbbnVtYmVyX3RdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdOdW1iZXJMaXN0ICopXG5hbmQgbnVtYmVyTGlzdCA9IFtudW1iZXIgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0ICopXG5hbmQgYW5pbWF0ZWROdW1iZXJMaXN0ID0gW251bWJlckxpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0xlbmd0aCAqKVxuYW5kIGxlbmd0aCA9IG9iamVjdFxuICBtZXRob2QgdW5pdFR5cGUgOiBsZW5ndGhVbml0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlQXNTdHJpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMgOiBsZW5ndGhVbml0VHlwZSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udmVydFRvU3BlY2lmaWVkVW5pdHMgOiBsZW5ndGhVbml0VHlwZSAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRMZW5ndGggKilcbmFuZCBhbmltYXRlZExlbmd0aCA9IFtsZW5ndGggdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0xlbmd0aExpc3QgKilcbmFuZCBsZW5ndGhMaXN0ID0gW2xlbmd0aCB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZExlbmd0aExpc3QgKilcbmFuZCBhbmltYXRlZExlbmd0aExpc3QgPSBbbGVuZ3RoTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5nbGUgKilcbmFuZCBhbmdsZSA9IG9iamVjdFxuICBtZXRob2QgdW5pdFR5cGUgOiBhbmdsZVVuaXRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlSW5TcGVjaWZpZWRVbml0cyA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVBc1N0cmluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyA6IGFuZ2xlVW5pdFR5cGUgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzIDogYW5nbGVVbml0VHlwZSAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRBbmdsZSAqKVxuYW5kIGFuaW1hdGVkQW5nbGUgPSBbYW5nbGUgdF0gYW5pbWF0ZWRcblxuKCogWFhYWFggTW92ZSBpdCAqKVxuYW5kIHJnYkNvbG9yID0gb2JqZWN0IGVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3IgKilcbmFuZCBjb2xvciA9IG9iamVjdFxuICAoKiBYWFggaW5oZXJpdCBjc3NWYWx1ZSAqKVxuICBtZXRob2QgY29sb3JUeXBlIDogY29sb3JUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmdiQ29sb3IgOiByZ2JDb2xvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaWNjQ29sb3IgOiBpY2NDb2xvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0UkdCQ29sb3IgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0UkdCQ29sb3JJQ0NDb2xvciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRDb2xvciA6IGNvbG9yVHlwZSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSUNDQ29sb3IgKilcbmFuZCBpY2NDb2xvciA9IG9iamVjdFxuICBtZXRob2QgY29sb3JQcm9maWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xvcnMgOiBudW1iZXJMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSZWN0ICopXG5hbmQgcmVjdCA9IG9iamVjdFxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRSZWN0ICopXG5hbmQgYW5pbWF0ZWRSZWN0ID0gW3JlY3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1N0eWxhYmxlICopXG5hbmQgc3R5bGFibGUgPSBvYmplY3RcbiAgbWV0aG9kIGNsYXNzTmFtZSA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHlsZSA6IERvbV9odG1sLmNzc1N0eWxlRGVjbGFyYXRpb24gdCByZWFkb25seV9wcm9wXG4gICgqICAgQ1NTVmFsdWUgZ2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lKTsgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTG9jYXRhYmxlICopXG5hbmQgbG9jYXRhYmxlID0gb2JqZWN0XG4gIG1ldGhvZCBuZWFyZXN0Vmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRCQm94IDogcmVjdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q1RNIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTY3JlZW5DVE0gOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRyYW5zZm9ybVRvRWxlbWVudCA6IGVsZW1lbnQgdCAtPiBtYXRyaXggdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybWFibGUgKilcbmFuZCB0cmFuc2Zvcm1hYmxlID0gb2JqZWN0XG4gIGluaGVyaXQgbG9jYXRhYmxlXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGVzdHMgKilcbmFuZCB0ZXN0cyA9IG9iamVjdFxuICBtZXRob2QgcmVxdWlyZWRGZWF0dXJlcyA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlcXVpcmVkRXh0ZW5zaW9ucyA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN5c3RlbUxhbmd1YWdlIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGFzRXh0ZW5zaW9uIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGFuZ1NwYWNlICopXG5hbmQgbGFuZ1NwYWNlID0gb2JqZWN0XG4gIG1ldGhvZCB4bWxsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4bWxzcGFjZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCAqKVxuYW5kIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgPSBvYmplY3RcbiAgbWV0aG9kIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgOiBhbmltYXRlZEJvb2xlYW4gdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpdFRvVmlld0JveCAqKVxuYW5kIGZpdFRvVmlld0JveCA9IG9iamVjdFxuICBtZXRob2Qgdmlld0JveCA6IGFuaW1hdGVkUmVjdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc2VydmVBc3BlY3RSYXRpbyA6IGFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHWm9vbUFuZFBhbiAqKVxuYW5kIHpvb21BbmRQYW4gPSBvYmplY3RcbiAgbWV0aG9kIHpvb21BbmRQYW4gOiB6b29tQW5kUGFuVHlwZSBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1ZpZXdTcGVjICopXG5hbmQgdmlld1NwZWMgPSBvYmplY3RcbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBtZXRob2QgdHJhbnNmb3JtIDogdHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld1RhcmdldCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdCb3hTdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlQXNwZWN0UmF0aW9TdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRyYW5zZm9ybVN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld1RhcmdldFN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVVJJUmVmZXJlbmNlICopXG5hbmQgdXJpUmVmZXJlbmNlID0gb2JqZWN0XG4gIG1ldGhvZCBocmVmIDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NTU1J1bGUgOiBDU1NSdWxlICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENPTE9SX1BST0ZJTEVfUlVMRSA9IDc7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRG9jdW1lbnQgKilcbmFuZCBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZG9jdW1lbnRcblxuICAoKlhYWCBpbmhlcml0IGRvY3VtZW50RXZlbnQgKilcbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWZlcnJlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZG9tYWluIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290RWxlbWVudCA6IHN2Z0VsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuICAoKiByb290RWxlbWVudCB3aWxsIGJlIG51bGwgb3IgdW5kZWZpbmVkIGluIGFuIGh0bWwgY29udGV4dCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTVkdFbGVtZW50ICopXG5hbmQgc3ZnRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBsb2NhdGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gICgqWFhYIGluaGVyaXQgZG9jdW1lbnRldmVudCwgdmlld2NzcywgZG9jdW1lbnRjc3MgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFNjcmlwdFR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRTdHlsZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZpZXdwb3J0IDogcmVjdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGl4ZWxVbml0VG9NaWxsaW1ldGVyWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGl4ZWxVbml0VG9NaWxsaW1ldGVyWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuUGl4ZWxVbml0VG9NaWxsaW1ldGVyWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuUGl4ZWxVbml0VG9NaWxsaW1ldGVyWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlQ3VycmVudFZpZXcgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VmlldyA6IHZpZXdTcGVjIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50U2NhbGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUcmFuc2xhdGUgOiBwb2ludCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VzcGVuZFJlZHJhdyA6IGludCAtPiBzdXNwZW5kSGFuZGxlSUQgbWV0aFxuXG4gIG1ldGhvZCB1bnN1c3BlbmRSZWRyYXcgOiBzdXNwZW5kSGFuZGxlSUQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuc3VzcGVuZFJlZHJhd0FsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb3JjZVJlZHJhdyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwYXVzZUFuaW1hdGlvbnMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5wYXVzZUFuaW1hdGlvbnMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYW5pbWF0aW9uc1BhdXNlZCA6IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEN1cnJlbnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRDdXJyZW50VGltZSA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0SW50ZXJzZWN0aW9uTGlzdCA6IHJlY3QgdCAtPiBlbGVtZW50IHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVuY2xvc3VyZUxpc3QgOiByZWN0IHQgLT4gZWxlbWVudCB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBjaGVja0ludGVyc2VjdGlvbiA6IGVsZW1lbnQgdCAtPiByZWN0IHQgLT4gYm9vbCB0XG5cbiAgbWV0aG9kIGNoZWNrRW5jbG9zdXJlIDogZWxlbWVudCB0IC0+IHJlY3QgdCAtPiBib29sIHRcblxuICBtZXRob2QgZGVzZWxlY3RBbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTnVtYmVyIDogbnVtYmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdMZW5ndGggOiBsZW5ndGggdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR0FuZ2xlIDogYW5nbGUgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BvaW50IDogcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR01hdHJpeCA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUmVjdCA6IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybSA6IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCA6IG1hdHJpeCB0IC0+IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudEJ5SWQgOiBqc19zdHJpbmcgdCAtPiBEb20uZWxlbWVudCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHR0VsZW1lbnQgKilcbmFuZCBnRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdEZWZzRWxlbWVudCAqKVxuYW5kIGRlZnNFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbiAgKCogWFhYWFhYWCA/IGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRGVzY0VsZW1lbnQgKilcbmFuZCBkZXNjRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcbiAgKCogWFhYWFhYWCA/IGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGl0bGVFbGVtZW50ICopXG5hbmQgdGl0bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTeW1ib2xFbGVtZW50ICopXG5hbmQgc3ltYm9sRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVXNlRWxlbWVudCAqKVxuYW5kIHVzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5zdGFuY2VSb290IDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZEluc3RhbmNlUm9vdCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZWxlbWVudEluc3RhbmNlID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgY29ycmVzcG9uZGluZ0VsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb3JyZXNwb25kaW5nVXNlRWxlbWVudCA6IHVzZUVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudE5vZGUgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoaWxkTm9kZXMgOiBlbGVtZW50SW5zdGFuY2VMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaXJzdENoaWxkIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0Q2hpbGQgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0VsZW1lbnRJbnN0YW5jZUxpc3QgKilcbmFuZCBlbGVtZW50SW5zdGFuY2VMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGVsZW1lbnRJbnN0YW5jZSB0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ltYWdlRWxlbWVudCAqKVxuYW5kIGltYWdlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuICAoKiByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmVuZFxuXG5hbmQgc3dpdGNoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5lbmRcblxuKCogWFhYIGRlcHJlY2F0ZWQgPT4gaW50ZXJmYWNlIEdldFNWR0RvY3VtZW50ID0+IFNWR0RvY3VtZW50IGdldFNWR0RvY3VtZW50KCkgKilcblxuKCogaW50ZXJmYWNlIFNWR1N0eWxlRWxlbWVudCAqKVxuYW5kIHN0eWxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIG1ldGhvZCB0eXBlXyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2ludCAqKVxuYW5kIHBvaW50ID0gb2JqZWN0XG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXRyaXhUcmFuc2Zvcm0gOiBtYXRyaXggdCAtPiBwb2ludCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9pbnRMaXN0ICopXG5hbmQgcG9pbnRMaXN0ID0gW3BvaW50IHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR01hdHJpeCAqKVxuYW5kIG1hdHJpeCA9IG9iamVjdFxuICBtZXRob2QgYSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbXVsdGlwbHkgOiBtYXRyaXggdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGludmVyc2UgOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2NhbGUgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlTm9uVW5pZm9ybSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGVGcm9tVmVjdG9yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBmbGlwWCA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZmxpcFkgOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNrZXdYIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBza2V3WSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtICopXG5hbmQgdHJhbnNmb3JtID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IHRyYW5zZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXRyaXggOiBtYXRyaXggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuZ2xlIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRNYXRyaXggOiBtYXRyaXggdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNjYWxlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJvdGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTa2V3WCA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTa2V3WSA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm1MaXN0ICopXG5hbmQgdHJhbnNmb3JtTGlzdCA9IG9iamVjdFxuICBpbmhlcml0IFt0cmFuc2Zvcm0gdF0gbGlzdFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4IDogbWF0cml4IC0+IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgY29uc29saWRhdGUgOiB0cmFuc2Zvcm0gdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCAqKVxuYW5kIGFuaW1hdGVkVHJhbnNmb3JtTGlzdCA9IFt0cmFuc2Zvcm1MaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5hbmQgcHJlc2VydmVBc3BlY3RSYXRpbyA9IG9iamVjdFxuICBtZXRob2QgYWxpZ24gOiBhbGlnbm1lbnRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWVldE9yU2xpY2UgOiBtZWV0T3JTbGljZVR5cGUgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmFuZCBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gPSBbcHJlc2VydmVBc3BlY3RSYXRpbyB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZyAqKVxuYW5kIHBhdGhTZWcgPSBvYmplY3RcbiAgbWV0aG9kIHBhdGhTZWdUeXBlIDogcGF0aFNlZ21lbnRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGF0aFNlZ1R5cGVBc0xldHRlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0Nsb3NlUGF0aCAqKVxuYW5kIHBhdGhTZWdDbG9zZVBhdGggPSBwYXRoU2VnXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTW92ZXRvQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ01vdmV0b1JlbCAqKVxuYW5kIHBhdGhTZWdNb3ZldG8gPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9BYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0byA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwgKilcbmFuZCBwYXRoU2VnQ3VydmV0b0N1YmljID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MiA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbCAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTEgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdBcmNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQXJjUmVsKilcbmFuZCBwYXRoU2VnQXJjID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCByMSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcjIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGFuZ2xlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBsYXJnZUFyY0ZsYWcgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzd2VlcEZsYWcgOiBib29sIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvVmVydGljYWwgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuZW5kXG5cbmFuZCBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHgyIDogbnVtYmVyX3RcblxuICBtZXRob2QgeTIgOiBudW1iZXJfdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsICAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5lbmRcblxuYW5kIHBhdGhTZWdMaXN0ID0gW3BhdGhTZWcgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQYXRoRGF0YSAqKVxuYW5kIGFuaW1hdGVkUGF0aERhdGEgPSBvYmplY3RcbiAgbWV0aG9kIHBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIG5vcm1hbGl6ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkTm9ybWFsaXplZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhFbGVtZW50ICopXG5hbmQgcGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQYXRoRGF0YVxuXG4gIG1ldGhvZCBwYXRoTGVuZ3RoIDogYW5pbWF0ZWROdW1iZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFRvdGFsTGVuZ3RoIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRQb2ludEF0TGVuZ3RoIDogbnVtYmVyX3QgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBhdGhTZWdBdExlbmd0aCA6IG51bWJlcl90IC0+IGludFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ2xvc2VQYXRoIDogcGF0aFNlZ0Nsb3NlUGF0aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9BYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTW92ZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b1JlbCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdNb3ZldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvQWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9SZWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gcGF0aFNlZ0N1cnZldG9DdWJpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQXJjQWJzIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gcGF0aFNlZ0FyYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdBcmNSZWwgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBwYXRoU2VnQXJjIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvVmVydGljYWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvVmVydGljYWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JlY3RFbGVtZW50ICopXG5hbmQgcmVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NpcmNsZUVsZW1lbnQgKilcbmFuZCBjaXJjbGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgciA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFbGxpcHNlRWxlbWVudCAqKVxuYW5kIGVsbGlwc2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGluZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgbGluZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgeDEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeDIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQb2ludHMgKilcbmFuZCBhbmltYXRlZFBvaW50cyA9IG9iamVjdFxuICBtZXRob2QgcG9pbnRzIDogcG9pbnRMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZHBvaW50cyA6IHBvaW50TGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9seWxpbmVFbGVtZW50ICopXG5hbmQgcG9seUxpbmVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUG9pbnRzXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvbHlnb25FbGVtZW50ICopXG5hbmQgcG9seWdvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQb2ludHNcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dENvbnRlbnRFbGVtZW50ICopXG5hbmQgdGV4dENvbnRlbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHRleHRMZW5ndGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoQWRqdXN0IDogbGVuZ3RoQWRqdXN0IGFuaW1hdGVkIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXROdW1iZXJPZkNoYXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTdWJTdHJpbmdMZW5ndGggOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhciA6IGludCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RW5kUG9zaXRpb25PZkNoYXIgOiBpbnQgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEV4dGVudE9mQ2hhciA6IGludCAtPiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRSb3RhdGlvbk9mQ2hhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldENoYXJOdW1BdFBvc2l0aW9uIDogcG9pbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0U3ViU3RyaW5nIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCAqKVxuYW5kIHRleHRQb3NpdGlvbmluZ0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0Q29udGVudEVsZW1lbnRcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHggOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR5IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb3RhdGUgOiBhbmltYXRlZE51bWJlckxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRFbGVtZW50ICopXG5hbmQgdGV4dEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5lbmRcblxuYW5kIHRzcGFuRWxlbWVudCA9IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuYW5kIHRyZWZFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRQYXRoRWxlbWVudCAqKVxuYW5kIHRleHRQYXRoRWxlbWVudE1ldGhvZCA9IFt0ZXh0UGF0aE1ldGhvZFR5cGVdIGFuaW1hdGVkXG5cbmFuZCB0ZXh0UGF0aEVsZW1lbnRTcGFjaW5nID0gW3RleHRQYXRoU3BhY2luZ1R5cGVdIGFuaW1hdGVkXG5cbmFuZCB0ZXh0UGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0Q29udGVudEVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIG1ldGhvZCBzdGFydE9mZnNldCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRob2RfIDogdGV4dFBhdGhFbGVtZW50TWV0aG9kIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BhY2luZyA6IHRleHRQYXRoRWxlbWVudFNwYWNpbmcgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaEVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBtZXRob2QgZ2x5cGhSZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm1hdCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhEZWZFbGVtZW50ICopXG5hbmQgYWx0R2x5cGhEZWZFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhJdGVtRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoSXRlbUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdHbHlwaFJlZkVsZW1lbnQgKilcbmFuZCBnbHlwaFJlZkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgbWV0aG9kIGdseXBoUmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGFpbnQgOiBTVkdDb2xvciB7ICopXG5cbigqICAgLy8gUGFpbnQgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfUkdCQ09MT1JfSUNDQ09MT1IgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX05PTkUgPSAxMDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SID0gMTAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9OT05FID0gMTAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9DVVJSRU5UQ09MT1IgPSAxMDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SID0gMTA1OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUl9JQ0NDT0xPUiA9IDEwNjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUkkgPSAxMDc7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHBhaW50VHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1cmk7ICopXG5cbigqICAgdm9pZCBzZXRVcmkoaW4gRE9NU3RyaW5nIHVyaSk7ICopXG4oKiAgIHZvaWQgc2V0UGFpbnQoaW4gdW5zaWduZWQgc2hvcnQgcGFpbnRUeXBlLCBpbiBET01TdHJpbmcgdXJpLCBpbiBET01TdHJpbmcgcmdiQ29sb3IsIGluIERPTVN0cmluZyBpY2NDb2xvcikgcmFpc2VzKFNWR0V4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHTWFya2VyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0xhbmdTcGFjZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHU3R5bGFibGUsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpdFRvVmlld0JveCB7ICopXG5cbigqICAgLy8gTWFya2VyIFVuaXQgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfVVNFUlNQQUNFT05VU0UgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lEVEggPSAyOyAqKVxuXG4oKiAgIC8vIE1hcmtlciBPcmllbnRhdGlvbiBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfQVVUTyA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX0FOR0xFID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggcmVmWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHJlZlk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hcmtlclVuaXRzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggbWFya2VyV2lkdGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBtYXJrZXJIZWlnaHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9yaWVudFR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEFuZ2xlIG9yaWVudEFuZ2xlOyAqKVxuXG4oKiAgIHZvaWQgc2V0T3JpZW50VG9BdXRvKCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIHZvaWQgc2V0T3JpZW50VG9BbmdsZShpbiBTVkdBbmdsZSBhbmdsZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3JQcm9maWxlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1VSSVJlZmVyZW5jZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHUmVuZGVyaW5nSW50ZW50IHsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBsb2NhbDsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOyAqKVxuKCogICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVuZGVyaW5nSW50ZW50OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yUHJvZmlsZVJ1bGUgOiBTVkdDU1NSdWxlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdSZW5kZXJpbmdJbnRlbnQgeyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNyYyBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lIHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVuZGVyaW5nSW50ZW50IHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0dyYWRpZW50RWxlbWVudCAqKVxuYW5kIGFuaW1hdGVkU3ByZWFkTWV0aG9kID0gW3NwcmVhZE1ldGhvZFR5cGVdIGFuaW1hdGVkXG5cbmFuZCBncmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBncmFkaWVudFVuaXRzOyAqKVxuICBtZXRob2QgZ3JhZGllbnRUcmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwcmVhZE1ldGhvZCA6IGFuaW1hdGVkU3ByZWFkTWV0aG9kIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQgKilcbmFuZCBsaW5lYXJHcmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBncmFkaWVudEVsZW1lbnRcblxuICBtZXRob2QgeDEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeDIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50ICopXG5hbmQgcmFkaWFsR3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZ3JhZGllbnRFbGVtZW50XG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3RvcEVsZW1lbnQgKilcbmFuZCBzdG9wRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgbWV0aG9kIG9mZnNldCA6IGFuaW1hdGVkTnVtYmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXR0ZXJuRWxlbWVudCAqKVxuYW5kIHBhdHRlcm5FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwYXR0ZXJuVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcGF0dGVybkNvbnRlbnRVbml0czsgKilcbiAgbWV0aG9kIHBhdHRlcm5UcmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ2xpcFBhdGhFbGVtZW50ICopXG5hbmQgY2xpcFBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBjbGlwUGF0aFVuaXRzOyAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdNYXNrRWxlbWVudCAqKVxuYW5kIG1hc2tFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hc2tVbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXNrQ29udGVudFVuaXRzOyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaWx0ZXJFbGVtZW50ICopXG5hbmQgZmlsdGVyRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZmlsdGVyVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcHJpbWl0aXZlVW5pdHM7ICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbHRlclJlc1ggOiBhbmltYXRlZEludGVnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbHRlclJlc1kgOiBhbmltYXRlZEludGVnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldEZpbHRlclJlcyA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyA6IFNWR1N0eWxhYmxlIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggd2lkdGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBoZWlnaHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyByZXN1bHQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVCbGVuZEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBCbGVuZCBNb2RlIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTk9STUFMID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9NVUxUSVBMWSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfU0NSRUVOID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9EQVJLRU4gPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX0xJR0hURU4gPSA1OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1vZGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDb2xvciBNYXRyaXggVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVggPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEUgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0xVTUlOQU5DRVRPQUxQSEEgPSA0OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3QgdmFsdWVzOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcblxuKCogICAvLyBDb21wb25lbnQgVHJhbnNmZXIgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9JREVOVElUWSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVEFCTEUgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0RJU0NSRVRFID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVIgPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0dBTU1BID0gNTsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IHRhYmxlVmFsdWVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2xvcGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBpbnRlcmNlcHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBhbXBsaXR1ZGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBleHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIG9mZnNldDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNSRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNHRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNCRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNBRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ29tcG9zaXRlIE9wZXJhdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0lOID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX09VVCA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9BVE9QID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX1hPUiA9IDU7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9BUklUSE1FVElDID0gNjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcGVyYXRvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGsxOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMzsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGs0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gRWRnZSBNb2RlIFZhbHVlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9EVVBMSUNBVEUgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfV1JBUCA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9OT05FID0gMzsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG9yZGVyWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBvcmRlclk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3Qga2VybmVsTWF0cml4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZGl2aXNvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJpYXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgdGFyZ2V0WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciB0YXJnZXRZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBlZGdlTW9kZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEJvb2xlYW4gcHJlc2VydmVBbHBoYTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdXJmYWNlU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkaWZmdXNlQ29uc3RhbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYXppbXV0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGVsZXZhdGlvbjsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVBvaW50TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHo7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVTcG90TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHo7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFo7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgbGltaXRpbmdDb25lQW5nbGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENoYW5uZWwgU2VsZWN0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9SID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfRyA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0IgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9BID0gNDsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHhDaGFubmVsU2VsZWN0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHlDaGFubmVsU2VsZWN0b3I7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGbG9vZEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN0ZERldmlhdGlvblg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdGREZXZpYXRpb25ZOyAqKVxuXG4oKiAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uKGluIGZsb2F0IHN0ZERldmlhdGlvblgsIGluIGZsb2F0IHN0ZERldmlhdGlvblkpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFSW1hZ2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1VSSVJlZmVyZW5jZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0xhbmdTcGFjZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0aW87ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNZXJnZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1lcmdlTm9kZUVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1vcnBob2xvZ3lFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBNb3JwaG9sb2d5IE9wZXJhdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfRVJPREUgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9ESUxBVEUgPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9wZXJhdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcmFkaXVzWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHJhZGl1c1k7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVPZmZzZXRFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkeTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN1cmZhY2VTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyQ29uc3RhbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVRpbGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBUdXJidWxlbmNlIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfRlJBQ1RBTE5PSVNFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9UVVJCVUxFTkNFID0gMjsgKilcblxuKCogICAvLyBTdGl0Y2ggT3B0aW9ucyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfU1RJVENIID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfTk9TVElUQ0ggPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiYXNlRnJlcXVlbmN5WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJhc2VGcmVxdWVuY3lZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG51bU9jdGF2ZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzZWVkOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBzdGl0Y2hUaWxlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDdXJzb3JFbGVtZW50ICopXG5hbmQgY3Vyc29yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FFbGVtZW50ICopXG5hbmQgYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHRhcmdldCA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdWaWV3RWxlbWVudCAqKVxuYW5kIHZpZXdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXQgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTY3JpcHRFbGVtZW50ICopXG5hbmQgc2NyaXB0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIG1ldGhvZCB0eXBlXyA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHWm9vbUV2ZW50IDogVUlFdmVudCAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUmVjdCB6b29tUmVjdFNjcmVlbjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IHByZXZpb3VzU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdQb2ludCBwcmV2aW91c1RyYW5zbGF0ZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IG5ld1NjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUG9pbnQgbmV3VHJhbnNsYXRlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGlvbkVsZW1lbnQgKilcbmFuZCBhbmltYXRpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICAoKiBpbmhlcml0IGVsZW1lbnRUaW1lQ29udHJvbCAqKVxuICBtZXRob2QgdGFyZ2V0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFN0YXJ0VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0Q3VycmVudFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNpbXBsZUR1cmF0aW9uIDogbnVtYmVyX3QgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgYW5pbWF0aW9uRWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU2V0RWxlbWVudCAqKVxuYW5kIHNldEVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlTW90aW9uRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVNb3Rpb25FbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHTVBhdGhFbGVtZW50ICopXG5hbmQgbVBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQgKilcbmFuZCBhbmltYXRlQ29sb3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgYW5pbWF0aW9uRWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgKilcbmFuZCBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRFbGVtZW50ICopXG5hbmQgZm9udEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdHbHlwaEVsZW1lbnQgKilcbigqIGludGVyZmFjZSBTVkdNaXNzaW5nR2x5cGhFbGVtZW50KilcbmFuZCBnbHlwaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdIS2VybkVsZW1lbnQgOiBTVkdFbGVtZW50ICopXG4oKiBpbnRlcmZhY2UgU1ZHVktlcm5FbGVtZW50IDogU1ZHRWxlbWVudCAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlU3JjRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZVNyY0VsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZVVyaUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VVcmlFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlRm9ybWF0RWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VOYW1lRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR01ldGFkYXRhRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBtZXRhZGF0YUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb3JlaWduT2JqZWN0RWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb3JlaWduT2JqZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgY3JlYXRlRWxlbWVudCAoZG9jIDogZG9jdW1lbnQgdCkgbmFtZSA9IGRvYyMjY3JlYXRlRWxlbWVudE5TIHhtbG5zIChKcy5zdHJpbmcgbmFtZSlcblxubGV0IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBuYW1lKVxuXG5sZXQgY3JlYXRlQSBkb2MgOiBhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoIGRvYyA6IGFsdEdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaFwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaERlZiBkb2MgOiBhbHRHbHlwaERlZkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhkZWZcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGhJdGVtIGRvYyA6IGFsdEdseXBoSXRlbUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhpdGVtXCJcblxubGV0IGNyZWF0ZUFuaW1hdGUgZG9jIDogYW5pbWF0ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZVwiXG5cbmxldCBjcmVhdGVBbmltYXRlQ29sb3IgZG9jIDogYW5pbWF0ZUNvbG9yRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlY29sb3JcIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZU1vdGlvbiBkb2MgOiBhbmltYXRlTW90aW9uRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlbW90aW9uXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVUcmFuc2Zvcm0gZG9jIDogYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZXRyYW5zZm9ybVwiXG5cbmxldCBjcmVhdGVDaXJjbGUgZG9jIDogY2lyY2xlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjaXJjbGVcIlxuXG5sZXQgY3JlYXRlQ2xpcFBhdGggZG9jIDogY2xpcFBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNsaXBwYXRoXCJcblxuKCogbGV0IGNyZWF0ZUNvbG9yUHJvZmlsZSBkb2MgOiBjb2xvclByb2ZpbGUgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sb3ItcHJvZmlsZVwiICopXG5sZXQgY3JlYXRlQ3Vyc29yIGRvYyA6IGN1cnNvckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY3Vyc29yXCJcblxubGV0IGNyZWF0ZURlZnMgZG9jIDogZGVmc0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVmc1wiXG5cbmxldCBjcmVhdGVEZXNjIGRvYyA6IGRlc2NFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlc2NcIlxuXG5sZXQgY3JlYXRlRWxsaXBzZSBkb2MgOiBlbGxpcHNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJlbGxpcHNlXCJcblxuKCogbGV0IGNyZWF0ZUZlKiAqKVxubGV0IGNyZWF0ZUZpbHRlciBkb2MgOiBmaWx0ZXJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZpbHRlclwiXG5cbmxldCBjcmVhdGVGb250IGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnRcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2UgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlRm9ybWF0IGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1mb3JtYXRcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VOYW1lIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1uYW1lXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlU3JjIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1zcmNcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VVcmkgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLXVyaVwiXG5cbmxldCBjcmVhdGVGb3JlaWduT2JqZWN0IGRvYyA6IGZvcmVpZ25PYmplY3RFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvcmVpZ25PYmplY3RcIlxuXG5sZXQgY3JlYXRlRyBkb2MgOiBnRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnXCJcblxubGV0IGNyZWF0ZUdseXBoIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnbHlwaFwiXG5cbmxldCBjcmVhdGVHbHlwaFJlZiBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ2x5cGhyZWZcIlxuXG5sZXQgY3JlYXRlaGtlcm4gZG9jIDogZWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoa2VyblwiXG5cbmxldCBjcmVhdGVJbWFnZSBkb2MgOiBpbWFnZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW1hZ2VcIlxuXG5sZXQgY3JlYXRlTGluZUVsZW1lbnQgZG9jIDogbGluZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGluZVwiXG5cbmxldCBjcmVhdGVMaW5lYXJFbGVtZW50IGRvYyA6IGxpbmVhckdyYWRpZW50RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5lYXJncmFkaWVudFwiXG5cbigqIGxldCBjcmVhdGVNYXJrZXIgZG9jIDogbWFya2VyRWxlbWVudCAqKVxubGV0IGNyZWF0ZU1hc2sgZG9jIDogbWFza0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWFza1wiXG5cbmxldCBjcmVhdGVNZXRhRGF0YSBkb2MgOiBtZXRhZGF0YUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWV0YWRhdGFcIlxuXG5sZXQgY3JlYXRlTWlzc2luZ0dseXBoIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtaXNzaW5nLWdseXBoXCJcblxubGV0IGNyZWF0ZU1QYXRoIGRvYyA6IG1QYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtcGF0aFwiXG5cbmxldCBjcmVhdGVQYXRoIGRvYyA6IHBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhdGhcIlxuXG5sZXQgY3JlYXRlUGF0dGVybiBkb2MgOiBwYXR0ZXJuRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXR0ZXJuXCJcblxubGV0IGNyZWF0ZVBvbHlnb24gZG9jIDogcG9seWdvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicG9seWdvblwiXG5cbmxldCBjcmVhdGVQb2x5bGluZSBkb2MgOiBwb2x5TGluZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicG9seWxpbmVcIlxuXG5sZXQgY3JlYXRlUmFkaWFsZ3JhZGllbnQgZG9jIDogcmFkaWFsR3JhZGllbnRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInJhZGlhbGdyYWRpZW50XCJcblxubGV0IGNyZWF0ZVJlY3QgZG9jIDogcmVjdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicmVjdFwiXG5cbmxldCBjcmVhdGVTY3JpcHQgZG9jIDogc2NyaXB0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzY3JpcHRcIlxuXG5sZXQgY3JlYXRlU2V0IGRvYyA6IHNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2V0XCJcblxubGV0IGNyZWF0ZVN0b3AgZG9jIDogc3RvcEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3RvcFwiXG5cbmxldCBjcmVhdGVTdHlsZSBkb2MgOiBzdHlsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3R5bGVcIlxuXG5sZXQgY3JlYXRlU3ZnIGRvYyA6IHN2Z0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3ZnXCJcblxubGV0IGNyZWF0ZVN3aXRjaCBkb2MgOiBzd2l0Y2hFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN3aXRjaFwiXG5cbmxldCBjcmVhdGVTeW1ib2wgZG9jIDogc3ltYm9sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzeW1ib2xcIlxuXG5sZXQgY3JlYXRlVGV4dEVsZW1lbnQgZG9jIDogdGV4dEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGV4dFwiXG5cbmxldCBjcmVhdGVUZXh0cGF0aCBkb2MgOiB0ZXh0UGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGV4dHBhdGhcIlxuXG5sZXQgY3JlYXRlVGl0bGUgZG9jIDogdGl0bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRpdGxlXCJcblxubGV0IGNyZWF0ZVRyZWYgZG9jIDogdHJlZkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHJlZlwiXG5cbmxldCBjcmVhdGVUc3BhbiBkb2MgOiB0c3BhbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHNwYW5cIlxuXG5sZXQgY3JlYXRlVXNlIGRvYyA6IHVzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidXNlXCJcblxubGV0IGNyZWF0ZVZpZXcgZG9jIDogdmlld0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmlld1wiXG5cbmxldCBjcmVhdGV2a2VybiBkb2MgOiBlbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZrZXJuXCJcblxuKCoqKiopXG5cbmxldCBzdmdfZWxlbWVudCA6IGVsZW1lbnQgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1NWR0VsZW1lbnRcblxubGV0IGRvY3VtZW50ID0gSnMuVW5zYWZlLmdsb2JhbCMjLmRvY3VtZW50XG5cbmxldCBnZXRFbGVtZW50QnlJZCBpZCA6IGVsZW1lbnQgdCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKEpzLlVuc2FmZS5nbG9iYWwjIy5kb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgKGZ1biBlIC0+IGlmIEpzLmluc3RhbmNlb2YgZSBzdmdfZWxlbWVudCB0aGVuIGUgZWxzZSByYWlzZSBOb3RfZm91bmQpXG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgZWxlbWVudCAoZSA6ICNEb20ubm9kZSBKcy50KSA6IGVsZW1lbnQgSnMudCBKcy5vcHQgPVxuICAgIGlmIEpzLmluc3RhbmNlb2YgZSBzdmdfZWxlbWVudCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHVuc2FmZUNvZXJjZSAoZSA6ICNlbGVtZW50IHQpIHRhZyA9XG4gICAgaWYgSnMuZXF1YWxzIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIHRhZylcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYSBlIDogYUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFcIlxuXG4gIGxldCBhbHRHbHlwaCBlIDogYWx0R2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaFwiXG5cbiAgbGV0IGFsdEdseXBoRGVmIGUgOiBhbHRHbHlwaERlZkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoZGVmXCJcblxuICBsZXQgYWx0R2x5cGhJdGVtIGUgOiBhbHRHbHlwaEl0ZW1FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaGl0ZW1cIlxuXG4gIGxldCBhbmltYXRlIGUgOiBhbmltYXRlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZVwiXG5cbiAgbGV0IGFuaW1hdGVDb2xvciBlIDogYW5pbWF0ZUNvbG9yRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZWNvbG9yXCJcblxuICBsZXQgYW5pbWF0ZU1vdGlvbiBlIDogYW5pbWF0ZU1vdGlvbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVtb3Rpb25cIlxuXG4gIGxldCBhbmltYXRlVHJhbnNmb3JtIGUgOiBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCB0IG9wdCA9XG4gICAgdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRldHJhbnNmb3JtXCJcblxuICBsZXQgY2lyY2xlIGUgOiBjaXJjbGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjaXJjbGVcIlxuXG4gIGxldCBjbGlwUGF0aCBlIDogY2xpcFBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjbGlwcGF0aFwiXG5cbiAgKCogbGV0IENvbG9yUHJvZmlsZSBlIDogY29sb3JQcm9maWxlIHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjb2xvci1wcm9maWxlXCIgKilcbiAgbGV0IGN1cnNvciBlIDogY3Vyc29yRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY3Vyc29yXCJcblxuICBsZXQgZGVmcyBlIDogZGVmc0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImRlZnNcIlxuXG4gIGxldCBkZXNjIGUgOiBkZXNjRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZGVzY1wiXG5cbiAgbGV0IGVsbGlwc2UgZSA6IGVsbGlwc2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJlbGxpcHNlXCJcblxuICAoKiBsZXQgRmUqICopXG4gIGxldCBmaWx0ZXIgZSA6IGZpbHRlckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZpbHRlclwiXG5cbiAgbGV0IGZvbnQgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250XCJcblxuICBsZXQgZm9udEZhY2UgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2VcIlxuXG4gIGxldCBmb250RmFjZUZvcm1hdCBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1mb3JtYXRcIlxuXG4gIGxldCBmb250RmFjZU5hbWUgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtbmFtZVwiXG5cbiAgbGV0IGZvbnRGYWNlU3JjIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLXNyY1wiXG5cbiAgbGV0IGZvbnRGYWNlVXJpIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLXVyaVwiXG5cbiAgbGV0IGZvcmVpZ25PYmplY3QgZSA6IGZvcmVpZ25PYmplY3RFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb3JlaWdub2JqZWN0XCJcblxuICBsZXQgZyBlIDogZ0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdcIlxuXG4gIGxldCBnbHlwaCBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnbHlwaFwiXG5cbiAgbGV0IGdseXBoUmVmIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdseXBocmVmXCJcblxuICBsZXQgaGtlcm4gZSA6IGVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImhrZXJuXCJcblxuICBsZXQgaW1hZ2UgZSA6IGltYWdlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiaW1hZ2VcIlxuXG4gIGxldCBsaW5lRWxlbWVudCBlIDogbGluZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImxpbmVcIlxuXG4gIGxldCBsaW5lYXJFbGVtZW50IGUgOiBsaW5lYXJHcmFkaWVudEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImxpbmVhcmdyYWRpZW50XCJcblxuICAoKiBsZXQgTWFya2VyIGUgOiBtYXJrZXJFbGVtZW50ICopXG4gIGxldCBtYXNrIGUgOiBtYXNrRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWFza1wiXG5cbiAgbGV0IG1ldGFEYXRhIGUgOiBtZXRhZGF0YUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1ldGFkYXRhXCJcblxuICBsZXQgbWlzc2luZ0dseXBoIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1pc3NpbmctZ2x5cGhcIlxuXG4gIGxldCBtUGF0aCBlIDogbVBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtcGF0aFwiXG5cbiAgbGV0IHBhdGggZSA6IHBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwYXRoXCJcblxuICBsZXQgcGF0dGVybiBlIDogcGF0dGVybkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBhdHRlcm5cIlxuXG4gIGxldCBwb2x5Z29uIGUgOiBwb2x5Z29uRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicG9seWdvblwiXG5cbiAgbGV0IHBvbHlsaW5lIGUgOiBwb2x5TGluZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBvbHlsaW5lXCJcblxuICBsZXQgcmFkaWFsZ3JhZGllbnQgZSA6IHJhZGlhbEdyYWRpZW50RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicmFkaWFsZ3JhZGllbnRcIlxuXG4gIGxldCByZWN0IGUgOiByZWN0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicmVjdFwiXG5cbiAgbGV0IHNjcmlwdCBlIDogc2NyaXB0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic2NyaXB0XCJcblxuICBsZXQgc2V0IGUgOiBzZXRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzZXRcIlxuXG4gIGxldCBzdG9wIGUgOiBzdG9wRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3RvcFwiXG5cbiAgbGV0IHN0eWxlIGUgOiBzdHlsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN0eWxlXCJcblxuICBsZXQgc3ZnIGUgOiBzdmdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdmdcIlxuXG4gIGxldCBzd2l0Y2ggZSA6IHN3aXRjaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN3aXRjaFwiXG5cbiAgbGV0IHN5bWJvbCBlIDogc3ltYm9sRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3ltYm9sXCJcblxuICBsZXQgdGV4dEVsZW1lbnQgZSA6IHRleHRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0ZXh0XCJcblxuICBsZXQgdGV4dHBhdGggZSA6IHRleHRQYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGV4dHBhdGhcIlxuXG4gIGxldCB0aXRsZSBlIDogdGl0bGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0aXRsZVwiXG5cbiAgbGV0IHRyZWYgZSA6IHRyZWZFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0cmVmXCJcblxuICBsZXQgdHNwYW4gZSA6IHRzcGFuRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidHNwYW5cIlxuXG4gIGxldCB1c2UgZSA6IHVzZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInVzZVwiXG5cbiAgbGV0IHZpZXcgZSA6IHZpZXdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ2aWV3XCJcblxuICBsZXQgdmtlcm4gZSA6IGVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInZrZXJuXCJcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxuKCogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50U291cmNlICopXG5vcGVuIEpzXG5vcGVuIERvbVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgc3RhdGUgPVxuICB8IENPTk5FQ1RJTkdcbiAgfCBPUEVOXG4gIHwgQ0xPU0VEXG5cbmNsYXNzIHR5cGUgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcmlnaW4gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RFdmVudElkIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuICAoKiBtZXRob2Qgc291cmNlIDogdW5pdCAqKVxuZW5kXG5cbmNsYXNzIHR5cGUgZXZlbnRTb3VyY2UgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2QgdXJsIDogc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogc3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbm9wZW4gOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmxldCB3aXRoQ3JlZGVudGlhbHMgYiA6IG9wdGlvbnMgdCA9XG4gIGxldCBpbml0ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gIGluaXQjIy53aXRoQ3JlZGVudGlhbHMgOj0gSnMuYm9vbCBiO1xuICBpbml0XG5cbmxldCBldmVudFNvdXJjZSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRXZlbnRTb3VyY2VcblxubGV0IGV2ZW50U291cmNlX29wdGlvbnMgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0V2ZW50U291cmNlXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBjb25zb2xlID0gb2JqZWN0XG4gIG1ldGhvZCBsb2cgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzYgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzcgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfOCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWcgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvciA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8gOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8xIDogYm9vbCB0IC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8yIDogYm9vbCB0IC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzMgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF80IDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF81IDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlyIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlyeG1sIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhY2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXAgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZCA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwRW5kIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRpbWUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGltZUVuZCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmV4dGVybmFsIGdldF9jb25zb2xlIDogdW5pdCAtPiBjb25zb2xlIHQgPSBcImNhbWxfanNfZ2V0X2NvbnNvbGVcIlxuXG5sZXQgY29uc29sZSA9IGdldF9jb25zb2xlICgpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSBwb3NpdGlvbkVycm9yQ29kZVxuXG50eXBlIHdhdGNoSWRcblxuY2xhc3MgdHlwZSBjb29yZGluYXRlcyA9IG9iamVjdFxuICBtZXRob2QgbGF0aXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvbmdpdHVkZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0aXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2N1cmFjeSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0aXR1ZGVBY2N1cmFjeSA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlYWRpbmcgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGVlZCA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbiA9IG9iamVjdFxuICBtZXRob2QgY29vcmRzIDogY29vcmRpbmF0ZXMgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWVzdGFtcCA6IEpzLmRhdGUgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb25PcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBlbmFibGVIaWdoQWNjdXJhY3kgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWVvdXQgOiBpbnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgbWF4aW11bUFnZSA6IGludCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb25FcnJvciA9IG9iamVjdFxuICBtZXRob2QgX1BFUk1JU1NJT05fREVOSUVEXyA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPU0lUSU9OX1VOQVZBSUxBQkxFXyA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RJTUVPVVQgOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBnZW9sb2NhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgZ2V0Q3VycmVudFBvc2l0aW9uIDpcbiAgICAgICAocG9zaXRpb24gSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IChwb3NpdGlvbkVycm9yIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiBwb3NpdGlvbk9wdGlvbnMgSnMudFxuICAgIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB3YXRjaFBvc2l0aW9uIDpcbiAgICAgICAocG9zaXRpb24gSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IChwb3NpdGlvbkVycm9yIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiBwb3NpdGlvbk9wdGlvbnMgSnMudFxuICAgIC0+IHdhdGNoSWQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbGVhcldhdGNoIDogd2F0Y2hJZCAtPiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfcG9zaXRpb25fb3B0aW9ucyAoKSA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgZ2VvbG9jYXRpb24gPVxuICBsZXQgeCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5uYXZpZ2F0b3IgaW5cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgeCB0aGVuIHgjIy5nZW9sb2NhdGlvbiBlbHNlIHhcblxuKCogdW5kZWZpbmVkICopXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBnZW9sb2NhdGlvblxuIiwiY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm91bmRpbmdDbGllbnRSZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdEJvdW5kcyA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnRlcnNlY3Rpb25SZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW50ZXJzZWN0aW9uUmF0aW8gOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzSW50ZXJzZWN0aW5nIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2Qgcm9vdCA6IERvbS5ub2RlIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdE1hcmdpbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHRocmVzaG9sZCA6IEpzLm51bWJlcl90IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCByb290IDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290TWFyZ2luIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aHJlc2hvbGRzIDogSnMubnVtYmVyX3QgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdW5vYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9pbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfb3B0aW9ucyAoKSA6IGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyBKcy50ID1cbiAgSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmUgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGVyc2VjdGlvbk9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmVcblxubGV0IGludGVyc2VjdGlvbk9ic2VydmVyIDpcbiAgICAoICAgKCAgIGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlciBKcy50XG4gICAgICAgICAtPiB1bml0KVxuICAgICAgICBKcy5jYWxsYmFja1xuICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgSnMudFxuICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxOCBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFNoYXJlZCA9IHNpZ1xuICBjbGFzcyB0eXBlIG9iamVjdF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIHZhbCBvYmplY3Rfb3B0aW9ucyA6IHVuaXQgLT4gb2JqZWN0X29wdGlvbnMgSnMudFxuXG4gIGNsYXNzIHR5cGUgX29iamVjdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzdXBwb3J0ZWRMb2NhbGVzT2YgOlxuICAgICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgLT4gb2JqZWN0X29wdGlvbnMgSnMudCBKcy5vcHRkZWZcbiAgICAgIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU2hhcmVkIDogU2hhcmVkID0gc3RydWN0XG4gIGNsYXNzIHR5cGUgb2JqZWN0X29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9iamVjdF9vcHRpb25zICgpID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBfb2JqZWN0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHN1cHBvcnRlZExvY2FsZXNPZiA6XG4gICAgICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAtPiBvYmplY3Rfb3B0aW9ucyBKcy50IEpzLm9wdGRlZlxuICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDb2xsYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgdXNhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc2Vuc2l0aXZpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlUHVuY3R1YXRpb24gOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNvbGxhdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1lcmljIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjYXNlRmlyc3QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNlbnNpdGl2aXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZVB1bmN0dWF0aW9uIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1lcmljIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBjYXNlRmlyc3QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVzYWdlID0gSnMuc3RyaW5nIFwic29ydFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNlbnNpdGl2aXR5ID0gSnMuc3RyaW5nIFwidmFyaWFudFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIGlnbm9yZVB1bmN0dWF0aW9uID0gSnMuX2ZhbHNlXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWVyaWMgPSBKcy5fZmFsc2VcblxuICAgICAgdmFsIG11dGFibGUgY2FzZUZpcnN0ID0gSnMuc3RyaW5nIFwiZmFsc2VcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBjb21wYXJlIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IGludCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIERhdGVUaW1lRm9ybWF0ID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjYWxlbmRhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaG91cjEyIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB3ZWVrZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBlcmEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHllYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1vbnRoIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGhvdXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbnV0ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2Qgc2Vjb25kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgZGF0ZVN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lU3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGNhbGVuZGFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBkYXlQZXJpb2QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91cjEyIDogYm9vbCBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91ckN5Y2xlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBmb3JtYXRNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHdlZWtkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGVyYSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgeWVhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbW9udGggOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGRheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91ciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWludXRlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzZWNvbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGZyYWN0aW9uYWxTZWNvbmREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBkYXRlU3R5bGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdGltZVN0eWxlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGNhbGVuZGFyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGRheVBlcmlvZCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1iZXJpbmdTeXN0ZW0gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgdGltZVpvbmUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91cjEyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXJDeWNsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBmb3JtYXRNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB3ZWVrZGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGVyYSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB5ZWFyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1vbnRoID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGRheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbnV0ZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzZWNvbmQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZnJhY3Rpb25hbFNlY29uZERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lWm9uZU5hbWUgPSBKcy51bmRlZmluZWRcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIGZvcm1hdF9wYXJ0ID0gb2JqZWN0XG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF92YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGZvcm1hdCA6IChKcy5kYXRlIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBmb3JtYXRUb1BhcnRzIDpcbiAgICAgIEpzLmRhdGUgSnMudCBKcy5vcHRkZWYgLT4gZm9ybWF0X3BhcnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBOdW1iZXJGb3JtYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lEaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB1c2VHcm91cGluZyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGNvbXBhY3REaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lEaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeVNpZ24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgbm90YXRpb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2lnbkRpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVuaXQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVuaXREaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB1c2VHcm91cGluZyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdNb2RlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ1ByaW9yaXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ0luY3JlbWVudCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdHJhaWxpbmdaZXJvRGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgY29tcGFjdERpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3kgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3lEaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5U2lnbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBub3RhdGlvbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1iZXJpbmdTeXN0ZW0gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc2lnbkRpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc3R5bGUgPSBKcy5zdHJpbmcgXCJkZWNpbWFsXCJcblxuICAgICAgdmFsIG11dGFibGUgdW5pdCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB1bml0RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB1c2VHcm91cGluZyA9IEpzLl90cnVlXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nTW9kZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ1ByaW9yaXR5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nSW5jcmVtZW50ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRyYWlsaW5nWmVyb0Rpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bUludGVnZXJEaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gSnMudW5kZWZpbmVkXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBmb3JtYXRfcGFydCA9IG9iamVjdFxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBmb3JtYXQgOiAoSnMubnVtYmVyIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBmb3JtYXRUb1BhcnRzIDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLm9wdGRlZiAtPiBmb3JtYXRfcGFydCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBsdXJhbFJ1bGVzID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBwbHVyYWxDYXRlZ29yaWVzIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIF90eXBlID0gSnMuc3RyaW5nIFwiY2FyZGluYWxcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzZWxlY3QgOiBKcy5udW1iZXIgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5jbGFzcyB0eXBlIGludGwgPSBvYmplY3RcbiAgbWV0aG9kIF9Db2xsYXRvciA6IENvbGxhdG9yLl9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EYXRlVGltZUZvcm1hdCA6IERhdGVUaW1lRm9ybWF0Ll9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OdW1iZXJGb3JtYXQgOiBOdW1iZXJGb3JtYXQuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BsdXJhbFJ1bGVzIDogUGx1cmFsUnVsZXMuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0Q2Fub25pY2FsTG9jYWxlcyA6XG4gICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgaW50bCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bFxuXG5sZXQgY29sbGF0b3JfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX0NvbGxhdG9yXG5cbmxldCBkYXRlVGltZUZvcm1hdF9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fRGF0ZVRpbWVGb3JtYXRcblxubGV0IG51bWJlckZvcm1hdF9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fTnVtYmVyRm9ybWF0XG5cbmxldCBwbHVyYWxSdWxlc19jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fUGx1cmFsUnVsZXNcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGludGxcbiIsImluY2x1ZGUgSnNfb2Zfb2NhbWwuSnNcbm1vZHVsZSBVcmwgPSBKc19vZl9vY2FtbC5Vcmxcbm1vZHVsZSBEb21faHRtbCA9IEpzX29mX29jYW1sLkRvbV9odG1sXG5tb2R1bGUgRmlyZWJ1ZyA9IEpzX29mX29jYW1sLkZpcmVidWdcbm1vZHVsZSBGaWxlID0gSnNfb2Zfb2NhbWwuRmlsZVxubW9kdWxlIERvbSA9IEpzX29mX29jYW1sLkRvbVxubW9kdWxlIFR5cGVkX2FycmF5ID0gSnNfb2Zfb2NhbWwuVHlwZWRfYXJyYXlcbm1vZHVsZSBSZWdleHAgPSBKc19vZl9vY2FtbC5SZWdleHBcblxudHlwZSAoJ2EsICdiKSByZXN1bHQgPSAoJ2EsICdiKSBTdGRsaWIucmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYlxuXG50eXBlIHdpbmRvdyA9IERvbV9odG1sLndpbmRvd1xuXG5sZXQgdG9fYXJyYXlmIGYgYSA9IEFycmF5Lm1hcCBmICh0b19hcnJheSBhKVxuXG5sZXQgb2ZfYXJyYXlmIGYgYSA9IGFycmF5IChBcnJheS5tYXAgZiBhKVxuXG5sZXQgdG9fbGlzdCBhID0gQXJyYXkudG9fbGlzdCBAQCB0b19hcnJheSBhXG5cbmxldCBvZl9saXN0IGwgPSBhcnJheSBAQCBBcnJheS5vZl9saXN0IEBAIGxcblxubGV0IHRvX2xpc3RmIGYgYSA9IEFycmF5LnRvX2xpc3QgQEAgdG9fYXJyYXlmIGYgYVxuXG5sZXQgb2ZfbGlzdGYgZiBhID0gb2ZfYXJyYXlmIGYgQEAgQXJyYXkub2ZfbGlzdCBhXG5cbmxldCBvcHRkZWYgZiA9IGZ1bmN0aW9uIE5vbmUgLT4gdW5kZWZpbmVkIHwgU29tZSB4IC0+IGRlZiAoZiB4KVxuXG5sZXQgdG9fb3B0ZGVmIGYgeCA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCB1bm9wdGRlZl9mIGRlZiBmIHggPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IGRlZiB8IFNvbWUgeCAtPiBmIHhcblxubGV0IHVub3B0ZGVmIGRlZiB4ID0gbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBkZWYgfCBTb21lIHggLT4geFxuXG5sZXQgY29udmRlZiBmIHggPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IHVuZGVmaW5lZCB8IFNvbWUgeCAtPiBkZWYgKGYgeClcblxubGV0IHRvX29wdCBmIHggPVxuICBtYXRjaCBPcHQudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgb3B0IGYgPSBmdW5jdGlvbiBOb25lIC0+IG51bGwgfCBTb21lIHggLT4gc29tZSAoZiB4KVxuXG5sZXQgY29udm9wdCBmIHggPVxuICBtYXRjaCBPcHQudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IG51bGwgfCBTb21lIHggLT4gc29tZSAoZiB4KVxuXG5sZXQganNfbG9nIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyBvXG5cbmxldCBsb2dfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoc3RyaW5nIHMpXG5cbmxldCBsb2cgZm10ID1cbiAgRm9ybWF0LmtmcHJpbnRmXG4gICAgKGZ1biBfZm10IC0+IGpzX2xvZyAoc3RyaW5nIChGb3JtYXQuZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSkpKVxuICAgIEZvcm1hdC5zdHJfZm9ybWF0dGVyIGZtdFxuXG5sZXQgZXJyb3Jfb2Zfc3RyaW5nIHMgPSBuZXclanMgZXJyb3JfY29uc3RyIChzdHJpbmcgcylcbmxldCBjYXRjaF9leG4gZiA9IGZ1bmN0aW9uXG4gIHwgSnNfZXJyb3IuRXhuIGUgLT4gZiAoSnNfZXJyb3IudG9fZXJyb3IgZSlcbiAgfCBleG4gLT4gZiBAQCBlcnJvcl9vZl9zdHJpbmcgQEAgUHJpbnRleGMudG9fc3RyaW5nIGV4blxuXG5tb2R1bGUgQU9wdCA9IHN0cnVjdFxuICB0eXBlICsnYSB0XG4gIGxldCBudWxsIDogJ2EgdCA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJudWxsXCJcbiAgZXh0ZXJuYWwgc29tZSA6ICdhIC0+ICdhIHQgPSBcIiVpZGVudGl0eVwiXG4gIGxldCB1bmRlZmluZWQgOiAnYSB0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInVuZGVmaW5lZFwiXG4gIGV4dGVybmFsIGRlZiA6ICdhIC0+ICdhIHQgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIHJldHVybiA6ICdhIC0+ICdhIHQgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIGNvZXJjZSA6ICdhIHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIGpzX2VxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcbiAgbGV0IGlzX25vbmUgKHggOiAnYSB0KSA6IGJvb2wgPSB4ID09IHVuZGVmaW5lZCB8fCBqc19lcXVhbHMgeCBudWxsXG4gIGxldCBtYXAgPyhub25lPXVuZGVmaW5lZCkgKHggOiAnYSB0KSAoZiA6ICdhIC0+ICdiKSA6ICdiIHQgPVxuICAgIGlmIGlzX25vbmUgeCB0aGVuIG5vbmUgZWxzZSByZXR1cm4gKGYgKGNvZXJjZSB4KSlcbiAgbGV0IGJpbmQgPyhub25lPXVuZGVmaW5lZCkgKHggOiAnYSB0KSAoZiA6ICdhIC0+ICdiIHQpIDogJ2IgdCA9XG4gICAgaWYgaXNfbm9uZSB4IHRoZW4gbm9uZSBlbHNlIGYgKGNvZXJjZSB4KVxuICBsZXQgdGVzdCAoeCA6ICdhIHQpIDogYm9vbCA9IG5vdCAoaXNfbm9uZSB4KVxuICBsZXQgaXRlciAoeCA6ICdhIHQpIChmIDogJ2EgLT4gdW5pdCkgOiB1bml0ID0gaWYgbm90IChpc19ub25lIHgpIHRoZW4gZiAoY29lcmNlIHgpXG4gIGxldCBjYXNlICh4IDogJ2EgdCkgKGYgOiB1bml0IC0+ICdiKSAoZyA6ICdhIC0+ICdiKSA6ICdiID0gaWYgaXNfbm9uZSB4IHRoZW4gZiAoKSBlbHNlIGcgKGNvZXJjZSB4KVxuICBsZXQgZ2V0ICh4IDogJ2EgdCkgKGYgOiB1bml0IC0+ICdhKSA6ICdhID0gaWYgaXNfbm9uZSB4IHRoZW4gZiAoKSBlbHNlIChjb2VyY2UgeClcbiAgbGV0IG9wdGlvbiA/KG5vbmU9dW5kZWZpbmVkKSAoeCA6ICdhIG9wdGlvbikgOiAnYSB0ID0gbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IG5vbmVcbiAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuICBsZXQgdG9fb3B0aW9uICh4IDogJ2EgdCkgOiAnYSBvcHRpb24gPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBsZXQgYW9wdCA/KG5vbmU9KHVuZGVmaW5lZCA6ICdiIHQpKSAoZiA6ICdhIC0+ICdiKSA6ICdhIG9wdGlvbiAtPiAnYiB0ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gbm9uZVxuICAgIHwgU29tZSB4IC0+IHJldHVybiAoZiB4KVxuICBsZXQgdG9fYW9wdCAoZiA6ICdhIC0+ICdiKSAoeCA6ICdhIHQpIDogJ2Igb3B0aW9uID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgKGYgeCkpXG5lbmRcbnR5cGUgJ2EgYW9wdCA9ICdhIEFPcHQudFxuXG50eXBlICdhIGNhc2VfcHJvcCA9IDwgZ2V0IDogJ2Egb3B0ZGVmID4gZ2VuX3Byb3BcblxubGV0IHJlYyBjaG9vc2VfY2FzZV9vcHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IHVuZGVmaW5lZFxuICB8IGggOjogdCAtPiBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGggd2l0aCBOb25lIC0+IGNob29zZV9jYXNlX29wdCB0IHwgU29tZSBfIC0+IGhcblxubGV0IGNob29zZV9jYXNlIGwgPSBjaG9vc2VfY2FzZV9vcHQgKExpc3QubWFwIE9wdGRlZi5yZXR1cm4gbClcblxubGV0IG9iamVjdF9jcyA9IFVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5sZXQgYXNzaWduIChvMSA6IF8gdCkgKG8yIDogXyB0KSA9IFVuc2FmZS5jb2VyY2UgKG9iamVjdF9jcyMjYXNzaWduIG8xIG8yKVxubGV0IGFzc2lnbl9saXN0IGwgPSBVbnNhZmUuY29lcmNlIChVbnNhZmUubWV0aF9jYWxsIG9iamVjdF9jcyBcImFzc2lnblwiIChBcnJheS5vZl9saXN0IGwpKVxuXG5sZXQgcmVtb3ZlX3VuZGVmaW5lZCBvID1cbiAgbGV0IGtleXMgPSBvYmplY3Rfa2V5cyBvIGluXG4gIGtleXMjI2ZvckVhY2ggKHdyYXBfY2FsbGJhY2sgKGZ1biBrIF8gXyAtPlxuICAgICAgaWYgbm90IChPcHRkZWYudGVzdCAoVW5zYWZlLmdldCBvIGspKSB0aGVuIFVuc2FmZS5kZWxldGUgbyBrKSlcbiIsIm9wZW4gSnNcblxudHlwZSBub25yZWMgJ2EgdCA9IDwgPiB0XG5cbmxldCBvYmogPSBVbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxuXG5sZXQgY3JlYXRlICgpIDogJ2EgdCA9IG5ldyVqcyBvYmpcblxubGV0IGFkZCAodCA6ICdhIHQpIChrIDogc3RyaW5nKSAodiA6ICdhKSA9IFVuc2FmZS5zZXQgdCAoc3RyaW5nIGspIHZcblxubGV0IGFkZF9saXN0ICh0IDogJ2EgdCkgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpID1cbiAgTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IGFkZCB0IGsgdikgbFxuXG5sZXQgYWRkX2xpc3RmICh0IDogJ2IgdCkgKGYgOiAoJ2EgLT4gJ2IpKSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgPVxuICBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gYWRkIHQgayAoZiB2KSkgbFxuXG5sZXQgbWFrZSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgOiAnYSB0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgYWRkX2xpc3QgdCBsO1xuICB0XG5cbmxldCBtYWtlZiAoZiA6ICgnYSAtPiAnYikpIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA6ICdiIHQgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBhZGRfbGlzdGYgdCBmIGw7XG4gIHRcblxubGV0IHJlbW92ZSAodCA6ICdhIHQpIChrIDogc3RyaW5nKSA9IFVuc2FmZS5kZWxldGUgdCAoc3RyaW5nIGspXG5cbmxldCBmaW5kICh0IDogJ2EgdCkgKGsgOiBzdHJpbmcpIDogJ2Egb3B0aW9uID1cbiAgT3B0ZGVmLnRvX29wdGlvbiAoVW5zYWZlLmdldCB0IChzdHJpbmcgaykpXG5cbmxldCBrZXlzICh0IDogJ2EgdCkgOiBzdHJpbmcgbGlzdCA9XG4gIHRvX2xpc3RmIHRvX3N0cmluZyBAQCBvYmojI2tleXMgdFxuXG5sZXQgaXRlbXMgKHQgOiAnYSB0KSA6IChzdHJpbmcgKiAnYSkgbGlzdCA9XG4gIHRvX2xpc3RmIChmdW4gayAtPiB0b19zdHJpbmcgaywgVW5zYWZlLmdldCB0IGspIEBAIG9iaiMja2V5cyB0XG5cbmxldCBpdGVtc2YgKGYgOiAoJ2EgLT4gJ2IpKSAodCA6ICdhIHQpIDogKHN0cmluZyAqICdiKSBsaXN0ID1cbiAgdG9fbGlzdGYgKGZ1biBrIC0+IHRvX3N0cmluZyBrLCBmIEBAIFVuc2FmZS5nZXQgdCBrKSBAQCBvYmojI2tleXMgdFxuXG5sZXQgbGVuZ3RoICh0IDogJ2EgdCkgPSAob2JqIyNrZXlzIHQpIyMubGVuZ3RoXG5cbmxldCBtZXJnZSAobCA6ICdhIHQgbGlzdCkgOiAnYSB0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgTGlzdC5pdGVyIChmdW4geCAtPiBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gYWRkIHQgayB2KSAoaXRlbXMgeCkpIGw7XG4gIHRcbiIsIm9wZW4gSnNcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSBwcm9taXNlMCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCB0aGVuXyA6ICgnYSAtPiB1bml0KSBjYWxsYmFjayAtPiAoJ2EsICdiKSBwcm9taXNlMCB0IG1ldGhcbiAgICBtZXRob2QgY2F0Y2ggOiAoJ2IgLT4gdW5pdCkgY2FsbGJhY2sgLT4gKCdhLCAnYikgcHJvbWlzZTAgdCBtZXRoXG4gIGVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gcHJvbWlzZSA9IFsnYSwgZXJyb3IgdF0gcHJvbWlzZTBcblxudHlwZSAoJ2EsICdiKSBwcm9taXNlX2NzID1cbiAgKCgoJ2EgLT4gdW5pdCkgLT4gKCdiIC0+IHVuaXQpIC0+IHVuaXQpIGNhbGxiYWNrIC0+ICgnYSwgJ2IpIHByb21pc2UwIHQpXG4gIGNvbnN0clxuXG5sZXQgcHJvbWlzZSBmID1cbiAgbGV0IGNzIDogKCdhLCAnYikgcHJvbWlzZV9jcyA9IFVuc2FmZS5nbG9iYWwjIy5fUHJvbWlzZSBpblxuICBuZXclanMgY3MgKHdyYXBfY2FsbGJhY2sgZilcblxubGV0IGp0aGVuMCA/ZXJyb3IgKHByb20gOiAoJ2EsICdiIHQpIHByb21pc2UwIHQpIGYgPVxuICBsZXQgY2F0Y2hfZXhuIGV4biA9XG4gICAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlZiAtPiBjYXRjaF9leG4gKGZ1biB4IC0+IGVmIChVbnNhZmUuY29lcmNlIHgpKSBleG4gaW5cbiAgbGV0IHAgPSBwcm9tIyN0aGVuXyAod3JhcF9jYWxsYmFjayAoZnVuIHggLT4gdHJ5IGYgeCB3aXRoIGV4biAtPiBjYXRjaF9leG4gZXhuKSkgaW5cbiAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlcnJvciAtPiBpZ25vcmUgKHAjI2NhdGNoICh3cmFwX2NhbGxiYWNrIGVycm9yKSlcblxubGV0IGp0aGVuID9lcnJvciAocHJvbSA6ICdhIHByb21pc2UgdCkgZiA9XG4gIGxldCBjYXRjaF9leG4gZXhuID0gbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlZiAtPiBjYXRjaF9leG4gZWYgZXhuIGluXG4gIGxldCBwID0gcHJvbSMjdGhlbl8gKHdyYXBfY2FsbGJhY2sgKGZ1biB4IC0+IHRyeSBmIHggd2l0aCBleG4gLT4gY2F0Y2hfZXhuIGV4bikpIGluXG4gIG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZXJyb3IgLT4gaWdub3JlIChwIyNjYXRjaCAod3JhcF9jYWxsYmFjayBlcnJvcikpXG5cbmxldCBqdGhlbjBfb3B0IHByb20gPSBmdW5jdGlvbiBOb25lIC0+IGlnbm9yZSBwcm9tIHwgU29tZSBmIC0+IGp0aGVuMCBwcm9tIGZcbmxldCBqdGhlbl9vcHQgcHJvbSA9IGZ1bmN0aW9uIE5vbmUgLT4gaWdub3JlIHByb20gfCBTb21lIGYgLT4ganRoZW4gcHJvbSBmXG5cbmxldCBydGhlbiBwcm9tIGYgPVxuICBqdGhlbiB+ZXJyb3I6KGZ1biBlIC0+IGYgQEAgRXJyb3IgZSkgcHJvbSAoZnVuIHggLT4gZiAoT2sgeCkpXG4iLCJvcGVuIEpzX29mX29jYW1sXG5cbmxldCBsb2cgbyA9IEZpcmVidWcuY29uc29sZSMjbG9nIG9cblxubGV0IGxvZzIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZ18yIG8xIG8yXG5cbmxldCBsb2czIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMyBvMSBvMiBvM1xuXG5sZXQgbG9nX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyBzKVxuXG5sZXQgbG9nX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZ18yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCBsb2dfc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjbG9nXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcblxubGV0IGRlYnVnIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnIG9cblxubGV0IGRlYnVnMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjZGVidWdfMiBvMSBvMlxuXG5sZXQgZGVidWczIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18zIG8xIG8yIG8zXG5cbmxldCBkZWJ1Z19zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjZGVidWcgKEpzLnN0cmluZyBzKVxuXG5sZXQgZGVidWdfc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjZGVidWdfMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgZGVidWdfc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjZGVidWdfMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuXG5sZXQgd2FybiBvID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuIG9cblxubGV0IHdhcm4yIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzIgbzEgbzJcblxubGV0IHdhcm4zIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzMgbzEgbzIgbzNcblxubGV0IHdhcm5fc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm4gKEpzLnN0cmluZyBzKVxuXG5sZXQgd2Fybl9zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IHdhcm5fc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjd2Fybl8zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG5cbmxldCBlcnJvciBvID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciBvXG5cbmxldCBlcnJvcjIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzIgbzEgbzJcblxubGV0IGVycm9yMyBvMSBvMiBvMyA9IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMyBvMSBvMiBvM1xuXG5sZXQgZXJyb3Jfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIChKcy5zdHJpbmcgcylcblxubGV0IGVycm9yX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IGVycm9yX3N0cjMgczEgczIgczMgPVxuICBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcbiIsIm9wZW4gSnNcblxuY2xhc3MgdHlwZSBiaWdJbnQgPSBvYmplY3RcbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgb3B0ZGVmIC0+IF8gdCBvcHRkZWYgLT4ganNfc3RyaW5nIHQgbWV0aFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG4gIG1ldGhvZCB2YWx1ZU9mIDogYmlnSW50IHQgbWV0aFxuZW5kXG5cbnR5cGUgbm9ucmVjIHQgPSBiaWdJbnQgdFxuXG5sZXQgYmlnSW50IDogKFVuc2FmZS5hbnkgLT4gdCkgPSBVbnNhZmUucHVyZV9qc19leHByIFwiQmlnSW50XCJcblxubGV0IG9mX3N0cmluZyBzID0gYmlnSW50IChVbnNhZmUuaW5qZWN0IEBAIHN0cmluZyBzKVxubGV0IG9mX2ludCAoaSA6IGludCkgPSBiaWdJbnQgKFVuc2FmZS5pbmplY3QgQEAgaSlcbmxldCBvZl9pbnQ2NCAoaSA6IGludDY0KSA9IG9mX3N0cmluZyAoSW50NjQudG9fc3RyaW5nIGkpXG5sZXQgb2ZfbmF0aXZlIChpIDogbmF0aXZlaW50KSA9IG9mX3N0cmluZyAoTmF0aXZlaW50LnRvX3N0cmluZyBpKVxubGV0IG9mX2Zsb2F0IGYgPSBiaWdJbnQgKFVuc2FmZS5pbmplY3QgQEAgbnVtYmVyX29mX2Zsb2F0IGYpXG5cbmxldCB0b19sb2NhbGVfc3RyaW5nID9mbXQgP29wdGlvbnMgKG4gOiB0KSA9XG4gIHRvX3N0cmluZyAobiMjdG9Mb2NhbGVTdHJpbmcgKG9wdGRlZiBzdHJpbmcgZm10KSAoT3B0ZGVmLm9wdGlvbiBvcHRpb25zKSlcbmxldCB0b19zdHJpbmcgKG4gOiB0KSA9IHRvX3N0cmluZyBuIyN0b1N0cmluZ1xuIiwib3BlbiBKc1xuXG5sZXQgc2V0SW5uZXJIdG1sIGVsdCBzID0gZWx0IyMuaW5uZXJIVE1MIDo9IHN0cmluZyBzXG5cbmxldCBzZXRUZXh0IGVsdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPlxuICAgICAgKClcbiAgfCBTb21lIHMgLT5cbiAgICAgIGVsdCMjLnRleHRDb250ZW50IDo9IHNvbWUgKHN0cmluZyBzKVxuXG5sZXQgYWRkQ2xhc3MgZWx0IHMgPSBlbHQjIy5jbGFzc0xpc3QjI2FkZCAoc3RyaW5nIHMpXG5cbmxldCBhZGRDbGFzc2VzIGVsdCBsID0gTGlzdC5pdGVyIChhZGRDbGFzcyBlbHQpIGxcblxubGV0IHJlbW92ZUNsYXNzIGVsdCBzID0gZWx0IyMuY2xhc3NMaXN0IyNyZW1vdmUgKHN0cmluZyBzKVxuXG5sZXQgY29udGFpbnNDbGFzcyBlbHQgcyA9IGVsdCMjLmNsYXNzTGlzdCMjY29udGFpbnMgKHN0cmluZyBzKVxuXG5sZXQgc2V0QXR0cmlidXRlIGVsdCBrZXkgdmFsdWUgPSBlbHQjI3NldEF0dHJpYnV0ZSAoc3RyaW5nIGtleSkgKHN0cmluZyB2YWx1ZSlcblxubGV0IHJlbW92ZUF0dHJpYnV0ZSBlbHQga2V5ID0gZWx0IyNyZW1vdmVBdHRyaWJ1dGUgKHN0cmluZyBrZXkpXG5cbmxldCBnZXRBdHRyaWJ1dGUgZWx0IGtleSA9IE9wdC50b19vcHRpb24gKGVsdCMjZ2V0QXR0cmlidXRlIChzdHJpbmcga2V5KSlcblxubGV0IHNldENTUyBlbHQgc3R5bGVzID1cbiAgbGV0IHN0eWxlcyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIjsgXCIgKExpc3QubWFwIChmdW4gKGssIHYpIC0+IGsgXiBcIjogXCIgXiB2KSBzdHlsZXMpXG4gIGluXG4gIHNldEF0dHJpYnV0ZSBlbHQgXCJzdHlsZVwiIHN0eWxlc1xuXG5sZXQgYWRkQ1NTIGVsdCBzdHlsZXMgPVxuICBsZXQgc3R5bGVzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiOyBcIiAoTGlzdC5tYXAgKGZ1biAoaywgdikgLT4gayBeIFwiOiBcIiBeIHYpIHN0eWxlcylcbiAgaW5cbiAgbGV0IHN0eWxlcyA9XG4gICAgbWF0Y2ggZ2V0QXR0cmlidXRlIGVsdCBcInN0eWxlXCIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgICBzdHlsZXNcbiAgICB8IFNvbWUgb2xkX3N0eWxlcyAtPlxuICAgICAgICBvbGRfc3R5bGVzIF4gXCI7IFwiIF4gc3R5bGVzXG4gIGluXG4gIHNldEF0dHJpYnV0ZSBlbHQgXCJzdHlsZVwiIHN0eWxlc1xuXG5sZXQgYXBwZW5kQ2hpbGQgPSBEb20uYXBwZW5kQ2hpbGRcblxubGV0IHJlbW92ZUNoaWxkID0gRG9tLnJlbW92ZUNoaWxkXG5cbmxldCBhcHBlbmRDaGlsZHJlbiBwYXJlbnQgY2hpbGRyZW4gPSBMaXN0Lml0ZXIgKERvbS5hcHBlbmRDaGlsZCBwYXJlbnQpIGNoaWxkcmVuXG5cbmxldCBjaGlsZHJlbiBwYXJlbnQgPSBEb20ubGlzdF9vZl9ub2RlTGlzdCBwYXJlbnQjIy5jaGlsZE5vZGVzXG5cbmxldCByZW1vdmVDaGlsZGkgcGFyZW50IGkgPVxuICBtYXRjaCBMaXN0Lm50aF9vcHQgKGNoaWxkcmVuIHBhcmVudCkgaSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgKClcbiAgfCBTb21lIGNoaWxkIC0+XG4gICAgICByZW1vdmVDaGlsZCBwYXJlbnQgY2hpbGRcblxubGV0IHJlbW92ZUNoaWxkcmVuIHBhcmVudCA9IExpc3QuaXRlciAocmVtb3ZlQ2hpbGQgcGFyZW50KSAoY2hpbGRyZW4gcGFyZW50KVxuXG5sZXQgcmVwbGFjZUNoaWxkcmVuIHBhcmVudCBjaGlsZHJlbiA9XG4gIHJlbW92ZUNoaWxkcmVuIHBhcmVudCA7XG4gIGFwcGVuZENoaWxkcmVuIHBhcmVudCBjaGlsZHJlblxuXG5sZXQgYnlfaWQgcyA9IERvbV9odG1sLmdldEVsZW1lbnRCeUlkIHNcblxubGV0IGFkZExpc3RlbmVyID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGVsdCBldiBmID1cbiAgbGV0IGNhcHR1cmUgPSBPcHRpb24ubWFwIGJvb2wgY2FwdHVyZSBpblxuICBsZXQgb25jZSA9IE9wdGlvbi5tYXAgYm9vbCBvbmNlIGluXG4gIGxldCBwYXNzaXZlID0gT3B0aW9uLm1hcCBib29sIHBhc3NpdmUgaW5cbiAgaWdub3JlIEBAXG4gIERvbS5hZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgZWx0IChEb20uRXZlbnQubWFrZSBldilcbiAgICAoRG9tLmhhbmRsZXIgKGZ1biBlIC0+IGJvb2wgKGYgZSkpKVxuXG5tb2R1bGUgRWwgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/KGNsYXNzZXMgPSBbXSkgPyhzdHlsZXMgPSBbXSkgPyhsaXN0ZW4gPSBbXSkgPyhhdHRyID0gW10pID90ZXh0IGZcbiAgICAgIGNoaWxkcmVuID1cbiAgICBsZXQgZWx0ID0gZiBEb21faHRtbC5kb2N1bWVudCBpblxuICAgIExpc3QuaXRlciAoZnVuIChldiwgZikgLT4gYWRkTGlzdGVuZXIgZWx0IGV2IGYpIGxpc3RlbiA7XG4gICAgYWRkQ2xhc3NlcyBlbHQgY2xhc3NlcyA7XG4gICAgc2V0Q1NTIGVsdCBzdHlsZXMgO1xuICAgIExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBzZXRBdHRyaWJ1dGUgZWx0IGsgdikgYXR0ciA7XG4gICAgc2V0VGV4dCBlbHQgdGV4dCA7XG4gICAgYXBwZW5kQ2hpbGRyZW4gZWx0IGNoaWxkcmVuIDtcbiAgICBlbHRcblxuICBsZXQgYnV0dG9uID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVCdXR0b24gY2hpbGRyZW5cblxuICBsZXQgZGl2ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVEaXYgY2hpbGRyZW5cblxuICBsZXQgYSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlQSBjaGlsZHJlblxuXG4gIGxldCBzcGFuID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVTcGFuIGNoaWxkcmVuXG5cbiAgbGV0IGZvcm0gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUZvcm0gY2hpbGRyZW5cblxuICBsZXQgb3B0aW9uID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVPcHRpb24gY2hpbGRyZW5cblxuICBsZXQgc2VsZWN0ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVTZWxlY3QgY2hpbGRyZW5cblxuICBsZXQgaW5wdXQgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0ICgpID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUlucHV0IFtdXG5cbiAgbGV0IGlmcmFtZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlSWZyYW1lIGNoaWxkcmVuXG5cbiAgbGV0IGxhYmVsID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVMYWJlbCBjaGlsZHJlblxuXG4gIGxldCB1bCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVWwgY2hpbGRyZW5cblxuICBsZXQgbGkgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUxpIGNoaWxkcmVuXG5cbiAgbGV0IGltZyA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlSW1nIGNoaWxkcmVuXG5cbiAgbGV0IHNjcmlwdCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlU2NyaXB0IGNoaWxkcmVuXG5cbiAgbGV0IHRhYmxlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUYWJsZSBjaGlsZHJlblxuXG4gIGxldCB0ciA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVHIgY2hpbGRyZW5cblxuICBsZXQgdGggP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRoIGNoaWxkcmVuXG5cbiAgbGV0IHRkID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUZCBjaGlsZHJlblxuZW5kXG5cbmxldCBlbmNhcHNlIHMgPSBcIlxcXCJcIiBeIHMgXiBcIlxcXCJcIlxuXG5sZXQgc3RyaW5nc190b19hcnJheSBsID0gXCJbXCIgXiBTdHJpbmcuY29uY2F0IFwiLFwiIGwgXiBcIl1cIlxuXG5sZXQgc3RyaW5nc190b19vYmplY3QgbCA9XG4gIGxldCBzID1cbiAgICBcIntcIlxuICAgIF4gU3RyaW5nLmNvbmNhdCBcIixcIiAoTGlzdC5tYXAgKGZ1biAoaywgdikgLT4gZW5jYXBzZSBrIF4gXCI6XCIgXiB2KSBsKVxuICAgIF4gXCJ9XCJcbiAgaW5cbiAgdHJ5IF9KU09OIyNwYXJzZSAoc3RyaW5nIHMpXG4gIHdpdGggXyAtPlxuICAgIGxvZ19zdHIgKFwiY2Fubm90IHBhcnNlIGpzb24gXCIgXiBzKSA7XG4gICAgVW5zYWZlLm9iaiBbfHxdXG4iLCJvcGVuIEV6anNfbWluXG5cbm1vZHVsZSBUeXBlcyA9IEV6anNfaWRiX3R5cGVzXG5vcGVuIFR5cGVzXG5cbnR5cGUgbW9kZSA9IFJFQURPTkxZIHwgUkVBRFdSSVRFIHwgVkVSU0lPTkNIQU5HRVxudHlwZSBkaXJlY3Rpb24gPSBORVhUIHwgUFJFViB8IE5FWFRVTklRVUUgfCBQUkVWVU5JUVVFXG5cbnR5cGUgZGJfb3B0aW9ucyA9IHsga2V5X3BhdGggOiBzdHJpbmcgb3B0aW9uOyBhdXRvX2luY3JlbWVudCA6IGJvb2wgb3B0aW9uIH1cblxudHlwZSBkYl91cGdyYWRlID0geyBvbGRfdmVyc2lvbiA6IGludDsgbmV3X3ZlcnNpb24gOiBpbnQgfVxuXG50eXBlIGluZGV4X29wdGlvbnMgPSB7IHVuaXF1ZSA6IGJvb2wgb3B0aW9uOyBtdWx0aV9lbnRyeSA6IGJvb2wgb3B0aW9uOyBsb2NhbGUgOiBib29sIG9wdGlvbiB9XG5cbm1vZHVsZSB0eXBlIFRyX3NpZyA9IHNpZ1xuICB0eXBlIHRcbiAgdHlwZSBqc1xuICB2YWwgdG9fanMgOiB0IC0+IGpzXG4gIHZhbCBvZl9qcyA6IGpzIC0+IHRcbmVuZFxuXG5sZXQgc3RyX29mX21vZGUgPSBmdW5jdGlvblxuICB8IFJFQURPTkxZIC0+IHN0cmluZyBcInJlYWRvbmx5XCJcbiAgfCBSRUFEV1JJVEUgLT4gc3RyaW5nIFwicmVhZHdyaXRlXCJcbiAgfCBWRVJTSU9OQ0hBTkdFIC0+IHN0cmluZyBcInZlcnNpb25jaGFuZ2VcIlxuXG5sZXQgc3RyX29mX2RpcmVjdGlvbiA9IGZ1bmN0aW9uXG4gIHwgTkVYVCAtPiBzdHJpbmcgXCJuZXh0XCJcbiAgfCBQUkVWIC0+IHN0cmluZyBcInByZXZcIlxuICB8IE5FWFRVTklRVUUgLT4gc3RyaW5nIFwibmV4dHVuaXF1ZVwiXG4gIHwgUFJFVlVOSVFVRSAtPiBzdHJpbmcgXCJwcmV2dW5pcXVlXCJcblxubGV0IGlEQktleVJhbmdlIDogVW5zYWZlLmFueSBpREJLZXlSYW5nZSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwiSURCS2V5UmFuZ2VcIlxubGV0IGluZGV4ZWREQiA6IGpzX3N0cmluZyB0IGlEQkZhY3RvcnkgdCA9IFVuc2FmZS52YXJpYWJsZSBcIndpbmRvdy5pbmRleGVkREJcIlxuXG5sZXQgcmVzdWx0IHIgPSByIyMucmVzdWx0XG5cbmxldCB3cmFwID9lcnJvciA/Y2FsbGJhY2sgciA9XG4gIHRyeVxuICAgIGxldCByID0gTGF6eS5mb3JjZSByIGluXG4gICAgciMjLm9uc3VjY2VzcyA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIChyZXN1bHQgcikpKSBjYWxsYmFjaztcbiAgICByIyMub25lcnJvciA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIHIpKSBlcnJvclxuICB3aXRoIGV4biAtPlxuICAgIG1hdGNoIGVycm9yIHdpdGggTm9uZSAtPiByYWlzZSBleG4gfCBTb21lIGYgLT4gY2F0Y2hfZXhuIChmdW4gZSAtPiBmIChVbnNhZmUuY29lcmNlIGUpKSBleG5cblxubGV0IHdyYXBmID9lcnJvciA/Y2FsbGJhY2sgZyByID1cbiAgdHJ5XG4gICAgbGV0IHIgPSBMYXp5LmZvcmNlIHIgaW5cbiAgICByIyMub25zdWNjZXNzIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgKGcgQEAgcmVzdWx0IHIpKSkgY2FsbGJhY2s7XG4gICAgciMjLm9uZXJyb3IgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiByKSkgZXJyb3JcbiAgd2l0aCBleG4gLT5cbiAgICBtYXRjaCBlcnJvciB3aXRoIE5vbmUgLT4gcmFpc2UgZXhuIHwgU29tZSBmIC0+IGNhdGNoX2V4biAoZnVuIGUgLT4gZiAoVW5zYWZlLmNvZXJjZSBlKSkgZXhuXG5cbmxldCBkYl91cGdyYWRlX2V2ZW50IChlIDogaURCVmVyc2lvbkNoYW5nZUV2ZW50IHQpID0ge1xuICBvbGRfdmVyc2lvbiA9IGUjIy5vbGRWZXJzaW9uO1xuICBuZXdfdmVyc2lvbiA9IGUjIy5uZXdWZXJzaW9uO1xufVxuXG5sZXQgb3BlbkRCID91cGdyYWRlID9lcnJvciA/dmVyc2lvbiBuYW1lIGNhbGxiYWNrID1cbiAgbGV0IGluZGV4ZWREQiA6IF8gaURCRmFjdG9yeSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwid2luZG93LmluZGV4ZWREQlwiIGluXG4gIGxldCByID0gbGF6eSAoaW5kZXhlZERCIyNfb3BlbiAoc3RyaW5nIG5hbWUpIChBT3B0Lm9wdGlvbiB2ZXJzaW9uKSkgaW5cbiAgd3JhcCA/ZXJyb3IgfmNhbGxiYWNrIHI7XG4gIGxldCByID0gTGF6eS5mb3JjZSByIGluXG4gIHIjIy5vbnVwZ3JhZGVuZWVkZWQgOj1cbiAgICBBT3B0LmFvcHQgKGZ1biB1IC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBlIC0+XG4gICAgICAgIGxldCB2ID0gZGJfdXBncmFkZV9ldmVudCBlIGluXG4gICAgICAgIGxldCBkYiA9IHJlc3VsdCByIGluXG4gICAgICAgIHUgZGIgdikpIHVwZ3JhZGVcblxubGV0IHRyYW5zYWN0aW9uIHIgOiBpREJUcmFuc2FjdGlvbiB0ID0gciMjLnRyYW5zYWN0aW9uXG5cbmxldCBjcmVhdGVfZGJfb3B0aW9ucyB7a2V5X3BhdGg7IGF1dG9faW5jcmVtZW50fSA6IGNyZWF0ZV9kYl9vcHRpb25zIHQgPSBvYmplY3QlanNcbiAgdmFsIGtleVBhdGggPSBBT3B0LmFvcHQgc3RyaW5nIGtleV9wYXRoXG4gIHZhbCBhdXRvSW5jcmVtZW50ID0gQU9wdC5hb3B0IGJvb2wgYXV0b19pbmNyZW1lbnRcbmVuZFxuXG5sZXQgY3JlYXRlX3N0b3JlID9vcHRpb25zIChkYiA6IGlEQkRhdGFiYXNlIHQpIG5hbWUgPVxuICBVbnNhZmUuY29lcmNlIEBAXG4gIGRiIyNjcmVhdGVPYmplY3RTdG9yZSAoc3RyaW5nIG5hbWUpIChBT3B0LmFvcHQgY3JlYXRlX2RiX29wdGlvbnMgb3B0aW9ucylcblxubGV0IGdldF9zdG9yZSA/bW9kZSAoZGIgOiBpREJEYXRhYmFzZSB0KSBuYW1lIDogKF8sIF8pIGlEQk9iamVjdFN0b3JlIHQgPVxuICBsZXQgdHIgPSBkYiMjdHJhbnNhY3Rpb24gKGFycmF5IFt8IHN0cmluZyBuYW1lIHxdKSAoQU9wdC5hb3B0IHN0cl9vZl9tb2RlIG1vZGUpIGluXG4gIFVuc2FmZS5jb2VyY2UgQEAgdHIjI29iamVjdFN0b3JlIChzdHJpbmcgbmFtZSlcblxubW9kdWxlIFN0b3JlKEsgOiBUcl9zaWcpKEQgOiBUcl9zaWcpID0gc3RydWN0XG5cbiAgdHlwZSBzdG9yZSA9IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0XG4gIHR5cGUga2V5cyA9IEsgb2YgSy50IHwgS1Igb2YgSy5qcyBpREJLZXlSYW5nZSB0XG5cbiAgbGV0IGNyZWF0ZSA/b3B0aW9ucyBkYiBuYW1lIDogc3RvcmUgPVxuICAgIGNyZWF0ZV9zdG9yZSA/b3B0aW9ucyBkYiBuYW1lXG5cbiAgbGV0IHN0b3JlID9tb2RlIGRiIG5hbWUgOiBzdG9yZSA9XG4gICAgZ2V0X3N0b3JlID9tb2RlIGRiIG5hbWVcblxuICBsZXQgYWRkID9jYWxsYmFjayA/ZXJyb3IgP2tleSAoc3QgOiBzdG9yZSkgKHggOiBELnQpID1cbiAgICB3cmFwZiA/Y2FsbGJhY2sgP2Vycm9yIEsub2ZfanMgQEAgbGF6eSAoc3QjI2FkZCAoRC50b19qcyB4KSAoQU9wdC5hb3B0IEsudG9fanMga2V5KSlcblxuICBsZXQgcHV0ID9jYWxsYmFjayA/ZXJyb3IgP2tleSAoc3QgOiBzdG9yZSkgKHggOiBELnQpID1cbiAgICB3cmFwID9jYWxsYmFjayA/ZXJyb3IgQEAgbGF6eSAoc3QjI3B1dCAoRC50b19qcyB4KSAoQU9wdC5hb3B0IEsudG9fanMga2V5KSlcblxuICBsZXQgcmFuZ2UgP29sb3dlciA/b3VwcGVyID9sb3dlciA/dXBwZXIgKCkgPVxuICAgIGxldCBpREJLZXlSYW5nZSA6IEsuanMgaURCS2V5UmFuZ2UgdCA9IFVuc2FmZS52YXJpYWJsZSBcIklEQktleVJhbmdlXCIgaW5cbiAgICBtYXRjaCBsb3dlciwgdXBwZXIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFNvbWUgbG93ZXIsIE5vbmUgLT5cbiAgICAgIEtSIChpREJLZXlSYW5nZSMjbG93ZXJCb3VuZCAoSy50b19qcyBsb3dlcikgKEFPcHQuYW9wdCBib29sIG9sb3dlcikpXG4gICAgfCBOb25lLCBTb21lIHVwcGVyIC0+XG4gICAgICBLUiAoaURCS2V5UmFuZ2UjI3VwcGVyQm91bmQgKEsudG9fanMgdXBwZXIpIChBT3B0LmFvcHQgYm9vbCBvdXBwZXIpKVxuICAgIHwgU29tZSBsb3dlciwgU29tZSB1cHBlciAtPlxuICAgICAgS1IgKGlEQktleVJhbmdlIyNib3VuZFxuICAgICAgICAgICAgKEsudG9fanMgbG93ZXIpIChLLnRvX2pzIHVwcGVyKVxuICAgICAgICAgICAgKEFPcHQuYW9wdCBib29sIG9sb3dlcikgKEFPcHQuYW9wdCBib29sIG91cHBlcikpXG5cbiAgbGV0IGNvdW50ID9lcnJvciA/a2V5IChzdCA6IHN0b3JlKSAoY2FsbGJhY2sgOiBpbnQgLT4gdW5pdCkgPVxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjY291bnQgQU9wdC51bmRlZmluZWQpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjY291bnQgKEFPcHQuZGVmIChLLnRvX2pzIGspKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjY291bnRfcmFuZ2UgKEFPcHQuZGVmIHIpKVxuXG4gIGxldCBnZXQgP2Vycm9yIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBELnQgb3B0aW9uIC0+IHVuaXQpIGsgPVxuICAgIGxldCBvZl9qcyBqcyA9IG1hdGNoIEFPcHQudG9fb3B0aW9uIGpzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUganMgLT4gU29tZSAoRC5vZl9qcyBqcykgaW5cbiAgICBtYXRjaCBrIHdpdGhcbiAgICB8IEsga2V5IC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldCAoSy50b19qcyBrZXkpKVxuICAgIHwgS1IgcmFuZ2UgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0X3JhbmdlIHJhbmdlKVxuXG4gIGxldCBnZXRfYWxsID9lcnJvciA/a2V5ID9jb3VudCAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgKGNhbGxiYWNrIDogRC50IGxpc3QgLT4gdW5pdCkgPVxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEQub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGwgQU9wdC51bmRlZmluZWQgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgRC5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbCAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBELm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5vcHRpb24gY291bnQpKVxuXG4gIGxldCBnZXRfa2V5ID9lcnJvciAoc3QgOiAoSy5qcywgXykgaURCT2JqZWN0U3RvcmUgdCkgKGNhbGxiYWNrIDogSy50IG9wdGlvbiAtPiB1bml0KSBrID1cbiAgICBsZXQgb2ZfanMganMgPSBtYXRjaCBBT3B0LnRvX29wdGlvbiBqcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGpzIC0+IFNvbWUgKEsub2ZfanMganMpIGluXG4gICAgbWF0Y2ggayB3aXRoXG4gICAgfCBLIGtleSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXRLZXkgKEsudG9fanMga2V5KSlcbiAgICB8IEtSIHJhbmdlIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldEtleV9yYW5nZSByYW5nZSlcblxuICBsZXQgZ2V0X2FsbF9rZXlzID9lcnJvciA/a2V5ID9jb3VudCAoc3QgOiAoSy5qcywgXykgaURCT2JqZWN0U3RvcmUgdCkgKGNhbGxiYWNrIDogSy50IGxpc3QgLT4gdW5pdCkgPVxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEsub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxLZXlzIEFPcHQudW5kZWZpbmVkIChBT3B0Lm9wdGlvbiBjb3VudCkpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEsub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxLZXlzIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEsub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxLZXlzX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5vcHRpb24gY291bnQpKVxuXG4gIGxldCBkZWxldGUgP2NhbGxiYWNrID9lcnJvciAoc3QgOiAoSy5qcywgXykgaURCT2JqZWN0U3RvcmUgdCkgPSBmdW5jdGlvblxuICAgIHwgSyBrZXkgLT4gd3JhcCA/ZXJyb3IgP2NhbGxiYWNrIEBAIGxhenkgKHN0IyNkZWxldGUgKEsudG9fanMga2V5KSlcbiAgICB8IEtSIHJhbmdlIC0+IHdyYXAgP2Vycm9yID9jYWxsYmFjayBAQCBsYXp5IChzdCMjZGVsZXRlX3JhbmdlIHJhbmdlKVxuXG4gIGxldCBpdGVyID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiBELnQgLT4gdW5pdCkgPVxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBmIGsgKEQub2ZfanMgYyMjLnZhbHVlKTtcbiAgICAgICAgICBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZFxuICAgICAgICB8IE5vbmUgLT4gYyMjY29udGludWUgQU9wdC51bmRlZmluZWQgaW5cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yIEFPcHQudW5kZWZpbmVkIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcblxuICBsZXQgZm9sZCA/ZXJyb3IgP2tleSA/ZGlyZWN0aW9uIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KVxuICAgICAgKGYgOiBLLnQgLT4gRC50IC0+ICdhIC0+ICdhKSAoc3RhcnQgOiAnYSkgKGNhbGxiYWNrIDogJ2EgLT4gdW5pdCkgPVxuICAgIGxldCBhY2MgPSByZWYgc3RhcnQgaW5cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjYWxsYmFjayAhYWNjXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBhY2MgOj0gZiBrIChELm9mX2pzIGMjIy52YWx1ZSkgIWFjYztcbiAgICAgICAgICBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZFxuICAgICAgICB8IE5vbmUgLT4gYyMjY29udGludWUgQU9wdC51bmRlZmluZWQgaW5cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yIEFPcHQudW5kZWZpbmVkIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcblxuICBsZXQgaXRlcl9rZXlzID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiB1bml0KSA9XG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGYgaztcbiAgICAgICAgICBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZFxuICAgICAgICB8IE5vbmUgLT4gYyMjY29udGludWUgQU9wdC51bmRlZmluZWQgaW5cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yIEFPcHQudW5kZWZpbmVkIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcblxuICBsZXQgZm9sZF9rZXlzID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiAnYSAtPiAnYSkgKHN0YXJ0IDogJ2EpIChjYWxsYmFjayA6ICdhIC0+IHVuaXQpID1cbiAgICBsZXQgYWNjID0gcmVmIHN0YXJ0IGluXG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY2FsbGJhY2sgIWFjY1xuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgYWNjIDo9IGYgayAhYWNjO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBjbGVhciA/ZXJyb3IgP2NhbGxiYWNrIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSA9XG4gICAgd3JhcGYgP2NhbGxiYWNrID9lcnJvciAoZnVuIF8gLT4gKCkpIEBAIGxhenkgc3QjI2NsZWFyXG5cbiAgbGV0IGNyZWF0ZV9pbmRleF9vcHRpb25zIHt1bmlxdWU7IG11bHRpX2VudHJ5OyBsb2NhbGV9IDogY3JlYXRlX2luZGV4X29wdGlvbnMgdCA9IG9iamVjdCVqc1xuICAgIHZhbCB1bmlxdWUgPSBBT3B0LmFvcHQgYm9vbCB1bmlxdWVcbiAgICB2YWwgbXVsdGlFbnRyeSA9IEFPcHQuYW9wdCBib29sIG11bHRpX2VudHJ5XG4gICAgdmFsIGxvY2FsZSA9IEFPcHQuYW9wdCBib29sIGxvY2FsZVxuICBlbmRcblxuICBsZXQgY3JlYXRlX2luZGV4ID9vcHRpb25zIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSBuYW1lIGtleV9wYXRoID1cbiAgICBsZXQgb3B0aW9ucyA9IEFPcHQuYW9wdCBjcmVhdGVfaW5kZXhfb3B0aW9ucyBvcHRpb25zIGluXG4gICAgc3QjI2NyZWF0ZUluZGV4IChzdHJpbmcgbmFtZSkgKHN0cmluZyBrZXlfcGF0aCkgb3B0aW9uc1xuXG4gIGxldCBkZWxldGVfaW5kZXggKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIG5hbWUgPVxuICAgIGlnbm9yZSBAQCBzdCMjZGVsZXRlSW5kZXggKHN0cmluZyBuYW1lKVxuXG4gIGxldCBnZXRfaW5kZXggKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIG5hbWUgPVxuICAgIHN0IyNpbmRleCAoc3RyaW5nIG5hbWUpXG5cbmVuZFxuXG5tb2R1bGUgTm9UcihTIDogc2lnIHR5cGUgdCBlbmQpIDogVHJfc2lnIHdpdGggdHlwZSB0ID0gUy50IGFuZCB0eXBlIGpzID0gUy50ID0gc3RydWN0XG4gIHR5cGUgdCA9IFMudFxuICB0eXBlIGpzID0gUy50XG4gIGxldCB0b19qcyB4ID0geFxuICBsZXQgb2ZfanMgeCA9IHhcbmVuZFxuXG5tb2R1bGUgSW50VHIgOiAoVHJfc2lnIHdpdGggdHlwZSBqcyA9IGludCBhbmQgdHlwZSB0ID0gaW50KSA9IE5vVHIoc3RydWN0IHR5cGUgdCA9IGludCBlbmQpXG5cbm1vZHVsZSBTdHJpbmdUciA6IFRyX3NpZyB3aXRoIHR5cGUganMgPSBqc19zdHJpbmcgdCBhbmQgdHlwZSB0ID0gc3RyaW5nID0gc3RydWN0XG4gIHR5cGUganMgPSBqc19zdHJpbmcgdFxuICB0eXBlIHQgPSBzdHJpbmdcbiAgbGV0IHRvX2pzIHggPSBzdHJpbmcgeFxuICBsZXQgb2ZfanMgeCA9IHRvX3N0cmluZyB4XG5lbmRcblxubW9kdWxlIE51bWJlclRyIDogVHJfc2lnIHdpdGggdHlwZSBqcyA9IG51bWJlciB0IGFuZCB0eXBlIHQgPSBmbG9hdCA9IHN0cnVjdFxuICB0eXBlIGpzID0gbnVtYmVyIHRcbiAgdHlwZSB0ID0gZmxvYXRcbiAgbGV0IHRvX2pzIHggPSBudW1iZXJfb2ZfZmxvYXQgeFxuICBsZXQgb2ZfanMgeCA9IGZsb2F0X29mX251bWJlciB4XG5lbmRcblxubW9kdWxlIERhdGVUciA6IFRyX3NpZyB3aXRoIHR5cGUganMgPSBkYXRlIHQgYW5kIHR5cGUgdCA9IHN0cmluZyA9IHN0cnVjdFxuICB0eXBlIGpzID0gZGF0ZSB0XG4gIHR5cGUgdCA9IHN0cmluZ1xuICBsZXQgdG9fanMgeCA9IG5ldyVqcyBkYXRlX2Zyb21UaW1lVmFsdWUgKGRhdGUjI3BhcnNlIChzdHJpbmcgeCkpXG4gIGxldCBvZl9qcyB4ID0gdG9fc3RyaW5nIHgjI3RvTG9jYWxlU3RyaW5nXG5lbmRcbiIsIm9wZW4hIEJhc2VcblxudHlwZSB0ID0gU3RkbGliLmluX2NoYW5uZWxcblxubGV0IGVxdWFsICh0MSA6IHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfaW5cbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19pblxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUuaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBzdGRpbiA9IFN0ZGxpYi5zdGRpblxuXG5sZXQgY3JlYXRlID8oYmluYXJ5ID0gdHJ1ZSkgZmlsZSA9XG4gIGxldCBmbGFncyA9IFsgT3Blbl9yZG9ubHkgXSBpblxuICBsZXQgZmxhZ3MgPSBpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSA6OiBmbGFncyBlbHNlIGZsYWdzIGluXG4gIFN0ZGxpYi5vcGVuX2luX2dlbiBmbGFncyAwbzAwMCBmaWxlXG47O1xuXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2VfaW5cbmxldCB3aXRoX2ZpbGUgP2JpbmFyeSBmaWxlIH5mID0gRXhuLnByb3RlY3R4IChjcmVhdGUgP2JpbmFyeSBmaWxlKSB+ZiB+ZmluYWxseTpjbG9zZVxuXG5sZXQgbWF5X2VvZiBmID1cbiAgdHJ5IFNvbWUgKGYgKCkpIHdpdGhcbiAgfCBFbmRfb2ZfZmlsZSAtPiBOb25lXG47O1xuXG5sZXQgaW5wdXQgdCB+YnVmIH5wb3MgfmxlbiA9IFN0ZGxpYi5pbnB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgcmVhbGx5X2lucHV0IHQgfmJ1ZiB+cG9zIH5sZW4gPSBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLnJlYWxseV9pbnB1dCB0IGJ1ZiBwb3MgbGVuKVxubGV0IHJlYWxseV9pbnB1dF9leG4gdCB+YnVmIH5wb3MgfmxlbiA9IFN0ZGxpYi5yZWFsbHlfaW5wdXQgdCBidWYgcG9zIGxlblxubGV0IGlucHV0X2J5dGUgdCA9IG1heV9lb2YgKGZ1biAoKSAtPiBTdGRsaWIuaW5wdXRfYnl0ZSB0KVxubGV0IGlucHV0X2NoYXIgdCA9IG1heV9lb2YgKGZ1biAoKSAtPiBTdGRsaWIuaW5wdXRfY2hhciB0KVxubGV0IGlucHV0X2JpbmFyeV9pbnQgdCA9IG1heV9lb2YgKGZ1biAoKSAtPiBTdGRsaWIuaW5wdXRfYmluYXJ5X2ludCB0KVxubGV0IHVuc2FmZV9pbnB1dF92YWx1ZSB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF92YWx1ZSB0KVxubGV0IGlucHV0X2J1ZmZlciB0IGJ1ZiB+bGVuID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5CdWZmZXIuYWRkX2NoYW5uZWwgYnVmIHQgbGVuKVxubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfaW5cblxubGV0IGlucHV0X2FsbCB0ID1cbiAgKCogV2UgdXNlIDY1NTM2IGJlY2F1c2UgdGhhdCBpcyB0aGUgc2l6ZSBvZiBPQ2FtbCdzIElPIGJ1ZmZlcnMuICopXG4gIGxldCBjaHVua19zaXplID0gNjU1MzYgaW5cbiAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgY2h1bmtfc2l6ZSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIFN0ZGxpYi5CdWZmZXIuYWRkX2NoYW5uZWwgYnVmZmVyIHQgY2h1bmtfc2l6ZTtcbiAgICBsb29wICgpXG4gIGluXG4gIHRyeSBsb29wICgpIHdpdGhcbiAgfCBFbmRfb2ZfZmlsZSAtPiBCdWZmZXIuY29udGVudHMgYnVmZmVyXG47O1xuXG5sZXQgdHJpbSB+Zml4X3dpbl9lb2wgbGluZSA9XG4gIGlmIGZpeF93aW5fZW9sXG4gIHRoZW4gKFxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGxpbmUgaW5cbiAgICBpZiBsZW4gPiAwICYmIENoYXIuZXF1YWwgKFN0cmluZy5nZXQgbGluZSAobGVuIC0gMSkpICdcXHInXG4gICAgdGhlbiBTdHJpbmcuc3ViIGxpbmUgfnBvczowIH5sZW46KGxlbiAtIDEpXG4gICAgZWxzZSBsaW5lKVxuICBlbHNlIGxpbmVcbjs7XG5cbmxldCBpbnB1dF9saW5lID8oZml4X3dpbl9lb2wgPSB0cnVlKSB0ID1cbiAgbWF0Y2ggbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF9saW5lIHQpIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGxpbmUgLT4gU29tZSAodHJpbSB+Zml4X3dpbl9lb2wgbGluZSlcbjs7XG5cbmxldCBpbnB1dF9saW5lX2V4biA/KGZpeF93aW5fZW9sID0gdHJ1ZSkgdCA9XG4gIGxldCBsaW5lID0gU3RkbGliLmlucHV0X2xpbmUgdCBpblxuICB0cmltIH5maXhfd2luX2VvbCBsaW5lXG47O1xuXG5sZXQgZm9sZF9saW5lcyA/Zml4X3dpbl9lb2wgdCB+aW5pdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBhYyA9XG4gICAgbWF0Y2ggaW5wdXRfbGluZSA/Zml4X3dpbl9lb2wgdCB3aXRoXG4gICAgfCBOb25lIC0+IGFjXG4gICAgfCBTb21lIGxpbmUgLT4gbG9vcCAoZiBhYyBsaW5lKVxuICBpblxuICBsb29wIGluaXRcbjs7XG5cbmxldCBpbnB1dF9saW5lcyA/Zml4X3dpbl9lb2wgdCA9XG4gIExpc3QucmV2IChmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0OltdIH5mOihmdW4gbGluZXMgbGluZSAtPiBsaW5lIDo6IGxpbmVzKSlcbjs7XG5cbmxldCBpdGVyX2xpbmVzID9maXhfd2luX2VvbCB0IH5mID1cbiAgZm9sZF9saW5lcyA/Zml4X3dpbl9lb2wgdCB+aW5pdDooKSB+ZjooZnVuICgpIGxpbmUgLT4gZiBsaW5lKVxuOztcblxubGV0IHJlYWRfbGluZXMgP2ZpeF93aW5fZW9sIGZuYW1lID0gd2l0aF9maWxlIGZuYW1lIH5mOihpbnB1dF9saW5lcyA/Zml4X3dpbl9lb2wpXG5sZXQgcmVhZF9hbGwgZm5hbWUgPSB3aXRoX2ZpbGUgZm5hbWUgfmY6aW5wdXRfYWxsXG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgdCA9IFN0ZGxpYi5vdXRfY2hhbm5lbFxuXG5sZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgc2VlayA9IFN0ZGxpYi5MYXJnZUZpbGUuc2Vla19vdXRcbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19vdXRcbmxldCBsZW5ndGggPSBTdGRsaWIuTGFyZ2VGaWxlLm91dF9jaGFubmVsX2xlbmd0aFxubGV0IHN0ZG91dCA9IFN0ZGxpYi5zdGRvdXRcbmxldCBzdGRlcnIgPSBTdGRsaWIuc3RkZXJyXG5cbmxldCBzZXhwX29mX3QgdCA9XG4gIGlmIHBoeXNfZXF1YWwgdCBzdGRlcnJcbiAgdGhlbiBTZXhwLkF0b20gXCI8c3RkZXJyPlwiXG4gIGVsc2UgaWYgcGh5c19lcXVhbCB0IHN0ZG91dFxuICB0aGVuIFNleHAuQXRvbSBcIjxzdGRvdXQ+XCJcbiAgZWxzZSBTZXhwLkF0b20gXCI8T3V0X2NoYW5uZWwudD5cIlxuOztcblxudHlwZSAnYSB3aXRoX2NyZWF0ZV9hcmdzID1cbiAgP2JpbmFyeTpib29sIC0+ID9hcHBlbmQ6Ym9vbCAtPiA/ZmFpbF9pZl9leGlzdHM6Ym9vbCAtPiA/cGVybTppbnQgLT4gJ2FcblxubGV0IGNyZWF0ZVxuICAgICAgPyhiaW5hcnkgPSB0cnVlKVxuICAgICAgPyhhcHBlbmQgPSBmYWxzZSlcbiAgICAgID8oZmFpbF9pZl9leGlzdHMgPSBmYWxzZSlcbiAgICAgID8ocGVybSA9IDBvNjY2KVxuICAgICAgZmlsZVxuICA9XG4gIGxldCBmbGFncyA9IFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQgXSBpblxuICBsZXQgZmxhZ3MgPSAoaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgZWxzZSBPcGVuX3RleHQpIDo6IGZsYWdzIGluXG4gIGxldCBmbGFncyA9IChpZiBhcHBlbmQgdGhlbiBPcGVuX2FwcGVuZCBlbHNlIE9wZW5fdHJ1bmMpIDo6IGZsYWdzIGluXG4gIGxldCBmbGFncyA9IGlmIGZhaWxfaWZfZXhpc3RzIHRoZW4gT3Blbl9leGNsIDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgU3RkbGliLm9wZW5fb3V0X2dlbiBmbGFncyBwZXJtIGZpbGVcbjs7XG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX291dFxubGV0IGZsdXNoID0gU3RkbGliLmZsdXNoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfbm9fZXJyID0gU3RkbGliLmNsb3NlX291dF9ub2VyclxubGV0IG91dHB1dCB0IH5idWYgfnBvcyB+bGVuID0gU3RkbGliLm91dHB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyB0IH5idWYgfnBvcyB+bGVuID0gU3RkbGliLm91dHB1dF9zdWJzdHJpbmcgdCBidWYgcG9zIGxlblxubGV0IG91dHB1dF9zdHJpbmcgPSBTdGRsaWIub3V0cHV0X3N0cmluZ1xubGV0IG91dHB1dF9ieXRlcyA9IFN0ZGxpYi5vdXRwdXRfYnl0ZXNcbmxldCBvdXRwdXRfY2hhciA9IFN0ZGxpYi5vdXRwdXRfY2hhclxubGV0IG91dHB1dF9ieXRlID0gU3RkbGliLm91dHB1dF9ieXRlXG5sZXQgb3V0cHV0X2JpbmFyeV9pbnQgPSBTdGRsaWIub3V0cHV0X2JpbmFyeV9pbnRcbmxldCBvdXRwdXRfYnVmZmVyID0gU3RkbGliLkJ1ZmZlci5vdXRwdXRfYnVmZmVyXG5sZXQgb3V0cHV0X3ZhbHVlID0gU3RkbGliLm91dHB1dF92YWx1ZVxubGV0IG5ld2xpbmUgdCA9IG91dHB1dF9zdHJpbmcgdCBcIlxcblwiXG5cbmxldCBvdXRwdXRfbGluZXMgdCBsaW5lcyA9XG4gIExpc3QuaXRlciBsaW5lcyB+ZjooZnVuIGxpbmUgLT5cbiAgICBvdXRwdXRfc3RyaW5nIHQgbGluZTtcbiAgICBuZXdsaW5lIHQpXG47O1xuXG5sZXQgcHJpbnRmID0gU3RkbGliLlByaW50Zi5wcmludGZcbmxldCBlcHJpbnRmID0gU3RkbGliLlByaW50Zi5lcHJpbnRmXG5sZXQgZnByaW50ZiA9IFN0ZGxpYi5QcmludGYuZnByaW50ZlxubGV0IGtmcHJpbnRmID0gU3RkbGliLlByaW50Zi5rZnByaW50ZlxubGV0IHByaW50X3N0cmluZyA9IFN0ZGxpYi5wcmludF9zdHJpbmdcbmxldCBwcmludF9lbmRsaW5lID0gU3RkbGliLnByaW50X2VuZGxpbmVcbmxldCBwcmVycl9lbmRsaW5lID0gU3RkbGliLnByZXJyX2VuZGxpbmVcblxubGV0IHByaW50X3MgP21hY2ggc2V4cCA9XG4gIHByaW50X2VuZGxpbmVcbiAgICAobWF0Y2ggbWFjaCB3aXRoXG4gICAgIHwgU29tZSAoKSAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHBcbiAgICAgfCBOb25lIC0+IFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKVxuOztcblxubGV0IGVwcmludF9zID9tYWNoIHNleHAgPVxuICBwcmVycl9lbmRsaW5lXG4gICAgKG1hdGNoIG1hY2ggd2l0aFxuICAgICB8IFNvbWUgKCkgLT4gU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwXG4gICAgIHwgTm9uZSAtPiBTZXhwLnRvX3N0cmluZ19odW0gc2V4cClcbjs7XG5cbmxldCB3aXRoX2ZpbGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlIH5mID1cbiAgRXhuLnByb3RlY3R4IChjcmVhdGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlKSB+ZiB+ZmluYWxseTpjbG9zZVxuOztcblxubGV0IHdyaXRlX2xpbmVzIGZpbGUgbGluZXMgPSB3aXRoX2ZpbGUgZmlsZSB+ZjooZnVuIHQgLT4gb3V0cHV0X2xpbmVzIHQgbGluZXMpXG5sZXQgd3JpdGVfYWxsIGZpbGUgfmRhdGEgPSB3aXRoX2ZpbGUgZmlsZSB+ZjooZnVuIHQgLT4gb3V0cHV0X3N0cmluZyB0IGRhdGEpXG4iLCJtb2R1bGUgQ29udiA9IFNleHBsaWIwLlNleHBfY29udlxubW9kdWxlIENvbnZfZXJyb3IgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Jcbm1vZHVsZSBTZXhwX2dyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXJcblxubW9kdWxlIFNleHAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwXG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG5lbmRcblxubW9kdWxlIFNleHBhYmxlID0gU2V4cGxpYjAuU2V4cGFibGVcbiIsIm1vZHVsZSBMaXN0ID0gTGlzdFxuXG5tb2R1bGUgRW51bWVyYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgYWxsIDogdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gKCdhLCAnYikgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAnYyBsaXN0IC0+ICgnYSwgJ2IsICdjKSB0IGxpc3RcbiAgZW5kXG5lbmRcbiIsIm9wZW4gQmFzZVxuXG50eXBlICdhIHRlc3RfcHJlZFxuICA9ID9oZXJlOkxleGluZy5wb3NpdGlvbiBsaXN0XG4gIC0+ID9tZXNzYWdlOnN0cmluZ1xuICAtPiAoJ2EgLT4gYm9vbClcbiAgLT4gJ2FcbiAgLT4gdW5pdFxuXG50eXBlICdhIHRlc3RfZXFcbiAgPSA/aGVyZTpMZXhpbmcucG9zaXRpb24gbGlzdFxuICAtPiA/bWVzc2FnZTpzdHJpbmdcbiAgLT4gP2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAtPiAnYVxuICAtPiAnYVxuICAtPiB1bml0XG5cbnR5cGUgJ2EgdGVzdF9yZXN1bHRcbiAgPSA/aGVyZTpMZXhpbmcucG9zaXRpb24gbGlzdFxuICAtPiA/bWVzc2FnZTpzdHJpbmdcbiAgLT4gP2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAtPiBleHBlY3Q6J2FcbiAgLT4gJ2FcbiAgLT4gdW5pdFxuXG5leGNlcHRpb24gRSBvZiBzdHJpbmcgKiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZyBib2R5ID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIG1hdGNoIG1lc3NhZ2Ugd2l0aFxuICAgIHwgTm9uZSAtPiB0YWdcbiAgICB8IFNvbWUgcyAtPiBzIF4gXCI6IFwiIF4gdGFnXG4gIGluXG4gIGxldCBzZXhwID1cbiAgICBTZXhwLkxpc3QgKFxuICAgICAgYm9keVxuICAgICAgQCBbIFNleHAuTGlzdCBbIFNleHAuQXRvbSBcIkxvY1wiOyBTZXhwLkF0b20gcG9zIF0gXVxuICAgICAgQCBiZWdpbiBtYXRjaCBoZXJlIHdpdGhcbiAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICB8IF8gLT4gWyBTZXhwLkxpc3QgWyBTZXhwLkF0b20gXCJTdGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IFslc2V4cF9vZjogU291cmNlX2NvZGVfcG9zaXRpb24udCBsaXN0XSBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBdIF1cbiAgICAgIGVuZFxuICAgIClcbiAgaW5cbiAgKCogSGVyZSBhbmQgaW4gb3RoZXIgcGxhY2VzIHdlIHJldHVybiBleGNlcHRpb25zLCByYXRoZXIgdGhhbiBkaXJlY3RseSByYWlzaW5nLCBhbmRcbiAgICAgaW5zdGVhZCByYWlzZSBhdCB0aGUgbGF0ZXN0IG1vbWVudCBwb3NzaWJsZSwgc28gYmFja3RyYWNlIGRvbid0IGluY2x1ZGUgbm9pc2UgZnJvbVxuICAgICB0aGVzZSBmdW5jdGlvbnMgdGhhdCBjb25zdHJ1Y3QgZXhjZXB0aW9ucy4gKilcbiAgRSAobWVzc2FnZSwgc2V4cClcblxubGV0IFtAY29sZF0gZXhuX3Rlc3RfcHJlZCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5zZXhwaWZpZXIgdCA9XG4gIGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZzpcInByZWRpY2F0ZSBmYWlsZWRcIiBbXG4gICAgU2V4cC5MaXN0IFtTZXhwLkF0b20gXCJWYWx1ZVwiOyBzZXhwaWZpZXIgdF1cbiAgXVxuXG5sZXQgdGVzdF9wcmVkIH5wb3MgfnNleHBpZmllciB+aGVyZSA/bWVzc2FnZSBwcmVkaWNhdGUgdCA9XG4gIGlmIG5vdCAocHJlZGljYXRlIHQpIHRoZW5cbiAgICByYWlzZSAoZXhuX3Rlc3RfcHJlZCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5zZXhwaWZpZXIgdClcblxubGV0IHJfZGlmZiA6IChmcm9tXzpzdHJpbmcgLT4gdG9fOnN0cmluZyAtPiB1bml0KSBvcHRpb24gcmVmID0gcmVmICAgTm9uZVxubGV0IHNldF9kaWZmX2Z1bmN0aW9uIGYgPSByX2RpZmYgOj0gZlxuXG5sZXQgW0Bjb2xkXSB0ZXN0X3Jlc3VsdF9vcl9lcV9mYWlsZWQgfnNleHBpZmllciB+ZXhwZWN0IH5nb3QgPVxuICBsZXQgZ290ID0gc2V4cGlmaWVyIGdvdCBpblxuICBsZXQgZXhwZWN0ID0gc2V4cGlmaWVyIGV4cGVjdCBpblxuICBiZWdpbiBtYXRjaCAhcl9kaWZmIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBkaWZmIC0+XG4gICAgbGV0IGZyb21fID0gU2V4cC50b19zdHJpbmdfaHVtIGV4cGVjdCBpblxuICAgIGxldCB0b18gICA9IFNleHAudG9fc3RyaW5nX2h1bSBnb3QgaW5cbiAgICBkaWZmIH5mcm9tXyB+dG9fXG4gIGVuZDtcbiAgYEZhaWwgKGV4cGVjdCwgZ290KVxuXG5sZXQgdGVzdF9yZXN1bHRfb3JfZXEgfnNleHBpZmllciB+Y29tcGFyYXRvciB+ZXF1YWwgfmV4cGVjdCB+Z290ID1cbiAgbGV0IHBhc3MgPVxuICAgIG1hdGNoIGVxdWFsIHdpdGhcbiAgICB8IE5vbmUgLT4gY29tcGFyYXRvciBnb3QgZXhwZWN0ID0gMFxuICAgIHwgU29tZSBmIC0+IGYgZ290IGV4cGVjdFxuICBpblxuICBpZiBwYXNzXG4gIHRoZW4gYFBhc3NcbiAgZWxzZSB0ZXN0X3Jlc3VsdF9vcl9lcV9mYWlsZWQgfnNleHBpZmllciB+ZXhwZWN0IH5nb3RcblxubGV0IFtAY29sZF0gZXhuX3Rlc3RfZXEgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dDEgfnQyID1cbiAgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnOlwiY29tcGFyaXNvbiBmYWlsZWRcIiBbXG4gICAgdDE7XG4gICAgU2V4cC5BdG9tIFwidnNcIjtcbiAgICB0MjtcbiAgXVxuXG5sZXQgdGVzdF9lcSB+cG9zIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmhlcmUgP21lc3NhZ2UgP2VxdWFsIHQxIHQyID1cbiAgbWF0Y2ggdGVzdF9yZXN1bHRfb3JfZXEgfnNleHBpZmllciB+Y29tcGFyYXRvciB+ZXF1YWwgfmV4cGVjdDp0MSB+Z290OnQyIHdpdGhcbiAgfCBgUGFzcyAtPiAoKVxuICB8IGBGYWlsICh0MSwgdDIpIC0+IHJhaXNlIChleG5fdGVzdF9lcSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50MSB+dDIpXG5cbmxldCBbQGNvbGRdIGV4bl90ZXN0X3Jlc3VsdCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5leHBlY3QgfmdvdCA9XG4gIGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZzpcImdvdCB1bmV4cGVjdGVkIHJlc3VsdFwiIFtcbiAgICBTZXhwLkxpc3QgW1NleHAuQXRvbSBcImV4cGVjdGVkXCI7IGV4cGVjdF07XG4gICAgU2V4cC5MaXN0IFtTZXhwLkF0b20gXCJnb3RcIjsgZ290XTtcbiAgXVxuXG5sZXRbQHdhcm5pbmcgXCItMTZcIl0gdGVzdF9yZXN1bHQgfnBvcyB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5oZXJlID9tZXNzYWdlID9lcXVhbCB+ZXhwZWN0IH5nb3QgPVxuICBtYXRjaCB0ZXN0X3Jlc3VsdF9vcl9lcSB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5lcXVhbCB+ZXhwZWN0IH5nb3Qgd2l0aFxuICB8IGBQYXNzIC0+ICgpXG4gIHwgYEZhaWwgKGV4cGVjdCwgZ290KSAtPiByYWlzZSAoZXhuX3Rlc3RfcmVzdWx0IH5tZXNzYWdlIH5wb3MgfmhlcmUgfmV4cGVjdCB+Z290KVxuIiwibGV0IHVuaXF1ZV9pZCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuXG4oKiBVc2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IGxpYm5hbWUgaW4gc3VjaCBhIHdheSB0aGF0IGZvciBmdW5jdG9yIGFwcGxpY2F0aW9ucywgaXQgaXNcbiAgIHRoZSBjYWxsaW5nIGxpYnJhcmllcyBuYW1lIHRoYXQgZ2V0cyByZWdpc3RlcmVkLiAqKVxubW9kdWxlIEN1cnJlbnRfbGlibmFtZSA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiPHVua25vd24+XCJcbiAgbGV0IGxpYm5hbWVfcmVmID0gcmVmIG51bGxcbiAgbGV0IHNldCBzdHIgPSBsaWJuYW1lX3JlZiA6PSBzdHJcbiAgbGV0IHVuc2V0ICgpID0gbGlibmFtZV9yZWYgOj0gbnVsbFxuICBsZXQgZ2V0ICgpID0gIWxpYm5hbWVfcmVmXG5lbmRcblxubW9kdWxlIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrID0gc3RydWN0XG4gIGxldCB0ID0gcmVmIFtdXG4gIGxldCBwdXNoIHMgPSB0IDo9IHMgOjogIXRcbiAgbGV0IHBvcF9leG4gKCkgPSB0IDo9IExpc3QudGwgIXRcblxuICBsZXQgdG9fbmFtZSAoKSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgbXMgLT4gU29tZSAoU3RyaW5nLmNvbmNhdCBcIi5cIiAoTGlzdC5yZXYgbXMpKVxuICA7O1xuZW5kXG5cbigqIFRoaXMgaXMgdGhlIG1haW4gZGF0YSBzdHJ1Y3R1cmUgb2YgdGhpcyBtb2R1bGUuIEFuIFtFbnRyeS50XSByZXByZXNlbnRzIGEgYmVuY2htYXJrXG4gICBhbG9uZyB3aXRoIHNvbWUgbWV0YWRhdGEgYWJvdXQgaXMgcG9zaXRpb24sIGFyZ3VtZW50cyBldGMuICopXG5tb2R1bGUgRW50cnkgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3BhcmFtLCAnYSkgcGFyYW1ldGVyaXNlZF9zcGVjID1cbiAgICB7IGFyZ19uYW1lIDogc3RyaW5nXG4gICAgOyBwYXJhbXMgOiAoc3RyaW5nICogJ3BhcmFtKSBsaXN0XG4gICAgOyB0aHVuayA6ICdwYXJhbSAtPiB1bml0IC0+ICdhXG4gICAgfVxuXG4gIHR5cGUgdGVzdF9zcGVjID1cbiAgICB8IFJlZ3VsYXJfdGh1bmsgOiAoWyBgaW5pdCBdIC0+IHVuaXQgLT4gJ2EpIC0+IHRlc3Rfc3BlY1xuICAgIHwgUGFyYW1ldGVyaXNlZF90aHVuayA6ICgncGFyYW0sICdhKSBwYXJhbWV0ZXJpc2VkX3NwZWMgLT4gdGVzdF9zcGVjXG5cbiAgdHlwZSB0ID1cbiAgICB7IHVuaXF1ZV9pZCA6IGludFxuICAgIDsgY29kZSA6IHN0cmluZ1xuICAgIDsgdHlwZV9jb252X3BhdGggOiBzdHJpbmdcbiAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICA7IGZpbGVuYW1lIDogc3RyaW5nXG4gICAgOyBsaW5lIDogaW50XG4gICAgOyBzdGFydHBvcyA6IGludFxuICAgIDsgZW5kcG9zIDogaW50XG4gICAgOyB0ZXN0X3NwZWMgOiB0ZXN0X3NwZWNcbiAgICA7IGJlbmNoX21vZHVsZV9uYW1lIDogc3RyaW5nIG9wdGlvblxuICAgIH1cblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmUgdDEudW5pcXVlX2lkIHQyLnVuaXF1ZV9pZFxuXG4gICgqIEV4dHJhY3RzIG1vZHVsZSBuYW1lIGZyb20gW1wiZmlsZW5hbWUubWwuTW9kdWxlXCJdLCB3aGljaCBpcyB0aGUgZm9ybWF0IG9mIFtleHRfbmFtZV1cbiAgICAgYXMgc2V0IGJ5IFt0eXBlY29udl0uICopXG4gIGxldCBnZXRfbW9kdWxlX25hbWVfb3B0IHQgPVxuICAgIGxldCBzdHIgPSB0LnR5cGVfY29udl9wYXRoIGluXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSArIDQgPD0gbGVuXG4gICAgICB0aGVuXG4gICAgICAgIGlmIFN0cmluZy5zdWIgc3RyIGkgNCA9IFwiLm1sLlwiXG4gICAgICAgIHRoZW4gU29tZSAoU3RyaW5nLnN1YiBzdHIgKGkgKyA0KSAobGVuIC0gaSAtIDQpKVxuICAgICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBOb25lXG4gICAgaW5cbiAgICBsb29wIDBcbiAgOztcblxuICBsZXQgd2l0aF90ZXN0X3NwZWMgdCB0ZXN0X3NwZWMgPSB7IHQgd2l0aCB0ZXN0X3NwZWMgfVxuZW5kXG5cbigqIEluc3BlY3Qgc3lzdGVtIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBkZWNpZGUgaWYgYmVuY2htYXJrcyBhcmUgYmVpbmcgcnVuLiBUaGlzIGlzXG4gICBjYWxsZWQgYnkgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBbcGFfYmVuY2hdIHN5bnRheCB0byBkZWNpZGUgaWYgdGhlIGdsb2JhbCBoYXNodGFibGVcbiAgIHNob3VsZCBiZSBwb3B1bGF0ZWQuICopXG5sZXQgYWRkX2Vudmlyb25tZW50X3ZhciA9XG4gIGxldCB2ID1cbiAgICB0cnkgU3lzLmdldGVudiBcIkJFTkNITUFSS1NfUlVOTkVSXCIgd2l0aFxuICAgIHwgTm90X2ZvdW5kIC0+IFwiXCJcbiAgaW5cbiAgdiA9IFwiVFJVRVwiXG47O1xuXG4oKiBUaGlzIGhhc2h0YWJsZSBjb250YWlucyBhbGwgdGhlIGJlbmNobWFya3MgZnJvbSBhbGwgdGhlIG9mIGxpYnJhcmllcyB0aGF0IGhhdmUgYmVlblxuICAgbG9hZGVkLiBBdCB0aGUgdGltZSB0aGUgYmVuY2htYXJrcyBhcmUgcmVnaXN0ZXJpbmcgdGhlbXNlbHZlcyB3aXRoIFtwcHhfYmVuY2hfbGliXSB3ZVxuICAgZG9uJ3QgeWV0IGtub3cgd2hpY2ggbGlicmFyaWVzIHdpbGwgbmVlZCB0byBiZSBydW4uICAqKVxubGV0IGxpYnNfdG9fZW50cmllcyA6IChzdHJpbmcsIEVudHJ5LnQgbGlzdCkgSGFzaHRibC50ID0gSGFzaHRibC5jcmVhdGUgMTBcblxubGV0IGxvb2t1cF9yZXZfbGliIH5saWJuYW1lID1cbiAgdHJ5IEhhc2h0YmwuZmluZCBsaWJzX3RvX2VudHJpZXMgbGlibmFtZSB3aXRoXG4gIHwgTm90X2ZvdW5kIC0+IFtdXG47O1xuXG5sZXQgbG9va3VwX2xpYiB+bGlibmFtZSA9IExpc3QucmV2IChsb29rdXBfcmV2X2xpYiB+bGlibmFtZSlcblxubGV0IGZvcmNlX2Ryb3AgPVxuICAoKiBVc2VmdWwgZm9yIGpzX29mX29jYW1sIHRvIHBlcmZvcm0gZGVhZGNvZGUgZWxpbWluYXRpb24uXG4gICAgIHNlZSBwcHgvcHB4X2lubGluZV90ZXN0L3J1bnRpbWUtbGliL3J1bnRpbWUubWwgW0FjdGlvbi5nZXRdIGZvciBtb3JlIGRldGFpbHMgKilcbiAgdHJ5XG4gICAgaWdub3JlIChTeXMuZ2V0ZW52IFwiRk9SQ0VfRFJPUF9CRU5DSFwiIDogc3RyaW5nKTtcbiAgICB0cnVlXG4gIHdpdGhcbiAgfCBOb3RfZm91bmQgLT4gZmFsc2Vcbjs7XG5cbmxldCBnZXRfbW9kZSAoKSA9IGlmIGZvcmNlX2Ryb3AgdGhlbiBgSWdub3JlIGVsc2UgYENvbGxlY3RcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGFkZF9iZW5jaFxuICAgICAgICAgICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH5jb2RlXG4gICAgICAgICAgICAgICAgICAgICB+ZmlsZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH50eXBlX2NvbnZfcGF0aFxuICAgICAgICAgICAgICAgICAgICAgfmxpbmVcbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydHBvc1xuICAgICAgICAgICAgICAgICAgICAgfmVuZHBvc1xuICAgICAgICAgICAgICAgICAgICAgdGVzdF9zcGVjXG4gID1cbiAgbWF0Y2ggZ2V0X21vZGUgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgQ29sbGVjdCAtPlxuICAgIGxldCBsaWJuYW1lID0gQ3VycmVudF9saWJuYW1lLmdldCAoKSBpblxuICAgIGxldCBlbnRyeSA9XG4gICAgICB7IEVudHJ5LmNvZGVcbiAgICAgIDsgdW5pcXVlX2lkID0gdW5pcXVlX2lkICgpXG4gICAgICA7IHR5cGVfY29udl9wYXRoXG4gICAgICA7IGJlbmNoX21vZHVsZV9uYW1lID0gQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sudG9fbmFtZSAoKVxuICAgICAgOyBuYW1lXG4gICAgICA7IGZpbGVuYW1lXG4gICAgICA7IGxpbmVcbiAgICAgIDsgc3RhcnRwb3NcbiAgICAgIDsgZW5kcG9zXG4gICAgICA7IHRlc3Rfc3BlY1xuICAgICAgfVxuICAgIGluXG4gICAgSGFzaHRibC5hZGQgbGlic190b19lbnRyaWVzIGxpYm5hbWUgKGVudHJ5IDo6IGxvb2t1cF9yZXZfbGliIH5saWJuYW1lKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGFkZF9iZW5jaF9tb2R1bGVcbiAgICAgICAgICAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICAgICAgICAgICB+Y29kZTpfXG4gICAgICAgICAgICAgICAgICAgICB+dHlwZV9jb252X3BhdGg6X1xuICAgICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lOl9cbiAgICAgICAgICAgICAgICAgICAgIH5saW5lOl9cbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydHBvczpfXG4gICAgICAgICAgICAgICAgICAgICB+ZW5kcG9zOl9cbiAgICAgICAgICAgICAgICAgICAgIGZcbiAgPVxuICBtYXRjaCBnZXRfbW9kZSAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPiAoKVxuICB8IGBDb2xsZWN0IC0+XG4gICAgKCogUnVubmluZyBmIHJlZ2lzdGVycyB0aGUgYmVuY2htYXJrcyB1c2luZyBCRU5DSCAqKVxuICAgIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnB1c2ggbmFtZTtcbiAgICAodHJ5XG4gICAgICAgZiAoKTtcbiAgICAgICBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjay5wb3BfZXhuICgpXG4gICAgIHdpdGhcbiAgICAgfCBleCAtPlxuICAgICAgIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnBvcF9leG4gKCk7XG4gICAgICAgcmFpc2UgZXgpXG47O1xuIiwidHlwZSB0ID0gc3RyaW5nXG5cbigqIFNoYXJlIHRoZSBkaWdlc3Qgb2YgdGhlIGVtcHR5IHN0cmluZyAqKVxubGV0IGVtcHR5ID0gRGlnZXN0LnN0cmluZyBcIlwiXG5sZXQgbWFrZSBzID1cbiAgaWYgcyA9IGVtcHR5IHRoZW5cbiAgICBlbXB0eVxuICBlbHNlXG4gICAgc1xuXG5sZXQgY29tcGFyZSA9IGNvbXBhcmVcblxubGV0IGxlbmd0aCA9IDE2XG5cbmxldCB0b19iaW5hcnkgcyA9IHNcbmxldCBvZl9iaW5hcnlfZXhuIHMgPSBhc3NlcnQgKFN0cmluZy5sZW5ndGggcyA9IGxlbmd0aCk7IG1ha2Ugc1xubGV0IHVuc2FmZV9vZl9iaW5hcnkgPSBtYWtlXG5cbmxldCB0b19oZXggPSBEaWdlc3QudG9faGV4XG5sZXQgb2ZfaGV4X2V4biBzID0gbWFrZSAoRGlnZXN0LmZyb21faGV4IHMpXG5cbmxldCBzdHJpbmcgcyA9IG1ha2UgKERpZ2VzdC5zdHJpbmcgcylcblxubGV0IGJ5dGVzIHMgPSBtYWtlIChEaWdlc3QuYnl0ZXMgcylcblxubGV0IHN1YmJ5dGVzIGJ5dGVzIH5wb3MgfmxlbiA9IG1ha2UgKERpZ2VzdC5zdWJieXRlcyBieXRlcyBwb3MgbGVuKVxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgTG9jYXRpb24gOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubW9kdWxlIFV1aWQgOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubGV0IGV2YWxfZmFpbCBsb2MgZm10ID1cbiAgUHJpbnRmLmtzcHJpbnRmIChmdW4gcyAtPiBmYWlsd2l0aCAoUHJpbnRmLnNwcmludGYgIVwiJXtMb2NhdGlvbn06ICVzXCIgbG9jIHMpKSBmbXRcbjs7XG5cbmxldCBlcXVhbF9vcHRpb24gZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgU29tZSBfLCBOb25lIHwgTm9uZSwgU29tZSBfIC0+IGZhbHNlXG4gIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG47O1xuXG5tb2R1bGUgU29ydGVkX3RhYmxlIDogc2lnXG4gIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBjcmVhdGUgOiBMb2NhdGlvbi50IC0+IGVxOignYSAtPiAnYSAtPiBib29sKSAtPiAoc3RyaW5nICogJ2EpIGxpc3QgLT4gJ2EgdFxuICB2YWwgZXhwb3NlIDogJ2EgdCAtPiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSB7IHNvcnRlZCA6IChzdHJpbmcgKiAnYSkgbGlzdCB9IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IG1lcmdlX2NoZWNrX2FkamFjZW50X2R1cHNcbiAgICA6ICBlcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKHN0cmluZyAqICdhKSBsaXN0XG4gICAgICAtPiBbIGBPayBvZiAoc3RyaW5nICogJ2EpIGxpc3QgfCBgTWlzbWF0Y2ggb2Ygc3RyaW5nIF1cbiAgICA9XG4gICAgZnVuIH5lcSAtPlxuICAgIGxldCByZWMgbG9vcCBhY2Mgfmxhc3Rfa2V5IH5sYXN0X3ZhbHVlID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYE9rIChMaXN0LnJldiBhY2MpXG4gICAgICB8IChrZXksIHZhbHVlKSA6OiB4cyAtPlxuICAgICAgICBpZiBTdHJpbmcuKGxhc3Rfa2V5ID0ga2V5KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgaWYgZXEgbGFzdF92YWx1ZSB2YWx1ZSB0aGVuIGxvb3AgYWNjIH5sYXN0X2tleSB+bGFzdF92YWx1ZSB4cyBlbHNlIGBNaXNtYXRjaCBrZXlcbiAgICAgICAgZWxzZSBsb29wICgoa2V5LCB2YWx1ZSkgOjogYWNjKSB+bGFzdF9rZXk6a2V5IH5sYXN0X3ZhbHVlOnZhbHVlIHhzXG4gICAgaW5cbiAgICBmdW5jdGlvblxuICAgIHwgW10gLT4gYE9rIFtdXG4gICAgfCAoa2V5LCB2YWx1ZSkgOjogeHMgLT4gbG9vcCBbIGtleSwgdmFsdWUgXSB+bGFzdF9rZXk6a2V5IH5sYXN0X3ZhbHVlOnZhbHVlIHhzXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBsb2MgfmVxIHhzID1cbiAgICBsZXQgc29ydGVkID0gTGlzdC5zb3J0IH5jb21wYXJlOihmdW4gKHMxLCBfKSAoczIsIF8pIC0+IFN0cmluZy5jb21wYXJlIHMxIHMyKSB4cyBpblxuICAgIG1hdGNoIG1lcmdlX2NoZWNrX2FkamFjZW50X2R1cHMgfmVxIHNvcnRlZCB3aXRoXG4gICAgfCBgT2sgc29ydGVkIC0+IHsgc29ydGVkIH1cbiAgICB8IGBNaXNtYXRjaCBzIC0+XG4gICAgICBldmFsX2ZhaWwgbG9jIFwiRGlmZmVyZW50IHNoYXBlcyBmb3IgZHVwbGljYXRlZCBwb2x5bW9ycGhpYyBjb25zdHJ1Y3RvcjogYCVzXCIgcyAoKVxuICA7O1xuXG4gIGxldCBleHBvc2UgdCA9IHQuc29ydGVkXG4gIGxldCBtYXAgdCB+ZiA9IHsgc29ydGVkID0gTGlzdC5tYXAgdC5zb3J0ZWQgfmY6KGZ1biAoaywgdikgLT4gaywgZiB2KSB9XG5lbmRcblxubW9kdWxlIERpZ2VzdCA6IHNpZ1xuICB0eXBlIHQgPSBNZDVfbGliLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgdG9fbWQ1IDogdCAtPiBNZDVfbGliLnRcbiAgdmFsIG9mX21kNSA6IE1kNV9saWIudCAtPiB0XG4gIHZhbCB0b19oZXggOiB0IC0+IHN0cmluZ1xuICB2YWwgY29uc3RydWN0b3IgOiBzdHJpbmcgLT4gdCBsaXN0IC0+IHRcbiAgdmFsIGxpc3QgOiB0IGxpc3QgLT4gdFxuICB2YWwgcGFpciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzdHJpbmcgOiBzdHJpbmcgLT4gdFxuICB2YWwgdXVpZCA6IFV1aWQudCAtPiB0XG4gIHZhbCBpbnQgOiBpbnQgLT4gdFxuICB2YWwgb3B0aW9uIDogdCBvcHRpb24gLT4gdFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgTWQ1X2xpYlxuXG4gIGxldCB0b19tZDUgdCA9IHRcbiAgbGV0IG9mX21kNSB0ID0gdFxuICBsZXQgc2V4cF9vZl90IHQgPSB0IHw+IHRvX2hleCB8PiBzZXhwX29mX3N0cmluZ1xuICBsZXQgdF9vZl9zZXhwIHMgPSBzIHw+IHN0cmluZ19vZl9zZXhwIHw+IG9mX2hleF9leG5cbiAgbGV0IHV1aWQgdSA9IHN0cmluZyAoVXVpZC50b19zdHJpbmcgdSlcbiAgbGV0IGludCB4ID0gc3RyaW5nIChJbnQudG9fc3RyaW5nIHgpXG4gIGxldCBwYWlyIHggeSA9IHN0cmluZyAodG9fYmluYXJ5IHggXiB0b19iaW5hcnkgeSlcbiAgbGV0IGxpc3QgbCA9IHN0cmluZyAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgKExpc3QubWFwIH5mOnRvX2JpbmFyeSBsKSlcbiAgbGV0IGNvbnN0cnVjdG9yIHMgbCA9IHN0cmluZyAocyBeIHRvX2JpbmFyeSAobGlzdCBsKSlcblxuICBsZXQgb3B0aW9uID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gY29uc3RydWN0b3IgXCJub25lXCIgW11cbiAgICB8IFNvbWUgeCAtPiBjb25zdHJ1Y3RvciBcInNvbWVcIiBbIHggXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yID0gc3RydWN0XG4gICgqIFsnYSB0XSBpcyBhIG5vbi1yZWN1cnNpdmUgdHlwZSwgdXNlZCB0byByZXByZXNlbnQgMS1sYXllciBvZiBleHByZXNzaW9uLiAgVGhlXG4gICAgIHJlY3Vyc2l2ZSBrbm90IGlzIHRpZWQgYmVsb3cgaW4gW0Nhbm9uaWNhbF9mdWxsLkV4cC50XS4gKilcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEFubm90YXRlIG9mIFV1aWQudCAqICdhXG4gICAgfCBCYXNlIG9mIFV1aWQudCAqICdhIGxpc3RcbiAgICB8IFR1cGxlIG9mICdhIGxpc3RcbiAgICB8IFJlY29yZCBvZiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgICB8IFZhcmlhbnQgb2YgKHN0cmluZyAqICdhIGxpc3QpIGxpc3RcbiAgICAoKiBQb2x5bW9ycGhpYyB2YXJpYW50cyBhcmUgaW5zZW5zaXRpdmUgdG8gdGhlIG9yZGVyIHRoZSBjb25zdHJ1Y3RvcnMgYXJlIGxpc3RlZCAqKVxuICAgIHwgUG9seV92YXJpYW50IG9mICdhIG9wdGlvbiBTb3J0ZWRfdGFibGUudFxuICAgICgqIExlZnQtaGFuZC1zaWRlIG9mIFtBcHBsaWNhdGlvbl0gaXMgYSBwb3RlbnRpYWxseSByZWN1cnNpdmUgZGVmaW5pdGlvbjogaXRcbiAgICAgICBjYW4gcmVmZXIgdG8gaXRzZWxmIHVzaW5nIFtSZWNfYXBwIChpLCBfKV0gd2hlcmUgW2ldIGlzIHRoZSBkZXB0aCBvZiB0aGlzXG4gICAgICAgYXBwbGljYXRpb24gbm9kZSAoaG93IG1hbnkgYXBwbGljYXRpb24gbm9kZXMgYXJlIGFib3ZlIGl0KS5cbiAgICAgICBJdCBhbHNvIGhhcyBpdHMgb3duIHNjb3BlIG9mIHR5cGUgdmFyaWFibGVzIHNvIGl0IGNhbiBub3QgcmVmZXIgdG8gdHlwZSB2YXJpYWJsZXNcbiAgICAgICBvZiB0aGUgZW5jbG9zaW5nIHNjb3BlLlxuICAgICopXG4gICAgfCBBcHBsaWNhdGlvbiBvZiAnYSAqICdhIGxpc3RcbiAgICB8IFJlY19hcHAgb2YgaW50ICogJ2EgbGlzdFxuICAgIHwgVmFyIG9mIGludFxuICBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlXVxuXG4gIGxldCBtYXAgeCB+ZiA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBbm5vdGF0ZSAodSwgeCkgLT4gQW5ub3RhdGUgKHUsIGYgeClcbiAgICB8IEJhc2UgKHMsIHhzKSAtPiBCYXNlIChzLCBMaXN0Lm1hcCB+ZiB4cylcbiAgICB8IFR1cGxlIHhzIC0+IFR1cGxlIChMaXN0Lm1hcCB+ZiB4cylcbiAgICB8IFJlY29yZCBsIC0+IFJlY29yZCAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCB4KSAtPiBzLCBmIHgpKVxuICAgIHwgVmFyaWFudCBsIC0+IFZhcmlhbnQgKExpc3QubWFwIGwgfmY6KGZ1biAocywgeHMpIC0+IHMsIExpc3QubWFwIH5mIHhzKSlcbiAgICB8IFBvbHlfdmFyaWFudCB0IC0+IFBvbHlfdmFyaWFudCAoU29ydGVkX3RhYmxlLm1hcCB0IH5mOihPcHRpb24ubWFwIH5mKSlcbiAgICB8IEFwcGxpY2F0aW9uICh4LCBsKSAtPiBBcHBsaWNhdGlvbiAoZiB4LCBMaXN0Lm1hcCB+ZiBsKVxuICAgIHwgUmVjX2FwcCAodCwgbCkgLT4gUmVjX2FwcCAodCwgTGlzdC5tYXAgfmYgbClcbiAgICB8IFZhciB2IC0+IFZhciB2XG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCAoZnVuIF8gLT4gQXRvbSBcIi4uLlwiKSB0KVxuZW5kXG5cbm1vZHVsZSBDcmVhdGVfZGlnZXN0IDogc2lnXG4gICgqIERpZ2VzdCB2YXJpb3VzIGV4cHJlc3Npb24gZm9ybXMgKilcblxuICB2YWwgZGlnZXN0X2xheWVyIDogRGlnZXN0LnQgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci50IC0+IERpZ2VzdC50XG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGRpZ2VzdF9sYXllciA9IGZ1bmN0aW9uXG4gICAgfCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLkFubm90YXRlICh1LCB4KSAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yIFwiYW5ub3RhdGVcIiBbIERpZ2VzdC51dWlkIHU7IHggXVxuICAgIHwgQmFzZSAodSwgbCkgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwiYmFzZVwiIFsgRGlnZXN0LnV1aWQgdTsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBUdXBsZSBsIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcInR1cGxlXCIgWyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFJlY29yZCBsIC0+XG4gICAgICBEaWdlc3QuY29uc3RydWN0b3JcbiAgICAgICAgXCJyZWNvcmRcIlxuICAgICAgICBbIERpZ2VzdC5saXN0IChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIHQpIC0+IERpZ2VzdC5wYWlyIChEaWdlc3Quc3RyaW5nIHMpIHQpKSBdXG4gICAgfCBWYXJpYW50IGwgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvclxuICAgICAgICBcInZhcmlhbnRcIlxuICAgICAgICBbIERpZ2VzdC5saXN0XG4gICAgICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCBsKSAtPiBEaWdlc3QucGFpciAoRGlnZXN0LnN0cmluZyBzKSAoRGlnZXN0Lmxpc3QgbCkpKVxuICAgICAgICBdXG4gICAgfCBQb2x5X3ZhcmlhbnQgdGFibGUgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvclxuICAgICAgICBcInBvbHlfdmFyaWFudFwiXG4gICAgICAgIFsgRGlnZXN0Lmxpc3RcbiAgICAgICAgICAgIChMaXN0Lm1hcCAoU29ydGVkX3RhYmxlLmV4cG9zZSB0YWJsZSkgfmY6KGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgIERpZ2VzdC5wYWlyIChEaWdlc3Quc3RyaW5nIHgpIChEaWdlc3Qub3B0aW9uIHkpKSlcbiAgICAgICAgXVxuICAgIHwgQXBwbGljYXRpb24gKHgsIGwpIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcImFwcGxpY2F0aW9uXCIgWyB4OyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFJlY19hcHAgKG4sIGwpIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcInJlY19hcHBcIiBbIERpZ2VzdC5pbnQgbjsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBWYXIgbiAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJ2YXJcIiBbIERpZ2VzdC5pbnQgbiBdXG4gIDs7XG5lbmRcblxubW9kdWxlIFZpc2liaWxpdHkgPSBzdHJ1Y3RcbiAgdHlwZSB2aXNpYmxlID0gVmlzaWJsZVxuICB0eXBlIG9wYXF1ZSA9IE9wYXF1ZVxuXG4gIGxldCBfID0gVmlzaWJsZVxuICBsZXQgXyA9IE9wYXF1ZVxuZW5kXG5cbm1vZHVsZSB0eXBlIENhbm9uaWNhbCA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdG9fZGlnZXN0IDogdCAtPiBEaWdlc3QudFxuXG4gIG1vZHVsZSBFeHAxIDogc2lnXG4gICAgdHlwZSBfIHRcblxuICAgIHZhbCB2YXIgOiBpbnQgLT4gXyB0XG4gICAgdmFsIHJlY3Vyc2UgOiBpbnQgLT4gXyB0IGxpc3QgLT4gXyB0XG4gICAgdmFsIGFwcGx5IDogJ2EgdCAtPiAnYSB0IGxpc3QgLT4gXyB0XG4gICAgdmFsIG9wYXF1ZSA6IF8gdCAtPiBWaXNpYmlsaXR5Lm9wYXF1ZSB0XG5cbiAgICB2YWwgZ2V0X3BvbHlfdmFyaWFudFxuICAgICAgOiAgVmlzaWJpbGl0eS52aXNpYmxlIHRcbiAgICAgIC0+IChWaXNpYmlsaXR5Lm9wYXF1ZSB0IG9wdGlvbiBTb3J0ZWRfdGFibGUudCwgc3RyaW5nKSBSZXN1bHQudFxuICBlbmRcblxuICBtb2R1bGUgRGVmIDogc2lnXG4gICAgdHlwZSB0ID0gVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudFxuICBlbmRcblxuICBtb2R1bGUgQ3JlYXRlIDogc2lnXG4gICAgdmFsIGFubm90YXRlIDogVXVpZC50IC0+IF8gRXhwMS50IC0+IF8gRXhwMS50XG4gICAgdmFsIGJhc2V0eXBlIDogVXVpZC50IC0+IF8gRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgdHVwbGUgOiBfIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHBvbHlfdmFyaWFudCA6IExvY2F0aW9uLnQgLT4gKHN0cmluZyAqIF8gRXhwMS50IG9wdGlvbikgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCB2YXIgOiBpbnQgLT4gXyBFeHAxLnRcbiAgICB2YWwgcmVjdXJzZSA6IGludCAtPiBfIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIGFwcGx5IDogJ2EgRXhwMS50IC0+ICdhIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIGRlZmluZSA6IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnQgLT4gRGVmLnRcbiAgICB2YWwgcmVjb3JkIDogKHN0cmluZyAqIF8gRXhwMS50KSBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHZhcmlhbnQgOiAoc3RyaW5nICogXyBFeHAxLnQgbGlzdCkgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCBjcmVhdGUgOiBfIEV4cDEudCAtPiB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWxfZGlnZXN0IDogQ2Fub25pY2FsID0gc3RydWN0XG4gIHR5cGUgdCA9IENhbm9uaWNhbCBvZiBEaWdlc3QudFxuXG4gIGxldCB0b19kaWdlc3QgKENhbm9uaWNhbCB4KSA9IHhcblxuICBtb2R1bGUgQ0QgPSBDcmVhdGVfZGlnZXN0XG5cbiAgbW9kdWxlIEV4cDEgPSBzdHJ1Y3RcbiAgICB0eXBlIG9wYXF1ZSA9IERpZ2VzdC50XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBQb2x5X3ZhcmlhbnQgb2Ygb3BhcXVlIG9wdGlvbiBTb3J0ZWRfdGFibGUudFxuICAgICAgfCBOb25fcG9seV92YXJpYW50IG9mIChzdHJpbmcgKiBvcGFxdWUpXG4gICAgICB8IE9wYXF1ZSA6IG9wYXF1ZSAtPiBWaXNpYmlsaXR5Lm9wYXF1ZSB0XG5cbiAgICBsZXQgdG9fZGlnZXN0ICh0eXBlIGEpICh4IDogYSB0KSA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgT3BhcXVlIHggLT4geFxuICAgICAgfCBOb25fcG9seV92YXJpYW50IChfLCB4KSAtPiB4XG4gICAgICB8IFBvbHlfdmFyaWFudCB4IC0+IENELmRpZ2VzdF9sYXllciAoUG9seV92YXJpYW50IHgpXG4gICAgOztcblxuICAgIGxldCBlcXVhbCAodHlwZSBhKSAoeCA6IGEgdCkgKHkgOiBhIHQpID1cbiAgICAgIERpZ2VzdC5jb21wYXJlICh0b19kaWdlc3QgeCkgKHRvX2RpZ2VzdCB5KSA9IDBcbiAgICA7O1xuXG4gICAgbGV0IG9wYXF1ZSB4ID0gT3BhcXVlICh0b19kaWdlc3QgeClcblxuICAgIGxldCBjcmVhdGUgeCA9XG4gICAgICBsZXQgeCA9IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IubWFwIH5mOnRvX2RpZ2VzdCB4IGluXG4gICAgICBsZXQgZGVzYyA9IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudG9fc3RyaW5nIHggaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlBvbHlfdmFyaWFudCBsIC0+IFBvbHlfdmFyaWFudCBsXG4gICAgICB8IEJhc2UgXyAtPiBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgQW5ub3RhdGUgXyAtPlxuICAgICAgICAoKiBJdCdzIHVuc2FmZSB0byB1c2UgZGVyaXZpbmcgYmluX2lvIHdoZW4gaW5oZXJpdGluZyBmcm9tIGEgcG9seW1vcnBoaWMgdmFyaWFudFxuICAgICAgICAgICB0aGF0IGhhcyBhIGN1c3RvbSBiaW5faW8uICBJZiB3ZSBmb3JiaWQgdGhhdCwgd2UgY2FuIGhhcHBpbHkgcmVqZWN0IGhlcmVcbiAgICAgICAgICAgYW55dGhpbmcgdGhhdCdzIGFubm90YXRlZC4gKilcbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IEFwcGxpY2F0aW9uIF8gLT5cbiAgICAgICAgKCogQXBwbGljYXRpb24gY2FuIHJlYWxseSBiZSBhIHBvbHktdmFyaWFudCB5b3UgY2FuIGluaGVyaXQgZnJvbSEgIEJ1dCBpdCdzIGFcbiAgICAgICAgICAgcmFyZSBzaXR1YXRpb24gdGhhdCBtb3N0bHkgKG9ubHk/KSBhcmlzZXMgd2l0aCBpbmhlcml0YW5jZSBmcm9tIHJlY3Vyc2l2ZVxuICAgICAgICAgICBwb2x5bW9ycGljIHZhcmlhbnRzLCB3aGljaCB3ZSd2ZSBub3Qgc2VlbiBhbnl3aGVyZSB5ZXQuICBTbyB3ZSByZWplY3QgaXQuICopXG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgICAgfCBSZWNfYXBwIF8gLT5cbiAgICAgICAgKCogWW91IGNhbiBvbmx5IGdldCB0aGUgW1JlY19hcHBdIGNvbnN0cnVjdG9yIGZvciB0eXBlLXJlZmVyZW5jZXMgd2l0aGluIHRoZVxuICAgICAgICAgICBtdXR1YWwgZ3JvdXAgYmVpbmcgZGVmaW5lZC4gUmVmZXJlbmNlcyB3aGljaFxuICAgICAgICAgICBmb2xsb3cgYWZ0ZXIgdGhlIGN1cnJlbnQgZ3JvdXAgd2lsbCBhbHdheXMgYmUgW0FwcGxpY2F0aW9uXXMuXG5cbiAgICAgICAgICAgQW5kIHNpbmNlIG9jYW1sIHJlamVjdHMgcmVmZXJlbmNlcyBpbiBgaW5oZXJpdGFuY2UnIHBvc2l0aW9uIHRvIHR5cGVzIHdpdGhpblxuICAgICAgICAgICB0aGUgY3VycmVudCBncm91cCAoc2VlIGV4YW1wbGUpIHdpdGg6XG5cbiAgICAgICAgICAgRXJyb3I6IFRoZSB0eXBlIGNvbnN0cnVjdG9yIHRcbiAgICAgICAgICAgaXMgbm90IHlldCBjb21wbGV0ZWx5IGRlZmluZWRcblxuICAgICAgICAgICB0aGVuIGl0cyBvayB0byBzYXkgdGhhdCBhIHJlYy1hcHAgaXMgc29tZXRoaW5nIHRoYXQgY2FuJ3QgYmUgaW5oZXJpdGVkIGZyb20gYW5kXG4gICAgICAgICAgIHJldHVybiBbTm9uX3BvbHlfdmFyaWFudF0uXG5cbiAgICAgICAgICAgQW5kIHVubGlrZSB0aGUgW0FwcGxpY2F0aW9uXSBjYXNlLCBpdCBzaG91bGQgbmV2ZXIgYmUgcG9zc2libGUgdG8gc2VlXG4gICAgICAgICAgIGFuIGVycm9yIG1lc3NhZ2Ugd2l0aCB0aGUgW2Rlc2NdID0gW1JlY19hcHBdLlxuXG4gICAgICAgICAgIEV4YW1wbGU6IFt0eXBlIHQgPSBbYGEgb2YgWyB8IHRdIF1dXG4gICAgICAgICAgIEhlcmUsIFt8IHRdIHdvdWxkIGJlIGFuIGV4YW1wbGUgb2YgaW5oZXJpdGFuY2UgZnJvbSBhIFJlY19hcHAsIHdoaWNoXG4gICAgICAgICAgIGlzIHJlamVjdGVkIGJ5IHRoZSBjb21waWxlci5cbiAgICAgICAgKilcbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IFZhciBfIHwgVHVwbGUgXyB8IFJlY29yZCBfIHwgVmFyaWFudCBfIC0+XG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgIDs7XG5cbiAgICBsZXQgdmFyIHggPSBjcmVhdGUgKFZhciB4KVxuICAgIGxldCBhcHBseSBkZWYgbCA9IGNyZWF0ZSAoQXBwbGljYXRpb24gKGRlZiwgbCkpXG4gICAgbGV0IHJlY3Vyc2UgdGlkIGwgPSBjcmVhdGUgKFJlY19hcHAgKHRpZCwgbCkpXG5cbiAgICBsZXQgZ2V0X3BvbHlfdmFyaWFudCAoeCA6IFZpc2liaWxpdHkudmlzaWJsZSB0KSA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgXykgLT4gRXJyb3IgZGVzY1xuICAgICAgfCBQb2x5X3ZhcmlhbnQgbCAtPiBPayAoU29ydGVkX3RhYmxlLm1hcCB+ZjooT3B0aW9uLm1hcCB+ZjooZnVuIHggLT4gT3BhcXVlIHgpKSBsKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWYgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50XG4gIGVuZFxuXG4gIG1vZHVsZSBDcmVhdGUgPSBzdHJ1Y3RcbiAgICBsZXQgYW5ub3RhdGUgdSB4ID0gRXhwMS5jcmVhdGUgKEFubm90YXRlICh1LCB4KSlcbiAgICBsZXQgYmFzZXR5cGUgdSBsID0gRXhwMS5jcmVhdGUgKEJhc2UgKHUsIGwpKVxuICAgIGxldCB0dXBsZSBsID0gRXhwMS5jcmVhdGUgKFR1cGxlIGwpXG5cbiAgICBsZXQgcG9seV92YXJpYW50IGxvYyBsID1cbiAgICAgIEV4cDEuY3JlYXRlIChQb2x5X3ZhcmlhbnQgKFNvcnRlZF90YWJsZS5jcmVhdGUgbG9jIH5lcTooZXF1YWxfb3B0aW9uIEV4cDEuZXF1YWwpIGwpKVxuICAgIDs7XG5cbiAgICBsZXQgdmFyIHggPSBFeHAxLmNyZWF0ZSAoVmFyIHgpXG4gICAgbGV0IGFwcGx5IHggbCA9IEV4cDEuY3JlYXRlIChBcHBsaWNhdGlvbiAoeCwgbCkpXG4gICAgbGV0IHJlY3Vyc2UgdCBsID0gRXhwMS5jcmVhdGUgKFJlY19hcHAgKHQsIGwpKVxuICAgIGxldCBkZWZpbmUgeCA9IHhcbiAgICBsZXQgcmVjb3JkIGwgPSBFeHAxLmNyZWF0ZSAoUmVjb3JkIGwpXG4gICAgbGV0IHZhcmlhbnQgbCA9IEV4cDEuY3JlYXRlIChWYXJpYW50IGwpXG4gICAgbGV0IGNyZWF0ZSBlID0gQ2Fub25pY2FsIChFeHAxLnRvX2RpZ2VzdCBlKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ2Fub25pY2FsX2Z1bGwgPSBzdHJ1Y3RcbiAgbW9kdWxlIENEID0gQ3JlYXRlX2RpZ2VzdFxuXG4gIG1vZHVsZSBFeHAxID0gc3RydWN0XG4gICAgdHlwZSB0MCA9IEV4cCBvZiB0MCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBlcXVhbF90MCB4IHkgPSBjb21wYXJlX3QwIHggeSA9IDBcblxuICAgIHR5cGUgJ2EgdCA9IHQwIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgdmFyIHggPSBFeHAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuVmFyIHgpXG4gICAgbGV0IGFwcGx5IGQgeHMgPSBFeHAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuQXBwbGljYXRpb24gKGQsIHhzKSlcbiAgICBsZXQgcmVjdXJzZSByIHhzID0gRXhwIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlJlY19hcHAgKHIsIHhzKSlcblxuICAgIGxldCBwb2x5X3ZhcmlhbnQgbG9jIHhzID1cbiAgICAgIEV4cFxuICAgICAgICAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5Qb2x5X3ZhcmlhbnRcbiAgICAgICAgICAgKFNvcnRlZF90YWJsZS5jcmVhdGUgbG9jIH5lcTooZXF1YWxfb3B0aW9uIGVxdWFsX3QwKSB4cykpXG4gICAgOztcblxuICAgIGxldCBnZXRfcG9seV92YXJpYW50ID0gZnVuY3Rpb25cbiAgICAgIHwgRXhwIChQb2x5X3ZhcmlhbnQgdGFiKSAtPiBPayB0YWJcbiAgICAgIHwgRXhwIGNjIC0+IEVycm9yIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnRvX3N0cmluZyBjYylcbiAgICA7O1xuXG4gICAgbGV0IG9wYXF1ZSB0ID0gdFxuXG4gICAgbGV0IHJlYyB0b19kaWdlc3QgPSBmdW5jdGlvblxuICAgICAgfCBFeHAgZSAtPiBDRC5kaWdlc3RfbGF5ZXIgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IubWFwIH5mOnRvX2RpZ2VzdCBlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWYgPSBzdHJ1Y3RcbiAgICAoKiBBIFtEZWYudF0gaXMgYW4gZXhwcmVzc2lvbiB3aGljaCBtYXkgYmUgYXBwbGllZCAqKVxuICAgIHR5cGUgdCA9IEV4cDEudDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5cbiAgKCogQSBjYW5vbmljYWwgc2hhcGUgW3RdIGlzIGFuIFtFeHAxLnRdLiAqKVxuICB0eXBlIHQgPSBFeHAxLnQwIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IHRvX2RpZ2VzdCBlID0gRXhwMS50b19kaWdlc3QgZVxuXG4gIG1vZHVsZSBDcmVhdGUgPSBzdHJ1Y3RcbiAgICBsZXQgYW5ub3RhdGUgdSB4ID0gRXhwMS5FeHAgKEFubm90YXRlICh1LCB4KSlcbiAgICBsZXQgYmFzZXR5cGUgdSB4cyA9IEV4cDEuRXhwIChCYXNlICh1LCB4cykpXG4gICAgbGV0IHR1cGxlIHhzID0gRXhwMS5FeHAgKFR1cGxlIHhzKVxuICAgIGxldCBwb2x5X3ZhcmlhbnQgbG9jIHhzID0gRXhwMS5wb2x5X3ZhcmlhbnQgbG9jIHhzXG4gICAgbGV0IHZhciBuID0gRXhwMS5FeHAgKFZhciBuKVxuICAgIGxldCByZWN1cnNlIHIgeHMgPSBFeHAxLnJlY3Vyc2UgciB4c1xuICAgIGxldCBhcHBseSBkIHhzID0gRXhwMS5hcHBseSBkIHhzXG4gICAgbGV0IGRlZmluZSB4ID0geFxuICAgIGxldCByZWNvcmQgeHMgPSBFeHAxLkV4cCAoUmVjb3JkIHhzKVxuICAgIGxldCB2YXJpYW50IHhzID0gRXhwMS5FeHAgKFZhcmlhbnQgeHMpXG4gICAgbGV0IGNyZWF0ZSBleHAgPSBleHBcbiAgZW5kXG5cbiAgbGV0IHRvX3N0cmluZ19odW0gdCA9IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl90IHQpXG5lbmRcblxubW9kdWxlIFRpZCA6IHNpZ1xuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcbmVuZFxuXG5tb2R1bGUgVmlkIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbm1vZHVsZSBHaWQgOiBzaWdcbiAgKCogdW5pcXVlIGdyb3VwLWlkLCB1c2VkIGFzIGtleSBmb3IgVGVudiBiZWxvdyAqKVxuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBdXG5cbiAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICBsZXQgciA9IHJlZiAwXG5cbiAgbGV0IGNyZWF0ZSAoKSA9XG4gICAgbGV0IHUgPSAhciBpblxuICAgIHIgOj0gMSArIHU7XG4gICAgdVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFeHByZXNzaW9uID0gc3RydWN0XG4gIHR5cGUgJ3QgcG9seV9jb25zdHIgPVxuICAgIFsgYENvbnN0ciBvZiBzdHJpbmcgKiAndCBvcHRpb25cbiAgICB8IGBJbmhlcml0IG9mIExvY2F0aW9uLnQgKiAndFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBdXG5cbiAgbW9kdWxlIEdyb3VwIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwXVxuXG4gICAgdmFsIGNyZWF0ZSA6IExvY2F0aW9uLnQgLT4gKFRpZC50ICogVmlkLnQgbGlzdCAqICdhKSBsaXN0IC0+ICdhIHRcbiAgICB2YWwgaWQgOiAnYSB0IC0+IEdpZC50XG4gICAgdmFsIGxvb2t1cCA6ICdhIHQgLT4gVGlkLnQgLT4gVmlkLnQgbGlzdCAqICdhXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IGdpZCA6IEdpZC50XG4gICAgICA7IGxvYyA6IExvY2F0aW9uLnRcbiAgICAgIDsgbWVtYmVycyA6IChUaWQudCAqIChWaWQudCBsaXN0ICogJ2EpKSBsaXN0XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBdXG5cbiAgICBsZXQgY3JlYXRlIGxvYyB0cmlwcyA9XG4gICAgICBsZXQgZ2lkID0gR2lkLmNyZWF0ZSAoKSBpblxuICAgICAgbGV0IG1lbWJlcnMgPSBMaXN0Lm1hcCB0cmlwcyB+ZjooZnVuICh4LCB2cywgdCkgLT4geCwgKHZzLCB0KSkgaW5cbiAgICAgIHsgZ2lkOyBsb2M7IG1lbWJlcnMgfVxuICAgIDs7XG5cbiAgICBsZXQgaWQgZyA9IGcuZ2lkXG5cbiAgICBsZXQgbG9va3VwIGcgdGlkID1cbiAgICAgIG1hdGNoIExpc3QuQXNzb2MuZmluZCBnLm1lbWJlcnMgfmVxdWFsOlRpZC4oID0gKSB0aWQgd2l0aFxuICAgICAgfCBTb21lIHNjaGVtZSAtPiBzY2hlbWVcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBldmFsX2ZhaWxcbiAgICAgICAgICBnLmxvY1xuICAgICAgICAgICFcImltcG9zc2libGU6IGxvb2t1cF9ncm91cCwgdW5ib3VuZCB0eXBlLWlkZW50aWZpZXI6ICV7VGlkfVwiXG4gICAgICAgICAgdGlkXG4gICAgICAgICAgKClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEFubm90YXRlIG9mIFV1aWQudCAqIHRcbiAgICAgICAgfCBCYXNlIG9mIFV1aWQudCAqIHQgbGlzdFxuICAgICAgICB8IFJlY29yZCBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgICAgICB8IFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgbGlzdCkgbGlzdFxuICAgICAgICB8IFR1cGxlIG9mIHQgbGlzdFxuICAgICAgICB8IFBvbHlfdmFyaWFudCBvZiAoTG9jYXRpb24udCAqIHQgcG9seV9jb25zdHIgbGlzdClcbiAgICAgICAgfCBWYXIgb2YgKExvY2F0aW9uLnQgKiBWaWQudClcbiAgICAgICAgfCBSZWNfYXBwIG9mIFRpZC50ICogdCBsaXN0XG4gICAgICAgIHwgVG9wX2FwcCBvZiB0IEdyb3VwLnQgKiBUaWQudCAqIHQgbGlzdFxuICAgICAgW0BAZGVyaXZpbmcgZXF1YWwsIHNleHAsIHZhcmlhbnRzXVxuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gIHR5cGUgZ3JvdXAgPSB0IEdyb3VwLnRcblxuICBsZXQgZ3JvdXAgPSBHcm91cC5jcmVhdGVcblxuICB0eXBlIHBvbHlfdmFyaWFudF9yb3cgPSB0IHBvbHlfY29uc3RyXG5cbiAgbGV0IGNvbnN0ciBzIHQgPSBgQ29uc3RyIChzLCB0KVxuICBsZXQgaW5oZXJpdF8gbG9jIHQgPSBgSW5oZXJpdCAobG9jLCB0KVxuICBsZXQgdmFyIGxvYyB0ID0gVmFyIChsb2MsIHQpXG4gIGxldCBwb2x5X3ZhcmlhbnQgbG9jIHhzID0gUG9seV92YXJpYW50IChsb2MsIHhzKVxuICBsZXQgYmFzZXR5cGUgPSBiYXNlXG5cbiAgKCogXCJWUlwiIHN0YW5kcyBmb3IgXCJ2YXJpYW50IG9yIHJlY29yZFwiICopXG5cbiAgbGV0IGlzX2N5Y2xpY18wIH4odmlhX1ZSIDogYm9vbCkgOiBncm91cCAtPiBUaWQudCAtPiBib29sID1cbiAgICBmdW4gZ3JvdXAgdGlkIC0+XG4gICAgbGV0IHNldCA9IHJlZiBbXSBpblxuICAgIGxldCB2aXNpdGVkIHRpZCA9IExpc3QubWVtICFzZXQgdGlkIH5lcXVhbDpUaWQuZXF1YWwgaW5cbiAgICBsZXQgYWRkIHRpZCA9IHNldCA6PSB0aWQgOjogIXNldCBpblxuICAgIGxldCByZWMgdHJhdiA9IGZ1bmN0aW9uXG4gICAgICAoKiBXZSBsb29rIGZvciBjeWNsZXMgYnkgdHJhdmVyc2luZyB0aGUgc3RydWN0dXJlIG9mIHR5cGUtZXhwcmVzc2lvbnMgKilcbiAgICAgIHwgQW5ub3RhdGUgKF8sIHQpIC0+IHRyYXYgdFxuICAgICAgfCBCYXNlIChfLCB0cykgfCBUdXBsZSB0cyB8IFRvcF9hcHAgKF8sIF8sIHRzKSAtPiBMaXN0Lml0ZXIgdHMgfmY6dHJhdlxuICAgICAgKCogLi5pbmNsdWRpbmcgcG9seS12YXJpYW50cyAqKVxuICAgICAgfCBQb2x5X3ZhcmlhbnQgKF8sIGNzKSAtPlxuICAgICAgICBMaXN0Lml0ZXIgY3MgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBgQ29uc3RyIChfLCBOb25lKSAtPiAoKVxuICAgICAgICAgIHwgYENvbnN0ciAoXywgU29tZSB0KSAtPiB0cmF2IHRcbiAgICAgICAgICB8IGBJbmhlcml0IChfbG9jLCB0KSAtPiB0cmF2IHQpXG4gICAgICAoKiAuLiBhbmQgcmVjb3JkcyAmIChub3JtYWwpIHZhcmlhbnRzICopXG4gICAgICB8IFJlY29yZCB4cyAtPiBpZiB2aWFfVlIgdGhlbiBMaXN0Lml0ZXIgeHMgfmY6KGZ1biAoXywgdCkgLT4gdHJhdiB0KSBlbHNlICgpXG4gICAgICB8IFZhcmlhbnQgeHMgLT5cbiAgICAgICAgaWYgdmlhX1ZSIHRoZW4gTGlzdC5pdGVyIHhzIH5mOihmdW4gKF8sIHRzKSAtPiBMaXN0Lml0ZXIgfmY6dHJhdiB0cykgZWxzZSAoKVxuICAgICAgKCogV2UgZG9udCBmb2xsb3cgdHlwZS12YXJzICopXG4gICAgICB8IFZhciBfIC0+ICgpXG4gICAgICAoKiB0cmF2ZXJzZSAocmVjdXJzaXZlKSB0eXBlLWFwcHMgd2hlbiBmaXJzdCBlbmNvdW50ZXJlZCAqKVxuICAgICAgfCBSZWNfYXBwICh0aWQsIHRzKSAtPlxuICAgICAgICBpZiB2aXNpdGVkIHRpZFxuICAgICAgICB0aGVuICgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGFkZCB0aWQ7XG4gICAgICAgICAgdHJhdl90aWQgdGlkKTtcbiAgICAgICAgTGlzdC5pdGVyIHRzIH5mOnRyYXZcbiAgICBhbmQgdHJhdl90aWQgdGlkID1cbiAgICAgIGxldCBfLCBib2R5ID0gR3JvdXAubG9va3VwIGdyb3VwIHRpZCBpblxuICAgICAgdHJhdiBib2R5XG4gICAgaW5cbiAgICB0cmF2X3RpZCB0aWQ7XG4gICAgbGV0IHJlcyA9IHZpc2l0ZWQgdGlkIGluXG4gICAgKCpsZXQgX3NzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIChMaXN0Lm1hcCAoIXNldCkgfmY6KHNwcmludGYgIVwiJXtUaWR9XCIpKSBpbiopXG4gICAgKCpQcmludGYucHJpbnRmICFcImlzX2N5bGljOiAle1RpZH0gLS0+ICglcykgJWIgIC0tICVzJSFcIiB0aWQgX3NzIHJlcyAoR3JvdXAubG9jIGdyb3VwKTsqKVxuICAgIHJlc1xuICA7O1xuXG4gIGxldCBpc19jeWNsaWMgPSBpc19jeWNsaWNfMCB+dmlhX1ZSOnRydWVcbiAgbGV0IGlzX2N5Y2xpY193aXRoX25vX2ludGVydmVuaW5nX1ZSID0gaXNfY3ljbGljXzAgfnZpYV9WUjpmYWxzZVxuZW5kXG5cbmluY2x1ZGUgRXhwcmVzc2lvblxuXG5tb2R1bGUgRXZhbHVhdGlvbiAoQ2Fub25pY2FsIDogQ2Fub25pY2FsKSA9IHN0cnVjdFxuICAoKiBbVmVudi50XVxuICAgICBFbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIHR5cGUtdmFycyAqKVxuICBtb2R1bGUgVmVudiA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGxvb2t1cCA6IHQgLT4gVmlkLnQgLT4gVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQgb3B0aW9uXG4gICAgdmFsIGNyZWF0ZSA6IChWaWQudCAqIFZpc2liaWxpdHkudmlzaWJsZSBDYW5vbmljYWwuRXhwMS50KSBsaXN0IC0+IHRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQgTWFwLk0oVmlkKS50XG5cbiAgICBsZXQgY3JlYXRlID1cbiAgICAgIExpc3QuZm9sZFxuICAgICAgICB+aW5pdDooTWFwLmVtcHR5IChtb2R1bGUgVmlkKSlcbiAgICAgICAgfmY6KGZ1biB0IChrLCB2KSAtPiBNYXAuc2V0IH5rZXk6ayB+ZGF0YTp2IHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXAgdCBrID0gTWFwLmZpbmQgdCBrXG4gIGVuZFxuXG4gIG1vZHVsZSBBcHBsaWNhbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBSZWN1cnNpb25fbGV2ZWwgb2YgaW50XG4gICAgICB8IERlZmluaXRpb24gb2YgQ2Fub25pY2FsLkRlZi50XG4gIGVuZFxuXG4gICgqIFtUZW52LnRdXG4gICAgIEVudmlyb25tZW50IGZvciByZXNvbHZpbmcgdHlwZS1kZWZpbml0aW9ucyAqKVxuICBtb2R1bGUgVGVudiA6IHNpZ1xuICAgIHR5cGUga2V5ID0gR2lkLnQgKiBUaWQudFxuICAgIHR5cGUgdFxuXG4gICAgdmFsIGZpbmQgOiB0IC0+IGtleSAtPiBbIGBSZWN1cnNpb25fbGV2ZWwgb2YgaW50IF0gb3B0aW9uXG4gICAgdmFsIGVtcHR5IDogdFxuICAgIHZhbCBleHRlbmQgOiB0IC0+IGtleSAtPiBbIGBSZWN1cnNpb25fbGV2ZWwgb2YgaW50IF0gLT4gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBHaWQudCAqIFRpZC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgICBlbmRcblxuICAgIHR5cGUga2V5ID0gS2V5LnRcbiAgICB0eXBlIHQgPSBbIGBSZWN1cnNpb25fbGV2ZWwgb2YgaW50IF0gTWFwLk0oS2V5KS50XG5cbiAgICBsZXQgZmluZCB0IGsgPSBNYXAuZmluZCB0IGtcbiAgICBsZXQgZW1wdHkgPSBNYXAuZW1wdHkgKG1vZHVsZSBLZXkpXG4gICAgbGV0IGV4dGVuZCB0IGsgdiA9IE1hcC5zZXQgfmtleTprIH5kYXRhOnYgdFxuICBlbmRcblxuICAoKiBbRGVmaW5pbmcudF1cbiAgICAgTW9uYWQgZm9yIG1hbmFnaW5nIHVuLXJvbGxpbmcgZGVwdGgsIGFuZCBtYWludGFpbmcgYSBbVGVudi50XSAqKVxuICBtb2R1bGUgRGVmaW5pbmcgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG4gICAgdmFsIGxvb2tfZW52IDogVGVudi5rZXkgLT4gQXBwbGljYW5kLnQgb3B0aW9uIHRcbiAgICB2YWwgZXh0ZW5kX25ld190aWQgOiBUZW52LmtleSAtPiBDYW5vbmljYWwuRGVmLnQgdCAtPiBBcHBsaWNhbmQudCB0XG4gICAgdmFsIGV4ZWMgOiAnYSB0IC0+ICdhXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IGRlcHRoOmludCAtPiBUZW52LnQgLT4gJ2FcblxuICAgIGxldCByZXR1cm4geCB+ZGVwdGg6XyBfdGVudiA9IHhcblxuICAgIGxldCBiaW5kIHQgZiB+ZGVwdGggdGVudiA9XG4gICAgICBsZXQgeCA9IHQgfmRlcHRoIHRlbnYgaW5cbiAgICAgIChmIHgpIH5kZXB0aCB0ZW52XG4gICAgOztcblxuICAgIGxldCBsb29rX2VudiBrZXkgfmRlcHRoOl8gdGVudiA9XG4gICAgICBsZXQgcmVzdWx0ID0gVGVudi5maW5kIHRlbnYga2V5IGluXG4gICAgICBPcHRpb24ubWFwIH5mOihmdW4gKGBSZWN1cnNpb25fbGV2ZWwgeCkgLT4gQXBwbGljYW5kLlJlY3Vyc2lvbl9sZXZlbCB4KSByZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IGV4dGVuZF9uZXdfdGlkIGtleSBkZWZfdCB+ZGVwdGggdGVudiA9XG4gICAgICBBcHBsaWNhbmQuRGVmaW5pdGlvblxuICAgICAgICAobGV0IHZhbHVlID0gYFJlY3Vyc2lvbl9sZXZlbCBkZXB0aCBpblxuICAgICAgICAgbGV0IHRlbnYgPSBUZW52LmV4dGVuZCB0ZW52IGtleSB2YWx1ZSBpblxuICAgICAgICAgZGVmX3QgfmRlcHRoOihkZXB0aCArIDEpIHRlbnYpXG4gICAgOztcblxuICAgIGxldCBleGVjIHQgPSB0IH5kZXB0aDowIFRlbnYuZW1wdHlcbiAgZW5kXG5cbiAgdHlwZSAnYSBkZWZpbmluZyA9ICdhIERlZmluaW5nLnRcblxuICBsZXQgKCA+Pj0gKSA9IERlZmluaW5nLmJpbmRcbiAgbGV0IHJldHVybiA9IERlZmluaW5nLnJldHVyblxuXG4gIGxldCBzZXF1ZW5jZV9kZWZpbmluZyA6ICdhIGxpc3QgLT4gZjooJ2EgLT4gJ2IgZGVmaW5pbmcpIC0+ICdiIGxpc3QgZGVmaW5pbmcgPVxuICAgIGZ1biB4cyB+ZiAtPlxuICAgIGxldCByZWMgbG9vcCBhY2NfeXMgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKExpc3QucmV2IGFjY195cylcbiAgICAgIHwgeCA6OiB4cyAtPiBmIHggPj49IGZ1biB5IC0+IGxvb3AgKHkgOjogYWNjX3lzKSB4c1xuICAgIGluXG4gICAgbG9vcCBbXSB4c1xuICA7O1xuXG4gICgqXG4gICAgIFNoYXBlIGV2YWx1YXRpb24uXG5cbiAgICAgU2hhcGVzIGFyZSBldmFsdWF0ZWQgdG8gY2Fub25pY2FsLXNoYXBlIChleHByZXNzaW9ucyksIHdpdGggYWRkaXRpb25hbCBkZWZzIGNvbGxlY3RlZFxuICAgICBpbiB0aGUgW2RlZmluaW5nXSBtb25hZCwgd2hpY2ggYWxzbyBtYW5hZ2VzIGdlbmVyYXRpb24vbWFwcGluZyB0byBbQ2Fub25pY2FsLlRpZC50XVxuXG4gICAgIFRoZXJlIGlzIGRvd253YXJkcyBjb250ZXh0IG9mIFtncm91cF0gYW5kIFtWZW52LnRdXG4gICAgIFRoZSAoY3VycmVudCkgW2dyb3VwXSBjaGFuZ2VzIHdoZW4gdGhlIGNhc2UgZm9yIFtUb3BfYXBwXSBjYWxscyBbZXZhbF9hcHBdLlxuXG4gICAgIFRoZSBjdXJyZW50IFtWZW52LnRdIGlzIGFiYW5kb25lZCB3aGVuIFtldmFsX2FwcF0gaXMgY2FsbGVkLCBhbmQgdGhlbiByZS1jcmVhdGVkIGFmdGVyXG4gICAgIHRoZSBkZWNpc2lvbiBoYXMgYmVlbiBtYWRlIHRvIGVpdGhlciBpbmxpbmUgdGhlIHR5cGUtYXBwbGljYXRpb24sIG9yIG1ha2UgYSByZWZlcmVuY2VcbiAgICAgdG8gYSB0eXBlLWRlZmluaXRpb24sIHdoaWNoIGlzIGNyZWF0ZWQgYXQgbW9zdCBvbmNlIGZvciBlYWNoIChHaWQudCAqIFRpZC50KS5cblxuICAgICBXZSBtYWtlIGEgdHlwZS1kZWZpbml0aW9uIGFsd2F5cyBmb3IgUmVjb3JkcyBhbmQgVmFyaWFudHMsIGFuZCBpbiBhZGRpdGlvbiBmb3IgYW55XG4gICAgIG90aGVyIGN5Y2xpYyB0eXBlLWRlZmluaXRpb24uXG4gICopXG5cbiAgbGV0IHJlYyBldmFsIDogZ3JvdXAgLT4gVmVudi50IC0+IHQgLT4gVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCB2ZW52IHQgLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBSZWNvcmQgYmluZHMgLT5cbiAgICAgICAgc2VxdWVuY2VfZGVmaW5pbmcgYmluZHMgfmY6KGZ1biAocywgeCkgLT5cbiAgICAgICAgICBldmFsIGdyb3VwIHZlbnYgeCA+Pj0gZnVuIHkgLT4gcmV0dXJuIChzLCB5KSlcbiAgICAgICAgPj49IGZ1biBiaW5kcyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUucmVjb3JkIGJpbmRzKVxuICAgICAgfCBWYXJpYW50IGFsdHMgLT5cbiAgICAgICAgc2VxdWVuY2VfZGVmaW5pbmcgYWx0cyB+ZjooZnVuIChzLCB4cykgLT5cbiAgICAgICAgICBldmFsX2xpc3QgZ3JvdXAgdmVudiB4cyA+Pj0gZnVuIHlzIC0+IHJldHVybiAocywgeXMpKVxuICAgICAgICA+Pj0gZnVuIGFsdHMgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnZhcmlhbnQgYWx0cylcbiAgICAgIHwgVmFyIChsb2MsIHZpZCkgLT5cbiAgICAgICAgKG1hdGNoIFZlbnYubG9va3VwIHZlbnYgdmlkIHdpdGhcbiAgICAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gICAgICAgICB8IE5vbmUgLT4gZXZhbF9mYWlsIGxvYyAhXCJGcmVlIHR5cGUgdmFyaWFibGU6ICcle1ZpZH1cIiB2aWQgKCkpXG4gICAgICB8IEFubm90YXRlIChzLCB0KSAtPlxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgdCA+Pj0gZnVuIHYgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLmFubm90YXRlIHMgdilcbiAgICAgIHwgQmFzZSAocywgdHMpIC0+XG4gICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IHRzID4+PSBmdW4gdnMgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLmJhc2V0eXBlIHMgdnMpXG4gICAgICB8IFR1cGxlIHRzIC0+IGV2YWxfbGlzdCBncm91cCB2ZW52IHRzID4+PSBmdW4gdnMgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnR1cGxlIHZzKVxuICAgICAgfCBUb3BfYXBwIChpbl9ncm91cCwgdGlkLCBhcmdzKSAtPlxuICAgICAgICBldmFsX2xpc3QgZ3JvdXAgdmVudiBhcmdzXG4gICAgICAgID4+PSBmdW4gYXJncyAtPlxuICAgICAgICAoKiBhcmdzIGV2YWx1YXRlZCBpbiBjdXJyZW50IGdyb3VwICopXG4gICAgICAgIGV2YWxfYXBwIGluX2dyb3VwIHRpZCBhcmdzXG4gICAgICAoKiBncm91cCBjaGFuZ2VkIGhlcmUgKilcbiAgICAgIHwgUmVjX2FwcCAodGlkLCBhcmdzKSAtPlxuICAgICAgICBldmFsX2xpc3QgZ3JvdXAgdmVudiBhcmdzID4+PSBmdW4gYXJncyAtPiBldmFsX2FwcCBncm91cCB0aWQgYXJnc1xuICAgICAgfCBQb2x5X3ZhcmlhbnQgKGxvYywgY3MpIC0+XG4gICAgICAgIHNlcXVlbmNlX2RlZmluaW5nIH5mOihldmFsX3BvbHlfY29uc3RyIGdyb3VwIHZlbnYpIGNzXG4gICAgICAgID4+PSBmdW4geHNzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5wb2x5X3ZhcmlhbnQgbG9jIChMaXN0LmNvbmNhdCB4c3MpKVxuXG4gIGFuZCBldmFsX2xpc3QgOiBncm91cCAtPiBWZW52LnQgLT4gdCBsaXN0IC0+IF8gQ2Fub25pY2FsLkV4cDEudCBsaXN0IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgdmVudiB0cyAtPiBzZXF1ZW5jZV9kZWZpbmluZyB0cyB+ZjooZXZhbCBncm91cCB2ZW52KVxuXG4gIGFuZCBldmFsX3BvbHlfY29uc3RyXG4gICAgOiAgZ3JvdXAgLT4gVmVudi50IC0+IHQgcG9seV9jb25zdHJcbiAgICAgIC0+IChzdHJpbmcgKiBWaXNpYmlsaXR5Lm9wYXF1ZSBDYW5vbmljYWwuRXhwMS50IG9wdGlvbikgbGlzdCBkZWZpbmluZ1xuICAgID1cbiAgICBmdW4gZ3JvdXAgdmVudiBjIC0+XG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgYENvbnN0ciAocywgTm9uZSkgLT4gcmV0dXJuIFsgcywgTm9uZSBdXG4gICAgICB8IGBDb25zdHIgKHMsIFNvbWUgdCkgLT5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IHQgPj49IGZ1biB2IC0+IHJldHVybiBbIHMsIFNvbWUgKENhbm9uaWNhbC5FeHAxLm9wYXF1ZSB2KSBdXG4gICAgICB8IGBJbmhlcml0IChsb2MsIHQpIC0+XG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiB0XG4gICAgICAgID4+PSBmdW4gdiAtPlxuICAgICAgICAobWF0Y2ggQ2Fub25pY2FsLkV4cDEuZ2V0X3BvbHlfdmFyaWFudCB2IHdpdGhcbiAgICAgICAgIHwgT2sgdGFiIC0+IHJldHVybiAoU29ydGVkX3RhYmxlLmV4cG9zZSB0YWIpXG4gICAgICAgICB8IEVycm9yIGRlc2MgLT5cbiAgICAgICAgICAgZXZhbF9mYWlsXG4gICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICAgXCJUaGUgc2hhcGUgZm9yIGFuIGluaGVyaXRlZCB0eXBlIGlzIG5vdCBkZXNjcmliZWQgYXMgYSBwb2x5bW9ycGhpYy12YXJpYW50OiAlc1wiXG4gICAgICAgICAgICAgZGVzY1xuICAgICAgICAgICAgICgpKVxuXG4gIGFuZCBldmFsX2RlZmluaXRpb24gOiBncm91cCAtPiBWaWQudCBsaXN0IC0+IHQgLT4gQ2Fub25pY2FsLkRlZi50IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgZm9ybWFscyBib2R5IC0+XG4gICAgICBsZXQgdmVudiA9IFZlbnYuY3JlYXRlIChMaXN0Lm1hcGkgZm9ybWFscyB+ZjooZnVuIGkgeCAtPiB4LCBDYW5vbmljYWwuRXhwMS52YXIgaSkpIGluXG4gICAgICBldmFsIGdyb3VwIHZlbnYgYm9keSA+Pj0gZnVuIHYgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLmRlZmluZSB2KVxuXG4gIGFuZCBldmFsX2FwcCA6IGdyb3VwIC0+IFRpZC50IC0+IF8gQ2Fub25pY2FsLkV4cDEudCBsaXN0IC0+IF8gQ2Fub25pY2FsLkV4cDEudCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIHRpZCBhcmdzIC0+XG4gICAgICBsZXQgZ2lkID0gR3JvdXAuaWQgZ3JvdXAgaW5cbiAgICAgIGxldCBmb3JtYWxzLCBib2R5ID0gR3JvdXAubG9va3VwIGdyb3VwIHRpZCBpblxuICAgICAgbGV0IHJlY29yZF9vcl9ub3JtYWxfdmFyaWFudCA9XG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICB8IFJlY29yZCBfIHwgVmFyaWFudCBfIC0+IHRydWVcbiAgICAgICAgfCBUdXBsZSBfIHwgQW5ub3RhdGUgXyB8IEJhc2UgXyB8IFBvbHlfdmFyaWFudCBfIHwgVmFyIF8gfCBSZWNfYXBwIF8gfCBUb3BfYXBwIF8gLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgaW5cbiAgICAgIGxldCBjeWNsaWMgPSBpc19jeWNsaWMgZ3JvdXAgdGlkIGluXG4gICAgICBsZXQgY3ljbGljX25vX1ZSID0gaXNfY3ljbGljX3dpdGhfbm9faW50ZXJ2ZW5pbmdfVlIgZ3JvdXAgdGlkIGluXG4gICAgICBpZiAocmVjb3JkX29yX25vcm1hbF92YXJpYW50ICYmIGN5Y2xpYykgfHwgY3ljbGljX25vX1ZSXG4gICAgICB0aGVuXG4gICAgICAgIERlZmluaW5nLmxvb2tfZW52IChnaWQsIHRpZClcbiAgICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSByZWN1cnNlIC0+IHJldHVybiByZWN1cnNlXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBEZWZpbmluZy5leHRlbmRfbmV3X3RpZCAoZ2lkLCB0aWQpIChldmFsX2RlZmluaXRpb24gZ3JvdXAgZm9ybWFscyBib2R5KSlcbiAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgIHwgUmVjdXJzaW9uX2xldmVsIHIgLT4gcmV0dXJuIChDYW5vbmljYWwuRXhwMS5yZWN1cnNlIHIgYXJncylcbiAgICAgICAgfCBEZWZpbml0aW9uIGRlZiAtPiByZXR1cm4gKENhbm9uaWNhbC5FeHAxLmFwcGx5IGRlZiBhcmdzKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCB2ZW52ID1cbiAgICAgICAgICBtYXRjaCBMaXN0LnppcCBmb3JtYWxzIGFyZ3Mgd2l0aFxuICAgICAgICAgIHwgT2sgeCAtPiBWZW52LmNyZWF0ZSB4XG4gICAgICAgICAgfCBVbmVxdWFsX2xlbmd0aHMgLT4gZmFpbHdpdGggXCJhcHBseSwgaW5jb3JyZWN0IHR5cGUgYXBwbGljYXRpb24gYXJpdHlcIlxuICAgICAgICBpblxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgYm9keSlcbiAgOztcblxuICAoKiB0b3AgbGV2ZWwgZW50cnkgcG9pbnQgZm9yIGV2YWx1YXRpb24gKilcbiAgbGV0IGV2YWwgOiB0IC0+IENhbm9uaWNhbC50ID1cbiAgICBmdW4gdCAtPlxuICAgICAgbGV0IGdyb3VwID0gZ3JvdXAgKExvY2F0aW9uLm9mX3N0cmluZyBcInRvcC1sZXZlbFwiKSBbXSBpblxuICAgICAgbGV0IHZlbnYgPSBWZW52LmNyZWF0ZSBbXSBpblxuICAgICAgbGV0IHYgPSBEZWZpbmluZy5leGVjIChldmFsIGdyb3VwIHZlbnYgdCkgaW5cbiAgICAgIENhbm9uaWNhbC5DcmVhdGUuY3JlYXRlIHZcbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2Fub25pY2FsID0gc3RydWN0XG4gIGluY2x1ZGUgQ2Fub25pY2FsX2Z1bGxcblxuICBtb2R1bGUgRXhwID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEV2YWx1YXRpb24gKENhbm9uaWNhbF9mdWxsKVxubW9kdWxlIENhbm9uaWNhbF9zZWxlY3RlZCA9IENhbm9uaWNhbF9kaWdlc3Rcbm1vZHVsZSBFdmFsdWF0aW9uX3RvX2RpZ2VzdCA9IEV2YWx1YXRpb24gKENhbm9uaWNhbF9zZWxlY3RlZClcblxubGV0IGV2YWxfdG9fZGlnZXN0IGV4cCA9IENhbm9uaWNhbF9zZWxlY3RlZC50b19kaWdlc3QgKEV2YWx1YXRpb25fdG9fZGlnZXN0LmV2YWwgZXhwKVxubGV0IGV2YWxfdG9fZGlnZXN0X3N0cmluZyBleHAgPSBEaWdlc3QudG9faGV4IChldmFsX3RvX2RpZ2VzdCBleHApXG5cbm1vZHVsZSBGb3JfdHlwZXJlcCA9IHN0cnVjdFxuICBleGNlcHRpb24gTm90X2FfdHVwbGUgb2YgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBkZWNvbnN0cnVjdF90dXBsZV9leG4gdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBUdXBsZSB0cyAtPiB0c1xuICAgIHwgXyAtPiByYWlzZSAoTm90X2FfdHVwbGUgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIG1vZHVsZSBTb3J0ZWRfdGFibGUgPSBTb3J0ZWRfdGFibGVcbiAgbW9kdWxlIENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IgPSBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yXG4gIG1vZHVsZSBDYW5vbmljYWwgPSBDYW5vbmljYWxcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBOT1RFOlxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZ0xhYmVscy5tbGksIHJ1biB0b29scy9zeW5jX3N0ZGxpYl9kb2NzIGFmdGVyIGVkaXRpbmdcbiAgIGl0IHRvIGdlbmVyYXRlIHN0cmluZy5tbGkuXG5cbiAgIElmIHRoaXMgZmlsZSBpcyBzdHJpbmcubWxpLCBkbyBub3QgZWRpdCBpdCBkaXJlY3RseSAtLSBlZGl0XG4gICBzdHJpbmdMYWJlbHMubWxpIGluc3RlYWQuXG4gKilcblxuKCoqIFN0cmluZ3MuXG5cbiAgICBBIHN0cmluZyBbc10gb2YgbGVuZ3RoIFtuXSBpcyBhbiBpbmRleGFibGUgYW5kIGltbXV0YWJsZSBzZXF1ZW5jZVxuICAgIG9mIFtuXSBieXRlcy4gRm9yIGhpc3RvcmljYWwgcmVhc29ucyB0aGVzZSBieXRlcyBhcmUgcmVmZXJyZWQgdG9cbiAgICBhcyBjaGFyYWN0ZXJzLlxuXG4gICAgVGhlIHNlbWFudGljcyBvZiBzdHJpbmcgZnVuY3Rpb25zIGlzIGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgICBpbmRpY2VzIGFuZCBwb3NpdGlvbnMuIFRoZXNlIGFyZSBkZXBpY3RlZCBhbmQgZGVzY3JpYmVkXG4gICAgYXMgZm9sbG93cy5cblxue3ZcbnBvc2l0aW9ucyAgMCAgIDEgICAyICAgMyAgIDQgICAgbi0xICAgIG5cbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbiAgaW5kaWNlcyAgfCAwIHwgMSB8IDIgfCAzIHwgLi4uIHwgbi0xIHxcbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbnZ9XG4gICAge3VsXG4gICAgey0gQW4ge2UgaW5kZXh9IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgXFxbWzBdO1tuLTFdXFxdLlxuICAgICAgIEl0IHJlcHJlc2VudHMgdGhlIFtpXXRoIGJ5dGUgKGNoYXJhY3Rlcikgb2YgW3NdIHdoaWNoIGNhbiBiZVxuICAgICAgIGFjY2Vzc2VkIHVzaW5nIHRoZSBjb25zdGFudCB0aW1lIHN0cmluZyBpbmRleGluZyBvcGVyYXRvclxuICAgICAgIFtzLltpXV0ufVxuICAgIHstIEEge2UgcG9zaXRpb259IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2VcbiAgICAgICBcXFtbMF07W25dXFxdLiBJdCByZXByZXNlbnRzIGVpdGhlciB0aGUgcG9pbnQgYXQgdGhlIGJlZ2lubmluZyBvZlxuICAgICAgIHRoZSBzdHJpbmcsIG9yIHRoZSBwb2ludCBiZXR3ZWVuIHR3byBpbmRpY2VzLCBvciB0aGUgcG9pbnQgYXRcbiAgICAgICB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuIFRoZSBbaV10aCBieXRlIGluZGV4IGlzIGJldHdlZW4gcG9zaXRpb25cbiAgICAgICBbaV0gYW5kIFtpKzFdLn19XG5cbiAgICBUd28gaW50ZWdlcnMgW3N0YXJ0XSBhbmQgW2xlbl0gYXJlIHNhaWQgdG8gZGVmaW5lIGEge2UgdmFsaWRcbiAgICBzdWJzdHJpbmd9IG9mIFtzXSBpZiBbbGVuID49IDBdIGFuZCBbc3RhcnRdLCBbc3RhcnQrbGVuXSBhcmVcbiAgICBwb3NpdGlvbnMgb2YgW3NdLlxuXG4gICAge2IgVW5pY29kZSB0ZXh0Ln0gU3RyaW5ncyBiZWluZyBhcmJpdHJhcnkgc2VxdWVuY2VzIG9mIGJ5dGVzLCB0aGV5XG4gICAgY2FuIGhvbGQgYW55IGtpbmQgb2YgdGV4dHVhbCBlbmNvZGluZy4gSG93ZXZlciB0aGUgcmVjb21tZW5kZWRcbiAgICBlbmNvZGluZyBmb3Igc3RvcmluZyBVbmljb2RlIHRleHQgaW4gT0NhbWwgc3RyaW5ncyBpcyBVVEYtOC4gVGhpc1xuICAgIGlzIHRoZSBlbmNvZGluZyB1c2VkIGJ5IFVuaWNvZGUgZXNjYXBlcyBpbiBzdHJpbmcgbGl0ZXJhbHMuIEZvclxuICAgIGV4YW1wbGUgdGhlIHN0cmluZyBbXCJcXHV7MUY0MkJ9XCJdIGlzIHRoZSBVVEYtOCBlbmNvZGluZyBvZiB0aGVcbiAgICBVbmljb2RlIGNoYXJhY3RlciBVKzFGNDJCLlxuXG4gICAge2IgUGFzdCBtdXRhYmlsaXR5Ln0gQmVmb3JlIE9DYW1sIDQuMDIsIHN0cmluZ3MgdXNlZCB0byBiZSBtb2RpZmlhYmxlIGluXG4gICAgcGxhY2UgbGlrZSB7IUJ5dGVzLnR9IG11dGFibGUgc2VxdWVuY2VzIG9mIGJ5dGVzLlxuICAgIE9DYW1sIDQgaGFkIHZhcmlvdXMgY29tcGlsZXIgZmxhZ3MgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBzdXBwb3J0IHRoZVxuICAgIHRyYW5zaXRpb24gcGVyaW9kIGZyb20gbXV0YWJsZSB0byBpbW11dGFibGUgc3RyaW5ncy5cbiAgICBUaG9zZSBvcHRpb25zIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlLCBhbmQgc3RyaW5ncyBhcmUgbm93IGFsd2F5c1xuICAgIGltbXV0YWJsZS5cblxuICAgIFRoZSBsYWJlbGVkIHZlcnNpb24gb2YgdGhpcyBtb2R1bGUgY2FuIGJlIHVzZWQgYXMgZGVzY3JpYmVkIGluIHRoZVxuICAgIHshU3RkTGFiZWxzfSBtb2R1bGUuXG4qKVxuXG4oKiogezE6c3RyaW5ncyBTdHJpbmdzfSAqKVxuXG50eXBlIHQgPSBzdHJpbmdcbigqKiBUaGUgdHlwZSBmb3Igc3RyaW5ncy4gKilcblxudmFsIG1ha2UgOiBpbnQgLT4gY2hhciAtPiBzdHJpbmdcbigqKiBbbWFrZSBuIGNdIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbl0gd2l0aCBlYWNoIGluZGV4IGhvbGRpbmcgdGhlXG4gICAgY2hhcmFjdGVyIFtjXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtuIDwgMF0gb3IgW24gPiBdeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9LiAqKVxuXG52YWwgaW5pdCA6IGludCAtPiAoaW50IC0+IGNoYXIpIC0+IHN0cmluZ1xuKCoqIFtpbml0IG4gZl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGluZGV4XG4gICAgW2ldIGhvbGRpbmcgdGhlIGNoYXJhY3RlciBbZiBpXSAoY2FsbGVkIGluIGluY3JlYXNpbmcgaW5kZXggb3JkZXIpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uXG4gICAgQHNpbmNlIDQuMDIgKilcblxudmFsIGVtcHR5IDogc3RyaW5nXG4oKiogVGhlIGVtcHR5IHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG4oKiogW2xlbmd0aCBzXSBpcyB0aGUgbGVuZ3RoIChudW1iZXIgb2YgYnl0ZXMvY2hhcmFjdGVycykgb2YgW3NdLiAqKVxuXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuKCoqIFtnZXQgcyBpXSBpcyB0aGUgY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpbiBbc10uIFRoaXMgaXMgdGhlIHNhbWVcbiAgICBhcyB3cml0aW5nIFtzLltpXV0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gbm90IGFuIGluZGV4IG9mIFtzXS4gKilcblxudmFsIG9mX2J5dGVzIDogYnl0ZXMgLT4gc3RyaW5nXG4oKiogUmV0dXJuIGEgbmV3IHN0cmluZyB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlbiBieXRlXG4gICAgc2VxdWVuY2UuXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIHRvX2J5dGVzIDogc3RyaW5nIC0+IGJ5dGVzXG4oKiogUmV0dXJuIGEgbmV3IGJ5dGUgc2VxdWVuY2UgdGhhdCBjb250YWlucyB0aGUgc2FtZSBieXRlcyBhcyB0aGUgZ2l2ZW5cbiAgICBzdHJpbmcuXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGJsaXQgOlxuICBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuKCoqIFNhbWUgYXMgeyFCeXRlcy5ibGl0X3N0cmluZ30gd2hpY2ggc2hvdWxkIGJlIHByZWZlcnJlZC4gKilcblxuKCoqIHsxOmNvbmNhdCBDb25jYXRlbmF0aW5nfVxuXG4gICAge2IgTm90ZS59IFRoZSB7IVN0ZGxpYi4oIF4gKX0gYmluYXJ5IG9wZXJhdG9yIGNvbmNhdGVuYXRlcyB0d29cbiAgICBzdHJpbmdzLiAqKVxuXG52YWwgY29uY2F0IDogc3RyaW5nIC0+IHN0cmluZyBsaXN0IC0+IHN0cmluZ1xuKCoqIFtjb25jYXQgc2VwIHNzXSBjb25jYXRlbmF0ZXMgdGhlIGxpc3Qgb2Ygc3RyaW5ncyBbc3NdLCBpbnNlcnRpbmdcbiAgICB0aGUgc2VwYXJhdG9yIHN0cmluZyBbc2VwXSBiZXR3ZWVuIGVhY2guXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgY2F0IDogc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2F0IHMxIHMyXSBjb25jYXRlbmF0ZXMgczEgYW5kIHMyIChbczEgXiBzMl0pLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG4oKiogezE6cHJlZGljYXRlcyBQcmVkaWNhdGVzIGFuZCBjb21wYXJpc29uc30gKilcblxudmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbigqKiBbZXF1YWwgczAgczFdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbczBdIGFuZCBbczFdIGFyZSBjaGFyYWN0ZXItd2lzZVxuICAgIGVxdWFsLlxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4oKiogW2NvbXBhcmUgczAgczFdIHNvcnRzIFtzMF0gYW5kIFtzMV0gaW4gbGV4aWNvZ3JhcGhpY2FsIG9yZGVyLiBbY29tcGFyZV1cbiAgICBiZWhhdmVzIGxpa2UgeyFTdGRsaWIuY29tcGFyZX0gb24gc3RyaW5ncyBidXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50LiAqKVxuXG52YWwgc3RhcnRzX3dpdGggOlxuICBwcmVmaXggKCogY29tbWVudCB0aHdhcnRzIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgKikgOnN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtzdGFydHNfd2l0aCBdW35wcmVmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBzdGFydHMgd2l0aFxuICAgIFtwcmVmaXhdLlxuXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGVuZHNfd2l0aCA6XG4gIHN1ZmZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2VuZHNfd2l0aCBdW35zdWZmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBlbmRzIHdpdGggW3N1ZmZpeF0uXG5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW2NvbnRhaW5zX2Zyb20gcyBzdGFydCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYWZ0ZXIgcG9zaXRpb24gW3N0YXJ0XS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdGFydF0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgcmNvbnRhaW5zX2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtyY29udGFpbnNfZnJvbSBzIHN0b3AgY10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtjXSBhcHBlYXJzIGluIFtzXVxuICAgIGJlZm9yZSBwb3NpdGlvbiBbc3RvcCsxXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdG9wIDwgMF0gb3IgW3N0b3ArMV0gaXMgbm90IGEgdmFsaWRcbiAgICBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCBjb250YWlucyA6IHN0cmluZyAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnMgcyBjXSBpcyB7IVN0cmluZy5jb250YWluc19mcm9tfVsgcyAwIGNdLiAqKVxuXG4oKiogezE6ZXh0cmFjdCBFeHRyYWN0aW5nIHN1YnN0cmluZ3N9ICopXG5cbnZhbCBzdWIgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiBzdHJpbmdcbigqKiBbc3ViIHMgcG9zIGxlbl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtsZW5dLCBjb250YWluaW5nIHRoZVxuICAgIHN1YnN0cmluZyBvZiBbc10gdGhhdCBzdGFydHMgYXQgcG9zaXRpb24gW3Bvc10gYW5kIGhhcyBsZW5ndGhcbiAgICBbbGVuXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtwb3NdIGFuZCBbbGVuXSBkbyBub3QgZGVzaWduYXRlIGEgdmFsaWRcbiAgICBzdWJzdHJpbmcgb2YgW3NdLiAqKVxuXG52YWwgc3BsaXRfb25fY2hhciA6IGNoYXIgLT4gc3RyaW5nIC0+IHN0cmluZyBsaXN0XG4oKiogW3NwbGl0X29uX2NoYXIgc2VwIHNdIGlzIHRoZSBsaXN0IG9mIGFsbCAocG9zc2libHkgZW1wdHkpXG4gICAgc3Vic3RyaW5ncyBvZiBbc10gdGhhdCBhcmUgZGVsaW1pdGVkIGJ5IHRoZSBjaGFyYWN0ZXIgW3NlcF0uXG4gICAgSWYgW3NdIGlzIGVtcHR5LCB0aGUgcmVzdWx0IGlzIHRoZSBzaW5nbGV0b24gbGlzdCBbW1wiXCJdXS5cblxuICAgIFRoZSBmdW5jdGlvbidzIHJlc3VsdCBpcyBzcGVjaWZpZWQgYnkgdGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzOlxuICAgIHt1bFxuICAgIHstIFRoZSBsaXN0IGlzIG5vdCBlbXB0eS59XG4gICAgey0gQ29uY2F0ZW5hdGluZyBpdHMgZWxlbWVudHMgdXNpbmcgW3NlcF0gYXMgYSBzZXBhcmF0b3IgcmV0dXJucyBhXG4gICAgICBzdHJpbmcgZXF1YWwgdG8gdGhlIGlucHV0IChbY29uY2F0IChtYWtlIDEgc2VwKVxuICAgICAgKHNwbGl0X29uX2NoYXIgc2VwIHMpID0gc10pLn1cbiAgICB7LSBObyBzdHJpbmcgaW4gdGhlIHJlc3VsdCBjb250YWlucyB0aGUgW3NlcF0gY2hhcmFjdGVyLn19XG5cbiAgICBAc2luY2UgNC4wNCAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmFuc2Zvcm1pbmcgVHJhbnNmb3JtaW5nfSAqKVxuXG52YWwgbWFwIDogKGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXAgZiBzXSBpcyB0aGUgc3RyaW5nIHJlc3VsdGluZyBmcm9tIGFwcGx5aW5nIFtmXSB0byBhbGwgdGhlXG4gICAgY2hhcmFjdGVycyBvZiBbc10gaW4gaW5jcmVhc2luZyBvcmRlci5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbnZhbCBtYXBpIDogKGludCAtPiBjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwaSBmIHNdIGlzIGxpa2UgeyFtYXB9IGJ1dCB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBpcyBhbHNvXG4gICAgcGFzc2VkIHRvIFtmXS5cblxuICAgIEBzaW5jZSA0LjAyICopXG5cbnZhbCBmb2xkX2xlZnQgOiAoJ2FjYyAtPiBjaGFyIC0+ICdhY2MpIC0+ICdhY2MgLT4gc3RyaW5nIC0+ICdhY2NcbigqKiBbZm9sZF9sZWZ0IGYgeCBzXSBjb21wdXRlcyBbZiAoLi4uIChmIChmIHggcy5bMF0pIHMuWzFdKSAuLi4pIHMuW24tMV1dLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBmb2xkX3JpZ2h0IDogKGNoYXIgLT4gJ2FjYyAtPiAnYWNjKSAtPiBzdHJpbmcgLT4gJ2FjYyAtPiAnYWNjXG4oKiogW2ZvbGRfcmlnaHQgZiBzIHhdIGNvbXB1dGVzIFtmIHMuWzBdIChmIHMuWzFdICggLi4uIChmIHMuW24tMV0geCkgLi4uKSldLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBmb3JfYWxsIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZm9yX2FsbCBwIHNdIGNoZWNrcyBpZiBhbGwgY2hhcmFjdGVycyBpbiBbc10gc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtwXS5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZXhpc3RzIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZXhpc3RzIHAgc10gY2hlY2tzIGlmIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgb2YgW3NdIHNhdGlzZmllcyB0aGUgcHJlZGljYXRlXG4gICAgW3BdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCB0cmltIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt0cmltIHNdIGlzIFtzXSB3aXRob3V0IGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuIFdoaXRlc3BhY2VcbiAgICBjaGFyYWN0ZXJzIGFyZTogWycgJ10sIFsnXFx4MEMnXSAoZm9ybSBmZWVkKSwgWydcXG4nXSwgWydcXHInXSwgYW5kIFsnXFx0J10uXG5cbiAgICBAc2luY2UgNC4wMCAqKVxuXG52YWwgZXNjYXBlZCA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbZXNjYXBlZCBzXSBpcyBbc10gd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMgcmVwcmVzZW50ZWQgYnkgZXNjYXBlXG4gICAgc2VxdWVuY2VzLCBmb2xsb3dpbmcgdGhlIGxleGljYWwgY29udmVudGlvbnMgb2YgT0NhbWwuXG5cbiAgICBBbGwgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBVUy1BU0NJSSBwcmludGFibGUgcmFuZ2UgXFxbMHgyMDsweDdFXFxdIGFyZVxuICAgIGVzY2FwZWQsIGFzIHdlbGwgYXMgYmFja3NsYXNoICgweDJGKSBhbmQgZG91YmxlLXF1b3RlICgweDIyKS5cblxuICAgIFRoZSBmdW5jdGlvbiB7IVNjYW5mLnVuZXNjYXBlZH0gaXMgYSBsZWZ0IGludmVyc2Ugb2YgW2VzY2FwZWRdLFxuICAgIGkuZS4gW1NjYW5mLnVuZXNjYXBlZCAoZXNjYXBlZCBzKSA9IHNdIGZvciBhbnkgc3RyaW5nIFtzXSAodW5sZXNzXG4gICAgW2VzY2FwZWQgc10gZmFpbHMpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy4gKilcblxudmFsIHVwcGVyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdXBwZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCBsb3dlcmNhc2UgbGV0dGVyc1xuICAgIHRyYW5zbGF0ZWQgdG8gdXBwZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGxvd2VyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbG93ZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCB1cHBlcmNhc2UgbGV0dGVycyB0cmFuc2xhdGVkXG4gICAgdG8gbG93ZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2NhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG9cbiAgICB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgdW5jYXBpdGFsaXplX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1bmNhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG8gbG93ZXJjYXNlLFxuICAgIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhdmVyc2luZyBUcmF2ZXJzaW5nfSAqKVxuXG52YWwgaXRlciA6IChjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXIgZiBzXSBhcHBsaWVzIGZ1bmN0aW9uIFtmXSBpbiB0dXJuIHRvIGFsbCB0aGUgY2hhcmFjdGVycyBvZiBbc10uXG4gICAgSXQgaXMgZXF1aXZhbGVudCB0byBbZiBzLlswXTsgZiBzLlsxXTsgLi4uOyBmIHMuW2xlbmd0aCBzIC0gMV07ICgpXS4gKilcblxudmFsIGl0ZXJpIDogKGludCAtPiBjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXJpXSBpcyBsaWtlIHshaXRlcn0sIGJ1dCB0aGUgZnVuY3Rpb24gaXMgYWxzbyBnaXZlbiB0aGVcbiAgICBjb3JyZXNwb25kaW5nIGNoYXJhY3RlciBpbmRleC5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbigqKiB7MTpzZWFyY2hpbmcgU2VhcmNoaW5nfSAqKVxuXG52YWwgaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXhfZnJvbSBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cblxudmFsIGluZGV4X2Zyb21fb3B0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBbY11cbiAgICBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldIChpZiBhbnkpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4X2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBbY10gaW5cbiAgICBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuXG4gICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBbY10gZG9lcyBub3Qgb2NjdXIgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXS5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtyaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIGluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW2luZGV4IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbX1bIHMgMCBjXS4gKilcblxudmFsIGluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfb3B0IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbV9vcHR9WyBzIDAgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tfVsgcyAobGVuZ3RoIHMgLSAxKSBjXS4gKilcblxudmFsIHJpbmRleF9vcHQgOiBzdHJpbmcgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5yaW5kZXhfZnJvbV9vcHR9WyBzIChsZW5ndGggcyAtIDEpIGNdLlxuXG4gICAgQHNpbmNlIDQuMDUgKilcblxuKCoqIHsxIFN0cmluZ3MgYW5kIFNlcXVlbmNlc30gKilcblxudmFsIHRvX3NlcSA6IHQgLT4gY2hhciBTZXEudFxuKCoqIFt0b19zZXEgc10gaXMgYSBzZXF1ZW5jZSBtYWRlIG9mIHRoZSBzdHJpbmcncyBjaGFyYWN0ZXJzIGluXG4gICAgaW5jcmVhc2luZyBvcmRlci4gSW4gW1widW5zYWZlLXN0cmluZ1wiXSBtb2RlLCBtb2RpZmljYXRpb25zIG9mIHRoZSBzdHJpbmdcbiAgICBkdXJpbmcgaXRlcmF0aW9uIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZSBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCB0b19zZXFpIDogdCAtPiAoaW50ICogY2hhcikgU2VxLnRcbigqKiBbdG9fc2VxaSBzXSBpcyBsaWtlIHshdG9fc2VxfSBidXQgYWxzbyB0dXBsZXMgdGhlIGNvcnJlc3BvbmRpbmcgaW5kZXguXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG52YWwgb2Zfc2VxIDogY2hhciBTZXEudCAtPiB0XG4oKiogW29mX3NlcSBzXSBpcyBhIHN0cmluZyBtYWRlIG9mIHRoZSBzZXF1ZW5jZSdzIGNoYXJhY3RlcnMuXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG4oKiogezE6dXRmIFVURiBkZWNvZGluZyBhbmQgdmFsaWRhdGlvbnN9XG5cbiAgICBAc2luY2UgNC4xNCAqKVxuXG4oKiogezI6dXRmXzggVVRGLTh9ICopXG5cbnZhbCBnZXRfdXRmXzhfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfOF91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTggY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpblxuICAgIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl84IDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl84IGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtOCBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2YmUgVVRGLTE2QkV9ICopXG5cbnZhbCBnZXRfdXRmXzE2YmVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZiZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2QkUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmJlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmJlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZCRSBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2bGUgVVRGLTE2TEV9ICopXG5cbnZhbCBnZXRfdXRmXzE2bGVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZsZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2TEUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmxlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmxlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZMRSBkYXRhLiAqKVxuXG4oKiogezEgQmluYXJ5IGRlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG4oKiogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gYmluYXJ5IGRlY29kZSBpbnRlZ2VycyBmcm9tIHN0cmluZ3MuXG5cbiAgICBBbGwgZm9sbG93aW5nIGZ1bmN0aW9ucyByYWlzZSBbSW52YWxpZF9hcmd1bWVudF0gaWYgdGhlIGNoYXJhY3RlcnNcbiAgICBuZWVkZWQgYXQgaW5kZXggW2ldIHRvIGRlY29kZSB0aGUgaW50ZWdlciBhcmUgbm90IGF2YWlsYWJsZS5cblxuICAgIExpdHRsZS1lbmRpYW4gKHJlc3AuIGJpZy1lbmRpYW4pIGVuY29kaW5nIG1lYW5zIHRoYXQgbGVhc3RcbiAgICAocmVzcC4gbW9zdCkgc2lnbmlmaWNhbnQgYnl0ZXMgYXJlIHN0b3JlZCBmaXJzdC4gIEJpZy1lbmRpYW4gaXNcbiAgICBhbHNvIGtub3duIGFzIG5ldHdvcmsgYnl0ZSBvcmRlci4gIE5hdGl2ZS1lbmRpYW4gZW5jb2RpbmcgaXNcbiAgICBlaXRoZXIgbGl0dGxlLWVuZGlhbiBvciBiaWctZW5kaWFuIGRlcGVuZGluZyBvbiB7IVN5cy5iaWdfZW5kaWFufS5cblxuICAgIDMyLWJpdCBhbmQgNjQtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludDMyXSBhbmRcbiAgICBbaW50NjRdIHR5cGVzLCB3aGljaCBjYW4gYmUgaW50ZXJwcmV0ZWQgZWl0aGVyIGFzIHNpZ25lZCBvclxuICAgIHVuc2lnbmVkIG51bWJlcnMuXG5cbiAgICA4LWJpdCBhbmQgMTYtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludF0gdHlwZSxcbiAgICB3aGljaCBoYXMgbW9yZSBiaXRzIHRoYW4gdGhlIGJpbmFyeSBlbmNvZGluZy4gIFRoZXNlIGV4dHJhIGJpdHNcbiAgICBhcmUgc2lnbi1leHRlbmRlZCAob3IgemVyby1leHRlbmRlZCkgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZWNvZGUgOC1iaXRcbiAgICBvciAxNi1iaXQgaW50ZWdlcnMgYW5kIHJlcHJlc2VudGVkIHRoZW0gd2l0aCBbaW50XSB2YWx1ZXMuXG4qKVxuXG52YWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQ4IGIgaV0gaXMgW2JdJ3MgdW5zaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDggYiBpXSBpcyBbYl0ncyBzaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDE2X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLmhhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRcbiAgICB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZX0uXG5cbiAgICBAc2luY2UgNS4wICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLnNlZWRlZF9oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzXG4gICAgYXJndW1lbnQgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2VTZWVkZWR9LlxuXG4gICAgQHNpbmNlIDUuMCAqKVxuXG52YWwgZ2V0X2ludDMyX2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDMyX2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG4oKiovKiopXG5cbigqIFRoZSBmb2xsb3dpbmcgaXMgZm9yIHN5c3RlbSB1c2Ugb25seS4gRG8gbm90IGNhbGwgZGlyZWN0bHkuICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPlxuICAgIHVuaXQgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuIiwiaW5jbHVkZSBTdGFibGVfd2l0bmVzc19pbnRmXG5cbigqIFRoZSBydW50aW1lIHJlcHJlc2VudGF0aW9uIG9mIHN0YWJsZSB3aXRuZXNzZXMgZG9lcyBub3QgbWF0dGVyLiAqKVxudHlwZSBfIHQgPSB1bml0XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2FycmF5ICgpID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2Jvb2wgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfYnl0ZXMgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfY2hhciA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19leG4gPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfZmxvYXQgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfaW50ID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2ludDMyID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2ludDY0ID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2xhenlfdCAoKSA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19saXN0ICgpID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX25hdGl2ZWludCA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19vcHRpb24gKCkgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfcmVmICgpID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX3N0cmluZyA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc191bml0ID0gKClcbmVuZFxuXG5sZXQgb2Zfc2VyaWFsaXphYmxlICgpIF8gXyA9ICgpXG5cbm1vZHVsZSBPZl9zZXJpYWxpemFibGUxIChfIDogVDEpIChfIDogVDEpID0gc3RydWN0XG4gIGxldCBvZl9zZXJpYWxpemFibGUgXyBfIF8gKCkgPSAoKVxuZW5kXG5cbm1vZHVsZSBPZl9zZXJpYWxpemFibGUyIChfIDogVDIpIChfIDogVDIpID0gc3RydWN0XG4gIGxldCBvZl9zZXJpYWxpemFibGUgXyBfIF8gKCkgKCkgPSAoKVxuZW5kXG5cbm1vZHVsZSBPZl9zZXJpYWxpemFibGUzIChfIDogVDMpIChfIDogVDMpID0gc3RydWN0XG4gIGxldCBvZl9zZXJpYWxpemFibGUgXyBfIF8gXyAoKSAoKSA9ICgpXG5lbmRcblxubGV0IGFzc2VydF9zdGFibGUgPSAoKVxuIiwiKCogQ29tbW9uOiBjb21tb24gZGVmaW5pdGlvbnMgdXNlZCBieSBiaW5hcnkgcHJvdG9jb2wgY29udmVydGVycyAqKVxuXG5vcGVuIEJhc2Vcbm9wZW4gUHJpbnRmXG5vcGVuIEJpZ2FycmF5XG5cbnR5cGUgcG9zID0gaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbigqIEVycm9ycyBhbmQgZXhjZXB0aW9ucyAqKVxuXG5leGNlcHRpb24gQnVmZmVyX3Nob3J0XG5leGNlcHRpb24gTm9fdmFyaWFudF9tYXRjaFxuXG5tb2R1bGUgUmVhZEVycm9yID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZWdfaW50OFxuICAgIHwgSW50X2NvZGVcbiAgICB8IEludF9vdmVyZmxvd1xuICAgIHwgTmF0MF9jb2RlXG4gICAgfCBOYXQwX292ZXJmbG93XG4gICAgfCBJbnQzMl9jb2RlXG4gICAgfCBJbnQ2NF9jb2RlXG4gICAgfCBOYXRpdmVpbnRfY29kZVxuICAgIHwgVW5pdF9jb2RlXG4gICAgfCBCb29sX2NvZGVcbiAgICB8IE9wdGlvbl9jb2RlXG4gICAgfCBTdHJpbmdfdG9vX2xvbmdcbiAgICB8IFZhcmlhbnRfdGFnXG4gICAgfCBBcnJheV90b29fbG9uZ1xuICAgIHwgTGlzdF90b29fbG9uZyBvZlxuICAgICAgICB7IGxlbiA6IGludFxuICAgICAgICA7IG1heF9sZW4gOiBpbnRcbiAgICAgICAgfVxuICAgIHwgSGFzaHRibF90b29fbG9uZ1xuICAgIHwgU3VtX3RhZyBvZiBzdHJpbmdcbiAgICB8IFZhcmlhbnQgb2Ygc3RyaW5nXG4gICAgfCBQb2x5X3JlY19ib3VuZCBvZiBzdHJpbmdcbiAgICB8IFZhcmlhbnRfd3JvbmdfdHlwZSBvZiBzdHJpbmdcbiAgICB8IFNpbGx5X3R5cGUgb2Ygc3RyaW5nXG4gICAgfCBFbXB0eV90eXBlIG9mIHN0cmluZ1xuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgTmVnX2ludDggLT4gXCJOZWdfaW50OFwiXG4gICAgfCBJbnRfY29kZSAtPiBcIkludF9jb2RlXCJcbiAgICB8IEludF9vdmVyZmxvdyAtPiBcIkludF9vdmVyZmxvd1wiXG4gICAgfCBOYXQwX2NvZGUgLT4gXCJOYXQwX2NvZGVcIlxuICAgIHwgTmF0MF9vdmVyZmxvdyAtPiBcIk5hdDBfb3ZlcmZsb3dcIlxuICAgIHwgSW50MzJfY29kZSAtPiBcIkludDMyX2NvZGVcIlxuICAgIHwgSW50NjRfY29kZSAtPiBcIkludDY0X2NvZGVcIlxuICAgIHwgTmF0aXZlaW50X2NvZGUgLT4gXCJOYXRpdmVpbnRfY29kZVwiXG4gICAgfCBVbml0X2NvZGUgLT4gXCJVbml0X2NvZGVcIlxuICAgIHwgQm9vbF9jb2RlIC0+IFwiQm9vbF9jb2RlXCJcbiAgICB8IE9wdGlvbl9jb2RlIC0+IFwiT3B0aW9uX2NvZGVcIlxuICAgIHwgU3RyaW5nX3Rvb19sb25nIC0+IFwiU3RyaW5nX3Rvb19sb25nXCJcbiAgICB8IFZhcmlhbnRfdGFnIC0+IFwiVmFyaWFudF90YWdcIlxuICAgIHwgQXJyYXlfdG9vX2xvbmcgLT4gXCJBcnJheV90b29fbG9uZ1wiXG4gICAgfCBMaXN0X3Rvb19sb25nIHsgbGVuOyBtYXhfbGVuIH0gLT4gc3ByaW50ZiBcIkxpc3RfdG9vX2xvbmcgLyAlZCAobWF4ICVkKVwiIGxlbiBtYXhfbGVuXG4gICAgfCBIYXNodGJsX3Rvb19sb25nIC0+IFwiSGFzaHRibF90b29fbG9uZ1wiXG4gICAgfCBTdW1fdGFnIGxvYyAtPiBcIlN1bV90YWcgLyBcIiBeIGxvY1xuICAgIHwgVmFyaWFudCBsb2MgLT4gXCJWYXJpYW50IC8gXCIgXiBsb2NcbiAgICB8IFBvbHlfcmVjX2JvdW5kIGxvYyAtPiBcIlBvbHlfcmVjX2JvdW5kIC8gXCIgXiBsb2NcbiAgICB8IFZhcmlhbnRfd3JvbmdfdHlwZSBsb2MgLT4gXCJWYXJpYW50X3dyb25nX3R5cGUgLyBcIiBeIGxvY1xuICAgIHwgU2lsbHlfdHlwZSBsb2MgLT4gXCJTaWxseV90eXBlIC8gXCIgXiBsb2NcbiAgICB8IEVtcHR5X3R5cGUgbG9jIC0+IFwiRW1wdHlfdHlwZSAvIFwiIF4gbG9jXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbmVuZFxuXG5leGNlcHRpb24gUmVhZF9lcnJvciBvZiBSZWFkRXJyb3IudCAqIHBvcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuZXhjZXB0aW9uIFBvbHlfcmVjX3dyaXRlIG9mIHN0cmluZ1xuZXhjZXB0aW9uIEVtcHR5X3R5cGUgb2Ygc3RyaW5nXG5cbmxldCByYWlzZV9yZWFkX2Vycm9yIGVyciBwb3MgPSByYWlzZSAoUmVhZF9lcnJvciAoZXJyLCBwb3MpKVxuXG5sZXQgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIG5hbWUgcG9zID1cbiAgcmFpc2UgKFJlYWRfZXJyb3IgKFJlYWRFcnJvci5WYXJpYW50X3dyb25nX3R5cGUgbmFtZSwgcG9zKSlcbjs7XG5cbmxldCByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiBsb2MgPSBmYWlsd2l0aCAobG9jIF4gXCI6IGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uXCIpXG5sZXQgYXJyYXlfYm91bmRfZXJyb3IgKCkgPSBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIlxuXG4oKiBCdWZmZXJzICopXG5cbnR5cGUgcG9zX3JlZiA9IHBvcyByZWZcbnR5cGUgYnVmID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxubGV0IGNyZWF0ZV9idWYgbiA9IEFycmF5MS5jcmVhdGUgQmlnYXJyYXkuY2hhciBjX2xheW91dCBuXG5sZXQgYnVmX2xlbiBidWYgPSBBcnJheTEuZGltIGJ1ZlxubGV0IGFzc2VydF9wb3MgcG9zID0gaWYgcG9zIDwgMCB0aGVuIGFycmF5X2JvdW5kX2Vycm9yICgpXG5sZXQgY2hlY2tfcG9zIChidWYgOiBidWYpIHBvcyA9IGlmIHBvcyA+PSBBcnJheTEuZGltIGJ1ZiB0aGVuIHJhaXNlIEJ1ZmZlcl9zaG9ydFxuXG5sZXQgc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICBwb3Ncbjs7XG5cbmxldCBjaGVja19uZXh0IChidWYgOiBidWYpIG5leHQgPSBpZiBuZXh0ID4gQXJyYXkxLmRpbSBidWYgdGhlbiByYWlzZSBCdWZmZXJfc2hvcnRcblxubGV0IGdldF9vcHRfcG9zIH5sb2MgfnZhciA9IGZ1bmN0aW9uXG4gIHwgU29tZSBwb3MgLT5cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJCaW5fcHJvdC5Db21tb24uJXM6ICVzIDwgMFwiIGxvYyB2YXIpO1xuICAgIHBvc1xuICB8IE5vbmUgLT4gMFxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IHNyYzpidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gZHN0OmJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX3N0dWJcIlxuXG5sZXQgYmxpdF9idWYgP3NyY19wb3MgfnNyYyA/ZHN0X3BvcyB+ZHN0IGxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfYnVmXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1ZjogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQXJyYXkxLmRpbSBzcmNcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBzcmNfcG9zID4gc3JjX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBBcnJheTEuZGltIGRzdFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IGRzdF9wb3MgPiBkc3RfbGVuXCIpXG4gIGVsc2UgaWYgc3JjX3BvcyArIGxlbiA+IEFycmF5MS5kaW0gc3JjXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IHNyY19wb3MgKyBsZW4gPiBzcmNfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBkc3RcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1ZjogZHN0X3BvcyArIGxlbiA+IGRzdF9sZW5cIlxuICBlbHNlIHVuc2FmZV9ibGl0X2J1ZiB+c3JjX3BvcyB+c3JjIH5kc3RfcG9zIH5kc3QgfmxlblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nX2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBzdHJpbmdcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnl0ZXNfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ5dGVzXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnl0ZXNfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IGJsaXRfc3RyaW5nX2J1ZiA/c3JjX3BvcyBzdHIgP2RzdF9wb3MgYnVmIH5sZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X3N0cmluZ19idWZcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1ZjogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gU3RyaW5nLmxlbmd0aCBzdHJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyA+IHN0cl9sZW5cIjtcbiAgICBpZiBkc3RfcG9zID4gQXJyYXkxLmRpbSBidWZcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyA+IGJ1ZlwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHN0clxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyArIGxlbiA+IHN0cl9sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBBcnJheTEuZGltIGJ1ZlxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyArIGxlbiA+IGJ1ZlwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvcyBzdHIgfmRzdF9wb3MgYnVmIH5sZW5cbjs7XG5cbmxldCBibGl0X2J5dGVzX2J1ZiA/c3JjX3BvcyBzdHIgP2RzdF9wb3MgYnVmIH5sZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X2J5dGVzX2J1ZlwiIGluXG4gIGxldCBzcmNfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwic3JjX3Bvc1wiIHNyY19wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJkc3RfcG9zXCIgZHN0X3BvcyBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IGxlbiA8IDBcIlxuICBlbHNlIGlmIGxlbiA9IDBcbiAgdGhlbiAoXG4gICAgaWYgc3JjX3BvcyA+IEJ5dGVzLmxlbmd0aCBzdHJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnl0ZXNfYnVmOiBzcmNfcG9zID4gc3RyX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBBcnJheTEuZGltIGJ1ZlxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgPiBidWZcIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gQnl0ZXMubGVuZ3RoIHN0clxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnl0ZXNfYnVmOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgaWYgZHN0X3BvcyArIGxlbiA+IEFycmF5MS5kaW0gYnVmXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgKyBsZW4gPiBidWZcIlxuICBlbHNlIHVuc2FmZV9ibGl0X2J5dGVzX2J1ZiB+c3JjX3BvcyBzdHIgfmRzdF9wb3MgYnVmIH5sZW5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9zdHJpbmdcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ5dGVzXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZfYnl0ZXNcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ5dGVzXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgYmxpdF9idWZfYnl0ZXMgP3NyY19wb3MgYnVmID9kc3RfcG9zIHN0ciB+bGVuID1cbiAgbGV0IGxvYyA9IFwiYmxpdF9idWZfc3RyaW5nXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IGxlbiA8IDBcIlxuICBlbHNlIGlmIGxlbiA9IDBcbiAgdGhlbiAoXG4gICAgaWYgc3JjX3BvcyA+IEFycmF5MS5kaW0gYnVmXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IHNyY19wb3MgPiBidWZfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEJ5dGVzLmxlbmd0aCBzdHJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyA+IHN0cl9sZW5cIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBidWZcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IHNyY19wb3MgKyBsZW4gPiBidWZfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQnl0ZXMubGVuZ3RoIHN0clxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyArIGxlbiA+IHN0cl9sZW5cIlxuICBlbHNlIHVuc2FmZV9ibGl0X2J1Zl9ieXRlcyB+c3JjX3BvcyBidWYgfmRzdF9wb3Mgc3RyIH5sZW5cbjs7XG5cbmxldCBibGl0X2J1Zl9zdHJpbmcgPSBibGl0X2J1Zl9ieXRlc1xuXG4oKiBNaXNjZWxsYW5lb3VzICopXG5cbmxldCByZWMgY29weV9odGJsX2xpc3QgaHRibCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gaHRibFxuICB8IChrLCB2KSA6OiByZXN0IC0+XG4gICAgU3RkbGliLkhhc2h0YmwuYWRkIGh0YmwgayB2O1xuICAgIGNvcHlfaHRibF9saXN0IGh0YmwgcmVzdFxuOztcblxuKCogQmlnYXJyYXlzICopXG5cbnR5cGUgdmVjMzIgPSAoZmxvYXQsIGZsb2F0MzJfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgdmVjNjQgPSAoZmxvYXQsIGZsb2F0NjRfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgdmVjID0gdmVjNjRcbnR5cGUgbWF0MzIgPSAoZmxvYXQsIGZsb2F0MzJfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkyLnRcbnR5cGUgbWF0NjQgPSAoZmxvYXQsIGZsb2F0NjRfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkyLnRcbnR5cGUgbWF0ID0gbWF0NjRcblxuKCogRmxvYXQgYXJyYXlzICopXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zsb2F0X2FycmF5X2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBmbG9hdCBhcnJheVxuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9mbG9hdF9hcnJheVxuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gZmxvYXQgYXJyYXlcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zsb2F0YXJyYXlfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGZsb2F0YXJyYXlcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZfZmxvYXRhcnJheVxuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gZmxvYXRhcnJheVxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWJcIlxuW0BAbm9hbGxvY11cblxuKCoqKilcblxubGV0ICggKyApID0gKCArIClcbiIsIigqIE5hdDA6IG5hdHVyYWwgbnVtYmVycyAoaW5jbHVkaW5nIHplcm8pICopXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB0aGVuIGZhaWx3aXRoIFwiQmluX3Byb3QuTmF0MC5vZl9pbnQ6IG4gPCAwXCI7XG4gIG5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9vZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbiIsIigqIFdyaXRlX21sOiB3cml0aW5nIHZhbHVlcyB0byB0aGUgYmluYXJ5IHByb3RvY29sIHVzaW5nIChtb3N0bHkpIE9DYW1sLiAqKVxuXG4oKiBOb3RlOiB0aGUgY29kZSBpcyB0aGlzIGZpbGUgaXMgY2FyZWZ1bGx5IHdyaXR0ZW4gdG8gYXZvaWQgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbnMuIFdoZW5cbiAgIHRvdWNoaW5nIHRoaXMgY29kZSwgYmUgc3VyZSB0byBydW4gdGhlIGJlbmNobWFya3MgdG8gY2hlY2sgZm9yIHJlZ3Jlc3Npb25zLiAqKVxuXG5vcGVuIEJpZ2FycmF5XG5vcGVuIENvbW1vblxuXG50eXBlICdhIHdyaXRlciA9IGJ1ZiAtPiBwb3M6cG9zIC0+ICdhIC0+IHBvc1xudHlwZSAoJ2EsICdiKSB3cml0ZXIxID0gJ2Egd3JpdGVyIC0+ICdiIHdyaXRlclxudHlwZSAoJ2EsICdiLCAnYykgd3JpdGVyMiA9ICdhIHdyaXRlciAtPiAoJ2IsICdjKSB3cml0ZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgd3JpdGVyMyA9ICdhIHdyaXRlciAtPiAoJ2IsICdjLCAnZCkgd3JpdGVyMlxuXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnVmIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OCA6IGJ1ZiAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0MTYgOiBidWYgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQzMiA6IGJ1ZiAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0NjQgOiBidWYgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NHVcIlxuZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIGJzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIGJzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuKCokIG9wZW4gQmluX3Byb3RfY2luYXBzICQqKVxuXG5sZXQgY29kZV9ORUdfSU5UOCA9ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKikgJ1xceGZmJyAoKiQqKVxubGV0IGNvZGVfSU5UMTYgPSAoKiQgQ29kZS5jaGFyIElOVDE2ICopICdcXHhmZScgKCokKilcbmxldCBjb2RlX0lOVDMyID0gKCokIENvZGUuY2hhciBJTlQzMiAqKSAnXFx4ZmQnICgqJCopXG5sZXQgY29kZV9JTlQ2NCA9ICgqJCBDb2RlLmNoYXIgSU5UNjQgKikgJ1xceGZjJyAoKiQqKVxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZSA9IDY0XG5sZXQgYXJjaF9iaWdfZW5kaWFuID0gU3lzLmJpZ19lbmRpYW5cblxubGV0IHVuc2FmZV9zZXQxNmJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldDE2XG4gIGVsc2UgZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MTYgYnVmIHBvcyAoYnN3YXAxNiB4KVxuOztcblxubGV0IHVuc2FmZV9zZXQzMmJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldDMyXG4gIGVsc2UgZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MzIgYnVmIHBvcyAoYnN3YXAzMiB4KVxuOztcblxubGV0IHVuc2FmZV9zZXQ2NGJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldDY0XG4gIGVsc2UgZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0NjQgYnVmIHBvcyAoYnN3YXA2NCB4KVxuOztcblxubGV0IHVuc2FmZV9zZXQxNmxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MTYgYnVmIHBvcyAoYnN3YXAxNiB4KVxuICBlbHNlIHVuc2FmZV9zZXQxNlxuOztcblxubGV0IHVuc2FmZV9zZXQzMmxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MzIgYnVmIHBvcyAoYnN3YXAzMiB4KVxuICBlbHNlIHVuc2FmZV9zZXQzMlxuOztcblxubGV0IHVuc2FmZV9zZXQ2NGxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0NjQgYnVmIHBvcyAoYnN3YXA2NCB4KVxuICBlbHNlIHVuc2FmZV9zZXQ2NFxuOztcblxubGV0IGJpbl93cml0ZV91bml0IGJ1ZiB+cG9zICgpID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgJ1xcMDAwJztcbiAgcG9zICsgMVxuOztcblxubGV0IGJpbl93cml0ZV9ib29sIGJ1ZiB+cG9zIGIgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyAoaWYgYiB0aGVuICdcXDAwMScgZWxzZSAnXFwwMDAnKTtcbiAgcG9zICsgMVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfc21hbGxfaW50IGJ1ZiBwb3MgbiA9XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0OCBidWYgcG9zIG47XG4gIHBvcyArIDFcbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX25lZ19pbnQ4IGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9ORUdfSU5UODtcbiAgdW5zYWZlX3NldDggYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9pbnQxNiBidWYgcG9zIG4gPVxuICBsZXQgbmV4dCA9IHBvcyArIDMgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldCBidWYgcG9zIGNvZGVfSU5UMTY7XG4gIHVuc2FmZV9zZXQxNmxlIGJ1ZiAocG9zICsgMSkgbjtcbiAgbmV4dFxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyA1IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX0lOVDMyO1xuICB1bnNhZmVfc2V0MzJsZSBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbltAQGlubGluZV1cbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgOSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9JTlQ2NDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX2NoYXIgYnVmIH5wb3MgYyA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldCBidWYgcG9zIGM7XG4gIHBvcyArIDFcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgaWYgbiA+PSAwXG4gIHRoZW5cbiAgICBpZiBuIDwgMHgwMDAwMDA4MFxuICAgIHRoZW4gYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuXG4gICAgZWxzZSBpZiBuIDwgMHgwMDAwODAwMFxuICAgIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQxNiBidWYgcG9zIG5cbiAgICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gMSBsc2wgMzFcbiAgICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pXG4gICAgZWxzZSBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKVxuICBlbHNlIGlmIG4gPj0gLTB4MDAwMDAwODBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX25lZ19pbnQ4IGJ1ZiBwb3MgblxuICBlbHNlIGlmIG4gPj0gLTB4MDAwMDgwMDBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPCAtKDEgbHNsIDMxKVxuICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pXG4gIGVsc2UgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChJbnQzMi5vZl9pbnQgbilcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBuYXQwID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuID0gKG5hdDAgOiBOYXQwLnQgOj4gaW50KSBpblxuICBpZiBuIDwgMHgwMDAwMDA4MFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfc21hbGxfaW50IGJ1ZiBwb3MgblxuICBlbHNlIGlmIG4gPCAweDAwMDEwMDAwXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQxNiBidWYgcG9zIG5cbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuID49IDEgbHNsIDMyXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgZWxzZSBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKVxuOztcblxubGV0IGJpbl93cml0ZV9zdHJpbmcgYnVmIH5wb3Mgc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgbmV3X3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IG5leHQgPSBuZXdfcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICgqIFRPRE86IG9wdGltaXplIGZvciBzbWFsbCBzdHJpbmdzICopXG4gIHVuc2FmZV9ibGl0X3N0cmluZ19idWYgfnNyY19wb3M6MCBzdHIgfmRzdF9wb3M6bmV3X3BvcyBidWYgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9ieXRlcyBidWYgfnBvcyBzdHIgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIHN0ciBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IG5ld19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBuZXh0ID0gbmV3X3BvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAoKiBUT0RPOiBvcHRpbWl6ZSBmb3Igc21hbGwgYnl0ZXMgKilcbiAgdW5zYWZlX2JsaXRfYnl0ZXNfYnVmIH5zcmNfcG9zOjAgc3RyIH5kc3RfcG9zOm5ld19wb3MgYnVmIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXQgYnVmIH5wb3MgeCA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIHBvcyAoSW50NjQuYml0c19vZl9mbG9hdCB4KTtcbiAgbmV4dFxuW0BAaW5saW5lXVxuOztcblxubGV0IGJpbl93cml0ZV9pbnQzMiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIFtAaW5saW5lXSBidWYgfnBvcyBuIC0+IGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgKEludDMyLnRvX2ludCBuKVxuICBlbHNlXG4gICAgZnVuIFtAaW5saW5lXSBidWYgfnBvcyBuIC0+XG4gICAgICBpZiBuID49IDB4MDAwMDgwMDBsIHx8IG4gPCAtMHgwMDAwODAwMGxcbiAgICAgIHRoZW4gKFxuICAgICAgICBhc3NlcnRfcG9zIHBvcztcbiAgICAgICAgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIG4pXG4gICAgICBlbHNlIGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgKEludDMyLnRvX2ludCBuKVxuOztcblxubGV0IGJpbl93cml0ZV9pbnQ2NCBidWYgfnBvcyBuID1cbiAgaWYgbiA+PSAweDgwMDAwMDAwTCB8fCBuIDwgLTB4ODAwMDAwMDBMXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyBuKVxuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50NjQudG9faW50IG4pXG4gIGVsc2UgaWYgbiA+PSAweDAwMDA4MDAwTCB8fCBuIDwgLTB4MDAwMDgwMDBMXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50NjQudG9faW50MzIgbikpXG4gIGVsc2UgYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50NjQudG9faW50IG4pXG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX25hdGl2ZWludCBidWYgfnBvcyBuID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgJiYgKG4gPj0gKCogMHg4MDAwMDAwMG4gKikgTmF0aXZlaW50LnNoaWZ0X2xlZnQgMW4gMzFcbiAgICAgIHx8IG4gPCAoKiAtMHg4MDAwMDAwMG4gKikgTmF0aXZlaW50Lm5lZyAoTmF0aXZlaW50LnNoaWZ0X2xlZnQgMW4gMzEpKVxuICB0aGVuIChcbiAgICBhc3NlcnRfcG9zIHBvcztcbiAgICBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgKEludDY0Lm9mX25hdGl2ZWludCBuKSlcbiAgZWxzZSBpZiAoKG5vdCBhcmNoX3NpeHR5Zm91cikgJiYgbiA+PSAweDgwMDBuKSB8fCBuIDwgLTB4ODAwMG5cbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChOYXRpdmVpbnQudG9faW50MzIgbikpXG4gIGVsc2UgYmluX3dyaXRlX2ludCBidWYgfnBvcyAoTmF0aXZlaW50LnRvX2ludCBuKVxuW0BAaW5saW5lXVxuOztcblxubGV0IGJpbl93cml0ZV9yZWYgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIHIgPSBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgIXJcblxubGV0IGJpbl93cml0ZV9sYXp5IGJpbl93cml0ZV9lbCBidWYgfnBvcyBsdiA9XG4gIGxldCB2ID0gTGF6eS5mb3JjZSBsdiBpblxuICBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgdlxuOztcblxubGV0IGJpbl93cml0ZV9vcHRpb24gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGJpbl93cml0ZV9ib29sIGJ1ZiB+cG9zIGZhbHNlXG4gIHwgU29tZSB2IC0+XG4gICAgbGV0IG5leHQgPSBiaW5fd3JpdGVfYm9vbCBidWYgfnBvcyB0cnVlIGluXG4gICAgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOm5leHQgdlxuOztcblxubGV0IGJpbl93cml0ZV9wYWlyIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJ1ZiB+cG9zIChhLCBiKSA9XG4gIGxldCBuZXh0ID0gYmluX3dyaXRlX2EgYnVmIH5wb3MgYSBpblxuICBiaW5fd3JpdGVfYiBidWYgfnBvczpuZXh0IGJcbjs7XG5cbmxldCBiaW5fd3JpdGVfdHJpcGxlIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJpbl93cml0ZV9jIGJ1ZiB+cG9zIChhLCBiLCBjKSA9XG4gIGxldCBuZXh0MSA9IGJpbl93cml0ZV9hIGJ1ZiB+cG9zIGEgaW5cbiAgbGV0IG5leHQyID0gYmluX3dyaXRlX2IgYnVmIH5wb3M6bmV4dDEgYiBpblxuICBiaW5fd3JpdGVfYyBidWYgfnBvczpuZXh0MiBjXG47O1xuXG5sZXQgYmluX3dyaXRlX2xpc3QgPVxuICBsZXQgcmVjIGxvb3AgfmJpbl93cml0ZV9lbCB+YnVmIH5lbHNfcG9zIGxzdCA9XG4gICAgbWF0Y2ggbHN0IHdpdGhcbiAgICB8IFtdIC0+IGVsc19wb3NcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBsZXQgbmV3X2Vsc19wb3MgPSBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6ZWxzX3BvcyBoZCBpblxuICAgICAgbG9vcCB+YmluX3dyaXRlX2VsIH5idWYgfmVsc19wb3M6bmV3X2Vsc19wb3MgdGxcbiAgaW5cbiAgZnVuIGJpbl93cml0ZV9lbCBidWYgfnBvcyBsc3QgLT5cbiAgICBsZXQgbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IChMaXN0Lmxlbmd0aCBsc3QpIGluXG4gICAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBsZW4gaW5cbiAgICBsb29wIH5iaW5fd3JpdGVfZWwgfmJ1ZiB+ZWxzX3BvcyBsc3Rcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlbiB+bGVuZ3RoIH5ibGl0IGJ1ZiB+cG9zIGEgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgYmxpdCB+c3JjX3BvczowIGEgfmRzdF9wb3M6cG9zIGJ1ZiB+bGVuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0YXJyYXkgYnVmIH5wb3MgYSA9XG4gIGJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW5cbiAgICB+bGVuZ3RoOkZsb2F0LkFycmF5Lmxlbmd0aFxuICAgIH5ibGl0OnVuc2FmZV9ibGl0X2Zsb2F0YXJyYXlfYnVmXG4gICAgYnVmXG4gICAgfnBvc1xuICAgIGFcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXRfYXJyYXkgYnVmIH5wb3MgYSA9XG4gIGJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW5cbiAgICB+bGVuZ3RoOkFycmF5Lmxlbmd0aFxuICAgIH5ibGl0OnVuc2FmZV9ibGl0X2Zsb2F0X2FycmF5X2J1ZlxuICAgIGJ1ZlxuICAgIH5wb3NcbiAgICBhXG47O1xuXG5sZXQgYmluX3dyaXRlX2FycmF5X2xvb3AgYmluX3dyaXRlX2VsIGJ1ZiB+ZWxzX3BvcyB+biBhciA9XG4gIGxldCBlbHNfcG9zX3JlZiA9IHJlZiBlbHNfcG9zIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIGVsc19wb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBidWYgfnBvczohZWxzX3Bvc19yZWYgKEFycmF5LnVuc2FmZV9nZXQgYXIgaSlcbiAgZG9uZTtcbiAgIWVsc19wb3NfcmVmXG47O1xuXG5sZXQgYmluX3dyaXRlX2FycmF5ICh0eXBlIGEpIGJpbl93cml0ZV9lbCBidWYgfnBvcyBhciA9XG4gIGlmIChPYmoubWFnaWMgKGJpbl93cml0ZV9lbCA6IGEgd3JpdGVyKSA6IGZsb2F0IHdyaXRlcikgPT0gYmluX3dyaXRlX2Zsb2F0XG4gIHRoZW4gYmluX3dyaXRlX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zIChPYmoubWFnaWMgKGFyIDogYSBhcnJheSkgOiBmbG9hdCBhcnJheSlcbiAgZWxzZSAoXG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggYXIgaW5cbiAgICBsZXQgcG4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbiBpblxuICAgIGxldCBlbHNfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcG4gaW5cbiAgICBiaW5fd3JpdGVfYXJyYXlfbG9vcCBiaW5fd3JpdGVfZWwgYnVmIH5lbHNfcG9zIH5uIGFyKVxuOztcblxubGV0IGJpbl93cml0ZV9oYXNodGJsIGJpbl93cml0ZV9rZXkgYmluX3dyaXRlX3ZhbCBidWYgfnBvcyBodGJsID1cbiAgbGV0IGxlbiA9IEhhc2h0YmwubGVuZ3RoIGh0YmwgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBlbHNfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gIGxldCBjb2xsX2h0YmwgayB2IGVsc19wb3MgPVxuICAgIGluY3IgY250X3JlZjtcbiAgICBsZXQgbmV3X2Vsc19wb3MgPSBiaW5fd3JpdGVfa2V5IGJ1ZiB+cG9zOmVsc19wb3MgayBpblxuICAgIGJpbl93cml0ZV92YWwgYnVmIH5wb3M6bmV3X2Vsc19wb3MgdlxuICBpblxuICBsZXQgcmVzX3BvcyA9IEhhc2h0YmwuZm9sZCBjb2xsX2h0YmwgaHRibCBlbHNfcG9zIGluXG4gIGlmICFjbnRfcmVmIDw+IGxlbiB0aGVuIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIFwiYmluX3dyaXRlX2hhc2h0YmxcIjtcbiAgcmVzX3Bvc1xuOztcblxuZXh0ZXJuYWwgYnVmX29mX3ZlYzMyIDogdmVjMzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX3ZlYzY0IDogdmVjNjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDMyIDogbWF0MzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDY0IDogbWF0NjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfdmVjIGJ1ZiB+cG9zIHYgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSB2IGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDQgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfdmVjMzIgdikgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfdmVjIGJ1ZiB+cG9zIHYgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSB2IGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfdmVjNjQgdikgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX3ZlYyA9IGJpbl93cml0ZV9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfbWF0IGJ1ZiB+cG9zIG0gPVxuICBsZXQgbGVuMSA9IEFycmF5Mi5kaW0xIG0gaW5cbiAgbGV0IGxlbjIgPSBBcnJheTIuZGltMiBtIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjEpIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjIpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA0IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzooYnVmX29mX21hdDMyIG0pIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdDY0X21hdCBidWYgfnBvcyBtID1cbiAgbGV0IGxlbjEgPSBBcnJheTIuZGltMSBtIGluXG4gIGxldCBsZW4yID0gQXJyYXkyLmRpbTIgbSBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgKE5hdDAudW5zYWZlX29mX2ludCBsZW4xKSBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgKE5hdDAudW5zYWZlX29mX2ludCBsZW4yKSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogOCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl9tYXQ2NCBtKSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbWF0ID0gYmluX3dyaXRlX2Zsb2F0NjRfbWF0XG5cbmxldCBiaW5fd3JpdGVfYmlnc3RyaW5nIGJ1ZiB+cG9zIHMgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSBzIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgbmV4dCA9IHBvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpzIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfdmFyaWFudF9pbnQgYnVmIH5wb3MgeCA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMybGUgYnVmIHBvcyAoSW50MzIubG9nb3IgKEludDMyLnNoaWZ0X2xlZnQgKEludDMyLm9mX2ludCB4KSAxKSAxbCk7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzhiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldDggYnVmIHBvcyBuO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludF8xNmJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MTZsZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzMyYml0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQzMmxlIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfNjRiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDY0X2JpdHMgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcmsxNl9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDE2YmUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcmszMl9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMyYmUgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcmszMl9pbnQzMiBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJiZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazY0X2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRiZSBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazY0X2ludDY0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGJlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZ19nZXQzMiA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZ19nZXQ2NCA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NHVcIlxuXG5sZXQgYmluX3dyaXRlX21kNSBidWYgfnBvcyB4ID1cbiAgbGV0IHggPSBNZDVfbGliLnRvX2JpbmFyeSB4IGluXG4gIGFzc2VydCAoU3RyaW5nLmxlbmd0aCB4ID0gMTYpO1xuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAxNiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIChcbiAgICBsZXQgYSA9IHVuc2FmZV9zdHJpbmdfZ2V0NjQgeCAwIGluXG4gICAgbGV0IGIgPSB1bnNhZmVfc3RyaW5nX2dldDY0IHggOCBpblxuICAgIHVuc2FmZV9zZXQ2NCBidWYgcG9zIGE7XG4gICAgdW5zYWZlX3NldDY0IGJ1ZiAocG9zICsgOCkgYilcbiAgZWxzZSAoXG4gICAgbGV0IGEgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggMCBpblxuICAgIGxldCBiID0gdW5zYWZlX3N0cmluZ19nZXQzMiB4IDQgaW5cbiAgICBsZXQgYyA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCA4IGluXG4gICAgbGV0IGQgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggMTIgaW5cbiAgICB1bnNhZmVfc2V0MzIgYnVmIHBvcyBhO1xuICAgIHVuc2FmZV9zZXQzMiBidWYgKHBvcyArIDQpIGI7XG4gICAgdW5zYWZlX3NldDMyIGJ1ZiAocG9zICsgOCkgYztcbiAgICB1bnNhZmVfc2V0MzIgYnVmIChwb3MgKyAxMikgZCk7XG4gIG5leHRcbjs7XG4iLCIoKiBSZWFkX21sOiByZWFkaW5nIHZhbHVlcyBmcm9tIHRoZSBiaW5hcnkgcHJvdG9jb2wgdXNpbmcgKG1vc3RseSkgT0NhbWwuICopXG5cbigqIE5vdGU6IHRoZSBjb2RlIGlzIHRoaXMgZmlsZSBpcyBjYXJlZnVsbHkgd3JpdHRlbiB0byBhdm9pZCB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9ucy4gV2hlblxuICAgdG91Y2hpbmcgdGhpcyBjb2RlLCBiZSBzdXJlIHRvIHJ1biB0aGUgYmVuY2htYXJrcyB0byBjaGVjayBmb3IgcmVncmVzc2lvbnMuICopXG5cbm9wZW4gQmlnYXJyYXlcbm9wZW4gQ29tbW9uXG5cbnR5cGUgJ2EgcmVhZGVyID0gYnVmIC0+IHBvc19yZWY6cG9zX3JlZiAtPiAnYVxudHlwZSAoJ2EsICdiKSByZWFkZXIxID0gJ2EgcmVhZGVyIC0+ICdiIHJlYWRlclxudHlwZSAoJ2EsICdiLCAnYykgcmVhZGVyMiA9ICdhIHJlYWRlciAtPiAoJ2IsICdjKSByZWFkZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgcmVhZGVyMyA9ICdhIHJlYWRlciAtPiAoJ2IsICdjLCAnZCkgcmVhZGVyMlxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogYnVmIC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDggOiBidWYgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcblxubGV0IHVuc2FmZV9nZXQ4X3NpZ25lZCBidWYgcG9zID1cbiAgbGV0IGMgPSB1bnNhZmVfZ2V0OCBidWYgcG9zIGluXG4gIGlmIGMgPj0gMTI4IHRoZW4gYyAtIDI1NiBlbHNlIGNcbjs7XG5cbigqJCBvcGVuIEJpbl9wcm90X2NpbmFwcyAkKilcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZSA9IDY0XG5sZXQgYXJjaF9iaWdfZW5kaWFuID0gU3lzLmJpZ19lbmRpYW5cbmxldCBtYXhfaW50X2ludDMyID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiBJbnQzMi5tYXhfaW50IGVsc2UgSW50MzIub2ZfaW50IG1heF9pbnRcbmxldCBtaW5faW50X2ludDMyID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiBJbnQzMi5tYXhfaW50IGVsc2UgSW50MzIub2ZfaW50IG1pbl9pbnRcbmxldCBtYXhfaW50X2ludDY0ID0gSW50NjQub2ZfaW50IG1heF9pbnRcbmxldCBtaW5faW50X2ludDY0ID0gSW50NjQub2ZfaW50IG1pbl9pbnRcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzYWZlX2ludF9vZl9pbnQzMiBwb3MgeCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gSW50MzIudG9faW50IHhcbiAgZWxzZSBpZiB4ID49IG1pbl9pbnRfaW50MzIgJiYgeCA8PSBtYXhfaW50X2ludDMyXG4gIHRoZW4gSW50MzIudG9faW50IHhcbiAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfb3ZlcmZsb3cgcG9zXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHNhZmVfaW50X29mX2ludDY0IHBvcyB4ID1cbiAgaWYgeCA+PSBtaW5faW50X2ludDY0ICYmIHggPD0gbWF4X2ludF9pbnQ2NFxuICB0aGVuIEludDY0LnRvX2ludCB4XG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuOztcblxubGV0IHNhZmVfbmF0aXZlaW50X29mX2ludDY0ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gX3BvcyB4IC0+IEludDY0LnRvX25hdGl2ZWludCB4XG4gIGVsc2VcbiAgICBmdW4gW0BpbmxpbmUgYWx3YXlzXSBwb3MgeCAtPlxuICAgICAgaWYgeCA+PSBJbnQ2NC5vZl9uYXRpdmVpbnQgTmF0aXZlaW50Lm1pbl9pbnRcbiAgICAgICYmIHggPD0gSW50NjQub2ZfbmF0aXZlaW50IE5hdGl2ZWludC5tYXhfaW50XG4gICAgICB0aGVuIEludDY0LnRvX25hdGl2ZWludCB4XG4gICAgICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3Ncbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9nZXQxNiA6IGJ1ZiAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQzMiA6IGJ1ZiAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDY0IDogYnVmIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0dVwiXG5leHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgYnN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgYnN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXQgdW5zYWZlX2dldDE2YmVfdW5zaWduZWQgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0MTYgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MTYgYnVmIHBvcyB8PiBic3dhcDE2XG47O1xuXG5sZXQgdW5zYWZlX2dldDMyYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0MzIgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MzIgYnVmIHBvcyB8PiBic3dhcDMyXG47O1xuXG5sZXQgdW5zYWZlX2dldDY0YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0NjQgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0NjQgYnVmIHBvcyB8PiBic3dhcDY0XG47O1xuXG5sZXQgdW5zYWZlX2dldDE2bGVfdW5zaWduZWQgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MTYgYnVmIHBvcyB8PiBic3dhcDE2IGVsc2UgdW5zYWZlX2dldDE2XG47O1xuXG5sZXQgdW5zYWZlX2dldDMybGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MzIgYnVmIHBvcyB8PiBic3dhcDMyIGVsc2UgdW5zYWZlX2dldDMyXG47O1xuXG5sZXQgdW5zYWZlX2dldDY0bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0NjQgYnVmIHBvcyB8PiBic3dhcDY0IGVsc2UgdW5zYWZlX2dldDY0XG47O1xuXG5sZXQgdW5zYWZlX2dldDE2bGVfc2lnbmVkIGJ1ZiBwb3MgPVxuICBsZXQgeCA9IHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIGJ1ZiBwb3MgaW5cbiAgaWYgeCA+IDMyNzY3IHRoZW4geCAtIDY1NTM2IGVsc2UgeFxuOztcblxubGV0IGJpbl9yZWFkX3VuaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgaWYgdW5zYWZlX2dldCBidWYgcG9zID0gJ1xcMDAwJ1xuICB0aGVuIHBvc19yZWYgOj0gcG9zICsgMVxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLlVuaXRfY29kZSBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9ib29sIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xcMDAwJyAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBmYWxzZVxuICB8ICdcXDAwMScgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgdHJ1ZVxuICB8IF8gLT4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQm9vbF9jb2RlIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDEgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0OF9zaWduZWQgYnVmIHBvcyBpblxuICBpZiBuID49IDAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OZWdfaW50OCAhcG9zX3JlZjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIENhbiBiZSBhYm92ZSBuZXh0IGxpbmUgKG5vIGVycm9ycyBwb3NzaWJsZSB3aXRoIDE2Yml0KS5cbiAgICAgVGhpcyBzaG91bGQgaW1wcm92ZSB0aGUgZ2VuZXJhdGVkIGNvZGUuICopXG4gIHVuc2FmZV9nZXQxNmxlX3NpZ25lZCBidWYgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMiBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIE5vIGVycm9yIHBvc3NpYmxlIGVpdGhlci4gKilcbiAgdW5zYWZlX2dldDMybGUgYnVmIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50NjQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICAoKiBObyBlcnJvciBwb3NzaWJsZSBlaXRoZXIuICopXG4gIHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3Ncbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgbGV0IG4gPSBzYWZlX2ludF9vZl9pbnQzMiAhcG9zX3JlZiBuIGluXG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50NjRfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBsZXQgbiA9IHNhZmVfaW50X29mX2ludDY0ICFwb3NfcmVmIG4gaW5cbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQ2NCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBJbnQ2NC5vZl9pbnQzMiBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgTmF0aXZlaW50Lm9mX2ludDMyIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDY0X2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgbGV0IG4gPSBzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCBwb3MgbiBpblxuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX25hdDBfMTYgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBOYXQwLnVuc2FmZV9vZl9pbnQgKHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIGJ1ZiBwb3MpXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uYXQwXzMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiAoXG4gICAgbGV0IG1hc2tfMzJiaXQgPSBJbnQ2NC50b19pbnQgMHhmZmZmX2ZmZmZMIGluXG4gICAgZnVuIGJ1ZiB+cG9zX3JlZiB+cG9zIC0+XG4gICAgICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgICAgIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBwb3NfcmVmIDo9IG5leHQ7XG4gICAgICBsZXQgbiA9IEludDMyLnRvX2ludCAodW5zYWZlX2dldDMybGUgYnVmIHBvcykgaW5cbiAgICAgIGlmIG4gPj0gMFxuICAgICAgdGhlbiBOYXQwLnVuc2FmZV9vZl9pbnQgblxuICAgICAgZWxzZVxuICAgICAgICAoKiBFcmFzZSB0aGUgdXBwZXIgYml0cyB0aGF0IHdlcmUgc2V0IHRvIDEgZHVyaW5nIHRoZSBpbnQzMiAtPiBpbnQgY29udmVyc2lvbi4gKilcbiAgICAgICAgTmF0MC51bnNhZmVfb2ZfaW50IChuIGxhbmQgbWFza18zMmJpdCkpXG4gIGVsc2VcbiAgICBmdW4gYnVmIH5wb3NfcmVmIH5wb3MgLT5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgICAgIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICAgICAgaWYgbiA+PSAwbCAmJiBuIDw9IG1heF9pbnRfaW50MzJcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbiA9IE5hdDAudW5zYWZlX29mX2ludCAoSW50MzIudG9faW50IG4pIGluXG4gICAgICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICAgICAgbilcbiAgICAgIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0MF9vdmVyZmxvdyAhcG9zX3JlZlxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmF0MF82NCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgaWYgbiA+PSAwTCAmJiBuIDw9IG1heF9pbnRfaW50NjRcbiAgdGhlbiAoXG4gICAgbGV0IG4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgKEludDY0LnRvX2ludCBuKSBpblxuICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICBuKVxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfb3ZlcmZsb3cgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBOYXQwLnVuc2FmZV9vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9uYXQwXzE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX25hdDBfMzIgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSAtPlxuICAgIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW5cbiAgICAgIHNhZmVfYmluX3JlYWRfbmF0MF82NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgICBlbHNlXG4gICAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX292ZXJmbG93IHBvc1xuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2J5dGVzIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBzdGFydF9wb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgaWYgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuU3RyaW5nX3Rvb19sb25nIHN0YXJ0X3BvcztcbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfYnVmX2J5dGVzIH5zcmNfcG9zOnBvcyBidWYgfmRzdF9wb3M6MCBzdHIgfmxlbjtcbiAgc3RyXG47O1xuXG5sZXQgYmluX3JlYWRfc3RyaW5nIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBzdHIgPSBiaW5fcmVhZF9ieXRlcyBidWYgfnBvc19yZWYgaW5cbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbjs7XG5cbmxldCBiaW5fcmVhZF9jaGFyIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgdW5zYWZlX2dldCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBDaGFyLmNvZGUgY2hcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSAtPlxuICAgIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW5cbiAgICAgIHNhZmVfYmluX3JlYWRfaW50NjRfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3NcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2Zsb2F0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIE5vIGVycm9yIHBvc3NpYmxlIGVpdGhlci4gKilcbiAgSW50NjQuZmxvYXRfb2ZfYml0cyAodW5zYWZlX2dldDY0bGUgYnVmIHBvcylcbjs7XG5cbmxldCBiaW5fcmVhZF9pbnQzMiBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgSW50MzIub2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIEludDMyLm9mX2ludCAoc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIEludDMyLm9mX2ludCAoc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MzIgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludDMyX2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2ludDY0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBJbnQ2NC5vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgSW50NjQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgSW50NjQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQ2NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQ2NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50NjRfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBOYXRpdmVpbnQub2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIE5hdGl2ZWludC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBOYXRpdmVpbnQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSB3aGVuIGFyY2hfc2l4dHlmb3VyIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdGl2ZWludF9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9yZWYgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gIHJlZiBlbFxuOztcblxubGV0IGJpbl9yZWFkX2xhenkgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gIExhenkuZnJvbV92YWwgZWxcbjs7XG5cbmxldCBiaW5fcmVhZF9vcHRpb24gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFwwMDAnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIE5vbmVcbiAgfCAnXFwwMDEnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICAgIFNvbWUgZWxcbiAgfCBfIC0+IHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk9wdGlvbl9jb2RlIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX3BhaXIgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBhID0gYmluX3JlYWRfYSBidWYgfnBvc19yZWYgaW5cbiAgbGV0IGIgPSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiBpblxuICBhLCBiXG47O1xuXG5sZXQgYmluX3JlYWRfdHJpcGxlIGJpbl9yZWFkX2EgYmluX3JlYWRfYiBiaW5fcmVhZF9jIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBhID0gYmluX3JlYWRfYSBidWYgfnBvc19yZWYgaW5cbiAgbGV0IGIgPSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiBpblxuICBsZXQgYyA9IGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmIGluXG4gIGEsIGIsIGNcbjs7XG5cbmxldCBiaW5fcmVhZF9uX3Jldl9saXN0IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBsZW4gPVxuICBsZXQgcmVjIGxvb3AgbiBhY2MgPVxuICAgIGlmIG4gPSAwIHRoZW4gYWNjIGVsc2UgbG9vcCAobiAtIDEpIChiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgOjogYWNjKVxuICBpblxuICBsb29wIGxlbiBbXVxuOztcblxubGV0IGJpbl9yZWFkX2xpc3Rfd2l0aF9tYXhfbGVuIH5tYXhfbGVuIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBpZiBsZW4gPiBtYXhfbGVuIHRoZW4gcmFpc2VfcmVhZF9lcnJvciAoTGlzdF90b29fbG9uZyB7IGxlbjsgbWF4X2xlbiB9KSAhcG9zX3JlZjtcbiAgbGV0IHJldl9sc3QgPSBiaW5fcmVhZF9uX3Jldl9saXN0IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBsZW4gaW5cbiAgTGlzdC5yZXYgcmV2X2xzdFxuOztcblxubGV0IGJpbl9yZWFkX2xpc3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4gfm1heF9sZW46bWF4X2ludCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWZcbjs7XG5cbmxldCBkdW1teV9mbG9hdF9idWYgPSBjcmVhdGVfYnVmIDhcbmxldCAoKSA9IGlnbm9yZSAoV3JpdGUuYmluX3dyaXRlX2Zsb2F0IGR1bW15X2Zsb2F0X2J1ZiB+cG9zOjAgMy4xKVxuXG5sZXQgbWF4X2Zsb2F0X2FycmF5X2xlbmd0aCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBTeXMubWF4X2FycmF5X2xlbmd0aCAvIDJcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYmluX3JlYWRfZmxvYXRfYXJyYXlfZ2VuIH5jcmVhdGUgfmJsaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBpZiBsZW4gPiBtYXhfZmxvYXRfYXJyYXlfbGVuZ3RoIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgcG9zO1xuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgYXJyID0gY3JlYXRlIGxlbiBpblxuICBibGl0IH5zcmNfcG9zOnBvcyBidWYgfmRzdF9wb3M6MCBhcnIgfmxlbjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBhcnJcbjs7XG5cbmxldCBiaW5fcmVhZF9mbG9hdGFycmF5IGJ1ZiB+cG9zX3JlZiA9XG4gIGJpbl9yZWFkX2Zsb2F0X2FycmF5X2dlblxuICAgIH5jcmVhdGU6RmxvYXQuQXJyYXkuY3JlYXRlXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfYnVmX2Zsb2F0YXJyYXlcbiAgICBidWZcbiAgICB+cG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zX3JlZiA9XG4gIGJpbl9yZWFkX2Zsb2F0X2FycmF5X2dlblxuICAgIH5jcmVhdGU6QXJyYXkuY3JlYXRlX2Zsb2F0XG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfYnVmX2Zsb2F0X2FycmF5XG4gICAgYnVmXG4gICAgfnBvc19yZWZcbjs7XG5cbmxldCBiaW5fcmVhZF9hcnJheSAodHlwZSBhKSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBpZiAoT2JqLm1hZ2ljIChiaW5fcmVhZF9lbCA6IGEgcmVhZGVyKSA6IGZsb2F0IHJlYWRlcikgPT0gYmluX3JlYWRfZmxvYXRcbiAgdGhlbiAoT2JqLm1hZ2ljIChiaW5fcmVhZF9mbG9hdF9hcnJheSBidWYgfnBvc19yZWYgOiBmbG9hdCBhcnJheSkgOiBhIGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgc3RhcnRfcG9zID0gIXBvc19yZWYgaW5cbiAgICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiBbfHxdXG4gICAgZWxzZSAoXG4gICAgICBpZiBhcmNoX3NpeHR5Zm91clxuICAgICAgdGhlbiAoXG4gICAgICAgIGlmIGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gICAgICAgIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgc3RhcnRfcG9zKVxuICAgICAgZWxzZSBpZiBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aCAvIDJcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbWF5YmVfZmxvYXQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGVsID0gYmluX3JlYWRfZWwgZHVtbXlfZmxvYXRfYnVmIH5wb3NfcmVmOihyZWYgMCkgaW5cbiAgICAgICAgICAgIFNvbWUgZWxcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggbWF5YmVfZmxvYXQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aFxuICAgICAgICAgIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgc3RhcnRfcG9zXG4gICAgICAgIHwgU29tZSBlbCAtPlxuICAgICAgICAgIGlmIE9iai50YWcgKE9iai5yZXByIGVsKSA9IE9iai5kb3VibGVfdGFnIHx8IGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBzdGFydF9wb3MpO1xuICAgICAgbGV0IGZpcnN0ID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gICAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBsZW4gZmlyc3QgaW5cbiAgICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHJlcyBpIGVsXG4gICAgICBkb25lO1xuICAgICAgcmVzKSlcbjs7XG5cbmxldCBiaW5fcmVhZF9oYXNodGJsIGJpbl9yZWFkX2tleSBiaW5fcmVhZF92YWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBodGJsID0gSGFzaHRibC5jcmVhdGUgbGVuIGluXG4gIGxldCByZWFkX2t2X3BhaXIgPSBiaW5fcmVhZF9wYWlyIGJpbl9yZWFkX2tleSBiaW5fcmVhZF92YWwgaW5cbiAgbGV0IGVscyA9IGJpbl9yZWFkX25fcmV2X2xpc3QgcmVhZF9rdl9wYWlyIGJ1ZiB+cG9zX3JlZiBsZW4gaW5cbiAgY29weV9odGJsX2xpc3QgaHRibCBlbHNcbjs7XG5cbmV4dGVybmFsIGJ1Zl9vZl92ZWMzMiA6IHZlYzMyIC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl92ZWM2NCA6IHZlYzY0IC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl9tYXQzMiA6IG1hdDMyIC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl9tYXQ2NCA6IG1hdDY0IC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcblxubGV0IGJpbl9yZWFkX2Zsb2F0MzJfdmVjIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDQgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0IGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl92ZWMzMiB2ZWMpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHZlY1xuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0NjRfdmVjIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDY0IGZvcnRyYW5fbGF5b3V0IGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl92ZWM2NCB2ZWMpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHZlY1xuOztcblxubGV0IGJpbl9yZWFkX3ZlYyA9IGJpbl9yZWFkX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fcmVhZF9mbG9hdDMyX21hdCBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuMSA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBsZW4yID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDQgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbWF0ID0gQXJyYXkyLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0IGxlbjEgbGVuMiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl9tYXQzMiBtYXQpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG1hdFxuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0NjRfbWF0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4xID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IGxlbjIgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogOCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBtYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXQgbGVuMSBsZW4yIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX21hdDY0IG1hdCkgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbWF0XG47O1xuXG5sZXQgYmluX3JlYWRfbWF0ID0gYmluX3JlYWRfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl9yZWFkX2JpZ3N0cmluZyBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBzdHIgPSBjcmVhdGVfYnVmIGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6c3RyIH5kc3RfcG9zOjAgfmxlbjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBzdHJcbjs7XG5cbmxldCBiaW5fcmVhZF92YXJpYW50X2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgKCogW25dIG11c3QgY29udGFpbiBhbiBpbnRlZ2VyIGFscmVhZHkgZW5jb2RlZCwgaS5lLiBbbiA9IDIgKiBrICsgMV0uICopXG4gIGlmIEludDMyLmxvZ2FuZCBuIDFsID0gMGxcbiAgdGhlbiByYWlzZSAoUmVhZF9lcnJvciAoUmVhZEVycm9yLlZhcmlhbnRfdGFnLCBwb3MpKVxuICBlbHNlIChcbiAgICAoKiBXZSBzaGlmdCBpdCBieSBvbmUgYml0IHRvIHRoZSByaWdodCBzZSB3ZSBnZXQgYmFjayBbMiAqIGsgKyAxXSBpbiB0aGUgZW5kLiAqKVxuICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICBJbnQzMi50b19pbnQgKEludDMyLnNoaWZ0X3JpZ2h0IG4gMSkpXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzhiaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICB1bnNhZmVfZ2V0OCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzE2Yml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDE2bGVfdW5zaWduZWQgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX2ludF8zMmJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQzMiBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX2ludF82NGJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQ2NCBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX2ludDY0X2JpdHMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazE2X2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrMzJfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJiZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDMyIHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazMyX2ludDMyIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDMyYmUgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcms2NF9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGJlIGJ1ZiBwb3MgaW5cbiAgc2FmZV9pbnRfb2ZfaW50NjQgcG9zIG5cbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrNjRfaW50NjQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0NjRiZSBidWYgcG9zXG47O1xuXG5bJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDA3LCAwKV1cblxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDMyIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX3N0cmluZ19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX3N0cmluZ19zZXQ2NHVcIlxuXG5bJSVlbHNlXVxuXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9ieXRlc19zZXQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuXG5bJSVlbmRpZl1cblxubGV0IGJpbl9yZWFkX21kNSBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMTYgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gKFxuICAgIGxldCBhID0gdW5zYWZlX2dldDY0IGJ1ZiBwb3MgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9nZXQ2NCBidWYgKHBvcyArIDgpIGluXG4gICAgdW5zYWZlX2J5dGVzX3NldDY0IHJlcyAwIGE7XG4gICAgdW5zYWZlX2J5dGVzX3NldDY0IHJlcyA4IGIpXG4gIGVsc2UgKFxuICAgIGxldCBhID0gdW5zYWZlX2dldDMyIGJ1ZiBwb3MgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9nZXQzMiBidWYgKHBvcyArIDQpIGluXG4gICAgbGV0IGMgPSB1bnNhZmVfZ2V0MzIgYnVmIChwb3MgKyA4KSBpblxuICAgIGxldCBkID0gdW5zYWZlX2dldDMyIGJ1ZiAocG9zICsgMTIpIGluXG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyAwIGE7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyA0IGI7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyA4IGM7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyAxMiBkKTtcbiAgTWQ1X2xpYi51bnNhZmVfb2ZfYmluYXJ5IChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlcylcbjs7XG4iLCJpbmNsdWRlIEJpbl9zaGFwZVxuXG4oKiBuZXcgYmFzZSBzaGFwZXMgKilcbmxldCBiaW5fc2hhcGVfdW5pdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInVuaXRcIikgW11cbmxldCBiaW5fc2hhcGVfYm9vbCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImJvb2xcIikgW11cbmxldCBiaW5fc2hhcGVfc3RyaW5nID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwic3RyaW5nXCIpIFtdXG5sZXQgYmluX3NoYXBlX2J5dGVzID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYnl0ZXNcIikgW11cbmxldCBiaW5fc2hhcGVfY2hhciA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImNoYXJcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50MzIgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQzMlwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQ2MyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludDYzXCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDY0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50NjRcIikgW11cbmxldCBiaW5fc2hhcGVfbmF0aXZlaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmF0aXZlaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25hdDAgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuYXQwXCIpIFtdXG5sZXQgYmluX3NoYXBlX2RpZ2VzdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImRpZ2VzdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdDMyX3ZlYyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0MzJfdmVjXCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfdmVjID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQ2NF92ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfdmVjID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwidmVjXCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfbWF0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQzMl9tYXRcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDY0X21hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9tYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJtYXRcIikgW11cbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYmlnc3RyaW5nXCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0YXJyYXkgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdGFycmF5XCIpIFtdXG5sZXQgYmluX3NoYXBlX3ZhcmlhbnRfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwidmFyaWFudF9pbnRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzhiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfOGJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfMTZiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfMTZiaXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzMyYml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XzMyYml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludF82NGJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF82NGJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQ2NF9iaXRzID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50NjRfYml0c1wiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMTZfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazE2X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazMyX2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzIgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMzJfaW50MzJcIikgW11cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcms2NF9pbnRcIikgW11cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazY0X2ludDY0XCIpIFtdXG5cbigqIG5ldyBzaGFwZSBjb25zdHJ1Y3RvcnMgKilcbmxldCBiaW5fc2hhcGVfcmVmIHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJyZWZcIikgWyB4IF1cbmxldCBiaW5fc2hhcGVfb3B0aW9uIHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJvcHRpb25cIikgWyB4IF1cbmxldCBiaW5fc2hhcGVfbGlzdCB4ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibGlzdFwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9hcnJheSB4ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYXJyYXlcIikgWyB4IF1cbmxldCBiaW5fc2hhcGVfaGFzaHRibCB4IHkgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJoYXNodGJsXCIpIFsgeDsgeSBdXG5cbigqIHNoYXBlLWNvbnN0cnVjdG9yIGFsaWFzZXMgKilcbmxldCBiaW5fc2hhcGVfbGF6eSB4ID0geFxubGV0IGJpbl9zaGFwZV9wYWlyIHggeSA9IHR1cGxlIFsgeDsgeSBdXG5sZXQgYmluX3NoYXBlX3RyaXBsZSB4IHkgeiA9IHR1cGxlIFsgeDsgeTsgeiBdXG4iLCIoKiBTaXplOiBjb21wdXRlIHNpemUgb2YgdmFsdWVzIGluIHRoZSBiaW5hcnkgcHJvdG9jb2wuICopXG5cbm9wZW4gQmlnYXJyYXlcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZSA9IDY0XG5cbm9wZW4gQ29tbW9uXG5cbm1vZHVsZSBNYXhpbXVtID0gc3RydWN0XG4gIGxldCBiaW5fc2l6ZV91bml0ID0gMVxuICBsZXQgYmluX3NpemVfYm9vbCA9IDFcbiAgbGV0IGJpbl9zaXplX2NoYXIgPSAxXG4gIGxldCBiaW5fc2l6ZV9tZDUgPSAxNlxuICBsZXQgYmluX3NpemVfaW50X25hdDAgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIDkgZWxzZSA1XG4gIGxldCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIDkgZWxzZSA1XG4gIGxldCBiaW5fc2l6ZV9pbnQgPSBtYXggYmluX3NpemVfaW50X25hdDAgYmluX3NpemVfaW50X25lZ2F0aXZlXG4gIGxldCBiaW5fc2l6ZV9mbG9hdCA9IDhcbiAgbGV0IGJpbl9zaXplX2ludDMyID0gNVxuICBsZXQgYmluX3NpemVfaW50NjQgPSA5XG4gIGxldCBiaW5fc2l6ZV9uYXRpdmVpbnQgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX25hdDAgPSBiaW5fc2l6ZV9pbnRfbmF0MFxuICBsZXQgYmluX3NpemVfdmFyaWFudF9pbnQgPSA0XG4gIGxldCBiaW5fc2l6ZV9pbnRfOGJpdCA9IDFcbiAgbGV0IGJpbl9zaXplX2ludF8xNmJpdCA9IDJcbiAgbGV0IGJpbl9zaXplX2ludF8zMmJpdCA9IDRcbiAgbGV0IGJpbl9zaXplX2ludF82NGJpdCA9IDhcbiAgbGV0IGJpbl9zaXplX2ludDY0X2JpdHMgPSA4XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMTZfaW50ID0gMlxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludCA9IDRcbiAgbGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQzMiA9IDRcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQgPSA4XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQgPSA4XG5lbmRcblxubW9kdWxlIE1pbmltdW0gPSBzdHJ1Y3RcbiAgbGV0IGJpbl9zaXplX3VuaXQgPSBNYXhpbXVtLmJpbl9zaXplX3VuaXRcbiAgbGV0IGJpbl9zaXplX2Jvb2wgPSBNYXhpbXVtLmJpbl9zaXplX2Jvb2xcbiAgbGV0IGJpbl9zaXplX2NoYXIgPSBNYXhpbXVtLmJpbl9zaXplX2NoYXJcbiAgbGV0IGJpbl9zaXplX21kNSA9IDE2XG4gIGxldCBiaW5fc2l6ZV9pbnRfbmF0MCA9IDFcbiAgbGV0IGJpbl9zaXplX2ludF9uZWdhdGl2ZSA9IDJcbiAgbGV0IGJpbl9zaXplX2ludCA9IG1pbiBiaW5fc2l6ZV9pbnRfbmF0MCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmVcbiAgbGV0IGJpbl9zaXplX2Zsb2F0ID0gTWF4aW11bS5iaW5fc2l6ZV9mbG9hdFxuICBsZXQgYmluX3NpemVfaW50MzIgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX2ludDY0ID0gYmluX3NpemVfaW50XG4gIGxldCBiaW5fc2l6ZV9uYXRpdmVpbnQgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX25hdDAgPSAxXG4gIGxldCBiaW5fc2l6ZV9yZWYgPSAxXG4gIGxldCBiaW5fc2l6ZV9sYXp5X3QgPSAxXG4gIGxldCBiaW5fc2l6ZV9vcHRpb24gPSAxXG4gIGxldCBiaW5fc2l6ZV9wYWlyID0gMSArIDFcbiAgbGV0IGJpbl9zaXplX3RyaXBsZSA9IDEgKyAxICsgMVxuICBsZXQgYmluX3NpemVfbGVuID0gYmluX3NpemVfbmF0MFxuICBsZXQgYmluX3NpemVfbGlzdCA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfYXJyYXkgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2hhc2h0YmwgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX3N0cmluZyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfYnl0ZXMgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX3ZlYyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfZmxvYXQzMl92ZWMgPSBiaW5fc2l6ZV92ZWNcbiAgbGV0IGJpbl9zaXplX2Zsb2F0NjRfdmVjID0gYmluX3NpemVfdmVjXG4gIGxldCBiaW5fc2l6ZV9tYXQgPSBiaW5fc2l6ZV9sZW4gKyBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0MzJfbWF0ID0gYmluX3NpemVfbWF0XG4gIGxldCBiaW5fc2l6ZV9mbG9hdDY0X21hdCA9IGJpbl9zaXplX21hdFxuICBsZXQgYmluX3NpemVfYmlnc3RyaW5nID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdGFycmF5ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdF9hcnJheSA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfdmFyaWFudF9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX3ZhcmlhbnRfaW50XG4gIGxldCBiaW5fc2l6ZV9pbnRfOGJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzhiaXRcbiAgbGV0IGJpbl9zaXplX2ludF8xNmJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzE2Yml0XG4gIGxldCBiaW5fc2l6ZV9pbnRfMzJiaXQgPSBNYXhpbXVtLmJpbl9zaXplX2ludF8zMmJpdFxuICBsZXQgYmluX3NpemVfaW50XzY0Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfNjRiaXRcbiAgbGV0IGJpbl9zaXplX2ludDY0X2JpdHMgPSBNYXhpbXVtLmJpbl9zaXplX2ludDY0X2JpdHNcbiAgbGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcmsxNl9pbnRcbiAgbGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcmszMl9pbnRcbiAgbGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQzMiA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazMyX2ludDMyXG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50ID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrNjRfaW50XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcms2NF9pbnQ2NFxuZW5kXG5cbnR5cGUgJ2Egc2l6ZXIgPSAnYSAtPiBpbnRcbnR5cGUgKCdhLCAnYikgc2l6ZXIxID0gJ2Egc2l6ZXIgLT4gJ2Igc2l6ZXJcbnR5cGUgKCdhLCAnYiwgJ2MpIHNpemVyMiA9ICdhIHNpemVyIC0+ICgnYiwgJ2MpIHNpemVyMVxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNpemVyMyA9ICdhIHNpemVyIC0+ICgnYiwgJ2MsICdkKSBzaXplcjJcblxubGV0IGJpbl9zaXplX3VuaXQgKCkgPSAxXG5sZXQgYmluX3NpemVfYm9vbCBfID0gMVxuXG5sZXQgYmluX3NpemVfaW50X25hdDAgbiA9XG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIG4gPCAweDAwMDA4MDAwXG4gIHRoZW4gM1xuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gKCogMHg4MDAwMDAwMCAqKSAxIGxzbCAzMVxuICB0aGVuIDlcbiAgZWxzZSA1XG47O1xuXG5sZXQgYmluX3NpemVfaW50X25lZ2F0aXZlIG4gPVxuICBpZiBuID49IC0weDAwMDAwMDgwXG4gIHRoZW4gMlxuICBlbHNlIGlmIG4gPj0gLTB4MDAwMDgwMDBcbiAgdGhlbiAzXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA8ICgqIC0weDgwMDAwMDAwICopIC0oMSBsc2wgMzEpXG4gIHRoZW4gOVxuICBlbHNlIDVcbjs7XG5cbmxldCBiaW5fc2l6ZV9jaGFyIF8gPSAxXG5sZXQgYmluX3NpemVfaW50IG4gPSBpZiBuID49IDAgdGhlbiBiaW5fc2l6ZV9pbnRfbmF0MCBuIGVsc2UgYmluX3NpemVfaW50X25lZ2F0aXZlIG5cblxubGV0IGJpbl9zaXplX25hdDAgbmF0MCA9XG4gIGxldCBuID0gKG5hdDAgOiBOYXQwLnQgOj4gaW50KSBpblxuICBpZiBuIDwgMHgwMDAwMDA4MFxuICB0aGVuIDFcbiAgZWxzZSBpZiBuIDwgMHgwMDAxMDAwMFxuICB0aGVuIDNcbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuID49ICgqIDB4MTAwMDAwMDAwICopIDEgbHNsIDMyXG4gIHRoZW4gOVxuICBlbHNlIDVcbjs7XG5cbmxldCBiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMgbGVuID1cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBzaXplX2xlbiA9IGJpbl9zaXplX25hdDAgcGxlbiBpblxuICBzaXplX2xlbiArIGxlblxuOztcblxubGV0IGJpbl9zaXplX3N0cmluZyBzdHIgPSBiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMgKFN0cmluZy5sZW5ndGggc3RyKVxubGV0IGJpbl9zaXplX2J5dGVzIHN0ciA9IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyAoQnl0ZXMubGVuZ3RoIHN0cilcbmxldCBiaW5fc2l6ZV9tZDUgXyA9IDE2XG5cbmxldCBiaW5fc2l6ZV9mbG9hdCBmID1cbiAgKCogSWYgd2UganVzdCBpZ25vcmUgdGhlIGFyZ3VtZW50IHRoZSBjb21waWxlciB3aWxsIHN0aWxsIHJlcXVpcmUgaXQgdG8gZXhpc3QgYW5kIGJlXG4gICAgIGJveGVkLiBUaGlzIG1lYW5zIHRoYXQgaWYgZm9yIGluc3RhbmNlIHdlIGNhbGwgdGhpcyBmb3IgYSBmaWVsZCBvZiBhIGZsb2F0IHJlY29yZCxcbiAgICAgdGhlIGNvbXBpbGVyIHdpbGwgYWxsb2NhdGUgdGhlIGZsb2F0IGZvciBub3RoaW5nLlxuXG4gICAgIFdpdGggdGhpcyBsaW5lIHRoZSBjb21waWxlciByZWFsbHkgaWdub3JlcyB0aGUgZmxvYXQuICopXG4gIGlnbm9yZSAodHJ1bmNhdGUgZik7XG4gIDhcbjs7XG5cbmxldCBiaW5fc2l6ZV9pbnQzMiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIG4gLT4gYmluX3NpemVfaW50IChJbnQzMi50b19pbnQgbilcbiAgZWxzZVxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4MDAwMDgwMDBsIHx8IG4gPCAtMHgwMDAwODAwMGwgdGhlbiA1IGVsc2UgYmluX3NpemVfaW50IChJbnQzMi50b19pbnQgbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9pbnQ2NCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBmdW4gbiAtPlxuICAgICAgaWYgbiA+PSAweDgwMDAwMDAwTCB8fCBuIDwgLTB4ODAwMDAwMDBMIHRoZW4gOSBlbHNlIGJpbl9zaXplX2ludCAoSW50NjQudG9faW50IG4pXG4gIGVsc2VcbiAgICBmdW4gbiAtPlxuICAgICAgaWYgbiA+PSAweDgwMDAwMDAwTCB8fCBuIDwgLTB4ODAwMDAwMDBMIHRoZW4gOSBlbHNlIGJpbl9zaXplX2ludDMyIChJbnQ2NC50b19pbnQzMiBuKVxuOztcblxubGV0IGJpbl9zaXplX25hdGl2ZWludCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIG4gLT4gYmluX3NpemVfaW50NjQgKEludDY0Lm9mX25hdGl2ZWludCBuKVxuICBlbHNlIGZ1biBuIC0+IGJpbl9zaXplX2ludDMyIChOYXRpdmVpbnQudG9faW50MzIgbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9yZWYgYmluX3NpemVfZWwgciA9IGJpbl9zaXplX2VsICFyXG5sZXQgYmluX3NpemVfbGF6eV90IGJpbl9zaXplX2VsIGx2ID0gYmluX3NpemVfZWwgKExhenkuZm9yY2UgbHYpXG5sZXQgYmluX3NpemVfbGF6eSA9IGJpbl9zaXplX2xhenlfdFxuXG5sZXQgYmluX3NpemVfb3B0aW9uIGJpbl9zaXplX2VsID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IDFcbiAgfCBTb21lIHYgLT4gMSArIGJpbl9zaXplX2VsIHZcbjs7XG5cbmxldCBiaW5fc2l6ZV9wYWlyIGJpbl9zaXplX2EgYmluX3NpemVfYiAoYSwgYikgPSBiaW5fc2l6ZV9hIGEgKyBiaW5fc2l6ZV9iIGJcblxubGV0IGJpbl9zaXplX3RyaXBsZSBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgYmluX3NpemVfYyAoYSwgYiwgYykgPVxuICBiaW5fc2l6ZV9hIGEgKyBiaW5fc2l6ZV9iIGIgKyBiaW5fc2l6ZV9jIGNcbjs7XG5cbmxldCBiaW5fc2l6ZV9saXN0ID1cbiAgbGV0IHJlYyBsb29wIH5iaW5fc2l6ZV9lbCB+c2l6ZV9hY2Mgfmxlbl9hY2MgbHN0ID1cbiAgICBtYXRjaCBsc3Qgd2l0aFxuICAgIHwgW10gLT4gc2l6ZV9hY2MgKyBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuX2FjYylcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBsb29wIH5iaW5fc2l6ZV9lbCB+c2l6ZV9hY2M6KHNpemVfYWNjICsgYmluX3NpemVfZWwgaGQpIH5sZW5fYWNjOihsZW5fYWNjICsgMSkgdGxcbiAgaW5cbiAgZnVuIGJpbl9zaXplX2VsIGxzdCAtPiBsb29wIH5iaW5fc2l6ZV9lbCB+c2l6ZV9hY2M6MCB+bGVuX2FjYzowIGxzdFxuOztcblxubGV0IGJpbl9zaXplX2xlbiBsZW4gPVxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgYmluX3NpemVfbmF0MCBwbGVuXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXRhcnJheSBhciA9XG4gIGxldCBsZW4gPSBGbG9hdC5BcnJheS5sZW5ndGggYXIgaW5cbiAgYmluX3NpemVfbGVuIGxlbiArICg4ICogbGVuKVxuOztcblxubGV0IGJpbl9zaXplX2Zsb2F0X2FycmF5IGFyID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKDggKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfYXJyYXlfbG9vcCBiaW5fc2l6ZV9lbCBhciB+dG90YWxfbGVuIH5uID1cbiAgbGV0IHRvdGFsX2xlbl9yZWYgPSByZWYgdG90YWxfbGVuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIGxldCBlbCA9IEFycmF5LnVuc2FmZV9nZXQgYXIgaSBpblxuICAgIHRvdGFsX2xlbl9yZWYgOj0gIXRvdGFsX2xlbl9yZWYgKyBiaW5fc2l6ZV9lbCBlbFxuICBkb25lO1xuICAhdG90YWxfbGVuX3JlZlxuOztcblxubGV0IGJpbl9zaXplX2FycmF5ICh0eXBlIGEpIGJpbl9zaXplX2VsIGFyID1cbiAgaWYgKE9iai5tYWdpYyAoYmluX3NpemVfZWwgOiBhIHNpemVyKSA6IGZsb2F0IHNpemVyKSA9PSBiaW5fc2l6ZV9mbG9hdFxuICB0aGVuIGJpbl9zaXplX2Zsb2F0X2FycmF5IChPYmoubWFnaWMgKGFyIDogYSBhcnJheSkgOiBmbG9hdCBhcnJheSlcbiAgZWxzZSAoXG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggYXIgaW5cbiAgICBsZXQgdG90YWxfbGVuID0gYmluX3NpemVfbGVuIG4gaW5cbiAgICBiaW5fc2l6ZV9hcnJheV9sb29wIGJpbl9zaXplX2VsIGFyIH50b3RhbF9sZW4gfm4pXG47O1xuXG5sZXQgYmluX3NpemVfaGFzaHRibCBiaW5fc2l6ZV9rZXkgYmluX3NpemVfdmFsIGh0YmwgPVxuICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gIGxldCBjb2xsX2h0YmwgayB2IHRvdGFsX2xlbiA9XG4gICAgaW5jciBjbnRfcmVmO1xuICAgIHRvdGFsX2xlbiArIGJpbl9zaXplX2tleSBrICsgYmluX3NpemVfdmFsIHZcbiAgaW5cbiAgbGV0IGxlbiA9IEhhc2h0YmwubGVuZ3RoIGh0YmwgaW5cbiAgbGV0IHRvdGFsX2xlbiA9IEhhc2h0YmwuZm9sZCBjb2xsX2h0YmwgaHRibCAoYmluX3NpemVfbGVuIGxlbikgaW5cbiAgaWYgIWNudF9yZWYgPD4gbGVuIHRoZW4gcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gXCJiaW5fc2l6ZV9oYXNodGJsXCI7XG4gIHRvdGFsX2xlblxuOztcblxubGV0IGJpbl9zaXplX2dlbl92ZWMgdmVjIG11bHRpcGxpZXIgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSB2ZWMgaW5cbiAgYmluX3NpemVfbGVuIGxlbiArIChtdWx0aXBsaWVyICogbGVuKVxuOztcblxubGV0IGJpbl9zaXplX2Zsb2F0MzJfdmVjIHZlYyA9IGJpbl9zaXplX2dlbl92ZWMgdmVjIDRcbmxldCBiaW5fc2l6ZV9mbG9hdDY0X3ZlYyB2ZWMgPSBiaW5fc2l6ZV9nZW5fdmVjIHZlYyA4XG5sZXQgYmluX3NpemVfdmVjID0gYmluX3NpemVfZmxvYXQ2NF92ZWNcblxubGV0IGJpbl9zaXplX2dlbl9tYXQgbWF0IG11bHRpcGxpZXIgPVxuICBsZXQgZGltMSA9IEFycmF5Mi5kaW0xIG1hdCBpblxuICBsZXQgZGltMiA9IEFycmF5Mi5kaW0yIG1hdCBpblxuICBsZXQgc2l6ZSA9IGRpbTEgKiBkaW0yIGluXG4gIGJpbl9zaXplX2xlbiBkaW0xICsgYmluX3NpemVfbGVuIGRpbTIgKyAobXVsdGlwbGllciAqIHNpemUpXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXQzMl9tYXQgbWF0ID0gYmluX3NpemVfZ2VuX21hdCBtYXQgNFxubGV0IGJpbl9zaXplX2Zsb2F0NjRfbWF0IG1hdCA9IGJpbl9zaXplX2dlbl9tYXQgbWF0IDhcbmxldCBiaW5fc2l6ZV9tYXQgPSBiaW5fc2l6ZV9mbG9hdDY0X21hdFxubGV0IGJpbl9zaXplX2JpZ3N0cmluZyBidWYgPSBiaW5fc2l6ZV9nZW5fdmVjIGJ1ZiAxXG5sZXQgYmluX3NpemVfdmFyaWFudF9pbnQgXyA9IDRcbmxldCBiaW5fc2l6ZV9pbnRfOGJpdCBfID0gMVxubGV0IGJpbl9zaXplX2ludF8xNmJpdCBfID0gMlxubGV0IGJpbl9zaXplX2ludF8zMmJpdCBfID0gNFxubGV0IGJpbl9zaXplX2ludF82NGJpdCBfID0gOFxubGV0IGJpbl9zaXplX2ludDY0X2JpdHMgXyA9IDhcbmxldCBiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IF8gPSAyXG5sZXQgYmluX3NpemVfbmV0d29yazMyX2ludCBfID0gNFxubGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQzMiBfID0gNFxubGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQgXyA9IDhcbmxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQgXyA9IDhcbiIsIigqIFRwX2NsYXNzOiBzaXplcnMsIHdyaXRlcnMsIGFuZCByZWFkZXJzIGluIHJlY29yZHMgKilcblxudHlwZSAnYSB3cml0ZXIgPVxuICB7IHNpemUgOiAnYSBTaXplLnNpemVyXG4gIDsgd3JpdGUgOiAnYSBXcml0ZS53cml0ZXJcbiAgfVxuXG50eXBlICdhIHJlYWRlciA9XG4gIHsgcmVhZCA6ICdhIFJlYWQucmVhZGVyXG4gIDsgdnRhZ19yZWFkIDogKGludCAtPiAnYSkgUmVhZC5yZWFkZXJcbiAgfVxuXG50eXBlICdhIHQgPVxuICB7IHNoYXBlIDogU2hhcGUudFxuICA7IHdyaXRlciA6ICdhIHdyaXRlclxuICA7IHJlYWRlciA6ICdhIHJlYWRlclxuICB9XG5cbnR5cGUgJ2Egd3JpdGVyMCA9ICdhIHdyaXRlclxudHlwZSAnYSByZWFkZXIwID0gJ2EgcmVhZGVyXG50eXBlICdhIHQwID0gJ2EgdFxuXG5tb2R1bGUgUzEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB3cml0ZXIgPSAnYSB3cml0ZXIwIC0+ICdiIHdyaXRlcjBcbiAgdHlwZSAoJ2EsICdiKSByZWFkZXIgPSAnYSByZWFkZXIwIC0+ICdiIHJlYWRlcjBcbiAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgdDAgLT4gJ2IgdDBcbmVuZFxuXG5tb2R1bGUgUzIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgd3JpdGVyID0gJ2Egd3JpdGVyMCAtPiAoJ2IsICdjKSBTMS53cml0ZXJcbiAgdHlwZSAoJ2EsICdiLCAnYykgcmVhZGVyID0gJ2EgcmVhZGVyMCAtPiAoJ2IsICdjKSBTMS5yZWFkZXJcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdhIHQwIC0+ICgnYiwgJ2MpIFMxLnRcbmVuZFxuXG5tb2R1bGUgUzMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHdyaXRlciA9ICdhIHdyaXRlcjAgLT4gKCdiLCAnYywgJ2QpIFMyLndyaXRlclxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgcmVhZGVyID0gJ2EgcmVhZGVyMCAtPiAoJ2IsICdjLCAnZCkgUzIucmVhZGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ID0gJ2EgdDAgLT4gKCdiLCAnYywgJ2QpIFMyLnRcbmVuZFxuXG5sZXQgdmFyaWFudF93cm9uZ190eXBlIG5hbWUgX2J1ZiB+cG9zX3JlZiBfeCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgbmFtZSAhcG9zX3JlZlxuOztcblxuKCokIG9wZW4gQmluX3Byb3RfY2luYXBzLlN0ciAqKVxuKCokIG1rX2Jhc2UgXCJ1bml0XCIgKilcbmxldCBiaW5fd3JpdGVyX3VuaXQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX3VuaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3VuaXQgfVxubGV0IGJpbl9yZWFkZXJfdW5pdCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfdW5pdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidW5pdFwiIH1cbmxldCBiaW5fc2hhcGVfdW5pdCA9IFNoYXBlLmJpbl9zaGFwZV91bml0XG5cbmxldCBiaW5fdW5pdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfdW5pdDsgd3JpdGVyID0gYmluX3dyaXRlcl91bml0OyByZWFkZXIgPSBiaW5fcmVhZGVyX3VuaXQgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJib29sXCIgKilcbmxldCBiaW5fd3JpdGVyX2Jvb2wgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Jvb2w7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Jvb2wgfVxubGV0IGJpbl9yZWFkZXJfYm9vbCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfYm9vbDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiYm9vbFwiIH1cbmxldCBiaW5fc2hhcGVfYm9vbCA9IFNoYXBlLmJpbl9zaGFwZV9ib29sXG5cbmxldCBiaW5fYm9vbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYm9vbDsgd3JpdGVyID0gYmluX3dyaXRlcl9ib29sOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Jvb2wgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJzdHJpbmdcIiAqKVxubGV0IGJpbl93cml0ZXJfc3RyaW5nID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9zdHJpbmc7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3N0cmluZyB9XG5cbmxldCBiaW5fcmVhZGVyX3N0cmluZyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfc3RyaW5nOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJzdHJpbmdcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3N0cmluZyA9IFNoYXBlLmJpbl9zaGFwZV9zdHJpbmdcblxubGV0IGJpbl9zdHJpbmcgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3N0cmluZzsgd3JpdGVyID0gYmluX3dyaXRlcl9zdHJpbmc7IHJlYWRlciA9IGJpbl9yZWFkZXJfc3RyaW5nIH1cbjs7XG5cbigqJCBta19iYXNlIFwiYnl0ZXNcIiAqKVxubGV0IGJpbl93cml0ZXJfYnl0ZXMgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2J5dGVzOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9ieXRlcyB9XG5cbmxldCBiaW5fcmVhZGVyX2J5dGVzID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9ieXRlczsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiYnl0ZXNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2J5dGVzID0gU2hhcGUuYmluX3NoYXBlX2J5dGVzXG5cbmxldCBiaW5fYnl0ZXMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2J5dGVzOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2J5dGVzOyByZWFkZXIgPSBiaW5fcmVhZGVyX2J5dGVzIH1cbjs7XG5cbigqJCBta19iYXNlIFwiY2hhclwiICopXG5sZXQgYmluX3dyaXRlcl9jaGFyID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9jaGFyOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9jaGFyIH1cbmxldCBiaW5fcmVhZGVyX2NoYXIgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2NoYXI7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImNoYXJcIiB9XG5sZXQgYmluX3NoYXBlX2NoYXIgPSBTaGFwZS5iaW5fc2hhcGVfY2hhclxuXG5sZXQgYmluX2NoYXIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2NoYXI7IHdyaXRlciA9IGJpbl93cml0ZXJfY2hhcjsgcmVhZGVyID0gYmluX3JlYWRlcl9jaGFyIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQgfVxubGV0IGJpbl9yZWFkZXJfaW50ID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludFwiIH1cbmxldCBiaW5fc2hhcGVfaW50ID0gU2hhcGUuYmluX3NoYXBlX2ludFxubGV0IGJpbl9pbnQgPSB7IHNoYXBlID0gYmluX3NoYXBlX2ludDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50IH1cblxuKCokIG1rX2Jhc2UgXCJmbG9hdFwiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0IH1cblxubGV0IGJpbl9yZWFkZXJfZmxvYXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXRcblxubGV0IGJpbl9mbG9hdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQ7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnQzMlwiICopXG5sZXQgYmluX3dyaXRlcl9pbnQzMiA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50MzI7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludDMyIH1cblxubGV0IGJpbl9yZWFkZXJfaW50MzIgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDMyOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnQzMlwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50MzIgPSBTaGFwZS5iaW5fc2hhcGVfaW50MzJcblxubGV0IGJpbl9pbnQzMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50MzI7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50MzI7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50MzIgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnQ2NFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnQ2NCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50NjQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludDY0IH1cblxubGV0IGJpbl9yZWFkZXJfaW50NjQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDY0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnQ2NFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50NjQgPSBTaGFwZS5iaW5fc2hhcGVfaW50NjRcblxubGV0IGJpbl9pbnQ2NCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50NjQ7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50NjQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50NjQgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuYXRpdmVpbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmF0aXZlaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uYXRpdmVpbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25hdGl2ZWludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uYXRpdmVpbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25hdGl2ZWludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmF0aXZlaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uYXRpdmVpbnQgPSBTaGFwZS5iaW5fc2hhcGVfbmF0aXZlaW50XG5cbmxldCBiaW5fbmF0aXZlaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uYXRpdmVpbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25hdGl2ZWludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmF0aXZlaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmF0MFwiICopXG5sZXQgYmluX3dyaXRlcl9uYXQwID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uYXQwOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uYXQwIH1cbmxldCBiaW5fcmVhZGVyX25hdDAgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25hdDA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5hdDBcIiB9XG5sZXQgYmluX3NoYXBlX25hdDAgPSBTaGFwZS5iaW5fc2hhcGVfbmF0MFxuXG5sZXQgYmluX25hdDAgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25hdDA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmF0MDsgcmVhZGVyID0gYmluX3JlYWRlcl9uYXQwIH1cbjs7XG5cbigqJCBta19iYXNlMSBcInJlZlwiICopXG5sZXQgYmluX3dyaXRlcl9yZWYgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX3JlZiBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfcmVmIGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfcmVmIGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX3JlZiBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInJlZlwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfcmVmIHgxID0gU2hhcGUuYmluX3NoYXBlX3JlZiB4MVxuXG5sZXQgYmluX3JlZiBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3JlZiBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3JlZiBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9yZWYgYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJsYXp5XCIgKilcbmxldCBiaW5fd3JpdGVyX2xhenkgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2xhenkgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX2xhenkgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9sYXp5IGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX2xhenkgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJsYXp5XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9sYXp5IHgxID0gU2hhcGUuYmluX3NoYXBlX2xhenkgeDFcblxubGV0IGJpbl9sYXp5IGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbGF6eSBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2xhenkgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbGF6eSBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcIm9wdGlvblwiICopXG5sZXQgYmluX3dyaXRlcl9vcHRpb24gYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX29wdGlvbiBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfb3B0aW9uIGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfb3B0aW9uIGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX29wdGlvbiBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm9wdGlvblwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfb3B0aW9uIHgxID0gU2hhcGUuYmluX3NoYXBlX29wdGlvbiB4MVxuXG5sZXQgYmluX29wdGlvbiBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX29wdGlvbiBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX29wdGlvbiBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9vcHRpb24gYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTIgXCJwYWlyXCIgKilcbmxldCBiaW5fd3JpdGVyX3BhaXIgYmluX3dyaXRlcl9lbDEgYmluX3dyaXRlcl9lbDIgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9wYWlyIGJpbl93cml0ZXJfZWwxLnNpemUgYmluX3dyaXRlcl9lbDIuc2l6ZSB2KVxuICA7IHdyaXRlID1cbiAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgV3JpdGUuYmluX3dyaXRlX3BhaXIgYmluX3dyaXRlcl9lbDEud3JpdGUgYmluX3dyaXRlcl9lbDIud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfcGFpciBiaW5fcmVhZGVyX2VsMSBiaW5fcmVhZGVyX2VsMiA9XG4gIHsgcmVhZCA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgUmVhZC5iaW5fcmVhZF9wYWlyIGJpbl9yZWFkZXJfZWwxLnJlYWQgYmluX3JlYWRlcl9lbDIucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwicGFpclwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfcGFpciB4MSB4MiA9IFNoYXBlLmJpbl9zaGFwZV9wYWlyIHgxIHgyXG5cbmxldCBiaW5fcGFpciBiaW5fZWwxIGJpbl9lbDIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3BhaXIgYmluX2VsMS5zaGFwZSBiaW5fZWwyLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9wYWlyIGJpbl9lbDEud3JpdGVyIGJpbl9lbDIud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9wYWlyIGJpbl9lbDEucmVhZGVyIGJpbl9lbDIucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMyBcInRyaXBsZVwiICopXG5sZXQgYmluX3dyaXRlcl90cmlwbGUgYmluX3dyaXRlcl9lbDEgYmluX3dyaXRlcl9lbDIgYmluX3dyaXRlcl9lbDMgPVxuICB7IHNpemUgPVxuICAgICAgKGZ1biB2IC0+XG4gICAgICAgICBTaXplLmJpbl9zaXplX3RyaXBsZSBiaW5fd3JpdGVyX2VsMS5zaXplIGJpbl93cml0ZXJfZWwyLnNpemUgYmluX3dyaXRlcl9lbDMuc2l6ZSB2KVxuICA7IHdyaXRlID1cbiAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgV3JpdGUuYmluX3dyaXRlX3RyaXBsZVxuICAgICAgICAgICBiaW5fd3JpdGVyX2VsMS53cml0ZVxuICAgICAgICAgICBiaW5fd3JpdGVyX2VsMi53cml0ZVxuICAgICAgICAgICBiaW5fd3JpdGVyX2VsMy53cml0ZVxuICAgICAgICAgICBidWZcbiAgICAgICAgICAgfnBvc1xuICAgICAgICAgICB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl90cmlwbGUgYmluX3JlYWRlcl9lbDEgYmluX3JlYWRlcl9lbDIgYmluX3JlYWRlcl9lbDMgPVxuICB7IHJlYWQgPVxuICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgIFJlYWQuYmluX3JlYWRfdHJpcGxlXG4gICAgICAgICAgIGJpbl9yZWFkZXJfZWwxLnJlYWRcbiAgICAgICAgICAgYmluX3JlYWRlcl9lbDIucmVhZFxuICAgICAgICAgICBiaW5fcmVhZGVyX2VsMy5yZWFkXG4gICAgICAgICAgIGJ1ZlxuICAgICAgICAgICB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ0cmlwbGVcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3RyaXBsZSB4MSB4MiB4MyA9IFNoYXBlLmJpbl9zaGFwZV90cmlwbGUgeDEgeDIgeDNcblxubGV0IGJpbl90cmlwbGUgYmluX2VsMSBiaW5fZWwyIGJpbl9lbDMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3RyaXBsZSBiaW5fZWwxLnNoYXBlIGJpbl9lbDIuc2hhcGUgYmluX2VsMy5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdHJpcGxlIGJpbl9lbDEud3JpdGVyIGJpbl9lbDIud3JpdGVyIGJpbl9lbDMud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl90cmlwbGUgYmluX2VsMS5yZWFkZXIgYmluX2VsMi5yZWFkZXIgYmluX2VsMy5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwibGlzdFwiICopXG5sZXQgYmluX3dyaXRlcl9saXN0IGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9saXN0IGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9saXN0IGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbGlzdCBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9saXN0IGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibGlzdFwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbGlzdCB4MSA9IFNoYXBlLmJpbl9zaGFwZV9saXN0IHgxXG5cbmxldCBiaW5fbGlzdCBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2xpc3QgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9saXN0IGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2xpc3QgYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJhcnJheVwiICopXG5sZXQgYmluX3dyaXRlcl9hcnJheSBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfYXJyYXkgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX2FycmF5IGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfYXJyYXkgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfYXJyYXkgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJhcnJheVwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfYXJyYXkgeDEgPSBTaGFwZS5iaW5fc2hhcGVfYXJyYXkgeDFcblxubGV0IGJpbl9hcnJheSBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2FycmF5IGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfYXJyYXkgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfYXJyYXkgYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTIgXCJoYXNodGJsXCIgKilcbmxldCBiaW5fd3JpdGVyX2hhc2h0YmwgYmluX3dyaXRlcl9lbDEgYmluX3dyaXRlcl9lbDIgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9oYXNodGJsIGJpbl93cml0ZXJfZWwxLnNpemUgYmluX3dyaXRlcl9lbDIuc2l6ZSB2KVxuICA7IHdyaXRlID1cbiAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgV3JpdGUuYmluX3dyaXRlX2hhc2h0YmwgYmluX3dyaXRlcl9lbDEud3JpdGUgYmluX3dyaXRlcl9lbDIud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaGFzaHRibCBiaW5fcmVhZGVyX2VsMSBiaW5fcmVhZGVyX2VsMiA9XG4gIHsgcmVhZCA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgUmVhZC5iaW5fcmVhZF9oYXNodGJsIGJpbl9yZWFkZXJfZWwxLnJlYWQgYmluX3JlYWRlcl9lbDIucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaGFzaHRibFwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaGFzaHRibCB4MSB4MiA9IFNoYXBlLmJpbl9zaGFwZV9oYXNodGJsIHgxIHgyXG5cbmxldCBiaW5faGFzaHRibCBiaW5fZWwxIGJpbl9lbDIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2hhc2h0YmwgYmluX2VsMS5zaGFwZSBiaW5fZWwyLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9oYXNodGJsIGJpbl9lbDEud3JpdGVyIGJpbl9lbDIud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9oYXNodGJsIGJpbl9lbDEucmVhZGVyIGJpbl9lbDIucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiZmxvYXQzMl92ZWNcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQzMl92ZWMgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0MzJfdmVjOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDMyX3ZlYyB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX3ZlYyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQzMl92ZWM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0MzJfdmVjXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdDMyX3ZlYyA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdDMyX3ZlY1xuXG5sZXQgYmluX2Zsb2F0MzJfdmVjID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDMyX3ZlY1xuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQzMl92ZWNcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0MzJfdmVjXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiZmxvYXQ2NF92ZWNcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF92ZWMgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0NjRfdmVjOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDY0X3ZlYyB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQ2NF92ZWM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0NjRfdmVjXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X3ZlYyA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX2Zsb2F0NjRfdmVjID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDY0X3ZlY1xuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQ2NF92ZWNcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0NjRfdmVjXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwidmVjXCIgKilcbmxldCBiaW5fd3JpdGVyX3ZlYyA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfdmVjOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV92ZWMgfVxubGV0IGJpbl9yZWFkZXJfdmVjID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF92ZWM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInZlY1wiIH1cbmxldCBiaW5fc2hhcGVfdmVjID0gU2hhcGUuYmluX3NoYXBlX3ZlY1xubGV0IGJpbl92ZWMgPSB7IHNoYXBlID0gYmluX3NoYXBlX3ZlYzsgd3JpdGVyID0gYmluX3dyaXRlcl92ZWM7IHJlYWRlciA9IGJpbl9yZWFkZXJfdmVjIH1cblxuKCokIG1rX2Jhc2UgXCJmbG9hdDMyX21hdFwiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDMyX21hdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQzMl9tYXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfbWF0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfbWF0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX21hdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl9tYXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfbWF0ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0MzJfbWF0XG5cbmxldCBiaW5fZmxvYXQzMl9tYXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0MzJfbWF0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDMyX21hdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQzMl9tYXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdDY0X21hdFwiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDY0X21hdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQ2NF9tYXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfbWF0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfbWF0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X21hdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF9tYXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfbWF0ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0NjRfbWF0XG5cbmxldCBiaW5fZmxvYXQ2NF9tYXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0NjRfbWF0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDY0X21hdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQ2NF9tYXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJtYXRcIiAqKVxubGV0IGJpbl93cml0ZXJfbWF0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9tYXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX21hdCB9XG5sZXQgYmluX3JlYWRlcl9tYXQgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX21hdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibWF0XCIgfVxubGV0IGJpbl9zaGFwZV9tYXQgPSBTaGFwZS5iaW5fc2hhcGVfbWF0XG5sZXQgYmluX21hdCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfbWF0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX21hdDsgcmVhZGVyID0gYmluX3JlYWRlcl9tYXQgfVxuXG4oKiQgbWtfYmFzZSBcImJpZ3N0cmluZ1wiICopXG5sZXQgYmluX3dyaXRlcl9iaWdzdHJpbmcgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2JpZ3N0cmluZzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfYmlnc3RyaW5nIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2JpZ3N0cmluZyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfYmlnc3RyaW5nOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJiaWdzdHJpbmdcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2JpZ3N0cmluZyA9IFNoYXBlLmJpbl9zaGFwZV9iaWdzdHJpbmdcblxubGV0IGJpbl9iaWdzdHJpbmcgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2JpZ3N0cmluZ1xuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfYmlnc3RyaW5nXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9iaWdzdHJpbmdcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdGFycmF5XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0YXJyYXkgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0YXJyYXk7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0YXJyYXkgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXRhcnJheSA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXRhcnJheTsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRhcnJheVwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXRhcnJheSA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdGFycmF5XG5cbmxldCBiaW5fZmxvYXRhcnJheSA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXRhcnJheVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXRhcnJheVxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXRhcnJheVxuICB9XG47O1xuXG4oKiQqKVxuXG4oKiQgbWtfYmFzZSBcInZhcmlhbnRfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX3ZhcmlhbnRfaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV92YXJpYW50X2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfdmFyaWFudF9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfdmFyaWFudF9pbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3ZhcmlhbnRfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ2YXJpYW50X2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfdmFyaWFudF9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfdmFyaWFudF9pbnRcblxubGV0IGJpbl92YXJpYW50X2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfdmFyaWFudF9pbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3ZhcmlhbnRfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl92YXJpYW50X2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF84Yml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF84Yml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfOGJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzhiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzhiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF84Yml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfOGJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzhiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzhiaXRcblxubGV0IGJpbl9pbnRfOGJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzhiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF84Yml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfOGJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF8xNmJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfMTZiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF8xNmJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzE2Yml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF8xNmJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzE2Yml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfMTZiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF8xNmJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfMTZiaXRcblxubGV0IGJpbl9pbnRfMTZiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF8xNmJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzE2Yml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfMTZiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfMzJiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzMyYml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfMzJiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF8zMmJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfMzJiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF8zMmJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzMyYml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfMzJiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzMyYml0XG5cbmxldCBiaW5faW50XzMyYml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfMzJiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF8zMmJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzMyYml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzY0Yml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF82NGJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzY0Yml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfNjRiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzY0Yml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfNjRiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF82NGJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzY0Yml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF82NGJpdFxuXG5sZXQgYmluX2ludF82NGJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzY0Yml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfNjRiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF82NGJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludDY0X2JpdHNcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50NjRfYml0cyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50NjRfYml0czsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50NjRfYml0cyB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnQ2NF9iaXRzID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnQ2NF9iaXRzOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnQ2NF9iaXRzXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnQ2NF9iaXRzID0gU2hhcGUuYmluX3NoYXBlX2ludDY0X2JpdHNcblxubGV0IGJpbl9pbnQ2NF9iaXRzID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQ2NF9iaXRzXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQ2NF9iaXRzXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQ2NF9iaXRzXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazE2X2ludFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrMTZfaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrMTZfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrMTZfaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcmsxNl9pbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcmsxNl9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcmsxNl9pbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcmsxNl9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazE2X2ludFxuXG5sZXQgYmluX25ldHdvcmsxNl9pbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcmsxNl9pbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcmsxNl9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcmsxNl9pbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrMzJfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcmszMl9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcmszMl9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazMyX2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazMyX2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazMyX2ludCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrMzJfaW50XG5cbmxldCBiaW5fbmV0d29yazMyX2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazMyX2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazMyX2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcmszMl9pbnQzMlwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50MzIgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcmszMl9pbnQzMjsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazMyX2ludDMyIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQzMiA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazMyX2ludDMyXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazMyX2ludDMyXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzIgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazMyX2ludDMyXG5cbmxldCBiaW5fbmV0d29yazMyX2ludDMyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzJcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMlxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazY0X2ludFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrNjRfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrNjRfaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcms2NF9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcms2NF9pbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcms2NF9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazY0X2ludFxuXG5sZXQgYmluX25ldHdvcms2NF9pbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcms2NF9pbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrNjRfaW50NjRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazY0X2ludDY0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcms2NF9pbnQ2NCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50NjQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcms2NF9pbnQ2NFxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcms2NF9pbnQ2NFwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NFxuXG5sZXQgYmluX25ldHdvcms2NF9pbnQ2NCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NFxuICB9XG47O1xuXG4oKiQqKVxuXG4oKiBDb252ZXJzaW9uIG9mIGJpbmFibGUgdHlwZXMgKilcblxubGV0IGNudl93cml0ZXIgY252IHRwX2NsYXNzID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IHRwX2NsYXNzLnNpemUgKGNudiB2KSlcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiB0cF9jbGFzcy53cml0ZSBidWYgfnBvcyAoY252IHYpKVxuICB9XG47O1xuXG5sZXQgY252X3JlYWRlciBjbnYgdHBfY2xhc3MgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBjbnYgKHRwX2NsYXNzLnJlYWQgYnVmIH5wb3NfcmVmKSlcbiAgOyB2dGFnX3JlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiB2dGFnIC0+IGNudiAodHBfY2xhc3MudnRhZ19yZWFkIGJ1ZiB+cG9zX3JlZiB2dGFnKSlcbiAgfVxuOztcblxubGV0IGNudiBmb3Jfc2hhcGUgZm9yX3dyaXRlciBmb3JfcmVhZGVyIHRwX2NsYXNzID1cbiAgeyBzaGFwZSA9IGZvcl9zaGFwZSB0cF9jbGFzcy5zaGFwZVxuICA7IHdyaXRlciA9IGNudl93cml0ZXIgZm9yX3dyaXRlciB0cF9jbGFzcy53cml0ZXJcbiAgOyByZWFkZXIgPSBjbnZfcmVhZGVyIGZvcl9yZWFkZXIgdHBfY2xhc3MucmVhZGVyXG4gIH1cbjs7XG4iLCIoKiBCaW5hYmxlOiBzaWduYXR1cmVzIGRlZmluaW5nIGdlbmVyYXRlZCBmdW5jdGlvbnMgZm9yIHRoZSBiaW5hcnkgcHJvdG9jb2wuXG4gICBbUywgUzEsIGV0Y10gYXJlIHRoZSBzaWduYXR1cmVzIHNhdGlzZmllZCBieSB0aGUgZ2VuZXJhdGVkIGNvZGUgYW5kXG4gICBbTWluaW1hbC5TLCBNaW5pbWFsLlMxLCBldGNdIGFyZSB0aGUgc2lnbmF0dXJlcyB0aGF0IGdlbmVyYXRlZCBjb2RlIHVzZXMuICopXG5cbigqIHRoZSBzdWJzZXQgb2YgUyBjb250YWluaW5nIG9ubHkgZnVuY3Rpb25zLCBzbyB0aGF0IG9uZSBjYW4gcmVjdXJzaXZlbHkgZGVmaW5lIG1vZHVsZXNcbiAgIGltcGxlbWVudGluZyB0aGlzIGludGVyZmFjZSAqKVxubW9kdWxlIHR5cGUgU19vbmx5X2Z1bmN0aW9ucyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgYmluX3NpemVfdCA6IHQgU2l6ZS5zaXplclxuICB2YWwgYmluX3dyaXRlX3QgOiB0IFdyaXRlLndyaXRlclxuICB2YWwgYmluX3JlYWRfdCA6IHQgUmVhZC5yZWFkZXJcblxuICAoKipcbiAgICAgVGhpcyBmdW5jdGlvbiBvbmx5IG5lZWRzIGltcGxlbWVudGF0aW9uIGlmIFt0XSBleHBvc2VkIHRvIGJlIGEgcG9seW1vcnBoaWMgdmFyaWFudC5cbiAgICAgRGVzcGl0ZSB3aGF0IHRoZSB0eXBlIHJlYWRzLCB0aGlzIGRvZXMgKm5vdCogcHJvZHVjZSBhIGZ1bmN0aW9uIGFmdGVyIHJlYWRpbmc7XG4gICAgIGluc3RlYWQgaXQgdGFrZXMgdGhlIGNvbnN0cnVjdG9yIHRhZyAoaW50KSBiZWZvcmUgcmVhZGluZyBhbmQgcmVhZHMgdGhlIHJlc3Qgb2YgdGhlXG4gICAgIHZhcmlhbnQgW3RdIGFmdGVyd2FyZHMuXG4gICopXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6IChpbnQgLT4gdCkgUmVhZC5yZWFkZXJcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdFxuXG4gIGluY2x1ZGUgU19vbmx5X2Z1bmN0aW9ucyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICB2YWwgYmluX3dyaXRlcl90IDogdCBUeXBlX2NsYXNzLndyaXRlclxuICB2YWwgYmluX3JlYWRlcl90IDogdCBUeXBlX2NsYXNzLnJlYWRlclxuICB2YWwgYmluX3QgOiB0IFR5cGVfY2xhc3MudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudFxuICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2EgdCkgU2l6ZS5zaXplcjFcbiAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYSB0KSBXcml0ZS53cml0ZXIxXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCBpbnQgLT4gJ2EgdCkgUmVhZC5yZWFkZXIxXG4gIHZhbCBiaW5fd3JpdGVyX3QgOiAoJ2EsICdhIHQpIFR5cGVfY2xhc3MuUzEud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdhIHQpIFR5cGVfY2xhc3MuUzEucmVhZGVyXG4gIHZhbCBiaW5fdCA6ICgnYSwgJ2EgdCkgVHlwZV9jbGFzcy5TMS50XG5lbmRcblxubW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBTaXplLnNpemVyMlxuICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBXcml0ZS53cml0ZXIyXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsIGludCAtPiAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgdmFsIGJpbl93cml0ZXJfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFR5cGVfY2xhc3MuUzIud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBUeXBlX2NsYXNzLlMyLnJlYWRlclxuICB2YWwgYmluX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBUeXBlX2NsYXNzLlMyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgU2l6ZS5zaXplcjNcbiAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBXcml0ZS53cml0ZXIzXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCAnYiwgJ2MsIGludCAtPiAoJ2EsICdiLCAnYykgdCkgUmVhZC5yZWFkZXIzXG4gIHZhbCBiaW5fd3JpdGVyX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFR5cGVfY2xhc3MuUzMud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFR5cGVfY2xhc3MuUzMucmVhZGVyXG4gIHZhbCBiaW5fdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgVHlwZV9jbGFzcy5TMy50XG5lbmRcblxubW9kdWxlIE1pbmltYWwgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogdCBTaXplLnNpemVyXG4gICAgdmFsIGJpbl93cml0ZV90IDogdCBXcml0ZS53cml0ZXJcbiAgICB2YWwgYmluX3JlYWRfdCA6IHQgUmVhZC5yZWFkZXJcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoaW50IC0+IHQpIFJlYWQucmVhZGVyXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2EgdCkgU2l6ZS5zaXplcjFcbiAgICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdhIHQpIFdyaXRlLndyaXRlcjFcbiAgICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2EgdCkgUmVhZC5yZWFkZXIxXG4gICAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCBpbnQgLT4gJ2EgdCkgUmVhZC5yZWFkZXIxXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgU2l6ZS5zaXplcjJcbiAgICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBXcml0ZS53cml0ZXIyXG4gICAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCBpbnQgLT4gKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBTaXplLnNpemVyM1xuICAgIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgV3JpdGUud3JpdGVyM1xuICAgIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCAnYywgaW50IC0+ICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgZW5kXG5lbmRcbiIsIigqIFV0aWxzOiB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgdXNlciBjb252ZW5pZW5jZSAqKVxuXG5vcGVuIENvbW1vblxub3BlbiBTaXplXG5vcGVuIFR5cGVfY2xhc3NcbmluY2x1ZGUgVXRpbHNfaW50ZlxuXG5sZXQgc2l6ZV9oZWFkZXJfbGVuZ3RoID0gOFxubGV0IGJpbl93cml0ZV9zaXplX2hlYWRlciA9IFdyaXRlLmJpbl93cml0ZV9pbnRfNjRiaXRcbmxldCBiaW5fcmVhZF9zaXplX2hlYWRlciA9IFJlYWQuYmluX3JlYWRfaW50XzY0Yml0XG5cbmxldCBiaW5fZHVtcCA/KGhlYWRlciA9IGZhbHNlKSB3cml0ZXIgdiA9XG4gIGxldCBidWYsIHBvcywgcG9zX2xlbiA9XG4gICAgbGV0IHZfbGVuID0gd3JpdGVyLnNpemUgdiBpblxuICAgIGlmIGhlYWRlclxuICAgIHRoZW4gKFxuICAgICAgbGV0IHRvdF9sZW4gPSB2X2xlbiArIHNpemVfaGVhZGVyX2xlbmd0aCBpblxuICAgICAgbGV0IGJ1ZiA9IGNyZWF0ZV9idWYgdG90X2xlbiBpblxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9zaXplX2hlYWRlciBidWYgfnBvczowIHZfbGVuIGluXG4gICAgICBidWYsIHBvcywgcG9zICsgdl9sZW4pXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYnVmID0gY3JlYXRlX2J1ZiB2X2xlbiBpblxuICAgICAgYnVmLCAwLCB2X2xlbilcbiAgaW5cbiAgbGV0IHBvcyA9IHdyaXRlci53cml0ZSBidWYgfnBvcyB2IGluXG4gIGlmIHBvcyA9IHBvc19sZW5cbiAgdGhlbiBidWZcbiAgZWxzZSBmYWlsd2l0aCBcIkJpbl9wcm90LlV0aWxzLmJpbl9kdW1wOiBzaXplIGNoYW5nZWQgZHVyaW5nIHdyaXRpbmdcIlxuOztcblxuKCogUmVhZGluZyBmcm9tIHN0cmVhbXMgKilcblxubGV0IGJpbl9yZWFkX3N0cmVhbSA/bWF4X3NpemUgfnJlYWQgcmVhZGVyID1cbiAgbGV0IGJ1ZiA9IGNyZWF0ZV9idWYgc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gIHJlYWQgYnVmIH5wb3M6MCB+bGVuOnNpemVfaGVhZGVyX2xlbmd0aDtcbiAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICBsZXQgbGVuID0gYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gIG1hdGNoIG1heF9zaXplIHdpdGhcbiAgfCBTb21lIG1heF9zaXplIHdoZW4gbGVuID4gbWF4X3NpemUgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICBcIkJpbl9wcm90LlV0aWxzLmJpbl9yZWFkX3N0cmVhbTogc2l6ZSBleGNlZWRzIG1heF9zaXplOiAlZCA+ICVkXCJcbiAgICAgICAgIGxlblxuICAgICAgICAgbWF4X3NpemUpXG4gIHwgXyAtPlxuICAgIGxldCBidWYgPSBpZiBsZW4gPiBzaXplX2hlYWRlcl9sZW5ndGggdGhlbiBjcmVhdGVfYnVmIGxlbiBlbHNlIGJ1ZiBpblxuICAgIHJlYWQgYnVmIH5wb3M6MCB+bGVuO1xuICAgIHBvc19yZWYgOj0gMDtcbiAgICBsZXQgcmVzID0gcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgaWYgIXBvc19yZWYgPSBsZW5cbiAgICB0aGVuIHJlc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IG1zZyA9XG4gICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgXCJCaW5fcHJvdC5VdGlscy5iaW5fcmVhZF9zdHJlYW06IHByb3RvY29sIGxpZWQgYWJvdXQgbGVuZ3RoIG9mIHZhbHVlOiBleHBlY3RlZCBcXFxuICAgICAgICAgICAlZCwgcmVjZWl2ZWQgJWRcIlxuICAgICAgICAgIGxlblxuICAgICAgICAgICFwb3NfcmVmXG4gICAgICBpblxuICAgICAgZmFpbHdpdGggbXNnKVxuOztcblxuKCogQ29udmVyc2lvbiBvZiBiaW5hYmxlIHR5cGVzICopXG5cbm1vZHVsZSBPZl9taW5pbWFsIChTIDogQmluYWJsZS5NaW5pbWFsLlMpIDogQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IFMudCA9IHN0cnVjdFxuICBpbmNsdWRlIFNcblxuICBsZXQgYmluX3dyaXRlcl90ID0geyBzaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG4gIGxldCBiaW5fcmVhZGVyX3QgPSB7IHJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gIGxldCBiaW5fdCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfdDsgd3JpdGVyID0gYmluX3dyaXRlcl90OyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgfVxuZW5kXG5cbmxldCBtYXliZV9hbm5vdGF0ZV9zaGFwZSBtYXliZV91dWlkIHNoYXBlID1cbiAgbWF0Y2ggbWF5YmVfdXVpZCB3aXRoXG4gIHwgTm9uZSAtPiBzaGFwZVxuICB8IFNvbWUgdXVpZCAtPiBTaGFwZS5hbm5vdGF0ZSB1dWlkIHNoYXBlXG47O1xuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE9mX21pbmltYWwgKHN0cnVjdFxuICAgICAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICAgICAgdHlwZSB0ID0gUy50XG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IG1heWJlX2Fubm90YXRlX3NoYXBlIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5IEIuYmluX3NoYXBlX3RcbiAgICAgIGxldCBiaW5fc2l6ZV90IHQgPSBCLmJpbl9zaXplX3QgKFMudG9fYmluYWJsZSB0KVxuICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPSBCLmJpbl93cml0ZV90IGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9IFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZilcbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBidWYgfnBvc19yZWYgbiA9IFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBidWYgfnBvc19yZWYgbilcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZTFfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gIGxldCBiaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwgPVxuICAgIG1heWJlX2Fubm90YXRlX3NoYXBlIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5IChCLmJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbClcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbCB0ID0gQi5iaW5fc2l6ZV90IGJpbl9zaXplX2VsIChTLnRvX2JpbmFibGUgdClcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIHQgPVxuICAgIEIuYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICAgIFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZilcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgbilcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlci53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIgPVxuICAgIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IGJpbl9yZWFkX3QgYmluX3JlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gX2J1ZiB+cG9zX3JlZiBfbiAtPlxuICAgICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxLmJpbl9yZWFkZXJfdFwiICFwb3NfcmVmKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzcyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3Muc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUyX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWRfc3BlY1xuXG4gICAgdmFsIG1heWJlX2NhbGxlcl9pZGVudGl0eSA6IFNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICBsZXQgYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsMSBiaW5fc2hhcGVfZWwyID1cbiAgICBtYXliZV9hbm5vdGF0ZV9zaGFwZVxuICAgICAgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHlcbiAgICAgIChCLmJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMilcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIHQgPVxuICAgIEIuYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJ1ZiB+cG9zIHQgPVxuICAgIEIuYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBidWYgfnBvc19yZWYpXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZiBuKVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBfYnVmIH5wb3NfcmVmIF9uIC0+XG4gICAgICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTIuYmluX3JlYWRlcl90XCIgIXBvc19yZWYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZTNfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gIGxldCBiaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIgYmluX3NoYXBlX2VsMyA9XG4gICAgbWF5YmVfYW5ub3RhdGVfc2hhcGVcbiAgICAgIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5XG4gICAgICAoQi5iaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIgYmluX3NoYXBlX2VsMylcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIGJpbl9zaXplX2VsMyB0ID1cbiAgICBCLmJpbl9zaXplX3QgYmluX3NpemVfZWwxIGJpbl9zaXplX2VsMiBiaW5fc2l6ZV9lbDMgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYmluX3dyaXRlX2VsMyBidWYgfnBvcyB0ID1cbiAgICBCLmJpbl93cml0ZV90IGJpbl93cml0ZV9lbDEgYmluX3dyaXRlX2VsMiBiaW5fd3JpdGVfZWwzIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYgPVxuICAgIFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZilcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBiaW5fcmVhZF9lbDMgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYgbilcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIxIGJpbl93cml0ZXIyIGJpbl93cml0ZXIzID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyMS5zaXplIGJpbl93cml0ZXIyLnNpemUgYmluX3dyaXRlcjMuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgICAgYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYmluX3dyaXRlcjMud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiBiaW5fcmVhZGVyMyA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgICAgYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYmluX3JlYWRlcjMucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIF9idWYgfnBvc19yZWYgX24gLT5cbiAgICAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMy5iaW5fcmVhZGVyX3RcIiAhcG9zX3JlZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyIHR5cGVfY2xhc3MzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGUgdHlwZV9jbGFzczMuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyIHR5cGVfY2xhc3MzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXIgdHlwZV9jbGFzczMucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlX3dpdGhfdXVpZF9zcGVjKSA9IE1ha2VfYmluYWJsZV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMV93aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGUxX3dpdGhfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTFfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBTb21lIFMuY2FsbGVyX2lkZW50aXR5XG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTJfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlMl93aXRoX3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUyX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUzX3dpdGhfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTNfd2l0aF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlM19nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZV93aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGVfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUxX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUyX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlMl9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWQgKFMgOiBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTNfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubGV0IHdpdGhfbW9kdWxlX25hbWUgZiB+bW9kdWxlX25hbWUgZnVuY3Rpb25fbmFtZSA9XG4gIG1hdGNoIG1vZHVsZV9uYW1lIHdpdGhcbiAgfCBOb25lIC0+IGYgZnVuY3Rpb25fbmFtZVxuICB8IFNvbWUgbW9kdWxlX25hbWUgLT4gUHJpbnRmLmtzcHJpbnRmIGYgXCIlcy4lc1wiIG1vZHVsZV9uYW1lIGZ1bmN0aW9uX25hbWVcbjs7XG5cbmxldCByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiA9IHdpdGhfbW9kdWxlX25hbWUgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb25cblxubGV0IHJhaXNlX3JlYWRfdG9vX211Y2ggPVxuICB3aXRoX21vZHVsZV9uYW1lXG4gICAgKFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aCBcIiVzOiB0cmllZCB0byByZWFkIG1vcmUgZWxlbWVudHMgdGhhbiBhdmFpbGFibGVcIilcbjs7XG5cbmxldCByYWlzZV9yZWFkX25vdF9lbm91Z2ggPVxuICB3aXRoX21vZHVsZV9uYW1lIChQcmludGYua3NwcmludGYgZmFpbHdpdGggXCIlczogZGlkbid0IHJlYWQgYWxsIGVsZW1lbnRzXCIpXG47O1xuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcIjY1OTIzNzFhLTQ5OTQtMTFlNi05MjNhLTc3NDhlNDE4Mjc2NFwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgX24gPSByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbiAgbGV0IGJpbl93cml0ZXJfdCA9IHsgc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuICBsZXQgYmluX3JlYWRlcl90ID0geyByZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICBsZXQgYmluX3QgPSB7IHNoYXBlID0gYmluX3NoYXBlX3Q7IHdyaXRlciA9IGJpbl93cml0ZXJfdDsgcmVhZGVyID0gYmluX3JlYWRlcl90IH1cbmVuZFxuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZTFfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQgPVxuICAgIFNoYXBlLihcbiAgICAgIGJhc2V0eXBlXG4gICAgICAgIGNhbGxlcl9pZGVudGl0eVxuICAgICAgICBbIGJhc2V0eXBlXG4gICAgICAgICAgICAoVXVpZC5vZl9zdHJpbmcgXCJhYzhhOWZmNC00OTk0LTExZTYtOWExYi05ZmI0ZTkzM2JkOWRcIilcbiAgICAgICAgICAgIFsgUy5iaW5fc2hhcGVfZWwgdCBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgYmluX3NpemVfYSBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBiaW5fd3JpdGVfYSBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYmluX3JlYWRfYSBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2Jpbl9yZWFkX2EgX2J1ZiB+cG9zX3JlZiBfbiA9IHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlciA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlci5zaXplIHYpXG4gICAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlciA9XG4gICAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID0gKGZ1biBidWYgfnBvc19yZWYgX24gLT4gX19iaW5fcmVhZF90X18gYmluX3JlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZiBfbilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzcy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlMiAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZTJfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQxIHQyID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiYjRlNTRhZDItNDk5NC0xMWU2LWI4ZGYtODdjMjk5N2Y5ZjUyXCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIHQxIHQyIF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGJpbl9zaXplX2EgYmluX3NpemVfYiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9iaW5fcmVhZF9hIF9iaW5fcmVhZF9iIF9idWYgfnBvc19yZWYgX24gPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgbiAtPlxuICAgICAgICAgICBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmIG4pXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaXRlcmFibGVfYmluYWJsZTMgKFMgOiBNYWtlX2l0ZXJhYmxlX2JpbmFibGUzX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCB0MSB0MiB0MyA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcImYyMTEyZWRhLWU3ZDctMTFlNi1iYjM2LTA3MmU5Y2UxNTlkYlwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCB0MSB0MiB0MyBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGJpbl9zaXplX2MgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGJpbl9zaXplX2EgYmluX3NpemVfYiBiaW5fc2l6ZV9jIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBiaW5fd3JpdGVfYyBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJpbl93cml0ZV9jIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYmluX3JlYWRfYyBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9iaW5fcmVhZF9hIF9iaW5fcmVhZF9iIF9iaW5fcmVhZF9jIF9idWYgfnBvc19yZWYgX24gPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgYmluX3dyaXRlcjMgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSBiaW5fd3JpdGVyMy5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgICBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBiaW5fd3JpdGVyMy53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyIGJpbl9yZWFkZXIzID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgICBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBiaW5fcmVhZGVyMy5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIG4gLT5cbiAgICAgICAgICAgX19iaW5fcmVhZF90X18gYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJpbl9yZWFkZXIzLnJlYWQgYnVmIH5wb3NfcmVmIG4pXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiB0eXBlX2NsYXNzMyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlIHR5cGVfY2xhc3MzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlciB0eXBlX2NsYXNzMy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzMS5yZWFkZXIgdHlwZV9jbGFzczIucmVhZGVyIHR5cGVfY2xhc3MzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuIiwiKCoqXG4gICBUaGlzIG1vZHVsZSBkZWZpbmVzIGRlZmF1bHQgY29udmVydGVycyBmb3IgdGhlIHR5cGVzIGRlZmluZWQgaW4gdGhlIE9DYW1sXG4gICBzdGFuZGFyZCBsaWJyYXJ5LlxuKilcblxuaW5jbHVkZSBTaXplXG5cbmxldCBiaW5fdW5pdCA9IFR5cGVfY2xhc3MuYmluX3VuaXRcbmxldCBiaW5fc2hhcGVfdW5pdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX3VuaXRcbmxldCBiaW5fd3JpdGVyX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfdW5pdFxubGV0IGJpbl93cml0ZV91bml0ID0gV3JpdGUuYmluX3dyaXRlX3VuaXRcbmxldCBiaW5fcmVhZGVyX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfdW5pdFxubGV0IGJpbl9yZWFkX3VuaXQgPSBSZWFkLmJpbl9yZWFkX3VuaXRcblxubGV0IF9fYmluX3JlYWRfdW5pdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidW5pdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl9ib29sXG5sZXQgYmluX3NoYXBlX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9ib29sXG5sZXQgYmluX3dyaXRlcl9ib29sID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Jvb2xcbmxldCBiaW5fd3JpdGVfYm9vbCA9IFdyaXRlLmJpbl93cml0ZV9ib29sXG5sZXQgYmluX3JlYWRlcl9ib29sID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Jvb2xcbmxldCBiaW5fcmVhZF9ib29sID0gUmVhZC5iaW5fcmVhZF9ib29sXG5cbmxldCBfX2Jpbl9yZWFkX2Jvb2xfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJvb2xcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9zdHJpbmdcbmxldCBiaW5fc2hhcGVfc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfc3RyaW5nXG5sZXQgYmluX3dyaXRlcl9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfc3RyaW5nXG5sZXQgYmluX3dyaXRlX3N0cmluZyA9IFdyaXRlLmJpbl93cml0ZV9zdHJpbmdcbmxldCBiaW5fcmVhZGVyX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9zdHJpbmdcbmxldCBiaW5fcmVhZF9zdHJpbmcgPSBSZWFkLmJpbl9yZWFkX3N0cmluZ1xuXG5sZXQgX19iaW5fcmVhZF9zdHJpbmdfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInN0cmluZ1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fYnl0ZXNcbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9ieXRlc1xubGV0IGJpbl93cml0ZXJfYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYnl0ZXNcbmxldCBiaW5fd3JpdGVfYnl0ZXMgPSBXcml0ZS5iaW5fd3JpdGVfYnl0ZXNcbmxldCBiaW5fcmVhZGVyX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2J5dGVzXG5sZXQgYmluX3JlYWRfYnl0ZXMgPSBSZWFkLmJpbl9yZWFkX2J5dGVzXG5cbmxldCBfX2Jpbl9yZWFkX2J5dGVzX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJieXRlc1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl9jaGFyXG5sZXQgYmluX3NoYXBlX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9jaGFyXG5sZXQgYmluX3dyaXRlcl9jaGFyID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2NoYXJcbmxldCBiaW5fd3JpdGVfY2hhciA9IFdyaXRlLmJpbl93cml0ZV9jaGFyXG5sZXQgYmluX3JlYWRlcl9jaGFyID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2NoYXJcbmxldCBiaW5fcmVhZF9jaGFyID0gUmVhZC5iaW5fcmVhZF9jaGFyXG5cbmxldCBfX2Jpbl9yZWFkX2NoYXJfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImNoYXJcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9pbnQgPSBUeXBlX2NsYXNzLmJpbl9pbnRcbmxldCBiaW5fc2hhcGVfaW50ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50XG5sZXQgYmluX3dyaXRlcl9pbnQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfaW50XG5sZXQgYmluX3dyaXRlX2ludCA9IFdyaXRlLmJpbl93cml0ZV9pbnRcbmxldCBiaW5fcmVhZGVyX2ludCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnRcbmxldCBiaW5fcmVhZF9pbnQgPSBSZWFkLmJpbl9yZWFkX2ludFxubGV0IF9fYmluX3JlYWRfaW50X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9IENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJpbnRcIiAhcG9zX3JlZlxubGV0IGJpbl9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0XG5sZXQgYmluX3NoYXBlX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXRcbmxldCBiaW5fd3JpdGVyX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0XG5sZXQgYmluX3dyaXRlX2Zsb2F0ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0XG5sZXQgYmluX3JlYWRlcl9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdFxubGV0IGJpbl9yZWFkX2Zsb2F0ID0gUmVhZC5iaW5fcmVhZF9mbG9hdFxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXRhcnJheVxubGV0IGJpbl9zaGFwZV9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXRhcnJheVxubGV0IGJpbl93cml0ZXJfZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdGFycmF5XG5sZXQgYmluX3dyaXRlX2Zsb2F0YXJyYXkgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRhcnJheVxubGV0IGJpbl9yZWFkZXJfZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdGFycmF5XG5sZXQgYmluX3JlYWRfZmxvYXRhcnJheSA9IFJlYWQuYmluX3JlYWRfZmxvYXRhcnJheVxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdGFycmF5X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdGFycmF5XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5faW50MzIgPSBUeXBlX2NsYXNzLmJpbl9pbnQzMlxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2ludDMyXG5sZXQgYmluX3dyaXRlcl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9pbnQzMlxubGV0IGJpbl93cml0ZV9pbnQzMiA9IFdyaXRlLmJpbl93cml0ZV9pbnQzMlxubGV0IGJpbl9yZWFkZXJfaW50MzIgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfaW50MzJcbmxldCBiaW5fcmVhZF9pbnQzMiA9IFJlYWQuYmluX3JlYWRfaW50MzJcblxubGV0IF9fYmluX3JlYWRfaW50MzJfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImludDMyXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5faW50NjQgPSBUeXBlX2NsYXNzLmJpbl9pbnQ2NFxubGV0IGJpbl9zaGFwZV9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2ludDY0XG5sZXQgYmluX3dyaXRlcl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9pbnQ2NFxubGV0IGJpbl93cml0ZV9pbnQ2NCA9IFdyaXRlLmJpbl93cml0ZV9pbnQ2NFxubGV0IGJpbl9yZWFkZXJfaW50NjQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfaW50NjRcbmxldCBiaW5fcmVhZF9pbnQ2NCA9IFJlYWQuYmluX3JlYWRfaW50NjRcblxubGV0IF9fYmluX3JlYWRfaW50NjRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImludDY0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fbmF0aXZlaW50XG5sZXQgYmluX3NoYXBlX25hdGl2ZWludCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX25hdGl2ZWludFxubGV0IGJpbl93cml0ZXJfbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX25hdGl2ZWludFxubGV0IGJpbl93cml0ZV9uYXRpdmVpbnQgPSBXcml0ZS5iaW5fd3JpdGVfbmF0aXZlaW50XG5sZXQgYmluX3JlYWRlcl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbmF0aXZlaW50XG5sZXQgYmluX3JlYWRfbmF0aXZlaW50ID0gUmVhZC5iaW5fcmVhZF9uYXRpdmVpbnRcblxubGV0IF9fYmluX3JlYWRfbmF0aXZlaW50X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJuYXRpdmVpbnRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWYgPSBUeXBlX2NsYXNzLmJpbl9yZWZcbmxldCBiaW5fc2hhcGVfcmVmID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfcmVmXG5sZXQgYmluX3dyaXRlcl9yZWYgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfcmVmXG5sZXQgYmluX3dyaXRlX3JlZiA9IFdyaXRlLmJpbl93cml0ZV9yZWZcbmxldCBiaW5fcmVhZGVyX3JlZiA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9yZWZcbmxldCBiaW5fcmVhZF9yZWYgPSBSZWFkLmJpbl9yZWFkX3JlZlxuXG5sZXQgX19iaW5fcmVhZF9yZWZfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInJlZlwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2xhenlfdCA9IFR5cGVfY2xhc3MuYmluX2xhenlcbmxldCBiaW5fc2hhcGVfbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbGF6eVxubGV0IGJpbl93cml0ZXJfbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2xhenlcbmxldCBiaW5fd3JpdGVfbGF6eV90ID0gV3JpdGUuYmluX3dyaXRlX2xhenlcbmxldCBiaW5fcmVhZGVyX2xhenlfdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9sYXp5XG5sZXQgYmluX3JlYWRfbGF6eV90ID0gUmVhZC5iaW5fcmVhZF9sYXp5XG5cbmxldCBfX2Jpbl9yZWFkX2xhenlfdF9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGF6eVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2xhenkgPSBUeXBlX2NsYXNzLmJpbl9sYXp5XG5sZXQgYmluX3NoYXBlX2xhenkgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9sYXp5XG5sZXQgYmluX3dyaXRlcl9sYXp5ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2xhenlcbmxldCBiaW5fd3JpdGVfbGF6eSA9IFdyaXRlLmJpbl93cml0ZV9sYXp5XG5sZXQgYmluX3JlYWRlcl9sYXp5ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2xhenlcbmxldCBiaW5fcmVhZF9sYXp5ID0gUmVhZC5iaW5fcmVhZF9sYXp5XG5cbmxldCBfX2Jpbl9yZWFkX2xhenlfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImxhenlcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl9vcHRpb25cbmxldCBiaW5fc2hhcGVfb3B0aW9uID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfb3B0aW9uXG5sZXQgYmluX3dyaXRlcl9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfb3B0aW9uXG5sZXQgYmluX3dyaXRlX29wdGlvbiA9IFdyaXRlLmJpbl93cml0ZV9vcHRpb25cbmxldCBiaW5fcmVhZGVyX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9vcHRpb25cbmxldCBiaW5fcmVhZF9vcHRpb24gPSBSZWFkLmJpbl9yZWFkX29wdGlvblxuXG5sZXQgX19iaW5fcmVhZF9vcHRpb25fXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm9wdGlvblwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl9saXN0XG5sZXQgYmluX3NoYXBlX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9saXN0XG5sZXQgYmluX3dyaXRlcl9saXN0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2xpc3RcbmxldCBiaW5fd3JpdGVfbGlzdCA9IFdyaXRlLmJpbl93cml0ZV9saXN0XG5sZXQgYmluX3JlYWRlcl9saXN0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2xpc3RcbmxldCBiaW5fcmVhZF9saXN0ID0gUmVhZC5iaW5fcmVhZF9saXN0XG5cbmxldCBfX2Jpbl9yZWFkX2xpc3RfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImxpc3RcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9hcnJheSA9IFR5cGVfY2xhc3MuYmluX2FycmF5XG5sZXQgYmluX3NoYXBlX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYXJyYXlcbmxldCBiaW5fd3JpdGVyX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2FycmF5XG5sZXQgYmluX3dyaXRlX2FycmF5ID0gV3JpdGUuYmluX3dyaXRlX2FycmF5XG5sZXQgYmluX3JlYWRlcl9hcnJheSA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9hcnJheVxubGV0IGJpbl9yZWFkX2FycmF5ID0gUmVhZC5iaW5fcmVhZF9hcnJheVxuXG5sZXQgX19iaW5fcmVhZF9hcnJheV9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiYXJyYXlcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5faGFzaHRibFxubGV0IGJpbl9zaGFwZV9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaGFzaHRibFxubGV0IGJpbl93cml0ZXJfaGFzaHRibCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9oYXNodGJsXG5sZXQgYmluX3dyaXRlX2hhc2h0YmwgPSBXcml0ZS5iaW5fd3JpdGVfaGFzaHRibFxubGV0IGJpbl9yZWFkZXJfaGFzaHRibCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9oYXNodGJsXG5sZXQgYmluX3JlYWRfaGFzaHRibCA9IFJlYWQuYmluX3JlYWRfaGFzaHRibFxuXG5sZXQgX19iaW5fcmVhZF9oYXNodGJsX18gX2YgX2cgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJoYXNodGJsXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fYmlnc3RyaW5nXG5sZXQgYmluX3NoYXBlX2JpZ3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2JpZ3N0cmluZ1xubGV0IGJpbl93cml0ZXJfYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2JpZ3N0cmluZ1xubGV0IGJpbl93cml0ZV9iaWdzdHJpbmcgPSBXcml0ZS5iaW5fd3JpdGVfYmlnc3RyaW5nXG5sZXQgYmluX3JlYWRlcl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfYmlnc3RyaW5nXG5sZXQgYmluX3JlYWRfYmlnc3RyaW5nID0gUmVhZC5iaW5fcmVhZF9iaWdzdHJpbmdcblxubGV0IF9fYmluX3JlYWRfYmlnc3RyaW5nX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJiaWdzdHJpbmdcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9tYXRcbmxldCBiaW5fc2hhcGVfbWF0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbWF0XG5sZXQgYmluX3dyaXRlcl9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbWF0XG5sZXQgYmluX3dyaXRlX21hdCA9IFdyaXRlLmJpbl93cml0ZV9tYXRcbmxldCBiaW5fcmVhZGVyX21hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9tYXRcbmxldCBiaW5fcmVhZF9tYXQgPSBSZWFkLmJpbl9yZWFkX21hdFxubGV0IF9fYmluX3JlYWRfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9IENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJtYXRcIiAhcG9zX3JlZlxubGV0IGJpbl9mbG9hdDMyX21hdCA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQzMl9tYXRcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfbWF0ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX21hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDMyX21hdFxubGV0IGJpbl9yZWFkX2Zsb2F0MzJfbWF0ID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX21hdFxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDMyX21hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl9tYXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9mbG9hdDY0X21hdCA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQ2NF9tYXRcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfbWF0ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X21hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDY0X21hdFxubGV0IGJpbl9yZWFkX2Zsb2F0NjRfbWF0ID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X21hdFxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDY0X21hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF9tYXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl92ZWMgPSBUeXBlX2NsYXNzLmJpbl92ZWNcbmxldCBiaW5fc2hhcGVfdmVjID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfdmVjXG5sZXQgYmluX3dyaXRlcl92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfdmVjXG5sZXQgYmluX3dyaXRlX3ZlYyA9IFdyaXRlLmJpbl93cml0ZV92ZWNcbmxldCBiaW5fcmVhZGVyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl92ZWNcbmxldCBiaW5fcmVhZF92ZWMgPSBSZWFkLmJpbl9yZWFkX3ZlY1xubGV0IF9fYmluX3JlYWRfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9IENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ2ZWNcIiAhcG9zX3JlZlxubGV0IGJpbl9mbG9hdDMyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQzMl92ZWNcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfdmVjID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDMyX3ZlY1xubGV0IGJpbl9yZWFkX2Zsb2F0MzJfdmVjID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX3ZlY1xuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDMyX3ZlY19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl92ZWNcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9mbG9hdDY0X3ZlYyA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQ2NF92ZWNcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfdmVjID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDY0X3ZlY1xubGV0IGJpbl9yZWFkX2Zsb2F0NjRfdmVjID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X3ZlY1xuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDY0X3ZlY19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF92ZWNcIiAhcG9zX3JlZlxuOztcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSBNZDVfbGliXG5cbiAgICBsZXQgYmluX3NoYXBlX3QgPVxuICAgICAgU2hhcGUuYmFzZXR5cGUgKFNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiZjZiZGNkZDAtOWY3NS0xMWU2LTlhN2UtZDMwMjA0MjhlZmVkXCIpIFtdXG4gICAgOztcblxuICAgIGxldCBiaW5fc2l6ZV90ID0gU2l6ZS5iaW5fc2l6ZV9tZDVcbiAgICBsZXQgYmluX3dyaXRlX3QgPSBXcml0ZS5iaW5fd3JpdGVfbWQ1XG4gICAgbGV0IGJpbl9yZWFkX3QgPSBSZWFkLmJpbl9yZWFkX21kNVxuXG4gICAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgX3ZkaWdlc3QgPVxuICAgICAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIlNoYXBlLk1kNS50XCIgIXBvc19yZWZcbiAgICA7O1xuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgICgqIHdlIGFzc3VtZSB0aGlzIHR5cGUgdG8gaGF2ZSBhIHN0YWJsZSBmb3JtYXQgKilcbiAgICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuIiwib3BlbiBDb21tb25cblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgYmluX3NoYXBlX3QgdCA9XG4gICAgU2hhcGUuKGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIjg1YTI1NTdlLTQ5MGEtMTFlNi05OGFjLTRiODk1M2Q1MjVmZVwiKSBbIHQgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIGEgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBiaW5fc2l6ZV9hIGFcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYnVmIH5wb3MgYSA9XG4gICAgbGV0IHN0YXJ0X2EgPSBwb3MgKyBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgICBsZXQgZW5kX2EgPSBiaW5fd3JpdGVfYSBidWYgfnBvczpzdGFydF9hIGEgaW5cbiAgICBsZXQgc2l6ZSA9IGVuZF9hIC0gc3RhcnRfYSBpblxuICAgIGxldCB3cml0dGVuID0gVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zIHNpemUgaW5cbiAgICBhc3NlcnQgKHdyaXR0ZW4gPSBzdGFydF9hKTtcbiAgICBlbmRfYVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgZXhwZWN0ZWRfc2l6ZSA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGxldCBzdGFydF9hID0gIXBvc19yZWYgaW5cbiAgICBsZXQgYSA9IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmIGluXG4gICAgbGV0IGVuZF9hID0gIXBvc19yZWYgaW5cbiAgICBpZiBlbmRfYSAtIHN0YXJ0X2EgPD4gZXhwZWN0ZWRfc2l6ZVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgICBcIkJpbl9wcm90LkJsb2IuYmluX3JlYWRfdDogc2l6ZSAoJWQpIDw+IGV4cGVjdGVkICglZClcIlxuICAgICAgICAgICAoZW5kX2EgLSBzdGFydF9hKVxuICAgICAgICAgICBleHBlY3RlZF9zaXplKTtcbiAgICBhXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF8gXyB+cG9zX3JlZiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi50XCIgIXBvc19yZWZcbiAgOztcbmVuZFxuXG50eXBlICdhIGlkID0gJ2FcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgIG1vZHVsZSBCaW5hYmxlID0gVFxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgb2ZfYmluYWJsZSB0ID0gdFxuICAgIGxldCB0b19iaW5hYmxlIHQgPSB0XG4gIGVuZClcblxubW9kdWxlIE9wYXF1ZSA9IHN0cnVjdFxuICAoKiBbQmlnc3RyaW5nXSBhbmQgW1N0cmluZ10gc2hhcmUgW2Jpbl9zaGFwZV90XSBiZWNhdXNlIHRoZXkgaGF2ZSBleGFjdGx5IHRoZSBzYW1lXG4gICAgIHNlcmlhbGl6YXRpb24gZm9ybWF0IGFuZCB0aGV5IGRlbm90ZSB0aGUgc2FtZSB2YWx1ZXMuXG5cbiAgICAgSW4gZmFjdCBhbG1vc3QgY2VydGFpbmx5IFtCbG9iLnRdIGl0c2VsZiBzaG91bGQgaGF2ZSB0aGUgc2FtZSBiaW5fc2hhcGVfdCBhcyB3ZWxsLiAqKVxuICBsZXQgYmluX3NoYXBlX3QgPVxuICAgIFNoYXBlLihiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCI4NWExZjc2ZS00OTBhLTExZTYtODZhOS01YmVmNTg1ZjI2MDJcIikgW10pXG4gIDs7XG5cbiAgbW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICAgICgqIFtidWZdIGlzIHRoZSBiaW4taW8gZGF0YSBleGNsdWRpbmcgdGhlIHNpemUgaGVhZGVyLiBXaGVuIChkZS0pc2VyaWFsaXplZCwgdGhlIHNpemVcbiAgICAgICBoZWFkZXIgaXMgaW5jbHVkZWQuICopXG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGJ1ZlxuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPSBiaW5fc2hhcGVfdFxuICAgICAgbGV0IGJpbl9zaXplX3QgdCA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIGJ1Zl9sZW4gdFxuXG4gICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgICAgIGxldCBzaXplID0gYnVmX2xlbiB0IGluXG4gICAgICAgIGxldCBwb3MgPSBVdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3Mgc2l6ZSBpblxuICAgICAgICBibGl0X2J1ZiB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3Mgc2l6ZTtcbiAgICAgICAgcG9zICsgc2l6ZVxuICAgICAgOztcblxuICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICAgICAgbGV0IHNpemUgPSBVdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgbGV0IHQgPSBjcmVhdGVfYnVmIHNpemUgaW5cbiAgICAgICAgYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6IXBvc19yZWYgfmRzdDp0IH5kc3RfcG9zOjAgc2l6ZTtcbiAgICAgICAgcG9zX3JlZiA6PSAhcG9zX3JlZiArIHNpemU7XG4gICAgICAgIHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfIH5wb3NfcmVmID1cbiAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5PcGFxdWUudFwiICFwb3NfcmVmXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBVdGlscy5PZl9taW5pbWFsIChUKVxuXG4gICAgbGV0IHRvX29wYXF1ZSBibG9iIGJpbl93cml0ZXIgPSBVdGlscy5iaW5fZHVtcCBiaW5fd3JpdGVyIGJsb2JcbiAgICBsZXQgb2Zfb3BhcXVlX2V4biAodCA6IHQpIGJpbl9yZWFkZXIgPSBiaW5fcmVhZGVyLlR5cGVfY2xhc3MucmVhZCB0IH5wb3NfcmVmOihyZWYgMClcblxuICAgICgqIEJpZ3N0cmluZ3MgYXJlIGEgcHJpbWl0aXZlIHR5cGUgdGhhdCBwb2x5bW9ycGhpYyBjb21wYXJlIGhhbmRsZXMgd2VsbC4gKilcbiAgICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IGJ1ZiAtPiBidWYgLT4gaW50KVxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgIFBweF9zZXhwX2NvbnZfbGliLlNleHAuQXRvbSAob2Zfb3BhcXVlX2V4biB0IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9zdHJpbmcpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID0gYmluX3NoYXBlX3RcbiAgICAgIGxldCBiaW5fc2l6ZV90IHQgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBTdHJpbmcubGVuZ3RoIHRcblxuICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPVxuICAgICAgICBsZXQgc2l6ZSA9IFN0cmluZy5sZW5ndGggdCBpblxuICAgICAgICBsZXQgcG9zID0gVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zIHNpemUgaW5cbiAgICAgICAgQ29tbW9uLmJsaXRfc3RyaW5nX2J1ZiB0IH5zcmNfcG9zOjAgYnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gICAgICAgIHBvcyArIHNpemVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdHJpbmdfb2ZfYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgICBibGl0X2J1Zl9ieXRlcyB+c3JjX3Bvczpwb3MgYnVmIH5kc3RfcG9zOjAgc3RyIH5sZW47XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG4gICAgICA7O1xuXG4gICAgICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgICAgICBsZXQgbGVuID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIGxldCB0ID0gc3RyaW5nX29mX2JpZ3N0cmluZyBidWYgfnBvczohcG9zX3JlZiB+bGVuIGluXG4gICAgICAgIHBvc19yZWYgOj0gIXBvc19yZWYgKyBsZW47XG4gICAgICAgIHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfIH5wb3NfcmVmID1cbiAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5PcGFxdWUudFwiICFwb3NfcmVmXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBVdGlscy5PZl9taW5pbWFsIChUKVxuXG4gICAgbGV0IGxlbmd0aCB0ID0gU3RyaW5nLmxlbmd0aCB0XG5cbiAgICBsZXQgdG9fb3BhcXVlIH5idWYgdiBiaW5fd3JpdGVyX3YgOiB0ID1cbiAgICAgIGxldCBwb3MgPSAwIGluXG4gICAgICBsZXQgbGVuID0gYmluX3dyaXRlcl92LlR5cGVfY2xhc3Mud3JpdGUgYnVmIH5wb3MgdiBpblxuICAgICAgc3RyaW5nX29mX2JpZ3N0cmluZyBidWYgfnBvcyB+bGVuXG4gICAgOztcblxuICAgIGxldCBvZl9vcGFxdWVfZXhuIH5idWYgKHQgOiB0KSBiaW5fcmVhZGVyX3YgPVxuICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggdCBpblxuICAgICAgQ29tbW9uLmJsaXRfc3RyaW5nX2J1ZiB0IGJ1ZiB+bGVuO1xuICAgICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgICAgbGV0IHJlcyA9IGJpbl9yZWFkZXJfdi5UeXBlX2NsYXNzLnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgICBpZiAhcG9zX3JlZiA8PiBsZW5cbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICBcIk9wYXF1ZSBibG9iIGhhcyAlZCBieXRlcyBidXQgW29mX29wYXF1ZV9leG5dIHJlYWQgJWRcIlxuICAgICAgICAgICAgbGVuXG4gICAgICAgICAgICAhcG9zX3JlZlxuICAgICAgICBpblxuICAgICAgICBmYWlsd2l0aCBlcnJvcilcbiAgICAgIGVsc2UgcmVzXG4gICAgOztcblxuICAgICgqIFN0cmluZ3MgYXJlIGEgcHJpbWl0aXZlIHR5cGUgdGhhdCBwb2x5bW9ycGhpYyBjb21wYXJlIGhhbmRsZXMgd2VsbC4gKilcbiAgICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50KVxuICAgIGxldCBzZXhwX29mX3QgPSBQcHhfc2V4cF9jb252X2xpYi5Db252LnNleHBfb2Zfc3RyaW5nXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBJZ25vcmVkID0gc3RydWN0XG4gICgqIFRoZSByZXByZXNlbnRhdGlvbiBvZiBhbiBpZ25vcmVkIHZhbHVlIGlzIGp1c3QgdGhlIHNpemUgb2YgdGhlIHZhbHVlIGl0IHdhcyBjcmVhdGVkXG4gICAgIGZyb20gKGkuZS4sIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB3ZXJlIGlnbm9yZWQgZnJvbSB0aGUgYnVmZmVyIHdlIHdlcmUgcmVhZGluZ1xuICAgICAtLSB3ZSBleGNsdWRlIHRoZSA4IGJ5dGUgc2l6ZSBoZWFkZXIgZnJvbSB3aGljaCB0aGUgc2l6ZSB3YXMgcmVhZCkuICopXG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBiaW5fc2l6ZV90IHNpemUgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBzaXplXG5cbiAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgc2l6ZSA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgIHBvc19yZWYgOj0gIXBvc19yZWYgKyBzaXplO1xuICAgIHNpemVcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gXyB+cG9zX3JlZiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5JZ25vcmVkLnRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgPSB7IFR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbmVuZFxuIiwibW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB2YWwgcHJlX3Rlc3RfaG9vayA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbmxldCBwcmVfdGVzdF9ob29rID0gaWdub3JlXG4iLCJbJSVpbXBvcnQgXCJjb25maWcuaFwiXVxuXG5vcGVuISBCYXNlXG5cblslJWlmZGVmIEpTQ19BUkNIX1NJWFRZRk9VUl1cblxuZXh0ZXJuYWwgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXG4gIDogIHVuaXRcbiAgLT4gSW50NjMudFxuICA9IFwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXCJcbltAQG5vYWxsb2NdXG5cblslJWVsc2VdXG5cbmV4dGVybmFsIG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuICA6ICB1bml0XG4gIC0+IEludDYzLnRcbiAgPSBcInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1wiXG5cblslJWVuZGlmXVxuWyUlaWZkZWYgSlNDX1BPU0lYX1RJTUVSU11cblxubGV0W0Bjb2xkXSBnZXR0aW1lX2ZhaWxlZCAoKSA9IGZhaWx3aXRoIFwiY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSkgZmFpbGVkXCJcblxuWyUlZWxzZV1cblxubGV0W0Bjb2xkXSBnZXR0aW1lX2ZhaWxlZCAoKSA9IGZhaWx3aXRoIFwiZ2V0dGltZW9mZGF5IGZhaWxlZFwiXG5cblslJWVuZGlmXVxuXG5sZXQgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSA9XG4gIGxldCB0ID0gbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvICgpIGluXG4gIGlmIEludDYzLiggPD4gKSB0IEludDYzLnplcm8gdGhlbiB0IGVsc2UgZ2V0dGltZV9mYWlsZWQgKClcbjs7XG4iLCJtb2R1bGUgVGVzdF9yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFN1Y2Nlc3NcbiAgICB8IEZhaWx1cmVcbiAgICB8IEVycm9yXG5cbiAgbGV0IHRvX2V4aXRfY29kZSA9IGZ1bmN0aW9uXG4gICAgfCBTdWNjZXNzIC0+IDBcbiAgICB8IEZhaWx1cmUgLT4gMlxuICAgIHwgRXJyb3IgLT4gMVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3VjY2VzcyAtPiBcInN1Y2Nlc3NcIlxuICAgIHwgRmFpbHVyZSAtPiBcImZhaWx1cmVcIlxuICAgIHwgRXJyb3IgLT4gXCJlcnJvclwiXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmUgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBTdWNjZXNzLCBTdWNjZXNzIC0+IFN1Y2Nlc3NcbiAgICB8IEVycm9yLCBfIHwgXywgRXJyb3IgLT4gRXJyb3JcbiAgICB8IEZhaWx1cmUsIF8gfCBfLCBGYWlsdXJlIC0+IEZhaWx1cmVcbiAgOztcblxuICBsZXQgY29tYmluZV9hbGwgdHMgPSBMaXN0LmZvbGRfbGVmdCBjb21iaW5lIFN1Y2Nlc3MgdHNcbmVuZFxuXG5sZXQgcGFyc2VfYXJndiBhcmd2IGwgZiBtc2cgPVxuICB0cnkgQXJnLnBhcnNlX2FyZ3YgYXJndiBsIGYgbXNnIHdpdGhcbiAgfCBBcmcuQmFkIG1zZyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwiJXNcIiBtc2c7XG4gICAgZXhpdCAxXG4gIHwgQXJnLkhlbHAgbXNnIC0+XG4gICAgUHJpbnRmLnByaW50ZiBcIiVzXCIgbXNnO1xuICAgIGV4aXQgMFxuOztcblxudHlwZSBkZXNjciA9IHN0cmluZ1xuXG5sZXQgdGVzdF9tb2R1bGVzX3JhbiA9IHJlZiAwXG5sZXQgdGVzdF9tb2R1bGVzX2ZhaWxlZCA9IHJlZiAwXG5sZXQgdGVzdHNfcmFuID0gcmVmIDBcbmxldCB0ZXN0c19mYWlsZWQgPSByZWYgMFxubGV0IGR5bmFtaWNfbGliIDogc3RyaW5nIG9wdGlvbiByZWYgPSByZWYgTm9uZVxuXG50eXBlIGZpbGVuYW1lID0gc3RyaW5nXG50eXBlIGxpbmVfbnVtYmVyID0gaW50XG50eXBlIHN0YXJ0X3BvcyA9IGludFxudHlwZSBlbmRfcG9zID0gaW50XG50eXBlIGNvbmZpZyA9IChtb2R1bGUgSW5saW5lX3Rlc3RfY29uZmlnLlMpXG5cbnR5cGUgJ2EgdGVzdF9mdW5jdGlvbl9hcmdzID1cbiAgY29uZmlnOmNvbmZpZ1xuICAtPiBkZXNjcjpkZXNjciBMYXp5LnRcbiAgLT4gdGFnczpzdHJpbmcgbGlzdFxuICAtPiBmaWxlbmFtZTpmaWxlbmFtZVxuICAtPiBsaW5lX251bWJlcjpsaW5lX251bWJlclxuICAtPiBzdGFydF9wb3M6c3RhcnRfcG9zXG4gIC0+IGVuZF9wb3M6ZW5kX3Bvc1xuICAtPiAnYVxuXG5tb2R1bGUgVGFnX3ByZWRpY2F0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcmVxdWlyZWRfdGFncyA6IHN0cmluZyBsaXN0XG4gICAgOyBkcm9wcGVkX3RhZ3MgOiBzdHJpbmcgbGlzdFxuICAgIH1cblxuICBsZXQgaW5pdGlhbCA9IHsgcmVxdWlyZWRfdGFncyA9IFtdOyBkcm9wcGVkX3RhZ3MgPSBbIFwiZGlzYWJsZWRcIiBdIH1cblxuICBsZXQgZHJvcCB0IHRhZyA9XG4gICAgeyBkcm9wcGVkX3RhZ3MgPSB0YWcgOjogdC5kcm9wcGVkX3RhZ3NcbiAgICA7IHJlcXVpcmVkX3RhZ3MgPSBMaXN0LmZpbHRlciAoKCA8PiApIHRhZykgdC5yZXF1aXJlZF90YWdzXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXF1aXJlIHQgdGFnID1cbiAgICB7IGRyb3BwZWRfdGFncyA9IExpc3QuZmlsdGVyICgoIDw+ICkgdGFnKSB0LmRyb3BwZWRfdGFnc1xuICAgIDsgcmVxdWlyZWRfdGFncyA9IHRhZyA6OiB0LnJlcXVpcmVkX3RhZ3NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGVudGlyZV9tb2R1bGVfZGlzYWJsZWQgdCB+cGFydGlhbF90YWdzOnRhZ3MgPVxuICAgIExpc3QuZXhpc3RzIChmdW4gZHJvcHBlZCAtPiBMaXN0Lm1lbSBkcm9wcGVkIHRhZ3MpIHQuZHJvcHBlZF90YWdzXG4gIDs7XG5cbiAgbGV0IGRpc2FibGVkIHQgfmNvbXBsZXRlX3RhZ3M6dGFncyA9XG4gICAgTGlzdC5leGlzdHMgKGZ1biByZXEgLT4gbm90IChMaXN0Lm1lbSByZXEgdGFncykpIHQucmVxdWlyZWRfdGFnc1xuICAgIHx8IExpc3QuZXhpc3RzIChmdW4gZHJvcHBlZCAtPiBMaXN0Lm1lbSBkcm9wcGVkIHRhZ3MpIHQuZHJvcHBlZF90YWdzXG4gIDs7XG5lbmRcblxudHlwZSB3aGljaF90ZXN0cyA9XG4gIHsgbGlibmFtZSA6IHN0cmluZ1xuICA7IG9ubHlfdGVzdF9sb2NhdGlvbiA6IChmaWxlbmFtZSAqIGxpbmVfbnVtYmVyIG9wdGlvbiAqIGJvb2wgcmVmKSBsaXN0XG4gIDsgbmFtZV9maWx0ZXIgOiBzdHJpbmcgbGlzdFxuICA7IHdoaWNoX3RhZ3MgOiBUYWdfcHJlZGljYXRlLnRcbiAgfVxuXG50eXBlIHRlc3RfbW9kZSA9XG4gIHsgd2hpY2hfdGVzdHMgOiB3aGljaF90ZXN0c1xuICA7IHdoYXRfdG9fZG8gOiBbIGBSdW5fcGFydGl0aW9uIG9mIHN0cmluZyBvcHRpb24gfCBgTGlzdF9wYXJ0aXRpb25zIF1cbiAgfVxuXG5tb2R1bGUgQWN0aW9uIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgWyBgSWdub3JlXG4gICAgfCBgVGVzdF9tb2RlIG9mIHRlc3RfbW9kZVxuICAgIF1cblxuICB2YWwgZ2V0IDogdW5pdCAtPiB0XG4gIHZhbCBzZXQgOiB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYElnbm9yZVxuICAgIHwgYFRlc3RfbW9kZSBvZiB0ZXN0X21vZGVcbiAgICBdXG5cbiAgbGV0IGFjdGlvbiA6IHQgcmVmID0gcmVmIGBJZ25vcmVcblxuICBsZXQgZm9yY2VfZHJvcCA9XG4gICAgdHJ5XG4gICAgICBpZ25vcmUgKFN5cy5nZXRlbnYgXCJGT1JDRV9EUk9QX0lOTElORV9URVNUXCIgOiBzdHJpbmcpO1xuICAgICAgdHJ1ZVxuICAgIHdpdGhcbiAgICB8IE5vdF9mb3VuZCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBnZXQgKCkgPVxuICAgICgqIFRoaXMgaXMgdXNlZnVsIHdoZW4gY29tcGlsaW5nIHRvIGphdmFzY3JpcHQuXG4gICAgICAgSnNfb2Zfb2NhbWwgY2FuIHN0YXRpY2FsbHkgZXZhbHVhdGUgW1N5cy5nZXRlbnYgXCJGT1JDRV9EUk9QX0lOTElORV9URVNUXCJdXG4gICAgICAgYW5kIGlubGluZSB0aGUgcmVzdWx0IChbYElnbm9yZV0pIHdoZW5ldmVyIFtnZXQgKCldIGlzIGNhbGxlZC5cbiAgICAgICBVbml0IHRlc3RzIGNhbiB0aGVuIGJlIHRyZWF0ZWQgYXMgZGVhZGNvZGUgc2luY2UgdGhlIGFyZ3VtZW50IFtmXSBvZiB0aGUgW3Rlc3RdXG4gICAgICAgZnVuY3Rpb24gYmVsb3cgaXMgbmV2ZXIgdXNlZC4gKilcbiAgICBpZiBmb3JjZV9kcm9wIHRoZW4gYElnbm9yZSBlbHNlICFhY3Rpb25cbiAgOztcblxuICBsZXQgc2V0IHYgPSBhY3Rpb24gOj0gdlxuZW5kXG5cbm1vZHVsZSBQYXJ0aXRpb24gOiBzaWdcbiAgdmFsIGZvdW5kX3Rlc3QgOiB1bml0IC0+IHVuaXRcbiAgdmFsIHNldF9jdXJyZW50IDogc3RyaW5nIC0+IHVuaXRcbiAgdmFsIGlzX2N1cnJlbnQgOiBzdHJpbmcgb3B0aW9uIC0+IGJvb2xcbiAgdmFsIGFsbCA6IHVuaXQgLT4gc3RyaW5nIGxpc3RcbmVuZCA9IHN0cnVjdFxuICBsZXQgYWxsID0gSGFzaHRibC5jcmVhdGUgMjNcbiAgbGV0IGN1cnJlbnQgPSByZWYgXCJcIlxuICBsZXQgc2V0X2N1cnJlbnQgeCA9IGN1cnJlbnQgOj0geFxuXG4gIGxldCBmb3VuZF90ZXN0ICgpID1cbiAgICBpZiAhY3VycmVudCA8PiBcIlwiICYmIG5vdCAoSGFzaHRibC5tZW0gYWxsICFjdXJyZW50KSB0aGVuIEhhc2h0YmwuYWRkIGFsbCAhY3VycmVudCAoKVxuICA7O1xuXG4gIGxldCBpc19jdXJyZW50ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBwIC0+IHAgPSAhY3VycmVudFxuICA7O1xuXG4gIGxldCBhbGwgKCkgPSBMaXN0LnNvcnQgU3RyaW5nLmNvbXBhcmUgKEhhc2h0YmwuZm9sZCAoZnVuIGsgKCkgYWNjIC0+IGsgOjogYWNjKSBhbGwgW10pXG5lbmRcblxubW9kdWxlIE1vZHVsZV9jb250ZXh0ID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSBvbmVfbW9kdWxlID1cbiAgICAgIHsgZGVzY3IgOiBzdHJpbmdcbiAgICAgIDsgdGFncyA6IHN0cmluZyBsaXN0XG4gICAgICB9XG5cbiAgICB0eXBlIHQgPSBvbmVfbW9kdWxlIGxpc3RcblxuICAgIGxldCBkZXNjciB0ID0gTGlzdC5tYXAgKGZ1biBtIC0+IG0uZGVzY3IpIHRcbiAgICBsZXQgdGFncyB0ID0gTGlzdC5jb25jYXQgKExpc3QubWFwIChmdW4gbSAtPiBtLnRhZ3MpIHQpXG4gIGVuZFxuXG4gIGxldCBjdXJyZW50IDogVC50IHJlZiA9IHJlZiBbXVxuXG4gIGxldCB3aXRoXyB+ZGVzY3IgfnRhZ3MgZiA9XG4gICAgbGV0IHByZXYgPSAhY3VycmVudCBpblxuICAgIGN1cnJlbnQgOj0geyBULmRlc2NyOyB0YWdzIH0gOjogcHJldjtcbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZiAoKSBpblxuICAgICAgY3VycmVudCA6PSBwcmV2O1xuICAgICAgeFxuICAgIHdpdGhcbiAgICB8IGUgLT5cbiAgICAgIGN1cnJlbnQgOj0gcHJldjtcbiAgICAgIHJhaXNlIGVcbiAgOztcblxuICBsZXQgY3VycmVudF9kZXNjciAoKSA9IFQuZGVzY3IgIWN1cnJlbnRcbiAgbGV0IGN1cnJlbnRfdGFncyAoKSA9IFQudGFncyAhY3VycmVudFxuZW5kXG5cbmxldCB2ZXJib3NlID0gcmVmIGZhbHNlXG5sZXQgc3RyaWN0ID0gcmVmIGZhbHNlXG5sZXQgc2hvd19jb3VudHMgPSByZWYgZmFsc2VcbmxldCBsaXN0X3Rlc3RfbmFtZXMgPSByZWYgZmFsc2VcbmxldCBkZWxheWVkX2Vycm9ycyA9IHJlZiBbXVxubGV0IHN0b3Bfb25fZXJyb3IgPSByZWYgZmFsc2VcbmxldCBsb2cgPSByZWYgTm9uZVxubGV0IHRpbWVfc2VjID0gcmVmIDAuXG5sZXQgdXNlX2NvbG9yID0gcmVmIHRydWVcbmxldCBpbl9wbGFjZSA9IHJlZiBmYWxzZVxubGV0IGRpZmZfY29tbWFuZCA9IHJlZiBOb25lXG5sZXQgc291cmNlX3RyZWVfcm9vdCA9IHJlZiBOb25lXG5sZXQgZGlmZl9wYXRoX3ByZWZpeCA9IHJlZiBOb25lXG5cbmxldCBkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZmlsZW5hbWUgbGluZSBzdGFydF9wb3MgZW5kX3BvcyA9XG4gIGxldCAobGF6eSBkZXNjcikgPSBkZXNjciBpblxuICBQcmludGYuc3ByaW50ZlxuICAgIFwiRmlsZSAlUywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZCVzXCJcbiAgICBmaWxlbmFtZVxuICAgIGxpbmVcbiAgICBzdGFydF9wb3NcbiAgICBlbmRfcG9zXG4gICAgKGlmIGRlc2NyID0gXCJcIiB0aGVuIFwiXCIgZWxzZSBcIjogXCIgXiBkZXNjcilcbjs7XG5cbmxldCBwYXJzZV9kZXNjciBzdHIgPVxuICB0cnlcbiAgICBTb21lXG4gICAgICAoU2NhbmYuc3NjYW5mXG4gICAgICAgICBzdHJcbiAgICAgICAgIFwiIEZpbGUgJVMgLCBsaW5lICVkICwgY2hhcmFjdGVycyAlZCAtICVkICUhXCJcbiAgICAgICAgIChmdW4gZmlsZSBsaW5lIF9zdGFydF9wb3MgX2VuZF9wb3MgLT4gZmlsZSwgU29tZSBsaW5lKSlcbiAgd2l0aFxuICB8IF8gLT5cbiAgICAodHJ5XG4gICAgICAgU29tZSAoU2NhbmYuc3NjYW5mIHN0ciBcIiBGaWxlICVTICwgbGluZSAlZCAlIVwiIChmdW4gZmlsZSBsaW5lIC0+IGZpbGUsIFNvbWUgbGluZSkpXG4gICAgIHdpdGhcbiAgICAgfCBfIC0+XG4gICAgICAgKHRyeSBTb21lIChTY2FuZi5zc2NhbmYgc3RyIFwiIEZpbGUgJVMgJSFcIiAoZnVuIGZpbGUgLT4gZmlsZSwgTm9uZSkpIHdpdGhcbiAgICAgICAgfCBfIC0+IE5vbmUpKVxuOztcblxubGV0ICgpID1cbiAgaWYgQmFzZS5FeHBvcnRlZF9mb3Jfc3BlY2lmaWNfdXNlcy5hbV90ZXN0aW5nXG4gIHRoZW4gKFxuICAgIG1hdGNoIEFycmF5LnRvX2xpc3QgU3lzLmFyZ3Ygd2l0aFxuICAgIHwgbmFtZSA6OiBcImlubGluZS10ZXN0LXJ1bm5lclwiIDo6IGxpYiA6OiByZXN0IC0+XG4gICAgICAoKiB3aGVuIHdlIHNlZSB0aGlzIGFyZ3VtZW50LCB3ZSBzd2l0Y2ggdG8gdGVzdCBtb2RlICopXG4gICAgICBsZXQgdGVzdHMgPSByZWYgW10gaW5cbiAgICAgIGxldCBsaXN0X3BhcnRpdGlvbnMgPSByZWYgZmFsc2UgaW5cbiAgICAgIGxldCBwYXJ0aXRpb24gPSByZWYgTm9uZSBpblxuICAgICAgbGV0IHRhZ19wcmVkaWNhdGUgPSByZWYgVGFnX3ByZWRpY2F0ZS5pbml0aWFsIGluXG4gICAgICBsZXQgbmFtZV9maWx0ZXIgPSByZWYgW10gaW5cbiAgICAgIHBhcnNlX2FyZ3ZcbiAgICAgICAgKEFycmF5Lm9mX2xpc3QgKG5hbWUgOjogcmVzdCkpXG4gICAgICAgIChBcmcuYWxpZ25cbiAgICAgICAgICAgWyAoIFwiLWxpc3QtdGVzdC1uYW1lc1wiXG4gICAgICAgICAgICAgLCBBcmcuVW5pdFxuICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgIGxpc3RfdGVzdF9uYW1lcyA6PSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB2ZXJib3NlIDo9IHRydWUpXG4gICAgICAgICAgICAgLCBcIiBEbyBub3QgcnVuIHRlc3RzIGJ1dCBzaG93IHdoYXQgd291bGQgaGF2ZSBiZWVuIHJ1blwiIClcbiAgICAgICAgICAgOyAoIFwiLWxpc3QtcGFydGl0aW9uc1wiXG4gICAgICAgICAgICAgLCBBcmcuVW5pdCAoZnVuICgpIC0+IGxpc3RfcGFydGl0aW9ucyA6PSB0cnVlKVxuICAgICAgICAgICAgICwgXCIgTGlzdHMgYWxsIHRoZSBwYXJ0aXRpb25zIHRoYXQgY29udGFpbiBhdCBsZWFzdCBvbmUgdGVzdCBvciB0ZXN0X21vZHVsZVwiIClcbiAgICAgICAgICAgOyAoIFwiLXBhcnRpdGlvblwiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nIChmdW4gaSAtPiBwYXJ0aXRpb24gOj0gU29tZSBpKVxuICAgICAgICAgICAgICwgXCIgT25seSBydW4gdGhlIHRlc3RzIGluIHRoZSBnaXZlbiBwYXJ0aXRpb25cIiApXG4gICAgICAgICAgIDsgXCItdmVyYm9zZVwiLCBBcmcuU2V0IHZlcmJvc2UsIFwiIFNob3cgdGhlIHRlc3RzIGFzIHRoZXkgcnVuXCJcbiAgICAgICAgICAgOyAoIFwiLXN0b3Atb24tZXJyb3JcIlxuICAgICAgICAgICAgICwgQXJnLlNldCBzdG9wX29uX2Vycm9yXG4gICAgICAgICAgICAgLCBcIiBSdW4gdGVzdHMgb25seSB1cCB0byB0aGUgZmlyc3QgZXJyb3IgKGRvZXNuJ3Qgd29yayBmb3IgZXhwZWN0IHRlc3RzKVwiIClcbiAgICAgICAgICAgOyBcIi1zdHJpY3RcIiwgQXJnLlNldCBzdHJpY3QsIFwiIEVuZCB3aXRoIGFuIGVycm9yIGlmIG5vIHRlc3RzIHdlcmUgcnVuXCJcbiAgICAgICAgICAgOyBcIi1zaG93LWNvdW50c1wiLCBBcmcuU2V0IHNob3dfY291bnRzLCBcIiBTaG93IHRoZSBudW1iZXIgb2YgdGVzdHMgcmFuXCJcbiAgICAgICAgICAgOyAoIFwiLWxvZ1wiXG4gICAgICAgICAgICAgLCBBcmcuVW5pdFxuICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICh0cnkgU3lzLnJlbW92ZSBcImlubGluZV90ZXN0cy5sb2dcIiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IF8gLT4gKCkpO1xuICAgICAgICAgICAgICAgICAgICBsb2cgOj0gU29tZSAob3Blbl9vdXQgXCJpbmxpbmVfdGVzdHMubG9nXCIpKVxuICAgICAgICAgICAgICwgXCIgTG9nIHRoZSB0ZXN0cyBydW4gaW4gaW5saW5lX3Rlc3RzLmxvZ1wiIClcbiAgICAgICAgICAgOyAoIFwiLWRyb3AtdGFnXCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IHRhZ19wcmVkaWNhdGUgOj0gVGFnX3ByZWRpY2F0ZS5kcm9wICF0YWdfcHJlZGljYXRlIHMpXG4gICAgICAgICAgICAgLCBcInRhZyBPbmx5IHJ1biB0ZXN0cyBub3QgdGFnZ2VkIHdpdGggW3RhZ10gKG92ZXJyaWRlcyBwcmV2aW91cyBcXFxuICAgICAgICAgICAgICAgIC1yZXF1aXJlLXRhZylcIiApXG4gICAgICAgICAgIDsgKCBcIi1yZXF1aXJlLXRhZ1wiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nXG4gICAgICAgICAgICAgICAgIChmdW4gcyAtPiB0YWdfcHJlZGljYXRlIDo9IFRhZ19wcmVkaWNhdGUucmVxdWlyZSAhdGFnX3ByZWRpY2F0ZSBzKVxuICAgICAgICAgICAgICwgXCJ0YWcgT25seSBydW4gdGVzdHMgdGFnZ2VkIHdpdGggW3RhZ10gKG92ZXJyaWRlcyBwcmV2aW91cyAtZHJvcC10YWcpXCIgKVxuICAgICAgICAgICA7ICggXCItbWF0Y2hpbmdcIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZyAoZnVuIHMgLT4gbmFtZV9maWx0ZXIgOj0gcyA6OiAhbmFtZV9maWx0ZXIpXG4gICAgICAgICAgICAgLCBcInN1YnN0cmluZyBPbmx5IHJ1biB0ZXN0cyB3aG9zZSBuYW1lcyBjb250YWluIHRoZSBnaXZlbiBzdWJzdHJpbmdcIiApXG4gICAgICAgICAgIDsgKCBcIi1vbmx5LXRlc3RcIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZ1xuICAgICAgICAgICAgICAgICAoZnVuIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGVuYW1lLCBpbmRleCA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcGFyc2VfZGVzY3IgcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChmaWxlLCBpbmRleCkgLT4gZmlsZSwgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy5jb250YWlucyBzICc6J1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gU3RyaW5nLmluZGV4IHMgJzonIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IFN0cmluZy5zdWIgcyAwIGkgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4X3N0cmluZyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nLnN1YiBzIChpICsgMSkgKFN0cmluZy5sZW5ndGggcyAtIGkgLSAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIGluZGV4X3N0cmluZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJndW1lbnQgJXMgZG9lc24ndCBmaXQgdGhlIGZvcm1hdCBmaWxlbmFtZVs6bGluZV9udW1iZXJdXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgU29tZSBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgcywgTm9uZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICB0ZXN0cyA6PSAoZmlsZW5hbWUsIGluZGV4LCByZWYgZmFsc2UpIDo6ICF0ZXN0cylcbiAgICAgICAgICAgICAsIFwibG9jYXRpb24gUnVuIG9ubHkgdGhlIHRlc3RzIHNwZWNpZmllZCBieSBhbGwgdGhlIC1vbmx5LXRlc3Qgb3B0aW9ucy5cXG5cXFxuICAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb25zIGNhbiBiZSBvbmUgb2YgdGhlc2UgZm9ybXM6XFxuXFxcbiAgICAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS5tbFxcblxcXG4gICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgICAgICAgICAtIGZpbGUubWw6bGluZV9udW1iZXJcXG5cXFxuICAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgICAgICAgICAgLSBGaWxlIFxcXCJmaWxlLm1sXFxcIlxcblxcXG4gICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgICAgICAgICAtIEZpbGUgXFxcImZpbGUubWxcXFwiLCBsaW5lIDIzXFxuXFxcbiAgICAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgIC0gRmlsZSBcXFwiZmlsZS5tbFxcXCIsIGxpbmUgMjMsIGNoYXJhY3RlcnMgMi0zXCIgKVxuICAgICAgICAgICA7IFwiLW5vLWNvbG9yXCIsIEFyZy5DbGVhciB1c2VfY29sb3IsIFwiIFN1bW1hcml6ZSB0ZXN0cyB3aXRob3V0IHVzaW5nIGNvbG9yXCJcbiAgICAgICAgICAgOyBcIi1pbi1wbGFjZVwiLCBBcmcuU2V0IGluX3BsYWNlLCBcIiBVcGRhdGUgZXhwZWN0IHRlc3RzIGluIHBsYWNlXCJcbiAgICAgICAgICAgOyAoIFwiLWRpZmYtY21kXCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IGRpZmZfY29tbWFuZCA6PSBTb21lIHMpXG4gICAgICAgICAgICAgLCBcIiBEaWZmIGNvbW1hbmQgZm9yIHRlc3RzIHRoYXQgcmVxdWlyZSBkaWZmaW5nICh1c2UgLSB0byBkaXNhYmxlIGRpZmZpbmcpXCIgKVxuICAgICAgICAgICA7ICggXCItc291cmNlLXRyZWUtcm9vdFwiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBzb3VyY2VfdHJlZV9yb290IDo9IFNvbWUgcylcbiAgICAgICAgICAgICAsIFwiIFBhdGggdG8gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlXCIgKVxuICAgICAgICAgICA7ICggXCItZGlmZi1wYXRoLXByZWZpeFwiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBkaWZmX3BhdGhfcHJlZml4IDo9IFNvbWUgcylcbiAgICAgICAgICAgICAsIFwiIFByZWZpeCB0byBwcmVwZW5kIHRvIGZpbGVwYXRocyBpbiB0ZXN0IG91dHB1dFwiIClcbiAgICAgICAgICAgXSlcbiAgICAgICAgKGZ1biBhbm9uIC0+XG4gICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXM6IHVuZXhwZWN0ZWQgYW5vbnltb3VzIGFyZ3VtZW50ICVzXFxuJSFcIiBuYW1lIGFub247XG4gICAgICAgICAgIGV4aXQgMSlcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgJXMgW2FyZ3NdXCIgbmFtZSBcImlubGluZS10ZXN0LXJ1bm5lclwiIGxpYik7XG4gICAgICBBY3Rpb24uc2V0XG4gICAgICAgIChgVGVzdF9tb2RlXG4gICAgICAgICAgIHsgd2hpY2hfdGVzdHMgPVxuICAgICAgICAgICAgICAgeyBsaWJuYW1lID0gbGliXG4gICAgICAgICAgICAgICA7IG9ubHlfdGVzdF9sb2NhdGlvbiA9ICF0ZXN0c1xuICAgICAgICAgICAgICAgOyB3aGljaF90YWdzID0gIXRhZ19wcmVkaWNhdGVcbiAgICAgICAgICAgICAgIDsgbmFtZV9maWx0ZXIgPSAhbmFtZV9maWx0ZXJcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgOyB3aGF0X3RvX2RvID1cbiAgICAgICAgICAgICAgIChpZiAhbGlzdF9wYXJ0aXRpb25zIHRoZW4gYExpc3RfcGFydGl0aW9ucyBlbHNlIGBSdW5fcGFydGl0aW9uICFwYXJ0aXRpb24pXG4gICAgICAgICAgIH0pXG4gICAgfCBfIC0+ICgpKVxuOztcblxubGV0IGFtX3Rlc3RfcnVubmVyID1cbiAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gIHwgYFRlc3RfbW9kZSBfIC0+IHRydWVcbiAgfCBgSWdub3JlIC0+IGZhbHNlXG47O1xuXG5sZXQgYW1fcnVubmluZ19lbnZfdmFyID1cbiAgKCogZm9yIGFwcHJveGltYXRlIGNvbXBhdGliaWxpdHksIGdpdmVuIHRoYXQgdGhlIHZhcmlhYmxlIGlzIG5vdCBleGFjdGx5IGVxdWl2YWxlbnRcbiAgICAgdG8gd2hhdCBQUFhfSU5MSU5FX1RFU1RfTElCX0FNX1JVTk5JTkdfSU5MSU5FX1RFU1QgdXNlZCB0byBiZSAqKVxuICBcIlRFU1RJTkdfRlJBTUVXT1JLXCJcbjs7XG5cbigqIFRoaXMgdmFsdWUgaXMgZGVwcmVjYXRlZCBpbiBwcmluY2lwbGUsIGluIGZhdm9yIG9mIENvcmUuYW1fcnVubmluZ190ZXN0LCBzb1xuICAgd2UncmUgZ29pbmcgdG8gbGl2ZSB3aXRoIHRoZSB1Z2x5IHBhdHRlcm4gbWF0Y2guICopXG5sZXQgYW1fcnVubmluZyA9XG4gIG1hdGNoIFN5cy5nZXRlbnYgXCJQUFhfSU5MSU5FX1RFU1RfTElCX0FNX1JVTk5JTkdfSU5MSU5FX1RFU1RcIiB3aXRoXG4gIHwgKF8gOiBzdHJpbmcpIC0+XG4gICAgdHJ1ZSAoKiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHBlb3BsZSBzZXR0aW5nIHRoaXMgdmFyaWFibGUgZGlyZWN0bHkgKilcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgKG1hdGNoIFN5cy5nZXRlbnYgYW1fcnVubmluZ19lbnZfdmFyIHdpdGhcbiAgICAgfCBcImlubGluZS10ZXN0XCIgLT4gdHJ1ZVxuICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gZmFsc2VcbiAgICAgfCBfIC0+IGZhbHNlKVxuOztcblxubGV0IHRlc3RpbmcgPVxuICBpZiBhbV90ZXN0X3J1bm5lclxuICB0aGVuIGBUZXN0aW5nIGBBbV90ZXN0X3J1bm5lclxuICBlbHNlIGlmIGFtX3J1bm5pbmdcbiAgdGhlbiBgVGVzdGluZyBgQW1fY2hpbGRfb2ZfdGVzdF9ydW5uZXJcbiAgZWxzZSBgTm90X3Rlc3Rpbmdcbjs7XG5cbmxldCB3YWxsX3RpbWVfY2xvY2tfbnMgKCkgPSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpXG5cbmxldCB3aGVyZV90b19jdXRfYmFja3RyYWNlID1cbiAgbGF6eVxuICAgIChCYXNlLlN0cmluZy5TZWFyY2hfcGF0dGVybi5jcmVhdGVcbiAgICAgICAoX19NT0RVTEVfXyBeIFwiLlwiIF4gXCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkc1wiKSlcbjs7XG5cbmxldCB0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkcyBmID1cbiAgbGV0IGJlZm9yZV9ucyA9IHdhbGxfdGltZV9jbG9ja19ucyAoKSBpblxuICBsZXQgcmVzID1cbiAgICAoKiBUbyBhdm9pZCBub2lzZSBpbiBiYWNrdHJhY2VzLCB3ZSBkbyB0d28gdGhpbmdzLlxuXG4gICAgICAgV2UgdXNlIFt3aGVyZV90b19jdXRfYmFja3RyYWNlXSBhYm92ZSB0byByZW1vdmUgdGhlIHN0YWNrIGZyYW1lcyBmb3IgdGhlIGN1cnJlbnRcbiAgICAgICBmdW5jdGlvbiBhbmQgYW55IGZ1bmN0aW9uIGl0IGdldHMgaW5saW5lZCBpbnRvLCBhcyBpdCdzIG5vdCBvZiBhbnkgaW50ZXJlc3QgdG8gdGhlXG4gICAgICAgdXNlciwgc2luY2UgaXQncyBub3QgdGFsa2luZyBhYm91dCB0aGVpciB0ZXN0IGJ1dCBpbnN0ZWFkIHRhbGtpbmcgYWJvdXQgdGhlXG4gICAgICAgcHB4X2lubGluZV90ZXN0IG1hY2hpbmVyeS5cblxuICAgICAgIFdlIGFsc28gYXZvaWQgaW5zZXJ0aW5nIGFueSBjb2RlIGJldHdlZW4gdGhlIFtmXSB0aGF0IGNvbWVzIGZyb20gdGhlIHVzZXIncyBmaWxlXG4gICAgICAgYW5kIGdyYWJiaW5nIHRoZSBiYWNrdHJhY2UgZnJvbSBpdHMgZXhjZXB0aW9ucyAobm8gd3JhcHBpbmcgb2YgW2ZdIHdpdGggaGlnaCBvcmRlclxuICAgICAgIGZ1bmN0aW9ucyBsaWtlIEV4bi5wcm90ZWN0LCBvciAoZnVuICgpIC0+IGYgKCk7IHRydWUpKS4gKilcbiAgICB0cnkgT2sgKGYgKCkpIHdpdGhcbiAgICB8IGV4biAtPiBFcnJvciAoZXhuLCBQcmludGV4Yy5nZXRfYmFja3RyYWNlICgpKVxuICBpblxuICB0aW1lX3NlYyA6PSBCYXNlLkludDYzLih3YWxsX3RpbWVfY2xvY2tfbnMgKCkgLSBiZWZvcmVfbnMgfD4gdG9fZmxvYXQpIC8uIDFlOTtcbiAgcmVzXG47O1xuXG5sZXQgc2F2ZWRfY2FtbF9yYW5kb21fc3RhdGUgPSBsYXp5IChTdGRsaWIuUmFuZG9tLlN0YXRlLm1ha2UgW3wgMTAwOyAyMDA7IDMwMCB8XSlcbmxldCBzYXZlZF9iYXNlX3JhbmRvbV9zdGF0ZSA9IGxhenkgKEJhc2UuUmFuZG9tLlN0YXRlLm1ha2UgW3wgMTExOyAyMjI7IDMzMyB8XSlcblxubGV0IHRpbWVfYW5kX3Jlc2V0X3JhbmRvbV9zZWVkcyBmID1cbiAgbGV0IGNhbWxfcmFuZG9tX3N0YXRlID0gU3RkbGliLlJhbmRvbS5nZXRfc3RhdGUgKCkgaW5cbiAgbGV0IGJhc2VfcmFuZG9tX3N0YXRlID0gQmFzZS5SYW5kb20uU3RhdGUuY29weSBCYXNlLlJhbmRvbS5TdGF0ZS5kZWZhdWx0IGluXG4gIFN0ZGxpYi5SYW5kb20uc2V0X3N0YXRlIChMYXp5LmZvcmNlIHNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlKTtcbiAgQmFzZS5SYW5kb20uc2V0X3N0YXRlIChMYXp5LmZvcmNlIHNhdmVkX2Jhc2VfcmFuZG9tX3N0YXRlKTtcbiAgbGV0IHJlc3VsdCA9IHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYgaW5cbiAgU3RkbGliLlJhbmRvbS5zZXRfc3RhdGUgY2FtbF9yYW5kb21fc3RhdGU7XG4gIEJhc2UuUmFuZG9tLnNldF9zdGF0ZSBiYXNlX3JhbmRvbV9zdGF0ZTtcbiAgcmVzdWx0XG47O1xuXG5sZXQgc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSA9XG4gIFN0cmluZy5jb25jYXRcbiAgICBcIlwiXG4gICAgKExpc3QubWFwXG4gICAgICAgKGZ1biBzIC0+IFwiICBpbiBURVNcIiBeIFwiVF9NT0RVTEUgYXQgXCIgXiBTdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpIHMgXiBcIlxcblwiKVxuICAgICAgIChNb2R1bGVfY29udGV4dC5jdXJyZW50X2Rlc2NyICgpKSlcbjs7XG5cbmxldCBwb3NpdGlvbl9tYXRjaCBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIGwgPVxuICBMaXN0LmV4aXN0c1xuICAgIChmdW4gKGZpbGVuYW1lLCBsaW5lX251bWJlcl9vcHQsIHVzZWQpIC0+XG4gICAgICAgbGV0IHBvc2l0aW9uX3N0YXJ0ID0gU3RyaW5nLmxlbmd0aCBkZWZfZmlsZW5hbWUgLSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgICAgbGV0IGZvdW5kID1cbiAgICAgICAgIHBvc2l0aW9uX3N0YXJ0ID49IDBcbiAgICAgICAgICYmXG4gICAgICAgICBsZXQgZW5kX29mX2RlZl9maWxlbmFtZSA9XG4gICAgICAgICAgIFN0cmluZy5zdWIgZGVmX2ZpbGVuYW1lIHBvc2l0aW9uX3N0YXJ0IChTdHJpbmcubGVuZ3RoIGZpbGVuYW1lKVxuICAgICAgICAgaW5cbiAgICAgICAgIGVuZF9vZl9kZWZfZmlsZW5hbWUgPSBmaWxlbmFtZVxuICAgICAgICAgJiYgKHBvc2l0aW9uX3N0YXJ0ID0gMCB8fCBkZWZfZmlsZW5hbWUuW3Bvc2l0aW9uX3N0YXJ0IC0gMV0gPSAnLycpXG4gICAgICAgICAmJlxuICAgICAgICAgbWF0Y2ggbGluZV9udW1iZXJfb3B0IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgICB8IFNvbWUgbGluZV9udW1iZXIgLT4gZGVmX2xpbmVfbnVtYmVyID0gbGluZV9udW1iZXJcbiAgICAgICBpblxuICAgICAgIGlmIGZvdW5kIHRoZW4gdXNlZCA6PSB0cnVlO1xuICAgICAgIGZvdW5kKVxuICAgIGxcbjs7XG5cbmxldCBuYW1lX2ZpbHRlcl9tYXRjaCB+bmFtZV9maWx0ZXIgZGVzY3IgPVxuICBtYXRjaCBuYW1lX2ZpbHRlciB3aXRoXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gOjogXyAtPlxuICAgIExpc3QuZXhpc3RzIChmdW4gc3Vic3RyaW5nIC0+IEJhc2UuU3RyaW5nLmlzX3N1YnN0cmluZyB+c3Vic3RyaW5nIGRlc2NyKSBuYW1lX2ZpbHRlclxuOztcblxubGV0IHByaW50X2RlbGF5ZWRfZXJyb3JzICgpID1cbiAgbWF0Y2ggTGlzdC5yZXYgIWRlbGF5ZWRfZXJyb3JzIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IF8gOjogXyBhcyBkZWxheWVkX2Vycm9ycyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwiXFxuJXNcXG4lIVwiIChTdHJpbmcubWFrZSA3MCAnPScpO1xuICAgIExpc3QuaXRlciAoZnVuIG1lc3NhZ2UgLT4gUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgbWVzc2FnZSkgZGVsYXllZF9lcnJvcnNcbjs7XG5cbmxldCBlcHJpbnRmX29yX2RlbGF5IGZtdCA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIChmdW4gcyAtPlxuICAgICAgIGlmICF2ZXJib3NlIHRoZW4gZGVsYXllZF9lcnJvcnMgOj0gcyA6OiAhZGVsYXllZF9lcnJvcnMgZWxzZSBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBzO1xuICAgICAgIGlmICFzdG9wX29uX2Vycm9yXG4gICAgICAgdGhlbiAoXG4gICAgICAgICBwcmludF9kZWxheWVkX2Vycm9ycyAoKTtcbiAgICAgICAgIGV4aXQgMikpXG4gICAgZm10XG47O1xuXG5sZXQgYWRkX2hvb2tzICgobW9kdWxlIEMpIDogY29uZmlnKSBmICgpID1cbiAgQy5wcmVfdGVzdF9ob29rICgpO1xuICBmICgpXG47O1xuXG5sZXQgaHVtX2JhY2t0cmFjZSBiYWNrdHJhY2UgPVxuICBsZXQgb3BlbiBCYXNlIGluXG4gIGJhY2t0cmFjZVxuICB8PiBTdHJpbmcuc3BsaXRfbGluZXNcbiAgfD4gTGlzdC50YWtlX3doaWxlIH5mOihmdW4gc3RyIC0+XG4gICAgbm90IChTdHJpbmcuU2VhcmNoX3BhdHRlcm4ubWF0Y2hlcyAoZm9yY2Ugd2hlcmVfdG9fY3V0X2JhY2t0cmFjZSkgc3RyKSlcbiAgfD4gTGlzdC5tYXAgfmY6KGZ1biBzdHIgLT4gXCIgIFwiIF4gc3RyIF4gXCJcXG5cIilcbiAgfD4gU3RyaW5nLmNvbmNhdFxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIHRlc3RfaW5uZXJcbiAgICAgICAgICAgICAgICAgICAgIH5jb25maWdcbiAgICAgICAgICAgICAgICAgICAgIH5kZXNjclxuICAgICAgICAgICAgICAgICAgICAgfnRhZ3NcbiAgICAgICAgICAgICAgICAgICAgIH5maWxlbmFtZTpkZWZfZmlsZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH5saW5lX251bWJlcjpkZWZfbGluZV9udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgICAgIH5lbmRfcG9zXG4gICAgICAgICAgICAgICAgICAgICBmXG4gICAgICAgICAgICAgICAgICAgICBib29sX29mX2ZcbiAgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYFRlc3RfbW9kZVxuICAgICAgeyB3aGljaF90ZXN0cyA9IHsgbGlibmFtZTsgb25seV90ZXN0X2xvY2F0aW9uOyB3aGljaF90YWdzOyBuYW1lX2ZpbHRlciB9XG4gICAgICA7IHdoYXRfdG9fZG9cbiAgICAgIH0gLT5cbiAgICBsZXQgZiA9IGFkZF9ob29rcyBjb25maWcgZiBpblxuICAgIGxldCBkZXNjciA9XG4gICAgICBsYXp5IChkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBzdGFydF9wb3MgZW5kX3BvcylcbiAgICBpblxuICAgIGxldCBjb21wbGV0ZV90YWdzID0gdGFncyBAIE1vZHVsZV9jb250ZXh0LmN1cnJlbnRfdGFncyAoKSBpblxuICAgIGxldCBzaG91bGRfcnVuID1cbiAgICAgIFNvbWUgbGlibmFtZSA9ICFkeW5hbWljX2xpYlxuICAgICAgJiYgKG1hdGNoIG9ubHlfdGVzdF9sb2NhdGlvbiB3aXRoXG4gICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICB8IF8gOjogXyAtPiBwb3NpdGlvbl9tYXRjaCBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIG9ubHlfdGVzdF9sb2NhdGlvbilcbiAgICAgICYmIChub3QgKFRhZ19wcmVkaWNhdGUuZGlzYWJsZWQgd2hpY2hfdGFncyB+Y29tcGxldGVfdGFncykpXG4gICAgICAmJiBuYW1lX2ZpbHRlcl9tYXRjaCB+bmFtZV9maWx0ZXIgKExhenkuZm9yY2UgZGVzY3IpXG4gICAgaW5cbiAgICBpZiBzaG91bGRfcnVuXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCB3aGF0X3RvX2RvIHdpdGhcbiAgICAgIHwgYExpc3RfcGFydGl0aW9ucyAtPiBQYXJ0aXRpb24uZm91bmRfdGVzdCAoKVxuICAgICAgfCBgUnVuX3BhcnRpdGlvbiBwYXJ0aXRpb24gLT5cbiAgICAgICAgaWYgUGFydGl0aW9uLmlzX2N1cnJlbnQgcGFydGl0aW9uXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBkZXNjciA9IExhenkuZm9yY2UgZGVzY3IgaW5cbiAgICAgICAgICBpbmNyIHRlc3RzX3JhbjtcbiAgICAgICAgICAobWF0Y2ggIWxvZyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICB8IFNvbWUgY2ggLT4gUHJpbnRmLmZwcmludGYgY2ggXCIlc1xcbiVzXCIgZGVzY3IgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpKTtcbiAgICAgICAgICBpZiAhdmVyYm9zZSB0aGVuIFByaW50Zi5wcmludGYgXCIlcyUhXCIgZGVzY3I7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICBpZiAhbGlzdF90ZXN0X25hbWVzXG4gICAgICAgICAgICB0aGVuIE9rIHRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKCogU2VlIFt0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkc10gZm9yIHdoeSB3ZSB1c2UgW2Jvb2xfb2ZfZl1cbiAgICAgICAgICAgICAgICAgcmF0aGVyIGhhdmUgdGhlIGNhbGxlciB3cmFwIFtmXSB0byBhZGp1c3QgaXRzIHJldHVybiB2YWx1ZS4gKilcbiAgICAgICAgICAgICAgUmVzdWx0Lm1hcCBib29sX29mX2YgKHRpbWVfYW5kX3Jlc2V0X3JhbmRvbV9zZWVkcyBmKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogSWYgIWxpc3RfdGVzdF9uYW1lcywgdGhpcyBpcyBpcyBhIGhhcm1sZXNzIHplcm8uICopXG4gICAgICAgICAgaWYgIXZlcmJvc2UgdGhlbiBQcmludGYucHJpbnRmIFwiICglLjNmIHNlYylcXG4lIVwiICF0aW1lX3NlYztcbiAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgT2sgdHJ1ZSAtPiAoKVxuICAgICAgICAgIHwgT2sgZmFsc2UgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdHNfZmFpbGVkO1xuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheSBcIiVzIGlzIGZhbHNlLlxcbiVzXFxuJSFcIiBkZXNjciAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgICB8IEVycm9yIChleG4sIGJhY2t0cmFjZSkgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdHNfZmFpbGVkO1xuICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IGh1bV9iYWNrdHJhY2UgYmFja3RyYWNlIGluXG4gICAgICAgICAgICBsZXQgZXhuX3N0ciA9IFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCBleG4gaW5cbiAgICAgICAgICAgIGxldCBzZXAgPSBpZiBTdHJpbmcuY29udGFpbnMgZXhuX3N0ciAnXFxuJyB0aGVuIFwiXFxuXCIgZWxzZSBcIiBcIiBpblxuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheVxuICAgICAgICAgICAgICBcIiVzIHRocmV3JXMlcy5cXG4lcyVzXFxuJSFcIlxuICAgICAgICAgICAgICBkZXNjclxuICAgICAgICAgICAgICBzZXBcbiAgICAgICAgICAgICAgZXhuX3N0clxuICAgICAgICAgICAgICBiYWNrdHJhY2VcbiAgICAgICAgICAgICAgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpKSlcbjs7XG5cbmxldCBzZXRfbGliX2FuZF9wYXJ0aXRpb24gc3RhdGljX2xpYiBwYXJ0aXRpb24gPVxuICBtYXRjaCAhZHluYW1pY19saWIgd2l0aFxuICB8IFNvbWUgXyAtPlxuICAgICgqIHBvc3NpYmxlIGlmIHRoZSBpbnRlcmZhY2UgaXMgdXNlZCBleHBsaWNpdGx5IG9yIGlmIHdlIGhhcHBlbiB0byBkeW5saW5rIHNvbWV0aGluZ1xuICAgICAgIHRoYXQgY29udGFpbiB0ZXN0cyAqKVxuICAgICgpXG4gIHwgTm9uZSAtPlxuICAgIGR5bmFtaWNfbGliIDo9IFNvbWUgc3RhdGljX2xpYjtcbiAgICAobWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gICAgIHwgYElnbm9yZSAtPiAoKVxuICAgICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0czsgd2hhdF90b19kbyB9IC0+XG4gICAgICAgaWYgd2hpY2hfdGVzdHMubGlibmFtZSA9IHN0YXRpY19saWJcbiAgICAgICB0aGVuIChcbiAgICAgICAgIGxldCByZXF1aXJlc19wYXJ0aXRpb24gPVxuICAgICAgICAgICBtYXRjaCB3aGF0X3RvX2RvIHdpdGhcbiAgICAgICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIHwgYFJ1bl9wYXJ0aXRpb24gKFNvbWUgXykgLT4gdHJ1ZVxuICAgICAgICAgICB8IGBSdW5fcGFydGl0aW9uIE5vbmUgLT4gZmFsc2VcbiAgICAgICAgIGluXG4gICAgICAgICBpZiBwYXJ0aXRpb24gPSBcIlwiICYmIHJlcXVpcmVzX3BhcnRpdGlvblxuICAgICAgICAgdGhlblxuICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgIFwicHB4X2lubGluZV90ZXN0OiBjYW5ub3QgdXNlIC1saXN0LXBhcnRpdGlvbiBvciAtcGFydGl0aW9uIHdpdGhvdXQgXFxcbiAgICAgICAgICAgICAgc3BlY2lmeWluZyBhIHBhcnRpdGlvbiBhdCBwcmVwcm9jZXNzaW5nIHRpbWVcIlxuICAgICAgICAgZWxzZSBQYXJ0aXRpb24uc2V0X2N1cnJlbnQgcGFydGl0aW9uKSlcbjs7XG5cbmxldCB1bnNldF9saWIgc3RhdGljX2xpYiA9XG4gIG1hdGNoICFkeW5hbWljX2xpYiB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICgqIG5vdCBnaXZpbmcgYW4gZXJyb3IsIGJlY2F1c2Ugd2hlbiBzb21lIGFubm95aW5nIHBlb3BsZSBwdXQgcGFfb3VuaXQgaW4gdGhlaXIgbGlzdFxuICAgICAgIG9mIHByZXByb2Nlc3NvcnMsIHBhX291bml0IGlzIHNldCB1cCB0d2ljZSBhbmQgd2UgaGF2ZSB0d28gY2FsbHMgdG8gdW5zZXRfbGliIGF0XG4gICAgICAgdGhlIGVuZCBvZiB0aGUgZmlsZSwgYW5kIHRoZSBzZWNvbmQgb25lIGNvbWVzIGluIHRoaXMgYnJhbmNoICopXG4gICAgKClcbiAgfCBTb21lIGxpYiAtPiBpZiBsaWIgPSBzdGF0aWNfbGliIHRoZW4gZHluYW1pY19saWIgOj0gTm9uZVxuOztcblxubGV0IHRlc3QgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmIChmdW4gYiAtPlxuICAgIGIpXG47O1xuXG5sZXQgdGVzdF91bml0IH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmID1cbiAgdGVzdF9pbm5lciB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWUgfmxpbmVfbnVtYmVyIH5zdGFydF9wb3MgfmVuZF9wb3MgZiAoZnVuICgpIC0+XG4gICAgdHJ1ZSlcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSB0ZXN0X21vZHVsZVxuICAgICAgICAgICAgICAgICAgICAgfmNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgfmRlc2NyXG4gICAgICAgICAgICAgICAgICAgICB+dGFnc1xuICAgICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lOmRlZl9maWxlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgfmxpbmVfbnVtYmVyOmRlZl9saW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgICAgfmVuZF9wb3NcbiAgICAgICAgICAgICAgICAgICAgIGZcbiAgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYFRlc3RfbW9kZVxuICAgICAgeyB3aGljaF90ZXN0cyA9IHsgbGlibmFtZTsgb25seV90ZXN0X2xvY2F0aW9uID0gXzsgbmFtZV9maWx0ZXIgPSBfOyB3aGljaF90YWdzIH1cbiAgICAgIDsgd2hhdF90b19kb1xuICAgICAgfSAtPlxuICAgIGxldCBmID0gYWRkX2hvb2tzIGNvbmZpZyBmIGluXG4gICAgbGV0IGRlc2NyICgpID0gZGlzcGxheWVkX2Rlc2NyIGRlc2NyIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgc3RhcnRfcG9zIGVuZF9wb3MgaW5cbiAgICBsZXQgcGFydGlhbF90YWdzID0gdGFncyBAIE1vZHVsZV9jb250ZXh0LmN1cnJlbnRfdGFncyAoKSBpblxuICAgIGxldCBzaG91bGRfcnVuID1cbiAgICAgIFNvbWUgbGlibmFtZSA9ICFkeW5hbWljX2xpYlxuICAgICAgKCogSWYsIG5vIG1hdHRlciB3aGF0IHRhZ3MgYSB0ZXN0IGRlZmluZXMsIHdlIGNlcnRhaW5seSB3aWxsIGRyb3AgYWxsIHRlc3RzIHdpdGhpblxuICAgICAgICAgdGhpcyBtb2R1bGUsIHRoZW4gZG9uJ3QgcnVuIHRoZSBtb2R1bGUgYXQgYWxsLiBUaGlzIG1lYW5zIHBlb3BsZSBjYW4gd3JpdGVcbiAgICAgICAgIHRoaW5ncyBsaWtlIHRoZSBmb2xsb3dpbmcgd2l0aG91dCBicmVha2luZyB0aGUgMzItYml0IGJ1aWxkOlxuICAgICAgICAgbGV0JXRlc3RfbW9kdWxlIFtAdGFncyBcIjY0LWJpdHMtb25seVwiXSA9IChtb2R1bGUgc3RydWN0XG4gICAgICAgICBsZXQgaSA9IEludDY0LnRvX2ludF9leG4gLi4uLlxuICAgICAgICAgZW5kKVxuICAgICAgICAgV2UgZG9uJ3Qgc2hvcnRjdXQgYmFzZWQgb24gcG9zaXRpb24sIGFzIHdlIGNhbid0IHRlbGwgd2hhdCBwb3NpdGlvbnMgdGhlXG4gICAgICAgICBpbm5lciB0ZXN0cyB3aWxsIGhhdmUuICopXG4gICAgICAmJiBub3QgKFRhZ19wcmVkaWNhdGUuZW50aXJlX21vZHVsZV9kaXNhYmxlZCB3aGljaF90YWdzIH5wYXJ0aWFsX3RhZ3MpXG4gICAgaW5cbiAgICBpZiBzaG91bGRfcnVuXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCB3aGF0X3RvX2RvIHdpdGhcbiAgICAgIHwgYExpc3RfcGFydGl0aW9ucyAtPiBQYXJ0aXRpb24uZm91bmRfdGVzdCAoKVxuICAgICAgfCBgUnVuX3BhcnRpdGlvbiBwYXJ0aXRpb24gLT5cbiAgICAgICAgaWYgUGFydGl0aW9uLmlzX2N1cnJlbnQgcGFydGl0aW9uXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGluY3IgdGVzdF9tb2R1bGVzX3JhbjtcbiAgICAgICAgICBsZXQgZGVzY3IgPSBkZXNjciAoKSBpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBNb2R1bGVfY29udGV4dC53aXRoXyB+ZGVzY3IgfnRhZ3MgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAoKiBXZSBkbyBub3QgcmVzZXQgcmFuZG9tIHN0YXRlcyB1cG9uIGVudGVyaW5nIFtsZXQldGVzdF9tb2R1bGVdLlxuXG4gICAgICAgICAgICAgICAgIENvbjogQ29kZSBpbiB0ZXN0IG1vZHVsZXMgY2FuIGFjY2lkZW50YWxseSBkZXBlbmQgb24gdG9wLWxldmVsIHJhbmRvbVxuICAgICAgICAgICAgICAgICBzdGF0ZSBlZmZlY3RzLlxuXG4gICAgICAgICAgICAgICAgIFByb3M6ICgxKSBXZSBkb24ndCByZXNldCB0byB0aGUgc2FtZSBzZWVkIG9uIGVudGVyaW5nIGEgW2xldCV0ZXN0X21vZHVsZV1cbiAgICAgICAgICAgICAgICAgYW5kIHRoZW4gYSBbbGV0JXRlc3RdIGluc2lkZSB0aGF0IG1vZHVsZSwgd2hpY2ggY291bGQgbGVhZCB0b1xuICAgICAgICAgICAgICAgICBhY2NpZGVudGFsbHkgcmFuZG9tbHkgZ2VuZXJhdGluZyB0aGUgc2FtZSB2YWx1ZXMgaW4gc29tZSB0ZXN0LiAoMikgTW92aW5nXG4gICAgICAgICAgICAgICAgIGNvZGUgaW50byBhbmQgb3V0IG9mIFtsZXQldGVzdF9tb2R1bGVdIGRvZXMgbm90IGNoYW5nZSBpdHMgcmFuZG9tIHNlZWQuXG4gICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgIHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gKClcbiAgICAgICAgICB8IEVycm9yIChleG4sIGJhY2t0cmFjZSkgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdF9tb2R1bGVzX2ZhaWxlZDtcbiAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBodW1fYmFja3RyYWNlIGJhY2t0cmFjZSBpblxuICAgICAgICAgICAgbGV0IGV4bl9zdHIgPSBTZXhwbGliMC5TZXhwX2NvbnYucHJpbnRleGNfcHJlZmVyX3NleHAgZXhuIGluXG4gICAgICAgICAgICBsZXQgc2VwID0gaWYgU3RyaW5nLmNvbnRhaW5zIGV4bl9zdHIgJ1xcbicgdGhlbiBcIlxcblwiIGVsc2UgXCIgXCIgaW5cbiAgICAgICAgICAgIGVwcmludGZfb3JfZGVsYXlcbiAgICAgICAgICAgICAgKFwiVEVTXCIgXl4gXCJUX01PRFVMRSBhdCAlcyB0aHJldyVzJXMuXFxuJXMlc1xcbiUhXCIpXG4gICAgICAgICAgICAgIChTdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpIGRlc2NyKVxuICAgICAgICAgICAgICBzZXBcbiAgICAgICAgICAgICAgZXhuX3N0clxuICAgICAgICAgICAgICBiYWNrdHJhY2VcbiAgICAgICAgICAgICAgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpKSlcbjs7XG5cbmxldCBzdW1tYXJpemUgKCkgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+XG4gICAgaWYgU3lzLmFyZ3YgPD4gW3x8XSAmJiBGaWxlbmFtZS5iYXNlbmFtZSBTeXMuYXJndi4oMCkgPSBcImlubGluZV90ZXN0c19ydW5uZXIuZXhlXCJcbiAgICB0aGVuXG4gICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICBcImlubGluZV90ZXN0c19ydW5uZXIuZXhlIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBydW4gYnkgaGFuZCwgeW91IFxcblxcXG4gICAgICAgICBzaG91bGQgcnVuIHRoZSBpbmxpbmVfdGVzdHNfcnVubmVyIHNjcmlwdCBpbnN0ZWFkLlxcblxcXG4gICAgICAgICAlIVwiXG4gICAgZWxzZVxuICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgXCJZb3UgYXJlIGRvaW5nIHNvbWV0aGluZyB1bmV4cGVjdGVkIHdpdGggdGhlIHRlc3RzLiBObyB0ZXN0cyBoYXZlIFxcblxcXG4gICAgICAgICBiZWVuIHJ1bi4gWW91IHNob3VsZCB1c2UgdGhlIGlubGluZV90ZXN0c19ydW5uZXIgc2NyaXB0IHRvIHJ1biBcXG5cXFxuICAgICAgICAgdGVzdHMuXFxuXFxcbiAgICAgICAgICUhXCI7XG4gICAgVGVzdF9yZXN1bHQuRXJyb3JcbiAgfCBgVGVzdF9tb2RlIHsgd2hpY2hfdGVzdHMgPSBfOyB3aGF0X3RvX2RvID0gYExpc3RfcGFydGl0aW9ucyB9IC0+XG4gICAgTGlzdC5pdGVyIChQcmludGYucHJpbnRmIFwiJXNcXG5cIikgKFBhcnRpdGlvbi5hbGwgKCkpO1xuICAgIFRlc3RfcmVzdWx0LlN1Y2Nlc3NcbiAgfCBgVGVzdF9tb2RlIHsgd2hhdF90b19kbyA9IGBSdW5fcGFydGl0aW9uIF87IHdoaWNoX3Rlc3RzIH0gLT5cbiAgICAobWF0Y2ggIWxvZyB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgY2ggLT4gY2xvc2Vfb3V0IGNoKTtcbiAgICBwcmludF9kZWxheWVkX2Vycm9ycyAoKTtcbiAgICAobWF0Y2ggIXRlc3RzX2ZhaWxlZCwgIXRlc3RfbW9kdWxlc19mYWlsZWQgd2l0aFxuICAgICB8IDAsIDAgLT5cbiAgICAgICBpZiAhc2hvd19jb3VudHNcbiAgICAgICB0aGVuXG4gICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICBcIiVkIHRlc3RzIHJhbiwgJWQgdGVzdF9tb2R1bGVzIHJhblxcbiUhXCJcbiAgICAgICAgICAgIXRlc3RzX3JhblxuICAgICAgICAgICAhdGVzdF9tb2R1bGVzX3JhbjtcbiAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgIGxldCB1bnVzZWRfdGVzdHMgPVxuICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIChfLCBfLCB1c2VkKSAtPiBub3QgIXVzZWQpIHdoaWNoX3Rlc3RzLm9ubHlfdGVzdF9sb2NhdGlvblxuICAgICAgICAgaW5cbiAgICAgICAgIG1hdGNoIHVudXNlZF90ZXN0cyB3aXRoXG4gICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgIHwgXyA6OiBfIC0+IFNvbWUgdW51c2VkX3Rlc3RzXG4gICAgICAgaW5cbiAgICAgICAobWF0Y2ggZXJyb3JzIHdpdGhcbiAgICAgICAgfCBTb21lIHRlc3RzIC0+XG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwicHB4X2lubGluZV90ZXN0IGVycm9yOiB0aGUgZm9sbG93aW5nIC1vbmx5LXRlc3QgZmxhZ3MgbWF0Y2hlZCBub3RoaW5nOlwiO1xuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1biAoZmlsZW5hbWUsIGxpbmVfbnVtYmVyX29wdCwgXykgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIGxpbmVfbnVtYmVyX29wdCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gUHJpbnRmLmVwcmludGYgXCIgJXNcIiBmaWxlbmFtZVxuICAgICAgICAgICAgICAgfCBTb21lIGxpbmVfbnVtYmVyIC0+IFByaW50Zi5lcHJpbnRmIFwiICVzOiVkXCIgZmlsZW5hbWUgbGluZV9udW1iZXIpXG4gICAgICAgICAgICB0ZXN0cztcbiAgICAgICAgICBQcmludGYuZXByaW50ZiBcIi5cXG4lIVwiO1xuICAgICAgICAgIFRlc3RfcmVzdWx0LkVycm9yXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmICF0ZXN0c19yYW4gPSAwICYmICFzdHJpY3RcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwicHB4X2lubGluZV90ZXN0IGVycm9yOiBubyB0ZXN0cyBoYXZlIGJlZW4gcnVuLlxcbiUhXCI7XG4gICAgICAgICAgICBUZXN0X3Jlc3VsdC5FcnJvcilcbiAgICAgICAgICBlbHNlIFRlc3RfcmVzdWx0LlN1Y2Nlc3MpXG4gICAgIHwgY291bnQsIGNvdW50X3Rlc3RfbW9kdWxlcyAtPlxuICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICBcIkZBSUxFRCAlZCAvICVkIHRlc3RzJXNcXG4lIVwiXG4gICAgICAgICBjb3VudFxuICAgICAgICAgIXRlc3RzX3JhblxuICAgICAgICAgKGlmIGNvdW50X3Rlc3RfbW9kdWxlcyA9IDBcbiAgICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIChcIiwgJWQgVEVTXCIgXl4gXCJUX01PRFVMRVNcIikgY291bnRfdGVzdF9tb2R1bGVzKTtcbiAgICAgICBUZXN0X3Jlc3VsdC5GYWlsdXJlKVxuOztcblxubGV0IHVzZV9jb2xvciA9ICF1c2VfY29sb3JcbmxldCBpbl9wbGFjZSA9ICFpbl9wbGFjZVxubGV0IGRpZmZfY29tbWFuZCA9ICFkaWZmX2NvbW1hbmRcbmxldCBkaWZmX3BhdGhfcHJlZml4ID0gIWRpZmZfcGF0aF9wcmVmaXhcbmxldCBzb3VyY2VfdHJlZV9yb290ID0gIXNvdXJjZV90cmVlX3Jvb3RcbmxldCBldmFsdWF0b3JzID0gcmVmIFsgc3VtbWFyaXplIF1cbmxldCBhZGRfZXZhbHVhdG9yIH5mID0gZXZhbHVhdG9ycyA6PSBmIDo6ICFldmFsdWF0b3JzXG5cbmxldCBleGl0ICgpID1cbiAgTGlzdC5tYXAgKGZ1biBmIC0+IGYgKCkpIChMaXN0LnJldiAhZXZhbHVhdG9ycylcbiAgfD4gVGVzdF9yZXN1bHQuY29tYmluZV9hbGxcbiAgfD4gVGVzdF9yZXN1bHQudG9fZXhpdF9jb2RlXG4gIHw+IGV4aXRcbjs7XG4iLCJvcGVuISBCYXNlXG5tb2R1bGUgR2MgPSBTdGRsaWIuR2NcblxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuXG5sZXQgYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhYmxlID0gXCJQUFhfTU9EVUxFX1RJTUVSXCJcblxubGV0IGdldF9hbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgKCkgPVxuICAoKiBhdm9pZCBTdGRsaWIuU3lzLmdldGVudl9vcHQgdG8gcHJlc2VydmUgNC4wNC54IGNvbXBhdGliaWxpdHkgKilcbiAgbWF0Y2ggU3RkbGliLlN5cy5nZXRlbnYgYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhYmxlIHdpdGhcbiAgfCB2YWx1ZSAtPiBTb21lIHZhbHVlXG4gIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuOztcblxubGV0IGFtX3JlY29yZGluZ192YWx1ZSA9IGdldF9hbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgKClcbmxldCBhbV9yZWNvcmRpbmcgPSBPcHRpb24uaXNfc29tZSBhbV9yZWNvcmRpbmdfdmFsdWVcblxubW9kdWxlIER1cmF0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IEludDYzLnRcblxuICBsZXQgdG9fbmFub3NlY29uZHMgdCA9IHRcbiAgbGV0IG9mX25hbm9zZWNvbmRzIHQgPSB0XG5cbiAgbW9kdWxlIHR5cGUgRm9ybWF0ID0gc2lnXG4gICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgdmFsIHRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCA6IHQgbGlzdCAtPiBzdHJpbmcgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgRGVmYXVsdF9mb3JtYXQgPSBzdHJ1Y3RcbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9IFN0cmluZy5jaG9wX3N1ZmZpeF9leG4gc3RyaW5nIH5zdWZmaXg6XCJuc1wiIHw+IEludDYzLm9mX3N0cmluZ1xuICAgIGxldCB0b19zdHJpbmcgbmFub3MgPSBJbnQ2My50b19zdHJpbmcgbmFub3MgXiBcIm5zXCJcbiAgICBsZXQgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IGxpc3QgPSBMaXN0Lm1hcCBsaXN0IH5mOnRvX3N0cmluZ1xuICBlbmRcblxuICBsZXQgZm9ybWF0ID0gcmVmIChtb2R1bGUgRGVmYXVsdF9mb3JtYXQgOiBGb3JtYXQpXG5cbiAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgIGxldCAobW9kdWxlIEZvcm1hdCkgPSAhZm9ybWF0IGluXG4gICAgRm9ybWF0Lm9mX3N0cmluZyBzdHJpbmdcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IHN0cmluZyA9XG4gICAgbGV0IChtb2R1bGUgRm9ybWF0KSA9ICFmb3JtYXQgaW5cbiAgICBGb3JtYXQudG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IHN0cmluZ1xuICA7O1xuZW5kXG5cbm1vZHVsZSBHY19ldmVudHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICB9XG5lbmRcblxubW9kdWxlIFRpbWluZ19ldmVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZGVzY3JpcHRpb24gOiBzdHJpbmdcbiAgICA7IHJ1bnRpbWUgOiBEdXJhdGlvbi50XG4gICAgOyBnY19ldmVudHMgOiBHY19ldmVudHMudFxuICAgIDsgbmVzdGVkX3RpbWluZ19ldmVudHMgOiB0IGxpc3RcbiAgICB9XG5lbmRcblxubW9kdWxlIFRpbWVyID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIDogc3RyaW5nXG4gICAgOyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgOiBEdXJhdGlvbi50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX2djX3N0YXRzIDogR2Muc3RhdFxuICAgIDsgbXV0YWJsZSBuZXN0ZWRfdGltZXIgOiB0IG9wdGlvblxuICAgIDsgbXV0YWJsZSB0aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlciA6IFRpbWluZ19ldmVudC50IGxpc3RcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSA/bmVzdGVkX3RpbWVyICgpID1cbiAgICB7IGN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uID0gXCJcIlxuICAgIDsgY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSA9IEludDYzLnplcm9cbiAgICA7IGN1cnJlbnRseV9ydW5uaW5nX2djX3N0YXRzID0gR2MucXVpY2tfc3RhdCAoKVxuICAgIDsgbmVzdGVkX3RpbWVyXG4gICAgOyB0aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlciA9IFtdXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXNldCB0ID1cbiAgICB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIDwtIFwiXCI7XG4gICAgdC5jdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lIDwtIEludDYzLnplcm87XG4gICAgbWF0Y2ggdC5uZXN0ZWRfdGltZXIgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBuZXN0ZWQgLT4gbmVzdGVkLnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyIDwtIFtdXG4gIDs7XG5cbiAgbGV0IHJlY29yZF9zdGFydCB0IGRlc2NyaXB0aW9uID1cbiAgICBpZiBhbV9yZWNvcmRpbmdcbiAgICB0aGVuIChcbiAgICAgIGFzc2VydCAoU3RyaW5nLmlzX2VtcHR5IHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24pO1xuICAgICAgdC5jdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbiA8LSBkZXNjcmlwdGlvbjtcbiAgICAgIHQuY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgPC0gR2MucXVpY2tfc3RhdCAoKTtcbiAgICAgICgqIGNhbGwgW1RpbWVfbm93XSBhcyBsYXRlIGFzIHBvc3NpYmxlIGJlZm9yZSBydW5uaW5nIHRoZSBtb2R1bGUgYm9keSAqKVxuICAgICAgdC5jdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lIDwtIFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkpXG4gIDs7XG5cbiAgbGV0IHJlY29yZF91bnRpbCB0IGRlc2NyaXB0aW9uID1cbiAgICBpZiBhbV9yZWNvcmRpbmdcbiAgICB0aGVuIChcbiAgICAgICgqIGNvbXB1dGUgW1RpbWVfbm93XSBhcyBzb29uIGFzIHBvc3NpYmxlIGFmdGVyIHJ1bm5pbmcgdGhlIG1vZHVsZSBib2R5ICopXG4gICAgICBsZXQgdW50aWwgPSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpIGluXG4gICAgICBsZXQgc3RhcnQgPSB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgaW5cbiAgICAgIGxldCBnY19zdGF0c19hZnRlciA9IEdjLnF1aWNrX3N0YXQgKCkgaW5cbiAgICAgIGxldCBnY19zdGF0c19iZWZvcmUgPSB0LmN1cnJlbnRseV9ydW5uaW5nX2djX3N0YXRzIGluXG4gICAgICBsZXQgcnVudGltZSA9IEludDYzLiggLSApIHVudGlsIHN0YXJ0IGluXG4gICAgICBhc3NlcnQgKFN0cmluZy5lcXVhbCB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKTtcbiAgICAgIGxldCBnY19ldmVudHMgOiBHY19ldmVudHMudCA9XG4gICAgICAgIHsgbWlub3JfY29sbGVjdGlvbnMgPVxuICAgICAgICAgICAgZ2Nfc3RhdHNfYWZ0ZXIubWlub3JfY29sbGVjdGlvbnMgLSBnY19zdGF0c19iZWZvcmUubWlub3JfY29sbGVjdGlvbnNcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9XG4gICAgICAgICAgICBnY19zdGF0c19hZnRlci5tYWpvcl9jb2xsZWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5tYWpvcl9jb2xsZWN0aW9uc1xuICAgICAgICA7IGNvbXBhY3Rpb25zID0gZ2Nfc3RhdHNfYWZ0ZXIuY29tcGFjdGlvbnMgLSBnY19zdGF0c19iZWZvcmUuY29tcGFjdGlvbnNcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9XG4gICAgICAgIG1hdGNoIHQubmVzdGVkX3RpbWVyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSBuZXN0ZWQgLT4gTGlzdC5yZXYgbmVzdGVkLnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyXG4gICAgICBpblxuICAgICAgbGV0IHRpbWluZ19ldmVudCA6IFRpbWluZ19ldmVudC50ID1cbiAgICAgICAgeyBkZXNjcmlwdGlvbjsgcnVudGltZTsgZ2NfZXZlbnRzOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB9XG4gICAgICBpblxuICAgICAgdC50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlclxuICAgICAgPC0gdGltaW5nX2V2ZW50IDo6IHQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXI7XG4gICAgICByZXNldCB0KVxuICA7O1xuZW5kXG5cbmxldCBkZWZpbml0aW9uX3RpbWVyID0gVGltZXIuY3JlYXRlICgpXG5sZXQgbW9kdWxlX3RpbWVyID0gVGltZXIuY3JlYXRlIH5uZXN0ZWRfdGltZXI6ZGVmaW5pdGlvbl90aW1lciAoKVxubGV0IHJlY29yZF9zdGFydCBtb2R1bGVfbmFtZSA9IFRpbWVyLnJlY29yZF9zdGFydCBtb2R1bGVfdGltZXIgbW9kdWxlX25hbWVcbmxldCByZWNvcmRfdW50aWwgbW9kdWxlX25hbWUgPSBUaW1lci5yZWNvcmRfdW50aWwgbW9kdWxlX3RpbWVyIG1vZHVsZV9uYW1lXG5sZXQgcmVjb3JkX2RlZmluaXRpb25fc3RhcnQgbG9jID0gVGltZXIucmVjb3JkX3N0YXJ0IGRlZmluaXRpb25fdGltZXIgbG9jXG5sZXQgcmVjb3JkX2RlZmluaXRpb25fdW50aWwgbG9jID0gVGltZXIucmVjb3JkX3VudGlsIGRlZmluaXRpb25fdGltZXIgbG9jXG5cbmxldCBnY19ldmVudHNfc3VmZml4X3N0cmluZ1xuICAgICAgKHsgbWlub3JfY29sbGVjdGlvbnM7IG1ham9yX2NvbGxlY3Rpb25zOyBjb21wYWN0aW9ucyB9IDogR2NfZXZlbnRzLnQpXG4gID1cbiAgbGV0IHRvX2xpc3QgZGVzY3JpcHRpb24gY291bnQgPVxuICAgIGlmIGNvdW50ID0gMCB0aGVuIFtdIGVsc2UgWyBJbnQudG9fc3RyaW5nIGNvdW50IF4gXCIgXCIgXiBkZXNjcmlwdGlvbiBdXG4gIGluXG4gIGxldCBzdHJpbmdzID1cbiAgICB0b19saXN0IFwibWlub3IgY29sbGVjdGlvbnNcIiBtaW5vcl9jb2xsZWN0aW9uc1xuICAgIEAgdG9fbGlzdCBcIm1ham9yIGNvbGxlY3Rpb25zXCIgbWFqb3JfY29sbGVjdGlvbnNcbiAgICBAIHRvX2xpc3QgXCJjb21wYWN0aW9uc1wiIGNvbXBhY3Rpb25zXG4gIGluXG4gIGlmIExpc3QuaXNfZW1wdHkgc3RyaW5ncyB0aGVuIFwiXCIgZWxzZSBcIjsgR0M6IFwiIF4gU3RyaW5nLmNvbmNhdCBzdHJpbmdzIH5zZXA6XCIsIFwiXG47O1xuXG5sZXQgd2l0aF9sZWZ0X2NvbHVtbl9yaWdodF9qdXN0aWZpZWQgbGlzdCA9XG4gIGxldCBsZWZ0X2NvbHVtbl93aWR0aCA9XG4gICAgTGlzdC5mb2xkIGxpc3QgfmluaXQ6MCB+ZjooZnVuIHdpZHRoIChsZWZ0LCBfKSAtPiBJbnQubWF4IHdpZHRoIChTdHJpbmcubGVuZ3RoIGxlZnQpKVxuICBpblxuICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gKGxlZnQsIHJpZ2h0KSAtPlxuICAgIFByaW50Zi5zcHJpbnRmIFwiJSpzICVzXCIgbGVmdF9jb2x1bW5fd2lkdGggbGVmdCByaWdodClcbjs7XG5cbmxldCByZWMgdGltaW5nX2V2ZW50c190b19zdHJpbmdzIGxpc3QgfmluZGVudCA9XG4gIGxldCBkdXJhdGlvbl9zdHJpbmdzID1cbiAgICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gKHRpbWluZ19ldmVudCA6IFRpbWluZ19ldmVudC50KSAtPiB0aW1pbmdfZXZlbnQucnVudGltZSlcbiAgICB8PiBEdXJhdGlvbi50b19zdHJpbmdfd2l0aF9zYW1lX3VuaXRcbiAgaW5cbiAgbGV0IHByZWZpeCA9IFN0cmluZy5tYWtlIGluZGVudCAnICcgaW5cbiAgTGlzdC5tYXAyX2V4blxuICAgIGR1cmF0aW9uX3N0cmluZ3NcbiAgICBsaXN0XG4gICAgfmY6XG4gICAgICAoZnVuXG4gICAgICAgIGR1cmF0aW9uX3N0cmluZyB7IHJ1bnRpbWUgPSBfOyBkZXNjcmlwdGlvbjsgZ2NfZXZlbnRzOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB9IC0+XG4gICAgICAgICggZHVyYXRpb25fc3RyaW5nXG4gICAgICAgICwgZGVzY3JpcHRpb25cbiAgICAgICAgICBeIGdjX2V2ZW50c19zdWZmaXhfc3RyaW5nIGdjX2V2ZW50c1xuICAgICAgICAgIF4gU3RyaW5nLmNvbmNhdFxuICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgKHRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB+aW5kZW50OihpbmRlbnQgKyA0KSlcbiAgICAgICAgICAgICAgICAgfmY6KGZ1biBsaW5lIC0+IFwiXFxuXCIgXiBsaW5lKSkgKSlcbiAgfD4gd2l0aF9sZWZ0X2NvbHVtbl9yaWdodF9qdXN0aWZpZWRcbiAgfD4gTGlzdC5tYXAgfmY6KGZ1biBsaW5lIC0+IHByZWZpeCBeIGxpbmUpXG47O1xuXG5sZXQgZmFrZV90aW1pbmdfZXZlbnRzID1cbiAgbGV0IGdjX2V2ZW50cyBpIDogR2NfZXZlbnRzLnQgPVxuICAgIHsgbWlub3JfY29sbGVjdGlvbnMgPSAoaWYgaSAlIDIgPSAxIHRoZW4gMSBlbHNlIDApXG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9IChpZiBpICUgNCA9IDMgdGhlbiAxIGVsc2UgMClcbiAgICA7IGNvbXBhY3Rpb25zID0gKGlmIGkgJSA4ID0gNyB0aGVuIDEgZWxzZSAwKVxuICAgIH1cbiAgaW5cbiAgbGF6eVxuICAgIChMaXN0LmluaXQgMTIgfmY6KGZ1biBpIDogVGltaW5nX2V2ZW50LnQgLT5cbiAgICAgICB7IGRlc2NyaXB0aW9uID0gUHJpbnRmLnNwcmludGYgXCJGYWtlX19EZXBlbmRlbmN5XyVkXCIgKGkgKyAxKVxuICAgICAgIDsgcnVudGltZSA9IEludDYzLm9mX2ludCAoOTAwICogKGkgKyAxKSlcbiAgICAgICA7IGdjX2V2ZW50cyA9IGdjX2V2ZW50cyBpXG4gICAgICAgOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9XG4gICAgICAgICAgIChpZiAoaSArIDEpICUgNCA9IDBcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgTGlzdC5pbml0IChpICsgMSkgfmY6KGZ1biBqIDogVGltaW5nX2V2ZW50LnQgLT5cbiAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uID0gUHJpbnRmLnNwcmludGYgXCJMaW5lICVkXCIgKGogKyAxKVxuICAgICAgICAgICAgICAgIDsgcnVudGltZSA9IEludDYzLm9mX2ludCAoOTAwICogKGogKyAxKSlcbiAgICAgICAgICAgICAgICA7IGdjX2V2ZW50cyA9IGdjX2V2ZW50cyBqXG4gICAgICAgICAgICAgICAgOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9IFtdXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGVsc2UgW10pXG4gICAgICAgfSkpXG47O1xuXG5sZXQgcHJpbnRfcmVjb3JkZWRfdGltaW5nX2V2ZW50cyB0aW1pbmdfZXZlbnRzID1cbiAgbGV0IG5vdGlmeV9vZl9vdmVycmlkaW5nICgpID1cbiAgICBTdGRpby5wcmludF9lbmRsaW5lIFwicHB4X21vZHVsZV90aW1lcjogb3ZlcnJpZGluZyB0aW1lIG1lYXN1cmVtZW50cyBmb3IgdGVzdGluZ1wiXG4gIGluXG4gIGxldCB0aW1pbmdfZXZlbnRzID1cbiAgICBtYXRjaCBPcHRpb24udmFsdWVfZXhuIGFtX3JlY29yZGluZ192YWx1ZSB3aXRoXG4gICAgfCBcIkZBS0VfTU9EVUxFU1wiIC0+XG4gICAgICBub3RpZnlfb2Zfb3ZlcnJpZGluZyAoKTtcbiAgICAgIGZvcmNlIGZha2VfdGltaW5nX2V2ZW50c1xuICAgIHwgc3RyaW5nIC0+XG4gICAgICAobWF0Y2ggRHVyYXRpb24ub2Zfc3RyaW5nIHN0cmluZyB3aXRoXG4gICAgICAgfCBvdmVycmlkZSAtPlxuICAgICAgICAgbm90aWZ5X29mX292ZXJyaWRpbmcgKCk7XG4gICAgICAgICBMaXN0Lm1hcGkgdGltaW5nX2V2ZW50cyB+ZjooZnVuIGluZGV4ICh0aW1pbmdfZXZlbnQgOiBUaW1pbmdfZXZlbnQudCkgLT5cbiAgICAgICAgICAgbGV0IHJ1bnRpbWUgPSBJbnQ2My4oICogKSBvdmVycmlkZSAoSW50NjMub2ZfaW50IChpbmRleCArIDEpKSBpblxuICAgICAgICAgICBsZXQgbmVzdGVkX3RpbWluZ19ldmVudHMgPVxuICAgICAgICAgICAgIExpc3QubWFwaVxuICAgICAgICAgICAgICAgdGltaW5nX2V2ZW50Lm5lc3RlZF90aW1pbmdfZXZlbnRzXG4gICAgICAgICAgICAgICB+ZjooZnVuIGluZGV4IG5lc3RlZF90aW1pbmdfZXZlbnQgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHJ1bnRpbWUgPSBJbnQ2My4oICogKSBvdmVycmlkZSAoSW50NjMub2ZfaW50IChpbmRleCArIDEpKSBpblxuICAgICAgICAgICAgICAgICB7IG5lc3RlZF90aW1pbmdfZXZlbnQgd2l0aCBydW50aW1lIH0pXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHsgdGltaW5nX2V2ZW50IHdpdGggcnVudGltZTsgbmVzdGVkX3RpbWluZ19ldmVudHMgfSlcbiAgICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRpbWluZ19ldmVudHMpXG4gIGluXG4gIHRpbWluZ19ldmVudHMgfD4gdGltaW5nX2V2ZW50c190b19zdHJpbmdzIH5pbmRlbnQ6MCB8PiBMaXN0Lml0ZXIgfmY6U3RkaW8ucHJpbnRfZW5kbGluZVxuOztcblxubGV0ICgpID1cbiAgaWYgYW1fcmVjb3JkaW5nXG4gIHRoZW5cbiAgICBTdGRsaWIuYXRfZXhpdCAoZnVuICgpIC0+XG4gICAgICBwcmludF9yZWNvcmRlZF90aW1pbmdfZXZlbnRzXG4gICAgICAgIChMaXN0LnJldiBtb2R1bGVfdGltZXIudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXIpKVxuOztcbiIsInR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIEJhc2UuVHlwZV9lcXVhbC50ID0gVCA6ICgnYSwgJ2EpIHRcbnR5cGUgKCdhLCAnYikgZXF1YWwgPSAoJ2EsICdiKSB0XG5cbmxldCByZWZsID0gVFxubGV0IGNvbnYgOiB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gYSAtPiBiID0gZnVuIFQgeCAtPiB4XG5cbm1vZHVsZSBMaWZ0IChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYSBYLnQsIGIgWC50KSB0ID0gVFxuZW5kXG4iLCIoKiB0aGlzIGxpYiBzaG91bGQgbm90IGRlcGVuZCBvbiBjb3JlICopXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBpbmNsdWRlIExpc3RcblxuICBsZXQgY29tcGFyZSBjbXAgYSBiID1cbiAgICBsZXQgcmVjIGxvb3AgYSBiID1cbiAgICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCBbXSwgW10gLT4gMFxuICAgICAgfCBbXSwgXyAtPiAtMVxuICAgICAgfCBfLCBbXSAtPiAxXG4gICAgICB8IHggOjogeHMsIHkgOjogeXMgLT5cbiAgICAgICAgbGV0IG4gPSBjbXAgeCB5IGluXG4gICAgICAgIGlmIG4gPSAwIHRoZW4gbG9vcCB4cyB5cyBlbHNlIG5cbiAgICBpblxuICAgIGxvb3AgYSBiXG4gIDs7XG5lbmRcblxubW9kdWxlIFVpZCA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIG5leHQgOiBzdHJpbmcgLT4gdFxuICB2YWwgaGFzaCA6IHQgLT4gaW50XG4gIHZhbCBuYW1lIDogdCAtPiBzdHJpbmdcbiAgdmFsIHN0YXRpYyA6IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgY29kZSA6IGludFxuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIH1cblxuICBsZXQgY29tcGFyZSBhIGIgPSBjb21wYXJlIChhLmNvZGUgOiBpbnQpIGIuY29kZVxuICBsZXQgZXF1YWwgYSBiID0gKGEuY29kZSA6IGludCkgPSBiLmNvZGVcbiAgbGV0IHVpZCA9IHJlZiAwXG5cbiAgbGV0IG5leHQgbmFtZSA9XG4gICAgbGV0IGNvZGUgPSAhdWlkIGluXG4gICAgaW5jciB1aWQ7XG4gICAgeyBjb2RlOyBuYW1lIH1cbiAgOztcblxuICBsZXQgaGFzaCBhID0gSGFzaHRibC5oYXNoIGEuY29kZVxuICBsZXQgbmFtZSBhID0gYS5uYW1lXG4gIGxldCBzdGF0aWMgPSBuZXh0IFwic3RhdGljXCJcbmVuZFxuXG5tb2R1bGUgS2V5ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyB1aWQgOiBVaWQudFxuICAgIDsgcGFyYW1zIDogdCBsaXN0XG4gICAgfVxuXG4gIGxldCByZWMgY29tcGFyZSBrMSBrMiA9XG4gICAgaWYgazEgPT0gazJcbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIGxldCBjbXAgPSBVaWQuY29tcGFyZSBrMS51aWQgazIudWlkIGluXG4gICAgICBpZiBjbXAgPD4gMCB0aGVuIGNtcCBlbHNlIExpc3QuY29tcGFyZSBjb21wYXJlIGsxLnBhcmFtcyBrMi5wYXJhbXMpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIGEgYiA9IGNvbXBhcmUgYSBiID0gMFxuICBsZXQgaGFzaCA9IChIYXNodGJsLmhhc2ggOiB0IC0+IGludClcbiAgbGV0IHN0YXRpYyA9IHsgdWlkID0gVWlkLnN0YXRpYzsgcGFyYW1zID0gW10gfVxuZW5kXG5cbnR5cGUgJ2EgdCA9IEtleS50XG50eXBlICdhIHR5cGVuYW1lID0gJ2EgdFxuXG5sZXQga2V5IHQgPSB0XG5sZXQgdWlkIHQgPSB0LktleS51aWRcbmxldCBuYW1lIHQgPSBVaWQubmFtZSB0LktleS51aWRcbmxldCBzdGF0aWMgPSBLZXkuc3RhdGljXG5sZXQgY3JlYXRlID8obmFtZSA9IFwiVHlwZW5hbWUuY3JlYXRlXCIpICgpID0geyBLZXkudWlkID0gVWlkLm5leHQgbmFtZTsgcGFyYW1zID0gW10gfVxuXG5pbmNsdWRlIHN0cnVjdFxuICAoKiBUaGUgYXJndW1lbnQgZm9yIE9iai5tYWdpYyBoZXJlIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgaW4gY29yZS90eXBlX2VxdWFsICopXG5cbiAgbGV0IHNhbWUgKHR5cGUgYSBiKSAobm0xIDogYSB0KSAobm0yIDogYiB0KSA9IEtleS5jb21wYXJlIG5tMSBubTIgPSAwXG5cbiAgbGV0IHNhbWVfd2l0bmVzcyAodHlwZSBhIGIpIChubTEgOiBhIHQpIChubTIgOiBiIHQpID1cbiAgICBpZiBLZXkuY29tcGFyZSBubTEgbm0yID0gMFxuICAgIHRoZW4gU29tZSAoT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCA6IChhLCBiKSBUeXBlX2VxdWFsLnQpXG4gICAgZWxzZSBOb25lXG4gIDs7XG5cbiAgbGV0IHNhbWVfd2l0bmVzc19leG4gKHR5cGUgYSBiKSAobm0xIDogYSB0KSAobm0yIDogYiB0KSA9XG4gICAgaWYgS2V5LmNvbXBhcmUgbm0xIG5tMiA9IDBcbiAgICB0aGVuIChPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIDogKGEsIGIpIFR5cGVfZXF1YWwudClcbiAgICBlbHNlIGZhaWx3aXRoIFwiVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4blwiXG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgUzAgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0eXBlbmFtZSAtPiAnYSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0eXBlbmFtZSAtPiAnYiB0eXBlbmFtZSAtPiAoJ2EsICdiKSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdHlwZW5hbWUgLT4gJ2IgdHlwZW5hbWUgLT4gJ2MgdHlwZW5hbWUgLT4gKCdhLCAnYiwgJ2MpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90XG4gICAgOiAgJ2EgdHlwZW5hbWVcbiAgICAtPiAnYiB0eXBlbmFtZVxuICAgIC0+ICdjIHR5cGVuYW1lXG4gICAgLT4gJ2QgdHlwZW5hbWVcbiAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTNSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdFxuICAgIDogICdhIHR5cGVuYW1lXG4gICAgLT4gJ2IgdHlwZW5hbWVcbiAgICAtPiAnYyB0eXBlbmFtZVxuICAgIC0+ICdkIHR5cGVuYW1lXG4gICAgLT4gJ2UgdHlwZW5hbWVcbiAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIE1ha2UwIChYIDogTmFtZWRfaW50Zi5TMCkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHsgS2V5LnVpZDsgcGFyYW1zID0gW10gfVxuZW5kXG5cbm1vZHVsZSBNYWtlMSAoWCA6IE5hbWVkX2ludGYuUzEpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhIF0gfVxuZW5kXG5cbm1vZHVsZSBNYWtlMiAoWCA6IE5hbWVkX2ludGYuUzIpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSBiID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGIgXSB9XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogTmFtZWRfaW50Zi5TMykgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgYyA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhOyBiOyBjIF0gfVxuZW5kXG5cbm1vZHVsZSBNYWtlNCAoWCA6IE5hbWVkX2ludGYuUzQpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSBiIGMgZCA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhOyBiOyBjOyBkIF0gfVxuZW5kXG5cbm1vZHVsZSBNYWtlNSAoWCA6IE5hbWVkX2ludGYuUzUpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSBiIGMgZCBlID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGI7IGM7IGQ7IGUgXSB9XG5lbmRcblxubW9kdWxlIEtleV90YWJsZSA9IEhhc2h0YmwuTWFrZSAoS2V5KVxuXG5tb2R1bGUgVGFibGUgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBkYXRhID0gRGF0YSA6ICdhIHQgKiAnYSBYLnQgLT4gZGF0YVxuICB0eXBlIHQgPSBkYXRhIEtleV90YWJsZS50XG5cbiAgbGV0IGNyZWF0ZSBpbnQgPSBLZXlfdGFibGUuY3JlYXRlIGludFxuICBsZXQgbWVtIHRhYmxlIG5hbWUgPSBLZXlfdGFibGUubWVtIHRhYmxlIChrZXkgbmFtZSlcbiAgbGV0IHNldCB0YWJsZSBuYW1lIGRhdGEgPSBLZXlfdGFibGUucmVwbGFjZSB0YWJsZSAoa2V5IG5hbWUpIChEYXRhIChuYW1lLCBkYXRhKSlcblxuICBsZXQgZmluZCAodHlwZSBhKSB0YWJsZSAobmFtZSA6IGEgdHlwZW5hbWUpID1cbiAgICBsZXQgZGF0YSA9XG4gICAgICB0cnkgU29tZSAoS2V5X3RhYmxlLmZpbmQgdGFibGUgKGtleSBuYW1lKSkgd2l0aFxuICAgICAgfCBCYXNlLk5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbiAgICBpblxuICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChEYXRhIChuYW1lJywgZGF0YSkpIC0+XG4gICAgICAoZnVuICh0eXBlIGIpIChuYW1lJyA6IGIgdHlwZW5hbWUpIChkYXRhIDogYiBYLnQpIC0+XG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gKHNhbWVfd2l0bmVzc19leG4gbmFtZScgbmFtZSA6IChiLCBhKSBUeXBlX2VxdWFsLnQpIGluXG4gICAgICAgICBTb21lIChkYXRhIDogYSBYLnQpKVxuICAgICAgICBuYW1lJ1xuICAgICAgICBkYXRhXG4gIDs7XG5lbmRcblxubGV0IGZhaWwgdWlkX2EgdWlkX2IgPVxuICBsZXQgbXNnID1cbiAgICBQcmludGYuc3ByaW50ZiBcIlR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG4gJVMgJVNcIiAoVWlkLm5hbWUgdWlkX2EpIChVaWQubmFtZSB1aWRfYilcbiAgaW5cbiAgZmFpbHdpdGggbXNnXG47O1xuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8xIChBIDogUzEpIChCIDogUzEpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYS4gKCdhIEEudCwgJ2EgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fMiAoQSA6IFMyKSAoQiA6IFMyKSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EgJ2IuICgoJ2EsICdiKSBBLnQsICgnYSwgJ2IpIEIudCkgVHlwZV9lcXVhbC50IH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fMyAoQSA6IFMzKSAoQiA6IFMzKSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EgJ2IgJ2MuICgoJ2EsICdiLCAnYykgQS50LCAoJ2EsICdiLCAnYykgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBpZiBVaWQuZXF1YWwgdWlkX2EgdWlkX2IgdGhlbiB7IGVxID0gT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCB9IGVsc2UgZmFpbCB1aWRfYSB1aWRfYlxuICA7O1xuZW5kXG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzQgKEEgOiBTNCkgKEIgOiBTNCkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBlcSA6ICdhICdiICdjICdkLiAoKCdhLCAnYiwgJ2MsICdkKSBBLnQsICgnYSwgJ2IsICdjLCAnZCkgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fNSAoQSA6IFM1KSAoQiA6IFM1KSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZXEgOlxuICAgICAgICAnYSAnYiAnYyAnZCAnZS4gKCgnYSwgJ2IsICdjLCAnZCwgJ2UpIEEudCwgKCdhLCAnYiwgJ2MsICdkLCAnZSkgQi50KSBUeXBlX2VxdWFsLnRcbiAgICB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBpZiBVaWQuZXF1YWwgdWlkX2EgdWlkX2IgdGhlbiB7IGVxID0gT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCB9IGVsc2UgZmFpbCB1aWRfYSB1aWRfYlxuICA7O1xuZW5kXG4iLCIoKipcbiAgIFBsYWNlIGhvbGRlciBmb3IgY29tbW9uIFZhcmlhbnRzIGFuZCBGaWVsZHMgaW50ZXJmYWNlXG4qKVxuXG5tb2R1bGUgTSAoWCA6IHNpZ1xuICAgICgqKlxuICAgICAgIFRoaXMgZnVuY3RvciBpcyBlc3NlbnRpYWxseSB0aGVyZSBiZWNhdXNlIHdlIHVzZSB0aGlzIHNhbWUgaW50ZXJmYWNlIGluIGRpZmZlcmVudFxuICAgICAgIGNvbnRleHRzLCB3aXRoIGRpZmZlcmVudCB0eXBlcyBmb3IgWydhIHRdLlxuXG4gICAgICAgMSkgT25lIHVzZSBjYXNlIGZvciBpdCBpcyB3aGVyZSBbJ2EgWC50ID0gJ2EgVHlwZXJlcC50XS4gIFRoZXNlIGludGVyZmFjZXMgYXJlIHRoZW5cbiAgICAgICBwYXJ0IG9mIHRoZSB0eXBlIHdpdG5lc3MgYnVpbHQgZm9yIGEgdHlwZSBjb250YWluaW5nIGEgcmVjb3JkIG9yIGEgdmFyaWFudCBpbiBpdHNcbiAgICAgICBzdHJ1Y3R1cmUuIFt0cmF2ZXJzZV0gd2lsbCBnaXZlIGEgd2F5IG9mIGFjY2Vzc2luZyB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlXG4gICAgICAgYXJndW1lbnRzIG9mIGEgdmFyaWFudCBvciByZWNvcmQgdHlwZS5cblxuICAgICAgIDIpIEFub3RoZXIgdXNlIGNhc2UgaXMgZm9yIGJ1aWxkaW5nIFwic3RhZ2VkIGdlbmVyaWMgY29tcHV0YXRpb25zXCIuIEluIHRoYXQgY2FzZSwgdGhlXG4gICAgICAgdHlwZSBbJ2EgWC50XSBpcyB0aGUgdHlwZSBvZiB0aGUgY29tcHV0YXRpb24gdGhhdCBpcyBiZWluZyBidWlsdC4gIFt0cmF2ZXJzZV1cbiAgICAgICByZXR1cm5zIHRoZSBjb21wdXRhdGlvbiBidWlsdCBmb3IgdGhlIGFyZ3VtZW50LiBUaGUgaW50ZXJmYWNlIG5vIGxvbmdlciBleHBvcnRzXG4gICAgICAgdGhlIHR5cGVyZXAgb2YgdGhlIGFyZ3VtZW50cyBpbiBob3BlcyBvZiBlbmZvcmNpbmcgdGhhdCBubyB0eXBlcmVwIHRyYXZlcnNhbFxuICAgICAgIGhhcHBlbnMgYXQgcnVudGltZSBpZiB0aGUgY29tcHV0YXRpb24gaGFwcGVuIHRvIGJlIGEgZnVuY3Rpb24uXG4gICAgKilcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogVGhlIGZ1bmN0aW9ucyBwcmVmaXhlZCBieSBbaW50ZXJuYWxdIGFzIHdlbGwgYXMgdGhlIG1vZHVsZSBzdWZmaXhlZCBieSBbX2ludGVybmFsXVxuICAgICBhcmUgdXNlZCBieSB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gW3dpdGggdHlwZXJlcF0gYXMgd2VsbCBhcyBzb21lXG4gICAgIGludGVybmFscyBvZiB0aGUgdHlwZXJlcCBsaWJyYXJ5LiBEbyBub3QgY29uc2lkZXIgdXNpbmcgdGhlc2Ugc29tZXdoZXJlIGVsc2UuICBUaGV5XG4gICAgIHNob3VsZCBpZGVhbGx5IG5vdCBiZSBleHBvcnRlZCBvdXRzaWRlIHRoZSB0eXBlcmVwIGxpYnJhcnksIGJ1dCB0aGUgZ2VuZXJhdGVkIGNvZGVcbiAgICAgbmVlZHMgc29tZWhvdyB0byBhY2Nlc3MgdGhpcywgZXZlbiBvdXRzaWRlLiAqKVxuXG4gIG1vZHVsZSBUYWdfaW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIGNyZWF0ZSA9XG4gICAgICB8IEFyZ3Mgb2YgKCdhcmdzIC0+ICd2YXJpYW50KVxuICAgICAgfCBDb25zdCBvZiAndmFyaWFudFxuXG4gICAgdHlwZSAoJ3ZhcmlhbnQsICdhcmdzKSB0ID1cbiAgICAgIHsgbGFiZWwgOiBzdHJpbmdcbiAgICAgIDsgcmVwIDogJ2FyZ3MgWC50XG4gICAgICA7IGFyaXR5IDogaW50XG4gICAgICA7IGFyZ3NfbGFiZWxzIDogc3RyaW5nIGxpc3RcbiAgICAgIDsgaW5kZXggOiBpbnRcbiAgICAgIDsgb2NhbWxfcmVwciA6IGludFxuICAgICAgOyB0eWlkIDogJ2FyZ3MgVHlwZW5hbWUudFxuICAgICAgOyBjcmVhdGUgOiAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGVcbiAgICAgIH1cbiAgZW5kXG5cbiAgKCoqXG4gICAgIFdpdG5lc3Mgb2YgYSB0YWcsIHRoYXQgaXMgYW4gaXRlbSBpbiBhIHZhcmlhbnQgdHlwZSwgYWxzbyBjYWxsZWQgYW4gXCJhcHBsaWVkXG4gICAgIHZhcmlhbnQgQ29uc3RydWN0b3JcIlxuXG4gICAgIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHZhcmlhbnQgdHlwZSwgdGhlIHNlY29uZCBpcyB0aGUgdHlwZSBvZiB0aGUgdGFnXG4gICAgIHBhcmFtZXRlcnMuICBFeGFtcGxlOlxuXG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID1cbiAgICAgICAgIHwgQSBvZiAoaW50ICogc3RyaW5nKVxuICAgICAgICAgfCBCIG9mIHN0cmluZ1xuICAgICAgICAgfCBDIG9mIHsgeCA6IGludDsgeSA6IHN0cmluZyB9XG4gICAgIF19XG5cbiAgICAgdGhpcyB0eXBlIGhhcyB0aHJlZSBjb25zdHJ1Y3RvcnMuIEZvciBlYWNoIG9mIHRoZW0gd2UnbGwgaGF2ZSBhIGNvcnJlc3BvbmRpbmdcbiAgICAgW1RhZy50XTpcblxuICAgICB7W1xuICAgICAgIHZhbCB0YWdfQSA6ICh0LCAoaW50ICogc3RyaW5nKSkgVGFnLnRcbiAgICAgICB2YWwgdGFnX0IgOiAodCwgc3RyaW5nICAgICAgICApIFRhZy50XG4gICAgICAgdmFsIHRhZ19DIDogKHQsIChpbnQgKiBzdHJpbmcpKSBUYWcudFxuICAgICBdfVxuXG4gICAgIE5vdGUsIGlubGluZSByZWNvcmQgaW4gdmFyaWFudCBhcmUgdHlwZWQgYXMgaWYgdGhlaXIgZGVmaW5pdGlvbiB3YXMgdXNpbmcgdHVwbGVzLFxuICAgICB3aXRob3V0IHRoZSBwYXJlbnRoZXNpcy4gIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZWlyIHJ1bnRpbWUgcmVwcmVzZW50YXRpb24uICBCdXRcbiAgICAgdGhlIGRpc3RpbmN0aW9uIGlzIGNhcnJpZWQgYW5kIGF2YWlsYWJsZSBmb3IgaW50cm9zcGVjdGlvbiBhcyBwYXJ0IG9mIHRoZSBbVGFnLnRdLlxuICAgICBTZWUgW2FyZ3NfbGFiZWxzXS4gKilcbiAgbW9kdWxlIFRhZyA6IHNpZ1xuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgY3JlYXRlID1cbiAgICAgIHwgQXJncyBvZiAoJ2FyZ3MgLT4gJ3ZhcmlhbnQpXG4gICAgICB8IENvbnN0IG9mICd2YXJpYW50XG5cbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIHRcblxuICAgICgqKlxuICAgICAgIFRoZSBuYW1lIG9mIHRoZSBjb25zdHJ1Y3RvciBhcyBpdCBpcyBnaXZlbiBpbiB0aGUgY29uY3JldGUgc3ludGF4XG4gICAgICAgRXhhbXBsZXM6XG5cbiAgICAgICB7dlxuICAgICAgICAgQ29uc3RydWN0b3IgICAgICAgIHwgbGFiZWxcbiAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgIHwgQSBvZiBpbnQgICAgICAgICB8ICBcIkFcIlxuICAgICAgICAgfCBgYSBvZiBpbnQgICAgICAgIHwgIFwiYVwiXG4gICAgICAgICB8IGBBIG9mIGludCAgICAgICAgfCAgXCJBXCJcbiAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQgfSB8ICBcIkFcIlxuICAgICAgIHZ9XG5cbiAgICAgICBmb3Igc3RhbmRhcmQgdmFyaWFudCwgdGhlIG9jYW1sIHN5bnRheCBpbXBsaWVzIHRoYXQgdGhpcyBsYWJlbCB3aWxsIGFsd2F5cyBzdGFydHNcbiAgICAgICB3aXRoIGEgY2FwaXRhbCBsZXR0ZXIuIEZvciBwb2x5bW9ycGhpYyB2YXJpYW50cywgdGhpcyBtaWdodCBiZSBhIGxvd2VyY2FzZSBjaGFyLlxuICAgICAgIEZvciBwb2x5bW9ycGhpYyB2YXJpYW50LCB0aGlzIGxhYmVsIGRvZXMgbm90IGluY2x1ZGUgdGhlIFtgXSBjaGFyYWN0ZXIuXG4gICAgKilcbiAgICB2YWwgbGFiZWwgOiAoXywgXykgdCAtPiBzdHJpbmdcblxuICAgICgqKlxuICAgICAgIFRoZSBzaXplIG9mIHRoZSBvY2FtbCBoZWFwIGJsb2NrIGNvbnRhaW5pbmcgdGhlIGFyZ3VtZW50c1xuXG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge3ZcbiAgICAgICAgICAwOiB8IEEgfCAnQVxuICAgICAgICAgIDE6IHwgQSBvZiBpbnQgfCBgQSBvZiBpbnQgfCBBIG9mIChpbnQgKiBpbnQpIHwgYEEgb2YgKGludCAqIGludClcbiAgICAgICAgICAgICB8IGBBIG9mIGludCAqIGludFxuICAgICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnR9XG4gICAgICAgICAgMjogfCBBIG9mIGludCAqIGZsb2F0XG4gICAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludDsgeSA6IHN0cmluZyB9XG4gICAgICAgICAgZXRjLlxuICAgICAgIHZ9XG4gICAgKilcbiAgICB2YWwgYXJpdHkgOiAoXywgXykgdCAtPiBpbnRcblxuICAgICgqKiBUaGUgbGFiZWwgb2YgdGhlIGZpZWxkcyBmb3IgaW5saW5lIHJlY29yZHMuICBGb3Igb3RoZXIgZm9ybXMgb2YgdGFncywgdGhpcyBpcyB0aGVcbiAgICAgICAgZW1wdHkgbGlzdC4gIFdoZW4gdGhpcyByZXR1cm5zIGEgbm9uIGVtcHR5IGxpc3QsIHRoZSBsZW5ndGggb2YgdGhlIHJldHVybmVkIGxpc3RcbiAgICAgICAgaXMgZXF1YWwgdG8gdGhlIGFyaXR5LlxuXG4gICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICAge3ZcbiAgICAgICAgICgxKSBFbXB0eTpcblxuICAgICAgICAgICB8IEEgfCAnQVxuICAgICAgICAgICB8IEEgb2YgaW50IHwgYEEgb2YgaW50IHwgQSBvZiAoaW50ICogaW50KSB8IGBBIG9mIChpbnQgKiBpbnQpXG4gICAgICAgICAgIHwgYEEgb2YgaW50ICogaW50XG4gICAgICAgICAgIHwgQSBvZiBpbnQgKiBmbG9hdFxuXG4gICAgICAgICAoMikgTm9uIGVtcHR5OlxuXG4gICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQgfSAgICAgICAgICAgICAgIC0+IFsgXCJ4XCIgXVxuICAgICAgICAgICB8IEEgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH0gICAtPiBbIFwieFwiIDsgXCJ5XCIgXVxuICAgICAgIHZ9XG4gICAgKilcbiAgICB2YWwgYXJnc19sYWJlbHMgOiAoXywgXykgdCAtPiBzdHJpbmcgbGlzdFxuXG4gICAgKCoqXG4gICAgICAgVGhlIGluZGV4IG9mIHRoZSBjb25zdHJ1Y3RvciBpbiB0aGUgbGlzdCBvZiBhbGwgdGhlIHZhcmlhbnQgdHlwZSdzIGNvbnN0cnVjdG9yc1xuICAgICAgIEV4YW1wbGVzOlxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICB8IEEgb2YgaW50ICAgICAgICAgICgqIDAgKilcbiAgICAgICAgICAgfCBCICAgICAgICAgICAgICAgICAoKiAxICopXG4gICAgICAgICAgIHwgQyBvZiBpbnQgICAgICAgICAgKCogMiAqKVxuICAgICAgICAgICB8IEQgb2YgY2hhciAgICAgICAgICgqIDMgKilcbiAgICAgICAgICAgfCBFIG9mIHsgeCA6IGludCB9ICAoKiA0ICopXG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBpbmRleCA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqXG4gICAgICAgb2NhbWxfcmVwciBpcyByZWxhdGVkIHRvIHRoZSBydW50aW1lIG9mIG9iamVjdHMuIHRoaXMgaXMgZXNzZW50aWFsbHkgYSB3YXkgb2ZcbiAgICAgICBnaXZpbmcgb25lIHRoZSBhYmlsaXR5IHRvIHJlYnVpbGQgZHluYW1pY2FsbHkgYW4gW09iai50XSByZXByZXNlbnRpbmcgYSB0YWcuXG5cbiAgICAgICBQb2x5bW9ycGhpYyB2YXJpYW50czpcbiAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgIFtvY2FtbF9yZXByXSBpcyB0aGUgaGFzaCBvZiB0aGUgbGFiZWwsIGFzIGRvbmUgYnkgdGhlIGNvbXBpbGVyLlxuICAgICAgIEV4YW1wbGU6XG4gICAgICAgcHJpbnRfaW50IChPYmoubWFnaWMgYGJhcikgICgqIDQ4OTUxODcgKilcbiAgICAgICBwcmludF9pbnQgKE9iai5tYWdpYyAnZm9vKSAgKCogNTA5NzIyMiAqKVxuXG4gICAgICAgU3RhbmRhcmRzIHZhcmlhbnRzOlxuICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgIFtvY2FtbF9yZXByXSBpcyB0aGUgdGFnIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbnN0cnVjdG9yIHdpdGhpbiB0aGUgdHlwZS5cbiAgICAgICB0aGUgd2F5IGl0IHdvcmtzIGluIHRoZSBvY2FtbCBydW50aW1lIGlzIGJ5IHBhcnRpdGlvbmluZyB0aGUgY29uc3RydWN0b3JzIHJlZ2FyZGluZ1xuICAgICAgIGlmIHRoZXkgaGF2ZSBzb21lIGFyZ3VtZW50cyBvciBub3QsIHByZXNlcnZpbmcgdGhlIG9yZGVyLCB0aGVuIGFzc2lnbiBpbmNyZWFzaW5nXG4gICAgICAgaW5kZXggd2l0aGluZyBlYWNoIHBhcnRpdGlvbi5cbiAgICAgICBFeGFtcGxlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9ICAgICAgICAgICAgICAgICAgKCogbm8gYXJnICopICAoKiBhcmdzICopXG4gICAgICAgICAgIHwgQSAgICAgICAgICAgICAgICAgICAgICAgKCogMCAqKVxuICAgICAgICAgICB8IEIgb2YgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogMCAqKVxuICAgICAgICAgICB8IEMgICAgICAgICAgICAgICAgICAgICAgICgqIDEgKilcbiAgICAgICAgICAgfCBEIG9mIChmbG9hdCAqIHN0cmluZykgICAgICAgICAgICAgICAgICgqIDEgKilcbiAgICAgICAgICAgfCBFICAgICAgICAgICAgICAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgRiAgICAgICAgICAgICAgICAgICAgICAgKCogMyAqKVxuICAgICAgICAgICB8IEcgb2Ygc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogMiAqKVxuICAgICAgICAgICB8IEggb2YgeyB4IDogaW50IH0gICAgICAgICAgICAgICAgICAgICAgKCogMyAqKVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgb2NhbWxfcmVwciA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqXG4gICAgICAgR2l2ZSBiYWNrIGEgd2F5IG9mIGNvbnN0cnVjdGluZyBhIHZhbHVlIG9mIHRoYXQgY29uc3RydWN0b3IgZnJvbSBpdHMgYXJndW1lbnRzLlxuXG4gICAgICAgRXhhbXBsZXM6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgfCBBIG9mIChpbnQgKiBzdHJpbmcpXG4gICAgICAgICAgIHwgQiBvZiBpbnQgKiBmbG9hdFxuICAgICAgICAgICB8IENcbiAgICAgICAgICAgfCBEIG9mIHsgeCA6IGludDsgeSA6IHN0cmluZyB9XG4gICAgICAgXX1cblxuICAgICAgIFtjcmVhdGVdIHdpbGwgcmV0dXJuIHNvbWV0aGluZyBlcXVpdmFsZW50IHRvOlxuICAgICAgIHRhZ19BIDogW0FyZ3MgKGZ1biAoZCA6IChpbnQgKiBzdHJpbmcpIC0+IEEgZCldXG4gICAgICAgdGFnX0IgOiBbQXJncyAoZnVuIChpLCBmKSAtPiBCIChpLCBmKSldXG4gICAgICAgdGFnX0MgOiBbQ29uc3QgQ11cbiAgICAgICB0YWdfRCA6IFtBcmdzIChmdW4gKHgsIHkpIC0+IEQgeyB4OyB5IH0pXVxuICAgICopXG4gICAgdmFsIGNyZWF0ZSA6ICgndmFyaWFudCwgJ2FyZ3MpIHQgLT4gKCd2YXJpYW50LCAnYXJncykgY3JlYXRlXG5cbiAgICAoKiogcmV0dXJuIHRoZSB0eXBlX25hbWUgb2YgdGhlIGFyZ3VtZW50cy4gbWlnaHQgYmUgdXNlZCB0byBwZXJmb3JtIHNvbWUgbG9va3VwIGJhc2VkXG4gICAgICAgIG9uIGl0IHdoaWxlIGJ1aWxkaW5nIGEgY29tcHV0YXRpb24gZm9yIGV4YW1wbGUgKilcbiAgICB2YWwgdHlpZCA6IChfLCAnYXJncykgdCAtPiAnYXJncyBUeXBlbmFtZS50XG5cbiAgICAoKiogZ2V0IHRoZSByZXByZXNlbnRhdGlvbi9jb21wdXRhdGlvbiBvZiB0aGUgYXJndW1lbnRzICopXG4gICAgdmFsIHRyYXZlcnNlIDogKF8sICdhcmdzKSB0IC0+ICdhcmdzIFgudFxuXG4gICAgKCogdXNlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiB0byBidWlsZCB0eXBlIHdpdG5lc3Nlcywgb3IgYnkgc29tZSBpbnRlcm5hbCBwYXJ0cyBvZlxuICAgICAgIHR5cGVyZXAuIHlvdSBzaG91bGQgZmVlbCBiYWQgaWYgeW91IG5lZWQgdG8gdXNlIGl0IGluIHNvbWUgdXNlciBjb2RlICopXG4gICAgdmFsIGludGVybmFsX3VzZV9vbmx5IDogKCdhLCAnYikgVGFnX2ludGVybmFsLnQgLT4gKCdhLCAnYikgdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRhZ19pbnRlcm5hbFxuXG4gICAgbGV0IGxhYmVsIHQgPSB0LmxhYmVsXG4gICAgbGV0IGFyaXR5IHQgPSB0LmFyaXR5XG4gICAgbGV0IGFyZ3NfbGFiZWxzIHQgPSB0LmFyZ3NfbGFiZWxzXG4gICAgbGV0IGluZGV4IHQgPSB0LmluZGV4XG4gICAgbGV0IG9jYW1sX3JlcHIgdCA9IHQub2NhbWxfcmVwclxuICAgIGxldCBjcmVhdGUgdCA9IHQuY3JlYXRlXG4gICAgbGV0IHR5aWQgdCA9IHQudHlpZFxuICAgIGxldCB0cmF2ZXJzZSB0ID0gdC5yZXBcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFZhcmlhbnRfaW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlIF8gdGFnID0gVGFnIDogKCd2YXJpYW50LCAnYSkgVGFnLnQgLT4gJ3ZhcmlhbnQgdGFnXG4gICAgdHlwZSBfIHZhbHVlID0gVmFsdWUgOiAoJ3ZhcmlhbnQsICdhKSBUYWcudCAqICdhIC0+ICd2YXJpYW50IHZhbHVlXG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyB0eXBlbmFtZSA6ICdhIFR5cGVuYW1lLnRcbiAgICAgIDsgdGFncyA6ICdhIHRhZyBhcnJheVxuICAgICAgOyBwb2x5bW9ycGhpYyA6IGJvb2xcbiAgICAgIDsgdmFsdWUgOiAnYSAtPiAnYSB2YWx1ZVxuICAgICAgfVxuICBlbmRcblxuICBtb2R1bGUgVmFyaWFudCA6IHNpZ1xuICAgICgqKlxuICAgICAgIEFuIGV4aXN0ZW50aWFsIHR5cGUgdXNlZCB0byBnYXRoZXIgYWxsIHRoZSB0YWdzIGNvbnN0aXR1aW5nIGEgdmFyaWFudFxuICAgICAgIHR5cGUuIHRoZSBbJ3ZhcmlhbnRdIHBhcmFtZXRlciBpcyB0aGUgdmFyaWFudCB0eXBlLCBpdCBpcyB0aGUgc2FtZSBmb3IgYWxsIHRoZVxuICAgICAgIGNvbnN0cnVjdG9ycyBvZiB0aGF0IHZhcmlhbnQgdHlwZS4gVGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlcnMgbWlnaHQgYmUgZGlmZmVyZW50XG4gICAgICAgZm9yIGVhY2ggY29uc3RydWN0b3IgYW5kIGlzIHRodXMgZXhpc3RlbnRpYWxcbiAgICAqKVxuICAgIHR5cGUgXyB0YWcgPSBUYWcgOiAoJ3ZhcmlhbnQsICdhcmdzKSBUYWcudCAtPiAndmFyaWFudCB0YWdcblxuICAgICgqKlxuICAgICAgIEEgc2ltaWxhciBleGlzdGVudGlhbCBjb25zdHJ1Y3RvciB0byBbXyB0YWddIGJ1dCB0aGlzIG9uZSBob2xkcyBhIHZhbHVlIHdob3NlIHR5cGVcbiAgICAgICBpcyB0aGUgYXJndW1lbnRzIG9mIHRoZSB0YWcgY29uc3RydWN0b3IuICBBIHZhbHVlIG9mIHR5cGUgWydhIHZhbHVlXSBpcyBhIHBhaXIgb2ZcbiAgICAgICAoMSkgYSB2YWx1ZSBvZiB2YXJpYW50IHR5cGUgWydhXSBhbG9uZyB3aXRoICgyKSBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuICAgICAgIGNvbnN0cnVjdG9yIHdpdGhpbiB0aGUgdHlwZSBbJ2FdXG4gICAgKilcbiAgICB0eXBlIF8gdmFsdWUgPSBWYWx1ZSA6ICgndmFyaWFudCwgJ2FyZ3MpIFRhZy50ICogJ2FyZ3MgLT4gJ3ZhcmlhbnQgdmFsdWVcblxuICAgICgqKlxuICAgICAgIFdpdG5lc3Mgb2YgYSB2YXJpYW50IHR5cGUuIFRoZSBwYXJhbWV0ZXIgaXMgdGhlIHR5cGUgb2YgdGhlIHZhcmlhbnQgdHlwZSB3aXRuZXNzZWQuXG4gICAgKilcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG5cbiAgICAoKipcbiAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGFncyBvZiB0aGlzIHZhcmlhbnQgdHlwZSBkZWZpbml0aW9uLlxuICAgICopXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBHZXQgdGhlIG50aCB0YWcgb2YgdGhpcyB2YXJpYW50IHR5cGUsIGluZGV4ZWQgZnJvbSAwLlxuICAgICopXG4gICAgdmFsIHRhZyA6ICdhIHQgLT4gaW50IC0+ICdhIHRhZ1xuXG4gICAgKCoqXG4gICAgICAgRGlzdGluZ3Vpc2ggcG9seW1vcnBoaWMgdmFyaWFudHMgYW5kIHN0YW5kYXJkIHZhcmlhbnRzLiBUeXBpY2FsbHksIHBvbHltb3JwaGljXG4gICAgICAgdmFyaWFudHMgdGFncyBzdGFydHMgd2l0aCB0aGUgW2BdIGNoYXJhY3Rlci5cbiAgICAgICBFeGFtcGxlXG4gICAgICAgcG9seW1vcnBoaWMgdmFyaWFudDogdHlwZSB0ID0gWyBgQSB8IGBCIF1cbiAgICAgICBzdGFuZGFyZCB2YXJpYW50OiAgICB0eXBlIHQgPSBBIHwgQlxuICAgICopXG4gICAgdmFsIGlzX3BvbHltb3JwaGljIDogXyB0IC0+IGJvb2xcblxuICAgICgqKlxuICAgICAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gYSB2YWx1ZSBvZiB0aGlzIHZhcmlhbnQgdHlwZS5cbiAgICAqKVxuICAgIHZhbCB2YWx1ZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgdmFsdWVcblxuICAgICgqKlxuICAgICAgIGZvbGRpbmcgYWxvbmcgdGhlIHRhZ3Mgb2YgdGhlIHZhcmlhbnQgdHlwZVxuICAgICopXG4gICAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjYyAtPiBmOignYWNjIC0+ICdhIHRhZyAtPiAnYWNjKSAtPiAnYWNjXG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAnYSBWYXJpYW50X2ludGVybmFsLnQgLT4gJ2EgdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFZhcmlhbnRfaW50ZXJuYWxcblxuICAgIGxldCB0eXBlbmFtZV9vZl90IHQgPSB0LnR5cGVuYW1lXG4gICAgbGV0IGxlbmd0aCB0ID0gQXJyYXkubGVuZ3RoIHQudGFnc1xuICAgIGxldCB0YWcgdCBpbmRleCA9IHQudGFncy4oaW5kZXgpXG4gICAgbGV0IGlzX3BvbHltb3JwaGljIHQgPSB0LnBvbHltb3JwaGljXG4gICAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IEFycmF5LmZvbGRfbGVmdCBmIGluaXQgdC50YWdzXG4gICAgbGV0IGludGVybmFsX3VzZV9vbmx5IHQgPSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBGaWVsZF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgKCdyZWNvcmQsICdmaWVsZCkgdCA9XG4gICAgICB7IGxhYmVsIDogc3RyaW5nXG4gICAgICA7IHJlcCA6ICdmaWVsZCBYLnRcbiAgICAgIDsgaW5kZXggOiBpbnRcbiAgICAgIDsgdHlpZCA6ICdmaWVsZCBUeXBlbmFtZS50XG4gICAgICA7IGdldCA6ICdyZWNvcmQgLT4gJ2ZpZWxkXG4gICAgICA7ICgqIHNldCA6ICgncmVjb3JkIC0+ICdmaWVsZCAtPiB1bml0KSBvcHRpb247IChcXCogbXV0YWJsZSBmaWVsZCAqXFwpICopXG4gICAgICAgIGlzX211dGFibGUgOiBib29sXG4gICAgICB9XG4gIGVuZFxuXG4gICgqKlxuICAgICBXaXRuZXNzIG9mIGEgZmllbGQsIHRoYXQgaXMgYW4gaXRlbSBpbiBhIHJlY29yZCB0eXBlLlxuICAgICBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIHRoZSByZWNvcmQgdHlwZSwgdGhlIHNlY29uZCBpcyB0aGUgdHlwZSBvZiB0aGUgZmllbGQuXG4gICAgIEV4YW1wbGU6XG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID0geyB4IDogaW50IDsgeSA6IHN0cmluZyB9XG4gICAgIF19XG4gICAgIFRoaXMgdHlwZSBoYXMgdHdvIGZpZWxkcy4gZm9yIGVhY2ggb2YgdGhlbSB3ZSdsbCBoYXZlIGEgY29ycmVzcG9uZGluZyBbRmllbGQudF1cblxuICAgICB2YWwgZmllbGRfeCA6ICh0LCBpbnQpIEZpZWxkLnRcbiAgICAgdmFsIGZpZWxkX3kgOiAodCwgc3RyaW5nKSBGaWVsZC50XG4gICopXG4gIG1vZHVsZSBGaWVsZCA6IHNpZ1xuICAgIHR5cGUgKCdyZWNvcmQsICdmaWVsZCkgdFxuXG5cbiAgICAoKipcbiAgICAgICBUaGUgbmFtZSBvZiB0aGUgZmllbGQgYXMgaXQgaXMgZ2l2ZW4gaW4gdGhlIGNvbmNyZXRlIHN5bnRheFxuICAgICAgIEV4YW1wbGVzOlxuICAgICAgIHtbXG4gICAgICAgICB7IHggICA6IGludDsgICAgICgqIFwieFwiICopXG4gICAgICAgICAgIGZvbyA6IHN0cmluZzsgICgqIFwiZm9vXCIgKilcbiAgICAgICAgICAgYmFyIDogZmxvYXQ7ICAgKCogXCJiYXJcIiAqKVxuICAgICAgICAgfVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgbGFiZWwgOiAoXywgXykgdCAtPiBzdHJpbmdcblxuICAgICgqKlxuICAgICAgIFRoZSAwLWJhc2VkIGluZGV4IG9mIHRoZSBmaWVsZCBpbiB0aGUgbGlzdCBvZiBhbGwgZmllbGRzIGZvciB0aGlzIHJlY29yZCB0eXBlLlxuICAgICAgIEV4YW1wbGU6XG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9IHtcbiAgICAgICAgICAgeCAgIDogaW50OyAgICAgKCogMCAqKVxuICAgICAgICAgICBmb28gOiBzdHJpbmc7ICAoKiAxICopXG4gICAgICAgICAgIGJhciA6IHN0cmluZzsgICgqIDIgKilcbiAgICAgICAgIH1cbiAgICAgICBdfVxuICAgICopXG4gICAgdmFsIGluZGV4IDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBGaWVsZCBhY2Nlc3NvcnMuIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhlIGRvdCBvcGVyYXRpb24uXG4gICAgICAgW0ZpZWxkLmdldCBiYXJfZmllbGQgdF0gcmV0dXJucyB0aGUgZmllbGQgW2Jhcl0gb2YgdGhlIHJlY29yZCB2YWx1ZSBbdF0sIGp1c3QgdGhlXG4gICAgICAgc2FtZSBhcyBbdC5iYXJdXG4gICAgKilcbiAgICB2YWwgZ2V0IDogKCdyZWNvcmQsICdmaWVsZCkgdCAtPiAncmVjb3JkIC0+ICdmaWVsZFxuXG4gICAgKCoqIHJldHVybiB3aGV0aGVyIHRoZSBmaWVsZCBpcyBtdXRhYmxlLCBpLmUuIHdoZXRoZXIgaXRzIGRlY2xhcmF0aW9uIGlzIHByZWZpeGVkIHdpdGhcbiAgICAgICAgdGhlIGtleXdvcmQgW211dGFibGVdICopXG4gICAgdmFsIGlzX211dGFibGUgOiAoXywgXykgdCAtPiBib29sXG5cbiAgICAoKiogcmV0dXJuIHRoZSB0eXBlX25hbWUgb2YgdGhlIGFyZ3VtZW50cy4gIE1pZ2h0IGJlIHVzZWQgdG8gcGVyZm9ybSBzb21lIGxvb2t1cCBiYXNlZFxuICAgICAgICBvbiBpdCAqKVxuICAgIHZhbCB0eWlkIDogKF8sICdmaWVsZCkgdCAtPiAnZmllbGQgVHlwZW5hbWUudFxuXG4gICAgKCoqIGdldCB0aGUgY29tcHV0YXRpb24gb2YgdGhlIGFyZ3VtZW50cyAqKVxuICAgIHZhbCB0cmF2ZXJzZSA6IChfLCAnZmllbGQpIHQgLT4gJ2ZpZWxkIFgudFxuXG4gICAgKCogdXNlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiB0byBidWlsZCB0eXBlIHdpdG5lc3Nlcywgb3IgYnkgc29tZSBpbnRlcm5hbCBwYXJ0cyBvZlxuICAgICAgIHR5cGVyZXAuIHlvdSBzaG91bGQgZmVlbCBiYWQgaWYgeW91IG5lZWQgdG8gdXNlIGl0IGluIHNvbWUgdXNlciBjb2RlICopXG4gICAgdmFsIGludGVybmFsX3VzZV9vbmx5IDogKCdhLCAnYikgRmllbGRfaW50ZXJuYWwudCAtPiAoJ2EsICdiKSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRmllbGRfaW50ZXJuYWxcblxuICAgIGxldCBsYWJlbCB0ID0gdC5sYWJlbFxuICAgIGxldCBpbmRleCB0ID0gdC5pbmRleFxuICAgIGxldCBnZXQgdCA9IHQuZ2V0XG4gICAgbGV0IGlzX211dGFibGUgdCA9IHQuaXNfbXV0YWJsZVxuICAgIGxldCB0eWlkIHQgPSB0LnR5aWRcbiAgICBsZXQgdHJhdmVyc2UgdCA9IHQucmVwXG4gICAgbGV0IGludGVybmFsX3VzZV9vbmx5IHQgPSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBSZWNvcmRfaW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlIF8gZmllbGQgPSBGaWVsZCA6ICgncmVjb3JkLCAnYSkgRmllbGQudCAtPiAncmVjb3JkIGZpZWxkXG4gICAgdHlwZSAncmVjb3JkIGZpZWxkcyA9IHsgZ2V0IDogJ2ZpZWxkLiAoJ3JlY29yZCwgJ2ZpZWxkKSBGaWVsZC50IC0+ICdmaWVsZCB9XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyB0eXBlbmFtZSA6ICdhIFR5cGVuYW1lLnRcbiAgICAgIDsgZmllbGRzIDogJ2EgZmllbGQgYXJyYXlcbiAgICAgIDsgaGFzX2RvdWJsZV9hcnJheV90YWcgOiBib29sXG4gICAgICA7IGNyZWF0ZSA6ICdhIGZpZWxkcyAtPiAnYVxuICAgICAgfVxuICBlbmRcblxuICBtb2R1bGUgUmVjb3JkIDogc2lnXG4gICAgKCoqXG4gICAgICAgQW4gZXhpc3RlbnRpYWwgdHlwZSB1c2VkIHRvIGdhdGhlciBhbGwgdGhlIGZpZWxkcyBjb25zdGl0dWluZyBhIHJlY29yZCB0eXBlLiB0aGVcbiAgICAgICBbJ3JlY29yZF0gcGFyYW1ldGVyIGlzIHRoZSByZWNvcmQgdHlwZSwgaXQgaXMgdGhlIHNhbWUgZm9yIGFsbCB0aGUgZmllbGQgb2YgdGhhdFxuICAgICAgIHJlY29yZCB0eXBlLiBUaGUgdHlwZSBvZiB0aGUgZmllbGRzIG1pZ2h0IGJlIGRpZmZlcmVudCBmb3IgZWFjaCBmaWVsZCBhbmQgaXMgdGh1c1xuICAgICAgIGV4aXN0ZW50aWFsLlxuICAgICopXG4gICAgdHlwZSBfIGZpZWxkID0gRmllbGQgOiAoJ3JlY29yZCwgJ2EpIEZpZWxkLnQgLT4gJ3JlY29yZCBmaWVsZFxuXG4gICAgKCoqXG4gICAgICAgWydyZWNvcmQgZmllbGRzXSBpcyBhIHR5cGUgaXNvbW9ycGhpYyB0byBbJ3JlY29yZF0uICBUaGlzIGdpdmVzIGEgd2F5IHRvIGdldCB0aGVcbiAgICAgICBmaWVsZCB2YWx1ZSBmb3IgZWFjaCBmaWVsZCBvZiB0aGUgcmVjb3JkLiAgVGhlIGFkdmFudGFnZSBvZiB0aGlzIHJlcHJlc2VudGF0aW9uIGlzXG4gICAgICAgdGhhdCBpdCBpcyBjb252ZW5pZW50IGZvciB3cml0aW5nIGdlbmVyaWMgY29tcHV0YXRpb25zLlxuICAgICopXG4gICAgdHlwZSAncmVjb3JkIGZpZWxkcyA9IHsgZ2V0IDogJ2ZpZWxkLiAoJ3JlY29yZCwgJ2ZpZWxkKSBGaWVsZC50IC0+ICdmaWVsZCB9XG5cbiAgICAoKipcbiAgICAgICBXaXRuZXNzIG9mIGEgcmVjb3JkIHR5cGUuIFRoZSBwYXJhbWV0ZXIgaXMgdGhlIHR5cGUgb2YgdGhlIHJlY29yZCB0eXBlIHdpdG5lc3NlZC5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcblxuICAgICgqKlxuICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBmaWVsZHMgb2YgdGhpcyByZWNvcmQgdHlwZSBkZWZpbml0aW9uLlxuICAgICopXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBHZXQgdGhlIG50aCBmaWVsZCBvZiB0aGlzIHJlY29yZCB0eXBlLCBpbmRleGVkIGZyb20gMC5cbiAgICAqKVxuICAgIHZhbCBmaWVsZCA6ICdhIHQgLT4gaW50IC0+ICdhIGZpZWxkXG5cbiAgICAoKipcbiAgICAgICBUaGlzIGlzIGEgbG93IGxldmVsIG1ldGFkYXRhIHJlZ2FyZGluZyB0aGUgd2F5IHRoZSBvY2FtbCBjb21waWxlciByZXByZXNlbnQgdGhlXG4gICAgICAgYXJyYXkgdW5kZXJuZWF0aCB0aGF0IGlzIHRoZSBydW50aW1lIHZhbHVlIG9mIGEgcmVjb3JkIG9mIHR5cGUgWydhXSBnaXZlbiBhIHdpdG5lc3NcbiAgICAgICBvZiB0eXBlIFsnYSB0XS4gW2hhc19kb3VibGVfYXJyYXlfdGFnIHddIHJldHVybnMgW3RydWVdIGlmIHRoZSBhcnJheSB0aGF0XG4gICAgICAgcmVwcmVzZW50cyBydW50aW1lIHZhbHVlcyBvZiB0aGlzIHR5cGUgaXMgYW4gb3B0aW1pemVkIG9jYW1sIGZsb2F0IGFycmF5LlxuICAgICAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGJlIHRydWUgZm9yIHJlY29yZCB3aGVyZSBhbGwgZmllbGRzIGFyZSBzdGF0aWNhbGx5IGtub3duIGFzIHRvXG4gICAgICAgYmUgW2Zsb2F0c10uXG5cbiAgICAgICBOb3RlIHRoYXQgeW91IGNhbid0IGdldCB0aGlzIGluZm9ybWF0aW9uIGR5bmFtaWNhbGx5IGJ5IGluc3BlY3RpbmcgdGhlIHR5cGVyZXAgb25jZVxuICAgICAgIGl0IGlzIGFwcGxpZWQsIGJlY2F1c2UgdGhlcmUgaXMgYXQgdGhpcyBwb2ludCBubyB3YXkgdG8gdGVsbCB3aGV0aGVyIG9uZSBvZiB0aGVcbiAgICAgICBmaWVsZCBpcyBwb2x5bW9ycGhpYyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuICAgICopXG4gICAgdmFsIGhhc19kb3VibGVfYXJyYXlfdGFnIDogXyB0IC0+IGJvb2xcblxuICAgICgqKlxuICAgICAgIEV4cG9zZSBvbmUgZGlyZWN0aW9uIG9mIHRoZSBpc29tb3JwaGlzbSBiZXR3ZWVuIGEgdmFsdWUgb2YgdHlwZSBbJ2FdIGFuZCBhIHZhbHVlIG9mXG4gICAgICAgdHlwZSBbJ2EgZmllbGRzXS4gQmFzaWNhbGx5LCBnaXZlbiBhbiBlbmNvZGluZyB3YXkgb2YgYWNjZXNzaW5nIHRoZSB2YWx1ZSBvZiBhbGxcbiAgICAgICB0aGUgZmllbGRzIG9mIGEgcmVjb3JkLCBjcmVhdGUgdGhhdCByZWNvcmQgYW5kIHJldHVybiBpdC5cbiAgICAqKVxuICAgIHZhbCBjcmVhdGUgOiAnYSB0IC0+ICdhIGZpZWxkcyAtPiAnYVxuXG4gICAgKCoqXG4gICAgICAgZm9sZGluZyBhbG9uZyB0aGUgdGFncyBvZiB0aGUgdmFyaWFudCB0eXBlXG4gICAgKilcbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCdhY2MgLT4gJ2EgZmllbGQgLT4gJ2FjYykgLT4gJ2FjY1xuXG4gICAgKCogdXNlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiB0byBidWlsZCB0eXBlIHdpdG5lc3Nlcywgb3IgYnkgc29tZSBpbnRlcm5hbCBwYXJ0cyBvZlxuICAgICAgIHR5cGVyZXAuIHlvdSBzaG91bGQgZmVlbCBiYWQgaWYgeW91IG5lZWQgdG8gdXNlIGl0IGluIHNvbWUgdXNlciBjb2RlICopXG4gICAgdmFsIGludGVybmFsX3VzZV9vbmx5IDogJ2EgUmVjb3JkX2ludGVybmFsLnQgLT4gJ2EgdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFJlY29yZF9pbnRlcm5hbFxuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgdCA9IHQudHlwZW5hbWVcbiAgICBsZXQgbGVuZ3RoIHQgPSBBcnJheS5sZW5ndGggdC5maWVsZHNcbiAgICBsZXQgZmllbGQgdCBpbmRleCA9IHQuZmllbGRzLihpbmRleClcbiAgICBsZXQgaGFzX2RvdWJsZV9hcnJheV90YWcgdCA9IHQuaGFzX2RvdWJsZV9hcnJheV90YWdcbiAgICBsZXQgY3JlYXRlIHQgPSB0LmNyZWF0ZVxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPSBBcnJheS5mb2xkX2xlZnQgZiBpbml0IHQuZmllbGRzXG4gICAgbGV0IGludGVybmFsX3VzZV9vbmx5IHQgPSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBNIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVwID0gJ2EgdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgcmVwXG4gICAgZW5kKVxuZW5kXG4iLCJtb2R1bGUgTmFtZV9vZiA9IHN0cnVjdFxuICBsZXQgdHlwZW5hbWVfb2ZfaW50ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICBsZXQgbmFtZSA9IFwiaW50XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9pbnQzMiA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gaW50MzJcblxuICAgICAgICBsZXQgbmFtZSA9IFwiaW50MzJcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2ludDY0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnQ2NFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnQ2NFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfbmF0aXZlaW50ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBuYXRpdmVpbnRcblxuICAgICAgICBsZXQgbmFtZSA9IFwibmF0aXZlaW50XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9jaGFyID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBjaGFyXG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImNoYXJcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2Zsb2F0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBmbG9hdFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJmbG9hdFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2Zfc3RyaW5nID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgICBsZXQgbmFtZSA9IFwic3RyaW5nXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9ieXRlcyA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYnl0ZXNcblxuICAgICAgICBsZXQgbmFtZSA9IFwiYnl0ZXNcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2Jvb2wgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGJvb2xcblxuICAgICAgICBsZXQgbmFtZSA9IFwiYm9vbFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfdW5pdCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gdW5pdFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJ1bml0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIG1vZHVsZSBNX29wdGlvbiA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGlvblxuXG4gICAgICBsZXQgbmFtZSA9IFwib3B0aW9uXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX29wdGlvbiA9IE1fb3B0aW9uLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9saXN0ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICBsZXQgbmFtZSA9IFwibGlzdFwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9saXN0ID0gTV9saXN0LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9hcnJheSA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGFycmF5XG5cbiAgICAgIGxldCBuYW1lID0gXCJhcnJheVwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9hcnJheSA9IE1fYXJyYXkudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2xhenlfdCA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG4gICAgICBsZXQgbmFtZSA9IFwibGF6eV90XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2xhenlfdCA9IE1fbGF6eV90LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9yZWYgPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSByZWZcblxuICAgICAgbGV0IG5hbWUgPSBcInJlZlwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9yZWYgPSBNX3JlZi50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fZnVuY3Rpb24gPSBUeXBlbmFtZS5NYWtlMiAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSAtPiAnYlxuXG4gICAgICBsZXQgbmFtZSA9IFwiZnVuY3Rpb25cIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfZnVuY3Rpb24gPSBNX2Z1bmN0aW9uLnR5cGVuYW1lX29mX3RcblxuICB0eXBlIHR1cGxlMCA9IHVuaXRcblxuICBtb2R1bGUgTV90dXBsZTAgPSBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICB0eXBlIHQgPSB0dXBsZTBcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlMFwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTAgPSBNX3R1cGxlMC50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGUyID0gVHlwZW5hbWUuTWFrZTIgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgKiAnYlxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGUyXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlMiA9IE1fdHVwbGUyLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTMgPSBUeXBlbmFtZS5NYWtlMyAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2EgKiAnYiAqICdjXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTNcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGUzID0gTV90dXBsZTMudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3R1cGxlNCA9IFR5cGVuYW1lLk1ha2U0IChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ID0gJ2EgKiAnYiAqICdjICogJ2RcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlNFwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTQgPSBNX3R1cGxlNC50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGU1ID0gVHlwZW5hbWUuTWFrZTUgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0ID0gJ2EgKiAnYiAqICdjICogJ2QgKiAnZVxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGU1XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlNSA9IE1fdHVwbGU1LnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgcmVjIFR5cGVyZXAgOiBzaWdcbiAgdHlwZSBfIHQgPVxuICAgIHwgSW50IDogaW50IHRcbiAgICB8IEludDMyIDogaW50MzIgdFxuICAgIHwgSW50NjQgOiBpbnQ2NCB0XG4gICAgfCBOYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHwgQ2hhciA6IGNoYXIgdFxuICAgIHwgRmxvYXQgOiBmbG9hdCB0XG4gICAgfCBTdHJpbmcgOiBzdHJpbmcgdFxuICAgIHwgQnl0ZXMgOiBieXRlcyB0XG4gICAgfCBCb29sIDogYm9vbCB0XG4gICAgfCBVbml0IDogdW5pdCB0XG4gICAgfCBPcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gICAgfCBMaXN0IDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgICB8IEFycmF5IDogJ2EgdCAtPiAnYSBhcnJheSB0XG4gICAgfCBMYXp5IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICAgIHwgUmVmIDogJ2EgdCAtPiAnYSByZWYgdFxuICAgIHwgRnVuY3Rpb24gOiAoJ2RvbSB0ICogJ3JuZyB0KSAtPiAoJ2RvbSAtPiAncm5nKSB0XG4gICAgfCBUdXBsZSA6ICdhIFR5cGVyZXAuVHVwbGUudCAtPiAnYSB0XG4gICAgfCBSZWNvcmQgOiAnYSBUeXBlcmVwLlJlY29yZC50IC0+ICdhIHRcbiAgICB8IFZhcmlhbnQgOiAnYSBUeXBlcmVwLlZhcmlhbnQudCAtPiAnYSB0XG4gICAgfCBOYW1lZCA6ICgnYSBUeXBlcmVwLk5hbWVkLnQgKiAnYSB0IGxhenlfdCBvcHRpb24pIC0+ICdhIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIG1vZHVsZSB0eXBlIFQwID0gc2lnXG4gICAgICB0eXBlIG5hbWVkXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQxID0gc2lnXG4gICAgICB0eXBlICdhIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgYSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMiA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2IgVHlwZW5hbWUudCAtPiAoJ2EsICdiKSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQzID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYykgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ0ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNSA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBlXG5cbiAgICAgIHZhbCBlIDogZSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdlIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQsIGUpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgICgqIHRoZXJlIHRoZSBtb2R1bGUgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0byBkZWFsIHdpdGggYSB0eXBlIFt0XSB3aXRoXG4gICAgICAgcGFyYW1ldGVycyB3aG9zZSBraW5kIGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgdHlwZSB2YXJpYWJsZTogWydhICd0XSwgZXZlbiB3aXRoXG4gICAgICAgYSBnYWR0LiAqKVxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFQwIG9mIChtb2R1bGUgVDAgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDEgb2YgKG1vZHVsZSBUMSB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMiBvZiAobW9kdWxlIFQyIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQzIG9mIChtb2R1bGUgVDMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDQgb2YgKG1vZHVsZSBUNCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNSBvZiAobW9kdWxlIFQ1IHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICB2YWwgYXJpdHkgOiBfIHQgLT4gaW50XG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcbiAgICB2YWwgbmFtZSA6IF8gdCAtPiBzdHJpbmdcbiAgZW5kXG5cbiAgbW9kdWxlIFR1cGxlIDogc2lnXG4gICAgKCogdGhlc2UgY29uc3RydWN0b3JzIGNvdWxkIGJlIHBsdW5nZWQgYXQgdG9wbGV2ZWwgb2YgVHlwZXJlcC50LCBob3dldmVyIGl0IGlzIGxlc3NcbiAgICAgICB2ZXJib3NlIHRoYXQgd2F5ICopXG4gICAgdHlwZSBfIHQgPVxuICAgICAgfCBUMiA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQpIC0+ICgnYSAqICdiKSB0XG4gICAgICB8IFQzIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCkgLT4gKCdhICogJ2IgKiAnYykgdFxuICAgICAgfCBUNCA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgICAgIHwgVDUgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQgKiAnZSBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkICogJ2UpIHRcblxuICAgIHZhbCBhcml0eSA6IF8gdCAtPiBpbnRcbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuICBlbmRcblxuICBpbmNsdWRlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVHlwZXJlcC50XG5cbiAgdmFsIHNhbWUgOiBfIHQgLT4gXyB0IC0+IGJvb2xcbiAgdmFsIHNhbWVfd2l0bmVzcyA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EsICdiKSBUeXBlX2VxdWFsLnQgb3B0aW9uXG4gIHZhbCBzYW1lX3dpdG5lc3NfZXhuIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSwgJ2IpIFR5cGVfZXF1YWwudFxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuICB2YWwgaGVhZCA6ICdhIHQgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgXyB0ID1cbiAgICB8IEludCA6IGludCB0XG4gICAgfCBJbnQzMiA6IGludDMyIHRcbiAgICB8IEludDY0IDogaW50NjQgdFxuICAgIHwgTmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgICB8IENoYXIgOiBjaGFyIHRcbiAgICB8IEZsb2F0IDogZmxvYXQgdFxuICAgIHwgU3RyaW5nIDogc3RyaW5nIHRcbiAgICB8IEJ5dGVzIDogYnl0ZXMgdFxuICAgIHwgQm9vbCA6IGJvb2wgdFxuICAgIHwgVW5pdCA6IHVuaXQgdFxuICAgIHwgT3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb24gdFxuICAgIHwgTGlzdCA6ICdhIHQgLT4gJ2EgbGlzdCB0XG4gICAgfCBBcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXkgdFxuICAgIHwgTGF6eSA6ICdhIHQgLT4gJ2EgbGF6eV90IHRcbiAgICB8IFJlZiA6ICdhIHQgLT4gJ2EgcmVmIHRcbiAgICB8IEZ1bmN0aW9uIDogKCdkb20gdCAqICdybmcgdCkgLT4gKCdkb20gLT4gJ3JuZykgdFxuICAgIHwgVHVwbGUgOiAnYSBUeXBlcmVwLlR1cGxlLnQgLT4gJ2EgdFxuICAgIHwgUmVjb3JkIDogJ2EgVHlwZXJlcC5SZWNvcmQudCAtPiAnYSB0XG4gICAgfCBWYXJpYW50IDogJ2EgVHlwZXJlcC5WYXJpYW50LnQgLT4gJ2EgdFxuICAgIHwgTmFtZWQgOiAoJ2EgVHlwZXJlcC5OYW1lZC50ICogJ2EgdCBsYXp5X3Qgb3B0aW9uKSAtPiAnYSB0XG5cbiAgdHlwZSBwYWNrZWQgPSBUIDogJ2EgdCAtPiBwYWNrZWRcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBUMCA9IHNpZ1xuICAgICAgdHlwZSBuYW1lZFxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6IG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMSA9IHNpZ1xuICAgICAgdHlwZSAnYSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIGEgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDIgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYikgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiAnYSBUeXBlbmFtZS50IC0+ICdiIFR5cGVuYW1lLnQgLT4gKCdhLCAnYikgbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMyA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNCA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGRcblxuICAgICAgdmFsIGQgOiBkIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdkIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYywgZCkgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDUgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZVxuXG4gICAgICB2YWwgZSA6IGUgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkLCBlKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICAoKiB0aGVyZSB0aGUgbW9kdWxlIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIG5lZWQgdG8gZGVhbCB3aXRoIGEgdHlwZSBbdF0gd2l0aFxuICAgICAgIHBhcmFtZXRlcnMgd2hvc2Uga2luZCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIHR5cGUgdmFyaWFibGU6IFsnYSAndF0sIGV2ZW4gd2l0aFxuICAgICAgIGEgZ2FkdC4gKilcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBUMCBvZiAobW9kdWxlIFQwIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQxIG9mIChtb2R1bGUgVDEgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDIgb2YgKG1vZHVsZSBUMiB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMyBvZiAobW9kdWxlIFQzIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQ0IG9mIChtb2R1bGUgVDQgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDUgb2YgKG1vZHVsZSBUNSB3aXRoIHR5cGUgdCA9ICdhKVxuXG4gICAgbGV0IGFyaXR5ID0gZnVuY3Rpb25cbiAgICAgIHwgVDAgXyAtPiAwXG4gICAgICB8IFQxIF8gLT4gMVxuICAgICAgfCBUMiBfIC0+IDJcbiAgICAgIHwgVDMgXyAtPiAzXG4gICAgICB8IFQ0IF8gLT4gNFxuICAgICAgfCBUNSBfIC0+IDVcbiAgICA7O1xuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgKHR5cGUgYSkgPSBmdW5jdGlvblxuICAgICAgfCBUMCByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUMSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUMiByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMiB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUMyByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUNCByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUNCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUNSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUNSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgbmFtZSByZXAgPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkICh0eXBlbmFtZV9vZl90IHJlcCkpXG4gIGVuZFxuXG4gIG1vZHVsZSBUdXBsZSA9IHN0cnVjdFxuICAgICgqIHRoZXNlIGNvbnN0cnVjdG9ycyBjb3VsZCBiZSBwbHVuZ2VkIGF0IHRvcGxldmVsIG9mIFR5cGVyZXAudCwgaG93ZXZlciBpdCBpcyBsZXNzXG4gICAgICAgdmVyYm9zZSB0aGlzIHdheSAqKVxuICAgIHR5cGUgXyB0ID1cbiAgICAgIHwgVDIgOiAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50KSAtPiAoJ2EgKiAnYikgdFxuICAgICAgfCBUMyA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQpIC0+ICgnYSAqICdiICogJ2MpIHRcbiAgICAgIHwgVDQgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkKSB0XG4gICAgICB8IFQ1IDpcbiAgICAgICAgICAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50ICogJ2QgVHlwZXJlcC50ICogJ2UgVHlwZXJlcC50KVxuICAgICAgICAgIC0+ICgnYSAqICdiICogJ2MgKiAnZCAqICdlKSB0XG5cbiAgICBsZXQgYXJpdHkgOiB0eXBlIGEuIGEgdCAtPiBpbnQgPSBmdW5jdGlvblxuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQyIF8gLT4gMlxuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQzIF8gLT4gM1xuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQ0IF8gLT4gNFxuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQ1IF8gLT4gNVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA6IHR5cGUgYS4gYSB0IC0+IGEgVHlwZW5hbWUudCA9IGZ1bmN0aW9uXG4gICAgICB8IFQyIChhLCBiKSAtPlxuICAgICAgICBOYW1lX29mLnR5cGVuYW1lX29mX3R1cGxlMiAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgIHwgVDMgKGEsIGIsIGMpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGUzXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGMpXG4gICAgICB8IFQ0IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICBOYW1lX29mLnR5cGVuYW1lX29mX3R1cGxlNFxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYSlcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGIpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBjKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgZClcbiAgICAgIHwgVDUgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGU1XG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGMpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBkKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgZSlcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLk0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXAgPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSByZXBcbiAgICBlbmQpXG5cbiAgbGV0IHJlYyB0eXBlbmFtZV9vZl90IDogdHlwZSBhLiBhIHQgLT4gYSBUeXBlbmFtZS50ID0gZnVuY3Rpb25cbiAgICB8IEludCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludFxuICAgIHwgSW50MzIgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9pbnQzMlxuICAgIHwgSW50NjQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9pbnQ2NFxuICAgIHwgTmF0aXZlaW50IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfbmF0aXZlaW50XG4gICAgfCBDaGFyIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfY2hhclxuICAgIHwgRmxvYXQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9mbG9hdFxuICAgIHwgU3RyaW5nIC0+IE5hbWVfb2YudHlwZW5hbWVfb2Zfc3RyaW5nXG4gICAgfCBCeXRlcyAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2J5dGVzXG4gICAgfCBCb29sIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYm9vbFxuICAgIHwgVW5pdCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX3VuaXRcbiAgICB8IE9wdGlvbiByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9vcHRpb24gKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgTGlzdCByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9saXN0ICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IEFycmF5IHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2FycmF5ICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IExhenkgcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfbGF6eV90ICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IFJlZiByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9yZWYgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgRnVuY3Rpb24gKGRvbSwgcm5nKSAtPlxuICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl9mdW5jdGlvbiAodHlwZW5hbWVfb2ZfdCBkb20pICh0eXBlbmFtZV9vZl90IHJuZylcbiAgICB8IFR1cGxlIHJlcCAtPiBUeXBlcmVwLlR1cGxlLnR5cGVuYW1lX29mX3QgcmVwXG4gICAgfCBSZWNvcmQgcmVwIC0+IFR5cGVyZXAuUmVjb3JkLnR5cGVuYW1lX29mX3QgcmVwXG4gICAgfCBWYXJpYW50IHJlcCAtPiBUeXBlcmVwLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IE5hbWVkIChuYW1lLCBfKSAtPiBOYW1lZC50eXBlbmFtZV9vZl90IG5hbWVcbiAgOztcblxuICBsZXQgcmVjIHNhbWVfd2l0bmVzcyA6IHR5cGUgYSBiLiBhIHQgLT4gYiB0IC0+IChhLCBiKSBUeXBlX2VxdWFsLnQgb3B0aW9uID1cbiAgICBmdW4gdDEgdDIgLT5cbiAgICAgIGxldCBtb2R1bGUgRSA9IFR5cGVfZXF1YWwgaW5cbiAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICB8IE5hbWVkIChuYW1lMSwgcjEpLCBOYW1lZCAobmFtZTIsIHIyKSAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzIChOYW1lZC50eXBlbmFtZV9vZl90IG5hbWUxKSAoTmFtZWQudHlwZW5hbWVfb2ZfdCBuYW1lMilcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4XG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgKG1hdGNoIHIxLCByMiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGxhenkgdDEpLCBTb21lIChsYXp5IHQyKSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgICAgIHwgU29tZSAobGF6eSB0MSksIE5vbmUgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICAgICB8IE5vbmUsIFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgICAgfCBOb25lLCBOb25lIC0+IE5vbmUpKVxuICAgICAgfCBOYW1lZCAoXywgcjEpLCB0MiAtPlxuICAgICAgICAobWF0Y2ggcjEgd2l0aFxuICAgICAgICAgfCBTb21lIChsYXp5IHQxKSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCB0MSwgTmFtZWQgKF8sIHIyKSAtPlxuICAgICAgICAobWF0Y2ggcjIgd2l0aFxuICAgICAgICAgfCBTb21lIChsYXp5IHQyKSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCBJbnQsIEludCAtPiBTb21lIEUuVFxuICAgICAgfCBJbnQzMiwgSW50MzIgLT4gU29tZSBFLlRcbiAgICAgIHwgSW50NjQsIEludDY0IC0+IFNvbWUgRS5UXG4gICAgICB8IE5hdGl2ZWludCwgTmF0aXZlaW50IC0+IFNvbWUgRS5UXG4gICAgICB8IENoYXIsIENoYXIgLT4gU29tZSBFLlRcbiAgICAgIHwgRmxvYXQsIEZsb2F0IC0+IFNvbWUgRS5UXG4gICAgICB8IFN0cmluZywgU3RyaW5nIC0+IFNvbWUgRS5UXG4gICAgICB8IEJ5dGVzLCBCeXRlcyAtPiBTb21lIEUuVFxuICAgICAgfCBCb29sLCBCb29sIC0+IFNvbWUgRS5UXG4gICAgICB8IFVuaXQsIFVuaXQgLT4gU29tZSBFLlRcbiAgICAgIHwgT3B0aW9uIHIxLCBPcHRpb24gcjIgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyByMSByMiB3aXRoXG4gICAgICAgICB8IE5vbmUgYXMgeCAtPiB4XG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geClcbiAgICAgIHwgTGlzdCByMSwgTGlzdCByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBBcnJheSByMSwgQXJyYXkgcjIgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyByMSByMiB3aXRoXG4gICAgICAgICB8IE5vbmUgYXMgeCAtPiB4XG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geClcbiAgICAgIHwgTGF6eSByMSwgTGF6eSByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBSZWYgcjEsIFJlZiByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBGdW5jdGlvbiAoZG9tMSwgcm5nMSksIEZ1bmN0aW9uIChkb20yLCBybmcyKSAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIGRvbTEgZG9tMiwgc2FtZV93aXRuZXNzIHJuZzEgcm5nMiB3aXRoXG4gICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lKVxuICAgICAgfCBUdXBsZSB0MSwgVHVwbGUgdDIgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gVHlwZXJlcC5UdXBsZSBpblxuICAgICAgICAobWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgIHwgVC5UMiAoYTEsIGIxKSwgVC5UMiAoYTIsIGIyKSAtPlxuICAgICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIGExIGEyLCBzYW1lX3dpdG5lc3MgYjEgYjIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UMyAoYTEsIGIxLCBjMSksIFQuVDMgKGEyLCBiMiwgYzIpIC0+XG4gICAgICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgYTEgYTIsIHNhbWVfd2l0bmVzcyBiMSBiMiwgc2FtZV93aXRuZXNzIGMxIGMyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfLCBfIHwgXywgTm9uZSwgXyB8IF8sIF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UNCAoYTEsIGIxLCBjMSwgZDEpLCBULlQ0IChhMiwgYjIsIGMyLCBkMikgLT5cbiAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgIHNhbWVfd2l0bmVzcyBhMSBhMiwgc2FtZV93aXRuZXNzIGIxIGIyLCBzYW1lX3dpdG5lc3MgYzEgYzIsIHNhbWVfd2l0bmVzcyBkMSBkMlxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfLCBfLCBfIHwgXywgTm9uZSwgXywgXyB8IF8sIF8sIE5vbmUsIF8gfCBfLCBfLCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICAgICB8IFQuVDUgKGExLCBiMSwgYzEsIGQxLCBlMSksIFQuVDUgKGEyLCBiMiwgYzIsIGQyLCBlMikgLT5cbiAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICggc2FtZV93aXRuZXNzIGExIGEyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGIxIGIyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGMxIGMyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGQxIGQyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGUxIGUyIClcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8sIF8sIF9cbiAgICAgICAgICAgIHwgXywgTm9uZSwgXywgXywgX1xuICAgICAgICAgICAgfCBfLCBfLCBOb25lLCBfLCBfXG4gICAgICAgICAgICB8IF8sIF8sIF8sIE5vbmUsIF9cbiAgICAgICAgICAgIHwgXywgXywgXywgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQyIF8sIF8gLT4gTm9uZVxuICAgICAgICAgfCBULlQzIF8sIF8gLT4gTm9uZVxuICAgICAgICAgfCBULlQ0IF8sIF8gLT4gTm9uZVxuICAgICAgICAgfCBULlQ1IF8sIF8gLT4gTm9uZSlcbiAgICAgIHwgUmVjb3JkIHIxLCBSZWNvcmQgcjIgLT5cbiAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzXG4gICAgICAgICAgKFR5cGVyZXAuUmVjb3JkLnR5cGVuYW1lX29mX3QgcjEpXG4gICAgICAgICAgKFR5cGVyZXAuUmVjb3JkLnR5cGVuYW1lX29mX3QgcjIpXG4gICAgICB8IFZhcmlhbnQgcjEsIFZhcmlhbnQgcjIgLT5cbiAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzXG4gICAgICAgICAgKFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHIxKVxuICAgICAgICAgIChUeXBlcmVwLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCByMilcbiAgICAgIHwgSW50LCBfIC0+IE5vbmVcbiAgICAgIHwgSW50MzIsIF8gLT4gTm9uZVxuICAgICAgfCBJbnQ2NCwgXyAtPiBOb25lXG4gICAgICB8IE5hdGl2ZWludCwgXyAtPiBOb25lXG4gICAgICB8IENoYXIsIF8gLT4gTm9uZVxuICAgICAgfCBGbG9hdCwgXyAtPiBOb25lXG4gICAgICB8IFN0cmluZywgXyAtPiBOb25lXG4gICAgICB8IEJ5dGVzLCBfIC0+IE5vbmVcbiAgICAgIHwgQm9vbCwgXyAtPiBOb25lXG4gICAgICB8IFVuaXQsIF8gLT4gTm9uZVxuICAgICAgfCBPcHRpb24gXywgXyAtPiBOb25lXG4gICAgICB8IExpc3QgXywgXyAtPiBOb25lXG4gICAgICB8IEFycmF5IF8sIF8gLT4gTm9uZVxuICAgICAgfCBMYXp5IF8sIF8gLT4gTm9uZVxuICAgICAgfCBSZWYgXywgXyAtPiBOb25lXG4gICAgICB8IEZ1bmN0aW9uIF8sIF8gLT4gTm9uZVxuICAgICAgfCBUdXBsZSBfLCBfIC0+IE5vbmVcbiAgICAgIHwgUmVjb3JkIF8sIF8gLT4gTm9uZVxuICAgICAgfCBWYXJpYW50IF8sIF8gLT4gTm9uZVxuICA7O1xuXG4gIGxldCBzYW1lIGEgYiA9IHNhbWVfd2l0bmVzcyBhIGIgPD4gTm9uZVxuXG4gIGxldCBzYW1lX3dpdG5lc3NfZXhuIGEgYiA9XG4gICAgbWF0Y2ggc2FtZV93aXRuZXNzIGEgYiB3aXRoXG4gICAgfCBTb21lIHByb29mIC0+IHByb29mXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCByZWMgaGVhZCA9IGZ1bmN0aW9uXG4gICAgfCBUeXBlcmVwLk5hbWVkIChfLCBTb21lIChsYXp5IHQpKSAtPiBoZWFkIHRcbiAgICB8IHQgLT4gdFxuICA7O1xuZW5kXG5cbmxldCB0eXBlcmVwX29mX2ludCA9IFR5cGVyZXAuSW50XG5sZXQgdHlwZXJlcF9vZl9pbnQzMiA9IFR5cGVyZXAuSW50MzJcbmxldCB0eXBlcmVwX29mX2ludDY0ID0gVHlwZXJlcC5JbnQ2NFxubGV0IHR5cGVyZXBfb2ZfbmF0aXZlaW50ID0gVHlwZXJlcC5OYXRpdmVpbnRcbmxldCB0eXBlcmVwX29mX2NoYXIgPSBUeXBlcmVwLkNoYXJcbmxldCB0eXBlcmVwX29mX2Zsb2F0ID0gVHlwZXJlcC5GbG9hdFxubGV0IHR5cGVyZXBfb2Zfc3RyaW5nID0gVHlwZXJlcC5TdHJpbmdcbmxldCB0eXBlcmVwX29mX2J5dGVzID0gVHlwZXJlcC5CeXRlc1xubGV0IHR5cGVyZXBfb2ZfYm9vbCA9IFR5cGVyZXAuQm9vbFxubGV0IHR5cGVyZXBfb2ZfdW5pdCA9IFR5cGVyZXAuVW5pdFxubGV0IHR5cGVyZXBfb2Zfb3B0aW9uIHJlcCA9IFR5cGVyZXAuT3B0aW9uIHJlcFxubGV0IHR5cGVyZXBfb2ZfbGlzdCByZXAgPSBUeXBlcmVwLkxpc3QgcmVwXG5sZXQgdHlwZXJlcF9vZl9hcnJheSByZXAgPSBUeXBlcmVwLkFycmF5IHJlcFxubGV0IHR5cGVyZXBfb2ZfbGF6eV90IHJlcCA9IFR5cGVyZXAuTGF6eSByZXBcbmxldCB0eXBlcmVwX29mX3JlZiByZXAgPSBUeXBlcmVwLlJlZiByZXBcbmxldCB0eXBlcmVwX29mX2Z1bmN0aW9uIGRvbSBybmcgPSBUeXBlcmVwLkZ1bmN0aW9uIChkb20sIHJuZylcbmxldCB0eXBlcmVwX29mX3R1cGxlMCA9IFR5cGVyZXAuVW5pdFxubGV0IHR5cGVyZXBfb2ZfdHVwbGUyIGEgYiA9IFR5cGVyZXAuVHVwbGUgKFR5cGVyZXAuVHVwbGUuVDIgKGEsIGIpKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGUzIGEgYiBjID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UMyAoYSwgYiwgYykpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTQgYSBiIGMgZCA9IFR5cGVyZXAuVHVwbGUgKFR5cGVyZXAuVHVwbGUuVDQgKGEsIGIsIGMsIGQpKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGU1IGEgYiBjIGQgZSA9IFR5cGVyZXAuVHVwbGUgKFR5cGVyZXAuVHVwbGUuVDUgKGEsIGIsIGMsIGQsIGUpKVxuXG5pbmNsdWRlIE5hbWVfb2ZcblxubGV0IHZhbHVlX3R1cGxlMCA9ICgpXG5cbmxldCB0eXBlcmVwX29mX2ludDYzLCB0eXBlbmFtZV9vZl9pbnQ2MyA9XG4gIGxldCB0eXBlcmVwX2FuZF90eXBlbmFtZV9vZl9pbnQ2M19yZXByXG4gICAgOiB0eXBlIGEgYi4gKGEsIGIpIEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLnQgLT4gYSBUeXBlcmVwLnQgKiBhIFR5cGVuYW1lLnRcbiAgICA9IGZ1bmN0aW9uXG4gICAgICB8IEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLkludCAtPiB0eXBlcmVwX29mX2ludCwgdHlwZW5hbWVfb2ZfaW50XG4gICAgICB8IEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLkludDY0IC0+IHR5cGVyZXBfb2ZfaW50NjQsIHR5cGVuYW1lX29mX2ludDY0XG4gIGluXG4gIHR5cGVyZXBfYW5kX3R5cGVuYW1lX29mX2ludDYzX3JlcHIgQmFzZS5JbnQ2My5Qcml2YXRlLnJlcHJcbjs7XG4iLCIoKiB1c2luZyB0aGUgaGFzaF92YXJpYW50IG9mIHBhX3R5cGVfY29udiBhdCBjb21waWxlIHRpbWUgKilcbmxldCByZXByX29mX3BvbHlfdmFyaWFudCA6IFs+IF0gLT4gaW50ID1cbiAgZnVuIHZhcmlhbnQgLT5cbiAgbGV0IG9iaiA9IE9iai5yZXByIHZhcmlhbnQgaW5cbiAgaWYgT2JqLmlzX2ludCBvYmpcbiAgdGhlbiBPYmoub2JqIG9ialxuICBlbHNlIChcbiAgICBsZXQgc2l6ZSA9IE9iai5zaXplIG9iaiBpblxuICAgIGFzc2VydCAoc2l6ZSA9IDIpO1xuICAgIGxldCByZXByID0gT2JqLmZpZWxkIG9iaiAwIGluXG4gICAgYXNzZXJ0IChPYmouaXNfaW50IHJlcHIpO1xuICAgIE9iai5vYmogcmVwcilcbjs7XG5cbmxldCBoYXNoX3ZhcmlhbnQgcyA9XG4gIGxldCBhY2N1ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBhY2N1IDo9ICgyMjMgKiAhYWNjdSkgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgoMSBsc2wgMzEpIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgaWYgIWFjY3UgPiAweDNGRkZGRkZGIHRoZW4gIWFjY3UgLSAoMSBsc2wgMzEpIGVsc2UgIWFjY3Vcbjs7XG5cbigqIGEgZmV3IHVuaXQgdGVzdHMgb2YgY2FzZXMgdGhhdCBoYXZlIHRyaWdnZXJlZCBkaWZmcyBpbiB0aGUgcGFzdCBvZiB0aGlzXG4gICBsaWIgKilcbmxldCAoKSA9IGFzc2VydCAocmVwcl9vZl9wb2x5X3ZhcmlhbnQgYExhdGVuY3lfc3RhdHMgPSBoYXNoX3ZhcmlhbnQgXCJMYXRlbmN5X3N0YXRzXCIpXG5sZXQgKCkgPSBhc3NlcnQgKHJlcHJfb2ZfcG9seV92YXJpYW50IGB6ZXJvID0gaGFzaF92YXJpYW50IFwiemVyb1wiKVxubGV0W0BpbmxpbmUgbmV2ZXJdIGRvdWJsZV9hcnJheV92YWx1ZSAoKSA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgKE9iai5tYWdpYyAwLilcbmxldCBoYXNfZG91YmxlX2FycmF5X3RhZyBhID0gT2JqLmRvdWJsZV9hcnJheV90YWcgPSBPYmoudGFnIChPYmoucmVwciBhKVxuXG5sZXQgKCkgPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICB0eXBlIGRvdWJsZSA9XG4gICAgICB7IGEgOiBmbG9hdFxuICAgICAgOyBiIDogZmxvYXRcbiAgICAgIH1cblxuICAgIHR5cGUgc2ltcGxlID1cbiAgICAgIHsgYyA6IGZsb2F0XG4gICAgICA7IGQgOiBpbnRcbiAgICAgIH1cblxuICAgIGxldCBkb3VibGUgPSB7IGEgPSBkb3VibGVfYXJyYXlfdmFsdWUgKCk7IGIgPSBkb3VibGVfYXJyYXlfdmFsdWUgKCkgfVxuICAgIGxldCBzaW1wbGUgPSB7IGMgPSBkb3VibGVfYXJyYXlfdmFsdWUgKCk7IGQgPSBkb3VibGVfYXJyYXlfdmFsdWUgKCkgfVxuICBlbmRcbiAgaW5cbiAgYXNzZXJ0IChoYXNfZG91YmxlX2FycmF5X3RhZyBNLmRvdWJsZSk7XG4gIGFzc2VydCAobm90IChoYXNfZG91YmxlX2FycmF5X3RhZyBNLnNpbXBsZSkpXG47O1xuIiwibW9kdWxlIE0gKFggOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBjb21wdXRlIDogdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2EgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2IgWC50IC0+ICgnYSwgJ2IpIHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgWC50IC0+ICdiIFgudCAtPiAnYyBYLnQgLT4gKCdhLCAnYiwgJ2MpIHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzQgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA6PSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgWC50IC0+ICdiIFgudCAtPiAnYyBYLnQgLT4gJ2QgWC50IC0+ICgnYSwgJ2IsICdjLCAnZCkgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzUgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzUgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogICdhIFgudFxuICAgICAgLT4gJ2IgWC50XG4gICAgICAtPiAnYyBYLnRcbiAgICAgIC0+ICdkIFgudFxuICAgICAgLT4gJ2UgWC50XG4gICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IFgudFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgTSAoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbXB1dGF0aW9uID0gJ2EgdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgY29tcHV0YXRpb25cbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4gU3RkX2ludGVybmFsXG5tb2R1bGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYgPSBWYXJpYW50X2FuZF9yZWNvcmRfaW50ZlxuXG5tb2R1bGUgSGVscGVyIChBIDogVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUykgKEIgOiBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5TKSA9IHN0cnVjdFxuICB0eXBlIG1hcCA9IHsgbWFwIDogJ2EuICdhIEEudCAtPiAnYSBCLnQgfVxuXG4gIGxldCBtYXBfdmFyaWFudCAodHlwZSB2YXJpYW50KSB7IG1hcCB9ICh2YXJpYW50IDogdmFyaWFudCBBLlZhcmlhbnQudCkgPVxuICAgIGxldCBtYXBfY3JlYXRlID0gZnVuY3Rpb25cbiAgICAgIHwgQS5UYWcuQXJncyBmY3QgLT4gQi5UYWdfaW50ZXJuYWwuQXJncyBmY3RcbiAgICAgIHwgQS5UYWcuQ29uc3QgayAtPiBCLlRhZ19pbnRlcm5hbC5Db25zdCBrXG4gICAgaW5cbiAgICBsZXQgbWFwX3RhZyB0YWcgPVxuICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgIHwgQS5WYXJpYW50LlRhZyB0YWcgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gQS5UYWcubGFiZWwgdGFnIGluXG4gICAgICAgIGxldCByZXAgPSBtYXAgKEEuVGFnLnRyYXZlcnNlIHRhZykgaW5cbiAgICAgICAgbGV0IGFyaXR5ID0gQS5UYWcuYXJpdHkgdGFnIGluXG4gICAgICAgIGxldCBhcmdzX2xhYmVscyA9IEEuVGFnLmFyZ3NfbGFiZWxzIHRhZyBpblxuICAgICAgICBsZXQgaW5kZXggPSBBLlRhZy5pbmRleCB0YWcgaW5cbiAgICAgICAgbGV0IG9jYW1sX3JlcHIgPSBBLlRhZy5vY2FtbF9yZXByIHRhZyBpblxuICAgICAgICBsZXQgdHlpZCA9IEEuVGFnLnR5aWQgdGFnIGluXG4gICAgICAgIGxldCBjcmVhdGUgPSBtYXBfY3JlYXRlIChBLlRhZy5jcmVhdGUgdGFnKSBpblxuICAgICAgICBCLlZhcmlhbnRfaW50ZXJuYWwuVGFnXG4gICAgICAgICAgKEIuVGFnLmludGVybmFsX3VzZV9vbmx5XG4gICAgICAgICAgICAgeyBCLlRhZ19pbnRlcm5hbC5sYWJlbFxuICAgICAgICAgICAgIDsgcmVwXG4gICAgICAgICAgICAgOyBhcml0eVxuICAgICAgICAgICAgIDsgYXJnc19sYWJlbHNcbiAgICAgICAgICAgICA7IGluZGV4XG4gICAgICAgICAgICAgOyBvY2FtbF9yZXByXG4gICAgICAgICAgICAgOyB0eWlkXG4gICAgICAgICAgICAgOyBjcmVhdGVcbiAgICAgICAgICAgICB9KVxuICAgIGluXG4gICAgbGV0IHR5cGVuYW1lID0gQS5WYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudCBpblxuICAgIGxldCBwb2x5bW9ycGhpYyA9IEEuVmFyaWFudC5pc19wb2x5bW9ycGhpYyB2YXJpYW50IGluXG4gICAgbGV0IHRhZ3MgPVxuICAgICAgQXJyYXkuaW5pdCAoQS5WYXJpYW50Lmxlbmd0aCB2YXJpYW50KSAoZnVuIGluZGV4IC0+XG4gICAgICAgIG1hcF90YWcgKEEuVmFyaWFudC50YWcgdmFyaWFudCBpbmRleCkpXG4gICAgaW5cbiAgICBsZXQgdmFsdWUgKGEgOiB2YXJpYW50KSA9XG4gICAgICBtYXRjaCBBLlZhcmlhbnQudmFsdWUgdmFyaWFudCBhIHdpdGhcbiAgICAgIHwgQS5WYXJpYW50LlZhbHVlIChhdGFnLCBhKSAtPlxuICAgICAgICAoZnVuICh0eXBlIGFyZ3MpIChhdGFnIDogKHZhcmlhbnQsIGFyZ3MpIEEuVGFnLnQpIChhIDogYXJncykgLT5cbiAgICAgICAgICAgbGV0IChCLlZhcmlhbnRfaW50ZXJuYWwuVGFnIGJ0YWcpID0gdGFncy4oQS5UYWcuaW5kZXggYXRhZykgaW5cbiAgICAgICAgICAgKGZ1biAodHlwZSBleCkgKGJ0YWcgOiAodmFyaWFudCwgZXgpIEIuVGFnLnQpIC0+XG4gICAgICAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgICAgICAgIFR5cGVuYW1lLnNhbWVfd2l0bmVzc19leG4gKEEuVGFnLnR5aWQgYXRhZykgKEIuVGFnLnR5aWQgYnRhZylcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGJ0YWcgPSAoYnRhZyA6ICh2YXJpYW50LCBhcmdzKSBCLlRhZy50KSBpblxuICAgICAgICAgICAgICBCLlZhcmlhbnRfaW50ZXJuYWwuVmFsdWUgKGJ0YWcsIGEpKVxuICAgICAgICAgICAgIGJ0YWcpXG4gICAgICAgICAgYXRhZ1xuICAgICAgICAgIGFcbiAgICBpblxuICAgIEIuVmFyaWFudC5pbnRlcm5hbF91c2Vfb25seSB7IEIuVmFyaWFudF9pbnRlcm5hbC50eXBlbmFtZTsgdGFnczsgcG9seW1vcnBoaWM7IHZhbHVlIH1cbiAgOztcblxuICBsZXQgbWFwX3JlY29yZCAodHlwZSByZWNvcmQpIHsgbWFwIH0gKHJlY29yZCA6IHJlY29yZCBBLlJlY29yZC50KSA9XG4gICAgbGV0IG1hcF9maWVsZCBmaWVsZCA9XG4gICAgICBtYXRjaCBmaWVsZCB3aXRoXG4gICAgICB8IEEuUmVjb3JkLkZpZWxkIGZpZWxkIC0+XG4gICAgICAgIGxldCBsYWJlbCA9IEEuRmllbGQubGFiZWwgZmllbGQgaW5cbiAgICAgICAgbGV0IHJlcCA9IG1hcCAoQS5GaWVsZC50cmF2ZXJzZSBmaWVsZCkgaW5cbiAgICAgICAgbGV0IGluZGV4ID0gQS5GaWVsZC5pbmRleCBmaWVsZCBpblxuICAgICAgICBsZXQgaXNfbXV0YWJsZSA9IEEuRmllbGQuaXNfbXV0YWJsZSBmaWVsZCBpblxuICAgICAgICBsZXQgdHlpZCA9IEEuRmllbGQudHlpZCBmaWVsZCBpblxuICAgICAgICBsZXQgZ2V0ID0gQS5GaWVsZC5nZXQgZmllbGQgaW5cbiAgICAgICAgQi5SZWNvcmRfaW50ZXJuYWwuRmllbGRcbiAgICAgICAgICAoQi5GaWVsZC5pbnRlcm5hbF91c2Vfb25seVxuICAgICAgICAgICAgIHsgQi5GaWVsZF9pbnRlcm5hbC5sYWJlbDsgcmVwOyBpbmRleDsgaXNfbXV0YWJsZTsgdHlpZDsgZ2V0IH0pXG4gICAgaW5cbiAgICBsZXQgdHlwZW5hbWUgPSBBLlJlY29yZC50eXBlbmFtZV9vZl90IHJlY29yZCBpblxuICAgIGxldCBoYXNfZG91YmxlX2FycmF5X3RhZyA9IEEuUmVjb3JkLmhhc19kb3VibGVfYXJyYXlfdGFnIHJlY29yZCBpblxuICAgIGxldCBmaWVsZHMgPVxuICAgICAgQXJyYXkuaW5pdCAoQS5SZWNvcmQubGVuZ3RoIHJlY29yZCkgKGZ1biBpbmRleCAtPlxuICAgICAgICBtYXBfZmllbGQgKEEuUmVjb3JkLmZpZWxkIHJlY29yZCBpbmRleCkpXG4gICAgaW5cbiAgICBsZXQgY3JlYXRlIHsgQi5SZWNvcmRfaW50ZXJuYWwuZ2V0IH0gPVxuICAgICAgbGV0IGdldCAodHlwZSBhKSAoYWZpZWxkIDogKF8sIGEpIEEuRmllbGQudCkgPVxuICAgICAgICBtYXRjaCBmaWVsZHMuKEEuRmllbGQuaW5kZXggYWZpZWxkKSB3aXRoXG4gICAgICAgIHwgQi5SZWNvcmRfaW50ZXJuYWwuRmllbGQgYmZpZWxkIC0+XG4gICAgICAgICAgKGZ1biAodHlwZSBleCkgKGJmaWVsZCA6IChyZWNvcmQsIGV4KSBCLkZpZWxkLnQpIC0+XG4gICAgICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuIChBLkZpZWxkLnR5aWQgYWZpZWxkKSAoQi5GaWVsZC50eWlkIGJmaWVsZClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCBiZmllbGQgPSAoYmZpZWxkIDogKHJlY29yZCwgYSkgQi5GaWVsZC50KSBpblxuICAgICAgICAgICAgIGdldCBiZmllbGQpXG4gICAgICAgICAgICBiZmllbGRcbiAgICAgIGluXG4gICAgICBBLlJlY29yZC5jcmVhdGUgcmVjb3JkIHsgQS5SZWNvcmQuZ2V0IH1cbiAgICBpblxuICAgIEIuUmVjb3JkLmludGVybmFsX3VzZV9vbmx5XG4gICAgICB7IEIuUmVjb3JkX2ludGVybmFsLnR5cGVuYW1lOyBmaWVsZHM7IGhhc19kb3VibGVfYXJyYXlfdGFnOyBjcmVhdGUgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIE5hbWVkID0gc2lnXG4gIHR5cGUgJ2EgY29tcHV0YXRpb25cblxuICBtb2R1bGUgQ29udGV4dCA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdFxuICBlbmRcblxuICB0eXBlICdhIHRcblxuICB2YWwgaW5pdCA6IENvbnRleHQudCAtPiAnYSBUeXBlbmFtZS50IC0+ICdhIHRcbiAgdmFsIGdldF93aXBfY29tcHV0YXRpb24gOiAnYSB0IC0+ICdhIGNvbXB1dGF0aW9uXG4gIHZhbCBzZXRfZmluYWxfY29tcHV0YXRpb24gOiAnYSB0IC0+ICdhIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gIHZhbCBzaGFyZSA6IF8gVHlwZXJlcC50IC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wdXRhdGlvbiA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCBpbnQgOiBpbnQgdFxuICB2YWwgaW50MzIgOiBpbnQzMiB0XG4gIHZhbCBpbnQ2NCA6IGludDY0IHRcbiAgdmFsIG5hdGl2ZWludCA6IG5hdGl2ZWludCB0XG4gIHZhbCBjaGFyIDogY2hhciB0XG4gIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgdmFsIHN0cmluZyA6IHN0cmluZyB0XG4gIHZhbCBieXRlcyA6IGJ5dGVzIHRcbiAgdmFsIGJvb2wgOiBib29sIHRcbiAgdmFsIHVuaXQgOiB1bml0IHRcbiAgdmFsIG9wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgdmFsIGxpc3QgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICB2YWwgYXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5IHRcbiAgdmFsIGxhenlfdCA6ICdhIHQgLT4gJ2EgbGF6eV90IHRcbiAgdmFsIHJlZl8gOiAnYSB0IC0+ICdhIHJlZiB0XG4gIHZhbCBmdW5jdGlvbl8gOiAnYSB0IC0+ICdiIHQgLT4gKCdhIC0+ICdiKSB0XG4gIHZhbCB0dXBsZTIgOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcbiAgdmFsIHR1cGxlMyA6ICdhIHQgLT4gJ2IgdCAtPiAnYyB0IC0+ICgnYSAqICdiICogJ2MpIHRcbiAgdmFsIHR1cGxlNCA6ICdhIHQgLT4gJ2IgdCAtPiAnYyB0IC0+ICdkIHQgLT4gKCdhICogJ2IgKiAnYyAqICdkKSB0XG4gIHZhbCB0dXBsZTUgOiAnYSB0IC0+ICdiIHQgLT4gJ2MgdCAtPiAnZCB0IC0+ICdlIHQgLT4gKCdhICogJ2IgKiAnYyAqICdkICogJ2UpIHRcbiAgdmFsIHJlY29yZCA6ICdhIFJlY29yZC50IC0+ICdhIHRcbiAgdmFsIHZhcmlhbnQgOiAnYSBWYXJpYW50LnQgLT4gJ2EgdFxuXG4gIG1vZHVsZSBOYW1lZCA6IE5hbWVkIHdpdGggdHlwZSAnYSBjb21wdXRhdGlvbiA6PSAnYSB0XG5lbmRcblxuKCogc3BlY2lhbCBmdW5jdG9yIGFwcGxpY2F0aW9uIGZvciBjb21wdXRhdGlvbiBhcyBjbG9zdXJlIG9mIHRoZSBmb3JtIFthIC0+IGJdICopXG5tb2R1bGUgTWFrZV9uYW1lZF9mb3JfY2xvc3VyZSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgaW5wdXRcbiAgICB0eXBlICdhIG91dHB1dFxuICAgIHR5cGUgJ2EgdCA9ICdhIGlucHV0IC0+ICdhIG91dHB1dFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHVuaXRcblxuICAgIGxldCBjcmVhdGUgPSBpZ25vcmVcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHJ1bnRpbWVfZGVyZWZlcmVuY2UgOiAnYSBYLnRcbiAgICA7IHJ1bnRpbWVfcmVmZXJlbmNlIDogJ2EgWC50IHJlZlxuICAgIDsgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgOiAnYSBYLnQgb3B0aW9uIHJlZlxuICAgIH1cblxuICBleGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZ1xuXG4gIGxldCBpbml0ICgpIG5hbWUgPVxuICAgIGxldCBwYXRoID0gVHlwZW5hbWUuVWlkLm5hbWUgKFR5cGVuYW1lLnVpZCBuYW1lKSBpblxuICAgIGxldCByID0gcmVmIChmdW4gXyAtPiByYWlzZSAoVW5kZWZpbmVkIHBhdGgpKSBpblxuICAgIHsgcnVudGltZV9kZXJlZmVyZW5jZSA9IChmdW4gaW5wdXQgLT4gIXIgaW5wdXQpXG4gICAgOyBydW50aW1lX3JlZmVyZW5jZSA9IHJcbiAgICA7IGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlID0gcmVmIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGdldF93aXBfY29tcHV0YXRpb24gc2hhcmVkID1cbiAgICBtYXRjaCBzaGFyZWQuY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UuY29udGVudHMgd2l0aFxuICAgIHwgU29tZSBjbG9zIC0+IGNsb3NcbiAgICB8IE5vbmUgLT4gc2hhcmVkLnJ1bnRpbWVfZGVyZWZlcmVuY2VcbiAgOztcblxuICBsZXQgc2V0X2ZpbmFsX2NvbXB1dGF0aW9uIHNoYXJlZCBjb21wdXRhdGlvbiA9XG4gICAgbGV0IGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlID0gc2hhcmVkLmNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIGluXG4gICAgbWF0Y2ggY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UuY29udGVudHMgd2l0aFxuICAgIHwgU29tZSBfIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgTm9uZSAtPlxuICAgICAgaWYgQmFzZS5waHlzX2VxdWFsIHNoYXJlZC5ydW50aW1lX2RlcmVmZXJlbmNlIGNvbXB1dGF0aW9uIHRoZW4gYXNzZXJ0IGZhbHNlO1xuICAgICAgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgOj0gU29tZSBjb21wdXRhdGlvbjtcbiAgICAgIHNoYXJlZC5ydW50aW1lX3JlZmVyZW5jZSA6PSBjb21wdXRhdGlvbjtcbiAgICAgIGNvbXB1dGF0aW9uXG4gIDs7XG5cbiAgbGV0IHNoYXJlIF8gPSB0cnVlXG5lbmRcblxubW9kdWxlIElkZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBuYW1lIDogc3RyaW5nXG4gICAgOyBpbXBsZW1lbnRzIDogVHlwZW5hbWUuVWlkLnQgLT4gYm9vbFxuICAgIH1cblxuICBleGNlcHRpb24gQnJva2VuX2RlcGVuZGVuY3kgb2Ygc3RyaW5nXG5cbiAgbGV0IGNoZWNrX2RlcGVuZGVuY2llcyBuYW1lIHJlcXVpcmVkID1cbiAgICBtYXRjaCByZXF1aXJlZCB3aXRoXG4gICAgfCBbXSAtPiBmdW4gXyAtPiAoKVxuICAgIHwgXyAtPlxuICAgICAgZnVuIHVpZCAtPlxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIHsgbmFtZSA9IG5hbWUnOyBpbXBsZW1lbnRzIH0gLT5cbiAgICAgICAgICAgICBpZiBub3QgKGltcGxlbWVudHMgdWlkKVxuICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgKCogc29tZXRoaW5nIGlzIHdyb25nIHdpdGggdGhlIHNldCB1cCwgdGhpcyBpcyBhbiBlcnJvciBkdXJpbmcgdGhlXG4gICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBvZiB0aGUgcHJvZ3JhbSwgd2UgcmF0aGVyIGZhaWwgd2l0aCBhIGh1bWFuXG4gICAgICAgICAgICAgICAgICByZWFkYWJsZSBvdXRwdXQgKilcbiAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgICAgICBcIlR5cGVfZ2VuZXJpYyAlUyByZXF1aXJlcyAlUyBmb3IgdWlkICVTXFxuXCJcbiAgICAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgICAgbmFtZSdcbiAgICAgICAgICAgICAgICAgICAoVHlwZW5hbWUuVWlkLm5hbWUgdWlkKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIHByZXJyX2VuZGxpbmUgbWVzc2FnZTtcbiAgICAgICAgICAgICAgIHJhaXNlIChCcm9rZW5fZGVwZW5kZW5jeSBtZXNzYWdlKSkpXG4gICAgICAgICAgcmVxdWlyZWRcbiAgOztcbmVuZFxuXG4oKiBFeHRlbmRpbmcgYW4gZXhpc3RpbmcgZ2VuZXJpYyAqKVxubW9kdWxlIHR5cGUgRXh0ZW5kaW5nID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIGNvbXB1dGF0aW9uID0gJ2EgdFxuXG4gIHZhbCBpZGVudCA6IElkZW50LnRcblxuICAoKiBnZW5lcmljX2lkZW50ICogdHlwZW5hbWUgb3IgaW5mbyAqKVxuICBleGNlcHRpb24gTm90X2ltcGxlbWVudGVkIG9mIHN0cmluZyAqIHN0cmluZ1xuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6IHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBjb21wdXRhdGlvbiAtPiAnYSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgY29tcHV0YXRpb24gLT4gJ2IgY29tcHV0YXRpb24gLT4gKCdhLCAnYikgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgY29tcHV0YXRpb25cbiAgICAgIC0+ICdiIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYyBjb21wdXRhdGlvblxuICAgICAgLT4gKCdhLCAnYiwgJ2MpIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogICdhIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYiBjb21wdXRhdGlvblxuICAgICAgLT4gJ2MgY29tcHV0YXRpb25cbiAgICAgIC0+ICdkIGNvbXB1dGF0aW9uXG4gICAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzUgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzUgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogICdhIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYiBjb21wdXRhdGlvblxuICAgICAgLT4gJ2MgY29tcHV0YXRpb25cbiAgICAgIC0+ICdkIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnZSBjb21wdXRhdGlvblxuICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICB2YWwgcmVnaXN0ZXIwIDogKG1vZHVsZSBTKSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjEgOiAobW9kdWxlIFMxKSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjIgOiAobW9kdWxlIFMyKSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjMgOiAobW9kdWxlIFMzKSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjQgOiAobW9kdWxlIFM0KSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjUgOiAobW9kdWxlIFM1KSAtPiB1bml0XG5cbiAgKCogc3BlY2lhbCBsZXNzIHNjYXJ5IHR5cGUgd2hlbiB0aGUgdHlwZSBoYXMgbm8gcGFyYW1ldGVycyAqKVxuICB2YWwgcmVnaXN0ZXIgOiAnYSBUeXBlcmVwLnQgLT4gJ2EgY29tcHV0YXRpb24gLT4gdW5pdFxuXG4gICgqXG4gICAgIEVzc2VudGlhbGx5IGJlY2F1c2Ugd2UgY2Fubm90IHRhbGsgYWJvdXQgYSB2YXJpYWJsZSBvZiBraW5kICogLT4ga1xuICAgICB2YWwgcmVnaXN0ZXIxIDogJ2EgJ3QgVHlwZXJlcC50IC0+ICgnYSBjb21wdXRhdGlvbiAtPiAnYSAndCBjb21wdXRhdGlvbikgLT4gdW5pdFxuICAgICAuLi5cbiAgKilcbmVuZFxuXG4oKiBJbXBsZW1lbnRpbmcgYSBuZXcgZ2VuZXJpYyAqKVxubW9kdWxlIHR5cGUgU19pbXBsZW1lbnRhdGlvbiA9IHNpZ1xuICBpbmNsdWRlIEV4dGVuZGluZ1xuXG4gICgqIHJhaXNlIHVzaW5nIHRoZSBjdXJyZW50IGlkZW50ICopXG4gIHZhbCByYWlzZV9ub3RfaW1wbGVtZW50ZWQgOiBzdHJpbmcgLT4gJ2FcblxuICB0eXBlIGltcGxlbWVudGF0aW9uID0geyBnZW5lcmljIDogJ2EuICdhIFR5cGVyZXAudCAtPiAnYSBjb21wdXRhdGlvbiB9XG5cbiAgKCpcbiAgICAgU3RhbmRhcmQgY2FzZSwgZmluZCBhIGV4dGVuZGVkX2ltcGxlbWVudGF0aW9uLCBvciBsb29rIGluIHRoZSBjb250ZW50XG4gICopXG4gIHZhbCBfdXNpbmdfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb25cbiAgICA6ICBpbXBsZW1lbnRhdGlvblxuICAgIC0+ICdhIFR5cGVyZXAuTmFtZWQudFxuICAgIC0+ICdhIFR5cGVyZXAudCBsYXp5X3Qgb3B0aW9uXG4gICAgLT4gJ2EgY29tcHV0YXRpb25cblxuICAoKlxuICAgICBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgbW9yZSBjb250cm9sIG9uIHdoYXQgeW91IHdhbnQgdG8gZG9cbiAgKilcbiAgdmFsIGZpbmRfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb25cbiAgICA6ICBpbXBsZW1lbnRhdGlvblxuICAgIC0+ICdhIFR5cGVyZXAuTmFtZWQudFxuICAgIC0+ICdhIGNvbXB1dGF0aW9uIG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBFeHRlbmRpbmdcblxuICB2YWwgb2ZfdHlwZXJlcCA6ICdhIFR5cGVyZXAudCAtPiBbIGBnZW5lcmljIG9mICdhIGNvbXB1dGF0aW9uIF1cblxuICBtb2R1bGUgQ29tcHV0YXRpb24gOiBDb21wdXRhdGlvbiB3aXRoIHR5cGUgJ2EgdCA9ICdhIHRcbmVuZFxuXG5tb2R1bGUgTWFrZV9TX2ltcGxlbWVudGF0aW9uIChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIHZhbCByZXF1aXJlZCA6IElkZW50LnQgbGlzdFxuICBlbmQpIDogU19pbXBsZW1lbnRhdGlvbiB3aXRoIHR5cGUgJ2EgdCA9ICdhIFgudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBYLnRcbiAgdHlwZSAnYSBjb21wdXRhdGlvbiA9ICdhIHRcblxuICBpbmNsdWRlIFR5cGVfZ2VuZXJpY19pbnRmLk0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgY29tcHV0YXRpb25cbiAgICBlbmQpXG5cbiAgKCogd2UgZG8gbm90IHVzZSBjb3JlIHNpbmNlIHdlIGFyZSBlYXJsaWVyIGluIHRoZSBkZXBlbmRlbmNpZXMgZ3JhcGggKilcbiAgbW9kdWxlIFVpZF90YWJsZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSGFzaHRibC5NYWtlIChUeXBlbmFtZS5VaWQpXG5cbiAgICBsZXQgZmluZCB0YWJsZSBrZXkgPVxuICAgICAgaWYgTGF6eS5pc192YWwgdGFibGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdGFibGUgPSBMYXp5LmZvcmNlIHRhYmxlIGluXG4gICAgICAgIHRyeSBTb21lIChmaW5kIHRhYmxlIGtleSkgd2l0aFxuICAgICAgICB8IEJhc2UuTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZSlcbiAgICAgIGVsc2UgTm9uZVxuICAgIDs7XG5cbiAgICBsZXQgY2hlY2tfZGVwZW5kZW5jaWVzID0gSWRlbnQuY2hlY2tfZGVwZW5kZW5jaWVzIFgubmFtZSBYLnJlcXVpcmVkXG5cbiAgICBsZXQgcmVwbGFjZSB0YWJsZSBrZXkgdmFsdWUgPVxuICAgICAgY2hlY2tfZGVwZW5kZW5jaWVzIGtleTtcbiAgICAgIHJlcGxhY2UgKExhenkuZm9yY2UgdGFibGUpIGtleSB2YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgbWVtIHRhYmxlIGtleSA9XG4gICAgICBpZiBMYXp5LmlzX3ZhbCB0YWJsZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0YWJsZSA9IExhenkuZm9yY2UgdGFibGUgaW5cbiAgICAgICAgbWVtIHRhYmxlIGtleSlcbiAgICAgIGVsc2UgZmFsc2VcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2l6ZSA9IDI1NlxuICBsZXQgdGFibGUwID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGUxID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGUyID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGUzID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGU0ID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGU1ID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuXG4gIGxldCBpc19yZWdpc3RlcmVkIHVpZCA9XG4gICAgVWlkX3RhYmxlLm1lbSB0YWJsZTAgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTEgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTIgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTMgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTQgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTUgdWlkXG4gIDs7XG5cbiAgbGV0IGlkZW50ID0geyBJZGVudC5uYW1lID0gWC5uYW1lOyBpbXBsZW1lbnRzID0gaXNfcmVnaXN0ZXJlZCB9XG5cbiAgbW9kdWxlIEZpbmQwIChUIDogVHlwZXJlcC5OYW1lZC5UMCkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZSA6IHVuaXQgLT4gVC5uYW1lZCBjb21wdXRhdGlvbiBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGUwIChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFMgPSAodmFsIHJlcCA6IFMpIGluXG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4biBTLnR5cGVuYW1lX29mX3QgVC50eXBlbmFtZV9vZl9uYW1lZCBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPSAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgd2l0bmVzcykgUy5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kMSAoVCA6IFR5cGVyZXAuTmFtZWQuVDEpIDogc2lnXG4gICAgdmFsIGNvbXB1dGUgOiB1bml0IC0+IChULmEgY29tcHV0YXRpb24gLT4gVC5hIFQubmFtZWQgY29tcHV0YXRpb24pIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTEgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzEgPSAodmFsIHJlcCA6IFMxKSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fMVxuICAgICAgICAgICAgKFMxKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICdhIHQgPSAnYSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9IFQuYSBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFMxLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQyIChUIDogVHlwZXJlcC5OYW1lZC5UMikgOiBzaWdcbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgdW5pdFxuICAgICAgLT4gKFQuYSBjb21wdXRhdGlvbiAtPiBULmIgY29tcHV0YXRpb24gLT4gKFQuYSwgVC5iKSBULm5hbWVkIGNvbXB1dGF0aW9uKSBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGUyIChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFMyID0gKHZhbCByZXAgOiBTMikgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzJcbiAgICAgICAgICAgIChTMilcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPSBULmEgY29tcHV0YXRpb24gLT4gVC5iIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzIuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDMgKFQgOiBUeXBlcmVwLk5hbWVkLlQzKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gKFQuYSwgVC5iLCBULmMpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTMgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzMgPSAodmFsIHJlcCA6IFMzKSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fM1xuICAgICAgICAgICAgKFMzKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgICAgICAgVC5hIGNvbXB1dGF0aW9uIC0+IFQuYiBjb21wdXRhdGlvbiAtPiBULmMgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTMy5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kNCAoVCA6IFR5cGVyZXAuTmFtZWQuVDQpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYywgVC5kKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgICBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGU0IChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFM0ID0gKHZhbCByZXAgOiBTNCkgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzRcbiAgICAgICAgICAgIChTNClcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAoJ2EsICdiLCAnYywgJ2QpIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgICAgICAgVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5kIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzQuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDUgKFQgOiBUeXBlcmVwLk5hbWVkLlQ1KSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5kIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5lIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gKFQuYSwgVC5iLCBULmMsIFQuZCwgVC5lKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgICBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGU1IChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFM1ID0gKHZhbCByZXAgOiBTNSkgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzVcbiAgICAgICAgICAgIChTNSlcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0ID0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5lIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzUuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdW5pdCA9IFR5cGVuYW1lLnN0YXRpY1xuXG4gIGxldCByZWdpc3RlcjAgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTID0gKHZhbCBjb21wdXRlIDogUykgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIFMudHlwZW5hbWVfb2ZfdCBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMCB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjEgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMSA9ICh2YWwgY29tcHV0ZSA6IFMxKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMxLnR5cGVuYW1lX29mX3QgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTEgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXIyIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzIgPSAodmFsIGNvbXB1dGUgOiBTMikgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTMi50eXBlbmFtZV9vZl90IHVuaXQgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTIgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXIzIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzMgPSAodmFsIGNvbXB1dGUgOiBTMykgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTMy50eXBlbmFtZV9vZl90IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMyB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjQgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTNCA9ICh2YWwgY29tcHV0ZSA6IFM0KSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFM0LnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTQgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXI1IGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzUgPSAodmFsIGNvbXB1dGUgOiBTNSkgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTNS50eXBlbmFtZV9vZl90IHVuaXQgdW5pdCB1bml0IHVuaXQgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTUgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXIgKHR5cGUgYSkgdHlwZXJlcF9vZl9hIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXAudHlwZW5hbWVfb2ZfdCB0eXBlcmVwX29mX2FcbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSB0eXBlcmVwX29mX2FcbiAgICAgIGxldCBjb21wdXRlID0gY29tcHV0ZVxuICAgIGVuZFxuICAgIGluXG4gICAgcmVnaXN0ZXIwIChtb2R1bGUgUyA6IFMpXG4gIDs7XG5cbiAgKCogSU1QTEVNRU5UQVRJT04gKilcblxuICB0eXBlIGltcGxlbWVudGF0aW9uID0geyBnZW5lcmljIDogJ2EuICdhIFR5cGVyZXAudCAtPiAnYSBjb21wdXRhdGlvbiB9XG5cbiAgbGV0IGZpbmRfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24gKHR5cGUgYSkgYXV4ID0gZnVuY3Rpb25cbiAgICB8IFR5cGVyZXAuTmFtZWQuVDAgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDAgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMCAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDEgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDEgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMSAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9IChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgOiBULmEgVC5uYW1lZCBjb21wdXRhdGlvbikgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQyIHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQyIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDIgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPVxuICAgICAgICAgICAoY3VzdG9tIChhdXguZ2VuZXJpYyBULmEpIChhdXguZ2VuZXJpYyBULmIpIDogKFQuYSwgVC5iKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQzIHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQzIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDMgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPVxuICAgICAgICAgICAoY3VzdG9tIChhdXguZ2VuZXJpYyBULmEpIChhdXguZ2VuZXJpYyBULmIpIChhdXguZ2VuZXJpYyBULmMpXG4gICAgICAgICAgICA6IChULmEsIFQuYiwgVC5jKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQ0IHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQ0IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDQgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPVxuICAgICAgICAgICAoY3VzdG9tIChhdXguZ2VuZXJpYyBULmEpIChhdXguZ2VuZXJpYyBULmIpIChhdXguZ2VuZXJpYyBULmMpIChhdXguZ2VuZXJpYyBULmQpXG4gICAgICAgICAgICA6IChULmEsIFQuYiwgVC5jLCBULmQpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDUgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDUgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kNSAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b21cbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuYSlcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuYilcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuYylcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuZClcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuZSlcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMsIFQuZCwgVC5lKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gIDs7XG5cbiAgZXhjZXB0aW9uIE5vdF9pbXBsZW1lbnRlZCBvZiBzdHJpbmcgKiBzdHJpbmdcblxuICBsZXQgcmFpc2Vfbm90X2ltcGxlbWVudGVkIHN0cmluZyA9IHJhaXNlIChOb3RfaW1wbGVtZW50ZWQgKFgubmFtZSwgc3RyaW5nKSlcblxuICBsZXQgX3VzaW5nX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIGF1eCByZXAgY29udGVudCA9XG4gICAgbWF0Y2ggZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiBhdXggcmVwIHdpdGhcbiAgICB8IFNvbWUgY29tcHV0YXRpb24gLT4gY29tcHV0YXRpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIChtYXRjaCBjb250ZW50IHdpdGhcbiAgICAgICB8IFNvbWUgKGxhenkgY29udGVudCkgLT4gYXV4LmdlbmVyaWMgY29udGVudFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbGV0IHR5cGVuYW1lID0gVHlwZXJlcC5OYW1lZC50eXBlbmFtZV9vZl90IHJlcCBpblxuICAgICAgICAgbGV0IG5hbWUgPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIHR5cGVuYW1lKSBpblxuICAgICAgICAgcmFpc2Vfbm90X2ltcGxlbWVudGVkIG5hbWUpXG4gIDs7XG5lbmRcblxubW9kdWxlIF8gPSBIYXNodGJsLk1ha2UgKFR5cGVuYW1lLktleSlcblxubW9kdWxlIE1ha2UgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgdmFsIHJlcXVpcmVkIDogSWRlbnQudCBsaXN0XG5cbiAgICBpbmNsdWRlIENvbXB1dGF0aW9uIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIENvbXB1dGF0aW9uID0gWFxuICBpbmNsdWRlIE1ha2VfU19pbXBsZW1lbnRhdGlvbiAoWClcblxuICBtb2R1bGUgTWVtbyA9IFR5cGVuYW1lLlRhYmxlIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFguTmFtZWQudFxuICAgIGVuZClcblxuICBtb2R1bGUgSGVscGVyID0gSGVscGVyIChUeXBlcmVwKSAoQ29tcHV0YXRpb24pXG5cbiAgbGV0IG9mX3R5cGVyZXAgcmVwID1cbiAgICBsZXQgY29udGV4dCA9IFguTmFtZWQuQ29udGV4dC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbWVtb190YWJsZSA9IE1lbW8uY3JlYXRlIDMyIGluXG4gICAgbGV0IHJlYyBvZl90eXBlcmVwIDogdHlwZSBhLiBhIFR5cGVyZXAudCAtPiBhIHQgPSBmdW5jdGlvblxuICAgICAgfCBUeXBlcmVwLkludCAtPiBYLmludFxuICAgICAgfCBUeXBlcmVwLkludDMyIC0+IFguaW50MzJcbiAgICAgIHwgVHlwZXJlcC5JbnQ2NCAtPiBYLmludDY0XG4gICAgICB8IFR5cGVyZXAuTmF0aXZlaW50IC0+IFgubmF0aXZlaW50XG4gICAgICB8IFR5cGVyZXAuQ2hhciAtPiBYLmNoYXJcbiAgICAgIHwgVHlwZXJlcC5GbG9hdCAtPiBYLmZsb2F0XG4gICAgICB8IFR5cGVyZXAuU3RyaW5nIC0+IFguc3RyaW5nXG4gICAgICB8IFR5cGVyZXAuQnl0ZXMgLT4gWC5ieXRlc1xuICAgICAgfCBUeXBlcmVwLkJvb2wgLT4gWC5ib29sXG4gICAgICB8IFR5cGVyZXAuVW5pdCAtPiBYLnVuaXRcbiAgICAgIHwgVHlwZXJlcC5PcHRpb24gcmVwIC0+IFgub3B0aW9uIChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5MaXN0IHJlcCAtPiBYLmxpc3QgKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkFycmF5IHJlcCAtPiBYLmFycmF5IChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5MYXp5IHJlcCAtPiBYLmxhenlfdCAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuUmVmIHJlcCAtPiBYLnJlZl8gKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkZ1bmN0aW9uIChkb20sIHJuZykgLT4gWC5mdW5jdGlvbl8gKG9mX3R5cGVyZXAgZG9tKSAob2ZfdHlwZXJlcCBybmcpXG4gICAgICB8IFR5cGVyZXAuVHVwbGUgdHVwbGUgLT5cbiAgICAgICAgKCogZG8gTk9UIHdyaXRlIFtYLnR1cGxlMiAob2ZfdHlwZXJlcCBhKSAob2ZfdHlwZXJlcCBiKV1cbiAgICAgICAgICAgYmVjYXVzZSBvZl90eXBlcmVwIGNhbiBjb250YWluIGEgc2lkZSBlZmZlY3QgYW5kIFthXSBzaG91bGQgYmUgZXhlY3V0ZWRcbiAgICAgICAgICAgYmVmb3JlIFtiXSAqKVxuICAgICAgICAobWF0Y2ggdHVwbGUgd2l0aFxuICAgICAgICAgfCBUeXBlcmVwLlR1cGxlLlQyIChhLCBiKSAtPlxuICAgICAgICAgICBsZXQgcmEgPSBvZl90eXBlcmVwIGEgaW5cbiAgICAgICAgICAgbGV0IHJiID0gb2ZfdHlwZXJlcCBiIGluXG4gICAgICAgICAgIFgudHVwbGUyIHJhIHJiXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDMgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgbGV0IHJjID0gb2ZfdHlwZXJlcCBjIGluXG4gICAgICAgICAgIFgudHVwbGUzIHJhIHJiIHJjXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDQgKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgbGV0IHJjID0gb2ZfdHlwZXJlcCBjIGluXG4gICAgICAgICAgIGxldCByZCA9IG9mX3R5cGVyZXAgZCBpblxuICAgICAgICAgICBYLnR1cGxlNCByYSByYiByYyByZFxuICAgICAgICAgfCBUeXBlcmVwLlR1cGxlLlQ1IChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICBsZXQgcmEgPSBvZl90eXBlcmVwIGEgaW5cbiAgICAgICAgICAgbGV0IHJiID0gb2ZfdHlwZXJlcCBiIGluXG4gICAgICAgICAgIGxldCByYyA9IG9mX3R5cGVyZXAgYyBpblxuICAgICAgICAgICBsZXQgcmQgPSBvZl90eXBlcmVwIGQgaW5cbiAgICAgICAgICAgbGV0IHJlID0gb2ZfdHlwZXJlcCBlIGluXG4gICAgICAgICAgIFgudHVwbGU1IHJhIHJiIHJjIHJkIHJlKVxuICAgICAgfCBUeXBlcmVwLlJlY29yZCByZWNvcmQgLT5cbiAgICAgICAgWC5yZWNvcmQgKEhlbHBlci5tYXBfcmVjb3JkIHsgSGVscGVyLm1hcCA9IG9mX3R5cGVyZXAgfSByZWNvcmQpXG4gICAgICB8IFR5cGVyZXAuVmFyaWFudCB2YXJpYW50IC0+XG4gICAgICAgIFgudmFyaWFudCAoSGVscGVyLm1hcF92YXJpYW50IHsgSGVscGVyLm1hcCA9IG9mX3R5cGVyZXAgfSB2YXJpYW50KVxuICAgICAgfCBUeXBlcmVwLk5hbWVkIChuYW1lZCwgY29udGVudCkgLT5cbiAgICAgICAgbGV0IHR5cGVuYW1lID0gVHlwZXJlcC5OYW1lZC50eXBlbmFtZV9vZl90IG5hbWVkIGluXG4gICAgICAgIChtYXRjaCBNZW1vLmZpbmQgbWVtb190YWJsZSB0eXBlbmFtZSB3aXRoXG4gICAgICAgICB8IFNvbWUgc2hhcmVkIC0+IFguTmFtZWQuZ2V0X3dpcF9jb21wdXRhdGlvbiBzaGFyZWRcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiB7IGdlbmVyaWMgPSBvZl90eXBlcmVwIH0gbmFtZWQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGNvbXB1dGF0aW9uIC0+IGNvbXB1dGF0aW9uXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGNvbnRlbnQgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgIGxldCBuYW1lID0gVHlwZW5hbWUuVWlkLm5hbWUgKFR5cGVuYW1lLnVpZCB0eXBlbmFtZSkgaW5cbiAgICAgICAgICAgICAgICAgcmFpc2Vfbm90X2ltcGxlbWVudGVkIG5hbWVcbiAgICAgICAgICAgICAgIHwgU29tZSAobGF6eSBjb250ZW50KSAtPlxuICAgICAgICAgICAgICAgICBpZiBYLk5hbWVkLnNoYXJlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgbGV0IHNoYXJlZCA9IFguTmFtZWQuaW5pdCBjb250ZXh0IHR5cGVuYW1lIGluXG4gICAgICAgICAgICAgICAgICAgTWVtby5zZXQgbWVtb190YWJsZSB0eXBlbmFtZSBzaGFyZWQ7XG4gICAgICAgICAgICAgICAgICAgbGV0IGNvbXB1dGF0aW9uID0gb2ZfdHlwZXJlcCBjb250ZW50IGluXG4gICAgICAgICAgICAgICAgICAgWC5OYW1lZC5zZXRfZmluYWxfY29tcHV0YXRpb24gc2hhcmVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgICAgICAgICBlbHNlIG9mX3R5cGVyZXAgY29udGVudCkpKVxuICAgIGluXG4gICAgbGV0IGNvbXB1dGF0aW9uID0gb2ZfdHlwZXJlcCByZXAgaW5cbiAgICBgZ2VuZXJpYyBjb21wdXRhdGlvblxuICA7O1xuZW5kXG4iLCJvcGVuIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgTWFrZTAgKFggOiBOYW1lZF9pbnRmLlMwKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTAgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCA9XG4gICAgVHlwZXJlcC5OYW1lZC5UMFxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBuYW1lZCA9IFgudFxuICAgICAgICB0eXBlIHQgPSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDBcbiAgICAgICAgd2l0aCB0eXBlIHQgPSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2UxIChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEpIG9mX3AxID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90IChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UMVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSBuYW1lZCA9ICdhIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIHQgPSBwMSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDFcbiAgICAgICAgd2l0aCB0eXBlIHQgPSBwMSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogTmFtZWRfaW50Zi5TMikgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2UyIChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIpIG9mX3AxIG9mX3AyID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdCAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UMlxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiKSBuYW1lZCA9ICgnYSwgJ2IpIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIGIgPSBwMlxuXG4gICAgICAgIGxldCBiID0gb2ZfcDJcblxuICAgICAgICB0eXBlIHQgPSAocDEsIHAyKSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDJcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyKSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogTmFtZWRfaW50Zi5TMykgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2UzIChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIgcDMpIG9mX3AxIG9mX3AyIG9mX3AzID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AzKVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UM1xuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgbmFtZWQgPSAoJ2EsICdiLCAnYykgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgYyA9IHAzXG5cbiAgICAgICAgbGV0IGMgPSBvZl9wM1xuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIsIHAzKSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDNcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyLCBwMykgWC50KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlNCAoWCA6IE5hbWVkX2ludGYuUzQpID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlNCAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkICh0eXBlIHAxIHAyIHAzIHA0KSBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCA9XG4gICAgbGV0IHR5cGVuYW1lX29mX3QgPVxuICAgICAgTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSlcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMilcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMylcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wNClcbiAgICBpblxuICAgIFR5cGVyZXAuTmFtZWQuVDRcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBuYW1lZCA9ICgnYSwgJ2IsICdjLCAnZCkgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgYyA9IHAzXG5cbiAgICAgICAgbGV0IGMgPSBvZl9wM1xuXG4gICAgICAgIHR5cGUgZCA9IHA0XG5cbiAgICAgICAgbGV0IGQgPSBvZl9wNFxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCkgWC50XG5cbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX25hbWVkID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZV9lcXVhbC5yZWZsXG4gICAgICBlbmQgOiBUeXBlcmVwLk5hbWVkLlQ0XG4gICAgICAgIHdpdGggdHlwZSB0ID0gKHAxLCBwMiwgcDMsIHA0KSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2U1IChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIgcDMgcDQgcDUpIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0IG9mX3A1ID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AzKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3A0KVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3A1KVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UNVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZCA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIGIgPSBwMlxuXG4gICAgICAgIGxldCBiID0gb2ZfcDJcblxuICAgICAgICB0eXBlIGMgPSBwM1xuXG4gICAgICAgIGxldCBjID0gb2ZfcDNcblxuICAgICAgICB0eXBlIGQgPSBwNFxuXG4gICAgICAgIGxldCBkID0gb2ZfcDRcblxuICAgICAgICB0eXBlIGUgPSBwNVxuXG4gICAgICAgIGxldCBlID0gb2ZfcDVcblxuICAgICAgICB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQsIHA1KSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDVcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQsIHA1KSBYLnQpXG4gIDs7XG5lbmRcbiIsIm9wZW4gU3RkX2ludGVybmFsXG5cbm1vZHVsZSBNYWtlMCAoWCA6IE5hbWVkX2ludGYuUzApIDogVHlwZXJlcGFibGUuUyB3aXRoIHR5cGUgdCA6PSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UwIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlMSAoWCA6IE5hbWVkX2ludGYuUzEpIDogVHlwZXJlcGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlMSAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxID0gVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCBvZl9wMSwgTm9uZSlcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBOYW1lZF9pbnRmLlMyKSA6IFR5cGVyZXBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIFgudCA9XG5zdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UyIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IE5hbWVkX2ludGYuUzMpIDpcbiAgVHlwZXJlcGFibGUuUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UzIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgb2ZfcDMgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyIG9mX3AzLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlNCAoWCA6IE5hbWVkX2ludGYuUzQpIDpcbiAgVHlwZXJlcGFibGUuUzQgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA6PSAoJ2EsICdiLCAnYywgJ2QpIFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTQgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCA9XG4gICAgVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCwgTm9uZSlcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlNSAoWCA6IE5hbWVkX2ludGYuUzUpIDpcbiAgVHlwZXJlcGFibGUuUzUgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlNSAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0IG9mX3A1ID1cbiAgICBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0IG9mX3A1LCBOb25lKVxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4gSW1wb3J0XG5cbm1vZHVsZSBOYW1lIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgY29tcGFyZV1cblxuICBpbmNsdWRlIHNpZ1xuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuICBbQEBvY2FtbC5kb2MgXCJAaW5saW5lXCJdXG5cbiAgW0BAQGVuZF1cblxuICB2YWwgcmVsYXRpdmVfdG8gOiBkaXI6c3RyaW5nIC0+IHQgLT4gc3RyaW5nXG5cbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgcmVsYXRpdmVfdG8gfmRpciB0ID1cbiAgICBpZiBub3QgKFN0ZGxpYi5GaWxlbmFtZS5pc19yZWxhdGl2ZSB0KSB0aGVuIHQgZWxzZSBTdGRsaWIuRmlsZW5hbWUuY29uY2F0IGRpciB0XG4gIDs7XG5lbmRcblxubGV0IGluaXRpYWxfZGlyID1cbiAgbGV0IGRpcl9vcl9lcnJvciA9XG4gICAgbWF0Y2ggU3RkbGliLlN5cy5nZXRjd2QgKCkgd2l0aFxuICAgIHwgdiAtPiBgT2sgdlxuICAgIHwgZXhjZXB0aW9uIGV4biAtPiBgRXhuIGV4blxuICBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCBkaXJfb3JfZXJyb3Igd2l0aFxuICAgIHwgYE9rIHYgLT4gdlxuICAgIHwgYEV4biBleG4gLT4gcmFpc2UgZXhuXG47O1xuXG5tb2R1bGUgTG9jYXRpb24gPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBmaWxlbmFtZSA6IE5hbWUudFxuICAgICAgOyBsaW5lX251bWJlciA6IGludFxuICAgICAgOyBsaW5lX3N0YXJ0IDogaW50XG4gICAgICA7IHN0YXJ0X3BvcyA6IGludFxuICAgICAgOyBlbmRfcG9zIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIGNvbXBhcmVdXG5cbiAgICBsZXQgXyA9IGZ1biAoXyA6IHQpIC0+ICgpXG5cbiAgICBsZXQgdF9vZl9zZXhwID1cbiAgICAgIChsZXQgZXJyb3Jfc291cmNlX18wMDJfID0gXCJmaWxlLm1sLkxvY2F0aW9uLlQudFwiIGluXG4gICAgICAgZnVuIHhfXzAwM18gLT5cbiAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9yZWNvcmQucmVjb3JkX29mX3NleHBcbiAgICAgICAgICAgfmNhbGxlcjplcnJvcl9zb3VyY2VfXzAwMl9cbiAgICAgICAgICAgfmZpZWxkczpcbiAgICAgICAgICAgICAoRmllbGRcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImZpbGVuYW1lXCJcbiAgICAgICAgICAgICAgICA7IGtpbmQgPSBSZXF1aXJlZFxuICAgICAgICAgICAgICAgIDsgY29udiA9IE5hbWUudF9vZl9zZXhwXG4gICAgICAgICAgICAgICAgOyByZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImxpbmVfbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICA7IGtpbmQgPSBSZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgIDsgY29udiA9IGludF9vZl9zZXhwXG4gICAgICAgICAgICAgICAgICAgICAgOyByZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImxpbmVfc3RhcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjb252ID0gaW50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHJlc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwic3RhcnRfcG9zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGtpbmQgPSBSZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY29udiA9IGludF9vZl9zZXhwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyByZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImVuZF9wb3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjb252ID0gaW50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHJlc3QgPSBFbXB0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICB+aW5kZXhfb2ZfZmllbGQ6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBcImZpbGVuYW1lXCIgLT4gMFxuICAgICAgICAgICAgIHwgXCJsaW5lX251bWJlclwiIC0+IDFcbiAgICAgICAgICAgICB8IFwibGluZV9zdGFydFwiIC0+IDJcbiAgICAgICAgICAgICB8IFwic3RhcnRfcG9zXCIgLT4gM1xuICAgICAgICAgICAgIHwgXCJlbmRfcG9zXCIgLT4gNFxuICAgICAgICAgICAgIHwgXyAtPiAtMSlcbiAgICAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkczpmYWxzZVxuICAgICAgICAgICB+Y3JlYXRlOlxuICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgIChmaWxlbmFtZSwgKGxpbmVfbnVtYmVyLCAobGluZV9zdGFydCwgKHN0YXJ0X3BvcywgKGVuZF9wb3MsICgpKSkpKSkgOiB0IC0+XG4gICAgICAgICAgICAgICB7IGZpbGVuYW1lOyBsaW5lX251bWJlcjsgbGluZV9zdGFydDsgc3RhcnRfcG9zOyBlbmRfcG9zIH0pXG4gICAgICAgICAgIHhfXzAwM19cbiAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgOztcblxuICAgIGxldCBfID0gdF9vZl9zZXhwXG5cbiAgICBsZXQgc2V4cF9vZl90ID1cbiAgICAgIChmdW4geyBmaWxlbmFtZSA9IGZpbGVuYW1lX18wMDVfXG4gICAgICAgICAgIDsgbGluZV9udW1iZXIgPSBsaW5lX251bWJlcl9fMDA3X1xuICAgICAgICAgICA7IGxpbmVfc3RhcnQgPSBsaW5lX3N0YXJ0X18wMDlfXG4gICAgICAgICAgIDsgc3RhcnRfcG9zID0gc3RhcnRfcG9zX18wMTFfXG4gICAgICAgICAgIDsgZW5kX3BvcyA9IGVuZF9wb3NfXzAxM19cbiAgICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgYm5kc19fMDA0XyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAxNF8gPSBzZXhwX29mX2ludCBlbmRfcG9zX18wMTNfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVuZF9wb3NcIjsgYXJnX18wMTRfIF0gOjogYm5kc19fMDA0X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX2ludCBzdGFydF9wb3NfXzAxMV8gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhcnRfcG9zXCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwNF9cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDRfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9pbnQgbGluZV9zdGFydF9fMDA5XyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaW5lX3N0YXJ0XCI7IGFyZ19fMDEwXyBdXG4gICAgICAgICAgIDo6IGJuZHNfXzAwNF9cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDRfID1cbiAgICAgICAgICBsZXQgYXJnX18wMDhfID0gc2V4cF9vZl9pbnQgbGluZV9udW1iZXJfXzAwN18gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGluZV9udW1iZXJcIjsgYXJnX18wMDhfIF1cbiAgICAgICAgICAgOjogYm5kc19fMDA0X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAwNl8gPSBOYW1lLnNleHBfb2ZfdCBmaWxlbmFtZV9fMDA1XyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJmaWxlbmFtZVwiOyBhcmdfXzAwNl8gXSA6OiBibmRzX18wMDRfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDA0X1xuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIDs7XG5cbiAgICBsZXQgXyA9IHNleHBfb2ZfdFxuXG4gICAgbGV0IGNvbXBhcmUgPVxuICAgICAgKGZ1biBhX18wMTVfIGJfXzAxNl8gLT5cbiAgICAgICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDE1XyBiX18wMTZfXG4gICAgICAgICB0aGVuIDBcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBtYXRjaCBOYW1lLmNvbXBhcmUgYV9fMDE1Xy5maWxlbmFtZSBiX18wMTZfLmZpbGVuYW1lIHdpdGhcbiAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAxNV8ubGluZV9udW1iZXIgYl9fMDE2Xy5saW5lX251bWJlciB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMTVfLmxpbmVfc3RhcnQgYl9fMDE2Xy5saW5lX3N0YXJ0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAxNV8uc3RhcnRfcG9zIGJfXzAxNl8uc3RhcnRfcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAwIC0+IGNvbXBhcmVfaW50IGFfXzAxNV8uZW5kX3BvcyBiX18wMTZfLmVuZF9wb3NcbiAgICAgICAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgIDogdCAtPiB0IC0+IGludClcbiAgICA7O1xuXG4gICAgbGV0IF8gPSBjb21wYXJlXG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5cbiAgbGV0IGJlZ2lubmluZ19vZl9maWxlIGZpbGVuYW1lID1cbiAgICB7IGZpbGVuYW1lOyBsaW5lX251bWJlciA9IDE7IGxpbmVfc3RhcnQgPSAwOyBzdGFydF9wb3MgPSAwOyBlbmRfcG9zID0gMCB9XG4gIDs7XG5cbiAgbGV0IG9mX3NvdXJjZV9jb2RlX3Bvc2l0aW9uIChwb3MgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KSA9XG4gICAgeyBmaWxlbmFtZSA9IE5hbWUub2Zfc3RyaW5nIChTdGRsaWIuRmlsZW5hbWUuYmFzZW5hbWUgcG9zLnBvc19mbmFtZSlcbiAgICA7IGxpbmVfbnVtYmVyID0gcG9zLnBvc19sbnVtXG4gICAgOyBsaW5lX3N0YXJ0ID0gcG9zLnBvc19ib2xcbiAgICA7IHN0YXJ0X3BvcyA9IHBvcy5wb3NfY251bVxuICAgIDsgZW5kX3BvcyA9IHBvcy5wb3NfY251bVxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRGlnZXN0IDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZV1cblxuICBpbmNsdWRlIHNpZ1xuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuICBbQEBvY2FtbC5kb2MgXCJAaW5saW5lXCJdXG5cbiAgW0BAQGVuZF1cblxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3N0cmluZyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgXyA9IHNleHBfb2ZfdFxuICBsZXQgY29tcGFyZSA9IChjb21wYXJlX3N0cmluZyA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBfID0gY29tcGFyZVxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gdFxuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbGV0IGV4cGVjdGVkX2xlbmd0aCA9IDMyIGluXG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IGV4cGVjdGVkX2xlbmd0aFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuRmlsZS5EaWdlc3Qub2Zfc3RyaW5nLCB1bmV4cGVjdGVkIGxlbmd0aFwiO1xuICAgIGZvciBpID0gMCB0byBleHBlY3RlZF9sZW5ndGggLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIC0+ICgpXG4gICAgICB8IF8gLT4gaW52YWxpZF9hcmcgXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuRmlsZS5EaWdlc3Qub2Zfc3RyaW5nXCJcbiAgICBkb25lO1xuICAgIHNcbiAgOztcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBOT1RFOlxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZ0xhYmVscy5tbGksIHJ1biB0b29scy9zeW5jX3N0ZGxpYl9kb2NzIGFmdGVyIGVkaXRpbmdcbiAgIGl0IHRvIGdlbmVyYXRlIHN0cmluZy5tbGkuXG5cbiAgIElmIHRoaXMgZmlsZSBpcyBzdHJpbmcubWxpLCBkbyBub3QgZWRpdCBpdCBkaXJlY3RseSAtLSBlZGl0XG4gICBzdHJpbmdMYWJlbHMubWxpIGluc3RlYWQuXG4gKilcblxuKCoqIFN0cmluZ3MuXG5cbiAgICBBIHN0cmluZyBbc10gb2YgbGVuZ3RoIFtuXSBpcyBhbiBpbmRleGFibGUgYW5kIGltbXV0YWJsZSBzZXF1ZW5jZVxuICAgIG9mIFtuXSBieXRlcy4gRm9yIGhpc3RvcmljYWwgcmVhc29ucyB0aGVzZSBieXRlcyBhcmUgcmVmZXJyZWQgdG9cbiAgICBhcyBjaGFyYWN0ZXJzLlxuXG4gICAgVGhlIHNlbWFudGljcyBvZiBzdHJpbmcgZnVuY3Rpb25zIGlzIGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgICBpbmRpY2VzIGFuZCBwb3NpdGlvbnMuIFRoZXNlIGFyZSBkZXBpY3RlZCBhbmQgZGVzY3JpYmVkXG4gICAgYXMgZm9sbG93cy5cblxue3ZcbnBvc2l0aW9ucyAgMCAgIDEgICAyICAgMyAgIDQgICAgbi0xICAgIG5cbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbiAgaW5kaWNlcyAgfCAwIHwgMSB8IDIgfCAzIHwgLi4uIHwgbi0xIHxcbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbnZ9XG4gICAge3VsXG4gICAgey0gQW4ge2UgaW5kZXh9IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgXFxbWzBdO1tuLTFdXFxdLlxuICAgICAgIEl0IHJlcHJlc2VudHMgdGhlIFtpXXRoIGJ5dGUgKGNoYXJhY3Rlcikgb2YgW3NdIHdoaWNoIGNhbiBiZVxuICAgICAgIGFjY2Vzc2VkIHVzaW5nIHRoZSBjb25zdGFudCB0aW1lIHN0cmluZyBpbmRleGluZyBvcGVyYXRvclxuICAgICAgIFtzLltpXV0ufVxuICAgIHstIEEge2UgcG9zaXRpb259IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2VcbiAgICAgICBcXFtbMF07W25dXFxdLiBJdCByZXByZXNlbnRzIGVpdGhlciB0aGUgcG9pbnQgYXQgdGhlIGJlZ2lubmluZyBvZlxuICAgICAgIHRoZSBzdHJpbmcsIG9yIHRoZSBwb2ludCBiZXR3ZWVuIHR3byBpbmRpY2VzLCBvciB0aGUgcG9pbnQgYXRcbiAgICAgICB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuIFRoZSBbaV10aCBieXRlIGluZGV4IGlzIGJldHdlZW4gcG9zaXRpb25cbiAgICAgICBbaV0gYW5kIFtpKzFdLn19XG5cbiAgICBUd28gaW50ZWdlcnMgW3N0YXJ0XSBhbmQgW2xlbl0gYXJlIHNhaWQgdG8gZGVmaW5lIGEge2UgdmFsaWRcbiAgICBzdWJzdHJpbmd9IG9mIFtzXSBpZiBbbGVuID49IDBdIGFuZCBbc3RhcnRdLCBbc3RhcnQrbGVuXSBhcmVcbiAgICBwb3NpdGlvbnMgb2YgW3NdLlxuXG4gICAge2IgVW5pY29kZSB0ZXh0Ln0gU3RyaW5ncyBiZWluZyBhcmJpdHJhcnkgc2VxdWVuY2VzIG9mIGJ5dGVzLCB0aGV5XG4gICAgY2FuIGhvbGQgYW55IGtpbmQgb2YgdGV4dHVhbCBlbmNvZGluZy4gSG93ZXZlciB0aGUgcmVjb21tZW5kZWRcbiAgICBlbmNvZGluZyBmb3Igc3RvcmluZyBVbmljb2RlIHRleHQgaW4gT0NhbWwgc3RyaW5ncyBpcyBVVEYtOC4gVGhpc1xuICAgIGlzIHRoZSBlbmNvZGluZyB1c2VkIGJ5IFVuaWNvZGUgZXNjYXBlcyBpbiBzdHJpbmcgbGl0ZXJhbHMuIEZvclxuICAgIGV4YW1wbGUgdGhlIHN0cmluZyBbXCJcXHV7MUY0MkJ9XCJdIGlzIHRoZSBVVEYtOCBlbmNvZGluZyBvZiB0aGVcbiAgICBVbmljb2RlIGNoYXJhY3RlciBVKzFGNDJCLlxuXG4gICAge2IgUGFzdCBtdXRhYmlsaXR5Ln0gQmVmb3JlIE9DYW1sIDQuMDIsIHN0cmluZ3MgdXNlZCB0byBiZSBtb2RpZmlhYmxlIGluXG4gICAgcGxhY2UgbGlrZSB7IUJ5dGVzLnR9IG11dGFibGUgc2VxdWVuY2VzIG9mIGJ5dGVzLlxuICAgIE9DYW1sIDQgaGFkIHZhcmlvdXMgY29tcGlsZXIgZmxhZ3MgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBzdXBwb3J0IHRoZVxuICAgIHRyYW5zaXRpb24gcGVyaW9kIGZyb20gbXV0YWJsZSB0byBpbW11dGFibGUgc3RyaW5ncy5cbiAgICBUaG9zZSBvcHRpb25zIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlLCBhbmQgc3RyaW5ncyBhcmUgbm93IGFsd2F5c1xuICAgIGltbXV0YWJsZS5cblxuICAgIFRoZSBsYWJlbGVkIHZlcnNpb24gb2YgdGhpcyBtb2R1bGUgY2FuIGJlIHVzZWQgYXMgZGVzY3JpYmVkIGluIHRoZVxuICAgIHshU3RkTGFiZWxzfSBtb2R1bGUuXG4qKVxuXG4oKiogezE6c3RyaW5ncyBTdHJpbmdzfSAqKVxuXG50eXBlIHQgPSBzdHJpbmdcbigqKiBUaGUgdHlwZSBmb3Igc3RyaW5ncy4gKilcblxudmFsIG1ha2UgOiBpbnQgLT4gY2hhciAtPiBzdHJpbmdcbigqKiBbbWFrZSBuIGNdIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbl0gd2l0aCBlYWNoIGluZGV4IGhvbGRpbmcgdGhlXG4gICAgY2hhcmFjdGVyIFtjXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtuIDwgMF0gb3IgW24gPiBdeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9LiAqKVxuXG52YWwgaW5pdCA6IGludCAtPiAoaW50IC0+IGNoYXIpIC0+IHN0cmluZ1xuKCoqIFtpbml0IG4gZl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGluZGV4XG4gICAgW2ldIGhvbGRpbmcgdGhlIGNoYXJhY3RlciBbZiBpXSAoY2FsbGVkIGluIGluY3JlYXNpbmcgaW5kZXggb3JkZXIpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uXG4gICAgQHNpbmNlIDQuMDIgKilcblxudmFsIGVtcHR5IDogc3RyaW5nXG4oKiogVGhlIGVtcHR5IHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG4oKiogW2xlbmd0aCBzXSBpcyB0aGUgbGVuZ3RoIChudW1iZXIgb2YgYnl0ZXMvY2hhcmFjdGVycykgb2YgW3NdLiAqKVxuXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuKCoqIFtnZXQgcyBpXSBpcyB0aGUgY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpbiBbc10uIFRoaXMgaXMgdGhlIHNhbWVcbiAgICBhcyB3cml0aW5nIFtzLltpXV0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gbm90IGFuIGluZGV4IG9mIFtzXS4gKilcblxudmFsIG9mX2J5dGVzIDogYnl0ZXMgLT4gc3RyaW5nXG4oKiogUmV0dXJuIGEgbmV3IHN0cmluZyB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlbiBieXRlXG4gICAgc2VxdWVuY2UuXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIHRvX2J5dGVzIDogc3RyaW5nIC0+IGJ5dGVzXG4oKiogUmV0dXJuIGEgbmV3IGJ5dGUgc2VxdWVuY2UgdGhhdCBjb250YWlucyB0aGUgc2FtZSBieXRlcyBhcyB0aGUgZ2l2ZW5cbiAgICBzdHJpbmcuXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGJsaXQgOlxuICBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuKCoqIFNhbWUgYXMgeyFCeXRlcy5ibGl0X3N0cmluZ30gd2hpY2ggc2hvdWxkIGJlIHByZWZlcnJlZC4gKilcblxuKCoqIHsxOmNvbmNhdCBDb25jYXRlbmF0aW5nfVxuXG4gICAge2IgTm90ZS59IFRoZSB7IVN0ZGxpYi4oIF4gKX0gYmluYXJ5IG9wZXJhdG9yIGNvbmNhdGVuYXRlcyB0d29cbiAgICBzdHJpbmdzLiAqKVxuXG52YWwgY29uY2F0IDogc3RyaW5nIC0+IHN0cmluZyBsaXN0IC0+IHN0cmluZ1xuKCoqIFtjb25jYXQgc2VwIHNzXSBjb25jYXRlbmF0ZXMgdGhlIGxpc3Qgb2Ygc3RyaW5ncyBbc3NdLCBpbnNlcnRpbmdcbiAgICB0aGUgc2VwYXJhdG9yIHN0cmluZyBbc2VwXSBiZXR3ZWVuIGVhY2guXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgY2F0IDogc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2F0IHMxIHMyXSBjb25jYXRlbmF0ZXMgczEgYW5kIHMyIChbczEgXiBzMl0pLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG4oKiogezE6cHJlZGljYXRlcyBQcmVkaWNhdGVzIGFuZCBjb21wYXJpc29uc30gKilcblxudmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbigqKiBbZXF1YWwgczAgczFdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbczBdIGFuZCBbczFdIGFyZSBjaGFyYWN0ZXItd2lzZVxuICAgIGVxdWFsLlxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4oKiogW2NvbXBhcmUgczAgczFdIHNvcnRzIFtzMF0gYW5kIFtzMV0gaW4gbGV4aWNvZ3JhcGhpY2FsIG9yZGVyLiBbY29tcGFyZV1cbiAgICBiZWhhdmVzIGxpa2UgeyFTdGRsaWIuY29tcGFyZX0gb24gc3RyaW5ncyBidXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50LiAqKVxuXG52YWwgc3RhcnRzX3dpdGggOlxuICBwcmVmaXggKCogY29tbWVudCB0aHdhcnRzIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgKikgOnN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtzdGFydHNfd2l0aCBdW35wcmVmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBzdGFydHMgd2l0aFxuICAgIFtwcmVmaXhdLlxuXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGVuZHNfd2l0aCA6XG4gIHN1ZmZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2VuZHNfd2l0aCBdW35zdWZmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBlbmRzIHdpdGggW3N1ZmZpeF0uXG5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW2NvbnRhaW5zX2Zyb20gcyBzdGFydCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYWZ0ZXIgcG9zaXRpb24gW3N0YXJ0XS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdGFydF0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgcmNvbnRhaW5zX2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtyY29udGFpbnNfZnJvbSBzIHN0b3AgY10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtjXSBhcHBlYXJzIGluIFtzXVxuICAgIGJlZm9yZSBwb3NpdGlvbiBbc3RvcCsxXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdG9wIDwgMF0gb3IgW3N0b3ArMV0gaXMgbm90IGEgdmFsaWRcbiAgICBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCBjb250YWlucyA6IHN0cmluZyAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnMgcyBjXSBpcyB7IVN0cmluZy5jb250YWluc19mcm9tfVsgcyAwIGNdLiAqKVxuXG4oKiogezE6ZXh0cmFjdCBFeHRyYWN0aW5nIHN1YnN0cmluZ3N9ICopXG5cbnZhbCBzdWIgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiBzdHJpbmdcbigqKiBbc3ViIHMgcG9zIGxlbl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtsZW5dLCBjb250YWluaW5nIHRoZVxuICAgIHN1YnN0cmluZyBvZiBbc10gdGhhdCBzdGFydHMgYXQgcG9zaXRpb24gW3Bvc10gYW5kIGhhcyBsZW5ndGhcbiAgICBbbGVuXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtwb3NdIGFuZCBbbGVuXSBkbyBub3QgZGVzaWduYXRlIGEgdmFsaWRcbiAgICBzdWJzdHJpbmcgb2YgW3NdLiAqKVxuXG52YWwgc3BsaXRfb25fY2hhciA6IGNoYXIgLT4gc3RyaW5nIC0+IHN0cmluZyBsaXN0XG4oKiogW3NwbGl0X29uX2NoYXIgc2VwIHNdIGlzIHRoZSBsaXN0IG9mIGFsbCAocG9zc2libHkgZW1wdHkpXG4gICAgc3Vic3RyaW5ncyBvZiBbc10gdGhhdCBhcmUgZGVsaW1pdGVkIGJ5IHRoZSBjaGFyYWN0ZXIgW3NlcF0uXG4gICAgSWYgW3NdIGlzIGVtcHR5LCB0aGUgcmVzdWx0IGlzIHRoZSBzaW5nbGV0b24gbGlzdCBbW1wiXCJdXS5cblxuICAgIFRoZSBmdW5jdGlvbidzIHJlc3VsdCBpcyBzcGVjaWZpZWQgYnkgdGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzOlxuICAgIHt1bFxuICAgIHstIFRoZSBsaXN0IGlzIG5vdCBlbXB0eS59XG4gICAgey0gQ29uY2F0ZW5hdGluZyBpdHMgZWxlbWVudHMgdXNpbmcgW3NlcF0gYXMgYSBzZXBhcmF0b3IgcmV0dXJucyBhXG4gICAgICBzdHJpbmcgZXF1YWwgdG8gdGhlIGlucHV0IChbY29uY2F0IChtYWtlIDEgc2VwKVxuICAgICAgKHNwbGl0X29uX2NoYXIgc2VwIHMpID0gc10pLn1cbiAgICB7LSBObyBzdHJpbmcgaW4gdGhlIHJlc3VsdCBjb250YWlucyB0aGUgW3NlcF0gY2hhcmFjdGVyLn19XG5cbiAgICBAc2luY2UgNC4wNCAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmFuc2Zvcm1pbmcgVHJhbnNmb3JtaW5nfSAqKVxuXG52YWwgbWFwIDogKGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXAgZiBzXSBpcyB0aGUgc3RyaW5nIHJlc3VsdGluZyBmcm9tIGFwcGx5aW5nIFtmXSB0byBhbGwgdGhlXG4gICAgY2hhcmFjdGVycyBvZiBbc10gaW4gaW5jcmVhc2luZyBvcmRlci5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbnZhbCBtYXBpIDogKGludCAtPiBjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwaSBmIHNdIGlzIGxpa2UgeyFtYXB9IGJ1dCB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBpcyBhbHNvXG4gICAgcGFzc2VkIHRvIFtmXS5cblxuICAgIEBzaW5jZSA0LjAyICopXG5cbnZhbCBmb2xkX2xlZnQgOiAoJ2FjYyAtPiBjaGFyIC0+ICdhY2MpIC0+ICdhY2MgLT4gc3RyaW5nIC0+ICdhY2NcbigqKiBbZm9sZF9sZWZ0IGYgeCBzXSBjb21wdXRlcyBbZiAoLi4uIChmIChmIHggcy5bMF0pIHMuWzFdKSAuLi4pIHMuW24tMV1dLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBmb2xkX3JpZ2h0IDogKGNoYXIgLT4gJ2FjYyAtPiAnYWNjKSAtPiBzdHJpbmcgLT4gJ2FjYyAtPiAnYWNjXG4oKiogW2ZvbGRfcmlnaHQgZiBzIHhdIGNvbXB1dGVzIFtmIHMuWzBdIChmIHMuWzFdICggLi4uIChmIHMuW24tMV0geCkgLi4uKSldLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBmb3JfYWxsIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZm9yX2FsbCBwIHNdIGNoZWNrcyBpZiBhbGwgY2hhcmFjdGVycyBpbiBbc10gc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtwXS5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZXhpc3RzIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZXhpc3RzIHAgc10gY2hlY2tzIGlmIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgb2YgW3NdIHNhdGlzZmllcyB0aGUgcHJlZGljYXRlXG4gICAgW3BdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCB0cmltIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt0cmltIHNdIGlzIFtzXSB3aXRob3V0IGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuIFdoaXRlc3BhY2VcbiAgICBjaGFyYWN0ZXJzIGFyZTogWycgJ10sIFsnXFx4MEMnXSAoZm9ybSBmZWVkKSwgWydcXG4nXSwgWydcXHInXSwgYW5kIFsnXFx0J10uXG5cbiAgICBAc2luY2UgNC4wMCAqKVxuXG52YWwgZXNjYXBlZCA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbZXNjYXBlZCBzXSBpcyBbc10gd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMgcmVwcmVzZW50ZWQgYnkgZXNjYXBlXG4gICAgc2VxdWVuY2VzLCBmb2xsb3dpbmcgdGhlIGxleGljYWwgY29udmVudGlvbnMgb2YgT0NhbWwuXG5cbiAgICBBbGwgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBVUy1BU0NJSSBwcmludGFibGUgcmFuZ2UgXFxbMHgyMDsweDdFXFxdIGFyZVxuICAgIGVzY2FwZWQsIGFzIHdlbGwgYXMgYmFja3NsYXNoICgweDJGKSBhbmQgZG91YmxlLXF1b3RlICgweDIyKS5cblxuICAgIFRoZSBmdW5jdGlvbiB7IVNjYW5mLnVuZXNjYXBlZH0gaXMgYSBsZWZ0IGludmVyc2Ugb2YgW2VzY2FwZWRdLFxuICAgIGkuZS4gW1NjYW5mLnVuZXNjYXBlZCAoZXNjYXBlZCBzKSA9IHNdIGZvciBhbnkgc3RyaW5nIFtzXSAodW5sZXNzXG4gICAgW2VzY2FwZWQgc10gZmFpbHMpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy4gKilcblxudmFsIHVwcGVyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdXBwZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCBsb3dlcmNhc2UgbGV0dGVyc1xuICAgIHRyYW5zbGF0ZWQgdG8gdXBwZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGxvd2VyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbG93ZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCB1cHBlcmNhc2UgbGV0dGVycyB0cmFuc2xhdGVkXG4gICAgdG8gbG93ZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2NhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG9cbiAgICB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgdW5jYXBpdGFsaXplX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1bmNhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG8gbG93ZXJjYXNlLFxuICAgIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhdmVyc2luZyBUcmF2ZXJzaW5nfSAqKVxuXG52YWwgaXRlciA6IChjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXIgZiBzXSBhcHBsaWVzIGZ1bmN0aW9uIFtmXSBpbiB0dXJuIHRvIGFsbCB0aGUgY2hhcmFjdGVycyBvZiBbc10uXG4gICAgSXQgaXMgZXF1aXZhbGVudCB0byBbZiBzLlswXTsgZiBzLlsxXTsgLi4uOyBmIHMuW2xlbmd0aCBzIC0gMV07ICgpXS4gKilcblxudmFsIGl0ZXJpIDogKGludCAtPiBjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXJpXSBpcyBsaWtlIHshaXRlcn0sIGJ1dCB0aGUgZnVuY3Rpb24gaXMgYWxzbyBnaXZlbiB0aGVcbiAgICBjb3JyZXNwb25kaW5nIGNoYXJhY3RlciBpbmRleC5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbigqKiB7MTpzZWFyY2hpbmcgU2VhcmNoaW5nfSAqKVxuXG52YWwgaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXhfZnJvbSBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cblxudmFsIGluZGV4X2Zyb21fb3B0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBbY11cbiAgICBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldIChpZiBhbnkpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4X2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBbY10gaW5cbiAgICBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuXG4gICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBbY10gZG9lcyBub3Qgb2NjdXIgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXS5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtyaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIGluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW2luZGV4IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbX1bIHMgMCBjXS4gKilcblxudmFsIGluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfb3B0IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbV9vcHR9WyBzIDAgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tfVsgcyAobGVuZ3RoIHMgLSAxKSBjXS4gKilcblxudmFsIHJpbmRleF9vcHQgOiBzdHJpbmcgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5yaW5kZXhfZnJvbV9vcHR9WyBzIChsZW5ndGggcyAtIDEpIGNdLlxuXG4gICAgQHNpbmNlIDQuMDUgKilcblxuKCoqIHsxIFN0cmluZ3MgYW5kIFNlcXVlbmNlc30gKilcblxudmFsIHRvX3NlcSA6IHQgLT4gY2hhciBTZXEudFxuKCoqIFt0b19zZXEgc10gaXMgYSBzZXF1ZW5jZSBtYWRlIG9mIHRoZSBzdHJpbmcncyBjaGFyYWN0ZXJzIGluXG4gICAgaW5jcmVhc2luZyBvcmRlci4gSW4gW1widW5zYWZlLXN0cmluZ1wiXSBtb2RlLCBtb2RpZmljYXRpb25zIG9mIHRoZSBzdHJpbmdcbiAgICBkdXJpbmcgaXRlcmF0aW9uIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZSBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCB0b19zZXFpIDogdCAtPiAoaW50ICogY2hhcikgU2VxLnRcbigqKiBbdG9fc2VxaSBzXSBpcyBsaWtlIHshdG9fc2VxfSBidXQgYWxzbyB0dXBsZXMgdGhlIGNvcnJlc3BvbmRpbmcgaW5kZXguXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG52YWwgb2Zfc2VxIDogY2hhciBTZXEudCAtPiB0XG4oKiogW29mX3NlcSBzXSBpcyBhIHN0cmluZyBtYWRlIG9mIHRoZSBzZXF1ZW5jZSdzIGNoYXJhY3RlcnMuXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG4oKiogezE6dXRmIFVURiBkZWNvZGluZyBhbmQgdmFsaWRhdGlvbnN9XG5cbiAgICBAc2luY2UgNC4xNCAqKVxuXG4oKiogezI6dXRmXzggVVRGLTh9ICopXG5cbnZhbCBnZXRfdXRmXzhfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfOF91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTggY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpblxuICAgIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl84IDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl84IGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtOCBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2YmUgVVRGLTE2QkV9ICopXG5cbnZhbCBnZXRfdXRmXzE2YmVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZiZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2QkUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmJlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmJlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZCRSBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2bGUgVVRGLTE2TEV9ICopXG5cbnZhbCBnZXRfdXRmXzE2bGVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZsZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2TEUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmxlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmxlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZMRSBkYXRhLiAqKVxuXG4oKiogezEgQmluYXJ5IGRlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG4oKiogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gYmluYXJ5IGRlY29kZSBpbnRlZ2VycyBmcm9tIHN0cmluZ3MuXG5cbiAgICBBbGwgZm9sbG93aW5nIGZ1bmN0aW9ucyByYWlzZSBbSW52YWxpZF9hcmd1bWVudF0gaWYgdGhlIGNoYXJhY3RlcnNcbiAgICBuZWVkZWQgYXQgaW5kZXggW2ldIHRvIGRlY29kZSB0aGUgaW50ZWdlciBhcmUgbm90IGF2YWlsYWJsZS5cblxuICAgIExpdHRsZS1lbmRpYW4gKHJlc3AuIGJpZy1lbmRpYW4pIGVuY29kaW5nIG1lYW5zIHRoYXQgbGVhc3RcbiAgICAocmVzcC4gbW9zdCkgc2lnbmlmaWNhbnQgYnl0ZXMgYXJlIHN0b3JlZCBmaXJzdC4gIEJpZy1lbmRpYW4gaXNcbiAgICBhbHNvIGtub3duIGFzIG5ldHdvcmsgYnl0ZSBvcmRlci4gIE5hdGl2ZS1lbmRpYW4gZW5jb2RpbmcgaXNcbiAgICBlaXRoZXIgbGl0dGxlLWVuZGlhbiBvciBiaWctZW5kaWFuIGRlcGVuZGluZyBvbiB7IVN5cy5iaWdfZW5kaWFufS5cblxuICAgIDMyLWJpdCBhbmQgNjQtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludDMyXSBhbmRcbiAgICBbaW50NjRdIHR5cGVzLCB3aGljaCBjYW4gYmUgaW50ZXJwcmV0ZWQgZWl0aGVyIGFzIHNpZ25lZCBvclxuICAgIHVuc2lnbmVkIG51bWJlcnMuXG5cbiAgICA4LWJpdCBhbmQgMTYtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludF0gdHlwZSxcbiAgICB3aGljaCBoYXMgbW9yZSBiaXRzIHRoYW4gdGhlIGJpbmFyeSBlbmNvZGluZy4gIFRoZXNlIGV4dHJhIGJpdHNcbiAgICBhcmUgc2lnbi1leHRlbmRlZCAob3IgemVyby1leHRlbmRlZCkgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZWNvZGUgOC1iaXRcbiAgICBvciAxNi1iaXQgaW50ZWdlcnMgYW5kIHJlcHJlc2VudGVkIHRoZW0gd2l0aCBbaW50XSB2YWx1ZXMuXG4qKVxuXG52YWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQ4IGIgaV0gaXMgW2JdJ3MgdW5zaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDggYiBpXSBpcyBbYl0ncyBzaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDE2X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLmhhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRcbiAgICB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZX0uXG5cbiAgICBAc2luY2UgNS4wICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLnNlZWRlZF9oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzXG4gICAgYXJndW1lbnQgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2VTZWVkZWR9LlxuXG4gICAgQHNpbmNlIDUuMCAqKVxuXG52YWwgZ2V0X2ludDMyX2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDMyX2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG4oKiovKiopXG5cbigqIFRoZSBmb2xsb3dpbmcgaXMgZm9yIHN5c3RlbSB1c2Ugb25seS4gRG8gbm90IGNhbGwgZGlyZWN0bHkuICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPlxuICAgIHVuaXQgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuIiwib3BlbiEgQmFzZVxub3BlbiBJbXBvcnRcbm9wZW4gUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbm9wZW4gU2V4cGxpYjAuU2V4cF9jb252XG5cbm1vZHVsZSBCb2R5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBFeGFjdCBvZiBzdHJpbmdcbiAgICB8IE91dHB1dFxuICAgIHwgUHJldHR5IG9mICdhXG4gICAgfCBVbnJlYWNoYWJsZVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZSwgZXF1YWxdXG5cbiAgbGV0IF8gPSBmdW4gKF8gOiAnYSB0KSAtPiAoKVxuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biAodHlwZSBhX18wMDZfKSA6ICgoYV9fMDA2XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAwNl8gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMDFfIC0+IGZ1bmN0aW9uXG4gICAgICB8IEV4YWN0IGFyZzBfXzAwMl8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwM18gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMDJfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkV4YWN0XCI7IHJlczBfXzAwM18gXVxuICAgICAgfCBPdXRwdXQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiT3V0cHV0XCJcbiAgICAgIHwgUHJldHR5IGFyZzBfXzAwNF8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwNV8gPSBfb2ZfYV9fMDAxXyBhcmcwX18wMDRfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlByZXR0eVwiOyByZXMwX18wMDVfIF1cbiAgICAgIHwgVW5yZWFjaGFibGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5yZWFjaGFibGVcIlxuICA7O1xuXG4gIGxldCBfID0gc2V4cF9vZl90XG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDA3XyBiX18wMDhfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDdfIGJfXzAwOF9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAwN18sIGJfXzAwOF8gd2l0aFxuICAgICAgfCBFeGFjdCBfYV9fMDA5XywgRXhhY3QgX2JfXzAxMF8gLT4gY29tcGFyZV9zdHJpbmcgX2FfXzAwOV8gX2JfXzAxMF9cbiAgICAgIHwgRXhhY3QgXywgXyAtPiAtMVxuICAgICAgfCBfLCBFeGFjdCBfIC0+IDFcbiAgICAgIHwgT3V0cHV0LCBPdXRwdXQgLT4gMFxuICAgICAgfCBPdXRwdXQsIF8gLT4gLTFcbiAgICAgIHwgXywgT3V0cHV0IC0+IDFcbiAgICAgIHwgUHJldHR5IF9hX18wMTFfLCBQcmV0dHkgX2JfXzAxMl8gLT4gX2NtcF9fYSBfYV9fMDExXyBfYl9fMDEyX1xuICAgICAgfCBQcmV0dHkgXywgXyAtPiAtMVxuICAgICAgfCBfLCBQcmV0dHkgXyAtPiAxXG4gICAgICB8IFVucmVhY2hhYmxlLCBVbnJlYWNoYWJsZSAtPiAwKVxuICA7O1xuXG4gIGxldCBfID0gY29tcGFyZVxuXG4gIGxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICAgIGZ1biBfY21wX19hIGFfXzAxM18gYl9fMDE0XyAtPlxuICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDEzXyBiX18wMTRfXG4gICAgdGhlbiB0cnVlXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMTNfLCBiX18wMTRfIHdpdGhcbiAgICAgIHwgRXhhY3QgX2FfXzAxNV8sIEV4YWN0IF9iX18wMTZfIC0+IGVxdWFsX3N0cmluZyBfYV9fMDE1XyBfYl9fMDE2X1xuICAgICAgfCBFeGFjdCBfLCBfIC0+IGZhbHNlXG4gICAgICB8IF8sIEV4YWN0IF8gLT4gZmFsc2VcbiAgICAgIHwgT3V0cHV0LCBPdXRwdXQgLT4gdHJ1ZVxuICAgICAgfCBPdXRwdXQsIF8gLT4gZmFsc2VcbiAgICAgIHwgXywgT3V0cHV0IC0+IGZhbHNlXG4gICAgICB8IFByZXR0eSBfYV9fMDE3XywgUHJldHR5IF9iX18wMThfIC0+IF9jbXBfX2EgX2FfXzAxN18gX2JfXzAxOF9cbiAgICAgIHwgUHJldHR5IF8sIF8gLT4gZmFsc2VcbiAgICAgIHwgXywgUHJldHR5IF8gLT4gZmFsc2VcbiAgICAgIHwgVW5yZWFjaGFibGUsIFVucmVhY2hhYmxlIC0+IHRydWUpXG4gIDs7XG5cbiAgbGV0IF8gPSBlcXVhbFxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1hcF9wcmV0dHkgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCAoRXhhY3QgXyB8IE91dHB1dCB8IFVucmVhY2hhYmxlKSBhcyB0IC0+IHRcbiAgICB8IFByZXR0eSB4IC0+IFByZXR0eSAoZiB4KVxuICA7O1xuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgdGFnIDogc3RyaW5nIG9wdGlvblxuICA7IGJvZHkgOiAnYSBCb2R5LnRcbiAgOyBleHRpZF9sb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICA7IGJvZHlfbG9jYXRpb24gOiBGaWxlLkxvY2F0aW9uLnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmUsIGVxdWFsXVxuXG5sZXQgXyA9IGZ1biAoXyA6ICdhIHQpIC0+ICgpXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAxOV9cbiAgICB7IHRhZyA9IHRhZ19fMDIxX1xuICAgIDsgYm9keSA9IGJvZHlfXzAyM19cbiAgICA7IGV4dGlkX2xvY2F0aW9uID0gZXh0aWRfbG9jYXRpb25fXzAyNV9cbiAgICA7IGJvZHlfbG9jYXRpb24gPSBib2R5X2xvY2F0aW9uX18wMjdfXG4gICAgfSAtPlxuICAgIGxldCBibmRzX18wMjBfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyOF8gPSBGaWxlLkxvY2F0aW9uLnNleHBfb2ZfdCBib2R5X2xvY2F0aW9uX18wMjdfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiYm9keV9sb2NhdGlvblwiOyBhcmdfXzAyOF8gXSA6OiBibmRzX18wMjBfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDIwXyA9XG4gICAgICBsZXQgYXJnX18wMjZfID0gRmlsZS5Mb2NhdGlvbi5zZXhwX29mX3QgZXh0aWRfbG9jYXRpb25fXzAyNV8gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJleHRpZF9sb2NhdGlvblwiOyBhcmdfXzAyNl8gXSA6OiBibmRzX18wMjBfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDIwXyA9XG4gICAgICBsZXQgYXJnX18wMjRfID0gQm9keS5zZXhwX29mX3QgX29mX2FfXzAxOV8gYm9keV9fMDIzXyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImJvZHlcIjsgYXJnX18wMjRfIF0gOjogYm5kc19fMDIwX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgbGV0IGJuZHNfXzAyMF8gPVxuICAgICAgbGV0IGFyZ19fMDIyXyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2Zfc3RyaW5nIHRhZ19fMDIxXyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInRhZ1wiOyBhcmdfXzAyMl8gXSA6OiBibmRzX18wMjBfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDIwX1xuOztcblxubGV0IF8gPSBzZXhwX29mX3RcblxubGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gIGZ1biBfY21wX19hIGFfXzAyOV8gYl9fMDMwXyAtPlxuICBpZiBTdGRsaWIuKCA9PSApIGFfXzAyOV8gYl9fMDMwX1xuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggY29tcGFyZV9vcHRpb24gY29tcGFyZV9zdHJpbmcgYV9fMDI5Xy50YWcgYl9fMDMwXy50YWcgd2l0aFxuICAgIHwgMCAtPlxuICAgICAgKG1hdGNoIEJvZHkuY29tcGFyZSBfY21wX19hIGFfXzAyOV8uYm9keSBiX18wMzBfLmJvZHkgd2l0aFxuICAgICAgIHwgMCAtPlxuICAgICAgICAgKG1hdGNoIEZpbGUuTG9jYXRpb24uY29tcGFyZSBhX18wMjlfLmV4dGlkX2xvY2F0aW9uIGJfXzAzMF8uZXh0aWRfbG9jYXRpb24gd2l0aFxuICAgICAgICAgIHwgMCAtPiBGaWxlLkxvY2F0aW9uLmNvbXBhcmUgYV9fMDI5Xy5ib2R5X2xvY2F0aW9uIGJfXzAzMF8uYm9keV9sb2NhdGlvblxuICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgIHwgbiAtPiBuKVxuICAgIHwgbiAtPiBuKVxuOztcblxubGV0IF8gPSBjb21wYXJlXG5cbmxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICBmdW4gX2NtcF9fYSBhX18wMzVfIGJfXzAzNl8gLT5cbiAgaWYgU3RkbGliLiggPT0gKSBhX18wMzVfIGJfXzAzNl9cbiAgdGhlbiB0cnVlXG4gIGVsc2VcbiAgICBTdGRsaWIuKCAmJiApXG4gICAgICAoZXF1YWxfb3B0aW9uIGVxdWFsX3N0cmluZyBhX18wMzVfLnRhZyBiX18wMzZfLnRhZylcbiAgICAgIChTdGRsaWIuKCAmJiApXG4gICAgICAgICAoQm9keS5lcXVhbCBfY21wX19hIGFfXzAzNV8uYm9keSBiX18wMzZfLmJvZHkpXG4gICAgICAgICAoU3RkbGliLiggJiYgKVxuICAgICAgICAgICAgKEZpbGUuTG9jYXRpb24uZXF1YWwgYV9fMDM1Xy5leHRpZF9sb2NhdGlvbiBiX18wMzZfLmV4dGlkX2xvY2F0aW9uKVxuICAgICAgICAgICAgKEZpbGUuTG9jYXRpb24uZXF1YWwgYV9fMDM1Xy5ib2R5X2xvY2F0aW9uIGJfXzAzNl8uYm9keV9sb2NhdGlvbikpKVxuOztcblxubGV0IF8gPSBlcXVhbFxuXG5bQEBAZW5kXVxuXG5tb2R1bGUgUmF3ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSBzdHJpbmcgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZV1cblxuICBsZXQgXyA9IGZ1biAoXyA6IHQpIC0+ICgpXG4gIGxldCBzZXhwX29mX3QgPSAoZnVuIHhfXzA0MV8gLT4gc2V4cF9vZl90IHNleHBfb2Zfc3RyaW5nIHhfXzA0MV8gOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IF8gPSBzZXhwX29mX3RcblxuICBsZXQgY29tcGFyZSA9XG4gICAgKGZ1biBhX18wNDJfIGJfXzA0M18gLT4gY29tcGFyZSBjb21wYXJlX3N0cmluZyBhX18wNDJfIGJfXzA0M18gOiB0IC0+IHQgLT4gaW50KVxuICA7O1xuXG4gIGxldCBfID0gY29tcGFyZVxuXG4gIFtAQEBlbmRdXG5lbmRcblxubGV0IG1hcF9wcmV0dHkgdCB+ZiA9IHsgdCB3aXRoIGJvZHkgPSBCb2R5Lm1hcF9wcmV0dHkgdC5ib2R5IH5mIH1cbiIsIm1vZHVsZSBTdGQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZpbGUgPSBGaWxlXG4gIG1vZHVsZSBFeHBlY3RhdGlvbiA9IEV4cGVjdGF0aW9uXG5lbmRcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMC0wM10gdXNlIFtFeHBlY3RfdGVzdF9jb21tb25dIGluc3RlYWRcIl1cblxuaW5jbHVkZSBTdGQgW0BAYWxlcnQgXCItZGVwcmVjYXRlZFwiXVxuIiwibW9kdWxlIFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgQ1IgKCoqIExlYXZlcyBhIENSLCBzbyB0aGF0IGZlYXR1cmVzIGNhbm5vdCBiZSByZWxlYXNlZC4gKilcbiAgICB8IGBXYXJuaW5nX2Zvcl9jb2xsZWN0b3JfdGVzdGluZyAoKiogT25seSBmb3IgcHB4X2V4cGVjdCB0ZXN0aW5nOyBkbyBub3QgdXNlLiAqKVxuICAgIF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIG1vZHVsZSBJTyA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgZW5kXG5cbiAgKCoqIFJ1biBhbiBJTyBvcGVyYXRpb24gdW50aWwgY29tcGxldGlvbiAqKVxuICB2YWwgcnVuIDogKHVuaXQgLT4gdW5pdCBJTy50KSAtPiB1bml0XG5cbiAgKCoqIFtzYW5pdGl6ZV0gY2FuIGJlIHVzZWQgdG8gbWFwIGFsbCBvdXRwdXQgc3RyaW5ncywgZS5nLiBmb3IgY2xlYW5zaW5nLiAqKVxuICB2YWwgc2FuaXRpemUgOiBzdHJpbmcgLT4gc3RyaW5nXG5cblxuICAoKiogW3Vwb25fdW5yZWxlYXNhYmxlX2lzc3VlXSBzcGVjaWZpZXMgaG93IHRvIGRlYWwgd2l0aCBvdXRwdXQgdGhhdCBzaG91bGQgbm90IGJlXG4gICAgICByZWxlYXNlZCBldmVuIGlmIGl0IGlzIGFjY2VwdGVkIChlLmcuIGJhY2t0cmFjZXMpLiBUaGUgZGVmYXVsdCBpcyBbYENSXS4gICopXG4gIHZhbCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA6IFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlLnRcbmVuZFxuXG4oKiogQ29uZmlndXJhdGlvbiBmb3IgcnVubmluZyBleHBlY3QgdGVzdHMgKilcbm1vZHVsZSB0eXBlIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcyA9IHNpZ1xuICAoKiogVG8gY29uZmlndXJlIGV4cGVjdF90ZXN0LCBhZGQgdGhlIGZvbGxvd2luZyBhdCB0aGUgdG9wIG9mIHlvdXIgLm1sIGZpbGUsIG9yIGluIHNvbWVcbiAgICAgIGltcG9ydC5tbDpcblxuICAgICAge1tcbiAgICAgICAgbW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZyA9IHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgRXhwZWN0X3Rlc3RfY29uZmlnXG4gICAgICAgICAgbGV0IHByZV9yZWRpcmVjdF9ob29rICgpID0gLi4uXG4gICAgICAgIGVuZFxuICAgICAgXX1cblxuICAgICAgTm90ZSB0aGF0IHNpbmNlIGFsbCBleHBlY3QgdGVzdCBhcmUgYWxzbyBpbmxpbmUgdGVzdHMsIHRoZSBpbmxpbmUgdGVzdCBjb25maWd1cmF0aW9uXG4gICAgICBhbHNvIGFwcGxpZXMgdG8gYWxsIGV4cGVjdCB0ZXN0LlxuICAqKVxuXG4gIG1vZHVsZSBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA6IHNpZ1xuICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgVXBvbl91bnJlbGVhc2FibGVfaXNzdWVcblxuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGNvbW1lbnRfcHJlZml4IDogdCAtPiBzdHJpbmdcblxuICAgICgqKiBNZXNzYWdlIHRvIHByaW50IHdoZW4gYW4gZXhwZWN0YXRpb24gY29udGFpbnMgYSBiYWNrdHJhY2UgKilcbiAgICB2YWwgbWVzc2FnZV93aGVuX2V4cGVjdGF0aW9uX2NvbnRhaW5zX2JhY2t0cmFjZSA6IHQgLT4gc3RyaW5nXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBTXG5lbmRcbiIsIm1vZHVsZSB0eXBlIFMgPSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXNfaW50Zi5TXG5cbm1vZHVsZSB0eXBlIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcyA9XG4gIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLkV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc1xuXG5tb2R1bGUgVXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXNfaW50Zi5VcG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuXG4gIGxldCBlcXVhbCB0MSB0MiA9IHQxID0gdDJcblxuICBsZXQgY29tbWVudF9wcmVmaXggPSBmdW5jdGlvblxuICAgIHwgYENSIC0+IFwiQ1IgXCJcbiAgICB8IGBXYXJuaW5nX2Zvcl9jb2xsZWN0b3JfdGVzdGluZyAtPiBcIlwiXG4gIDs7XG5cbiAgbGV0IG1lc3NhZ2Vfd2hlbl9leHBlY3RhdGlvbl9jb250YWluc19iYWNrdHJhY2UgdCA9XG4gICAgUHJpbnRmLnNwcmludGZcbiAgICAgIHt8XG4oKiAlc2V4cGVjdF90ZXN0X2NvbGxlY3RvcjogVGhpcyB0ZXN0IGV4cGVjdGF0aW9uIGFwcGVhcnMgdG8gY29udGFpbiBhIGJhY2t0cmFjZS5cbiAgIFRoaXMgaXMgc3Ryb25nbHkgZGlzY291cmFnZWQgYXMgYmFja3RyYWNlcyBhcmUgZnJhZ2lsZS5cbiAgIFBsZWFzZSBjaGFuZ2UgdGhpcyB0ZXN0IHRvIG5vdCBpbmNsdWRlIGEgYmFja3RyYWNlLiAqKVxuXG58fVxuICAgICAgKGNvbW1lbnRfcHJlZml4IHQpXG4gIDs7XG5lbmRcbiIsImxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDlcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDE3XFwwMDBcXDAxMlxcMDAwXFxcbiAgICBcXDAxNFxcMDAwXFwwMDRcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDI4XFwwMDBcXDAwNVxcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwwMTZcXDAwMFxcMDIwXFwwMDBcXDAyM1xcMDAwXFwwMDZcXDAwMFxcMDg1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNDBcXDAwMFxcMDMxXFwwMDBcXDA0NlxcMDAwXFwwNDhcXDAwMFxcMDA3XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwNjJcXDAwMFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMDY3XFwwMDBcXDA2N1xcMDAwXFwxMDNcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTA1XFwwMDBcXDA5NVxcMDAwXFwxMDdcXDAwMFxcMDk1XFwwMDBcXDExM1xcMDAwXFwwMTBcXDAwMFxcMTA0XFwwMDBcXFxuICAgIFxcMTA0XFwwMDBcXDExNlxcMDAwXFwxMDRcXDAwMFxcMTIyXFwwMDBcXDEwNFxcMDAwXFwxMTZcXDAwMFxcMTExXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwxMTZcXDAwMFxcMTE3XFwwMDBcXDEyNVxcMDAwXFwxMjdcXDAwMFxcMDEyXFwwMDBcXDEyNlxcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMTlcXDAwMFxcMTIyXFwwMDBcXDAxM1xcMDAwXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDhcXDAwMFxcMDEyXFwwMDBcXDAxNFxcMDAwXFwwMjRcXDAwMFxcMDEyXFwwMDBcXDAzOVxcMDAwXFwwMTJcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA2MVxcMDAwXFwwNzFcXDAwMFxcMDU5XFwwMDBcXDA4NlxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDAzXFwwMDBcXDAyOVxcMDAwXFwwMDdcXDAwMFxcMDA2XFwwMDBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDA0XFwwMDBcXDAxN1xcMDAwXFwwMTlcXDAwMFxcMDIxXFwwMDBcXDAxOFxcMDAwXFwwMjdcXDAwMFxcMDI1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAyNlxcMDAwXFwwMTZcXDAwMFxcMDA1XFwwMDBcXDAxMVxcMDAwXFwwMjBcXDAwMFxcMDIyXFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDAzMFxcMDAwXFwwMTNcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFwwMzdcXDAwMFxcXG4gICAgXFwwMzhcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDYwXFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU2XFwwMDBcXDA1OFxcMDAwXFwwNjJcXDAwMFxcMDQ2XFwwMDBcXDA2M1xcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODJcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAyM1xcMDAwXFwwMzNcXDAwMFxcMDM4XFwwMDBcXDA0M1xcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDYwXFwwMDBcXDA3MFxcMDAwXFwwODBcXDAwMFxcMDg1XFwwMDBcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDI4XFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMDNcXDAwMFxcMDE2XFwwMDBcXDAxOFxcMDAwXFwwMjBcXDAwMFxcMDE3XFwwMDBcXDAyNlxcMDAwXFwwMjRcXDAwMFxcXG4gICAgXFwwMTRcXDAwMFxcMDI1XFwwMDBcXDAxNVxcMDAwXFwwMDRcXDAwMFxcMDEwXFwwMDBcXDAxOVxcMDAwXFwwMjFcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMDI5XFwwMDBcXDAwOVxcMDAwXFwwMzBcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDAzN1xcMDAwXFwwMzlcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTZcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2MVxcMDAwXFwwNDRcXDAwMFxcMDYyXFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODJcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIGNoZWNrIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTYzIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgMSAtPlxuIyA1IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAoIG5vdF9hdF9ib3MgbGV4YnVmIClcbiMgMTY4IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBub3RfYXRfYm9zIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9ub3RfYXRfYm9zX3JlYyBsZXhidWYgNDRcbmFuZCBfX29jYW1sX2xleF9ub3RfYXRfYm9zX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDggXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTgwIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgMSAtPlxuIyA5IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICggbm90X2F0X2JvcyBsZXhidWYgKVxuIyAxODUgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAgKCBmYWxzZSApXG4jIDE5MCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbm90X2F0X2Jvc19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTIgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuIFxuICBsZXQgY29udGFpbnNfYmFja3RyYWNlcyBzID0gY2hlY2sgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4jIDIwMSBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcbiIsIm9wZW4gRXhwZWN0X3Rlc3RfY29tbW9uXG5tb2R1bGUgTGlzdCA9IExpc3RMYWJlbHNcblxubW9kdWxlIFRlc3Rfb3V0Y29tZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZmlsZV9kaWdlc3QgOiBGaWxlLkRpZ2VzdC50XG4gICAgOyBsb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICAgIDsgZXhwZWN0YXRpb25zIDogRXhwZWN0YXRpb24uUmF3LnQgbGlzdFxuICAgIDsgdW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIDogRXhwZWN0YXRpb24uUmF3LnQgb3B0aW9uXG4gICAgOyBzYXZlZF9vdXRwdXQgOiAoRmlsZS5Mb2NhdGlvbi50ICogc3RyaW5nKSBsaXN0XG4gICAgOyB0cmFpbGluZ19vdXRwdXQgOiBzdHJpbmdcbiAgICA7IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlIDogRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLlVwb25fdW5yZWxlYXNhYmxlX2lzc3VlLnRcbiAgICA7IHVuY2F1Z2h0X2V4biA6IChleG4gKiBQcmludGV4Yy5yYXdfYmFja3RyYWNlKSBvcHRpb25cbiAgICB9XG5lbmRcblxubGV0IHRlc3RzX3J1biA6IFRlc3Rfb3V0Y29tZS50IGxpc3QgcmVmID0gcmVmIFtdXG5cbmxldCBwcm90ZWN0IH5maW5hbGx5IH5mID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPlxuICAgIGZpbmFsbHkgKCk7XG4gICAgeFxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgZmluYWxseSAoKTtcbiAgICByYWlzZSBlXG47O1xuXG5tb2R1bGUgQ3VycmVudF9maWxlID0gc3RydWN0XG4gIGxldCBjdXJyZW50ID0gcmVmIE5vbmVcblxuICBsZXQgc2V0IH5hYnNvbHV0ZV9maWxlbmFtZSA9XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBjdXJyZW50IDo9IFNvbWUgYWJzb2x1dGVfZmlsZW5hbWVcbiAgICB8IFNvbWUgXyAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5zZXQ6IGFscmVhZHkgc2V0XCJcbiAgOztcblxuICBsZXQgdW5zZXQgKCkgPVxuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IFNvbWUgXyAtPiBjdXJyZW50IDo9IE5vbmVcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IudW5zZXQ6IG5vdCBzZXRcIlxuICA7O1xuXG4gIGxldCBnZXQgKCkgPVxuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IFNvbWUgZm4gLT4gZm5cbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuZ2V0OiBub3Qgc2V0XCJcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW5zdGFuY2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgc2F2ZWQgOiAoRmlsZS5Mb2NhdGlvbi50ICogaW50KSBsaXN0XG4gICAgOyBjaGFuIDogb3V0X2NoYW5uZWxcbiAgICA7IGZpbGVuYW1lIDogRmlsZS5OYW1lLnRcbiAgICB9XG5cbiAgZXh0ZXJuYWwgYmVmb3JlX3Rlc3RcbiAgICA6ICBvdXRwdXQ6b3V0X2NoYW5uZWxcbiAgICAtPiBzdGRvdXQ6b3V0X2NoYW5uZWxcbiAgICAtPiBzdGRlcnI6b3V0X2NoYW5uZWxcbiAgICAtPiB1bml0XG4gICAgPSBcImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdFwiXG5cbiAgZXh0ZXJuYWwgYWZ0ZXJfdGVzdFxuICAgIDogIHN0ZG91dDpvdXRfY2hhbm5lbFxuICAgIC0+IHN0ZGVycjpvdXRfY2hhbm5lbFxuICAgIC0+IHVuaXRcbiAgICA9IFwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3RcIlxuXG4gIGV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfb3V0X2NoYW5uZWxfcG9zX2ZkXCJcblxuICBsZXQgZ2V0X3Bvc2l0aW9uICgpID0gcG9zX291dCBzdGRvdXRcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICBsZXQgZmlsZW5hbWUgPSBGaWxlbmFtZS50ZW1wX2ZpbGUgXCJleHBlY3QtdGVzdFwiIFwib3V0cHV0XCIgaW5cbiAgICBsZXQgY2hhbiA9IG9wZW5fb3V0X2JpbiBmaWxlbmFtZSBpblxuICAgIGJlZm9yZV90ZXN0IH5vdXRwdXQ6Y2hhbiB+c3Rkb3V0IH5zdGRlcnI7XG4gICAgeyBjaGFuOyBmaWxlbmFtZSA9IEZpbGUuTmFtZS5vZl9zdHJpbmcgZmlsZW5hbWU7IHNhdmVkID0gW10gfVxuICA7O1xuXG4gIGxldCByZWxhdGl2ZV9maWxlbmFtZSB0ID0gRmlsZS5OYW1lLnJlbGF0aXZlX3RvIH5kaXI6KEZpbGUuaW5pdGlhbF9kaXIgKCkpIHQuZmlsZW5hbWVcblxuICBsZXQgd2l0aF9pYyBmbmFtZSB+ZiA9XG4gICAgbGV0IGljID0gb3Blbl9pbl9iaW4gZm5hbWUgaW5cbiAgICBwcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gY2xvc2VfaW4gaWMpIH5mOihmdW4gKCkgLT4gZiBpYylcbiAgOztcblxuICBsZXQgY3VycmVudF90ZXN0IDogKEZpbGUuTG9jYXRpb24udCAqIHQpIG9wdGlvbiByZWYgPSByZWYgTm9uZVxuICBsZXQgYW1fcnVubmluZ19leHBlY3RfdGVzdCAoKSA9IE9wdGlvbi5pc19zb21lICFjdXJyZW50X3Rlc3RcblxuICBsZXQgZ2V0X2N1cnJlbnQgKCkgPVxuICAgIG1hdGNoICFjdXJyZW50X3Rlc3Qgd2l0aFxuICAgIHwgU29tZSAoXywgdCkgLT4gdFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5JbnN0YW5jZS5nZXRfY3VycmVudCBjYWxsZWQgb3V0c2lkZSBhIHRlc3QuXCJcbiAgOztcblxuICBsZXQgc2F2ZV9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uID1cbiAgICBsZXQgcG9zID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgdC5zYXZlZCA8LSAobG9jYXRpb24sIHBvcykgOjogdC5zYXZlZFxuICA7O1xuXG4gIGxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvbiA9XG4gICAgbGV0IHBvcyA9IGdldF9wb3NpdGlvbiAoKSBpblxuICAgIGxldCBwcmV2X3BvcyA9XG4gICAgICBtYXRjaCB0LnNhdmVkIHdpdGhcbiAgICAgIHwgW10gLT4gMFxuICAgICAgfCAoXywgcHJldl9wb3MpIDo6IF8gLT4gcHJldl9wb3NcbiAgICBpblxuICAgIHQuc2F2ZWQgPC0gKGxvY2F0aW9uLCBwb3MpIDo6IHQuc2F2ZWQ7XG4gICAgZmx1c2ggdC5jaGFuO1xuICAgIGxldCBsZW4gPSBwb3MgLSBwcmV2X3BvcyBpblxuICAgIHdpdGhfaWMgKHJlbGF0aXZlX2ZpbGVuYW1lIHQpIH5mOihmdW4gaWMgLT5cbiAgICAgIHNlZWtfaW4gaWMgcHJldl9wb3M7XG4gICAgICByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbilcbiAgOztcbmVuZFxuXG5sZXQgYW1fcnVubmluZ19leHBlY3RfdGVzdCA9IEluc3RhbmNlLmFtX3J1bm5pbmdfZXhwZWN0X3Rlc3RcblxubGV0IGZsdXNoICgpID1cbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIEZvcm1hdC5zdGRfZm9ybWF0dGVyICgpO1xuICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggRm9ybWF0LmVycl9mb3JtYXR0ZXIgKCk7XG4gIFN0ZGxpYi5mbHVzaCBTdGRsaWIuc3Rkb3V0O1xuICBTdGRsaWIuZmx1c2ggU3RkbGliLnN0ZGVyclxuOztcblxubGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXQgbG9jYXRpb24gPVxuICBsZXQgaW5zdGFuY2UgPSBJbnN0YW5jZS5nZXRfY3VycmVudCAoKSBpblxuICBmbHVzaCAoKTtcbiAgSW5zdGFuY2Uuc2F2ZV9hbmRfcmV0dXJuX291dHB1dF93aXRob3V0X2ZsdXNoIGluc3RhbmNlIGxvY2F0aW9uXG47O1xuXG5tb2R1bGUgTWFrZSAoQyA6IEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5TKSA9IHN0cnVjdFxuICBtb2R1bGUgSW5zdGFuY2VfaW8gOiBzaWdcbiAgICB2YWwgc2F2ZV9vdXRwdXQgOiBGaWxlLkxvY2F0aW9uLnQgLT4gdW5pdFxuICAgIHZhbCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0IDogRmlsZS5Mb2NhdGlvbi50IC0+IHN0cmluZ1xuXG4gICAgdmFsIGV4ZWNcbiAgICAgIDogIGZpbGVfZGlnZXN0OkZpbGUuRGlnZXN0LnRcbiAgICAgIC0+IGxvY2F0aW9uOkZpbGUuTG9jYXRpb24udFxuICAgICAgLT4gZXhwZWN0YXRpb25zOkV4cGVjdGF0aW9uLlJhdy50IGxpc3RcbiAgICAgIC0+IHVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvbjpFeHBlY3RhdGlvbi5SYXcudCBvcHRpb25cbiAgICAgIC0+IGY6KHVuaXQgLT4gdW5pdCBDLklPLnQpXG4gICAgICAtPiB1bml0XG4gIGVuZCA9IHN0cnVjdFxuICAgIG9wZW4gSW5zdGFuY2VcblxuICAgIGxldCBleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUgaWMgbGVuID1cbiAgICAgIGxldCBzID0gcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gfD4gQy5zYW5pdGl6ZSBpblxuICAgICAgaWYgbm90IChDaGVja19iYWNrdHJhY2VzLmNvbnRhaW5zX2JhY2t0cmFjZXMgcylcbiAgICAgIHRoZW4gc1xuICAgICAgZWxzZVxuICAgICAgICBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMuVXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbiAgICAgICAgLm1lc3NhZ2Vfd2hlbl9leHBlY3RhdGlvbl9jb250YWluc19iYWNrdHJhY2VcbiAgICAgICAgICBDLnVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG4gICAgICAgIF4gc1xuICAgIDs7XG5cbiAgICBsZXQgZ2V0X291dHB1dHNfYW5kX2NsZWFudXAgdCA9XG4gICAgICBTeXMuY2hkaXIgKEZpbGUuaW5pdGlhbF9kaXIgKCkpO1xuICAgICAgbGV0IGxhc3Rfb2ZzID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgICBhZnRlcl90ZXN0IH5zdGRvdXQgfnN0ZGVycjtcbiAgICAgIGNsb3NlX291dCB0LmNoYW47XG4gICAgICBsZXQgZm5hbWUgPSByZWxhdGl2ZV9maWxlbmFtZSB0IGluXG4gICAgICBwcm90ZWN0XG4gICAgICAgIH5maW5hbGx5OihmdW4gKCkgLT4gU3lzLnJlbW92ZSBmbmFtZSlcbiAgICAgICAgfmY6KGZ1biAoKSAtPlxuICAgICAgICAgIHdpdGhfaWMgZm5hbWUgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgbGV0IG9mcywgb3V0cHV0cyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKExpc3QucmV2IHQuc2F2ZWQpXG4gICAgICAgICAgICAgICAgfmluaXQ6KDAsIFtdKVxuICAgICAgICAgICAgICAgIH5mOihmdW4gKG9mcywgYWNjKSAobG9jLCBuZXh0X29mcykgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIGljIChuZXh0X29mcyAtIG9mcykgaW5cbiAgICAgICAgICAgICAgICAgIG5leHRfb2ZzLCAobG9jLCBzKSA6OiBhY2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHRyYWlsaW5nX291dHB1dCA9IGV4dHJhY3Rfb3V0cHV0X2FuZF9zYW5pdGl6ZSBpYyAobGFzdF9vZnMgLSBvZnMpIGluXG4gICAgICAgICAgICBMaXN0LnJldiBvdXRwdXRzLCB0cmFpbGluZ19vdXRwdXQpKVxuICAgIDs7XG5cbiAgICBsZXQgc2F2ZV9vdXRwdXQgbG9jYXRpb24gPVxuICAgICAgbGV0IHQgPSBnZXRfY3VycmVudCAoKSBpblxuICAgICAgZmx1c2ggKCk7XG4gICAgICBzYXZlX291dHB1dF93aXRob3V0X2ZsdXNoIHQgbG9jYXRpb25cbiAgICA7O1xuXG4gICAgbGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXQgbG9jYXRpb24gPVxuICAgICAgbGV0IHQgPSBnZXRfY3VycmVudCAoKSBpblxuICAgICAgZmx1c2ggKCk7XG4gICAgICBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvblxuICAgIDs7XG5cbiAgICBsZXQgKCkgPVxuICAgICAgU3RkbGliLmF0X2V4aXQgKGZ1biAoKSAtPlxuICAgICAgICBtYXRjaCAhY3VycmVudF90ZXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSAobG9jLCB0KSAtPlxuICAgICAgICAgIGxldCBibG9ja3MsIHRyYWlsaW5nID0gZ2V0X291dHB1dHNfYW5kX2NsZWFudXAgdCBpblxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICBcIkZpbGUgJVMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XFxuXFxcbiAgICAgICAgICAgICBFcnJvcjogcHJvZ3JhbSBleGl0ZWQgd2hpbGUgZXhwZWN0IHRlc3Qgd2FzIHJ1bm5pbmchXFxuXFxcbiAgICAgICAgICAgICBPdXRwdXQgY2FwdHVyZWQgc28gZmFyOlxcblxcXG4gICAgICAgICAgICAgJSFcIlxuICAgICAgICAgICAgKEZpbGUuTmFtZS50b19zdHJpbmcgbG9jLmZpbGVuYW1lKVxuICAgICAgICAgICAgbG9jLmxpbmVfbnVtYmVyXG4gICAgICAgICAgICAobG9jLnN0YXJ0X3BvcyAtIGxvYy5saW5lX3N0YXJ0KVxuICAgICAgICAgICAgKGxvYy5lbmRfcG9zIC0gbG9jLmxpbmVfc3RhcnQpO1xuICAgICAgICAgIExpc3QuaXRlciBibG9ja3MgfmY6KGZ1biAoXywgcykgLT4gUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgcyk7XG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgdHJhaWxpbmcpXG4gICAgOztcblxuICAgIGxldCBleGVjIH5maWxlX2RpZ2VzdCB+bG9jYXRpb24gfmV4cGVjdGF0aW9ucyB+dW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIH5mID1cbiAgICAgIGxldCB0ID0gY3JlYXRlICgpIGluXG4gICAgICBjdXJyZW50X3Rlc3QgOj0gU29tZSAobG9jYXRpb24sIHQpO1xuICAgICAgbGV0IGZpbmFsbHkgdW5jYXVnaHRfZXhuID1cbiAgICAgICAgQy5ydW4gKGZ1biAoKSAtPlxuICAgICAgICAgIEMuSU8ucmV0dXJuXG4gICAgICAgICAgICAoZmx1c2ggKCk7XG4gICAgICAgICAgICAgY3VycmVudF90ZXN0IDo9IE5vbmU7XG4gICAgICAgICAgICAgbGV0IHNhdmVkX291dHB1dCwgdHJhaWxpbmdfb3V0cHV0ID0gZ2V0X291dHB1dHNfYW5kX2NsZWFudXAgdCBpblxuICAgICAgICAgICAgIHRlc3RzX3J1blxuICAgICAgICAgICAgIDo9IHsgZmlsZV9kaWdlc3RcbiAgICAgICAgICAgICAgICA7IGxvY2F0aW9uXG4gICAgICAgICAgICAgICAgOyBleHBlY3RhdGlvbnNcbiAgICAgICAgICAgICAgICA7IHVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvblxuICAgICAgICAgICAgICAgIDsgc2F2ZWRfb3V0cHV0XG4gICAgICAgICAgICAgICAgOyB0cmFpbGluZ19vdXRwdXRcbiAgICAgICAgICAgICAgICA7IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gQy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICAgICAgICAgICAgICAgIDsgdW5jYXVnaHRfZXhuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6ICF0ZXN0c19ydW4pKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIEMucnVuIGYgd2l0aFxuICAgICAgfCAoKSAtPiBmaW5hbGx5IE5vbmVcbiAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICBsZXQgYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgICBmaW5hbGx5IChTb21lIChleG4sIGJ0KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2F2ZV9vdXRwdXQgPSBJbnN0YW5jZV9pby5zYXZlX291dHB1dFxuICBsZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCA9IEluc3RhbmNlX2lvLnNhdmVfYW5kX3JldHVybl9vdXRwdXRcblxuICBsZXQgcnVuXG4gICAgICAgIH5maWxlX2RpZ2VzdFxuICAgICAgICB+KGxvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50KVxuICAgICAgICB+YWJzb2x1dGVfZmlsZW5hbWU6ZGVmaW5lZF9pblxuICAgICAgICB+ZGVzY3JpcHRpb25cbiAgICAgICAgfnRhZ3NcbiAgICAgICAgfmV4cGVjdGF0aW9uc1xuICAgICAgICB+dW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uXG4gICAgICAgIH5pbmxpbmVfdGVzdF9jb25maWdcbiAgICAgICAgZlxuICAgID1cbiAgICBQcHhfaW5saW5lX3Rlc3RfbGliLnRlc3RcbiAgICAgIH5jb25maWc6aW5saW5lX3Rlc3RfY29uZmlnXG4gICAgICB+ZGVzY3I6XG4gICAgICAgIChsYXp5XG4gICAgICAgICAgKG1hdGNoIGRlc2NyaXB0aW9uIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lIHMgLT4gcykpXG4gICAgICB+dGFnc1xuICAgICAgfmZpbGVuYW1lOihGaWxlLk5hbWUudG9fc3RyaW5nIGxvY2F0aW9uLmZpbGVuYW1lKVxuICAgICAgfmxpbmVfbnVtYmVyOmxvY2F0aW9uLmxpbmVfbnVtYmVyXG4gICAgICB+c3RhcnRfcG9zOihsb2NhdGlvbi5zdGFydF9wb3MgLSBsb2NhdGlvbi5saW5lX3N0YXJ0KVxuICAgICAgfmVuZF9wb3M6KGxvY2F0aW9uLmVuZF9wb3MgLSBsb2NhdGlvbi5saW5lX3N0YXJ0KVxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgbGV0IHJlZ2lzdGVyaW5nX3Rlc3RzX2ZvciA9IEN1cnJlbnRfZmlsZS5nZXQgKCkgaW5cbiAgICAgICAgIGlmIGRlZmluZWRfaW4gPD4gcmVnaXN0ZXJpbmdfdGVzdHNfZm9yXG4gICAgICAgICB0aGVuXG4gICAgICAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgXCJUcnlpbmcgdG8gcnVuIGFuIGV4cGVjdCB0ZXN0IGZyb20gdGhlIHdyb25nIGZpbGUuXFxuXFxcbiAgICAgICAgICAgICAgLSB0ZXN0IGRlY2xhcmVkIGF0ICVzOiVkXFxuXFxcbiAgICAgICAgICAgICAgLSB0cnlpbmcgdG8gcnVuIGl0IGZyb20gJXNcXG5cIlxuICAgICAgICAgICAgIGRlZmluZWRfaW5cbiAgICAgICAgICAgICBsb2NhdGlvbi5saW5lX251bWJlclxuICAgICAgICAgICAgIHJlZ2lzdGVyaW5nX3Rlc3RzX2ZvclxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICgqIFRvIGF2b2lkIGNhcHR1cmluZyBub3QteWV0IGZsdXNoZWQgZGF0YSBvZiB0aGUgc3Rkb3V0IGJ1ZmZlciAqKVxuICAgICAgICAgICBDLnJ1biAoZnVuICgpIC0+IEMuSU8ucmV0dXJuIChmbHVzaCAoKSkpO1xuICAgICAgICAgICBJbnN0YW5jZV9pby5leGVjXG4gICAgICAgICAgICAgfmZpbGVfZGlnZXN0XG4gICAgICAgICAgICAgfmxvY2F0aW9uXG4gICAgICAgICAgICAgfmV4cGVjdGF0aW9uc1xuICAgICAgICAgICAgIH51bmNhdWdodF9leG5fZXhwZWN0YXRpb25cbiAgICAgICAgICAgICB+ZjtcbiAgICAgICAgICAgdHJ1ZSkpXG4gIDs7XG5lbmRcbltAQGlubGluZSBuZXZlcl1cblxubGV0IHRlc3RzX3J1biAoKSA9XG4gICgqIFdlIHByZXBlbmQgdGVzdHMgd2hlbiB3ZSBlbmNvdW50ZXIgdGhlbSwgc28gcmV2ZXJzZSB0aGUgbGlzdCB0byByZWluc3RhdGUgb3JkZXIgKilcbiAgTGlzdC5yZXYgIXRlc3RzX3J1blxuOztcbiIsIm1vZHVsZSBJTyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGxldCByZXR1cm4geCA9IHhcbmVuZFxuXG5sZXQgc2FuaXRpemUgcyA9IHNcbmxldCBydW4gZiA9IGYgKClcbmxldCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IGBDUlxuIiwibW9kdWxlIFBweF9zZXhwX2NvbnZfbGliID0gc3RydWN0XG4gIG1vZHVsZSBDb252X2Vycm9yID0gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yXG4gIG1vZHVsZSBDb252ID0gU2V4cGxpYjAuU2V4cF9jb252XG4gIG1vZHVsZSBTZXhwID0gU2V4cGxpYjAuU2V4cFxuZW5kXG5cbm1vZHVsZSBTZXhwID0gU2V4cGxpYjAuU2V4cFxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcbm1vZHVsZSBMaXN0ID0gTGlzdExhYmVsc1xuIiwiKCogVGhpcyBtb2R1bGUgYnVpbGRzIGEgYnVmZmVyIG9mIFwiaW5zdHJ1Y3Rpb25zXCIsIGluIG9yZGVyIHRvIHJlcHJlc2VudCBhIGNvbXBhY3Qgc2VxdWVuY2VcbiAgIG9mIGRlbGltaXRpbmcgcG9zaXRpb25zIGFuZCBuZXdsaW5lcy4gVGhlIHBhcnNlciBzdG9yZXMgdGhlIHBvc2l0aW9ucyBvZiBlYWNoOlxuXG4gICAtIG5ld2xpbmVcbiAgIC0gYmVnaW5uaW5nIG9mIGF0b21cbiAgIC0gZW5kIG9mIGF0b21cbiAgIC0gbGVmdCBwYXJlbnRoZXNpc1xuICAgLSByaWdodCBwYXJlbnRoZXNpc1xuXG4gICBJbnN0cnVjdGlvbnMgYXJlIGVuY29kZWQgYXMgYSBzZXF1ZW5jZSBiaXRzLiBUaGUgbmV4dCBpbnN0cnVjdGlvbiBpcyBkZXRlcm1pbmVkIGJ5XG4gICBsb29raW5nIGF0IHRoZSBuZXh0IGZldyBiaXRzOlxuXG4gICAtIGJpdCAwIHJlcHJlc2VudHMgYSBzYXZlZCBwb3NpdGlvbiBmb2xsb3dlZCBieSBhbiBvZmZzZXQgaW5jcmVtZW50XG4gICAtIGJpdHMgMTAgcmVwcmVzZW50IGFuIG9mZnNldCBpbmNyZW1lbnRcbiAgIC0gYml0cyAxMTAgYXJlIGZvbGxvd2VkIGJ5IDUgYml0cyBvZiBwYXlsb2FkLiBUaGUgNS1iaXQgcGF5bG9hZHMgb2YgYW55IHN1YnNlcXVlbnQgMTEwLVxuICAgICBpbnN0cnVjdGlvbnMgYXJlIHNxdWFzaGVkIHRvIGZvcm0gYSBudW1iZXIgKGxlYXN0IHNpZ25pZmljYW50IDUtYml0IGNodW5rIGZpcnN0KS5cbiAgICAgVGhpcyBudW1iZXIgKyA1IHJlcHJlc2VudHMgYW4gb2Zmc2V0IGluY3JlbWVudFxuICAgLSBiaXRzIDExMTAgbWFya3MgdGhlIGJlZ2lubmluZyBvZiBhIG5ldyBsaW5lICh3aXRoIG9mZnNldCBpbmNyZW1lbnRlZClcbiAgIC0gYml0cyAxMTExIHJlcHJlc2VudCBhIHBvc2l0aW9uIHNhdmVkIHR3aWNlIGZvbGxvd2VkIGJ5IGFuIG9mZnNldCBpbmNyZW1lbnRcblxuICAgRm9yIGluc3RhbmNlIGxldCdzIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc2V4cDpcblxuICAge1tcbiAgICAge3xcbihhYmNcbiAgICAgIFwiZm9vXG4gYmFyXCJcbilcbnx9XG4gICBdfVxuXG4gICB0aGUgc2VxdWVuY2Ugb2YgaW5zdHJ1Y3Rpb25zIHRvIHJlY29yZCBpbiBvcmRlciB0byByZWNvbnN0cnVjdCB0aGUgcG9zaXRpb24gb2YgYW55XG4gICBzdWItc2V4cCBpczpcblxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBmaXJzdCAnKCdcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogc3RhcnQgb2YgXCJhYmNcIlxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGVuZCBvZiBcImFiY1wiXG4gICAtIDExMTAgICAgICBuZXdsaW5lXG4gICAtIDExMDBfMDAwMSBhZHZhbmNlIDZcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogc3RhcnQgb2YgXCJmb29cXG4gIGJhclwiXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMTAgICAgICAgIGFkdmFuY2UgMVxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDExMTAgICAgICBuZXdsaW5lXG4gICAtIDExMDBfMDAwMCBhZHZhbmNlIDVcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogZW5kIG9mIFwiZm9vXFxuICBiYXJcIlxuICAgLSAxMTEwICAgICAgbmV3bGluZVxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBsYXN0ICcpJ1xuXG4gICAod2Ugc2F2ZSB0aGUgcG9zaXRpb24gYWZ0ZXIgdGhlIGNsb3NpbmcgcGFyZW50aGVzaXMpXG5cbiAgIFRoZSB0b3RhbCBzZXF1ZW5jZSBpcyA0MiBiaXRzLCBzbyB3ZSBuZWVkIDYgYnl0ZXMgdG8gc3RvcmUgaXRcblxuICAgVGhlIHNlcXVlbmNlIG9mIGJpdHMgaXMgZW5jb2RlZCBhcyBhIHNlcXVlbmNlIG9mIDE2LWJpdCB2YWx1ZXMsIHdoZXJlIHRoZSBlYXJsaWVyIGJpdHNcbiAgIGFyZSBtb3N0IHNpZ25pZmljYW50LlxuXG4gICBOb3RlIHRoYXQgdGhlIHBhcnNlciBzdG9yZXMgdGhlIGVuZCBwb3NpdGlvbnMgYXMgaW5jbHVzaXZlLiBUaGlzIHdheSBvbmx5IHNpbmdsZVxuICAgY2hhcmFjdGVyIGF0b21zIHJlcXVpcmUgYSBkb3VibGUgcG9zaXRpb25zLiBJZiB3ZSB3ZXJlIHN0b3JpbmcgZW5kIHBvc2l0aW9ucyBhc1xuICAgZXhjbHVzaXZlLCB3ZSB3b3VsZCBuZWVkIGRvdWJsZSBwb3NpdGlvbnMgZm9yIFspKF0gYW5kIFthKF0sIHdoaWNoIGFyZSBsaWtlbHkgdG8gYmVcbiAgIGZyZXF1ZW50IGluIHMtZXhwcmVzc2lvbnMgcHJpbnRlZCB3aXRoIHRoZSBub24gW19odW1dIHByaW50ZXIuIFdlIGV4cGVjdCBzaW5nbGVcbiAgIGNoYXJhY3RlciBhdG9tcyB0byBiZSBsZXNzIGZyZXF1ZW50IHNvIGl0IG1ha2VzIHNlbnNlIHRvIHBlbmFsaXplIHRoZW0gaW5zdGVhZC5cbiopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHBvcyA9XG4gIHsgbGluZSA6IGludFxuICA7IGNvbCA6IGludFxuICA7IG9mZnNldCA6IGludFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfcG9zID1cbiAgKGZ1biB7IGxpbmUgPSBsaW5lX18wMDJfOyBjb2wgPSBjb2xfXzAwNF87IG9mZnNldCA9IG9mZnNldF9fMDA2XyB9IC0+XG4gICAgIGxldCBibmRzX18wMDFfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2ZfaW50IG9mZnNldF9fMDA2XyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJvZmZzZXRcIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwNV8gPSBzZXhwX29mX2ludCBjb2xfXzAwNF8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY29sXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDNfID0gc2V4cF9vZl9pbnQgbGluZV9fMDAyXyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaW5lXCI7IGFyZ19fMDAzXyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDFfXG4gICAgIDogcG9zIC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBjb21wYXJlX3BvcyA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgYmVnaW5uaW5nX29mX2ZpbGUgPSB7IGxpbmUgPSAxOyBjb2wgPSAwOyBvZmZzZXQgPSAwIH1cbmxldCBzaGlmdF9wb3MgcG9zIH5jb2xzID0geyBwb3Mgd2l0aCBjb2wgPSBwb3MuY29sICsgY29sczsgb2Zmc2V0ID0gcG9zLm9mZnNldCArIGNvbHMgfVxuXG50eXBlIHJhbmdlID1cbiAgeyBzdGFydF9wb3MgOiBwb3NcbiAgOyBlbmRfcG9zIDogcG9zXG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl9yYW5nZSA9XG4gIChmdW4geyBzdGFydF9wb3MgPSBzdGFydF9wb3NfXzAwOV87IGVuZF9wb3MgPSBlbmRfcG9zX18wMTFfIH0gLT5cbiAgICAgbGV0IGJuZHNfXzAwOF8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICBsZXQgYXJnX18wMTJfID0gc2V4cF9vZl9wb3MgZW5kX3Bvc19fMDExXyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbmRfcG9zXCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9wb3Mgc3RhcnRfcG9zX18wMDlfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInN0YXJ0X3Bvc1wiOyBhcmdfXzAxMF8gXSA6OiBibmRzX18wMDhfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDA4X1xuICAgICA6IHJhbmdlIC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBjb21wYXJlX3JhbmdlID0gU3RkbGliLmNvbXBhcmVcblxubGV0IG1ha2VfcmFuZ2VfaW5jbCB+c3RhcnRfcG9zIH5sYXN0X3BvcyA9XG4gIHsgc3RhcnRfcG9zOyBlbmRfcG9zID0gc2hpZnRfcG9zIGxhc3RfcG9zIH5jb2xzOjEgfVxuOztcblxubW9kdWxlIENodW5rIDogc2lnXG4gICgqKiBSZXByZXNlbnRzIGFuIGFycmF5IG9mIFtsZW5ndGgvMl0gc2lnbmVkIDE2LWJpdCB2YWx1ZXMgKilcbiAgdHlwZSB0XG5cbiAgKCoqIExlbmd0aCBpbiBieXRlcy4gKilcbiAgdmFsIGxlbmd0aCA6IGludFxuXG4gIHZhbCBhbGxvYyA6IHVuaXQgLT4gdFxuXG4gICgqKiBbZ2V0MTYgfnBvc10gYW5kIFtzZXQxNiB+cG9zXSBtYW5pcHVsYXRlIHRoZSBbcG9zLzJddGggc3RvcmVkIHZhbHVlLlxuICAgICAgW3Bvc10gbXVzdCBiZSBldmVuLlxuICAgICAgW3NldDE2IHhdIG9ubHkgdXNlcyB0aGUgMTYgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiBbeF0uICopXG4gIHZhbCBnZXQxNiA6IHQgLT4gcG9zOmludCAtPiBpbnRcblxuICB2YWwgc2V0MTYgOiB0IC0+IHBvczppbnQgLT4gaW50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBieXRlc1xuXG4gICgqIE9DYW1sIHN0cmluZ3MgYWx3YXlzIHdhc3RlIHR3byBieXRlcyBhdCB0aGUgZW5kLCBzbyB3ZSB0YWtlIGEgcG93ZXIgb2YgdHdvIG1pbnVzIHR3b1xuICAgICB0byBiZSBzdXJlIHdlIGRvbid0IHdhc3RlIHNwYWNlLiAqKVxuICBsZXQgbGVuZ3RoID0gNjJcbiAgbGV0IGFsbG9jICgpID0gQnl0ZXMuY3JlYXRlIGxlbmd0aFxuXG4gIGV4dGVybmFsIGdldDE2IDogYnl0ZXMgLT4gcG9zOmludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2XCJcbiAgZXh0ZXJuYWwgc2V0MTYgOiBieXRlcyAtPiBwb3M6aW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5cbiAgKCogSWYgd2Ugd2FudCB0byBtYWtlIGEgW1Bvc2l0aW9ucy50XSBzZXJpYWxpemFibGU6XG5cbiAgICAge1tcbiAgICAgICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIjs7XG5cbiAgICAgICBsZXQgZ2V0MTYgPVxuICAgICAgICAgaWYgQ2FtbC5TeXMuYXJjaF9iaWdfZW5kaWFuIHRoZW5cbiAgICAgICAgICAgZnVuIGJ1ZiB+cG9zIC0+IGdldDE2IGJ1ZiB+cG9zIHw+IGJzd2FwMTZcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZ2V0MTZcblxuICAgICAgIGxldCBzZXQxNiA9XG4gICAgICAgICBpZiBDYW1sLlN5cy5hcmNoX2JpZ19lbmRpYW4gdGhlblxuICAgICAgICAgICBmdW4gYnVmIH5wb3MgeCAtPiBzZXQxNiBidWYgfnBvcyAoYnN3YXAxNiB4KVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBzZXQxNlxuICAgICBdfVxuXG4gICopXG5lbmRcblxudHlwZSB0XyA9XG4gIHsgY2h1bmtzIDogQ2h1bmsudCBsaXN0XG4gIDsgKCogW251bV9ieXRlcyAqIDggKyBleHRyYV9iaXRzXSBpcyB0aGUgbnVtYmVyIG9mIGJpdHMgc3RvcmVkIGluIFtjaHVua3NdLlxuICAgICAgIFRoZSBsYXN0IFtleHRyYV9iaXRzXSBiaXRzIHdpbGwgYmUgc3RvcmVkIGFzIHRoZSAqbGVhc3QqIHNpZ25pZmljYW50IGJpdHNcbiAgICAgICBvZiB0aGUgYXBwcm9wcmlhdGUgcGFpciBvZiBieXRlcyBvZiB0aGUgbGFzdCBjaHVuay4gKilcbiAgICBudW1fYnl0ZXMgOiBpbnRcbiAgOyBleHRyYV9iaXRzIDogaW50XG4gIDsgaW5pdGlhbF9wb3MgOiBwb3NcbiAgfVxuXG50eXBlIHQgPSB0XyBMYXp5LnRcblxubGV0IG1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMgKGxhenkgdCkgPVxuICBsZXQgbnVtX2ZpZWxkcyA9IDQgaW5cbiAgbGV0IGhlYWRlcl93b3JkcyA9IDEgaW5cbiAgbGV0IHdvcmRfYnl0ZXMgPVxuICAgIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICAgIHwgMzIgLT4gNFxuICAgIHwgNjQgLT4gOFxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgbGV0IGNodW5rX3dvcmRzID1cbiAgICBsZXQgZGl2X2NlaWwgYSBiID0gKGEgKyBiIC0gMSkgLyBiIGluXG4gICAgbGV0IG4gPVxuICAgICAgZGl2X2NlaWxcbiAgICAgICAgKENodW5rLmxlbmd0aFxuICAgICAgICAgKyAxICgqIE5VTCB0ZXJtaW5hdGluZyBieXRlcyAqKVxuICAgICAgICAgKyAxICgqIG51bWJlciBvZiB3YXN0ZWQgYnl0ZXMgdG8gZmlsbCBhIHdvcmQgKikpXG4gICAgICAgIHdvcmRfYnl0ZXNcbiAgICBpblxuICAgIG4gKyBoZWFkZXJfd29yZHNcbiAgaW5cbiAgbGV0IHBvc19maWVsZHMgPSAzIGluXG4gIGxldCBwb3Nfd29yZHMgPSBoZWFkZXJfd29yZHMgKyBwb3NfZmllbGRzIGluXG4gIGxldCBsaXN0X2NvbnNfd29yZHMgPSBoZWFkZXJfd29yZHMgKyAyIGluXG4gIChoZWFkZXJfd29yZHNcbiAgICsgbnVtX2ZpZWxkc1xuICAgKyBwb3Nfd29yZHNcbiAgICsgKExpc3QubGVuZ3RoIHQuY2h1bmtzICogKGNodW5rX3dvcmRzICsgbGlzdF9jb25zX3dvcmRzKSkpXG4gICogd29yZF9ieXRlc1xuOztcblxubW9kdWxlIEJ1aWxkZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY2h1bmsgOiBDaHVuay50XG4gICAgOyBtdXRhYmxlIGNodW5rX3BvcyA6IGludFxuICAgIDsgbXV0YWJsZSBmaWxsZWRfY2h1bmtzIDogQ2h1bmsudCBsaXN0ICgqIEZpbGxlZCBjaHVua3MgaW4gcmV2ZXJzZSBvcmRlciAqKVxuICAgIDsgbXV0YWJsZSBvZmZzZXQgOiBpbnRcbiAgICAoKiBPZmZzZXQgb2YgdGhlIGxhc3Qgc2F2ZWQgcG9zaXRpb24gb3IgbmV3bGluZSBwbHVzXG4gICAgICAgb25lLCBvciBbaW5pdGlhbF9wb3NdICopXG4gICAgOyBtdXRhYmxlIGludF9idWYgOiBpbnRcbiAgICAoKiB0aGUgW251bV9iaXRzXSBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIFtpbnRfYnVmXVxuICAgICAgIGFyZSB0aGUgYml0cyBub3QgeWV0IHB1c2hlZCB0byBbY2h1bmtdLiAqKVxuICAgIDsgbXV0YWJsZSBudW1fYml0cyA6IGludCAoKiBudW1iZXIgb2YgYml0cyBzdG9yZWQgaW4gW2ludF9idWZdICopXG4gICAgOyBtdXRhYmxlIGluaXRpYWxfcG9zIDogcG9zXG4gICAgfVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgYXNzZXJ0ICh0LmNodW5rX3BvcyA+PSAwICYmIHQuY2h1bmtfcG9zIDw9IENodW5rLmxlbmd0aCk7XG4gICAgYXNzZXJ0ICh0Lm9mZnNldCA+PSB0LmluaXRpYWxfcG9zLm9mZnNldCk7XG4gICAgYXNzZXJ0ICh0Lm51bV9iaXRzIDw9IDE1KVxuICA7O1xuXG4gIGxldCBjaGVja19pbnZhcmlhbnQgPSBmYWxzZVxuICBsZXQgaW52YXJpYW50IHQgPSBpZiBjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdFxuXG4gIGxldCBjcmVhdGUgPyhpbml0aWFsX3BvcyA9IGJlZ2lubmluZ19vZl9maWxlKSAoKSA9XG4gICAgeyBjaHVuayA9IENodW5rLmFsbG9jICgpXG4gICAgOyBjaHVua19wb3MgPSAwXG4gICAgOyBmaWxsZWRfY2h1bmtzID0gW11cbiAgICA7IG9mZnNldCA9IGluaXRpYWxfcG9zLm9mZnNldFxuICAgIDsgaW50X2J1ZiA9IDBcbiAgICA7IG51bV9iaXRzID0gMFxuICAgIDsgaW5pdGlhbF9wb3NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0IHQgKHBvcyA6IHBvcykgPVxuICAgICgqIFdlIG5lZWQgYSBuZXcgY2h1bmsgYXMgW2NvbnRlbnRzXSBrZWVwcyB0aGUgY3VycmVudCBjaHVuayBpbiB0aGUgY2xvc3VyZSBvZiB0aGVcbiAgICAgICBsYXp5IHZhbHVlLiAqKVxuICAgIHQuY2h1bmsgPC0gQ2h1bmsuYWxsb2MgKCk7XG4gICAgdC5jaHVua19wb3MgPC0gMDtcbiAgICB0LmZpbGxlZF9jaHVua3MgPC0gW107XG4gICAgdC5vZmZzZXQgPC0gcG9zLm9mZnNldDtcbiAgICB0LmludF9idWYgPC0gMDtcbiAgICB0Lm51bV9iaXRzIDwtIDA7XG4gICAgdC5pbml0aWFsX3BvcyA8LSBwb3NcbiAgOztcblxuICBsZXRbQGlubGluZSBuZXZlcl0gYWxsb2NfbmV3X2NodW5rIHQgPVxuICAgIHQuZmlsbGVkX2NodW5rcyA8LSB0LmNodW5rIDo6IHQuZmlsbGVkX2NodW5rcztcbiAgICB0LmNodW5rIDwtIENodW5rLmFsbG9jICgpO1xuICAgIHQuY2h1bmtfcG9zIDwtIDBcbiAgOztcblxuICBsZXQgYWRkX3VpbnQxNiB0IG4gPVxuICAgIGlmIHQuY2h1bmtfcG9zID0gQ2h1bmsubGVuZ3RoIHRoZW4gYWxsb2NfbmV3X2NodW5rIHQ7XG4gICAgQ2h1bmsuc2V0MTYgdC5jaHVuayB+cG9zOnQuY2h1bmtfcG9zIG5cbiAgOztcblxuICBsZXQgYWRkX2JpdHMgdCBuIH5udW1fYml0cyA9XG4gICAgbGV0IGludF9idWYgPSAodC5pbnRfYnVmIGxzbCBudW1fYml0cykgbG9yIG4gaW5cbiAgICBsZXQgbnVtX2JpdHMgPSB0Lm51bV9iaXRzICsgbnVtX2JpdHMgaW5cbiAgICB0LmludF9idWYgPC0gaW50X2J1ZjtcbiAgICBpZiBudW1fYml0cyA8IDE2XG4gICAgdGhlbiB0Lm51bV9iaXRzIDwtIG51bV9iaXRzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbnVtX2JpdHMgPSBudW1fYml0cyAtIDE2IGluXG4gICAgICB0Lm51bV9iaXRzIDwtIG51bV9iaXRzO1xuICAgICAgYWRkX3VpbnQxNiB0IChpbnRfYnVmIGxzciBudW1fYml0cyk7XG4gICAgICB0LmNodW5rX3BvcyA8LSB0LmNodW5rX3BvcyArIDJcbiAgICAgICgqIG5vIG5lZWQgdG8gY2xlYXIgdGhlIGJpdHMgb2YgaW50X2J1ZiB3ZSBqdXN0IHdyb3RlLCBhcyBmdXJ0aGVyIHNldDE2IHdpbGwgaWdub3JlXG4gICAgICAgICB0aGVzZSBleHRyYSBiaXRzLiAqKSlcbiAgOztcblxuICBsZXQgY29udGVudHMgdCA9XG4gICAgKCogRmx1c2ggdGhlIGN1cnJlbnQgW3QuaW50X2J1Zl0gKilcbiAgICBhZGRfdWludDE2IHQgdC5pbnRfYnVmO1xuICAgIGxldCByZXZfY2h1bmtzID0gdC5jaHVuayA6OiB0LmZpbGxlZF9jaHVua3MgaW5cbiAgICBsZXQgY2h1bmtfcG9zID0gdC5jaHVua19wb3MgaW5cbiAgICBsZXQgZXh0cmFfYml0cyA9IHQubnVtX2JpdHMgaW5cbiAgICBsZXQgaW5pdGlhbF9wb3MgPSB0LmluaXRpYWxfcG9zIGluXG4gICAgbGF6eVxuICAgICAgeyBjaHVua3MgPSBMaXN0LnJldiByZXZfY2h1bmtzXG4gICAgICA7IG51bV9ieXRlcyA9ICgoTGlzdC5sZW5ndGggcmV2X2NodW5rcyAtIDEpICogQ2h1bmsubGVuZ3RoKSArIGNodW5rX3Bvc1xuICAgICAgOyBleHRyYV9iaXRzXG4gICAgICA7IGluaXRpYWxfcG9zXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGxvbmdfc2hpZnQgdCBuID1cbiAgICBsZXQgbiA9IHJlZiAobiAtIDUpIGluXG4gICAgd2hpbGUgIW4gPiAwIGRvXG4gICAgICBhZGRfYml0cyB0ICgwYjExMDBfMDAwMCBsb3IgKCFuIGxhbmQgMGIwMDAxXzExMTEpKSB+bnVtX2JpdHM6ODtcbiAgICAgIG4gOj0gIW4gbHNyIDVcbiAgICBkb25lXG4gIDs7XG5cbiAgKCogcHJlY29uZGl0aW9uOiBuID49IDUgKilcbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIGFkZF9nZW5fc2xvdyB0IG4gfmluc3RyIH5pbnN0cl9iaXRzID1cbiAgICBsb25nX3NoaWZ0IHQgbjtcbiAgICBhZGRfYml0cyB0IGluc3RyIH5udW1fYml0czppbnN0cl9iaXRzXG4gIDs7XG5cbiAgbGV0IHNoaWZ0NCA9IDBiMTBfMTBfMTBfMTBcblxuICBsZXRbQGlubGluZSBhbHdheXNdIGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0ciB+aW5zdHJfYml0cyA9XG4gICAgaW52YXJpYW50IHQ7XG4gICAgbGV0IG4gPSBvZmZzZXQgLSB0Lm9mZnNldCBpblxuICAgIHQub2Zmc2V0IDwtIG9mZnNldCArIDE7XG4gICAgbWF0Y2ggbiB3aXRoXG4gICAgfCAwIHwgMSB8IDIgfCAzIHwgNCAtPlxuICAgICAgbGV0IG51bV9iaXRzID0gKG4gbHNsIDEpICsgaW5zdHJfYml0cyBpblxuICAgICAgYWRkX2JpdHMgdCAoKHNoaWZ0NCBsc2wgaW5zdHJfYml0cykgbG9yIGluc3RyIGxhbmQgKCgxIGxzbCBudW1fYml0cykgLSAxKSkgfm51bV9iaXRzXG4gICAgfCA1XG4gICAgfCA2XG4gICAgfCA3XG4gICAgfCA4XG4gICAgfCA5XG4gICAgfCAxMFxuICAgIHwgMTFcbiAgICB8IDEyXG4gICAgfCAxM1xuICAgIHwgMTRcbiAgICB8IDE1XG4gICAgfCAxNlxuICAgIHwgMTdcbiAgICB8IDE4XG4gICAgfCAxOVxuICAgIHwgMjBcbiAgICB8IDIxXG4gICAgfCAyMlxuICAgIHwgMjNcbiAgICB8IDI0XG4gICAgfCAyNVxuICAgIHwgMjZcbiAgICB8IDI3XG4gICAgfCAyOFxuICAgIHwgMjlcbiAgICB8IDMwXG4gICAgfCAzMVxuICAgIHwgMzJcbiAgICB8IDMzXG4gICAgfCAzNFxuICAgIHwgMzVcbiAgICB8IDM2IC0+XG4gICAgICBhZGRfYml0c1xuICAgICAgICB0XG4gICAgICAgICgoKDBiMTEwMF8wMDAwIGxvciAobiAtIDUpKSBsc2wgaW5zdHJfYml0cykgbG9yIGluc3RyKVxuICAgICAgICB+bnVtX2JpdHM6KDggKyBpbnN0cl9iaXRzKVxuICAgIHwgXyAtPlxuICAgICAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuUG9zaXRpb25zLmFkZF9nZW5cIjtcbiAgICAgIGFkZF9nZW5fc2xvdyB0IG4gfmluc3RyIH5pbnN0cl9iaXRzXG4gIDs7XG5cbiAgbGV0IGFkZCB0IH5vZmZzZXQgPSBhZGRfZ2VuIHQgfm9mZnNldCB+aW5zdHI6MGIwIH5pbnN0cl9iaXRzOjFcbiAgbGV0IGFkZF90d2ljZSB0IH5vZmZzZXQgPSBhZGRfZ2VuIHQgfm9mZnNldCB+aW5zdHI6MGIxMTExIH5pbnN0cl9iaXRzOjRcbiAgbGV0IGFkZF9uZXdsaW5lIHQgfm9mZnNldCA9IGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0cjowYjExMTAgfmluc3RyX2JpdHM6NFxuZW5kXG5cbnR5cGUgcG9zaXRpb25zID0gdFxuXG5tb2R1bGUgSXRlcmF0b3IgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6IHBvc2l0aW9ucyAtPiB0XG5cbiAgZXhjZXB0aW9uIE5vX21vcmVcblxuICAoKiBbYWR2YW5jZSB0IH5za2lwXSBpZ25vcmVzIFtza2lwXSBzYXZlZCBwb3NpdGlvbnMgYW5kIHJldHVybnMgdGhlIG5leHQgc2F2ZWQgcG9zaXRpb24uXG4gICAgIFJhaXNlcyBbTm9fbW9yZV0gd2hlbiByZWFjaGluZyB0aGUgZW5kIG9mIHRoZSBwb3NpdGlvbiBzZXQuICopXG4gIHZhbCBhZHZhbmNlX2V4biA6IHQgLT4gc2tpcDppbnQgLT4gcG9zXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY2h1bmsgOiBDaHVuay50XG4gICAgOyBtdXRhYmxlIGNodW5rcyA6IENodW5rLnQgbGlzdFxuICAgIDsgKCogW251bV9ieXRlcyAqIDggKyBleHRyYV9iaXRzXSBpcyB0aGUgbnVtYmVyIG9mIGJpdHMgYXZhaWxhYmxlIGZyb20gW2luc3RyX3Bvc10gaW5cbiAgICAgICAgIFtjaHVuayA6OiBjaHVua3NdLiAqKVxuICAgICAgbXV0YWJsZSBudW1fYnl0ZXMgOiBpbnRcbiAgICA7IGV4dHJhX2JpdHMgOiBpbnRcbiAgICA7IG11dGFibGUgaW5zdHJfcG9zIDogaW50ICgqIHBvc2l0aW9uIGluIFtjaHVua10gKilcbiAgICA7IG11dGFibGUgb2Zmc2V0IDogaW50XG4gICAgOyBtdXRhYmxlIGxpbmUgOiBpbnRcbiAgICA7IG11dGFibGUgYm9sIDogaW50XG4gICAgOyBtdXRhYmxlIGludF9idWYgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX2JpdHMgOiBpbnQgKCogTnVtYmVyIG9mIGJpdHMgbm90IHlldCBjb25zdW1lZCBpbiBbaW50X2J1Zl0gKilcbiAgICA7IG11dGFibGUgcGVuZGluZyA6IHBvcyBvcHRpb25cbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSAoKGxhenkgcCkgOiBwb3NpdGlvbnMpID1cbiAgICBtYXRjaCBwLmNodW5rcyB3aXRoXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IGNodW5rIDo6IGNodW5rcyAtPlxuICAgICAgeyBjaHVua1xuICAgICAgOyBjaHVua3NcbiAgICAgIDsgbnVtX2J5dGVzID0gcC5udW1fYnl0ZXNcbiAgICAgIDsgZXh0cmFfYml0cyA9IHAuZXh0cmFfYml0c1xuICAgICAgOyBpbnN0cl9wb3MgPSAwXG4gICAgICA7IG9mZnNldCA9IHAuaW5pdGlhbF9wb3Mub2Zmc2V0XG4gICAgICA7IGxpbmUgPSBwLmluaXRpYWxfcG9zLmxpbmVcbiAgICAgIDsgYm9sID0gcC5pbml0aWFsX3Bvcy5vZmZzZXQgLSBwLmluaXRpYWxfcG9zLmNvbFxuICAgICAgOyBpbnRfYnVmID0gMFxuICAgICAgOyBudW1fYml0cyA9IDBcbiAgICAgIDsgcGVuZGluZyA9IE5vbmVcbiAgICAgIH1cbiAgOztcblxuICBleGNlcHRpb24gTm9fbW9yZVxuXG4gIGxldCBub19tb3JlICgpID0gcmFpc2Vfbm90cmFjZSBOb19tb3JlXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIGZldGNoX2NodW5rIHQgPVxuICAgIG1hdGNoIHQuY2h1bmtzIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgY2h1bmsgOjogY2h1bmtzIC0+XG4gICAgICB0Lmluc3RyX3BvcyA8LSAwO1xuICAgICAgdC5udW1fYnl0ZXMgPC0gdC5udW1fYnl0ZXMgLSBDaHVuay5sZW5ndGg7XG4gICAgICB0LmNodW5rIDwtIGNodW5rO1xuICAgICAgdC5jaHVua3MgPC0gY2h1bmtzXG4gIDs7XG5cbiAgbGV0IGZldGNoIHQgPVxuICAgIGlmIHQuaW5zdHJfcG9zID4gdC5udW1fYnl0ZXMgdGhlbiBub19tb3JlICgpO1xuICAgIGlmIHQuaW5zdHJfcG9zID0gQ2h1bmsubGVuZ3RoIHRoZW4gZmV0Y2hfY2h1bmsgdDtcbiAgICBsZXQgdiA9IENodW5rLmdldDE2IHQuY2h1bmsgfnBvczp0Lmluc3RyX3BvcyBpblxuICAgIGxldCBhZGRlZF9iaXRzID0gaWYgdC5pbnN0cl9wb3MgPSB0Lm51bV9ieXRlcyB0aGVuIHQuZXh0cmFfYml0cyBlbHNlIDE2IGluXG4gICAgdC5pbnRfYnVmIDwtICh0LmludF9idWYgbHNsIGFkZGVkX2JpdHMpIGxvciAodiBsYW5kICgoMSBsc2wgYWRkZWRfYml0cykgLSAxKSk7XG4gICAgdC5udW1fYml0cyA8LSB0Lm51bV9iaXRzICsgYWRkZWRfYml0cztcbiAgICB0Lmluc3RyX3BvcyA8LSB0Lmluc3RyX3BvcyArIDJcbiAgOztcblxuICBsZXQgbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzID1cbiAgICBpZiB0Lm51bV9iaXRzIDwgbnVtX2JpdHNcbiAgICB0aGVuIChcbiAgICAgIGZldGNoIHQ7XG4gICAgICBpZiB0Lm51bV9iaXRzIDwgbnVtX2JpdHMgdGhlbiBub19tb3JlICgpKTtcbiAgICBsZXQgbiA9ICh0LmludF9idWYgbHNyICh0Lm51bV9iaXRzIC0gbnVtX2JpdHMpKSBsYW5kICgoMSBsc2wgbnVtX2JpdHMpIC0gMSkgaW5cbiAgICB0Lm51bV9iaXRzIDwtIHQubnVtX2JpdHMgLSBudW1fYml0cztcbiAgICBuXG4gIDs7XG5cbiAgKCogW29mZnNldF9zaGlmdF0gYW5kIFtvZmZzZXRfc2hpZnRfbnVtX2JpdHNdIGVuY29kZSB0aGUgb2Zmc2V0IG51bWJlclxuICAgICBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZWx5IHByZWNlZGluZyBbMTEwXSBpbnN0cnVjdGlvbnMuICopXG4gIGxldCByZWMgYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQgfm9mZnNldF9zaGlmdF9udW1fYml0cyA9XG4gICAgbWF0Y2ggbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjEgd2l0aFxuICAgIHwgMCAtPlxuICAgICAgKCogYml0IHNlcSAwIC0+IG5ldyBpdGVtICopXG4gICAgICBsZXQgb2Zmc2V0ID0gdC5vZmZzZXQgKyBvZmZzZXRfc2hpZnQgaW5cbiAgICAgIHQub2Zmc2V0IDwtIG9mZnNldCArIDE7XG4gICAgICBpZiBza2lwID0gMFxuICAgICAgdGhlbiB7IGxpbmUgPSB0LmxpbmU7IGNvbCA9IG9mZnNldCAtIHQuYm9sOyBvZmZzZXQgfVxuICAgICAgZWxzZSBhZHZhbmNlIHQgfnNraXA6KHNraXAgLSAxKSB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgfCBfIC0+XG4gICAgICAobWF0Y2ggbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjEgd2l0aFxuICAgICAgIHwgMCAtPlxuICAgICAgICAgKCogYml0IHNlcSAxMCAtPiBzaGlmdCAqKVxuICAgICAgICAgdC5vZmZzZXQgPC0gdC5vZmZzZXQgKyBvZmZzZXRfc2hpZnQgKyAxO1xuICAgICAgICAgYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICAgICB8IF8gLT5cbiAgICAgICAgIChtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAoKiBiaXQgc2VxIDExMCAtPiBsb25nIHNoaWZ0ICopXG4gICAgICAgICAgICBsZXQgbiA9IG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czo1IGluXG4gICAgICAgICAgICBsZXQgb2Zmc2V0X3NoaWZ0ID0gaWYgb2Zmc2V0X3NoaWZ0X251bV9iaXRzID0gMCB0aGVuIDUgZWxzZSBvZmZzZXRfc2hpZnQgaW5cbiAgICAgICAgICAgIGFkdmFuY2VcbiAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICB+c2tpcFxuICAgICAgICAgICAgICB+b2Zmc2V0X3NoaWZ0OihvZmZzZXRfc2hpZnQgKyAobiBsc2wgb2Zmc2V0X3NoaWZ0X251bV9iaXRzKSlcbiAgICAgICAgICAgICAgfm9mZnNldF9zaGlmdF9udW1fYml0czoob2Zmc2V0X3NoaWZ0X251bV9iaXRzICsgNSlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIChtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgICAoKiBiaXQgc2VxIDExMTAgLT4gbmV3bGluZSAqKVxuICAgICAgICAgICAgICAgdC5vZmZzZXQgPC0gdC5vZmZzZXQgKyBvZmZzZXRfc2hpZnQgKyAxO1xuICAgICAgICAgICAgICAgdC5ib2wgPC0gdC5vZmZzZXQ7XG4gICAgICAgICAgICAgICB0LmxpbmUgPC0gdC5saW5lICsgMTtcbiAgICAgICAgICAgICAgIGFkdmFuY2UgdCB+c2tpcCB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAoKiBiaXQgc2VxIDExMTEgLT4gMiBuZXcgaXRlbXMgKilcbiAgICAgICAgICAgICAgIGxldCBvZmZzZXQgPSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCBpblxuICAgICAgICAgICAgICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICAgICAgICAgICAgIGlmIHNraXAgPD0gMVxuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgIGxldCBwb3MgPSB7IGxpbmUgPSB0LmxpbmU7IGNvbCA9IG9mZnNldCAtIHQuYm9sOyBvZmZzZXQgfSBpblxuICAgICAgICAgICAgICAgICBpZiBza2lwID0gMCB0aGVuIHQucGVuZGluZyA8LSBTb21lIHBvcztcbiAgICAgICAgICAgICAgICAgcG9zKVxuICAgICAgICAgICAgICAgZWxzZSBhZHZhbmNlIHQgfnNraXA6KHNraXAgLSAyKSB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowKSkpXG4gIDs7XG5cbiAgbGV0IGFkdmFuY2VfZXhuIHQgfnNraXAgPVxuICAgIG1hdGNoIHQucGVuZGluZyB3aXRoXG4gICAgfCBTb21lIHBvcyAtPlxuICAgICAgdC5wZW5kaW5nIDwtIE5vbmU7XG4gICAgICBpZiBza2lwID0gMFxuICAgICAgdGhlbiBwb3NcbiAgICAgIGVsc2UgYWR2YW5jZSB0IH5za2lwOihza2lwIC0gMSkgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICAgIHwgTm9uZSAtPiBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICA7O1xuZW5kXG5cbmxldCBmaW5kIHQgYSBiID1cbiAgaWYgYSA8IDAgfHwgYiA8PSBhIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLlBvc2l0aW9ucy5maW5kXCI7XG4gIGxldCBpdGVyID0gSXRlcmF0b3IuY3JlYXRlIHQgaW5cbiAgdHJ5XG4gICAgbGV0IHN0YXJ0X3BvcyA9IEl0ZXJhdG9yLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6YSBpblxuICAgIGxldCBsYXN0X3BvcyA9IEl0ZXJhdG9yLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6KGIgLSBhIC0gMSkgaW5cbiAgICBtYWtlX3JhbmdlX2luY2wgfnN0YXJ0X3BvcyB+bGFzdF9wb3NcbiAgd2l0aFxuICB8IEl0ZXJhdG9yLk5vX21vcmUgLT4gZmFpbHdpdGggXCJQYXJzZXhwLlBvc2l0aW9uLmZpbmRcIlxuOztcblxubGV0IHJlYyBzdWJfc2V4cF9jb3VudCAoc2V4cCA6IFNleHAudCkgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIF8gLT4gMVxuICB8IExpc3QgbCAtPiBMaXN0LmZvbGRfbGVmdCBsIH5pbml0OjEgfmY6KGZ1biBhY2MgeCAtPiBhY2MgKyBzdWJfc2V4cF9jb3VudCB4KVxuOztcblxubW9kdWxlIFNleHBfc2VhcmNoID0gc3RydWN0XG4gIGV4Y2VwdGlvbiBGb3VuZCBvZiBpbnRcblxuICBsZXQgcmVjIGxvb3AgfnN1YiBpbmRleCAoc2V4cCA6IFNleHAudCkgPVxuICAgIGlmIHNleHAgPT0gc3ViXG4gICAgdGhlbiByYWlzZV9ub3RyYWNlIChGb3VuZCBpbmRleClcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBBdG9tIF8gLT4gaW5kZXggKyAyXG4gICAgICB8IExpc3QgbCAtPlxuICAgICAgICBsZXQgaW5kZXggPSBsb29wX2xpc3QgfnN1YiAoaW5kZXggKyAxKSBsIGluXG4gICAgICAgIGluZGV4ICsgMSlcblxuICBhbmQgbG9vcF9saXN0IH5zdWIgaW5kZXggKHNleHBzIDogU2V4cC50IGxpc3QpID1cbiAgICBMaXN0LmZvbGRfbGVmdCBzZXhwcyB+aW5pdDppbmRleCB+ZjoobG9vcCB+c3ViKVxuICA7O1xuXG4gIGxldCBmaW5hbGl6ZSB0IH5zdWIgYSA9XG4gICAgbGV0IGIgPSBhICsgKHN1Yl9zZXhwX2NvdW50IHN1YiAqIDIpIC0gMSBpblxuICAgIFNvbWUgKGZpbmQgdCBhIGIpXG4gIDs7XG5cbiAgbGV0IGZpbmRfc3ViX3NleHBfcGh5cyB0IHNleHAgfnN1YiA9XG4gICAgbWF0Y2ggbG9vcCB+c3ViIDAgc2V4cCB3aXRoXG4gICAgfCAoXyA6IGludCkgLT4gTm9uZVxuICAgIHwgZXhjZXB0aW9uIEZvdW5kIG4gLT4gZmluYWxpemUgdCB+c3ViIG5cbiAgOztcblxuICBsZXQgZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXMgdCBzZXhwcyB+c3ViID1cbiAgICBtYXRjaCBsb29wX2xpc3QgfnN1YiAwIHNleHBzIHdpdGhcbiAgICB8IChfIDogaW50KSAtPiBOb25lXG4gICAgfCBleGNlcHRpb24gRm91bmQgbiAtPiBmaW5hbGl6ZSB0IH5zdWIgblxuICA7O1xuZW5kXG5cbmxldCBmaW5kX3N1Yl9zZXhwX3BoeXMgPSBTZXhwX3NlYXJjaC5maW5kX3N1Yl9zZXhwX3BoeXNcbmxldCBmaW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5cyA9IFNleHBfc2VhcmNoLmZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzXG5cbmxldCB0b19saXN0IHQgPVxuICBsZXQgaXRlciA9IEl0ZXJhdG9yLmNyZWF0ZSB0IGluXG4gIGxldCByZWMgbG9vcCBhY2MgPVxuICAgIG1hdGNoIEl0ZXJhdG9yLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCB3aXRoXG4gICAgfCBleGNlcHRpb24gSXRlcmF0b3IuTm9fbW9yZSAtPiBMaXN0LnJldiBhY2NcbiAgICB8IHBvcyAtPiBsb29wIChwb3MgOjogYWNjKVxuICBpblxuICBsb29wIFtdXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IHRvX2xpc3QgdCB8PiBBcnJheS5vZl9saXN0XG5sZXQgY29tcGFyZSB0MSB0MiA9IFN0ZGxpYi5jb21wYXJlICh0b19hcnJheSB0MSkgKHRvX2FycmF5IHQyKVxubGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl9hcnJheSBzZXhwX29mX3BvcyAodG9fYXJyYXkgdClcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IEF0b20gb2ZcbiAgICAgIHsgbG9jIDogUG9zaXRpb25zLnJhbmdlXG4gICAgICA7IGF0b20gOiBzdHJpbmdcbiAgICAgIDsgdW5lc2NhcGVkIDogc3RyaW5nIG9wdGlvblxuICAgICAgfVxuICB8IExpc3Qgb2ZcbiAgICAgIHsgbG9jIDogUG9zaXRpb25zLnJhbmdlXG4gICAgICA7IGVsZW1lbnRzIDogdF9vcl9jb21tZW50IGxpc3RcbiAgICAgIH1cblxuYW5kIHRfb3JfY29tbWVudCA9XG4gIHwgU2V4cCBvZiB0XG4gIHwgQ29tbWVudCBvZiBjb21tZW50XG5cbmFuZCBjb21tZW50ID1cbiAgfCBQbGFpbl9jb21tZW50IG9mXG4gICAgICB7IGxvYyA6IFBvc2l0aW9ucy5yYW5nZVxuICAgICAgOyBjb21tZW50IDogc3RyaW5nXG4gICAgICB9XG4gIHwgU2V4cF9jb21tZW50IG9mXG4gICAgICB7IGhhc2hfc2VtaV9wb3MgOiBQb3NpdGlvbnMucG9zXG4gICAgICA7IGNvbW1lbnRzIDogY29tbWVudCBsaXN0XG4gICAgICA7IHNleHAgOiB0XG4gICAgICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHJlYyBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IEF0b20geyBsb2MgPSBsb2NfXzAwMl87IGF0b20gPSBhdG9tX18wMDRfOyB1bmVzY2FwZWQgPSB1bmVzY2FwZWRfXzAwNl8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwMV8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX29wdGlvbiBzZXhwX29mX3N0cmluZyB1bmVzY2FwZWRfXzAwNl8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInVuZXNjYXBlZFwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDFfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgIGxldCBhcmdfXzAwNV8gPSBzZXhwX29mX3N0cmluZyBhdG9tX18wMDRfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJhdG9tXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICAgbGV0IGFyZ19fMDAzXyA9IFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY19fMDAyXyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDAzXyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiQXRvbVwiIDo6IGJuZHNfXzAwMV8pXG4gICAgfCBMaXN0IHsgbG9jID0gbG9jX18wMDlfOyBlbGVtZW50cyA9IGVsZW1lbnRzX18wMTFfIH0gLT5cbiAgICAgIGxldCBibmRzX18wMDhfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgICBsZXQgYXJnX18wMTJfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfdF9vcl9jb21tZW50IGVsZW1lbnRzX18wMTFfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbGVtZW50c1wiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDhfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDA4XyA9XG4gICAgICAgIGxldCBhcmdfXzAxMF8gPSBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NfXzAwOV8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY1wiOyBhcmdfXzAxMF8gXSA6OiBibmRzX18wMDhfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIkxpc3RcIiA6OiBibmRzX18wMDhfKVxuICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuYW5kIHNleHBfb2ZfdF9vcl9jb21tZW50ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBTZXhwIGFyZzBfXzAxM18gLT5cbiAgICAgIGxldCByZXMwX18wMTRfID0gc2V4cF9vZl90IGFyZzBfXzAxM18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlNleHBcIjsgcmVzMF9fMDE0XyBdXG4gICAgfCBDb21tZW50IGFyZzBfXzAxNV8gLT5cbiAgICAgIGxldCByZXMwX18wMTZfID0gc2V4cF9vZl9jb21tZW50IGFyZzBfXzAxNV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkNvbW1lbnRcIjsgcmVzMF9fMDE2XyBdXG4gICAgICA6IHRfb3JfY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbmFuZCBzZXhwX29mX2NvbW1lbnQgPVxuICAoZnVuY3Rpb25cbiAgICB8IFBsYWluX2NvbW1lbnQgeyBsb2MgPSBsb2NfXzAxOF87IGNvbW1lbnQgPSBjb21tZW50X18wMjBfIH0gLT5cbiAgICAgIGxldCBibmRzX18wMTdfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgbGV0IGJuZHNfXzAxN18gPVxuICAgICAgICBsZXQgYXJnX18wMjFfID0gc2V4cF9vZl9zdHJpbmcgY29tbWVudF9fMDIwXyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY29tbWVudFwiOyBhcmdfXzAyMV8gXSA6OiBibmRzX18wMTdfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDE3XyA9XG4gICAgICAgIGxldCBhcmdfXzAxOV8gPSBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NfXzAxOF8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY1wiOyBhcmdfXzAxOV8gXSA6OiBibmRzX18wMTdfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIlBsYWluX2NvbW1lbnRcIiA6OiBibmRzX18wMTdfKVxuICAgIHwgU2V4cF9jb21tZW50XG4gICAgICAgIHsgaGFzaF9zZW1pX3BvcyA9IGhhc2hfc2VtaV9wb3NfXzAyM19cbiAgICAgICAgOyBjb21tZW50cyA9IGNvbW1lbnRzX18wMjVfXG4gICAgICAgIDsgc2V4cCA9IHNleHBfXzAyN19cbiAgICAgICAgfSAtPlxuICAgICAgbGV0IGJuZHNfXzAyMl8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDIyXyA9XG4gICAgICAgIGxldCBhcmdfXzAyOF8gPSBzZXhwX29mX3Qgc2V4cF9fMDI3XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V4cFwiOyBhcmdfXzAyOF8gXSA6OiBibmRzX18wMjJfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDIyXyA9XG4gICAgICAgIGxldCBhcmdfXzAyNl8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9jb21tZW50IGNvbW1lbnRzX18wMjVfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb21tZW50c1wiOyBhcmdfXzAyNl8gXSA6OiBibmRzX18wMjJfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDIyXyA9XG4gICAgICAgIGxldCBhcmdfXzAyNF8gPSBQb3NpdGlvbnMuc2V4cF9vZl9wb3MgaGFzaF9zZW1pX3Bvc19fMDIzXyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiaGFzaF9zZW1pX3Bvc1wiOyBhcmdfXzAyNF8gXSA6OiBibmRzX18wMjJfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIlNleHBfY29tbWVudFwiIDo6IGJuZHNfXzAyMl8pXG4gICAgICA6IGNvbW1lbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IGNvbXBhcmUgPSBTdGRsaWIuY29tcGFyZVxubGV0IGNvbXBhcmVfdF9vcl9jb21tZW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBjb21wYXJlX2NvbW1lbnQgPSBTdGRsaWIuY29tcGFyZVxuXG5tb2R1bGUgRm9yZ2V0ID0gc3RydWN0XG4gICgqIEluIGNwcyB0byBwcmV2ZW50IG5vbi10YWlsIHJlY3Vyc2lvbi5cbiAgICAgVGhlIHBvbHltb3JwaGlzbSBpbiB0aGUgc2lnbmF0dXJlIGVuc3VyZXMgdGhhdCBlYWNoIGZ1bmN0aW9uIHJldHVybnNcbiAgICAgb25seSB0aHJvdWdoIHRoZSBjb250aW51YXRpb24uICopXG4gIG1vZHVsZSBDcHMgOiBzaWdcbiAgICB2YWwgZm9yZ2V0X3QgOiB0IC0+IChTZXhwLnQgLT4gJ3IpIC0+ICdyXG4gICAgdmFsIGZvcmdldF90b2MgOiB0X29yX2NvbW1lbnQgLT4gKFNleHAudCBvcHRpb24gLT4gJ3IpIC0+ICdyXG4gICAgdmFsIGZvcmdldF90b2NzIDogdF9vcl9jb21tZW50IGxpc3QgLT4gKFNleHAudCBsaXN0IC0+ICdyKSAtPiAnclxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgcmVjIGZvcmdldF90IHQgayA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgQXRvbSB7IGF0b207IF8gfSAtPiBrIChTZXhwLkF0b20gYXRvbSlcbiAgICAgIHwgTGlzdCB7IGVsZW1lbnRzOyBfIH0gLT4gZm9yZ2V0X3RvY3MgZWxlbWVudHMgKGZ1biB4cyAtPiBrIChTZXhwLkxpc3QgeHMpKVxuXG4gICAgYW5kIGZvcmdldF90b2NzIHRvY3MgayA9XG4gICAgICBtYXRjaCB0b2NzIHdpdGhcbiAgICAgIHwgW10gLT4gayBbXVxuICAgICAgfCB0b2MgOjogdG9jcyAtPlxuICAgICAgICBmb3JnZXRfdG9jIHRvYyAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gZm9yZ2V0X3RvY3MgdG9jcyBrXG4gICAgICAgICAgfCBTb21lIHggLT4gZm9yZ2V0X3RvY3MgdG9jcyAoZnVuIHhzIC0+IGsgKHggOjogeHMpKSlcblxuICAgIGFuZCBmb3JnZXRfdG9jIHRvYyBrID1cbiAgICAgIG1hdGNoIHRvYyB3aXRoXG4gICAgICB8IENvbW1lbnQgXyAtPiBrIE5vbmVcbiAgICAgIHwgU2V4cCB0IC0+IGZvcmdldF90IHQgKGZ1biB4IC0+IGsgKFNvbWUgeCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHQgeCA9IENwcy5mb3JnZXRfdCB4IChmdW4geSAtPiB5KVxuICBsZXQgdF9vcl9jb21tZW50IHggPSBDcHMuZm9yZ2V0X3RvYyB4IChmdW4geSAtPiB5KVxuICBsZXQgdF9vcl9jb21tZW50cyB4ID0gQ3BzLmZvcmdldF90b2NzIHggKGZ1biB5IC0+IHkpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBdXRvbWF0b25fc3RhY2tfaW50ZlxuXG5tb2R1bGUgRm9yX2NzdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRW1wdHlcbiAgICB8IFRfb3JfY29tbWVudCBvZiBDc3QudF9vcl9jb21tZW50ICogdFxuICAgIHwgT3BlbiBvZiBQb3NpdGlvbnMucG9zICogdFxuICAgIHwgSW5fc2V4cF9jb21tZW50IG9mXG4gICAgICAgIHsgaGFzaF9zZW1pX3BvcyA6IFBvc2l0aW9ucy5wb3NcbiAgICAgICAgOyByZXZfY29tbWVudHMgOiBDc3QuY29tbWVudCBsaXN0XG4gICAgICAgIDsgc3RhY2sgOiB0XG4gICAgICAgIH1cblxuICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gIGxldCBnZXRfbWFueSA9XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY1xuICAgICAgfCBUX29yX2NvbW1lbnQgKHQsIHN0YWNrKSAtPiBsb29wICh0IDo6IGFjYykgc3RhY2tcbiAgICAgIHwgT3BlbiBfIHwgSW5fc2V4cF9jb21tZW50IF8gLT4gZmFpbHdpdGggXCJBdXRvbWF0b25fc3RhY2suRm9yX2NzdC5nZXRfbWFueVwiXG4gICAgaW5cbiAgICBmdW4gc3RhY2sgLT4gbG9vcCBbXSBzdGFja1xuICA7O1xuZW5kXG5cbm1vZHVsZSBKdXN0X3Bvc2l0aW9ucyA9IHN0cnVjdFxuICB0eXBlIHQgPSB1bml0XG5cbiAgbGV0IGVtcHR5ID0gKClcbmVuZFxuXG50eXBlIHQgPVxuICB8IEVtcHR5XG4gIHwgT3BlbiBvZiB0XG4gIHwgU2V4cCBvZiBTZXhwLnQgKiB0XG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBnZXRfc2luZ2xlID0gZnVuY3Rpb25cbiAgfCBTZXhwIChzZXhwLCBFbXB0eSkgLT4gc2V4cFxuICB8IF8gLT4gZmFpbHdpdGggXCJBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZVwiXG47O1xuXG5sZXQgZ2V0X21hbnkgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGFjY1xuICAgIHwgT3BlbiBfIC0+IGZhaWx3aXRoIFwiQXV0b21hdG9uX3N0YWNrLmdldF9tYW55XCJcbiAgICB8IFNleHAgKHNleHAsIHN0YWNrKSAtPiBsb29wIChzZXhwIDo6IGFjYykgc3RhY2tcbiAgaW5cbiAgZnVuIHN0YWNrIC0+IGxvb3AgW10gc3RhY2tcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFNleHBfY29tbWVudFxuICAgIHwgU2V4cFxuZW5kXG5cbm1vZHVsZSBGb3JfY3N0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyB0b2tlbl9idWZmZXIgOiBCdWZmZXIudCAoKiogU3RhcnRpbmcgcG9zaXRpb25zIG9mIHRoZSBjdXJyZW50IHRva2VuICoqKVxuICAgIDsgbXV0YWJsZSB0b2tlbl9zdGFydF9wb3MgOiBQb3NpdGlvbnMucG9zXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSBLaW5kID0gc3RydWN0XG4gIHR5cGUgKCd1LCAncykgdCA9XG4gICAgfCBQb3NpdGlvbnMgOiAoUG9zaXRpb25zLkJ1aWxkZXIudCwgdW5pdCkgdFxuICAgIHwgU2V4cCA6ICh1bml0LCBBdXRvbWF0b25fc3RhY2sudCkgdFxuICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyA6IChQb3NpdGlvbnMuQnVpbGRlci50LCBBdXRvbWF0b25fc3RhY2sudCkgdFxuICAgIHwgQ3N0IDogKEZvcl9jc3QudCwgQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudCkgdFxuZW5kXG5cbm1vZHVsZSByZWMgU3RhdGUgOiBzaWdcbiAgdHlwZSAoJ3UsICdzKSB0ID1cbiAgICB7IG11dGFibGUgYXV0b21hdG9uX3N0YXRlIDogaW50XG4gICAgOyBraW5kIDogKCd1LCAncykgS2luZC50XG4gICAgOyBtdXRhYmxlIGRlcHRoIDogaW50ICgqKiBOdW1iZXIgb2Ygb3BlbmVkICN8IHdoZW4gcGFyc2luZyBhIGJsb2NrIGNvbW1lbnQgKilcbiAgICA7IG11dGFibGUgYmxvY2tfY29tbWVudF9kZXB0aCA6IGludFxuICAgICgqKiBTdGFjayBvZiBpZ25vcmluZyBkZXB0aHM7IHRoZSBjdXJyZW50IGRlcHRoIGlzIHB1c2hlZFxuICAgICAgICBlYWNoIHRpbWUgYSAjOyBjb21tZW50IGlzIGVudGVyZWQuICopXG4gICAgOyBtdXRhYmxlIGlnbm9yaW5nX3N0YWNrIDogaW50IGxpc3RcbiAgICAoKiogV2hlbiBwYXJzaW5nIGFuIGVzY2FwZSBzZXF1ZW5jZSBvZiB0aGUgZm9ybSBcIlxcXFxOTk5cIiBvciBcIlxcXFxYWFwiLCB0aGlzIGFjY3VtdWxhdGVzXG4gICAgICAgIHRoZSBjb21wdXRlZCBudW1iZXIgKilcbiAgICA7IG11dGFibGUgZXNjYXBlZF92YWx1ZSA6IGludCAoKiogQnVmZmVyIGZvciBhY2N1bXVsYXRpbmcgYXRvbXMgKilcbiAgICA7IGF0b21fYnVmZmVyIDogQnVmZmVyLnRcbiAgICA7IHVzZXJfc3RhdGUgOiAndVxuICAgIDsgbW9kZSA6ICgndSwgJ3MpIE1vZGUudFxuICAgIDsgbXV0YWJsZSBmdWxsX3NleHBzIDogaW50XG4gICAgOyBtdXRhYmxlIG9mZnNldCA6IGludCAoKiogZ2xvYmFsIG9mZnNldCAqKilcbiAgICA7IG11dGFibGUgbGluZV9udW1iZXIgOiBpbnRcbiAgICA7IG11dGFibGUgYm9sX29mZnNldCA6IGludCAoKiogb2Zmc2V0IG9mIGJlZ2lubmluZyBvZiBsaW5lICoqKVxuICAgIH1cbmVuZCA9XG4gIFN0YXRlXG5cbmFuZCBNb2RlIDogc2lnXG4gIHR5cGUgKCd1LCAncykgdCA9XG4gICAgfCBTaW5nbGVcbiAgICB8IE1hbnlcbiAgICB8IEVhZ2VyIG9mXG4gICAgICAgIHsgZ290X3NleHAgOiAoJ3UsICdzKSBTdGF0ZS50IC0+ICdzIC0+ICdzXG4gICAgICAgIDsgbXV0YWJsZSBub19zZXhwX2lzX2Vycm9yIDogYm9vbFxuICAgICAgICB9XG5lbmQgPVxuICBNb2RlXG5cbm1vZHVsZSB0eXBlIEF1dG9tYXRvbl9zdGF0ZSA9IHNpZ1xuICBtb2R1bGUgQ29udGV4dCA9IENvbnRleHRcbiAgbW9kdWxlIEZvcl9jc3QgPSBGb3JfY3N0XG4gIG1vZHVsZSBLaW5kID0gS2luZFxuICBtb2R1bGUgTW9kZSA9IE1vZGVcbiAgbW9kdWxlIFN0YXRlID0gU3RhdGVcblxuICB0eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBTdGF0ZS50XG5cbiAgdmFsIGNyZWF0ZVxuICAgIDogID9pbml0aWFsX3BvczpQb3NpdGlvbnMucG9zXG4gICAgLT4gKCd1LCAncykgTW9kZS50XG4gICAgLT4gKCd1LCAncykgS2luZC50XG4gICAgLT4gKCd1LCAncykgdFxuXG4gIHZhbCByZXNldCA6ID9wb3M6UG9zaXRpb25zLnBvcyAtPiBfIHQgLT4gdW5pdFxuICB2YWwgcG9zaXRpb25zIDogKFBvc2l0aW9ucy5CdWlsZGVyLnQsIF8pIHQgLT4gUG9zaXRpb25zLnRcbiAgdmFsIG1vZGUgOiAoJ3UsICdzKSB0IC0+ICgndSwgJ3MpIE1vZGUudFxuXG4gICgqKiBOdW1iZXIgb2YgY2hhcmFjdGVycyBmZWQgdG8gdGhlIHBhcnNlciAqKVxuICB2YWwgb2Zmc2V0IDogXyB0IC0+IGludFxuXG4gICgqKiBQb3NpdGlvbiBpbiB0aGUgdGV4dCAqKVxuICB2YWwgbGluZSA6IF8gdCAtPiBpbnRcblxuICB2YWwgY29sdW1uIDogXyB0IC0+IGludFxuXG4gICgqKiBXaGV0aGVyIHRoZXJlIGFyZSBzb21lIHVuY2xvc2VkIHBhcmVudGhlc2VzICopXG4gIHZhbCBoYXNfdW5jbG9zZWRfcGFyZW4gOiAoJ3UsICdzKSB0IC0+IGJvb2xcblxuICB2YWwgc2V0X2Vycm9yX3N0YXRlIDogXyB0IC0+IHVuaXRcblxuICAoKiovKiopXG5cbiAgKCpfIE9ubHkgZm9yIGNvbnZlcnRpbmcgZXJyb3JzIHRvIHRoZSBvbGQgcGFyc2VyIGVycm9ycyAqKVxuICB2YWwgYXRvbV9idWZmZXIgOiBfIHQgLT4gQnVmZmVyLnRcblxuICAoKl8gRm9yIGNvdmVyYXRlIHRlc3RzICopXG4gIHZhbCBhdXRvbWF0b25fc3RhdGUgOiAoJ3UsICdzKSB0IC0+IGludFxuICB2YWwgY29udGV4dCA6IF8gdCAtPiBDb250ZXh0LnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEF1dG9tYXRvbl9zdGF0ZV9pbnRmXG5cbnR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIFN0YXRlLnRcblxub3BlbiBTdGF0ZVxuXG5sZXQgaW5pdGlhbF91c2VyX3N0YXRlIDogdHlwZSB1IHMuICh1LCBzKSBLaW5kLnQgLT4gUG9zaXRpb25zLnBvcyAtPiB1ID1cbiAgZnVuIGtpbmQgaW5pdGlhbF9wb3MgLT5cbiAgbWF0Y2gga2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLmNyZWF0ZSB+aW5pdGlhbF9wb3MgKClcbiAgfCBTZXhwIC0+ICgpXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5jcmVhdGUgfmluaXRpYWxfcG9zICgpXG4gIHwgQ3N0IC0+XG4gICAgKCogW3Rva2VuX3N0YXJ0X3Bvc10gaXMgc2V0IHRvIGEgZHVtbXkgbG9jYXRpb24gaGVyZS4gSXQgaXMgcHJvcGVybHkgc2V0IHdoZW4gd2VcbiAgICAgICBzdGFydCB0byBjYXB0dXJlIGEgdG9rZW4gZnJvbSB0aGUgaW5wdXQgKilcbiAgICB7IHRva2VuX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgMTI4OyB0b2tlbl9zdGFydF9wb3MgPSBQb3NpdGlvbnMuYmVnaW5uaW5nX29mX2ZpbGUgfVxuOztcblxuKCokIFBhcnNleHBfY2luYXBzX2hlbHBlcnMuR2VuX2F1dG9tYXRvbl9zdGF0ZS5wcmludF9jb25zdGFudHMgKCkgKilcbmxldCBpbml0aWFsX3N0YXRlID0gMFxubGV0IGVycm9yX3N0YXRlID0gMVxuXG4oKiQqKVxuXG5sZXQgY3JlYXRlID8oaW5pdGlhbF9wb3MgPSBQb3NpdGlvbnMuYmVnaW5uaW5nX29mX2ZpbGUpIG1vZGUga2luZCA9XG4gIHsga2luZFxuICA7IGRlcHRoID0gMFxuICA7IGF1dG9tYXRvbl9zdGF0ZSA9IGluaXRpYWxfc3RhdGVcbiAgOyBibG9ja19jb21tZW50X2RlcHRoID0gMFxuICA7IGlnbm9yaW5nX3N0YWNrID0gW11cbiAgOyBlc2NhcGVkX3ZhbHVlID0gMFxuICA7IGF0b21fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAxMjhcbiAgOyB1c2VyX3N0YXRlID0gaW5pdGlhbF91c2VyX3N0YXRlIGtpbmQgaW5pdGlhbF9wb3NcbiAgOyBtb2RlXG4gIDsgZnVsbF9zZXhwcyA9IDBcbiAgOyBvZmZzZXQgPSBpbml0aWFsX3Bvcy5vZmZzZXRcbiAgOyBsaW5lX251bWJlciA9IGluaXRpYWxfcG9zLmxpbmVcbiAgOyBib2xfb2Zmc2V0ID0gaW5pdGlhbF9wb3Mub2Zmc2V0IC0gaW5pdGlhbF9wb3MuY29sXG4gIH1cbjs7XG5cbmxldCBtb2RlIHQgPSB0Lm1vZGVcbmxldCBwb3NpdGlvbnMgdCA9IFBvc2l0aW9ucy5CdWlsZGVyLmNvbnRlbnRzIHQudXNlcl9zdGF0ZVxubGV0IGF0b21fYnVmZmVyIHQgPSB0LmF0b21fYnVmZmVyXG5sZXQgb2Zmc2V0IHN0YXRlID0gc3RhdGUub2Zmc2V0XG5sZXQgbGluZSBzdGF0ZSA9IHN0YXRlLmxpbmVfbnVtYmVyXG5sZXQgY29sdW1uIHN0YXRlID0gc3RhdGUub2Zmc2V0IC0gc3RhdGUuYm9sX29mZnNldFxubGV0IHBvc2l0aW9uIHQgPSB7IFBvc2l0aW9ucy5jb2wgPSBjb2x1bW4gdDsgbGluZSA9IGxpbmUgdDsgb2Zmc2V0ID0gb2Zmc2V0IHQgfVxuXG5sZXQgcmVzZXRfdXNlcl9zdGF0ZSA6IHR5cGUgdSBzLiAodSwgcykgdCAtPiB1bml0ID1cbiAgZnVuIHQgLT5cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIucmVzZXQgdC51c2VyX3N0YXRlIChwb3NpdGlvbiB0KVxuICB8IFNleHAgLT4gKClcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLnJlc2V0IHQudXNlcl9zdGF0ZSAocG9zaXRpb24gdClcbiAgfCBDc3QgLT4gQnVmZmVyLmNsZWFyIHQudXNlcl9zdGF0ZS50b2tlbl9idWZmZXJcbjs7XG5cbmxldCByZXNldCA/KHBvcyA9IFBvc2l0aW9ucy5iZWdpbm5pbmdfb2ZfZmlsZSkgdCA9XG4gIHQuZGVwdGggPC0gMDtcbiAgdC5hdXRvbWF0b25fc3RhdGUgPC0gaW5pdGlhbF9zdGF0ZTtcbiAgdC5ibG9ja19jb21tZW50X2RlcHRoIDwtIDA7XG4gIHQuaWdub3Jpbmdfc3RhY2sgPC0gW107XG4gIHQuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICB0LmZ1bGxfc2V4cHMgPC0gMDtcbiAgdC5vZmZzZXQgPC0gcG9zLm9mZnNldDtcbiAgdC5saW5lX251bWJlciA8LSBwb3MubGluZTtcbiAgdC5ib2xfb2Zmc2V0IDwtIHBvcy5vZmZzZXQgLSBwb3MuY29sO1xuICByZXNldF91c2VyX3N0YXRlIHQ7XG4gIEJ1ZmZlci5jbGVhciB0LmF0b21fYnVmZmVyXG47O1xuXG5sZXQgY29udGV4dCBzdGF0ZSA6IENvbnRleHQudCA9XG4gIG1hdGNoIHN0YXRlLmlnbm9yaW5nX3N0YWNrIHdpdGhcbiAgfCBfIDo6IF8gLT4gU2V4cF9jb21tZW50XG4gIHwgW10gLT4gU2V4cFxuOztcblxubGV0IGhhc191bmNsb3NlZF9wYXJlbiBzdGF0ZSA9IHN0YXRlLmRlcHRoID4gMFxubGV0IHNldF9lcnJvcl9zdGF0ZSBzdGF0ZSA9IHN0YXRlLmF1dG9tYXRvbl9zdGF0ZSA8LSBlcnJvcl9zdGF0ZVxubGV0IGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA9IHN0YXRlLmF1dG9tYXRvbl9zdGF0ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBSZWFzb24gPSBzdHJ1Y3RcbiAgKCpfIFNvbWUgb2YgdGhlc2UgY29tZSBmcm9tIFtQYXJzZXhwX3N5bWJvbGljX2F1dG9tYXRvbi5QYXJzZV9lcnJvcl9yZWFzb25dLiAqKVxuICB0eXBlIHQgPVxuICAgICgqJCBQYXJzZXhwX2NpbmFwc19oZWxwZXJzLkdlbl9wYXJzZV9lcnJvci5wcmludF9jb25zdHJ1Y3RvcnMgKCkgKilcbiAgICB8IEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZVxuICAgIHwgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19kZWNfZXNjYXBlXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19oZXhfZXNjYXBlXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJhY3Rlcl9hZnRlcl9jclxuICAgIHwgVW50ZXJtaW5hdGVkX2Jsb2NrX2NvbW1lbnRcbiAgICB8IFVudGVybWluYXRlZF9xdW90ZWRfc3RyaW5nXG4gICAgKCokKilcbiAgICB8IENsb3NlZF9wYXJlbl93aXRob3V0X29wZW5lZFxuICAgIHwgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZVxuICAgIHwgTm9fc2V4cF9mb3VuZF9pbl9pbnB1dFxuICAgIHwgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cFxuICAgIHwgVG9vX21hbnlfc2V4cHNcbiAgICB8IFVuY2xvc2VkX3BhcmVuXG5lbmRcblxubW9kdWxlIHR5cGUgUGFyc2VfZXJyb3IgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuICBlbmRcbiAgW0BAb2NhbWwuZG9jIFwiQGlubGluZVwiXVxuXG4gIFtAQEBlbmRdXG5cbiAgdmFsIHBvc2l0aW9uIDogdCAtPiBQb3NpdGlvbnMucG9zXG4gIHZhbCBtZXNzYWdlIDogdCAtPiBzdHJpbmdcblxuICAoKiogUmVwb3J0IGFuIGVycm9yIGluIGEgc3R5bGUgc2ltaWxhciB0byBPQ2FtbCwgZm9yIGluc3RhbmNlOlxuXG4gICAgICBGaWxlIFwiYmxhaFwiLCBsaW5lIDQyLCBjaGFyYWN0ZXIgMTA6XG4gICAgICBFcnJvcjogcy1leHByZXNzaW9uIHBhcnNpbmcgZXJyb3I7XG4gICAgICB1bnRlcm1pbmF0ZWQgcXVvdGVkIHN0cmluZy5cbiAgKilcbiAgdmFsIHJlcG9ydCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gZmlsZW5hbWU6c3RyaW5nIC0+IHQgLT4gdW5pdFxuXG4gIGV4Y2VwdGlvbiBQYXJzZV9lcnJvciBvZiB0XG5cbiAgKCoqLyoqKVxuXG4gIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgbW9kdWxlIFJlYXNvbiA9IFJlYXNvblxuXG4gICAgKCoqIFRvIG1hdGNoIHRoZSBvbGQgYmVoYXZpb3IsIHRoZSBvbGQgcGFyc2VyIHNvbWV0aW1lcyByYWlzZWQgW0ZhaWx1cmVdIGFuZCBzb21ldGltZXNcbiAgICAgICAgcmFpc2VkIFtQYXJzZV9lcnJvcl0gKilcbiAgICB2YWwgb2xkX3BhcnNlcl9leG4gOiB0IC0+IFsgYFBhcnNlX2Vycm9yIHwgYEZhaWx1cmUgXVxuXG4gICAgdmFsIHJhaXNlIDogUmVhc29uLnQgLT4gUG9zaXRpb25zLnBvcyAtPiBhdF9lb2Y6Ym9vbCAtPiBhdG9tX2J1ZmZlcjpCdWZmZXIudCAtPiAnYVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFBhcnNlX2Vycm9yX2ludGZcblxudHlwZSB0ID1cbiAgeyBwb3NpdGlvbiA6IFBvc2l0aW9ucy5wb3NcbiAgOyBtZXNzYWdlIDogc3RyaW5nXG4gIDsgb2xkX3BhcnNlcl9leG4gOiBbIGBQYXJzZV9lcnJvciB8IGBGYWlsdXJlIF1cbiAgfVxuXG5sZXQgc2V4cF9vZl90IHsgcG9zaXRpb247IG1lc3NhZ2U7IG9sZF9wYXJzZXJfZXhuID0gXyB9IDogU2V4cC50ID1cbiAgTGlzdFxuICAgIFsgTGlzdCBbIEF0b20gXCJwb3NpdGlvblwiOyBQb3NpdGlvbnMuc2V4cF9vZl9wb3MgcG9zaXRpb24gXVxuICAgIDsgTGlzdCBbIEF0b20gXCJtZXNzYWdlXCI7IHNleHBfb2Zfc3RyaW5nIG1lc3NhZ2UgXVxuICAgIF1cbjs7XG5cbmxldCBwb3NpdGlvbiB0ID0gdC5wb3NpdGlvblxubGV0IG1lc3NhZ2UgdCA9IHQubWVzc2FnZVxubGV0IG9sZF9wYXJzZXJfZXhuIHQgPSB0Lm9sZF9wYXJzZXJfZXhuXG5cbmxldCByZXBvcnQgcHBmIH5maWxlbmFtZSB0ID1cbiAgbGV0IHBvcyA9IHBvc2l0aW9uIHQgaW5cbiAgbGV0IG1zZyA9IG1lc3NhZ2UgdCBpblxuICBGb3JtYXQuZnByaW50ZlxuICAgIHBwZlxuICAgIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXIgJWQ6XFxuRXJyb3I6IHMtZXhwcmVzc2lvbiBwYXJzaW5nIGVycm9yO1xcbiVzXFxuXCJcbiAgICBmaWxlbmFtZVxuICAgIHBvcy5saW5lXG4gICAgcG9zLmNvbFxuICAgIG1zZ1xuOztcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yIG9mIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBQYXJzZV9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBQYXJzZV9lcnJvciBhcmcwX18wMDFfIC0+XG4gICAgICBsZXQgcmVzMF9fMDAyXyA9IHNleHBfb2ZfdCBhcmcwX18wMDFfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwYXJzZV9lcnJvci5tbC5QYXJzZV9lcnJvclwiOyByZXMwX18wMDJfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxubGV0IHJhaXNlIChyZWFzb24gOiBSZWFzb24udCkgcG9zaXRpb24gfmF0X2VvZiB+YXRvbV9idWZmZXIgPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgKCogVGhlc2UgbWVzc2FnZXMgd2hlcmUgY2hvb3NlbiBzdWNoIHRoYXQgd2UgY2FuIGJ1aWxkIHRoZSB2YXJpb3VzIFNleHBsaWIgcGFyc2luZ1xuICAgICAgIGZ1bmN0aW9ucyBvbiB0b3Agb2YgUGFyc2V4cCBhbmQga2VlcCB0aGUgc2FtZSBleGNlcHRpb25zLlxuXG4gICAgICAgQXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGlzLCBhIHNpbXBsZSBsYXllciBvbiB0b3Agb2YgcGFyc2V4cCB0byBpbXBsZW1lbnQgdGhlXG4gICAgICAgc2V4cGxpYiBBUEkgaXMgcGFzc2luZyBhbGwgdGhlIHNleHBsaWIgdGVzdHMuXG5cbiAgICAgICBOb3RlIHRoYXQgcGFyc2V4cCBtYXRjaGVzIHRoZSBzZW1hbnRpYyBvZiBTZXhwLnBhcnNlIHdoaWNoIGlzIHNsaWdodGx5XG4gICAgICAgZGlmZmVyZW50IGZyb20gdGhlIG9jYW1sbGV4L29jYW1seWFjYyBiYXNlZCBwYXJzZXIgb2YgU2V4cGxpYi4gVGhlIGxhdHRlciBvbmVcbiAgICAgICBpcyBsZXNzIHRlc3RlZCBhbmQgYXNzdW1lZCB0byBiZSBsZXNzIHVzZWQuICopXG4gICAgbWF0Y2ggcmVhc29uIHdpdGhcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2hleF9lc2NhcGUgLT4gXCJ1bnRlcm1pbmF0ZWQgaGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlXCJcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2RlY19lc2NhcGUgLT4gXCJ1bnRlcm1pbmF0ZWQgZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2VcIlxuICAgIHwgVW50ZXJtaW5hdGVkX3F1b3RlZF9zdHJpbmcgLT4gXCJ1bnRlcm1pbmF0ZWQgcXVvdGVkIHN0cmluZ1wiXG4gICAgfCBVbnRlcm1pbmF0ZWRfYmxvY2tfY29tbWVudCAtPiBcInVudGVybWluYXRlZCBibG9jayBjb21tZW50XCJcbiAgICB8IEVzY2FwZV9zZXF1ZW5jZV9vdXRfb2ZfcmFuZ2UgLT4gXCJlc2NhcGUgc2VxdWVuY2UgaW4gcXVvdGVkIHN0cmluZyBvdXQgb2YgcmFuZ2VcIlxuICAgIHwgVW5jbG9zZWRfcGFyZW4gLT4gXCJ1bmNsb3NlZCBwYXJlbnRoZXNlcyBhdCBlbmQgb2YgaW5wdXRcIlxuICAgIHwgVG9vX21hbnlfc2V4cHMgLT4gXCJzLWV4cHJlc3Npb24gZm9sbG93ZWQgYnkgZGF0YVwiXG4gICAgfCBDbG9zZWRfcGFyZW5fd2l0aG91dF9vcGVuZWQgLT4gXCJ1bmV4cGVjdGVkIGNoYXJhY3RlcjogJyknXCJcbiAgICB8IENvbW1lbnRfdG9rZW5faW5fdW5xdW90ZWRfYXRvbSAtPlxuICAgICAgaWYgU3RyaW5nLmVxdWFsIChCdWZmZXIuY29udGVudHMgYXRvbV9idWZmZXIpIFwifFwiXG4gICAgICB0aGVuIFwiaWxsZWdhbCBlbmQgb2YgY29tbWVudFwiXG4gICAgICBlbHNlIFwiY29tbWVudCB0b2tlbnMgaW4gdW5xdW90ZWQgYXRvbVwiXG4gICAgfCBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwIC0+IFwidW50ZXJtaW5hdGVkIHNleHAgY29tbWVudFwiXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJhY3Rlcl9hZnRlcl9jciAtPlxuICAgICAgaWYgYXRfZW9mXG4gICAgICB0aGVuIFwidW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgYWZ0ZXIgY2FycmlhZ2UgcmV0dXJuXCJcbiAgICAgIGVsc2UgXCJ1bmV4cGVjdGVkIGNoYXJhY3RlciBhZnRlciBjYXJyaWFnZSByZXR1cm5cIlxuICAgIHwgTm9fc2V4cF9mb3VuZF9pbl9pbnB1dCAtPiBcIm5vIHMtZXhwcmVzc2lvbiBmb3VuZCBpbiBpbnB1dFwiXG4gICAgfCBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGUgLT4gZmFpbHdpdGggXCJQYXJzZXhwLlBhcnNlcl9hdXRvbWF0b246IHBhcnNlciBpcyBkZWFkXCJcbiAgaW5cbiAgbGV0IG9sZF9wYXJzZXJfZXhuID1cbiAgICBtYXRjaCByZWFzb24sIGF0X2VvZiB3aXRoXG4gICAgfCBUb29fbWFueV9zZXhwcywgXyB8IF8sIHRydWUgLT4gYEZhaWx1cmVcbiAgICB8IENvbW1lbnRfdG9rZW5faW5fdW5xdW90ZWRfYXRvbSwgX1xuICAgICAgd2hlbiBTdHJpbmcuZXF1YWwgKEJ1ZmZlci5jb250ZW50cyBhdG9tX2J1ZmZlcikgXCJ8XCIgLT4gYEZhaWx1cmVcbiAgICB8IF8gLT4gYFBhcnNlX2Vycm9yXG4gIGluXG4gIHJhaXNlIChQYXJzZV9lcnJvciB7IHBvc2l0aW9uOyBtZXNzYWdlOyBvbGRfcGFyc2VyX2V4biB9KVxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlYXNvbiA9IFJlYXNvblxuXG4gIGxldCBvbGRfcGFyc2VyX2V4biA9IG9sZF9wYXJzZXJfZXhuXG4gIGxldCByYWlzZSA9IHJhaXNlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBBdXRvbWF0b25fc3RhdGVcbm9wZW4gU3RhdGVcblxubGV0IHJhaXNlX2Vycm9yIDogdHlwZSBhIGIuIChhLCBiKSBBdXRvbWF0b25fc3RhdGUudCAtPiBfID1cbiAgZnVuIHN0YXRlIH5hdF9lb2YgcmVhc29uIC0+XG4gIHNldF9lcnJvcl9zdGF0ZSBzdGF0ZTtcbiAgUGFyc2VfZXJyb3IuUHJpdmF0ZS5yYWlzZVxuICAgIHJlYXNvblxuICAgIHsgbGluZSA9IHN0YXRlLmxpbmVfbnVtYmVyXG4gICAgOyBjb2wgPSBzdGF0ZS5vZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0XG4gICAgOyBvZmZzZXQgPSBzdGF0ZS5vZmZzZXRcbiAgICB9XG4gICAgfmF0X2VvZlxuICAgIH5hdG9tX2J1ZmZlcjpzdGF0ZS5hdG9tX2J1ZmZlclxuOztcblxudHlwZSBub25yZWMgY29udGV4dCA9IEF1dG9tYXRvbl9zdGF0ZS5Db250ZXh0LnQgPVxuICB8IFNleHBfY29tbWVudFxuICB8IFNleHBcblxubGV0IGNvbnRleHQgPSBBdXRvbWF0b25fc3RhdGUuY29udGV4dFxuXG50eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+ICdzIC0+ICdzXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB7IGYgOiAndSAncy4gKCd1LCAncykgdCB9IFtAQHVuYm94ZWRdXG5lbmRcblxubW9kdWxlIEVwc2lsb24gPSBzdHJ1Y3RcbiAgdHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgQXV0b21hdG9uX3N0YXRlLnQgLT4gJ3MgLT4gJ3NcblxuICBtb2R1bGUgUG9seSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB7IGYgOiAndSAncy4gKCd1LCAncykgdCB9IFtAQHVuYm94ZWRdXG4gIGVuZFxuZW5kXG5cbmxldCBjdXJyZW50X3BvcyA/KGRlbHRhID0gMCkgc3RhdGUgOiBQb3NpdGlvbnMucG9zID1cbiAgbGV0IG9mZnNldCA9IHN0YXRlLm9mZnNldCArIGRlbHRhIGluXG4gIHsgbGluZSA9IHN0YXRlLmxpbmVfbnVtYmVyOyBjb2wgPSBvZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0OyBvZmZzZXQgfVxuOztcblxubGV0IHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgeCA9IHN0YXRlLmF1dG9tYXRvbl9zdGF0ZSA8LSB4XG5sZXQgYWR2YW5jZSBzdGF0ZSA9IHN0YXRlLm9mZnNldCA8LSBzdGF0ZS5vZmZzZXQgKyAxXG5cbmxldCBhZHZhbmNlX2VvbCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gdW5pdCA9XG4gIGZ1biBzdGF0ZSAtPlxuICBsZXQgbmV3bGluZV9vZmZzZXQgPSBzdGF0ZS5vZmZzZXQgaW5cbiAgc3RhdGUub2Zmc2V0IDwtIG5ld2xpbmVfb2Zmc2V0ICsgMTtcbiAgc3RhdGUuYm9sX29mZnNldCA8LSBzdGF0ZS5vZmZzZXQ7XG4gIHN0YXRlLmxpbmVfbnVtYmVyIDwtIHN0YXRlLmxpbmVfbnVtYmVyICsgMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLmFkZF9uZXdsaW5lIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDpuZXdsaW5lX29mZnNldFxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICBQb3NpdGlvbnMuQnVpbGRlci5hZGRfbmV3bGluZSBzdGF0ZS51c2VyX3N0YXRlIH5vZmZzZXQ6bmV3bGluZV9vZmZzZXRcbiAgfCBfIC0+ICgpXG47O1xuXG5sZXQgYmxvY2tfY29tbWVudF9kZXB0aCBzdGF0ZSA9IHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGhcblxubGV0IGFkZF90b2tlbl9jaGFyIDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgQ3N0IC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGNoYXI7XG4gICAgc3RhY2tcbiAgfCBfIC0+IHN0YWNrXG47O1xuXG5sZXQgYWRkX2F0b21fY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGM7XG4gIHN0YWNrXG47O1xuXG5sZXQgYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciBjO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgaXNfaWdub3Jpbmcgc3RhdGUgPVxuICBtYXRjaCBjb250ZXh0IHN0YXRlIHdpdGhcbiAgfCBTZXhwIC0+IGZhbHNlXG4gIHwgU2V4cF9jb21tZW50IC0+IHRydWVcbjs7XG5cbmxldCBpc19ub3RfaWdub3Jpbmcgc3RhdGUgPSBub3QgKGlzX2lnbm9yaW5nIHN0YXRlKVxuXG5sZXQgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZSA9XG4gIGxldCBpc19zaW5nbGUgPVxuICAgIG1hdGNoIHN0YXRlLm1vZGUgd2l0aFxuICAgIHwgU2luZ2xlIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgaWYgaXNfc2luZ2xlICYmIHN0YXRlLmZ1bGxfc2V4cHMgPiAwICYmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgVG9vX21hbnlfc2V4cHNcbjs7XG5cbmxldCBhZGRfcG9zIHN0YXRlIH5kZWx0YSA9XG4gIFBvc2l0aW9ucy5CdWlsZGVyLmFkZCBzdGF0ZS51c2VyX3N0YXRlIH5vZmZzZXQ6KHN0YXRlLm9mZnNldCArIGRlbHRhKVxuOztcblxubGV0IGFkZF9maXJzdF9jaGFyIDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGNoYXI7XG4gICgqIEZvciBub24tcXVvdGVkIGF0b21zLCB3ZSBzYXZlIGJvdGggcG9zaXRpb25zIGF0IHRoZSBlbmQuIFdlIGNhbiBhbHdheXMgZGV0ZXJtaW5lIHRoZVxuICAgICBzdGFydCBwb3NpdGlvbiBmcm9tIHRoZSBlbmQgcG9zaXRpb24gYW5kIHRoZSBhdG9tIGxlbmd0aCBmb3Igbm9uLXF1b3RlZCBhdG9tcy5cblxuICAgICBEb2luZyBpdCB0aGlzIHdheSBhbGxvd3MgdXMgdG8gZGV0ZWN0IHNpbmdsZSBjaGFyYWNhdGVyIGF0b21zIGZvciB3aGljaCB3ZSBuZWVkIHRvXG4gICAgIHNhdmUgdGhlIHBvc2l0aW9uIHR3aWNlLiAqKVxuICBzdGFja1xuOztcblxubGV0IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyICcjJztcbiAgc3RhY2tcbjs7XG5cbmxldCBzdGFydF9xdW90ZWRfc3RyaW5nIDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGU7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICBzdGFja1xuICB8IENzdCAtPlxuICAgIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zIDwtIGN1cnJlbnRfcG9zIHN0YXRlO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciAnXCInO1xuICAgIHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuOztcblxubGV0IGFkZF9lc2NhcGVkIHN0YXRlIGMgc3RhY2sgPVxuICBsZXQgYycgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ24nIC0+ICdcXG4nXG4gICAgfCAncicgLT4gJ1xccidcbiAgICB8ICdiJyAtPiAnXFxiJ1xuICAgIHwgJ3QnIC0+ICdcXHQnXG4gICAgfCAnXFxcXCcgfCAnXFwnJyB8ICdcIicgLT4gY1xuICAgIHwgXyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyICdcXFxcJztcbiAgICAgIGNcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGMnO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgZXBzX2FkZF9lc2NhcGVkX2NyIHN0YXRlIHN0YWNrID1cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyICdcXHInO1xuICBzdGFja1xuOztcblxubGV0IGRlY192YWwgYyA9IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuXG5sZXQgaGV4X3ZhbCBjID1cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCdcbiAgfCAnYScgLi4gJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gIHwgXyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnQScgKyAxMFxuOztcblxubGV0IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgKiAxMCkgKyBkZWNfdmFsIGM7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBhZGRfbGFzdF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIGxldCB2YWx1ZSA9IChzdGF0ZS5lc2NhcGVkX3ZhbHVlICogMTApICsgZGVjX3ZhbCBjIGluXG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgaWYgdmFsdWUgPiAyNTUgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIEVzY2FwZV9zZXF1ZW5jZV9vdXRfb2ZfcmFuZ2U7XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAoQ2hhci5jaHIgdmFsdWUpO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIGxldCB2YWx1ZSA9IChzdGF0ZS5lc2NhcGVkX3ZhbHVlICogMTApICsgZGVjX3ZhbCBjIGluXG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgaWYgdmFsdWUgPiAyNTUgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIEVzY2FwZV9zZXF1ZW5jZV9vdXRfb2ZfcmFuZ2U7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBhZGRfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIChzdGF0ZS5lc2NhcGVkX3ZhbHVlIGxzbCA0KSBsb3IgaGV4X3ZhbCBjO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgYWRkX2xhc3RfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBsZXQgdmFsdWUgPSAoc3RhdGUuZXNjYXBlZF92YWx1ZSBsc2wgNCkgbG9yIGhleF92YWwgYyBpblxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAoQ2hhci5jaHIgdmFsdWUpO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgb3BlbmluZyA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgc3RhdGUuZGVwdGggPC0gc3RhdGUuZGVwdGggKyAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgIHN0YWNrXG4gIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBPcGVuIHN0YWNrIGVsc2Ugc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gICAgdGhlbiAoXG4gICAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgT3BlbiBzdGFjaylcbiAgICBlbHNlIHN0YWNrXG4gIHwgQ3N0IC0+IE9wZW4gKGN1cnJlbnRfcG9zIHN0YXRlLCBzdGFjaylcbjs7XG5cbmxldCBkb19yZXNldF9wb3NpdGlvbnMgc3RhdGUgPVxuICBQb3NpdGlvbnMuQnVpbGRlci5yZXNldFxuICAgIHN0YXRlLnVzZXJfc3RhdGVcbiAgICB7IGxpbmUgPSBzdGF0ZS5saW5lX251bWJlclxuICAgIDsgY29sID0gc3RhdGUub2Zmc2V0IC0gc3RhdGUuYm9sX29mZnNldFxuICAgIDsgb2Zmc2V0ID0gc3RhdGUub2Zmc2V0XG4gICAgfVxuOztcblxubGV0IHJlc2V0X3Bvc2l0aW9ucyA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gdW5pdCA9XG4gIGZ1biBzdGF0ZSAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gZG9fcmVzZXRfcG9zaXRpb25zIHN0YXRlXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBkb19yZXNldF9wb3NpdGlvbnMgc3RhdGVcbiAgfCBTZXhwIC0+ICgpXG4gIHwgQ3N0IC0+ICgpXG47O1xuXG5sZXQgdG9wbGV2ZWxfc2V4cF9vcl9jb21tZW50X2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YSA9XG4gIG1hdGNoIHN0YXRlLm1vZGUgd2l0aFxuICB8IFNpbmdsZSB8IE1hbnkgLT4gc3RhY2tcbiAgfCBFYWdlciB7IGdvdF9zZXhwID0gZjsgXyB9IC0+XG4gICAgKCogTW9kaWZ5IHRoZSBvZmZzZXQgc28gdGhhdCBbZl0gZ2V0IGEgc3RhdGUgcG9pbnRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgY3VycmVudFxuICAgICAgIHMtZXhwcmVzc2lvbiAqKVxuICAgIGxldCBzYXZlZF9vZmZzZXQgPSBzdGF0ZS5vZmZzZXQgaW5cbiAgICBzdGF0ZS5vZmZzZXQgPC0gc3RhdGUub2Zmc2V0ICsgZGVsdGE7XG4gICAgbGV0IHNhdmVkX2Z1bGxfc2V4cHMgPSBzdGF0ZS5mdWxsX3NleHBzIGluXG4gICAgKG1hdGNoIGYgc3RhdGUgc3RhY2sgd2l0aFxuICAgICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICAgc2V0X2Vycm9yX3N0YXRlIHN0YXRlO1xuICAgICAgIHJhaXNlIGVcbiAgICAgfCBzdGFjayAtPlxuICAgICAgICgqIFRoaXMgYXNzZXJ0IGlzIG5vdCBhIGZ1bGwgcHJvdGVjdGlvbiBhZ2FpbnN0IHRoZSB1c2VyIG11dGF0aW5nIHRoZSBzdGF0ZSBidXRcbiAgICAgICAgICBpdCBzaG91bGQgY2F0Y2ggbW9zdCBjYXNlcy4gKilcbiAgICAgICBhc3NlcnQgKHN0YXRlLm9mZnNldCA9IHNhdmVkX29mZnNldCArIGRlbHRhICYmIHN0YXRlLmZ1bGxfc2V4cHMgPSBzYXZlZF9mdWxsX3NleHBzKTtcbiAgICAgICBzdGF0ZS5vZmZzZXQgPC0gc2F2ZWRfb2Zmc2V0O1xuICAgICAgIHJlc2V0X3Bvc2l0aW9ucyBzdGF0ZTtcbiAgICAgICBzdGFjaylcbjs7XG5cbmxldCBpc190b3BfbGV2ZWwgc3RhdGUgPSBpc19ub3RfaWdub3Jpbmcgc3RhdGUgJiYgc3RhdGUuZGVwdGggPSAwXG5cbmxldCBjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCBzdGF0ZSBzdGFjayB+ZGVsdGEgPVxuICBpZiBpc190b3BfbGV2ZWwgc3RhdGUgdGhlbiB0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCBtYXliZV9wb3BfaWdub3Jpbmdfc3RhY2sgc3RhdGUgPVxuICBtYXRjaCBzdGF0ZS5pZ25vcmluZ19zdGFjayB3aXRoXG4gIHwgaW5uZXJfY29tbWVudF9kZXB0aCA6OiBfdGwgd2hlbiBpbm5lcl9jb21tZW50X2RlcHRoID4gc3RhdGUuZGVwdGggLT5cbiAgICByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIFNleHBfY29tbWVudF93aXRob3V0X3NleHBcbiAgfCBpbm5lcl9jb21tZW50X2RlcHRoIDo6IHRsIHdoZW4gaW5uZXJfY29tbWVudF9kZXB0aCA9IHN0YXRlLmRlcHRoIC0+XG4gICAgc3RhdGUuaWdub3Jpbmdfc3RhY2sgPC0gdGw7XG4gICAgdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBzZXhwX2FkZGVkIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBzIC0+IGRlbHRhOmludCAtPiBzID1cbiAgZnVuIHN0YXRlIHN0YWNrIH5kZWx0YSAtPlxuICBsZXQgaXNfY29tbWVudCA9IG1heWJlX3BvcF9pZ25vcmluZ19zdGFjayBzdGF0ZSBpblxuICBpZiBpc190b3BfbGV2ZWwgc3RhdGVcbiAgdGhlbiAoXG4gICAgaWYgbm90IGlzX2NvbW1lbnQgdGhlbiBzdGF0ZS5mdWxsX3NleHBzIDwtIHN0YXRlLmZ1bGxfc2V4cHMgKyAxO1xuICAgIGlmIChub3QgaXNfY29tbWVudClcbiAgICAgICB8fFxuICAgICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgICAgIHwgQ3N0IC0+IHRydWVcbiAgICAgICB8IF8gLT4gZmFsc2VcbiAgICB0aGVuIHRvcGxldmVsX3NleHBfb3JfY29tbWVudF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGFcbiAgICBlbHNlIHN0YWNrKVxuICBlbHNlIHN0YWNrXG47O1xuXG5sZXQgcmVjIG1ha2VfbGlzdCBhY2MgOiBBdXRvbWF0b25fc3RhY2sudCAtPiBBdXRvbWF0b25fc3RhY2sudCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgT3BlbiBzdGFjayAtPiBTZXhwIChMaXN0IGFjYywgc3RhY2spXG4gIHwgU2V4cCAoc2V4cCwgc3RhY2spIC0+IG1ha2VfbGlzdCAoc2V4cCA6OiBhY2MpIHN0YWNrXG47O1xuXG5sZXQgYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IGNvbW1lbnQgKHN0YWNrIDogQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudClcbiAgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50XG4gID1cbiAgbWF0Y2ggc3RhY2sgd2l0aFxuICB8IEluX3NleHBfY29tbWVudCByIC0+XG4gICAgSW5fc2V4cF9jb21tZW50IHsgciB3aXRoIHJldl9jb21tZW50cyA9IGNvbW1lbnQgOjogci5yZXZfY29tbWVudHMgfVxuICB8IF8gLT4gVF9vcl9jb21tZW50IChDb21tZW50IGNvbW1lbnQsIHN0YWNrKVxuOztcblxubGV0IGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIDogQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudCAtPiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50XG4gID0gZnVuY3Rpb25cbiAgICB8IEluX3NleHBfY29tbWVudCB7IGhhc2hfc2VtaV9wb3M7IHJldl9jb21tZW50czsgc3RhY2sgfSAtPlxuICAgICAgbGV0IGNvbW1lbnQgOiBDc3QuY29tbWVudCA9XG4gICAgICAgIFNleHBfY29tbWVudCB7IGhhc2hfc2VtaV9wb3M7IGNvbW1lbnRzID0gTGlzdC5yZXYgcmV2X2NvbW1lbnRzOyBzZXhwIH1cbiAgICAgIGluXG4gICAgICBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCBzdGFja1xuICAgIHwgc3RhY2sgLT4gVF9vcl9jb21tZW50IChTZXhwIHNleHAsIHN0YWNrKVxuOztcblxubGV0IHJlYyBtYWtlX2xpc3RfY3N0IGVuZF9wb3MgYWNjIDogQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudCAtPiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50XG4gID0gZnVuY3Rpb25cbiAgICB8IFRfb3JfY29tbWVudCAodCwgc3RhY2spIC0+IG1ha2VfbGlzdF9jc3QgZW5kX3BvcyAodCA6OiBhY2MpIHN0YWNrXG4gICAgfCBPcGVuIChzdGFydF9wb3MsIHN0YWNrKSAtPlxuICAgICAgbGV0IHNleHAgOiBDc3QudCA9IExpc3QgeyBsb2MgPSB7IHN0YXJ0X3BvczsgZW5kX3BvcyB9OyBlbGVtZW50cyA9IGFjYyB9IGluXG4gICAgICBhZGRfc2V4cF90b19zdGFja19jc3Qgc2V4cCBzdGFja1xuICAgIHwgRW1wdHkgfCBJbl9zZXhwX2NvbW1lbnQgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbmxldCBjbG9zaW5nIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBpZiBzdGF0ZS5kZXB0aCA+IDBcbiAgdGhlbiAoXG4gICAgbGV0IHN0YWNrIDogcyA9XG4gICAgICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgICAgIHwgUG9zaXRpb25zIC0+XG4gICAgICAgICgqIE5vdGUgd2Ugc3RvcmUgZW5kIHBvc2l0aW9ucyBhcyBpbmNsdXNpdmUgaW4gW1Bvc2l0aW9ucy50XSwgc28gd2UgdXNlIFtkZWx0YTowXSxcbiAgICAgICAgICAgd2hpbGUgaW4gdGhlIFtDc3RdIGNhc2Ugd2Ugc2F2ZSBkaXJlY3RseSB0aGUgZmluYWwgcmFuZ2VzLCBzbyB3ZSB1c2VcbiAgICAgICAgICAgW2RlbHRhOjFdLiAqKVxuICAgICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgICBzdGFja1xuICAgICAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIG1ha2VfbGlzdCBbXSBzdGFjayBlbHNlIHN0YWNrXG4gICAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICAgICAgbWFrZV9saXN0IFtdIHN0YWNrKVxuICAgICAgICBlbHNlIHN0YWNrXG4gICAgICB8IENzdCAtPiBtYWtlX2xpc3RfY3N0IChjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6MSkgW10gc3RhY2tcbiAgICBpblxuICAgIHN0YXRlLmRlcHRoIDwtIHN0YXRlLmRlcHRoIC0gMTtcbiAgICBzZXhwX2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YToxKVxuICBlbHNlIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgQ2xvc2VkX3BhcmVuX3dpdGhvdXRfb3BlbmVkXG47O1xuXG5sZXQgbWFrZV9sb2MgPyhkZWx0YSA9IDApIChzdGF0ZSA6IChBdXRvbWF0b25fc3RhdGUuRm9yX2NzdC50LCBfKSBBdXRvbWF0b25fc3RhdGUudClcbiAgOiBQb3NpdGlvbnMucmFuZ2VcbiAgPVxuICB7IHN0YXJ0X3BvcyA9IHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zOyBlbmRfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhIH1cbjs7XG5cbigqIFRoaXMgaXMgYWx3YXlzIGNhbGxlZCBvbiB0aGUgcG9zaXRpb24gZXhhY3RseSBmb2xsb3dpbmcgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIGFcbiAgIG5vbi1xdW90ZWQgYXRvbSAqKVxubGV0IGFkZF9ub25fcXVvdGVkX2F0b21fcG9zIHN0YXRlIH5hdG9tID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggYXRvbSBpblxuICBpZiBsZW4gPSAxXG4gIHRoZW4gUG9zaXRpb25zLkJ1aWxkZXIuYWRkX3R3aWNlIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDooc3RhdGUub2Zmc2V0IC0gMSlcbiAgZWxzZSAoXG4gICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6KC1sZW4pO1xuICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOigtMSkpXG47O1xuXG5sZXQgZXBzX3B1c2hfYXRvbSA6IHR5cGUgdSBzLiAodSwgcykgRXBzaWxvbi50ID1cbiAgZnVuIHN0YXRlIHN0YWNrIC0+XG4gIGxldCBzdHIgPSBCdWZmZXIuY29udGVudHMgc3RhdGUuYXRvbV9idWZmZXIgaW5cbiAgQnVmZmVyLmNsZWFyIHN0YXRlLmF0b21fYnVmZmVyO1xuICBsZXQgc3RhY2sgOiBzID1cbiAgICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgICB8IFBvc2l0aW9ucyAtPlxuICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX25vbl9xdW90ZWRfYXRvbV9wb3Mgc3RhdGUgfmF0b206c3RyO1xuICAgICAgc3RhY2tcbiAgICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSBlbHNlIHN0YWNrXG4gICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyBzdGF0ZSB+YXRvbTpzdHI7XG4gICAgICAgIFNleHAgKEF0b20gc3RyLCBzdGFjaykpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgfCBDc3QgLT5cbiAgICAgIGxldCBsb2MgOiBQb3NpdGlvbnMucmFuZ2UgPVxuICAgICAgICB7IHN0YXJ0X3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTooLVN0cmluZy5sZW5ndGggc3RyKVxuICAgICAgICA7IGVuZF9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6MFxuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IHNleHAgOiBDc3QudCA9IEF0b20geyBsb2M7IGF0b20gPSBzdHI7IHVuZXNjYXBlZCA9IFNvbWUgc3RyIH0gaW5cbiAgICAgIGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIHN0YWNrXG4gIGluXG4gIHNleHBfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhOjBcbjs7XG5cbmxldCBwdXNoX3F1b3RlZF9hdG9tIDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGxldCBzdHIgPSBCdWZmZXIuY29udGVudHMgc3RhdGUuYXRvbV9idWZmZXIgaW5cbiAgQnVmZmVyLmNsZWFyIHN0YXRlLmF0b21fYnVmZmVyO1xuICBsZXQgc3RhY2sgOiBzID1cbiAgICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgICB8IFBvc2l0aW9ucyAtPlxuICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgIHN0YWNrXG4gICAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIFNleHAgKEF0b20gc3RyLCBzdGFjaykgZWxzZSBzdGFja1xuICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgICAgU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICB8IENzdCAtPlxuICAgICAgbGV0IGJ1ZiA9IHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGluXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdcIic7XG4gICAgICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICBsZXQgc2V4cCA6IENzdC50ID1cbiAgICAgICAgQXRvbSB7IGxvYyA9IG1ha2VfbG9jIHN0YXRlIH5kZWx0YToxOyBhdG9tID0gc3RyOyB1bmVzY2FwZWQgPSBTb21lIHMgfVxuICAgICAgaW5cbiAgICAgIGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIHN0YWNrXG4gIGluXG4gIHNleHBfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhOjFcbjs7XG5cbmxldCBzdGFydF9zZXhwX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgc3RhdGUuaWdub3Jpbmdfc3RhY2sgPC0gc3RhdGUuZGVwdGggOjogc3RhdGUuaWdub3Jpbmdfc3RhY2s7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IENzdCAtPlxuICAgIEluX3NleHBfY29tbWVudFxuICAgICAgeyBoYXNoX3NlbWlfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOigtMSk7IHJldl9jb21tZW50cyA9IFtdOyBzdGFjayB9XG4gIHwgXyAtPiBzdGFja1xuOztcblxubGV0IHN0YXJ0X2Jsb2NrX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA8LSBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoICsgMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBpZiBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoID0gMVxuICAgIHRoZW4gKFxuICAgICAgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3MgPC0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOigtMSk7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgJyMnKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgY2hhcjtcbiAgICBzdGFja1xuOztcblxubGV0IGVuZF9ibG9ja19jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPC0gc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCAtIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBzdGFja1xuICB8IFNleHAgLT4gc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgbGV0IGJ1ZiA9IHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGluXG4gICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjaGFyO1xuICAgIGlmIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPSAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICBsZXQgY29tbWVudCA6IENzdC5jb21tZW50ID1cbiAgICAgICAgUGxhaW5fY29tbWVudCB7IGxvYyA9IG1ha2VfbG9jIHN0YXRlIH5kZWx0YToxOyBjb21tZW50ID0gcyB9XG4gICAgICBpblxuICAgICAgbGV0IHN0YWNrID0gYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IGNvbW1lbnQgc3RhY2sgaW5cbiAgICAgIGNvbW1lbnRfYWRkZWRfYXNzdW1pbmdfY3N0IHN0YXRlIHN0YWNrIH5kZWx0YToxKVxuICAgIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCBzdGFydF9saW5lX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBDc3QgLT5cbiAgICBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvcyA8LSBjdXJyZW50X3BvcyBzdGF0ZTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgY2hhcjtcbiAgICBzdGFja1xuICB8IF8gLT4gc3RhY2tcbjs7XG5cbmxldCBlbmRfbGluZV9jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBsZXQgYnVmID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgaW5cbiAgICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgIGxldCBjb21tZW50IDogQ3N0LmNvbW1lbnQgPSBQbGFpbl9jb21tZW50IHsgbG9jID0gbWFrZV9sb2Mgc3RhdGU7IGNvbW1lbnQgPSBzIH0gaW5cbiAgICBsZXQgc3RhY2sgPSBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCBzdGFjayBpblxuICAgIGNvbW1lbnRfYWRkZWRfYXNzdW1pbmdfY3N0IHN0YXRlIHN0YWNrIH5kZWx0YTowXG47O1xuXG5sZXQgZXBzX2VvaV9jaGVjayA6IHR5cGUgdSBzLiAodSwgcykgRXBzaWxvbi50ID1cbiAgZnVuIHN0YXRlIHN0YWNrIC0+XG4gIGlmIHN0YXRlLmRlcHRoID4gMCB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbmNsb3NlZF9wYXJlbjtcbiAgaWYgaXNfaWdub3Jpbmcgc3RhdGUgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOnRydWUgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cDtcbiAgaWYgc3RhdGUuZnVsbF9zZXhwcyA9IDBcbiAgdGhlbiAoXG4gICAgbWF0Y2ggc3RhdGUubW9kZSB3aXRoXG4gICAgfCBNYW55IHwgRWFnZXIgeyBub19zZXhwX2lzX2Vycm9yID0gZmFsc2U7IF8gfSAtPiAoKVxuICAgIHwgU2luZ2xlIHwgRWFnZXIgeyBub19zZXhwX2lzX2Vycm9yID0gdHJ1ZTsgXyB9IC0+XG4gICAgICByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOnRydWUgTm9fc2V4cF9mb3VuZF9pbl9pbnB1dCk7XG4gIHN0YWNrXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gIHwgUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZVxuICB8IFBhcnNpbmdfYXRvbVxuICB8IFBhcnNpbmdfbGlzdFxuICB8IFBhcnNpbmdfc2V4cF9jb21tZW50XG4gIHwgUGFyc2luZ19ibG9ja19jb21tZW50XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVwiXG4gICAgfCBQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2VcIlxuICAgIHwgUGFyc2luZ19hdG9tIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfYXRvbVwiXG4gICAgfCBQYXJzaW5nX2xpc3QgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19saXN0XCJcbiAgICB8IFBhcnNpbmdfc2V4cF9jb21tZW50IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfc2V4cF9jb21tZW50XCJcbiAgICB8IFBhcnNpbmdfYmxvY2tfY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdG9fc3RyaW5nIHQgPVxuICBtYXRjaCBzZXhwX29mX3QgdCB3aXRoXG4gIHwgQXRvbSBzIC0+IHNcbiAgfCBMaXN0IF8gLT4gZmFpbHdpdGggXCJCVUc6IFtzZXhwX29mX3RdIHJldHVybmVkIGEgW0xpc3QgX11cIlxuOztcbiIsIm9wZW4gQXV0b21hdG9uX2FjdGlvblxuXG5sZXQgcmFpc2UgPSBBdXRvbWF0b25fYWN0aW9uLnJhaXNlX2Vycm9yXG5cbnR5cGUgdSdcbnR5cGUgcydcblxuKCokIFBhcnNleHBfY2luYXBzX2hlbHBlcnMuR2VuX2F1dG9tYXRvbl90YWJsZXMucHJpbnRfY29kZSAoKSAqKVxubGV0IHRyXzAwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9maXJzdF9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wMF9mIH1cblxubGV0IHRyXzAxX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAxX2YgfVxuXG5sZXQgdHJfMDJfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAyX2YgfVxuXG5sZXQgdHJfMDNfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDNfZiB9XG5cbmxldCB0cl8wNF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9xdW90ZWRfc3RyaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wNF9mIH1cblxubGV0IHRyXzA1X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDc7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA1X2YgfVxuXG5sZXQgdHJfMDZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gb3BlbmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDZfZiB9XG5cbmxldCB0cl8wN19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBjbG9zaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wN19mIH1cblxubGV0IHRyXzA4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X2xpbmVfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDhfZiB9XG5cbmxldCB0cl8wOV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZmlyc3RfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wOSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDlfZiB9XG5sZXQgdHJfMTBfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID0gcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlXG5sZXQgdHJfMTAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzEwX2YgfVxubGV0IHRyXzExX2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9IHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyXG5sZXQgdHJfMTEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzExX2YgfVxuXG5sZXQgdHJfMTJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTJfZiB9XG5cbmxldCB0cl8xM19mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzEzX2YgfVxuXG5sZXQgdHJfMTRfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTRfZiB9XG5cbmxldCB0cl8xNV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE1X2YgfVxuXG5sZXQgdHJfMTZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBzdGFydF9xdW90ZWRfc3RyaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xNl9mIH1cblxubGV0IHRyXzE3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE3X2YgfVxuXG5sZXQgdHJfMThfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBvcGVuaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xOF9mIH1cblxubGV0IHRyXzE5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gY2xvc2luZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xOSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTlfZiB9XG5cbmxldCB0cl8yMF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHN0YXJ0X2xpbmVfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjBfZiB9XG5cbmxldCB0cl8yMV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzIxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yMV9mIH1cblxubGV0IHRyXzIyX2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9XG4gIHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIENvbW1lbnRfdG9rZW5faW5fdW5xdW90ZWRfYXRvbVxuOztcblxubGV0IHRyXzIyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yMl9mIH1cblxubGV0IHRyXzIzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzIzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yM19mIH1cblxubGV0IHRyXzI0X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfbGluZV9jb21tZW50IHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI0X2YgfVxuXG5sZXQgdHJfMjVfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9saW5lX2NvbW1lbnQgc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yNV9mIH1cblxubGV0IHRyXzI2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI2X2YgfVxuXG5sZXQgdHJfMjdfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yN19mIH1cblxubGV0IHRyXzI4X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI4X2YgfVxuXG5sZXQgdHJfMjlfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yOV9mIH1cblxubGV0IHRyXzMwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gc3RhcnRfcXVvdGVkX3N0cmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzBfZiB9XG5cbmxldCB0cl8zMV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zMV9mIH1cblxubGV0IHRyXzMyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gb3BlbmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzJfZiB9XG5cbmxldCB0cl8zM19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGNsb3Npbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMzX2YgfVxuXG5sZXQgdHJfMzRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfc2V4cF9jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zNF9mIH1cblxubGV0IHRyXzM1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X2Jsb2NrX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zNV9mIH1cblxubGV0IHRyXzM2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zNl9mIH1cblxubGV0IHRyXzM3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzdfZiB9XG5cbmxldCB0cl8zOF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBwdXNoX3F1b3RlZF9hdG9tIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zOF9mIH1cblxubGV0IHRyXzM5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zOV9mIH1cblxubGV0IHRyXzQwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9lc2NhcGVkIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80MF9mIH1cblxubGV0IHRyXzQxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNTtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQxX2YgfVxuXG5sZXQgdHJfNDJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDEwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80Ml9mIH1cblxubGV0IHRyXzQzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDExO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80M19mIH1cblxubGV0IHRyXzQ0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDRfZiB9XG5cbmxldCB0cl80NV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ1X2YgfVxuXG5sZXQgdHJfNDZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9lc2NhcGVkX2NyIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHB1c2hfcXVvdGVkX2F0b20gc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ2X2YgfVxuXG5sZXQgdHJfNDdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9lc2NhcGVkX2NyIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80N19mIH1cblxubGV0IHRyXzQ4X2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9XG4gIHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2RlY19lc2NhcGVcbjs7XG5cbmxldCB0cl80OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDhfZiB9XG5cbmxldCB0cl80OV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80OSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDlfZiB9XG5cbmxldCB0cl81MF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfbGFzdF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUwX2YgfVxuXG5sZXQgdHJfNTFfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID1cbiAgcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfaGV4X2VzY2FwZVxuOztcblxubGV0IHRyXzUxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81MV9mIH1cblxubGV0IHRyXzUyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzUyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81Ml9mIH1cblxubGV0IHRyXzUzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTNfZiB9XG5cbmxldCB0cl81NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTRfZiB9XG5cbmxldCB0cl81NV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU1X2YgfVxuXG5sZXQgdHJfNTZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81Nl9mIH1cblxubGV0IHRyXzU3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHB1c2hfcXVvdGVkX2F0b20gc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU3X2YgfVxuXG5sZXQgdHJfNThfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU4X2YgfVxuXG5sZXQgdHJfNTlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81OV9mIH1cblxubGV0IHRyXzYwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNjtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYwX2YgfVxuXG5sZXQgdHJfNjFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82MV9mIH1cblxubGV0IHRyXzYyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjJfZiB9XG5cbmxldCB0cl82M19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTc7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYzX2YgfVxuXG5sZXQgdHJfNjRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2Jsb2NrX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIChpZiBibG9ja19jb21tZW50X2RlcHRoIHN0YXRlIDw+IDAgdGhlbiAxNiBlbHNlIDApO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82NF9mIH1cblxubGV0IHRyXzY1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY1X2YgfVxuXG5sZXQgdHJfNjZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82Nl9mIH1cblxubGV0IHRyXzY3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyNjtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY3X2YgfVxuXG5sZXQgdHJfNjhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIxO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82OF9mIH1cblxubGV0IHRyXzY5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82OV9mIH1cblxubGV0IHRyXzcwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzBfZiB9XG5cbmxldCB0cl83MV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzcxX2YgfVxuXG5sZXQgdHJfNzJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzcyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83Ml9mIH1cblxubGV0IHRyXzczX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzNfZiB9XG5cbmxldCB0cl83NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzRfZiB9XG5cbmxldCB0cl83NV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBjb21tZW50X2FkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc1X2YgfVxuXG5sZXQgdHJfNzZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83Nl9mIH1cblxubGV0IHRyXzc3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzdfZiB9XG5cbmxldCB0cl83OF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83OF9mIH1cbmxldCB0cl9lb2lfMDBfZiBzdGF0ZSBzdGFjayA9IGVwc19lb2lfY2hlY2sgc3RhdGUgc3RhY2tcbmxldCB0cl9lb2lfMDAgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzAwX2YgfVxubGV0IHRyX2VvaV8wMV9mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGVcbmxldCB0cl9lb2lfMDEgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzAxX2YgfVxubGV0IHRyX2VvaV8wMl9mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbmV4cGVjdGVkX2NoYXJhY3Rlcl9hZnRlcl9jclxubGV0IHRyX2VvaV8wMiA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDJfZiB9XG5cbmxldCB0cl9lb2lfMDNfZiBzdGF0ZSBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xuOztcblxubGV0IHRyX2VvaV8wMyA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDNfZiB9XG5cbmxldCB0cl9lb2lfMDRfZiBzdGF0ZSBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9saW5lX2NvbW1lbnQgc3RhdGUgc3RhY2sgaW5cbiAgZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xuOztcblxubGV0IHRyX2VvaV8wNCA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDRfZiB9XG5cbmxldCB0cl9lb2lfMDVfZiBzdGF0ZSBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xuOztcblxubGV0IHRyX2VvaV8wNSA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDVfZiB9XG5sZXQgdHJfZW9pXzA2X2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIFVudGVybWluYXRlZF9xdW90ZWRfc3RyaW5nXG5sZXQgdHJfZW9pXzA2IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wNl9mIH1cbmxldCB0cl9lb2lfMDdfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgVW50ZXJtaW5hdGVkX2Jsb2NrX2NvbW1lbnRcbmxldCB0cl9lb2lfMDcgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA3X2YgfVxuXG5sZXQgdHJhbnNpdGlvbnMgPVxuICBbfCB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMVxuICAgOyB0cl8wMlxuICAgOyB0cl8wMFxuICAgOyB0cl8wMVxuICAgOyB0cl8wM1xuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMVxuICAgOyB0cl8wMFxuICAgOyB0cl8wNFxuICAgOyB0cl8wNVxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wNlxuICAgOyB0cl8wN1xuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wOFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wOVxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8wMlxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNFxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xMlxuICAgOyB0cl8xNlxuICAgOyB0cl8xN1xuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xOFxuICAgOyB0cl8xOVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMFxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNFxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xMlxuICAgOyB0cl8xNlxuICAgOyB0cl8xN1xuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xOFxuICAgOyB0cl8xOVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMFxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNFxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xMlxuICAgOyB0cl8xNlxuICAgOyB0cl8yMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xOFxuICAgOyB0cl8xOVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMFxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yNFxuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yNVxuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yN1xuICAgOyB0cl8yOFxuICAgOyB0cl8yNlxuICAgOyB0cl8yN1xuICAgOyB0cl8yOVxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yN1xuICAgOyB0cl8yNlxuICAgOyB0cl8zMFxuICAgOyB0cl8zMVxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8zMlxuICAgOyB0cl8zM1xuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8zNFxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8zNVxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zN1xuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zOFxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zOVxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MVxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MlxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80NFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80MVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NlxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80N1xuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NVxuICAgOyB0cl81NlxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NVxuICAgOyB0cl81NFxuICAgOyB0cl81N1xuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81OFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82MlxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82M1xuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82NFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82M1xuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82MlxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl8zNVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82NVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82NlxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82N1xuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82OFxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl83MFxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl82N1xuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MlxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83M1xuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83N1xuICAgOyB0cl83OFxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83N1xuICAgOyB0cl83MVxuICAgOyB0cl83MlxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83M1xuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICB8XVxuOztcblxubGV0IHRyYW5zaXRpb25zX2VvaSA9XG4gIFt8IHRyX2VvaV8wMFxuICAgOyB0cl9lb2lfMDFcbiAgIDsgdHJfZW9pXzAyXG4gICA7IHRyX2VvaV8wM1xuICAgOyB0cl9lb2lfMDNcbiAgIDsgdHJfZW9pXzAzXG4gICA7IHRyX2VvaV8wNFxuICAgOyB0cl9lb2lfMDVcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gIHxdXG47O1xuXG5sZXQgb2xkX3BhcnNlcl9hcHByb3hfY29udF9zdGF0ZXMgOiBPbGRfcGFyc2VyX2NvbnRfc3RhdGUudCBhcnJheSA9XG4gIFt8IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgIDsgUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICB8XVxuOztcbigqJCopXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTdGFjayA9IEF1dG9tYXRvbl9zdGFja1xuaW5jbHVkZSBBdXRvbWF0b25fc3RhdGVcblxubGV0IGZlZWQgKHR5cGUgdSBzKSAoc3RhdGUgOiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQpIGNoYXIgKHN0YWNrIDogcykgOiBzID1cbiAgbGV0IGlkeCA9IChhdXRvbWF0b25fc3RhdGUgc3RhdGUgbHNsIDgpIGxvciBDaGFyLmNvZGUgY2hhciBpblxuICBBdXRvbWF0b25fdGFibGVzLnRyYW5zaXRpb25zLihpZHgpLmYgc3RhdGUgY2hhciBzdGFja1xuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBmZWVkX2VvaSAodHlwZSB1IHMpIChzdGF0ZSA6ICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCkgKHN0YWNrIDogcykgOiBzID1cbiAgbGV0IHN0YWNrID0gQXV0b21hdG9uX3RhYmxlcy50cmFuc2l0aW9uc19lb2kuKGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSkuZiBzdGF0ZSBzdGFjayBpblxuICBzZXRfZXJyb3Jfc3RhdGUgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgb2xkX3BhcnNlcl9jb250X3N0YXRlIHN0YXRlIDogT2xkX3BhcnNlcl9jb250X3N0YXRlLnQgPVxuICBtYXRjaCBjb250ZXh0IHN0YXRlIHdpdGhcbiAgfCBTZXhwX2NvbW1lbnQgLT4gUGFyc2luZ19zZXhwX2NvbW1lbnRcbiAgfCBTZXhwIC0+XG4gICAgKG1hdGNoXG4gICAgICAgKCBBdXRvbWF0b25fdGFibGVzLm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzLihhdXRvbWF0b25fc3RhdGUgc3RhdGUpXG4gICAgICAgLCBoYXNfdW5jbG9zZWRfcGFyZW4gc3RhdGUgKVxuICAgICB3aXRoXG4gICAgIHwgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlLCB0cnVlIC0+IFBhcnNpbmdfbGlzdFxuICAgICB8IHMsIF8gLT4gcylcbjs7XG5cbmxldCByZWMgZmVlZF9zdWJzdHJpbmdfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayBpIHN0b3AgPVxuICBpZiBpIDwgc3RvcFxuICB0aGVuIChcbiAgICBsZXQgYyA9IFN0cmluZy51bnNhZmVfZ2V0IHN0ciBpIGluXG4gICAgbGV0IHN0YWNrID0gZmVlZCBzdGF0ZSBjIHN0YWNrIGluXG4gICAgZmVlZF9zdWJzdHJpbmdfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayAoaSArIDEpIHN0b3ApXG4gIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCByZWMgZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIGkgc3RvcCA9XG4gIGlmIGkgPCBzdG9wXG4gIHRoZW4gKFxuICAgIGxldCBjID0gQnl0ZXMudW5zYWZlX2dldCBzdHIgaSBpblxuICAgIGxldCBzdGFjayA9IGZlZWQgc3RhdGUgYyBzdGFjayBpblxuICAgIGZlZWRfc3ViYnl0ZXNfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayAoaSArIDEpIHN0b3ApXG4gIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCBmZWVkX3N1YnN0cmluZyBzdGF0ZSBzdHIgfnBvcyB+bGVuIHN0YWNrID1cbiAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zID4gc3RyX2xlbiAtIGxlbiB0aGVuIGludmFsaWRfYXJnIFwiUGFyc2V4cC5mZWVkX3N1YnN0cmluZ1wiO1xuICBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIHBvcyAocG9zICsgbGVuKVxuOztcblxubGV0IGZlZWRfc3ViYnl0ZXMgc3RhdGUgc3RyIH5wb3MgfmxlbiBzdGFjayA9XG4gIGxldCBzdHJfbGVuID0gQnl0ZXMubGVuZ3RoIHN0ciBpblxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zID4gc3RyX2xlbiAtIGxlbiB0aGVuIGludmFsaWRfYXJnIFwiUGFyc2V4cC5mZWVkX3N1YmJ5dGVzXCI7XG4gIGZlZWRfc3ViYnl0ZXNfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayBwb3MgKHBvcyArIGxlbilcbjs7XG5cbmxldCBmZWVkX3N0cmluZyBzdGF0ZSBzdHIgc3RhY2sgPVxuICBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuOztcblxubGV0IGZlZWRfYnl0ZXMgc3RhdGUgc3RyIHN0YWNrID0gZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIDAgKEJ5dGVzLmxlbmd0aCBzdHIpXG5cbmxldCBlbXB0eV9zdGFjayA6IHR5cGUgdSBzLiAodSwgcykgS2luZC50IC0+IHMgPSBmdW5jdGlvblxuICB8IFNleHAgLT4gU3RhY2suZW1wdHlcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IFN0YWNrLmVtcHR5XG4gIHwgUG9zaXRpb25zIC0+IFN0YWNrLkp1c3RfcG9zaXRpb25zLmVtcHR5XG4gIHwgQ3N0IC0+IFN0YWNrLkZvcl9jc3QuZW1wdHlcbjs7XG5cbmxldCBvZl9zdWJzdHJpbmcgKHR5cGUgdSBzKSAobW9kZSA6ICh1LCBzKSBNb2RlLnQpIChraW5kIDogKHUsIHMpIEtpbmQudCkgcyB+cG9zIH5sZW4gPVxuICBsZXQgc3RhdGUgPSBjcmVhdGUgbW9kZSBraW5kIGluXG4gIGxldCBzdGFjayA9IGZlZWRfc3Vic3RyaW5nIHN0YXRlIHMgfnBvcyB+bGVuIChlbXB0eV9zdGFjayBraW5kKSBpblxuICBzdGF0ZSwgc3RhY2tcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgeyB1c2VyX2V4biA6IGV4blxuICA7IHN1Yl9zZXhwIDogU2V4cC50XG4gIDsgbG9jYXRpb24gOiBQb3NpdGlvbnMucmFuZ2Ugb3B0aW9uXG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1biB7IHVzZXJfZXhuID0gdXNlcl9leG5fXzAwMl87IHN1Yl9zZXhwID0gc3ViX3NleHBfXzAwNF87IGxvY2F0aW9uID0gbG9jYXRpb25fXzAwNl8gfSAtPlxuICAgICBsZXQgYm5kc19fMDAxXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX29wdGlvbiBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NhdGlvbl9fMDA2XyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsb2NhdGlvblwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDFfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA1XyA9IFNleHAuc2V4cF9vZl90IHN1Yl9zZXhwX18wMDRfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInN1Yl9zZXhwXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDNfID0gc2V4cF9vZl9leG4gdXNlcl9leG5fXzAwMl8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidXNlcl9leG5cIjsgYXJnX18wMDNfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMV9cbiAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB1c2VyX2V4biB0ID0gdC51c2VyX2V4blxubGV0IHN1Yl9zZXhwIHQgPSB0LnN1Yl9zZXhwXG5sZXQgbG9jYXRpb24gdCA9IHQubG9jYXRpb25cblxubGV0IHJlcG9ydCBwcGYgfmZpbGVuYW1lIHQgPVxuICBsZXQgbGluZSwgc3RhcnQsIHN0b3AgPVxuICAgIG1hdGNoIHQubG9jYXRpb24gd2l0aFxuICAgIHwgTm9uZSAtPiAxLCAwLCAwXG4gICAgfCBTb21lIHsgc3RhcnRfcG9zOyBlbmRfcG9zIH0gLT5cbiAgICAgIHN0YXJ0X3Bvcy5saW5lLCBzdGFydF9wb3MuY29sLCBzdGFydF9wb3MuY29sICsgZW5kX3Bvcy5vZmZzZXQgLSBzdGFydF9wb3Mub2Zmc2V0XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmXG4gICAgcHBmXG4gICAgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XFxuXFxcbiAgICAgRXJyb3I6IHMtZXhwcmVzc2lvbiBjb252ZXJzaW9uIGVycm9yO1xcblxcXG4gICAgIGV4Y2VwdGlvbiAlc1xcblwiXG4gICAgZmlsZW5hbWVcbiAgICBsaW5lXG4gICAgc3RhcnRcbiAgICBzdG9wXG4gICAgKFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCB0LnVzZXJfZXhuKVxuOztcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3Igb2YgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE9mX3NleHBfZXJyb3JdIChmdW5jdGlvblxuICAgIHwgT2Zfc2V4cF9lcnJvciBhcmcwX18wMDhfIC0+XG4gICAgICBsZXQgcmVzMF9fMDA5XyA9IHNleHBfb2ZfdCBhcmcwX18wMDhfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJvZl9zZXhwX2Vycm9yLm1sLk9mX3NleHBfZXJyb3JcIjsgcmVzMF9fMDA5XyBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmxldCByYWlzZSB+dXNlcl9leG4gfnN1Yl9zZXhwIH5sb2NhdGlvbiA9XG4gIHJhaXNlIChPZl9zZXhwX2Vycm9yIHsgdXNlcl9leG47IHN1Yl9zZXhwOyBsb2NhdGlvbiB9KVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IFBhcnNlX2Vycm9yIG9mIFBhcnNlX2Vycm9yLnRcbiAgfCBPZl9zZXhwX2Vycm9yIG9mIE9mX3NleHBfZXJyb3IudFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IFBhcnNlX2Vycm9yIGFyZzBfXzAwMV8gLT5cbiAgICAgIGxldCByZXMwX18wMDJfID0gUGFyc2VfZXJyb3Iuc2V4cF9vZl90IGFyZzBfXzAwMV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNlX2Vycm9yXCI7IHJlczBfXzAwMl8gXVxuICAgIHwgT2Zfc2V4cF9lcnJvciBhcmcwX18wMDNfIC0+XG4gICAgICBsZXQgcmVzMF9fMDA0XyA9IE9mX3NleHBfZXJyb3Iuc2V4cF9vZl90IGFyZzBfXzAwM18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9mX3NleHBfZXJyb3JcIjsgcmVzMF9fMDA0XyBdXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IHJlcG9ydCBwcGYgfmZpbGVuYW1lIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBQYXJzZV9lcnJvciBlIC0+IFBhcnNlX2Vycm9yLnJlcG9ydCBwcGYgfmZpbGVuYW1lIGVcbiAgfCBPZl9zZXhwX2Vycm9yIGUgLT4gT2Zfc2V4cF9lcnJvci5yZXBvcnQgcHBmIH5maWxlbmFtZSBlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFBhcnNlcl9pbnRmXG5tb2R1bGUgQSA9IEF1dG9tYXRvblxuXG5sZXQga2luZF90b19zdGFja1xuICA6IHR5cGUgc3RhY2suXG4gICAgKCdzdGF0ZSwgc3RhY2spIEF1dG9tYXRvbl9zdGF0ZS5LaW5kLnQgLT4gKG1vZHVsZSBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICA9XG4gIGZ1biAodHlwZSBzdGF0ZSkgKGtpbmQgOiAoc3RhdGUsIHN0YWNrKSBBdXRvbWF0b25fc3RhdGUuS2luZC50KSAtPlxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBTZXhwIC0+IChtb2R1bGUgQXV0b21hdG9uX3N0YWNrIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcbiAgfCBQb3NpdGlvbnMgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2suSnVzdF9wb3NpdGlvbnMgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2sgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICB8IENzdCAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0IDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcbjs7XG5cbmxldCBtYWtlICh0eXBlIHN0YWNrIHN0YXRlIHBhcnNlZF92YWx1ZSkga2luZCBtb2RlIG1ha2VfdmFsdWVcbiAgOiAobW9kdWxlIFNcbiAgICAgIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWVcbiAgICAgICBhbmQgdHlwZSBTdGF0ZS50ID0gKHN0YXRlLCBzdGFjaykgQXV0b21hdG9uX3N0YXRlLnRcbiAgICAgICBhbmQgdHlwZSBTdGFjay50ID0gc3RhY2spXG4gID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWVcblxuICAgIG1vZHVsZSBTdGFjayA9ICh2YWwga2luZF90b19zdGFjayBraW5kIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcblxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gKHN0YXRlLCBTdGFjay50KSBBdXRvbWF0b25fc3RhdGUudFxuXG4gICAgICBsZXQgY3JlYXRlID9wb3MgKCkgPSBBLmNyZWF0ZSA/aW5pdGlhbF9wb3M6cG9zIG1vZGUga2luZFxuICAgICAgbGV0IHJlc2V0ID0gQS5yZXNldFxuICAgICAgbGV0IG9mZnNldCA9IEEub2Zmc2V0XG4gICAgICBsZXQgbGluZSA9IEEubGluZVxuICAgICAgbGV0IGNvbHVtbiA9IEEuY29sdW1uXG5cbiAgICAgIGxldCBwb3NpdGlvbiB0IDogUG9zaXRpb25zLnBvcyA9XG4gICAgICAgIHsgb2Zmc2V0ID0gb2Zmc2V0IHQ7IGxpbmUgPSBsaW5lIHQ7IGNvbCA9IGNvbHVtbiB0IH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdG9wIHN0YXRlID0gQS5zZXRfZXJyb3Jfc3RhdGUgc3RhdGVcbiAgICBlbmRcblxuICAgIGxldCBmZWVkID0gQS5mZWVkXG4gICAgbGV0IGZlZWRfZW9pIHN0YXRlIHN0YWNrID0gbWFrZV92YWx1ZSBzdGF0ZSAoQS5mZWVkX2VvaSBzdGF0ZSBzdGFjaylcbiAgICBsZXQgZmVlZF9zdWJzdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdWJzdHJpbmdcbiAgICBsZXQgZmVlZF9zdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdHJpbmdcbiAgICBsZXQgZmVlZF9zdWJieXRlcyA9IEF1dG9tYXRvbi5mZWVkX3N1YmJ5dGVzXG4gICAgbGV0IGZlZWRfYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9ieXRlc1xuXG4gICAgbGV0IHBhcnNlX3N0cmluZ19leG4gc3RyID1cbiAgICAgIGxldCBzdGF0ZSA9IFN0YXRlLmNyZWF0ZSAoKSBpblxuICAgICAgZmVlZF9lb2kgc3RhdGUgKGZlZWRfc3RyaW5nIHN0YXRlIHN0ciBTdGFjay5lbXB0eSlcbiAgICA7O1xuXG4gICAgbGV0IHBhcnNlX3N0cmluZyBzdHIgPVxuICAgICAgbWF0Y2ggcGFyc2Vfc3RyaW5nX2V4biBzdHIgd2l0aFxuICAgICAgfCB4IC0+IE9rIHhcbiAgICAgIHwgZXhjZXB0aW9uIFBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yIGUgLT4gRXJyb3IgZVxuICAgIDs7XG4gIGVuZClcbjs7XG5cbmxldCBtYWtlX2VhZ2VyICh0eXBlIHN0YWNrIHN0YXRlIHBhcnNlZF92YWx1ZSkga2luZCBtYWtlX3ZhbHVlXG4gIDogKG1vZHVsZSBTX2VhZ2VyXG4gICAgICB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlXG4gICAgICAgYW5kIHR5cGUgU3RhdGUudCA9IChzdGF0ZSwgc3RhY2spIEF1dG9tYXRvbl9zdGF0ZS50XG4gICAgICAgYW5kIHR5cGUgU3RhY2sudCA9IHN0YWNrKVxuICA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSBub25yZWMgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlXG5cbiAgICBtb2R1bGUgU3RhY2sgPSAodmFsIGtpbmRfdG9fc3RhY2sga2luZCA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG5cbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBSZWFkX29ubHkgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gKHN0YXRlLCBTdGFjay50KSBBdXRvbWF0b25fc3RhdGUudFxuXG4gICAgICAgIGxldCBvZmZzZXQgPSBBLm9mZnNldFxuICAgICAgICBsZXQgbGluZSA9IEEubGluZVxuICAgICAgICBsZXQgY29sdW1uID0gQS5jb2x1bW5cblxuICAgICAgICBsZXQgcG9zaXRpb24gdCA6IFBvc2l0aW9ucy5wb3MgPVxuICAgICAgICAgIHsgb2Zmc2V0ID0gb2Zmc2V0IHQ7IGxpbmUgPSBsaW5lIHQ7IGNvbCA9IGNvbHVtbiB0IH1cbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFJlYWRfb25seVxuXG4gICAgICBsZXQgY3JlYXRlID9wb3MgPyhub19zZXhwX2lzX2Vycm9yID0gZmFsc2UpIGYgPVxuICAgICAgICBsZXQgZ290X3NleHAgc3RhdGUgc3RhY2sgPVxuICAgICAgICAgIGxldCBwYXJzZWRfdmFsdWUgPSBtYWtlX3ZhbHVlIHN0YXRlIHN0YWNrIGluXG4gICAgICAgICAgZiBzdGF0ZSBwYXJzZWRfdmFsdWU7XG4gICAgICAgICAgU3RhY2suZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgQS5jcmVhdGUgP2luaXRpYWxfcG9zOnBvcyAoRWFnZXIgeyBnb3Rfc2V4cDsgbm9fc2V4cF9pc19lcnJvciB9KSBraW5kXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVzZXQgPSBBLnJlc2V0XG4gICAgICBsZXQgc3RvcCB0ID0gQS5zZXRfZXJyb3Jfc3RhdGUgdFxuICAgICAgbGV0IG9sZF9wYXJzZXJfY29udF9zdGF0ZSB0ID0gQXV0b21hdG9uLm9sZF9wYXJzZXJfY29udF9zdGF0ZSB0XG4gICAgZW5kXG5cbiAgICBsZXQgZmVlZCA9IEEuZmVlZFxuICAgIGxldCBmZWVkX2VvaSBzdGF0ZSBzdGFjayA9IGlnbm9yZSAoQS5mZWVkX2VvaSBzdGF0ZSBzdGFjayA6IFN0YWNrLnQpXG4gICAgbGV0IGZlZWRfc3Vic3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3Vic3RyaW5nXG4gICAgbGV0IGZlZWRfc3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3RyaW5nXG4gICAgbGV0IGZlZWRfc3ViYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9zdWJieXRlc1xuICAgIGxldCBmZWVkX2J5dGVzID0gQXV0b21hdG9uLmZlZWRfYnl0ZXNcblxuICAgIG1vZHVsZSBMZXhidWZfY29uc3VtZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFN0YXRlLnRcblxuICAgICAgZXhjZXB0aW9uIEdvdF9zZXhwIG9mIHBhcnNlZF92YWx1ZSAqIFBvc2l0aW9ucy5wb3NcblxuICAgICAgbGV0IGdvdF9zZXhwIHN0YXRlIHBhcnNlZF92YWx1ZSA9XG4gICAgICAgIHJhaXNlX25vdHJhY2UgKEdvdF9zZXhwIChwYXJzZWRfdmFsdWUsIFN0YXRlLnBvc2l0aW9uIHN0YXRlKSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSBTdGF0ZS5jcmVhdGUgZ290X3NleHBcblxuICAgICAgbGV0IHBvc19vZl9sZXhidWYgbGV4YnVmID1cbiAgICAgICAgbGV0IHAgPSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgaW5cbiAgICAgICAgeyBQb3NpdGlvbnMubGluZSA9IHAucG9zX2xudW07IGNvbCA9IHAucG9zX2NudW0gLSBwLnBvc19ib2w7IG9mZnNldCA9IHAucG9zX2NudW0gfVxuICAgICAgOztcblxuICAgICAgbGV0IHVwZGF0ZV9sZXhidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpIChwb3MgOiBQb3NpdGlvbnMucG9zKSA9XG4gICAgICAgIGxldCBwID0gcG9zLm9mZnNldCAtIGxleGJ1Zi5sZXhfYWJzX3BvcyBpblxuICAgICAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIHA7XG4gICAgICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIHA7XG4gICAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wXG4gICAgICAgIDwtIHsgbGV4YnVmLmxleF9jdXJyX3Agd2l0aFxuICAgICAgICAgICAgIHBvc19sbnVtID0gcG9zLmxpbmVcbiAgICAgICAgICAgOyBwb3NfY251bSA9IHBvcy5vZmZzZXRcbiAgICAgICAgICAgOyBwb3NfYm9sID0gcG9zLm9mZnNldCAtIHBvcy5jb2xcbiAgICAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBmZWVkX2xleGJ1ZiB0IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSBzdGFjayA9XG4gICAgICAgIGxldCBzdGFjayA9XG4gICAgICAgICAgZmVlZF9zdWJieXRlc1xuICAgICAgICAgICAgdFxuICAgICAgICAgICAgbGV4YnVmLmxleF9idWZmZXJcbiAgICAgICAgICAgIHN0YWNrXG4gICAgICAgICAgICB+cG9zOmxleGJ1Zi5sZXhfY3Vycl9wb3NcbiAgICAgICAgICAgIH5sZW46KGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfY3Vycl9wb3MpXG4gICAgICAgIGluXG4gICAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuO1xuICAgICAgICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW47XG4gICAgICAgIGlmIG5vdCBsZXhidWYubGV4X2VvZl9yZWFjaGVkXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxleGJ1Zi5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICAgICAgZmVlZF9sZXhidWYgdCBsZXhidWYgc3RhY2spXG4gICAgICAgIGVsc2UgZmVlZF9lb2kgdCBzdGFja1xuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX2dlbiB0IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgICAgIEEucmVzZXQgdCB+cG9zOihwb3Nfb2ZfbGV4YnVmIGxleGJ1Zik7XG4gICAgICAgIG1hdGNoIGZlZWRfbGV4YnVmIHQgbGV4YnVmIFN0YWNrLmVtcHR5IHdpdGhcbiAgICAgICAgfCAoKSAtPlxuICAgICAgICAgIHVwZGF0ZV9sZXhidWYgbGV4YnVmIChTdGF0ZS5wb3NpdGlvbiB0KTtcbiAgICAgICAgICBOb25lXG4gICAgICAgIHwgZXhjZXB0aW9uIEdvdF9zZXhwIChwYXJzZWRfdmFsdWUsIHBvcykgLT5cbiAgICAgICAgICB1cGRhdGVfbGV4YnVmIGxleGJ1ZiBwb3M7XG4gICAgICAgICAgU29tZSBwYXJzZWRfdmFsdWVcbiAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgdXBkYXRlX2xleGJ1ZiBsZXhidWYgKFN0YXRlLnBvc2l0aW9uIHQpO1xuICAgICAgICAgIHJhaXNlIGV4blxuICAgICAgOztcblxuICAgICAgbGV0IHNldF9ub19zZXhwX2lzX2Vycm9yIHQgeCA9XG4gICAgICAgIG1hdGNoIEEubW9kZSB0IHdpdGhcbiAgICAgICAgfCBFYWdlciBlIC0+IGUubm9fc2V4cF9pc19lcnJvciA8LSB4XG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZSB0IGxleGJ1ZiA9XG4gICAgICAgIHNldF9ub19zZXhwX2lzX2Vycm9yIHQgdHJ1ZTtcbiAgICAgICAgbWF0Y2ggcGFyc2VfZ2VuIHQgbGV4YnVmIHdpdGhcbiAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJQYXJzZXhwLnBhcnNlX2dlbjogTm9uZVwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2Vfb3B0IHQgbGV4YnVmID1cbiAgICAgICAgc2V0X25vX3NleHBfaXNfZXJyb3IgdCBmYWxzZTtcbiAgICAgICAgcGFyc2VfZ2VuIHQgbGV4YnVmXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmQpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbnZfaW50ZlxuXG5tb2R1bGUgTWFrZVxuICAgIChNb2RlIDogTW9kZSlcbiAgICAoU2V4cF9wYXJzZXIgOiBQYXJzZXIuUyB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gTW9kZS5wYXJzZWRfc2V4cClcbiAgICAoUG9zaXRpb25zX3BhcnNlciA6IFBhcnNlci5TIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBQb3NpdGlvbnMudCkgPVxuc3RydWN0XG4gIGxldCByZXJhaXNlIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgfnN1YiB1c2VyX2V4biA9XG4gICAgbGV0IGxvY2F0aW9uID0gTW9kZS5maW5kIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgfnN1YiBpblxuICAgIE9mX3NleHBfZXJyb3IucmFpc2UgfnVzZXJfZXhuIH5zdWJfc2V4cDpzdWIgfmxvY2F0aW9uXG4gIDs7XG5cbiAgbGV0IHBhcnNlX3N0cmluZ19leG4gc3RyIGYgPVxuICAgIGxldCBwYXJzZWRfdmFsdWUgPSBTZXhwX3BhcnNlci5wYXJzZV9zdHJpbmdfZXhuIHN0ciBpblxuICAgIG1hdGNoIE1vZGUuYXBwbHlfZiBwYXJzZWRfdmFsdWUgfmYgd2l0aFxuICAgIHwgeCAtPiB4XG4gICAgfCBleGNlcHRpb24gU2V4cC5PZl9zZXhwX2Vycm9yIChleG4sIHN1YikgLT5cbiAgICAgIGxldCBwb3NpdGlvbnMgPSBQb3NpdGlvbnNfcGFyc2VyLnBhcnNlX3N0cmluZ19leG4gc3RyIGluXG4gICAgICByZXJhaXNlIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgZXhuIH5zdWJcbiAgOztcblxuICBsZXQgcGFyc2Vfc3RyaW5nIHN0ciBmIDogKF8sIENvbnZfZXJyb3IudCkgcmVzdWx0ID1cbiAgICBtYXRjaCBwYXJzZV9zdHJpbmdfZXhuIHN0ciBmIHdpdGhcbiAgICB8IHggLT4gT2sgeFxuICAgIHwgZXhjZXB0aW9uIFBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yIGUgLT4gRXJyb3IgKFBhcnNlX2Vycm9yIGUpXG4gICAgfCBleGNlcHRpb24gT2Zfc2V4cF9lcnJvci5PZl9zZXhwX2Vycm9yIGUgLT4gRXJyb3IgKE9mX3NleHBfZXJyb3IgZSlcbiAgOztcblxuICBsZXQgY29udl9leG4gKHBhcnNlZF92YWx1ZSwgcG9zaXRpb25zKSBmID1cbiAgICBtYXRjaCBNb2RlLmFwcGx5X2YgcGFyc2VkX3ZhbHVlIH5mIHdpdGhcbiAgICB8IHggLT4geFxuICAgIHwgZXhjZXB0aW9uIFNleHAuT2Zfc2V4cF9lcnJvciAoZXhuLCBzdWIpIC0+IHJlcmFpc2UgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSBleG4gfnN1YlxuICA7O1xuXG4gIGxldCBjb252IHggZiA9XG4gICAgbWF0Y2ggY29udl9leG4geCBmIHdpdGhcbiAgICB8IHggLT4gT2sgeFxuICAgIHwgZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IuT2Zfc2V4cF9lcnJvciBlIC0+IEVycm9yIGVcbiAgOztcblxuICBsZXQgY29udl9jb21iaW5lIHJlc3VsdCBmIDogKF8sIENvbnZfZXJyb3IudCkgcmVzdWx0ID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoUGFyc2VfZXJyb3IgZSlcbiAgICB8IE9rIHggLT5cbiAgICAgIChtYXRjaCBjb252IHggZiB3aXRoXG4gICAgICAgfCBPayBfIGFzIHIgLT4gclxuICAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoT2Zfc2V4cF9lcnJvciBlKSlcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIENvbnYgPSBDb252LlNcbm1vZHVsZSB0eXBlIFBhcnNlciA9IFBhcnNlci5TXG5tb2R1bGUgdHlwZSBFYWdlcl9wYXJzZXIgPSBQYXJzZXIuU19lYWdlclxuXG5tb2R1bGUgQ29udl9lcnJvciA9IENvbnZfZXJyb3Jcbm1vZHVsZSBPZl9zZXhwX2Vycm9yID0gT2Zfc2V4cF9lcnJvclxubW9kdWxlIE9sZF9wYXJzZXJfY29udF9zdGF0ZSA9IE9sZF9wYXJzZXJfY29udF9zdGF0ZVxubW9kdWxlIFBhcnNlX2Vycm9yID0gUGFyc2VfZXJyb3Jcbm1vZHVsZSBQb3NpdGlvbnMgPSBQb3NpdGlvbnNcbm1vZHVsZSBDc3QgPSBDc3Rcbm1vZHVsZSBBID0gQXV0b21hdG9uXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciA9IFBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciA9IE9mX3NleHBfZXJyb3IuT2Zfc2V4cF9lcnJvclxuXG5sZXQgY29uc3QgYyBfID0gY1xuXG5tb2R1bGUgU2luZ2xlID0gKHZhbCBQYXJzZXIubWFrZSBTZXhwIFNpbmdsZSAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUpKVxubW9kdWxlIE1hbnkgPSAodmFsIFBhcnNlci5tYWtlIFNleHAgTWFueSAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9tYW55KSlcbm1vZHVsZSBFYWdlciA9ICh2YWwgUGFyc2VyLm1ha2VfZWFnZXIgU2V4cCAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUpKVxuXG5sZXQgYW5kX2dldF9wb3NpdGlvbnMgZ2V0X3NleHAgc3RhdGUgc3RhY2sgPSBnZXRfc2V4cCBzdGFjaywgQS5wb3NpdGlvbnMgc3RhdGVcblxubGV0IGFuZF9wb3NpdGlvbnMgbW9kZSBnZXRfc2V4cCA9XG4gIFBhcnNlci5tYWtlIFNleHBfd2l0aF9wb3NpdGlvbnMgbW9kZSAoYW5kX2dldF9wb3NpdGlvbnMgZ2V0X3NleHApXG47O1xuXG5tb2R1bGUgU2luZ2xlX2FuZF9wb3NpdGlvbnMgPSAodmFsIGFuZF9wb3NpdGlvbnMgU2luZ2xlIEF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlKVxubW9kdWxlIE1hbnlfYW5kX3Bvc2l0aW9ucyA9ICh2YWwgYW5kX3Bvc2l0aW9ucyBNYW55IEF1dG9tYXRvbl9zdGFjay5nZXRfbWFueSlcblxubW9kdWxlIEVhZ2VyX2FuZF9wb3NpdGlvbnMgPVxuICAodmFsIFBhcnNlci5tYWtlX2VhZ2VyXG4gICAgICAgICBTZXhwX3dpdGhfcG9zaXRpb25zXG4gICAgICAgICAoQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUgfD4gYW5kX2dldF9wb3NpdGlvbnMpKVxuXG5sZXQganVzdF9nZXRfcG9zaXRpb25zIHN0YXRlICgpID0gQS5wb3NpdGlvbnMgc3RhdGVcbmxldCBqdXN0X3Bvc2l0aW9ucyBtb2RlID0gUGFyc2VyLm1ha2UgUG9zaXRpb25zIG1vZGUganVzdF9nZXRfcG9zaXRpb25zXG5cbm1vZHVsZSBTaW5nbGVfanVzdF9wb3NpdGlvbnMgPSAodmFsIGp1c3RfcG9zaXRpb25zIFNpbmdsZSlcbm1vZHVsZSBNYW55X2p1c3RfcG9zaXRpb25zID0gKHZhbCBqdXN0X3Bvc2l0aW9ucyBNYW55KVxubW9kdWxlIEVhZ2VyX2p1c3RfcG9zaXRpb25zID0gKHZhbCBQYXJzZXIubWFrZV9lYWdlciBQb3NpdGlvbnMganVzdF9nZXRfcG9zaXRpb25zKVxuXG5sZXQgY3N0IG1vZGUgZiA9IFBhcnNlci5tYWtlIENzdCBtb2RlIChjb25zdCBmKVxuXG5tb2R1bGUgTWFueV9jc3QgPSAodmFsIGNzdCBNYW55IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55KVxuXG5tb2R1bGUgRWFnZXJfY3N0ID1cbiAgKHZhbCBQYXJzZXIubWFrZV9lYWdlciBDc3QgKGZ1biBfIHN0YWNrIC0+XG4gICAgIG1hdGNoIEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55IHN0YWNrIHdpdGhcbiAgICAgfCBbIHNleHAgXSAtPiBzZXhwXG4gICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuXG50eXBlICdhIGlkID0gJ2FcbnR5cGUgc2V4cF9saXN0ID0gU2V4cC50IGxpc3RcblxubW9kdWxlIENvbnZfc2luZ2xlID1cbiAgQ29udi5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXMgPSAnYVxuICAgICAgdHlwZSBwYXJzZWRfc2V4cCA9IFNleHAudFxuICAgICAgdHlwZSBjaHVua190b19jb252ID0gU2V4cC50XG5cbiAgICAgIGxldCBhcHBseV9mIHggfmYgPSBmIHhcbiAgICAgIGxldCBmaW5kID0gUG9zaXRpb25zLmZpbmRfc3ViX3NleHBfcGh5c1xuICAgIGVuZClcbiAgICAoU2luZ2xlKVxuICAgIChTaW5nbGVfanVzdF9wb3NpdGlvbnMpXG5cbm1vZHVsZSBDb252X21hbnkgPVxuICBDb252Lk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcyA9ICdhIGxpc3RcbiAgICAgIHR5cGUgcGFyc2VkX3NleHAgPSBTZXhwLnQgbGlzdFxuICAgICAgdHlwZSBjaHVua190b19jb252ID0gU2V4cC50XG5cbiAgICAgIGxldCBhcHBseV9mIHggfmYgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHggfmYpXG4gICAgICBsZXQgZmluZCA9IFBvc2l0aW9ucy5maW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5c1xuICAgIGVuZClcbiAgICAoTWFueSlcbiAgICAoTWFueV9qdXN0X3Bvc2l0aW9ucylcblxubW9kdWxlIENvbnZfbWFueV9hdF9vbmNlID1cbiAgQ29udi5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXMgPSAnYVxuICAgICAgdHlwZSBwYXJzZWRfc2V4cCA9IFNleHAudCBsaXN0XG4gICAgICB0eXBlIGNodW5rX3RvX2NvbnYgPSBTZXhwLnQgbGlzdFxuXG4gICAgICBsZXQgYXBwbHlfZiB4IH5mID0gZiB4XG4gICAgICBsZXQgZmluZCA9IFBvc2l0aW9ucy5maW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5c1xuICAgIGVuZClcbiAgICAoTWFueSlcbiAgICAoTWFueV9qdXN0X3Bvc2l0aW9ucylcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEF1dG9tYXRvbiA9IEF1dG9tYXRvblxuICBtb2R1bGUgQXV0b21hdG9uX3N0YWNrID0gQXV0b21hdG9uX3N0YWNrXG4gIG1vZHVsZSBBdXRvbWF0b25fc3RhdGUgPSBBdXRvbWF0b25fc3RhdGVcbiAgbW9kdWxlIFBvc2l0aW9ucyA9IFBvc2l0aW9uc1xuZW5kXG4iLCIoKiBmb3IgbGV4aW5nIHBvc2l0aW9uczpcbiAgIC0gbG51bSBzdGFydHMgZnJvbSAxXG4gICAtIGNudW0gc3RhcnRzIGZyb20gMFxuICAgLSBwb3NfYm9sIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBsaW5lXG5cbiAgIGZvciBhYnNvbHV0ZSBwb3M6XG4gICAtIHJvdyBzdGFydHMgZnJvbSAxXG4gICAtIGNvbCBzdGFydHMgZnJvbSAxXG5cbiAgIGZvciByZWxhdGl2ZSBwb3MsIG9idmlvdXNseSAwIG1lYW5zIHNhbWUgcG9zaXRpb25cbiopXG5cbigqIG9wZXJhdGlvbnMgdGhhdCBtYWtlIHNlbnNlIGZvciBib3RoIGFic29sdXRlIGFuZCByZWxhdGl2ZSBwb3NpdGlvbnMgKilcbm1vZHVsZSBQb3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHJvdyA6IGludFxuICAgIDsgY29sIDogaW50XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgeyByb3c7IGNvbCB9ID0gVHlwZS5BdG9tIChQcmludGYuc3ByaW50ZiBcIiVkOiVkXCIgcm93IGNvbClcbiAgbGV0IGFkZCB0MSB0MiA9IHsgcm93ID0gdDEucm93ICsgdDIucm93OyBjb2wgPSB0MS5jb2wgKyB0Mi5jb2wgfVxuICBsZXQgc3ViIHQxIHQyID0geyByb3cgPSB0MS5yb3cgLSB0Mi5yb3c7IGNvbCA9IHQxLmNvbCAtIHQyLmNvbCB9XG5cbiAgbGV0IGNvbXBhcmUgeyByb3cgPSByMTsgY29sID0gYzEgfSB7IHJvdyA9IHIyOyBjb2wgPSBjMiB9ID1cbiAgICBpZiByMSA9IHIyIHRoZW4gYzEgLSBjMiBlbHNlIHIxIC0gcjJcbiAgOztcblxuICBsZXQgZ2VxIHQxIHQyID0gY29tcGFyZSB0MSB0MiA+PSAwXG5lbmRcblxubW9kdWxlIFJlbGF0aXZlID0gc3RydWN0XG4gIGluY2x1ZGUgUG9zXG5cbiAgbGV0IHplcm8gPSB7IHJvdyA9IDA7IGNvbCA9IDAgfVxuZW5kXG5cbm1vZHVsZSBBYnNvbHV0ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFBvc1xuXG4gIGxldCBvcmlnaW4gPSB7IHJvdyA9IDE7IGNvbCA9IDEgfVxuXG4gIGxldCBvZl9sZXhpbmcgeyBMZXhpbmcucG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sOyBwb3NfZm5hbWUgPSBfIH0gPVxuICAgIHsgcm93ID0gcG9zX2xudW07IGNvbCA9IHBvc19jbnVtIC0gcG9zX2JvbCArIDEgfVxuICA7O1xuXG4gIGxldCBkaWZmID0gc3ViXG5lbmRcbiIsIigqKiBUeXBlIG9mIGFubm90YXRlZCBTLWV4cHJlc3Npb25zICopXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBtYXAgdCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgZiB0KVxuZW5kXG5cbm1vZHVsZSBNYWtlIChQb3MgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFR5cGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICgqKiBJbiBbQXRvbSAoXywgcywgb3B0KV0sIFtzXSBpcyB0aGUgdW5lc2NhcGVkIHN0cmluZywgdGhhdCBpcyB0aGUgYXJndW1lbnQgb2ZcbiAgICAgICAgW1R5cGUuQXRvbV0uIFdoZW4gW29wdF0gaXMgZGVmaW5lZCwgaXQgaXMgdGhlIHNvdXJjZSBzeW50YXggb2YgW3NdLCB0aGF0IGlzIGFcbiAgICAgICAgc3RyaW5nIHRoYXQgY2FuIGJlIHByaW50ZWQgYXMgaXMgaWYgb25lIHdhbnRzIHRvIHBhcnNlIGFuZCBwcmludCBwcmVzZXJ2aW5nXG4gICAgICAgIHN5bnRheC4gVGhpcyBpcyB1c3VhbGx5IHNldCBmb3IgcXVvdGVkIGF0b21zICh0byBwcmVzZXJ2ZSB0aGUgZmFjdCB0aGF0IHdlcmVcbiAgICAgICAgcXVvdGVkKSwgYnV0IGl0IGNhbiBiZSB1c2VmdWwgdG8gZG8gdGhlIHJldmVyc2U6IHNldCBpdCBmb3IgYXRvbXMgdGhhdCBjYW4gYmVcbiAgICAgICAgcGFyc2VkIHVucXVvdGVkIGJ1dCB3b3VsZCBiZSBwcmludGVkIHdpdGggcXVvdGVzLCB0byBwcmVzZXJ2ZSB0aGUgbGFjayBvZiBxdW90ZXMuXG4gICAgICAgIEZvciBpbnN0YW5jZTpcbiAgICAgICAgQXRvbSAoXywgXCJhXCIsIE5vbmUpIHNob3VsZCBiZSBwcmludGVkIHt8YXx9XG4gICAgICAgIEF0b20gKF8sIFwiYSBiXCIsIE5vbmUpIHNob3VsZCBiZSBwcmludGVkIHt8XCJhIGJcInx9XG4gICAgICAgIEF0b20gKF8sIFwiYVwiLCBTb21lIFwiXFxcImFcXFwiXCIpIHNob3VsZCBiZSBwcmludGVkIHt8XCJhXCJ8fVxuICAgICAgICBBdG9tIChfLCBcImEgYlwiLCBTb21lIFwiYSBiXCIpIHNob3VsZCBiZSBwcmludGVkIHt8YSBifH0gb3IgbWF5IHJhaXNlLCBhcyBpdCBpc1xuICAgICAgICBhbiBlcnJvciB0byBjb25zdHJ1Y3RlZCBzdWNoIGFuIGF0b20gKGRvZXNuJ3QgcGFyc2UgYmFjaykgKilcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBdG9tIG9mIFBvcy50ICogc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICAgfCBMaXN0IG9mIFBvcy50ICogdF9vcl9jb21tZW50IGxpc3QgKiBQb3MudFxuXG4gICAgKCogcG9zaXRpb25zIG9mIGxlZnQgYW5kIHJpZ2h0IHBhcmVucyAqKVxuICAgIGFuZCB0X29yX2NvbW1lbnQgPVxuICAgICAgfCBTZXhwIG9mIHRcbiAgICAgIHwgQ29tbWVudCBvZiBjb21tZW50XG5cbiAgICBhbmQgY29tbWVudCA9XG4gICAgICB8IFBsYWluX2NvbW1lbnQgb2YgUG9zLnQgKiBzdHJpbmdcbiAgICAgIHwgU2V4cF9jb21tZW50IG9mIFBvcy50ICogY29tbWVudCBsaXN0ICogdFxuICBlbmRcblxuICBpbmNsdWRlIFRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBUXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBUeXBlLnRcbiAgICB2YWwgc2V4cF9vZl9jb21tZW50IDogY29tbWVudCAtPiBUeXBlLnRcbiAgICB2YWwgc2V4cF9vZl90X29yX2NvbW1lbnQgOiB0X29yX2NvbW1lbnQgLT4gVHlwZS50XG4gIGVuZFxuXG4gIG1vZHVsZSBUb19zZXhwIDogc2lnXG4gICAgdmFsIG9mX3QgOiB0IC0+IFR5cGUudFxuICAgIHZhbCBvZl9jb21tZW50IDogY29tbWVudCAtPiBUeXBlLnRcbiAgICB2YWwgb2ZfdF9vcl9jb21tZW50IDogdF9vcl9jb21tZW50IC0+IFR5cGUudFxuICBlbmQgPSBzdHJ1Y3RcbiAgICAoKiBtYXliZSB3ZSBjYW4gYWN0dWFsbHkgdXNlIGNvbnYgaGVyZSwgaW5zdGVhZCBvZiBpbmxpbmluZyBpdCAqKVxuXG4gICAgbGV0IG9mX3BvcyA9IFBvcy5zZXhwX29mX3RcbiAgICBsZXQgb2Zfc3RyaW5nIHggPSBUeXBlLkF0b20geFxuICAgIGxldCBvZl9saXN0IG9mX2EgeHMgPSBUeXBlLkxpc3QgKExpc3QubWFwIH5mOm9mX2EgeHMpXG5cbiAgICBsZXQgb2Zfb3B0aW9uIG9mX2EgPSBmdW5jdGlvblxuICAgICAgfCBTb21lIHggLT4gVHlwZS5MaXN0IFsgb2ZfYSB4IF1cbiAgICAgIHwgTm9uZSAtPiBUeXBlLkxpc3QgW11cbiAgICA7O1xuXG4gICAgbGV0IHJlYyBvZl90ID0gZnVuY3Rpb25cbiAgICAgIHwgQXRvbSAodjEsIHYyLCB2MykgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiQXRvbVwiOyBvZl9wb3MgdjE7IG9mX3N0cmluZyB2Mjsgb2Zfb3B0aW9uIG9mX3N0cmluZyB2MyBdXG4gICAgICB8IExpc3QgKHYxLCB2MiwgdjMpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIkxpc3RcIjsgb2ZfcG9zIHYxOyBvZl9saXN0IG9mX3Rfb3JfY29tbWVudCB2Mjsgb2ZfcG9zIHYzIF1cblxuICAgIGFuZCBvZl90X29yX2NvbW1lbnQgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwIHQgLT4gVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiU2V4cFwiOyBvZl90IHQgXVxuICAgICAgfCBDb21tZW50IGMgLT4gVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiQ29tbWVudFwiOyBvZl9jb21tZW50IGMgXVxuXG4gICAgYW5kIG9mX2NvbW1lbnQgPSBmdW5jdGlvblxuICAgICAgfCBQbGFpbl9jb21tZW50ICh2MSwgdjIpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIlBsYWluX2NvbW1lbnRcIjsgb2ZfcG9zIHYxOyBvZl9zdHJpbmcgdjIgXVxuICAgICAgfCBTZXhwX2NvbW1lbnQgKHYxLCB2MiwgdjMpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIlNleHBfY29tbWVudFwiOyBvZl9wb3MgdjE7IG9mX2xpc3Qgb2ZfY29tbWVudCB2Mjsgb2ZfdCB2MyBdXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFRvX3NleHAub2ZfdFxuICBsZXQgc2V4cF9vZl9jb21tZW50ID0gVG9fc2V4cC5vZl9jb21tZW50XG4gIGxldCBzZXhwX29mX3Rfb3JfY29tbWVudCA9IFRvX3NleHAub2ZfdF9vcl9jb21tZW50XG5lbmRcblxuaW5jbHVkZSBNYWtlIChTcmNfcG9zLlJlbGF0aXZlKVxubW9kdWxlIFBhcnNlZCA9IE1ha2UgKFNyY19wb3MuQWJzb2x1dGUpXG5cbmxldCByZWxhdGl2aXplID1cbiAgbGV0IHJlbCB+b3V0ZXJfcCBwID0gU3JjX3Bvcy5BYnNvbHV0ZS5kaWZmIHAgb3V0ZXJfcCBpblxuICBsZXQgcmVjIGF1eF90IH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5BdG9tIChwb3MsIHMsIHNvcHQpIC0+IEF0b20gKHJlbCBwb3Mgfm91dGVyX3AsIHMsIHNvcHQpXG4gICAgfCBQYXJzZWQuTGlzdCAoc3RhcnRfcG9zLCB0b2NzLCBlbmRfcG9zKSAtPlxuICAgICAgTGlzdFxuICAgICAgICAoIHJlbCBzdGFydF9wb3Mgfm91dGVyX3BcbiAgICAgICAgLCBMaXN0Lm1hcCB0b2NzIH5mOihmdW4gdG9jIC0+IGF1eF90b2Mgfm91dGVyX3A6c3RhcnRfcG9zIHRvYylcbiAgICAgICAgLCByZWwgZW5kX3BvcyB+b3V0ZXJfcCApXG4gIGFuZCBhdXhfdG9jIH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5TZXhwIHQgLT4gU2V4cCAoYXV4X3QgdCB+b3V0ZXJfcClcbiAgICB8IFBhcnNlZC5Db21tZW50IGMgLT4gQ29tbWVudCAoYXV4X2MgYyB+b3V0ZXJfcClcbiAgYW5kIGF1eF9jIH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5QbGFpbl9jb21tZW50IChwb3MsIHR4dCkgLT4gUGxhaW5fY29tbWVudCAocmVsIHBvcyB+b3V0ZXJfcCwgdHh0KVxuICAgIHwgUGFyc2VkLlNleHBfY29tbWVudCAocG9zLCBjcywgdCkgLT5cbiAgICAgIFNleHBfY29tbWVudFxuICAgICAgICAocmVsIHBvcyB+b3V0ZXJfcCwgTGlzdC5tYXAgY3MgfmY6KGZ1biBjIC0+IGF1eF9jIH5vdXRlcl9wIGMpLCBhdXhfdCB0IH5vdXRlcl9wKVxuICBpblxuICBmdW4gdG9jIC0+IGF1eF90b2MgdG9jIH5vdXRlcl9wOlNyY19wb3MuQWJzb2x1dGUub3JpZ2luXG47O1xuIiwidHlwZSB0b2tlbiA9XG4gIHwgU1RSSU5HIG9mIChcbiMgMTUgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgIHN0cmluZ1xuIyA2IFwic3JjL3BhcnNlci5tbFwiXG4pXG4gIHwgTFBBUkVOXG4gIHwgUlBBUkVOXG4gIHwgRU9GXG4gIHwgSEFTSF9TRU1JXG5cbm9wZW4gUGFyc2luZ1xubGV0IF8gPSBwYXJzZV9lcnJvcjs7XG4jIDIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICgqIFBhcnNlcjogR3JhbW1hciBTcGVjaWZpY2F0aW9uIGZvciBQYXJzaW5nIFMtZXhwcmVzc2lvbnMgKilcblxuICBvcGVuIExleGluZ1xuXG4gIGxldCBwYXJzZV9mYWlsdXJlIHdoYXQgPVxuICAgIGxldCBwb3MgPSBQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkgaW5cbiAgICBsZXQgbXNnID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiU2V4cGxpYi5QYXJzZXI6IGZhaWxlZCB0byBwYXJzZSBsaW5lICVkIGNoYXIgJWQ6ICVzXCJcbiAgICAgICAgcG9zLnBvc19sbnVtIChwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbCkgd2hhdCBpblxuICAgIGZhaWx3aXRoIG1zZ1xuXG4jIDI3IFwic3JjL3BhcnNlci5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAyNTggKCogTFBBUkVOICopO1xuICAyNTkgKCogUlBBUkVOICopO1xuICAgIDAgKCogRU9GICopO1xuICAyNjAgKCogSEFTSF9TRU1JICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAyNTcgKCogU1RSSU5HICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlsZW4gPSBcIlxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcIlxuXG5sZXQgeXlkZWZyZWQgPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDA5XFwwMDBcXDAxM1xcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDIyXFwwMDBcXDAyNVxcMDAwXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMjBcXDAwMFxcMDI2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwMVxcMDAwXFwwMTBcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMTJcXDAwMFxcMDIxXFwwMDBcXDAxN1xcMDAwXFwwMThcXDAwMFxcMDE5XFwwMDBcXDAwNVxcMDAwXFwwMDhcXDAwMFwiXG5cbmxldCB5eWRnb3RvID0gXCJcXDAwNVxcMDAwXFxcblxcMDEwXFwwMDBcXDAxNVxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxMVxcMDAwXFwwMjBcXDAwMFxcMDIxXFwwMDBcXDAxM1xcMDAwXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDA0MFxcMDAwXFxcblxcMDM0XFwyNTVcXDAwMVxcMDAwXFwwMDZcXDAwMFxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1OFxcMjU1XFxcblxcMDM0XFwyNTVcXDAwMFxcMDAwXFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwNjNcXDI1NVxcMDM0XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlyaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWdpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTRcXDI1NVxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMjlcXDAwMFwiXG5cbmxldCB5eXRhYmxlc2l6ZSA9IDI4NlxubGV0IHl5dGFibGUgPSBcIlxcMDE2XFwwMDBcXFxuXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjVcXDAwMFxcMDAwXFwwMDBcXDAyM1xcMDAwXFwwMjlcXDAwMFxcMDI3XFwwMDBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM3XFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwMzlcXDAwMFxcMDIyXFwwMDBcXFxuXFwwMjJcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDIyXFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNlxcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXFxuXFwwMzFcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDI2XFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDhcXDAwMFxcMDM4XFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXCJcblxubGV0IHl5Y2hlY2sgPSBcIlxcMDAyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA4XFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXFxuXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXDAyN1xcMDAwXFwwMjhcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDA4XFwwMDBcXDAwNFxcMDAxXFwyNTVcXDI1NVxcMDExXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDIxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXFxuXFwwMjhcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXCJcblxubGV0IHl5bmFtZXNfY29uc3QgPSBcIlxcXG4gIExQQVJFTlxcMDAwXFxcbiAgUlBBUkVOXFwwMDBcXFxuICBFT0ZcXDAwMFxcXG4gIEhBU0hfU0VNSVxcMDAwXFxcbiAgXCJcblxubGV0IHl5bmFtZXNfYmxvY2sgPSBcIlxcXG4gIFNUUklOR1xcMDAwXFxcbiAgXCJcblxubGV0IHl5YWN0ID0gW3xcbiAgKGZ1biBfIC0+IGZhaWx3aXRoIFwicGFyc2VyXCIpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzMiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgKVxuIyAxNzQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDE4MSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICggVHlwZS5BdG9tIF8xIClcbiMgMTg4IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICggVHlwZS5MaXN0IFtdIClcbiMgMTk0IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzggXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVHlwZS5MaXN0IChMaXN0LnJldiBfMikgKVxuIyAyMDEgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM5IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICggcGFyc2VfZmFpbHVyZSBcInNleHBcIiApXG4jIDIwNyBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMTQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0MyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMjIgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMjkgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudHMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzZXhwX2NvbW1lbnRzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjM3IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2NvbW1lbnRzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTAgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgXzEgKVxuIyAyNDQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTb21lIF8yIClcbiMgMjUyIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDUyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAoIE5vbmUgKVxuIyAyNTggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTm9uZSApXG4jIDI2NSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIFtfMV0gKVxuIyAyNzIgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAoIFtdIClcbiMgMjc5IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU4IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8yIDo6IF8xIClcbiMgMjg3IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTkgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI5NSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAzMDIgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDYzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAoIFtdIClcbiMgMzA4IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBMaXN0LnJldiBfMSApXG4jIDMxNSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjcgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggW10gKVxuIyAzMjEgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuKCogRW50cnkgc2V4cCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwX29wdCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSByZXZfc2V4cHMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxufF1cbmxldCB5eXRhYmxlcyA9XG4gIHsgUGFyc2luZy5hY3Rpb25zPXl5YWN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2NvbnN0PXl5dHJhbnNsX2NvbnN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2Jsb2NrPXl5dHJhbnNsX2Jsb2NrO1xuICAgIFBhcnNpbmcubGhzPXl5bGhzO1xuICAgIFBhcnNpbmcubGVuPXl5bGVuO1xuICAgIFBhcnNpbmcuZGVmcmVkPXl5ZGVmcmVkO1xuICAgIFBhcnNpbmcuZGdvdG89eXlkZ290bztcbiAgICBQYXJzaW5nLnNpbmRleD15eXNpbmRleDtcbiAgICBQYXJzaW5nLnJpbmRleD15eXJpbmRleDtcbiAgICBQYXJzaW5nLmdpbmRleD15eWdpbmRleDtcbiAgICBQYXJzaW5nLnRhYmxlc2l6ZT15eXRhYmxlc2l6ZTtcbiAgICBQYXJzaW5nLnRhYmxlPXl5dGFibGU7XG4gICAgUGFyc2luZy5jaGVjaz15eWNoZWNrO1xuICAgIFBhcnNpbmcuZXJyb3JfZnVuY3Rpb249cGFyc2VfZXJyb3I7XG4gICAgUGFyc2luZy5uYW1lc19jb25zdD15eW5hbWVzX2NvbnN0O1xuICAgIFBhcnNpbmcubmFtZXNfYmxvY2s9eXluYW1lc19ibG9jayB9XG5sZXQgc2V4cCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMSBsZXhmdW4gbGV4YnVmIDogVHlwZS50KVxubGV0IHNleHBfb3B0IChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAyIGxleGZ1biBsZXhidWYgOiBUeXBlLnQgb3B0aW9uKVxubGV0IHNleHBzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAzIGxleGZ1biBsZXhidWYgOiBUeXBlLnQgbGlzdClcbmxldCByZXZfc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDQgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBsaXN0KVxuIiwidHlwZSB0b2tlbiA9XG4gIHwgU1RSSU5HIG9mIChcbiMgNTMgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgIHN0cmluZyAqIChMZXhpbmcucG9zaXRpb24gKiBzdHJpbmcpIG9wdGlvblxuIyA2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4pXG4gIHwgQ09NTUVOVCBvZiAoXG4jIDU0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICBzdHJpbmcgKiBMZXhpbmcucG9zaXRpb24gb3B0aW9uXG4jIDExIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4pXG4gIHwgTFBBUkVOXG4gIHwgUlBBUkVOXG4gIHwgRU9GXG4gIHwgSEFTSF9TRU1JXG5cbm9wZW4gUGFyc2luZ1xubGV0IF8gPSBwYXJzZV9lcnJvcjs7XG4jIDIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICgqIFBhcnNlcjogR3JhbW1hciBTcGVjaWZpY2F0aW9uIGZvciBQYXJzaW5nIFMtZXhwcmVzc2lvbnMgKilcbiAgKCogY29tcGFyZSB0byBwYXJzZXIubWx5ICopXG5cbiAgb3BlbiBMZXhpbmdcblxuICBsZXQgcGFyc2VfZmFpbHVyZSB3aGF0ID1cbiAgICBsZXQgcG9zID0gUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpIGluXG4gICAgbGV0IG1zZyA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIlNleHBsaWIuUGFyc2VyOiBmYWlsZWQgdG8gcGFyc2UgbGluZSAlZCBjaGFyICVkOiAlc1wiXG4gICAgICAgIHBvcy5wb3NfbG51bSAocG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpIHdoYXQgaW5cbiAgICBmYWlsd2l0aCBtc2dcblxuICBtb2R1bGUgV2l0aF9wb3MgPSBzdHJ1Y3RcblxuICAgIG9wZW4gVHlwZV93aXRoX2xheW91dC5QYXJzZWRcblxuICAgIGxldCBjb2VyY2UgPSBTcmNfcG9zLkFic29sdXRlLm9mX2xleGluZ1xuXG4gICAgbGV0IHN0YXJ0X3BvcyAoKSA9IGNvZXJjZSAoUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpKVxuXG4gICAgbGV0IGVuZF9wb3MgKCkgPVxuICAgICAgbGV0IHAgPSBQYXJzaW5nLnN5bWJvbF9lbmRfcG9zICgpIGluXG4gICAgICBjb2VyY2UgeyBwIHdpdGggTGV4aW5nLnBvc19jbnVtID0gcC5MZXhpbmcucG9zX2NudW0gLSAxIH1cblxuICAgIGxldCBhdG9tICh4LCB5KSA9XG4gICAgICBsZXQgKHBvcywgeSkgPVxuICAgICAgICBtYXRjaCB5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChzdGFydF9wb3MgKCksIFNvbWUgeClcbiAgICAgICAgfCBTb21lIChwb3MsIHgpIC0+IChjb2VyY2UgcG9zLCBTb21lIHgpXG4gICAgICBpblxuICAgICAgQXRvbSAocG9zLCB4LCB5KVxuXG4gICAgbGV0IGxpc3QgdHMgPSBMaXN0IChzdGFydF9wb3MgKCksIHRzLCBlbmRfcG9zICgpKVxuXG4gICAgbGV0IHNleHAgICAgeCA9IFNleHAgICAgeFxuICAgIGxldCBjb21tZW50IHggPSBDb21tZW50IHhcblxuICAgIGxldCBzZXhwX2NvbW1lbnQgY3MgdCA9IFNleHBfY29tbWVudCAoc3RhcnRfcG9zICgpLCBjcywgdClcblxuICAgIGxldCBwbGFpbl9jb21tZW50ICh4LCBwb3Nfb3B0KSA9XG4gICAgICBsZXQgcG9zID1cbiAgICAgICAgbWF0Y2ggcG9zX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzdGFydF9wb3MgKClcbiAgICAgICAgfCBTb21lIHBvcyAtPiBjb2VyY2UgcG9zXG4gICAgICBpblxuICAgICAgUGxhaW5fY29tbWVudCAocG9zLCB4KVxuXG4gIGVuZFxuXG4jIDcwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAyNTkgKCogTFBBUkVOICopO1xuICAyNjAgKCogUlBBUkVOICopO1xuICAgIDAgKCogRU9GICopO1xuICAyNjEgKCogSEFTSF9TRU1JICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAyNTcgKCogU1RSSU5HICopO1xuICAyNTggKCogQ09NTUVOVCAqKTtcbiAgICAwfF1cblxubGV0IHl5bGhzID0gXCJcXDI1NVxcMjU1XFxcblxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFxcblxcMDEwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcblxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5bGVuID0gXCJcXDAwMlxcMDAwXFxcblxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXCJcblxubGV0IHl5ZGVmcmVkID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDA0XFwwMDBcXDAxMFxcMDAwXFwwMDZcXDAwMFxcMDIyXFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEyXFwwMDBcXDAxNFxcMDAwXFxcblxcMDEzXFwwMDBcXDAyM1xcMDAwXFwwMjBcXDAwMFxcMDE1XFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDE2XFwwMDBcXDAyMVxcMDAwXFxcblxcMDExXFwwMDBcXDAxN1xcMDAwXFwwMDJcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA2XFwwMDBcXFxuXFwwMjBcXDAwMFxcMDE4XFwwMDBcXDAyMVxcMDAwXFwwMjNcXDAwMFxcMDI2XFwwMDBcXDAxM1xcMDAwXFwwMjRcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMjlcXDAwMFxcMDE1XFwwMDBcXDAyMlxcMDAwXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDAzN1xcMDAwXFxcblxcMDA5XFwyNTVcXDAwMVxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAyNVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwyNTVcXDAwOVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5cmluZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjdcXDI1NVxcMjUxXFwyNTVcXDIzNVxcMjU1XFxcblxcMDAwXFwwMDBcXDIzNFxcMjU1XFwwMTBcXDAwMFwiXG5cbmxldCB5eXRhYmxlc2l6ZSA9IDI5MlxubGV0IHl5dGFibGUgPSBcIlxcMDM2XFwwMDBcXFxuXFwwMTZcXDAwMFxcMDMzXFwwMDBcXDAxMlxcMDAwXFwwMTdcXDAwMFxcMDI4XFwwMDBcXDAzM1xcMDAwXFwwMTlcXDAwMFxcMDM3XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDI1XFwwMDBcXDAxMVxcMDAwXFwwMjdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMzJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMzVcXDAwMFxcMDExXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFwiXG5cbmxldCB5eWNoZWNrID0gXCJcXDAyOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAyNFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAxMFxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDAyOVxcMDAwXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDVcXDAwMVxcMDA1XFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcblxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDA0XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFxcblxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgTFBBUkVOXFwwMDBcXFxuICBSUEFSRU5cXDAwMFxcXG4gIEVPRlxcMDAwXFxcbiAgSEFTSF9TRU1JXFwwMDBcXFxuICBcIlxuXG5sZXQgeXluYW1lc19ibG9jayA9IFwiXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBDT01NRU5UXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcgKiAoTGV4aW5nLnBvc2l0aW9uICogc3RyaW5nKSBvcHRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDc1IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAoIFdpdGhfcG9zLmF0b20gXzEgKVxuIyAyMjIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgNzYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggV2l0aF9wb3MubGlzdCAoTGlzdC5yZXYgXzIpIClcbiMgMjI5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgKCBwYXJzZV9mYWlsdXJlIFwic2V4cFwiIClcbiMgMjM1IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nICogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgODAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAoIFdpdGhfcG9zLnBsYWluX2NvbW1lbnQgXzEgKVxuIyAyNDIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X2NvbW1lbnRzX2FicykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4MSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLnNleHBfY29tbWVudCAoTGlzdC5yZXYgXzIpIF8zIClcbiMgMjUwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgODQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAoIFtdIClcbiMgMjU2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfY29tbWVudHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X2NvbW1lbnRzX2FicykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4NSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyNjQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9jb21tZW50c19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgODggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBXaXRoX3Bvcy5zZXhwIF8xIClcbiMgMjcxIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4OSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLmNvbW1lbnQgXzEgKVxuIyAyNzggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA5MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAoIFtdIClcbiMgMjg0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA5MyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyOTIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgOTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgKCBUeXBlX3dpdGhfbGF5b3V0LnJlbGF0aXZpemUgXzEgKVxuIyAyOTkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA5OSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICggU29tZSBfMSApXG4jIDMwNiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwMCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgKCBOb25lIClcbiMgMzEyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwMyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICggW18xXSApXG4jIDMxOSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMDQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAzMjcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyAxMDcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDMzNCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMDggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICggW10gKVxuIyAzNDAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExMSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIExpc3QucmV2IF8xIClcbiMgMzQ3IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDExMiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDM1MyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgMTE2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTGlzdC5yZXYgXzEgKVxuIyAzNjAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC5QYXJzZWQudF9vcl9jb21tZW50IGxpc3QpKVxuKCogRW50cnkgc2V4cCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwX29wdCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwc19hYnMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgcmV2X3NleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbnxdXG5sZXQgeXl0YWJsZXMgPVxuICB7IFBhcnNpbmcuYWN0aW9ucz15eWFjdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9jb25zdD15eXRyYW5zbF9jb25zdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9ibG9jaz15eXRyYW5zbF9ibG9jaztcbiAgICBQYXJzaW5nLmxocz15eWxocztcbiAgICBQYXJzaW5nLmxlbj15eWxlbjtcbiAgICBQYXJzaW5nLmRlZnJlZD15eWRlZnJlZDtcbiAgICBQYXJzaW5nLmRnb3RvPXl5ZGdvdG87XG4gICAgUGFyc2luZy5zaW5kZXg9eXlzaW5kZXg7XG4gICAgUGFyc2luZy5yaW5kZXg9eXlyaW5kZXg7XG4gICAgUGFyc2luZy5naW5kZXg9eXlnaW5kZXg7XG4gICAgUGFyc2luZy50YWJsZXNpemU9eXl0YWJsZXNpemU7XG4gICAgUGFyc2luZy50YWJsZT15eXRhYmxlO1xuICAgIFBhcnNpbmcuY2hlY2s9eXljaGVjaztcbiAgICBQYXJzaW5nLmVycm9yX2Z1bmN0aW9uPXBhcnNlX2Vycm9yO1xuICAgIFBhcnNpbmcubmFtZXNfY29uc3Q9eXluYW1lc19jb25zdDtcbiAgICBQYXJzaW5nLm5hbWVzX2Jsb2NrPXl5bmFtZXNfYmxvY2sgfVxubGV0IHNleHAgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDEgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KVxubGV0IHNleHBfb3B0IChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAyIGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBvcHRpb24pXG5sZXQgc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpXG5sZXQgc2V4cHNfYWJzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyA0IGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LlBhcnNlZC50X29yX2NvbW1lbnQgbGlzdClcbmxldCByZXZfc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDUgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpXG4iLCIjIDEgXCJzcmMvbGV4ZXIubWxsXCJcbiBcbiAgKCoqIExleGVyOiBMZXhlciBTcGVjaWZpY2F0aW9uIGZvciBTLWV4cHJlc3Npb25zICopXG5cbiAgb3BlbiBQcmludGZcbiAgb3BlbiBMZXhpbmdcblxuICBsZXQgY2hhcl9mb3JfYmFja3NsYXNoID0gZnVuY3Rpb25cbiAgICB8ICduJyAtPiAnXFwwMTAnXG4gICAgfCAncicgLT4gJ1xcMDEzJ1xuICAgIHwgJ2InIC0+ICdcXDAwOCdcbiAgICB8ICd0JyAtPiAnXFwwMDknXG4gICAgfCBjIC0+IGNcblxuICBsZXQgbGYgPSAnXFwwMTAnXG5cbiAgbGV0IGRlY19jb2RlIGMxIGMyIGMzID1cbiAgICAxMDAgKiAoQ2hhci5jb2RlIGMxIC0gNDgpICsgMTAgKiAoQ2hhci5jb2RlIGMyIC0gNDgpICsgKENoYXIuY29kZSBjMyAtIDQ4KVxuXG4gIGxldCBoZXhfY29kZSBjMSBjMiA9XG4gICAgbGV0IGQxID0gQ2hhci5jb2RlIGMxIGluXG4gICAgbGV0IHZhbDEgPVxuICAgICAgaWYgZDEgPj0gOTcgdGhlbiBkMSAtIDg3XG4gICAgICBlbHNlIGlmIGQxID49IDY1IHRoZW4gZDEgLSA1NVxuICAgICAgZWxzZSBkMSAtIDQ4IGluXG4gICAgbGV0IGQyID0gQ2hhci5jb2RlIGMyIGluXG4gICAgbGV0IHZhbDIgPVxuICAgICAgaWYgZDIgPj0gOTcgdGhlbiBkMiAtIDg3XG4gICAgICBlbHNlIGlmIGQyID49IDY1IHRoZW4gZDIgLSA1NVxuICAgICAgZWxzZSBkMiAtIDQ4IGluXG4gICAgdmFsMSAqIDE2ICsgdmFsMlxuXG4gIGxldCBmb3VuZF9uZXdsaW5lIGxleGJ1ZiBkaWZmID1cbiAgICBsZXQgbGV4X2N1cnJfcCA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gICAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICAgIHtcbiAgICAgICAgbGV4X2N1cnJfcCB3aXRoXG4gICAgICAgIHBvc19sbnVtID0gbGV4X2N1cnJfcC5wb3NfbG51bSArIDE7XG4gICAgICAgIHBvc19ib2wgPSBsZXhfY3Vycl9wLnBvc19jbnVtIC0gZGlmZjtcbiAgICAgIH1cblxuICAoKiBzYW1lIGxlbmd0aCBjb21wdXRhdGlvbiBhcyBpbiBbTGV4aW5nLmxleGVtZV0gKilcbiAgbGV0IGxleGVtZV9sZW4geyBsZXhfc3RhcnRfcG9zOyBsZXhfY3Vycl9wb3M7IF8gfSA9IGxleF9jdXJyX3BvcyAtIGxleF9zdGFydF9wb3NcblxuICBsZXQgbWFpbl9mYWlsdXJlIGxleGJ1ZiBtc2cgPVxuICAgIGxldCB7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bTsgcG9zX2ZuYW1lID0gXyB9ID0gbGV4ZW1lX3N0YXJ0X3AgbGV4YnVmIGluXG4gICAgbGV0IG1zZyA9XG4gICAgICBzcHJpbnRmXG4gICAgICAgIFwiU2V4cGxpYi5MZXhlci5tYWluOiAlcyBhdCBsaW5lICVkIGNoYXIgJWRcIlxuICAgICAgICBtc2cgcG9zX2xudW0gKHBvc19jbnVtIC0gcG9zX2JvbClcbiAgICBpblxuICAgIGZhaWx3aXRoIG1zZ1xuXG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBtb2R1bGUgUXVvdGVkX3N0cmluZ19idWZmZXIgOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdmFsIGNyZWF0ZSA6IGludCAtPiB0XG4gICAgICB2YWwgYWRkX2NoYXIgOiB0IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgdmFsIGFkZF9zdWJieXRlcyA6IHQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICB2YWwgYWRkX2xleGVtZSA6IHQgLT4gbGV4YnVmIC0+IHVuaXRcbiAgICAgIHZhbCBjbGVhciA6IHQgLT4gdW5pdFxuICAgICAgdmFsIG9mX2J1ZmZlciA6IEJ1ZmZlci50IC0+IHRcbiAgICBlbmRcbiAgICBtb2R1bGUgVG9rZW4gOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdmFsIGxwYXJlbiA6IHRcbiAgICAgIHZhbCBycGFyZW4gOiB0XG4gICAgICB2YWwgZW9mIDogdFxuICAgICAgdmFsIHNpbXBsZV9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICAgICAgdmFsIGhhc2hfc2VtaSA6IHRcbiAgICAgIHZhbCBxdW90ZWRfc3RyaW5nIDogTGV4aW5nLnBvc2l0aW9uIC0+IFF1b3RlZF9zdHJpbmdfYnVmZmVyLnQgLT4gdFxuICAgICAgdHlwZSBzID0gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiBMZXhpbmcubGV4YnVmIC0+IHRcbiAgICAgIHZhbCBjb21tZW50IDogc3RyaW5nIC0+IG1haW46cyAtPiBzXG4gICAgICB2YWwgYmxvY2tfY29tbWVudCA6IExleGluZy5wb3NpdGlvbiAtPiBtYWluOnMgLT4gc1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoWCA6IFQpIDogc2lnXG4gICAgdmFsIG1haW4gOiA/YnVmOkJ1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gWC5Ub2tlbi50XG4gIGVuZCA9IHN0cnVjdCAoKiBCRUdJTiBGVU5DVE9SIEJPRFkgQ09OVEFJTklORyBHRU5FUkFURUQgQ09ERSAqKVxuICAgIG9wZW4gWFxuXG4jIDg0IFwic3JjL2xleGVyLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDI0NFxcMjU1XFwwMTBcXDAwMFxcMDQzXFwwMDBcXDA1M1xcMDAwXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwODZcXDAwMFxcMjQ4XFwyNTVcXDI0OVxcMjU1XFwwOTZcXDAwMFxcXG4gICAgXFwxMjlcXDAwMFxcMTM5XFwwMDBcXDE3MlxcMDAwXFwxODJcXDAwMFxcMjIwXFwwMDBcXDIzMFxcMDAwXFwwMDdcXDAwMVxcMjQ3XFwyNTVcXFxuICAgIFxcMDE3XFwwMDFcXDA1MFxcMDAxXFwwNjBcXDAwMVxcMDkzXFwwMDFcXDEwM1xcMDAxXFwxMzZcXDAwMVxcMTQ2XFwwMDFcXDE4MVxcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwyMjRcXDAwMVxcMjM0XFwwMDFcXDAxMVxcMDAyXFwwMzdcXDAwMFxcMjQ2XFwyNTVcXDA4MFxcMDAwXFwyNDhcXDI1NVxcXG4gICAgXFwwMjNcXDAwMlxcMjU1XFwyNTVcXDI0OVxcMjU1XFwwNTdcXDAwMlxcMDMzXFwwMDJcXDI1MlxcMjU1XFwwMDdcXDAwMFxcMDE2XFwwMDBcXFxuICAgIFxcMDE3XFwwMDBcXDExMlxcMDAyXFwyNTFcXDI1NVxcMTQ0XFwwMDJcXDI1MFxcMjU1XFwwODFcXDAwMFxcMjUwXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDEyMlxcMDAwXFwyNTVcXDI1NVxcMTY2XFwwMDBcXDEzMFxcMDAxXFwyNTJcXDI1NVxcMjUxXFwyNTVcXDE3M1xcMDAxXFwyNTFcXDAwMVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDI5XFwwMDBcXDAwMlxcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDAxMFxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDA0OFxcMDAwXFwwMDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0MVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyM1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDEyXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU3XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDE0XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU1XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDEzXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDIxXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM3XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMTdcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAyNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDU3XFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDM1XFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDVcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDA0NlxcMDAwXFwwMDlcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAzNlxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAzNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMzhcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAxMlxcMDAwXFxcbiAgICBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE1XFwwMDBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE1XFwwMDBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMzhcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwwMTJcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDM2XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDU2XFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTdcXDAwMFxcXG4gICAgXFwwMTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxN1xcMDAwXFwwMzhcXDAwMFxcMDE3XFwwMDBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNThcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNThcXDAwMFxcMDU4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE4XFwwMDBcXDA1M1xcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDE4XFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAwXFxcbiAgICBcXDAyMVxcMDAwXFwwMTlcXDAwMFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAxNlxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIxXFwwMDBcXDAxN1xcMDAwXFxcbiAgICBcXDAyMVxcMDAwXFwwMjFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMDI0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMDU4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM2XFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAyNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwwMjVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzOFxcMDAwXFwwNTNcXDAwMFxcMDI1XFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMDI2XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDI1NVxcMjU1XFwwMjhcXDAwMFxcMDI4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMjU1XFwyNTVcXDAyN1xcMDAwXFxcbiAgICBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDI4XFwwMDBcXDAyOFxcMDAwXFwwMTdcXDAwMFxcMDU5XFwwMDBcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDI4XFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAwXFwyNTVcXDI1NVxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNThcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAxOVxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAyOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDMzXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAzNFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDI5XFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXFxuICAgIFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMzRcXDAwMFxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcXG4gICAgXFwwMzVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFwwMzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNjJcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAyNVxcMDAwXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwNDBcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFxcbiAgICBcXDAyOVxcMDAwXFwwNDBcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzJcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgbWFpbiBidWYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21haW5fcmVjIGJ1ZiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X21haW5fcmVjIGJ1ZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAoIGZvdW5kX25ld2xpbmUgbGV4YnVmIDA7XG4gICAgICAgICAgICAgICAgICAgICAgIG1haW4gYnVmIGxleGJ1ZiApXG4jIDM3MCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDk3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICggbWFpbiBidWYgbGV4YnVmIClcbiMgMzc1IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDIgLT5cbmxldFxuIyA5OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0XG4jIDM4MSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgOTggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFRva2VuLmNvbW1lbnQgdGV4dCB+bWFpbiBidWYgbGV4YnVmIClcbiMgMzg1IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDMgLT5cbiMgOTkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBUb2tlbi5scGFyZW4gKVxuIyAzOTAgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxuIyAxMDAgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBUb2tlbi5ycGFyZW4gKVxuIyAzOTUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNSAtPlxuIyAxMDIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHBvcyA9IExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgcG9zIGxleGJ1ZjtcbiAgICAgICAgbGV0IHRvayA9IFRva2VuLnF1b3RlZF9zdHJpbmcgcG9zIGJ1ZiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5jbGVhciBidWY7XG4gICAgICAgIHRva1xuICAgICAgKVxuIyA0MDcgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNiAtPlxuIyAxMTAgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICggVG9rZW4uaGFzaF9zZW1pIClcbiMgNDEyIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDcgLT5cbiMgMTEyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBwb3MgPSBMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBbcG9zXSBsZXhidWY7XG4gICAgICAgIGxldCB0b2sgPSBUb2tlbi5ibG9ja19jb21tZW50IHBvcyB+bWFpbiBidWYgbGV4YnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgdG9rXG4gICAgICApXG4jIDQyNCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA4IC0+XG4jIDEyMCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgKCBtYWluX2ZhaWx1cmUgbGV4YnVmIFwiaWxsZWdhbCBlbmQgb2YgY29tbWVudFwiIClcbiMgNDI5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDkgLT5cbiMgMTI2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoIG1haW5fZmFpbHVyZSBsZXhidWYgXCJjb21tZW50IHRva2VucyBpbiB1bnF1b3RlZCBhdG9tXCIgKVxuIyA0MzQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMTAgLT5cbmxldFxuIyAxMjcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyXG4jIDQ0MCBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTI3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFRva2VuLnNpbXBsZV9zdHJpbmcgc3RyIClcbiMgNDQ0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDExIC0+XG4jIDEyOCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFRva2VuLmVvZiApXG4jIDQ0OSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21haW5fcmVjIGJ1ZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2Nhbl9zdHJpbmdfcmVjIGJ1ZiBzdGFydCBsZXhidWYgMzZcbmFuZCBfX29jYW1sX2xleF9zY2FuX3N0cmluZ19yZWMgYnVmIHN0YXJ0IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTMxIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmOyAoKSApXG4jIDQ2MSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDEzMyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgbGVuID0gbGV4ZW1lX2xlbiBsZXhidWYgLSAyIGluXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIGxlbjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDQ3MSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAyIC0+XG4jIDE0MCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgbGVuID0gbGV4ZW1lX2xlbiBsZXhidWYgLSAzIGluXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIGxlbjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDQ4MSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAzIC0+XG5sZXRcbiMgMTQ2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyA0ODcgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgaW5cbiMgMTQ3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNDk1IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDQgLT5cbmxldFxuIyAxNTIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICBjMVxuIyA1MDEgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuIyAxNTIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyXG4jIDUwNiBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDE1MiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjM1xuIyA1MTEgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMykgaW5cbiMgMTUzIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCB2ID0gZGVjX2NvZGUgYzEgYzIgYzMgaW5cbiAgICAgICAgaWYgdiA+IDI1NSB0aGVuIChcbiAgICAgICAgICBsZXQgeyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW07IHBvc19mbmFtZSA9IF8gfSA9IGxleGVtZV9lbmRfcCBsZXhidWYgaW5cbiAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICAgXCJTZXhwbGliLkxleGVyLnNjYW5fc3RyaW5nOiBcXFxuICAgICAgICAgICAgICAgaWxsZWdhbCBlc2NhcGUgYXQgbGluZSAlZCBjaGFyICVkOiBgXFxcXCVjJWMlYydcIlxuICAgICAgICAgICAgICBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sIC0gMylcbiAgICAgICAgICAgICAgYzEgYzIgYzMgaW5cbiAgICAgICAgICBmYWlsd2l0aCBtc2cpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgKENoYXIuY2hyIHYpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTI5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDUgLT5cbmxldFxuIyAxNjggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYzFcbiMgNTM1IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMTY4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJcbiMgNTQwIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpIGluXG4jIDE2OSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgdiA9IGhleF9jb2RlIGMxIGMyIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgdik7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1NDkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNiAtPlxubGV0XG4jIDE3NSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgY1xuIyA1NTUgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgaW5cbiMgMTc2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiBjO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTY0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDcgLT5cbiMgMTgzIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIDA7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiBsZjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDU3NCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA4IC0+XG4jIDE5MCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgb2ZzID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBvZnMgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBvZnMgbGVuO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTg1IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDkgLT5cbiMgMTk4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5MZXhlci5zY2FuX3N0cmluZzogdW50ZXJtaW5hdGVkIHN0cmluZyBhdCBsaW5lICVkIGNoYXIgJWRcIlxuICAgICAgICAgICAgc3RhcnQucG9zX2xudW0gKHN0YXJ0LnBvc19jbnVtIC0gc3RhcnQucG9zX2JvbClcbiAgICAgICAgaW5cbiAgICAgICAgZmFpbHdpdGggbXNnXG4gICAgICApXG4jIDU5NyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NjYW5fc3RyaW5nX3JlYyBidWYgc3RhcnQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NjYW5fYmxvY2tfY29tbWVudF9yZWMgYnVmIGxvY3MgbGV4YnVmIDUzXG5hbmQgX19vY2FtbF9sZXhfc2Nhbl9ibG9ja19jb21tZW50X3JlYyBidWYgbG9jcyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDIwOSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKCBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIDA7IHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWYgKVxuIyA2MTAgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyAyMTIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICggUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmIClcbiMgNjE2IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgMjE1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgbGV0IGN1ciA9IGxleGVtZV9lbmRfcCBsZXhidWYgaW5cbiAgICAgICAgbGV0IHN0YXJ0ID0geyBjdXIgd2l0aCBwb3NfY251bSA9IGN1ci5wb3NfY251bSAtIDEgfSBpblxuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmO1xuICAgICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmXG4gICAgICApXG4jIDYyNyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDIyMyBcInNyYy9sZXhlci5tbGxcIlxuICAgIChcbiAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgIGxldCBjdXIgPSBsZXhlbWVfZW5kX3AgbGV4YnVmIGluXG4gICAgICBsZXQgc3RhcnQgPSB7IGN1ciB3aXRoIHBvc19jbnVtID0gY3VyLnBvc19jbnVtIC0gMiB9IGluXG4gICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIChzdGFydCA6OiBsb2NzKSBsZXhidWZcbiAgICApXG4jIDYzNyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA0IC0+XG4jIDIzMCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIG1hdGNoIGxvY3Mgd2l0aFxuICAgICAgICB8IFtfXSAtPiAoKSAoKiB0aGUgY29tbWVudCBpcyBmaW5pc2hlZCAqKVxuICAgICAgICB8IF8gOjogKF8gOjogXyBhcyB0KSAtPiBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIHQgbGV4YnVmXG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlICAoKiBpbXBvc3NpYmxlICopXG4gICAgICApXG4jIDY0OCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA1IC0+XG4jIDIzOCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBtYXRjaCBsb2NzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCB7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bTsgcG9zX2ZuYW1lID0gXyB9IDo6IF8gLT5cbiAgICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgICBzcHJpbnRmIFwiU2V4cGxpYi5MZXhlci5zY2FuX2Jsb2NrX2NvbW1lbnQ6IFxcXG4gICAgICAgICAgICAgICAgdW50ZXJtaW5hdGVkIGJsb2NrIGNvbW1lbnQgYXQgbGluZSAlZCBjaGFyICVkXCJcbiAgICAgICAgICAgICAgICBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGZhaWx3aXRoIG1zZ1xuICAgICAgKVxuIyA2NjMgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zY2FuX2Jsb2NrX2NvbW1lbnRfcmVjIGJ1ZiBsb2NzIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDI1MCBcInNyYy9sZXhlci5tbGxcIlxuICAoKiBSRVNVTUUgRlVOQ1RPUiBCT0RZIENPTlRBSU5JTkcgR0VORVJBVEVEIENPREUgKilcblxuICAgIGxldCBtYWluID9idWYgPVxuICAgICAgbGV0IGJ1ZiA9XG4gICAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBRdW90ZWRfc3RyaW5nX2J1ZmZlci5jcmVhdGUgNjRcbiAgICAgICAgfCBTb21lIGJ1ZiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIub2ZfYnVmZmVyIGJ1ZlxuICAgICAgaW5cbiAgICAgIG1haW4gYnVmXG5cbiAgZW5kICgqIEVORCBGVU5DVE9SIEJPRFkgQ09OVEFJTklORyBHRU5FUkFURUQgQ09ERSAqKVxuXG4gIG1vZHVsZSBWYW5pbGxhID1cbiAgICBNYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBRdW90ZWRfc3RyaW5nX2J1ZmZlciA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEJ1ZmZlclxuICAgICAgICBsZXQgYWRkX2xleGVtZSBfIF8gPSAoKVxuICAgICAgICBsZXQgb2ZfYnVmZmVyIGIgPSBiXG4gICAgICBlbmRcbiAgICAgIG1vZHVsZSBUb2tlbiA9IHN0cnVjdFxuICAgICAgICBvcGVuIFBhcnNlclxuICAgICAgICB0eXBlIHQgPSB0b2tlblxuICAgICAgICB0eXBlIHMgPSBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gdFxuICAgICAgICBsZXQgZW9mID0gRU9GXG4gICAgICAgIGxldCBscGFyZW4gPSBMUEFSRU5cbiAgICAgICAgbGV0IHJwYXJlbiA9IFJQQVJFTlxuICAgICAgICBsZXQgaGFzaF9zZW1pID0gSEFTSF9TRU1JXG4gICAgICAgIGxldCBzaW1wbGVfc3RyaW5nIHggPSBTVFJJTkcgeFxuICAgICAgICBsZXQgcXVvdGVkX3N0cmluZyBfIGJ1ZiA9IFNUUklORyAoQnVmZmVyLmNvbnRlbnRzIGJ1ZilcbiAgICAgICAgbGV0IGJsb2NrX2NvbW1lbnQgX3BvcyB+bWFpbiBidWYgbGV4YnVmID1cbiAgICAgICAgICBtYWluIGJ1ZiBsZXhidWZcbiAgICAgICAgbGV0IGNvbW1lbnQgX3RleHQgfm1haW4gYnVmIGxleGJ1ZiA9XG4gICAgICAgICAgbWFpbiBidWYgbGV4YnVmICgqIHNraXAgYW5kIGNvbnRpbnVlIGxleGluZyAqKVxuICAgICAgZW5kXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBXaXRoX2xheW91dCA9XG4gICAgTWFrZSAoc3RydWN0XG4gICAgICBtb2R1bGUgUXVvdGVkX3N0cmluZ19idWZmZXIgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0ge1xuICAgICAgICAgIGNvbnRlbnRzIDogQnVmZmVyLnQ7XG4gICAgICAgICAgbGV4ZW1lIDogQnVmZmVyLnQ7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNyZWF0ZSBuID0ge2NvbnRlbnRzID0gQnVmZmVyLmNyZWF0ZSBuOyBsZXhlbWUgPSBCdWZmZXIuY3JlYXRlIG59XG4gICAgICAgIGxldCBvZl9idWZmZXIgY29udGVudHMgPSB7IGNvbnRlbnRzOyBsZXhlbWUgPSBCdWZmZXIuY3JlYXRlIDY0IH1cbiAgICAgICAgbGV0IGFkZF9jaGFyIHQgY2ggPSBCdWZmZXIuYWRkX2NoYXIgdC5jb250ZW50cyBjaFxuICAgICAgICBsZXQgYWRkX3N1YmJ5dGVzIHQgc3RyIG9mcyBsZW4gPSBCdWZmZXIuYWRkX3N1YmJ5dGVzIHQuY29udGVudHMgc3RyIG9mcyBsZW5cbiAgICAgICAgbGV0IGFkZF9sZXhlbWUgdCBsZXhidWYgPSBCdWZmZXIuYWRkX3N0cmluZyB0LmxleGVtZSAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgIGxldCBjbGVhciB0ID0gQnVmZmVyLmNsZWFyIHQubGV4ZW1lOyBCdWZmZXIuY2xlYXIgdC5jb250ZW50c1xuICAgICAgZW5kXG4gICAgICBtb2R1bGUgVG9rZW4gPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBQYXJzZXJfd2l0aF9sYXlvdXRcbiAgICAgICAgdHlwZSB0ID0gdG9rZW5cbiAgICAgICAgdHlwZSBzID0gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiBMZXhpbmcubGV4YnVmIC0+IHRcbiAgICAgICAgbGV0IGVvZiA9IEVPRlxuICAgICAgICBsZXQgbHBhcmVuID0gTFBBUkVOXG4gICAgICAgIGxldCBycGFyZW4gPSBSUEFSRU5cbiAgICAgICAgbGV0IGhhc2hfc2VtaSA9IEhBU0hfU0VNSVxuICAgICAgICBsZXQgc2ltcGxlX3N0cmluZyB4ID0gU1RSSU5HICh4LCBOb25lKVxuICAgICAgICBsZXQgcXVvdGVkX3N0cmluZyBwb3Mge1F1b3RlZF9zdHJpbmdfYnVmZmVyLmNvbnRlbnRzOyBsZXhlbWV9ID1cbiAgICAgICAgICBTVFJJTkcgKEJ1ZmZlci5jb250ZW50cyBjb250ZW50cywgU29tZSAocG9zLCBCdWZmZXIuY29udGVudHMgbGV4ZW1lKSlcbiAgICAgICAgbGV0IGJsb2NrX2NvbW1lbnQgcG9zIH5tYWluOl8ge1F1b3RlZF9zdHJpbmdfYnVmZmVyLmNvbnRlbnRzID0gXzsgbGV4ZW1lfSBfbGV4YnVmID1cbiAgICAgICAgICBDT01NRU5UIChCdWZmZXIuY29udGVudHMgbGV4ZW1lLCBTb21lIHBvcylcbiAgICAgICAgbGV0IGNvbW1lbnQgdGV4dCB+bWFpbjpfIF9idWYgX2xleGJ1ZiA9XG4gICAgICAgICAgQ09NTUVOVCAodGV4dCwgTm9uZSlcbiAgICAgIGVuZFxuICAgIGVuZClcblxuICBsZXQgbWFpbiA9IFZhbmlsbGEubWFpblxuICBsZXQgbWFpbl93aXRoX2xheW91dCA9IFdpdGhfbGF5b3V0Lm1haW5cblxuXG4jIDc0NSBcInNyYy9sZXhlci5tbFwiXG4iLCIoKiBTZXhwOiBNb2R1bGUgZm9yIGhhbmRsaW5nIFMtZXhwcmVzc2lvbnMgKEkvTywgZXRjLikgKilcblxub3BlbiBGb3JtYXRcbm9wZW4gQmlnYXJyYXlcbm1vZHVsZSBTZXhwbGliID0gU2V4cGxpYjBcbm1vZHVsZSBDb252ID0gU2V4cGxpYi5TZXhwX2NvbnZcblxuKCogY29udi5tbCBkZXBlbmRzIG9uIHVzIHNvIHdlIGNhbiBvbmx5IHVzZSB0aGlzIG1vZHVsZSAqKVxuXG5pbmNsdWRlIFR5cGVcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5pbmNsdWRlIChcbiAgU2V4cGxpYi5TZXhwIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSBQcml2YXRlXG5cbmxldCB0X3NleHBfZ3JhbW1hciA9IENvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxuXG4oKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBJL08tY2hhbm5lbHMgKilcblxubGV0IHdpdGhfbmV3X2J1ZmZlciBvYyBmID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlciAoKSBpblxuICBmIGJ1ZjtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2MgYnVmXG47O1xuXG5sZXQgb3V0cHV0X2h1bSBvYyBzZXhwID0gd2l0aF9uZXdfYnVmZmVyIG9jIChmdW4gYnVmIC0+IHRvX2J1ZmZlcl9odW0gc2V4cCB+YnVmKVxuXG5sZXQgb3V0cHV0X2h1bV9pbmRlbnQgaW5kZW50IG9jIHNleHAgPVxuICB3aXRoX25ld19idWZmZXIgb2MgKGZ1biBidWYgLT4gdG9fYnVmZmVyX2h1bSB+aW5kZW50IHNleHAgfmJ1Zilcbjs7XG5cbmxldCBvdXRwdXRfbWFjaCBvYyBzZXhwID0gd2l0aF9uZXdfYnVmZmVyIG9jIChmdW4gYnVmIC0+IHRvX2J1ZmZlcl9tYWNoIHNleHAgfmJ1ZilcbmxldCBvdXRwdXQgPSBvdXRwdXRfbWFjaFxuXG4oKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBmaWxlICopXG5cbigqIFRoZSB0ZW1wIGZpbGUgZnVuY3Rpb25zIGluIHRoZSBPQ2FtbCBGaWxlbmFtZSBtb2R1bGUgZG8gbm90IHN1cHBvcnRcbiAgIHBlcm1pc3Npb25zLiAgQnV0IG9wZW5pbmcgYSBmaWxlIHdpdGggZ2l2ZW4gcGVybWlzc2lvbnMgaXMgZGlmZmVyZW50XG4gICBmcm9tIG9wZW5pbmcgaXQgYW5kIGNobW9kaW5nIGl0IHRvIHRoZXNlIHBlcm1pc3Npb25zLCBiZWNhdXNlIHRoZSB1bWFza1xuICAgaXMgdGFrZW4gaW4gYWNjb3VudC4gIFVuZGVyIFVuaXggdGhlcmUncyBubyBlYXN5IHdheSB0byBnZXQgdGhlIHVtYXNrIGluXG4gICBhIHRocmVhZC1zYWZlIHdheS4gKilcbm1vZHVsZSBUbXBfZmlsZSA9IHN0cnVjdFxuICBsZXQgcHJuZyA9IHJlZiBOb25lXG5cbiAgbGV0IHRlbXBfZmlsZV9uYW1lIHByZWZpeCBzdWZmaXggPVxuICAgIGxldCByYW5kX3N0YXRlID1cbiAgICAgIG1hdGNoICFwcm5nIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgcmV0ID0gUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpIGluXG4gICAgICAgIHBybmcgOj0gU29tZSByZXQ7XG4gICAgICAgIHJldFxuICAgIGluXG4gICAgbGV0IHJuZCA9IFJhbmRvbS5TdGF0ZS5iaXRzIHJhbmRfc3RhdGUgbGFuZCAweEZGRkZGRiBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXMlMDZ4JXNcIiBwcmVmaXggcm5kIHN1ZmZpeFxuICA7O1xuXG4gICgqIEtlZXAgdGhlIHBlcm1pc3Npb25zIGxvb3NlLiBTZXhwcyBhcmUgdXN1YWxseSBzaGFyZWQgYW5kIHJhcmVseSBwcml2YXRlKilcbiAgbGV0IG9wZW5fdGVtcF9maWxlID8ocGVybSA9IDBvNjY2KSBwcmVmaXggc3VmZml4ID1cbiAgICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSBwcmVmaXggc3VmZml4IGluXG4gICAgICB0cnlcbiAgICAgICAgbGV0IG9jID1cbiAgICAgICAgICBvcGVuX291dF9nZW4gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsOyBPcGVuX3RleHQgXSBwZXJtIG5hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbmFtZSwgb2NcbiAgICAgIHdpdGhcbiAgICAgIHwgU3lzX2Vycm9yIF8gYXMgZSAtPiBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICAgIGluXG4gICAgdHJ5X25hbWUgMFxuICA7O1xuZW5kXG5cbmxldCBzYXZlX29mX291dHB1dCA/cGVybSBvdXRwdXRfZnVuY3Rpb24gZmlsZSBzZXhwID1cbiAgbGV0IHRtcF9uYW1lLCBvYyA9IFRtcF9maWxlLm9wZW5fdGVtcF9maWxlID9wZXJtIGZpbGUgXCJ0bXBcIiBpblxuICAodHJ5XG4gICAgIG91dHB1dF9mdW5jdGlvbiBvYyBzZXhwO1xuICAgICBjbG9zZV9vdXQgb2NcbiAgIHdpdGhcbiAgIHwgZSAtPlxuICAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgICh0cnkgU3lzLnJlbW92ZSB0bXBfbmFtZSB3aXRoXG4gICAgICB8IF8gLT4gKCkpO1xuICAgICByYWlzZSBlKTtcbiAgU3lzLnJlbmFtZSB0bXBfbmFtZSBmaWxlXG47O1xuXG5sZXQgb3V0cHV0X3NleHBfbmwgZG9fb3V0cHV0IG9jIHNleHAgPVxuICBkb19vdXRwdXQgb2Mgc2V4cDtcbiAgb3V0cHV0X3N0cmluZyBvYyBcIlxcblwiXG47O1xuXG5sZXQgc2F2ZV9odW0gP3Blcm0gZmlsZSBzZXhwID0gc2F2ZV9vZl9vdXRwdXQgP3Blcm0gKG91dHB1dF9zZXhwX25sIG91dHB1dF9odW0pIGZpbGUgc2V4cFxubGV0IHNhdmVfbWFjaCA/cGVybSBmaWxlIHNleHAgPSBzYXZlX29mX291dHB1dCA/cGVybSBvdXRwdXRfbWFjaCBmaWxlIHNleHBcbmxldCBzYXZlID0gc2F2ZV9tYWNoXG5sZXQgb3V0cHV0X3NleHBzX25sIGRvX291dHB1dCBvYyBzZXhwcyA9IExpc3QuaXRlciAob3V0cHV0X3NleHBfbmwgZG9fb3V0cHV0IG9jKSBzZXhwc1xuXG5sZXQgc2F2ZV9zZXhwc19odW0gP3Blcm0gZmlsZSBzZXhwcyA9XG4gIHNhdmVfb2Zfb3V0cHV0ID9wZXJtIChvdXRwdXRfc2V4cHNfbmwgb3V0cHV0X2h1bSkgZmlsZSBzZXhwc1xuOztcblxubGV0IHNhdmVfc2V4cHNfbWFjaCA/cGVybSBmaWxlIHNleHBzID1cbiAgc2F2ZV9vZl9vdXRwdXQgP3Blcm0gKG91dHB1dF9zZXhwc19ubCBvdXRwdXRfbWFjaCkgZmlsZSBzZXhwc1xuOztcblxubGV0IHNhdmVfc2V4cHMgPSBzYXZlX3NleHBzX21hY2hcblxuKCogU2NhbiBmdW5jdGlvbnMgKilcblxubGV0IHNjYW5fc2V4cCA/YnVmIGxleGJ1ZiA9IFBhcnNlci5zZXhwIChMZXhlci5tYWluID9idWYpIGxleGJ1ZlxubGV0IHNjYW5fc2V4cF9vcHQgP2J1ZiBsZXhidWYgPSBQYXJzZXIuc2V4cF9vcHQgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5sZXQgc2Nhbl9zZXhwcyA/YnVmIGxleGJ1ZiA9IFBhcnNlci5zZXhwcyAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcbmxldCBzY2FuX3Jldl9zZXhwcyA/YnVmIGxleGJ1ZiA9IFBhcnNlci5yZXZfc2V4cHMgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5cbmxldCBnZXRfbWFpbl9idWYgYnVmID1cbiAgbGV0IGJ1ZiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICB8IE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAxMjhcbiAgICB8IFNvbWUgYnVmIC0+IGJ1ZlxuICBpblxuICBMZXhlci5tYWluIH5idWZcbjs7XG5cbmxldCBzY2FuX2ZvbGRfc2V4cHMgP2J1ZiB+ZiB+aW5pdCBsZXhidWYgPVxuICBsZXQgbWFpbiA9IGdldF9tYWluX2J1ZiBidWYgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9XG4gICAgbWF0Y2ggUGFyc2VyLnNleHBfb3B0IG1haW4gbGV4YnVmIHdpdGhcbiAgICB8IE5vbmUgLT4gYWNjXG4gICAgfCBTb21lIHNleHAgLT4gbG9vcCAoZiBhY2Mgc2V4cClcbiAgaW5cbiAgbG9vcCBpbml0XG47O1xuXG5sZXQgc2Nhbl9pdGVyX3NleHBzID9idWYgfmYgbGV4YnVmID1cbiAgc2Nhbl9mb2xkX3NleHBzID9idWYgbGV4YnVmIH5pbml0OigpIH5mOihmdW4gKCkgc2V4cCAtPiBmIHNleHApXG47O1xuXG5sZXQgc2Nhbl9zZXhwc19jb252ID9idWYgfmYgbGV4YnVmID1cbiAgbGV0IGNvbGwgYWNjIHNleHAgPSBmIHNleHAgOjogYWNjIGluXG4gIExpc3QucmV2IChzY2FuX2ZvbGRfc2V4cHMgP2J1ZiB+Zjpjb2xsIH5pbml0OltdIGxleGJ1Zilcbjs7XG5cbmxldCBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSA/Y29udGFpbmluZ19zZXhwID9sb2NhdGlvbiA/aW52YWxpZF9zZXhwICgpIH5leG4gOiB0ID1cbiAgTGlzdFxuICAgIChMaXN0LmNvbmNhdFxuICAgICAgIFsgWyBBdG9tIFwiT2Zfc2V4cF9lcnJvclwiIF1cbiAgICAgICA7IChtYXRjaCBsb2NhdGlvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIHggLT4gWyBBdG9tIHggXSlcbiAgICAgICA7IFsgKG1hdGNoIGV4biB3aXRoXG4gICAgICAgICAgICAgfCBGYWlsdXJlIHggLT4gQXRvbSB4XG4gICAgICAgICAgICAgfCBfIC0+IENvbnYuc2V4cF9vZl9leG4gZXhuKVxuICAgICAgICAgXVxuICAgICAgIDsgKG1hdGNoIGludmFsaWRfc2V4cCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIHggLT4gWyBMaXN0IFsgQXRvbSBcImludmFsaWRfc2V4cFwiOyB4IF0gXSlcbiAgICAgICA7IChtYXRjaCBjb250YWluaW5nX3NleHAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSB4IC0+IFsgTGlzdCBbIEF0b20gXCJjb250YWluaW5nX3NleHBcIjsgeCBdIF0pXG4gICAgICAgXSlcbjs7XG5cbigqIFBhcnRpYWwgcGFyc2luZyAqKVxuXG5tb2R1bGUgQW5ub3QgPSBzdHJ1Y3RcbiAgdHlwZSBwb3MgPSBQYXJzZXhwLlBvc2l0aW9ucy5wb3MgPVxuICAgIHsgbGluZSA6IGludFxuICAgIDsgY29sIDogaW50XG4gICAgOyBvZmZzZXQgOiBpbnRcbiAgICB9XG5cbiAgdHlwZSByYW5nZSA9IFBhcnNleHAuUG9zaXRpb25zLnJhbmdlID1cbiAgICB7IHN0YXJ0X3BvcyA6IHBvc1xuICAgIDsgZW5kX3BvcyA6IHBvc1xuICAgIH1cblxuICB0eXBlIHQgPVxuICAgIHwgQXRvbSBvZiByYW5nZSAqIFR5cGUudFxuICAgIHwgTGlzdCBvZiByYW5nZSAqIHQgbGlzdCAqIFR5cGUudFxuXG4gIHR5cGUgJ2EgY29udiA9XG4gICAgWyBgUmVzdWx0IG9mICdhXG4gICAgfCBgRXJyb3Igb2YgZXhuICogdFxuICAgIF1cblxuICBleGNlcHRpb24gQ29udl9leG4gb2Ygc3RyaW5nICogZXhuXG5cbiAgbGV0ICgpID1cbiAgICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBDb252X2V4bl0gKGZ1bmN0aW9uXG4gICAgICB8IENvbnZfZXhuIChsb2NhdGlvbiwgZXhuKSAtPiBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSAoKSB+bG9jYXRpb24gfmV4blxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICB0eXBlIHN0YWNrID1cbiAgICB7IG11dGFibGUgcG9zaXRpb25zIDogcG9zIGxpc3RcbiAgICA7IG11dGFibGUgc3RhY2sgOiB0IGxpc3QgbGlzdFxuICAgIH1cblxuICBsZXQgZ2V0X3NleHAgPSBmdW5jdGlvblxuICAgIHwgQXRvbSAoXywgc2V4cCkgfCBMaXN0IChfLCBfLCBzZXhwKSAtPiBzZXhwXG4gIDs7XG5cbiAgbGV0IGdldF9yYW5nZSA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIChyYW5nZSwgXykgfCBMaXN0IChyYW5nZSwgXywgXykgLT4gcmFuZ2VcbiAgOztcblxuICBsZXQgc2V4cF9vZl9jb252IHNleHBfb2ZfYSA9IGZ1bmN0aW9uXG4gICAgfCBgUmVzdWx0IGEgLT4gVHlwZS5MaXN0IFsgQXRvbSBcIlJlc3VsdFwiOyBhIHw+IHNleHBfb2ZfYSBdXG4gICAgfCBgRXJyb3IgKGV4biwgdCkgLT5cbiAgICAgIExpc3QgWyBBdG9tIFwiRXJyb3JcIjsgTGlzdCBbIGV4biB8PiBDb252LnNleHBfb2ZfZXhuOyB0IHw+IGdldF9zZXhwIF0gXVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBBbm5vdF9zZXhwIG9mIHRcblxuICBsZXQgZmluZF9zZXhwIGFubm90X3NleHAgc2V4cCA9XG4gICAgbGV0IHJlYyBsb29wIGFubm90X3NleHAgPVxuICAgICAgbWF0Y2ggYW5ub3Rfc2V4cCB3aXRoXG4gICAgICB8IChBdG9tIChfLCBzdWJfc2V4cCkgfCBMaXN0IChfLCBfLCBzdWJfc2V4cCkpIHdoZW4gc2V4cCA9PSBzdWJfc2V4cCAtPlxuICAgICAgICByYWlzZSAoQW5ub3Rfc2V4cCBhbm5vdF9zZXhwKVxuICAgICAgfCBMaXN0IChfLCBhbm5vdHMsIF8pIC0+IExpc3QuaXRlciBsb29wIGFubm90c1xuICAgICAgfCBBdG9tIF8gLT4gKClcbiAgICBpblxuICAgIHRyeVxuICAgICAgbG9vcCBhbm5vdF9zZXhwO1xuICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IEFubm90X3NleHAgcmVzIC0+IFNvbWUgcmVzXG4gIDs7XG5lbmRcblxubGV0ICgpID1cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBPZl9zZXhwX2Vycm9yIChBbm5vdC5Db252X2V4biAobG9jYXRpb24sIGV4biksIGludmFsaWRfc2V4cCkgLT5cbiAgICAgIHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlICgpIH5sb2NhdGlvbiB+aW52YWxpZF9zZXhwIH5leG5cbiAgICB8IE9mX3NleHBfZXJyb3IgKGV4biwgaW52YWxpZF9zZXhwKSAtPlxuICAgICAgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UgKCkgfmludmFsaWRfc2V4cCB+ZXhuXG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQYXJzZV9wb3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgdGV4dF9saW5lIDogaW50XG4gICAgOyBtdXRhYmxlIHRleHRfY2hhciA6IGludFxuICAgIDsgbXV0YWJsZSBnbG9iYWxfb2Zmc2V0IDogaW50XG4gICAgOyBtdXRhYmxlIGJ1Zl9wb3MgOiBpbnRcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSA/KHRleHRfbGluZSA9IDEpID8odGV4dF9jaGFyID0gMCkgPyhidWZfcG9zID0gMCkgPyhnbG9iYWxfb2Zmc2V0ID0gMCkgKCkgPVxuICAgIGxldCBmYWlsIG1zZyA9IGZhaWx3aXRoIChcIlNleHBsaWIuU2V4cC5QYXJzZV9wb3MuY3JlYXRlOiBcIiBeIG1zZykgaW5cbiAgICBpZiB0ZXh0X2xpbmUgPCAxXG4gICAgdGhlbiBmYWlsIFwidGV4dF9saW5lIDwgMVwiXG4gICAgZWxzZSBpZiB0ZXh0X2NoYXIgPCAwXG4gICAgdGhlbiBmYWlsIFwidGV4dF9jaGFyIDwgMFwiXG4gICAgZWxzZSBpZiBnbG9iYWxfb2Zmc2V0IDwgMFxuICAgIHRoZW4gZmFpbCBcImdsb2JhbF9vZmZzZXQgPCAwXCJcbiAgICBlbHNlIGlmIGJ1Zl9wb3MgPCAwXG4gICAgdGhlbiBmYWlsIFwiYnVmX3BvcyA8IDBcIlxuICAgIGVsc2UgeyB0ZXh0X2xpbmU7IHRleHRfY2hhcjsgZ2xvYmFsX29mZnNldDsgYnVmX3BvcyB9XG4gIDs7XG5cbiAgbGV0IHdpdGhfYnVmX3BvcyB0IGJ1Zl9wb3MgPSB7IHQgd2l0aCBidWZfcG9zIH1cbmVuZFxuXG5tb2R1bGUgQ29udF9zdGF0ZSA9IFBhcnNleHAuT2xkX3BhcnNlcl9jb250X3N0YXRlXG5cbnR5cGUgKCdhLCAndCkgcGFyc2VfcmVzdWx0ID1cbiAgfCBEb25lIG9mICd0ICogUGFyc2VfcG9zLnRcbiAgfCBDb250IG9mIENvbnRfc3RhdGUudCAqICgnYSwgJ3QpIHBhcnNlX2Z1blxuXG5hbmQgKCdhLCAndCkgcGFyc2VfZnVuID0gcG9zOmludCAtPiBsZW46aW50IC0+ICdhIC0+ICgnYSwgJ3QpIHBhcnNlX3Jlc3VsdFxuXG50eXBlICd0IHBhcnNlX3N0YXRlID0geyBwYXJzZV9wb3MgOiBQYXJzZV9wb3MudCB9XG5cbnR5cGUgcGFyc2VfZXJyb3IgPVxuICB7IGVycl9tc2cgOiBzdHJpbmdcbiAgOyBwYXJzZV9zdGF0ZSA6IFsgYFNleHAgb2YgdCBsaXN0IGxpc3QgcGFyc2Vfc3RhdGUgfCBgQW5ub3Qgb2YgQW5ub3Quc3RhY2sgcGFyc2Vfc3RhdGUgXVxuICB9XG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciBvZiBwYXJzZV9lcnJvclxuXG5sZXQgKCkgPVxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBQYXJzZV9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBQYXJzZV9lcnJvciBwZSAtPlxuICAgICAgbGV0IHBwb3MgPVxuICAgICAgICBtYXRjaCBwZS5wYXJzZV9zdGF0ZSB3aXRoXG4gICAgICAgIHwgYFNleHAgeyBwYXJzZV9wb3MgfSB8IGBBbm5vdCB7IHBhcnNlX3BvcyB9IC0+IHBhcnNlX3Bvc1xuICAgICAgaW5cbiAgICAgIExpc3RcbiAgICAgICAgWyBBdG9tIFwiU2V4cGxpYi5TZXhwLlBhcnNlX2Vycm9yXCJcbiAgICAgICAgOyBMaXN0XG4gICAgICAgICAgICBbIExpc3QgWyBBdG9tIFwiZXJyX21zZ1wiOyBBdG9tIHBlLmVycl9tc2cgXVxuICAgICAgICAgICAgOyBMaXN0IFsgQXRvbSBcInRleHRfbGluZVwiOyBDb252LnNleHBfb2ZfaW50IHBwb3MuUGFyc2VfcG9zLnRleHRfbGluZSBdXG4gICAgICAgICAgICA7IExpc3QgWyBBdG9tIFwidGV4dF9jaGFyXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MudGV4dF9jaGFyIF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJnbG9iYWxfb2Zmc2V0XCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MuZ2xvYmFsX29mZnNldCBdXG4gICAgICAgICAgICA7IExpc3QgWyBBdG9tIFwiYnVmX3Bvc1wiOyBDb252LnNleHBfb2ZfaW50IHBwb3MuUGFyc2VfcG9zLmJ1Zl9wb3MgXVxuICAgICAgICAgICAgXVxuICAgICAgICBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQYXJzZXJfb3V0cHV0IDogc2lnXG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBtb2R1bGUgSW1wbCA6IFBhcnNleHAuRWFnZXJfcGFyc2VyXG5cbiAgICB0eXBlIG91dHB1dFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgdmFsIHJhaXNlX2ZvdW5kIDogSW1wbC5TdGF0ZS5SZWFkX29ubHkudCAtPiBJbXBsLnBhcnNlZF92YWx1ZSAtPiB1bml0XG4gIGVuZFxuXG4gIG1vZHVsZSBCYXJlX3NleHAgOiBUIHdpdGggdHlwZSBvdXRwdXQgPSBUeXBlLnRcbiAgbW9kdWxlIEFubm90YXRlZF9zZXhwIDogVCB3aXRoIHR5cGUgb3V0cHV0ID0gQW5ub3QudFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBtb2R1bGUgSW1wbCA6IFBhcnNleHAuRWFnZXJfcGFyc2VyXG5cbiAgICB0eXBlIG91dHB1dFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgdmFsIHJhaXNlX2ZvdW5kIDogSW1wbC5TdGF0ZS5SZWFkX29ubHkudCAtPiBJbXBsLnBhcnNlZF92YWx1ZSAtPiB1bml0XG4gIGVuZFxuXG4gIG1vZHVsZSBJID0gUGFyc2V4cC5Qb3NpdGlvbnMuSXRlcmF0b3JcblxuICBsZXQgcmVjIGFubm90YXRlX3NleHAgc2V4cCBpdGVyID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFR5cGUuQXRvbSBfIC0+XG4gICAgICBsZXQgc3RhcnRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIGxldCBlbmRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIEFubm90LkF0b20gKHsgc3RhcnRfcG9zOyBlbmRfcG9zIH0sIHNleHApXG4gICAgfCBUeXBlLkxpc3QgbCAtPlxuICAgICAgbGV0IHN0YXJ0X3BvcyA9IEkuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIGluXG4gICAgICBsZXQgYW5ub3QgPSBhbm5vdGF0ZV9zZXhwX2xpc3QgbCBpdGVyIGluXG4gICAgICBsZXQgZW5kX3BvcyA9IEkuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIGluXG4gICAgICBBbm5vdC5MaXN0ICh7IHN0YXJ0X3BvczsgZW5kX3BvcyB9LCBhbm5vdCwgc2V4cClcblxuICBhbmQgYW5ub3RhdGVfc2V4cF9saXN0IHNleHBzIGl0ZXIgPVxuICAgIExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biBzZXhwIC0+IGFubm90YXRlX3NleHAgc2V4cCBpdGVyKSBzZXhwcylcbiAgOztcblxuICBtb2R1bGUgQmFyZV9zZXhwID0gc3RydWN0XG4gICAgbW9kdWxlIEltcGwgPSBQYXJzZXhwLkVhZ2VyXG5cbiAgICB0eXBlIG91dHB1dCA9IFR5cGUudFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgbGV0IHJhaXNlX2ZvdW5kIF9zdGF0ZSBzZXhwID0gcmFpc2Vfbm90cmFjZSAoRm91bmQgc2V4cClcbiAgZW5kXG5cbiAgbW9kdWxlIEFubm90YXRlZF9zZXhwID0gc3RydWN0XG4gICAgbW9kdWxlIEltcGwgPSBQYXJzZXhwLkVhZ2VyX2FuZF9wb3NpdGlvbnNcblxuICAgIHR5cGUgb3V0cHV0ID0gQW5ub3QudFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgbGV0IHJhaXNlX2ZvdW5kIF9zdGF0ZSAoc2V4cCwgcG9zaXRpb25zKSA9XG4gICAgICBsZXQgYW5ub3QgPSBhbm5vdGF0ZV9zZXhwIHNleHAgKEkuY3JlYXRlIHBvc2l0aW9ucykgaW5cbiAgICAgIHJhaXNlX25vdHJhY2UgKEZvdW5kIGFubm90KVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3BhcnNlciAoVCA6IHNpZ1xuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5UXG5cbiAgICB0eXBlIGlucHV0XG5cbiAgICB2YWwgbGVuZ3RoIDogaW5wdXQgLT4gaW50XG5cbiAgICB2YWwgdW5zYWZlX2ZlZWRfbG9vcFxuICAgICAgOiAgSW1wbC5TdGF0ZS50XG4gICAgICAtPiBJbXBsLlN0YWNrLnRcbiAgICAgIC0+IGlucHV0XG4gICAgICAtPiBtYXhfcG9zOmludFxuICAgICAgLT4gcG9zOmludFxuICAgICAgLT4gSW1wbC5TdGFjay50XG4gIGVuZCkgOiBzaWdcbiAgdmFsIHBhcnNlXG4gICAgOiAgP3BhcnNlX3BvczpQYXJzZV9wb3MudFxuICAgIC0+ID9sZW46aW50XG4gICAgLT4gVC5pbnB1dFxuICAgIC0+IChULmlucHV0LCBULm91dHB1dCkgcGFyc2VfcmVzdWx0XG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IHBhcnNlX3Bvc19vZl9zdGF0ZSBzdGF0ZSBidWZfcG9zID1cbiAgICB7IFBhcnNlX3Bvcy50ZXh0X2xpbmUgPSBULkltcGwuU3RhdGUubGluZSBzdGF0ZVxuICAgIDsgUGFyc2VfcG9zLnRleHRfY2hhciA9IFQuSW1wbC5TdGF0ZS5jb2x1bW4gc3RhdGVcbiAgICA7IFBhcnNlX3Bvcy5nbG9iYWxfb2Zmc2V0ID0gVC5JbXBsLlN0YXRlLm9mZnNldCBzdGF0ZVxuICAgIDsgUGFyc2VfcG9zLmJ1Zl9wb3NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGNoZWNrX3N0cl9ib3VuZHMgfnBvcyB+bGVuIHN0ciA9XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwicGFyc2U6IHBvcyA8IDBcIjtcbiAgICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogbGVuIDwgMFwiO1xuICAgIGxldCBzdHJfbGVuID0gVC5sZW5ndGggc3RyIGluXG4gICAgbGV0IHBvc19sZW4gPSBwb3MgKyBsZW4gaW5cbiAgICBpZiBwb3NfbGVuID4gc3RyX2xlbiB0aGVuIGludmFsaWRfYXJnIFwicGFyc2U6IHBvcyArIGxlbiA+IHN0cl9sZW5cIjtcbiAgICBwb3NfbGVuIC0gMVxuICA7O1xuXG4gIGxldCByYWlzZV9wYXJzZV9lcnJvciBzdGF0ZSBwb3MgbXNnID1cbiAgICBsZXQgcGFyc2Vfc3RhdGUgPSB7IHBhcnNlX3BvcyA9IHBhcnNlX3Bvc19vZl9zdGF0ZSBzdGF0ZSBwb3MgfSBpblxuICAgIGxldCBwYXJzZV9lcnJvciA9IHsgZXJyX21zZyA9IG1zZzsgcGFyc2Vfc3RhdGUgPSBgU2V4cCBwYXJzZV9zdGF0ZSB9IGluXG4gICAgcmFpc2UgKFBhcnNlX2Vycm9yIHBhcnNlX2Vycm9yKVxuICA7O1xuXG4gIGxldCBoYW5kbGVfcGFyc2V4cF9lcnJvciBzdGF0ZSBwb3MgZSA9XG4gICAgbGV0IG1zZyA9IFBhcnNleHAuUGFyc2VfZXJyb3IubWVzc2FnZSBlIGluXG4gICAgbWF0Y2ggUGFyc2V4cC5QYXJzZV9lcnJvci5Qcml2YXRlLm9sZF9wYXJzZXJfZXhuIGUgd2l0aFxuICAgIHwgYFBhcnNlX2Vycm9yIC0+IHJhaXNlX3BhcnNlX2Vycm9yIHN0YXRlIHBvcyBtc2dcbiAgICB8IGBGYWlsdXJlIC0+IGZhaWx3aXRoIG1zZ1xuICA7O1xuXG4gIGxldCByZWMgcnVuX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayB+cG9zIH5sZW4gc3RyID1cbiAgICBsZXQgbWF4X3BvcyA9IGNoZWNrX3N0cl9ib3VuZHMgfnBvcyB+bGVuIHN0ciBpblxuICAgIGxldCBwcmV2aW91c19vZmZzZXQgPSBULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlIGluXG4gICAgbWF0Y2ggVC51bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zIHdpdGhcbiAgICB8IHN0YWNrIC0+IG1rX2NvbnRfc3RhdGUgc3RhdGUgc3RhY2tcbiAgICB8IGV4Y2VwdGlvbiBULkZvdW5kIHJlc3VsdCAtPlxuICAgICAgbGV0IG9mZnNldCA9IFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgaW5cbiAgICAgIGxldCBuZXh0X3BvcyA9IHBvcyArIChvZmZzZXQgLSBwcmV2aW91c19vZmZzZXQpIGluXG4gICAgICBEb25lIChyZXN1bHQsIHBhcnNlX3Bvc19vZl9zdGF0ZSBzdGF0ZSBuZXh0X3BvcylcbiAgICB8IGV4Y2VwdGlvbiBQYXJzZXhwLlBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yIGVyciAtPlxuICAgICAgaGFuZGxlX3BhcnNleHBfZXJyb3Igc3RhdGUgKHBvcyArIChULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlIC0gcHJldmlvdXNfb2Zmc2V0KSkgZXJyXG5cbiAgYW5kIG1rX2NvbnRfc3RhdGUgc3RhdGUgc3RhY2sgPVxuICAgIGxldCBwYXJzZV9mdW4gPVxuICAgICAgbGV0IHVzZWRfcmVmID0gcmVmIGZhbHNlIGluXG4gICAgICBmdW4gfnBvcyB+bGVuIHN0ciAtPlxuICAgICAgICBpZiAhdXNlZF9yZWZcbiAgICAgICAgdGhlbiBmYWlsd2l0aCBcIlNleHBsaWIuU2V4cDogcGFyc2VyIGNvbnRpbnVhdGlvbiBjYWxsZWQgdHdpY2VcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICB1c2VkX3JlZiA6PSB0cnVlO1xuICAgICAgICAgIHJ1bl9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgfnBvcyB+bGVuIHN0cilcbiAgICBpblxuICAgIGxldCBjb250X3N0YXRlID0gVC5JbXBsLlN0YXRlLm9sZF9wYXJzZXJfY29udF9zdGF0ZSBzdGF0ZSBpblxuICAgIENvbnQgKGNvbnRfc3RhdGUsIHBhcnNlX2Z1bilcbiAgOztcblxuICBsZXQgcGFyc2UgPyhwYXJzZV9wb3MgPSBQYXJzZV9wb3MuY3JlYXRlICgpKSA/bGVuIHN0ciA9XG4gICAgbGV0IHBvcywgYnVmX3BvcyA9XG4gICAgICBsZXQgeyBQYXJzZV9wb3MudGV4dF9saW5lOyB0ZXh0X2NoYXI7IGdsb2JhbF9vZmZzZXQ7IGJ1Zl9wb3MgfSA9IHBhcnNlX3BvcyBpblxuICAgICAgKCB7IFBhcnNleHAuUG9zaXRpb25zLmxpbmUgPSB0ZXh0X2xpbmU7IGNvbCA9IHRleHRfY2hhcjsgb2Zmc2V0ID0gZ2xvYmFsX29mZnNldCB9XG4gICAgICAsIGJ1Zl9wb3MgKVxuICAgIGluXG4gICAgbGV0IHN0YXRlID0gVC5JbXBsLlN0YXRlLmNyZWF0ZSB+cG9zIH5ub19zZXhwX2lzX2Vycm9yOmZhbHNlIFQucmFpc2VfZm91bmQgaW5cbiAgICBsZXQgc3RhY2sgPSBULkltcGwuU3RhY2suZW1wdHkgaW5cbiAgICBsZXQgbGVuID1cbiAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICB8IE5vbmUgLT4gVC5sZW5ndGggc3RyIC0gYnVmX3Bvc1xuICAgIGluXG4gICAgcnVuX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfnBvczpidWZfcG9zIH5sZW5cbiAgOztcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIFN0cmluZ19zaW5nbGVfc2V4cCA9IE1ha2VfcGFyc2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuQmFyZV9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zID1cbiAgICAgIGlmIHBvcyA8PSBtYXhfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN0YWNrID0gSW1wbC5mZWVkIHN0YXRlIChTdHJpbmcudW5zYWZlX2dldCBzdHIgcG9zKSBzdGFjayBpblxuICAgICAgICB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zOihwb3MgKyAxKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICA7O1xuICBlbmQpXG5cbmxldCBwYXJzZV9zdHIgPSBTdHJpbmdfc2luZ2xlX3NleHAucGFyc2VcbmxldCBwYXJzZSA9IFN0cmluZ19zaW5nbGVfc2V4cC5wYXJzZVxuXG5tb2R1bGUgU3RyaW5nX3NpbmdsZV9hbm5vdCA9IE1ha2VfcGFyc2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuQW5ub3RhdGVkX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKFN0cmluZy51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX3N0cl9hbm5vdCA9IFN0cmluZ19zaW5nbGVfYW5ub3QucGFyc2VcblxubW9kdWxlIEJpZ3N0cmluZ19zaW5nbGVfc2V4cCA9IE1ha2VfcGFyc2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuQmFyZV9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gYmlnc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIChzdHIgOiBpbnB1dCkgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoQXJyYXkxLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nID0gQmlnc3RyaW5nX3NpbmdsZV9zZXhwLnBhcnNlXG5cbm1vZHVsZSBCaWdzdHJpbmdfc2luZ2xlX2Fubm90ID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5Bbm5vdGF0ZWRfc2V4cFxuXG4gICAgdHlwZSBpbnB1dCA9IGJpZ3N0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IEFycmF5MS5kaW1cblxuICAgIGxldCByZWMgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayAoc3RyIDogaW5wdXQpIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKEFycmF5MS51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX2JpZ3N0cmluZ19hbm5vdCA9IEJpZ3N0cmluZ19zaW5nbGVfYW5ub3QucGFyc2VcblxuKCogSW5wdXQgZnVuY3Rpb25zICopXG5cbmxldCBta190aGlzX3BhcnNlID9wYXJzZV9wb3MgbXlfcGFyc2UgPVxuICAoKTtcbiAgZnVuIH5wb3MgfmxlbiBzdHIgLT5cbiAgICBsZXQgcGFyc2VfcG9zID1cbiAgICAgIG1hdGNoIHBhcnNlX3BvcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gUGFyc2VfcG9zLmNyZWF0ZSB+YnVmX3Bvczpwb3MgKClcbiAgICAgIHwgU29tZSBwYXJzZV9wb3MgLT5cbiAgICAgICAgcGFyc2VfcG9zLlBhcnNlX3Bvcy5idWZfcG9zIDwtIHBvcztcbiAgICAgICAgcGFyc2VfcG9zXG4gICAgaW5cbiAgICBteV9wYXJzZSA/cGFyc2VfcG9zOihTb21lIHBhcnNlX3BvcykgP2xlbjooU29tZSBsZW4pIHN0clxuOztcblxuKCogW3dzX2J1Zl0gbXVzdCBjb250YWluIGEgc2luZ2xlIHNwYWNlIGNoYXJhY3RlciAqKVxubGV0IGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWYgPVxuICAoKiBXaGVuIHBhcnNpbmcgYXRvbXMsIHRoZSBpbmNyZW1lbnRhbCBwYXJzZXIgY2Fubm90IHRlbGwgd2hldGhlclxuICAgICBpdCBpcyBhdCB0aGUgZW5kIHVudGlsIGl0IGhpdHMgd2hpdGVzcGFjZS4gIFdlIHRoZXJlZm9yZSBmZWVkIGl0XG4gICAgIG9uZSBzcGFjZSB0byBkZXRlcm1pbmUgd2hldGhlciBpdCBpcyBmaW5pc2hlZC4gKilcbiAgbWF0Y2ggdGhpc19wYXJzZSB+cG9zOjAgfmxlbjoxIHdzX2J1ZiB3aXRoXG4gIHwgRG9uZSAoc2V4cCwgXykgLT4gT2sgc2V4cFxuICB8IENvbnQgKGNvbnRfc3RhdGUsIF8pIC0+IEVycm9yIGNvbnRfc3RhdGVcbjs7XG5cbmxldCBnZW5faW5wdXRfc2V4cCBteV9wYXJzZSA/cGFyc2VfcG9zIGljID1cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAxIGluXG4gIGxldCByZWMgbG9vcCB0aGlzX3BhcnNlID1cbiAgICBtYXRjaCBpbnB1dF9jaGFyIGljIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPlxuICAgICAgKG1hdGNoIGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWY6XCIgXCIgd2l0aFxuICAgICAgIHwgT2sgc2V4cCAtPiBzZXhwXG4gICAgICAgfCBFcnJvciBfIC0+IHJhaXNlIEVuZF9vZl9maWxlKVxuICAgIHwgYyAtPlxuICAgICAgQnl0ZXMuc2V0IGJ1ZiAwIGM7XG4gICAgICAobWF0Y2ggdGhpc19wYXJzZSB+cG9zOjAgfmxlbjoxIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgIHwgRG9uZSAoc2V4cCwgXykgLT4gc2V4cFxuICAgICAgIHwgQ29udCAoXywgdGhpc19wYXJzZSkgLT4gbG9vcCB0aGlzX3BhcnNlKVxuICBpblxuICBsb29wIChta190aGlzX3BhcnNlID9wYXJzZV9wb3MgbXlfcGFyc2UpXG47O1xuXG5sZXQgaW5wdXRfc2V4cCA/cGFyc2VfcG9zIGljID0gZ2VuX2lucHV0X3NleHAgcGFyc2UgP3BhcnNlX3BvcyBpY1xuXG5sZXQgZ2VuX2lucHV0X3Jldl9zZXhwcyBteV9wYXJzZSB+d3NfYnVmID9wYXJzZV9wb3MgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgaWMgPVxuICBsZXQgcmV2X3NleHBzX3JlZiA9IHJlZiBbXSBpblxuICBsZXQgYnVmX2xlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgbGV0IHJlYyBsb29wIHRoaXNfcGFyc2UgfnBvcyB+bGVuID1cbiAgICBpZiBsZW4gPiAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCB0aGlzX3BhcnNlIH5wb3MgfmxlbiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWYpIHdpdGhcbiAgICAgIHwgRG9uZSAoc2V4cCwgKHsgUGFyc2VfcG9zLmJ1Zl9wb3M7IF8gfSBhcyBwYXJzZV9wb3MpKSAtPlxuICAgICAgICByZXZfc2V4cHNfcmVmIDo9IHNleHAgOjogIXJldl9zZXhwc19yZWY7XG4gICAgICAgIGxldCBuX3BhcnNlZCA9IGJ1Zl9wb3MgLSBwb3MgaW5cbiAgICAgICAgbGV0IHRoaXNfcGFyc2UgPSBta190aGlzX3BhcnNlIH5wYXJzZV9wb3MgbXlfcGFyc2UgaW5cbiAgICAgICAgaWYgbl9wYXJzZWQgPSBsZW5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IG5ld19sZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gICAgICAgICAgbG9vcCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOm5ld19sZW4pXG4gICAgICAgIGVsc2UgbG9vcCB0aGlzX3BhcnNlIH5wb3M6YnVmX3BvcyB+bGVuOihsZW4gLSBuX3BhcnNlZClcbiAgICAgIHwgQ29udCAoXywgdGhpc19wYXJzZSkgLT4gbG9vcCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOihpbnB1dCBpYyBidWYgMCBidWZfbGVuKSlcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWYgd2l0aFxuICAgICAgfCBPayBzZXhwIC0+IHNleHAgOjogIXJldl9zZXhwc19yZWZcbiAgICAgIHwgRXJyb3IgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlIC0+ICFyZXZfc2V4cHNfcmVmXG4gICAgICB8IEVycm9yIGNvbnRfc3RhdGUgLT5cbiAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAoXCJTZXhwbGliLlNleHAuaW5wdXRfcmV2X3NleHBzOiByZWFjaGVkIEVPRiB3aGlsZSBpbiBzdGF0ZSBcIlxuICAgICAgICAgICBeIENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUpKVxuICBpblxuICBsZXQgbGVuID0gaW5wdXQgaWMgYnVmIDAgYnVmX2xlbiBpblxuICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSBpblxuICBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW5cbjs7XG5cbmxldCBpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID1cbiAgZ2VuX2lucHV0X3Jldl9zZXhwcyBwYXJzZSB+d3NfYnVmOlwiIFwiID9wYXJzZV9wb3MgP2J1ZiBpY1xuOztcblxubGV0IGlucHV0X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYyA9IExpc3QucmV2IChpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljKVxuXG4oKiBvZl9zdHJpbmcgYW5kIG9mX2JpZ3N0cmluZyAqKVxuXG5sZXQgb2Zfc3RyaW5nX2JpZ3N0cmluZyBsb2MgbXlfcGFyc2Ugd3NfYnVmIGdldF9sZW4gZ2V0X3N1YiBzdHIgPVxuICBtYXRjaCBteV9wYXJzZSA/cGFyc2VfcG9zOk5vbmUgP2xlbjpOb25lIHN0ciB3aXRoXG4gIHwgRG9uZSAoc2V4cCwgcGFyc2VfcG9zKSAtPlxuICAgIChtYXRjaCBteV9wYXJzZSA/cGFyc2VfcG9zOihTb21lIHBhcnNlX3BvcykgP2xlbjpOb25lIHN0ciB3aXRoXG4gICAgIHwgRG9uZSAoX3NleHAyLCBfKSAtPlxuICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLlNleHAuJXM6IGdvdCBtdWx0aXBsZSBTLWV4cHJlc3Npb25zIHdoZXJlIG9ubHkgb25lIHdhcyBleHBlY3RlZC5cIlxuICAgICAgICAgICAgbG9jKVxuICAgICB8IENvbnQgKENvbnRfc3RhdGUuUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlLCBfKSAtPiBzZXhwXG4gICAgIHwgQ29udCAoXywgXykgLT5cbiAgICAgICAoKiBub3QgdXNpbmcgW2ZlZWRfZW5kX29mX2lucHV0XSBoZXJlIG1lYW5zIFwiYSBiXCIgd2lsbCBlbmQgdXAgaGVyZSBhbmQgbm90IGluXG4gICAgICAgICAgXCJtdWx0aXBsZSBTLWV4cHJlc3Npb25zXCIgYnJhbmNoLCBidXQgaXQgZG9lc24ndCBtYXR0ZXIgdGhhdCBtdWNoICopXG4gICAgICAgZmFpbHdpdGhcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICBcIlNleHBsaWIuU2V4cC4lczogUy1leHByZXNzaW9uIGZvbGxvd2VkIGJ5IGRhdGEgYXQgcG9zaXRpb24gJWQuLi5cIlxuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBwYXJzZV9wb3MuYnVmX3BvcykpXG4gIHwgQ29udCAoXywgdGhpc19wYXJzZSkgLT5cbiAgICAobWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiB3aXRoXG4gICAgIHwgT2sgc2V4cCAtPiBzZXhwXG4gICAgIHwgRXJyb3IgY29udF9zdGF0ZSAtPlxuICAgICAgIGxldCBjb250X3N0YXRlX3N0ciA9IENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUgaW5cbiAgICAgICBmYWlsd2l0aFxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5TZXhwLiVzOiBpbmNvbXBsZXRlIFMtZXhwcmVzc2lvbiB3aGlsZSBpbiBzdGF0ZSAlczogJXNcIlxuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBjb250X3N0YXRlX3N0clxuICAgICAgICAgICAgKGdldF9zdWIgc3RyIDAgKGdldF9sZW4gc3RyKSkpKVxuOztcblxubGV0IG9mX3N0cmluZyBzdHIgPSBvZl9zdHJpbmdfYmlnc3RyaW5nIFwib2Zfc3RyaW5nXCIgcGFyc2UgXCIgXCIgU3RyaW5nLmxlbmd0aCBTdHJpbmcuc3ViIHN0clxubGV0IG9mX3N0cmluZ19tYW55IHN0ciA9IFBhcnNleHAuTWFueS5wYXJzZV9zdHJpbmdfZXhuIHN0clxuXG5sZXQgZ2V0X2JzdHJfc3ViX3N0ciBic3RyIHBvcyBsZW4gPVxuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIEJ5dGVzLnNldCBzdHIgaSBic3RyLntwb3MgKyBpfVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuOztcblxubGV0IGJzdHJfd3NfYnVmID0gQXJyYXkxLmNyZWF0ZSBjaGFyIGNfbGF5b3V0IDFcbmxldCAoKSA9IGJzdHJfd3NfYnVmLnswfSA8LSAnICdcblxubGV0IG9mX2JpZ3N0cmluZyBic3RyID1cbiAgb2Zfc3RyaW5nX2JpZ3N0cmluZ1xuICAgIFwib2ZfYmlnc3RyaW5nXCJcbiAgICBwYXJzZV9iaWdzdHJpbmdcbiAgICBic3RyX3dzX2J1ZlxuICAgIEFycmF5MS5kaW1cbiAgICBnZXRfYnN0cl9zdWJfc3RyXG4gICAgYnN0clxuOztcblxuKCogTG9hZGluZyAqKVxuXG5sZXQgZ2VuX2xvYWRfcmV2X3NleHBzIGlucHV0X3Jldl9zZXhwcyA/YnVmIGZpbGUgPVxuICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgdHJ5XG4gICAgbGV0IHNleHBzID0gaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3M6Tm9uZSA/YnVmIGljIGluXG4gICAgY2xvc2VfaW4gaWM7XG4gICAgc2V4cHNcbiAgd2l0aFxuICB8IGV4YyAtPlxuICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgIHJhaXNlIGV4Y1xuOztcblxubGV0IGxvYWRfcmV2X3NleHBzID9idWYgZmlsZSA9IGdlbl9sb2FkX3Jldl9zZXhwcyBpbnB1dF9yZXZfc2V4cHMgP2J1ZiBmaWxlXG5sZXQgbG9hZF9zZXhwcyA/YnVmIGZpbGUgPSBMaXN0LnJldiAobG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlKVxubGV0IGdlbl9sb2FkX3NleHBfbG9jID0gXCJTZXhwbGliLlNleHAuZ2VuX2xvYWRfc2V4cFwiXG5cbmxldCBnZW5fbG9hZF9zZXhwIG15X3BhcnNlID8oc3RyaWN0ID0gdHJ1ZSkgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSA9XG4gIGxldCBidWZfbGVuID0gQnl0ZXMubGVuZ3RoIGJ1ZiBpblxuICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgbGV0IHJlYyBsb29wIHRoaXNfcGFyc2UgPVxuICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZjpcIiBcIiB3aXRoXG4gICAgICB8IE9rIHNleHAgLT4gc2V4cFxuICAgICAgfCBFcnJvciBjb250X3N0YXRlIC0+XG4gICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICBcIiVzOiBFT0YgaW4gJXMgd2hpbGUgaW4gc3RhdGUgJXNcIlxuICAgICAgICAgICAgIGdlbl9sb2FkX3NleHBfbG9jXG4gICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgIChDb250X3N0YXRlLnRvX3N0cmluZyBjb250X3N0YXRlKSkpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgfCBEb25lIChzZXhwLCAoeyBQYXJzZV9wb3MuYnVmX3BvczsgXyB9IGFzIHBhcnNlX3BvcykpIHdoZW4gc3RyaWN0IC0+XG4gICAgICAgIGxldCByZWMgc3RyaWN0X2xvb3AgdGhpc19wYXJzZSB+cG9zIH5sZW4gPVxuICAgICAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvcyB+bGVuIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgICAgIHwgRG9uZSBfIC0+XG4gICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAoc3ByaW50ZiBcIiVzOiBtb3JlIHRoYW4gb25lIFMtZXhwcmVzc2lvbiBpbiBmaWxlICVzXCIgZ2VuX2xvYWRfc2V4cF9sb2MgZmlsZSlcbiAgICAgICAgICB8IENvbnQgKGNvbnRfc3RhdGUsIHRoaXNfcGFyc2UpIC0+XG4gICAgICAgICAgICBsZXQgbGVuID0gaW5wdXQgaWMgYnVmIDAgYnVmX2xlbiBpblxuICAgICAgICAgICAgaWYgbGVuID4gMFxuICAgICAgICAgICAgdGhlbiBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuXG4gICAgICAgICAgICBlbHNlIGlmIGNvbnRfc3RhdGUgPSBDb250X3N0YXRlLlBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgICAgICAgICAgdGhlbiBzZXhwXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICBcIiVzOiAlcyBpbiBzdGF0ZSAlcyBsb2FkaW5nIGZpbGUgJXNcIlxuICAgICAgICAgICAgICAgICAgIGdlbl9sb2FkX3NleHBfbG9jXG4gICAgICAgICAgICAgICAgICAgXCJhZGRpdGlvbmFsIGluY29tcGxldGUgZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgKENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUpXG4gICAgICAgICAgICAgICAgICAgZmlsZSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRoaXNfcGFyc2UgPSBta190aGlzX3BhcnNlIH5wYXJzZV9wb3MgbXlfcGFyc2UgaW5cbiAgICAgICAgc3RyaWN0X2xvb3AgdGhpc19wYXJzZSB+cG9zOmJ1Zl9wb3MgfmxlbjoobGVuIC0gYnVmX3BvcylcbiAgICAgIHwgRG9uZSAoc2V4cCwgXykgLT4gc2V4cFxuICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UpXG4gIGluXG4gIHRyeVxuICAgIGxldCBzZXhwID0gbG9vcCAobWtfdGhpc19wYXJzZSBteV9wYXJzZSkgaW5cbiAgICBjbG9zZV9pbiBpYztcbiAgICBzZXhwXG4gIHdpdGhcbiAgfCBleGMgLT5cbiAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICByYWlzZSBleGNcbjs7XG5cbmxldCBsb2FkX3NleHAgP3N0cmljdCA/YnVmIGZpbGUgPSBnZW5fbG9hZF9zZXhwIHBhcnNlID9zdHJpY3QgP2J1ZiBmaWxlXG5cbm1vZHVsZSBBbm5vdGF0ZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBbm5vdFxuXG4gIGxldCBwYXJzZSA9IHBhcnNlX3N0cl9hbm5vdFxuICBsZXQgcGFyc2VfYmlnc3RyaW5nID0gcGFyc2VfYmlnc3RyaW5nX2Fubm90XG5cbiAgbGV0IGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPVxuICAgIGdlbl9pbnB1dF9yZXZfc2V4cHMgcGFyc2UgfndzX2J1ZjpcIiBcIiA/cGFyc2VfcG9zID9idWYgaWNcbiAgOztcblxuICBsZXQgaW5wdXRfc2V4cCA/cGFyc2VfcG9zIGljID0gZ2VuX2lucHV0X3NleHAgcGFyc2UgP3BhcnNlX3BvcyBpY1xuICBsZXQgaW5wdXRfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID0gTGlzdC5yZXYgKGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMpXG5cbiAgbGV0IG9mX3N0cmluZyBzdHIgPVxuICAgIG9mX3N0cmluZ19iaWdzdHJpbmcgXCJBbm5vdGF0ZWQub2Zfc3RyaW5nXCIgcGFyc2UgXCIgXCIgU3RyaW5nLmxlbmd0aCBTdHJpbmcuc3ViIHN0clxuICA7O1xuXG4gIGxldCBvZl9iaWdzdHJpbmcgYnN0ciA9XG4gICAgb2Zfc3RyaW5nX2JpZ3N0cmluZ1xuICAgICAgXCJBbm5vdGF0ZWQub2ZfYmlnc3RyaW5nXCJcbiAgICAgIHBhcnNlX2JpZ3N0cmluZ1xuICAgICAgYnN0cl93c19idWZcbiAgICAgIEFycmF5MS5kaW1cbiAgICAgIGdldF9ic3RyX3N1Yl9zdHJcbiAgICAgIGJzdHJcbiAgOztcblxuICBsZXQgbG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfcmV2X3NleHBzIGlucHV0X3Jldl9zZXhwcyA/YnVmIGZpbGVcbiAgbGV0IGxvYWRfc2V4cHMgP2J1ZiBmaWxlID0gTGlzdC5yZXYgKGxvYWRfcmV2X3NleHBzID9idWYgZmlsZSlcbiAgbGV0IGxvYWRfc2V4cCA/c3RyaWN0ID9idWYgZmlsZSA9IGdlbl9sb2FkX3NleHAgcGFyc2UgP3N0cmljdCA/YnVmIGZpbGVcblxuICBsZXQgY29udiBmIGFubm90X3NleHAgPVxuICAgIGxldCBzZXhwID0gZ2V0X3NleHAgYW5ub3Rfc2V4cCBpblxuICAgIHRyeSBgUmVzdWx0IChmIHNleHApIHdpdGhcbiAgICB8IE9mX3NleHBfZXJyb3IgKGV4YywgYmFkX3NleHApIGFzIGUgLT5cbiAgICAgIChtYXRjaCBmaW5kX3NleHAgYW5ub3Rfc2V4cCBiYWRfc2V4cCB3aXRoXG4gICAgICAgfCBOb25lIC0+IHJhaXNlIGVcbiAgICAgICB8IFNvbWUgYmFkX2Fubm90X3NleHAgLT4gYEVycm9yIChleGMsIGJhZF9hbm5vdF9zZXhwKSlcbiAgOztcblxuICBsZXQgZ2V0X2NvbnZfZXhuIH5maWxlIH5leGMgYW5ub3Rfc2V4cCA9XG4gICAgbGV0IHJhbmdlID0gZ2V0X3JhbmdlIGFubm90X3NleHAgaW5cbiAgICBsZXQgeyBzdGFydF9wb3MgPSB7IGxpbmU7IGNvbDsgb2Zmc2V0ID0gXyB9OyBlbmRfcG9zID0gXyB9ID0gcmFuZ2UgaW5cbiAgICBsZXQgbG9jID0gc3ByaW50ZiBcIiVzOiVkOiVkXCIgZmlsZSBsaW5lIGNvbCBpblxuICAgIE9mX3NleHBfZXJyb3IgKEFubm90LkNvbnZfZXhuIChsb2MsIGV4YyksIGdldF9zZXhwIGFubm90X3NleHApXG4gIDs7XG5lbmRcblxubGV0IGxvYWRfc2V4cF9jb252ID8oc3RyaWN0ID0gdHJ1ZSkgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSBmID1cbiAgbGV0IHNleHAgPSBsb2FkX3NleHAgfnN0cmljdCB+YnVmIGZpbGUgaW5cbiAgdHJ5IGBSZXN1bHQgKGYgc2V4cCkgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyAtPiBBbm5vdGF0ZWQuY29udiBmIChBbm5vdGF0ZWQubG9hZF9zZXhwIH5zdHJpY3QgfmJ1ZiBmaWxlKVxuOztcblxubGV0IHJhaXNlX2NvbnZfZXhuIH5maWxlID0gZnVuY3Rpb25cbiAgfCBgUmVzdWx0IHJlcyAtPiByZXNcbiAgfCBgRXJyb3IgKGV4YywgYW5ub3Rfc2V4cCkgLT4gcmFpc2UgKEFubm90YXRlZC5nZXRfY29udl9leG4gfmZpbGUgfmV4YyBhbm5vdF9zZXhwKVxuOztcblxubGV0IGxvYWRfc2V4cF9jb252X2V4biA/c3RyaWN0ID9idWYgZmlsZSBmID1cbiAgcmFpc2VfY29udl9leG4gfmZpbGUgKGxvYWRfc2V4cF9jb252ID9zdHJpY3QgP2J1ZiBmaWxlIGYpXG47O1xuXG5sZXQgbG9hZF9zZXhwc19jb252ID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGZpbGUgZiA9XG4gIGxldCByZXZfc2V4cHMgPSBsb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgaW5cbiAgdHJ5IExpc3QucmV2X21hcCAoZnVuIHNleHAgLT4gYFJlc3VsdCAoZiBzZXhwKSkgcmV2X3NleHBzIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIF8gYXMgZSAtPlxuICAgIChtYXRjaCBBbm5vdGF0ZWQubG9hZF9yZXZfc2V4cHMgfmJ1ZiBmaWxlIHdpdGhcbiAgICAgfCBbXSAtPlxuICAgICAgICgqIEZpbGUgaXMgbm93IGVtcHR5IC0gcGVyaGFwcyBpdCB3YXMgYSB0ZW1wb3JhcnkgZmlsZSBoYW5kbGU/ICopXG4gICAgICAgcmFpc2UgZVxuICAgICB8IHJldl9hbm5vdF9zZXhwcyAtPlxuICAgICAgIExpc3QucmV2X21hcCAoZnVuIGFubm90X3NleHAgLT4gQW5ub3RhdGVkLmNvbnYgZiBhbm5vdF9zZXhwKSByZXZfYW5ub3Rfc2V4cHMpXG47O1xuXG5sZXQgbG9hZF9zZXhwc19jb252X2V4biA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlIGYgPVxuICBsZXQgcmV2X3NleHBzID0gbG9hZF9yZXZfc2V4cHMgfmJ1ZiBmaWxlIGluXG4gIHRyeSBMaXN0LnJldl9tYXAgZiByZXZfc2V4cHMgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+XG4gICAgKG1hdGNoIEFubm90YXRlZC5sb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgd2l0aFxuICAgICB8IFtdIC0+XG4gICAgICAgKCogRmlsZSBpcyBub3cgZW1wdHkgLSBwZXJoYXBzIGl0IHdhcyBhIHRlbXBvcmFyeSBmaWxlIGhhbmRsZT8gKilcbiAgICAgICByYWlzZSBlXG4gICAgIHwgcmV2X2Fubm90X3NleHBzIC0+XG4gICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAoZnVuIGFubm90X3NleHAgLT4gcmFpc2VfY29udl9leG4gfmZpbGUgKEFubm90YXRlZC5jb252IGYgYW5ub3Rfc2V4cCkpXG4gICAgICAgICByZXZfYW5ub3Rfc2V4cHMpXG47O1xuXG5sZXQgZ2VuX29mX3N0cmluZ19jb252IG9mX3N0cmluZyBhbm5vdF9vZl9zdHJpbmcgc3RyIGYgPVxuICBsZXQgc2V4cCA9IG9mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IGBSZXN1bHQgKGYgc2V4cCkgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyAtPiBBbm5vdGF0ZWQuY29udiBmIChhbm5vdF9vZl9zdHJpbmcgc3RyKVxuOztcblxubGV0IG9mX3N0cmluZ19jb252IHN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252IG9mX3N0cmluZyBBbm5vdGF0ZWQub2Zfc3RyaW5nIHN0ciBmXG5cbmxldCBvZl9iaWdzdHJpbmdfY29udiBic3RyIGYgPVxuICBnZW5fb2Zfc3RyaW5nX2NvbnYgb2ZfYmlnc3RyaW5nIEFubm90YXRlZC5vZl9iaWdzdHJpbmcgYnN0ciBmXG47O1xuXG5tb2R1bGUgT2Zfc3RyaW5nX2NvbnZfZXhuID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBleGMgOiBleG5cbiAgICA7IHNleHAgOiBUeXBlLnRcbiAgICA7IHN1Yl9zZXhwIDogVHlwZS50XG4gICAgfVxuXG4gIGV4Y2VwdGlvbiBFIG9mIHRcblxuICBsZXQgKCkgPVxuICAgIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEVdIChmdW5jdGlvblxuICAgICAgfCBFIG9zY2UgLT5cbiAgICAgICAgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2VcbiAgICAgICAgICAoKVxuICAgICAgICAgIH5pbnZhbGlkX3NleHA6b3NjZS5zdWJfc2V4cFxuICAgICAgICAgIH5leG46b3NjZS5leGNcbiAgICAgICAgICB+Y29udGFpbmluZ19zZXhwOm9zY2Uuc2V4cFxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcbmVuZFxuXG5sZXQgZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9zdHJpbmcgc3RyIGYgPVxuICBsZXQgc2V4cCA9IG9mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IGYgc2V4cCB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciAoZXhjLCBzdWJfc2V4cCkgLT5cbiAgICByYWlzZSAoT2Zfc3RyaW5nX2NvbnZfZXhuLkUgeyBPZl9zdHJpbmdfY29udl9leG4uZXhjOyBzZXhwOyBzdWJfc2V4cCB9KVxuOztcblxubGV0IG9mX3N0cmluZ19jb252X2V4biBzdHIgZiA9IGdlbl9vZl9zdHJpbmdfY29udl9leG4gb2Zfc3RyaW5nIHN0ciBmXG5sZXQgb2ZfYmlnc3RyaW5nX2NvbnZfZXhuIGJzdHIgZiA9IGdlbl9vZl9zdHJpbmdfY29udl9leG4gb2ZfYmlnc3RyaW5nIGJzdHIgZlxuXG5sZXQgb2Zfc3RyaW5nX21hbnlfY29udl9leG4gc3RyIGYgPVxuICBsZXQgc2V4cHMgPSBvZl9zdHJpbmdfbWFueSBzdHIgaW5cbiAgTGlzdC5tYXAgKGZ1biBzZXhwIC0+IGdlbl9vZl9zdHJpbmdfY29udl9leG4gKGZ1biB4IC0+IHgpIHNleHAgZikgc2V4cHNcbjs7XG5cbigqIFV0aWxpdGllcyBmb3IgYXV0b21hdGVkIHR5cGUgY29udmVyc2lvbnMgKilcblxubGV0IHVuaXQgPSBMaXN0IFtdXG5cbmxldCBpc191bml0ID0gZnVuY3Rpb25cbiAgfCBMaXN0IFtdIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5leHRlcm5hbCBzZXhwX29mX3QgOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0X29mX3NleHAgOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbigqIFV0aWxpdGllcyBmb3IgY29udmVyc2lvbiBlcnJvciBoYW5kbGluZyAqKVxuXG50eXBlIGZvdW5kID1cbiAgWyBgRm91bmRcbiAgfCBgUG9zIG9mIGludCAqIGZvdW5kXG4gIF1cblxudHlwZSBzZWFyY2hfcmVzdWx0ID1cbiAgWyBgTm90X2ZvdW5kXG4gIHwgZm91bmRcbiAgXVxuXG5sZXQgcmVjIHNlYXJjaF9waHlzaWNhbCBzZXhwIH5jb250YWluZWQgPVxuICBpZiBzZXhwID09IGNvbnRhaW5lZFxuICB0aGVuIGBGb3VuZFxuICBlbHNlIChcbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEF0b20gXyAtPiBgTm90X2ZvdW5kXG4gICAgfCBMaXN0IGxzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGBOb3RfZm91bmRcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICBsZXQgcmVzID0gc2VhcmNoX3BoeXNpY2FsIGggfmNvbnRhaW5lZCBpblxuICAgICAgICAgIChtYXRjaCByZXMgd2l0aFxuICAgICAgICAgICB8IGBOb3RfZm91bmQgLT4gbG9vcCAoaSArIDEpIHRcbiAgICAgICAgICAgfCAjZm91bmQgYXMgZm91bmQgLT4gYFBvcyAoaSwgZm91bmQpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgMCBsc3QpXG47O1xuXG5sZXQgcmVjIHN1YnN0X2ZvdW5kIHNleHAgfnN1YnN0ID0gZnVuY3Rpb25cbiAgfCBgRm91bmQgLT4gc3Vic3RcbiAgfCBgUG9zIChwb3MsIGZvdW5kKSAtPlxuICAgIChtYXRjaCBzZXhwIHdpdGhcbiAgICAgfCBBdG9tIF8gLT4gZmFpbHdpdGggXCJTZXhwbGliLlNleHAuc3Vic3RfZm91bmQ6IGF0b20gd2hlbiBwb3NpdGlvbiByZXF1ZXN0ZWRcIlxuICAgICB8IExpc3QgbHN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGFjYyBwb3MgPSBmdW5jdGlvblxuICAgICAgICAgfCBbXSAtPiBmYWlsd2l0aCBcIlNleHBsaWIuU2V4cC5zdWJzdF9mb3VuZDogc2hvcnQgbGlzdCB3aGVuIHBvc2l0aW9uIHJlcXVlc3RlZFwiXG4gICAgICAgICB8IGggOjogdCB3aGVuIHBvcyA8PiAwIC0+IGxvb3AgKGggOjogYWNjKSAocG9zIC0gMSkgdFxuICAgICAgICAgfCBoIDo6IHQgLT4gTGlzdCAoTGlzdC5yZXZfYXBwZW5kIGFjYyAoc3Vic3RfZm91bmQgaCB+c3Vic3QgZm91bmQgOjogdCkpXG4gICAgICAgaW5cbiAgICAgICBsb29wIFtdIHBvcyBsc3QpXG47O1xuIiwiKCogcGFja2FnaW5nIG9mIGFubm90YXRlZCBzZXhwIGZ1bmN0aW9ucyAqKVxuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBsZXQgaXRlciB0IH5mID0gTGlzdC5pdGVyIGYgdFxuICBsZXQgbWFwIHQgfmYgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGYgdClcbmVuZFxuXG5pbmNsdWRlIFR5cGVfd2l0aF9sYXlvdXRcblxudHlwZSBwb3MgPSBTcmNfcG9zLlJlbGF0aXZlLnQgPVxuICB7IHJvdyA6IGludFxuICA7IGNvbCA6IGludFxuICB9XG5cbmxldCBzZXhwX29mX3BvcyA9IFNyY19wb3MuUmVsYXRpdmUuc2V4cF9vZl90XG5cbm1vZHVsZSBMZXhlciA9IHN0cnVjdFxuICBsZXQgbWFpbiA9IExleGVyLm1haW5fd2l0aF9sYXlvdXRcbmVuZFxuXG5tb2R1bGUgUGFyc2VyID0gUGFyc2VyX3dpdGhfbGF5b3V0XG5cbm1vZHVsZSBSZW5kZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlbF9wb3MgPSBTcmNfcG9zLlJlbGF0aXZlXG4gIG1vZHVsZSBBYnNfcG9zID0gU3JjX3Bvcy5BYnNvbHV0ZVxuXG4gIHR5cGUgbGFzdF9hdG9tID1cbiAgICB7IGltbWVkX2FmdGVyIDogQWJzX3Bvcy50XG4gICAgOyB1bmVzY2FwZWQgOiBib29sXG4gICAgfVxuXG4gIHR5cGUgc3RhdGUgPVxuICAgIHsgbXV0YWJsZSByb3dfc2hpZnQgOiBSZWxfcG9zLnRcbiAgICA7IG11dGFibGUgY3VycmVudCA6IEFic19wb3MudFxuICAgIDsgbXV0YWJsZSBsYXN0X2F0b20gOiBsYXN0X2F0b20gb3B0aW9uXG4gICAgOyBtdXRhYmxlIGxhc3RfY29tbWVudF9yb3cgOiBpbnRcbiAgICB9XG5cbiAgKCogdGhlIHBvaW50IG9mIFtpbW1lZF9hZnRlcl9sYXN0X2F0b21dIGlzIHRvIHByZXZlbnRcbiAgICAgKEEgQiBDKSBmcm9tIHJlbmRlcmluZyBhcyAoQSBCQkMpIGFmdGVyIHdlIHJlcGxhY2UgQiB3aXRoIEJCICopXG5cbiAgdHlwZSAnYSB0ID0gKGNoYXIgLT4gdW5pdCkgLT4gc3RhdGUgLT4gJ2FcblxuICBsZXQgcmV0dXJuIGEgX3B1dGMgX3N0ID0gYVxuICBsZXQgYmluZCBtIH5mIHB1dGMgc3QgPSBmIChtIHB1dGMgc3QpIHB1dGMgc3RcblxuICBsZXQgcnVuIHB1dGMgbSA9XG4gICAgbVxuICAgICAgcHV0Y1xuICAgICAgeyByb3dfc2hpZnQgPSBSZWxfcG9zLnplcm9cbiAgICAgIDsgY3VycmVudCA9IEFic19wb3Mub3JpZ2luXG4gICAgICA7IGxhc3RfYXRvbSA9IE5vbmVcbiAgICAgIDsgbGFzdF9jb21tZW50X3JvdyA9IDAgKCogYmVmb3JlIHRoZSBmaWxlIHN0YXJ0cyAqKVxuICAgICAgfVxuICA7O1xuXG4gIGxldCBlbWl0X2NoYXIgcHV0YyBzdCBjID1cbiAgICBsZXQgeyBBYnNfcG9zLmNvbDsgcm93IH0gPSBzdC5jdXJyZW50IGluXG4gICAgcHV0YyBjO1xuICAgIGlmIGMgPSAnXFxuJ1xuICAgIHRoZW4gc3QuY3VycmVudCA8LSB7IEFic19wb3Mucm93ID0gMSArIHJvdzsgY29sID0gMSB9XG4gICAgZWxzZSBzdC5jdXJyZW50IDwtIHsgQWJzX3Bvcy5yb3c7IGNvbCA9IDEgKyBjb2wgfVxuICA7O1xuXG4gIGxldCBlbWl0X3N0cmluZyBwdXRjIHN0IHN0ciA9XG4gICAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgICAgZW1pdF9jaGFyIHB1dGMgc3Qgc3RyLltpXVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgZW1pdF9jaGFycyBwdXRjIHN0IGMgfm4gPSBlbWl0X3N0cmluZyBwdXRjIHN0IChTdHJpbmcubWFrZSBuIGMpXG5cbiAgbGV0IGFkdmFuY2UgcHV0YyB+YW5jaG9yIHN0IH5ieTpkZWx0YSB+dW5lc2NhcGVkX2F0b20gfmxpbmVfY29tbWVudCA9XG4gICAgbGV0IG5ld19wb3MgPSBBYnNfcG9zLmFkZCAoQWJzX3Bvcy5hZGQgYW5jaG9yIGRlbHRhKSBzdC5yb3dfc2hpZnQgaW5cbiAgICBsZXQgbmVlZF90b19sZWF2ZV9yb29tX2JldHdlZW5fdHdvX3VuZXNjYXBlZF9hdG9tc19sZXN0X3RoZXlfYmVjb21lX29uZSA9XG4gICAgICB1bmVzY2FwZWRfYXRvbVxuICAgICAgJiZcbiAgICAgIG1hdGNoIHN0Lmxhc3RfYXRvbSB3aXRoXG4gICAgICB8IFNvbWUgeyBpbW1lZF9hZnRlcjsgdW5lc2NhcGVkID0gcHJldl91bmVzY2FwZWQgfSAtPlxuICAgICAgICBuZXdfcG9zID0gaW1tZWRfYWZ0ZXIgJiYgcHJldl91bmVzY2FwZWRcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIGluXG4gICAgKCogYXZvaWQgam9pbmluZyBzdWJzZXF1ZW50IGl0ZW1zIGludG8gYSBwcmVjZWRpbmcgbGluZSBjb21tZW50ICopXG4gICAgbGV0IG5lZWRfdG9fY2xlYXJfbGluZV9jb21tZW50ID0gbmV3X3Bvcy5yb3cgPSBzdC5sYXN0X2NvbW1lbnRfcm93IGluXG4gICAgbGV0IG5lZWRfdG9fcmVwb3NpdGlvbiA9XG4gICAgICAobm90IChBYnNfcG9zLmdlcSBuZXdfcG9zIHN0LmN1cnJlbnQpKVxuICAgICAgfHwgbmVlZF90b19jbGVhcl9saW5lX2NvbW1lbnRcbiAgICAgIHx8IG5lZWRfdG9fbGVhdmVfcm9vbV9iZXR3ZWVuX3R3b191bmVzY2FwZWRfYXRvbXNfbGVzdF90aGV5X2JlY29tZV9vbmVcbiAgICBpblxuICAgIGxldCByb3dfZGVsdGEsIG5ld19wb3MgPVxuICAgICAgaWYgbmVlZF90b19yZXBvc2l0aW9uXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogcmVwb3NpdGlvbmluZyBoZXVyaXN0aWM6IGp1c3QgbW92ZSB0byB0aGUgbmV4dCBmcmVzaCByb3cgKilcbiAgICAgICAgbGV0IG5ld19yb3cgPSAxICsgc3QuY3VycmVudC5BYnNfcG9zLnJvdyBpblxuICAgICAgICBsZXQgcm93X2RlbHRhID0gbmV3X3JvdyAtIG5ld19wb3MuQWJzX3Bvcy5yb3cgaW5cbiAgICAgICAgcm93X2RlbHRhLCB7IEFic19wb3Mucm93ID0gbmV3X3JvdzsgY29sID0gbmV3X3Bvcy5BYnNfcG9zLmNvbCB9KVxuICAgICAgZWxzZSAwLCBuZXdfcG9zXG4gICAgaW5cbiAgICAoKiBhZHZhbmNlIHRvIG5ld19wb3MgYnkgZW1pdHRpbmcgd2hpdGVzcGFjZSAqKVxuICAgIGlmIG5ld19wb3MuQWJzX3Bvcy5yb3cgPiBzdC5jdXJyZW50LkFic19wb3Mucm93XG4gICAgdGhlbiAoXG4gICAgICBsZXQgbiA9IG5ld19wb3MuQWJzX3Bvcy5yb3cgLSBzdC5jdXJyZW50LkFic19wb3Mucm93IGluXG4gICAgICBlbWl0X2NoYXJzIHB1dGMgc3QgJ1xcbicgfm4pO1xuICAgIGlmIG5ld19wb3MuQWJzX3Bvcy5jb2wgPiBzdC5jdXJyZW50LkFic19wb3MuY29sXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbiA9IG5ld19wb3MuQWJzX3Bvcy5jb2wgLSBzdC5jdXJyZW50LkFic19wb3MuY29sIGluXG4gICAgICBlbWl0X2NoYXJzIHB1dGMgc3QgJyAnIH5uKTtcbiAgICBhc3NlcnQgKG5ld19wb3MgPSBzdC5jdXJyZW50KTtcbiAgICBpZiBsaW5lX2NvbW1lbnQgdGhlbiBzdC5sYXN0X2NvbW1lbnRfcm93IDwtIHN0LmN1cnJlbnQucm93O1xuICAgIHN0LnJvd19zaGlmdFxuICAgIDwtIHsgc3Qucm93X3NoaWZ0IHdpdGggUmVsX3Bvcy5yb3cgPSBzdC5yb3dfc2hpZnQuUmVsX3Bvcy5yb3cgKyByb3dfZGVsdGEgfVxuICA7O1xuXG4gIGxldCByZWMgcmVuZGVyX3QgcHV0YyB+YW5jaG9yIChzdCA6IHN0YXRlKSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEF0b20gKGRlbHRhLCB0ZXh0LCBmbXRfdGV4dCkgLT5cbiAgICAgIGxldCBmbXRfdGV4dCA9XG4gICAgICAgIG1hdGNoIGZtdF90ZXh0IHdpdGhcbiAgICAgICAgfCBOb25lIHwgU29tZSBcIlwiIC0+IFByZV9zZXhwLm1hY2hfbWF5YmVfZXNjX3N0ciB0ZXh0XG4gICAgICAgIHwgU29tZSB0ZXh0IC0+IHRleHRcbiAgICAgIGluXG4gICAgICBsZXQgdW5lc2NhcGVkID0gZm10X3RleHQuWzBdIDw+ICdcIicgaW5cbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6ZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206dW5lc2NhcGVkIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBlbWl0X3N0cmluZyBwdXRjIHN0IGZtdF90ZXh0O1xuICAgICAgc3QubGFzdF9hdG9tIDwtIFNvbWUgeyBpbW1lZF9hZnRlciA9IHN0LmN1cnJlbnQ7IHVuZXNjYXBlZCB9XG4gICAgfCBMaXN0IChzdGFydF9kZWx0YSwgdG9jcywgZW5kX2RlbHRhKSAtPlxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpzdGFydF9kZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50OmZhbHNlO1xuICAgICAgbGV0IGNoaWxkX2FuY2hvciA9IEFic19wb3Muc3ViIHN0LmN1cnJlbnQgc3Qucm93X3NoaWZ0IGluXG4gICAgICBlbWl0X2NoYXIgcHV0YyBzdCAnKCc7XG4gICAgICBMaXN0Lml0ZXIgdG9jcyB+ZjooZnVuIHRvYyAtPiByZW5kZXJfdG9jIHB1dGMgfmFuY2hvcjpjaGlsZF9hbmNob3Igc3QgdG9jKTtcbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6ZW5kX2RlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBlbWl0X2NoYXIgcHV0YyBzdCAnKSc7XG4gICAgICAoKVxuXG4gIGFuZCByZW5kZXJfdG9jIHB1dGMgfmFuY2hvciBzdCA9IGZ1bmN0aW9uXG4gICAgfCBTZXhwIHQgLT4gcmVuZGVyX3QgcHV0YyB+YW5jaG9yIHN0IHRcbiAgICB8IENvbW1lbnQgYyAtPiByZW5kZXJfYyBwdXRjIH5hbmNob3Igc3QgY1xuXG4gIGFuZCByZW5kZXJfYyBwdXRjIH5hbmNob3Igc3QgPSBmdW5jdGlvblxuICAgIHwgUGxhaW5fY29tbWVudCAoZGVsdGEsIHRleHQpIC0+XG4gICAgICBsZXQgbGluZV9jb21tZW50ID0gU3RyaW5nLmxlbmd0aCB0ZXh0ID4gMCAmJiB0ZXh0LlswXSA9ICc7JyBpblxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50O1xuICAgICAgZW1pdF9zdHJpbmcgcHV0YyBzdCB0ZXh0XG4gICAgfCBTZXhwX2NvbW1lbnQgKGRlbHRhLCBjcywgdCkgLT5cbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6ZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206ZmFsc2UgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfc3RyaW5nIHB1dGMgc3QgXCIjO1wiO1xuICAgICAgTGlzdC5pdGVyIGNzIH5mOihyZW5kZXJfYyBwdXRjIH5hbmNob3Igc3QpO1xuICAgICAgcmVuZGVyX3QgcHV0YyB+YW5jaG9yIHN0IHRcbiAgOztcblxuICBsZXQgcmVuZGVyIGFzZXhwIHB1dGMgc3QgPSByZW5kZXJfdG9jIHB1dGMgfmFuY2hvcjpBYnNfcG9zLm9yaWdpbiBzdCBhc2V4cFxuICBsZXQgc2V4cCA9IHJlbmRlclxuZW5kXG5cbm1vZHVsZSBGb3JnZXQgPSBzdHJ1Y3RcbiAgKCogSW4gY3BzIHRvIHByZXZlbnQgbm9uLXRhaWwgcmVjdXJzaW9uLlxuICAgICBUaGUgcG9seW1vcnBoaXNtIGluIHRoZSBzaWduYXR1cmUgZW5zdXJlcyB0aGF0IGVhY2ggZnVuY3Rpb24gcmV0dXJuc1xuICAgICBvbmx5IHRocm91Z2ggdGhlIGNvbnRpbnVhdGlvbi4gKilcbiAgbW9kdWxlIENwcyA6IHNpZ1xuICAgIHZhbCBmb3JnZXRfdCA6IHQgLT4gKFR5cGUudCAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvYyA6IHRfb3JfY29tbWVudCAtPiAoVHlwZS50IG9wdGlvbiAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvY3MgOiB0X29yX2NvbW1lbnQgbGlzdCAtPiAoVHlwZS50IGxpc3QgLT4gJ3IpIC0+ICdyXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCByZWMgZm9yZ2V0X3QgdCBrID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBBdG9tIChfLCB4LCBfKSAtPiBrIChUeXBlLkF0b20geClcbiAgICAgIHwgTGlzdCAoXywgdG9jcywgXykgLT4gZm9yZ2V0X3RvY3MgdG9jcyAoZnVuIHhzIC0+IGsgKFR5cGUuTGlzdCB4cykpXG5cbiAgICBhbmQgZm9yZ2V0X3RvY3MgdG9jcyBrID1cbiAgICAgIG1hdGNoIHRvY3Mgd2l0aFxuICAgICAgfCBbXSAtPiBrIFtdXG4gICAgICB8IHRvYyA6OiB0b2NzIC0+XG4gICAgICAgIGZvcmdldF90b2MgdG9jIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBmb3JnZXRfdG9jcyB0b2NzIGtcbiAgICAgICAgICB8IFNvbWUgeCAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoeCA6OiB4cykpKVxuXG4gICAgYW5kIGZvcmdldF90b2MgdG9jIGsgPVxuICAgICAgbWF0Y2ggdG9jIHdpdGhcbiAgICAgIHwgQ29tbWVudCBfIC0+IGsgTm9uZVxuICAgICAgfCBTZXhwIHQgLT4gZm9yZ2V0X3QgdCAoZnVuIHggLT4gayAoU29tZSB4KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdCB4ID0gQ3BzLmZvcmdldF90IHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnQgeCA9IENwcy5mb3JnZXRfdG9jIHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnRzIHggPSBDcHMuZm9yZ2V0X3RvY3MgeCAoZnVuIHkgLT4geSlcbmVuZFxuIiwib3BlbiBQcmludGZcbm9wZW4gQmlnYXJyYXlcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cF9jb252XG5vcGVuIFNleHBcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxudHlwZSBmbG9hdDMyX3ZlYyA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSBmbG9hdDY0X3ZlYyA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSB2ZWMgPSBmbG9hdDY0X3ZlY1xudHlwZSBmbG9hdDMyX21hdCA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBmbG9hdDY0X21hdCA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBtYXQgPSBmbG9hdDY0X21hdFxuXG5sZXQgc2V4cF9vZl9mbG9hdF92ZWMgdmVjID1cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBBcnJheTEuZGltIHZlYyBkb3dudG8gMSBkb1xuICAgIGxzdF9yZWYgOj0gc2V4cF9vZl9mbG9hdCB2ZWMue2l9IDo6ICFsc3RfcmVmXG4gIGRvbmU7XG4gIExpc3QgIWxzdF9yZWZcbjs7XG5cbmxldCBzZXhwX29mX2JpZ3N0cmluZyAoYnN0ciA6IGJpZ3N0cmluZykgPVxuICBsZXQgbiA9IEFycmF5MS5kaW0gYnN0ciBpblxuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHN0ciBpIGJzdHIue2l9XG4gIGRvbmU7XG4gIEF0b20gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyKVxuOztcblxubGV0IHNleHBfb2ZfZmxvYXQzMl92ZWMgKHZlYyA6IGZsb2F0MzJfdmVjKSA9IHNleHBfb2ZfZmxvYXRfdmVjIHZlY1xubGV0IHNleHBfb2ZfZmxvYXQ2NF92ZWMgKHZlYyA6IGZsb2F0NjRfdmVjKSA9IHNleHBfb2ZfZmxvYXRfdmVjIHZlY1xubGV0IHNleHBfb2ZfdmVjICh2ZWMgOiB2ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5cbmxldCBzZXhwX29mX2Zsb2F0X21hdCBtYXQgPVxuICBsZXQgbSA9IEFycmF5Mi5kaW0xIG1hdCBpblxuICBsZXQgbiA9IEFycmF5Mi5kaW0yIG1hdCBpblxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICAoKiBJdCdzIHN1cnByaXNpbmcgdGhhdCB3ZSBzZXJpYWxpemUgW0ZvcnRyYW5fbGF5b3V0XSBtYXRyaWNlcyBpbiByb3ctbWFqb3Igb3JkZXIuIEkgY2FuXG4gICAgIG9ubHkgc3BlY3VsYXRlIHRoYXQgaXQgd2FzIGNob3NlbiBmb3IgcmVhZGFiaWxpdHkuIFRoZSBjYWNoZSBwZXJmb3JtYW5jZSBpc1xuICAgICBpcnJlbGV2YW50IGJlY2F1c2UgcGVvcGxlIHdobyBjYXJlIHdvbid0IHNlcmlhbGl6ZSB0byBzZXhwLiAqKVxuICBmb3Igcm93ID0gbiBkb3dudG8gMSBkb1xuICAgIGZvciBjb2wgPSBtIGRvd250byAxIGRvXG4gICAgICBsc3RfcmVmIDo9IHNleHBfb2ZfZmxvYXQgbWF0Lntjb2wsIHJvd30gOjogIWxzdF9yZWZcbiAgICBkb25lXG4gIGRvbmU7XG4gIExpc3QgKHNleHBfb2ZfaW50IG0gOjogc2V4cF9vZl9pbnQgbiA6OiAhbHN0X3JlZilcbjs7XG5cbmxldCBzZXhwX29mX2Zsb2F0MzJfbWF0IChtYXQgOiBmbG9hdDMyX21hdCkgPSBzZXhwX29mX2Zsb2F0X21hdCBtYXRcbmxldCBzZXhwX29mX2Zsb2F0NjRfbWF0IChtYXQgOiBmbG9hdDY0X21hdCkgPSBzZXhwX29mX2Zsb2F0X21hdCBtYXRcbmxldCBzZXhwX29mX21hdCAobWF0IDogbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IGJpZ3N0cmluZ19zZXhwX2dyYW1tYXIgOiBiaWdzdHJpbmcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBTdHJpbmcgfVxuXG5sZXQgYmlnc3RyaW5nX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IGJzdHIgPSBBcnJheTEuY3JlYXRlIGNoYXIgY19sYXlvdXQgbGVuIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGJzdHIue2l9IDwtIHN0ci5baV1cbiAgICBkb25lO1xuICAgIGJzdHJcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImJpZ3N0cmluZ19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdF92ZWMgY3JlYXRlX2Zsb2F0X3ZlYyBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbXSAtPiBlbXB0eV9mbG9hdF92ZWNcbiAgfCBMaXN0IGxzdCAtPlxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsc3QgaW5cbiAgICBsZXQgcmVzID0gY3JlYXRlX2Zsb2F0X3ZlYyBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJlc1xuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgcmVzLntpfSA8LSBmbG9hdF9vZl9zZXhwIGg7XG4gICAgICAgIGxvb3AgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBsb29wIDEgbHN0XG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF92ZWNfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY3JlYXRlX2Zsb2F0MzJfdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0XG5sZXQgY3JlYXRlX2Zsb2F0NjRfdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDY0IGZvcnRyYW5fbGF5b3V0XG5sZXQgZW1wdHlfZmxvYXQzMl92ZWMgPSBjcmVhdGVfZmxvYXQzMl92ZWMgMFxubGV0IGVtcHR5X2Zsb2F0NjRfdmVjID0gY3JlYXRlX2Zsb2F0NjRfdmVjIDBcbmxldCBmbG9hdDMyX3ZlY19vZl9zZXhwID0gZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXQzMl92ZWMgY3JlYXRlX2Zsb2F0MzJfdmVjXG5sZXQgZmxvYXQ2NF92ZWNfb2Zfc2V4cCA9IGZsb2F0X3ZlY19vZl9zZXhwIGVtcHR5X2Zsb2F0NjRfdmVjIGNyZWF0ZV9mbG9hdDY0X3ZlY1xubGV0IHZlY19vZl9zZXhwID0gZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXQ2NF92ZWMgY3JlYXRlX2Zsb2F0NjRfdmVjXG5sZXQgdmVjX3NleHBfZ3JhbW1hciA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBMaXN0IChNYW55IEZsb2F0KSB9XG5sZXQgZmxvYXQzMl92ZWNfc2V4cF9ncmFtbWFyID0gdmVjX3NleHBfZ3JhbW1hclxubGV0IGZsb2F0NjRfdmVjX3NleHBfZ3JhbW1hciA9IHZlY19zZXhwX2dyYW1tYXJcblxubGV0IGNoZWNrX3Rvb19tdWNoX2RhdGEgc2V4cCBkYXRhIHJlcyA9XG4gIGlmIGRhdGEgPSBbXSB0aGVuIHJlcyBlbHNlIG9mX3NleHBfZXJyb3IgXCJmbG9hdF9tYXRfb2Zfc2V4cDogdG9vIG11Y2ggZGF0YVwiIHNleHBcbjs7XG5cbmxldCBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXRfbWF0IHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IChzbSA6OiBzbiA6OiBkYXRhKSAtPlxuICAgIGxldCBtID0gaW50X29mX3NleHAgc20gaW5cbiAgICBsZXQgbiA9IGludF9vZl9zZXhwIHNuIGluXG4gICAgbGV0IHJlcyA9IGNyZWF0ZV9mbG9hdF9tYXQgbSBuIGluXG4gICAgaWYgbSA9IDAgfHwgbiA9IDBcbiAgICB0aGVuIGNoZWNrX3Rvb19tdWNoX2RhdGEgc2V4cCBkYXRhIHJlc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wX2NvbHMgY29sIGRhdGEgPVxuICAgICAgICBsZXQgdmVjID0gQXJyYXkyLnNsaWNlX3JpZ2h0IHJlcyBjb2wgaW5cbiAgICAgICAgbGV0IHJlYyBsb29wX3Jvd3Mgcm93ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFtdIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF9tYXRfb2Zfc2V4cDogbm90IGVub3VnaCBkYXRhXCIgc2V4cFxuICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICB2ZWMue3Jvd30gPC0gZmxvYXRfb2Zfc2V4cCBoO1xuICAgICAgICAgICAgaWYgcm93ID0gbVxuICAgICAgICAgICAgdGhlbiBpZiBjb2wgPSBuIHRoZW4gY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIHQgcmVzIGVsc2UgbG9vcF9jb2xzIChjb2wgKyAxKSB0XG4gICAgICAgICAgICBlbHNlIGxvb3Bfcm93cyAocm93ICsgMSkgdFxuICAgICAgICBpblxuICAgICAgICBsb29wX3Jvd3MgMSBkYXRhXG4gICAgICBpblxuICAgICAgbG9vcF9jb2xzIDEgZGF0YSlcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiBsaXN0IHRvbyBzaG9ydFwiIHNleHBcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjcmVhdGVfZmxvYXQzMl9tYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXRcbmxldCBjcmVhdGVfZmxvYXQ2NF9tYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDMyX21hdF9vZl9zZXhwID0gZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0MzJfbWF0XG5sZXQgZmxvYXQ2NF9tYXRfb2Zfc2V4cCA9IGZsb2F0X21hdF9vZl9zZXhwIGNyZWF0ZV9mbG9hdDY0X21hdFxubGV0IG1hdF9vZl9zZXhwID0gZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0NjRfbWF0XG5cbmxldCBtYXRfc2V4cF9ncmFtbWFyIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IExpc3QgKENvbnMgKEludGVnZXIsIENvbnMgKEludGVnZXIsIE1hbnkgRmxvYXQpKSkgfVxuOztcblxubGV0IGZsb2F0MzJfbWF0X3NleHBfZ3JhbW1hciA9IG1hdF9zZXhwX2dyYW1tYXJcbmxldCBmbG9hdDY0X21hdF9zZXhwX2dyYW1tYXIgPSBtYXRfc2V4cF9ncmFtbWFyXG5sZXQgc3RyaW5nX29mX19vZl9fc2V4cF9vZiB0b19zZXhwIHggPSBTZXhwLnRvX3N0cmluZyAodG9fc2V4cCB4KVxuXG5sZXQgb2Zfc3RyaW5nX19vZl9fb2Zfc2V4cCBvZl9zZXhwIHMgPVxuICB0cnlcbiAgICBsZXQgc2V4cCA9IFNleHAub2Zfc3RyaW5nIHMgaW5cbiAgICBvZl9zZXhwIHNleHBcbiAgd2l0aFxuICB8IGUgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKHNwcmludGYgXCJvZl9zdHJpbmcgZmFpbGVkIG9uICVzIHdpdGggJXNcIiBzIChTZXhwLnRvX3N0cmluZ19odW0gKHNleHBfb2ZfZXhuIGUpKSlcbjs7XG4iLCJtb2R1bGUgSGFzaHRibCA9IHN0cnVjdFxuICBpbmNsdWRlIEhhc2h0YmxcblxuICBsZXQgc2V4cF9vZl90ID0gQ29udi5zZXhwX29mX2hhc2h0YmxcbiAgbGV0IHRfb2Zfc2V4cCA9IENvbnYuaGFzaHRibF9vZl9zZXhwXG5lbmRcblxubW9kdWxlIExhenkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBMYXp5XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IENvbnYubGF6eV90X29mX3NleHBcbiAgbGV0IHNleHBfb2ZfdCA9IENvbnYuc2V4cF9vZl9sYXp5X3RcbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gQ29udi5sYXp5X3Rfc2V4cF9ncmFtbWFyXG5lbmRcblxubGV0IHNleHBfb2ZfdW5pdCA9IENvbnYuc2V4cF9vZl91bml0XG5sZXQgdW5pdF9vZl9zZXhwID0gQ29udi51bml0X29mX3NleHBcbmxldCB1bml0X3NleHBfZ3JhbW1hciA9IENvbnYudW5pdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2Jvb2wgPSBDb252LnNleHBfb2ZfYm9vbFxubGV0IGJvb2xfb2Zfc2V4cCA9IENvbnYuYm9vbF9vZl9zZXhwXG5sZXQgYm9vbF9zZXhwX2dyYW1tYXIgPSBDb252LmJvb2xfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9zdHJpbmcgPSBDb252LnNleHBfb2Zfc3RyaW5nXG5sZXQgc3RyaW5nX29mX3NleHAgPSBDb252LnN0cmluZ19vZl9zZXhwXG5sZXQgc3RyaW5nX3NleHBfZ3JhbW1hciA9IENvbnYuc3RyaW5nX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfY2hhciA9IENvbnYuc2V4cF9vZl9jaGFyXG5sZXQgY2hhcl9vZl9zZXhwID0gQ29udi5jaGFyX29mX3NleHBcbmxldCBjaGFyX3NleHBfZ3JhbW1hciA9IENvbnYuY2hhcl9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2ludCA9IENvbnYuc2V4cF9vZl9pbnRcbmxldCBpbnRfb2Zfc2V4cCA9IENvbnYuaW50X29mX3NleHBcbmxldCBpbnRfc2V4cF9ncmFtbWFyID0gQ29udi5pbnRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9mbG9hdCA9IENvbnYuc2V4cF9vZl9mbG9hdFxubGV0IGZsb2F0X29mX3NleHAgPSBDb252LmZsb2F0X29mX3NleHBcbmxldCBmbG9hdF9zZXhwX2dyYW1tYXIgPSBDb252LmZsb2F0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50MzIgPSBDb252LnNleHBfb2ZfaW50MzJcbmxldCBpbnQzMl9vZl9zZXhwID0gQ29udi5pbnQzMl9vZl9zZXhwXG5sZXQgaW50MzJfc2V4cF9ncmFtbWFyID0gQ29udi5pbnQzMl9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2ludDY0ID0gQ29udi5zZXhwX29mX2ludDY0XG5sZXQgaW50NjRfb2Zfc2V4cCA9IENvbnYuaW50NjRfb2Zfc2V4cFxubGV0IGludDY0X3NleHBfZ3JhbW1hciA9IENvbnYuaW50NjRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9uYXRpdmVpbnQgPSBDb252LnNleHBfb2ZfbmF0aXZlaW50XG5sZXQgbmF0aXZlaW50X29mX3NleHAgPSBDb252Lm5hdGl2ZWludF9vZl9zZXhwXG5sZXQgbmF0aXZlaW50X3NleHBfZ3JhbW1hciA9IENvbnYubmF0aXZlaW50X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfcmVmID0gQ29udi5zZXhwX29mX3JlZlxubGV0IHJlZl9vZl9zZXhwID0gQ29udi5yZWZfb2Zfc2V4cFxubGV0IHJlZl9zZXhwX2dyYW1tYXIgPSBDb252LnJlZl9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2xhenlfdCA9IENvbnYuc2V4cF9vZl9sYXp5X3RcbmxldCBsYXp5X3Rfb2Zfc2V4cCA9IENvbnYubGF6eV90X29mX3NleHBcbmxldCBsYXp5X3Rfc2V4cF9ncmFtbWFyID0gQ29udi5sYXp5X3Rfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9vcHRpb24gPSBDb252LnNleHBfb2Zfb3B0aW9uXG5sZXQgb3B0aW9uX29mX3NleHAgPSBDb252Lm9wdGlvbl9vZl9zZXhwXG5sZXQgb3B0aW9uX3NleHBfZ3JhbW1hciA9IENvbnYub3B0aW9uX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfbGlzdCA9IENvbnYuc2V4cF9vZl9saXN0XG5sZXQgbGlzdF9vZl9zZXhwID0gQ29udi5saXN0X29mX3NleHBcbmxldCBsaXN0X3NleHBfZ3JhbW1hciA9IENvbnYubGlzdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2FycmF5ID0gQ29udi5zZXhwX29mX2FycmF5XG5sZXQgYXJyYXlfb2Zfc2V4cCA9IENvbnYuYXJyYXlfb2Zfc2V4cFxubGV0IGFycmF5X3NleHBfZ3JhbW1hciA9IENvbnYuYXJyYXlfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9leG4gPSBDb252LnNleHBfb2ZfZXhuXG5sZXQgZXhuX3NleHBfZ3JhbW1hciA9IENvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxuIiwiaW5jbHVkZSBTZXhwX2dyYW1tYXJfaW50ZlxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2dyYW1tYXJcblxubGV0IHJlbWVtYmVyX3RvX3VwZGF0ZV90aGVzZV90b2dldGhlciB+dF9vZl9zZXhwIH50X3NleHBfZ3JhbW1hciA9XG4gIHRfb2Zfc2V4cCwgdF9zZXhwX2dyYW1tYXJcbjs7XG4iLCIoKiBQYXRoOiBNb2R1bGUgZm9yIFN1YnN0aXR1dGlvbnMgd2l0aGluIFMtZXhwcmVzc2lvbnMgKilcblxub3BlbiBGb3JtYXRcbm9wZW4gU2V4cFxuXG50eXBlIGVsID1cbiAgfCBQb3Mgb2YgaW50XG4gIHwgTWF0Y2ggb2Ygc3RyaW5nICogaW50XG4gIHwgUmVjIG9mIHN0cmluZ1xuXG50eXBlIHQgPSBlbCBsaXN0XG5cbmxldCBpbGxlZ2FsX2F0b20gbG9jIHNleHAgPVxuICBmYWlsd2l0aCAoc3ByaW50ZiBcIlBhdGguJXM6IGlsbGVnYWwgYXRvbTogJXNcIiBsb2MgKFNleHAudG9fc3RyaW5nIHNleHApKVxuOztcblxubGV0IGV4dHJhY3RfcG9zX2xzdCBsb2Mgc2V4cCBpeCBsc3QgPVxuICBsZXQgcmVjIGxvb3AgYWNjIG4gPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGxldCBzZXhwX3N0ciA9IFNleHAudG9fc3RyaW5nIHNleHAgaW5cbiAgICAgIGZhaWx3aXRoIChzcHJpbnRmIFwiUGF0aC4lczogaWxsZWdhbCBpbmRleCAlZCBpbjogJXNcIiBsb2MgaXggc2V4cF9zdHIpXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN1YnN0ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgICAgfCBTb21lIHggLT4gTGlzdC5yZXZfYXBwZW5kIGFjYyAoeCA6OiB0KVxuICAgICAgICBpblxuICAgICAgICBzdWJzdCwgaClcbiAgICAgIGVsc2UgbG9vcCAoaCA6OiBhY2MpIChuIC0gMSkgdFxuICBpblxuICBsb29wIFtdIGl4IGxzdFxuOztcblxubGV0IGV4dHJhY3RfcG9zIG4gPSBmdW5jdGlvblxuICB8IExpc3QgbHN0IGFzIHNleHAgLT5cbiAgICBsZXQgc3Vic3QsIGVsID0gZXh0cmFjdF9wb3NfbHN0IFwiZXh0cmFjdF9wb3NcIiBzZXhwIG4gbHN0IGluXG4gICAgKGZ1biB4IC0+IExpc3QgKHN1YnN0IHgpKSwgZWxcbiAgfCBBdG9tIF8gYXMgc2V4cCAtPiBpbGxlZ2FsX2F0b20gXCJleHRyYWN0X3Bvc1wiIHNleHBcbjs7XG5cbmxldCBleHRyYWN0X21hdGNoIHRhZyBhcmdfaXggPSBmdW5jdGlvblxuICB8IExpc3QgKChBdG9tIHN0ciBhcyBzZXhwKSA6OiBhcmdzKSB3aGVuIHN0ciA9IHRhZyAtPlxuICAgIGxldCBzdWJzdCwgZWwgPSBleHRyYWN0X3Bvc19sc3QgXCJleHRyYWN0X21hdGNoXCIgKExpc3QgYXJncykgYXJnX2l4IGFyZ3MgaW5cbiAgICAoZnVuIG1heWJlX3ggLT4gTGlzdCAoc2V4cCA6OiBzdWJzdCBtYXliZV94KSksIGVsXG4gIHwgTGlzdCBfIGFzIHNleHAgLT5cbiAgICBsZXQgc2V4cF9zdHIgPSBTZXhwLnRvX3N0cmluZyBzZXhwIGluXG4gICAgZmFpbHdpdGggKFwiUGF0aC5leHRyYWN0X21hdGNoOiB1bmV4cGVjdGVkIG5lc3RlZCBsaXN0IGluOiBcIiBeIHNleHBfc3RyKVxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfbWF0Y2hcIiBzZXhwXG47O1xuXG5sZXQgZXh0cmFjdF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgfCBMaXN0IGxzdCBhcyBzZXhwIC0+XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBzZXhwX3N0ciA9IFNleHAudG9fc3RyaW5nIHNleHAgaW5cbiAgICAgICAgZmFpbHdpdGggKHNwcmludGYgXCJQYXRoLmV4dHJhY3RfcmVjOiBrZXkgXFxcIiVzXFxcIiBub3QgZm91bmQgaW46ICVzXCIga2V5IHNleHBfc3RyKVxuICAgICAgfCBMaXN0IFsgKEF0b20gc3RyIGFzIHNleHApOyB2IF0gOjogcmVzdCB3aGVuIHN0ciA9IGtleSAtPlxuICAgICAgICBsZXQgc3Vic3QgeCA9IExpc3QgKExpc3QucmV2X2FwcGVuZCBhY2MgKExpc3QgWyBzZXhwOyB4IF0gOjogcmVzdCkpIGluXG4gICAgICAgIHN1YnN0LCB2XG4gICAgICB8IGggOjogdCAtPiBsb29wIChoIDo6IGFjYykgdFxuICAgIGluXG4gICAgbG9vcCBbXSBsc3RcbiAgfCBBdG9tIF8gYXMgc2V4cCAtPiBpbGxlZ2FsX2F0b20gXCJleHRyYWN0X3JlY1wiIHNleHBcbjs7XG5cbmxldCBpZCB4ID0geFxuXG5sZXQgcmVjIHN1YnN0X29wdGlvbiAoc3VwX3N1YnN0LCBlbCkgcmVzdCA9XG4gIGxldCBzdWJfc3Vic3QsIHN1Yl9lbCA9IHN1YnN0X3BhdGggZWwgcmVzdCBpblxuICBsZXQgc3Vic3QgeCA9IHN1cF9zdWJzdCAoU29tZSAoc3ViX3N1YnN0IHgpKSBpblxuICBzdWJzdCwgc3ViX2VsXG5cbmFuZCBzdWJzdF9wYXRoIHNleHAgPSBmdW5jdGlvblxuICB8IFBvcyBuIDo6IHQgLT4gc3Vic3Rfb3B0aW9uIChleHRyYWN0X3BvcyBuIHNleHApIHRcbiAgfCBNYXRjaCAodGFnLCBhcmdfaXgpIDo6IHQgLT4gc3Vic3Rfb3B0aW9uIChleHRyYWN0X21hdGNoIHRhZyBhcmdfaXggc2V4cCkgdFxuICB8IFJlYyBrZXkgOjogcmVzdCAtPlxuICAgIGxldCByZWNfc3Vic3QsIGVsID0gZXh0cmFjdF9yZWMga2V5IHNleHAgaW5cbiAgICBsZXQgc3ViX3N1YnN0LCBzdWJfZWwgPSBzdWJzdF9wYXRoIGVsIHJlc3QgaW5cbiAgICBsZXQgc3Vic3QgeCA9IHJlY19zdWJzdCAoc3ViX3N1YnN0IHgpIGluXG4gICAgc3Vic3QsIHN1Yl9lbFxuICB8IFtdIC0+IGlkLCBzZXhwXG47O1xuXG5sZXQgaW1wbG9kZSBsc3QgPVxuICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbHN0IGluXG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGxldCByZWMgbG9vcCBpeCA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIEJ5dGVzLnNldCBzdHIgaXggaDtcbiAgICAgIGxvb3AgKGl4ICsgMSkgdFxuICAgIHwgW10gLT4gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbiAgaW5cbiAgbG9vcCAwIGxzdFxuOztcblxubGV0IGZhaWxfcGFyc2UgbXNnID0gZmFpbHdpdGggKFwiUGF0aC5wYXJzZTogXCIgXiBtc2cpXG5cbmxldCBwYXJzZSBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIGZhaWxfcGFyc2UgXCJwYXRoIGVtcHR5XCJcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGFjYyBkb3RfaXggPVxuICAgICAgbWF0Y2ggc3RyLltkb3RfaXhdIHdpdGhcbiAgICAgIHwgJy4nIC0+XG4gICAgICAgIGxldCBkb3RfaXgxID0gZG90X2l4ICsgMSBpblxuICAgICAgICBpZiBkb3RfaXgxID0gbGVuXG4gICAgICAgIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZWMgcGFyc2VfZG90IGFjYyBzdHJfYWNjIGl4ID1cbiAgICAgICAgICAgIGlmIGl4ID0gbGVuXG4gICAgICAgICAgICB0aGVuIExpc3QucmV2X2FwcGVuZCBhY2MgWyBSZWMgKGltcGxvZGUgKExpc3QucmV2IHN0cl9hY2MpKSBdXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbWF0Y2ggc3RyLltpeF0gd2l0aFxuICAgICAgICAgICAgICB8ICdbJyAtPlxuICAgICAgICAgICAgICAgIGxldCByZWMgcGFyc2VfaW5kZXggaW5kZXhfYWNjIGl4ID1cbiAgICAgICAgICAgICAgICAgIGlmIGl4ID0gbGVuXG4gICAgICAgICAgICAgICAgICB0aGVuIGZhaWxfcGFyc2UgXCJFT0YgcmVhZGluZyBpbmRleFwiXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc3RyLltpeF0sIGluZGV4X2FjYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgKCcwJyAuLiAnOScgYXMgYyksIE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9pbmRleCAoU29tZSAoaW50X29mX2NoYXIgYyAtIDQ4KSkgKGl4ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgfCAoJzAnIC4uICc5JyBhcyBjKSwgU29tZSBpbmRleF9hY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3X2luZGV4X2FjYyA9IFNvbWUgKCgxMCAqIGluZGV4X2FjYykgKyBpbnRfb2ZfY2hhciBjIC0gNDgpIGluXG4gICAgICAgICAgICAgICAgICAgICAgcGFyc2VfaW5kZXggbmV3X2luZGV4X2FjYyAoaXggKyAxKVxuICAgICAgICAgICAgICAgICAgICB8ICddJywgTm9uZSAtPiBmYWlsX3BhcnNlIFwiZW1wdHkgaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICB8ICddJywgU29tZSBpbmRleF9hY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgcGF0aF9lbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBzdHJfYWNjID0gW11cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gUG9zIGluZGV4X2FjY1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBNYXRjaCAoaW1wbG9kZSAoTGlzdC5yZXYgc3RyX2FjYyksIGluZGV4X2FjYylcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBpeDEgPSBpeCArIDEgaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBpeDEgPSBsZW5cbiAgICAgICAgICAgICAgICAgICAgICB0aGVuIExpc3QucmV2X2FwcGVuZCBhY2MgWyBwYXRoX2VsIF1cbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIGxvb3AgKHBhdGhfZWwgOjogYWNjKSBpeDFcbiAgICAgICAgICAgICAgICAgICAgfCBjLCBfIC0+IGZhaWxfcGFyc2UgKHNwcmludGYgXCJpbGxlZ2FsIGNoYXJhY3RlciBpbiBpbmRleDogJWNcIiBjKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHBhcnNlX2luZGV4IE5vbmUgKGl4ICsgMSlcbiAgICAgICAgICAgICAgfCAnXFxcXCcgLT5cbiAgICAgICAgICAgICAgICBsZXQgaXgxID0gaXggKyAxIGluXG4gICAgICAgICAgICAgICAgaWYgaXgxID0gbGVuXG4gICAgICAgICAgICAgICAgdGhlbiBmYWlsX3BhcnNlIFwiRU9GIGFmdGVyIGVzY2FwZVwiXG4gICAgICAgICAgICAgICAgZWxzZSBwYXJzZV9kb3QgYWNjIChzdHIuW2l4MV0gOjogc3RyX2FjYykgKGl4ICsgMSlcbiAgICAgICAgICAgICAgfCAnLicgLT5cbiAgICAgICAgICAgICAgICBpZiBzdHJfYWNjID0gW10gdGhlbiBmYWlsX3BhcnNlIFwiZG91YmxlICcuJ1wiO1xuICAgICAgICAgICAgICAgIGxldCBwYXRoX2VsID0gUmVjIChpbXBsb2RlIChMaXN0LnJldiBzdHJfYWNjKSkgaW5cbiAgICAgICAgICAgICAgICBwYXJzZV9kb3QgKHBhdGhfZWwgOjogYWNjKSBbXSAoaXggKyAxKVxuICAgICAgICAgICAgICB8IGMgLT4gcGFyc2VfZG90IGFjYyAoYyA6OiBzdHJfYWNjKSAoaXggKyAxKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIHBhcnNlX2RvdCBhY2MgW10gZG90X2l4MSlcbiAgICAgIHwgYyAtPiBmYWlsX3BhcnNlIChzcHJpbnRmIFwiJy4nIGV4cGVjdGVkOyBnb3QgJyVjJ1wiIGMpXG4gICAgaW5cbiAgICBsb29wIFtdIDApXG47O1xuXG5sZXQgZ2V0X3N1YnN0IHBhdGggc3RyIHNleHAgPVxuICBsZXQgcGF0aCA9XG4gICAgbWF0Y2ggcGF0aCwgc3RyIHdpdGhcbiAgICB8IFNvbWUgcGF0aCwgXyAtPiBwYXRoXG4gICAgfCBOb25lLCBTb21lIHN0ciAtPiBwYXJzZSBzdHJcbiAgICB8IE5vbmUsIE5vbmUgLT4gW11cbiAgaW5cbiAgc3Vic3RfcGF0aCBzZXhwIHBhdGhcbjs7XG5cbmxldCBnZXQgP3BhdGggP3N0ciBzZXhwID0gc25kIChnZXRfc3Vic3QgcGF0aCBzdHIgc2V4cClcblxubGV0IHJlcGxhY2UgP3BhdGggP3N0ciBzZXhwIH5zdWJzdCA9XG4gIGxldCBzdWJzdF9mdW4sIF8gPSBnZXRfc3Vic3QgcGF0aCBzdHIgc2V4cCBpblxuICBzdWJzdF9mdW4gc3Vic3Rcbjs7XG5cbmxldCByZXBsYWNlX25vX3BhdGggfnN0ciBzZXhwIH5zdWJzdCA9IHJlcGxhY2UgfnN0ciBzZXhwIH5zdWJzdFxuIiwibGV0IHJlZ2lzdGVyIGV4YyBleGNfbmFtZSA9XG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBfZXhjIC0+XG4gICAgU2V4cC5BdG9tIGV4Y19uYW1lKVxuOztcblxubGV0IG1hZ2ljX2ZpZWxkIHJlcHIgbiA9IE9iai5tYWdpYyAoT2JqLmZpZWxkIHJlcHIgbilcblxubGV0IHJlZ2lzdGVyMSBtYWtlX2V4YyBleGNfbmFtZSBzZXhwX29mX2FyZzEgPVxuICBsZXQgZXhjID0gbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXIyIG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSBzZXhwX29mX2FyZzIgPVxuICBsZXQgZXhjID0gbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXIzIG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSBzZXhwX29mX2FyZzIgc2V4cF9vZl9hcmczID1cbiAgbGV0IGV4YyA9IG1ha2VfZXhjIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMyBdKVxuOztcblxubGV0IHJlZ2lzdGVyNCBtYWtlX2V4YyBleGNfbmFtZSBzZXhwX29mX2FyZzEgc2V4cF9vZl9hcmcyIHNleHBfb2ZfYXJnMyBzZXhwX29mX2FyZzQgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQgXSlcbjs7XG5cbmxldCByZWdpc3RlcjVcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNSBdKVxuOztcblxubGV0IHJlZ2lzdGVyNlxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDU7IHNleHA2IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI3XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgICAgIHNleHBfb2ZfYXJnN1xuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQ7IHNleHA1OyBzZXhwNjsgc2V4cDcgXSlcbjs7XG5cbmxldCByZWdpc3RlcjhcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gICAgICBzZXhwX29mX2FyZzhcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBsZXQgc2V4cDcgPSBzZXhwX29mX2FyZzcgKG1hZ2ljX2ZpZWxkIHJlcHIgNykgaW5cbiAgICBsZXQgc2V4cDggPSBzZXhwX29mX2FyZzggKG1hZ2ljX2ZpZWxkIHJlcHIgOCkgaW5cbiAgICBTZXhwLkxpc3RcbiAgICAgIFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDU7IHNleHA2OyBzZXhwNzsgc2V4cDggXSlcbjs7XG5cbmxldCByZWdpc3RlcjlcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gICAgICBzZXhwX29mX2FyZzhcbiAgICAgIHNleHBfb2ZfYXJnOVxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIGxldCBzZXhwOCA9IHNleHBfb2ZfYXJnOCAobWFnaWNfZmllbGQgcmVwciA4KSBpblxuICAgIGxldCBzZXhwOSA9IHNleHBfb2ZfYXJnOSAobWFnaWNfZmllbGQgcmVwciA5KSBpblxuICAgIFNleHAuTGlzdFxuICAgICAgWyBTZXhwLkF0b20gZXhjX25hbWVcbiAgICAgIDsgc2V4cDFcbiAgICAgIDsgc2V4cDJcbiAgICAgIDsgc2V4cDNcbiAgICAgIDsgc2V4cDRcbiAgICAgIDsgc2V4cDVcbiAgICAgIDsgc2V4cDZcbiAgICAgIDsgc2V4cDdcbiAgICAgIDsgc2V4cDhcbiAgICAgIDsgc2V4cDlcbiAgICAgIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXIxMFxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICAgICAgc2V4cF9vZl9hcmc5XG4gICAgICBzZXhwX29mX2FyZzEwXG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgbGV0IHNleHA4ID0gc2V4cF9vZl9hcmc4IChtYWdpY19maWVsZCByZXByIDgpIGluXG4gICAgbGV0IHNleHA5ID0gc2V4cF9vZl9hcmc5IChtYWdpY19maWVsZCByZXByIDkpIGluXG4gICAgbGV0IHNleHAxMCA9IHNleHBfb2ZfYXJnMTAgKG1hZ2ljX2ZpZWxkIHJlcHIgMTApIGluXG4gICAgU2V4cC5MaXN0XG4gICAgICBbIFNleHAuQXRvbSBleGNfbmFtZVxuICAgICAgOyBzZXhwMVxuICAgICAgOyBzZXhwMlxuICAgICAgOyBzZXhwM1xuICAgICAgOyBzZXhwNFxuICAgICAgOyBzZXhwNVxuICAgICAgOyBzZXhwNlxuICAgICAgOyBzZXhwN1xuICAgICAgOyBzZXhwOFxuICAgICAgOyBzZXhwOVxuICAgICAgOyBzZXhwMTBcbiAgICAgIF0pXG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgXCJGYXN0IFNwbGl0dGFibGUgUHNldWRvcmFuZG9tIE51bWJlciBHZW5lcmF0b3JzXCIgYnkgU3RlZWxlIGV0LlxuICAgIGFsLiAoMSkuICBUaGUgcGFwZXIncyBhbGdvcml0aG0gcHJvdmlkZXMgZGVjZW50IHJhbmRvbW5lc3MgZm9yIG1vc3QgcHVycG9zZXMsIGJ1dFxuICAgIHNhY3JpZmljZXMgY3J5cHRvZ3JhcGhpYy1xdWFsaXR5IHJhbmRvbW5lc3MgaW4gZmF2b3Igb2YgcGVyZm9ybWFuY2UuICBUaGUgb3JpZ2luYWxcbiAgICBpbXBsZW1lbnRhdGlvbiB3YXMgdGVzdGVkIHdpdGggRGllSGFyZGVyIGFuZCBCaWdDcnVzaDsgc2VlIHRoZSBwYXBlciBmb3IgZGV0YWlscy5cblxuICAgIE91ciBpbXBsZW1lbnRhdGlvbiBpcyBhIHBvcnQgZnJvbSBKYXZhIHRvIE9DYW1sIG9mIHRoZSBwYXBlcidzIGFsZ29yaXRobS4gIE90aGVyIHRoYW5cbiAgICB0aGUgY2hvaWNlIG9mIGluaXRpYWwgc2VlZCBmb3IgW2NyZWF0ZV0sIG91ciBwb3J0IHNob3VsZCBiZSBmYWl0aGZ1bC4gIFdlIGhhdmUgbm90XG4gICAgcmUtcnVuIHRoZSBEaWVIYXJkZXIgb3IgQmlnQ3J1c2ggdGVzdHMgb24gb3VyIGltcGxlbWVudGF0aW9uLiAgT3VyIHBvcnQgaXMgYWxzbyBub3QgYXNcbiAgICBwZXJmb3JtYW50IGFzIHRoZSBvcmlnaW5hbDsgdHdvIGZhY3RvcnMgdGhhdCBodXJ0IHVzIGFyZSBib3hlZCBbaW50NjRdIHZhbHVlcyBhbmQgbGFja1xuICAgIG9mIGEgUE9QQ05UIHByaW1pdGl2ZS5cblxuICAgICgxKSBodHRwOi8vMjAxNC5zcGxhc2hjb24ub3JnL2V2ZW50L29vcHNsYTIwMTQtZmFzdC1zcGxpdHRhYmxlLXBzZXVkb3JhbmRvbS1udW1iZXItZ2VuZXJhdG9yc1xuICAgIChhbHNvIG1pcnJvcmVkIGF0IGh0dHA6Ly9nZWUuY3Mub3N3ZWdvLmVkdS9kbC9wYXBlcnMvb29wc2xhMTQucGRmKVxuXG4gICAgQmV3YXJlIHdoZW4gaW1wbGVtZW50aW5nIHRoaXMgaW50ZXJmYWNlOyBpdCBpcyBlYXN5IHRvIGltcGxlbWVudCBhIFtzcGxpdF0gb3BlcmF0aW9uXG4gICAgd2hvc2Ugb3V0cHV0IGlzIG5vdCBhcyBcImluZGVwZW5kZW50XCIgYXMgaXQgc2VlbXMgKDIpLiAgVGhpcyBidWcgY2F1c2VkIHByb2JsZW1zIGZvclxuICAgIEhhc2tlbGwncyBRdWlja2NoZWNrIGxpYnJhcnkgZm9yIGEgbG9uZyB0aW1lLlxuXG4gICAgKDIpIFNjaGFhdGh1biwgXCJFdmFsdWF0aW9uIG9mIHNwbGl0dGFibGUgcHNldWRvLXJhbmRvbSBnZW5lcmF0b3JzXCIsIEpGUCAyMDE1LlxuICAgIGh0dHA6Ly93d3cuaGcuc2NoYWF0aHVuLm5ldC9yZXNlYXJjaC9QYXBlcnMvaGdzMjAxNWpmcC5wZGZcbiopXG5cbm9wZW4hIEJhc2Vcbm9wZW4gIEludDY0Lk9cblxubGV0IGlzX29kZCB4ID0geCBsb3IgMUwgPSB4XG5cbmxldCBwb3Bjb3VudCA9IEludDY0LnBvcGNvdW50XG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIHNlZWQgOiBpbnQ2NFxuICAgIDsgb2RkX2dhbW1hICAgIDogaW50NjRcbiAgICB9XG5cbiAgbGV0IGdvbGRlbl9nYW1tYSA9IDB4OWUzN183OWI5XzdmNGFfN2MxNUxcblxuICBsZXQgb2ZfaW50IHNlZWQgPVxuICAgIHsgc2VlZCAgICAgID0gSW50NjQub2ZfaW50IHNlZWRcbiAgICA7IG9kZF9nYW1tYSA9IGdvbGRlbl9nYW1tYVxuICAgIH1cblxuICBsZXQgY29weSB7IHNlZWQgOyBvZGRfZ2FtbWEgfSA9IHsgc2VlZCA7IG9kZF9nYW1tYSB9XG5cbiAgbGV0IG1peF9iaXRzIHogbiA9XG4gICAgeiBseG9yICh6IGxzciBuKVxuXG4gIGxldCBtaXg2NCB6ID1cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDMzKSAqIDB4ZmY1MV9hZmQ3X2VkNTVfOGNjZEwgaW5cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDMzKSAqIDB4YzRjZV9iOWZlXzFhODVfZWM1M0wgaW5cbiAgICBtaXhfYml0cyB6IDMzXG5cbiAgbGV0IG1peDY0X3ZhcmlhbnQxMyB6ID1cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDMwKSAqIDB4YmY1OF80NzZkXzFjZTRfZTViOUwgaW5cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDI3KSAqIDB4OTRkMF80OWJiXzEzMzFfMTFlYkwgaW5cbiAgICBtaXhfYml0cyB6IDMxXG5cbiAgbGV0IG1peF9vZGRfZ2FtbWEgeiA9XG4gICAgbGV0IHogPSAobWl4NjRfdmFyaWFudDEzIHopIGxvciAxTCBpblxuICAgIGxldCBuID0gcG9wY291bnQgKHogbHhvciAoeiBsc3IgMSkpIGluXG4gICAgKCogVGhlIG9yaWdpbmFsIHBhcGVyIHVzZXMgWz49XSBpbiB0aGUgY29uZGl0aW9uYWwgaW1tZWRpYXRlbHkgYmVsb3c7IGhvd2V2ZXIgdGhpcyBpc1xuICAgICAgIGEgdHlwbywgYW5kIHdlIGNvcnJlY3QgaXQgYnkgdXNpbmcgWzxdLiBUaGlzIHdhcyBmaXhlZCBpbiByZXNwb25zZSB0byBbMV0gYW5kIFsyXS5cblxuICAgICAgIFsxXSBodHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVldC9zcGxpdHRhYmxlX3JhbmRvbS9pc3N1ZXMvMVxuICAgICAgIFsyXSBodHRwOi8vd3d3LnBjZy1yYW5kb20ub3JnL3Bvc3RzL2J1Z3MtaW4tc3BsaXRtaXguaHRtbFxuICAgICopXG4gICAgaWYgSW50LiggPCApIG4gMjRcbiAgICB0aGVuIHogbHhvciAweGFhYWFfYWFhYV9hYWFhX2FhYWFMXG4gICAgZWxzZSB6XG5cbiAgbGV0JXRlc3RfdW5pdCBcIm9kZCBnYW1tYVwiID1cbiAgICBmb3IgaW5wdXQgPSAtMV8wMDBfMDAwIHRvIDFfMDAwXzAwMCBkb1xuICAgICAgbGV0IG91dHB1dCA9IG1peF9vZGRfZ2FtbWEgKEludDY0Lm9mX2ludCBpbnB1dCkgaW5cbiAgICAgIGlmIG5vdCAoaXNfb2RkIG91dHB1dCkgdGhlblxuICAgICAgICBFcnJvci5yYWlzZV9zIFslbWVzc2FnZVxuICAgICAgICAgIFwiZ2FtbWEgdmFsdWUgaXMgbm90IG9kZFwiXG4gICAgICAgICAgICAoaW5wdXQgIDogaW50KVxuICAgICAgICAgICAgKG91dHB1dCA6IGludDY0KV1cbiAgICBkb25lXG5cbiAgbGV0IG5leHRfc2VlZCB0ID1cbiAgICBsZXQgbmV4dCA9IHQuc2VlZCArIHQub2RkX2dhbW1hIGluXG4gICAgdC5zZWVkIDwtIG5leHQ7XG4gICAgbmV4dFxuXG4gIGxldCBvZl9zZWVkX2FuZF9nYW1tYSB+c2VlZCB+Z2FtbWEgPVxuICAgIGxldCBzZWVkICAgICAgPSBtaXg2NCAgICAgICAgIHNlZWQgIGluXG4gICAgbGV0IG9kZF9nYW1tYSA9IG1peF9vZGRfZ2FtbWEgZ2FtbWEgaW5cbiAgICB7IHNlZWQ7IG9kZF9nYW1tYSB9XG5cbiAgbGV0IHJhbmRvbV9pbnQ2NCByYW5kb21fc3RhdGUgPVxuICAgIFJhbmRvbS5TdGF0ZS5pbnQ2NF9pbmNsIHJhbmRvbV9zdGF0ZSBJbnQ2NC5taW5fdmFsdWUgSW50NjQubWF4X3ZhbHVlXG5cbiAgbGV0IGNyZWF0ZSByYW5kb21fc3RhdGUgPVxuICAgIGxldCBzZWVkICA9IHJhbmRvbV9pbnQ2NCByYW5kb21fc3RhdGUgaW5cbiAgICBsZXQgZ2FtbWEgPSByYW5kb21faW50NjQgcmFuZG9tX3N0YXRlIGluXG4gICAgb2Zfc2VlZF9hbmRfZ2FtbWEgfnNlZWQgfmdhbW1hXG5cbiAgbGV0IHNwbGl0IHQgPVxuICAgIGxldCBzZWVkICA9IG5leHRfc2VlZCB0IGluXG4gICAgbGV0IGdhbW1hID0gbmV4dF9zZWVkIHQgaW5cbiAgICBvZl9zZWVkX2FuZF9nYW1tYSB+c2VlZCB+Z2FtbWFcblxuICBsZXQgbmV4dF9pbnQ2NCB0ID0gbWl4NjQgKG5leHRfc2VlZCB0KVxuXG4gICgqIFtwZXJ0dXJiXSBpcyBub3QgZnJvbSBhbnkgZXh0ZXJuYWwgc291cmNlLCBidXQgcHJvdmlkZXMgYSB3YXkgdG8gbWl4IGluIGV4dGVybmFsXG4gICAgIGVudHJvcHkgd2l0aCBhIHBzZXVkby1yYW5kb20gc3RhdGUuICopXG4gIGxldCBwZXJ0dXJiIHQgc2FsdCA9XG4gICAgbGV0IG5leHQgPSB0LnNlZWQgKyBtaXg2NCAoSW50NjQub2ZfaW50IHNhbHQpIGluXG4gICAgdC5zZWVkIDwtIG5leHRcblxuZW5kXG5cbmxldCBib29sIHN0YXRlID0gaXNfb2RkIChTdGF0ZS5uZXh0X2ludDY0IHN0YXRlKVxuXG4oKiBXZSBhYnVzZSB0ZXJtaW5vbG9neSBhbmQgcmVmZXIgdG8gaW5kaXZpZHVhbCB2YWx1ZXMgYXMgYmlhc2VkIG9yIHVuYmlhc2VkLiAgTW9yZVxuICAgcHJvcGVybHksIHdoYXQgaXMgdW5iaWFzZWQgaXMgdGhlIHNhbXBsZXIgdGhhdCByZXN1bHRzIGlmIHdlIGtlZXAgb25seSB0aGVzZSBcInVuYmlhc2VkXCJcbiAgIHZhbHVlcy4gKilcbmxldCByZW1haW5kZXJfaXNfdW5iaWFzZWRcbiAgICAgIH5kcmF3XG4gICAgICB+cmVtYWluZGVyXG4gICAgICB+ZHJhd19tYXhpbXVtXG4gICAgICB+cmVtYWluZGVyX21heGltdW1cbiAgPVxuICBsZXQgb3BlbiBJbnQ2NC5PIGluXG4gIGRyYXcgLSByZW1haW5kZXIgPD0gZHJhd19tYXhpbXVtIC0gcmVtYWluZGVyX21heGltdW1cblxubGV0JXRlc3RfdW5pdCBcInJlbWFpbmRlcl9pc191bmJpYXNlZFwiID1cbiAgKCogY2hvb3NpbmcgYSByYW5nZSBvZiAxMCB2YWx1ZXMgYmFzZWQgb24gYSByYW5nZSBvZiAxMDUgdmFsdWVzICopXG4gIGxldCBkcmF3X21heGltdW0gPSAxMDRMIGluXG4gIGxldCByZW1haW5kZXJfbWF4aW11bSA9IDlMIGluXG4gIGxldCBpc191bmJpYXNlZCBkcmF3ID1cbiAgICBsZXQgcmVtYWluZGVyID0gSW50NjQucmVtIGRyYXcgKEludDY0LnN1Y2MgcmVtYWluZGVyX21heGltdW0pIGluXG4gICAgcmVtYWluZGVyX2lzX3VuYmlhc2VkIH5kcmF3IH5yZW1haW5kZXIgfmRyYXdfbWF4aW11bSB+cmVtYWluZGVyX21heGltdW1cbiAgaW5cbiAgZm9yIGkgPSAwIHRvIDk5IGRvXG4gICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgIChpc191bmJpYXNlZCAoSW50NjQub2ZfaW50IGkpKVxuICAgICAgfmV4cGVjdDp0cnVlXG4gICAgICB+bWVzc2FnZTooSW50LnRvX3N0cmluZyBpKVxuICBkb25lO1xuICBmb3IgaSA9IDEwMCB0byAxMDQgZG9cbiAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgKGlzX3VuYmlhc2VkIChJbnQ2NC5vZl9pbnQgaSkpXG4gICAgICB+ZXhwZWN0OmZhbHNlXG4gICAgICB+bWVzc2FnZTooSW50LnRvX3N0cmluZyBpKVxuICBkb25lXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYm91bmRlZCByYW5kb21uZXNzIGlzIGFkYXB0ZWQgZnJvbSBbUmFuZG9tLlN0YXRlLmludCpdIGluIHRoZVxuICAgT0NhbWwgc3RhbmRhcmQgbGlicmFyeS4gIFRoZSBwdXJwb3NlIGlzIHRvIHVzZSB0aGUgbWluaW11bSBudW1iZXIgb2YgY2FsbHMgdG9cbiAgIFtuZXh0X2ludDY0XSB0byBwcm9kdWNlIGEgbnVtYmVyIHVuaWZvcm1seSBjaG9zZW4gd2l0aGluIHRoZSBnaXZlbiByYW5nZS4gKilcbmxldCBpbnQ2NCA9XG4gIGxldCBvcGVuIEludDY0Lk8gaW5cbiAgbGV0IHJlYyBiZXR3ZWVuIHN0YXRlIH5sbyB+aGkgPVxuICAgIGxldCBkcmF3ID0gU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSBpblxuICAgIGlmIGxvIDw9IGRyYXcgJiYgZHJhdyA8PSBoaVxuICAgIHRoZW4gZHJhd1xuICAgIGVsc2UgYmV0d2VlbiBzdGF0ZSB+bG8gfmhpXG4gIGluXG4gIGxldCByZWMgbm9uX25lZ2F0aXZlX3VwX3RvIHN0YXRlIG1heGltdW0gPVxuICAgIGxldCBkcmF3ID0gU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSBsYW5kIEludDY0Lm1heF92YWx1ZSBpblxuICAgIGxldCByZW1haW5kZXIgPSBJbnQ2NC5yZW0gZHJhdyAoSW50NjQuc3VjYyBtYXhpbXVtKSBpblxuICAgIGlmIHJlbWFpbmRlcl9pc191bmJpYXNlZFxuICAgICAgICAgfmRyYXdcbiAgICAgICAgIH5yZW1haW5kZXJcbiAgICAgICAgIH5kcmF3X21heGltdW06SW50NjQubWF4X3ZhbHVlXG4gICAgICAgICB+cmVtYWluZGVyX21heGltdW06bWF4aW11bVxuICAgIHRoZW4gcmVtYWluZGVyXG4gICAgZWxzZSBub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgbWF4aW11bVxuICBpblxuICBmdW4gc3RhdGUgfmxvIH5oaSAtPlxuICAgIGlmIGxvID4gaGkgdGhlbiBiZWdpblxuICAgICAgRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJpbnQ2NDogY3Jvc3NlZCBib3VuZHNcIiAobG8gOiBpbnQ2NCkgKGhpIDogaW50NjQpXVxuICAgIGVuZDtcbiAgICBsZXQgZGlmZiA9IGhpIC0gbG8gaW5cbiAgICBpZiBkaWZmID0gSW50NjQubWF4X3ZhbHVlXG4gICAgdGhlbiAoKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpIGxhbmQgSW50NjQubWF4X3ZhbHVlKSArIGxvXG4gICAgZWxzZSBpZiBkaWZmID49IDBMXG4gICAgdGhlbiAobm9uX25lZ2F0aXZlX3VwX3RvIHN0YXRlIGRpZmYpICsgbG9cbiAgICBlbHNlIGJldHdlZW4gc3RhdGUgfmxvIH5oaVxuXG5sZXQgaW50IHN0YXRlIH5sbyB+aGkgPVxuICBsZXQgbG8gPSBJbnQ2NC5vZl9pbnQgbG8gaW5cbiAgbGV0IGhpID0gSW50NjQub2ZfaW50IGhpIGluXG4gICgqIHRydW5jYXRlIHVubmVlZGVkIGJpdHMgKilcbiAgSW50NjQudG9faW50X3RydW5jIChpbnQ2NCBzdGF0ZSB+bG8gfmhpKVxuXG5sZXQgaW50MzIgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDY0Lm9mX2ludDMyIGxvIGluXG4gIGxldCBoaSA9IEludDY0Lm9mX2ludDMyIGhpIGluXG4gICgqIHRydW5jYXRlIHVubmVlZGVkIGJpdHMgKilcbiAgSW50NjQudG9faW50MzJfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBuYXRpdmVpbnQgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDY0Lm9mX25hdGl2ZWludCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2NC5vZl9uYXRpdmVpbnQgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19uYXRpdmVpbnRfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBpbnQ2MyBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjMudG9faW50NjQgbG8gaW5cbiAgbGV0IGhpID0gSW50NjMudG9faW50NjQgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2My5vZl9pbnQ2NF90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IGRvdWJsZV91bHAgPSAyLiAqKi4gLTUzLlxuXG5sZXQldGVzdF91bml0IFwiZG91YmxlX3VscFwiID1cbiAgbGV0IG9wZW4gRmxvYXQuTyBpblxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT5cbiAgICBhc3NlcnQgKDEuMCAtLiAgZG91YmxlX3VscCAgICAgICAgIDwgMS4wKTtcbiAgICBhc3NlcnQgKDEuMCAtLiAoZG91YmxlX3VscCAvLiAyLjApID0gMS4wKVxuICB8IFczMiAtPlxuICAgICgqIDMyLWJpdCBPQ2FtbCB1c2VzIGEgNjQtYml0IGZsb2F0IHJlcHJlc2VudGF0aW9uIGJ1dCA4MC1iaXQgZmxvYXQgaW5zdHJ1Y3Rpb25zLCBzb1xuICAgICAgIHJvdW5kaW5nIHdvcmtzIGRpZmZlcmVudGx5IGR1ZSB0byB0aGUgY29udmVyc2lvbiBiYWNrIGFuZCBmb3J0aC4gKilcbiAgICBhc3NlcnQgKDEuMCAtLiAgZG91YmxlX3VscCAgICAgICAgIDwgIDEuMCk7XG4gICAgYXNzZXJ0ICgxLjAgLS4gKGRvdWJsZV91bHAgLy4gMi4wKSA8PSAxLjApXG5cbmxldCB1bml0X2Zsb2F0X2Zyb21faW50NjQgaW50NjQgPVxuICAoSW50NjQudG9fZmxvYXQgKGludDY0IGxzciAxMSkpICouIGRvdWJsZV91bHBcblxubGV0JXRlc3RfdW5pdCBcInVuaXRfZmxvYXRfZnJvbV9pbnQ2NFwiID0gYmVnaW5cbiAgbGV0IG9wZW4gRmxvYXQuTyBpblxuICBhc3NlcnQgKHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAweDAwMDBfMDAwMF8wMDAwXzAwMDBMID0gMC4pO1xuICBhc3NlcnQgKHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAweGZmZmZfZmZmZl9mZmZmX2ZmZmZMIDwgMS4wKTtcbiAgYXNzZXJ0ICh1bml0X2Zsb2F0X2Zyb21faW50NjQgMHhmZmZmX2ZmZmZfZmZmZl9mZmZmTCA9ICgxLjAgLS4gZG91YmxlX3VscCkpO1xuZW5kXG5cbmxldCB1bml0X2Zsb2F0IHN0YXRlID1cbiAgdW5pdF9mbG9hdF9mcm9tX2ludDY0IChTdGF0ZS5uZXh0X2ludDY0IHN0YXRlKVxuXG4oKiBOb3RlIGFib3V0IHJvdW5kb2ZmIGVycm9yOlxuXG4gICBBbHRob3VnaCBbZmxvYXQgc3RhdGUgfmxvIH5oaV0gaXMgbm9taW5hbGx5IGluY2x1c2l2ZSBvZiBlbmRwb2ludHMsIHdlIGFyZSByZWx5aW5nIG9uXG4gICB0aGUgZmFjdCB0aGF0IFt1bml0X2Zsb2F0XSBuZXZlciByZXR1cm5zIDEuLCBiZWNhdXNlIHRoZXJlIGFyZSBwYWlycyBbKGxvLGhpKV0gZm9yXG4gICB3aGljaCBbbG8gKy4gMS4gKi4gKGhpIC0uIGxvKSA+IGhpXS4gIFRoZXJlIGFyZSBhbHNvIHBhaXJzIFsobG8saGkpXSBhbmQgdmFsdWVzIG9mIFt4XVxuICAgd2l0aCBbeCA8IDEuXSBzdWNoIHRoYXQgW2xvICsuIHggKi4gKGhpIC0uIGxvKSA9IGhpXSwgc28gaXQgd291bGQgbm90IGJlIGNvcnJlY3QgdG9cbiAgIGRvY3VtZW50IHRoaXMgYXMgYmVpbmcgZXhjbHVzaXZlIG9mIFtoaV0uXG4qKVxubGV0IGZsb2F0ID1cbiAgbGV0IHJlYyBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvIH5oaSA9XG4gICAgbGV0IHJhbmdlID0gaGkgLS4gbG8gaW5cbiAgICBpZiBGbG9hdC5pc19maW5pdGUgcmFuZ2VcbiAgICB0aGVuIChsbyArLiAodW5pdF9mbG9hdCBzdGF0ZSAqLiByYW5nZSkpXG4gICAgZWxzZSBiZWdpblxuICAgICAgKCogSWYgW2hpIC0gbG9dIGlzIGluZmluaXRlLCB0aGVuIFtoaSArIGxvXSBpcyBmaW5pdGUgYmVjYXVzZSBbaGldIGFuZCBbbG9dIGhhdmVcbiAgICAgICAgIG9wcG9zaXRlIHNpZ25zLiAqKVxuICAgICAgbGV0IG1pZCA9IChoaSArLiBsbykgLy4gMi4gaW5cbiAgICAgIGlmIGJvb2wgc3RhdGVcbiAgICAgICgqIERlcGVuZGluZyBvbiByb3VuZGluZywgdGhlIHJlY3Vyc2lvbiB3aXRoIFt+aGk6bWlkXSBtaWdodCBiZSBpbmNsdXNpdmUgb2YgW21pZF0sXG4gICAgICAgICB3aGljaCB3b3VsZCBtZWFuIHRoZSB0d28gY2FzZXMgb3ZlcmxhcCBvbiBbbWlkXS4gVGhlIGFsdGVybmF0aXZlIGlzIHRvIGluY3JlbWVudFxuICAgICAgICAgb3IgZGVjcmVtZW50IFttaWRdIHVzaW5nIFtvbmVfdWxwXSBpbiBlaXRoZXIgb2YgdGhlIGNhbGxzLCBidXQgdGhlbiBpZiB0aGUgZmlyc3RcbiAgICAgICAgIGNhc2UgaXMgZXhjbHVzaXZlIHdlIGxlYXZlIGEgXCJnYXBcIiBiZXR3ZWVuIHRoZSB0d28gcmFuZ2VzLiBUaGVyZSdzIG5vIHBlcmZlY3RseVxuICAgICAgICAgdW5pZm9ybSBzb2x1dGlvbiwgc28gd2UgdXNlIHRoZSBzaW1wbGVyIGNvZGUgdGhhdCBkb2VzIG5vdCBjYWxsIFtvbmVfdWxwXS4gKilcbiAgICAgIHRoZW4gZmluaXRlX2Zsb2F0IHN0YXRlIH5sbyB+aGk6bWlkXG4gICAgICBlbHNlIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG86bWlkIH5oaVxuICAgIGVuZFxuICBpblxuICBmdW4gc3RhdGUgfmxvIH5oaSAtPlxuICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIGxvICYmIEZsb2F0LmlzX2Zpbml0ZSBoaSlcbiAgICB0aGVuIGJlZ2luXG4gICAgICByYWlzZV9zIFslbWVzc2FnZVxuICAgICAgICBcImZsb2F0OiBib3VuZHMgYXJlIG5vdCBmaW5pdGUgbnVtYmVyc1wiXG4gICAgICAgICAgKGxvIDogZmxvYXQpXG4gICAgICAgICAgKGhpIDogZmxvYXQpXVxuICAgIGVuZDtcbiAgICBpZiBGbG9hdC4oID4gKSBsbyBoaVxuICAgIHRoZW4gYmVnaW5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgIFwiZmxvYXQ6IGJvdW5kcyBhcmUgY3Jvc3NlZFwiXG4gICAgICAgICAgKGxvIDogZmxvYXQpXG4gICAgICAgICAgKGhpIDogZmxvYXQpXVxuICAgIGVuZDtcbiAgICBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvIH5oaVxuXG5sZXQlYmVuY2hfZnVuIFwidW5pdF9mbG9hdF9mcm9tX2ludDY0XCIgPVxuICBsZXQgaW50NjQgPSAxTCBpblxuICBmdW4gKCkgLT4gdW5pdF9mbG9hdF9mcm9tX2ludDY0IGludDY0XG5cbm1vZHVsZSBMb2dfdW5pZm9ybSA9IHN0cnVjdFxuICBtb2R1bGUgTWFrZSAoTSA6IHNpZyBpbmNsdWRlIEludC5TIHZhbCB1bmlmb3JtIDogU3RhdGUudCAtPiBsbzp0IC0+IGhpOnQgLT4gdCBlbmQpIDogc2lnXG4gICAgdmFsIGxvZ191bmlmb3JtIDogU3RhdGUudCAtPiBsbzpNLnQgLT4gaGk6TS50IC0+IE0udFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBvcGVuIE1cblxuICAgIGxldCBiaXRzX3RvX3JlcHJlc2VudCB0ID1cbiAgICAgIGFzc2VydCAodCA+PSB6ZXJvKTtcbiAgICAgIGxldCB0ID0gcmVmIHQgaW5cbiAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgIHdoaWxlICF0ID4gemVybyBkb1xuICAgICAgICB0IDo9IHNoaWZ0X3JpZ2h0ICF0IDE7XG4gICAgICAgIEludC5pbmNyIG47XG4gICAgICBkb25lO1xuICAgICAgIW5cblxuICAgIGxldCV0ZXN0X3VuaXQgXCJiaXRzX3RvX3JlcHJlc2VudFwiID1cbiAgICAgIGxldCB0ZXN0IG4gZXhwZWN0ID0gWyV0ZXN0X3Jlc3VsdDogaW50XSAoYml0c190b19yZXByZXNlbnQgbikgfmV4cGVjdCAgaW5cbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAwKSAgIDA7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMSkgICAxO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDIpICAgMjtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAzKSAgIDI7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNCkgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDUpICAgMztcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA2KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNykgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDgpICAgNDtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAxMDApIDc7XG4gICAgICB0ZXN0IE0ubWF4X3ZhbHVlIChJbnQucHJlZCBNLm51bV9iaXRzKTtcbiAgICA7O1xuXG4gICAgbGV0IG1pbl9yZXByZXNlbnRlZF9ieV9uX2JpdHMgbiA9XG4gICAgICBpZiBJbnQuZXF1YWwgbiAwXG4gICAgICB0aGVuIHplcm9cbiAgICAgIGVsc2Ugc2hpZnRfbGVmdCBvbmUgKEludC5wcmVkIG4pXG5cbiAgICBsZXQldGVzdF91bml0IFwibWluX3JlcHJlc2VudGVkX2J5X25fYml0c1wiID1cbiAgICAgIGxldCB0ZXN0IG4gZXhwZWN0ID0gWyV0ZXN0X3Jlc3VsdDogTS50XSAobWluX3JlcHJlc2VudGVkX2J5X25fYml0cyBuKSB+ZXhwZWN0IGluXG4gICAgICB0ZXN0IDAgKE0ub2ZfaW50X2V4biAwKTtcbiAgICAgIHRlc3QgMSAoTS5vZl9pbnRfZXhuIDEpO1xuICAgICAgdGVzdCAyIChNLm9mX2ludF9leG4gMik7XG4gICAgICB0ZXN0IDMgKE0ub2ZfaW50X2V4biA0KTtcbiAgICAgIHRlc3QgNCAoTS5vZl9pbnRfZXhuIDgpO1xuICAgICAgdGVzdCA3IChNLm9mX2ludF9leG4gNjQpO1xuICAgICAgdGVzdCAoSW50LnByZWQgTS5udW1fYml0cykgKE0uc2hpZnRfcmlnaHRfbG9naWNhbCBNLm1pbl92YWx1ZSAxKTtcbiAgICA7O1xuXG4gICAgbGV0IG1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHMgbiA9XG4gICAgICBwcmVkIChzaGlmdF9sZWZ0IG9uZSBuKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBcIm1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHNcIiA9XG4gICAgICBsZXQgdGVzdCBuIGV4cGVjdCA9IFsldGVzdF9yZXN1bHQ6IE0udF0gKG1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHMgbikgfmV4cGVjdCAgaW5cbiAgICAgIHRlc3QgMCAoTS5vZl9pbnRfZXhuIDApO1xuICAgICAgdGVzdCAxIChNLm9mX2ludF9leG4gMSk7XG4gICAgICB0ZXN0IDIgKE0ub2ZfaW50X2V4biAzKTtcbiAgICAgIHRlc3QgMyAoTS5vZl9pbnRfZXhuIDcpO1xuICAgICAgdGVzdCA0IChNLm9mX2ludF9leG4gMTUpO1xuICAgICAgdGVzdCA3IChNLm9mX2ludF9leG4gMTI3KTtcbiAgICAgIHRlc3QgKEludC5wcmVkIE0ubnVtX2JpdHMpIE0ubWF4X3ZhbHVlO1xuICAgIDs7XG5cbiAgICBsZXQgbG9nX3VuaWZvcm0gc3RhdGUgfmxvIH5oaSA9XG4gICAgICBsZXQgbWluX2JpdHMgPSBiaXRzX3RvX3JlcHJlc2VudCBsbyBpblxuICAgICAgbGV0IG1heF9iaXRzID0gYml0c190b19yZXByZXNlbnQgaGkgaW5cbiAgICAgIGxldCBiaXRzID0gaW50IHN0YXRlIH5sbzptaW5fYml0cyB+aGk6bWF4X2JpdHMgaW5cbiAgICAgIHVuaWZvcm0gc3RhdGVcbiAgICAgICAgfmxvOihtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzIGJpdHMgfD4gbWF4IGxvKVxuICAgICAgICB+aGk6KG1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHMgYml0cyB8PiBtaW4gaGkpXG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfaW50ICAgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50ICAgICAgIGxldCB1bmlmb3JtID0gaW50ICAgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9pbnQzMiAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQzMiAgICAgbGV0IHVuaWZvcm0gPSBpbnQzMiAgICAgZW5kKVxuICBtb2R1bGUgRm9yX2ludDYzICAgICA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIEludDYzICAgICBsZXQgdW5pZm9ybSA9IGludDYzICAgICBlbmQpXG4gIG1vZHVsZSBGb3JfaW50NjQgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50NjQgICAgIGxldCB1bmlmb3JtID0gaW50NjQgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9uYXRpdmVpbnQgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBOYXRpdmVpbnQgbGV0IHVuaWZvcm0gPSBuYXRpdmVpbnQgZW5kKVxuXG4gIGxldCBpbnQgICAgICAgPSBGb3JfaW50LmxvZ191bmlmb3JtXG4gIGxldCBpbnQzMiAgICAgPSBGb3JfaW50MzIubG9nX3VuaWZvcm1cbiAgbGV0IGludDYzICAgICA9IEZvcl9pbnQ2My5sb2dfdW5pZm9ybVxuICBsZXQgaW50NjQgICAgID0gRm9yX2ludDY0LmxvZ191bmlmb3JtXG4gIGxldCBuYXRpdmVpbnQgPSBGb3JfbmF0aXZlaW50LmxvZ191bmlmb3JtXG5lbmRcblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogNjQtYml0IGludGVnZXJzLlxuXG4gICBUaGlzIG1vZHVsZSBwcm92aWRlcyBvcGVyYXRpb25zIG9uIHRoZSB0eXBlIFtpbnQ2NF0gb2ZcbiAgIHNpZ25lZCA2NC1iaXQgaW50ZWdlcnMuICBVbmxpa2UgdGhlIGJ1aWx0LWluIFtpbnRdIHR5cGUsXG4gICB0aGUgdHlwZSBbaW50NjRdIGlzIGd1YXJhbnRlZWQgdG8gYmUgZXhhY3RseSA2NC1iaXQgd2lkZSBvbiBhbGxcbiAgIHBsYXRmb3Jtcy4gIEFsbCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3ZlciBbaW50NjRdIGFyZSB0YWtlblxuICAgbW9kdWxvIDJ7XjY0fVxuXG4gICBQZXJmb3JtYW5jZSBub3RpY2U6IHZhbHVlcyBvZiB0eXBlIFtpbnQ2NF0gb2NjdXB5IG1vcmUgbWVtb3J5XG4gICBzcGFjZSB0aGFuIHZhbHVlcyBvZiB0eXBlIFtpbnRdLCBhbmQgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9uXG4gICBbaW50NjRdIGFyZSBnZW5lcmFsbHkgc2xvd2VyIHRoYW4gdGhvc2Ugb24gW2ludF0uICBVc2UgW2ludDY0XVxuICAgb25seSB3aGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1aXJlcyBleGFjdCA2NC1iaXQgYXJpdGhtZXRpYy5cblxuICAgIExpdGVyYWxzIGZvciA2NC1iaXQgaW50ZWdlcnMgYXJlIHN1ZmZpeGVkIGJ5IEw6XG4gICAge1tcbiAgICAgIGxldCB6ZXJvOiBpbnQ2NCA9IDBMXG4gICAgICBsZXQgb25lOiBpbnQ2NCA9IDFMXG4gICAgICBsZXQgbV9vbmU6IGludDY0ID0gLTFMXG4gICAgXX1cbiopXG5cbnZhbCB6ZXJvIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMC4gKilcblxudmFsIG9uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIDEuICopXG5cbnZhbCBtaW51c19vbmUgOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAtMS4gKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuKCoqIFVuYXJ5IG5lZ2F0aW9uLiAqKVxuXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG4oKiogQWRkaXRpb24uICopXG5cbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbigqKiBTdWJ0cmFjdGlvbi4gKilcblxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuKCoqIE11bHRpcGxpY2F0aW9uLiAqKVxuXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG4oKiogSW50ZWdlciBkaXZpc2lvbi5cbiAgIEByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGlmIHRoZSBzZWNvbmRcbiAgIGFyZ3VtZW50IGlzIHplcm8uICBUaGlzIGRpdmlzaW9uIHJvdW5kcyB0aGUgcmVhbCBxdW90aWVudCBvZlxuICAgaXRzIGFyZ3VtZW50cyB0b3dhcmRzIHplcm8sIGFzIHNwZWNpZmllZCBmb3IgeyFTdGRsaWIuKC8pfS4gKilcblxudmFsIHVuc2lnbmVkX2RpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IWRpdn0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOCAqKVxuXG5leHRlcm5hbCByZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X21vZFwiXG4oKiogSW50ZWdlciByZW1haW5kZXIuICBJZiBbeV0gaXMgbm90IHplcm8sIHRoZSByZXN1bHRcbiAgIG9mIFtJbnQ2NC5yZW0geCB5XSBzYXRpc2ZpZXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0eTpcbiAgIFt4ID0gSW50NjQuYWRkIChJbnQ2NC5tdWwgKEludDY0LmRpdiB4IHkpIHkpIChJbnQ2NC5yZW0geCB5KV0uXG4gICBJZiBbeSA9IDBdLCBbSW50NjQucmVtIHggeV0gcmFpc2VzIFtEaXZpc2lvbl9ieV96ZXJvXS4gKilcblxudmFsIHVuc2lnbmVkX3JlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IXJlbX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOCAqKVxuXG52YWwgc3VjYyA6IGludDY0IC0+IGludDY0XG4oKiogU3VjY2Vzc29yLiAgW0ludDY0LnN1Y2MgeF0gaXMgW0ludDY0LmFkZCB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBwcmVkIDogaW50NjQgLT4gaW50NjRcbigqKiBQcmVkZWNlc3Nvci4gIFtJbnQ2NC5wcmVkIHhdIGlzIFtJbnQ2NC5zdWIgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgYWJzIDogaW50NjQgLT4gaW50NjRcbigqKiBbYWJzIHhdIGlzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBbeF0uIE9uIFttaW5faW50XSB0aGlzXG4gICBpcyBbbWluX2ludF0gaXRzZWxmIGFuZCB0aHVzIHJlbWFpbnMgbmVnYXRpdmUuICopXG5cbnZhbCBtYXhfaW50IDogaW50NjRcbigqKiBUaGUgZ3JlYXRlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgMnteNjN9IC0gMS4gKilcblxudmFsIG1pbl9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAtMnteNjN9LiAqKVxuXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGFuZC4gKilcblxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgb3IuICopXG5cbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgZXhjbHVzaXZlIG9yLiAqKVxuXG52YWwgbG9nbm90IDogaW50NjQgLT4gaW50NjRcbigqKiBCaXR3aXNlIGxvZ2ljYWwgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuKCoqIFtJbnQ2NC5zaGlmdF9sZWZ0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgbGVmdCBieSBbeV0gYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYW4gYXJpdGhtZXRpYyBzaGlmdDogdGhlIHNpZ24gYml0IG9mIFt4XSBpcyByZXBsaWNhdGVkXG4gICBhbmQgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGEgbG9naWNhbCBzaGlmdDogemVyb2VzIGFyZSBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzXG4gICByZWdhcmRsZXNzIG9mIHRoZSBzaWduIG9mIFt4XS5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gaW50ZWdlciAodHlwZSBbaW50XSkgdG8gYSA2NC1iaXQgaW50ZWdlclxuICAgICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFuXG4gICBpbnRlZ2VyICh0eXBlIFtpbnRdKS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjYzfSwgaS5lLiB0aGUgaGlnaC1vcmRlciBiaXQgaXMgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgT24gMzItYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzF9LCBpLmUuIHRoZSB0b3AgMzMgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAqKVxuXG52YWwgdW5zaWduZWRfdG9faW50IDogaW50NjQgLT4gaW50IG9wdGlvblxuKCoqIFNhbWUgYXMgeyF0b19pbnR9LCBidXQgaW50ZXJwcmV0cyB0aGUgYXJndW1lbnQgYXMgYW4ge2UgdW5zaWduZWR9IGludGVnZXIuXG4gICAgUmV0dXJucyBbTm9uZV0gaWYgdGhlIHVuc2lnbmVkIHZhbHVlIG9mIHRoZSBhcmd1bWVudCBjYW5ub3QgZml0IGludG8gYW5cbiAgICBbaW50XS5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gZmxvYXRpbmctcG9pbnQgbnVtYmVyIHRvIGEgNjQtYml0IGludGVnZXIsXG4gICBkaXNjYXJkaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgKHRydW5jYXRlIHRvd2FyZHMgMCkuXG4gICBJZiB0aGUgdHJ1bmNhdGVkIGZsb2F0aW5nLXBvaW50IG51bWJlciBpcyBvdXRzaWRlIHRoZSByYW5nZVxuICAgXFxbeyFJbnQ2NC5taW5faW50fSwgeyFJbnQ2NC5tYXhfaW50fVxcXSwgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYW5kXG4gICBhbiB1bnNwZWNpZmllZCwgcGxhdGZvcm0tZGVwZW5kZW50IGludGVnZXIgaXMgcmV0dXJuZWQuICopXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgdG8gYSBmbG9hdGluZy1wb2ludCBudW1iZXIuICopXG5cblxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKS4gVGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzJ9LCBpLmUuIHRoZSB0b3AgMzIgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgKilcblxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBuYXRpdmUgaW50ZWdlciAodHlwZSBbbmF0aXZlaW50XSlcbiAgIHRvIGEgNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYVxuICAgbmF0aXZlIGludGVnZXIuICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0uICBPbiA2NC1iaXQgcGxhdGZvcm1zLFxuICAgdGhlIGNvbnZlcnNpb24gaXMgZXhhY3QuICopXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIHN0cmluZyB0byBhIDY0LWJpdCBpbnRlZ2VyLlxuICAgVGhlIHN0cmluZyBpcyByZWFkIGluIGRlY2ltYWwgKGJ5IGRlZmF1bHQsIG9yIGlmIHRoZSBzdHJpbmdcbiAgIGJlZ2lucyB3aXRoIFswdV0pIG9yIGluIGhleGFkZWNpbWFsLCBvY3RhbCBvciBiaW5hcnkgaWYgdGhlXG4gICBzdHJpbmcgYmVnaW5zIHdpdGggWzB4XSwgWzBvXSBvciBbMGJdIHJlc3BlY3RpdmVseS5cblxuICAgVGhlIFswdV0gcHJlZml4IHJlYWRzIHRoZSBpbnB1dCBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgW1swLCAyKkludDY0Lm1heF9pbnQrMV1dLiAgSWYgdGhlIGlucHV0IGV4Y2VlZHMgeyFJbnQ2NC5tYXhfaW50fVxuICAgaXQgaXMgY29udmVydGVkIHRvIHRoZSBzaWduZWQgaW50ZWdlclxuICAgW0ludDY0Lm1pbl9pbnQgKyBpbnB1dCAtIEludDY0Lm1heF9pbnQgLSAxXS5cblxuICAgVGhlIFtfXSAodW5kZXJzY29yZSkgY2hhcmFjdGVyIGNhbiBhcHBlYXIgYW55d2hlcmUgaW4gdGhlIHN0cmluZ1xuICAgYW5kIGlzIGlnbm9yZWQuXG4gICBAcmFpc2UgRmFpbHVyZSBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGlzIG5vdFxuICAgYSB2YWxpZCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLCBvciBpZiB0aGUgaW50ZWdlciByZXByZXNlbnRlZFxuICAgZXhjZWVkcyB0aGUgcmFuZ2Ugb2YgaW50ZWdlcnMgcmVwcmVzZW50YWJsZSBpbiB0eXBlIFtpbnQ2NF0uICopXG5cbnZhbCBvZl9zdHJpbmdfb3B0OiBzdHJpbmcgLT4gaW50NjQgb3B0aW9uXG4oKiogU2FtZSBhcyBbb2Zfc3RyaW5nXSwgYnV0IHJldHVybiBbTm9uZV0gaW5zdGVhZCBvZiByYWlzaW5nLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCB0b19zdHJpbmcgOiBpbnQ2NCAtPiBzdHJpbmdcbigqKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpdHMgYXJndW1lbnQsIGluIGRlY2ltYWwuICopXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZmxvYXQgYWNjb3JkaW5nXG4gICB0byB0aGUgSUVFRSA3NTQgZmxvYXRpbmctcG9pbnQgJ2RvdWJsZSBmb3JtYXQnIGJpdCBsYXlvdXQuXG4gICBCaXQgNjMgb2YgdGhlIHJlc3VsdCByZXByZXNlbnRzIHRoZSBzaWduIG9mIHRoZSBmbG9hdDtcbiAgIGJpdHMgNjIgdG8gNTIgcmVwcmVzZW50IHRoZSAoYmlhc2VkKSBleHBvbmVudDsgYml0cyA1MSB0byAwXG4gICByZXByZXNlbnQgdGhlIG1hbnRpc3NhLiAqKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIFJldHVybiB0aGUgZmxvYXRpbmctcG9pbnQgbnVtYmVyIHdob3NlIGludGVybmFsIHJlcHJlc2VudGF0aW9uLFxuICAgYWNjb3JkaW5nIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dCxcbiAgIGlzIHRoZSBnaXZlbiBbaW50NjRdLiAqKVxuXG50eXBlIHQgPSBpbnQ2NFxuKCoqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiA2NC1iaXQgaW50ZWdlcnMuICopXG5cbnZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogVGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRlZ2Vycywgd2l0aCB0aGUgc2FtZSBzcGVjaWZpY2F0aW9uIGFzXG4gICAgeyFTdGRsaWIuY29tcGFyZX0uICBBbG9uZyB3aXRoIHRoZSB0eXBlIFt0XSwgdGhpcyBmdW5jdGlvbiBbY29tcGFyZV1cbiAgICBhbGxvd3MgdGhlIG1vZHVsZSBbSW50NjRdIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudCB0byB0aGUgZnVuY3RvcnNcbiAgICB7IVNldC5NYWtlfSBhbmQgeyFNYXAuTWFrZX0uICopXG5cbnZhbCB1bnNpZ25lZF9jb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogU2FtZSBhcyB7IWNvbXBhcmV9LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYXJlIGludGVycHJldGVkIGFzIHtlIHVuc2lnbmVkfVxuICAgIDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbnZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbigqKiBUaGUgZXF1YWwgZnVuY3Rpb24gZm9yIGludDY0cy5cbiAgICBAc2luY2UgNC4wMyAqKVxuXG52YWwgbWluOiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgc21hbGxlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIG1heDogdCAtPiB0IC0+IHRcbigqKiBSZXR1cm4gdGhlIGdyZWF0ZXIgb2YgdGhlIHR3byBhcmd1bWVudHMuXG4gICAgQHNpbmNlIDQuMTNcbiAqKVxuXG52YWwgc2VlZGVkX2hhc2ggOiBpbnQgLT4gdCAtPiBpbnRcbigqKiBBIHNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciA2NC1iaXQgaW50cywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4xICopXG5cbnZhbCBoYXNoIDogdCAtPiBpbnRcbigqKiBBbiB1bnNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciA2NC1iaXQgaW50cywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0YmwuaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudFxuICAgIHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlfS5cblxuICAgIEBzaW5jZSA1LjEgKilcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIExheW91dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaWdhcnJheS5sYXlvdXRcblxuICBsZXQgb2Zmc2V0IDogdHlwZSBhLiBhIHQgLT4gaW50ID0gZnVuY3Rpb25cbiAgICB8IEJpZ2FycmF5LkZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICB8IEJpZ2FycmF5LkNfbGF5b3V0IC0+IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgQmlnYXJyYXkuQXJyYXkxLnRcblxuICBsZXQgaXRlcmkgdCB+ZiA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5MS5sYXlvdXQgdCkgaW5cbiAgICBmb3IgaSA9IDAgdG8gQmlnYXJyYXkuQXJyYXkxLmRpbSB0IC0gMSBkb1xuICAgICAgZiAoaSArIG9mZnNldCkgdC57aSArIG9mZnNldH1cbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IGluaXQgKHR5cGUgZWx0KSAoa2luZCA6IChlbHQsIF8pIEJpZ2FycmF5LmtpbmQpIGxheW91dCBkaW0gfmYgPVxuICAgIGxldCB0ID0gQmlnYXJyYXkuQXJyYXkxLmNyZWF0ZSBraW5kIGxheW91dCBkaW0gaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSAoXyA6IGVsdCkgLT4gdC57aX0gPC0gZiBpKTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGZvbGQgKHR5cGUgZWx0KSAodCA6IChlbHQsIF8sIF8pIHQpIH5pbml0IH5mID1cbiAgICBsZXQgaW5pdCA9IHJlZiBpbml0IGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgKF8gOiBlbHQpIC0+IGluaXQgOj0gZiAhaW5pdCB0LntpfSk7XG4gICAgIWluaXRcbiAgOztcblxuICBsZXQgdG9fYXJyYXkgdCA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5MS5sYXlvdXQgdCkgaW5cbiAgICBBcnJheS5pbml0IChCaWdhcnJheS5BcnJheTEuZGltIHQpIH5mOihmdW4gaSAtPiB0LntpICsgb2Zmc2V0fSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IF9zZXhwX29mX3BhY2sgX3NleHBfb2ZfbGF5b3V0IHQgPVxuICAgIFslc2V4cCAodG9fYXJyYXkgdCA6IGVsdCBhcnJheSldXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZCBoYXNoX2ZvbGRfZWx0IHN0YXRlIHQgPVxuICAgIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKEJpZ2FycmF5LkFycmF5MS5kaW0gdCkgaW5cbiAgICBmb2xkIHQgfmluaXQ6c3RhdGUgfmY6aGFzaF9mb2xkX2VsdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBcnJheTIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBCaWdhcnJheS5BcnJheTIudFxuXG4gIGxldCBpdGVyaSB0IH5mID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkyLmxheW91dCB0KSBpblxuICAgIGZvciBpID0gMCB0byBCaWdhcnJheS5BcnJheTIuZGltMSB0IC0gMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIEJpZ2FycmF5LkFycmF5Mi5kaW0yIHQgLSAxIGRvXG4gICAgICAgIGYgKGkgKyBvZmZzZXQpIChqICsgb2Zmc2V0KSB0LntpICsgb2Zmc2V0LCBqICsgb2Zmc2V0fVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgaW5pdCAodHlwZSBlbHQpIChraW5kIDogKGVsdCwgXykgQmlnYXJyYXkua2luZCkgbGF5b3V0IGRpbTEgZGltMiB+ZiA9XG4gICAgbGV0IHQgPSBCaWdhcnJheS5BcnJheTIuY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIGogKF8gOiBlbHQpIC0+IHQue2ksIGp9IDwtIGYgaSBqKTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGZvbGQgKHR5cGUgZWx0KSAodCA6IChlbHQsIF8sIF8pIHQpIH5pbml0IH5mID1cbiAgICBsZXQgaW5pdCA9IHJlZiBpbml0IGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIChfIDogaW50KSAoXyA6IGludCkgZWx0IC0+IGluaXQgOj0gZiAhaW5pdCBlbHQpO1xuICAgICFpbml0XG4gIDs7XG5cbiAgbGV0IHRvX2FycmF5IHQgPVxuICAgIGxldCBvZmZzZXQgPSBMYXlvdXQub2Zmc2V0IChCaWdhcnJheS5BcnJheTIubGF5b3V0IHQpIGluXG4gICAgQXJyYXkuaW5pdCAoQmlnYXJyYXkuQXJyYXkyLmRpbTEgdCkgfmY6KGZ1biBpIC0+XG4gICAgICBBcnJheS5pbml0IChCaWdhcnJheS5BcnJheTIuZGltMiB0KSB+ZjooZnVuIGogLT4gdC57aSArIG9mZnNldCwgaiArIG9mZnNldH0pKVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgX3NleHBfb2ZfcGFjayBfc2V4cF9vZl9sYXlvdXQgdCA9XG4gICAgWyVzZXhwICh0b19hcnJheSB0IDogZWx0IGFycmF5IGFycmF5KV1cbiAgOztcblxuICBsZXQgaGFzaF9mb2xkIGhhc2hfZm9sZF9lbHQgc3RhdGUgdCA9XG4gICAgbGV0IHN0YXRlID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoQmlnYXJyYXkuQXJyYXkyLmRpbTEgdCkgaW5cbiAgICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChCaWdhcnJheS5BcnJheTIuZGltMiB0KSBpblxuICAgIGZvbGQgdCB+aW5pdDpzdGF0ZSB+ZjpoYXNoX2ZvbGRfZWx0XG4gIDs7XG5lbmRcbiIsIm9wZW4hIEJhc2VcblxudHlwZSAnYSB0ID0gJ2EgLT4gc2l6ZTppbnQgLT4gaGFzaDpIYXNoLnN0YXRlIC0+IEhhc2guc3RhdGVcblxubGV0IGNyZWF0ZSBmIDogXyB0ID0gZlxuXG5sZXQgb2JzZXJ2ZSAodCA6IF8gdCkgeCB+c2l6ZSB+aGFzaCA9XG4gIGlmIHNpemUgPCAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIub2JzZXJ2ZTogc2l6ZSA8IDBcIiAoc2l6ZSA6IGludCldXG4gIGVsc2UgdCB4IH5zaXplIH5oYXNoXG47O1xuXG5sZXQgb3BhcXVlIF8gfnNpemU6XyB+aGFzaCA9IGhhc2hcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSArJ2EgdFxuXG4gIHZhbCBjcmVhdGUgOiAoc2l6ZTppbnQgLT4gcmFuZG9tOlNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIGdlbmVyYXRlIDogJ2EgdCAtPiBzaXplOmludCAtPiByYW5kb206U3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiAnYVxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IChzaXplOmludCAtPiByYW5kb206U3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiAnYSkgU3RhZ2VkLnRcblxuICBsZXQgY3JlYXRlIGYgOiBfIHQgPSBTdGFnZWQuc3RhZ2UgZlxuXG4gIGxldCBnZW5lcmF0ZSAodCA6IF8gdCkgfnNpemUgfnJhbmRvbSA9XG4gICAgaWYgc2l6ZSA8IDBcbiAgICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5nZW5lcmF0ZTogc2l6ZSA8IDBcIiAoc2l6ZSA6IGludCldXG4gICAgZWxzZSBTdGFnZWQudW5zdGFnZSB0IH5zaXplIH5yYW5kb21cbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IHNpemUgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tOl8gLT4gc2l6ZSlcblxubGV0IGZuIGRvbSBybmcgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnNwbGl0IHJhbmRvbSBpblxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgaGFzaCA9IE9ic2VydmVyMC5vYnNlcnZlIGRvbSB4IH5zaXplIH5oYXNoOihIYXNoLmFsbG9jICgpKSBpblxuICAgICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLmNvcHkgcmFuZG9tIGluXG4gICAgICBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5wZXJ0dXJiIHJhbmRvbSAoSGFzaC5nZXRfaGFzaF92YWx1ZSBoYXNoKTtcbiAgICAgIGdlbmVyYXRlIHJuZyB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IHdpdGhfc2l6ZSB0IH5zaXplID0gY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSlcblxubGV0IHBlcnR1cmIgdCBzYWx0ID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnBlcnR1cmIgcmFuZG9tIHNhbHQ7XG4gICAgZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB+c2l6ZSB+cmFuZG9tID1cbiAgICBsZXQgeCA9IGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSBpblxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgfCBTb21lIHkgLT4geVxuICAgIHwgTm9uZSAtPiBsb29wIH5zaXplOihzaXplICsgMSkgfnJhbmRvbVxuICBpblxuICBjcmVhdGUgbG9vcFxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKVxubGV0IHJldHVybiB4ID0gY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tOl8gLT4geClcbmxldCBtYXAgdCB+ZiA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gZiAoZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tKSlcblxubGV0IGFwcGx5IHRmIHR4ID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGxldCBmID0gZ2VuZXJhdGUgdGYgfnNpemUgfnJhbmRvbSBpblxuICAgIGxldCB4ID0gZ2VuZXJhdGUgdHggfnNpemUgfnJhbmRvbSBpblxuICAgIGYgeClcbjs7XG5cbmxldCBiaW5kIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IHggPSBnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20gaW5cbiAgICBnZW5lcmF0ZSAoZiB4KSB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IGFsbCBsaXN0ID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBMaXN0Lm1hcCBsaXN0IH5mOihnZW5lcmF0ZSB+c2l6ZSB+cmFuZG9tKSlcblxubGV0IGFsbF91bml0IGxpc3QgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IExpc3QuaXRlciBsaXN0IH5mOihnZW5lcmF0ZSB+c2l6ZSB+cmFuZG9tKSlcbjs7XG5cbm1vZHVsZSBGb3JfYXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBhcHBseSA9IGFwcGx5XG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGJvdGggPSBGb3JfYXBwbGljYXRpdmUuYm90aFxubGV0IG1hcDIgPSBGb3JfYXBwbGljYXRpdmUubWFwMlxubGV0IG1hcDMgPSBGb3JfYXBwbGljYXRpdmUubWFwM1xuXG5tb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBGb3JfYXBwbGljYXRpdmUuQXBwbGljYXRpdmVfaW5maXhcbmluY2x1ZGUgQXBwbGljYXRpdmVfaW5maXhcblxubW9kdWxlIEZvcl9tb25hZCA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGlnbm9yZV9tID0gRm9yX21vbmFkLmlnbm9yZV9tXG5sZXQgam9pbiA9IEZvcl9tb25hZC5qb2luXG5cbm1vZHVsZSBNb25hZF9pbmZpeCA9IEZvcl9tb25hZC5Nb25hZF9pbmZpeFxuaW5jbHVkZSBNb25hZF9pbmZpeFxubW9kdWxlIExldF9zeW50YXggPSBGb3JfbW9uYWQuTGV0X3N5bnRheFxub3BlbiBMZXRfc3ludGF4XG5cbmxldCBvZl9saXN0IGxpc3QgPVxuICBpZiBMaXN0LmlzX2VtcHR5IGxpc3RcbiAgdGhlbiBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2ZfbGlzdDogZW1wdHkgbGlzdFwiXTtcbiAgbGV0IGFycmF5ID0gQXJyYXkub2ZfbGlzdCBsaXN0IGluXG4gIGxldCBsbyA9IDAgaW5cbiAgbGV0IGhpID0gQXJyYXkubGVuZ3RoIGFycmF5IC0gMSBpblxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgaW5kZXggPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbyB+aGkgaW5cbiAgICBhcnJheS4oaW5kZXgpKVxuOztcblxubGV0IHVuaW9uIGxpc3QgPSBqb2luIChvZl9saXN0IGxpc3QpXG5cbmxldCBvZl93ZWlnaHRlZF9saXN0IGFsaXN0ID1cbiAgaWYgTGlzdC5pc19lbXB0eSBhbGlzdFxuICB0aGVuIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiBlbXB0eSBsaXN0XCJdO1xuICBsZXQgd2VpZ2h0cywgdmFsdWVzID0gTGlzdC51bnppcCBhbGlzdCBpblxuICBsZXQgdmFsdWVfYXJyYXkgPSBBcnJheS5vZl9saXN0IHZhbHVlcyBpblxuICBsZXQgdG90YWxfd2VpZ2h0LCBjdW11bGF0aXZlX3dlaWdodF9hcnJheSA9XG4gICAgbGV0IGFycmF5ID0gQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIHZhbHVlX2FycmF5KSB+ZjooZnVuIF8gLT4gMC4pIGluXG4gICAgbGV0IHN1bSA9XG4gICAgICBMaXN0LmZvbGRpIHdlaWdodHMgfmluaXQ6MC4gfmY6KGZ1biBpbmRleCBhY2Mgd2VpZ2h0IC0+XG4gICAgICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIHdlaWdodClcbiAgICAgICAgdGhlblxuICAgICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogd2VpZ2h0IGlzIG5vdCBmaW5pdGVcIlxuICAgICAgICAgICAgICAgICh3ZWlnaHQgOiBmbG9hdCldO1xuICAgICAgICBpZiBGbG9hdC4oIDwgKSB3ZWlnaHQgMC5cbiAgICAgICAgdGhlblxuICAgICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogd2VpZ2h0IGlzIG5lZ2F0aXZlXCJcbiAgICAgICAgICAgICAgICAod2VpZ2h0IDogZmxvYXQpXTtcbiAgICAgICAgbGV0IGN1bXVsYXRpdmUgPSBhY2MgKy4gd2VpZ2h0IGluXG4gICAgICAgIGFycmF5LihpbmRleCkgPC0gY3VtdWxhdGl2ZTtcbiAgICAgICAgY3VtdWxhdGl2ZSlcbiAgICBpblxuICAgIGlmIEZsb2F0LiggPD0gKSBzdW0gMC5cbiAgICB0aGVuXG4gICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogdG90YWwgd2VpZ2h0IGlzIHplcm9cIl07XG4gICAgc3VtLCBhcnJheVxuICBpblxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgY2hvaWNlID0gU3BsaXR0YWJsZV9yYW5kb20uZmxvYXQgcmFuZG9tIH5sbzowLiB+aGk6dG90YWxfd2VpZ2h0IGluXG4gICAgbWF0Y2hcbiAgICAgIEFycmF5LmJpbmFyeV9zZWFyY2hcbiAgICAgICAgY3VtdWxhdGl2ZV93ZWlnaHRfYXJyYXlcbiAgICAgICAgfmNvbXBhcmU6RmxvYXQuY29tcGFyZVxuICAgICAgICBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgICAgIGNob2ljZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgaW5kZXggLT4gdmFsdWVfYXJyYXkuKGluZGV4KVxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5sZXQgd2VpZ2h0ZWRfdW5pb24gYWxpc3QgPSBqb2luIChvZl93ZWlnaHRlZF9saXN0IGFsaXN0KVxubGV0IG9mX2xhenkgbGF6eV90ID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBnZW5lcmF0ZSAoZm9yY2UgbGF6eV90KSB+c2l6ZSB+cmFuZG9tKVxuXG5sZXQgZml4ZWRfcG9pbnQgb2ZfZ2VuZXJhdG9yID1cbiAgbGV0IHJlYyBsYXp5X3QgPSBsYXp5IChvZl9nZW5lcmF0b3IgKG9mX2xhenkgbGF6eV90KSkgaW5cbiAgZm9yY2UgbGF6eV90XG47O1xuXG5sZXQgd2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIG5vbnJlY19saXN0IH5mID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBzZWxmIC0+XG4gICAgbGV0IHJlY19saXN0ID1cbiAgICAgIExpc3QubWFwIChmIHNlbGYpIH5mOihmdW4gKHcsIHQpIC0+XG4gICAgICAgICggd1xuICAgICAgICAsIGxldCViaW5kIG4gPSBzaXplIGluXG4gICAgICAgICAgd2l0aF9zaXplIH5zaXplOihuIC0gMSkgdCApKVxuICAgIGluXG4gICAgaWYgTGlzdC5pc19lbXB0eSBub25yZWNfbGlzdCB8fCBMaXN0LmlzX2VtcHR5IHJlY19saXN0XG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iud2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uOiBsaXN0cyBtdXN0IGJlIG5vbi1lbXB0eVwiXTtcbiAgICBsZXQgbm9ucmVjX2dlbiA9IHdlaWdodGVkX3VuaW9uIG5vbnJlY19saXN0IGluXG4gICAgbGV0IHJlY19nZW4gPSB3ZWlnaHRlZF91bmlvbiAobm9ucmVjX2xpc3QgQCByZWNfbGlzdCkgaW5cbiAgICBtYXRjaCViaW5kIHNpemUgd2l0aFxuICAgIHwgMCAtPiBub25yZWNfZ2VuXG4gICAgfCBfIC0+IHJlY19nZW4pXG47O1xuXG5sZXQgcmVjdXJzaXZlX3VuaW9uIG5vbnJlY19saXN0IH5mID1cbiAgbGV0IHdlaWdodGVkIGxpc3QgPSBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gdCAtPiAxLiwgdCkgaW5cbiAgd2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uICh3ZWlnaHRlZCBub25yZWNfbGlzdCkgfmY6KGZ1biBzZWxmIC0+IHdlaWdodGVkIChmIHNlbGYpKVxuOztcblxubGV0IHNpemVzID8obWluX2xlbmd0aCA9IDApID8obWF4X2xlbmd0aCA9IEludC5tYXhfdmFsdWUpICgpID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGFzc2VydCAobWluX2xlbmd0aCA8PSBtYXhfbGVuZ3RoKTtcbiAgICBsZXQgdXBwZXJfYm91bmQgPSBtaW5fbGVuZ3RoICsgc2l6ZSBpblxuICAgIGxldCBtYXhfbGVuZ3RoID1cbiAgICAgIGlmIHVwcGVyX2JvdW5kID49IG1pbl9sZW5ndGggKCogZ3VhcmQgYWdhaW5zdCBvdmVyZmxvdyAqKVxuICAgICAgdGhlbiBtaW4gbWF4X2xlbmd0aCB1cHBlcl9ib3VuZFxuICAgICAgZWxzZSBtYXhfbGVuZ3RoXG4gICAgaW5cbiAgICAoKiBwaWNrIGEgbGVuZ3RoLCB3ZWlnaHRlZCBsb3cgc28gdGhhdCBtb3N0IG9mIHRoZSBzaXplIGlzIHNwZW50IG9uIGVsZW1lbnRzICopXG4gICAgbGV0IGxlbiA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludCByYW5kb20gfmxvOm1pbl9sZW5ndGggfmhpOm1heF9sZW5ndGggaW5cbiAgICAoKiBpZiB0aGVyZSBhcmUgbm8gZWxlbWVudHMgcmV0dXJuIGFuIGVtcHR5IGFycmF5LCBvdGhlcndpc2UgcmV0dXJuIGEgbm9uLWVtcHR5IGFycmF5XG4gICAgICAgd2l0aCB0aGUgc2l6ZSBkaXN0cmlidXRlZCBhbW9uZyB0aGUgZWxlbWVudHMgKilcbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiBbXVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHNpemVzID0gQXJyYXkuaW5pdCBsZW4gfmY6KGZ1biBfIC0+IDApIGluXG4gICAgICBsZXQgcmVtYWluaW5nID0gc2l6ZSAtIChsZW4gLSBtaW5fbGVuZ3RoKSBpblxuICAgICAgbGV0IG1heF9pbmRleCA9IGxlbiAtIDEgaW5cbiAgICAgIGZvciBfID0gMSB0byByZW1haW5pbmcgZG9cbiAgICAgICAgKCogcGljayBhbiBpbmRleCwgd2VpZ2h0ZWQgbG93IHNvIHRoYXQgd2Ugc2VlIHVuYmFsYW5jZWQgZGlzdHJpYnV0aW9ucyBvZnRlbiAqKVxuICAgICAgICBsZXQgaW5kZXggPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQgcmFuZG9tIH5sbzowIH5oaTptYXhfaW5kZXggaW5cbiAgICAgICAgc2l6ZXMuKGluZGV4KSA8LSBzaXplcy4oaW5kZXgpICsgMVxuICAgICAgZG9uZTtcbiAgICAgICgqIHBlcm11dGUgdGhlIGFycmF5IHNvIHRoYXQgbm8gaW5kZXggaXMgZmF2b3JlZCBvdmVyIGFub3RoZXIgKilcbiAgICAgIGZvciBpID0gMCB0byBtYXhfaW5kZXggLSAxIGRvXG4gICAgICAgIGxldCBqID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86aSB+aGk6bWF4X2luZGV4IGluXG4gICAgICAgIEFycmF5LnN3YXAgc2l6ZXMgaSBqXG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IChBcnJheS5zdW0gKG1vZHVsZSBJbnQpIHNpemVzIH5mOkZuLmlkICsgKGxlbiAtIG1pbl9sZW5ndGgpID0gc2l6ZSk7XG4gICAgICBBcnJheS50b19saXN0IHNpemVzKSlcbjs7XG5cbmxldCB1bml0ID0gcmV0dXJuICgpXG5sZXQgYm9vbCA9IGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBTcGxpdHRhYmxlX3JhbmRvbS5ib29sIHJhbmRvbSlcbmxldCBvcHRpb24gdmFsdWVfdCA9IHVuaW9uIFsgcmV0dXJuIE5vbmU7IG1hcCB2YWx1ZV90IH5mOk9wdGlvbi5yZXR1cm4gXVxubGV0IGVpdGhlciBmc3RfdCBzbmRfdCA9IHVuaW9uIFsgbWFwIGZzdF90IH5mOkVpdGhlci5maXJzdDsgbWFwIHNuZF90IH5mOkVpdGhlci5zZWNvbmQgXVxuXG5sZXQgcmVzdWx0IG9rX3QgZXJyX3QgPVxuICBtYXAgKGVpdGhlciBva190IGVycl90KSB+ZjooZnVuY3Rpb25cbiAgICB8IEZpcnN0IG9rIC0+IE9rIG9rXG4gICAgfCBTZWNvbmQgZXJyIC0+IEVycm9yIGVycilcbjs7XG5cbmxldCBsaXN0X2dlbmVyaWMgP21pbl9sZW5ndGggP21heF9sZW5ndGggZWx0X2dlbiA9XG4gIGxldCViaW5kIHNpemVzID0gc2l6ZXMgP21pbl9sZW5ndGggP21heF9sZW5ndGggKCkgaW5cbiAgTGlzdC5tYXAgc2l6ZXMgfmY6KGZ1biBzaXplIC0+IHdpdGhfc2l6ZSB+c2l6ZSBlbHRfZ2VuKSB8PiBhbGxcbjs7XG5cbmxldCBsaXN0IGVsdF9nZW4gPSBsaXN0X2dlbmVyaWMgZWx0X2dlblxubGV0IGxpc3Rfbm9uX2VtcHR5IGVsdF9nZW4gPSBsaXN0X2dlbmVyaWMgfm1pbl9sZW5ndGg6MSBlbHRfZ2VuXG5cbmxldCBsaXN0X3dpdGhfbGVuZ3RoIGVsdF9nZW4gfmxlbmd0aCA9XG4gIGxpc3RfZ2VuZXJpYyB+bWluX2xlbmd0aDpsZW5ndGggfm1heF9sZW5ndGg6bGVuZ3RoIGVsdF9nZW5cbjs7XG5cbmxldCBsaXN0X2ZpbHRlcmVkIGVsdHMgPVxuICBsZXQgZWx0cyA9IEFycmF5Lm9mX2xpc3QgZWx0cyBpblxuICBsZXQgbGVuZ3RoX29mX2lucHV0ID0gQXJyYXkubGVuZ3RoIGVsdHMgaW5cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgbGV0IGxlbmd0aF9vZl9vdXRwdXQgPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzowIH5oaTpsZW5ndGhfb2ZfaW5wdXQgaW5cbiAgICBsZXQgaW5kaWNlcyA9IEFycmF5LmluaXQgbGVuZ3RoX29mX2lucHV0IH5mOkZuLmlkIGluXG4gICAgKCogQ2hvb3NlIFtsZW5ndGhfb2Zfb3V0cHV0XSByYW5kb20gdmFsdWVzIGluIHRoZSBwcmVmaXggb2YgW2luZGljZXNdLiAqKVxuICAgIGZvciBpID0gMCB0byBsZW5ndGhfb2Zfb3V0cHV0IC0gMSBkb1xuICAgICAgbGV0IGogPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzppIH5oaToobGVuZ3RoX29mX2lucHV0IC0gMSkgaW5cbiAgICAgIEFycmF5LnN3YXAgaW5kaWNlcyBpIGpcbiAgICBkb25lO1xuICAgICgqIFNvcnQgdGhlIGNob3NlbiBpbmRpY2VzIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byByZW9yZGVyIHRoZW0uICopXG4gICAgQXJyYXkuc29ydCBpbmRpY2VzIH5wb3M6MCB+bGVuOmxlbmd0aF9vZl9vdXRwdXQgfmNvbXBhcmU6SW50LmNvbXBhcmU7XG4gICAgKCogUmV0dXJuIHRoZSBjaG9zZW4gZWxlbWVudHMuICopXG4gICAgTGlzdC5pbml0IGxlbmd0aF9vZl9vdXRwdXQgfmY6KGZ1biBpIC0+IGVsdHMuKGluZGljZXMuKGkpKSkpXG47O1xuXG5sZXQgbGlzdF9wZXJtdXRhdGlvbnMgbGlzdCA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBhcnJheSA9IEFycmF5Lm9mX2xpc3QgbGlzdCBpblxuICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAxIGRvXG4gICAgICBsZXQgaiA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOjAgfmhpOmkgaW5cbiAgICAgIEFycmF5LnN3YXAgYXJyYXkgaSBqXG4gICAgZG9uZTtcbiAgICBBcnJheS50b19saXN0IGFycmF5KVxuOztcblxubGV0IGFycmF5IHQgPSBtYXAgKGxpc3QgdCkgfmY6QXJyYXkub2ZfbGlzdFxubGV0IHJlZiB0ID0gbWFwIHQgfmY6UmVmLmNyZWF0ZVxubGV0IGxhenlfdCB0ID0gbWFwIHQgfmY6TGF6eS5mcm9tX3ZhbFxuXG5sZXQgY2hhcl91bmlmb3JtX2luY2x1c2l2ZSBsbyBoaSA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOihDaGFyLnRvX2ludCBsbykgfmhpOihDaGFyLnRvX2ludCBoaSlcbiAgICB8PiBDaGFyLnVuc2FmZV9vZl9pbnQpXG47O1xuXG5sZXQgY2hhcl91cHBlcmNhc2UgPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICdBJyAnWidcbmxldCBjaGFyX2xvd2VyY2FzZSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJ2EnICd6J1xubGV0IGNoYXJfZGlnaXQgPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICcwJyAnOSdcbmxldCBjaGFyX3ByaW50X3VuaWZvcm0gPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICcgJyAnfidcbmxldCBjaGFyX3VuaWZvcm0gPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlIENoYXIubWluX3ZhbHVlIENoYXIubWF4X3ZhbHVlXG5sZXQgY2hhcl9hbHBoYSA9IHVuaW9uIFsgY2hhcl9sb3dlcmNhc2U7IGNoYXJfdXBwZXJjYXNlIF1cblxubGV0IGNoYXJfYWxwaGFudW0gPVxuICB3ZWlnaHRlZF91bmlvblxuICAgICgqIE1vc3QgcGVvcGxlIHByb2JhYmx5IGV4cGVjdCB0aGlzIHRvIGJlIGEgdW5pZm9ybSBkaXN0cmlidXRpb24sIG5vdCB3ZWlnaHRlZFxuICAgICAgIHRvd2FyZCBkaWdpdHMgbGlrZSB3ZSB3b3VsZCBnZXQgd2l0aCBbdW5pb25dIChzaW5jZSB0aGVyZSBhcmUgZmV3ZXIgZGlnaXRzIHRoYW5cbiAgICAgICBsZXR0ZXJzKS4gKilcbiAgICBbIDUyLiwgY2hhcl9hbHBoYTsgMTAuLCBjaGFyX2RpZ2l0IF1cbjs7XG5cbmxldCBjaGFyX3doaXRlc3BhY2UgPSBvZl9saXN0IChMaXN0LmZpbHRlciBDaGFyLmFsbCB+ZjpDaGFyLmlzX3doaXRlc3BhY2UpXG5sZXQgY2hhcl9wcmludCA9IHdlaWdodGVkX3VuaW9uIFsgMTAuLCBjaGFyX2FscGhhbnVtOyAxLiwgY2hhcl9wcmludF91bmlmb3JtIF1cblxubGV0IGNoYXIgPVxuICB3ZWlnaHRlZF91bmlvblxuICAgIFsgMTAwLiwgY2hhcl9wcmludFxuICAgIDsgMTAuLCBjaGFyX3VuaWZvcm1cbiAgICA7IDEuLCByZXR1cm4gQ2hhci5taW5fdmFsdWVcbiAgICA7IDEuLCByZXR1cm4gQ2hhci5tYXhfdmFsdWVcbiAgICBdXG47O1xuXG4oKiBQcm9kdWNlcyBhIG51bWJlciBmcm9tIDAgb3IgMSB0byBzaXplICsgMSwgd2VpZ2h0ZWQgaGlnaC4gV2UgaGF2ZSBmb3VuZCB0aGlzXG4gICBkaXN0cmlidXRpb24gZW1waXJpY2FsbHkgdXNlZnVsIGZvciBzdHJpbmcgbGVuZ3Rocy4gKilcbmxldCBzbWFsbF9pbnQgfmFsbG93X3plcm8gPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IGxvd2VyX2JvdW5kID0gaWYgYWxsb3dfemVybyB0aGVuIDAgZWxzZSAxIGluXG4gICAgbGV0IHVwcGVyX2JvdW5kID0gc2l6ZSArIDEgaW5cbiAgICBsZXQgd2VpZ2h0ZWRfbG93ID1cbiAgICAgIFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludCByYW5kb20gfmxvOjAgfmhpOih1cHBlcl9ib3VuZCAtIGxvd2VyX2JvdW5kKVxuICAgIGluXG4gICAgbGV0IHdlaWdodGVkX2hpZ2ggPSB1cHBlcl9ib3VuZCAtIHdlaWdodGVkX2xvdyBpblxuICAgIHdlaWdodGVkX2hpZ2gpXG47O1xuXG5sZXQgc21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQgPSBzbWFsbF9pbnQgfmFsbG93X3plcm86dHJ1ZVxubGV0IHNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludCA9IHNtYWxsX2ludCB+YWxsb3dfemVybzpmYWxzZVxuXG5tb2R1bGUgdHlwZSBJbnRfd2l0aF9yYW5kb20gPSBzaWdcbiAgaW5jbHVkZSBJbnQuU1xuXG4gIHZhbCB1bmlmb3JtIDogU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiBsbzp0IC0+IGhpOnQgLT4gdFxuICB2YWwgbG9nX3VuaWZvcm0gOiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0XG5lbmRcblxubW9kdWxlIEZvcl9pbnRlZ2VyIChJbnRlZ2VyIDogSW50X3dpdGhfcmFuZG9tKSA9IHN0cnVjdFxuICBsZXQgZ2VvbWV0cmljIGxvIH5wID1cbiAgICBpZiBGbG9hdC5lcXVhbCBwIDEuXG4gICAgdGhlbiByZXR1cm4gbG9cbiAgICBlbHNlIGlmIEZsb2F0LmVxdWFsIHAgMC5cbiAgICB0aGVuIHJldHVybiBJbnRlZ2VyLm1heF92YWx1ZVxuICAgIGVsc2UgaWYgRmxvYXQuKCA8ICkgcCAwLiB8fCBGbG9hdC4oID4gKSBwIDEuIHx8IEZsb2F0LmlzX25hbiBwXG4gICAgdGhlblxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJnZW9tZXRyaWMgZGlzdHJpYnV0aW9uOiBwIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxXCIgKHAgOiBmbG9hdCldXG4gICAgZWxzZSAoXG4gICAgICAoKiBXZSBzdGFydCB3aXRoIGEgdW5pZm9ybSBkaXN0cmlidXRpb24uIFdlIGNvbnZlcnQgdG8gZXhwb25lbnRpYWwgZGlzdHJpYnV0aW9uXG4gICAgICAgICB1c2luZyBbbG9nXS4gV2UgY29udmVydCB0byBnZW9tZXRyaWMgd2l0aCBbcm91bmRfZG93bl0uIFRoZW4gd2UgYm91bmRzIGNoZWNrIGFuZFxuICAgICAgICAgcmV0dXJuLiAqKVxuICAgICAgbGV0IGRlbm9taW5hdG9yID0gRmxvYXQubG9nMXAgKC0ucCkgaW5cbiAgICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgICAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLnVuaXRfZmxvYXQgcmFuZG9tIGluXG4gICAgICAgIGxldCBleHBvbmVudGlhbCA9IEZsb2F0LmxvZyB1bmlmb3JtIC8uIGRlbm9taW5hdG9yIGluXG4gICAgICAgIGxldCBmbG9hdCA9IEZsb2F0LnJvdW5kX2Rvd24gZXhwb25lbnRpYWwgaW5cbiAgICAgICAgbWF0Y2ggSW50ZWdlci5vZl9mbG9hdCBmbG9hdCB3aXRoXG4gICAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPiBJbnRlZ2VyLm1heF92YWx1ZVxuICAgICAgICB8IGludCAtPlxuICAgICAgICAgIGxldCBpbnQgPSBJbnRlZ2VyLiggKyApIGxvIGludCBpblxuICAgICAgICAgIGlmIEludGVnZXIuKCA8ICkgaW50IGxvIHRoZW4gSW50ZWdlci5tYXhfdmFsdWUgZWxzZSBpbnQpKVxuICA7O1xuXG4gIGxldCB1bmlmb3JtX2luY2x1c2l2ZSBsbyBoaSA9XG4gICAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IEludGVnZXIudW5pZm9ybSByYW5kb20gfmxvIH5oaSlcbiAgOztcblxuICBsZXQgbG9nX3VuaWZvcm1faW5jbHVzaXZlIGxvIGhpID1cbiAgICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gSW50ZWdlci5sb2dfdW5pZm9ybSByYW5kb20gfmxvIH5oaSlcbiAgOztcblxuICBsZXQgbm9uX3VuaWZvcm0gZiBsbyBoaSA9XG4gICAgd2VpZ2h0ZWRfdW5pb24gWyAwLjA1LCByZXR1cm4gbG87IDAuMDUsIHJldHVybiBoaTsgMC45LCBmIGxvIGhpIF1cbiAgOztcblxuICBsZXQgaW5jbHVzaXZlID0gbm9uX3VuaWZvcm0gdW5pZm9ybV9pbmNsdXNpdmVcbiAgbGV0IGxvZ19pbmNsdXNpdmUgPSBub25fdW5pZm9ybSBsb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiAgbGV0IHVuaWZvcm1fYWxsID0gdW5pZm9ybV9pbmNsdXNpdmUgSW50ZWdlci5taW5fdmFsdWUgSW50ZWdlci5tYXhfdmFsdWVcblxuICBsZXQgYWxsID1cbiAgICBbJW1hcFxuICAgICAgbGV0IG5lZ2F0aXZlID0gYm9vbFxuICAgICAgYW5kIG1hZ25pdHVkZSA9IGxvZ19pbmNsdXNpdmUgSW50ZWdlci56ZXJvIEludGVnZXIubWF4X3ZhbHVlIGluXG4gICAgICBpZiBuZWdhdGl2ZSB0aGVuIEludGVnZXIuYml0X25vdCBtYWduaXR1ZGUgZWxzZSBtYWduaXR1ZGVdXG4gIDs7XG5lbmRcblxubW9kdWxlIEZvcl9pbnQgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50XG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50XG4gIGVuZClcblxubGV0IGludCA9IEZvcl9pbnQuYWxsXG5sZXQgaW50X3VuaWZvcm0gPSBGb3JfaW50LnVuaWZvcm1fYWxsXG5sZXQgaW50X2luY2x1c2l2ZSA9IEZvcl9pbnQuaW5jbHVzaXZlXG5sZXQgaW50X3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludC51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludF9sb2dfaW5jbHVzaXZlID0gRm9yX2ludC5sb2dfaW5jbHVzaXZlXG5sZXQgaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50X2dlb21ldHJpYyA9IEZvcl9pbnQuZ2VvbWV0cmljXG5cbm1vZHVsZSBGb3JfaW50MzIgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnQzMlxuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQzMlxuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludDMyXG4gIGVuZClcblxubGV0IGludDMyID0gRm9yX2ludDMyLmFsbFxubGV0IGludDMyX3VuaWZvcm0gPSBGb3JfaW50MzIudW5pZm9ybV9hbGxcbmxldCBpbnQzMl9pbmNsdXNpdmUgPSBGb3JfaW50MzIuaW5jbHVzaXZlXG5sZXQgaW50MzJfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50MzIudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQzMl9sb2dfaW5jbHVzaXZlID0gRm9yX2ludDMyLmxvZ19pbmNsdXNpdmVcbmxldCBpbnQzMl9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50MzIubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50MzJfZ2VvbWV0cmljID0gRm9yX2ludDMyLmdlb21ldHJpY1xuXG5tb2R1bGUgRm9yX2ludDYzID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50NjNcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50NjNcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQ2M1xuICBlbmQpXG5cbmxldCBpbnQ2MyA9IEZvcl9pbnQ2My5hbGxcbmxldCBpbnQ2M191bmlmb3JtID0gRm9yX2ludDYzLnVuaWZvcm1fYWxsXG5sZXQgaW50NjNfaW5jbHVzaXZlID0gRm9yX2ludDYzLmluY2x1c2l2ZVxubGV0IGludDYzX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDYzLnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjNfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQ2My5sb2dfaW5jbHVzaXZlXG5sZXQgaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDYzLmxvZ191bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDYzX2dlb21ldHJpYyA9IEZvcl9pbnQ2My5nZW9tZXRyaWNcblxubW9kdWxlIEZvcl9pbnQ2NCA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludDY0XG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludDY0XG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50NjRcbiAgZW5kKVxuXG5sZXQgaW50NjQgPSBGb3JfaW50NjQuYWxsXG5sZXQgaW50NjRfdW5pZm9ybSA9IEZvcl9pbnQ2NC51bmlmb3JtX2FsbFxubGV0IGludDY0X2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC5pbmNsdXNpdmVcbmxldCBpbnQ2NF91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDY0X2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50NjQubG9nX2luY2x1c2l2ZVxubGV0IGludDY0X2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQ2NF9nZW9tZXRyaWMgPSBGb3JfaW50NjQuZ2VvbWV0cmljXG5cbm1vZHVsZSBGb3JfbmF0aXZlaW50ID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgTmF0aXZlaW50XG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLm5hdGl2ZWludFxuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLm5hdGl2ZWludFxuICBlbmQpXG5cbmxldCBuYXRpdmVpbnQgPSBGb3JfbmF0aXZlaW50LmFsbFxubGV0IG5hdGl2ZWludF91bmlmb3JtID0gRm9yX25hdGl2ZWludC51bmlmb3JtX2FsbFxubGV0IG5hdGl2ZWludF9pbmNsdXNpdmUgPSBGb3JfbmF0aXZlaW50LmluY2x1c2l2ZVxubGV0IG5hdGl2ZWludF91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBuYXRpdmVpbnRfbG9nX2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQubG9nX2luY2x1c2l2ZVxubGV0IG5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfbmF0aXZlaW50LmxvZ191bmlmb3JtX2luY2x1c2l2ZVxubGV0IG5hdGl2ZWludF9nZW9tZXRyaWMgPSBGb3JfbmF0aXZlaW50Lmdlb21ldHJpY1xubGV0IGZsb2F0X3plcm9fZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IDAuXG5sZXQgZmxvYXRfemVyb19tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgMC5cblxubGV0IGZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUgPVxuICBGbG9hdC5vbmVfdWxwIGBEb3duIEZsb2F0Lm1pbl9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbjs7XG5cbmxldCBmbG9hdF9zdWJub3JtYWxfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0Lm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9taW5fc3Vibm9ybWFsX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBGbG9hdC5taW5fcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X3N1Ym5vcm1hbF9tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgZmxvYXRfbWF4X3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9wb3NpdGl2ZV9ub3JtYWxfdmFsdWUgPSBGbG9hdC5tYXhfZmluaXRlX3ZhbHVlXG5sZXQgZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQubWluX3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IGZsb2F0X21heF9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBmbG9hdF9tYXhfcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfaW5mX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5pbmZpbml0eVxubGV0IGZsb2F0X2luZl9tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgRmxvYXQuaW5maW5pdHlcbmxldCBmbG9hdF9uYW5fZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0Lm5hblxubGV0IGZsb2F0X21pbl9uYW5fbWFudGlzc2EgPSBJbnQ2My5zdWNjIGZsb2F0X2luZl9tYW50aXNzYVxubGV0IGZsb2F0X21heF9uYW5fbWFudGlzc2EgPSBmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhXG5sZXQgZmxvYXRfbnVtX21hbnRpc3NhX2JpdHMgPSA1MlxuXG4oKiBXZSB3ZWlnaHQgbWFudGlzc2FzIHNvIHRoYXQgXCJpbnRlZ2VyLWxpa2VcIiB2YWx1ZXMsIGFuZCB2YWx1ZXMgd2l0aCBvbmx5IGEgZmV3IGRpZ2l0c1xuICAgcGFzdCB0aGUgZGVjaW1hbCwgYXJlIHJlYXNvbmFibHkgY29tbW9uLiAqKVxubGV0IGZsb2F0X25vcm1hbF9tYW50aXNzYSA9XG4gIGxldCViaW5kIG51bV9iaXRzID0gRm9yX2ludC51bmlmb3JtX2luY2x1c2l2ZSAwIGZsb2F0X251bV9tYW50aXNzYV9iaXRzIGluXG4gIGxldCVtYXAgYml0cyA9XG4gICAgRm9yX2ludDYzLmluY2x1c2l2ZSBJbnQ2My56ZXJvIChJbnQ2My5wcmVkIChJbnQ2My5zaGlmdF9sZWZ0IEludDYzLm9uZSBudW1fYml0cykpXG4gIGluXG4gIEludDYzLnNoaWZ0X2xlZnQgYml0cyAoSW50LiggLSApIGZsb2F0X251bV9tYW50aXNzYV9iaXRzIG51bV9iaXRzKVxuOztcblxubGV0IGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2xvdyBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGxldCVtYXAgb2Zmc2V0ID0gRm9yX2ludC5sb2dfaW5jbHVzaXZlIDAgKEludC4oIC0gKSB1cHBlcl9ib3VuZCBsb3dlcl9ib3VuZCkgaW5cbiAgSW50LiggKyApIGxvd2VyX2JvdW5kIG9mZnNldFxuOztcblxubGV0IGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2hpZ2ggbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgPVxuICBsZXQlbWFwIG9mZnNldCA9IEZvcl9pbnQubG9nX2luY2x1c2l2ZSAwIChJbnQuKCAtICkgdXBwZXJfYm91bmQgbG93ZXJfYm91bmQpIGluXG4gIEludC4oIC0gKSB1cHBlcl9ib3VuZCBvZmZzZXRcbjs7XG5cbigqIFdlIHdlaWdodCBleHBvbmVudHMgc3VjaCB0aGF0IHZhbHVlcyBuZWFyIDEgYXJlIG1vcmUgbGlrZWx5LiAqKVxubGV0IGZsb2F0X2V4cG9uZW50ID1cbiAgbGV0IG1pZHBvaW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCAxLiBpblxuICB1bmlvblxuICAgIFsgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfaGlnaCBmbG9hdF9taW5fbm9ybWFsX2V4cG9uZW50IG1pZHBvaW50XG4gICAgOyBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9sb3cgbWlkcG9pbnQgZmxvYXRfbWF4X25vcm1hbF9leHBvbmVudFxuICAgIF1cbjs7XG5cbmxldCBmbG9hdF96ZXJvID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2wgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuXG4gICAgfm5lZ2F0aXZlXG4gICAgfmV4cG9uZW50OmZsb2F0X3plcm9fZXhwb25lbnRcbiAgICB+bWFudGlzc2E6ZmxvYXRfemVyb19tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X3N1Ym5vcm1hbCA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sXG4gIGFuZCBleHBvbmVudCA9IHJldHVybiBmbG9hdF9zdWJub3JtYWxfZXhwb25lbnRcbiAgYW5kIG1hbnRpc3NhID1cbiAgICBGb3JfaW50NjMubG9nX2luY2x1c2l2ZSBmbG9hdF9taW5fc3Vibm9ybWFsX21hbnRpc3NhIGZsb2F0X21heF9zdWJub3JtYWxfbWFudGlzc2FcbiAgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfbm9ybWFsID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2xcbiAgYW5kIGV4cG9uZW50ID0gZmxvYXRfZXhwb25lbnRcbiAgYW5kIG1hbnRpc3NhID0gZmxvYXRfbm9ybWFsX21hbnRpc3NhIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X2luZmluaXRlID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2wgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuXG4gICAgfm5lZ2F0aXZlXG4gICAgfmV4cG9uZW50OmZsb2F0X2luZl9leHBvbmVudFxuICAgIH5tYW50aXNzYTpmbG9hdF9pbmZfbWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9uYW4gPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbFxuICBhbmQgZXhwb25lbnQgPSByZXR1cm4gZmxvYXRfbmFuX2V4cG9uZW50XG4gIGFuZCBtYW50aXNzYSA9IEZvcl9pbnQ2My5pbmNsdXNpdmUgZmxvYXRfbWluX25hbl9tYW50aXNzYSBmbG9hdF9tYXhfbmFuX21hbnRpc3NhIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X29mX2NsYXNzIGMgPVxuICBtYXRjaCAoYyA6IEZsb2F0LkNsYXNzLnQpIHdpdGhcbiAgfCBaZXJvIC0+IGZsb2F0X3plcm9cbiAgfCBTdWJub3JtYWwgLT4gZmxvYXRfc3Vibm9ybWFsXG4gIHwgTm9ybWFsIC0+IGZsb2F0X25vcm1hbFxuICB8IEluZmluaXRlIC0+IGZsb2F0X2luZmluaXRlXG4gIHwgTmFuIC0+IGZsb2F0X25hblxuOztcblxubGV0IGZsb2F0X3dlaWdodF9vZl9jbGFzcyBjID1cbiAgbWF0Y2ggKGMgOiBGbG9hdC5DbGFzcy50KSB3aXRoXG4gIHwgWmVybyAtPiAxLlxuICB8IFN1Ym5vcm1hbCAtPiAxMC5cbiAgfCBOb3JtYWwgLT4gMTAwLlxuICB8IEluZmluaXRlIC0+IDEuXG4gIHwgTmFuIC0+IDEuXG47O1xuXG5sZXQgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyBmaWx0ZXIgPVxuICBMaXN0LmZpbHRlcl9tYXAgRmxvYXQuQ2xhc3MuYWxsIH5mOihmdW4gYyAtPlxuICAgIGlmIGZpbHRlciBjIHRoZW4gU29tZSAoZmxvYXRfd2VpZ2h0X29mX2NsYXNzIGMsIGZsb2F0X29mX2NsYXNzIGMpIGVsc2UgTm9uZSlcbiAgfD4gd2VpZ2h0ZWRfdW5pb25cbjs7XG5cbmxldCBmbG9hdF9maW5pdGUgPVxuICBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW5jdGlvblxuICAgIHwgWmVybyB8IFN1Ym5vcm1hbCB8IE5vcm1hbCAtPiB0cnVlXG4gICAgfCBJbmZpbml0ZSB8IE5hbiAtPiBmYWxzZSlcbjs7XG5cbmxldCBmbG9hdF93aXRob3V0X25hbiA9XG4gIGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1bmN0aW9uXG4gICAgfCBaZXJvIHwgU3Vibm9ybWFsIHwgTm9ybWFsIHwgSW5maW5pdGUgLT4gdHJ1ZVxuICAgIHwgTmFuIC0+IGZhbHNlKVxuOztcblxubGV0IGZsb2F0ID0gZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuIF8gLT4gdHJ1ZSlcblxubGV0IGZsb2F0X2Zpbml0ZV9ub25femVybyA9XG4gIGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1bmN0aW9uXG4gICAgfCBTdWJub3JtYWwgfCBOb3JtYWwgLT4gdHJ1ZVxuICAgIHwgWmVybyB8IEluZmluaXRlIHwgTmFuIC0+IGZhbHNlKVxuOztcblxubGV0IGZsb2F0X3N0cmljdGx5X3Bvc2l0aXZlID1cbiAgbGV0JW1hcCB0ID0gZmxvYXRfZmluaXRlX25vbl96ZXJvIGluXG4gIEZsb2F0LmFicyB0XG47O1xuXG5sZXQgZmxvYXRfc3RyaWN0bHlfbmVnYXRpdmUgPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGVfbm9uX3plcm8gaW5cbiAgfi0uKEZsb2F0LmFicyB0KVxuOztcblxubGV0IGZsb2F0X3Bvc2l0aXZlX29yX3plcm8gPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGUgaW5cbiAgRmxvYXQuYWJzIHRcbjs7XG5cbmxldCBmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvID1cbiAgbGV0JW1hcCB0ID0gZmxvYXRfZmluaXRlIGluXG4gIH4tLihGbG9hdC5hYnMgdClcbjs7XG5cbmxldCBmbG9hdF91bmlmb3JtX2V4Y2x1c2l2ZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGxldCBvcGVuIEZsb2F0Lk8gaW5cbiAgaWYgKG5vdCAoRmxvYXQuaXNfZmluaXRlIGxvd2VyX2JvdW5kKSkgfHwgbm90IChGbG9hdC5pc19maW5pdGUgdXBwZXJfYm91bmQpXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGbG9hdC51bmlmb3JtX2V4Y2x1c2l2ZTogYm91bmRzIGFyZSBub3QgZmluaXRlXCJcbiAgICAgICAgICAobG93ZXJfYm91bmQgOiBmbG9hdClcbiAgICAgICAgICAodXBwZXJfYm91bmQgOiBmbG9hdCldO1xuICBsZXQgbG93ZXJfaW5jbHVzaXZlID0gRmxvYXQub25lX3VscCBgVXAgbG93ZXJfYm91bmQgaW5cbiAgbGV0IHVwcGVyX2luY2x1c2l2ZSA9IEZsb2F0Lm9uZV91bHAgYERvd24gdXBwZXJfYm91bmQgaW5cbiAgaWYgbG93ZXJfaW5jbHVzaXZlID4gdXBwZXJfaW5jbHVzaXZlXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGbG9hdC51bmlmb3JtX2V4Y2x1c2l2ZTogcmVxdWVzdGVkIHJhbmdlIGlzIGVtcHR5XCJcbiAgICAgICAgICAobG93ZXJfYm91bmQgOiBmbG9hdClcbiAgICAgICAgICAodXBwZXJfYm91bmQgOiBmbG9hdCldO1xuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBTcGxpdHRhYmxlX3JhbmRvbS5mbG9hdCByYW5kb20gfmxvOmxvd2VyX2luY2x1c2l2ZSB+aGk6dXBwZXJfaW5jbHVzaXZlKVxuOztcblxubGV0IGZsb2F0X2luY2x1c2l2ZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGlmIEZsb2F0LmVxdWFsIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kXG4gIHRoZW4gcmV0dXJuIGxvd2VyX2JvdW5kXG4gIGVsc2UgaWYgRmxvYXQuKCA9ICkgKEZsb2F0Lm9uZV91bHAgYFVwIGxvd2VyX2JvdW5kKSB1cHBlcl9ib3VuZFxuICB0aGVuIHVuaW9uIFsgcmV0dXJuIGxvd2VyX2JvdW5kOyByZXR1cm4gdXBwZXJfYm91bmQgXVxuICBlbHNlXG4gICAgd2VpZ2h0ZWRfdW5pb25cbiAgICAgIFsgMC4wNSwgcmV0dXJuIGxvd2VyX2JvdW5kXG4gICAgICA7IDAuMDUsIHJldHVybiB1cHBlcl9ib3VuZFxuICAgICAgOyAwLjksIGZsb2F0X3VuaWZvcm1fZXhjbHVzaXZlIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kXG4gICAgICBdXG47O1xuXG5sZXQgc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJfZ2VuIH5sZW5ndGggPVxuICBsaXN0X3dpdGhfbGVuZ3RoIGNoYXJfZ2VuIH5sZW5ndGggfD4gbWFwIH5mOlN0cmluZy5vZl9jaGFyX2xpc3Rcbjs7XG5cbmxldCBzdHJpbmdfb2YgY2hhcl9nZW4gPVxuICBiaW5kIHNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50IH5mOihmdW4gbGVuZ3RoIC0+XG4gICAgc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJfZ2VuIH5sZW5ndGgpXG47O1xuXG5sZXQgc3RyaW5nX25vbl9lbXB0eV9vZiBjaGFyX2dlbiA9XG4gIGJpbmQgc21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50IH5mOihmdW4gbGVuZ3RoIC0+XG4gICAgc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJfZ2VuIH5sZW5ndGgpXG47O1xuXG5sZXQgc3RyaW5nID0gc3RyaW5nX29mIGNoYXJcbmxldCBzdHJpbmdfbm9uX2VtcHR5ID0gc3RyaW5nX25vbl9lbXB0eV9vZiBjaGFyXG5sZXQgc3RyaW5nX3dpdGhfbGVuZ3RoIH5sZW5ndGggPSBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhciB+bGVuZ3RoXG5cbm1vZHVsZSBFZGl0X3N0cmluZyA9IHN0cnVjdFxuICBsZXQgZWRpdF9pbnNlcnQgc3RyaW5nID1cbiAgICBsZXQlYmluZCBwb3MgPSBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgMCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcpIGluXG4gICAgbGV0JWJpbmQgbGVuID0gaW50X2dlb21ldHJpYyAxIH5wOjAuNSBpblxuICAgIGxldCViaW5kIHN0ciA9IHN0cmluZ193aXRoX2xlbmd0aCB+bGVuZ3RoOmxlbiBpblxuICAgIFsgU3RyaW5nLnByZWZpeCBzdHJpbmcgcG9zOyBzdHI7IFN0cmluZy5kcm9wX3ByZWZpeCBzdHJpbmcgcG9zIF1cbiAgICB8PiBTdHJpbmcuY29uY2F0XG4gICAgfD4gcmV0dXJuXG4gIDs7XG5cbiAgbGV0IGVkaXRfcmVtb3ZlIHN0cmluZyA9XG4gICAgbGV0JWJpbmQgbGVuID0gaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSAxIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBsZXQlYmluZCBwb3MgPSBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgMCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgLSBsZW4pIGluXG4gICAgWyBTdHJpbmcucHJlZml4IHN0cmluZyBwb3M7IFN0cmluZy5kcm9wX3ByZWZpeCBzdHJpbmcgKHBvcyArIGxlbikgXVxuICAgIHw+IFN0cmluZy5jb25jYXRcbiAgICB8PiByZXR1cm5cbiAgOztcblxuICBsZXQgZWRpdF9yZXBsYWNlIHN0cmluZyA9XG4gICAgbGV0JWJpbmQgbGVuID0gaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSAxIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBsZXQlYmluZCBwb3MgPSBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgMCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgLSBsZW4pIGluXG4gICAgbGV0JWJpbmQgc3RyID0gc3RyaW5nX3dpdGhfbGVuZ3RoIH5sZW5ndGg6bGVuIGluXG4gICAgWyBTdHJpbmcucHJlZml4IHN0cmluZyBwb3M7IHN0cjsgU3RyaW5nLmRyb3BfcHJlZml4IHN0cmluZyAocG9zICsgbGVuKSBdXG4gICAgfD4gU3RyaW5nLmNvbmNhdFxuICAgIHw+IHJldHVyblxuICA7O1xuXG4gIGxldCBlZGl0X2RvdWJsZSBzdHJpbmcgPVxuICAgIGxldCViaW5kIGxlbiA9IGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgMSAoU3RyaW5nLmxlbmd0aCBzdHJpbmcpIGluXG4gICAgbGV0JWJpbmQgcG9zID0gaW50X3VuaWZvcm1faW5jbHVzaXZlIDAgKFN0cmluZy5sZW5ndGggc3RyaW5nIC0gbGVuKSBpblxuICAgIFsgU3RyaW5nLnByZWZpeCBzdHJpbmcgKHBvcyArIGxlbik7IFN0cmluZy5kcm9wX3ByZWZpeCBzdHJpbmcgcG9zIF1cbiAgICB8PiBTdHJpbmcuY29uY2F0XG4gICAgfD4gcmV0dXJuXG4gIDs7XG5cbiAgbGV0IGVkaXRfbm9uZW1wdHkgc3RyaW5nID1cbiAgICBbIGVkaXRfaW5zZXJ0IHN0cmluZzsgZWRpdF9yZW1vdmUgc3RyaW5nOyBlZGl0X3JlcGxhY2Ugc3RyaW5nOyBlZGl0X2RvdWJsZSBzdHJpbmcgXVxuICAgIHw+IHVuaW9uXG4gIDs7XG5cbiAgbGV0IHJlYyBlZGl0IHN0cmluZyBuX3RpbWVzID1cbiAgICBpZiBuX3RpbWVzIDw9IDBcbiAgICB0aGVuIHJldHVybiBzdHJpbmdcbiAgICBlbHNlIChcbiAgICAgIGxldCViaW5kIHN0cmluZyA9XG4gICAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBzdHJpbmcgdGhlbiBlZGl0X2luc2VydCBzdHJpbmcgZWxzZSBlZGl0X25vbmVtcHR5IHN0cmluZ1xuICAgICAgaW5cbiAgICAgIGVkaXQgc3RyaW5nIChuX3RpbWVzIC0gMSkpXG4gIDs7XG5lbmRcblxubGV0IHN0cmluZ19saWtlIHN0cmluZyA9XG4gIGxldCViaW5kIG5fdGltZXMgPSBpbnRfZ2VvbWV0cmljIDAgfnA6MC41IGluXG4gIEVkaXRfc3RyaW5nLmVkaXQgc3RyaW5nIG5fdGltZXNcbjs7XG5cbmxldCBieXRlcyA9IG1hcCBzdHJpbmcgfmY6Qnl0ZXMub2Zfc3RyaW5nXG5cbmxldCBzZXhwX29mIGF0b20gPVxuICBmaXhlZF9wb2ludCAoZnVuIHNlbGYgLT5cbiAgICBsZXQlYmluZCBzaXplID0gc2l6ZSBpblxuICAgICgqIGNob29zZSBhIG51bWJlciB3ZWlnaHRlZCBsb3cgc28gd2UgaGF2ZSBhIGRlY3JlYXNpbmcsIGJ1dCBub3QgdmFuaXNoaW5nLCBjaGFuY2VcbiAgICAgICB0byBnZW5lcmF0ZSBhdG9tcyBhcyBzaXplIGdyb3dzICopXG4gICAgbWF0Y2glYmluZCBGb3JfaW50LmxvZ191bmlmb3JtX2luY2x1c2l2ZSAwIChzaXplICsgMSkgd2l0aFxuICAgICgqIGdlbmVyYXRlIGFuIGF0b20gdXNpbmcgdGhlIGdpdmVuIHNpemUgKilcbiAgICB8IDAgLT5cbiAgICAgIGxldCVtYXAgYXRvbSA9IGF0b20gaW5cbiAgICAgIFNleHAuQXRvbSBhdG9tXG4gICAgKCogcmVseWluZyBvbiBbTGlzdC5nZW5dIHRvIGRpc3RyaWJ1dGUgW3NpemVdIG92ZXIgc3ViLXNleHBzICopXG4gICAgfCBfIC0+XG4gICAgICBsZXQlbWFwIGxpc3QgPSBsaXN0IHNlbGYgaW5cbiAgICAgIFNleHAuTGlzdCBsaXN0KVxuOztcblxubGV0IHNleHAgPSBzZXhwX29mIHN0cmluZ1xuXG5sZXQgbWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfZ2VuIGRhdGFfZ2VuID1cbiAgbGV0JWJpbmQga2V5cyA9IGxpc3Qga2V5X2dlbiBpblxuICBsZXQga2V5cyA9IExpc3QuZGVkdXBfYW5kX3NvcnQga2V5cyB+Y29tcGFyZTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICBsZXQlYmluZCBkYXRhID0gbGlzdF93aXRoX2xlbmd0aCBkYXRhX2dlbiB+bGVuZ3RoOihMaXN0Lmxlbmd0aCBrZXlzKSBpblxuICByZXR1cm4gKE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIChMaXN0LnppcF9leG4ga2V5cyBkYXRhKSlcbjs7XG5cbmxldCBzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW4gPVxuICBtYXAgKGxpc3QgZWx0X2dlbikgfmY6KFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUub2ZfbGlzdCB+Y29tcGFyYXRvcilcbjs7XG5cbmxldCBjb21wYXJhdG9yX29mX21cbiAgICAgICh0eXBlIGEgYylcbiAgICAgIChtb2R1bGUgTSA6IENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IGEgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gYylcbiAgPVxuICBNLmNvbXBhcmF0b3Jcbjs7XG5cbmxldCBtYXBfdF9tIG0ga2V5X2dlbiBkYXRhX2dlbiA9XG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvcl9vZl9tIG0gaW5cbiAgbWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfZ2VuIGRhdGFfZ2VuXG4gIHw+IG1hcCB+ZjooTWFwLlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbjs7XG5cbmxldCBzZXRfdF9tIG0gZWx0X2dlbiA9XG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvcl9vZl9tIG0gaW5cbiAgc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfZ2VuXG4gIHw+IG1hcCB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbjs7XG5cbmxldCBiaWdhcnJheTEgdCBraW5kIGxheW91dCA9XG4gIGxldCVtYXAgZWx0cyA9IGxpc3QgdCBpblxuICBsZXQgZWx0cyA9IEFycmF5Lm9mX2xpc3QgZWx0cyBpblxuICBsZXQgZGltID0gQXJyYXkubGVuZ3RoIGVsdHMgaW5cbiAgbGV0IG9mZnNldCA9IEJpZ2FycmF5X2hlbHBlcnMuTGF5b3V0Lm9mZnNldCBsYXlvdXQgaW5cbiAgQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaW5pdCBraW5kIGxheW91dCBkaW0gfmY6KGZ1biBpIC0+IGVsdHMuKGkgLSBvZmZzZXQpKVxuOztcblxubGV0IGJpZ3N0cmluZyA9IGJpZ2FycmF5MSBjaGFyIENoYXIgQ19sYXlvdXRcbmxldCBmbG9hdDMyX3ZlYyA9IGJpZ2FycmF5MSBmbG9hdCBGbG9hdDMyIEZvcnRyYW5fbGF5b3V0XG5sZXQgZmxvYXQ2NF92ZWMgPSBiaWdhcnJheTEgZmxvYXQgRmxvYXQ2NCBGb3J0cmFuX2xheW91dFxuXG5sZXQgYmlnYXJyYXkyX2RpbSA9XG4gIG1hdGNoJWJpbmQgc2l6ZSB3aXRoXG4gIHwgMCAtPiByZXR1cm4gKDAsIDApXG4gIHwgbWF4X3RvdGFsX3NpemUgLT5cbiAgICBsZXQlYmluZCBhID1cbiAgICAgICgqIGNob29zZSBhIGRpbWVuc2lvbiB1cCB0byBbbWF4X3RvdGFsX3NpemVdLCB3ZWlnaHRlZCBsb3cgdG8gZ2l2ZSB0aGUgb3RoZXJcbiAgICAgICAgIGRpbWVuc2lvbiBhIGdvb2QgY2hhbmNlIG9mIGJlaW5nIGNvbXBhcmF0aXZlbHkgaGlnaCAqKVxuICAgICAgaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSAxIG1heF90b3RhbF9zaXplXG4gICAgaW5cbiAgICBsZXQlYmluZCBiID1cbiAgICAgICgqIGNob29zZSBhIGRpbWVuc2lvbiB1cCB0byBbbWF4X3RvdGFsX3NpemUgLyBhXSwgd2VpZ2h0ZWQgaGlnaCB0byByZWFjaCBjbG9zZSB0b1xuICAgICAgICAgW21heF90b3RhbF9zaXplXSBtb3N0IG9mIHRoZSB0aW1lICopXG4gICAgICBsZXQgbWF4X2IgPSBtYXhfdG90YWxfc2l6ZSAvIGEgaW5cbiAgICAgIGxldCVtYXAgYl93ZWlnaHRlZF9sb3cgPSBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDAgbWF4X2IgaW5cbiAgICAgIG1heF9iIC0gYl93ZWlnaHRlZF9sb3dcbiAgICBpblxuICAgICgqIGF2b2lkIGFueSBza2V3IG9mIGEgdnMgYiBieSByYW5kb21seSBzd2FwcGluZyAqKVxuICAgIGlmJW1hcCBib29sIHRoZW4gYSwgYiBlbHNlIGIsIGFcbjs7XG5cbmxldCBiaWdhcnJheTIgdCBraW5kIGxheW91dCA9XG4gIGxldCViaW5kIGRpbTEsIGRpbTIgPSBiaWdhcnJheTJfZGltIGluXG4gIGxldCVtYXAgZWx0cyA9IGxpc3Rfd2l0aF9sZW5ndGggfmxlbmd0aDpkaW0xIChsaXN0X3dpdGhfbGVuZ3RoIH5sZW5ndGg6ZGltMiB0KSBpblxuICBsZXQgZWx0cyA9IEFycmF5Lm9mX2xpc3RfbWFwIH5mOkFycmF5Lm9mX2xpc3QgZWx0cyBpblxuICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICBCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5pbml0IGtpbmQgbGF5b3V0IGRpbTEgZGltMiB+ZjooZnVuIGkgaiAtPlxuICAgIGVsdHMuKGkgLSBvZmZzZXQpLihqIC0gb2Zmc2V0KSlcbjs7XG5cbmxldCBmbG9hdDMyX21hdCA9IGJpZ2FycmF5MiBmbG9hdCBGbG9hdDMyIEZvcnRyYW5fbGF5b3V0XG5sZXQgZmxvYXQ2NF9tYXQgPSBiaWdhcnJheTIgZmxvYXQgRmxvYXQ2NCBGb3J0cmFuX2xheW91dFxuXG5tb2R1bGUgRGVidWcgPSBzdHJ1Y3RcbiAgbGV0IGNvdmVyYWdlXG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIENtcCA6IENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICBzYW1wbGVcbiAgICA9XG4gICAgU2VxdWVuY2UuZm9sZFxuICAgICAgc2FtcGxlXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IChtb2R1bGUgQ21wKSlcbiAgICAgIH5mOihmdW4gY291bnRzIHZhbHVlIC0+XG4gICAgICAgIE1hcC51cGRhdGUgY291bnRzIHZhbHVlIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiAxXG4gICAgICAgICAgfCBTb21lIHByZXYgLT4gcHJldiArIDEpKVxuICA7O1xuXG4gIGxldCBtb25pdG9yIHQgfmYgPVxuICAgIG1hcCB0IH5mOihmdW4gdmFsdWUgLT5cbiAgICAgIGYgdmFsdWU7XG4gICAgICB2YWx1ZSlcbiAgOztcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogNjQtYml0IGludGVnZXJzLlxuXG4gICBUaGlzIG1vZHVsZSBwcm92aWRlcyBvcGVyYXRpb25zIG9uIHRoZSB0eXBlIFtpbnQ2NF0gb2ZcbiAgIHNpZ25lZCA2NC1iaXQgaW50ZWdlcnMuICBVbmxpa2UgdGhlIGJ1aWx0LWluIFtpbnRdIHR5cGUsXG4gICB0aGUgdHlwZSBbaW50NjRdIGlzIGd1YXJhbnRlZWQgdG8gYmUgZXhhY3RseSA2NC1iaXQgd2lkZSBvbiBhbGxcbiAgIHBsYXRmb3Jtcy4gIEFsbCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3ZlciBbaW50NjRdIGFyZSB0YWtlblxuICAgbW9kdWxvIDJ7XjY0fVxuXG4gICBQZXJmb3JtYW5jZSBub3RpY2U6IHZhbHVlcyBvZiB0eXBlIFtpbnQ2NF0gb2NjdXB5IG1vcmUgbWVtb3J5XG4gICBzcGFjZSB0aGFuIHZhbHVlcyBvZiB0eXBlIFtpbnRdLCBhbmQgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9uXG4gICBbaW50NjRdIGFyZSBnZW5lcmFsbHkgc2xvd2VyIHRoYW4gdGhvc2Ugb24gW2ludF0uICBVc2UgW2ludDY0XVxuICAgb25seSB3aGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1aXJlcyBleGFjdCA2NC1iaXQgYXJpdGhtZXRpYy5cblxuICAgIExpdGVyYWxzIGZvciA2NC1iaXQgaW50ZWdlcnMgYXJlIHN1ZmZpeGVkIGJ5IEw6XG4gICAge1tcbiAgICAgIGxldCB6ZXJvOiBpbnQ2NCA9IDBMXG4gICAgICBsZXQgb25lOiBpbnQ2NCA9IDFMXG4gICAgICBsZXQgbV9vbmU6IGludDY0ID0gLTFMXG4gICAgXX1cbiopXG5cbnZhbCB6ZXJvIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMC4gKilcblxudmFsIG9uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIDEuICopXG5cbnZhbCBtaW51c19vbmUgOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAtMS4gKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuKCoqIFVuYXJ5IG5lZ2F0aW9uLiAqKVxuXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG4oKiogQWRkaXRpb24uICopXG5cbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbigqKiBTdWJ0cmFjdGlvbi4gKilcblxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuKCoqIE11bHRpcGxpY2F0aW9uLiAqKVxuXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG4oKiogSW50ZWdlciBkaXZpc2lvbi5cbiAgIEByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGlmIHRoZSBzZWNvbmRcbiAgIGFyZ3VtZW50IGlzIHplcm8uICBUaGlzIGRpdmlzaW9uIHJvdW5kcyB0aGUgcmVhbCBxdW90aWVudCBvZlxuICAgaXRzIGFyZ3VtZW50cyB0b3dhcmRzIHplcm8sIGFzIHNwZWNpZmllZCBmb3IgeyFTdGRsaWIuKC8pfS4gKilcblxudmFsIHVuc2lnbmVkX2RpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IWRpdn0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOCAqKVxuXG5leHRlcm5hbCByZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X21vZFwiXG4oKiogSW50ZWdlciByZW1haW5kZXIuICBJZiBbeV0gaXMgbm90IHplcm8sIHRoZSByZXN1bHRcbiAgIG9mIFtJbnQ2NC5yZW0geCB5XSBzYXRpc2ZpZXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0eTpcbiAgIFt4ID0gSW50NjQuYWRkIChJbnQ2NC5tdWwgKEludDY0LmRpdiB4IHkpIHkpIChJbnQ2NC5yZW0geCB5KV0uXG4gICBJZiBbeSA9IDBdLCBbSW50NjQucmVtIHggeV0gcmFpc2VzIFtEaXZpc2lvbl9ieV96ZXJvXS4gKilcblxudmFsIHVuc2lnbmVkX3JlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IXJlbX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOCAqKVxuXG52YWwgc3VjYyA6IGludDY0IC0+IGludDY0XG4oKiogU3VjY2Vzc29yLiAgW0ludDY0LnN1Y2MgeF0gaXMgW0ludDY0LmFkZCB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBwcmVkIDogaW50NjQgLT4gaW50NjRcbigqKiBQcmVkZWNlc3Nvci4gIFtJbnQ2NC5wcmVkIHhdIGlzIFtJbnQ2NC5zdWIgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgYWJzIDogaW50NjQgLT4gaW50NjRcbigqKiBbYWJzIHhdIGlzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBbeF0uIE9uIFttaW5faW50XSB0aGlzXG4gICBpcyBbbWluX2ludF0gaXRzZWxmIGFuZCB0aHVzIHJlbWFpbnMgbmVnYXRpdmUuICopXG5cbnZhbCBtYXhfaW50IDogaW50NjRcbigqKiBUaGUgZ3JlYXRlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgMnteNjN9IC0gMS4gKilcblxudmFsIG1pbl9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAtMnteNjN9LiAqKVxuXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGFuZC4gKilcblxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgb3IuICopXG5cbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgZXhjbHVzaXZlIG9yLiAqKVxuXG52YWwgbG9nbm90IDogaW50NjQgLT4gaW50NjRcbigqKiBCaXR3aXNlIGxvZ2ljYWwgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuKCoqIFtJbnQ2NC5zaGlmdF9sZWZ0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgbGVmdCBieSBbeV0gYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYW4gYXJpdGhtZXRpYyBzaGlmdDogdGhlIHNpZ24gYml0IG9mIFt4XSBpcyByZXBsaWNhdGVkXG4gICBhbmQgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGEgbG9naWNhbCBzaGlmdDogemVyb2VzIGFyZSBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzXG4gICByZWdhcmRsZXNzIG9mIHRoZSBzaWduIG9mIFt4XS5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gaW50ZWdlciAodHlwZSBbaW50XSkgdG8gYSA2NC1iaXQgaW50ZWdlclxuICAgICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFuXG4gICBpbnRlZ2VyICh0eXBlIFtpbnRdKS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjYzfSwgaS5lLiB0aGUgaGlnaC1vcmRlciBiaXQgaXMgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgT24gMzItYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzF9LCBpLmUuIHRoZSB0b3AgMzMgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAqKVxuXG52YWwgdW5zaWduZWRfdG9faW50IDogaW50NjQgLT4gaW50IG9wdGlvblxuKCoqIFNhbWUgYXMgeyF0b19pbnR9LCBidXQgaW50ZXJwcmV0cyB0aGUgYXJndW1lbnQgYXMgYW4ge2UgdW5zaWduZWR9IGludGVnZXIuXG4gICAgUmV0dXJucyBbTm9uZV0gaWYgdGhlIHVuc2lnbmVkIHZhbHVlIG9mIHRoZSBhcmd1bWVudCBjYW5ub3QgZml0IGludG8gYW5cbiAgICBbaW50XS5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gZmxvYXRpbmctcG9pbnQgbnVtYmVyIHRvIGEgNjQtYml0IGludGVnZXIsXG4gICBkaXNjYXJkaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgKHRydW5jYXRlIHRvd2FyZHMgMCkuXG4gICBJZiB0aGUgdHJ1bmNhdGVkIGZsb2F0aW5nLXBvaW50IG51bWJlciBpcyBvdXRzaWRlIHRoZSByYW5nZVxuICAgXFxbeyFJbnQ2NC5taW5faW50fSwgeyFJbnQ2NC5tYXhfaW50fVxcXSwgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYW5kXG4gICBhbiB1bnNwZWNpZmllZCwgcGxhdGZvcm0tZGVwZW5kZW50IGludGVnZXIgaXMgcmV0dXJuZWQuICopXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgdG8gYSBmbG9hdGluZy1wb2ludCBudW1iZXIuICopXG5cblxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKS4gVGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzJ9LCBpLmUuIHRoZSB0b3AgMzIgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgKilcblxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBuYXRpdmUgaW50ZWdlciAodHlwZSBbbmF0aXZlaW50XSlcbiAgIHRvIGEgNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYVxuICAgbmF0aXZlIGludGVnZXIuICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0uICBPbiA2NC1iaXQgcGxhdGZvcm1zLFxuICAgdGhlIGNvbnZlcnNpb24gaXMgZXhhY3QuICopXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIHN0cmluZyB0byBhIDY0LWJpdCBpbnRlZ2VyLlxuICAgVGhlIHN0cmluZyBpcyByZWFkIGluIGRlY2ltYWwgKGJ5IGRlZmF1bHQsIG9yIGlmIHRoZSBzdHJpbmdcbiAgIGJlZ2lucyB3aXRoIFswdV0pIG9yIGluIGhleGFkZWNpbWFsLCBvY3RhbCBvciBiaW5hcnkgaWYgdGhlXG4gICBzdHJpbmcgYmVnaW5zIHdpdGggWzB4XSwgWzBvXSBvciBbMGJdIHJlc3BlY3RpdmVseS5cblxuICAgVGhlIFswdV0gcHJlZml4IHJlYWRzIHRoZSBpbnB1dCBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgW1swLCAyKkludDY0Lm1heF9pbnQrMV1dLiAgSWYgdGhlIGlucHV0IGV4Y2VlZHMgeyFJbnQ2NC5tYXhfaW50fVxuICAgaXQgaXMgY29udmVydGVkIHRvIHRoZSBzaWduZWQgaW50ZWdlclxuICAgW0ludDY0Lm1pbl9pbnQgKyBpbnB1dCAtIEludDY0Lm1heF9pbnQgLSAxXS5cblxuICAgVGhlIFtfXSAodW5kZXJzY29yZSkgY2hhcmFjdGVyIGNhbiBhcHBlYXIgYW55d2hlcmUgaW4gdGhlIHN0cmluZ1xuICAgYW5kIGlzIGlnbm9yZWQuXG4gICBAcmFpc2UgRmFpbHVyZSBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGlzIG5vdFxuICAgYSB2YWxpZCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLCBvciBpZiB0aGUgaW50ZWdlciByZXByZXNlbnRlZFxuICAgZXhjZWVkcyB0aGUgcmFuZ2Ugb2YgaW50ZWdlcnMgcmVwcmVzZW50YWJsZSBpbiB0eXBlIFtpbnQ2NF0uICopXG5cbnZhbCBvZl9zdHJpbmdfb3B0OiBzdHJpbmcgLT4gaW50NjQgb3B0aW9uXG4oKiogU2FtZSBhcyBbb2Zfc3RyaW5nXSwgYnV0IHJldHVybiBbTm9uZV0gaW5zdGVhZCBvZiByYWlzaW5nLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCB0b19zdHJpbmcgOiBpbnQ2NCAtPiBzdHJpbmdcbigqKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpdHMgYXJndW1lbnQsIGluIGRlY2ltYWwuICopXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZmxvYXQgYWNjb3JkaW5nXG4gICB0byB0aGUgSUVFRSA3NTQgZmxvYXRpbmctcG9pbnQgJ2RvdWJsZSBmb3JtYXQnIGJpdCBsYXlvdXQuXG4gICBCaXQgNjMgb2YgdGhlIHJlc3VsdCByZXByZXNlbnRzIHRoZSBzaWduIG9mIHRoZSBmbG9hdDtcbiAgIGJpdHMgNjIgdG8gNTIgcmVwcmVzZW50IHRoZSAoYmlhc2VkKSBleHBvbmVudDsgYml0cyA1MSB0byAwXG4gICByZXByZXNlbnQgdGhlIG1hbnRpc3NhLiAqKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIFJldHVybiB0aGUgZmxvYXRpbmctcG9pbnQgbnVtYmVyIHdob3NlIGludGVybmFsIHJlcHJlc2VudGF0aW9uLFxuICAgYWNjb3JkaW5nIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dCxcbiAgIGlzIHRoZSBnaXZlbiBbaW50NjRdLiAqKVxuXG50eXBlIHQgPSBpbnQ2NFxuKCoqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiA2NC1iaXQgaW50ZWdlcnMuICopXG5cbnZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogVGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRlZ2Vycywgd2l0aCB0aGUgc2FtZSBzcGVjaWZpY2F0aW9uIGFzXG4gICAgeyFTdGRsaWIuY29tcGFyZX0uICBBbG9uZyB3aXRoIHRoZSB0eXBlIFt0XSwgdGhpcyBmdW5jdGlvbiBbY29tcGFyZV1cbiAgICBhbGxvd3MgdGhlIG1vZHVsZSBbSW50NjRdIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudCB0byB0aGUgZnVuY3RvcnNcbiAgICB7IVNldC5NYWtlfSBhbmQgeyFNYXAuTWFrZX0uICopXG5cbnZhbCB1bnNpZ25lZF9jb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogU2FtZSBhcyB7IWNvbXBhcmV9LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYXJlIGludGVycHJldGVkIGFzIHtlIHVuc2lnbmVkfVxuICAgIDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbnZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbigqKiBUaGUgZXF1YWwgZnVuY3Rpb24gZm9yIGludDY0cy5cbiAgICBAc2luY2UgNC4wMyAqKVxuXG52YWwgbWluOiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgc21hbGxlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIG1heDogdCAtPiB0IC0+IHRcbigqKiBSZXR1cm4gdGhlIGdyZWF0ZXIgb2YgdGhlIHR3byBhcmd1bWVudHMuXG4gICAgQHNpbmNlIDQuMTNcbiAqKVxuXG52YWwgc2VlZGVkX2hhc2ggOiBpbnQgLT4gdCAtPiBpbnRcbigqKiBBIHNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciA2NC1iaXQgaW50cywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4xICopXG5cbnZhbCBoYXNoIDogdCAtPiBpbnRcbigqKiBBbiB1bnNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciA2NC1iaXQgaW50cywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0YmwuaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudFxuICAgIHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlfS5cblxuICAgIEBzaW5jZSA1LjEgKilcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGF0b21pYyA6IF8gdFxuICB2YWwgY3JlYXRlIDogKCdhIC0+ICdhIFNlcXVlbmNlLnQpIC0+ICdhIHRcbiAgdmFsIHNocmluayA6ICdhIHQgLT4gJ2EgLT4gJ2EgU2VxdWVuY2UudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIC0+ICdhIFNlcXVlbmNlLnRcblxuICBsZXQgYXRvbWljIF8gPSBTZXF1ZW5jZS5lbXB0eVxuICBsZXQgY3JlYXRlID0gRm4uaWRcbiAgbGV0IHNocmluayA9IEZuLmlkXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBtYXAgdCB+ZiB+Zl9pbnZlcnNlID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5tYXAgfmYgKHNocmluayB0IChmX2ludmVyc2UgeCkpKVxubGV0IGZpbHRlciB0IH5mID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5maWx0ZXIgfmYgKHNocmluayB0IHgpKVxuXG5sZXQgZmlsdGVyX21hcCB0IH5mIH5mX2ludmVyc2UgPVxuICBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLmZpbHRlcl9tYXAgfmYgKHNocmluayB0IChmX2ludmVyc2UgeCkpKVxuOztcblxubGV0IG9mX2xhenkgbGF6eV90ID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5vZl9sYXp5IChsYXp5IChzaHJpbmsgKGZvcmNlIGxhenlfdCkgeCkpKVxuXG5sZXQgZml4ZWRfcG9pbnQgb2Zfc2hyaW5rZXIgPVxuICBsZXQgcmVjIGxhenlfdCA9IGxhenkgKG9mX3Nocmlua2VyIChvZl9sYXp5IGxhenlfdCkpIGluXG4gIG9mX2xhenkgbGF6eV90XG47O1xuXG5sZXQgYm90aCBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIChmc3QsIHNuZCkgLT5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgWyBTZXF1ZW5jZS5tYXAgKHNocmluayBmc3RfdCBmc3QpIH5mOihmdW4gZnN0IC0+IGZzdCwgc25kKVxuICAgICAgOyBTZXF1ZW5jZS5tYXAgKHNocmluayBzbmRfdCBzbmQpIH5mOihmdW4gc25kIC0+IGZzdCwgc25kKVxuICAgICAgXSlcbjs7XG5cbmxldCB1bml0ID0gYXRvbWljXG5sZXQgYm9vbCA9IGF0b21pY1xubGV0IGNoYXIgPSBhdG9taWNcbmxldCBpbnQgPSBhdG9taWNcbmxldCBpbnQzMiA9IGF0b21pY1xubGV0IGludDYzID0gYXRvbWljXG5sZXQgaW50NjQgPSBhdG9taWNcbmxldCBuYXRpdmVpbnQgPSBhdG9taWNcbmxldCBmbG9hdCA9IGF0b21pY1xuXG5sZXQgYmlnYXJyYXkxIHNyYyA9XG4gIGxldCBkaW0gPSBCaWdhcnJheS5BcnJheTEuZGltIHNyYyBpblxuICBtYXRjaCBkaW0gd2l0aFxuICB8IDAgLT4gU2VxdWVuY2UuZW1wdHlcbiAgfCBfIC0+XG4gICAgbGV0IGtpbmQgPSBCaWdhcnJheS5BcnJheTEua2luZCBzcmMgaW5cbiAgICBsZXQgbGF5b3V0ID0gQmlnYXJyYXkuQXJyYXkxLmxheW91dCBzcmMgaW5cbiAgICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICAgIFNlcXVlbmNlLmluaXQgZGltIH5mOihmdW4gdG9fc2tpcCAtPlxuICAgICAgbGV0IHRvX3NraXAgPSB0b19za2lwICsgb2Zmc2V0IGluXG4gICAgICBCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5pbml0IGtpbmQgbGF5b3V0IChkaW0gLSAxKSB+ZjooZnVuIGkgLT5cbiAgICAgICAgc3JjLntpZiBpIDwgdG9fc2tpcCB0aGVuIGkgZWxzZSBpICsgMX0pKVxuOztcblxubGV0IGJpZ3N0cmluZyA9IGNyZWF0ZSBiaWdhcnJheTFcbmxldCBmbG9hdDMyX3ZlYyA9IGNyZWF0ZSBiaWdhcnJheTFcbmxldCBmbG9hdDY0X3ZlYyA9IGNyZWF0ZSBiaWdhcnJheTFcblxubGV0IGJpZ2FycmF5MiA9XG4gIGxldCBtb2R1bGUgRGltcyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGRpbTEgOiBpbnRcbiAgICAgIDsgZGltMiA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgIGxldCBjcmVhdGUgYSA9IEJpZ2FycmF5LkFycmF5Mi57IGRpbTEgPSBkaW0xIGE7IGRpbTIgPSBkaW0yIGEgfVxuICBlbmRcbiAgaW5cbiAgbGV0IHNocmluayBmaWVsZCBzcmMgPVxuICAgIGxldCBkaW1zID0gRGltcy5jcmVhdGUgc3JjIGluXG4gICAgbWF0Y2ggRmllbGQuZ2V0IGZpZWxkIGRpbXMgd2l0aFxuICAgIHwgMCAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGtpbmQgPSBCaWdhcnJheS5BcnJheTIua2luZCBzcmMgaW5cbiAgICAgIGxldCBsYXlvdXQgPSBCaWdhcnJheS5BcnJheTIubGF5b3V0IHNyYyBpblxuICAgICAgbGV0IG9mZnNldCA9IEJpZ2FycmF5X2hlbHBlcnMuTGF5b3V0Lm9mZnNldCBsYXlvdXQgaW5cbiAgICAgIGxldCAoeyBkaW0xOyBkaW0yIH0gOiBEaW1zLnQpID0gRmllbGQubWFwIGZpZWxkIGRpbXMgfmY6SW50LnByZWQgaW5cbiAgICAgIFNlcXVlbmNlLmluaXQgKEZpZWxkLmdldCBmaWVsZCBkaW1zKSB+ZjooZnVuIHRvX3NraXAgLT5cbiAgICAgICAgbGV0IHRvX3NraXAgPSB0b19za2lwICsgb2Zmc2V0IGluXG4gICAgICAgIGxldCBza2lwIGkgPSBpZiBpIDwgdG9fc2tpcCB0aGVuIGkgZWxzZSBpICsgMSBpblxuICAgICAgICBCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5pbml0IGtpbmQgbGF5b3V0IGRpbTEgZGltMiB+ZjooZnVuIGRpbTEgZGltMiAtPlxuICAgICAgICAgIGxldCAoeyBkaW0xOyBkaW0yIH0gOiBEaW1zLnQpID0gRmllbGQubWFwIGZpZWxkIHsgZGltMTsgZGltMiB9IH5mOnNraXAgaW5cbiAgICAgICAgICBzcmMue2RpbTEsIGRpbTJ9KSlcbiAgaW5cbiAgZnVuIHNyYyAtPlxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgc2hyaW5rIERpbXMuRmllbGRzLmRpbTEgc3JjOyBzaHJpbmsgRGltcy5GaWVsZHMuZGltMiBzcmMgXVxuOztcblxubGV0IGZsb2F0MzJfbWF0ID0gY3JlYXRlIGJpZ2FycmF5MlxubGV0IGZsb2F0NjRfbWF0ID0gY3JlYXRlIGJpZ2FycmF5MlxuXG5sZXQgb3B0aW9uIHZhbHVlX3QgPVxuICBjcmVhdGUgKGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICBTZXF1ZW5jZS5hcHBlbmRcbiAgICAgICAgKFNlcXVlbmNlLnNpbmdsZXRvbiBOb25lKVxuICAgICAgICAoU2VxdWVuY2UubWFwIH5mOk9wdGlvbi5yZXR1cm4gKHNocmluayB2YWx1ZV90IHZhbHVlKSkpXG47O1xuXG5sZXQgbGlzdCBlbHRfdCA9XG4gIGZpeGVkX3BvaW50IChmdW4gbGlzdF90IC0+XG4gICAgY3JlYXRlIChmdW5jdGlvblxuICAgICAgfCBbXSAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiB0YWlsXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKHNocmluayBlbHRfdCBoZWFkKSB+ZjooZnVuIGhlYWQgLT4gaGVhZCA6OiB0YWlsKVxuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChzaHJpbmsgbGlzdF90IHRhaWwpIH5mOihmdW4gdGFpbCAtPiBoZWFkIDo6IHRhaWwpXG4gICAgICAgICAgXSkpXG47O1xuXG5sZXQgc3RyaW5nID0gbWFwIChsaXN0IGNoYXIpIH5mOlN0cmluZy5vZl9jaGFyX2xpc3QgfmZfaW52ZXJzZTpTdHJpbmcudG9fbGlzdFxubGV0IGJ5dGVzID0gbWFwIHN0cmluZyB+ZjpCeXRlcy5vZl9zdHJpbmcgfmZfaW52ZXJzZTpCeXRlcy50b19zdHJpbmdcbmxldCBhcnJheSB0ID0gbWFwIChsaXN0IHQpIH5mOkFycmF5Lm9mX2xpc3QgfmZfaW52ZXJzZTpBcnJheS50b19saXN0XG5sZXQgcmVmIHQgPSBtYXAgdCB+ZjpSZWYuY3JlYXRlIH5mX2ludmVyc2U6UmVmLiggISApXG5sZXQgbGF6eV90IHQgPSBtYXAgdCB+ZjpMYXp5LmZyb21fdmFsIH5mX2ludmVyc2U6TGF6eS5mb3JjZVxuXG5sZXQgc2V4cCA9XG4gIGZpeGVkX3BvaW50IChmdW4gc2hyaW5rZXIgLT5cbiAgICBjcmVhdGUgKGZ1bmN0aW9uXG4gICAgICB8IFNleHAuQXRvbSBfIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgICB8IFNleHAuTGlzdCBsIC0+XG4gICAgICAgIGxldCBzaHJpbmtfbGlzdCA9XG4gICAgICAgICAgc2hyaW5rIChsaXN0IHNocmlua2VyKSBsIHw+IFNlcXVlbmNlLm1hcCB+ZjooZnVuIGwgLT4gU2V4cC5MaXN0IGwpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzaHJpbmtfdHJlZSA9IFNlcXVlbmNlLm9mX2xpc3QgbCBpblxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIHNocmlua19saXN0OyBzaHJpbmtfdHJlZSBdKSlcbjs7XG5cbmxldCBlaXRoZXIgZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biBlaXRoZXIgLT5cbiAgICBtYXRjaCAoZWl0aGVyIDogXyBFaXRoZXIudCkgd2l0aFxuICAgIHwgRmlyc3QgZnN0IC0+IFNlcXVlbmNlLm1hcCAoc2hyaW5rIGZzdF90IGZzdCkgfmY6RWl0aGVyLmZpcnN0XG4gICAgfCBTZWNvbmQgc25kIC0+IFNlcXVlbmNlLm1hcCAoc2hyaW5rIHNuZF90IHNuZCkgfmY6RWl0aGVyLnNlY29uZClcbjs7XG5cbmxldCByZXN1bHQgb2tfdCBlcnJfdCA9XG4gIG1hcFxuICAgIChlaXRoZXIgb2tfdCBlcnJfdClcbiAgICB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3Qgb2sgLT4gT2sgb2tcbiAgICAgIHwgU2Vjb25kIGVyciAtPiBFcnJvciBlcnIpXG4gICAgfmZfaW52ZXJzZTooZnVuY3Rpb25cbiAgICAgIHwgT2sgb2sgLT4gRmlyc3Qgb2tcbiAgICAgIHwgRXJyb3IgZXJyIC0+IFNlY29uZCBlcnIpXG47O1xuXG5sZXQgbWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfdCBkYXRhX3QgPVxuICBjcmVhdGUgKGZ1biB0cmVlIC0+XG4gICAgbGV0IGFsaXN0ID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19hbGlzdCB0cmVlIGluXG4gICAgbGV0IGRyb3Bfa2V5cyA9XG4gICAgICBTZXF1ZW5jZS5tYXAgKFNlcXVlbmNlLm9mX2xpc3QgYWxpc3QpIH5mOihmdW4gKGssIF8pIC0+XG4gICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUgaylcbiAgICBpblxuICAgIGxldCBzaHJpbmtfa2V5cyA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAoTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICBsZXQgdHJlZSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUga2V5IGluXG4gICAgICAgICAgIFNlcXVlbmNlLmZpbHRlcl9tYXAgKHNocmluayBrZXlfdCBrZXkpIH5mOihmdW4gc21hbGxlcl9rZXkgLT5cbiAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5hZGQgfmNvbXBhcmF0b3IgdHJlZSB+a2V5OnNtYWxsZXJfa2V5IH5kYXRhXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgYE9rIHRyZWUgLT4gU29tZSB0cmVlXG4gICAgICAgICAgICAgfCBgRHVwbGljYXRlIC0+IE5vbmUpKSlcbiAgICBpblxuICAgIGxldCBzaHJpbmtfZGF0YSA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAoTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICBTZXF1ZW5jZS5tYXAgKHNocmluayBkYXRhX3QgZGF0YSkgfmY6KGZ1biBzbWFsbGVyX2RhdGEgLT5cbiAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnNldCB+Y29tcGFyYXRvciB0cmVlIH5rZXkgfmRhdGE6c21hbGxlcl9kYXRhKSkpXG4gICAgaW5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIGRyb3Bfa2V5czsgc2hyaW5rX2tleXM7IHNocmlua19kYXRhIF0pXG47O1xuXG5sZXQgc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfdCA9XG4gIGNyZWF0ZSAoZnVuIHRyZWUgLT5cbiAgICBsZXQgbGlzdCA9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fbGlzdCB0cmVlIGluXG4gICAgbGV0IGRyb3BfZWx0cyA9XG4gICAgICBTZXF1ZW5jZS5tYXAgKFNlcXVlbmNlLm9mX2xpc3QgbGlzdCkgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBlbHQpXG4gICAgaW5cbiAgICBsZXQgc2hyaW5rX2VsdHMgPVxuICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgKExpc3QubWFwIGxpc3QgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgbGV0IHRyZWUgPSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnJlbW92ZSB+Y29tcGFyYXRvciB0cmVlIGVsdCBpblxuICAgICAgICAgICBTZXF1ZW5jZS5maWx0ZXJfbWFwIChzaHJpbmsgZWx0X3QgZWx0KSB+ZjooZnVuIHNtYWxsZXJfZWx0IC0+XG4gICAgICAgICAgICAgbWF0Y2ggU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5tZW0gfmNvbXBhcmF0b3IgdHJlZSBzbWFsbGVyX2VsdCB3aXRoXG4gICAgICAgICAgICAgfCB0cnVlIC0+IE5vbmVcbiAgICAgICAgICAgICB8IGZhbHNlIC0+IFNvbWUgKFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuYWRkIHRyZWUgfmNvbXBhcmF0b3Igc21hbGxlcl9lbHQpKSkpXG4gICAgaW5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIGRyb3BfZWx0czsgc2hyaW5rX2VsdHMgXSlcbjs7XG5cbmxldCBtYXBfdCBrZXlfdCBkYXRhX3QgPVxuICBjcmVhdGUgKGZ1biBtYXBfdCAtPlxuICAgIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgbWFwX3QgaW5cbiAgICBsZXQgdCA9XG4gICAgICBtYXBcbiAgICAgICAgKG1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga2V5X3QgZGF0YV90KVxuICAgICAgICB+ZjooTWFwLlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbiAgICAgICAgfmZfaW52ZXJzZTpNYXAuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4gICAgaW5cbiAgICBzaHJpbmsgdCBtYXBfdClcbjs7XG5cbmxldCBzZXRfdCBlbHRfdCA9XG4gIGNyZWF0ZSAoZnVuIHNldF90IC0+XG4gICAgbGV0IGNvbXBhcmF0b3IgPSBTZXQuY29tcGFyYXRvciBzZXRfdCBpblxuICAgIGxldCB0ID1cbiAgICAgIG1hcFxuICAgICAgICAoc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfdClcbiAgICAgICAgfmY6KFNldC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3IpXG4gICAgICAgIH5mX2ludmVyc2U6U2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuICAgIGluXG4gICAgc2hyaW5rIHQgc2V0X3QpXG47O1xuIiwib3BlbiEgQmFzZVxuaW5jbHVkZSBUZXN0X2ludGZcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBtb2R1bGUgU2VlZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5vbmRldGVybWluaXN0aWNcbiAgICAgIHwgRGV0ZXJtaW5pc3RpYyBvZiBzdHJpbmdcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBtb2R1bGUgUG90ZW50aWFsbHlfaW5maW5pdGVfc2VxdWVuY2UgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBTZXF1ZW5jZS50XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IHNlcXVlbmNlID1cbiAgICAgIGxldCBwcmVmaXgsIHN1ZmZpeCA9IFNlcXVlbmNlLnNwbGl0X24gc2VxdWVuY2UgMTAwIGluXG4gICAgICBsZXQgcHJlZml4ID0gTGlzdC5tYXAgcHJlZml4IH5mOnNleHBfb2ZfZWx0IGluXG4gICAgICBsZXQgc3VmZml4ID1cbiAgICAgICAgbWF0Y2ggU2VxdWVuY2UuaXNfZW1wdHkgc3VmZml4IHdpdGhcbiAgICAgICAgfCB0cnVlIC0+IFtdXG4gICAgICAgIHwgZmFsc2UgLT4gWyBbJW1lc3NhZ2UgXCIuLi5cIl0gXVxuICAgICAgaW5cbiAgICAgIFNleHAuTGlzdCAocHJlZml4IEAgc3VmZml4KVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBzZWVkIDogU2VlZC50XG4gICAgOyB0ZXN0X2NvdW50IDogaW50XG4gICAgOyBzaHJpbmtfY291bnQgOiBpbnRcbiAgICA7IHNpemVzIDogaW50IFBvdGVudGlhbGx5X2luZmluaXRlX3NlcXVlbmNlLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cbmVuZFxuXG5sZXQgZGVmYXVsdF9jb25maWcgOiBDb25maWcudCA9XG4gIHsgc2VlZCA9IERldGVybWluaXN0aWMgXCJhbiBhcmJpdHJhcnkgYnV0IGRldGVybWluaXN0aWMgc3RyaW5nXCJcbiAgOyB0ZXN0X2NvdW50ID1cbiAgICAgICgqIFtTcGxpdHRhYmxlX3JhbmRvbV0gaXMgYmFzZWQgb24gNjQtYml0IGFyaXRobWV0aWMsIGFuZCBzbyB0ZXN0cyBydW4gbXVjaCBzbG93ZXJcbiAgICAgICAgIG9uIDMyLWJpdCB0YXJnZXRzLiBXZSBydW4gYW4gb3JkZXIgb2YgbWFnbml0dWRlIGZld2VyIHRyaWFscyBzbyBhcyBub3QgdG9cbiAgICAgICAgIGNvbXBsZXRlbHkgYm9nIGRvd24gY29udGludW91cyBpbnRlZ3JhdGlvbiBzeXN0ZW1zLiAqKVxuICAgICAgKG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgICAgIHwgVzY0IC0+IDEwXzAwMFxuICAgICAgIHwgVzMyIC0+IDFfMDAwKVxuICA7IHNocmlua19jb3VudCA9IDEwXzAwMFxuICA7IHNpemVzID0gU2VxdWVuY2UuY3ljbGVfbGlzdF9leG4gKExpc3QucmFuZ2UgMCB+c3RhcnQ6YGluY2x1c2l2ZSAzMCB+c3RvcDpgaW5jbHVzaXZlKVxuICB9XG47O1xuXG5sZXQgbGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG5sZXQgaW5pdGlhbF9yYW5kb21fc3RhdGUgfmNvbmZpZyA9XG4gIG1hdGNoIENvbmZpZy5zZWVkIGNvbmZpZyB3aXRoXG4gIHwgTm9uZGV0ZXJtaW5pc3RpYyAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5jcmVhdGUgKGZvcmNlIGxhenlfbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSlcbiAgfCBEZXRlcm1pbmlzdGljIHN0cmluZyAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKFN0cmluZy5oYXNoIHN0cmluZylcbjs7XG5cbmxldCBvbmVfc2l6ZV9wZXJfdGVzdCB+KGNvbmZpZyA6IENvbmZpZy50KSA9XG4gIFNlcXVlbmNlLnVuZm9sZCB+aW5pdDooY29uZmlnLnNpemVzLCAwKSB+ZjooZnVuIChzaXplcywgbnVtYmVyX29mX3NpemVfdmFsdWVzKSAtPlxuICAgIG1hdGNoIG51bWJlcl9vZl9zaXplX3ZhbHVlcyA+PSBjb25maWcudGVzdF9jb3VudCB3aXRoXG4gICAgfCB0cnVlIC0+IE5vbmVcbiAgICB8IGZhbHNlIC0+XG4gICAgICAobWF0Y2ggU2VxdWVuY2UubmV4dCBzaXplcyB3aXRoXG4gICAgICAgfCBTb21lIChzaXplLCByZW1haW5pbmdfc2l6ZXMpIC0+XG4gICAgICAgICBTb21lIChzaXplLCAocmVtYWluaW5nX3NpemVzLCBudW1iZXJfb2Zfc2l6ZV92YWx1ZXMgKyAxKSlcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgXCJCYXNlX3F1aWNrY2hlY2suVGVzdC5ydW46IGluc3VmZmljaWVudCBzaXplIHZhbHVlcyBmb3IgdGVzdCBjb3VudFwiXG4gICAgICAgICAgICAgICB+dGVzdF9jb3VudDooY29uZmlnLnRlc3RfY291bnQgOiBpbnQpXG4gICAgICAgICAgICAgICAobnVtYmVyX29mX3NpemVfdmFsdWVzIDogaW50KV0pKVxuOztcblxubGV0IHNocmlua19lcnJvciB+c2hyaW5rZXIgfmNvbmZpZyB+ZiBpbnB1dCBlcnJvciA9XG4gIGxldCByZWMgbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGlucHV0IGVycm9yID1cbiAgICBtYXRjaCBzaHJpbmtfY291bnQgd2l0aFxuICAgIHwgMCAtPiBpbnB1dCwgZXJyb3JcbiAgICB8IF8gLT5cbiAgICAgIGxldCBzaHJpbmtfY291bnQgPSBzaHJpbmtfY291bnQgLSAxIGluXG4gICAgICAobWF0Y2ggU2VxdWVuY2UubmV4dCBhbHRlcm5hdGVzIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gaW5wdXQsIGVycm9yXG4gICAgICAgfCBTb21lIChhbHRlcm5hdGUsIGFsdGVybmF0ZXMpIC0+XG4gICAgICAgICAobWF0Y2ggZiBhbHRlcm5hdGUgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGlucHV0IGVycm9yXG4gICAgICAgICAgfCBFcnJvciBlcnJvciAtPlxuICAgICAgICAgICAgbGV0IGFsdGVybmF0ZXMgPSBTaHJpbmtlci5zaHJpbmsgc2hyaW5rZXIgYWx0ZXJuYXRlIGluXG4gICAgICAgICAgICBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgYWx0ZXJuYXRlIGVycm9yKSlcbiAgaW5cbiAgbGV0IHNocmlua19jb3VudCA9IENvbmZpZy5zaHJpbmtfY291bnQgY29uZmlnIGluXG4gIGxldCBhbHRlcm5hdGVzID0gU2hyaW5rZXIuc2hyaW5rIHNocmlua2VyIGlucHV0IGluXG4gIGxvb3AgfnNocmlua19jb3VudCB+YWx0ZXJuYXRlcyBpbnB1dCBlcnJvclxuOztcblxubGV0IGlucHV0X3NlcXVlbmNlIH5jb25maWcgfmV4YW1wbGVzIH5nZW5lcmF0b3IgPVxuICBsZXQgcmFuZG9tID0gaW5pdGlhbF9yYW5kb21fc3RhdGUgfmNvbmZpZyBpblxuICBTZXF1ZW5jZS5hcHBlbmRcbiAgICAoU2VxdWVuY2Uub2ZfbGlzdCBleGFtcGxlcylcbiAgICAob25lX3NpemVfcGVyX3Rlc3QgfmNvbmZpZ1xuICAgICB8PiBTZXF1ZW5jZS5tYXAgfmY6KGZ1biBzaXplIC0+IEdlbmVyYXRvci5nZW5lcmF0ZSBnZW5lcmF0b3IgfnNpemUgfnJhbmRvbSkpXG47O1xuXG5sZXQgd2l0aF9zYW1wbGUgfmYgPyhjb25maWcgPSBkZWZhdWx0X2NvbmZpZykgPyhleGFtcGxlcyA9IFtdKSBnZW5lcmF0b3IgPVxuICBsZXQgc2VxdWVuY2UgPSBpbnB1dF9zZXF1ZW5jZSB+Y29uZmlnIH5leGFtcGxlcyB+Z2VuZXJhdG9yIGluXG4gIGYgc2VxdWVuY2Vcbjs7XG5cbmxldCByZXN1bHQgKHR5cGUgYSkgfmYgPyhjb25maWcgPSBkZWZhdWx0X2NvbmZpZykgPyhleGFtcGxlcyA9IFtdKSBtID1cbiAgbGV0IChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9IG0gaW5cbiAgd2l0aF9zYW1wbGUgTS5xdWlja2NoZWNrX2dlbmVyYXRvciB+Y29uZmlnIH5leGFtcGxlcyB+ZjooZnVuIHNlcXVlbmNlIC0+XG4gICAgbWF0Y2hcbiAgICAgIFNlcXVlbmNlLmZvbGRfcmVzdWx0IHNlcXVlbmNlIH5pbml0OigpIH5mOihmdW4gKCkgaW5wdXQgLT5cbiAgICAgICAgbWF0Y2ggZiBpbnB1dCB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gT2sgKClcbiAgICAgICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciAoaW5wdXQsIGVycm9yKSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiBPayAoKVxuICAgIHwgRXJyb3IgKGlucHV0LCBlcnJvcikgLT5cbiAgICAgIGxldCBzaHJpbmtlciA9IE0ucXVpY2tjaGVja19zaHJpbmtlciBpblxuICAgICAgbGV0IGlucHV0LCBlcnJvciA9IHNocmlua19lcnJvciB+c2hyaW5rZXIgfmNvbmZpZyB+ZiBpbnB1dCBlcnJvciBpblxuICAgICAgRXJyb3IgKGlucHV0LCBlcnJvcikpXG47O1xuXG5sZXQgcnVuICh0eXBlIGEpIH5mID9jb25maWcgP2V4YW1wbGVzIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gIGxldCBmIHggPVxuICAgIE9yX2Vycm9yLnRyeV93aXRoX2pvaW4gfmJhY2t0cmFjZTooQmFja3RyYWNlLkV4bi5hbV9yZWNvcmRpbmcgKCkpIChmdW4gKCkgLT4gZiB4KVxuICBpblxuICBtYXRjaCByZXN1bHQgfmYgP2NvbmZpZyA/ZXhhbXBsZXMgKG1vZHVsZSBNKSB3aXRoXG4gIHwgT2sgKCkgLT4gT2sgKClcbiAgfCBFcnJvciAoaW5wdXQsIGVycm9yKSAtPlxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5UZXN0LnJ1bjogdGVzdCBmYWlsZWRcIiAoaW5wdXQgOiBNLnQpIChlcnJvciA6IEVycm9yLnQpXVxuOztcblxubGV0IHdpdGhfc2FtcGxlX2V4biB+ZiA/Y29uZmlnID9leGFtcGxlcyBnZW5lcmF0b3IgPVxuICBsZXQgZiB4ID0gT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBmIHgpIGluXG4gIHdpdGhfc2FtcGxlIH5mID9jb25maWcgP2V4YW1wbGVzIGdlbmVyYXRvciB8PiBPcl9lcnJvci5va19leG5cbjs7XG5cbmxldCBydW5fZXhuIH5mID9jb25maWcgP2V4YW1wbGVzIHRlc3RhYmxlID1cbiAgbGV0IGYgeCA9XG4gICAgT3JfZXJyb3IudHJ5X3dpdGggfmJhY2t0cmFjZTooQmFja3RyYWNlLkV4bi5hbV9yZWNvcmRpbmcgKCkpIChmdW4gKCkgLT4gZiB4KVxuICBpblxuICBydW4gfmYgP2NvbmZpZyA/ZXhhbXBsZXMgdGVzdGFibGUgfD4gT3JfZXJyb3Iub2tfZXhuXG47O1xuIiwib3BlbiEgQmFzZVxuaW5jbHVkZSBPYnNlcnZlcjBcblxubGV0IHVubWFwIHQgfmYgPSBjcmVhdGUgKGZ1biB4IH5zaXplIH5oYXNoIC0+IG9ic2VydmUgdCAoZiB4KSB+c2l6ZSB+aGFzaClcbmxldCBvZl9oYXNoX2ZvbGQgZiA9IGNyZWF0ZSAoZnVuIHggfnNpemU6XyB+aGFzaCAtPiBmIGhhc2ggeClcbmxldCBvZl9sYXp5IGxhenlfdCA9IGNyZWF0ZSAoZnVuIHggfnNpemUgfmhhc2ggLT4gb2JzZXJ2ZSAoZm9yY2UgbGF6eV90KSB4IH5zaXplIH5oYXNoKVxuXG5sZXQgZml4ZWRfcG9pbnQgd3JhcCA9XG4gIGxldCByZWMgbGF6eV90ID0gbGF6eSAod3JhcCAob2ZfbGF6eSBsYXp5X3QpKSBpblxuICBvZl9sYXp5IGxhenlfdFxuOztcblxubGV0IHVuaXQgPSBvcGFxdWVcbmxldCBib29sID0gb2ZfaGFzaF9mb2xkIEJvb2wuaGFzaF9mb2xkX3RcbmxldCBjaGFyID0gb2ZfaGFzaF9mb2xkIENoYXIuaGFzaF9mb2xkX3RcbmxldCBpbnQgPSBvZl9oYXNoX2ZvbGQgSW50Lmhhc2hfZm9sZF90XG5sZXQgaW50MzIgPSBvZl9oYXNoX2ZvbGQgSW50MzIuaGFzaF9mb2xkX3RcbmxldCBpbnQ2MyA9IG9mX2hhc2hfZm9sZCBJbnQ2My5oYXNoX2ZvbGRfdFxubGV0IGludDY0ID0gb2ZfaGFzaF9mb2xkIEludDY0Lmhhc2hfZm9sZF90XG5sZXQgbmF0aXZlaW50ID0gb2ZfaGFzaF9mb2xkIE5hdGl2ZWludC5oYXNoX2ZvbGRfdFxubGV0IGZsb2F0ID0gb2ZfaGFzaF9mb2xkIEZsb2F0Lmhhc2hfZm9sZF90XG5sZXQgc3RyaW5nID0gb2ZfaGFzaF9mb2xkIFN0cmluZy5oYXNoX2ZvbGRfdFxubGV0IHNleHAgPSBvZl9oYXNoX2ZvbGQgU2V4cC5oYXNoX2ZvbGRfdFxubGV0IGJpZ3N0cmluZyA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaGFzaF9mb2xkIGhhc2hfZm9sZF9jaGFyKVxubGV0IGZsb2F0MzJfdmVjID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0NjRfdmVjID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0MzJfbWF0ID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0NjRfbWF0ID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGJ5dGVzID0gdW5tYXAgc3RyaW5nIH5mOkJ5dGVzLnRvX3N0cmluZ1xuXG5sZXQgZWl0aGVyIGZzdF90IHNuZF90ID1cbiAgY3JlYXRlIChmdW4gZWl0aGVyIH5zaXplIH5oYXNoIC0+XG4gICAgbWF0Y2ggKGVpdGhlciA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICB8IEZpcnN0IGZzdCAtPiBvYnNlcnZlIGZzdF90IGZzdCB+c2l6ZSB+aGFzaDooaGFzaF9mb2xkX2ludCBoYXNoIDEpXG4gICAgfCBTZWNvbmQgc25kIC0+IG9ic2VydmUgc25kX3Qgc25kIH5zaXplIH5oYXNoOihoYXNoX2ZvbGRfaW50IGhhc2ggMikpXG47O1xuXG5sZXQgcmVzdWx0IG9rX3QgZXJyX3QgPVxuICB1bm1hcCAoZWl0aGVyIG9rX3QgZXJyX3QpIH5mOihmdW5jdGlvblxuICAgIHwgT2sgb2sgLT4gRmlyc3Qgb2tcbiAgICB8IEVycm9yIGVyciAtPiBTZWNvbmQgZXJyKVxuOztcblxubGV0IGJvdGggZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biAoZnN0LCBzbmQpIH5zaXplIH5oYXNoIC0+XG4gICAgbGV0IGhhc2ggPSBvYnNlcnZlIGZzdF90IGZzdCB+c2l6ZSB+aGFzaCBpblxuICAgIGxldCBoYXNoID0gb2JzZXJ2ZSBzbmRfdCBzbmQgfnNpemUgfmhhc2ggaW5cbiAgICBoYXNoKVxuOztcblxubGV0IG9wdGlvbiB2YWx1ZV90ID1cbiAgdW5tYXAgKGVpdGhlciBvcGFxdWUgdmFsdWVfdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IEZpcnN0ICgpXG4gICAgfCBTb21lIHZhbHVlIC0+IFNlY29uZCB2YWx1ZSlcbjs7XG5cbmxldCBsaXN0IGVsdF90ID1cbiAgY3JlYXRlIChmdW4gbGlzdCB+c2l6ZSB+aGFzaCAtPlxuICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKEhhc2guZ2V0X2hhc2hfdmFsdWUgaGFzaCkgaW5cbiAgICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGggbGlzdCBpblxuICAgIGxldCBzaXplcyA9XG4gICAgICBHZW5lcmF0b3Iuc2l6ZXMgfm1pbl9sZW5ndGg6bGVuZ3RoIH5tYXhfbGVuZ3RoOmxlbmd0aCAoKVxuICAgICAgfD4gR2VuZXJhdG9yLmdlbmVyYXRlIH5zaXplIH5yYW5kb21cbiAgICBpblxuICAgIExpc3QuZm9sZDJfZXhuIGxpc3Qgc2l6ZXMgfmluaXQ6KGhhc2hfZm9sZF9pbnQgaGFzaCAwKSB+ZjooZnVuIGhhc2ggZWx0IHNpemUgLT5cbiAgICAgIG9ic2VydmUgZWx0X3QgZWx0IH5zaXplIH5oYXNoOihoYXNoX2ZvbGRfaW50IGhhc2ggMSkpKVxuOztcblxubGV0IGFycmF5IHQgPSB1bm1hcCAobGlzdCB0KSB+ZjpBcnJheS50b19saXN0XG5sZXQgcmVmIHQgPSB1bm1hcCB0IH5mOlJlZi4oICEgKVxubGV0IGxhenlfdCB0ID0gdW5tYXAgdCB+ZjpMYXp5LmZvcmNlXG5cbmxldCBmbiBkb20gcm5nID1cbiAgY3JlYXRlIChmdW4gZiB+c2l6ZSB+aGFzaCAtPlxuICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKEhhc2guZ2V0X2hhc2hfdmFsdWUgaGFzaCkgaW5cbiAgICBsZXQgc2l6ZXMgPVxuICAgICAgKCogRW1waXJpY2FsbHksIGRvdWJsaW5nIHRoZSBzaXplIHdoZW4gZ2VuZXJhdGluZyB0aGUgbGlzdCBvZiBpbnB1dHMgZ2l2ZXMgdXMgbXVjaFxuICAgICAgICAgYmV0dGVyIGNvdmVyYWdlIG9mIHRoZSBzcGFjZSBvZiBmdW5jdGlvbnMuICopXG4gICAgICBHZW5lcmF0b3IuZ2VuZXJhdGUgKEdlbmVyYXRvci5zaXplcyAoKSkgfnNpemU6KHNpemUgKiAyKSB+cmFuZG9tXG4gICAgaW5cbiAgICBMaXN0LmZvbGQgc2l6ZXMgfmluaXQ6aGFzaCB+ZjooZnVuIGhhc2ggc2l6ZSAtPlxuICAgICAgbGV0IHggPSBHZW5lcmF0b3IuZ2VuZXJhdGUgZG9tIH5zaXplIH5yYW5kb20gaW5cbiAgICAgIG9ic2VydmUgcm5nIChmIHgpIH5zaXplIH5oYXNoKSlcbjs7XG5cbmxldCBtYXBfdHJlZSBrZXlfb2JzIGRhdGFfb2JzID1cbiAgdW5tYXAgKGxpc3QgKGJvdGgga2V5X29icyBkYXRhX29icykpIH5mOk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fYWxpc3Rcbjs7XG5cbmxldCBzZXRfdHJlZSBlbHRfb2JzID0gdW5tYXAgKGxpc3QgZWx0X29icykgfmY6U2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19saXN0XG5cbmxldCBtYXBfdCBrZXlfb2JzIGRhdGFfb2JzID1cbiAgdW5tYXAgKG1hcF90cmVlIGtleV9vYnMgZGF0YV9vYnMpIH5mOk1hcC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbjs7XG5cbmxldCBzZXRfdCBlbHRfb2JzID0gdW5tYXAgKHNldF90cmVlIGVsdF9vYnMpIH5mOlNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiIsIm1vZHVsZSBHZW5lcmF0b3IgPSBHZW5lcmF0b3Jcbm1vZHVsZSBPYnNlcnZlciA9IE9ic2VydmVyXG5tb2R1bGUgU2hyaW5rZXIgPSBTaHJpbmtlclxubW9kdWxlIFRlc3QgPSBUZXN0XG5tb2R1bGUgRXhwb3J0ID0gRXhwb3J0XG5pbmNsdWRlIEV4cG9ydFxuXG4oKiovKiopXG5cbigqXyBUaGlzIG1vZHVsZSBpcyBleHBvc2VkIG9ubHkgdG8gbWFrZSBvY2FtbGRvYyBvdXRwdXQgbW9yZSByZWFkYWJsZS4gKilcbm1vZHVsZSBXaXRoX2Jhc2ljX3R5cGVzID0gV2l0aF9iYXNpY190eXBlc1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQmlnYXJyYXlfaGVscGVycyA9IEJpZ2FycmF5X2hlbHBlcnNcbmVuZFxuIiwib3BlbiEgQmFzZVxuaW5jbHVkZSBVaV9lZmZlY3RfaW50ZlxuXG50eXBlICdhIHQgPSAuLlxudHlwZSAnYSB0ICs9IElnbm9yZSA6IHVuaXQgdCB8IE1hbnkgOiB1bml0IHQgbGlzdCAtPiB1bml0IHRcblxuKCogV2UgdXNlIHRoaXMgdGFibGUgZm9yIGRpc3BhdGNoaW5nIHRvIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyIGluIGFuIGVmZmljaWVudCB3YXkuICAqKVxudHlwZSBoaWRkZW4gPSBUIDogKCdhIHQgKiAoJ2EgLT4gdW5pdCkpIC0+IGhpZGRlblxuXG5sZXQgaGFuZGxlcnMgOiAoaGlkZGVuIC0+IHVuaXQpIEhhc2h0YmwuTShJbnQpLnQgPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIEludCkgfnNpemU6OFxuXG5tb2R1bGUgRGVmaW5lIChIYW5kbGVyIDogSGFuZGxlcikgOlxuICBTIHdpdGggdHlwZSBhY3Rpb24gOj0gSGFuZGxlci5BY3Rpb24udCBhbmQgdHlwZSAnYSB0IDo9ICdhIHQgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgKz0gQyA6IEhhbmRsZXIuQWN0aW9uLnQgLT4gdW5pdCB0XG5cbiAgbGV0IGtleSA9IFN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIENdXG5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLmFkZF9leG4gaGFuZGxlcnMgfmtleSB+ZGF0YTooZnVuIGlucCAtPlxuICAgICAgbWF0Y2ggaW5wIHdpdGhcbiAgICAgIHwgVCAoQyB2YWx1ZSwgY2FsbGJhY2spIC0+XG4gICAgICAgIEhhbmRsZXIuaGFuZGxlIHZhbHVlO1xuICAgICAgICBjYWxsYmFjayAoKVxuICAgICAgfCBfIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiVW5yZWNvZ25pemVkIHZhcmlhbnRcIl0pXG4gIDs7XG5cbiAgbGV0IGluamVjdCB2ID0gQyB2XG5lbmRcblxubW9kdWxlIERlZmluZTEgKEhhbmRsZXIgOiBIYW5kbGVyMSkgOlxuICBTMSB3aXRoIHR5cGUgJ2EgYWN0aW9uIDo9ICdhIEhhbmRsZXIuQWN0aW9uLnQgYW5kIHR5cGUgJ2EgdCA6PSAnYSB0ID0gc3RydWN0XG4gIHR5cGUgXyB0ICs9IEMgOiAnYSBIYW5kbGVyLkFjdGlvbi50IC0+ICdhIHRcblxuICBsZXQga2V5ID0gU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgQ11cblxuICBsZXQgKCkgPVxuICAgIEhhc2h0YmwuYWRkX2V4biBoYW5kbGVycyB+a2V5IH5kYXRhOihmdW4gaW5wIC0+XG4gICAgICBtYXRjaCBpbnAgd2l0aFxuICAgICAgfCBUIChDIHZhbHVlLCBjYWxsYmFjaykgLT5cbiAgICAgICAgbGV0IGNhbGxlZCA9IHJlZiBmYWxzZSBpblxuICAgICAgICBsZXQgY2FsbGJhY2sgYSA9XG4gICAgICAgICAgaWYgIWNhbGxlZFxuICAgICAgICAgIHRoZW4gZmFpbHdpdGggXCJvbl9yZXNwb25zZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMhXCJcbiAgICAgICAgICBlbHNlIGNhbGxlZCA6PSB0cnVlO1xuICAgICAgICAgIGNhbGxiYWNrIGFcbiAgICAgICAgaW5cbiAgICAgICAgSGFuZGxlci5oYW5kbGUgdmFsdWUgfm9uX3Jlc3BvbnNlOmNhbGxiYWNrXG4gICAgICB8IF8gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJVbnJlY29nbml6ZWQgdmFyaWFudFwiXSlcbiAgOztcblxuICBsZXQgaW5qZWN0IHYgPSBDIHZcbmVuZFxuXG5sZXQgZ2V0X2tleSB0ID0gU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuKGlkIChvZl92YWwgdCkpXG5cbmxldCBoYW5kbGVfcmVnaXN0ZXJlZF9ldmVudCAoVCAodCwgY2IpKSA9XG4gIEhhc2h0YmwuZmluZF9leG4gaGFuZGxlcnMgKGdldF9rZXkgdCkgKFQgKHQsIGNiKSlcbjs7XG5cbm1vZHVsZSBQcmludF9zID0gRGVmaW5lIChzdHJ1Y3RcbiAgICBtb2R1bGUgQWN0aW9uID0gU2V4cFxuXG4gICAgbGV0IGhhbmRsZSBzID0gU3RkaW8ucHJpbnRfcyBzXG4gIGVuZClcblxubGV0IHByaW50X3MgPSBQcmludF9zLmluamVjdFxuXG4oKiBFZmZlY3RmdWwgdGhpbmdzICopXG50eXBlICdhIHQgKz1cbiAgfCBSZXR1cm4gOiAnYSAtPiAnYSB0XG4gIHwgTGF6eSA6ICdhIHQgTGF6eS50IC0+ICdhIHRcbiAgfCBCaW5kIDpcbiAgICAgIHsgdCA6ICdhIHRcbiAgICAgIDsgZiA6ICdhIC0+ICdiIHRcbiAgICAgIH1cbiAgICAgIC0+ICdiIHRcbiAgfCBNYXAgOlxuICAgICAgeyB0IDogJ2EgdFxuICAgICAgOyBmIDogJ2EgLT4gJ2JcbiAgICAgIH1cbiAgICAgIC0+ICdiIHRcbiAgfCBOZXZlciA6ICdiIHRcbiAgfCBGdW4gOiAoY2FsbGJhY2s6KCdhIC0+IHVuaXQpIC0+IHVuaXQpIC0+ICdhIHRcblxubGV0IHJldHVybiBhID0gUmV0dXJuIGFcbmxldCBiaW5kICh0eXBlIGEpICh0IDogYSB0KSB+ZiA9IEJpbmQgeyB0OyBmIH1cbmxldCBtYXAgKHR5cGUgYSBiKSAodCA6IGEgdCkgfmYgOiBiIHQgPSBNYXAgeyB0OyBmIH1cbmxldCBuZXZlciA9IE5ldmVyXG5sZXQgb2ZfZnVuIH5mID0gRnVuIGZcbmxldCBsYXp5XyBhID0gTGF6eSBhXG5cbmluY2x1ZGUgQmFzZS5Nb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmxldCByZWMgZXZhbCA6IHR5cGUgYS4gYSB0IC0+IGNhbGxiYWNrOihhIC0+IHVuaXQpIC0+IHVuaXQgPVxuICBmdW4gdCB+Y2FsbGJhY2sgLT5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRnVuIGYgLT4gZiB+Y2FsbGJhY2tcbiAgfCBJZ25vcmUgLT4gY2FsbGJhY2sgKClcbiAgfCBSZXR1cm4gYSAtPiBjYWxsYmFjayBhXG4gIHwgTGF6eSAobGF6eSB0KSAtPiBldmFsIHQgfmNhbGxiYWNrXG4gIHwgTWFueSBsIC0+XG4gICAgTGlzdC5pdGVyIGwgfmY6KGV2YWwgfmNhbGxiYWNrOmlnbm9yZSk7XG4gICAgY2FsbGJhY2sgKClcbiAgfCBCaW5kIHsgdDsgZiB9IC0+IGV2YWwgdCB+Y2FsbGJhY2s6KGZ1biBhIC0+IGV2YWwgKGYgYSkgfmNhbGxiYWNrKVxuICB8IE1hcCB7IHQ7IGYgfSAtPiBldmFsIHQgfmNhbGxiYWNrOihmdW4gYSAtPiBjYWxsYmFjayAoZiBhKSlcbiAgfCBOZXZlciAtPiAoKVxuICB8IHQgLT4gaGFuZGxlX3JlZ2lzdGVyZWRfZXZlbnQgKFQgKHQsIGNhbGxiYWNrKSlcbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGhhbmRsZSA9IGV2YWwgfmNhbGxiYWNrOmlnbm9yZVxuXG4gIHR5cGUgaGlkZSA9IGhpZGRlbiA9IFQgOiAoJ2EgdCAqICgnYSAtPiB1bml0KSkgLT4gaGlkZVxuXG4gIGxldCBoYW5kbGVycyA9IGhhbmRsZXJzXG4gIGxldCBvZl9mdW4gPSBvZl9mdW5cbmVuZFxuXG5tb2R1bGUgQWR2YW5jZWQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN5bmNfZnVuX2FyZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ3IgdCA9IFQgOiAnYSAqICgnYSAtPiAncikgLT4gJ3IgdFxuICAgIGVuZFxuXG4gICAgbGV0IGhhbmRsZSAoQWN0aW9uLlQgKGEsIGYpKSB+b25fcmVzcG9uc2UgPSBvbl9yZXNwb25zZSAoZiBhKVxuICBlbmRcblxuICBtb2R1bGUgU3luY19mdW4gPSBEZWZpbmUxIChTeW5jX2Z1bl9hcmcpXG5cbiAgbGV0IG9mX3N5bmNfZnVuIGYgYSA9IFN5bmNfZnVuLmluamVjdCAoVCAoYSwgZikpXG5cbiAgbW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgQ2FsbGJhY2sgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPVxuICAgICAgICB7IHJlcXVlc3QgOiAnYVxuICAgICAgICA7IG9uX3Jlc3BvbnNlIDogJ2IgLT4gdW5pdCB0XG4gICAgICAgIH1cblxuICAgICAgbGV0IG1ha2UgfnJlcXVlc3Qgfm9uX3Jlc3BvbnNlID0geyByZXF1ZXN0OyBvbl9yZXNwb25zZSB9XG4gICAgICBsZXQgcmVxdWVzdCB7IHJlcXVlc3Q7IF8gfSA9IHJlcXVlc3RcbiAgICAgIGxldCByZXNwb25kX3RvIHsgb25fcmVzcG9uc2U7IF8gfSByZXNwb25zZSA9IG9uX3Jlc3BvbnNlIHJlc3BvbnNlXG4gICAgZW5kXG5cbiAgICBsZXQgbWFrZSA6IHJlcXVlc3Q6J2EgLT4gZXZhbHVhdG9yOigoJ2EsICdiKSBDYWxsYmFjay50IC0+IHVuaXQgdCkgLT4gJ2IgdCA9XG4gICAgICBmdW4gfnJlcXVlc3QgfmV2YWx1YXRvciAtPlxuICAgICAgRXhwZXJ0Lm9mX2Z1biB+ZjooZnVuIH5jYWxsYmFjayAtPlxuICAgICAgICBsZXQgY2FsbGJhY2sgPVxuICAgICAgICAgIENhbGxiYWNrLm1ha2UgfnJlcXVlc3Qgfm9uX3Jlc3BvbnNlOihmdW4gcmVzcG9uc2UgLT5cbiAgICAgICAgICAgIGNhbGxiYWNrIHJlc3BvbnNlO1xuICAgICAgICAgICAgSWdub3JlKVxuICAgICAgICBpblxuICAgICAgICBFeHBlcnQuaGFuZGxlIChldmFsdWF0b3IgY2FsbGJhY2spKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdmFyID0gc3RydWN0XG4gICAgICB0eXBlICdhIHN0YXRlID1cbiAgICAgICAgfCBFbXB0eSBvZiB7IG11dGFibGUgaGFuZGxlcnMgOiAoJ2EgLT4gdW5pdCkgbGlzdCB9XG4gICAgICAgIHwgRnVsbCBvZiAnYVxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBzdGF0ZSByZWZcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9IHJlZiAoRW1wdHkgeyBoYW5kbGVycyA9IFtdIH0pXG5cbiAgICAgIGxldCB1cG9uIHQgaGFuZGxlciA9XG4gICAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICAgfCBFbXB0eSB0IC0+IHQuaGFuZGxlcnMgPC0gaGFuZGxlciA6OiB0LmhhbmRsZXJzXG4gICAgICAgIHwgRnVsbCB4IC0+IGhhbmRsZXIgeFxuICAgICAgOztcblxuICAgICAgbGV0IGZpbGxfaWZfZW1wdHkgdCB4ID1cbiAgICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgICB8IEZ1bGwgXyAtPiAoKVxuICAgICAgICB8IEVtcHR5IHsgaGFuZGxlcnMgfSAtPlxuICAgICAgICAgIExpc3QuaXRlciBoYW5kbGVycyB+ZjooZnVuIGhhbmRsZXIgLT4gaGFuZGxlciB4KTtcbiAgICAgICAgICB0IDo9IEZ1bGwgeFxuICAgICAgOztcblxuICAgICAgbGV0IHBlZWsgdCA9XG4gICAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICAgfCBFbXB0eSBfIC0+IE5vbmVcbiAgICAgICAgfCBGdWxsIHggLT4gU29tZSB4XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN2YXJfZnVuX2FyZyA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICAgICAgICB0eXBlICdyIHQgPSBUIDogJ2EgKiAoJ2EgLT4gJ3IgU3Zhci50KSAtPiAnciB0XG4gICAgICBlbmRcblxuICAgICAgbGV0IGhhbmRsZSAoQWN0aW9uLlQgKGEsIGYpKSB+b25fcmVzcG9uc2UgPSBTdmFyLnVwb24gKGYgYSkgb25fcmVzcG9uc2VcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdmFyX2Z1biA9IERlZmluZTEgKFN2YXJfZnVuX2FyZylcblxuICAgIGxldCBvZl9zdmFyX2Z1biBmIGEgPSBTdmFyX2Z1bi5pbmplY3QgKFQgKGEsIGYpKVxuXG4gICAgbW9kdWxlIFF1ZXJ5X3Jlc3BvbnNlX3RyYWNrZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgKCdxLCAncikgcnBjID1cbiAgICAgICAgeyBxdWVyeSA6ICdxXG4gICAgICAgIDsgcmVzcG9uc2UgOiAnciBTdmFyLnRcbiAgICAgICAgfVxuXG4gICAgICB0eXBlICgncSwgJ3IpIHQgPSAoJ3EsICdyKSBycGMgbGlzdCByZWZcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9IHJlZiBbXVxuXG4gICAgICBsZXQgYWRkX3F1ZXJ5IHQgcXVlcnkgPVxuICAgICAgICBsZXQgcmVzcG9uc2UgPSBTdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgICB0IDo9IHsgcXVlcnk7IHJlc3BvbnNlIH0gOjogIXQ7XG4gICAgICAgIHJlc3BvbnNlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVlcmllc19wZW5kaW5nX3Jlc3BvbnNlIHQgPVxuICAgICAgICBMaXN0Lm1hcCAhdCB+ZjooZnVuIHsgcXVlcnk7IHJlc3BvbnNlID0gXyB9IC0+IHF1ZXJ5KVxuICAgICAgOztcblxuICAgICAgdHlwZSAnciBtYXliZV9yZXNwb25kID1cbiAgICAgICAgfCBOb19yZXNwb25zZV95ZXRcbiAgICAgICAgfCBSZXNwb25kIG9mICdyXG5cbiAgICAgIGxldCBtYXliZV9yZXNwb25kIHQgfmYgPVxuICAgICAgICB0XG4gICAgICAgIDo9IExpc3QuZmlsdGVyICF0IH5mOihmdW4geyBxdWVyeTsgcmVzcG9uc2UgfSAtPlxuICAgICAgICAgIG1hdGNoIGYgcXVlcnkgd2l0aFxuICAgICAgICAgIHwgTm9fcmVzcG9uc2VfeWV0IC0+IHRydWVcbiAgICAgICAgICB8IFJlc3BvbmQgcmVzcCAtPlxuICAgICAgICAgICAgU3Zhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIHJlc3A7XG4gICAgICAgICAgICBmYWxzZSlcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgb2ZfcXVlcnlfcmVzcG9uc2VfdHJhY2tlciBxcnQgPSBvZl9zdmFyX2Z1biAoUXVlcnlfcmVzcG9uc2VfdHJhY2tlci5hZGRfcXVlcnkgcXJ0KVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEFkdmFuY2VkXG4iLCJtb2R1bGUgRG9tX2h0bWwgPSBzdHJ1Y3RcbiAgb3BlbiBKc19vZl9vY2FtbC5Eb21faHRtbFxuICBvcGVuIEpzX29mX29jYW1sLkpzXG5cbiAgKCogTm8ganNfb2Zfb2NhbWwgUFIgeWV0LiAqKVxuICBjbGFzcyB0eXBlIHdoZWVsRXZlbnQgPSBvYmplY3RcbiAgICBpbmhlcml0IG1vdXNlRXZlbnRcbiAgICBtZXRob2QgZGVsdGFYIDogZmxvYXQgcmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZWx0YVkgOiBmbG9hdCByZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbHRhWiA6IGZsb2F0IHJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVsdGFNb2RlIDogaW50IHJlYWRvbmx5X3Byb3BcbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBxdWlja2NoZWNrLCBzZXhwLCB0eXBlcmVwXVxuXG4gIHZhbCBzaWduZWQgOiBib29sXG4gIHZhbCBudW1fYml0cyA6IGludFxuICB2YWwgbnVtX2J5dGVzIDogaW50XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgbWluX3ZhbHVlIDogdFxuICB2YWwgbWF4X3ZhbHVlIDogdFxuXG4gIGluY2x1ZGUgUHB4X2hhc2hfbGliLkhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIEJhc2UuQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIE8gOiBzaWdcbiAgICBpbmNsdWRlIEJhc2UuQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgbW9kdWxlIFdyYXAgOiBzaWdcbiAgICAgIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggKiApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCAoIC8gKSA6IHQgLT4gdCAtPiB0XG4gICAgZW5kXG4gIGVuZFxuXG5lbmRcblxubGV0IHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggPVxuICBCYXNlLnJhaXNlX3MgWyVtZXNzYWdlIChtb2RfbmFtZSBeIFwiOiB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWRcIikgfl86KHRvX3N0cmluZyB4KV1cbltAQGNvbGRdXG47O1xuXG5sZXQgdHJ1bmNfdW5zaWduZWQgOiB0eXBlIGEgYi4gY29udjooYSAtPiBiKSAtPiBsb2dhbmQ6KGEgLT4gYSAtPiBhKSAtPiBtYXNrOmEgLT4gYSAtPiBiID1cbiAgZnVuIH5jb252IH5sb2dhbmQgfm1hc2sgeCAtPiBjb252IChsb2dhbmQgeCBtYXNrKVxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBleG5fdW5zaWduZWRcbiAgOiB0eXBlIGEgYi5cbiAgICBjb252OihhIC0+IGIpXG4gICAgLT4gbG9nYW5kOihhIC0+IGEgLT4gYSlcbiAgICAtPiBtYXNrOmFcbiAgICAtPiBlcXVhbDooYSAtPiBhIC0+IGJvb2wpXG4gICAgLT4gbW9kX25hbWU6c3RyaW5nXG4gICAgLT4gdG9fc3RyaW5nOihhIC0+IHN0cmluZylcbiAgICAtPiBhXG4gICAgLT4gYlxuICA9XG4gIGZ1biB+Y29udiB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4IC0+XG4gIGxldCB5ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBpblxuICBpZiBlcXVhbCB4IHkgdGhlbiBjb252IHkgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IHRydW5jX3NpZ25lZFxuICA6IHR5cGUgYS5cbiAgICBzaGlmdF9sZWZ0OihhIC0+IGludCAtPiBhKSAtPiBzaGlmdF9yaWdodDooYSAtPiBpbnQgLT4gYSkgLT4gc2hpZnQ6aW50IC0+IGEgLT4gYVxuICA9XG4gIGZ1biB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggLT4gc2hpZnRfcmlnaHQgKHNoaWZ0X2xlZnQgeCBzaGlmdCkgc2hpZnRcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgZXhuX3NpZ25lZFxuICA6IHR5cGUgYS5cbiAgICBzaGlmdF9sZWZ0OihhIC0+IGludCAtPiBhKVxuICAgIC0+IHNoaWZ0X3JpZ2h0OihhIC0+IGludCAtPiBhKVxuICAgIC0+IHNoaWZ0OmludFxuICAgIC0+IGVxdWFsOihhIC0+IGEgLT4gYm9vbClcbiAgICAtPiBtb2RfbmFtZTpzdHJpbmdcbiAgICAtPiB0b19zdHJpbmc6KGEgLT4gc3RyaW5nKVxuICAgIC0+IGFcbiAgICAtPiBhXG4gID1cbiAgZnVuIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggLT5cbiAgbGV0IHkgPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IGluXG4gIGlmIGVxdWFsIHggeSB0aGVuIHkgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG47O1xuXG5sZXQgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeCA9XG4gIGlmIGdyZWF0ZXJfZXF1YWwgeCB6ZXJvIHRoZW4geCBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgb2Zfc2V4cF9lcnJvciB3aGF0IHNleHAgPVxuICByYWlzZSAoU2V4cGxpYjAuU2V4cF9jb252Lk9mX3NleHBfZXJyb3IgKEZhaWx1cmUgd2hhdCwgc2V4cCkpXG47O1xuXG5tb2R1bGUgUmVwcjMyID0gc3RydWN0XG4gIGluY2x1ZGUgU3RkbGliLlN5cy5JbW1lZGlhdGU2NC5NYWtlIChCYXNlLkludCkgKEJhc2UuSW50MzIpXG5cbiAgbGV0IHRvX2ludDMyICh4IDogdCkgOiBCYXNlLkludDMyLnQgPVxuICAgIG1hdGNoIHJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IEJhc2UuSW50MzIub2ZfaW50X3RydW5jIHhcbiAgICB8IE5vbl9pbW1lZGlhdGUgLT4geFxuICA7O1xuXG4gICgqIHNpZ24tZXh0ZW5kaW5nIGNvbnZlcnNpb24gdG8gaW50NjQgKilcbiAgbGV0IHRvX2ludDY0ICh4IDogdCkgOiBCYXNlLkludDY0LnQgPVxuICAgIG1hdGNoIHJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IEJhc2UuSW50NjQub2ZfaW50IHhcbiAgICB8IE5vbl9pbW1lZGlhdGUgLT4gQmFzZS5JbnQ2NC5vZl9pbnQzMiB4XG4gIDs7XG5lbmRcblxuKCogSW50ZXJuYWwgcmVwcmVzZW50YXRpb24gdHlwZXMgKilcbnR5cGUgaW50OCA9IGludFxudHlwZSB1aW50OCA9IGludFxudHlwZSBpbnQxNiA9IGludFxudHlwZSB1aW50MTYgPSBpbnRcbnR5cGUgaW50MzIgPSBSZXByMzIudFxudHlwZSB1aW50MzIgPSBSZXByMzIudFxudHlwZSBpbnQ2MyA9IEJhc2UuSW50NjMudFxudHlwZSB1aW50NjMgPSBCYXNlLkludDYzLnRcbnR5cGUgaW50NjQgPSBCYXNlLkludDY0LnRcbnR5cGUgdWludDY0ID0gQmFzZS5JbnQ2NC50XG5cbm1vZHVsZSBJbnQ4ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gLTEyOFxuICBsZXQgbWF4X3ZhbHVlID0gMTI3XG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDhcbiAgbGV0IG51bV9ieXRlcyA9IDFcbiAgbGV0IHNoaWZ0X2xlZnQgPSBCYXNlLkludC5zaGlmdF9sZWZ0XG4gIGxldCBzaGlmdF9yaWdodCA9IEJhc2UuSW50LnNoaWZ0X3JpZ2h0XG4gIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgbGV0IG1vZF9uYW1lID0gXCJJbnQ4XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgdHJ1bmMgeCA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuIHggPSBleG5fc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDE2X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX2ludDMyX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgKFJlcHIzMi50b19pbnQzMiB4KSlcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X2V4biAoUmVwcjMyLnRvX2ludDMyIHgpKSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDYzLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4gKEJhc2UuSW50NjMudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4gKEJhc2UuSW50NjQudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50OF93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50OF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gIGxldCBtYXhfdmFsdWUgPSAyNTVcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDhcbiAgbGV0IG51bV9ieXRlcyA9IDFcbiAgbGV0IGNvbnYgPSBCYXNlLkludDY0LnRvX2ludF90cnVuY1xuICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgbGV0IGxvZ2FuZDY0ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKVxuICBsZXQgbWFzayA9IDB4RkZcbiAgbGV0IG1hc2s2NCA9IEJhc2UuSW50NjQub2ZfaW50IG1hc2tcbiAgbGV0IGVxdWFsID0gQmFzZS5JbnQuZXF1YWxcbiAgbGV0IGVxdWFsNjQgPSBCYXNlLkludDY0LmVxdWFsXG4gIGxldCBtb2RfbmFtZSA9IFwiVWludDhcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gIGxldCB0b19zdHJpbmc2NCA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl91bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCB0cnVuYzY0IHggPSB0cnVuY191bnNpZ25lZCB+Y29udiB+bG9nYW5kOmxvZ2FuZDY0IH5tYXNrOm1hc2s2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4bjY0IHggPVxuICAgIGV4bl91bnNpZ25lZFxuICAgICAgfmNvbnZcbiAgICAgIH5sb2dhbmQ6bG9nYW5kNjRcbiAgICAgIH5tYXNrOm1hc2s2NFxuICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgIH5tb2RfbmFtZVxuICAgICAgfnRvX3N0cmluZzp0b19zdHJpbmc2NFxuICAgICAgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDE2X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTZfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX3RydW5jIHggPSB0cnVuYzY0IChSZXByMzIudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMl9leG4geCA9IGV4bjY0IChSZXByMzIudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2M190cnVuYyB4ID0gdHJ1bmM2NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX2V4biB4ID0gZXhuNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfZXhuIHggPSBleG42NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDhfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50OF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgSW50MTYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSAtMzI3NjhcbiAgbGV0IG1heF92YWx1ZSA9IDMyNzY3XG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDE2XG4gIGxldCBudW1fYnl0ZXMgPSAyXG4gIGxldCBzaGlmdF9sZWZ0ID0gQmFzZS5JbnQuc2hpZnRfbGVmdFxuICBsZXQgc2hpZnRfcmlnaHQgPSBCYXNlLkludC5zaGlmdF9yaWdodFxuICBsZXQgc2hpZnQgPSBCYXNlLkludC5udW1fYml0cyAtIG51bV9iaXRzXG4gIGxldCBtb2RfbmFtZSA9IFwiSW50MTZcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl9zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50OCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl9pbnQzMl90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50MzIudG9faW50X3RydW5jIChSZXByMzIudG9faW50MzIgeCkpXG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IG9mX2ludDMyX2V4biB4ID0gZXhuIChCYXNlLkludDMyLnRvX2ludF9leG4gKFJlcHIzMi50b19pbnQzMiB4KSkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2My50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIChCYXNlLkludDYzLnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIChCYXNlLkludDY0LnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDE2X3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDE2ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gNjU1MzVcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDE2XG4gIGxldCBudW1fYnl0ZXMgPSAyXG4gIGxldCBjb252ID0gQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmNcbiAgbGV0IGxvZ2FuZCA9IEJhc2UuSW50LiggbGFuZCApXG4gIGxldCBsb2dhbmQ2NCA9IEJhc2UuSW50NjQuKCBsYW5kIClcbiAgbGV0IG1hc2sgPSAweEZGRkZcbiAgbGV0IG1hc2s2NCA9IEJhc2UuSW50NjQub2ZfaW50IG1hc2tcbiAgbGV0IGVxdWFsID0gQmFzZS5JbnQuZXF1YWxcbiAgbGV0IGVxdWFsNjQgPSBCYXNlLkludDY0LmVxdWFsXG4gIGxldCBtb2RfbmFtZSA9IFwiVWludDE2XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuICBsZXQgdG9fc3RyaW5nNjQgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgdHJ1bmMgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuIHggPSBleG5fdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgdHJ1bmM2NCB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnYgfmxvZ2FuZDpsb2dhbmQ2NCB+bWFzazptYXNrNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG42NCB4ID1cbiAgICBleG5fdW5zaWduZWRcbiAgICAgIH5jb252XG4gICAgICB+bG9nYW5kOmxvZ2FuZDY0XG4gICAgICB+bWFzazptYXNrNjRcbiAgICAgIH5lcXVhbDplcXVhbDY0XG4gICAgICB+bW9kX25hbWVcbiAgICAgIH50b19zdHJpbmc6dG9fc3RyaW5nNjRcbiAgICAgIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfdHJ1bmMgeCA9IHRydW5jNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX2V4biB4ID0gZXhuNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfZXhuIHggPSBleG42NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50MTZfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MTZfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgQmFja2VuZDMyX1MgPSBzaWdcbiAgbW9kdWxlIFNpZ25lZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFJlcHIzMi50XG5cbiAgICBpbmNsdWRlIFQgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2Jhc2VfaW50MzIgOiBCYXNlLkludDMyLnQgLT4gdFxuICAgIHZhbCB0b19iYXNlX2ludDMyIDogdCAtPiBCYXNlLkludDMyLnRcblxuICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfaW50OCA6IGludDggLT4gdFxuICAgIHZhbCBvZl9pbnQxNiA6IGludDE2IC0+IHRcbiAgICB2YWwgb2ZfaW50NjNfdHJ1bmMgOiBpbnQ2MyAtPiB0XG4gICAgdmFsIG9mX2ludDYzX2V4biA6IGludDYzIC0+IHRcbiAgICB2YWwgb2ZfaW50NjRfdHJ1bmMgOiBpbnQ2NCAtPiB0XG4gICAgdmFsIG9mX2ludDY0X2V4biA6IGludDY0IC0+IHRcblxuICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX3VpbnQzMl93cmFwIDogdWludDMyIC0+IHRcbiAgICB2YWwgb2ZfdWludDMyX2V4biA6IHVpbnQzMiAtPiB0XG4gIGVuZFxuXG4gIG1vZHVsZSBVbnNpZ25lZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFJlcHIzMi50XG5cbiAgICBpbmNsdWRlIFQgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2Jhc2VfaW50MzJfdHJ1bmMgOiBCYXNlLkludDMyLnQgLT4gdFxuICAgIHZhbCBvZl9iYXNlX2ludDMyX2V4biA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50MzJfdHJ1bmMgOiB0IC0+IEJhc2UuSW50MzIudFxuICAgIHZhbCB0b19iYXNlX2ludDMyX2V4biA6IHQgLT4gQmFzZS5JbnQzMi50XG4gICAgdmFsIG9mX2Jhc2VfaW50NjRfdHJ1bmMgOiBCYXNlLkludDY0LnQgLT4gdFxuICAgIHZhbCBvZl9iYXNlX2ludDY0X2V4biA6IEJhc2UuSW50NjQudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50NjQgOiB0IC0+IEJhc2UuSW50NjQudFxuICAgIHZhbCBvZl9iYXNlX2ludF9leG4gOiBCYXNlLkludC50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnRfZXhuIDogdCAtPiBCYXNlLkludC50XG5cbiAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX3VpbnQ4IDogdWludDggLT4gdFxuICAgIHZhbCBvZl91aW50MTYgOiB1aW50MTYgLT4gdFxuICAgIHZhbCBvZl91aW50NjNfdHJ1bmMgOiB1aW50NjMgLT4gdFxuICAgIHZhbCBvZl91aW50NjNfZXhuIDogdWludDYzIC0+IHRcbiAgICB2YWwgb2ZfdWludDY0X3RydW5jIDogdWludDY0IC0+IHRcbiAgICB2YWwgb2ZfdWludDY0X2V4biA6IHVpbnQ2NCAtPiB0XG5cbiAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl9pbnQzMl93cmFwIDogaW50MzIgLT4gdFxuICAgIHZhbCBvZl9pbnQzMl9leG4gOiBpbnQzMiAtPiB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBCYWNrZW5kMzIgOiBzaWdcbiAgdmFsIGltcGwgOiAobW9kdWxlIEJhY2tlbmQzMl9TKVxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBJID0gc3RydWN0XG4gICAgbW9kdWxlIFNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgICAgIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDMyLnRvX2ludF90cnVuYyBCYXNlLkludDMyLm1pbl92YWx1ZVxuICAgICAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50MzIudG9faW50X3RydW5jIEJhc2UuSW50MzIubWF4X3ZhbHVlXG4gICAgICBsZXQgc2lnbmVkID0gdHJ1ZVxuICAgICAgbGV0IG51bV9iaXRzID0gMzJcbiAgICAgIGxldCBudW1fYnl0ZXMgPSA0XG4gICAgICBsZXQgc2hpZnRfbGVmdCA9IEJhc2UuSW50LnNoaWZ0X2xlZnRcbiAgICAgIGxldCBzaGlmdF9yaWdodCA9IEJhc2UuSW50LnNoaWZ0X3JpZ2h0XG4gICAgICBsZXQgc2hpZnQgPSBCYXNlLkludC5udW1fYml0cyAtIG51bV9iaXRzXG4gICAgICBsZXQgbW9kX25hbWUgPSBcIkludDMyXCJcbiAgICAgIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcblxuICAgICAgKCogVXRpbGl0aWVzICopXG4gICAgICBsZXQgdHJ1bmMgeCA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IGV4biB4ID0gZXhuX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMiB4ID0gQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzIgeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDggeCA9ICh4IDogSW50OC50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQxNiB4ID0gKHggOiBJbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjMudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4gKEJhc2UuSW50NjMudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biAoQmFzZS5JbnQ2NC50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDMyX3dyYXAgeCA9IHRydW5jIHhcbiAgICAgIGxldCBvZl91aW50MzJfZXhuIHggPSBleG4geFxuXG4gICAgICAoKiBNaXNjZWxsYW5lb3VzICopXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICAgICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICAgICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICAgICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICAgICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVW5zaWduZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICAgICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICAgICAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQuemVyb1xuICAgICAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50Lm9mX2ludDY0X3RydW5jIDQyOTQ5NjcyOTVMXG4gICAgICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IGNvbnYgPSBCYXNlLkludDY0LnRvX2ludF90cnVuY1xuICAgICAgbGV0IGxvZ2FuZCA9IEJhc2UuSW50LiggbGFuZCApXG4gICAgICBsZXQgbG9nYW5kNjQgPSBCYXNlLkludDY0LiggbGFuZCApXG4gICAgICBsZXQgbWFzayA9IEJhc2UuSW50NjQudG9faW50X3RydW5jIDB4RkZGRkZGRkZMXG4gICAgICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICAgICAgbGV0IGVxdWFsID0gQmFzZS5JbnQuZXF1YWxcbiAgICAgIGxldCBlcXVhbDY0ID0gQmFzZS5JbnQ2NC5lcXVhbFxuICAgICAgbGV0IG1vZF9uYW1lID0gXCJVaW50MzJcIlxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZzY0ID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAgICAgKCogVXRpbGl0aWVzICopXG4gICAgICBsZXQgdHJ1bmMgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IGV4biB4ID0gZXhuX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRydW5jNjQgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252IH5sb2dhbmQ6bG9nYW5kNjQgfm1hc2s6bWFzazY0IHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgZXhuNjQgeCA9XG4gICAgICAgIGV4bl91bnNpZ25lZFxuICAgICAgICAgIH5jb252XG4gICAgICAgICAgfmxvZ2FuZDpsb2dhbmQ2NFxuICAgICAgICAgIH5tYXNrOm1hc2s2NFxuICAgICAgICAgIH5lcXVhbDplcXVhbDY0XG4gICAgICAgICAgfm1vZF9uYW1lXG4gICAgICAgICAgfnRvX3N0cmluZzp0b19zdHJpbmc2NFxuICAgICAgICAgIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX3RydW5jIHggPVxuICAgICAgICBCYXNlLkludDY0LnRvX2ludF90cnVuYyAobG9nYW5kNjQgKEJhc2UuSW50NjQub2ZfaW50MzIgeCkgbWFzazY0KVxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX2V4biB4ID0gZXhuIChCYXNlLkludDMyLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfdHJ1bmMgeCA9IEJhc2UuSW50LnRvX2ludDMyX3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfZXhuIHggPVxuICAgICAgICBpZiBCYXNlLkludC4oIDw9ICkgeCAoQmFzZS5JbnQub2ZfaW50NjRfdHJ1bmMgMjE0NzQ4MzY0N0wpXG4gICAgICAgIHRoZW4gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgeFxuICAgICAgICBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nOkJhc2UuSW50LnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPSBleG42NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQ2NCB4ID0gQmFzZS5JbnQudG9faW50NjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludF9leG4geCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQ4IHggPSAoeCA6IFVpbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQxNiB4ID0gKHggOiBVaW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDYzX2V4biB4ID0gZXhuNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQzMl93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBNaXNjZWxsYW5lb3VzICopXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICAgICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICAgICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICAgICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICAgICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBOID0gc3RydWN0XG4gICAgbW9kdWxlIFNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQzMi50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDMyXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50MzJcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDMyXG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIubWluX3ZhbHVlXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQzMi5tYXhfdmFsdWVcbiAgICAgIGxldCBzaWduZWQgPSB0cnVlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiSW50MzJcIlxuICAgICAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDMyLiggPj0gKVxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50MzIudG9fc3RyaW5nXG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzIgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDMyIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQ4IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IEludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50MTYgeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogSW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IEJhc2UuSW50NjMudG9faW50MzJfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX2V4biB4ID0gQmFzZS5JbnQ2My50b19pbnQzMl9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X3RydW5jIHggPSBCYXNlLkludDY0LnRvX2ludDMyX3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2NF9leG4geCA9IEJhc2UuSW50NjQudG9faW50MzJfZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50MzJfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfdWludDMyX2V4biB4IDogdCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQzMi4oID49IClcbiAgICAgICAgbGV0ICggPD0gKSA9IEJhc2UuSW50MzIuKCA8PSApXG4gICAgICAgIGxldCAoID0gKSA9IEJhc2UuSW50MzIuKCA9IClcbiAgICAgICAgbGV0ICggPiApID0gQmFzZS5JbnQzMi4oID4gKVxuICAgICAgICBsZXQgKCA8ICkgPSBCYXNlLkludDMyLiggPCApXG4gICAgICAgIGxldCAoIDw+ICkgPSBCYXNlLkludDMyLiggPD4gKVxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQzMi4oICsgKVxuICAgICAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50MzIuKCAtIClcbiAgICAgICAgICBsZXQgKCAqICkgPSBCYXNlLkludDMyLiggKiApXG4gICAgICAgICAgbGV0ICggLyApID0gQmFzZS5JbnQzMi4oIC8gKVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFVuc2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludDMyLnQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQzMlxuICAgICAgbGV0IGNvbXBhcmUgeCB5ID0gU3RkbGliLkludDMyLnVuc2lnbmVkX2NvbXBhcmUgeCB5IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50MzJcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDMyXG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1heF92YWx1ZSA9IC0xbFxuICAgICAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiVWludDMyXCJcbiAgICAgIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQzMi4oID49IClcbiAgICAgIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDMyLnRvX3N0cmluZ1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSBCYXNlLkludDMyLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPVxuICAgICAgICBpZiBCYXNlLkludDY0LiggPj0gKSB4IDBMICYmIEJhc2UuSW50NjQuKCA8PSApIHggNDI5NDk2NzI5NUxcbiAgICAgICAgdGhlbiBCYXNlLkludDY0LnRvX2ludDMyX3RydW5jIHhcbiAgICAgICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2Jhc2VfaW50NjQgeCA9IEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50MzIudG9faW50NjQgeCkgMHhGRkZGRkZGRkxcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPVxuICAgICAgICBCYXNlLkludDMyLm9mX2ludF9leG4geFxuICAgICAgICB8PiBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZ1xuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19iYXNlX2ludF9leG4geCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgICAgfD4gQmFzZS5JbnQzMi50b19pbnRfZXhuXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQ4IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IFVpbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQxNiB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgKHggOiBVaW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IG9mX2Jhc2VfaW50NjRfdHJ1bmMgKEJhc2UuSW50NjMudG9faW50NjQgeClcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfdWludDYzX2V4biB4ID0gb2ZfYmFzZV9pbnQ2NF9leG4gKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IG9mX2Jhc2VfaW50NjRfZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQzMl93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl9pbnQzMl9leG4geCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBTZXhwIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IHNleHBfb2ZfdCB4ID0gQmFzZS5TZXhwLkF0b20gKFN0ZGxpYi5QcmludGYuc3ByaW50ZiBcIiVsdVwiIHgpXG5cbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICB8IEJhc2UuU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQzMi50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgICAgICB8IEJhc2UuU2V4cC5BdG9tIHMgLT5cbiAgICAgICAgICAodHJ5IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIiVsdVwiIEZ1bi5pZCB3aXRoXG4gICAgICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDMyLnRfb2Zfc2V4cDogaW50ZWdlciBhdG9tIG5lZWRlZFwiIHNleHApXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApIHggeSA9IGNvbXBhcmUgeCB5ID49IDBcbiAgICAgICAgbGV0ICggPD0gKSB4IHkgPSBjb21wYXJlIHggeSA8PSAwXG4gICAgICAgIGxldCAoID0gKSB4IHkgPSBjb21wYXJlIHggeSA9IDBcbiAgICAgICAgbGV0ICggPiApIHggeSA9IGNvbXBhcmUgeCB5ID4gMFxuICAgICAgICBsZXQgKCA8ICkgeCB5ID0gY29tcGFyZSB4IHkgPCAwXG4gICAgICAgIGxldCAoIDw+ICkgeCB5ID0gY29tcGFyZSB4IHkgPD4gMFxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQzMi4oICsgKVxuICAgICAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50MzIuKCAtIClcbiAgICAgICAgICBsZXQgKCAqICkgPSBCYXNlLkludDMyLiggKiApXG4gICAgICAgICAgbGV0ICggLyApID0gU3RkbGliLkludDMyLnVuc2lnbmVkX2RpdlxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGltcGwgOiAobW9kdWxlIEJhY2tlbmQzMl9TKSA9XG4gICAgbWF0Y2ggUmVwcjMyLnJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IChtb2R1bGUgSSA6IEJhY2tlbmQzMl9TKVxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiAobW9kdWxlIE4gOiBCYWNrZW5kMzJfUylcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW50MzIgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSAodmFsIEJhY2tlbmQzMi5pbXBsIDogQmFja2VuZDMyX1MpXG4gIGluY2x1ZGUgTS5TaWduZWRcbmVuZFxuXG5tb2R1bGUgVWludDMyID0gc3RydWN0XG4gIG1vZHVsZSBNID0gKHZhbCBCYWNrZW5kMzIuaW1wbCA6IEJhY2tlbmQzMl9TKVxuICBpbmNsdWRlIE0uVW5zaWduZWRcbmVuZFxuXG5tb2R1bGUgSW50NjMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2My50IFtAQGltbWVkaWF0ZTY0XSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfdW5pZm9ybVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2M1xuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2M1xuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjNcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjNcbiAgbGV0IHplcm8gPSBCYXNlLkludDYzLnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjMubWluX3ZhbHVlXG4gIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDYzLm1heF92YWx1ZVxuICBsZXQgc2lnbmVkID0gdHJ1ZVxuICBsZXQgbnVtX2JpdHMgPSA2M1xuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgbW9kX25hbWUgPSBcIkludDYzXCJcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDYzLiggPj0gKVxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2My50b19zdHJpbmdcblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MzIgeCA9IEJhc2UuSW50NjMub2ZfaW50MzIgKEludDMyLnRvX2Jhc2VfaW50MzIgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X3RydW5jIHggPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X2V4biB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50NjNfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjNfZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQ2My4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQ2My4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludDYzLiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQ2My4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50NjMuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQ2My4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDYzLiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDYzLiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDYzLiggKiApXG4gICAgICBsZXQgKCAvICkgPSBCYXNlLkludDYzLiggLyApXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50NjMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2My50IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfdW5pZm9ybVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2M1xuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2M1xuXG4gIGxldCBjb21wYXJlIHggeSA9XG4gICAgKCogeCBhbmQgeSBhcmUgc2lnbi1leHRlbmRlZCwgd2hpY2ggcHJlc2VydmVzIHRoZSBoaWdoIGJpdCAqKVxuICAgIFN0ZGxpYi5JbnQ2NC51bnNpZ25lZF9jb21wYXJlIChCYXNlLkludDYzLnRvX2ludDY0IHgpIChCYXNlLkludDYzLnRvX2ludDY0IHkpXG4gIDs7XG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDYzXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDYzXG4gIGxldCB6ZXJvID0gQmFzZS5JbnQ2My56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDYzLnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDYzXG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQ2My4oID49IClcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50NjNcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2My50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IGV4biB4ID0gaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPVxuICAgIGlmIEJhc2UuSW50NjQuKCA+PSApIHggMExcbiAgICB0aGVuIEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeFxuICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQ2NC50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCB0b19iYXNlX2ludDY0IHggPSBCYXNlLkludDY0LiggbGFuZCApIChCYXNlLkludDYzLnRvX2ludDY0IHgpIDB4N0ZGRkZGRkZGRkZGRkZGRkxcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50OCB4ID0gQmFzZS5JbnQ2My5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDE2IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzIgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgKFVpbnQzMi50b19iYXNlX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjRfZXhuICh4IDogdWludDY0KSA6IHQgPVxuICAgIGlmIEJhc2UuSW50NjQuKCA+PSApIHggMExcbiAgICB0aGVuIEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeFxuICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQ2NC50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ2M193cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2V4cCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IHNleHBfb2ZfdCB4ID0gQmFzZS5TZXhwLkF0b20gKFN0ZGxpYi5QcmludGYuc3ByaW50ZiBcIiVMdVwiICh0b19iYXNlX2ludDY0IHgpKVxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBCYXNlLlNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjMudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICB8IEJhc2UuU2V4cC5BdG9tIHMgLT5cbiAgICAgICh0cnkgU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJUx1XCIgb2ZfYmFzZV9pbnQ2NF9leG4gd2l0aFxuICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDYzLnRfb2Zfc2V4cDogaW50ZWdlciBhdG9tIG5lZWRlZFwiIHNleHApXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApIHggeSA9IGNvbXBhcmUgeCB5ID49IDBcbiAgICBsZXQgKCA8PSApIHggeSA9IGNvbXBhcmUgeCB5IDw9IDBcbiAgICBsZXQgKCA9ICkgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG4gICAgbGV0ICggPiApIHggeSA9IGNvbXBhcmUgeCB5ID4gMFxuICAgIGxldCAoIDwgKSB4IHkgPSBjb21wYXJlIHggeSA8IDBcbiAgICBsZXQgKCA8PiApIHggeSA9IGNvbXBhcmUgeCB5IDw+IDBcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDYzLiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDYzLiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDYzLiggKiApXG5cbiAgICAgIGxldCAoIC8gKSB4IHkgPVxuICAgICAgICBvZl9iYXNlX2ludDY0X3RydW5jIChCYXNlLkludDY0LiggLyApICh0b19iYXNlX2ludDY0IHgpICh0b19iYXNlX2ludDY0IHkpKVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgSW50NjQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2NC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDY0XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQ2NFxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjRcbiAgbGV0IHplcm8gPSBCYXNlLkludDY0Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjQubWluX3ZhbHVlXG4gIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDY0Lm1heF92YWx1ZVxuICBsZXQgc2lnbmVkID0gdHJ1ZVxuICBsZXQgbnVtX2JpdHMgPSA2NFxuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgbW9kX25hbWUgPSBcIkludDY0XCJcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDY0LiggPj0gKVxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNiB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MzIgeCA9IEJhc2UuSW50NjQub2ZfaW50MzIgKEludDMyLnRvX2Jhc2VfaW50MzIgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzIHggPSBCYXNlLkludDYzLnRvX2ludDY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDY0X3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfdWludDY0X2V4biB4ID0gaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50NjQuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50NjQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQ2NC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50NjQuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludDY0LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50NjQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQ2NC4oICsgKVxuICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQ2NC4oIC0gKVxuICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQ2NC4oICogKVxuICAgICAgbGV0ICggLyApID0gQmFzZS5JbnQ2NC4oIC8gKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDY0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjQudCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaF1cblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDY0XG4gIGxldCBjb21wYXJlID0gU3RkbGliLkludDY0LnVuc2lnbmVkX2NvbXBhcmVcbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDY0XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDY0XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQ2NC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDY0Lnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IC0xTFxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gNjRcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDY0LiggPj0gKVxuICBsZXQgbW9kX25hbWUgPSBcIlVpbnQ2NFwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludDY0X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50NjRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTYgeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMiB4ID0gVWludDMyLnRvX2Jhc2VfaW50NjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjMgKHggOiB1aW50NjMpIDogaW50NjQgPVxuICAgIEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50NjMudG9faW50NjQgeCkgMHg3RkZGRkZGRkZGRkZGRkZGTFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ2NF93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2V4cCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IHNleHBfb2ZfdCB4ID0gQmFzZS5TZXhwLkF0b20gKFN0ZGxpYi5QcmludGYuc3ByaW50ZiBcIiVMdVwiIHgpXG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEJhc2UuU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2NC50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIlTHVcIiBGdW4uaWQgd2l0aFxuICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDY0LnRfb2Zfc2V4cDogaW50ZWdlciBhdG9tIG5lZWRlZFwiIHNleHApXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApIHggeSA9IGNvbXBhcmUgeCB5ID49IDBcbiAgICBsZXQgKCA8PSApIHggeSA9IGNvbXBhcmUgeCB5IDw9IDBcbiAgICBsZXQgKCA9ICkgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG4gICAgbGV0ICggPiApIHggeSA9IGNvbXBhcmUgeCB5ID4gMFxuICAgIGxldCAoIDwgKSB4IHkgPSBjb21wYXJlIHggeSA8IDBcbiAgICBsZXQgKCA8PiApIHggeSA9IGNvbXBhcmUgeCB5IDw+IDBcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDY0LiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDY0LiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDY0LiggKiApXG4gICAgICBsZXQgKCAvICkgPSBTdGRsaWIuSW50NjQudW5zaWduZWRfZGl2XG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIHR5cGUgR2V0ID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqIDgtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDggOiB0IC0+IHBvczppbnQgLT4gaW50OFxuXG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDggOiB0IC0+IHBvczppbnQgLT4gdWludDhcblxuICAoKiAxNi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50MTZfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MTZcbiAgdmFsIGdldF9pbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNlxuXG4gICgqIDE2LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTZcbiAgdmFsIGdldF91aW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDE2XG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDMyX2xlIDogdCAtPiBwb3M6aW50IC0+IGludDMyXG4gIHZhbCBnZXRfaW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MzJcblxuICAoKiAzMi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyXG4gIHZhbCBnZXRfdWludDMyX2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQzMlxuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NFxuICB2YWwgZ2V0X2ludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDY0XG5cbiAgKCogNjQtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NFxuICB2YWwgZ2V0X3VpbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXQgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfaW50OCA6IHQgLT4gcG9zOmludCAtPiBpbnQ4IC0+IHVuaXRcblxuICAoKiA4LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQ4IDogdCAtPiBwb3M6aW50IC0+IHVpbnQ4IC0+IHVuaXRcblxuICAoKiAxNi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfaW50MTZfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MTYgLT4gdW5pdFxuICB2YWwgc2V0X2ludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDE2IC0+IHVuaXRcblxuICAoKiAxNi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF91aW50MTZfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDE2IC0+IHVuaXRcbiAgdmFsIHNldF91aW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDE2IC0+IHVuaXRcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfaW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MzIgLT4gdW5pdFxuICB2YWwgc2V0X2ludDMyX2JlIDogdCAtPiBwb3M6aW50IC0+IGludDMyIC0+IHVuaXRcblxuICAoKiAzMi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF91aW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyIC0+IHVuaXRcbiAgdmFsIHNldF91aW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyIC0+IHVuaXRcblxuICAoKiA2NC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfaW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50NjQgLT4gdW5pdFxuICB2YWwgc2V0X2ludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDY0IC0+IHVuaXRcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF91aW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0IC0+IHVuaXRcbiAgdmFsIHNldF91aW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBHZXRfZnVuY3Rpb25zID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG11c3QgdXNlIG5hdGl2ZSBlbmRpYW5uZXNzIChoZW5jZSB0aGUgYF9uZWAgc3VmZml4KS4gKilcbiAgdmFsIGdldF91aW50OCA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnRcbiAgdmFsIGdldF91aW50MTZfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludC50XG4gIHZhbCBnZXRfaW50MzJfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDMyLnRcbiAgdmFsIGdldF9pbnQ2NF9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50NjQudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNldF9mdW5jdGlvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbXVzdCB1c2UgbmF0aXZlIGVuZGlhbm5lc3MgKGhlbmNlIHRoZSBgX25lYCBzdWZmaXgpLiAqKVxuICB2YWwgc2V0X3VpbnQ4IDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudCAtPiB1bml0XG4gIHZhbCBzZXRfdWludDE2X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudCAtPiB1bml0XG4gIHZhbCBzZXRfaW50MzJfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDMyLnQgLT4gdW5pdFxuICB2YWwgc2V0X2ludDY0X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQ2NC50IC0+IHVuaXRcbmVuZFxuXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBTdGRsaWIuSW50MzIudCAtPiBTdGRsaWIuSW50MzIudCA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IFN0ZGxpYi5JbnQ2NC50IC0+IFN0ZGxpYi5JbnQ2NC50ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5tb2R1bGUgTWFrZV9nZXQgKEYgOiBHZXRfZnVuY3Rpb25zKSA6IEdldCB3aXRoIHR5cGUgdCA6PSBGLnQgPSBzdHJ1Y3RcbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfaW50OCB0IH5wb3MgPSBJbnQ4Lm9mX2Jhc2VfaW50X3RydW5jIChGLmdldF91aW50OCB0IHBvcylcblxuICAoKiA4LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQ4IHQgfnBvcyA9IFVpbnQ4Lm9mX2Jhc2VfaW50X3RydW5jIChGLmdldF91aW50OCB0IHBvcylcblxuICAoKiAxNi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfaW50MTZfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIEludDE2Lm9mX2Jhc2VfaW50X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X2ludDE2X2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF91aW50MTZfbmUgdCBwb3MgaW5cbiAgICBJbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG4gIDs7XG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDE2X2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF91aW50MTZfbmUgdCBwb3MgaW5cbiAgICBVaW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfdWludDE2X2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF91aW50MTZfbmUgdCBwb3MgaW5cbiAgICBVaW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAxNiB4KVxuICA7O1xuXG4gICgqIDMyLWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQzMl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBJbnQzMi5vZl9iYXNlX2ludDMyIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X2ludDMyX2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIEludDMyLm9mX2Jhc2VfaW50MzIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuICA7O1xuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQzMl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBVaW50MzIub2ZfYmFzZV9pbnQzMl90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50MzJfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDMyX25lIHQgcG9zIGluXG4gICAgVWludDMyLm9mX2Jhc2VfaW50MzJfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuICA7O1xuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQ2NF9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeFxuICA7O1xuXG4gIGxldCBnZXRfaW50NjRfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHhcbiAgOztcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF91aW50NjRfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgVWludDY0Lm9mX2Jhc2VfaW50NjRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfdWludDY0X2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQ2NF9uZSB0IHBvcyBpblxuICAgIFVpbnQ2NC5vZl9iYXNlX2ludDY0X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeClcbiAgOztcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIE1ha2Vfc2V0IChGIDogU2V0X2Z1bmN0aW9ucykgOiBTZXQgd2l0aCB0eXBlIHQgOj0gRi50ID0gc3RydWN0XG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDggdCB+cG9zIHggPSBGLnNldF91aW50OCB0IHBvcyB4XG5cbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50OCB0IH5wb3MgeCA9IHNldF91aW50OCB0IH5wb3MgKFVpbnQ4Lm9mX2ludDhfd3JhcCB4KVxuXG4gICgqIDE2LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQxNl9sZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeCBpblxuICAgIEYuc2V0X3VpbnQxNl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgbGV0IHNldF91aW50MTZfYmUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHggaW5cbiAgICBGLnNldF91aW50MTZfbmUgdCBwb3MgeFxuICA7O1xuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQxNl9sZSB0IH5wb3MgeCA9IHNldF91aW50MTZfbGUgdCB+cG9zIChVaW50MTYub2ZfaW50MTZfd3JhcCB4KVxuICBsZXQgc2V0X2ludDE2X2JlIHQgfnBvcyB4ID0gc2V0X3VpbnQxNl9iZSB0IH5wb3MgKFVpbnQxNi5vZl9pbnQxNl93cmFwIHgpXG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X2ludDMyX2xlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IEludDMyLnRvX2Jhc2VfaW50MzIgeCBpblxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHggaW5cbiAgICBGLnNldF9pbnQzMl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgbGV0IHNldF9pbnQzMl9iZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBJbnQzMi50b19iYXNlX2ludDMyIHggaW5cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4IGluXG4gICAgRi5zZXRfaW50MzJfbmUgdCBwb3MgeFxuICA7O1xuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQzMl9sZSB0IH5wb3MgeCA9IHNldF9pbnQzMl9sZSB0IH5wb3MgKEludDMyLm9mX3VpbnQzMl93cmFwIHgpXG4gIGxldCBzZXRfdWludDMyX2JlIHQgfnBvcyB4ID0gc2V0X2ludDMyX2JlIHQgfnBvcyAoSW50MzIub2ZfdWludDMyX3dyYXAgeClcblxuICAoKiA2NC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50NjRfbGUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHggaW5cbiAgICBGLnNldF9pbnQ2NF9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgbGV0IHNldF9pbnQ2NF9iZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeCBpblxuICAgIEYuc2V0X2ludDY0X25lIHQgcG9zIHhcbiAgOztcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF91aW50NjRfbGUgdCB+cG9zIHggPSBzZXRfaW50NjRfbGUgdCB+cG9zIChJbnQ2NC5vZl91aW50NjRfd3JhcCB4KVxuICBsZXQgc2V0X3VpbnQ2NF9iZSB0IH5wb3MgeCA9IHNldF9pbnQ2NF9iZSB0IH5wb3MgKEludDY0Lm9mX3VpbnQ2NF93cmFwIHgpXG5lbmRcbltAQGlubGluZSBhbHdheXNdXG5cbm1vZHVsZSBCeXRlczBVbnNhZmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQnl0ZXMudFxuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IEJ5dGVzLnQgLT4gaW50IC0+IGludCA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCBnZXRfdWludDE2X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNnVcIlxuICBleHRlcm5hbCBnZXRfaW50MzJfbmUgOiBCeXRlcy50IC0+IGludCAtPiBTdGRsaWIuSW50MzIudCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gU3RkbGliLkludDY0LnQgPSBcIiVjYW1sX2J5dGVzX2dldDY0dVwiXG4gIGV4dGVybmFsIHNldF91aW50OCA6IEJ5dGVzLnQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG4gIGV4dGVybmFsIHNldF91aW50MTZfbmUgOiBCeXRlcy50IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbiAgZXh0ZXJuYWwgc2V0X2ludDMyX25lIDogQnl0ZXMudCAtPiBpbnQgLT4gU3RkbGliLkludDMyLnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbiAgZXh0ZXJuYWwgc2V0X2ludDY0X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gU3RkbGliLkludDY0LnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmVuZFxuXG5tb2R1bGUgQnl0ZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dldCAoQnl0ZXMpXG4gIGluY2x1ZGUgTWFrZV9zZXQgKEJ5dGVzKVxuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfZ2V0IChCeXRlczBVbnNhZmUpXG4gICAgaW5jbHVkZSBNYWtlX3NldCAoQnl0ZXMwVW5zYWZlKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU3RyaW5nMCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBnZXRfdWludDE2X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogU3RyaW5nLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQzMi50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJcIlxuICBleHRlcm5hbCBnZXRfaW50NjRfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gU3RkbGliLkludDY0LnQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NFwiXG5lbmRcblxubW9kdWxlIFN0cmluZzBVbnNhZmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RyaW5nLnRcblxuICBleHRlcm5hbCBnZXRfdWludDggOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCBnZXRfdWludDE2X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2dVwiXG4gIGV4dGVybmFsIGdldF9pbnQzMl9uZSA6IFN0cmluZy50IC0+IGludCAtPiBTdGRsaWIuSW50MzIudCA9IFwiJWNhbWxfc3RyaW5nX2dldDMydVwiXG4gIGV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IFN0cmluZy50IC0+IGludCAtPiBTdGRsaWIuSW50NjQudCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0dVwiXG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2V0IChTdHJpbmcwKVxuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfZ2V0IChTdHJpbmcwVW5zYWZlKVxuICBlbmRcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgQmlnc3RyaW5nMCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgICggY2hhclxuICAgICwgU3RkbGliLkJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0XG4gICAgLCBTdGRsaWIuQmlnYXJyYXkuY19sYXlvdXQgKVxuICAgICAgU3RkbGliLkJpZ2FycmF5LkFycmF5MS50XG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIFN0ZGxpYi5CaWdhcnJheS5BcnJheTEudFxuXG4gIGV4dGVybmFsIGdldCA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuICBleHRlcm5hbCBzZXQgOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICA6ICAoKCdhLCAnYiwgJ2MpIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gaW50XG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5cbiAgZXh0ZXJuYWwgZGltIDogKCgnYSwgJ2IsICdjKSB0W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbmVuZFxuXG5pbmNsdWRlIEJpZ3N0cmluZzBcblxuZXh0ZXJuYWwgYXV4X2NyZWF0ZSA6IG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlczppbnQgLT4gc2l6ZTppbnQgLT4gdCA9IFwiYmlnc3RyaW5nX2FsbG9jXCJcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxuXG4oKiBPbmUgbmVlZHMgdG8gdXNlIFtDYW1sLlN5cy53b3JkX3NpemVdIHNvIHRoYXQgaXRzIHZhbHVlIGlzIGtub3duIGF0IGNvbXBpbGUtdGltZS4gKilcbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN0ZGxpYi5TeXMud29yZF9zaXplID0gNjRcbmxldCBhcmNoX2JpZ19lbmRpYW4gPSBTdGRsaWIuU3lzLmJpZ19lbmRpYW5cbmxldCBub3Rfb25fMzJiaXQgPSBTdGRsaWIuU3lzLndvcmRfc2l6ZSA+IDMyXG5cbmxldCBjcmVhdGUgP21heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyBzaXplID1cbiAgbGV0IG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyA9XG4gICAgT3B0aW9uLnZhbHVlIG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyB+ZGVmYXVsdDooLTEpXG4gIGluXG4gICgqIFRoaXMgY2hlY2sgaXMgaW1wb3J0YW50IGJlY2F1c2UgW2F1eF9jcmVhdGUgfnNpemU6KC0xKV0gcmFpc2VzIFtPdXRfb2ZfbWVtb3J5XSwgd2hpY2hcbiAgICAgY291bGQgYmUgY29uZnVzaW5nIGR1cmluZyBkZWJ1Z2dpbmcuICopXG4gIGlmIHNpemUgPCAwIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJjcmVhdGU6IHNpemUgPSAlZCA8IDBcIiBzaXplKTtcbiAgYXV4X2NyZWF0ZSB+bWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIH5zaXplXG47O1xuXG5sZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG5leHRlcm5hbCBpc19tbWFwcGVkIDogdCAtPiBib29sID0gXCJiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViXCIgW0BAbm9hbGxvY11cblxubGV0IGluaXQgbiB+ZiA9XG4gIGxldCB0ID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdC57aX0gPC0gZiBpXG4gIGRvbmU7XG4gIHRcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSBjaGVja19hcmdzX3Nsb3cgfmxvYyB+cG9zIH5sZW4gKGJzdHIgOiB0KSA9XG4gIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyAobG9jIF4gXCI6IHBvcyA8IDBcIik7XG4gIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyAobG9jIF4gXCI6IGxlbiA8IDBcIik7XG4gIGxldCBic3RyX2xlbiA9IGxlbmd0aCBic3RyIGluXG4gICgqIEJlIGNhcmVmdWwgd2l0aCBvdmVyZmxvdyEgIFdlIGNvdWxkIGhhdmUgYm9nb25zIGxpa2UgW3BvcyA9IEludC5tYXhfdmFsdWVdIG9yIFtsZW4gPVxuICAgICBJbnQubWF4X3ZhbHVlXSBwYXNzZWQgYnkgdGhlIHVzZXIuICopXG4gIGlmIGJzdHJfbGVuIC0gcG9zIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJCaWdzdHJpbmcuJXM6IGxlbmd0aChic3RyKSA8IHBvcyArIGxlblwiIGxvYylcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gY2hlY2tfYXJncyB+bG9jIH5wb3MgfmxlbiAoYnN0ciA6IHQpID1cbiAgbGV0IG9wZW4gQm9vbC5Ob25fc2hvcnRfY2lyY3VpdGluZyBpblxuICBsZXQgYnN0cl9sZW4gPSBsZW5ndGggYnN0ciBpblxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgYnN0cl9sZW4gLSBwb3MgPCBsZW4gdGhlbiBjaGVja19hcmdzX3Nsb3cgfmxvYyB+cG9zIH5sZW4gYnN0clxuOztcblxubGV0IGdldF9vcHRfbGVuIGJzdHIgfnBvcyA9IGZ1bmN0aW9uXG4gIHwgU29tZSBsZW4gLT4gbGVuXG4gIHwgTm9uZSAtPiBsZW5ndGggYnN0ciAtIHBvc1xuOztcblxuKCogQmxpdHRpbmcgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgOiAgc3JjOih0W0Bsb2NhbF9vcHRdKVxuICAtPiBzcmNfcG9zOmludFxuICAtPiBkc3Q6KHRbQGxvY2FsX29wdF0pXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmlnc3RyaW5nX2JsaXRfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG4oKiBFeHBvc2luZyB0aGUgZXh0ZXJuYWwgdmVyc2lvbiBvZiBnZXQvc2V0IHN1cHBvcnRzIGJldHRlciBpbmxpbmluZy4gKilcbmV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiB0IC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuZXh0ZXJuYWwgc2V0IDogdCAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuXG5tb2R1bGUgQmlnc3RyaW5nX3NlcXVlbmNlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5lbmRcblxubW9kdWxlIEJ5dGVzX3NlcXVlbmNlID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzXG5cbiAgbGV0IGNyZWF0ZSB+bGVuID0gQnl0ZXMuY3JlYXRlIGxlblxuICBsZXQgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoXG5lbmRcblxuaW5jbHVkZSBCbGl0Lk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgQmlnc3RyaW5nX3NlcXVlbmNlXG5cbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmQpXG5cbm1vZHVsZSBGcm9tX2J5dGVzID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKEJ5dGVzX3NlcXVlbmNlKVxuICAgIChzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzooYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDoodFtAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YlwiXG4gICAgICBbQEBub2FsbG9jXVxuXG4gICAgICBpbmNsdWRlIEJpZ3N0cmluZ19zZXF1ZW5jZVxuICAgIGVuZClcblxubW9kdWxlIFRvX2J5dGVzID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKEJpZ3N0cmluZ19zZXF1ZW5jZSlcbiAgICAoc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6KHRbQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDooYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWJcIlxuICAgICAgW0BAbm9hbGxvY11cblxuICAgICAgaW5jbHVkZSBCeXRlc19zZXF1ZW5jZVxuICAgIGVuZClcblxubW9kdWxlIEZyb21fc3RyaW5nID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzooc3RyaW5nW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6KHRbQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViXCJcbiAgICAgIFtAQG5vYWxsb2NdXG5cbiAgICAgIGluY2x1ZGUgQmlnc3RyaW5nX3NlcXVlbmNlXG4gICAgZW5kKVxuXG5tb2R1bGUgVG9fc3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgVG9fYnl0ZXNcbiAgaW5jbHVkZSBCbGl0Lk1ha2VfdG9fc3RyaW5nIChCaWdzdHJpbmcwKSAoVG9fYnl0ZXMpXG5lbmRcblxubGV0IG9mX3N0cmluZyA9IEZyb21fc3RyaW5nLnN1Ym9cbmxldCBvZl9ieXRlcyA9IEZyb21fYnl0ZXMuc3Vib1xubGV0IHRvX3N0cmluZyA9IFRvX3N0cmluZy5zdWJvXG5sZXQgdG9fYnl0ZXMgPSBUb19ieXRlcy5zdWJvXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG5sZXQgdF9vZl9zZXhwIDogU2V4cC50IC0+IHQgPSBmdW5jdGlvblxuICB8IEF0b20gc3RyIC0+IG9mX3N0cmluZyBzdHJcbiAgfCBMaXN0IF8gYXMgc2V4cCAtPlxuICAgIFNleHBsaWIwLlNleHBfY29udi5vZl9zZXhwX2Vycm9yIFwiYmlnc3RyaW5nX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGNvcHkgdCA6IHQgPSBzdWIgdCB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG5cbmxldCBjb25jYXQgPVxuICBsZXQgYXBwZW5kIH5zcmMgfmRzdCB+ZHN0X3Bvc19yZWYgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggc3JjIGluXG4gICAgbGV0IHNyY19wb3MgPSAwIGluXG4gICAgbGV0IGRzdF9wb3MgPSAhZHN0X3Bvc19yZWYgaW5cbiAgICBibGl0IH5kc3QgfmRzdF9wb3MgfnNyYyB+c3JjX3BvcyB+bGVuO1xuICAgIGRzdF9wb3NfcmVmIDo9IGRzdF9wb3MgKyBsZW5cbiAgaW5cbiAgZnVuID9zZXAgbGlzdCAtPlxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gY3JlYXRlIDBcbiAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgbGV0IGhlYWRfbGVuID0gbGVuZ3RoIGhlYWQgaW5cbiAgICAgIGxldCBzZXBfbGVuID0gT3B0aW9uLnZhbHVlX21hcCBzZXAgfmY6KGZ1biB0IC0+IGxlbmd0aCB0KSB+ZGVmYXVsdDowIGluXG4gICAgICBsZXQgdGFpbF9jb3VudCA9IExpc3QubGVuZ3RoIHRhaWwgaW5cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBoZWFkX2xlblxuICAgICAgICArIChzZXBfbGVuICogdGFpbF9jb3VudClcbiAgICAgICAgKyBMaXN0LnN1bSAobW9kdWxlIEludCkgdGFpbCB+ZjooZnVuIHQgLT4gbGVuZ3RoIHQpXG4gICAgICBpblxuICAgICAgbGV0IGRzdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICAgIGxldCBkc3RfcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgICBhcHBlbmQgfnNyYzpoZWFkIH5kc3QgfmRzdF9wb3NfcmVmO1xuICAgICAgTGlzdC5pdGVyIHRhaWwgfmY6KGZ1biBzcmMgLT5cbiAgICAgICAgKG1hdGNoIHNlcCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSBzZXAgLT4gYXBwZW5kIH5zcmM6c2VwIH5kc3QgfmRzdF9wb3NfcmVmKTtcbiAgICAgICAgYXBwZW5kIH5zcmMgfmRzdCB+ZHN0X3Bvc19yZWYpO1xuICAgICAgYXNzZXJ0ICghZHN0X3Bvc19yZWYgPSBsZW4pO1xuICAgICAgZHN0XG47O1xuXG5leHRlcm5hbCB1bnNhZmVfbWVtc2V0IDogdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gY2hhciAtPiB1bml0ID0gXCJiaWdzdHJpbmdfbWVtc2V0X3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IG1lbXNldCB0IH5wb3MgfmxlbiBjID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpO1xuICB1bnNhZmVfbWVtc2V0IHQgfnBvcyB+bGVuIGNcbjs7XG5cbigqIENvbXBhcmlzb24gKilcblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcFxuICA6ICB0XG4gIC0+IHBvczE6aW50XG4gIC0+IHRcbiAgLT4gcG9zMjppbnRcbiAgLT4gbGVuOmludFxuICAtPiBpbnRcbiAgPSBcImJpZ3N0cmluZ19tZW1jbXBfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgbWVtY21wIHQxIH5wb3MxIHQyIH5wb3MyIH5sZW4gPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3M6cG9zMSB+bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0MSk7XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvczpwb3MyIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQyKTtcbiAgdW5zYWZlX21lbWNtcCB0MSB+cG9zMSB0MiB+cG9zMiB+bGVuXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wX2J5dGVzXG4gIDogIHRcbiAgLT4gcG9zMTppbnRcbiAgLT4gQnl0ZXMudFxuICAtPiBwb3MyOmludFxuICAtPiBsZW46aW50XG4gIC0+IGludFxuICA9IFwiYmlnc3RyaW5nX21lbWNtcF9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBtZW1jbXBfYnl0ZXMgdDEgfnBvczEgYnl0ZXMgfnBvczIgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvczpwb3MxIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQxKTtcbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgIH5wb3M6cG9zMlxuICAgIH5sZW5cbiAgICB+dG90YWxfbGVuZ3RoOihCeXRlcy5sZW5ndGggYnl0ZXMpO1xuICB1bnNhZmVfbWVtY21wX2J5dGVzIHQxIH5wb3MxIGJ5dGVzIH5wb3MyIH5sZW5cbjs7XG5cbmxldCBjb21wYXJlIHQxIHQyID1cbiAgaWYgcGh5c19lcXVhbCB0MSB0MlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbGV0IGxlbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbGVuMiA9IGxlbmd0aCB0MiBpblxuICAgIGxldCBsZW4gPSBJbnQubWluIGxlbjEgbGVuMiBpblxuICAgIG1hdGNoIHVuc2FmZV9tZW1jbXAgdDEgfnBvczE6MCB0MiB+cG9zMjowIH5sZW4gd2l0aFxuICAgIHwgMCAtPiBpZiBsZW4xIDwgbGVuMiB0aGVuIC0xIGVsc2UgaWYgbGVuMSA+IGxlbjIgdGhlbiAxIGVsc2UgMFxuICAgIHwgbiAtPiBuKVxuOztcblxuZXh0ZXJuYWwgaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nXG4gIDogIEhhc2guc3RhdGVcbiAgLT4gdFxuICAtPiBIYXNoLnN0YXRlXG4gID0gXCJpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcIlxuW0BAbm9hbGxvY11cblxubGV0IF9tYWtpbmdfc3VyZV90aGVfQ19iaW5kaW5nX3Rha2VzX2FuX2ludCAoeCA6IEhhc2guc3RhdGUpID0gKHggOj4gaW50KVxubGV0IGhhc2hfZm9sZF90ID0gaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nXG5sZXQgaGFzaCA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5vZl9mb2xkIGhhc2hfZm9sZF90XG5cbnR5cGUgdF9mcm96ZW4gPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbmxldCBlcXVhbCB0MSB0MiA9XG4gIGlmIHBoeXNfZXF1YWwgdDEgdDJcbiAgdGhlbiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBsZW4xID0gbGVuZ3RoIHQxIGluXG4gICAgbGV0IGxlbjIgPSBsZW5ndGggdDIgaW5cbiAgICBJbnQuZXF1YWwgbGVuMSBsZW4yICYmIEludC5lcXVhbCAodW5zYWZlX21lbWNtcCB0MSB+cG9zMTowIHQyIH5wb3MyOjAgfmxlbjpsZW4xKSAwKVxuOztcblxuKCogU2VhcmNoICopXG5cbmV4dGVybmFsIHVuc2FmZV9maW5kIDogdCAtPiBjaGFyIC0+IHBvczppbnQgLT4gbGVuOmludCAtPiBpbnQgPSBcImJpZ3N0cmluZ19maW5kXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1tZW1cbiAgOiAgaGF5c3RhY2s6dFxuICAtPiBuZWVkbGU6dFxuICAtPiBoYXlzdGFja19wb3M6aW50XG4gIC0+IGhheXN0YWNrX2xlbjppbnRcbiAgLT4gbmVlZGxlX3BvczppbnRcbiAgLT4gbmVlZGxlX2xlbjppbnRcbiAgLT4gaW50XG4gID0gXCJiaWdzdHJpbmdfbWVtbWVtX2J5dGVjb2RlXCIgXCJiaWdzdHJpbmdfbWVtbWVtXCJcbltAQG5vYWxsb2NdXG5cbmxldCBmaW5kID8ocG9zID0gMCkgP2xlbiBjaHIgYnN0ciA9XG4gIGxldCBsZW4gPSBnZXRfb3B0X2xlbiBic3RyIH5wb3MgbGVuIGluXG4gIGNoZWNrX2FyZ3MgfmxvYzpcImZpbmRcIiB+cG9zIH5sZW4gYnN0cjtcbiAgbGV0IHJlcyA9IHVuc2FmZV9maW5kIGJzdHIgY2hyIH5wb3MgfmxlbiBpblxuICBpZiByZXMgPCAwIHRoZW4gTm9uZSBlbHNlIFNvbWUgcmVzXG47O1xuXG5sZXQgbWVtbWVtXG4gICAgICB+aGF5c3RhY2tcbiAgICAgIH5uZWVkbGVcbiAgICAgID8oaGF5c3RhY2tfcG9zID0gMClcbiAgICAgID9oYXlzdGFja19sZW5cbiAgICAgID8obmVlZGxlX3BvcyA9IDApXG4gICAgICA/bmVlZGxlX2xlblxuICAgICAgKClcbiAgPVxuICBsZXQgaGF5c3RhY2tfbGVuID0gZ2V0X29wdF9sZW4gaGF5c3RhY2sgfnBvczpoYXlzdGFja19wb3MgaGF5c3RhY2tfbGVuIGluXG4gIGxldCBuZWVkbGVfbGVuID0gZ2V0X29wdF9sZW4gbmVlZGxlIH5wb3M6bmVlZGxlX3BvcyBuZWVkbGVfbGVuIGluXG4gIGxldCByZXMgPVxuICAgIHVuc2FmZV9tZW1tZW0gfmhheXN0YWNrIH5uZWVkbGUgfmhheXN0YWNrX3BvcyB+aGF5c3RhY2tfbGVuIH5uZWVkbGVfcG9zIH5uZWVkbGVfbGVuXG4gIGluXG4gIGlmIHJlcyA8IDAgdGhlbiBOb25lIGVsc2UgU29tZSByZXNcbjs7XG5cbigqIHZpbTogc2V0IGZpbGV0eXBlPW9jYW1sIDogKilcblxuKCogQmluYXJ5LXBhY2tpbmcgbGlrZSBhY2Nlc3NvcnMgKilcblxuZXh0ZXJuYWwgaW50MzJfb2ZfaW50IDogaW50IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIGludDMyX3RvX2ludCA6IGludDMyIC0+IGludCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBpbnQ2NF9vZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgaW50NjRfdG9faW50IDogKGludDY0W0Bsb2NhbF0pIC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IChpbnQ2NFtAbG9jYWxdKSAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfMTYgOiB0IC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF8zMiA6IHQgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfNjQgOiB0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0dVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0XzE2IDogKHRbQGxvY2FsX29wdF0pIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2dVwiXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfMzJcbiAgOiAgKHRbQGxvY2FsX29wdF0pXG4gIC0+IGludFxuICAtPiBpbnQzMlxuICAtPiB1bml0XG4gID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJ1XCJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF82NCA6IHQgLT4gaW50IC0+IChpbnQ2NFtAbG9jYWxdKSAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0NjR1XCJcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBnZXRfMTYgKHQgOiB0KSAocG9zIDogaW50KSA6IGludCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcImdldF8xNlwiIH5wb3MgfmxlbjoyIHQ7XG4gIHVuc2FmZV9nZXRfMTYgdCBwb3Ncbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gZ2V0XzMyICh0IDogdCkgKHBvcyA6IGludCkgOiBpbnQzMiA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcImdldF8zMlwiIH5wb3Mgfmxlbjo0IHQ7XG4gIHVuc2FmZV9nZXRfMzIgdCBwb3Ncbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gZ2V0XzY0ICh0IDogdCkgKHBvcyA6IGludCkgOiBpbnQ2NCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcImdldF82NFwiIH5wb3Mgfmxlbjo4IHQ7XG4gIHVuc2FmZV9nZXRfNjQgdCBwb3Ncbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2V0XzE2X3RydW5jICh0IDogdCkgKHBvcyA6IGludCkgKHYgOiBpbnQpIDogdW5pdCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcInNldF8xNlwiIH5wb3MgfmxlbjoyIHQ7XG4gIHVuc2FmZV9zZXRfMTYgdCBwb3MgdlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzZXRfMzIgKHQgOiB0KSAocG9zIDogaW50KSAodiA6IGludDMyKSA6IHVuaXQgPVxuICBjaGVja19hcmdzIH5sb2M6XCJzZXRfMzJcIiB+cG9zIH5sZW46NCB0O1xuICB1bnNhZmVfc2V0XzMyIHQgcG9zIHZcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2V0XzY0ICh0IDogdCkgKHBvcyA6IGludCkgKCh2IDogaW50NjQpIFtAbG9jYWxdKSA6IHVuaXQgPVxuICBjaGVja19hcmdzIH5sb2M6XCJzZXRfNjRcIiB+cG9zIH5sZW46OCB0O1xuICB1bnNhZmVfc2V0XzY0IHQgcG9zIHZcbjs7XG5cbmxldCBzaWduX2V4dGVuZF8xNiB1ID0gKHUgbHNsIChJbnQubnVtX2JpdHMgLSAxNikpIGFzciAoSW50Lm51bV9iaXRzIC0gMTYpXG5cbmxldCBjaGVja192YWxpZF91aW50MTYgeCB+bG9jID1cbiAgaWYgeCA8IDAgfHwgeCA+IDB4RkZGRlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfaW50MTYgeCB+bG9jID1cbiAgaWYgeCA8IC0weDgwMDAgfHwgeCA+IDB4N0ZGRlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIChzaWduZWQpIDE2LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfdWludDggeCB+bG9jID1cbiAgaWYgeCA8IDAgfHwgeCA+IDB4RkZcbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfaW50OCB4IH5sb2MgPVxuICBpZiB4IDwgLTB4ODAgfHwgeCA+IDB4N0ZcbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCAoc2lnbmVkKSA4LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfaW50MzIgPVxuICBpZiBub3QgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gXyB+bG9jOl8gLT4gKClcbiAgZWxzZVxuICAgIGZ1biB4IH5sb2MgLT5cbiAgICAgIGlmIHggPj0gLTEgbHNsIDMxICYmIHggPCAxIGxzbCAzMVxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCAoc2lnbmVkKSAzMi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQzMiA9XG4gIGlmIG5vdCBhcmNoX3NpeHR5Zm91clxuICB0aGVuXG4gICAgZnVuIHggfmxvYyAtPlxuICAgICAgaWYgeCA+PSAwXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG4gIGVsc2VcbiAgICBmdW4geCB+bG9jIC0+XG4gICAgICBpZiB4ID49IDAgJiYgeCA8IDEgbHNsIDMyXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfdWludDY0IHggfmxvYyA9XG4gIGlmIHggPj0gMFxuICB0aGVuICgpXG4gIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgNjQtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCB1bnNhZmVfcmVhZF9pbnQxNiB0IH5wb3MgPSBzaWduX2V4dGVuZF8xNiAodW5zYWZlX2dldF8xNiB0IHBvcylcbmxldCB1bnNhZmVfcmVhZF9pbnQxNl9zd2FwIHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2IChzd2FwMTYgKHVuc2FmZV9nZXRfMTYgdCBwb3MpKVxubGV0IHVuc2FmZV93cml0ZV9pbnQxNiB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgeFxubGV0IHVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyAoc3dhcDE2IHgpXG5sZXQgcmVhZF9pbnQxNiB0IH5wb3MgPSBzaWduX2V4dGVuZF8xNiAoZ2V0XzE2IHQgcG9zKVxubGV0IHJlYWRfaW50MTZfc3dhcCB0IH5wb3MgPSBzaWduX2V4dGVuZF8xNiAoc3dhcDE2IChnZXRfMTYgdCBwb3MpKVxuXG5sZXQgd3JpdGVfaW50MTZfZXhuIHQgfnBvcyB4ID1cbiAgY2hlY2tfdmFsaWRfaW50MTYgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyB4XG47O1xuXG5sZXQgd3JpdGVfaW50MTZfc3dhcF9leG4gdCB+cG9zIHggPVxuICAoKiBPbWl0IFwiX3N3YXBcIiBmcm9tIHRoZSBlcnJvciBtZXNzYWdlIGl0J3MgYmktZW5kaWFuLiAqKVxuICBjaGVja192YWxpZF9pbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIChzd2FwMTYgeClcbjs7XG5cbmxldCB1bnNhZmVfcmVhZF91aW50MTYgdCB+cG9zID0gdW5zYWZlX2dldF8xNiB0IHBvc1xubGV0IHVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwIHQgfnBvcyA9IHN3YXAxNiAodW5zYWZlX2dldF8xNiB0IHBvcylcbmxldCB1bnNhZmVfd3JpdGVfdWludDE2IHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyB4XG5sZXQgdW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyAoc3dhcDE2IHgpXG5sZXQgcmVhZF91aW50MTYgdCB+cG9zID0gZ2V0XzE2IHQgcG9zXG5sZXQgcmVhZF91aW50MTZfc3dhcCB0IH5wb3MgPSBzd2FwMTYgKGdldF8xNiB0IHBvcylcblxubGV0IHdyaXRlX3VpbnQxNl9leG4gdCB+cG9zIHggPVxuICBjaGVja192YWxpZF91aW50MTYgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX3VpbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgeFxuOztcblxubGV0IHdyaXRlX3VpbnQxNl9zd2FwX2V4biB0IH5wb3MgeCA9XG4gICgqIE9taXQgXCJfc3dhcFwiIGZyb20gdGhlIGVycm9yIG1lc3NhZ2UgaXQncyBiaS1lbmRpYW4uICopXG4gIGNoZWNrX3ZhbGlkX3VpbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfdWludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyAoc3dhcDE2IHgpXG47O1xuXG5sZXQgdW5zYWZlX3JlYWRfaW50MzJfaW50IHQgfnBvcyA9IGludDMyX3RvX2ludCAodW5zYWZlX2dldF8zMiB0IHBvcylcbmxldCB1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKHN3YXAzMiAodW5zYWZlX2dldF8zMiB0IHBvcykpXG5sZXQgdW5zYWZlX3JlYWRfaW50MzIgdCB+cG9zID0gdW5zYWZlX2dldF8zMiB0IHBvc1xubGV0IHVuc2FmZV9yZWFkX2ludDMyX3N3YXAgdCB+cG9zID0gc3dhcDMyICh1bnNhZmVfZ2V0XzMyIHQgcG9zKVxubGV0IHVuc2FmZV93cml0ZV9pbnQzMiB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgeFxubGV0IHVuc2FmZV93cml0ZV9pbnQzMl9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyAoc3dhcDMyIHgpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyX2ludCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgKGludDMyX29mX2ludCB4KVxubGV0IHVuc2FmZV93cml0ZV9pbnQzMl9pbnRfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgKHN3YXAzMiAoaW50MzJfb2ZfaW50IHgpKVxubGV0IHJlYWRfaW50MzJfaW50IHQgfnBvcyA9IGludDMyX3RvX2ludCAoZ2V0XzMyIHQgcG9zKVxubGV0IHJlYWRfaW50MzJfaW50X3N3YXAgdCB+cG9zID0gaW50MzJfdG9faW50IChzd2FwMzIgKGdldF8zMiB0IHBvcykpXG5sZXQgcmVhZF9pbnQzMiB0IH5wb3MgPSBnZXRfMzIgdCBwb3NcbmxldCByZWFkX2ludDMyX3N3YXAgdCB+cG9zID0gc3dhcDMyIChnZXRfMzIgdCBwb3MpXG5sZXQgd3JpdGVfaW50MzIgdCB+cG9zIHggPSBzZXRfMzIgdCBwb3MgeFxubGV0IHdyaXRlX2ludDMyX3N3YXAgdCB+cG9zIHggPSBzZXRfMzIgdCBwb3MgKHN3YXAzMiB4KVxuXG5sZXQgd3JpdGVfaW50MzJfaW50X2V4biB0IH5wb3MgeCA9XG4gIGNoZWNrX3ZhbGlkX2ludDMyIHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQzMl9pbnRcIjtcbiAgc2V0XzMyIHQgcG9zIChpbnQzMl9vZl9pbnQgeClcbjs7XG5cbmxldCB3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4gdCB+cG9zIHggPVxuICAoKiBPbWl0IFwiX3N3YXBcIiBmcm9tIHRoZSBlcnJvciBtZXNzYWdlIGl0J3MgYmktZW5kaWFuLiAqKVxuICBjaGVja192YWxpZF9pbnQzMiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MzJfaW50XCI7XG4gIHNldF8zMiB0IHBvcyAoc3dhcDMyIChpbnQzMl9vZl9pbnQgeCkpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X2ludCB0IH5wb3MgPSBpbnQ2NF90b19pbnQgKHVuc2FmZV9nZXRfNjQgdCBwb3MpXG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAgdCB+cG9zID1cbiAgaW50NjRfdG9faW50IChzd2FwNjQgKHVuc2FmZV9nZXRfNjQgdCBwb3MpKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NCB0IH5wb3MgPSB1bnNhZmVfZ2V0XzY0IHQgcG9zXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X3N3YXAgdCB+cG9zID0gc3dhcDY0ICh1bnNhZmVfZ2V0XzY0IHQgcG9zKVxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjQgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzY0IHQgcG9zIHhcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzY0IHQgcG9zIChzd2FwNjQgeClcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0X2ludCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgKGludDY0X29mX2ludCB4KVxuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgeCA9XG4gIHVuc2FmZV9zZXRfNjQgdCBwb3MgKHN3YXA2NCAoaW50NjRfb2ZfaW50IHgpKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X2ludCB0IH5wb3MgPSBpbnQ2NF90b19pbnQgKGdldF82NCB0IHBvcylcbmxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgPSBpbnQ2NF90b19pbnQgKHN3YXA2NCAoZ2V0XzY0IHQgcG9zKSlcbmxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NCB0IH5wb3MgPSBnZXRfNjQgdCBwb3NcbmxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9zd2FwIHQgfnBvcyA9IHN3YXA2NCAoZ2V0XzY0IHQgcG9zKVxubGV0IHdyaXRlX2ludDY0IHQgfnBvcyAoeCBbQGxvY2FsXSkgPSBzZXRfNjQgdCBwb3MgeFxubGV0IHdyaXRlX2ludDY0X3N3YXAgdCB+cG9zICh4IFtAbG9jYWxdKSA9IHNldF82NCB0IHBvcyAoc3dhcDY0IHgpXG5sZXQgd3JpdGVfaW50NjRfaW50IHQgfnBvcyB4ID0gc2V0XzY0IHQgcG9zIChpbnQ2NF9vZl9pbnQgeClcbmxldCB3cml0ZV9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgeCA9IHNldF82NCB0IHBvcyAoc3dhcDY0IChpbnQ2NF9vZl9pbnQgeCkpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MTYgZWxzZSB1bnNhZmVfcmVhZF9pbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDE2X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQxNlxuOztcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfdWludDE2IGVsc2UgdW5zYWZlX3JlYWRfdWludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfdWludDE2XG47O1xuXG5sZXQgZ2V0X2ludDE2X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQxNiBlbHNlIHJlYWRfaW50MTZfc3dhcFxubGV0IGdldF9pbnQxNl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MTZfc3dhcCBlbHNlIHJlYWRfaW50MTZcbmxldCBnZXRfdWludDE2X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF91aW50MTYgZWxzZSByZWFkX3VpbnQxNl9zd2FwXG5sZXQgZ2V0X3VpbnQxNl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfdWludDE2X3N3YXAgZWxzZSByZWFkX3VpbnQxNlxuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQxNiBlbHNlIHVuc2FmZV93cml0ZV9pbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDE2XG47O1xuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfdWludDE2IGVsc2UgdW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfdWludDE2X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfdWludDE2XG47O1xuXG5sZXQgc2V0X2ludDE2X2JlX2V4biA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDE2X2V4biBlbHNlIHdyaXRlX2ludDE2X3N3YXBfZXhuXG5sZXQgc2V0X2ludDE2X2xlX2V4biA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDE2X3N3YXBfZXhuIGVsc2Ugd3JpdGVfaW50MTZfZXhuXG5cbmxldCBzZXRfdWludDE2X2JlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX3VpbnQxNl9leG4gZWxzZSB3cml0ZV91aW50MTZfc3dhcF9leG5cbjs7XG5cbmxldCBzZXRfdWludDE2X2xlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX3VpbnQxNl9zd2FwX2V4biBlbHNlIHdyaXRlX3VpbnQxNl9leG5cbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMiBlbHNlIHVuc2FmZV9yZWFkX2ludDMyX3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50MzJcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MzIgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMl9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyXG47O1xuXG5sZXQgZ2V0X2ludDMyX3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyIGVsc2UgcmVhZF9pbnQzMl9zd2FwXG5sZXQgZ2V0X2ludDMyX3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyX3N3YXAgZWxzZSByZWFkX2ludDMyXG5sZXQgc2V0X2ludDMyX3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQzMiBlbHNlIHdyaXRlX2ludDMyX3N3YXBcbmxldCBzZXRfaW50MzJfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyX3N3YXAgZWxzZSB3cml0ZV9pbnQzMlxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyX2ludCBlbHNlIHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50MzJfaW50XG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMl9pbnQgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyX2ludFxuOztcblxubGV0IGdldF9pbnQzMl9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzJfaW50IGVsc2UgcmVhZF9pbnQzMl9pbnRfc3dhcFxubGV0IGdldF9pbnQzMl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzJfaW50X3N3YXAgZWxzZSByZWFkX2ludDMyX2ludFxuXG5sZXQgc2V0X2ludDMyX2JlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyX2ludF9leG4gZWxzZSB3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG5cbjs7XG5cbmxldCBzZXRfaW50MzJfbGVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzJfaW50X3N3YXBfZXhuIGVsc2Ugd3JpdGVfaW50MzJfaW50X2V4blxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfYmVfdHJ1bmMgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9pbnQgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfbGVfdHJ1bmMgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X2ludFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjRfaW50IGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0X2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRcbjs7XG5cbmxldCBnZXRfaW50NjRfYmVfdHJ1bmMgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X2ludCBlbHNlIHJlYWRfaW50NjRfaW50X3N3YXBcbmxldCBnZXRfaW50NjRfbGVfdHJ1bmMgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X2ludF9zd2FwIGVsc2UgcmVhZF9pbnQ2NF9pbnRcbmxldCBzZXRfaW50NjRfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NF9pbnQgZWxzZSB3cml0ZV9pbnQ2NF9pbnRfc3dhcFxubGV0IHNldF9pbnQ2NF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0X2ludF9zd2FwIGVsc2Ugd3JpdGVfaW50NjRfaW50XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50NjRcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjQgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0XG47O1xuXG5tb2R1bGUgTG9jYWwgPSBzdHJ1Y3RcbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9sb2NhbCB0IH5wb3MgPVxuICAgICAoSW50NjQuKCArICkgMEwgKHVuc2FmZV9yZWFkX2ludDY0IHQgfnBvcykpXG4gIDs7XG5cbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwX2xvY2FsIHQgfnBvcyA9XG4gICAgIChJbnQ2NC4oICsgKSAwTCAodW5zYWZlX3JlYWRfaW50NjRfc3dhcCB0IH5wb3MpKVxuICA7O1xuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9sb2NhbCB0IH5wb3MgPVxuICAgICAoSW50NjQuKCArICkgMEwgKHJlYWRfaW50NjQgdCB+cG9zKSlcbiAgOztcblxuICBsZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfc3dhcF9sb2NhbCB0IH5wb3MgPVxuICAgICAoSW50NjQuKCArICkgMEwgKHJlYWRfaW50NjRfc3dhcCB0IH5wb3MpKVxuICA7O1xuXG4gIGxldCB1bnNhZmVfZ2V0X2ludDY0X3RfYmUgPVxuICAgIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X2xvY2FsIGVsc2UgdW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbFxuICA7O1xuXG4gIGxldCB1bnNhZmVfZ2V0X2ludDY0X3RfbGUgPVxuICAgIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X3N3YXBfbG9jYWwgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9sb2NhbFxuICA7O1xuXG4gIGxldCBnZXRfaW50NjRfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfbG9jYWwgZWxzZSByZWFkX2ludDY0X3N3YXBfbG9jYWxcbiAgbGV0IGdldF9pbnQ2NF90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9zd2FwX2xvY2FsIGVsc2UgcmVhZF9pbnQ2NF9sb2NhbFxuZW5kXG5cbmxldCBnZXRfaW50NjRfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjQgZWxzZSByZWFkX2ludDY0X3N3YXBcbmxldCBnZXRfaW50NjRfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfc3dhcCBlbHNlIHJlYWRfaW50NjRcbmxldCBzZXRfaW50NjRfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0IGVsc2Ugd3JpdGVfaW50NjRfc3dhcFxubGV0IHNldF9pbnQ2NF90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjRfc3dhcCBlbHNlIHdyaXRlX2ludDY0XG5cbmxldCBpbnQ2NF9jb252X2Vycm9yICgpID1cbiAgZmFpbHdpdGggXCJ1bnNhZmVfcmVhZF9pbnQ2NDogdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkIHVuYm94ZWQhXCJcbjs7XG5cbmxldCB1aW50NjRfY29udl9lcnJvciAoKSA9XG4gIGZhaWx3aXRoIFwidW5zYWZlX3JlYWRfdWludDY0OiB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgdW5ib3hlZCFcIlxuOztcblxuKCogW1BvbHldIGlzIHJlcXVpcmVkIHNvIHRoYXQgd2UgY2FuIGNvbXBhcmUgdW5ib3hlZCBbaW50NjRdLiAqKVxubGV0W0BpbmxpbmUgYWx3YXlzXSBpbnQ2NF90b19pbnRfZXhuIChuIFtAbG9jYWxdKSA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBpZiBQb2x5LihuID49IC0weDQwMDBfMDAwMF8wMDAwXzAwMDBMICYmIG4gPCAweDQwMDBfMDAwMF8wMDAwXzAwMDBMKVxuICAgIHRoZW4gaW50NjRfdG9faW50IG5cbiAgICBlbHNlIGludDY0X2NvbnZfZXJyb3IgKClcbiAgZWxzZSBpZiBQb2x5LihuID49IC0weDAwMDBfMDAwMF80MDAwXzAwMDBMICYmIG4gPCAweDAwMDBfMDAwMF80MDAwXzAwMDBMKVxuICB0aGVuIGludDY0X3RvX2ludCBuXG4gIGVsc2UgaW50NjRfY29udl9lcnJvciAoKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1aW50NjRfdG9faW50X2V4biBuID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGlmIFBvbHkuKG4gPj0gMEwgJiYgbiA8IDB4NDAwMF8wMDAwXzAwMDBfMDAwMEwpXG4gICAgdGhlbiBpbnQ2NF90b19pbnQgblxuICAgIGVsc2UgdWludDY0X2NvbnZfZXJyb3IgKClcbiAgZWxzZSBpZiBQb2x5LihuID49IDBMICYmIG4gPCAweDAwMDBfMDAwMF80MDAwXzAwMDBMKVxuICB0aGVuIGludDY0X3RvX2ludCBuXG4gIGVsc2UgdWludDY0X2NvbnZfZXJyb3IgKClcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X2ludDY0X2JlX2V4biB0IH5wb3MgPVxuICBpbnQ2NF90b19pbnRfZXhuICh1bnNhZmVfZ2V0X2ludDY0X3RfYmUgdCB+cG9zKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfaW50NjRfbGVfZXhuIHQgfnBvcyA9XG4gIGludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9sZSB0IH5wb3MpXG47O1xuXG5sZXQgZ2V0X2ludDY0X2JlX2V4biB0IH5wb3MgPSBpbnQ2NF90b19pbnRfZXhuIChnZXRfaW50NjRfdF9iZSB0IH5wb3MpXG5sZXQgZ2V0X2ludDY0X2xlX2V4biB0IH5wb3MgPSBpbnQ2NF90b19pbnRfZXhuIChnZXRfaW50NjRfdF9sZSB0IH5wb3MpXG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zID1cbiAgdWludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9iZSB0IH5wb3MpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF91aW50NjRfbGVfZXhuIHQgfnBvcyA9XG4gIHVpbnQ2NF90b19pbnRfZXhuICh1bnNhZmVfZ2V0X2ludDY0X3RfbGUgdCB+cG9zKVxuOztcblxubGV0IGdldF91aW50NjRfYmVfZXhuIHQgfnBvcyA9IHVpbnQ2NF90b19pbnRfZXhuIChnZXRfaW50NjRfdF9iZSB0IH5wb3MpXG5sZXQgZ2V0X3VpbnQ2NF9sZV9leG4gdCB+cG9zID0gdWludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2xlIHQgfnBvcylcbmxldCB1bnNhZmVfc2V0X3VpbnQ2NF9iZSA9IHVuc2FmZV9zZXRfaW50NjRfYmVcbmxldCB1bnNhZmVfc2V0X3VpbnQ2NF9sZSA9IHVuc2FmZV9zZXRfaW50NjRfbGVcblxubGV0IHNldF91aW50NjRfYmVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDY0IH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQ2NF9iZV9leG5cIiBuO1xuICBzZXRfaW50NjRfYmUgdCB+cG9zIG5cbjs7XG5cbmxldCBzZXRfdWludDY0X2xlX2V4biB0IH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQ2NCB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50NjRfbGVfZXhuXCIgbjtcbiAgc2V0X2ludDY0X2xlIHQgfnBvcyBuXG47O1xuXG4oKiBUeXBlIGFubm90YXRpb25zIG9uIHRoZSBbdF1zIGFyZSBpbXBvcnRhbnQgaGVyZTogaW4gb3JkZXIgZm9yIHRoZSBjb21waWxlciB0byBnZW5lcmF0ZVxuICAgb3B0aW1pemVkIGNvZGUsIGl0IG5lZWRzIHRvIGtub3cgdGhlIGZ1bGx5IGluc3RhbnRpYXRlZCB0eXBlIG9mIHRoZSBiaWdhcnJheS4gVGhpcyBpc1xuICAgYmVjYXVzZSB0aGUgdHlwZSBvZiB0aGUgYmlnYXJyYXkgZW5jb2RlcyB0aGUgZWxlbWVudCBraW5kIGFuZCB0aGUgbGF5b3V0IG9mIHRoZVxuICAgYmlnYXJyYXkuIFdpdGhvdXQgdGhlIGFubm90YXRpb24gdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBhIEMgY2FsbCB0byB0aGUgZ2VuZXJpYyBhY2Nlc3NcbiAgIGZ1bmN0aW9ucy4gKilcbmxldCB1bnNhZmVfc2V0X3VpbnQ4ICh0IDogdCkgfnBvcyBuID0gQXJyYXkxLnVuc2FmZV9zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCBuKVxuXG5sZXQgdW5zYWZlX3NldF9pbnQ4ICh0IDogdCkgfnBvcyBuID1cbiAgKCogSW4gYWxsIHRoZSBzZXQgZnVuY3Rpb25zIHdoZXJlIHRoZXJlIGFyZSB0aGVzZSB0ZXN0cywgaXQgbG9va3MgbGlrZSB0aGUgdGVzdCBjb3VsZCBiZVxuICAgICByZW1vdmVkLCBzaW5jZSB0aGV5IGFyZSBvbmx5IGNoYW5naW5nIHRoZSB2YWx1ZXMgb2YgdGhlIGJ5dGVzIHRoYXQgYXJlIG5vdFxuICAgICB3cml0dGVuLiAqKVxuICBsZXQgbiA9IGlmIG4gPCAwIHRoZW4gbiArIDI1NiBlbHNlIG4gaW5cbiAgQXJyYXkxLnVuc2FmZV9zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCBuKVxuOztcblxubGV0IHVuc2FmZV9nZXRfdWludDggKHQgOiB0KSB+cG9zID0gQ2hhci50b19pbnQgKEFycmF5MS51bnNhZmVfZ2V0IHQgcG9zKVxuXG5sZXQgdW5zYWZlX2dldF9pbnQ4ICh0IDogdCkgfnBvcyA9XG4gIGxldCBuID0gQ2hhci50b19pbnQgKEFycmF5MS51bnNhZmVfZ2V0IHQgcG9zKSBpblxuICBpZiBuID49IDEyOCB0aGVuIG4gLSAyNTYgZWxzZSBuXG47O1xuXG5sZXQgc2V0X3VpbnQ4X2V4biAodCA6IHQpIH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQ4IH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQ4X2V4blwiIG47XG4gIEFycmF5MS5zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCBuKVxuOztcblxubGV0IHNldF9pbnQ4X2V4biAodCA6IHQpIH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX2ludDggfmxvYzpcIkJpZ3N0cmluZy5zZXRfaW50OF9leG5cIiBuO1xuICBsZXQgbiA9IGlmIG4gPCAwIHRoZW4gbiArIDI1NiBlbHNlIG4gaW5cbiAgQXJyYXkxLnNldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgZ2V0X3VpbnQ4ICh0IDogdCkgfnBvcyA9IENoYXIudG9faW50IChBcnJheTEuZ2V0IHQgcG9zKVxuXG5sZXQgZ2V0X2ludDggKHQgOiB0KSB+cG9zID1cbiAgbGV0IG4gPSBDaGFyLnRvX2ludCAoQXJyYXkxLmdldCB0IHBvcykgaW5cbiAgaWYgbiA+PSAxMjggdGhlbiBuIC0gMjU2IGVsc2UgblxuOztcblxubGV0IG1hc2szMl9uID0gU3RkbGliLk5hdGl2ZWludC4oc3ViIChzaGlmdF9sZWZ0IDFuIDMyKSAxbilcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1aW50MzJfb2ZfaW50MzJfdCBuID1cbiAgaWYgbm90X29uXzMyYml0XG4gIHRoZW5cbiAgICAoKiB1c2UgQ2FtbC5OYXRpdmVpbnQgdG8gZW5zdXJlIGlubGluaW5nIGV2ZW4gd2l0aG91dCB4LWxpYnJhcnktaW5saW5pbmcgKilcbiAgICBTdGRsaWIuTmF0aXZlaW50Lih0b19pbnQgKGxvZ2FuZCAob2ZfaW50MzIgbikgbWFzazMyX24pKVxuICBlbHNlIGludDMyX3RvX2ludCBuXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX3NldF91aW50MzJfbGUgdCB+cG9zIG4gPSB1bnNhZmVfc2V0X2ludDMyX3RfbGUgdCB+cG9zIChpbnQzMl9vZl9pbnQgbilcbmxldFtAaW5saW5lXSB1bnNhZmVfc2V0X3VpbnQzMl9iZSB0IH5wb3MgbiA9IHVuc2FmZV9zZXRfaW50MzJfdF9iZSB0IH5wb3MgKGludDMyX29mX2ludCBuKVxuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF91aW50MzJfbGUgdCB+cG9zID1cbiAgdWludDMyX29mX2ludDMyX3QgKHVuc2FmZV9nZXRfaW50MzJfdF9sZSB0IH5wb3MpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF91aW50MzJfYmUgdCB+cG9zID1cbiAgdWludDMyX29mX2ludDMyX3QgKHVuc2FmZV9nZXRfaW50MzJfdF9iZSB0IH5wb3MpXG47O1xuXG5sZXQgc2V0X3VpbnQzMl9sZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50MzIgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDMyX2xlX2V4blwiIG47XG4gIGxldCBuID0gaWYgbm90X29uXzMyYml0ICYmIG4gPj0gMSBsc2wgMzEgdGhlbiBuIC0gKDEgbHNsIDMyKSBlbHNlIG4gaW5cbiAgc2V0X2ludDMyX2xlX2V4biB0IH5wb3MgblxuOztcblxubGV0IHNldF91aW50MzJfYmVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDMyIH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQzMl9iZV9leG5cIiBuO1xuICBsZXQgbiA9IGlmIG5vdF9vbl8zMmJpdCAmJiBuID49IDEgbHNsIDMxIHRoZW4gbiAtICgxIGxzbCAzMikgZWxzZSBuIGluXG4gIHNldF9pbnQzMl9iZV9leG4gdCB+cG9zIG5cbjs7XG5cbmxldCBnZXRfdWludDMyX2xlIHQgfnBvcyA9IHVpbnQzMl9vZl9pbnQzMl90IChnZXRfaW50MzJfdF9sZSB0IH5wb3MpXG5sZXQgZ2V0X3VpbnQzMl9iZSB0IH5wb3MgPSB1aW50MzJfb2ZfaW50MzJfdCAoZ2V0X2ludDMyX3RfYmUgdCB+cG9zKVxuXG5tb2R1bGUgSW50X3JlcHIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEYgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB0X2Zyb3plblxuXG4gICAgbGV0IGdldF91aW50OCB0IHBvcyA9IGdldF91aW50OCB0IH5wb3NcbiAgICBsZXQgc2V0X3VpbnQ4IHQgcG9zIHggPSBBcnJheTEuc2V0IHQgcG9zIChDaGFyLnVuc2FmZV9vZl9pbnQgeClcbiAgICBsZXQgZ2V0X3VpbnQxNl9uZSB0IHBvcyA9IGdldF8xNiB0IHBvc1xuICAgIGxldCBzZXRfdWludDE2X25lIHQgcG9zIHggPSBzZXRfMTZfdHJ1bmMgdCBwb3MgeFxuICAgIGxldCBnZXRfaW50MzJfbmUgdCBwb3MgPSBnZXRfMzIgdCBwb3NcbiAgICBsZXQgc2V0X2ludDMyX25lIHQgcG9zIHggPSBzZXRfMzIgdCBwb3MgeFxuICAgIGxldCBnZXRfaW50NjRfbmUgdCBwb3MgPSBnZXRfNjQgdCBwb3NcbiAgICBsZXQgc2V0X2ludDY0X25lIHQgcG9zIHggPSBzZXRfNjQgdCBwb3MgeFxuICBlbmRcblxuICBpbmNsdWRlIEludF9yZXByLk1ha2VfZ2V0IChGKVxuICBpbmNsdWRlIEludF9yZXByLk1ha2Vfc2V0IChGKVxuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdF9mcm96ZW5cblxuICAgICAgbGV0IGdldF91aW50OCB0IHBvcyA9IHVuc2FmZV9nZXRfdWludDggdCB+cG9zXG4gICAgICBsZXQgc2V0X3VpbnQ4IHQgcG9zIHggPSB1bnNhZmVfc2V0X3VpbnQ4IHQgfnBvcyB4XG4gICAgICBsZXQgZ2V0X3VpbnQxNl9uZSB0IHBvcyA9IHVuc2FmZV9nZXRfMTYgdCBwb3NcbiAgICAgIGxldCBzZXRfdWludDE2X25lIHQgcG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIHhcbiAgICAgIGxldCBnZXRfaW50MzJfbmUgdCBwb3MgPSB1bnNhZmVfZ2V0XzMyIHQgcG9zXG4gICAgICBsZXQgc2V0X2ludDMyX25lIHQgcG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIHhcbiAgICAgIGxldCBnZXRfaW50NjRfbmUgdCBwb3MgPSB1bnNhZmVfZ2V0XzY0IHQgcG9zXG4gICAgICBsZXQgc2V0X2ludDY0X25lIHQgcG9zIHggPSB1bnNhZmVfc2V0XzY0IHQgcG9zIHhcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9nZXQgKEYpXG4gICAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX3NldCAoRilcbiAgZW5kXG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHNpZ25fZXh0ZW5kXzE2ID0gc2lnbl9leHRlbmRfMTZcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgQmxpdFxuaW5jbHVkZSBUZXN0X2JsaXRfaW50ZlxuXG5tb2R1bGUgdHlwZSBTX2dlbiA9IHNpZ1xuICBvcGVuIEJsaXRcblxuICB0eXBlICdhIHNyY1xuICB0eXBlICdhIGRzdFxuXG4gICgqICB2YWwgYmxpdCAgICAgICAgOiAoJ2Egc3JjLCAnYSBkc3QpIGJsaXQqKVxuICB2YWwgYmxpdG8gOiAoJ2Egc3JjLCAnYSBkc3QpIGJsaXRvXG5cbiAgKCogIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSBzcmMsICdhIGRzdCkgYmxpdCopXG4gIHZhbCBzdWIgOiAoJ2Egc3JjLCAnYSBkc3QpIHN1YlxuXG4gICgqdmFsIHN1Ym8gICAgICAgIDogKCdhIHNyYywgJ2EgZHN0KSBzdWJvKilcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfdGVzdHNfZ2VuID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlcXVhbCA6IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbFxuXG4gICAgdmFsIG9mX2Jvb2wgOiBib29sIC0+IGJvb2wgdFxuICBlbmRcblxuICB0eXBlICdhIHpcblxuICBtb2R1bGUgU3JjIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbGVuZ3RoIDogKF8gdFtAbG9jYWxdKSAtPiBpbnRcbiAgICB2YWwgY3JlYXRlX2Jvb2wgOiBsZW46aW50IC0+IGJvb2wgeiB0XG4gICAgdmFsIGdldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnRcbiAgICB2YWwgc2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudCAtPiB1bml0XG4gIGVuZFxuXG4gIG1vZHVsZSBEc3QgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBsZW5ndGggOiAoXyB0W0Bsb2NhbF0pIC0+IGludFxuICAgIHZhbCBjcmVhdGVfYm9vbCA6IGxlbjppbnQgLT4gYm9vbCB6IHRcbiAgICB2YWwgZ2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudFxuICAgIHZhbCBzZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50IC0+IHVuaXRcbiAgICB2YWwgb3ZlcmxhcHBpbmdfc3JjX2RzdCA6IFsgYERvX25vdF9jaGVjayB8IGBDaGVjayBvZiAnYSBTcmMudCAtPiAnYSB0IF1cbiAgZW5kXG5lbmRcblxubW9kdWxlIFRlc3RfZ2VuXG4gICAgKEZvcl90ZXN0cyA6IEZvcl90ZXN0c19nZW4pXG4gICAgKFRlc3RlZCA6IFNfZ2VuXG4gICAgIHdpdGggdHlwZSAnYSBzcmMgOj0gJ2EgRm9yX3Rlc3RzLlNyYy50XG4gICAgIHdpdGggdHlwZSAnYSBkc3QgOj0gJ2EgRm9yX3Rlc3RzLkRzdC50KSA9XG5zdHJ1Y3RcbiAgb3BlbiBUZXN0ZWRcbiAgb3BlbiBGb3JfdGVzdHNcblxuICBsZXQgaW5pdCB+bGVuIH5jcmVhdGUgfnNldCB+ZiA9XG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbiBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBzZXQgdCBpIChmIGkpXG4gICAgZG9uZTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGVsdDEgPSBFbHQub2ZfYm9vbCB0cnVlXG4gIGxldCBlbHQyID0gRWx0Lm9mX2Jvb2wgZmFsc2VcbiAgbGV0ICgpID0gYXNzZXJ0IChub3QgKEVsdC5lcXVhbCBlbHQxIGVsdDIpKVxuICBsZXQgc3JjX2JpdCBpID0gaWYgaSBsYW5kIDB4MSA9IDAgdGhlbiBlbHQxIGVsc2UgZWx0MlxuICBsZXQgZHN0X2JpdCBpID0gaWYgaSBsYW5kIDB4MSA9IDAgdGhlbiBlbHQyIGVsc2UgZWx0MVxuXG4gICgqIFRlc3QgW2JsaXRdLiAqKVxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGxldCBuID0gNCBpblxuICAgIGZvciBzcmNfbGVuZ3RoID0gMCB0byBuIGRvXG4gICAgICBmb3IgZHN0X2xlbmd0aCA9IDAgdG8gbiBkb1xuICAgICAgICBmb3Igc3JjX3BvcyA9IDAgdG8gc3JjX2xlbmd0aCBkb1xuICAgICAgICAgIGZvciBkc3RfcG9zID0gMCB0byBkc3RfbGVuZ3RoIGRvXG4gICAgICAgICAgICBmb3Igc3JjX2xlbiA9IDAgdG8gbWluIChzcmNfbGVuZ3RoIC0gc3JjX3BvcykgKGRzdF9sZW5ndGggLSBkc3RfcG9zKSBkb1xuICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICBsZXQgaXNfaW5fcmFuZ2UgaSA9IGkgPj0gZHN0X3BvcyAmJiBpIDwgZHN0X3BvcyArIHNyY19sZW4gaW5cbiAgICAgICAgICAgICAgICBsZXQgY2hlY2sgbGVuZ3RoIGdldCBuYW1lIHNlcXVlbmNlIH5leHBlY3QgPVxuICAgICAgICAgICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzZXF1ZW5jZSAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgaWYgbm90IChFbHQuZXF1YWwgKGdldCBzZXF1ZW5jZSBpKSAoZXhwZWN0IGkpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiYnVnXCIgKG5hbWUgOiBzdHJpbmcpIChpIDogaW50KV1cbiAgICAgICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVja19zcmMgPSBjaGVjayBTcmMubGVuZ3RoIFNyYy5nZXQgaW5cbiAgICAgICAgICAgICAgICBsZXQgY2hlY2tfZHN0ID0gY2hlY2sgRHN0Lmxlbmd0aCBEc3QuZ2V0IGluXG4gICAgICAgICAgICAgICAgbGV0IHNyYyA9XG4gICAgICAgICAgICAgICAgICBpbml0IH5sZW46c3JjX2xlbmd0aCB+Y3JlYXRlOlNyYy5jcmVhdGVfYm9vbCB+c2V0OlNyYy5zZXQgfmY6c3JjX2JpdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYXNzZXJ0IChTcmMubGVuZ3RoIHNyYyA9IHNyY19sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCBkc3QgPVxuICAgICAgICAgICAgICAgICAgaW5pdCB+bGVuOmRzdF9sZW5ndGggfmNyZWF0ZTpEc3QuY3JlYXRlX2Jvb2wgfnNldDpEc3Quc2V0IH5mOmRzdF9iaXRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGFzc2VydCAoRHN0Lmxlbmd0aCBkc3QgPSBkc3RfbGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBsZXQgaW5pdF9zcmMgKCkgPVxuICAgICAgICAgICAgICAgICAgZm9yIGkgPSAwIHRvIHNyY19sZW5ndGggLSAxIGRvXG4gICAgICAgICAgICAgICAgICAgIFNyYy5zZXQgc3JjIGkgKHNyY19iaXQgaSlcbiAgICAgICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGJsaXRvIH5zcmMgfnNyY19wb3MgfnNyY19sZW4gfmRzdCB+ZHN0X3BvcyAoKTtcbiAgICAgICAgICAgICAgICBjaGVja19zcmMgXCJibGl0IHNyY1wiIHNyYyB+ZXhwZWN0OnNyY19iaXQ7XG4gICAgICAgICAgICAgICAgY2hlY2tfZHN0IFwiYmxpdCBkc3RcIiBkc3QgfmV4cGVjdDooZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGlzX2luX3JhbmdlIGkgdGhlbiBzcmNfYml0IChzcmNfcG9zICsgaSAtIGRzdF9wb3MpIGVsc2UgZHN0X2JpdCBpKTtcbiAgICAgICAgICAgICAgICAobWF0Y2ggRHN0Lm92ZXJsYXBwaW5nX3NyY19kc3Qgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBEb19ub3RfY2hlY2sgLT4gKClcbiAgICAgICAgICAgICAgICAgfCBgQ2hlY2sgc3JjX3RvX2RzdCAtPlxuICAgICAgICAgICAgICAgICAgIGlmIGRzdF9wb3MgKyBzcmNfbGVuIDw9IHNyY19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgIGluaXRfc3JjICgpO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGRzdCA9IHNyY190b19kc3Qgc3JjIGluXG4gICAgICAgICAgICAgICAgICAgICBpZiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgIGJsaXRvIH5zcmMgfnNyY19wb3MgfnNyY19sZW4gfmRzdCB+ZHN0X3BvcyAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZHN0IFwiYmxpdCBkc3Qgb3ZlcmxhcHBpbmdcIiBkc3QgfmV4cGVjdDooZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYml0IChpZiBpc19pbl9yYW5nZSBpIHRoZW4gc3JjX3BvcyArIGkgLSBkc3RfcG9zIGVsc2UgaSkpKSkpO1xuICAgICAgICAgICAgICAgICgqIENoZWNrIFtzdWJdLiAqKVxuICAgICAgICAgICAgICAgIGluaXRfc3JjICgpO1xuICAgICAgICAgICAgICAgIGxldCBkc3QgPSBzdWIgc3JjIH5wb3M6c3JjX3BvcyB+bGVuOnNyY19sZW4gaW5cbiAgICAgICAgICAgICAgICBjaGVja19zcmMgXCJzdWIgc3JjXCIgc3JjIH5leHBlY3Q6c3JjX2JpdDtcbiAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJzdWIgZHN0XCIgZHN0IH5leHBlY3Q6KGZ1biBpIC0+IHNyY19iaXQgKHNyY19wb3MgKyBpKSlcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICBcImJ1Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgKGV4biA6IGV4bilcbiAgICAgICAgICAgICAgICAgICAgICAoc3JjX2xlbmd0aCA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAoc3JjX3BvcyA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAoZHN0X2xlbmd0aCA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAoZHN0X3BvcyA6IGludCldXG4gICAgICAgICAgICBkb25lXG4gICAgICAgICAgZG9uZVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IHNyYyA9IGluaXQgfmxlbjo0IH5jcmVhdGU6U3JjLmNyZWF0ZV9ib29sIH5zZXQ6U3JjLnNldCB+ZjpzcmNfYml0IGluXG4gICAgbGV0IGRzdCA9IGluaXQgfmxlbjo4IH5jcmVhdGU6RHN0LmNyZWF0ZV9ib29sIH5zZXQ6RHN0LnNldCB+Zjpkc3RfYml0IGluXG4gICAgbGV0IGFzc2VydF9yYWlzZXMgZiA9IGFzc2VydCAoRXhuLmRvZXNfcmFpc2UgZikgaW5cbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczooLTEpIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3BvczowICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3BvczooLTEpICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3Bvczo1IH5zcmNfbGVuOjEgfmRzdCB+ZHN0X3BvczowICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjggfmRzdCB+ZHN0X3BvczowICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3Bvczo1ICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3Bvczo4ICgpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBUZXN0MVxuICAgIChTZXF1ZW5jZSA6IFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIHBvbHkpXG4gICAgKFRlc3RlZCA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFNlcXVlbmNlLnQpID1cbiAgVGVzdF9nZW5cbiAgICAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgICAgbGV0IGVxdWFsID0gUG9seS5lcXVhbFxuICAgICAgICBsZXQgb2ZfYm9vbCA9IEZuLmlkXG4gICAgICBlbmRcblxuICAgICAgdHlwZSAnYSB6ID0gJ2EgU2VxdWVuY2UuelxuXG4gICAgICBtb2R1bGUgU3JjID0gU2VxdWVuY2VcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgbGV0IG92ZXJsYXBwaW5nX3NyY19kc3QgPSBgQ2hlY2sgRm4uaWRcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgVGVzdDFfZ2VuZXJpY1xuICAgIChFbHQgOiBFbHQxKVxuICAgIChTZXF1ZW5jZSA6IFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50KVxuICAgIChUZXN0ZWQgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBTZXF1ZW5jZS50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdFxuXG4gICAgICB0eXBlICdhIHogPSAnYSBTZXF1ZW5jZS56XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBTZXF1ZW5jZVxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBDaGVjayBGbi5pZFxuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBFbHRfdG9fZWx0MSAoRWx0IDogRWx0KSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBFbHQudFxuXG4gIGxldCBlcXVhbCA9IEVsdC5lcXVhbFxuICBsZXQgb2ZfYm9vbCA9IEVsdC5vZl9ib29sXG5lbmRcblxubW9kdWxlIFRlc3RcbiAgICAoRWx0IDogRWx0KVxuICAgIChTZXF1ZW5jZSA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKFRlc3RlZCA6IFMgd2l0aCB0eXBlIHQgOj0gU2VxdWVuY2UudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBFbHRfdG9fZWx0MSAoRWx0KVxuXG4gICAgICB0eXBlICdhIHogPSB1bml0XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBTZXF1ZW5jZVxuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFNyY1xuXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYENoZWNrIEZuLmlkXG4gICAgICBlbmRcbiAgICBlbmQpXG4gICAgKFRlc3RlZClcblxubW9kdWxlIFRlc3RfZGlzdGluY3RcbiAgICAoRWx0IDogRWx0KVxuICAgIChTcmMgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KVxuICAgIChEc3QgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KVxuICAgIChUZXN0ZWQgOiBTX2Rpc3RpbmN0IHdpdGggdHlwZSBzcmMgOj0gU3JjLnQgd2l0aCB0eXBlIGRzdCA6PSBEc3QudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBFbHRfdG9fZWx0MSAoRWx0KVxuXG4gICAgICB0eXBlICdhIHogPSB1bml0XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBTcmNcblxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gdFxuXG4gICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgICAgbGV0IGdldCA9IGdldFxuICAgICAgICBsZXQgc2V0ID0gc2V0XG4gICAgICAgIGxldCBjcmVhdGVfYm9vbCA9IGNyZWF0ZVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBEc3QgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBEc3RcblxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gdFxuXG4gICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgICAgbGV0IGdldCA9IGdldFxuICAgICAgICBsZXQgc2V0ID0gc2V0XG4gICAgICAgIGxldCBjcmVhdGVfYm9vbCA9IGNyZWF0ZVxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBEb19ub3RfY2hlY2tcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgTWFrZV9hbmRfdGVzdFxuICAgIChFbHQgOiBFbHQpIChTZXF1ZW5jZSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudFxuXG4gICAgICAgICAgICAgICAgICAgdmFsIHVuc2FmZV9ibGl0IDogKHQsIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlIChTZXF1ZW5jZSlcbiAgaW5jbHVkZSBUZXN0IChFbHQpIChTZXF1ZW5jZSkgKEIpXG4gIGluY2x1ZGUgQlxuZW5kXG5cbm1vZHVsZSBNYWtlX2Rpc3RpbmN0X2FuZF90ZXN0XG4gICAgKEVsdCA6IEVsdClcbiAgICAoU3JjIDogU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudCkgKERzdCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAoU3JjLnQsIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gTWFrZV9kaXN0aW5jdCAoU3JjKSAoRHN0KVxuICBpbmNsdWRlIFRlc3RfZGlzdGluY3QgKEVsdCkgKFNyYykgKERzdCkgKEIpXG4gIGluY2x1ZGUgQlxuZW5kXG5cbm1vZHVsZSBNYWtlMV9hbmRfdGVzdCAoU2VxdWVuY2UgOiBzaWdcbiAgICBpbmNsdWRlIEJsaXQuU2VxdWVuY2UxXG4gICAgaW5jbHVkZSBTZXF1ZW5jZTEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIHBvbHlcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlMSAoU2VxdWVuY2UpXG4gIGluY2x1ZGUgVGVzdDEgKFNlcXVlbmNlKSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2UxX2dlbmVyaWNfYW5kX3Rlc3RcbiAgICAoRWx0IDogRWx0MSkgKFNlcXVlbmNlIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgQmxpdC5TZXF1ZW5jZTFcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZTEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UxX2dlbmVyaWMgKFNlcXVlbmNlKVxuICBpbmNsdWRlIFRlc3QxX2dlbmVyaWMgKEVsdCkgKFNlcXVlbmNlKSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4hIEJpbmFyeV9zZWFyY2hhYmxlXG5pbmNsdWRlIFRlc3RfYmluYXJ5X3NlYXJjaGFibGVfaW50ZlxuXG5tb2R1bGUgdHlwZSBTX2dlbiA9IHNpZ1xuICBvcGVuIEJpbmFyeV9zZWFyY2hhYmxlXG5cbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2ggOiAoJ2EgdCwgJ2EgZWx0LCAnYSBlbHQpIGJpbmFyeV9zZWFyY2hcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKCdhIHQsICdhIGVsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmRleGFibGVfZ2VuX2FuZF9mb3JfdGVzdCA9IHNpZ1xuICBpbmNsdWRlIFNfZ2VuXG5cbiAgbW9kdWxlIEZvcl90ZXN0IDogc2lnXG4gICAgdmFsIGNvbXBhcmUgOiBib29sIGVsdCAtPiBib29sIGVsdCAtPiBpbnRcbiAgICB2YWwgc21hbGwgOiBib29sIGVsdFxuICAgIHZhbCBiaWcgOiBib29sIGVsdFxuICAgIHZhbCBvZl9hcnJheSA6IGJvb2wgZWx0IGFycmF5IC0+IGJvb2wgdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVGVzdF9nZW4gKE0gOiBJbmRleGFibGVfZ2VuX2FuZF9mb3JfdGVzdCkgPSBzdHJ1Y3RcbiAgb3BlbiBNXG5cbiAgbGV0JXRlc3RfbW9kdWxlIFwidGVzdF9iaW5hcnlfc2VhcmNoYWJsZVwiID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgbGV0IGNvbXBhcmUgPSBGb3JfdGVzdC5jb21wYXJlXG4gICAgICBsZXQgZWx0X2NvbXBhcmUgPSBGb3JfdGVzdC5jb21wYXJlXG4gICAgICBsZXQgcyA9IEZvcl90ZXN0LnNtYWxsXG4gICAgICBsZXQgYiA9IEZvcl90ZXN0LmJpZ1xuXG4gICAgICBsZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gfmNvbXBhcmUgdCBob3cgdiA9XG4gICAgICAgIGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIH5jb21wYXJlIChGb3JfdGVzdC5vZl9hcnJheSB0KSBob3cgdlxuICAgICAgOztcblxuICAgICAgbGV0ICggPSApID0gUG9seS5lcXVhbFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3x8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBGaXJzdF9lcXVhbF90byBiID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiIHxdIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgcyB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGI7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHM7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGI7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYExhc3RfZXF1YWxfdG8gYiA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzIHxdIGBMYXN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiOyBiIHxdIGBMYXN0X2VxdWFsX3RvIGIgPSBTb21lIDJcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHM7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYjsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3x8XSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGIgfF0gYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYiB8XSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIHMgPSBOb25lXG5cbiAgICAgIGxldCBjcmVhdGVfdGVzdF9jYXNlIChudW1fcywgbnVtX2IpID1cbiAgICAgICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSBiIH5sZW46KG51bV9zICsgbnVtX2IpIGluXG4gICAgICAgIGZvciBpID0gMCB0byBudW1fcyAtIDEgZG9cbiAgICAgICAgICBhcnIuKGkpIDwtIHNcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYXJyXG4gICAgICA7O1xuXG4gICAgICBsZXQgb25seV9zbWFsbCA9IDEwXzAwMCwgMFxuICAgICAgbGV0IG9ubHlfYmlnID0gMCwgMTBfMDAwXG4gICAgICBsZXQgYm90aCA9IDI1MzEsIDQ3MTdcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIG1hdGNoIGJpbmFyeV9zZWFyY2ggKGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCkgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIHMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIF8gLT4gdHJ1ZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIGJvdGggaW5cbiAgICAgICAgbWF0Y2ggYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIHYgLT4gdiA9IDI1MzFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgPVxuICAgICAgICBBcnJheS5pbml0IDEwMF8wMDAgfmY6KGZ1biBpIC0+IGlmIGkgPiA1MF8wMDAgdGhlbiBiIGVsc2UgcylcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBTb21lIDUwXzAwMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgICgqIHRlc3RzIGFyb3VuZCBhIGdhcCopXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgPSBTb21lIDUwXzAwMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2VxdWFsX3RvIGIgPSBTb21lIDk5Xzk5OVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gYiA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIGIgPSBTb21lIDk5Xzk5OVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICAoKiB0ZXN0IGJlZ2lubmluZyBvZiBhcnJheSAqKVxuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgICgqIHRlc3QgZW5kIG9mIGFycmF5ICopXG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBiID0gU29tZSA5Xzk5OVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBTb21lIDlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgICBmb3IgbGVuZ3RoID0gMCB0byA1IGRvXG4gICAgICAgICAgZm9yIG51bV9zID0gMCB0byBsZW5ndGggZG9cbiAgICAgICAgICAgIGxldCBhcnIgPSBBcnJheS5pbml0IGxlbmd0aCB+ZjooZnVuIGkgLT4gaWYgaSA8IG51bV9zIHRoZW4gcyBlbHNlIGIpIGluXG4gICAgICAgICAgICBmb3IgcG9zID0gLTEgdG8gbGVuZ3RoIGRvXG4gICAgICAgICAgICAgIGZvciBsZW4gPSAtMSB0byBsZW5ndGggKyAxIGRvXG4gICAgICAgICAgICAgICAgKCp0cnkqKVxuICAgICAgICAgICAgICAgIGxldCBzaG91bGRfcmFpc2UgPVxuICAgICAgICAgICAgICAgICAgRXhuLmRvZXNfcmFpc2UgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgICAgICAgICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgICAgICAgICB+dG90YWxfbGVuZ3RoOmxlbmd0aClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgICAgICAgICAgUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfnBvcyB+bGVuIH5jb21wYXJlOmVsdF9jb21wYXJlIGBMYXN0X2VxdWFsX3RvIHMpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBzaG91bGRfcmFpc2UsIHJlc3VsdCB3aXRoXG4gICAgICAgICAgICAgICAgfCB0cnVlLCBFcnJvciBfIC0+ICgpXG4gICAgICAgICAgICAgICAgfCB0cnVlLCBPayBfIC0+IGZhaWx3aXRoIFwiZXhwZWN0ZWQgaXQgdG8gcmFpc2UgYnV0IGl0IGRpZG4ndFwiXG4gICAgICAgICAgICAgICAgfCBmYWxzZSwgRXJyb3IgXyAtPiBmYWlsd2l0aCBcImV4cGVjdGVkIGl0IHRvIG5vdCByYWlzZSwgYnV0IGl0IHJhaXNlZFwiXG4gICAgICAgICAgICAgICAgfCBmYWxzZSwgT2sgcmVzdWx0IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgc2VhcmNoZWQgPSBudW1fcyAtIDEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBjb3JyZWN0X3Jlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAgIGlmIHNlYXJjaGVkIDwgcG9zXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gTm9uZVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIGxlbiA9IDBcbiAgICAgICAgICAgICAgICAgICAgdGhlbiBOb25lXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgc2VhcmNoZWQgPj0gcG9zICsgbGVuXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gU29tZSAocG9zICsgbGVuIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBTb21lIHNlYXJjaGVkXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgaWYgbm90IChjb3JyZWN0X3Jlc3VsdCA9IHJlc3VsdCkgdGhlbiBmYWlsd2l0aCBcIldyb25nIHJlc3VsdFwiXG4gICAgICAgICAgICAgICAgICAoKndpdGggZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgIGZhaWx3aXRocyBcImJpbmFyeV9zZWFyY2ggYnVnXCJcbiAgICAgICAgICAgICAgICAgICAgKGV4biwgYGxlbmd0aCBsZW5ndGgsIGBzZWFyY2hfa2V5IHNlYXJjaF9rZXksIGBwb3MgcG9zLCBgbGVuIGxlbilcbiAgICAgICAgICAgICAgICAgICAgPDpzZXhwX29mPCBleG4gKiBbIGBsZW5ndGggb2YgaW50IF0gKiBbIGBzZWFyY2hfa2V5IG9mIGludCBdXG4gICAgICAgICAgICAgICAgICAgKiBbIGBwb3Mgb2YgaW50IF0gKiBbIGBsZW4gb2YgaW50IF0gPj4qKVxuICAgICAgICAgICAgICBkb25lXG4gICAgICAgICAgICBkb25lXG4gICAgICAgICAgZG9uZVxuICAgICAgICBkb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYSA9IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIChGb3JfdGVzdC5vZl9hcnJheSBhKVxuXG4gICAgICAoKnRlc3QgZm9yIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkKilcbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBsZXQgc2VnbWVudF9vZiB4ID0gaWYgeCA9IGIgdGhlbiBgUmlnaHQgZWxzZSBgTGVmdCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYExhc3Rfb25fbGVmdCA9IFNvbWUgNTBfMDAwXG4gICAgICAgICYmIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgRmlyc3Rfb25fcmlnaHQgPSBTb21lIDUwXzAwMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGxldCBzZWdtZW50X29mIF8gPSBgUmlnaHQgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBMYXN0X29uX2xlZnQgPSBOb25lXG4gICAgICAgICYmIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgRmlyc3Rfb25fcmlnaHQgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBsZXQgc2VnbWVudF9vZiBfID0gYExlZnQgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBMYXN0X29uX2xlZnQgPSBTb21lIDk5Xzk5OVxuICAgICAgICAmJiBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYEZpcnN0X29uX3JpZ2h0ID0gTm9uZVxuICAgICAgOztcbiAgICBlbmQpXG4gIDs7XG5lbmRcblxubW9kdWxlIFRlc3QgKE0gOiBCaW5hcnlfc2VhcmNoYWJsZV9hbmRfZm9yX3Rlc3QpID0gVGVzdF9nZW4gKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IE0udFxuICAgIHR5cGUgJ2EgZWx0ID0gTS5lbHRcblxuICAgIGxldCBiaW5hcnlfc2VhcmNoID0gTS5iaW5hcnlfc2VhcmNoXG4gICAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID0gTS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gTS5Gb3JfdGVzdFxuICBlbmQpXG5cbm1vZHVsZSBUZXN0MSAoTSA6IEJpbmFyeV9zZWFyY2hhYmxlMV9hbmRfZm9yX3Rlc3QpID0gVGVzdF9nZW4gKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIE0udFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2FcblxuICAgIGxldCBiaW5hcnlfc2VhcmNoID0gTS5iaW5hcnlfc2VhcmNoXG4gICAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID0gTS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gICAgICBsZXQgb2ZfYXJyYXkgPSBNLkZvcl90ZXN0Lm9mX2FycmF5XG4gICAgICBsZXQgY29tcGFyZSA9IEJvb2wuY29tcGFyZVxuICAgICAgbGV0IHNtYWxsID0gZmFsc2VcbiAgICAgIGxldCBiaWcgPSB0cnVlXG4gICAgZW5kXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYW5kX3Rlc3QgKE0gOiBJbmRleGFibGVfYW5kX2Zvcl90ZXN0KSA9IHN0cnVjdFxuICBtb2R1bGUgQiA9IEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UgKE0pXG4gIGluY2x1ZGUgQlxuXG4gIGluY2x1ZGUgVGVzdCAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBNLnRcbiAgICAgIHR5cGUgZWx0ID0gTS5lbHRcblxuICAgICAgaW5jbHVkZSBCXG4gICAgICBtb2R1bGUgRm9yX3Rlc3QgPSBNLkZvcl90ZXN0XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlMV9hbmRfdGVzdCAoTSA6IEluZGV4YWJsZTFfYW5kX2Zvcl90ZXN0KSA9IHN0cnVjdFxuICBtb2R1bGUgQiA9IEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UxIChNKVxuICBpbmNsdWRlIEJcblxuICBpbmNsdWRlIFRlc3QxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIE0udFxuXG4gICAgICBpbmNsdWRlIEJcbiAgICAgIG1vZHVsZSBGb3JfdGVzdCA9IE0uRm9yX3Rlc3RcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEJhc2VcblxuaW5jbHVkZSAoXG4gIFN0cmluZyA6XG4gIHNpZ1xuICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlXG4gICAgICBDb21wYXJhYmxlLlNcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuICBlbmQpXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gU3RkbGliLkZpbGVuYW1lXG5cbiAgbGV0IGNoZWNrX3N1ZmZpeCA9IGNoZWNrX3N1ZmZpeFxuICBsZXQgY2hvcF9leHRlbnNpb24gPSBjaG9wX2V4dGVuc2lvblxuICBsZXQgY2hvcF9zdWZmaXggPSBjaG9wX3N1ZmZpeFxuICBsZXQgY2hvcF9zdWZmaXhfb3B0ID0gY2hvcF9zdWZmaXhfb3B0XG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gY3VycmVudF9kaXJfbmFtZVxuICBsZXQgaXNfaW1wbGljaXQgPSBpc19pbXBsaWNpdFxuICBsZXQgaXNfcmVsYXRpdmUgPSBpc19yZWxhdGl2ZVxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gcGFyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJfc2VwID0gZGlyX3NlcFxuICBsZXQgcXVvdGUgPSBxdW90ZVxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IGdldF90ZW1wX2Rpcl9uYW1lICgpXG4gIGxldCBkaXJuYW1lID0gZGlybmFtZVxuICBsZXQgYmFzZW5hbWUgPSBiYXNlbmFtZVxuZW5kXG5cbmxldCBpc19hYnNvbHV0ZSBwID0gbm90IChpc19yZWxhdGl2ZSBwKVxuXG5sZXQgY29uY2F0IHAxIHAyID1cbiAgaWYgU3RyaW5nLmlzX2VtcHR5IHAxXG4gIHRoZW5cbiAgICBQcmludGYuZmFpbHdpdGhmXG4gICAgICBcIkZpbGVuYW1lLmNvbmNhdCBjYWxsZWQgd2l0aCBhbiBlbXB0eSBzdHJpbmcgYXMgaXRzIGZpcnN0IGFyZ3VtZW50IChzZWNvbmQgXFxcbiAgICAgICBhcmd1bWVudDogJXMpXCJcbiAgICAgIHAyXG4gICAgICAoKTtcbiAgbGV0IHJlYyBjb2xsYXBzZV90cmFpbGluZyBzID1cbiAgICBtYXRjaCBTdHJpbmcucnNwbGl0MiBzIH5vbjonLycgd2l0aFxuICAgIHwgU29tZSAoXCJcIiwgKFwiLlwiIHwgXCJcIikpIC0+IFwiXCJcbiAgICB8IFNvbWUgKHMsIChcIi5cIiB8IFwiXCIpKSAtPiBjb2xsYXBzZV90cmFpbGluZyBzXG4gICAgfCBOb25lIHwgU29tZSBfIC0+IHNcbiAgaW5cbiAgbGV0IHJlYyBjb2xsYXBzZV9sZWFkaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOicvJyB3aXRoXG4gICAgfCBTb21lICgoXCIuXCIgfCBcIlwiKSwgcykgLT4gY29sbGFwc2VfbGVhZGluZyBzXG4gICAgfCBTb21lIF8gfCBOb25lIC0+IHNcbiAgaW5cbiAgY29sbGFwc2VfdHJhaWxpbmcgcDEgXiBcIi9cIiBeIGNvbGxhcHNlX2xlYWRpbmcgcDJcbjs7XG5cbmxldCB0b19hYnNvbHV0ZV9leG4gcCB+cmVsYXRpdmVfdG8gPVxuICBpZiBpc19yZWxhdGl2ZSByZWxhdGl2ZV90b1xuICB0aGVuXG4gICAgUHJpbnRmLmZhaWx3aXRoZlxuICAgICAgXCJGaWxlbmFtZS50b19hYnNvbHV0ZV9leG4gY2FsbGVkIHdpdGggYSBbcmVsYXRpdmVfdG9dIHRoYXQgaXMgYSByZWxhdGl2ZSBwYXRoOiAlc1wiXG4gICAgICByZWxhdGl2ZV90b1xuICAgICAgKClcbiAgZWxzZSBpZiBpc19hYnNvbHV0ZSBwXG4gIHRoZW4gcFxuICBlbHNlIGNvbmNhdCByZWxhdGl2ZV90byBwXG47O1xuXG5sZXQgc3BsaXQgcyA9IGRpcm5hbWUgcywgYmFzZW5hbWUgc1xuXG4oKiBbbWF4X3BhdGhuYW1lX2NvbXBvbmVudF9zaXplXSBjb21lcyBmcm9tIGdldGNvbmYgX1BPU0lYX05BTUVfTUFYIC8gKilcbmxldCBtYXhfcGF0aG5hbWVfY29tcG9uZW50X3NpemUgPSAyNTVcblxubGV0IGlzX3Bvc2l4X3BhdGhuYW1lX2NvbXBvbmVudCBzID1cbiAgbGV0IG1vZHVsZSBTID0gU3RyaW5nIGluXG4gIHMgPD4gXCIuXCJcbiAgJiYgcyA8PiBcIi4uXCJcbiAgJiYgSW50LigwIDwgUy5sZW5ndGggcylcbiAgJiYgSW50LihTLmxlbmd0aCBzIDw9IG1heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZSlcbiAgJiYgKG5vdCAoUy5jb250YWlucyBzICcvJykpXG4gICYmIG5vdCAoUy5jb250YWlucyBzICdcXDAwMCcpXG47O1xuXG5sZXQgcm9vdCA9IFwiL1wiXG5cbmxldCBzcGxpdF9leHRlbnNpb24gZm4gPVxuICBsZXQgZGlyLCBmbiA9XG4gICAgbWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOicvJyBmbiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUsIGZuXG4gICAgfCBTb21lIChwYXRoLCBmbikgLT4gU29tZSBwYXRoLCBmblxuICBpblxuICBsZXQgZm4sIGV4dCA9XG4gICAgbWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOicuJyBmbiB3aXRoXG4gICAgfCBOb25lIC0+IGZuLCBOb25lXG4gICAgfCBTb21lIChiYXNlX2ZuLCBleHQpIC0+IGJhc2VfZm4sIFNvbWUgZXh0XG4gIGluXG4gIGxldCBmbiA9XG4gICAgbWF0Y2ggZGlyIHdpdGhcbiAgICB8IE5vbmUgLT4gZm5cbiAgICB8IFNvbWUgZGlyIC0+IGRpciBeIFwiL1wiIF4gZm5cbiAgaW5cbiAgZm4sIGV4dFxuOztcblxubGV0IHBhcnRzIGZpbGVuYW1lID1cbiAgbGV0IHJlYyBsb29wIGFjYyBmaWxlbmFtZSA9XG4gICAgbWF0Y2ggc3BsaXQgZmlsZW5hbWUgd2l0aFxuICAgIHwgKFwiLlwiIGFzIGJhc2UpLCBcIi5cIiAtPiBiYXNlIDo6IGFjY1xuICAgIHwgKFwiL1wiIGFzIGJhc2UpLCBcIi9cIiAtPiBiYXNlIDo6IGFjY1xuICAgIHwgcmVzdCwgZGlyIC0+IGxvb3AgKGRpciA6OiBhY2MpIHJlc3RcbiAgaW5cbiAgbG9vcCBbXSBmaWxlbmFtZVxuOztcblxubGV0IG9mX3BhcnRzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWlsd2l0aCBcIkZpbGVuYW1lLm9mX3BhcnRzOiBlbXB0eSBwYXJ0cyBsaXN0XCJcbiAgfCByb290IDo6IHJlc3QgLT4gTGlzdC5mb2xkIHJlc3QgfmluaXQ6cm9vdCB+ZjpTdGRsaWIuRmlsZW5hbWUuY29uY2F0XG47O1xuXG5sZXQgcmVjIHNraXBfY29tbW9uX3ByZWZpeCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIHdoZW4gU3RyaW5nLmVxdWFsIGgxIGgyIC0+IHNraXBfY29tbW9uX3ByZWZpeCB0MSB0MlxuICB8IF8gLT4gbDEsIGwyXG47O1xuXG5sZXQgb2ZfYWJzb2x1dGVfZXhuIGEgfnJlbGF0aXZlX3RvOmIgPVxuICBpZiBpc19yZWxhdGl2ZSBhXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGaWxlbmFtZS5vZl9hYnNvbHV0ZV9leG46IGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aFwiXG4gICAgICAgICAgfmZpcnN0X2FyZzooYSA6IHN0cmluZyldO1xuICBpZiBpc19yZWxhdGl2ZSBiXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGaWxlbmFtZS5vZl9hYnNvbHV0ZV9leG46IFt+cmVsYXRpdmVfdG9dIG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aFwiXG4gICAgICAgICAgfnJlbGF0aXZlX3RvOihiIDogc3RyaW5nKV07XG4gIGxldCBhX3BhcnRzID0gcGFydHMgYSBpblxuICBsZXQgYl9wYXJ0cyA9IHBhcnRzIGIgaW5cbiAgbGV0IGFfc3VmZml4LCBiX3N1ZmZpeCA9IHNraXBfY29tbW9uX3ByZWZpeCBhX3BhcnRzIGJfcGFydHMgaW5cbiAgbGV0IGdvX3VwID0gTGlzdC5tYXAgfmY6KGZ1biBfIC0+IHBhcmVudF9kaXJfbmFtZSkgYl9zdWZmaXggaW5cbiAgbWF0Y2ggZ29fdXAgQCBhX3N1ZmZpeCB3aXRoXG4gIHwgW10gLT4gY3VycmVudF9kaXJfbmFtZVxuICB8IHJlbHBhdGggLT4gb2ZfcGFydHMgcmVscGF0aFxuOztcblxubGV0IGFyZ190eXBlID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgY3JlYXRlX2FyZ190eXBlID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgb3Blbl90ZW1wX2ZpbGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBvcGVuX3RlbXBfZmlsZV9mZCA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IHJlYWxwYXRoID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgdGVtcF9kaXIgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCB0ZW1wX2ZpbGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbiIsIm9wZW4hIEJhc2VcbmluY2x1ZGUgVW5pdl9tYXBfaW50ZlxubW9kdWxlIFVpZCA9IFR5cGVfZXF1YWwuSWQuVWlkXG5cbm1vZHVsZSBNYWtlMVxuICAgIChLZXkgOiBLZXkpIChEYXRhIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAoJ3MsICdhKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gICgqIEEgd3JhcHBlciBmb3IgdGhlIFtLZXldIG1vZHVsZSB0aGF0IGFkZHMgYSBkeW5hbWljIGNoZWNrIHRvIFtLZXkudHlwZV9pZF0uXG5cbiAgICAgSXQncyBhIGJ1ZyBpZiB0aGUgdXNlci1wcm92aWRlZCBbS2V5LnR5cGVfaWRdIGdpdmVzIGRpZmZlcmVudCB0eXBlIGlkcyBvbiBkaWZmZXJlbnRcbiAgICAgY2FsbHMuICBCZWNhdXNlIHRoaXMgY2hlY2sgc2hvdWxkIGJlIGZhaXJseSBjaGVhcCwgd2UgZG8gaXQgZHluYW1pY2FsbHkgdG8gYXZvaWRcbiAgICAgc3VidGxlciBwcm9ibGVtcyBsYXRlci5cblxuICAgICBPZiBjb3Vyc2UsIHdlJ3JlIG5vdCBjaGVja2luZyB0cnVseSBwYXRob2xvZ2ljYWwgdGhpbmdzIGxpa2UgdGhlIHByb3ZpZGVkXG4gICAgIFtLZXkudHlwZV9pZF0gb25seSBjaGFuZ2VzIHRoZSB2YWx1ZSBpdCByZXR1cm5zIG9uIGV2ZXJ5IHRoaXJkIGNhbGwuLi4gKilcbiAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEtleS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAoKiB0ZXN0LWZyaWVuZGx5IHNleHAgY29udmVyc2lvbiAqKVxuICAgIGxldCBzZXhwX29mX3R5cGVfaWQgdHlwZV9pZCA9XG4gICAgICBbJXNleHBcbiAgICAgICAgeyBuYW1lID0gKFR5cGVfZXF1YWwuSWQubmFtZSB0eXBlX2lkIDogc3RyaW5nKVxuICAgICAgICA7IHVpZCA9XG4gICAgICAgICAgICAoaWYgUHB4X2lubGluZV90ZXN0X2xpYi5hbV9ydW5uaW5nXG4gICAgICAgICAgICAgdGhlbiBTZXhwLkF0b20gXCI8dWlkPlwiXG4gICAgICAgICAgICAgZWxzZSBUeXBlX2VxdWFsLklkLlVpZC5zZXhwX29mX3QgKFR5cGVfZXF1YWwuSWQudWlkIHR5cGVfaWQpXG4gICAgICAgICAgICAgICAgICA6IFNleHAudClcbiAgICAgICAgfV1cbiAgICA7O1xuXG4gICAgbGV0IHR5cGVfaWQga2V5ID1cbiAgICAgIGxldCB0eXBlX2lkMSA9IEtleS50eXBlX2lkIGtleSBpblxuICAgICAgbGV0IHR5cGVfaWQyID0gS2V5LnR5cGVfaWQga2V5IGluXG4gICAgICBpZiBUeXBlX2VxdWFsLklkLnNhbWUgdHlwZV9pZDEgdHlwZV9pZDJcbiAgICAgIHRoZW4gdHlwZV9pZDFcbiAgICAgIGVsc2VcbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJbS2V5LnR5cGVfaWRdIG11c3Qgbm90IHByb3ZpZGUgZGlmZmVyZW50IHR5cGUgaWRzIHdoZW4gY2FsbGVkIG9uIHRoZSBzYW1lIFxcXG4gICAgICAgICAgICAgaW5wdXRcIlxuICAgICAgICAgICAgICAoa2V5IDogXyBLZXkudClcbiAgICAgICAgICAgICAgKHR5cGVfaWQxIDogdHlwZV9pZClcbiAgICAgICAgICAgICAgKHR5cGVfaWQyIDogdHlwZV9pZCldXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAoJ3MsICdhKSBkYXRhID0gKCdzLCAnYSkgRGF0YS50XG5cbiAgbGV0IG5hbWVfb2Zfa2V5IGtleSA9IFR5cGVfZXF1YWwuSWQubmFtZSAoS2V5LnR5cGVfaWQga2V5KVxuICBsZXQgdWlkX29mX2tleSBrZXkgPSBUeXBlX2VxdWFsLklkLnVpZCAoS2V5LnR5cGVfaWQga2V5KVxuXG4gIG1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdzIHQgPSBUIDogJ2EgS2V5LnQgKiAoJ3MsICdhKSBEYXRhLnQgLT4gJ3MgdFxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgKFQgKGtleSwgZGF0YSkpID1cbiAgICAgIERhdGEuc2V4cF9vZl90IHNleHBfb2ZfYSAoVHlwZV9lcXVhbC5JZC50b19zZXhwIChLZXkudHlwZV9pZCBrZXkpKSBkYXRhXG4gICAgOztcblxuICAgIGxldCB0eXBlX2lkX25hbWUgKFQgKGtleSwgXykpID0gbmFtZV9vZl9rZXkga2V5XG4gICAgbGV0IHR5cGVfaWRfdWlkIChUIChrZXksIF8pKSA9IHVpZF9vZl9rZXkga2V5XG5cbiAgICBsZXQgY29tcGFyZSB0MSB0MiA9XG4gICAgICBsZXQgYyA9IFN0cmluZy5jb21wYXJlICh0eXBlX2lkX25hbWUgdDEpICh0eXBlX2lkX25hbWUgdDIpIGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgVWlkLmNvbXBhcmUgKHR5cGVfaWRfdWlkIHQxKSAodHlwZV9pZF91aWQgdDIpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAncyB0ID0gJ3MgUGFja2VkLnQgTWFwLk0oVWlkKS50XG5cbiAgbGV0IHRvX2FsaXN0IHQgPSBNYXAuZGF0YSB0IHw+IExpc3Quc29ydCB+Y29tcGFyZTpQYWNrZWQuY29tcGFyZVxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIHRvX2FsaXN0IHRcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHBhY2tlZCAtPiBQYWNrZWQudHlwZV9pZF9uYW1lIHBhY2tlZCwgcGFja2VkKVxuICAgIHw+IFslc2V4cF9vZjogKHN0cmluZyAqIGEgUGFja2VkLnQpIGxpc3RdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCAodCA6IF8gdCkgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICBNYXAuaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gYXNzZXJ0IChVaWQuZXF1YWwga2V5IChQYWNrZWQudHlwZV9pZF91aWQgZGF0YSkpKSlcbiAgOztcblxuICBsZXQgc2V0IHQgfmtleSB+ZGF0YSA9IE1hcC5zZXQgdCB+a2V5Oih1aWRfb2Zfa2V5IGtleSkgfmRhdGE6KFBhY2tlZC5UIChrZXksIGRhdGEpKVxuICBsZXQgbWVtX2J5X2lkIHQgaWQgPSBNYXAubWVtIHQgaWRcbiAgbGV0IG1lbSB0IGtleSA9IG1lbV9ieV9pZCB0ICh1aWRfb2Zfa2V5IGtleSlcbiAgbGV0IHJlbW92ZV9ieV9pZCB0IGlkID0gTWFwLnJlbW92ZSB0IGlkXG4gIGxldCByZW1vdmUgdCBrZXkgPSByZW1vdmVfYnlfaWQgdCAodWlkX29mX2tleSBrZXkpXG4gIGxldCBlbXB0eSA9IE1hcC5lbXB0eSAobW9kdWxlIFVpZClcblxuICBsZXQgc2luZ2xldG9uIGtleSBkYXRhID1cbiAgICBNYXAuc2luZ2xldG9uIChtb2R1bGUgVWlkKSAodWlkX29mX2tleSBrZXkpIChQYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgPSBNYXAuaXNfZW1wdHlcblxuICBsZXQgZmluZCAodHlwZSBiKSB0IChrZXkgOiBiIEtleS50KSA9XG4gICAgbWF0Y2ggTWFwLmZpbmQgdCAodWlkX29mX2tleSBrZXkpIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAoUGFja2VkLlQgKGtleScsIHZhbHVlKSkgLT5cbiAgICAgICgqIGNhbm5vdCByYWlzZSAtLSBzZWUgW2ludmFyaWFudF0gKilcbiAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gKEtleS50eXBlX2lkIGtleSkgKEtleS50eXBlX2lkIGtleScpXG4gICAgICBpblxuICAgICAgU29tZSAodmFsdWUgOiAoXywgYikgRGF0YS50KVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gZGF0YVxuICAgIHwgTm9uZSAtPiBQcmludGYuZmFpbHdpdGhmIFwiVW5pdl9tYXAuZmluZF9leG4gb24gdW5rbm93biBrZXkgJXNcIiAobmFtZV9vZl9rZXkga2V5KSAoKVxuICA7O1xuXG4gIGxldCBhZGQgdCB+a2V5IH5kYXRhID0gaWYgbWVtIHQga2V5IHRoZW4gYER1cGxpY2F0ZSBlbHNlIGBPayAoc2V0IHQgfmtleSB+ZGF0YSlcblxuICBsZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICAgIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aFxuICAgIHwgYE9rIHQgLT4gdFxuICAgIHwgYER1cGxpY2F0ZSAtPlxuICAgICAgUHJpbnRmLmZhaWx3aXRoZiBcIlVuaXZfbWFwLmFkZF9leG4gb24gZXhpc3Rpbmcga2V5ICVzXCIgKG5hbWVfb2Zfa2V5IGtleSkgKClcbiAgOztcblxuICBsZXQgY2hhbmdlX2V4biB0IGtleSB+Zjp1cGRhdGUgPVxuICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXkgfmRhdGE6KHVwZGF0ZSBkYXRhKVxuICAgIHwgTm9uZSAtPlxuICAgICAgUHJpbnRmLmZhaWx3aXRoZiBcIlVuaXZfbWFwLmNoYW5nZV9leG4gb24gdW5rbm93biBrZXkgJXNcIiAobmFtZV9vZl9rZXkga2V5KSAoKVxuICA7O1xuXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmY6dXBkYXRlID1cbiAgICBsZXQgb3JpZyA9IGZpbmQgdCBrZXkgaW5cbiAgICBsZXQgbmV4dCA9IHVwZGF0ZSBvcmlnIGluXG4gICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleSB+ZGF0YVxuICAgIHwgTm9uZSAtPiBpZiBPcHRpb24uaXNfbm9uZSBvcmlnIHRoZW4gdCBlbHNlIHJlbW92ZSB0IGtleVxuICA7O1xuXG4gIGxldCB1cGRhdGUgdCBrZXkgfmYgPSBjaGFuZ2UgdCBrZXkgfmY6KGZ1biBkYXRhIC0+IFNvbWUgKGYgZGF0YSkpXG5cbiAgbGV0IG9mX2FsaXN0X2V4biB0ID1cbiAgICBNYXAub2ZfYWxpc3RfZXhuIChtb2R1bGUgVWlkKSAoTGlzdC5tYXAgdCB+ZjooZnVuIHAgLT4gUGFja2VkLnR5cGVfaWRfdWlkIHAsIHApKVxuICA7O1xuXG4gIGxldCB0eXBlX2VxdWFsIDogKCdzIHQsICdzIFBhY2tlZC50IE1hcC5NKFR5cGVfZXF1YWwuSWQuVWlkKS50KSBUeXBlX2VxdWFsLnQgPSBUXG5lbmRcblxubW9kdWxlIE1ha2VcbiAgICAoS2V5IDogS2V5KSAoRGF0YSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgTSA9XG4gICAgTWFrZTFcbiAgICAgIChLZXkpXG4gICAgICAoc3RydWN0XG4gICAgICAgIHR5cGUgKF8sICdhKSB0ID0gJ2EgRGF0YS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICBlbmQpXG5cbiAgdHlwZSB0ID0gdW5pdCBNLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBtb2R1bGUgS2V5ID0gS2V5XG5cbiAgdHlwZSAnYSBkYXRhID0gJ2EgRGF0YS50XG5cbiAgbGV0IGludmFyaWFudCA9IE0uaW52YXJpYW50XG4gIGxldCBlbXB0eSA9IE0uZW1wdHlcbiAgbGV0IHNpbmdsZXRvbiA9IE0uc2luZ2xldG9uXG4gIGxldCBpc19lbXB0eSA9IE0uaXNfZW1wdHlcbiAgbGV0IHNldCA9IE0uc2V0XG4gIGxldCBtZW0gPSBNLm1lbVxuICBsZXQgbWVtX2J5X2lkID0gTS5tZW1fYnlfaWRcbiAgbGV0IGZpbmQgPSBNLmZpbmRcbiAgbGV0IGZpbmRfZXhuID0gTS5maW5kX2V4blxuICBsZXQgYWRkID0gTS5hZGRcbiAgbGV0IGFkZF9leG4gPSBNLmFkZF9leG5cbiAgbGV0IGNoYW5nZSA9IE0uY2hhbmdlXG4gIGxldCBjaGFuZ2VfZXhuID0gTS5jaGFuZ2VfZXhuXG4gIGxldCB1cGRhdGUgPSBNLnVwZGF0ZVxuICBsZXQgcmVtb3ZlID0gTS5yZW1vdmVcbiAgbGV0IHJlbW92ZV9ieV9pZCA9IE0ucmVtb3ZlX2J5X2lkXG5cbiAgbW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ3MgdDEgPSAncyBNLlBhY2tlZC50ID0gVCA6ICdhIEtleS50ICogJ2EgRGF0YS50IC0+ICdzIHQxXG4gICAgdHlwZSB0ID0gdW5pdCB0MVxuICBlbmRcblxuICBsZXQgdG9fYWxpc3QgPSBNLnRvX2FsaXN0XG4gIGxldCBvZl9hbGlzdF9leG4gPSBNLm9mX2FsaXN0X2V4blxuICBsZXQgdHlwZV9lcXVhbCA6ICh0LCBQYWNrZWQudCBNYXAuTShUeXBlX2VxdWFsLklkLlVpZCkudCkgVHlwZV9lcXVhbC50ID0gVFxuZW5kXG5cbm1vZHVsZSBNZXJnZSAoS2V5IDogS2V5KSAoSW5wdXQxX2RhdGEgOiBEYXRhKSAoSW5wdXQyX2RhdGEgOiBEYXRhKSAoT3V0cHV0X2RhdGEgOiBEYXRhKSA9XG5zdHJ1Y3RcbiAgdHlwZSBmID1cbiAgICB7IGYgOlxuICAgICAgICAnYS5cbiAgICAgICAgICBrZXk6J2EgS2V5LnRcbiAgICAgICAgLT4gWyBgTGVmdCBvZiAnYSBJbnB1dDFfZGF0YS50XG4gICAgICAgICAgIHwgYFJpZ2h0IG9mICdhIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgfCBgQm90aCBvZiAnYSBJbnB1dDFfZGF0YS50ICogJ2EgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICBdXG4gICAgICAgIC0+ICdhIE91dHB1dF9kYXRhLnQgb3B0aW9uXG4gICAgfVxuXG4gIG1vZHVsZSBPdXRwdXQgPSBNYWtlIChLZXkpIChPdXRwdXRfZGF0YSlcblxuICBsZXQgbWVyZ2UgKHQxIDogTWFrZShLZXkpKElucHV0MV9kYXRhKS50KSAodDIgOiBNYWtlKEtleSkoSW5wdXQyX2RhdGEpLnQpIH5mOnsgZiB9XG4gICAgOiBNYWtlKEtleSkoT3V0cHV0X2RhdGEpLnRcbiAgICA9XG4gICAgbGV0IGYgfmtleSBtZXJnZV9yZXN1bHQgPVxuICAgICAgT3B0aW9uLm1hcCAoZiB+a2V5IG1lcmdlX3Jlc3VsdCkgfmY6KGZ1biBkYXRhIC0+IE91dHB1dC5NLlBhY2tlZC5UIChrZXksIGRhdGEpKVxuICAgIGluXG4gICAgTWFwLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBMZWZ0IGRhdGEpXG4gICAgICB8IGBSaWdodCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgUmlnaHQgZGF0YSlcbiAgICAgIHwgYEJvdGggKFQgKGxlZnRfa2V5LCBsZWZ0X2RhdGEpLCBUIChyaWdodF9rZXksIHJpZ2h0X2RhdGEpKSAtPlxuICAgICAgICAoKiBDYW4ndCByYWlzZSBkdWUgdG8gdGhlIGludmFyaWFudCAqKVxuICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gKEtleS50eXBlX2lkIGxlZnRfa2V5KSAoS2V5LnR5cGVfaWQgcmlnaHRfa2V5KVxuICAgICAgICBpblxuICAgICAgICBmIH5rZXk6bGVmdF9rZXkgKGBCb3RoIChsZWZ0X2RhdGEsIHJpZ2h0X2RhdGEpKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWVyZ2UxXG4gICAgKEtleSA6IEtleSlcbiAgICAoSW5wdXQxX2RhdGEgOiBEYXRhMSlcbiAgICAoSW5wdXQyX2RhdGEgOiBEYXRhMSlcbiAgICAoT3V0cHV0X2RhdGEgOiBEYXRhMSkgPVxuc3RydWN0XG4gIHR5cGUgKCdzMSwgJ3MyLCAnczMpIGYgPVxuICAgIHsgZiA6XG4gICAgICAgICdhLlxuICAgICAgICAgIGtleTonYSBLZXkudFxuICAgICAgICAtPiBbIGBMZWZ0IG9mICgnczEsICdhKSBJbnB1dDFfZGF0YS50XG4gICAgICAgICAgIHwgYFJpZ2h0IG9mICgnczIsICdhKSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIHwgYEJvdGggb2YgKCdzMSwgJ2EpIElucHV0MV9kYXRhLnQgKiAoJ3MyLCAnYSkgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICBdXG4gICAgICAgIC0+ICgnczMsICdhKSBPdXRwdXRfZGF0YS50IG9wdGlvblxuICAgIH1cblxuICBtb2R1bGUgT3V0cHV0ID0gTWFrZTEgKEtleSkgKE91dHB1dF9kYXRhKVxuXG4gIGxldCBtZXJnZVxuICAgICAgICAodHlwZSBzMSBzMilcbiAgICAgICAgKHQxIDogczEgTWFrZTEoS2V5KShJbnB1dDFfZGF0YSkudClcbiAgICAgICAgKHQyIDogczIgTWFrZTEoS2V5KShJbnB1dDJfZGF0YSkudClcbiAgICAgICAgfmY6eyBmIH1cbiAgICA9XG4gICAgbGV0IGYgfmtleSBtZXJnZV9yZXN1bHQgPVxuICAgICAgT3B0aW9uLm1hcCAoZiB+a2V5IG1lcmdlX3Jlc3VsdCkgfmY6KGZ1biBkYXRhIC0+IE91dHB1dC5QYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgICBpblxuICAgIE1hcC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXk6XyAtPiBmdW5jdGlvblxuICAgICAgfCBgTGVmdCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgTGVmdCBkYXRhKVxuICAgICAgfCBgUmlnaHQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYFJpZ2h0IGRhdGEpXG4gICAgICB8IGBCb3RoIChUIChsZWZ0X2tleSwgbGVmdF9kYXRhKSwgVCAocmlnaHRfa2V5LCByaWdodF9kYXRhKSkgLT5cbiAgICAgICAgKCogQ2FuJ3QgcmFpc2UgZHVlIHRvIHRoZSBpbnZhcmlhbnQgKilcbiAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIChLZXkudHlwZV9pZCBsZWZ0X2tleSkgKEtleS50eXBlX2lkIHJpZ2h0X2tleSlcbiAgICAgICAgaW5cbiAgICAgICAgZiB+a2V5OmxlZnRfa2V5IChgQm90aCAobGVmdF9kYXRhLCByaWdodF9kYXRhKSkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFR5cGVfaWRfa2V5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFR5cGVfZXF1YWwuSWQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB0eXBlX2lkID0gRm4uaWRcbmVuZFxuXG5pbmNsdWRlIChcbiAgTWFrZVxuICAgIChUeXBlX2lkX2tleSlcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZCkgOlxuICAgIFMgd2l0aCB0eXBlICdhIGRhdGEgPSAnYSBhbmQgbW9kdWxlIEtleSA6PSBUeXBlX2lkX2tleSlcblxubW9kdWxlIEtleSA9IFR5cGVfZXF1YWwuSWRcblxubW9kdWxlIFdpdGhfZGVmYXVsdCA9IHN0cnVjdFxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsga2V5IDogJ2EgVHlwZV9lcXVhbC5JZC50XG4gICAgICA7IGRlZmF1bHQgOiAnYVxuICAgICAgfVxuXG4gICAgbGV0IGNyZWF0ZSB+ZGVmYXVsdCB+bmFtZSBzZXhwX29mID1cbiAgICAgIHsgZGVmYXVsdDsga2V5ID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWUgc2V4cF9vZiB9XG4gICAgOztcblxuICAgIGxldCBpZCB0ID0gdC5rZXlcbiAgZW5kXG5cbiAgbGV0IGZpbmQgdCB7IEtleS5rZXk7IGRlZmF1bHQgfSA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdCAoZmluZCB0IGtleSlcbiAgbGV0IHNldCB0IH5rZXk6eyBLZXkua2V5OyBkZWZhdWx0ID0gXyB9IH5kYXRhID0gc2V0IHQgfmtleSB+ZGF0YVxuICBsZXQgY2hhbmdlIHQga2V5IH5mOnVwZGF0ZSA9IHNldCB0IH5rZXkgfmRhdGE6KHVwZGF0ZSAoZmluZCB0IGtleSkpXG5lbmRcblxubW9kdWxlIFdpdGhfZm9sZCA9IHN0cnVjdFxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICAgIHsga2V5IDogJ2IgV2l0aF9kZWZhdWx0LktleS50XG4gICAgICA7IGYgOiAnYiAtPiAnYSAtPiAnYlxuICAgICAgfVxuXG4gICAgbGV0IGNyZWF0ZSB+aW5pdCB+ZiB+bmFtZSBzZXhwX29mID1cbiAgICAgIHsgZjsga2V5ID0gV2l0aF9kZWZhdWx0LktleS5jcmVhdGUgfmRlZmF1bHQ6aW5pdCB+bmFtZSBzZXhwX29mIH1cbiAgICA7O1xuXG4gICAgbGV0IGlkIHQgPSBXaXRoX2RlZmF1bHQuS2V5LmlkIHQua2V5XG4gIGVuZFxuXG4gIGxldCBmaW5kIHQgeyBLZXkua2V5OyBmID0gXyB9ID0gV2l0aF9kZWZhdWx0LmZpbmQgdCBrZXlcbiAgbGV0IHNldCB0IH5rZXk6eyBLZXkua2V5OyBmID0gXyB9IH5kYXRhID0gV2l0aF9kZWZhdWx0LnNldCB0IH5rZXkgfmRhdGFcbiAgbGV0IGNoYW5nZSB0IHsgS2V5LmtleTsgZiA9IF8gfSB+Zjp1cGRhdGUgPSBXaXRoX2RlZmF1bHQuY2hhbmdlIHQga2V5IH5mOnVwZGF0ZVxuXG4gIGxldCBhZGQgdCB+a2V5OnsgS2V5LmtleTsgZiB9IH5kYXRhID1cbiAgICBXaXRoX2RlZmF1bHQuY2hhbmdlIHQga2V5IH5mOihmdW4gYWNjIC0+IGYgYWNjIGRhdGEpXG4gIDs7XG5lbmRcblxubW9kdWxlIE11bHRpID0gc3RydWN0XG4gIG9wZW4gV2l0aF9mb2xkXG5cbiAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICgnYSwgJ2EgbGlzdCkgS2V5LnRcblxuICAgIGxldCBjcmVhdGUgfm5hbWUgc2V4cF9vZiA9XG4gICAgICBLZXkuY3JlYXRlIH5pbml0OltdIH5mOihmdW4geHMgeCAtPiB4IDo6IHhzKSB+bmFtZSAoTGlzdC5zZXhwX29mX3Qgc2V4cF9vZilcbiAgICA7O1xuXG4gICAgbGV0IGlkID0gV2l0aF9mb2xkLktleS5pZFxuICBlbmRcblxuICBsZXQgc2V0ID0gc2V0XG4gIGxldCBmaW5kID0gZmluZFxuICBsZXQgYWRkID0gYWRkXG4gIGxldCBjaGFuZ2UgPSBjaGFuZ2VcbmVuZFxuIiwiaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBTdGRpb1xuXG4gIGxldCBlcHJpbnRmID0gZXByaW50ZlxuICBsZXQgcHJpbnRmID0gcHJpbnRmXG4gIGxldCBwcmludF9zID0gcHJpbnRfc1xuICBsZXQgcHJpbnRfc3RyaW5nID0gcHJpbnRfc3RyaW5nXG4gIGxldCBwcmludF9lbmRsaW5lID0gcHJpbnRfZW5kbGluZVxuICBsZXQgcHJlcnJfZW5kbGluZSA9IHByZXJyX2VuZGxpbmVcblxuICBtb2R1bGUgSW5fY2hhbm5lbCA9IEluX2NoYW5uZWxcbmVuZFxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIEJhc2UuUHJpbnRmXG5cbiAgbGV0IHNwcmludGYgPSBzcHJpbnRmXG4gIGxldCBmYWlsd2l0aGYgPSBmYWlsd2l0aGZcbiAgbGV0IGtzcHJpbnRmID0ga3NwcmludGZcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgQ09NTUFORF9PVVRQVVRfSU5TVEFMTEFUSU9OX0JBU0hcbiAgfCBDT01NQU5EX09VVFBVVF9IRUxQX1NFWFBcbiAgfCBDT01QX0NXT1JEXG5bQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHBfb2ZdXG5cbmxldCB0b19zdHJpbmcgdCA9IFNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgdClcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTZXhwbGliMC5TZXhwX2NvbnZcbiAgb3BlbiBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuICBvcGVuIFBweF9zdGFibGVfd2l0bmVzc19ydW50aW1lLlN0YWJsZV93aXRuZXNzLkV4cG9ydFxuXG4gIG1vZHVsZSBMYXp5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgbGF6eV90IFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IGNvbXBhcmUgPSBCYXNlLkxhenkuY29tcGFyZVxuICBlbmRcblxuICBtb2R1bGUgQW5vbnMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgR3JhbW1hciA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgfCBaZXJvXG4gICAgICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICAgICAgfCBNYW55IG9mIHRcbiAgICAgICAgICB8IE1heWJlIG9mIHRcbiAgICAgICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcbiAgICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgbGV0IHJlYyBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgQmFzZS5JbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBaZXJvIC0+ICgpXG4gICAgICAgICAgICB8IE9uZSBfIC0+ICgpXG4gICAgICAgICAgICB8IE1hbnkgWmVybyAtPiBmYWlsd2l0aCBcIk1hbnkgWmVybyBzaG91bGQgYmUganVzdCBaZXJvXCJcbiAgICAgICAgICAgIHwgTWFueSB0IC0+IGludmFyaWFudCB0XG4gICAgICAgICAgICB8IE1heWJlIFplcm8gLT4gZmFpbHdpdGggXCJNYXliZSBaZXJvIHNob3VsZCBiZSBqdXN0IFplcm9cIlxuICAgICAgICAgICAgfCBNYXliZSB0IC0+IGludmFyaWFudCB0XG4gICAgICAgICAgICB8IENvbmNhdCBbXSB8IENvbmNhdCBbIF8gXSAtPiBmYWlsd2l0aCBcIkZsYXR0ZW4gemVybyBhbmQgb25lLWVsZW1lbnQgQ29uY2F0XCJcbiAgICAgICAgICAgIHwgQ29uY2F0IHRzIC0+IEJhc2UuTGlzdC5pdGVyIHRzIH5mOmludmFyaWFudFxuICAgICAgICAgICAgfCBBZF9ob2MgXyAtPiAoKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIGxldCB0ID0gWyVvZl9zZXhwOiB0XSBzZXhwIGluXG4gICAgICAgICAgaW52YXJpYW50IHQ7XG4gICAgICAgICAgdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWMgdXNhZ2UgPVxuICAgICAgICAgIGxldCBvcGVuIEltcG9ydCBpblxuICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgfCBaZXJvIC0+IFwiXCJcbiAgICAgICAgICB8IE9uZSB1c2FnZSAtPiB1c2FnZVxuICAgICAgICAgIHwgTWFueSBaZXJvIC0+IGZhaWx3aXRoIFwiYnVnIGluIGNvbW1hbmQubWxcIlxuICAgICAgICAgIHwgTWFueSAoT25lIF8gYXMgdCkgLT4gc3ByaW50ZiBcIlslcyAuLi5dXCIgKHVzYWdlIHQpXG4gICAgICAgICAgfCBNYW55IHQgLT4gc3ByaW50ZiBcIlsoJXMpIC4uLl1cIiAodXNhZ2UgdClcbiAgICAgICAgICB8IE1heWJlIFplcm8gLT4gZmFpbHdpdGggXCJidWcgaW4gY29tbWFuZC5tbFwiXG4gICAgICAgICAgfCBNYXliZSB0IC0+IHNwcmludGYgXCJbJXNdXCIgKHVzYWdlIHQpXG4gICAgICAgICAgfCBDb25jYXQgdHMgLT4gQmFzZS5TdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKEJhc2UuTGlzdC5tYXAgdHMgfmY6dXNhZ2UpXG4gICAgICAgICAgfCBBZF9ob2MgdXNhZ2UgLT4gdXNhZ2VcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTW9kZWwgPSBWMVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IFVzYWdlIG9mIHN0cmluZ1xuICAgICAgICB8IEdyYW1tYXIgb2YgR3JhbW1hci5WMS50XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYyXG4gIGVuZFxuXG4gIG1vZHVsZSBGbGFnX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IGRvYyA6IHN0cmluZ1xuICAgICAgICA7IGFsaWFzZXMgOiBzdHJpbmcgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYxXG4gIGVuZFxuXG4gIG1vZHVsZSBCYXNlX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBhbm9ucyA6IEFub25zLlYyLnRcbiAgICAgICAgOyBmbGFncyA6IEZsYWdfaW5mby5WMS50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZmllbGRzLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IHVzYWdlIDogc3RyaW5nXG4gICAgICAgIDsgZmxhZ3MgOiBGbGFnX2luZm8uVjEudCBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0IHsgc3VtbWFyeTsgcmVhZG1lOyB1c2FnZTsgZmxhZ3MgfSA9XG4gICAgICAgIHsgVjIuc3VtbWFyeTsgcmVhZG1lOyBhbm9ucyA9IFVzYWdlIHVzYWdlOyBmbGFncyB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfbGF0ZXN0IHsgVjIuc3VtbWFyeTsgcmVhZG1lOyBhbm9uczsgZmxhZ3MgfSA9XG4gICAgICAgIHsgc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZVxuICAgICAgICA7IHVzYWdlID1cbiAgICAgICAgICAgIChtYXRjaCBhbm9ucyB3aXRoXG4gICAgICAgICAgICAgfCBVc2FnZSB1c2FnZSAtPiB1c2FnZVxuICAgICAgICAgICAgIHwgR3JhbW1hciBncmFtbWFyIC0+IEFub25zLkdyYW1tYXIuVjEudXNhZ2UgZ3JhbW1hcilcbiAgICAgICAgOyBmbGFnc1xuICAgICAgICB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjJcbiAgZW5kXG5cbiAgbW9kdWxlIEdyb3VwX2luZm8gPSBzdHJ1Y3RcbiAgICB0eXBlIGEgPSBEdW1teV90eXBlX2JlY2F1c2Vfd2VfY2Fubm90X2RpZ2VzdF90eXBlX2NvbnN0cnVjdG9yc19vbmx5X2NvbmNyZXRlX3R5cGVzXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIGxpc3QgTGF6eS50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBvcGVuISBCYXNlXG5cbiAgICAgIGxldCBtYXAgdCB+ZiA9XG4gICAgICAgIHsgdCB3aXRoIHN1YmNvbW1hbmRzID0gTGF6eS5tYXAgdC5zdWJjb21tYW5kcyB+ZjooTGlzdC5Bc3NvYy5tYXAgfmYpIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMlxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIG9wZW4hIEJhc2VcblxuICAgICAgbGV0IG1hcCB0IH5mID0geyB0IHdpdGggc3ViY29tbWFuZHMgPSBMaXN0LkFzc29jLm1hcCB0LnN1YmNvbW1hbmRzIH5mIH1cblxuICAgICAgbGV0IHRvX2xhdGVzdCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgfSA6ICdhIE1vZGVsLnQgPVxuICAgICAgICB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBMYXp5LmZyb21fdmFsIHN1YmNvbW1hbmRzIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9sYXRlc3QgKHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyB9IDogJ2EgTW9kZWwudCkgOiAnYSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gTGF6eS5mb3JjZSBzdWJjb21tYW5kcyB9XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRXhlY19pbmZvID0gc3RydWN0XG4gICAgbGV0IGFic19wYXRoIH5kaXIgcGF0aCA9XG4gICAgICBpZiBGaWxlbmFtZV9iYXNlLmlzX2Fic29sdXRlIHBhdGggdGhlbiBwYXRoIGVsc2UgRmlsZW5hbWVfYmFzZS5jb25jYXQgZGlyIHBhdGhcbiAgICA7O1xuXG4gICAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEJhc2UuRm4uaWRcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBCYXNlLkZuLmlkXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWM1xuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IHRvX3YzIHQgOiBWMy50ID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyB3b3JraW5nX2RpciA9IHQud29ya2luZ19kaXJcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA9IHQucGF0aF90b19leGVcbiAgICAgICAgOyBjaGlsZF9zdWJjb21tYW5kID0gW11cbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3YzICh0IDogVjMudCkgPVxuICAgICAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICAgICAgOyByZWFkbWUgPSB0LnJlYWRtZVxuICAgICAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gYWJzX3BhdGggfmRpcjp0LndvcmtpbmdfZGlyIHQucGF0aF90b19leGVcbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEJhc2UuRm4uY29tcG9zZSBWMy50b19sYXRlc3QgdG9fdjNcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBCYXNlLkZuLmNvbXBvc2Ugb2ZfdjMgVjMub2ZfbGF0ZXN0XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyAoKiBbcGF0aF90b19leGVdIG11c3QgYmUgYWJzb2x1dGUuICopXG4gICAgICAgICAgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCB0b192MiB0IDogVjIudCA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgd29ya2luZ19kaXIgPSBcIi9cIlxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gdC5wYXRoX3RvX2V4ZVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfdjIgKHQgOiBWMi50KSA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgcGF0aF90b19leGUgPSBhYnNfcGF0aCB+ZGlyOnQud29ya2luZ19kaXIgdC5wYXRoX3RvX2V4ZVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gQmFzZS5Gbi5jb21wb3NlIFYyLnRvX2xhdGVzdCB0b192MlxuICAgICAgbGV0IG9mX2xhdGVzdCA9IEJhc2UuRm4uY29tcG9zZSBvZl92MiBWMi5vZl9sYXRlc3RcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEZ1bGx5X2ZvcmNlZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBCYXNpYyBvZiBCYXNlX2luZm8uVjIudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMi50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjMudCAqIHRcbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjFcbiAgZW5kXG5cbiAgbW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLlYyLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjIudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYzLnRcbiAgICAgICAgfCBMYXp5IG9mIHQgTGF6eS50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEJhc2UuRm4uaWRcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBCYXNlLkZuLmlkXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWM1xuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLlYyLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjEudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYyLnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgcmVjIHRvX2xhdGVzdCA6IHQgLT4gTW9kZWwudCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgYlxuICAgICAgICB8IEV4ZWMgZSAtPiBFeGVjIChFeGVjX2luZm8uVjIudG9fbGF0ZXN0IGUpXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS50b19sYXRlc3QgKEdyb3VwX2luZm8uVjEubWFwIGcgfmY6dG9fbGF0ZXN0KSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgb2ZfbGF0ZXN0IDogTW9kZWwudCAtPiB0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSBiXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMi5vZl9sYXRlc3QgZSlcbiAgICAgICAgfCBMYXp5IHRodW5rIC0+IG9mX2xhdGVzdCAoQmFzZS5MYXp5LmZvcmNlIHRodW5rKVxuICAgICAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8uVjEubWFwIChHcm91cF9pbmZvLlYxLm9mX2xhdGVzdCBnKSB+ZjpvZl9sYXRlc3QpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLlYxLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjEudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYxLnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgcmVjIHRvX2xhdGVzdCA6IHQgLT4gTW9kZWwudCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgKEJhc2VfaW5mby5WMS50b19sYXRlc3QgYilcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYxLnRvX2xhdGVzdCBlKVxuICAgICAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8uVjEudG9fbGF0ZXN0IChHcm91cF9pbmZvLlYxLm1hcCBnIH5mOnRvX2xhdGVzdCkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIG9mX2xhdGVzdCA6IE1vZGVsLnQgLT4gdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgKEJhc2VfaW5mby5WMS5vZl9sYXRlc3QgYilcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYxLm9mX2xhdGVzdCBlKVxuICAgICAgICB8IExhenkgdGh1bmsgLT4gb2ZfbGF0ZXN0IChCYXNlLkxhenkuZm9yY2UgdGh1bmspXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS5tYXAgKEdyb3VwX2luZm8uVjEub2ZfbGF0ZXN0IGcpIH5mOm9mX2xhdGVzdClcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVmVyc2lvbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IFYxIG9mIFYxLnRcbiAgICAgICAgfCBWMiBvZiBWMi50XG4gICAgICAgIHwgVjMgb2YgVjMudCAoKiBhdmFpbGFibGUgYXQgbGVhc3Qgc2luY2UgMjAyMC0wNCAqKVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgdmFyaWFudHMsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBWMSB0IC0+IFYxLnRvX2xhdGVzdCB0XG4gICAgICAgIHwgVjIgdCAtPiBWMi50b19sYXRlc3QgdFxuICAgICAgICB8IFYzIHQgLT4gVjMudG9fbGF0ZXN0IHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9sYXRlc3QgfnZlcnNpb25fdG9fdXNlIGxhdGVzdCA9XG4gICAgICAgIG1hdGNoIHZlcnNpb25fdG9fdXNlIHdpdGhcbiAgICAgICAgfCAxIC0+IFYxIChWMS5vZl9sYXRlc3QgbGF0ZXN0KVxuICAgICAgICB8IDIgLT4gVjIgKFYyLm9mX2xhdGVzdCBsYXRlc3QpXG4gICAgICAgIHwgMyAtPiBWMyAoVjMub2ZfbGF0ZXN0IGxhdGVzdClcbiAgICAgICAgfCBvdGhlciAtPlxuICAgICAgICAgIEJhc2UuRXJyb3IuY3JlYXRlXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcInVuc3VwcG9ydGVkIHZlcnNpb25fdG9fdXNlXCJcbiAgICAgICAgICAgIG90aGVyXG4gICAgICAgICAgICBbJXNleHBfb2Y6IGludF1cbiAgICAgICAgICB8PiBCYXNlLkVycm9yLnJhaXNlXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5vcGVuISBCYXNlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFub25zID0gc3RydWN0XG4gIG1vZHVsZSBHcmFtbWFyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU3RhYmxlLkFub25zLkdyYW1tYXIuTW9kZWwudCA9XG4gICAgICB8IFplcm9cbiAgICAgIHwgT25lIG9mIHN0cmluZ1xuICAgICAgfCBNYW55IG9mIHRcbiAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgfCBDb25jYXQgb2YgdCBsaXN0XG4gICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGludmFyaWFudCA9IFN0YWJsZS5Bbm9ucy5HcmFtbWFyLk1vZGVsLmludmFyaWFudFxuICAgIGxldCB1c2FnZSA9IFN0YWJsZS5Bbm9ucy5HcmFtbWFyLk1vZGVsLnVzYWdlXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFN0YWJsZS5Bbm9ucy5Nb2RlbC50ID1cbiAgICB8IFVzYWdlIG9mIHN0cmluZ1xuICAgIHwgR3JhbW1hciBvZiBHcmFtbWFyLnRcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgTnVtX29jY3VycmVuY2VzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBhdF9sZWFzdF9vbmNlIDogYm9vbFxuICAgIDsgYXRfbW9zdF9vbmNlIDogYm9vbFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IG1heWJlX21pc3NpbmdfcHJlZml4ID0gXCJbXCJcbiAgbGV0IG1heWJlX21pc3Npbmdfc3VmZml4ID0gXCJdXCJcbiAgbGV0IG1heWJlX21vcmVfc3VmZml4ID0gXCIgLi4uXCJcblxuICBsZXQgdG9faGVscF9zdHJpbmcgdCB+ZmxhZ19uYW1lID1cbiAgICBsZXQgeyBhdF9sZWFzdF9vbmNlOyBhdF9tb3N0X29uY2UgfSA9IHQgaW5cbiAgICBsZXQgZGVzY3JpcHRpb24gPVxuICAgICAgaWYgYXRfbGVhc3Rfb25jZVxuICAgICAgdGhlbiBmbGFnX25hbWVcbiAgICAgIGVsc2UgU3RyaW5nLmNvbmNhdCBbIG1heWJlX21pc3NpbmdfcHJlZml4OyBmbGFnX25hbWU7IG1heWJlX21pc3Npbmdfc3VmZml4IF1cbiAgICBpblxuICAgIGlmIGF0X21vc3Rfb25jZSB0aGVuIGRlc2NyaXB0aW9uIGVsc2UgU3RyaW5nLmNvbmNhdCBbIGRlc2NyaXB0aW9uOyBtYXliZV9tb3JlX3N1ZmZpeCBdXG4gIDs7XG5cbiAgbGV0IG9mX2hlbHBfc3RyaW5nIG5hbWUgPVxuICAgIGxldCBhdF9tb3N0X29uY2UsIG5hbWUgPVxuICAgICAgbWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IG5hbWUgfnN1ZmZpeDptYXliZV9tb3JlX3N1ZmZpeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZSwgbmFtZVxuICAgICAgfCBTb21lIG5hbWUgLT4gZmFsc2UsIG5hbWVcbiAgICBpblxuICAgIGxldCBhdF9sZWFzdF9vbmNlLCBuYW1lID1cbiAgICAgIG1hdGNoXG4gICAgICAgIFN0cmluZy5jaG9wX3ByZWZpeCBuYW1lIH5wcmVmaXg6bWF5YmVfbWlzc2luZ19wcmVmaXhcbiAgICAgICAgfD4gT3B0aW9uLmJpbmQgfmY6KFN0cmluZy5jaG9wX3N1ZmZpeCB+c3VmZml4Om1heWJlX21pc3Npbmdfc3VmZml4KVxuICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWUsIG5hbWVcbiAgICAgIHwgU29tZSBuYW1lIC0+IGZhbHNlLCBuYW1lXG4gICAgaW5cbiAgICB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSB9LCBuYW1lXG4gIDs7XG5cbiAgbGV0JWV4cGVjdF90ZXN0IFwidG9faGVscF9zdHJpbmdcIiA9XG4gICAgbGV0IGZsYWdfbmFtZSA9IFwibmFtZVwiIGluXG4gICAgTGlzdC5pdGVyIFslYWxsOiB0XSB+ZjooZnVuIHQgLT5cbiAgICAgIGxldCBzID0gdG9faGVscF9zdHJpbmcgdCB+ZmxhZ19uYW1lIGluXG4gICAgICBwcmludF9zIFslbWVzc2FnZSBcIlwiIH5fOih0IDogdCkgc107XG4gICAgICBsZXQgdCcsIGZsYWdfbmFtZScgPSBvZl9oZWxwX3N0cmluZyBzIGluXG4gICAgICBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogdF0gdCB0Jyk7XG4gICAgICBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogc3RyaW5nXSBmbGFnX25hbWUgZmxhZ19uYW1lJykpO1xuICAgIFslZXhwZWN0XG4gICAgICB7fFxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIGZhbHNlKSAoYXRfbW9zdF9vbmNlIGZhbHNlKSkgXCJbbmFtZV0gLi4uXCIpXG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgdHJ1ZSkgKGF0X21vc3Rfb25jZSBmYWxzZSkpIFwibmFtZSAuLi5cIilcbiAgICAgICAgKCgoYXRfbGVhc3Rfb25jZSBmYWxzZSkgKGF0X21vc3Rfb25jZSB0cnVlKSkgW25hbWVdKVxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIHRydWUpIChhdF9tb3N0X29uY2UgdHJ1ZSkpIG5hbWUpIHx9XVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbGFnX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkZsYWdfaW5mby5Nb2RlbC50ID1cbiAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICA7IGRvYyA6IHN0cmluZ1xuICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IHBhcnNlX25hbWUgdCA9XG4gICAgbGV0IG51bV9vY2N1cnJlbmNlcywgZmxhZ19uYW1lID0gTnVtX29jY3VycmVuY2VzLm9mX2hlbHBfc3RyaW5nIHQubmFtZSBpblxuICAgIG1hdGNoIFN0cmluZy5zcGxpdCBmbGFnX25hbWUgfm9uOicgJyB3aXRoXG4gICAgfCBbIGZsYWdfbmFtZSBdIC0+IE9rIChudW1fb2NjdXJyZW5jZXMsIGZhbHNlLCBmbGFnX25hbWUpXG4gICAgfCBbIGZsYWdfbmFtZTsgX2FyZ19kb2MgXSAtPiBPayAobnVtX29jY3VycmVuY2VzLCB0cnVlLCBmbGFnX25hbWUpXG4gICAgfCBfIC0+IEVycm9yIChFcnJvci5jcmVhdGVfcyBbJW1lc3NhZ2UgXCJVbmFibGUgdG8gcGFyc2VcIiBmbGFnX25hbWVdKVxuICA7O1xuXG4gICgqIFVzZXJzIGFyZSBsaWtlbHkgdG8gY2FsbCBhbGwgdGhyZWUgb2YgdGhlc2UgZnVuY3Rpb25zLCBpbiB3aGljaCBjYXNlIHdlIHdpbGwgcmUtcGFyc2VcbiAgICAgdGhlIFtuYW1lXSBzZXZlcmFsIHRpbWVzLiBXZSBkb24ndCBleHBlY3QgdXNlcnMgb2YgdGhlc2UgZnVuY3Rpb25zIHRvIGNhcmUgYWJvdXQgdGhlXG4gICAgIGluZWZmaWNpZW5jeS4gKilcbiAgbGV0IGZsYWdfbmFtZSB0ID1cbiAgICBwYXJzZV9uYW1lIHRcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoKF8gOiBOdW1fb2NjdXJyZW5jZXMudCksIChfIDogYm9vbCksIGZsYWdfbmFtZSkgLT4gZmxhZ19uYW1lKVxuICA7O1xuXG4gIGxldCBudW1fb2NjdXJyZW5jZXMgdCA9XG4gICAgcGFyc2VfbmFtZSB0XG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKG51bV9vY2N1cnJlbmNlcywgKF8gOiBib29sKSwgKF8gOiBzdHJpbmcpKSAtPlxuICAgICAgbnVtX29jY3VycmVuY2VzKVxuICA7O1xuXG4gIGxldCByZXF1aXJlc19hcmcgdCA9XG4gICAgcGFyc2VfbmFtZSB0XG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKChfIDogTnVtX29jY3VycmVuY2VzLnQpLCByZXF1aXJlc19hcmcsIChfIDogc3RyaW5nKSkgLT5cbiAgICAgIHJlcXVpcmVzX2FyZylcbiAgOztcblxuICBsZXQgaGVscF9zY3JlZW5fY29tcGFyZSBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgXywgXCJbLWhlbHBdXCIgLT4gLTFcbiAgICB8IFwiWy1oZWxwXVwiLCBfIC0+IDFcbiAgICB8IF8sIFwiWy12ZXJzaW9uXVwiIC0+IC0xXG4gICAgfCBcIlstdmVyc2lvbl1cIiwgXyAtPiAxXG4gICAgfCBfLCBcIlstYnVpbGQtaW5mb11cIiAtPiAtMVxuICAgIHwgXCJbLWJ1aWxkLWluZm9dXCIsIF8gLT4gMVxuICAgIHwgXywgXCJoZWxwXCIgLT4gLTFcbiAgICB8IFwiaGVscFwiLCBfIC0+IDFcbiAgICB8IF8sIFwidmVyc2lvblwiIC0+IC0xXG4gICAgfCBcInZlcnNpb25cIiwgXyAtPiAxXG4gICAgfCBfIC0+IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgRmxhZ19oZWxwX2Rpc3BsYXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRmxhZ19pbmZvLnQgbGlzdFxuXG4gIGxldCBzb3J0IHQgPVxuICAgIExpc3Quc3RhYmxlX3NvcnQgdCB+Y29tcGFyZTooZnVuIGEgYiAtPlxuICAgICAgRmxhZ19pbmZvLmhlbHBfc2NyZWVuX2NvbXBhcmUgYS5GbGFnX2luZm8ubmFtZSBiLkZsYWdfaW5mby5uYW1lKVxuICA7O1xuXG4gIGxldCB3b3JkX3dyYXBfYW5kX3N0cmlwIHRleHQgd2lkdGggPVxuICAgIGxldCBjaHVua3MgPSBTdHJpbmcuc3BsaXQgdGV4dCB+b246J1xcbicgaW5cbiAgICBMaXN0LmNvbmNhdF9tYXAgY2h1bmtzIH5mOihmdW4gdGV4dCAtPlxuICAgICAgbGV0IHdvcmRzID1cbiAgICAgICAgU3RyaW5nLnNwbGl0IHRleHQgfm9uOicgJ1xuICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIHdvcmQgLT4gbm90IChTdHJpbmcuaXNfZW1wdHkgd29yZCkpXG4gICAgICBpblxuICAgICAgbWF0Y2hcbiAgICAgICAgTGlzdC5mb2xkIHdvcmRzIH5pbml0Ok5vbmUgfmY6KGZ1biBhY2Mgd29yZCAtPlxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChtYXRjaCBhY2Mgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBbXSwgd29yZFxuICAgICAgICAgICAgIHwgU29tZSAobGluZXMsIGxpbmUpIC0+XG4gICAgICAgICAgICAgICAoKiBlZmZpY2llbmN5IGlzIG5vdCBhIGNvbmNlcm4gZm9yIHRoZSBzdHJpbmcgbGVuZ3RocyB3ZSBleHBlY3QgKilcbiAgICAgICAgICAgICAgIGxldCBsaW5lX2FuZF93b3JkID0gbGluZSBeIFwiIFwiIF4gd29yZCBpblxuICAgICAgICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBsaW5lX2FuZF93b3JkIDw9IHdpZHRoXG4gICAgICAgICAgICAgICB0aGVuIGxpbmVzLCBsaW5lX2FuZF93b3JkXG4gICAgICAgICAgICAgICBlbHNlIGxpbmUgOjogbGluZXMsIHdvcmQpKVxuICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgKGxpbmVzLCBsaW5lKSAtPiBMaXN0LnJldiAobGluZSA6OiBsaW5lcykpXG4gIDs7XG5cbiAgbW9kdWxlIERpc3BsYXkgOiBzaWdcbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IG51bV9jb2xzID0gODBcbiAgICBsZXQgc3BhY2VzX3N0cmluZyB3aWR0aCA9IFN0cmluZy5tYWtlIHdpZHRoICcgJ1xuXG4gICAgbGV0IHBhZF9zcGFjZXNfdG9fc3VmZml4IHggfndpZHRoID1cbiAgICAgIGxldCBzbGFjayA9IHdpZHRoIC0gU3RyaW5nLmxlbmd0aCB4IGluXG4gICAgICB4IF4gc3BhY2VzX3N0cmluZyBzbGFja1xuICAgIDs7XG5cbiAgICBsZXQgaW5kZW50YXRpb24gPSBcIiAgXCJcbiAgICBsZXQgaW5kZW50X2FuZF9uZXdsaW5lIHggPSBMaXN0LmNvbmNhdCBbIFsgaW5kZW50YXRpb24gXTsgeDsgWyBcIlxcblwiIF0gXVxuICAgIGxldCBzcGFjaW5nX2RvdCA9IFwiLiBcIlxuXG4gICAgbGV0IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgPVxuICAgICAgMjdcbiAgICA7O1xuXG4gICAgbGV0IGRvY3VtZW50YXRpb25fc3RhcnRfY29sdW1uID0gZG90X2luZGVudGF0aW9uX29mZnNldCArIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb25cbiAgICBsZXQgbGhzX3dpZHRoID0gZG9jdW1lbnRhdGlvbl9zdGFydF9jb2x1bW5cbiAgICBsZXQgbGhzX3BhZF93aWR0aCA9IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgKyBTdHJpbmcubGVuZ3RoIGluZGVudGF0aW9uXG4gICAgbGV0IGxoc19wYWQgPSBzcGFjZXNfc3RyaW5nIGxoc19wYWRfd2lkdGhcblxuICAgIGxldCBsaHNfcGFkX2FuZF9uZXdsaW5lX3Rlcm1pbmF0ZSA9XG4gICAgICBMaXN0Lm1hcCB+ZjooZnVuIHYgLT4gaW5kZW50X2FuZF9uZXdsaW5lIFsgbGhzX3BhZDsgdiBdKVxuICAgIDs7XG5cbiAgICBsZXQgcm93cyBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIGRvY3VtZW50YXRpb24gPVxuICAgICAgbGV0IGZsYWdfb25faXRzX293bl9saW5lID1cbiAgICAgICAgbGV0IGZsYWdfd2lkdGggPVxuICAgICAgICAgIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb24gKyBTdHJpbmcubGVuZ3RoIGZsYWdfbmFtZV93aXRoX2FsaWFzZXNcbiAgICAgICAgaW5cbiAgICAgICAgaWYgZmxhZ193aWR0aCA+PSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ICsgU3RyaW5nLmxlbmd0aCBzcGFjaW5nX2RvdFxuICAgICAgICB0aGVuIGluZGVudF9hbmRfbmV3bGluZSBbIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW5kZW50X2FuZF9uZXdsaW5lXG4gICAgICAgICAgICBbIHBhZF9zcGFjZXNfdG9fc3VmZml4IH53aWR0aDpkb3RfaW5kZW50YXRpb25fb2Zmc2V0IGZsYWdfbmFtZV93aXRoX2FsaWFzZXNcbiAgICAgICAgICAgIDsgc3BhY2luZ19kb3RcbiAgICAgICAgICAgIF1cbiAgICAgIGluXG4gICAgICBsZXQgd3JhcHBlZF9kb2N1bWVudGF0aW9uID1cbiAgICAgICAgd29yZF93cmFwX2FuZF9zdHJpcFxuICAgICAgICAgIGRvY3VtZW50YXRpb25cbiAgICAgICAgICAobnVtX2NvbHMgLSBsaHNfd2lkdGggLSBTdHJpbmcubGVuZ3RoIGluZGVudGF0aW9uKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHdyYXBwZWRfZG9jdW1lbnRhdGlvbiB3aXRoXG4gICAgICB8IFtdIC0+IFsgZmxhZ19vbl9pdHNfb3duX2xpbmUgXVxuICAgICAgfCBkb2Nfd3JhcHBlZF9maXJzdF9saW5lIDo6IGRvY193cmFwcGVkX3Jlc3RfbGluZXMgLT5cbiAgICAgICAgbGV0IHdyYXBwZWRfZG9jX2xpbmVzID0gbGhzX3BhZF9hbmRfbmV3bGluZV90ZXJtaW5hdGUgZG9jX3dyYXBwZWRfcmVzdF9saW5lcyBpblxuICAgICAgICBsZXQgcHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfd2l0aCB4ID1cbiAgICAgICAgICBpbmRlbnRfYW5kX25ld2xpbmVcbiAgICAgICAgICAgIFsgcGFkX3NwYWNlc190b19zdWZmaXggfndpZHRoOmRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgeFxuICAgICAgICAgICAgOyBzcGFjaW5nX2RvdFxuICAgICAgICAgICAgOyBkb2Nfd3JhcHBlZF9maXJzdF9saW5lXG4gICAgICAgICAgICBdXG4gICAgICAgIGluXG4gICAgICAgIGlmIFN0cmluZy5sZW5ndGggZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyA+PSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0XG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmbGFnX29uX2l0c19vd25fbGluZVxuICAgICAgICAgIDo6IHByZWZpeF9kb2Nfd3JhcHBlZF9maXJzdF9saW5lX3dpdGggXCJcIlxuICAgICAgICAgIDo6IHdyYXBwZWRfZG9jX2xpbmVzXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV93aXRoIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgOjogd3JhcHBlZF9kb2NfbGluZXNcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgIExpc3QuY29uY2F0X21hcCB0IH5mOihmdW4gdCAtPlxuICAgICAgICBsZXQgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyA9XG4gICAgICAgICAgbGV0IGZsYWcgPSB0LkZsYWdfaW5mby5uYW1lIGluXG4gICAgICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoZmxhZyA6OiB0LmFsaWFzZXMpXG4gICAgICAgIGluXG4gICAgICAgIHJvd3MgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyB0LmRvYyB8PiBMaXN0LmNvbmNhdClcbiAgICAgIHw+IFN0cmluZy5jb25jYXRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdG9fc3RyaW5nIHQgPSBEaXNwbGF5LnRvX3N0cmluZyB0XG5lbmRcblxubW9kdWxlIEtleV90eXBlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBTdWJjb21tYW5kXG4gICAgfCBGbGFnXG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTdWJjb21tYW5kIC0+IFwic3ViY29tbWFuZFwiXG4gICAgfCBGbGFnIC0+IFwiZmxhZ1wiXG4gIDs7XG5lbmRcblxubGV0IGxvb2t1cF9leHBhbmQgYWxpc3QgcHJlZml4IGtleV90eXBlID1cbiAgbGV0IGlzX2Rhc2ggPSBDaGFyLmVxdWFsICctJyBpblxuICBsZXQgYWxpc3QgPVxuICAgICgqIG5vIHBhcnRpYWwgbWF0Y2hlcyB1bmxlc3Mgc29tZSBub24tZGFzaCBjaGFyIGlzIHByZXNlbnQgKilcbiAgICBpZiBTdHJpbmcuZm9yX2FsbCBwcmVmaXggfmY6aXNfZGFzaFxuICAgIHRoZW4gTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoa2V5LCAoZGF0YSwgXykpIC0+IGtleSwgKGRhdGEsIGBGdWxsX21hdGNoX3JlcXVpcmVkKSlcbiAgICBlbHNlIGFsaXN0XG4gIGluXG4gIG1hdGNoXG4gICAgTGlzdC5maWx0ZXIgYWxpc3QgfmY6KGZ1bmN0aW9uXG4gICAgICB8IGtleSwgKF8sIGBGdWxsX21hdGNoX3JlcXVpcmVkKSAtPiBTdHJpbmcuKCA9ICkga2V5IHByZWZpeFxuICAgICAgfCBrZXksIChfLCBgUHJlZml4KSAtPiBTdHJpbmcuaXNfcHJlZml4IGtleSB+cHJlZml4KVxuICB3aXRoXG4gIHwgWyAoa2V5LCAoZGF0YSwgX25hbWVfbWF0Y2hpbmcpKSBdIC0+IE9rIChrZXksIGRhdGEpXG4gIHwgW10gLT4gRXJyb3IgKHNwcmludGYgIVwidW5rbm93biAle0tleV90eXBlfSAlc1wiIGtleV90eXBlIHByZWZpeClcbiAgfCBtYXRjaGVzIC0+XG4gICAgKG1hdGNoIExpc3QuZmluZCBtYXRjaGVzIH5mOihmdW4gKGtleSwgXykgLT4gU3RyaW5nLiggPSApIGtleSBwcmVmaXgpIHdpdGhcbiAgICAgfCBTb21lIChrZXksIChkYXRhLCBfbmFtZV9tYXRjaGluZykpIC0+IE9rIChrZXksIGRhdGEpXG4gICAgIHwgTm9uZSAtPlxuICAgICAgIGxldCBtYXRjaGluZ19rZXlzID0gTGlzdC5tYXAgfmY6ZnN0IG1hdGNoZXMgaW5cbiAgICAgICBFcnJvclxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICFcIiV7S2V5X3R5cGV9ICVzIGlzIGFuIGFtYmlndW91cyBwcmVmaXg6ICVzXCJcbiAgICAgICAgICAgIGtleV90eXBlXG4gICAgICAgICAgICBwcmVmaXhcbiAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIG1hdGNoaW5nX2tleXMpKSlcbjs7XG5cbm1vZHVsZSBCYXNlX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkJhc2VfaW5mby5Nb2RlbC50ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICA7IGFub25zIDogQW5vbnMudFxuICAgIDsgZmxhZ3MgOiBGbGFnX2luZm8udCBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IGZpbmRfZmxhZyB0IHByZWZpeCA9XG4gICAgbWF0Y2ggU3RyaW5nLmlzX3ByZWZpeCBwcmVmaXggfnByZWZpeDpcIi1cIiB3aXRoXG4gICAgfCBmYWxzZSAtPiBFcnJvciAoRXJyb3IuY3JlYXRlX3MgWyVtZXNzYWdlIFwiRmxhZ3MgbXVzdCBiZWdpbiB3aXRoICctJ1wiIHByZWZpeF0pXG4gICAgfCB0cnVlIC0+XG4gICAgICBsZXQlYmluZC5Pcl9lcnJvciBjaG9pY2VzID1cbiAgICAgICAgTGlzdC5tYXAgdC5mbGFncyB+ZjooZnVuIChmbGFnX2luZm8gOiBGbGFnX2luZm8udCkgLT5cbiAgICAgICAgICBsZXQlYmluZC5Pcl9lcnJvciBmbGFnX25hbWUgPSBGbGFnX2luZm8uZmxhZ19uYW1lIGZsYWdfaW5mbyBpblxuICAgICAgICAgIE9rXG4gICAgICAgICAgICAoTGlzdC5tYXAgKGZsYWdfbmFtZSA6OiBmbGFnX2luZm8uYWxpYXNlcykgfmY6KGZ1biBrZXkgLT5cbiAgICAgICAgICAgICAgIGtleSwgKGZsYWdfaW5mbywgYFByZWZpeCkpKSlcbiAgICAgICAgfD4gT3JfZXJyb3IuY29tYmluZV9lcnJvcnNcbiAgICAgIGluXG4gICAgICBsb29rdXBfZXhwYW5kIChMaXN0LmNvbmNhdCBjaG9pY2VzKSBwcmVmaXggRmxhZ1xuICAgICAgfD4gUmVzdWx0Lm1hcF9lcnJvciB+ZjpFcnJvci5vZl9zdHJpbmdcbiAgICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjpzbmRcbiAgOztcblxuICBsZXQgZ2V0X3VzYWdlIHQgPVxuICAgIG1hdGNoIHQuYW5vbnMgd2l0aFxuICAgIHwgVXNhZ2UgdXNhZ2UgLT4gdXNhZ2VcbiAgICB8IEdyYW1tYXIgZ3JhbW1hciAtPiBBbm9ucy5HcmFtbWFyLnVzYWdlIGdyYW1tYXJcbiAgOztcbmVuZFxuXG5tb2R1bGUgR3JvdXBfaW5mbyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBTdGFibGUuR3JvdXBfaW5mby5Nb2RlbC50ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBMaXN0LnQgTGF6eS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IGZpbmRfc3ViY29tbWFuZCB0IHByZWZpeCA9XG4gICAgbWF0Y2ggU3RyaW5nLmlzX3ByZWZpeCBwcmVmaXggfnByZWZpeDpcIi1cIiB3aXRoXG4gICAgfCB0cnVlIC0+XG4gICAgICBFcnJvciAoRXJyb3IuY3JlYXRlX3MgWyVtZXNzYWdlIFwiU3ViY29tbWFuZHMgbXVzdCBub3QgYmVnaW4gd2l0aCAnLSdcIiBwcmVmaXhdKVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIGxldCBjaG9pY2VzID1cbiAgICAgICAgTGlzdC5tYXAgKGZvcmNlIHQuc3ViY29tbWFuZHMpIH5mOihmdW4gKGtleSwgYSkgLT4ga2V5LCAoYSwgYFByZWZpeCkpXG4gICAgICBpblxuICAgICAgbG9va3VwX2V4cGFuZCBjaG9pY2VzIHByZWZpeCBTdWJjb21tYW5kXG4gICAgICB8PiBSZXN1bHQubWFwX2Vycm9yIH5mOkVycm9yLm9mX3N0cmluZ1xuICAgICAgfD4gT3JfZXJyb3IubWFwIH5mOnNuZFxuICA7O1xuXG4gIGxldCBtYXAgPSBTdGFibGUuR3JvdXBfaW5mby5Nb2RlbC5tYXBcbmVuZFxuXG5tb2R1bGUgRXhlY19pbmZvID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5FeGVjX2luZm8uTW9kZWwudCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZmllbGRzLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBGdWxseV9mb3JjZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkZ1bGx5X2ZvcmNlZC5Nb2RlbC50ID1cbiAgICB8IEJhc2ljIG9mIEJhc2VfaW5mby50XG4gICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8udFxuICAgIHwgRXhlYyBvZiBFeGVjX2luZm8udCAqIHRcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgZXhwYW5kZWRfc3ViY29tbWFuZHMgdCA9XG4gICAgbGV0IHJlYyBleHBhbmQgPSBmdW5jdGlvblxuICAgICAgfCBFeGVjIChfLCB0KSAtPiBleHBhbmQgdFxuICAgICAgfCBCYXNpYyBfIC0+IFsgW10gXVxuICAgICAgfCBHcm91cCB7IHN1YmNvbW1hbmRzOyBfIH0gLT5cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIChMYXp5LmZvcmNlIHN1YmNvbW1hbmRzKSB+ZjooZnVuIChuYW1lLCB0KSAtPlxuICAgICAgICAgIExpc3QubWFwIH5mOihmdW4gcGF0aCAtPiBuYW1lIDo6IHBhdGgpIChleHBhbmQgdCkpXG4gICAgaW5cbiAgICAoKiBSZXZlcnNpbmcgc28gdGhhdCB0aGUgY29tbWFuZHMgc2hvdyB1cCBpbiB0aGUgc2FtZSBvcmRlciBhcyBoZWxwIGlzIG91dHB1dCAqKVxuICAgIExpc3QucmV2IChleHBhbmQgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLlNleHBhYmxlLk1vZGVsLnQgPVxuICAgIHwgQmFzZSBvZiBCYXNlX2luZm8udFxuICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLnRcbiAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLnRcbiAgICB8IExhenkgb2YgdCBMYXp5LnRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgZXh0cmFjdGlvbl92YXIgPSBFbnZfdmFyLnRvX3N0cmluZyBDT01NQU5EX09VVFBVVF9IRUxQX1NFWFBcblxuICBtb2R1bGUgVmVyc2lvbmVkID0gU3RhYmxlLlNleHBhYmxlLlZlcnNpb25lZFxuXG4gIGxldCBzdXBwb3J0ZWRfdmVyc2lvbnMgPVxuICAgIGxldCBmIGkgc3VwcG9ydGVkIF8gPSBTZXQuYWRkIHN1cHBvcnRlZCBpIGluXG4gICAgVmVyc2lvbmVkLlZhcmlhbnRzLmZvbGQgfmluaXQ6KFNldC5lbXB0eSAobW9kdWxlIEludCkpIH52MTooZiAxKSB+djI6KGYgMikgfnYzOihmIDMpXG4gIDs7XG5cbiAgbGV0IG9mX3ZlcnNpb25lZCA9IFZlcnNpb25lZC50b19sYXRlc3RcbiAgbGV0IHRvX3ZlcnNpb25lZCB0IH52ZXJzaW9uX3RvX3VzZSA9IFZlcnNpb25lZC5vZl9sYXRlc3QgdCB+dmVyc2lvbl90b191c2VcbmVuZFxuXG50eXBlIHQgPVxuICB8IEJhc2ljIG9mIEJhc2VfaW5mby50XG4gIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLnRcbiAgfCBFeGVjIG9mIEV4ZWNfaW5mby50ICogKHVuaXQgLT4gdClcbiAgfCBMYXp5IG9mIHQgTGF6eS50XG5cbmxldCByZWMgZnVsbHlfZm9yY2VkIDogdCAtPiBGdWxseV9mb3JjZWQudCA9IGZ1bmN0aW9uXG4gIHwgQmFzaWMgYiAtPiBCYXNpYyBiXG4gIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5tYXAgZyB+ZjpmdWxseV9mb3JjZWQpXG4gIHwgRXhlYyAoZSwgZikgLT4gRXhlYyAoZSwgZnVsbHlfZm9yY2VkIChmICgpKSlcbiAgfCBMYXp5IHRodW5rIC0+IGZ1bGx5X2ZvcmNlZCAoTGF6eS5mb3JjZSB0aHVuaylcbjs7XG5cbmxldCByZWMgZ2V0X3N1bW1hcnkgPSBmdW5jdGlvblxuICB8IEJhc2ljIGIgLT4gYi5zdW1tYXJ5XG4gIHwgR3JvdXAgZyAtPiBnLnN1bW1hcnlcbiAgfCBFeGVjIChlLCBfKSAtPiBlLnN1bW1hcnlcbiAgfCBMYXp5IHRodW5rIC0+IGdldF9zdW1tYXJ5IChMYXp5LmZvcmNlIHRodW5rKVxuOztcblxubGV0IGhlbHBfdGV4dCA9IGBVc2VfQ29tbWFuZF91bml4XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBLZXlfdHlwZSA9IEtleV90eXBlXG5cbiAgbGV0IGFic19wYXRoID0gU3RhYmxlLkV4ZWNfaW5mby5hYnNfcGF0aFxuICBsZXQgaGVscF9zY3JlZW5fY29tcGFyZSA9IEZsYWdfaW5mby5oZWxwX3NjcmVlbl9jb21wYXJlXG4gIGxldCB3b3JkX3dyYXAgPSBGbGFnX2hlbHBfZGlzcGxheS53b3JkX3dyYXBfYW5kX3N0cmlwXG4gIGxldCBsb29rdXBfZXhwYW5kID0gbG9va3VwX2V4cGFuZFxuZW5kXG4iLCJcbm9wZW4hIEJhc2Vcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb21tYW5kX2ludGZcbm1vZHVsZSBTaGFwZSA9IFNoYXBlXG5cbigqIGluIG9yZGVyIHRvIGRlZmluZSBleHBlY3QgdGVzdHMsIHdlIHdhbnQgdG8gcmFpc2UgcmF0aGVyIHRoYW4gZXhpdCBpZiB0aGUgY29kZSBpc1xuICAgcnVubmluZyBpbiB0aGUgdGVzdCBydW5uZXIgcHJvY2VzcyAqKVxubGV0IHJhaXNlX2luc3RlYWRfb2ZfZXhpdCA9XG4gIG1hdGNoIFBweF9pbmxpbmVfdGVzdF9saWIudGVzdGluZyB3aXRoXG4gIHwgYFRlc3RpbmcgYEFtX3Rlc3RfcnVubmVyIC0+IHRydWVcbiAgfCBgVGVzdGluZyBgQW1fY2hpbGRfb2ZfdGVzdF9ydW5uZXIgfCBgTm90X3Rlc3RpbmcgLT4gZmFsc2Vcbjs7XG5cbmV4Y2VwdGlvbiBFeGl0X2NhbGxlZCBvZiB7IHN0YXR1cyA6IGludCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbigqIFtyYWlzZV9pbnN0ZWFkX29mX2V4aXRdLXJlc3BlY3Rpbmcgd3JhcHBlcnMgZm9yIFtleGl0XSBhbmQgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdCAqKVxuaW5jbHVkZSBzdHJ1Y3RcbiAgbGV0IGV4aXQgc3RhdHVzID1cbiAgICBpZiByYWlzZV9pbnN0ZWFkX29mX2V4aXQgdGhlbiByYWlzZSAoRXhpdF9jYWxsZWQgeyBzdGF0dXMgfSkgZWxzZSBTdGRsaWIuZXhpdCBzdGF0dXNcbiAgOztcblxuICBtb2R1bGUgRXhuID0gc3RydWN0XG4gICAgbGV0IGhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmID1cbiAgICAgIGlmIHJhaXNlX2luc3RlYWRfb2ZfZXhpdFxuICAgICAgdGhlbiAoXG4gICAgICAgIHRyeSBmICgpIHdpdGhcbiAgICAgICAgfCBFeGl0X2NhbGxlZCB7IHN0YXR1cyA9IDAgfSBhcyBleG4gLT4gcHJpbnRfcyBbJXNleHAgKGV4biA6IGV4bildKVxuICAgICAgZWxzZSBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGZcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5sZXQgdW53b3JkcyB4cyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiB4c1xubGV0IHVucGFyYWdyYXBocyB4cyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblxcblwiIHhzXG5cbmV4Y2VwdGlvbiBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG9mIHN0cmluZ1xuXG5sZXQgZGllIGZtdCA9IGtzcHJpbnRmIChmdW4gbXNnICgpIC0+IHJhaXNlIChGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG1zZykpIGZtdFxubGV0IGhlbHBfc2NyZWVuX2NvbXBhcmUgPSBTaGFwZS5Qcml2YXRlLmhlbHBfc2NyZWVuX2NvbXBhcmVcblxuKCogdW5pdmVyc2FsIG1hcHMgYXJlIHVzZWQgdG8gcGFzcyBhcm91bmQgdmFsdWVzIGJldHdlZW4gZGlmZmVyZW50IGJpdHNcbiAgIG9mIGNvbW1hbmQgbGluZSBwYXJzaW5nIGNvZGUgd2l0aG91dCBoYXZpbmcgYSBodWdlIGltcGFjdCBvbiB0aGVcbiAgIHR5cGVzIGludm9sdmVkXG5cbiAgIDEuIHBhc3NpbmcgdmFsdWVzIGZyb20gcGFyc2VkIGFyZ3MgdG8gY29tbWFuZC1saW5lIGF1dG9jb21wbGV0ZSBmdW5jdGlvbnNcbiAgIDIuIHBhc3Npbmcgc3BlY2lhbCB2YWx1ZXMgdG8gYSBiYXNlIGNvbW1hbmRzIHRoYXQgcmVxdWVzdCB0aGVtIGluIHRoZWlyIHNwZWNcbiAqIGV4cGFuZGVkIHN1YmNvbW1hbmQgcGF0aFxuICogYXJncyBwYXNzZWQgdG8gdGhlIGJhc2UgY29tbWFuZFxuICogaGVscCB0ZXh0IGZvciB0aGUgYmFzZSBjb21tYW5kXG4qKVxubW9kdWxlIEVudiA9IHN0cnVjdFxuICBpbmNsdWRlIFVuaXZfbWFwXG5cbiAgbGV0IGtleV9jcmVhdGUgbmFtZSA9IFVuaXZfbWFwLktleS5jcmVhdGUgfm5hbWUgU2V4cGxpYi5Db252LnNleHBfb2Zfb3BhcXVlXG4gIGxldCBtdWx0aV9hZGQgPSBVbml2X21hcC5NdWx0aS5hZGRcbiAgbGV0IHNldF93aXRoX2RlZmF1bHQgPSBVbml2X21hcC5XaXRoX2RlZmF1bHQuc2V0XG5lbmRcblxubW9kdWxlIFBhcnNpbmdfb3V0Y29tZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgcmVzdWx0IDogKCdhLCBbIGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG9mIEVycm9yLnQgXSkgUmVzdWx0LnRcbiAgICA7IGhhc19hcmcgOiBib29sXG4gICAgfVxuXG4gIHZhbCByZXR1cm5fbm9fYXJnIDogJ2EgLT4gJ2EgdFxuICB2YWwgcmV0dXJuX3dpdGhfYXJnIDogJ2EgLT4gJ2EgdFxuICB2YWwgZXJyb3IgOiBoYXNfYXJnOmJvb2wgLT4gWyBgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBvZiBFcnJvci50IF0gLT4gJ2EgdFxuICB2YWwgcmVjb3Zlcl9mcm9tX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgOiAnYSB0IC0+ICdhIHQgdFxuXG4gIHZhbCBpbnRyb2R1Y2VfbWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgIDogICgnYSwgWyBgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBvZiBFcnJvci50IF0pIFJlc3VsdC50IHRcbiAgICAtPiAnYSB0XG5cbiAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5TIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcmVzdWx0IDogKCdhLCBbIGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG9mIEVycm9yLnQgXSkgUmVzdWx0LnRcbiAgICA7IGhhc19hcmcgOiBib29sXG4gICAgfVxuXG4gIGxldCBhcHBseSBmIHggPVxuICAgIHsgcmVzdWx0ID1cbiAgICAgICAgUmVzdWx0LmNvbWJpbmVcbiAgICAgICAgICBmLnJlc3VsdFxuICAgICAgICAgIHgucmVzdWx0XG4gICAgICAgICAgfm9rOihmdW4gZiB4IC0+IGYgeClcbiAgICAgICAgICB+ZXJyOihmdW4gKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIGVycl8xKSAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgX2Vycl8yKSAtPlxuICAgICAgICAgICAgYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgZXJyXzEpXG4gICAgOyBoYXNfYXJnID0gZi5oYXNfYXJnIHx8IHguaGFzX2FyZ1xuICAgIH1cbiAgOztcblxuICBsZXQgcmVjb3Zlcl9mcm9tX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgdCA9IHsgcmVzdWx0ID0gT2sgdDsgaGFzX2FyZyA9IHQuaGFzX2FyZyB9XG5cbiAgbGV0IGludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIHQgPVxuICAgIHsgcmVzdWx0ID0gUmVzdWx0LmpvaW4gdC5yZXN1bHQ7IGhhc19hcmcgPSB0Lmhhc19hcmcgfVxuICA7O1xuXG4gIGxldCBtYXAgeyByZXN1bHQ7IGhhc19hcmcgfSB+ZiA9IHsgcmVzdWx0ID0gUmVzdWx0Lm1hcCByZXN1bHQgfmY7IGhhc19hcmcgfVxuICBsZXQgcmV0dXJuX25vX2FyZyB2ID0geyByZXN1bHQgPSBPayB2OyBoYXNfYXJnID0gZmFsc2UgfVxuICBsZXQgcmV0dXJuX3dpdGhfYXJnIHYgPSB7IHJlc3VsdCA9IE9rIHY7IGhhc19hcmcgPSB0cnVlIH1cbiAgbGV0IGVycm9yIH5oYXNfYXJnIGVyciA9IHsgcmVzdWx0ID0gRXJyb3IgZXJyOyBoYXNfYXJnIH1cblxuICBpbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVybl9ub19hcmdcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIEF1dG9fY29tcGxldGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRW52LnQgLT4gcGFydDpzdHJpbmcgLT4gc3RyaW5nIGxpc3RcblxuICBtb2R1bGUgRm9yX2VzY2FwZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEVudi50IC0+IHBhcnQ6c3RyaW5nIGxpc3QgLT4gc3RyaW5nIGxpc3RcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbXBsZXRlciA9IHN0cnVjdFxuICB0eXBlIHQgPSBBdXRvX2NvbXBsZXRlLnQgb3B0aW9uXG5cbiAgbW9kdWxlIEZvcl9lc2NhcGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBBdXRvX2NvbXBsZXRlLkZvcl9lc2NhcGUudCBvcHRpb25cbiAgZW5kXG5cbiAgbGV0IHJ1bl9hbmRfZXhpdCB0IGVudiB+cGFydCA6IE5vdGhpbmcudCA9XG4gICAgT3B0aW9uLml0ZXIgdCB+ZjooZnVuIGNvbXBsZXRpb25zIC0+XG4gICAgICBMaXN0Lml0ZXIgfmY6cHJpbnRfZW5kbGluZSAoY29tcGxldGlvbnMgZW52IH5wYXJ0KSk7XG4gICAgZXhpdCAwXG4gIDs7XG5lbmRcblxubW9kdWxlIEFyZ190eXBlIDogc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBleHRyYV9kb2MgOiAnYSB0IC0+IHN0cmluZyBvcHRpb24gbGF6eV90XG4gIHZhbCBrZXkgOiAnYSB0IC0+ICdhIEVudi5NdWx0aS5LZXkudCBvcHRpb25cbiAgdmFsIGNvbXBsZXRlIDogJ2EgdCAtPiBDb21wbGV0ZXIudFxuICB2YWwgcGFyc2UgOiAnYSB0IC0+IHN0cmluZyAtPiAnYSBPcl9lcnJvci50XG5cbiAgdmFsIGNyZWF0ZVxuICAgIDogID9jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+IChzdHJpbmcgLT4gJ2EpXG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBtYXAgOiA/a2V5OidhIEVudi5NdWx0aS5LZXkudCAtPiAnYiB0IC0+IGY6KCdiIC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBvZl9sYXp5IDogP2tleTonYSBFbnYuTXVsdGkuS2V5LnQgLT4gJ2EgdCBsYXp5X3QgLT4gJ2EgdFxuXG4gIHZhbCBvZl9tYXBcbiAgICA6ICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlczpib29sXG4gICAgLT4gP2Nhc2Vfc2Vuc2l0aXZlOmJvb2xcbiAgICAtPiA/bGlzdF92YWx1ZXNfaW5faGVscDpib29sXG4gICAgLT4gP2F1dG9fY29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAnYSBNYXAuTShTdHJpbmcpLnRcbiAgICAtPiAnYSB0XG5cbiAgdmFsIG9mX2FsaXN0X2V4blxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+IChzdHJpbmcgKiAnYSkgbGlzdFxuICAgIC0+ICdhIHRcblxuICB2YWwgZW51bWVyYXRlZFxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+IChtb2R1bGUgRW51bWVyYWJsZV9zdHJpbmdhYmxlIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBlbnVtZXJhdGVkX3NleHBhYmxlXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKG1vZHVsZSBFbnVtZXJhYmxlX3NleHBhYmxlIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBjb21tYV9zZXBhcmF0ZWRcbiAgICA6ICA/YWxsb3dfZW1wdHk6Ym9vbFxuICAgIC0+ID9rZXk6J2EgbGlzdCBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiA/c3RyaXBfd2hpdGVzcGFjZTpib29sXG4gICAgLT4gP3VuaXF1ZV92YWx1ZXM6Ym9vbFxuICAgIC0+ICdhIHRcbiAgICAtPiAnYSBsaXN0IHRcblxuICBtb2R1bGUgRXhwb3J0IDogc2lnXG4gICAgdmFsIHN0cmluZyA6IHN0cmluZyB0XG4gICAgdmFsIGludCA6IGludCB0XG4gICAgdmFsIGNoYXIgOiBjaGFyIHRcbiAgICB2YWwgZmxvYXQgOiBmbG9hdCB0XG4gICAgdmFsIGJvb2wgOiBib29sIHRcbiAgICB2YWwgc2V4cCA6IFNleHAudCB0XG4gICAgdmFsIHNleHBfY29udiA6ID9jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnQgLT4gKFNleHAudCAtPiAnYSkgLT4gJ2EgdFxuICBlbmRcblxuICB2YWwgYXV0b19jb21wbGV0ZSA6IF8gdCAtPiBBdXRvX2NvbXBsZXRlLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcGFyc2UgOiBzdHJpbmcgLT4gJ2FcbiAgICA7IGNvbXBsZXRlIDogQ29tcGxldGVyLnRcbiAgICA7IGtleSA6ICdhIFVuaXZfbWFwLk11bHRpLktleS50IG9wdGlvblxuICAgIDsgZXh0cmFfZG9jIDogc3RyaW5nIG9wdGlvbiBMYXp5LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgcGFyc2UgdCBzID0gT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiB0LnBhcnNlIHMpXG4gIGxldCBjcmVhdGUnID9jb21wbGV0ZSA/a2V5IHBhcnNlIH5leHRyYV9kb2MgPSB7IHBhcnNlOyBrZXk7IGNvbXBsZXRlOyBleHRyYV9kb2MgfVxuXG4gIGxldCBjcmVhdGUgP2NvbXBsZXRlID9rZXkgb2Zfc3RyaW5nID1cbiAgICBjcmVhdGUnID9jb21wbGV0ZSA/a2V5IG9mX3N0cmluZyB+ZXh0cmFfZG9jOihMYXp5LmZyb21fdmFsIE5vbmUpXG4gIDs7XG5cbiAgbGV0IG1hcCA/a2V5IHQgfmYgPSB7IHQgd2l0aCBrZXk7IHBhcnNlID0gKGZ1biBzIC0+IGYgKHQucGFyc2UgcykpIH1cblxuICBsZXQgb2ZfbGF6eSA/a2V5IHQgPVxuICAgIGxldCBwYXJzZSBzdHIgPSAoZm9yY2UgdCkucGFyc2Ugc3RyIGluXG4gICAgbGV0IGNvbXBsZXRlIGVudiB+cGFydCA9XG4gICAgICBtYXRjaCAoZm9yY2UgdCkuY29tcGxldGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIFNlZSBbcnVuX2FuZF9leGl0XSAtIG5vIGNvbXBsZXRpb25zIGlzIGVxdWl2YWxlbnQgdG8gbm90IGhhdmluZyBhXG4gICAgICAgICAgIFtDb21wbGV0ZV0uICopXG4gICAgICAgIFtdXG4gICAgICB8IFNvbWUgY29tcGxldGUgLT4gY29tcGxldGUgZW52IH5wYXJ0XG4gICAgaW5cbiAgICBsZXQgZXh0cmFfZG9jID0gTGF6eS5iaW5kIHQgfmY6ZXh0cmFfZG9jIGluXG4gICAgeyBwYXJzZTsgY29tcGxldGUgPSBTb21lIGNvbXBsZXRlOyBrZXk7IGV4dHJhX2RvYyB9XG4gIDs7XG5cbiAgbGV0IHN0cmluZyA9IGNyZWF0ZSBGbi5pZFxuICBsZXQgaW50ID0gY3JlYXRlIEludC5vZl9zdHJpbmdcbiAgbGV0IGNoYXIgPSBjcmVhdGUgQ2hhci5vZl9zdHJpbmdcbiAgbGV0IGZsb2F0ID0gY3JlYXRlIEZsb2F0Lm9mX3N0cmluZ1xuICBsZXQgc2V4cCA9IGNyZWF0ZSBQYXJzZXhwLlNpbmdsZS5wYXJzZV9zdHJpbmdfZXhuXG5cbiAgbGV0IHNleHBfY29udiA/Y29tcGxldGUgb2Zfc2V4cCA9XG4gICAgY3JlYXRlID9jb21wbGV0ZSAoZnVuIHMgLT4gb2Zfc2V4cCAoUGFyc2V4cC5TaW5nbGUucGFyc2Vfc3RyaW5nX2V4biBzKSlcbiAgOztcblxuICBsZXQgYXNzb2NpYXRpdmVcbiAgICAgICAgPyhhY2NlcHRfdW5pcXVlX3ByZWZpeGVzID0gdHJ1ZSlcbiAgICAgICAgPyhsaXN0X3ZhbHVlc19pbl9oZWxwID0gdHJ1ZSlcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICB+Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgYWxpc3RcbiAgICA9XG4gICAgbGV0IG9wZW4gc3RydWN0XG4gICAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgICAgdmFsIGlzX3ByZWZpeCA6IHN0cmluZyAtPiBwcmVmaXg6c3RyaW5nIC0+IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB8IFQgOlxuICAgICAgICAgICAgeyBjbXAgOiAobW9kdWxlIFMgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgICAgICAgICA7IG1hcCA6IChzdHJpbmcsICdhLCAnY21wKSBNYXAudFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLT4gJ2EgdFxuICAgIGVuZCBpblxuICAgIGxldCAoVCB7IGNtcCA9IChtb2R1bGUgUyk7IG1hcCB9KSA9XG4gICAgICBsZXQgbWFrZV9tYXBfcmFpc2VfZHVwbGljYXRlX2tleVxuICAgICAgICAgICAgKHR5cGUgY21wKVxuICAgICAgICAgICAgKG1vZHVsZSBTIDogUyB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICAgICAgYWxpc3RcbiAgICAgICAgPVxuICAgICAgICBtYXRjaCBNYXAub2ZfYWxpc3QgKG1vZHVsZSBTKSBhbGlzdCB3aXRoXG4gICAgICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICAgICAgfCBgRHVwbGljYXRlX2tleSAoXyA6IFMudCkgLT5cbiAgICAgICAgICBsZXQgZHVwbGljYXRlX2tleXMgPVxuICAgICAgICAgICAgTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoaywgKF8gOiAnYSkpIC0+IGssIGspXG4gICAgICAgICAgICB8PiBNYXAub2ZfYWxpc3RfbXVsdGkgKG1vZHVsZSBTKVxuICAgICAgICAgICAgfD4gTWFwLmZpbHRlciB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBbXSB8IFsgXyBdIC0+IGZhbHNlXG4gICAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgIHw+IE1hcC5kYXRhXG4gICAgICAgICAgaW5cbiAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgXCJDb21tYW5kLlNwZWMuQXJnX3R5cGUub2ZfYWxpc3RfZXhuXCIgKGR1cGxpY2F0ZV9rZXlzIDogc3RyaW5nIGxpc3QgbGlzdCldXG4gICAgICBpblxuICAgICAgbGV0IG1ha2UgY21wID0gVCB7IGNtcDsgbWFwID0gbWFrZV9tYXBfcmFpc2VfZHVwbGljYXRlX2tleSBjbXAgYWxpc3QgfSBpblxuICAgICAgaWYgY2FzZV9zZW5zaXRpdmUgdGhlbiBtYWtlIChtb2R1bGUgU3RyaW5nKSBlbHNlIG1ha2UgKG1vZHVsZSBTdHJpbmcuQ2FzZWxlc3MpXG4gICAgaW5cbiAgICBsZXQgY29tcGxldGUgdW5pdl9tYXAgfnBhcnQ6cHJlZml4ID1cbiAgICAgIG1hdGNoIGF1dG9fY29tcGxldGUgd2l0aFxuICAgICAgfCBTb21lIGNvbXBsZXRlIC0+IGNvbXBsZXRlIHVuaXZfbWFwIH5wYXJ0OnByZWZpeFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIExpc3QuZmlsdGVyX21hcCAoTWFwLnRvX2FsaXN0IG1hcCkgfmY6KGZ1biAobmFtZSwgXykgLT5cbiAgICAgICAgICBtYXRjaCBTLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXggd2l0aFxuICAgICAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAgKCogQmFzaCBjb21wbGV0aW9uIHdpbGwgbm90IGFjY2VwdCBbRm9vXSBhcyBhIGNvbXBsZXRpb24gZm9yIFtmXS4gU28gd2UgbmVlZFxuICAgICAgICAgICAgICAgdG8gbWF0Y2ggdGhlIGNhcGl0YWxpemF0aW9uIGdpdmVuLiAqKVxuICAgICAgICAgICAgbGV0IHN1ZmZpeCA9IFN0cmluZy5zdWJvIG5hbWUgfnBvczooU3RyaW5nLmxlbmd0aCBwcmVmaXgpIGluXG4gICAgICAgICAgICBsZXQgbmFtZSA9IHByZWZpeCBeIHN1ZmZpeCBpblxuICAgICAgICAgICAgU29tZSBuYW1lKVxuICAgIGluXG4gICAgbGV0IGZpbmQgYXJnID1cbiAgICAgIG1hdGNoIE1hcC5maW5kIG1hcCBhcmcgd2l0aFxuICAgICAgfCBTb21lIF8gYXMgcyAtPiBzXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIGFjY2VwdF91bmlxdWVfcHJlZml4ZXMgd2l0aFxuICAgICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgIE1hcC50b19hbGlzdCBtYXBcbiAgICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biAobmFtZSwgXykgLT4gUy5pc19wcmVmaXggbmFtZSB+cHJlZml4OmFyZylcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgWyAoX3NpbmdsZXRvbl9rZXksIHYpIF0gLT4gU29tZSB2XG4gICAgICAgICAgICB8IFtdIHwgXyA6OiBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgKCogSW4gdGhlIHR3by1vci1tb3JlIGNhc2Ugd2UgY291bGQgcHJvdmlkZSBmaWx0ZXJlZCBoZWxwIHRleHQsIGJ1dCBpdCdzXG4gICAgICAgICAgICAgICAgIG1vcmUgZ2VuZXJhbGx5IHVzZWZ1bCB0byBsaXN0IGFsbCB0aGUgb3B0aW9ucywgd2hpY2ggd2UgZG8gYmVsb3cuICopXG4gICAgICAgICAgICAgIE5vbmUpKVxuICAgIGluXG4gICAgY3JlYXRlJ1xuICAgICAgfmV4dHJhX2RvYzpcbiAgICAgICAgKGxhenlcbiAgICAgICAgICAoaWYgbGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgdmFsdWVzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoTWFwLmtleXMgbWFwKSBpblxuICAgICAgICAgICAgIFNvbWUgWyVzdHJpbmcgXCIoY2FuIGJlOiAle3ZhbHVlc30pXCJdKVxuICAgICAgICAgICBlbHNlIE5vbmUpKVxuICAgICAgP2tleVxuICAgICAgfmNvbXBsZXRlXG4gICAgICAoZnVuIGFyZyAtPlxuICAgICAgICAgbWF0Y2ggZmluZCBhcmcgd2l0aFxuICAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIGxldCB2YWxpZF9hcmd1bWVudHNfZXh0cmEgPVxuICAgICAgICAgICAgIGlmIGNhc2Vfc2Vuc2l0aXZlIHRoZW4gXCJcIiBlbHNlIFwiIChjYXNlIGluc2Vuc2l0aXZlKVwiXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGZhaWx3aXRoZlxuICAgICAgICAgICAgIFwidmFsaWQgYXJndW1lbnRzJXM6IHslc31cIlxuICAgICAgICAgICAgIHZhbGlkX2FyZ3VtZW50c19leHRyYVxuICAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgKE1hcC5rZXlzIG1hcCkpXG4gICAgICAgICAgICAgKCkpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4blxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/KGNhc2Vfc2Vuc2l0aXZlID0gdHJ1ZSlcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICBhbGlzdFxuICAgID1cbiAgICBhc3NvY2lhdGl2ZVxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgfmNhc2Vfc2Vuc2l0aXZlXG4gICAgICBhbGlzdFxuICA7O1xuXG4gIGxldCBvZl9tYXBcbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgbWFwXG4gICAgPVxuICAgIG9mX2FsaXN0X2V4blxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICAoTWFwLnRvX2FsaXN0IG1hcClcbiAgOztcblxuICBsZXQgZW51bWVyYXRlZFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICAobW9kdWxlIEUgOiBFbnVtZXJhYmxlX3N0cmluZ2FibGUgd2l0aCB0eXBlIHQgPSB0KVxuICAgID1cbiAgICBvZl9hbGlzdF9leG5cbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgKGxldCVtYXAuTGlzdCB0ID0gRS5hbGwgaW5cbiAgICAgICBFLnRvX3N0cmluZyB0LCB0KVxuICA7O1xuXG4gIGxldCBlbnVtZXJhdGVkX3NleHBhYmxlXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIChtb2R1bGUgRSA6IEVudW1lcmFibGVfc2V4cGFibGUgd2l0aCB0eXBlIHQgPSB0KVxuICAgID1cbiAgICBlbnVtZXJhdGVkXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRVxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgdCA9IFNleHAudG9fc3RyaW5nIFslc2V4cCAodCA6IEUudCldXG4gICAgICBlbmQpXG4gIDs7XG5cbiAgbGV0IGJvb2wgPSBlbnVtZXJhdGVkIH5saXN0X3ZhbHVlc19pbl9oZWxwOmZhbHNlIChtb2R1bGUgQm9vbClcblxuICBsZXQgY29tbWFfc2VwYXJhdGVkXG4gICAgICAgID8oYWxsb3dfZW1wdHkgPSBmYWxzZSlcbiAgICAgICAgP2tleVxuICAgICAgICA/KHN0cmlwX3doaXRlc3BhY2UgPSBmYWxzZSlcbiAgICAgICAgPyh1bmlxdWVfdmFsdWVzID0gZmFsc2UpXG4gICAgICAgIHRcbiAgICA9XG4gICAgbGV0IHN0cmlwID0gaWYgc3RyaXBfd2hpdGVzcGFjZSB0aGVuIGZ1biBzdHIgLT4gU3RyaW5nLnN0cmlwIHN0ciBlbHNlIEZuLmlkIGluXG4gICAgbGV0IGNvbXBsZXRlID1cbiAgICAgIE9wdGlvbi5tYXAgdC5jb21wbGV0ZSB+ZjooZnVuIGNvbXBsZXRlX2VsdCBlbnYgfnBhcnQgLT5cbiAgICAgICAgbGV0IHByZWZpeGVzLCBzdWZmaXggPVxuICAgICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBwYXJ0IH5vbjonLCcgfD4gTGlzdC5yZXYgd2l0aFxuICAgICAgICAgIHwgW10gLT4gW10sIHBhcnRcbiAgICAgICAgICB8IGhkIDo6IHRsIC0+IExpc3QucmV2IHRsLCBoZFxuICAgICAgICBpblxuICAgICAgICBsZXQgaXNfYWxsb3dlZCA9XG4gICAgICAgICAgaWYgbm90IHVuaXF1ZV92YWx1ZXNcbiAgICAgICAgICB0aGVuIGZ1biAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IHNlZW5fYWxyZWFkeSA9XG4gICAgICAgICAgICAgIHByZWZpeGVzIHw+IExpc3QubWFwIH5mOnN0cmlwIHw+IFNldC5vZl9saXN0IChtb2R1bGUgU3RyaW5nKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGZ1biBjaG9pY2UgLT4gbm90IChTZXQubWVtIHNlZW5fYWxyZWFkeSAoc3RyaXAgY2hvaWNlKSkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjaG9pY2VzID1cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTGlzdC5maWx0ZXIgKGNvbXBsZXRlX2VsdCBlbnYgfnBhcnQ6c3VmZml4KSB+ZjooZnVuIGNob2ljZSAtPlxuICAgICAgICAgICAgICAobm90IChTdHJpbmcubWVtIGNob2ljZSAnLCcpKSAmJiBpc19hbGxvd2VkIGNob2ljZSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgKCogSWYgdGhlcmUgaXMgZXhhY3RseSBvbmUgY2hvaWNlIHRvIGF1dG8tY29tcGxldGUsIGFkZCBhIHNlY29uZCBjaG9pY2Ugd2l0aFxuICAgICAgICAgICAgIGEgdHJhaWxpbmcgY29tbWEgc28gdGhhdCBhdXRvLWNvbXBsZXRpb24gd2lsbCBnbyB0byB0aGUgZW5kIGJ1dCBiYXNoXG4gICAgICAgICAgICAgd29uJ3QgYWRkIGEgc3BhY2UuICBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgY2hvaWNlcywgb3IgYSBzaW5nbGUgY2hvaWNlXG4gICAgICAgICAgICAgdGhhdCBtdXN0IGJlIGZpbmFsLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIGR1bW15IG9wdGlvbi4gKilcbiAgICAgICAgICB8IFsgY2hvaWNlIF0gLT4gWyBjaG9pY2U7IGNob2ljZSBeIFwiLFwiIF1cbiAgICAgICAgICB8IGNob2ljZXMgLT4gY2hvaWNlc1xuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCBjaG9pY2VzIH5mOihmdW4gY2hvaWNlIC0+IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiAocHJlZml4ZXMgQCBbIGNob2ljZSBdKSkpXG4gICAgaW5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICBsZXQgc3RyaW5nID0gc3RyaXAgc3RyaW5nIGluXG4gICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgc3RyaW5nXG4gICAgICB0aGVuXG4gICAgICAgIGlmIGFsbG93X2VtcHR5XG4gICAgICAgIHRoZW4gW11cbiAgICAgICAgZWxzZSBmYWlsd2l0aCBcIkNvbW1hbmQuU3BlYy5BcmdfdHlwZS5jb21tYV9zZXBhcmF0ZWQ6IGVtcHR5IGxpc3Qgbm90IGFsbG93ZWRcIlxuICAgICAgZWxzZSBMaXN0Lm1hcCAoU3RyaW5nLnNwbGl0IHN0cmluZyB+b246JywnKSB+ZjooZnVuIHN0ciAtPiB0LnBhcnNlIChzdHJpcCBzdHIpKVxuICAgIGluXG4gICAgY3JlYXRlID9rZXkgP2NvbXBsZXRlIG9mX3N0cmluZ1xuICA7O1xuXG4gIG1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgICBsZXQgc3RyaW5nID0gc3RyaW5nXG4gICAgbGV0IGludCA9IGludFxuICAgIGxldCBjaGFyID0gY2hhclxuICAgIGxldCBmbG9hdCA9IGZsb2F0XG4gICAgbGV0IGJvb2wgPSBib29sXG4gICAgbGV0IHNleHAgPSBzZXhwXG4gICAgbGV0IHNleHBfY29udiA9IHNleHBfY29udlxuICBlbmRcblxuICBsZXQgYXV0b19jb21wbGV0ZSB0ID1cbiAgICBtYXRjaCB0LmNvbXBsZXRlIHdpdGhcbiAgICB8IFNvbWUgZiAtPiBmXG4gICAgfCBOb25lIC0+IGZ1biBfIH5wYXJ0Ol8gLT4gW11cbiAgOztcbmVuZFxuXG5tb2R1bGUgRmxhZyA9IHN0cnVjdFxuICBtb2R1bGUgTnVtX29jY3VycmVuY2VzID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2hhcGUuTnVtX29jY3VycmVuY2VzLnQgPVxuICAgICAgeyBhdF9sZWFzdF9vbmNlIDogYm9vbFxuICAgICAgOyBhdF9tb3N0X29uY2UgOiBib29sXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgdG9faGVscF9zdHJpbmcgPSBTaGFwZS5OdW1fb2NjdXJyZW5jZXMudG9faGVscF9zdHJpbmdcblxuICAgIGxldCB0b19oZWxwX3N0cmluZ19kZXByZWNhdGVkIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlID0gXyB9IGZsYWdfbmFtZSA9XG4gICAgICB0b19oZWxwX3N0cmluZyB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSA9IHRydWUgfSB+ZmxhZ19uYW1lXG4gICAgOztcblxuICAgIGxldCBhbnkgPSB7IGF0X2xlYXN0X29uY2UgPSBmYWxzZTsgYXRfbW9zdF9vbmNlID0gZmFsc2UgfVxuICAgIGxldCBhdF9sZWFzdF9vbmNlID0geyBhdF9sZWFzdF9vbmNlID0gdHJ1ZTsgYXRfbW9zdF9vbmNlID0gZmFsc2UgfVxuICAgIGxldCBhdF9tb3N0X29uY2UgPSB7IGF0X2xlYXN0X29uY2UgPSBmYWxzZTsgYXRfbW9zdF9vbmNlID0gdHJ1ZSB9XG4gICAgbGV0IGV4YWN0bHlfb25jZSA9IHsgYXRfbGVhc3Rfb25jZSA9IHRydWU7IGF0X21vc3Rfb25jZSA9IHRydWUgfVxuICBlbmRcblxuICB0eXBlIGFjdGlvbiA9XG4gICAgfCBOb19hcmcgb2YgKEVudi50IC0+IEVudi50KVxuICAgIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBvZiAoRW52LnQgLT4gc3RyaW5nKVxuICAgIHwgQXJnIG9mIChFbnYudCAtPiBzdHJpbmcgLT4gRW52LnQpICogQ29tcGxldGVyLnRcbiAgICB8IFJlc3Qgb2YgKEVudi50IC0+IHN0cmluZyBsaXN0IC0+IEVudi50KSAqIENvbXBsZXRlci5Gb3JfZXNjYXBlLnRcblxuICBtb2R1bGUgSW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IGFsaWFzZXMgOiBzdHJpbmcgbGlzdFxuICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCA6IHN0cmluZyBsaXN0XG4gICAgICAoKiBbYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBdIGFyZSBhbGlhc2VzIHRoYXQgZG9uJ3Qgc2hvdyB1cCBpbiAtaGVscCBvdXRwdXQuXG4gICAgICAgICBDdXJyZW50bHkgdGhleSdyZSBvbmx5IHVzZWQgZm9yIGRvdWJsZS1kYXNoIGJ1aWx0LWluIGZsYWdzIGxpa2UgLS1oZWxwIGFuZFxuICAgICAgICAgLS12ZXJzaW9uLiAqKVxuICAgICAgOyBhY3Rpb24gOiBhY3Rpb25cbiAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICA7IG51bV9vY2N1cnJlbmNlcyA6IE51bV9vY2N1cnJlbmNlcy50XG4gICAgICA7IGNoZWNrX2F2YWlsYWJsZSA6IEVudi50IC0+IHVuaXRcbiAgICAgIDsgbmFtZV9tYXRjaGluZyA6IFsgYFByZWZpeCB8IGBGdWxsX21hdGNoX3JlcXVpcmVkIF1cbiAgICAgIH1cblxuICAgIGxldCB3cmFwX2lmX29wdGlvbmFsIHQgZmxhZ19uYW1lID1cbiAgICAgIE51bV9vY2N1cnJlbmNlcy50b19oZWxwX3N0cmluZyB0Lm51bV9vY2N1cnJlbmNlcyB+ZmxhZ19uYW1lXG4gICAgOztcblxuICAgIG1vZHVsZSBEb2MgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgYXJnX2RvYyA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgOyBkb2MgOiBzdHJpbmdcbiAgICAgICAgfVxuXG4gICAgICBsZXQgcGFyc2UgfmFjdGlvbiB+ZG9jID1cbiAgICAgICAgbGV0IGFyZ19kb2MsIGRvYyA9XG4gICAgICAgICAgbWF0Y2ggKGFjdGlvbiA6IGFjdGlvbiksIFN0cmluZy5sc3BsaXQyIGRvYyB+b246JyAnIHdpdGhcbiAgICAgICAgICB8IChOb19hcmcgXyB8IFByaW50X2luZm9fYW5kX3F1aXQgXyksIF8gLT4gTm9uZSwgZG9jXG4gICAgICAgICAgfCBBcmcgXywgKE5vbmUgfCBTb21lIChcIlwiLCBfKSkgLT4gU29tZSBcIl9cIiwgZG9jXG4gICAgICAgICAgfCBSZXN0IF8sIChOb25lIHwgU29tZSAoXCJcIiwgXykpIC0+IE5vbmUsIGRvY1xuICAgICAgICAgIHwgKEFyZyBfIHwgUmVzdCBfKSwgU29tZSAoYXJnLCBkb2MpIC0+IFNvbWUgYXJnLCBkb2NcbiAgICAgICAgaW5cbiAgICAgICAgeyBkb2MgPSBTdHJpbmcuc3RyaXAgZG9jOyBhcmdfZG9jIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBjb25jYXQgfm5hbWUgfmFyZ19kb2MgPVxuICAgICAgICBtYXRjaCBhcmdfZG9jIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG5hbWVcbiAgICAgICAgfCBTb21lIGFyZ19kb2MgLT4gbmFtZSBeIFwiIFwiIF4gYXJnX2RvY1xuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgICBsZXQgd3JhcF9pZl9vcHRpb25hbCB0IHggPVxuICAgICAgICBOdW1fb2NjdXJyZW5jZXMudG9faGVscF9zdHJpbmdfZGVwcmVjYXRlZCB0Lm51bV9vY2N1cnJlbmNlcyB4XG4gICAgICA7O1xuXG4gICAgICAoKiBmbGFnIGhlbHAgaW4gdGhlIGZvcm1hdCBvZiB0aGUgb2xkIGNvbW1hbmQuIHVzZWQgZm9yIGluamVjdGlvbiAqKVxuICAgICAgbGV0IGhlbHBcbiAgICAgICAgICAgICh7IG5hbWVcbiAgICAgICAgICAgICA7IGRvY1xuICAgICAgICAgICAgIDsgYWxpYXNlc1xuICAgICAgICAgICAgIDsgYWN0aW9uXG4gICAgICAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBfXG4gICAgICAgICAgICAgOyBjaGVja19hdmFpbGFibGUgPSBfXG4gICAgICAgICAgICAgOyBuYW1lX21hdGNoaW5nID0gX1xuICAgICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgPSBfXG4gICAgICAgICAgICAgfSBhcyB0KVxuICAgICAgICA9XG4gICAgICAgIGlmIFN0cmluZy5pc19wcmVmaXggZG9jIH5wcmVmaXg6XCIgXCJcbiAgICAgICAgdGhlblxuICAgICAgICAgIChuYW1lLCBTdHJpbmcubHN0cmlwIGRvYylcbiAgICAgICAgICA6OiBMaXN0Lm1hcCBhbGlhc2VzIH5mOihmdW4geCAtPiB4LCBzcHJpbnRmIFwic2FtZSBhcyBcXFwiJXNcXFwiXCIgbmFtZSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgRG9jLmFyZ19kb2M7IGRvYyB9ID0gRG9jLnBhcnNlIH5hY3Rpb24gfmRvYyBpblxuICAgICAgICAgICh3cmFwX2lmX29wdGlvbmFsIHQgKERvYy5jb25jYXQgfm5hbWUgfmFyZ19kb2MpLCBkb2MpXG4gICAgICAgICAgOjogTGlzdC5tYXAgYWxpYXNlcyB+ZjooZnVuIHggLT5cbiAgICAgICAgICAgICggd3JhcF9pZl9vcHRpb25hbCB0IChEb2MuY29uY2F0IH5uYW1lOnggfmFyZ19kb2MpXG4gICAgICAgICAgICAsIHNwcmludGYgXCJzYW1lIGFzIFxcXCIlc1xcXCJcIiBuYW1lICkpKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBhbGlnblxuICAgICAgICAgICh7IG5hbWVcbiAgICAgICAgICAgOyBkb2NcbiAgICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgIDsgYWN0aW9uXG4gICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gX1xuICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IF9cbiAgICAgICAgICAgOyBuYW1lX21hdGNoaW5nID0gX1xuICAgICAgICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwID0gX1xuICAgICAgICAgICB9IGFzIHQpXG4gICAgICA6IFNoYXBlLkZsYWdfaW5mby50XG4gICAgICA9XG4gICAgICBsZXQgeyBEb2MuYXJnX2RvYzsgZG9jIH0gPSBEb2MucGFyc2UgfmFjdGlvbiB+ZG9jIGluXG4gICAgICBsZXQgbmFtZSA9IHdyYXBfaWZfb3B0aW9uYWwgdCAoRG9jLmNvbmNhdCB+bmFtZSB+YXJnX2RvYykgaW5cbiAgICAgIHsgbmFtZTsgZG9jOyBhbGlhc2VzIH1cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSBmbGFncyA9XG4gICAgICBtYXRjaFxuICAgICAgICBNYXAub2ZfYWxpc3QgKG1vZHVsZSBTdHJpbmcpIChMaXN0Lm1hcCBmbGFncyB+ZjooZnVuIGZsYWcgLT4gZmxhZy5uYW1lLCBmbGFnKSlcbiAgICAgIHdpdGhcbiAgICAgIHwgYER1cGxpY2F0ZV9rZXkgZmxhZyAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBmbGFncyBuYW1lZCAlc1wiIGZsYWcgKClcbiAgICAgIHwgYE9rIG1hcCAtPlxuICAgICAgICBMaXN0LmNvbmNhdF9tYXAgZmxhZ3MgfmY6KGZ1biBmbGFnIC0+IGZsYWcubmFtZSA6OiBmbGFnLmFsaWFzZXMpXG4gICAgICAgIHw+IExpc3QuZmluZF9hX2R1cCB+Y29tcGFyZTpbJWNvbXBhcmU6IHN0cmluZ11cbiAgICAgICAgfD4gT3B0aW9uLml0ZXIgfmY6KGZ1biB4IC0+IGZhaWx3aXRoZiBcIm11bHRpcGxlIGZsYWdzIG9yIGFsaWFzZXMgbmFtZWQgJXNcIiB4ICgpKTtcbiAgICAgICAgbWFwXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgeyBhY3Rpb24gOiBhY3Rpb25cbiAgICA7IHJlYWQgOiBFbnYudCAtPiAnYSBQYXJzaW5nX291dGNvbWUudFxuICAgIDsgbnVtX29jY3VycmVuY2VzIDogTnVtX29jY3VycmVuY2VzLnRcbiAgICA7IGV4dHJhX2RvYyA6IHN0cmluZyBvcHRpb24gTGF6eS50XG4gICAgfVxuXG4gIHR5cGUgJ2EgdCA9IHN0cmluZyAtPiAnYSBzdGF0ZVxuXG4gIGxldCBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgbnVtX29jY3VycmVuY2VzID1cbiAgICB7IHJlYWRcbiAgICA7IG51bV9vY2N1cnJlbmNlc1xuICAgIDsgYWN0aW9uID1cbiAgICAgICAgKGxldCB1cGRhdGUgZW52IGFyZyA9XG4gICAgICAgICAgIG1hdGNoIEFyZ190eXBlLnBhcnNlIGFyZ190eXBlIGFyZyB3aXRoXG4gICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT5cbiAgICAgICAgICAgICBkaWVcbiAgICAgICAgICAgICAgIFwiZmFpbGVkIHRvIHBhcnNlICVzIHZhbHVlICVTLlxcbiVzXCJcbiAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgIGFyZ1xuICAgICAgICAgICAgICAgKEVycm9yLnRvX3N0cmluZ19odW0gZXJyb3IpXG4gICAgICAgICAgICAgICAoKVxuICAgICAgICAgICB8IE9rIGFyZyAtPlxuICAgICAgICAgICAgIGxldCBlbnYgPSB3cml0ZSBlbnYgYXJnIGluXG4gICAgICAgICAgICAgKG1hdGNoIEFyZ190eXBlLmtleSBhcmdfdHlwZSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBlbnZcbiAgICAgICAgICAgICAgfCBTb21lIGtleSAtPiBFbnYubXVsdGlfYWRkIGVudiB+a2V5IH5kYXRhOmFyZylcbiAgICAgICAgIGluXG4gICAgICAgICBBcmcgKHVwZGF0ZSwgQXJnX3R5cGUuY29tcGxldGUgYXJnX3R5cGUpKVxuICAgIDsgZXh0cmFfZG9jID0gQXJnX3R5cGUuZXh0cmFfZG9jIGFyZ190eXBlXG4gICAgfVxuICA7O1xuXG4gIGxldCBtYXBfZmxhZyAodCA6IF8gdCkgfmYgaW5wdXQgPVxuICAgIGxldCB7IGFjdGlvbjsgcmVhZDsgbnVtX29jY3VycmVuY2VzOyBleHRyYV9kb2MgfSA9IHQgaW5wdXQgaW5cbiAgICB7IGFjdGlvblxuICAgIDsgcmVhZCA9IChmdW4gZW52IC0+IFBhcnNpbmdfb3V0Y29tZS5tYXAgKHJlYWQgZW52KSB+ZilcbiAgICA7IG51bV9vY2N1cnJlbmNlc1xuICAgIDsgZXh0cmFfZG9jXG4gICAgfVxuICA7O1xuXG4gIGxldCB3cml0ZV9vcHRpb24gbmFtZSBrZXkgZW52IGFyZyA9XG4gICAgRW52LnVwZGF0ZSBlbnYga2V5IH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGFyZ1xuICAgICAgfCBTb21lIF8gLT4gZGllIFwiZmxhZyAlcyBwYXNzZWQgbW9yZSB0aGFuIG9uY2VcIiBuYW1lICgpKVxuICA7O1xuXG4gIGxldCByZXF1aXJlZF92YWx1ZSA/ZGVmYXVsdCBhcmdfdHlwZSBuYW1lIG51bV9vY2N1cnJlbmNlcyA9XG4gICAgbGV0IGtleSA9IEVudi5LZXkuY3JlYXRlIH5uYW1lIFslc2V4cF9vZjogX10gaW5cbiAgICBsZXQgcmVhZCBlbnYgPVxuICAgICAgbWF0Y2ggRW52LmZpbmQgZW52IGtleSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIHZcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggZGVmYXVsdCB3aXRoXG4gICAgICAgICB8IFNvbWUgdiAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyB2XG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLmVycm9yXG4gICAgICAgICAgICAgfmhhc19hcmc6ZmFsc2VcbiAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIChzcHJpbnRmIFwibWlzc2luZyByZXF1aXJlZCBmbGFnOiAlc1wiIG5hbWUpKSkpXG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9IHdyaXRlX29wdGlvbiBuYW1lIGtleSBlbnYgYXJnIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIG51bV9vY2N1cnJlbmNlc1xuICA7O1xuXG4gIGxldCByZXF1aXJlZCBhcmdfdHlwZSBuYW1lID0gcmVxdWlyZWRfdmFsdWUgYXJnX3R5cGUgbmFtZSBOdW1fb2NjdXJyZW5jZXMuZXhhY3RseV9vbmNlXG5cbiAgbGV0IG9wdGlvbmFsX3dpdGhfZGVmYXVsdCBkZWZhdWx0IGFyZ190eXBlIG5hbWUgPVxuICAgIHJlcXVpcmVkX3ZhbHVlIH5kZWZhdWx0IGFyZ190eXBlIG5hbWUgTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICA7O1xuXG4gIGxldCBvcHRpb25hbCBhcmdfdHlwZSBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiBfXSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBFbnYuZmluZCBlbnYga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyBOb25lXG4gICAgICB8IFNvbWUgXyBhcyB2YWx1ZSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIHZhbHVlXG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9IHdyaXRlX29wdGlvbiBuYW1lIGtleSBlbnYgYXJnIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgOztcblxuICBsZXQgbm9fYXJnX2dlbmVyYWwgfmlzX3JlcXVpcmVkIH5rZXlfdmFsdWUgfmRlcHJlY2F0ZWRfaG9vayBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiB1bml0XSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBFbnYubWVtIGVudiBrZXkgd2l0aFxuICAgICAgfCB0cnVlIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fd2l0aF9hcmcgdHJ1ZVxuICAgICAgfCBmYWxzZSAtPlxuICAgICAgICBpZiBpc19yZXF1aXJlZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgUGFyc2luZ19vdXRjb21lLmVycm9yXG4gICAgICAgICAgICB+aGFzX2FyZzpmYWxzZVxuICAgICAgICAgICAgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIChzcHJpbnRmIFwibWlzc2luZyByZXF1aXJlZCBmbGFnOiAlc1wiIG5hbWUpKSlcbiAgICAgICAgZWxzZSBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyBmYWxzZVxuICAgIGluXG4gICAgbGV0IHdyaXRlIGVudiA9XG4gICAgICBpZiBFbnYubWVtIGVudiBrZXlcbiAgICAgIHRoZW4gZGllIFwiZmxhZyAlcyBwYXNzZWQgbW9yZSB0aGFuIG9uY2VcIiBuYW1lICgpXG4gICAgICBlbHNlIEVudi5zZXQgZW52IH5rZXkgfmRhdGE6KClcbiAgICBpblxuICAgIGxldCBhY3Rpb24gZW52ID1cbiAgICAgIGxldCBlbnYgPVxuICAgICAgICBPcHRpb24uZm9sZCBrZXlfdmFsdWUgfmluaXQ6ZW52IH5mOihmdW4gZW52IChrZXksIHZhbHVlKSAtPlxuICAgICAgICAgIEVudi5zZXRfd2l0aF9kZWZhdWx0IGVudiB+a2V5IH5kYXRhOnZhbHVlKVxuICAgICAgaW5cbiAgICAgIHdyaXRlIGVudlxuICAgIGluXG4gICAgbGV0IGFjdGlvbiA9XG4gICAgICBtYXRjaCBkZXByZWNhdGVkX2hvb2sgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjdGlvblxuICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgZnVuIGVudiAtPlxuICAgICAgICAgIGxldCBlbnYgPSBhY3Rpb24gZW52IGluXG4gICAgICAgICAgZiAoKTtcbiAgICAgICAgICBlbnZcbiAgICBpblxuICAgIHsgcmVhZFxuICAgIDsgYWN0aW9uID0gTm9fYXJnIGFjdGlvblxuICAgIDsgbnVtX29jY3VycmVuY2VzID1cbiAgICAgICAgKGlmIGlzX3JlcXVpcmVkXG4gICAgICAgICB0aGVuIE51bV9vY2N1cnJlbmNlcy5leGFjdGx5X29uY2VcbiAgICAgICAgIGVsc2UgTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZSlcbiAgICA7IGV4dHJhX2RvYyA9IExhenkuZnJvbV92YWwgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgbm9fYXJnIG5hbWUgPVxuICAgIG5vX2FyZ19nZW5lcmFsIG5hbWUgfmlzX3JlcXVpcmVkOmZhbHNlIH5rZXlfdmFsdWU6Tm9uZSB+ZGVwcmVjYXRlZF9ob29rOk5vbmVcbiAgOztcblxuICBsZXQgbm9fYXJnX3JlcXVpcmVkIHYgbmFtZSA9XG4gICAgbWFwX2ZsYWdcbiAgICAgIChub19hcmdfZ2VuZXJhbCB+aXNfcmVxdWlyZWQ6dHJ1ZSB+a2V5X3ZhbHVlOk5vbmUgfmRlcHJlY2F0ZWRfaG9vazpOb25lKVxuICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgdHJ1ZSAtPiB2XG4gICAgICAgIHwgZmFsc2UgLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgbmFtZVxuICA7O1xuXG4gIGxldCBub19hcmdfcmVnaXN0ZXIgfmtleSB+dmFsdWUgbmFtZSA9XG4gICAgbm9fYXJnX2dlbmVyYWxcbiAgICAgIG5hbWVcbiAgICAgIH5pc19yZXF1aXJlZDpmYWxzZVxuICAgICAgfmtleV92YWx1ZTooU29tZSAoa2V5LCB2YWx1ZSkpXG4gICAgICB+ZGVwcmVjYXRlZF9ob29rOk5vbmVcbiAgOztcblxuICBsZXQgbm9fYXJnX3NvbWUgdmFsdWUgPVxuICAgIG1hcF9mbGFnIG5vX2FyZyB+ZjooZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiBTb21lIHZhbHVlXG4gICAgICB8IGZhbHNlIC0+IE5vbmUpXG4gIDs7XG5cbiAgbGV0IGxpc3RlZCBhcmdfdHlwZSBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LldpdGhfZGVmYXVsdC5LZXkuY3JlYXRlIH5kZWZhdWx0OltdIH5uYW1lIFslc2V4cF9vZjogXyBsaXN0XSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBMaXN0LnJldiAoRW52LldpdGhfZGVmYXVsdC5maW5kIGVudiBrZXkpIHdpdGhcbiAgICAgIHwgW10gLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgW11cbiAgICAgIHwgXyA6OiBfIGFzIHZhbHVlX2xpc3QgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyB2YWx1ZV9saXN0XG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9IEVudi5XaXRoX2RlZmF1bHQuY2hhbmdlIGVudiBrZXkgfmY6KGZ1biBsaXN0IC0+IGFyZyA6OiBsaXN0KSBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBOdW1fb2NjdXJyZW5jZXMuYW55XG4gIDs7XG5cbiAgbGV0IG9uZV9vcl9tb3JlX2FzX3BhaXIgYXJnX3R5cGUgbmFtZSA9XG4gICAgbGV0IGtleSA9IEVudi5XaXRoX2RlZmF1bHQuS2V5LmNyZWF0ZSB+ZGVmYXVsdDpbXSB+bmFtZSBbJXNleHBfb2Y6IF8gbGlzdF0gaW5cbiAgICBsZXQgcmVhZCBlbnYgPVxuICAgICAgbWF0Y2ggTGlzdC5yZXYgKEVudi5XaXRoX2RlZmF1bHQuZmluZCBlbnYga2V5KSB3aXRoXG4gICAgICB8IGZpcnN0IDo6IHJlc3QgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyAoZmlyc3QsIHJlc3QpXG4gICAgICB8IFtdIC0+XG4gICAgICAgIFBhcnNpbmdfb3V0Y29tZS5lcnJvclxuICAgICAgICAgIH5oYXNfYXJnOmZhbHNlXG4gICAgICAgICAgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgKEVycm9yLm9mX3N0cmluZyAoc3ByaW50ZiBcIm1pc3NpbmcgcmVxdWlyZWQgZmxhZzogJXNcIiBuYW1lKSkpXG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9IEVudi5XaXRoX2RlZmF1bHQuY2hhbmdlIGVudiBrZXkgfmY6KGZ1biBxIC0+IGFyZyA6OiBxKSBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBOdW1fb2NjdXJyZW5jZXMuYXRfbGVhc3Rfb25jZVxuICA7O1xuXG4gIGxldCBvbmVfb3JfbW9yZV9hc19saXN0IGFyZ190eXBlID1cbiAgICBvbmVfb3JfbW9yZV9hc19wYWlyIGFyZ190eXBlIHw+IG1hcF9mbGFnIH5mOihmdW4gKHgsIHhzKSAtPiB4IDo6IHhzKVxuICA7O1xuXG4gIGxldCBlc2NhcGVfZ2VuZXJhbCB+Y29tcGxldGUgfmRlcHJlY2F0ZWRfaG9vayBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiBzdHJpbmcgbGlzdF0gaW5cbiAgICBsZXQgYWN0aW9uIGVudiBjbWRfbGluZSA9IEVudi5zZXQgZW52IH5rZXkgfmRhdGE6Y21kX2xpbmUgaW5cbiAgICBsZXQgcmVhZCBlbnYgPVxuICAgICAgbWF0Y2ggRW52LmZpbmQgZW52IGtleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgTm9uZVxuICAgICAgfCBTb21lIF8gYXMgdmFsdWUgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyB2YWx1ZVxuICAgIGluXG4gICAgbGV0IGFjdGlvbiA9XG4gICAgICBtYXRjaCBkZXByZWNhdGVkX2hvb2sgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjdGlvblxuICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgZnVuIGVudiB4IC0+XG4gICAgICAgICAgZiB4O1xuICAgICAgICAgIGFjdGlvbiBlbnYgeFxuICAgIGluXG4gICAgeyBhY3Rpb24gPSBSZXN0IChhY3Rpb24sIGNvbXBsZXRlKVxuICAgIDsgcmVhZFxuICAgIDsgbnVtX29jY3VycmVuY2VzID0gTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICAgIDsgZXh0cmFfZG9jID0gTGF6eS5mcm9tX3ZhbCBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBub19hcmdfYWJvcnQgfmV4aXQgX25hbWUgPVxuICAgIHsgYWN0aW9uID0gTm9fYXJnIChmdW4gXyAtPiBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGUgKGV4aXQgKCkpKVxuICAgIDsgbnVtX29jY3VycmVuY2VzID0gTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICAgIDsgcmVhZCA9XG4gICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgICAoKiBXZSBrbm93IHRoYXQgdGhlIGZsYWcgd2Fzbid0IHBhc3NlZCBoZXJlIGJlY2F1c2UgaWYgaXQgd2FzIHBhc3NlZFxuICAgICAgICAgICAgICB0aGVuIHRoZSBbYWN0aW9uXSB3b3VsZCBoYXZlIGNhbGxlZCBbZXhpdF0uICopXG4gICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnICgpKVxuICAgIDsgZXh0cmFfZG9jID0gTGF6eS5mcm9tX3ZhbCBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBlc2NhcGUgbmFtZSA9IGVzY2FwZV9nZW5lcmFsIH5jb21wbGV0ZTpOb25lIH5kZXByZWNhdGVkX2hvb2s6Tm9uZSBuYW1lXG5cbiAgbGV0IGVzY2FwZV93aXRoX2F1dG9jb21wbGV0ZSB+Y29tcGxldGUgbmFtZSA9XG4gICAgZXNjYXBlX2dlbmVyYWwgfmNvbXBsZXRlOihTb21lIGNvbXBsZXRlKSB+ZGVwcmVjYXRlZF9ob29rOk5vbmUgbmFtZVxuICA7O1xuXG4gIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgbGV0IG5vX2FyZyB+aG9vayBuYW1lID1cbiAgICAgIG5vX2FyZ19nZW5lcmFsIH5pc19yZXF1aXJlZDpmYWxzZSB+ZGVwcmVjYXRlZF9ob29rOihTb21lIGhvb2spIH5rZXlfdmFsdWU6Tm9uZSBuYW1lXG4gICAgOztcblxuICAgIGxldCBlc2NhcGUgfmhvb2sgPSBlc2NhcGVfZ2VuZXJhbCB+Y29tcGxldGU6Tm9uZSB+ZGVwcmVjYXRlZF9ob29rOihTb21lIGhvb2spXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQYXRoIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBlbXB0eSA6IHRcbiAgdmFsIGNyZWF0ZSA6IHBhdGhfdG9fZXhlOnN0cmluZyAtPiB0XG4gIHZhbCBvZl9wYXJ0cyA6IHN0cmluZyBsaXN0IC0+IHRcbiAgdmFsIGFwcGVuZCA6IHQgLT4gc3ViY29tbWFuZDpzdHJpbmcgLT4gdFxuICB2YWwgcmVwbGFjZV9maXJzdCA6IHQgLT4gZnJvbTpzdHJpbmcgLT4gdG9fOnN0cmluZyAtPiB0XG4gIHZhbCBwYXJ0cyA6IHQgLT4gc3RyaW5nIGxpc3RcbiAgdmFsIHBhcnRzX2V4ZV9iYXNlbmFtZSA6IHQgLT4gc3RyaW5nIGxpc3RcbiAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIHZhbCB0b19zdHJpbmdfZG90cyA6IHQgLT4gc3RyaW5nXG4gIHZhbCBwb3BfaGVscCA6IHQgLT4gdFxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogdCAtPiBib29sXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIGxpc3RcblxuICBsZXQgZW1wdHkgPSBbXVxuICBsZXQgY3JlYXRlIH5wYXRoX3RvX2V4ZSA9IFsgcGF0aF90b19leGUgXVxuICBsZXQgb2ZfcGFydHMgcGFydHMgPSBMaXN0LnJldiBwYXJ0c1xuICBsZXQgYXBwZW5kIHQgfnN1YmNvbW1hbmQgPSBzdWJjb21tYW5kIDo6IHRcbiAgbGV0IHBhcnRzID0gTGlzdC5yZXZcblxuICBsZXQgcGFydHNfZXhlX2Jhc2VuYW1lIHQgPVxuICAgIG1hdGNoIExpc3QucmV2IHQgd2l0aFxuICAgIHwgW10gLT4gW11cbiAgICB8IGhkIDo6IHRsIC0+IEZpbGVuYW1lX2Jhc2UuYmFzZW5hbWUgaGQgOjogdGxcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHQgPSB1bndvcmRzIChwYXJ0c19leGVfYmFzZW5hbWUgdClcbiAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoXG5cbiAgbGV0IHJlcGxhY2VfZmlyc3QgdCB+ZnJvbSB+dG9fID1cbiAgICBsZXQgcmVjIGF1eCBwYXJ0cyB+YWNjIH5mcm9tIH50b18gPVxuICAgICAgbWF0Y2ggcGFydHMgd2l0aFxuICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgaWYgU3RyaW5nLiggPSApIGhkIGZyb21cbiAgICAgICAgdGhlbiBMaXN0LnJldl9hcHBlbmQgdGwgKHRvXyA6OiBhY2MpXG4gICAgICAgIGVsc2UgYXV4IHRsIH5hY2M6KGhkIDo6IGFjYykgfmZyb20gfnRvX1xuICAgIGluXG4gICAgYXV4IChwYXJ0cyB0KSB+YWNjOltdIH5mcm9tIH50b19cbiAgOztcblxuICBsZXQgcG9wX2hlbHAgPSBmdW5jdGlvblxuICAgIHwgXCJoZWxwXCIgOjogdCAtPiB0XG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfZG90cyB0ID1cbiAgICAobWF0Y2ggdCB3aXRoXG4gICAgIHwgW10gLT4gW11cbiAgICAgfCBsYXN0IDo6IGluaXQgLT4gbGFzdCA6OiBMaXN0Lm1hcCBpbml0IH5mOihGbi5jb25zdCBcIi5cIikpXG4gICAgfD4gdG9fc3RyaW5nXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5ID0gTGlzdC5pc19lbXB0eVxuZW5kXG5cbm1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICBtb2R1bGUgR3JhbW1hciA6IHNpZ1xuICAgIHR5cGUgdCA9IFNoYXBlLkFub25zLkdyYW1tYXIudFxuXG4gICAgdmFsIHplcm8gOiB0XG4gICAgdmFsIG9uZSA6IHN0cmluZyAtPiB0XG4gICAgdmFsIG1hbnkgOiB0IC0+IHRcbiAgICB2YWwgbWF5YmUgOiB0IC0+IHRcbiAgICB2YWwgbWF5YmVfaWRlbXBvdGVudCA6IHQgLT4gdFxuICAgIHZhbCBjb25jYXQgOiB0IGxpc3QgLT4gdFxuICAgIHZhbCBhZF9ob2MgOiB1c2FnZTpzdHJpbmcgLT4gdFxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbmFtZXMgOiB0IC0+IHN0cmluZyBsaXN0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFNoYXBlLkFub25zLkdyYW1tYXIudCA9XG4gICAgICB8IFplcm9cbiAgICAgIHwgT25lIG9mIHN0cmluZ1xuICAgICAgfCBNYW55IG9mIHRcbiAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgfCBDb25jYXQgb2YgdCBsaXN0XG4gICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcblxuICAgIGxldCBpbnZhcmlhbnQgPSBTaGFwZS5Bbm9ucy5HcmFtbWFyLmludmFyaWFudFxuICAgIGxldCB1c2FnZSA9IFNoYXBlLkFub25zLkdyYW1tYXIudXNhZ2VcblxuICAgIGxldCByZWMgaXNfZml4ZWRfYXJpdHkgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IHRydWVcbiAgICAgIHwgT25lIF8gLT4gdHJ1ZVxuICAgICAgfCBNYW55IF8gLT4gZmFsc2VcbiAgICAgIHwgTWF5YmUgXyAtPiBmYWxzZVxuICAgICAgfCBBZF9ob2MgXyAtPiBmYWxzZVxuICAgICAgfCBDb25jYXQgdHMgLT5cbiAgICAgICAgKG1hdGNoIExpc3QucmV2IHRzIHdpdGhcbiAgICAgICAgIHwgW10gLT4gZmFpbHdpdGggXCJidWcgaW4gY29tbWFuZC5tbFwiXG4gICAgICAgICB8IGxhc3QgOjogb3RoZXJzIC0+XG4gICAgICAgICAgIGFzc2VydCAoTGlzdC5mb3JfYWxsIG90aGVycyB+Zjppc19maXhlZF9hcml0eSk7XG4gICAgICAgICAgIGlzX2ZpeGVkX2FyaXR5IGxhc3QpXG4gICAgOztcblxuICAgIGxldCByZWMgbmFtZXMgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IFtdXG4gICAgICB8IE9uZSBzIC0+IFsgcyBdXG4gICAgICB8IE1hbnkgdCAtPiBuYW1lcyB0XG4gICAgICB8IE1heWJlIHQgLT4gbmFtZXMgdFxuICAgICAgfCBBZF9ob2MgcyAtPiBbIHMgXVxuICAgICAgfCBDb25jYXQgdHMgLT4gTGlzdC5jb25jYXRfbWFwIHRzIH5mOm5hbWVzXG4gICAgOztcblxuICAgIGxldCB6ZXJvID0gWmVyb1xuICAgIGxldCBvbmUgbmFtZSA9IE9uZSBuYW1lXG5cbiAgICBsZXQgbWFueSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gWmVybyAoKiBzdHJhbmdlLCBidXQgbm90IG5vbi1zZW5zZSAqKVxuICAgICAgfCB0IC0+XG4gICAgICAgIGlmIG5vdCAoaXNfZml4ZWRfYXJpdHkgdClcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoZlxuICAgICAgICAgICAgXCJpdGVyYXRpb24gb2YgdmFyaWFibGUtbGVuZ3RoIGdyYW1tYXJzIHN1Y2ggYXMgJXMgaXMgZGlzYWxsb3dlZFwiXG4gICAgICAgICAgICAodXNhZ2UgdClcbiAgICAgICAgICAgICgpO1xuICAgICAgICBNYW55IHRcbiAgICA7O1xuXG4gICAgbGV0IG1heWJlID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBaZXJvICgqIHN0cmFuZ2UsIGJ1dCBub3Qgbm9uLXNlbnNlICopXG4gICAgICB8IHQgLT4gTWF5YmUgdFxuICAgIDs7XG5cbiAgICBsZXQgbWF5YmVfaWRlbXBvdGVudCA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gWmVybyAoKiBzdHJhbmdlLCBidXQgbm90IG5vbi1zZW5zZSAqKVxuICAgICAgfCBNYXliZSB0IC0+IE1heWJlIHRcbiAgICAgIHwgTWFueSB0IC0+IE1hbnkgdFxuICAgICAgfCB0IC0+IE1heWJlIHRcbiAgICA7O1xuXG4gICAgbGV0IGNvbmNhdCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFplcm9cbiAgICAgIHwgY2FyIDo6IGNkciAtPlxuICAgICAgICBsZXQgY2FyLCBjZHIgPVxuICAgICAgICAgIExpc3QuZm9sZCBjZHIgfmluaXQ6KGNhciwgW10pIH5mOihmdW4gKHQxLCBhY2MpIHQyIC0+XG4gICAgICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICAgICAgfCBaZXJvLCB0IHwgdCwgWmVybyAtPiB0LCBhY2NcbiAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICBpZiBpc19maXhlZF9hcml0eSB0MVxuICAgICAgICAgICAgICB0aGVuIHQyLCB0MSA6OiBhY2NcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGZhaWx3aXRoZlxuICAgICAgICAgICAgICAgICAgXCJ0aGUgZ3JhbW1hciAlcyBmb3IgYW5vbnltb3VzIGFyZ3VtZW50cyBpcyBub3Qgc3VwcG9ydGVkIGJlY2F1c2UgdGhlcmUgXFxcbiAgICAgICAgICAgICAgICAgICBpcyB0aGUgcG9zc2liaWxpdHkgZm9yIGFyZ3VtZW50cyAoJXMpIGZvbGxvd2luZyBhIHZhcmlhYmxlIG51bWJlciBvZiBcXFxuICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyAoJXMpLiAgU3VwcG9ydGluZyBzdWNoIGdyYW1tYXJzIHdvdWxkIGNvbXBsaWNhdGUgdGhlIFxcXG4gICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gc2lnbmlmaWNhbnRseS5cIlxuICAgICAgICAgICAgICAgICAgKHVzYWdlIChDb25jYXQgKExpc3QucmV2ICh0MiA6OiB0MSA6OiBhY2MpKSkpXG4gICAgICAgICAgICAgICAgICAodXNhZ2UgdDIpXG4gICAgICAgICAgICAgICAgICAodXNhZ2UgdDEpXG4gICAgICAgICAgICAgICAgICAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIGNkciB3aXRoXG4gICAgICAgICB8IFtdIC0+IGNhclxuICAgICAgICAgfCBfIDo6IF8gLT4gQ29uY2F0IChMaXN0LnJldiAoY2FyIDo6IGNkcikpKVxuICAgIDs7XG5cbiAgICBsZXQgYWRfaG9jIH51c2FnZSA9IEFkX2hvYyB1c2FnZVxuICBlbmRcblxuICBtb2R1bGUgUGFyc2VyIDogc2lnXG4gICAgbW9kdWxlIEJhc2ljIDogc2lnXG4gICAgICB0eXBlICsnYSB0XG5cbiAgICAgIG1vZHVsZSBGb3Jfb3BlbmluZyA6IHNpZ1xuICAgICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgICAgICB2YWwgKCA8Kj4gKSA6ICgnYSAtPiAnYikgdCAtPiAnYSB0IC0+ICdiIHRcbiAgICAgICAgdmFsICggPj58ICkgOiAnYSB0IC0+ICgnYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgZW5kXG5cbiAgICAgIHZhbCBmcm9tX2VudiA6IChFbnYudCAtPiAnYSkgLT4gJ2EgdFxuICAgIGVuZFxuXG4gICAgdHlwZSArJ2EgdCA9ICdhIFBhcnNpbmdfb3V0Y29tZS50IEJhc2ljLnRcblxuICAgIHZhbCBvbmUgOiBuYW1lOnN0cmluZyAtPiAnYSBBcmdfdHlwZS50IC0+ICdhIHRcbiAgICB2YWwgbWF5YmUgOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gICAgdmFsIHNlcXVlbmNlIDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgICB2YWwgc3RvcF9wYXJzaW5nIDogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGZpbmFsX3ZhbHVlIDogJ2EgQmFzaWMudCAtPiBFbnYudCAtPiAnYVxuXG4gICAgbW9kdWxlIENvbnN1bWVfcmVzdWx0IDogc2lnXG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID1cbiAgICAgICAgeyAoKiBJZiBlbWFjcyBoaWdobGlnaHRzIFtwYXJzZXJdIGFzIGlmIGl0IHdlcmUgYSBrZXl3b3JkLCB0aGF0J3Mgb25seSBiZWNhdXNlXG4gICAgICAgICAgICAgW3BhcnNlcl0gd2FzIGEga2V5d29yZCBpbiBjYW1scDQuIFtwYXJzZXJdIGlzIGEgcmVndWxhciBuYW1lIGluIE9DYW1sLiAqKVxuICAgICAgICAgIHBhcnNlciA6ICdhIEJhc2ljLnRcbiAgICAgICAgOyBwYXJzZV9mbGFncyA6IGJvb2xcbiAgICAgICAgOyB1cGRhdGVfZW52IDogRW52LnQgLT4gRW52LnRcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgdmFsIGNvbnN1bWUgOiAnYSBCYXNpYy50IC0+IHN0cmluZyAtPiBmb3JfY29tcGxldGlvbjpib29sIC0+ICdhIENvbnN1bWVfcmVzdWx0LnRcbiAgICB2YWwgY29tcGxldGUgOiAnYSBCYXNpYy50IC0+IEVudi50IC0+IHBhcnQ6c3RyaW5nIC0+IE5vdGhpbmcudFxuXG4gICAgbW9kdWxlIEZvcl9vcGVuaW5nIDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgICAgdmFsICggPCo+ICkgOiAoJ2EgLT4gJ2IpIHQgLT4gJ2EgdCAtPiAnYiB0XG4gICAgICB2YWwgKCA+PnwgKSA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgZW5kXG4gIGVuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBCYXNpYyA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBEb25lIG9mIChFbnYudCAtPiAnYSlcbiAgICAgICAgfCBNb3JlIG9mICdhIG1vcmVcbiAgICAgICAgKCogQSBbVGVzdF0gd2lsbCAoZ2VuZXJhbGx5KSByZXR1cm4gYSBbRG9uZSBfXSB2YWx1ZSBpZiB0aGVyZSBpcyBubyBtb3JlIGlucHV0IGFuZFxuICAgICAgICAgICBhIFtNb3JlXSBwYXJzZXIgdG8gdXNlIGlmIHRoZXJlIGlzIGFueSBtb3JlIGlucHV0LiAqKVxuICAgICAgICB8IFRlc3Qgb2YgKG1vcmU6Ym9vbCAtPiAnYSB0KVxuICAgICAgICAoKiBJZiB3ZSdyZSBvbmx5IGNvbXBsZXRpbmcsIHdlIGNhbid0IHB1bGwgdmFsdWVzIG91dCwgYnV0IHdlIGNhbiBzdGlsbCBzdGVwIHRocm91Z2hcbiAgICAgICAgICAgW3RdcyAod2hpY2ggbWF5IGhhdmUgY29tcGxldGlvbiBzZXQgdXApLiAqKVxuICAgICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gb2YgcGFja2VkIGxpc3RcbiAgICAgICAgfCBTdG9wX3BhcnNpbmcgb2YgJ2EgdFxuXG4gICAgICBhbmQgJ2EgbW9yZSA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IHBhcnNlIDogc3RyaW5nIC0+IGZvcl9jb21wbGV0aW9uOmJvb2wgLT4gJ2EgcGFyc2VfcmVzdWx0XG4gICAgICAgIDsgY29tcGxldGUgOiBDb21wbGV0ZXIudFxuICAgICAgICB9XG5cbiAgICAgIGFuZCBwYWNrZWQgPSBQYWNrZWQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gICAgICBhbmQgJ2EgcGFyc2VfcmVzdWx0ID1cbiAgICAgICAgeyBwYXJzZXIgOiAnYSB0XG4gICAgICAgIDsgdXBkYXRlX2VudiA6IEVudi50IC0+IEVudi50XG4gICAgICAgIH1cblxuICAgICAgbGV0IHBhcnNlX21vcmUgeyBuYW1lOyBwYXJzZTsgY29tcGxldGUgfSB+ZiA9XG4gICAgICAgIGxldCBwYXJzZSBhcmcgfmZvcl9jb21wbGV0aW9uID1cbiAgICAgICAgICBsZXQgeyBwYXJzZXI7IHVwZGF0ZV9lbnYgfSA9IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gaW5cbiAgICAgICAgICB7IHBhcnNlciA9IGYgcGFyc2VyOyB1cGRhdGVfZW52IH1cbiAgICAgICAgaW5cbiAgICAgICAgTW9yZSB7IG5hbWU7IHBhcnNlOyBjb21wbGV0ZSB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFja19mb3JfY29tcGxldGlvbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRG9uZSBfIC0+IFtdICgqIHdvbid0IGNvbXBsZXRlIG9yIGNvbnN1bWUgYW55dGhpbmcgKilcbiAgICAgICAgfCAoTW9yZSBfIHwgVGVzdCBfIHwgU3RvcF9wYXJzaW5nIF8pIGFzIHggLT4gWyBQYWNrZWQgeCBdXG4gICAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBwcyAtPiBwc1xuICAgICAgOztcblxuICAgICAgbGV0IHJlYyAoIDwqPiApIHRfbGVmdCB0X3JpZ2h0ID1cbiAgICAgICAgbWF0Y2ggdF9sZWZ0LCB0X3JpZ2h0IHdpdGhcbiAgICAgICAgKCogW0RvbmVdICopXG4gICAgICAgIHwgRG9uZSBmLCBEb25lIHggLT5cbiAgICAgICAgICBEb25lXG4gICAgICAgICAgICAoZnVuIGVudiAtPlxuICAgICAgICAgICAgICAgbGV0IGZfb3V0Y29tZSA9IGYgZW52IGluXG4gICAgICAgICAgICAgICBsZXQgeF9vdXRjb21lID0geCBlbnYgaW5cbiAgICAgICAgICAgICAgIGZfb3V0Y29tZSB4X291dGNvbWUpXG4gICAgICAgICgqIG5leHQgc3RlcCBbTW9yZV0gKilcbiAgICAgICAgfCBNb3JlIG1vcmUsIF8gLT4gcGFyc2VfbW9yZSBtb3JlIH5mOihmdW4gdGwgLT4gdGwgPCo+IHRfcmlnaHQpXG4gICAgICAgIHwgRG9uZSBfLCBNb3JlIG1vcmUgLT4gcGFyc2VfbW9yZSBtb3JlIH5mOihmdW4gdHIgLT4gdF9sZWZ0IDwqPiB0cilcbiAgICAgICAgKCogbmV4dCBzdGVwIFtPbmx5X2Zvcl9jb21wbGV0aW9uXSAqKVxuICAgICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gXywgXyB8IERvbmUgXywgT25seV9mb3JfY29tcGxldGlvbiBfIC0+XG4gICAgICAgICAgT25seV9mb3JfY29tcGxldGlvbiAocGFja19mb3JfY29tcGxldGlvbiB0X2xlZnQgQCBwYWNrX2Zvcl9jb21wbGV0aW9uIHRfcmlnaHQpXG4gICAgICAgICgqIG5leHQgc3RlcCBbU3RvcF9wYXJzaW5nXSAqKVxuICAgICAgICB8IFN0b3BfcGFyc2luZyB0bCwgdHIgfCAoRG9uZSBfIGFzIHRsKSwgU3RvcF9wYXJzaW5nIHRyIC0+IFN0b3BfcGFyc2luZyAodGwgPCo+IHRyKVxuICAgICAgICAoKiBuZXh0IHN0ZXAgW1Rlc3RdICopXG4gICAgICAgIHwgVGVzdCB0ZXN0LCBfIC0+IFRlc3QgKGZ1biB+bW9yZSAtPiB0ZXN0IH5tb3JlIDwqPiB0X3JpZ2h0KVxuICAgICAgICB8IERvbmUgXywgVGVzdCB0ZXN0IC0+IFRlc3QgKGZ1biB+bW9yZSAtPiB0X2xlZnQgPCo+IHRlc3Qgfm1vcmUpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmV0dXJuIGEgPSBEb25lIChmdW4gXyAtPiBhKVxuICAgICAgbGV0ICggPj58ICkgdCBmID0gcmV0dXJuIGYgPCo+IHRcbiAgICAgIGxldCBmcm9tX2VudiBmID0gRG9uZSAoZnVuIGVudiAtPiBmIGVudilcblxuICAgICAgbW9kdWxlIEZvcl9vcGVuaW5nID0gc3RydWN0XG4gICAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBvcGVuIEJhc2ljXG5cbiAgICB0eXBlICdhIHQgPSAnYSBQYXJzaW5nX291dGNvbWUudCBCYXNpYy50XG5cbiAgICBsZXQgKCA+PnwgKSB0IGYgPSB0ID4+fCBQYXJzaW5nX291dGNvbWUubWFwIH5mXG4gICAgbGV0ICggPCo+ICkgdF9sZWZ0IHRfcmlnaHQgPSByZXR1cm4gUGFyc2luZ19vdXRjb21lLiggPCo+ICkgPCo+IHRfbGVmdCA8Kj4gdF9yaWdodFxuICAgIGxldCByZXR1cm4gYSA9IHJldHVybiAoUGFyc2luZ19vdXRjb21lLnJldHVybiBhKVxuICAgIGxldCByZXR1cm5fd2l0aF9hcmcgYSA9IERvbmUgKGZ1biBfIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fd2l0aF9hcmcgYSlcbiAgICBsZXQgc3RvcF9wYXJzaW5nIHQgPSBTdG9wX3BhcnNpbmcgdFxuXG4gICAgbGV0IG9uZV9tb3JlIH5uYW1lIGFyZ190eXBlID1cbiAgICAgIGxldCBwYXJzZSBhbm9uIH5mb3JfY29tcGxldGlvbiA9XG4gICAgICAgIG1hdGNoIEFyZ190eXBlLnBhcnNlIGFyZ190eXBlIGFub24gd2l0aFxuICAgICAgICB8IEVycm9yIGVycm9yIC0+XG4gICAgICAgICAgaWYgZm9yX2NvbXBsZXRpb25cbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAoKiB3ZSBkb24ndCAqcmVhbGx5KiBjYXJlIGFib3V0IHRoaXMgdmFsdWUsIHNvIGp1c3QgcHV0IGluIGEgZHVtbXkgdmFsdWUgc29cbiAgICAgICAgICAgICAgIGNvbXBsZXRpb24gY2FuIGNvbnRpbnVlICopXG4gICAgICAgICAgICB7IHBhcnNlciA9IE9ubHlfZm9yX2NvbXBsZXRpb24gW107IHVwZGF0ZV9lbnYgPSBGbi5pZCB9XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZGllIFwiZmFpbGVkIHRvIHBhcnNlICVzIHZhbHVlICVTXFxuJXNcIiBuYW1lIGFub24gKEVycm9yLnRvX3N0cmluZ19odW0gZXJyb3IpICgpXG4gICAgICAgIHwgT2sgdiAtPlxuICAgICAgICAgIHsgcGFyc2VyID0gcmV0dXJuX3dpdGhfYXJnIHZcbiAgICAgICAgICA7IHVwZGF0ZV9lbnYgPVxuICAgICAgICAgICAgICAoZnVuIGVudiAtPlxuICAgICAgICAgICAgICAgICBPcHRpb24uZm9sZCAoQXJnX3R5cGUua2V5IGFyZ190eXBlKSB+aW5pdDplbnYgfmY6KGZ1biBlbnYga2V5IC0+XG4gICAgICAgICAgICAgICAgICAgRW52Lm11bHRpX2FkZCBlbnYgfmtleSB+ZGF0YTp2KSlcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgTW9yZSB7IG5hbWU7IHBhcnNlOyBjb21wbGV0ZSA9IEFyZ190eXBlLmNvbXBsZXRlIGFyZ190eXBlIH1cbiAgICA7O1xuXG4gICAgbGV0IG9uZSB+bmFtZSBhcmdfdHlwZSA9XG4gICAgICBUZXN0XG4gICAgICAgIChmdW4gfm1vcmUgLT5cbiAgICAgICAgICAgaWYgbW9yZVxuICAgICAgICAgICB0aGVuIG9uZV9tb3JlIH5uYW1lIGFyZ190eXBlXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBEb25lXG4gICAgICAgICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5lcnJvclxuICAgICAgICAgICAgICAgICAgICB+aGFzX2FyZzpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgKEVycm9yLm9mX3N0cmluZyAoc3ByaW50ZiBcIm1pc3NpbmcgYW5vbnltb3VzIGFyZ3VtZW50OiAlc1wiIG5hbWUpKSkpKVxuICAgIDs7XG5cbiAgICBsZXQgbWF5YmUgdCA9XG4gICAgICBUZXN0XG4gICAgICAgIChmdW4gfm1vcmUgLT5cbiAgICAgICAgICAgaWYgbW9yZSB0aGVuIHJldHVybl93aXRoX2FyZyAoZnVuIGEgLT4gU29tZSBhKSA8Kj4gdCBlbHNlIHJldHVybiBOb25lKVxuICAgIDs7XG5cbiAgICBsZXQgc2VxdWVuY2UgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgPVxuICAgICAgICBUZXN0XG4gICAgICAgICAgKGZ1biB+bW9yZSAtPlxuICAgICAgICAgICAgIGlmIG1vcmUgdGhlbiByZXR1cm4gKGZ1biB2IGFjYyAtPiB2IDo6IGFjYykgPCo+IHQgPCo+IGxvb3AgZWxzZSByZXR1cm4gW10pXG4gICAgICBpblxuICAgICAgbG9vcFxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGZpbmFsX3ZhbHVlIHQgZW52ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBEb25lIGEgLT4gYSBlbnZcbiAgICAgIHwgU3RvcF9wYXJzaW5nIHQgLT4gZmluYWxfdmFsdWUgdCBlbnZcbiAgICAgIHwgVGVzdCBmIC0+IGZpbmFsX3ZhbHVlIChmIH5tb3JlOmZhbHNlKSBlbnZcbiAgICAgIHwgTW9yZSBfIC0+XG4gICAgICAgICgqIHRoaXMgZG9lc24ndCBoYXBwZW4gYmVjYXVzZSBhbGwgb2NjdXJyZW5jZXMgb2YgW01vcmVdIGFyZSBwcm90ZWN0ZWRcbiAgICAgICAgICAgYnkgW1Rlc3RdLCB3aGljaCBtZWFucyB0aGVyZSB3aWxsIGFsd2F5cyBiZSBhbiBleHRyYSBhcmd1bWVudCB0byBnaXZlXG4gICAgICAgICAgIGJlZm9yZSByZXF1ZXN0aW5nIHRoZSBmaW5hbCB2YWx1ZSAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBfIC0+XG4gICAgICAgIGZhaWx3aXRoIFwiQlVHOiBhc2tlZCBmb3IgZmluYWwgdmFsdWUgd2hlbiBkb2luZyBjb21wbGV0aW9uXCJcbiAgICA7O1xuXG4gICAgbW9kdWxlIENvbnN1bWVfcmVzdWx0ID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID1cbiAgICAgICAgeyBwYXJzZXIgOiAnYSBCYXNpYy50XG4gICAgICAgIDsgcGFyc2VfZmxhZ3MgOiBib29sXG4gICAgICAgIDsgdXBkYXRlX2VudiA6IEVudi50IC0+IEVudi50XG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIGxldCByZWMgY29uc3VtZVxuICAgICAgOiB0eXBlIGEuIGEgQmFzaWMudCAtPiBzdHJpbmcgLT4gZm9yX2NvbXBsZXRpb246Ym9vbCAtPiBhIENvbnN1bWVfcmVzdWx0LnRcbiAgICAgID1cbiAgICAgIGZ1biB0IGFyZyB+Zm9yX2NvbXBsZXRpb24gLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBEb25lIF8gLT4gZGllIFwidG9vIG1hbnkgYW5vbnltb3VzIGFyZ3VtZW50c1wiICgpXG4gICAgICB8IFRlc3QgZiAtPiBjb25zdW1lIChmIH5tb3JlOnRydWUpIGFyZyB+Zm9yX2NvbXBsZXRpb25cbiAgICAgIHwgTW9yZSB7IHBhcnNlOyBfIH0gLT5cbiAgICAgICAgbGV0IHsgcGFyc2VyOyB1cGRhdGVfZW52IH0gPSBwYXJzZSBhcmcgfmZvcl9jb21wbGV0aW9uIGluXG4gICAgICAgIHsgcGFyc2VyOyBwYXJzZV9mbGFncyA9IHRydWU7IHVwZGF0ZV9lbnYgfVxuICAgICAgfCBTdG9wX3BhcnNpbmcgdCAtPiB7IChjb25zdW1lIHQgYXJnIH5mb3JfY29tcGxldGlvbikgd2l0aCBwYXJzZV9mbGFncyA9IGZhbHNlIH1cbiAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBwYWNrZWQgLT5cbiAgICAgICAgKG1hdGNoIHBhY2tlZCB3aXRoXG4gICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgIHsgcGFyc2VyID0gT25seV9mb3JfY29tcGxldGlvbiBbXTsgcGFyc2VfZmxhZ3MgPSB0cnVlOyB1cGRhdGVfZW52ID0gRm4uaWQgfVxuICAgICAgICAgfCBQYWNrZWQgdCA6OiByZXN0IC0+XG4gICAgICAgICAgIGxldCAoeyB1cGRhdGVfZW52OyBwYXJzZV9mbGFnczsgcGFyc2VyIH0gOiBfIENvbnN1bWVfcmVzdWx0LnQpID1cbiAgICAgICAgICAgICBjb25zdW1lIHQgYXJnIH5mb3JfY29tcGxldGlvblxuICAgICAgICAgICBpblxuICAgICAgICAgICB7IHVwZGF0ZV9lbnZcbiAgICAgICAgICAgOyBwYXJzZV9mbGFnc1xuICAgICAgICAgICA7IHBhcnNlciA9IE9ubHlfZm9yX2NvbXBsZXRpb24gKHBhY2tfZm9yX2NvbXBsZXRpb24gcGFyc2VyIEAgcmVzdClcbiAgICAgICAgICAgfSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBjb21wbGV0ZSA6IHR5cGUgYS4gYSBCYXNpYy50IC0+IEVudi50IC0+IHBhcnQ6c3RyaW5nIC0+IE5vdGhpbmcudCA9XG4gICAgICBmdW4gdCBlbnYgfnBhcnQgLT5cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRG9uZSBfIC0+IGV4aXQgMFxuICAgICAgICB8IFRlc3QgZiAtPiBjb21wbGV0ZSAoZiB+bW9yZTp0cnVlKSBlbnYgfnBhcnRcbiAgICAgICAgfCBNb3JlIHsgY29tcGxldGU7IF8gfSAtPiBDb21wbGV0ZXIucnVuX2FuZF9leGl0IGNvbXBsZXRlIGVudiB+cGFydFxuICAgICAgICB8IFN0b3BfcGFyc2luZyB0IC0+IGNvbXBsZXRlIHQgZW52IH5wYXJ0XG4gICAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiB0IC0+XG4gICAgICAgICAgKG1hdGNoIHQgd2l0aFxuICAgICAgICAgICB8IFtdIC0+IGV4aXQgMFxuICAgICAgICAgICB8IFBhY2tlZCB0IDo6IF8gLT4gY29tcGxldGUgdCBlbnYgfnBhcnQpXG4gICAgOztcblxuICAgIG1vZHVsZSBGb3Jfb3BlbmluZyA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBlbmRcbiAgZW5kXG5cbiAgb3BlbiBQYXJzZXIuRm9yX29wZW5pbmdcblxuICB0eXBlICdhIHQgPVxuICAgIHsgcCA6ICdhIFBhcnNlci50XG4gICAgOyBncmFtbWFyIDogR3JhbW1hci50XG4gICAgfVxuXG4gIGxldCB0MiB0MSB0MiA9XG4gICAgeyBwID0gcmV0dXJuIChmdW4gYTEgYTIgLT4gYTEsIGEyKSA8Kj4gdDEucCA8Kj4gdDIucFxuICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuY29uY2F0IFsgdDEuZ3JhbW1hcjsgdDIuZ3JhbW1hciBdXG4gICAgfVxuICA7O1xuXG4gIGxldCB0MyB0MSB0MiB0MyA9XG4gICAgeyBwID0gcmV0dXJuIChmdW4gYTEgYTIgYTMgLT4gYTEsIGEyLCBhMykgPCo+IHQxLnAgPCo+IHQyLnAgPCo+IHQzLnBcbiAgICA7IGdyYW1tYXIgPSBHcmFtbWFyLmNvbmNhdCBbIHQxLmdyYW1tYXI7IHQyLmdyYW1tYXI7IHQzLmdyYW1tYXIgXVxuICAgIH1cbiAgOztcblxuICBsZXQgdDQgdDEgdDIgdDMgdDQgPVxuICAgIHsgcCA9IHJldHVybiAoZnVuIGExIGEyIGEzIGE0IC0+IGExLCBhMiwgYTMsIGE0KSA8Kj4gdDEucCA8Kj4gdDIucCA8Kj4gdDMucCA8Kj4gdDQucFxuICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuY29uY2F0IFsgdDEuZ3JhbW1hcjsgdDIuZ3JhbW1hcjsgdDMuZ3JhbW1hcjsgdDQuZ3JhbW1hciBdXG4gICAgfVxuICA7O1xuXG4gIGxldCBub3JtYWxpemUgc3RyID1cbiAgICAoKiBWZXJpZnkgdGhlIHN0cmluZyBpcyBub3QgZW1wdHkgb3Igc3Vycm91bmRlZCBieSB3aGl0ZXNwYWNlICopXG4gICAgbGV0IHN0cmxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgaWYgc3RybGVuID0gMCB0aGVuIGZhaWx3aXRoIFwiRW1wdHkgYW5vbnltb3VzIGFyZ3VtZW50IG5hbWUgcHJvdmlkZWRcIjtcbiAgICBpZiBTdHJpbmcuKCA8PiApIChTdHJpbmcuc3RyaXAgc3RyKSBzdHJcbiAgICB0aGVuIGZhaWx3aXRoZiBcImFyZ3VtZW50IG5hbWUgJVMgaGFzIHN1cnJvdW5kaW5nIHdoaXRlc3BhY2VcIiBzdHIgKCk7XG4gICAgKCogSWYgdGhlIHN0cmluZyBjb250YWlucyBzcGVjaWFsIHN1cnJvdW5kaW5nIGNoYXJhY3RlcnMsIGRvbid0IGRvIGFueXRoaW5nICopXG4gICAgbGV0IGhhc19zcGVjaWFsX2NoYXJzID1cbiAgICAgIGxldCBzcGVjaWFsX2NoYXJzID1cbiAgICAgICAgU2V0Lm9mX2xpc3QgKG1vZHVsZSBDaGFyKSBbICc8JzsgJz4nOyAnWyc7ICddJzsgJygnOyAnKSc7ICd7JzsgJ30nIF1cbiAgICAgIGluXG4gICAgICBTdHJpbmcuZXhpc3RzIHN0ciB+ZjooU2V0Lm1lbSBzcGVjaWFsX2NoYXJzKVxuICAgIGluXG4gICAgaWYgaGFzX3NwZWNpYWxfY2hhcnMgdGhlbiBzdHIgZWxzZSBTdHJpbmcudXBwZXJjYXNlIHN0clxuICA7O1xuXG4gIGxldCAoICU6ICkgbmFtZSBhcmdfdHlwZSA9XG4gICAgbGV0IG5hbWUgPSBub3JtYWxpemUgbmFtZSBpblxuICAgIHsgcCA9IFBhcnNlci5vbmUgfm5hbWUgYXJnX3R5cGU7IGdyYW1tYXIgPSBHcmFtbWFyLm9uZSBuYW1lIH1cbiAgOztcblxuICBsZXQgbWFwX2Fub25zIHQgfmYgPSB7IHAgPSB0LnAgPj58IGY7IGdyYW1tYXIgPSB0LmdyYW1tYXIgfVxuICBsZXQgbWF5YmUgdCA9IHsgcCA9IFBhcnNlci5tYXliZSB0LnA7IGdyYW1tYXIgPSBHcmFtbWFyLm1heWJlIHQuZ3JhbW1hciB9XG5cbiAgbGV0IG1heWJlX3dpdGhfZGVmYXVsdCBkZWZhdWx0IHQgPVxuICAgIGxldCB0ID0gbWF5YmUgdCBpblxuICAgIHsgdCB3aXRoIHAgPSAodC5wID4+fCBmdW4gdiAtPiBPcHRpb24udmFsdWUgfmRlZmF1bHQgdikgfVxuICA7O1xuXG4gIGxldCBzZXF1ZW5jZSB0ID0geyBwID0gUGFyc2VyLnNlcXVlbmNlIHQucDsgZ3JhbW1hciA9IEdyYW1tYXIubWFueSB0LmdyYW1tYXIgfVxuICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIgdCA9IHQyIHQgKHNlcXVlbmNlIHQpXG5cbiAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0IHQgPVxuICAgIGxldCB0ID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIgdCBpblxuICAgIHsgdCB3aXRoIHAgPSAodC5wID4+fCBmdW4gKHgsIHhzKSAtPiB4IDo6IHhzKSB9XG4gIDs7XG5cbiAgbGV0IGVzY2FwZSB0ID0geyBwID0gUGFyc2VyLnN0b3BfcGFyc2luZyB0LnA7IGdyYW1tYXIgPSB0LmdyYW1tYXIgfVxuXG4gIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgbGV0IGFkX2hvYyB+dXNhZ2VfYXJnID1cbiAgICAgIHsgcCA9XG4gICAgICAgICAgUGFyc2VyLnNlcXVlbmNlXG4gICAgICAgICAgICAoUGFyc2VyLm9uZSB+bmFtZTpcIldJTEwgTkVWRVIgQkUgUFJJTlRFRFwiIEFyZ190eXBlLkV4cG9ydC5zdHJpbmcpXG4gICAgICA7IGdyYW1tYXIgPSBHcmFtbWFyLmFkX2hvYyB+dXNhZ2U6dXNhZ2VfYXJnXG4gICAgICB9XG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIENtZGxpbmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5pbFxuICAgIHwgQ29ucyBvZiBzdHJpbmcgKiB0XG4gICAgfCBDb21wbGV0ZSBvZiBzdHJpbmdcbiAgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICBsZXQgb2ZfbGlzdCBhcmdzID0gTGlzdC5mb2xkX3JpZ2h0IGFyZ3MgfmluaXQ6TmlsIH5mOihmdW4gYXJnIGFyZ3MgLT4gQ29ucyAoYXJnLCBhcmdzKSlcblxuICBsZXQgcmVjIHRvX2xpc3QgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IFtdXG4gICAgfCBDb25zICh4LCB4cykgLT4geCA6OiB0b19saXN0IHhzXG4gICAgfCBDb21wbGV0ZSB4IC0+IFsgeCBdXG4gIDs7XG5cbiAgbGV0IHJlYyBlbmRzX2luX2NvbXBsZXRlID0gZnVuY3Rpb25cbiAgICB8IENvbXBsZXRlIF8gLT4gdHJ1ZVxuICAgIHwgTmlsIC0+IGZhbHNlXG4gICAgfCBDb25zIChfLCBhcmdzKSAtPiBlbmRzX2luX2NvbXBsZXRlIGFyZ3NcbiAgOztcblxuICBsZXQgZXh0ZW5kIHQgfmV4dGVuZCB+cGF0aCA9XG4gICAgaWYgZW5kc19pbl9jb21wbGV0ZSB0XG4gICAgdGhlbiB0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcGF0aF9saXN0ID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OltdIChMaXN0LnRsIChQYXRoLnBhcnRzIHBhdGgpKSBpblxuICAgICAgb2ZfbGlzdCAodG9fbGlzdCB0IEAgZXh0ZW5kIHBhdGhfbGlzdCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIEtleV90eXBlID0gU2hhcGUuUHJpdmF0ZS5LZXlfdHlwZVxuXG5sZXQgYXNzZXJ0X25vX3VuZGVyc2NvcmVzIGtleV90eXBlIGZsYWdfb3Jfc3ViY29tbWFuZCA9XG4gIGlmIFN0cmluZy5leGlzdHMgZmxhZ19vcl9zdWJjb21tYW5kIH5mOihmdW4gYyAtPiBDaGFyLiggPSApIGMgJ18nKVxuICB0aGVuXG4gICAgZmFpbHdpdGhmXG4gICAgICBcIiVzICVzIGNvbnRhaW5zIGFuIHVuZGVyc2NvcmUuIFVzZSBhIGRhc2ggaW5zdGVhZC5cIlxuICAgICAgKEtleV90eXBlLnRvX3N0cmluZyBrZXlfdHlwZSlcbiAgICAgIGZsYWdfb3Jfc3ViY29tbWFuZFxuICAgICAgKClcbjs7XG5cbmxldCBub3JtYWxpemUga2V5X3R5cGUga2V5ID1cbiAgYXNzZXJ0X25vX3VuZGVyc2NvcmVzIGtleV90eXBlIGtleTtcbiAgbWF0Y2gga2V5X3R5cGUgd2l0aFxuICB8IEtleV90eXBlLkZsYWcgLT5cbiAgICBpZiBTdHJpbmcuZXF1YWwga2V5IFwiLVwiIHRoZW4gZmFpbHdpdGhmICFcImludmFsaWQgJXtLZXlfdHlwZX0gbmFtZTogJVNcIiBrZXlfdHlwZSBrZXkgKCk7XG4gICAgaWYgU3RyaW5nLmV4aXN0cyBrZXkgfmY6Q2hhci5pc193aGl0ZXNwYWNlXG4gICAgdGhlbiBmYWlsd2l0aGYgIVwiaW52YWxpZCAle0tleV90eXBlfSBuYW1lIChjb250YWlucyB3aGl0ZXNwYWNlKTogJVNcIiBrZXlfdHlwZSBrZXkgKCk7XG4gICAgaWYgU3RyaW5nLmlzX3ByZWZpeCB+cHJlZml4OlwiLVwiIGtleSB0aGVuIGtleSBlbHNlIFwiLVwiIF4ga2V5XG4gIHwgS2V5X3R5cGUuU3ViY29tbWFuZCAtPiBTdHJpbmcubG93ZXJjYXNlIGtleVxuOztcblxubGV0IGxvb2t1cF9leHBhbmQgPSBTaGFwZS5Qcml2YXRlLmxvb2t1cF9leHBhbmRcblxubGV0IGxvb2t1cF9leHBhbmRfd2l0aF9hbGlhc2VzIG1hcCBwcmVmaXgga2V5X3R5cGUgPVxuICBsZXQgYWxpc3QgPVxuICAgIExpc3QuY29uY2F0X21hcCAoTWFwLmRhdGEgbWFwKSB+ZjooZnVuIGZsYWcgLT5cbiAgICAgIGxldCB7IEZsYWcuSW50ZXJuYWwubmFtZVxuICAgICAgICAgIDsgYWxpYXNlc1xuICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgICA7IGFjdGlvbiA9IF9cbiAgICAgICAgICA7IGRvYyA9IF9cbiAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlcyA9IF9cbiAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IF9cbiAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmdcbiAgICAgICAgICB9XG4gICAgICAgID1cbiAgICAgICAgZmxhZ1xuICAgICAgaW5cbiAgICAgIGxldCBkYXRhID0gZmxhZywgbmFtZV9tYXRjaGluZyBpblxuICAgICAgbGV0IGFsaWFzZXMgPSBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCBAIGFsaWFzZXMgaW5cbiAgICAgIChuYW1lLCBkYXRhKSA6OiBMaXN0Lm1hcCBhbGlhc2VzIH5mOihmdW4gYWxpYXMgLT4gYWxpYXMsIGRhdGEpKVxuICBpblxuICBtYXRjaCBMaXN0LmZpbmRfYV9kdXAgYWxpc3QgfmNvbXBhcmU6KGZ1biAoczEsIF8pIChzMiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgczEgczIpIHdpdGhcbiAgfCBOb25lIC0+IGxvb2t1cF9leHBhbmQgYWxpc3QgcHJlZml4IGtleV90eXBlXG4gIHwgU29tZSAoZmxhZywgXykgLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgZmxhZ3MgbmFtZWQgJXNcIiBmbGFnICgpXG47O1xuXG5tb2R1bGUgQ29tbWFuZF9iYXNlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiAodW5pdCAtPiBzdHJpbmcpIG9wdGlvblxuICAgIDsgZmxhZ3MgOiBGbGFnLkludGVybmFsLnQgTWFwLk0oU3RyaW5nKS50XG4gICAgO1xuICAgICAgYW5vbnMgOiB1bml0IC0+IChbIGBQYXJzZV9hcmdzIF0gLT4gWyBgUnVuX21haW4gXSAtPiB1bml0KSBBbm9ucy5QYXJzZXIuQmFzaWMudFxuICAgIDsgdXNhZ2UgOiBBbm9ucy5HcmFtbWFyLnRcbiAgICB9XG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgc3ViY29tbWFuZF9jbXBfZnN0IChhLCBfKSAoYywgXykgPSBoZWxwX3NjcmVlbl9jb21wYXJlIGEgY1xuXG4gICAgbGV0IGZsYWdzX2hlbHAgPyhkaXNwbGF5X2hlbHBfZmxhZ3MgPSB0cnVlKSB0ID1cbiAgICAgIGxldCBmbGFncyA9IE1hcC5kYXRhIHQuZmxhZ3MgaW5cbiAgICAgIGxldCBmbGFncyA9XG4gICAgICAgIGlmIGRpc3BsYXlfaGVscF9mbGFnc1xuICAgICAgICB0aGVuIGZsYWdzXG4gICAgICAgIGVsc2UgTGlzdC5maWx0ZXIgZmxhZ3MgfmY6KGZ1biBmIC0+IFN0cmluZy4oIDw+ICkgZi5uYW1lIFwiLWhlbHBcIilcbiAgICAgIGluXG4gICAgICBMaXN0LmNvbmNhdF9tYXAgfmY6RmxhZy5JbnRlcm5hbC5EZXByZWNhdGVkLmhlbHAgZmxhZ3NcbiAgICA7O1xuICBlbmRcblxuICBsZXQgZm9ybWF0dGVkX2ZsYWdzIHQgPVxuICAgIE1hcC5kYXRhIHQuZmxhZ3NcbiAgICB8PiBMaXN0Lm1hcCB+ZjpGbGFnLkludGVybmFsLmFsaWduXG4gICAgKCogdGhpcyBzb3J0IHB1dHMgb3B0aW9uYWwgZmxhZ3MgYWZ0ZXIgcmVxdWlyZWQgb25lcyAqKVxuICAgIHw+IExpc3Quc29ydCB+Y29tcGFyZTooZnVuIGEgYiAtPiBTdHJpbmcuY29tcGFyZSBhLm5hbWUgYi5uYW1lKVxuICAgIHw+IFNoYXBlLkZsYWdfaGVscF9kaXNwbGF5LnNvcnRcbiAgOztcblxuICBsZXQgc2hhcGUgdCA6IFNoYXBlLkJhc2VfaW5mby50ID1cbiAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICA7IHJlYWRtZSA9IE9wdGlvbi5tYXAgdC5yZWFkbWUgfmY6KGZ1biByZWFkbWUgLT4gcmVhZG1lICgpKVxuICAgIDsgYW5vbnMgPSBHcmFtbWFyIHQudXNhZ2VcbiAgICA7IGZsYWdzID0gZm9ybWF0dGVkX2ZsYWdzIHRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHBhdGhfa2V5ID0gRW52LmtleV9jcmVhdGUgXCJwYXRoXCJcbiAgbGV0IGFyZ3Nfa2V5ID0gRW52LmtleV9jcmVhdGUgXCJhcmdzXCJcbiAgbGV0IGhlbHBfa2V5ID0gRW52LmtleV9jcmVhdGUgXCJoZWxwXCJcblxuICBsZXQgaW5kZW50X2J5XzIgc3RyID1cbiAgICBTdHJpbmcuc3BsaXQgfm9uOidcXG4nIHN0clxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gbGluZSAtPiBcIiAgXCIgXiBsaW5lKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiXG4gIDs7XG5cbiAgbGV0IGdldF9mbGFnX2FuZF9hY3Rpb24gdCBhcmcgPVxuICAgIG1hdGNoIGxvb2t1cF9leHBhbmRfd2l0aF9hbGlhc2VzIHQuZmxhZ3MgYXJnIEZsYWcgd2l0aFxuICAgIHwgRXJyb3IgbXNnIC0+IGRpZSBcIiVzXCIgbXNnICgpXG4gICAgfCBPayAoZmxhZ19uYW1lLCBmbGFnKSAtPiBmbGFnX25hbWUsIGZsYWcuYWN0aW9uXG4gIDs7XG5cbiAgbGV0IHJ1bl9mbGFnIHQgZW52IGFyZyAoYXJncyA6IENtZGxpbmUudCkgPVxuICAgIGxldCBmbGFnLCBhY3Rpb24gPSBnZXRfZmxhZ19hbmRfYWN0aW9uIHQgYXJnIGluXG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IFByaW50X2luZm9fYW5kX3F1aXQgaW5mbyAtPlxuICAgICAgbGV0IGNvbXBsZXRpbmcgPSBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJncyBpblxuICAgICAgKCogSWYgd2UncmUgZG9pbmcgY29tcGxldGlvbiwgdmVyc2lvbi9oZWxwIGluZm8gYXJlbid0IHVzZWZ1bCBjb21wbGV0aW9uXG4gICAgICAgICByZXNwb25zZXMuICopXG4gICAgICBpZiBjb21wbGV0aW5nXG4gICAgICB0aGVuIGVudiwgYXJnc1xuICAgICAgZWxzZSAoXG4gICAgICAgIHByaW50X2VuZGxpbmUgKGluZm8gZW52KTtcbiAgICAgICAgZXhpdCAwKVxuICAgIHwgTm9fYXJnIGYgLT4gZiBlbnYsIGFyZ3NcbiAgICB8IEFyZyAoZiwgY29tcCkgLT5cbiAgICAgIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICB8IE5pbCAtPiBkaWUgXCJtaXNzaW5nIGFyZ3VtZW50IGZvciBmbGFnICVzXCIgZmxhZyAoKVxuICAgICAgIHwgQ29ucyAoYXJnLCByZXN0KSAtPlxuICAgICAgICAgbGV0IGVudiA9XG4gICAgICAgICAgIHRyeSBmIGVudiBhcmcgd2l0aFxuICAgICAgICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgXyBhcyBlIC0+XG4gICAgICAgICAgICAgaWYgQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIHJlc3QgdGhlbiBlbnYgZWxzZSByYWlzZSBlXG4gICAgICAgICBpblxuICAgICAgICAgZW52LCByZXN0XG4gICAgICAgfCBDb21wbGV0ZSBwYXJ0IC0+IE5vdGhpbmcudW5yZWFjaGFibGVfY29kZSAoQ29tcGxldGVyLnJ1bl9hbmRfZXhpdCBjb21wIGVudiB+cGFydCkpXG4gICAgfCBSZXN0IChmLCBjb21wKSAtPlxuICAgICAgbGV0IGFyZ19saXN0ID0gQ21kbGluZS50b19saXN0IGFyZ3MgaW5cbiAgICAgIGlmIENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzXG4gICAgICB0aGVuIE5vdGhpbmcudW5yZWFjaGFibGVfY29kZSAoQ29tcGxldGVyLnJ1bl9hbmRfZXhpdCBjb21wIGVudiB+cGFydDphcmdfbGlzdCk7XG4gICAgICBmIGVudiBhcmdfbGlzdCwgTmlsXG4gIDs7XG5cbiAgbGV0IHJlYyBydW5fY21kbGluZSB0IGVudiBwYXJzZXIgKGNtZGxpbmUgOiBDbWRsaW5lLnQpIH5mb3JfY29tcGxldGlvbiB+cGFyc2VfZmxhZ3MgPVxuICAgIG1hdGNoIGNtZGxpbmUgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICBMaXN0Lml0ZXIgKE1hcC5kYXRhIHQuZmxhZ3MpIH5mOihmdW4gZmxhZyAtPiBmbGFnLmNoZWNrX2F2YWlsYWJsZSBlbnYpO1xuICAgICAgQW5vbnMuUGFyc2VyLmZpbmFsX3ZhbHVlIHBhcnNlciBlbnZcbiAgICB8IENvbXBsZXRlIHBhcnQgLT5cbiAgICAgIGlmIHBhcnNlX2ZsYWdzICYmIFN0cmluZy5pc19wcmVmaXggcGFydCB+cHJlZml4OlwiLVwiXG4gICAgICB0aGVuIChcbiAgICAgICAgTGlzdC5pdGVyIChNYXAua2V5cyB0LmZsYWdzKSB+ZjooZnVuIG5hbWUgLT5cbiAgICAgICAgICBpZiBTdHJpbmcuaXNfcHJlZml4IG5hbWUgfnByZWZpeDpwYXJ0IHRoZW4gcHJpbnRfZW5kbGluZSBuYW1lKTtcbiAgICAgICAgZXhpdCAwKVxuICAgICAgZWxzZSBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGUgKEFub25zLlBhcnNlci5jb21wbGV0ZSBwYXJzZXIgZW52IH5wYXJ0KVxuICAgIHwgQ29ucyAoYXJnLCBhcmdzKSAtPlxuICAgICAgbGV0IGFyZywgYXJncywgYXJnX2lzX2ZsYWcgPVxuICAgICAgICBtYXRjaCBwYXJzZV9mbGFncyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gYXJnLCBhcmdzLCBmYWxzZVxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAobWF0Y2ggYXJnLCBhcmdzIHdpdGhcbiAgICAgICAgICAgKCogdGhlICctYW5vbicgZmxhZyBpcyBoZXJlIGFzIGFuIGVzY2FwZSBoYXRjaCBpbiBjYXNlIHlvdSBoYXZlIGFuXG4gICAgICAgICAgICAgIGFub255bW91cyBhcmd1bWVudCB0aGF0IHN0YXJ0cyB3aXRoIGEgaHlwaGVuLiAqKVxuICAgICAgICAgICB8IFwiLWFub25cIiwgQ29ucyAoYXJnLCBhcmdzKSAtPiBhcmcsIGFyZ3MsIGZhbHNlXG4gICAgICAgICAgICgqIHN1cHBvcnQgdGhlIGNvbW1vbiBVbml4IGNvbnZlbnRpb24gd2hlcmUgXCItXCIgbWVhbnMgc3RkaW4gKilcbiAgICAgICAgICAgfCBcIi1cIiwgXyAtPiBhcmcsIGFyZ3MsIGZhbHNlXG4gICAgICAgICAgIHwgXywgXyAtPiBhcmcsIGFyZ3MsIFN0cmluZy5pc19wcmVmaXggYXJnIH5wcmVmaXg6XCItXCIpXG4gICAgICBpblxuICAgICAgKG1hdGNoIGFyZ19pc19mbGFnIHdpdGhcbiAgICAgICB8IHRydWUgLT5cbiAgICAgICAgIGxldCBlbnYsIGFyZ3MgPSBydW5fZmxhZyB0IGVudiBhcmcgYXJncyBpblxuICAgICAgICAgcnVuX2NtZGxpbmUgdCBlbnYgcGFyc2VyIGFyZ3MgfnBhcnNlX2ZsYWdzIH5mb3JfY29tcGxldGlvblxuICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgIGxldCBwYXJzZV9mbGFnczEgPSBwYXJzZV9mbGFncyBpblxuICAgICAgICAgbGV0ICh7IHBhcnNlcjsgcGFyc2VfZmxhZ3MgPSBwYXJzZV9mbGFnczI7IHVwZGF0ZV9lbnYgfVxuICAgICAgICAgICAgICA6IF8gQW5vbnMuUGFyc2VyLkNvbnN1bWVfcmVzdWx0LnQpXG4gICAgICAgICAgID1cbiAgICAgICAgICAgQW5vbnMuUGFyc2VyLmNvbnN1bWUgcGFyc2VyIGFyZyB+Zm9yX2NvbXBsZXRpb25cbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgZW52ID0gdXBkYXRlX2VudiBlbnYgaW5cbiAgICAgICAgIGxldCBwYXJzZV9mbGFncyA9IHBhcnNlX2ZsYWdzMSAmJiBwYXJzZV9mbGFnczIgaW5cbiAgICAgICAgIHJ1bl9jbWRsaW5lIHQgZW52IHBhcnNlciB+cGFyc2VfZmxhZ3MgYXJncyB+Zm9yX2NvbXBsZXRpb24pXG4gIDs7XG5cbiAgbGV0IHJ1bl9leG4gZXhuIH5mb3JfY29tcGxldGlvbiB+cGF0aCB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvciA9XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgXyB3aGVuIGZvcl9jb21wbGV0aW9uIC0+IGV4aXQgMFxuICAgIHwgRXhpdF9jYWxsZWQgeyBzdGF0dXMgfSAtPiBleGl0IHN0YXR1c1xuICAgIHwgXyAtPlxuICAgICAgbGV0IGV4bl9zdHIgPVxuICAgICAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnIC0+IG1zZ1xuICAgICAgICB8IF8gLT4gU2V4cC50b19zdHJpbmdfaHVtIFslc2V4cCAoZXhuIDogZXhuKV1cbiAgICAgIGluXG4gICAgICBsZXQgdmVyYm9zZSA9IE9wdGlvbi52YWx1ZSB2ZXJib3NlX29uX3BhcnNlX2Vycm9yIH5kZWZhdWx0OnRydWUgaW5cbiAgICAgIGxldCBlcnJvcl9tc2cgPVxuICAgICAgICBpZiB2ZXJib3NlXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgICAgICB+c2VwOlwiXFxuXFxuXCJcbiAgICAgICAgICAgIFsgXCJFcnJvciBwYXJzaW5nIGNvbW1hbmQgbGluZTpcIlxuICAgICAgICAgICAgOyBpbmRlbnRfYnlfMiBleG5fc3RyXG4gICAgICAgICAgICA7IFwiRm9yIHVzYWdlIGluZm9ybWF0aW9uLCBydW5cIlxuICAgICAgICAgICAgOyBcIiAgXCIgXiBQYXRoLnRvX3N0cmluZyBwYXRoIF4gXCIgLWhlbHBcXG5cIlxuICAgICAgICAgICAgXVxuICAgICAgICBlbHNlIGV4bl9zdHJcbiAgICAgIGluXG4gICAgICBwcmVycl9lbmRsaW5lIGVycm9yX21zZztcbiAgICAgIGV4aXQgMVxuICA7O1xuXG4gIGxldCBydW5cbiAgICAgICAgdFxuICAgICAgICBlbnZcbiAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICB+cGF0aFxuICAgICAgICB+YXJnc1xuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICB+aGVscF90ZXh0XG4gICAgICAgIH5vbl9mYWlsdXJlXG4gICAgPVxuICAgIGxldCBmb3JfY29tcGxldGlvbiA9IENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIGluXG4gICAgbGV0IGVudiA9XG4gICAgICBlbnZcbiAgICAgIHw+IEVudi5zZXQgfmtleTpwYXRoX2tleSB+ZGF0YTpwYXRoXG4gICAgICB8PiBFbnYuc2V0IH5rZXk6YXJnc19rZXkgfmRhdGE6KENtZGxpbmUudG9fbGlzdCBhcmdzKVxuICAgICAgfD4gRW52LnNldCB+a2V5OmhlbHBfa2V5IH5kYXRhOmhlbHBfdGV4dFxuICAgIGluXG4gICAgbWF0Y2hcbiAgICAgIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgIGxldCBtYWluID1cbiAgICAgICAgICBydW5fY21kbGluZSB0IGVudiAodC5hbm9ucyAoKSkgfmZvcl9jb21wbGV0aW9uIH5wYXJzZV9mbGFnczp0cnVlIGFyZ3NcbiAgICAgICAgaW5cbiAgICAgICAgbWFpbiBgUGFyc2VfYXJncylcbiAgICB3aXRoXG4gICAgfCBPayB0aHVuayAtPlxuICAgICAgd2hlbl9wYXJzaW5nX3N1Y2NlZWRzICgpO1xuICAgICAgdGh1bmsgYFJ1bl9tYWluXG4gICAgfCBFcnJvciBleG4gLT4gb25fZmFpbHVyZSBleG4gfmZvcl9jb21wbGV0aW9uIH5wYXRoIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gIDs7XG5cbiAgbW9kdWxlIFBhcmFtID0gc3RydWN0XG4gICAgdHlwZSArJ2EgdCA9XG4gICAgICB7IGYgOiB1bml0IC0+ICh1bml0IC0+ICdhIFBhcnNpbmdfb3V0Y29tZS50KSBBbm9ucy5QYXJzZXIuQmFzaWMudFxuICAgICAgOyB1c2FnZSA6IHVuaXQgLT4gQW5vbnMuR3JhbW1hci50XG4gICAgICA7IGZsYWdzIDogdW5pdCAtPiBGbGFnLkludGVybmFsLnQgbGlzdFxuICAgICAgfVxuXG4gICAgb3BlbiBBbm9ucy5QYXJzZXIuQmFzaWMuRm9yX29wZW5pbmdcblxuICAgIGxldCB3cmFwX3ZhbHVlIHYgKCkgPSBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyB2XG5cbiAgICBsZXQgYXBwbHkgZiB4ID1cbiAgICAgIHsgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHJldHVybiAoZnVuIGYgeCAoKSAtPlxuICAgICAgICAgICAgICAgKCogb3JkZXIgb2YgZXZhbHVhdGlvbiBoZXJlIGFmZmVjdHMgaW4gd2hhdCBvcmRlciB0aGUgdXNlcnMnIGNhbGxiYWNrc1xuICAgICAgICAgICAgICAgICAgYXJlIGV2YWx1YXRlZCwgc28gaXQncyBpbXBvcnRhbnQgdG8gY2FsbCBbZl0gYmVmb3JlIFt4XSAqKVxuICAgICAgICAgICAgICAgbGV0IGZfb3V0Y29tZSA9IGYgKCkgaW5cbiAgICAgICAgICAgICAgIGxldCB4X291dGNvbWUgPSB4ICgpIGluXG4gICAgICAgICAgICAgICBQYXJzaW5nX291dGNvbWUuYXBwbHkgZl9vdXRjb21lIHhfb3V0Y29tZSlcbiAgICAgICAgICAgICA8Kj4gZi5mICgpXG4gICAgICAgICAgICAgPCo+IHguZiAoKSlcbiAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IHguZmxhZ3MgKCkgQCBmLmZsYWdzICgpKVxuICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci5jb25jYXQgWyBmLnVzYWdlICgpOyB4LnVzYWdlICgpIF0pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBlbXB0eV9zcGVjIDogJ20uICgnbSAtPiAnbSkgdCA9XG4gICAgICB7IGYgPSAoZnVuICgpIC0+IHJldHVybiAoZnVuICgpIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIEZuLmlkKSlcbiAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgbWFwX291dGNvbWUgeCB+ZiA9XG4gICAgICB7IGYgPVxuICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICB4LmYgKClcbiAgICAgICAgICAgICA+PnwgZnVuIHggKCkgLT5cbiAgICAgICAgICAgICBsZXQgeF9vdXRjb21lID0geCAoKSBpblxuICAgICAgICAgICAgIGYgeF9vdXRjb21lKVxuICAgICAgOyBmbGFncyA9IHguZmxhZ3NcbiAgICAgIDsgdXNhZ2UgPSB4LnVzYWdlXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBtYXAgeCB+ZiA9IG1hcF9vdXRjb21lIHggfmY6KFBhcnNpbmdfb3V0Y29tZS5tYXAgfmYpXG5cbiAgICBsZXQgbG9va3VwIGtleSA9XG4gICAgICB7IGYgPVxuICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICBBbm9ucy5QYXJzZXIuQmFzaWMuZnJvbV9lbnYgKGZ1biBlbnYgLT4gRW52LmZpbmRfZXhuIGVudiBrZXkpID4+fCB3cmFwX3ZhbHVlKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBwYXRoIDogUGF0aC50IHQgPSBsb29rdXAgcGF0aF9rZXlcbiAgICBsZXQgYXJncyA6IHN0cmluZyBsaXN0IHQgPSBsb29rdXAgYXJnc19rZXlcbiAgICBsZXQgaGVscCA6IHN0cmluZyBMYXp5LnQgdCA9IGxvb2t1cCBoZWxwX2tleVxuXG4gICAgKCogVGhpcyBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSwgZm9yIHRoZSBoZWxwIGNvbW1hbmQuICopXG4gICAgbGV0IGVudiA9XG4gICAgICB7IGYgPSAoZnVuICgpIC0+IEFub25zLlBhcnNlci5CYXNpYy5mcm9tX2VudiAoZnVuIGVudiAtPiBlbnYpID4+fCB3cmFwX3ZhbHVlKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBtb2R1bGUgQXJnX3R5cGUgPSBBcmdfdHlwZVxuICAgICAgaW5jbHVkZSBBcmdfdHlwZS5FeHBvcnRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBvcGVuIEFub25zXG5cbiAgICAgIGxldCAoICU6ICkgPSAoICU6IClcbiAgICAgIGxldCBtYXBfYW5vbnMgPSBtYXBfYW5vbnNcbiAgICAgIGxldCBtYXliZSA9IG1heWJlXG4gICAgICBsZXQgbWF5YmVfd2l0aF9kZWZhdWx0ID0gbWF5YmVfd2l0aF9kZWZhdWx0XG4gICAgICBsZXQgc2VxdWVuY2UgPSBzZXF1ZW5jZVxuICAgICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXJcbiAgICAgIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0XG4gICAgICBsZXQgdDIgPSB0MlxuICAgICAgbGV0IHQzID0gdDNcbiAgICAgIGxldCB0NCA9IHQ0XG5cbiAgICAgIGxldCBhbm9uIHNwZWMgPVxuICAgICAgICBBbm9ucy5HcmFtbWFyLmludmFyaWFudCBzcGVjLmdyYW1tYXI7XG4gICAgICAgIHsgZiA9IChmdW4gKCkgLT4gc3BlYy5wID4+fCBmdW4gb3V0Y29tZSAoKSAtPiBvdXRjb21lKVxuICAgICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gc3BlYy5ncmFtbWFyKVxuICAgICAgICB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGVzY2FwZV9hbm9uIH5maW5hbF9hbm9uID1cbiAgICAgIEFub25zLmVzY2FwZSAodDIgZmluYWxfYW5vbiAoc2VxdWVuY2UgKFwiQVJHXCIgJTogc3RyaW5nKSkpIHw+IGFub25cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG9wZW4gRmxhZ1xuXG4gICAgICBsZXQgbWFwX2ZsYWcgPSBtYXBfZmxhZ1xuICAgICAgbGV0IGVzY2FwZSA9IGVzY2FwZVxuICAgICAgbGV0IGVzY2FwZV93aXRoX2F1dG9jb21wbGV0ZSA9IGVzY2FwZV93aXRoX2F1dG9jb21wbGV0ZVxuICAgICAgbGV0IGxpc3RlZCA9IGxpc3RlZFxuICAgICAgbGV0IG9uZV9vcl9tb3JlX2FzX3BhaXIgPSBvbmVfb3JfbW9yZV9hc19wYWlyXG4gICAgICBsZXQgb25lX29yX21vcmVfYXNfbGlzdCA9IG9uZV9vcl9tb3JlX2FzX2xpc3RcbiAgICAgIGxldCBub19hcmcgPSBub19hcmdcbiAgICAgIGxldCBub19hcmdfcmVxdWlyZWQgPSBub19hcmdfcmVxdWlyZWRcbiAgICAgIGxldCBub19hcmdfcmVnaXN0ZXIgPSBub19hcmdfcmVnaXN0ZXJcbiAgICAgIGxldCBub19hcmdfYWJvcnQgPSBub19hcmdfYWJvcnRcbiAgICAgIGxldCBub19hcmdfc29tZSA9IG5vX2FyZ19zb21lXG4gICAgICBsZXQgb3B0aW9uYWwgPSBvcHRpb25hbFxuICAgICAgbGV0IG9wdGlvbmFsX3dpdGhfZGVmYXVsdCA9IG9wdGlvbmFsX3dpdGhfZGVmYXVsdFxuICAgICAgbGV0IHJlcXVpcmVkID0gcmVxdWlyZWRcblxuICAgICAgbGV0IGZsYWdfaW50ZXJuYWxcbiAgICAgICAgICAgID8oYWxpYXNlcyA9IFtdKVxuICAgICAgICAgICAgP2Z1bGxfZmxhZ19yZXF1aXJlZFxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgbW9kZVxuICAgICAgICAgICAgfmRvY1xuICAgICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwXG4gICAgICAgID1cbiAgICAgICAgbGV0IG5vcm1hbGl6ZSBmbGFnID0gbm9ybWFsaXplIEtleV90eXBlLkZsYWcgZmxhZyBpblxuICAgICAgICBsZXQgbmFtZSA9IG5vcm1hbGl6ZSBuYW1lIGluXG4gICAgICAgIGxldCBhbGlhc2VzID0gTGlzdC5tYXAgfmY6bm9ybWFsaXplIGFsaWFzZXMgaW5cbiAgICAgICAgbGV0IHsgcmVhZDsgYWN0aW9uOyBudW1fb2NjdXJyZW5jZXM7IGV4dHJhX2RvYyB9ID0gbW9kZSBuYW1lIGluXG4gICAgICAgIGxldCBjaGVja19hdmFpbGFibGUgPVxuICAgICAgICAgIG1hdGNoIG51bV9vY2N1cnJlbmNlcy5hdF9sZWFzdF9vbmNlIHdpdGhcbiAgICAgICAgICB8IGZhbHNlIC0+IChpZ25vcmUgOiBVbml2X21hcC50IC0+IHVuaXQpXG4gICAgICAgICAgfCB0cnVlIC0+IGZ1biBlbnYgLT4gaWdub3JlIChyZWFkIGVudiA6IF8pXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuYW1lX21hdGNoaW5nID1cbiAgICAgICAgICBpZiBPcHRpb24uaXNfc29tZSBmdWxsX2ZsYWdfcmVxdWlyZWQgdGhlbiBgRnVsbF9tYXRjaF9yZXF1aXJlZCBlbHNlIGBQcmVmaXhcbiAgICAgICAgaW5cbiAgICAgICAgeyBmID1cbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgIEFub25zLlBhcnNlci5CYXNpYy5mcm9tX2VudiAoZnVuIGVudiAtPiByZWFkIGVudikgPj58IGZ1biB2ICgpIC0+IHYpXG4gICAgICAgIDsgZmxhZ3MgPVxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgWyB7IG5hbWVcbiAgICAgICAgICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgICAgICAgICAgOyBkb2MgPVxuICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGZvcmNlIGV4dHJhX2RvYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGV4dHJhX2RvYyAtPiBbJXN0cmluZyBcIiV7ZG9jfSAle2V4dHJhX2RvY31cIl1cbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZG9jKVxuICAgICAgICAgICAgICAgICA7IGFjdGlvblxuICAgICAgICAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlc1xuICAgICAgICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZVxuICAgICAgICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmdcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgXSlcbiAgICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgZmxhZyA9IGZsYWdfaW50ZXJuYWwgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOltdXG5cbiAgICAgIGxldCBmbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2NcbiAgICAgICAgICAgID9hbGlhc2VzXG4gICAgICAgICAgICA/ZnVsbF9mbGFnX3JlcXVpcmVkXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICBhcmdfdHlwZVxuICAgICAgICAgICAgc2V4cF9vZl9kZWZhdWx0XG4gICAgICAgICAgICB+ZGVmYXVsdFxuICAgICAgICAgICAgfmRvY1xuICAgICAgICA9XG4gICAgICAgIGxldCBkb2MgPVxuICAgICAgICAgIG1hdGNoIHNleHBfb2ZfZGVmYXVsdCBkZWZhdWx0IHdpdGhcbiAgICAgICAgICB8IFNleHAuQXRvbSBcIl9cIiAtPiBkb2NcbiAgICAgICAgICB8IGRlZmF1bHRfc2V4cCAtPiBzcHJpbnRmICFcIiVzIChkZWZhdWx0OiAle1NleHB9KVwiIGRvYyBkZWZhdWx0X3NleHBcbiAgICAgICAgaW5cbiAgICAgICAgZmxhZ1xuICAgICAgICAgID9hbGlhc2VzXG4gICAgICAgICAgP2Z1bGxfZmxhZ19yZXF1aXJlZFxuICAgICAgICAgIG5hbWVcbiAgICAgICAgICAob3B0aW9uYWxfd2l0aF9kZWZhdWx0IGRlZmF1bHQgYXJnX3R5cGUpXG4gICAgICAgICAgfmRvY1xuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCByZXR1cm4gdiA9XG4gICAgICB7IGYgPSAoZnVuICgpIC0+IHJldHVybiAoZnVuICgpIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIHYpKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCByZWNvdmVyX2Zyb21fbWlzc2luZ19yZXF1aXJlZF9mbGFncyB0ID1cbiAgICAgIHsgdCB3aXRoXG4gICAgICAgIGYgPVxuICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICB0LmYgKClcbiAgICAgICAgICAgICA+PnwgZnVuIGYgKCkgLT5cbiAgICAgICAgICAgICBsZXQgb3V0Y29tZSA9IGYgKCkgaW5cbiAgICAgICAgICAgICBQYXJzaW5nX291dGNvbWUucmVjb3Zlcl9mcm9tX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3Mgb3V0Y29tZSlcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIHQgPVxuICAgICAgeyB0IHdpdGhcbiAgICAgICAgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHQuZiAoKVxuICAgICAgICAgICAgID4+fCBmdW4gZiAoKSAtPlxuICAgICAgICAgICAgIGxldCBvdXRjb21lID0gZiAoKSBpblxuICAgICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5pbnRyb2R1Y2VfbWlzc2luZ19yZXF1aXJlZF9mbGFncyBvdXRjb21lKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgb3B0aW9uYWxfdG9fcmVxdWlyZWQgdCA9XG4gICAgICB7IHQgd2l0aFxuICAgICAgICBmID1cbiAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgdC5mICgpXG4gICAgICAgICAgICAgPj58IGZ1biBmICgpIC0+XG4gICAgICAgICAgICAgbGV0IG91dGNvbWUgPSBmICgpIGluXG4gICAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLmludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAoUGFyc2luZ19vdXRjb21lLm1hcCBvdXRjb21lIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgKEVycm9yLm9mX3N0cmluZyBcIltvcHRpb25hbF90b19yZXF1aXJlZF0gZ290IGEgW05vbmVdIHJlc3VsdFwiKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+IE9rIHYpKSlcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICAgIGxldCBhcHBseSA9IGFwcGx5XG4gICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgZW5kKVxuXG4gICAgbGV0IGFyZ19uYW1lcyB0ID1cbiAgICAgIGxldCBmbGFncyA9IEZsYWcuSW50ZXJuYWwuY3JlYXRlICh0LmZsYWdzICgpKSBpblxuICAgICAgbGV0IGZsYWdfbmFtZXMgPSBNYXAua2V5cyBmbGFncyBpblxuICAgICAgbGV0IGFub25fbmFtZXMgPSBBbm9ucy5HcmFtbWFyLm5hbWVzICh0LnVzYWdlICgpKSBpblxuICAgICAgTGlzdC5jb25jYXQgWyBmbGFnX25hbWVzOyBhbm9uX25hbWVzIF1cbiAgICA7O1xuXG4gICAgbGV0IHJlcXVpcmVkX2FyZ19uYW1lcyB0ID1cbiAgICAgIGxldCBmbGFncyA9IEZsYWcuSW50ZXJuYWwuY3JlYXRlICh0LmZsYWdzICgpKSBpblxuICAgICAgTGlzdC5maWx0ZXJfbWFwIChNYXAudG9fYWxpc3QgZmxhZ3MpIH5mOihmdW4gKG5hbWUsIGZsYWcpIC0+XG4gICAgICAgIGlmIGZsYWcubnVtX29jY3VycmVuY2VzLmF0X2xlYXN0X29uY2UgdGhlbiBTb21lIG5hbWUgZWxzZSBOb25lKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgQ2hvb3NlX29uZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSBwYXJhbSA9ICdhIHRcblxuICAgICAgbW9kdWxlIENob2ljZV9uYW1lIDogc2lnXG4gICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICAgICAgdmFsIGxpc3RfdG9fc3RyaW5nIDogdCBsaXN0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgY3JlYXRlX2V4biA6ICdhIHBhcmFtIC0+IHRcbiAgICAgICAgdmFsIGVudW1lcmF0ZV9yZXF1aXJlZF9mbGFncyA6IHQgLT4gZXhjZXB0OnN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gICAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgeyBhbGxfYXJncyA6IHN0cmluZyBsaXN0XG4gICAgICAgICAgICA7IHJlcXVpcmVkX2FyZ3MgOiBzdHJpbmcgbGlzdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICBsZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKHQuYWxsX2FyZ3MgOiBzdHJpbmcgbGlzdCldXG4gICAgICAgIGVuZFxuXG4gICAgICAgIGluY2x1ZGUgVFxuICAgICAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuICAgICAgICBsZXQgY3JlYXRlX2V4biBwYXJhbSA9XG4gICAgICAgICAgbGV0IHJlcXVpcmVkX2FyZ3MgPSByZXF1aXJlZF9hcmdfbmFtZXMgcGFyYW0gaW5cbiAgICAgICAgICBsZXQgbmFtZXMgPSBhcmdfbmFtZXMgcGFyYW0gaW5cbiAgICAgICAgICBsZXQgbmFtZXNfd2l0aF9jb21tYXMgPSBMaXN0LmZpbHRlciBuYW1lcyB+ZjooZnVuIHMgLT4gU3RyaW5nLmNvbnRhaW5zIHMgJywnKSBpblxuICAgICAgICAgIGlmIG5vdCAoTGlzdC5pc19lbXB0eSBuYW1lc193aXRoX2NvbW1hcylcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBFcnJvci5jcmVhdGVcbiAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICBcIkZvciBzaW1wbGljaXR5LCBbQ29tbWFuZC5TcGVjLmNob29zZV9vbmVdIGRvZXMgbm90IHN1cHBvcnQgbmFtZXMgd2l0aCBcXFxuICAgICAgICAgICAgICAgY29tbWFzLlwiXG4gICAgICAgICAgICAgIG5hbWVzX3dpdGhfY29tbWFzXG4gICAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nIGxpc3RdXG4gICAgICAgICAgICB8PiBFcnJvci5yYWlzZTtcbiAgICAgICAgICBtYXRjaCBuYW1lcyB3aXRoXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgICBbJW1lc3NhZ2UgXCJbY2hvb3NlX29uZV0gZXhwZWN0cyBjaG9pY2VzIHRvIHJlYWQgY29tbWFuZC1saW5lIGFyZ3VtZW50cy5cIl1cbiAgICAgICAgICB8IF8gOjogXyAtPiB7IGFsbF9hcmdzID0gbmFtZXM7IHJlcXVpcmVkX2FyZ3MgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgICAgbWF0Y2ggdC5yZXF1aXJlZF9hcmdzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiB0LmFsbF9hcmdzXG4gICAgICAgICAgfCBfIDo6IF8gLT4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIHQucmVxdWlyZWRfYXJnc1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBlbnVtZXJhdGVfcmVxdWlyZWRfZmxhZ3MgdCB+ZXhjZXB0ID1cbiAgICAgICAgICBtYXRjaCBMaXN0LmZpbHRlciB0LnJlcXVpcmVkX2FyZ3MgfmY6KGZ1biB4IC0+IG5vdCAoU3RyaW5nLmVxdWFsIGV4Y2VwdCB4KSkgd2l0aFxuICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgIHwgXyA6OiBfIGFzIGwgLT4gU29tZSAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIGwpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGxpc3RfdG9fc3RyaW5nIHRzID0gTGlzdC5tYXAgdHMgfmY6dG9fc3RyaW5nIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcbiAgXCJcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgSWZfbm90aGluZ19jaG9zZW4gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoXywgXykgdCA9XG4gICAgICAgICAgfCBEZWZhdWx0X3RvIDogJ2EgLT4gKCdhLCAnYSkgdFxuICAgICAgICAgIHwgUmFpc2UgOiAoJ2EsICdhKSB0XG4gICAgICAgICAgfCBSZXR1cm5fbm9uZSA6ICgnYSwgJ2Egb3B0aW9uKSB0XG4gICAgICBlbmRcblxuICAgICAgbGV0IGNob29zZV9vbmVfbm9uX29wdGlvbmFsXG4gICAgICAgICAgICAodHlwZSBhIGIpXG4gICAgICAgICAgICA/KG5ld19iZWhhdmlvciA9IHRydWUpXG4gICAgICAgICAgICAodHMgOiBhIHBhcmFtIGxpc3QpXG4gICAgICAgICAgICB+KGlmX25vdGhpbmdfY2hvc2VuIDogKGEsIGIpIElmX25vdGhpbmdfY2hvc2VuLnQpXG4gICAgICAgID1cbiAgICAgICAgbGV0IGZpeF9mbGFnIHQgPVxuICAgICAgICAgIGlmIG5ld19iZWhhdmlvclxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5hbWVfb2ZfdGhlX2dyb3VwID0gQ2hvaWNlX25hbWUuY3JlYXRlX2V4biB0IGluXG4gICAgICAgICAgICBsZXQgZml4X251bV9vY2N1cnJlbmNlcyBmbGFnID1cbiAgICAgICAgICAgICAgeyBmbGFnIHdpdGhcbiAgICAgICAgICAgICAgICBGbGFnLkludGVybmFsLm51bV9vY2N1cnJlbmNlcyA9XG4gICAgICAgICAgICAgICAgICB7IGZsYWcuRmxhZy5JbnRlcm5hbC5udW1fb2NjdXJyZW5jZXMgd2l0aCBhdF9sZWFzdF9vbmNlID0gZmFsc2UgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBhbmQgZml4X2RvYyBmbGFnID1cbiAgICAgICAgICAgICAgeyBmbGFnIHdpdGhcbiAgICAgICAgICAgICAgICBGbGFnLkludGVybmFsLmRvYyA9XG4gICAgICAgICAgICAgICAgICBzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIFwiJXMlc1wiXG4gICAgICAgICAgICAgICAgICAgIGZsYWcuRmxhZy5JbnRlcm5hbC5kb2NcbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgIENob2ljZV9uYW1lLmVudW1lcmF0ZV9yZXF1aXJlZF9mbGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNlcHQ6ZmxhZy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV9vZl90aGVfZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZ3JvdXAgLT4gc3ByaW50ZiBcIiBbcmVxdWlyZXM6IFxcXCIlc1xcXCJdXCIgZ3JvdXApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFuZCBtYWtlX2Fub25zX29wdGlvbmFsIChhbm9uIDogQW5vbnMuR3JhbW1hci50KSA9XG4gICAgICAgICAgICAgIEFub25zLkdyYW1tYXIubWF5YmVfaWRlbXBvdGVudCBhbm9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyB0IHdpdGhcbiAgICAgICAgICAgICAgdXNhZ2UgPSAoZnVuICgpIC0+IG1ha2VfYW5vbnNfb3B0aW9uYWwgKHQudXNhZ2UgKCkpKVxuICAgICAgICAgICAgOyBmbGFncyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgIExpc3QubWFwICh0LmZsYWdzICgpKSB+ZjooZnVuIGZsYWdfaW50ZXJuYWwgLT5cbiAgICAgICAgICAgICAgICAgICAgIGZsYWdfaW50ZXJuYWwgfD4gZml4X251bV9vY2N1cnJlbmNlcyB8PiBmaXhfZG9jKSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgZWxzZSB0XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgTGlzdC5tYXAgdHMgfmY6KGZ1biB0IC0+IENob2ljZV9uYW1lLmNyZWF0ZV9leG4gdCwgZml4X2ZsYWcgdClcbiAgICAgICAgICB8PiBNYXAub2ZfYWxpc3QgKG1vZHVsZSBDaG9pY2VfbmFtZSlcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGBEdXBsaWNhdGVfa2V5IG5hbWUgLT5cbiAgICAgICAgICBFcnJvci5jcmVhdGVcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwiW0NvbW1hbmQuU3BlYy5jaG9vc2Vfb25lXSBjYWxsZWQgd2l0aCBkdXBsaWNhdGUgbmFtZVwiXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICBbJXNleHBfb2Y6IENob2ljZV9uYW1lLnRdXG4gICAgICAgICAgfD4gRXJyb3IucmFpc2VcbiAgICAgICAgfCBgT2sgdHMgLT5cbiAgICAgICAgICBNYXAuZm9sZCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjooZnVuIH5rZXk6bmFtZSB+ZGF0YTp0IGFjYyAtPlxuICAgICAgICAgICAgbWFwMlxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgKHJlY292ZXJfZnJvbV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIHQpXG4gICAgICAgICAgICAgIH5mOihmdW4gYWNjIHsgcmVzdWx0ID0gdmFsdWU7IGhhc19hcmcgfSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGhhc19hcmcgd2l0aFxuICAgICAgICAgICAgICAgIHwgZmFsc2UgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCB0cnVlIC0+IChuYW1lLCB2YWx1ZSkgOjogYWNjKSlcbiAgICAgICAgICB8PiBtYXAgfmY6KGZ1biB2YWx1ZV9saXN0IC0+XG4gICAgICAgICAgICBsZXQgYXJnX2NvdW50ZXIgPSBMaXN0Lmxlbmd0aCB2YWx1ZV9saXN0IGluXG4gICAgICAgICAgICBsZXQgbWlzc2luZ19mbGFnX2Vycm9yIGZtdCA9XG4gICAgICAgICAgICAgIGtzcHJpbnRmXG4gICAgICAgICAgICAgICAgKGZ1biBtc2cgKCkgLT4gRXJyb3IgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIChFcnJvci5vZl9zdHJpbmcgbXNnKSkpXG4gICAgICAgICAgICAgICAgZm10XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG1vcmVfdGhhbl9vbmVfZXJyb3IgcGFzc2VkID1cbiAgICAgICAgICAgICAgZGllXG4gICAgICAgICAgICAgICAgIVwiQ2Fubm90IHBhc3MgbW9yZSB0aGFuIG9uZSBvZiB0aGVzZTogXFxuXFxcbiAgICAgICAgICAgICAgICAgXFwgICV7Q2hvaWNlX25hbWUubGlzdF90b19zdHJpbmd9XCJcbiAgICAgICAgICAgICAgICAoTGlzdC5tYXAgcGFzc2VkIH5mOmZzdClcbiAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgYW5kIHN1Y2Nlc3NfbGlzdCwgZXJyb3JfbGlzdCA9XG4gICAgICAgICAgICAgIExpc3QucGFydGl0aW9uX21hcCB2YWx1ZV9saXN0IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgbmFtZSwgT2sgdmFsdWUgLT4gRmlyc3QgKG5hbWUsIHZhbHVlKVxuICAgICAgICAgICAgICAgIHwgbmFtZSwgRXJyb3IgZXJyIC0+IFNlY29uZCAobmFtZSwgZXJyKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXRjaCBzdWNjZXNzX2xpc3Qgd2l0aFxuICAgICAgICAgICAgfCBfIDo6IF8gOjogXyBhcyBwYXNzZWQgLT4gbW9yZV90aGFuX29uZV9lcnJvciBwYXNzZWRcbiAgICAgICAgICAgIHwgWyAoXywgKHZhbHVlIDogYSkpIF0gLT5cbiAgICAgICAgICAgICAgaWYgYXJnX2NvdW50ZXIgPiAxXG4gICAgICAgICAgICAgIHRoZW4gbW9yZV90aGFuX29uZV9lcnJvciB2YWx1ZV9saXN0XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBPa1xuICAgICAgICAgICAgICAgICAgKG1hdGNoIGlmX25vdGhpbmdfY2hvc2VuIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IERlZmF1bHRfdG8gKF8gOiBhKSAtPiAodmFsdWUgOiBiKVxuICAgICAgICAgICAgICAgICAgIHwgUmFpc2UgLT4gKHZhbHVlIDogYilcbiAgICAgICAgICAgICAgICAgICB8IFJldHVybl9ub25lIC0+IChTb21lIHZhbHVlIDogYikpXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBlcnJvcl9saXN0IHdpdGhcbiAgICAgICAgICAgICAgIHwgWyAobmFtZSwgYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgZXJyKSBdIC0+XG4gICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAgICAgICAgKEVycm9yLm9mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJOb3QgYWxsIGZsYWdzIGluIGdyb3VwIFxcXCIlc1xcXCIgYXJlIGdpdmVuOiAlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKENob2ljZV9uYW1lLnRvX3N0cmluZyBuYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFcnJvci50b19zdHJpbmdfaHVtIGVycikpKSlcbiAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggaWZfbm90aGluZ19jaG9zZW4gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBEZWZhdWx0X3RvIHZhbHVlIC0+IE9rIHZhbHVlXG4gICAgICAgICAgICAgICAgICB8IFJldHVybl9ub25lIC0+IE9rIE5vbmVcbiAgICAgICAgICAgICAgICAgIHwgUmFpc2UgLT5cbiAgICAgICAgICAgICAgICAgICAgbWlzc2luZ19mbGFnX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgIVwiTXVzdCBwYXNzIG9uZSBvZiB0aGVzZTpcXG4gICV7Q2hvaWNlX25hbWUubGlzdF90b19zdHJpbmd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAoTWFwLmtleXMgdHMpXG4gICAgICAgICAgICAgICAgICAgICAgKCkpKSlcbiAgICAgICAgICB8PiBpbnRyb2R1Y2VfbWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgICAgOztcblxuICAgICAgbGV0IGNob29zZV9vbmVcbiAgICAgICAgICAgICh0eXBlIGEgYilcbiAgICAgICAgICAgICh0cyA6IGEgb3B0aW9uIHBhcmFtIGxpc3QpXG4gICAgICAgICAgICB+KGlmX25vdGhpbmdfY2hvc2VuIDogKGEsIGIpIElmX25vdGhpbmdfY2hvc2VuLnQpXG4gICAgICAgID1cbiAgICAgICAgY2hvb3NlX29uZV9ub25fb3B0aW9uYWxcbiAgICAgICAgICB+bmV3X2JlaGF2aW9yOmZhbHNlXG4gICAgICAgICAgfmlmX25vdGhpbmdfY2hvc2VuXG4gICAgICAgICAgKExpc3QubWFwIHRzIH5mOihmdW4gdCAtPlxuICAgICAgICAgICAgIG1hcF9vdXRjb21lIHQgfmY6KGZ1biB7IFBhcnNpbmdfb3V0Y29tZS5yZXN1bHQ7IGhhc19hcmcgfSAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgICAgIHwgT2sgKFNvbWUgdmFsdWUpIC0+IHsgUGFyc2luZ19vdXRjb21lLnJlc3VsdCA9IE9rIHZhbHVlOyBoYXNfYXJnID0gdHJ1ZSB9XG4gICAgICAgICAgICAgICB8IE9rIE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgeyBoYXNfYXJnID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgOyByZXN1bHQgPVxuICAgICAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIChFcnJvci5vZl9zdHJpbmcgXCJtaXNzaW5nIHJlcXVpcmVkIGZsYWdcIikpXG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIHwgRXJyb3IgXyBhcyByZXN1bHQgLT4geyBoYXNfYXJnOyByZXN1bHQgfSkpKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IENob29zZV9vbmUuSWZfbm90aGluZ19jaG9zZW5cblxuICAgIGxldCBjaG9vc2Vfb25lID0gQ2hvb3NlX29uZS5jaG9vc2Vfb25lXG5cbiAgICBsZXQgY2hvb3NlX29uZV9ub25fb3B0aW9uYWwgbHN0IH5pZl9ub3RoaW5nX2Nob3NlbiA9XG4gICAgICBDaG9vc2Vfb25lLmNob29zZV9vbmVfbm9uX29wdGlvbmFsIGxzdCB+aWZfbm90aGluZ19jaG9zZW5cbiAgICA7O1xuXG4gICAgbGV0IGFuZF9hcmdfbmFtZXMgdCA9IG1hcCB0IH5mOihmdW4gdmFsdWUgLT4gdmFsdWUsIGFyZ19uYW1lcyB0KVxuXG4gICAgbGV0IGFuZF9hcmdfbmFtZSB0ID1cbiAgICAgIG1hdGNoIGFyZ19uYW1lcyB0IHdpdGhcbiAgICAgIHwgWyBuYW1lIF0gLT4gbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPiB2YWx1ZSwgbmFtZSlcbiAgICAgIHwgbmFtZXMgLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJbYW5kX2FyZ19uYW1lXSBleHBlY3RzIGV4YWN0bHkgb25lIG5hbWUsIGdvdFwiIH5fOihuYW1lcyA6IHN0cmluZyBsaXN0KV1cbiAgICA7O1xuXG4gICAgbGV0IHBhcnNlIHsgZmxhZ3M7IHVzYWdlID0gXzsgZiB9IGFyZ3MgPVxuICAgICAgbGV0IGNtZGxpbmUgPSBDbWRsaW5lLm9mX2xpc3QgYXJncyBpblxuICAgICAgbGV0IHJlc3VsdCA9IHJlZiBOb25lIGluXG4gICAgICBydW5cbiAgICAgICAgeyBzdW1tYXJ5ID0gXCJcIlxuICAgICAgICA7IHJlYWRtZSA9IE5vbmVcbiAgICAgICAgOyBmbGFncyA9IGZsYWdzICgpIHw+IEZsYWcuSW50ZXJuYWwuY3JlYXRlXG4gICAgICAgIDsgYW5vbnMgPVxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgbGV0IG9wZW4gQW5vbnMuUGFyc2VyLkJhc2ljLkZvcl9vcGVuaW5nIGluXG4gICAgICAgICAgICAgICBmICgpXG4gICAgICAgICAgICAgICA+PnwgZnVuIHBhcmFtcyBgUGFyc2VfYXJncyBgUnVuX21haW4gLT5cbiAgICAgICAgICAgICAgIGxldCBvdXRjb21lID0gcGFyYW1zICgpIGluXG4gICAgICAgICAgICAgICBtYXRjaCBvdXRjb21lLnJlc3VsdCB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIChgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBlcnIpIC0+IHJlc3VsdCA6PSBTb21lIChFcnJvciBlcnIpXG4gICAgICAgICAgICAgICB8IE9rIHggLT4gcmVzdWx0IDo9IFNvbWUgKE9rIHgpKVxuICAgICAgICA7IHVzYWdlID0gQW5vbnMuR3JhbW1hci56ZXJvXG4gICAgICAgIH1cbiAgICAgICAgVW5pdl9tYXAuZW1wdHlcbiAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkczpGbi5pZFxuICAgICAgICB+YXJnczpjbWRsaW5lXG4gICAgICAgIH5wYXRoOlBhdGguZW1wdHlcbiAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3I6KFNvbWUgdHJ1ZSlcbiAgICAgICAgfmhlbHBfdGV4dDoobGF6eSBcIk5vIGhlbHAgZm9yIHBhcnNpbmdcIilcbiAgICAgICAgfm9uX2ZhaWx1cmU6XG4gICAgICAgICAgKGZ1blxuICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICB+Zm9yX2NvbXBsZXRpb246KF8gOiBib29sKVxuICAgICAgICAgICAgfnBhdGg6KF8gOiBQYXRoLnQpXG4gICAgICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvcjooXyA6IGJvb2wgb3B0aW9uKVxuICAgICAgICAgICAgLT4gcmVzdWx0IDo9IFNvbWUgKEVycm9yIChFcnJvci5vZl9leG4gZXhuKSkpO1xuICAgICAgT3B0aW9uLnZhbHVlX2V4biB+aGVyZTpbJWhlcmVdICFyZXN1bHRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU3BlYyA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSAtPiAnYikgUGFyYW0udFxuICAgIHR5cGUgJ2EgcGFyYW0gPSAnYSBQYXJhbS50XG5cbiAgICBsZXQgYXBwbHkgPSBQYXJhbS5hcHBseVxuICAgIGxldCAoICsrICkgdDEgdDIgPSBQYXJhbS5tYXAyIHQxIHQyIH5mOihmdW4gZjEgZjIgeCAtPiBmMiAoZjEgeCkpXG4gICAgbGV0ICggKz4gKSB0MSBwMiA9IFBhcmFtLm1hcDIgdDEgcDIgfmY6KGZ1biBmMSBwMiB4IC0+IChmMSB4KSBwMilcbiAgICBsZXQgKCArPCApIHQxIHAyID0gUGFyYW0ubWFwMiBwMiB0MSB+ZjooZnVuIHAyIGYxIHggLT4gZjEgKHggcDIpKVxuICAgIGxldCBzdGVwIGYgPSBQYXJhbS5yZXR1cm4gZlxuXG4gICAgKCogSWRlYWxseSB0aGlzIHdvdWxkIGJlIFtsZXQgZW1wdHkgPSBQYXJhbS5yZXR1cm4gRm4uaWRdLCBidXQgdW5mb3J0dW5hdGVseSB0aGF0XG4gICAgICAgZG9lc24ndCBjb21waWxlIGJlY2F1c2Ugb2YgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICopXG4gICAgbGV0IGVtcHR5ID0gUGFyYW0uZW1wdHlfc3BlY1xuICAgIGxldCBjb25zdCB4ID0gUGFyYW0ucmV0dXJuIHhcbiAgICBsZXQgbWFwID0gUGFyYW0ubWFwXG4gICAgbGV0IHdyYXAgZiB0ID0gUGFyYW0ubWFwIHQgfmY6KGZ1biBydW4gbWFpbiAtPiBmIH5ydW4gfm1haW4pXG4gICAgbGV0IG9mX3BhcmFtIHAgPSBtYXAgcCB+ZjooZnVuIGYgayAtPiBrIGYpXG4gICAgbGV0IHRvX3BhcmFtIHQgbSA9IG1hcCB0IH5mOihmdW4gZiAtPiBmIG0pXG4gICAgbGV0IHBhdGggOiBQYXRoLnQgcGFyYW0gPSBQYXJhbS5wYXRoXG4gICAgbGV0IGFyZ3MgOiBzdHJpbmcgbGlzdCBwYXJhbSA9IFBhcmFtLmFyZ3NcbiAgICBsZXQgaGVscCA6IHN0cmluZyBMYXp5LnQgcGFyYW0gPSBQYXJhbS5oZWxwXG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgbW9kdWxlIEFyZ190eXBlID0gQXJnX3R5cGVcbiAgICAgIGluY2x1ZGUgQXJnX3R5cGUuRXhwb3J0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgb3BlbiBBbm9uc1xuXG4gICAgICB0eXBlICdhIGFub25zID0gJ2EgdFxuXG4gICAgICBsZXQgKCAlOiApID0gKCAlOiApXG4gICAgICBsZXQgbWFwX2Fub25zID0gbWFwX2Fub25zXG4gICAgICBsZXQgbWF5YmUgPSBtYXliZVxuICAgICAgbGV0IG1heWJlX3dpdGhfZGVmYXVsdCA9IG1heWJlX3dpdGhfZGVmYXVsdFxuICAgICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0ID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3RcbiAgICAgIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyXG4gICAgICBsZXQgc2VxdWVuY2UgPSBzZXF1ZW5jZVxuICAgICAgbGV0IHQyID0gdDJcbiAgICAgIGxldCB0MyA9IHQzXG4gICAgICBsZXQgdDQgPSB0NFxuICAgICAgbGV0IGFub24gPSBQYXJhbS5hbm9uXG4gICAgZW5kXG5cbiAgICBsZXQgZXNjYXBlX2Fub24gPSBQYXJhbS5lc2NhcGVfYW5vblxuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG9wZW4gRmxhZ1xuXG4gICAgICB0eXBlICdhIGZsYWcgPSAnYSB0XG5cbiAgICAgIGxldCBtYXBfZmxhZyA9IG1hcF9mbGFnXG4gICAgICBsZXQgZXNjYXBlID0gZXNjYXBlXG4gICAgICBsZXQgZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlID0gZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlXG4gICAgICBsZXQgbGlzdGVkID0gbGlzdGVkXG4gICAgICBsZXQgb25lX29yX21vcmVfYXNfcGFpciA9IG9uZV9vcl9tb3JlX2FzX3BhaXJcbiAgICAgIGxldCBvbmVfb3JfbW9yZV9hc19saXN0ID0gb25lX29yX21vcmVfYXNfbGlzdFxuICAgICAgbGV0IG5vX2FyZyA9IG5vX2FyZ1xuICAgICAgbGV0IG5vX2FyZ19yZXF1aXJlZCA9IG5vX2FyZ19yZXF1aXJlZFxuICAgICAgbGV0IG5vX2FyZ19yZWdpc3RlciA9IG5vX2FyZ19yZWdpc3RlclxuICAgICAgbGV0IG5vX2FyZ19hYm9ydCA9IG5vX2FyZ19hYm9ydFxuICAgICAgbGV0IG5vX2FyZ19zb21lID0gbm9fYXJnX3NvbWVcbiAgICAgIGxldCBvcHRpb25hbCA9IG9wdGlvbmFsXG4gICAgICBsZXQgb3B0aW9uYWxfd2l0aF9kZWZhdWx0ID0gb3B0aW9uYWxfd2l0aF9kZWZhdWx0XG4gICAgICBsZXQgcmVxdWlyZWQgPSByZXF1aXJlZFxuICAgICAgbGV0IGZsYWcgPSBQYXJhbS5mbGFnXG4gICAgICBsZXQgZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jID0gUGFyYW0uZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jXG5cbiAgICAgIGluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIFBhcmFtLnRcblxuICAgICAgICAgIGxldCByZXR1cm4gPSBQYXJhbS5yZXR1cm5cbiAgICAgICAgICBsZXQgYXBwbHkgPSBhcHBseVxuICAgICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBwYWlyID0gUGFyYW0uYm90aFxuICAgIGVuZFxuXG4gICAgbGV0IGZsYWdzX29mX2FyZ3NfZXhuIGFyZ3MgPVxuICAgICAgTGlzdC5mb2xkIGFyZ3MgfmluaXQ6ZW1wdHkgfmY6KGZ1biBhY2MgKG5hbWUsIHNwZWMsIGRvYykgLT5cbiAgICAgICAgbGV0IGdlbiBmIGZsYWdfdHlwZSA9XG4gICAgICAgICAgc3RlcCAoZnVuIG0geCAtPlxuICAgICAgICAgICAgZiB4O1xuICAgICAgICAgICAgbSlcbiAgICAgICAgICArPiBQYXJhbS5mbGFnIG5hbWUgZmxhZ190eXBlIH5kb2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhbGwgZiBhcmdfdHlwZSA9IGdlbiAoZnVuIHggLT4gT3B0aW9uLml0ZXIgeCB+ZikgKFBhcmFtLm9wdGlvbmFsIGFyZ190eXBlKSBpblxuICAgICAgICBsZXQgc2V0IHIgYXJnX3R5cGUgPSBjYWxsIChmdW4geCAtPiByIDo9IHgpIGFyZ190eXBlIGluXG4gICAgICAgIGxldCBzZXRfYm9vbCByIGIgPSBnZW4gKGZ1biBwYXNzZWQgLT4gaWYgcGFzc2VkIHRoZW4gciA6PSBiKSBQYXJhbS5ub19hcmcgaW5cbiAgICAgICAgYWNjXG4gICAgICAgICsrXG4gICAgICAgIG1hdGNoIChzcGVjIDogU3RkbGliLkFyZy5zcGVjKSB3aXRoXG4gICAgICAgIHwgVW5pdCBmIC0+IGdlbiAoZnVuIHBhc3NlZCAtPiBpZiBwYXNzZWQgdGhlbiBmICgpKSBQYXJhbS5ub19hcmdcbiAgICAgICAgfCBTZXQgciAtPiBzZXRfYm9vbCByIHRydWVcbiAgICAgICAgfCBDbGVhciByIC0+IHNldF9ib29sIHIgZmFsc2VcbiAgICAgICAgfCBTdHJpbmcgZiAtPiBjYWxsIGYgc3RyaW5nXG4gICAgICAgIHwgU2V0X3N0cmluZyByIC0+IHNldCByIHN0cmluZ1xuICAgICAgICB8IEludCBmIC0+IGNhbGwgZiBpbnRcbiAgICAgICAgfCBTZXRfaW50IHIgLT4gc2V0IHIgaW50XG4gICAgICAgIHwgRmxvYXQgZiAtPiBjYWxsIGYgZmxvYXRcbiAgICAgICAgfCBTZXRfZmxvYXQgciAtPiBzZXQgciBmbG9hdFxuICAgICAgICB8IEJvb2wgZiAtPiBjYWxsIGYgYm9vbFxuICAgICAgICB8IFN5bWJvbCAoc3ltcywgZikgLT5cbiAgICAgICAgICBsZXQgYXJnX3R5cGUgPVxuICAgICAgICAgICAgQXJnX3R5cGUub2ZfYWxpc3RfZXhuXG4gICAgICAgICAgICAgIH5saXN0X3ZhbHVlc19pbl9oZWxwOmZhbHNlXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCBzeW1zIH5mOihmdW4gc3ltIC0+IHN5bSwgc3ltKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGNhbGwgZiBhcmdfdHlwZVxuICAgICAgICB8IFJlc3QgZiAtPiBnZW4gKGZ1biB4IC0+IE9wdGlvbi5pdGVyIHggfmY6KExpc3QuaXRlciB+ZikpIFBhcmFtLmVzY2FwZVxuICAgICAgICB8IFR1cGxlIF8gLT5cbiAgICAgICAgICBmYWlsd2l0aCBcIkFyZy5UdXBsZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IENvbW1hbmQuU3BlYy5mbGFnc19vZl9hcmdzX2V4blwiXG4gICAgICAgIHwgKChFeHBhbmQgXykgW0BpZiBvY2FtbF92ZXJzaW9uID49ICg0LCAwNSwgMCldKSAtPlxuICAgICAgICAgIGZhaWx3aXRoIFwiQXJnLkV4cGFuZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IENvbW1hbmQuU3BlYy5mbGFnc19vZl9hcmdzX2V4blwiXG4gICAgICAgIHwgKChSZXN0X2FsbCBfKSBbQGlmIG9jYW1sX3ZlcnNpb24gPj0gKDQsIDEyLCAwKV0pIC0+XG4gICAgICAgICAgZmFpbHdpdGggXCJBcmcuUmVzdF9hbGwgaXMgbm90IHN1cHBvcnRlZCBieSBDb21tYW5kLlNwZWMuZmxhZ3Nfb2ZfYXJnc19leG5cIilcbiAgICA7O1xuXG4gICAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRmxhZy5EZXByZWNhdGVkXG4gICAgICBpbmNsdWRlIEFub25zLkRlcHJlY2F0ZWRcbiAgICBlbmRcblxuICAgIGxldCBhcmdfbmFtZXMgPSBQYXJhbS5hcmdfbmFtZXNcblxuICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IFBhcmFtLkNob29zZV9vbmUuSWZfbm90aGluZ19jaG9zZW5cblxuICAgIGxldCBjaG9vc2Vfb25lID0gUGFyYW0uY2hvb3NlX29uZVxuICAgIGxldCBjaG9vc2Vfb25lX25vbl9vcHRpb25hbCA9IFBhcmFtLmNob29zZV9vbmVfbm9uX29wdGlvbmFsXG4gICAgbGV0IGFuZF9hcmdfbmFtZXMgPSBQYXJhbS5hbmRfYXJnX25hbWVzXG4gICAgbGV0IGFuZF9hcmdfbmFtZSA9IFBhcmFtLmFuZF9hcmdfbmFtZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgR3JvdXAgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6ICh1bml0IC0+IHN0cmluZykgb3B0aW9uXG4gICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgbGlzdCBMYXp5LnRcbiAgICA7IGJvZHkgOiAocGF0aDpzdHJpbmcgbGlzdCAtPiB1bml0KSBvcHRpb25cbiAgICB9XG5cbiAgbGV0IHNoYXBlIH5zdWJjb21tYW5kX3RvX3NoYXBlIHQgOiBfIFNoYXBlLkdyb3VwX2luZm8udCA9XG4gICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgOyByZWFkbWUgPSBPcHRpb24ubWFwIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSkgdC5yZWFkbWVcbiAgICA7IHN1YmNvbW1hbmRzID0gTGF6eS5tYXAgdC5zdWJjb21tYW5kcyB+ZjooTGlzdC5Bc3NvYy5tYXAgfmY6c3ViY29tbWFuZF90b19zaGFwZSlcbiAgICB9XG4gIDs7XG5lbmRcblxubGV0IGFic19wYXRoID0gU2hhcGUuUHJpdmF0ZS5hYnNfcGF0aFxubGV0IGNvbXBfY3dvcmQgPSBFbnZfdmFyLkNPTVBfQ1dPUkRcblxubW9kdWxlIEV4ZWMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6ICh1bml0IC0+IHN0cmluZykgb3B0aW9uXG4gICAgOyAoKiBJZiBbcGF0aF90b19leGVdIGlzIHJlbGF0aXZlLCBpbnRlcnByZXQgdy5yLnQuIFt3b3JraW5nX2Rpcl0gKilcbiAgICAgIHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgOyBlbnYgOiBlbnYgb3B0aW9uXG4gICAgfVxuXG4gIGxldCBzaGFwZSB0IDogU2hhcGUuRXhlY19pbmZvLnQgPVxuICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgIDsgcmVhZG1lID0gT3B0aW9uLm1hcCB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpIHQucmVhZG1lXG4gICAgOyB3b3JraW5nX2RpciA9IHQud29ya2luZ19kaXJcbiAgICA7IHBhdGhfdG9fZXhlID0gdC5wYXRoX3RvX2V4ZVxuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA9IHQuY2hpbGRfc3ViY29tbWFuZFxuICAgIH1cbiAgOztcbmVuZFxuXG4oKiBBIHByb3h5IGNvbW1hbmQgaXMgdGhlIHN0cnVjdHVyZSBvZiBhbiBFeGVjIGNvbW1hbmQgb2J0YWluZWQgYnkgcnVubmluZyBpdCBpbiBhXG4gICBzcGVjaWFsIHdheSAqKVxubW9kdWxlIFByb3h5ID0gc3RydWN0XG4gIG1vZHVsZSBLaW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgQmFzZSBvZiBTaGFwZS5CYXNlX2luZm8udFxuICAgICAgfCBHcm91cCBvZiAnYSBTaGFwZS5Hcm91cF9pbmZvLnRcbiAgICAgIHwgRXhlYyBvZiBTaGFwZS5FeGVjX2luZm8udFxuICAgICAgfCBMYXp5IG9mICdhIHQgTGF6eS50XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICA7IHBhdGhfdG9fc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGtpbmQgOiB0IEtpbmQudFxuICAgIH1cbmVuZFxuXG50eXBlIHQgPVxuICB8IEJhc2Ugb2YgQ29tbWFuZF9iYXNlLnRcbiAgfCBHcm91cCBvZiB0IEdyb3VwLnRcbiAgfCBFeGVjIG9mIEV4ZWMudFxuICB8IExhenkgb2YgdCBMYXp5LnRcblxubGV0IHJlYyBzZXhwYWJsZV9zaGFwZSA6IHQgLT4gU2hhcGUuU2V4cGFibGUudCA9IGZ1bmN0aW9uXG4gIHwgQmFzZSBiYXNlIC0+IEJhc2UgKENvbW1hbmRfYmFzZS5zaGFwZSBiYXNlKVxuICB8IEV4ZWMgZXhlYyAtPiBFeGVjIChFeGVjLnNoYXBlIGV4ZWMpXG4gIHwgR3JvdXAgZ3JvdXAgLT4gR3JvdXAgKEdyb3VwLnNoYXBlIH5zdWJjb21tYW5kX3RvX3NoYXBlOnNleHBhYmxlX3NoYXBlIGdyb3VwKVxuICB8IExhenkgdGh1bmsgLT4gTGF6eSAoTGF6eS5tYXAgfmY6c2V4cGFibGVfc2hhcGUgdGh1bmspXG47O1xuXG50eXBlICgnbWFpbiwgJ3Jlc3VsdCkgYmFzaWNfc3BlY19jb21tYW5kID1cbiAgc3VtbWFyeTpzdHJpbmdcbiAgLT4gP3JlYWRtZToodW5pdCAtPiBzdHJpbmcpXG4gIC0+ICgnbWFpbiwgdW5pdCAtPiAncmVzdWx0KSBDb21tYW5kX2Jhc2UuU3BlYy50XG4gIC0+ICdtYWluXG4gIC0+IHRcblxubGV0IGV4dGVuZF9leG4gfm1lbSB+YWRkIG1hcCBrZXlfdHlwZSB+a2V5IGRhdGEgPVxuICBpZiBtZW0gbWFwIGtleVxuICB0aGVuIGZhaWx3aXRoZiBcInRoZXJlIGlzIGFscmVhZHkgYSAlcyBuYW1lZCAlc1wiIChLZXlfdHlwZS50b19zdHJpbmcga2V5X3R5cGUpIGtleSAoKTtcbiAgYWRkIG1hcCB+a2V5IH5kYXRhXG47O1xuXG5sZXQgZXh0ZW5kX21hcF9leG4gbWFwIGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGV4dGVuZF9leG4gbWFwIGtleV90eXBlIH5rZXkgZGF0YSB+bWVtOk1hcC5tZW0gfmFkZDpNYXAuc2V0XG47O1xuXG5sZXQgZXh0ZW5kX2FsaXN0X2V4biBhbGlzdCBrZXlfdHlwZSB+a2V5IGRhdGEgPVxuICBleHRlbmRfZXhuXG4gICAgYWxpc3RcbiAgICBrZXlfdHlwZVxuICAgIH5rZXlcbiAgICBkYXRhXG4gICAgfm1lbTooZnVuIGFsaXN0IGtleSAtPiBMaXN0LkFzc29jLm1lbSBhbGlzdCBrZXkgfmVxdWFsOlN0cmluZy5lcXVhbClcbiAgICB+YWRkOihmdW4gYWxpc3QgfmtleSB+ZGF0YSAtPiBMaXN0LkFzc29jLmFkZCBhbGlzdCBrZXkgZGF0YSB+ZXF1YWw6U3RyaW5nLmVxdWFsKVxuOztcblxubW9kdWxlIEJhaWxvdXRfZHVtcF9mbGFnID0gc3RydWN0XG4gIGxldCBhZGQgYmFzZSB+bmFtZSB+YWxpYXNlcyB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgfnRleHQgfnRleHRfc3VtbWFyeSA9XG4gICAgbGV0IGZsYWdzID0gYmFzZS5Db21tYW5kX2Jhc2UuZmxhZ3MgaW5cbiAgICBsZXQgZmxhZ3MgPVxuICAgICAgZXh0ZW5kX21hcF9leG5cbiAgICAgICAgZmxhZ3NcbiAgICAgICAgS2V5X3R5cGUuRmxhZ1xuICAgICAgICB+a2V5Om5hbWVcbiAgICAgICAgeyBuYW1lXG4gICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gRmxhZy5OdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gaWdub3JlXG4gICAgICAgIDsgYWN0aW9uID0gUHJpbnRfaW5mb19hbmRfcXVpdCAoZnVuIGVudiAtPiB0ZXh0IGVudilcbiAgICAgICAgOyBkb2MgPSBzcHJpbnRmIFwiIHByaW50ICVzIGFuZCBleGl0XCIgdGV4dF9zdW1tYXJ5XG4gICAgICAgIDsgbmFtZV9tYXRjaGluZyA9IGBQcmVmaXhcbiAgICAgICAgfVxuICAgIGluXG4gICAgeyBiYXNlIHdpdGggZmxhZ3MgfVxuICA7O1xuZW5kXG5cbmxldCBiYXNpYyB+c3VtbWFyeSA/cmVhZG1lIHsgQ29tbWFuZF9iYXNlLlBhcmFtLnVzYWdlOyBmbGFnczsgZiB9ID1cbiAgbGV0IGZsYWdzID0gZmxhZ3MgKCkgaW5cbiAgbGV0IHVzYWdlID0gdXNhZ2UgKCkgaW5cbiAgbGV0IGFub25zICgpID1cbiAgICBsZXQgb3BlbiBBbm9ucy5QYXJzZXIuQmFzaWMuRm9yX29wZW5pbmcgaW5cbiAgICBmICgpXG4gICAgPj58IGZ1biBwYXJhbXMgYFBhcnNlX2FyZ3MgLT5cbiAgICBsZXQgb3V0Y29tZSA9IHBhcmFtcyAoKSBpblxuICAgIG1hdGNoIG91dGNvbWUucmVzdWx0IHdpdGhcbiAgICB8IEVycm9yIChgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBlcnIpIC0+IGRpZSBcIiVzXCIgKEVycm9yLnRvX3N0cmluZ19odW0gZXJyKSAoKVxuICAgIHwgT2sgdGh1bmsgLT4gZnVuIGBSdW5fbWFpbiAtPiB0aHVuayAoKVxuICBpblxuICBsZXQgZmxhZ3MgPSBGbGFnLkludGVybmFsLmNyZWF0ZSBmbGFncyBpblxuICBsZXQgYmFzZSA9IHsgQ29tbWFuZF9iYXNlLnN1bW1hcnk7IHJlYWRtZTsgdXNhZ2U7IGZsYWdzOyBhbm9ucyB9IGluXG4gIGxldCBiYXNlID1cbiAgICBCYWlsb3V0X2R1bXBfZmxhZy5hZGRcbiAgICAgIGJhc2VcbiAgICAgIH5uYW1lOlwiLWhlbHBcIlxuICAgICAgfmFsaWFzZXM6WyBcIi0/XCIgXVxuICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOlsgXCItLWhlbHBcIiBdXG4gICAgICB+dGV4dF9zdW1tYXJ5OlwidGhpcyBoZWxwIHRleHRcIlxuICAgICAgfnRleHQ6KGZ1biBlbnYgLT4gTGF6eS5mb3JjZSAoRW52LmZpbmRfZXhuIGVudiBDb21tYW5kX2Jhc2UuaGVscF9rZXkpKVxuICBpblxuICBCYXNlIGJhc2Vcbjs7XG5cbmxldCBiYXNpY19zcGVjIH5zdW1tYXJ5ID9yZWFkbWUgc3BlYyBtYWluID1cbiAgYmFzaWMgfnN1bW1hcnkgP3JlYWRtZSAoQ29tbWFuZF9iYXNlLlNwZWMudG9fcGFyYW0gc3BlYyBtYWluKVxuOztcblxubGV0IHN1YnNfa2V5IDogKHN0cmluZyAqIHQpIGxpc3QgRW52LktleS50ID0gRW52LmtleV9jcmVhdGUgXCJzdWJjb21tYW5kc1wiXG5cbmxldCBsYXp5X2dyb3VwIH5zdW1tYXJ5ID9yZWFkbWUgP3ByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgP2JvZHkgYWxpc3QgPVxuICBsZXQgc3ViY29tbWFuZHMgPVxuICAgIExhenkubWFwIGFsaXN0IH5mOihmdW4gYWxpc3QgLT5cbiAgICAgIGxldCBhbGlzdCA9XG4gICAgICAgIExpc3QubWFwIGFsaXN0IH5mOihmdW4gKG5hbWUsIHQpIC0+IG5vcm1hbGl6ZSBLZXlfdHlwZS5TdWJjb21tYW5kIG5hbWUsIHQpXG4gICAgICBpblxuICAgICAgbWF0Y2ggTWFwLm9mX2FsaXN0IChtb2R1bGUgU3RyaW5nKSBhbGlzdCB3aXRoXG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IG5hbWUgLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgc3ViY29tbWFuZHMgbmFtZWQgJXNcIiBuYW1lICgpXG4gICAgICB8IGBPayBtYXAgLT5cbiAgICAgICAgKG1hdGNoIHByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgd2l0aFxuICAgICAgICAgfCBTb21lICgpIC0+IGFsaXN0XG4gICAgICAgICB8IE5vbmUgLT4gTWFwLnRvX2FsaXN0IG1hcCkpXG4gIGluXG4gIEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kczsgYm9keSB9XG47O1xuXG5sZXQgZ3JvdXAgfnN1bW1hcnkgP3JlYWRtZSA/cHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciA/Ym9keSBhbGlzdCA9XG4gIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIGYgKCkgLT4gU3RyaW5nLnN0cmlwIChmICgpKSkgaW5cbiAgbGF6eV9ncm91cCB+c3VtbWFyeSA/cmVhZG1lID9wcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyID9ib2R5IChMYXp5LmZyb21fdmFsIGFsaXN0KVxuOztcblxubGV0IGV4ZWMgfnN1bW1hcnkgP3JlYWRtZSA/KGNoaWxkX3N1YmNvbW1hbmQgPSBbXSkgP2VudiB+cGF0aF90b19leGUgKCkgPVxuICBsZXQgd29ya2luZ19kaXIgPVxuICAgIEZpbGVuYW1lX2Jhc2UuZGlybmFtZVxuICAgIEBAXG4gICAgbWF0Y2ggcGF0aF90b19leGUgd2l0aFxuICAgIHwgYEFic29sdXRlIF8gfCBgUmVsYXRpdmVfdG9fbWUgXyAtPiBTdGRsaWIuU3lzLmV4ZWN1dGFibGVfbmFtZVxuICAgIHwgYFJlbGF0aXZlX3RvX2FyZ3YwIF8gLT4gU3RkbGliLlN5cy5hcmd2LigwKVxuICBpblxuICBsZXQgcGF0aF90b19leGUgPVxuICAgIG1hdGNoIHBhdGhfdG9fZXhlIHdpdGhcbiAgICB8IGBBYnNvbHV0ZSBwIC0+XG4gICAgICBpZiBub3QgKEZpbGVuYW1lX2Jhc2UuaXNfYWJzb2x1dGUgcClcbiAgICAgIHRoZW4gZmFpbHdpdGggXCJQYXRoIHBhc3NlZCB0byBgQWJzb2x1dGUgbXVzdCBiZSBhYnNvbHV0ZVwiXG4gICAgICBlbHNlIHBcbiAgICB8IGBSZWxhdGl2ZV90b19tZSBwIHwgYFJlbGF0aXZlX3RvX2FyZ3YwIHAgLT5cbiAgICAgIGlmIG5vdCAoRmlsZW5hbWVfYmFzZS5pc19yZWxhdGl2ZSBwKVxuICAgICAgdGhlbiBmYWlsd2l0aCBcIlBhdGggcGFzc2VkIHRvIGBSZWxhdGl2ZV90b19tZSBtdXN0IGJlIHJlbGF0aXZlXCJcbiAgICAgIGVsc2UgcFxuICBpblxuICBFeGVjIHsgc3VtbWFyeTsgcmVhZG1lOyB3b3JraW5nX2RpcjsgcGF0aF90b19leGU7IGNoaWxkX3N1YmNvbW1hbmQ7IGVudiB9XG47O1xuXG5sZXQgb2ZfbGF6eSB0aHVuayA9IExhenkgdGh1bmtcblxubGV0IHJlYyBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgIHNleHBhYmxlXG4gICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gIDogUHJveHkudFxuICA9XG4gIGxldCBraW5kID1cbiAgICBraW5kX29mX3NleHBhYmxlXG4gICAgICBzZXhwYWJsZVxuICAgICAgfndvcmtpbmdfZGlyXG4gICAgICB+cGF0aF90b19leGVcbiAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gIGluXG4gIHsgd29ya2luZ19kaXI7IHBhdGhfdG9fZXhlOyBwYXRoX3RvX3N1YmNvbW1hbmQ7IGNoaWxkX3N1YmNvbW1hbmQ7IGtpbmQgfVxuXG5hbmQga2luZF9vZl9zZXhwYWJsZVxuICAgICAgc2V4cGFibGVcbiAgICAgIH53b3JraW5nX2RpclxuICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZFxuICA9XG4gIG1hdGNoIChzZXhwYWJsZSA6IFNoYXBlLlNleHBhYmxlLnQpIHdpdGhcbiAgfCBCYXNlIGIgLT4gUHJveHkuS2luZC5CYXNlIGJcbiAgfCBFeGVjIGUgLT4gUHJveHkuS2luZC5FeGVjIGVcbiAgfCBMYXp5IGwgLT5cbiAgICBQcm94eS5LaW5kLkxhenlcbiAgICAgIChMYXp5Lm1hcCBsIH5mOihmdW4gc2V4cGFibGUgLT5cbiAgICAgICAgIGtpbmRfb2Zfc2V4cGFibGVcbiAgICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kKSlcbiAgfCBHcm91cCBnIC0+XG4gICAgUHJveHkuS2luZC5Hcm91cFxuICAgICAgeyBnIHdpdGhcbiAgICAgICAgc3ViY29tbWFuZHMgPVxuICAgICAgICAgIExhenkubWFwXG4gICAgICAgICAgICBnLnN1YmNvbW1hbmRzXG4gICAgICAgICAgICB+ZjpcbiAgICAgICAgICAgICAgKExpc3QubWFwIH5mOihmdW4gKHN0ciwgc2V4cGFibGUpIC0+XG4gICAgICAgICAgICAgICAgIGxldCBwYXRoX3RvX3N1YmNvbW1hbmQgPSBwYXRoX3RvX3N1YmNvbW1hbmQgQCBbIHN0ciBdIGluXG4gICAgICAgICAgICAgICAgIGxldCBwcm94eSA9XG4gICAgICAgICAgICAgICAgICAgcHJveHlfb2Zfc2V4cGFibGVcbiAgICAgICAgICAgICAgICAgICAgIHNleHBhYmxlXG4gICAgICAgICAgICAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICAgICAgICAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgICAgICAgICAgICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICAgICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgc3RyLCBwcm94eSkpXG4gICAgICB9XG47O1xuXG5tb2R1bGUgVmVyc2lvbl9pbmZvIChWZXJzaW9uX3V0aWwgOiBWZXJzaW9uX3V0aWwpID0gc3RydWN0XG4gIGxldCBwcmludF92ZXJzaW9uIH52ZXJzaW9uID0gcHJpbnRfZW5kbGluZSAoZm9yY2UgdmVyc2lvbilcbiAgbGV0IHByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm8gPSBwcmludF9lbmRsaW5lIChmb3JjZSBidWlsZF9pbmZvKVxuXG4gIGxldCBjb21tYW5kIH52ZXJzaW9uIH5idWlsZF9pbmZvID1cbiAgICBiYXNpY1xuICAgICAgfnN1bW1hcnk6XCJwcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uXCJcbiAgICAgIENvbW1hbmRfYmFzZS5QYXJhbS4oXG4gICAgICAgIHJldHVybiAoZnVuIHZlcnNpb25fZmxhZyBidWlsZF9pbmZvX2ZsYWcgLT5cbiAgICAgICAgICBpZiBidWlsZF9pbmZvX2ZsYWdcbiAgICAgICAgICB0aGVuIHByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm9cbiAgICAgICAgICBlbHNlIGlmIHZlcnNpb25fZmxhZ1xuICAgICAgICAgIHRoZW4gcHJpbnRfdmVyc2lvbiB+dmVyc2lvblxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgcHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbztcbiAgICAgICAgICAgIHByaW50X3ZlcnNpb24gfnZlcnNpb24pO1xuICAgICAgICAgIGV4aXQgMClcbiAgICAgICAgPCo+IGZsYWcgXCItdmVyc2lvblwiIG5vX2FyZyB+ZG9jOlwiIHByaW50IHRoZSB2ZXJzaW9uIG9mIHRoaXMgYnVpbGRcIlxuICAgICAgICA8Kj4gZmxhZyBcIi1idWlsZC1pbmZvXCIgbm9fYXJnIH5kb2M6XCIgcHJpbnQgYnVpbGQgaW5mbyBmb3IgdGhpcyBidWlsZFwiKVxuICA7O1xuXG4gIGxldCByZWMgYWRkIH52ZXJzaW9uIH5idWlsZF9pbmZvIHVudmVyc2lvbmVkID1cbiAgICBtYXRjaCB1bnZlcnNpb25lZCB3aXRoXG4gICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgIGxldCBiYXNlID1cbiAgICAgICAgQmFpbG91dF9kdW1wX2ZsYWcuYWRkXG4gICAgICAgICAgYmFzZVxuICAgICAgICAgIH5uYW1lOlwiLXZlcnNpb25cIlxuICAgICAgICAgIH5hbGlhc2VzOltdXG4gICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOlsgXCItLXZlcnNpb25cIiBdXG4gICAgICAgICAgfnRleHRfc3VtbWFyeTpcInRoZSB2ZXJzaW9uIG9mIHRoaXMgYnVpbGRcIlxuICAgICAgICAgIH50ZXh0OihmdW4gXyAtPiBmb3JjZSB2ZXJzaW9uKVxuICAgICAgaW5cbiAgICAgIGxldCBiYXNlID1cbiAgICAgICAgQmFpbG91dF9kdW1wX2ZsYWcuYWRkXG4gICAgICAgICAgYmFzZVxuICAgICAgICAgIH5uYW1lOlwiLWJ1aWxkLWluZm9cIlxuICAgICAgICAgIH5hbGlhc2VzOltdXG4gICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOlsgXCItLWJ1aWxkLWluZm9cIiBdXG4gICAgICAgICAgfnRleHRfc3VtbWFyeTpcImluZm8gYWJvdXQgdGhpcyBidWlsZFwiXG4gICAgICAgICAgfnRleHQ6KGZ1biBfIC0+IGZvcmNlIGJ1aWxkX2luZm8pXG4gICAgICBpblxuICAgICAgQmFzZSBiYXNlXG4gICAgfCBHcm91cCBncm91cCAtPlxuICAgICAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICAgICAgTGF6eS5tYXAgZ3JvdXAuR3JvdXAuc3ViY29tbWFuZHMgfmY6KGZ1biBzdWJjb21tYW5kcyAtPlxuICAgICAgICAgIGV4dGVuZF9hbGlzdF9leG5cbiAgICAgICAgICAgIHN1YmNvbW1hbmRzXG4gICAgICAgICAgICBLZXlfdHlwZS5TdWJjb21tYW5kXG4gICAgICAgICAgICB+a2V5OlwidmVyc2lvblwiXG4gICAgICAgICAgICAoY29tbWFuZCB+dmVyc2lvbiB+YnVpbGRfaW5mbykpXG4gICAgICBpblxuICAgICAgR3JvdXAgeyBncm91cCB3aXRoIEdyb3VwLnN1YmNvbW1hbmRzIH1cbiAgICB8IEV4ZWMgZXhlYyAtPiBFeGVjIGV4ZWNcbiAgICB8IExhenkgdGh1bmsgLT4gTGF6eSAobGF6eSAoYWRkIH52ZXJzaW9uIH5idWlsZF9pbmZvIChMYXp5LmZvcmNlIHRodW5rKSkpXG4gIDs7XG5cbiAgbGV0IG5vcm1hbGl6ZV92ZXJzaW9uX2xpbmVzIGxpbmVzID1cbiAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCJcXG5cIiAoTGlzdC5zb3J0IGxpbmVzIH5jb21wYXJlOlN0cmluZy5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBkZWZhdWx0X3ZlcnNpb24gPSBsYXp5IChub3JtYWxpemVfdmVyc2lvbl9saW5lcyBWZXJzaW9uX3V0aWwudmVyc2lvbl9saXN0KVxuXG4gIGxldCBkZWZhdWx0X2J1aWxkX2luZm8gPVxuICAgIGxhenlcbiAgICAgICgqIGxhenkgdG8gYXZvaWQgbG9hZGluZyBhbGwgdGhlIHRpbWUgem9uZSBzdHVmZiBhdCB0b3BsZXZlbCAqKVxuICAgICAgKFZlcnNpb25fdXRpbC5yZXByaW50X2J1aWxkX2luZm8gVmVyc2lvbl91dGlsLlRpbWUuc2V4cF9vZl90KVxuICA7O1xuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBcIlZlcnNpb25faW5mb1wiID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBtb2R1bGUgVmVyc2lvbl9pbmZvID0gVmVyc2lvbl9pbmZvIChzdHJ1Y3RcbiAgICAgICAgbGV0IHZlcnNpb25fbGlzdCA9IFsgXCJoZzovL3NvbWUvcGF0aF8weGRlYWRiZWVmXCI7IFwic3NoOi8vYS9wYXRoXzhiYWRmMDBkXCIgXVxuICAgICAgICBsZXQgcmVwcmludF9idWlsZF9pbmZvIHRvX3NleHAgPSBTZXhwLnRvX3N0cmluZyAodG9fc2V4cCAoKSlcblxuICAgICAgICBtb2R1bGUgVGltZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgICAgZW5kXG4gICAgICBlbmQpXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJwcmludCB2ZXJzaW9uIHdoZXJlIG11bHRpcGxlIHJlcG9zIGFyZSB1c2VkXCIgPVxuICAgICAgVmVyc2lvbl9pbmZvLnByaW50X3ZlcnNpb24gfnZlcnNpb246VmVyc2lvbl9pbmZvLmRlZmF1bHRfdmVyc2lvbjtcbiAgICAgIFslZXhwZWN0IHt8XG4gICAgICAgIGhnOi8vc29tZS9wYXRoXzB4ZGVhZGJlZWZcbiAgICAgICAgc3NoOi8vYS9wYXRoXzhiYWRmMDBkIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJwcmludCBidWlsZCBpbmZvXCIgPVxuICAgICAgVmVyc2lvbl9pbmZvLnByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm86KGxhenkgXCJzb21lIGJ1aWxkIGluZm9cIik7XG4gICAgICBbJWV4cGVjdCB7fCBzb21lIGJ1aWxkIGluZm8gfH1dXG4gICAgOztcbiAgZW5kKVxuOztcblxubGV0IHJlYyBzdW1tYXJ5ID0gZnVuY3Rpb25cbiAgfCBCYXNlIHggLT4geC5zdW1tYXJ5XG4gIHwgR3JvdXAgeCAtPiB4LnN1bW1hcnlcbiAgfCBFeGVjIHggLT4geC5zdW1tYXJ5XG4gIHwgTGF6eSB0aHVuayAtPiBzdW1tYXJ5IChMYXp5LmZvcmNlIHRodW5rKVxuOztcblxubW9kdWxlIFNwZWMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDb21tYW5kX2Jhc2UuU3BlY1xuXG4gIGxldCBwYXRoID0gbWFwIH5mOlBhdGgucGFydHNfZXhlX2Jhc2VuYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICBtb2R1bGUgU3BlYyA9IFNwZWMuRGVwcmVjYXRlZFxuXG4gIGxldCBzdW1tYXJ5ID0gc3VtbWFyeVxuXG4gIGxldCByZWMgZ2V0X2ZsYWdfbmFtZXMgPSBmdW5jdGlvblxuICAgIHwgQmFzZSBiYXNlIC0+IGJhc2UuQ29tbWFuZF9iYXNlLmZsYWdzIHw+IE1hcC5rZXlzXG4gICAgfCBMYXp5IHRodW5rIC0+IGdldF9mbGFnX25hbWVzIChMYXp5LmZvcmNlIHRodW5rKVxuICAgIHwgR3JvdXAgXyB8IEV4ZWMgXyAtPiBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgaGVscF9yZWN1cnNpdmUgfmNtZCB+d2l0aF9mbGFncyB+ZXhwYW5kX2RvdHMgdCBzID1cbiAgICBsZXQgcmVjIGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kIHQgcyA9XG4gICAgICBsZXQgbmV3X3MgPSBzIF4gKGlmIGV4cGFuZF9kb3RzIHRoZW4gY21kIGVsc2UgXCIuXCIpIF4gXCIgXCIgaW5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBMYXp5IHRodW5rIC0+XG4gICAgICAgIGxldCB0ID0gTGF6eS5mb3JjZSB0aHVuayBpblxuICAgICAgICBoZWxwX3JlY3Vyc2l2ZV9yZWMgfmNtZCB0IHNcbiAgICAgIHwgQmFzZSBiYXNlIC0+XG4gICAgICAgIGxldCBiYXNlX2hlbHAgPSBzIF4gY21kLCBzdW1tYXJ5IChCYXNlIGJhc2UpIGluXG4gICAgICAgIGlmIHdpdGhfZmxhZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIGJhc2VfaGVscFxuICAgICAgICAgIDo6IExpc3QubWFwXG4gICAgICAgICAgICAgICB+ZjooZnVuIChmbGFnLCBoKSAtPiBuZXdfcyBeIGZsYWcsIGgpXG4gICAgICAgICAgICAgICAoTGlzdC5zb3J0XG4gICAgICAgICAgICAgICAgICB+Y29tcGFyZTpDb21tYW5kX2Jhc2UuRGVwcmVjYXRlZC5zdWJjb21tYW5kX2NtcF9mc3RcbiAgICAgICAgICAgICAgICAgIChDb21tYW5kX2Jhc2UuRGVwcmVjYXRlZC5mbGFnc19oZWxwIH5kaXNwbGF5X2hlbHBfZmxhZ3M6ZmFsc2UgYmFzZSkpXG4gICAgICAgIGVsc2UgWyBiYXNlX2hlbHAgXVxuICAgICAgfCBHcm91cCB7IHN1bW1hcnk7IHN1YmNvbW1hbmRzOyByZWFkbWUgPSBfOyBib2R5ID0gXyB9IC0+XG4gICAgICAgIChzIF4gY21kLCBzdW1tYXJ5KVxuICAgICAgICA6OiAoTGF6eS5mb3JjZSBzdWJjb21tYW5kc1xuICAgICAgICAgICAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOkNvbW1hbmRfYmFzZS5EZXByZWNhdGVkLnN1YmNvbW1hbmRfY21wX2ZzdFxuICAgICAgICAgICAgfD4gTGlzdC5jb25jYXRfbWFwIH5mOihmdW4gKGNtZCcsIHQpIC0+IGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kOmNtZCcgdCBuZXdfcylcbiAgICAgICAgICAgKVxuICAgICAgfCBFeGVjIF8gLT5cbiAgICAgICAgKCogQ29tbWFuZC5leGVjIGRvZXMgbm90IHN1cHBvcnQgZGVwcmVjYXRlZCBjb21tYW5kcyAqKVxuICAgICAgICBbXVxuICAgIGluXG4gICAgaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQgdCBzXG4gIDs7XG5lbmRcblxubW9kdWxlIEZvcl91bml4IChGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyIDogRm9yX3VuaXggd2l0aCB0eXBlIGVudl92YXIgOj0gc3RyaW5nKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFZlcnNpb25faW5mbyA9IFZlcnNpb25faW5mbyAoRm9yX3VuaXhfd2l0aF9zdHJpbmdfZW52X3Zhci5WZXJzaW9uX3V0aWwpXG5cbiAgbW9kdWxlIEZvcl91bml4X3dpdGhfY29tbWFuZF9lbnZfdmFyIDogRm9yX3VuaXggd2l0aCB0eXBlIGVudl92YXIgOj0gRW52X3Zhci50ID0gc3RydWN0XG4gICAgKCogV2UgZm9yY2UgYWNjZXNzIHRvIGVudiB2YXJzIHRvIGdvIHRocm91Z2ggW0NvbW1hbmRfZW52X3Zhcl0gc28gdGhhdCB3ZSBjYW4ga2VlcCBhblxuICAgICAgIGFjY3VyYXRlIGVudW1lcmF0aW9uIG9mIHRoZSB2YXJpYWJsZXMgd2UgdXNlLiAqKVxuXG4gICAgaW5jbHVkZSBGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyXG5cbiAgICBtb2R1bGUgVW5peCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBVbml4XG5cbiAgICAgIGxldCBwdXRlbnYgfmtleSB+ZGF0YSA9IHB1dGVudiB+a2V5OihFbnZfdmFyLnRvX3N0cmluZyBrZXkpIH5kYXRhXG4gICAgICBsZXQgdW5zZXRlbnYga2V5ID0gdW5zZXRlbnYgKEVudl92YXIudG9fc3RyaW5nIGtleSlcbiAgICAgIGxldCB1bnNhZmVfZ2V0ZW52IGtleSA9IHVuc2FmZV9nZXRlbnYgKEVudl92YXIudG9fc3RyaW5nIGtleSlcblxuICAgICAgbGV0IGNvbnZlcnRfZW52IGVudiA9XG4gICAgICAgIGxldCBjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdCA9XG4gICAgICAgICAgTGlzdC5tYXAgbGlzdCB+ZjooZnVuIChlbnZfdmFyLCBzdHIpIC0+IEVudl92YXIudG9fc3RyaW5nIGVudl92YXIsIHN0cilcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZW52IHdpdGhcbiAgICAgICAgfCBgUmVwbGFjZSBsaXN0IC0+IGBSZXBsYWNlIChjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdClcbiAgICAgICAgfCBgRXh0ZW5kIGxpc3QgLT4gYEV4dGVuZCAoY29udmVydF9jb21tYW5kX2Vudl92YXJfdG9fc3RyaW5nIGxpc3QpXG4gICAgICAgIHwgYE92ZXJyaWRlIGxpc3QgLT4gYE92ZXJyaWRlIChjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdClcbiAgICAgICAgfCBgUmVwbGFjZV9yYXcgXyBhcyByZXBsYWNlIC0+IHJlcGxhY2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBleGVjIH5wcm9nIH5hcmd2ID91c2VfcGF0aCA/ZW52ICgpID1cbiAgICAgICAgZXhlYyB+cHJvZyB+YXJndiA/dXNlX3BhdGggP2VudjooT3B0aW9uLm1hcCBlbnYgfmY6Y29udmVydF9lbnYpICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgY3JlYXRlX3Byb2Nlc3NfZW52ID93b3JraW5nX2RpciA/cHJvZ19zZWFyY2hfcGF0aCA/YXJndjAgfnByb2cgfmFyZ3MgfmVudiAoKSA9XG4gICAgICAgIGNyZWF0ZV9wcm9jZXNzX2VudlxuICAgICAgICAgID93b3JraW5nX2RpclxuICAgICAgICAgID9wcm9nX3NlYXJjaF9wYXRoXG4gICAgICAgICAgP2FyZ3YwXG4gICAgICAgICAgfnByb2dcbiAgICAgICAgICB+YXJnc1xuICAgICAgICAgIH5lbnY6KGNvbnZlcnRfZW52IGVudilcbiAgICAgICAgICAoKVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgb3BlbiBGb3JfdW5peF93aXRoX2NvbW1hbmRfZW52X3ZhclxuXG4gICgqIENsZWFyIHRoZSBzZXR0aW5nIG9mIGVudmlyb25tZW50IHZhcmlhYmxlIGFzc29jaWF0ZWQgd2l0aCBjb21tYW5kLWxpbmVcbiAgICAgY29tcGxldGlvbiBhbmQgcmVjdXJzaXZlIGhlbHAgc28gdGhhdCBzdWJwcm9jZXNzZXMgZG9uJ3Qgc2VlIHRoZW0uXG5cbiAgICAgVXNlIFt1bnNhZmVfZ2V0ZW52XSBzbyBzZXR1aWQtcm9vdCBwcm9ncmFtcyBjYW4gc3RpbGwgcmVhZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAgIFRoZXJlIGlzIG5vIHNlY3VyaXR5IHJpc2sgaGVyZSBiZWNhdXNlIHRoZSB2YWx1ZXMgYXJlIG9ubHkgdXNlZCBhcyB0cmlnZ2VycyB0byBkdW1wXG4gICAgIG91dCBjb21tYW5kIGluZm9ybWF0aW9uLiAqKVxuICBsZXQgZ2V0ZW52X2FuZF9jbGVhciB2YXIgPVxuICAgIGxldCB2YWx1ZSA9IFVuaXgudW5zYWZlX2dldGVudiB2YXIgaW5cbiAgICBpZiBPcHRpb24uaXNfc29tZSB2YWx1ZSB0aGVuIFVuaXgudW5zZXRlbnYgdmFyO1xuICAgIHZhbHVlXG4gIDs7XG5cbiAgbGV0IG1heWJlX2NvbXBfY3dvcmQgKCkgPSBnZXRlbnZfYW5kX2NsZWFyIGNvbXBfY3dvcmQgfD4gT3B0aW9uLm1hcCB+ZjpJbnQub2Zfc3RyaW5nXG5cbiAgbGV0IHNldF9jb21wX2N3b3JkIG5ld192YWx1ZSA9XG4gICAgbGV0IG5ld192YWx1ZSA9IEludC50b19zdHJpbmcgbmV3X3ZhbHVlIGluXG4gICAgVW5peC5wdXRlbnYgfmtleTpjb21wX2N3b3JkIH5kYXRhOm5ld192YWx1ZVxuICA7O1xuXG4gIG1vZHVsZSBFeGVjID0gc3RydWN0XG4gICAgaW5jbHVkZSBFeGVjXG5cbiAgICBsZXQgZXhlY193aXRoX2FyZ3MgdCB+YXJncyB+bWF5YmVfbmV3X2NvbXBfY3dvcmQgPVxuICAgICAgbGV0IHByb2cgPSBhYnNfcGF0aCB+ZGlyOnQud29ya2luZ19kaXIgdC5wYXRoX3RvX2V4ZSBpblxuICAgICAgbGV0IGFyZ3MgPSB0LmNoaWxkX3N1YmNvbW1hbmQgQCBhcmdzIGluXG4gICAgICBsZXQgZW52ID0gdC5lbnYgaW5cbiAgICAgIE9wdGlvbi5pdGVyIG1heWJlX25ld19jb21wX2N3b3JkIH5mOihmdW4gbiAtPlxuICAgICAgICAoKiBUaGUgbG9naWMgZm9yIHRyYWNraW5nIFttYXliZV9uZXdfY29tcF9jd29yZF0gZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCB3aGV0aGVyXG4gICAgICAgICAgIHRoaXMgZXhlYyBzcGVjaWZpZXMgYSBjaGlsZCBzdWJjb21tYW5kLiBJZiBpdCBkb2VzLCBDT01QX0NXT1JEIG5lZWRzIHRvIGJlIHNldFxuICAgICAgICAgICBoaWdoZXIgdG8gYWNjb3VudCBmb3IgdGhlIGFyZ3VtZW50cyB1c2VkIHRvIHNwZWNpZnkgdGhlIGNoaWxkIHN1YmNvbW1hbmQuICopXG4gICAgICAgIHNldF9jb21wX2N3b3JkIChuICsgTGlzdC5sZW5ndGggdC5jaGlsZF9zdWJjb21tYW5kKSk7XG4gICAgICBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGVcbiAgICAgICAgKEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXIuVW5peC5leGVjID9lbnYgfnByb2cgfmFyZ3Y6KHByb2cgOjogYXJncykgKCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTaGFwZS5TZXhwYWJsZVxuXG4gICAgbGV0IHJlYWRfc3Rkb3V0X2FuZF9zdGRlcnIgKHByb2Nlc3NfaW5mbyA6IFVuaXguUHJvY2Vzc19pbmZvLnQpID1cbiAgICAgICgqIFdlIG5lZWQgdG8gcmVhZCBlYWNoIG9mIHN0ZG91dCBhbmQgc3RkZXJyIGluIGEgc2VwYXJhdGUgdGhyZWFkIHRvIGF2b2lkIGRlYWRsb2Nrc1xuICAgICAgICAgaWYgdGhlIGNoaWxkIHByb2Nlc3MgZGVjaWRlcyB0byB3YWl0IGZvciBhIHJlYWQgb24gb25lIGJlZm9yZSBjbG9zaW5nIHRoZSBvdGhlci5cbiAgICAgICAgIEJ1ZmZlcmluZyBtYXkgaGlkZSB0aGlzIHByb2JsZW0gdW50aWwgb3V0cHV0IGlzIFwic3VmZmljaWVudGx5IGxhcmdlXCIuICopXG4gICAgICBsZXQgc3RhcnRfcmVhZGluZyBkZXNjciBpbmZvID1cbiAgICAgICAgbGV0IG91dHB1dCA9IHJlZiBOb25lIGluXG4gICAgICAgIGxldCB0aHJlYWQgPVxuICAgICAgICAgIFRocmVhZC5jcmVhdGVcbiAgICAgICAgICAgIH5vbl91bmNhdWdodF9leG46YFByaW50X3RvX3N0ZGVyclxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgZGVzY3IgfD4gVW5peC5pbl9jaGFubmVsX29mX2Rlc2NyIHw+IEluX2NoYW5uZWwuaW5wdXRfYWxsKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIG91dHB1dCA6PSBTb21lIHJlc3VsdClcbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgIFN0YWdlZC5zdGFnZSAoZnVuICgpIC0+XG4gICAgICAgICAgVGhyZWFkLmpvaW4gdGhyZWFkO1xuICAgICAgICAgIFVuaXguY2xvc2UgZGVzY3I7XG4gICAgICAgICAgbWF0Y2ggIW91dHB1dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiQlVHIGZhaWxlZCB0byByZWFkXCIgKGluZm8gOiBJbmZvLnQpXVxuICAgICAgICAgIHwgU29tZSAoT2sgb3V0cHV0KSAtPiBvdXRwdXRcbiAgICAgICAgICB8IFNvbWUgKEVycm9yIGV4bikgLT4gcmFpc2UgZXhuKVxuICAgICAgaW5cbiAgICAgICgqIFdlIG1pZ2h0IGhhbmcgZm9yZXZlciB0cnlpbmcgdG8gam9pbiB0aGUgcmVhZGluZyB0aHJlYWRzIGlmIHRoZSBjaGlsZCBwcm9jZXNzIGtlZXBzXG4gICAgICAgICB0aGUgZmlsZSBkZXNjcmlwdG9yIG9wZW4uIE5vdCBoYW5kbGluZyB0aGlzIGJlY2F1c2UgSSB0aGluayB3ZSd2ZSBuZXZlciBzZWVuIGl0XG4gICAgICAgICBpbiB0aGUgd2lsZCBkZXNwaXRlIHJ1bm5pbmcgdnVsbmVyYWJsZSBjb2RlIGZvciB5ZWFycy4gKilcbiAgICAgICgqIFdlIGhhdmUgdG8gc3RhcnQgYm90aCB0aHJlYWRzIGJlZm9yZSBqb2luaW5nIGFueSBvZiB0aGVtLiAqKVxuICAgICAgbGV0IGZpbmlzaF9zdGRvdXQgPSBzdGFydF9yZWFkaW5nIHByb2Nlc3NfaW5mby5zdGRvdXQgKEluZm8ub2Zfc3RyaW5nIFwic3Rkb3V0XCIpIGluXG4gICAgICBsZXQgZmluaXNoX3N0ZGVyciA9IHN0YXJ0X3JlYWRpbmcgcHJvY2Vzc19pbmZvLnN0ZGVyciAoSW5mby5vZl9zdHJpbmcgXCJzdGRlcnJcIikgaW5cbiAgICAgIFN0YWdlZC51bnN0YWdlIGZpbmlzaF9zdGRvdXQgKCksIFN0YWdlZC51bnN0YWdlIGZpbmlzaF9zdGRlcnIgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2V4dGVybmFsIH53b3JraW5nX2RpciB+cGF0aF90b19leGUgfmNoaWxkX3N1YmNvbW1hbmQgPVxuICAgICAgbGV0IHByb2Nlc3NfaW5mbyA9XG4gICAgICAgIFVuaXguY3JlYXRlX3Byb2Nlc3NfZW52XG4gICAgICAgICAgKClcbiAgICAgICAgICB+cHJvZzooYWJzX3BhdGggfmRpcjp3b3JraW5nX2RpciBwYXRoX3RvX2V4ZSlcbiAgICAgICAgICB+YXJnczpjaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICAgfmVudjpcbiAgICAgICAgICAgIChsZXQgaGVscF9zZXhwID1cbiAgICAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucyB8PiBTZXQuc2V4cF9vZl9tX190IChtb2R1bGUgSW50KSB8PiBTZXhwLnRvX3N0cmluZ1xuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgYEV4dGVuZCBbIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUCwgaGVscF9zZXhwIF0pXG4gICAgICBpblxuICAgICAgVW5peC5jbG9zZSBwcm9jZXNzX2luZm8uc3RkaW47XG4gICAgICBsZXQgc3Rkb3V0LCBzdGRlcnIgPSByZWFkX3N0ZG91dF9hbmRfc3RkZXJyIHByb2Nlc3NfaW5mbyBpblxuICAgICAgVW5peC53YWl0IHByb2Nlc3NfaW5mby5waWQ7XG4gICAgICAoKiBOb3cgd2UndmUga2lsbGVkIGFsbCB0aGUgcHJvY2Vzc2VzIGFuZCB0aHJlYWRzIHdlIG1hZGUuICopXG4gICAgICBtYXRjaCBzdGRvdXQgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZyB8PiBWZXJzaW9uZWQudF9vZl9zZXhwIHw+IG9mX3ZlcnNpb25lZCB3aXRoXG4gICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJjYW5ub3QgcGFyc2UgY29tbWFuZCBzaGFwZVwiXG4gICAgICAgICAgICAgIH5fOihleG4gOiBleG4pXG4gICAgICAgICAgICAgIChzdGRvdXQgOiBzdHJpbmcpXG4gICAgICAgICAgICAgIChzdGRlcnIgOiBzdHJpbmcpXVxuICAgICAgfCB0IC0+IHRcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBmaW5kICh0IDogdCkgfnBhdGhfdG9fc3ViY29tbWFuZCA9XG4gICAgICBtYXRjaCBwYXRoX3RvX3N1YmNvbW1hbmQgd2l0aFxuICAgICAgfCBbXSAtPiB0XG4gICAgICB8IHN1YiA6OiBzdWJzIC0+XG4gICAgICAgIChtYXRjaCB0IHdpdGhcbiAgICAgICAgIHwgQmFzZSBfIC0+IGZhaWx3aXRoZiBcInVuZXhwZWN0ZWQgc3ViY29tbWFuZCAlU1wiIHN1YiAoKVxuICAgICAgICAgfCBMYXp5IHRodW5rIC0+IGZpbmQgKExhenkuZm9yY2UgdGh1bmspIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgICAgICAgIHwgRXhlYyB7IHBhdGhfdG9fZXhlOyB3b3JraW5nX2RpcjsgY2hpbGRfc3ViY29tbWFuZDsgXyB9IC0+XG4gICAgICAgICAgIGZpbmRcbiAgICAgICAgICAgICAob2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZClcbiAgICAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kOihzdWIgOjogKHN1YnMgQCBjaGlsZF9zdWJjb21tYW5kKSlcbiAgICAgICAgIHwgR3JvdXAgZyAtPlxuICAgICAgICAgICAobWF0Y2ggTGlzdC5Bc3NvYy5maW5kIChMYXp5LmZvcmNlIGcuc3ViY29tbWFuZHMpIH5lcXVhbDpTdHJpbmcuZXF1YWwgc3ViIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJ1bmtub3duIHN1YmNvbW1hbmQgJVNcIiBzdWIgKClcbiAgICAgICAgICAgIHwgU29tZSB0IC0+IGZpbmQgdCB+cGF0aF90b19zdWJjb21tYW5kOnN1YnMpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBwcm94eV9vZl9leGUgfndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlIGNoaWxkX3N1YmNvbW1hbmQgPVxuICAgIFNleHBhYmxlLm9mX2V4dGVybmFsIH53b3JraW5nX2RpciB+cGF0aF90b19leGUgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICB8PiBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICB+cGF0aF90b19leGVcbiAgICAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kOltdXG4gIDs7XG5cbiAgbGV0IHJlYyBzaGFwZV9vZl9wcm94eSBwcm94eSA6IFNoYXBlLnQgPSBzaGFwZV9vZl9wcm94eV9raW5kIHByb3h5LlByb3h5LmtpbmRcblxuICBhbmQgc2hhcGVfb2ZfZXhlICgpIH5jaGlsZF9zdWJjb21tYW5kIH5wYXRoX3RvX2V4ZSB+d29ya2luZ19kaXIgPVxuICAgIHNoYXBlX29mX3Byb3h5IChwcm94eV9vZl9leGUgfndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlIGNoaWxkX3N1YmNvbW1hbmQpXG5cbiAgYW5kIHNoYXBlX29mX3Byb3h5X2tpbmQga2luZCA9XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgfCBCYXNlIGIgLT4gQmFzaWMgYlxuICAgIHwgTGF6eSBsIC0+IExhenkgKExhenkubWFwIH5mOnNoYXBlX29mX3Byb3h5X2tpbmQgbClcbiAgICB8IEdyb3VwIGcgLT5cbiAgICAgIEdyb3VwXG4gICAgICAgIHsgZyB3aXRoXG4gICAgICAgICAgc3ViY29tbWFuZHMgPSBMYXp5Lm1hcCBnLnN1YmNvbW1hbmRzIH5mOihMaXN0LkFzc29jLm1hcCB+ZjpzaGFwZV9vZl9wcm94eSlcbiAgICAgICAgfVxuICAgIHwgRXhlYyAoeyBjaGlsZF9zdWJjb21tYW5kOyBwYXRoX3RvX2V4ZTsgd29ya2luZ19kaXI7IF8gfSBhcyBlKSAtPlxuICAgICAgRXhlYyAoZSwgc2hhcGVfb2ZfZXhlIH5jaGlsZF9zdWJjb21tYW5kIH5wYXRoX3RvX2V4ZSB+d29ya2luZ19kaXIpXG4gIDs7XG5cbiAgbGV0IHJlYyBzaGFwZSB0IDogU2hhcGUudCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBCYXNlIGIgLT4gQmFzaWMgKENvbW1hbmRfYmFzZS5zaGFwZSBiKVxuICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXAuc2hhcGUgfnN1YmNvbW1hbmRfdG9fc2hhcGU6c2hhcGUgZylcbiAgICB8IEV4ZWMgKHsgRXhlYy5jaGlsZF9zdWJjb21tYW5kOyBwYXRoX3RvX2V4ZTsgd29ya2luZ19kaXI7IF8gfSBhcyBlKSAtPlxuICAgICAgRXhlYyAoRXhlYy5zaGFwZSBlLCBzaGFwZV9vZl9leGUgfmNoaWxkX3N1YmNvbW1hbmQgfnBhdGhfdG9fZXhlIH53b3JraW5nX2RpcilcbiAgICB8IExhenkgdGh1bmsgLT4gc2hhcGUgKExhenkuZm9yY2UgdGh1bmspXG4gIDs7XG5cbiAgbGV0IGdhdGhlcl9oZWxwIH5yZWN1cnNpdmUgfmZsYWdzIH5leHBhbmRfZG90cyBzaGFwZSA9XG4gICAgbGV0IHJlYyBsb29wIHBhdGggYWNjIHNoYXBlID1cbiAgICAgIGxldCBzdHJpbmdfb2ZfcGF0aCA9IGlmIGV4cGFuZF9kb3RzIHRoZW4gUGF0aC50b19zdHJpbmcgZWxzZSBQYXRoLnRvX3N0cmluZ19kb3RzIGluXG4gICAgICBsZXQgZ2F0aGVyX2dyb3VwIHBhdGggYWNjIHN1YmNvbW1hbmRzID1cbiAgICAgICAgbGV0IGZpbHRlcmVkX3N1YmNvbW1hbmRzID1cbiAgICAgICAgICAoKiBPbmx5IHNob3cgdGhlIFtoZWxwXSBzdWJjb21tYW5kIGF0IHRvcC1sZXZlbC4gKilcbiAgICAgICAgICBpZiBQYXRoLmlzX2VtcHR5IHBhdGhcbiAgICAgICAgICB0aGVuIHN1YmNvbW1hbmRzXG4gICAgICAgICAgZWxzZSBMaXN0LkFzc29jLnJlbW92ZSB+ZXF1YWw6U3RyaW5nLiggPSApIHN1YmNvbW1hbmRzIFwiaGVscFwiXG4gICAgICAgIGluXG4gICAgICAgIGZpbHRlcmVkX3N1YmNvbW1hbmRzXG4gICAgICAgIHw+IExpc3Quc3RhYmxlX3NvcnQgfmNvbXBhcmU6KGZ1biBhIGIgLT4gaGVscF9zY3JlZW5fY29tcGFyZSAoZnN0IGEpIChmc3QgYikpXG4gICAgICAgIHw+IExpc3QuZm9sZCB+aW5pdDphY2MgfmY6KGZ1biBhY2MgKHN1YmNvbW1hbmQsIHNoYXBlKSAtPlxuICAgICAgICAgIGxldCBwYXRoID0gUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZCBpblxuICAgICAgICAgIGxldCBuYW1lID0gc3RyaW5nX29mX3BhdGggcGF0aCBpblxuICAgICAgICAgIGxldCBkb2MgPSBTaGFwZS5nZXRfc3VtbWFyeSBzaGFwZSBpblxuICAgICAgICAgIGxldCBhY2MgPSB7IFNoYXBlLkZsYWdfaW5mby5uYW1lOyBkb2M7IGFsaWFzZXMgPSBbXSB9IDo6IGFjYyBpblxuICAgICAgICAgIGlmIHJlY3Vyc2l2ZSB0aGVuIGxvb3AgcGF0aCBhY2Mgc2hhcGUgZWxzZSBhY2MpXG4gICAgICBpblxuICAgICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgICAgfCBFeGVjIChfLCBzaGFwZSkgLT5cbiAgICAgICAgKCogSWYgdGhlIGV4ZWN1dGFibGUgYmVpbmcgY2FsbGVkIGRvZXNuJ3QgdXNlIFtDb3JlLkNvbW1hbmRdLCB0aGVuIHNleHAgZXh0cmFjdGlvblxuICAgICAgICAgICB3aWxsIGZhaWwuICopXG4gICAgICAgICh0cnkgbG9vcCBwYXRoIGFjYyAoc2hhcGUgKCkpIHdpdGhcbiAgICAgICAgIHwgXyAtPiBhY2MpXG4gICAgICB8IEdyb3VwIGcgLT4gZ2F0aGVyX2dyb3VwIHBhdGggYWNjIChMYXp5LmZvcmNlIGcuc3ViY29tbWFuZHMpXG4gICAgICB8IEJhc2ljIGIgLT5cbiAgICAgICAgaWYgZmxhZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIGIuZmxhZ3NcbiAgICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIGZtdCAtPiBTdHJpbmcuKCA8PiApIGZtdC5uYW1lIFwiWy1oZWxwXVwiKVxuICAgICAgICAgIHw+IExpc3QuZm9sZCB+aW5pdDphY2MgfmY6KGZ1biBhY2MgZm10IC0+XG4gICAgICAgICAgICBsZXQgcGF0aCA9IFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQ6Zm10Lm5hbWUgaW5cbiAgICAgICAgICAgIGxldCBmbXQgPSB7IGZtdCB3aXRoIG5hbWUgPSBzdHJpbmdfb2ZfcGF0aCBwYXRoIH0gaW5cbiAgICAgICAgICAgIGZtdCA6OiBhY2MpXG4gICAgICAgIGVsc2UgYWNjXG4gICAgICB8IExhenkgdGh1bmsgLT4gbG9vcCBwYXRoIGFjYyAoTGF6eS5mb3JjZSB0aHVuaylcbiAgICBpblxuICAgIGxvb3AgUGF0aC5lbXB0eSBbXSBzaGFwZSB8PiBMaXN0LnJldlxuICA7O1xuXG4gIGxldCBncm91cF9vcl9leGVjX2hlbHBfdGV4dCB+ZmxhZ3MgfnBhdGggfnN1bW1hcnkgfnJlYWRtZSB+Zm9ybWF0X2xpc3QgPVxuICAgIHVucGFyYWdyYXBoc1xuICAgICAgKExpc3QuZmlsdGVyX29wdFxuICAgICAgICAgWyBTb21lIHN1bW1hcnlcbiAgICAgICAgIDsgU29tZSAoU3RyaW5nLmNvbmNhdCBbIFwiICBcIjsgUGF0aC50b19zdHJpbmcgcGF0aDsgXCIgU1VCQ09NTUFORFwiIF0pXG4gICAgICAgICA7IHJlYWRtZVxuICAgICAgICAgOyBTb21lIChpZiBmbGFncyB0aGVuIFwiPT09IHN1YmNvbW1hbmRzIGFuZCBmbGFncyA9PT1cIiBlbHNlIFwiPT09IHN1YmNvbW1hbmRzID09PVwiKVxuICAgICAgICAgOyBTb21lIChTaGFwZS5GbGFnX2hlbHBfZGlzcGxheS50b19zdHJpbmcgZm9ybWF0X2xpc3QpXG4gICAgICAgICBdKVxuICA7O1xuXG4gIGxldCByZWMgaGVscF9mb3Jfc2hhcGUgc2hhcGUgcGF0aCB+ZXhwYW5kX2RvdHMgfmZsYWdzIH5yZWN1cnNpdmUgPVxuICAgIGxldCBmb3JtYXRfbGlzdCA9IGdhdGhlcl9oZWxwIH5leHBhbmRfZG90cyB+ZmxhZ3MgfnJlY3Vyc2l2ZSBzaGFwZSBpblxuICAgIG1hdGNoIHNoYXBlIHdpdGhcbiAgICB8IEJhc2ljIGIgLT5cbiAgICAgIGxldCB1c2FnZSA9IFNoYXBlLkJhc2VfaW5mby5nZXRfdXNhZ2UgYiBpblxuICAgICAgdW5wYXJhZ3JhcGhzXG4gICAgICAgIChMaXN0LmZpbHRlcl9vcHRcbiAgICAgICAgICAgWyBTb21lIGIuc3VtbWFyeVxuICAgICAgICAgICA7IFNvbWUgKFwiICBcIiBeIFBhdGgudG9fc3RyaW5nIHBhdGggXiBcIiBcIiBeIHVzYWdlKVxuICAgICAgICAgICA7IGIucmVhZG1lXG4gICAgICAgICAgIDsgU29tZSBcIj09PSBmbGFncyA9PT1cIlxuICAgICAgICAgICA7IFNvbWUgKFNoYXBlLkZsYWdfaGVscF9kaXNwbGF5LnRvX3N0cmluZyBiLmZsYWdzKVxuICAgICAgICAgICBdKVxuICAgIHwgR3JvdXAgZyAtPlxuICAgICAgZ3JvdXBfb3JfZXhlY19oZWxwX3RleHRcbiAgICAgICAgfmZsYWdzXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5yZWFkbWU6Zy5yZWFkbWVcbiAgICAgICAgfnN1bW1hcnk6Zy5zdW1tYXJ5XG4gICAgICAgIH5mb3JtYXRfbGlzdFxuICAgIHwgRXhlYyAoZSwgXykgLT5cbiAgICAgIGdyb3VwX29yX2V4ZWNfaGVscF90ZXh0XG4gICAgICAgIH5mbGFnc1xuICAgICAgICB+cGF0aFxuICAgICAgICB+cmVhZG1lOmUucmVhZG1lXG4gICAgICAgIH5zdW1tYXJ5OmUuc3VtbWFyeVxuICAgICAgICB+Zm9ybWF0X2xpc3RcbiAgICB8IExhenkgdGh1bmsgLT4gaGVscF9mb3Jfc2hhcGUgKExhenkuZm9yY2UgdGh1bmspIHBhdGggfmV4cGFuZF9kb3RzIH5mbGFncyB+cmVjdXJzaXZlXG4gIDs7XG5cbiAgbGV0IGhlbHBfc3ViY29tbWFuZCB+c3VtbWFyeSB+cmVhZG1lID1cbiAgICBiYXNpY1xuICAgICAgfnN1bW1hcnk6XCJleHBsYWluIGEgZ2l2ZW4gc3ViY29tbWFuZCAocGVyaGFwcyByZWN1cnNpdmVseSlcIlxuICAgICAgQ29tbWFuZF9iYXNlLlBhcmFtLihcbiAgICAgICAgcmV0dXJuIChmdW4gcmVjdXJzaXZlIGZsYWdzIGV4cGFuZF9kb3RzIHBhdGggKGVudiA6IEVudi50KSBjbWRfb3B0ICgpIC0+XG4gICAgICAgICAgbGV0IHN1YnMgPVxuICAgICAgICAgICAgbWF0Y2ggRW52LmZpbmQgZW52IHN1YnNfa2V5IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBzdWJzIC0+IHN1YnNcbiAgICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICgqIG1haW50YWluZWQgYnkgW2Rpc3BhdGNoXSAqKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHBhdGggPVxuICAgICAgICAgICAgbGV0IHBhdGggPSBQYXRoLnBvcF9oZWxwIHBhdGggaW5cbiAgICAgICAgICAgIE9wdGlvbi5mb2xkIGNtZF9vcHQgfmluaXQ6cGF0aCB+ZjooZnVuIHBhdGggc3ViY29tbWFuZCAtPlxuICAgICAgICAgICAgICBQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHBhdGgsIHNoYXBlID1cbiAgICAgICAgICAgIG1hdGNoIGNtZF9vcHQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBzdWJjb21tYW5kcyA9IExpc3QuQXNzb2MubWFwIHN1YnMgfmY6c2hhcGUgfD4gTGF6eS5mcm9tX3ZhbCBpblxuICAgICAgICAgICAgICBsZXQgcmVhZG1lID0gT3B0aW9uLm1hcCByZWFkbWUgfmY6KGZ1biByZWFkbWUgLT4gcmVhZG1lICgpKSBpblxuICAgICAgICAgICAgICBwYXRoLCBTaGFwZS5Hcm91cCB7IHJlYWRtZTsgc3VtbWFyeTsgc3ViY29tbWFuZHMgfVxuICAgICAgICAgICAgfCBTb21lIGNtZCAtPlxuICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgbG9va3VwX2V4cGFuZFxuICAgICAgICAgICAgICAgICAgIChMaXN0LkFzc29jLm1hcCBzdWJzIH5mOihmdW4geCAtPiB4LCBgUHJlZml4KSlcbiAgICAgICAgICAgICAgICAgICBjbWRcbiAgICAgICAgICAgICAgICAgICBTdWJjb21tYW5kXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIGUgLT5cbiAgICAgICAgICAgICAgICAgZGllXG4gICAgICAgICAgICAgICAgICAgXCJ1bmtub3duIHN1YmNvbW1hbmQgJXMgZm9yIGNvbW1hbmQgJXM6ICVzXCJcbiAgICAgICAgICAgICAgICAgICBjbWRcbiAgICAgICAgICAgICAgICAgICAoUGF0aC50b19zdHJpbmcgcGF0aClcbiAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgIHwgT2sgKHBvc3NpYmx5X2V4cGFuZGVkX25hbWUsIHQpIC0+XG4gICAgICAgICAgICAgICAgICgqIEZpeCB0aGUgdW5leHBhbmRlZCB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICBsZXQgcGF0aCA9XG4gICAgICAgICAgICAgICAgICAgUGF0aC5yZXBsYWNlX2ZpcnN0IH5mcm9tOmNtZCB+dG9fOnBvc3NpYmx5X2V4cGFuZGVkX25hbWUgcGF0aFxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBwYXRoLCBzaGFwZSB0KVxuICAgICAgICAgIGluXG4gICAgICAgICAgcHJpbnRfZW5kbGluZSAoaGVscF9mb3Jfc2hhcGUgc2hhcGUgcGF0aCB+cmVjdXJzaXZlIH5mbGFncyB+ZXhwYW5kX2RvdHMpKVxuICAgICAgICA8Kj4gZmxhZyBcIi1yZWN1cnNpdmVcIiBub19hcmcgfmRvYzpcIiBzaG93IHN1YmNvbW1hbmRzIG9mIHN1YmNvbW1hbmRzLCBldGMuXCJcbiAgICAgICAgPCo+IGZsYWcgXCItZmxhZ3NcIiBub19hcmcgfmRvYzpcIiBzaG93IGZsYWdzIGFzIHdlbGwgaW4gcmVjdXJzaXZlIGhlbHBcIlxuICAgICAgICA8Kj4gZmxhZyBcIi1leHBhbmQtZG90c1wiIG5vX2FyZyB+ZG9jOlwiIGV4cGFuZCBzdWJjb21tYW5kcyBpbiByZWN1cnNpdmUgaGVscFwiXG4gICAgICAgIDwqPiBwYXRoXG4gICAgICAgIDwqPiBlbnZcbiAgICAgICAgPCo+IGFub24gKG1heWJlIChcIlNVQkNPTU1BTkRcIiAlOiBzdHJpbmcpKSlcbiAgOztcblxuICAoKiBUaGlzIHNjcmlwdCB3b3JrcyBpbiBib3RoIGJhc2ggKHZpYSByZWFkYXJyYXkpIGFuZCB6c2ggKHZpYSByZWFkIC1BKS4gIElmIHlvdSBjaGFuZ2VcbiAgICAgaXQsIHBsZWFzZSB0ZXN0IGluIGJvdGggYmFzaCBhbmQgenNoLiAgSXQgZG9lcyBub3Qgd29yayB0Y3NoIChkaWZmZXJlbnQgZnVuY3Rpb25cbiAgICAgc3ludGF4KS4gKilcbiAgbGV0IGR1bXBfYXV0b2NvbXBsZXRlX2Z1bmN0aW9uICgpID1cbiAgICBsZXQgZm5hbWUgPSBzcHJpbnRmIFwiX2pzYXV0b2NvbV8lc1wiIChQaWQudG9fc3RyaW5nIChVbml4LmdldHBpZCAoKSkpIGluXG4gICAgbGV0IGFyZ3ZfMCA9IFN0ZGxpYi5TeXMuYXJndi4oMCkgaW5cbiAgICBwcmludGZcbiAgICAgIFwiZnVuY3Rpb24gJXMge1xcblxcXG4gICAgICBcXCAgZXhwb3J0IENPTVBfQ1dPUkRcXG5cXFxuICAgICAgXFwgIENPTVBfV09SRFNbMF09JXNcXG5cXFxuICAgICAgXFwgIGlmIHR5cGUgcmVhZGFycmF5ID4gL2Rldi9udWxsXFxuXFxcbiAgICAgIFxcICB0aGVuIHJlYWRhcnJheSAtdCBDT01QUkVQTFkgPCA8KFxcXCIke0NPTVBfV09SRFNbQF19XFxcIilcXG5cXFxuICAgICAgXFwgIGVsc2UgSUZTPVxcXCJcXG5cXFxuICAgICAgIFxcXCIgcmVhZCAtZCBcXFwiXFxcIiAtQSBDT01QUkVQTFkgPCA8KFxcXCIke0NPTVBfV09SRFNbQF19XFxcIilcXG5cXFxuICAgICAgXFwgIGZpXFxuXFxcbiAgICAgICB9XFxuXFxcbiAgICAgICBjb21wbGV0ZSAtRiAlcyAlc1xcblxcXG4gICAgICAgJSFcIlxuICAgICAgZm5hbWVcbiAgICAgIGFyZ3ZfMFxuICAgICAgZm5hbWVcbiAgICAgIGFyZ3ZfMFxuICA7O1xuXG4gIGxldCBkdW1wX2hlbHBfc2V4cCB+c3VwcG9ydGVkX3ZlcnNpb25zIHQgfnBhdGhfdG9fc3ViY29tbWFuZCA9XG4gICAgU2V0LmludGVyIFNleHBhYmxlLnN1cHBvcnRlZF92ZXJzaW9ucyBzdXBwb3J0ZWRfdmVyc2lvbnNcbiAgICB8PiBTZXQubWF4X2VsdFxuICAgIHw+IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+XG4gICAgICBFcnJvci5jcmVhdGVcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIkNvdWxkbid0IGNob29zZSBhIHN1cHBvcnRlZCBoZWxwIG91dHB1dCB2ZXJzaW9uIGZvciBDb21tYW5kLmV4ZWMgZnJvbSB0aGUgZ2l2ZW4gXFxcbiAgICAgICAgIHN1cHBvcnRlZCB2ZXJzaW9ucy5cIlxuICAgICAgICBTZXhwYWJsZS5zdXBwb3J0ZWRfdmVyc2lvbnNcbiAgICAgICAgKFNldC5zZXhwX29mX21fX3QgKG1vZHVsZSBJbnQpKVxuICAgICAgfD4gRXJyb3IucmFpc2VcbiAgICB8IFNvbWUgdmVyc2lvbl90b191c2UgLT5cbiAgICAgIHNleHBhYmxlX3NoYXBlIHRcbiAgICAgIHw+IFNleHBhYmxlLmZpbmQgfnBhdGhfdG9fc3ViY29tbWFuZFxuICAgICAgfD4gU2V4cGFibGUudG9fdmVyc2lvbmVkIH52ZXJzaW9uX3RvX3VzZVxuICAgICAgfD4gU2V4cGFibGUuVmVyc2lvbmVkLnNleHBfb2ZfdFxuICAgICAgfD4gU2V4cC50b19zdHJpbmdcbiAgICAgIHw+IHByaW50X3N0cmluZ1xuICA7O1xuXG4gIGxldCBoYW5kbGVfZW52aXJvbm1lbnQgdCB+YXJndiA9XG4gICAgbWF0Y2ggYXJndiB3aXRoXG4gICAgfCBbXSAtPiBmYWlsd2l0aCBcIm1pc3NpbmcgZXhlY3V0YWJsZSBuYW1lXCJcbiAgICB8IGNtZCA6OiBhcmdzIC0+XG4gICAgICBPcHRpb24uaXRlciAoZ2V0ZW52X2FuZF9jbGVhciBDT01NQU5EX09VVFBVVF9IRUxQX1NFWFApIH5mOihmdW4gdmVyc2lvbiAtPlxuICAgICAgICBsZXQgc3VwcG9ydGVkX3ZlcnNpb25zID1cbiAgICAgICAgICBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHZlcnNpb24gfD4gU2V0Lm1fX3Rfb2Zfc2V4cCAobW9kdWxlIEludClcbiAgICAgICAgaW5cbiAgICAgICAgZHVtcF9oZWxwX3NleHAgfnN1cHBvcnRlZF92ZXJzaW9ucyB0IH5wYXRoX3RvX3N1YmNvbW1hbmQ6YXJncztcbiAgICAgICAgZXhpdCAwKTtcbiAgICAgIE9wdGlvbi5pdGVyIChnZXRlbnZfYW5kX2NsZWFyIENPTU1BTkRfT1VUUFVUX0lOU1RBTExBVElPTl9CQVNIKSB+ZjooZnVuIF8gLT5cbiAgICAgICAgZHVtcF9hdXRvY29tcGxldGVfZnVuY3Rpb24gKCk7XG4gICAgICAgIGV4aXQgMCk7XG4gICAgICBjbWQsIGFyZ3NcbiAgOztcblxuICBsZXQgcHJvY2Vzc19hcmdzIH5jbWQgfmFyZ3MgPVxuICAgIGxldCBtYXliZV9jb21wX2N3b3JkID0gbWF5YmVfY29tcF9jd29yZCAoKSBpblxuICAgIGxldCBhcmdzID1cbiAgICAgIG1hdGNoIG1heWJlX2NvbXBfY3dvcmQgd2l0aFxuICAgICAgfCBOb25lIC0+IENtZGxpbmUub2ZfbGlzdCBhcmdzXG4gICAgICB8IFNvbWUgY29tcF9jd29yZCAtPlxuICAgICAgICBsZXQgYXJncyA9IExpc3QudGFrZSAoYXJncyBAIFsgXCJcIiBdKSBjb21wX2N3b3JkIGluXG4gICAgICAgIExpc3QuZm9sZF9yaWdodCBhcmdzIH5pbml0OkNtZGxpbmUuTmlsIH5mOihmdW4gYXJnIGFyZ3MgLT5cbiAgICAgICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgICB8IENtZGxpbmUuTmlsIC0+IENtZGxpbmUuQ29tcGxldGUgYXJnXG4gICAgICAgICAgfCBfIC0+IENtZGxpbmUuQ29ucyAoYXJnLCBhcmdzKSlcbiAgICBpblxuICAgIFBhdGguY3JlYXRlIH5wYXRoX3RvX2V4ZTpjbWQsIGFyZ3MsIG1heWJlX2NvbXBfY3dvcmRcbiAgOztcblxuICBsZXQgcmVjIGFkZF9oZWxwX3N1YmNvbW1hbmRzID0gZnVuY3Rpb25cbiAgICB8IEJhc2UgXyBhcyB0IC0+IHRcbiAgICB8IEV4ZWMgXyBhcyB0IC0+IHRcbiAgICB8IEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kczsgYm9keSB9IC0+XG4gICAgICBsZXQgc3ViY29tbWFuZHMgPVxuICAgICAgICBMYXp5Lm1hcCBzdWJjb21tYW5kcyB+ZjooZnVuIHN1YmNvbW1hbmRzIC0+XG4gICAgICAgICAgZXh0ZW5kX2FsaXN0X2V4blxuICAgICAgICAgICAgKExpc3QuQXNzb2MubWFwIHN1YmNvbW1hbmRzIH5mOmFkZF9oZWxwX3N1YmNvbW1hbmRzKVxuICAgICAgICAgICAgS2V5X3R5cGUuU3ViY29tbWFuZFxuICAgICAgICAgICAgfmtleTpcImhlbHBcIlxuICAgICAgICAgICAgKGhlbHBfc3ViY29tbWFuZCB+c3VtbWFyeSB+cmVhZG1lKSlcbiAgICAgIGluXG4gICAgICBHcm91cCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHM7IGJvZHkgfVxuICAgIHwgTGF6eSB0aHVuayAtPiBMYXp5IChsYXp5IChhZGRfaGVscF9zdWJjb21tYW5kcyAoTGF6eS5mb3JjZSB0aHVuaykpKVxuICA7O1xuXG4gIGxldCBtYXliZV9hcHBseV9leHRlbmQgYXJncyB+ZXh0ZW5kIH5wYXRoID1cbiAgICBPcHRpb24udmFsdWVfbWFwIGV4dGVuZCB+ZGVmYXVsdDphcmdzIH5mOihmdW4gZiAtPlxuICAgICAgQ21kbGluZS5leHRlbmQgYXJncyB+ZXh0ZW5kOmYgfnBhdGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBkaXNwYXRjaFxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgZW52XG4gICAgICAgICAgICB+ZXh0ZW5kXG4gICAgICAgICAgICB+cGF0aFxuICAgICAgICAgICAgfmFyZ3NcbiAgICAgICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTGF6eSB0aHVuayAtPlxuICAgICAgbGV0IHQgPSBMYXp5LmZvcmNlIHRodW5rIGluXG4gICAgICBkaXNwYXRjaFxuICAgICAgICB0XG4gICAgICAgIGVudlxuICAgICAgICB+ZXh0ZW5kXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5hcmdzXG4gICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICB+dmVyc2lvblxuICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgIHwgQmFzZSBiYXNlIC0+XG4gICAgICBsZXQgYXJncyA9IG1heWJlX2FwcGx5X2V4dGVuZCBhcmdzIH5leHRlbmQgfnBhdGggaW5cbiAgICAgIGxldCBoZWxwX3RleHQgPVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKGhlbHBfZm9yX3NoYXBlIChzaGFwZSB0KSBwYXRoIH5yZWN1cnNpdmU6ZmFsc2UgfmZsYWdzOnRydWUgfmV4cGFuZF9kb3RzOmZhbHNlKVxuICAgICAgaW5cbiAgICAgIENvbW1hbmRfYmFzZS5ydW5cbiAgICAgICAgYmFzZVxuICAgICAgICBlbnZcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfmFyZ3NcbiAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgfmhlbHBfdGV4dFxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgIH5vbl9mYWlsdXJlOkNvbW1hbmRfYmFzZS5ydW5fZXhuXG4gICAgfCBFeGVjIGV4ZWMgLT5cbiAgICAgIGxldCBhcmdzID0gQ21kbGluZS50b19saXN0IChtYXliZV9hcHBseV9leHRlbmQgYXJncyB+ZXh0ZW5kIH5wYXRoKSBpblxuICAgICAgRXhlYy5leGVjX3dpdGhfYXJncyB+YXJncyBleGVjIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgIHwgR3JvdXAgKHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyA9IHN1YnM7IGJvZHkgfSBhcyBncm91cCkgLT5cbiAgICAgIGxldCBjb21wbGV0aW5nID0gQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3MgaW5cbiAgICAgIGxldCBlbnYgPSBFbnYuc2V0IGVudiB+a2V5OnN1YnNfa2V5IH5kYXRhOihMYXp5LmZvcmNlIHN1YnMpIGluXG4gICAgICBsZXQgZGllX3Nob3dpbmdfaGVscCBtc2cgPVxuICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgIHRoZW4gZXhpdCAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgIFwiJXNcXG4lIVwiXG4gICAgICAgICAgICAoaGVscF9mb3Jfc2hhcGVcbiAgICAgICAgICAgICAgIH5yZWN1cnNpdmU6ZmFsc2VcbiAgICAgICAgICAgICAgIH5mbGFnczpmYWxzZVxuICAgICAgICAgICAgICAgfmV4cGFuZF9kb3RzOmZhbHNlXG4gICAgICAgICAgICAgICAoc2hhcGUgKEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyA9IHN1YnM7IGJvZHkgfSkpXG4gICAgICAgICAgICAgICBwYXRoKTtcbiAgICAgICAgICBkaWUgXCIlc1wiIG1zZyAoKSlcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIHBhcnNlX2dyb3VwIGFyZ3Mgfm1heWJlX25ld19jb21wX2N3b3JkID1cbiAgICAgICAgbGV0IG1heWJlX25ld19jb21wX2N3b3JkID0gT3B0aW9uLm1hcCB+ZjpJbnQucHJlZCBtYXliZV9uZXdfY29tcF9jd29yZCBpblxuICAgICAgICBsZXQgc2tpcCByZXN0ID0gcGFyc2VfZ3JvdXAgcmVzdCB+bWF5YmVfbmV3X2NvbXBfY3dvcmQgaW5cbiAgICAgICAgbGV0IHJlc29sdmUgc3ViIHJlc3QgPVxuICAgICAgICAgIGxldCBzdWJzID0gTGlzdC5Bc3NvYy5tYXAgKExhenkuZm9yY2Ugc3VicykgfmY6KGZ1biB4IC0+IHgsIGBQcmVmaXgpIGluXG4gICAgICAgICAgbWF0Y2ggbG9va3VwX2V4cGFuZCBzdWJzIHN1YiBTdWJjb21tYW5kIHdpdGhcbiAgICAgICAgICB8IEVycm9yIG1zZyAtPiBkaWVfc2hvd2luZ19oZWxwIG1zZ1xuICAgICAgICAgIHwgT2sgKHN1YiwgdCkgLT5cbiAgICAgICAgICAgIGRpc3BhdGNoXG4gICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgZW52XG4gICAgICAgICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgICAgICAgfmV4dGVuZFxuICAgICAgICAgICAgICB+cGF0aDooUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZDpzdWIpXG4gICAgICAgICAgICAgIH5hcmdzOnJlc3RcbiAgICAgICAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaCAoYXJncyA6IENtZGxpbmUudCkgd2l0aFxuICAgICAgICB8IE5pbCAtPlxuICAgICAgICAgIChtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgZGllX3Nob3dpbmdfaGVscFxuICAgICAgICAgICAgICAgKHNwcmludGYgXCJtaXNzaW5nIHN1YmNvbW1hbmQgZm9yIGNvbW1hbmQgJXNcIiAoUGF0aC50b19zdHJpbmcgcGF0aCkpXG4gICAgICAgICAgIHwgU29tZSBib2R5IC0+IGJvZHkgfnBhdGg6KFBhdGgucGFydHNfZXhlX2Jhc2VuYW1lIHBhdGgpKVxuICAgICAgICB8IENvbnMgKHN1YiwgcmVzdCkgLT5cbiAgICAgICAgICAoKiBNYXRjaCBmb3IgZmxhZ3MgcmVjb2duaXplZCB3aGVuIHN1YmNvbW1hbmRzIGFyZSBleHBlY3RlZCBuZXh0ICopXG4gICAgICAgICAgKG1hdGNoIHN1YiB3aXRoXG4gICAgICAgICAgICgqIFJlY29nbml6ZWQgYXQgdGhlIHRvcCBsZXZlbCBjb21tYW5kIG9ubHkgKilcbiAgICAgICAgICAgfCAoXCItdmVyc2lvblwiIHwgXCItLXZlcnNpb25cIikgd2hlbiBQYXRoLmxlbmd0aCBwYXRoID0gMSAtPlxuICAgICAgICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgICAgICB0aGVuIHNraXAgcmVzdFxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgVmVyc2lvbl9pbmZvLnByaW50X3ZlcnNpb24gfnZlcnNpb247XG4gICAgICAgICAgICAgICBleGl0IDApXG4gICAgICAgICAgIHwgKFwiLWJ1aWxkLWluZm9cIiB8IFwiLS1idWlsZC1pbmZvXCIpIHdoZW4gUGF0aC5sZW5ndGggcGF0aCA9IDEgLT5cbiAgICAgICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgICAgICAgdGhlbiBza2lwIHJlc3RcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIFZlcnNpb25faW5mby5wcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvO1xuICAgICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgICAgICAoKiBSZWNvZ25pemVkIGV2ZXJ5d2hlcmUgKilcbiAgICAgICAgICAgfCBcIi1oZWxwXCIgfCBcIi0taGVscFwiIC0+XG4gICAgICAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICAgICAgIHRoZW4gc2tpcCByZXN0XG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgICAgIHwgTmlsIHwgQ29tcGxldGUgKF8gOiBzdHJpbmcpIC0+XG4gICAgICAgICAgICAgICAgIHByaW50X2VuZGxpbmVcbiAgICAgICAgICAgICAgICAgICAoaGVscF9mb3Jfc2hhcGVcbiAgICAgICAgICAgICAgICAgICAgICB+cmVjdXJzaXZlOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfmZsYWdzOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZF9kb3RzOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKHNoYXBlIChHcm91cCB7IGdyb3VwIHdpdGggc3ViY29tbWFuZHMgPSBzdWJzIH0pKVxuICAgICAgICAgICAgICAgICAgICAgIHBhdGgpO1xuICAgICAgICAgICAgICAgICBleGl0IDBcbiAgICAgICAgICAgICAgIHwgQ21kbGluZS5Db25zIChmaXJzdF9vZl9yZXN0LCByZXN0X29mX3Jlc3QpIC0+XG4gICAgICAgICAgICAgICAgIHJlc29sdmUgZmlyc3Rfb2ZfcmVzdCAoQ29ucyAoc3ViLCByZXN0X29mX3Jlc3QpKSlcbiAgICAgICAgICAgfCAoXyA6IHN0cmluZykgLT4gcmVzb2x2ZSBzdWIgcmVzdClcbiAgICAgICAgfCBDb21wbGV0ZSBwYXJ0IC0+XG4gICAgICAgICAgbGV0IHN1YnMgPVxuICAgICAgICAgICAgTGF6eS5mb3JjZSBzdWJzXG4gICAgICAgICAgICB8PiBMaXN0Lm1hcCB+Zjpmc3RcbiAgICAgICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gbmFtZSAtPiBTdHJpbmcuaXNfcHJlZml4IG5hbWUgfnByZWZpeDpwYXJ0KVxuICAgICAgICAgICAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOlN0cmluZy5jb21wYXJlXG4gICAgICAgICAgaW5cbiAgICAgICAgICAobWF0Y2ggY29tcGxldGVfc3ViY29tbWFuZHMgd2l0aFxuICAgICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgIGxldCBzdWJjb21tYW5kcyA9XG4gICAgICAgICAgICAgICBzaGFwZSB0IHw+IFNoYXBlLmZ1bGx5X2ZvcmNlZCB8PiBTaGFwZS5GdWxseV9mb3JjZWQuZXhwYW5kZWRfc3ViY29tbWFuZHNcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIChtYXRjaCBmIH5wYXRoOihQYXRoLnBhcnRzIHBhdGgpIH5wYXJ0IHN1YmNvbW1hbmRzIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGV4aXQgMVxuICAgICAgICAgICAgICB8IFNvbWUgdG9fb3V0cHV0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnRfZW5kbGluZSAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIHRvX291dHB1dCk7XG4gICAgICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBMaXN0Lml0ZXIgc3VicyB+ZjpwcmludF9lbmRsaW5lO1xuICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgIGluXG4gICAgICBwYXJzZV9ncm91cCBhcmdzIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICA7O1xuXG4gIGxldCBydW5cbiAgICAgICAgP3ZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgP3ZlcnNpb25cbiAgICAgICAgP2J1aWxkX2luZm9cbiAgICAgICAgPyhhcmd2ID0gQXJyYXkudG9fbGlzdCBTdGRsaWIuU3lzLmFyZ3YpXG4gICAgICAgID9leHRlbmRcbiAgICAgICAgPyh3aGVuX3BhcnNpbmdfc3VjY2VlZHMgPSBGbi5pZClcbiAgICAgICAgP2NvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICAgIHRcbiAgICA9XG4gICAgbGV0IGJ1aWxkX2luZm8gPVxuICAgICAgbWF0Y2ggYnVpbGRfaW5mbyB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBsYXp5IHZcbiAgICAgIHwgTm9uZSAtPiBWZXJzaW9uX2luZm8uZGVmYXVsdF9idWlsZF9pbmZvXG4gICAgaW5cbiAgICBsZXQgdmVyc2lvbiA9XG4gICAgICBtYXRjaCB2ZXJzaW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBWZXJzaW9uX2luZm8uZGVmYXVsdF92ZXJzaW9uXG4gICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAoKiBbdmVyc2lvbl0gd2FzIHNwYWNlIGRlbGltaXRlZCBhdCBzb21lIHBvaW50IGFuZCBuZXdsaW5lIGRlbGltaXRlZFxuICAgICAgICAgICBhdCBhbm90aGVyLiAgV2UgYWx3YXlzIHByaW50IG9uZSAocmVwbywgcmV2aXNpb24pIHBhaXIgcGVyIGxpbmVcbiAgICAgICAgICAgYW5kIGVuc3VyZSBzb3J0ZWQgb3JkZXIgKilcbiAgICAgICAgbGF6eVxuICAgICAgICAgIChWZXJzaW9uX2luZm8ubm9ybWFsaXplX3ZlcnNpb25fbGluZXNcbiAgICAgICAgICAgICAoU3RyaW5nLnNwbGl0IHYgfm9uOicgJyB8PiBMaXN0LmNvbmNhdF9tYXAgfmY6KFN0cmluZy5zcGxpdCB+b246J1xcbicpKSlcbiAgICBpblxuICAgIEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPlxuICAgICAgbGV0IHQgPSBWZXJzaW9uX2luZm8uYWRkIHQgfnZlcnNpb24gfmJ1aWxkX2luZm8gaW5cbiAgICAgIGxldCB0ID0gYWRkX2hlbHBfc3ViY29tbWFuZHMgdCBpblxuICAgICAgbGV0IGNtZCwgYXJncyA9IGhhbmRsZV9lbnZpcm9ubWVudCB0IH5hcmd2IGluXG4gICAgICBsZXQgcGF0aCwgYXJncywgbWF5YmVfbmV3X2NvbXBfY3dvcmQgPSBwcm9jZXNzX2FyZ3MgfmNtZCB+YXJncyBpblxuICAgICAgdHJ5XG4gICAgICAgIGRpc3BhdGNoXG4gICAgICAgICAgdFxuICAgICAgICAgIEVudi5lbXB0eVxuICAgICAgICAgIH5leHRlbmRcbiAgICAgICAgICB+cGF0aFxuICAgICAgICAgIH5hcmdzXG4gICAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgICAgd2l0aFxuICAgICAgfCBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG1zZyAtPlxuICAgICAgICBpZiBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJnc1xuICAgICAgICB0aGVuIGV4aXQgMFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBwcmVycl9lbmRsaW5lIG1zZztcbiAgICAgICAgICBleGl0IDEpKVxuICA7O1xuXG4gIGxldCBkZXByZWNhdGVkX3J1biB0IH5jbWQgfmFyZ3MgfmlzX2hlbHAgfmlzX2hlbHBfcmVjIH5pc19oZWxwX3JlY19mbGFncyB+aXNfZXhwYW5kX2RvdHNcbiAgICA9XG4gICAgbGV0IHBhdGhfc3RyaW5ncyA9IFN0cmluZy5zcGxpdCBjbWQgfm9uOicgJyBpblxuICAgIGxldCBwYXRoID0gUGF0aC5vZl9wYXJ0cyBwYXRoX3N0cmluZ3MgaW5cbiAgICBsZXQgYXJncyA9IGlmIGlzX2V4cGFuZF9kb3RzIHRoZW4gXCItZXhwYW5kLWRvdHNcIiA6OiBhcmdzIGVsc2UgYXJncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfaGVscF9yZWNfZmxhZ3MgdGhlbiBcIi1mbGFnc1wiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwX3JlYyB0aGVuIFwiLXJcIiA6OiBhcmdzIGVsc2UgYXJncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfaGVscCB0aGVuIFwiLWhlbHBcIiA6OiBhcmdzIGVsc2UgYXJncyBpblxuICAgIGxldCBhcmdzID0gQ21kbGluZS5vZl9saXN0IGFyZ3MgaW5cbiAgICBsZXQgdCA9IGFkZF9oZWxwX3N1YmNvbW1hbmRzIHQgaW5cbiAgICBkaXNwYXRjaFxuICAgICAgdFxuICAgICAgRW52LmVtcHR5XG4gICAgICB+cGF0aFxuICAgICAgfmFyZ3NcbiAgICAgIH5leHRlbmQ6Tm9uZVxuICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkOk5vbmVcbiAgICAgIH52ZXJzaW9uOlZlcnNpb25faW5mby5kZWZhdWx0X3ZlcnNpb25cbiAgICAgIH5idWlsZF9pbmZvOlZlcnNpb25faW5mby5kZWZhdWx0X2J1aWxkX2luZm9cbiAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yOk5vbmVcbiAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHM6Rm4uaWRcbiAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kczpOb25lXG4gIDs7XG5lbmRcblxubW9kdWxlIFBhcmFtID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlICsnYSB0XG5cbiAgICBpbmNsdWRlIEFwcGxpY2F0aXZlLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIGhlbHAgOiBzdHJpbmcgTGF6eS50IHRcbiAgICB2YWwgcGF0aCA6IHN0cmluZyBsaXN0IHRcbiAgICB2YWwgYXJncyA6IHN0cmluZyBsaXN0IHRcblxuICAgIHZhbCBmbGFnXG4gICAgICA6ICA/YWxpYXNlczpzdHJpbmcgbGlzdFxuICAgICAgLT4gP2Z1bGxfZmxhZ19yZXF1aXJlZDp1bml0XG4gICAgICAtPiBzdHJpbmdcbiAgICAgIC0+ICdhIEZsYWcudFxuICAgICAgLT4gZG9jOnN0cmluZ1xuICAgICAgLT4gJ2EgdFxuXG4gICAgdmFsIGZsYWdfb3B0aW9uYWxfd2l0aF9kZWZhdWx0X2RvY1xuICAgICAgOiAgP2FsaWFzZXM6c3RyaW5nIGxpc3RcbiAgICAgIC0+ID9mdWxsX2ZsYWdfcmVxdWlyZWQ6dW5pdFxuICAgICAgLT4gc3RyaW5nXG4gICAgICAtPiAnYSBBcmdfdHlwZS50XG4gICAgICAtPiAoJ2EgLT4gU2V4cC50KVxuICAgICAgLT4gZGVmYXVsdDonYVxuICAgICAgLT4gZG9jOnN0cmluZ1xuICAgICAgLT4gJ2EgdFxuXG4gICAgdmFsIGFub24gOiAnYSBBbm9ucy50IC0+ICdhIHRcbiAgICB2YWwgZXNjYXBlX2Fub24gOiBmaW5hbF9hbm9uOidhIEFub25zLnQgLT4gKCdhICogc3RyaW5nIGxpc3QpIHRcblxuICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA6IHNpZ1xuICAgICAgdHlwZSAoXywgXykgdCA9XG4gICAgICAgIHwgRGVmYXVsdF90byA6ICdhIC0+ICgnYSwgJ2EpIHRcbiAgICAgICAgfCBSYWlzZSA6ICgnYSwgJ2EpIHRcbiAgICAgICAgfCBSZXR1cm5fbm9uZSA6ICgnYSwgJ2Egb3B0aW9uKSB0XG4gICAgZW5kXG5cbiAgICB2YWwgY2hvb3NlX29uZVxuICAgICAgOiAgJ2Egb3B0aW9uIHQgbGlzdFxuICAgICAgLT4gaWZfbm90aGluZ19jaG9zZW46KCdhLCAnYikgSWZfbm90aGluZ19jaG9zZW4udFxuICAgICAgLT4gJ2IgdFxuXG4gICAgdmFsIGNob29zZV9vbmVfbm9uX29wdGlvbmFsXG4gICAgICA6ICAnYSB0IGxpc3RcbiAgICAgIC0+IGlmX25vdGhpbmdfY2hvc2VuOignYSwgJ2IpIElmX25vdGhpbmdfY2hvc2VuLnRcbiAgICAgIC0+ICdiIHRcblxuICAgIHZhbCBhbmRfYXJnX25hbWVzIDogJ2EgdCAtPiAoJ2EgKiBzdHJpbmcgbGlzdCkgdFxuICAgIHZhbCBhbmRfYXJnX25hbWUgOiAnYSB0IC0+ICgnYSAqIHN0cmluZykgdFxuICAgIHZhbCBhcmdfbmFtZXMgOiAnYSB0IC0+IHN0cmluZyBsaXN0XG4gIGVuZFxuXG4gIGluY2x1ZGUgQ29tbWFuZF9iYXNlLlBhcmFtXG5cbiAgbGV0IHBhdGggPSBtYXAgfmY6UGF0aC5wYXJ0c19leGVfYmFzZW5hbWUgcGF0aFxuZW5kXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGluY2x1ZGUgUGFyYW1cblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyYW1cbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBQYXJhbVxuICBlbmRcbmVuZFxuXG50eXBlICdyZXN1bHQgYmFzaWNfY29tbWFuZCA9XG4gIHN1bW1hcnk6c3RyaW5nIC0+ID9yZWFkbWU6KHVuaXQgLT4gc3RyaW5nKSAtPiAodW5pdCAtPiAncmVzdWx0KSBQYXJhbS50IC0+IHRcblxubGV0IGJhc2ljIH5zdW1tYXJ5ID9yZWFkbWUgcGFyYW0gPVxuICBsZXQgcmVhZG1lID0gT3B0aW9uLm1hcCByZWFkbWUgfmY6KGZ1biBmICgpIC0+IFN0cmluZy5zdHJpcCAoZiAoKSkpIGluXG4gIGJhc2ljIH5zdW1tYXJ5ID9yZWFkbWUgcGFyYW1cbjs7XG5cbmxldCBiYXNpY19vcl9lcnJvciB+c3VtbWFyeSA/cmVhZG1lIHBhcmFtID1cbiAgYmFzaWNcbiAgICB+c3VtbWFyeVxuICAgID9yZWFkbWVcbiAgICAobGV0JW1hcCBydW4gPSBwYXJhbSBpblxuICAgICBmdW4gKCkgLT5cbiAgICAgICBtYXRjaCBydW4gKCkgd2l0aFxuICAgICAgIHwgT2sgKCkgLT4gKClcbiAgICAgICB8IEVycm9yIGUgLT5cbiAgICAgICAgIFN0ZGlvLnByZXJyX2VuZGxpbmUgKEVycm9yLnRvX3N0cmluZ19odW0gZSk7XG4gICAgICAgICBleGl0IDEpXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgYWJzX3BhdGggPSBhYnNfcGF0aFxuICBsZXQgd29yZF93cmFwID0gU2hhcGUuUHJpdmF0ZS53b3JkX3dyYXBcblxuICBtb2R1bGUgQW5vbnMgPSBBbm9uc1xuICBtb2R1bGUgQ21kbGluZSA9IENtZGxpbmVcbiAgbW9kdWxlIEZvcl91bml4ID0gRm9yX3VuaXhcbiAgbW9kdWxlIFBhdGggPSBQYXRoXG5cbiAgbW9kdWxlIFNwZWMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNwZWNcblxuICAgIGxldCB0b19zdHJpbmdfZm9yX2Nob29zZV9vbmUgcGFyYW0gPVxuICAgICAgQ29tbWFuZF9iYXNlLlBhcmFtLkNob29zZV9vbmUuQ2hvaWNlX25hbWUuKGNyZWF0ZV9leG4gcGFyYW0gfD4gdG9fc3RyaW5nKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmxldCBydW4gPSBgVXNlX0NvbW1hbmRfdW5peFxubGV0IHNoYXBlID0gYFVzZV9Db21tYW5kX3VuaXhcbiIsIm9wZW4hIEJhc2VcblxudHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuZXh0ZXJuYWwgaXNfaGVhcF9ibG9jayA6IFN0ZGxpYi5PYmoudCAtPiBib29sID0gXCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9ja1wiXG5bQEBub2FsbG9jXVxuXG5sZXQgaXNfb2sgdiA9IGlzX2hlYXBfYmxvY2sgKFN0ZGxpYi5PYmoucmVwciB2KVxubGV0IGNyZWF0ZSB2ID0gaWYgaXNfb2sgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcblxubGV0IGNyZWF0ZV9leG4gdiA9XG4gIGlmIGlzX29rIHYgdGhlbiB2IGVsc2UgZmFpbHdpdGggXCJIZWFwX2Jsb2NrLmNyZWF0ZV9leG4gY2FsbGVkIHdpdGggbm9uIGhlYXAgYmxvY2tcIlxuOztcblxubGV0IHZhbHVlIHQgPSB0XG5sZXQgYnl0ZXNfcGVyX3dvcmQgPSBXb3JkX3NpemUuKG51bV9iaXRzIHdvcmRfc2l6ZSkgLyA4XG5cbmxldCBieXRlcyAodHlwZSBhKSAodCA6IGEgdCkgPVxuICAoU3RkbGliLk9iai5zaXplIChTdGRsaWIuT2JqLnJlcHIgKHQgOiBhIHQpKSArIDEpICogYnl0ZXNfcGVyX3dvcmRcbjs7XG4iLCJvcGVuIEJhc2VcblxuKCoqIEVhY2ggc2luZ2xlX2Vycm9yIGlzIGEgcGF0aCBpbmRpY2F0aW5nIHRoZSBsb2NhdGlvbiB3aXRoaW4gdGhlIGRhdGFzdHJ1Y3R1cmUgaW5cbiAgICBxdWVzdGlvbiB0aGF0IGlzIGJlaW5nIHZhbGlkYXRlZCwgYWxvbmcgd2l0aCBhbiBlcnJvciBtZXNzYWdlLiAqKVxudHlwZSBzaW5nbGVfZXJyb3IgPVxuICB7IHBhdGggOiBzdHJpbmcgbGlzdFxuICA7IGVycm9yIDogRXJyb3IudFxuICB9XG5cbnR5cGUgdCA9IHNpbmdsZV9lcnJvciBsaXN0XG50eXBlICdhIGNoZWNrID0gJ2EgLT4gdFxuXG5sZXQgcGFzcyA6IHQgPSBbXVxuXG5sZXQgZmFpbHMgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIFsgeyBwYXRoID0gW107IGVycm9yID0gRXJyb3IuY3JlYXRlIG1lc3NhZ2UgYSBzZXhwX29mX2EgfSBdXG47O1xuXG5sZXQgZmFpbCBtZXNzYWdlID0gWyB7IHBhdGggPSBbXTsgZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgbWVzc2FnZSB9IF1cbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcbmxldCBmYWlsX3Mgc2V4cCA9IFsgeyBwYXRoID0gW107IGVycm9yID0gRXJyb3IuY3JlYXRlX3Mgc2V4cCB9IF1cbmxldCBjb21iaW5lIHQxIHQyID0gdDEgQCB0MlxubGV0IG9mX2xpc3QgPSBMaXN0LmNvbmNhdFxuXG5sZXQgbmFtZSBuYW1lIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBbXSAoKiB3aGVuIHN1Y2Nlc3NmdWwsIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIGEgY2xvc3VyZSBmb3IgW35mXSwgYmVsb3cgKilcbiAgfCBfIC0+IExpc3QubWFwIHQgfmY6KGZ1biB7IHBhdGg7IGVycm9yIH0gLT4geyBwYXRoID0gbmFtZSA6OiBwYXRoOyBlcnJvciB9KVxuOztcblxubGV0IG5hbWVfbGlzdCBuIGwgPSBuYW1lIG4gKG9mX2xpc3QgbClcbmxldCBmYWlsX2ZuIG1lc3NhZ2UgXyA9IGZhaWwgbWVzc2FnZVxubGV0IHBhc3NfYm9vbCAoXyA6IGJvb2wpID0gcGFzc1xubGV0IHBhc3NfdW5pdCAoXyA6IHVuaXQpID0gcGFzc1xuXG5sZXQgcHJvdGVjdCBmIHYgPVxuICB0cnkgZiB2IHdpdGhcbiAgfCBleG4gLT5cbiAgICBmYWlsX3MgKFNleHAubWVzc2FnZSBcIkV4Y2VwdGlvbiByYWlzZWQgZHVyaW5nIHZhbGlkYXRpb25cIiBbIFwiXCIsIHNleHBfb2ZfZXhuIGV4biBdKVxuOztcblxubGV0IHRyeV93aXRoIGYgPVxuICBwcm90ZWN0XG4gICAgKGZ1biAoKSAtPlxuICAgICAgIGYgKCk7XG4gICAgICAgcGFzcylcbiAgICAoKVxuOztcblxubGV0IHBhdGhfc3RyaW5nIHBhdGggPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgcGF0aFxuXG5sZXQgZXJyb3JzIHQgPVxuICBMaXN0Lm1hcCB0IH5mOihmdW4geyBwYXRoOyBlcnJvciB9IC0+XG4gICAgRXJyb3IudG9fc3RyaW5nX2h1bSAoRXJyb3IudGFnIGVycm9yIH50YWc6KHBhdGhfc3RyaW5nIHBhdGgpKSlcbjs7XG5cbmxldCByZXN1bHRfZmFpbCB0ID1cbiAgT3JfZXJyb3IuZXJyb3JcbiAgICBcInZhbGlkYXRpb24gZXJyb3JzXCJcbiAgICAoTGlzdC5tYXAgdCB+ZjooZnVuIHsgcGF0aDsgZXJyb3IgfSAtPiBwYXRoX3N0cmluZyBwYXRoLCBlcnJvcikpXG4gICAgWyVzZXhwX29mOiAoc3RyaW5nICogRXJyb3IudCkgTGlzdC50XVxuW0BAY29sZF1cbjs7XG5cbigqKiBbcmVzdWx0XSBpcyBjYXJlZnVsbHkgaW1wbGVtZW50ZWQgc28gdGhhdCBpdCBjYW4gYmUgaW5saW5lZCAtLSBjYWxsaW5nIFtyZXN1bHRfZmFpbF0sXG4gICAgd2hpY2ggaXMgbm90IGlubGluZWFibGUsIGlzIGtleSB0byB0aGlzLiAqKVxubGV0IHJlc3VsdCB0ID0gaWYgTGlzdC5pc19lbXB0eSB0IHRoZW4gT2sgKCkgZWxzZSByZXN1bHRfZmFpbCB0XG5cbmxldCBtYXliZV9yYWlzZSB0ID0gT3JfZXJyb3Iub2tfZXhuIChyZXN1bHQgdClcbmxldCB2YWxpZF9vcl9lcnJvciBjaGVjayB4ID0gT3JfZXJyb3IubWFwIChyZXN1bHQgKHByb3RlY3QgY2hlY2sgeCkpIH5mOihmdW4gKCkgLT4geClcblxubGV0IGZpZWxkX2RpcmVjdCBjaGVjayBmbGQgX3JlY29yZCB2ID1cbiAgbGV0IHJlc3VsdCA9IHByb3RlY3QgY2hlY2sgdiBpblxuICBuYW1lIChGaWVsZC5uYW1lIGZsZCkgcmVzdWx0XG47O1xuXG5sZXQgZmllbGQgY2hlY2sgcmVjb3JkIGZsZCA9XG4gIGxldCB2ID0gRmllbGQuZ2V0IGZsZCByZWNvcmQgaW5cbiAgZmllbGRfZGlyZWN0IGNoZWNrIGZsZCByZWNvcmQgdlxuOztcblxubGV0IGZpZWxkX2ZvbGRlciBjaGVjayByZWNvcmQgPVxuICAoKTtcbiAgZnVuIGFjYyBmbGQgLT4gZmllbGQgY2hlY2sgcmVjb3JkIGZsZCA6OiBhY2Ncbjs7XG5cbmxldCBmaWVsZF9kaXJlY3RfZm9sZGVyIGNoZWNrID1cbiAgU3RhZ2VkLnN0YWdlIChmdW4gYWNjIGZsZCByZWNvcmQgdiAtPlxuICAgIG1hdGNoIGZpZWxkX2RpcmVjdCBjaGVjayBmbGQgcmVjb3JkIHYgd2l0aFxuICAgIHwgW10gLT4gYWNjICgqIEF2b2lkIGFsbG9jYXRpbmcgYSBuZXcgbGlzdCBpbiB0aGUgc3VjY2VzcyBjYXNlICopXG4gICAgfCByZXN1bHQgLT4gcmVzdWx0IDo6IGFjYylcbjs7XG5cbmxldCBhbGwgY2hlY2tzIHYgPVxuICBsZXQgcmVjIGxvb3AgY2hlY2tzIHYgZXJycyA9XG4gICAgbWF0Y2ggY2hlY2tzIHdpdGhcbiAgICB8IFtdIC0+IGVycnNcbiAgICB8IGNoZWNrIDo6IGNoZWNrcyAtPlxuICAgICAgKG1hdGNoIHByb3RlY3QgY2hlY2sgdiB3aXRoXG4gICAgICAgfCBbXSAtPiBsb29wIGNoZWNrcyB2IGVycnNcbiAgICAgICB8IGVyciAtPiBsb29wIGNoZWNrcyB2IChlcnIgOjogZXJycykpXG4gIGluXG4gIG9mX2xpc3QgKExpc3QucmV2IChsb29wIGNoZWNrcyB2IFtdKSlcbjs7XG5cbmxldCBvZl9yZXN1bHQgZiA9XG4gIHByb3RlY3QgKGZ1biB2IC0+XG4gICAgbWF0Y2ggZiB2IHdpdGhcbiAgICB8IE9rICgpIC0+IHBhc3NcbiAgICB8IEVycm9yIGVycm9yIC0+IGZhaWwgZXJyb3IpXG47O1xuXG5sZXQgb2ZfZXJyb3IgZiA9XG4gIHByb3RlY3QgKGZ1biB2IC0+XG4gICAgbWF0Y2ggZiB2IHdpdGhcbiAgICB8IE9rICgpIC0+IHBhc3NcbiAgICB8IEVycm9yIGVycm9yIC0+IFsgeyBwYXRoID0gW107IGVycm9yIH0gXSlcbjs7XG5cbmxldCBib29sdGVzdCBmIH5pZl9mYWxzZSA9IHByb3RlY3QgKGZ1biB2IC0+IGlmIGYgdiB0aGVuIHBhc3MgZWxzZSBmYWlsIGlmX2ZhbHNlKVxuXG5sZXQgcGFpciB+ZnN0IH5zbmQgKGZzdF92YWx1ZSwgc25kX3ZhbHVlKSA9XG4gIG9mX2xpc3QgWyBuYW1lIFwiZnN0XCIgKHByb3RlY3QgZnN0IGZzdF92YWx1ZSk7IG5hbWUgXCJzbmRcIiAocHJvdGVjdCBzbmQgc25kX3ZhbHVlKSBdXG47O1xuXG5sZXQgbGlzdF9pbmRleGVkIGNoZWNrIGxpc3QgPVxuICBMaXN0Lm1hcGkgbGlzdCB+ZjooZnVuIGkgZWwgLT4gbmFtZSAoSW50LnRvX3N0cmluZyAoaSArIDEpKSAocHJvdGVjdCBjaGVjayBlbCkpXG4gIHw+IG9mX2xpc3Rcbjs7XG5cbmxldCBsaXN0IH5uYW1lOmV4dHJhY3RfbmFtZSBjaGVjayBsaXN0ID1cbiAgTGlzdC5tYXAgbGlzdCB+ZjooZnVuIGVsIC0+XG4gICAgbWF0Y2ggcHJvdGVjdCBjaGVjayBlbCB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgdCAtPlxuICAgICAgKCogZXh0cmEgbGV2ZWwgb2YgcHJvdGVjdGlvbiBpbiBjYXNlIGV4dHJhY3RfbmFtZSB0aHJvd3MgYW4gZXhjZXB0aW9uICopXG4gICAgICBwcm90ZWN0IChmdW4gdCAtPiBuYW1lIChleHRyYWN0X25hbWUgZWwpIHQpIHQpXG4gIHw+IG9mX2xpc3Rcbjs7XG5cbmxldCBhbGlzdCB+bmFtZSBmIGxpc3QnID0gbGlzdCAoZnVuIChfLCB4KSAtPiBmIHgpIGxpc3QnIH5uYW1lOihmdW4gKGtleSwgXykgLT4gbmFtZSBrZXkpXG5sZXQgZmlyc3RfZmFpbHVyZSB0MSB0MiA9IGlmIExpc3QuaXNfZW1wdHkgdDEgdGhlbiB0MiBlbHNlIHQxXG5cbmxldCBvZl9lcnJvcl9vcHQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gcGFzc1xuICB8IFNvbWUgZXJyb3IgLT4gZmFpbCBlcnJvclxuOztcblxubGV0IGJvdW5kZWQgfm5hbWUgfmxvd2VyIH51cHBlciB+Y29tcGFyZSB4ID1cbiAgbWF0Y2ggTWF5YmVfYm91bmQuY29tcGFyZV90b19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZSB4IHdpdGhcbiAgfCBJbl9yYW5nZSAtPiBwYXNzXG4gIHwgQmVsb3dfbG93ZXJfYm91bmQgLT5cbiAgICAobWF0Y2ggbG93ZXIgd2l0aFxuICAgICB8IFVuYm91bmRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgfCBJbmNsIGluY2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA8IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgaW5jbCkpXG4gICAgIHwgRXhjbCBleGNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPD0gYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBleGNsKSkpXG4gIHwgQWJvdmVfdXBwZXJfYm91bmQgLT5cbiAgICAobWF0Y2ggdXBwZXIgd2l0aFxuICAgICB8IFVuYm91bmRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgfCBJbmNsIGluY2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA+IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgaW5jbCkpXG4gICAgIHwgRXhjbCBleGNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPj0gYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBleGNsKSkpXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggKysgKSB0MSB0MiA9IGNvbWJpbmUgdDEgdDJcbmVuZFxuIiwiXG4oKiBXZSBkbyBub3QgW2luY2x1ZGUgQmFzZV0gaGVyZSwgYW5kIGluc3RlYWQgaW1wb3J0IG1vZHVsZXMgdGhhdCBbQ29yZV0gZG9lc24ndCBleHRlbmQsXG4gICBiZWNhdXNlIHdlIHdhbnQgY29kZSBpbiBbQ29yZV0gdG8gYmUgY2xlYXIgd2hlbiBpdCByZWZlcmVuY2VzIGEgW0Jhc2VdIG1vZHVsZSB0aGF0XG4gICBbQ29yZV0gaXMgb3ZlcnJpZGluZy4gKilcbm1vZHVsZSBBcHBsaWNhdGl2ZSA9IEJhc2UuQXBwbGljYXRpdmVcbm1vZHVsZSBBdmx0cmVlID0gQmFzZS5Bdmx0cmVlXG5tb2R1bGUgQmFja3RyYWNlID0gQmFzZS5CYWNrdHJhY2Vcbm1vZHVsZSBCaW5hcnlfc2VhcmNoID0gQmFzZS5CaW5hcnlfc2VhcmNoXG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBCYXNlLkNvbXBhcmlzb25zXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IEJhc2UuQ29udGludWVfb3Jfc3RvcFxubW9kdWxlIEVxdWFsID0gQmFzZS5FcXVhbFxubW9kdWxlIEV4biA9IEJhc2UuRXhuXG5tb2R1bGUgRmxvYXRhYmxlID0gQmFzZS5GbG9hdGFibGVcbm1vZHVsZSBGb3JtYXR0ZXIgPSBCYXNlLkZvcm1hdHRlclxubW9kdWxlIEhhc2ggPSBCYXNlLkhhc2hcbm1vZHVsZSBIYXNoZXIgPSBCYXNlLkhhc2hlclxubW9kdWxlIEludGFibGUgPSBCYXNlLkludGFibGVcbm1vZHVsZSBJbnRfY29udmVyc2lvbnMgPSBCYXNlLkludF9jb252ZXJzaW9uc1xubW9kdWxlIEludF9tYXRoID0gQmFzZS5JbnRfbWF0aFxubW9kdWxlIEludmFyaWFudCA9IEJhc2UuSW52YXJpYW50XG5tb2R1bGUgTW9uYWQgPSBCYXNlLk1vbmFkXG5tb2R1bGUgUG9seSA9IEJhc2UuUG9seVxuXG5tb2R1bGUgUG9wY291bnQgPSBCYXNlLlBvcGNvdW50XG5bQEB3YXJuaW5nIFwiLTNcIl1cbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMF0gdXNlIFtwb3Bjb3VudF0gZnVuY3Rpb25zIGluIGluZGl2aWR1YWwgaW50IG1vZHVsZXNcIl1cblxubW9kdWxlIFByZXR0eV9wcmludGVyID0gQmFzZS5QcmV0dHlfcHJpbnRlclxubW9kdWxlIFJhbmRvbSA9IEJhc2UuUmFuZG9tXG5tb2R1bGUgU3RhZ2VkID0gQmFzZS5TdGFnZWRcbm1vZHVsZSBTdHJpbmdhYmxlID0gQmFzZS5TdHJpbmdhYmxlXG5tb2R1bGUgU3lzID0gQmFzZS5TeXNcbm1vZHVsZSBVY2hhciA9IEJhc2UuVWNoYXJcbm1vZHVsZSBXaXRoX3JldHVybiA9IEJhc2UuV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBCYXNlLldvcmRfc2l6ZVxuXG4oKiBXZSBkbyBpbmNsdWRlIFtCYXNlXSdzIHRvcC1sZXZlbCB2YWx1ZSBhbmQgdHlwZSBiaW5kaW5ncywgYmVjYXVzZSB0aGV5IGRvbid0IGNhdXNlXG4gICBhbnkgY29uZnVzaW9uLCBhbmQgZHVwbGljYXRpbmcgdGhlbSB3b3VsZCBiZSBlcnJvciBwcm9uZS4gKilcbmluY2x1ZGUgQmFzZS5FeHBvcnRcbmluY2x1ZGUgU3RkaW9cbmluY2x1ZGUgQmFzZV9mb3JfdGVzdHNcbmluY2x1ZGUgQmluX3Byb3QuU3RkXG5pbmNsdWRlIFN0YWJsZV93aXRuZXNzLkV4cG9ydFxubW9kdWxlIEZpZWxkID0gRmllbGRzbGliLkZpZWxkXG5cbm1vZHVsZSBGcm9tX3NleHBsaWIgOiBzaWdcbiAgdHlwZSBiaWdzdHJpbmcgPSBTZXhwbGliLkNvbnYuYmlnc3RyaW5nIFtAQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgbWF0ID0gU2V4cGxpYi5Db252Lm1hdCBbQEBkZXJpdmluZyBzZXhwXVxuICB0eXBlIHZlYyA9IFNleHBsaWIuQ29udi52ZWMgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAoKiBbc2V4cF9vZl9vcGFxdWVdIGFuZCBbb3BhcXVlX29mX3NleHBdIGFyZSB1c2VkIGJ5IHRoZSBjb2RlIGdlbmVyYXRlZCBmcm9tXG4gICAgIFtbQEBkZXJpdmluZyBzZXhwXV0sIFtbJXNleHBfb2Y6IF1dLCBhbmQgW1slb2Zfc2V4cDogXV0uICBUaGUgdHlwZSBbXyBzZXhwX29wYXF1ZV1cbiAgICAgZXhwYW5kcyB0byB1c2VzIG9mIFtzZXhwX29mX29wYXF1ZV0gYW5kIFtvcGFxdWVfb2Zfc2V4cF0uICopXG5cbiAgdmFsIHNleHBfb2Zfb3BhcXVlIDogXyAtPiBCYXNlLlNleHAudFxuICB2YWwgb3BhcXVlX29mX3NleHAgOiBCYXNlLlNleHAudCAtPiBfXG4gIHZhbCBzZXhwX29mX3BhaXIgOiAoJ2EgLT4gQmFzZS5TZXhwLnQpIC0+ICgnYiAtPiBCYXNlLlNleHAudCkgLT4gJ2EgKiAnYiAtPiBCYXNlLlNleHAudFxuICB2YWwgcGFpcl9vZl9zZXhwIDogKEJhc2UuU2V4cC50IC0+ICdhKSAtPiAoQmFzZS5TZXhwLnQgLT4gJ2IpIC0+IEJhc2UuU2V4cC50IC0+ICdhICogJ2JcblxuICBleGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiBleG4gKiBCYXNlLlNleHAudFxuXG4gIHZhbCBvZl9zZXhwX2Vycm9yIDogc3RyaW5nIC0+IEJhc2UuU2V4cC50IC0+IF9cbiAgdmFsIG9mX3NleHBfZXJyb3JfZXhuIDogZXhuIC0+IEJhc2UuU2V4cC50IC0+IF9cbmVuZCA9XG4gIFNleHBsaWIuQ29udlxuXG5pbmNsdWRlIEZyb21fc2V4cGxpYlxuXG4oKiBbc2V4cF9vcGFxdWVdIGluZGljYXRlcyB0byBbcHB4X3NleHBfY29udl0gdGhhdCBhIHZhbHVlIHNob3VsZCBiZSByZW5kZXJlZCBhcyBbX10sIGkuZS5cbiAgIFtTZXhwLkF0b20gXCJfXCJdLiAgSGVyZSB3ZSBleHBvc2UgdGhlIFtAQGRlcml2aW5nXSBhc3BlY3RzIG9mIFtzZXhwX29wYXF1ZV0gc28gdGhhdFxuICAgb3RoZXIgcHB4J3MgdHJlYXQgW3NleHBfb3BhcXVlXSBjb3JyZWN0bHksIGJ5IGlnbm9yaW5nIGl0IGFuZCBwcm9jZXNzaW5nIHRoZSB1bmRlcmx5aW5nXG4gICB0eXBlLiAqKVxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgdHlwZSAnYSBzZXhwX29wYXF1ZSA9ICdhIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSBzZXhwX29wYXF1ZSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5lbmRcbndpdGggdHlwZSAnYSBzZXhwX29wYXF1ZSA6PSAnYSlcblxuaW5jbHVkZSAoXG4gIFR5cGVyZXBfbGliLlN0ZCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBUeXBlcmVwX2xpYi5TdGRcbiAgZW5kXG4gIHdpdGggbW9kdWxlIFR5cGVfZXF1YWwgOj0gVHlwZXJlcF9saWIuU3RkLlR5cGVfZXF1YWwpXG5cbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudHNsaWIuVmFyaWFudFxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG5sZXQgYW1fcnVubmluZ190ZXN0ID1cbiAgdHJ5XG4gICAgaWdub3JlIChTdGRsaWIuU3lzLmdldGVudiBcIlRFU1RJTkdfRlJBTUVXT1JLXCIgOiBzdHJpbmcpO1xuICAgIHRydWVcbiAgd2l0aFxuICAoKiBbQ2FtbC4qXSBuZXZlciByYWlzZXMgW05vdF9mb3VuZF9zXSAqKVxuICB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gZmFsc2Vcbjs7XG5cbnR5cGUgJ2EgaWRlbnRpdHkgPSAnYVxuXG5tb2R1bGUgTm90X2ZvdW5kID0gc3RydWN0XG4gIGV4Y2VwdGlvblxuICAgIE5vdF9mb3VuZCA9IE5vdF9mb3VuZFxuICAgICAgICAgICAgICAgIFtAZGVwcmVjYXRlZFxuICAgICAgICAgICAgICAgICAge3xbc2luY2UgMjAxOC0wMl0gSW5zdGVhZCBvZiByYWlzaW5nIFtOb3RfZm91bmRdLCBjb25zaWRlciB1c2luZyBbcmFpc2Vfc10gd2l0aCBhblxuaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZS4gIElmIGNvZGUgbmVlZHMgdG8gZGlzdGluZ3Vpc2ggW05vdF9mb3VuZF0gZnJvbSBvdGhlclxuZXhjZXB0aW9ucywgcGxlYXNlIGNoYW5nZSBpdCB0byBoYW5kbGUgYm90aCBbTm90X2ZvdW5kXSBhbmQgW05vdF9mb3VuZF9zXS4gIFRoZW4sIGluc3RlYWRcbm9mIHJhaXNpbmcgW05vdF9mb3VuZF0sIHJhaXNlIFtOb3RfZm91bmRfc10gd2l0aCBhbiBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlLnx9XVxuXG4gIGV4Y2VwdGlvbiBOb3RfZm91bmRfcyA9IEJhc2UuTm90X2ZvdW5kX3NcbmVuZFxuXG5pbmNsdWRlIE5vdF9mb3VuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU2V4cGFibGVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgT2Zfc2V4cGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogdCAtPiBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6IFNleHBhYmxlLnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cGFibGUuc2V4cF9vZl90IChNLnRvX3NleHBhYmxlIHQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZTEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUzEpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogJ2EgdCAtPiAnYSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAnYSBTZXhwYWJsZS50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSAoTS50b19zZXhwYWJsZSB0KVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc2V4cGFibGUyID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChTZXhwYWJsZSA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYikgU2V4cGFibGUudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgdCA9XG4gICAgICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIChNLnRvX3NleHBhYmxlIHQpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc2V4cGFibGUzID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChTZXhwYWJsZSA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYiwgJ2MpIFNleHBhYmxlLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgY19vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIHQgPVxuICAgICAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgKE0udG9fc2V4cGFibGUgdClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zdHJpbmdhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogU3RyaW5nYWJsZS5TKSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1cblxuICAgICAgaW5jbHVkZSBTIHdpdGggdHlwZSB0IDo9IHRcbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICB8IFNleHBsaWIuU2V4cC5BdG9tIHMgLT5cbiAgICAgICAgICAodHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cClcbiAgICAgICAgfCBTZXhwbGliLlNleHAuTGlzdCBfIC0+XG4gICAgICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICAgICAgXCJTZXhwYWJsZS5PZl9zdHJpbmdhYmxlLnRfb2Zfc2V4cCBleHBlY3RlZCBhbiBhdG9tLCBidXQgZ290IGEgbGlzdFwiXG4gICAgICAgICAgICBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwbGliLlNleHAuQXRvbSAoTS50b19zdHJpbmcgdClcblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyIDogTS50IFNleHBsaWIuU2V4cF9ncmFtbWFyLnQgPVxuICAgICAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2Ugc3RyaW5nX3NleHBfZ3JhbW1hclxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFRvX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTKSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9zdHJpbmcgeCA9IFNleHBsaWIuQ29udi5vZl9zdHJpbmdfX29mX19vZl9zZXhwIE0udF9vZl9zZXhwIHhcbiAgICAgIGxldCB0b19zdHJpbmcgeCA9IFNleHBsaWIuQ29udi5zdHJpbmdfb2ZfX29mX19zZXhwX29mIE0uc2V4cF9vZl90IHhcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFRvX3N0cmluZ2FibGUgPSBTdGFibGUuVG9fc3RyaW5nYWJsZS5WMVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbmFibGVfaW50ZlxuaW5jbHVkZSBCaW5fcHJvdC5CaW5hYmxlXG5tb2R1bGUgU2hhcGUgPSBCaW5fcHJvdC5TaGFwZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPZl9iaW5hYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChCaW5hYmxlIDogTWluaW1hbC5TKSAoTSA6IENvbnZfd2l0aG91dF91dWlkIHdpdGggdHlwZSBiaW5hYmxlIDo9IEJpbmFibGUudCkgOlxuICAgICAgUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyIChCaW5hYmxlIDogTWluaW1hbC5TKSAoTSA6IENvbnYgd2l0aCB0eXBlIGJpbmFibGUgOj0gQmluYWJsZS50KSA6XG4gICAgICBTIHdpdGggdHlwZSB0IDo9IE0udCA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9iaW5hYmxlMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoQmluYWJsZSA6IE1pbmltYWwuUzEpXG4gICAgICAgIChNIDogQ29udjFfd2l0aG91dF91dWlkIHdpdGggdHlwZSAnYSBiaW5hYmxlIDo9ICdhIEJpbmFibGUudCkgOlxuICAgICAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKEJpbmFibGUgOiBNaW5pbWFsLlMxKSAoTSA6IENvbnYxIHdpdGggdHlwZSAnYSBiaW5hYmxlIDo9ICdhIEJpbmFibGUudCkgOlxuICAgICAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9iaW5hYmxlMiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoQmluYWJsZSA6IE1pbmltYWwuUzIpXG4gICAgICAgIChNIDogQ29udjJfd2l0aG91dF91dWlkIHdpdGggdHlwZSAoJ2EsICdiKSBiaW5hYmxlIDo9ICgnYSwgJ2IpIEJpbmFibGUudCkgOlxuICAgICAgUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMilcbiAgICAgICAgKE0gOiBDb252MiB3aXRoIHR5cGUgKCdhLCAnYikgYmluYWJsZSA6PSAoJ2EsICdiKSBCaW5hYmxlLnQpIDpcbiAgICAgIFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udCA9XG4gICAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUyX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUzID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMylcbiAgICAgICAgKE0gOiBDb252M193aXRob3V0X3V1aWQgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBiaW5hYmxlIDo9ICgnYSwgJ2IsICdjKSBCaW5hYmxlLnQpIDpcbiAgICAgIFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMylcbiAgICAgICAgKE0gOiBDb252MyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFibGUgOj0gKCdhLCAnYiwgJ2MpIEJpbmFibGUudCkgOlxuICAgICAgUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlM193aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFNleHBhYmxlLlMpID1cbiAgICAgIE9mX2JpbmFibGUuVjFcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEJhc2UuU2V4cC50ID1cbiAgICAgICAgICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICAgICAgICAgIHwgTGlzdCBvZiB0IGxpc3RcbiAgICAgICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IE0udFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnNleHBfb2ZfdFxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gTS50X29mX3NleHBcbiAgICAgICAgZW5kKVxuXG4gICAgbW9kdWxlIFYyIChNIDogQ29udl9zZXhwYWJsZSkgPVxuICAgICAgT2ZfYmluYWJsZS5WMlxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgICAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IE0uc2V4cF9vZl90XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBNLnRfb2Zfc2V4cFxuICAgICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPSBNLmNhbGxlcl9pZGVudGl0eVxuICAgICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zdHJpbmdhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogU3RyaW5nYWJsZS5TKSA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIGVuZFxuXG4gICAgICAgIHR5cGUgdCA9IE0udFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gTS50b19zdHJpbmdcblxuICAgICAgICAoKiBXcmFwIGV4Y2VwdGlvbiBmb3IgaW1wcm92ZWQgZGlhZ25vc3RpY3MuICopXG4gICAgICAgIGV4Y2VwdGlvbiBPZl9iaW5hYmxlIG9mIHN0cmluZyAqIGV4biBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgIGxldCBvZl9iaW5hYmxlIHMgPVxuICAgICAgICAgIHRyeSBNLm9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKE9mX2JpbmFibGUgKHMsIHgpKVxuICAgICAgICA7O1xuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyIChNIDogQ29udl9zdHJpbmdhYmxlKSA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIGVuZFxuXG4gICAgICAgIHR5cGUgdCA9IE0udFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gTS50b19zdHJpbmdcblxuICAgICAgICAoKiBXcmFwIGV4Y2VwdGlvbiBmb3IgaW1wcm92ZWQgZGlhZ25vc3RpY3MuICopXG4gICAgICAgIGV4Y2VwdGlvbiBPZl9iaW5hYmxlIG9mIHN0cmluZyAqIGV4biBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgIGxldCBvZl9iaW5hYmxlIHMgPVxuICAgICAgICAgIHRyeSBNLm9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKE9mX2JpbmFibGUgKHMsIHgpKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPSBNLmNhbGxlcl9pZGVudGl0eVxuICAgICAgZW5kKVxuICBlbmRcbmVuZFxuXG5vcGVuIEJpZ2FycmF5XG5cbnR5cGUgYmlnc3RyaW5nID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuXG50eXBlICdhIG0gPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcblxubGV0IG9mX2JpZ3N0cmluZyAodHlwZSBhKSBtIGJpZ3N0cmluZyA9XG4gIGxldCBtb2R1bGUgTSA9ICh2YWwgbSA6IFMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gIGxldCB0ID0gTS5iaW5fcmVhZF90IGJpZ3N0cmluZyB+cG9zX3JlZiBpblxuICBsZXQgYmlnc3RyaW5nX2xlbmd0aCA9IEFycmF5MS5kaW0gYmlnc3RyaW5nIGluXG4gIChtYXRjaCAhcG9zX3JlZiA9IGJpZ3N0cmluZ19sZW5ndGggd2l0aFxuICAgfCB0cnVlIC0+ICgpXG4gICB8IGZhbHNlIC0+XG4gICAgIHJhaXNlX3NcbiAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgIFwiYmluX3JlYWRfdCBkaWQgbm90IGNvbnN1bWUgdGhlIGVudGlyZSBidWZmZXJcIlxuICAgICAgICAgICB+Y29uc3VtZWQ6KCFwb3NfcmVmIDogaW50KVxuICAgICAgICAgICAoYmlnc3RyaW5nX2xlbmd0aCA6IGludCldKTtcbiAgdFxuOztcblxuKCogVXNpbmcgdGhlIFtCaWdzdHJpbmddIG1vZHVsZSB3b3VsZCBpbnRyb2R1Y2UgYSBjeWNsaWMgZGVwZW5kZW5jeS4gKilcbmxldCBjcmVhdGVfYmlnc3RyaW5nIHNpemUgPSBBcnJheTEuY3JlYXRlIEJpZ2FycmF5LmNoYXIgQmlnYXJyYXkuY19sYXlvdXQgc2l6ZVxuXG5sZXQgdG9fYmlnc3RyaW5nID8ocHJlZml4X3dpdGhfbGVuZ3RoID0gZmFsc2UpICh0eXBlIGEpIG0gdCA9XG4gIGxldCBtb2R1bGUgTSA9ICh2YWwgbSA6IFMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICBsZXQgdF9sZW5ndGggPSBNLmJpbl9zaXplX3QgdCBpblxuICBsZXQgYmlnc3RyaW5nX2xlbmd0aCA9XG4gICAgaWYgcHJlZml4X3dpdGhfbGVuZ3RoIHRoZW4gdF9sZW5ndGggKyA4ICgqIHRoZSBzaXplIG9mIGEgNjQtYml0IGludCAqKSBlbHNlIHRfbGVuZ3RoXG4gIGluXG4gIGxldCBiaWdzdHJpbmcgPSBjcmVhdGVfYmlnc3RyaW5nIGJpZ3N0cmluZ19sZW5ndGggaW5cbiAgbGV0IHBvcyA9XG4gICAgaWYgcHJlZml4X3dpdGhfbGVuZ3RoXG4gICAgdGhlbiBCaW5fcHJvdC5Xcml0ZS5iaW5fd3JpdGVfaW50XzY0Yml0IGJpZ3N0cmluZyB+cG9zOjAgdF9sZW5ndGhcbiAgICBlbHNlIDBcbiAgaW5cbiAgbGV0IHBvcyA9IE0uYmluX3dyaXRlX3QgYmlnc3RyaW5nIH5wb3MgdCBpblxuICBhc3NlcnQgKHBvcyA9IGJpZ3N0cmluZ19sZW5ndGgpO1xuICBiaWdzdHJpbmdcbjs7XG5cbm1vZHVsZSBPZl9iaW5hYmxlX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlLlYyXG5tb2R1bGUgT2ZfYmluYWJsZTFfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUxLlYyXG5tb2R1bGUgT2ZfYmluYWJsZTJfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUyLlYyXG5tb2R1bGUgT2ZfYmluYWJsZTNfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUzLlYyXG5tb2R1bGUgT2Zfc2V4cGFibGVfd2l0aF91dWlkID0gU3RhYmxlLk9mX3NleHBhYmxlLlYyXG5tb2R1bGUgT2Zfc3RyaW5nYWJsZV93aXRoX3V1aWQgPSBTdGFibGUuT2Zfc3RyaW5nYWJsZS5WMlxubW9kdWxlIE9mX2JpbmFibGVfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUuVjFcbm1vZHVsZSBPZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTEuVjFcbm1vZHVsZSBPZl9iaW5hYmxlMl93aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTIuVjFcbm1vZHVsZSBPZl9iaW5hYmxlM193aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTMuVjFcbm1vZHVsZSBPZl9zZXhwYWJsZV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2Zfc2V4cGFibGUuVjFcbm1vZHVsZSBPZl9zdHJpbmdhYmxlX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9zdHJpbmdhYmxlLlYxXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTX29ubHlfZnVuY3Rpb25zX2FuZF9zaGFwZSA9IHNpZ1xuICAgICAgaW5jbHVkZSBTX29ubHlfZnVuY3Rpb25zXG5cbiAgICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnRcbiAgICBlbmRcblxuICAgICgqIENoZWNrIHRoYXQgb25seSB0aGUgZnVuY3Rpb25zICYgc2hhcGUgYXJlIHN1ZmZpY2llbnQgZm9yIFtAQGRlcml2aW5nIGJpbl9pb10uIFRoZVxuICAgICAgIGZhY3QgdGhhdCB0aGlzIGZ1bmN0b3IgdHlwZWNoZWNrcyBpcywgaXRzZWxmLCB0aGUgdGVzdC4gKilcbiAgICBtb2R1bGUgXyAoWCA6IFNfb25seV9mdW5jdGlvbnNfYW5kX3NoYXBlKSA6IFMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFgudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kXG4gIGVuZClcbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLlByaW50Zn1bQmFzZS5QcmludGZdfS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgQmFzZS5QcmludGYgKCoqIEBvcGVuICopXG5cbmxldCBlcHJpbnRmID0gU3RkaW8uT3V0X2NoYW5uZWwuZXByaW50ZlxubGV0IGZwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5mcHJpbnRmXG5sZXQga2ZwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5rZnByaW50ZlxubGV0IHByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLnByaW50ZlxuXG5cbigqKiBwcmludCB0byBzdGRlcnI7IGV4aXQgMSAqKVxubGV0IGV4aXRmIGZtdCA9XG4gIGtzcHJpbnRmXG4gICAgKGZ1biBzICgpIC0+XG4gICAgICAgZXByaW50ZiBcIiVzXFxuJSFcIiBzO1xuICAgICAgIGV4aXQgMSlcbiAgICBmbXRcbjs7XG5cbnR5cGUgcHJpbnRmID0geyBwcmludGYgOiAnYS4gKCdhLCBCdWZmZXIudCwgdW5pdCkgZm9ybWF0IC0+ICdhIH1cblxubGV0IGNvbGxlY3RfdG9fc3RyaW5nIGYgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgZG9uZV8gPSByZWYgZmFsc2UgaW5cbiAgbGV0IHByaW50ZiBmbXQgPVxuICAgIGticHJpbnRmXG4gICAgICAoZnVuIGJ1ZiAtPlxuICAgICAgICAgaWYgIWRvbmVfXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJbcHJpbnRmXSB1c2VkIGFmdGVyIFtjb2xsZWN0X3RvX3N0cmluZ10gcmV0dXJuZWRcIl0pKVxuICAgICAgYnVmXG4gICAgICBmbXRcbiAgaW5cbiAgZiB7IHByaW50ZiB9O1xuICBkb25lXyA6PSB0cnVlO1xuICBsZXQgb3V0cHV0ID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBCdWZmZXIucmVzZXQgYnVmO1xuICBvdXRwdXRcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcblxuKCogQWxsIHRoZSB0eXBlcyBhcyBleHBvc2VkIGluIHRoZSBtbGkgYXJlIGRlZmluZWQgaW4gdGhpcyBbVHlwZXNdIG1vZHVsZS4gIFRoZSByZXN0IG9mXG4gICB0aGlzIGZpbGUgaXMgc2ltcGx5IG92ZXJyaWRpbmcgYWxsIHRoZSBiaW5faW8sIGNvbXBhcmUsIGFuZCBzZXhwIGZ1bmN0aW9ucyB0byByYWlzZVxuICAgZXhjZXB0aW9ucy4gKilcbm1vZHVsZSBUeXBlcyA9IHN0cnVjdFxuICBtb2R1bGUgTm9ib2R5ID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJOb2JvZHlcIlxuICBlbmRcblxuICBtb2R1bGUgTWUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIk1lXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFJlYWQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBbIGBSZWFkIF0gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIlJlYWRcIlxuICBlbmRcblxuICBtb2R1bGUgV3JpdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBbIGBXaG9fY2FuX3dyaXRlIG9mIE1lLnQgXSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiV3JpdGVcIlxuICBlbmRcblxuICBtb2R1bGUgSW1tdXRhYmxlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgUmVhZC50XG4gICAgICB8IGBXaG9fY2FuX3dyaXRlIG9mIE5vYm9keS50XG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIkltbXV0YWJsZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgUmVhZC50XG4gICAgICB8IFdyaXRlLnRcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiUmVhZF93cml0ZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBVcHBlcl9ib3VuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICBbIFJlYWQudFxuICAgICAgfCBgV2hvX2Nhbl93cml0ZSBvZiAnYVxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJVcHBlcl9ib3VuZFwiXG4gIGVuZFxuZW5kXG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5cbigqIFRoaXMgaXMgYW4gZXhwbGljaXQgbW9kdWxlIHR5cGUgaW5zdGVhZCBvZiBqdXN0IGdpdmVuIGlubGluZSBhcyB0aGUgcmV0dXJuIHNpZ25hdHVyZSBvZlxuICAgW09ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxXSB0byBhdm9pZCBhbiB1bnVzZWQgdmFsdWUgd2FybmluZyB3aXRoIGJpbl9pbyB2YWx1ZXMuICopXG5tb2R1bGUgdHlwZSBTZXhwYWJsZV9iaW5hYmxlX2NvbXBhcmFibGUgPSBzaWdcbiAgdHlwZSAnYSB0ID0gJ2FcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgc3RhYmxlX3dpdG5lc3NdXG5lbmRcblxuKCogT3ZlcnJpZGUgYWxsIGJpbl9pbywgc2V4cCwgY29tcGFyZSBmdW5jdGlvbnMgdG8gcmFpc2UgZXhjZXB0aW9ucyAqKVxubW9kdWxlIE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxIChOYW1lIDogc2lnXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgZW5kKSA6IFNleHBhYmxlX2JpbmFibGVfY29tcGFyYWJsZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGxldCBzZXhwX29mX3QgXyBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMuc2V4cF9vZl90XVwiIE5hbWUubmFtZSAoKVxuICBsZXQgdF9vZl9zZXhwIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLnRfb2Zfc2V4cF1cIiBOYW1lLm5hbWUgKClcbiAgbGV0IGNvbXBhcmUgXyBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5jb21wYXJlXVwiIE5hbWUubmFtZSAoKVxuICBsZXQgaGFzaF9mb2xkX3QgXyBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5oYXNoX2ZvbGRfdF1cIiBOYW1lLm5hbWUgKClcbiAgbGV0IHRfc2V4cF9ncmFtbWFyIF8gPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgQmFzZS5Ob3RoaW5nLnRfc2V4cF9ncmFtbWFyXG4gIGxldCBzdGFibGVfd2l0bmVzcyBfID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICBsZXQgZ2xvYmFsaXplIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5nbG9iYWxpemVdXCIgTmFtZS5uYW1lICgpXG5cbiAgaW5jbHVkZVxuICAgIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAoc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgIGVuZClcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSBfID1cbiAgICAgICAgICBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgdXNlZCAlcyBiaW5faW8gc2VyaWFsaXphdGlvblwiIE5hbWUubmFtZSAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBvZl9iaW5hYmxlIF8gPVxuICAgICAgICAgIGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSB1c2VkICVzIGJpbl9pbyBkZXNlcmlhbGl6YXRpb25cIiBOYW1lLm5hbWUgKClcbiAgICAgICAgOztcbiAgICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgZW5kKSA6IHNpZ1xuICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHBfcG9seSwgc3RhYmxlX3dpdG5lc3NdXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMSAoVClcblxuICB0eXBlIHQgPSBULnQgTS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICBsZXQgX190X29mX3NleHBfXyA9IHRfb2Zfc2V4cFxuICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIGxldCBnbG9iYWxpemUgXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmdsb2JhbGl6ZV1cIiBULm5hbWUgKClcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBOb2JvZHkgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuTm9ib2R5KVxuICAgIG1vZHVsZSBNZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5NZSlcbiAgICBtb2R1bGUgUmVhZCA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5SZWFkKVxuICAgIG1vZHVsZSBXcml0ZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5Xcml0ZSlcbiAgICBtb2R1bGUgUmVhZF93cml0ZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5SZWFkX3dyaXRlKVxuICAgIG1vZHVsZSBJbW11dGFibGUgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuSW1tdXRhYmxlKVxuXG4gICAgdHlwZSBub2JvZHkgPSBOb2JvZHkudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIHR5cGUgbWUgPSBNZS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBtb2R1bGUgVXBwZXJfYm91bmQgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBNID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTEgKFR5cGVzLlVwcGVyX2JvdW5kKVxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBUeXBlcy5VcHBlcl9ib3VuZC50IE0udCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyBfID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgICAgbGV0IF9fdF9vZl9zZXhwX18gPSB0X29mX3NleHBcblxuICAgICAgbGV0IGdsb2JhbGl6ZSBfID1cbiAgICAgICAgZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMuZ2xvYmFsaXplXVwiIFR5cGVzLlVwcGVyX2JvdW5kLm5hbWUgKClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHJlYWQgPSBWMS5SZWFkLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICB0eXBlIHdyaXRlID0gVjEuV3JpdGUudCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBnbG9iYWxpemUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgdHlwZSBpbW11dGFibGUgPSBWMS5JbW11dGFibGUudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIHR5cGUgcmVhZF93cml0ZSA9IFYxLlJlYWRfd3JpdGUudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIHR5cGUgJ2EgcGVybXMgPSAnYSBWMS5VcHBlcl9ib3VuZC50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxubW9kdWxlIEV4cG9ydCA9IFN0YWJsZS5FeHBvcnRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIENvbXBhcmF0b3IgPSBCYXNlLkNvbXBhcmF0b3JcblxudHlwZSAoJ2EsICd3aXRuZXNzKSB0ID0gKCdhLCAnd2l0bmVzcykgQ29tcGFyYXRvci50ID0gcHJpdmF0ZVxuICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgOyBzZXhwX29mX3QgOiAnYSAtPiBCYXNlLlNleHAudFxuICB9XG5cbm1vZHVsZSB0eXBlIEJhc2VfbWFzayA9IG1vZHVsZSB0eXBlIG9mIENvbXBhcmF0b3Igd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG5pbmNsdWRlIChDb21wYXJhdG9yIDogQmFzZV9tYXNrKVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ3dpdG5lc3MpIHQgPSAoJ2EsICd3aXRuZXNzKSB0ID0gcHJpdmF0ZVxuICAgICAgeyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gICAgICA7IHNleHBfb2ZfdCA6ICdhIC0+IEJhc2UuU2V4cC50XG4gICAgICB9XG5cbiAgICB0eXBlICgnYSwgJ2IpIGNvbXBhcmF0b3IgPSAoJ2EsICdiKSB0XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gU1xuICAgIG1vZHVsZSB0eXBlIFMxID0gUzFcblxuICAgIGxldCBtYWtlID0gbWFrZVxuXG4gICAgbW9kdWxlIE1ha2UgPSBNYWtlXG4gICAgbW9kdWxlIE1ha2UxID0gTWFrZTFcbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAoJ2YsICdzKSB0ID0gKCdmLCAncykgQmFzZS5FaXRoZXIudCA9XG4gICAgICB8IEZpcnN0IG9mICdmXG4gICAgICB8IFNlY29uZCBvZiAnc1xuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgbWFwIHggfmYxIH5mMiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRmlyc3QgeDEgLT4gRmlyc3QgKGYxIHgxKVxuICAgICAgfCBTZWNvbmQgeDIgLT4gU2Vjb25kIChmMiB4MilcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBCYXNlLkVpdGhlclxuXG5pbmNsdWRlIENvbXBhcmF0b3IuRGVyaXZlZDIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gIGVuZClcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5laXRoZXJcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmVpdGhlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZWl0aGVyXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgUzBfd2l0aG91dF9jb21wYXJhdG9yID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgUzAgPSBzaWdcbiAgaW5jbHVkZSBTMF93aXRob3V0X2NvbXBhcmF0b3JcbiAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG4oKiogVGhlIHBvbHltb3JwaGljIHNpZ25hdHVyZXMgcmVxdWlyZSBhIG1hcHBpbmcgZnVuY3Rpb24gc28gcGVvcGxlIGNhbiB3cml0ZSBjb252ZXJzaW9uXG4gICAgZnVuY3Rpb25zIHdpdGhvdXQgZWl0aGVyICgxKSByZS1pbXBsZW1lbnRpbmcgdGhlIG1hcHBpbmcgZnVuY3Rpb24gaW5saW5lIG9yICgyKVxuICAgIHJlYWNoaW5nIGludG8gdGhlIHVuc3RhYmxlIHBhcnQgb2YgdGhlIG1vZHVsZS4gKilcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID0gc2lnXG4gIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgdmFsIG1hcFxuICAgIDogICgnYTEsICdhMiwgJ2EzKSB0XG4gICAgLT4gZjE6KCdhMSAtPiAnYjEpXG4gICAgLT4gZjI6KCdhMiAtPiAnYjIpXG4gICAgLT4gZjM6KCdhMyAtPiAnYjMpXG4gICAgLT4gKCdiMSwgJ2IyLCAnYjMpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICB0eXBlICgnYTEsICdhMiwgJ2EzLCAnYTQpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBtYXBcbiAgICA6ICAoJ2ExLCAnYTIsICdhMywgJ2E0KSB0XG4gICAgLT4gZjE6KCdhMSAtPiAnYjEpXG4gICAgLT4gZjI6KCdhMiAtPiAnYjIpXG4gICAgLT4gZjM6KCdhMyAtPiAnYjMpXG4gICAgLT4gZjQ6KCdhNCAtPiAnYjQpXG4gICAgLT4gKCdiMSwgJ2IyLCAnYjMsICdiNCkgdFxuZW5kXG5cbm1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMwX3dpdGhvdXRfY29tcGFyYXRvciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzBfd2l0aG91dF9jb21wYXJhdG9yIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzAgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIFMwIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzQgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA6PSAoJ2EsICdiLCAnYywgJ2QpIHRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvblxuXG4gICAgdHlwZSB0ID0gQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbi50ID1cbiAgICAgIHsgcG9zX2ZuYW1lIDogc3RyaW5nXG4gICAgICA7IHBvc19sbnVtIDogaW50XG4gICAgICA7IHBvc19ib2wgOiBpbnRcbiAgICAgIDsgcG9zX2NudW0gOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGZpZWxkcywgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5cbmxldCB0b19zdHJpbmcgPSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRvX3N0cmluZ1xubGV0IHNleHBfb2ZfdCA9IEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24uc2V4cF9vZl90XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtJbmZvXSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiBpcyBtYW55IHBsYWNlcyBwbGFjZXMgYXMgcG9zc2libGUuXG4gICBQbGVhc2UgYXZvaWQgYWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgSW5mb19pbnRmXG5cbm1vZHVsZSB0eXBlIFMgPSBCYXNlLkluZm8uU1xuXG5tb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBTb3VyY2VfY29kZV9wb3NpdGlvbjBcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcblxubW9kdWxlIFNleHAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXhwbGliLlNleHBcblxuICBpbmNsdWRlIChcbiAgc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZCA6XG4gIHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5tb2R1bGUgQmluYWJsZV9leG4gPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gZXhuIFtAQGRlcml2aW5nIHNleHBfb2YsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgdG9fYmluYWJsZSB0ID0gdCB8PiBbJXNleHBfb2Y6IHRdXG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IEV4bi5jcmVhdGVfc1xuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoU2V4cClcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA9XG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSBTZXhwLnN0YWJsZV93aXRuZXNzIG9mX2JpbmFibGUgdG9fYmluYWJsZVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEV4dGVuZCAoSW5mbyA6IEJhc2UuSW5mby5TKSA9IHN0cnVjdFxuICBpbmNsdWRlIEluZm9cblxuICBtb2R1bGUgSW50ZXJuYWxfcmVwciA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBCaW5hYmxlX2V4biA9IEJpbmFibGVfZXhuLlN0YWJsZVxuXG4gICAgICBtb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gU291cmNlX2NvZGVfcG9zaXRpb24uU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICAgICgqIFtzZXhwX29mX3RdIGFzIGRlZmluZWQgaGVyZSBpcyB1bnN0YWJsZTsgdGhpcyBpcyBPSyBiZWNhdXNlIHRoZXJlIGlzIG5vXG4gICAgICAgICAgICAgW3Rfb2Zfc2V4cF0uICBbc2V4cF9vZl90XSBpcyBvbmx5IHVzZWQgdG8gcHJvZHVjZSBhIHNleHAgdGhhdCBpcyBuZXZlclxuICAgICAgICAgICAgIGRlc2VyaWFsaXplZCBhcyBhIFtTb3VyY2VfY29kZV9wb3NpdGlvbl0uICopXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnNleHBfb2ZfdFxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSW5mby5JbnRlcm5hbF9yZXByLnQgPVxuICAgICAgICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBvZiBTZXhwLnRcbiAgICAgICAgICB8IFN0cmluZyBvZiBzdHJpbmdcbiAgICAgICAgICB8IEV4biBvZiBCaW5hYmxlX2V4bi5WMS50XG4gICAgICAgICAgfCBTZXhwIG9mIFNleHAudFxuICAgICAgICAgIHwgVGFnX3NleHAgb2Ygc3RyaW5nICogU2V4cC50ICogU291cmNlX2NvZGVfcG9zaXRpb24uVjEudCBvcHRpb25cbiAgICAgICAgICB8IFRhZ190IG9mIHN0cmluZyAqIHRcbiAgICAgICAgICB8IFRhZ19hcmcgb2Ygc3RyaW5nICogU2V4cC50ICogdFxuICAgICAgICAgIHwgT2ZfbGlzdCBvZiBpbnQgb3B0aW9uICogdCBsaXN0XG4gICAgICAgICAgfCBXaXRoX2JhY2t0cmFjZSBvZiB0ICogc3RyaW5nICgqIGJhY2t0cmFjZSAqKVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2YsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFN0YWJsZS5WMlxuXG4gICAgbGV0IHRvX2luZm8gPSBJbmZvLkludGVybmFsX3JlcHIudG9faW5mb1xuICAgIGxldCBvZl9pbmZvID0gSW5mby5JbnRlcm5hbF9yZXByLm9mX2luZm9cbiAgZW5kXG5cbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSW5mby50IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaF1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcblxuICAgICAgbGV0IHRvX2JpbmFibGUgPSBJbmZvLkludGVybmFsX3JlcHIub2ZfaW5mb1xuICAgICAgbGV0IG9mX2JpbmFibGUgPSBJbmZvLkludGVybmFsX3JlcHIudG9faW5mb1xuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoSW50ZXJuYWxfcmVwci5TdGFibGUuVjIpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA9XG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIEludGVybmFsX3JlcHIuU3RhYmxlLlYyLnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgb2ZfYmluYWJsZVxuICAgICAgICAgIHRvX2JpbmFibGVcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEluZm8udCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAgIChTZXhwKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IEluZm8uc2V4cF9vZl90XG4gICAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IEluZm8udF9vZl9zZXhwXG4gICAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG5cbiAgICAgIGxldCB0b19iaW5hYmxlID0gc2V4cF9vZl90XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IHRfb2Zfc2V4cFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoU2V4cClcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlIFNleHAuc3RhYmxlX3dpdG5lc3Mgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICB0eXBlIHQgPSBTdGFibGUuVjIudCBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxuaW5jbHVkZSBFeHRlbmQgKEJhc2UuSW5mbylcblxuIiwiaW5jbHVkZSBCYXNlLkVycm9yXG5pbmNsdWRlIEluZm8uRXh0ZW5kIChCYXNlLkVycm9yKVxuXG5sZXQgZmFpbHdpdGhzID9zdHJpY3QgfmhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIHJhaXNlIChjcmVhdGUgP3N0cmljdCB+aGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IGZhaWx3aXRocCA/c3RyaWN0IGhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIHJhaXNlIChjcmVhdGUgP3N0cmljdCB+aGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFJlc3VsdCA9IEJhc2UuUmVzdWx0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgUmVzdWx0LnQgPVxuICAgICAgfCBPayBvZiAnYVxuICAgICAgfCBFcnJvciBvZiAnYlxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBtYXAgeCB+ZjEgfmYyID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBFcnJvciBlcnIgLT4gRXJyb3IgKGYyIGVycilcbiAgICAgIHwgT2sgeCAtPiBPayAoZjEgeClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgVjFfc3RhYmxlX3VuaXRfdGVzdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChzdHJpbmcsIGludCkgVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5cbiAgICBsZXQgdGVzdHMgPVxuICAgICAgWyBWMS5PayBcImZvb1wiLCBcIihPayBmb28pXCIsIFwiXFwwMDBcXDAwM2Zvb1wiOyBWMS5FcnJvciA3LCBcIihFcnJvciA3KVwiLCBcIlxcMDAxXFwwMDdcIiBdXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgUmVzdWx0XG4iLCIoKiogQW4gaW50ZXJmYWNlIGZvciBjcmVhdGluZyB1bml0IHRlc3RzIHRvIGNoZWNrIHN0YWJpbGl0eSBvZiBzZXhwIGFuZCBiaW4taW9cbiAgICBzZXJpYWxpemF0aW9ucyAqKVxuXG5vcGVuISBJbXBvcnRcblxuXG5tb2R1bGUgdHlwZSBBcmcgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cblxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuXG5cbiAgKCoqIFt0ZXN0c10gaXMgYSBsaXN0IG9mICh2YWx1ZSwgc2V4cC1yZXByZXNlbnRhdGlvbiwgYmluLWlvLXJlcHJlc2VudGF0aW9uKSB0cmlwbGVzLlxuICAgICAgVGhlIHVuaXQgdGVzdHMgY2hlY2sgdGhhdCB0aGUgdHlwZSBwcm9wZXJseSBzZXJpYWxpemVzIGFuZFxuICAgICAgZGUtc2VyaWFsaXplcyBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIHJlcHJlc2VudGF0aW9ucy4gKilcbiAgdmFsIHRlc3RzIDogKHQgKiBzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbmVuZFxuXG4oKiogVW5vcmRlcmVkIGNvbnRhaW5lciB0ZXN0cyBhcmUgZm9yIHR5cGVzIHdpdGggc2VyaWFsaXphdGlvbnMgdGhhdCB3aWxsIGNvbnRhaW4gYVxuICAgIGNlcnRhaW4gc2V0IG9mIGVsZW1lbnRzIChlYWNoIHJlcHJlc2VudGVkIGJ5IGEgc2luZ2xlIHNleHAgb3IgYmluLWlvIHN0cmluZykgd2hpY2ggbWF5XG4gICAgYXBwZWFyIGluIGFueSBvcmRlciwgc3VjaCBhcyBoYXNoIHRhYmxlcyBhbmQgaGFzaCBzZXRzLiAqKVxubW9kdWxlIFVub3JkZXJlZF9jb250YWluZXJfdGVzdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgc2V4cHMgOiBzdHJpbmcgbGlzdFxuICAgIDsgYmluX2lvX2hlYWRlciA6IHN0cmluZ1xuICAgIDsgYmluX2lvX2VsZW1lbnRzIDogc3RyaW5nIGxpc3RcbiAgICB9XG5lbmRcblxubW9kdWxlIHR5cGUgVW5vcmRlcmVkX2NvbnRhaW5lcl9hcmcgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cblxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgdGVzdHMgOiAodCAqIFVub3JkZXJlZF9jb250YWluZXJfdGVzdC50KSBsaXN0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9yX2Vycm9yXG5cbnR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IudCkgUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG5tb2R1bGUgRXhwZWN0X3Rlc3RfY29uZmlnID0gc3RydWN0XG4gIG1vZHVsZSBJTyA9IEJhc2UuT3JfZXJyb3JcblxuICBsZXQgcnVuIGYgPSBva19leG4gKGYgKCkpXG4gIGxldCBzYW5pdGl6ZSBzID0gc1xuICBsZXQgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBFeHBlY3RfdGVzdF9jb25maWcudXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbmVuZFxuXG5tb2R1bGUgRXhwZWN0X3Rlc3RfY29uZmlnX3dpdGhfdW5pdF9leHBlY3QgPSBFeHBlY3RfdGVzdF9jb25maWdcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAoJ2EsIEVycm9yLlN0YWJsZS5WMS50KSBSZXN1bHQuU3RhYmxlLlYxLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCB4IH5mID0gUmVzdWx0LlN0YWJsZS5WMS5tYXAgeCB+ZjE6ZiB+ZjI6Rm4uaWRcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gKCdhLCBFcnJvci5TdGFibGUuVjIudCkgUmVzdWx0LlN0YWJsZS5WMS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBtYXAgeCB+ZiA9IFJlc3VsdC5TdGFibGUuVjEubWFwIHggfmYxOmYgfmYyOkZuLmlkXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TZXF1ZW5jZVxuXG5pbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICBtb2R1bGUgQmluYWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSAnYSBCYXNlLlNlcXVlbmNlLnRcblxuICAgIGxldCBvZl9iaW5hYmxlID0gQmFzZS5TZXF1ZW5jZS5vZl9saXN0XG4gICAgbGV0IHRvX2JpbmFibGUgPSBCYXNlLlNlcXVlbmNlLnRvX2xpc3RcbiAgZW5kKVxuXG5tb2R1bGUgU3RlcCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0ZXBcblxuICB0eXBlICgnYSwgJ3MpIHQgPSAoJ2EsICdzKSBTdGVwLnQgPVxuICAgIHwgRG9uZVxuICAgIHwgU2tpcCBvZiB7IHN0YXRlIDogJ3MgfVxuICAgIHwgWWllbGQgb2ZcbiAgICAgICAgeyB2YWx1ZSA6ICdhXG4gICAgICAgIDsgc3RhdGUgOiAnc1xuICAgICAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5tb2R1bGUgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudFxuXG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnQgPVxuICAgIHwgTGVmdCBvZiAnYVxuICAgIHwgUmlnaHQgb2YgJ2JcbiAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxubW9kdWxlIHR5cGUgSGVhcCA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgY3JlYXRlIDogY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHBvcF9taW4gOiAnYSB0IC0+ICgnYSAqICdhIHQpIG9wdGlvblxuZW5kXG5cbmxldCBtZXJnZV9hbGwgKG1vZHVsZSBIZWFwIDogSGVhcCkgc2VxcyB+Y29tcGFyZSA9XG4gIGxldCBtb2R1bGUgTWVyZ2VfYWxsX3N0YXRlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgaGVhcCA6ICgnYSAqICdhIEJhc2UuU2VxdWVuY2UudCkgSGVhcC50XG4gICAgICA7IG5vdF95ZXRfaW5faGVhcCA6ICdhIEJhc2UuU2VxdWVuY2UudCBsaXN0XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgbGV0IGNyZWF0ZSA9IEZpZWxkcy5jcmVhdGVcbiAgZW5kXG4gIGluXG4gIHVuZm9sZF9zdGVwXG4gICAgfmluaXQ6XG4gICAgICAoTWVyZ2VfYWxsX3N0YXRlLmNyZWF0ZVxuICAgICAgICAgfmhlYXA6KEhlYXAuY3JlYXRlIH5jb21wYXJlOihmdW4gYSBiIC0+IEJhc2UuQ29tcGFyYWJsZS5saWZ0IGNvbXBhcmUgfmY6ZnN0IGEgYikpXG4gICAgICAgICB+bm90X3lldF9pbl9oZWFwOnNlcXMpXG4gICAgfmY6KGZ1biB7IGhlYXA7IG5vdF95ZXRfaW5faGVhcCB9IC0+XG4gICAgICBtYXRjaCBub3RfeWV0X2luX2hlYXAgd2l0aFxuICAgICAgfCBzZXEgOjogbm90X3lldF9pbl9oZWFwIC0+XG4gICAgICAgIChtYXRjaCBFeHBlcnQubmV4dF9zdGVwIHNlcSB3aXRoXG4gICAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0geyBub3RfeWV0X2luX2hlYXA7IGhlYXAgfSB9XG4gICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHNlcSB9IC0+XG4gICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IHsgbm90X3lldF9pbl9oZWFwID0gc2VxIDo6IG5vdF95ZXRfaW5faGVhcDsgaGVhcCB9IH1cbiAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGVsdDsgc3RhdGUgPSBzZXEgfSAtPlxuICAgICAgICAgICBTa2lwIHsgc3RhdGUgPSB7IG5vdF95ZXRfaW5faGVhcDsgaGVhcCA9IEhlYXAuYWRkIGhlYXAgKGVsdCwgc2VxKSB9IH0pXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBIZWFwLnBvcF9taW4gaGVhcCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gRG9uZVxuICAgICAgICAgfCBTb21lICgoZWx0LCBzZXEpLCBoZWFwKSAtPlxuICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gZWx0OyBzdGF0ZSA9IHsgaGVhcDsgbm90X3lldF9pbl9oZWFwID0gWyBzZXEgXSB9IH0pKVxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBRdWlja2NoZWNrX2ludGZcbm9wZW4gQmFzZV9xdWlja2NoZWNrXG5tb2R1bGUgRmxvYXQgPSBCYXNlLkZsb2F0XG5tb2R1bGUgSW50ID0gQmFzZS5JbnRcbm1vZHVsZSBMaXN0ID0gQmFzZS5MaXN0XG5tb2R1bGUgT3B0aW9uID0gQmFzZS5PcHRpb25cbm1vZHVsZSBTZXQgPSBCYXNlLlNldFxubW9kdWxlIFNleHAgPSBCYXNlLlNleHBcblxubW9kdWxlIFBvbHltb3JwaGljX3R5cGVzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdmFyaWFudDIgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHZhcmlhbnQzID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHZhcmlhbnQ0ID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICB8IGBEIG9mICdkXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdmFyaWFudDUgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIHwgYEQgb2YgJ2RcbiAgICB8IGBFIG9mICdlXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHZhcmlhbnQ2ID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICB8IGBEIG9mICdkXG4gICAgfCBgRSBvZiAnZVxuICAgIHwgYEYgb2YgJ2ZcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiKSB0dXBsZTIgPSAnYSAqICdiIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHR1cGxlMyA9ICdhICogJ2IgKiAnYyBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdHVwbGU0ID0gJ2EgKiAnYiAqICdjICogJ2QgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0dXBsZTUgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgdHVwbGU2ID0gJ2EgKiAnYiAqICdjICogJ2QgKiAnZSAqICdmXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoLSdhLCAtJ2IsICdyKSBmbjIgPSAnYSAtPiAnYiAtPiAnciBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAncikgZm4zID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ3IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgLSdkLCAncikgZm40ID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ3IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAtJ2QsIC0nZSwgJ3IpIGZuNSA9ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+ICdyXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgLSdkLCAtJ2UsIC0nZiwgJ3IpIGZuNiA9ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+ICdmIC0+ICdyXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5lbmRcblxubW9kdWxlIE9ic2VydmVyID0gc3RydWN0XG4gIGluY2x1ZGUgT2JzZXJ2ZXJcblxuICBsZXQgb2ZfaGFzaCAodHlwZSBhKSAobW9kdWxlIE0gOiBEZXJpdmluZ19oYXNoIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIG9mX2hhc2hfZm9sZCBNLmhhc2hfZm9sZF90XG4gIDs7XG5cbiAgbGV0IHZhcmlhbnQyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MlxuICBsZXQgdmFyaWFudDMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQzXG4gIGxldCB2YXJpYW50NCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDRcbiAgbGV0IHZhcmlhbnQ1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NVxuICBsZXQgdmFyaWFudDYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQ2XG4gIGxldCB0dXBsZTIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlMlxuICBsZXQgdHVwbGUzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTNcbiAgbGV0IHR1cGxlNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU0XG4gIGxldCB0dXBsZTUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlNVxuICBsZXQgdHVwbGU2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTZcbiAgbGV0IG9mX3ByZWRpY2F0ZSBhIGIgfmYgPSB1bm1hcCAodmFyaWFudDIgYSBiKSB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gYEEgeCBlbHNlIGBCIHgpXG4gIGxldCBzaW5nbGV0b24gKCkgPSBvcGFxdWVcbiAgbGV0IGRvdWJsZXRvbiBmID0gb2ZfcHJlZGljYXRlIChzaW5nbGV0b24gKCkpIChzaW5nbGV0b24gKCkpIH5mXG4gIGxldCBlbnVtIF8gfmYgPSB1bm1hcCBpbnQgfmZcblxuICBsZXQgb2ZfbGlzdCBsaXN0IH5lcXVhbCA9XG4gICAgbGV0IGYgeCA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRpIGxpc3QgfmY6KGZ1biBfIHkgLT4gZXF1YWwgeCB5KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJRdWlja2NoZWNrLk9ic2VydmVyLm9mX2xpc3Q6IHZhbHVlIG5vdCBmb3VuZFwiXG4gICAgICB8IFNvbWUgKGksIF8pIC0+IGlcbiAgICBpblxuICAgIGVudW0gKExpc3QubGVuZ3RoIGxpc3QpIH5mXG4gIDs7XG5cbiAgbGV0IG9mX2Z1biBmID0gY3JlYXRlIChmdW4geCB+c2l6ZSB+aGFzaCAtPiBvYnNlcnZlIChmICgpKSB4IH5zaXplIH5oYXNoKVxuXG4gIGxldCBjb21wYXJpc29uIH5jb21wYXJlIH5lcSB+bHQgfmd0ID1cbiAgICB1bm1hcFxuICAgICAgKHZhcmlhbnQzIGx0IChzaW5nbGV0b24gKCkpIGd0KVxuICAgICAgfmY6KGZ1biB4IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZSB4IGVxIGluXG4gICAgICAgIGlmIGMgPCAwIHRoZW4gYEEgeCBlbHNlIGlmIGMgPiAwIHRoZW4gYEMgeCBlbHNlIGBCIHgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEdlbmVyYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyYXRvclxuICBvcGVuIExldF9zeW50YXhcblxuICBsZXQgc2luZ2xldG9uID0gcmV0dXJuXG5cbiAgbGV0IGRvdWJsZXRvbiB4IHkgPVxuICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBpZiBTcGxpdHRhYmxlX3JhbmRvbS5ib29sIHJhbmRvbSB0aGVuIHggZWxzZSB5KVxuICA7O1xuXG4gIGxldCBvZl9mdW4gZiA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gZ2VuZXJhdGUgKGYgKCkpIH5zaXplIH5yYW5kb20pXG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5wIHNlcSA9XG4gICAgaWYgRmxvYXQuKCA8PSApIHAgMC4gfHwgRmxvYXQuKCA+ICkgcCAxLlxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiBcIkdlbmVyYXRvci5vZl9zZXF1ZW5jZTogcHJvYmFiaWxpdHkgWyVmXSBvdXQgb2YgYm91bmRzXCIgcCk7XG4gICAgU2VxdWVuY2UuZGVsYXllZF9mb2xkXG4gICAgICBzZXFcbiAgICAgIH5pbml0OigpXG4gICAgICB+ZmluaXNoOihmdW4gKCkgLT4gZmFpbHdpdGggXCJHZW5lcmF0b3Iub2Zfc2VxdWVuY2U6IHJhbiBvdXQgb2YgdmFsdWVzXCIpXG4gICAgICB+ZjooZnVuICgpIHggfmsgLT4gd2VpZ2h0ZWRfdW5pb24gWyBwLCBzaW5nbGV0b24geDsgMS4gLS4gcCwgb2ZfZnVuIGsgXSlcbiAgOztcblxuICBsZXQgZ2VvbWV0cmljID0gR2VuZXJhdG9yLmludF9nZW9tZXRyaWNcbiAgbGV0IHNtYWxsX25vbl9uZWdhdGl2ZV9pbnQgPSBzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludFxuICBsZXQgc21hbGxfcG9zaXRpdmVfaW50ID0gc21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50XG4gIGxldCBsaXN0X3dpdGhfbGVuZ3RoIGxlbmd0aCB0ID0gbGlzdF93aXRoX2xlbmd0aCB0IH5sZW5ndGhcbiAgbGV0IHZhcmlhbnQyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDJcbiAgbGV0IHZhcmlhbnQzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDNcbiAgbGV0IHZhcmlhbnQ0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDRcbiAgbGV0IHZhcmlhbnQ1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDVcbiAgbGV0IHZhcmlhbnQ2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDZcbiAgbGV0IHR1cGxlMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMlxuICBsZXQgdHVwbGUzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGUzXG4gIGxldCB0dXBsZTQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTRcbiAgbGV0IHR1cGxlNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNVxuICBsZXQgdHVwbGU2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU2XG4gIGxldCBmbjIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjJcbiAgbGV0IGZuMyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuM1xuICBsZXQgZm40ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm40XG4gIGxldCBmbjUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjVcbiAgbGV0IGZuNiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNlxuXG4gIGxldCBjb21wYXJlX2ZuIGRvbSA9XG4gICAgZm4gZG9tIGludCA+PnwgZnVuIGdldF9pbmRleCB4IHkgLT4gWyVjb21wYXJlOiBpbnRdIChnZXRfaW5kZXggeCkgKGdldF9pbmRleCB5KVxuICA7O1xuXG4gIGxldCBlcXVhbF9mbiBkb20gPSBjb21wYXJlX2ZuIGRvbSA+PnwgZnVuIGNtcCB4IHkgLT4gSW50LiggPSApIChjbXAgeCB5KSAwXG5lbmRcblxubW9kdWxlIFNocmlua2VyID0gc3RydWN0XG4gIGluY2x1ZGUgU2hyaW5rZXJcblxuICBsZXQgZW1wdHkgKCkgPSBhdG9taWNcbiAgbGV0IHZhcmlhbnQyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50MlxuICBsZXQgdmFyaWFudDMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQzXG4gIGxldCB2YXJpYW50NCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDRcbiAgbGV0IHZhcmlhbnQ1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NVxuICBsZXQgdmFyaWFudDYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ2XG4gIGxldCB0dXBsZTIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlMlxuICBsZXQgdHVwbGUzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTNcbiAgbGV0IHR1cGxlNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU0XG4gIGxldCB0dXBsZTUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlNVxuICBsZXQgdHVwbGU2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTZcbmVuZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgR2VuZXJhdG9yXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gR2VuZXJhdG9yXG4gIGVuZFxuXG4gIGluY2x1ZGUgR2VuZXJhdG9yLk1vbmFkX2luZml4XG5cbiAgbGV0IHJldHVybiA9IEdlbmVyYXRvci5yZXR1cm5cbmVuZFxuXG5tb2R1bGUgQ29uZmlndXJlIChDb25maWcgOiBRdWlja2NoZWNrX2NvbmZpZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDb25maWdcblxuICBsZXQgbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcblxuICBsZXQgcmFuZG9tX3N0YXRlX29mX3NlZWQgc2VlZCA9XG4gICAgbWF0Y2ggc2VlZCB3aXRoXG4gICAgfCBgTm9uZGV0ZXJtaW5pc3RpYyAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5jcmVhdGUgKGZvcmNlIG5vbmRldGVybWluaXN0aWNfc3RhdGUpXG4gICAgfCBgRGV0ZXJtaW5pc3RpYyBzdHIgLT4gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUub2ZfaW50IChbJWhhc2g6IHN0cmluZ10gc3RyKVxuICA7O1xuXG4gIGxldCBtYWtlX3NlZWQgc2VlZCA6IFRlc3QuQ29uZmlnLlNlZWQudCA9XG4gICAgbWF0Y2ggc2VlZCB3aXRoXG4gICAgfCBgTm9uZGV0ZXJtaW5pc3RpYyAtPiBOb25kZXRlcm1pbmlzdGljXG4gICAgfCBgRGV0ZXJtaW5pc3RpYyBzdHJpbmcgLT4gRGV0ZXJtaW5pc3RpYyBzdHJpbmdcbiAgOztcblxuICBsZXQgbWFrZV9zaHJpbmtfY291bnQgPSBmdW5jdGlvblxuICAgIHwgYEV4aGF1c3RpdmUgLT4gSW50Lm1heF92YWx1ZVxuICAgIHwgYExpbWl0IG4gLT4gblxuICA7O1xuXG4gIGxldCBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzIDogVGVzdC5Db25maWcudCA9XG4gICAgeyBzZWVkID0gbWFrZV9zZWVkIChPcHRpb24udmFsdWUgc2VlZCB+ZGVmYXVsdDpkZWZhdWx0X3NlZWQpXG4gICAgOyBzaXplcyA9IE9wdGlvbi52YWx1ZSBzaXplcyB+ZGVmYXVsdDpkZWZhdWx0X3NpemVzXG4gICAgOyB0ZXN0X2NvdW50ID0gT3B0aW9uLnZhbHVlIHRyaWFscyB+ZGVmYXVsdDpkZWZhdWx0X3RyaWFsX2NvdW50XG4gICAgOyBzaHJpbmtfY291bnQgPVxuICAgICAgICBtYWtlX3Nocmlua19jb3VudCAoT3B0aW9uLnZhbHVlIHNocmlua19hdHRlbXB0cyB+ZGVmYXVsdDpkZWZhdWx0X3Nocmlua19hdHRlbXB0cylcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1ha2VfdGVzdF9tICh0eXBlIGEpIH5nZW4gfnNocmlua2VyIH5zZXhwX29mIDogKG1vZHVsZSBUZXN0LlMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlblxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBPcHRpb24udmFsdWUgc2hyaW5rZXIgfmRlZmF1bHQ6U2hyaW5rZXIuYXRvbWljXG4gICAgICBsZXQgc2V4cF9vZl90ID0gT3B0aW9uLnZhbHVlIHNleHBfb2YgfmRlZmF1bHQ6WyVzZXhwX29mOiBfXVxuICAgIGVuZFxuICAgIGluXG4gICAgKG1vZHVsZSBNKVxuICA7O1xuXG4gIGxldCByYW5kb21fdmFsdWUgPyhzZWVkID0gZGVmYXVsdF9zZWVkKSA/KHNpemUgPSAzMCkgZ2VuID1cbiAgICBsZXQgcmFuZG9tID0gcmFuZG9tX3N0YXRlX29mX3NlZWQgc2VlZCBpblxuICAgIEdlbmVyYXRvci5nZW5lcmF0ZSBnZW4gfnNpemUgfnJhbmRvbVxuICA7O1xuXG4gIGxldCByYW5kb21fc2VxdWVuY2UgP3NlZWQgP3NpemVzIGdlbiA9XG4gICAgbGV0IGNvbmZpZyA9XG4gICAgICBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFsczooU29tZSBJbnQubWF4X3ZhbHVlKSB+c2hyaW5rX2F0dGVtcHRzOk5vbmVcbiAgICBpblxuICAgIGxldCByZXR1cm4gPSByZWYgU2VxdWVuY2UuZW1wdHkgaW5cbiAgICBUZXN0LndpdGhfc2FtcGxlX2V4biB+Y29uZmlnIGdlbiB+ZjooZnVuIHNlcXVlbmNlIC0+IHJldHVybiA6PSBzZXF1ZW5jZSk7XG4gICAgIXJldHVyblxuICA7O1xuXG4gIGxldCBpdGVyID9zZWVkID9zaXplcyA/dHJpYWxzIGdlbiB+ZiA9XG4gICAgbGV0IGNvbmZpZyA9IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHM6Tm9uZSBpblxuICAgIFRlc3Qud2l0aF9zYW1wbGVfZXhuIH5jb25maWcgZ2VuIH5mOihmdW4gc2VxdWVuY2UgLT4gU2VxdWVuY2UuaXRlciBzZXF1ZW5jZSB+ZilcbiAgOztcblxuICBsZXQgdGVzdCA/c2VlZCA/c2l6ZXMgP3RyaWFscyA/c2hyaW5rZXIgP3Nocmlua19hdHRlbXB0cyA/c2V4cF9vZiA/ZXhhbXBsZXMgZ2VuIH5mID1cbiAgICBsZXQgY29uZmlnID0gbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0cyBpblxuICAgIGxldCB0ZXN0X20gPSBtYWtlX3Rlc3RfbSB+Z2VuIH5zaHJpbmtlciB+c2V4cF9vZiBpblxuICAgIFRlc3QucnVuX2V4biB+Y29uZmlnID9leGFtcGxlcyB+ZiB0ZXN0X21cbiAgOztcblxuICBsZXQgdGVzdF9vcl9lcnJvclxuICAgICAgICA/c2VlZFxuICAgICAgICA/c2l6ZXNcbiAgICAgICAgP3RyaWFsc1xuICAgICAgICA/c2hyaW5rZXJcbiAgICAgICAgP3Nocmlua19hdHRlbXB0c1xuICAgICAgICA/c2V4cF9vZlxuICAgICAgICA/ZXhhbXBsZXNcbiAgICAgICAgZ2VuXG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCBjb25maWcgPSBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzIGluXG4gICAgbGV0IHRlc3RfbSA9IG1ha2VfdGVzdF9tIH5nZW4gfnNocmlua2VyIH5zZXhwX29mIGluXG4gICAgVGVzdC5ydW4gfmNvbmZpZyA/ZXhhbXBsZXMgfmYgdGVzdF9tXG4gIDs7XG5cbiAgbGV0IHRlc3RfZGlzdGluY3RfdmFsdWVzXG4gICAgICAgICh0eXBlIGtleSlcbiAgICAgICAgP3NlZWRcbiAgICAgICAgP3NpemVzXG4gICAgICAgID9zZXhwX29mXG4gICAgICAgIGdlblxuICAgICAgICB+dHJpYWxzXG4gICAgICAgIH5kaXN0aW5jdF92YWx1ZXNcbiAgICAgICAgfmNvbXBhcmVcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBrZXlcblxuICAgICAgbGV0IChjb21wYXJlIDogdCAtPiB0IC0+IGludCkgPSBjb21wYXJlXG5cbiAgICAgIGxldCBzZXhwX29mX3QgPVxuICAgICAgICBtYXRjaCBzZXhwX29mIHdpdGhcbiAgICAgICAgfCBTb21lIHNleHBfb2YgLT4gc2V4cF9vZlxuICAgICAgICB8IE5vbmUgLT4gc2V4cF9vZl9vcGFxdWVcbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcbiAgICBpblxuICAgIGxldCBmYWlsIHNldCA9XG4gICAgICBsZXQgZXhwZWN0X2NvdW50ID0gZGlzdGluY3RfdmFsdWVzIGluXG4gICAgICBsZXQgYWN0dWFsX2NvdW50ID0gU2V0Lmxlbmd0aCBzZXQgaW5cbiAgICAgIGxldCB2YWx1ZXMgPVxuICAgICAgICBtYXRjaCBzZXhwX29mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHNleHBfb2ZfZWx0IC0+IFNvbWUgWyVzZXhwIChTZXQudG9fbGlzdCBzZXQgOiBlbHQgbGlzdCldXG4gICAgICBpblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImluc3VmZmljaWVudCBkaXN0aW5jdCB2YWx1ZXNcIlxuICAgICAgICAgICAgKHRyaWFscyA6IGludClcbiAgICAgICAgICAgIChleHBlY3RfY291bnQgOiBpbnQpXG4gICAgICAgICAgICAoYWN0dWFsX2NvdW50IDogaW50KVxuICAgICAgICAgICAgKHZhbHVlcyA6IChTZXhwLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKV1cbiAgICBpblxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgbGV0IHNldCA9IHJlZiAoU2V0LmVtcHR5IChtb2R1bGUgTSkpIGluXG4gICAgICBpdGVyID9zZWVkID9zaXplcyB+dHJpYWxzIGdlbiB+ZjooZnVuIGVsdCAtPlxuICAgICAgICBzZXQgOj0gU2V0LmFkZCAhc2V0IGVsdDtcbiAgICAgICAgaWYgU2V0Lmxlbmd0aCAhc2V0ID49IGRpc3RpbmN0X3ZhbHVlcyB0aGVuIHIucmV0dXJuICgpKTtcbiAgICAgIGZhaWwgIXNldClcbiAgOztcblxuICBsZXQgdGVzdF9jYW5fZ2VuZXJhdGVcbiAgICAgICAgP3NlZWRcbiAgICAgICAgP3NpemVzXG4gICAgICAgID8odHJpYWxzID0gZGVmYXVsdF9jYW5fZ2VuZXJhdGVfdHJpYWxfY291bnQpXG4gICAgICAgID9zZXhwX29mXG4gICAgICAgIGdlblxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgciA9IHJlZiBbXSBpblxuICAgIGxldCBmX2FuZF9lbnF1ZXVlIHJldHVybiB4ID0gaWYgZiB4IHRoZW4gcmV0dXJuIGBDYW5fZ2VuZXJhdGUgZWxzZSByIDo9IHggOjogIXIgaW5cbiAgICBtYXRjaFxuICAgICAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biByZXR1cm4gLT5cbiAgICAgICAgaXRlciA/c2VlZCA/c2l6ZXMgfnRyaWFscyBnZW4gfmY6KGZfYW5kX2VucXVldWUgcmV0dXJuLnJldHVybik7XG4gICAgICAgIGBDYW5ub3RfZ2VuZXJhdGUpXG4gICAgd2l0aFxuICAgIHwgYENhbl9nZW5lcmF0ZSAtPiAoKVxuICAgIHwgYENhbm5vdF9nZW5lcmF0ZSAtPlxuICAgICAgKG1hdGNoIHNleHBfb2Ygd2l0aFxuICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcImNhbm5vdCBnZW5lcmF0ZVwiXG4gICAgICAgfCBTb21lIHNleHBfb2ZfdmFsdWUgLT5cbiAgICAgICAgIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiY2Fubm90IGdlbmVyYXRlXCIgfmF0dGVtcHRzOighciA6IHZhbHVlIGxpc3QpXSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIENvbmZpZ3VyZSAoc3RydWN0XG4gICAgbGV0IGRlZmF1bHRfc2VlZCA9IGBEZXRlcm1pbmlzdGljIFwiYW4gYXJiaXRyYXJ5IGJ1dCBkZXRlcm1pbmlzdGljIHN0cmluZ1wiXG5cbiAgICBsZXQgZGVmYXVsdF90cmlhbF9jb3VudCA9XG4gICAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICAgIHwgVzY0IC0+IDEwXzAwMFxuICAgICAgfCBXMzIgLT4gMV8wMDBcbiAgICA7O1xuXG4gICAgbGV0IGRlZmF1bHRfY2FuX2dlbmVyYXRlX3RyaWFsX2NvdW50ID0gMTBfMDAwXG4gICAgbGV0IGRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzID0gYExpbWl0IDEwMDBcblxuICAgIGxldCBkZWZhdWx0X3NpemVzID1cbiAgICAgIFNlcXVlbmNlLmN5Y2xlX2xpc3RfZXhuIChMaXN0LnJhbmdlIDAgMzAgfnN0b3A6YGluY2x1c2l2ZSlcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSB0eXBlIFMgPSBTXG5tb2R1bGUgdHlwZSBTMSA9IFMxXG5tb2R1bGUgdHlwZSBTMiA9IFMyXG5tb2R1bGUgdHlwZSBTX2ludCA9IFNfaW50XG5tb2R1bGUgdHlwZSBTX3JhbmdlID0gU19yYW5nZVxuXG50eXBlIG5vbnJlYyBzZWVkID0gc2VlZFxudHlwZSBub25yZWMgc2hyaW5rX2F0dGVtcHRzID0gc2hyaW5rX2F0dGVtcHRzXG5cbm1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfY29uZmlnID0gUXVpY2tjaGVja19jb25maWdcbm1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfY29uZmlndXJlZCA9IFF1aWNrY2hlY2tfY29uZmlndXJlZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFF1aWNrY2hlY2thYmxlX2ludGZcblxubW9kdWxlIHR5cGUgQ29udiA9IENvbnZcbm1vZHVsZSB0eXBlIENvbnZfZmlsdGVyZWQgPSBDb252X2ZpbHRlcmVkXG5tb2R1bGUgdHlwZSBDb252MSA9IENvbnYxXG5tb2R1bGUgdHlwZSBDb252X2ZpbHRlcmVkMSA9IENvbnZfZmlsdGVyZWQxXG5tb2R1bGUgdHlwZSBTID0gUXVpY2tjaGVjay5TXG5tb2R1bGUgdHlwZSBTMSA9IFF1aWNrY2hlY2suUzFcbm1vZHVsZSB0eXBlIFMyID0gUXVpY2tjaGVjay5TMlxubW9kdWxlIHR5cGUgU19pbnQgPSBRdWlja2NoZWNrLlNfaW50XG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZVxuICAgIChRdWlja2NoZWNrYWJsZSA6IFMpXG4gICAgKENvbnYgOiBDb252IHdpdGggdHlwZSBxdWlja2NoZWNrYWJsZSA6PSBRdWlja2NoZWNrYWJsZS50KSA6IFMgd2l0aCB0eXBlIHQgOj0gQ29udi50ID1cbnN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvciB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2ZfcXVpY2tjaGVja2FibGUxXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUzEpXG4gICAgKENvbnYgOiBDb252MSB3aXRoIHR5cGUgJ2EgcXVpY2tjaGVja2FibGUgOj0gJ2EgUXVpY2tjaGVja2FibGUudCkgOlxuICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBDb252LnQgPSBzdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EpXG4gICAgICB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZV9maWx0ZXJlZFxuICAgIChRdWlja2NoZWNrYWJsZSA6IFMpXG4gICAgKENvbnYgOiBDb252X2ZpbHRlcmVkIHdpdGggdHlwZSBxdWlja2NoZWNrYWJsZSA6PSBRdWlja2NoZWNrYWJsZS50KSA6XG4gIFMgd2l0aCB0eXBlIHQgOj0gQ29udi50ID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyX21hcFxuICAgICAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXJfbWFwXG4gICAgICBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2ZfcXVpY2tjaGVja2FibGVfZmlsdGVyZWQxXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUzEpXG4gICAgKENvbnYgOiBDb252X2ZpbHRlcmVkMSB3aXRoIHR5cGUgJ2EgcXVpY2tjaGVja2FibGUgOj0gJ2EgUXVpY2tjaGVja2FibGUudCkgOlxuICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBDb252LnQgPSBzdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlcl9tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvciBnZW5lcmF0ZV9hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hKVxuICAgICAgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLmZpbHRlcl9tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcbiIsImluY2x1ZGUgQmFzZS5PcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uXG5cbmxldCBub3JtYWxpemUgfmxlbmd0aF9mdW4gdCBpID0gaWYgaSA8IDAgdGhlbiBpICsgbGVuZ3RoX2Z1biB0IGVsc2UgaVxuXG5sZXQgc2xpY2Ugfmxlbmd0aF9mdW4gfnN1Yl9mdW4gdCBzdGFydCBzdG9wID1cbiAgbGV0IHN0b3AgPSBpZiBzdG9wID0gMCB0aGVuIGxlbmd0aF9mdW4gdCBlbHNlIHN0b3AgaW5cbiAgbGV0IHBvcyA9IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IHN0YXJ0IGluXG4gIGxldCBsZW4gPSBub3JtYWxpemUgfmxlbmd0aF9mdW4gdCBzdG9wIC0gcG9zIGluXG4gIHN1Yl9mdW4gdCB+cG9zIH5sZW5cbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxub3BlbiBQZXJtcy5FeHBvcnRcbm1vZHVsZSBBcnJheSA9IEJhc2UuQXJyYXlcbm1vZHVsZSBDb3JlX3NlcXVlbmNlID0gU2VxdWVuY2VcblxuaW5jbHVkZSAoXG4gIEJhc2UuQXJyYXkgOlxuICBzaWdcbiAgICB0eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBnbG9iYWxpemUsIHNleHBfZ3JhbW1hcl1cbiAgZW5kKVxuXG50eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG5cbm1vZHVsZSBQcml2YXRlID0gQmFzZS5BcnJheS5Qcml2YXRlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5BcnJheVxuXG4gIGxldCBub3JtYWxpemUgdCBpID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5ub3JtYWxpemUgfmxlbmd0aF9mdW46bGVuZ3RoIHQgaVxuXG4gIGxldCBzbGljZSB0IHN0YXJ0IHN0b3AgPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uc2xpY2Ugfmxlbmd0aF9mdW46bGVuZ3RoIH5zdWJfZnVuOnN1YiB0IHN0YXJ0IHN0b3BcbiAgOztcblxuICBsZXQgbmdldCB0IGkgPSB0Lihub3JtYWxpemUgdCBpKVxuICBsZXQgbnNldCB0IGkgdiA9IHQuKG5vcm1hbGl6ZSB0IGkpIDwtIHZcblxuICBtb2R1bGUgU2VxdWVuY2UgPSBzdHJ1Y3RcbiAgICBvcGVuIEJhc2UuQXJyYXlcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgbGV0IHNldCA9IHNldFxuICBlbmRcblxuICAoKiBTZWUgT0NhbWwgcGVyZiBub3RlcyBmb3Igd2h5IHRoZXNlIGFycmF5IGJsaXRzIGFyZSBzcGVjaWFsIGNhc2VkIC0tIGluIHBhcnRpY3VsYXIsXG4gICAgIHRoZSBzZWN0aW9uIGVudGl0bGVkIFwiRmFzdCwgU2xvdyBhbmQgSW5jb3JyZWN0IEFycmF5IGJsaXRzXCIgb2ZcbiAgICAgaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTMwMjIwMDAwMjI5L2h0dHA6Ly9qYW5lc3RyZWV0LmdpdGh1Yi5jb20vb2NhbWwtcGVyZi1ub3Rlcy5odG1sICopXG4gIG1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRfID0gaW50IGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIG1vZHVsZSBVbnNhZmVfYmxpdCA9IHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOih0X1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0Oih0X1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdFwiXG4gICAgICBbQEBub2FsbG9jXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZVxuICAgICAgVGVzdF9ibGl0Lk1ha2VfYW5kX3Rlc3RcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgICAgbGV0IGVxdWFsID0gKCA9IClcbiAgICAgICAgICBsZXQgb2ZfYm9vbCBiID0gaWYgYiB0aGVuIDEgZWxzZSAwXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgfmxlbiAwXG5cbiAgICAgICAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gICAgdHlwZSB0XyA9IGZsb2F0IGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIG1vZHVsZSBVbnNhZmVfYmxpdCA9IHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOih0X1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0Oih0X1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0XCJcbiAgICAgIFtAQG5vYWxsb2NdXG4gICAgZW5kXG5cbiAgICBleHRlcm5hbCBnZXQgOiAodF9bQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG5cbiAgICBleHRlcm5hbCBzZXRcbiAgICAgIDogICh0X1tAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoZmxvYXRbQGxvY2FsX29wdF0pXG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX2dldFxuICAgICAgOiAgKHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IGZsb2F0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG5cbiAgICBleHRlcm5hbCB1bnNhZmVfc2V0XG4gICAgICA6ICAodF9bQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGZsb2F0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gICAgaW5jbHVkZVxuICAgICAgVGVzdF9ibGl0Lk1ha2VfYW5kX3Rlc3RcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICAgICBsZXQgZXF1YWwgPSBCYXNlLkZsb2F0LmVxdWFsXG4gICAgICAgICAgbGV0IG9mX2Jvb2wgYiA9IGlmIGIgdGhlbiAxLiBlbHNlIDAuXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgfmxlbiAwLlxuXG4gICAgICAgICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFBlcm1pc3Npb25lZCA9IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtcykgdFxuXG4gIGluY2x1ZGVcbiAgICBJbmRleGVkX2NvbnRhaW5lci5TMV93aXRoX2NyZWF0b3JzX3Blcm1pc3Npb25zXG4gICAgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG5cbiAgaW5jbHVkZSBCbGl0LlMxX3Blcm1pc3Npb25zIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuICBpbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlLlMxX3Blcm1pc3Npb25zIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuXG4gIGV4dGVybmFsIGxlbmd0aCA6ICgoJ2EsIF8pIHRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcblxuICBleHRlcm5hbCBnZXRcbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuXG4gIGV4dGVybmFsIHNldFxuICAgIDogICgoJ2EsIFs+IHdyaXRlIF0pIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWFycmF5X3NhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICA6ICAoKCdhLCBbPiB3cml0ZSBdKSB0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcblxuICB2YWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+IChmbG9hdCwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+ICdhIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBjcmVhdGVfbG9jYWwgOiBsZW46aW50IC0+ICdhIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdFtAbG9jYWxdKVxuICB2YWwgaW5pdCA6IGludCAtPiBmOigoaW50IC0+ICdhKVtAbG9jYWxdKSAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbWFrZV9tYXRyaXggOiBkaW14OmludCAtPiBkaW15OmludCAtPiAnYSAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjb3B5X21hdHJpeFxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdCwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgYXBwZW5kIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGNvbmNhdCA6ICgnYSwgWz4gcmVhZCBdKSB0IGxpc3QgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGNvcHkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgZmlsbCA6ICgnYSwgWz4gd3JpdGUgXSkgdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG1hcCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZGluZ19tYXBcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkX21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICdhY2MgKiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBtYXBpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGl0ZXJpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIGZvbGRpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoaW50IC0+ICdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgdmFsIGZvbGRpbmdfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGludCAtPiAnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkX21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChpbnQgLT4gJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjYyAqICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfcmlnaHRcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gJ2FjY1xuXG4gIHZhbCBzb3J0XG4gICAgOiAgP3BvczppbnRcbiAgICAtPiA/bGVuOmludFxuICAgIC0+ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgdmFsIHN0YWJsZV9zb3J0IDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiB1bml0XG4gIHZhbCBpc19zb3J0ZWQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiBib29sXG5cbiAgdmFsIGlzX3NvcnRlZF9zdHJpY3RseVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiBib29sXG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY29uY2F0X21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICgnYiwgWz4gcmVhZCBdKSB0KVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNvbmNhdF9tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoaW50IC0+ICdhIC0+ICgnYiwgWz4gcmVhZCBdKSB0KVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHQgKiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHQgKiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjYXJ0ZXNpYW5fcHJvZHVjdFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2EgKiAnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHRyYW5zcG9zZVxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdCwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHQgb3B0aW9uXG5cbiAgdmFsIHRyYW5zcG9zZV9leG5cbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHQsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIG5vcm1hbGl6ZSA6ICgnYSwgXykgdCAtPiBpbnQgLT4gaW50XG4gIHZhbCBzbGljZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG5nZXQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIG5zZXQgOiAoJ2EsIFs+IHdyaXRlIF0pIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIGZpbHRlcl9vcHQgOiAoJ2Egb3B0aW9uLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGNvdW50aSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgdmFsIGl0ZXIyX2V4blxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2IgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgdmFsIG1hcDJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAoJ2MsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2IgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgdmFsIGZvcl9hbGwyX2V4blxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2IgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiBib29sXG5cbiAgdmFsIGV4aXN0czJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+IGJvb2xcblxuICB2YWwgZmlsdGVyIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZpbHRlcmlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBzd2FwIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCByZXZfaW5wbGFjZSA6ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0IC0+IHVuaXRcbiAgdmFsIHJldiA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X3JldiA6ICdhIGxpc3QgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfbWFwIDogJ2EgbGlzdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X21hcGkgOiAnYSBsaXN0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X3Jldl9tYXAgOiAnYSBsaXN0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcGkgOiAnYSBsaXN0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBtYXBfaW5wbGFjZSA6ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0IC0+IGY6KCgnYSAtPiAnYSlbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgZmluZF9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2FcbiAgdmFsIGZpbmRfbWFwX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiXG4gIHZhbCBmaW5kaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gKGludCAqICdhKSBvcHRpb25cbiAgdmFsIGZpbmRpX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50ICogJ2FcbiAgdmFsIGZpbmRfbWFwaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfbWFwaV9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2JcblxuICB2YWwgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGVcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGVxdWFsOigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIHJlZHVjZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCgnYSAtPiAnYSAtPiAnYSlbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG4gIHZhbCByZWR1Y2VfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+ICdhIC0+ICdhKVtAbG9jYWxdKSAtPiAnYVxuXG4gIHZhbCBwZXJtdXRlXG4gICAgOiAgP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudFxuICAgIC0+ID9wb3M6aW50XG4gICAgLT4gP2xlbjppbnRcbiAgICAtPiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdFxuICAgIC0+IHVuaXRcblxuICB2YWwgcmFuZG9tX2VsZW1lbnQgOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgcmFuZG9tX2VsZW1lbnRfZXhuIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYVxuICB2YWwgemlwIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdiLCBbPiByZWFkIF0pIHQgLT4gKCdhICogJ2IsIFs8IF8gcGVybXMgXSkgdCBvcHRpb25cbiAgdmFsIHppcF9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2IsIFs+IHJlYWQgXSkgdCAtPiAoJ2EgKiAnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCB1bnppcCA6ICgnYSAqICdiLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHQgKiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBzb3J0ZWRfY29weVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBsYXN0IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2FcbiAgdmFsIGVxdWFsIDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGJvb2xcbiAgdmFsIHRvX3NlcXVlbmNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2EgU2VxdWVuY2UudFxuICB2YWwgdG9fc2VxdWVuY2VfbXV0YWJsZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhIFNlcXVlbmNlLnRcbmVuZFxuXG5tb2R1bGUgUGVybWlzc2lvbmVkIDogc2lnXG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBtb2R1bGUgSW50IDogc2lnXG4gICAgdHlwZSBub25yZWMgLSdwZXJtcyB0ID0gKGludCwgJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQmxpdC5TX3Blcm1pc3Npb25zIHdpdGggdHlwZSAncGVybXMgdCA6PSAncGVybXMgdFxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgIDogIHNyYzooWz4gcmVhZCBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgLT4gZHN0OihbPiB3cml0ZSBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgLT4gbGVuOmludFxuICAgICAgLT4gdW5pdFxuICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0XCJcbiAgICBbQEBub2FsbG9jXVxuICBlbmRcblxuICBtb2R1bGUgRmxvYXQgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAtJ3Blcm1zIHQgPSAoZmxvYXQsICdwZXJtcykgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIEJsaXQuU19wZXJtaXNzaW9ucyB3aXRoIHR5cGUgJ3Blcm1zIHQgOj0gJ3Blcm1zIHRcblxuICAgIGV4dGVybmFsIGdldFxuICAgICAgOiAgKFs+IHJlYWQgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IGZsb2F0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuXG4gICAgZXh0ZXJuYWwgc2V0XG4gICAgICA6ICAoWz4gd3JpdGUgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChmbG9hdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG5cbiAgICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgICA6ICAoWz4gcmVhZCBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gZmxvYXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcblxuICAgIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICAgIDogIChbPiByZWFkIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoZmxvYXRbQGxvY2FsX29wdF0pXG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgOiAgc3JjOihbPiByZWFkIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAtPiBkc3Q6KFs+IHdyaXRlIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdFwiXG4gICAgW0BAbm9hbGxvY11cbiAgZW5kXG5cbiAgdmFsIG9mX2FycmF5X2lkIDogJ2EgYXJyYXkgLT4gKCdhLCBbPCByZWFkX3dyaXRlIF0pIHRcbiAgdmFsIHRvX2FycmF5X2lkIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gJ2EgYXJyYXlcbiAgdmFsIHRvX3NlcXVlbmNlX2ltbXV0YWJsZSA6ICgnYSwgWz4gaW1tdXRhYmxlIF0pIHQgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIGluY2x1ZGUgUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwLCB0eXBlcmVwXVxuXG4gIG1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFQuSW50XG5cbiAgICB0eXBlIC0ncGVybXMgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5cbiAgbW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gICAgaW5jbHVkZSBULkZsb2F0XG5cbiAgICB0eXBlIC0ncGVybXMgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5cbiAgbGV0IHRvX2FycmF5X2lkID0gRm4uaWRcbiAgbGV0IG9mX2FycmF5X2lkID0gRm4uaWRcblxuICBpbmNsdWRlIChUIDogUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQpIFtAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgbGV0IHRvX2FycmF5ID0gY29weVxuICBsZXQgdG9fc2VxdWVuY2VfaW1tdXRhYmxlID0gdG9fc2VxdWVuY2VfbXV0YWJsZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgSW5kZXhlZF9jb250YWluZXIuUzFfd2l0aF9jcmVhdG9ycyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogKCdhIHRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6ICgnYSB0W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogKCdhIHRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2dldFxuICAgIDogICgnYSB0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICA6ICAoJ2EgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgY3JlYXRlX2xvY2FsIDogbGVuOmludCAtPiAnYSAtPiAoJ2EgdFtAbG9jYWxdKVxuICB2YWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+IGZsb2F0IHRcbiAgdmFsIGluaXQgOiBpbnQgLT4gZjooKGludCAtPiAnYSlbQGxvY2FsXSkgLT4gJ2EgdFxuICB2YWwgbWFrZV9tYXRyaXggOiBkaW14OmludCAtPiBkaW15OmludCAtPiAnYSAtPiAnYSB0IHRcbiAgdmFsIGNvcHlfbWF0cml4IDogJ2EgdCB0IC0+ICdhIHQgdFxuICB2YWwgYXBwZW5kIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGNvbmNhdCA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBmaWxsIDogJ2EgdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgLT4gdW5pdFxuXG4gIGluY2x1ZGUgQmxpdC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBmb2xkaW5nX21hcCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgZm9sZF9tYXAgOiAnYSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pIC0+ICdhY2MgKiAnYiB0XG4gIHZhbCBtYXBpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBpdGVyaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBmb2xkaSA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOigoaW50IC0+ICdiIC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYlxuXG4gIHZhbCBmb2xkaW5nX21hcGlcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGludCAtPiAnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAnYiB0XG5cbiAgdmFsIGZvbGRfbWFwaVxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoaW50IC0+ICdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICdhY2MgKiAnYiB0XG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pIC0+IGluaXQ6J2FjYyAtPiAnYWNjXG4gIHZhbCBzb3J0IDogP3BvczppbnQgLT4gP2xlbjppbnQgLT4gJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBzdGFibGVfc29ydCA6ICdhIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiB1bml0XG4gIHZhbCBpc19zb3J0ZWQgOiAnYSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGlzX3NvcnRlZF9zdHJpY3RseSA6ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgbWVyZ2UgOiAnYSB0IC0+ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2EgdFxuICB2YWwgY29uY2F0X21hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiIHQpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGNvbmNhdF9tYXBpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiIHQpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBwYXJ0aXRpb25pX3RmIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBjYXJ0ZXNpYW5fcHJvZHVjdCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgdHJhbnNwb3NlIDogJ2EgdCB0IC0+ICdhIHQgdCBvcHRpb25cbiAgdmFsIHRyYW5zcG9zZV9leG4gOiAnYSB0IHQgLT4gJ2EgdCB0XG4gIHZhbCBub3JtYWxpemUgOiAnYSB0IC0+IGludCAtPiBpbnRcbiAgdmFsIHNsaWNlIDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+ICdhIHRcbiAgdmFsIG5nZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICB2YWwgbnNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIGZpbHRlcl9vcHQgOiAnYSBvcHRpb24gdCAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBmaWx0ZXJfbWFwaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGZvcl9hbGxpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgY291bnRpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuICB2YWwgaXRlcjJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCgnYSAtPiAnYiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBtYXAyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBmOigoJ2EgLT4gJ2IgLT4gJ2MpW0Bsb2NhbF0pIC0+ICdjIHRcblxuICB2YWwgZm9sZDJfZXhuXG4gICAgOiAgJ2EgdFxuICAgIC0+ICdiIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYiAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9yX2FsbDJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCgnYSAtPiAnYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHMyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBmOigoJ2EgLT4gJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZmlsdGVyIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdFxuICB2YWwgZmlsdGVyaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBzd2FwIDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHJldl9pbnBsYWNlIDogJ2EgdCAtPiB1bml0XG4gIHZhbCByZXYgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIG9mX2xpc3RfcmV2IDogJ2EgbGlzdCAtPiAnYSB0XG4gIHZhbCBvZl9saXN0X21hcCA6ICdhIGxpc3QgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBvZl9saXN0X21hcGkgOiAnYSBsaXN0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcCA6ICdhIGxpc3QgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBvZl9saXN0X3Jldl9tYXBpIDogJ2EgbGlzdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBtYXBfaW5wbGFjZSA6ICdhIHQgLT4gZjooKCdhIC0+ICdhKVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBmaW5kX2V4biA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhXG4gIHZhbCBmaW5kX21hcF9leG4gOiAnYSB0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiXG4gIHZhbCBmaW5kaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAoaW50ICogJ2EpIG9wdGlvblxuICB2YWwgZmluZGlfZXhuIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludCAqICdhXG4gIHZhbCBmaW5kX21hcGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfbWFwaV9leG4gOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYlxuXG4gIHZhbCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZVxuICAgIDogICdhIHRcbiAgICAtPiBlcXVhbDooKCdhIC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhICogJ2EpIG9wdGlvblxuXG4gIHZhbCByZWR1Y2UgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYSAtPiAnYSlbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG4gIHZhbCByZWR1Y2VfZXhuIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2EgLT4gJ2EpW0Bsb2NhbF0pIC0+ICdhXG4gIHZhbCBwZXJtdXRlIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiA/cG9zOmludCAtPiA/bGVuOmludCAtPiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJhbmRvbV9lbGVtZW50IDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAnYSB0IC0+ICdhIG9wdGlvblxuICB2YWwgcmFuZG9tX2VsZW1lbnRfZXhuIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAnYSB0IC0+ICdhXG4gIHZhbCB6aXAgOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHQgb3B0aW9uXG4gIHZhbCB6aXBfZXhuIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG4gIHZhbCB1bnppcCA6ICgnYSAqICdiKSB0IC0+ICdhIHQgKiAnYiB0XG4gIHZhbCBzb3J0ZWRfY29weSA6ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2EgdFxuICB2YWwgbGFzdCA6ICdhIHQgLT4gJ2FcbiAgdmFsIGVxdWFsIDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCB0b19zZXF1ZW5jZSA6ICdhIHQgLT4gJ2EgQ29yZV9zZXF1ZW5jZS50XG4gIHZhbCB0b19zZXF1ZW5jZV9tdXRhYmxlIDogJ2EgdCAtPiAnYSBDb3JlX3NlcXVlbmNlLnRcbmVuZFxuXG5pbmNsdWRlIChUIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBhcnJheSkgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaXRlciB0IH5mOmludmFyaWFudF9hXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBULkludFxuXG4gIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBULkZsb2F0XG5cbiAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBfIChNIDogUykgOiBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybSkgdF9cblxuICBpbmNsdWRlIFBlcm1pc3Npb25lZCB3aXRoIHR5cGUgKCdhLCAncGVybSkgdCA6PSAoJ2EsICdwZXJtKSB0X1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIHR5cGUgKCdhLCAtJ3Blcm0pIHRfID0gJ2EgdFxuZW5kXG5cbm1vZHVsZSBfIChNIDogUGVybWlzc2lvbmVkKSA6IHNpZ1xuICB0eXBlICdhIHRfXG5cbiAgaW5jbHVkZSBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRfXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSAnYSB0XyA9ICgnYSwgcmVhZF93cml0ZSkgdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFR5cGVyZXBfbGliLlN0ZFxuaW5jbHVkZSBCYXNlLkxpc3RcblxudHlwZSAnYSB0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG5tb2R1bGUgQXNzb2MgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3NvY1xuXG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSAqICdiKSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQgY29tcGFyZSAodHlwZSBhIGIpIGNvbXBhcmVfYSBjb21wYXJlX2IgPSBbJWNvbXBhcmU6IChhICogYikgbGlzdF1cbmVuZFxuXG5sZXQgdG9fc3RyaW5nIH5mIHQgPVxuICBTZXhwbGliLlNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgKGZ1biB4IC0+IFNleHBsaWIuU2V4cC5BdG9tIHgpIChtYXAgdCB+ZikpXG47O1xuXG5pbmNsdWRlIENvbXBhcmF0b3IuRGVyaXZlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3RcbmxldCBnZW5fbm9uX2VtcHR5ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X25vbl9lbXB0eVxuXG5sZXQgZ2VuX3dpdGhfbGVuZ3RoIGxlbmd0aCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF93aXRoX2xlbmd0aCBxdWlja2NoZWNrX2dlbmVyYXRvciB+bGVuZ3RoXG47O1xuXG5sZXQgZ2VuX2ZpbHRlcmVkID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X2ZpbHRlcmVkXG5sZXQgZ2VuX3Blcm11dGF0aW9ucyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF9wZXJtdXRhdGlvbnNcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmxpc3RcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmxpc3RcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBIYXNodGJsX2ludGZcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2h0YmxfaW50Zi5IYXNoYWJsZVxubW9kdWxlIE1lcmdlX2ludG9fYWN0aW9uID0gSGFzaHRibF9pbnRmLk1lcmdlX2ludG9fYWN0aW9uXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5cbmxldCBmYWlsd2l0aHMgPSBFcnJvci5mYWlsd2l0aHNcblxubW9kdWxlIENyZWF0b3JzID0gSGFzaHRibC5DcmVhdG9yc1xuXG5pbmNsdWRlIChcbiAgSGFzaHRibCA6XG4gIHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIEhhc2h0YmwudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBCYXNlLkhhc2h0YmwuU193aXRob3V0X3N1Ym1vZHVsZXMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICBlbmQpXG5cbmxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuXG5tb2R1bGUgVXNpbmdfaGFzaGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKCkgPVxuICAgIGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIGwgPVxuICAgIGNyZWF0ZV9tYXBwZWRcbiAgICAgID9ncm93dGhfYWxsb3dlZFxuICAgICAgP3NpemVcbiAgICAgIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH5nZXRfa2V5XG4gICAgICB+Z2V0X2RhdGFcbiAgICAgIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yXG4gICAgICA/Z3Jvd3RoX2FsbG93ZWRcbiAgICAgID9zaXplXG4gICAgICAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gICAgICB+Z2V0X2tleVxuICAgICAgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGwgPVxuICAgIGdyb3VwXG4gICAgICA/Z3Jvd3RoX2FsbG93ZWRcbiAgICAgID9zaXplXG4gICAgICAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gICAgICB+Z2V0X2tleVxuICAgICAgfmdldF9kYXRhXG4gICAgICB+Y29tYmluZVxuICAgICAgbFxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluIHdpdGggdHlwZSAoJ2EsICdiKSBoYXNodGJsID0gKCdhLCAnYikgdFxubW9kdWxlIHR5cGUgUyA9IFMgd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBTX2JpbmFibGUgd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBTX3N0YWJsZSA9IFNfc3RhYmxlIHdpdGggdHlwZSAoJ2EsICdiKSBoYXNodGJsID0gKCdhLCAnYikgdFxubW9kdWxlIHR5cGUgS2V5X3BsYWluID0gS2V5X3BsYWluXG5tb2R1bGUgdHlwZSBLZXkgPSBLZXlcbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlID0gS2V5X2JpbmFibGVcbm1vZHVsZSB0eXBlIEtleV9zdGFibGUgPSBLZXlfc3RhYmxlXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibC5Qb2x5XG5cbiAgbGV0IHZhbGlkYXRlID0gdmFsaWRhdGVcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgICAgIHR5cGUgKCdhLCAnYikgZWwgPSAnYSAqICdiIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiOGYzZTQ0NWMtNDk5Mi0xMWU2LWEyNzktMzcwM2JlMzExZTdiXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkhhc2h0YmxcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSB+c2l6ZTpsZW4gKCkgaW5cbiAgICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IGtleSwgZGF0YSA9IG5leHQgKCkgaW5cbiAgICAgICAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gc2V0IHQgfmtleSB+ZGF0YVxuICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWx3aXRoIFwiQ29yZV9oYXNodGJsLmJpbl9yZWFkX3RfOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlfcGxhaW5cblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuXG4gIHR5cGUga2V5ID0gVC5LZXkudFxuICB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2EgdCA9IChULktleS50LCAnYSkgaGFzaHRibFxuICB0eXBlICdhIGtleV8gPSBULktleS50XG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBULktleS50XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgKFxuICAgIEhhc2h0YmwgOlxuICAgIHNpZ1xuICAgICAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgaGFzaHRibFxuICAgIGVuZClcblxuICBsZXQgZXF1YWwgPSBIYXNodGJsLmVxdWFsXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2tleSB0ID0gaW52YXJpYW50IGlnbm9yZSBpbnZhcmlhbnRfa2V5IHRcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3YgdCA9IFBvbHkuc2V4cF9vZl90IFQuS2V5LnNleHBfb2ZfdCBzZXhwX29mX3YgdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGtleSkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIEtleS50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoS2V5JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBrZXkpID1cbiAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBULktleVxuICAgICAgICBpbmNsdWRlIEtleSdcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgdHlwZSAnYSBlbCA9IEtleS50ICogJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4ZmFiYWIwYS00OTkyLTExZTYtOGNjYS05YmEyYzQ2ODZkOWVcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuSGFzaHRibFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIH5zaXplOmxlbiAoKSBpblxuICAgICAgICBmb3IgX2kgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICBsZXQga2V5LCBkYXRhID0gbmV4dCAoKSBpblxuICAgICAgICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzZXQgdCB+a2V5IH5kYXRhXG4gICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICAgIFwiSGFzaHRibC5iaW5fcmVhZF90OiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAgICAgICAga2V5XG4gICAgICAgICAgICAgIFslc2V4cF9vZjogS2V5LnRdXG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzXG4gICAgICAoS2V5JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGtleSkgPVxuICBzdHJ1Y3RcbiAgICAoKiBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGhhc2h0YmwgaXMgcmVsaWVkIG9uIGJ5IHN0YWJsZSBtb2R1bGVzXG4gICAgICAgKGUuZy4gSGFzaHRhYmxlLlN0YWJsZSkgYW5kIGlzIHRoZXJlZm9yZSBhc3N1bWVkIHRvIGJlIHN0YWJsZS4gIFNvLCBpZiB0aGUga2V5IGFuZFxuICAgICAgIGRhdGEgY2FuIHByb3ZpZGUgYSBzdGFibGUgd2l0bmVzc2VzLCB0aGVuIHdlIGNhbiBzYWZlbHkgdGhlIGhhc2h0YmwgaXMgYWxzb1xuICAgICAgIHN0YWJsZS4gKilcbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgKHR5cGUgZGF0YSkgKF9kYXRhX3N0YWJsZV93aXRuZXNzIDogZGF0YSBTdGFibGVfd2l0bmVzcy50KVxuICAgICAgOiBkYXRhIHQgU3RhYmxlX3dpdG5lc3MudFxuICAgICAgPVxuICAgICAgbGV0IChfIDoga2V5IFN0YWJsZV93aXRuZXNzLnQpID0gS2V5Jy5zdGFibGVfd2l0bmVzcyBpblxuICAgICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogS2V5XG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoVC5LZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleV9iaW5hYmxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChULktleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9zdGFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlfc3RhYmxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoVC5LZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEtleSA6IEtleV9wbGFpbikgPSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBLZXlcblxuICAgIGxldCBoYXNoYWJsZSA9XG4gICAgICB7IEhhc2hhYmxlLmhhc2ggPSBLZXkuaGFzaDsgY29tcGFyZSA9IEtleS5jb21wYXJlOyBzZXhwX29mX3QgPSBLZXkuc2V4cF9vZl90IH1cbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChLZXkgOiBLZXkpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbiAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEtleSA6IEtleV9iaW5hYmxlKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKEtleSlcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3N0YWJsZSAoS2V5IDogS2V5X3N0YWJsZSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2JpbmFibGUgKEtleSlcbiAgaW5jbHVkZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChLZXkpXG5lbmRcblxubW9kdWxlIE0gPSBIYXNodGJsLk1cblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG5cbm1vZHVsZSBGb3JfZGVyaXZpbmcgOiBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCA9IHN0cnVjdFxuICBpbmNsdWRlIChIYXNodGJsIDogSGFzaHRibC5Gb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdClcblxuICBtb2R1bGUgdHlwZSBNX3F1aWNrY2hlY2sgPSBNX3F1aWNrY2hlY2tcblxuICBsZXQgb2ZfYWxpc3Rfb3B0aW9uIG0gYWxpc3QgPSBSZXN1bHQub2sgKG9mX2FsaXN0X29yX2Vycm9yIG0gYWxpc3QpXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSlcbiAgICAgICAgcXVpY2tjaGVja19nZW5lcmF0b3JfZGF0YVxuICAgID1cbiAgICBbJXF1aWNrY2hlY2suZ2VuZXJhdG9yOiAoS2V5LnQgKiBkYXRhKSBMaXN0LnRdXG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyX21hcCB+Zjoob2ZfYWxpc3Rfb3B0aW9uIChtb2R1bGUgS2V5KSlcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgICAgICh0eXBlIGtleSlcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpXG4gICAgICAgIHF1aWNrY2hlY2tfb2JzZXJ2ZXJfZGF0YVxuICAgID1cbiAgICBbJXF1aWNrY2hlY2sub2JzZXJ2ZXI6IChLZXkudCAqIGRhdGEpIExpc3QudF0gfD4gUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCB+Zjp0b19hbGlzdFxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3RcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSlcbiAgICAgICAgcXVpY2tjaGVja19zaHJpbmtlcl9kYXRhXG4gICAgPVxuICAgIFslcXVpY2tjaGVjay5zaHJpbmtlcjogKEtleS50ICogZGF0YSkgTGlzdC50XVxuICAgIHw+IFF1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyX21hcFxuICAgICAgICAgfmY6KG9mX2FsaXN0X29wdGlvbiAobW9kdWxlIEtleSkpXG4gICAgICAgICB+Zl9pbnZlcnNlOnRvX2FsaXN0XG4gIDs7XG5lbmRcblxuaW5jbHVkZSBGb3JfZGVyaXZpbmdcblxubGV0IGhhc2hhYmxlID0gSGFzaHRibC5Qcml2YXRlLmhhc2hhYmxlXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaF9zZXRfaW50ZlxuaW5jbHVkZSBCYXNlLkhhc2hfc2V0XG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluIHdpdGggdHlwZSAnYSBoYXNoX3NldCA6PSAnYSB0XG5tb2R1bGUgdHlwZSBTID0gUyB3aXRoIHR5cGUgJ2EgaGFzaF9zZXQgOj0gJ2EgdFxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlIHdpdGggdHlwZSAnYSBoYXNoX3NldCA6PSAnYSB0XG5tb2R1bGUgdHlwZSBTX3N0YWJsZSA9IFNfc3RhYmxlIHdpdGggdHlwZSAnYSBoYXNoX3NldCA6PSAnYSB0XG5tb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBIYXNodGJsLktleV9wbGFpblxubW9kdWxlIHR5cGUgRWx0ID0gSGFzaHRibC5LZXlcbm1vZHVsZSB0eXBlIEVsdF9iaW5hYmxlID0gSGFzaHRibC5LZXlfYmluYWJsZVxubW9kdWxlIHR5cGUgRWx0X3N0YWJsZSA9IEhhc2h0YmwuS2V5X3N0YWJsZVxuXG5tb2R1bGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdF9wbGFpblxuXG4gICAgdmFsIGhhc2hhYmxlIDogRWx0LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgZWx0ID0gVC5FbHQudFxuICB0eXBlIG5vbnJlYyB0ID0gZWx0IHRcblxuICBsZXQgZXF1YWwgPSBlcXVhbFxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gVC5FbHQudFxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IFBvbHkuc2V4cF9vZl90IFQuRWx0LnNleHBfb2ZfdCB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGVsdCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgWC50X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGVsdCkgPVxuICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgVC5FbHRcbiAgICAgICAgaW5jbHVkZSBYXG4gICAgICBlbmRcblxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcbiAgICAgIHR5cGUgZWwgPSBFbHQudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBfID0gYmluX2VsXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImFkMzgxNjcyLTQ5OTItMTFlNi05ZTM2LWI3NmRjOGNkNDY2ZlwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5IYXNoX3NldFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciA9IGl0ZXJcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIH5zaXplOmxlbiAoKSBpblxuICAgICAgICBmb3IgX2kgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICBsZXQgdiA9IG5leHQgKCkgaW5cbiAgICAgICAgICBhZGQgdCB2XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGVsdCkgPVxuICBzdHJ1Y3RcbiAgICAoKiBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGhhc2hfc2V0IGlzIHVzZWQgaW4gdGhlIHN0YWJsZSBtb2R1bGVzIGJlbG93LCBzbyBpdCdzXG4gICAgICAgYXNzdW1lZCB0byBiZSBzdGFibGUgKGlmIHRoZSBlbHQgaXMgc3RhYmxlKSAuICopXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIGxldCAoXyA6IGVsdCBTdGFibGVfd2l0bmVzcy50KSA9IFguc3RhYmxlX3dpdG5lc3MgaW5cbiAgICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdFxuXG4gICAgdmFsIGhhc2hhYmxlIDogRWx0LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoVC5FbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdF9iaW5hYmxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKFQuRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3N0YWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdF9zdGFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEVsdC50IEhhc2h0YmwuSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKFQuRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChFbHQgOiBFbHRfcGxhaW4pID0gTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICBtb2R1bGUgRWx0ID0gRWx0XG5cbiAgICBsZXQgaGFzaGFibGUgPSBIYXNodGJsLkhhc2hhYmxlLm9mX2tleSAobW9kdWxlIEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoRWx0IDogRWx0KSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW4gKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChFbHQgOiBFbHRfYmluYWJsZSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChFbHQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9zdGFibGUgKEVsdCA6IEVsdF9zdGFibGUpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9iaW5hYmxlIChFbHQpXG4gIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoRWx0KVxuZW5kXG5cbm1vZHVsZSBVc2luZ19oYXNoYWJsZSA9IHN0cnVjdFxuICB0eXBlICdhIGVsdCA9ICdhXG5cbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlICgpID1cbiAgICBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuZW5kXG5cbmxldCBoYXNoYWJsZSA9IFByaXZhdGUuaGFzaGFibGVcbmxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG1cblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3QgKHR5cGUga2V5KSAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSkgPVxuICBbJXF1aWNrY2hlY2suZ2VuZXJhdG9yOiBLZXkudCBMaXN0MC50XVxuICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6KG9mX2xpc3QgKG1vZHVsZSBLZXkpKVxuOztcblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdCAodHlwZSBrZXkpIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KSA9XG4gIFslcXVpY2tjaGVjay5vYnNlcnZlcjogS2V5LnQgTGlzdDAudF0gfD4gUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCB+Zjp0b19saXN0XG47O1xuXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlcl9tX190ICh0eXBlIGtleSkgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpID1cbiAgWyVxdWlja2NoZWNrLnNocmlua2VyOiBLZXkudCBMaXN0MC50XVxuICB8PiBRdWlja2NoZWNrLlNocmlua2VyLm1hcCB+Zjoob2ZfbGlzdCAobW9kdWxlIEtleSkpIH5mX2ludmVyc2U6dG9fbGlzdFxuOztcbiIsIigqKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGludGVyZmFjZXMgdXNlZCBpbiB7eyFNYXB9W01hcF19LiBTZWUgdGhvc2UgZG9jcyBmb3IgYSBkZXNjcmlwdGlvblxuICAgIG9mIHRoZSBkZXNpZ24uXG5cbiAgICBUaGlzIG1vZHVsZSBkZWZpbmVzIG1vZHVsZSB0eXBlc1xuICAgIFt7Q3JlYXRvcnMsQWNjZXNzb3JzfXsxLDIsMyxfZ2VuZXJpYyxfd2l0aF9jb21wYXJhdG9yfV0uIEl0IHVzZXMgY2hlY2sgZnVuY3RvcnMgdG9cbiAgICBlbnN1cmUgdGhhdCBlYWNoIG1vZHVsZSB0eXBlIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBjb3JyZXNwb25kaW5nIFtfZ2VuZXJpY10gb25lLlxuXG4gICAgV2UgbXVzdCB0cmVhdCBbQ3JlYXRvcnNdIGFuZCBbQWNjZXNzb3JzXSBzZXBhcmF0ZWx5LCBiZWNhdXNlIHdlIHNvbWV0aW1lcyBuZWVkIHRvXG4gICAgY2hvb3NlIGRpZmZlcmVudCBpbnN0YW50aWF0aW9ucyBvZiB0aGVpciBbb3B0aW9uc10uIEluIHBhcnRpY3VsYXIsIFtNYXBdIGl0c2VsZlxuICAgIG1hdGNoZXMgW0NyZWF0b3JzM193aXRoX2NvbXBhcmF0b3JdIGJ1dCBbQWNjZXNzb3JzM10gKHdpdGhvdXQgY29tcGFyYXRvcikuXG4qKVxuXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxubW9kdWxlIE1hcCA9IEJhc2UuTWFwXG5tb2R1bGUgT3JfZHVwbGljYXRlID0gTWFwLk9yX2R1cGxpY2F0ZVxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IE1hcC5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IE1hcC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IE1hcC5XaXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSBUcmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZVxuXG5tb2R1bGUgdHlwZSBLZXlfcGxhaW4gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X2hhc2hhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlX2hhc2hhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5lbmRcblxubW9kdWxlIEtleV9iaW5faW8gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG4gIGVuZFxuXG4gIHR5cGUgKCd0LCAnYykgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICd0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgTWFwLkFjY2Vzc29yc19nZW5lcmljXG5cbiAgdmFsIGtleV9zZXRcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0IC0+ICgnayBrZXksICdjbXAgY21wKSBCYXNlLlNldC50KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCB2YWxpZGF0ZVxuICAgIDogIG5hbWU6KCdrIGtleSAtPiBzdHJpbmcpXG4gICAgLT4gJ3YgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdrIGtleSAtPiBzdHJpbmcpXG4gICAgLT4gKCdrIGtleSAqICd2KSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdrIGtleSBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2sga2V5IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIE1hcC5DcmVhdG9yc19nZW5lcmljXG5cbiAgdmFsIG9mX2hhc2h0YmxfZXhuXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXksICd2KSBIYXNodGJsLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICAoKiogTmV2ZXIgcmVxdWlyZXMgYSBjb21wYXJhdG9yIGJlY2F1c2UgaXQgY2FuIGdldCBvbmUgZnJvbSB0aGUgaW5wdXQgW1NldC50XS4gKilcbiAgdmFsIG9mX2tleV9zZXRcbiAgICA6ICAoJ2sga2V5LCAnY21wIGNtcCkgQmFzZS5TZXQudFxuICAgIC0+IGY6KCgnayBrZXkgLT4gJ3YpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvclxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICdrIGtleSBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgICAtPiAndiBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWVcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAnYSBjbXBcbiAgdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnNcbiAgdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnNcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9uc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5lbmRcblxubW9kdWxlIE1ha2VfU19wbGFpbl90cmVlIChLZXkgOiBDb21wYXJhdG9yLlMpID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlICdhIHQgPSAoS2V5LnQsICdhLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICdiIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAnYiB0XG4gICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9IEtleS50XG4gICAgICB3aXRoIHR5cGUgJ2EgY21wIDo9IEtleS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuXG4gICAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgICAoSyA6IHNpZ1xuICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICAgIGVuZFxuICAgICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgICB0eXBlIF8gdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IHNpZ1xuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIHR5cGUgKydhIHQgPSAoS2V5LnQsICdhLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBNYXAudFxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAnYiB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9IChLZXkudCwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnayBrZXkgOj0gS2V5LnRcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IEtleS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5cbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgdHlwZSBfIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogQmluYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfaGFzaCAoS2V5IDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGhhc2hdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICBLZXkudCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgS2V5LnQgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAgIC0+ICd2IHQgUXVpY2tjaGVjay5TaHJpbmtlci50IClcbiAgICAgICAgV2l0aG91dF9jb21wYXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIG1vZHVsZSBLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTX3BsYWluIHdpdGggbW9kdWxlIEtleSA6PSBLZXlcbiAgaW5jbHVkZSBTZXhwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gc2lnXG4gIG1vZHVsZSBLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFMgd2l0aCBtb2R1bGUgS2V5IDo9IEtleVxuICBpbmNsdWRlIEJpbmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuTWFwLkZvcl9kZXJpdmluZ1xuICBtb2R1bGUgTSA9IEJhc2UuTWFwLk1cblxuICAoKiogVGhlIGZvbGxvd2luZyBbKmJpbipdIGZ1bmN0aW9ucyBzdXBwb3J0IGJpbi1pbyBvbiBiYXNlLXN0eWxlIG1hcHMsXG4gICAgICBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBpbnQgTWFwLk0oU3RyaW5nKS50IFtAQGRlcml2aW5nIGJpbl9pb10gXX0gKilcblxuICB2YWwgYmluX3NoYXBlX21fX3QgOiAoJ2EsICdjKSBLZXlfYmluX2lvLnQgLT4gQmluX3Byb3QuU2hhcGUudCAtPiBCaW5fcHJvdC5TaGFwZS50XG5cbiAgdmFsIGJpbl9zaXplX21fX3RcbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5TaXplLnNpemVyXG4gICAgLT4gKCdhLCAnYiwgJ2MpIHQgQmluX3Byb3QuU2l6ZS5zaXplclxuXG4gIHZhbCBiaW5fd3JpdGVfbV9fdFxuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LldyaXRlLndyaXRlclxuICAgIC0+ICgnYSwgJ2IsICdjKSB0IEJpbl9wcm90LldyaXRlLndyaXRlclxuXG4gIHZhbCBiaW5fcmVhZF9tX190XG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuUmVhZC5yZWFkZXJcbiAgICAtPiAoJ2EsICdiLCAnYykgdCBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gIHZhbCBfX2Jpbl9yZWFkX21fX3RfX1xuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LlJlYWQucmVhZGVyXG4gICAgLT4gKGludCAtPiAoJ2EsICdiLCAnYykgdCkgQmluX3Byb3QuUmVhZC5yZWFkZXJcblxuICAoKiogVGhlIGZvbGxvd2luZyBbcXVpY2tjaGVjaypdIGZ1bmN0aW9ucyBzdXBwb3J0IGRlcml2aW5nIHF1aWNrY2hlY2sgb24gYmFzZS1zdHlsZSBtYXBzLFxuICAgICAgZS5nLjpcblxuICAgICAge1sgdHlwZSB0ID0gaW50IE1hcC5NKFN0cmluZykudCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXSBdfSAqKVxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gIGVuZFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19vYnNlcnZlcl9tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmdfc3RhYmxlID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICBtb2R1bGUgdHlwZSBTdGFibGVfd2l0bmVzc19tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudFxuICBlbmRcblxuICB2YWwgc3RhYmxlX3dpdG5lc3NfbV9fdFxuICAgIDogIChtb2R1bGUgU3RhYmxlX3dpdG5lc3NfbSB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gJ3YgU3RhYmxlX3dpdG5lc3MudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgU3RhYmxlX3dpdG5lc3MudFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gTWFwX2ludGZcbm1vZHVsZSBMaXN0ID0gTGlzdDBcblxubW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSAoJ2ssICd2KSB0ID0gJ2sgKiBbIGBMZWZ0IG9mICd2IHwgYFJpZ2h0IG9mICd2IHwgYFVuZXF1YWwgb2YgJ3YgKiAndiBdXG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiAoaW50LCBzdHJpbmcpIHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCAwMDY3NGJlOWZlOGRmZTllOWFkNDc2MDY3ZDdkODEwMSB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBtYXAgKGssIGRpZmYpIH5mMSB+ZjIgPVxuICAgICAgICBsZXQgayA9IGYxIGsgaW5cbiAgICAgICAgbGV0IGRpZmYgPVxuICAgICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICAgIHwgYExlZnQgdiAtPiBgTGVmdCAoZjIgdilcbiAgICAgICAgICB8IGBSaWdodCB2IC0+IGBSaWdodCAoZjIgdilcbiAgICAgICAgICB8IGBVbmVxdWFsICh2MSwgdjIpIC0+IGBVbmVxdWFsIChmMiB2MSwgZjIgdjIpXG4gICAgICAgIGluXG4gICAgICAgIGssIGRpZmZcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtYXBfZGF0YSB0IH5mID0gbWFwIHQgfmYxOkZuLmlkIH5mMjpmXG5cbiAgICAgIGxldCBsZWZ0IChfa2V5LCBkaWZmKSA9XG4gICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICB8IGBMZWZ0IHggfCBgVW5lcXVhbCAoeCwgXykgLT4gU29tZSB4XG4gICAgICAgIHwgYFJpZ2h0IF8gLT4gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IHJpZ2h0IChfa2V5LCBkaWZmKSA9XG4gICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICB8IGBSaWdodCB4IHwgYFVuZXF1YWwgKF8sIHgpIC0+IFNvbWUgeFxuICAgICAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTdGFibGUuVjFcbmVuZFxuXG5tb2R1bGUgTWVyZ2VfZWxlbWVudCA9IEJhc2UuTWFwLk1lcmdlX2VsZW1lbnRcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQmFzZS5NYXAuQ29udGludWVfb3Jfc3RvcFxubW9kdWxlIEZpbmlzaGVkX29yX3VuZmluaXNoZWQgPSBCYXNlLk1hcC5GaW5pc2hlZF9vcl91bmZpbmlzaGVkXG5cbnR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBrIGNtcCkgKChtb2R1bGUgTSkgOiAoaywgY21wKSBDb21wYXJhdG9yLk1vZHVsZS50KSA9IE0uY29tcGFyYXRvclxuXG5sZXQgb2ZfY29tcGFyYXRvciAodHlwZSBrIGNtcCkgY29tcGFyYXRvciA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbm1vZHVsZSBGb3JfcXVpY2tjaGVjayA9IHN0cnVjdFxuICBsZXQgZ2VuX3RyZWUgfmNvbXBhcmF0b3Iga19nZW4gdl9nZW4gPVxuICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrX2dlbiB2X2dlblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBrX2dlbiB2X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5tYXBfdF9tIChvZl9jb21wYXJhdG9yIGNvbXBhcmF0b3IpIGtfZ2VuIHZfZ2VuXG4gIDs7XG5cbiAgbGV0IG9ic190cmVlIGtfb2JzIHZfb2JzID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm1hcF90cmVlIGtfb2JzIHZfb2JzXG5cbiAgbGV0IHNocl90cmVlIH5jb21wYXJhdG9yIGtfc2hyIHZfc2hyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrX3NociB2X3NoclxuICA7O1xuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubWFwX3RfbVxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubWFwX3RcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm1hcF90XG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwLlVzaW5nX2NvbXBhcmF0b3JcbiAgaW5jbHVkZSBGb3JfcXVpY2tjaGVja1xuXG4gIGxldCBvZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICBtYXRjaCBvZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmk6KEhhc2h0YmwuaXRlcmkgaGFzaHRibCkgd2l0aFxuICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgRXJyb3IuZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJNYXAub2ZfaGFzaHRibF9leG46IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICBrZXlcbiAgICAgICAgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgdHJlZV9vZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICB0b190cmVlIChvZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvciBoYXNodGJsKVxuICA7O1xuXG4gIGxldCBrZXlfc2V0IH5jb21wYXJhdG9yIHQgPVxuICAgIEJhc2UuU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChMaXN0LnRvX2FycmF5IChrZXlzIHQpKVxuICA7O1xuXG4gIGxldCBrZXlfc2V0X29mX3RyZWUgfmNvbXBhcmF0b3IgdCA9IGtleV9zZXQgfmNvbXBhcmF0b3IgKG9mX3RyZWUgfmNvbXBhcmF0b3IgdClcblxuICBsZXQgb2Zfa2V5X3NldCBrZXlfc2V0IH5mID1cbiAgICBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgICB+Y29tcGFyYXRvcjooQmFzZS5TZXQuY29tcGFyYXRvciBrZXlfc2V0KVxuICAgICAgKEFycmF5Lm1hcCAoQmFzZS5TZXQudG9fYXJyYXkga2V5X3NldCkgfmY6KGZ1biBrZXkgLT4ga2V5LCBmIGtleSkpXG4gIDs7XG5cbiAgbGV0IHRyZWVfb2Zfa2V5X3NldCBrZXlfc2V0IH5mID0gdG9fdHJlZSAob2Zfa2V5X3NldCBrZXlfc2V0IH5mKVxuZW5kXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgTWFwLkFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE1hcC50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2sga2V5IDo9ICdrXG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnYylcblxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBrIHYgPSBxdWlja2NoZWNrX29ic2VydmVyIGsgdlxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBrIHYgPSBxdWlja2NoZWNrX3Nocmlua2VyIGsgdlxuICBsZXQga2V5X3NldCB0ID0gVXNpbmdfY29tcGFyYXRvci5rZXlfc2V0IHQgfmNvbXBhcmF0b3I6KFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvciB0KVxuZW5kXG5cbmxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXQgfmNvbXBhcmF0b3I6KFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvciB0KSB0XG5sZXQgb2Zfa2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfa2V5X3NldFxubGV0IGhhc2hfZm9sZF9kaXJlY3QgPSBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3RcbmxldCBjb21wYXJhdG9yID0gVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yXG5sZXQgY29tcGFyYXRvcl9zID0gQmFzZS5NYXAuY29tcGFyYXRvcl9zXG5cbnR5cGUgJ2sga2V5ID0gJ2tcbnR5cGUgJ2MgY21wID0gJ2NcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYXBcblxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgb2ZfdHJlZSBtID0gTWFwLlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuICBsZXQgdG9fdHJlZSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbmVuZCA6XG5zaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNYXAudFxuXG4gIGluY2x1ZGVcbiAgICBNYXAuQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdhLCAnYiwgJ2MpIE1hcC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZS50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgTWFwLldpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2sga2V5IDo9ICdrIGtleVxuICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gJ2MgY21wXG5cbiAgdmFsIHZhbGlkYXRlXG4gICAgOiAgbmFtZTooJ2sgLT4gc3RyaW5nKVxuICAgIC0+ICd2IFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCB2YWxpZGF0ZWlcbiAgICA6ICBuYW1lOignayBrZXkgLT4gc3RyaW5nKVxuICAgIC0+ICgnayBrZXkgKiAndikgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5lbmQpXG5cbm1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uID0gVXNpbmdfY29tcGFyYXRvci5FbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG5cbmxldCBmaW5kX29yX2Vycm9yIHQga2V5ID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHQgaW5cbiAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gIHwgU29tZSBkYXRhIC0+IE9rIGRhdGFcbiAgfCBOb25lIC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gY29tcGFyYXRvci5zZXhwX29mX3QgaW5cbiAgICBPcl9lcnJvci5lcnJvcl9zIFslbWVzc2FnZSBcImtleSBub3QgZm91bmRcIiB+Xzooa2V5IDoga2V5KV1cbjs7XG5cbmxldCBtZXJnZV9za2V3ZWQgPSBNYXAubWVyZ2Vfc2tld2VkXG5sZXQgb2ZfaGFzaHRibF9leG4gbSB0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0XG5cbm1vZHVsZSBDcmVhdG9ycyAoS2V5IDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdF8gPSAoJ2EgS2V5LnQsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgPSAoJ2EsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICB2YWwgdF9vZl9zZXhwXG4gICAgOiAgKEJhc2UuU2V4cC50IC0+ICdhIEtleS50KVxuICAgIC0+IChCYXNlLlNleHAudCAtPiAnYilcbiAgICAtPiBCYXNlLlNleHAudFxuICAgIC0+ICgnYSwgJ2IsIF8pIHRfXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRfXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbmVuZCA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciA9IEtleS5jb21wYXJhdG9yXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgdF8gPSAoJ2EgS2V5LnQsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgPSAoJ2EsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICBtb2R1bGUgTV9lbXB0eSA9IEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEtleSlcblxuICBsZXQgZW1wdHkgPSBNX2VtcHR5LmVtcHR5XG4gIGxldCBvZl90cmVlIHRyZWUgPSBVc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZVxuICBsZXQgc2luZ2xldG9uIGsgdiA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGsgdlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXlcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGFycmF5ID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXlcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNlcVxuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIHNlcSB+aW5pdCB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2Ugc2VxIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mXG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgbGlzdCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5IH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biBsaXN0IH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfZXhuIH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsaXN0IH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdCBhbGlzdCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3QgfmNvbXBhcmF0b3IgYWxpc3RcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfYWxpc3RfZXhuIGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYWxpc3RcbiAgbGV0IG9mX2hhc2h0YmxfZXhuIGhhc2h0YmwgPSBVc2luZ19jb21wYXJhdG9yLm9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmxcbiAgbGV0IG9mX2FsaXN0X211bHRpIGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhbGlzdFxuXG4gIGxldCBvZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0IH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmZcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIGFsaXN0IH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYWxpc3QgfmZcbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpXG5cbiAgbGV0IHRfb2Zfc2V4cCBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3IudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHBcbiAgOztcblxuICBsZXQgb2Zfa2V5X3NldCBrZXlfc2V0IH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9rZXlfc2V0IGtleV9zZXQgfmZcbiAgbGV0IG1hcF9rZXlzIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmZcbiAgbGV0IG1hcF9rZXlzX2V4biB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgdHJhbnNwb3NlX2tleXMgdCA9IFVzaW5nX2NvbXBhcmF0b3IudHJhbnNwb3NlX2tleXMgfmNvbXBhcmF0b3IgdFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBnZW5fayBnZW5fdiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5xdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBnZW5fayBnZW5fdlxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfUzEgKEtleSA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gIG9wZW4gVHJlZVxuXG4gIGxldCBjb21wYXJhdG9yID0gS2V5LmNvbXBhcmF0b3JcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwIGEgYiBjID0gdF9vZl9zZXhwX2RpcmVjdCBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQgZW1wdHkgPSBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBvZl90cmVlIHRyZWUgPSB0cmVlXG4gIGxldCBzaW5nbGV0b24gYSA9IHNpbmdsZXRvbiBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPSBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gb2Zfc29ydGVkX2FycmF5IGEgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSA9IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gb2Zfc2VxdWVuY2UgcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyA9IG9mX3NlcXVlbmNlX29yX2Vycm9yIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzID0gb2Zfc2VxdWVuY2VfZXhuIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHMgPSBvZl9zZXF1ZW5jZV9tdWx0aSBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIHMgfmluaXQgfmYgPSBvZl9zZXF1ZW5jZV9mb2xkIHMgfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzIH5mID0gb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0IGEgPSBvZl9hbGlzdCBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciBhID0gb2ZfYWxpc3Rfb3JfZXJyb3IgYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3RfZXhuIGEgPSBvZl9hbGlzdF9leG4gYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaGFzaHRibF9leG4gYSA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9oYXNodGJsX2V4biBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9tdWx0aSBhID0gb2ZfYWxpc3RfbXVsdGkgYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3RfZm9sZCBhIH5pbml0IH5mID0gb2ZfYWxpc3RfZm9sZCBhIH5pbml0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYSB+ZiA9IG9mX2FsaXN0X3JlZHVjZSBhIH5mIH5jb21wYXJhdG9yXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5IGwgfmdldF9rZXkgPSBvZl9saXN0X3dpdGhfa2V5IGwgfmdldF9rZXkgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsIH5nZXRfa2V5ID1cbiAgICBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGwgfmdldF9rZXkgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gbCB+Z2V0X2tleSA9IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIGwgfmdldF9rZXkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbCB+Z2V0X2tleSA9IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbCB+Z2V0X2tleSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gb2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJhdG9yXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpID0gb2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfa2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9rZXlfc2V0XG4gIGxldCB0b190cmVlIHQgPSB0XG4gIGxldCBpbnZhcmlhbnRzIGEgPSBpbnZhcmlhbnRzIGEgfmNvbXBhcmF0b3JcbiAgbGV0IGlzX2VtcHR5IGEgPSBpc19lbXB0eSBhXG4gIGxldCBsZW5ndGggYSA9IGxlbmd0aCBhXG4gIGxldCBzZXQgYSB+a2V5IH5kYXRhID0gc2V0IGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgYWRkIGEgfmtleSB+ZGF0YSA9IGFkZCBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IGFkZF9leG4gYSB+a2V5IH5kYXRhID0gYWRkX2V4biBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IGFkZF9tdWx0aSBhIH5rZXkgfmRhdGEgPSBhZGRfbXVsdGkgYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCByZW1vdmVfbXVsdGkgYSBiID0gcmVtb3ZlX211bHRpIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgZmluZF9tdWx0aSBhIGIgPSBmaW5kX211bHRpIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgY2hhbmdlIGEgYiB+ZiA9IGNoYW5nZSBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IHVwZGF0ZSBhIGIgfmYgPSB1cGRhdGUgYSBiIH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaW5kX2V4biBhIGIgPSBmaW5kX2V4biBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbmQgYSBiID0gZmluZCBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IHJlbW92ZSBhIGIgPSByZW1vdmUgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBtZW0gYSBiID0gbWVtIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgaXRlcl9rZXlzID0gaXRlcl9rZXlzXG4gIGxldCBpdGVyID0gaXRlclxuICBsZXQgaXRlcmkgPSBpdGVyaVxuICBsZXQgaXRlcmlfdW50aWwgPSBpdGVyaV91bnRpbFxuICBsZXQgaXRlcjIgYSBiIH5mID0gaXRlcjIgYSBiIH5mIH5jb21wYXJhdG9yXG4gIGxldCBtYXAgPSBtYXBcbiAgbGV0IG1hcGkgPSBtYXBpXG4gIGxldCBmb2xkID0gZm9sZFxuICBsZXQgZm9sZF91bnRpbCA9IGZvbGRfdW50aWxcbiAgbGV0IGZvbGRfcmlnaHQgPSBmb2xkX3JpZ2h0XG4gIGxldCBmb2xkMiBhIGIgfmluaXQgfmYgPSBmb2xkMiBhIGIgfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlcl9rZXlzIGEgfmYgPSBmaWx0ZXJfa2V5cyBhIH5mXG4gIGxldCBmaWx0ZXIgYSB+ZiA9IGZpbHRlciBhIH5mXG4gIGxldCBmaWx0ZXJpIGEgfmYgPSBmaWx0ZXJpIGEgfmZcbiAgbGV0IGZpbHRlcl9tYXAgYSB+ZiA9IGZpbHRlcl9tYXAgYSB+ZlxuICBsZXQgZmlsdGVyX21hcGkgYSB+ZiA9IGZpbHRlcl9tYXBpIGEgfmZcbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwIHQgfmZcbiAgbGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZlxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25fdGYgdCB+ZlxuICBsZXQgY29tYmluZV9lcnJvcnMgdCA9IGNvbWJpbmVfZXJyb3JzIHQgfmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmVfZGlyZWN0IGEgYiBjID0gY29tcGFyZV9kaXJlY3QgYSBiIGMgfmNvbXBhcmF0b3JcbiAgbGV0IGVxdWFsIGEgYiBjID0gZXF1YWwgYSBiIGMgfmNvbXBhcmF0b3JcbiAgbGV0IGtleXMgPSBrZXlzXG4gIGxldCBkYXRhID0gZGF0YVxuICBsZXQgdG9fYWxpc3QgPSB0b19hbGlzdFxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsID0gc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsIH5jb21wYXJhdG9yXG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICBmb2xkX3N5bW1ldHJpY19kaWZmIGEgYiB+ZGF0YV9lcXVhbCB+ZiB+aW5pdCB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBtZXJnZSBhIGIgfmYgPSBtZXJnZSBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG1lcmdlX3NrZXdlZCBhIGIgfmNvbWJpbmUgPSBtZXJnZV9za2V3ZWQgYSBiIH5jb21iaW5lIH5jb21wYXJhdG9yXG4gIGxldCBtaW5fZWx0ID0gbWluX2VsdFxuICBsZXQgbWluX2VsdF9leG4gPSBtaW5fZWx0X2V4blxuICBsZXQgbWF4X2VsdCA9IG1heF9lbHRcbiAgbGV0IG1heF9lbHRfZXhuID0gbWF4X2VsdF9leG5cbiAgbGV0IGZvcl9hbGwgPSBmb3JfYWxsXG4gIGxldCBmb3JfYWxsaSA9IGZvcl9hbGxpXG4gIGxldCBleGlzdHMgPSBleGlzdHNcbiAgbGV0IGV4aXN0c2kgPSBleGlzdHNpXG4gIGxldCBjb3VudCA9IGNvdW50XG4gIGxldCBjb3VudGkgPSBjb3VudGlcbiAgbGV0IHNwbGl0IGEgYiA9IHNwbGl0IGEgYiB+Y29tcGFyYXRvclxuICBsZXQgc3BsaXRfbGVfZ3QgYSBiID0gc3BsaXRfbGVfZ3QgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBzcGxpdF9sdF9nZSBhIGIgPSBzcGxpdF9sdF9nZSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCA9IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyYXRvclxuXG4gIGxldCBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+ZiA9XG4gICAgZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggPSByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyYXRvclxuICBsZXQgY2xvc2VzdF9rZXkgYSBiIGMgPSBjbG9zZXN0X2tleSBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQgbnRoID0gbnRoXG4gIGxldCBudGhfZXhuID0gbnRoX2V4blxuICBsZXQgcmFuayBhIGIgPSByYW5rIGEgYiB+Y29tcGFyYXRvclxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIHRvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICA7O1xuXG4gIG1vZHVsZSBNYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEgOiBBcHBsaWNhdGl2ZS5MYXp5X2FwcGxpY2F0aXZlKSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUcmF2ZXJzYWxzID0gTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBKVxuXG4gICAgbGV0IG1hcGkgPSBUcmF2ZXJzYWxzLm1hcGlcbiAgICBsZXQgZmlsdGVyX21hcGkgPSBUcmF2ZXJzYWxzLmZpbHRlcl9tYXBpXG4gIGVuZFxuXG4gIGxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXRfb2ZfdHJlZSB+Y29tcGFyYXRvciB0XG4gIGxldCBtYXBfa2V5cyB0IH5mID0gbWFwX2tleXMgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBtYXBfa2V5c19leG4gdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgdHJhbnNwb3NlX2tleXMgdCA9IHRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yIH5jb21wYXJhdG9yIHRcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGsgdiA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlIH5jb21wYXJhdG9yIGsgdlxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBrIHYgPSBGb3JfcXVpY2tjaGVjay5vYnNfdHJlZSBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgayB2ID0gRm9yX3F1aWNrY2hlY2suc2hyX3RyZWUgfmNvbXBhcmF0b3IgayB2XG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZV9wbGFpbiAoS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBLZXlfUzEgPSBDb21wYXJhdG9yLlNfdG9fUzEgKEtleSlcbiAgaW5jbHVkZSBNYWtlX3RyZWVfUzEgKEtleV9TMSlcblxuICB0eXBlICsndiB0ID0gKEtleS50LCAndiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3YgdCA9IHNleHBfb2ZfdCBLZXkuc2V4cF9vZl90IHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBYLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3RyZWVfcGxhaW4gKEtleSlcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEtleSlcbmVuZFxuXG4oKiBEb24ndCB1c2UgW29mX3NvcnRlZF9hcnJheV0gdG8gYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgYW4gaW50ZXJtZWRpYXRlIGFycmF5ICopXG5sZXQgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZiB+Y29tcGFyYXRvciA9XG4gIGxldCBtYXAgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3IgaW5cbiAgaWYgaW52YXJpYW50cyBtYXBcbiAgdGhlbiBtYXBcbiAgZWxzZSAoXG4gICAgKCogVGhlIGludmFyaWFudHMgYXJlIGJyb2tlbiwgYnV0IHdlIGNhbiBzdGlsbCB0cmF2ZXJzZSB0aGUgc3RydWN0dXJlLiAqKVxuICAgIG1hdGNoIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfml0ZXJpOihpdGVyaSBtYXApIH5jb21wYXJhdG9yIHdpdGhcbiAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgfCBgRHVwbGljYXRlX2tleSBfa2V5IC0+IGZhaWx3aXRoIFwiTWFwLmJpbl9yZWFkX3Q6IGR1cGxpY2F0ZSBlbGVtZW50IGluIG1hcFwiKVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDcmVhdG9ycyAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIG1hcCA9ICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgKCdrLCAndikgdCA9ICgnaywgJ3YsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIG1hcFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIF8gY21wdiB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IGNtcHYgdDEgdDJcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgdCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5zZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hciA9XG4gICAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LkFzc29jLnRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIpXG4gIDs7XG5cbiAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG4gICAgICB0eXBlICgnYSwgJ2IpIGVsID0gJ2EgKiAnYiBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBfID0gYmluX2VsXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImI3ZDdiMWEwLTQ5OTItMTFlNi04YTMyLWJiYjIyMWZhMDI1Y1wiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5NYXBcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gICAgdHlwZSAoJ2ssICsndikgdCA9ICgnaywgJ3YsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRyZWVcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0ID0gc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgWyVzZXhwX29mOiBfXSB0XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hciA9XG4gICAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QuQXNzb2MudF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hcilcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXlfcGxhaW4gPSBLZXlfcGxhaW5cbm1vZHVsZSB0eXBlIEtleSA9IEtleVxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGUgPSBLZXlfYmluYWJsZVxubW9kdWxlIHR5cGUgS2V5X2hhc2hhYmxlID0gS2V5X2hhc2hhYmxlXG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZV9oYXNoYWJsZSA9IEtleV9iaW5hYmxlX2hhc2hhYmxlXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gU19wbGFpblxubW9kdWxlIHR5cGUgUyA9IFNcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZVxuXG5tb2R1bGUgS2V5X2Jpbl9pbyA9IEtleV9iaW5faW9cblxubW9kdWxlIFByb3ZpZGVfYmluX2lvIChLZXkgOiBLZXlfYmluX2lvLlMpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IEtleVxuXG4gICAgdHlwZSBub25yZWMgJ3YgdCA9IChLZXkudCwgJ3YsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICB0eXBlICd2IGVsID0gS2V5LnQgKiAndiBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImRmYjMwMGY4LTQ5OTItMTFlNi05YzE1LTczYTJhYzZiODE1Y1wiXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLk1hcFwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBmIChrZXksIGRhdGEpKVxuXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpLZXkuY29tcGFyYXRvclxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBtYXAgaXMgdXNlZCBpbiB0aGUgc3RhYmxlIG1vZHVsZXMgYmVsb3csIHNvIGl0J3NcbiAgICAgYXNzdW1lZCB0byBiZSBzdGFibGUgKGlmIHRoZSBrZXkgYW5kIGRhdGEgYXJlIHN0YWJsZSkgLiAqKVxuICBsZXQgc3RhYmxlX3dpdG5lc3MgKHR5cGUgZGF0YSkgKF9kYXRhX3N0YWJsZV93aXRuZXNzIDogZGF0YSBTdGFibGVfd2l0bmVzcy50KVxuICAgIDogKEtleS50LCBkYXRhLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSB0IFN0YWJsZV93aXRuZXNzLnRcbiAgICA9XG4gICAgbGV0IChfIDogS2V5LnQgU3RhYmxlX3dpdG5lc3MudCkgPSBLZXkuc3RhYmxlX3dpdG5lc3MgaW5cbiAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBLZXkgPSBLZXlcbiAgbW9kdWxlIEtleV9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoS2V5KVxuICBpbmNsdWRlIENyZWF0b3JzIChLZXlfUzEpXG5cbiAgdHlwZSBrZXkgPSBLZXkudFxuICB0eXBlICgnYSwgJ2IsICdjKSBtYXAgPSAoJ2EsICdiLCAnYykgdFxuICB0eXBlICd2IHQgPSAoa2V5LCAndiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgbWFwXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSBjbXB2IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY21wdiB0MSB0MlxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl92IHQgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iuc2V4cF9vZl90IEtleS5zZXhwX29mX3Qgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuICA7O1xuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgdl9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgS2V5LnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChLZXknIDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID0gc3RydWN0XG4gICAgbGV0IGhhc2hfZm9sZF90ICh0eXBlIGEpIGhhc2hfZm9sZF9kYXRhIHN0YXRlICh0IDogYSB0KSA9XG4gICAgICBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3QgS2V5Jy5oYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0XG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoS2V5JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICAgIFByb3ZpZGVfYmluX2lvIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgS2V5XG4gICAgICBpbmNsdWRlIEtleSdcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3NcbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID1cbiAgICBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgS2V5XG4gICAgICBpbmNsdWRlIEtleSdcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEtleSA6IEtleV9wbGFpbikgPSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgS2V5XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEtleSlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChLZXlfc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoS2V5X3NleHApXG4gIG1vZHVsZSBLZXkgPSBLZXlfc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuXG4gIG1vZHVsZSBfID0gc3RydWN0XG4gICAgaW5jbHVkZSBUcmVlXG4gICAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEtleSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UgKEtleSA6IEtleSkgPSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgS2V5XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEtleSlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9iaW5fc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChLZXlfYmluX3NleHApXG4gIG1vZHVsZSBLZXkgPSBLZXlfYmluX3NleHBcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEtleSA6IEtleV9iaW5hYmxlKSA9IE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEtleVxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChLZXkpXG4gIGVuZClcblxubW9kdWxlIEZvcl9kZXJpdmluZyA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1hcC5NXG5cbiAgbGV0IGJpbl9zaGFwZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fc2hhcGVfdFxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fc2l6ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fd3JpdGVfdFxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fcmVhZF90XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfbV9fdF9fICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5fX2Jpbl9yZWFkX3RfX1xuICA7O1xuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gIGVuZFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdl9nZW5lcmF0b3JcbiAgICA9XG4gICAgcXVpY2tjaGVja19nZW5lcmF0b3IgKG1vZHVsZSBLZXkpIEtleS5xdWlja2NoZWNrX2dlbmVyYXRvciB2X2dlbmVyYXRvclxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgS2V5IDogUXVpY2tjaGVja19vYnNlcnZlcl9tIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZfb2JzZXJ2ZXJcbiAgICA9XG4gICAgcXVpY2tjaGVja19vYnNlcnZlciBLZXkucXVpY2tjaGVja19vYnNlcnZlciB2X29ic2VydmVyXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdl9zaHJpbmtlclxuICAgID1cbiAgICBxdWlja2NoZWNrX3Nocmlua2VyIEtleS5xdWlja2NoZWNrX3Nocmlua2VyIHZfc2hyaW5rZXJcbiAgOztcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBNYXAuRm9yX2Rlcml2aW5nXG5cbiAgaW5jbHVkZSAoTWFwIDogRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdClcbmVuZFxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nX3N0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTdGFibGVfd2l0bmVzc19tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudFxuICBlbmRcblxuICBsZXQgc3RhYmxlX3dpdG5lc3NfbV9fdFxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBTdGFibGVfd2l0bmVzc19tIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEtleSkgaW5cbiAgICBNLnN0YWJsZV93aXRuZXNzXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBGb3JfZGVyaXZpbmdcblxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUcmVlXG5cbiAgbGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG4gIGxldCB2YWxpZGF0ZWkgfm5hbWUgZiB0ID0gVmFsaWRhdGUubGlzdCB+bmFtZTooRm4uY29tcG9zZSBuYW1lIGZzdCkgZiAodG9fYWxpc3QgdClcbiAgbGV0IG9mX2hhc2h0YmxfZXhuID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2hhc2h0YmxfZXhuXG4gIGxldCBrZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci5rZXlfc2V0X29mX3RyZWVcbiAgbGV0IG9mX2tleV9zZXQgPSBVc2luZ19jb21wYXJhdG9yLnRyZWVfb2Zfa2V5X3NldFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3IgayB2ID0gRm9yX3F1aWNrY2hlY2suZ2VuX3RyZWUgfmNvbXBhcmF0b3IgayB2XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlIGsgdlxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciB+Y29tcGFyYXRvciBrIHYgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZSB+Y29tcGFyYXRvciBrIHZcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnaywgJ3YsICdjbXApIHQgPSAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGtleVxuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAoa2V5LCAnYSwgY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgICAgIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEZvcl9kZXJpdmluZ1xuICAgIGluY2x1ZGUgRm9yX2Rlcml2aW5nX3N0YWJsZVxuICAgIG1vZHVsZSBNYWtlIChLZXkgOiBTdGFibGVfbW9kdWxlX3R5cGVzLlMwKSA9IE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChLZXkpXG5cbiAgICBtb2R1bGUgV2l0aF9zdGFibGVfd2l0bmVzcyA9IHN0cnVjdFxuICAgICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgICBpbmNsdWRlIFNcblxuICAgICAgICB2YWwgc3RhYmxlX3dpdG5lc3MgOiAnYSBTdGFibGVfd2l0bmVzcy50IC0+ICdhIHQgU3RhYmxlX3dpdG5lc3MudFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlIChLZXlfc3RhYmxlIDogU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwKSA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE1ha2UgKEtleV9zdGFibGUpXG4gICAgICAgIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoS2V5X3N0YWJsZSlcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IFN5bW1ldHJpY19kaWZmX2VsZW1lbnQuU3RhYmxlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEJhc2UuTWF5YmVfYm91bmQudCA9XG4gICAgICB8IEluY2wgb2YgJ2FcbiAgICAgIHwgRXhjbCBvZiAnYVxuICAgICAgfCBVbmJvdW5kZWRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBtYXAgeCB+ZiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgSW5jbCB4IC0+IEluY2wgKGYgeClcbiAgICAgIHwgRXhjbCB4IC0+IEV4Y2wgKGYgeClcbiAgICAgIHwgVW5ib3VuZGVkIC0+IFVuYm91bmRlZFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgQmFzZS5NYXliZV9ib3VuZFxuXG50eXBlICdhIHQgPSAnYSBTdGFibGUuVjEudCA9XG4gIHwgSW5jbCBvZiAnYVxuICB8IEV4Y2wgb2YgJ2FcbiAgfCBVbmJvdW5kZWRcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2ssIHNleHBdXG5cbmxldCBjb21wYXJlX29uZV9zaWRlZCB+c2lkZSBjb21wYXJlX2EgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IFVuYm91bmRlZCwgVW5ib3VuZGVkIC0+IDBcbiAgfCBVbmJvdW5kZWQsIF8gLT5cbiAgICAobWF0Y2ggc2lkZSB3aXRoXG4gICAgIHwgYExvd2VyIC0+IC0xXG4gICAgIHwgYFVwcGVyIC0+IDEpXG4gIHwgXywgVW5ib3VuZGVkIC0+XG4gICAgKG1hdGNoIHNpZGUgd2l0aFxuICAgICB8IGBMb3dlciAtPiAxXG4gICAgIHwgYFVwcGVyIC0+IC0xKVxuICB8IEluY2wgYTEsIEluY2wgYTIgLT4gY29tcGFyZV9hIGExIGEyXG4gIHwgRXhjbCBhMSwgRXhjbCBhMiAtPiBjb21wYXJlX2EgYTEgYTJcbiAgfCBJbmNsIGExLCBFeGNsIGEyIC0+XG4gICAgbGV0IGMgPSBjb21wYXJlX2EgYTEgYTIgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggc2lkZSB3aXRoXG4gICAgICB8IGBMb3dlciAtPiAtMVxuICAgICAgfCBgVXBwZXIgLT4gMSlcbiAgICBlbHNlIGNcbiAgfCBFeGNsIGExLCBJbmNsIGEyIC0+XG4gICAgbGV0IGMgPSBjb21wYXJlX2EgYTEgYTIgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggc2lkZSB3aXRoXG4gICAgICB8IGBMb3dlciAtPiAxXG4gICAgICB8IGBVcHBlciAtPiAtMSlcbiAgICBlbHNlIGNcbjs7XG5cbm1vZHVsZSBBc19sb3dlcl9ib3VuZCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaF1cblxuICBsZXQgY29tcGFyZSBjb21wYXJlX2EgdDEgdDIgPSBjb21wYXJlX29uZV9zaWRlZCB+c2lkZTpgTG93ZXIgY29tcGFyZV9hIHQxIHQyXG5lbmRcblxubW9kdWxlIEFzX3VwcGVyX2JvdW5kID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9IGNvbXBhcmVfb25lX3NpZGVkIH5zaWRlOmBVcHBlciBjb21wYXJlX2EgdDEgdDJcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgaW50ZXJmYWNlcyB1c2VkIGluIHt7IUNvcmUuU2V0fVtTZXRdfS4gU2VlIHRoZVxuICAgIHshTWFwfSBkb2NzIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBkZXNpZ24uXG5cbiAgICBUaGlzIG1vZHVsZSBkZWZpbmVzIG1vZHVsZSB0eXBlc1xuICAgIFt7Q3JlYXRvcnMsQWNjZXNzb3JzfXswLDEsMixfZ2VuZXJpYyxfd2l0aF9jb21wYXJhdG9yfV0uIEl0IHVzZXMgY2hlY2sgZnVuY3RvcnMgdG9cbiAgICBlbnN1cmUgdGhhdCBlYWNoIG1vZHVsZSB0eXBlIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBjb3JyZXNwb25kaW5nIFtfZ2VuZXJpY10gb25lLlxuXG4gICAgV2UgbXVzdCB0cmVhdCBbQ3JlYXRvcnNdIGFuZCBbQWNjZXNzb3JzXSBzZXBhcmF0ZWx5LCBiZWNhdXNlIHdlIHNvbWV0aW1lcyBuZWVkIHRvXG4gICAgY2hvb3NlIGRpZmZlcmVudCBpbnN0YW50aWF0aW9ucyBvZiB0aGVpciBbb3B0aW9uc10uIEluIHBhcnRpY3VsYXIsIFtTZXRdIGl0c2VsZlxuICAgIG1hdGNoZXMgW0NyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3JdIGJ1dCBbQWNjZXNzb3JzMl0gKHdpdGhvdXQgY29tcGFyYXRvcikuXG4qKVxuXG4oKlxuICAgQ1JzIGFuZCBjb21tZW50cyBhYm91dCBbU2V0XSBmdW5jdGlvbnMgZG8gbm90IGJlbG9uZyBpbiB0aGlzIGZpbGUuICBUaGV5IGJlbG9uZyBuZXh0XG4gICB0byB0aGUgYXBwcm9wcmlhdGUgZnVuY3Rpb24gaW4gc2V0Lm1saS5cbiopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxubW9kdWxlIFNldCA9IEJhc2UuU2V0XG5tb2R1bGUgVHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWVcbm1vZHVsZSBDb250YWluZXIgPSBCYXNlLkNvbnRhaW5lclxuXG5tb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBTZXQuRWx0X3BsYWluXG5cbm1vZHVsZSB0eXBlIEVsdCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBFbHRfYmluYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBFbHRfYmluX2lvID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuICBlbmRcblxuICB0eXBlICgndCwgJ2MpIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAndCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnYylcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLlNldC5Gb3JfZGVyaXZpbmdcbiAgbW9kdWxlIE0gPSBCYXNlLlNldC5NXG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgWypiaW4qXSBmdW5jdGlvbnMgc3VwcG9ydCBiaW4taW8gb24gYmFzZS1zdHlsZSBzZXRzLCBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBTZXQuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgYmluX2lvXSBdfSAqKVxuXG4gIHZhbCBiaW5fc2hhcGVfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiBCaW5fcHJvdC5TaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV9tX190IDogKCdhLCAnYikgRWx0X2Jpbl9pby50IC0+ICgnYSwgJ2IpIHQgQmluX3Byb3QuU2l6ZS5zaXplclxuICB2YWwgYmluX3dyaXRlX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gKCdhLCAnYikgdCBCaW5fcHJvdC5Xcml0ZS53cml0ZXJcbiAgdmFsIGJpbl9yZWFkX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gKCdhLCAnYikgdCBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gIHZhbCBfX2Jpbl9yZWFkX21fX3RfX1xuICAgIDogICgnYSwgJ2IpIEVsdF9iaW5faW8udFxuICAgIC0+IChpbnQgLT4gKCdhLCAnYikgdCkgQmluX3Byb3QuUmVhZC5yZWFkZXJcblxuICAoKiogVGhlIGZvbGxvd2luZyBbcXVpY2tjaGVjaypdIGZ1bmN0aW9ucyBzdXBwb3J0IGRlcml2aW5nIHF1aWNrY2hlY2sgb24gYmFzZS1zdHlsZVxuICAgICAgc2V0cywgZS5nLjpcblxuICAgICAge1sgdHlwZSB0ID0gU2V0Lk0oU3RyaW5nKS50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdIF19ICopXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19vYnNlcnZlcl9tIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19zaHJpbmtlcl9tIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nX3N0YWJsZSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICBtb2R1bGUgdHlwZSBTdGFibGVfd2l0bmVzc19tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudFxuICBlbmRcblxuICB2YWwgc3RhYmxlX3dpdG5lc3NfbV9fdFxuICAgIDogIChtb2R1bGUgU3RhYmxlX3dpdG5lc3NfbSB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKCdhLCAnY21wKSB0IFN0YWJsZV93aXRuZXNzLnRcbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gU2V0LldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IFNldC5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IFNldC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcFxubW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgPSBTZXF1ZW5jZS5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIFNldC5BY2Nlc3NvcnNfZ2VuZXJpY1xuXG4gIHZhbCB0b19tYXBcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gZjooKCdhIGVsdCAtPiAnYilbQGxvY2FsXSkgLT4gKCdhIGVsdCwgJ2IsICdjbXAgY21wKSBCYXNlLk1hcC50XG4gICAgICApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICAnYSBlbHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2EgZWx0IFF1aWNrY2hlY2suU2hyaW5rZXIudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgU2V0LkNyZWF0b3JzX2dlbmVyaWNcblxuICB2YWwgb2ZfaGFzaF9zZXQgOiAoJ2EsICdjbXAsICdhIGVsdCBIYXNoX3NldC50IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX2hhc2h0Ymxfa2V5cyA6ICgnYSwgJ2NtcCwgKCdhIGVsdCwgXykgSGFzaHRibC50IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICAoKiogTmV2ZXIgcmVxdWlyZXMgYSBjb21wYXJhdG9yIGJlY2F1c2UgaXQgY2FuIGdldCBvbmUgZnJvbSB0aGUgaW5wdXQgW01hcC50XS4gKilcbiAgdmFsIG9mX21hcF9rZXlzIDogKCdhIGVsdCwgXywgJ2NtcCBjbXApIEJhc2UuTWFwLnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2EgZWx0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnZWx0LCAnY21wKSB0XG4gIHR5cGUgKCdlbHQsICdjbXApIHRyZWVcbiAgdHlwZSAnZWx0IGVsdFxuICB0eXBlICdjbXAgY21wXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIGNtcFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIGNtcFxuZW5kXG5cbm1vZHVsZSBNYWtlX1NfcGxhaW5fdHJlZSAoRWx0IDogQ29tcGFyYXRvci5TKSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gdFxuICAgICAgd2l0aCB0eXBlICdhIGVsdCA6PSBFbHQudFxuICAgICAgd2l0aCB0eXBlICdjIGNtcCA6PSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuXG4gICAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgICAoRWx0IDogc2lnXG4gICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgICAgZW5kXG4gICAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5TZXQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgU2V0LnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9IEVsdC50XG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoRWx0IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpIDogQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChFbHQgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IEVsdC50IFF1aWNrY2hlY2suT2JzZXJ2ZXIudCAtPiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IEVsdC50IFF1aWNrY2hlY2suU2hyaW5rZXIudCAtPiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFNfcGxhaW4gd2l0aCBtb2R1bGUgRWx0IDo9IEVsdFxuICBpbmNsdWRlIFNleHBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTIHdpdGggbW9kdWxlIEVsdCA6PSBFbHRcbiAgaW5jbHVkZSBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbm9wZW4gU2V0X2ludGZcbm1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50ID0gTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudFxuXG5tb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBFbHRfcGxhaW5cbm1vZHVsZSB0eXBlIEVsdCA9IEVsdFxubW9kdWxlIHR5cGUgRWx0X2JpbmFibGUgPSBFbHRfYmluYWJsZVxuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBrIGNtcCkgKChtb2R1bGUgTSkgOiAoaywgY21wKSBDb21wYXJhdG9yLk1vZHVsZS50KSA9IE0uY29tcGFyYXRvclxuXG5sZXQgb2ZfY29tcGFyYXRvciAodHlwZSBrIGNtcCkgY29tcGFyYXRvciA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbm1vZHVsZSBGb3JfcXVpY2tjaGVjayA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zZXRfdF9tIChvZl9jb21wYXJhdG9yIGNvbXBhcmF0b3IpIGVsdF9nZW5cbiAgOztcblxuICBsZXQgZ2VuX3RyZWUgfmNvbXBhcmF0b3IgZWx0X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW5cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBlbHRfb2JzID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnNldF90IGVsdF9vYnNcbiAgbGV0IG9ic190cmVlIGVsdF9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc2V0X3RyZWUgZWx0X29ic1xuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBlbHRfc2hyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnNldF90IGVsdF9zaHJcblxuICBsZXQgc2hyX3RyZWUgfmNvbXBhcmF0b3IgZWx0X3NociA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X3NoclxuICA7O1xuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBtIGVsdF9nZW4gPVxuICBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBlbHRfZ2VuXG47O1xuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlclxuXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRyZWVcblxuICBsZXQgdG9fbWFwIH5jb21wYXJhdG9yIHQgPSBNYXAub2Zfa2V5X3NldCAoU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB0IH5jb21wYXJhdG9yKVxuICBsZXQgb2ZfbWFwX2tleXMgbSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWUgKE1hcC5rZXlfc2V0IG0pXG5cbiAgbGV0IG9mX2hhc2hfc2V0IH5jb21wYXJhdG9yIGhzZXQgPVxuICAgIEhhc2hfc2V0LmZvbGQgaHNldCB+aW5pdDooZW1wdHkgfmNvbXBhcmF0b3IpIH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICBIYXNodGJsLmZvbGQgaGFzaHRibCB+aW5pdDooZW1wdHkgfmNvbXBhcmF0b3IpIH5mOihmdW4gfmtleTp4IH5kYXRhOl8gdCAtPlxuICAgICAgYWRkIHQgeCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBGb3JfcXVpY2tjaGVjay5nZW5fdHJlZVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gRm9yX3F1aWNrY2hlY2suc2hyX3RyZWVcbmVuZFxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIFNldC5Vc2luZ19jb21wYXJhdG9yIDpcbiAgICAgIFNldC5BY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIFNldC50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnY1xuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2FcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudClcbmVuZFxuXG50eXBlICdhIGNtcCA9ICdhXG50eXBlICdhIGVsdCA9ICdhXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIGluY2x1ZGUgU2V0XG5cbiAgbGV0IG9mX3RyZWUgbSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbiAgbGV0IHRvX3RyZWUgPSBTZXQuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4gIGxldCBzZXhwX29mX3QgPSBTZXQuVXNpbmdfY29tcGFyYXRvci5zZXhwX29mX3RcbmVuZCA6XG5zaWdcbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgU2V0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlXG4gICAgU2V0LkNyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgnYSwgJ2IsICdjKSBTZXQuV2l0aF9maXJzdF9jbGFzc19tb2R1bGUudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFNldC5XaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCBtb2R1bGUgTmFtZWQgPSBTZXQuTmFtZWRcbmVuZClcblxudHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCBjb21wYXJlIF8gXyB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIFNldC5Vc2luZ19jb21wYXJhdG9yIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgaW5jbHVkZSBTZXQuVXNpbmdfY29tcGFyYXRvclxuICAgIGVuZFxuICAgIHdpdGggbW9kdWxlIFRyZWUgOj0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZSlcblxuICBpbmNsdWRlIEZvcl9xdWlja2NoZWNrXG5cbiAgbGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcblxuICBsZXQgb2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3IgaHNldCA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZS5vZl9oYXNoX3NldCBoc2V0IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9oYXNodGJsX2tleXMgfmNvbXBhcmF0b3IgaGFzaHRibCA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZS5vZl9oYXNodGJsX2tleXMgaGFzaHRibCB+Y29tcGFyYXRvcilcbiAgOztcbmVuZFxuXG5sZXQgdG9fbWFwID0gTWFwLm9mX2tleV9zZXRcbmxldCBvZl9tYXBfa2V5cyA9IE1hcC5rZXlfc2V0XG5sZXQgaGFzaF9mb2xkX2RpcmVjdCA9IFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdFxubGV0IGNvbXBhcmF0b3JfcyA9IFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvcl9zXG5sZXQgY29tcGFyYXRvciA9IFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvclxubGV0IG9mX2hhc2hfc2V0IG0gaHNldCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgaHNldFxuXG5sZXQgb2ZfaGFzaHRibF9rZXlzIG0gaGFzaHRibCA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGhhc2h0Ymxcbjs7XG5cbm1vZHVsZSBDcmVhdG9ycyAoRWx0IDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgdHlwZSBub25yZWMgKCdhLCAnY29tcGFyYXRvcikgdF8gPSAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgdHlwZSAnYSBlbHRfID0gJ2EgRWx0LnRcbiAgdHlwZSAnYSBjbXBfID0gRWx0LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCB0X29mX3NleHAgOiAoQmFzZS5TZXhwLnQgLT4gJ2EgRWx0LnQpIC0+IEJhc2UuU2V4cC50IC0+ICgnYSwgJ2NvbXBhcmF0b3IpIHRfXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdF9cbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wX1xuZW5kID0gc3RydWN0XG4gIG9wZW4gVXNpbmdfY29tcGFyYXRvclxuXG4gIHR5cGUgbm9ucmVjICgnYSwgJ2NvbXBhcmF0b3IpIHRfID0gKCdhIEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYikgdHJlZSA9ICgnYSwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gIHR5cGUgJ2EgZWx0XyA9ICdhIEVsdC50XG4gIHR5cGUgJ2NtcCBjbXBfID0gRWx0LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gRWx0LmNvbXBhcmF0b3JcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZVxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSA9IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXlcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgPSBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXlcblxuICBtb2R1bGUgTV9lbXB0eSA9IEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEVsdClcblxuICBsZXQgZW1wdHkgPSBNX2VtcHR5LmVtcHR5XG4gIGxldCBzaW5nbGV0b24gZSA9IHNpbmdsZXRvbiB+Y29tcGFyYXRvciBlXG4gIGxldCB1bmlvbl9saXN0IGwgPSB1bmlvbl9saXN0IH5jb21wYXJhdG9yIGxcbiAgbGV0IG9mX2xpc3QgbCA9IG9mX2xpc3QgfmNvbXBhcmF0b3IgbFxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX2hhc2hfc2V0IGggPSBvZl9oYXNoX3NldCB+Y29tcGFyYXRvciBoXG4gIGxldCBvZl9oYXNodGJsX2tleXMgaCA9IG9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvciBoXG4gIGxldCBvZl9hcnJheSBhID0gb2ZfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgeHMgPSBzdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciB4c1xuICBsZXQgbWFwIHQgfmYgPSBtYXAgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mXG5cbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgb2ZfdHJlZSAoVHJlZS50X29mX3NleHBfZGlyZWN0IGFfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9tYXBfa2V5cyA9IE1hcC5rZXlfc2V0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBlbHQgPSBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBlbHRcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX1MxIChFbHQgOiBDb21wYXJhdG9yLlMxKSA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciA9IEVsdC5jb21wYXJhdG9yXG4gIGxldCBlbXB0eSA9IFRyZWUuZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuICBsZXQgc2luZ2xldG9uIGUgPSBUcmVlLnNpbmdsZXRvbiB+Y29tcGFyYXRvciBlXG4gIGxldCBtYXAgdCB+ZiA9IFRyZWUubWFwIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IFRyZWUuZmlsdGVyX21hcCB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlX2RpcmVjdCB0MSB0MiA9IFRyZWUuY29tcGFyZV9kaXJlY3QgfmNvbXBhcmF0b3IgdDEgdDJcbiAgbGV0IGVxdWFsIHQxIHQyID0gVHJlZS5lcXVhbCB0MSB0MiB+Y29tcGFyYXRvclxuICBsZXQgb2ZfbGlzdCBsID0gVHJlZS5vZl9saXN0IGwgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBUcmVlLm9mX3NlcXVlbmNlIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2hhc2hfc2V0IGggPSBUcmVlLm9mX2hhc2hfc2V0IGggfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoID0gVHJlZS5vZl9oYXNodGJsX2tleXMgaCB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYXJyYXkgYSA9IFRyZWUub2ZfYXJyYXkgYSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID0gVHJlZS5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVHJlZS5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVHJlZS5vZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyYXRvclxuICBsZXQgdW5pb25fbGlzdCBsID0gVHJlZS51bmlvbl9saXN0IGwgfmNvbXBhcmF0b3JcbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IHhzID0gVHJlZS5zdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyYXRvclxuICBsZXQgb2ZfdHJlZSB0ID0gdFxuICBsZXQgb2ZfbWFwX2tleXMgPSBUcmVlLm9mX21hcF9rZXlzXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBlbHQgPSBGb3JfcXVpY2tjaGVjay5nZW5fdHJlZSBlbHQgfmNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX3BsYWluIChFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEVsdF9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoRWx0KVxuICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoRWx0X1MxKVxuXG4gIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG5cbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxuICBsZXQgc2V4cF9vZl90IHQgPSBUcmVlLnNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IFslc2V4cF9vZjogX10gdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgVHJlZS50X29mX3NleHBfZGlyZWN0IFgudF9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3I6RWx0X1MxLmNvbXBhcmF0b3JcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlIChFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3RyZWVfcGxhaW4gKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEVsdClcbmVuZFxuXG4oKiBEb24ndCB1c2UgW29mX3NvcnRlZF9hcnJheV0gdG8gYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgYW4gaW50ZXJtZWRpYXRlIGFycmF5ICopXG5sZXQgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZiB+Y29tcGFyYXRvciA9XG4gIGxldCBzZXQgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmYgaW5cbiAgaWYgaW52YXJpYW50cyBzZXRcbiAgdGhlbiBzZXRcbiAgZWxzZVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZVxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChmb2xkIHNldCB+aW5pdDooVHJlZS5lbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biBhY2MgZWx0IC0+XG4gICAgICAgICBpZiBUcmVlLm1lbSBhY2MgZWx0IH5jb21wYXJhdG9yXG4gICAgICAgICB0aGVuIGZhaWx3aXRoIFwiU2V0LmJpbl9yZWFkX3Q6IGR1cGxpY2F0ZSBlbGVtZW50IGluIHNldFwiXG4gICAgICAgICBlbHNlIFRyZWUuYWRkIGFjYyBlbHQgfmNvbXBhcmF0b3IpKVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEVsdCA9IENvbXBhcmF0b3IuUG9seVxuICBpbmNsdWRlIENyZWF0b3JzIChFbHQpXG5cbiAgdHlwZSBub25yZWMgJ2EgdCA9ICgnYSwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgXyB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHQgPSBzZXhwX29mX3Qgc2V4cF9vZl9rIFslc2V4cF9vZjogX10gdFxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gICAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyKVxuICA7O1xuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODhiY2M0NzgtNDk5Mi0xMWU2LWE5NWQtZmY0ODMxYWNmNDEwXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLlNldFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlciB+ZjooZnVuIGtleSAtPiBmIGtleSkgdFxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZjooZnVuIF8gLT4gbmV4dCAoKSkgfmNvbXBhcmF0b3I6Q29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBUcmVlID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlX3RyZWVfUzEgKENvbXBhcmF0b3IuUG9seSlcblxuICAgIHR5cGUgJ2VsdCB0ID0gKCdlbHQsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRyZWVcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgdCA9IFRyZWUuc2V4cF9vZl90IHNleHBfb2ZfZWx0IFslc2V4cF9vZjogX10gdFxuXG4gICAgbGV0IHRfb2Zfc2V4cCBlbHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIFRyZWUudF9vZl9zZXhwX2RpcmVjdCBlbHRfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yOkNvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluXG5tb2R1bGUgdHlwZSBTID0gU1xubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlXG5cbm1vZHVsZSBFbHRfYmluX2lvID0gRWx0X2Jpbl9pb1xuXG5tb2R1bGUgUHJvdmlkZV9iaW5faW8gKEVsdCA6IEVsdF9iaW5faW8uUykgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICB0eXBlIGVsID0gRWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbGV0IF8gPSBiaW5fZWxcblxuICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4OTg5Mjc4ZS00OTkyLTExZTYtOGY0YS02Yjg5Nzc2YjFlNTNcIlxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5TZXRcIlxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgaXRlciB0IH5mID0gaXRlciB+ZjooZnVuIGtleSAtPiBmIGtleSkgdFxuXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpFbHQuY29tcGFyYXRvclxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBzZXQgaXMgdXNlZCBpbiB0aGUgc3RhYmxlIG1vZHVsZXMgYmVsb3csIHNvIGl0J3NcbiAgICAgYXNzdW1lZCB0byBiZSBzdGFibGUgKGlmIHRoZSBlbHQgaXMgc3RhYmxlKS4gKilcbiAgbGV0IHN0YWJsZV93aXRuZXNzIDogKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgIGxldCAoXyA6IEVsdC50IFN0YWJsZV93aXRuZXNzLnQpID0gRWx0LnN0YWJsZV93aXRuZXNzIGluXG4gICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgRWx0ID0gRWx0XG4gIG1vZHVsZSBFbHRfUzEgPSBDb21wYXJhdG9yLlNfdG9fUzEgKEVsdClcbiAgaW5jbHVkZSBDcmVhdG9ycyAoRWx0X1MxKVxuXG4gIHR5cGUgKCdhLCAnYikgc2V0ID0gKCdhLCAnYikgdFxuICB0eXBlIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHNldFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxuICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3QgRWx0LnNleHBfb2ZfdCBbJXNleHBfb2Y6IF9dIHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoRWx0IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgRWx0LnRfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEVsdCA6IEhhc2hlci5TIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9IHN0cnVjdFxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gVXNpbmdfY29tcGFyYXRvci5oYXNoX2ZvbGRfZGlyZWN0IEVsdC5oYXNoX2ZvbGRfdCBzdGF0ZSB0XG5cbiAgICBsZXQgaGFzaCB0ID1cbiAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgICAoaGFzaF9mb2xkX3QgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkpIHQpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoRWx0JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPVxuICAgIFByb3ZpZGVfYmluX2lvIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRWx0XG4gICAgICBpbmNsdWRlIEVsdCdcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3NcbiAgICAgIChFbHQnIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID1cbiAgICBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRWx0XG4gICAgICBpbmNsdWRlIEVsdCdcbiAgICBlbmQpXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBxdWlja2NoZWNrX29ic2VydmVyXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gcXVpY2tjaGVja19zaHJpbmtlclxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChFbHQgOiBFbHRfcGxhaW4pID0gTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEVsdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChFbHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoRWx0X3NleHAgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9zZXhwKVxuICBtb2R1bGUgRWx0ID0gRWx0X3NleHBcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoRWx0IDogRWx0KSA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBFbHRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoRWx0X2Jpbl9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9iaW5fc2V4cClcbiAgbW9kdWxlIEVsdCA9IEVsdF9iaW5fc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChFbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoRWx0IDogRWx0X2JpbmFibGUpID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgRWx0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nID0gc3RydWN0XG4gIG1vZHVsZSBNID0gU2V0Lk1cblxuICBsZXQgYmluX3NoYXBlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaGFwZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaXplX3RcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl93cml0ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9yZWFkX3RcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF9tX190X18gKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLl9fYmluX3JlYWRfdF9fXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgIChtb2R1bGUgRWx0IDogUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBxdWlja2NoZWNrX2dlbmVyYXRvciAobW9kdWxlIEVsdCkgRWx0LnF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICA9XG4gICAgcXVpY2tjaGVja19vYnNlcnZlciBFbHQucXVpY2tjaGVja19vYnNlcnZlclxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3RcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgIChtb2R1bGUgRWx0IDogUXVpY2tjaGVja19zaHJpbmtlcl9tIHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfc2hyaW5rZXIgRWx0LnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgOztcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBTZXQuRm9yX2Rlcml2aW5nXG5cbiAgaW5jbHVkZSAoU2V0IDogRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQpXG5lbmRcblxubW9kdWxlIEZvcl9kZXJpdmluZ19zdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgU3RhYmxlX3dpdG5lc3NfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnRcbiAgZW5kXG5cbiAgbGV0IHN0YWJsZV93aXRuZXNzX21fX3RcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgIChtb2R1bGUgRWx0IDogU3RhYmxlX3dpdG5lc3NfbSB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChFbHQpIGluXG4gICAgTS5zdGFibGVfd2l0bmVzc1xuICA7O1xuZW5kXG5cbmluY2x1ZGUgRm9yX2Rlcml2aW5nXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnY21wKSB0ID0gKCdhLCAnY21wKSB0XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGVsdFxuICAgICAgdHlwZSBlbHRfY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gKGVsdCwgZWx0X2NvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gICAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBfd2l0aG91dF9jb21wYXJhdG9yIHdpdGggdHlwZSB0IDo9IHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgRm9yX2Rlcml2aW5nXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdfc3RhYmxlXG4gICAgbW9kdWxlIE1ha2UgKEVsdCA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzApID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdClcblxuICAgIG1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gICAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICAgIGluY2x1ZGUgU1xuXG4gICAgICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlIChFbHRfc3RhYmxlIDogU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwKSA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChFbHRfc3RhYmxlKVxuICAgICAgICBpbmNsdWRlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEVsdF9zdGFibGUpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb21wYXJhYmxlX2ludGZcbm1vZHVsZSBJbmZpeCA9IEJhc2UuQ29tcGFyYWJsZS5JbmZpeFxubW9kdWxlIENvbXBhcmlzb25zID0gQmFzZS5Db21wYXJhYmxlLkNvbXBhcmlzb25zXG5cbm1vZHVsZSBWYWxpZGF0ZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICBlbmQpIDogVmFsaWRhdGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIG1vZHVsZSBWID0gVmFsaWRhdGVcbiAgb3BlbiBNYXliZV9ib3VuZFxuXG4gIGxldCB0b19zdHJpbmcgdCA9IEJhc2UuU2V4cC50b19zdHJpbmcgKFQuc2V4cF9vZl90IHQpXG5cbiAgbGV0IHZhbGlkYXRlX2JvdW5kIH5taW4gfm1heCB0ID1cbiAgICBWLmJvdW5kZWQgfm5hbWU6dG9fc3RyaW5nIH5sb3dlcjptaW4gfnVwcGVyOm1heCB+Y29tcGFyZTpULmNvbXBhcmUgdFxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZV9sYm91bmQgfm1pbiB0ID0gdmFsaWRhdGVfYm91bmQgfm1pbiB+bWF4OlVuYm91bmRlZCB0XG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgfm1heCB0ID0gdmFsaWRhdGVfYm91bmQgfm1heCB+bWluOlVuYm91bmRlZCB0XG5lbmRcblxubW9kdWxlIFZhbGlkYXRlX3dpdGhfemVybyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgdmFsIHplcm8gOiB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBWID0gVmFsaWRhdGUgKFQpXG4gIGluY2x1ZGUgVlxuXG4gICgqIFByZWFsbG9jYXRlIHRoZSBpbnRlcmVzdGluZyBib3VuZHMgdG8gbWluaW1pemUgYWxsb2NhdGlvbiBpbiB0aGUgaW1wbGVtZW50YXRpb25zIG9mXG4gICAgIFt2YWxpZGF0ZV8qXS4gKilcbiAgbGV0IGV4Y2xfemVybyA9IE1heWJlX2JvdW5kLkV4Y2wgVC56ZXJvXG4gIGxldCBpbmNsX3plcm8gPSBNYXliZV9ib3VuZC5JbmNsIFQuemVyb1xuICBsZXQgdmFsaWRhdGVfcG9zaXRpdmUgdCA9IHZhbGlkYXRlX2xib3VuZCB+bWluOmV4Y2xfemVybyB0XG4gIGxldCB2YWxpZGF0ZV9ub25fbmVnYXRpdmUgdCA9IHZhbGlkYXRlX2xib3VuZCB+bWluOmluY2xfemVybyB0XG4gIGxldCB2YWxpZGF0ZV9uZWdhdGl2ZSB0ID0gdmFsaWRhdGVfdWJvdW5kIH5tYXg6ZXhjbF96ZXJvIHRcbiAgbGV0IHZhbGlkYXRlX25vbl9wb3NpdGl2ZSB0ID0gdmFsaWRhdGVfdWJvdW5kIH5tYXg6aW5jbF96ZXJvIHRcbmVuZFxuXG5tb2R1bGUgV2l0aF96ZXJvIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICB2YWwgemVybyA6IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZV93aXRoX3plcm8gKFQpXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLldpdGhfemVybyAoVClcbmVuZFxuXG5tb2R1bGUgTWFwX2FuZF9zZXRfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIE1hcF9hbmRfc2V0X2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmQpID1cbiAgTWFwX2FuZF9zZXRfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgUG9seSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLlBvbHkgKFQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQ1xuICBpbmNsdWRlIFZhbGlkYXRlIChDKVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gdCA9IENcbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV91c2luZ19jb21wYXJhdG9yIChDKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFNfcGxhaW4gd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE0gPSBCYXNlLkNvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIE1cblxuICBpbmNsdWRlIFZhbGlkYXRlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBNXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgZW5kKSA9XG4gIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNID0gQmFzZS5Db21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBNXG5cbiAgaW5jbHVkZSBWYWxpZGF0ZSAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgTVxuICAgIGVuZClcblxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNID0gQmFzZS5Db21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcblxuICBpbmNsdWRlIFZhbGlkYXRlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgY29tcGFyZSA9IFQuY29tcGFyYXRvci5jb21wYXJlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgTVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgRXh0ZW5kXG4gICAgKE0gOiBCYXNlLkNvbXBhcmFibGUuUykgKFggOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIGluY2x1ZGUgKFxuICAgICAgWCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gTS50IFtAQGRlcml2aW5nIHNleHBdXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFZhbGlkYXRlIChUKVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBFeHRlbmRfYmluYWJsZVxuICAgIChNIDogQmFzZS5Db21wYXJhYmxlLlMpIChYIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSB0ID0gTS50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIGluY2x1ZGUgKFxuICAgICAgWCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gTS50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdClcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgVmFsaWRhdGUgKFQpXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBJbmhlcml0IChDIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG4gIGVuZCkgKFQgOiBzaWdcbiAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgICAgIHZhbCBjb21wb25lbnQgOiB0IC0+IEMudFxuICAgICAgICBlbmQpID1cbiAgTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBsZXQgY29tcGFyZSB0IHQnID0gQy5jb21wYXJlIChULmNvbXBvbmVudCB0KSAoVC5jb21wb25lbnQgdCcpXG4gIGVuZClcblxuaW5jbHVkZSAoQmFzZS5Db21wYXJhYmxlIDogV2l0aF9jb21wYXJlKVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY29tcGFyYWJsZVxuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbW9kdWxlIE1hcCA6XG4gICAgICAgIE1hcC5TdGFibGUuVjEuU1xuICAgICAgICB3aXRoIHR5cGUga2V5IDo9IGNvbXBhcmFibGVcbiAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbW9kdWxlIFNldCA6XG4gICAgICAgIFNldC5TdGFibGUuVjEuU1xuICAgICAgICB3aXRoIHR5cGUgZWx0IDo9IGNvbXBhcmFibGVcbiAgICAgICAgd2l0aCB0eXBlIGVsdF9jb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoWCA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzApID0gc3RydWN0XG4gICAgICBtb2R1bGUgTWFwID0gTWFwLlN0YWJsZS5WMS5NYWtlIChYKVxuICAgICAgbW9kdWxlIFNldCA9IFNldC5TdGFibGUuVjEuTWFrZSAoWClcbiAgICBlbmRcblxuICAgIG1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gICAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICAgIHR5cGUgY29tcGFyYWJsZVxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIG1vZHVsZSBNYXAgOlxuICAgICAgICAgIE1hcC5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5TXG4gICAgICAgICAgd2l0aCB0eXBlIGtleSA6PSBjb21wYXJhYmxlXG4gICAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICBtb2R1bGUgU2V0IDpcbiAgICAgICAgICBTZXQuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuU1xuICAgICAgICAgIHdpdGggdHlwZSBlbHQgOj0gY29tcGFyYWJsZVxuICAgICAgICAgIHdpdGggdHlwZSBlbHRfY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlIChYIDogU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwKSA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgTWFwID0gTWFwLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFgpXG4gICAgICAgIG1vZHVsZSBTZXQgPSBTZXQuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoWClcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwiaW5jbHVkZSBMaXN0MCAoKiogQGlubGluZSAqKVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIHN0YWdlZCB0byBpbmRpY2F0ZSB0aGF0IHJlYWwgd29yayAodGhlIGZ1bmN0b3IgYXBwbGljYXRpb24pIHRha2VzXG4gICBwbGFjZSBhZnRlciBhIHBhcnRpYWwgYXBwbGljYXRpb24uICopXG5sZXQgc3RhYmxlX2RlZHVwX3N0YWdlZCAodHlwZSBhKSB+KGNvbXBhcmUgOiBhIC0+IGEgLT4gaW50KVxuICA6IChhIGxpc3QgLT4gYSBsaXN0KSBCYXNlLlN0YWdlZC50XG4gID1cbiAgbGV0IG1vZHVsZSBTZXQgPVxuICAgIFNldC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbiAgICAgICgqIFtzdGFibGVfZGVkdXBfbGlzdF0gbmV2ZXIgY2FsbHMgdGhlc2UgKilcbiAgICAgIGxldCB0X29mX3NleHAgXyA9IGFzc2VydCBmYWxzZVxuICAgICAgbGV0IHNleHBfb2ZfdCBfID0gYXNzZXJ0IGZhbHNlXG4gICAgZW5kKVxuICBpblxuICBCYXNlLlN0YWdlZC5zdGFnZSBTZXQuc3RhYmxlX2RlZHVwX2xpc3Rcbjs7XG5cbmxldCB6aXBfd2l0aF9yZW1haW5kZXIgPVxuICBsZXQgcmVjIHppcF93aXRoX2FjY19hbmRfcmVtYWluZGVyIGFjYyB4cyB5cyA9XG4gICAgbWF0Y2ggeHMsIHlzIHdpdGhcbiAgICB8IFtdLCBbXSAtPiByZXYgYWNjLCBOb25lXG4gICAgfCBmc3QsIFtdIC0+IHJldiBhY2MsIFNvbWUgKEVpdGhlci5GaXJzdCBmc3QpXG4gICAgfCBbXSwgc25kIC0+IHJldiBhY2MsIFNvbWUgKEVpdGhlci5TZWNvbmQgc25kKVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPiB6aXBfd2l0aF9hY2NfYW5kX3JlbWFpbmRlciAoKHgsIHkpIDo6IGFjYykgeHMgeXNcbiAgaW5cbiAgZnVuIHhzIHlzIC0+IHppcF93aXRoX2FjY19hbmRfcmVtYWluZGVyIFtdIHhzIHlzXG47O1xuXG50eXBlIHNleHBfdGh1bmsgPSB1bml0IC0+IEJhc2UuU2V4cC50XG5cbmxldCBzZXhwX29mX3NleHBfdGh1bmsgeCA9IHggKClcblxuZXhjZXB0aW9uIER1cGxpY2F0ZV9mb3VuZCBvZiBzZXhwX3RodW5rICogQmFzZS5TdHJpbmcudCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgZXhuX2lmX2R1cCB+Y29tcGFyZSA/KGNvbnRleHQgPSBcImV4bl9pZl9kdXBcIikgdCB+dG9fc2V4cCA9XG4gIG1hdGNoIGZpbmRfYV9kdXAgfmNvbXBhcmUgdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZHVwIC0+IHJhaXNlIChEdXBsaWNhdGVfZm91bmQgKChmdW4gKCkgLT4gdG9fc2V4cCBkdXApLCBjb250ZXh0KSlcbjs7XG5cbmxldCBzbGljZSBhIHN0YXJ0IHN0b3AgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLnNsaWNlIH5sZW5ndGhfZnVuOmxlbmd0aCB+c3ViX2Z1bjpzdWIgYSBzdGFydCBzdG9wXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hciwgYmluX2lvLCBjb21wYXJlXVxuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzID0gTGlzdDAuc3RhYmxlX3dpdG5lc3MgW0BAYWxlcnQgXCItZm9yX2ludGVybmFsX3VzZV9vbmx5XCJdXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5PcHRpb25cblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uIFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbmluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mLCBjb21wYXJlXVxuICBlbmQpXG5cbmxldCB2YWxpZGF0ZSB+bm9uZSB+c29tZSB0ID1cbiAgbGV0IG1vZHVsZSBWID0gVmFsaWRhdGUgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBWLm5hbWUgXCJub25lXCIgKFYucHJvdGVjdCBub25lICgpKVxuICB8IFNvbWUgeCAtPiBWLm5hbWUgXCJzb21lXCIgKFYucHJvdGVjdCBzb21lIHgpXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9wdGlvblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIub3B0aW9uXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5vcHRpb25cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuXG4gICAgKCogW3Vuc2FmZV92YWx1ZV0gaXMgb25seSBzYWZlIHRvIGNhbGwgd2hlbiBbaXNfbm9uZV0gcmV0dXJucyBbZmFsc2VdLiBUbyBhdm9pZFxuICAgICAgIHJlcGVhdGluZyB0aGUgW2lzX25vbmVdIGNoZWNrLCB3ZSBkZWNsYXJlIFtVbmNoZWNrZWRfc29tZV0uIFtVbmNoZWNrZWRfc29tZSB4XVxuICAgICAgIGhhcyB0aGUgc2FtZSByZXByZXNlbnRhdGlvbiBhcyBbU29tZSB4XSwgYnV0IHRoZSB0eXBlIGhhcyBubyBbTm9uZV0gY2xhdXNlLlxuXG4gICAgICAgV2UgbWFrZSBzdXJlIGFsbCB0aGlzIHdvcmtzIHdpdGggdGVzdHMgb2YgW3Vuc2FmZV92YWx1ZV0gaW4gdGVzdF9vcHRpb24ubWwuXG5cbiAgICAgICBXZSB0cmllZCB1c2luZyBbT2JqLmZpZWxkXSBpbnN0ZWFkLiBJdCBnZW5lcmF0ZXMgbXVjaCB3b3JzZSBuYXRpdmUgY29kZSBkdWUgdG9cbiAgICAgICBmbG9hdCBhcnJheSByZXByZXNlbnRhdGlvbnMuICopXG5cbiAgICBtb2R1bGUgVW5jaGVja2VkX3NvbWUgPSBzdHJ1Y3RcbiAgICAgICgqIFdhcm5pbmcgMzcgdGVsbHMgdXMgW1VuY2hlY2tlZF9zb21lXSBpcyBuZXZlciB1c2VkIGFzIGEgY29uc3RydWN0b3IuIFRoaXMgaXNcbiAgICAgICAgIGludGVudGlvbmFsLCBzbyB3ZSBkaXNhYmxlIHRoZSB3YXJuaW5nLiAqKVxuICAgICAgdHlwZSAnYSB0ID0gVW5jaGVja2VkX3NvbWUgb2YgJ2EgW0BAb2NhbWwuYm94ZWRdIFtAQG9jYW1sLndhcm5pbmcgXCItMzdcIl1cbiAgICBlbmRcblxuICAgIGxldCB1bnNhZmVfdmFsdWUgKHR5cGUgYSkgKHQgOiBhIHQpIDogYSA9XG4gICAgICBsZXQgKFVuY2hlY2tlZF9zb21lIHZhbHVlKSA9IChPYmoubWFnaWMgdCA6IGEgVW5jaGVja2VkX3NvbWUudCkgaW5cbiAgICAgIHZhbHVlXG4gICAgOztcbiAgZW5kXG5lbmRcbiIsIigqIFRoaXMgY29kZSBpcyBiYXNlZCBvbiB0aGUgTUx0b24gbGlicmFyeSBzZXQvZGlzam9pbnQuZnVuLCB3aGljaCBoYXMgdGhlXG4gICBmb2xsb3dpbmcgY29weXJpZ2h0IG5vdGljZS5cbiopXG4oKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNSBIZW5yeSBDZWp0aW4sIE1hdHRoZXcgRmx1ZXQsIFN1cmVzaFxuICogICAgSmFnYW5uYXRoYW4sIGFuZCBTdGVwaGVuIFdlZWtzLlxuICpcbiAqIE1MdG9uIGlzIHJlbGVhc2VkIHVuZGVyIGEgQlNELXN0eWxlIGxpY2Vuc2UuXG4gKiBTZWUgdGhlIGZpbGUgTUx0b24tTElDRU5TRSBmb3IgZGV0YWlscy5cbiopXG5cbm9wZW4hIEltcG9ydFxuXG4oKlxuICAge3ZcbiAgICAgICAgICAgUm9vdFxuICAgICAgICAgICAgIHxcbiAgICAgICAgICAgSW5uZXJcbiAgICAgICAgLyAuLiB8IC4uIFxcXG4gICAgIElubmVyIElubmVyIElubmVyXG4gICAgICAvfFxcICAgL3xcXCAgIC98XFxcbiAgICAgIC4uLiAgIC4uLiAgIC4uLlxuICAgdn1cblxuICAgV2UgY29uc3RydWN0IHRoZSBgaW52ZXJ0ZWQnIHRyZWUgaW4gdGhlIE1MIHJlcHJlc2VudGF0aW9uLlxuICAgVGhlIGRpcmVjdGlvbiBvZiB0aGUgZWRnZXMgaXMgVVBXQVJEUy5cbiAgIFN0YXJ0aW5nIHdpdGggYW55IFsnYSB0XSB3ZSBjYW4gc3RlcCBkaXJlY3RseSB0byBpdHMgcGFyZW50LlxuICAgQnV0IHdlIGNhbid0IChhbmQgZG9uJ3QgbmVlZCB0bykgc3RhcnQgZnJvbSB0aGUgcm9vdCBhbmQgc3RlcCB0byBpdHMgY2hpbGRyZW4uXG4qKVxuXG4oKlxuICAgW3JhbmtdIGlzIGFuIHVwcGVyIGJvdW5kIG9uIHRoZSBkZXB0aCBvZiBhbnkgbm9kZSBpbiB0aGUgdXAtdHJlZS5cblxuICAgSW1hZ2luZSBhbiB1bmx1Y2t5IHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgaW4gd2hpY2ggeW91IGNyZWF0ZSBOXG4gICBpbmRpdmlkdWFsIFt0XS12YWx1ZXMgYW5kIHRoZW4gdW5pb24gdGhlbSB0b2dldGhlciBpbiBzdWNoIGEgd2F5XG4gICB0aGF0IHlvdSBhbHdheXMgcGljayB0aGUgcm9vdCBvZiBlYWNoIHRyZWUgdG8gdW5pb24gdG9nZXRoZXIsIHNvIHRoYXRcbiAgIG5vIHBhdGggY29tcHJlc3Npb24gdGFrZXMgcGxhY2UuICBJZiB5b3UgZG9uJ3QgdGFrZSBjYXJlIHRvIHNvbWVob3dcbiAgIGJhbGFuY2UgdGhlIHJlc3VsdGluZyB1cC10cmVlLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHlvdSBlbmQgdXAgd2l0aCBvbmVcbiAgIGJpZyBsb25nIGNoYWluIG9mIE4gbGlua3MsIGFuZCB0aGVuIGNhbGxpbmcgW3JlcHJlc2VudGF0aXZlXSBvbiB0aGVcbiAgIGRlZXBlc3Qgbm9kZSB0YWtlcyBUaGV0YShOKSB0aW1lLiAgV2l0aCB0aGUgYmFsYW5jaW5nIHNjaGVtZSBvZiBuZXZlclxuICAgaW5jcmVhc2luZyB0aGUgcmFuayBvZiBhIG5vZGUgdW5uZWNlc3NhcmlseSwgaXQgd291bGQgdGFrZSBPKGxvZyBOKS5cbiopXG50eXBlICdhIHJvb3QgPVxuICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICA7IG11dGFibGUgcmFuayA6IGludFxuICB9XG5cbnR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBub2RlIDogJ2Egbm9kZSB9XG5cbmFuZCAnYSBub2RlID1cbiAgfCBJbm5lciBvZiAnYSB0XG4gICgqIFtJbm5lciB4XSBpcyBhIG5vZGUgd2hvc2UgcGFyZW50IGlzIFt4XS4gKilcbiAgfCBSb290IG9mICdhIHJvb3RcblxubGV0IGludmFyaWFudCBfIHQgPVxuICBsZXQgcmVjIGxvb3AgdCBkZXB0aCA9XG4gICAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgICB8IElubmVyIHQgLT4gbG9vcCB0IChkZXB0aCArIDEpXG4gICAgfCBSb290IHIgLT4gYXNzZXJ0IChkZXB0aCA8PSByLnJhbmspXG4gIGluXG4gIGxvb3AgdCAwXG47O1xuXG5sZXQgY3JlYXRlIHYgPSB7IG5vZGUgPSBSb290IHsgdmFsdWUgPSB2OyByYW5rID0gMCB9IH1cblxuKCogaW52YXJpYW50czpcbiAgIFtpbm5lci5ub2RlXSA9IFtpbm5lcl9ub2RlXSA9IFtJbm5lciB0XS5cbiAgIFtkZXNjZW5kYW50c10gYXJlIHRoZSBwcm9wZXIgZGVzY2VuZGFudHMgb2YgW2lubmVyXSB3ZSd2ZSB2aXNpdGVkLlxuKilcbmxldCByZWMgY29tcHJlc3MgdCB+aW5uZXJfbm9kZSB+aW5uZXIgfmRlc2NlbmRhbnRzID1cbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IHIgLT5cbiAgICAoKiB0IGlzIHRoZSByb290IG9mIHRoZSB0cmVlLlxuICAgICAgIFJlLXBvaW50IGFsbCBkZXNjZW5kYW50cyBkaXJlY3RseSB0byBpdCBieSBzZXR0aW5nIHRoZW0gdG8gW0lubmVyIHRdLlxuICAgICAgIE5vdGU6IHdlIGRvbid0IHJlLXBvaW50IFtpbm5lcl0gYXMgaXQgYWxyZWFkeSBwb2ludHMgdGhlcmUuICopXG4gICAgTGlzdC5pdGVyIGRlc2NlbmRhbnRzIH5mOihmdW4gdCAtPiB0Lm5vZGUgPC0gaW5uZXJfbm9kZSk7XG4gICAgdCwgclxuICB8IElubmVyIHQnIGFzIG5vZGUgLT5cbiAgICBjb21wcmVzcyB0JyB+aW5uZXJfbm9kZTpub2RlIH5pbm5lcjp0IH5kZXNjZW5kYW50czooaW5uZXIgOjogZGVzY2VuZGFudHMpXG47O1xuXG5sZXQgcmVwcmVzZW50YXRpdmUgdCA9XG4gIG1hdGNoIHQubm9kZSB3aXRoXG4gIHwgUm9vdCByIC0+IHQsIHJcbiAgfCBJbm5lciB0JyBhcyBub2RlIC0+IGNvbXByZXNzIHQnIH5pbm5lcl9ub2RlOm5vZGUgfmlubmVyOnQgfmRlc2NlbmRhbnRzOltdXG47O1xuXG5sZXQgcm9vdCB0ID1cbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IHIgLT5cbiAgICAoKiBhdm9pZCB0dXBsZSBhbGxvY2F0aW9uIGluIHRoZSBmYXN0IHBhdGggKilcbiAgICByXG4gIHwgXyAtPiBzbmQgKHJlcHJlc2VudGF0aXZlIHQpXG47O1xuXG5sZXQgcmFuayB0ID0gKHJvb3QgdCkucmFua1xubGV0IGdldCB0ID0gKHJvb3QgdCkudmFsdWVcbmxldCBzZXQgdCB2ID0gKHJvb3QgdCkudmFsdWUgPC0gdlxubGV0IHNhbWVfY2xhc3MgdDEgdDIgPSBwaHlzX2VxdWFsIChyb290IHQxKSAocm9vdCB0MilcblxubGV0IHVuaW9uIHQxIHQyID1cbiAgbGV0IHQxLCByMSA9IHJlcHJlc2VudGF0aXZlIHQxIGluXG4gIGxldCB0MiwgcjIgPSByZXByZXNlbnRhdGl2ZSB0MiBpblxuICBpZiBwaHlzX2VxdWFsIHIxIHIyXG4gIHRoZW4gKClcbiAgZWxzZSAoXG4gICAgbGV0IG4xID0gcjEucmFuayBpblxuICAgIGxldCBuMiA9IHIyLnJhbmsgaW5cbiAgICBpZiBuMSA8IG4yXG4gICAgdGhlbiB0MS5ub2RlIDwtIElubmVyIHQyXG4gICAgZWxzZSAoXG4gICAgICB0Mi5ub2RlIDwtIElubmVyIHQxO1xuICAgICAgaWYgbjEgPSBuMiB0aGVuIHIxLnJhbmsgPC0gcjEucmFuayArIDEpKVxuOztcblxubGV0IGlzX2NvbXByZXNzZWQgdCA9XG4gIGludmFyaWFudCBpZ25vcmUgdDtcbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IF8gLT4gdHJ1ZVxuICB8IElubmVyIHQgLT5cbiAgICAobWF0Y2ggdC5ub2RlIHdpdGhcbiAgICAgfCBSb290IF8gLT4gdHJ1ZVxuICAgICB8IElubmVyIF8gLT4gZmFsc2UpXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgaXNfY29tcHJlc3NlZCA9IGlzX2NvbXByZXNzZWRcbiAgbGV0IHJhbmsgPSByYW5rXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBEb3VibHlfbGlua2VkX2ludGZcblxuKCogSU5WQVJJQU5UOiBUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgYSBsaXN0IGlzIG11dGF0ZWQgZHVyaW5nIGEgcGVuZGluZyBpdGVyYXRpb24uXG5cbiAgIFRoaXMgaW52YXJpYW50IGlzIGd1YXJhbnRlZWQgYnkgdGhlIEhlYWRlciBhbmQgRWx0IG1vZHVsZXMgaW4gY29uanVuY3Rpb24uICBBbGxcbiAgIGRvd25zdHJlYW0gY29kZSBpbiB0aGlzIG1vZHVsZSBuZWVkIG5vdCBiZSBjb25jZXJuZWQgd2l0aCB0aGlzIGludmFyaWFudC4gKilcbmV4Y2VwdGlvbiBBdHRlbXB0X3RvX211dGF0ZV9saXN0X2R1cmluZ19pdGVyYXRpb25cblxubGV0IHBoeXNfZXF1YWwgPSAoID09IClcblxubW9kdWxlIEhlYWRlciA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgaW5jcl9sZW5ndGggOiBieTppbnQgLT4gdCAtPiB1bml0XG4gIHZhbCBjaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgOiB0IC0+IHVuaXRcblxuICAoKiBVbmZvcnR1bmF0ZSwgYnV0IGJ5IHNwZWNpYWxpemluZyBbd2l0aF9pdGVyYXRpb25dIGZvciBkaWZmZXJlbnQgYXJpdGllcywgYSBsYXJnZVxuICAgICBhbW91bnQgb2YgYWxsb2NhdGlvbiBkdXJpbmcgZm9sZHMgYW5kIGl0ZXJhdGlvbnMgaXMgYXZvaWRlZC5cblxuICAgICBUaGUgb3JpZ2luYWwgdHlwZSBvZiBbd2l0aF9pdGVyYXRpb25dIHdhc1xuICAgICBbdmFsIHdpdGhfaXRlcmF0aW9uIDogdCAtPiAodW5pdCAtPiAnYSkgLT4gJ2FdXG5cbiAgICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlblxuICAgICB7W1xuICAgICAgIGxldCB4ID0gZSBpblxuICAgICAgIGxldCBmICgpID0gZyB4IGluXG4gICAgICAgZiAoKVxuICAgICBdfVxuICAgICBhbmRcbiAgICAge1tcbiAgICAgICBsZXQgeCA9IGUgaW5cbiAgICAgICBsZXQgZiB4ID0gZyB4IGluXG4gICAgICAgZiB4XG4gICAgIF19XG4gICAgIGlzIHRoYXQgaW4gdGhlIGZpcnN0IGNhc2UgdGhlIGNsb3N1cmUgZm9yIFtmXSBjb250YWlucyBhIHBvaW50ZXIgdG8gW3hdLFxuICAgICBhbmQgaW4gdGhlIHNlY29uZCBjYXNlIGl0IGRvZXNuJ3QuIEEgY2xvc3VyZSB3aXRob3V0IHBvaW50ZXJzIHRvIGVuY2xvc2luZ1xuICAgICBlbnZpcm9ubWVudCBpcyBpbXBsZW1lbnRlZCBhcyBhIG5ha2VkIGZ1bmN0aW9uIHBvaW50ZXIsIHNvIHdlIGRvbid0XG4gICAgIGFsbG9jYXRlIGF0IGFsbC5cblxuICAgICBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIG1ha2Ugc3VyZSBub3QgdG8gY2FsbCBbUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gLi4uKV1cbiAgICAgaW5zaWRlIFt3aXRoX2l0ZXJhdGlvbl0gYW5kIGRvIGFuIGV4cGxpY2l0IG1hdGNoIHN0YXRlbWVudCBpbnN0ZWFkLiAqKVxuXG4gIHZhbCB3aXRoX2l0ZXJhdGlvbl8ybFxuICAgIDogIHRcbiAgICAtPiAnYVxuICAgIC0+ICgnYltAbG9jYWxdKVxuICAgIC0+ICgoJ2EgLT4gKCdiW0Bsb2NhbF0pIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICdjXG5cbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzMgOiB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCkgLT4gJ2RcbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzQgOiB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSkgLT4gJ2VcblxuICB2YWwgd2l0aF9pdGVyYXRpb25fNGxcbiAgICA6ICB0XG4gICAgLT4gKCdhW0Bsb2NhbF0pXG4gICAgLT4gKCdiW0Bsb2NhbF0pXG4gICAgLT4gJ2NcbiAgICAtPiAnZFxuICAgIC0+ICgoKCdhW0Bsb2NhbF0pIC0+ICgnYltAbG9jYWxdKSAtPiAnYyAtPiAnZCAtPiAnZSlbQGxvY2FsXSlcbiAgICAtPiAnZVxuXG4gIHZhbCBtZXJnZSA6IHQgLT4gdCAtPiBbIGBTYW1lX2FscmVhZHkgfCBgTWVyZ2VkIF1cbmVuZCA9IHN0cnVjdFxuICB0eXBlIHMgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7XG4gICAgICBtdXRhYmxlIHBlbmRpbmdfaXRlcmF0aW9ucyA6IGludFxuICAgIH1cblxuICB0eXBlIHQgPSBzIFVuaW9uX2ZpbmQudFxuXG4gIGxldCBjcmVhdGUgKCkgPSBVbmlvbl9maW5kLmNyZWF0ZSB7IGxlbmd0aCA9IDE7IHBlbmRpbmdfaXRlcmF0aW9ucyA9IDAgfVxuICBsZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBVbmlvbl9maW5kLnNhbWVfY2xhc3MgdDEgdDJcbiAgbGV0IGxlbmd0aCB0ID0gKFVuaW9uX2ZpbmQuZ2V0IHQpLmxlbmd0aFxuXG4gIGxldCB1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGlmIHMucGVuZGluZ19pdGVyYXRpb25zID4gMCB0aGVuIHJhaXNlIEF0dGVtcHRfdG9fbXV0YXRlX2xpc3RfZHVyaW5nX2l0ZXJhdGlvbiBlbHNlIHNcbiAgOztcblxuICBsZXQgY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgPVxuICAgIGlnbm9yZSAodW5pb25fZmluZF9nZXRfX2NoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0IDogcylcbiAgOztcblxuICBsZXQgaW5jcl9sZW5ndGggfmJ5Om4gdCA9XG4gICAgbGV0IHMgPSB1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgaW5cbiAgICBzLmxlbmd0aCA8LSBzLmxlbmd0aCArIG5cbiAgOztcblxuICAoKiBDYXJlIGlzIHRha2VuIG5vdCB0byBhbGxvY2F0ZSBpbiBbd2l0aF9pdGVyYXRpb25fKl0sIHNpbmNlIGl0IGlzIGNhbGxlZCBldmVyeSBzZWNvbmRcbiAgICAgYnkgW2V2ZXJ5X3NlY29uZF0gaW4gW3dyaXRlcjAubWxdICopXG5cbiAgbGV0IGluY3JfcGVuZGluZ19pdGVycyBzID0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPC0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgKyAxXG4gIGxldCBkZWNyX3BlbmRpbmdfaXRlcnMgcyA9IHMucGVuZGluZ19pdGVyYXRpb25zIDwtIHMucGVuZGluZ19pdGVyYXRpb25zIC0gMVxuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl8ybCB0IGEgKGIgW0Bsb2NhbF0pIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgcmFpc2UgZXhuXG4gICAgfCByIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJcbiAgOztcblxuICBsZXQgd2l0aF9pdGVyYXRpb25fMyB0IGEgYiBjIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIGMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl80IHQgYSBiIGMgZCBmID1cbiAgICBsZXQgcyA9IFVuaW9uX2ZpbmQuZ2V0IHQgaW5cbiAgICBpbmNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICBtYXRjaCBmIGEgYiBjIGQgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl80bCB0IChhIFtAbG9jYWxdKSAoYiBbQGxvY2FsXSkgYyBkIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIGMgZCB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IG1lcmdlICh0MSA6IHQpIHQyID1cbiAgICBpZiBVbmlvbl9maW5kLnNhbWVfY2xhc3MgdDEgdDJcbiAgICB0aGVuIGBTYW1lX2FscmVhZHlcbiAgICBlbHNlIChcbiAgICAgIGxldCBuMSA9ICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxKS5sZW5ndGggaW5cbiAgICAgIGxldCBuMiA9ICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQyKS5sZW5ndGggaW5cbiAgICAgIHdpdGhfaXRlcmF0aW9uXzQgdDEgdDEgdDIgbjEgbjIgKGZ1biB0MSB0MiBuMSBuMiAtPlxuICAgICAgICB3aXRoX2l0ZXJhdGlvbl80IHQyIHQxIHQyIG4xIG4yIChmdW4gdDEgdDIgbjEgbjIgLT5cbiAgICAgICAgICBVbmlvbl9maW5kLnVuaW9uIHQxIHQyO1xuICAgICAgICAgIFVuaW9uX2ZpbmQuc2V0IHQxIHsgbGVuZ3RoID0gbjEgKyBuMjsgcGVuZGluZ19pdGVyYXRpb25zID0gMCB9KSk7XG4gICAgICBgTWVyZ2VkKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFbHQgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGhlYWRlciA6ICdhIHQgLT4gSGVhZGVyLnRcbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGNyZWF0ZSA6ICdhIC0+ICdhIHRcbiAgdmFsIHZhbHVlIDogJ2EgdCAtPiAnYVxuICB2YWwgc2V0IDogJ2EgdCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bmxpbmsgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHNwbGl0X29yX3NwbGljZV9iZWZvcmUgOiAnYSB0IC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIDogJ2EgdCAtPiAnYSB0IC0+IHVuaXRcbiAgdmFsIGluc2VydF9hZnRlciA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgaW5zZXJ0X2JlZm9yZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgdW5saW5rX2JlZm9yZSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgbmV4dCA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgcHJldiA6ICdhIHQgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIHZhbHVlIDogJ2FcbiAgICA7IG11dGFibGUgcHJldiA6ICdhIHRcbiAgICA7IG11dGFibGUgbmV4dCA6ICdhIHRcbiAgICA7IG11dGFibGUgaGVhZGVyIDogSGVhZGVyLnRcbiAgICB9XG5cbiAgbGV0IGVxdWFsID0gcGh5c19lcXVhbFxuICBsZXQgbmV4dCB0ID0gdC5uZXh0XG4gIGxldCBwcmV2IHQgPSB0LnByZXZcbiAgbGV0IGhlYWRlciB0ID0gdC5oZWFkZXJcblxuICBsZXQgY3JlYXRlX2F1eCB2IGhlYWRlciA9XG4gICAgbGV0IHJlYyB0ID0geyB2YWx1ZSA9IHY7IHByZXYgPSB0OyBuZXh0ID0gdDsgaGVhZGVyIH0gaW5cbiAgICB0XG4gIDs7XG5cbiAgbGV0IGlzX3NpbmdsZXRvbiB0ID0gZXF1YWwgdCB0LnByZXZcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHNleHBfb2ZfYSB0LnZhbHVlXG4gIGxldCBjcmVhdGUgdiA9IGNyZWF0ZV9hdXggdiAoSGVhZGVyLmNyZWF0ZSAoKSlcbiAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG4gIGxldCBzZXQgdCB2ID0gdC52YWx1ZSA8LSB2XG5cbiAgKCpcbiAgICAgW3NwbGl0X29yX3NwbGljZV0gaXMgc3VmZmljaWVudCBhcyB0aGUgbG9uZSBwcmltaXRpdmUgZm9yXG4gICAgIGFjY29tcGxpc2hpbmcgYWxsIHBvaW50ZXIgdXBkYXRlcyBvbiBjeWNsaWMgbG9vcHMgb2YgbGlzdCBub2Rlcy5cbiAgICAgSXQgdGFrZXMgdHdvIFwiZ2Fwc1wiIGJldHdlZW4gYWRqYWNlbnQgbGlua2VkIGxpc3Qgbm9kZXMuICBJZiB0aGUgZ2Fwc1xuICAgICBwb2ludCBpbnRvIHRoZSBzYW1lIGxpc3QsIHRoZSByZXN1bHQgaXMgdGhhdCBpdCB3aWxsIGJlIHNwbGl0IGludG9cbiAgICAgdHdvIGxpc3RzIGFmdGVyd2FyZHMuICBJZiB0aGUgZ2FwcyBwb2ludCBpbnRvIGRpZmZlcmVudCBsaXN0cywgdGhlXG4gICAgIHJlc3VsdCBpcyB0aGF0IHRoZXkgd2lsbCBiZSBzcGxpY2VkIHRvZ2V0aGVyIGludG8gb25lIGxpc3QgYWZ0ZXJ3YXJkcy5cblxuICAgICB7dlxuICAgICAgIEJlZm9yZSAgICAgICAgICAgICAgICAgICAgICBBZnRlclxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgICAgICAgICAgICstLS0tLVxuICAgICAgICAgICAgICBBIHwgIDwtLT4gIHwgQiAgICAgICAgICAgICAgIEEgfCAgPC0tLSAgIC0tLT4gIHwgQlxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgIFxcIC8gICAgICArLS0tLS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgIC8gXFwgICAgICArLS0tLS1cbiAgICAgICAgICAgICAgQyB8ICA8LS0+ICB8IEQgICAgICAgICAgICAgICBDIHwgIDwtLS0gICAtLS0+ICB8IERcbiAgICAgICAgICAgLS0tLS0rICAgICAgICArLS0tLS0gICAgICAgICAtLS0tLSsgICAgICAgICAgICAgICArLS0tLS1cbiAgICAgdn0gKilcblxuICBsZXQgdW5zYWZlX3NwbGl0X29yX3NwbGljZSB+cHJldjE6YSB+bmV4dDE6YiB+cHJldjI6YyB+bmV4dDI6ZCA9XG4gICAgYS5uZXh0IDwtIGQ7XG4gICAgZC5wcmV2IDwtIGE7XG4gICAgYy5uZXh0IDwtIGI7XG4gICAgYi5wcmV2IDwtIGNcbiAgOztcblxuICBsZXQgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0MSB0MiA9XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZVxuICAgICAgfm5leHQxOnQxLm5leHRcbiAgICAgIH5wcmV2MTp0MS5uZXh0LnByZXZcbiAgICAgIH5uZXh0Mjp0Mi5uZXh0XG4gICAgICB+cHJldjI6dDIubmV4dC5wcmV2XG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyID1cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlXG4gICAgICB+cHJldjE6dDEucHJldlxuICAgICAgfm5leHQxOnQxLnByZXYubmV4dFxuICAgICAgfnByZXYyOnQyLnByZXZcbiAgICAgIH5uZXh0Mjp0Mi5wcmV2Lm5leHRcbiAgOztcblxuICBsZXQgY2hlY2tfdHdvX25vZGVzX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MSB0MiA9XG4gICAgSGVhZGVyLmNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MS5oZWFkZXI7XG4gICAgaWYgbm90IChIZWFkZXIuZXF1YWwgdDEuaGVhZGVyIHQyLmhlYWRlcilcbiAgICB0aGVuIEhlYWRlci5jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDIuaGVhZGVyXG4gIDs7XG5cbiAgKCogV2UgcmVkZWZpbmUgc2FmZSB2ZXJzaW9ucyBmb3IgZXhwb3J0ICopXG4gIGxldCBzcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdDEgdDIgPVxuICAgIGNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEgdDI7XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0MSB0MlxuICA7O1xuXG4gIGxldCBzcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyID1cbiAgICBjaGVja190d29fbm9kZXNfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxIHQyO1xuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyXG4gIDs7XG5cbiAgbGV0IGluc2VydF9iZWZvcmUgdCB2ID1cbiAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OjE7XG4gICAgbGV0IG5vZGUgPSBjcmVhdGVfYXV4IHYgdC5oZWFkZXIgaW5cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0IG5vZGU7XG4gICAgbm9kZVxuICA7O1xuXG4gIGxldCBpbnNlcnRfYWZ0ZXIgdCB2ID1cbiAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OjE7XG4gICAgbGV0IG5vZGUgPSBjcmVhdGVfYXV4IHYgdC5oZWFkZXIgaW5cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQgbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGR1bW15X2hlYWRlciA9IEhlYWRlci5jcmVhdGUgKClcblxuICBsZXQgdW5saW5rX2JlZm9yZSB0ID1cbiAgICBsZXQgbm9kZSA9IHQucHJldiBpblxuICAgIGlmIGlzX3NpbmdsZXRvbiBub2RlXG4gICAgdGhlbiBub2RlXG4gICAgZWxzZSAoXG4gICAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OigtMSk7XG4gICAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0IG5vZGU7XG4gICAgICBub2RlLmhlYWRlciA8LSBkdW1teV9oZWFkZXI7XG4gICAgICBub2RlKVxuICA7O1xuXG4gIGxldCB1bmxpbmtfYWZ0ZXIgdCA9XG4gICAgbGV0IG5vZGUgPSB0Lm5leHQgaW5cbiAgICBpZiBpc19zaW5nbGV0b24gbm9kZVxuICAgIHRoZW4gbm9kZVxuICAgIGVsc2UgKFxuICAgICAgSGVhZGVyLmluY3JfbGVuZ3RoIHQuaGVhZGVyIH5ieTooLTEpO1xuICAgICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0IG5vZGU7XG4gICAgICBub2RlLmhlYWRlciA8LSBkdW1teV9oZWFkZXI7XG4gICAgICBub2RlKVxuICA7O1xuXG4gIGxldCB1bmxpbmsgdCA9IGlnbm9yZSAodW5saW5rX2FmdGVyIHQucHJldiA6IF8gdClcbmVuZFxuXG50eXBlICdhIHQgPSAnYSBFbHQudCBvcHRpb24gcmVmXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBoZWFkIC0+XG4gICAgbGV0IGhlYWRlciA9IEVsdC5oZWFkZXIgaGVhZCBpblxuICAgIGxldCByZWMgbG9vcCBuIGVsdCA9XG4gICAgICBsZXQgbmV4dF9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgIGxldCBwcmV2X2VsdCA9IEVsdC5wcmV2IGVsdCBpblxuICAgICAgYXNzZXJ0IChFbHQuZXF1YWwgZWx0IChFbHQucHJldiBuZXh0X2VsdCkpO1xuICAgICAgYXNzZXJ0IChFbHQuZXF1YWwgZWx0IChFbHQubmV4dCBwcmV2X2VsdCkpO1xuICAgICAgYXNzZXJ0IChIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZWx0KSBoZWFkZXIpO1xuICAgICAgaW52YXJpYW50X2EgKEVsdC52YWx1ZSBlbHQpO1xuICAgICAgaWYgRWx0LmVxdWFsIG5leHRfZWx0IGhlYWQgdGhlbiBuIGVsc2UgbG9vcCAobiArIDEpIG5leHRfZWx0XG4gICAgaW5cbiAgICBsZXQgbGVuID0gbG9vcCAxIGhlYWQgaW5cbiAgICBhc3NlcnQgKGxlbiA9IEhlYWRlci5sZW5ndGggaGVhZGVyKVxuOztcblxubGV0IGNyZWF0ZSAodHlwZSBhKSAoKSA6IGEgdCA9IHJlZiBOb25lXG5sZXQgZXF1YWwgKHQgOiBfIHQpIHQnID0gcGh5c19lcXVhbCB0IHQnXG5cbmxldCBvZl9saXN0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBjcmVhdGUgKClcbiAgfCB4IDo6IHhzIC0+XG4gICAgbGV0IGZpcnN0ID0gRWx0LmNyZWF0ZSB4IGluXG4gICAgbGV0IF9sYXN0ID0gTGlzdC5mb2xkIHhzIH5pbml0OmZpcnN0IH5mOihmdW4gYSBiIC0+IEVsdC5pbnNlcnRfYWZ0ZXIgYSBiKSBpblxuICAgIHJlZiAoU29tZSBmaXJzdClcbjs7XG5cbmxldCBvZl9hcnJheSA9IGZ1bmN0aW9uXG4gIHwgW3x8XSAtPiBjcmVhdGUgKClcbiAgfCBhcnIgLT5cbiAgICBsZXQgZmlyc3QgPSBFbHQuY3JlYXRlIGFyci4oMCkgaW5cbiAgICBsZXQgcmVjIGxvb3AgYXJyIGVsdCBpID1cbiAgICAgIGlmIGkgPCBBcnJheS5sZW5ndGggYXJyIHRoZW4gbG9vcCBhcnIgKEVsdC5pbnNlcnRfYWZ0ZXIgZWx0IGFyci4oaSkpIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgYXJyIGZpcnN0IDE7XG4gICAgcmVmIChTb21lIGZpcnN0KVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gY3JlYXRlICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBuZXdfZmlyc3QgPSBFbHQuY3JlYXRlIChmIChFbHQudmFsdWUgZmlyc3QpKSBpblxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld19maXJzdCBmaXJzdCAoZnVuIGYgbmV3X2ZpcnN0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IEVsdC5pbnNlcnRfYWZ0ZXIgYWNjIChmIChFbHQudmFsdWUgZWx0KSkgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgKCogdW5yb2xsIGFuZCBza2lwIGZpcnN0IGVsdCAqKVxuICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBmaXJzdCBpblxuICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIG5ld19maXJzdCBmaXJzdCBuZXh0KTtcbiAgICByZWYgKFNvbWUgbmV3X2ZpcnN0KVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGNyZWF0ZSAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbmV3X2ZpcnN0ID0gRWx0LmNyZWF0ZSAoZiAwIChFbHQudmFsdWUgZmlyc3QpKSBpblxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld19maXJzdCBmaXJzdCAoZnVuIGYgbmV3X2ZpcnN0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBpIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gRWx0Lmluc2VydF9hZnRlciBhY2MgKGYgaSAoRWx0LnZhbHVlIGVsdCkpIGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgKCogdW5yb2xsIGFuZCBza2lwIGZpcnN0IGVsdCAqKVxuICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBmaXJzdCBpblxuICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIDEgbmV3X2ZpcnN0IGZpcnN0IG5leHQpO1xuICAgIHJlZiAoU29tZSBuZXdfZmlyc3QpXG47O1xuXG5sZXQgZm9sZF9lbHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBmIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIGluaXQgZmlyc3QgZmlyc3QpXG47O1xuXG5sZXQgZm9sZGlfZWx0IHQgfmluaXQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIGluaXQgZmlyc3QgKGZ1biBmIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGkgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBmIGkgYWNjIGVsdCBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgKGkgKyAxKSBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgIGxvb3AgZiAwIGluaXQgZmlyc3QgZmlyc3QpXG47O1xuXG5sZXQgZm9sZF9lbHRfMSB0IH5pbml0IH5mIGEgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80bCAoRWx0LmhlYWRlciBmaXJzdCkgZiBhIGluaXQgZmlyc3QgKGZ1biBmIGEgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgYSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIGEgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaV9lbHRfMSB0IH5pbml0IH5mIGEgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIGEgaW5pdCBmaXJzdCAoZnVuIGYgYSBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBpIGEgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBmIGkgYSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiAoaSArIDEpIGEgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgMCBhIGluaXQgZmlyc3QgZmlyc3QpXG47O1xuXG5sZXQgaXRlcl9lbHQgdCB+ZiA9IGZvbGRfZWx0XzEgdCB+aW5pdDooKSB+ZjooZnVuIGYgKCkgZWx0IC0+IGYgZWx0KSBmXG5sZXQgaXRlcmlfZWx0IHQgfmYgPSBmb2xkaV9lbHQgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgZWx0IC0+IGYgaSBlbHQpXG5cbm9wZW4gV2l0aF9yZXR1cm5cblxubGV0IGZpbmRfZWx0IHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBmb2xkX2VsdF8xIHQgZiB+aW5pdDooKSB+ZjooZnVuIGYgKCkgZWx0IC0+XG4gICAgICBpZiBmIChFbHQudmFsdWUgZWx0KSB0aGVuIHIucmV0dXJuIChTb21lIGVsdCkpO1xuICAgIE5vbmUpXG47O1xuXG5sZXQgZmluZGlfZWx0IHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBmb2xkaV9lbHRfMSB0IGYgfmluaXQ6KCkgfmY6KGZ1biBpIGYgKCkgZWx0IC0+XG4gICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpIHRoZW4gci5yZXR1cm4gKFNvbWUgKGksIGVsdCkpKTtcbiAgICBOb25lKVxuOztcblxuKCogdGhpcyBmdW5jdGlvbiBpcyBsYW1iZGEgbGlmdGVkIGZvciBwZXJmb3JtYW5jZSwgdG8gbWFrZSBkaXJlY3QgcmVjdXJzaXZlIGNhbGxzIGluc3RlYWRcbiAgIG9mIGNhbGxzIHRocm91Z2ggaXRzIGNsb3N1cmUuIEl0IGFsc28gYXZvaWRzIHRoZSBpbml0aWFsIGNsb3N1cmUgYWxsb2NhdGlvbi4gKilcbmxldCByZWMgaXRlcl9sb29wIGZpcnN0IGYgZWx0ID1cbiAgZiAoRWx0LnZhbHVlIGVsdCk7XG4gIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGl0ZXJfbG9vcCBmaXJzdCBmIG5leHRcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMmwgKEVsdC5oZWFkZXIgZmlyc3QpIGZpcnN0IGYgKGZ1biBmaXJzdCBmIC0+XG4gICAgICBpdGVyX2xvb3AgZmlyc3QgZiBmaXJzdClcbjs7XG5cbmxldCBsZW5ndGggdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIGZpcnN0IC0+IEhlYWRlci5sZW5ndGggKEVsdC5oZWFkZXIgZmlyc3QpXG47O1xuXG5sZXQgcmVjIGl0ZXJpX2xvb3AgZmlyc3QgZiBpIGVsdCA9XG4gIGYgaSAoRWx0LnZhbHVlIGVsdCk7XG4gIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGl0ZXJpX2xvb3AgZmlyc3QgZiAoaSArIDEpIG5leHRcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzJsIChFbHQuaGVhZGVyIGZpcnN0KSBmaXJzdCBmIChmdW4gZmlyc3QgZiAtPlxuICAgICAgaXRlcmlfbG9vcCBmaXJzdCBmIDAgZmlyc3QpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIGZvbGRpX2VsdF8xIHQgfmluaXQgZiB+ZjooZnVuIGkgZiBhY2MgZWx0IC0+IGYgaSBhY2MgKEVsdC52YWx1ZSBlbHQpKVxuOztcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgICAgbGV0IHIgPSBmb2xkX2VsdF8xIHQgfmluaXQgZiB+ZjooZnVuIGYgYWNjIGVsdCAtPiBmIGFjYyAoRWx0LnZhbHVlIGVsdCkpIGluXG4gICAgICByXG4gICAgOztcblxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZCA9IEMuZm9sZFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtZW0gPSBDLm1lbVxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgdW5jaGVja2VkX2l0ZXIgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGYgZWx0ID1cbiAgICAgIGYgKEVsdC52YWx1ZSBlbHQpO1xuICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICgqIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBiYWcgbWF5IGhhdmUgYmVlbiBjaGFuZ2VkIGJ5IFtmXSAqKVxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgZmlyc3QgLT4gaWYgbm90IChwaHlzX2VxdWFsIGZpcnN0IG5leHQpIHRoZW4gbG9vcCB0IGYgbmV4dFxuICAgIGluXG4gICAgbG9vcCB0IGYgZmlyc3Rcbjs7XG5cbmxldCBpc19lbXB0eSB0ID0gT3B0aW9uLmlzX25vbmUgIXRcblxuKCogbW9yZSBlZmZpY2llbnQgdGhhbiB3aGF0IENvbnRhaW5lci5NYWtlIHJldHVybnMgKilcblxubGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGVsdCA9XG4gICAgICAgIGxldCBwcmV2ID0gRWx0LnByZXYgZWx0IGluXG4gICAgICAgIGxldCBhY2MgPSBmIChFbHQudmFsdWUgcHJldikgYWNjIGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgcHJldiBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhY2MgcHJldlxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBpbml0IGZpcnN0KVxuOztcblxubGV0IGZvbGRfcmlnaHRfZWx0IHQgfmluaXQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIGluaXQgZmlyc3QgKGZ1biBmIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBlbHQgPVxuICAgICAgICBsZXQgcHJldiA9IEVsdC5wcmV2IGVsdCBpblxuICAgICAgICBsZXQgYWNjID0gZiBwcmV2IGFjYyBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIHByZXYgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYWNjIHByZXZcbiAgICAgIGluXG4gICAgICBsb29wIGYgaW5pdCBmaXJzdClcbjs7XG5cbmxldCB0b19saXN0IHQgPSBmb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biB4IHRsIC0+IHggOjogdGwpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzID0gb2ZfbGlzdCAoTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHMpXG5cbmxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQmFzZS5MaXN0LnRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyKVxuOztcblxubGV0IGNvcHkgdCA9IG9mX2xpc3QgKHRvX2xpc3QgdClcbmxldCBjbGVhciB0ID0gdCA6PSBOb25lXG5cbmxldCBjb21wYXJlIGNvbXBhcmVfZWx0IHQxIHQyID1cbiAgbWF0Y2ggIXQxLCAhdDIgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gMFxuICB8IE5vbmUsIF8gLT4gLTFcbiAgfCBfLCBOb25lIC0+IDFcbiAgfCBTb21lIGYxLCBTb21lIGYyIC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZjEpIGNvbXBhcmVfZWx0IGYxIGYyIChmdW4gY29tcGFyZV9lbHQgZjEgZjIgLT5cbiAgICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGYyKSBjb21wYXJlX2VsdCBmMSBmMiAoZnVuIGNvbXBhcmVfZWx0IGYxIGYyIC0+XG4gICAgICAgIGxldCByZWMgbG9vcCBjb21wYXJlX2VsdCBlbHQxIGYxIGVsdDIgZjIgPVxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IChFbHQudmFsdWUgZWx0MSkgKEVsdC52YWx1ZSBlbHQyKSBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0IDw+IDBcbiAgICAgICAgICB0aGVuIGNvbXBhcmVfcmVzdWx0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbmV4dDEgPSBFbHQubmV4dCBlbHQxIGluXG4gICAgICAgICAgICBsZXQgbmV4dDIgPSBFbHQubmV4dCBlbHQyIGluXG4gICAgICAgICAgICBtYXRjaCBwaHlzX2VxdWFsIG5leHQxIGYxLCBwaHlzX2VxdWFsIG5leHQyIGYyIHdpdGhcbiAgICAgICAgICAgIHwgdHJ1ZSwgdHJ1ZSAtPiAwXG4gICAgICAgICAgICB8IHRydWUsIGZhbHNlIC0+IC0xXG4gICAgICAgICAgICB8IGZhbHNlLCB0cnVlIC0+IDFcbiAgICAgICAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IGxvb3AgY29tcGFyZV9lbHQgbmV4dDEgZjEgbmV4dDIgZjIpXG4gICAgICAgIGluXG4gICAgICAgIGxvb3AgY29tcGFyZV9lbHQgZjEgZjEgZjIgZjIpKVxuOztcblxuZXhjZXB0aW9uIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3RcblxubGV0IHRyYW5zZmVyIH5zcmMgfmRzdCA9XG4gIGlmIHBoeXNfZXF1YWwgc3JjIGRzdCB0aGVuIHJhaXNlIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3Q7XG4gIG1hdGNoICFzcmMgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHNyY19oZWFkIC0+XG4gICAgKG1hdGNoICFkc3Qgd2l0aFxuICAgICB8IE5vbmUgLT5cbiAgICAgICBkc3QgOj0gU29tZSBzcmNfaGVhZDtcbiAgICAgICBjbGVhciBzcmNcbiAgICAgfCBTb21lIGRzdF9oZWFkIC0+XG4gICAgICAgKG1hdGNoIEhlYWRlci5tZXJnZSAoRWx0LmhlYWRlciBzcmNfaGVhZCkgKEVsdC5oZWFkZXIgZHN0X2hlYWQpIHdpdGhcbiAgICAgICAgfCBgU2FtZV9hbHJlYWR5IC0+IHJhaXNlIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3RcbiAgICAgICAgfCBgTWVyZ2VkIC0+XG4gICAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgZHN0X2hlYWQgc3JjX2hlYWQ7XG4gICAgICAgICAgY2xlYXIgc3JjKSlcbjs7XG5cbmxldCBtYXBfaW5wbGFjZSB0IH5mID0gaXRlcl9lbHQgdCB+ZjooZnVuIGVsdCAtPiBFbHQuc2V0IGVsdCAoZiAoRWx0LnZhbHVlIGVsdCkpKVxubGV0IG1hcGlfaW5wbGFjZSB0IH5mID0gaXRlcmlfZWx0IHQgfmY6KGZ1biBpIGVsdCAtPiBFbHQuc2V0IGVsdCAoZiBpIChFbHQudmFsdWUgZWx0KSkpXG5cbmxldCByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZSA9XG4gIExpc3QuaXRlciB0b19yZW1vdmUgfmY6KGZ1biBlbHQgLT5cbiAgICAobWF0Y2ggIXQgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGhlYWQgLT5cbiAgICAgICBpZiBFbHQuZXF1YWwgaGVhZCBlbHRcbiAgICAgICB0aGVuIChcbiAgICAgICAgIGxldCBuZXh0X2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgdCA6PSBpZiBFbHQuZXF1YWwgaGVhZCBuZXh0X2VsdCB0aGVuIE5vbmUgZWxzZSBTb21lIG5leHRfZWx0KSk7XG4gICAgRWx0LnVubGluayBlbHQpXG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGVsdHMgZWx0IC0+XG4gICAgICAgICBpZiBmIChFbHQudmFsdWUgZWx0KSB0aGVuIGVsdHMgZWxzZSBlbHQgOjogZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRpX2VsdCB0IH5pbml0OltdIH5mOihmdW4gaSBlbHRzIGVsdCAtPlxuICAgICAgICAgaWYgZiBpIChFbHQudmFsdWUgZWx0KSB0aGVuIGVsdHMgZWxzZSBlbHQgOjogZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBlbHRzIGVsdCAtPlxuICAgICAgICAgbWF0Y2ggZiAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGVsdCA6OiBlbHRzXG4gICAgICAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgICAgICAgRWx0LnNldCBlbHQgdmFsdWU7XG4gICAgICAgICAgIGVsdHMpKVxuICBpblxuICByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZVxuOztcblxubGV0IGZpbHRlcl9tYXBpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZGlfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBpIGVsdHMgZWx0IC0+XG4gICAgICAgICBtYXRjaCBmIGkgKEVsdC52YWx1ZSBlbHQpIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBlbHQgOjogZWx0c1xuICAgICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgICAgIEVsdC5zZXQgZWx0IHZhbHVlO1xuICAgICAgICAgICBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmV4Y2VwdGlvbiBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcblxubGV0IGZpcnN0X2VsdCB0ID0gIXRcbmxldCBsYXN0X2VsdCB0ID0gT3B0aW9uLm1hcCB+ZjpFbHQucHJldiAhdFxubGV0IGZpcnN0IHQgPSBPcHRpb24ubWFwIH5mOkVsdC52YWx1ZSAoZmlyc3RfZWx0IHQpXG5sZXQgbGFzdCB0ID0gT3B0aW9uLm1hcCB+ZjpFbHQudmFsdWUgKGxhc3RfZWx0IHQpXG5sZXQgZmlyc3RfZXhuICh0IDogJ2EgdCkgPSBPcHRpb24udmFsdWVfZXhuICF0IHw+IEVsdC52YWx1ZVxubGV0IGxhc3RfZXhuICh0IDogJ2EgdCkgPSBPcHRpb24udmFsdWVfZXhuICF0IHw+IEVsdC5wcmV2IHw+IEVsdC52YWx1ZVxuXG5sZXQgaXNfZmlyc3QgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQuZXF1YWwgZWx0IGZpcnN0XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpc19sYXN0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGxhc3QgPSBFbHQucHJldiBmaXJzdCBpblxuICAgICAgRWx0LmVxdWFsIGVsdCBsYXN0KVxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbWVtX2VsdCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBmaXJzdCAtPiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbjs7XG5cbmxldCBwcmV2IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gU29tZSAoRWx0LnByZXYgZWx0KVxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbmV4dCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbGFzdCA9IEVsdC5wcmV2IGZpcnN0IGluXG4gICAgaWYgRWx0LmVxdWFsIGVsdCBsYXN0XG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIFNvbWUgKEVsdC5uZXh0IGVsdClcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGluc2VydF9hZnRlciB0IGVsdCB2ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gRWx0Lmluc2VydF9hZnRlciBlbHQgdlxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaW5zZXJ0X2JlZm9yZSB0IGVsdCB2ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICB0aGVuIChcbiAgICAgIGxldCBuZXdfZWx0ID0gRWx0Lmluc2VydF9iZWZvcmUgZmlyc3QgdiBpblxuICAgICAgdCA6PSBTb21lIG5ld19lbHQ7XG4gICAgICBuZXdfZWx0KVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQuaW5zZXJ0X2JlZm9yZSBlbHQgdlxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaW5zZXJ0X2VtcHR5IHQgdiA9XG4gIGxldCBuZXdfZWx0ID0gRWx0LmNyZWF0ZSB2IGluXG4gIHQgOj0gU29tZSBuZXdfZWx0O1xuICBuZXdfZWx0XG47O1xuXG5sZXQgaW5zZXJ0X2xhc3QgdCB2ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5zZXJ0X2VtcHR5IHQgdlxuICB8IFNvbWUgZmlyc3QgLT4gRWx0Lmluc2VydF9iZWZvcmUgZmlyc3QgdlxuOztcblxubGV0IGluc2VydF9maXJzdCB0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbnNlcnRfZW1wdHkgdCB2XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBuZXdfZWx0ID0gRWx0Lmluc2VydF9iZWZvcmUgZmlyc3QgdiBpblxuICAgIHQgOj0gU29tZSBuZXdfZWx0O1xuICAgIG5ld19lbHRcbjs7XG5cbmxldCByZW1vdmVfbGFzdCB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbGFzdCA9IEVsdC51bmxpbmtfYmVmb3JlIGZpcnN0IGluXG4gICAgaWYgRWx0LmVxdWFsIGZpcnN0IGxhc3QgdGhlbiB0IDo9IE5vbmU7XG4gICAgU29tZSAoRWx0LnZhbHVlIGxhc3QpXG47O1xuXG5sZXQgcmVtb3ZlX2ZpcnN0IHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBzZWNvbmQgPSBFbHQubmV4dCBmaXJzdCBpblxuICAgIEVsdC51bmxpbmsgZmlyc3Q7XG4gICAgdCA6PSBpZiBFbHQuZXF1YWwgZmlyc3Qgc2Vjb25kIHRoZW4gTm9uZSBlbHNlIFNvbWUgc2Vjb25kO1xuICAgIFNvbWUgKEVsdC52YWx1ZSBmaXJzdClcbjs7XG5cbmxldCByZW1vdmUgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gaWdub3JlIChyZW1vdmVfZmlyc3QgdCA6IF8gb3B0aW9uKVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQudW5saW5rIGVsdFxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgbmV3X3QgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld190IGZpcnN0IChmdW4gZiBuZXdfdCBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICBpZiBmIChFbHQudmFsdWUgZWx0KVxuICAgICAgICAgdGhlbiBpbnNlcnRfbGFzdCBuZXdfdCAoRWx0LnZhbHVlIGVsdCkgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIG5ld190IGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSBuZXdfdCBmaXJzdCBlbHQgPVxuICAgICAgICAgaWYgZiBpIChFbHQudmFsdWUgZWx0KVxuICAgICAgICAgdGhlbiBpbnNlcnRfbGFzdCBuZXdfdCAoRWx0LnZhbHVlIGVsdCkgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIDAgbmV3X3QgZmlyc3QgZmlyc3QpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgbmV3X3QgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld190IGZpcnN0IChmdW4gZiBuZXdfdCBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggZiAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPiBpbnNlcnRfbGFzdCBuZXdfdCB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIG5ld190IGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgbmV3X3QgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld190IGZpcnN0IChmdW4gZiBuZXdfdCBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIGkgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIChtYXRjaCBmIGkgKEVsdC52YWx1ZSBlbHQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgbmV3X3QgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCkpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIG5ld190IGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgaW5zZXJ0X2xhc3QgKGlmIGYgKEVsdC52YWx1ZSBlbHQpIHRoZW4gdDEgZWxzZSB0MikgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgdDEgdDIgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIGkgdDEgdDIgZmlyc3QgZWx0ID1cbiAgICAgICAgIGluc2VydF9sYXN0IChpZiBmIGkgKEVsdC52YWx1ZSBlbHQpIHRoZW4gdDEgZWxzZSB0MikgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCB0MSB0MiBmaXJzdCBmaXJzdCkpO1xuICB0MSwgdDJcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIChmIChFbHQudmFsdWUgZWx0KSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICAgIHwgRmlyc3QgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgdDEgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdClcbiAgICAgICAgICB8IFNlY29uZCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MiB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiB0MSB0MiBmaXJzdCBmaXJzdCkpO1xuICB0MSwgdDJcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgbGV0IHQxID0gY3JlYXRlICgpIGluXG4gIGxldCB0MiA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgdDEgdDIgZmlyc3QgKGZ1biBmIHQxIHQyIGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIChmIGkgKEVsdC52YWx1ZSBlbHQpIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MSB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KVxuICAgICAgICAgIHwgU2Vjb25kIHZhbHVlIC0+IGluc2VydF9sYXN0IHQyIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCB0MSB0MiBmaXJzdCBmaXJzdCkpO1xuICB0MSwgdDJcbjs7XG5cbmV4Y2VwdGlvbiBJbnZhbGlkX21vdmVfX2VsdF9lcXVhbHNfYW5jaG9yXG5cbmxldCBtb3ZlX2JlZm9yZSB0IGVsdCB+YW5jaG9yID1cbiAgaWYgRWx0LmVxdWFsIGFuY2hvciBlbHQgdGhlbiByYWlzZSBJbnZhbGlkX21vdmVfX2VsdF9lcXVhbHNfYW5jaG9yO1xuICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgYW5jaG9yKSAoRWx0LmhlYWRlciBlbHQpXG4gIHRoZW4gKFxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gICAgfCBTb21lIGZpcnN0IC0+XG4gICAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiB1bmxpbmsgW2VsdF0gKilcbiAgICAgICAgbGV0IGFmdGVyX2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSBlbHQgYWZ0ZXJfZWx0O1xuICAgICAgICBsZXQgZmlyc3QgPVxuICAgICAgICAgIGlmIEVsdC5lcXVhbCBmaXJzdCBlbHRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIHQgOj0gU29tZSBhZnRlcl9lbHQ7XG4gICAgICAgICAgICBhZnRlcl9lbHQpXG4gICAgICAgICAgZWxzZSBmaXJzdFxuICAgICAgICBpblxuICAgICAgICAoKiBzcGxpY2UgW2VsdF0gaW4gYmVmb3JlIFthbmNob3JdICopXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGFuY2hvciBlbHQ7XG4gICAgICAgIGlmIEVsdC5lcXVhbCBmaXJzdCBhbmNob3IgdGhlbiB0IDo9IFNvbWUgZWx0KVxuICAgICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3QpXG4gIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbW92ZV90b19mcm9udCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT4gaWYgbm90IChFbHQuZXF1YWwgZWx0IGZpcnN0KSB0aGVuIG1vdmVfYmVmb3JlIHQgZWx0IH5hbmNob3I6Zmlyc3Rcbjs7XG5cbmxldCBtb3ZlX2FmdGVyIHQgZWx0IH5hbmNob3IgPVxuICBpZiBFbHQuZXF1YWwgYW5jaG9yIGVsdCB0aGVuIHJhaXNlIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3I7XG4gIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBhbmNob3IpIChFbHQuaGVhZGVyIGVsdClcbiAgdGhlbiAoXG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIHVubGluayBbZWx0XSAqKVxuICAgICAgICBsZXQgYWZ0ZXJfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGVsdCBhZnRlcl9lbHQ7XG4gICAgICAgIGlmIEVsdC5lcXVhbCBmaXJzdCBlbHQgdGhlbiB0IDo9IFNvbWUgYWZ0ZXJfZWx0O1xuICAgICAgICAoKiBzcGxpY2UgW2VsdF0gaW4gYWZ0ZXIgW2FuY2hvcl0gKilcbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9hZnRlciBhbmNob3IgZWx0KVxuICAgICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3QpXG4gIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbW92ZV90b19iYWNrIHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnByZXYgZmlyc3QgaW5cbiAgICBpZiBub3QgKEVsdC5lcXVhbCBlbHQgbGFzdCkgdGhlbiBtb3ZlX2FmdGVyIHQgZWx0IH5hbmNob3I6bGFzdFxuOztcblxubGV0IHRvX3NlcXVlbmNlIHQgPSB0b19saXN0IHQgfD4gU2VxdWVuY2Uub2ZfbGlzdFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwLnRfc2V4cF9ncmFtbWFyXG4gICAgbGV0IHRfb2Zfc2V4cCA9IFNleHBsaWIuU2V4cC50X29mX3NleHBcbiAgICBsZXQgc2V4cF9vZl90ID0gU2V4cGxpYi5TZXhwLnNleHBfb2ZfdFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG5pbmNsdWRlIChcbiAgQmFzZS5TZXhwIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuU2V4cFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSAoXG4gIFNleHBsaWIuU2V4cCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTZXhwbGliLlNleHBcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIHR5cGUgc2V4cCA9IEJhc2UuU2V4cC50ID1cbiAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgfCBMaXN0IG9mIHQgbGlzdFxuZW5kXG5cbm1vZHVsZSBTZXhwX21heWJlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIHQgKiBFcnJvci50KSBSZXN1bHQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2hdXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBSZXN1bHQuT2sgYSAtPiBzZXhwX29mX2EgYVxuICAgIHwgUmVzdWx0LkVycm9yIChzZXhwLCBlcnIpIC0+XG4gICAgICBMaXN0IFsgQXRvbSBcInNleHBfcGFyc2VfZXJyb3JcIjsgc2V4cDsgRXJyb3Iuc2V4cF9vZl90IGVyciBdXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBMaXN0IFsgQXRvbSBcInNleHBfcGFyc2VfZXJyb3JcIjsgc2V4cDsgXyBdIHwgc2V4cCAtPlxuICAgICAgKHRyeSBSZXN1bHQuT2sgKGFfb2Zfc2V4cCBzZXhwKSB3aXRoXG4gICAgICAgfCBleG4gLT4gUmVzdWx0LkVycm9yIChzZXhwLCBFcnJvci5vZl9leG4gZXhuKSlcbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgKGdyYW1tYXIgOiBfIFNleHBsaWIuU2V4cF9ncmFtbWFyLnQpIDogXyB0IFNleHBsaWIuU2V4cF9ncmFtbWFyLnQgPVxuICAgIHsgdW50eXBlZCA9IFVuaW9uIFsgZ3JhbW1hci51bnR5cGVkOyBCYXNlLlNleHAudF9zZXhwX2dyYW1tYXIudW50eXBlZCBdIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgV2l0aF90ZXh0ID0gc3RydWN0XG4gIG9wZW4gUmVzdWx0LkV4cG9ydFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB2YWx1ZSA6ICdhXG4gICAgOyB0ZXh0IDogc3RyaW5nXG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgbGV0IHNleHBfb2ZfdCBfIHQgPSBBdG9tIHQudGV4dFxuXG4gIGxldCBvZl90ZXh0IHZhbHVlX29mX3NleHAgPyhmaWxlbmFtZSA9IFwiXCIpIHRleHQgPVxuICAgIG1hdGNoIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gb2Zfc3RyaW5nX2NvbnYgdGV4dCB2YWx1ZV9vZl9zZXhwKSB3aXRoXG4gICAgfCBPayAoYFJlc3VsdCB2YWx1ZSkgLT4gT2sgeyB2YWx1ZTsgdGV4dCB9XG4gICAgfCBFcnJvciBfIGFzIGVyciAtPiBlcnJcbiAgICB8IE9rIChgRXJyb3IgKGV4biwgYW5ub3RhdGVkKSkgLT5cbiAgICAgIEVycm9yIChFcnJvci5vZl9leG4gKEFubm90YXRlZC5nZXRfY29udl9leG4gYW5ub3RhdGVkIH5maWxlOmZpbGVuYW1lIH5leGM6ZXhuKSlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IExpc3QgXyAtPlxuICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICBcIldpdGhfdGV4dC50IHNob3VsZCBiZSBzdG9yZWQgYXMgYW4gYXRvbSwgYnV0IGluc3RlYWQgYSBsaXN0IHdhcyBmb3VuZC5cIlxuICAgICAgICBzZXhwXG4gICAgfCBBdG9tIHRleHQgLT4gb2ZfdGV4dCBhX29mX3NleHAgdGV4dCB8PiBPcl9lcnJvci5va19leG5cbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgXyA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBCYXNlLlN0cmluZy50X3NleHBfZ3JhbW1hclxuICBsZXQgdGV4dCB0ID0gdC50ZXh0XG4gIGxldCB2YWx1ZSB0ID0gdC52YWx1ZVxuXG4gIGxldCBvZl92YWx1ZSBzZXhwX29mX3ZhbHVlIHZhbHVlID1cbiAgICBsZXQgdGV4dCA9IHNleHBfb2ZfdmFsdWUgdmFsdWUgfD4gdG9fc3RyaW5nX2h1bSBpblxuICAgIHsgdmFsdWU7IHRleHQgfVxuICA7O1xuZW5kXG5cbnR5cGUgJ2Egbm9fcmFpc2UgPSAnYSBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbmxldCBzZXhwX29mX25vX3JhaXNlIHNleHBfb2ZfYSBhID1cbiAgdHJ5IHNleHBfb2ZfYSBhIHdpdGhcbiAgfCBleG4gLT5cbiAgICAodHJ5IExpc3QgWyBBdG9tIFwiZmFpbHVyZSBidWlsZGluZyBzZXhwXCI7IHNleHBfb2ZfZXhuIGV4biBdIHdpdGhcbiAgICAgfCBfIC0+IEF0b20gXCJjb3VsZCBub3QgYnVpbGQgc2V4cCBmb3IgZXhuIHJhaXNlZCB3aGVuIGJ1aWxkaW5nIHNleHAgZm9yIHZhbHVlXCIpXG47O1xuXG5pbmNsdWRlIENvbXBhcmFibGUuRXh0ZW5kIChCYXNlLlNleHApIChCYXNlLlNleHApXG5cbmxldCBvZl9zZXhwX2FsbG93X2V4dHJhX2ZpZWxkc19yZWN1cnNpdmVseSBvZl9zZXhwIHNleHAgPVxuICBsZXQgciA9IFNleHBsaWIuQ29udi5yZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzIGluXG4gIGxldCBwcmV2ID0gIXIgaW5cbiAgRXhuLnByb3RlY3RcbiAgICB+ZmluYWxseTooZnVuICgpIC0+IHIgOj0gcHJldilcbiAgICB+ZjooZnVuICgpIC0+XG4gICAgICByIDo9IGZhbHNlO1xuICAgICAgb2Zfc2V4cCBzZXhwKVxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zZXhwXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zZXhwXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5zZXhwXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gSGFzaF9xdWV1ZV9pbnRmXG5cbm1vZHVsZSB0eXBlIEtleSA9IEtleVxubW9kdWxlIHR5cGUgU19iYWNrZW5kID0gU19iYWNrZW5kXG5cbm1vZHVsZSBNYWtlX2JhY2tlbmQgKFRhYmxlIDogSGFzaHRibF9pbnRmLkhhc2h0YmwpIDogU19iYWNrZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIEJhY2tlbmQgPVxuICAgIFMxXG4gICAgd2l0aCB0eXBlICdrZXkgY3JlYXRlX2FyZyA6PSAna2V5IEhhc2h0YmwuSGFzaGFibGUudFxuICAgIHdpdGggdHlwZSAna2V5IGNyZWF0ZV9rZXkgOj0gJ2tleVxuXG4gIG1vZHVsZSBCYWNrZW5kIDogQmFja2VuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXlfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgKCdrZXksICd2YWx1ZSkgdCA9XG4gICAgICAgICAgeyBrZXkgOiAna2V5XG4gICAgICAgICAgOyBtdXRhYmxlIHZhbHVlIDogJ3ZhbHVlXG4gICAgICAgICAgfVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQga2V5IHQgPSB0LmtleVxuICAgICAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHsga2V5OyB2YWx1ZSB9ID1cbiAgICAgICAgWyVzZXhwX29mOiBrZXkgKiBkYXRhXSAoa2V5LCB2YWx1ZSlcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBvcGVuIEtleV92YWx1ZS5UXG4gICAgbW9kdWxlIEVsdCA9IERvdWJseV9saW5rZWQuRWx0XG5cbiAgICB0eXBlICgna2V5LCAnZGF0YSkgdCA9XG4gICAgICB7IG11dGFibGUgbnVtX3JlYWRlcnMgOiBpbnRcbiAgICAgIDsgcXVldWUgOiAoJ2tleSwgJ2RhdGEpIEtleV92YWx1ZS50IERvdWJseV9saW5rZWQudFxuICAgICAgOyB0YWJsZSA6ICgna2V5LCAoJ2tleSwgJ2RhdGEpIEtleV92YWx1ZS50IEVsdC50KSBUYWJsZS50XG4gICAgICB9XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSB0ID1cbiAgICAgIFslc2V4cF9vZjogKGtleSwgZGF0YSkgS2V5X3ZhbHVlLnQgRG91Ymx5X2xpbmtlZC50XSB0LnF1ZXVlXG4gICAgOztcblxuICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICBhc3NlcnQgKERvdWJseV9saW5rZWQubGVuZ3RoIHQucXVldWUgPSBUYWJsZS5sZW5ndGggdC50YWJsZSk7XG4gICAgICAoKiBMb29rIGF0IGVhY2ggZWxlbWVudCBpbiB0aGUgcXVldWUsIGNoZWNraW5nOlxuICAgICAgICogICAtIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIHF1ZXVlIGlzIGluIHRoZSBoYXNoIHRhYmxlXG4gICAgICAgKiAgIC0gdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBrZXlzXG4gICAgICAqKVxuICAgICAgbGV0IGtleXMgPSBUYWJsZS5jcmVhdGUgfnNpemU6KFRhYmxlLmxlbmd0aCB0LnRhYmxlKSAoVGFibGUuaGFzaGFibGVfcyB0LnRhYmxlKSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5pdGVyIHQucXVldWUgfmY6KGZ1biBrdiAtPlxuICAgICAgICBsZXQga2V5ID0ga3Yua2V5IGluXG4gICAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgYXNzZXJ0IChub3QgKFRhYmxlLm1lbSBrZXlzIGtleSkpO1xuICAgICAgICAgIFRhYmxlLnNldCBrZXlzIH5rZXkgfmRhdGE6KCkpXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgPyhncm93dGhfYWxsb3dlZCA9IHRydWUpID8oc2l6ZSA9IDE2KSBoYXNoYWJsZSA9XG4gICAgICB7IG51bV9yZWFkZXJzID0gMFxuICAgICAgOyBxdWV1ZSA9IERvdWJseV9saW5rZWQuY3JlYXRlICgpXG4gICAgICA7IHRhYmxlID0gVGFibGUuY3JlYXRlIH5ncm93dGhfYWxsb3dlZCB+c2l6ZSAoVGFibGUuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgcmVhZCB0IGYgPVxuICAgICAgdC5udW1fcmVhZGVycyA8LSB0Lm51bV9yZWFkZXJzICsgMTtcbiAgICAgIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gdC5udW1fcmVhZGVycyA8LSB0Lm51bV9yZWFkZXJzIC0gMSkgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgZW5zdXJlX2Nhbl9tb2RpZnkgdCA9XG4gICAgICBpZiB0Lm51bV9yZWFkZXJzID4gMFxuICAgICAgdGhlbiBmYWlsd2l0aCBcIkl0IGlzIGFuIGVycm9yIHRvIG1vZGlmeSBhIEhhc2hfcXVldWUudCB3aGlsZSBpdGVyYXRpbmcgb3ZlciBpdC5cIlxuICAgIDs7XG5cbiAgICBsZXQgY2xlYXIgdCA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgRG91Ymx5X2xpbmtlZC5jbGVhciB0LnF1ZXVlO1xuICAgICAgVGFibGUuY2xlYXIgdC50YWJsZVxuICAgIDs7XG5cbiAgICBsZXQgbGVuZ3RoIHQgPSBUYWJsZS5sZW5ndGggdC50YWJsZVxuICAgIGxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbiAgICBsZXQgbG9va3VwIHQgayA9XG4gICAgICBtYXRjaCBUYWJsZS5maW5kIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGVsdCAtPiBTb21lIChFbHQudmFsdWUgZWx0KS52YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2V4biB0IGsgPSAoRWx0LnZhbHVlIChUYWJsZS5maW5kX2V4biB0LnRhYmxlIGspKS52YWx1ZVxuICAgIGxldCBtZW0gdCBrID0gVGFibGUubWVtIHQudGFibGUga1xuXG4gICAgKCogTm90ZSB0aGF0IHRoaXMgaXMgdGhlIHRhaWwtcmVjdXJzaXZlIENvcmVfbGlzdC5tYXAgKilcbiAgICBsZXQgdG9fbGlzdCB0ID0gTGlzdC5tYXAgKERvdWJseV9saW5rZWQudG9fbGlzdCB0LnF1ZXVlKSB+ZjpLZXlfdmFsdWUudmFsdWVcbiAgICBsZXQgdG9fYXJyYXkgdCA9IEFycmF5Lm1hcCAoRG91Ymx5X2xpbmtlZC50b19hcnJheSB0LnF1ZXVlKSB+ZjpLZXlfdmFsdWUudmFsdWVcblxuICAgIGxldCBmb3JfYWxsIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5mb3JfYWxsIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPiBEb3VibHlfbGlua2VkLmV4aXN0cyB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkgW0Bub250YWlsXSkgXG4gICAgICBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBmaW5kX21hcCB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIERvdWJseV9saW5rZWQuZmluZF9tYXAgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYga3YudmFsdWUpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgKERvdWJseV9saW5rZWQuZmluZCB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkpXG4gICAgICAgICAgfmY6S2V5X3ZhbHVlLnZhbHVlKSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX3VuY2hlY2tlZCB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIGxldCBjb250ZW50cyA9IHsgS2V5X3ZhbHVlLmtleTsgdmFsdWUgfSBpblxuICAgICAgbGV0IGVsdCA9XG4gICAgICAgIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgICB8IGBiYWNrIC0+IERvdWJseV9saW5rZWQuaW5zZXJ0X2xhc3QgdC5xdWV1ZSBjb250ZW50c1xuICAgICAgICB8IGBmcm9udCAtPiBEb3VibHlfbGlua2VkLmluc2VydF9maXJzdCB0LnF1ZXVlIGNvbnRlbnRzXG4gICAgICBpblxuICAgICAgVGFibGUuc2V0IHQudGFibGUgfmtleSB+ZGF0YTplbHRcbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWUgdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZSA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgaWYgVGFibGUubWVtIHQudGFibGUga2V5XG4gICAgICB0aGVuIGBLZXlfYWxyZWFkeV9wcmVzZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgZW5xdWV1ZV91bmNoZWNrZWQgdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZTtcbiAgICAgICAgYE9rKVxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZV9iYWNrIHQgPSBlbnF1ZXVlIHQgYGJhY2tcbiAgICBsZXQgZW5xdWV1ZV9mcm9udCB0ID0gZW5xdWV1ZSB0IGBmcm9udFxuXG4gICAgbGV0IHJhaXNlX2VucXVldWVfZHVwbGljYXRlX2tleSB0IGtleSA9XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiSGFzaF9xdWV1ZS5lbnF1ZXVlX2V4bjogZHVwbGljYXRlIGtleVwiXG4gICAgICAgICAgICB+XzooVGFibGUuc2V4cF9vZl9rZXkgdC50YWJsZSBrZXkgOiBTZXhwLnQpXVxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZV9leG4gdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZSA9XG4gICAgICBtYXRjaCBlbnF1ZXVlIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgd2l0aFxuICAgICAgfCBgS2V5X2FscmVhZHlfcHJlc2VudCAtPiByYWlzZV9lbnF1ZXVlX2R1cGxpY2F0ZV9rZXkgdCBrZXlcbiAgICAgIHwgYE9rIC0+ICgpXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX2JhY2tfZXhuIHQgPSBlbnF1ZXVlX2V4biB0IGBiYWNrXG4gICAgbGV0IGVucXVldWVfZnJvbnRfZXhuIHQgPSBlbnF1ZXVlX2V4biB0IGBmcm9udFxuXG4gICAgKCogUGVyZm9ybWFuY2UgaGFjazogd2UgaW1wbGVtZW50IHRoaXMgdmVyc2lvbiBzZXBhcmF0ZWx5IHRvIGF2b2lkIGFsbG9jYXRpb24gZnJvbSB0aGVcbiAgICAgICBvcHRpb24uICopXG4gICAgbGV0IGxvb2t1cF9hbmRfbW92ZV90b19iYWNrX2V4biB0IGtleSA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0IGVsdCA9IFRhYmxlLmZpbmRfZXhuIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fYmFjayB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfbW92ZV90b19iYWNrIHQga2V5ID1cbiAgICAgIGxldCBvcGVuIE9wdGlvbi5MZXRfc3ludGF4IGluXG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0JW1hcCBlbHQgPSBUYWJsZS5maW5kIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fYmFjayB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfbW92ZV90b19mcm9udF9leG4gdCBrZXkgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCBlbHQgPSBUYWJsZS5maW5kX2V4biB0LnRhYmxlIGtleSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5tb3ZlX3RvX2Zyb250IHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250IHQga2V5ID1cbiAgICAgIGxldCBvcGVuIE9wdGlvbi5MZXRfc3ludGF4IGluXG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0JW1hcCBlbHQgPSBUYWJsZS5maW5kIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fZnJvbnQgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0IG1heWJlX2t2ID1cbiAgICAgICAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gICAgICAgIHwgYGJhY2sgLT4gRG91Ymx5X2xpbmtlZC5yZW1vdmVfbGFzdCB0LnF1ZXVlXG4gICAgICAgIHwgYGZyb250IC0+IERvdWJseV9saW5rZWQucmVtb3ZlX2ZpcnN0IHQucXVldWVcbiAgICAgIGluXG4gICAgICBtYXRjaCBtYXliZV9rdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGt2IC0+XG4gICAgICAgIFRhYmxlLnJlbW92ZSB0LnRhYmxlIGt2LmtleTtcbiAgICAgICAgU29tZSAoa3Yua2V5LCBrdi52YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IHJhaXNlX2RlcXVldWVfd2l0aF9rZXlfZW1wdHkgKCkgPVxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJIYXNoX3F1ZXVlLmRlcXVldWVfd2l0aF9rZXk6IGVtcHR5IHF1ZXVlXCJdXG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX3dpdGhfa2V5X2V4biB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgbWF0Y2ggZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlX2RlcXVldWVfd2l0aF9rZXlfZW1wdHkgKClcbiAgICAgIHwgU29tZSAoaywgdikgLT4gaywgdlxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV9iYWNrX3dpdGhfa2V5IHQgPSBkZXF1ZXVlX3dpdGhfa2V5IHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9iYWNrX3dpdGhfa2V5X2V4biB0ID0gZGVxdWV1ZV93aXRoX2tleV9leG4gdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2Zyb250X3dpdGhfa2V5IHQgPSBkZXF1ZXVlX3dpdGhfa2V5IHQgYGZyb250XG4gICAgbGV0IGRlcXVldWVfZnJvbnRfd2l0aF9rZXlfZXhuIHQgPSBkZXF1ZXVlX3dpdGhfa2V5X2V4biB0IGBmcm9udFxuXG4gICAgbGV0IGRlcXVldWUgdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIG1hdGNoIGRlcXVldWVfd2l0aF9rZXkgdCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgKF8sIHYpIC0+IFNvbWUgdlxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV9iYWNrIHQgPSBkZXF1ZXVlIHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9mcm9udCB0ID0gZGVxdWV1ZSB0IGBmcm9udFxuXG4gICAgbGV0IGxhc3Rfd2l0aF9rZXkgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmxhc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHsga2V5OyB2YWx1ZSB9IC0+IFNvbWUgKGtleSwgdmFsdWUpXG4gICAgOztcblxuICAgIGxldCBsYXN0IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5sYXN0IHQucXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBrdiAtPiBTb21lIGt2LnZhbHVlXG4gICAgOztcblxuICAgIGxldCBmaXJzdF93aXRoX2tleSB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQuZmlyc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHsga2V5OyB2YWx1ZSB9IC0+IFNvbWUgKGtleSwgdmFsdWUpXG4gICAgOztcblxuICAgIGxldCBmaXJzdCB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQuZmlyc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGt2IC0+IFNvbWUga3YudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IHJhaXNlX2RlcXVldWVfZW1wdHkgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcIkhhc2hfcXVldWUuZGVxdWV1ZV9leG46IGVtcHR5IHF1ZXVlXCJdXG5cbiAgICBsZXQgZGVxdWV1ZV9leG4gdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIG1hdGNoIGRlcXVldWUgdCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZV9kZXF1ZXVlX2VtcHR5ICgpXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX2JhY2tfZXhuIHQgPSBkZXF1ZXVlX2V4biB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfZnJvbnRfZXhuIHQgPSBkZXF1ZXVlX2V4biB0IGBmcm9udFxuXG4gICAgbGV0IGtleXMgdCA9XG4gICAgICAoKiBSZXR1cm4gdGhlIGtleXMgaW4gdGhlIG9yZGVyIG9mIHRoZSBxdWV1ZS4gKilcbiAgICAgIExpc3QubWFwIChEb3VibHlfbGlua2VkLnRvX2xpc3QgdC5xdWV1ZSkgfmY6S2V5X3ZhbHVlLmtleVxuICAgIDs7XG5cbiAgICBsZXQgdG9fYWxpc3QgdCA9XG4gICAgICBMaXN0Lm1hcCAoRG91Ymx5X2xpbmtlZC50b19saXN0IHQucXVldWUpIH5mOihmdW4ga3YgLT4ga3Yua2V5LCBrdi52YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXJpIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5pdGVyIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIH5rZXk6a3Yua2V5IH5kYXRhOmt2LnZhbHVlKSBbQG5vbnRhaWxdKSBcbiAgICAgIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5cbiAgICBsZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLmZvbGQgdC5xdWV1ZSB+aW5pdCB+ZjooZnVuIGFjIGt2IC0+IGYgYWMgfmtleTprdi5rZXkgfmRhdGE6a3YudmFsdWUpIFxuICAgICAgICBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gYWMgfmtleTpfIH5kYXRhIC0+IGYgYWMgZGF0YSkgW0Bub250YWlsXVxuICAgIGxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbiAgICBsZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gbSB+Zm9sZCB0IH5mXG4gICAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICAgIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcblxuICAgIGxldCBkZXF1ZXVlX2FsbCB0IH5mID1cbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIG1hdGNoIGRlcXVldWVfZnJvbnQgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAgIGYgdjtcbiAgICAgICAgICBsb29wICgpXG4gICAgICBpblxuICAgICAgbG9vcCAoKSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCByZW1vdmUgdCBrID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCBUYWJsZS5maW5kX2FuZF9yZW1vdmUgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBgTm9fc3VjaF9rZXlcbiAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5yZW1vdmUgdC5xdWV1ZSBlbHQ7XG4gICAgICAgIGBPa1xuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfcmVtb3ZlX3Vua25vd25fa2V5IHQga2V5ID1cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJIYXNoX3F1ZXVlLnJlbW92ZV9leG46IHVua25vd24ga2V5XCIgfl86KFRhYmxlLnNleHBfb2Zfa2V5IHQudGFibGUga2V5IDogU2V4cC50KV1cbiAgICA7O1xuXG4gICAgbGV0IHJlbW92ZV9leG4gdCBrID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCByZW1vdmUgdCBrIHdpdGhcbiAgICAgIHwgYE5vX3N1Y2hfa2V5IC0+IHJhaXNlX3JlbW92ZV91bmtub3duX2tleSB0IGtcbiAgICAgIHwgYE9rIC0+ICgpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX3JlbW92ZSB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmRfYW5kX3JlbW92ZSB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5yZW1vdmUgdC5xdWV1ZSBlbHQ7XG4gICAgICAgIFNvbWUgKEVsdC52YWx1ZSBlbHQpLnZhbHVlXG4gICAgOztcblxuICAgIGxldCByZXBsYWNlIHQgayB2ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCBUYWJsZS5maW5kIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYE5vX3N1Y2hfa2V5XG4gICAgICB8IFNvbWUgZWx0IC0+XG4gICAgICAgIChFbHQudmFsdWUgZWx0KS52YWx1ZSA8LSB2O1xuICAgICAgICBgT2tcbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2Vfb3JfZW5xdWV1ZSB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCBUYWJsZS5maW5kIHQudGFibGUga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbnF1ZXVlX3VuY2hlY2tlZCB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlXG4gICAgICB8IFNvbWUgZWx0IC0+IChFbHQudmFsdWUgZWx0KS52YWx1ZSA8LSB2YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgcmVwbGFjZV9vcl9lbnF1ZXVlX2Zyb250IHQga2V5IHZhbHVlID0gcmVwbGFjZV9vcl9lbnF1ZXVlIHQgYGZyb250IGtleSB2YWx1ZVxuICAgIGxldCByZXBsYWNlX29yX2VucXVldWVfYmFjayB0IGtleSB2YWx1ZSA9IHJlcGxhY2Vfb3JfZW5xdWV1ZSB0IGBiYWNrIGtleSB2YWx1ZVxuXG4gICAgbGV0IHJhaXNlX3JlcGxhY2VfdW5rbm93bl9rZXkgdCBrZXkgPVxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkhhc2hfcXVldWUucmVwbGFjZV9leG46IHVua25vd24ga2V5XCJcbiAgICAgICAgICAgIH5fOihUYWJsZS5zZXhwX29mX2tleSB0LnRhYmxlIGtleSA6IFNleHAudCldXG4gICAgOztcblxuICAgIGxldCByZXBsYWNlX2V4biB0IGsgdiA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggcmVwbGFjZSB0IGsgdiB3aXRoXG4gICAgICB8IGBOb19zdWNoX2tleSAtPiByYWlzZV9yZXBsYWNlX3Vua25vd25fa2V5IHQga1xuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGRyb3AgPyhuID0gMSkgdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIGlmIG4gPj0gbGVuZ3RoIHRcbiAgICAgIHRoZW4gY2xlYXIgdFxuICAgICAgZWxzZVxuICAgICAgICBmb3IgXyA9IDEgdG8gbiBkb1xuICAgICAgICAgIGlnbm9yZSAoZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgOiBfIG9wdGlvbilcbiAgICAgICAgZG9uZVxuICAgIDs7XG5cbiAgICBsZXQgZHJvcF9iYWNrID9uIHQgPSBkcm9wID9uIHQgYGJhY2tcbiAgICBsZXQgZHJvcF9mcm9udCA/biB0ID0gZHJvcCA/biB0IGBmcm9udFxuXG4gICAgbGV0IGNvcHkgdCA9XG4gICAgICBsZXQgY29waWVkID0gY3JlYXRlIH5zaXplOihsZW5ndGggdCkgKFRhYmxlLmhhc2hhYmxlIHQudGFibGUpIGluXG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBlbnF1ZXVlX2JhY2tfZXhuIGNvcGllZCBrZXkgZGF0YSk7XG4gICAgICBjb3BpZWRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTID0gUzAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSkgaGFzaF9xdWV1ZSA6PSAoJ2tleSwgJ2RhdGEpIEJhY2tlbmQudFxuXG4gIG1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICAgIG1vZHVsZSBLZXkgOiBLZXlcblxuICAgICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgZW5kKSA6IFMgd2l0aCB0eXBlIGtleSA9IFQuS2V5LnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIChCYWNrZW5kIDogQmFja2VuZCB3aXRoIHR5cGUgKCdrLCAnZCkgdCA6PSAoJ2ssICdkKSBCYWNrZW5kLnQpXG5cbiAgICB0eXBlIGtleSA9IFQuS2V5LnRcbiAgICB0eXBlICdkYXRhIHQgPSAoVC5LZXkudCwgJ2RhdGEpIEJhY2tlbmQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBoYXNoYWJsZVxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoS2V5IDogS2V5KSA6IFMgd2l0aCB0eXBlIGtleSA9IEtleS50ID0gTWFrZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBLZXkgPSBLZXlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVGFibGUuSGFzaGFibGUub2Zfa2V5IChtb2R1bGUgS2V5KVxuICAgIGVuZClcblxuICBpbmNsdWRlIEJhY2tlbmRcbmVuZFxuXG5pbmNsdWRlIE1ha2VfYmFja2VuZCAoSGFzaHRibClcbiIsIigqKiBGdW5jdG9ycyBhbmQgaW50ZXJmYWNlcyB1c2VkIHRvIG1ha2UgbW9kdWxlcyBoYXNoYWJsZS4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2hhYmxlX2ludGZcblxubW9kdWxlIE1ha2VfcGxhaW4gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfcGxhaW4gd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9wbGFpbiAoVClcbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9wbGFpbiAoVClcbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2UgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogSGFzaHRibC5LZXlfcGxhaW4pIDpcbiAgU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlX3BsYWluIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIEhhc2h0YmwuS2V5IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2UgKFQpXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2UgKFQpXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlIChUKVxuXG4gIGxldCBoYXNoYWJsZSA9IFRhYmxlLmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2VfYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoVCA6IEhhc2h0YmwuS2V5KSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50ID0gTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIEhhc2h0YmwuS2V5X2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZSAoVClcbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlIChUKVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZSAoVClcbiAgaW5jbHVkZSBUXG5cbiAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfcGxhaW4gd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgZW5kKSA6IFNfcGxhaW4gd2l0aCB0eXBlIHQgOj0gVC5LZXkudCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuS2V5XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUKVxuXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gVC5LZXlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZClcblxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICAgIGluY2x1ZGUgSGFzaHRibC5LZXkgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC5LZXkudCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuS2V5XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2Vfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gVC5LZXlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZClcblxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleV9iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICBlbmRcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50XG4gIGVuZCkgOiBTX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gVC5LZXkudCA9IHN0cnVjdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgVC5LZXlcblxuICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogSGFzaHRibC5LZXlfYmluYWJsZSkgOlxuICBTX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBrZXlcblxuICAgICAgbW9kdWxlIFRhYmxlIDogc2lnXG4gICAgICAgIHR5cGUgJ2EgdCA9IChrZXksICdhKSBIYXNodGJsLnQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBIYXNoX3NldCA6IHNpZ1xuICAgICAgICB0eXBlIHQgPSBrZXkgSGFzaF9zZXQudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgICBlbmRcblxuICAgICAgdmFsIGhhc2hhYmxlIDoga2V5IEhhc2h0YmwuSGFzaGFibGUudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKEtleSA6IEhhc2h0YmwuS2V5X2JpbmFibGUpIDogUyB3aXRoIHR5cGUga2V5IDo9IEtleS50ID0gc3RydWN0XG4gICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZSAoS2V5KVxuICAgICAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlIChLZXkpXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFRhYmxlLmhhc2hhYmxlXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgICAgIG1vZHVsZSBLZXkgOiBIYXNodGJsLktleV9iaW5hYmxlXG5cbiAgICAgICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSBrZXkgOj0gVC5LZXkudCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVClcblxuICAgICAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmRcblxuICAgIG1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gICAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICAgIHR5cGUga2V5XG5cbiAgICAgICAgbW9kdWxlIFRhYmxlIDogc2lnXG4gICAgICAgICAgdHlwZSAnYSB0ID0gKGtleSwgJ2EpIEhhc2h0YmwudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgSGFzaF9zZXQgOiBzaWdcbiAgICAgICAgICB0eXBlIHQgPSBrZXkgSGFzaF9zZXQudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgICAgICBlbmRcblxuICAgICAgICB2YWwgaGFzaGFibGUgOiBrZXkgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2UgKEtleSA6IEhhc2h0YmwuS2V5X3N0YWJsZSkgOiBTIHdpdGggdHlwZSBrZXkgOj0gS2V5LnQgPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3N0YWJsZSAoS2V5KVxuICAgICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3N0YWJsZSAoS2V5KVxuXG4gICAgICAgIGxldCBoYXNoYWJsZSA9IFRhYmxlLmhhc2hhYmxlXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgICAgICAgIG1vZHVsZSBLZXkgOiBIYXNodGJsLktleV9zdGFibGVcblxuICAgICAgICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50XG4gICAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSBrZXkgOj0gVC5LZXkudCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2Vfc3RhYmxlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgICAgICAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9zdGFibGVfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICAgICAgICBtb2R1bGUgRWx0ID0gVC5LZXlcblxuICAgICAgICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIENoYXIgPSBCYXNlLkNoYXJcbm1vZHVsZSBJbnQgPSBCYXNlLkludFxubW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nXG5pbmNsdWRlIEhleGR1bXBfaW50ZlxuXG5sZXQgYnl0ZXNfcGVyX2xpbmUgPSAxNlxuXG4oKiBJbml0aWFsaXplIHRvIGVub3VnaCBsaW5lcyB0byBkaXNwbGF5IDQwOTYgYnl0ZXMgLS0gbGFyZ2UgZW5vdWdoIHRoYXQsIGZvciBleGFtcGxlLCBhXG4gICBjb21wbGV0ZSBFdGhlcm5ldCBwYWNrZXQgY2FuIGFsd2F5cyBiZSBkaXNwbGF5ZWQgLS0gaW5jbHVkaW5nIHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlXG4gICBmaW5hbCBpbmRleC4gKilcbmxldCBkZWZhdWx0X21heF9saW5lcyA9IHJlZiAoKDQwOTYgLyBieXRlc19wZXJfbGluZSkgKyAxKVxuXG5tb2R1bGUgT2ZfaW5kZXhhYmxlMiAoVCA6IEluZGV4YWJsZTIpID0gc3RydWN0XG4gIG1vZHVsZSBIZXhkdW1wID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGV4X29mX3BvcyBwb3MgPSBQcmludGYuc3ByaW50ZiBcIiUwOHhcIiBwb3NcblxuICAgIGxldCBoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgb2Zmc2V0ID1cbiAgICAgIGxldCBwb3MgPSBzdGFydCArIG9mZnNldCBpblxuICAgICAgaWYgcG9zID49IHVudGlsIHRoZW4gXCIgIFwiIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlMDJ4XCIgKENoYXIudG9faW50IChnZXQgdCBwb3MpKVxuICAgIDs7XG5cbiAgICBsZXQgaGV4X29mX2xpbmUgdCB+c3RhcnQgfnVudGlsID1cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiJXMgJXMgJXMgJXMgJXMgJXMgJXMgJXMgICVzICVzICVzICVzICVzICVzICVzICVzXCJcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAwKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMilcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAzKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDQpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNSlcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA2KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDcpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgOClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA5KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEwKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDExKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEyKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEzKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDE0KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDE1KVxuICAgIDs7XG5cbiAgICBsZXQgcHJpbnRhYmxlX3N0cmluZyB0IH5zdGFydCB+dW50aWwgPVxuICAgICAgU3RyaW5nLmluaXQgKHVudGlsIC0gc3RhcnQpIH5mOihmdW4gaSAtPlxuICAgICAgICBsZXQgY2hhciA9IGdldCB0IChzdGFydCArIGkpIGluXG4gICAgICAgIGlmIENoYXIuaXNfcHJpbnQgY2hhciB0aGVuIGNoYXIgZWxzZSAnLicpXG4gICAgOztcblxuICAgIGxldCBsaW5lIHQgfnBvcyB+bGVuIH5saW5lX2luZGV4ID1cbiAgICAgIGxldCBzdGFydCA9IHBvcyArIChsaW5lX2luZGV4ICogYnl0ZXNfcGVyX2xpbmUpIGluXG4gICAgICBsZXQgdW50aWwgPSBtaW4gKHN0YXJ0ICsgYnl0ZXNfcGVyX2xpbmUpIChwb3MgKyBsZW4pIGluXG4gICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICBcIiVzICAlcyAgfCVzfFwiXG4gICAgICAgIChoZXhfb2ZfcG9zIHN0YXJ0KVxuICAgICAgICAoaGV4X29mX2xpbmUgdCB+c3RhcnQgfnVudGlsKVxuICAgICAgICAocHJpbnRhYmxlX3N0cmluZyB0IH5zdGFydCB+dW50aWwpXG4gICAgOztcblxuICAgIGxldCB0b19zZXF1ZW5jZSA/bWF4X2xpbmVzID9wb3MgP2xlbiB0ID1cbiAgICAgIGxldCBwb3MsIGxlbiA9XG4gICAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgICAgIGluXG4gICAgICBsZXQgbWF4X2xpbmVzID1cbiAgICAgICAgbWF0Y2ggbWF4X2xpbmVzIHdpdGhcbiAgICAgICAgfCBTb21lIG1heF9saW5lcyAtPiBtYXhfbGluZXNcbiAgICAgICAgfCBOb25lIC0+ICFkZWZhdWx0X21heF9saW5lc1xuICAgICAgaW5cbiAgICAgICgqIGFsd2F5cyBwcm9kdWNlIGF0IGxlYXN0IDMgbGluZXM6IGZpcnN0IGxpbmUgb2YgaGV4LCBlbGxpcHNpcywgbGFzdCBsaW5lIG9mIGhleCAqKVxuICAgICAgbGV0IG1heF9saW5lcyA9IG1heCBtYXhfbGluZXMgMyBpblxuICAgICAgKCogdW5hYnJpZGdlZCBsaW5lcyA9IGxpbmVzIG9mIGhleCArIGxpbmUgd2l0aCBmaW5hbCBpbmRleCAqKVxuICAgICAgbGV0IHVuYWJyaWRnZWRfbGluZXMgPVxuICAgICAgICBJbnQucm91bmRfdXAgbGVuIH50b19tdWx0aXBsZV9vZjpieXRlc19wZXJfbGluZSAvIGJ5dGVzX3Blcl9saW5lXG4gICAgICBpblxuICAgICAgKCogRmlndXJlIG91dCB3aGVyZSB3ZSBuZWVkIHRvIHNraXAgZnJvbSBhbmQgdG8gaWYgW21heF9saW5lcyA8IHVuYWJyaWRnZWRfbGluZXNdLlxuICAgICAgICAgU2tpcCBhZnRlciBoYWxmIHRoZSBhY3R1YWwgaGV4IGxpbmVzIChzdWJ0cmFjdGluZyBvbmUgbGluZSBmb3IgdGhlIGVsbGlwc2lzKS5cbiAgICAgICAgIFNraXAgdG8gbmVhciB0aGUgZW5kLCBsZXNzIHRoZSBudW1iZXIgb2YgbGluZXMgcmVtYWluaW5nIHRvIHByb2R1Y2UsIHBsdXMgdGhlXG4gICAgICAgICBlbGxpcHNpcyBsaW5lLiAqKVxuICAgICAgbGV0IHNraXBfZnJvbSA9IChtYXhfbGluZXMgLSAxKSAvIDIgaW5cbiAgICAgIGxldCBza2lwX3RvID0gdW5hYnJpZGdlZF9saW5lcyAtIChtYXhfbGluZXMgLSBza2lwX2Zyb20pICsgMSBpblxuICAgICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQ6MCB+ZjooZnVuIGxpbmVfaW5kZXggLT5cbiAgICAgICAgaWYgbGluZV9pbmRleCA+PSB1bmFicmlkZ2VkX2xpbmVzXG4gICAgICAgIHRoZW4gRG9uZVxuICAgICAgICBlbHNlIGlmIGxpbmVfaW5kZXggPSBza2lwX2Zyb20gJiYgbWF4X2xpbmVzIDwgdW5hYnJpZGdlZF9saW5lc1xuICAgICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBcIi4uLlwiOyBzdGF0ZSA9IHNraXBfdG8gfVxuICAgICAgICBlbHNlIFlpZWxkIHsgdmFsdWUgPSBsaW5lIHQgfnBvcyB+bGVuIH5saW5lX2luZGV4OyBzdGF0ZSA9IGxpbmVfaW5kZXggKyAxIH0pXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmdfaHVtID9tYXhfbGluZXMgP3BvcyA/bGVuIHQgPVxuICAgICAgdG9fc2VxdWVuY2UgP21heF9saW5lcyA/cG9zID9sZW4gdCB8PiBTZXF1ZW5jZS50b19saXN0IHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgXyBfIHQgPSB0b19zZXF1ZW5jZSB0IHw+IFNlcXVlbmNlLnRvX2xpc3QgfD4gWyVzZXhwX29mOiBzdHJpbmcgbGlzdF1cblxuICAgIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgcHJpbnRhYmxlID1cbiAgICAgICAgbGV0IHJlYyBwcmludGFibGVfZnJvbSB0IH5wb3Mgfmxlbmd0aCA9XG4gICAgICAgICAgcG9zID49IGxlbmd0aFxuICAgICAgICAgIHx8IChDaGFyLmlzX3ByaW50IChnZXQgdCBwb3MpICYmIHByaW50YWJsZV9mcm9tIHQgfnBvczoocG9zICsgMSkgfmxlbmd0aClcbiAgICAgICAgaW5cbiAgICAgICAgZnVuIHQgLT4gcHJpbnRhYmxlX2Zyb20gdCB+cG9zOjAgfmxlbmd0aDoobGVuZ3RoIHQpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gcG9zIC0+IGdldCB0IHBvcylcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHQgPVxuICAgICAgICBpZiBwcmludGFibGUgdCB0aGVuIFslc2V4cCAodG9fc3RyaW5nIHQgOiBzdHJpbmcpXSBlbHNlIFslc2V4cCAodCA6IChhLCBiKSB0KV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9pbmRleGFibGUxIChUIDogSW5kZXhhYmxlMSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBPZl9pbmRleGFibGUyIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgVC50XG5cbiAgICAgIGxldCBsZW5ndGggPSBULmxlbmd0aFxuICAgICAgbGV0IGdldCA9IFQuZ2V0XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIZXhkdW1wID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgc2V4cF9vZl90IHggdCA9IE0uSGV4ZHVtcC5zZXhwX29mX3QgeCBbJXNleHBfb2Y6IF9dIHRcbiAgICBsZXQgdG9fc2VxdWVuY2UgPSBNLkhleGR1bXAudG9fc2VxdWVuY2VcbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA9IE0uSGV4ZHVtcC50b19zdHJpbmdfaHVtXG5cbiAgICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAodCA6IChhLCBfKSBNLkhleGR1bXAuUHJldHR5LnQpXVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2ZfaW5kZXhhYmxlIChUIDogSW5kZXhhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9mX2luZGV4YWJsZTEgKHN0cnVjdFxuICAgICAgdHlwZSBfIHQgPSBULnRcblxuICAgICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gICAgICBsZXQgZ2V0ID0gVC5nZXRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBzZXhwX29mX3QgdCA9IE0uSGV4ZHVtcC5zZXhwX29mX3QgWyVzZXhwX29mOiBfXSB0XG4gICAgbGV0IHRvX3NlcXVlbmNlID0gTS5IZXhkdW1wLnRvX3NlcXVlbmNlXG4gICAgbGV0IHRvX3N0cmluZ19odW0gPSBNLkhleGR1bXAudG9fc3RyaW5nX2h1bVxuXG4gICAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodCA6IF8gTS5IZXhkdW1wLlByZXR0eS50KV1cbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJZGVudGlmaWFibGVfaW50ZlxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX3BsYWluIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9zZXhwX2dyYW1tYXIgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG4gIE1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9wbGFpbiAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG4gIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgRXh0ZW5kIChNIDogQmFzZS5JZGVudGlmaWFibGUuUykgKEIgOiBCaW5hYmxlMC5TIHdpdGggdHlwZSB0ID0gTS50KSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuICAgIGluY2x1ZGUgKEIgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5FeHRlbmRfYmluYWJsZSAoTSkgKFQpXG5cbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgS2V5ID0gVFxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBNLmhhc2hhYmxlXG4gICAgZW5kKVxuZW5kXG4iLCJtb2R1bGUgdHlwZSBWMSA9IHNpZ1xuICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBcblxuICBpbmNsdWRlXG4gICAgQ29tcGFyYWJsZS5TdGFibGUuVjEuU1xuICAgIHdpdGggdHlwZSBjb21wYXJhYmxlIDo9IHRcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFYxID0gc2lnXG4gICAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzBcblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuU1xuICAgICAgd2l0aCB0eXBlIGNvbXBhcmFibGUgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlN0cmluZ1xuXG4oKiBUaGVzZSB0d28gYXJlIG5lZWRlZCBiZWNhdXNlIFtpbmNsdWRlIElkZW50aWZpYWJsZS5FeHRlbmRdIChwcmVzZW50IGxhdGVyIGluIHRoZSBmaWxlKVxuICAgYmluZHMgbmV3IFtNYXBdIGFuZCBbU2V0XSBtb2R1bGVzLiAqKVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuU3RyaW5nXG5cbiAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgdG9fc3RyaW5nID0gRm4uaWRcbiAgICBsZXQgb2Zfc3RyaW5nID0gRm4uaWRcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUKVxuICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDYXNlbGVzc1xuXG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG5lbmRcblxudHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdcblxuICAgICAgbGV0IGhhc2hhYmxlID0gU3RhYmxlLlYxLmhhc2hhYmxlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEJhc2UuU3RyaW5nKVxuXG5pbmNsdWRlIEhleGR1bXAuT2ZfaW5kZXhhYmxlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gIGVuZClcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnN0cmluZ1xubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc3RyaW5nXG5sZXQgZ2VuX25vbmVtcHR5ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfbm9uX2VtcHR5XG5sZXQgZ2VuJyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX29mXG5sZXQgZ2VuX25vbmVtcHR5JyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX25vbl9lbXB0eV9vZlxuXG5sZXQgZ2VuX3dpdGhfbGVuZ3RoIGxlbmd0aCBjaGFycyA9XG4gIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJzIH5sZW5ndGhcbjs7XG5cbmxldCB0YWtlX3doaWxlIHQgfmYgPVxuICBtYXRjaCBsZmluZGkgdCB+ZjooZnVuIF8gZWx0IC0+IG5vdCAoZiBlbHQpKSB3aXRoXG4gIHwgTm9uZSAtPiB0XG4gIHwgU29tZSBpIC0+IHN1YiB0IH5wb3M6MCB+bGVuOmlcbjs7XG5cbmxldCBydGFrZV93aGlsZSB0IH5mID1cbiAgbWF0Y2ggcmZpbmRpIHQgfmY6KGZ1biBfIGVsdCAtPiBub3QgKGYgZWx0KSkgd2l0aFxuICB8IE5vbmUgLT4gdFxuICB8IFNvbWUgaSAtPiBzdWIgdCB+cG9zOihpICsgMSkgfmxlbjoobGVuZ3RoIHQgLSBpIC0gMSlcbjs7XG5cbigqKiBTZWUgeyFBcnJheS5ub3JtYWxpemV9IGZvciB0aGUgZm9sbG93aW5nIDQgZnVuY3Rpb25zLiAqKVxubGV0IG5vcm1hbGl6ZSB0IGkgPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLm5vcm1hbGl6ZSB+bGVuZ3RoX2Z1bjpsZW5ndGggdCBpXG5cbmxldCBzbGljZSB0IHN0YXJ0IHN0b3AgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLnNsaWNlIH5sZW5ndGhfZnVuOmxlbmd0aCB+c3ViX2Z1bjpzdWIgdCBzdGFydCBzdG9wXG47O1xuXG5sZXQgbmdldCB4IGkgPVxuICBsZXQgbW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nIGluXG4gIHguW25vcm1hbGl6ZSB4IGldXG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5TdHJpbmd9W0Jhc2UuU3RyaW5nXX0uICopXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuU3RyaW5nXG5lbmRcblxudHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cblxuKCoqIFtDYXNlbGVzc10gY29tcGFyZXMgYW5kIGhhc2hlcyBzdHJpbmdzIGlnbm9yaW5nIGNhc2UsIHNvIHRoYXQgZm9yIGV4YW1wbGVcbiAgICBbQ2FzZWxlc3MuZXF1YWwgXCJPQ2FtbFwiIFwib2NhbWxcIl0gYW5kIFtDYXNlbGVzcy4oXCJhcHBsZVwiIDwgXCJCYW5hbmFcIildIGFyZSBbdHJ1ZV0sIGFuZFxuICAgIFtDYXNlbGVzcy5NYXBdLCBbQ2FzZWxlc3MuVGFibGVdIGxvb2t1cCBhbmQgW0Nhc2VsZXNzLlNldF0gbWVtYmVyc2hpcCBpc1xuICAgIGNhc2UtaW5zZW5zaXRpdmUuXG5cbiAgICBbQ2FzZWxlc3NdIGFsc28gcHJvdmlkZXMgY2FzZS1pbnNlbnNpdGl2ZSBbaXNfc3VmZml4XSBhbmQgW2lzX3ByZWZpeF0gZnVuY3Rpb25zLCBzb1xuICAgIHRoYXQgZm9yIGV4YW1wbGUgW0Nhc2VsZXNzLmlzX3N1ZmZpeCBcIk9DYW1sXCIgfnN1ZmZpeDpcIkFtTFwiXSBhbmQgW0Nhc2VsZXNzLmlzX3ByZWZpeFxuICAgIFwiT0NhbWxcIiB+cHJlZml4Olwib2NcIl0gYXJlIFt0cnVlXS4gKilcbm1vZHVsZSBDYXNlbGVzcyA6IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQ2FzZWxlc3NcbiAgZW5kXG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCBzZXhwXVxuXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5cbigqKiBbc2xpY2UgdCBzdGFydCBzdG9wXSByZXR1cm5zIGEgbmV3IHN0cmluZyBpbmNsdWRpbmcgZWxlbWVudHMgW3QuKHN0YXJ0KV0gdGhyb3VnaFxuICAgIFt0LihzdG9wLTEpXSwgbm9ybWFsaXplZCBQeXRob24tc3R5bGUgd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgW3N0b3AgPSAwXSBpcyB0cmVhdGVkIGFzXG4gICAgW3N0b3AgPSBsZW5ndGggdF0uICopXG52YWwgc2xpY2UgOiB0IC0+IGludCAtPiBpbnQgLT4gdFxuXG4oKiogW25nZXQgcyBpXSBnZXRzIHRoZSBjaGFyIGF0IG5vcm1hbGl6ZWQgcG9zaXRpb24gW2ldIGluIFtzXS4gKilcbnZhbCBuZ2V0IDogdCAtPiBpbnQgLT4gY2hhclxuXG4oKiogW3Rha2Vfd2hpbGUgcyB+Zl0gcmV0dXJucyB0aGUgbG9uZ2VzdCBwcmVmaXggb2YgW3NdIHNhdGlzZnlpbmcgW2Zvcl9hbGwgcHJlZml4IH5mXVxuICAgIChTZWUgW2xzdHJpcF0gdG8gZHJvcCBzdWNoIGEgcHJlZml4KSAqKVxudmFsIHRha2Vfd2hpbGUgOiB0IC0+IGY6KChjaGFyIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IHRcblxuKCoqIFtydGFrZV93aGlsZSBzIH5mXSByZXR1cm5zIHRoZSBsb25nZXN0IHN1ZmZpeCBvZiBbc10gc2F0aXNmeWluZyBbZm9yX2FsbCBzdWZmaXggfmZdXG4gICAgKFNlZSBbcnN0cmlwXSB0byBkcm9wIHN1Y2ggYSBzdWZmaXgpICopXG52YWwgcnRha2Vfd2hpbGUgOiB0IC0+IGY6KChjaGFyIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IHRcblxuaW5jbHVkZSBIZXhkdW1wLlMgd2l0aCB0eXBlIHQgOj0gdFxuaW5jbHVkZSBJZGVudGlmaWFibGUuUyB3aXRoIHR5cGUgdCA6PSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmluY2x1ZGUgUXVpY2tjaGVja2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbigqKiBMaWtlIFtxdWlja2NoZWNrX2dlbmVyYXRvcl0sIGJ1dCB3aXRob3V0IGVtcHR5IHN0cmluZ3MuICopXG52YWwgZ2VuX25vbmVtcHR5IDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtxdWlja2NoZWNrX2dlbmVyYXRvcl0sIGJ1dCBnZW5lcmF0ZSBzdHJpbmdzIHdpdGggdGhlIGdpdmVuIGRpc3RyaWJ1dGlvbiBvZlxuICAgIGNoYXJhY3RlcnMuICopXG52YWwgZ2VuJyA6IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW2dlbiddLCBidXQgd2l0aG91dCBlbXB0eSBzdHJpbmdzLiAqKVxudmFsIGdlbl9ub25lbXB0eScgOiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtnZW4nXSwgYnV0IGdlbmVyYXRlIHN0cmluZ3Mgd2l0aCB0aGUgZ2l2ZW4gbGVuZ3RoLiAqKVxudmFsIGdlbl93aXRoX2xlbmd0aCA6IGludCAtPiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBOb3RlIHRoYXQgW3N0cmluZ10gaXMgYWxyZWFkeSBzdGFibGUgYnkgaXRzZWxmLCBzaW5jZSBhcyBhIHByaW1pdGl2ZSB0eXBlIGl0IGlzIGFuXG4gICAgaW50ZWdyYWwgcGFydCBvZiB0aGUgc2V4cCAvIGJpbl9pbyBwcm90b2NvbC4gW1N0cmluZy5TdGFibGVdIGV4aXN0cyBvbmx5IHRvIGludHJvZHVjZVxuICAgIFtTdHJpbmcuU3RhYmxlLlNldF0sIFtTdHJpbmcuU3RhYmxlLk1hcF0sIFtTdHJpbmcuU3RhYmxlLlRhYmxlXSwgYW5kIHByb3ZpZGUgaW50ZXJmYWNlXG4gICAgdW5pZm9ybWl0eSB3aXRoIG90aGVyIHN0YWJsZSB0eXBlcy4gKilcbm1vZHVsZSBTdGFibGUgOiBzaWdcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2gsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgaW5jbHVkZVxuICAgICAgU3RhYmxlX2NvbXBhcmFibGUuV2l0aF9zdGFibGVfd2l0bmVzcy5WMVxuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5TIHdpdGggdHlwZSBrZXkgOj0gdFxuICBlbmRcbmVuZFxuXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBib29sIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5cbnR5cGUgdCA9IGJvb2wgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuQm9vbClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQmFzZS5Cb29sXG5cbmluY2x1ZGUgKFxuICBCYXNlLkJvb2wgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5Cb29sXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEJhc2UuQm9vbClcblxubGV0IG9mX3N0cmluZ19odW0gPVxuICBsZXQgdGFibGUgPVxuICAgIGxhenlcbiAgICAgIChsZXQgdGFibGUgPSBTdHJpbmcuQ2FzZWxlc3MuVGFibGUuY3JlYXRlICgpIGluXG4gICAgICAgWyBmYWxzZSwgWyBcImZhbHNlXCI7IFwibm9cIjsgXCIwXCIgXTsgdHJ1ZSwgWyBcInRydWVcIjsgXCJ5ZXNcIjsgXCIxXCIgXSBdXG4gICAgICAgfD4gTGlzdC5pdGVyIH5mOihmdW4gKGJvb2wsIHN0cmluZ3MpIC0+XG4gICAgICAgICBMaXN0Lml0ZXIgc3RyaW5ncyB+ZjooZnVuIHN0cmluZyAtPlxuICAgICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OnN0cmluZyB+ZGF0YTpib29sO1xuICAgICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OihTdHJpbmcucHJlZml4IHN0cmluZyAxKSB+ZGF0YTpib29sKSk7XG4gICAgICAgdGFibGUpXG4gIGluXG4gIGxldCByYWlzZV9pbnZhbGlkIGlucHV0ID1cbiAgICBsZXQgZXhwZWN0ZWRfY2FzZV9pbnNlbnNpdGl2ZSA9IFN0cmluZy5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIChmb3JjZSB0YWJsZSkpIGluXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiQm9vbC5vZl9zdHJpbmdfaHVtOiBpbnZhbGlkIGlucHV0XCJcbiAgICAgICAgICAoaW5wdXQgOiBzdHJpbmcpXG4gICAgICAgICAgKGV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUgOiBTdHJpbmcuU2V0LnQpXVxuICBpblxuICBmdW4gc3RyaW5nIC0+XG4gICAgSGFzaHRibC5maW5kX2FuZF9jYWxsIChmb3JjZSB0YWJsZSkgc3RyaW5nIH5pZl9mb3VuZDpGbi5pZCB+aWZfbm90X2ZvdW5kOnJhaXNlX2ludmFsaWRcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuYm9vbFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuYm9vbFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuYm9vbFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuQnl0ZXNcblxuICAgIHR5cGUgdCA9IGJ5dGVzIFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEJhc2UuQnl0ZXMpXG5cbmluY2x1ZGUgSGV4ZHVtcC5PZl9pbmRleGFibGUgKHN0cnVjdFxuICAgIHR5cGUgdCA9IGJ5dGVzXG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IGdldFxuICBlbmQpXG5cbmxldCBnZW4nIGNoYXJfZ2VuID0gU3RyaW5nLmdlbicgY2hhcl9nZW4gfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3N0cmluZ1xuXG5sZXQgZ2VuX3dpdGhfbGVuZ3RoIGxlbiBjaGFyX2dlbiA9XG4gIFN0cmluZy5nZW5fd2l0aF9sZW5ndGggbGVuIGNoYXJfZ2VuIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zdHJpbmdcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5DaGFyKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuKCogaW5jbHVkZSBbQmFzZS5DaGFyXSBhZnRlciB0aGUgYXBwbGljYXRpb24gb2YgW0lkZW50aWZpYWJsZS5FeHRlbmRdIHRvIHJlcGxhY2UgdGhlXG4gICBbQ29tcGFyYWJsZV0gZnVuY3Rpb25zIHdpdGggdGhlIHBlcnZhc2l2ZSB2ZXJzaW9ucyAqKVxuaW5jbHVkZSAoXG4gIEJhc2UuQ2hhciA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLkNoYXJcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ2FzZWxlc3NcblxuICAgIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmcgYmluX2lvXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbmVuZFxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQmFzZS5DaGFyXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhclxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuY2hhclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuY2hhclxubGV0IGdlbl9kaWdpdCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9kaWdpdFxubGV0IGdlbl9sb3dlcmNhc2UgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfbG93ZXJjYXNlXG5sZXQgZ2VuX3VwcGVyY2FzZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl91cHBlcmNhc2VcbmxldCBnZW5fYWxwaGEgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfYWxwaGFcbmxldCBnZW5fYWxwaGFudW0gPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfYWxwaGFudW1cbmxldCBnZW5fcHJpbnQgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfcHJpbnRcbmxldCBnZW5fd2hpdGVzcGFjZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl93aGl0ZXNwYWNlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbHVzaXZlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3VuaWZvcm1faW5jbHVzaXZlXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTaWduID0gQmFzZS5TaWduXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2lnbi50ID1cbiAgICAgIHwgTmVnXG4gICAgICB8IFplcm9cbiAgICAgIHwgUG9zXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwLCBlbnVtZXJhdGVdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIFNpZ25cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZCAoU2lnbikgKFN0YWJsZS5WMSlcbiIsImV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuKCogU3RvbGVuIGZyb20gW3BlcnZhc2l2ZXMubWxdLiAgQWRkcyBhIFwiLlwiIGF0IHRoZSBlbmQgaWYgbmVlZGVkLiAgSXQgaXMgaW5cbiAgIFtwZXJ2YXNpdmVzLm1saV0sIGJ1dCBpdCBhbHNvIHNheXMgbm90IHRvIHVzZSBpdCBkaXJlY3RseSwgc28gd2UgY29weSBhbmQgcGFzdGUgdGhlXG4gICBjb2RlLiBJdCBtYWtlcyB0aGUgYXNzdW1wdGlvbiBvbiB0aGUgc3RyaW5nIHBhc3NlZCBpbiBhcmd1bWVudCB0aGF0IGl0IHdhcyByZXR1cm5lZCBieVxuICAgW2Zvcm1hdF9mbG9hdF0gKilcbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gbFxuICAgIHRoZW4gcyBeIFwiLlwiXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IF8gLT4gcylcbiAgaW5cbiAgbG9vcCAwXG47O1xuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5GbG9hdFxuXG4gICAgICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzLCB0eXBlcmVwXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUMVxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUMSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIFQgPSBTdGFibGUuVjFcbmluY2x1ZGUgVFxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFwX2FuZF9zZXRfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoVClcbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHQgPSBUXG5cbmxldCB2YWxpZGF0ZV9vcmRpbmFyeSB0ID1cbiAgVmFsaWRhdGUub2ZfZXJyb3Jfb3B0XG4gICAgKGxldCBtb2R1bGUgQyA9IENsYXNzIGluXG4gICAgIG1hdGNoIGNsYXNzaWZ5IHQgd2l0aFxuICAgICB8IEMuTm9ybWFsIHwgQy5TdWJub3JtYWwgfCBDLlplcm8gLT4gTm9uZVxuICAgICB8IEMuSW5maW5pdGUgLT4gU29tZSBcInZhbHVlIGlzIGluZmluaXRlXCJcbiAgICAgfCBDLk5hbiAtPiBTb21lIFwidmFsdWUgaXMgTmFOXCIpXG47O1xuXG5tb2R1bGUgViA9IHN0cnVjdFxuICBtb2R1bGUgWlogPSBDb21wYXJhYmxlLlZhbGlkYXRlIChUKVxuXG4gIGxldCB2YWxpZGF0ZV9ib3VuZCB+bWluIH5tYXggdCA9XG4gICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZSAodmFsaWRhdGVfb3JkaW5hcnkgdCkgKFpaLnZhbGlkYXRlX2JvdW5kIHQgfm1pbiB+bWF4KVxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZV9sYm91bmQgfm1pbiB0ID1cbiAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlICh2YWxpZGF0ZV9vcmRpbmFyeSB0KSAoWloudmFsaWRhdGVfbGJvdW5kIHQgfm1pbilcbiAgOztcblxuICBsZXQgdmFsaWRhdGVfdWJvdW5kIH5tYXggdCA9XG4gICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZSAodmFsaWRhdGVfb3JkaW5hcnkgdCkgKFpaLnZhbGlkYXRlX3Vib3VuZCB0IH5tYXgpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBWXG5cbm1vZHVsZSBSb2J1c3RfY29tcGFyZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgKCogaW50ZW5kZWQgdG8gYmUgYSB0b2xlcmFuY2Ugb24gaHVtYW4tZW50ZXJlZCBmbG9hdHMgKilcblxuICAgIHZhbCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgOiBmbG9hdFxuXG4gICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gZmxvYXRcbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICAgIHZhbCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgOiBmbG9hdFxuICAgIGVuZCkgOiBTID0gc3RydWN0XG4gICAgKCogV2UgaGF2ZSB0ZXN0IGluIHRoZSB0cmVlIHRoYXQgcmVseSBvbiB0aGVzZSBmdW5jdGlvbnMgbm90IGFsbG9jYXRpbmcsIGV2ZW4gd2l0aG91dFxuICAgICAgIFhfTElCUkFSWV9JTkxJTkcuIFRoZSBvbmx5IHdheSB0byBlbnN1cmUgdGhhdCB0aGVzZSBkb24ndCBjcmVhdGUgdGVtcG9yYXJ5IGJveGVkXG4gICAgICAgZmxvYXRzIHdpdGhvdXQgWF9MSUJSQVJZX0lOTElORyBpcyBmb3IgdGhpcyBjb2RlIHRvIHNlZSB0aGUgZmxvYXQgb3BlcmF0aW9ucyBhc1xuICAgICAgIGV4dGVybmFscywgYXMgZGVmaW5lZCBpbiBbUGVydmFzaXZlc10uIFRoYXQncyB3aHkgd2UgdXNlIFtQb2x5XSBhbmQgZmxvYXRcbiAgICAgICBhcml0aG1ldGljIGZyb20gW0NhbWxdLiAqKVxuICAgIG9wZW4gUG9seVxuXG4gICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IFQucm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgbGV0ICggPj0uICkgeCB5ID0geCA+PSBTdGRsaWIuKCAtLiApIHkgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgbGV0ICggPD0uICkgeCB5ID0geSA+PS4geFxuICAgIGxldCAoID0uICkgeCB5ID0geCA+PS4geSAmJiB5ID49LiB4XG4gICAgbGV0ICggPi4gKSB4IHkgPSB4ID4gU3RkbGliLiggKy4gKSB5IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgIGxldCAoIDwuICkgeCB5ID0geSA+LiB4XG4gICAgbGV0ICggPD4uICkgeCB5ID0gbm90ICh4ID0uIHkpXG5cbiAgICBsZXQgcm9idXN0bHlfY29tcGFyZSB4IHkgPVxuICAgICAgbGV0IGQgPSBTdGRsaWIuKCAtLiApIHggeSBpblxuICAgICAgaWYgZCA8IFN0ZGxpYi4oIH4tLiApIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgICAgdGhlbiAtMVxuICAgICAgZWxzZSBpZiBkID4gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgICB0aGVuIDFcbiAgICAgIGVsc2UgMFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBSb2J1c3RseV9jb21wYXJhYmxlID0gUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTdcbiAgZW5kKVxuXG5pbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGVcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkZsb2F0Lk9cbiAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlXG5lbmRcblxubW9kdWxlIFRlcnNlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBpbmNsdWRlIChcbiAgICBCYXNlLkZsb2F0LlRlcnNlIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLkZsb2F0LlRlcnNlXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5sZXQgcm9idXN0X3NpZ24gdCA6IFNpZ24udCA9IGlmIHQgPi4gMC4gdGhlbiBQb3MgZWxzZSBpZiB0IDwuIDAuIHRoZW4gTmVnIGVsc2UgWmVyb1xuXG4oKiBUaGVyZSBhcmUgdHdvIGlzc3VlczpcbiAgIC0gRmxvYXQuc2lnbiB1c2VkIHRvIHVzZSByb2J1c3QgY29tcGFyaXNvbiwgYW5kIHVzZXJzIG9mIFtDb3JlXSBtaWdodCBoYXZlIGNvbWUgdG9cbiAgICAgZGVwZW5kIG9uIHRoaXMuXG4gICAtIFJvYnVzdG5lc3MgYXNpZGUsIHdoYXQgd2UgZ2V0IGZyb20gQ29tcGFyYWJsZS5XaXRoX3plcm8gd291bGQgbWFwIG5hbiB0byBOZWcuXG4qKVxubGV0IHNpZ24gPSByb2J1c3Rfc2lnblxuXG4oKiBTdGFuZGFyZCAxMiBzaWduaWZpY2FudCBkaWdpdHMsIGV4cG9uZW50aWFsIG5vdGF0aW9uIHVzZWQgYXMgbmVjZXNzYXJ5LCBndWFyYW50ZWVkIHRvXG4gICBiZSBhIHZhbGlkIE9DYW1sIGZsb2F0IGxleGVtLCBub3QgdG8gbG9vayBsaWtlIGFuIGludC4gKilcbmxldCB0b19zdHJpbmdfMTIgeCA9IHZhbGlkX2Zsb2F0X2xleGVtIChmb3JtYXRfZmxvYXQgXCIlLjEyZ1wiIHgpXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5mbG9hdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmxvYXRcbmxldCBnZW5fdW5pZm9ybV9leGNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF91bmlmb3JtX2V4Y2x1c2l2ZVxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9pbmNsdXNpdmVcbmxldCBnZW5fd2l0aG91dF9uYW4gPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3dpdGhvdXRfbmFuXG5sZXQgZ2VuX2Zpbml0ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfZmluaXRlXG5sZXQgZ2VuX3Bvc2l0aXZlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9zdHJpY3RseV9wb3NpdGl2ZVxubGV0IGdlbl9uZWdhdGl2ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfc3RyaWN0bHlfbmVnYXRpdmVcbmxldCBnZW5femVybyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgWmVyb1xubGV0IGdlbl9uYW4gPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIE5hblxubGV0IGdlbl9zdWJub3JtYWwgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIFN1Ym5vcm1hbFxubGV0IGdlbl9ub3JtYWwgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIE5vcm1hbFxubGV0IGdlbl9pbmZpbml0ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgSW5maW5pdGVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuSW50XG5cbiAgICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBoYXNoLCBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEJhc2UuSW50XG5pbmNsdWRlIEJhc2UuSW50XG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLkludClcblxuKCogVGhpcyBpcyBhbHJlYWR5IGRlZmluZWQgYnkgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8sIGJ1dCBTaWduLm9mX2ludCBpc1xuICAgbW9yZSBkaXJlY3QuICopXG5sZXQgc2lnbiA9IFNpZ24ub2ZfaW50XG5cbnR5cGUgdCA9IGludCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludFxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkludF9pbnRmfVtCYXNlLkludF9pbnRmXX0uICopXG5cbm1vZHVsZSB0eXBlIFJvdW5kID0gQmFzZS5JbnQuUm91bmRcblxubW9kdWxlIHR5cGUgU3RhYmxlID0gc2lnXG4gIG1vZHVsZSBWMSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFN0YWJsZV9jb21wYXJhYmxlLldpdGhfc3RhYmxlX3dpdG5lc3MuVjEgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBIZXhhYmxlID0gc2lnXG4gIHR5cGUgdFxuXG4gIG1vZHVsZSBIZXggOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHRvX3N0cmluZ19odW0gOiA/ZGVsaW1pdGVyOmNoYXIgLT4gdCAtPiBzdHJpbmdcbiAgZW5kXG5cbiAgKCpfIEVuc3VyZSB0aGF0IHRoaXMgbW9kdWxlIGlzIGFuIGV4dGVuc2lvbiBvZiBbQmFzZS5JbnQuSGV4YWJsZV0uICopXG4gIGluY2x1ZGUgQmFzZS5JbnQuSGV4YWJsZSB3aXRoIHR5cGUgdCA6PSB0IGFuZCBtb2R1bGUgSGV4IDo9IEhleFxuZW5kXG5cbm1vZHVsZSB0eXBlIEV4dGVuc2lvbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG4gIGluY2x1ZGUgSGV4YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBRdWlja2NoZWNrYWJsZS5TX2ludCB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU191bmJvdW5kZWQgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLkludC5TX3VuYm91bmRlZFxuICBpbmNsdWRlIEV4dGVuc2lvbiB3aXRoIHR5cGUgdCA6PSB0IHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuSW50LlNcbiAgaW5jbHVkZSBFeHRlbnNpb24gd2l0aCB0eXBlIHQgOj0gdCB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIEV4dGVuc2lvbl93aXRoX3N0YWJsZSA9IHNpZ1xuICBpbmNsdWRlIEV4dGVuc2lvblxuXG4gIG1vZHVsZSBTdGFibGUgOlxuICAgIFN0YWJsZSB3aXRoIHR5cGUgVjEudCA9IHQgYW5kIHR5cGUgVjEuY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5JbnQzMilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuSW50MzJcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50MzIpXG5cbnR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMlxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50MzJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDMyXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMl9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludDY0KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5JbnQ2NFxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5JbnQ2NClcblxudHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2NFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50NjRcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0X2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkludDY0fVtCYXNlLkludDY0XX0uICopXG5cbigqKiB7MiBJbnRlcmZhY2UgZnJvbSBCYXNlfSAqKVxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkludDY0XG5lbmRcblxuKCoqIHsyIEV4dGVuc2lvbnN9ICopXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlXG4gIEludF9pbnRmLkV4dGVuc2lvbiB3aXRoIHR5cGUgdCA6PSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQmluIDogQmluYWJsZTAuUyB3aXRoIHR5cGUgdCA6PSBCYXNlLkludDYzLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEJpbl9lbXVsYXRlZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUwLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChJbnQ2NClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLlcud3JhcF9leG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLlcudW53cmFwXG4gICAgICAgIGVuZClcbiAgZW5kXG5cbiAgdHlwZSAnYSBiaW5hYmxlID0gKG1vZHVsZSBCaW5hYmxlMC5TIHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgbGV0IGJpbmFibGVfb2ZfcmVwciA6IHR5cGUgYSBiLiAoYSwgYikgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIudCAtPiBiIGJpbmFibGUgPSBmdW5jdGlvblxuICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50IC0+IChtb2R1bGUgSW50KVxuICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50NjQgLT4gKG1vZHVsZSBCaW5fZW11bGF0ZWQpXG4gIDs7XG5cbiAgbGV0IGJpbmFibGUgOiBCYXNlLkludDYzLnQgYmluYWJsZSA9IGJpbmFibGVfb2ZfcmVwciBCYXNlLkludDYzLlByaXZhdGUucmVwclxuXG4gIGluY2x1ZGUgKHZhbCBiaW5hYmxlKVxuXG4gIGxldCBiaW5fc2hhcGVfdCA9IEJpbl9wcm90LlNoYXBlLmJpbl9zaGFwZV9pbnQ2M1xuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50NjMudCBbQEBkZXJpdmluZyBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICAgIGluY2x1ZGUgQmluXG5cbiAgICAgIGluY2x1ZGUgKFxuICAgICAgICBCYXNlLkludDYzIDpcbiAgICAgICAgICBCYXNlLkNvbXBhcmFibGUuU1xuICAgICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBCYXNlLkludDYzLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuICAgICAgKCogVGhpcyBzZXJpYWxpemF0aW9uIGlzIHN0YWJsZSwgc2luY2UgaXQgZWl0aGVyIGRlbGVnYXRlcyB0byBbaW50XSBvclxuICAgICAgICAgW0ludDYzX2VtdWxdLiAqKVxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQpXG4gIGVuZFxuZW5kXG5cbigqIFRoaXMgW2luY2x1ZGUgc3RydWN0XSBpcyByZXF1aXJlZCBiZWNhdXNlIGl0IGxldHMgdXMgc2hhZG93IFt0XSB3aGVuIHdlIGluY2x1ZGVcbiAgIFtCYXNlLkludDYzXSBsYXRlciBvbi4gKilcbmluY2x1ZGUgc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjMudFxuZW5kXG5cbmxldCB0eXBlcmVwX29mX3QgPSB0eXBlcmVwX29mX2ludDYzXG5sZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX2ludDYzXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludDYzKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgQmluXG4gICAgZW5kKVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyYWJsZS5Db21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gQmFzZS5JbnQ2M1xuaW5jbHVkZSBCYXNlLkludDYzXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLkludDYzKVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2M1xubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M19pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M19sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMFxuXG4gICgqKiBbdG9faW50NjNdIGFuZCBbb2ZfaW50NjNfZXhuXSBlbmNvZGUgW3RdIGZvciB1c2UgaW4gd2lyZSBwcm90b2NvbHM7IHRoZXkgYXJlXG4gICAgICBpbnRlbmRlZCB0byBhdm9pZCBhbGxvY2F0aW9uIG9uIDY0LWJpdCBtYWNoaW5lcyBhbmQgc2hvdWxkIGJlIGltcGxlbWVudGVkXG4gICAgICBlZmZpY2llbnRseS4gIFtvZl9pbnQ2M19leG4gKHRvX2ludDYzIHQpID0gdF0gZm9yIGFsbCBbdF07IFtvZl9pbnQ2M19leG5dIHJhaXNlcyBmb3JcbiAgICAgIGlucHV0cyBub3QgcHJvZHVjZWQgYnkgW3RvX2ludDYzXS4gKilcbiAgdmFsIHRvX2ludDYzIDogdCAtPiBJbnQ2My50XG5cbiAgdmFsIG9mX2ludDYzX2V4biA6IEludDYzLnQgLT4gdFxuZW5kXG5cbm1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMFxuXG4gICAgdmFsIHRvX2ludDYzIDogdCAtPiBJbnQ2My50XG4gICAgdmFsIG9mX2ludDYzX2V4biA6IEludDYzLnQgLT4gdFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIFN0YWJsZV93aXRuZXNzLkV4cG9ydFxuXG4gIG9wZW4gQmFzZS5FeHBvcnRcbiAgb3BlbiBCaW5fcHJvdC5TdGRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgWyVleHBlY3Qge3wgODZiYTVkZjc0N2VlYzgzN2YwYjM5MWRkNDlmMzNmOWUgfH1dXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFYxLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBWMS5jb21wYXJhdG9yXG4gICAgbGV0IGJpbl9uYW1lID0gXCJ1bml0X3YyXCJcblxuICAgIGxldCBfX2Jpbl9yZWFkX3RfXyAoXyA6IEJpbl9wcm90LkNvbW1vbi5idWYpIH5wb3NfcmVmIChfIDogaW50KSA9XG4gICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIGJpbl9uYW1lICFwb3NfcmVmXG4gICAgOztcblxuICAgIGxldCBiaW5fcmVhZF90IChfIDogQmluX3Byb3QuQ29tbW9uLmJ1ZikgfnBvc19yZWY6KF8gOiBpbnQgcmVmKSA9ICgpXG5cbiAgICBsZXQgYmluX3JlYWRlcl90ID1cbiAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3NoYXBlX3QgPSBCaW5fcHJvdC5TaGFwZS4oYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIGJpbl9uYW1lKSkgW11cbiAgICBsZXQgYmluX3NpemVfdCAoKSA9IDBcbiAgICBsZXQgYmluX3dyaXRlX3QgKF8gOiBCaW5fcHJvdC5Db21tb24uYnVmKSB+cG9zICgpID0gcG9zXG4gICAgbGV0IGJpbl93cml0ZXJfdCA9IHsgQmluX3Byb3QuVHlwZV9jbGFzcy5zaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG5cbiAgICBsZXQgYmluX3QgPVxuICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNoYXBlID0gYmluX3NoYXBlX3RcbiAgICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90XG4gICAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdFxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICBbJWV4cGVjdCB7fCBmZmJkMWEzMDdhNGY3ZWJlODAyMzA0MGZlY2ViZjY5NyB8fV1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuVW5pdClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5Vbml0XG5cbnR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci51bml0XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bml0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci51bml0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWcgZW5kXG5cbnR5cGUgbSA9IChtb2R1bGUgUylcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgb3BlbiBTZXhwbGliLlN0ZFxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgbGF6eV90XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCA9IEJhc2UuTGF6eS5tYXBcbiAgICBsZXQgY29tcGFyZSA9IEJhc2UuTGF6eS5jb21wYXJlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2VfbWFzayA9IG1vZHVsZSB0eXBlIG9mIEJhc2UuTGF6eSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBTdGFibGUuVjEudFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSAoQmFzZS5MYXp5IDogQmFzZV9tYXNrKVxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLk5hdGl2ZWludClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBCYXNlLk5hdGl2ZWludFxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5OYXRpdmVpbnQpXG5cbnR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5uYXRpdmVpbnRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm5hdGl2ZWludFxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50X3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLk5vdGhpbmcudCA9IHxcblxuICAgIG1vZHVsZSBTaGFwZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9zaGFwZV1cbiAgICBlbmRcblxuICAgIGxldCB1bnJlYWNoYWJsZV9jb2RlID0gQmFzZS5Ob3RoaW5nLnVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgYmluX3NoYXBlX3QgPSBTaGFwZS5iaW5fc2hhcGVfdFxuICAgIGxldCB0cF9sb2MgPSBbJWhlcmVdLnBvc19mbmFtZSBeIFwiLlN0YWJsZS5WMS50XCJcbiAgICBsZXQgYWxsID0gW11cbiAgICBsZXQgaGFzaF9mb2xkX3QgXyB0ID0gdW5yZWFjaGFibGVfY29kZSB0XG4gICAgbGV0IGhhc2ggPSB1bnJlYWNoYWJsZV9jb2RlXG4gICAgbGV0IGNvbXBhcmUgYSBfID0gdW5yZWFjaGFibGVfY29kZSBhXG4gICAgbGV0IGJpbl9zaXplX3QgPSB1bnJlYWNoYWJsZV9jb2RlXG4gICAgbGV0IGJpbl93cml0ZV90IF9idWYgfnBvczpfIHQgPSB1bnJlYWNoYWJsZV9jb2RlIHRcbiAgICBsZXQgYmluX3dyaXRlcl90ID0geyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cblxuICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmIF8gPVxuICAgICAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSB0cF9sb2MgIXBvc19yZWZcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9yZWFkX3QgX2J1ZiB+cG9zX3JlZiA9XG4gICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfcmVhZF9lcnJvciAoRW1wdHlfdHlwZSB0cF9sb2MpICFwb3NfcmVmXG4gICAgOztcblxuICAgIGxldCBiaW5fcmVhZGVyX3QgPVxuICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gICAgOztcblxuICAgIGxldCBiaW5fdCA9XG4gICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID0gYmluX3dyaXRlcl90XG4gICAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdFxuICAgICAgOyBzaGFwZSA9IGJpbl9zaGFwZV90XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgPSB1bnJlYWNoYWJsZV9jb2RlXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gU2V4cGxpYi5Db252X2Vycm9yLmVtcHR5X3R5cGUgdHBfbG9jIHNleHBcbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIEJhc2UuTm90aGluZ1xuaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kIChCYXNlLk5vdGhpbmcpIChTdGFibGUuVjEpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSBuZXZlcl9yZXR1cm5zID0gTm90aGluZy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBuZXZlcl9yZXR1cm5zID0gTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gQmFzZS5PcmRlcmluZy50ID1cbiAgfCBMZXNzXG4gIHwgRXF1YWxcbiAgfCBHcmVhdGVyXG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbm1vZHVsZSB0eXBlIEJhc2VfbWFzayA9IG1vZHVsZSB0eXBlIG9mIEJhc2UuT3JkZXJpbmcgd2l0aCB0eXBlIHQgOj0gdFxuXG5pbmNsdWRlIChCYXNlLk9yZGVyaW5nIDogQmFzZV9tYXNrKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLlJlZlxuXG4gIGluY2x1ZGUgKFxuICBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuICBlbmQgOlxuICBzaWdcbiAgICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFBlcm1pc3Npb25lZCA9IHN0cnVjdFxuICBpbmNsdWRlIFRcblxuICB0eXBlICgnYSwgLSdwZXJtcykgdCA9ICdhIFQudCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgbGV0IHJlYWRfb25seSA9IEZuLmlkXG4gIGxldCBvZl9yZWYgPSBGbi5pZFxuICBsZXQgdG9fcmVmID0gRm4uaWRcbiAgbGV0IHNldCA9ICggOj0gKVxuICBsZXQgZ2V0ID0gKCAhIClcbmVuZFxuIiwiKCogV2UgZG9uJ3QganVzdCBpbmNsdWRlIFNleHBsaWIuU3RkIGJlY2F1c2Ugb25lIGNhbiBvbmx5IGRlZmluZSBIYXNodGJsIG9uY2UgaW4gdGhpc1xuICAgbW9kdWxlLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuKCoqIFtpbmNsdWRlXWQgZmlyc3Qgc28gdGhhdCBldmVyeXRoaW5nIGVsc2Ugc2hhZG93cyBpdCAqKVxuaW5jbHVkZSBDb3JlX3BlcnZhc2l2ZXNcblxuaW5jbHVkZSBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcbmluY2x1ZGUgRGVwcmVjYXRlX3BpcGVfYmFuZ1xuaW5jbHVkZSBFaXRoZXIuRXhwb3J0XG5pbmNsdWRlIEZyb21fc2V4cGxpYlxuaW5jbHVkZSBJbnRlcmZhY2VzXG5pbmNsdWRlIExpc3QuSW5maXhcbmluY2x1ZGUgTmV2ZXJfcmV0dXJuc1xuaW5jbHVkZSBPcmRlcmluZy5FeHBvcnRcbmluY2x1ZGUgUGVybXMuRXhwb3J0XG5pbmNsdWRlIFJlc3VsdC5FeHBvcnRcblxudHlwZSAtJ2EgcmV0dXJuID0gJ2EgV2l0aF9yZXR1cm4ucmV0dXJuID0gcHJpdmF0ZSB7IHJldHVybiA6ICdiLiAnYSAtPiAnYiB9IFtAQHVuYm94ZWRdXG5cblxuKCoqIFJhaXNlZCBpZiBtYWxsb2MgaW4gQyBiaW5kaW5ncyBmYWlsIChlcnJubyAqIHNpemUpLiAqKVxuZXhjZXB0aW9uIENfbWFsbG9jX2V4biBvZiBpbnQgKiBpbnRcblxuKCogZXJybm8sIHNpemUgKilcbmxldCAoKSA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcIkNfbWFsbG9jX2V4blwiIChDX21hbGxvY19leG4gKDAsIDApKVxuXG5leGNlcHRpb24gRmluYWxseSA9IEV4bi5GaW5hbGx5XG5cbmxldCBmc3QzICh4LCBfLCBfKSA9IHhcbmxldCBzbmQzIChfLCB5LCBfKSA9IHlcbmxldCB0cmQzIChfLCBfLCB6KSA9IHpcblxuKCoqIFtwaHlzX3NhbWVdIGlzIGxpa2UgW3BoeXNfZXF1YWxdLCBidXQgd2l0aCBhIG1vcmUgZ2VuZXJhbCB0eXBlLiAgW3BoeXNfc2FtZV0gaXMgdXNlZnVsXG4gICAgd2hlbiBkZWFsaW5nIHdpdGggZXhpc3RlbnRpYWwgdHlwZXMsIHdoZW4gb25lIGhhcyBhIHBhY2tlZCB2YWx1ZSBhbmQgYW4gdW5wYWNrZWQgdmFsdWVcbiAgICB0aGF0IG9uZSB3YW50cyB0byBjaGVjayBhcmUgcGh5c2ljYWxseSBlcXVhbC4gIE9uZSBjYW4ndCB1c2UgW3BoeXNfZXF1YWxdIGluIHN1Y2ggYVxuICAgIHNpdHVhdGlvbiBiZWNhdXNlIHRoZSB0eXBlcyBhcmUgZGlmZmVyZW50LiAqKVxuZXh0ZXJuYWwgcGh5c19zYW1lIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2JbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcVwiXG5cbmxldCAoICUgKSA9IEludC4oICUgKVxubGV0ICggLyUgKSA9IEludC4oIC8lIClcbmxldCAoIC8vICkgPSBJbnQuKCAvLyApXG5sZXQgKCA9PT4gKSBhIGIgPSAobm90IGEpIHx8IGJcbmxldCBicHJpbnRmID0gUHJpbnRmLmJwcmludGZcbmxldCBjb25zdCA9IEZuLmNvbnN0XG5sZXQgZXByaW50ZiA9IFByaW50Zi5lcHJpbnRmXG5sZXQgZXJyb3IgPSBPcl9lcnJvci5lcnJvclxubGV0IGVycm9yX3MgPSBPcl9lcnJvci5lcnJvcl9zXG5sZXQgZmFpbHdpdGhmID0gQmFzZS5QcmludGYuZmFpbHdpdGhmXG5sZXQgZmFpbHdpdGhzID0gRXJyb3IuZmFpbHdpdGhzXG5sZXQgZm9yY2UgPSBCYXNlLkxhenkuZm9yY2VcbmxldCBmcHJpbnRmID0gUHJpbnRmLmZwcmludGZcbmxldCBpbnZhbGlkX2FyZ2YgPSBCYXNlLlByaW50Zi5pbnZhbGlkX2FyZ2ZcbmxldCBpZnByaW50ZiA9IFByaW50Zi5pZnByaW50ZlxubGV0IGlzX25vbmUgPSBPcHRpb24uaXNfbm9uZVxubGV0IGlzX3NvbWUgPSBPcHRpb24uaXNfc29tZVxubGV0IGtzcHJpbnRmID0gUHJpbnRmLmtzcHJpbnRmXG5sZXQgb2tfZXhuID0gT3JfZXJyb3Iub2tfZXhuXG5sZXQgcGh5c19lcXVhbCA9IEJhc2UucGh5c19lcXVhbFxubGV0IHByaW50X3MgPSBTdGRpby5wcmludF9zXG5sZXQgZXByaW50X3MgPSBTdGRpby5lcHJpbnRfc1xubGV0IHByaW50ZiA9IFByaW50Zi5wcmludGZcbmxldCBwcm90ZWN0ID0gRXhuLnByb3RlY3RcbmxldCBwcm90ZWN0eCA9IEV4bi5wcm90ZWN0eFxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5sZXQgcm91bmQgPSBGbG9hdC5yb3VuZFxubGV0ICggKiouICkgPSBCYXNlLiggKiouIClcbmxldCAoICUuICkgPSBCYXNlLiggJS4gKVxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5sZXQgc3RhZ2UgPSBTdGFnZWQuc3RhZ2VcbmxldCB1bnN0YWdlID0gU3RhZ2VkLnVuc3RhZ2VcbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5sZXQgd2l0aF9yZXR1cm5fb3B0aW9uID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5fb3B0aW9uXG5cbigqIFdpdGggdGhlIGZvbGxvd2luZyBhbGlhc2VzLCB3ZSBhcmUganVzdCBtYWtpbmcgZXh0cmEgc3VyZSB0aGF0IHRoZSB0b3BsZXZlbCBzZXhwXG4gICBjb252ZXJ0ZXJzIGxpbmUgdXAgd2l0aCB0aGUgb25lcyBpbiBvdXIgbW9kdWxlcy4gKilcblxuXG5pbmNsdWRlIFR5cGVyZXBfbGliLlN0ZF9pbnRlcm5hbFxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICAoKiBbZGVyaXZpbmcgaGFzaF0gaXMgbWlzc2luZyBmb3IgW2FycmF5XSwgW2J5dGVzXSwgYW5kIFtyZWZdIHNpbmNlIHRoZXNlIHR5cGVzIGFyZVxuICAgICBtdXRhYmxlLiAqKVxuICB0eXBlICdhIGFycmF5ID0gJ2EgQXJyYXkudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJvb2wgPSBCb29sLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBjaGFyID0gQ2hhci50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgZmxvYXQgPSBGbG9hdC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50ID0gSW50LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQzMiA9IEludDMyLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQ2NCA9IEludDY0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBsYXp5X3QgPSAnYSBMYXp5LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBsaXN0ID0gJ2EgTGlzdC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgbmF0aXZlaW50ID0gTmF0aXZlaW50LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBvcHRpb24gPSAnYSBPcHRpb24udFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHN0cmluZyA9IFN0cmluZy50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgYnl0ZXMgPSBCeXRlcy50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgcmVmID0gJ2EgUmVmLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSB1bml0ID0gVW5pdC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gICgqIEJpbl9wcm90IGhhcyBvcHRpbWl6ZWQgZnVuY3Rpb25zIGZvciBmbG9hdCBhcnJheXMgKilcbiAgaW5jbHVkZSBzdHJ1Y3RcbiAgICB0eXBlIGZsb2F0X2FycmF5ID0gZmxvYXQgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICBlbmQgW0BhbGVydCBcIi1kZXByZWNhdGVkXCJdXG5cbiAgaW5jbHVkZSAoXG4gIHN0cnVjdFxuICAgIHR5cGUgZmxvYXRfYXJyYXkgPSBGbG9hdC50IGFycmF5IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgZW5kIDpcbiAgc2lnXG4gICAgdHlwZSBmbG9hdF9hcnJheSBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIGVuZFxuICB3aXRoIHR5cGUgZmxvYXRfYXJyYXkgOj0gZmxvYXRfYXJyYXkpXG5lbmQgOlxuc2lnXG4gIHR5cGUgJ2EgYXJyYXlcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBib29sXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgY2hhclxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGZsb2F0XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50MzJcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQ2NFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIGxhenlfdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIGxpc3RcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBuYXRpdmVpbnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBvcHRpb25cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBzdHJpbmdcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBieXRlc1xuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIHJlZlxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHVuaXRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5lbmRcbndpdGggdHlwZSAnYSBhcnJheSA6PSAnYSBhcnJheVxud2l0aCB0eXBlIGJvb2wgOj0gYm9vbFxud2l0aCB0eXBlIGNoYXIgOj0gY2hhclxud2l0aCB0eXBlIGZsb2F0IDo9IGZsb2F0XG53aXRoIHR5cGUgaW50IDo9IGludFxud2l0aCB0eXBlIGludDMyIDo9IGludDMyXG53aXRoIHR5cGUgaW50NjQgOj0gaW50NjRcbndpdGggdHlwZSAnYSBsaXN0IDo9ICdhIGxpc3RcbndpdGggdHlwZSBuYXRpdmVpbnQgOj0gbmF0aXZlaW50XG53aXRoIHR5cGUgJ2Egb3B0aW9uIDo9ICdhIG9wdGlvblxud2l0aCB0eXBlIHN0cmluZyA6PSBzdHJpbmdcbndpdGggdHlwZSBieXRlcyA6PSBieXRlc1xud2l0aCB0eXBlICdhIGxhenlfdCA6PSAnYSBsYXp5X3RcbndpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmXG53aXRoIHR5cGUgdW5pdCA6PSB1bml0KVxuXG5sZXQgc2V4cF9vZl9leG4gPSBFeG4uc2V4cF9vZl90XG5cblxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxubW9kdWxlIFJlcHIgPSBJbnQ2M1xuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl0gW0BAaW1tZWRpYXRlNjRdXG5cbiAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIHZhbCBvZl9yZXByIDogUmVwci50IC0+IHRcbiAgdmFsIHRvX3JlcHIgOiB0IC0+IFJlcHIudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IFJlcHIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gIGxldCBvZl9yZXByID0gRm4uaWRcbiAgbGV0IHRvX3JlcHIgPSBGbi5pZFxuXG4gIGxldCB0b19zdHJpbmcgbiA9XG4gICAgbGV0IG9wZW4gUmVwciBpblxuICAgIGxldCBraWIgPSBvZl9pbnQgMTAyNCBpblxuICAgIGxldCBtaWIgPSBraWIgKiBraWIgaW5cbiAgICBsZXQgZ2liID0ga2liICogbWliIGluXG4gICAgbGV0IG5fYWJzID0gYWJzIG4gaW5cbiAgICBpZiBuX2FicyA8IGtpYlxuICAgIHRoZW4gc3ByaW50ZiBcIiVkQlwiICh0b19pbnRfZXhuIG4pXG4gICAgZWxzZSBpZiBuX2FicyA8IG1pYlxuICAgIHRoZW4gc3ByaW50ZiBcIiVnS1wiICh0b19mbG9hdCBuIC8uIHRvX2Zsb2F0IGtpYilcbiAgICBlbHNlIGlmIG5fYWJzIDwgZ2liXG4gICAgdGhlbiBzcHJpbnRmIFwiJWdNXCIgKHRvX2Zsb2F0IG4gLy4gdG9fZmxvYXQgbWliKVxuICAgIGVsc2Ugc3ByaW50ZiBcIiVnR1wiICh0b19mbG9hdCBuIC8uIHRvX2Zsb2F0IGdpYilcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IG4gPSBTZXhwLkF0b20gKHRvX3N0cmluZyBuKVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgYnl0ZXNfaW50X2V4biB0ID0gUmVwci50b19pbnRfZXhuICh0b19yZXByIHQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIEJpZ2FycmF5XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlX2JpZ3N0cmluZ1xuXG4gICAgbW9kdWxlIFogOiBzaWdcbiAgICAgIHR5cGUgdCA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYmlnc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgKCogYmlnc3RyaW5nJ3Mgc2VyaWFsaXphdGlvbiBpcyBpbnRlbmRlZCB0byBiZSBzdGFibGUuICBXZSBhc3NlcnQgaXQgaGVyZSByYXRoZXJcbiAgICAgICAgIHRoYW4gYXNzZXJ0aW5nIGl0IGluIHR3byBzZXBhcmF0ZSBwbGFjZXMgZm9yIHRoZSBiaW5faW8gYW5kIHNleHAgZGVmaW5pdGlvbnMuICopXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFpcblxuICAgIHR5cGUgdF9mcm96ZW4gPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUID0gU3RhYmxlLlYxXG5pbmNsdWRlIFRcbm1vZHVsZSBVbnN0YWJsZSA9IFRcblxubGV0IGNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djIHNpemUgPVxuICBsZXQgbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzID1cbiAgICBPcHRpb24ubWFwIG1heF9tZW1fd2FpdGluZ19nYyB+ZjpCeXRlX3VuaXRzMC5ieXRlc19pbnRfZXhuXG4gIGluXG4gIGNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIHNpemVcbjs7XG5cbmxldCBzdWJfc2hhcmVkID8ocG9zID0gMCkgP2xlbiAoYnN0ciA6IHQpID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIGJzdHIgfnBvcyBsZW4gaW5cbiAgQXJyYXkxLnN1YiBic3RyIHBvcyBsZW5cbjs7XG5cbigqIERlc3RydWN0aW9uICopXG5cbmV4dGVybmFsIHVuc2FmZV9kZXN0cm95IDogdCAtPiB1bml0ID0gXCJiaWdzdHJpbmdfZGVzdHJveV9zdHViXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2Rlc3Ryb3lfYW5kX3Jlc2l6ZSA6IHQgLT4gbGVuOmludCAtPiB0ID0gXCJiaWdzdHJpbmdfcmVhbGxvY1wiXG5cbigqIFJlYWRpbmcgLyB3cml0aW5nIGJpbi1wcm90ICopXG5cbmxldCByZWFkX2Jpbl9wcm90X3ZlcmJvc2VfZXJyb3JzIHQgPyhwb3MgPSAwKSA/bGVuIHJlYWRlciA9XG4gIGxldCBsZW4gPSBnZXRfb3B0X2xlbiB0IGxlbiB+cG9zIGluXG4gIGxldCBsaW1pdCA9IHBvcyArIGxlbiBpblxuICBjaGVja19hcmdzIH5sb2M6XCJyZWFkX2Jpbl9wcm90X3ZlcmJvc2VfZXJyb3JzXCIgdCB+cG9zIH5sZW47XG4gIGxldCBpbnZhbGlkX2RhdGEgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gICAgYEludmFsaWRfZGF0YSAoRXJyb3IuY3JlYXRlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG4gIGluXG4gIGxldCByZWFkIGJpbl9yZWFkZXIgfnBvcyB+bGVuID1cbiAgICBpZiBsZW4gPiBsaW1pdCAtIHBvc1xuICAgIHRoZW4gYE5vdF9lbm91Z2hfZGF0YVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHBvc19yZWYgPSByZWYgcG9zIGluXG4gICAgICBtYXRjaFxuICAgICAgICB0cnkgYE9rIChiaW5fcmVhZGVyIHQgfnBvc19yZWYpIHdpdGhcbiAgICAgICAgfCBleG4gLT4gYEludmFsaWRfZGF0YSAoRXJyb3Iub2ZfZXhuIGV4bilcbiAgICAgIHdpdGhcbiAgICAgIHwgYEludmFsaWRfZGF0YSBfIGFzIHggLT4geFxuICAgICAgfCBgT2sgcmVzdWx0IC0+XG4gICAgICAgIGxldCBleHBlY3RlZF9wb3MgPSBwb3MgKyBsZW4gaW5cbiAgICAgICAgaWYgIXBvc19yZWYgPSBleHBlY3RlZF9wb3NcbiAgICAgICAgdGhlbiBgT2sgKHJlc3VsdCwgZXhwZWN0ZWRfcG9zKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW52YWxpZF9kYXRhXG4gICAgICAgICAgICBcInBvc19yZWYgPD4gZXhwZWN0ZWRfcG9zXCJcbiAgICAgICAgICAgICghcG9zX3JlZiwgZXhwZWN0ZWRfcG9zKVxuICAgICAgICAgICAgWyVzZXhwX29mOiBpbnQgKiBpbnRdKVxuICBpblxuICBtYXRjaFxuICAgIHJlYWQgQmluX3Byb3QuVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgfnBvcyB+bGVuOkJpbl9wcm90LlV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aFxuICB3aXRoXG4gIHwgKGBOb3RfZW5vdWdoX2RhdGEgfCBgSW52YWxpZF9kYXRhIF8pIGFzIHggLT4geFxuICB8IGBPayAoZWxlbWVudF9sZW5ndGgsIHBvcykgLT5cbiAgICBpZiBlbGVtZW50X2xlbmd0aCA8IDBcbiAgICB0aGVuIGludmFsaWRfZGF0YSBcIm5lZ2F0aXZlIGVsZW1lbnQgbGVuZ3RoICVkXCIgZWxlbWVudF9sZW5ndGggWyVzZXhwX29mOiBpbnRdXG4gICAgZWxzZSByZWFkIHJlYWRlci5CaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgfnBvcyB+bGVuOmVsZW1lbnRfbGVuZ3RoXG47O1xuXG5sZXQgcmVhZF9iaW5fcHJvdCB0ID9wb3MgP2xlbiByZWFkZXIgPVxuICBtYXRjaCByZWFkX2Jpbl9wcm90X3ZlcmJvc2VfZXJyb3JzIHQgP3BvcyA/bGVuIHJlYWRlciB3aXRoXG4gIHwgYE9rIHggLT4gT2sgeFxuICB8IGBJbnZhbGlkX2RhdGEgZSAtPiBFcnJvciAoRXJyb3IudGFnIGUgfnRhZzpcIkludmFsaWQgZGF0YVwiKVxuICB8IGBOb3RfZW5vdWdoX2RhdGEgLT4gT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwibm90IGVub3VnaCBkYXRhXCJcbjs7XG5cbmxldCB3cml0ZV9iaW5fcHJvdF9rbm93bl9zaXplIHQgPyhwb3MgPSAwKSB3cml0ZSB+c2l6ZTpkYXRhX2xlbiB2ID1cbiAgbGV0IHRvdGFsX2xlbiA9IGRhdGFfbGVuICsgQmluX3Byb3QuVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gIGlmIHBvcyA8IDBcbiAgdGhlblxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQmlnc3RyaW5nLndyaXRlX2Jpbl9wcm90OiBuZWdhdGl2ZSBwb3NcIiBwb3MgWyVzZXhwX29mOiBpbnRdO1xuICBpZiBwb3MgKyB0b3RhbF9sZW4gPiBsZW5ndGggdFxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIkJpZ3N0cmluZy53cml0ZV9iaW5fcHJvdDogbm90IGVub3VnaCByb29tXCJcbiAgICAgIChgcG9zIHBvcywgYHBvc19hZnRlcl93cml0aW5nIChwb3MgKyB0b3RhbF9sZW4pLCBgYmlnc3RyaW5nX2xlbmd0aCAobGVuZ3RoIHQpKVxuICAgICAgWyVzZXhwX29mOlxuICAgICAgICBbIGBwb3Mgb2YgaW50IF0gKiBbIGBwb3NfYWZ0ZXJfd3JpdGluZyBvZiBpbnQgXSAqIFsgYGJpZ3N0cmluZ19sZW5ndGggb2YgaW50IF1dO1xuICBsZXQgcG9zX2FmdGVyX3NpemVfaGVhZGVyID0gQmluX3Byb3QuVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIHQgfnBvcyBkYXRhX2xlbiBpblxuICBsZXQgcG9zX2FmdGVyX2RhdGEgPSB3cml0ZSB0IH5wb3M6cG9zX2FmdGVyX3NpemVfaGVhZGVyIHYgaW5cbiAgaWYgcG9zX2FmdGVyX2RhdGEgLSBwb3MgPD4gdG90YWxfbGVuXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiQmlnc3RyaW5nLndyaXRlX2Jpbl9wcm90IGJ1ZyFcIlxuICAgICAgKCBgcG9zX2FmdGVyX2RhdGEgcG9zX2FmdGVyX2RhdGFcbiAgICAgICwgYHN0YXJ0X3BvcyBwb3NcbiAgICAgICwgYGJpbl9wcm90X3NpemVfaGVhZGVyX2xlbmd0aCBCaW5fcHJvdC5VdGlscy5zaXplX2hlYWRlcl9sZW5ndGhcbiAgICAgICwgYGRhdGFfbGVuIGRhdGFfbGVuXG4gICAgICAsIGB0b3RhbF9sZW4gdG90YWxfbGVuIClcbiAgICAgIFslc2V4cF9vZjpcbiAgICAgICAgWyBgcG9zX2FmdGVyX2RhdGEgb2YgaW50IF1cbiAgICAgICAgKiBbIGBzdGFydF9wb3Mgb2YgaW50IF1cbiAgICAgICAgKiBbIGBiaW5fcHJvdF9zaXplX2hlYWRlcl9sZW5ndGggb2YgaW50IF1cbiAgICAgICAgKiBbIGBkYXRhX2xlbiBvZiBpbnQgXVxuICAgICAgICAqIFsgYHRvdGFsX2xlbiBvZiBpbnQgXV07XG4gIHBvc19hZnRlcl9kYXRhXG47O1xuXG5sZXQgd3JpdGVfYmluX3Byb3QgdCA/cG9zICh3cml0ZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyKSB2ID1cbiAgbGV0IHNpemUgPSB3cml0ZXIuc2l6ZSB2IGluXG4gIHdyaXRlX2Jpbl9wcm90X2tub3duX3NpemUgdCA/cG9zIHdyaXRlci53cml0ZSB+c2l6ZSB2XG47O1xuXG4oKiBIZXggZHVtcCAqKVxuXG5pbmNsdWRlIEhleGR1bXAuT2ZfaW5kZXhhYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgZW5kKVxuXG5sZXQgcmVjIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1ZiB+bWluX3BvcyB+cG9zIH5jaGFyID1cbiAgbGV0IHBvcycgPSBwb3MgLSAxIGluXG4gIGlmIHBvcycgPj0gbWluX3BvcyAmJiBDaGFyLiggPSApIChnZXQgYnVmIHBvcycpIGNoYXJcbiAgdGhlbiBsYXN0X25vbm1hdGNoX3BsdXNfb25lIH5idWYgfm1pbl9wb3MgfnBvczpwb3MnIH5jaGFyXG4gIGVsc2UgcG9zXG47O1xuXG5sZXQgZ2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiAoKSA9XG4gIGxldCBkYXRhX2VuZCA9XG4gICAgbGFzdF9ub25tYXRjaF9wbHVzX29uZSB+YnVmOnQgfm1pbl9wb3M6cG9zIH5wb3M6KHBvcyArIGxlbikgfmNoYXI6cGFkZGluZ1xuICBpblxuICB0b19zdHJpbmcgdCB+cG9zIH5sZW46KGRhdGFfZW5kIC0gcG9zKVxuOztcblxubGV0IGdldF90YWlsX3BhZGRlZF9maXhlZF9zdHJpbmdfbG9jYWwgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKCkgPVxuICBcbiAgICAobGV0IGRhdGFfZW5kID1cbiAgICAgICBsYXN0X25vbm1hdGNoX3BsdXNfb25lIH5idWY6dCB+bWluX3Bvczpwb3MgfnBvczoocG9zICsgbGVuKSB+Y2hhcjpwYWRkaW5nXG4gICAgIGluXG4gICAgIGxldCBsZW4gPSBkYXRhX2VuZCAtIHBvcyBpblxuICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlX2xvY2FsIGxlbiBpblxuICAgICBUb19ieXRlcy5ibGl0IH5zcmM6dCB+c3JjX3Bvczpwb3MgfmRzdCB+ZHN0X3BvczowIH5sZW47XG4gICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuOztcblxubGV0W0Bjb2xkXSBzZXRfcGFkZGVkX2ZpeGVkX3N0cmluZ19mYWlsZWQgfmhlYWRfb3JfdGFpbCB+dmFsdWUgfmxlbiA9XG4gIFByaW50Zi5mYWlsd2l0aGZcbiAgICBcIkJpZ3N0cmluZy5zZXRfJXNfcGFkZGVkX2ZpeGVkX3N0cmluZzogJVMgaXMgbG9uZ2VyIHRoYW4gJWRcIlxuICAgIGhlYWRfb3JfdGFpbFxuICAgIChbJWdsb2JhbGl6ZTogc3RyaW5nXSB2YWx1ZSlcbiAgICBsZW5cbiAgICAoKVxuOztcblxubGV0IHNldF90YWlsX3BhZGRlZF9maXhlZF9zdHJpbmcgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKHZhbHVlIFtAbG9jYWxdKSA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCB2YWx1ZSBpblxuICBpZiBzbGVuID4gbGVuIHRoZW4gc2V0X3BhZGRlZF9maXhlZF9zdHJpbmdfZmFpbGVkIH5oZWFkX29yX3RhaWw6XCJ0YWlsXCIgfnZhbHVlIH5sZW47XG4gIEZyb21fc3RyaW5nLmJsaXQgfnNyYzp2YWx1ZSB+ZHN0OnQgfnNyY19wb3M6MCB+ZHN0X3Bvczpwb3MgfmxlbjpzbGVuO1xuICBmb3IgaSA9IHBvcyArIHNsZW4gdG8gcG9zICsgbGVuIC0gMSBkb1xuICAgIHNldCB0IGkgcGFkZGluZ1xuICBkb25lXG47O1xuXG5sZXQgcmVjIGZpcnN0X25vbm1hdGNoIH5idWYgfnBvcyB+bWF4X3BvcyB+Y2hhciA9XG4gIGlmIHBvcyA8PSBtYXhfcG9zICYmIENoYXIuKCA9ICkgKGdldCBidWYgcG9zKSBjaGFyXG4gIHRoZW4gZmlyc3Rfbm9ubWF0Y2ggfmJ1ZiB+cG9zOihJbnQuc3VjYyBwb3MpIH5tYXhfcG9zIH5jaGFyXG4gIGVsc2UgcG9zXG47O1xuXG5sZXQgc2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiAodmFsdWUgW0Bsb2NhbF0pID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHZhbHVlIGluXG4gIGlmIHNsZW4gPiBsZW4gdGhlbiBzZXRfcGFkZGVkX2ZpeGVkX3N0cmluZ19mYWlsZWQgfmhlYWRfb3JfdGFpbDpcImhlYWRcIiB+dmFsdWUgfmxlbjtcbiAgRnJvbV9zdHJpbmcuYmxpdCB+c3JjOnZhbHVlIH5kc3Q6dCB+c3JjX3BvczowIH5kc3RfcG9zOihwb3MgKyBsZW4gLSBzbGVuKSB+bGVuOnNsZW47XG4gIGZvciBpID0gcG9zIHRvIHBvcyArIGxlbiAtIHNsZW4gLSAxIGRvXG4gICAgc2V0IHQgaSBwYWRkaW5nXG4gIGRvbmVcbjs7XG5cbmxldCBnZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuICgpID1cbiAgbGV0IGRhdGFfYmVnaW4gPSBmaXJzdF9ub25tYXRjaCB+YnVmOnQgfnBvcyB+bWF4X3BvczoocG9zICsgbGVuIC0gMSkgfmNoYXI6cGFkZGluZyBpblxuICB0b19zdHJpbmcgdCB+cG9zOmRhdGFfYmVnaW4gfmxlbjoobGVuIC0gKGRhdGFfYmVnaW4gLSBwb3MpKVxuOztcblxubGV0IGdldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmdfbG9jYWwgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKCkgPVxuICBcbiAgICAobGV0IGRhdGFfYmVnaW4gPSBmaXJzdF9ub25tYXRjaCB+YnVmOnQgfnBvcyB+bWF4X3BvczoocG9zICsgbGVuIC0gMSkgfmNoYXI6cGFkZGluZyBpblxuICAgICBsZXQgbGVuID0gbGVuIC0gKGRhdGFfYmVnaW4gLSBwb3MpIGluXG4gICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGVfbG9jYWwgbGVuIGluXG4gICAgIFRvX2J5dGVzLmJsaXQgfnNyYzp0IH5zcmNfcG9zOmRhdGFfYmVnaW4gfmRzdCB+ZHN0X3BvczowIH5sZW47XG4gICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5iaWdzdHJpbmdcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmJpZ3N0cmluZ1xubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuYmlnc3RyaW5nXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluX3Byb3RcblxubW9kdWxlIFdyaXRlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgeyBzaXplIDogJ2EgU2l6ZS5zaXplclxuICAgIDsgd3JpdGUgOiAnYSBXcml0ZS53cml0ZXJcbiAgICB9XG5cbiAgbGV0IHRvX3N0cmluZyB0IHYgPVxuICAgIGxldCBsZW4gPSB0LnNpemUgdiBpblxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcuY3JlYXRlIGxlbiBpblxuICAgIGxldCBwb3MgPSB0LndyaXRlIGJ1ZiB+cG9zOjAgdiBpblxuICAgIGFzc2VydCAocG9zID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIGxldCBzdHIgPSBCaWdzdHJpbmcudG9fc3RyaW5nIGJ1ZiBpblxuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgc3RyXG4gIDs7XG5cbiAgbGV0IHRvX2J5dGVzIHQgdiA9XG4gICAgbGV0IGxlbiA9IHQuc2l6ZSB2IGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHBvcyA9IHQud3JpdGUgYnVmIH5wb3M6MCB2IGluXG4gICAgYXNzZXJ0IChwb3MgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgbGV0IHN0ciA9IEJpZ3N0cmluZy50b19ieXRlcyBidWYgaW5cbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmO1xuICAgIHN0clxuICA7O1xuZW5kXG5cbm1vZHVsZSBSZWFkZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIgPVxuICAgIHsgcmVhZCA6ICdhIFJlYWQucmVhZGVyXG4gICAgOyB2dGFnX3JlYWQgOiAoaW50IC0+ICdhKSBSZWFkLnJlYWRlclxuICAgIH1cblxuICBsZXQgb2Zfc3RyaW5nIHQgc3RyaW5nID1cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLm9mX3N0cmluZyBzdHJpbmcgaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IHYgPSB0LnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgYXNzZXJ0ICghcG9zX3JlZiA9IEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmO1xuICAgIHZcbiAgOztcblxuICBsZXQgb2ZfYnl0ZXMgdCBieXRlcyA9XG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5vZl9ieXRlcyBieXRlcyBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgdiA9IHQucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBhc3NlcnQgKCFwb3NfcmVmID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgdlxuICA7O1xuZW5kXG4iLCJtb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEJpbl9wcm90Lk1kNVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IHQgfD4gdG9faGV4IHw+IFN0cmluZy5zZXhwX29mX3RcbiAgbGV0IHRfb2Zfc2V4cCBzID0gcyB8PiBTdHJpbmcudF9vZl9zZXhwIHw+IG9mX2hleF9leG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuZW5kXG5cbmxldCBoYXNoX2ZvbGRfdCBhY2N1bSB0ID0gU3RyaW5nLmhhc2hfZm9sZF90IGFjY3VtIChULnRvX2JpbmFyeSB0KVxubGV0IGhhc2ggdCA9IFN0cmluZy5oYXNoIChULnRvX2JpbmFyeSB0KVxuXG5tb2R1bGUgQXNfYmluYXJ5X3N0cmluZyA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgbGV0IGhhc2hfZm9sZF90ID0gaGFzaF9mb2xkX3RcbiAgICAgIGxldCBoYXNoID0gaGFzaFxuICAgICAgbGV0IHNleHBfb2ZfdCB4ID0gU3RyaW5nLnNleHBfb2ZfdCAoVC50b19iaW5hcnkgeClcbiAgICAgIGxldCB0X29mX3NleHAgeCA9IFQub2ZfYmluYXJ5X2V4biAoU3RyaW5nLnRfb2Zfc2V4cCB4KVxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICAgICAgbGV0IHRvX2JpbmFibGUgPSBULnRvX2JpbmFyeVxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBULm9mX2JpbmFyeV9leG5cblxuICAgICAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICAgICAgICBtb2R1bGUgQmluYWJsZSA9IFN0cmluZy5TdGFibGUuVjFcblxuICAgICAgICAgIHR5cGUgdCA9IEJpbl9wcm90Lk1kNS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdHJpbmcuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgb2ZfYmluYWJsZVxuICAgICAgICAgIHRvX2JpbmFibGVcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChTdGFibGUuVjEpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU3RhYmxlLlYxKVxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCBoYXNoX2ZvbGRfdCA9IGhhc2hfZm9sZF90XG4gICAgbGV0IGhhc2ggPSBoYXNoXG4gICAgbGV0IHRvX2JpbmFibGUgPSBGbi5pZFxuICAgIGxldCBvZl9iaW5hYmxlID0gRm4uaWRcblxuICAgIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluX3Byb3QuTWQ1LlN0YWJsZS5WMVxuXG4gICAgICAgIHR5cGUgdCA9IEJpbl9wcm90Lk1kNS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgZW5kKVxuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICBCaW5fcHJvdC5NZDUuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzXG4gICAgICAgIG9mX2JpbmFibGVcbiAgICAgICAgdG9fYmluYWJsZVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBkaWdlc3Rfc3RyaW5nIHMgPSBNZDVfbGliLnN0cmluZyBzXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChTdGFibGUuVjEpXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFN0YWJsZS5WMSlcblxubGV0IGRpZ2VzdF9udW1fYnl0ZXMgPSAxNlxubGV0IHRvX2hleCA9IFQudG9faGV4XG5sZXQgZnJvbV9oZXggPSBULm9mX2hleF9leG5cbmxldCBvZl9oZXhfZXhuID0gVC5vZl9oZXhfZXhuXG5sZXQgb2ZfYmluYXJ5X2V4biA9IFQub2ZfYmluYXJ5X2V4blxubGV0IHRvX2JpbmFyeSA9IFQudG9fYmluYXJ5XG5sZXQgZGlnZXN0X3N0cmluZyA9IFN0YWJsZS5kaWdlc3Rfc3RyaW5nXG5sZXQgZGlnZXN0X2J5dGVzID0gTWQ1X2xpYi5ieXRlc1xuXG5leHRlcm5hbCBjYW1sX3N5c19vcGVuXG4gIDogIHN0cmluZ1xuICAtPiBTdGRsaWIub3Blbl9mbGFnIGxpc3RcbiAgLT4gcGVybTppbnRcbiAgLT4gaW50XG4gID0gXCJjYW1sX3N5c19vcGVuXCJcblxuZXh0ZXJuYWwgY2FtbF9zeXNfY2xvc2UgOiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9zeXNfY2xvc2VcIlxuZXh0ZXJuYWwgZGlnZXN0X2ZkX2Jsb2NraW5nIDogaW50IC0+IHN0cmluZyA9IFwiY29yZV9tZDVfZmRcIlxuXG5sZXQgZGlnZXN0X2ZpbGVfYmxvY2tpbmcgcGF0aCA9XG4gIG9mX2JpbmFyeV9leG5cbiAgICAoQmFzZS5FeG4ucHJvdGVjdHhcbiAgICAgICAoY2FtbF9zeXNfb3BlbiBwYXRoIFsgT3Blbl9yZG9ubHk7IE9wZW5fYmluYXJ5IF0gfnBlcm06MG8wMDApXG4gICAgICAgfmY6ZGlnZXN0X2ZkX2Jsb2NraW5nXG4gICAgICAgfmZpbmFsbHk6Y2FtbF9zeXNfY2xvc2UpXG47O1xuXG5sZXQgZmlsZSA9IGRpZ2VzdF9maWxlX2Jsb2NraW5nXG5cbmxldCBkaWdlc3RfY2hhbm5lbF9ibG9ja2luZ193aXRob3V0X3JlbGVhc2luZ19ydW50aW1lX2xvY2sgY2hhbm5lbCB+bGVuID1cbiAgb2ZfYmluYXJ5X2V4biAoU3RkbGliLkRpZ2VzdC5jaGFubmVsIGNoYW5uZWwgbGVuKVxuOztcblxubGV0IGNoYW5uZWwgY2hhbm5lbCBsZW4gPVxuICBkaWdlc3RfY2hhbm5lbF9ibG9ja2luZ193aXRob3V0X3JlbGVhc2luZ19ydW50aW1lX2xvY2sgY2hhbm5lbCB+bGVuXG47O1xuXG5sZXQgb3V0cHV0X2Jsb2NraW5nIHQgb2MgPSBTdGRsaWIuRGlnZXN0Lm91dHB1dCBvYyAodG9fYmluYXJ5IHQpXG5sZXQgb3V0cHV0IG9jIHQgPSBvdXRwdXRfYmxvY2tpbmcgdCBvY1xubGV0IGlucHV0X2Jsb2NraW5nIGljID0gb2ZfYmluYXJ5X2V4biAoU3RkbGliLkRpZ2VzdC5pbnB1dCBpYylcbmxldCBpbnB1dCA9IGlucHV0X2Jsb2NraW5nXG5sZXQgZGlnZXN0X3N1YmJ5dGVzID0gTWQ1X2xpYi5zdWJieXRlc1xubGV0IHN0cmluZyA9IGRpZ2VzdF9zdHJpbmdcbmxldCBieXRlcyA9IGRpZ2VzdF9ieXRlc1xubGV0IHN1YmJ5dGVzIHMgcG9zIGxlbiA9IGRpZ2VzdF9zdWJieXRlcyBzIH5wb3MgfmxlblxuXG5sZXQgZGlnZXN0X2Jpbl9wcm90IHdyaXRlciB2YWx1ZSA9XG4gIGRpZ2VzdF9zdHJpbmcgKENvcmVfYmluX3Byb3QuV3JpdGVyLnRvX3N0cmluZyB3cml0ZXIgdmFsdWUpXG47O1xuXG5leHRlcm5hbCBjX2RpZ2VzdF9zdWJiaWdzdHJpbmdcbiAgOiAgQmlnc3RyaW5nLnRcbiAgLT4gcG9zOmludFxuICAtPiBsZW46aW50XG4gIC0+IHJlczpCeXRlcy50XG4gIC0+IHVuaXRcbiAgPSBcImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmdcIlxuXG5sZXQgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiA9XG4gICgqIEl0J3MgbW9yZSBlZmZpY2llbnQgdG8gYWxsb2NhdGUgdGhlIHJlc3VsdCBvbiB0aGUgT0NhbWwgc2lkZSBhbmQgZGVjbGFyZSB0aGUgQ1xuICAgICBmdW5jdGlvbiBhcyBub2FsbG9jIHRoYW4gdG8gbGV0IHRoZSBDIGZ1bmN0aW9uIGFsbG9jYXRlLiAqKVxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGNfZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvcyB+bGVuIH5yZXM7XG4gIE1kNV9saWIudW5zYWZlX29mX2JpbmFyeVxuICAgIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnJlcylcbjs7XG5cbmxldCBkaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgfnBvc1xuICAgIH5sZW5cbiAgICB+dG90YWxfbGVuZ3RoOihCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gIHVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW5cbjs7XG5cbmxldCBkaWdlc3RfYmlnc3RyaW5nIGJ1ZiA9XG4gIHVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zOjAgfmxlbjooQmlnc3RyaW5nLmxlbmd0aCBidWYpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbmFibGVfaW50ZlxuaW5jbHVkZSBCaW5hYmxlMFxuXG4oKiBbb2Zfc3RyaW5nXSBhbmQgW3RvX3N0cmluZ10gY2FuJ3QgZ28gaW4gYmluYWJsZTAubWwgZHVlIHRvIGEgY3ljbGljIGRlcGVuZGVuY3kuICopXG5sZXQgb2Zfc3RyaW5nIG0gc3RyaW5nID0gb2ZfYmlnc3RyaW5nIG0gKEJpZ3N0cmluZy5vZl9zdHJpbmcgc3RyaW5nKVxubGV0IHRvX3N0cmluZyBtIHQgPSBCaWdzdHJpbmcudG9fc3RyaW5nICh0b19iaWdzdHJpbmcgbSB0KVxuIiwiKCogRnVuY3Rpb25zIGZvciBwYXJzaW5nIHRpbWUgem9uZSBkYXRhYmFzZSBmaWxlcyAoemljIGZpbGVzKS5cblxuICAgQSB0aW1lIHpvbmUgZmlsZSBjb25zaXN0cyAoY29uY2VwdHVhbGx5IC0gdGhlIHJlcHJlc2VudGF0aW9uIGlzIG1vcmVcbiAgIGNvbXBhY3QpIG9mIGFuIG9yZGVyZWQgbGlzdCBvZiAoVGltZS50ICogW2xvY2FsX3RpbWVfdHlwZV0pIHRoYXQgbWFya1xuICAgdGhlIGJvdW5kYXJpZXMgKG1hcmtlZCBmcm9tIHRoZSBlcG9jaCkgYXQgd2hpY2ggdmFyaW91cyB0aW1lIGFkanVzdG1lbnRcbiAgIHJlZ2ltZXMgYXJlIGluIGVmZmVjdC4gIFRoaXMgY2FuIGFsc28gYmUgdGhvdWdodCBvZiBhcyBicmVha2luZyBkb3duIGFsbFxuICAgdGltZSBwYXN0IHRoZSBlcG9jaCBpbnRvIHJhbmdlcyB3aXRoIGEgW2xvY2FsX3RpbWVfdHlwZV0gdGhhdCBkZXNjcmliZXMgdGhlXG4gICBvZmZzZXQgZnJvbSBHTVQgdG8gYXBwbHkgdG8gZWFjaCByYW5nZSB0byBnZXQgbG9jYWwgdGltZS5cbiopXG5cbm9wZW4gSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuaW5jbHVkZSBab25lX2ludGZcblxuZXhjZXB0aW9uIEludmFsaWRfZmlsZV9mb3JtYXQgb2Ygc3RyaW5nIFtAQGRlcml2aW5nIHNleHBdXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZ1bGxfZGF0YSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEluZGV4ID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgIGxldCBuZXh0ID0gSW50LnN1Y2NcbiAgICAgICAgbGV0IHByZXYgPSBJbnQucHJlZFxuICAgICAgICBsZXQgYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb24gPSAtMVxuXG4gICAgICAgICgqIFNvbWUgZXhpc3RpbmcgY2xpZW50cyBleHBlY3QgW2luZGV4ID49IDBdLCBzbyB3ZSBuZXZlciBzZXJpYWxpemUgYSBuZWdhdGl2ZVxuICAgICAgICAgICBpbmRleC4gVGhpcyBjb252ZXJzaW9uIGNhbiBiZSByZW1vdmVkIGlmIG5ldyBzdGFibGUgdmVyc2lvbnMgYXJlIG1pbnRlZC4gKilcbiAgICAgICAgbGV0IHRvX2V4dGVybmFsIHQgPSBtYXggMCB0XG5cbiAgICAgICAgKCogV2hlbiB0aGUgaW5kZXggb2YgYSB0aW1lIHpvbmUgd2l0aCBubyB0cmFuc2l0aW9ucyBpcyBjb252ZXJ0ZWQgdmlhIHRvX2V4dGVybmFsLFxuICAgICAgICAgICBpdHMgdmFsdWUgYmVjb21lcyAwIGV2ZW4gdGhvdWdoIGl0cyB0cmFuc2l0aW9uIGFycmF5IGlzIGVtcHR5IChhbmQgaXQgc2hvdWxkXG4gICAgICAgICAgIGhhdmUgYmVlbiAtMSkuIFdoZW4gdGhlIGNvbnZlcnRlZCB2YWx1ZSBpcyBjaGFuZ2VkIGJhY2sgdG8gYSBab25lLnQgdGhyb3VnaFxuICAgICAgICAgICBvZl9leHRlcm5hbCwgcmV0dXJuaW5nIHRoaXMgdmFsdWUgZm9yIGl0cyBpbmRleCBjb3VsZCByZXN1bHQgaW4gdW5zYWZlIGFycmF5XG4gICAgICAgICAgIGFjY2Vzc2VzIHRvIHRoZSB0cmFuc2l0aW9uIGFycmF5IG9mIHRoZSB6b25lIChzaW5jZSB0aGVyZSBpcyBubyB0cmFuc2l0aW9uIGF0XG4gICAgICAgICAgIGluZGV4IDApLiBBbHNvLCBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIGtlZXAgdGhlIGNvbnZlcnRlZCBpbmRleCBiZWNhdXNlIGl0XG4gICAgICAgICAgIGlzIGludGVuZGVkIHRvIGJlIGEgbXV0YWJsZSB2YWx1ZSB1c2VkIGZvciBjYWNoaW5nLiBTbyBvZl9leHRlcm5hbCBhbHdheXMgc2V0c1xuICAgICAgICAgICB0aGUgaW5kZXggdG8gLTEsIHdoaWNoIGlzIGEgc2FmZSB2YWx1ZS4gKilcbiAgICAgICAgbGV0IG9mX2V4dGVybmFsIChfIDogdCkgPSAtMVxuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBCaW5hYmxlLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgICAoSW50LlN0YWJsZS5WMSlcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19leHRlcm5hbFxuICAgICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2V4dGVybmFsXG4gICAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICAgIEludC5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICAgIG9mX2V4dGVybmFsXG4gICAgICAgICAgICB0b19leHRlcm5hbFxuICAgICAgICA7O1xuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBTZXhwYWJsZS5PZl9zZXhwYWJsZVxuICAgICAgICAgICAgKEludClcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fZXh0ZXJuYWxcbiAgICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2ZfZXh0ZXJuYWxcbiAgICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaW1lID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgeyB1dGNfb2Zmc2V0X2luX3NlY29uZHMgOiBJbnQ2My5TdGFibGUuVjEudFxuICAgICAgICAgIDsgaXNfZHN0IDogYm9vbFxuICAgICAgICAgIDsgYWJicnYgOiBzdHJpbmdcbiAgICAgICAgICB9XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcblxuICAgICAgKCogaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgd2hlbiBsZWFwIHNlY29uZHMgc2hvdWxkIGJlIGFwcGxpZWQgLSB1bnVzZWRcbiAgICAgICAgIGJlY2F1c2Ugd2UgYXJlIHRyYW5zbGF0aW5nIGJhc2VkIG9uIGEgZXBvY2ggc3lzdGVtIGNsb2NrIChzZWUgdGhlIENvcmVfem9uZVxuICAgICAgICAgZG9jdW1lbnRhdGlvbikuICopXG4gICAgICBtb2R1bGUgTGVhcF9zZWNvbmQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBzZWNvbmRzIDogaW50XG4gICAgICAgICAgfVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBUcmFuc2l0aW9uID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgeyBzdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggOiBJbnQ2My5TdGFibGUuVjEudFxuICAgICAgICAgIDsgbmV3X3JlZ2ltZSA6IFJlZ2ltZS50XG4gICAgICAgICAgfVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IG9yaWdpbmFsX2ZpbGVuYW1lIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7XG4gICAgICAgICAgZGlnZXN0IDogTWQ1LkFzX2JpbmFyeV9zdHJpbmcuU3RhYmxlLlYxLnQgb3B0aW9uXG4gICAgICAgIDsgdHJhbnNpdGlvbnMgOiBUcmFuc2l0aW9uLnQgYXJyYXlcbiAgICAgICAgOyAoKiBjYWNoZXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHRyYW5zaXRpb24gd2UgdXNlZCB0byBtYWtlIGxvb2t1cHMgZmFzdGVyICopXG4gICAgICAgICAgbXV0YWJsZSBsYXN0X3JlZ2ltZV9pbmRleCA6IEluZGV4LnRcbiAgICAgICAgOyBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA6IFJlZ2ltZS50XG4gICAgICAgIDsgbGVhcF9zZWNvbmRzIDogTGVhcF9zZWNvbmQudCBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICgqIHRoaXMgcmVsaWVzIG9uIHpvbmVzIHdpdGggdGhlIHNhbWUgbmFtZSBoYXZpbmcgdGhlIHNhbWUgdHJhbnNpdGlvbnMgKilcbiAgICAgIGxldCBjb21wYXJlIHQxIHQyID0gU3RyaW5nLmNvbXBhcmUgdDEubmFtZSB0Mi5uYW1lXG4gICAgICBsZXQgb3JpZ2luYWxfZmlsZW5hbWUgem9uZSA9IHpvbmUub3JpZ2luYWxfZmlsZW5hbWVcbiAgICAgIGxldCBkaWdlc3Qgem9uZSA9IHpvbmUuZGlnZXN0XG5cbiAgICAgIG1vZHVsZSBab25lX2ZpbGUgOiBzaWdcbiAgICAgICAgdmFsIGlucHV0X3R6X2ZpbGUgOiB6b25lbmFtZTpzdHJpbmcgLT4gZmlsZW5hbWU6c3RyaW5nIC0+IHRcbiAgICAgIGVuZCA9IHN0cnVjdFxuICAgICAgICBsZXQgYm9vbF9vZl9pbnQgaSA9IGkgPD4gMFxuXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludDMyID1cbiAgICAgICAgICBsZXQgbG9uZyA9IEJ5dGVzLmNyZWF0ZSA0IGluXG4gICAgICAgICAgbGV0IGludDMyX29mX2NoYXIgY2hyID0gSW50MzIub2ZfaW50X2V4biAoaW50X29mX2NoYXIgY2hyKSBpblxuICAgICAgICAgIGZ1biBpYyAtPlxuICAgICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWY6bG9uZyB+cG9zOjAgfmxlbjo0O1xuICAgICAgICAgICAgbGV0IHNiMSA9IEludDMyLnNoaWZ0X2xlZnQgKGludDMyX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nIDApKSAyNCBpblxuICAgICAgICAgICAgbGV0IHNiMiA9IEludDMyLnNoaWZ0X2xlZnQgKGludDMyX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nIDEpKSAxNiBpblxuICAgICAgICAgICAgbGV0IHNiMyA9IEludDMyLnNoaWZ0X2xlZnQgKGludDMyX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nIDIpKSA4IGluXG4gICAgICAgICAgICBsZXQgc2I0ID0gaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMykgaW5cbiAgICAgICAgICAgIEludDMyLmJpdF9vciAoSW50MzIuYml0X29yIHNiMSBzYjIpIChJbnQzMi5iaXRfb3Igc2IzIHNiNClcbiAgICAgICAgOztcblxuICAgICAgICAoKiBOb3RlIHRoYXQgdGhpcyBpcyBvbmx5IHNhZmUgdG8gdXNlIG9uIG51bWJlcnMgdGhhdCB3aWxsIGZpdCBpbnRvIGEgMzEtYml0XG4gICAgICAgICAgIGludC4gVU5JWCB0aW1lc3RhbXBzIHdvbid0LCBmb3IgZXhhbXBsZS4gIEluIG91ciBjYXNlIHRoaXMgaXMgb25seSB1c2VkXG4gICAgICAgICAgIHRvIGhvbGQgc21hbGwgbnVtYmVycyB0aGF0IGFyZSBuZXZlciBpbnRlcnByZXRlZCBhcyB0aW1lc3RhbXBzLiAqKVxuICAgICAgICBsZXQgaW5wdXRfbG9uZ19hc19pbnQgaWMgPSBJbnQzMi50b19pbnRfZXhuIChpbnB1dF9sb25nX2FzX2ludDMyIGljKVxuICAgICAgICBsZXQgaW5wdXRfbG9uZ19hc19pbnQ2MyBpYyA9IEludDYzLm9mX2ludDMyIChpbnB1dF9sb25nX2FzX2ludDMyIGljKVxuXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMgaWMgPVxuICAgICAgICAgIGxldCBpbnQ2M19vZl9jaGFyIGNociA9IEludDYzLm9mX2ludF9leG4gKGludF9vZl9jaGFyIGNocikgaW5cbiAgICAgICAgICBsZXQgc2hpZnQgYyBiaXRzID0gSW50NjMuc2hpZnRfbGVmdCAoaW50NjNfb2ZfY2hhciBjKSBiaXRzIGluXG4gICAgICAgICAgbGV0IGxvbmdfbG9uZyA9IEJ5dGVzLmNyZWF0ZSA4IGluXG4gICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWY6bG9uZ19sb25nIH5wb3M6MCB+bGVuOjg7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDApIDU2IGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDEpIDQ4KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyAyKSA0MCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMykgMzIpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDQpIDI0KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA1KSAxNikgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgNikgOCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoaW50NjNfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA3KSkgaW5cbiAgICAgICAgICByZXN1bHRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfbGlzdCBpYyB+bGVuIH5mID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgYyBsc3QgPVxuICAgICAgICAgICAgaWYgYyA+IDAgdGhlbiBsb29wIChjIC0gMSkgKGYgaWMgOjogbHN0KSBlbHNlIExpc3QucmV2IGxzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbG9vcCBsZW4gW11cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfYXJyYXkgaWMgfmxlbiB+ZiA9IEFycmF5Lm9mX2xpc3QgKGlucHV0X2xpc3QgaWMgfmxlbiB+ZilcblxuICAgICAgICBsZXQgaW5wdXRfcmVnaW1lIGljID1cbiAgICAgICAgICBsZXQgdXRjX29mZnNldF9pbl9zZWNvbmRzID0gaW5wdXRfbG9uZ19hc19pbnQ2MyBpYyBpblxuICAgICAgICAgIGxldCBpc19kc3QgPSBib29sX29mX2ludCAoT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSkgaW5cbiAgICAgICAgICBsZXQgYWJicnZfaW5kZXggPSBPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpIGluXG4gICAgICAgICAgbGV0IGx0IGFiYnJ2ID0geyBSZWdpbWUudXRjX29mZnNldF9pbl9zZWNvbmRzOyBpc19kc3Q7IGFiYnJ2IH0gaW5cbiAgICAgICAgICBsdCwgYWJicnZfaW5kZXhcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfYWJicmV2aWF0aW9ucyBpYyB+bGVuID1cbiAgICAgICAgICBsZXQgcmF3X2FiYnJ2cyA9XG4gICAgICAgICAgICBpbnB1dF9saXN0IGljIH5sZW4gfmY6KGZ1biBpYyAtPiBPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2NoYXIgaWMpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgICAgICAgbGV0IF8sIGluZGV4ZWRfYWJicnZzID1cbiAgICAgICAgICAgIExpc3QuZm9sZCByYXdfYWJicnZzIH5pbml0OigwLCBNYXAuUG9seS5lbXB0eSkgfmY6KGZ1biAoaW5kZXgsIGFiYnJ2cykgYyAtPlxuICAgICAgICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgICAgICAgfCAnXFwwMDAnIC0+XG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgICAgICAgICAgICAgbGV0IG5leHRfaW5kZXggPSBpbmRleCArIFN0cmluZy5sZW5ndGggZGF0YSArIDEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYWJicnZzID0gTWFwLnNldCBhYmJydnMgfmtleTppbmRleCB+ZGF0YSBpblxuICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICAgICAgICAgICAgbmV4dF9pbmRleCwgYWJicnZzXG4gICAgICAgICAgICAgIHwgYyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgYztcbiAgICAgICAgICAgICAgICBpbmRleCwgYWJicnZzKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBidWYgPD4gMFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChJbnZhbGlkX2ZpbGVfZm9ybWF0XG4gICAgICAgICAgICAgICAgIFwibWlzc2luZyBcXDAwMCB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIgaW4gaW5wdXRfYWJicmV2aWF0aW9uc1wiKTtcbiAgICAgICAgICBpbmRleGVkX2FiYnJ2c1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF90el9maWxlX2dlbiB+aW5wdXRfdHJhbnNpdGlvbiB+aW5wdXRfbGVhcF9zZWNvbmQgaWMgPVxuICAgICAgICAgIGxldCB1dGNfbG9jYWxfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCBzdGRfd2FsbF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IGxlYXBfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9uX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgdHlwZV9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IGFiYnJ2X2NoYXJfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9uX3RpbWVzID1cbiAgICAgICAgICAgIGlucHV0X2xpc3QgaWMgfmY6aW5wdXRfdHJhbnNpdGlvbiB+bGVuOnRyYW5zaXRpb25fY291bnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9uX2luZGljZXMgPVxuICAgICAgICAgICAgaW5wdXRfbGlzdFxuICAgICAgICAgICAgICBpY1xuICAgICAgICAgICAgICB+ZjooZnVuIGljIC0+IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykpXG4gICAgICAgICAgICAgIH5sZW46dHJhbnNpdGlvbl9jb3VudFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlZ2ltZXMgPSBpbnB1dF9saXN0IGljIH5mOmlucHV0X3JlZ2ltZSB+bGVuOnR5cGVfY291bnQgaW5cbiAgICAgICAgICBsZXQgYWJicmV2aWF0aW9ucyA9IGlucHV0X2FiYnJldmlhdGlvbnMgaWMgfmxlbjphYmJydl9jaGFyX2NvdW50IGluXG4gICAgICAgICAgbGV0IGxlYXBfc2Vjb25kcyA9IGlucHV0X2xpc3QgaWMgfmY6aW5wdXRfbGVhcF9zZWNvbmQgfmxlbjpsZWFwX2NvdW50IGluXG4gICAgICAgICAgKCogVGhlIGZvbGxvd2luZyB0d28gYXJyYXlzIGluZGljYXRlIHR3byBib29sZWFuIHZhbHVlcyBwZXIgcmVnaW1lIHRoYXRcbiAgICAgICAgICAgICByZXByZXNlbnQgYSB0aHJlZS12YWx1ZSB0eXBlIHRoYXQgd291bGQgdHJhbnNsYXRlIHRvOlxuXG4gICAgICAgICAgICAgdHlwZSB0cmFuc2l0aW9uX3R5cGUgPSBVVEMgfCBTdGFuZGFyZCB8IFdhbGxfY2xvY2tcblxuICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZXNlIGFyZSBvbmx5IHVzZWQgYnkgdGhlIHN5c3RlbSBsaWJyYXJ5IHdoZW4gaGFuZGxpbmcgdGhlIGNhc2Ugd2hlcmUgdGhlXG4gICAgICAgICAgICAgVFogdmFyaWFibGUgaXMgc2V0LCBub3QgdG8gYSB0aW1lIHpvbmUgbmFtZSwgYnV0IGluc3RlYWQgaXMgb2YgdGhlIGZvcm06XG5cbiAgICAgICAgICAgICBUWiA9IFwic3RkIG9mZnNldCBkc3Qgb2Zmc2V0LCBydWxlXCJcblxuICAgICAgICAgICAgIFdoaWNoIGlzIGRlZXBseSBvYnNjdXJlLCBhbmQgYWxtb3N0IGNlcnRhaW5seSBhIG1pc3Rha2UgdG8gdXNlLiAgVGhpcyBsaWJyYXJ5IG1ha2VzXG4gICAgICAgICAgICAgbm8gcHJldGVuc2UgYWJvdXQgaGFuZGxpbmcgdGhpcyBjYXNlLiAgV2UgY29udGludWUgdG8gcmVhZCB0aGVtIGluIGZvclxuICAgICAgICAgICAgIGNvbXBsZXRlbmVzcywgYW5kIGJlY2F1c2UgaXQncyBwb3NzaWJsZSB0aGF0IHdlIHdpbGwgbGF0ZXIgZGlzY292ZXIgYSBjYXNlIHdoZXJlXG4gICAgICAgICAgICAgdGhleSBhcmUgdXNlZC4gKilcbiAgICAgICAgICBsZXQgX3N0ZF93YWxsX2luZGljYXRvcnMgPVxuICAgICAgICAgICAgaW5wdXRfYXJyYXkgaWMgfmxlbjpzdGRfd2FsbF9jb3VudCB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBfdXRjX2xvY2FsX2luZGljYXRvcnMgPVxuICAgICAgICAgICAgaW5wdXRfYXJyYXkgaWMgfmxlbjp1dGNfbG9jYWxfY291bnQgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgICBib29sX29mX2ludCAoT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVnaW1lcyA9XG4gICAgICAgICAgICBBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCByZWdpbWVzIH5mOihmdW4gKGx0LCBhYmJydl9pbmRleCkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGFiYnJ2ID0gTWFwLmZpbmRfZXhuIGFiYnJldmlhdGlvbnMgYWJicnZfaW5kZXggaW5cbiAgICAgICAgICAgICAgICAgbHQgYWJicnYpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJhd190cmFuc2l0aW9ucyA9XG4gICAgICAgICAgICBMaXN0Lm1hcDJfZXhuIHRyYW5zaXRpb25fdGltZXMgdHJhbnNpdGlvbl9pbmRpY2VzIH5mOihmdW4gdGltZSBpbmRleCAtPlxuICAgICAgICAgICAgICBsZXQgcmVnaW1lID0gcmVnaW1lcy4oaW5kZXgpIGluXG4gICAgICAgICAgICAgIHRpbWUsIHJlZ2ltZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9ucyA9XG4gICAgICAgICAgICBsZXQgcmVjIG1ha2VfdHJhbnNpdGlvbnMgYWNjIGwgPVxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiBBcnJheS5vZl9saXN0IChMaXN0LnJldiBhY2MpXG4gICAgICAgICAgICAgIHwgKHN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCwgbmV3X3JlZ2ltZSkgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIG1ha2VfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICAgICAgICh7IFRyYW5zaXRpb24uc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoOyBuZXdfcmVnaW1lIH0gOjogYWNjKVxuICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1ha2VfdHJhbnNpdGlvbnMgW10gcmF3X3RyYW5zaXRpb25zXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgPVxuICAgICAgICAgICAgbWF0Y2ggQXJyYXkuZmluZCByZWdpbWVzIH5mOihmdW4gciAtPiBub3Qgci5SZWdpbWUuaXNfZHN0KSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmVnaW1lcy4oMClcbiAgICAgICAgICAgIHwgU29tZSBsdHQgLT4gbHR0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBmdW4gbmFtZSB+b3JpZ2luYWxfZmlsZW5hbWUgfmRpZ2VzdCAtPlxuICAgICAgICAgICAgeyBuYW1lXG4gICAgICAgICAgICA7IG9yaWdpbmFsX2ZpbGVuYW1lID0gU29tZSBvcmlnaW5hbF9maWxlbmFtZVxuICAgICAgICAgICAgOyBkaWdlc3QgPSBTb21lIGRpZ2VzdFxuICAgICAgICAgICAgOyB0cmFuc2l0aW9uc1xuICAgICAgICAgICAgOyBsYXN0X3JlZ2ltZV9pbmRleCA9IEluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG4gICAgICAgICAgICA7IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlXG4gICAgICAgICAgICA7IGxlYXBfc2Vjb25kc1xuICAgICAgICAgICAgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9sZWFwX3NlY29uZF9nZW4gfmlucHV0X2xlYXBfc2Vjb25kIGljID1cbiAgICAgICAgICBsZXQgdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoID0gaW5wdXRfbGVhcF9zZWNvbmQgaWMgaW5cbiAgICAgICAgICBsZXQgc2Vjb25kcyA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgeyBMZWFwX3NlY29uZC50aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2g7IHNlY29uZHMgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWFkX2hlYWRlciBpYyA9XG4gICAgICAgICAgbGV0IG1hZ2ljID1cbiAgICAgICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgNCBpblxuICAgICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWYgfnBvczowIH5sZW46NDtcbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBub3QgKFN0cmluZy5lcXVhbCBtYWdpYyBcIlRaaWZcIilcbiAgICAgICAgICB0aGVuIHJhaXNlIChJbnZhbGlkX2ZpbGVfZm9ybWF0IFwibWFnaWMgY2hhcmFjdGVycyBUWmlmIG5vdCBwcmVzZW50XCIpO1xuICAgICAgICAgIGxldCB2ZXJzaW9uID1cbiAgICAgICAgICAgIG1hdGNoIEluX2NoYW5uZWwuaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgJ1xcMDAwJyAtPiBgVjFcbiAgICAgICAgICAgIHwgU29tZSAnMicgLT4gYFYyXG4gICAgICAgICAgICB8IFNvbWUgJzMnIC0+IGBWM1xuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChJbnZhbGlkX2ZpbGVfZm9ybWF0IFwiZXhwZWN0ZWQgdmVyc2lvbiwgZm91bmQgbm90aGluZ1wiKVxuICAgICAgICAgICAgfCBTb21lIGJhZF92ZXJzaW9uIC0+XG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2ZpbGVfZm9ybWF0IChzcHJpbnRmIFwidmVyc2lvbiAoJWMpIGlzIGludmFsaWRcIiBiYWRfdmVyc2lvbikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBzcGFjZSByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSBpbiB0aGUgZm9ybWF0ICopXG4gICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWY6KEJ5dGVzLmNyZWF0ZSAxNSkgfnBvczowIH5sZW46MTU7XG4gICAgICAgICAgdmVyc2lvblxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF90el9maWxlX3YxIGljID1cbiAgICAgICAgICBsZXQgaW5wdXRfbGVhcF9zZWNvbmQgPVxuICAgICAgICAgICAgaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIH5pbnB1dF9sZWFwX3NlY29uZDppbnB1dF9sb25nX2FzX2ludDYzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbnB1dF90el9maWxlX2dlbiB+aW5wdXRfdHJhbnNpdGlvbjppbnB1dF9sb25nX2FzX2ludDYzIH5pbnB1dF9sZWFwX3NlY29uZCBpY1xuICAgICAgICA7O1xuXG4gICAgICAgICgqXG4gICAgICAgICAgIHZlcnNpb24gMiB0aW1lem9uZSBmaWxlcyBoYXZlIHRoZSBmb3JtYXQ6XG5cbiAgICAgICAgICAgcGFydCAxIC0gZXhhY3RseSB0aGUgc2FtZSBhcyB2MVxuXG4gICAgICAgICAgIHBhcnQgMiAtIHNhbWUgZm9ybWF0IGFzIHYxLCBleGNlcHQgdGhhdCA4IGJ5dGVzIGFyZSB1c2VkIHRvIHN0b3JlXG4gICAgICAgICAgIHRyYW5zaXRpb24gdGltZXMgYW5kIGxlYXAgc2Vjb25kc1xuXG4gICAgICAgICAgIHBhcnQgMyAtIGEgbmV3bGluZS1lbmNsb2RlZCwgUE9TSVgtVFotZW52aXJvbm1lbnQtdmFyaWFibGUtc3R5bGVcbiAgICAgICAgICAgc3RyaW5nIGZvciB1c2UgaW4gaGFuZGxpbmcgaW5zdGFudHMgYWZ0ZXIgdGhlIGxhc3QgdHJhbnNpdGlvbiB0aW1lXG4gICAgICAgICAgIHN0b3JlZCBpbiB0aGUgZmlsZSAod2l0aCBub3RoaW5nIGJldHdlZW4gdGhlIG5ld2xpbmVzIGlmIHRoZXJlIGlzIG5vXG4gICAgICAgICAgIFBPU0lYIHJlcHJlc2VudGF0aW9uIGZvciBzdWNoIGluc3RhbnRzKVxuXG4gICAgICAgICAgIFdlIGhhbmRsZSBmaWxlcyBpbiB0aGlzIGZvcm1hdCBieSBwYXJzaW5nIHRoZSBmaXJzdCBwYXJ0IGV4YWN0bHkgYXMgYSB2MVxuICAgICAgICAgICB0aW1lem9uZSBmaWxlIGFuZCB0aGVuIGNvbnRpbnVpbmcgdG8gcGFyc2Ugd2l0aCA2NGJpdCByZWFkaW5nIGZ1bmN0aW9ucyBpbiB0aGVcbiAgICAgICAgICAgcmlnaHQgcGxhY2VzLlxuXG4gICAgICAgICAgIFZlcnNpb24gMyB0aW1lem9uZSBmaWxlcyBhcmUgdGhlIHNhbWUgYXMgdmVyc2lvbiAyLCBleGNlcHQgdGhlXG4gICAgICAgICAgIFBPU0lYLVRaLWVudmlyb25tZW50LXZhcmlhYmxlLXN0eWxlIHN0cmluZyBpbiBwYXJ0IDMgbWF5IHVzZSB0d28gbWlub3JcbiAgICAgICAgICAgZXh0ZW5zaW9ucyB0byB0aGUgUE9TSVggVFogZm9ybWF0ICh0aGUgaG91cnMgcGFydCBvZiBpdHMgdHJhbnNpdGlvblxuICAgICAgICAgICB0aW1lcyBtYXkgYmUgc2lnbmVkIGFuZCByYW5nZSBmcm9tIC0xNjcgdGhyb3VnaCAxNjcgaW5zdGVhZCBvZiB0aGVcbiAgICAgICAgICAgUE9TSVgtcmVxdWlyZWQgdW5zaWduZWQgdmFsdWVzIGZyb20gMCB0aHJvdWdoIDI0OyBhbmQgRFNUIGlzIGluIGVmZmVjdCBhbGxcbiAgICAgICAgICAgeWVhciBpZiBpdCBzdGFydHMgSmFudWFyeSAxIGF0IDAwOjAwIGFuZCBlbmRzIERlY2VtYmVyIDMxIGF0IDI0OjAwIHBsdXMgdGhlXG4gICAgICAgICAgIGRpZmZlcmVuY2UgYmV0d2VlbiBkYXlsaWdodCBzYXZpbmcgYW5kIHN0YW5kYXJkIHRpbWUpLlxuXG4gICAgICAgICAgIEFzIHdlIGRvbid0IGFjdHVhbGx5IGRvIGFueXRoaW5nIHdpdGggcGFydCAzIGFueXdheSwgd2UgY2FuIGp1c3QgcmVhZCB2M1xuICAgICAgICAgICBmaWxlcyBhcyB2Mi5cbiAgICAgICAgKilcbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfdjJfb3JfdjMgfnZlcnNpb24gaWMgPVxuICAgICAgICAgIGxldCAoXyA6IHN0cmluZyAtPiBvcmlnaW5hbF9maWxlbmFtZTpzdHJpbmcgLT4gZGlnZXN0Ok1kNV9saWIudCAtPiB0KSA9XG4gICAgICAgICAgICBpbnB1dF90el9maWxlX3YxIGljXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiB0aGUgaGVhZGVyIGlzIGZ1bGx5IHJlcGVhdGVkICopXG4gICAgICAgICAgYXNzZXJ0IChbJWNvbXBhcmUuZXF1YWw6IFsgYFYxIHwgYFYyIHwgYFYzIF1dIChyZWFkX2hlYWRlciBpYykgdmVyc2lvbik7XG4gICAgICAgICAgbGV0IGlucHV0X2xlYXBfc2Vjb25kID1cbiAgICAgICAgICAgIGlucHV0X2xlYXBfc2Vjb25kX2dlbiB+aW5wdXRfbGVhcF9zZWNvbmQ6aW5wdXRfbG9uZ19sb25nX2FzX2ludDYzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbnB1dF90el9maWxlX2dlblxuICAgICAgICAgICAgfmlucHV0X3RyYW5zaXRpb246aW5wdXRfbG9uZ19sb25nX2FzX2ludDYzXG4gICAgICAgICAgICB+aW5wdXRfbGVhcF9zZWNvbmRcbiAgICAgICAgICAgIGljXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGUgfnpvbmVuYW1lIH5maWxlbmFtZSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBwcm90ZWN0eCAoSW5fY2hhbm5lbC5jcmVhdGUgZmlsZW5hbWUpIH5maW5hbGx5OkluX2NoYW5uZWwuY2xvc2UgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgICBsZXQgbWFrZV96b25lID1cbiAgICAgICAgICAgICAgICBtYXRjaCByZWFkX2hlYWRlciBpYyB3aXRoXG4gICAgICAgICAgICAgICAgfCBgVjEgLT4gaW5wdXRfdHpfZmlsZV92MSBpY1xuICAgICAgICAgICAgICAgIHwgKGBWMiB8IGBWMykgYXMgdmVyc2lvbiAtPiBpbnB1dF90el9maWxlX3YyX29yX3YzIH52ZXJzaW9uIGljXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkaWdlc3QgPSBNZDUuZGlnZXN0X2ZpbGVfYmxvY2tpbmcgZmlsZW5hbWUgaW5cbiAgICAgICAgICAgICAgbGV0IHIgPSBtYWtlX3pvbmUgem9uZW5hbWUgfm9yaWdpbmFsX2ZpbGVuYW1lOmZpbGVuYW1lIH5kaWdlc3QgaW5cbiAgICAgICAgICAgICAgcilcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBJbnZhbGlkX2ZpbGVfZm9ybWF0IHJlYXNvbiAtPlxuICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgKHNwcmludGYgXCIlcyAtICVzXCIgZmlsZW5hbWUgcmVhc29uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgb2ZfdXRjX29mZnNldF9leHBsaWNpdF9uYW1lIH5uYW1lIH5ob3VyczpvZmZzZXQgPVxuICAgICAgICBhc3NlcnQgKG9mZnNldCA+PSAtMjQgJiYgb2Zmc2V0IDw9IDI0KTtcbiAgICAgICAgbGV0IHV0Y19vZmZzZXRfaW5fc2Vjb25kcyA9IEludDYzLm9mX2ludCAob2Zmc2V0ICogNjAgKiA2MCkgaW5cbiAgICAgICAgeyBuYW1lXG4gICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgPSBOb25lXG4gICAgICAgIDsgZGlnZXN0ID0gTm9uZVxuICAgICAgICA7IHRyYW5zaXRpb25zID0gW3x8XVxuICAgICAgICA7IGxhc3RfcmVnaW1lX2luZGV4ID0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cbiAgICAgICAgOyBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA9XG4gICAgICAgICAgICB7IFJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHM7IGlzX2RzdCA9IGZhbHNlOyBhYmJydiA9IG5hbWUgfVxuICAgICAgICA7IGxlYXBfc2Vjb25kcyA9IFtdXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl91dGNfb2Zmc2V0IH5ob3VyczpvZmZzZXQgPVxuICAgICAgICBsZXQgbmFtZSA9XG4gICAgICAgICAgaWYgb2Zmc2V0ID0gMFxuICAgICAgICAgIHRoZW4gXCJVVENcIlxuICAgICAgICAgIGVsc2Ugc3ByaW50ZiBcIlVUQyVzJWRcIiAoaWYgb2Zmc2V0IDwgMCB0aGVuIFwiLVwiIGVsc2UgXCIrXCIpIChhYnMgb2Zmc2V0KVxuICAgICAgICBpblxuICAgICAgICBvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUgfm5hbWUgfmhvdXJzOm9mZnNldFxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuRnVsbF9kYXRhLlYxXG5cbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSB0Lm5hbWVcblxubGV0IGxpa2VseV9tYWNoaW5lX3pvbmVzID1cbiAgcmVmIFsgXCJBbWVyaWNhL05ld19Zb3JrXCI7IFwiRXVyb3BlL0xvbmRvblwiOyBcIkFzaWEvSG9uZ19Lb25nXCI7IFwiQW1lcmljYS9DaGljYWdvXCIgXVxuOztcblxubGV0IGlucHV0X3R6X2ZpbGUgPSBab25lX2ZpbGUuaW5wdXRfdHpfZmlsZVxubGV0IHV0YyA9IG9mX3V0Y19vZmZzZXQgfmhvdXJzOjBcbmxldCBuYW1lIHpvbmUgPSB6b25lLm5hbWVcbmxldCByZXNldF90cmFuc2l0aW9uX2NhY2hlIHQgPSB0Lmxhc3RfcmVnaW1lX2luZGV4IDwtIEluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG5cbigqIFJhaXNlcyBpZiBbaW5kZXggPj0gQXJyYXkubGVuZ3RoIHQudHJhbnNpdGlvbnNdICopXG5sZXQgZ2V0X3JlZ2ltZV9leG4gdCBpbmRleCA9XG4gIGlmIGluZGV4IDwgMCB0aGVuIHQuZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgZWxzZSB0LnRyYW5zaXRpb25zLihpbmRleCkubmV3X3JlZ2ltZVxuOztcblxuKCogSW4gXCJhYnNvbHV0ZSBtb2RlXCIsIGEgbnVtYmVyIG9mIHNlY29uZHMgaXMgaW50ZXJwcmV0ZWQgYXMgYW4gb2Zmc2V0IG9mIHRoYXQgbWFueVxuICAgc2Vjb25kcyBmcm9tIHRoZSBVTklYIGVwb2NoLCBpZ25vcmluZyBsZWFwIHNlY29uZHMuXG5cbiAgIEluIFwiZGF0ZSBhbmQgb2ZkYXkgbW9kZVwiLCB5b3UgaW50ZXJwcmV0IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBhcyBhIG51bWJlciBvZiBkYXlzIGluXG4gICBjb21iaW5hdGlvbiB3aXRoIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgbWlkbmlnaHQsIHdoaWNoIGdpdmVzIHlvdSBhIGNhbGVuZGFyIGRheSBhbmRcbiAgIGEgY2xvY2sgZmFjZSB0aW1lLiBUaGVuIHlvdSB0YWtlIHRoZSB0aW1lIHRoYXQgdGhvc2UgcmVwcmVzZW50IGluIHNvbWUgcmVsZXZhbnRcbiAgIHRpbWV6b25lLlxuXG4gICBPZiBjb3Vyc2UsIGlmIHRoZSB0aW1lem9uZSBpbiBxdWVzdGlvbiBoYXMgRFNUIHNoaWZ0cywgdGhlIGRhdGUgYW5kIG9mZGF5IG1pZ2h0XG4gICByZXByZXNlbnQgdHdvIG9yIHplcm8gdGltZXMuIFRoZXNlIHRpbWVzIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIGVpdGhlciB0aGVcbiAgIHByZXZpb3VzIFVUQyBvZmZzZXQgb3IgdGhlIG5leHQgb25lLCBpbiBhIHdheSB3aG9zZSBwcmVjaXNlIGRldGFpbHMgeW91IHByb2JhYmx5XG4gICBzaG91bGRuJ3QgZGVwZW5kIG9uLlxuXG4gICAoRm9yIHRoZSBjdXJpb3VzLCB3aGF0IHdlIGRvIGlzOiBjb21wdXRlIHRoZSBcInJlbGF0aXZlIHRpbWVcIiBvZiB0aGUgc2hpZnQgYWNjb3JkaW5nIHRvXG4gICB0aGUgbmV3IHJlZ2ltZSwgYW5kIGFzc2lnbiByZWxhdGl2ZSB0aW1lcyB0byB0aGUgb2xkIHJlZ2ltZSBvciBuZXcgcmVnaW1lIGRlcGVuZGluZyBvblxuICAgd2hpY2ggc2lkZSBvZiB0aGUgc2hpZnQgdGltZSB0aGV5IG9jY3VyLiBTaW5jZSB0aGlzIGFtb3VudHMgdG8gdXNpbmcgdGhlIG9sZCByZWdpbWVcbiAgIHdoZW4gdGhlIGNsb2NrcyBtb3ZlIGZvcndhcmQgYW5kIHRoZSBuZXcgcmVnaW1lIHdoZW4gdGhlIGNsb2NrcyBtb3ZlIGJhY2ssIGl0J3NcbiAgIGVxdWl2YWxlbnQgdG8gY2FsY3VsYXRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgVGltZS50J3MgcmVsYXRpdmUgdG8gYm90aCB0aGUgb2xkIGFuZCB0aGVcbiAgIG5ldyByZWdpbWUgYW5kIHBpY2tpbmcgdGhlIG9uZSB0aGF0IG9jY3VycyBsYXRlci4gWWVzLCBsYXRlci4gSSBoYWQgdG8gZHJhdyBhIGRpYWdyYW1cbiAgIHRvIHBlcnN1YWRlIG15c2VsZiB0aGF0IGl0J3MgdGhhdCB3YXkgcm91bmQsIGJ1dCBpdCBpcy4pXG4qKVxubW9kdWxlIE1vZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEFic29sdXRlXG4gICAgfCBEYXRlX2FuZF9vZmRheVxuZW5kXG5cbmxldCBlZmZlY3RpdmVfc3RhcnRfdGltZSB+bW9kZSAoeCA6IFRyYW5zaXRpb24udCkgPVxuICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gIG1hdGNoIChtb2RlIDogTW9kZS50KSB3aXRoXG4gIHwgQWJzb2x1dGUgLT4geC5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hcbiAgfCBEYXRlX2FuZF9vZmRheSAtPlxuICAgIHguc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoICsgeC5uZXdfcmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kc1xuOztcblxubGV0IGluZGV4X2xvd2VyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzID1cbiAgaW5kZXggPCAwIHx8IEludDYzLiggPj0gKSBzZWNvbmRzIChlZmZlY3RpdmVfc3RhcnRfdGltZSB+bW9kZSB0LnRyYW5zaXRpb25zLihpbmRleCkpXG47O1xuXG5sZXQgaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMgPVxuICBpbmRleCArIDEgPj0gQXJyYXkubGVuZ3RoIHQudHJhbnNpdGlvbnNcbiAgfHwgSW50NjMuKCA8ICkgc2Vjb25kcyAoZWZmZWN0aXZlX3N0YXJ0X3RpbWUgfm1vZGUgdC50cmFuc2l0aW9ucy4oaW5kZXggKyAxKSlcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZSBzZWNvbmRzIDogSW5kZXgudCA9XG4gIEFycmF5LmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQudHJhbnNpdGlvbnMgYExhc3Rfb25fbGVmdCB+c2VnbWVudF9vZjooZnVuIHRyYW5zaXRpb24gLT5cbiAgICBpZiBJbnQ2My4oIDw9ICkgKGVmZmVjdGl2ZV9zdGFydF90aW1lIHRyYW5zaXRpb24gfm1vZGUpIHNlY29uZHMgdGhlbiBgTGVmdCBlbHNlIGBSaWdodClcbiAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OkluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG47O1xuXG5sZXQgaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHMgPVxuICBsZXQgaW5kZXggPVxuICAgIGxldCBpbmRleCA9IHQubGFzdF9yZWdpbWVfaW5kZXggaW5cbiAgICBpZiBub3QgKGluZGV4X2xvd2VyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzKVxuICAgICgqIHRpbWUgaXMgYmVmb3JlIGNhY2hlZCBpbmRleDsgdHJ5IHByZXZpb3VzIGluZGV4ICopXG4gICAgdGhlbiAoXG4gICAgICBsZXQgaW5kZXggPSBpbmRleCAtIDEgaW5cbiAgICAgIGlmIG5vdCAoaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgICAoKiB0aW1lIGlzIGJlZm9yZSBwcmV2aW91cyBpbmRleDsgZmFsbCBiYWNrIG9uIGJpbmFyeSBzZWFyY2ggKilcbiAgICAgIHRoZW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kc1xuICAgICAgICAoKiB0aW1lIGlzIGJlZm9yZSBjYWNoZWQgaW5kZXggYW5kIG5vdCBiZWZvcmUgcHJldmlvdXMsIHNvIHdpdGhpbiBwcmV2aW91cyAqKVxuICAgICAgZWxzZSBpbmRleClcbiAgICBlbHNlIGlmIG5vdCAoaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgKCogdGltZSBpcyBhZnRlciBjYWNoZWQgaW5kZXg7IHRyeSBuZXh0IGluZGV4ICopXG4gICAgdGhlbiAoXG4gICAgICBsZXQgaW5kZXggPSBpbmRleCArIDEgaW5cbiAgICAgIGlmIG5vdCAoaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgICAoKiB0aW1lIGlzIGFmdGVyIG5leHQgaW5kZXg7IGZhbGwgYmFjayBvbiBiaW5hcnkgc2VhcmNoICopXG4gICAgICB0aGVuXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHNcbiAgICAgICAgKCogdGltZSBpcyBhZnRlciBjYWNoZWQgaW5kZXggYW5kIG5vdCBhZnRlciBuZXh0LCBzbyB3aXRoaW4gbmV4dCAqKVxuICAgICAgZWxzZSBpbmRleCAoKiB0aW1lIGlzIHdpdGhpbiBjYWNoZWQgaW5kZXggKikpXG4gICAgZWxzZSBpbmRleFxuICBpblxuICB0Lmxhc3RfcmVnaW1lX2luZGV4IDwtIGluZGV4O1xuICBpbmRleFxuOztcblxubW9kdWxlIFRpbWVfaW5fc2Vjb25kcyA6IHNpZ1xuICBpbmNsdWRlIFpvbmVfaW50Zi5UaW1lX2luX3NlY29uZHNcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgU3BhbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9pbnQ2M19zZWNvbmRzID0gRm4uaWRcbiAgICBsZXQgdG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biA9IEZuLmlkXG4gIGVuZFxuXG4gIG1vZHVsZSBBYnNvbHV0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgICBsZXQgdG9fc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gIGVuZFxuXG4gIG1vZHVsZSBEYXRlX2FuZF9vZmRheSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gICAgbGV0IHRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgZW5kXG5cbiAgaW5jbHVkZSBBYnNvbHV0ZVxuZW5kXG5cbmxldCBpbmRleCB0IHRpbWUgPVxuICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgfD4gaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlOkFic29sdXRlXG47O1xuXG5sZXQgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCB0aW1lID1cbiAgVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICB8PiBpbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGU6RGF0ZV9hbmRfb2ZkYXlcbjs7XG5cbmxldCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXggPj0gMCAmJiBpbmRleCA8IEFycmF5Lmxlbmd0aCB0LnRyYW5zaXRpb25zXG5sZXQgaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgKGluZGV4ICsgMSlcblxubGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gIGxldCB0cmFuc2l0aW9uID0gdC50cmFuc2l0aW9ucy4oaW5kZXgpIGluXG4gIHRyYW5zaXRpb24uc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbjs7XG5cbmxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgKGluZGV4ICsgMSlcblxubGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgbGV0IHRyYW5zaXRpb24gPSB0LnRyYW5zaXRpb25zLihpbmRleCkgaW5cbiAgbGV0IGFmdGVyID0gdHJhbnNpdGlvbi5uZXdfcmVnaW1lIGluXG4gIGxldCBiZWZvcmUgPVxuICAgIGlmIGluZGV4ID0gMCB0aGVuIHQuZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgZWxzZSB0LnRyYW5zaXRpb25zLihpbmRleCAtIDEpLm5ld19yZWdpbWVcbiAgaW5cbiAgSW50NjMuKCAtICkgYWZ0ZXIudXRjX29mZnNldF9pbl9zZWNvbmRzIGJlZm9yZS51dGNfb2Zmc2V0X2luX3NlY29uZHNcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuOztcblxubGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgKGluZGV4ICsgMSlcbjs7XG5cbmxldCBpbmRleF9hYmJyZXZpYXRpb25fZXhuIHQgaW5kZXggPVxuICBsZXQgcmVnaW1lID0gZ2V0X3JlZ2ltZV9leG4gdCBpbmRleCBpblxuICByZWdpbWUuYWJicnZcbjs7XG5cbmxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICBsZXQgcmVnaW1lID0gZ2V0X3JlZ2ltZV9leG4gdCBpbmRleCBpblxuICBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzIHJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHNcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvblxuaW5jbHVkZSBTb3VyY2VfY29kZV9wb3NpdGlvbjBcbmluY2x1ZGUgQ29tcGFyYWJsZS5FeHRlbmQgKEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24pIChTb3VyY2VfY29kZV9wb3NpdGlvbjApXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFNvdXJjZV9jb2RlX3Bvc2l0aW9uMClcbiIsImluY2x1ZGUgQmFzZS5UeXBlX2VxdWFsXG5cbm1vZHVsZSBJZCA9IHN0cnVjdFxuICBpbmNsdWRlIElkXG5cbiAgbW9kdWxlIFVpZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBVcHN0cmVhbSA9IEJhc2UuVHlwZV9lcXVhbC5JZC5VaWRcbiAgICBpbmNsdWRlIEJhc2UuVHlwZV9lcXVhbC5JZC5VaWRcblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuRXh0ZW5kXG4gICAgICAgIChVcHN0cmVhbSlcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEJhc2UuVHlwZV9lcXVhbC5JZC5VaWQudCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFVwc3RyZWFtKVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBWYWxpZGF0ZWRfaW50ZlxuXG5tb2R1bGUgdHlwZSBSYXcgPSBSYXdcblxudHlwZSAoJ3JhdywgJ3dpdG5lc3MpIHQgPSAncmF3XG5cbm1vZHVsZSB0eXBlIFMgPSBTIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTX2FsbG93aW5nX3N1YnN0aXR1dGlvbiA9XG4gIFNfYWxsb3dpbmdfc3Vic3RpdHV0aW9uIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTX2Jpbl9pbyA9IFNfYmluX2lvIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTX2Jpbl9pb19jb21wYXJlX2hhc2hfc2V4cCA9XG4gIFNfYmluX2lvX2NvbXBhcmVfaGFzaF9zZXhwIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5sZXQgcmF3IHQgPSB0XG5cbm1vZHVsZSBNYWtlIChSYXcgOiBSYXcpID0gc3RydWN0XG4gIHR5cGUgd2l0bmVzc1xuICB0eXBlIHQgPSBSYXcudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB2YWxpZGF0aW9uX2ZhaWxlZCB0IGVycm9yID1cbiAgICBFcnJvci5jcmVhdGVcbiAgICAgIFwidmFsaWRhdGlvbiBmYWlsZWRcIlxuICAgICAgKHQsIGVycm9yLCBSYXcuaGVyZSlcbiAgICAgIFslc2V4cF9vZjogUmF3LnQgKiBFcnJvci50ICogU291cmNlX2NvZGVfcG9zaXRpb24udF1cbiAgOztcblxuICBsZXQgY3JlYXRlX2V4biB0ID1cbiAgICBtYXRjaCBWYWxpZGF0ZS5yZXN1bHQgKFJhdy52YWxpZGF0ZSB0KSB3aXRoXG4gICAgfCBPayAoKSAtPiB0XG4gICAgfCBFcnJvciBlcnJvciAtPiBFcnJvci5yYWlzZSAodmFsaWRhdGlvbl9mYWlsZWQgdCBlcnJvcilcbiAgOztcblxuICBsZXQgY3JlYXRlIHQgPVxuICAgIG1hdGNoIFZhbGlkYXRlLnJlc3VsdCAoUmF3LnZhbGlkYXRlIHQpIHdpdGhcbiAgICB8IE9rICgpIC0+IE9rIHRcbiAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yICh2YWxpZGF0aW9uX2ZhaWxlZCB0IGVycm9yKVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9IGNyZWF0ZV9leG4gKFJhdy50X29mX3NleHAgc2V4cClcbiAgbGV0IHJhdyB0ID0gdFxuXG4gIGxldCBjcmVhdGVfc3RhYmxlX3dpdG5lc3MgcmF3X3N0YWJsZV93aXRuZXNzID1cbiAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGUgcmF3X3N0YWJsZV93aXRuZXNzIGNyZWF0ZV9leG4gcmF3XG4gIDs7XG5cbiAgbGV0IHR5cGVfZXF1YWwgPSBUeXBlX2VxdWFsLlRcbmVuZFxuXG5tb2R1bGUgQWRkX2Jpbl9pbyAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGluY2x1ZGUgUmF3X2Jpbl9pbyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoVmFsaWRhdGVkIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZVxuICAgIEJpbmFibGUuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgIChSYXcpXG4gICAgICAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IFJhdy50XG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcmF3ID1cbiAgICAgICAgICBpZiBSYXcudmFsaWRhdGVfYmluaW9fZGVzZXJpYWxpemF0aW9uIHRoZW4gVmFsaWRhdGVkLmNyZWF0ZV9leG4gcmF3IGVsc2UgcmF3XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBGbi5pZFxuICAgICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBBZGRfY29tcGFyZSAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFJhdyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoXyA6IFMgd2l0aCB0eXBlIHJhdyA6PSBSYXcudCkgPVxuc3RydWN0XG4gIGxldCBjb21wYXJlIHQxIHQyID0gWyVjb21wYXJlOiBSYXcudF0gKHJhdyB0MSkgKHJhdyB0MilcbmVuZFxuXG5tb2R1bGUgQWRkX2hhc2ggKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgaW5jbHVkZSBSYXcgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG4gICAgKFZhbGlkYXRlZCA6IFMgd2l0aCB0eXBlIHJhdyA6PSBSYXcudCkgPVxuc3RydWN0XG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gUmF3Lmhhc2hfZm9sZF90IHN0YXRlIChWYWxpZGF0ZWQucmF3IHQpXG4gIGxldCBoYXNoIHQgPSBSYXcuaGFzaCAoVmFsaWRhdGVkLnJhdyB0KVxuZW5kXG5cbm1vZHVsZSBBZGRfdHlwZXJlcCAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbiAgICBpbmNsdWRlIFJhdyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoXyA6IFMgd2l0aCB0eXBlIHJhdyA6PSBSYXcudCkgPVxuc3RydWN0XG4gIHR5cGUgdCA9IFJhdy50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoUmF3IDogUmF3X2Jpbl9pbykgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQwID0gTWFrZSAoUmF3KVxuICBpbmNsdWRlIFQwXG4gIGluY2x1ZGUgQWRkX2Jpbl9pbyAoUmF3KSAoVDApXG5lbmRcblxubW9kdWxlIE1ha2VfYmluX2lvX2NvbXBhcmVfaGFzaF9zZXhwIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICAgIGluY2x1ZGUgUmF3X2Jpbl9pbyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUID0gTWFrZV9iaW5hYmxlIChSYXcpXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIEFkZF9jb21wYXJlIChSYXcpIChUKVxuXG4gIGluY2x1ZGUgKFxuICAgIEFkZF9oYXNoIChSYXcpIChUKSA6XG4gICAgc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOYW5vc2Vjb25kXG4gIHwgTWljcm9zZWNvbmRcbiAgfCBNaWxsaXNlY29uZFxuICB8IFNlY29uZFxuICB8IE1pbnV0ZVxuICB8IEhvdXJcbiAgfCBEYXlcbltAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGVudW1lcmF0ZSwgaGFzaF1cbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gVW5pcXVlX2lkX2ludGZcblxubW9kdWxlIHR5cGUgSWQgPSBJZFxuXG4oKiBPbmx5IFwibWFrZVwiIGNhbiBjYXVzZSBhIGNvbnRleHQtc3dpdGNoIHRoYXQgbWlnaHQgbGVhZCB0byBhIHJhY2UuXG4gICBUaHVzIHdlIGhhdmUgdG8gY2hlY2sgd2hldGhlciB0aGUgY29udGVudHMgb2YgdGhlIGNlbGwgcmVtYWluZWRcbiAgIHVuY2hhbmdlZCBhY3Jvc3MgdGhpcyBjYWxsLiAgVGhlIHN1YnNlcXVlbnQgY29tcGFyaXNvbiwgZGVyZWZlcmVuY2luZ1xuICAgYW5kIGFzc2lnbm1lbnQgY2Fubm90IGNhdXNlIGNvbnRleHQgc3dpdGNoZXMuICBJZiB0aGUgY29udGVudHMgb2YgdGhlXG4gICBjZWxsIGhhZCBjaGFuZ2VkLCB3ZSB3aWxsIGhhdmUgdG8gdHJ5IGFnYWluIHRvIG9idGFpbiBhIHVuaXF1ZSBpZC5cbiAgIFRoaXMgaXMgZXNzZW50aWFsbHkgbGlrZSBhIHNwaW4tbG9jayBhbmQgaXMgdmlydHVhbGx5IGd1YXJhbnRlZWQgdG9cbiAgIHN1Y2NlZWQgcXVpY2tseS4gKilcbmxldCByZWMgcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGNlbGwgbWFrZSA9XG4gIGxldCB4ID0gIWNlbGwgaW5cbiAgbGV0IG5ld194ID0gbWFrZSB4IGluXG4gIGlmIHBoeXNfZXF1YWwgIWNlbGwgeFxuICB0aGVuIChcbiAgICBjZWxsIDo9IG5ld194O1xuICAgIHgpXG4gIGVsc2UgcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGNlbGwgbWFrZVxuOztcblxubW9kdWxlIEludCAoKSA9IHN0cnVjdFxuICBpbmNsdWRlIEludFxuXG4gIGxldCBjdXJyZW50ID0gcmVmIHplcm9cbiAgbGV0IGNyZWF0ZSAoKSA9IHJhY2VfZnJlZV9jcmVhdGVfbG9vcCBjdXJyZW50IHN1Y2NcbmVuZFxuXG5tb2R1bGUgSW50NjMgKCkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbnQ2M1xuXG4gIGxldCBjdXJyZW50ID0gcmVmIHplcm9cbiAgbGV0IGNyZWF0ZSAoKSA9IHJhY2VfZnJlZV9jcmVhdGVfbG9vcCBjdXJyZW50IHN1Y2NcbmVuZFxuIiwiKCogVGhpcyBtb2R1bGUgaXMgdmVyeSBtdWNoIGRlcGVuZGVudCBvbiB0aGUgcnVudGltZSByZXByZXNlbnRhdGlvbiBvZiB2YWx1ZXMuICBTaG91bGQgdGhlXG4gICB3YXkgdGhlIGNvbXBpbGVyIHJlcHJlc2VudHMgdmFyaW91cyB0eXBlcyBjaGFuZ2UsIGl0IG5lZWRzIHRvIGJlIHJlZmxlY3RlZCBpbiB0aGlzXG4gICBtb2R1bGUsIG90aGVyd2lzZSBiYWQgdGhpbmdzIGNvdWxkIGhhcHBlbi4gIFRoZXJlZm9yZSB0aGUgY29udmVyc2lvbnMgYW5kXG4gICByZXByZXNlbnRhdGlvbnMgYXJlIHRlc3RlZCB0aG9yb3VnaGx5IGluIFsuLi90ZXN0L3Rlc3Rfd2l0bmVzcy5tbF0gYW5kXG4gICBbLi4vdGVzdC90ZXN0X2NvbnZlcnNpb25zLm1sXVxuKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IEJhc2UuTGlzdFxubW9kdWxlIEhhc2hfc2V0ID0gQmFzZS5IYXNoX3NldFxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5cbm1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgKCogVGhlIGludGVnZXJzIGhlcmUgYXJlIHRoZSB2YWx1ZXMgdW5kZXJseWluZyB0aGUgcG9seW1vcnBoaWMgdmFyaWFudHMsIHRoZXkgYWxyZWFkeVxuICAgICBhcmUgaGFzaGVzIG9mIGNvbnN0cnVjdG9yIG5hbWVzLCBhbmQgaGVuY2UgYXJlIGV4cGVjdGVkIHRvIGJlIHVuaWZvcm1seVxuICAgICBkaXN0cmlidXRlZC4gKilcbiAgbGV0IGhhc2ggeCA9IHhcbmVuZFxuXG5tb2R1bGUgQWxsb3dlZF9pbnRzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOb25lXG4gICAgfCBBbGxcbiAgICB8IEhhc2hfc2V0IG9mIEhhc2hfc2V0Lk0oS2V5KS50XG4gICAgfCBGcm9tX3plcm9fdG8gb2YgaW50XG5cbiAgbGV0IF9pbnZhcmlhbnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSB8IEFsbCB8IEhhc2hfc2V0IF8gLT4gKClcbiAgICB8IEZyb21femVyb190byBuIC0+IGFzc2VydCAobiA+PSAwKVxuICA7O1xuXG4gIGxldCBpbnRfaXNfdmFsdWUgdCBpID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IEFsbCAtPiB0cnVlXG4gICAgfCBIYXNoX3NldCBoYXNoX3NldCAtPiBIYXNoX3NldC5tZW0gaGFzaF9zZXQgaVxuICAgIHwgRnJvbV96ZXJvX3RvIG4gLT4gMCA8PSBpICYmIGkgPD0gblxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbW1lZGlhY3kgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEFsd2F5c1xuICAgIHwgU29tZXRpbWVzXG4gICAgfCBOZXZlclxuICAgIHwgVW5rbm93blxuICBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cblxuICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IEFsd2F5cyAtPiBcIkFsd2F5c1wiXG4gICAgfCBTb21ldGltZXMgLT4gXCJTb21ldGltZXNcIlxuICAgIHwgTmV2ZXIgLT4gXCJOZXZlclwiXG4gICAgfCBVbmtub3duIC0+IFwiVW5rbm93blwiXG4gIDs7XG5lbmRcblxub3BlbiBJbW1lZGlhY3lcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGNyZWF0ZSA6ICdhIFR5cGVuYW1lLnQgLT4gSW1tZWRpYWN5LnQgLT4gQWxsb3dlZF9pbnRzLnQgLT4gJ2EgdFxuICB2YWwgY3JlYXRlX3dpdGhfbmFtZSA6IHN0cmluZyAtPiBJbW1lZGlhY3kudCAtPiBBbGxvd2VkX2ludHMudCAtPiBfIHRcbiAgdmFsIGltbWVkaWFjeSA6IF8gdCAtPiBJbW1lZGlhY3kudFxuICB2YWwgYWxsb3dlZF9pbnRzIDogXyB0IC0+IEFsbG93ZWRfaW50cy50XG4gIHZhbCB0eXBlbmFtZSA6IF8gdCAtPiBzdHJpbmdcblxuICBtb2R1bGUgTmV2ZXJfdmFsdWVzIDogc2lnXG4gICAgdmFsIGludDMyIDogaW50MzIgdFxuICAgIHZhbCBpbnQ2NCA6IGludDY0IHRcbiAgICB2YWwgbmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgICB2YWwgZmxvYXQgOiBmbG9hdCB0XG4gICAgdmFsIHN0cmluZyA6IHN0cmluZyB0XG4gICAgdmFsIGJ5dGVzIDogYnl0ZXMgdFxuICAgIHZhbCBhcnJheSA6IF8gYXJyYXkgdFxuICAgIHZhbCByZWZfIDogXyByZWYgdFxuICAgIHZhbCB0dXBsZTIgOiAoXyAqIF8pIHRcbiAgICB2YWwgdHVwbGUzIDogKF8gKiBfICogXykgdFxuICAgIHZhbCB0dXBsZTQgOiAoXyAqIF8gKiBfICogXykgdFxuICAgIHZhbCB0dXBsZTUgOiAoXyAqIF8gKiBfICogXyAqIF8pIHRcbiAgICB2YWwgZnVuY3Rpb25fIDogKF8gLT4gXykgdFxuICBlbmRcblxuICB2YWwgbmV2ZXIgOiAnYSBUeXBlbmFtZS50IC0+ICdhIHRcbiAgdmFsIHVua25vd24gOiAnYSBUeXBlbmFtZS50IC0+ICdhIHRcbiAgdmFsIG9wdGlvbiA6IF8gdFxuICB2YWwgbGlzdCA6IF8gdFxuICB2YWwgbWFnaWMgOiBfIHQgLT4gXyB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0XyA9XG4gICAgeyBpbW1lZGlhY3kgOiBJbW1lZGlhY3kudFxuICAgIDsgYWxsb3dlZF9pbnRzIDogQWxsb3dlZF9pbnRzLnRcbiAgICA7IHR5cGVuYW1lIDogc3RyaW5nXG4gICAgfVxuXG4gIHR5cGUgJ2EgdCA9IHRfXG5cbiAgbGV0IGNyZWF0ZV93aXRoX25hbWUgdHlwZW5hbWUgaW1tZWRpYWN5IGFsbG93ZWRfaW50cyA9XG4gICAgeyBpbW1lZGlhY3k7IGFsbG93ZWRfaW50czsgdHlwZW5hbWUgfVxuICA7O1xuXG4gIGxldCBjcmVhdGUgdHlwZW5hbWUgaW1tZWRpYWN5IGFsbG93ZWRfaW50cyA9XG4gICAgY3JlYXRlX3dpdGhfbmFtZSAoVHlwZW5hbWUubmFtZSB0eXBlbmFtZSkgaW1tZWRpYWN5IGFsbG93ZWRfaW50c1xuICA7O1xuXG4gIGxldCBpbW1lZGlhY3kgdCA9IHQuaW1tZWRpYWN5XG4gIGxldCBhbGxvd2VkX2ludHMgdCA9IHQuYWxsb3dlZF9pbnRzXG4gIGxldCB0eXBlbmFtZSB0ID0gdC50eXBlbmFtZVxuICBsZXQgbWFnaWMgdCA9IHRcbiAgbGV0IG5ldmVyX3dpdGhfbmFtZSBuYW1lID0gY3JlYXRlX3dpdGhfbmFtZSBuYW1lIE5ldmVyIE5vbmVcbiAgbGV0IG5ldmVyIHR5cGVuYW1lID0gY3JlYXRlIHR5cGVuYW1lIE5ldmVyIE5vbmVcbiAgbGV0IHVua25vd24gdHlwZW5hbWUgPSBjcmVhdGUgdHlwZW5hbWUgVW5rbm93biBOb25lXG5cbiAgbGV0IG9wdGlvbiA9IGNyZWF0ZV93aXRoX25hbWUgXCJvcHRpb25cIiBTb21ldGltZXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMClcbiAgbGV0IGxpc3QgPSBjcmVhdGVfd2l0aF9uYW1lIFwibGlzdFwiIFNvbWV0aW1lcyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAwKVxuXG4gIG1vZHVsZSBOZXZlcl92YWx1ZXMgPSBzdHJ1Y3RcbiAgICAoKiBpbnQzMiBpcyBib3hlZCBldmVuIG9uIDY0YiBwbGF0Zm9ybSBhdCB0aGUgbW9tZW50LiAqKVxuICAgIGxldCBpbnQzMiA9IG5ldmVyIHR5cGVuYW1lX29mX2ludDMyXG4gICAgbGV0IGludDY0ID0gbmV2ZXIgdHlwZW5hbWVfb2ZfaW50NjRcbiAgICBsZXQgbmF0aXZlaW50ID0gbmV2ZXIgdHlwZW5hbWVfb2ZfbmF0aXZlaW50XG4gICAgbGV0IGZsb2F0ID0gbmV2ZXIgdHlwZW5hbWVfb2ZfZmxvYXRcbiAgICBsZXQgc3RyaW5nID0gbmV2ZXIgdHlwZW5hbWVfb2Zfc3RyaW5nXG4gICAgbGV0IGJ5dGVzID0gbmV2ZXIgdHlwZW5hbWVfb2ZfYnl0ZXNcbiAgICBsZXQgYXJyYXkgPSBuZXZlcl93aXRoX25hbWUgXCJhcnJheVwiXG4gICAgbGV0IHJlZl8gPSBuZXZlcl93aXRoX25hbWUgXCJyZWZcIlxuICAgIGxldCB0dXBsZTIgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTJcIlxuICAgIGxldCB0dXBsZTMgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTNcIlxuICAgIGxldCB0dXBsZTQgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTRcIlxuICAgIGxldCB0dXBsZTUgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTVcIlxuXG4gICAgbGV0IGZ1bmN0aW9uXyA9IG5ldmVyX3dpdGhfbmFtZSBcImZ1bmN0aW9uXCJcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBpbnQgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfaW50IEFsd2F5cyBBbGxvd2VkX2ludHMuQWxsXG5sZXQgdW5pdCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl91bml0IEFsd2F5cyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAwKVxubGV0IGJvb2wgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfYm9vbCBBbHdheXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMSlcbmxldCBjaGFyID0gY3JlYXRlIHR5cGVuYW1lX29mX2NoYXIgQWx3YXlzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDI1NSlcblxubW9kdWxlIENvbXB1dGF0aW9uX2ltcGwgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIFR5cGVfZ2VuZXJpYy5WYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5NIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgTmV2ZXJfdmFsdWVzXG5cbiAgbGV0IHJlZl8gXyA9IHJlZl9cbiAgbGV0IGFycmF5IF8gPSBhcnJheVxuICBsZXQgdHVwbGUyIF8gXyA9IHR1cGxlMlxuICBsZXQgdHVwbGUzIF8gXyBfID0gdHVwbGUzXG4gIGxldCB0dXBsZTQgXyBfIF8gXyA9IHR1cGxlNFxuICBsZXQgdHVwbGU1IF8gXyBfIF8gXyA9IHR1cGxlNVxuICBsZXQgZnVuY3Rpb25fIF8gXyA9IGZ1bmN0aW9uX1xuICBsZXQgaW50ID0gaW50XG4gIGxldCBjaGFyID0gY2hhclxuICBsZXQgYm9vbCA9IGJvb2xcbiAgbGV0IHVuaXQgPSB1bml0XG4gIGxldCBvcHRpb24gXyA9IG9wdGlvblxuICBsZXQgbGlzdCBfID0gbGlzdFxuXG4gICgqIEFuIFthIExhenkudF0gbWlnaHQgYmUgYSBib3hlZCBjbG9zdXJlLCBzbyBtdXN0IGhhdmUgaW1tZWRpYWN5IGVpdGhlciBbTmV2ZXJdIG9yXG4gICAgIFtTb21ldGltZXNdLiAgQW4gW2EgTGF6eS50XSB2YWx1ZSBjb3VsZCBiZSBpbW1lZGlhdGUgaWYgW2FdIGlzIGltbWVkaWF0ZS4gIEJ1dCBpZiBbYV1cbiAgICAgaXMgbmV2ZXIgaW1tZWRpYXRlLCB0aGVuIFthIExhenkudF0gY2Fubm90IGJlLiAqKVxuICBsZXQgbGF6eV90IHQgPVxuICAgIGxldCBpbW1lZGlhY3kgPVxuICAgICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgICAgfCBOZXZlciAtPiBOZXZlclxuICAgICAgfCBVbmtub3duIC0+IFVua25vd25cbiAgICAgIHwgU29tZXRpbWVzIHwgQWx3YXlzIC0+IFNvbWV0aW1lc1xuICAgIGluXG4gICAgY3JlYXRlX3dpdGhfbmFtZSBcImxhenlfdFwiIGltbWVkaWFjeSAoYWxsb3dlZF9pbnRzIHQpXG4gIDs7XG5cbiAgbGV0IHBvc3NpYmx5X3VuYm94ZWQgdHlwZW5hbWUgY2hpbGRfdHlwZSA9XG4gICAgbWF0Y2ggaW1tZWRpYWN5IGNoaWxkX3R5cGUgd2l0aFxuICAgIHwgTmV2ZXIgLT4gbmV2ZXIgdHlwZW5hbWVcbiAgICB8IFVua25vd24gfCBBbHdheXMgfCBTb21ldGltZXMgLT4gdW5rbm93biB0eXBlbmFtZVxuICA7O1xuXG4gIGxldCByZWNvcmQgciA9XG4gICAgaWYgUmVjb3JkLmxlbmd0aCByID4gMVxuICAgIHRoZW4gbmV2ZXIgKFJlY29yZC50eXBlbmFtZV9vZl90IHIpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgKEZpZWxkIHRoZV9vbmx5X2ZpZWxkKSA9IFJlY29yZC5maWVsZCByIDAgaW5cbiAgICAgIHBvc3NpYmx5X3VuYm94ZWQgKFJlY29yZC50eXBlbmFtZV9vZl90IHIpIChGaWVsZC50cmF2ZXJzZSB0aGVfb25seV9maWVsZCkpXG4gIDs7XG5cbiAgKCogVmFyaWFudHMgd2l0aCBhbGwgY29uc3RydWN0b3JzIGhhdmluZyBubyBhcmd1bWVudHMgYXJlIGFsd2F5cyBpbW1lZGlhdGU7IHZhcmlhbnRzXG4gICAgIHdpdGggYWxsIGNvbnN0cnVjdG9ycyBoYXZpbmcgc29tZSBhcmd1bWVudHMgYXJlIG5ldmVyIGltbWVkaWF0ZTsgbWl4ZWQgdmFyaWFudHMgYXJlXG4gICAgIHNvbWV0aW1lcyBpbW1lZGlhdGUuXG5cbiAgICAgSWYgYSB2YXJpYW50IGhhcyBhIHNpbmdsZSBjb25zdHJ1Y3RvciwgYW5kIHRoZSBjb25zdHJ1Y3RvciBoYXMgYW4gYXJndW1lbnQsIHRoZVxuICAgICB2YXJpYW50IGNhbiBiZSB1bmJveGVkLiBJZiB1bmJveGVkLCBlaXRoZXIgZXhwbGljaXRseSBvciBieSBkZWZhdWx0IChkZXBlbmRpbmcgb25cbiAgICAgY29tcGlsZXIgc2V0dGluZ3MpLCB0aGUgcmVwcmVzZW50YXRpb24gaXMgc2ltcGx5IHRoZSBhcmd1bWVudC4gT3RoZXJ3aXNlLCB0aGUgcnVsZXNcbiAgICAgYWJvdmUgYXBwbHkgbm9ybWFsbHkuICopXG4gIGxldCB2YXJpYW50IHZhcmlhbnQgPVxuICAgIGxldCBub19hcmdfbGlzdCwgb25lX2FyZ19saXN0LCBtb3JlX2FyZ19saXN0ID1cbiAgICAgIFZhcmlhbnQuZm9sZCB2YXJpYW50IH5pbml0OihbXSwgW10sIFtdKSB+ZjooZnVuIChubywgb25lLCBtb3JlKSAoVGFnIHQgYXMgdGFnKSAtPlxuICAgICAgICBtYXRjaCBUYWcuYXJpdHkgdCB3aXRoXG4gICAgICAgIHwgMCAtPiB0YWcgOjogbm8sIG9uZSwgbW9yZVxuICAgICAgICB8IDEgLT4gbm8sIHRhZyA6OiBvbmUsIG1vcmVcbiAgICAgICAgfCBfIC0+IG5vLCBvbmUsIHRhZyA6OiBtb3JlKVxuICAgIGluXG4gICAgbWF0Y2ggbm9fYXJnX2xpc3QsIG9uZV9hcmdfbGlzdCwgbW9yZV9hcmdfbGlzdCB3aXRoXG4gICAgfCBbXSwgWyBUYWcgdGFnIF0sIFtdIHdoZW4gbm90IChWYXJpYW50LmlzX3BvbHltb3JwaGljIHZhcmlhbnQpIC0+XG4gICAgICBwb3NzaWJseV91bmJveGVkIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudCkgKFRhZy50cmF2ZXJzZSB0YWcpXG4gICAgfCBbXSwgW10sIFtdIC0+XG4gICAgICAoKiBXZSBkb24ndCBoYXZlIGFuIGV4cGxpY3Qgd2F5IG9mIHNheWluZyBhIHR5cGUgaXMgdW5pbmhhYml0ZWQuICopXG4gICAgICB1bmtub3duIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudClcbiAgICB8IFtdLCBfIDo6IF8sIF8gfCBbXSwgXywgXyA6OiBfIC0+IG5ldmVyIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudClcbiAgICB8IF8gOjogXywgXywgXyAtPlxuICAgICAgbGV0IG5vX2FyZ19jb3VudCA9IExpc3QubGVuZ3RoIG5vX2FyZ19saXN0IGluXG4gICAgICBsZXQgYWxsb3dlZF9pbnRzID1cbiAgICAgICAgaWYgbm90IChWYXJpYW50LmlzX3BvbHltb3JwaGljIHZhcmlhbnQpXG4gICAgICAgIHRoZW4gQWxsb3dlZF9pbnRzLkZyb21femVyb190byAobm9fYXJnX2NvdW50IC0gMSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGhhc2hfc2V0ID0gSGFzaF9zZXQuY3JlYXRlIChtb2R1bGUgS2V5KSB+c2l6ZToobm9fYXJnX2NvdW50ICogMikgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgbm9fYXJnX2xpc3QgfmY6KGZ1biAoVGFnIHRhZykgLT5cbiAgICAgICAgICAgIG1hdGNoIFRhZy5jcmVhdGUgdGFnIHdpdGhcbiAgICAgICAgICAgIHwgVGFnLkNvbnN0IF8gLT4gSGFzaF9zZXQuYWRkIGhhc2hfc2V0IChUYWcub2NhbWxfcmVwciB0YWcpXG4gICAgICAgICAgICB8IFRhZy5BcmdzIF8gLT4gYXNzZXJ0IGZhbHNlKTtcbiAgICAgICAgICBBbGxvd2VkX2ludHMuSGFzaF9zZXQgaGFzaF9zZXQpXG4gICAgICBpblxuICAgICAgbGV0IGltbWVkaWFjeSA9XG4gICAgICAgIGlmIExpc3QuaXNfZW1wdHkgb25lX2FyZ19saXN0ICYmIExpc3QuaXNfZW1wdHkgbW9yZV9hcmdfbGlzdFxuICAgICAgICB0aGVuIEFsd2F5c1xuICAgICAgICBlbHNlIFNvbWV0aW1lc1xuICAgICAgaW5cbiAgICAgIGNyZWF0ZSAoVmFyaWFudC50eXBlbmFtZV9vZl90IHZhcmlhbnQpIGltbWVkaWFjeSBhbGxvd2VkX2ludHNcbiAgOztcblxuICBsZXQgbmFtZSA9IFwiaXNfaW1tZWRpYXRlXCJcbiAgbGV0IHJlcXVpcmVkID0gW11cblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdW5pdFxuXG4gICAgICBsZXQgY3JlYXRlICgpID0gKClcbiAgICBlbmRcblxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IHJlZlxuXG4gICAgKCogVGhlIGRlZmF1bHQgd2l0bmVzcyAtIHdoaWNoIGlzIGNyZWF0ZWQgYnkgY2FsbGluZyBbaW5pdF0gYW5kIHJlY292ZXJlZCBhdCBhbnkgbGF0ZXJcbiAgICAgICBwb2ludCBieSBjYWxsaW5nIFtnZXRfd2lwX2NvbXB1dGF0aW9uXSAtIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSByZWN1cnNpdmUgdHlwZS5cbiAgICAgICBPdGhlciB0eXBlcyB0aGF0IGRvbid0IHVzZSBbZ2V0X3dpcF9jb21wdXRhdGlvbl0gd2lsbCBqdXN0IGV2YWx1YXRlIHRvIHRoZSBhY3R1YWxcbiAgICAgICB3aXRuZXNzIHdoaWNoIHdpbGwgcmVwbGFjZSB0aGUgaW5pdGlhbCBkdW1teSBvbmUuICopXG4gICAgbGV0IGluaXQgXyBuYW1lID0gcmVmIChjcmVhdGUgbmFtZSBTb21ldGltZXMgQWxsb3dlZF9pbnRzLk5vbmUpXG4gICAgbGV0IGdldF93aXBfY29tcHV0YXRpb24gY29tcCA9ICFjb21wXG5cbiAgICBsZXQgc2V0X2ZpbmFsX2NvbXB1dGF0aW9uIHIgdCA9XG4gICAgICByIDo9IHQ7XG4gICAgICB0XG4gICAgOztcblxuICAgIGxldCBzaGFyZSBfID0gdHJ1ZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgR2VuZXJpYyA9IFR5cGVfZ2VuZXJpYy5NYWtlIChDb21wdXRhdGlvbl9pbXBsKVxuXG5sZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgbGV0IChgZ2VuZXJpYyB0KSA9IEdlbmVyaWMub2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gIHRcbjs7XG5cbm1vZHVsZSBGb3JfYWxsX3BhcmFtZXRlcnMgKE0gOiBzaWdcbiAgICB2YWwgaW1tZWRpYWN5IDogSW1tZWRpYWN5LnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IHdpdG5lc3MgdHlwZXJlcDEgdHlwZXJlcDIgPVxuICAgIGxldCB0MSA9IG9mX3R5cGVyZXAgdHlwZXJlcDEgaW5cbiAgICBsZXQgdDIgPSBvZl90eXBlcmVwIHR5cGVyZXAyIGluXG4gICAgbGV0IGkxID0gaW1tZWRpYWN5IHQxIGluXG4gICAgbGV0IGkyID0gaW1tZWRpYWN5IHQyIGluXG4gICAgaWYgbm90IChJbW1lZGlhY3kuZXF1YWwgaTEgaTIpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgXCJ0eXBlICVzIGlzIG5vdCBpbmRlcGVuZGVudCBvZiBpdHMgYXJndW1lbnRzXCJcbiAgICAgICAgICAgKFR5cGVuYW1lLm5hbWUgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCB0eXBlcmVwMSkpKVxuICAgIGVsc2UgaWYgbm90IChJbW1lZGlhY3kuZXF1YWwgaTEgTS5pbW1lZGlhY3kpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgXCJ0eXBlICVzIGRvZXMgbm90IGhhdmUgZGVzaXJlZCBpbW1lZGlhY3k6IHdhbnRlZCAlcyBidXQgZ290ICVzXCJcbiAgICAgICAgICAgKFR5cGVuYW1lLm5hbWUgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCB0eXBlcmVwMSkpXG4gICAgICAgICAgIChJbW1lZGlhY3kudG9fc3RyaW5nIE0uaW1tZWRpYWN5KVxuICAgICAgICAgICAoSW1tZWRpYWN5LnRvX3N0cmluZyBpMSkpXG4gICAgZWxzZSB0MVxuICA7O1xuXG4gICgqIGFsd2F5cyBpbW1lZGlhdGUgKilcbiAgbGV0IHJhID0gVHlwZXJlcC5JbnRcblxuICAoKiBuZXZlciBpbW1lZGlhdGUgKilcbiAgbGV0IHJuID0gVHlwZXJlcC5TdHJpbmdcblxuICAoKiBFYWNoIG9mIHRoZSBbRm9yX2FsbF9wYXJhbWV0ZXJzXypdIGZ1bmN0b3JzIHdvcmtzIGJ5IGluc3RhbnRpYXRpbmcgdGhlIG4tYXJ5IHR5cGVcbiAgICAgd2l0aCBhbGwgW0Fsd2F5c10gdHlwZXMsIGFuZCB0aGVuIHdpdGggYWxsIFtOZXZlcl0gdHlwZXMuICBJZiB0aG9zZSBwcm9kdWNlIHRoZSBzYW1lXG4gICAgIGltbWVkaWFjeSwgdGhlbiB3ZSBjb25jbHVkZSB0aGF0IHRoZSBuLWFyeSB0eXBlIGlzIGluZGVwZW5kZW50IG9mIGl0cyBhcmd1bWVudHMuICopXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TMSAoWCA6IFR5cGVyZXBhYmxlLlMxKSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEpIChYLnR5cGVyZXBfb2ZfdCBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TMiAoWCA6IFR5cGVyZXBhYmxlLlMyKSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TMyAoWCA6IFR5cGVyZXBhYmxlLlMzKSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TNCAoWCA6IFR5cGVyZXBhYmxlLlM0KSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybiBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TNSAoWCA6IFR5cGVyZXBhYmxlLlM1KSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEgcmEgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybiBybiBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5lbmRcblxubGV0IGludF9pc192YWx1ZSB0IGludCA9IEFsbG93ZWRfaW50cy5pbnRfaXNfdmFsdWUgKGFsbG93ZWRfaW50cyB0KSBpbnRcblxubGV0IGludF9hc192YWx1ZSAodHlwZSBhKSAodCA6IGEgdCkgaW50ID1cbiAgaWYgaW50X2lzX3ZhbHVlIHQgaW50IHRoZW4gU29tZSAoT2JqLm1hZ2ljIChpbnQgOiBpbnQpIDogYSkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50X2FzX3ZhbHVlX2V4biAodHlwZSBhKSAodCA6IGEgdCkgaW50ID1cbiAgaWYgaW50X2lzX3ZhbHVlIHQgaW50XG4gIHRoZW4gKE9iai5tYWdpYyAoaW50IDogaW50KSA6IGEpXG4gIGVsc2VcbiAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIkltbWVkaWF0ZS5pbnRfYXNfdmFsdWVfZXhuOiB0eXBlbmFtZTolUyBpbnQ6JWRcIiAoVC50eXBlbmFtZSB0KSBpbnQpXG47O1xuXG5sZXQgdmFsdWVfYXNfaW50X2V4biAodHlwZSBhKSAodCA6IGEgdCkgYSA9XG4gIGlmIE9iai5pc19pbnQgKE9iai5yZXByIGEpXG4gIHRoZW4gKE9iai5tYWdpYyAoYSA6IGEpIDogaW50KVxuICBlbHNlIGZhaWx3aXRoIChzcHJpbnRmIFwiSW1tZWRpYXRlLnZhbHVlX2FzX2ludF9leG46IHR5cGVuYW1lOiVTXCIgKFQudHlwZW5hbWUgdCkpXG47O1xuXG5sZXQgdmFsdWVfYXNfaW50ICh0eXBlIGEpIChfIDogYSB0KSBhID1cbiAgaWYgT2JqLmlzX2ludCAoT2JqLnJlcHIgYSkgdGhlbiBTb21lIChPYmoubWFnaWMgKGEgOiBhKSA6IGludCkgZWxzZSBOb25lXG47O1xuXG5sZXQgdmFsdWVfaXNfaW50ICh0eXBlIGEpIChfIDogYSB0KSBhID0gT2JqLmlzX2ludCAoT2JqLnJlcHIgYSlcblxubW9kdWxlIEFsd2F5cyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGluY2x1ZGUgRm9yX2FsbF9wYXJhbWV0ZXJzIChzdHJ1Y3RcbiAgICAgIGxldCBpbW1lZGlhY3kgPSBBbHdheXNcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3R5cGVyZXAgdHlwZXJlcCA9XG4gICAgbGV0IHQgPSBvZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgfCBBbHdheXMgLT4gU29tZSB0XG4gICAgfCBVbmtub3duIHwgTmV2ZXIgfCBTb21ldGltZXMgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBvZl90eXBlcmVwX2V4biBoZXJlIHR5cGVyZXAgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlIChvZl90eXBlcmVwIHR5cGVyZXApXG4gIGxldCBpbnRfYXNfdmFsdWUgPSBpbnRfYXNfdmFsdWVcbiAgbGV0IGludF9hc192YWx1ZV9leG4gPSBpbnRfYXNfdmFsdWVfZXhuXG4gIGxldCBpbnRfaXNfdmFsdWUgPSBpbnRfaXNfdmFsdWVcbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSB2YWx1ZV9hc19pbnQgKHR5cGUgYSkgXyBhID0gYSB8PiAoT2JqLm1hZ2ljIDogYSAtPiBpbnQpXG4gIGxldCBpbnQgPSBpbnRcbiAgbGV0IGNoYXIgPSBjaGFyXG4gIGxldCBib29sID0gYm9vbFxuICBsZXQgdW5pdCA9IHVuaXRcbmVuZFxuXG5tb2R1bGUgU29tZXRpbWVzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBGb3JfYWxsX3BhcmFtZXRlcnMgKHN0cnVjdFxuICAgICAgbGV0IGltbWVkaWFjeSA9IFNvbWV0aW1lc1xuICAgIGVuZClcblxuICBsZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgICBsZXQgdCA9IG9mX3R5cGVyZXAgdHlwZXJlcCBpblxuICAgIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgICB8IFNvbWV0aW1lcyAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBBbHdheXMgfCBOZXZlciAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IG9mX3R5cGVyZXBfZXhuIGhlcmUgdHlwZXJlcCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmUgKG9mX3R5cGVyZXAgdHlwZXJlcClcbiAgbGV0IGludF9hc192YWx1ZSA9IGludF9hc192YWx1ZVxuICBsZXQgaW50X2FzX3ZhbHVlX2V4biA9IGludF9hc192YWx1ZV9leG5cbiAgbGV0IGludF9pc192YWx1ZSA9IGludF9pc192YWx1ZVxuICBsZXQgdmFsdWVfYXNfaW50ID0gdmFsdWVfYXNfaW50XG4gIGxldCB2YWx1ZV9hc19pbnRfZXhuID0gdmFsdWVfYXNfaW50X2V4blxuICBsZXQgdmFsdWVfaXNfaW50ID0gdmFsdWVfaXNfaW50XG4gIGxldCBvcHRpb24gPSBvcHRpb25cbiAgbGV0IGxpc3QgPSBsaXN0XG5lbmRcblxubW9kdWxlIE5ldmVyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBGb3JfYWxsX3BhcmFtZXRlcnMgKHN0cnVjdFxuICAgICAgbGV0IGltbWVkaWFjeSA9IE5ldmVyXG4gICAgZW5kKVxuXG4gIGxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICAgIGxldCB0ID0gb2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgIHwgTmV2ZXIgLT4gU29tZSB0XG4gICAgfCBVbmtub3duIHwgQWx3YXlzIHwgU29tZXRpbWVzIC0+IE5vbmVcbiAgOztcblxuICBsZXQgb2ZfdHlwZXJlcF9leG4gaGVyZSB0eXBlcmVwID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZSAob2ZfdHlwZXJlcCB0eXBlcmVwKVxuXG4gIGluY2x1ZGUgTmV2ZXJfdmFsdWVzXG5lbmRcblxudHlwZSAnYSBkZXN0ID1cbiAgfCBBbHdheXMgb2YgJ2EgQWx3YXlzLnRcbiAgfCBTb21ldGltZXMgb2YgJ2EgU29tZXRpbWVzLnRcbiAgfCBOZXZlciBvZiAnYSBOZXZlci50XG4gIHwgVW5rbm93blxuXG5sZXQgZGVzdCB0ID1cbiAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICB8IEFsd2F5cyAtPiBBbHdheXMgdFxuICB8IFNvbWV0aW1lcyAtPiBTb21ldGltZXMgdFxuICB8IE5ldmVyIC0+IE5ldmVyIHRcbiAgfCBVbmtub3duIC0+IFVua25vd25cbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlIHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVDEgOiBUKSAoVDIgOiBUKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUMS50ICogVDIudFxuZW5kXG5cbm1vZHVsZSBUMiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAnYSAqICdiIFtAQGRlcml2aW5nIHNleHAsIHR5cGVyZXBdXG5cbiAgbGV0IGNyZWF0ZSBhIGIgPSBhLCBiXG5cbiAgbGV0IGN1cnJ5IGYgPVxuICAgICgpO1xuICAgIGZ1biBhIGIgLT4gZiAoYSwgYilcbiAgOztcblxuICBsZXQgdW5jdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gKGEsIGIpIC0+IGYgYSBiXG4gIDs7XG5cbiAgWyUlaWYgZmxhbWJkYV9iYWNrZW5kXVxuXG4gIGV4dGVybmFsIGdldDEgOiAoKCdhLCBfKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQwX2ltbXV0XCJcbiAgZXh0ZXJuYWwgZ2V0MiA6ICgoXywgJ2EpIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDFfaW1tdXRcIlxuXG4gIFslJWVsc2VdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgoJ2EsIF8pIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDBcIlxuICBleHRlcm5hbCBnZXQyIDogKChfLCAnYSkgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMVwiXG5cbiAgWyUlZW5kaWZdXG5cbiAgbGV0IG1hcCAoeCwgeSkgfmYgPSBmIHgsIGYgeVxuICBsZXQgbWFwX2ZzdCAoeCwgeSkgfmYgPSBmIHgsIHlcbiAgbGV0IG1hcF9zbmQgKHgsIHkpIH5mID0geCwgZiB5XG4gIGxldCBtYXBfYm90aCAoeCwgeSkgfmYxIH5mMiA9IGYxIHgsIGYyIHlcbiAgbGV0IG1hcDIgKHgxLCB5MSkgKHgyLCB5MikgfmYgPSBmIHgxIHgyLCBmIHkxIHkyXG5cbiAgbGV0IGNvbXBhcmUgfmNtcDEgfmNtcDIgKHgsIHkpICh4JywgeScpID1cbiAgICBtYXRjaCBjbXAxIHggeCcgd2l0aFxuICAgIHwgMCAtPiBjbXAyIHkgeSdcbiAgICB8IGkgLT4gaVxuICA7O1xuXG4gIGxldCBlcXVhbCB+ZXExIH5lcTIgKHgsIHkpICh4JywgeScpID0gZXExIHggeCcgJiYgZXEyIHkgeSdcbiAgbGV0IHN3YXAgKGEsIGIpID0gYiwgYVxuXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgY29tcGFyZSBjbXAxIGNtcDIgPSBjb21wYXJlIH5jbXAxIH5jbXAyXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBUMyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2EgKiAnYiAqICdjIFtAQGRlcml2aW5nIHNleHAsIHR5cGVyZXBdXG5cbiAgbGV0IGNyZWF0ZSBhIGIgYyA9IGEsIGIsIGNcblxuICBsZXQgY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIGEgYiBjIC0+IGYgKGEsIGIsIGMpXG4gIDs7XG5cbiAgbGV0IHVuY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIChhLCBiLCBjKSAtPiBmIGEgYiBjXG4gIDs7XG5cbiAgbGV0IG1hcCAoeCwgeSwgeikgfmYgPSBmIHgsIGYgeSwgZiB6XG4gIGxldCBtYXBfZnN0ICh4LCB5LCB6KSB+ZiA9IGYgeCwgeSwgelxuICBsZXQgbWFwX3NuZCAoeCwgeSwgeikgfmYgPSB4LCBmIHksIHpcbiAgbGV0IG1hcF90cmQgKHgsIHksIHopIH5mID0geCwgeSwgZiB6XG4gIGxldCBtYXBfYWxsICh4LCB5LCB6KSB+ZjEgfmYyIH5mMyA9IGYxIHgsIGYyIHksIGYzIHpcbiAgbGV0IG1hcDIgKHgxLCB5MSwgejEpICh4MiwgeTIsIHoyKSB+ZiA9IGYgeDEgeDIsIGYgeTEgeTIsIGYgejEgejJcblxuICBbJSVpZiBmbGFtYmRhX2JhY2tlbmRdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgoJ2EsIF8sIF8pIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDBfaW1tdXRcIlxuICBleHRlcm5hbCBnZXQyIDogKChfLCAnYSwgXykgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMV9pbW11dFwiXG5cbiAgWyUlZWxzZV1cblxuICBleHRlcm5hbCBnZXQxIDogKCgnYSwgXywgXykgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIGdldDIgOiAoKF8sICdhLCBfKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQxXCJcblxuICBbJSVlbmRpZl1cblxuICAoKiBUaGVyZSdzIG5vICVmaWVsZDIuLi4uKilcbiAgbGV0IGdldDMgKF8sIF8sIGEpID0gYVxuXG4gICgqIGxleGljb2dyYXBoaWMgY29tcGFyaXNvbiAgKilcbiAgbGV0IGNvbXBhcmUgfmNtcDEgfmNtcDIgfmNtcDMgKHgsIHksIHopICh4JywgeScsIHonKSA9XG4gICAgbGV0IGMxID0gY21wMSB4IHgnIGluXG4gICAgaWYgYzEgPD4gMFxuICAgIHRoZW4gYzFcbiAgICBlbHNlIChcbiAgICAgIGxldCBjMiA9IGNtcDIgeSB5JyBpblxuICAgICAgaWYgYzIgPD4gMCB0aGVuIGMyIGVsc2UgY21wMyB6IHonKVxuICA7O1xuXG4gIGxldCBlcXVhbCB+ZXExIH5lcTIgfmVxMyAoeCwgeSwgeikgKHgnLCB5JywgeicpID0gZXExIHggeCcgJiYgZXEyIHkgeScgJiYgZXEzIHogeidcbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wYXJhYmxlX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBIYXNoYWJsZV9zZXhwYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBpbmNsdWRlIEhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhhc2hlcl9zZXhwYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgU2V4cGFibGUgKFMxIDogU2V4cGFibGUuUykgKFMyIDogU2V4cGFibGUuUykgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUzEudCAqIFMyLnQgW0BAZGVyaXZpbmcgc2V4cF1cbmVuZFxuXG5tb2R1bGUgQmluYWJsZSAoQjEgOiBCaW5hYmxlLlMpIChCMiA6IEJpbmFibGUuUykgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQjEudCAqIEIyLnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuZW5kXG5cbm1vZHVsZSBDb21wYXJhdG9yIChTMSA6IENvbXBhcmF0b3IuUykgKFMyIDogQ29tcGFyYXRvci5TKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKFMxKSAoUzIpXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPVxuICAgIChTMS5jb21wYXJhdG9yX3dpdG5lc3MsIFMyLmNvbXBhcmF0b3Jfd2l0bmVzcykgVDIuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBUMi5jb21wYXJhdG9yIFMxLmNvbXBhcmF0b3IgUzIuY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBDb21wYXJhYmxlX3BsYWluIChTMSA6IENvbXBhcmFibGUuU19wbGFpbikgKFMyIDogQ29tcGFyYWJsZS5TX3BsYWluKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvciAoUzEpIChTMilcblxuICAgIGxldCBzZXhwX29mX3QgPSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgQ29tcGFyYWJsZSAoUzEgOiBDb21wYXJhYmxlX3NleHBhYmxlKSAoUzIgOiBDb21wYXJhYmxlX3NleHBhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2V4cGFibGUgKFMxKSAoUzIpXG5cbiAgICBsZXQgY29tcGFyZSAoczEsIHMyKSAoczEnLCBzMicpID1cbiAgICAgIG1hdGNoIFMxLmNvbXBhcmUgczEgczEnIHdpdGhcbiAgICAgIHwgMCAtPiBTMi5jb21wYXJlIHMyIHMyJ1xuICAgICAgfCB4IC0+IHhcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIEhhc2hlciAoSDEgOiBIYXNoZXJfc2V4cGFibGUpIChIMiA6IEhhc2hlcl9zZXhwYWJsZSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBIMS50ICogSDIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBIYXNoZXJfc2V4cGFibGVfb2ZfaGFzaGFibGVfc2V4cGFibGUgKFMgOiBIYXNoYWJsZV9zZXhwYWJsZSkgOlxuICBIYXNoZXJfc2V4cGFibGUgd2l0aCB0eXBlIHQgPSBTLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTXG5cbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG5lbmRcblxubW9kdWxlIEhhc2hhYmxlX3QgKFMxIDogSGFzaGFibGVfc2V4cGFibGUpIChTMiA6IEhhc2hhYmxlX3NleHBhYmxlKSA9XG4gIEhhc2hlclxuICAgIChIYXNoZXJfc2V4cGFibGVfb2ZfaGFzaGFibGVfc2V4cGFibGVcbiAgICAgICAoUzEpKVxuICAgIChIYXNoZXJfc2V4cGFibGVfb2ZfaGFzaGFibGVfc2V4cGFibGUgKFMyKSlcblxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGVfdFxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgU3VuXG4gICAgICAgIHwgTW9uXG4gICAgICAgIHwgVHVlXG4gICAgICAgIHwgV2VkXG4gICAgICAgIHwgVGh1XG4gICAgICAgIHwgRnJpXG4gICAgICAgIHwgU2F0XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVudW1lcmF0ZSwgaGFzaCwgcXVpY2tjaGVjaywgc3RhYmxlX3dpdG5lc3MsIHR5cGVyZXBdXG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFN1biAtPiBcIlNVTlwiXG4gICAgICAgIHwgTW9uIC0+IFwiTU9OXCJcbiAgICAgICAgfCBUdWUgLT4gXCJUVUVcIlxuICAgICAgICB8IFdlZCAtPiBcIldFRFwiXG4gICAgICAgIHwgVGh1IC0+IFwiVEhVXCJcbiAgICAgICAgfCBGcmkgLT4gXCJGUklcIlxuICAgICAgICB8IFNhdCAtPiBcIlNBVFwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nX2xvbmcgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFN1biAtPiBcIlN1bmRheVwiXG4gICAgICAgIHwgTW9uIC0+IFwiTW9uZGF5XCJcbiAgICAgICAgfCBUdWUgLT4gXCJUdWVzZGF5XCJcbiAgICAgICAgfCBXZWQgLT4gXCJXZWRuZXNkYXlcIlxuICAgICAgICB8IFRodSAtPiBcIlRodXJzZGF5XCJcbiAgICAgICAgfCBGcmkgLT4gXCJGcmlkYXlcIlxuICAgICAgICB8IFNhdCAtPiBcIlNhdHVyZGF5XCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmdfaW50ZXJuYWwgcyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy51cHBlcmNhc2UgcyB3aXRoXG4gICAgICAgIHwgXCJTVU5cIiB8IFwiU1VOREFZXCIgLT4gU3VuXG4gICAgICAgIHwgXCJNT05cIiB8IFwiTU9OREFZXCIgLT4gTW9uXG4gICAgICAgIHwgXCJUVUVcIiB8IFwiVFVFU0RBWVwiIC0+IFR1ZVxuICAgICAgICB8IFwiV0VEXCIgfCBcIldFRE5FU0RBWVwiIC0+IFdlZFxuICAgICAgICB8IFwiVEhVXCIgfCBcIlRIVVJTREFZXCIgLT4gVGh1XG4gICAgICAgIHwgXCJGUklcIiB8IFwiRlJJREFZXCIgLT4gRnJpXG4gICAgICAgIHwgXCJTQVRcIiB8IFwiU0FUVVJEQVlcIiAtPiBTYXRcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkRheV9vZl93ZWVrLm9mX3N0cmluZzogJVNcIiBzICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfaW50X2V4biBpID1cbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgIHwgMCAtPiBTdW5cbiAgICAgICAgfCAxIC0+IE1vblxuICAgICAgICB8IDIgLT4gVHVlXG4gICAgICAgIHwgMyAtPiBXZWRcbiAgICAgICAgfCA0IC0+IFRodVxuICAgICAgICB8IDUgLT4gRnJpXG4gICAgICAgIHwgNiAtPiBTYXRcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkRheV9vZl93ZWVrLm9mX2ludF9leG46ICVkXCIgaSAoKVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2ludCB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgU3VuIC0+IDBcbiAgICAgICAgfCBNb24gLT4gMVxuICAgICAgICB8IFR1ZSAtPiAyXG4gICAgICAgIHwgV2VkIC0+IDNcbiAgICAgICAgfCBUaHUgLT4gNFxuICAgICAgICB8IEZyaSAtPiA1XG4gICAgICAgIHwgU2F0IC0+IDZcbiAgICAgIDs7XG5cbiAgICAgICgqIEJlIHZlcnkgZ2VuZXJvdXMgd2l0aCBvZl9zdHJpbmcuICBXZSBhY2NlcHQgYWxsIHBvc3NpYmxlIGNhcGl0YWxpemF0aW9ucyBhbmQgdGhlXG4gICAgICAgICBpbnRlZ2VyIHJlcHJlc2VudGF0aW9ucyBhcyB3ZWxsLiAqKVxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgdHJ5IG9mX3N0cmluZ19pbnRlcm5hbCBzIHdpdGhcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgKHRyeSBvZl9pbnRfZXhuIChJbnQub2Zfc3RyaW5nIHMpIHdpdGhcbiAgICAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkRheV9vZl93ZWVrLm9mX3N0cmluZzogJVNcIiBzICgpKVxuICAgICAgOztcblxuICAgICAgKCogdGhpcyBpcyBpbiBUIHJhdGhlciB0aGFuIG91dHNpZGUgc28gdGhhdCB0aGUgbGF0ZXIgZnVuY3RvciBhcHBsaWNhdGlvbiB0byBidWlsZCBtYXBzXG4gICAgICAgICB1c2VzIHRoaXMgc2V4cCByZXByZXNlbnRhdGlvbiAqKVxuICAgICAgaW5jbHVkZSBTZXhwYWJsZS5TdGFibGUuT2Zfc3RyaW5nYWJsZS5WMSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgICAgICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID1cbiAgICAgICAgbGV0IG9wZW4gU2V4cGxpYjAuU2V4cF9ncmFtbWFyIGluXG4gICAgICAgIGxldCBhdG9tIG5hbWUgPSBOb190YWcgeyBuYW1lOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH0gaW5cbiAgICAgICAgbGV0IHVuc3VnZ2VzdGVkIGdyYW1tYXIgPVxuICAgICAgICAgIFRhZyB7IGtleSA9IGNvbXBsZXRpb25fc3VnZ2VzdGVkOyB2YWx1ZSA9IEF0b20gXCJmYWxzZVwiOyBncmFtbWFyIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGludF9jbGF1c2UgdCA9IHVuc3VnZ2VzdGVkIChhdG9tIChJbnQudG9fc3RyaW5nICh0b19pbnQgdCkpKSBpblxuICAgICAgICBsZXQgc2hvcnRfY2xhdXNlIHQgPSBhdG9tICh0b19zdHJpbmcgdCkgaW5cbiAgICAgICAgbGV0IGxvbmdfY2xhdXNlIHQgPSB1bnN1Z2dlc3RlZCAoYXRvbSAodG9fc3RyaW5nX2xvbmcgdCkpIGluXG4gICAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgICBMYXp5XG4gICAgICAgICAgICAgIChsYXp5XG4gICAgICAgICAgICAgICAgKFZhcmlhbnRcbiAgICAgICAgICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX2luc2Vuc2l0aXZlXG4gICAgICAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5jb25jYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICBbIExpc3QubWFwIGFsbCB+ZjppbnRfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgOyBMaXN0Lm1hcCBhbGwgfmY6c2hvcnRfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgOyBMaXN0Lm1hcCBhbGwgfmY6bG9uZ19jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcblxuICAgIG1vZHVsZSBVbnN0YWJsZSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIChDb21wYXJhYmxlLk1ha2VfYmluYWJsZSAoVCkgOiBDb21wYXJhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuICAgICAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVW5zdGFibGUpXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChVbnN0YWJsZSlcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjEuVW5zdGFibGVcblxubGV0IHdlZWtkYXlzID0gWyBNb247IFR1ZTsgV2VkOyBUaHU7IEZyaSBdXG5sZXQgd2Vla2VuZHMgPSBbIFNhdDsgU3VuIF1cblxubGV0IG9mX2ludCBpID1cbiAgdHJ5IFNvbWUgKG9mX2ludF9leG4gaSkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IGlzb184NjAxX3dlZWtkYXlfbnVtYmVyIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBNb24gLT4gMVxuICB8IFR1ZSAtPiAyXG4gIHwgV2VkIC0+IDNcbiAgfCBUaHUgLT4gNFxuICB8IEZyaSAtPiA1XG4gIHwgU2F0IC0+IDZcbiAgfCBTdW4gLT4gN1xuOztcblxubGV0IG51bV9kYXlzX2luX3dlZWsgPSA3XG5sZXQgc2hpZnQgdCBpID0gb2ZfaW50X2V4biAoSW50LiggJSApICh0b19pbnQgdCArIGkpIG51bV9kYXlzX2luX3dlZWspXG5cbmxldCBudW1fZGF5cyB+ZnJvbSB+dG9fID1cbiAgbGV0IGQgPSB0b19pbnQgdG9fIC0gdG9faW50IGZyb20gaW5cbiAgaWYgSW50LihkIDwgMCkgdGhlbiBkICsgbnVtX2RheXNfaW5fd2VlayBlbHNlIGRcbjs7XG5cbmxldCBpc19zdW5fb3Jfc2F0IHQgPSB0ID0gU3VuIHx8IHQgPSBTYXRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgUm91bmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFRvd2FyZF9wb3NpdGl2ZV9pbmZpbml0eVxuICAgIHwgVG93YXJkX25lZ2F0aXZlX2luZmluaXR5XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxubGV0IG1vZHVsZV9uYW1lID0gXCJEaWdpdF9zdHJpbmdfaGVscGVyc1wiXG5sZXQgaW50NjNfdHdvID0gSW50NjMub2ZfaW50IDJcbmxldCBpbnQ2M190ZW4gPSBJbnQ2My5vZl9pbnQgMTBcbmxldCBpbnQ2M190d2VudHkgPSBJbnQ2My5vZl9pbnQgMjBcbmxldCBpbnQ2M19iaWxsaW9uID0gSW50NjMub2ZfaW50IDFfMDAwXzAwMF8wMDBcbmxldCBtYXhfYmlsbGlvbnMgPSBJbnQ2My4oIC8gKSBJbnQ2My5tYXhfdmFsdWUgaW50NjNfYmlsbGlvblxuXG5sZXQgcmVjIGRpZ2l0c19vZl9wb3NpdGl2ZV9pbnQ2MyBuID1cbiAgaWYgSW50NjMuKCA8ICkgbiBpbnQ2M190ZW5cbiAgdGhlbiAxXG4gIGVsc2UgSW50LnN1Y2MgKGRpZ2l0c19vZl9wb3NpdGl2ZV9pbnQ2MyAoSW50NjMuKCAvICkgbiBpbnQ2M190ZW4pKVxuOztcblxubGV0IGRpZ2l0c19vZl9pbnQ2M19tYXhfdmFsdWUgPSBkaWdpdHNfb2ZfcG9zaXRpdmVfaW50NjMgSW50NjMubWF4X3ZhbHVlXG5cbmxldCByZWMgbWF4X2ludDYzX3dpdGggfmRpZ2l0cyA9XG4gIG1hdGNoIGRpZ2l0cyB3aXRoXG4gIHwgMSAtPiBJbnQ2My5vZl9pbnQgOVxuICB8IDIgLT4gSW50NjMub2ZfaW50IDk5XG4gIHwgMyAtPiBJbnQ2My5vZl9pbnQgOTk5XG4gIHwgNCAtPiBJbnQ2My5vZl9pbnQgOV85OTlcbiAgfCA1IC0+IEludDYzLm9mX2ludCA5OV85OTlcbiAgfCA2IC0+IEludDYzLm9mX2ludCA5OTlfOTk5XG4gIHwgNyAtPiBJbnQ2My5vZl9pbnQgOV85OTlfOTk5XG4gIHwgOCAtPiBJbnQ2My5vZl9pbnQgOTlfOTk5Xzk5OVxuICB8IDkgLT4gSW50NjMub2ZfaW50IDk5OV85OTlfOTk5XG4gIHwgXyAtPlxuICAgIGlmIGRpZ2l0cyA+PSBkaWdpdHNfb2ZfaW50NjNfbWF4X3ZhbHVlXG4gICAgdGhlbiBJbnQ2My5tYXhfdmFsdWVcbiAgICBlbHNlIChcbiAgICAgIGxldCBiaWxsaW9ucyA9IEludDYzLnN1Y2MgKG1heF9pbnQ2M193aXRoIH5kaWdpdHM6KGRpZ2l0cyAtIDkpKSBpblxuICAgICAgSW50NjMucHJlZCAoSW50NjMuKCAqICkgaW50NjNfYmlsbGlvbiBiaWxsaW9ucykpXG47O1xuXG5tb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gIGxldCB1bnNhZmVfY2hhcl9vZl9kaWdpdCBuID0gQ2hhci51bnNhZmVfb2ZfaW50IChDaGFyLnRvX2ludCAnMCcgKyBuKVxuICBsZXQgZGlnaXRfb2ZfY2hhciBjaGFyID0gQ2hhci5nZXRfZGlnaXRfZXhuIGNoYXJcblxuICBsZXQgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnl0ZXMgcG9zICh1bnNhZmVfY2hhcl9vZl9kaWdpdCBpbnQpXG4gIDs7XG5cbiAgbGV0IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IGludCAvIDEwIGluXG4gICAgbGV0IG9uZXMgPSBpbnQgLSAodGVucyAqIDEwKSBpblxuICAgIHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3Mgb25lcztcbiAgICB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDEpIGludCBpblxuICAgIHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyAyKSBpbnQgaW5cbiAgICB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgMykgaW50IGluXG4gICAgd3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDQpIGludCBpblxuICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA1KSBpbnQgaW5cbiAgICB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNikgaW50IGluXG4gICAgd3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDcpIGludCBpblxuICAgIHdyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA4KSBpbnQgaW5cbiAgICB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgcmV0dXJuX2JpbGxpb25zX2FuZF93cml0ZV9yZW1haW5kZXIgYnl0ZXMgfnBvcyBpbnQ2MyA9XG4gICAgbGV0IGJpbGxpb25zID0gSW50NjMuKCAvICkgaW50NjMgaW50NjNfYmlsbGlvbiBpblxuICAgIGxldCByZW1haW5kZXIgPSBJbnQ2My4oIC0gKSBpbnQ2MyAoSW50NjMuKCAqICkgYmlsbGlvbnMgaW50NjNfYmlsbGlvbikgaW5cbiAgICB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIHJlbWFpbmRlcik7XG4gICAgYmlsbGlvbnNcbiAgOztcblxuICBsZXQgcmVjIHdyaXRlX2ludDYzIGJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2MyA9XG4gICAgbWF0Y2ggZGlnaXRzIHdpdGhcbiAgICB8IDEgLT4gd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDIgLT4gd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDMgLT4gd3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDQgLT4gd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDUgLT4gd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDYgLT4gd3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDcgLT4gd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDggLT4gd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDkgLT4gd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IF8gLT5cbiAgICAgIGxldCBkaWdpdHNfb2ZfYmlsbGlvbnMgPSBkaWdpdHMgLSA5IGluXG4gICAgICBsZXQgYmlsbGlvbnMgPVxuICAgICAgICByZXR1cm5fYmlsbGlvbnNfYW5kX3dyaXRlX3JlbWFpbmRlciBieXRlcyB+cG9zOihwb3MgKyBkaWdpdHNfb2ZfYmlsbGlvbnMpIGludDYzXG4gICAgICBpblxuICAgICAgd3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9iaWxsaW9ucyBiaWxsaW9uc1xuICA7O1xuXG4gIGxldCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zID0gZGlnaXRfb2ZfY2hhciAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nIHBvcylcblxuICBsZXQgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyAxKVxuICA7O1xuXG4gIGxldCByZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDIpXG4gIDs7XG5cbiAgbGV0IHJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgMylcbiAgOztcblxuICBsZXQgcmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA0KVxuICA7O1xuXG4gIGxldCByZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDUpXG4gIDs7XG5cbiAgbGV0IHJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNilcbiAgOztcblxuICBsZXQgcmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA3KVxuICA7O1xuXG4gIGxldCByZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDgpXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2ludDYzX292ZXJmbG93IG5hbWUgPVxuICAgIGludmFsaWRfYXJnZiBcIiVzLiVzOiBvdmVyZmxvdyByZWFkaW5nIGludDYzXCIgbW9kdWxlX25hbWUgbmFtZSAoKVxuICA7O1xuXG4gIGxldCByZWMgcmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgICBtYXRjaCBkaWdpdHMgd2l0aFxuICAgIHwgMSAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCAyIC0+IEludDYzLm9mX2ludCAocmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDMgLT4gSW50NjMub2ZfaW50IChyZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNCAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA1IC0+IEludDYzLm9mX2ludCAocmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDYgLT4gSW50NjMub2ZfaW50IChyZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNyAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA4IC0+IEludDYzLm9mX2ludCAocmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDkgLT4gSW50NjMub2ZfaW50IChyZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGRpZ2l0c19vZl9iaWxsaW9ucyA9IGRpZ2l0cyAtIDkgaW5cbiAgICAgIGxldCBiaWxsaW9ucyA9IHJlYWRfaW50NjMgc3RyaW5nIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfYmlsbGlvbnMgaW5cbiAgICAgIGxldCByZW1haW5kZXIgPVxuICAgICAgICBJbnQ2My5vZl9pbnQgKHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIGRpZ2l0c19vZl9iaWxsaW9ucykpXG4gICAgICBpblxuICAgICAgaWYgSW50NjMuKCA+ICkgYmlsbGlvbnMgbWF4X2JpbGxpb25zIHRoZW4gcmFpc2VfaW50NjNfb3ZlcmZsb3cgXCJyZWFkX2ludDYzXCI7XG4gICAgICBsZXQgc3VtID0gSW50NjMuKCArICkgKEludDYzLiggKiApIGJpbGxpb25zIGludDYzX2JpbGxpb24pIHJlbWFpbmRlciBpblxuICAgICAgaWYgSW50NjMuKCA8ICkgc3VtIEludDYzLnplcm8gdGhlbiByYWlzZV9pbnQ2M19vdmVyZmxvdyBcInJlYWRfaW50NjNcIjtcbiAgICAgIHN1bVxuICA7O1xuXG4gIGxldCBkaXZpZGVfYW5kX3JvdW5kX3VwIH5udW1lcmF0b3IgfmRlbm9taW5hdG9yID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgKG51bWVyYXRvciArIGRlbm9taW5hdG9yIC0gSW50NjMub25lKSAvJSBkZW5vbWluYXRvclxuICA7O1xuXG4gIGxldCByYWlzZV9pbnZhbGlkX2RlY2ltYWwgbmFtZSA9XG4gICAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IGludmFsaWQgZGVjaW1hbCBjaGFyYWN0ZXJcIiBtb2R1bGVfbmFtZSBuYW1lICgpXG4gIDs7XG5cbiAgKCogUmVhZHMgdGhlIHBvcnRpb24gb2Ygc3RyaW5nIGJldHdlZW4gW3Bvc10gYW5kIFtwb3MrZGVjaW1hbHMtMV0sIGluY2x1c2l2ZSwgYW5kXG4gICAgIGludGVycGVyZXRzIGl0IGFzIGEgcG9zaXRpdmUgZGVjaW1hbCBwYXJ0IG9mIGEgbnVtYmVyLCB3aGljaCB3ZSBjYWxsIFt4XS5cblxuICAgICBMZXQgW2ldIGFuZCBbcl0gYmUgdGhlIGludGVnZXIgcGFydCBhbmQgcmVtYWluaW5nIGZyYWN0aW9uYWwgcGFydCBvZlxuICAgICBbeCAqIHNjYWxlIC8gZGl2aXNvcl0uXG5cbiAgICAgSWYgW3IgPCByb3VuZF9hdC9kaXZpc29yXSwgcmV0dXJucyBbaV0uXG4gICAgIElmIFtyID0gcm91bmRfYXQvZGl2aXNvcl0sIHJldHVybnMgW2ldIG9yIFtpKzFdIGJhc2VkIG9uIFtyb3VuZF9leGFjdF0uXG4gICAgIElmIFtyID4gcm91bmRfYXQvZGl2aXNvcl0sIHJldHVybnMgW2krMV0uXG5cbiAgICAgQXNzdW1lcyB3aXRob3V0IGNoZWNraW5nIHRoYXQgW3NjYWxlXSBhbmQgW2Rpdmlzb3JdIGFyZSBib3RoIHBvc2l0aXZlIGFuZFxuICAgICBsZXNzIHRoYW4gW0ludDYzLm1heF92YWx1ZSAvIDEwXSAodG8gYXZvaWQgaW50ZXJuYWwgb3ZlcmZsb3cgZHVyaW5nIHRoZSBhbGdvcml0aG1cbiAgICAgd2hlbiBtdWx0aXBseWluZyBieSAxMCksIGFuZCB0aGF0IFtyb3VuZF9hdCA+PSAwXSBhbmQgW3JvdW5kX2F0IDwgZGl2aXNvcl0uICopXG4gIGxldCByZWFkX2ludDYzX2RlY2ltYWxfcm91bmRlZFxuICAgICAgICBzdHJpbmdcbiAgICAgICAgfnBvczpzdGFydFxuICAgICAgICB+ZGVjaW1hbHNcbiAgICAgICAgfnNjYWxlXG4gICAgICAgIH5kaXZpc29yXG4gICAgICAgIH5yb3VuZF9hdFxuICAgICAgICB+cm91bmRfZXhhY3RcbiAgICAgICAgfmFsbG93X3VuZGVyc2NvcmVcbiAgICA9XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCB1bnRpbCA9IEludC4oICsgKSBzdGFydCBkZWNpbWFscyBpblxuICAgICgqIFRoZSBsb29wIGludmFyaWFudCBpcyB0aGF0IGVhY2ggaXRlcmF0aW9uLCB3ZSBzdHJpcCBvZmYgdGhlIG5leHQgZGVjaW1hbCBkaWdpdCBhbmRcbiAgICAgICB1cGRhdGUgW3N1bV0sIFtyb3VuZF9hdF0sIGFuZCBbZGl2aXNvcl0gc3VjaCB0aGF0IHRoZSBkZXNpcmVkIHJlc3VsdCBpczpcblxuICAgICAgIFsgc3VtICsgcm91bmQocmVtYWluaW5nX2RpZ2l0c19vZl94X3BhcnNlZF9hc19kZWNpbWFsICogc2NhbGUgLyBkaXZpc29yKSBdXG4gICAgICAgd2hlcmUgXCJyb3VuZFwiIHJvdW5kcyBiYXNlZCBvbiB0aGUgbmV3IHZhbHVlIG9mIFtyb3VuZF9hdF0uXG4gICAgKilcbiAgICBsZXQgZGl2aXNvciA9IHJlZiBkaXZpc29yIGluXG4gICAgbGV0IHJvdW5kX2F0ID0gcmVmIHJvdW5kX2F0IGluXG4gICAgbGV0IHN1bSA9IHJlZiBJbnQ2My56ZXJvIGluXG4gICAgbGV0IHBvcyA9IHJlZiBzdGFydCBpblxuICAgICgqIFN0b3AgaWYgd2UgcnVuIG91dCBvZiBjaGFyYWN0ZXJzLCBvciBpZiBmdXJ0aGVyIGRpZ2l0cyBjYW5ub3QgaW5jcmVhc2Ugb3VyIHN1bS4gKilcbiAgICB3aGlsZSBJbnQuKCA8PiApICFwb3MgdW50aWwgJiYgIXJvdW5kX2F0IDwgc2NhbGUgZG9cbiAgICAgIChtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgfCAnMCcgLi4gJzknIGFzIGNoYXIgLT5cbiAgICAgICAgIGxldCBkaWdpdCA9IEludDYzLm9mX2ludCAoZGlnaXRfb2ZfY2hhciBjaGFyKSBpblxuICAgICAgICAgKCogRXZlcnkgbmV3IGRlY2ltYWwgcGxhY2UgaW1wbGljaXRseSBzY2FsZXMgb3VyIG51bWVyYXRvciBieSBhIGZhY3RvciBvZiB0ZW4sXG4gICAgICAgICAgICBzbyBtdXN0IGFsc28gZWZmZWN0aXZlbHkgc2NhbGUgb3VyIGRlbm9taW5hdG9yLlxuXG4gICAgICAgICAgICAwLmFiY2RlZiAqIHNjYWxlL2Rpdmlzb3IgICAgICAgIFtyb3VuZCBhdCByb3VuZF9hdF1cbiAgICAgICAgICAgID0gYS5iY2RlZiAqIHNjYWxlLyhkaXZpc29yKjEwKSAgW3JvdW5kIGF0IHJvdW5kX2F0KjEwXVxuXG4gICAgICAgICAgICBUaGVuIHJlZGVmaW5lIGRpdmlzb3IgOj0gZGl2aXNvcioxMCBhbmQgcm91bmRfYXQgOj0gcm91bmRfYXQqMTAsIHNvIHdlIGhhdmU6XG4gICAgICAgICAgICBhLmJjZGVmICogc2NhbGUvZGl2aXNvciBbcm91bmQgYXQgcm91bmRfYXRdICopXG4gICAgICAgICBkaXZpc29yIDo9ICFkaXZpc29yICogaW50NjNfdGVuO1xuICAgICAgICAgcm91bmRfYXQgOj0gIXJvdW5kX2F0ICogaW50NjNfdGVuO1xuICAgICAgICAgKCogTmV4dCB3ZSB3b3JrIG91dCB0aGUgcGFydCBvZiB0aGUgc3VtIGJhc2VkIG9uIG91ciBjdXJyZW50IGRpZ2l0OlxuXG4gICAgICAgICAgICBhLmJjZGVmICogc2NhbGUvZGl2aXNvciBbcm91bmQgYXQgcm91bmRfYXRdXG4gICAgICAgICAgICA9IGEuYmNkZWYgKiBzY2FsZS9kaXZpc29yIC0gcm91bmRfYXQgLyBkaXZpc29yICBbcm91bmQgYXQgMF1cbiAgICAgICAgICAgID0gKGEqc2NhbGUtcm91bmRfYXQpIC8gZGl2aXNvciArIDAuYmNkZWYgKiBzY2FsZS9kaXZpc29yICBbcm91bmQgYXQgMF1cblxuICAgICAgICAgICAgRGVjb21wb3NlIHRoZSBmaXJzdCB0ZXJtIGludG8gaW50ZWdlciBhbmQgcmVtYWluZGVyIHBhcnRzLlxuICAgICAgICAgICAgU2luY2Ugd2UgaGF2ZSBhbHJlYWR5IHN1YnRyYWN0ZWQgW3JvdW5kX2F0XSwgd2UgZGVjb21wb3NlIGJhc2VkXG4gICAgICAgICAgICBvbiB0aGUgY2VpbGluZyByYXRoZXIgdGhhbiB0aGUgZmxvb3Igb2YgdGhlIGRpdmlzaW9uLFxuICAgICAgICAgICAgZS5nLiA1LzMgd291bGQgZGVjb21wb3NlIGFzIDIgKyAoLTEpLzMsIHJhdGhlciB0aGFuIDEgKyAoMi8zKS5cblxuICAgICAgICAgICAgPSBpbmNyZW1lbnQgKyByZW1haW5kZXIvZGl2aXNvciArIDAuYmNkZWYgKiBzY2FsZS9kaXZpc29yICBbcm91bmQgYXQgMF1cbiAgICAgICAgICAgID0gaW5jcmVtZW50ICsgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAtcmVtYWluZGVyXVxuICAgICAgICAgKilcbiAgICAgICAgIGxldCBudW1lcmF0b3IgPSAoZGlnaXQgKiBzY2FsZSkgLSAhcm91bmRfYXQgaW5cbiAgICAgICAgIGxldCBkZW5vbWluYXRvciA9ICFkaXZpc29yIGluXG4gICAgICAgICBsZXQgaW5jcmVtZW50ID0gZGl2aWRlX2FuZF9yb3VuZF91cCB+bnVtZXJhdG9yIH5kZW5vbWluYXRvciBpblxuICAgICAgICAgbGV0IHJlbWFpbmRlciA9IG51bWVyYXRvciAtIChpbmNyZW1lbnQgKiBkZW5vbWluYXRvcikgaW5cbiAgICAgICAgICgqIE5vdyBqdXN0IGFjY3VtdWxhdGUgdGhlIG5ldyBpbmNyZW1lbnQgYW5kIGl0ZXJhdGUgb24gdGhlIHJlbWFpbmluZyBwYXJ0OlxuICAgICAgICAgICAgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAtcmVtYWluZGVyXS5cblxuICAgICAgICAgICAgU2luY2UgW3JlbWFpbmRlcl0gaXMgYmV0d2VlbiBbLShkaXZpc29yLTEpXSBhbmQgWzBdIGluY2x1c2l2ZSwgdGhlIG5ld1xuICAgICAgICAgICAgW3JvdW5kX2F0XSB3aWxsIGJlIHdpdGhpbiBbMF0gYW5kIFtkaXZpc29yLTFdIGluY2x1c2l2ZS4gKilcbiAgICAgICAgIHJvdW5kX2F0IDo9IC1yZW1haW5kZXI7XG4gICAgICAgICBzdW0gOj0gIXN1bSArIGluY3JlbWVudDtcbiAgICAgICAgICgqIFRoaXMgbGluZSBwcmV2ZW50cyB0aGUgZGl2aXNvciBmcm9tIGdyb3dpbmcgd2l0aG91dCBib3VuZCBhbmQgb3ZlcmZsb3dpbmcuIElmXG4gICAgICAgICAgICB0aGlzIGxpbmUgYWN0dWFsbHkgY2hhbmdlcyB0aGUgZGl2aXNvciwgdGhlbiB0aGUgZGl2aXNvciBpcyBsYXJnZXIgdGhhbiB0aGVcbiAgICAgICAgICAgIHNjYWxlLCBzbyB0aGUgc3VtIHdpbGwgaW5jcmVhc2UgaWYgYW5kIG9ubHkgaWYgW3BhcnNlZF9yZW1haW5pbmdfZGlnaXRzICpcbiAgICAgICAgICAgIHNjYWxlICg+IG9yID49KSByb3VuZF9hdF0sIHdoaWNoIGRvZXNuJ3QgZGVwZW5kIG9uIGhvdyBtdWNoIGxhcmdlciB0aGVcbiAgICAgICAgICAgIGRpdmlzb3IgaXMuIFNvIHRoaXMgY2hhbmdlIGlzIHNhZmUuICopXG4gICAgICAgICBkaXZpc29yIDo9IEludDYzLm1pbiBkZW5vbWluYXRvciBzY2FsZVxuICAgICAgIHwgJ18nIHdoZW4gYWxsb3dfdW5kZXJzY29yZSAtPiAoKVxuICAgICAgIHwgXyAtPiByYWlzZV9pbnZhbGlkX2RlY2ltYWwgXCJyZWFkX2ludDYzX2RlY2ltYWxcIik7XG4gICAgICBwb3MgOj0gSW50LnN1Y2MgIXBvc1xuICAgIGRvbmU7XG4gICAgaWYgIXJvdW5kX2F0ID0gemVyb1xuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggcm91bmRfZXhhY3Qgd2l0aFxuICAgICAgfCBSb3VuZC5Ub3dhcmRfbmVnYXRpdmVfaW5maW5pdHkgLT4gKClcbiAgICAgIHwgUm91bmQuVG93YXJkX3Bvc2l0aXZlX2luZmluaXR5IC0+IHN1bSA6PSAhc3VtICsgSW50NjMub25lKTtcbiAgICAhc3VtXG4gIDs7XG5cbiAgbGV0IHJlYWRfaW50NjNfZGVjaW1hbCBzdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlIH5yb3VuZF90aWVzIH5hbGxvd191bmRlcnNjb3JlID1cbiAgICByZWFkX2ludDYzX2RlY2ltYWxfcm91bmRlZFxuICAgICAgc3RyaW5nXG4gICAgICB+cG9zXG4gICAgICB+ZGVjaW1hbHNcbiAgICAgIH5zY2FsZTooSW50NjMuKCAqICkgc2NhbGUgaW50NjNfdHdvKVxuICAgICAgfmRpdmlzb3I6aW50NjNfdHdvXG4gICAgICB+cm91bmRfYXQ6SW50NjMub25lXG4gICAgICB+cm91bmRfZXhhY3Q6cm91bmRfdGllc1xuICAgICAgfmFsbG93X3VuZGVyc2NvcmVcbiAgOztcbmVuZFxuXG5sZXQgbWluX3NjYWxlID0gSW50NjMub25lXG5sZXQgbWF4X3NjYWxlID0gSW50NjMuKCAvICkgSW50NjMubWF4X3ZhbHVlIGludDYzX3R3ZW50eVxuXG5sZXQgcmFpc2VfbmVnYXRpdmVfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHMgPVxuICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogZGVjaW1hbHM9JWQgaXMgbmVnYXRpdmVcIiBtb2R1bGVfbmFtZSBuYW1lIGRlY2ltYWxzICgpXG47O1xuXG5sZXQgcmFpc2Vfbm9uX3Bvc2l0aXZlX2RpZ2l0cyBuYW1lIH5kaWdpdHMgPVxuICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogZGlnaXRzPSVkIGlzIG5vdCBhIHBvc2l0aXZlIG51bWJlclwiIG1vZHVsZV9uYW1lIG5hbWUgZGlnaXRzICgpXG47O1xuXG5sZXQgcmFpc2Vfc2NhbGVfb3V0X29mX2JvdW5kcyBuYW1lIH5zY2FsZSA9XG4gIGludmFsaWRfYXJnZlxuICAgIFwiJXMuJXM6IHNjYWxlPSVMZCBvdXQgb2YgcmFuZ2UgWyVMZCwgJUxkXVwiXG4gICAgbW9kdWxlX25hbWVcbiAgICBuYW1lXG4gICAgKEludDYzLnRvX2ludDY0IHNjYWxlKVxuICAgIChJbnQ2My50b19pbnQ2NCBtaW5fc2NhbGUpXG4gICAgKEludDYzLnRvX2ludDY0IG1heF9zY2FsZSlcbiAgICAoKVxuOztcblxubGV0IHJhaXNlX3Bvc19vdXRfb2ZfYm91bmRzIG5hbWUgfmxlbiB+cG9zIH5kaWdpdHMgPVxuICBpZiBwb3MgPCAwIHx8IHBvcyA+PSBsZW5cbiAgdGhlblxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCIlcy4lczogcG9zPSVkIG91dCBvZiByYW5nZSBmb3Igc3RyaW5nIG9mIGxlbmd0aCAlZFwiXG4gICAgICBtb2R1bGVfbmFtZVxuICAgICAgbmFtZVxuICAgICAgcG9zXG4gICAgICBsZW5cbiAgICAgICgpXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiJXMuJXM6ICVkIGRpZ2l0cyBkbyBub3QgZml0IGF0IHBvcyAlZCBpbiBzdHJpbmcgb2YgbGVuZ3RoICVkXCJcbiAgICAgIG1vZHVsZV9uYW1lXG4gICAgICBuYW1lXG4gICAgICBkaWdpdHNcbiAgICAgIHBvc1xuICAgICAgbGVuXG4gICAgICAoKVxuOztcblxubGV0IHJhaXNlX2ludF9vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnQgPVxuICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogJWQgb3V0IG9mIHJhbmdlIFswLCAlZF1cIiBtb2R1bGVfbmFtZSBuYW1lIGludCBtYXggKClcbjs7XG5cbmxldCByYWlzZV9pbnQ2M19vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnQ2MyA9XG4gIGludmFsaWRfYXJnZiAhXCIlcy4lczogJXtJbnQ2M30gb3V0IG9mIHJhbmdlIFswLCAle0ludDYzfV1cIiBtb2R1bGVfbmFtZSBuYW1lIGludDYzIG1heCAoKVxuOztcblxubGV0IGNoZWNrX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzID1cbiAgaWYgZGVjaW1hbHMgPCAwIHRoZW4gcmFpc2VfbmVnYXRpdmVfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHNcbjs7XG5cbmxldCBjaGVja19kaWdpdHMgbmFtZSB+ZGlnaXRzID0gaWYgZGlnaXRzIDwgMSB0aGVuIHJhaXNlX25vbl9wb3NpdGl2ZV9kaWdpdHMgbmFtZSB+ZGlnaXRzXG5cbmxldCBjaGVja19wb3MgbmFtZSB+bGVuIH5wb3MgfmRpZ2l0cyA9XG4gIGlmIHBvcyA8IDAgfHwgcG9zICsgZGlnaXRzID4gbGVuIHRoZW4gcmFpc2VfcG9zX291dF9vZl9ib3VuZHMgbmFtZSB+bGVuIH5wb3MgfmRpZ2l0c1xuOztcblxubGV0IGNoZWNrX2ludCBuYW1lIH5tYXggaW50ID1cbiAgaWYgaW50IDwgMCB8fCBpbnQgPiBtYXggdGhlbiByYWlzZV9pbnRfb3V0X29mX2JvdW5kcyBuYW1lIH5tYXggaW50XG47O1xuXG5sZXQgY2hlY2tfaW50NjMgbmFtZSB+bWF4IGludDYzID1cbiAgaWYgSW50NjMuKCA8ICkgaW50NjMgSW50NjMuemVybyB8fCBJbnQ2My4oID4gKSBpbnQ2MyBtYXhcbiAgdGhlbiByYWlzZV9pbnQ2M19vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnQ2M1xuOztcblxubGV0IGNoZWNrX3NjYWxlIG5hbWUgfnNjYWxlID1cbiAgaWYgSW50NjMuKCA8ICkgc2NhbGUgbWluX3NjYWxlIHx8IEludDYzLiggPiApIHNjYWxlIG1heF9zY2FsZVxuICB0aGVuIHJhaXNlX3NjYWxlX291dF9vZl9ib3VuZHMgbmFtZSB+c2NhbGVcbjs7XG5cbmxldCBjaGVja193cml0ZSBuYW1lIH5ieXRlcyB+cG9zIH5kaWdpdHMgfm1heCBpbnQgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ5dGVzIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zO1xuICBjaGVja19pbnQgbmFtZSB+bWF4IGludFxuOztcblxubGV0IGNoZWNrX3dyaXRlNjMgbmFtZSB+Ynl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzID1cbiAgY2hlY2tfZGlnaXRzIG5hbWUgfmRpZ2l0cztcbiAgbGV0IG1heCA9IG1heF9pbnQ2M193aXRoIH5kaWdpdHMgaW5cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBieXRlcyBpblxuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzIH5sZW4gfnBvcztcbiAgY2hlY2tfaW50NjMgbmFtZSB+bWF4IGludDYzXG47O1xuXG5sZXQgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzFfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czoxIH5tYXg6OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV8yX2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6MiB+bWF4Ojk5IGludDtcbiAgVW5zYWZlLndyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzNfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czozIH5tYXg6OTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzRfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo0IH5tYXg6OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfNV9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjUgfm1heDo5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfNl9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjYgfm1heDo5OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzdfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo3IH5tYXg6OV85OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzhfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo4IH5tYXg6OTlfOTk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV85X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6OSB+bWF4Ojk5OV85OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzID1cbiAgY2hlY2tfd3JpdGU2MyBcIndyaXRlX2ludDYzXCIgfmJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2MztcbiAgVW5zYWZlLndyaXRlX2ludDYzIGJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2M1xuOztcblxubGV0IGNoZWNrX3JlYWQgbmFtZSB+c3RyaW5nIH5wb3MgfmRpZ2l0cyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzIH5sZW4gfnBvc1xuOztcblxubGV0IGNoZWNrX3JlYWQ2MyBuYW1lIH5zdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgY2hlY2tfZGlnaXRzIG5hbWUgfmRpZ2l0cztcbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zXG47O1xuXG5sZXQgY2hlY2tfcmVhZDYzX2RlY2ltYWwgbmFtZSB+c3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICBjaGVja19kZWNpbWFscyBuYW1lIH5kZWNpbWFscztcbiAgY2hlY2tfc2NhbGUgbmFtZSB+c2NhbGU7XG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHM6ZGVjaW1hbHMgfmxlbiB+cG9zXG47O1xuXG5sZXQgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzFfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6MTtcbiAgVW5zYWZlLnJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfMl9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czoyO1xuICBVbnNhZmUucmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF8zX2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjM7XG4gIFVuc2FmZS5yZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzRfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NDtcbiAgVW5zYWZlLnJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfNV9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo1O1xuICBVbnNhZmUucmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF82X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjY7XG4gIFVuc2FmZS5yZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzdfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NztcbiAgVW5zYWZlLnJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfOF9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo4O1xuICBVbnNhZmUucmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF85X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjk7XG4gIFVuc2FmZS5yZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgY2hlY2tfcmVhZDYzIFwicmVhZF9pbnQ2M1wiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzO1xuICBVbnNhZmUucmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzXG47O1xuXG5sZXQgcmVhZF9pbnQ2M19kZWNpbWFsIHN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgfnJvdW5kX3RpZXMgfmFsbG93X3VuZGVyc2NvcmUgPVxuICBjaGVja19yZWFkNjNfZGVjaW1hbCBcInJlYWRfaW50NjNfZGVjaW1hbFwiIH5zdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlO1xuICBVbnNhZmUucmVhZF9pbnQ2M19kZWNpbWFsIHN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgfnJvdW5kX3RpZXMgfmFsbG93X3VuZGVyc2NvcmVcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBKYW5cbiAgICAgIHwgRmViXG4gICAgICB8IE1hclxuICAgICAgfCBBcHJcbiAgICAgIHwgTWF5XG4gICAgICB8IEp1blxuICAgICAgfCBKdWxcbiAgICAgIHwgQXVnXG4gICAgICB8IFNlcFxuICAgICAgfCBPY3RcbiAgICAgIHwgTm92XG4gICAgICB8IERlY1xuICAgIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2ssIHZhcmlhbnRzXVxuXG4gICAgbGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxuICAgIGxldCBvZl9pbnRfZXhuIGkgOiB0ID1cbiAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgfCAxIC0+IEphblxuICAgICAgfCAyIC0+IEZlYlxuICAgICAgfCAzIC0+IE1hclxuICAgICAgfCA0IC0+IEFwclxuICAgICAgfCA1IC0+IE1heVxuICAgICAgfCA2IC0+IEp1blxuICAgICAgfCA3IC0+IEp1bFxuICAgICAgfCA4IC0+IEF1Z1xuICAgICAgfCA5IC0+IFNlcFxuICAgICAgfCAxMCAtPiBPY3RcbiAgICAgIHwgMTEgLT4gTm92XG4gICAgICB8IDEyIC0+IERlY1xuICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIk1vbnRoLm9mX2ludF9leG4gJWRcIiBpICgpXG4gICAgOztcblxuICAgIGxldCBvZl9pbnQgaSA9XG4gICAgICB0cnkgU29tZSAob2ZfaW50X2V4biBpKSB3aXRoXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIDs7XG5cbiAgICBsZXQgdG9faW50ICh0IDogdCkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEphbiAtPiAxXG4gICAgICB8IEZlYiAtPiAyXG4gICAgICB8IE1hciAtPiAzXG4gICAgICB8IEFwciAtPiA0XG4gICAgICB8IE1heSAtPiA1XG4gICAgICB8IEp1biAtPiA2XG4gICAgICB8IEp1bCAtPiA3XG4gICAgICB8IEF1ZyAtPiA4XG4gICAgICB8IFNlcCAtPiA5XG4gICAgICB8IE9jdCAtPiAxMFxuICAgICAgfCBOb3YgLT4gMTFcbiAgICAgIHwgRGVjIC0+IDEyXG4gICAgOztcblxuICAgIGxldCB0b19iaW5hYmxlIHQgPSB0b19pbnQgdCAtIDFcbiAgICBsZXQgb2ZfYmluYWJsZSBpID0gb2ZfaW50X2V4biAoaSArIDEpXG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChJbnQuU3RhYmxlLlYxKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYmluYWJsZVxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSBJbnQuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzIG9mX2JpbmFibGUgdG9fYmluYWJsZVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmxldCBudW1fbW9udGhzID0gMTJcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGFibGUuVjFcblxuICBsZXQgYWxsID0gWyBKYW47IEZlYjsgTWFyOyBBcHI7IE1heTsgSnVuOyBKdWw7IEF1ZzsgU2VwOyBPY3Q7IE5vdjsgRGVjIF1cbiAgbGV0IGhhc2ggPSB0b19pbnRcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSAoXG4gIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gIGVuZCkgOlxuICAgIEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgKCogSW4gMTA4LjA2YSBhbmQgZWFybGllciwgbW9udGhzIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgaW50cy4gIEZyb20gMTA4LjA3XG4gICAgICAgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kXG4gICAgICAgcHJldHR5IGZvcm1hdCB3ZXJlIGFjY2VwdGVkIGFzIGlucHV0LiAgRnJvbSAxMDkuMTQgb24sIHRoZSBvdXRwdXQgZm9ybWF0IHdhc1xuICAgICAgIGNoYW5nZWQgZnJvbSByYXcgdG8gcHJldHR5LCB3aGlsZSBjb250aW51aW5nIHRvIGFjY2VwdCBib3RoIGZvcm1hdHMuICBPbmNlIHdlIGJlbGlldmVcbiAgICAgICBtb3N0IHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgICByYXcuICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IEludC50X29mX3NleHAgc2V4cCkgd2l0aFxuICAgICAgfCBTb21lIGkgLT4gb2ZfaW50X2V4biAoaSArIDEpXG4gICAgICB8IE5vbmUgLT4gVC50X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZClcblxuKCogUmVwbGFjZSB0aGUgb3ZlcnJpZGVuIHNleHAgY29udmVydGVycyBmcm9tIFtDb21wYXJhYmxlLk1ha2VfYmluYWJsZV0gd2l0aCB0aGUgb3JkaW5hcnlcbiAgIHN5bWJvbGljIGNvbnZlcnRlcnMuICopXG5sZXQgc2V4cF9vZl90ID0gVC5zZXhwX29mX3RcbmxldCB0X29mX3NleHAgPSBULnRfb2Zfc2V4cFxubGV0IHNoaWZ0IHQgaSA9IG9mX2ludF9leG4gKDEgKyBJbnQuKCAlICkgKHRvX2ludCB0IC0gMSArIGkpIG51bV9tb250aHMpXG5cbmxldCBhbGxfc3RyaW5ncyA9XG4gIGxhenlcbiAgICAoQXJyYXkub2ZfbGlzdCAoTGlzdC5tYXAgYWxsIH5mOihmdW4gdmFyaWFudCAtPiBTZXhwLnRvX3N0cmluZyAoc2V4cF9vZl90IHZhcmlhbnQpKSkpXG47O1xuXG5sZXQgdG9fc3RyaW5nICh0IDogdCkgPVxuICBsZXQgYWxsX3N0cmluZ3MgPSBMYXp5LmZvcmNlIGFsbF9zdHJpbmdzIGluXG4gIGFsbF9zdHJpbmdzLih0b19pbnQgdCAtIDEpXG47O1xuXG5sZXQgb2Zfc3RyaW5nID1cbiAgbGV0IHRhYmxlID1cbiAgICBsYXp5XG4gICAgICAobGV0IG1vZHVsZSBUID0gU3RyaW5nLlRhYmxlIGluXG4gICAgICAgbGV0IHRhYmxlID0gVC5jcmVhdGUgfnNpemU6bnVtX21vbnRocyAoKSBpblxuICAgICAgIEFycmF5Lml0ZXJpIChMYXp5LmZvcmNlIGFsbF9zdHJpbmdzKSB+ZjooZnVuIGkgcyAtPlxuICAgICAgICAgbGV0IHQgPSBvZl9pbnRfZXhuIChpICsgMSkgaW5cbiAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6cyB+ZGF0YTp0O1xuICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTooU3RyaW5nLmxvd2VyY2FzZSBzKSB+ZGF0YTp0O1xuICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTooU3RyaW5nLnVwcGVyY2FzZSBzKSB+ZGF0YTp0KTtcbiAgICAgICB0YWJsZSlcbiAgaW5cbiAgZnVuIHN0ciAtPlxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCAoTGF6eS5mb3JjZSB0YWJsZSkgc3RyIHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIkludmFsaWQgbW9udGg6ICVzXCIgc3RyICgpXG47O1xuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgbW9udGggPSB0ID1cbiAgICB8IEphblxuICAgIHwgRmViXG4gICAgfCBNYXJcbiAgICB8IEFwclxuICAgIHwgTWF5XG4gICAgfCBKdW5cbiAgICB8IEp1bFxuICAgIHwgQXVnXG4gICAgfCBTZXBcbiAgICB8IE9jdFxuICAgIHwgTm92XG4gICAgfCBEZWNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBEaWdpdF9zdHJpbmdfaGVscGVyc1xuXG5sZXQgaXNfbGVhcF95ZWFyIH55ZWFyID0gKHllYXIgbW9kIDQgPSAwICYmIG5vdCAoeWVhciBtb2QgMTAwID0gMCkpIHx8IHllYXIgbW9kIDQwMCA9IDBcblxuKCogQ3JlYXRlIGEgbG9jYWwgcHJpdmF0ZSBkYXRlIHR5cGUgdG8gZW5zdXJlIHRoYXQgYWxsIGRhdGVzIGFyZSBjcmVhdGVkIHZpYVxuICAgRGF0ZS5jcmVhdGVfZXhuLlxuKilcbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYWJsZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgdmFsIGNyZWF0ZV9leG4gOiB5OmludCAtPiBtOk1vbnRoLlN0YWJsZS5WMS50IC0+IGQ6aW50IC0+IHRcbiAgICAgICAgdmFsIHllYXIgOiB0IC0+IGludFxuICAgICAgICB2YWwgbW9udGggOiB0IC0+IE1vbnRoLlN0YWJsZS5WMS50XG4gICAgICAgIHZhbCBkYXkgOiB0IC0+IGludFxuICAgICAgICB2YWwgZGF5c19pbl9tb250aCA6IHllYXI6aW50IC0+IG1vbnRoOk1vbnRoLnQgLT4gaW50XG4gICAgICAgIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICAgICAgICB2YWwgb2ZfaW50X2V4biA6IGludCAtPiB0XG4gICAgICAgIHZhbCBvZl9pbnRfdW5jaGVja2VkIDogaW50IC0+IHRcbiAgICAgICAgdmFsIGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSA6IHRcbiAgICAgIGVuZCA9IHN0cnVjdFxuICAgICAgICAoKiBXZSB1c2VkIHRvIHN0b3JlIGRhdGVzIGxpa2UgdGhpczpcbiAgICAgICAgICAgdHlwZSB0ID0geyB5OiBpbnQ7IG06IE1vbnRoLlN0YWJsZS5WMS50OyBkOiBpbnQ7IH1cbiAgICAgICAgICAgSW4gdGhlIGJlbG93IHdlIG1ha2Ugc3VyZSB0aGF0IHRoZSBiaW5faW8gcmVwcmVzZW50YXRpb24gaXNcbiAgICAgICAgICAgaWRlbnRpY2FsIChhbmQgdGhlIHN0YWJsZSB1bml0IHRlc3RzIGNoZWNrIHRoaXMpXG5cbiAgICAgICAgICAgSW4gbWVtb3J5IHdlIHVzZSB0aGUgZm9sbG93aW5nIG11Y2ggbW9yZSBjb21wYWN0IHJlcHJlc2VudGF0aW9uOlxuICAgICAgICAgICAyIGJ5dGVzIHllYXJcbiAgICAgICAgICAgMSBieXRlIG1vbnRoXG4gICAgICAgICAgIDEgYnl0ZSBkYXlcblxuICAgICAgICAgICBhbGwgcGFja2VkIGludG8gYSBzaW5nbGUgaW1tZWRpYXRlIGludCAoc28gZnJvbSA0IHdvcmRzIGRvd24gdG8gMSkuXG4gICAgICAgICopXG4gICAgICAgIHR5cGUgdCA9IGludFxuICAgICAgICBbQEBkZXJpdmluZ1xuICAgICAgICAgIGNvbXBhcmVcbiAgICAgICAgLCBlcXVhbFxuICAgICAgICAsIGhhc2hcbiAgICAgICAgLCB0eXBlcmVwXG4gICAgICAgICwgYmluX3NoYXBlIH5iYXNldHlwZTpcIjg5OWVlM2UwLTQ5MGEtMTFlNi1hMTBhLWEzNzM0ZjczMzU2NlwiXG4gICAgICAgICwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgbGV0IGNyZWF0ZTAgfnllYXIgfm1vbnRoIH5kYXkgPVxuICAgICAgICAgICgqIGNyZWF0ZV9leG4ncyB2YWxpZGF0aW9uIG1ha2Ugc3VyZSB0aGF0IGVhY2ggdmFsdWUgZml0cyAqKVxuICAgICAgICAgICh5ZWFyIGxzbCAxNikgbG9yIChNb250aC50b19pbnQgbW9udGggbHNsIDgpIGxvciBkYXlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgb2ZfaW50X3VuY2hlY2tlZCB0ID0gdFxuICAgICAgICBsZXQgeWVhciB0ID0gdCBsc3IgMTZcbiAgICAgICAgbGV0IG1vbnRoIHQgPSBNb250aC5vZl9pbnRfZXhuICgodCBsc3IgOCkgbGFuZCAweGZmKVxuICAgICAgICBsZXQgZGF5IHQgPSB0IGxhbmQgMHhmZlxuXG4gICAgICAgIGxldCBkYXlzX2luX21vbnRoIH55ZWFyIH5tb250aCA9XG4gICAgICAgICAgbWF0Y2ggKG1vbnRoIDogTW9udGgudCkgd2l0aFxuICAgICAgICAgIHwgSmFuIHwgTWFyIHwgTWF5IHwgSnVsIHwgQXVnIHwgT2N0IHwgRGVjIC0+IDMxXG4gICAgICAgICAgfCBBcHIgfCBKdW4gfCBTZXAgfCBOb3YgLT4gMzBcbiAgICAgICAgICB8IEZlYiAtPiBpZiBpc19sZWFwX3llYXIgfnllYXIgdGhlbiAyOSBlbHNlIDI4XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNyZWF0ZV9leG4gfnk6eWVhciB+bTptb250aCB+ZDpkYXkgPVxuICAgICAgICAgICgqIHllYXIsIG1vbnRoLCBhbmQgZGF5IG5lZWQgdG8gYmUgcGFzc2VkIGFzIHBhcmFtZXRlcnMgdG8gYXZvaWQgYWxsb2NhdGluZ1xuICAgICAgICAgICAgIGEgY2xvc3VyZSAoc2VlIHVuaXQgdGVzdCBiZWxvdykgKilcbiAgICAgICAgICBsZXQgaW52YWxpZCB+eWVhciB+bW9udGggfmRheSBtc2cgPVxuICAgICAgICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgICAgICAgICFcIkRhdGUuY3JlYXRlX2V4biB+eTolZCB+bTole01vbnRofSB+ZDolZCBlcnJvcjogJXNcIlxuICAgICAgICAgICAgICB5ZWFyXG4gICAgICAgICAgICAgIG1vbnRoXG4gICAgICAgICAgICAgIGRheVxuICAgICAgICAgICAgICBtc2dcbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHllYXIgPCAwIHx8IHllYXIgPiA5OTk5XG4gICAgICAgICAgdGhlbiBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IFwieWVhciBvdXRzaWRlIG9mIFswLi45OTk5XVwiO1xuICAgICAgICAgIGlmIGRheSA8PSAwIHRoZW4gaW52YWxpZCB+eWVhciB+bW9udGggfmRheSBcImRheSA8PSAwXCI7XG4gICAgICAgICAgbGV0IGRheXNfaW5fbW9udGggPSBkYXlzX2luX21vbnRoIH55ZWFyIH5tb250aCBpblxuICAgICAgICAgIGlmIGRheSA+IGRheXNfaW5fbW9udGhcbiAgICAgICAgICB0aGVuIGludmFsaWQgfnllYXIgfm1vbnRoIH5kYXkgKHNwcmludGYgXCIlZCBkYXkgbW9udGggdmlvbGF0aW9uXCIgZGF5c19pbl9tb250aCk7XG4gICAgICAgICAgY3JlYXRlMCB+eWVhciB+bW9udGggfmRheVxuICAgICAgICA7O1xuXG4gICAgICAgICgqIFdlIGRvbid0IHVzZSBNYWtlX2JpbmFibGUgaGVyZSwgYmVjYXVzZSB0aGF0IHdvdWxkIGdvIHZpYSBhbiBpbW1lZGlhdGVcbiAgICAgICAgICAgdHVwbGUgb3IgcmVjb3JkLiAgVGhhdCBpcyBleGFjdGx5IHRoZSAzMiBieXRlcyB3ZSB3b3JrZWQgc28gaGFyZCBhYm92ZSB0b1xuICAgICAgICAgICBnZXQgcmlkIG9mLiAgV2UgYWxzbyBkb24ndCB3YW50IHRvIGp1c3QgYmluX2lvIHRoZSBpbnRlZ2VyIGRpcmVjdGx5XG4gICAgICAgICAgIGJlY2F1c2UgdGhhdCB3b3VsZCBtZWFuIGEgbmV3IGJpbl9pbyBmb3JtYXQuICAqKVxuXG4gICAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgICAgICAgbGV0IHllYXIgPSBJbnQuYmluX3JlYWRfdCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgICBsZXQgbW9udGggPSBNb250aC5TdGFibGUuVjEuYmluX3JlYWRfdCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgICBsZXQgZGF5ID0gSW50LmJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgICAgY3JlYXRlMCB+eWVhciB+bW9udGggfmRheVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmID1cbiAgICAgICAgICAoKiBfX2Jpbl9yZWFkX3QgaXMgb25seSBuZWVkZWQgZm9yIHZhcmlhbnRzICopXG4gICAgICAgICAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkRhdGUudFwiICFwb3NfcmVmXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl9zaXplX3QgdCA9XG4gICAgICAgICAgSW50LmJpbl9zaXplX3QgKHllYXIgdCkgKyBNb250aC5iaW5fc2l6ZV90IChtb250aCB0KSArIEludC5iaW5fc2l6ZV90IChkYXkgdClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgICAgICAgbGV0IHBvcyA9IEludC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoeWVhciB0KSBpblxuICAgICAgICAgIGxldCBwb3MgPSBNb250aC5iaW5fd3JpdGVfdCBidWYgfnBvcyAobW9udGggdCkgaW5cbiAgICAgICAgICBJbnQuYmluX3dyaXRlX3QgYnVmIH5wb3MgKGRheSB0KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBiaW5fd3JpdGVyX3QgPSB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuXG4gICAgICAgIGxldCBiaW5fdCA9XG4gICAgICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciA9IGJpbl9yZWFkZXJfdFxuICAgICAgICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90XG4gICAgICAgICAgOyBzaGFwZSA9IGJpbl9zaGFwZV90XG4gICAgICAgICAgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19pbnQgdCA9IHRcbiAgICAgICAgbGV0IG9mX2ludF9leG4gbiA9IGNyZWF0ZV9leG4gfnk6KHllYXIgbikgfm06KG1vbnRoIG4pIH5kOihkYXkgbilcbiAgICAgICAgbGV0IGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSA9IDBcblxuICAgICAgICBsZXQldGVzdCBcImludmFsaWQgdmFsdWVcIiA9XG4gICAgICAgICAgRXhuLmRvZXNfcmFpc2UgKGZ1biAoKSA6IHQgLT4gb2ZfaW50X2V4biBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cblxuICAgICAgKCoqIFlZWVktTU0tREQgKilcbiAgICAgIGxldCB0b19zdHJpbmdfaXNvODYwMV9leHRlbmRlZCB0ID1cbiAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAxMCBpblxuICAgICAgICB3cml0ZV80X2RpZ2l0X2ludCBidWYgfnBvczowICh5ZWFyIHQpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDQgJy0nO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo1IChNb250aC50b19pbnQgKG1vbnRoIHQpKTtcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA3ICctJztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6OCAoZGF5IHQpO1xuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ19pc284NjAxX2V4dGVuZGVkXG5cbiAgICAgICgqKiBZWVlZTU1ERCAqKVxuICAgICAgbGV0IHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIHQgPVxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDggaW5cbiAgICAgICAgd3JpdGVfNF9kaWdpdF9pbnQgYnVmIH5wb3M6MCAoeWVhciB0KTtcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NCAoTW9udGgudG9faW50IChtb250aCB0KSk7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjYgKGRheSB0KTtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgIDs7XG5cbiAgICAgICgqKiBNTS9ERC9ZWVlZICopXG4gICAgICBsZXQgdG9fc3RyaW5nX2FtZXJpY2FuIHQgPVxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEwIGluXG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjAgKE1vbnRoLnRvX2ludCAobW9udGggdCkpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDIgJy8nO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczozIChkYXkgdCk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgNSAnLyc7XG4gICAgICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ1ZiB+cG9zOjYgKHllYXIgdCk7XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2VfeWVhcjQgc3RyIHBvcyA9IHJlYWRfNF9kaWdpdF9pbnQgc3RyIH5wb3NcbiAgICAgIGxldCBwYXJzZV9tb250aCBzdHIgcG9zID0gTW9udGgub2ZfaW50X2V4biAocmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvcylcbiAgICAgIGxldCBwYXJzZV9kYXkgc3RyIHBvcyA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3NcblxuICAgICAgKCoqIFlZWVlNTUREICopXG4gICAgICBsZXQgb2Zfc3RyaW5nX2lzbzg2MDFfYmFzaWMgc3RyIH5wb3MgPVxuICAgICAgICBpZiBwb3MgKyA4ID4gU3RyaW5nLmxlbmd0aCBzdHJcbiAgICAgICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRhdGUub2Zfc3RyaW5nX2lzbzg2MDFfYmFzaWM6IHBvcyArIDggPiBzdHJpbmcgbGVuZ3RoXCI7XG4gICAgICAgIGNyZWF0ZV9leG5cbiAgICAgICAgICB+eToocGFyc2VfeWVhcjQgc3RyIHBvcylcbiAgICAgICAgICB+bToocGFyc2VfbW9udGggc3RyIChwb3MgKyA0KSlcbiAgICAgICAgICB+ZDoocGFyc2VfZGF5IHN0ciAocG9zICsgNikpXG4gICAgICA7O1xuXG4gICAgICAoKiBXQVJOSU5HOiBpZiB5b3UgYXJlIGdvaW5nIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGluIGEgbWF0ZXJpYWwgd2F5LCBiZSBzdXJlIHlvdVxuICAgICAgICAgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHdvcmtpbmcgaW4gU3RhYmxlICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICBsZXQgaW52YWxpZCAoKSA9IGZhaWx3aXRoIChcImludmFsaWQgZGF0ZTogXCIgXiBzKSBpblxuICAgICAgICBsZXQgZW5zdXJlIGIgPSBpZiBub3QgYiB0aGVuIGludmFsaWQgKCkgaW5cbiAgICAgICAgbGV0IG1vbnRoX251bSB+eWVhciB+bW9udGggfmRheSA9XG4gICAgICAgICAgY3JlYXRlX2V4biB+eToocGFyc2VfeWVhcjQgcyB5ZWFyKSB+bToocGFyc2VfbW9udGggcyBtb250aCkgfmQ6KHBhcnNlX2RheSBzIGRheSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vbnRoX2FicnYgfnllYXIgfm1vbnRoIH5kYXkgPVxuICAgICAgICAgIGNyZWF0ZV9leG5cbiAgICAgICAgICAgIH55OihwYXJzZV95ZWFyNCBzIHllYXIpXG4gICAgICAgICAgICB+bTooTW9udGgub2Zfc3RyaW5nIChTdHJpbmcuc3ViIHMgfnBvczptb250aCB+bGVuOjMpKVxuICAgICAgICAgICAgfmQ6KHBhcnNlX2RheSBzIGRheSlcbiAgICAgICAgaW5cbiAgICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJy8nXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB5LCBtLCBkID1cbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonLycgd2l0aFxuICAgICAgICAgICAgfCBbIGE7IGI7IGMgXSAtPlxuICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIGEgPSA0IHRoZW4gYSwgYiwgYyAoKiB5L20vZCAqKSBlbHNlIGMsIGEsIGIgKCogbS9kL3kgKilcbiAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgeWVhciA9IEludC5vZl9zdHJpbmcgeSBpblxuICAgICAgICAgIGxldCB5ZWFyID1cbiAgICAgICAgICAgIGlmIHllYXIgPj0gMTAwIHRoZW4geWVhciBlbHNlIGlmIHllYXIgPCA3NSB0aGVuIDIwMDAgKyB5ZWFyIGVsc2UgMTkwMCArIHllYXJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBtb250aCA9IE1vbnRoLm9mX2ludF9leG4gKEludC5vZl9zdHJpbmcgbSkgaW5cbiAgICAgICAgICBsZXQgZGF5ID0gSW50Lm9mX3N0cmluZyBkIGluXG4gICAgICAgICAgY3JlYXRlX2V4biB+eTp5ZWFyIH5tOm1vbnRoIH5kOmRheSlcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgcyAnLSdcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogeXl5eS1tbS1kZCAqKVxuICAgICAgICAgIGVuc3VyZSAoU3RyaW5nLmxlbmd0aCBzID0gMTAgJiYgQ2hhci4oID0gKSBzLls0XSAnLScgJiYgQ2hhci4oID0gKSBzLls3XSAnLScpO1xuICAgICAgICAgIG1vbnRoX251bSB+eWVhcjowIH5tb250aDo1IH5kYXk6OClcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgcyAnICdcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggcyA9IDExICYmIENoYXIuKCA9ICkgcy5bMl0gJyAnICYmIENoYXIuKCA9ICkgcy5bNl0gJyAnXG4gICAgICAgICAgdGhlbiAoKiBERCBNTU0gWVlZWSAqKVxuICAgICAgICAgICAgbW9udGhfYWJydiB+ZGF5OjAgfm1vbnRoOjMgfnllYXI6N1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgKCogWVlZWSBNTU0gREQgKilcbiAgICAgICAgICAgIGVuc3VyZSAoU3RyaW5nLmxlbmd0aCBzID0gMTEgJiYgQ2hhci4oID0gKSBzLls0XSAnICcgJiYgQ2hhci4oID0gKSBzLls4XSAnICcpO1xuICAgICAgICAgICAgbW9udGhfYWJydiB+ZGF5Ojkgfm1vbnRoOjUgfnllYXI6MClcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcubGVuZ3RoIHMgPSA5XG4gICAgICAgIHRoZW4gKCogRERNTU1ZWVlZICopXG4gICAgICAgICAgbW9udGhfYWJydiB+ZGF5OjAgfm1vbnRoOjIgfnllYXI6NVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5sZW5ndGggcyA9IDhcbiAgICAgICAgdGhlbiAoKiBhc3N1bWUgWVlZWU1NREQgKilcbiAgICAgICAgICBtb250aF9udW0gfnllYXI6MCB+bW9udGg6NCB+ZGF5OjZcbiAgICAgICAgZWxzZSBpbnZhbGlkICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICB0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBpbnZhbGlkX2FyZ2YgXCJEYXRlLm9mX3N0cmluZyAoJXMpOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBPbGRfZGF0ZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICB7IHkgOiBpbnRcbiAgICAgICAgICAgIDsgbSA6IGludFxuICAgICAgICAgICAgOyBkIDogaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgICAgIGxldCB0b19kYXRlIHQgPSBULmNyZWF0ZV9leG4gfnk6dC55IH5tOihNb250aC5vZl9pbnRfZXhuIHQubSkgfmQ6dC5kXG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgICAgIHwgU2V4cC5BdG9tIHMgLT4gb2Zfc3RyaW5nIHNcbiAgICAgICAgICB8IFNleHAuTGlzdCBfIGFzIHNleHAgLT4gT2xkX2RhdGUudG9fZGF0ZSAoT2xkX2RhdGUudF9vZl9zZXhwIHNleHApXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzID1cbiAgICAgICAgICB0cnkgdF9vZl9zZXhwIHMgd2l0aFxuICAgICAgICAgIHwgT2Zfc2V4cF9lcnJvciBfIGFzIGV4biAtPiByYWlzZSBleG5cbiAgICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgYSAtPiBvZl9zZXhwX2Vycm9yIGEgc1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID1cbiAgICAgICAgICBsZXQgb3BlbiBTZXhwbGliIGluXG4gICAgICAgICAgU2V4cF9ncmFtbWFyLnRhZ1xuICAgICAgICAgICAgKFNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyIDogdCBTZXhwX2dyYW1tYXIudClcbiAgICAgICAgICAgIH5rZXk6U2V4cF9ncmFtbWFyLnR5cGVfbmFtZV90YWdcbiAgICAgICAgICAgIH52YWx1ZTooQXRvbSBcIkNvcmUuRGF0ZS50XCIpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBTZXhwYWJsZVxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IuU3RhYmxlLlYxLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgV2l0aG91dF9jb21wYXJhYmxlXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFdpdGhvdXRfY29tcGFyYWJsZSlcbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFdpdGhvdXRfY29tcGFyYWJsZSlcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50XG4gICAgICBbQEBkZXJpdmluZ1xuICAgICAgICBiaW5faW9cbiAgICAgICwgYmluX3NoYXBlIH5iYXNldHlwZTpcIjgyNmEzZTc5LTMzMjEtNDUxYS05NzA3LWVkNmMwM2I4NGUyZlwiXG4gICAgICAsIGNvbXBhcmVcbiAgICAgICwgaGFzaFxuICAgICAgLCB0eXBlcmVwXG4gICAgICAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgbm9uZSA9IFYxLih0b19pbnQgaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5KVxuICAgICAgbGV0IGlzX25vbmUgdCA9IHQgPSBub25lXG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgc29tZV9pc19yZXByZXNlbnRhYmxlIF8gPSB0cnVlXG4gICAgICBsZXQgc29tZSB0ID0gVjEudG9faW50IHRcbiAgICAgIGxldCB1bmNoZWNrZWRfdmFsdWUgPSBWMS5vZl9pbnRfdW5jaGVja2VkXG4gICAgICBsZXQgdG9fb3B0aW9uIHQgPSBpZiBpc19zb21lIHQgdGhlbiBTb21lICh1bmNoZWNrZWRfdmFsdWUgdCkgZWxzZSBOb25lXG5cbiAgICAgIGxldCBvZl9vcHRpb24gb3B0ID1cbiAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgICAgfCBTb21lIHYgLT4gc29tZSB2XG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgICAgICBpZiBpc19zb21lIHRcbiAgICAgICAgdGhlbiB1bmNoZWNrZWRfdmFsdWUgdFxuICAgICAgICBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFslaGVyZV0gXCJEYXRlLk9wdGlvbi52YWx1ZV9leG4gbm9uZVwiXVxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBCb29sLnNlbGVjdCAoaXNfbm9uZSB0KSBkZWZhdWx0ICh1bmNoZWNrZWRfdmFsdWUgdClcbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX29wdGlvbiB0IHw+IE9wdGlvbi5zZXhwX29mX3QgVjEuc2V4cF9vZl90XG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSAoT3B0aW9uLnRfb2Zfc2V4cCBWMS50X29mX3NleHApIHNleHAgfD4gb2Zfb3B0aW9uXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgWyVzZXhwX2dyYW1tYXI6IFYxLnQgT3B0aW9uLnRdXG5cbiAgICAgIGxldCBvZl9pbnRfZXhuIHQgPVxuICAgICAgICAoKiBEb24ndCBqdXN0IGJsaW5kbHkgY29udmVydCBmcm9tIGFuIGludGVnZXIuIFVzZSBbVjEub2ZfaW50X2V4bl0gdG8gdmFsaWRhdGUgdGhlXG4gICAgICAgICAgIGRhdGUuICopXG4gICAgICAgIGlmIHQgPSBub25lIHRoZW4gbm9uZSBlbHNlIHNvbWUgKFYxLm9mX2ludF9leG4gdClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19pbnQgdCA9IHRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYWJsZSA9IFN0YWJsZS5WMS5XaXRob3V0X2NvbXBhcmFibGVcbmluY2x1ZGUgV2l0aG91dF9jb21wYXJhYmxlXG5tb2R1bGUgQyA9IENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFdpdGhvdXRfY29tcGFyYWJsZSlcbmluY2x1ZGUgQ1xuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIChDIDogQ29tcGFyYWJsZS5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbmluY2x1ZGUgKFxuICBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGVcbiAgICBpbmNsdWRlIEJpbmFibGVcblxuICAgIGxldCBjb21wYXJlIChhIDogdCkgKGIgOiB0KSA9IGNvbXBhcmUgYSBiXG4gIGVuZCkgOlxuICAgIEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLkRhdGVcIlxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgZW5kKVxuXG5sZXQgdW5peF9lcG9jaCA9IGNyZWF0ZV9leG4gfnk6MTk3MCB+bTpKYW4gfmQ6MVxuXG4oKiBUaGUgRGF5cyBtb2R1bGUgaXMgdXNlZCBmb3IgY2FsY3VsYXRpb25zIHRoYXQgaW52b2x2ZSBhZGRpbmcgb3IgcmVtb3ZpbmcgYSBrbm93biBudW1iZXJcbiAgIG9mIGRheXMgZnJvbSBhIGRhdGUuICBJbnRlcm5hbGx5IHRoZSBkYXRlIGlzIHRyYW5zbGF0ZWQgdG8gYSBkYXkgbnVtYmVyLCB0aGUgZGF5cyBhcmVcbiAgIGFkZGVkLCBhbmQgdGhlIG5ldyBkYXRlIGlzIHJldHVybmVkLiAgVGhvc2UgaW50ZXJlc3RlZCBpbiB0aGUgbWF0aCBjYW4gcmVhZDpcblxuICAgaHR0cDovL2FsY29yLmNvbmNvcmRpYS5jYS9+Z3BrYXRjaC9nZGF0ZS1tZXRob2QuaHRtbFxuXG4gICBub3RlOiB1bml0IHRlc3RzIGFyZSBpbiBsaWJfdGVzdC90aW1lX3Rlc3QubWxcbiopXG5tb2R1bGUgRGF5cyA6IHNpZ1xuICB0eXBlIGRhdGUgPSB0XG4gIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG5cbiAgdmFsIG9mX2RhdGUgOiBkYXRlIC0+IHRcbiAgdmFsIHRvX2RhdGUgOiB0IC0+IGRhdGVcbiAgdmFsIGRpZmYgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBhZGRfZGF5cyA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHVuaXhfZXBvY2ggOiB0XG5lbmRcbndpdGggdHlwZSBkYXRlIDo9IHQgPSBzdHJ1Y3RcbiAgb3BlbiBJbnRcblxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgb2ZfeWVhciB5ID0gKDM2NSAqIHkpICsgKHkgLyA0KSAtICh5IC8gMTAwKSArICh5IC8gNDAwKVxuXG4gIGxldCBvZl9kYXRlIGRhdGUgPVxuICAgIGxldCBtID0gKE1vbnRoLnRvX2ludCAobW9udGggZGF0ZSkgKyA5KSAlIDEyIGluXG4gICAgbGV0IHkgPSB5ZWFyIGRhdGUgLSAobSAvIDEwKSBpblxuICAgIG9mX3llYXIgeSArICgoKG0gKiAzMDYpICsgNSkgLyAxMCkgKyAoZGF5IGRhdGUgLSAxKVxuICA7O1xuXG4gIGxldCBjXzEwXzAwMCA9IEludDYzLm9mX2ludCAxMF8wMDBcbiAgbGV0IGNfMTRfNzgwID0gSW50NjMub2ZfaW50IDE0Xzc4MFxuICBsZXQgY18zXzY1Ml80MjUgPSBJbnQ2My5vZl9pbnQgM182NTJfNDI1XG5cbiAgbGV0IHRvX2RhdGUgZGF5cyA9XG4gICAgbGV0IHkgPVxuICAgICAgbGV0IG9wZW4gSW50NjMgaW5cbiAgICAgIHRvX2ludF9leG4gKCgoY18xMF8wMDAgKiBvZl9pbnQgZGF5cykgKyBjXzE0Xzc4MCkgLyBjXzNfNjUyXzQyNSlcbiAgICBpblxuICAgIGxldCBkZGQgPSBkYXlzIC0gb2ZfeWVhciB5IGluXG4gICAgbGV0IHksIGRkZCA9XG4gICAgICBpZiBkZGQgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHkgPSB5IC0gMSBpblxuICAgICAgICB5LCBkYXlzIC0gb2ZfeWVhciB5KVxuICAgICAgZWxzZSB5LCBkZGRcbiAgICBpblxuICAgIGxldCBtaSA9ICgoMTAwICogZGRkKSArIDUyKSAvIDNfMDYwIGluXG4gICAgbGV0IHkgPSB5ICsgKChtaSArIDIpIC8gMTIpIGluXG4gICAgbGV0IG0gPSAoKG1pICsgMikgJSAxMikgKyAxIGluXG4gICAgbGV0IGQgPSBkZGQgLSAoKChtaSAqIDMwNikgKyA1KSAvIDEwKSArIDEgaW5cbiAgICBjcmVhdGVfZXhuIH55IH5tOihNb250aC5vZl9pbnRfZXhuIG0pIH5kXG4gIDs7XG5cbiAgbGV0IHVuaXhfZXBvY2ggPSBvZl9kYXRlIHVuaXhfZXBvY2hcbiAgbGV0IGFkZF9kYXlzIHQgZGF5cyA9IHQgKyBkYXlzXG4gIGxldCBkaWZmIHQxIHQyID0gdDEgLSB0MlxuZW5kXG5cbmxldCBhZGRfZGF5cyB0IGRheXMgPSBEYXlzLnRvX2RhdGUgKERheXMuYWRkX2RheXMgKERheXMub2ZfZGF0ZSB0KSBkYXlzKVxubGV0IGRpZmYgdDEgdDIgPSBEYXlzLmRpZmYgKERheXMub2ZfZGF0ZSB0MSkgKERheXMub2ZfZGF0ZSB0MilcblxubGV0IGFkZF9tb250aHMgdCBuID1cbiAgbGV0IHRvdGFsX21vbnRocyA9IE1vbnRoLnRvX2ludCAobW9udGggdCkgKyBuIGluXG4gIGxldCB5ID0geWVhciB0ICsgKHRvdGFsX21vbnRocyAvJSAxMikgaW5cbiAgbGV0IG0gPSB0b3RhbF9tb250aHMgJSAxMiBpblxuICAoKiBjb3JyZWN0IGZvciBkZWNlbWJlciAqKVxuICBsZXQgeSwgbSA9IGlmIEludC4oID0gKSBtIDAgdGhlbiB5IC0gMSwgbSArIDEyIGVsc2UgeSwgbSBpblxuICBsZXQgbSA9IE1vbnRoLm9mX2ludF9leG4gbSBpblxuICAoKiBoYW5kbGUgaW52YWxpZCBkYXRlcyBmb3IgbW9udGhzIHdpdGggZmV3ZXIgbnVtYmVyIG9mIGRheXMgKilcbiAgbGV0IHJlYyB0cnlfY3JlYXRlIGQgPVxuICAgIHRyeSBjcmVhdGVfZXhuIH55IH5tIH5kIHdpdGhcbiAgICB8IF9leG4gLT5cbiAgICAgIGFzc2VydCAoSW50LiggPj0gKSBkIDEpO1xuICAgICAgdHJ5X2NyZWF0ZSAoZCAtIDEpXG4gIGluXG4gIHRyeV9jcmVhdGUgKGRheSB0KVxuOztcblxubGV0IGFkZF95ZWFycyB0IG4gPSBhZGRfbW9udGhzIHQgKG4gKiAxMilcblxuKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXRlcm1pbmF0aW9uX29mX3RoZV9kYXlfb2ZfdGhlX3dlZWsjUHVyZWx5X21hdGhlbWF0aWNhbF9tZXRob2RzXG5cbiAgIG5vdGU6IHVuaXQgdGVzdHMgaW4gbGliX3Rlc3QvdGltZV90ZXN0Lm1sXG4qKVxubGV0IGRheV9vZl93ZWVrID1cbiAgbGV0IHRhYmxlID0gW3wgMDsgMzsgMjsgNTsgMDsgMzsgNTsgMTsgNDsgNjsgMjsgNCB8XSBpblxuICBmdW4gdCAtPlxuICAgIGxldCBtID0gTW9udGgudG9faW50IChtb250aCB0KSBpblxuICAgIGxldCB5ID0gaWYgSW50LiggPCApIG0gMyB0aGVuIHllYXIgdCAtIDEgZWxzZSB5ZWFyIHQgaW5cbiAgICBEYXlfb2Zfd2Vlay5vZl9pbnRfZXhuXG4gICAgICAoKHkgKyAoeSAvIDQpIC0gKHkgLyAxMDApICsgKHkgLyA0MDApICsgdGFibGUuKG0gLSAxKSArIGRheSB0KSAlIDcpXG47O1xuXG4oKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09yZGluYWxfZGF0ZSAqKVxubGV0IG5vbl9sZWFwX3llYXJfdGFibGUgPSBbfCAwOyAzMTsgNTk7IDkwOyAxMjA7IDE1MTsgMTgxOyAyMTI7IDI0MzsgMjczOyAzMDQ7IDMzNCB8XVxubGV0IGxlYXBfeWVhcl90YWJsZSA9IFt8IDA7IDMxOyA2MDsgOTE7IDEyMTsgMTUyOyAxODI7IDIxMzsgMjQ0OyAyNzQ7IDMwNTsgMzM1IHxdXG5cbmxldCBvcmRpbmFsX2RhdGUgdCA9XG4gIGxldCB0YWJsZSA9XG4gICAgaWYgaXNfbGVhcF95ZWFyIH55ZWFyOih5ZWFyIHQpIHRoZW4gbGVhcF95ZWFyX3RhYmxlIGVsc2Ugbm9uX2xlYXBfeWVhcl90YWJsZVxuICBpblxuICBsZXQgb2Zmc2V0ID0gdGFibGUuKE1vbnRoLnRvX2ludCAobW9udGggdCkgLSAxKSBpblxuICBkYXkgdCArIG9mZnNldFxuOztcblxubGV0IGxhc3Rfd2Vla19vZl95ZWFyIHkgPVxuICBsZXQgZmlyc3Rfb2ZfeWVhciA9IGNyZWF0ZV9leG4gfnkgfm06SmFuIH5kOjEgaW5cbiAgbGV0IGlzIHQgZGF5ID0gRGF5X29mX3dlZWsuZXF1YWwgKGRheV9vZl93ZWVrIHQpIGRheSBpblxuICBpZiBpcyBmaXJzdF9vZl95ZWFyIFRodSB8fCAoaXNfbGVhcF95ZWFyIH55ZWFyOnkgJiYgaXMgZmlyc3Rfb2ZfeWVhciBXZWQpXG4gIHRoZW4gNTNcbiAgZWxzZSA1MlxuOztcblxuKCogU2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZSBvciBJU08gODYwMSBmb3IgdGhlIGRldGFpbHMgb2YgdGhpc1xuICAgYWxnb3JpdGhtLlxuXG4gICBVc2VzIGEgW35mXSBhcmd1bWVudCB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgd2hlbiBjYWxsZWQgYnkgW3dlZWtfbnVtYmVyXS5cbiopXG5sZXQgY2FsbF93aXRoX3dlZWtfYW5kX3llYXIgdCB+ZiA9XG4gIGxldCBvcmRpbmFsID0gb3JkaW5hbF9kYXRlIHQgaW5cbiAgbGV0IHdlZWtkYXkgPSBEYXlfb2Zfd2Vlay5pc29fODYwMV93ZWVrZGF5X251bWJlciAoZGF5X29mX3dlZWsgdCkgaW5cbiAgKCogW29yZGluYWwgLSB3ZWVrZGF5ICsgNF0gaXMgdGhlIG9yZGluYWwgb2YgdGhpcyB3ZWVrJ3MgVGh1cnNkYXksIHRoZW4gKG4gKyA2KSAvIDcgaXNcbiAgICAgZGl2aXNpb24gYnkgNyByb3VuZGluZyB1cCAqKVxuICBsZXQgd2VlayA9IChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcgaW5cbiAgbGV0IHllYXIgPSB5ZWFyIHQgaW5cbiAgaWYgSW50LiggPCApIHdlZWsgMVxuICB0aGVuIGYgfndlZWs6KGxhc3Rfd2Vla19vZl95ZWFyICh5ZWFyIC0gMSkpIH55ZWFyOih5ZWFyIC0gMSlcbiAgZWxzZSBpZiBJbnQuKCA+ICkgd2VlayAobGFzdF93ZWVrX29mX3llYXIgeWVhcilcbiAgdGhlbiBmIH53ZWVrOjEgfnllYXI6KHllYXIgKyAxKVxuICBlbHNlIGYgfndlZWsgfnllYXJcbjs7XG5cbmxldCB3ZWVrX251bWJlcl9hbmRfeWVhciB0ID0gY2FsbF93aXRoX3dlZWtfYW5kX3llYXIgdCB+ZjooZnVuIH53ZWVrIH55ZWFyIC0+IHdlZWssIHllYXIpXG5sZXQgd2Vla19udW1iZXIgdCA9IGNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIHQgfmY6KGZ1biB+d2VlayB+eWVhcjpfIC0+IHdlZWspXG5sZXQgaXNfd2Vla2VuZCB0ID0gRGF5X29mX3dlZWsuaXNfc3VuX29yX3NhdCAoZGF5X29mX3dlZWsgdClcbmxldCBpc193ZWVrZGF5IHQgPSBub3QgKGlzX3dlZWtlbmQgdClcbmxldCBpc19idXNpbmVzc19kYXkgdCB+aXNfaG9saWRheSA9IGlzX3dlZWtkYXkgdCAmJiBub3QgKGlzX2hvbGlkYXkgdClcblxubGV0IHJlYyBkaWZmX3dlZWtlbmRfZGF5cyB0MSB0MiA9XG4gIGlmIHQxIDwgdDJcbiAgdGhlbiAtZGlmZl93ZWVrZW5kX2RheXMgdDIgdDFcbiAgZWxzZSAoXG4gICAgKCogQmFzaWMgZGF0ZSBkaWZmICopXG4gICAgbGV0IGRpZmYgPSBkaWZmIHQxIHQyIGluXG4gICAgKCogQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIFNhdHVyZGF5IC0+IFN1bmRheSBjcm9zc2luZ3MgKilcbiAgICBsZXQgZDEgPSBkYXlfb2Zfd2VlayB0MSBpblxuICAgIGxldCBkMiA9IGRheV9vZl93ZWVrIHQyIGluXG4gICAgbGV0IG51bV9zYXRzdW5fY3Jvc3NpbmdzID1cbiAgICAgIGlmIEludC4oIDwgKSAoRGF5X29mX3dlZWsudG9faW50IGQxKSAoRGF5X29mX3dlZWsudG9faW50IGQyKVxuICAgICAgdGhlbiAxICsgKGRpZmYgLyA3KVxuICAgICAgZWxzZSBkaWZmIC8gN1xuICAgIGluXG4gICAgKG51bV9zYXRzdW5fY3Jvc3NpbmdzICogMilcbiAgICArIChpZiBEYXlfb2Zfd2Vlay4oID0gKSBkMiBEYXlfb2Zfd2Vlay5TdW4gdGhlbiAxIGVsc2UgMClcbiAgICArIGlmIERheV9vZl93ZWVrLiggPSApIGQxIERheV9vZl93ZWVrLlN1biB0aGVuIC0xIGVsc2UgMClcbjs7XG5cbmxldCBkaWZmX3dlZWtkYXlzIHQxIHQyID0gZGlmZiB0MSB0MiAtIGRpZmZfd2Vla2VuZF9kYXlzIHQxIHQyXG5cbmxldCBhZGRfZGF5c19za2lwcGluZyB0IH5za2lwIG4gPVxuICBsZXQgc3RlcCA9IGlmIEludC4oID49ICkgbiAwIHRoZW4gMSBlbHNlIC0xIGluXG4gIGxldCByZWMgbG9vcCB0IGsgPVxuICAgIGxldCB0X25leHQgPSBhZGRfZGF5cyB0IHN0ZXAgaW5cbiAgICBpZiBza2lwIHQgdGhlbiBsb29wIHRfbmV4dCBrIGVsc2UgaWYgSW50LiggPSApIGsgMCB0aGVuIHQgZWxzZSBsb29wIHRfbmV4dCAoayAtIDEpXG4gIGluXG4gIGxvb3AgdCAoYWJzIG4pXG47O1xuXG5sZXQgcmVjIGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXAgfmNvbmRpdGlvbiA9XG4gIGlmIGNvbmRpdGlvbiB0IHRoZW4gdCBlbHNlIGZpcnN0X2RheV9zYXRpc2Z5aW5nIChhZGRfZGF5cyB0IHN0ZXApIH5zdGVwIH5jb25kaXRpb25cbjs7XG5cbmxldCBuZXh0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXAgfmNvbmRpdGlvbiA9XG4gIGxldCBuZXh0X2RheSA9IGFkZF9kYXlzIHQgc3RlcCBpblxuICBmaXJzdF9kYXlfc2F0aXNmeWluZyBuZXh0X2RheSB+c3RlcCB+Y29uZGl0aW9uXG47O1xuXG5sZXQgZm9sbG93aW5nX3dlZWtkYXkgdCA9IG5leHRfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDoxIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHByZXZpb3VzX3dlZWtkYXkgdCA9IG5leHRfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDooLTEpIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSB0ID0gZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDoxIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkgdCA9IGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6KC0xKSB+Y29uZGl0aW9uOmlzX3dlZWtkYXlcblxubGV0IHJvdW5kX2ZvcndhcmRfdG9fYnVzaW5lc3NfZGF5IHQgfmlzX2hvbGlkYXkgPVxuICBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOjEgfmNvbmRpdGlvbjooaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5KVxuOztcblxubGV0IHJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSB0IH5pc19ob2xpZGF5ID1cbiAgZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDooLTEpIH5jb25kaXRpb246KGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSlcbjs7XG5cbmxldCBhZGRfd2Vla2RheXMgdCBuID0gYWRkX2RheXNfc2tpcHBpbmcgdCB+c2tpcDppc193ZWVrZW5kIG5cbmxldCBhZGRfd2Vla2RheXNfcm91bmRpbmdfaW5fZGlyZWN0aW9uX29mX3N0ZXAgPSBhZGRfd2Vla2RheXNcblxubGV0IGFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIHQgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9mb3J3YXJkX3RvX3dlZWtkYXkgdCkgfnNraXA6aXNfd2Vla2VuZCBuXG47O1xuXG5sZXQgYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIHQgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9iYWNrd2FyZF90b193ZWVrZGF5IHQpIH5za2lwOmlzX3dlZWtlbmQgblxuOztcblxubGV0IGFkZF9idXNpbmVzc19kYXlzIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIHQgbiB+c2tpcDooZnVuIGQgLT4gaXNfd2Vla2VuZCBkIHx8IGlzX2hvbGlkYXkgZClcbjs7XG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19pbl9kaXJlY3Rpb25fb2Zfc3RlcCA9IGFkZF9idXNpbmVzc19kYXlzXG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3J3YXJkIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9mb3J3YXJkX3RvX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSB0KSBuIH5za2lwOihmdW4gZCAtPlxuICAgIG5vdCAoaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IGQpKVxuOztcblxubGV0IGFkZF9idXNpbmVzc19kYXlzX3JvdW5kaW5nX2JhY2t3YXJkIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9iYWNrd2FyZF90b19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkgdCkgbiB+c2tpcDooZnVuIGQgLT5cbiAgICBub3QgKGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSBkKSlcbjs7XG5cbmxldCBkYXRlc19iZXR3ZWVuIH5taW46dDEgfm1heDp0MiA9XG4gIGxldCByZWMgbG9vcCB0IGwgPSBpZiB0IDwgdDEgdGhlbiBsIGVsc2UgbG9vcCAoYWRkX2RheXMgdCAoLTEpKSAodCA6OiBsKSBpblxuICBsb29wIHQyIFtdXG47O1xuXG5sZXQgd2Vla2RheXNfYmV0d2VlbiB+bWluIH5tYXggPVxuICBsZXQgYWxsX2RhdGVzID0gZGF0ZXNfYmV0d2VlbiB+bWluIH5tYXggaW5cbiAgT3B0aW9uLnZhbHVlX21hcCAoTGlzdC5oZCBhbGxfZGF0ZXMpIH5kZWZhdWx0OltdIH5mOihmdW4gZmlyc3RfZGF0ZSAtPlxuICAgICgqIHRvIGF2b2lkIGEgc3lzdGVtIGNhbGwgb24gZXZlcnkgZGF0ZSwgd2UganVzdCBnZXQgdGhlIHdlZWtkYXkgZm9yIHRoZSBmaXJzdFxuICAgICAgIGRhdGUgYW5kIHVzZSBpdCB0byBnZXQgYWxsIHRoZSBvdGhlciB3ZWVrZGF5cyAqKVxuICAgIGxldCBmaXJzdF93ZWVrZGF5ID0gZGF5X29mX3dlZWsgZmlyc3RfZGF0ZSBpblxuICAgIGxldCBkYXRlX2FuZF93ZWVrZGF5cyA9XG4gICAgICBMaXN0Lm1hcGkgYWxsX2RhdGVzIH5mOihmdW4gaSBkYXRlIC0+IGRhdGUsIERheV9vZl93ZWVrLnNoaWZ0IGZpcnN0X3dlZWtkYXkgaSlcbiAgICBpblxuICAgIExpc3QuZmlsdGVyX21hcCBkYXRlX2FuZF93ZWVrZGF5cyB+ZjooZnVuIChkYXRlLCB3ZWVrZGF5KSAtPlxuICAgICAgaWYgRGF5X29mX3dlZWsuaXNfc3VuX29yX3NhdCB3ZWVrZGF5IHRoZW4gTm9uZSBlbHNlIFNvbWUgZGF0ZSkpXG47O1xuXG5sZXQgYnVzaW5lc3NfZGF0ZXNfYmV0d2VlbiB+bWluIH5tYXggfmlzX2hvbGlkYXkgPVxuICB3ZWVrZGF5c19iZXR3ZWVuIH5taW4gfm1heCB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIGQgLT4gbm90IChpc19ob2xpZGF5IGQpKVxuOztcblxubGV0IGZpcnN0X3N0cmljdGx5X2FmdGVyIHQgfm9uOmRvdyA9XG4gIGxldCBkb3cgPSBEYXlfb2Zfd2Vlay50b19pbnQgZG93IGluXG4gIGxldCB0cGx1czEgPSBhZGRfZGF5cyB0IDEgaW5cbiAgbGV0IGN1ciA9IERheV9vZl93ZWVrLnRvX2ludCAoZGF5X29mX3dlZWsgdHBsdXMxKSBpblxuICBsZXQgZGlmZiA9IChkb3cgKyA3IC0gY3VyKSBtb2QgNyBpblxuICBhZGRfZGF5cyB0cGx1czEgZGlmZlxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIG9wZW4gUXVpY2tjaGVja1xuXG4gIGxldCBnZW5fdW5pZm9ybV9pbmNsIGQxIGQyID1cbiAgICBpZiBkMSA+IGQyXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkRhdGUuZ2VuX3VuaWZvcm1faW5jbDogYm91bmRzIGFyZSBjcm9zc2VkXCJcbiAgICAgICAgICAgIH5sb3dlcl9ib3VuZDooZDEgOiB0KVxuICAgICAgICAgICAgfnVwcGVyX2JvdW5kOihkMiA6IHQpXTtcbiAgICBHZW5lcmF0b3IubWFwIChJbnQuZ2VuX3VuaWZvcm1faW5jbCAwIChkaWZmIGQyIGQxKSkgfmY6KGZ1biBkYXlzIC0+IGFkZF9kYXlzIGQxIGRheXMpXG4gIDs7XG5cbiAgbGV0IGdlbl9pbmNsIGQxIGQyID1cbiAgICBHZW5lcmF0b3Iud2VpZ2h0ZWRfdW5pb25cbiAgICAgIFsgMS4sIEdlbmVyYXRvci5yZXR1cm4gZDE7IDEuLCBHZW5lcmF0b3IucmV0dXJuIGQyOyAxOC4sIGdlbl91bmlmb3JtX2luY2wgZDEgZDIgXVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlbl9pbmNsIChvZl9zdHJpbmcgXCIxOTAwLTAxLTAxXCIpIChvZl9zdHJpbmcgXCIyMTAwLTAxLTAxXCIpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gT2JzZXJ2ZXIuY3JlYXRlIChmdW4gdCB+c2l6ZTpfIH5oYXNoIC0+IGhhc2hfZm9sZF90IGhhc2ggdClcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBTaHJpbmtlci5lbXB0eSAoKVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yXG5sZXQgZ2VuX2luY2wgPSBGb3JfcXVpY2tjaGVjay5nZW5faW5jbFxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBGb3JfcXVpY2tjaGVjay5nZW5fdW5pZm9ybV9pbmNsXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlclxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgbGVhcF95ZWFyX3RhYmxlID0gbGVhcF95ZWFyX3RhYmxlXG4gIGxldCBub25fbGVhcF95ZWFyX3RhYmxlID0gbm9uX2xlYXBfeWVhcl90YWJsZVxuICBsZXQgb3JkaW5hbF9kYXRlID0gb3JkaW5hbF9kYXRlXG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gU3RhYmxlLk9wdGlvblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bmNoZWNrZWRfdmFsdWVcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXBcbiAgICAgIChPcHRpb24ucXVpY2tjaGVja19nZW5lcmF0b3IgcXVpY2tjaGVja19nZW5lcmF0b3IpXG4gICAgICB+ZjpvZl9vcHRpb25cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIChPcHRpb24ucXVpY2tjaGVja19zaHJpbmtlciBxdWlja2NoZWNrX3Nocmlua2VyKVxuICAgICAgfmY6b2Zfb3B0aW9uXG4gICAgICB+Zl9pbnZlcnNlOnRvX29wdGlvblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLm9mX2hhc2hcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICBlbmQpXG4gIDs7XG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gRGlnaXRfc3RyaW5nX2hlbHBlcnNcblxubGV0IHN1ZmZpeGVzIGNoYXIgPVxuICBsZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmIGluXG4gIFsgc3ByaW50ZiBcIiVjXCIgY2hhcjsgc3ByaW50ZiBcIiVjTVwiIGNoYXI7IHNwcmludGYgXCIlYy5NXCIgY2hhcjsgc3ByaW50ZiBcIiVjLk0uXCIgY2hhciBdXG4gIHw+IExpc3QuY29uY2F0X21hcCB+ZjooZnVuIHN1ZmZpeCAtPlxuICAgIFsgU3RyaW5nLmxvd2VyY2FzZSBzdWZmaXg7IFN0cmluZy51cHBlcmNhc2Ugc3VmZml4IF0pXG47O1xuXG5sZXQgYW1fc3VmZml4ZXMgPSBsYXp5IChzdWZmaXhlcyAnQScpXG5sZXQgcG1fc3VmZml4ZXMgPSBsYXp5IChzdWZmaXhlcyAnUCcpXG5cbigqIEF2b2lkcyB0aGUgYWxsb2NhdGlvbiB0aGF0IFtMaXN0LmZpbmRdIHdvdWxkIGVudGFpbCBpbiBib3RoIGJvdGggdGhlIGNsb3N1cmUgaW5wdXQgYW5kXG4gICB0aGUgb3B0aW9uIG91dHB1dC4gKilcbmxldCByZWMgZmluZF9zdWZmaXggc3RyaW5nIHN1ZmZpeGVzID1cbiAgbWF0Y2ggc3VmZml4ZXMgd2l0aFxuICB8IHN1ZmZpeCA6OiBzdWZmaXhlcyAtPlxuICAgIGlmIFN0cmluZy5pc19zdWZmaXggc3RyaW5nIH5zdWZmaXggdGhlbiBzdWZmaXggZWxzZSBmaW5kX3N1ZmZpeCBzdHJpbmcgc3VmZml4ZXNcbiAgfCBbXSAtPiBcIlwiXG47O1xuXG5sZXQgaGFzX2NvbG9uIHN0cmluZyBwb3MgfnVudGlsID0gcG9zIDwgdW50aWwgJiYgQ2hhci5lcXVhbCAnOicgc3RyaW5nLltwb3NdXG5cbigqIFRoaXMgZnVuY3Rpb24gZGVmaW5lcyB3aGF0IHdlIG1lYW50IGJ5IFwiZGVjaW1hbCBwb2ludFwiLCBiZWNhdXNlIGluIHNvbWUgc3RyaW5nIGZvcm1hdHNcbiAgIGl0IG1lYW5zICcuJyBhbmQgaW4gc29tZSBpdCBjYW4gYmUgJy4nIG9yICcsJy4gVGhlcmUncyBubyBwYXJ0aWN1bGFyIGRlbWFuZCBmb3Igc3VwcG9ydFxuICAgZm9yICcsJywgYW5kIHVzaW5nIGp1c3QgJy4nIGxldHMgdXMgdXNlIFtGbG9hdC5vZl9zdHJpbmddIGZvciB0aGUgZGVjaW1hbCBzdWJzdHJpbmdcbiAgIHdpdGhvdXQgYW55IHN1YnN0aXR1dGlvbnMuICopXG5sZXQgY2hhcl9pc19kZWNpbWFsX3BvaW50IHN0cmluZyBwb3MgPSBDaGFyLmVxdWFsICcuJyBzdHJpbmcuW3Bvc11cblxubGV0IGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgbGVuID1cbiAgaWYgbGVuID4gMCAmJiBDaGFyLmVxdWFsICcgJyBzdHJpbmcuW2xlbiAtIDFdIHRoZW4gbGVuIC0gMSBlbHNlIGxlblxuOztcblxubGV0W0Bjb2xkXSBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbiA9XG4gIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZS5PZmRheTogaW52YWxpZCBzdHJpbmdcIiBzdHJpbmcgcmVhc29uXVxuOztcblxubGV0IGNoZWNrX2RpZ2l0c193aXRoX3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvIHN0cmluZyBwb3MgfnVudGlsID1cbiAgbGV0IG5vbnplcm8gPSByZWYgZmFsc2UgaW5cbiAgZm9yIHBvcyA9IHBvcyB0byB1bnRpbCAtIDEgZG9cbiAgICBtYXRjaCBzdHJpbmcuW3Bvc10gd2l0aFxuICAgIHwgJzAnIHwgJ18nIC0+ICgpXG4gICAgfCAnMScgLi4gJzknIC0+IG5vbnplcm8gOj0gdHJ1ZVxuICAgIHwgXyAtPlxuICAgICAgaW52YWxpZF9zdHJpbmdcbiAgICAgICAgc3RyaW5nXG4gICAgICAgIH5yZWFzb246XCJleHBlY3RlZCBkaWdpdHMgYW5kL29yIHVuZGVyc2NvcmVzIGFmdGVyIGRlY2ltYWwgcG9pbnRcIlxuICBkb25lO1xuICAhbm9uemVyb1xuOztcblxubGV0IGNoZWNrX2RpZ2l0c193aXRob3V0X3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvIHN0cmluZyBwb3MgfnVudGlsID1cbiAgbGV0IG5vbnplcm8gPSByZWYgZmFsc2UgaW5cbiAgZm9yIHBvcyA9IHBvcyB0byB1bnRpbCAtIDEgZG9cbiAgICBtYXRjaCBzdHJpbmcuW3Bvc10gd2l0aFxuICAgIHwgJzAnIC0+ICgpXG4gICAgfCAnMScgLi4gJzknIC0+IG5vbnplcm8gOj0gdHJ1ZVxuICAgIHwgXyAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImV4cGVjdGVkIGRpZ2l0cyBhZnRlciBkZWNpbWFsIHBvaW50XCJcbiAgZG9uZTtcbiAgIW5vbnplcm9cbjs7XG5cbmxldCBwYXJzZSBzdHJpbmcgfmYgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IGFtX29yX3BtLCB1bnRpbCA9XG4gICAgKCogZGlzY3JpbWluYXRlIGFtb25nIEFNICgxOjMwYW0pLCBQTSAoMTI6MzA6MDAgUC5NLiksIG9yIDI0LWhyICgxMzowMCkuICopXG4gICAgbWF0Y2hcbiAgICAgICggZmluZF9zdWZmaXggc3RyaW5nIChMYXp5LmZvcmNlIGFtX3N1ZmZpeGVzKVxuICAgICAgLCBmaW5kX3N1ZmZpeCBzdHJpbmcgKExhenkuZm9yY2UgcG1fc3VmZml4ZXMpIClcbiAgICB3aXRoXG4gICAgfCBcIlwiLCBcIlwiIC0+IGBocl8yNCwgbGVuXG4gICAgfCBhbSwgXCJcIiAtPiBgaHJfQU0sIGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgKGxlbiAtIFN0cmluZy5sZW5ndGggYW0pXG4gICAgfCBcIlwiLCBwbSAtPiBgaHJfUE0sIGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgKGxlbiAtIFN0cmluZy5sZW5ndGggcG0pXG4gICAgfCBfLCBfIC0+IGBocl8yNCwgYXNzZXJ0IGZhbHNlXG4gICAgKCogSW1tZWRpYXRlbHkgYWJvdmUsIGl0IG1heSBzZWVtIG5vbnNlbnNpY2FsIHRvIHdyaXRlIFtgaHJfMjQsIGFzc2VydCBmYWxzZV0gd2hlbiB0aGVcbiAgICAgICBbYGhyXzI0XSBjYW4gbmV2ZXIgYmUgcmV0dXJuZWQuIFdlIGRvIHRoaXMgdG8gaGVscCB0aGUgY29tcGlsZXIgZmlndXJlIG91dCBuZXZlciB0b1xuICAgICAgIGFsbG9jYXRlIGEgdHVwbGUgaW4gdGhpcyBjb2RlOiB0aGUgW2xldF0gcGF0dGVybiBpcyBzeW50YWN0aWNhbGx5IGEgdHVwbGUgYW5kIGV2ZXJ5XG4gICAgICAgbWF0Y2ggY2xhdXNlIGlzIHN5bnRhY3RpY2FsbHkgYSB0dXBsZS4gKilcbiAgaW5cbiAgbGV0IHBvcyA9IDAgaW5cbiAgbGV0IHBvcywgaHIsIGV4cGVjdF9taW51dGVzX2FuZF9zZWNvbmRzID1cbiAgICAoKiBlLmcuIFwiMTowMFwiIG9yIFwiMTowMDowMFwiICopXG4gICAgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMSkgfnVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMiwgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIxMjowMFwiIG9yIFwiMTI6MDA6MDBcIiAqKVxuICAgIGVsc2UgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMikgfnVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMywgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIxYW1cIjsgbXVzdCBoYXZlIEFNIG9yIFBNIChjaGVja2VkIGJlbG93KSAqKVxuICAgIGVsc2UgaWYgcG9zICsgMSA9IHVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMSwgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjEyYW1cIjsgbXVzdCBoYXZlIEFNIG9yIFBNIChjaGVja2VkIGJlbG93KSAqKVxuICAgIGVsc2UgaWYgcG9zICsgMiA9IHVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMiwgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjA5MzBcIjsgbXVzdCBub3QgaGF2ZSBzZWNvbmRzICopXG4gICAgZWxzZSBwb3MgKyAyLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTWludXRlc19idXRfbm90X3NlY29uZHNcbiAgaW5cbiAgbGV0IHBvcywgbWluLCBleHBlY3Rfc2Vjb25kcyA9XG4gICAgbWF0Y2ggZXhwZWN0X21pbnV0ZXNfYW5kX3NlY29uZHMgd2l0aFxuICAgIHwgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kcyAtPlxuICAgICAgKCogZS5nLiBcIjEyYW1cIiAqKVxuICAgICAgcG9zLCAwLCBmYWxzZVxuICAgIHwgKGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzIHwgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzKSBhcyBtYXliZV9zZWNvbmRzIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDA6MDBcIiAqKVxuICAgICAgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMikgfnVudGlsXG4gICAgICB0aGVuXG4gICAgICAgICggcG9zICsgM1xuICAgICAgICAsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3NcbiAgICAgICAgLCBtYXRjaCBtYXliZV9zZWNvbmRzIHdpdGhcbiAgICAgICAgfCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kcyAtPiB0cnVlXG4gICAgICAgIHwgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzIC0+XG4gICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJleHBlY3RlZCBlbmQgb2Ygc3RyaW5nIGFmdGVyIG1pbnV0ZXNcIiApXG4gICAgICAgICgqIGUuZy4gXCIxMjowMFwiICopXG4gICAgICBlbHNlIGlmIHBvcyArIDIgPSB1bnRpbFxuICAgICAgdGhlbiBwb3MgKyAyLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX3N0cmluZ1xuICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgIH5yZWFzb246XCJleHBlY3RlZCBjb2xvbiBvciBhbS9wbSBzdWZmaXggd2l0aCBvcHRpb25hbCBzcGFjZSBhZnRlciBtaW51dGVzXCJcbiAgaW5cbiAgbGV0IHNlYywgc3Vic2VjX3Bvcywgc3Vic2VjX2xlbiwgc3Vic2VjX25vbnplcm8gPVxuICAgIG1hdGNoIGV4cGVjdF9zZWNvbmRzIHdpdGhcbiAgICB8IGZhbHNlIC0+XG4gICAgICAoKiBlLmcuIFwiMTJhbVwiIG9yIFwiMTI6MDBcIiAqKVxuICAgICAgaWYgcG9zID0gdW50aWxcbiAgICAgIHRoZW4gMCwgcG9zLCAwLCBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICAoKiBUaGlzIGNhc2UgaXMgYWN0dWFsbHkgdW5yZWFjaGFibGUsIGJhc2VkIG9uIHRoZSB2YXJpb3VzIHdheXMgdGhhdFxuICAgICAgICAgICBbZXhwZWN0X3NlY29uZHNdIGNhbiBlbmQgdXAgZmFsc2UuICopXG4gICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiQlVHOiBkaWQgbm90IGV4cGVjdCBzZWNvbmRzLCBidXQgZm91bmQgdGhlbVwiXG4gICAgfCB0cnVlIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDA6MDBcIiAqKVxuICAgICAgaWYgcG9zICsgMiA+IHVudGlsXG4gICAgICB0aGVuXG4gICAgICAgICgqIGUuZy4gXCIxMjowMDowXCIgKilcbiAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJleHBlY3RlZCB0d28gZGlnaXRzIG9mIHNlY29uZHNcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzZWMgPSByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zIGluXG4gICAgICAgIGxldCBwb3MgPSBwb3MgKyAyIGluXG4gICAgICAgICgqIGUuZy4gXCIxMjowMDowMFwiICopXG4gICAgICAgIGlmIHBvcyA9IHVudGlsXG4gICAgICAgIHRoZW4gc2VjLCBwb3MsIDAsIGZhbHNlICgqIGUuZy4gXCIxMjowMDowMC4xMjNcIiAqKVxuICAgICAgICBlbHNlIGlmIHBvcyA8IHVudGlsICYmIGNoYXJfaXNfZGVjaW1hbF9wb2ludCBzdHJpbmcgcG9zXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoIHNlY1xuICAgICAgICAgICwgcG9zXG4gICAgICAgICAgLCB1bnRpbCAtIHBvc1xuICAgICAgICAgICwgY2hlY2tfZGlnaXRzX3dpdGhfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm8gc3RyaW5nIChwb3MgKyAxKSB+dW50aWwgKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW52YWxpZF9zdHJpbmdcbiAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgfnJlYXNvbjpcImV4cGVjdGVkIGRlY2ltYWwgcG9pbnQgb3IgYW0vcG0gc3VmZml4IGFmdGVyIHNlY29uZHNcIilcbiAgaW5cbiAgbGV0IGhyID1cbiAgICAoKiBOQi4gV2UgYWxyZWFkeSBrbm93IFtocl0gaXMgbm9uLW5lZ2F0aXZlLCBiZWNhdXNlIGl0J3MgdGhlIHJlc3VsdCBvZlxuICAgICAgIFtyZWFkXzJfZGlnaXRfaW50XS4gKilcbiAgICBtYXRjaCBhbV9vcl9wbSB3aXRoXG4gICAgfCBgaHJfQU0gLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMGFtXCIgKilcbiAgICAgIGlmIGhyIDwgMSB8fCBociA+IDEyXG4gICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgb3V0IG9mIGJvdW5kc1wiXG4gICAgICBlbHNlIGlmIGhyID0gMTJcbiAgICAgIHRoZW4gMFxuICAgICAgZWxzZSBoclxuICAgIHwgYGhyX1BNIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDBwbVwiICopXG4gICAgICBpZiBociA8IDEgfHwgaHIgPiAxMlxuICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImhvdXJzIG91dCBvZiBib3VuZHNcIlxuICAgICAgZWxzZSBpZiBociA9IDEyXG4gICAgICB0aGVuIDEyXG4gICAgICBlbHNlIGhyICsgMTJcbiAgICB8IGBocl8yNCAtPlxuICAgICAgKG1hdGNoIGV4cGVjdF9taW51dGVzX2FuZF9zZWNvbmRzIHdpdGhcbiAgICAgICB8IGBOZWl0aGVyX21pbnV0ZXNfbm9yX3NlY29uZHMgLT5cbiAgICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgd2l0aG91dCBtaW51dGVzIG9yIEFNL1BNXCJcbiAgICAgICB8IGBNaW51dGVzX2J1dF9ub3Rfc2Vjb25kcyB8IGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzIC0+XG4gICAgICAgICBpZiBociA+IDI0XG4gICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgICBlbHNlIGlmIGhyID0gMjQgJiYgKG1pbiA+IDAgfHwgc2VjID4gMCB8fCBzdWJzZWNfbm9uemVybylcbiAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJ0aW1lIGlzIHBhc3QgMjQ6MDA6MDBcIiAoKiBlLmcuIFwiMTM6MDA6MDBcIiAqKVxuICAgICAgICAgZWxzZSBocilcbiAgaW5cbiAgbGV0IG1pbiA9XG4gICAgaWYgbWluID4gNTkgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIm1pbnV0ZXMgb3V0IG9mIGJvdW5kc1wiIGVsc2UgbWluXG4gIGluXG4gIGxldCBzZWMgPVxuICAgIGlmIHNlYyA+IDYwIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzZWNvbmRzIG91dCBvZiBib3VuZHNcIiBlbHNlIHNlY1xuICBpblxuICBsZXQgc3Vic2VjX2xlbiA9IGlmIHNlYyA9IDYwIHx8IG5vdCBzdWJzZWNfbm9uemVybyB0aGVuIDAgZWxzZSBzdWJzZWNfbGVuIGluXG4gIGYgc3RyaW5nIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW5cbjs7XG5cbmxldCBwYXJzZV9pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgfmYgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIG1hdGNoXG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihTdHJpbmcubGVuZ3RoIHN0cilcbiAgICB3aXRoXG4gICAgfCBSZXN1bHQuT2sgeiAtPiB6XG4gICAgfCBSZXN1bHQuRXJyb3IgcyAtPlxuICAgICAgZmFpbHdpdGhmIFwiT2ZkYXkub2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQ6ICVzXCIgKEVycm9yLnRvX3N0cmluZ19tYWNoIHMpICgpXG4gIGluXG4gIGlmIGxlbiA8IDJcbiAgdGhlbiBmYWlsd2l0aCBcImxlbiA8IDJcIlxuICBlbHNlIChcbiAgICBsZXQgaHIgPSByZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zIGluXG4gICAgaWYgaHIgPiAyNCB0aGVuIGZhaWx3aXRoIFwiaG91ciA+IDI0XCI7XG4gICAgaWYgbGVuID0gMlxuICAgIHRoZW4gZiBzdHIgfmhyIH5taW46MCB+c2VjOjAgfnN1YnNlY19wb3M6KHBvcyArIGxlbikgfnN1YnNlY19sZW46MFxuICAgIGVsc2UgaWYgbGVuIDwgNVxuICAgIHRoZW4gZmFpbHdpdGggXCIyIDwgbGVuIDwgNVwiXG4gICAgZWxzZSBpZiBub3QgKENoYXIuZXF1YWwgc3RyLltwb3MgKyAyXSAnOicpXG4gICAgdGhlbiBmYWlsd2l0aCBcImZpcnN0IGNvbG9uIG1pc3NpbmdcIlxuICAgIGVsc2UgKFxuICAgICAgbGV0IG1pbiA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3M6KHBvcyArIDMpIGluXG4gICAgICBpZiBtaW4gPj0gNjAgdGhlbiBmYWlsd2l0aCBcIm1pbnV0ZSA+IDYwXCI7XG4gICAgICBpZiBociA9IDI0ICYmIG1pbiA8PiAwIHRoZW4gZmFpbHdpdGggXCIyNCBob3VycyBhbmQgbm9uLXplcm8gbWludXRlXCI7XG4gICAgICBpZiBsZW4gPSA1XG4gICAgICB0aGVuIGYgc3RyIH5ociB+bWluIH5zZWM6MCB+c3Vic2VjX3BvczoocG9zICsgbGVuKSB+c3Vic2VjX2xlbjowXG4gICAgICBlbHNlIGlmIGxlbiA8IDhcbiAgICAgIHRoZW4gZmFpbHdpdGggXCI1IDwgbGVuIDwgOFwiXG4gICAgICBlbHNlIGlmIG5vdCAoQ2hhci5lcXVhbCBzdHIuW3BvcyArIDVdICc6JylcbiAgICAgIHRoZW4gZmFpbHdpdGggXCJzZWNvbmQgY29sb24gbWlzc2luZ1wiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNlYyA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3M6KHBvcyArIDYpIGluXG4gICAgICAgICgqIHNlY29uZCBjYW4gYmUgNjAgaW4gdGhlIGNhc2Ugb2YgYSBsZWFwIHNlY29uZC4gVW5mb3J0dW5hdGVseSwgd2hhdCB3aXRoXG4gICAgICAgICAgIG5vbi1ob3VyLW11bHRpcGxlIHRpbWV6b25lIG9mZnNldHMsIHdlIGNhbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGF0XG4gICAgICAgICAgIHRoZSBob3VyIG9yIG1pbnV0ZSBtdXN0IGJlIGluIHRoYXQgY2FzZSAqKVxuICAgICAgICBpZiBzZWMgPiA2MCB0aGVuIGZhaWx3aXRoZiBcImludmFsaWQgc2Vjb25kOiAlaVwiIHNlYyAoKTtcbiAgICAgICAgaWYgaHIgPSAyNCAmJiBzZWMgPD4gMCB0aGVuIGZhaWx3aXRoIFwiMjQgaG91cnMgYW5kIG5vbi16ZXJvIHNlY29uZHNcIjtcbiAgICAgICAgaWYgbGVuID0gOFxuICAgICAgICB0aGVuIGYgc3RyIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3M6KHBvcyArIGxlbikgfnN1YnNlY19sZW46MFxuICAgICAgICBlbHNlIGlmIGxlbiA9IDlcbiAgICAgICAgdGhlbiBmYWlsd2l0aCBcImxlbmd0aCA9IDlcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBzdHIuW3BvcyArIDhdIHdpdGhcbiAgICAgICAgICB8ICcuJyB8ICcsJyAtPlxuICAgICAgICAgICAgbGV0IHN1YnNlY19wb3MgPSBwb3MgKyA4IGluXG4gICAgICAgICAgICBsZXQgc3Vic2VjX2xlbiA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgY2hlY2tfZGlnaXRzX3dpdGhvdXRfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm9cbiAgICAgICAgICAgICAgICAgIHN0clxuICAgICAgICAgICAgICAgICAgKHN1YnNlY19wb3MgKyAxKVxuICAgICAgICAgICAgICAgICAgfnVudGlsOihwb3MgKyBsZW4pXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCB0cnVlIHdoZW4gc2VjID0gNjAgLT4gMFxuICAgICAgICAgICAgICB8IHRydWUgd2hlbiBociA9IDI0IC0+IGZhaWx3aXRoIFwiMjQgaG91cnMgYW5kIG5vbi16ZXJvIHN1YnNlY29uZHNcIlxuICAgICAgICAgICAgICB8IF8gLT4gbGVuIC0gOFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGYgc3RyIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW5cbiAgICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJtaXNzaW5nIHN1YnNlY29uZCBzZXBhcmF0b3JcIikpKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluX3Byb3QuU3RkXG5pbmNsdWRlIEhhc2guQnVpbHRpblxuaW5jbHVkZSBTdGFibGVfd2l0bmVzcy5FeHBvcnRcblxuaW5jbHVkZSAoXG4gIEJhc2UgOlxuICBzaWdcbiAgICB0eXBlIG5vbnJlYyAnYSBhcnJheSA9ICdhIGFycmF5IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBib29sID0gYm9vbCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgY2hhciA9IGNoYXIgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGV4biA9IGV4biBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgbm9ucmVjIGZsb2F0ID0gZmxvYXQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGludCA9IGludCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgaW50MzIgPSBpbnQzMiBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgaW50NjQgPSBpbnQ2NCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgJ2EgbGlzdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIG5hdGl2ZWludCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgJ2Egb3B0aW9uID0gJ2Egb3B0aW9uIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSByZWYgPSAnYSByZWYgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIHN0cmluZyA9IHN0cmluZyBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgYnl0ZXMgPSBieXRlcyBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgdW5pdCA9IHVuaXQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIGFycmF5IDo9ICdhIGFycmF5XG4gIHdpdGggdHlwZSBib29sIDo9IGJvb2xcbiAgd2l0aCB0eXBlIGNoYXIgOj0gY2hhclxuICB3aXRoIHR5cGUgZXhuIDo9IGV4blxuICB3aXRoIHR5cGUgZmxvYXQgOj0gZmxvYXRcbiAgd2l0aCB0eXBlIGludCA6PSBpbnRcbiAgd2l0aCB0eXBlIGludDMyIDo9IGludDMyXG4gIHdpdGggdHlwZSBpbnQ2NCA6PSBpbnQ2NFxuICB3aXRoIHR5cGUgJ2EgbGlzdCA6PSAnYSBsaXN0XG4gIHdpdGggdHlwZSBuYXRpdmVpbnQgOj0gbmF0aXZlaW50XG4gIHdpdGggdHlwZSAnYSBvcHRpb24gOj0gJ2Egb3B0aW9uXG4gIHdpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmXG4gIHdpdGggdHlwZSBzdHJpbmcgOj0gc3RyaW5nXG4gIHdpdGggdHlwZSBieXRlcyA6PSBieXRlc1xuICB3aXRoIHR5cGUgdW5pdCA6PSB1bml0KVxuIiwib3BlbiBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX2ludGVybmFsXG4gIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZS5TdGFibGVcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBleGNlcHRpb24gTmFuX29yX2luZiBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgdHlwZSB0ID0gZmxvYXQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgZXF1YWwsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IHZlcmlmeSB0ID1cbiAgICAgIG1hdGNoIFN0ZGxpYi5jbGFzc2lmeV9mbG9hdCB0IHdpdGhcbiAgICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiAoKVxuICAgICAgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPiByYWlzZSBOYW5fb3JfaW5mXG4gICAgOztcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoRmxvYXQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgdCA9XG4gICAgICAgICAgICB2ZXJpZnkgdDtcbiAgICAgICAgICAgIHRcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgdCA9XG4gICAgICAgICAgICB2ZXJpZnkgdDtcbiAgICAgICAgICAgIHRcbiAgICAgICAgICA7O1xuICAgICAgICBlbmQpXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gRmxvYXQuc2V4cF9vZl90XG5cbiAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgIHwgU2V4cC5BdG9tIF8gYXMgc2V4cCAtPlxuICAgICAgICBsZXQgdCA9IEZsb2F0LnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgICh0cnkgdmVyaWZ5IHQgd2l0aFxuICAgICAgICAgfCBlIC0+IEltcG9ydC5vZl9zZXhwX2Vycm9yIChJbXBvcnQuRXhuLnRvX3N0cmluZyBlKSBzZXhwKTtcbiAgICAgICAgdFxuICAgICAgfCBzIC0+IEltcG9ydC5vZl9zZXhwX2Vycm9yIFwiRGVjaW1hbC50X29mX3NleHA6IEV4cGVjdGVkIEF0b20sIGZvdW5kIExpc3RcIiBzXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IEZsb2F0LnRfc2V4cF9ncmFtbWFyXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGZsb2F0W0BxdWlja2NoZWNrLmdlbmVyYXRvciBGbG9hdC5nZW5fZmluaXRlXSlcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBxdWlja2NoZWNrLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICgqIEZvciBbc10gd2hpY2ggaXMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBmaW5pdGUgZmxvYXQsIGluIGVpdGhlciBkZWNpbWFsIG9yXG4gICAgICAgc2NpZW50aWZpYyBub3RhdGlvbiwgc2hpZnQgdGhlIGRlY2ltYWwgcG9pbnQgb3IgYWRqdXN0IHRoZSBzY2llbnRpZmljIG5vdGF0aW9uXG4gICAgICAgZXhwb25lbnQgYnkgW2J5XSwgd2hpY2ggaXMgZXF1aXZhbGVudCB0byBtdWx0aXBseWluZyB0aGUgbnVtYmVyIGJ5IFsxMCoqYnldLlxuXG4gICAgICAgVGhlIG91dHB1dCB3aWxsIGJlIGluIHNjaWVudGlmaWMgbm90YXRpb24gaWZmIHRoZSBpbnB1dCB3YXMsIGV4Y2VwdCB3aGVuIHRoZVxuICAgICAgIHJlc3VsdGluZyBleHBvbmVudCBhZnRlciB0aGUgc2hpZnQgYmVjb21lcyAwLlxuXG4gICAgICAgTm8gZWZmb3J0IGlzIG1hZGUgdG8gbm9ybWFsaXplIHRoZSBzY2llbnRpZmljIG5vdGF0aW9uIGlmIGl0IHdhcyBub3Qgbm9ybWFsaXplZCwgb3JcbiAgICAgICB0byBzd2l0Y2ggdG8vZnJvbSBzY2llbnRpZmljIG5vdGF0aW9uIHRvIGhlbHAgcmVhZGFiaWxpdHkgKGV4Y2VwdCBmb3IgdGhlIEUwIGNhc2VcbiAgICAgICBtZW50aW9uZWQgYWJvdmUpLiAqKVxuICAgIGxldCByZWMgc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieSA9XG4gICAgICBpZiBieSA9IDBcbiAgICAgIHRoZW4gc1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzID0gU3RyaW5nLmxzdHJpcCBzIGluXG4gICAgICAgIGxldCBkLCBlLCB6ZXJvLCB1bmRlcnNjb3JlID1cbiAgICAgICAgICAoKiBGaW5kIHRoZSBwb3NpdGlvbiBvZiB0aGUgZGVjaW1hbCBwb2ludCBbZF0sIHRoZSBleHBvbmVudCBzaWduIFtlXSwgYW5kIGNoZWNrXG4gICAgICAgICAgICAgaWYgdGhlcmUgYXJlIGFueSBub24temVybyBzaWduaWZpY2FudCBkaWdpdHMgKG9ubHkgYmVmb3JlIHRoZSBleHBvbmVudCBzaWduKVxuICAgICAgICAgICAgIHRvIGRldGVybWluZSBpZiB0aGUgbnVtYmVyIGlzIGVxdWFsIHRvIDAuMCAqKVxuICAgICAgICAgIGxldCBkID0gcmVmIE5vbmUgaW5cbiAgICAgICAgICBsZXQgZSA9IHJlZiBOb25lIGluXG4gICAgICAgICAgbGV0IG5vdF96ZXJvID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgbGV0IHVuZGVyc2NvcmUgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICAgfCAnLicgLT5cbiAgICAgICAgICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgIWRcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIGZhaWx3aXRoZiBcIkVycm9yIHBhcnNpbmcgUGVyY2VudC50OiB0b28gbWFueSBkZWNpbWFsIHBvaW50cyBpbiAnJXMnXCIgcyAoKTtcbiAgICAgICAgICAgICAgZCA6PSBTb21lIGlcbiAgICAgICAgICAgIHwgJ2UnIHwgJ0UnIC0+XG4gICAgICAgICAgICAgIGlmIE9wdGlvbi5pc19zb21lICFlXG4gICAgICAgICAgICAgIHRoZW4gZmFpbHdpdGhmIFwiRXJyb3IgcGFyc2luZyBQZXJjZW50LnQ6IHRvbyBtYW55IEVzIGluICclcydcIiBzICgpO1xuICAgICAgICAgICAgICBlIDo9IFNvbWUgaVxuICAgICAgICAgICAgfCAnLScgfCAnKycgfCAnMCcgLT4gKClcbiAgICAgICAgICAgIHwgJ18nIC0+IHVuZGVyc2NvcmUgOj0gdHJ1ZVxuICAgICAgICAgICAgfCAnMScgLi4gJzknIC0+IGlmIE9wdGlvbi5pc19ub25lICFlIHRoZW4gbm90X3plcm8gOj0gdHJ1ZVxuICAgICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgICAgIGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWQgY2hhcmFjdGVyIHdoZW4gcGFyc2luZyBQZXJjZW50LnQ6ICclYycgaW4gJyVzJ1wiIGMgcyAoKVxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgIWQsICFlLCBub3QgIW5vdF96ZXJvLCAhdW5kZXJzY29yZVxuICAgICAgICBpblxuICAgICAgICBpZiB1bmRlcnNjb3JlXG4gICAgICAgIHRoZW4gc2hpZnRfZGVjaW1hbF9wb2ludCAoU3RyaW5nLmZpbHRlciBzIH5mOihmdW4gYyAtPiBDaGFyLihjIDw+ICdfJykpKSB+YnlcbiAgICAgICAgZWxzZSBpZiB6ZXJvXG4gICAgICAgIHRoZW4gc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IFNvbWUgZSAtPlxuICAgICAgICAgICAgKCogW3NdIGlzIGluIHNjaWVudGlmaWMgbm90YXRpb24uICBTaW1wbHkgYWRqdXN0IHRoZSBleHBvbmVudCBhZnRlciAnZScuICopXG4gICAgICAgICAgICBsZXQgZXhwID0gSW50Lm9mX3N0cmluZyAoU3RyaW5nLmRyb3BfcHJlZml4IHMgKGUgKyAxKSkgaW5cbiAgICAgICAgICAgIGxldCBleHAgPSBleHAgKyBieSBpblxuICAgICAgICAgICAgaWYgZXhwID0gMFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAoKiBXZSBlbmQgdXAgd2l0aCBleHBvbmVudCAwLCBzbyB3ZSBqdXN0IHNraXAgdGhlIFwiZVwiIGFsdG9nZXRoZXIgKilcbiAgICAgICAgICAgICAgU3RyaW5nLnByZWZpeCBzIGVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICAgICAgICAgIFsgU3RyaW5nLnByZWZpeCBzIChlICsgMSlcbiAgICAgICAgICAgICAgICA7IChpZiBleHAgPiAwIHRoZW4gXCIrXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICAgIDsgSW50LnRvX3N0cmluZyBleHBcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAoKiBbc10gaXMgaW4gZGVjaW1hbCBub3RhdGlvbi4gIFN0YXJ0IGJ5IGRyb3BwaW5nIHRoZSBsZWFkaW5nIHNpZ24gaWYgdGhlcmUgaXNcbiAgICAgICAgICAgICAgIG9uZS4gIFdlJ2xsIHJlLWFkZCBpdCBhdCB0aGUgZW5kIHRvIGtlZXAgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgc2ltcGxlci4gKilcbiAgICAgICAgICAgIGxldCBuZWcgPSBDaGFyLiggPSApIHMuWzBdICctJyBpblxuICAgICAgICAgICAgbGV0IHNpZ25lZCA9IG5lZyB8fCBDaGFyLiggPSApIHMuWzBdICcrJyBpblxuICAgICAgICAgICAgbGV0IHMgPSBpZiBzaWduZWQgdGhlbiBTdHJpbmcuZHJvcF9wcmVmaXggcyAxIGVsc2UgcyBpblxuICAgICAgICAgICAgbGV0IHMsIGJ5ID1cbiAgICAgICAgICAgICAgKCogTmV4dCwgc2NyYXRjaCB0aGUgZGVjaW1hbCBwb2ludCBpZiB0aGVyZSBpcyBvbmUsIHNvIHRoYXQgW3NdIGJlY29tZXMgYW5cbiAgICAgICAgICAgICAgICAgaW50ZWdlciwgYW5kIGFkanVzdCBbYnldIGFjY29yZGluZ2x5IHRvIGtlZXAgdGhlIHJlc3VsdCB1bmNoYW5nZWQuICBXZVxuICAgICAgICAgICAgICAgICBhbHNvIGtub3cgdGhhdCBbcyA8PiAwLjBdIHNvIHdlIHJlbW92ZSBsZWFkaW5nIHplcm9zLiAgV2UgbWF5IGJlIHdhc3RpbmdcbiAgICAgICAgICAgICAgICAgc29tZSB3b3JrIGJlY2F1c2Ugd2UgbWF5IGhhdmUgdG8gYWRkIHRoZW0gYmFjayBiZWxvdywgYnV0IHRoZSBjb2RlIGlzXG4gICAgICAgICAgICAgICAgIHNpbXBsZXIgdGhhdCB3YXkuICopXG4gICAgICAgICAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gcywgYnlcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT5cbiAgICAgICAgICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgICAgICAgICAoKiBXZSBjYWxjdWxhdGVkIFtkXSBiZWZvcmUgcmVtb3ZpbmcgdGhlIFwiLVwiIHNpZ24sIHNvIHdlIG1heSBoYXZlIHRvXG4gICAgICAgICAgICAgICAgICAgICBhZGp1c3QgaXQgbm93ICopXG4gICAgICAgICAgICAgICAgICBkIC0gaWYgc2lnbmVkIHRoZW4gMSBlbHNlIDBcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBzdWYgPSBTdHJpbmcuZHJvcF9wcmVmaXggcyAoZCArIDEpIGluXG4gICAgICAgICAgICAgICAgbGV0IHByZWYgPSBTdHJpbmcucHJlZml4IHMgZCBpblxuICAgICAgICAgICAgICAgIGxldCBzID0gcHJlZiBeIHN1ZiB8PiBTdHJpbmcubHN0cmlwIH5kcm9wOihDaGFyLiggPSApICcwJykgaW5cbiAgICAgICAgICAgICAgICBsZXQgYnkgPSBieSAtIFN0cmluZy5sZW5ndGggc3VmIGluXG4gICAgICAgICAgICAgICAgcywgYnlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBSZW1vdmUgdHJhaWxpbmcgemVyb3MgdG9vICopXG4gICAgICAgICAgICBsZXQgcywgYnkgPVxuICAgICAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgICAgICAgICAgIGxldCBzID0gcyB8PiBTdHJpbmcucnN0cmlwIH5kcm9wOihDaGFyLiggPSApICcwJykgaW5cbiAgICAgICAgICAgICAgbGV0IGJ5ID0gYnkgKyBsZW4gLSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgICAgcywgYnlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgICAgaWYgYnkgPSAwXG4gICAgICAgICAgICAgIHRoZW4gc1xuICAgICAgICAgICAgICBlbHNlIGlmIGJ5ID4gMFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgKCogQ2FzZSAxOiBbc10gaXMgYW4gaW50ZWdlciB3aGljaCB3ZSBuZWVkIHRvIGZ1cnRoZXIgbXVsdGlwbHkgYnkgYVxuICAgICAgICAgICAgICAgICAgIHBvc2l0aXZlIHBvd2VyIG9mIDEwLCBzbyB3ZSBqdXN0IGFkZCAwcyBhdCB0aGUgZW5kLiAqKVxuICAgICAgICAgICAgICAgIHMgXiBTdHJpbmcubWFrZSBieSAnMCdcbiAgICAgICAgICAgICAgZWxzZSBpZiBieSA+IC1sZW5cbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICgqIENhc2UgMjogW3NdIGlzIGFuIGludGVnZXIgd2hpY2ggd2UgbmVlZCB0byBkaXZpZGUgYnkgYSBwb3NpdGl2ZSBwb3dlclxuICAgICAgICAgICAgICAgICAgIG9mIDEwLCBhbmQgaXQgaGFzIGVub3VnaCBkaWdpdHMgdGhhdCB3ZSBjYW4ganVzdCBpbnNlcnQgdGhlICcuJyBpblxuICAgICAgICAgICAgICAgICAgIGJldHdlZW4gdGhlbS4gKilcbiAgICAgICAgICAgICAgICBTdHJpbmcuY29uY2F0IFsgU3RyaW5nLmRyb3Bfc3VmZml4IHMgKC1ieSk7IFwiLlwiOyBTdHJpbmcuc3VmZml4IHMgKC1ieSkgXVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgKCogQ2FzZSAzIChieSA8PSAtbGVuKTogW3NdIGlzIGFuIGludGVnZXIgd2hpY2ggd2UgbmVlZCB0byBkaXZpZGUgYnkgYVxuICAgICAgICAgICAgICAgICAgIGxhcmdlIGVub3VnaCBwb3NpdGl2ZSBwb3dlciBvZiAxMCB0aGF0IHdlIG5lZWQgdG8gYWRkIGxlYWRpbmcgMHMuICopXG4gICAgICAgICAgICAgICAgU3RyaW5nLmNvbmNhdCBbIFwiMC5cIjsgU3RyaW5nLm1ha2UgKC1ieSAtIGxlbikgJzAnOyBzIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBGaW5hbGx5LCByZXN0b3JlIHRoZSBzaWduLiAgV2UgY2FuJ3QganVzdCBkcm9wIHRoZSAnKycgc2lnbiwgd2UgbmVlZCB0b1xuICAgICAgICAgICAgICAgcmVzdG9yZSBpdCB0b28sIGJlY2F1c2UgaWYgd2UgZGlkbid0LCB3ZSB3b3VsZCBzaWxlbnRseSBwYXJzZSBudW1iZXJzIGxpa2VcbiAgICAgICAgICAgICAgIFwiKy0xMyVcIiBvciBcIisrMTdicFwiIHdpdGhvdXQgcmFpc2luZyBhbiBlcnJvci4gKilcbiAgICAgICAgICAgIGlmIHNpZ25lZCB0aGVuIChpZiBuZWcgdGhlbiBcIi1cIiBlbHNlIFwiK1wiKSBeIHMgZWxzZSBzKSlcbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwic2hpZnRfZGVjaW1hbF9wb2ludCAxXCIgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIFsgXCIzXCJcbiAgICAgICAgOyBcIjUxLjJcIlxuICAgICAgICA7IFwiLTUwXCJcbiAgICAgICAgOyBcIjMxMjcwMDAuMDAwXCJcbiAgICAgICAgOyBcIjEuNzlFKzMwOFwiXG4gICAgICAgIDsgXCI0Ljk0MDY1NkUtMzI0XCJcbiAgICAgICAgOyBcIi0wLjAwMGUxM1wiXG4gICAgICAgIDsgXCIxLjQ3NjUxRSsxMFwiXG4gICAgICAgIF1cbiAgICAgICAgfmY6KGZ1biBzIC0+XG4gICAgICAgICAgcHJpbnRmIFwiPT0gJXMgPT1cXG5cIiBzO1xuICAgICAgICAgIGxldCB4ID0gRmxvYXQub2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgWyAtNDA7IC0xMDsgLTI7IC0xOyAwOyAxOyAyOyAxMDsgNDAgXSB+ZjooZnVuIGJ5IC0+XG4gICAgICAgICAgICBsZXQgczEgPSBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5IGluXG4gICAgICAgICAgICBwcmludGYgXCIlc1xcblwiIHMxO1xuICAgICAgICAgICAgbGV0IHgxID0gRmxvYXQub2Zfc3RyaW5nIHMxIGluXG4gICAgICAgICAgICBsZXQgeDIgPSB4ICouICgxMC4gKiogZmxvYXQgYnkpIGluXG4gICAgICAgICAgICBhc3NlcnQgKEZsb2F0Lih4MSA9IHgyIHx8IGFicyAoKHgxIC0geDIpIC8geDEpIDwgMWUtNikgOiBib29sKSk7XG4gICAgICAgICAgcHJpbnRmIFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG5cIik7XG4gICAgICAoKiBOb3RlIFwiLTAuMDAwZTEzXCIgaXMgbm90IGFkanVzdGVkICopXG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICAgICA9PSAzID09XG4gICAgICAgIDAuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM1xuICAgICAgICAwLjAwMDAwMDAwMDNcbiAgICAgICAgMC4wM1xuICAgICAgICAwLjNcbiAgICAgICAgM1xuICAgICAgICAzMFxuICAgICAgICAzMDBcbiAgICAgICAgMzAwMDAwMDAwMDBcbiAgICAgICAgMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gNTEuMiA9PVxuICAgICAgICAwLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTEyXG4gICAgICAgIDAuMDAwMDAwMDA1MTJcbiAgICAgICAgMC41MTJcbiAgICAgICAgNS4xMlxuICAgICAgICA1MS4yXG4gICAgICAgIDUxMlxuICAgICAgICA1MTIwXG4gICAgICAgIDUxMjAwMDAwMDAwMFxuICAgICAgICA1MTIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gLTUwID09XG4gICAgICAgIC0wLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNVxuICAgICAgICAtMC4wMDAwMDAwMDVcbiAgICAgICAgLTAuNVxuICAgICAgICAtNVxuICAgICAgICAtNTBcbiAgICAgICAgLTUwMFxuICAgICAgICAtNTAwMFxuICAgICAgICAtNTAwMDAwMDAwMDAwXG4gICAgICAgIC01MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gMzEyNzAwMC4wMDAgPT1cbiAgICAgICAgMC4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMTI3XG4gICAgICAgIDAuMDAwMzEyN1xuICAgICAgICAzMTI3MFxuICAgICAgICAzMTI3MDBcbiAgICAgICAgMzEyNzAwMC4wMDBcbiAgICAgICAgMzEyNzAwMDBcbiAgICAgICAgMzEyNzAwMDAwXG4gICAgICAgIDMxMjcwMDAwMDAwMDAwMDAwXG4gICAgICAgIDMxMjcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgID09IDEuNzlFKzMwOCA9PVxuICAgICAgICAxLjc5RSsyNjhcbiAgICAgICAgMS43OUUrMjk4XG4gICAgICAgIDEuNzlFKzMwNlxuICAgICAgICAxLjc5RSszMDdcbiAgICAgICAgMS43OUUrMzA4XG4gICAgICAgIDEuNzlFKzMwOVxuICAgICAgICAxLjc5RSszMTBcbiAgICAgICAgMS43OUUrMzE4XG4gICAgICAgIDEuNzlFKzM0OFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSA0Ljk0MDY1NkUtMzI0ID09XG4gICAgICAgIDQuOTQwNjU2RS0zNjRcbiAgICAgICAgNC45NDA2NTZFLTMzNFxuICAgICAgICA0Ljk0MDY1NkUtMzI2XG4gICAgICAgIDQuOTQwNjU2RS0zMjVcbiAgICAgICAgNC45NDA2NTZFLTMyNFxuICAgICAgICA0Ljk0MDY1NkUtMzIzXG4gICAgICAgIDQuOTQwNjU2RS0zMjJcbiAgICAgICAgNC45NDA2NTZFLTMxNFxuICAgICAgICA0Ljk0MDY1NkUtMjg0XG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgID09IC0wLjAwMGUxMyA9PVxuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSAxLjQ3NjUxRSsxMCA9PVxuICAgICAgICAxLjQ3NjUxRS0zMFxuICAgICAgICAxLjQ3NjUxXG4gICAgICAgIDEuNDc2NTFFKzhcbiAgICAgICAgMS40NzY1MUUrOVxuICAgICAgICAxLjQ3NjUxRSsxMFxuICAgICAgICAxLjQ3NjUxRSsxMVxuICAgICAgICAxLjQ3NjUxRSsxMlxuICAgICAgICAxLjQ3NjUxRSsyMFxuICAgICAgICAxLjQ3NjUxRSs1MFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8fV1cbiAgICA7O1xuXG4gICAgbW9kdWxlIFN0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgIGV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuICAgICAgKCogTG9naWMgc3RvbGVuIGZyb20gbGliL2Jhc2Uvc3JjL2Zsb2F0Lm1sLCBidXQgdGhpcyBkb2VzIG5vdCBjYWxsXG4gICAgICAgICBbdmFsaWRfZmxvYXRfbGV4ZW1dIHNvIG5vdCBhZGRpbmcgYSB0cmFpbGluZyBcIi5cIiBhbmQgYWxzbywgd2UncmUgdXNpbmdcbiAgICAgICAgIHVwcGVyY2FzZSAoJUcgdnMgJWcpIGZvciBjb25zaXN0ZW5jeSB3aXRoIFtQZXJjZW50LlN0YWJsZS5WMl0uICopXG4gICAgICBsZXQgZmxvYXRfdG9fc3RyaW5nIHggPVxuICAgICAgICBsZXQgeSA9IGZvcm1hdF9mbG9hdCBcIiUuMTVHXCIgeCBpblxuICAgICAgICBpZiBGbG9hdC4oID0gKSAoZmxvYXRfb2Zfc3RyaW5nIHkpIHggdGhlbiB5IGVsc2UgZm9ybWF0X2Zsb2F0IFwiJS4xN0dcIiB4XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nJyBmbG9hdF90b19zdHJpbmcgeCA9XG4gICAgICAgIGxldCB4X2FicyA9IEZsb2F0LmFicyB4IGluXG4gICAgICAgIGlmIEZsb2F0LiggPSApIHhfYWJzIDAuXG4gICAgICAgIHRoZW4gXCIweFwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBzID0gZmxvYXRfdG9fc3RyaW5nIHggaW5cbiAgICAgICAgICAoKiBVbmltcG9ydGFudCBub3RlOiBWMyBzZXJpYWxpemVzIG5hbiBhcyBcIk5BTnhcIiwgd2hpbGUgVjIgc2VyaWFsaXplcyBpdCBhc1xuICAgICAgICAgICAgIFwiTkFOYnBcIiAqKVxuICAgICAgICAgIGlmIEZsb2F0Lihpc19uYW4geCB8fCBpc19pbmYgeCB8fCB4X2FicyA+PSAxLilcbiAgICAgICAgICB0aGVuIHMgXiBcInhcIlxuICAgICAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDAuMDFcbiAgICAgICAgICB0aGVuIHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+Ynk6MiBeIFwiJVwiXG4gICAgICAgICAgZWxzZSBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5OjQgXiBcImJwXCIpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHggPSB0b19zdHJpbmcnIGZsb2F0X3RvX3N0cmluZyB4XG5cbiAgICAgIGxldCByZWFsbHlfb2Zfc3RyaW5nIHN0ciBmbG9hdF9vZl9zdHJpbmcgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggc3RyIH5zdWZmaXg6XCJ4XCIgd2l0aFxuICAgICAgICB8IFNvbWUgc3RyIC0+IGZsb2F0X29mX3N0cmluZyBzdHIgfmJ5OjBcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5jaG9wX3N1ZmZpeCBzdHIgfnN1ZmZpeDpcIiVcIiB3aXRoXG4gICAgICAgICAgIHwgU29tZSBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0ciB+Ynk6KC0yKVxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IHN0ciB+c3VmZml4OlwiYnBcIiB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0ciB+Ynk6KC00KVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwiUGVyY2VudC5vZl9zdHJpbmc6IG11c3QgZW5kIGluIHgsICUlLCBvciBicDogJXNcIiBzdHIgKCkpKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyB4ID1cbiAgICAgICAgcmVhbGx5X29mX3N0cmluZyB4IChmdW4gcyB+YnkgLT5cbiAgICAgICAgICBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5XG4gICAgICAgICAgfD4gU2V4cC5BdG9tXG4gICAgICAgICAgfD4gRmxvYXRfd2l0aF9maW5pdGVfb25seV9zZXJpYWxpemF0aW9uLnRfb2Zfc2V4cClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgeCA9XG4gICAgICAgIHJlYWxseV9vZl9zdHJpbmcgeCAoZnVuIHMgfmJ5IC0+XG4gICAgICAgICAgbWF0Y2ggU3RyaW5nLmxvd2VyY2FzZSBzIHdpdGhcbiAgICAgICAgICB8IFwibmFuXCJcbiAgICAgICAgICB8IFwiLW5hblwiXG4gICAgICAgICAgfCBcIituYW5cIlxuICAgICAgICAgIHwgXCJpbmZcIlxuICAgICAgICAgIHwgXCJpbmZpbml0eVwiXG4gICAgICAgICAgfCBcIitpbmZcIlxuICAgICAgICAgIHwgXCIraW5maW5pdHlcIlxuICAgICAgICAgIHwgXCItaW5mXCJcbiAgICAgICAgICB8IFwiLWluZmluaXR5XCIgLT5cbiAgICAgICAgICAgICgqIFdlIHBhcnNlIHRoZXNlIG5hbiBvciBpbmYgc3RyaW5ncyBkaXJlY3RseSwgYmVjYXVzZVxuICAgICAgICAgICAgICAgW3NoaWZ0X2RlY2ltYWxfcG9pbnRdIGRvZXMgbm90IHN1cHBvcnQgdGhlbSAqKVxuICAgICAgICAgICAgRmxvYXQub2Zfc3RyaW5nIHNcbiAgICAgICAgICB8IF8gLT4gc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieSB8PiBGbG9hdC5vZl9zdHJpbmcpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBTdHJpbmdhYmxlIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHRcblxuICAgICAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICAgICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgICAgIHZhbCBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgOiBzdHJpbmcgLT4gdFxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuXG4gICAgaW5jbHVkZSAoU2V4cGFibGUuU3RhYmxlLk9mX3N0cmluZ2FibGUuVjEgKFN0cmluZ2FibGUpIDogU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuICAgIGluY2x1ZGUgKEZsb2F0IDogQmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgKCogVXNlIGEgZGlmZmVyZW50IGJpbl9zaGFwZV90IHRoYW4gUGVyY2VudC5TdGFibGUuVjIsIGV2ZW4gdGhvdWdoIHRoZXNlIHR3byB2ZXJzaW9uc1xuICAgICAgIGhhdmUgY29tcGF0aWJsZSBiaW5faW8gc2VyaWFsaXphdGlvbi4gIFNpbmNlIHRoZXkgZG8gZGlmZmVyIGluIHNleHAgc2VyaWFsaXphdGlvbixcbiAgICAgICB3ZSBlcnIgb24gdGhlIHNpZGUgb2Ygc2FmZXR5IGFuZCBjaGFuZ2UgdGhlIGJpbiBzaGFwZSB0byB3YXJuIHRoYXQgVjMgaXMgbm90IGFsd2F5c1xuICAgICAgIGEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgVjIuICopXG4gICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLmJhc2V0eXBlXG4gICAgICAgIChCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImIzMmYyYTFlLTZiNDMtMTFlZC1iMzNiLWFhYzJhNTYzZjEwYVwiKVxuICAgICAgICBbIGJpbl9zaGFwZV90IF1cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgICAgIGVuZClcblxuICAgIG1vZHVsZSBBbHdheXNfcGVyY2VudGFnZSA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gICAgICBsZXQgdG9fc3RyaW5nIHggPVxuICAgICAgICBsZXQgcyA9IFN0cmluZ2FibGUuZmxvYXRfdG9fc3RyaW5nIHggaW5cbiAgICAgICAgc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieToyIF4gXCIlXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChmbG9hdFtAcXVpY2tjaGVjay5nZW5lcmF0b3IgRmxvYXQuZ2VuX2Zpbml0ZV0pXG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBxdWlja2NoZWNrLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBvZl9tdWx0IGYgPSBmXG4gICAgbGV0IHRvX211bHQgdCA9IHRcbiAgICBsZXQgb2ZfcGVyY2VudGFnZSBmID0gZiAvLiAxMDAuXG4gICAgbGV0IHRvX3BlcmNlbnRhZ2UgdCA9IHQgKi4gMTAwLlxuICAgIGxldCBvZl9icCBmID0gZiAvLiAxMF8wMDAuXG4gICAgbGV0IHRvX2JwIHQgPSB0ICouIDEwXzAwMC5cbiAgICBsZXQgb2ZfYnBfaW50IGkgPSBvZl9icCAoRmxvYXQub2ZfaW50IGkpXG4gICAgbGV0IHRvX2JwX2ludCB0ID0gRmxvYXQudG9faW50ICh0b19icCB0KVxuXG4gICAgKCogTXVsdGlwbHkgdGhlIGRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgZmxvYXQgW2ZdIGJ5IFsxMCoqYnldLCBhbmQgY29udmVydCBiYWNrIHRvXG4gICAgICAgdGhlIG5lYXJlc3QgcmVwcmVzZW50YWJsZSBmbG9hdC4gKilcbiAgICBsZXQgc2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCBmIH5ieSA9XG4gICAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSBmKVxuICAgICAgdGhlbiBmXG4gICAgICBlbHNlIEZsb2F0LnRvX3N0cmluZyBmIHw+IFYzLnNoaWZ0X2RlY2ltYWxfcG9pbnQgfmJ5IHw+IEZsb2F0Lm9mX3N0cmluZ1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfcGVyY2VudGFnZV9zbG93X21vcmVfYWNjdXJhdGUgZiA9IHNoaWZ0X2RlY2ltYWxfcG9pbnRfaW5fZmxvYXQgZiB+Ynk6KC0yKVxuICAgIGxldCB0b19wZXJjZW50YWdlX3Nsb3dfbW9yZV9hY2N1cmF0ZSBmID0gc2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCBmIH5ieToyXG4gICAgbGV0IG9mX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSBmID0gc2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCBmIH5ieTooLTQpXG4gICAgbGV0IHRvX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSBmID0gc2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCBmIH5ieTo0XG5cbiAgICBsZXQgcm91bmRfc2lnbmlmaWNhbnQgcCB+c2lnbmlmaWNhbnRfZGlnaXRzID1cbiAgICAgIEZsb2F0LnJvdW5kX3NpZ25pZmljYW50IHAgfnNpZ25pZmljYW50X2RpZ2l0c1xuICAgIDs7XG5cbiAgICBsZXQgcm91bmRfZGVjaW1hbF9tdWx0IHAgfmRlY2ltYWxfZGlnaXRzID0gRmxvYXQucm91bmRfZGVjaW1hbCBwIH5kZWNpbWFsX2RpZ2l0c1xuXG4gICAgbGV0IHJvdW5kX2RlY2ltYWxfcGVyY2VudGFnZSBwIH5kZWNpbWFsX2RpZ2l0cyA9XG4gICAgICBGbG9hdC5yb3VuZF9kZWNpbWFsIChwICouIDEwMC4pIH5kZWNpbWFsX2RpZ2l0cyAvLiAxMDAuXG4gICAgOztcblxuICAgIGxldCByb3VuZF9kZWNpbWFsX2JwIHAgfmRlY2ltYWxfZGlnaXRzID1cbiAgICAgIEZsb2F0LnJvdW5kX2RlY2ltYWwgKHAgKi4gMTAwMDAuKSB+ZGVjaW1hbF9kaWdpdHMgLy4gMTAwMDAuXG4gICAgOztcblxuICAgIG1vZHVsZSBGb3JtYXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgRXhwb25lbnQgb2YgaW50XG4gICAgICAgIHwgRXhwb25lbnRfRSBvZiBpbnRcbiAgICAgICAgfCBEZWNpbWFsIG9mIGludFxuICAgICAgICB8IE9jYW1sXG4gICAgICAgIHwgQ29tcGFjdCBvZiBpbnRcbiAgICAgICAgfCBDb21wYWN0X0Ugb2YgaW50XG4gICAgICAgIHwgSGV4IG9mIGludFxuICAgICAgICB8IEhleF9FIG9mIGludFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGV4cG9uZW50IH5wcmVjaXNpb24gPSBFeHBvbmVudCBwcmVjaXNpb25cbiAgICAgIGxldCBleHBvbmVudF9FIH5wcmVjaXNpb24gPSBFeHBvbmVudF9FIHByZWNpc2lvblxuICAgICAgbGV0IGRlY2ltYWwgfnByZWNpc2lvbiA9IERlY2ltYWwgcHJlY2lzaW9uXG4gICAgICBsZXQgb2NhbWwgPSBPY2FtbFxuICAgICAgbGV0IGNvbXBhY3QgfnByZWNpc2lvbiA9IENvbXBhY3QgcHJlY2lzaW9uXG4gICAgICBsZXQgY29tcGFjdF9FIH5wcmVjaXNpb24gPSBDb21wYWN0X0UgcHJlY2lzaW9uXG4gICAgICBsZXQgaGV4IH5wcmVjaXNpb24gPSBIZXggcHJlY2lzaW9uXG4gICAgICBsZXQgaGV4X0UgfnByZWNpc2lvbiA9IEhleF9FIHByZWNpc2lvblxuXG4gICAgICBsZXQgZm9ybWF0X2Zsb2F0IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFeHBvbmVudCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmVcIiBwcmVjaXNpb25cbiAgICAgICAgfCBFeHBvbmVudF9FIHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qRVwiIHByZWNpc2lvblxuICAgICAgICB8IERlY2ltYWwgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipmXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgT2NhbWwgLT4gc3ByaW50ZiBcIiVGXCJcbiAgICAgICAgfCBDb21wYWN0IHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qZ1wiIHByZWNpc2lvblxuICAgICAgICB8IENvbXBhY3RfRSBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKkdcIiBwcmVjaXNpb25cbiAgICAgICAgfCBIZXggcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipoXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgSGV4X0UgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipIXCIgcHJlY2lzaW9uXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGZvcm1hdCB4IGZvcm1hdCA9XG4gICAgICBsZXQgeF9hYnMgPSBGbG9hdC5hYnMgeCBpblxuICAgICAgbGV0IHN0cmluZyBmbG9hdCA9IEZvcm1hdC5mb3JtYXRfZmxvYXQgZm9ybWF0IGZsb2F0IGluXG4gICAgICBpZiBGbG9hdC4oID0gKSB4X2FicyAwLlxuICAgICAgdGhlbiBcIjB4XCJcbiAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDEuXG4gICAgICB0aGVuIHN0cmluZyAoeCAqLiAxLikgXiBcInhcIlxuICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMC4wMVxuICAgICAgdGhlbiBzdHJpbmcgKHggKi4gMTAwLikgXiBcIiVcIlxuICAgICAgZWxzZSBzdHJpbmcgKHggKi4gMTBfMDAwLikgXiBcImJwXCJcbiAgICA7O1xuXG4gICAgbW9kdWxlIFN0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICgqIFdBUk5JTkcgLSBQTEVBU0UgUkVBRCBCRUZPUkUgRURJVElORyBUSEVTRSBGVU5DVElPTlM6XG5cbiAgICAgICAgIFRoZSBzdHJpbmcgY29udmVydGVycyBpbiBTdGFibGUuVjMvVjIvVjEgc2hvdWxkIG5ldmVyIGNoYW5nZS4gSWYgeW91IGFyZSBjaGFuZ2luZ1xuICAgICAgICAgdGhlIHNlbWFudGljcyBvZiBhbnl0aGluZyB0aGF0IGFmZmVjdHMgdGhlIHNleHAgb3IgYmluLWlvIHJlcHJlc2VudGF0aW9uIG9mXG4gICAgICAgICB2YWx1ZXMgb2YgdGhpcyB0eXBlICh0aGlzIGluY2x1ZGVzIHRvX3N0cmluZyBhbmQgb2Zfc3RyaW5nKSBtYWtlIGEgU3RhYmxlLlY0IGFuZFxuICAgICAgICAgbWFrZSB5b3VyIGNoYW5nZXMgdGhlcmUuIFRoYW5rcyEgKilcbiAgICAgIGxldCB0b19zdHJpbmcgeCA9XG4gICAgICAgIGxldCB4X2FicyA9IEZsb2F0LmFicyB4IGluXG4gICAgICAgIGxldCBzdHJpbmcgZmxvYXQgPSBzcHJpbnRmIFwiJS42R1wiIGZsb2F0IGluXG4gICAgICAgIGlmIEZsb2F0LiggPSApIHhfYWJzIDAuXG4gICAgICAgIHRoZW4gXCIweFwiXG4gICAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDEuXG4gICAgICAgIHRoZW4gc3RyaW5nICh4ICouIDEuKSBeIFwieFwiXG4gICAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDAuMDFcbiAgICAgICAgdGhlbiBzdHJpbmcgKHggKi4gMTAwLikgXiBcIiVcIlxuICAgICAgICBlbHNlIHN0cmluZyAoeCAqLiAxMF8wMDAuKSBeIFwiYnBcIlxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyA9IFYzLm9mX3N0cmluZ1xuICAgICAgbGV0IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiA9IFYzLm9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZlxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBTdHJpbmdhYmxlIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHRcblxuICAgICAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICAgICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgICAgIHZhbCBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgOiBzdHJpbmcgLT4gdFxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuXG4gICAgaW5jbHVkZSAoU2V4cGFibGUuU3RhYmxlLk9mX3N0cmluZ2FibGUuVjEgKFN0cmluZ2FibGUpIDogU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuICAgIGluY2x1ZGUgKEZsb2F0IDogQmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgKCogTWludCBhIHVuaXF1ZSBbYmluX3NoYXBlX3RdIHRoYXQncyBkaXN0aW5jdCBmcm9tIHRoZSBoaWRkZW4gdW5kZXJseWluZ1xuICAgICAgIHJlcHJlc2VudGF0aW9uIG9mIGZsb2F0LiAqKVxuICAgIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5iYXNldHlwZVxuICAgICAgICAoQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCIxZDFlNzZiYy1lYTRiLTExZWItYTE2YS1hYTViMjhkMWY0ZDdcIilcbiAgICAgICAgWyBiaW5fc2hhcGVfdCBdXG4gICAgOztcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBWMy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICBsZXQgY29tcGFyYXRvciA9IFYzLmNvbXBhcmF0b3JcbiAgICAgIGVuZClcblxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVjMuY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBCaW5fc2hhcGVfc2FtZV9hc19mbG9hdCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBWMlxuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPSBGbG9hdC5iaW5fc2hhcGVfdFxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2YsIGJpbl9pb11cbiAgICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFYzLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBWMy5jb21wYXJhdG9yXG5cbiAgICAgICAgICAoKiBQcmV2aW91cyB2ZXJzaW9ucyByZW5kZXJlZCBjb21wYXJhYmxlLWJhc2VkIGNvbnRhaW5lcnMgdXNpbmcgZmxvYXRcbiAgICAgICAgICAgICBzZXJpYWxpemF0aW9uIHJhdGhlciB0aGFuIHBlcmNlbnQgc2VyaWFsaXphdGlvbiwgc28gd2hlbiByZWFkaW5nXG4gICAgICAgICAgICAgY29tcGFyYWJsZS1iYXNlZCBjb250YWluZXJzIGluIHdlIGFjY2VwdCBlaXRoZXIgc2VyaWFsaXphdGlvbi5cbiAgICAgICAgICAqKVxuICAgICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgICBtYXRjaCBGbG9hdC50X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICAgICAgICB8IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgICAgICAgOztcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBCaW5fc2hhcGVfc2FtZV9hc19mbG9hdFxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgbW9kdWxlIE9wdGlvbl9yZXByID0gc3RydWN0XG4gICAgICBsZXQgbm9uZSA9IEZsb2F0Lm5hblxuICAgICAgbGV0IGlzX25vbmUgdCA9IEZsb2F0LmlzX25hbiB0XG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgc29tZV9pc19yZXByZXNlbnRhYmxlID0gaXNfc29tZVxuICAgICAgbGV0IHNvbWUgPSBGbi5pZFxuICAgICAgbGV0IHVuY2hlY2tlZF92YWx1ZSA9IEZuLmlkXG4gICAgICBsZXQgdG9fb3B0aW9uIHQgPSBpZiBpc19zb21lIHQgdGhlbiBTb21lICh1bmNoZWNrZWRfdmFsdWUgdCkgZWxzZSBOb25lXG4gICAgICBsZXQgYXBwbHlfd2l0aF9ub25lX2FzX25hbiA9ICggKi4gKVxuICAgICAgbGV0IG9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSA9IEZuLmlkXG4gICAgICBsZXQgdG9fbXVsdF93aXRoX25vbmVfYXNfbmFuID0gRm4uaWRcblxuICAgICAgbGV0IG9mX29wdGlvbiBvcHQgPVxuICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBzb21lIHZcbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgICAgIGlmIGlzX3NvbWUgdFxuICAgICAgICB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0XG4gICAgICAgIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIlBlcmNlbnQuT3B0aW9uLnZhbHVlX2V4biBub25lXCJdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IEJvb2wuc2VsZWN0IChpc19ub25lIHQpIGRlZmF1bHQgKHVuY2hlY2tlZF92YWx1ZSB0KVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBWMy50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLmJhc2V0eXBlXG4gICAgICAgICAgKEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiZTliNTIwMjgtNmI0NS0xMWVkLWE2YjYtYWFjMmE1NjNmMTBhXCIpXG4gICAgICAgICAgWyBiaW5fc2hhcGVfdCBdXG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlIE9wdGlvbl9yZXByXG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX29wdGlvbiB0IHw+IE9wdGlvbi5zZXhwX29mX3QgVjMuc2V4cF9vZl90XG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSAoT3B0aW9uLnRfb2Zfc2V4cCBWMy50X29mX3NleHApIHNleHAgfD4gb2Zfb3B0aW9uXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgWyVzZXhwX2dyYW1tYXI6IFYzLnQgT3B0aW9uLnRdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFYyLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuYmFzZXR5cGVcbiAgICAgICAgICAoQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJmN2FhMDRlOC1kYTNlLTExZWMtYjU0Ni1hYTczMjg0MzNiNzBcIilcbiAgICAgICAgICBbIGJpbl9zaGFwZV90IF1cbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgT3B0aW9uX3JlcHJcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fb3B0aW9uIHQgfD4gT3B0aW9uLnNleHBfb2ZfdCBWMi5zZXhwX29mX3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9IChPcHRpb24udF9vZl9zZXhwIFYyLnRfb2Zfc2V4cCkgc2V4cCB8PiBvZl9vcHRpb25cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBbJXNleHBfZ3JhbW1hcjogVjIudCBPcHRpb24udF1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgVjJcblxuICAgICAgICBsZXQgYmluX3NoYXBlX3QgPSBGbG9hdC5iaW5fc2hhcGVfdFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgQmluX3NoYXBlX3NhbWVfYXNfZmxvYXRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjEuQmluX3NoYXBlX3NhbWVfYXNfZmxvYXRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gU3RhYmxlLk9wdGlvblxuICBpbmNsdWRlIFN0YWJsZS5WMS5CaW5fc2hhcGVfc2FtZV9hc19mbG9hdFxuXG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bmNoZWNrZWRfdmFsdWVcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubGV0IGlzX3plcm8gdCA9IHQgPSAwLlxubGV0IGFwcGx5IHQgZiA9IHQgKi4gZlxubGV0IHNjYWxlIHQgZiA9IHQgKi4gZlxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBpbmNsdWRlIEZsb2F0XG5cbiAgbGV0IG9uZV9odW5kcmVkX3BlcmNlbnQgPSAxLlxuICBsZXQgKCAvLyApIHggeSA9IG9mX211bHQgeCAvLiBvZl9tdWx0IHlcbmVuZCA6XG5zaWdcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCBvbmVfaHVuZHJlZF9wZXJjZW50IDogdFxuICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvLyApIDogdCAtPiB0IC0+IGZsb2F0XG4gIHZhbCBhYnMgOiB0IC0+IHRcbiAgdmFsIG5lZyA6IHQgLT4gdFxuICB2YWwgaXNfbmFuIDogdCAtPiBib29sXG4gIHZhbCBpc19pbmYgOiB0IC0+IGJvb2xcbiAgdmFsIHNpZ25fZXhuIDogdCAtPiBTaWduLnRcblxuICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuZW5kKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFN0YWJsZS5WMS5CaW5fc2hhcGVfc2FtZV9hc19mbG9hdFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubGV0IHZhbGlkYXRlID0gRmxvYXQudmFsaWRhdGVfb3JkaW5hcnlcbmxldCBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgcyA9IFN0cmluZ2FibGUub2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIHNcbmxldCB0X29mX3NleHBfYWxsb3dfbmFuX2FuZF9pbmYgc2V4cCA9IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiAoU2V4cC50b19zdHJpbmcgc2V4cClcblxubW9kdWxlIEFsd2F5c19wZXJjZW50YWdlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGZvcm1hdCB4IGZvcm1hdCA9IEZvcm1hdC5mb3JtYXRfZmxvYXQgZm9ybWF0ICh4ICouIDEwMC4pIF4gXCIlXCJcbiAgbGV0IHRvX3N0cmluZyB4ID0gc3ByaW50ZiBcIiUuNkclJVwiICh4ICogMTAwLilcbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbmVuZFxuXG5sZXQgdG9fc3RyaW5nX3JvdW5kX3RyaXBwYWJsZSA9IFN0YWJsZS5WMy50b19zdHJpbmdcblxubW9kdWxlIEFsbW9zdF9yb3VuZF90cmlwcGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gIGxldCB0b19zdHJpbmcgeCA9IFN0YWJsZS5WMy5TdHJpbmdhYmxlLih0b19zdHJpbmcnIChmb3JtYXRfZmxvYXQgXCIlLjE0R1wiKSB4KVxuICBsZXQgb2Zfc3RyaW5nIHggPSBTdGFibGUuVjMuU3RyaW5nYWJsZS5vZl9zdHJpbmcgeFxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuICBsZXQgdF9vZl9zZXhwID0gU3RhYmxlLlYzLnRfb2Zfc2V4cFxuXG4gIG1vZHVsZSBBbHdheXNfcGVyY2VudGFnZSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cblxuICAgIGxldCB0b19zdHJpbmcgeCA9XG4gICAgICBsZXQgb3BlbiBTdGFibGUuVjMgaW5cbiAgICAgIGxldCBzID0gU3RyaW5nYWJsZS5mb3JtYXRfZmxvYXQgXCIlLjE0R1wiIHggaW5cbiAgICAgIHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+Ynk6MiBeIFwiJVwiXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbmxldCByYW5kb21pemUgc3BhbiByYW5kb21fc3RhdGUgfnBlcmNlbnQgfnNjYWxlID1cbiAgbGV0IG11bHQgPSBQZXJjZW50LnRvX211bHQgcGVyY2VudCBpblxuICBpZiBGbG9hdC4oIDwgKSBtdWx0IDAuIHx8IEZsb2F0LiggPiApIG11bHQgMS5cbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIlNwYW4ucmFuZG9taXplOiBwZXJjZW50IGlzIG91dCBvZiByYW5nZSBbMHgsIDF4XVwiIChwZXJjZW50IDogUGVyY2VudC50KV07XG4gIGxldCBmYWN0b3IgPVxuICAgIFJhbmRvbS5TdGF0ZS5mbG9hdF9yYW5nZSByYW5kb21fc3RhdGUgKDEuIC0uIG11bHQpIChGbG9hdC5vbmVfdWxwIGBVcCAoMS4gKy4gbXVsdCkpXG4gIGluXG4gIHNjYWxlIHNwYW4gZmFjdG9yXG47O1xuXG5sZXQgZm9ybWF0X2RlY2ltYWwgbiB0ZW50aHMgdW5pdHMgPVxuICBhc3NlcnQgKHRlbnRocyA+PSAwICYmIHRlbnRocyA8IDEwKTtcbiAgaWYgbiA8IDEwICYmIHRlbnRocyA8PiAwXG4gIHRoZW4gc3ByaW50ZiBcIiVkLiVkJXNcIiBuIHRlbnRocyB1bml0c1xuICBlbHNlIHNwcmludGYgXCIlZCVzXCIgbiB1bml0c1xuOztcblxubGV0IHNob3J0X3N0cmluZyB+c2lnbiB+aHIgfm1pbiB+c2VjIH5tcyB+dXMgfm5zID1cbiAgbGV0IHMgPVxuICAgIGlmIGhyID49IDI0XG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCAoaHIgLyAyNCkgKEludC5vZl9mbG9hdCAoRmxvYXQub2ZfaW50IChociAlIDI0KSAvLiAyLjQpKSBcImRcIlxuICAgIGVsc2UgaWYgaHIgPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCBociAobWluIC8gNikgXCJoXCJcbiAgICBlbHNlIGlmIG1pbiA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIG1pbiAoc2VjIC8gNikgXCJtXCJcbiAgICBlbHNlIGlmIHNlYyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIHNlYyAobXMgLyAxMDApIFwic1wiXG4gICAgZWxzZSBpZiBtcyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIG1zICh1cyAvIDEwMCkgXCJtc1wiXG4gICAgZWxzZSBpZiB1cyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIHVzIChucyAvIDEwMCkgXCJ1c1wiXG4gICAgZWxzZSBzcHJpbnRmIFwiJWluc1wiIG5zXG4gIGluXG4gIG1hdGNoIChzaWduIDogU2lnbi50KSB3aXRoXG4gIHwgTmVnIC0+IFwiLVwiIF4gc1xuICB8IFplcm8gfCBQb3MgLT4gc1xuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgUGFydHMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc2lnbiA6IFNpZ24udFxuICAgICAgICA7IGhyIDogaW50XG4gICAgICAgIDsgbWluIDogaW50XG4gICAgICAgIDsgc2VjIDogaW50XG4gICAgICAgIDsgbXMgOiBpbnRcbiAgICAgICAgOyB1cyA6IGludFxuICAgICAgICA7IG5zIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIExpa2VfYV9mbG9hdCA9IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBGbG9hdGFibGUgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCB6ZXJvIDogdFxuICAgICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IHRcbiAgICAgIHZhbCBhYnMgOiB0IC0+IHRcbiAgICAgIHZhbCBuZWcgOiB0IC0+IHRcbiAgICAgIHZhbCBzY2FsZSA6IHQgLT4gZmxvYXQgLT4gdFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IGZsb2F0IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgaW5jbHVkZSBMaWtlX2FfZmxvYXQgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgbW9kdWxlIENvbnN0YW50IDogc2lnXG4gICAgICAgIHZhbCBuYW5vc2Vjb25kc19wZXJfc2Vjb25kIDogZmxvYXRcbiAgICAgICAgdmFsIG1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kIDogZmxvYXRcbiAgICAgICAgdmFsIG1pbGxpc2Vjb25kc19wZXJfc2Vjb25kIDogZmxvYXRcbiAgICAgICAgdmFsIG5hbm9zZWNvbmQgOiB0XG4gICAgICAgIHZhbCBtaWNyb3NlY29uZCA6IHRcbiAgICAgICAgdmFsIG1pbGxpc2Vjb25kIDogdFxuICAgICAgICB2YWwgc2Vjb25kIDogdFxuICAgICAgICB2YWwgbWludXRlIDogdFxuICAgICAgICB2YWwgaG91ciA6IHRcbiAgICAgICAgdmFsIGRheSA6IHRcbiAgICAgIGVuZFxuXG4gICAgICB2YWwgdG9fcGFydHMgOiB0IC0+IFBhcnRzLnRcbiAgICAgIHZhbCBuZXh0IDogdCAtPiB0XG4gICAgICB2YWwgcHJldiA6IHQgLT4gdFxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgdHlwZSB1bmRlcmx5aW5nID0gZmxvYXQgW0BAZGVyaXZpbmcgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICB0eXBlIHQgPSB1bmRlcmx5aW5nIFtAQGRlcml2aW5nIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgbmV4dCB0ID0gRmxvYXQub25lX3VscCBgVXAgdFxuICAgICAgbGV0IHByZXYgdCA9IEZsb2F0Lm9uZV91bHAgYERvd24gdFxuXG4gICAgICAoKiBJRiBUSElTIFJFUFJFU0VOVEFUSU9OIEVWRVIgQ0hBTkdFUywgRU5TVVJFIFRIQVQgRUlUSEVSXG4gICAgICAgICAoMSkgYWxsIHZhbHVlcyBzZXJpYWxpemUgdGhlIHNhbWUgd2F5IGluIGJvdGggcmVwcmVzZW50YXRpb25zLCBvclxuICAgICAgICAgKDIpIHlvdSBhZGQgYSBuZXcgVGltZS5TcGFuIHZlcnNpb24gdG8gc3RhYmxlLm1sICopXG4gICAgICBpbmNsdWRlIChcbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEZsb2F0XG5cbiAgICAgICAgbGV0IHNpZ24gPSBzaWduX2V4blxuICAgICAgZW5kIDpcbiAgICAgICAgTGlrZV9hX2Zsb2F0IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICAgICgqIGR1ZSB0byBwcmVjaXNpb24gbGltaXRhdGlvbnMgaW4gZmxvYXQgd2UgY2FuJ3QgZXhwZWN0IGJldHRlciB0aGFuIG1pY3Jvc2Vjb25kXG4gICAgICAgICBwcmVjaXNpb24gKilcbiAgICAgIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTZcbiAgICAgICAgZW5kKVxuXG4gICAgICAoKiB0aGlzIHByZXZlbnRzIGFueSB3b3JyeSBhYm91dCBoYXZpbmcgdGhlc2UgdmVyeSBjb21tb24gbmFtZXMgcmVkZWZpbmVkIGJlbG93IGFuZFxuICAgICAgICAgbWFrZXMgdGhlaXIgdXNhZ2Ugd2l0aGluIHRoaXMgbW9kdWxlIHNhZmVyLiAgQ29uc3RhbnQgaXMgaW5jbHVkZWQgYXQgdGhlIHZlcnlcbiAgICAgICAgIGJvdHRvbSB0byByZS1leHBvcnQgdGhlc2UgY29uc3RhbnRzIGluIGEgbW9yZSBjb252ZW5pZW50IHdheSAqKVxuICAgICAgbW9kdWxlIENvbnN0YW50ID0gc3RydWN0XG4gICAgICAgIGxldCBuYW5vc2Vjb25kc19wZXJfc2Vjb25kID0gMUU5XG4gICAgICAgIGxldCBtaWNyb3NlY29uZHNfcGVyX3NlY29uZCA9IDFFNlxuICAgICAgICBsZXQgbWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQgPSAxRTNcblxuICAgICAgICAoKiBzcGFucyBhcmUgc3RvcmVkIGFzIGEgZmxvYXQgaW4gc2Vjb25kcyAqKVxuICAgICAgICBsZXQgbmFub3NlY29uZCA9IG9mX2Zsb2F0ICgxLiAvLiBuYW5vc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgICAgICBsZXQgbWljcm9zZWNvbmQgPSBvZl9mbG9hdCAoMS4gLy4gbWljcm9zZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgICAgIGxldCBtaWxsaXNlY29uZCA9IG9mX2Zsb2F0ICgxLiAvLiBtaWxsaXNlY29uZHNfcGVyX3NlY29uZClcbiAgICAgICAgbGV0IHNlY29uZCA9IG9mX2Zsb2F0IDEuXG4gICAgICAgIGxldCBtaW51dGUgPSBvZl9mbG9hdCA2MC5cbiAgICAgICAgbGV0IGhvdXIgPSBvZl9mbG9hdCAoNjAuICouIDYwLilcbiAgICAgICAgbGV0IGRheSA9IG9mX2Zsb2F0ICgyNC4gKi4gNjAuICouIDYwLilcbiAgICAgIGVuZFxuXG5cbiAgICAgIGxldCB0b19wYXJ0cyB0IDogUGFydHMudCA9XG4gICAgICAgIGxldCBzaWduID0gRmxvYXQuc2lnbl9leG4gdCBpblxuICAgICAgICBsZXQgdCA9IGFicyB0IGluXG4gICAgICAgIGxldCBpbnRlZ3JhbCA9IEZsb2F0LnJvdW5kX2Rvd24gdCBpblxuICAgICAgICBsZXQgZnJhY3Rpb25hbCA9IHQgLS4gaW50ZWdyYWwgaW5cbiAgICAgICAgbGV0IHNlY29uZHMgPSBGbG9hdC5pcm91bmRfZG93bl9leG4gaW50ZWdyYWwgaW5cbiAgICAgICAgbGV0IG5hbm9zZWNvbmRzID0gRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuIChmcmFjdGlvbmFsICouIDFFOSkgaW5cbiAgICAgICAgbGV0IHNlY29uZHMsIG5hbm9zZWNvbmRzID1cbiAgICAgICAgICBpZiBJbnQuZXF1YWwgbmFub3NlY29uZHMgMV8wMDBfMDAwXzAwMFxuICAgICAgICAgIHRoZW4gSW50LnN1Y2Mgc2Vjb25kcywgMFxuICAgICAgICAgIGVsc2Ugc2Vjb25kcywgbmFub3NlY29uZHNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHNlYyA9IHNlY29uZHMgbW9kIDYwIGluXG4gICAgICAgIGxldCBtaW51dGVzID0gc2Vjb25kcyAvIDYwIGluXG4gICAgICAgIGxldCBtaW4gPSBtaW51dGVzIG1vZCA2MCBpblxuICAgICAgICBsZXQgaHIgPSBtaW51dGVzIC8gNjAgaW5cbiAgICAgICAgbGV0IG5zID0gbmFub3NlY29uZHMgbW9kIDEwMDAgaW5cbiAgICAgICAgbGV0IG1pY3Jvc2Vjb25kcyA9IG5hbm9zZWNvbmRzIC8gMTAwMCBpblxuICAgICAgICBsZXQgdXMgPSBtaWNyb3NlY29uZHMgbW9kIDEwMDAgaW5cbiAgICAgICAgbGV0IG1pbGxpc2Vjb25kcyA9IG1pY3Jvc2Vjb25kcyAvIDEwMDAgaW5cbiAgICAgICAgbGV0IG1zID0gbWlsbGlzZWNvbmRzIGluXG4gICAgICAgIHsgc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgKCAvICkgdCBmID0gVC5vZl9mbG9hdCAoKHQgOiBULnQgOj4gZmxvYXQpIC8uIGYpXG4gICAgbGV0ICggLy8gKSAoZiA6IFQudCkgKHQgOiBULnQpID0gKGYgOj4gZmxvYXQpIC8uICh0IDo+IGZsb2F0KVxuXG4gICAgKCogTXVsdGlwbHlpbmcgYnkgMUUzIGlzIG1vcmUgYWNjdXJhdGUgdGhhbiBkaXZpc2lvbiBieSAxRS0zICopXG4gICAgbGV0IHRvX25zICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KSAqLiBULkNvbnN0YW50Lm5hbm9zZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fdXMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpICouIFQuQ29uc3RhbnQubWljcm9zZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fbXMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpICouIFQuQ29uc3RhbnQubWlsbGlzZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fc2VjICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KVxuICAgIGxldCB0b19taW4geCA9IHggLy8gVC5Db25zdGFudC5taW51dGVcbiAgICBsZXQgdG9faHIgeCA9IHggLy8gVC5Db25zdGFudC5ob3VyXG4gICAgbGV0IHRvX2RheSB4ID0geCAvLyBULkNvbnN0YW50LmRheVxuICAgIGxldCB0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHggPSBGbG9hdC5pbnQ2M19yb3VuZF9kb3duX2V4biAodG9fc2VjIHgpXG4gICAgbGV0ICggKiogKSBmICh0IDogVC50KSA9IFQub2ZfZmxvYXQgKGYgKi4gKHQgOj4gZmxvYXQpKVxuXG4gICAgKCogRGl2aXNpb24gYnkgMUUzIGlzIG1vcmUgYWNjdXJhdGUgdGhhbiBtdWx0aXBseWluZyBieSAxRS0zICopXG4gICAgbGV0IG9mX25zIHggPSBULm9mX2Zsb2F0ICh4IC8uIFQuQ29uc3RhbnQubmFub3NlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2ZfdXMgeCA9IFQub2ZfZmxvYXQgKHggLy4gVC5Db25zdGFudC5taWNyb3NlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2ZfbXMgeCA9IFQub2ZfZmxvYXQgKHggLy4gVC5Db25zdGFudC5taWxsaXNlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2Zfc2VjIHggPSBULm9mX2Zsb2F0IHhcbiAgICBsZXQgb2ZfaW50MzJfc2Vjb25kcyBzZWMgPSBvZl9zZWMgKEludDMyLnRvX2Zsb2F0IHNlYylcblxuICAgICgqIE5vdGUgdGhhdCBbSW50NjMudG9fZmxvYXRdIGNhbiBsb3NlIHByZWNpc2lvbiwgYnV0IG9ubHkgb24gaW5wdXRzIGxhcmdlIGVub3VnaCB0aGF0XG4gICAgICAgW29mX3NlY10gaW4gZWl0aGVyIHRoZSBUaW1lX25zIG9yIFRpbWVfZmxvYXQgY2FzZSB3b3VsZCBsb3NlIHByZWNpc2lvbiAob3IganVzdCBiZVxuICAgICAgIHBsYWluIG91dCBvZiBib3VuZHMpIGFueXdheS4gKilcbiAgICBsZXQgb2ZfaW50NjNfc2Vjb25kcyBzZWMgPSBvZl9zZWMgKEludDYzLnRvX2Zsb2F0IHNlYylcbiAgICBsZXQgb2ZfbWluIHggPSB4ICoqIFQuQ29uc3RhbnQubWludXRlXG4gICAgbGV0IG9mX2hyIHggPSB4ICoqIFQuQ29uc3RhbnQuaG91clxuICAgIGxldCBvZl9kYXkgeCA9IHggKiogVC5Db25zdGFudC5kYXlcbiAgICBsZXQgb2ZfaW50X25zIHggPSBvZl9ucyAoRmxvYXQub2ZfaW50IHgpXG4gICAgbGV0IG9mX2ludF91cyB4ID0gb2ZfdXMgKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnRfbXMgeCA9IG9mX21zIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X3NlYyB4ID0gb2Zfc2VjIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X21pbiB4ID0gb2ZfbWluIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X2hyIHggPSBvZl9ociAoRmxvYXQub2ZfaW50IHgpXG4gICAgbGV0IG9mX2ludF9kYXkgeCA9IG9mX2RheSAoRmxvYXQub2ZfaW50IHgpXG5cbiAgICBsZXQgZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSB0IHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiB0b19ucyB0XG4gICAgICB8IE1pY3Jvc2Vjb25kIC0+IHRvX3VzIHRcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gdG9fbXMgdFxuICAgICAgfCBTZWNvbmQgLT4gdG9fc2VjIHRcbiAgICAgIHwgTWludXRlIC0+IHRvX21pbiB0XG4gICAgICB8IEhvdXIgLT4gdG9faHIgdFxuICAgICAgfCBEYXkgLT4gdG9fZGF5IHRcbiAgICA7O1xuXG4gICAgbGV0IHNjYWxlX2J5X3VuaXRfb2ZfdGltZSBmbG9hdCB1bml0X29mX3RpbWUgPVxuICAgICAgbWF0Y2ggKHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gICAgICB8IE5hbm9zZWNvbmQgLT4gb2ZfbnMgZmxvYXRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gb2ZfdXMgZmxvYXRcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gb2ZfbXMgZmxvYXRcbiAgICAgIHwgU2Vjb25kIC0+IG9mX3NlYyBmbG9hdFxuICAgICAgfCBNaW51dGUgLT4gb2ZfbWluIGZsb2F0XG4gICAgICB8IEhvdXIgLT4gb2ZfaHIgZmxvYXRcbiAgICAgIHwgRGF5IC0+IG9mX2RheSBmbG9hdFxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlXG4gICAgICAgICAgPyhzaWduID0gU2lnbi5Qb3MpXG4gICAgICAgICAgPyhkYXkgPSAwKVxuICAgICAgICAgID8oaHIgPSAwKVxuICAgICAgICAgID8obWluID0gMClcbiAgICAgICAgICA/KHNlYyA9IDApXG4gICAgICAgICAgPyhtcyA9IDApXG4gICAgICAgICAgPyh1cyA9IDApXG4gICAgICAgICAgPyhucyA9IDApXG4gICAgICAgICAgKClcbiAgICAgID1cbiAgICAgIGxldCAoICsgKSA9IFQuKCArICkgaW5cbiAgICAgIGxldCB0ID1cbiAgICAgICAgb2ZfZGF5IChGbG9hdC5vZl9pbnQgZGF5KVxuICAgICAgICArIG9mX2hyIChGbG9hdC5vZl9pbnQgaHIpXG4gICAgICAgICsgb2ZfbWluIChGbG9hdC5vZl9pbnQgbWluKVxuICAgICAgICArIG9mX3NlYyAoRmxvYXQub2ZfaW50IHNlYylcbiAgICAgICAgKyBvZl9tcyAoRmxvYXQub2ZfaW50IG1zKVxuICAgICAgICArIG9mX3VzIChGbG9hdC5vZl9pbnQgdXMpXG4gICAgICAgICsgb2ZfbnMgKEZsb2F0Lm9mX2ludCBucylcbiAgICAgIGluXG4gICAgICBtYXRjaCBzaWduIHdpdGhcbiAgICAgIHwgTmVnIC0+IFQuKCAtICkgVC56ZXJvIHRcbiAgICAgIHwgUG9zIHwgWmVybyAtPiB0XG4gICAgOztcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29uc3RhbnRcblxuICAgIGxldCByYW5kb21pemUgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0IH5wZXJjZW50ID1cbiAgICAgIFNwYW5faGVscGVycy5yYW5kb21pemUgdCBzdGF0ZSB+cGVyY2VudCB+c2NhbGVcbiAgICA7O1xuXG4gICAgbGV0IHRvX3Nob3J0X3N0cmluZyB0ID1cbiAgICAgIGxldCAoeyBzaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfSA6IFBhcnRzLnQpID0gdG9fcGFydHMgdCBpblxuICAgICAgU3Bhbl9oZWxwZXJzLnNob3J0X3N0cmluZyB+c2lnbiB+aHIgfm1pbiB+c2VjIH5tcyB+dXMgfm5zXG4gICAgOztcblxuICAgICgqIFdBUk5JTkc6IGlmIHlvdSBhcmUgZ29pbmcgdG8gY2hhbmdlIHRoaXMgZnVuY3Rpb24gaW4gYW55IG1hdGVyaWFsIHdheSwgbWFrZSBzdXJlXG4gICAgICAgeW91IHVwZGF0ZSBTdGFibGUgYXBwcm9wcmlhdGVseS4gKilcbiAgICBsZXQgb2Zfc3RyaW5nX3YxX3YyIChzIDogc3RyaW5nKSB+aXNfdjIgPVxuICAgICAgdHJ5XG4gICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICB8IFwiXCIgLT4gZmFpbHdpdGggXCJlbXB0eSBzdHJpbmdcIlxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBsZXQgZmxvYXQgbiA9XG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcuZHJvcF9zdWZmaXggcyBuIHdpdGhcbiAgICAgICAgICAgIHwgXCJcIiAtPiBmYWlsd2l0aCBcIm5vIG51bWJlciBnaXZlblwiXG4gICAgICAgICAgICB8IHMgLT5cbiAgICAgICAgICAgICAgbGV0IHYgPSBGbG9hdC5vZl9zdHJpbmcgcyBpblxuICAgICAgICAgICAgICBWYWxpZGF0ZS5tYXliZV9yYWlzZSAoRmxvYXQudmFsaWRhdGVfb3JkaW5hcnkgdik7XG4gICAgICAgICAgICAgIHZcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAobWF0Y2ggcy5bSW50LiggLSApIGxlbiAxXSB3aXRoXG4gICAgICAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgICAgaWYgSW50LiggPj0gKSBsZW4gMiAmJiBDaGFyLiggPSApIHMuW0ludC4oIC0gKSBsZW4gMl0gJ20nXG4gICAgICAgICAgICAgdGhlbiBvZl9tcyAoZmxvYXQgMilcbiAgICAgICAgICAgICBlbHNlIGlmIGlzX3YyICYmIEludC4oID49ICkgbGVuIDIgJiYgQ2hhci4oID0gKSBzLltJbnQuKCAtICkgbGVuIDJdICd1J1xuICAgICAgICAgICAgIHRoZW4gb2ZfdXMgKGZsb2F0IDIpXG4gICAgICAgICAgICAgZWxzZSBpZiBpc192MiAmJiBJbnQuKCA+PSApIGxlbiAyICYmIENoYXIuKCA9ICkgcy5bSW50LiggLSApIGxlbiAyXSAnbidcbiAgICAgICAgICAgICB0aGVuIG9mX25zIChmbG9hdCAyKVxuICAgICAgICAgICAgIGVsc2UgVC5vZl9mbG9hdCAoZmxvYXQgMSlcbiAgICAgICAgICAgfCAnbScgLT4gb2ZfbWluIChmbG9hdCAxKVxuICAgICAgICAgICB8ICdoJyAtPiBvZl9ociAoZmxvYXQgMSlcbiAgICAgICAgICAgfCAnZCcgLT4gb2ZfZGF5IChmbG9hdCAxKVxuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBpZiBpc192MlxuICAgICAgICAgICAgIHRoZW4gZmFpbHdpdGggXCJUaW1lIHNwYW5zIG11c3QgZW5kIGluIG5zLCB1cywgbXMsIHMsIG0sIGgsIG9yIGQuXCJcbiAgICAgICAgICAgICBlbHNlIGZhaWx3aXRoIFwiVGltZSBzcGFucyBtdXN0IGVuZCBpbiBtcywgcywgbSwgaCwgb3IgZC5cIilcbiAgICAgIHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGludmFsaWRfYXJnZiBcIlNwYW4ub2Zfc3RyaW5nIGNvdWxkIG5vdCBwYXJzZSAnJXMnOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHAgPSBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgc2V4cFxuXG4gICAgZXhjZXB0aW9uIFRfb2Zfc2V4cCBvZiBTZXhwLnQgKiBleG4gW0BAZGVyaXZpbmcgc2V4cF1cbiAgICBleGNlcHRpb24gVF9vZl9zZXhwX2V4cGVjdGVkX2F0b21fYnV0X2dvdCBvZiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGxldCB0X29mX3NleHBfdjFfdjIgc2V4cCB+aXNfdjIgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSB4IC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nX3YxX3YyIHggfmlzX3YyIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIChUX29mX3NleHAgKHNleHAsIGV4bikpIHNleHApXG4gICAgICB8IFNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3JfZXhuIChUX29mX3NleHBfZXhwZWN0ZWRfYXRvbV9idXRfZ290IHNleHApIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHN0cmluZyB+aXNfdjIgc3VmZml4IGZsb2F0ID1cbiAgICAgIGlmIGlzX3YyXG4gICAgICAoKiBUaGlzIGlzIHRoZSBzYW1lIGZsb2F0LXRvLXN0cmluZyBjb252ZXJzaW9uIHVzZWQgaW4gW0Zsb2F0LnNleHBfb2ZfdF0uICBJdCdzIGxpa2VcbiAgICAgICAgIFtGbG9hdC50b19zdHJpbmddLCBidXQgbWF5IGxlYXZlIG9mZiB0cmFpbGluZyBwZXJpb2QuICopXG4gICAgICB0aGVuICFTZXhwbGliLkNvbnYuZGVmYXVsdF9zdHJpbmdfb2ZfZmxvYXQgZmxvYXQgXiBzdWZmaXhcbiAgICAgIGVsc2Ugc3ByaW50ZiBcIiVnJXNcIiBmbG9hdCBzdWZmaXhcbiAgICA7O1xuXG4gICAgKCogV0FSTklORzogaWYgeW91IGFyZSBnb2luZyB0byBjaGFuZ2UgdGhpcyBmdW5jdGlvbiBpbiBhbnkgbWF0ZXJpYWwgd2F5LCBtYWtlIHN1cmVcbiAgICAgICB5b3UgdXBkYXRlIFN0YWJsZSBhcHByb3ByaWF0ZWx5LiAqKVxuICAgICgqIEknZCBsaWtlIGl0IHRvIGJlIHRoZSBjYXNlIHRoYXQgeW91IGNvdWxkIG5ldmVyIGNvbnN0cnVjdCBhbiBpbmZpbml0ZSBzcGFuLCBidXQgSVxuICAgICAgIGNhbid0IHRoaW5rIG9mIGEgZ29vZCB3YXkgdG8gZW5mb3JjZSBpdC4gIFNvIHRoaXMgdG9fc3RyaW5nIGZ1bmN0aW9uIGNhbiBwcm9kdWNlXG4gICAgICAgc3RyaW5ncyB0aGF0IHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhleSBhcmUgZmVkIHRvIG9mX3N0cmluZyAqKVxuICAgIGxldCB0b19zdHJpbmdfdjFfdjIgKHQgOiBULnQpIH5pc192MiA9XG4gICAgICAoKiB0aGlzIGlzIGEgc2FkIGJyb2tlbiBhYnN0cmFjdGlvbi4uLiAqKVxuICAgICAgbGV0IG1vZHVsZSBDID0gRmxvYXQuQ2xhc3MgaW5cbiAgICAgIG1hdGNoIEZsb2F0LmNsYXNzaWZ5ICh0IDo+IGZsb2F0KSB3aXRoXG4gICAgICB8IEMuU3Vibm9ybWFsIHwgQy5aZXJvIC0+IFwiMHNcIlxuICAgICAgfCBDLkluZmluaXRlIC0+IGlmIFQuKCA+ICkgdCBULnplcm8gdGhlbiBcImluZlwiIGVsc2UgXCItaW5mXCJcbiAgICAgIHwgQy5OYW4gLT4gXCJuYW5cIlxuICAgICAgfCBDLk5vcm1hbCAtPlxuICAgICAgICBsZXQgKCA8ICkgPSBULiggPCApIGluXG4gICAgICAgIGxldCBhYnNfdCA9IFQub2ZfZmxvYXQgKEZsb2F0LmFicyAodCA6PiBmbG9hdCkpIGluXG4gICAgICAgIGlmIGlzX3YyICYmIGFic190IDwgVC5Db25zdGFudC5taWNyb3NlY29uZFxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJuc1wiICh0b19ucyB0KVxuICAgICAgICBlbHNlIGlmIGlzX3YyICYmIGFic190IDwgVC5Db25zdGFudC5taWxsaXNlY29uZFxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJ1c1wiICh0b191cyB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5zZWNvbmRcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwibXNcIiAodG9fbXMgdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQubWludXRlXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcInNcIiAodG9fc2VjIHQpXG4gICAgICAgIGVsc2UgaWYgYWJzX3QgPCBULkNvbnN0YW50LmhvdXJcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwibVwiICh0b19taW4gdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQuZGF5XG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcImhcIiAodG9faHIgdClcbiAgICAgICAgZWxzZSBzdHJpbmcgfmlzX3YyIFwiZFwiICh0b19kYXkgdClcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdF92MV92MiB0IH5pc192MiA9IFNleHAuQXRvbSAodG9fc3RyaW5nX3YxX3YyIHQgfmlzX3YyKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cF92MV92MiBzZXhwIH5pc192MjpmYWxzZVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF92MV92MiB0IH5pc192MjpmYWxzZVxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgaW5jbHVkZSBWMVxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwX3YxX3YyIHNleHAgfmlzX3YyOnRydWVcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3RfdjFfdjIgdCB+aXNfdjI6dHJ1ZVxuICBlbmRcblxuICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFYxXG5cbiAgICBsZXQgdG9fdW5pdF9vZl90aW1lIHQgOiBVbml0X29mX3RpbWUudCA9XG4gICAgICBsZXQgb3BlbiBUIGluXG4gICAgICBsZXQgb3BlbiBDb25zdGFudCBpblxuICAgICAgbGV0IGFic190ID0gVC5hYnMgdCBpblxuICAgICAgaWYgYWJzX3QgPj0gZGF5XG4gICAgICB0aGVuIERheVxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBob3VyXG4gICAgICB0aGVuIEhvdXJcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gbWludXRlXG4gICAgICB0aGVuIE1pbnV0ZVxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBzZWNvbmRcbiAgICAgIHRoZW4gU2Vjb25kXG4gICAgICBlbHNlIGlmIGFic190ID49IG1pbGxpc2Vjb25kXG4gICAgICB0aGVuIE1pbGxpc2Vjb25kXG4gICAgICBlbHNlIGlmIGFic190ID49IG1pY3Jvc2Vjb25kXG4gICAgICB0aGVuIE1pY3Jvc2Vjb25kXG4gICAgICBlbHNlIE5hbm9zZWNvbmRcbiAgICA7O1xuXG4gICAgbGV0IG9mX3VuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50IC0+IFQudCA9XG4gICAgICBsZXQgb3BlbiBULkNvbnN0YW50IGluXG4gICAgICBmdW5jdGlvblxuICAgICAgfCBOYW5vc2Vjb25kIC0+IG5hbm9zZWNvbmRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gbWljcm9zZWNvbmRcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbWlsbGlzZWNvbmRcbiAgICAgIHwgU2Vjb25kIC0+IHNlY29uZFxuICAgICAgfCBNaW51dGUgLT4gbWludXRlXG4gICAgICB8IEhvdXIgLT4gaG91clxuICAgICAgfCBEYXkgLT4gZGF5XG4gICAgOztcblxuICAgIGxldCBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiBcIm5zXCJcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gXCJ1c1wiXG4gICAgICB8IE1pbGxpc2Vjb25kIC0+IFwibXNcIlxuICAgICAgfCBTZWNvbmQgLT4gXCJzXCJcbiAgICAgIHwgTWludXRlIC0+IFwibVwiXG4gICAgICB8IEhvdXIgLT4gXCJoXCJcbiAgICAgIHwgRGF5IC0+IFwiZFwiXG4gICAgOztcblxuICAgIG1vZHVsZSBPZl9zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgIGxldCBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbiA9XG4gICAgICAgIGxldCBtZXNzYWdlID0gXCJUaW1lLlNwYW4ub2Zfc3RyaW5nOiBcIiBeIHJlYXNvbiBpblxuICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBtZXNzYWdlIHN0cmluZ11cbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgZmluZF91bml0X29mX3RpbWVfYnlfc3VmZml4IHN0cmluZyB+aW5kZXggdW5pdF9vZl90aW1lX2xpc3QgPVxuICAgICAgICBtYXRjaCB1bml0X29mX3RpbWVfbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJpbnZhbGlkIHNwYW4gcGFydCBzdWZmaXhcIlxuICAgICAgICB8IHVuaXRfb2ZfdGltZSA6OiByZXN0IC0+XG4gICAgICAgICAgbGV0IHN1ZmZpeCA9IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgaWYgU3RyaW5nLmlzX3N1YnN0cmluZ19hdCBzdHJpbmcgfnBvczppbmRleCB+c3Vic3RyaW5nOnN1ZmZpeFxuICAgICAgICAgIHRoZW4gdW5pdF9vZl90aW1lXG4gICAgICAgICAgZWxzZSBmaW5kX3VuaXRfb2ZfdGltZV9ieV9zdWZmaXggc3RyaW5nIH5pbmRleCByZXN0XG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2Vfc3VmZml4IHN0cmluZyB+aW5kZXggPVxuICAgICAgICAoKiBXZSByZWx5IG9uIHRoZSBmYWN0IHRoYXQgXCJtc1wiIGNvbWVzIGJlZm9yZSBcIm1cIiBpbiBbVW5pdF9vZl90aW1lLmFsbF0gdG8gZ2V0IGFcbiAgICAgICAgICAgY29ycmVjdCBtYXRjaCBvbiBtaWxsaXNlY29uZCB0aW1lc3RhbXBzLiBUaGlzIGFzc3VtcHRpb24gaXMgZGVtb25zdHJhdGVkIGluIHRoZVxuICAgICAgICAgICBleHBlY3QgdGVzdCBiZWxvdy4gKilcbiAgICAgICAgZmluZF91bml0X29mX3RpbWVfYnlfc3VmZml4IHN0cmluZyB+aW5kZXggVW5pdF9vZl90aW1lLmFsbFxuICAgICAgOztcblxuICAgICAgKCogV2UgdmFsaWRhdGUgbWFnbml0dWRlIHN0cmluZ3Mgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHRoZSB1bml0LW9mLXRpbWUgc3VmZml4XG4gICAgICAgICBiZWdpbnMsIGFuZCBzbyB0aGF0IG9ubHkgc2Vuc2libGUgc3RyaW5ncyBhcmUgYWxsb3dlZC4gV2UgZG8gbm90IHdhbnQgdG8gYmUgYXNcbiAgICAgICAgIHBlcm1pc3NpdmUgYXMgW0Zsb2F0Lm9mX3N0cmluZ107IGZvciBleGFtcGxlLCBoZXhhZGVjaW1hbCBzcGFuIG1hZ25pdHVkZXMgYXJlIG5vdFxuICAgICAgICAgYWxsb3dlZC4gQWZ0ZXIgdmFsaWRhdGlvbiwgd2Ugc3RpbGwgdXNlIFtGbG9hdC5vZl9zdHJpbmddIHRvIHByb2R1Y2UgdGhlIGFjdHVhbFxuICAgICAgICAgdmFsdWUuICopXG4gICAgICBtb2R1bGUgRmxvYXRfcGFyc2VyID0gc3RydWN0XG4gICAgICAgICgqIFtJbl9kZWNpbWFsX2hhdmVfZGlnaXRdIGluY2x1ZGVzIGhhdmluZyBhIGRpZ2l0IGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludC4gKilcbiAgICAgICAgdHlwZSBzdGF0ZSA9XG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdFxuICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnblxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuXG4gICAgICAgIHR5cGUgdG9rZW4gPVxuICAgICAgICAgIHwgRGlnaXRcbiAgICAgICAgICB8IFBvaW50XG4gICAgICAgICAgfCBVbmRlclxuICAgICAgICAgIHwgU2lnblxuICAgICAgICAgIHwgRXhwdFxuXG4gICAgICAgIGxldCBzdGF0ZV9pc19maW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0IC0+IHRydWVcbiAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQgLT4gZmFsc2VcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9rZW5fb2ZfY2hhciA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCAnMCcgLi4gJzknIC0+IFNvbWUgRGlnaXRcbiAgICAgICAgICB8ICcuJyAtPiBTb21lIFBvaW50XG4gICAgICAgICAgfCAnXycgLT4gU29tZSBVbmRlclxuICAgICAgICAgIHwgJy0nIHwgJysnIC0+IFNvbWUgU2lnblxuICAgICAgICAgIHwgJ0UnIHwgJ2UnIC0+IFNvbWUgRXhwdFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGludmFsaWRfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJpbnZhbGlkIHNwYW4gcGFydCBtYWduaXR1ZGVcIlxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWMgZmluZF9pbmRleF9hZnRlcl9mbG9hdF9pbl9zdGF0ZSBzdHJpbmcgfmluZGV4IH5sZW4gfnN0YXRlID1cbiAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgIGlmIGluZGV4ID0gbGVuXG4gICAgICAgICAgdGhlbiBpZiBzdGF0ZV9pc19maW5hbCBzdGF0ZSB0aGVuIGluZGV4IGVsc2UgaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCB0b2tlbl9vZl9jaGFyIHN0cmluZy5baW5kZXhdIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBpZiBzdGF0ZV9pc19maW5hbCBzdGF0ZSB0aGVuIGluZGV4IGVsc2UgaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICB8IFNvbWUgdG9rZW4gLT5cbiAgICAgICAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICAgICAgICBtYXRjaCBzdGF0ZSwgdG9rZW4gd2l0aFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBEaWdpdCAtPiBJbl9pbnRlZ2VyX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgUG9pbnQgLT4gSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIFNpZ25cbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgRXhwdCAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgRGlnaXQgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIFVuZGVyIC0+XG4gICAgICAgICAgICAgICAgICBJbl9pbnRlZ2VyX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgUG9pbnQgLT4gSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIEV4cHQgLT4gSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIERpZ2l0IC0+IEluX2RlY2ltYWxfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBQb2ludFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBFeHB0XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIERpZ2l0IHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBVbmRlciAtPlxuICAgICAgICAgICAgICAgICAgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIEV4cHQgLT4gSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIFBvaW50IHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBTaWduIC0+XG4gICAgICAgICAgICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgRGlnaXQgLT4gSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBTaWduIC0+IEluX2V4cG9uZW50X25lZWRfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgVW5kZXJcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgRXhwdCAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIERpZ2l0IC0+IEluX2V4cG9uZW50X2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgRXhwdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIERpZ2l0IHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgVW5kZXIgLT5cbiAgICAgICAgICAgICAgICAgIEluX2V4cG9uZW50X2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBFeHB0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBTaWduIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0X2luX3N0YXRlIHN0cmluZyB+aW5kZXg6KGluZGV4ICsgMSkgfmxlbiB+c3RhdGUpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXQgc3RyaW5nIH5pbmRleCB+bGVuID1cbiAgICAgICAgICBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0X2luX3N0YXRlIHN0cmluZyB+aW5kZXggfmxlbiB+c3RhdGU6SW5faW50ZWdlcl9uZWVkX2RpZ2l0XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbGV0IHJlYyBhY2N1bXVsYXRlX21hZ25pdHVkZSBzdHJpbmcgfm1hZ25pdHVkZSB+aW5kZXggfmxlbiA9XG4gICAgICAgIGlmIEludC5lcXVhbCBpbmRleCBsZW5cbiAgICAgICAgdGhlbiBtYWduaXR1ZGVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHN1ZmZpeF9pbmRleCA9IEZsb2F0X3BhcnNlci5maW5kX2luZGV4X2FmdGVyX2Zsb2F0IHN0cmluZyB+aW5kZXggfmxlbiBpblxuICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgPSBwYXJzZV9zdWZmaXggc3RyaW5nIH5pbmRleDpzdWZmaXhfaW5kZXggaW5cbiAgICAgICAgICBsZXQgdW50aWxfaW5kZXggPVxuICAgICAgICAgICAgSW50LiggKyApIHN1ZmZpeF9pbmRleCAoU3RyaW5nLmxlbmd0aCAoc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZsb2F0X3N0cmluZyA9XG4gICAgICAgICAgICBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOmluZGV4IH5sZW46KEludC4oIC0gKSBzdWZmaXhfaW5kZXggaW5kZXgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmxvYXQgPSBGbG9hdC5vZl9zdHJpbmcgZmxvYXRfc3RyaW5nIGluXG4gICAgICAgICAgbGV0IG1hZ25pdHVkZSA9IG1hZ25pdHVkZSArIHNjYWxlX2J5X3VuaXRfb2ZfdGltZSBmbG9hdCB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBhY2N1bXVsYXRlX21hZ25pdHVkZSBzdHJpbmcgfm1hZ25pdHVkZSB+aW5kZXg6dW50aWxfaW5kZXggfmxlbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9tYWduaXR1ZGUgc3RyaW5nIH5pbmRleCB+bGVuID1cbiAgICAgICAgYWNjdW11bGF0ZV9tYWduaXR1ZGUgc3RyaW5nIH5tYWduaXR1ZGU6VC56ZXJvIH5pbmRleCB+bGVuXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgIG1hdGNoIHN0cmluZyB3aXRoXG4gICAgICAgIHwgXCJOQU5zXCIgLT4gb2Zfc2VjIEZsb2F0Lm5hblxuICAgICAgICB8IFwiLUlORnNcIiAtPiBvZl9zZWMgRmxvYXQubmVnX2luZmluaXR5XG4gICAgICAgIHwgXCJJTkZzXCIgLT4gb2Zfc2VjIEZsb2F0LmluZmluaXR5XG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICAgICAgICAgIGlmIGxlbiA9IDAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImVtcHR5IGlucHV0XCI7XG4gICAgICAgICAgbGV0IG5lZ2F0aXZlLCBpbmRleCA9XG4gICAgICAgICAgICBtYXRjaCBzdHJpbmcuWzBdIHdpdGhcbiAgICAgICAgICAgIHwgJy0nIC0+IHRydWUsIDFcbiAgICAgICAgICAgIHwgJysnIC0+IGZhbHNlLCAxXG4gICAgICAgICAgICB8IF8gLT4gZmFsc2UsIDBcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGluZGV4ID49IGxlbiB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZW1wdHkgaW5wdXRcIjtcbiAgICAgICAgICBsZXQgbWFnbml0dWRlID0gcGFyc2VfbWFnbml0dWRlIHN0cmluZyB+aW5kZXggfmxlbiBpblxuICAgICAgICAgIGlmIG5lZ2F0aXZlIHRoZW4gVC5uZWcgbWFnbml0dWRlIGVsc2UgbWFnbml0dWRlXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IG9mX3N0cmluZyA9IE9mX3N0cmluZy5vZl9zdHJpbmdcblxuICAgIG1vZHVsZSBUb19zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgIGxldCBzdHJpbmdfb2ZfZmxvYXRfd2l0aG91dF90cmFpbGluZ19kZWNpbWFsIGZsb2F0ID1cbiAgICAgICAgbGV0IHN0cmluZyA9IEZsb2F0LnRvX3N0cmluZyBmbG9hdCBpblxuICAgICAgICBsZXQgc3VmZml4ID0gXCIuXCIgaW5cbiAgICAgICAgaWYgU3RyaW5nLmlzX3N1ZmZpeCBzdHJpbmcgfnN1ZmZpeFxuICAgICAgICB0aGVuIFN0cmluZy5jaG9wX3N1ZmZpeF9leG4gc3RyaW5nIH5zdWZmaXhcbiAgICAgICAgZWxzZSBzdHJpbmdcbiAgICAgIDs7XG5cbiAgICAgICgqIEFzIHdlIGJ1aWxkIHVwIGEgc3RyaW5nLCB3ZSBrZWVwIGEgcnVubmluZyBzdW0gb2YgdGhlIHZhbHVlIHRoYXQgd2lsbCBiZSByZWFkXG4gICAgICAgICBiYWNrIGluLCBzbyB0aGF0IHdlIGNhbiBjb21wdXRlIHRoZSByZW1haW5kZXIgdGhhdCBuZWVkcyB0byBiZSBnZW5lcmF0ZWQuICopXG4gICAgICBsZXQgc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgPVxuICAgICAgICBzdW1fdCArIHNjYWxlX2J5X3VuaXRfb2ZfdGltZSBtYWduaXR1ZGUgdW5pdF9vZl90aW1lXG4gICAgICA7O1xuXG4gICAgICAoKiBGb3Igc29tZSB1bml0cyAodmVyeSBsYXJnZSBudW1iZXJzIG9mIGRheXMsIG9yIHNlY29uZHMgYW5kIHNtYWxsZXIpIHdlIGp1c3RcbiAgICAgICAgIHJlbmRlciBhIGZsb2F0IGRpcmVjdGx5LCB3aXRoIGEgZml4IGZvciByb3VuZG9mZiBlcnJvci4gKilcbiAgICAgIGxldCB0b19mbG9hdF9zdHJpbmcgfmFic190IH51bml0X29mX3RpbWUgfmZpeHVwX3VuaXRfb2ZfdGltZSA9XG4gICAgICAgIGxldCBtYWduaXR1ZGUgPSBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIGFic190IHVuaXRfb2ZfdGltZSBpblxuICAgICAgICBsZXQgc3VtX3QgPSBzdW0gfnN1bV90Onplcm8gfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgIGlmIHN1bV90ID0gYWJzX3RcbiAgICAgICAgdGhlblxuICAgICAgICAgIHN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaW5nX2RlY2ltYWwgbWFnbml0dWRlXG4gICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbWFnbml0dWRlID1cbiAgICAgICAgICAgIGlmIHN1bV90IDwgYWJzX3RcbiAgICAgICAgICAgIHRoZW4gbWFnbml0dWRlXG4gICAgICAgICAgICBlbHNlIGRpdmlkZV9ieV91bml0X29mX3RpbWUgKHByZXYgYWJzX3QpIHVuaXRfb2ZfdGltZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHN1bV90ID0gc3VtIH5zdW1fdDp6ZXJvIH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICAgIGxldCByZW1fdCA9IGFic190IC0gc3VtX3QgaW5cbiAgICAgICAgICBsZXQgZml4dXBfbWFnbml0dWRlID0gZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSByZW1fdCBmaXh1cF91bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBzdHJpbmdfb2ZfZmxvYXRfd2l0aG91dF90cmFpbGluZ19kZWNpbWFsIG1hZ25pdHVkZVxuICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgICAoKiBbcmVtX3RdIGlzIGF0IFVMUCBzaXplIG9mIFthYnNfdF0sIGl0IG5lZWRzIGp1c3Qgb25lIGJpdCBvZiBwcmVjaXNpb24gKilcbiAgICAgICAgICBeIHNwcmludGYgXCIlLjFnXCIgZml4dXBfbWFnbml0dWRlXG4gICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIGZpeHVwX3VuaXRfb2ZfdGltZSlcbiAgICAgIDs7XG5cbiAgICAgICgqIEZvciBub24tZGVjaW1hbCB1bml0cyAobWludXRlcyBhbmQgZ3JlYXRlciksIHdlIHJlbmRlciBhbiBpbnRlZ2VyIG1hZ25pdHVkZSwgYW5kXG4gICAgICAgICByZXR1cm4gdGhhdCB3aXRoIHRoZSBydW5uaW5nIHN1bSBzbyB0aGUgcmVtYWluZGVyIGNhbiBiZSByZW5kZXJlZCBhdCBhIHNtYWxsZXJcbiAgICAgICAgIHVuaXQuICopXG4gICAgICBsZXQgdG9faW50X3N0cmluZ19hbmRfc3VtIHVuaXRfb2ZfdGltZSB+YWJzX3QgfnN1bV90ID1cbiAgICAgICAgbGV0IHVuaXRfc3BhbiA9IG9mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgbGV0IHJlbV90ID0gYWJzX3QgLSBzdW1fdCBpblxuICAgICAgICAoKiBXZSBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIG11bHRpcGxlIG9mIFt1bml0X29mX3RpbWVdIHRoYXQgbmVlZHMgdG8gYmVcbiAgICAgICAgICAgYWRkZWQgdG8gW3N1bV90XS4gRHVlIHRvIHJvdW5kaW5nLCB0aGlzIGNhbiBiZSBvZmYgYnkgb25lICh3ZSd2ZSBuZXZlciBzZWVuIGFcbiAgICAgICAgICAgY2FzZSBvZmYgYnkgdHdvIG9yIG1vcmUpLCBzbyB3ZSByZS1jb21wdXRlIHRoZSByZW1haW5kZXIgYW5kIGNvcnJlY3QgaWZcbiAgICAgICAgICAgbmVjZXNzYXJ5LiAqKVxuICAgICAgICBsZXQgbWFnbml0dWRlID0gRmxvYXQucm91bmRfZG93biAocmVtX3QgLy8gdW5pdF9zcGFuKSBpblxuICAgICAgICBsZXQgbmV3X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgbGV0IG5ld19yZW1fdCA9IGFic190IC0gbmV3X3N1bV90IGluXG4gICAgICAgIGxldCBtYWduaXR1ZGUgPVxuICAgICAgICAgIGlmIG5ld19yZW1fdCA9IHplcm9cbiAgICAgICAgICB0aGVuIG1hZ25pdHVkZVxuICAgICAgICAgIGVsc2UgaWYgbmV3X3JlbV90IDwgemVyb1xuICAgICAgICAgIHRoZW4gbWFnbml0dWRlIC0uIDEuXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbmV4dF9tYWduaXR1ZGUgPSBtYWduaXR1ZGUgKy4gMS4gaW5cbiAgICAgICAgICAgIGxldCBuZXh0X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGU6bmV4dF9tYWduaXR1ZGUgaW5cbiAgICAgICAgICAgIGxldCBuZXh0X3JlbV90ID0gYWJzX3QgLSBuZXh0X3N1bV90IGluXG4gICAgICAgICAgICBpZiBuZXh0X3JlbV90IDwgemVybyB0aGVuIG1hZ25pdHVkZSBlbHNlIG5leHRfbWFnbml0dWRlKVxuICAgICAgICBpblxuICAgICAgICBpZiBGbG9hdC4oIDw9ICkgbWFnbml0dWRlIDAuXG4gICAgICAgIHRoZW4gXCJcIiwgc3VtX3RcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IG5ld19zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgICAgbGV0IHN0cmluZyA9XG4gICAgICAgICAgICBJbnQ2My50b19zdHJpbmcgKEludDYzLm9mX2Zsb2F0IG1hZ25pdHVkZSlcbiAgICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgICBpblxuICAgICAgICAgIHN0cmluZywgbmV3X3N1bV90KVxuICAgICAgOztcblxuICAgICAgbGV0IGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIHQgPSBGbG9hdC5sb2cxMCAodG9fc2VjIHQpXG5cbiAgICAgICgqIFRoZSBmaW5hbCBzZWNvbmRzLW9yLXNtYWxsZXIgdW5pdCBuZWVkcyB0byBiZSBwcmludGVkIHdpdGggZW5vdWdoIGRpZ2l0cyB0b1xuICAgICAgICAgcm91bmQtdHJpcCB0aGUgd2hvbGUgc3BhbiAod2hpY2ggaXMgbWludXRlcyBvciBncmVhdGVyKTsgdGhpcyBjYW4gYmVcbiAgICAgICAgIHNpZ25pZmljYW50bHkgZmV3ZXIgZGlnaXRzIHRoYW4gd291bGQgYmUgbmVlZGVkIGZvciB0aGUgc2Vjb25kcy1vci1zbWFsbGVyXG4gICAgICAgICByZW1haW5kZXIgaXRzZWxmLiAqKVxuICAgICAgbGV0IHRvX2Zsb2F0X3N0cmluZ19hZnRlcl9pbnRfc3RyaW5ncyB+c3VtX3QgfmFic190ID1cbiAgICAgICAgaWYgc3VtX3QgPj0gYWJzX3RcbiAgICAgICAgdGhlbiBcIlwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZW1fdCA9IGFic190IC0gc3VtX3QgaW5cbiAgICAgICAgICBsZXQgdW5pdF9vZl90aW1lID0gdG9fdW5pdF9vZl90aW1lIHJlbV90IGluXG4gICAgICAgICAgbGV0IHVuaXRfc3BhbiA9IG9mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBsZXQgbWFnbml0dWRlID0gcmVtX3QgLy8gdW5pdF9zcGFuIGluXG4gICAgICAgICAgbGV0IG5ld19zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgICAgbGV0IG5ld19yZW1fdCA9IGFic190IC0gbmV3X3N1bV90IGluXG4gICAgICAgICAgaWYgYWJzIHJlbV90IDw9IGFicyBuZXdfcmVtX3RcbiAgICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmlyc3RfZGlnaXQgPVxuICAgICAgICAgICAgICBGbG9hdC5pcm91bmRfZG93bl9leG4gKGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIHJlbV90KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBoYWxmX3VscCA9IChhYnNfdCAtIHByZXYgYWJzX3QpIC8gMi4gaW5cbiAgICAgICAgICAgIGxldCBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmluYWxfZGlnaXQgPVxuICAgICAgICAgICAgICAoKiBUaGlzIHdvcmtzIG91dCB0byByb3VuZGluZyBkb3duLCBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgZXhhY3QgaW50ZWdlcnMsXG4gICAgICAgICAgICAgICAgIHdoaWNoIGFyZSBkZWNyZW1lbnRlZC4gVGhpcyBtYWtlcyBzdXJlIHdlIGFsd2F5cyBzdG9wIGF0IGEgZGlnaXQgd2l0aFxuICAgICAgICAgICAgICAgICBzdHJpY3RseSBtb3JlIHByZWNpc2lvbiB0aGFuIGhhbGYgdGhlIFVMUC4gKilcbiAgICAgICAgICAgICAgSW50LnByZWQgKEZsb2F0Lmlyb3VuZF91cF9leG4gKGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIGhhbGZfdWxwKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbnVtYmVyX29mX2RpZ2l0cyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIDEgKyBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmlyc3RfZGlnaXQgLSBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmluYWxfZGlnaXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgc3VmZml4ID0gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICAgIHNwcmludGYgXCIlLipnXCIgbnVtYmVyX29mX2RpZ2l0cyBtYWduaXR1ZGUgXiBzdWZmaXgpKVxuICAgICAgOztcblxuICAgICAgKCogVGhpcyBoZWxwZXIgYXZvaWRzIHVubmVjZXNzYXJ5IGFsbG9jYXRpb24sIGJlY2F1c2UgZm9yIG91ciB1c2UgYmVsb3csIGl0IGlzXG4gICAgICAgICBjb21tb24gdG8gaGF2ZSBlaXRoZXIgb3IgYm90aCBhcmd1bWVudHMgYmUgZW1wdHkuIEN1cnJlbnRseSAoMjAxOC0wMiksIHRoZVxuICAgICAgICAgYnVpbHQtaW4gW15dIGFsbG9jYXRlcyBldmVuIHdoZW4gYXBwZW5kaW5nIHRvIGFuIGVtcHR5IHN0cmluZy4gKilcbiAgICAgIGxldCAoIF4/ICkgeCB5ID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHggdGhlbiB5IGVsc2UgaWYgU3RyaW5nLmlzX2VtcHR5IHkgdGhlbiB4IGVsc2UgeCBeIHlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgIGxldCBmbG9hdCA9IHRvX2Zsb2F0IHQgaW5cbiAgICAgICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgZmxvYXQpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiAoKiBXZSBwcmludCBzcGVjaWZpYyBzcGVjaWFsIHN0cmluZ3MgZm9yIG5vbi1maW5pdGUgZmxvYXRzICopXG4gICAgICAgICAgICBGbG9hdC5pc19uYW4gZmxvYXRcbiAgICAgICAgICB0aGVuIFwiTkFOc1wiXG4gICAgICAgICAgZWxzZSBpZiBGbG9hdC5pc19uZWdhdGl2ZSBmbG9hdFxuICAgICAgICAgIHRoZW4gXCItSU5Gc1wiXG4gICAgICAgICAgZWxzZSBcIklORnNcIlxuICAgICAgICBlbHNlIGlmIHQgPSB6ZXJvXG4gICAgICAgIHRoZW4gXCIwc1wiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgPSB0b191bml0X29mX3RpbWUgdCBpblxuICAgICAgICAgIGxldCBhYnNfdCA9IGFicyB0IGluXG4gICAgICAgICAgbGV0IHNpZ24gPSBpZiB0IDwgemVybyB0aGVuIFwiLVwiIGVsc2UgXCJcIiBpblxuICAgICAgICAgIGxldCBtYWduaXR1ZGVfc3RyaW5nID1cbiAgICAgICAgICAgIG1hdGNoIHVuaXRfb2ZfdGltZSB3aXRoXG4gICAgICAgICAgICAoKiBXZSBjYW4gdXNlIG5vcm1hbCBmbG9hdCBub3RhdGlvbiBmb3Igc2Vjb25kcyBhbmQgc3ViLXNlY29uZCB1bml0cywgdGhleSBhcmVcbiAgICAgICAgICAgICAgIHJlYWRhYmxlIHdpdGggYSBkZWNpbWFsIHBvaW50LiAqKVxuICAgICAgICAgICAgfCBOYW5vc2Vjb25kIHwgTWljcm9zZWNvbmQgfCBNaWxsaXNlY29uZCB8IFNlY29uZCAtPlxuICAgICAgICAgICAgICB0b19mbG9hdF9zdHJpbmcgfmFic190IH51bml0X29mX3RpbWUgfmZpeHVwX3VuaXRfb2ZfdGltZTpOYW5vc2Vjb25kXG4gICAgICAgICAgICAoKiBGb3IgbGFyZ2UgZW5vdWdoIHZhbHVlcyB0aGF0IHRoZSBVTFAgaXMgYSBkYXkgb3IgbW9yZSwgd2UgY2FuIHVzZSBmbG9hdFxuICAgICAgICAgICAgICAgbm90YXRpb24gYmVjYXVzZSB3ZSBhcmUgZXhwcmVzc2luZyBhIHNpbmdsZSwgdmVyeSBsYXJnZSBpbnRlZ2VyLiAqKVxuICAgICAgICAgICAgfCBEYXkgd2hlbiBuZXh0IGFic190IC0gYWJzX3QgPj0gZGF5IC0+XG4gICAgICAgICAgICAgIHRvX2Zsb2F0X3N0cmluZyB+YWJzX3QgfnVuaXRfb2ZfdGltZSB+Zml4dXBfdW5pdF9vZl90aW1lOkRheVxuICAgICAgICAgICAgKCogRm9yIGV2ZXJ5dGhpbmcgaW4gYmV0d2Vlbiwgd2UgbmVlZCB0byB1c2UgaW50ZWdlciB1bml0cyBvZiBkYXlzLCBob3VycyxcbiAgICAgICAgICAgICAgIGFuZC9vciBtaW51dGVzLCBiZWNhdXNlIHRob3NlIHVuaXRzIGFyZSBub3QgcmVhZGFibGUgYXMgZGVjaW1hbHMsIGFuZCB3ZVxuICAgICAgICAgICAgICAgdGFjayBvbiBhIGRlY2ltYWwgcmVtYWluZGVyIG9mIGEgc2Vjb25kcy1vci1zbWFsbGVyIHVuaXQgaWYgbmVjZXNzYXJ5LiAqKVxuICAgICAgICAgICAgfCBNaW51dGUgfCBIb3VyIHwgRGF5IC0+XG4gICAgICAgICAgICAgIGxldCBzdW1fdCA9IHplcm8gaW5cbiAgICAgICAgICAgICAgbGV0IGRheV9zdHJpbmcsIHN1bV90ID0gdG9faW50X3N0cmluZ19hbmRfc3VtIH5hYnNfdCB+c3VtX3QgRGF5IGluXG4gICAgICAgICAgICAgIGxldCBob3VyX3N0cmluZywgc3VtX3QgPSB0b19pbnRfc3RyaW5nX2FuZF9zdW0gfmFic190IH5zdW1fdCBIb3VyIGluXG4gICAgICAgICAgICAgIGxldCBtaW51dGVfc3RyaW5nLCBzdW1fdCA9IHRvX2ludF9zdHJpbmdfYW5kX3N1bSB+YWJzX3QgfnN1bV90IE1pbnV0ZSBpblxuICAgICAgICAgICAgICBsZXQgZmxvYXRfc3RyaW5nID0gdG9fZmxvYXRfc3RyaW5nX2FmdGVyX2ludF9zdHJpbmdzIH5hYnNfdCB+c3VtX3QgaW5cbiAgICAgICAgICAgICAgZGF5X3N0cmluZyBePyBob3VyX3N0cmluZyBePyBtaW51dGVfc3RyaW5nIF4/IGZsb2F0X3N0cmluZ1xuICAgICAgICAgIGluXG4gICAgICAgICAgc2lnbiBePyBtYWduaXR1ZGVfc3RyaW5nKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCB0b19zdHJpbmcgPSBUb19zdHJpbmcudG9fc3RyaW5nXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICAgIGxldCB0X29mX3NleHAgcyA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgU2V4cC5BdG9tIHggLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmcgeCB3aXRoXG4gICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgcylcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT5cbiAgICAgICAgb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3Bhbi5TdGFibGUuVjMudF9vZl9zZXhwOiBzZXhwIG11c3QgYmUgYW4gQXRvbVwiIHNcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WM1xuXG5sZXQgdG9fcHJvcG9ydGlvbmFsX2Zsb2F0ID0gdG9fZmxvYXRcblxubGV0IHRvX3N0cmluZ19odW1cbiAgICAgID8oZGVsaW1pdGVyID0gJ18nKVxuICAgICAgPyhkZWNpbWFscyA9IDMpXG4gICAgICA/KGFsaWduX2RlY2ltYWwgPSBmYWxzZSlcbiAgICAgID91bml0X29mX3RpbWVcbiAgICAgIHRcbiAgPVxuICBsZXQgZmxvYXQsIHN1ZmZpeCA9XG4gICAgbWF0Y2ggT3B0aW9uLnZhbHVlIHVuaXRfb2ZfdGltZSB+ZGVmYXVsdDoodG9fdW5pdF9vZl90aW1lIHQpIHdpdGhcbiAgICB8IERheSAtPiB0b19kYXkgdCwgXCJkXCJcbiAgICB8IEhvdXIgLT4gdG9faHIgdCwgXCJoXCJcbiAgICB8IE1pbnV0ZSAtPiB0b19taW4gdCwgXCJtXCJcbiAgICB8IFNlY29uZCAtPiB0b19zZWMgdCwgXCJzXCJcbiAgICB8IE1pbGxpc2Vjb25kIC0+IHRvX21zIHQsIFwibXNcIlxuICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdCwgXCJ1c1wiXG4gICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHQsIFwibnNcIlxuICBpblxuICBsZXQgcHJlZml4ID1cbiAgICBGbG9hdC50b19zdHJpbmdfaHVtIGZsb2F0IH5kZWxpbWl0ZXIgfmRlY2ltYWxzIH5zdHJpcF96ZXJvOihub3QgYWxpZ25fZGVjaW1hbClcbiAgaW5cbiAgbGV0IHN1ZmZpeCA9XG4gICAgaWYgYWxpZ25fZGVjaW1hbCAmJiBJbnQuKCA9ICkgKFN0cmluZy5sZW5ndGggc3VmZml4KSAxIHRoZW4gc3VmZml4IF4gXCIgXCIgZWxzZSBzdWZmaXhcbiAgaW5cbiAgcHJlZml4IF4gc3VmZml4XG47O1xuXG5sZXQgZ2VuX2luY2wgbG8gaGkgPVxuICBGbG9hdC5nZW5faW5jbCAodG9fc2VjIGxvKSAodG9fc2VjIGhpKSB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc2VjXG47O1xuXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCBsbyBoaSA9XG4gICgqIFRlY2huaWNhbGx5IGV4Y2x1c2l2ZSByYXRoZXIgdGhhbiBpbmNsdXNpdmUsIGJ1dCBvdGhlcndpc2Ugc2F0aXNmaWVzIHRoZSBjb250cmFjdCB0b1xuICAgICB3aXRoaW4gMXVscCBvZiB0aGUgZ2l2ZW4gYm91bmRzLiAqKVxuICBGbG9hdC5nZW5fdW5pZm9ybV9leGNsICh0b19zZWMgbG8pICh0b19zZWMgaGkpIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zZWNcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICgqIFdlIGdlbmVyYXRlIHNwYW5zIHVwIHRvIChzbGlnaHRseSBtb3JlIHRoYW4pIGEgbWlsbGVuaXVtLCBwb3NpdGl2ZSBvciBuZWdhdGl2ZS4gVGhpc1xuICAgICBpcyBiYXNlZCBvbiB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyLCBpbiB3aGljaCB5ZWFycyBhdmVyYWdlIDM2NS4yNDI1IGRheXMgd2hlblxuICAgICBhY2NvdW50aW5nIGZvciBsZWFwIGRheXMuIENvdmVyaW5nIGEgdHdvLW1pbGxlbml1bSBzcGFuIGlzIG1vcmUgdGhhbiBlbm91Z2ggZm9yIG1vc3RcbiAgICAgcHJhY3RpY2FsIHB1cnBvc2VzLCBjZXJ0YWlubHkgbW9yZSB0aGFuIGVub3VnaCB0byBjb3ZlciB0aGUgcmVwcmVzZW50YWJsZSByYW5nZSBvZlxuICAgICBbU3Bhbl9uc10sIGFuZCByZXN1bHRzIGluIGZpbml0ZSBzcGFucyBhbmQgdGltZXMgdGhhdCBjYW4gYmUgc2VyaWFsaXplZC5cblxuICAgICBXZSBnZW5lcmF0ZSBieSBmaWx0ZXJpbmcgdGhlIGRlZmF1bHQgZ2VuZXJhdG9yIHNvIHRoYXQgc3BhbnMgYXJlIHN0aWxsIHNrZXdlZCB0b3dhcmRcbiAgICAgc21hbGwgdmFsdWVzLCBldmVuIHRob3VnaCB0aGUgYm91bmRzIGFyZSBsYXJnZS4gKilcbiAgbGV0IG1pbGxlbml1bSA9IG9mX2RheSAoRmxvYXQucm91bmRfdXAgKDM2NS4yNDI1ICouIDEwMDAuKSkgaW5cbiAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOihmdW4gdCAtPlxuICAgIG5lZyBtaWxsZW5pdW0gPD0gdCAmJiB0IDw9IG1pbGxlbml1bSlcbjs7XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWUuU3BhblwiXG4gIGVuZClcblxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGhhc2gtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdCBzZXJpYWxpemF0aW9uIHJhdGhlclxuICAgICAgIHRoYW4gdGltZSBzZXJpYWxpemF0aW9uLCBzbyB3aGVuIHJlYWRpbmcgaGFzaC1iYXNlZCBjb250YWluZXJzIGluIHdlIGFjY2VwdCBlaXRoZXJcbiAgICAgICBzZXJpYWxpemF0aW9uLiAqKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBGbG9hdC50X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICB8IGZsb2F0IC0+IG9mX2Zsb2F0IGZsb2F0XG4gICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgQyA9IHN0cnVjdFxuICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBULmNvbXBhcmF0b3JcblxuICAoKiBJbiAxMDguMDZhIGFuZCBlYXJsaWVyLCBzcGFucyBpbiBzZXhwcyBvZiBNYXBzIGFuZCBTZXRzIHdlcmUgcmF3IGZsb2F0cy4gIEZyb20gMTA4LjA3XG4gICAgIHRocm91Z2ggMTA5LjEzLCB0aGUgb3V0cHV0IGZvcm1hdCByZW1haW5lZCByYXcgYXMgYmVmb3JlLCBidXQgYm90aCB0aGUgcmF3IGFuZCBwcmV0dHlcbiAgICAgZm9ybWF0IHdlcmUgYWNjZXB0ZWQgYXMgaW5wdXQuICBGcm9tIDEwOS4xNCBvbiwgdGhlIG91dHB1dCBmb3JtYXQgd2FzIGNoYW5nZWQgZnJvbVxuICAgICByYXcgdG8gcHJldHR5LCB3aGlsZSBjb250aW51aW5nIHRvIGFjY2VwdCBib3RoIGZvcm1hdHMuICBPbmNlIHdlIGJlbGlldmUgbW9zdFxuICAgICBwcm9ncmFtcyBhcmUgYmV5b25kIDEwOS4xNCwgd2Ugd2lsbCBzd2l0Y2ggdGhlIGlucHV0IGZvcm1hdCB0byBubyBsb25nZXIgYWNjZXB0XG4gICAgIHJhdy4gKilcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gVC5vZl9mbG9hdCAoRmxvYXQudF9vZl9zZXhwIHNleHApKSB3aXRoXG4gICAgfCBTb21lIHQgLT4gdFxuICAgIHwgTm9uZSAtPiB0X29mX3NleHAgc2V4cFxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChDKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgPSBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lXG4gIGxldCBwYXJzZV9zdWZmaXggPSBTdGFibGUuVjMuT2Zfc3RyaW5nLnBhcnNlX3N1ZmZpeFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIERpZ2l0X3N0cmluZ19oZWxwZXJzXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgU3BhbiA9IFNwYW5fZmxvYXRcblxuKCogQ3JlYXRlIGFuIGFic3RyYWN0IHR5cGUgZm9yIE9mZGF5IHRvIHByZXZlbnQgdXMgZnJvbSBjb25mdXNpbmcgaXQgd2l0aFxuICAgb3RoZXIgZmxvYXRzLlxuKilcbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IGZsb2F0XG4gICAgICB0eXBlIHQgPSBwcml2YXRlIHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIEZsb2F0YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIHZhbCBhZGQgOiB0IC0+IFNwYW4udCAtPiB0IG9wdGlvblxuICAgICAgdmFsIHN1YiA6IHQgLT4gU3Bhbi50IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgbmV4dCA6IHQgLT4gdCBvcHRpb25cbiAgICAgIHZhbCBwcmV2IDogdCAtPiB0IG9wdGlvblxuICAgICAgdmFsIGRpZmYgOiB0IC0+IHQgLT4gU3Bhbi50XG4gICAgICB2YWwgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIDogU3Bhbi50IC0+IHRcbiAgICAgIHZhbCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgOiBTcGFuLnQgLT4gdFxuICAgICAgdmFsIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbGlkIDogU3Bhbi50IC0+IGJvb2xcbiAgICAgIHZhbCB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA6IHQgLT4gU3Bhbi50XG4gICAgICB2YWwgc3RhcnRfb2ZfZGF5IDogdFxuICAgICAgdmFsIHN0YXJ0X29mX25leHRfZGF5IDogdFxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgKCogTnVtYmVyIG9mIHNlY29uZHMgc2luY2UgbWlkbmlnaHQuICopXG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBGbG9hdC50XG5cbiAgICAgIGluY2x1ZGUgKFxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRmxvYXRcblxuICAgICAgICBsZXQgc2lnbiA9IHNpZ25fZXhuXG5cbiAgICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgICAgICBTdGFibGVfd2l0bmVzcy5FeHBvcnQuc3RhYmxlX3dpdG5lc3NfZmxvYXRcbiAgICAgICAgOztcbiAgICAgIGVuZCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gdW5kZXJseWluZyBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2NvbW1vbiB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgICBpbmNsdWRlIEZsb2F0YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBlbmQpXG5cbiAgICAgICgqIElGIFRISVMgUkVQUkVTRU5UQVRJT04gRVZFUiBDSEFOR0VTLCBFTlNVUkUgVEhBVCBFSVRIRVJcbiAgICAgICAgICgxKSBhbGwgdmFsdWVzIHNlcmlhbGl6ZSB0aGUgc2FtZSB3YXkgaW4gYm90aCByZXByZXNlbnRhdGlvbnMsIG9yXG4gICAgICAgICAoMikgeW91IGFkZCBhIG5ldyBUaW1lLk9mZGF5IHZlcnNpb24gdG8gc3RhYmxlLm1sICopXG5cbiAgICAgICgqIGR1ZSB0byBwcmVjaXNpb24gbGltaXRhdGlvbnMgaW4gZmxvYXQgd2UgY2FuJ3QgZXhwZWN0IGJldHRlciB0aGFuIG1pY3Jvc2Vjb25kXG4gICAgICAgICBwcmVjaXNpb24gKilcbiAgICAgIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTZcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCA9IFNwYW4ub2Zfc2VjIHRcblxuICAgICAgKCogQW5vdGhlciByZWFzb25hYmxlIGNob2ljZSB3b3VsZCBiZSBvbmx5IGFsbG93aW5nIE9mZGF5LnQgdG8gYmUgPCAyNGhyLCBidXQgdGhpc1xuICAgICAgICAgY2hvaWNlIHdhcyBtYWRlIGVhcmx5IG9uIGFuZCBwZW9wbGUgYmVjYW1lIHVzZWQgdG8gYmVpbmcgYWJsZSB0byBlYXNpbHkgY2FsbCAyNGhyXG4gICAgICAgICB0aGUgZW5kIG9mIHRoZSBkYXkuICBJdCdzIGEgYml0IHNhZCBiZWNhdXNlIGl0IHNoYXJlcyB0aGF0IG1vbWVudCB3aXRoIHRoZVxuICAgICAgICAgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGRheSwgYW5kIHJvdW5kIHRyaXBzIG9kZGx5IGlmIHBhc3NlZCB0aHJvdWdoXG4gICAgICAgICBUaW1lLnRvX2RhdGVfb2ZkYXkvVGltZS5vZl9kYXRlX29mZGF5LlxuXG4gICAgICAgICBOb3RlOiBbU2NoZWR1bGUudF0gcmVxdWlyZXMgdGhhdCB0aGUgZW5kIG9mIGRheSBiZSByZXByZXNlbnRhYmxlLCBhcyBpdCdzIHRoZVxuICAgICAgICAgb25seSB3YXkgdG8gd3JpdGUgYSBzY2hlZHVsZSBpbiB0ZXJtcyBvZiBbT2ZkYXkudF1zIHRoYXQgc3BhbnMgdHdvIHdlZWtkYXlzLiAqKVxuICAgICAgKCogb2ZkYXkgbXVzdCBiZSA+PSAwIGFuZCA8PSAyNGggKilcbiAgICAgIGxldCBpc192YWxpZCAodCA6IHQpID1cbiAgICAgICAgbGV0IHQgPSB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0IGluXG4gICAgICAgIFNwYW4uKCA8PSApIFNwYW4uemVybyB0ICYmIFNwYW4uKCA8PSApIHQgU3Bhbi5kYXlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbiA9IFNwYW4udG9fc2VjIHNwYW5cblxuICAgICAgbGV0IHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbGlkIHNwYW4gPVxuICAgICAgICBpc192YWxpZCAob2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfdW5jaGVja2VkIHNwYW4pXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIHNwYW4gPVxuICAgICAgICBsZXQgbW9kdWxlIEMgPSBGbG9hdC5DbGFzcyBpblxuICAgICAgICBsZXQgcyA9IFNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgbWF0Y2ggRmxvYXQuY2xhc3NpZnkgcyB3aXRoXG4gICAgICAgIHwgQy5JbmZpbml0ZSAtPiBpbnZhbGlkX2FyZyBcIk9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4bjogaW5maW5pdGUgdmFsdWVcIlxuICAgICAgICB8IEMuTmFuIC0+IGludmFsaWRfYXJnIFwiT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBOYU4gdmFsdWVcIlxuICAgICAgICB8IEMuTm9ybWFsIHwgQy5TdWJub3JtYWwgfCBDLlplcm8gLT5cbiAgICAgICAgICBpZiBub3QgKGlzX3ZhbGlkIHMpXG4gICAgICAgICAgdGhlbiBpbnZhbGlkX2FyZ2YgIVwiT2ZkYXkgb3V0IG9mIHJhbmdlOiAle1NwYW59XCIgc3BhbiAoKVxuICAgICAgICAgIGVsc2Ugc1xuICAgICAgOztcblxuICAgICAgbGV0IHN0YXJ0X29mX2RheSA9IDAuXG4gICAgICBsZXQgc3RhcnRfb2ZfbmV4dF9kYXkgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gU3Bhbi5kYXlcblxuICAgICAgbGV0IGFkZCAodCA6IHQpIChzcGFuIDogU3Bhbi50KSA9XG4gICAgICAgIGxldCB0ID0gdCArLiBTcGFuLnRvX3NlYyBzcGFuIGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIHQgdGhlbiBTb21lIHQgZWxzZSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3ViICh0IDogdCkgKHNwYW4gOiBTcGFuLnQpID1cbiAgICAgICAgbGV0IHQgPSB0IC0uIFNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgdCB0aGVuIFNvbWUgdCBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBuZXh0IHQgPVxuICAgICAgICBsZXQgY2FuZGlkYXRlID0gRmxvYXQub25lX3VscCBgVXAgdCBpblxuICAgICAgICBpZiBpc192YWxpZCBjYW5kaWRhdGUgdGhlbiBTb21lIGNhbmRpZGF0ZSBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwcmV2IHQgPVxuICAgICAgICBsZXQgY2FuZGlkYXRlID0gRmxvYXQub25lX3VscCBgRG93biB0IGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIGNhbmRpZGF0ZSB0aGVuIFNvbWUgY2FuZGlkYXRlIGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IGRpZmYgdDEgdDIgPVxuICAgICAgICBTcGFuLiggLSApICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0MSkgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQyKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5ID1cbiAgICAgIE9wdGlvbi52YWx1ZV9leG4gKFQuc3ViIFQuc3RhcnRfb2ZfbmV4dF9kYXkgU3Bhbi5taWNyb3NlY29uZClcbiAgICA7O1xuXG4gICAgKCogW2NyZWF0ZV0gY2hvcHMgb2ZmIGFueSBzdWJzZWNvbmQgcGFydCB3aGVuIFtzZWMgPSA2MF0gdG8gaGFuZGxlIGxlYXAgc2Vjb25kcy4gSW5cbiAgICAgICBwYXJ0aWN1bGFyIGl0J3MgdHJ5aW5nIHRvIGJlIGdlbmVyb3VzIGFib3V0IHJlYWRpbmcgaW4gdGltZXMgb24gdGhpbmdzIGxpa2UgZml4XG4gICAgICAgbWVzc2FnZXMgdGhhdCBtaWdodCBpbmNsdWRlIGFuIGV4dHJhIHVubGlrZWx5IHNlY29uZC5cblxuICAgICAgIE90aGVyIHdheXMgb2Ygd3JpdGluZyBhIHRpbWUsIGxpa2UgMTAwMG1zLCB3aGlsZSBtYXRoZW1hdGljYWxseSB2YWxpZCwgZG9uJ3QgbWF0Y2hcbiAgICAgICB3YXlzIHRoYXQgcGVvcGxlIGFjdHVhbGx5IHdyaXRlIHRpbWVzIGRvd24sIHNvIHdlIGRpZG4ndCBzZWUgdGhlIG5lZWQgdG8gc3VwcG9ydFxuICAgICAgIHRoZW0uIFRoYXQgaXMsIGEgY2xvY2sgbWlnaHQgbGVnaXRpbWF0ZWx5IHJlYWQgMjM6NTk6NjAgKG9yLCB3aXRoIDYwIHNlY29uZHMgYXRcbiAgICAgICB0aW1lcyBvZiBkYXkgb3RoZXIgdGhhbiAyMzo1OSwgZGVwZW5kaW5nIG9uIHRoZSB0aW1lIHpvbmUpLCBidXQgaXQgZG9lc24ndCBzZWVtXG4gICAgICAgcmVhc29uYWJsZSBmb3IgYSBjbG9jayB0byByZWFkIFwiMjM6NTk6NTkgYW5kIDEwMDBtc1wiLiAqKVxuICAgIGxldCBjcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSA9XG4gICAgICBsZXQgbXMsIHVzLCBucyA9XG4gICAgICAgIG1hdGNoIHNlYyB3aXRoXG4gICAgICAgIHwgU29tZSA2MCAtPiBTb21lIDAsIFNvbWUgMCwgU29tZSAwXG4gICAgICAgIHwgXyAtPiBtcywgdXMsIG5zXG4gICAgICBpblxuICAgICAgVC5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uY3JlYXRlID9ociA/bWluID9zZWMgP21zID91cyA/bnMgKCkpXG4gICAgOztcblxuICAgIGxldCB0b19wYXJ0cyB0ID0gU3Bhbi50b19wYXJ0cyAoVC50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0KVxuXG4gICAgbGV0IHRvX3N0cmluZ19nZW4gfmRyb3BfbXMgfmRyb3BfdXMgfnRyaW0gdCA9XG4gICAgICBsZXQgKCAvICkgPSBJbnQ2My4oIC8gKSBpblxuICAgICAgbGV0ICggISApID0gSW50NjMub2ZfaW50IGluXG4gICAgICBsZXQgKCBtb2QgKSA9IEludDYzLnJlbSBpblxuICAgICAgbGV0IGkgPSBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICBhc3NlcnQgKGlmIGRyb3BfbXMgdGhlbiBkcm9wX3VzIGVsc2UgdHJ1ZSk7XG4gICAgICBsZXQgZmxvYXRfc2VjID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCkgaW5cbiAgICAgIGxldCB1cyA9IEZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfZXhuIChmbG9hdF9zZWMgKi4gMWU2KSBpblxuICAgICAgbGV0IG1zLCB1cyA9IHVzIC8gITEwMDAsIHVzIG1vZCAhMTAwMCB8PiBpIGluXG4gICAgICBsZXQgc2VjLCBtcyA9IG1zIC8gITEwMDAsIG1zIG1vZCAhMTAwMCB8PiBpIGluXG4gICAgICBsZXQgbWluLCBzZWMgPSBzZWMgLyAhNjAsIHNlYyBtb2QgITYwIHw+IGkgaW5cbiAgICAgIGxldCBociwgbWluID0gbWluIC8gITYwLCBtaW4gbW9kICE2MCB8PiBpIGluXG4gICAgICBsZXQgaHIgPSBpIGhyIGluXG4gICAgICBsZXQgZG9udF9wcmludF91cyA9IGRyb3BfdXMgfHwgKHRyaW0gJiYgdXMgPSAwKSBpblxuICAgICAgbGV0IGRvbnRfcHJpbnRfbXMgPSBkcm9wX21zIHx8ICh0cmltICYmIG1zID0gMCAmJiBkb250X3ByaW50X3VzKSBpblxuICAgICAgbGV0IGRvbnRfcHJpbnRfcyA9IHRyaW0gJiYgc2VjID0gMCAmJiBkb250X3ByaW50X21zIGluXG4gICAgICBsZXQgbGVuID1cbiAgICAgICAgaWYgZG9udF9wcmludF9zXG4gICAgICAgIHRoZW4gNVxuICAgICAgICBlbHNlIGlmIGRvbnRfcHJpbnRfbXNcbiAgICAgICAgdGhlbiA4XG4gICAgICAgIGVsc2UgaWYgZG9udF9wcmludF91c1xuICAgICAgICB0aGVuIDEyXG4gICAgICAgIGVsc2UgMTVcbiAgICAgIGluXG4gICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6MCBocjtcbiAgICAgIEJ5dGVzLnNldCBidWYgMiAnOic7XG4gICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczozIG1pbjtcbiAgICAgIGlmIGRvbnRfcHJpbnRfc1xuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIEJ5dGVzLnNldCBidWYgNSAnOic7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjYgc2VjO1xuICAgICAgICBpZiBkb250X3ByaW50X21zXG4gICAgICAgIHRoZW4gKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA4ICcuJztcbiAgICAgICAgICB3cml0ZV8zX2RpZ2l0X2ludCBidWYgfnBvczo5IG1zO1xuICAgICAgICAgIGlmIGRvbnRfcHJpbnRfdXMgdGhlbiAoKSBlbHNlIHdyaXRlXzNfZGlnaXRfaW50IGJ1ZiB+cG9zOjEyIHVzKSk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nX3RyaW1tZWQgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6ZmFsc2UgfmRyb3BfdXM6ZmFsc2UgfnRyaW06dHJ1ZSB0XG4gICAgbGV0IHRvX3NlY19zdHJpbmcgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6dHJ1ZSB+ZHJvcF91czp0cnVlIH50cmltOmZhbHNlIHRcbiAgICBsZXQgdG9fbWlsbGlzZWNvbmRfc3RyaW5nIHQgPSB0b19zdHJpbmdfZ2VuIH5kcm9wX21zOmZhbHNlIH5kcm9wX3VzOnRydWUgfnRyaW06ZmFsc2UgdFxuXG4gICAgbGV0IHNtYWxsX2RpZmYgPVxuICAgICAgbGV0IGhvdXIgPSAzNjAwLiBpblxuICAgICAgZnVuIG9mZGF5MSBvZmRheTIgLT5cbiAgICAgICAgbGV0IG9mZGF5MSA9IFNwYW4udG9fc2VjIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MSkgaW5cbiAgICAgICAgbGV0IG9mZGF5MiA9IFNwYW4udG9fc2VjIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MikgaW5cbiAgICAgICAgbGV0IGRpZmYgPSBvZmRheTEgLS4gb2ZkYXkyIGluXG4gICAgICAgICgqICBkMSBpcyBpbiAoLWhvdXI7IGhvdXIpICopXG4gICAgICAgIGxldCBkMSA9IEZsb2F0Lm1vZF9mbG9hdCBkaWZmIGhvdXIgaW5cbiAgICAgICAgKCogIGQyIGlzIGluICgwO2hvdXIpICopXG4gICAgICAgIGxldCBkMiA9IEZsb2F0Lm1vZF9mbG9hdCAoZDEgKy4gaG91cikgaG91ciBpblxuICAgICAgICBsZXQgZCA9IGlmIEZsb2F0LiggPiApIGQyIChob3VyIC8uIDIuKSB0aGVuIGQyIC0uIGhvdXIgZWxzZSBkMiBpblxuICAgICAgICBTcGFuLm9mX3NlYyBkXG4gICAgOztcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHRvX3N0cmluZyB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczpmYWxzZSB+ZHJvcF91czpmYWxzZSB+dHJpbTpmYWxzZSB0XG5cbiAgICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5UaW1lLk9mZGF5XCJcbiAgICAgIGVuZClcblxuICAgIGxldCBjcmVhdGVfZnJvbV9wYXJzZWQgc3RyaW5nIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW4gPVxuICAgICAgbGV0IHN1YnNlYyA9XG4gICAgICAgIGlmIEludC5lcXVhbCBzdWJzZWNfbGVuIDBcbiAgICAgICAgdGhlbiAwLlxuICAgICAgICBlbHNlIEZsb2F0Lm9mX3N0cmluZyAoU3RyaW5nLnN1YiBzdHJpbmcgfnBvczpzdWJzZWNfcG9zIH5sZW46c3Vic2VjX2xlbilcbiAgICAgIGluXG4gICAgICBGbG9hdC5vZl9pbnQgKChociAqIDM2MDApICsgKG1pbiAqIDYwKSArIHNlYykgKy4gc3Vic2VjXG4gICAgICB8PiBTcGFuLm9mX3NlY1xuICAgICAgfD4gVC5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzID0gT2ZkYXlfaGVscGVycy5wYXJzZSBzIH5mOmNyZWF0ZV9mcm9tX3BhcnNlZFxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBzIC0+IG9mX3NleHBfZXJyb3IgKFwiT2ZkYXkudF9vZl9zZXhwOiBcIiBeIHMpIHNleHApXG4gICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIk9mZGF5LnRfb2Zfc2V4cFwiIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICAgIGxldCBzZXhwX29mX3Qgc3BhbiA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHNwYW4pXG5cbiAgICBsZXQgb2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciA9XG4gICAgICB0cnkgT2ZkYXlfaGVscGVycy5wYXJzZV9pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgfmY6Y3JlYXRlX2Zyb21fcGFyc2VkIHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICAgIFwiT2ZkYXkub2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQoJXMpOiAlc1wiXG4gICAgICAgICAgKFN0cmluZy5zdWJvIHN0ciA/cG9zID9sZW4pXG4gICAgICAgICAgKEV4bi50b19zdHJpbmcgZXhuKVxuICAgICAgICAgICgpXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxubGV0IGdlbl9pbmNsIGxvIGhpID1cbiAgU3Bhbi5nZW5faW5jbCAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgbG8pICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBoaSlcbiAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuOztcblxubGV0IGdlbl91bmlmb3JtX2luY2wgbG8gaGkgPVxuICBTcGFuLmdlbl91bmlmb3JtX2luY2wgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGxvKSAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgaGkpXG4gIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlbl9pbmNsIHN0YXJ0X29mX2RheSBzdGFydF9vZl9uZXh0X2RheVxuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyIH5mOnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5XG47O1xuXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcblxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGhhc2gtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdCBzZXJpYWxpemF0aW9uIHJhdGhlclxuICAgICAgIHRoYW4gdGltZSBzZXJpYWxpemF0aW9uLCBzbyB3aGVuIHJlYWRpbmcgaGFzaC1iYXNlZCBjb250YWluZXJzIGluIHdlIGFjY2VwdCBlaXRoZXJcbiAgICAgICBzZXJpYWxpemF0aW9uLiAqKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBGbG9hdC50X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICB8IGZsb2F0IC0+IG9mX2Zsb2F0IGZsb2F0XG4gICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgQyA9IHN0cnVjdFxuICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBULmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmUgPSBULmNvbXBhcmF0b3IuY29tcGFyZVxuXG4gICgqIEluIDEwOC4wNmEgYW5kIGVhcmxpZXIsIG9mZGF5cyBpbiBzZXhwcyBvZiBNYXBzIGFuZCBTZXRzIHdlcmUgcmF3IGZsb2F0cy4gIEZyb21cbiAgICAgMTA4LjA3IHRocm91Z2ggMTA5LjEzLCB0aGUgb3V0cHV0IGZvcm1hdCByZW1haW5lZCByYXcgYXMgYmVmb3JlLCBidXQgYm90aCB0aGUgcmF3IGFuZFxuICAgICBwcmV0dHkgZm9ybWF0IHdlcmUgYWNjZXB0ZWQgYXMgaW5wdXQuICBGcm9tIDEwOS4xNCBvbiwgdGhlIG91dHB1dCBmb3JtYXQgd2FzIGNoYW5nZWRcbiAgICAgZnJvbSByYXcgdG8gcHJldHR5LCB3aGlsZSBjb250aW51aW5nIHRvIGFjY2VwdCBib3RoIGZvcm1hdHMuICBPbmNlIHdlIGJlbGlldmUgbW9zdFxuICAgICBwcm9ncmFtcyBhcmUgYmV5b25kIDEwOS4xNCwgd2Ugd2lsbCBzd2l0Y2ggdGhlIGlucHV0IGZvcm1hdCB0byBubyBsb25nZXIgYWNjZXB0XG4gICAgIHJhdy4gKilcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gVC5vZl9mbG9hdCAoRmxvYXQudF9vZl9zZXhwIHNleHApKSB3aXRoXG4gICAgfCBTb21lIHQgLT4gdFxuICAgIHwgTm9uZSAtPiB0X29mX3NleHAgc2V4cFxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChDKVxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlIChDKVxuXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbmxldCB0b19taWxsaXNlY19zdHJpbmcgPSB0b19taWxsaXNlY29uZF9zdHJpbmdcbiIsIigqIFNlZSB0aW1lX2Zsb2F0Lm1sIGZvciB0aGUgcHJpbWFyeSBpbnN0YW50aWF0aW9uIG9mIHRoaXMgZnVuY3RvciB0aGF0IGlzIHZpc2libGUgb3V0c2lkZVxuICAgb2YgQ29yZSBhcyBUaW1lIChzZWUgY29yZS5tbCkuICopXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIFRpbWVfaW50ZlxuXG5tb2R1bGUgTWFrZSAoVGltZTAgOiBUaW1lMF9pbnRmLlMpID0gc3RydWN0XG4gIG1vZHVsZSBUaW1lMCA9IFRpbWUwXG4gIGluY2x1ZGUgVGltZTBcblxuICBsZXQgZXBvY2ggPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIFNwYW4uemVyb1xuICBsZXQgaXNfZWFybGllciB0MSB+dGhhbjp0MiA9IHQxIDwuIHQyXG4gIGxldCBpc19sYXRlciB0MSB+dGhhbjp0MiA9IHQxID4uIHQyXG5cbiAgbW9kdWxlIFpvbmUgOiBzaWdcbiAgICBpbmNsdWRlIFRpbWVfaW50Zi5ab25lIHdpdGggbW9kdWxlIFRpbWUgOj0gVGltZTBcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBab25lXG5cbiAgICBsZXQgb2Zfc3Bhbl9pbl9zZWNvbmRzIHNwYW5faW5fc2Vjb25kcyA9XG4gICAgICAoKiBOQi4gbm8gYWN0dWFsIHJvdW5kaW5nIG9yIGV4bnMgY2FuIG9jY3VyIGhlcmUgKilcbiAgICAgIFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4gc3Bhbl9pbl9zZWNvbmRzXG4gICAgICB8PiBUaW1lMC5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICA7O1xuXG4gICAgbGV0IG9mX3RpbWVfaW5fc2Vjb25kcyB0aW1lX2luX3NlY29uZHMgPVxuICAgICAgVGltZV9pbl9zZWNvbmRzLnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZV9pbl9zZWNvbmRzXG4gICAgICAoKiBOQi4gbm8gYWN0dWFsIHJvdW5kaW5nIG9yIGV4bnMgY2FuIG9jY3VyIGhlcmUgKilcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWUwLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZTAub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fdGltZV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHRpbWUgPVxuICAgICAgVGltZTAudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lXG4gICAgICB8PiBUaW1lMC5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b19kYXRlX2FuZF9vZmRheV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHJlbGF0aXZlID1cbiAgICAgIFRpbWUwLkRhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHJlbGF0aXZlXG4gICAgICB8PiBUaW1lMC5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5EYXRlX2FuZF9vZmRheS5vZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXggdCB0aW1lID0gaW5kZXggdCAodG9fdGltZV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHRpbWUpXG5cbiAgICBsZXQgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0ICh0b19kYXRlX2FuZF9vZmRheV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHJlbGF0aXZlKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3RpbWVfaW5fc2Vjb25kcyAoaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3RpbWVfaW5fc2Vjb25kcyAoaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBhYmJyZXZpYXRpb24gdCB0aW1lID1cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgaW5kZXhfYWJicmV2aWF0aW9uX2V4biB0IChpbmRleCB0IHRpbWUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPVxuICAgICAgbWF0Y2ggaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCB3aXRoXG4gICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBTb21lXG4gICAgICAgICAgKCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXhcbiAgICAgICAgICAsIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4IClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoSW5kZXgubmV4dCBpbmRleClcbiAgICBsZXQgcHJldl9jbG9ja19zaGlmdCB0IH5hdF9vcl9iZWZvcmU6dGltZSA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuICAgIGxldCBuZXh0X2Nsb2NrX3NoaWZ0IHQgfnN0cmljdGx5X2FmdGVyOnRpbWUgPSBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcblxuICAgIGxldCBkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHQgdGltZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleCB0IHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgVGltZTAuRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcblxuICAgIGxldCBhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4X29mX2RhdGVfYW5kX29mZGF5XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBUaW1lMC5EYXRlX2FuZF9vZmRheS50b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGFic19kaWZmIHQxIHQyID0gU3Bhbi5hYnMgKGRpZmYgdDEgdDIpXG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheSA9XG4gICAgbGV0IHJlbGF0aXZlID0gRGF0ZV9hbmRfb2ZkYXkub2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IGluXG4gICAgWm9uZS5hYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHpvbmUgcmVsYXRpdmVcbiAgOztcblxuICBsZXQgb2ZfZGF0ZV9vZmRheV9wcmVjaXNlIGRhdGUgb2ZkYXkgfnpvbmUgPVxuICAgICgqIFdlIGFzc3VtZSB0aGF0IHRoZXJlIHdpbGwgYmUgb25seSBvbmUgem9uZSBzaGlmdCB3aXRoaW4gYSBnaXZlbiBsb2NhbCBkYXkuICAqKVxuICAgIGxldCBzdGFydF9vZl9kYXkgPSBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgT2ZkYXkuc3RhcnRfb2ZfZGF5IGluXG4gICAgbGV0IHByb3Bvc2VkX3RpbWUgPSBhZGQgc3RhcnRfb2ZfZGF5IChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSkgaW5cbiAgICBtYXRjaCBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6c3RhcnRfb2ZfZGF5IHdpdGhcbiAgICB8IE5vbmUgLT4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgIHwgU29tZSAoc2hpZnRfc3RhcnQsIHNoaWZ0X2Ftb3VudCkgLT5cbiAgICAgIGxldCBzaGlmdF9iYWNrd2FyZHMgPSBTcGFuLihzaGlmdF9hbW91bnQgPCB6ZXJvKSBpblxuICAgICAgKCogc3RhcnQgYW5kIGVuZCBvZiB0aGUgXCJwcm9ibGVtYXRpYyByZWdpb25cIiAqKVxuICAgICAgbGV0IHMsIGUgPVxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50LCBzaGlmdF9zdGFydFxuICAgICAgICBlbHNlIHNoaWZ0X3N0YXJ0LCBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50XG4gICAgICBpblxuICAgICAgaWYgcHJvcG9zZWRfdGltZSA8IHNcbiAgICAgIHRoZW4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgICAgZWxzZSBpZiBzIDw9IHByb3Bvc2VkX3RpbWUgJiYgcHJvcG9zZWRfdGltZSA8IGVcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYFR3aWNlIChwcm9wb3NlZF90aW1lLCBzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gICAgICAgIGVsc2UgYE5ldmVyIHNoaWZ0X3N0YXJ0XG4gICAgICBlbHNlIGBPbmNlIChzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gIDs7XG5cbiAgbW9kdWxlIERhdGVfY2FjaGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBtdXRhYmxlIHpvbmUgOiBab25lLnRcbiAgICAgIDsgbXV0YWJsZSBjYWNoZV9zdGFydF9pbmNsIDogVGltZTAudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3VudGlsX2V4Y2wgOiBUaW1lMC50XG4gICAgICA7IG11dGFibGUgZWZmZWN0aXZlX2RheV9zdGFydCA6IFRpbWUwLnRcbiAgICAgIDsgbXV0YWJsZSBkYXRlIDogRGF0ZTAudFxuICAgICAgfVxuICBlbmRcblxuICBsZXQgZGF0ZV9jYWNoZSA6IERhdGVfY2FjaGUudCA9XG4gICAgeyB6b25lID0gWm9uZS51dGNcbiAgICA7IGNhY2hlX3N0YXJ0X2luY2wgPSBlcG9jaFxuICAgIDsgY2FjaGVfdW50aWxfZXhjbCA9IGVwb2NoXG4gICAgOyBlZmZlY3RpdmVfZGF5X3N0YXJ0ID0gZXBvY2hcbiAgICA7IGRhdGUgPSBEYXRlMC51bml4X2Vwb2NoXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXNldF9kYXRlX2NhY2hlICgpID1cbiAgICBkYXRlX2NhY2hlLnpvbmUgPC0gWm9uZS51dGM7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5kYXRlIDwtIERhdGUwLnVuaXhfZXBvY2hcbiAgOztcblxuICBsZXQgaXNfaW5fY2FjaGUgdGltZSB+em9uZSA9XG4gICAgcGh5c19lcXVhbCB6b25lIGRhdGVfY2FjaGUuem9uZVxuICAgICYmIFRpbWUwLiggPj0gKSB0aW1lIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbFxuICAgICYmIFRpbWUwLiggPCApIHRpbWUgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsXG4gIDs7XG5cbiAgbGV0IHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIG1hdGNoIGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiAoKVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIGxldCBpbmRleCA9IFpvbmUuaW5kZXggem9uZSB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbWm9uZS5pbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IFpvbmUuaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB6b25lIGluZGV4IGluXG4gICAgICBsZXQgcmVsID0gRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGVfYW5kX29mZGF5LnRvX2RhdGUgcmVsIGluXG4gICAgICBsZXQgc3BhbiA9IERhdGVfYW5kX29mZGF5LnRvX29mZGF5IHJlbCB8PiBPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPVxuICAgICAgICBUaW1lMC5zdWIgKERhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbCB+b2Zmc2V0X2Zyb21fdXRjKSBzcGFuXG4gICAgICBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfdW50aWwgPSBUaW1lMC5hZGQgZWZmZWN0aXZlX2RheV9zdGFydCBTcGFuLmRheSBpblxuICAgICAgbGV0IGNhY2hlX3N0YXJ0X2luY2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfc3RhcnRcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgICAgIHw+IFRpbWUwLm1heCAoWm9uZS5pbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgbGV0IGNhY2hlX3VudGlsX2V4Y2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfdW50aWxcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV91bnRpbFxuICAgICAgICAgIHw+IFRpbWUwLm1pbiAoWm9uZS5pbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgZGF0ZV9jYWNoZS56b25lIDwtIHpvbmU7XG4gICAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gY2FjaGVfc3RhcnRfaW5jbDtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbCA8LSBjYWNoZV91bnRpbF9leGNsO1xuICAgICAgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IDwtIGVmZmVjdGl2ZV9kYXlfc3RhcnQ7XG4gICAgICBkYXRlX2NhY2hlLmRhdGUgPC0gZGF0ZVxuICA7O1xuXG4gIGxldCB0b19kYXRlIHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgZGF0ZV9jYWNoZS5kYXRlXG4gIDs7XG5cbiAgbGV0IGVuZF9vZl9kYXkgPSBPZmRheS5wcmV2IE9mZGF5LnN0YXJ0X29mX25leHRfZGF5IHw+IE9wdGlvbi52YWx1ZV9leG4gfmhlcmU6WyVoZXJlXVxuXG4gIGxldCB0b19vZmRheSB0aW1lIH56b25lID1cbiAgICBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lO1xuICAgIGxldCBvZl9kYXkgPVxuICAgICAgVGltZTAuZGlmZiB0aW1lIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gICAgaW5cbiAgICBpZiBPZmRheS5lcXVhbCBvZl9kYXkgT2ZkYXkuc3RhcnRfb2ZfbmV4dF9kYXkgdGhlbiBlbmRfb2ZfZGF5IGVsc2Ugb2ZfZGF5XG4gIDs7XG5cbiAgbGV0IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSA9IHRvX2RhdGUgdGltZSB+em9uZSwgdG9fb2ZkYXkgdGltZSB+em9uZVxuXG4gICgqIFRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGFsZ29yaXRobSAoaW50ZXJmYWNlLCBldmVuKSBkZXBlbmRzIG9uIHRoZSBmYWN0IHRoYXRcbiAgICAgdGltZXpvbmUgc2hpZnRzIGFyZW4ndCB0b28gY2xvc2UgdG9nZXRoZXIgKGFzIGluLCBpdCBjYW4ndCBzaW11bHRhbmVvdXNseSBiZSB0aGVcbiAgICAgY2FzZSB0aGF0IGEgdGltZXpvbmUgc2hpZnQgb2YgWCBob3VycyBvY2N1cnJlZCBsZXNzIHRoYW4gWCBob3VycyBhZ28sICphbmQqXG4gICAgIGEgdGltZXpvbmUgc2hpZnQgb2YgWSBob3VycyB3aWxsIG9jY3VyIGluIGxlc3MgdGhhbiBZIGhvdXJzJyB0aW1lKSAqKVxuICBsZXQgdG9fZGF0ZV9vZmRheV9wcmVjaXNlIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9hZnRlciA9IFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjp0aW1lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCA9IFpvbmUucHJldl9jbG9ja19zaGlmdCB6b25lIH5hdF9vcl9iZWZvcmU6dGltZSBpblxuICAgIGxldCBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnQgPVxuICAgICAgKCogVXNpbmcgW2RhdGVdIGFuZCByYWlzaW5nIG9uIFtOb25lXSBoZXJlIGlzIE9LIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgY2xvY2tcbiAgICAgICAgIHNoaWZ0cyBjYW4ndCBjcm9zcyBkYXRlIGJvdW5kYXJpZXMuIFRoaXMgaXMgdHJ1ZSBpbiBhbGwgY2FzZXMgSSd2ZSBldmVyIGhlYXJkXG4gICAgICAgICBvZiAoYW5kIFtvZl9kYXRlX29mZGF5X3ByZWNpc2VdIHdvdWxkIG5lZWQgcmV2aXNpdGluZyBpZiBpdCB0dXJuZWQgb3V0IHRvIGJlXG4gICAgICAgICBmYWxzZSkgKilcbiAgICAgIG1hdGNoIE9mZGF5LnN1YiBvZmRheSBhbW91bnQgd2l0aFxuICAgICAgfCBTb21lIG9mZGF5IC0+IGBBbHNvX3NraXBwZWQgKGRhdGUsIG9mZGF5KVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiVGltZS50b19kYXRlX29mZGF5X3ByZWNpc2VcIlxuICAgICAgICAgICAgICB+c3Bhbl9zaW5jZV9lcG9jaDoodG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lIDogU3Bhbi50KVxuICAgICAgICAgICAgICAoem9uZSA6IFpvbmUudCldXG4gICAgaW5cbiAgICBsZXQgYW1iaWd1aXR5ID1cbiAgICAgICgqIEVkZ2UgY2FzZXM6IHRoZSBpbnN0YW50IG9mIHRyYW5zaXRpb24gYmVsb25ncyB0byB0aGUgbmV3IHpvbmUgcmVnaW1lLiBTbyBpZiB0aGVcbiAgICAgICAgIGNsb2NrIG1vdmVkIGJ5IGFuIGhvdXIgZXhhY3RseSBvbmUgaG91ciBhZ28sIHRoZXJlJ3Mgbm8gYW1iaWd1aXR5LCBiZWNhdXNlIHRoZVxuICAgICAgICAgaG91ci1hZ28gdGltZSBiZWxvbmdzIHRvIHRoZSBzYW1lIHJlZ2ltZSBhcyB5b3UsIGFuZCBjb252ZXJzZWx5LCBpZiB0aGUgY2xvY2tcbiAgICAgICAgIHdpbGwgbW92ZSBieSBhbiBob3VyIGluIGFuIGhvdXJzJyB0aW1lLCB0aGVyZSAqaXMqIGFtYmlndWl0eS4gSGVuY2UgWz4uXSBmb3JcbiAgICAgICAgIHRoZSBmaXJzdCBjYXNlIGFuZCBbPD0uXSBmb3IgdGhlIHNlY29uZC4gKilcbiAgICAgIG1hdGNoIGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCwgY2xvY2tfc2hpZnRfYWZ0ZXIgd2l0aFxuICAgICAgfCBTb21lIChzdGFydCwgYW1vdW50KSwgXyB3aGVuIGFkZCBzdGFydCAoU3Bhbi5hYnMgYW1vdW50KSA+LiB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgcmVjZW50bHkgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgZm9yd2FyZCByZWNlbnRseTogd2Ugc2tpcHBlZCBhIHRpbWUgKilcbiAgICAgICAgICBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBiYWNrIHJlY2VudGx5OiB0aGlzIGRhdGUvb2ZkYXkgYWxyZWFkeSBoYXBwZW5lZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChzdWIgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8sIFNvbWUgKHN0YXJ0LCBhbW91bnQpIHdoZW4gc3ViIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpIDw9LiB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIGlzIGFib3V0IHRvIHNoaWZ0ICopXG4gICAgICAgIGlmIFNwYW4uKGFtb3VudCA+IHplcm8pXG4gICAgICAgIHRoZW4gKCogY2xvY2sgYWJvdXQgdG8gc2hpZnQgZm9yd2FyZDogbm8gZWZmZWN0ICopXG4gICAgICAgICAgYE9ubHlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgYWJvdXQgdG8gc2hpZnQgYmFjazogdGhpcyBkYXRlL29mZGF5IHdpbGwgYmUgcmVwZWF0ZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFNwYW4uKGFtb3VudCA8IHplcm8pKTtcbiAgICAgICAgICBgQWxzb19hdCAoYWRkIHRpbWUgKFNwYW4uYWJzIGFtb3VudCkpKVxuICAgICAgfCBfIC0+IGBPbmx5XG4gICAgaW5cbiAgICBkYXRlLCBvZmRheSwgYW1iaWd1aXR5XG4gIDs7XG5cbiAgbGV0IGNvbnZlcnQgfmZyb21fdHogfnRvX3R6IGRhdGUgb2ZkYXkgPVxuICAgIGxldCBzdGFydF90aW1lID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpmcm9tX3R6IGRhdGUgb2ZkYXkgaW5cbiAgICB0b19kYXRlX29mZGF5IH56b25lOnRvX3R6IHN0YXJ0X3RpbWVcbiAgOztcblxuICBsZXQgdXRjX29mZnNldCB0IH56b25lID1cbiAgICBsZXQgdXRjX2Vwb2NoID0gWm9uZS5kYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHpvbmUgdCBpblxuICAgIFNwYW4uKCAtIClcbiAgICAgIChEYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB1dGNfZXBvY2gpXG4gICAgICAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KVxuICA7O1xuXG4gIGxldCBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgPVxuICAgIGxldCB1dGNfb2Zmc2V0ID0gdXRjX29mZnNldCB0aW1lIH56b25lIGluXG4gICAgbGV0IGlzX3V0YyA9IFNwYW4uKCA9ICkgdXRjX29mZnNldCBTcGFuLnplcm8gaW5cbiAgICBpZiBpc191dGNcbiAgICB0aGVuIFwiWlwiXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIChpZiBTcGFuLiggPCApIHV0Y19vZmZzZXQgU3Bhbi56ZXJvIHRoZW4gXCItXCIgZWxzZSBcIitcIilcbiAgICAgICAgOyBPZmRheS50b19zdHJpbmdfdHJpbW1lZFxuICAgICAgICAgICAgKE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi5hYnMgdXRjX29mZnNldCkpXG4gICAgICAgIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic19wYXJ0cyB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICA7IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgT2ZkYXkudG9fc3RyaW5nIG9mZGF5OyBvZmZzZXRfc3RyaW5nIF1cbiAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnNfdHJpbW1lZCB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgIFN0cmluZy5jb25jYXRcbiAgICAgIH5zZXA6XCIgXCJcbiAgICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGU7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkIG9mZGF5IF4gb2Zmc2V0X3N0cmluZyBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnMgdGltZSB+em9uZSA9IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAodG9fc3RyaW5nX2Fic19wYXJ0cyB+em9uZSB0aW1lKVxuICBsZXQgdG9fc3RyaW5nX3V0YyB0ID0gdG9fc3RyaW5nX2FicyB0IH56b25lOlpvbmUudXRjXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdfdXRjXG5cbiAgbGV0IHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIHRpbWUgfnpvbmUgPVxuICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlRcIiAodG9fc3RyaW5nX2Fic19wYXJ0cyB+em9uZSB0aW1lKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfdHJpbW1lZCB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgc2VjID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5LnRvX3N0cmluZ190cmltbWVkIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc2VjX3N0cmluZyBzZWNcbiAgOztcblxuICBsZXQgdG9fc2VjX3N0cmluZ193aXRoX3pvbmUgdCB+em9uZSA9IHRvX3NlY19zdHJpbmcgdCB+em9uZSBeIG9mZnNldF9zdHJpbmcgdCB+em9uZVxuXG4gIGxldCB0b19maWxlbmFtZV9zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICBeIFwiX1wiXG4gICAgXiBTdHJpbmcudHIgfnRhcmdldDonOicgfnJlcGxhY2VtZW50OictJyAoT2ZkYXkudG9fc3RyaW5nIG9mZGF5KVxuICA7O1xuXG4gIGxldCBvZl9maWxlbmFtZV9zdHJpbmcgcyB+em9uZSA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonXycgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2UgaW4gZmlsZW5hbWUgc3RyaW5nXCJcbiAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gU3RyaW5nLnRyIH50YXJnZXQ6Jy0nIH5yZXBsYWNlbWVudDonOicgb2ZkYXkgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSB+em9uZVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBpbnZhbGlkX2FyZ2YgXCJUaW1lLm9mX2ZpbGVuYW1lX3N0cmluZyAoJXMpOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICA7O1xuXG4gIGxldCBvZl9sb2NhbGl6ZWRfc3RyaW5nIH56b25lIHN0ciA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzdHIgfm9uOicgJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJubyBzcGFjZSBpbiBkYXRlX29mZGF5IHN0cmluZzogJXNcIiBzdHIpXG4gICAgICB8IFNvbWUgKGRhdGUsIHRpbWUpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIHRpbWUgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgd2l0aFxuICAgIHwgZSAtPiBFeG4ucmVyYWlzZSBlIFwiVGltZS5vZl9sb2NhbGl6ZWRfc3RyaW5nXCJcbiAgOztcblxuICBsZXQgb2NjdXJyZW5jZSBiZWZvcmVfb3JfYWZ0ZXIgdCB+b2ZkYXkgfnpvbmUgPVxuICAgIGxldCBmaXJzdF9ndWVzc19kYXRlID0gdG9fZGF0ZSB0IH56b25lIGluXG4gICAgbGV0IGZpcnN0X2d1ZXNzID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBmaXJzdF9ndWVzc19kYXRlIG9mZGF5IGluXG4gICAgbGV0IGNtcCwgaW5jcmVtZW50ID1cbiAgICAgIG1hdGNoIGJlZm9yZV9vcl9hZnRlciB3aXRoXG4gICAgICB8IGBMYXN0X2JlZm9yZV9vcl9hdCAtPiAoIDw9ICksIC0xXG4gICAgICB8IGBGaXJzdF9hZnRlcl9vcl9hdCAtPiAoID49ICksIDFcbiAgICBpblxuICAgIGlmIGNtcCBmaXJzdF9ndWVzcyB0XG4gICAgdGhlbiBmaXJzdF9ndWVzc1xuICAgIGVsc2Ugb2ZfZGF0ZV9vZmRheSB+em9uZSAoRGF0ZTAuYWRkX2RheXMgZmlyc3RfZ3Vlc3NfZGF0ZSBpbmNyZW1lbnQpIG9mZGF5XG4gIDs7XG5cbiAgbGV0IGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgb2Zmc2V0ID1cbiAgICBsZXQgb2Zmc2V0X2xlbmd0aCA9IFN0cmluZy5sZW5ndGggb2Zmc2V0IGluXG4gICAgaWYgSW50LiggPD0gKSBvZmZzZXRfbGVuZ3RoIDJcbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bMF1cbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bb2Zmc2V0X2xlbmd0aCAtIDFdXG4gICAgdGhlbiBvZmZzZXQgXiBcIjowMFwiXG4gICAgZWxzZSBpZiBDaGFyLiggPSApIG9mZnNldC5bMV0gJzonIHx8IENoYXIuKCA9ICkgb2Zmc2V0LlsyXSAnOidcbiAgICB0aGVuIG9mZnNldFxuICAgIGVsc2UgaWYgSW50LiggPCApIG9mZnNldF9sZW5ndGggMyB8fCBJbnQuKCA+ICkgb2Zmc2V0X2xlbmd0aCA0XG4gICAgdGhlbiBmYWlsd2l0aGYgXCJpbnZhbGlkIG9mZnNldCAlc1wiIG9mZnNldCAoKVxuICAgIGVsc2VcbiAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgWyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IDAgKG9mZnNldF9sZW5ndGggLSAyKVxuICAgICAgICA7IFwiOlwiXG4gICAgICAgIDsgU3RyaW5nLnNsaWNlIG9mZnNldCAob2Zmc2V0X2xlbmd0aCAtIDIpIG9mZnNldF9sZW5ndGhcbiAgICAgICAgXVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBUaW1lX29mX3N0cmluZyBvZiBzdHJpbmcgKiBFeG4udCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGxldCBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBkYXRlLCBvZmRheSwgdHogPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcyB+b246JyAnIHdpdGhcbiAgICAgICAgfCBbIGRheTsgbW9udGg7IHllYXI7IG9mZGF5IF0gLT5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IFsgZGF5OyBcIiBcIjsgbW9udGg7IFwiIFwiOyB5ZWFyIF0sIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBkYXRlOyBvZmRheTsgdHogXSAtPiBkYXRlLCBvZmRheSwgU29tZSB0elxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXkgXSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgcyBdIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonVCcgcyB3aXRoXG4gICAgICAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlcyBvciBUIGZvdW5kXCIpXG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcInRvbyBtYW55IHNwYWNlc1wiXG4gICAgICBpblxuICAgICAgbGV0IG9mZGF5X3RvX3NlYyBvZCA9IFNwYW4udG9fc2VjIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZCkgaW5cbiAgICAgIGxldCBvZmRheSwgdXRjX29mZnNldCA9XG4gICAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgICAgfCBTb21lIF8gLT4gb2ZkYXksIE5vbmVcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgQ2hhci4oID0gKSBvZmRheS5bU3RyaW5nLmxlbmd0aCBvZmRheSAtIDFdICdaJ1xuICAgICAgICAgIHRoZW4gU3RyaW5nLnN1YiBvZmRheSB+cG9zOjAgfmxlbjooU3RyaW5nLmxlbmd0aCBvZmRheSAtIDEpLCBTb21lIDAuXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246JysnIG9mZGF5IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgbCwgU29tZSAob2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246Jy0nIG9mZGF5IHdpdGhcbiAgICAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgICAgbCwgU29tZSAoLTEuICouIG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBvZmRheSwgTm9uZSkpXG4gICAgICBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICB8IFNvbWUgdHogLT4gb2ZfZGF0ZV9vZmRheSB+em9uZTooZmluZF96b25lIHR6KSBkYXRlIG9mZGF5XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIHV0Y19vZmZzZXQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIGxldCB6b25lID0gZGVmYXVsdF96b25lICgpIGluXG4gICAgICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgICAgICAgfCBTb21lIHV0Y19vZmZzZXQgLT5cbiAgICAgICAgICAgbGV0IHV0Y190ID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpab25lLnV0YyBkYXRlIG9mZGF5IGluXG4gICAgICAgICAgIHN1YiB1dGNfdCAoU3Bhbi5vZl9zZWMgdXRjX29mZnNldCkpXG4gICAgd2l0aFxuICAgIHwgZSAtPiByYWlzZSAoVGltZV9vZl9zdHJpbmcgKHMsIGUpKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0IHMgPVxuICAgIGxldCBkZWZhdWx0X3pvbmUgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcInRpbWUgaGFzIG5vIHRpbWUgem9uZSBvciBVVEMgb2Zmc2V0XCIgc10gaW5cbiAgICBsZXQgZmluZF96b25lIHpvbmVfbmFtZSA9XG4gICAgICBmYWlsd2l0aGYgXCJ1bmFibGUgdG8gbG9va3VwIFpvbmUgJXMuICBUcnkgdXNpbmcgQ29yZS5UaW1lLm9mX3N0cmluZ1wiIHpvbmVfbmFtZSAoKVxuICAgIGluXG4gICAgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgc1xuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICBTcGFuLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAgIH5mX2ludmVyc2U6dG9fc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIFNwYW4ucXVpY2tjaGVja19vYnNlcnZlciB+Zjp0b19zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgU3Bhbi5xdWlja2NoZWNrX2dlbmVyYXRvciB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGdlbl9pbmNsIGxvIGhpID1cbiAgICBTcGFuLmdlbl9pbmNsICh0b19zcGFuX3NpbmNlX2Vwb2NoIGxvKSAodG9fc3Bhbl9zaW5jZV9lcG9jaCBoaSlcbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBnZW5fdW5pZm9ybV9pbmNsIGxvIGhpID1cbiAgICBTcGFuLmdlbl91bmlmb3JtX2luY2wgKHRvX3NwYW5fc2luY2VfZXBvY2ggbG8pICh0b19zcGFuX3NpbmNlX2Vwb2NoIGhpKVxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBTcGFuID0gU3Bhbl9mbG9hdFxubW9kdWxlIE9mZGF5ID0gT2ZkYXlfZmxvYXRcblxubW9kdWxlIEFic29sdXRlID0gc3RydWN0XG4gIHR5cGUgdW5kZXJseWluZyA9IEZsb2F0LnRcblxuICBpbmNsdWRlIChcbiAgICBGbG9hdCA6XG4gICAgc2lnXG4gICAgICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHR5cGVyZXBdXG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2NvbW1vbiB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRmxvYXQuT1xuICAgICAgZW5kXG4gICAgZW5kKVxuXG4gICgqIGR1ZSB0byBwcmVjaXNpb24gbGltaXRhdGlvbnMgaW4gZmxvYXQgd2UgY2FuJ3QgZXhwZWN0IGJldHRlciB0aGFuIG1pY3Jvc2Vjb25kXG4gICAgIHByZWNpc2lvbiAqKVxuICBpbmNsdWRlIEZsb2F0LlJvYnVzdF9jb21wYXJlLk1ha2UgKHN0cnVjdFxuICAgICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTZcbiAgICBlbmQpXG5cbiAgbGV0IGRpZmYgdDEgdDIgPSBTcGFuLm9mX3NlYyAodDEgLSB0MilcbiAgbGV0IGFkZCB0IHNwYW4gPSB0ICsuIFNwYW4udG9fc2VjIHNwYW5cbiAgbGV0IHN1YiB0IHNwYW4gPSB0IC0uIFNwYW4udG9fc2VjIHNwYW5cbiAgbGV0IHByZXYgdCA9IEZsb2F0Lm9uZV91bHAgYERvd24gdFxuICBsZXQgbmV4dCB0ID0gRmxvYXQub25lX3VscCBgVXAgdFxuICBsZXQgdG9fc3Bhbl9zaW5jZV9lcG9jaCA9IFNwYW4ub2Zfc2VjXG4gIGxldCBvZl9zcGFuX3NpbmNlX2Vwb2NoID0gU3Bhbi50b19zZWNcbmVuZFxuXG5pbmNsdWRlIEFic29sdXRlXG5cbm1vZHVsZSBEYXRlX2FuZF9vZmRheSA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdFxuXG4gIGxldCBvZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCBzcGFuID0gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgdG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdCA9IFNwYW4ub2Zfc2VjIHRcblxuICBsZXQgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5ID1cbiAgICBsZXQgZGF5cyA9XG4gICAgICBGbG9hdC5vZl9pbnQgKERhdGUwLkRheXMuZGlmZiAoRGF0ZTAuRGF5cy5vZl9kYXRlIGRhdGUpIERhdGUwLkRheXMudW5peF9lcG9jaClcbiAgICBpblxuICAgIChkYXlzICouIDg2NDAwLikgKy4gU3Bhbi50b19zZWMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KVxuICA7O1xuXG4gIGxldCB0b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjID0gc3ViIHJlbGF0aXZlIG9mZnNldF9mcm9tX3V0Y1xuICBsZXQgb2ZfYWJzb2x1dGUgYWJzb2x1dGUgfm9mZnNldF9mcm9tX3V0YyA9IGFkZCBhYnNvbHV0ZSBvZmZzZXRfZnJvbV91dGNcblxuICAoKiBZZWFycyBvdXQgb2YgcmFuZ2UgZm9yIFtEYXRlLmNyZWF0ZV9leG5dLiAqKVxuICBsZXRbQGNvbGRdIGFzc2VydF9pbl9ib3VuZHMgfnNlY19zaW5jZV9lcG9jaCA9XG4gICAgKCogJCBUWj1VVEMgZGF0ZSAtLWRhdGU9QC02MjE2NzIxOTIwMFxuICAgICAgIFNhdCBKYW4gIDEgMDA6MDA6MDAgVVRDIDAwMDAgKilcbiAgICBsZXQgZ210aW1lX2xvd2VyX2JvdW5kID0gLTYyXzE2N18yMTlfMjAwLiBpblxuICAgICgqICQgVFo9VVRDIGRhdGUgLS1kYXRlPUAyNTM0MDIzMDA3OTlcbiAgICAgICBGcmkgRGVjIDMxIDIzOjU5OjU5IFVUQyA5OTk5ICopXG4gICAgbGV0IGdtdGltZV91cHBlcl9ib3VuZCA9IDI1M180MDJfMzAwXzc5OS4gaW5cbiAgICBpZiBGbG9hdC4oID49ICkgc2VjX3NpbmNlX2Vwb2NoIChnbXRpbWVfdXBwZXJfYm91bmQgKy4gMS4pXG4gICAgfHwgRmxvYXQuKCA8ICkgc2VjX3NpbmNlX2Vwb2NoIGdtdGltZV9sb3dlcl9ib3VuZFxuICAgIHRoZW4gZmFpbHdpdGhmIFwiVGltZS5nbXRpbWU6IG91dCBvZiByYW5nZSAoJWYpXCIgc2VjX3NpbmNlX2Vwb2NoICgpXG4gIDs7XG5cbiAgbGV0IHNlY19wZXJfZGF5ID0gSW50NjMub2ZfaW50IDg2XzQwMFxuXG4gIGxldCB0b19kYXlzX2Zyb21fZXBvY2ggdCA9XG4gICAgYXNzZXJ0X2luX2JvdW5kcyB+c2VjX3NpbmNlX2Vwb2NoOnQ7XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94ID0gSW50NjMub2ZfZmxvYXQgdCAvIHNlY19wZXJfZGF5IGluXG4gICAgKCogd2hlbiBbdF0gaXMgbmVnYXRpdmUgdGhlIGludGVnZXIgZGl2aXNpb24gdGhhdCBjYWxjdWxhdGVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICAgICB3aWxsIGxlYXZlIHVzIG9uZSBkYXkgc2hvcnQgYmVjYXVzZSBpdCB0cnVuY2F0ZXMgKGUuZy4gLTEwMCAvIDg2XzQwMCA9IDAgYW5kIHdlXG4gICAgICAgd2FudCAtMSkgLS0gYWRqdXN0IGZvciB0aGF0IGhlcmUuICopXG4gICAgaWYgRmxvYXQuKCA8ICkgdCAoSW50NjMudG9fZmxvYXQgKGRheXNfZnJvbV9lcG9jaF9hcHByb3ggKiBzZWNfcGVyX2RheSkpXG4gICAgdGhlbiBJbnQ2My5wcmVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICBlbHNlIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgOztcblxuICBsZXQgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfaW5fc2VjID0gSW50NjMudG9fZmxvYXQgKGRheXNfZnJvbV9lcG9jaCAqIHNlY19wZXJfZGF5KSBpblxuICAgIGxldCByZW1haW5kZXIgPSB0IC0uIGRheXNfZnJvbV9lcG9jaF9pbl9zZWMgaW5cbiAgICBTcGFuLm9mX3NlYyByZW1haW5kZXIgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gIDs7XG5cbiAgbGV0IGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgIEludDYzLnRvX2ludF9leG4gZGF5c19mcm9tX2Vwb2NoXG4gICAgfD4gRGF0ZTAuRGF5cy5hZGRfZGF5cyBEYXRlMC5EYXlzLnVuaXhfZXBvY2hcbiAgICB8PiBEYXRlMC5EYXlzLnRvX2RhdGVcbiAgOztcblxuICBsZXQgdG9fZGF0ZSB0ID1cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICBkYXRlX29mX2RheXNfZnJvbV9lcG9jaCB+ZGF5c19mcm9tX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHRvX29mZGF5IHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2hcbiAgOztcblxuICBsZXQgdG9fZGF0ZV9vZmRheSB0ID1cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICBsZXQgZGF0ZSA9IGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBsZXQgb2ZkYXkgPSBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoIGluXG4gICAgZGF0ZSwgb2ZkYXlcbiAgOztcbmVuZFxuXG5sZXQgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgPVxuICBpZiBTcGFuLiggPD0gKSBpbnRlcnZhbCBTcGFuLnplcm9cbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJUaW1lLm5leHRfbXVsdGlwbGUgZ290IG5vbnBvc2l0aXZlIGludGVydmFsXCJcbiAgICAgIGludGVydmFsXG4gICAgICBbJXNleHBfb2Y6IFNwYW4udF07XG4gIGxldCBiYXNlX3RvX2FmdGVyID0gZGlmZiBhZnRlciBiYXNlIGluXG4gIGlmIFNwYW4uKCA8ICkgYmFzZV90b19hZnRlciBTcGFuLnplcm9cbiAgdGhlbiBiYXNlICgqIFthZnRlciA8IGJhc2VdLCBjaG9vc2UgW2sgPSAwXS4gKilcbiAgZWxzZSAoXG4gICAgbGV0IG5leHQgPVxuICAgICAgYWRkXG4gICAgICAgIGJhc2VcbiAgICAgICAgKFNwYW4uc2NhbGVcbiAgICAgICAgICAgaW50ZXJ2YWxcbiAgICAgICAgICAgKEZsb2F0LnJvdW5kIH5kaXI6YERvd24gKFNwYW4uKCAvLyApIGJhc2VfdG9fYWZ0ZXIgaW50ZXJ2YWwpKSlcbiAgICBpblxuICAgIGlmIG5leHQgPiBhZnRlciB8fCAoY2FuX2VxdWFsX2FmdGVyICYmIG5leHQgPSBhZnRlcikgdGhlbiBuZXh0IGVsc2UgYWRkIG5leHQgaW50ZXJ2YWwpXG47O1xuXG5sZXQgbmV4dF9tdWx0aXBsZSA/KGNhbl9lcXVhbF9hZnRlciA9IGZhbHNlKSB+YmFzZSB+YWZ0ZXIgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWxcbjs7XG5cbmxldCBwcmV2X211bHRpcGxlID8oY2FuX2VxdWFsX2JlZm9yZSA9IGZhbHNlKSB+YmFzZSB+YmVmb3JlIH5pbnRlcnZhbCAoKSA9XG4gIG5leHRfbXVsdGlwbGVfaW50ZXJuYWxcbiAgICB+Y2FuX2VxdWFsX2FmdGVyOihub3QgY2FuX2VxdWFsX2JlZm9yZSlcbiAgICB+YmFzZVxuICAgIH5hZnRlcjooc3ViIGJlZm9yZSBpbnRlcnZhbClcbiAgICB+aW50ZXJ2YWxcbjs7XG5cbmxldCBub3cgKCkgPVxuICBsZXQgZmxvYXRfbnMgPSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpIHw+IEludDYzLnRvX2Zsb2F0IGluXG4gIG9mX3NwYW5fc2luY2VfZXBvY2ggKFNwYW4ub2Zfc2VjIChmbG9hdF9ucyAqLiAxRS05KSlcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNwYW4gPSBTcGFuLlN0YWJsZVxuICBtb2R1bGUgT2ZkYXkgPSBPZmRheS5TdGFibGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIHR5cGUgU19rZXJuZWxfd2l0aG91dF96b25lID0gVGltZTBfaW50Zi5TXG5tb2R1bGUgdHlwZSBTX2tlcm5lbCA9IFRpbWVfaW50Zi5TXG5cbm1vZHVsZSBab25lX3N0YWJsZSA9IFpvbmUuU3RhYmxlXG5pbmNsdWRlIFRpbWUuTWFrZSAoVGltZV9mbG9hdDApXG5pbmNsdWRlIFRpbWVfZmxvYXQwXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX2Zsb2F0MC5TdGFibGVcbiAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuICBtb2R1bGUgV2l0aF90X29mX3NleHBfYWJzID0gc3RydWN0IGVuZFxuXG4gIG1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgT2ZkYXlcbiAgICBtb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBXaXRoX3V0Y19zZXhwID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2hdXG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodG9fc3RyaW5nX2Fic19wYXJ0cyB0IH56b25lOlpvbmUudXRjIDogc3RyaW5nIGxpc3QpXVxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuXG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICB0cnlcbiAgICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgICB8IFNleHAuTGlzdCBbIFNleHAuQXRvbSBkYXRlOyBTZXhwLkF0b20gb2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUgXSAtPlxuICAgICAgICAgICAgb2Zfc3RyaW5nX2dlblxuICAgICAgICAgICAgICB+ZGVmYXVsdF96b25lOihmdW4gKCkgLT4gWm9uZS51dGMpXG4gICAgICAgICAgICAgIH5maW5kX3pvbmU6KGZ1biBfIC0+XG4gICAgICAgICAgICAgICAgb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3RhYmxlLldpdGhfdXRjLlYyLnRfb2Zfc2V4cDogdW5rbm93biB0aW1lIHpvbmVcIiBzZXhwKVxuICAgICAgICAgICAgICAoZGF0ZSBeIFwiIFwiIF4gb2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUpXG4gICAgICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJUaW1lLlN0YWJsZS5XaXRoX3V0Yy5WMi50X29mX3NleHBcIiBzZXhwXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBPZl9zZXhwX2Vycm9yIF8gYXMgZSAtPiByYWlzZSBlXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgICAgIChzcHJpbnRmIFwiVGltZS5TdGFibGUuV2l0aF91dGMuVjIudF9vZl9zZXhwOiAlc1wiIChFeG4udG9fc3RyaW5nIGUpKVxuICAgICAgICAgICAgc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFNleHBsaWIuU2V4cC50X3NleHBfZ3JhbW1hclxuICAgICAgbGV0IGNvbXBhcmF0b3IgPSBgVXNlX1RpbWVfdW5peFxuXG4gICAgICBtb2R1bGUgTWFwID0gc3RydWN0IGVuZFxuICAgICAgbW9kdWxlIFNldCA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFpvbmUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gICAgaW5jbHVkZSBab25lX3N0YWJsZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2ZkYXkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBPZmRheVxuXG4gIGxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG4gIGxldCBub3cgPSBgVXNlX1RpbWVfdW5peFxuXG4gIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcbmVuZFxuXG5tb2R1bGUgU3BhbiA9IHN0cnVjdFxuICBpbmNsdWRlIFNwYW5cblxuICBsZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxuZW5kXG5cbm1vZHVsZSBab25lID0gc3RydWN0XG4gIGluY2x1ZGUgWm9uZVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxuICBtb2R1bGUgTWFwID0gc3RydWN0IGVuZFxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0IGVuZFxuICBtb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxuICBtb2R1bGUgVGFibGUgPSBzdHJ1Y3QgZW5kXG5cbiAgbGV0ICggPCApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPD0gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoIDw+ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA9ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA+ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA+PSApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IF9fYmluX3JlYWRfdF9fID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGFzY2VuZGluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiZXR3ZWVuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl9yZWFkX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3JlYWRlcl90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl9zaGFwZV90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl9zaXplX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3dyaXRlX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3dyaXRlcl90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGNsYW1wID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGNsYW1wX2V4biA9IGBVc2VfVGltZV91bml4XG4gIGxldCBjb21wYXJhdG9yID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGRlc2NlbmRpbmcgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZXF1YWwgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZmluZCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBmaW5kX2V4biA9IGBVc2VfVGltZV91bml4XG4gIGxldCBoYXNoID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGhhc2hfZm9sZF90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGhhc2hhYmxlID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGluaXQgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaW5pdGlhbGl6ZWRfem9uZXMgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbG9jYWwgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbWF4ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG1pbiA9IGBVc2VfVGltZV91bml4XG4gIGxldCBvZl9zdHJpbmcgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgcHAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdF9vZl9zZXhwID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHRvX3N0cmluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCB2YWxpZGF0ZV9ib3VuZCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB2YWxpZGF0ZV9sYm91bmQgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdmFsaWRhdGVfdWJvdW5kID0gYFVzZV9UaW1lX3VuaXhcbmVuZFxuXG5tb2R1bGUgRXhwb3NlZF9mb3JfdGVzdHMgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgSGFzaF9xdWV1ZSA9IHN0cnVjdCBlbmRcbm1vZHVsZSBIYXNoX3NldCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIFRhYmxlID0gc3RydWN0IGVuZFxuXG5sZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxubGV0IGZvcm1hdCA9IGBVc2VfVGltZV91bml4XG5sZXQgZ2V0X3NleHBfem9uZSA9IGBVc2VfVGltZV91bml4XG5sZXQgaGFzaGFibGUgPSBgVXNlX1RpbWVfdW5peFxubGV0IGludGVycnVwdGlibGVfcGF1c2UgPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX2RhdGVfb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX3N0cmluZ19hYnMgPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX3RtID0gYFVzZV9UaW1lX3VuaXhcbmxldCBwYXJzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgcGF1c2UgPSBgVXNlX1RpbWVfdW5peFxubGV0IHBhdXNlX2ZvcmV2ZXIgPSBgVXNlX1RpbWVfdW5peFxubGV0IHBwID0gYFVzZV9UaW1lX3VuaXhcbmxldCBzZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX3VuaXhcbmxldCBzZXhwX29mX3QgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNleHBfb2ZfdF9hYnMgPSBgVXNlX1RpbWVfdW5peFxubGV0IHRfb2Zfc2V4cCA9IGBVc2VfVGltZV91bml4XG5sZXQgdF9vZl9zZXhwX2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgdG9fZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgdG9fb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfdW5peFxubGV0IHRvX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfdW5peFxuIiwiaW5jbHVkZSBEYXRlMFxuXG5sZXQgb2ZfdGltZSB0aW1lIH56b25lID0gVGltZV9mbG9hdC50b19kYXRlIH56b25lIHRpbWVcbmxldCB0b2RheSB+em9uZSA9IG9mX3RpbWUgKFRpbWVfZmxvYXQubm93ICgpKSB+em9uZVxubGV0IGZvcm1hdCA9IGBVc2VfRGF0ZV91bml4XG5sZXQgb2ZfdG0gPSBgVXNlX0RhdGVfdW5peFxubGV0IHBhcnNlID0gYFVzZV9EYXRlX3VuaXhcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludDYzLk9cblxubGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWVfbnMuU3BhblwiXG5cbnR5cGUgdW5kZXJseWluZyA9IEludDYzLnRcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gSW50LmVxdWFsIFN5cy53b3JkX3NpemVfaW5fYml0cyA2NFxubGV0IHJvdW5kX25lYXJlc3QgPSBGbG9hdC5pbnQ2M19yb3VuZF9uZWFyZXN0X2V4blxubGV0IGZsb2F0IHggPSBJbnQ2My50b19mbG9hdCB4XG5cbigqIFtTcGFuXSBpcyBiYXNpY2FsbHkgYSBbSW50NjNdLiAgSXQgZXZlbiBzaWxlbnRseSBpZ25vcmVzIG92ZXJmbG93LiAqKVxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50NjMudCAoKiBuYW5vc2Vjb25kcyAqKSBbQEBkZXJpdmluZyBoYXNoLCBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG5cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEludDYzLlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCB6ZXJvID0gSW50NjMuemVyb1xuZW5kXG5cbmluY2x1ZGUgVFxub3BlbiBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFBhcnRzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzaWduIDogU2lnbi50XG4gICAgOyBociA6IGludFxuICAgIDsgbWluIDogaW50XG4gICAgOyBzZWMgOiBpbnRcbiAgICA7IG1zIDogaW50XG4gICAgOyB1cyA6IGludFxuICAgIDsgbnMgOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hcl1cbmVuZFxuXG5sZXQgbmV4dCB0ID0gSW50NjMuc3VjYyB0XG5sZXQgcHJldiB0ID0gSW50NjMucHJlZCB0XG5sZXQgbmFub3NlY29uZCA9IEludDYzLm9mX2ludCAxXG5sZXQgbWljcm9zZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBuYW5vc2Vjb25kKVxubGV0IG1pbGxpc2Vjb25kID0gSW50NjMuKG9mX2ludCAxMDAwICogbWljcm9zZWNvbmQpXG5sZXQgc2Vjb25kID0gSW50NjMuKG9mX2ludCAxMDAwICogbWlsbGlzZWNvbmQpXG5sZXQgbWludXRlID0gSW50NjMuKG9mX2ludCA2MCAqIHNlY29uZClcbmxldCBob3VyID0gSW50NjMuKG9mX2ludCA2MCAqIG1pbnV0ZSlcbmxldCBkYXkgPSBJbnQ2My4ob2ZfaW50IDI0ICogaG91cilcblxuKCogQmV5b25kIFttaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZy4ubWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmddLCBub3QgZXZlcnkgbWljcm9zZWNvbmRcbiAgIGNhbiBiZSByZXByZXNlbnRlZCBhcyBhIFtmbG9hdF0gbnVtYmVyIG9mIHNlY29uZHMuIChJbiBmYWN0LCBpdCBpcyBhcm91bmQgMTM1eSwgYnV0IHdlXG4gICBsZWF2ZSBhIHNtYWxsIG1hcmdpbi4pXG5cbiAgIEluIHRoZSBwcmVzZW5jZSBvZiBzaWxlbnRseSBpZ25vcmVkIG92ZXJmbG93LCBub3RlIHRoYXQgW3RdIGlzIG5vdCBhY3R1YWxseSBib3VuZCB0b1xuICAgc3RheSBiZXR3ZWVuIHRoZXNlIGxpbWl0cy4gKilcbmxldCBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IEludDYzLihvZl9pbnQgMTM1ICogb2ZfaW50IDM2NSAqIGRheSlcbmxldCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IEludDYzLm5lZyBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuXG5sZXQgY3JlYXRlXG4gICAgICA/c2lnbjooc2lnbl8gPSBTaWduLlBvcyAoKiByZWJpbmQgc28gbm90IHNoYWRvd2VkIGJ5IFtvcGVuIEludDYzXSBiZWxvdyAqKSlcbiAgICAgID9kYXk6KGRheXMgPSAwKVxuICAgICAgPyhociA9IDApXG4gICAgICA/bWluOihtaW51dGVzID0gMClcbiAgICAgID8oc2VjID0gMClcbiAgICAgID8obXMgPSAwKVxuICAgICAgPyh1cyA9IDApXG4gICAgICA/KG5zID0gMClcbiAgICAgICgpXG4gID1cbiAgbGV0IG9wZW4gSW50NjMgaW5cbiAgbGV0IHQgPVxuICAgIChvZl9pbnQgZGF5cyAqIGRheSlcbiAgICArIChvZl9pbnQgaHIgKiBob3VyKVxuICAgICsgKG9mX2ludCBtaW51dGVzICogbWludXRlKVxuICAgICsgKG9mX2ludCBzZWMgKiBzZWNvbmQpXG4gICAgKyAob2ZfaW50IG1zICogbWlsbGlzZWNvbmQpXG4gICAgKyAob2ZfaW50IHVzICogbWljcm9zZWNvbmQpXG4gICAgKyAob2ZfaW50IG5zICogbmFub3NlY29uZClcbiAgaW5cbiAgbWF0Y2ggc2lnbl8gd2l0aFxuICB8IE5lZyAtPiBuZWcgdFxuICB8IFBvcyB8IFplcm8gLT4gdFxuOztcblxubGV0IHRvX3BhcnRzIHQgPVxuICBsZXQgb3BlbiBJbnQ2MyBpblxuICBsZXQgbWFnID0gYWJzIHQgaW5cbiAgeyBQYXJ0cy5zaWduID0gKGlmIHQgPCB6ZXJvIHRoZW4gTmVnIGVsc2UgaWYgdCA+IHplcm8gdGhlbiBQb3MgZWxzZSBaZXJvKVxuICA7IGhyID0gdG9faW50X2V4biAobWFnIC8gaG91cilcbiAgOyBtaW4gPSB0b19pbnRfZXhuIChyZW0gbWFnIGhvdXIgLyBtaW51dGUpXG4gIDsgc2VjID0gdG9faW50X2V4biAocmVtIG1hZyBtaW51dGUgLyBzZWNvbmQpXG4gIDsgbXMgPSB0b19pbnRfZXhuIChyZW0gbWFnIHNlY29uZCAvIG1pbGxpc2Vjb25kKVxuICA7IHVzID0gdG9faW50X2V4biAocmVtIG1hZyBtaWxsaXNlY29uZCAvIG1pY3Jvc2Vjb25kKVxuICA7IG5zID0gdG9faW50X2V4biAocmVtIG1hZyBtaWNyb3NlY29uZCAvIG5hbm9zZWNvbmQpXG4gIH1cbjs7XG5cbmxldCBvZl9wYXJ0cyB7IFBhcnRzLnNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9ID1cbiAgY3JlYXRlIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnMgKClcbjs7XG5cbmxldCBvZl9ucyBmID0gcm91bmRfbmVhcmVzdCBmXG5sZXQgb2ZfaW50NjNfbnMgaSA9IGlcbmxldCBvZl9pbnRfdXMgaSA9IEludDYzLihvZl9pbnQgaSAqIG1pY3Jvc2Vjb25kKVxubGV0IG9mX2ludF9tcyBpID0gSW50NjMuKG9mX2ludCBpICogbWlsbGlzZWNvbmQpXG5sZXQgb2ZfaW50X3NlYyBpID0gSW50NjMuKG9mX2ludCBpICogc2Vjb25kKVxubGV0IG9mX2ludF9taW4gaSA9IEludDYzLihvZl9pbnQgaSAqIG1pbnV0ZSlcbmxldCBvZl9pbnRfaHIgaSA9IEludDYzLihvZl9pbnQgaSAqIGhvdXIpXG5sZXQgb2ZfaW50X2RheSBpID0gSW50NjMuKG9mX2ludCBpICogZGF5KVxubGV0IG9mX3VzIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IG1pY3Jvc2Vjb25kKVxubGV0IG9mX21zIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IG1pbGxpc2Vjb25kKVxubGV0IG9mX3NlYyBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBzZWNvbmQpXG5sZXQgb2ZfbWluIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IG1pbnV0ZSlcbmxldCBvZl9ociBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBob3VyKVxubGV0IG9mX2RheSBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBkYXkpXG5cbmxldCBvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXNpb24gc2VjID1cbiAgbGV0IHVzID0gcm91bmRfbmVhcmVzdCAoc2VjICouIDFlNikgaW5cbiAgb2ZfaW50NjNfbnMgSW50NjMuKHVzICogb2ZfaW50IDEwMDApXG47O1xuXG5sZXQgb2ZfaW50NjNfc2Vjb25kcyB4ID0geCAqIHNlY29uZFxubGV0IG9mX2ludDMyX3NlY29uZHMgeCA9IG9mX2ludDYzX3NlY29uZHMgKEludDYzLm9mX2ludDMyIHgpXG5cbmxldCB0b19ucyB0ID0gZmxvYXQgdFxubGV0IHRvX2ludDYzX25zIHQgPSB0XG5sZXQgdG9fdXMgdCA9IGZsb2F0IHQgLy4gZmxvYXQgbWljcm9zZWNvbmRcbmxldCB0b19tcyB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaWxsaXNlY29uZFxubGV0IHRvX3NlYyB0ID0gZmxvYXQgdCAvLiBmbG9hdCBzZWNvbmRcbmxldCB0b19taW4gdCA9IGZsb2F0IHQgLy4gZmxvYXQgbWludXRlXG5sZXQgdG9faHIgdCA9IGZsb2F0IHQgLy4gZmxvYXQgaG91clxubGV0IHRvX2RheSB0ID0gZmxvYXQgdCAvLiBmbG9hdCBkYXlcbmxldCB0b19pbnRfdXMgdCA9IEludDYzLih0b19pbnRfZXhuICh0IC8gbWljcm9zZWNvbmQpKVxubGV0IHRvX2ludF9tcyB0ID0gSW50NjMuKHRvX2ludF9leG4gKHQgLyBtaWxsaXNlY29uZCkpXG5sZXQgdG9faW50X3NlYyB0ID0gSW50NjMuKHRvX2ludF9leG4gKHQgLyBzZWNvbmQpKVxubGV0IHRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4gdCA9IHQgLyUgc2Vjb25kXG5sZXQgb2ZfaW50X25zIGkgPSBvZl9pbnQ2M19ucyAoSW50NjMub2ZfaW50IGkpXG5cbmxldCB0b19pbnRfbnMgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biB0IC0+IEludDYzLnRvX2ludF9leG4gKHRvX2ludDYzX25zIHQpXG4gIGVsc2UgZnVuIF8gLT4gZmFpbHdpdGggXCJUaW1lX25zLlNwYW4udG9faW50X25zOiB1bnN1cHBvcnRlZCBvbiAzMmJpdCBtYWNoaW5lc1wiXG47O1xuXG5sZXQgKCArICkgdCB1ID0gSW50NjMuKCArICkgdCB1XG5sZXQgKCAtICkgdCB1ID0gSW50NjMuKCAtICkgdCB1XG5sZXQgYWJzID0gSW50NjMuYWJzXG5sZXQgbmVnID0gSW50NjMubmVnXG5sZXQgc2NhbGUgdCBmID0gcm91bmRfbmVhcmVzdCAoZmxvYXQgdCAqLiBmKVxubGV0IHNjYWxlX2ludDYzIHQgaSA9IEludDYzLiggKiApIHQgaVxubGV0IHNjYWxlX2ludCB0IGkgPSBzY2FsZV9pbnQ2MyB0IChJbnQ2My5vZl9pbnQgaSlcbmxldCBkaXYgPSBJbnQ2My4oIC8lIClcbmxldCAoIC8gKSB0IGYgPSByb3VuZF9uZWFyZXN0IChmbG9hdCB0IC8uIGYpXG5sZXQgKCAvLyApID0gSW50NjMuKCAvLyApXG5sZXQgdG9fcHJvcG9ydGlvbmFsX2Zsb2F0IHQgPSBJbnQ2My50b19mbG9hdCB0XG5cbmxldCBvZl91bml0X29mX3RpbWUgdSA9XG4gIG1hdGNoICh1IDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgfCBOYW5vc2Vjb25kIC0+IG5hbm9zZWNvbmRcbiAgfCBNaWNyb3NlY29uZCAtPiBtaWNyb3NlY29uZFxuICB8IE1pbGxpc2Vjb25kIC0+IG1pbGxpc2Vjb25kXG4gIHwgU2Vjb25kIC0+IHNlY29uZFxuICB8IE1pbnV0ZSAtPiBtaW51dGVcbiAgfCBIb3VyIC0+IGhvdXJcbiAgfCBEYXkgLT4gZGF5XG47O1xuXG5sZXQgdG9fdW5pdF9vZl90aW1lIHQgOiBVbml0X29mX3RpbWUudCA9XG4gIGxldCBhYnNfdCA9IGFicyB0IGluXG4gIGlmIGFic190ID49IGRheVxuICB0aGVuIERheVxuICBlbHNlIGlmIGFic190ID49IGhvdXJcbiAgdGhlbiBIb3VyXG4gIGVsc2UgaWYgYWJzX3QgPj0gbWludXRlXG4gIHRoZW4gTWludXRlXG4gIGVsc2UgaWYgYWJzX3QgPj0gc2Vjb25kXG4gIHRoZW4gU2Vjb25kXG4gIGVsc2UgaWYgYWJzX3QgPj0gbWlsbGlzZWNvbmRcbiAgdGhlbiBNaWxsaXNlY29uZFxuICBlbHNlIGlmIGFic190ID49IG1pY3Jvc2Vjb25kXG4gIHRoZW4gTWljcm9zZWNvbmRcbiAgZWxzZSBOYW5vc2Vjb25kXG47O1xuXG5sZXQgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IHQgPSBTcGFuX2Zsb2F0Lm9mX3NlYyAodG9fc2VjIHQpXG5sZXQgb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IHMgPSBvZl9zZWMgKFNwYW5fZmxvYXQudG9fc2VjIHMpXG5cbm1vZHVsZSBTdGFibGUwID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsXVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICAgIFRpbWVfZmxvYXQuU3RhYmxlLlNwYW4uVjEuc2V4cF9vZl90ICh0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgdClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0X29mX3NleHAgcyA9XG4gICAgICAgIG9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCAoVGltZV9mbG9hdC5TdGFibGUuU3Bhbi5WMS50X29mX3NleHAgcylcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9pbnQ2M19leG4gdCA9IG9mX2ludDYzX25zIHRcbiAgICAgIGxldCB0b19pbnQ2MyB0ID0gdG9faW50NjNfbnMgdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQwID0gc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWxdXG5cbiAgICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID0gSW50NjMuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzXG4gICAgICAgIGxldCBvZl9pbnQ2M19leG4gdCA9IG9mX2ludDYzX25zIHRcbiAgICAgICAgbGV0IHRvX2ludDYzIHQgPSB0b19pbnQ2M19ucyB0XG5cbiAgICAgICAgbW9kdWxlIFRvX3N0cmluZyA9IHN0cnVjdFxuICAgICAgICAgIGxldCBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBpZiBzcGFuX3BhcnRfbWFnbml0dWRlID0gMFxuICAgICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMFxuICAgICAgICAgICAgdGhlbiAxXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMDBcbiAgICAgICAgICAgIHRoZW4gMlxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMV8wMDBcbiAgICAgICAgICAgIHRoZW4gM1xuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTBfMDAwXG4gICAgICAgICAgICB0aGVuIDRcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwMF8wMDBcbiAgICAgICAgICAgIHRoZW4gNVxuICAgICAgICAgICAgZWxzZSBhc3NlcnQgZmFsc2VcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgKCogc3BhbiBwYXJ0IG1hZ25pdHVkZXMgYXJlIGFsd2F5cyA8IDEwMF8wMDAgKilcblxuICAgICAgICAgIGxldCBudW1iZXJfb2ZfZGVjaW1hbF9wbGFjZXNfdG9fd3JpdGUgfmJpbGxpb250aHMgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGFzc2VydCAoYmlsbGlvbnRocyA+PSAwICYmIGJpbGxpb250aHMgPD0gOTk5Xzk5OV85OTkpO1xuICAgICAgICAgICAgaWYgYmlsbGlvbnRocyA9IDBcbiAgICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAgPD4gMFxuICAgICAgICAgICAgdGhlbiA5XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA4XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDdcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDZcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA1XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxXzAwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA0XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMF8wMDBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gM1xuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAwXzAwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiAyXG4gICAgICAgICAgICBlbHNlIDFcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2NoYXIgYnVmIH5wb3MgY2hhciA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgcG9zIGNoYXI7XG4gICAgICAgICAgICBwb3MgKyAxXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV8yX2NoYXJzIGJ1ZiB+cG9zIGNoYXIxIGNoYXIyID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiBwb3MgY2hhcjE7XG4gICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAocG9zICsgMSkgY2hhcjI7XG4gICAgICAgICAgICBwb3MgKyAyXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV9kaWdpdHMgYnVmIH5wb3MgfmRpZ2l0cyBpbnQgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlX2ludDYzIGJ1ZiB+cG9zIH5kaWdpdHMgKEludDYzLm9mX2ludCBpbnQpO1xuICAgICAgICAgICAgcG9zICsgZGlnaXRzXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV9kZWNpbWFscyBidWYgfnBvcyB+ZGVjaW1hbHMgfmJpbGxpb250aHMgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlX2ludDYzXG4gICAgICAgICAgICAgIGJ1ZlxuICAgICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICAgIH5kaWdpdHM6ZGVjaW1hbHNcbiAgICAgICAgICAgICAgKEludDYzLm9mX2ludCAoYmlsbGlvbnRocyAvIEludC5wb3cgMTAgKDkgLSBkZWNpbWFscykpKTtcbiAgICAgICAgICAgIHBvcyArIGRlY2ltYWxzXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0cyBpbnQgc3VmZml4ID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBpZiBkaWdpdHMgPSAwXG4gICAgICAgICAgICB0aGVuIHBvc1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9kaWdpdHMgYnVmIH5wb3MgfmRpZ2l0cyBpbnQgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2NoYXIgYnVmIH5wb3Mgc3VmZml4IGluXG4gICAgICAgICAgICAgIHBvcylcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IG5hbm9zX29mX21pbGxpc2Vjb25kID0gdG9faW50NjNfbnMgbWlsbGlzZWNvbmQgfD4gSW50NjMudG9faW50X2V4blxuICAgICAgICAgIGxldCBuYW5vc19vZl9taWNyb3NlY29uZCA9IHRvX2ludDYzX25zIG1pY3Jvc2Vjb25kIHw+IEludDYzLnRvX2ludF9leG5cbiAgICAgICAgICBsZXQgaW50NjNfNjAgPSBJbnQ2My5vZl9pbnQgNjBcbiAgICAgICAgICBsZXQgaW50NjNfMjQgPSBJbnQ2My5vZl9pbnQgMjRcblxuICAgICAgICAgICgqIFVuaXRzIG9mIHNlY29uZHMgYW5kIHNtYWxsZXIgY2FuIGJlIHdyaXR0ZW4gaW4gZGVjaW1hbCBub3RhdGlvbiB3aXRob3V0XG4gICAgICAgICAgICAgd29ycnlpbmcgYWJvdXQgbm9uLXBvd2VyLW9mLXRlbiBmYWN0b3JzLiAqKVxuICAgICAgICAgIG1vZHVsZSBEZWNpbWFsX3VuaXQgPSBzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICAgIHwgU2Vjb25kXG4gICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgfCBOb25lXG4gICAgICAgICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICAgICAgICBsZXQgY3JlYXRlIH5zIH5ucyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGlmIHMgPiAwXG4gICAgICAgICAgICAgIHRoZW4gU2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbnMgPj0gbmFub3Nfb2ZfbWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgdGhlbiBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIG5zID49IG5hbm9zX29mX21pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIHRoZW4gTWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBucyA+PSAxXG4gICAgICAgICAgICAgIHRoZW4gTmFub3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIE5vbmVcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCBpbnRlZ2VyIHQgfnMgfm5zID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgIHwgU2Vjb25kIC0+IHNcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiBucyAvIG5hbm9zX29mX21pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gbnMgLyBuYW5vc19vZl9taWNyb3NlY29uZFxuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gbnNcbiAgICAgICAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCBiaWxsaW9udGhzIHQgfm5zID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgIHwgU2Vjb25kIC0+IG5zXG4gICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbnMgJSBuYW5vc19vZl9taWxsaXNlY29uZCAqIDFfMDAwXG4gICAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gbnMgJSBuYW5vc19vZl9taWNyb3NlY29uZCAqIDFfMDAwXzAwMFxuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gMFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gMFxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGxlbmd0aCB0IH5kaWdpdHMgfmRlY2ltYWxzID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19sZW4gPVxuICAgICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICAgIHwgU2Vjb25kIC0+IGRpZ2l0cyArIDFcbiAgICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIHwgTWljcm9zZWNvbmQgfCBOYW5vc2Vjb25kIC0+IGRpZ2l0cyArIDJcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gMFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbHNfbGVuID0gaWYgZGVjaW1hbHMgPiAwIHRoZW4gZGVjaW1hbHMgKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICBkaWdpdHNfbGVuICsgZGVjaW1hbHNfbGVuXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgd3JpdGVfc3VmZml4IHQgYnVmIH5wb3MgPVxuICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gd3JpdGVfY2hhciBidWYgfnBvcyAncydcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiB3cml0ZV8yX2NoYXJzIGJ1ZiB+cG9zICdtJyAncydcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiB3cml0ZV8yX2NoYXJzIGJ1ZiB+cG9zICd1JyAncydcbiAgICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgJ24nICdzJ1xuICAgICAgICAgICAgICB8IE5vbmUgLT4gcG9zXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgd3JpdGUgdCBidWYgfnBvcyB+aW50ZWdlciB+ZGlnaXRzIH5iaWxsaW9udGhzIH5kZWNpbWFscyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGlmIGRpZ2l0cyA9IDBcbiAgICAgICAgICAgICAgdGhlbiBwb3NcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2RpZ2l0cyBidWYgfnBvcyBpbnRlZ2VyIH5kaWdpdHMgaW5cbiAgICAgICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgICAgIGlmIGRlY2ltYWxzID0gMFxuICAgICAgICAgICAgICAgICAgdGhlbiBwb3NcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfY2hhciBidWYgfnBvcyAnLicgaW5cbiAgICAgICAgICAgICAgICAgICAgd3JpdGVfZGVjaW1hbHMgYnVmIH5wb3MgfmJpbGxpb250aHMgfmRlY2ltYWxzKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgd3JpdGVfc3VmZml4IHQgYnVmIH5wb3MpXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgICAgIGlmIGVxdWFsIHQgemVyb1xuICAgICAgICAgICAgdGhlbiBcIjBzXCJcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgaXNfbmVnYXRpdmUgPSB0IDwgemVybyBpblxuICAgICAgICAgICAgICBsZXQgc2Vjb25kcyA9IEludDYzLiggLyApICh0b19pbnQ2M19ucyB0KSAodG9faW50NjNfbnMgc2Vjb25kKSBpblxuICAgICAgICAgICAgICBsZXQgbnMgPVxuICAgICAgICAgICAgICAgIEludDYzLnJlbSAodG9faW50NjNfbnMgdCkgKHRvX2ludDYzX25zIHNlY29uZCkgfD4gSW50NjMudG9faW50X2V4blxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgc2Vjb25kcyA9IEludDYzLmFicyBzZWNvbmRzIGluXG4gICAgICAgICAgICAgIGxldCBucyA9IEludC5hYnMgbnMgaW5cbiAgICAgICAgICAgICAgbGV0IHMgPSBJbnQ2My5yZW0gc2Vjb25kcyBpbnQ2M182MCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBtaW51dGVzID0gSW50NjMuKCAvICkgc2Vjb25kcyBpbnQ2M182MCBpblxuICAgICAgICAgICAgICBsZXQgbSA9IEludDYzLnJlbSBtaW51dGVzIGludDYzXzYwIHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IGhvdXJzID0gSW50NjMuKCAvICkgbWludXRlcyBpbnQ2M182MCBpblxuICAgICAgICAgICAgICBsZXQgaCA9IEludDYzLnJlbSBob3VycyBpbnQ2M18yNCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBkID0gSW50NjMuKCAvICkgaG91cnMgaW50NjNfMjQgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX2QgPSBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOmQgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9oID0gbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTpoIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfbSA9IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6bSBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0ID0gRGVjaW1hbF91bml0LmNyZWF0ZSB+cyB+bnMgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdF9pbnRlZ2VyID0gRGVjaW1hbF91bml0LmludGVnZXIgZGVjaW1hbF91bml0IH5zIH5ucyBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0X2JpbGxpb250aHMgPSBEZWNpbWFsX3VuaXQuYmlsbGlvbnRocyBkZWNpbWFsX3VuaXQgfm5zIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfZGVjaW1hbF91bml0ID1cbiAgICAgICAgICAgICAgICBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOmRlY2ltYWxfdW5pdF9pbnRlZ2VyXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsc19vZl9kZWNpbWFsX3VuaXQgPVxuICAgICAgICAgICAgICAgIG51bWJlcl9vZl9kZWNpbWFsX3BsYWNlc190b193cml0ZSB+YmlsbGlvbnRoczpkZWNpbWFsX3VuaXRfYmlsbGlvbnRoc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgc3RyaW5nX2xlbmd0aCA9XG4gICAgICAgICAgICAgICAgbGV0IHNpZ25fbGVuID0gaWYgaXNfbmVnYXRpdmUgdGhlbiAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBkX2xlbiA9IGlmIGRpZ2l0c19vZl9kID4gMCB0aGVuIGRpZ2l0c19vZl9kICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgaF9sZW4gPSBpZiBkaWdpdHNfb2ZfaCA+IDAgdGhlbiBkaWdpdHNfb2ZfaCArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IG1fbGVuID0gaWYgZGlnaXRzX29mX20gPiAwIHRoZW4gZGlnaXRzX29mX20gKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXRfbGVuID1cbiAgICAgICAgICAgICAgICAgIERlY2ltYWxfdW5pdC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICAgIH5kaWdpdHM6ZGlnaXRzX29mX2RlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgICAgICB+ZGVjaW1hbHM6ZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBzaWduX2xlbiArIGRfbGVuICsgaF9sZW4gKyBtX2xlbiArIGRlY2ltYWxfdW5pdF9sZW5cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYXNzZXJ0IChzdHJpbmdfbGVuZ3RoID4gMCk7XG4gICAgICAgICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgc3RyaW5nX2xlbmd0aCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gMCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gaWYgaXNfbmVnYXRpdmUgdGhlbiB3cml0ZV9jaGFyIGJ1ZiB+cG9zICctJyBlbHNlIHBvcyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2QgZCAnZCcgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9oIGggJ2gnIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfbSBtICdtJyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgICBEZWNpbWFsX3VuaXQud3JpdGVcbiAgICAgICAgICAgICAgICAgIGRlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgICAgYnVmXG4gICAgICAgICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICAgICAgICB+aW50ZWdlcjpkZWNpbWFsX3VuaXRfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgfmRpZ2l0czpkaWdpdHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICB+YmlsbGlvbnRoczpkZWNpbWFsX3VuaXRfYmlsbGlvbnRoc1xuICAgICAgICAgICAgICAgICAgfmRlY2ltYWxzOmRlY2ltYWxzX29mX2RlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhc3NlcnQgKHBvcyA9IHN0cmluZ19sZW5ndGgpO1xuICAgICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZilcbiAgICAgICAgICA7O1xuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gVG9fc3RyaW5nLnRvX3N0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBPZl9zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgICAgICAoKiBXZSBkbyBjb21wdXRhdGlvbnMgdXNpbmcgbmVnYXRpdmUgbnVtYmVycyBldmVyeXdoZXJlIGFuZCB0ZXN0IGFnYWluc3RcbiAgICAgICAgICAgICB0aGluZ3MgcmVsYXRlZCB0byBbSW50NjMubWluX3ZhbHVlXSByYXRoZXIgdGhhbiB1c2luZyBwb3NpdGl2ZSBudW1iZXJzXG4gICAgICAgICAgICAgYW5kIHRlc3RpbmcgYWdhaW5zdCB0aGluZ3MgcmVsYXRlZCB0byBbSW50NjMubWF4X3ZhbHVlXSBiZWNhdXNlIHRoZVxuICAgICAgICAgICAgIG5lZ2F0aXZlIGludGVnZXIgcmFuZ2UgaXMgb25lIHdpZGVyIHRoYW4gdGhlIHBvc2l0aXZlIGludGVnZXIgcmFuZ2VcbiAgICAgICAgICAgICAoLTIqKjYzIHZzIDIqKjYzLTEpLCBhbmQgd2UgbmVlZCB0aGF0IHRvIGJlIGFibGUgdG8gaGFuZGxlIEludDYzLm1pbl92YWx1ZVxuICAgICAgICAgICAgIG5pY2VseS4gKilcblxuICAgICAgICAgIGxldCBpbnQ2M18xMCA9IEludDYzLm9mX2ludCAxMFxuICAgICAgICAgIGxldCBtaW5fbXVsdDEwX3dpdGhvdXRfdW5kZXJmbG93ID0gSW50NjMuKG1pbl92YWx1ZSAvIGludDYzXzEwKVxuXG4gICAgICAgICAgbGV0W0Bjb2xkXSBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbiA9XG4gICAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICAgIFwiVGltZV9ucy5TcGFuLm9mX3N0cmluZzogaW52YWxpZCBzdHJpbmdcIlxuICAgICAgICAgICAgICAgICAgKHN0cmluZyA6IHN0cmluZylcbiAgICAgICAgICAgICAgICAgIChyZWFzb24gOiBzdHJpbmcpXVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICAoKiBBc3N1bWVzIHggYW5kIHkgYXJlIGJvdGggbm9ucG9zaXRpdmUgKilcbiAgICAgICAgICBsZXQgYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgeCB5ID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgICAgICAgIGxldCBzdW0gPSB4ICsgeSBpblxuICAgICAgICAgICAgaWYgc3VtID4geFxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNwYW4gd291bGQgYmUgb3V0c2lkZSBvZiBpbnQ2MyByYW5nZVwiO1xuICAgICAgICAgICAgc3VtXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBhZGRfbmVnX2RpZ2l0IH5zdHJpbmcgaW50NjMgY2hhciA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICAgICAgICBsZXQgZGlnaXQgPSBJbnQ2My5vZl9pbnQgKENoYXIuZ2V0X2RpZ2l0X2V4biBjaGFyKSBpblxuICAgICAgICAgICAgaWYgaW50NjMgPCBtaW5fbXVsdDEwX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCI7XG4gICAgICAgICAgICBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyAoaW50NjMgKiBpbnQ2M18xMCkgKC1kaWdpdClcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IG1pbl9mYWN0b3Jfb2Ygc3BhbiA9IEludDYzLiggLyApIEludDYzLm1pbl92YWx1ZSAodG9faW50NjNfbnMgc3BhbilcbiAgICAgICAgICBsZXQgbWluX2RheXNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIGRheVxuICAgICAgICAgIGxldCBtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIGhvdXJcbiAgICAgICAgICBsZXQgbWluX21pbnV0ZXNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIG1pbnV0ZVxuICAgICAgICAgIGxldCBtaW5fc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2Ygc2Vjb25kXG4gICAgICAgICAgbGV0IG1pbl9taWxsaXNlY29uZHNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIG1pbGxpc2Vjb25kXG4gICAgICAgICAgbGV0IG1pbl9taWNyb3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIG1pY3Jvc2Vjb25kXG4gICAgICAgICAgbGV0IG1pbl9uYW5vc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbmFub3NlY29uZFxuXG4gICAgICAgICAgbGV0IG1pbl93aXRob3V0X3VuZGVyZmxvd19vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lID1cbiAgICAgICAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgICAgICAgfCBEYXkgLT4gbWluX2RheXNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgSG91ciAtPiBtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTWludXRlIC0+IG1pbl9taW51dGVzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IFNlY29uZCAtPiBtaW5fc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiBtaW5fbWlsbGlzZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IG1pbl9taWNyb3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiBtaW5fbmFub3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IG5lZ2F0aXZlX3BhcnRcbiAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICB+bmVnX2ludGVnZXJcbiAgICAgICAgICAgICAgICB+ZGVjaW1hbF9wb3NcbiAgICAgICAgICAgICAgICB+ZW5kX3Bvc1xuICAgICAgICAgICAgICAgIH51bml0X29mX3RpbWVcbiAgICAgICAgICAgICAgICB+cm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmdcbiAgICAgICAgICAgID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBsZXQgc2NhbGUgPSB0b19pbnQ2M19ucyAob2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSkgaW5cbiAgICAgICAgICAgIGxldCBtaW5fd2l0aG91dF91bmRlcmZsb3cgPVxuICAgICAgICAgICAgICBtaW5fd2l0aG91dF91bmRlcmZsb3dfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIEludDYzLiggPCApIG5lZ19pbnRlZ2VyIG1pbl93aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNwYW4gd291bGQgYmUgb3V0c2lkZSBvZiBpbnQ2MyByYW5nZVwiO1xuICAgICAgICAgICAgbGV0IG5lZ19pbnRlZ2VyX25zID0gSW50NjMuKCAqICkgbmVnX2ludGVnZXIgc2NhbGUgaW5cbiAgICAgICAgICAgIGxldCBmcmFjdGlvbl9wb3MgPSBkZWNpbWFsX3BvcyArIDEgaW5cbiAgICAgICAgICAgIGlmIGZyYWN0aW9uX3BvcyA+PSBlbmRfcG9zXG4gICAgICAgICAgICB0aGVuIG5lZ19pbnRlZ2VyX25zXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfbnMgPVxuICAgICAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLnJlYWRfaW50NjNfZGVjaW1hbFxuICAgICAgICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICAgICAgICB+cG9zOmZyYWN0aW9uX3Bvc1xuICAgICAgICAgICAgICAgICAgfnNjYWxlXG4gICAgICAgICAgICAgICAgICB+ZGVjaW1hbHM6KGVuZF9wb3MgLSBmcmFjdGlvbl9wb3MpXG4gICAgICAgICAgICAgICAgICB+YWxsb3dfdW5kZXJzY29yZTp0cnVlXG4gICAgICAgICAgICAgICAgICB+cm91bmRfdGllczpyb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyBuZWdfaW50ZWdlcl9ucyAoSW50NjMuKCB+LSApIGRlY2ltYWxfbnMpKVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgbGV0IG5lZ19ucyA9IHJlZiBJbnQ2My56ZXJvIGluXG4gICAgICAgICAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICAgICAgICAgICAgaWYgbGVuID0gMCB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZW1wdHkgc3RyaW5nXCI7XG4gICAgICAgICAgICBsZXQgaXNfbmVnYXRpdmUgPVxuICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgICAgICAgIHwgJy0nIC0+XG4gICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICB8ICcrJyAtPlxuICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZyA6IERpZ2l0X3N0cmluZ19oZWxwZXJzLlJvdW5kLnQgPVxuICAgICAgICAgICAgICAoKiBVbHRpbWF0ZWx5LCB3ZSBhbHdheXMgcm91bmQgcGFyc2VkIHNwYW5zIHRvd2FyZHMgcG9zaXRpdmUgaW5maW5pdHkgd2hlblxuICAgICAgICAgICAgICAgICB0aGUgbmVhcmVzdCByb3VuZCBucyBhcmUgZXF1aWRpc3RhbnQuIEZvciBleGFtcGxlLCBcIjEuNW5zXCIgaXMgcmVhZCBhc1xuICAgICAgICAgICAgICAgICAyLjBucywgYW5kIFwiLTEuNW5zXCIgaXMgcmVhZCBhcyAtMW5zLiBTaW5jZSB3ZSByZWFkIGFic29sdXRlIHZhbHVlcyBiZWZvcmVcbiAgICAgICAgICAgICAgICAgYXBwbHlpbmcgdGhlIHNpZ24sIHdlIG11c3QgY2hvb3NlIG91ciByb3VuZGluZyBkaXJlY3Rpb24gYmFzZWQgb24gdGhlXG4gICAgICAgICAgICAgICAgIHNpZ24uIFJvdW5kaW5nIGRlY2ltYWwgdmFsdWVzIGhhcHBlbnMgYmVmb3JlIG5lZ2F0aW5nIHRoZWlyIG1hZ25pdHVkZS4gKilcbiAgICAgICAgICAgICAgbWF0Y2ggaXNfbmVnYXRpdmUgd2l0aFxuICAgICAgICAgICAgICB8IGZhbHNlIC0+IFRvd2FyZF9wb3NpdGl2ZV9pbmZpbml0eVxuICAgICAgICAgICAgICB8IHRydWUgLT4gVG93YXJkX25lZ2F0aXZlX2luZmluaXR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogTG9vcCBvdmVyIHBhcnRzLCBsaWtlIFwiNW1cIiBpbiBcIjFoNW0zMHNcIiAqKVxuICAgICAgICAgICAgd2hpbGUgIXBvcyA8IGxlbiBkb1xuICAgICAgICAgICAgICBsZXQgaGFzX2RpZ2l0ID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgICAgIGxldCBuZWdfaW50ZWdlciA9XG4gICAgICAgICAgICAgICAgbGV0IGkgPSByZWYgSW50NjMuemVybyBpblxuICAgICAgICAgICAgICAgIGxldCBlbmRfb2ZfZGlnaXRzID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgICAgICAgd2hpbGUgIXBvcyA8IGxlbiAmJiBub3QgIWVuZF9vZl9kaWdpdHMgZG9cbiAgICAgICAgICAgICAgICAgIGxldCBjID0gU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3MgaW5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICAgICAgICAgIGkgOj0gYWRkX25lZ19kaWdpdCB+c3RyaW5nICFpIGM7XG4gICAgICAgICAgICAgICAgICAgIGhhc19kaWdpdCA6PSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCAnXycgLT4gaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBlbmRfb2ZfZGlnaXRzIDo9IHRydWVcbiAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICFpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3BvcyA9ICFwb3MgaW5cbiAgICAgICAgICAgICAgaWYgIXBvcyA8IGxlbiAmJiBDaGFyLmVxdWFsICcuJyAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3MpXG4gICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgIGxldCBlbmRfb2ZfZGVjaW1hbHMgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICAgICAgICB3aGlsZSAhcG9zIDwgbGVuICYmIG5vdCAhZW5kX29mX2RlY2ltYWxzIGRvXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFzX2RpZ2l0IDo9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8ICdfJyAtPiBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCBfIC0+IGVuZF9vZl9kZWNpbWFscyA6PSB0cnVlXG4gICAgICAgICAgICAgICAgZG9uZSk7XG4gICAgICAgICAgICAgIGxldCBlbmRfcG9zID0gIXBvcyBpblxuICAgICAgICAgICAgICBpZiBub3QgIWhhc19kaWdpdFxuICAgICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwibm8gZGlnaXRzIGJlZm9yZSB1bml0IHN1ZmZpeFwiO1xuICAgICAgICAgICAgICBsZXQgdW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQgPVxuICAgICAgICAgICAgICAgIGlmICFwb3MgKyAxIDwgbGVuICYmIENoYXIuZXF1YWwgJ3MnIChTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgKCFwb3MgKyAxKSlcbiAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJ20nIC0+XG4gICAgICAgICAgICAgICAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgICAgICAgICAgICAgICAgTWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgJ3UnIC0+XG4gICAgICAgICAgICAgICAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgICAgICAgICAgICAgICAgTWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgJ24nIC0+XG4gICAgICAgICAgICAgICAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgICAgICAgICAgICAgICAgTmFub3NlY29uZFxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwidW5wYXJzZWFibGUgdW5pdCBzdWZmaXhcIilcbiAgICAgICAgICAgICAgICBlbHNlIGlmICFwb3MgPCBsZW5cbiAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJ2QnIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBEYXlcbiAgICAgICAgICAgICAgICAgIHwgJ2gnIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBIb3VyXG4gICAgICAgICAgICAgICAgICB8ICdtJyAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgTWludXRlXG4gICAgICAgICAgICAgICAgICB8ICdzJyAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgU2Vjb25kXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJ1bnBhcnNlYWJsZSB1bml0IHN1ZmZpeFwiKVxuICAgICAgICAgICAgICAgIGVsc2UgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJubyB1bml0IHN1ZmZpeCBhZnRlciBkaWdpdHNcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbmVnX25hbm9zX29mX3BhcnQgPVxuICAgICAgICAgICAgICAgIG5lZ2F0aXZlX3BhcnRcbiAgICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgICAgfm5lZ19pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICB+ZGVjaW1hbF9wb3NcbiAgICAgICAgICAgICAgICAgIH5lbmRfcG9zXG4gICAgICAgICAgICAgICAgICB+dW5pdF9vZl90aW1lXG4gICAgICAgICAgICAgICAgICB+cm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmdcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbmVnX25zIDo9IGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nICFuZWdfbnMgbmVnX25hbm9zX29mX3BhcnRcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBsZXQgbnMgPVxuICAgICAgICAgICAgICBpZiBpc19uZWdhdGl2ZVxuICAgICAgICAgICAgICB0aGVuICFuZWdfbnNcbiAgICAgICAgICAgICAgZWxzZSBpZiBJbnQ2My4oID0gKSAhbmVnX25zIEludDYzLm1pbl92YWx1ZVxuICAgICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCJcbiAgICAgICAgICAgICAgZWxzZSBJbnQ2My4oIH4tICkgIW5lZ19uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG9mX2ludDYzX25zIG5zXG4gICAgICAgICAgOztcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbGV0IG9mX3N0cmluZyA9IE9mX3N0cmluZy5vZl9zdHJpbmdcbiAgICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICAgIHwgU2V4cC5BdG9tIHggLT5cbiAgICAgICAgICAgICh0cnkgb2Zfc3RyaW5nIHggd2l0aFxuICAgICAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzZXhwKVxuICAgICAgICAgIHwgU2V4cC5MaXN0IF8gLT5cbiAgICAgICAgICAgIG9mX3NleHBfZXJyb3IgXCJUaW1lX25zLlNwYW4uU3RhYmxlLlYyLnRfb2Zfc2V4cDogc2V4cCBtdXN0IGJlIGFuIEF0b21cIiBzZXhwXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVDBcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVDApXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxub3BlbiBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IFN0YWJsZTBcbmVuZFxuXG5sZXQgdG9fc3RyaW5nID0gU3RhYmxlLlYyLnRvX3N0cmluZ1xubGV0IG9mX3N0cmluZyA9IFN0YWJsZS5WMi5vZl9zdHJpbmdcbmxldCBzZXhwX29mX3QgPSBTdGFibGUuVjIuc2V4cF9vZl90XG5sZXQgdF9vZl9zZXhwID0gU3RhYmxlLlYyLnRfb2Zfc2V4cFxubGV0IHRfc2V4cF9ncmFtbWFyID0gU3RhYmxlLlYyLnRfc2V4cF9ncmFtbWFyXG5cbm1vZHVsZSBBbHRlcm5hdGVfc2V4cCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG5lbmRcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbigqIEZ1bmN0aW9ucyByZXF1aXJlZCBieSBbUm9idXN0bHlfY29tcGFyYWJsZV06IGFsbG93cyBmb3IgW3JvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZV1cbiAgIGdyYW51bGFyaXR5LlxuXG4gICBBIG1pY3Jvc2Vjb25kIGlzIGEgcmVhc29uYWJsZSBncmFudWxhcml0eSBiZWNhdXNlIHRoZXJlIGlzIHZlcnkgbGl0dGxlIG5ldHdvcmtcbiAgIGFjdGl2aXR5IHRoYXQgY2FuIGJlIG1lYXN1cmVkIHRvIHN1Yi1taWNyb3NlY29uZCByZXNvbHV0aW9uLiAqKVxubGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IG1pY3Jvc2Vjb25kXG5sZXQgKCA+PS4gKSB0IHUgPSB0ID49IEludDYzLih1IC0gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPD0uICkgdCB1ID0gdCA8PSBJbnQ2My4odSArIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSlcbmxldCAoID0uICkgdCB1ID0gSW50NjMuKGFicyAodCAtIHUpKSA8PSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbmxldCAoID4uICkgdCB1ID0gdCA+IEludDYzLih1ICsgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPC4gKSB0IHUgPSB0IDwgSW50NjMuKHUgLSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA8Pi4gKSB0IHUgPSBJbnQ2My4oYWJzICh0IC0gdSkpID4gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG5sZXQgcm9idXN0bHlfY29tcGFyZSB0IHUgPSBpZiB0IDwuIHUgdGhlbiAtMSBlbHNlIGlmIHQgPi4gdSB0aGVuIDEgZWxzZSAwXG5cbigqIFdlIGRvbid0IGp1c3QgY29udmVydCB0byBbVGltZS5TcGFuLnRdIGFuZCB1c2UgdGhlIGNvbnZlcnNpb24gdGhlcmUgYmVjYXVzZSBvdXJcbiAgIFt0b19zcGFuXSBjb252ZXJzaW9uIGlzIGxpbWl0ZWQgdG8gbWljcm9zZWNvbmQgcHJlY2lzaW9uLiAqKVxubGV0IHRvX3N0cmluZ19odW1cbiAgICAgID8oZGVsaW1pdGVyID0gJ18nKVxuICAgICAgPyhkZWNpbWFscyA9IDMpXG4gICAgICA/KGFsaWduX2RlY2ltYWwgPSBmYWxzZSlcbiAgICAgID91bml0X29mX3RpbWVcbiAgICAgIHRcbiAgPVxuICBsZXQgZmxvYXQsIHN1ZmZpeCA9XG4gICAgbWF0Y2ggT3B0aW9uLnZhbHVlIHVuaXRfb2ZfdGltZSB+ZGVmYXVsdDoodG9fdW5pdF9vZl90aW1lIHQpIHdpdGhcbiAgICB8IERheSAtPiB0b19kYXkgdCwgXCJkXCJcbiAgICB8IEhvdXIgLT4gdG9faHIgdCwgXCJoXCJcbiAgICB8IE1pbnV0ZSAtPiB0b19taW4gdCwgXCJtXCJcbiAgICB8IFNlY29uZCAtPiB0b19zZWMgdCwgXCJzXCJcbiAgICB8IE1pbGxpc2Vjb25kIC0+IHRvX21zIHQsIFwibXNcIlxuICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdCwgXCJ1c1wiXG4gICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHQsIFwibnNcIlxuICBpblxuICBsZXQgcHJlZml4ID1cbiAgICBGbG9hdC50b19zdHJpbmdfaHVtIGZsb2F0IH5kZWxpbWl0ZXIgfmRlY2ltYWxzIH5zdHJpcF96ZXJvOihub3QgYWxpZ25fZGVjaW1hbClcbiAgaW5cbiAgbGV0IHN1ZmZpeCA9XG4gICAgaWYgYWxpZ25fZGVjaW1hbCAmJiBJbnQuKCA9ICkgKFN0cmluZy5sZW5ndGggc3VmZml4KSAxIHRoZW4gc3VmZml4IF4gXCIgXCIgZWxzZSBzdWZmaXhcbiAgaW5cbiAgcHJlZml4IF4gc3VmZml4XG47O1xuXG5sZXQgc2luY2VfdW5peF9lcG9jaCAoKSA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgfD4gb2ZfaW50NjNfbnNcblxubGV0IHJhbmRvbSA/c3RhdGUgKCkgPVxuICBJbnQ2My5yYW5kb20gP3N0YXRlIChtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyArIEludDYzLm9uZSlcbiAgLSBJbnQ2My5yYW5kb20gP3N0YXRlIChuZWcgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKyBJbnQ2My5vbmUpXG47O1xuXG5sZXQgcmFuZG9taXplID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCB+cGVyY2VudCA9XG4gIFNwYW5faGVscGVycy5yYW5kb21pemUgdCBzdGF0ZSB+cGVyY2VudCB+c2NhbGVcbjs7XG5cbmxldCB0b19zaG9ydF9zdHJpbmcgdCA9XG4gIGxldCAoeyBzaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfSA6IFBhcnRzLnQpID0gdG9fcGFydHMgdCBpblxuICBTcGFuX2hlbHBlcnMuc2hvcnRfc3RyaW5nIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnNcbjs7XG5cbmxldCBnZW5faW5jbCA9IEludDYzLmdlbl9pbmNsXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEludDYzLmdlbl91bmlmb3JtX2luY2xcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBtb2R1bGVfbmFtZVxuICBlbmQpXG5cbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIGVuZClcblxudHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdGFibGUuVjIuY29tcGFyYXRvcl93aXRuZXNzXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBTdGFibGUuVjIuY29tcGFyYXRvclxuICBlbmQpXG5cbigqIHJlLWluY2x1ZGUgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYW5kIGl0cyBjb21wYXJpc29ucyB0byBzaGFkb3cgdGhlXG4gICB1bi1pbmxpbmVhYmxlIG9uZXMgZnJvbSBbQ29tcGFyYWJsZV0gKilcbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBULlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGhhbGZfbWljcm9zZWNvbmQgPSBJbnQ2My5vZl9pbnQgNTAwXG5sZXQgbmVhcmVzdF9taWNyb3NlY29uZCB0ID0gSW50NjMuKCh0b19pbnQ2M19ucyB0ICsgaGFsZl9taWNyb3NlY29uZCkgLyUgb2ZfaW50IDEwMDApXG5cbmxldFtAY29sZF0gaW52YWxpZF9yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlNwYW4udCBleGNlZWRzIGxpbWl0c1wiXG4gICAgICAgICh0IDogdClcbiAgICAgICAgKG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIDogdClcbiAgICAgICAgKG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIDogdCldXG47O1xuXG5sZXQgY2hlY2tfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0ID1cbiAgaWYgdCA8IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIHx8IHQgPiBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuIGludmFsaWRfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0XG4gIGVsc2UgdFxuOztcblxubGV0IHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCB0ID1cbiAgU3Bhbl9mbG9hdC5vZl91cyAoSW50NjMudG9fZmxvYXQgKG5lYXJlc3RfbWljcm9zZWNvbmQgKGNoZWNrX3JhbmdlX2Zvcl8xdXNfcm91bmRpbmcgdCkpKVxuOztcblxubGV0IG1pbl9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBtYXhfc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID1cbiAgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG47O1xuXG5sZXQgb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHMgPVxuICBpZiBTcGFuX2Zsb2F0LiggPiApIHMgbWF4X3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB8fCBTcGFuX2Zsb2F0LiggPCApIHMgbWluX3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWVfbnMuU3BhbiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgc3BhblwiXG4gICAgICBzXG4gICAgICBbJXNleHBfb2Y6IFNwYW5fZmxvYXQudF07XG4gICgqIFVzaW5nIFtUaW1lLlNwYW4udG9fc2VjXSAoYmVpbmcgdGhlIGlkZW50aXR5KSBzbyB0aGF0XG4gICAgIHdlIG1ha2UgZG9uJ3QgYXBwbHkgdG9vIG1hbnkgY29udmVyc2lvblxuICAgICAtIFRvbyBtYW55IDogYFtTcGFuLnRdIC0+IFthXSAtPiBbdF1gXG4gICAgIC0gT25seSBPbmUgOiBgW1NwYW4udF09PVthXSAtPiBbdF1gLiAqKVxuICBvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXNpb24gKFNwYW5fZmxvYXQudG9fc2VjIHMpXG47O1xuXG5sZXQgbWluX3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9pbnQ2M19ucyBJbnQ2My5taW5fdmFsdWVcbmxldCBtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX2ludDYzX25zIEludDYzLm1heF92YWx1ZVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgb2ZfcGFydHMgPSBvZl9wYXJ0c1xuICBsZXQgdG9fcGFydHMgPSB0b19wYXJ0c1xuZW5kXG5cbigqIExlZ2FjeSBkZWZpbml0aW9ucyBiYXNlZCBvbiByb3VuZGluZyB0byB0aGUgbmVhcmVzdCBtaWNyb3NlY29uZC4gKilcbmxldCBtaW5fdmFsdWUgPSBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG1heF92YWx1ZSA9IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgb2Zfc3BhbiA9IG9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxubGV0IHRvX3NwYW4gPSB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICB0eXBlIHNwYW4gPSB0IFtAQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgdCA9IEludDYzLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuICAoKiBuYW5vc2Vjb25kcyBvciBub25lICopXG5cbiAgbGV0IG5vbmUgPSBJbnQ2My5taW5fdmFsdWVcbiAgbGV0IGlzX25vbmUgdCA9IEludDYzLih0ID0gbm9uZSlcbiAgbGV0IGlzX3NvbWUgdCA9IEludDYzLih0IDw+IG5vbmUpXG4gIGxldCBzb21lX2lzX3JlcHJlc2VudGFibGUgc3BhbiA9IGlzX3NvbWUgKHRvX2ludDYzX25zIHNwYW4pXG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9zb21lX2Vycm9yIHNwYW4gPVxuICAgIHJhaXNlX3MgWyVtZXNzYWdlIFslaGVyZV0gXCJTcGFuLk9wdGlvbi5zb21lIHZhbHVlIG5vdCByZXByZXNlbnRhYmxlXCIgKHNwYW4gOiBzcGFuKV1cbiAgOztcblxuICBsZXQgc29tZSBzcGFuID1cbiAgICBpZiBzb21lX2lzX3JlcHJlc2VudGFibGUgc3BhbiB0aGVuIHRvX2ludDYzX25zIHNwYW4gZWxzZSByYWlzZV9zb21lX2Vycm9yIHNwYW5cbiAgOztcblxuICBsZXQgdW5jaGVja2VkX3ZhbHVlIHQgPSBvZl9pbnQ2M19ucyB0XG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gQm9vbC5zZWxlY3QgKGlzX25vbmUgdCkgZGVmYXVsdCAodW5jaGVja2VkX3ZhbHVlIHQpXG5cbiAgbGV0IHZhbHVlX2V4biB0ID1cbiAgICBpZiBpc19zb21lIHRcbiAgICB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0XG4gICAgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBbJWhlcmVdIFwiU3Bhbi5PcHRpb24udmFsdWVfZXhuIG5vbmVcIl1cbiAgOztcblxuICBsZXQgb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gbm9uZVxuICAgIHwgU29tZSB0IC0+IHNvbWUgdFxuICA7O1xuXG4gIGxldCB0b19vcHRpb24gdCA9IGlmIGlzX25vbmUgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChvZl9pbnQ2M19ucyB0KVxuXG4gIG1vZHVsZSBGb3JfcXVpY2tjaGVjayA9IHN0cnVjdFxuICAgIG1vZHVsZSBTb21lID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzcGFuXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlciBxdWlja2NoZWNrX2dlbmVyYXRvciB+Zjpzb21lX2lzX3JlcHJlc2VudGFibGVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gcXVpY2tjaGVja19vYnNlcnZlclxuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgcXVpY2tjaGVja19zaHJpbmtlciB+Zjpzb21lX2lzX3JlcHJlc2VudGFibGVcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICB0eXBlIHQgPSBTb21lLnQgb3B0aW9uIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIGVuZFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOm9mX29wdGlvblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6dG9fb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyXG4gICAgICB+ZjpvZl9vcHRpb25cbiAgICAgIH5mX2ludmVyc2U6dG9fb3B0aW9uXG4gIDs7XG5cbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuY2hlY2tlZF92YWx1ZVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBiaW5faW9dXG5cbiAgICAgICAgbGV0IHYxX3NvbWUgc3BhbiA9XG4gICAgICAgICAgYXNzZXJ0IChzb21lX2lzX3JlcHJlc2VudGFibGUgc3Bhbik7XG4gICAgICAgICAgdG9faW50NjNfbnMgc3BhblxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cF9vZjogU3RhYmxlLlYxLnQgb3B0aW9uXSAodG9fb3B0aW9uIHQpXG4gICAgICAgIGxldCB0X29mX3NleHAgcyA9IG9mX29wdGlvbiAoWyVvZl9zZXhwOiBTdGFibGUuVjEudCBvcHRpb25dIHMpXG4gICAgICAgIGxldCBvZl9pbnQ2M19leG4gaSA9IGlmIGlzX25vbmUgaSB0aGVuIG5vbmUgZWxzZSB2MV9zb21lIChvZl9pbnQ2M19ucyBpKVxuICAgICAgICBsZXQgdG9faW50NjMgdCA9IHRcblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgICAgSW50NjMuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgICBvZl9pbnQ2M19leG5cbiAgICAgICAgICAgIHRvX2ludDYzXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGJpbl9pb11cblxuICAgICAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgICAgIFNleHAuTGlzdFxuICAgICAgICAgICAgKGlmIGlzX25vbmUgdCB0aGVuIFtdIGVsc2UgWyBTdGFibGUuVjIuc2V4cF9vZl90ICh1bmNoZWNrZWRfdmFsdWUgdCkgXSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIGxldCBmYWlsICgpID1cbiAgICAgICAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgICAgICAgXCJUaW1lX25zLlNwYW4uT3B0aW9uLlN0YWJsZS5WMi50X29mX3NleHA6IHNleHAgbXVzdCBiZSBhIExpc3Qgb2YgMC0xIEF0b21cIlxuICAgICAgICAgICAgICBzZXhwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgICB8IFNleHAuQXRvbSBfIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNleHAuTGlzdCBsaXN0IC0+XG4gICAgICAgICAgICAobWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgICAgICAgfCBbXSAtPiBub25lXG4gICAgICAgICAgICAgfCBbIFNleHAuQXRvbSB4IF0gLT5cbiAgICAgICAgICAgICAgIHNvbWVcbiAgICAgICAgICAgICAgICAgKHRyeSBvZl9zdHJpbmcgeCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgc2V4cClcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCAoKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgb2ZfaW50NjNfZXhuIGkgPSBpXG4gICAgICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuXG4gICAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBJbnQ2My5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICAgIG9mX2ludDYzX2V4blxuICAgICAgICAgICAgdG9faW50NjNcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFN0YWJsZS5WMi5zZXhwX29mX3RcbiAgbGV0IHRfb2Zfc2V4cCA9IFN0YWJsZS5WMi50X29mX3NleHBcblxuICBpbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGJpbl9pbywgaGFzaF1cblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWVfbnMuU3Bhbi5PcHRpb25cIlxuXG4gICAgICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBdXG4gICAgICAgIGVuZClcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSAoSW50NjMgOiBDb21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YWJsZTBcblxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gT3B0aW9uLlN0YWJsZS5WMVxuICAgIG1vZHVsZSBWMiA9IE9wdGlvbi5TdGFibGUuVjJcbiAgZW5kXG5lbmRcblxubGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgb2Zfc3RyaW5nXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTcGFuID0gU3Bhbl9uc1xuXG50eXBlIHVuZGVybHlpbmcgPSBJbnQ2My50XG50eXBlIHQgPSBTcGFuLnQgKCogc2luY2Ugd2FsbC1jbG9jayBtaWRuaWdodCAqKSBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5pbmNsdWRlIChTcGFuIDogUm9idXN0bHlfY29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG5cbmxldCB0b19wYXJ0cyB0ID0gU3Bhbi50b19wYXJ0cyB0XG5cblxubGV0IHN0YXJ0X29mX2RheSA6IHQgPSBTcGFuLnplcm9cbmxldCBzdGFydF9vZl9uZXh0X2RheSA6IHQgPSBTcGFuLmRheVxubGV0IGFwcHJveGltYXRlX2VuZF9vZl9kYXkgPSBTcGFuLiggLSApIHN0YXJ0X29mX25leHRfZGF5IFNwYW4ubmFub3NlY29uZFxubGV0IHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgPSB0XG5cbmxldFtAY29sZF0gaW5wdXRfb3V0X29mX2JvdW5kcyBzcGFuID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1lX25zLk9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4bjogaW5wdXQgb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgIH5fOihzcGFuIDogU3Bhbi50KV1cbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gaXNfaW52YWxpZCBzcGFuID1cbiAgKCogV2h5IHdlIHVzZSBbU3Bhbi4oID4gKV0gcmF0aGVyIHRoYW4gWyggPj0gKV0gYmVsb3c6XG5cbiAgICAgV2UgYWxsb3cgdG8gcmVwcmVzZW50IHRoZSBlbmQtb2YtZGF5IHNlbnRpbmVsIHZhbHVlIChbMjQuMDAwMDAwMDAwaF0pLCB3aGljaCBpcyBub3RcbiAgICAgaXRzZWxmIGEgdmFsaWQgY2xvY2sgZmFjZSB0aW1lLiAgSG93ZXZlciwgc2luY2UgdmFsaWQgY2xvY2sgZmFjZSB0aW1lcyByZWFkaWx5XG4gICAgIHJvdW5kIHVwIHRvIGl0LCBpdCdzIGJldHRlciB0byBhbGxvdyBpdCB0byBiZSByZXByZXNlbnRlZC4gKilcbiAgU3Bhbi4oIDwgKSBzcGFuIHN0YXJ0X29mX2RheSB8fCBTcGFuLiggPiApIHNwYW4gc3RhcnRfb2ZfbmV4dF9kYXlcbjs7XG5cbmxldCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9pc192YWxpZCBzcGFuID0gbm90IChpc19pbnZhbGlkIHNwYW4pXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfdW5jaGVja2VkIHNwYW4gPSBzcGFuXG5cbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gc3BhbiA9XG4gIGlmIGlzX2ludmFsaWQgc3BhbiB0aGVuIGlucHV0X291dF9vZl9ib3VuZHMgc3BhbiBlbHNlIHNwYW5cbjs7XG5cbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgc3BhbiA9IGlmIGlzX2ludmFsaWQgc3BhbiB0aGVuIE5vbmUgZWxzZSBTb21lIHNwYW5cbmxldCBhZGRfZXhuIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi4oICsgKSB0IHNwYW4pXG5sZXQgc3ViX2V4biB0IHNwYW4gPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uKCAtICkgdCBzcGFuKVxubGV0IGFkZCB0IHNwYW4gPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4uKCArICkgdCBzcGFuKVxubGV0IHN1YiB0IHNwYW4gPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4uKCAtICkgdCBzcGFuKVxubGV0IG5leHQgdCA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi5uZXh0IHQpXG5sZXQgcHJldiB0ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IChTcGFuLnByZXYgdClcbmxldCBkaWZmIHQgdSA9IFNwYW4uKCAtICkgdCB1XG5cbmxldCBjcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSA9XG4gICgqIFNpbWlsYXIgdG8gW1RpbWUuT2ZkYXkuY3JlYXRlXSwgaWYgd2UgZGV0ZWN0IGEgbGVhcCBzZWNvbmQgd2Ugc3RyaXAgb2ZmIGFsbFxuICAgICBzdWItc2Vjb25kIGVsZW1lbnRzIHNvIHRoYXQgSEg6TU06NjAuWFhYWFhYWFhYIGlzIGFsbCBtYXBwZWQgdG8gSEg6TU06NjAuICopXG4gIGxldCBtcywgdXMsIG5zID1cbiAgICBtYXRjaCBzZWMgd2l0aFxuICAgIHwgU29tZSA2MCAtPiBTb21lIDAsIFNvbWUgMCwgU29tZSAwXG4gICAgfCBfIC0+IG1zLCB1cywgbnNcbiAgaW5cbiAgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpKVxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxuICBtb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU3Bhbi5TdGFibGUuVjIudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgKFxuICAgICAgU3Bhbi5TdGFibGUuVjIgOlxuICAgICAgICBDb21wYXJhdG9yLlNcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTcGFuLlN0YWJsZS5WMi5jb21wYXJhdG9yX3dpdG5lc3MpXG5cbiAgICBsZXQgdG9fc3RyaW5nX3dpdGhfdW5pdCA9XG4gICAgICBsZXQgKCAvICkgPSBJbnQ2My4oIC8gKSBpblxuICAgICAgbGV0ICggbW9kICkgPSBJbnQ2My5yZW0gaW5cbiAgICAgIGxldCAoICEgKSA9IEludDYzLm9mX2ludCBpblxuICAgICAgbGV0IGkgPSBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICBmdW4gdCB+dW5pdCAtPlxuICAgICAgICBpZiBTcGFuLiggPCApIHQgc3RhcnRfb2ZfZGF5IHx8IFNwYW4uKCA8ICkgc3RhcnRfb2ZfbmV4dF9kYXkgdFxuICAgICAgICB0aGVuIFwiSW5jb3JyZWN0IGRheVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBzaXh0eSA9ICE2MCBpblxuICAgICAgICAgIGxldCB0aG91c2FuZCA9ICExMDAwIGluXG4gICAgICAgICAgbGV0IG5zID0gU3Bhbi50b19pbnQ2M19ucyB0IGluXG4gICAgICAgICAgbGV0IHVzID0gbnMgLyB0aG91c2FuZCBpblxuICAgICAgICAgIGxldCBucyA9IG5zIG1vZCB0aG91c2FuZCB8PiBpIGluXG4gICAgICAgICAgbGV0IG1zID0gdXMgLyB0aG91c2FuZCBpblxuICAgICAgICAgIGxldCB1cyA9IHVzIG1vZCB0aG91c2FuZCB8PiBpIGluXG4gICAgICAgICAgbGV0IHMgPSBtcyAvIHRob3VzYW5kIGluXG4gICAgICAgICAgbGV0IG1zID0gbXMgbW9kIHRob3VzYW5kIHw+IGkgaW5cbiAgICAgICAgICBsZXQgbSA9IHMgLyBzaXh0eSBpblxuICAgICAgICAgIGxldCBzID0gcyBtb2Qgc2l4dHkgfD4gaSBpblxuICAgICAgICAgIGxldCBoID0gbSAvIHNpeHR5IHw+IGkgaW5cbiAgICAgICAgICBsZXQgbSA9IG0gbW9kIHNpeHR5IHw+IGkgaW5cbiAgICAgICAgICBsZXQgdW5pdCA9XG4gICAgICAgICAgICBtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgIHwgKGBOYW5vc2Vjb25kIHwgYE1pY3Jvc2Vjb25kIHwgYE1pbGxpc2Vjb25kIHwgYFNlY29uZCkgYXMgdW5pdCAtPiB1bml0XG4gICAgICAgICAgICB8IGBNaW51dGVfb3JfbGVzcyAtPlxuICAgICAgICAgICAgICBpZiBucyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiB1cyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbXMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIHMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBTZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBgTWludXRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGVuID1cbiAgICAgICAgICAgIG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgfCBgTWludXRlIC0+IDVcbiAgICAgICAgICAgIHwgYFNlY29uZCAtPiA4XG4gICAgICAgICAgICB8IGBNaWxsaXNlY29uZCAtPiAxMlxuICAgICAgICAgICAgfCBgTWljcm9zZWNvbmQgLT4gMTVcbiAgICAgICAgICAgIHwgYE5hbm9zZWNvbmQgLT4gMThcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6MCBoO1xuICAgICAgICAgIEJ5dGVzLnNldCBzdHIgMiAnOic7XG4gICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6MyBtO1xuICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgfCBgTWludXRlIC0+ICgpXG4gICAgICAgICAgIHwgKGBTZWNvbmQgfCBgTWlsbGlzZWNvbmQgfCBgTWljcm9zZWNvbmQgfCBgTmFub3NlY29uZCkgYXMgdW5pdCAtPlxuICAgICAgICAgICAgIEJ5dGVzLnNldCBzdHIgNSAnOic7XG4gICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6NiBzO1xuICAgICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgICAgfCBgU2Vjb25kIC0+ICgpXG4gICAgICAgICAgICAgIHwgKGBNaWxsaXNlY29uZCB8IGBNaWNyb3NlY29uZCB8IGBOYW5vc2Vjb25kKSBhcyB1bml0IC0+XG4gICAgICAgICAgICAgICAgQnl0ZXMuc2V0IHN0ciA4ICcuJztcbiAgICAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8zX2RpZ2l0X2ludCBzdHIgfnBvczo5IG1zO1xuICAgICAgICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgTWlsbGlzZWNvbmQgLT4gKClcbiAgICAgICAgICAgICAgICAgfCAoYE1pY3Jvc2Vjb25kIHwgYE5hbm9zZWNvbmQpIGFzIHVuaXQgLT5cbiAgICAgICAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8zX2RpZ2l0X2ludCBzdHIgfnBvczoxMiB1cztcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgYE1pY3Jvc2Vjb25kIC0+ICgpXG4gICAgICAgICAgICAgICAgICAgIHwgYE5hbm9zZWNvbmQgLT4gRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfM19kaWdpdF9pbnQgc3RyIH5wb3M6MTUgbnMpKSkpO1xuICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6c3RyKVxuICAgIDs7XG5cbiAgICBsZXQgcGFyc2VfbmFub3NlY29uZHMgc3RyaW5nIH5wb3MgfnVudGlsID1cbiAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICBsZXQgZGlnaXRzID0gcmVmIDAgaW5cbiAgICAgIGxldCBudW1fZGlnaXRzID0gcmVmIDAgaW5cbiAgICAgIGxldCBwb3MgPSByZWYgcG9zIGluXG4gICAgICAoKiByZWFkIHVwIHRvIDEwIGRpZ2l0czsgc3RvcmUgdGhlIGZpcnN0IDksIHVzZSB0aGUgMTB0aCB0byByb3VuZCAqKVxuICAgICAgd2hpbGUgIXBvcyA8IHVudGlsICYmICFudW1fZGlnaXRzIDwgMTAgZG9cbiAgICAgICAgbGV0IGMgPSBzdHJpbmcuWyFwb3NdIGluXG4gICAgICAgIGlmIENoYXIuaXNfZGlnaXQgY1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICBpbmNyIG51bV9kaWdpdHM7XG4gICAgICAgICAgaWYgIW51bV9kaWdpdHMgPCAxMFxuICAgICAgICAgIHRoZW4gZGlnaXRzIDo9ICghZGlnaXRzICogMTApICsgQ2hhci5nZXRfZGlnaXRfZXhuIGNcbiAgICAgICAgICBlbHNlIGlmIENoYXIuZ2V0X2RpZ2l0X2V4biBjID49IDVcbiAgICAgICAgICB0aGVuIGluY3IgZGlnaXRzXG4gICAgICAgICAgZWxzZSAoKSk7XG4gICAgICAgIGluY3IgcG9zXG4gICAgICBkb25lO1xuICAgICAgKCogaWYgdGhlcmUgYXJlIG1pc3NpbmcgZGlnaXRzLCBhZGQgemVyb2VzICopXG4gICAgICBpZiAhbnVtX2RpZ2l0cyA8IDkgdGhlbiBkaWdpdHMgOj0gIWRpZ2l0cyAqIEludC5wb3cgMTAgKDkgLSAhbnVtX2RpZ2l0cyk7XG4gICAgICAhZGlnaXRzXG4gICAgOztcblxuICAgIGxldCBjcmVhdGVfZnJvbV9wYXJzZWQgc3RyaW5nIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW4gPVxuICAgICAgbGV0IG5hbm9zZWNvbmRzID1cbiAgICAgICAgaWYgSW50LmVxdWFsIHN1YnNlY19sZW4gMFxuICAgICAgICB0aGVuIDBcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHBhcnNlX25hbm9zZWNvbmRzIHN0cmluZyB+cG9zOihzdWJzZWNfcG9zICsgMSkgfnVudGlsOihzdWJzZWNfcG9zICsgc3Vic2VjX2xlbilcbiAgICAgIGluXG4gICAgICBTcGFuLm9mX2ludDYzX25zIChJbnQ2My5vZl9pbnQgbmFub3NlY29uZHMpXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLnNlY29uZCBzZWMpXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLm1pbnV0ZSBtaW4pXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLmhvdXIgaHIpXG4gICAgICB8PiBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPSBPZmRheV9oZWxwZXJzLnBhcnNlIHN0cmluZyB+ZjpjcmVhdGVfZnJvbV9wYXJzZWRcblxuICAgIGxldCB0X29mX3NleHAgc2V4cCA6IHQgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJleHBlY3RlZCBhbiBhdG9tXCIgc2V4cFxuICAgICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgbGV0IG9wZW4gU2V4cGxpYiBpblxuICAgICAgU2V4cF9ncmFtbWFyLnRhZ1xuICAgICAgICAoU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXIgOiB0IFNleHBfZ3JhbW1hci50KVxuICAgICAgICB+a2V5OlNleHBfZ3JhbW1hci50eXBlX25hbWVfdGFnXG4gICAgICAgIH52YWx1ZTooQXRvbSBcIkNvcmUuVGltZV9ucy5PZmRheS50XCIpXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmcgKHQgOiB0KSA9IHRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTmFub3NlY29uZFxuICAgIGxldCBzZXhwX29mX3QgKHQgOiB0KSA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4gICAgbGV0IHRvX2ludDYzIHQgPSBTcGFuX25zLlN0YWJsZS5WMi50b19pbnQ2MyB0XG4gICAgbGV0IG9mX2ludDYzX2V4biB0ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuX25zLlN0YWJsZS5WMi5vZl9pbnQ2M19leG4gdClcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoXG4gIFN0YWJsZS5WMSA6XG4gICAgQ29tcGFyYXRvci5TXG4gIHdpdGggdHlwZSB0IDo9IHRcbiAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3MpXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgdHlwZSB0ID0gU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBTdGFibGUuVjEgOlxuICAgICAgICBDb21wYXJhdG9yLlNcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdGFibGUuVjEuY29tcGFyYXRvcl93aXRuZXNzKVxuXG4gICAgaW5jbHVkZSAoU3RhYmxlLlYxIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZV9ucy5PZmRheVwiXG4gIGVuZClcblxubGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0YWJsZS5WMS50X3NleHBfZ3JhbW1hclxubGV0IHRvX21pY3Jvc2Vjb25kX3N0cmluZyB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTWljcm9zZWNvbmRcbmxldCB0b19taWxsaXNlY29uZF9zdHJpbmcgdCA9IFN0YWJsZS5WMS50b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YE1pbGxpc2Vjb25kXG5sZXQgdG9fc2VjX3N0cmluZyB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgU2Vjb25kXG5sZXQgdG9fc3RyaW5nX3RyaW1tZWQgdCA9IFN0YWJsZS5WMS50b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YE1pbnV0ZV9vcl9sZXNzXG5cbmxldCBvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyID1cbiAgdHJ5XG4gICAgT2ZkYXlfaGVscGVycy5wYXJzZV9pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgfmY6U3RhYmxlLlYxLmNyZWF0ZV9mcm9tX3BhcnNlZFxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltZV9ucy5PZmRheS5vZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZDogY2Fubm90IHBhcnNlIHN0cmluZ1wiXG4gICAgICAgICAgfl86KFN0cmluZy5zdWJvIHN0ciA/cG9zID9sZW4gOiBzdHJpbmcpXG4gICAgICAgICAgfl86KGV4biA6IGV4bildXG47O1xuXG5sZXQgZXZlcnkgPVxuICBsZXQgcmVjIGV2ZXJ5X3ZhbGlkX29mZGF5X3NwYW4gc3BhbiB+c3RhcnQgfnN0b3AgfmFjYyA9XG4gICAgKCogQXNzdW1lcyBbc3Bhbl0sIFtzdGFydF0sIGFuZCBbc3RvcF0gYXJlIHZhbGlkIG9mZGF5cy4gQXNzdW1lcyBbc3RhcnQgPCBzdG9wXS5cbiAgICAgICBBc3N1bWVzIFtzcGFuID4gMF0uICopXG4gICAgbGV0IGFjYyA9IHN0YXJ0IDo6IGFjYyBpblxuICAgIGxldCBzdGFydCA9IFNwYW4uKCArICkgc3RhcnQgc3BhbiBpblxuICAgIGlmIFNwYW4uKCA+ICkgc3RhcnQgc3RvcCAoKiBjYW5ub3Qgb3ZlcmZsb3cgKilcbiAgICB0aGVuIExpc3QucmV2IGFjY1xuICAgIGVsc2UgZXZlcnlfdmFsaWRfb2ZkYXlfc3BhbiBzcGFuIH5zdGFydCB+c3RvcCB+YWNjXG4gIGluXG4gICgqIGludGVybmFsIFtldmVyeV0gbmFtZWQgdG8gc2hvdyB1cCBpbiBzdGFjayB0cmFjZXMgKilcbiAgbGV0IGV2ZXJ5IHNwYW4gfnN0YXJ0IH5zdG9wID1cbiAgICBpZiBTcGFuLiggPiApIHN0YXJ0IHN0b3BcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW1RpbWVfbnMuT2ZkYXkuZXZlcnldIGNhbGxlZCB3aXRoIFtzdGFydF0gPiBbc3RvcF1cIiAoc3RhcnQgOiB0KSAoc3RvcCA6IHQpXVxuICAgIGVsc2UgaWYgU3Bhbi4oIDw9ICkgc3BhbiBTcGFuLnplcm9cbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIFslbWVzc2FnZSBcIltUaW1lX25zLk9mZGF5LmV2ZXJ5XSBjYWxsZWQgd2l0aCBuZWdhdGl2ZSBzcGFuXCIgfl86KHNwYW4gOiBTcGFuLnQpXVxuICAgIGVsc2UgaWYgaXNfaW52YWxpZCBzcGFuXG4gICAgdGhlbiBPayBbIHN0YXJ0IF1cbiAgICBlbHNlIE9rIChldmVyeV92YWxpZF9vZmRheV9zcGFuIHNwYW4gfnN0YXJ0IH5zdG9wIH5hY2M6W10pXG4gIGluXG4gIGV2ZXJ5XG47O1xuXG5sZXQgc21hbGxfZGlmZiA9XG4gIGxldCBob3VyID0gU3Bhbi50b19pbnQ2M19ucyBTcGFuLmhvdXIgaW5cbiAgZnVuIG9mZGF5MSBvZmRheTIgLT5cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IG9mZGF5MSA9IFNwYW4udG9faW50NjNfbnMgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MSkgaW5cbiAgICBsZXQgb2ZkYXkyID0gU3Bhbi50b19pbnQ2M19ucyAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkyKSBpblxuICAgIGxldCBkaWZmID0gb2ZkYXkxIC0gb2ZkYXkyIGluXG4gICAgKCogIGQxIGlzIGluICgtaG91cjsgaG91cikgKilcbiAgICBsZXQgZDEgPSBJbnQ2My5yZW0gZGlmZiBob3VyIGluXG4gICAgKCogIGQyIGlzIGluICgwO2hvdXIpICopXG4gICAgbGV0IGQyID0gSW50NjMucmVtIChkMSArIGhvdXIpIGhvdXIgaW5cbiAgICBsZXQgZCA9IGlmIGQyID4gaG91ciAvIEludDYzLm9mX2ludCAyIHRoZW4gZDIgLSBob3VyIGVsc2UgZDIgaW5cbiAgICBTcGFuLm9mX2ludDYzX25zIGRcbjs7XG5cbmxldCVleHBlY3RfdGVzdCBcInNtYWxsX2RpZmZcIiA9XG4gIGxldCB0ZXN0IHggeSA9XG4gICAgbGV0IGRpZmYgPSBzbWFsbF9kaWZmIHggeSBpblxuICAgIHByaW50ZiAhXCJzbWFsbF9kaWZmICVzICVzID0gJXNcXG5cIiAodG9fc3RyaW5nIHgpICh0b19zdHJpbmcgeSkgKFNwYW4udG9fc3RyaW5nIGRpZmYpXG4gIGluXG4gIGxldCBleGFtcGxlcyA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gKHgsIHkpIC0+IG9mX3N0cmluZyB4LCBvZl9zdHJpbmcgeSlcbiAgICAgIFsgXCIxMjowMFwiLCBcIjEyOjA1XCI7IFwiMTI6NThcIiwgXCIxMzowMlwiOyBcIjAwOjUyXCIsIFwiMjM6MTlcIjsgXCIwMDowMFwiLCBcIjI0OjAwXCIgXVxuICBpblxuICBMaXN0Lml0ZXIgZXhhbXBsZXMgfmY6KGZ1biAoeCwgeSkgLT5cbiAgICB0ZXN0IHggeTtcbiAgICB0ZXN0IHkgeCk7XG4gIFslZXhwZWN0XG4gICAge3xcbiAgICBzbWFsbF9kaWZmIDEyOjAwOjAwLjAwMDAwMDAwMCAxMjowNTowMC4wMDAwMDAwMDAgPSAtNW1cbiAgICBzbWFsbF9kaWZmIDEyOjA1OjAwLjAwMDAwMDAwMCAxMjowMDowMC4wMDAwMDAwMDAgPSA1bVxuICAgIHNtYWxsX2RpZmYgMTI6NTg6MDAuMDAwMDAwMDAwIDEzOjAyOjAwLjAwMDAwMDAwMCA9IC00bVxuICAgIHNtYWxsX2RpZmYgMTM6MDI6MDAuMDAwMDAwMDAwIDEyOjU4OjAwLjAwMDAwMDAwMCA9IDRtXG4gICAgc21hbGxfZGlmZiAwMDo1MjowMC4wMDAwMDAwMDAgMjM6MTk6MDAuMDAwMDAwMDAwID0gLTI3bVxuICAgIHNtYWxsX2RpZmYgMjM6MTk6MDAuMDAwMDAwMDAwIDAwOjUyOjAwLjAwMDAwMDAwMCA9IDI3bVxuICAgIHNtYWxsX2RpZmYgMDA6MDA6MDAuMDAwMDAwMDAwIDI0OjAwOjAwLjAwMDAwMDAwMCA9IDBzXG4gICAgc21hbGxfZGlmZiAyNDowMDowMC4wMDAwMDAwMDAgMDA6MDA6MDAuMDAwMDAwMDAwID0gMHMgfH1dXG47O1xuXG5sZXQgZ2VuX2luY2wgPSBTcGFuLmdlbl9pbmNsXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IFNwYW4uZ2VuX3VuaWZvcm1faW5jbFxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuX2luY2wgc3RhcnRfb2ZfZGF5IHN0YXJ0X29mX25leHRfZGF5XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IFNwYW4ucXVpY2tjaGVja19vYnNlcnZlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBRdWlja2NoZWNrLlNocmlua2VyLmVtcHR5ICgpXG5cbmluY2x1ZGUgKFNwYW4gOiBDb21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHQpXG5cbigqIGRlcHJlY2F0ZWQgYmluZGluZ3MgKilcbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxubGV0IHRvX21pbGxpc2VjX3N0cmluZyA9IHRvX21pbGxpc2Vjb25kX3N0cmluZ1xubGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBub3cgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG9mX29mZGF5X2Zsb2F0X3JvdW5kX25lYXJlc3QgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG9mX29mZGF5X2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX29mZGF5X2Zsb2F0X3JvdW5kX25lYXJlc3QgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX29mZGF5X2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgPSBgVXNlX1RpbWVfbnNfdW5peFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxubW9kdWxlIFpvbmVkID0gc3RydWN0IGVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplX2luX2JpdHMgPSA2NFxuXG5tb2R1bGUgU3BhbiA9IFNwYW5fbnNcbm1vZHVsZSBPZmRheSA9IE9mZGF5X25zXG5cbnR5cGUgdCA9IFNwYW4udCAoKiBzaW5jZSB0aGUgVW5peCBlcG9jaCAoMTk3MC0wMS0wMSAwMDowMDowMCBVVEMpICopXG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50ID0gU3Bhbi5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50XG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnRcbmluY2x1ZGUgKFNwYW4gOiBRdWlja2NoZWNrLlNfcmFuZ2Ugd2l0aCB0eXBlIHQgOj0gdClcblxubGV0IG5vdyA9IFNwYW4uc2luY2VfdW5peF9lcG9jaFxubGV0IGVxdWFsID0gU3Bhbi5lcXVhbFxubGV0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gU3Bhbi5taW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gU3Bhbi5tYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IGVwb2NoID0gU3Bhbi56ZXJvXG5sZXQgYWRkID0gU3Bhbi4oICsgKVxubGV0IHN1YiA9IFNwYW4uKCAtIClcbmxldCBkaWZmID0gU3Bhbi4oIC0gKVxubGV0IGFic19kaWZmIHQgdSA9IFNwYW4uYWJzIChkaWZmIHQgdSlcbmxldCBtYXggPSBTcGFuLm1heFxubGV0IG1pbiA9IFNwYW4ubWluXG5sZXQgbmV4dCA9IFNwYW4ubmV4dFxubGV0IHByZXYgPSBTcGFuLnByZXZcbmxldCB0b19zcGFuX3NpbmNlX2Vwb2NoIHQgPSB0XG5sZXQgb2Zfc3Bhbl9zaW5jZV9lcG9jaCBzID0gc1xubGV0IHRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIHQgOiBJbnQ2My50ID0gU3Bhbi50b19pbnQ2M19ucyAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KVxubGV0W0BpbmxpbmVdIG9mX2ludDYzX25zX3NpbmNlX2Vwb2NoIGkgPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIChTcGFuLm9mX2ludDYzX25zIGkpXG5sZXRbQGNvbGRdIG92ZXJmbG93ICgpID0gcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX25zOiBvdmVyZmxvd1wiXVxubGV0IGlzX2VhcmxpZXIgdDEgfnRoYW46dDIgPSB0MSA8IHQyXG5sZXQgaXNfbGF0ZXIgdDEgfnRoYW46dDIgPSB0MSA+IHQyXG5cbmxldCBhZGRfb3ZlcmZsb3dlZCB4IHkgfnN1bSA9XG4gIGlmIFNwYW4uKCA+ICkgeSBTcGFuLnplcm8gdGhlbiBTcGFuLiggPCApIHN1bSB4IGVsc2UgU3Bhbi4oID4gKSBzdW0geFxuOztcblxubGV0IHN1Yl9vdmVyZmxvd2VkIHggeSB+ZGlmZiA9XG4gIGlmIFNwYW4uKCA+ICkgeSBTcGFuLnplcm8gdGhlbiBTcGFuLiggPiApIGRpZmYgeCBlbHNlIFNwYW4uKCA8ICkgZGlmZiB4XG47O1xuXG5sZXQgYWRkX2V4biB4IHkgPVxuICBsZXQgc3VtID0gYWRkIHggeSBpblxuICBpZiBhZGRfb3ZlcmZsb3dlZCB4IHkgfnN1bSB0aGVuIG92ZXJmbG93ICgpIGVsc2Ugc3VtXG47O1xuXG5sZXQgc3ViX2V4biB4IHkgPVxuICBsZXQgZGlmZiA9IHN1YiB4IHkgaW5cbiAgaWYgc3ViX292ZXJmbG93ZWQgeCB5IH5kaWZmIHRoZW4gb3ZlcmZsb3cgKCkgZWxzZSBkaWZmXG47O1xuXG5sZXQgYWRkX3NhdHVyYXRpbmcgeCB5ID1cbiAgbGV0IHN1bSA9IGFkZCB4IHkgaW5cbiAgaWYgYWRkX292ZXJmbG93ZWQgeCB5IH5zdW1cbiAgdGhlblxuICAgIGlmIFNwYW4uKHkgPiB6ZXJvKSB0aGVuIFNwYW4ubWF4X3ZhbHVlX3JlcHJlc2VudGFibGUgZWxzZSBTcGFuLm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlXG4gIGVsc2Ugc3VtXG47O1xuXG5sZXQgc3ViX3NhdHVyYXRpbmcgeCB5ID1cbiAgbGV0IGRpZmYgPSBzdWIgeCB5IGluXG4gIGlmIHN1Yl9vdmVyZmxvd2VkIHggeSB+ZGlmZlxuICB0aGVuXG4gICAgaWYgU3Bhbi4oeSA+IHplcm8pIHRoZW4gU3Bhbi5taW5fdmFsdWVfcmVwcmVzZW50YWJsZSBlbHNlIFNwYW4ubWF4X3ZhbHVlX3JlcHJlc2VudGFibGVcbiAgZWxzZSBkaWZmXG47O1xuXG5sZXQgdG9faW50X25zX3NpbmNlX2Vwb2NoID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gdCAtPiBJbnQ2My50b19pbnRfZXhuICh0b19pbnQ2M19uc19zaW5jZV9lcG9jaCB0KVxuICBlbHNlIGZ1biBfIC0+IGZhaWx3aXRoIFwiVGltZV9ucy50b19pbnRfbnNfc2luY2VfZXBvY2g6IHVuc3VwcG9ydGVkIG9uIDMyYml0IG1hY2hpbmVzXCJcbjs7XG5cbmxldCBvZl9pbnRfbnNfc2luY2VfZXBvY2ggaSA9IG9mX2ludDYzX25zX3NpbmNlX2Vwb2NoIChJbnQ2My5vZl9pbnQgaSlcblxubGV0IHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCB0ID1cbiAgVGltZV9mbG9hdC5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0ICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpKVxuOztcblxubGV0IHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCB0ID1cbiAgVGltZV9mbG9hdC5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpKVxuOztcblxubGV0IG1pbl90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBtYXhfdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID1cbiAgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG47O1xuXG5sZXQgY2hlY2tfYmVmb3JlX2NvbnZlcnNpb25fZm9yXzF1c19yb3VuZGluZyB0aW1lID1cbiAgaWYgVGltZV9mbG9hdC4oIDwgKSB0aW1lIG1pbl90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbiAgfHwgVGltZV9mbG9hdC4oID4gKSB0aW1lIG1heF90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJUaW1lX25zIGRvZXMgbm90IHN1cHBvcnQgdGhpcyB0aW1lXCJcbiAgICAgIHRpbWVcbiAgICAgIFslc2V4cF9vZjogVGltZV9mbG9hdC5TdGFibGUuV2l0aF91dGNfc2V4cC5WMi50XVxuOztcblxubGV0IG9mX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCB0aW1lID1cbiAgb2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIChTcGFuLm9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCAoVGltZV9mbG9hdC50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUpKVxuOztcblxubGV0IG9mX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCB0aW1lID1cbiAgY2hlY2tfYmVmb3JlX2NvbnZlcnNpb25fZm9yXzF1c19yb3VuZGluZyB0aW1lO1xuICBvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4ub2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIChUaW1lX2Zsb2F0LnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSkpXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX25leHRfbXVsdGlwbGVfZ290X25vbnBvc2l0aXZlX2ludGVydmFsIGludGVydmFsID1cbiAgZmFpbHdpdGhzXG4gICAgfmhlcmU6WyVoZXJlXVxuICAgIFwiVGltZV9ucy5uZXh0X211bHRpcGxlIGdvdCBub25wb3NpdGl2ZSBpbnRlcnZhbFwiXG4gICAgaW50ZXJ2YWxcbiAgICBbJXNleHBfb2Y6IFNwYW4udF1cbjs7XG5cbmxldCBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCA9XG4gIGlmIFNwYW4uKCA8PSApIGludGVydmFsIFNwYW4uemVyb1xuICB0aGVuIHJhaXNlX25leHRfbXVsdGlwbGVfZ290X25vbnBvc2l0aXZlX2ludGVydmFsIGludGVydmFsO1xuICBsZXQgYmFzZV90b19hZnRlciA9IGRpZmYgYWZ0ZXIgYmFzZSBpblxuICBpZiBTcGFuLiggPCApIGJhc2VfdG9fYWZ0ZXIgU3Bhbi56ZXJvXG4gIHRoZW4gYmFzZSAoKiBbYWZ0ZXIgPCBiYXNlXSwgY2hvb3NlIFtrID0gMF0uICopXG4gIGVsc2UgKFxuICAgIGxldCBuZXh0ID0gYWRkIGJhc2UgKFNwYW4uc2NhbGVfaW50NjMgaW50ZXJ2YWwgKFNwYW4uZGl2IGJhc2VfdG9fYWZ0ZXIgaW50ZXJ2YWwpKSBpblxuICAgIGlmIG5leHQgPiBhZnRlciB8fCAoY2FuX2VxdWFsX2FmdGVyICYmIG5leHQgPSBhZnRlcikgdGhlbiBuZXh0IGVsc2UgYWRkIG5leHQgaW50ZXJ2YWwpXG47O1xuXG5sZXQgbmV4dF9tdWx0aXBsZSA/KGNhbl9lcXVhbF9hZnRlciA9IGZhbHNlKSB+YmFzZSB+YWZ0ZXIgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWxcbjs7XG5cbmxldCBwcmV2X211bHRpcGxlID8oY2FuX2VxdWFsX2JlZm9yZSA9IGZhbHNlKSB+YmFzZSB+YmVmb3JlIH5pbnRlcnZhbCAoKSA9XG4gIG5leHRfbXVsdGlwbGVfaW50ZXJuYWxcbiAgICB+Y2FuX2VxdWFsX2FmdGVyOihub3QgY2FuX2VxdWFsX2JlZm9yZSlcbiAgICB+YmFzZVxuICAgIH5hZnRlcjooc3ViIGJlZm9yZSBpbnRlcnZhbClcbiAgICB+aW50ZXJ2YWxcbjs7XG5cbmxldCByYW5kb20gP3N0YXRlICgpID0gU3Bhbi5yYW5kb20gP3N0YXRlICgpXG5cbm1vZHVsZSBVdGMgOiBzaWdcbiAgdmFsIHRvX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IDogdCAtPiBEYXRlMC50ICogU3Bhbi50XG4gIHZhbCBvZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA6IERhdGUwLnQgLT4gU3Bhbi50IC0+IHRcbmVuZCA9IHN0cnVjdFxuICAoKiBhIHJlY3JlYXRpb24gb2YgdGhlIHN5c3RlbSBjYWxsIGdtdGltZSBzcGVjaWFsaXplZCB0byB0aGUgZmllbGRzIHdlIG5lZWQgdGhhdCBhbHNvXG4gICAgIGRvZXNuJ3QgcmVseSBvbiBVbml4LiAqKVxuICBsZXQgdG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCA9XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCAoICE8ICkgaSA9IEludDYzLm9mX2ludF9leG4gaSBpblxuICAgIGxldCAoICE+ICkgdCA9IEludDYzLnRvX2ludF9leG4gdCBpblxuICAgIGxldCBuc19zaW5jZV9lcG9jaCA9IHRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIHQgaW5cbiAgICBsZXQgbnNfcGVyX2RheSA9ICE8ODZfNDAwICogITwxXzAwMF8wMDBfMDAwIGluXG4gICAgbGV0IGFwcHJveF9kYXlzX2Zyb21fZXBvY2ggPSBuc19zaW5jZV9lcG9jaCAvIG5zX3Blcl9kYXkgaW5cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID1cbiAgICAgIGlmIG5zX3NpbmNlX2Vwb2NoIDwgITwwICYmIGFwcHJveF9kYXlzX2Zyb21fZXBvY2ggKiBuc19wZXJfZGF5IDw+IG5zX3NpbmNlX2Vwb2NoXG4gICAgICB0aGVuIGFwcHJveF9kYXlzX2Zyb21fZXBvY2ggLSAhPDFcbiAgICAgIGVsc2UgYXBwcm94X2RheXNfZnJvbV9lcG9jaFxuICAgIGluXG4gICAgbGV0IG5zX3NpbmNlX3N0YXJ0X29mX2RheSA9IG5zX3NpbmNlX2Vwb2NoIC0gKG5zX3Blcl9kYXkgKiBkYXlzX2Zyb21fZXBvY2gpIGluXG4gICAgbGV0IGRhdGUgPVxuICAgICAgRGF0ZTAuRGF5cy5hZGRfZGF5cyBEYXRlMC5EYXlzLnVuaXhfZXBvY2ggIT5kYXlzX2Zyb21fZXBvY2ggfD4gRGF0ZTAuRGF5cy50b19kYXRlXG4gICAgaW5cbiAgICBsZXQgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPSBTcGFuLm9mX2ludDYzX25zIG5zX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgIGRhdGUsIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5XG4gIDs7XG5cbiAgbGV0IG9mX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGRhdGUgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPVxuICAgIGFzc2VydCAoXG4gICAgICBTcGFuLiggPj0gKSBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBTcGFuLnplcm9cbiAgICAgICYmIFNwYW4uKCA8ICkgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgU3Bhbi5kYXkpO1xuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgRGF0ZTAuRGF5cy5kaWZmIChEYXRlMC5EYXlzLm9mX2RhdGUgZGF0ZSkgRGF0ZTAuRGF5cy51bml4X2Vwb2NoXG4gICAgaW5cbiAgICBsZXQgc3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoID0gU3Bhbi5zY2FsZV9pbnQgU3Bhbi5kYXkgZGF5c19mcm9tX2Vwb2NoIGluXG4gICAgbGV0IHNwYW5fc2luY2VfZXBvY2ggPSBTcGFuLiggKyApIHNwYW5faW5fZGF5c19zaW5jZV9lcG9jaCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgIG9mX3NwYW5fc2luY2VfZXBvY2ggc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbHRlcm5hdGVfc2V4cCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBtb2R1bGUgT2ZkYXlfYXNfc3BhbiA9IHN0cnVjdFxuICAgICAgb3BlbiBJbnQuT1xuXG4gICAgICBsZXQgc2Vjb25kc190b19zdHJpbmcgc2Vjb25kc19zcGFuID1cbiAgICAgICAgbGV0IHNlY29uZHMgPSBTcGFuLnRvX2ludF9zZWMgc2Vjb25kc19zcGFuIGluXG4gICAgICAgIGxldCBoID0gc2Vjb25kcyAvIDM2MDAgaW5cbiAgICAgICAgbGV0IG0gPSBzZWNvbmRzIC8gNjAgJSA2MCBpblxuICAgICAgICBsZXQgcyA9IHNlY29uZHMgJSA2MCBpblxuICAgICAgICBzcHJpbnRmIFwiJTAyZDolMDJkOiUwMmRcIiBoIG0gc1xuICAgICAgOztcblxuICAgICAgbGV0IHR3b19kaWdpdF9vZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgYXNzZXJ0IChTdHJpbmcubGVuZ3RoIHN0cmluZyA9IDIgJiYgU3RyaW5nLmZvcl9hbGwgc3RyaW5nIH5mOkNoYXIuaXNfZGlnaXQpO1xuICAgICAgICBJbnQub2Zfc3RyaW5nIHN0cmluZ1xuICAgICAgOztcblxuICAgICAgbGV0IHNlY29uZHNfb2Zfc3RyaW5nIHNlY29uZHNfc3RyaW5nID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHNlY29uZHNfc3RyaW5nIH5vbjonOicgd2l0aFxuICAgICAgICB8IFsgaF9zdHJpbmc7IG1fc3RyaW5nOyBzX3N0cmluZyBdIC0+XG4gICAgICAgICAgbGV0IGggPSB0d29fZGlnaXRfb2Zfc3RyaW5nIGhfc3RyaW5nIGluXG4gICAgICAgICAgbGV0IG0gPSB0d29fZGlnaXRfb2Zfc3RyaW5nIG1fc3RyaW5nIGluXG4gICAgICAgICAgbGV0IHMgPSB0d29fZGlnaXRfb2Zfc3RyaW5nIHNfc3RyaW5nIGluXG4gICAgICAgICAgU3Bhbi5vZl9pbnRfc2VjICgoKChoICogNjApICsgbSkgKiA2MCkgKyBzKVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICA7O1xuXG4gICAgICBsZXQgbnNfb2ZfMTAwX21zID0gMTAwXzAwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xMF9tcyA9IDEwXzAwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xX21zID0gMV8wMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTAwX3VzID0gMTAwXzAwMFxuICAgICAgbGV0IG5zX29mXzEwX3VzID0gMTBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMV91cyA9IDFfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTAwX25zID0gMTAwXG4gICAgICBsZXQgbnNfb2ZfMTBfbnMgPSAxMFxuICAgICAgbGV0IG5zX29mXzFfbnMgPSAxXG5cbiAgICAgIGxldCBzdWJfc2Vjb25kX3RvX3N0cmluZyBzdWJfc2Vjb25kX3NwYW4gPVxuICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICBsZXQgbnMgPSBTcGFuLnRvX2ludDYzX25zIHN1Yl9zZWNvbmRfc3BhbiB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgIGlmIG5zID0gMFxuICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwMF9tcyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwMWRcIiAobnMgLyBuc19vZl8xMDBfbXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMF9tcyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwMmRcIiAobnMgLyBuc19vZl8xMF9tcylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzFfbXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDNkXCIgKG5zIC8gbnNfb2ZfMV9tcylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwMF91cyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwNGRcIiAobnMgLyBuc19vZl8xMDBfdXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMF91cyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwNWRcIiAobnMgLyBuc19vZl8xMF91cylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzFfdXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDZkXCIgKG5zIC8gbnNfb2ZfMV91cylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwMF9ucyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwN2RcIiAobnMgLyBuc19vZl8xMDBfbnMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMF9ucyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwOGRcIiAobnMgLyBuc19vZl8xMF9ucylcbiAgICAgICAgZWxzZSBzcHJpbnRmIFwiLiUwOWRcIiBuc1xuICAgICAgOztcblxuICAgICAgbGV0IHN1Yl9zZWNvbmRfb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBzdHJpbmdcbiAgICAgICAgdGhlbiBTcGFuLnplcm9cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGRpZ2l0cyA9IFN0cmluZy5jaG9wX3ByZWZpeF9leG4gc3RyaW5nIH5wcmVmaXg6XCIuXCIgaW5cbiAgICAgICAgICBhc3NlcnQgKFN0cmluZy5mb3JfYWxsIGRpZ2l0cyB+ZjpDaGFyLmlzX2RpZ2l0KTtcbiAgICAgICAgICBsZXQgbXVsdGlwbGllciA9XG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcubGVuZ3RoIGRpZ2l0cyB3aXRoXG4gICAgICAgICAgICB8IDEgLT4gbnNfb2ZfMTAwX21zXG4gICAgICAgICAgICB8IDIgLT4gbnNfb2ZfMTBfbXNcbiAgICAgICAgICAgIHwgMyAtPiBuc19vZl8xX21zXG4gICAgICAgICAgICB8IDQgLT4gbnNfb2ZfMTAwX3VzXG4gICAgICAgICAgICB8IDUgLT4gbnNfb2ZfMTBfdXNcbiAgICAgICAgICAgIHwgNiAtPiBuc19vZl8xX3VzXG4gICAgICAgICAgICB8IDcgLT4gbnNfb2ZfMTAwX25zXG4gICAgICAgICAgICB8IDggLT4gbnNfb2ZfMTBfbnNcbiAgICAgICAgICAgIHwgOSAtPiBuc19vZl8xX25zXG4gICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTcGFuLm9mX2ludDYzX25zIChJbnQ2My5vZl9pbnQgKEludC5vZl9zdHJpbmcgZGlnaXRzICogbXVsdGlwbGllcikpKVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyBzcGFuID1cbiAgICAgICAgYXNzZXJ0IChTcGFuLiggPj0gKSBzcGFuIFNwYW4uemVybyAmJiBTcGFuLiggPCApIHNwYW4gU3Bhbi5kYXkpO1xuICAgICAgICBsZXQgc2Vjb25kc19zcGFuID0gc3BhbiB8PiBTcGFuLnRvX2ludF9zZWMgfD4gU3Bhbi5vZl9pbnRfc2VjIGluXG4gICAgICAgIGxldCBzdWJfc2Vjb25kX3NwYW4gPSBTcGFuLiggLSApIHNwYW4gc2Vjb25kc19zcGFuIGluXG4gICAgICAgIHNlY29uZHNfdG9fc3RyaW5nIHNlY29uZHNfc3BhbiBeIHN1Yl9zZWNvbmRfdG9fc3RyaW5nIHN1Yl9zZWNvbmRfc3BhblxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgICAgICAgbGV0IHByZWZpeF9sZW4gPSA4IGluXG4gICAgICAgICgqIFwiSEg6TU06RERcIiAqKVxuICAgICAgICBsZXQgc3VmZml4X2xlbiA9IGxlbiAtIHByZWZpeF9sZW4gaW5cbiAgICAgICAgbGV0IHNlY29uZHNfc3RyaW5nID0gU3RyaW5nLnN1YiBzdHJpbmcgfnBvczowIH5sZW46cHJlZml4X2xlbiBpblxuICAgICAgICBsZXQgc3ViX3NlY29uZF9zdHJpbmcgPSBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOnByZWZpeF9sZW4gfmxlbjpzdWZmaXhfbGVuIGluXG4gICAgICAgIGxldCBzZWNvbmRzX3NwYW4gPSBzZWNvbmRzX29mX3N0cmluZyBzZWNvbmRzX3N0cmluZyBpblxuICAgICAgICBsZXQgc3ViX3NlY29uZF9zcGFuID0gc3ViX3NlY29uZF9vZl9zdHJpbmcgc3ViX3NlY29uZF9zdHJpbmcgaW5cbiAgICAgICAgU3Bhbi4oICsgKSBzZWNvbmRzX3NwYW4gc3ViX3NlY29uZF9zcGFuXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgIGxldCBkYXRlLCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IFV0Yy50b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0IGluXG4gICAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXlfYXNfc3Bhbi50b19zdHJpbmcgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgXiBcIlpcIlxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICBsZXQgZGF0ZV9zdHJpbmcsIG9mZGF5X3N0cmluZ193aXRoX3pvbmUgPSBTdHJpbmcubHNwbGl0Ml9leG4gc3RyaW5nIH5vbjonICcgaW5cbiAgICAgIGxldCBvZmRheV9zdHJpbmcgPSBTdHJpbmcuY2hvcF9zdWZmaXhfZXhuIG9mZGF5X3N0cmluZ193aXRoX3pvbmUgfnN1ZmZpeDpcIlpcIiBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZV9zdHJpbmcgaW5cbiAgICAgIGxldCBvZmRheSA9IE9mZGF5X2FzX3NwYW4ub2Zfc3RyaW5nIG9mZGF5X3N0cmluZyBpblxuICAgICAgVXRjLm9mX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGRhdGUgb2ZkYXlcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zdHJpbmdhYmxlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgICAgIGVuZClcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9XG4gICAgICBsZXQgb3BlbiBTZXhwbGliIGluXG4gICAgICBTZXhwX2dyYW1tYXIudGFnXG4gICAgICAgIHRfc2V4cF9ncmFtbWFyXG4gICAgICAgIH5rZXk6U2V4cF9ncmFtbWFyLnR5cGVfbmFtZV90YWdcbiAgICAgICAgfnZhbHVlOihBdG9tIFwiQ29yZS5UaW1lX25zLkFsdGVybmF0ZV9zZXhwLnRcIilcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudFxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICgqIHNlZSB0ZXN0cyBpbiBsaWIvY29yZS90ZXN0L3NyYy90ZXN0X3RpbWVfbnMgdGhhdCBlbnN1cmUgc3RhYmlsaXR5IG9mIHRoaXNcbiAgICAgICAgICAgcmVwcmVzZW50YXRpb24gKilcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuXG4gICAgICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxuICBtb2R1bGUgQWx0ZXJuYXRlX3NleHAgPSBBbHRlcm5hdGVfc2V4cC5TdGFibGVcbiAgbW9kdWxlIFNwYW4gPSBTcGFuLlN0YWJsZVxuICBtb2R1bGUgT2ZkYXkgPSBPZmRheS5TdGFibGVcbmVuZFxuXG4oKiB0aGlzIGNvZGUgaXMgZGlyZWN0bHkgZHVwbGljYXRlZCBmcm9tIFRpbWUubWwgZnVuY3RvciwgY29udmVydGVkIGVub3VnaCB0byBnZXQgVGltZV9uc1xuICAgdG8vb2Zfc3RyaW5nIHdvcmtpbmcgKilcbm1vZHVsZSBUb19hbmRfb2Zfc3RyaW5nIDogc2lnXG4gIHZhbCBvZl9kYXRlX29mZGF5IDogem9uZTpab25lLnQgLT4gRGF0ZS50IC0+IE9mZGF5LnQgLT4gdFxuXG4gIHZhbCBvZl9kYXRlX29mZGF5X3ByZWNpc2VcbiAgICA6ICBEYXRlLnRcbiAgICAtPiBPZmRheS50XG4gICAgLT4gem9uZTpab25lLnRcbiAgICAtPiBbIGBPbmNlIG9mIHQgfCBgVHdpY2Ugb2YgdCAqIHQgfCBgTmV2ZXIgb2YgdCBdXG5cbiAgdmFsIHRvX2RhdGVfb2ZkYXkgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IERhdGUudCAqIE9mZGF5LnRcblxuICB2YWwgdG9fZGF0ZV9vZmRheV9wcmVjaXNlXG4gICAgOiAgdFxuICAgIC0+IHpvbmU6Wm9uZS50XG4gICAgLT4gRGF0ZS50ICogT2ZkYXkudCAqIFsgYE9ubHkgfCBgQWxzb19hdCBvZiB0IHwgYEFsc29fc2tpcHBlZCBvZiBEYXRlLnQgKiBPZmRheS50IF1cblxuICB2YWwgdG9fZGF0ZSA6IHQgLT4gem9uZTpab25lLnQgLT4gRGF0ZS50XG4gIHZhbCB0b19vZmRheSA6IHQgLT4gem9uZTpab25lLnQgLT4gT2ZkYXkudFxuICB2YWwgY29udmVydCA6IGZyb21fdHo6Wm9uZS50IC0+IHRvX3R6OlpvbmUudCAtPiBEYXRlLnQgLT4gT2ZkYXkudCAtPiBEYXRlLnQgKiBPZmRheS50XG4gIHZhbCByZXNldF9kYXRlX2NhY2hlIDogdW5pdCAtPiB1bml0XG4gIHZhbCB1dGNfb2Zmc2V0IDogdCAtPiB6b25lOlpvbmUudCAtPiBTcGFuLnRcblxuICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW29mX3N0cmluZ193aXRoX3V0Y19vZmZzZXRdXCJdXG5cbiAgdmFsIG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQgOiBzdHJpbmcgLT4gdFxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW3RvX3N0cmluZ191dGNdXCJdXG4gIHZhbCB0b19zdHJpbmdfdXRjIDogdCAtPiBzdHJpbmdcbiAgdmFsIHRvX2ZpbGVuYW1lX3N0cmluZyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCBvZl9maWxlbmFtZV9zdHJpbmcgOiBzdHJpbmcgLT4gem9uZTpab25lLnQgLT4gdFxuICB2YWwgdG9fc3RyaW5nX3RyaW1tZWQgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc2VjX3N0cmluZyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCBvZl9sb2NhbGl6ZWRfc3RyaW5nIDogem9uZTpab25lLnQgLT4gc3RyaW5nIC0+IHRcblxuICB2YWwgb2Zfc3RyaW5nX2dlblxuICAgIDogIGRlZmF1bHRfem9uZToodW5pdCAtPiBab25lLnQpXG4gICAgLT4gZmluZF96b25lOihzdHJpbmcgLT4gWm9uZS50KVxuICAgIC0+IHN0cmluZ1xuICAgIC0+IHRcblxuICB2YWwgdG9fc3RyaW5nX2FicyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zdHJpbmdfYWJzX3RyaW1tZWQgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc3RyaW5nX2Fic19wYXJ0cyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nIGxpc3RcbiAgdmFsIHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcblxuICB2YWwgb2NjdXJyZW5jZVxuICAgIDogIFsgYEZpcnN0X2FmdGVyX29yX2F0IHwgYExhc3RfYmVmb3JlX29yX2F0IF1cbiAgICAtPiB0XG4gICAgLT4gb2ZkYXk6T2ZkYXkudFxuICAgIC0+IHpvbmU6Wm9uZS50XG4gICAgLT4gdFxuZW5kID0gc3RydWN0XG4gICgqIHRoaXMgY29kZSBpcyBkaXJlY3RseSBkdXBsaWNhdGVkIGZyb20gVGltZV9mbG9hdDAubWwsIGNvbnZlcnRlZCBlbm91Z2ggdG8gZ2V0XG4gICAgIFRpbWVfbnMgdG8vb2Zfc3RyaW5nIHdvcmtpbmcgKilcbiAgbW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IHRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHQgPSBTcGFuLm9mX2ludDYzX25zIHRcblxuICAgIGxldCBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgPVxuICAgICAgbGV0IGRheXMgPVxuICAgICAgICBEYXRlMC5EYXlzLmRpZmYgKERhdGUwLkRheXMub2ZfZGF0ZSBkYXRlKSBEYXRlMC5EYXlzLnVuaXhfZXBvY2ggfD4gSW50NjMub2ZfaW50XG4gICAgICBpblxuICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgKGRheXMgKiBTcGFuLnRvX2ludDYzX25zIFNwYW4uZGF5KVxuICAgICAgKyBTcGFuLnRvX2ludDYzX25zIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGMgPVxuICAgICAgc3ViX2V4biAoU3Bhbi5vZl9pbnQ2M19ucyByZWxhdGl2ZSkgb2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcblxuICAgIGxldCBvZl9hYnNvbHV0ZSBhYnNvbHV0ZSB+b2Zmc2V0X2Zyb21fdXRjID1cbiAgICAgIFNwYW4udG9faW50NjNfbnMgKGFkZF9leG4gYWJzb2x1dGUgb2Zmc2V0X2Zyb21fdXRjKVxuICAgIDs7XG5cbiAgICBsZXQgbnNfcGVyX2RheSA9IFNwYW4udG9faW50NjNfbnMgU3Bhbi5kYXlcblxuICAgIGxldCB0b19kYXlzX2Zyb21fZXBvY2ggdCA9XG4gICAgICAoKiBub3RlIFRpbWVfbnMgcmVwcmVzZW50cyBhYm91dCAxNDYgeWVhcnMsIG5vdCBlbm91Z2ggZm9yIFtEYXRlLmNyZWF0ZV9leG5dIHRvIGV2ZXJcbiAgICAgICAgIHJhaXNlICopXG4gICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveCA9IHQgLyBuc19wZXJfZGF5IGluXG4gICAgICAoKiB3aGVuIFt0XSBpcyBuZWdhdGl2ZSB0aGUgaW50ZWdlciBkaXZpc2lvbiB0aGF0IGNhbGN1bGF0ZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgICAgICAgd2lsbCBsZWF2ZSB1cyBvbmUgZGF5IHNob3J0IGJlY2F1c2UgaXQgdHJ1bmNhdGVzIChlLmcuIC0xMDAgLyA4Nl80MDAgPSAwIGFuZCB3ZVxuICAgICAgICAgd2FudCAtMSkgLS0gYWRqdXN0IGZvciB0aGF0IGhlcmUuICopXG4gICAgICBpZiB0IDwgZGF5c19mcm9tX2Vwb2NoX2FwcHJveCAqIG5zX3Blcl9kYXlcbiAgICAgIHRoZW4gSW50NjMucHJlZCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgICBlbHNlIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICA7O1xuXG4gICAgbGV0IG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaF9pbl9ucyA9IGRheXNfZnJvbV9lcG9jaCAqIG5zX3Blcl9kYXkgaW5cbiAgICAgIGxldCByZW1haW5kZXIgPSB0IC0gZGF5c19mcm9tX2Vwb2NoX2luX25zIGluXG4gICAgICBTcGFuLm9mX2ludDYzX25zIHJlbWFpbmRlciB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICA7O1xuXG4gICAgbGV0IGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgSW50NjMudG9faW50X2V4biBkYXlzX2Zyb21fZXBvY2hcbiAgICAgIHw+IERhdGUwLkRheXMuYWRkX2RheXMgRGF0ZTAuRGF5cy51bml4X2Vwb2NoXG4gICAgICB8PiBEYXRlMC5EYXlzLnRvX2RhdGVcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGUgdCA9XG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICAgIGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX29mZGF5IHQgPVxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgICBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFpvbmUgOiBzaWdcbiAgICAoKiBUaGlzIGludGVyZmFjZSBpcyBkaXJlY3RseSBkdXBsaWNhdGVkIGZyb20gVGltZV9pbnRmLlpvbmUsIGNvbnZlcnRlZCBlbm91Z2ggdG8gZ2V0XG4gICAgICAgdGhpcyB0byB3b3JrLlxuXG4gICAgICAgVGhlIHByb2JsZW0gaXMgaGFzIHJlZmVyZW5jZXMgdG8gVGltZTBfaW50Zi5TLCB3aGljaCBpcyB0aGUgZnVuY3RvciBpbnB1dCBpbnRlcmZhY2VcbiAgICAgICB0aGF0IFRpbWVfbnMgY3VycmVudGx5IGRvZXMgbm90IHNhdGlzZnkuICopXG5cbiAgICB0eXBlIHRpbWUgPSB0XG4gICAgdHlwZSB0ID0gWm9uZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBtb2R1bGUgSW5kZXggPSBab25lLkluZGV4XG5cbiAgICAoKiBjb3BpZWQgZnVuY3Rpb25zIHJlZXhwb3J0ZWQgZnJvbSBab25lICopXG5cbiAgICB2YWwgdXRjIDogdFxuICAgIHZhbCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCA6IHQgLT4gSW5kZXgudCAtPiBib29sXG4gICAgdmFsIGluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IDogdCAtPiBJbmRleC50IC0+IGJvb2xcblxuICAgICgqIG5ldyBmdW5jdGlvbnMgZGVmaW5lZCBiZWxvdyAqKVxuXG4gICAgdmFsIGluZGV4IDogdCAtPiB0aW1lIC0+IEluZGV4LnRcbiAgICB2YWwgaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biA6IHQgLT4gSW5kZXgudCAtPiB0aW1lXG4gICAgdmFsIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gOiB0IC0+IEluZGV4LnQgLT4gdGltZVxuICAgIHZhbCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIDogdCAtPiBJbmRleC50IC0+IHRpbWVcbiAgICB2YWwgYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSA6IHQgLT4gRGF0ZV9hbmRfb2ZkYXkudCAtPiB0aW1lXG4gICAgdmFsIGRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgOiB0IC0+IHRpbWUgLT4gRGF0ZV9hbmRfb2ZkYXkudFxuICAgIHZhbCBuZXh0X2Nsb2NrX3NoaWZ0IDogdCAtPiBzdHJpY3RseV9hZnRlcjp0aW1lIC0+ICh0aW1lICogU3Bhbi50KSBvcHRpb25cbiAgICB2YWwgcHJldl9jbG9ja19zaGlmdCA6IHQgLT4gYXRfb3JfYmVmb3JlOnRpbWUgLT4gKHRpbWUgKiBTcGFuLnQpIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRpbWUgPSB0XG5cbiAgICBpbmNsdWRlIFpvbmVcblxuICAgIGxldCBvZl9zcGFuX2luX3NlY29uZHMgc3Bhbl9pbl9zZWNvbmRzID1cbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biBzcGFuX2luX3NlY29uZHNcbiAgICAgIHw+IFNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfdGltZV9pbl9zZWNvbmRzIHRpbWVfaW5fc2Vjb25kcyA9XG4gICAgICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lX2luX3NlY29uZHNcbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSA9XG4gICAgICB0b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgICAgIHw+IFNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUgPVxuICAgICAgRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggcmVsYXRpdmVcbiAgICAgIHw+IFNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5Lm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCBpbmRleCB0IHRpbWUgPSBpbmRleCB0ICh0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSlcblxuICAgIGxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgKHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4ID1cbiAgICAgIG1hdGNoIGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggd2l0aFxuICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgICggaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4XG4gICAgICAgICAgLCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCApXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgKEluZGV4Lm5leHQgaW5kZXgpXG4gICAgbGV0IHByZXZfY2xvY2tfc2hpZnQgdCB+YXRfb3JfYmVmb3JlOnRpbWUgPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcbiAgICBsZXQgbmV4dF9jbG9ja19zaGlmdCB0IH5zdHJpY3RseV9hZnRlcjp0aW1lID0gaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG5cbiAgICBsZXQgZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSB0IHRpbWUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXggdCB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhdIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIERhdGVfYW5kX29mZGF5Lm9mX2Fic29sdXRlIHRpbWUgfm9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG5cbiAgICBsZXQgYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF9vZl9kYXRlX2FuZF9vZmRheV0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsYXRpdmUgfm9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXkgPVxuICAgIGxldCByZWxhdGl2ZSA9IERhdGVfYW5kX29mZGF5Lm9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSBpblxuICAgIFpvbmUuYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSB6b25lIHJlbGF0aXZlXG4gIDs7XG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXlfcHJlY2lzZSBkYXRlIG9mZGF5IH56b25lID1cbiAgICAoKiBXZSBhc3N1bWUgdGhhdCB0aGVyZSB3aWxsIGJlIG9ubHkgb25lIHpvbmUgc2hpZnQgd2l0aGluIGEgZ2l2ZW4gbG9jYWwgZGF5LiAgKilcbiAgICBsZXQgc3RhcnRfb2ZfZGF5ID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIE9mZGF5LnN0YXJ0X29mX2RheSBpblxuICAgIGxldCBwcm9wb3NlZF90aW1lID0gYWRkIHN0YXJ0X29mX2RheSAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpIGluXG4gICAgbWF0Y2ggWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnN0YXJ0X29mX2RheSB3aXRoXG4gICAgfCBOb25lIC0+IGBPbmNlIHByb3Bvc2VkX3RpbWVcbiAgICB8IFNvbWUgKHNoaWZ0X3N0YXJ0LCBzaGlmdF9hbW91bnQpIC0+XG4gICAgICBsZXQgc2hpZnRfYmFja3dhcmRzID0gU3Bhbi4oc2hpZnRfYW1vdW50IDwgemVybykgaW5cbiAgICAgICgqIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIFwicHJvYmxlbWF0aWMgcmVnaW9uXCIgKilcbiAgICAgIGxldCBzLCBlID1cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYWRkIHNoaWZ0X3N0YXJ0IHNoaWZ0X2Ftb3VudCwgc2hpZnRfc3RhcnRcbiAgICAgICAgZWxzZSBzaGlmdF9zdGFydCwgYWRkIHNoaWZ0X3N0YXJ0IHNoaWZ0X2Ftb3VudFxuICAgICAgaW5cbiAgICAgIGlmIHByb3Bvc2VkX3RpbWUgPCBzXG4gICAgICB0aGVuIGBPbmNlIHByb3Bvc2VkX3RpbWVcbiAgICAgIGVsc2UgaWYgcyA8PSBwcm9wb3NlZF90aW1lICYmIHByb3Bvc2VkX3RpbWUgPCBlXG4gICAgICB0aGVuXG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGBUd2ljZSAocHJvcG9zZWRfdGltZSwgc3ViIHByb3Bvc2VkX3RpbWUgc2hpZnRfYW1vdW50KVxuICAgICAgICBlbHNlIGBOZXZlciBzaGlmdF9zdGFydFxuICAgICAgZWxzZSBgT25jZSAoc3ViIHByb3Bvc2VkX3RpbWUgc2hpZnRfYW1vdW50KVxuICA7O1xuXG4gIG1vZHVsZSBEYXRlX2NhY2hlID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9XG4gICAgICB7IG11dGFibGUgem9uZSA6IFpvbmUudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3N0YXJ0X2luY2wgOiB0XG4gICAgICA7IG11dGFibGUgY2FjaGVfdW50aWxfZXhjbCA6IHRcbiAgICAgIDsgbXV0YWJsZSBlZmZlY3RpdmVfZGF5X3N0YXJ0IDogdFxuICAgICAgOyBtdXRhYmxlIGRhdGUgOiBEYXRlMC50XG4gICAgICB9XG4gIGVuZFxuXG4gIGxldCBkYXRlX2NhY2hlIDogRGF0ZV9jYWNoZS50ID1cbiAgICB7IHpvbmUgPSBab25lLnV0Y1xuICAgIDsgY2FjaGVfc3RhcnRfaW5jbCA9IGVwb2NoXG4gICAgOyBjYWNoZV91bnRpbF9leGNsID0gZXBvY2hcbiAgICA7IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPSBlcG9jaFxuICAgIDsgZGF0ZSA9IERhdGUwLnVuaXhfZXBvY2hcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0X2RhdGVfY2FjaGUgKCkgPVxuICAgIGRhdGVfY2FjaGUuem9uZSA8LSBab25lLnV0YztcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmRhdGUgPC0gRGF0ZTAudW5peF9lcG9jaFxuICA7O1xuXG4gIGxldCBpc19pbl9jYWNoZSB0aW1lIH56b25lID1cbiAgICBwaHlzX2VxdWFsIHpvbmUgZGF0ZV9jYWNoZS56b25lXG4gICAgJiYgdGltZSA+PSBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2xcbiAgICAmJiB0aW1lIDwgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsXG4gIDs7XG5cbiAgbGV0IHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIG1hdGNoIGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiAoKVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIGxldCBpbmRleCA9IFpvbmUuaW5kZXggem9uZSB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbWm9uZS5pbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IFpvbmUuaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB6b25lIGluZGV4IGluXG4gICAgICBsZXQgcmVsID0gRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGVfYW5kX29mZGF5LnRvX2RhdGUgcmVsIGluXG4gICAgICBsZXQgc3BhbiA9IERhdGVfYW5kX29mZGF5LnRvX29mZGF5IHJlbCB8PiBPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPVxuICAgICAgICBzdWIgKERhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbCB+b2Zmc2V0X2Zyb21fdXRjKSBzcGFuXG4gICAgICBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfdW50aWwgPSBhZGQgZWZmZWN0aXZlX2RheV9zdGFydCBTcGFuLmRheSBpblxuICAgICAgbGV0IGNhY2hlX3N0YXJ0X2luY2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfc3RhcnRcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV9zdGFydCB8PiBtYXggKFpvbmUuaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB6b25lIGluZGV4KVxuICAgICAgaW5cbiAgICAgIGxldCBjYWNoZV91bnRpbF9leGNsID1cbiAgICAgICAgbWF0Y2ggWm9uZS5pbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCB6b25lIGluZGV4IHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBlZmZlY3RpdmVfZGF5X3VudGlsXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGVmZmVjdGl2ZV9kYXlfdW50aWwgfD4gbWluIChab25lLmluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBkYXRlX2NhY2hlLnpvbmUgPC0gem9uZTtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBjYWNoZV9zdGFydF9pbmNsO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGNhY2hlX3VudGlsX2V4Y2w7XG4gICAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZWZmZWN0aXZlX2RheV9zdGFydDtcbiAgICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBkYXRlXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGUgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkYXRlX2NhY2hlLmRhdGVcbiAgOztcblxuICBsZXQgdG9fb2ZkYXkgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkaWZmIHRpbWUgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IHw+IE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICA7O1xuXG4gIGxldCB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgPSB0b19kYXRlIHRpbWUgfnpvbmUsIHRvX29mZGF5IHRpbWUgfnpvbmVcblxuICAoKiBUaGUgY29ycmVjdG5lc3Mgb2YgdGhpcyBhbGdvcml0aG0gKGludGVyZmFjZSwgZXZlbikgZGVwZW5kcyBvbiB0aGUgZmFjdCB0aGF0XG4gICAgIHRpbWV6b25lIHNoaWZ0cyBhcmVuJ3QgdG9vIGNsb3NlIHRvZ2V0aGVyIChhcyBpbiwgaXQgY2FuJ3Qgc2ltdWx0YW5lb3VzbHkgYmUgdGhlXG4gICAgIGNhc2UgdGhhdCBhIHRpbWV6b25lIHNoaWZ0IG9mIFggaG91cnMgb2NjdXJyZWQgbGVzcyB0aGFuIFggaG91cnMgYWdvLCAqYW5kKlxuICAgICBhIHRpbWV6b25lIHNoaWZ0IG9mIFkgaG91cnMgd2lsbCBvY2N1ciBpbiBsZXNzIHRoYW4gWSBob3VycycgdGltZSkgKilcbiAgbGV0IHRvX2RhdGVfb2ZkYXlfcHJlY2lzZSB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYWZ0ZXIgPSBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6dGltZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9iZWZvcmVfb3JfYXQgPSBab25lLnByZXZfY2xvY2tfc2hpZnQgem9uZSB+YXRfb3JfYmVmb3JlOnRpbWUgaW5cbiAgICBsZXQgYWxzb19za2lwcGVkX2VhcmxpZXIgYW1vdW50ID1cbiAgICAgICgqIFVzaW5nIFtkYXRlXSBhbmQgcmFpc2luZyBvbiBbTm9uZV0gaGVyZSBpcyBPSyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGNsb2NrXG4gICAgICAgICBzaGlmdHMgY2FuJ3QgY3Jvc3MgZGF0ZSBib3VuZGFyaWVzLiBUaGlzIGlzIHRydWUgaW4gYWxsIGNhc2VzIEkndmUgZXZlciBoZWFyZFxuICAgICAgICAgb2YgKGFuZCBbb2ZfZGF0ZV9vZmRheV9wcmVjaXNlXSB3b3VsZCBuZWVkIHJldmlzaXRpbmcgaWYgaXQgdHVybmVkIG91dCB0byBiZVxuICAgICAgICAgZmFsc2UpICopXG4gICAgICBtYXRjaCBPZmRheS5zdWIgb2ZkYXkgYW1vdW50IHdpdGhcbiAgICAgIHwgU29tZSBvZmRheSAtPiBgQWxzb19za2lwcGVkIChkYXRlLCBvZmRheSlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIlRpbWUudG9fZGF0ZV9vZmRheV9wcmVjaXNlXCJcbiAgICAgICAgICAgICAgfnNwYW5fc2luY2VfZXBvY2g6KHRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSA6IFNwYW4udClcbiAgICAgICAgICAgICAgKHpvbmUgOiBab25lLnQpXVxuICAgIGluXG4gICAgbGV0IGFtYmlndWl0eSA9XG4gICAgICAoKiBFZGdlIGNhc2VzOiB0aGUgaW5zdGFudCBvZiB0cmFuc2l0aW9uIGJlbG9uZ3MgdG8gdGhlIG5ldyB6b25lIHJlZ2ltZS4gU28gaWYgdGhlXG4gICAgICAgICBjbG9jayBtb3ZlZCBieSBhbiBob3VyIGV4YWN0bHkgb25lIGhvdXIgYWdvLCB0aGVyZSdzIG5vIGFtYmlndWl0eSwgYmVjYXVzZSB0aGVcbiAgICAgICAgIGhvdXItYWdvIHRpbWUgYmVsb25ncyB0byB0aGUgc2FtZSByZWdpbWUgYXMgeW91LCBhbmQgY29udmVyc2VseSwgaWYgdGhlIGNsb2NrXG4gICAgICAgICB3aWxsIG1vdmUgYnkgYW4gaG91ciBpbiBhbiBob3VycycgdGltZSwgdGhlcmUgKmlzKiBhbWJpZ3VpdHkuIEhlbmNlIFs+Ll0gZm9yXG4gICAgICAgICB0aGUgZmlyc3QgY2FzZSBhbmQgWzw9Ll0gZm9yIHRoZSBzZWNvbmQuICopXG4gICAgICBtYXRjaCBjbG9ja19zaGlmdF9iZWZvcmVfb3JfYXQsIGNsb2NrX3NoaWZ0X2FmdGVyIHdpdGhcbiAgICAgIHwgU29tZSAoc3RhcnQsIGFtb3VudCksIF8gd2hlbiBhZGQgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPiB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgcmVjZW50bHkgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgZm9yd2FyZCByZWNlbnRseTogd2Ugc2tpcHBlZCBhIHRpbWUgKilcbiAgICAgICAgICBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBiYWNrIHJlY2VudGx5OiB0aGlzIGRhdGUvb2ZkYXkgYWxyZWFkeSBoYXBwZW5lZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChzdWIgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8sIFNvbWUgKHN0YXJ0LCBhbW91bnQpIHdoZW4gc3ViIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpIDw9IHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgaXMgYWJvdXQgdG8gc2hpZnQgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlbiAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBmb3J3YXJkOiBubyBlZmZlY3QgKilcbiAgICAgICAgICBgT25seVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBiYWNrOiB0aGlzIGRhdGUvb2ZkYXkgd2lsbCBiZSByZXBlYXRlZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChhZGQgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8gLT4gYE9ubHlcbiAgICBpblxuICAgIGRhdGUsIG9mZGF5LCBhbWJpZ3VpdHlcbiAgOztcblxuICBsZXQgY29udmVydCB+ZnJvbV90eiB+dG9fdHogZGF0ZSBvZmRheSA9XG4gICAgbGV0IHN0YXJ0X3RpbWUgPSBvZl9kYXRlX29mZGF5IH56b25lOmZyb21fdHogZGF0ZSBvZmRheSBpblxuICAgIHRvX2RhdGVfb2ZkYXkgfnpvbmU6dG9fdHogc3RhcnRfdGltZVxuICA7O1xuXG4gIGxldCB1dGNfb2Zmc2V0IHQgfnpvbmUgPVxuICAgIGxldCB1dGNfZXBvY2ggPSBab25lLmRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgem9uZSB0IGluXG4gICAgU3Bhbi4oIC0gKVxuICAgICAgKERhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHV0Y19lcG9jaClcbiAgICAgICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG4gIDs7XG5cbiAgbGV0IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSA9XG4gICAgbGV0IHV0Y19vZmZzZXQgPSB1dGNfb2Zmc2V0IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgaXNfdXRjID0gU3Bhbi4oID0gKSB1dGNfb2Zmc2V0IFNwYW4uemVybyBpblxuICAgIGlmIGlzX3V0Y1xuICAgIHRoZW4gXCJaXCJcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgKGlmIFNwYW4uKCA8ICkgdXRjX29mZnNldCBTcGFuLnplcm8gdGhlbiBcIi1cIiBlbHNlIFwiK1wiKVxuICAgICAgICA7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkXG4gICAgICAgICAgICAoT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmFicyB1dGNfb2Zmc2V0KSlcbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3BhcnRzID1cbiAgICBsZXQgYXR0ZW1wdCB0aW1lIH56b25lID1cbiAgICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgICAgbGV0IG9mZnNldF9zdHJpbmcgPSBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgaW5cbiAgICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICAgIDsgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBPZmRheS50b19zdHJpbmcgb2ZkYXk7IG9mZnNldF9zdHJpbmcgXVxuICAgICAgXVxuICAgIGluXG4gICAgZnVuIHRpbWUgfnpvbmUgLT5cbiAgICAgIHRyeSBhdHRlbXB0IHRpbWUgfnpvbmUgd2l0aFxuICAgICAgfCAoXyA6IGV4bikgLT5cbiAgICAgICAgKCogSWYgd2Ugb3ZlcmZsb3cgYXBwbHlpbmcgdGhlIFVUQyBvZmZzZXQsIHRyeSBhZ2FpbiB3aXRoIFVUQyB0aW1lLiAqKVxuICAgICAgICBhdHRlbXB0IHRpbWUgfnpvbmU6Wm9uZS51dGNcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic190cmltbWVkIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgU3RyaW5nLmNvbmNhdFxuICAgICAgfnNlcDpcIiBcIlxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZTsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgb2ZkYXkgXiBvZmZzZXRfc3RyaW5nIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2FicyB0aW1lIH56b25lID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIGxldCB0b19zdHJpbmdfdXRjIHQgPSB0b19zdHJpbmdfYWJzIHQgfnpvbmU6Wm9uZS51dGNcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ191dGNcblxuICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdGltZSB+em9uZSA9XG4gICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiVFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ190cmltbWVkIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zZWNfc3RyaW5nIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSB0IH56b25lID0gdG9fc2VjX3N0cmluZyB0IH56b25lIF4gb2Zmc2V0X3N0cmluZyB0IH56b25lXG5cbiAgbGV0IHRvX2ZpbGVuYW1lX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIF4gXCJfXCJcbiAgICBeIFN0cmluZy50clxuICAgICAgICB+dGFyZ2V0Oic6J1xuICAgICAgICB+cmVwbGFjZW1lbnQ6Jy0nXG4gICAgICAgIChTdHJpbmcuZHJvcF9zdWZmaXggKE9mZGF5LnRvX3N0cmluZyBvZmRheSkgMylcbiAgOztcblxuICBsZXQgb2ZfZmlsZW5hbWVfc3RyaW5nIHMgfnpvbmUgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246J18nIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlIGluIGZpbGVuYW1lIHN0cmluZ1wiXG4gICAgICB8IFNvbWUgKGRhdGUsIG9mZGF5KSAtPlxuICAgICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICAgIGxldCBvZmRheSA9IFN0cmluZy50ciB+dGFyZ2V0OictJyB+cmVwbGFjZW1lbnQ6JzonIG9mZGF5IGluXG4gICAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyBvZmRheSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgfnpvbmVcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gaW52YWxpZF9hcmdmIFwiVGltZS5vZl9maWxlbmFtZV9zdHJpbmcgKCVzKTogJXNcIiBzIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgOztcblxuICBsZXQgb2ZfbG9jYWxpemVkX3N0cmluZyB+em9uZSBzdHIgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgc3RyIH5vbjonICcgd2l0aFxuICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIChzcHJpbnRmIFwibm8gc3BhY2UgaW4gZGF0ZV9vZmRheSBzdHJpbmc6ICVzXCIgc3RyKVxuICAgICAgfCBTb21lIChkYXRlLCB0aW1lKSAtPlxuICAgICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyB0aW1lIGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgIHdpdGhcbiAgICB8IGUgLT4gRXhuLnJlcmFpc2UgZSBcIlRpbWUub2ZfbG9jYWxpemVkX3N0cmluZ1wiXG4gIDs7XG5cbiAgbGV0IG9jY3VycmVuY2UgYmVmb3JlX29yX2FmdGVyIHQgfm9mZGF5IH56b25lID1cbiAgICBsZXQgZmlyc3RfZ3Vlc3NfZGF0ZSA9IHRvX2RhdGUgdCB+em9uZSBpblxuICAgIGxldCBmaXJzdF9ndWVzcyA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZmlyc3RfZ3Vlc3NfZGF0ZSBvZmRheSBpblxuICAgIGxldCBjbXAsIGluY3JlbWVudCA9XG4gICAgICBtYXRjaCBiZWZvcmVfb3JfYWZ0ZXIgd2l0aFxuICAgICAgfCBgTGFzdF9iZWZvcmVfb3JfYXQgLT4gKCA8PSApLCAtMVxuICAgICAgfCBgRmlyc3RfYWZ0ZXJfb3JfYXQgLT4gKCA+PSApLCAxXG4gICAgaW5cbiAgICBpZiBjbXAgZmlyc3RfZ3Vlc3MgdFxuICAgIHRoZW4gZmlyc3RfZ3Vlc3NcbiAgICBlbHNlIG9mX2RhdGVfb2ZkYXkgfnpvbmUgKERhdGUwLmFkZF9kYXlzIGZpcnN0X2d1ZXNzX2RhdGUgaW5jcmVtZW50KSBvZmRheVxuICA7O1xuXG4gIGxldCBlbnN1cmVfY29sb25faW5fb2Zmc2V0IG9mZnNldCA9XG4gICAgbGV0IG9mZnNldF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIG9mZnNldCBpblxuICAgIGlmIEludC4oIDw9ICkgb2Zmc2V0X2xlbmd0aCAyXG4gICAgJiYgQ2hhci5pc19kaWdpdCBvZmZzZXQuWzBdXG4gICAgJiYgQ2hhci5pc19kaWdpdCBvZmZzZXQuW29mZnNldF9sZW5ndGggLSAxXVxuICAgIHRoZW4gb2Zmc2V0IF4gXCI6MDBcIlxuICAgIGVsc2UgaWYgQ2hhci4oID0gKSBvZmZzZXQuWzFdICc6JyB8fCBDaGFyLiggPSApIG9mZnNldC5bMl0gJzonXG4gICAgdGhlbiBvZmZzZXRcbiAgICBlbHNlIGlmIEludC4oIDwgKSBvZmZzZXRfbGVuZ3RoIDMgfHwgSW50LiggPiApIG9mZnNldF9sZW5ndGggNFxuICAgIHRoZW4gZmFpbHdpdGhmIFwiaW52YWxpZCBvZmZzZXQgJXNcIiBvZmZzZXQgKClcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgU3RyaW5nLnNsaWNlIG9mZnNldCAwIChvZmZzZXRfbGVuZ3RoIC0gMilcbiAgICAgICAgOyBcIjpcIlxuICAgICAgICA7IFN0cmluZy5zbGljZSBvZmZzZXQgKG9mZnNldF9sZW5ndGggLSAyKSBvZmZzZXRfbGVuZ3RoXG4gICAgICAgIF1cbiAgOztcblxuICBleGNlcHRpb24gVGltZV9uc19vZl9zdHJpbmcgb2Ygc3RyaW5nICogRXhuLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBsZXQgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgZGF0ZSwgb2ZkYXksIHR6ID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOicgJyB3aXRoXG4gICAgICAgIHwgWyBkYXk7IG1vbnRoOyB5ZWFyOyBvZmRheSBdIC0+XG4gICAgICAgICAgU3RyaW5nLmNvbmNhdCBbIGRheTsgXCIgXCI7IG1vbnRoOyBcIiBcIjsgeWVhciBdLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXk7IHR6IF0gLT4gZGF0ZSwgb2ZkYXksIFNvbWUgdHpcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5IF0gLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIHMgXSAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246J1QnIHMgd2l0aFxuICAgICAgICAgICB8IFNvbWUgKGRhdGUsIG9mZGF5KSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZXMgb3IgVCBmb3VuZFwiKVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJ0b28gbWFueSBzcGFjZXNcIlxuICAgICAgaW5cbiAgICAgIGxldCBvZmRheV90b19zZWMgb2QgPSBTcGFuLnRvX3NlYyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2QpIGluXG4gICAgICBsZXQgb2ZkYXksIHV0Y19vZmZzZXQgPVxuICAgICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICAgIHwgU29tZSBfIC0+IG9mZGF5LCBOb25lXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIENoYXIuKCA9ICkgb2ZkYXkuW1N0cmluZy5sZW5ndGggb2ZkYXkgLSAxXSAnWidcbiAgICAgICAgICB0aGVuIFN0cmluZy5zdWIgb2ZkYXkgfnBvczowIH5sZW46KFN0cmluZy5sZW5ndGggb2ZkYXkgLSAxKSwgU29tZSAwLlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgfm9uOicrJyBvZmRheSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGwsIHIpIC0+XG4gICAgICAgICAgICAgIGwsIFNvbWUgKG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nLmxzcGxpdDIgfm9uOictJyBvZmRheSB3aXRoXG4gICAgICAgICAgICAgICB8IFNvbWUgKGwsIHIpIC0+XG4gICAgICAgICAgICAgICAgIGwsIFNvbWUgKC0xLiAqLiBvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gb2ZkYXksIE5vbmUpKVxuICAgICAgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyBvZmRheSBpblxuICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgfCBTb21lIHR6IC0+IG9mX2RhdGVfb2ZkYXkgfnpvbmU6KGZpbmRfem9uZSB0eikgZGF0ZSBvZmRheVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCB1dGNfb2Zmc2V0IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBsZXQgem9uZSA9IGRlZmF1bHRfem9uZSAoKSBpblxuICAgICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICAgICAgIHwgU29tZSB1dGNfb2Zmc2V0IC0+XG4gICAgICAgICAgIGxldCB1dGNfdCA9IG9mX2RhdGVfb2ZkYXkgfnpvbmU6Wm9uZS51dGMgZGF0ZSBvZmRheSBpblxuICAgICAgICAgICBzdWIgdXRjX3QgKFNwYW4ub2Zfc2VjIHV0Y19vZmZzZXQpKVxuICAgIHdpdGhcbiAgICB8IGUgLT4gcmFpc2UgKFRpbWVfbnNfb2Zfc3RyaW5nIChzLCBlKSlcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldCBzID1cbiAgICBsZXQgZGVmYXVsdF96b25lICgpID0gcmFpc2VfcyBbJW1lc3NhZ2UgXCJ0aW1lIGhhcyBubyB0aW1lIHpvbmUgb3IgVVRDIG9mZnNldFwiIHNdIGluXG4gICAgbGV0IGZpbmRfem9uZSB6b25lX25hbWUgPVxuICAgICAgZmFpbHdpdGhmIFwidW5hYmxlIHRvIGxvb2t1cCBab25lICVzLiAgVHJ5IHVzaW5nIENvcmUuVGltZS5vZl9zdHJpbmdcIiB6b25lX25hbWUgKClcbiAgICBpblxuICAgIG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHNcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldFxuZW5kXG5cbmluY2x1ZGUgVG9fYW5kX29mX3N0cmluZ1xuXG5sZXQgbWluX3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIFNwYW4ubWluX3ZhbHVlX3JlcHJlc2VudGFibGVcbmxldCBtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxuXG4oKiBMZWdhY3kgZGVmaW5pdGlvbnMgYmFzZWQgb24gcm91bmRpbmcgdG8gdGhlIG5lYXJlc3QgbWljcm9zZWNvbmQuICopXG5sZXQgbWluX3ZhbHVlID0gbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBtYXhfdmFsdWUgPSBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IHRvX3RpbWUgPSB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcbmxldCBvZl90aW1lID0gb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG5cbm1vZHVsZSBfID0gc3RydWN0XG4gIG9wZW4gUHB4X21vZHVsZV90aW1lcl9ydW50aW1lXG5cbiAgbGV0ICgpID1cbiAgICBEdXJhdGlvbi5mb3JtYXRcbiAgICA6PSAobW9kdWxlIHN0cnVjdFxuICAgICAgbGV0IGR1cmF0aW9uX29mX3NwYW4gcyA9IHMgfD4gU3Bhbi50b19pbnQ2M19ucyB8PiBEdXJhdGlvbi5vZl9uYW5vc2Vjb25kc1xuICAgICAgbGV0IHNwYW5fb2ZfZHVyYXRpb24gZCA9IGQgfD4gRHVyYXRpb24udG9fbmFub3NlY29uZHMgfD4gU3Bhbi5vZl9pbnQ2M19uc1xuICAgICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPSBzdHJpbmcgfD4gU3Bhbi5vZl9zdHJpbmcgfD4gZHVyYXRpb25fb2Zfc3BhblxuXG4gICAgICBsZXQgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IGR1cmF0aW9ucyA9XG4gICAgICAgIGxldCBzcGFucyA9IGR1cmF0aW9ucyB8PiBMaXN0Lm1hcCB+ZjpzcGFuX29mX2R1cmF0aW9uIGluXG4gICAgICAgIGxldCB1bml0X29mX3RpbWUgPVxuICAgICAgICAgIHNwYW5zXG4gICAgICAgICAgfD4gTGlzdC5tYXhfZWx0IH5jb21wYXJlOlNwYW4uY29tcGFyZVxuICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZV9tYXBcbiAgICAgICAgICAgICAgIH5mOlNwYW4udG9fdW5pdF9vZl90aW1lXG4gICAgICAgICAgICAgICB+ZGVmYXVsdDpVbml0X29mX3RpbWUuTmFub3NlY29uZFxuICAgICAgICBpblxuICAgICAgICBzcGFucyB8PiBMaXN0Lm1hcCB+ZjooU3Bhbi50b19zdHJpbmdfaHVtIH51bml0X29mX3RpbWUgfmFsaWduX2RlY2ltYWw6dHJ1ZSlcbiAgICAgIDs7XG4gICAgZW5kKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxubW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIE1hcCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIFRhYmxlID0gc3RydWN0IGVuZFxubW9kdWxlIFpvbmUgPSBzdHJ1Y3QgZW5kXG5cbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgY29tcGFyYXRvciA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgZ2V0X3NleHBfem9uZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgaW50ZXJydXB0aWJsZV9wYXVzZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2ZfZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfc3RyaW5nX2FicyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgcGF1c2UgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHBhdXNlX2ZvcmV2ZXIgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHBwID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBzZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBzZXhwX29mX3QgPSBgVXNlX1RpbWVfbnNfdW5peF9vcl9UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5sZXQgc2V4cF9vZl90X2FicyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdF9vZl9zZXhwID0gYFVzZV9UaW1lX25zX3VuaXhfb3JfVGltZV9uc19hbHRlcm5hdGVfc2V4cFxubGV0IHRfb2Zfc2V4cF9hYnMgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX2RhdGVfb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0b19zdHJpbmdfZml4X3Byb3RvID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB2YWxpZGF0ZV9ib3VuZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdmFsaWRhdGVfbGJvdW5kID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB2YWxpZGF0ZV91Ym91bmQgPSBgVXNlX1RpbWVfbnNfdW5peFxuIiwiKCogQSBzdWJzdHJpbmcgaXMgYSBjb250aWd1b3VzIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcuICBXZSB1c2UgYVxuICAgZnVuY3RvciBiZWNhdXNlIHdlIHdhbnQgc3Vic3RyaW5ncyBvZiBbc3RyaW5nXSBhbmQgW2JpZ3N0cmluZ10uXG4qKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5pbmNsdWRlIE1ha2Vfc3Vic3RyaW5nX2ludGZcblxudHlwZSBiaWdzdHJpbmcgPSBCaWdzdHJpbmcudFxuXG5tb2R1bGUgQmxpdCA9IHN0cnVjdFxuICB0eXBlICgnc3JjLCAnZHN0KSB0ID0gKCdzcmMsICdkc3QpIEJsaXQuYmxpdG9cblxuICBsZXQgc3RyaW5nX2J5dGVzIH5zcmMgP3NyY19wb3MgP3NyY19sZW4gfmRzdCA/KGRzdF9wb3MgPSAwKSAoKSA9XG4gICAgbGV0IHNyY19wb3MsIGxlbiA9XG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4blxuICAgICAgICAoKVxuICAgICAgICA/cG9zOnNyY19wb3NcbiAgICAgICAgP2xlbjpzcmNfbGVuXG4gICAgICAgIH50b3RhbF9sZW5ndGg6KFN0cmluZy5sZW5ndGggc3JjKVxuICAgIGluXG4gICAgQnl0ZXMuRnJvbV9zdHJpbmcuYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW4gfmRzdCB+ZHN0X3Bvc1xuICA7O1xuXG4gIGxldCBzdHJpbmdfc3RyaW5nID0gc3RyaW5nX2J5dGVzXG4gIGxldCBieXRlc19ieXRlcyA9IEJ5dGVzLmJsaXRvXG4gIGxldCBzdHJpbmdfYmlnc3RyaW5nID0gQmlnc3RyaW5nLkZyb21fc3RyaW5nLmJsaXRvXG4gIGxldCBieXRlc19iaWdzdHJpbmcgPSBCaWdzdHJpbmcuRnJvbV9ieXRlcy5ibGl0b1xuICBsZXQgYmlnc3RyaW5nX2JpZ3N0cmluZyA9IEJpZ3N0cmluZy5ibGl0b1xuICBsZXQgYmlnc3RyaW5nX3N0cmluZyA9IEJpZ3N0cmluZy5Ub19ieXRlcy5ibGl0b1xuICBsZXQgYmlnc3RyaW5nX2J5dGVzID0gQmlnc3RyaW5nLlRvX2J5dGVzLmJsaXRvXG5lbmRcblxuKCogV2UgY2FuJ3QgY2FsbCB0aGUgYmFzZSBtb2R1bGUgW0Jhc2VdIGJlY2F1c2UgW0BAZGVyaXZpbmcgcXVpY2tjaGVja10gd2FudHMgdG8gYWNjZXNzXG4gICB0aGUgW0Jhc2VdIGxpYnJhcnkgZGlyZWN0bHksIGFuZCB3ZSdkIGJlIHNoYWRvd2luZyBpdC4gKilcbm1vZHVsZSBGIChVbmRlcmx5aW5nIDogQmFzZSkgOiBTIHdpdGggdHlwZSBiYXNlID0gVW5kZXJseWluZy50ID0gc3RydWN0XG4gIHR5cGUgYmFzZSA9IFVuZGVybHlpbmcudFxuXG4gIHR5cGUgdCA9XG4gICAgeyBiYXNlIDogVW5kZXJseWluZy50XG4gICAgOyBwb3MgOiBpbnRcbiAgICA7IGxlbiA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICAoKiBub3RlIHdlIG92ZXJyaWRlIHRoZSBnZW5lcmF0ZWQgW3F1aWNrY2hlY2tfZ2VuZXJhdG9yXSBiZWxvdywgb25jZSB3ZSd2ZSBkZWZpbmVkXG4gICAgIFtjcmVhdGVdICopXG5cbiAgKCoge1tcbiAgICAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgICAgYXNzZXJ0ICgwIDw9IHQucG9zKTtcbiAgICAgICAgIGFzc2VydCAoMCA8PSB0Lmxlbik7XG4gICAgICAgICBhc3NlcnQgKHQucG9zICsgdC5sZW4gPD0gQmFzZS5sZW5ndGggdC5iYXNlKTtcbiAgICAgICA7OyBdfSAqKVxuXG4gIGxldCBiYXNlIHQgPSB0LmJhc2VcbiAgbGV0IHBvcyB0ID0gdC5wb3NcbiAgbGV0IGxlbmd0aCB0ID0gdC5sZW5cbiAgbGV0IGlzX2VtcHR5IHQgPSBJbnQuZXF1YWwgdC5sZW4gMFxuXG4gIGxldCBiYXNlX29mX3N0cmluZyBzID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGJ1ZiA9IFVuZGVybHlpbmcuY3JlYXRlIGxlbiBpblxuICAgIFVuZGVybHlpbmcuYmxpdF9mcm9tX3N0cmluZyB+c3JjOnMgfmRzdDpidWYgKCk7XG4gICAgYnVmXG4gIDs7XG5cbiAgbGV0IGJhc2Vfb2ZfYmlnc3RyaW5nIHMgPVxuICAgIGxldCBsZW4gPSBCaWdzdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYnVmID0gVW5kZXJseWluZy5jcmVhdGUgbGVuIGluXG4gICAgVW5kZXJseWluZy5ibGl0X2Zyb21fYmlnc3RyaW5nIH5zcmM6cyB+ZHN0OmJ1ZiAoKTtcbiAgICBidWZcbiAgOztcblxuICBsZXQgY3JlYXRlID9wb3MgP2xlbiBiYXNlID1cbiAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG5cbiAgICAgICAgKClcbiAgICAgICAgP3Bvc1xuICAgICAgICA/bGVuXG4gICAgICAgIH50b3RhbF9sZW5ndGg6KFVuZGVybHlpbmcubGVuZ3RoIGJhc2UpXG4gICAgaW5cbiAgICB7IGJhc2U7IHBvczsgbGVuIH1cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIGxldCBvcGVuIFF1aWNrY2hlY2suTGV0X3N5bnRheCBpblxuICAgIGxldCViaW5kIGJhc2UgPSBVbmRlcmx5aW5nLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIGluXG4gICAgbGV0IGJhc2VfbGVuID0gVW5kZXJseWluZy5sZW5ndGggYmFzZSBpblxuICAgIGxldCViaW5kIGxlbiA9IEludC5nZW5fdW5pZm9ybV9pbmNsIDAgYmFzZV9sZW4gaW5cbiAgICBsZXQlYmluZCBwb3MgPSBJbnQuZ2VuX3VuaWZvcm1faW5jbCAwIChiYXNlX2xlbiAtIGxlbikgaW5cbiAgICByZXR1cm4gKGNyZWF0ZSB+cG9zIH5sZW4gYmFzZSlcbiAgOztcblxuICBsZXQgZ2V0X25vX2JvdW5kc19jaGVjayB0IGkgPSBVbmRlcmx5aW5nLmdldCAoYmFzZSB0KSAocG9zIHQgKyBpKVxuXG4gIGxldCBnZXQgdCBpID1cbiAgICBpZiBpID49IDAgJiYgaSA8IGxlbmd0aCB0XG4gICAgdGhlbiBnZXRfbm9fYm91bmRzX2NoZWNrIHQgaVxuICAgIGVsc2UgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpXG4gIDs7XG5cbiAgbGV0IHN1YiA/cG9zID9sZW4gdCA9XG4gICAgbGV0IHBvcywgbGVuID1cbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgICBpblxuICAgIHsgYmFzZSA9IHQuYmFzZTsgcG9zID0gdC5wb3MgKyBwb3M7IGxlbiB9XG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXJnID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIG1vZHVsZSBFbHQgPSBDaGFyXG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCByZWMgZ28gYWNjIGkgPSBpZiBpID49IGxlbmd0aCB0IHRoZW4gYWNjIGVsc2UgZ28gKGYgYWNjIChnZXQgdCBpKSkgKGkgKyAxKSBpblxuICAgICAgZ28gaW5pdCAwIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgICAgICAgICAgIGYgKGdldCB0IGkpXG4gICAgICAgICAgIGRvbmUpXG4gICAgOztcblxuICAgIGxldCBmb2xkaSA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+aW5pdCB+ZiAtPlxuICAgICAgICAgICBsZXQgcmVjIGdvIGFjYyBpID1cbiAgICAgICAgICAgICBpZiBpID49IGxlbmd0aCB0IHRoZW4gYWNjIGVsc2UgZ28gKGYgaSBhY2MgKGdldF9ub19ib3VuZHNfY2hlY2sgdCBpKSkgKGkgKyAxKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBnbyBpbml0IDAgW0Bub250YWlsXSlcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXJpID1cbiAgICAgIGBDdXN0b21cbiAgICAgICAgKGZ1biB0IH5mIC0+XG4gICAgICAgICAgIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICAgICAgICAgICBmIGkgKGdldF9ub19ib3VuZHNfY2hlY2sgdCBpKVxuICAgICAgICAgICBkb25lKVxuICAgIDs7XG5cbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kXG5cbiAgbW9kdWxlIEMgPSBJbmRleGVkX2NvbnRhaW5lci5NYWtlMCAoTWFrZV9hcmcpXG5cbiAgbGV0IGZvbGQgPSBDLmZvbGRcbiAgbGV0IGl0ZXIgPSBDLml0ZXJcbiAgbGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxuICBsZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG4gICgqIFtDLnRvX2xpc3RdIGhhcyB0byBjb25zdHJ1Y3QgdGhlbiByZXZlcnNlIHRoZSBsaXN0ICopXG4gIGxldCB0b19saXN0IHQgPSBMaXN0LmluaXQgKGxlbmd0aCB0KSB+ZjooZ2V0IHQpXG4gIGxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbiAgbGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxuICBsZXQgZmluZCA9IEMuZmluZFxuICBsZXQgZXhpc3RzID0gQy5leGlzdHNcbiAgbGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbiAgbGV0IG1lbSA9IEMubWVtXG4gIGxldCBjb3VudCA9IEMuY291bnRcbiAgbGV0IHN1bSA9IEMuc3VtXG4gIGxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG4gIGxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG4gIGxldCBmb2xkaSA9IEMuZm9sZGlcbiAgbGV0IGl0ZXJpID0gQy5pdGVyaVxuICBsZXQgZXhpc3RzaSA9IEMuZXhpc3RzaVxuICBsZXQgZm9yX2FsbGkgPSBDLmZvcl9hbGxpXG4gIGxldCBjb3VudGkgPSBDLmNvdW50aVxuICBsZXQgZmluZGkgPSBDLmZpbmRpXG4gIGxldCBmaW5kX21hcGkgPSBDLmZpbmRfbWFwaVxuXG4gIGxldCB3cmFwX3N1Yl9uIHQgbiB+bmFtZSB+cG9zIH5sZW4gfm9uX2Vycm9yID1cbiAgICBpZiBuIDwgMFxuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIChuYW1lIF4gXCIgZXhwZWN0aW5nIG5vbm5lZ2F0aXZlIGFyZ3VtZW50XCIpXG4gICAgZWxzZSAoXG4gICAgICB0cnkgc3ViIHQgfnBvcyB+bGVuIHdpdGhcbiAgICAgIHwgXyAtPiBvbl9lcnJvcilcbiAgOztcblxuICBsZXQgZHJvcF9wcmVmaXggdCBuID1cbiAgICB3cmFwX3N1Yl9uXG4gICAgICB+bmFtZTpcImRyb3BfcHJlZml4XCJcbiAgICAgIHRcbiAgICAgIG5cbiAgICAgIH5wb3M6blxuICAgICAgfmxlbjoobGVuZ3RoIHQgLSBuKVxuICAgICAgfm9uX2Vycm9yOnsgdCB3aXRoIGxlbiA9IDAgfVxuICA7O1xuXG4gIGxldCBkcm9wX3N1ZmZpeCB0IG4gPVxuICAgIHdyYXBfc3ViX25cbiAgICAgIH5uYW1lOlwiZHJvcF9zdWZmaXhcIlxuICAgICAgdFxuICAgICAgblxuICAgICAgfnBvczowXG4gICAgICB+bGVuOihsZW5ndGggdCAtIG4pXG4gICAgICB+b25fZXJyb3I6eyB0IHdpdGggbGVuID0gMCB9XG4gIDs7XG5cbiAgbGV0IHByZWZpeCB0IG4gPSB3cmFwX3N1Yl9uIH5uYW1lOlwicHJlZml4XCIgdCBuIH5wb3M6MCB+bGVuOm4gfm9uX2Vycm9yOnRcbiAgbGV0IHN1ZmZpeCB0IG4gPSB3cmFwX3N1Yl9uIH5uYW1lOlwic3VmZml4XCIgdCBuIH5wb3M6KGxlbmd0aCB0IC0gbikgfmxlbjpuIH5vbl9lcnJvcjp0XG5cbiAgbGV0IGJsaXRfdG8gKHR5cGUgYSkgKGJsaXQgOiAoVW5kZXJseWluZy50LCBhKSBCbGl0LnQpIHQgfmRzdCB+ZHN0X3BvcyA9XG4gICAgYmxpdCB+c3JjOnQuYmFzZSB+c3JjX3Bvczp0LnBvcyB+c3JjX2xlbjp0LmxlbiB+ZHN0IH5kc3RfcG9zICgpXG4gIDs7XG5cbiAgbGV0IGJsaXRfdG9fc3RyaW5nID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRfdG9fYnl0ZXNcbiAgbGV0IGJsaXRfdG9fYnl0ZXMgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdF90b19ieXRlc1xuICBsZXQgYmxpdF90b19iaWdzdHJpbmcgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdF90b19iaWdzdHJpbmdcbiAgbGV0IGJsaXRfYmFzZSA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0XG5cbiAgbGV0IGJsaXRfZnJvbSB+bmFtZSAodHlwZSBhKSAoYmxpdCA6IChhLCBiYXNlKSBCbGl0LnQpIHQgfnNyYyB+c3JjX3BvcyB+bGVuID1cbiAgICBpZiBsZW4gPiB0LmxlblxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoZlxuICAgICAgICBcIlN1YnN0cmluZy5ibGl0X2Zyb21fJXMgbGVuID4gc3Vic3RyaW5nIGxlbmd0aCA6ICVkID4gJWRcIlxuICAgICAgICBuYW1lXG4gICAgICAgIGxlblxuICAgICAgICB0LmxlblxuICAgICAgICAoKTtcbiAgICBibGl0IH5zcmMgfnNyY19wb3MgfnNyY19sZW46bGVuIH5kc3Q6dC5iYXNlIH5kc3RfcG9zOnQucG9zICgpXG4gIDs7XG5cbiAgbGV0IGJsaXRfZnJvbV9zdHJpbmcgPSBibGl0X2Zyb20gfm5hbWU6XCJzdHJpbmdcIiBVbmRlcmx5aW5nLmJsaXRfZnJvbV9zdHJpbmdcbiAgbGV0IGJsaXRfZnJvbV9iaWdzdHJpbmcgPSBibGl0X2Zyb20gfm5hbWU6XCJiaWdzdHJpbmdcIiBVbmRlcmx5aW5nLmJsaXRfZnJvbV9iaWdzdHJpbmdcbiAgbGV0IG9mX2Jhc2UgYmFzZSA9IHsgYmFzZTsgcG9zID0gMDsgbGVuID0gVW5kZXJseWluZy5sZW5ndGggYmFzZSB9XG4gIGxldCBvZl9zdHJpbmcgeCA9IG9mX2Jhc2UgKGJhc2Vfb2Zfc3RyaW5nIHgpXG4gIGxldCBvZl9iaWdzdHJpbmcgeCA9IG9mX2Jhc2UgKGJhc2Vfb2ZfYmlnc3RyaW5nIHgpXG5cbiAgbGV0IG1ha2UgKHR5cGUgYSkgY3JlYXRlIChibGl0IDogKGJhc2UsIGEpIEJsaXQudCkgdCA9XG4gICAgbGV0IGRzdCA9IGNyZWF0ZSB0LmxlbiBpblxuICAgIGJsaXQgfnNyYzp0LmJhc2UgfnNyY19wb3M6dC5wb3MgfnNyY19sZW46dC5sZW4gfmRzdCB+ZHN0X3BvczowICgpO1xuICAgIGRzdFxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgeCA9XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZ1xuICAgICAgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KG1ha2UgQnl0ZXMuY3JlYXRlIFVuZGVybHlpbmcuYmxpdF90b19ieXRlcyB4KVxuICA7O1xuXG4gIGxldCB0b19iaWdzdHJpbmcgPSBtYWtlIEJpZ3N0cmluZy5jcmVhdGUgVW5kZXJseWluZy5ibGl0X3RvX2JpZ3N0cmluZ1xuXG4gIGxldCBjb25jYXRfZ2VuIGNyZWF0ZV9kc3QgYmxpdF9kc3QgdHMgPVxuICAgIGxldCBsZW4gPSBMaXN0LmZvbGQgdHMgfmluaXQ6MCB+ZjooZnVuIGxlbiB0IC0+IGxlbiArIGxlbmd0aCB0KSBpblxuICAgIGxldCBkc3QgPSBjcmVhdGVfZHN0IGxlbiBpblxuICAgIGlnbm9yZVxuICAgICAgKExpc3QuZm9sZCB0cyB+aW5pdDowIH5mOihmdW4gZHN0X3BvcyB0IC0+XG4gICAgICAgICBibGl0X2RzdCB0IH5kc3QgfmRzdF9wb3M7XG4gICAgICAgICBkc3RfcG9zICsgbGVuZ3RoIHQpXG4gICAgICAgOiBpbnQpO1xuICAgIGRzdFxuICA7O1xuXG4gIGxldCBjb25jYXQgdHMgPSBvZl9iYXNlIChjb25jYXRfZ2VuIFVuZGVybHlpbmcuY3JlYXRlIGJsaXRfYmFzZSB0cylcblxuICBsZXQgY29uY2F0X3N0cmluZyB0cyA9XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZ1xuICAgICAgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KGNvbmNhdF9nZW4gQnl0ZXMuY3JlYXRlIGJsaXRfdG9fc3RyaW5nIHRzKVxuICA7O1xuXG4gIGxldCBjb25jYXRfYmlnc3RyaW5nIHRzID0gY29uY2F0X2dlbiBCaWdzdHJpbmcuY3JlYXRlIGJsaXRfdG9fYmlnc3RyaW5nIHRzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTID0gTWFrZV9zdWJzdHJpbmcuU1xuXG5pbmNsdWRlIE1ha2Vfc3Vic3RyaW5nLkYgKHN0cnVjdFxuICAgIHR5cGUgdCA9IEJ5dGVzLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICAgIGxldCBjcmVhdGUgPSBCeXRlcy5jcmVhdGVcbiAgICBsZXQgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoXG4gICAgbGV0IGdldCA9IEJ5dGVzLmdldFxuXG4gICAgbW9kdWxlIEJsaXQgPSBNYWtlX3N1YnN0cmluZy5CbGl0XG5cbiAgICBsZXQgYmxpdCA9IEJsaXQuYnl0ZXNfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19zdHJpbmcgPSBCbGl0LmJ5dGVzX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fYnl0ZXMgPSBCbGl0LmJ5dGVzX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fYmlnc3RyaW5nID0gQmxpdC5ieXRlc19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF9mcm9tX3N0cmluZyA9IEJsaXQuc3RyaW5nX2J5dGVzXG4gICAgbGV0IGJsaXRfZnJvbV9iaWdzdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19ieXRlc1xuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5pbmNsdWRlIFN0cmluZ19pZF9pbnRmXG5cbm1vZHVsZSBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlcl93aXRoX2Jpbl9zaGFwZSAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCB2YWxpZGF0ZSA6IHN0cmluZyAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICB2YWwgaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb24gOiBib29sXG4gICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9wcm90LlNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBzdHJpbmdcbiAgICAgICAgW0BAZGVyaXZpbmdcbiAgICAgICAgICBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICAgIGxldCBjaGVja19mb3Jfd2hpdGVzcGFjZSA9XG4gICAgICAgICAgbGV0IGludmFsaWQgcyByZWFzb24gPVxuICAgICAgICAgICAgRXJyb3IgKHNwcmludGYgXCInJXMnIGlzIG5vdCBhIHZhbGlkICVzIGJlY2F1c2UgJXNcIiBzIE0ubW9kdWxlX25hbWUgcmVhc29uKVxuICAgICAgICAgIGluXG4gICAgICAgICAgZnVuIHMgLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgIGlmIEludC4oID0gKSBsZW4gMFxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkIHMgXCJpdCBpcyBlbXB0eVwiXG4gICAgICAgICAgICBlbHNlIGlmIENoYXIuaXNfd2hpdGVzcGFjZSBzLlswXSB8fCBDaGFyLmlzX3doaXRlc3BhY2Ugcy5bbGVuIC0gMV1cbiAgICAgICAgICAgIHRoZW4gaW52YWxpZCBzIFwiaXQgaGFzIHdoaXRlc3BhY2Ugb24gdGhlIGVkZ2VcIlxuICAgICAgICAgICAgZWxzZSBPayAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB2YWxpZGF0ZSBzID0gUmVzdWx0Lm1hcF9lcnJvciAoTS52YWxpZGF0ZSBzKSB+ZjpFcnJvci50b19zdHJpbmdfbWFjaFxuXG4gICAgICAgIGxldCBjaGVjayBzID1cbiAgICAgICAgICBpZiBNLmluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaCBjaGVja19mb3Jfd2hpdGVzcGFjZSBzIHdpdGhcbiAgICAgICAgICAgIHwgT2sgKCkgLT4gdmFsaWRhdGUgc1xuICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciBlcnJvcilcbiAgICAgICAgICBlbHNlIHZhbGlkYXRlIHNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gRm4uaWRcbiAgICAgICAgbGV0IHBwID0gU3RyaW5nLnBwXG5cbiAgICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgICBtYXRjaCBjaGVjayBzIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IHNcbiAgICAgICAgICB8IEVycm9yIGVyciAtPiBpbnZhbGlkX2FyZyBlcnJcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIGxldCBzID0gU3RyaW5nLlN0YWJsZS5WMS50X29mX3NleHAgc2V4cCBpblxuICAgICAgICAgIG1hdGNoIGNoZWNrIHMgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gc1xuICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IG9mX3NleHBfZXJyb3IgZXJyIHNleHBcbiAgICAgICAgOztcblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgICAgKFN0cmluZylcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RyaW5nXG4gICAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgICAgICBsZXQgb3BlbiBCaW5fcHJvdC5TaGFwZSBpblxuICAgICAgICAgIG1hdGNoIE0uY2FsbGVyX2lkZW50aXR5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYmluX3NoYXBlX3RcbiAgICAgICAgICB8IFNvbWUgdXVpZCAtPiBhbm5vdGF0ZSB1dWlkIGJpbl9zaGFwZV90XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFRfd2l0aF9jb21wYXJhdG9yID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgVFxuICAgICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUX3dpdGhfY29tcGFyYXRvclxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFRfd2l0aF9jb21wYXJhdG9yKVxuICAgICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUX3dpdGhfY29tcGFyYXRvcilcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YWJsZV9sYXRlc3QgPSBTdGFibGUuVjFcbiAgaW5jbHVkZSBTdGFibGVfbGF0ZXN0LlRfd2l0aF9jb21wYXJhdG9yXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoU3RhYmxlX2xhdGVzdC5UX3dpdGhfY29tcGFyYXRvcilcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFN0YWJsZV9sYXRlc3QuVF93aXRoX2NvbXBhcmF0b3IpXG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBRdWlja2NoZWNrLlNocmlua2VyLmVtcHR5ICgpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gU3RyaW5nLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFN0cmluZy5nZW5fbm9uZW1wdHknIENoYXIuZ2VuX3ByaW50XG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyIH5mOihmdW4gc3RyaW5nIC0+IGNoZWNrIHN0cmluZyB8PiBSZXN1bHQuaXNfb2spXG4gIDs7XG5cbiAgbGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgb2Zfc3RyaW5nXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHZhbGlkYXRlIDogc3RyaW5nIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA6IGJvb2xcbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBpbmNsdWRlXG4gICAgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXJfd2l0aF9iaW5fc2hhcGVcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBNXG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgICAgIGVuZClcbiAgICAgICgpXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aG91dF9wcmV0dHlfcHJpbnRlciAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGVcbiAgICBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlclxuICAgICAgKHN0cnVjdFxuICAgICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICAgIGxldCB2YWxpZGF0ZSA9IEZuLmNvbnN0IChPayAoKSlcbiAgICAgICAgbGV0IGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uID0gdHJ1ZVxuICAgICAgZW5kKVxuICAgICAgKClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX3ZhbGlkYXRlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHZhbGlkYXRlIDogc3RyaW5nIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA6IGJvb2xcbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNKSAoKVxuXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNKSAoKVxuXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2Rpc3RpbmN0X2Jpbl9zaGFwZSAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fcHJvdC5TaGFwZS5VdWlkLnRcbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBpbmNsdWRlXG4gICAgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXJfd2l0aF9iaW5fc2hhcGVcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgICAgICBsZXQgdmFsaWRhdGUgPSBGbi5jb25zdCAoT2sgKCkpXG4gICAgICAgIGxldCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA9IHRydWVcbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IFNvbWUgTS5jYWxsZXJfaWRlbnRpdHlcbiAgICAgIGVuZClcbiAgICAgICgpXG5cbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgZW5kKVxuZW5kXG5cbmluY2x1ZGVcbiAgTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5TdHJpbmdfaWRcIlxuICAgIGVuZClcbiAgICAoKVxuXG5tb2R1bGUgU3RyaW5nX3dpdGhvdXRfdmFsaWRhdGlvbl93aXRob3V0X3ByZXR0eV9wcmludGVyID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGdsb2JhbGl6ZSA9IGdsb2JhbGl6ZV9zdHJpbmdcbiAgbGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgRm4uaWRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBTdGFibGVfdW5pdF90ZXN0X2ludGZcblxubW9kdWxlIE1ha2Vfc2V4cF9kZXNlcmlhbGl6YXRpb25fdGVzdCAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGxldCV0ZXN0X3VuaXQgXCJzZXhwIGRlc2VyaWFsaXphdGlvblwiID1cbiAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG4gICAgICAoTGlzdC5tYXAgVC50ZXN0cyB+ZjooZnVuICh0LCBzZXhwX2FzX3N0cmluZywgXykgLT5cbiAgICAgICAgIG1hdGNoXG4gICAgICAgICAgIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgICBzZXhwX2FzX3N0cmluZyB8PiBTZXhwLm9mX3N0cmluZyB8PiBbJW9mX3NleHA6IFQudF0pXG4gICAgICAgICB3aXRoXG4gICAgICAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT5cbiAgICAgICAgICAgT3JfZXJyb3IudGFnX2FyZ1xuICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgXCJjb3VsZCBub3QgZGVzZXJpYWxpemUgc2V4cFwiXG4gICAgICAgICAgICAgKHNleHBfYXNfc3RyaW5nLCBgRXhwZWN0ZWQgdClcbiAgICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIFsgYEV4cGVjdGVkIG9mIFQudCBdXVxuICAgICAgICAgfCBPayB0JyAtPlxuICAgICAgICAgICBpZiBULmVxdWFsIHQgdCdcbiAgICAgICAgICAgdGhlbiBPayAoKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAgICAgIFwic2V4cCBkZXNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSkpXG4gICAgfD4gb2tfZXhuXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2Vfc2V4cF9zZXJpYWxpemF0aW9uX3Rlc3QgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBsZXQldGVzdF91bml0IFwic2V4cCBzZXJpYWxpemF0aW9uXCIgPVxuICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgIChMaXN0Lm1hcCBULnRlc3RzIH5mOihmdW4gKHQsIHNleHBfYXNfc3RyaW5nLCBfKSAtPlxuICAgICAgICAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICBsZXQgc2V4cCA9IFNleHAub2Zfc3RyaW5nIHNleHBfYXNfc3RyaW5nIGluXG4gICAgICAgICAgIGxldCBzZXJpYWxpemVkX3NleHAgPSBULnNleHBfb2ZfdCB0IGluXG4gICAgICAgICAgIGlmIFNleHAuKCA8PiApIHNlcmlhbGl6ZWRfc2V4cCBzZXhwXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgIFwic2V4cCBzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAgICAgIChgRXhwZWN0ZWQgc2V4cCwgYEJ1dF9nb3Qgc2VyaWFsaXplZF9zZXhwKVxuICAgICAgICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBTZXhwLnQgXSAqIFsgYEJ1dF9nb3Qgb2YgU2V4cC50IF1dKSkpXG4gICAgfD4gb2tfZXhuXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluX2lvX3Rlc3QgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBsZXQldGVzdF91bml0IFwiYmluX2lvXCIgPVxuICAgIExpc3QuaXRlciBULnRlc3RzIH5mOihmdW4gKHQsIF8sIGV4cGVjdGVkX2Jpbl9pbykgLT5cbiAgICAgIGxldCBiaW5hYmxlX20gPSAobW9kdWxlIFQgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgPSBULnQpIGluXG4gICAgICBsZXQgdG9fYmluX3N0cmluZyB0ID0gQmluYWJsZS50b19zdHJpbmcgYmluYWJsZV9tIHQgaW5cbiAgICAgIGxldCBzZXJpYWxpemVkX2Jpbl9pbyA9IHRvX2Jpbl9zdHJpbmcgdCBpblxuICAgICAgaWYgU3RyaW5nLiggPD4gKSBzZXJpYWxpemVkX2Jpbl9pbyBleHBlY3RlZF9iaW5faW9cbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiYmluX2lvIHNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICh0LCBgRXhwZWN0ZWQgZXhwZWN0ZWRfYmluX2lvLCBgQnV0X2dvdCBzZXJpYWxpemVkX2Jpbl9pbylcbiAgICAgICAgICBbJXNleHBfb2Y6IFQudCAqIFsgYEV4cGVjdGVkIG9mIHN0cmluZyBdICogWyBgQnV0X2dvdCBvZiBzdHJpbmcgXV07XG4gICAgICBsZXQgdCcgPSBCaW5hYmxlLm9mX3N0cmluZyBiaW5hYmxlX20gc2VyaWFsaXplZF9iaW5faW8gaW5cbiAgICAgIGlmIG5vdCAoVC5lcXVhbCB0IHQnKVxuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJiaW5faW8gZGVzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIHQsIGBCdXRfZ290IHQnKVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9zZXhwX2Rlc2VyaWFsaXphdGlvbl90ZXN0IChUKVxuICBpbmNsdWRlIE1ha2Vfc2V4cF9zZXJpYWxpemF0aW9uX3Rlc3QgKFQpXG4gIGluY2x1ZGUgTWFrZV9iaW5faW9fdGVzdCAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV91bm9yZGVyZWRfY29udGFpbmVyIChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLlVub3JkZXJlZF9jb250YWluZXJfYXJnKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFRlc3QgPSBTdGFibGVfdW5pdF90ZXN0X2ludGYuVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0XG5cbiAgbGV0JXRlc3RfdW5pdCBcInNleHBcIiA9XG4gICAgTGlzdC5pdGVyIFQudGVzdHMgfmY6KGZ1biAodCwgeyBUZXN0LnNleHBzOyBfIH0pIC0+XG4gICAgICBsZXQgc2V4cHMgPSBMaXN0Lm1hcCBzZXhwcyB+ZjpTZXhwLm9mX3N0cmluZyBpblxuICAgICAgbGV0IHNlcmlhbGl6ZWRfZWxlbWVudHMgPVxuICAgICAgICBtYXRjaCBULnNleHBfb2ZfdCB0IHdpdGhcbiAgICAgICAgfCBTZXhwLkxpc3Qgc2V4cHMgLT4gc2V4cHNcbiAgICAgICAgfCBTZXhwLkF0b20gXyAtPlxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJleHBlY3RlZCBsaXN0IHdoZW4gc2VyaWFsaXppbmcgdW5vcmRlcmVkIGNvbnRhaW5lclwiXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBULnNleHBfb2ZfdFxuICAgICAgaW5cbiAgICAgIGxldCBzb3J0ZWRfc2V4cHMgPSBMaXN0LnNvcnQgfmNvbXBhcmU6U2V4cC5jb21wYXJlIHNleHBzIGluXG4gICAgICBsZXQgc29ydGVkX3NlcmlhbGl6ZWQgPSBMaXN0LnNvcnQgfmNvbXBhcmU6U2V4cC5jb21wYXJlIHNlcmlhbGl6ZWRfZWxlbWVudHMgaW5cbiAgICAgIGlmIG5vdCAoTGlzdC5lcXVhbCBTZXhwLiggPSApIHNvcnRlZF9zZXhwcyBzb3J0ZWRfc2VyaWFsaXplZClcbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwic2V4cCBzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIHNleHBzLCBgQnV0X2dvdCBzZXJpYWxpemVkX2VsZW1lbnRzKVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgU2V4cC50IGxpc3QgXSAqIFsgYEJ1dF9nb3Qgb2YgU2V4cC50IGxpc3QgXV07XG4gICAgICBsZXQgc2V4cF9wZXJtdXRhdGlvbnMgPSBMaXN0LmluaXQgMTAgfmY6KGZ1biBfIC0+IExpc3QucGVybXV0ZSBzZXhwcykgaW5cbiAgICAgIExpc3QuaXRlciBzZXhwX3Blcm11dGF0aW9ucyB+ZjooZnVuIHNleHBzIC0+XG4gICAgICAgIGxldCB0JyA9IFQudF9vZl9zZXhwIChTZXhwLkxpc3Qgc2V4cHMpIGluXG4gICAgICAgIGlmIG5vdCAoVC5lcXVhbCB0IHQnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcInNleHAgZGVzZXJpYWxpemF0aW9uIG1zaW1hdGNoXCJcbiAgICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pKVxuICA7O1xuXG4gIGxldCByZWMgaXNfY29uY2F0ZW5hdGlvbiBzdHJpbmcgc3RyaW5ncyA9XG4gICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZ1xuICAgIHRoZW4gTGlzdC5mb3JfYWxsIHN0cmluZ3MgfmY6U3RyaW5nLmlzX2VtcHR5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgcmV2X3NraXBwZWQgc3RyaW5ncyA9XG4gICAgICAgIG1hdGNoIHN0cmluZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICAgIHwgcHJlZml4IDo6IHN0cmluZ3MgLT5cbiAgICAgICAgICBsZXQgY29udGludWUgKCkgPSBsb29wIChwcmVmaXggOjogcmV2X3NraXBwZWQpIHN0cmluZ3MgaW5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmNob3BfcHJlZml4IH5wcmVmaXggc3RyaW5nIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IGNvbnRpbnVlICgpXG4gICAgICAgICAgIHwgU29tZSBzdHJpbmcgLT5cbiAgICAgICAgICAgICBpc19jb25jYXRlbmF0aW9uIHN0cmluZyAoTGlzdC5yZXZfYXBwZW5kIHJldl9za2lwcGVkIHN0cmluZ3MpIHx8IGNvbnRpbnVlICgpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgW10gc3RyaW5ncylcbiAgOztcblxuICBsZXQldGVzdF91bml0IFwiYmluX2lvXCIgPVxuICAgIExpc3QuaXRlciBULnRlc3RzIH5mOihmdW4gKHQsIHsgVGVzdC5iaW5faW9faGVhZGVyOyBiaW5faW9fZWxlbWVudHM7IF8gfSkgLT5cbiAgICAgIGxldCBiaW5hYmxlX20gPSAobW9kdWxlIFQgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgPSBULnQpIGluXG4gICAgICBsZXQgZWxlbWVudHMgPSBiaW5faW9fZWxlbWVudHMgaW5cbiAgICAgIGxldCBiaW5faW9fb2ZfZWxlbWVudHMgZWxlbWVudHMgPSBiaW5faW9faGVhZGVyIF4gU3RyaW5nLmNvbmNhdCBlbGVtZW50cyBpblxuICAgICAgbGV0IHNlcmlhbGl6ZWQgPSBCaW5hYmxlLnRvX3N0cmluZyBiaW5hYmxlX20gdCBpblxuICAgICAgbGV0IHNlcmlhbGl6YXRpb25fbWF0Y2hlcyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5jaG9wX3ByZWZpeCB+cHJlZml4OmJpbl9pb19oZWFkZXIgc2VyaWFsaXplZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgZWxlbWVudHNfc3RyaW5nIC0+IGlzX2NvbmNhdGVuYXRpb24gZWxlbWVudHNfc3RyaW5nIGVsZW1lbnRzXG4gICAgICBpblxuICAgICAgaWYgbm90IHNlcmlhbGl6YXRpb25fbWF0Y2hlc1xuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIChiaW5faW9faGVhZGVyLCBlbGVtZW50cyksIGBCdXRfZ290IHNlcmlhbGl6ZWQpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBzdHJpbmcgKiBzdHJpbmcgbGlzdCBdICogWyBgQnV0X2dvdCBvZiBzdHJpbmcgXV07XG4gICAgICBsZXQgcGVybXV0YXRhdGlvbnMgPSBMaXN0LmluaXQgMTAgfmY6KGZ1biBfIC0+IExpc3QucGVybXV0ZSBlbGVtZW50cykgaW5cbiAgICAgIExpc3QuaXRlciBwZXJtdXRhdGF0aW9ucyB+ZjooZnVuIGVsZW1lbnRzIC0+XG4gICAgICAgIGxldCB0JyA9IEJpbmFibGUub2Zfc3RyaW5nIGJpbmFibGVfbSAoYmluX2lvX29mX2VsZW1lbnRzIGVsZW1lbnRzKSBpblxuICAgICAgICBpZiBub3QgKFQuZXF1YWwgdCB0JylcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJiaW4taW8gZGVzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pKVxuICA7O1xuZW5kXG5cbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxuKCogVGhlIG1vZHVsZSBbVF0gc2VydmVzIHRvIGVuZm9yY2UgdGhlIGludmFyaWFudCB0aGF0IGFsbCBCbGFuZy50IHZhbHVlcyBhcmUgaW4gYVxuICAgbm9ybWFsIGZvcm0gd2hlcmVieSBib29sZWFuIGNvbnN0YW50cyBUcnVlIGFuZCBGYWxzZSBvbmx5IGFwcGVhciBhcyB0aGUgdG9wbW9zdFxuICAgY29uc3RydWN0b3IgLS0gaW4gYW55IG90aGVyIHBvc2l0aW9uIHRoZXkgYXJlIHNpbXBsaWZpZWQgYXdheSB1c2luZyBsYXdzIG9mXG4gICBib29sZWFuIGFsZ2VicmEuXG5cbiAgIFdlIGFsc28gZW5mb3JjZSB0aGF0IG5lc3RlZCBbQW5kXXMgYW5kIFtPcl1zIGVhY2ggbGVhbiB0byB0aGUgcmlnaHQgc28gdGhhdCBbZXZhbF1cbiAgIGRvZXNuJ3QgbmVlZCBzbyBtdWNoIHN0YWNrIHNwYWNlIGFzIGl0IHdvdWxkIGlmIHRoZXkgbGVhbmVkIHRvIHRoZSBsZWZ0LiAgVGhvdWdodFxuICAgZXhwZXJpbWVudDogY29tcGFyZSBob3cgW2V2YWxdIHdvcmtzIG9uIHJpZ2h0LWxlYW5pbmcgW0FuZCAoYSwgQW5kIChiLCBBbmQgKGMsIGQpKSldXG4gICB2ZXJzdXMgbGVmdC1sZWFuaW5nIFtBbmQgKEFuZCAoQW5kIChhLCBiKSwgYyksIGQpXS4gIFRoZSBmb3JtZXIgaXMgdGhlIGJlc3QgY2FzZSBhbmQgaXNcbiAgIGVuZm9yY2VkLlxuXG4gICBOb3RlOiB0aGlzIGZpbGUgZGV2aWF0ZXMgZnJvbSB0aGUgdXN1YWwgcGF0dGVybiBvZiBtb2R1bGVzIHdpdGggU3RhYmxlIGludGVyZmFjZXMgaW5cbiAgIHRoYXQgdGhlIFN0YWJsZSBzdWItbW9kdWxlIGlzIG5vdCB0aGUgZmlyc3QgdGhpbmcgdG8gYmUgZGVmaW5lZCBpbiB0aGUgbW9kdWxlLiAgVGhlXG4gICByZWFzb24gZm9yIHRoaXMgZGV2aWF0aW9uIGlzIHNvIHRoYXQgb25lIGNhbiBjb252aW5jZSBvbmVzZWxmIG9mIHRoZSBhZm9yZW1lbnRpb25lZFxuICAgaW52YXJpYW50IGFmdGVyIHJlYWRpbmcgb25seSB0aGlzIHNtYWxsIGFtb3VudCBvZiBjb2RlLiAgQWZ0ZXIgZGVmaW5pbmcgVCB3ZSB0aGVuXG4gICBpbW1lZGlhdGVseSBkZWZpbmUgaXRzIFN0YWJsZSBpbnRlcmZhY2UuXG4qKVxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSArJ2EgdCA9IHByaXZhdGVcbiAgICB8IFRydWVcbiAgICB8IEZhbHNlXG4gICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgfCBOb3Qgb2YgJ2EgdFxuICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgfCBCYXNlIG9mICdhXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHR5cGVyZXBdXG5cbiAgdmFsIGludmFyaWFudCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgdHJ1ZV8gOiAnYSB0XG4gIHZhbCBmYWxzZV8gOiAnYSB0XG4gIHZhbCBub3RfIDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhbmRhbHNvIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIG9yZWxzZSA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBpZl8gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBiYXNlIDogJ2EgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKydhIHQgPVxuICAgIHwgVHJ1ZVxuICAgIHwgRmFsc2VcbiAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICB8IE5vdCBvZiAnYSB0XG4gICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICB8IEJhc2Ugb2YgJ2FcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgdHlwZXJlcF1cblxuICBsZXQgaW52YXJpYW50ID1cbiAgICBsZXQgc3VidGVybXMgPSBmdW5jdGlvblxuICAgICAgfCBUcnVlIHwgRmFsc2UgfCBCYXNlIF8gLT4gW11cbiAgICAgIHwgTm90IHQxIC0+IFsgdDEgXVxuICAgICAgfCBBbmQgKHQxLCB0MikgfCBPciAodDEsIHQyKSAtPiBbIHQxOyB0MiBdXG4gICAgICB8IElmICh0MSwgdDIsIHQzKSAtPiBbIHQxOyB0MjsgdDMgXVxuICAgIGluXG4gICAgbGV0IHJlYyBjb250YWluc19ub19jb25zdGFudHMgPSBmdW5jdGlvblxuICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IHQgLT4gTGlzdC5pdGVyIH5mOmNvbnRhaW5zX25vX2NvbnN0YW50cyAoc3VidGVybXMgdClcbiAgICBpblxuICAgIGZ1biB0IC0+IExpc3QuaXRlciB+Zjpjb250YWluc19ub19jb25zdGFudHMgKHN1YnRlcm1zIHQpXG4gIDs7XG5cbiAgbGV0IHRydWVfID0gVHJ1ZVxuICBsZXQgZmFsc2VfID0gRmFsc2VcbiAgbGV0IGJhc2UgdiA9IEJhc2UgdlxuXG4gIGxldCBub3RfID0gZnVuY3Rpb25cbiAgICB8IFRydWUgLT4gRmFsc2VcbiAgICB8IEZhbHNlIC0+IFRydWVcbiAgICB8IE5vdCB0IC0+IHRcbiAgICB8IHQgLT4gTm90IHRcbiAgOztcblxuICBsZXQgcmVjIGFuZGFsc28gdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBfLCBGYWxzZSB8IEZhbHNlLCBfIC0+IEZhbHNlXG4gICAgfCBvdGhlciwgVHJ1ZSB8IFRydWUsIG90aGVyIC0+IG90aGVyXG4gICAgfCBBbmQgKHQxYSwgdDFiKSwgXyAtPlxuICAgICAgKCogbmVzdGVkIFtBbmRdcyBsZWFuIHJpZ2h0IC0tIHNlZSBjb21tZW50IGFib3ZlICopXG4gICAgICBBbmQgKHQxYSwgYW5kYWxzbyB0MWIgdDIpXG4gICAgfCBfIC0+IEFuZCAodDEsIHQyKVxuICA7O1xuXG4gIGxldCByZWMgb3JlbHNlIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgXywgVHJ1ZSB8IFRydWUsIF8gLT4gVHJ1ZVxuICAgIHwgb3RoZXIsIEZhbHNlIHwgRmFsc2UsIG90aGVyIC0+IG90aGVyXG4gICAgfCBPciAodDFhLCB0MWIpLCBfIC0+XG4gICAgICAoKiBuZXN0ZWQgW09yXXMgbGVhbiByaWdodCAtLSBzZWUgY29tbWVudCBhYm92ZSAqKVxuICAgICAgT3IgKHQxYSwgb3JlbHNlIHQxYiB0MilcbiAgICB8IF8gLT4gT3IgKHQxLCB0MilcbiAgOztcblxuICBsZXQgaWZfIGEgYiBjID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IFRydWUgLT4gYlxuICAgIHwgRmFsc2UgLT4gY1xuICAgIHwgXyAtPlxuICAgICAgKG1hdGNoIGIsIGMgd2l0aFxuICAgICAgIHwgVHJ1ZSwgXyAtPiBvcmVsc2UgYSBjXG4gICAgICAgfCBfLCBGYWxzZSAtPiBhbmRhbHNvIGEgYlxuICAgICAgIHwgXywgVHJ1ZSAtPiBvcmVsc2UgKG5vdF8gYSkgYlxuICAgICAgIHwgRmFsc2UsIF8gLT4gYW5kYWxzbyAobm90XyBhKSBjXG4gICAgICAgfCBfIC0+IElmIChhLCBiLCBjKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgUmF3ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFQudCA9IHByaXZhdGVcbiAgICB8IFRydWVcbiAgICB8IEZhbHNlXG4gICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgfCBOb3Qgb2YgJ2EgdFxuICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgfCBCYXNlIG9mICdhXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxuaW5jbHVkZSBUXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgKCogVEhJUyBUWVBFIEFORCBJVFMgU0VSSUFMSVpBVElPTlMgU0hPVUxEIE5FVkVSIEJFIENIQU5HRUQgLSBQTEVBU0UgU1BFQUsgV0lUSFxuICAgICAgIEFOT1RIRVIgREVWRUxPUEVSIElGIFlPVSBORUVEIE1PUkUgREVUQUlMICopXG5cbiAgICB0eXBlICdhIHQgPSAnYSBULnQgPSBwcml2YXRlXG4gICAgICB8IFRydWVcbiAgICAgIHwgRmFsc2VcbiAgICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgICB8IE5vdCBvZiAnYSB0XG4gICAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgICAgfCBCYXNlIG9mICdhXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzdGFibGVfd2l0bmVzcywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgICgqIHRoZSByZW1haW5kZXIgb2YgdGhpcyBzaWduYXR1cmUgY29uc2lzdHMgb2YgZnVuY3Rpb25zIHVzZWQgaW4gdGhlIGRlZmluaXRpb25zXG4gICAgICAgb2Ygc2V4cCBjb252ZXJzaW9ucyB0aGF0IGFyZSBhbHNvIHVzZWZ1bCBtb3JlIGdlbmVyYWxseSAqKVxuXG4gICAgdmFsIGFuZF8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICAgIHZhbCBvcl8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICAgIHZhbCBnYXRoZXJfY29uanVuY3RzIDogJ2EgdCAtPiAnYSB0IGxpc3RcbiAgICB2YWwgZ2F0aGVyX2Rpc2p1bmN0cyA6ICdhIHQgLT4gJ2EgdCBsaXN0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudCA9IHByaXZhdGVcbiAgICAgIHwgVHJ1ZVxuICAgICAgfCBGYWxzZVxuICAgICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgTm90IG9mICdhIHRcbiAgICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgICB8IEJhc2Ugb2YgJ2FcblxuICAgICgqIFRoaXMgdHlwZSBpcyBhc3N1bWVkIHRvIGJlIHN0YWJsZSBpZiB0aGUgJ2EgaXMgc3RhYmxlIChzZWUgYmlnIGNvbW1lbnQgYWJvdmUpLiAqKVxuICAgIGxldCBzdGFibGVfd2l0bmVzcyAoXyA6ICdhIFN0YWJsZV93aXRuZXNzLnQpIDogJ2EgdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICA7O1xuXG4gICAgaW5jbHVkZSAoXG4gICAgICBUIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaF1cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxuICAgIHR5cGUgc2V4cCA9IFNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2Ygc2V4cCBsaXN0XG5cbiAgICAoKiBjaGVhcCBpbXBvcnQgKilcblxuICAgICgqIGZsYXR0ZW4gb3V0IG5lc3RlZCBhbmQncyAqKVxuICAgIGxldCBnYXRoZXJfY29uanVuY3RzIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVHJ1ZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgICAgICB8IEFuZCAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgICAgIHwgdCA6OiB0cyAtPiBsb29wICh0IDo6IGFjYykgdHNcbiAgICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgICAgIGluXG4gICAgICBsb29wIFtdIFsgdCBdXG4gICAgOztcblxuICAgICgqIGZsYXR0ZW4gb3V0IG5lc3RlZCBvcidzICopXG4gICAgbGV0IGdhdGhlcl9kaXNqdW5jdHMgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgfCBGYWxzZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgICAgICB8IE9yICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICAgICAgfCB0IDo6IHRzIC0+IGxvb3AgKHQgOjogYWNjKSB0c1xuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgaW5cbiAgICAgIGxvb3AgW10gWyB0IF1cbiAgICA7O1xuXG4gICAgKCogW2FuZF9dIGFuZCBbb3JfXSB1c2UgW2ZvbGRfcmlnaHRdIGluc3RlYWQgb2YgW2ZvbGRfbGVmdF0gdG8gYXZvaWQgcXVhZHJhdGljXG4gICAgICAgYmVoYXZpb3Igd2l0aCBbYW5kYWxzb10gb3IgW29yZWxzZV0sIHJlc3BlY3RpdmVseS4gKilcbiAgICBsZXQgYW5kXyB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDp0cnVlXyB+ZjphbmRhbHNvXG4gICAgbGV0IG9yXyB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDpmYWxzZV8gfmY6b3JlbHNlXG5cbiAgICBsZXQgdW5hcnkgbmFtZSBhcmdzIHNleHAgPVxuICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICB8IFsgeCBdIC0+IHhcbiAgICAgIHwgXyAtPlxuICAgICAgICBsZXQgbiA9IExpc3QubGVuZ3RoIGFyZ3MgaW5cbiAgICAgICAgb2Zfc2V4cF9lcnJvciAoc3ByaW50ZiBcIiVzIGV4cGVjdHMgb25lIGFyZ3VtZW50LCAlZCBmb3VuZFwiIG5hbWUgbikgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgdGVybmFyeSBuYW1lIGFyZ3Mgc2V4cCA9XG4gICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgIHwgWyB4OyB5OyB6IF0gLT4geCwgeSwgelxuICAgICAgfCBfIC0+XG4gICAgICAgIGxldCBuID0gTGlzdC5sZW5ndGggYXJncyBpblxuICAgICAgICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXMgZXhwZWN0cyB0aHJlZSBhcmd1bWVudHMsICVkIGZvdW5kXCIgbmFtZSBuKSBzZXhwXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl92YWx1ZSB0ID1cbiAgICAgIGxldCByZWMgYXV4IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBCYXNlIHggLT4gc2V4cF9vZl92YWx1ZSB4XG4gICAgICAgIHwgVHJ1ZSAtPiBBdG9tIFwidHJ1ZVwiXG4gICAgICAgIHwgRmFsc2UgLT4gQXRvbSBcImZhbHNlXCJcbiAgICAgICAgfCBOb3QgdCAtPiBMaXN0IFsgQXRvbSBcIm5vdFwiOyBhdXggdCBdXG4gICAgICAgIHwgSWYgKHQxLCB0MiwgdDMpIC0+IExpc3QgWyBBdG9tIFwiaWZcIjsgYXV4IHQxOyBhdXggdDI7IGF1eCB0MyBdXG4gICAgICAgIHwgQW5kIF8gYXMgdCAtPlxuICAgICAgICAgIGxldCB0cyA9IGdhdGhlcl9jb25qdW5jdHMgdCBpblxuICAgICAgICAgIExpc3QgKEF0b20gXCJhbmRcIiA6OiBMaXN0Lm1hcCB+ZjphdXggdHMpXG4gICAgICAgIHwgT3IgXyBhcyB0IC0+XG4gICAgICAgICAgbGV0IHRzID0gZ2F0aGVyX2Rpc2p1bmN0cyB0IGluXG4gICAgICAgICAgTGlzdCAoQXRvbSBcIm9yXCIgOjogTGlzdC5tYXAgfmY6YXV4IHRzKVxuICAgICAgaW5cbiAgICAgIGF1eCB0XG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgYmFzZV9vZl9zZXhwIHNleHAgPVxuICAgICAgbGV0IGJhc2Ugc2V4cCA9IGJhc2UgKGJhc2Vfb2Zfc2V4cCBzZXhwKSBpblxuICAgICAgbGV0IHJlYyBhdXggc2V4cCA9XG4gICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICB8IEF0b20ga3cgLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmxvd2VyY2FzZSBrdyB3aXRoXG4gICAgICAgICAgIHwgXCJ0cnVlXCIgLT4gdHJ1ZV9cbiAgICAgICAgICAgfCBcImZhbHNlXCIgLT4gZmFsc2VfXG4gICAgICAgICAgIHwgXyAtPiBiYXNlIHNleHApXG4gICAgICAgIHwgTGlzdCAoQXRvbSBrdyA6OiBhcmdzKSAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcubG93ZXJjYXNlIGt3IHdpdGhcbiAgICAgICAgICAgfCBcImFuZFwiIC0+IGFuZF8gKExpc3QubWFwIH5mOmF1eCBhcmdzKVxuICAgICAgICAgICB8IFwib3JcIiAtPiBvcl8gKExpc3QubWFwIH5mOmF1eCBhcmdzKVxuICAgICAgICAgICB8IFwibm90XCIgLT4gbm90XyAoYXV4ICh1bmFyeSBcIm5vdFwiIGFyZ3Mgc2V4cCkpXG4gICAgICAgICAgIHwgXCJpZlwiIC0+XG4gICAgICAgICAgICAgbGV0IHgsIHksIHogPSB0ZXJuYXJ5IFwiaWZcIiBhcmdzIHNleHAgaW5cbiAgICAgICAgICAgICBpZl8gKGF1eCB4KSAoYXV4IHkpIChhdXggeilcbiAgICAgICAgICAgfCBfIC0+IGJhc2Ugc2V4cClcbiAgICAgICAgfCBfIC0+IGJhc2Ugc2V4cFxuICAgICAgaW5cbiAgICAgIGF1eCBzZXhwXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCA9XG4gICAgICBsZXQgZGVmbnMgOiBTZXhwbGliLlNleHBfZ3JhbW1hci5kZWZuIGxpc3QgPVxuICAgICAgICBsZXQgYmxhbmcgOiBTZXhwbGliLlNleHBfZ3JhbW1hci5ncmFtbWFyID0gUmVjdXJzaXZlIChcImJsYW5nXCIsIFsgVHl2YXIgXCJhXCIgXSkgaW5cbiAgICAgICAgWyB7IHR5Y29uID0gXCJibGFuZ1wiXG4gICAgICAgICAgOyB0eXZhcnMgPSBbIFwiYVwiIF1cbiAgICAgICAgICA7IGdyYW1tYXIgPVxuICAgICAgICAgICAgICBVbmlvblxuICAgICAgICAgICAgICAgIFsgVHl2YXIgXCJhXCJcbiAgICAgICAgICAgICAgICA7IFZhcmlhbnRcbiAgICAgICAgICAgICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9pbnNlbnNpdGl2ZVxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJ0cnVlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJmYWxzZVwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJpZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoYmxhbmcsIENvbnMgKGJsYW5nLCBDb25zIChibGFuZywgRW1wdHkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImFuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9IExpc3RfY2xhdXNlIHsgYXJncyA9IE1hbnkgYmxhbmcgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9IExpc3RfY2xhdXNlIHsgYXJncyA9IE1hbnkgYmxhbmcgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJub3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPSBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChibGFuZywgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICBpblxuICAgICAgZnVuIGJhc2VfZ3JhbW1hciAtPiB7IHVudHlwZWQgPSBUeWNvbiAoXCJibGFuZ1wiLCBbIGJhc2VfZ3JhbW1hci51bnR5cGVkIF0sIGRlZm5zKSB9XG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoU3RhYmxlLlYxIDogbW9kdWxlIHR5cGUgb2YgU3RhYmxlLlYxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbmxldCBjb25zdGFudCBiID0gaWYgYiB0aGVuIHRydWVfIGVsc2UgZmFsc2VfXG5cbm1vZHVsZSB0eXBlIENvbnN0cnVjdG9ycyA9IHNpZ1xuICB2YWwgYmFzZSA6ICdhIC0+ICdhIHRcbiAgdmFsIHRydWVfIDogXyB0XG4gIHZhbCBmYWxzZV8gOiBfIHRcbiAgdmFsIGNvbnN0YW50IDogYm9vbCAtPiBfIHRcbiAgdmFsIG5vdF8gOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGFuZF8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgb3JfIDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIGlmXyA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFRcblxuICBsZXQgbm90ID0gbm90X1xuICBsZXQgYW5kXyA9IGFuZF9cbiAgbGV0IG9yXyA9IG9yX1xuICBsZXQgY29uc3RhbnQgPSBjb25zdGFudFxuICBsZXQgKCAmJiApID0gYW5kYWxzb1xuICBsZXQgKCB8fCApID0gb3JlbHNlXG4gIGxldCAoID09PiApIGEgYiA9IChub3QgYSkgfHwgYlxuZW5kXG5cbmxldCBjb25zdGFudF92YWx1ZSA9IGZ1bmN0aW9uXG4gIHwgVHJ1ZSAtPiBTb21lIHRydWVcbiAgfCBGYWxzZSAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG47O1xuXG4oKiBbdmFsdWVzIHRdIGxpc3RzIHRoZSBiYXNlIHByZWRpY2F0ZXMgaW4gW3RdIGZyb20gbGVmdCB0byByaWdodCAqKVxubGV0IHZhbHVlcyB0ID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlIHYgOjogdHMgLT4gbG9vcCAodiA6OiBhY2MpIHRzXG4gICAgfCBUcnVlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgfCBGYWxzZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgIHwgTm90IHQxIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0cylcbiAgICB8IEFuZCAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgfCBPciAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgfCBJZiAodDEsIHQyLCB0MykgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHQyIDo6IHQzIDo6IHRzKVxuICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gIGluXG4gIGxvb3AgW10gWyB0IF1cbjs7XG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjIHQgcGVuZGluZyA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEJhc2UgYSAtPiBuZXh0IChmIGFjYyBhKSBwZW5kaW5nXG4gICAgICAgIHwgVHJ1ZSB8IEZhbHNlIC0+IG5leHQgYWNjIHBlbmRpbmdcbiAgICAgICAgfCBOb3QgdCAtPiBsb29wIGFjYyB0IHBlbmRpbmdcbiAgICAgICAgfCBBbmQgKHQxLCB0MikgfCBPciAodDEsIHQyKSAtPiBsb29wIGFjYyB0MSAodDIgOjogcGVuZGluZylcbiAgICAgICAgfCBJZiAodDEsIHQyLCB0MykgLT4gbG9vcCBhY2MgdDEgKHQyIDo6IHQzIDo6IHBlbmRpbmcpXG4gICAgICBhbmQgbmV4dCBhY2MgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICB8IHQgOjogdHMgLT4gbG9vcCBhY2MgdCB0c1xuICAgICAgaW5cbiAgICAgIGxvb3AgaW5pdCB0IFtdIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgICBsZXQgbGVuZ3RoID0gYERlZmluZV91c2luZ19mb2xkXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZCA9IEMuZm9sZFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBpc19lbXB0eSA9IEMuaXNfZW1wdHlcbmxldCBpdGVyID0gQy5pdGVyXG5sZXQgbGVuZ3RoID0gQy5sZW5ndGhcbmxldCBtZW0gPSBDLm1lbVxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IHJlYyBiaW5kIHQgfmY6ayA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEJhc2UgdiAtPiBrIHZcbiAgfCBUcnVlIC0+IHRydWVfXG4gIHwgRmFsc2UgLT4gZmFsc2VfXG4gIHwgTm90IHQxIC0+IG5vdF8gKGJpbmQgdDEgfmY6aylcbiAgKCogVW5mb3J0dW5hdGVseSB3ZSBuZWVkIHRvIGR1cGxpY2F0ZSBzb21lIG9mIHRoZSBzaG9ydC1jaXJjdWl0aW5nIGZyb20gW2FuZGFsc29dIGFuZFxuICAgICBmcmllbmRzIGhlcmUuIEluIHByaW5jaXBsZSB3ZSBjb3VsZCBkbyBzb21ldGhpbmcgaW52b2x2aW5nIFtMYXp5LnRdIGJ1dCB0aGVcbiAgICAgb3ZlcmhlYWQgcHJvYmFibHkgd291bGRuJ3QgYmUgd29ydGggaXQuICopXG4gIHwgQW5kICh0MSwgdDIpIC0+XG4gICAgKG1hdGNoIGJpbmQgdDEgfmY6ayB3aXRoXG4gICAgIHwgRmFsc2UgLT4gZmFsc2VfXG4gICAgIHwgb3RoZXIgLT4gYW5kYWxzbyBvdGhlciAoYmluZCB0MiB+ZjprKSlcbiAgfCBPciAodDEsIHQyKSAtPlxuICAgIChtYXRjaCBiaW5kIHQxIH5mOmsgd2l0aFxuICAgICB8IFRydWUgLT4gdHJ1ZV9cbiAgICAgfCBvdGhlciAtPiBvcmVsc2Ugb3RoZXIgKGJpbmQgdDIgfmY6aykpXG4gIHwgSWYgKHQxLCB0MiwgdDMpIC0+XG4gICAgKG1hdGNoIGJpbmQgdDEgfmY6ayB3aXRoXG4gICAgIHwgVHJ1ZSAtPiBiaW5kIHQyIH5mOmtcbiAgICAgfCBGYWxzZSAtPiBiaW5kIHQzIH5mOmtcbiAgICAgfCBvdGhlciAtPiBpZl8gb3RoZXIgKGJpbmQgdDIgfmY6aykgKGJpbmQgdDMgfmY6aykpXG47O1xuXG4oKiBzZW1hbnRpY3MgKilcblxubGV0IHJlYyBldmFsIHQgYmFzZV9ldmFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgVHJ1ZSAtPiB0cnVlXG4gIHwgRmFsc2UgLT4gZmFsc2VcbiAgfCBBbmQgKHQxLCB0MikgLT4gZXZhbCB0MSBiYXNlX2V2YWwgJiYgZXZhbCB0MiBiYXNlX2V2YWxcbiAgfCBPciAodDEsIHQyKSAtPiBldmFsIHQxIGJhc2VfZXZhbCB8fCBldmFsIHQyIGJhc2VfZXZhbFxuICB8IE5vdCB0IC0+IG5vdCAoZXZhbCB0IGJhc2VfZXZhbClcbiAgfCBJZiAodDEsIHQyLCB0MykgLT4gaWYgZXZhbCB0MSBiYXNlX2V2YWwgdGhlbiBldmFsIHQyIGJhc2VfZXZhbCBlbHNlIGV2YWwgdDMgYmFzZV9ldmFsXG4gIHwgQmFzZSB4IC0+IGJhc2VfZXZhbCB4XG47O1xuXG5sZXQgc3BlY2lhbGl6ZSB0IGYgPVxuICBiaW5kIHQgfmY6KGZ1biB2IC0+XG4gICAgbWF0Y2ggZiB2IHdpdGhcbiAgICB8IGBLbm93biBjIC0+IGNvbnN0YW50IGNcbiAgICB8IGBVbmtub3duIC0+IGJhc2UgdikgW0Bub250YWlsXVxuOztcblxubGV0IGV2YWxfc2V0IH51bml2ZXJzZTphbGwgc2V0X29mX2Jhc2UgdCA9XG4gIGxldCByZWMgYXV4IChiIDogXyB0KSA9XG4gICAgbWF0Y2ggYiB3aXRoXG4gICAgfCBUcnVlIC0+IGZvcmNlIGFsbFxuICAgIHwgRmFsc2UgLT4gU2V0LlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KFNldC5jb21wYXJhdG9yIChmb3JjZSBhbGwpKVxuICAgIHwgQW5kIChhLCBiKSAtPiBTZXQuaW50ZXIgKGF1eCBhKSAoYXV4IGIpXG4gICAgfCBPciAoYSwgYikgLT4gU2V0LnVuaW9uIChhdXggYSkgKGF1eCBiKVxuICAgIHwgTm90IGEgLT4gU2V0LmRpZmYgKGZvcmNlIGFsbCkgKGF1eCBhKVxuICAgIHwgQmFzZSBhIC0+IHNldF9vZl9iYXNlIGFcbiAgICB8IElmIChjb25kLCBhLCBiKSAtPlxuICAgICAgbGV0IGNvbmQgPSBhdXggY29uZCBpblxuICAgICAgU2V0LnVuaW9uIChTZXQuaW50ZXIgY29uZCAoYXV4IGEpKSAoU2V0LmludGVyIChTZXQuZGlmZiAoZm9yY2UgYWxsKSBjb25kKSAoYXV4IGIpKVxuICBpblxuICBhdXggdCBbQG5vbnRhaWxdXG47O1xuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IHJldHVybiA9IGJhc2VcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgbWFwID0gYERlZmluZV91c2luZ19iaW5kXG4gIGVuZClcblxubW9kdWxlIHR5cGUgTW9uYWRpYyA9IHNpZ1xuICBtb2R1bGUgTSA6IE1vbmFkLlNcblxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBNLnQpIC0+ICdiIHQgTS50XG4gIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0IE0udCkgLT4gJ2IgdCBNLnRcbiAgdmFsIGV2YWwgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgTS50KSAtPiBib29sIE0udFxuZW5kXG5cbm1vZHVsZSBGb3JfbW9uYWQgKE0gOiBNb25hZC5TKSA6IE1vbmFkaWMgd2l0aCBtb2R1bGUgTSA6PSBNID0gc3RydWN0XG4gIG9wZW4gTS5Nb25hZF9pbmZpeFxuXG4gIGxldCByZWMgYmluZCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEJhc2UgeCAtPiBmIHhcbiAgICB8IFRydWUgLT4gTS5yZXR1cm4gdHJ1ZV9cbiAgICB8IEZhbHNlIC0+IE0ucmV0dXJuIGZhbHNlX1xuICAgIHwgQW5kIChhLCBiKSAtPlxuICAgICAgYmluZCBhIH5mXG4gICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgIHwgRmFsc2UgLT4gTS5yZXR1cm4gZmFsc2VfXG4gICAgICAgIHwgVHJ1ZSAtPiBiaW5kIGIgfmZcbiAgICAgICAgfCBhIC0+IGJpbmQgYiB+ZiA+PnwgZnVuIGIgLT4gYW5kYWxzbyBhIGIpXG4gICAgfCBPciAoYSwgYikgLT5cbiAgICAgIGJpbmQgYSB+ZlxuICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICB8IFRydWUgLT4gTS5yZXR1cm4gdHJ1ZV9cbiAgICAgICAgfCBGYWxzZSAtPiBiaW5kIGIgfmZcbiAgICAgICAgfCBhIC0+IGJpbmQgYiB+ZiA+PnwgZnVuIGIgLT4gb3JlbHNlIGEgYilcbiAgICB8IE5vdCBhIC0+IGJpbmQgYSB+ZiA+Pnwgbm90X1xuICAgIHwgSWYgKGEsIGIsIGMpIC0+XG4gICAgICBiaW5kIGEgfmZcbiAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgfCBUcnVlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IEZhbHNlIC0+IGJpbmQgYyB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+PSBmdW4gYiAtPiBiaW5kIGMgfmYgPj58IGZ1biBjIC0+IGlmXyBhIGIgYylcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPSBiaW5kIHQgfmY6KGZ1biB4IC0+IGYgeCA+PnwgYmFzZSlcblxuICBsZXQgZXZhbCB0IH5mID1cbiAgICBiaW5kIHQgfmY6KGZ1biB4IC0+XG4gICAgICBmIHhcbiAgICAgID4+fCBmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IHRydWVfXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXylcbiAgICA+PnwgZnVuIHQgLT4gZXZhbCB0IE5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuICA7O1xuZW5kXG5cbigqKiBXZSBhdm9pZCBkZXJpdmluZyBxdWlja2NoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBpbnZhcmlhbnRzIGRlc2NyaWJlZCBpbiBbVF0ncyBjb21tZW50c1xuICAgIGFib3ZlIGFyZSBwcmVzZXJ2ZWQuICopXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgYV9nZW5lcmF0b3IgPVxuICBRdWlja2NoZWNrLkdlbmVyYXRvci5yZWN1cnNpdmVfdW5pb25cbiAgICBbIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpiYXNlIGFfZ2VuZXJhdG9yXG4gICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5zaW5nbGV0b24gdHJ1ZV9cbiAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLnNpbmdsZXRvbiBmYWxzZV9cbiAgICBdXG4gICAgfmY6KGZ1biBzZWxmIC0+XG4gICAgICBbIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCBzZWxmIH5mOm5vdF9cbiAgICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwMiBzZWxmIHNlbGYgfmY6Ty4oIHx8IClcbiAgICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwMiBzZWxmIHNlbGYgfmY6Ty4oICYmIClcbiAgICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwMyBzZWxmIHNlbGYgc2VsZiB+ZjppZl9cbiAgICAgIF0pXG47O1xuXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciAodHlwZSBhKSAoYV9zaHJpbmtlciA6IGEgUXVpY2tjaGVjay5TaHJpbmtlci50KSA9XG4gIFF1aWNrY2hlY2suU2hyaW5rZXIuZml4ZWRfcG9pbnQgKGZ1biBzZWxmIC0+XG4gICAgbGV0IGJpbm9wIG9wZXJhdG9yIGxlZnQgcmlnaHQgPVxuICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgWyBTZXF1ZW5jZS5zaW5nbGV0b24gbGVmdFxuICAgICAgICA7IFNlcXVlbmNlLnNpbmdsZXRvbiByaWdodFxuICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiBsZWZ0KSB+ZjooZnVuIGxlZnQgLT5cbiAgICAgICAgICAgIG9wZXJhdG9yIGxlZnQgcmlnaHQpXG4gICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIHJpZ2h0KSB+ZjooZnVuIHJpZ2h0IC0+XG4gICAgICAgICAgICBvcGVyYXRvciBsZWZ0IHJpZ2h0KVxuICAgICAgICBdXG4gICAgaW5cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLmNyZWF0ZSAoZnVuIHQgLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gU2VxdWVuY2UuZW1wdHlcbiAgICAgIHwgQmFzZSBhIC0+IFNlcXVlbmNlLm1hcCB+ZjpiYXNlIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBhX3Nocmlua2VyIGEpXG4gICAgICB8IE9yIChsZWZ0LCByaWdodCkgLT4gYmlub3AgTy4oIHx8ICkgbGVmdCByaWdodFxuICAgICAgfCBBbmQgKGxlZnQsIHJpZ2h0KSAtPiBiaW5vcCBPLiggJiYgKSBsZWZ0IHJpZ2h0XG4gICAgICB8IE5vdCB0IC0+XG4gICAgICAgIFNlcXVlbmNlLmFwcGVuZFxuICAgICAgICAgIChTZXF1ZW5jZS5zaW5nbGV0b24gdClcbiAgICAgICAgICAoU2VxdWVuY2UubWFwIH5mOm5vdF8gKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgdCkpXG4gICAgICB8IElmIChpZl8sIHRoZW5fLCBlbHNlXykgLT5cbiAgICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiBpZl9cbiAgICAgICAgICA7IFNlcXVlbmNlLnNpbmdsZXRvbiB0aGVuX1xuICAgICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIGVsc2VfXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgaWZfKSB+ZjooZnVuIGlmXyAtPlxuICAgICAgICAgICAgICBPLmlmXyBpZl8gdGhlbl8gZWxzZV8pXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgdGhlbl8pIH5mOihmdW4gdGhlbl8gLT5cbiAgICAgICAgICAgICAgTy5pZl8gaWZfIHRoZW5fIGVsc2VfKVxuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIGVsc2VfKSB+ZjooZnVuIGVsc2VfIC0+XG4gICAgICAgICAgICAgIE8uaWZfIGlmXyB0aGVuXyBlbHNlXylcbiAgICAgICAgICBdKSlcbjs7XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyICh0eXBlIGEpIChhX29ic2VydmVyIDogYSBRdWlja2NoZWNrLk9ic2VydmVyLnQpID1cbiAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmNyZWF0ZSAoZnVuIHQgfnNpemUgfmhhc2ggLT5cbiAgICBoYXNoX2ZvbGRfdFxuICAgICAgKGZ1biBoYXNoIGEgLT4gUXVpY2tjaGVjay5PYnNlcnZlci5vYnNlcnZlIGFfb2JzZXJ2ZXIgYSB+c2l6ZSB+aGFzaClcbiAgICAgIGhhc2hcbiAgICAgIHQpXG47O1xuIiwiKCogQ29udmVyc2lvbnMgYmV0d2VlbiB1bml0cyBvZiBtZWFzdXJlIGJhc2VkIG9uIGJ5dGVzLiAqKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5tb2R1bGUgUmVwciA9IEludDYzXG5tb2R1bGUgVCA9IEJ5dGVfdW5pdHMwXG5pbmNsdWRlIChUIDogbW9kdWxlIHR5cGUgb2YgVCB3aXRoIG1vZHVsZSBSZXByIDo9IFJlcHIpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9wbGFpbiAoVClcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoIC0gKSBhIGIgPSBvZl9yZXByIChSZXByLiggLSApICh0b19yZXByIGEpICh0b19yZXByIGIpKVxuICBsZXQgKCArICkgYSBiID0gb2ZfcmVwciAoUmVwci4oICsgKSAodG9fcmVwciBhKSAodG9fcmVwciBiKSlcbiAgbGV0ICggLy8gKSBhIGIgPSBSZXByLiggLy8gKSAodG9fcmVwciBhKSAodG9fcmVwciBiKVxuXG4gIGxldCAoIC8gKSB0IHMgPSBvZl9yZXByIChSZXByLm9mX2Zsb2F0IChSZXByLnRvX2Zsb2F0ICh0b19yZXByIHQpIC8uIHMpKVxuICBsZXQgKCAqICkgdCBzID0gb2ZfcmVwciAoUmVwci5vZl9mbG9hdCAoUmVwci50b19mbG9hdCAodG9fcmVwciB0KSAqLiBzKSlcbmVuZFxuXG5pbmNsdWRlIEluZml4XG5cbmxldCBhYnMgdCA9IG9mX3JlcHIgKFJlcHIuYWJzICh0b19yZXByIHQpKVxubGV0IG5lZyB0ID0gb2ZfcmVwciAoUmVwci5uZWcgKHRvX3JlcHIgdCkpXG5sZXQgc2lnbiB0ID0gUmVwci5zaWduICh0b19yZXByIHQpXG5sZXQgemVybyA9IG9mX3JlcHIgUmVwci56ZXJvXG5sZXQgbWluX3ZhbHVlID0gb2ZfcmVwciBSZXByLm1pbl92YWx1ZVxubGV0IG1heF92YWx1ZSA9IG9mX3JlcHIgUmVwci5tYXhfdmFsdWVcbmxldCBzY2FsZSA9IEluZml4LiggKiApXG5sZXQgaXNjYWxlIHQgcyA9IG9mX3JlcHIgKFJlcHIuKCAqICkgKHRvX3JlcHIgdCkgKFJlcHIub2ZfaW50IHMpKVxubGV0IGJ5dGVzX2ludF9leG4gPSBULmJ5dGVzX2ludF9leG5cbmxldCBieXRlc19pbnQ2MyA9IHRvX3JlcHJcbmxldCBieXRlc19pbnQ2NCB0ID0gUmVwci50b19pbnQ2NCAodG9fcmVwciB0KVxubGV0IGJ5dGVzX2Zsb2F0IHQgPSBSZXByLnRvX2Zsb2F0ICh0b19yZXByIHQpXG5sZXQgb2ZfYnl0ZXNfaW50IGIgPSBvZl9yZXByIChSZXByLm9mX2ludCBiKVxubGV0IG9mX2J5dGVzX2ludDYzID0gb2ZfcmVwclxubGV0IG9mX2J5dGVzX2ludDY0X2V4biBiID0gb2ZfcmVwciAoUmVwci5vZl9pbnQ2NF9leG4gYilcbmxldCBvZl9ieXRlc19mbG9hdF9leG4gYiA9IG9mX3JlcHIgKFJlcHIub2ZfZmxvYXQgYilcblxubGV0IChieXRlcyBbQGRlcHJlY2F0ZWRcbiAgICAgICBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW2J5dGVzX2ludF9leG5dLCBbYnl0ZXNfaW50NjNdLCBbYnl0ZXNfaW50NjRdIG9yIFxcXG4gICAgICAgIFtieXRlc19mbG9hdF0gYXMgYXBwcm9wcmlhdGUuXCJdKVxuICA9XG4gIGJ5dGVzX2Zsb2F0XG47O1xuXG5sZXQgKG9mX2J5dGVzIFtAZGVwcmVjYXRlZFxuICAgICAgIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbb2ZfYnl0ZXNfaW50XSwgW29mX2J5dGVzX2ludDYzXSwgXFxcbiAgICAgICAgW29mX2J5dGVzX2ludDY0X2V4bl0gb3IgW29mX2J5dGVzX2Zsb2F0X2V4bl0gYXMgYXBwcm9wcmlhdGUuXCJdKVxuICA9XG4gIG9mX2J5dGVzX2Zsb2F0X2V4blxuOztcblxubGV0IGtpbG9ieXRlIDogdCA9IG9mX2J5dGVzX2ludCAxMDI0XG5sZXQgbWVnYWJ5dGUgPSBpc2NhbGUga2lsb2J5dGUgMTAyNFxubGV0IGdpZ2FieXRlID0gaXNjYWxlIG1lZ2FieXRlIDEwMjRcbmxldCB0ZXJhYnl0ZSA9IGlzY2FsZSBnaWdhYnl0ZSAxMDI0XG5sZXQgcGV0YWJ5dGUgPSBpc2NhbGUgdGVyYWJ5dGUgMTAyNFxubGV0IGV4YWJ5dGUgPSBpc2NhbGUgcGV0YWJ5dGUgMTAyNFxuXG5sZXQgd29yZCA9XG4gIGxldCBtb2R1bGUgVyA9IFdvcmRfc2l6ZSBpblxuICBtYXRjaCBXLndvcmRfc2l6ZSB3aXRoXG4gIHwgVy5XMzIgLT4gb2ZfYnl0ZXNfaW50IDRcbiAgfCBXLlc2NCAtPiBvZl9ieXRlc19pbnQgOFxuOztcblxubGV0IGtpbG9ieXRlcyB0IDogZmxvYXQgPSBJbmZpeC4oIC8vICkgdCBraWxvYnl0ZVxubGV0IG1lZ2FieXRlcyB0ID0gSW5maXguKCAvLyApIHQgbWVnYWJ5dGVcbmxldCBnaWdhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IGdpZ2FieXRlXG5sZXQgdGVyYWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCB0ZXJhYnl0ZVxubGV0IHBldGFieXRlcyB0ID0gSW5maXguKCAvLyApIHQgcGV0YWJ5dGVcbmxldCBleGFieXRlcyB0ID0gSW5maXguKCAvLyApIHQgZXhhYnl0ZVxubGV0IHdvcmRzX2ludF9leG4gdCA9IFJlcHIudG9faW50X2V4biAoUmVwci4oIC8gKSAodG9fcmVwciB0KSAodG9fcmVwciB3b3JkKSlcbmxldCB3b3Jkc19mbG9hdCB0ID0gSW5maXguKCAvLyApIHQgd29yZFxubGV0IG9mX2tpbG9ieXRlcyB0IDogdCA9IEluZml4LiggKiApIGtpbG9ieXRlIHRcbmxldCBvZl9tZWdhYnl0ZXMgdCA9IEluZml4LiggKiApIG1lZ2FieXRlIHRcbmxldCBvZl9naWdhYnl0ZXMgdCA9IEluZml4LiggKiApIGdpZ2FieXRlIHRcbmxldCBvZl90ZXJhYnl0ZXMgdCA9IEluZml4LiggKiApIHRlcmFieXRlIHRcbmxldCBvZl9wZXRhYnl0ZXMgdCA9IEluZml4LiggKiApIHBldGFieXRlIHRcbmxldCBvZl9leGFieXRlcyB0ID0gSW5maXguKCAqICkgZXhhYnl0ZSB0XG5sZXQgb2Zfd29yZHNfaW50IHQgPSBpc2NhbGUgd29yZCB0XG5sZXQgb2Zfd29yZHNfZmxvYXRfZXhuIHQgPSBJbmZpeC4oICogKSB3b3JkIHRcblxubGV0ICh3b3JkcyBbQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFt3b3Jkc19pbnRfZXhuXSBvciBbd29yZHNfZmxvYXRdXCJdKSA9XG4gIHdvcmRzX2Zsb2F0XG47O1xuXG5sZXQgKG9mX3dvcmRzIFtAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW29mX3dvcmRzX2ludF0gb3IgW29mX3dvcmRzX2Zsb2F0X2V4bl1cIl0pID1cbiAgb2Zfd29yZHNfZmxvYXRfZXhuXG47O1xuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIEludC4oIDwgKSBsZW5ndGggMlxuICB0aGVuIGludmFsaWRfYXJnZiBcIiclcycgcGFzc2VkIHRvIEJ5dGVfdW5pdHMub2Zfc3RyaW5nIC0gdG9vIHNob3J0XCIgcyAoKTtcbiAgbGV0IGJhc2Vfc3RyID0gU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOihJbnQuKCAtICkgbGVuZ3RoIDEpIGluXG4gIGxldCBleHRfY2hhciA9IENoYXIubG93ZXJjYXNlIHMuW0ludC4oIC0gKSBsZW5ndGggMV0gaW5cbiAgbGV0IGJhc2UgPVxuICAgIHRyeSBGbG9hdC5vZl9zdHJpbmcgYmFzZV9zdHIgd2l0aFxuICAgIHwgXyAtPlxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJyVzJyBwYXNzZWQgdG8gQnl0ZV91bml0cy5vZl9zdHJpbmcgLSAlcyBjYW5ub3QgYmUgY29udmVydGVkIHRvIGZsb2F0IFwiXG4gICAgICAgIHNcbiAgICAgICAgYmFzZV9zdHJcbiAgICAgICAgKClcbiAgaW5cbiAgbWF0Y2ggZXh0X2NoYXIgd2l0aFxuICB8ICdiJyAtPiBvZl9ieXRlc19mbG9hdF9leG4gYmFzZVxuICB8ICdrJyAtPiBvZl9raWxvYnl0ZXMgYmFzZVxuICB8ICdtJyAtPiBvZl9tZWdhYnl0ZXMgYmFzZVxuICB8ICdnJyAtPiBvZl9naWdhYnl0ZXMgYmFzZVxuICB8ICd0JyAtPiBvZl90ZXJhYnl0ZXMgYmFzZVxuICB8ICdwJyAtPiBvZl9wZXRhYnl0ZXMgYmFzZVxuICB8ICdlJyAtPiBvZl9leGFieXRlcyBiYXNlXG4gIHwgJ3cnIC0+IG9mX3dvcmRzX2Zsb2F0X2V4biBiYXNlXG4gIHwgZXh0IC0+XG4gICAgaW52YWxpZF9hcmdmIFwiJyVzJyBwYXNzZWQgdG8gQnl0ZV91bml0cy5vZl9zdHJpbmcgLSBpbGxlZ2FsIGV4dGVuc2lvbiAlY1wiIHMgZXh0ICgpXG47O1xuXG5sZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBvZl9zdHJpbmdcblxubGV0IGxhcmdlc3RfbWVhc3VyZSB0ID1cbiAgbGV0IHRfYWJzID0gb2ZfcmVwciAoUmVwci5hYnMgKHRvX3JlcHIgdCkpIGluXG4gIGlmIHRfYWJzID49IGV4YWJ5dGVcbiAgdGhlbiBgRXhhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSBwZXRhYnl0ZVxuICB0aGVuIGBQZXRhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSB0ZXJhYnl0ZVxuICB0aGVuIGBUZXJhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSBnaWdhYnl0ZVxuICB0aGVuIGBHaWdhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSBtZWdhYnl0ZVxuICB0aGVuIGBNZWdhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSBraWxvYnl0ZVxuICB0aGVuIGBLaWxvYnl0ZXNcbiAgZWxzZSBgQnl0ZXNcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgKCogU2hhcmUgdGhlIGNvbW1vbiBbb2Zfc2V4cF0gY29kZSBmb3IgW1YxXSBhbmQgW1YyXS4gKilcbiAgbW9kdWxlIE9mX3NleHBfdjFfdjIgOiBzaWdcbiAgICB2YWwgdF9vZl9zZXhwIDogU2V4cC50IC0+IHRcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IG5vX21hdGNoICgpID0gZmFpbHdpdGggXCJOb3QgYSByZWNvZ25pemVkIFtCeXRlX3VuaXRzLnRdIHJlcHJlc2VudGF0aW9uXCJcblxuICAgIGxldCBvZl92YWx1ZV9zZXhwX2FuZF91bml0X25hbWUgdmFsX3NleHAgPSBmdW5jdGlvblxuICAgICAgfCBcIkJ5dGVzXCIgLT5cbiAgICAgICAgKHRyeSBvZl9ieXRlc19pbnQ2MyAoSW50NjMudF9vZl9zZXhwIHZhbF9zZXhwKSB3aXRoXG4gICAgICAgICB8IF8gLT4gb2ZfYnl0ZXNfZmxvYXRfZXhuIChGbG9hdC50X29mX3NleHAgdmFsX3NleHApKVxuICAgICAgfCBcIktpbG9ieXRlc1wiIC0+IG9mX2tpbG9ieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJNZWdhYnl0ZXNcIiAtPiBvZl9tZWdhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiR2lnYWJ5dGVzXCIgLT4gb2ZfZ2lnYWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIlRlcmFieXRlc1wiIC0+IG9mX3RlcmFieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJQZXRhYnl0ZXNcIiAtPiBvZl9wZXRhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiRXhhYnl0ZXNcIiAtPiBvZl9leGFieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJXb3Jkc1wiIC0+IG9mX3dvcmRzX2Zsb2F0X2V4biAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXyAtPiBub19tYXRjaCAoKVxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgIHwgU2V4cC5BdG9tIHN0ciAtPiBvZl9zdHJpbmcgc3RyXG4gICAgICB8IFNleHAuTGlzdCBbIFNleHAuQXRvbSB1bml0X25hbWU7IHZhbHVlIF0gLT5cbiAgICAgICAgb2ZfdmFsdWVfc2V4cF9hbmRfdW5pdF9uYW1lIHZhbHVlIHVuaXRfbmFtZVxuICAgICAgfCBfIC0+IG5vX21hdGNoICgpXG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICB0cnkgdF9vZl9zZXhwIHNleHAgd2l0aFxuICAgICAgfCBleG4gLT4gcmFpc2UgKFNleHAuT2Zfc2V4cF9lcnJvciAoZXhuLCBzZXhwKSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IHRvX2JpbmFibGUgPSBieXRlc19mbG9hdFxuICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYnl0ZXNfZmxvYXRfZXhuXG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlMC5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoRmxvYXQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICAgIGVuZClcblxuICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGUgc3RhYmxlX3dpdG5lc3NfZmxvYXQgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgOztcblxuICAgIGluY2x1ZGUgT2Zfc2V4cF92MV92MlxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgICgqIFYxIG9ubHkgZ29lcyB1cCB0byBnaWdhYnl0ZXMgKilcbiAgICAgIG1hdGNoIGxhcmdlc3RfbWVhc3VyZSB0IHdpdGhcbiAgICAgIHwgYEJ5dGVzIC0+IFslc2V4cCBgQnl0ZXMgKGJ5dGVzX2Zsb2F0IHQgOiBmbG9hdCldXG4gICAgICB8IGBLaWxvYnl0ZXMgLT4gWyVzZXhwIGBLaWxvYnl0ZXMgKGtpbG9ieXRlcyB0IDogZmxvYXQpXVxuICAgICAgfCBgTWVnYWJ5dGVzIC0+IFslc2V4cCBgTWVnYWJ5dGVzIChtZWdhYnl0ZXMgdCA6IGZsb2F0KV1cbiAgICAgIHwgYEdpZ2FieXRlcyB8IGBUZXJhYnl0ZXMgfCBgUGV0YWJ5dGVzIHwgYEV4YWJ5dGVzIC0+XG4gICAgICAgIFslc2V4cCBgR2lnYWJ5dGVzIChnaWdhYnl0ZXMgdCA6IGZsb2F0KV1cbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyB0ID0gU3RyaW5nLmxvd2VyY2FzZSAodG9fc3RyaW5nIHQpXG4gICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuXG4gICAgKCogVGhpcyB0ZXN0IGRvY3VtZW50cyB0aGUgb3JpZ2luYWwgdG8tc3RyaW5nIHJlcHJlc2VudGF0aW9uIGFuZCBmYWlscyB1bmRlciBqYXZhc2NyaXB0XG4gICAgICAgZHVlIHRvIGRpZmZlcmVuY2VzIGluIHRoZSByb3VuZGluZy4gKilcbiAgICBsZXQlZXhwZWN0X3Rlc3QgKF8gW0B0YWdzIFwibm8tanNcIl0pID1cbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDApO1xuICAgICAgWyVleHBlY3Qge3wgMTAwMGIgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyMyk7XG4gICAgICBbJWV4cGVjdCB7fCAxMDIzYiB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDI0KTtcbiAgICAgIFslZXhwZWN0IHt8IDFrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjUpO1xuICAgICAgWyVleHBlY3Qge3wgMS4wMDA5OGsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTUwMCk7XG4gICAgICBbJWV4cGVjdCB7fCAxLjQ2NDg0ayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5Ljc2NTYyayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDApO1xuICAgICAgWyVleHBlY3Qge3wgOTcuNjU2MmsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5NzYuNTYyayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5LjUzNjc0bSB8fV1cbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBtc2cgLT4gb2Zfc2V4cF9lcnJvciBtc2cgc2V4cClcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IHRvX2JpbmFibGUgPSBieXRlc19pbnQ2M1xuICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYnl0ZXNfaW50NjNcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUwLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChJbnQ2My5TdGFibGUuVjEpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICAgIGVuZClcblxuICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGUgSW50NjMuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzIG9mX2JpbmFibGUgdG9fYmluYWJsZVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIE9mX3NleHBfdjFfdjJcblxuICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCBgQnl0ZXMgKGJ5dGVzX2ludDYzIHQgOiBJbnQ2My50KV1cbiAgZW5kXG5lbmRcblxubGV0IHRvX3N0cmluZ19odW0gPSBULnRvX3N0cmluZ1xuXG5tb2R1bGUgU2hvcnQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgIGxldCB0b191bml0c19zdHIgdG9fdW5pdCBleHQgPVxuICAgICAgbGV0IGYgPSB0b191bml0IHQgaW5cbiAgICAgIGxldCBmX2FicyA9IEZsb2F0LmFicyBmIGluXG4gICAgICBpZiBGbG9hdC5Sb2J1c3RseV9jb21wYXJhYmxlLiggPj0uICkgZl9hYnMgMTAwLlxuICAgICAgdGhlbiBzcHJpbnRmIFwiJS4wZiVjXCIgZiBleHRcbiAgICAgIGVsc2UgaWYgRmxvYXQuUm9idXN0bHlfY29tcGFyYWJsZS4oID49LiApIGZfYWJzIDEwLlxuICAgICAgdGhlbiBzcHJpbnRmIFwiJS4xZiVjXCIgZiBleHRcbiAgICAgIGVsc2Ugc3ByaW50ZiBcIiUuMmYlY1wiIGYgZXh0XG4gICAgaW5cbiAgICBtYXRjaCBsYXJnZXN0X21lYXN1cmUgdCB3aXRoXG4gICAgfCBgQnl0ZXMgLT4gc3ByaW50ZiBcIiVkQlwiIChieXRlc19pbnRfZXhuIHQpXG4gICAgfCBgS2lsb2J5dGVzIC0+IHRvX3VuaXRzX3N0ciBraWxvYnl0ZXMgJ0snXG4gICAgfCBgTWVnYWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciBtZWdhYnl0ZXMgJ00nXG4gICAgfCBgR2lnYWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciBnaWdhYnl0ZXMgJ0cnXG4gICAgfCBgVGVyYWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciB0ZXJhYnl0ZXMgJ1QnXG4gICAgfCBgUGV0YWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciBwZXRhYnl0ZXMgJ1AnXG4gICAgfCBgRXhhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIGV4YWJ5dGVzICdFJ1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDApO1xuICAgIFslZXhwZWN0IHt8IDEwMDBCIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDIzKTtcbiAgICBbJWV4cGVjdCB7fCAxMDIzQiB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNCk7XG4gICAgWyVleHBlY3Qge3wgMS4wMEsgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjUpO1xuICAgIFslZXhwZWN0IHt8IDEuMDBLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOS43N0sgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOTcuN0sgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMDApO1xuICAgIFslZXhwZWN0IHt8IDk3N0sgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5LjU0TSB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19mbG9hdF9leG4gMTAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA5LjMxRyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19mbG9hdF9leG4gMTAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDkzMUcgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfZmxvYXRfZXhuIDEwMDAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDkwLjlUIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2Zsb2F0X2V4biAxMDAwMDAwMDAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA4OC44UCB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19mbG9hdF9leG4gMzAwMDAwMDAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDIuNjBFIHx9XTtcbiAgICAoKVxuICA7O1xuZW5kXG5cbmxldCB0b19zdHJpbmdfc2hvcnQgPSBTaG9ydC50b19zdHJpbmdcblxubGV0IChjcmVhdGUgW0BkZXByZWNhdGVkXG4gICAgICAgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtvZl9ieXRlc10sIFtvZl9raWxvYnl0ZXNdLCBbb2ZfbWVnYWJ5dGVzXSwgZXRjIGFzIFxcXG4gICAgICAgIGFwcHJvcHJpYXRlLlwiXSlcbiAgPVxuICBmdW4gdW5pdHMgdmFsdWUgLT5cbiAgbWF0Y2ggdW5pdHMgd2l0aFxuICB8IGBCeXRlcyAtPiBvZl9ieXRlc19mbG9hdF9leG4gdmFsdWVcbiAgfCBgS2lsb2J5dGVzIC0+IG9mX2tpbG9ieXRlcyB2YWx1ZVxuICB8IGBNZWdhYnl0ZXMgLT4gb2ZfbWVnYWJ5dGVzIHZhbHVlXG4gIHwgYEdpZ2FieXRlcyAtPiBvZl9naWdhYnl0ZXMgdmFsdWVcbiAgfCBgV29yZHMgLT4gb2Zfd29yZHNfZmxvYXRfZXhuIHZhbHVlXG47O1xuXG5pbmNsdWRlXG4gIFF1aWNrY2hlY2thYmxlLk9mX3F1aWNrY2hlY2thYmxlXG4gICAgKFJlcHIpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG9mX3F1aWNrY2hlY2thYmxlID0gb2ZfcmVwclxuICAgICAgbGV0IHRvX3F1aWNrY2hlY2thYmxlID0gdG9fcmVwclxuICAgIGVuZClcbiIsIigqKiBTaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgYSBwb2x5bW9ycGhpYyBmdW5jdGlvbmFsIGRvdWJsZS1lbmRlZCBxdWV1ZS4gKilcblxuKCoqIEludmFyaWFudHM6XG4gICAgLSBxdWV1ZS5sZW5ndGggPSBMaXN0Lmxlbmd0aCBxdWV1ZS5mcm9udCArIExpc3QubGVuZ3RoIHF1ZXVlLmJhY2tcbiAgICAtIGlmIHF1ZXVlIGhhcyA+PSAyIGVsZW1lbnRzLCBuZWl0aGVyIGZyb250IG5vciBiYWNrIGFyZSBlbXB0eVxuKilcblxub3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG5leGNlcHRpb24gRW1wdHkgW0BAZGVyaXZpbmcgc2V4cF1cblxudHlwZSAnYSB0ID1cbiAgeyBmcm9udCA6ICdhIGxpc3RcbiAgOyBiYWNrIDogJ2EgbGlzdFxuICA7IGxlbmd0aCA6IGludFxuICB9XG5cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IHQubGVuZ3RoID0gMFxuXG5sZXQgaW52YXJpYW50IGYgdCA9XG4gIGxldCBuX2Zyb250ID0gTGlzdC5sZW5ndGggdC5mcm9udCBpblxuICBsZXQgbl9iYWNrID0gTGlzdC5sZW5ndGggdC5iYWNrIGluXG4gIGFzc2VydCAodC5sZW5ndGggPSBuX2Zyb250ICsgbl9iYWNrKTtcbiAgYXNzZXJ0ICh0Lmxlbmd0aCA8IDIgfHwgKG5fZnJvbnQgPD4gMCAmJiBuX2JhY2sgPD4gMCkpO1xuICBMaXN0Lml0ZXIgdC5mcm9udCB+ZjtcbiAgTGlzdC5pdGVyIHQuYmFjayB+ZlxuOztcblxubGV0IG1ha2Ugfmxlbmd0aCB+ZnJvbnQgfmJhY2sgPVxuICBtYXRjaCBmcm9udCwgYmFjayB3aXRoXG4gIHwgW10sIFtdIHwgWyBfIF0sIFtdIHwgW10sIFsgXyBdIHwgXyA6OiBfLCBfIDo6IF8gLT4geyBmcm9udDsgYmFjazsgbGVuZ3RoIH1cbiAgfCBbXSwgXyA6OiBfIDo6IF8gLT5cbiAgICBsZXQgYmFjaywgcmV2X2Zyb250ID0gTGlzdC5zcGxpdF9uIGJhY2sgKGxlbmd0aCAvIDIpIGluXG4gICAgeyBmcm9udCA9IExpc3QucmV2IHJldl9mcm9udDsgYmFjazsgbGVuZ3RoIH1cbiAgfCBfIDo6IF8gOjogXywgW10gLT5cbiAgICBsZXQgZnJvbnQsIHJldl9iYWNrID0gTGlzdC5zcGxpdF9uIGZyb250IChsZW5ndGggLyAyKSBpblxuICAgIHsgZnJvbnQ7IGJhY2sgPSBMaXN0LnJldiByZXZfYmFjazsgbGVuZ3RoIH1cbjs7XG5cbmxldCBlbXB0eSA9IHsgZnJvbnQgPSBbXTsgYmFjayA9IFtdOyBsZW5ndGggPSAwIH1cbmxldCBlbnF1ZXVlX2Zyb250IHQgeCA9IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggKyAxKSB+ZnJvbnQ6KHggOjogdC5mcm9udCkgfmJhY2s6dC5iYWNrXG5sZXQgZW5xdWV1ZV9iYWNrIHQgeCA9IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggKyAxKSB+YmFjazooeCA6OiB0LmJhY2spIH5mcm9udDp0LmZyb250XG5cbmxldFtAY29sZF0gcmFpc2VfZnJvbnRfaW52YXJpYW50ICgpID1cbiAgcmFpc2VfcyBbJXNleHAgXCJCVUc6IEZkZXF1ZTogfGZyb250fCA9IDAsIHxiYWNrfCA+PSAyXCJdXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2JhY2tfaW52YXJpYW50ICgpID1cbiAgcmFpc2VfcyBbJXNleHAgXCJCVUc6IEZkZXF1ZTogfGJhY2t8ID0gMCwgfGZyb250fCA+PSAyXCJdXG47O1xuXG5sZXQgcGVla19mcm9udF9leG4gdCA9XG4gIG1hdGNoIHQuZnJvbnQgd2l0aFxuICB8IHggOjogXyAtPiB4XG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5iYWNrIHdpdGhcbiAgICAgfCBbXSAtPiByYWlzZSBFbXB0eVxuICAgICB8IFsgeCBdIC0+IHhcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9mcm9udF9pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgcGVla19iYWNrX2V4biB0ID1cbiAgbWF0Y2ggdC5iYWNrIHdpdGhcbiAgfCB4IDo6IF8gLT4geFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuZnJvbnQgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyB4IF0gLT4geFxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2JhY2tfaW52YXJpYW50ICgpKVxuOztcblxubGV0IGRyb3BfZnJvbnRfZXhuIHQgPVxuICBtYXRjaCB0LmZyb250IHdpdGhcbiAgfCBfIDo6IHhzIC0+IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggLSAxKSB+ZnJvbnQ6eHMgfmJhY2s6dC5iYWNrXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5iYWNrIHdpdGhcbiAgICAgfCBbXSAtPiByYWlzZSBFbXB0eVxuICAgICB8IFsgXyBdIC0+IGVtcHR5XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfZnJvbnRfaW52YXJpYW50ICgpKVxuOztcblxubGV0IGRyb3BfYmFja19leG4gdCA9XG4gIG1hdGNoIHQuYmFjayB3aXRoXG4gIHwgXyA6OiB4cyAtPiBtYWtlIH5sZW5ndGg6KHQubGVuZ3RoIC0gMSkgfmJhY2s6eHMgfmZyb250OnQuZnJvbnRcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmZyb250IHdpdGhcbiAgICAgfCBbXSAtPiByYWlzZSBFbXB0eVxuICAgICB8IFsgXyBdIC0+IGVtcHR5XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfYmFja19pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udF9leG4gdCA9IHBlZWtfZnJvbnRfZXhuIHQsIGRyb3BfZnJvbnRfZXhuIHRcbmxldCBkZXF1ZXVlX2JhY2tfZXhuIHQgPSBwZWVrX2JhY2tfZXhuIHQsIGRyb3BfYmFja19leG4gdFxuXG5sZXQgb3B0aW9uYWwgZiB0ID1cbiAgbWF0Y2ggZiB0IHdpdGhcbiAgfCB4IC0+IFNvbWUgeFxuICB8IGV4Y2VwdGlvbiBFbXB0eSAtPiBOb25lXG47O1xuXG5sZXQgcGVla19mcm9udCB0ID0gb3B0aW9uYWwgcGVla19mcm9udF9leG4gdFxubGV0IHBlZWtfYmFjayB0ID0gb3B0aW9uYWwgcGVla19iYWNrX2V4biB0XG5sZXQgZHJvcF9mcm9udCB0ID0gb3B0aW9uYWwgZHJvcF9mcm9udF9leG4gdFxubGV0IGRyb3BfYmFjayB0ID0gb3B0aW9uYWwgZHJvcF9iYWNrX2V4biB0XG5sZXQgZGVxdWV1ZV9mcm9udCB0ID0gb3B0aW9uYWwgZGVxdWV1ZV9mcm9udF9leG4gdFxubGV0IGRlcXVldWVfYmFjayB0ID0gb3B0aW9uYWwgZGVxdWV1ZV9iYWNrX2V4biB0XG5cbmxldCBlbnF1ZXVlIHQgc2lkZSB4ID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGVucXVldWVfZnJvbnQgdCB4XG4gIHwgYGJhY2sgLT4gZW5xdWV1ZV9iYWNrIHQgeFxuOztcblxubGV0IHBlZWsgdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IHBlZWtfZnJvbnQgdFxuICB8IGBiYWNrIC0+IHBlZWtfYmFjayB0XG47O1xuXG5sZXQgcGVla19leG4gdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IHBlZWtfZnJvbnRfZXhuIHRcbiAgfCBgYmFjayAtPiBwZWVrX2JhY2tfZXhuIHRcbjs7XG5cbmxldCBkcm9wIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkcm9wX2Zyb250IHRcbiAgfCBgYmFjayAtPiBkcm9wX2JhY2sgdFxuOztcblxubGV0IGRyb3BfZXhuIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkcm9wX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gZHJvcF9iYWNrX2V4biB0XG47O1xuXG5sZXQgZGVxdWV1ZSB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udCB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrIHRcbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFja19leG4gdFxuOztcblxubGV0IHJldiB0ID0geyB0IHdpdGggZnJvbnQgPSB0LmJhY2s7IGJhY2sgPSB0LmZyb250IH1cblxubW9kdWxlIEFyYml0cmFyeV9vcmRlciA9IHN0cnVjdFxuICBsZXQgaXNfZW1wdHkgPSBpc19lbXB0eVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGxldCB0b19saXN0IHQgPSBMaXN0LnJldl9hcHBlbmQgdC5mcm9udCB0LmJhY2tcbiAgbGV0IHRvX2FycmF5IHQgPSBBcnJheS5vZl9saXN0ICh0b19saXN0IHQpXG4gIGxldCB0b19zZXF1ZW5jZSB0ID0gU2VxdWVuY2UuYXBwZW5kIChTZXF1ZW5jZS5vZl9saXN0IHQuZnJvbnQpIChTZXF1ZW5jZS5vZl9saXN0IHQuYmFjaylcblxuICBsZXQgc3VtICh0eXBlIGEpIChtb2R1bGUgTSA6IENvbnRhaW5lci5TdW1tYWJsZSB3aXRoIHR5cGUgdCA9IGEpIHQgfmYgPVxuICAgIGxldCBvcGVuIE0gaW5cbiAgICBMaXN0LnN1bSAobW9kdWxlIE0pIHQuZnJvbnQgfmYgKyBMaXN0LnN1bSAobW9kdWxlIE0pIHQuYmFjayB+ZlxuICA7O1xuXG4gIGxldCBjb3VudCB0IH5mID0gTGlzdC5jb3VudCB0LmZyb250IH5mICsgTGlzdC5jb3VudCB0LmJhY2sgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IExpc3QuZm9yX2FsbCB0LmZyb250IH5mICYmIExpc3QuZm9yX2FsbCB0LmJhY2sgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gTGlzdC5leGlzdHMgdC5mcm9udCB+ZiB8fCBMaXN0LmV4aXN0cyB0LmJhY2sgfmZcbiAgbGV0IG1lbSB0IHggfmVxdWFsID0gTGlzdC5tZW0gfmVxdWFsIHQuZnJvbnQgeCB8fCBMaXN0Lm1lbSB+ZXF1YWwgdC5iYWNrIHhcblxuICBsZXQgaXRlciB0IH5mID1cbiAgICBMaXN0Lml0ZXIgdC5mcm9udCB+ZjtcbiAgICBMaXN0Lml0ZXIgdC5iYWNrIH5mXG4gIDs7XG5cbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgKExpc3QuZm9sZCB0LmZyb250IH5pbml0IH5mIHw+IGZ1biBpbml0IC0+IExpc3QuZm9sZCB0LmJhY2sgfmluaXQgfmYpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxuXG4gIGxldCBmaW5kIHQgfmYgPVxuICAgIG1hdGNoIExpc3QuZmluZCB0LmZyb250IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gTGlzdC5maW5kIHQuYmFjayB+ZlxuICAgIHwgc29tZSAtPiBzb21lXG4gIDs7XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPVxuICAgIG1hdGNoIExpc3QuZmluZF9tYXAgdC5mcm9udCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IExpc3QuZmluZF9tYXAgdC5iYWNrIH5mXG4gICAgfCBzb21lIC0+IHNvbWVcbiAgOztcblxuICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID1cbiAgICBtYXRjaCBMaXN0Lm1heF9lbHQgdC5mcm9udCB+Y29tcGFyZSwgTGlzdC5tYXhfZWx0IHQuYmFjayB+Y29tcGFyZSB3aXRoXG4gICAgfCBOb25lLCBvcHQgfCBvcHQsIE5vbmUgLT4gb3B0XG4gICAgfCAoU29tZSB4IGFzIHNvbWVfeCksIChTb21lIHkgYXMgc29tZV95KSAtPlxuICAgICAgaWYgY29tcGFyZSB4IHkgPj0gMCB0aGVuIHNvbWVfeCBlbHNlIHNvbWVfeVxuICA7O1xuXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPVxuICAgIG1hdGNoIExpc3QubWluX2VsdCB0LmZyb250IH5jb21wYXJlLCBMaXN0Lm1pbl9lbHQgdC5iYWNrIH5jb21wYXJlIHdpdGhcbiAgICB8IE5vbmUsIG9wdCB8IG9wdCwgTm9uZSAtPiBvcHRcbiAgICB8IChTb21lIHggYXMgc29tZV94KSwgKFNvbWUgeSBhcyBzb21lX3kpIC0+XG4gICAgICBpZiBjb21wYXJlIHggeSA8PSAwIHRoZW4gc29tZV94IGVsc2Ugc29tZV95XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfY29udGFpbmVyIChGIDogc2lnXG4gICAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+ICdhIGxpc3RcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IHRvX2xpc3QgPSBGLnRvX2xpc3RcbiAgbGV0IGlzX2VtcHR5ID0gaXNfZW1wdHlcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBsZXQgbWVtIHQgeCB+ZXF1YWwgPSBMaXN0Lm1lbSB+ZXF1YWwgKHRvX2xpc3QgdCkgeFxuICBsZXQgaXRlciB0IH5mID0gTGlzdC5pdGVyICh0b19saXN0IHQpIH5mXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBMaXN0LmZvbGQgKHRvX2xpc3QgdCkgfmluaXQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gTGlzdC5leGlzdHMgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IExpc3QuZm9yX2FsbCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IExpc3QuY291bnQgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBMaXN0LnN1bSBtICh0b19saXN0IHQpIH5mXG4gIGxldCBmaW5kIHQgfmYgPSBMaXN0LmZpbmQgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBMaXN0LmZpbmRfbWFwICh0b19saXN0IHQpIH5mXG4gIGxldCB0b19hcnJheSB0ID0gTGlzdC50b19hcnJheSAodG9fbGlzdCB0KVxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gTGlzdC5taW5fZWx0ICh0b19saXN0IHQpIH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBMaXN0Lm1heF9lbHQgKHRvX2xpc3QgdCkgfmNvbXBhcmVcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcbmVuZFxuXG5tb2R1bGUgRnJvbnRfdG9fYmFjayA9IHN0cnVjdFxuICBsZXQgb2ZfbGlzdCBsaXN0ID0gbWFrZSB+bGVuZ3RoOihMaXN0Lmxlbmd0aCBsaXN0KSB+ZnJvbnQ6bGlzdCB+YmFjazpbXVxuICBsZXQgdG9fbGlzdCB0ID0gdC5mcm9udCBAIExpc3QucmV2IHQuYmFja1xuXG4gIGxldCB0b19zZXF1ZW5jZSB0ID1cbiAgICBTZXF1ZW5jZS5hcHBlbmQgKFNlcXVlbmNlLm9mX2xpc3QgdC5mcm9udCkgKFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IHQuYmFjaykpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgICBsZXQgbGVuZ3RoLCBiYWNrID1cbiAgICAgIFNlcXVlbmNlLmZvbGQgc2VxdWVuY2UgfmluaXQ6KDAsIFtdKSB+ZjooZnVuIChsZW5ndGgsIGFjYykgYSAtPlxuICAgICAgICBsZW5ndGggKyAxLCBhIDo6IGFjYylcbiAgICBpblxuICAgIG1ha2Ugfmxlbmd0aCB+ZnJvbnQ6W10gfmJhY2tcbiAgOztcblxuICBpbmNsdWRlIE1ha2VfY29udGFpbmVyIChzdHJ1Y3RcbiAgICAgIGxldCB0b19saXN0ID0gdG9fbGlzdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgQmFja190b19mcm9udCA9IHN0cnVjdFxuICBsZXQgdG9fbGlzdCB0ID0gdC5iYWNrIEAgTGlzdC5yZXYgdC5mcm9udFxuICBsZXQgb2ZfbGlzdCBsaXN0ID0gbWFrZSB+bGVuZ3RoOihMaXN0Lmxlbmd0aCBsaXN0KSB+YmFjazpsaXN0IH5mcm9udDpbXVxuXG4gIGxldCB0b19zZXF1ZW5jZSB0ID1cbiAgICBTZXF1ZW5jZS5hcHBlbmQgKFNlcXVlbmNlLm9mX2xpc3QgdC5iYWNrKSAoU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgdC5mcm9udCkpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgICBsZXQgbGVuZ3RoLCBmcm9udCA9XG4gICAgICBTZXF1ZW5jZS5mb2xkIHNlcXVlbmNlIH5pbml0OigwLCBbXSkgfmY6KGZ1biAobGVuZ3RoLCBhY2MpIGEgLT5cbiAgICAgICAgbGVuZ3RoICsgMSwgYSA6OiBhY2MpXG4gICAgaW5cbiAgICBtYWtlIH5sZW5ndGggfmZyb250IH5iYWNrOltdXG4gIDs7XG5cbiAgaW5jbHVkZSBNYWtlX2NvbnRhaW5lciAoc3RydWN0XG4gICAgICBsZXQgdG9fbGlzdCA9IHRvX2xpc3RcbiAgICBlbmQpXG5lbmRcblxuaW5jbHVkZSBGcm9udF90b19iYWNrXG5cbmxldCBzaW5nbGV0b24geCA9IG9mX2xpc3QgWyB4IF1cblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBmb2xkIHQgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IGVsdCAtPiBmb2xkIChmIGVsdCkgfmluaXQ6dCB+ZjplbnF1ZXVlX2JhY2spXG4gICAgOztcblxuICAgIGxldCByZXR1cm4gPSBzaW5nbGV0b25cblxuICAgIGxldCBtYXAgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgICAgeyBmcm9udCA9IExpc3QubWFwIHQuZnJvbnQgfmY7IGJhY2sgPSBMaXN0Lm1hcCB0LmJhY2sgfmY7IGxlbmd0aCA9IHQubGVuZ3RoIH0pXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgY29tcGFyZSBjbXAgdDEgdDIgPSBMaXN0LmNvbXBhcmUgY21wICh0b19saXN0IHQxKSAodG9fbGlzdCB0MilcbmxldCBlcXVhbCBlcSB0MSB0MiA9IExpc3QuZXF1YWwgZXEgKHRvX2xpc3QgdDEpICh0b19saXN0IHQyKVxuXG5sZXQgaGFzaF9mb2xkX3QgaGFzaF9mb2xkX2Egc3RhdGUgdCA9XG4gIGZvbGQgfmY6aGFzaF9mb2xkX2EgfmluaXQ6KFslaGFzaF9mb2xkOiBpbnRdIHN0YXRlIChsZW5ndGggdCkpIHRcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgdCA9IFslc2V4cF9vZjogZWx0IGxpc3RdICh0b19saXN0IHQpXG4gICAgbGV0IHRfb2Zfc2V4cCBlbHRfb2Zfc2V4cCBzZXhwID0gb2ZfbGlzdCAoWyVvZl9zZXhwOiBlbHQgbGlzdF0gc2V4cClcbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBMaXN0LnRfc2V4cF9ncmFtbWFyXG4gICAgbGV0IG1hcCA9IG1hcFxuXG4gICAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICAgICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjgzZjk2OTgyLTQ5OTItMTFlNi05MTlkLWZiZGRjZmRjYTU3NlwiXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuRmRlcXVlXCJcbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgaXRlciB0IH5mID0gTGlzdC5pdGVyICh0b19saXN0IHQpIH5mXG5cbiAgICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgICAgbGV0IHJlYyBsb29wIG5leHQgYWNjIG4gPVxuICAgICAgICAgICAgaWYgbGVuID0gblxuICAgICAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBhc3NlcnQgKG4gPSBsZW5ndGggYWNjKTtcbiAgICAgICAgICAgICAgbGV0IHggPSBuZXh0ICgpIGluXG4gICAgICAgICAgICAgIGxvb3AgbmV4dCAoZW5xdWV1ZV9iYWNrIGFjYyB4KSAobiArIDEpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbG9vcCBuZXh0IGVtcHR5IDBcbiAgICAgICAgOztcbiAgICAgIGVuZClcblxuICAgICgqIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gcHJvZHVjZWQgYnkgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSBpc1xuICAgICAgIGFzc3VtZWQgdG8gYmUgc3RhYmxlIChpZiB0aGUgJ2EgaXMgc3RhYmxlKS4gKilcbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgKF8gOiAnYSBTdGFibGVfd2l0bmVzcy50KSA6ICdhIHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoU3RhYmxlLlYxIDogbW9kdWxlIHR5cGUgb2YgU3RhYmxlLlYxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBidWlsZCB+ZnJvbnQgfmJhY2sgPVxuICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBmcm9udCArIExpc3QubGVuZ3RoIGJhY2sgaW5cbiAgICBsZXQgdCA9IHsgbGVuZ3RoOyBmcm9udDsgYmFjayB9IGluXG4gICAgaW52YXJpYW50IGlnbm9yZSB0O1xuICAgIHRcbiAgOztcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIChcbiAgICAgIFN0cmluZy5TdGFibGUuVjEgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdCA9IHN0cmluZ1xuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLlNcbiAgICAgICAgICB3aXRoIHR5cGUgY29tcGFyYWJsZSA6PSB0XG4gICAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0cmluZy5TdGFibGUuVjEuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBDb21wYXJhdG9yLnRcblxuICAgICAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLlMgd2l0aCB0eXBlIGtleSA6PSB0XG4gICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5pbmNsdWRlIEZpbGVuYW1lX2Jhc2VcblxuaW5jbHVkZSAoXG4gIFN0cmluZyA6XG4gIHNpZ1xuICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBpbmNsdWRlXG4gICAgICBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgRmRlcXVlXG5cbmxldCBlbnF1ZXVlID0gZW5xdWV1ZV9iYWNrXG5sZXQgcGVla19leG4gPSBwZWVrX2Zyb250X2V4blxubGV0IHBlZWsgPSBwZWVrX2Zyb250XG5sZXQgZGVxdWV1ZV9leG4gPSBkZXF1ZXVlX2Zyb250X2V4blxubGV0IGRlcXVldWUgPSBkZXF1ZXVlX2Zyb250XG5sZXQgZHJvcF9leG4gPSBkcm9wX2Zyb250X2V4blxubGV0IHRvX3NlcXVlbmNlID0gRnJvbnRfdG9fYmFjay50b19zZXF1ZW5jZVxubGV0IG9mX3NlcXVlbmNlID0gRnJvbnRfdG9fYmFjay5vZl9zZXF1ZW5jZVxuXG4oKiBEZXByZWNhdGVkIGFsaWFzZXMgKilcbmxldCB0b3AgPSBwZWVrXG5sZXQgdG9wX2V4biA9IHBlZWtfZXhuXG5sZXQgZGlzY2FyZF9leG4gPSBkcm9wX2V4blxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFsbG9jYXRpb25fcG9saWN5ID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IE5leHRfZml0XG4gICAgICAgIHwgRmlyc3RfZml0XG4gICAgICAgIHwgQmVzdF9maXRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdCA9IHN0cnVjdFxuICAgIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNCwgMTIsIDApXVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBTdGRsaWIuR2Muc3RhdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgICA7IGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIFslJWVsc2VdXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBTdGRsaWIuR2Muc3RhdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgWyUlZW5kaWZdXG4gIGVuZFxuXG4gIG1vZHVsZSBDb250cm9sID0gc3RydWN0XG4gICAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg1LCAwLCAwKV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgICB0eXBlIHQgPSBTdGRsaWIuR2MuY29udHJvbCA9XG4gICAgICAgIHsgbXV0YWJsZSBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBzcGFjZV9vdmVyaGVhZCA6IGludFxuICAgICAgICA7IG11dGFibGUgdmVyYm9zZSA6IGludFxuICAgICAgICA7IG11dGFibGUgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBzdGFja19saW1pdCA6IGludFxuICAgICAgICA7IG11dGFibGUgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgICAgOyB3aW5kb3dfc2l6ZSA6IGludFxuICAgICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgICA7IGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIFslJWVsc2VdXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICAgICAgdHlwZSB0ID0gU3RkbGliLkdjLmNvbnRyb2wgPVxuICAgICAgICB7IG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgICA7IG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICAgIDsgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyB2ZXJib3NlIDogaW50XG4gICAgICAgIDsgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgICAgOyBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgWyUlZW5kaWZdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RkbGliLkdjXG5cbm1vZHVsZSBTdGF0ID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAxMiwgMCldXG5cbiAgICB0eXBlIHQgPSBTdGRsaWIuR2Muc3RhdCA9XG4gICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIGJpbl9pbywgc2V4cCwgZmllbGRzXVxuXG4gICAgWyUlZWxzZV1cblxuICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5zdGF0ID1cbiAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICA7IGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBfb2YsIGZpZWxkc11cblxuICAgIFslJWVuZGlmXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKFQpXG5cbiAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAxMiwgMCldXG5cbiAgbGV0IGNvbWJpbmUgZmlyc3Qgc2Vjb25kIH5mbG9hdF9mIH5pbnRfZiA9XG4gICAgeyBtaW5vcl93b3JkcyA9IGZsb2F0X2YgZmlyc3QubWlub3Jfd29yZHMgc2Vjb25kLm1pbm9yX3dvcmRzXG4gICAgOyBwcm9tb3RlZF93b3JkcyA9IGZsb2F0X2YgZmlyc3QucHJvbW90ZWRfd29yZHMgc2Vjb25kLnByb21vdGVkX3dvcmRzXG4gICAgOyBtYWpvcl93b3JkcyA9IGZsb2F0X2YgZmlyc3QubWFqb3Jfd29yZHMgc2Vjb25kLm1ham9yX3dvcmRzXG4gICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA9IGludF9mIGZpcnN0Lm1pbm9yX2NvbGxlY3Rpb25zIHNlY29uZC5taW5vcl9jb2xsZWN0aW9uc1xuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPSBpbnRfZiBmaXJzdC5tYWpvcl9jb2xsZWN0aW9ucyBzZWNvbmQubWFqb3JfY29sbGVjdGlvbnNcbiAgICA7IGhlYXBfd29yZHMgPSBpbnRfZiBmaXJzdC5oZWFwX3dvcmRzIHNlY29uZC5oZWFwX3dvcmRzXG4gICAgOyBoZWFwX2NodW5rcyA9IGludF9mIGZpcnN0LmhlYXBfY2h1bmtzIHNlY29uZC5oZWFwX2NodW5rc1xuICAgIDsgbGl2ZV93b3JkcyA9IGludF9mIGZpcnN0LmxpdmVfd29yZHMgc2Vjb25kLmxpdmVfd29yZHNcbiAgICA7IGxpdmVfYmxvY2tzID0gaW50X2YgZmlyc3QubGl2ZV9ibG9ja3Mgc2Vjb25kLmxpdmVfYmxvY2tzXG4gICAgOyBmcmVlX3dvcmRzID0gaW50X2YgZmlyc3QuZnJlZV93b3JkcyBzZWNvbmQuZnJlZV93b3Jkc1xuICAgIDsgZnJlZV9ibG9ja3MgPSBpbnRfZiBmaXJzdC5mcmVlX2Jsb2NrcyBzZWNvbmQuZnJlZV9ibG9ja3NcbiAgICA7IGxhcmdlc3RfZnJlZSA9IGludF9mIGZpcnN0Lmxhcmdlc3RfZnJlZSBzZWNvbmQubGFyZ2VzdF9mcmVlXG4gICAgOyBmcmFnbWVudHMgPSBpbnRfZiBmaXJzdC5mcmFnbWVudHMgc2Vjb25kLmZyYWdtZW50c1xuICAgIDsgY29tcGFjdGlvbnMgPSBpbnRfZiBmaXJzdC5jb21wYWN0aW9ucyBzZWNvbmQuY29tcGFjdGlvbnNcbiAgICA7IHRvcF9oZWFwX3dvcmRzID0gaW50X2YgZmlyc3QudG9wX2hlYXBfd29yZHMgc2Vjb25kLnRvcF9oZWFwX3dvcmRzXG4gICAgOyBzdGFja19zaXplID0gaW50X2YgZmlyc3Quc3RhY2tfc2l6ZSBzZWNvbmQuc3RhY2tfc2l6ZVxuICAgIH1cbiAgOztcblxuICBbJSVlbHNlXVxuXG4gIGxldCBjb21iaW5lIGZpcnN0IHNlY29uZCB+ZmxvYXRfZiB+aW50X2YgPVxuICAgIHsgbWlub3Jfd29yZHMgPSBmbG9hdF9mIGZpcnN0Lm1pbm9yX3dvcmRzIHNlY29uZC5taW5vcl93b3Jkc1xuICAgIDsgcHJvbW90ZWRfd29yZHMgPSBmbG9hdF9mIGZpcnN0LnByb21vdGVkX3dvcmRzIHNlY29uZC5wcm9tb3RlZF93b3Jkc1xuICAgIDsgbWFqb3Jfd29yZHMgPSBmbG9hdF9mIGZpcnN0Lm1ham9yX3dvcmRzIHNlY29uZC5tYWpvcl93b3Jkc1xuICAgIDsgbWlub3JfY29sbGVjdGlvbnMgPSBpbnRfZiBmaXJzdC5taW5vcl9jb2xsZWN0aW9ucyBzZWNvbmQubWlub3JfY29sbGVjdGlvbnNcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zID0gaW50X2YgZmlyc3QubWFqb3JfY29sbGVjdGlvbnMgc2Vjb25kLm1ham9yX2NvbGxlY3Rpb25zXG4gICAgOyBoZWFwX3dvcmRzID0gaW50X2YgZmlyc3QuaGVhcF93b3JkcyBzZWNvbmQuaGVhcF93b3Jkc1xuICAgIDsgaGVhcF9jaHVua3MgPSBpbnRfZiBmaXJzdC5oZWFwX2NodW5rcyBzZWNvbmQuaGVhcF9jaHVua3NcbiAgICA7IGxpdmVfd29yZHMgPSBpbnRfZiBmaXJzdC5saXZlX3dvcmRzIHNlY29uZC5saXZlX3dvcmRzXG4gICAgOyBsaXZlX2Jsb2NrcyA9IGludF9mIGZpcnN0LmxpdmVfYmxvY2tzIHNlY29uZC5saXZlX2Jsb2Nrc1xuICAgIDsgZnJlZV93b3JkcyA9IGludF9mIGZpcnN0LmZyZWVfd29yZHMgc2Vjb25kLmZyZWVfd29yZHNcbiAgICA7IGZyZWVfYmxvY2tzID0gaW50X2YgZmlyc3QuZnJlZV9ibG9ja3Mgc2Vjb25kLmZyZWVfYmxvY2tzXG4gICAgOyBsYXJnZXN0X2ZyZWUgPSBpbnRfZiBmaXJzdC5sYXJnZXN0X2ZyZWUgc2Vjb25kLmxhcmdlc3RfZnJlZVxuICAgIDsgZnJhZ21lbnRzID0gaW50X2YgZmlyc3QuZnJhZ21lbnRzIHNlY29uZC5mcmFnbWVudHNcbiAgICA7IGNvbXBhY3Rpb25zID0gaW50X2YgZmlyc3QuY29tcGFjdGlvbnMgc2Vjb25kLmNvbXBhY3Rpb25zXG4gICAgOyB0b3BfaGVhcF93b3JkcyA9IGludF9mIGZpcnN0LnRvcF9oZWFwX3dvcmRzIHNlY29uZC50b3BfaGVhcF93b3Jkc1xuICAgIDsgc3RhY2tfc2l6ZSA9IGludF9mIGZpcnN0LnN0YWNrX3NpemUgc2Vjb25kLnN0YWNrX3NpemVcbiAgICA7IGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyA9XG4gICAgICAgIGludF9mIGZpcnN0LmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyBzZWNvbmQuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXG4gICAgfVxuICA7O1xuXG4gIFslJWVuZGlmXVxuXG4gIGxldCBhZGQgPSBjb21iaW5lIH5mbG9hdF9mOkZsb2F0LiggKyApIH5pbnRfZjpJbnQuKCArIClcbiAgbGV0IGRpZmYgPSBjb21iaW5lIH5mbG9hdF9mOkZsb2F0LiggLSApIH5pbnRfZjpJbnQuKCAtIClcbmVuZFxuXG5tb2R1bGUgQ29udHJvbCA9IHN0cnVjdFxuICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDUsIDAsIDApXVxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgdHlwZSB0ID0gU3RkbGliLkdjLmNvbnRyb2wgPVxuICAgICAgeyBtdXRhYmxlIG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgOyBtdXRhYmxlIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICA7IG11dGFibGUgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSB2ZXJib3NlIDogaW50XG4gICAgICA7IG11dGFibGUgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICA7IG11dGFibGUgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgOyB3aW5kb3dfc2l6ZSA6IGludFxuICAgICAgOyBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2YsIGZpZWxkc11cbiAgZW5kXG5cbiAgWyUlZWxzZV1cblxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5jb250cm9sID1cbiAgICAgIHsgbWlub3JfaGVhcF9zaXplIDogaW50XG4gICAgICA7IG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICA7IHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICA7IHZlcmJvc2UgOiBpbnRcbiAgICAgIDsgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICA7IHN0YWNrX2xpbWl0IDogaW50XG4gICAgICA7IGFsbG9jYXRpb25fcG9saWN5IDogaW50XG4gICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZiwgZmllbGRzXVxuICBlbmRcblxuICBbJSVlbmRpZl1cblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKFQpXG5lbmRcblxubW9kdWxlIEFsbG9jYXRpb25fcG9saWN5ID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5BbGxvY2F0aW9uX3BvbGljeS5WMS50ID1cbiAgICB8IE5leHRfZml0XG4gICAgfCBGaXJzdF9maXRcbiAgICB8IEJlc3RfZml0XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwX29mXVxuXG4gIGxldCB0b19pbnQgPSBmdW5jdGlvblxuICAgIHwgTmV4dF9maXQgLT4gMFxuICAgIHwgRmlyc3RfZml0IC0+IDFcbiAgICB8IEJlc3RfZml0IC0+IDJcbiAgOztcbmVuZFxuXG5sZXQgdHVuZVxuICAgICAgP2xvZ2dlclxuICAgICAgP21pbm9yX2hlYXBfc2l6ZVxuICAgICAgP21ham9yX2hlYXBfaW5jcmVtZW50XG4gICAgICA/c3BhY2Vfb3ZlcmhlYWRcbiAgICAgID92ZXJib3NlXG4gICAgICA/bWF4X292ZXJoZWFkXG4gICAgICA/c3RhY2tfbGltaXRcbiAgICAgID9hbGxvY2F0aW9uX3BvbGljeVxuICAgICAgP3dpbmRvd19zaXplXG4gICAgICA/Y3VzdG9tX21ham9yX3JhdGlvXG4gICAgICA/Y3VzdG9tX21pbm9yX3JhdGlvXG4gICAgICA/Y3VzdG9tX21pbm9yX21heF9zaXplXG4gICAgICAoKVxuICA9XG4gIGxldCBvbGRfY29udHJvbF9wYXJhbXMgPSBnZXQgKCkgaW5cbiAgbGV0IGYgb3B0IHRvX3N0cmluZyBmaWVsZCA9XG4gICAgbGV0IG9sZF92YWx1ZSA9IEZpZWxkLmdldCBmaWVsZCBvbGRfY29udHJvbF9wYXJhbXMgaW5cbiAgICBtYXRjaCBvcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBvbGRfdmFsdWVcbiAgICB8IFNvbWUgbmV3X3ZhbHVlIC0+XG4gICAgICBPcHRpb24uaXRlciBsb2dnZXIgfmY6KGZ1biBmIC0+XG4gICAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAgIGZcbiAgICAgICAgICBcIkdjLkNvbnRyb2wuJXM6ICVzIC0+ICVzXCJcbiAgICAgICAgICAoRmllbGQubmFtZSBmaWVsZClcbiAgICAgICAgICAodG9fc3RyaW5nIG9sZF92YWx1ZSlcbiAgICAgICAgICAodG9fc3RyaW5nIG5ld192YWx1ZSkpO1xuICAgICAgbmV3X3ZhbHVlXG4gIGluXG4gIGxldCBhbGxvY2F0aW9uX3BvbGljeSA9IE9wdGlvbi5tYXAgYWxsb2NhdGlvbl9wb2xpY3kgfmY6QWxsb2NhdGlvbl9wb2xpY3kudG9faW50IGluXG4gIGxldCBuZXdfY29udHJvbF9wYXJhbXMgPVxuICAgIENvbnRyb2wuRmllbGRzLm1hcFxuICAgICAgfm1pbm9yX2hlYXBfc2l6ZTooZiBtaW5vcl9oZWFwX3NpemUgc3RyaW5nX29mX2ludClcbiAgICAgIH5tYWpvcl9oZWFwX2luY3JlbWVudDooZiBtYWpvcl9oZWFwX2luY3JlbWVudCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfnNwYWNlX292ZXJoZWFkOihmIHNwYWNlX292ZXJoZWFkIHN0cmluZ19vZl9pbnQpXG4gICAgICB+dmVyYm9zZTooZiB2ZXJib3NlIHN0cmluZ19vZl9pbnQpXG4gICAgICB+bWF4X292ZXJoZWFkOihmIG1heF9vdmVyaGVhZCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfnN0YWNrX2xpbWl0OihmIHN0YWNrX2xpbWl0IHN0cmluZ19vZl9pbnQpXG4gICAgICB+YWxsb2NhdGlvbl9wb2xpY3k6KGYgYWxsb2NhdGlvbl9wb2xpY3kgc3RyaW5nX29mX2ludClcbiAgICAgIH53aW5kb3dfc2l6ZTooZiB3aW5kb3dfc2l6ZSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfmN1c3RvbV9tYWpvcl9yYXRpbzooZiBjdXN0b21fbWFqb3JfcmF0aW8gc3RyaW5nX29mX2ludClcbiAgICAgIH5jdXN0b21fbWlub3JfcmF0aW86KGYgY3VzdG9tX21pbm9yX3JhdGlvIHN0cmluZ19vZl9pbnQpXG4gICAgICB+Y3VzdG9tX21pbm9yX21heF9zaXplOihmIGN1c3RvbV9taW5vcl9tYXhfc2l6ZSBzdHJpbmdfb2ZfaW50KVxuICBpblxuICBzZXQgbmV3X2NvbnRyb2xfcGFyYW1zXG47O1xuXG5sZXQgZGlzYWJsZV9jb21wYWN0aW9uID9sb2dnZXIgfmFsbG9jYXRpb25fcG9saWN5ICgpID1cbiAgbGV0IGFsbG9jYXRpb25fcG9saWN5ID1cbiAgICBtYXRjaCBhbGxvY2F0aW9uX3BvbGljeSB3aXRoXG4gICAgfCBgRG9uJ3RfY2hhbmdlIC0+IE5vbmVcbiAgICB8IGBTZXRfdG8gcG9saWN5IC0+IFNvbWUgcG9saWN5XG4gIGluXG4gICgqIFRoZSB2YWx1ZSAxXzAwMF8wMDAsIGFjY29yZGluZyB0b1xuICAgICBodHRwOi8vY2FtbC5pbnJpYS5mci9wdWIvZG9jcy9tYW51YWwtb2NhbWwtNC4wMi9saWJyZWYvR2MuaHRtbFxuICAgICB3aWxsIGRpc2FibGUgY29tcGFjdGlvbnMuXG4gICopXG4gIHR1bmUgP2xvZ2dlciA/YWxsb2NhdGlvbl9wb2xpY3kgfm1heF9vdmVyaGVhZDoxXzAwMF8wMDAgKClcbjs7XG5cbmV4dGVybmFsIG1pbm9yX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWlub3Jfd29yZHNcIlxuZXh0ZXJuYWwgbWFqb3Jfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl93b3Jkc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBwcm9tb3RlZF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX3Byb21vdGVkX3dvcmRzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1pbm9yX2NvbGxlY3Rpb25zIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbWFqb3JfY29sbGVjdGlvbnMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9uc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb21wYWN0aW9ucyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2NvbXBhY3Rpb25zXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1ham9yX3BsdXNfbWlub3Jfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzXCJcbmV4dGVybmFsIGFsbG9jYXRlZF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2FsbG9jYXRlZF93b3Jkc1wiXG5leHRlcm5hbCBydW5fbWVtcHJvZl9jYWxsYmFja3MgOiB1bml0IC0+IHVuaXQgPSBcImNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzXCJcblxuWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg1LCAwLCAwKV1cblxuZXh0ZXJuYWwgaGVhcF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2hlYXBfd29yZHNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaGVhcF9jaHVua3MgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19oZWFwX2NodW5rc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b3BfaGVhcF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX3RvcF9oZWFwX3dvcmRzXCIgW0BAbm9hbGxvY11cblxuWyUlZW5kaWZdXG5cbmxldCBzdGF0X3NpemVfbGF6eSA9XG4gIGxhenkgKE9iai5yZWFjaGFibGVfd29yZHMgKE9iai5yZXByIChTdGRsaWIuR2MucXVpY2tfc3RhdCAoKSA6IFN0YXQudCkpKVxuOztcblxubGV0IHN0YXRfc2l6ZSAoKSA9IExhenkuZm9yY2Ugc3RhdF9zaXplX2xhenlcbmxldCB6ZXJvID0gU3lzLm9wYXF1ZV9pZGVudGl0eSAoaW50X29mX3N0cmluZyBcIjBcIilcblxuKCogVGhlIGNvbXBpbGVyIHdvbid0IG9wdGltaXplIGludF9vZl9zdHJpbmcgYXdheSBzbyBpdCB3b24ndFxuICAgcGVyZm9ybSBjb25zdGFudCBmb2xkaW5nIGJlbG93LiAqKVxubGV0IHJlYyBrZWVwX2FsaXZlIG8gPSBpZiB6ZXJvIDw+IDAgdGhlbiBrZWVwX2FsaXZlIChTeXMub3BhcXVlX2lkZW50aXR5IG8pXG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAoKiBXZSBkaXNhYmxlIGlubGluaW5nIGZvciB0aGlzIGZ1bmN0aW9uIHNvIHRoZSBHQyBzdGF0cyBhbmQgdGhlIGNhbGwgdG8gW2ZdIGFyZSBuZXZlclxuICAgICByZWFycmFuZ2VkLiAqKVxuICBsZXRbQGNvbGRdIG1lYXN1cmVfaW50ZXJuYWwgfm9uX3Jlc3VsdCBmID1cbiAgICBsZXQgbWlub3Jfd29yZHNfYmVmb3JlID0gbWlub3Jfd29yZHMgKCkgaW5cbiAgICBsZXQgbWFqb3Jfd29yZHNfYmVmb3JlID0gbWFqb3Jfd29yZHMgKCkgaW5cbiAgICAoKiBXZSB3cmFwIFtmICgpXSB3aXRoIFtTeXMub3BhcXVlX2lkZW50aXR5XSB0byBwcmV2ZW50IHRoZSByZXR1cm4gdmFsdWUgZnJvbSBiZWluZ1xuICAgICAgIG9wdGltaXplZCBhd2F5LiAqKVxuICAgIGxldCB4ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSAoZiAoKSkgaW5cbiAgICBsZXQgbWlub3Jfd29yZHNfYWZ0ZXIgPSBtaW5vcl93b3JkcyAoKSBpblxuICAgIGxldCBtYWpvcl93b3Jkc19hZnRlciA9IG1ham9yX3dvcmRzICgpIGluXG4gICAgbGV0IG1ham9yX3dvcmRzX2FsbG9jYXRlZCA9IG1ham9yX3dvcmRzX2FmdGVyIC0gbWFqb3Jfd29yZHNfYmVmb3JlIGluXG4gICAgbGV0IG1pbm9yX3dvcmRzX2FsbG9jYXRlZCA9IG1pbm9yX3dvcmRzX2FmdGVyIC0gbWlub3Jfd29yZHNfYmVmb3JlIGluXG4gICAgb25fcmVzdWx0IH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCB4XG4gIDs7XG5cbiAgbGV0IGlzX3plcm9fYWxsb2MgKHR5cGUgYSkgKGYgOiB1bml0IC0+IGEpID1cbiAgICAoKiBJbnN0ZWFkIG9mIHVzaW5nIFtBbGxvY2F0aW9uX3JlcG9ydC5tZWFzdXJlXSwgYW5kIG1hdGNoaW5nIG9uIHRoZSByZXN1bHQsIHdlIHVzZVxuICAgICAgIHRoaXMgY29uc3RydWN0aW9uLCBpbiBvcmRlciB0byBoYXZlIFtpc196ZXJvX2FsbG9jXSBub3QgYWxsb2NhdGUgaXRzZWxmLiBUaGlzXG4gICAgICAgZW5hYmxlcyBbaXNfemVyb19hbGxvY10gdG8gYmUgdXNlZCBpbiBhIG5lc3RlZCB3YXkuICopXG4gICAgbWVhc3VyZV9pbnRlcm5hbFxuICAgICAgZlxuICAgICAgfm9uX3Jlc3VsdDooZnVuIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCB2YWx1ZSAtPlxuICAgICAgICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgdmFsdWUgOiBhKTtcbiAgICAgICAgbWFqb3Jfd29yZHNfYWxsb2NhdGVkID09IDAgJiYgbWlub3Jfd29yZHNfYWxsb2NhdGVkID09IDApXG4gIDs7XG5cbiAgbW9kdWxlIEFsbG9jYXRpb25fcmVwb3J0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbWFqb3Jfd29yZHNfYWxsb2NhdGVkIDogaW50XG4gICAgICA7IG1pbm9yX3dvcmRzX2FsbG9jYXRlZCA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgY3JlYXRlIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCA9XG4gICAgICB7IG1ham9yX3dvcmRzX2FsbG9jYXRlZDsgbWlub3Jfd29yZHNfYWxsb2NhdGVkIH1cbiAgICA7O1xuICBlbmRcblxuICBsZXQgbWVhc3VyZV9hbGxvY2F0aW9uIGYgPVxuICAgIG1lYXN1cmVfaW50ZXJuYWwgZiB+b25fcmVzdWx0OihmdW4gfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkIHggLT5cbiAgICAgIHgsIEFsbG9jYXRpb25fcmVwb3J0LmNyZWF0ZSB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQpXG4gIDs7XG5cbiAgbW9kdWxlIEFsbG9jYXRpb25fbG9nID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgc2l6ZV9pbl93b3JkcyA6IGludFxuICAgICAgOyBpc19tYWpvciA6IGJvb2xcbiAgICAgIDsgYmFja3RyYWNlIDogc3RyaW5nXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgWyUlaWYgb2NhbWxfdmVyc2lvbiA+PSAoNCwgMTEsIDApXVxuXG4gIGxldCBtZWFzdXJlX2FuZF9sb2dfYWxsb2NhdGlvbiBmID1cbiAgICBsZXQgbG9nIDogQWxsb2NhdGlvbl9sb2cudCBsaXN0IHJlZiA9IHJlZiBbXVxuICAgIGFuZCBtYWpvcl9hbGxvY3MgPSByZWYgMFxuICAgIGFuZCBtaW5vcl9hbGxvY3MgPSByZWYgMCBpblxuICAgIGxldCBvbl9hbGxvYyB+aXNfbWFqb3IgKGluZm8gOiBTdGRsaWIuR2MuTWVtcHJvZi5hbGxvY2F0aW9uKSA9XG4gICAgICBpZiBpc19tYWpvclxuICAgICAgdGhlbiBtYWpvcl9hbGxvY3MgOj0gIW1ham9yX2FsbG9jcyArIGluZm8ubl9zYW1wbGVzXG4gICAgICBlbHNlIG1pbm9yX2FsbG9jcyA6PSAhbWlub3JfYWxsb2NzICsgaW5mby5uX3NhbXBsZXM7XG4gICAgICBsZXQgYmFja3RyYWNlID0gU3RkbGliLlByaW50ZXhjLnJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIGluZm8uY2FsbHN0YWNrIGluXG4gICAgICAoKiBNYWtlIGJhY2t0cmFjZXMgZWFzaWVyIHRvIHJlYWQgYnkgZGVsZXRpbmcgZXZlcnl0aGluZyBiZWxvdyB0aGlzIGZ1bmN0aW9uICopXG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnN1YnN0cl9pbmRleCBiYWNrdHJhY2UgfnBhdHRlcm46XCJtZWFzdXJlX2FuZF9sb2dfYWxsb2NhdGlvblwiIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogVGhpcyBjYXNlIGlzIHBvc3NpYmxlOiB3ZSBtYXkgaGF2ZSBsb2dnZWQgYWxsb2NhdGlvbnMgaW4gYW5vdGhlciB0aHJlYWQgKilcbiAgICAgICAgICBiYWNrdHJhY2VcbiAgICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgICBTdHJpbmcuc3ViIH5wb3M6MCB+bGVuOnAgYmFja3RyYWNlXG4gICAgICAgICAgfD4gU3RyaW5nLnJzdHJpcCB+ZHJvcDooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgJ1xcbicgLT4gZmFsc2VcbiAgICAgICAgICAgIHwgXyAtPiB0cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCBpbmZvIDogQWxsb2NhdGlvbl9sb2cudCA9XG4gICAgICAgIHsgc2l6ZV9pbl93b3JkcyA9IGluZm8ubl9zYW1wbGVzOyBpc19tYWpvcjsgYmFja3RyYWNlIH1cbiAgICAgIGluXG4gICAgICBsb2cgOj0gaW5mbyA6OiAhbG9nO1xuICAgICAgTm9uZVxuICAgIGluXG4gICAgbGV0IHRyYWNrZXIgPVxuICAgICAgeyBTdGRsaWIuR2MuTWVtcHJvZi5udWxsX3RyYWNrZXIgd2l0aFxuICAgICAgICBhbGxvY19taW5vciA9IG9uX2FsbG9jIH5pc19tYWpvcjpmYWxzZVxuICAgICAgOyBhbGxvY19tYWpvciA9IG9uX2FsbG9jIH5pc19tYWpvcjp0cnVlXG4gICAgICB9XG4gICAgaW5cbiAgICBTdGRsaWIuR2MuTWVtcHJvZi5zdGFydCB+c2FtcGxpbmdfcmF0ZToxLjAgdHJhY2tlcjtcbiAgICAoKiBFeG4ucHJvdGVjdCwgbWFudWFsbHkgaW5saW5lZCB0byBndWFyYW50ZWUgbm8gYWxsb2NhdGlvbnMgKilcbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgICAgfCB4IC0+XG4gICAgICAgICgqIE1lbXByb2Yuc3RvcCBkb2VzIG5vdCBndWFyYW50ZWUgdGhhdCBhbGwgbWVtcHJvZiBjYWxsYmFja3MgYXJlIHJ1biAoc29tZSBtYXkgYmVcbiAgICAgICAgICAgZGVsYXllZCBpZiB0aGV5IGhhcHBlbmVkIGR1cmluZyBDIGNvZGUgYW5kIHRoZXJlIGhhcyBiZWVuIG5vIGFsbG9jYXRpb24gc2luY2UpLFxuICAgICAgICAgICBzbyB3ZSBleHBsaWN0bHkgZmx1c2ggdGhlbSAqKVxuICAgICAgICBydW5fbWVtcHJvZl9jYWxsYmFja3MgKCk7XG4gICAgICAgIFN0ZGxpYi5HYy5NZW1wcm9mLnN0b3AgKCk7XG4gICAgICAgIHhcbiAgICAgIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgICAgcnVuX21lbXByb2ZfY2FsbGJhY2tzICgpO1xuICAgICAgICBTdGRsaWIuR2MuTWVtcHJvZi5zdG9wICgpO1xuICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICAoIHJlc3VsdFxuICAgICwgQWxsb2NhdGlvbl9yZXBvcnQuY3JlYXRlXG4gICAgICAgIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQ6IW1ham9yX2FsbG9jc1xuICAgICAgICB+bWlub3Jfd29yZHNfYWxsb2NhdGVkOiFtaW5vcl9hbGxvY3NcbiAgICAsIExpc3QucmV2ICFsb2cgKVxuICA7O1xuXG4gIFslJWVsc2VdXG5cbiAgbGV0IG1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIGYgPVxuICAgIGxldCB4LCByZXBvcnQgPSBtZWFzdXJlX2FsbG9jYXRpb24gZiBpblxuICAgIHgsIHJlcG9ydCwgW11cbiAgOztcblxuICBbJSVlbmRpZl1cbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBhZGRfZmluYWxpemVyIHggZiA9XG4gICAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZSAoZnVuIHggLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+IGYgeCkpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAoKiBUaGUgdHlwZSBvZiBhZGRfZmluYWxpemVyIGVuc3VyZXMgdGhhdCB0aGUgb25seSBwb3NzaWJsZSBmYWlsdXJlXG4gICAgICAgICBpcyBkdWUgdG8gW3hdIGJlaW5nIHN0YXRpYyBkYXRhLiBJbiB0aGlzIGNhc2UsIHdlIHNpbXBseSBkcm9wIHRoZVxuICAgICAgICAgZmluYWxpemVyIHNpbmNlIHN0YXRpYyBkYXRhIHdvdWxkIG5ldmVyIGhhdmUgYmVlbiBjb2xsZWN0ZWQgYnkgdGhlXG4gICAgICAgICBHQyBhbnl3YXkuICopXG4gICAgICAoKVxuICA7O1xuXG4gICgqIFthZGRfZmluYWxpemVyX2V4bl0gaXMgdGhlIHNhbWUgYXMgW2FkZF9maW5hbGl6ZXJdLiAgSG93ZXZlciwgdGhlaXIgdHlwZXMgaW5cbiAgICAgY29yZV9nYy5tbGkgYXJlIGRpZmZlcmVudCwgYW5kIHRoZSB0eXBlIG9mIFthZGRfZmluYWxpemVyXSBndWFyYW50ZWVzIHRoYXQgaXQgYWx3YXlzXG4gICAgIHJlY2VpdmVzIGEgaGVhcCBibG9jaywgd2hpY2ggZW5zdXJlcyB0aGF0IGl0IHdpbGwgbm90IHJhaXNlLCB3aGlsZVxuICAgICBbYWRkX2ZpbmFsaXplcl9leG5dIGFjY2VwdHMgYW55IHR5cGUsIGFuZCBzbyBtYXkgcmFpc2UuICopXG4gIGxldCBhZGRfZmluYWxpemVyX2V4biB4IGYgPVxuICAgIHRyeSBTdGRsaWIuR2MuZmluYWxpc2UgKGZ1biB4IC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPiBmIHgpKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgaWdub3JlIChIZWFwX2Jsb2NrLmNyZWF0ZSB4IDogXyBIZWFwX2Jsb2NrLnQgb3B0aW9uKTtcbiAgICAgICgqIElmIFtIZWFwX2Jsb2NrLmNyZWF0ZV0gc3VjY2VlZHMgdGhlbiBbeF0gaXMgc3RhdGljIGRhdGEgYW5kIHNvXG4gICAgICAgICB3ZSBjYW4gc2ltcGx5IGRyb3AgdGhlIGZpbmFsaXNlci4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGFkZF9maW5hbGl6ZXJfbGFzdCB4IGYgPVxuICAgIHRyeSBTdGRsaWIuR2MuZmluYWxpc2VfbGFzdCAoZnVuICgpIC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZikgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICgqIFRoZSB0eXBlIG9mIGFkZF9maW5hbGl6ZXJfbGFzdCBlbnN1cmVzIHRoYXQgdGhlIG9ubHkgcG9zc2libGUgZmFpbHVyZVxuICAgICAgICAgaXMgZHVlIHRvIFt4XSBiZWluZyBzdGF0aWMgZGF0YS4gSW4gdGhpcyBjYXNlLCB3ZSBzaW1wbHkgZHJvcCB0aGVcbiAgICAgICAgIGZpbmFsaXplciBzaW5jZSBzdGF0aWMgZGF0YSB3b3VsZCBuZXZlciBoYXZlIGJlZW4gY29sbGVjdGVkIGJ5IHRoZVxuICAgICAgICAgR0MgYW55d2F5LiAqKVxuICAgICAgKClcbiAgOztcblxuICBsZXQgYWRkX2ZpbmFsaXplcl9sYXN0X2V4biB4IGYgPVxuICAgIHRyeSBTdGRsaWIuR2MuZmluYWxpc2VfbGFzdCAoZnVuICgpIC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZikgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgIGlnbm9yZSAoSGVhcF9ibG9jay5jcmVhdGUgeCA6IF8gSGVhcF9ibG9jay50IG9wdGlvbik7XG4gICAgICAoKiBJZiBbSGVhcF9ibG9jay5jcmVhdGVdIHN1Y2NlZWRzIHRoZW4gW3hdIGlzIHN0YXRpYyBkYXRhIGFuZCBzb1xuICAgICAgICAgd2UgY2FuIHNpbXBseSBkcm9wIHRoZSBmaW5hbGlzZXIuICopXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBmaW5hbGl6ZV9yZWxlYXNlID0gU3RkbGliLkdjLmZpbmFsaXNlX3JlbGVhc2VcblxuICBtb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBhbGFybVxuXG4gICAgbGV0IHNleHBfb2ZfdCBfID0gXCI8Z2MgYWxhcm0+XCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgbGV0IGNyZWF0ZSBmID0gY3JlYXRlX2FsYXJtIChmdW4gKCkgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmKVxuICAgIGxldCBkZWxldGUgPSBkZWxldGVfYWxhcm1cbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2VyaWFsaXphYmxlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmcgKiBpbnQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUMCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBob3N0IDogU3RyaW5nLnRcbiAgICAgICAgOyBwb3J0IDogSW50LnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2tdXG5cbiAgICAgIGxldCB0b19zZXJpYWxpemFibGUgeyBob3N0OyBwb3J0IH0gPSBob3N0LCBwb3J0XG4gICAgICBsZXQgb2Zfc2VyaWFsaXphYmxlIChob3N0LCBwb3J0KSA9IHsgaG9zdDsgcG9ydCB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKFNlcmlhbGl6YWJsZSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFQwXG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU2VyaWFsaXphYmxlLnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgb2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgdG9fc2VyaWFsaXphYmxlXG4gICAgICA7O1xuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzdGFibGVcIiA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IFNlcmlhbGl6YWJsZS50XTtcbiAgICAgICAgWyVleHBlY3RcbiAgICAgICAgICB7fFxuICAgICAgICAgICAgICAgICAgOTU3OTkwZjBmYzQxNjFmYjg3NGU2Njg3MjU1MGZiNDBcbiAgICAgICAgICAgICAgICAgIDk1Nzk5MGYwZmM0MTYxZmI4NzRlNjY4NzI1NTBmYjQwIHx9XVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAoU2VyaWFsaXphYmxlKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIG9wZW4hIEltcG9ydFxuICAgICAgb3BlbiEgU3RkX2ludGVybmFsXG4gICAgICBvcGVuISBUMFxuXG4gICAgICBsZXQgdG9fc3RyaW5nIHsgaG9zdDsgcG9ydCB9ID0gc3ByaW50ZiBcIiVzOiVkXCIgaG9zdCBwb3J0XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonOicgd2l0aFxuICAgICAgICB8IFsgaG9zdDsgcG9ydCBdIC0+XG4gICAgICAgICAgbGV0IHBvcnQgPVxuICAgICAgICAgICAgdHJ5IEludC5vZl9zdHJpbmcgcG9ydCB3aXRoXG4gICAgICAgICAgICB8IF9leG4gLT4gZmFpbHdpdGhmIFwiSG9zdF9hbmRfcG9ydC5vZl9zdHJpbmc6IGJhZCBwb3J0OiAlc1wiIHMgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIHsgaG9zdDsgcG9ydCB9XG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZzogJXNcIiBzICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgICAgfCBTZXhwLkF0b20gcyBhcyBzZXhwIC0+XG4gICAgICAgICAgKHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICAgIHwgRmFpbHVyZSBlcnIgLT4gb2Zfc2V4cF9lcnJvciBlcnIgc2V4cClcbiAgICAgICAgfCBzZXhwIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5cbiAgICAgICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgICAgICBVbmlvblxuICAgICAgICAgICAgICAgIFsgKCogaGFuZGxlcyB0aGUgaG9zdDpwb3J0IHN0cmluZyBjYXNlICopXG4gICAgICAgICAgICAgICAgICBTdHJpbmdcbiAgICAgICAgICAgICAgICAgIDsgKCogaGFuZGxlcyB0aGUgbGlzdCAoaG9zdCBwb3J0KSBjYXNlICAqKVxuICAgICAgICAgICAgICAgICAgTGlzdCAoQ29ucyAoU3RyaW5nLCBDb25zIChJbnRlZ2VyLCBFbXB0eSkpKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUMVxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUMSlcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJ0X29mX3NleHBcIiA9XG4gICAgICBbJXRlc3RfcmVzdWx0OiB0XVxuICAgICAgICAodF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyB7fChsb2NhbGhvc3QgODA4MCl8fSkpXG4gICAgICAgIH5leHBlY3Q6eyBob3N0ID0gXCJsb2NhbGhvc3RcIjsgcG9ydCA9IDgwODAgfTtcbiAgICAgIFsldGVzdF9yZXN1bHQ6IHRdXG4gICAgICAgICh0X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIHt8bG9jYWxob3N0OjgwODB8fSkpXG4gICAgICAgIH5leHBlY3Q6eyBob3N0ID0gXCJsb2NhbGhvc3RcIjsgcG9ydCA9IDgwODAgfVxuICAgIDs7XG5cbiAgICBsZXQldGVzdF91bml0IFwic2V4cCByb3VuZHRyaXBcIiA9XG4gICAgICBRdWlja2NoZWNrLnRlc3QgWyVxdWlja2NoZWNrLmdlbmVyYXRvcjogdF0gfmY6KGZ1biB0IC0+XG4gICAgICAgIFsldGVzdF9yZXN1bHQ6IHRdICh0X29mX3NleHAgKHNleHBfb2ZfdCB0KSkgfmV4cGVjdDp0KVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5cbm1vZHVsZSBMYXRlc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGFibGUuVjFcbmVuZFxuXG5pbmNsdWRlIExhdGVzdFxuXG5sZXQgY3JlYXRlIH5ob3N0IH5wb3J0ID0geyBob3N0OyBwb3J0IH1cbmxldCBob3N0IHQgPSB0Lmhvc3RcbmxldCBwb3J0IHQgPSB0LnBvcnRcbmxldCB0dXBsZSB0ID0gdG9fc2VyaWFsaXphYmxlIHRcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuSG9zdF9hbmRfcG9ydFwiXG4gIGVuZClcblxuaW5jbHVkZSAoSGFzaGFibGUuTWFrZV9iaW5hYmxlIChMYXRlc3QpIDogSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKExhdGVzdClcblxubGV0IHR5cGVfaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpcIkhvc3RfYW5kX3BvcnRcIiBzZXhwX29mX3RcbiIsIm9wZW4gU3RhYmxlX21vZHVsZV90eXBlc1xubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlN0YWJsZVxubW9kdWxlIFNleHBhYmxlID0gU2V4cGFibGUuU3RhYmxlXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0ID0gc3RydWN0XG4gIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiB0IC0+IFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiBTdGFibGVfZm9ybWF0LnQgLT4gdFxuICAgICAgICAgIGVuZCkgOiBTMCB3aXRoIHR5cGUgdCA9IE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQyID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTVxuXG4gICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUMlxuICAgICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZS5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQyKVxuICAgICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFN0YWJsZV9mb3JtYXQpIChUMilcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVDFcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuVjEuTWFrZSAoVDEpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiB0IC0+IFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiBTdGFibGVfZm9ybWF0LnQgLT4gdFxuICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICBlbmQpIDogUzAgd2l0aCB0eXBlIHQgPSBNLnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUMiA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE1cblxuICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVDJcbiAgICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUuVjEgKFN0YWJsZV9mb3JtYXQpIChUMilcbiAgICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlLlYyIChTdGFibGVfZm9ybWF0KSAoVDIpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFQxXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlYxLk1ha2UgKFQxKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDEgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAnYSB0IC0+ICdhIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAnYSBTdGFibGVfZm9ybWF0LnQgLT4gJ2EgdFxuICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA9ICdhIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUxLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTEuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcblxuICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICdhIHQgLT4gJ2EgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICdhIFN0YWJsZV9mb3JtYXQudCAtPiAnYSB0XG4gICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA9ICdhIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUxLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTEuVjIgKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcCA6ICgnYTEsICdhMikgdCAtPiBmMTooJ2ExIC0+ICdiMSkgLT4gZjI6KCdhMiAtPiAnYjIpIC0+ICgnYjEsICdiMikgdFxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIHQgLT4gKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyKSB0XG4gICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2ExLCAnYTIpIHQgPSAoJ2ExLCAnYTIpIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUyLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTIuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcblxuICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgdCAtPiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIpIHRcbiAgICAgICAgICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fc2hhcGUuVXVpZC50XG4gICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2ExLCAnYTIpIHQgPSAoJ2ExLCAnYTIpIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUyLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTIuVjIgKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDMgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXBcbiAgICAgICAgICAgICAgOiAgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICAgICAgLT4gZjE6KCdhMSAtPiAnYjEpXG4gICAgICAgICAgICAgIC0+IGYyOignYTIgLT4gJ2IyKVxuICAgICAgICAgICAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAgICAgICAgICAgLT4gKCdiMSwgJ2IyLCAnYjMpIHRcblxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgdCAtPiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYTEsICdhMiwgJ2EzKSB0ID0gKCdhMSwgJ2EyLCAnYTMpIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUzLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTMuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcblxuICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcFxuICAgICAgICAgICAgICA6ICAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAgICAgICAgICAgLT4gZjI6KCdhMiAtPiAnYjIpXG4gICAgICAgICAgICAgIC0+IGYzOignYTMgLT4gJ2IzKVxuICAgICAgICAgICAgICAtPiAoJ2IxLCAnYjIsICdiMykgdFxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSB0IC0+ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYTEsICdhMiwgJ2EzKSB0ID0gKCdhMSwgJ2EyLCAnYTMpIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUzLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTMuVjIgKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgV2l0aF9zdGFibGVfd2l0bmVzcyA9IHN0cnVjdFxuICBtb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdCA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiB0IC0+IFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6IFN0YWJsZV9mb3JtYXQudCAtPiB0XG4gICAgICAgICAgICBlbmQpIDogV2l0aF9zdGFibGVfd2l0bmVzcy5TMCB3aXRoIHR5cGUgdCA9IE0udCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0LlYxIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiB0IC0+IFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6IFN0YWJsZV9mb3JtYXQudCAtPiB0XG4gICAgICAgICAgICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fc2hhcGUuVXVpZC50XG4gICAgICAgICAgICBlbmQpIDogV2l0aF9zdGFibGVfd2l0bmVzcy5TMCB3aXRoIHR5cGUgdCA9IE0udCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0LlYyIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQxID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICdhIHQgLT4gJ2EgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogJ2EgU3RhYmxlX2Zvcm1hdC50IC0+ICdhIHRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMxIHdpdGggdHlwZSAnYSB0ID0gJ2EgTS50ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQxLlYxIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzICh0eXBlIGEpIDogYSBTdGFibGVfd2l0bmVzcy50IC0+IGEgTS50IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgICBmdW4gd2l0bmVzcyAtPlxuICAgICAgICBsZXQgbW9kdWxlIFN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuT2Zfc2VyaWFsaXphYmxlMSAoU3RhYmxlX2Zvcm1hdCkgKE0pIGluXG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICB3aXRuZXNzXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICdhIHQgLT4gJ2EgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogJ2EgU3RhYmxlX2Zvcm1hdC50IC0+ICdhIHRcbiAgICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMxIHdpdGggdHlwZSAnYSB0ID0gJ2EgTS50ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQxLlYyIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzICh0eXBlIGEpIDogYSBTdGFibGVfd2l0bmVzcy50IC0+IGEgTS50IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgICBmdW4gd2l0bmVzcyAtPlxuICAgICAgICBsZXQgbW9kdWxlIFN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuT2Zfc2VyaWFsaXphYmxlMSAoU3RhYmxlX2Zvcm1hdCkgKE0pIGluXG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICB3aXRuZXNzXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSB0IC0+ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyKSB0XG4gICAgICAgICAgICBlbmQpIDogV2l0aF9zdGFibGVfd2l0bmVzcy5TMiB3aXRoIHR5cGUgKCdhMSwgJ2EyKSB0ID0gKCdhMSwgJ2EyKSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdDIuVjEgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3Mgd2l0bmVzcyA9XG4gICAgICAgIGxldCBtb2R1bGUgU3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5PZl9zZXJpYWxpemFibGUyIChTdGFibGVfZm9ybWF0KSAoTSkgaW5cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIHdpdG5lc3NcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSB0IC0+ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyKSB0XG4gICAgICAgICAgICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fc2hhcGUuVXVpZC50XG4gICAgICAgICAgICBlbmQpIDogV2l0aF9zdGFibGVfd2l0bmVzcy5TMiB3aXRoIHR5cGUgKCdhMSwgJ2EyKSB0ID0gKCdhMSwgJ2EyKSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdDIuVjIgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3Mgd2l0bmVzcyA9XG4gICAgICAgIGxldCBtb2R1bGUgU3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5PZl9zZXJpYWxpemFibGUyIChTdGFibGVfZm9ybWF0KSAoTSkgaW5cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIHdpdG5lc3NcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwXG4gICAgICAgICAgICAgICAgOiAgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICAgICAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAgICAgICAgICAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAgICAgICAgICAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAgICAgICAgICAgICAtPiAoJ2IxLCAnYjIsICdiMykgdFxuXG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIHQgLT4gKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMzIHdpdGggdHlwZSAoJ2ExLCAnYTIsICdhMykgdCA9ICgnYTEsICdhMiwgJ2EzKSBNLnQgPVxuICAgIHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0My5WMSAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyB3aXRuZXNzID1cbiAgICAgICAgbGV0IG1vZHVsZSBTdGFibGVfd2l0bmVzcyA9IFN0YWJsZV93aXRuZXNzLk9mX3NlcmlhbGl6YWJsZTMgKFN0YWJsZV9mb3JtYXQpIChNKSBpblxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICAgICAgd2l0bmVzc1xuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwXG4gICAgICAgICAgICAgICAgOiAgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICAgICAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAgICAgICAgICAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAgICAgICAgICAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAgICAgICAgICAgICAtPiAoJ2IxLCAnYjIsICdiMykgdFxuXG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIHQgLT4gKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMzIHdpdGggdHlwZSAoJ2ExLCAnYTIsICdhMykgdCA9ICgnYTEsICdhMiwgJ2EzKSBNLnQgPVxuICAgIHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0My5WMiAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyB3aXRuZXNzID1cbiAgICAgICAgbGV0IG1vZHVsZSBTdGFibGVfd2l0bmVzcyA9IFN0YWJsZV93aXRuZXNzLk9mX3NlcmlhbGl6YWJsZTMgKFN0YWJsZV9mb3JtYXQpIChNKSBpblxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICAgICAgd2l0bmVzc1xuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFdpdGhvdXRfY29udGFpbmVycyA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IEludC5TdGFibGUuVjEudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgZXhjZXB0aW9uIFBpZF9tdXN0X2JlX3Bvc2l0aXZlIG9mIEludC5TdGFibGUuVjEudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICBsZXQgZW5zdXJlIGkgPSBpZiBpIDw9IDAgdGhlbiByYWlzZSAoUGlkX211c3RfYmVfcG9zaXRpdmUgaSkgZWxzZSBpXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgKEludC5TdGFibGUuVjEpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID0gSW50LlN0YWJsZS5WMS50XG5cbiAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBlbnN1cmVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChJbnQuU3RhYmxlLlYxKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9IEludC5TdGFibGUuVjEudFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IGVuc3VyZVxuICAgICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IuU3RhYmxlLlYxLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChXaXRob3V0X2NvbnRhaW5lcnMpXG4gICAgaW5jbHVkZSBXaXRob3V0X2NvbnRhaW5lcnNcbiAgZW5kXG5cbiAgbW9kdWxlIExhdGVzdCA9IFYxXG5lbmRcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFN0YWJsZS5MYXRlc3QuV2l0aG91dF9jb250YWluZXJzXG5cbnR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBoYXNoXVxuXG5sZXQgb2ZfaW50IGkgPSBlbnN1cmUgaVxubGV0IHRvX2ludCA9IEZuLmlkXG5sZXQgb2Zfc3RyaW5nIHN0cmluZyA9IGVuc3VyZSAoSW50Lm9mX3N0cmluZyBzdHJpbmcpXG5sZXQgdG9fc3RyaW5nID0gSW50LnRvX3N0cmluZ1xubGV0IGluaXQgPSBvZl9pbnQgMVxuXG5pbmNsdWRlXG4gIFF1aWNrY2hlY2thYmxlLk9mX3F1aWNrY2hlY2thYmxlX2ZpbHRlcmVkXG4gICAgKEludClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgb2ZfcXVpY2tjaGVja2FibGUgbiA9IE9wdGlvbi5zb21lX2lmIChuID4gMCkgblxuICAgICAgbGV0IHRvX3F1aWNrY2hlY2thYmxlID0gdG9faW50XG4gICAgZW5kKVxuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlBpZFwiXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlF1ZXVlXG5cbmluY2x1ZGUgVGVzdF9iaW5hcnlfc2VhcmNoYWJsZS5NYWtlMV9hbmRfdGVzdCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBnZXQgPSBnZXRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9hcnJheSBhID1cbiAgICAgICAgbGV0IHIgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgKCogV2UgZW5xdWV1ZSBldmVyeXRoaW5nIHR3aWNlLCBhbmQgZGVxdWV1ZSBpdCBvbmNlIHRvIGVuc3VyZTpcbiAgICAgICAgICAgLSB0aGF0IHRoZSBxdWV1ZSBoYXMgdGhlIHNhbWUgY29udGVudCBhcyB0aGUgYXJyYXkuXG4gICAgICAgICAgIC0gdGhhdCBpdCBoYXMsIGluIG1vc3QgY2FzZXMsIGFuIGludGVyZXN0aW5nIGludGVybmFsIHN0cnVjdHVyZSopXG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICBlbnF1ZXVlIHIgYS4oaSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICAgIGlnbm9yZSAoZGVxdWV1ZV9leG4gciA6IGJvb2wpO1xuICAgICAgICAgIGVucXVldWUgciBhLihpKVxuICAgICAgICBkb25lO1xuICAgICAgICByXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmQpXG5cbm1vZHVsZSBTZXJpYWxpemF0aW9uX3YxID0gc3RydWN0XG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYjRjODQyNTQtNDk5Mi0xMWU2LTliYTctNzM0ZTE1NDAyN2JkXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLlF1ZXVlXCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyID0gaXRlclxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9IGluaXQgbGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKVxuICAgIGVuZClcblxuICBsZXQgc3RhYmxlX3dpdG5lc3MgKF8gOiAnYSBTdGFibGVfd2l0bmVzcy50KSA6ICdhIHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgKCogU2VyaWFsaXphdGlvbl92MSBkZWZpbmVzIGEgc3RhYmxlIHNlcmlhbGl6YXRpb24gKilcbiAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBTZXJpYWxpemF0aW9uX3YxXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgU2VyaWFsaXphdGlvbl92MVxuXG4gICAgKCogV2UgZG9uJ3QgaGF2ZSBhIFslYmluX2RpZ2VzdF0gZXhwZWN0IHRlc3QgaGVyZSBiZWNhdXNlIHRoZSBiaW5faW8gaXMgbW9zdGx5IGhhbmRcbiAgICAgICB3cml0dGVuLCBhbmQgW2NvcmVfcXVldWVfdW5pdF90ZXN0cy5tbF0gaGFzIHVuaXQgdGVzdHMgZm9yIHNwZWNpZmljIHZhbHVlcy4gKilcblxuICAgIGxldCBtYXAgPSBtYXBcbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSBVbml0X3Rlc3QgPSBTdGFibGVfdW5pdF90ZXN0Lk1ha2VcblxuXG5tb2R1bGUgdHlwZSBTdGFibGUgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwXG5tb2R1bGUgdHlwZSBTdGFibGVfd2l0aG91dF9jb21wYXJhdG9yID0gU3RhYmxlX21vZHVsZV90eXBlcy5TMF93aXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSB0eXBlIFN0YWJsZTEgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMxXG5tb2R1bGUgdHlwZSBTdGFibGUyID0gU3RhYmxlX21vZHVsZV90eXBlcy5TMlxubW9kdWxlIHR5cGUgU3RhYmxlMyA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzNcbm1vZHVsZSB0eXBlIFN0YWJsZTQgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlM0XG5tb2R1bGUgdHlwZSBTdGFibGVfd2l0aF93aXRuZXNzID0gU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwXG5tb2R1bGUgdHlwZSBTdGFibGVfaW50NjNhYmxlX3dpdGhfd2l0bmVzcyA9IFN0YWJsZV9pbnQ2M2FibGUuV2l0aF9zdGFibGVfd2l0bmVzcy5TXG5cbm1vZHVsZSB0eXBlIFN0YWJsZV93aXRob3V0X2NvbXBhcmF0b3Jfd2l0aF93aXRuZXNzID1cbiAgU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwX3dpdGhvdXRfY29tcGFyYXRvclxuXG5tb2R1bGUgdHlwZSBTdGFibGUxX3dpdGhfd2l0bmVzcyA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMVxubW9kdWxlIHR5cGUgU3RhYmxlMl93aXRoX3dpdG5lc3MgPSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzJcbm1vZHVsZSB0eXBlIFN0YWJsZTNfd2l0aF93aXRuZXNzID0gU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMzXG5tb2R1bGUgdHlwZSBTdGFibGU0X3dpdGhfd2l0bmVzcyA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TNFxuXG5tb2R1bGUgTWFrZV9zdGFibGUgPSBNYWtlX3N0YWJsZVxuaW5jbHVkZSBTdGFibGVfaW50ZXJuYWxcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlLlN0YWJsZVxubW9kdWxlIEJpZ3N0cmluZyA9IEJpZ3N0cmluZy5TdGFibGVcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZS5TdGFibGVcbm1vZHVsZSBCbGFuZyA9IEJsYW5nLlN0YWJsZVxubW9kdWxlIEJvb2wgPSBCb29sLlN0YWJsZVxubW9kdWxlIEJ5dGVfdW5pdHMgPSBCeXRlX3VuaXRzLlN0YWJsZVxubW9kdWxlIEJ5dGVzID0gQnl0ZXMuU3RhYmxlXG5tb2R1bGUgQ29tcGFyYWJsZSA9IENvbXBhcmFibGUuU3RhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3IuU3RhYmxlXG5tb2R1bGUgRGF0ZSA9IERhdGUuU3RhYmxlXG5tb2R1bGUgRGF5X29mX3dlZWsgPSBEYXlfb2Zfd2Vlay5TdGFibGVcbm1vZHVsZSBNZDUgPSBNZDUuU3RhYmxlXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyLlN0YWJsZVxubW9kdWxlIEVycm9yID0gRXJyb3IuU3RhYmxlXG5tb2R1bGUgRmRlcXVlID0gRmRlcXVlLlN0YWJsZVxubW9kdWxlIEZpbGVuYW1lID0gRmlsZW5hbWUuU3RhYmxlXG5tb2R1bGUgRmxvYXQgPSBGbG9hdC5TdGFibGVcbm1vZHVsZSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24gPSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24uU3RhYmxlXG5tb2R1bGUgRnF1ZXVlID0gRnF1ZXVlLlN0YWJsZVxubW9kdWxlIEdjID0gR2MuU3RhYmxlXG5tb2R1bGUgSG9zdF9hbmRfcG9ydCA9IEhvc3RfYW5kX3BvcnQuU3RhYmxlXG5tb2R1bGUgSW5mbyA9IEluZm8uU3RhYmxlXG5tb2R1bGUgSW50ID0gSW50LlN0YWJsZVxubW9kdWxlIEludDYzID0gSW50NjMuU3RhYmxlXG5tb2R1bGUgTGF6eSA9IExhenkuU3RhYmxlXG5tb2R1bGUgTGlzdCA9IExpc3QuU3RhYmxlXG5tb2R1bGUgTWFwID0gTWFwLlN0YWJsZVxubW9kdWxlIE1heWJlX2JvdW5kID0gTWF5YmVfYm91bmQuU3RhYmxlXG5tb2R1bGUgTW9udGggPSBNb250aC5TdGFibGVcbm1vZHVsZSBOb3RoaW5nID0gTm90aGluZy5TdGFibGVcbm1vZHVsZSBPcHRpb24gPSBPcHRpb24uU3RhYmxlXG5tb2R1bGUgT3JfZXJyb3IgPSBPcl9lcnJvci5TdGFibGVcbm1vZHVsZSBQZXJjZW50ID0gUGVyY2VudC5TdGFibGVcbm1vZHVsZSBQZXJtcyA9IFBlcm1zLlN0YWJsZVxubW9kdWxlIFBpZCA9IFBpZC5TdGFibGVcbm1vZHVsZSBRdWV1ZSA9IFF1ZXVlLlN0YWJsZVxubW9kdWxlIFJlc3VsdCA9IFJlc3VsdC5TdGFibGVcbm1vZHVsZSBTZXQgPSBTZXQuU3RhYmxlXG5tb2R1bGUgU2V4cCA9IFNleHAuU3RhYmxlXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZS5TdGFibGVcbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLlN0YWJsZVxubW9kdWxlIFN0cmluZyA9IFN0cmluZy5TdGFibGVcbm1vZHVsZSBTdHJpbmdfaWQgPSBTdHJpbmdfaWQuU3RhYmxlXG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnMuU3RhYmxlXG5cbm1vZHVsZSBUaW1lID0gVGltZV9mbG9hdC5TdGFibGVcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0xMV0gVXNlIFtUaW1lX2Zsb2F0XSBvciBbVGltZV9mbG9hdF91bml4XSBpbnN0ZWFkXCJdXG5cbm1vZHVsZSBUaW1lX2Zsb2F0ID0gVGltZV9mbG9hdC5TdGFibGVcbm1vZHVsZSBVbml0ID0gVW5pdC5TdGFibGVcbm1vZHVsZSBVbml4ID0gc3RydWN0IGVuZCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDJdIFVzZSBbQ29yZV91bml4LlN0YWJsZV1cIl1cbmluY2x1ZGUgUGVybXMuRXhwb3J0XG5cbmluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbmluY2x1ZGUgQmFzZS5FeHBvcnRlZF9mb3Jfc3BlY2lmaWNfdXNlcy5HbG9iYWxpemVcbmluY2x1ZGUgSW1wb3J0Lk5vdF9mb3VuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuICBJbnQgOlxuICBzaWdcbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcblxubGV0IG9mX2NhbWxfaW50IHQgPSB0XG5sZXQgdG9fY2FtbF9pbnQgdCA9IHRcblxudHlwZSBzeXNfYmVoYXZpb3IgPVxuICBbIGBDb250aW51ZSAoKiogQ29udGludWUgdGhlIHByb2Nlc3MgaWYgaXQgaXMgY3VycmVudGx5IHN0b3BwZWQgKilcbiAgfCBgRHVtcF9jb3JlICgqKiBUZXJtaW5hdGUgdGhlIHByb2Nlc3MgYW5kIGR1bXAgY29yZSAqKVxuICB8IGBJZ25vcmUgKCoqIElnbm9yZSB0aGUgc2lnbmFsICopXG4gIHwgYFN0b3AgKCoqIFN0b3AgdGhlIHByb2Nlc3MgKilcbiAgfCBgVGVybWluYXRlICgqKiBUZXJtaW5hdGUgdGhlIHByb2Nlc3MgKilcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGVxdWFsICh0IDogdCkgdCcgPSB0ID0gdCdcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgKCogUGxlYXNlIGtlZXAgaW4gc3luYyB3aXRoIHRoZSBsaXN0IGZvciB0b19zdHJpbmcvc3lzX2JlaGF2aW9yICopXG4gIG9wZW4gU3RkbGliLlN5c1xuXG4gIGxldCBhYnJ0ID0gc2lnYWJydFxuICBsZXQgYWxybSA9IHNpZ2Fscm1cbiAgbGV0IGJ1cyA9IHNpZ2J1c1xuICBsZXQgY2hsZCA9IHNpZ2NobGRcbiAgbGV0IGNvbnQgPSBzaWdjb250XG4gIGxldCBmcGUgPSBzaWdmcGVcbiAgbGV0IGh1cCA9IHNpZ2h1cFxuICBsZXQgaWxsID0gc2lnaWxsXG4gIGxldCBpbnQgPSBzaWdpbnRcbiAgbGV0IGtpbGwgPSBzaWdraWxsXG4gIGxldCBwaXBlID0gc2lncGlwZVxuICBsZXQgcG9sbCA9IHNpZ3BvbGxcbiAgbGV0IHByb2YgPSBzaWdwcm9mXG4gIGxldCBxdWl0ID0gc2lncXVpdFxuICBsZXQgc2VndiA9IHNpZ3NlZ3ZcbiAgbGV0IHN0b3AgPSBzaWdzdG9wXG4gIGxldCBzeXMgPSBzaWdzeXNcbiAgbGV0IHRlcm0gPSBzaWd0ZXJtXG4gIGxldCB0cmFwID0gc2lndHJhcFxuICBsZXQgdHN0cCA9IHNpZ3RzdHBcbiAgbGV0IHR0aW4gPSBzaWd0dGluXG4gIGxldCB0dG91ID0gc2lndHRvdVxuICBsZXQgdXJnID0gc2lndXJnXG4gIGxldCB1c3IxID0gc2lndXNyMVxuICBsZXQgdXNyMiA9IHNpZ3VzcjJcbiAgbGV0IHZ0YWxybSA9IHNpZ3Z0YWxybVxuICBsZXQgeGNwdSA9IHNpZ3hjcHVcbiAgbGV0IHhmc3ogPSBzaWd4ZnN6XG4gIGxldCB6ZXJvID0gMFxuZW5kXG5cbmV4Y2VwdGlvbiBJbnZhbGlkX3NpZ25hbF9tbmVtb25pY19vcl9udW1iZXIgb2Ygc3RyaW5nIFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCB0b19zdHJpbmdfd2l0aF92ZXJzaW9uLCBvZl9zdHJpbmcsIGRlZmF1bHRfc3lzX2JlaGF2aW9yID1cbiAgbGV0IGtub3duID1cbiAgICBbXG4gICAgICBcInNpZ2FicnRcIiwgYWJydCwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdhbHJtXCIsIGFscm0sIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lnYnVzXCIsIGJ1cywgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWdjaGxkXCIsIGNobGQsIGBJZ25vcmUsIDFcbiAgICA7IFwic2lnY29udFwiLCBjb250LCBgQ29udGludWUsIDFcbiAgICA7IFwic2lnZnBlXCIsIGZwZSwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdodXBcIiwgaHVwLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ2lsbFwiLCBpbGwsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnaW50XCIsIGludCwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdraWxsXCIsIGtpbGwsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lncGlwZVwiLCBwaXBlLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3BvbGxcIiwgcG9sbCwgYFRlcm1pbmF0ZSwgMlxuICAgIDsgXCJzaWdwcm9mXCIsIHByb2YsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lncXVpdFwiLCBxdWl0LCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ3NlZ3ZcIiwgc2VndiwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdzdG9wXCIsIHN0b3AsIGBTdG9wLCAxXG4gICAgOyBcInNpZ3N5c1wiLCBzeXMsIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lndGVybVwiLCB0ZXJtLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3RyYXBcIiwgdHJhcCwgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd0c3RwXCIsIHRzdHAsIGBTdG9wLCAxXG4gICAgOyBcInNpZ3R0aW5cIiwgdHRpbiwgYFN0b3AsIDFcbiAgICA7IFwic2lndHRvdVwiLCB0dG91LCBgU3RvcCwgMVxuICAgIDsgXCJzaWd1cmdcIiwgdXJnLCBgSWdub3JlLCAyXG4gICAgOyBcInNpZ3VzcjFcIiwgdXNyMSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd1c3IyXCIsIHVzcjIsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lndnRhbHJtXCIsIHZ0YWxybSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd4Y3B1XCIsIHhjcHUsIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lneGZzelwiLCB4ZnN6LCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3plcm9cIiwgemVybywgYElnbm9yZSwgMVxuICAgIF1cbiAgaW5cbiAgbGV0IG5hbWVfYW5kX3ZlcnNpb25fYnlfdCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKSBpblxuICBsZXQgdF9ieV9uYW1lID0gU3RyaW5nLlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpIGluXG4gIGxldCBiZWhhdmlvcl9ieV90ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpIGluXG4gIExpc3QuaXRlciBrbm93biB+ZjooZnVuIChuYW1lLCB0LCBiZWhhdmlvciwgc3RhYmxlX3ZlcnNpb24pIC0+XG4gICAgSGFzaHRibC5zZXQgbmFtZV9hbmRfdmVyc2lvbl9ieV90IH5rZXk6dCB+ZGF0YToobmFtZSwgc3RhYmxlX3ZlcnNpb24pO1xuICAgIEhhc2h0Ymwuc2V0IHRfYnlfbmFtZSB+a2V5Om5hbWUgfmRhdGE6dDtcbiAgICBIYXNodGJsLnNldCBiZWhhdmlvcl9ieV90IH5rZXk6dCB+ZGF0YTpiZWhhdmlvcik7XG4gICgqIEZvciB1bmtub3duIHNpZ25hbCBudW1iZXJzLCBbdG9fc3RyaW5nXSByZXR1cm5zIGEgbWVhbmluZ2Z1bFxuICAgICBzdHJpbmcsIHdoaWxlIFtkZWZhdWx0X3N5c19iZWhhdmlvcl0gaGFzIHRvIHJhaXNlIGFuIGV4Y2VwdGlvblxuICAgICBiZWNhdXNlIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgcmlnaHQgYW5zd2VyIGlzLiAqKVxuICBsZXQgdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uOnJlcXVlc3RlZF92ZXJzaW9uID1cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgbmFtZV9hbmRfdmVyc2lvbl9ieV90IHQgd2l0aFxuICAgIHwgU29tZSAoc3RyaW5nLCBuZWVkZWRfdmVyc2lvbikgd2hlbiByZXF1ZXN0ZWRfdmVyc2lvbiA+PSBuZWVkZWRfdmVyc2lvbiAtPiBzdHJpbmdcbiAgICB8IF8gLT4gXCI8dW5rbm93biBzaWduYWwgXCIgXiBJbnQudG9fc3RyaW5nIHQgXiBcIj5cIlxuICBpblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIGxldCBzID0gU3RyaW5nLmxvd2VyY2FzZSAoU3RyaW5nLnN0cmlwIHMpIGluXG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIHRfYnlfbmFtZSBzIHdpdGhcbiAgICB8IFNvbWUgc24gLT4gc25cbiAgICB8IE5vbmUgLT5cbiAgICAgIGlmIFN0cmluZy5pc19wcmVmaXggcyB+cHJlZml4OlwiPHVua25vd24gc2lnbmFsIFwiXG4gICAgICB0aGVuIChcbiAgICAgICAgdHJ5IEludC5vZl9zdHJpbmcgKFN0cmluZy5zbGljZSBzIDE2IH4tMSkgd2l0aFxuICAgICAgICB8IF8gLT4gcmFpc2UgKEludmFsaWRfc2lnbmFsX21uZW1vbmljX29yX251bWJlciBzKSlcbiAgICAgIGVsc2UgcmFpc2UgKEludmFsaWRfc2lnbmFsX21uZW1vbmljX29yX251bWJlciBzKVxuICBpblxuICBsZXQgZGVmYXVsdF9zeXNfYmVoYXZpb3IgdCA9XG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIGJlaGF2aW9yX2J5X3QgdCB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoSW52YWxpZF9hcmd1bWVudFxuICAgICAgICAgICAoXCJTaWduYWwuZGVmYXVsdF9zeXNfYmVoYXZpb3I6IHVua25vd24gc2lnbmFsIFwiIF4gSW50LnRvX3N0cmluZyB0KSlcbiAgICB8IFNvbWUgYmVoYXZpb3IgLT4gYmVoYXZpb3JcbiAgaW5cbiAgdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiwgb2Zfc3RyaW5nLCBkZWZhdWx0X3N5c19iZWhhdmlvclxuOztcblxuZXhjZXB0aW9uIEV4cGVjdGVkX2F0b20gb2YgU2V4cC50IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCBzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb24gPSBTZXhwLkF0b20gKHRvX3N0cmluZ193aXRoX3ZlcnNpb24gdCB+dmVyc2lvbilcbmxldCB0b19zdHJpbmcgcyA9IHRvX3N0cmluZ193aXRoX3ZlcnNpb24gcyB+dmVyc2lvbjoyXG5sZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246MlxuXG5sZXQgdF9vZl9zZXhwIHMgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXhwLkF0b20gcyAtPiBvZl9zdHJpbmcgc1xuICB8IF8gLT4gcmFpc2UgKEV4cGVjdGVkX2F0b20gcylcbjs7XG5cbnR5cGUgcGlkX3NwZWMgPSBbIGBVc2VfU2lnbmFsX3VuaXggXVxudHlwZSBzaWdwcm9jbWFza19jb21tYW5kID0gWyBgVXNlX1NpZ25hbF91bml4IF1cblxubGV0IGNhbl9zZW5kX3RvID0gYFVzZV9TaWduYWxfdW5peFxubGV0IG9mX3N5c3RlbV9pbnQgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2VuZCA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZW5kX2V4biA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZW5kX2kgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2V4cF9vZl9waWRfc3BlYyA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzaWdwZW5kaW5nID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNpZ3Byb2NtYXNrID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNpZ3N1c3BlbmQgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgdG9fc3lzdGVtX2ludCA9IGBVc2VfU2lnbmFsX3VuaXhcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICB0eXBlIGJlaGF2aW9yID1cbiAgICBbIGBEZWZhdWx0XG4gICAgfCBgSWdub3JlXG4gICAgfCBgSGFuZGxlIG9mIHQgLT4gdW5pdFxuICAgIF1cblxuICBtb2R1bGUgQmVoYXZpb3IgPSBzdHJ1Y3RcbiAgICBsZXQgb2ZfY2FtbCA9IGZ1bmN0aW9uXG4gICAgICB8IFN0ZGxpYi5TeXMuU2lnbmFsX2RlZmF1bHQgLT4gYERlZmF1bHRcbiAgICAgIHwgU2lnbmFsX2lnbm9yZSAtPiBgSWdub3JlXG4gICAgICB8IFNpZ25hbF9oYW5kbGUgZiAtPiBgSGFuZGxlIGZcbiAgICA7O1xuXG4gICAgbGV0IHRvX2NhbWwgPSBmdW5jdGlvblxuICAgICAgfCBgRGVmYXVsdCAtPiBTdGRsaWIuU3lzLlNpZ25hbF9kZWZhdWx0XG4gICAgICB8IGBJZ25vcmUgLT4gU2lnbmFsX2lnbm9yZVxuICAgICAgfCBgSGFuZGxlIGYgLT4gU2lnbmFsX2hhbmRsZSAoZnVuIHQgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+IGYgdCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNpZ25hbCB0IGJlaGF2aW9yID1cbiAgICBCZWhhdmlvci5vZl9jYW1sIChTdGRsaWIuU3lzLnNpZ25hbCB0IChCZWhhdmlvci50b19jYW1sIGJlaGF2aW9yKSlcbiAgOztcblxuICBsZXQgc2V0IHQgYmVoYXZpb3IgPSBpZ25vcmUgKHNpZ25hbCB0IGJlaGF2aW9yIDogYmVoYXZpb3IpXG4gIGxldCBoYW5kbGUgdCBmID0gc2V0IHQgKGBIYW5kbGUgZilcbmVuZFxuXG5vcGVuIEV4cGVydFxuXG5sZXQgaGFuZGxlX2RlZmF1bHQgdCA9IHNldCB0IGBEZWZhdWx0XG5sZXQgaWdub3JlIHQgPSBzZXQgdCBgSWdub3JlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjoyXG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZV1cblxuICAgIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246MVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU2lnbl9vcl9uYW4gPSBCYXNlLlNpZ25fb3JfbmFuXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2lnbl9vcl9uYW4udCA9XG4gICAgICB8IE5lZ1xuICAgICAgfCBaZXJvXG4gICAgICB8IFBvc1xuICAgICAgfCBOYW5cbiAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXAsIGVudW1lcmF0ZV1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgU2lnbl9vcl9uYW5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZCAoU2lnbl9vcl9uYW4pIChTdGFibGUuVjEpXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX2ludGVybmFsXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHZhbHVlIDogJ2EgT3B0aW9uLnRcbiAgICAgIDsgbXV0YWJsZSBzZXRfYXQgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi5TdGFibGUuVjEudFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtAY29tcGFyZS5pZ25vcmVdIFtAZXF1YWwuaWdub3JlXVxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBmaWVsZHNdXG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBGb3JtYXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgICBsZXQgb2ZfZm9ybWF0ICh2MSA6ICdhIEZvcm1hdC50KSA6ICdhIHQgPSB7IHZhbHVlID0gIXYxOyBzZXRfYXQgPSBbJWhlcmVdIH1cbiAgICAgIGxldCB0b19mb3JtYXQgKHQgOiAnYSB0KSA6ICdhIEZvcm1hdC50ID0gcmVmIHQudmFsdWVcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEZvcm1hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9mb3JtYXRcbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2Zvcm1hdFxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlXG4gICAgICBTZXhwYWJsZS5PZl9zZXhwYWJsZTFcbiAgICAgICAgKEZvcm1hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2ZfZm9ybWF0XG4gICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fZm9ybWF0XG4gICAgICAgIGVuZClcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgVW5zdGFibGUgPSBTdGFibGUuVjFcbm9wZW4gU3RhYmxlLlRcblxudHlwZSAnYSB0ID0gJ2EgU3RhYmxlLlQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbF1cblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgeyB2YWx1ZTsgc2V0X2F0IH0gPVxuICBtYXRjaCB2YWx1ZSB3aXRoXG4gIHwgTm9uZSAtPiBbJW1lc3NhZ2UgXCJ1bnNldFwiXVxuICB8IFNvbWUgdmFsdWUgLT5cbiAgICBbJW1lc3NhZ2UgXCJcIiAodmFsdWUgOiBhKSB+c2V0X2F0OihzZXRfYXQgfD4gU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nKV1cbjs7XG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIG1hdGNoIHQudmFsdWUgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGEgLT4gaW52YXJpYW50X2EgYVxuOztcblxubGV0IGNyZWF0ZSAoKSA9IHsgdmFsdWUgPSBOb25lOyBzZXRfYXQgPSBbJWhlcmVdIH1cblxubGV0IHNldF9pbnRlcm5hbCB0IGhlcmUgdmFsdWUgPVxuICB0LnZhbHVlIDwtIFNvbWUgdmFsdWU7XG4gIHQuc2V0X2F0IDwtIGhlcmVcbjs7XG5cbmxldCBzZXRfaWZfbm9uZSB0IGhlcmUgdmFsdWUgPSBpZiBPcHRpb24uaXNfbm9uZSB0LnZhbHVlIHRoZW4gc2V0X2ludGVybmFsIHQgaGVyZSB2YWx1ZVxuXG5sZXQgc2V0IHQgaGVyZSB2YWx1ZSA9XG4gIGlmIE9wdGlvbi5pc19ub25lIHQudmFsdWVcbiAgdGhlbiAoXG4gICAgc2V0X2ludGVybmFsIHQgaGVyZSB2YWx1ZTtcbiAgICBPayAoKSlcbiAgZWxzZVxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltTZXRfb25jZS5zZXRfZXhuXSBhbHJlYWR5IHNldFwiXG4gICAgICAgICAgfnNldHRpbmdfYXQ6KGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KVxuICAgICAgICAgIH5wcmV2aW91c2x5X3NldF9hdDoodC5zZXRfYXQgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV1cbjs7XG5cbmxldCBzZXRfZXhuIHQgaGVyZSB2YWx1ZSA9IE9yX2Vycm9yLm9rX2V4biAoc2V0IHQgaGVyZSB2YWx1ZSlcbmxldCBnZXQgdCA9IHQudmFsdWVcblxubGV0IGdldF9leG4gKHQgOiBfIHQpIGhlcmUgPVxuICBtYXRjaCB0LnZhbHVlIHdpdGhcbiAgfCBTb21lIGEgLT4gYVxuICB8IE5vbmUgLT5cbiAgICByYWlzZV9zIFslbWVzc2FnZSBcIltTZXRfb25jZS5nZXRfZXhuXSB1bnNldFwiIH5hdDooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuOztcblxubGV0IGlzX25vbmUgdCA9IE9wdGlvbi5pc19ub25lIHQudmFsdWVcbmxldCBpc19zb21lIHQgPSBPcHRpb24uaXNfc29tZSB0LnZhbHVlXG5sZXQgaXRlciB0IH5mID0gT3B0aW9uLml0ZXIgdC52YWx1ZSB+ZlxuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlIHQgPSBnZXRfZXhuIHQgWyVoZXJlXVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCB0b19zdHJpbmcgXyA9IGBEZXByZWNhdGVkX3VzZV9FeG5fdG9fc3RyaW5nX2luc3RlYWRcbmxldCBwcmludCBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl90b19zdHJpbmdfaW5zdGVhZFxubGV0IGNhdGNoIF8gXyA9IGBEZXByZWNhdGVkX3VzZV9FeG5faGFuZGxlX3VuY2F1Z2h0X2luc3RlYWRcbmxldCBwcmludF9iYWNrdHJhY2UgPSBTdGRsaWIuUHJpbnRleGMucHJpbnRfYmFja3RyYWNlXG5sZXQgZ2V0X2JhY2t0cmFjZSA9IFN0ZGxpYi5QcmludGV4Yy5nZXRfYmFja3RyYWNlXG5sZXQgcmVjb3JkX2JhY2t0cmFjZSA9IFN0ZGxpYi5QcmludGV4Yy5yZWNvcmRfYmFja3RyYWNlXG5sZXQgYmFja3RyYWNlX3N0YXR1cyA9IFN0ZGxpYi5QcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5PcHRpb25fYXJyYXlcblxuaW5jbHVkZVxuICBCaW5hYmxlLk9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiBhcnJheSBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYXJyYXlcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYXJyYXlcbiAgICBlbmQpXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkxhenl9W0Jhc2UuTGF6eV19LiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgQmFzZS5MYXp5LnRcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgcXVpY2tjaGVjaywgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIEJhc2UuTGF6eSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0ICgqKiBAaW5saW5lICopXG5cbm1vZHVsZSBTdGFibGUgOiBzaWdcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXVxuXG4gICAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgY29tcGFyZSA9XG4gIFsgYG5vX3BvbHltb3JwaGljX2NvbXBhcmUgXVxuICAtPiBbIGBub19wb2x5bW9ycGhpY19jb21wYXJlIF1cbiAgLT4gWyBgbm9fcG9seW1vcnBoaWNfY29tcGFyZSBdXG5cbmxldCBjb21wYXJlIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA8ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoIDw9ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoID4gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPj0gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPSApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA8PiApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgZXF1YWwgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCBtaW4gXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCBtYXggXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxudHlwZSAoJ2EsICdiKSBmbiA9ICdhIC0+ICdiXG5cbm1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFJ2YWwgb2YgJ2FcbiAgICB8IEV4cHQgb2YgZXhuXG5cbiAgbGV0IHJldHVybiA9IGZ1bmN0aW9uXG4gICAgfCBSdmFsIHYgLT4gdlxuICAgIHwgRXhwdCBlIC0+IHJhaXNlIGVcbiAgOztcblxuICBsZXQgY2FwdHVyZSBmIHggPVxuICAgIHRyeSBSdmFsIChmIHgpIHdpdGhcbiAgICB8IGUgLT4gRXhwdCBlXG4gIDs7XG5lbmRcblxubGV0IHVuaXQgZiA9XG4gIGxldCBsID0gTGF6eS5mcm9tX2Z1biBmIGluXG4gIGZ1biAoKSAtPiBMYXp5LmZvcmNlIGxcbjs7XG5cbmxldCB1bmJvdW5kZWQgKHR5cGUgYSkgPyhoYXNoYWJsZSA9IEhhc2h0YmwuSGFzaGFibGUucG9seSkgZiA9XG4gIGxldCBjYWNoZSA9XG4gICAgbGV0IG1vZHVsZSBBID1cbiAgICAgIEhhc2hhYmxlLk1ha2VfcGxhaW5fYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgICBsZXQgeyBIYXNodGJsLkhhc2hhYmxlLmhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9ID0gaGFzaGFibGVcbiAgICAgIGVuZClcbiAgICBpblxuICAgIEEuVGFibGUuY3JlYXRlICgpIH5zaXplOjBcbiAgaW5cbiAgKCogQWxsb2NhdGUgdGhpcyBjbG9zdXJlIGF0IHRoZSBjYWxsIHRvIFt1bmJvdW5kZWRdLCBub3QgYXQgZWFjaCBjYWxsIHRvIHRoZSBtZW1vaXplZFxuICAgICBmdW5jdGlvbi4gKilcbiAgbGV0IHJlYWxseV9jYWxsX2YgYXJnID0gUmVzdWx0LmNhcHR1cmUgZiBhcmcgaW5cbiAgZnVuIGFyZyAtPiBSZXN1bHQucmV0dXJuIChIYXNodGJsLmZpbmRpX29yX2FkZCBjYWNoZSBhcmcgfmRlZmF1bHQ6cmVhbGx5X2NhbGxfZilcbjs7XG5cbigqIHRoZSBzYW1lIGJ1dCB3aXRoIGEgYm91bmQgb24gY2FjaGUgc2l6ZSAqKVxubGV0IGxydSAodHlwZSBhKSA/KGhhc2hhYmxlID0gSGFzaHRibC5IYXNoYWJsZS5wb2x5KSB+bWF4X2NhY2hlX3NpemUgZiA9XG4gIGlmIG1heF9jYWNoZV9zaXplIDw9IDBcbiAgdGhlbiBmYWlsd2l0aGYgXCJNZW1vLmxydTogbWF4X2NhY2hlX3NpemUgb2YgJWkgPD0gMFwiIG1heF9jYWNoZV9zaXplICgpO1xuICBsZXQgbW9kdWxlIENhY2hlID1cbiAgICBIYXNoX3F1ZXVlLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgeyBIYXNodGJsLkhhc2hhYmxlLmhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9ID0gaGFzaGFibGVcbiAgICBlbmQpXG4gIGluXG4gIGxldCBjYWNoZSA9IENhY2hlLmNyZWF0ZSAoKSBpblxuICBmdW4gYXJnIC0+XG4gICAgUmVzdWx0LnJldHVyblxuICAgICAgKG1hdGNoIENhY2hlLmxvb2t1cF9hbmRfbW92ZV90b19iYWNrIGNhY2hlIGFyZyB3aXRoXG4gICAgICAgfCBTb21lIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGxldCByZXN1bHQgPSBSZXN1bHQuY2FwdHVyZSBmIGFyZyBpblxuICAgICAgICAgQ2FjaGUuZW5xdWV1ZV9iYWNrX2V4biBjYWNoZSBhcmcgcmVzdWx0O1xuICAgICAgICAgKCogZWplY3QgbGVhc3QgcmVjZW50bHkgdXNlZCBjYWNoZSBlbnRyeSAqKVxuICAgICAgICAgaWYgQ2FjaGUubGVuZ3RoIGNhY2hlID4gbWF4X2NhY2hlX3NpemVcbiAgICAgICAgIHRoZW4gaWdub3JlIChDYWNoZS5kZXF1ZXVlX2Zyb250X2V4biBjYWNoZSA6IF8gUmVzdWx0LnQpO1xuICAgICAgICAgcmVzdWx0KVxuOztcblxubGV0IGdlbmVyYWwgP2hhc2hhYmxlID9jYWNoZV9zaXplX2JvdW5kIGYgPVxuICBtYXRjaCBjYWNoZV9zaXplX2JvdW5kIHdpdGhcbiAgfCBOb25lIC0+IHVuYm91bmRlZCA/aGFzaGFibGUgZlxuICB8IFNvbWUgbiAtPiBscnUgP2hhc2hhYmxlIH5tYXhfY2FjaGVfc2l6ZTpuIGZcbjs7XG5cbigqIFdlIGV4cGVjdCBbZl9vbmVzdGVwXSB0byBiZSBhIG9uZS1zdGVwIHVucm9sbGVkIHJlY3Vyc2l2ZSBmdW5jdGlvbjsgc2VlIHRoZSBtbGkuIEhlbmNlLFxuICAgaGVyZSB3ZSBjcmVhdGUgdGhlIG1lbW9pemVkIGZ1bmN0aW9uIF9hbmRfIHBhc3MgaXQgdG8gW2Zfb25lc3RlcF0gdG8gYmUgdXNlZCBmb3JcbiAgIHJlY3Vyc2l2ZSBjYWxscy5cblxuICAgTm90ZSB0aGF0IHdlIGltbWVkaWF0ZWx5IGFwcGx5IFtmX29uZXN0ZXBdIHRvIGl0cyBmaXJzdCBhcmd1bWVudCBoZXJlIHNvIHRoYXQgYW55XG4gICBwcmVjb21wdXRhdGlvbiBpcyBwZXJmb3JtZWQgd2hlbiB0aGUgdXNlciBjYWxscyBbcmVjdXJzaXZlXS5cblxuICAgQXMgYW4gZXhhbXBsZSwgaWYgc29tZW9uZSB3cml0ZXMgdGhpcyBub24tbWVtb2l6ZWQgY29kZTpcblxuICAgWyBsZXQgcmVjIGYgPSBsZXQgZGF0YSA9IGNvbXB1dGVfd2l0aG91dF91c2luZ19mICgpIGluIGZ1biB4IC0+IC4uLiBmIC4uLiBdXG5cbiAgIGFuZCBjb252ZXJ0cyB0byBtZW1vaXphdGlvbiBieSBkb2luZzpcblxuICAge1tcbiAgICAgbGV0IGYgPVxuICAgICAgIGxldCBmX29uZXN0ZXAgZiA9IGxldCBkYXRhID0gY29tcHV0ZV93aXRob3V0X3VzaW5nX2YgKCkgaW4gZnVuIHggLT4gLi4uIGYgLi4uIGluXG4gICAgICAgcmVjdXJzaXZlIGZfb25lc3RlcFxuICAgXX1cblxuICAgd2Ugd2FudCB0byBjb21wdXRlIFtkYXRhXSBpbW1lZGlhdGVseS4gSWYgd2UgaGFkIFtmdW4geCAtPiBmX29uZXN0ZXAgKGZvcmNlIG1lbW9pemVkKVxuICAgeF0gYmVsb3csIHdlJ2QgcmVjb21wdXRlIFtkYXRhXSBlYWNoIHRpbWUgdGhlIHVzZXIgY2FsbHMgW2ZdIG9uIGFuIGFyZ3VtZW50IHRoYXQgaGFkbid0XG4gICB5ZXQgYmVlbiBtZW1vaXplZC4gKilcbmxldCByZWN1cnNpdmUgfmhhc2hhYmxlID9jYWNoZV9zaXplX2JvdW5kIGZfb25lc3RlcCA9XG4gIGxldCByZWMgbWVtb2l6ZWQgPVxuICAgIGxhenkgKGdlbmVyYWwgfmhhc2hhYmxlID9jYWNoZV9zaXplX2JvdW5kIChmX29uZXN0ZXAgKGZ1biB4IC0+IChmb3JjZSBtZW1vaXplZCkgeCkpKVxuICBpblxuICBmb3JjZSBtZW1vaXplZFxuOztcblxubGV0IG9mX2NvbXBhcmFibGUgKHR5cGUgaW5kZXgpIChtb2R1bGUgTSA6IENvbXBhcmFibGUuU19wbGFpbiB3aXRoIHR5cGUgdCA9IGluZGV4KSBmID1cbiAgbGV0IG0gPSByZWYgTS5NYXAuZW1wdHkgaW5cbiAgZnVuICh4IDogTS50KSAtPlxuICAgIGxldCB2ID1cbiAgICAgIG1hdGNoIE1hcC5maW5kICFtIHggd2l0aFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCB2ID0gUmVzdWx0LmNhcHR1cmUgZiB4IGluXG4gICAgICAgIG0gOj0gTWFwLnNldCAhbSB+a2V5OnggfmRhdGE6djtcbiAgICAgICAgdlxuICAgIGluXG4gICAgUmVzdWx0LnJldHVybiB2XG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgUXVldWUgPSBCYXNlLkxpbmtlZF9xdWV1ZVxuaW5jbHVkZSBRdWV1ZVxuXG5pbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFF1ZXVlLnRcbiAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjgwMGRmOWEwLTQ5OTItMTFlNi04ODFkLWZmZTFhNWM4YWNlZFwiXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkxpbmtlZF9xdWV1ZVwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyID0gaXRlclxuXG4gICAgKCogQmluX3Byb3QgcmVhZHMgdGhlIGVsZW1lbnRzIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgd2VyZSB3cml0dGVuIG91dCwgYXMgZGV0ZXJtaW5lZFxuICAgICAgIGJ5IFtpdGVyXS4gIFNvLCB3ZSBjYW4gaWdub3JlIHRoZSBpbmRleCBhbmQganVzdCBlbnF1ZXVlIGVhY2ggZWxlbWVudCBhcyBpdCBpcyByZWFkXG4gICAgICAgaW4uICopXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICAgICAgZm9yIF8gPSAxIHRvIGxlbiBkb1xuICAgICAgICBlbnF1ZXVlIHQgKG5leHQgKCkpXG4gICAgICBkb25lO1xuICAgICAgdFxuICAgIDs7XG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBEZXJpdmluZ19oYXNoX2ludGZcblxubW9kdWxlIE9mX2Rlcml2aW5nX2hhc2hcbiAgICAoUmVwciA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICB0eXBlIHRcblxuICAgICAgICAgICAgICAgICAgdmFsIHRvX3JlcHIgOiB0IC0+IFJlcHIudFxuICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gUmVwci5oYXNoX2ZvbGRfdCBzdGF0ZSAoTS50b19yZXByIHQpXG4gIGxldCBoYXNoID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLm9mX2ZvbGQgaGFzaF9mb2xkX3RcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG50eXBlICdhIHQgPVxuICB7ICgqIFthcnJdIGlzIGEgY3ljbGljIGJ1ZmZlciAqKVxuICAgIG11dGFibGUgYXJyIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgOyAoKiBbZnJvbnRfaW5kZXhdIGFuZCBbYmFja19pbmRleF0gYXJlIHRoZSBwb3NpdGlvbnMgaW4gd2hpY2ggbmV3IGVsZW1lbnRzIG1heSBiZVxuICAgICAgIGVucXVldWVkLiAgVGhpcyBtYWtlcyB0aGUgYWN0aXZlIHBhcnQgb2YgW2Fycl0gdGhlIHJhbmdlIGZyb20gW2Zyb250X2luZGV4KzFdIHRvXG4gICAgICAgW2JhY2tfaW5kZXgtMV0gKG1vZHVsbyB0aGUgbGVuZ3RoIG9mIFthcnJdIGFuZCB3cmFwcGluZyBhcm91bmQgaWYgbmVjZXNzYXJ5KS4gIE5vdGVcbiAgICAgICB0aGF0IHRoaXMgbWVhbnMgdGhlIGFjdGl2ZSByYW5nZSBpcyBtYXhpbWl6ZWQgd2hlbiBbZnJvbnRfaW5kZXggPSBiYWNrX2luZGV4XSwgd2hpY2hcbiAgICAgICBvY2N1cnMgd2hlbiB0aGVyZSBhcmUgW0FycmF5Lmxlbmd0aCBhcnIgLSAxXSBhY3RpdmUgZWxlbWVudHMuICopXG4gICAgbXV0YWJsZSBmcm9udF9pbmRleCA6IGludFxuICA7IG11dGFibGUgYmFja19pbmRleCA6IGludFxuICA7ICgqIGFwcGFyZW50X2Zyb250X2luZGV4IGlzIHdoYXQgaXMgZXhwb3NlZCBhcyB0aGUgZnJvbnQgaW5kZXggZXh0ZXJuYWxseS4gIEl0IGhhcyBub1xuICAgICAgIHJlYWwgcmVsYXRpb24gdG8gdGhlIGFycmF5IC0tIGV2ZXJ5IGVucXVldWUgdG8gdGhlIGZyb250IGRlY3JlbWVudHMgaXQgYW5kIGV2ZXJ5XG4gICAgICAgZGVxdWV1ZSBmcm9tIHRoZSBmcm9udCBpbmNyZW1lbnRzIGl0LiAqKVxuICAgIG11dGFibGUgYXBwYXJlbnRfZnJvbnRfaW5kZXggOiBpbnRcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7ICgqIFdlIGtlZXAgYXJyX2xlbmd0aCBoZXJlIGFzIGEgc3BlZWQgaGFjay4gIENhbGxpbmcgQXJyYXkubGVuZ3RoIG9uIGFyciBpcyBhY3R1YWxseVxuICAgICAgIG1lYW5pbmdmdWxseSBzbG93ZXIuICopXG4gICAgbXV0YWJsZSBhcnJfbGVuZ3RoIDogaW50XG4gIDsgbmV2ZXJfc2hyaW5rIDogYm9vbFxuICB9XG5cbmxldCBjcmVhdGUgP2luaXRpYWxfbGVuZ3RoID9uZXZlcl9zaHJpbmsgKCkgPVxuICBsZXQgbmV2ZXJfc2hyaW5rID1cbiAgICBtYXRjaCBuZXZlcl9zaHJpbmsgd2l0aFxuICAgIHwgTm9uZSAtPiBPcHRpb24uaXNfc29tZSBpbml0aWFsX2xlbmd0aFxuICAgIHwgU29tZSBiIC0+IGJcbiAgaW5cbiAgbGV0IGluaXRpYWxfbGVuZ3RoID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OjcgaW5pdGlhbF9sZW5ndGggaW5cbiAgaWYgaW5pdGlhbF9sZW5ndGggPCAwXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwicGFzc2VkIG5lZ2F0aXZlIGluaXRpYWxfbGVuZ3RoIHRvIERlcXVlLmNyZWF0ZTogJWlcIiBpbml0aWFsX2xlbmd0aCAoKTtcbiAgKCogTWFrZSB0aGUgaW5pdGlhbCBhcnJheSBsZW5ndGggYmUgW2luaXRpYWxfbGVuZ3RoICsgMV0gc28gd2UgY2FuIGZpdCBbaW5pdGlhbF9sZW5ndGhdXG4gICAgIGVsZW1lbnRzIHdpdGhvdXQgZ3Jvd2luZy4gIFdlIG5ldmVyIHF1aXRlIHVzZSB0aGUgd2hvbGUgYXJyYXkuICopXG4gIGxldCBhcnJfbGVuZ3RoID0gaW5pdGlhbF9sZW5ndGggKyAxIGluXG4gIHsgYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOmFycl9sZW5ndGhcbiAgOyBmcm9udF9pbmRleCA9IDBcbiAgOyBiYWNrX2luZGV4ID0gMVxuICA7IGFwcGFyZW50X2Zyb250X2luZGV4ID0gMFxuICA7IGxlbmd0aCA9IDBcbiAgOyBhcnJfbGVuZ3RoXG4gIDsgbmV2ZXJfc2hyaW5rXG4gIH1cbjs7XG5cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG4oKiBXZSBrZWVwIHRyYWNrIG9mIHRoZSBsZW5ndGggaW4gYSBtdXRhYmxlIGZpZWxkIGZvciBzcGVlZCwgYnV0IHRoaXMgY2FsY3VsYXRpb24gc2hvdWxkXG4gICBiZSBjb3JyZWN0IGJ5IGNvbnN0cnVjdGlvbiwgYW5kIGNhbiBiZSB1c2VkIGZvciB0ZXN0aW5nLiAqKVxubGV0IF9pbnZhcmlhbnRfbGVuZ3RoIHQgPVxuICBsZXQgY29uc3RydWN0ZWRfbGVuZ3RoID1cbiAgICBpZiB0LmZyb250X2luZGV4IDwgdC5iYWNrX2luZGV4XG4gICAgdGhlbiB0LmJhY2tfaW5kZXggLSB0LmZyb250X2luZGV4IC0gMVxuICAgIGVsc2UgdC5iYWNrX2luZGV4IC0gdC5mcm9udF9pbmRleCAtIDEgKyB0LmFycl9sZW5ndGhcbiAgaW5cbiAgYXNzZXJ0IChsZW5ndGggdCA9IGNvbnN0cnVjdGVkX2xlbmd0aClcbjs7XG5cbigqIFRoZSB2YXJpb3VzIFwid2hlbl9ub3RfZW1wdHlcIiBmdW5jdGlvbnMgcmV0dXJuIG1pc2xlYWRpbmcgbnVtYmVycyB3aGVuIHRoZSBkZXF1ZXVlIGlzXG4gICBlbXB0eS4gIFRoZXkgYXJlIHNhZmUgdG8gY2FsbCBpZiBpdCBpcyBrbm93biB0aGF0IHRoZSBkZXF1ZXVlIGlzIG5vbi1lbXB0eS4gKilcbmxldCBhcHBhcmVudF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0ID0gdC5hcHBhcmVudF9mcm9udF9pbmRleFxubGV0IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCA9IHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggKyBsZW5ndGggdCAtIDFcblxubGV0IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0ID1cbiAgaWYgdC5mcm9udF9pbmRleCA9IHQuYXJyX2xlbmd0aCAtIDEgdGhlbiAwIGVsc2UgdC5mcm9udF9pbmRleCArIDFcbjs7XG5cbmxldCBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0ID1cbiAgaWYgdC5iYWNrX2luZGV4ID0gMCB0aGVuIHQuYXJyX2xlbmd0aCAtIDEgZWxzZSB0LmJhY2tfaW5kZXggLSAxXG47O1xuXG5sZXQgY2hlY2tlZCB0IGYgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGYgdClcbmxldCBhcHBhcmVudF9mcm9udF9pbmRleCB0ID0gY2hlY2tlZCB0IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5XG5sZXQgYXBwYXJlbnRfYmFja19pbmRleCB0ID0gY2hlY2tlZCB0IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHlcblxubGV0IGZvbGRpJyB0IGRpciB+aW5pdCB+ZiA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBhcHBhcmVudF9mcm9udCA9IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYXBwYXJlbnRfYmFjayA9IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhY3R1YWxfZnJvbnQgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhY3R1YWxfYmFjayA9IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIH5hcHBhcmVudF9pIH5yZWFsX2kgfnN0b3BfcG9zIH5zdGVwID1cbiAgICAgIGlmIHJlYWxfaSA9IHN0b3BfcG9zXG4gICAgICB0aGVuIGFjYywgYXBwYXJlbnRfaVxuICAgICAgZWxzZVxuICAgICAgICBsb29wXG4gICAgICAgICAgKGYgYXBwYXJlbnRfaSBhY2MgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgcmVhbF9pKSlcbiAgICAgICAgICB+YXBwYXJlbnRfaTooYXBwYXJlbnRfaSArIHN0ZXApXG4gICAgICAgICAgfnJlYWxfaToocmVhbF9pICsgc3RlcClcbiAgICAgICAgICB+c3RvcF9wb3NcbiAgICAgICAgICB+c3RlcFxuICAgIGluXG4gICAgKCogV2Ugd2FudCB0byBpdGVyYXRlIGZyb20gYWN0dWFsX2Zyb250IHRvIGFjdHVhbF9iYWNrIChvciB2aWNlIHZlcnNhKSwgYnV0IHdlIG1heVxuICAgICAgIG5lZWQgdG8gd3JhcCBhcm91bmQgdGhlIGFycmF5IHRvIGRvIHNvLiAgVGh1cyB3ZSBkbyB0aGUgZm9sbG93aW5nOlxuICAgICAgIDEuICBJZiB0aGUgYWN0aXZlIHJhbmdlIGlzIGNvbnRpZ3VvdXMgKGkuZS4gYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrKSwgdGhlbiBsb29wXG4gICAgICAgc3RhcnRpbmcgYXQgdGhlIGFwcHJvcHJpYXRlIGVuZCBvZiB0aGUgYWN0aXZlIHJhbmdlIHVudGlsIHdlIHJlYWNoIHRoZSBmaXJzdFxuICAgICAgIGVsZW1lbnQgb3V0c2lkZSBvZiBpdC5cbiAgICAgICAyLiAgSWYgaXQgaXMgbm90IGNvbnRpZ3VvdXMgKGFjdHVhbF9mcm9udCA+IGFjdHVhbF9iYWNrKSwgdGhlbiBmaXJzdCBsb29wIGZyb20gdGhlXG4gICAgICAgYXBwcm9wcmlhdGUgZW5kIG9mIHRoZSBhY3RpdmUgcmFuZ2UgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuICBUaGVuLCBsb29wIGZyb21cbiAgICAgICB0aGUgb3Bwb3NpdGUgZW5kIG9mIHRoZSBhcnJheSB0byB0aGUgb3Bwb3NpdGUgZW5kIG9mIHRoZSBhY3RpdmUgcmFuZ2UuXG4gICAgKilcbiAgICBtYXRjaCBkaXIgd2l0aFxuICAgIHwgYGZyb250X3RvX2JhY2sgLT5cbiAgICAgIGlmIGFjdHVhbF9mcm9udCA8PSBhY3R1YWxfYmFja1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBhY2MsIF8gPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgIH5hcHBhcmVudF9pOmFwcGFyZW50X2Zyb250XG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9mcm9udFxuICAgICAgICAgICAgfnN0b3BfcG9zOihhY3R1YWxfYmFjayArIDEpXG4gICAgICAgICAgICB+c3RlcDoxXG4gICAgICAgIGluXG4gICAgICAgIGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYWNjLCBhcHBhcmVudF9pID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9mcm9udFxuICAgICAgICAgICAgfnJlYWxfaTphY3R1YWxfZnJvbnRcbiAgICAgICAgICAgIH5zdG9wX3Bvczp0LmFycl9sZW5ndGhcbiAgICAgICAgICAgIH5zdGVwOjFcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYywgXyA9IGxvb3AgYWNjIH5hcHBhcmVudF9pIH5yZWFsX2k6MCB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSkgfnN0ZXA6MSBpblxuICAgICAgICBhY2MpXG4gICAgfCBgYmFja190b19mcm9udCAtPlxuICAgICAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGFjYywgXyA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfYmFja1xuICAgICAgICAgICAgfnJlYWxfaTphY3R1YWxfYmFja1xuICAgICAgICAgICAgfnN0b3BfcG9zOihhY3R1YWxfZnJvbnQgLSAxKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBhY2MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGFjYywgYXBwYXJlbnRfaSA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfYmFja1xuICAgICAgICAgICAgfnJlYWxfaTphY3R1YWxfYmFja1xuICAgICAgICAgICAgfnN0b3BfcG9zOigtMSlcbiAgICAgICAgICAgIH5zdGVwOigtMSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYywgXyA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICB+YXBwYXJlbnRfaVxuICAgICAgICAgICAgfnJlYWxfaToodC5hcnJfbGVuZ3RoIC0gMSlcbiAgICAgICAgICAgIH5zdG9wX3BvczooYWN0dWFsX2Zyb250IC0gMSlcbiAgICAgICAgICAgIH5zdGVwOigtMSlcbiAgICAgICAgaW5cbiAgICAgICAgYWNjKSlcbjs7XG5cbmxldCBmb2xkJyB0IGRpciB+aW5pdCB+ZiA9IGZvbGRpJyB0IGRpciB+aW5pdCB+ZjooZnVuIF8gYWNjIHYgLT4gZiBhY2MgdikgW0Bub250YWlsXVxubGV0IGl0ZXJpJyB0IGRpciB+ZiA9IGZvbGRpJyB0IGRpciB+aW5pdDooKSB+ZjooZnVuIGkgKCkgdiAtPiBmIGkgdilcbmxldCBpdGVyJyB0IGRpciB+ZiA9IGZvbGRpJyB0IGRpciB+aW5pdDooKSB+ZjooZnVuIF8gKCkgdiAtPiBmIHYpXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZCcgdCBgZnJvbnRfdG9fYmFjayB+aW5pdCB+ZlxubGV0IGZvbGRpIHQgfmluaXQgfmYgPSBmb2xkaScgdCBgZnJvbnRfdG9fYmFjayB+aW5pdCB+ZlxubGV0IGl0ZXJpIHQgfmYgPSBpdGVyaScgdCBgZnJvbnRfdG9fYmFjayB+ZlxuXG5sZXQgaXRlcmlfaW50ZXJuYWwgdCB+ZiA9XG4gIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgdGhlbiAoXG4gICAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9iYWNrID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCByZWMgbG9vcCB+cmVhbF9pIH5zdG9wX3BvcyA9XG4gICAgICBpZiByZWFsX2kgPCBzdG9wX3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGYgdC5hcnIgcmVhbF9pO1xuICAgICAgICBsb29wIH5yZWFsX2k6KHJlYWxfaSArIDEpIH5zdG9wX3BvcylcbiAgICBpblxuICAgIGlmIGFjdHVhbF9mcm9udCA8PSBhY3R1YWxfYmFja1xuICAgIHRoZW4gbG9vcCB+cmVhbF9pOmFjdHVhbF9mcm9udCB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSkgW0Bub250YWlsXVxuICAgIGVsc2UgKFxuICAgICAgbG9vcCB+cmVhbF9pOmFjdHVhbF9mcm9udCB+c3RvcF9wb3M6dC5hcnJfbGVuZ3RoO1xuICAgICAgbG9vcCB+cmVhbF9pOjAgfnN0b3BfcG9zOihhY3R1YWxfYmFjayArIDEpIFtAbm9udGFpbF0pKVxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGl0ZXJpX2ludGVybmFsIHQgfmY6KGZ1biBhcnIgaSAtPiBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGFyciBpIHw+IGYpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBjbGVhciB0ID1cbiAgaWYgdC5uZXZlcl9zaHJpbmtcbiAgdGhlblxuICAgICgqIGNsZWFyIHRoZSBhcnJheSB0byBhbGxvdyBlbGVtZW50cyB0byBiZSBnYXJiYWdlIGNvbGxlY3RlZCAqKVxuICAgIGl0ZXJpX2ludGVybmFsIHQgfmY6T3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZVxuICBlbHNlIHQuYXJyIDwtIE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjo4O1xuICB0LmZyb250X2luZGV4IDwtIDA7XG4gIHQuYmFja19pbmRleCA8LSAxO1xuICB0Lmxlbmd0aCA8LSAwO1xuICB0LmFycl9sZW5ndGggPC0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmFyclxuOztcblxuKCogV2UgaGF2ZSB0byBiZSBjYXJlZnVsIGhlcmUsIGltcG9ydGluZyBhbGwgb2YgQ29udGFpbmVyLk1ha2Ugd291bGQgY2hhbmdlIHRoZSBydW50aW1lIG9mXG4gICBzb21lIGZ1bmN0aW9ucyAoW2xlbmd0aF0gbWluaW1hbGx5KSBzaWxlbnRseSB3aXRob3V0IGNoYW5naW5nIHRoZSBzZW1hbnRpY3MuICBXZSBnZXRcbiAgIGFyb3VuZCB0aGF0IGJ5IGltcG9ydGluZyB0aGluZ3MgZXhwbGljaXRseS4gICopXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IG1lbSA9IEMubWVtXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZpbmQgPSBDLmZpbmRcbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCBibGl0IG5ld19hcnIgdCA9XG4gIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gIGxldCBhY3R1YWxfZnJvbnQgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICBsZXQgYWN0dWFsX2JhY2sgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCBvbGRfYXJyID0gdC5hcnIgaW5cbiAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gIHRoZW5cbiAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgfnNyYzpvbGRfYXJyXG4gICAgICB+ZHN0Om5ld19hcnJcbiAgICAgIH5zcmNfcG9zOmFjdHVhbF9mcm9udFxuICAgICAgfmRzdF9wb3M6MFxuICAgICAgfmxlbjoobGVuZ3RoIHQpXG4gIGVsc2UgKFxuICAgIGxldCBicmVha19wb3MgPSBPcHRpb25fYXJyYXkubGVuZ3RoIG9sZF9hcnIgLSBhY3R1YWxfZnJvbnQgaW5cbiAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgfnNyYzpvbGRfYXJyXG4gICAgICB+ZHN0Om5ld19hcnJcbiAgICAgIH5zcmNfcG9zOmFjdHVhbF9mcm9udFxuICAgICAgfmRzdF9wb3M6MFxuICAgICAgfmxlbjpicmVha19wb3M7XG4gICAgT3B0aW9uX2FycmF5LmJsaXRcbiAgICAgIH5zcmM6b2xkX2FyclxuICAgICAgfmRzdDpuZXdfYXJyXG4gICAgICB+c3JjX3BvczowXG4gICAgICB+ZHN0X3BvczpicmVha19wb3NcbiAgICAgIH5sZW46KGFjdHVhbF9iYWNrICsgMSkpO1xuICAoKiBsZW5ndGggZGVwZW5kcyBvbiB0LmFyciBhbmQgdC5mcm9udF9pbmRleCwgc28gdGhpcyBuZWVkcyB0byBiZSBmaXJzdCAqKVxuICB0LmJhY2tfaW5kZXggPC0gbGVuZ3RoIHQ7XG4gIHQuYXJyIDwtIG5ld19hcnI7XG4gIHQuYXJyX2xlbmd0aCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnI7XG4gIHQuZnJvbnRfaW5kZXggPC0gT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyIC0gMTtcbiAgKCogU2luY2UgdC5mcm9udF9pbmRleCA9IE9wdGlvbl9hcnJheS5sZW5ndGggbmV3X2FyciAtIDEsIHRoaXMgaXMgYXNzZXJ0aW5nIHRoYXQgdC5iYWNrX2luZGV4XG4gICAgIGlzIGEgdmFsaWQgaW5kZXggaW4gdGhlIGFycmF5IGFuZCB0aGF0IHRoZSBhcnJheSBjYW4gc3VwcG9ydCBhdCBsZWFzdCBvbmUgbW9yZVxuICAgICBlbGVtZW50IC0tIHJlY2FsbCwgaWYgdC5mcm9udF9pbmRleCA9IHQuYmFja19pbmRleCB0aGVuIHRoZSBhcnJheSBpcyBmdWxsLlxuXG4gICAgIE5vdGUgdGhhdCB0aGlzIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyID4gbGVuZ3RoIHQgKyAxLlxuICAqKVxuICBhc3NlcnQgKHQuZnJvbnRfaW5kZXggPiB0LmJhY2tfaW5kZXgpXG47O1xuXG5sZXQgbWF5YmVfc2hyaW5rX3VuZGVybHlpbmcgdCA9XG4gIGlmIChub3QgdC5uZXZlcl9zaHJpbmspICYmIHQuYXJyX2xlbmd0aCA+IDEwICYmIHQuYXJyX2xlbmd0aCAvIDMgPiBsZW5ndGggdFxuICB0aGVuIChcbiAgICBsZXQgbmV3X2FyciA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjoodC5hcnJfbGVuZ3RoIC8gMikgaW5cbiAgICBibGl0IG5ld19hcnIgdClcbjs7XG5cbmxldCBncm93X3VuZGVybHlpbmcgdCA9XG4gIGxldCBuZXdfYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOih0LmFycl9sZW5ndGggKiAyKSBpblxuICBibGl0IG5ld19hcnIgdFxuOztcblxubGV0IGVucXVldWVfYmFjayB0IHYgPVxuICBpZiB0LmZyb250X2luZGV4ID0gdC5iYWNrX2luZGV4IHRoZW4gZ3Jvd191bmRlcmx5aW5nIHQ7XG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmFyciB0LmJhY2tfaW5kZXggdjtcbiAgdC5iYWNrX2luZGV4IDwtIChpZiB0LmJhY2tfaW5kZXggPSB0LmFycl9sZW5ndGggLSAxIHRoZW4gMCBlbHNlIHQuYmFja19pbmRleCArIDEpO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBlbnF1ZXVlX2Zyb250IHQgdiA9XG4gIGlmIHQuZnJvbnRfaW5kZXggPSB0LmJhY2tfaW5kZXggdGhlbiBncm93X3VuZGVybHlpbmcgdDtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyIHQuZnJvbnRfaW5kZXggdjtcbiAgdC5mcm9udF9pbmRleCA8LSAoaWYgdC5mcm9udF9pbmRleCA9IDAgdGhlbiB0LmFycl9sZW5ndGggLSAxIGVsc2UgdC5mcm9udF9pbmRleCAtIDEpO1xuICB0LmFwcGFyZW50X2Zyb250X2luZGV4IDwtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggLSAxO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBlbnF1ZXVlIHQgYmFja19vcl9mcm9udCB2ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGJhY2sgLT4gZW5xdWV1ZV9iYWNrIHQgdlxuICB8IGBmcm9udCAtPiBlbnF1ZXVlX2Zyb250IHQgdlxuOztcblxubGV0IHBlZWtfZnJvbnRfbm9uZW1wdHkgdCA9XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0KVxuOztcblxubGV0IHBlZWtfZnJvbnRfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJEZXF1ZS5wZWVrX2Zyb250X2V4biBwYXNzZWQgYW4gZW1wdHkgcXVldWVcIlxuICBlbHNlIHBlZWtfZnJvbnRfbm9uZW1wdHkgdFxuOztcblxubGV0IHBlZWtfZnJvbnQgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAocGVla19mcm9udF9ub25lbXB0eSB0KVxuXG5sZXQgcGVla19iYWNrX25vbmVtcHR5IHQgPVxuICBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIChhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0KVxuOztcblxubGV0IHBlZWtfYmFja19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLnBlZWtfYmFja19leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBwZWVrX2JhY2tfbm9uZW1wdHkgdFxuOztcblxubGV0IHBlZWtfYmFjayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwZWVrX2JhY2tfbm9uZW1wdHkgdClcblxubGV0IHBlZWsgdCBiYWNrX29yX2Zyb250ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGJhY2sgLT4gcGVla19iYWNrIHRcbiAgfCBgZnJvbnQgLT4gcGVla19mcm9udCB0XG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udF9ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICBsZXQgcmVzID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciBpIGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmFyciBpO1xuICB0LmZyb250X2luZGV4IDwtIGk7XG4gIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggPC0gdC5hcHBhcmVudF9mcm9udF9pbmRleCArIDE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgbWF5YmVfc2hyaW5rX3VuZGVybHlpbmcgdDtcbiAgcmVzXG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udF9leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLmRlcXVldWVfZnJvbnRfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgZGVxdWV1ZV9mcm9udF9ub25lbXB0eSB0XG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHQpXG5cbmxldCBkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdCA9XG4gIGxldCBpID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICBsZXQgcmVzID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciBpIGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmFyciBpO1xuICB0LmJhY2tfaW5kZXggPC0gaTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0O1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2JhY2tfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJEZXF1ZS5kZXF1ZXVlX2JhY2tfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgZGVxdWV1ZV9iYWNrX25vbmVtcHR5IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2JhY2sgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZGVxdWV1ZV9iYWNrX25vbmVtcHR5IHQpXG5cbmxldCBkZXF1ZXVlX2V4biB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFja19leG4gdFxuOztcblxubGV0IGRlcXVldWUgdCBiYWNrX29yX2Zyb250ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGZyb250IC0+IGRlcXVldWVfZnJvbnQgdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFjayB0XG47O1xuXG5sZXQgZHJvcF9nZW4gPyhuID0gMSkgfmRlcXVldWUgdCA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiRGVxdWUuZHJvcDogIG5lZ2F0aXZlIGlucHV0ICglZClcIiBuICgpO1xuICBsZXQgcmVjIGxvb3AgbiA9XG4gICAgaWYgbiA+IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGRlcXVldWUgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIC0+IGxvb3AgKG4gLSAxKSlcbiAgaW5cbiAgbG9vcCBuXG47O1xuXG5sZXQgZHJvcF9mcm9udCA/biB0ID0gZHJvcF9nZW4gP24gfmRlcXVldWU6ZGVxdWV1ZV9mcm9udCB0XG5sZXQgZHJvcF9iYWNrID9uIHQgPSBkcm9wX2dlbiA/biB+ZGVxdWV1ZTpkZXF1ZXVlX2JhY2sgdFxuXG5sZXQgZHJvcCA/biB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBkcm9wX2JhY2sgP24gdFxuICB8IGBmcm9udCAtPiBkcm9wX2Zyb250ID9uIHRcbjs7XG5cbmxldCBhc3NlcnRfbm90X2VtcHR5IHQgbmFtZSA9IGlmIGlzX2VtcHR5IHQgdGhlbiBmYWlsd2l0aGYgXCIlczogRGVxdWUudCBpcyBlbXB0eVwiIG5hbWUgKClcblxubGV0IHRydWVfaW5kZXhfZXhuIHQgaSA9XG4gIGxldCBpX2Zyb21femVybyA9IGkgLSB0LmFwcGFyZW50X2Zyb250X2luZGV4IGluXG4gIGlmIGlfZnJvbV96ZXJvIDwgMCB8fCBsZW5ndGggdCA8PSBpX2Zyb21femVyb1xuICB0aGVuIChcbiAgICBhc3NlcnRfbm90X2VtcHR5IHQgXCJEZXF1ZS50cnVlX2luZGV4X2V4blwiO1xuICAgIGxldCBhcHBhcmVudF9mcm9udCA9IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYXBwYXJlbnRfYmFjayA9IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJpbnZhbGlkIGluZGV4OiAlaSBmb3IgYXJyYXkgd2l0aCBpbmRpY2VzICglaSwlaSlcIlxuICAgICAgaVxuICAgICAgYXBwYXJlbnRfZnJvbnRcbiAgICAgIGFwcGFyZW50X2JhY2tcbiAgICAgICgpKTtcbiAgbGV0IHRydWVfaSA9IHQuZnJvbnRfaW5kZXggKyAxICsgaV9mcm9tX3plcm8gaW5cbiAgaWYgdHJ1ZV9pID49IHQuYXJyX2xlbmd0aCB0aGVuIHRydWVfaSAtIHQuYXJyX2xlbmd0aCBlbHNlIHRydWVfaVxuOztcblxubGV0IGdldCB0IGkgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyICh0cnVlX2luZGV4X2V4biB0IGkpXG5cbmxldCBnZXRfb3B0IHQgaSA9XG4gIHRyeSBTb21lIChnZXQgdCBpKSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgc2V0X2V4biB0IGkgdiA9IE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmFyciAodHJ1ZV9pbmRleF9leG4gdCBpKSB2XG5cbmxldCB0b19hcnJheSB0ID1cbiAgbWF0Y2ggcGVla19mcm9udCB0IHdpdGhcbiAgfCBOb25lIC0+IFt8fF1cbiAgfCBTb21lIGZyb250IC0+XG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuOihsZW5ndGggdCkgZnJvbnQgaW5cbiAgICBpZ25vcmVcbiAgICAgIChmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIGkgdiAtPlxuICAgICAgICAgYXJyLihpKSA8LSB2O1xuICAgICAgICAgaSArIDEpXG4gICAgICAgOiBpbnQpO1xuICAgIGFyclxuOztcblxubGV0IG9mX2FycmF5IGFyciA9XG4gIGxldCB0ID0gY3JlYXRlIH5pbml0aWFsX2xlbmd0aDooQXJyYXkubGVuZ3RoIGFyciArIDEpICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyIH5mOihmdW4gdiAtPiBlbnF1ZXVlX2JhY2sgdCB2KTtcbiAgdFxuOztcblxuaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiMzRjMWU5Y2EtNDk5Mi0xMWU2LWE2ODYtOGI0YmQ0Zjg3Nzk2XCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuRGVxdWVcIlxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgaXRlciB0IH5mID0gaXRlciB0IH5mXG5cbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGxldCB0ID0gY3JlYXRlIH5pbml0aWFsX2xlbmd0aDpsZW4gKCkgaW5cbiAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgeCA9IG5leHQgKCkgaW5cbiAgICAgICAgZW5xdWV1ZV9iYWNrIHQgeFxuICAgICAgZG9uZTtcbiAgICAgIHRcbiAgICA7O1xuICBlbmQpXG5cbmxldCB0X29mX3NleHAgZiBzZXhwID0gb2ZfYXJyYXkgKEFycmF5LnRfb2Zfc2V4cCBmIHNleHApXG5sZXQgc2V4cF9vZl90IGYgdCA9IEFycmF5LnNleHBfb2ZfdCBmICh0b19hcnJheSB0KVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIgPVxuICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKEFycmF5LnRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyKVxuOztcblxuKCogcmUtZXhwb3NlIHRoZXNlIGhlcmUgdW5kZXIgYSBkaWZmZXJlbnQgbmFtZSB0byBhdm9pZCBpbnRlcm5hbCBjb25mdXNpb24gKilcbmxldCBiYWNrX2luZGV4ID0gYXBwYXJlbnRfYmFja19pbmRleFxubGV0IGZyb250X2luZGV4ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhcblxubGV0IGJhY2tfaW5kZXhfZXhuIHQgPVxuICBhc3NlcnRfbm90X2VtcHR5IHQgXCJEZXF1ZS5iYWNrX2luZGV4X2V4blwiO1xuICBhcHBhcmVudF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHRcbjs7XG5cbmxldCBmcm9udF9pbmRleF9leG4gdCA9XG4gIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLmZyb250X2luZGV4X2V4blwiO1xuICBhcHBhcmVudF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0XG47O1xuXG5tb2R1bGUgQmluYXJ5X3NlYXJjaGFibGUgPSBUZXN0X2JpbmFyeV9zZWFyY2hhYmxlLk1ha2UxX2FuZF90ZXN0IChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCB0IGkgPSBnZXQgdCAoZnJvbnRfaW5kZXhfZXhuIHQgKyBpKVxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX2FycmF5ID0gb2ZfYXJyYXlcbiAgICBlbmRcbiAgZW5kKVxuXG4oKiBUaGUgXCJzdGFibGVcIiBpbmRpY2VzIHVzZWQgaW4gdGhpcyBtb2R1bGUgbWFrZSB0aGUgYXBwbGljYXRpb24gb2YgdGhlXG4gICBbQmluYXJ5X3NlYXJjaGFibGVdIGZ1bmN0b3IgYXdrd2FyZC4gIFdlIG5lZWQgdG8gYmUgc3VyZSB0byB0cmFuc2xhdGUgaW5jb21pbmdcbiAgIHBvc2l0aW9ucyBmcm9tIHN0YWJsZSBzcGFjZSB0byB0aGUgZXhwZWN0ZWQgMCAtPiBsZW5ndGggLSAxIHNwYWNlIGFuZCB0aGVuIHdlIG5lZWQgdG9cbiAgIHRyYW5zbGF0ZSB0aGVtIGJhY2sgb24gcmV0dXJuLiAqKVxubGV0IGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgPVxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHBvcyAtPiBTb21lIChwb3MgLSB0LmFwcGFyZW50X2Zyb250X2luZGV4KVxuICBpblxuICBtYXRjaCBCaW5hcnlfc2VhcmNoYWJsZS5iaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5jb21wYXJlIGhvdyB2IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHVudHJhbnNsYXRlZF9pIC0+IFNvbWUgKHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggKyB1bnRyYW5zbGF0ZWRfaSlcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+c2VnbWVudF9vZiBob3cgPVxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHBvcyAtPiBTb21lIChwb3MgLSB0LmFwcGFyZW50X2Zyb250X2luZGV4KVxuICBpblxuICBtYXRjaCBCaW5hcnlfc2VhcmNoYWJsZS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+c2VnbWVudF9vZiBob3cgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdW50cmFuc2xhdGVkX2kgLT4gU29tZSAodC5hcHBhcmVudF9mcm9udF9pbmRleCArIHVudHJhbnNsYXRlZF9pKVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBCYXNlLkxpc3Rcbm1vZHVsZSBTdHJpbmcgPSBCYXNlLlN0cmluZ1xuXG5sZXQgZXByaW50IG1lc3NhZ2UgPSBQcmludGYuZXByaW50ZiBcIiVzXFxuJSFcIiBtZXNzYWdlXG5sZXQgZXByaW50X3Mgc2V4cCA9IGVwcmludCAoU2V4cC50b19zdHJpbmdfaHVtIHNleHApXG5sZXQgZXByaW50cyBtZXNzYWdlIGEgc2V4cF9vZl9hID0gZXByaW50X3MgKFslc2V4cF9vZjogc3RyaW5nICogYV0gKG1lc3NhZ2UsIGEpKVxubGV0IGVwcmludGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGVwcmludCBmb3JtYXRcbmxldCBmYWlsd2l0aHMgPSBFcnJvci5mYWlsd2l0aHNcblxubW9kdWxlIE1ha2UgKCkgPSBzdHJ1Y3RcbiAgbGV0IGNoZWNrX2ludmFyaWFudCA9IHJlZiB0cnVlXG4gIGxldCBzaG93X21lc3NhZ2VzID0gcmVmIHRydWVcblxuICBsZXQgZGVidWcgaW52YXJpYW50IH5tb2R1bGVfbmFtZSBuYW1lIHRzIGFyZyBzZXhwX29mX2FyZyBzZXhwX29mX3Jlc3VsdCBmID1cbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW4gZXByaW50cyAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBtb2R1bGVfbmFtZTsgXCIuXCI7IG5hbWUgXSkgYXJnIHNleHBfb2ZfYXJnO1xuICAgIGlmICFjaGVja19pbnZhcmlhbnRcbiAgICB0aGVuIChcbiAgICAgIHRyeSBMaXN0Lml0ZXIgdHMgfmY6aW52YXJpYW50IHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImludmFyaWFudCBwcmUtY29uZGl0aW9uIGZhaWxlZFwiXG4gICAgICAgICAgKG5hbWUsIGV4bilcbiAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIGV4bl0pO1xuICAgIGxldCByZXN1bHRfb3JfZXhuID0gUmVzdWx0LnRyeV93aXRoIGYgaW5cbiAgICBpZiAhY2hlY2tfaW52YXJpYW50XG4gICAgdGhlbiAoXG4gICAgICB0cnkgTGlzdC5pdGVyIHRzIH5mOmludmFyaWFudCB3aXRoXG4gICAgICB8IGV4biAtPlxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJpbnZhcmlhbnQgcG9zdC1jb25kaXRpb24gZmFpbGVkXCJcbiAgICAgICAgICAobmFtZSwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogZXhuXSk7XG4gICAgaWYgIXNob3dfbWVzc2FnZXNcbiAgICB0aGVuXG4gICAgICBlcHJpbnRzXG4gICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIG1vZHVsZV9uYW1lOyBcIi5cIjsgbmFtZTsgXCItcmVzdWx0XCIgXSlcbiAgICAgICAgcmVzdWx0X29yX2V4blxuICAgICAgICBbJXNleHBfb2Y6IChyZXN1bHQsIGV4bikgUmVzdWx0LnRdO1xuICAgIFJlc3VsdC5va19leG4gcmVzdWx0X29yX2V4blxuICA7O1xuZW5kXG5cbmxldCBzaG91bGRfcHJpbnRfYmFja3RyYWNlID0gcmVmIGZhbHNlXG5cbmxldCBhbV9pbnRlcm5hbCBoZXJlIG1lc3NhZ2UgPVxuICAoKiBJbiB0aGlzIGZ1bmN0aW9uIHdlIHVzZSBbUHJpbnRmLmVwcmludGZdIHJhdGhlciB0aGFuIFtEZWJ1Zy5lcHJpbnRmXSwgYmVjYXVzZSB0aGVcbiAgICAgZm9ybWVyIGRvZXNuJ3QgZmx1c2gsIHdoaWxlIHRoZSBsYXR0ZXIgZG9lcy4gIFdlJ2QgcmF0aGVyIGZsdXNoIG9uY2UgYXQgdGhlIGVuZCxcbiAgICAgcmF0aGVyIHRoYW4gdGhyZWUgdGltZXMuICopXG4gIFByaW50Zi5lcHJpbnRmIFwiJXM6XFxuXCIgKFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRvX3N0cmluZyBoZXJlKTtcbiAgaWYgIXNob3VsZF9wcmludF9iYWNrdHJhY2VcbiAgdGhlblxuICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICBcIiVzXFxuXCJcbiAgICAgIChCYWNrdHJhY2UuZ2V0ICgpIHw+IFslc2V4cF9vZjogQmFja3RyYWNlLnRdIHw+IFNleHAudG9fc3RyaW5nX2h1bSk7XG4gIChtYXRjaCBtZXNzYWdlIHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIG1lc3NhZ2UgLT4gUHJpbnRmLmVwcmludGYgXCIlc1xcblwiIG1lc3NhZ2UpO1xuICBQcmludGYuZXByaW50ZiBcIiUhXCJcbjs7XG5cbmxldCBhbSBoZXJlID0gYW1faW50ZXJuYWwgaGVyZSBOb25lXG5sZXQgYW1mIGhlcmUgZm10ID0gUHJpbnRmLmtzcHJpbnRmIChmdW4gc3RyaW5nIC0+IGFtX2ludGVybmFsIGhlcmUgKFNvbWUgc3RyaW5nKSkgZm10XG5cbmxldCBhbXMgaGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgYW1faW50ZXJuYWwgaGVyZSAoU29tZSAoKG1lc3NhZ2UsIGEpIHw+IFslc2V4cF9vZjogc3RyaW5nICogYV0gfD4gU2V4cC50b19zdHJpbmdfaHVtKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TeXNcblxubGV0IHVuaXhfcXVvdGUgeCA9XG4gIGlmIChub3QgKFN0cmluZy5pc19lbXB0eSB4KSlcbiAgJiYgU3RyaW5nLmZvcl9hbGwgeCB+ZjooZnVuY3Rpb25cbiAgICAgICB8ICdhJyAuLiAneidcbiAgICAgICB8ICdBJyAuLiAnWidcbiAgICAgICB8ICcwJyAuLiAnOSdcbiAgICAgICB8ICdfJyB8ICctJyB8ICc6JyB8ICcuJyB8ICcvJyB8ICcsJyB8ICcrJyB8ICc9JyB8ICclJyB8ICdAJyAtPiB0cnVlXG4gICAgICAgfCBfIC0+IGZhbHNlKVxuICB0aGVuIChcbiAgICAoKiBTaGVsbCBrZXl3b3JkcywgYXMgb3V0cHV0IGJ5IFtjb21wZ2VuIC1rXSBmb3IgYmFzaCwgW21hbiBkYXNoXSBmb3IgZGFzaCwgYW5kIFtQQVRIPVxuICAgICAgIHR5cGUgLW0gJyonIHwgZ3JlcCByZXNlcnZlZF0gZm9yIHpzaCwgZXhjZXB0IGZvciBrZXl3b3JkcyB0aGF0IGhhdmUgc3BlY2lhbFxuICAgICAgIGNoYXJhY3RlcnMgbGlrZSBbWy4gTm90ZSB0aGF0IGJ1aWx0aW5zIGRvbid0IG1hdHRlciBiZWNhdXNlICdhbGlhcycgYW5kIGFsaWFzXG4gICAgICAgYmVoYXZlIHRoZSBzYW1lLCB1bmxpa2UgJ2lmJyBhbmQgaWYuICopXG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBcImlmXCJcbiAgICB8IFwidGhlblwiXG4gICAgfCBcImVsc2VcIlxuICAgIHwgXCJlbGlmXCJcbiAgICB8IFwiZmlcIlxuICAgIHwgXCJjYXNlXCJcbiAgICB8IFwiZXNhY1wiXG4gICAgfCBcImZvclwiXG4gICAgfCBcInNlbGVjdFwiXG4gICAgfCBcIndoaWxlXCJcbiAgICB8IFwidW50aWxcIlxuICAgIHwgXCJkb1wiXG4gICAgfCBcImRvbmVcIlxuICAgIHwgXCJpblwiXG4gICAgfCBcImZ1bmN0aW9uXCJcbiAgICB8IFwidGltZVwiXG4gICAgfCBcImNvcHJvY1wiXG4gICAgfCBcImZvcmVhY2hcIlxuICAgIHwgXCJyZXBlYXRcIlxuICAgIHwgXCJub2NvcnJlY3RcIiAtPiBGaWxlbmFtZS5xdW90ZSB4XG4gICAgfCBfIC0+IHgpXG4gIGVsc2UgRmlsZW5hbWUucXVvdGUgeFxuOztcblxubGV0IHF1b3RlID1cbiAgbWF0Y2ggU3RkbGliLlN5cy5vc190eXBlIHdpdGhcbiAgfCBcIlVuaXhcIiAtPiB1bml4X3F1b3RlXG4gIHwgXyAtPiBGaWxlbmFtZS5xdW90ZVxuOztcblxubGV0IGNvbmNhdF9xdW90ZWQgc3BsaXRfY29tbWFuZCA9XG4gIExpc3QubWFwIH5mOnF1b3RlIHNwbGl0X2NvbW1hbmQgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiXG47O1xuXG5sZXQgY19pbnRfc2l6ZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBjYXRjaF9icmVhayA9IGBVc2VfU3lzX3VuaXhcbmxldCBjaGRpciA9IGBVc2VfU3lzX3VuaXhcbmxldCBjb21tYW5kID0gYFVzZV9TeXNfdW5peFxubGV0IGNvbW1hbmRfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGV4ZWN1dGFibGVfbmFtZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBleGVjdXRpb25fbW9kZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBmaWxlX2V4aXN0cyA9IGBVc2VfU3lzX3VuaXhcbmxldCBmaWxlX2V4aXN0c19leG4gPSBgVXNlX1N5c191bml4XG5sZXQgZm9sZF9kaXIgPSBgVXNlX1N5c191bml4XG5sZXQgZ2V0Y3dkID0gYFVzZV9TeXNfdW5peFxubGV0IGhvbWVfZGlyZWN0b3J5ID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2RpcmVjdG9yeSA9IGBVc2VfU3lzX3VuaXhcbmxldCBpc19kaXJlY3RvcnlfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2ZpbGUgPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZmlsZV9leG4gPSBgVXNlX1N5c191bml4XG5sZXQgbHNfZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IG92ZXJyaWRlX2FyZ3YgPSBgVXNlX1N5c191bml4XG5sZXQgcmVhZGRpciA9IGBVc2VfU3lzX3VuaXhcbmxldCByZW1vdmUgPSBgVXNlX1N5c191bml4XG5sZXQgcmVuYW1lID0gYFVzZV9TeXNfdW5peFxubGV0IHVuc2FmZV9nZXRlbnYgPSBgVXNlX1N5c191bml4XG5sZXQgdW5zYWZlX2dldGVudl9leG4gPSBgVXNlX1N5c191bml4XG5cbmV4Y2VwdGlvbiBCcmVhayA9IFN0ZGxpYi5TeXMuQnJlYWtcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHVuaXhfcXVvdGUgPSB1bml4X3F1b3RlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTdGRsaWIuQXJnXG5cbnR5cGUgdCA9IGtleSAqIHNwZWMgKiBkb2NcblxubGV0IHNvcnRfYW5kX2FsaWduIGxzdCA9XG4gIGFsaWduIChCYXNlLkxpc3Quc29ydCBsc3QgfmNvbXBhcmU6KGZ1biAoYSwgXywgXykgKGIsIF8sIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhZ19pbnRmXG5pbmNsdWRlIChEb3VibHlfbGlua2VkIDogRG91Ymx5X2xpbmtlZC5TKVxuXG5sZXQgYWRkID0gaW5zZXJ0X2ZpcnN0XG5sZXQgYWRkX3VuaXQgdCB2ID0gYWRkIHQgdiB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KVxubGV0IGVsdHMgdCA9IGZvbGRfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBhY2MgZWx0IC0+IGVsdCA6OiBhY2MpXG5sZXQgcmVtb3ZlX29uZSA9IHJlbW92ZV9maXJzdFxubGV0IGNob29zZSA9IGZpcnN0X2VsdFxuXG5sZXQgdW50aWxfZW1wdHkgdCBmID1cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBPcHRpb24uaXRlciAocmVtb3ZlX29uZSB0KSB+ZjooZnVuIHYgLT5cbiAgICAgIGYgdjtcbiAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKClcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgeyBtdXRhYmxlIGJzdHIgOiBCaWdzdHJpbmcudFxuICA7IG11dGFibGUgcG9zIDogaW50XG4gIDsgbXV0YWJsZSBsZW4gOiBpbnRcbiAgOyBpbml0IDogQmlnc3RyaW5nLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IHJlc2l6ZSBidWYgbW9yZSA9XG4gIGxldCBtaW5fbGVuID0gYnVmLmxlbiArIG1vcmUgaW5cbiAgbGV0IG5ld19sZW4gPSBtaW5fbGVuICsgbWluX2xlbiBpblxuICBsZXQgbmV3X2J1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgbmV3X2xlbiBpblxuICBCaWdzdHJpbmcuYmxpdG8gfnNyYzpidWYuYnN0ciB+c3JjX2xlbjpidWYucG9zIH5kc3Q6bmV3X2J1ZiAoKTtcbiAgYnVmLmJzdHIgPC0gbmV3X2J1ZjtcbiAgYnVmLmxlbiA8LSBuZXdfbGVuXG47O1xuIiwiKCogU29tZSBjb2RlIHRha2VuIGZyb20gSU5SSUEncyBidWZmZXIgbW9kdWxlLiAqKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gQmlnc3RyaW5nXG5pbmNsdWRlIEJpZ2J1ZmZlcl9pbnRlcm5hbFxuXG5sZXQgX19pbnRlcm5hbCAodCA6IHQpID0gdFxubGV0IGxlbmd0aCB0ID0gdC5wb3NcblxuKCoge1sgbGV0IGludmFyaWFudCB0ID0gYXNzZXJ0ICh0LmxlbiA9PSBCaWdzdHJpbmcubGVuZ3RoIHQuYnN0cikgXX0gKilcblxubGV0IGNyZWF0ZSBuID1cbiAgbGV0IG4gPSBtYXggMSBuIGluXG4gIGxldCBic3RyID0gQmlnc3RyaW5nLmNyZWF0ZSBuIGluXG4gIHsgYnN0cjsgcG9zID0gMDsgbGVuID0gbjsgaW5pdCA9IGJzdHIgfVxuOztcblxubGV0IGNvbnRlbnRzIGJ1ZiA9IEJpZ3N0cmluZy50b19zdHJpbmcgYnVmLmJzdHIgfmxlbjpidWYucG9zXG5sZXQgY29udGVudHNfYnl0ZXMgYnVmID0gQmlnc3RyaW5nLnRvX2J5dGVzIGJ1Zi5ic3RyIH5sZW46YnVmLnBvc1xubGV0IGJpZ19jb250ZW50cyBidWYgPSBzdWJvIH5sZW46YnVmLnBvcyBidWYuYnN0clxubGV0IHZvbGF0aWxlX2NvbnRlbnRzIGJ1ZiA9IGJ1Zi5ic3RyXG5cbmxldCBhZGRfY2hhciBidWYgYyA9XG4gIGxldCBwb3MgPSBidWYucG9zIGluXG4gIGlmIHBvcyA+PSBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiAxO1xuICBidWYuYnN0ci57cG9zfSA8LSBjO1xuICBidWYucG9zIDwtIHBvcyArIDFcbjs7XG5cbm1vZHVsZSBUb19ieXRlcyA9XG4gIFRlc3RfYmxpdC5NYWtlX2Rpc3RpbmN0X2FuZF90ZXN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gY2hhclxuXG4gICAgICBsZXQgZXF1YWwgPSBDaGFyLmVxdWFsXG4gICAgICBsZXQgb2ZfYm9vbCBiID0gaWYgYiB0aGVuICdhJyBlbHNlICdiJ1xuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICAgICAgZm9yIF8gPSAxIHRvIGxlbiBkb1xuICAgICAgICAgIGFkZF9jaGFyIHQgJ2EnXG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBzZXQgdCBpIGMgPSBCaWdzdHJpbmcuc2V0IHQuYnN0ciBpIGNcbiAgICAgIGxldCBnZXQgdCBpID0gQmlnc3RyaW5nLmdldCB0LmJzdHIgaVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIEJ5dGVzXG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cblxuICAgICAgbGV0IHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgICAgICAgQmlnc3RyaW5nLlRvX2J5dGVzLnVuc2FmZV9ibGl0IH5zcmM6c3JjLmJzdHIgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuXG4gICAgICA7O1xuICAgIGVuZClcblxuaW5jbHVkZSBUb19ieXRlc1xubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKEJpZ2J1ZmZlcl9pbnRlcm5hbCkgKFRvX2J5dGVzKVxuXG5sZXQgbnRoIGJ1ZiBwb3MgPVxuICBpZiBwb3MgPCAwIHx8IHBvcyA+PSBidWYucG9zIHRoZW4gaW52YWxpZF9hcmcgXCJCaWdidWZmZXIubnRoXCIgZWxzZSBidWYuYnN0ci57cG9zfVxuOztcblxubGV0IGNsZWFyIGJ1ZiA9IGJ1Zi5wb3MgPC0gMFxuXG5sZXQgcmVzZXQgYnVmID1cbiAgYnVmLnBvcyA8LSAwO1xuICBidWYuYnN0ciA8LSBidWYuaW5pdDtcbiAgYnVmLmxlbiA8LSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zi5ic3RyXG47O1xuXG5sZXQgYWRkX3N1YnN0cmluZyBidWYgc3JjIH5wb3M6c3JjX3BvcyB+bGVuID1cbiAgaWYgc3JjX3BvcyA8IDAgfHwgbGVuIDwgMCB8fCBzcmNfcG9zID4gU3RyaW5nLmxlbmd0aCBzcmMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2J1ZmZlci5hZGRfc3Vic3RyaW5nXCI7XG4gIGxldCBuZXdfcG9zID0gYnVmLnBvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgbGVuO1xuICBCaWdzdHJpbmcuRnJvbV9zdHJpbmcuYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfc3ViYnl0ZXMgYnVmIHNyYyB+cG9zOnNyY19wb3MgfmxlbiA9XG4gIGlmIHNyY19wb3MgPCAwIHx8IGxlbiA8IDAgfHwgc3JjX3BvcyA+IEJ5dGVzLmxlbmd0aCBzcmMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2J1ZmZlci5hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX2J5dGVzLmJsaXQgfnNyYyB+c3JjX3BvcyB+bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcztcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2JpZ3N0cmluZyBidWYgc3JjID1cbiAgbGV0IGxlbiA9IEJpZ3N0cmluZy5sZW5ndGggc3JjIGluXG4gIGxldCBuZXdfcG9zID0gYnVmLnBvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgbGVuO1xuICBCaWdzdHJpbmcuYmxpdG8gfnNyYyB+c3JjX2xlbjpsZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zICgpO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfc3RyaW5nIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzcmMgaW5cbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX3N0cmluZy5ibGl0byB+c3JjIH5zcmNfbGVuOmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3MgKCk7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9ieXRlcyBidWYgc3JjID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBzcmMgaW5cbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX2J5dGVzLmJsaXRvIH5zcmMgfnNyY19sZW46bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcyAoKTtcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2J1ZmZlciBidWZfZHN0IGJ1Zl9zcmMgPVxuICBsZXQgbGVuID0gYnVmX3NyYy5wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBidWZfZHN0LnBvcyBpblxuICBsZXQgbmV3X3BvcyA9IGRzdF9wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zl9kc3QubGVuIHRoZW4gcmVzaXplIGJ1Zl9kc3QgbGVuO1xuICBCaWdzdHJpbmcuYmxpdG8gfnNyYzpidWZfc3JjLmJzdHIgfnNyY19sZW46bGVuIH5kc3Q6YnVmX2RzdC5ic3RyIH5kc3RfcG9zICgpO1xuICBidWZfZHN0LnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2Jpbl9wcm90IHQgKHdyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpIHggPVxuICBsZXQgbmV3X3BvcyA9XG4gICAgbWF0Y2ggd3JpdGVyLndyaXRlIHQuYnN0ciB+cG9zOnQucG9zIHggd2l0aFxuICAgIHwgcG9zIC0+IHBvc1xuICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICgqIEl0J3MgbGlrZWt5IHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyBkdWUgdG8gYSBidWZmZXIgb3ZlcmZsb3csIHNvIHJlc2l6ZSB0aGVcbiAgICAgICAgIGludGVybmFsIGJ1ZmZlciBhbmQgdHJ5IGFnYWluLiBUZWNobmljYWxseSB3ZSBjb3VsZCBtYXRjaCBvblxuICAgICAgICAgW0Jpbl9wcm90LkNvbW1vbi5CdWZmZXJfc2hvcnRdIG9ubHksIGhvd2V2ZXIgd2UgY2FuJ3QgZWFzaWx5IGVuZm9yY2UgdGhhdCBjdXN0b21cbiAgICAgICAgIGJpbl93cml0ZV94eHggZnVuY3Rpb25zIGRvIHJhaXNlIHRoaXMgcGFydGljdWxhciBleGNlcHRpb24gYW5kIG5vdFxuICAgICAgICAgW0ludmFsaWRfYXJndW1lbnRdIG9yIFtGYWlsdXJlXSBmb3IgaW5zdGFuY2UuICopXG4gICAgICBsZXQgc2l6ZSA9IHdyaXRlci5zaXplIHggaW5cbiAgICAgIGlmIHQucG9zICsgc2l6ZSA+IHQubGVuIHRoZW4gcmVzaXplIHQgc2l6ZTtcbiAgICAgIHdyaXRlci53cml0ZSB0LmJzdHIgfnBvczp0LnBvcyB4XG4gIGluXG4gIHQucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgfCAnKCcgLT4gJyknXG4gIHwgJ3snIC0+ICd9J1xuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbVxuICAgIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChOb3RfZm91bmRfc1xuICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICBcIkJpZ2J1ZmZlci5hZGRfc3Vic3RpdHV0ZTogY2Fubm90IGZpbmQgY2xvc2luZyBkZWxpbWl0ZXJcIlxuICAgICAgICAgICAgICAgKG9wZW5pbmcgOiBjaGFyKVxuICAgICAgICAgICAgICAgKGNsb3NpbmcgOiBjaGFyKVxuICAgICAgICAgICAgICAgKHN0YXJ0IDogaW50KVxuICAgICAgICAgICAgICAgc10pXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsIHMuW2ldIG9wZW5pbmdcbiAgICB0aGVuIGFkdmFuY2UgKGsgKyAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgaWYgQ2hhci5lcXVhbCBzLltpXSBjbG9zaW5nXG4gICAgdGhlbiBpZiBrID0gMCB0aGVuIGkgZWxzZSBhZHZhbmNlIChrIC0gMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbVxuICBpblxuICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcbjs7XG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbVxuICAgIHRoZW4gbGltXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdhJyAuLiAneidcbiAgICAgIHwgJ0EnIC4uICdaJ1xuICAgICAgfCAnMCcgLi4gJzknXG4gICAgICB8ICdfJ1xuICAgICAgfCAn6SdcbiAgICAgIHwgJ+AnXG4gICAgICB8ICfhJ1xuICAgICAgfCAn6CdcbiAgICAgIHwgJ/knXG4gICAgICB8ICfiJ1xuICAgICAgfCAn6idcbiAgICAgIHwgJ+4nXG4gICAgICB8ICf0J1xuICAgICAgfCAn+ydcbiAgICAgIHwgJ+snXG4gICAgICB8ICfvJ1xuICAgICAgfCAn/CdcbiAgICAgIHwgJ+cnXG4gICAgICB8ICfJJ1xuICAgICAgfCAnwCdcbiAgICAgIHwgJ8EnXG4gICAgICB8ICfIJ1xuICAgICAgfCAn2SdcbiAgICAgIHwgJ8InXG4gICAgICB8ICfKJ1xuICAgICAgfCAnzidcbiAgICAgIHwgJ9QnXG4gICAgICB8ICfbJ1xuICAgICAgfCAnyydcbiAgICAgIHwgJ88nXG4gICAgICB8ICfcJ1xuICAgICAgfCAnxycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgICAgfCBfIC0+IGkpXG4gIGluXG4gIGFkdmFuY2Ugc3RhcnQgKFN0cmluZy5sZW5ndGggcylcbjs7XG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0ID1cbiAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gIHwgKCcoJyB8ICd7JykgYXMgYyAtPlxuICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICBTdHJpbmcuc3ViIHMgfnBvczpuZXdfc3RhcnQgfmxlbjooc3RvcCAtIHN0YXJ0IC0gMSksIHN0b3AgKyAxXG4gICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgfCBfIC0+XG4gICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIChzdGFydCArIDEpIGluXG4gICAgU3RyaW5nLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooc3RvcCAtIHN0YXJ0KSwgc3RvcFxuOztcblxuKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgYWNjb3JkaW5nIHRvIHRoZSBmdW5jdGlvbiBtYXBwaW5nIGYuICopXG5sZXQgYWRkX3N1YnN0aXR1dGUgYnVmIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICckJyBhcyBjdXJyZW50IHdoZW4gQ2hhci5lcXVhbCBwcmV2aW91cyAnXFxcXCcgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmIGN1cnJlbnQ7XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCAnJCcgLT5cbiAgICAgICAgbGV0IGlkZW50LCBuZXh0X2kgPSBmaW5kX2lkZW50IHMgKGkgKyAxKSBpblxuICAgICAgICBhZGRfc3RyaW5nIGJ1ZiAoZiBpZGVudCk7XG4gICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgIHwgY3VycmVudCB3aGVuIENoYXIuZXF1YWwgcHJldmlvdXMgJ1xcXFwnIC0+XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiBjdXJyZW50O1xuICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgJ1xcXFwnIGFzIGN1cnJlbnQgLT5cbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8IGN1cnJlbnQgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmIGN1cnJlbnQ7XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKSlcbiAgaW5cbiAgc3Vic3QgJyAnIDBcbjs7XG5cbm1vZHVsZSBGb3JtYXQgPSBzdHJ1Y3RcbiAgbGV0IGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmID1cbiAgICBGb3JtYXQubWFrZV9mb3JtYXR0ZXIgKGZ1biBzIHBvcyBsZW4gLT4gYWRkX3N1YnN0cmluZyBidWYgcyB+cG9zIH5sZW4pIGlnbm9yZVxuICA7O1xuXG4gIGxldCBicHJpbnRmIGJ1ZiA9IEZvcm1hdC5rZnByaW50ZiBpZ25vcmUgKGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmKVxuZW5kXG5cbm1vZHVsZSBQcmludGYgPSBzdHJ1Y3RcbiAgbGV0IGJwcmludGYgYnVmID0gUHJpbnRmLmtzcHJpbnRmIChhZGRfc3RyaW5nIGJ1ZilcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5CeXRlc31bQmFzZS5CeXRlc119LiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID0gYnl0ZXMgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkJ5dGVzXG5lbmRcbndpdGggdHlwZSB0IDo9IHRcblxuaW5jbHVkZSBIZXhkdW1wLlMgd2l0aCB0eXBlIHQgOj0gdFxuaW5jbHVkZSBRdWlja2NoZWNrYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuKCoqIExpa2UgW2dlbl0sIGJ1dCBnZW5lcmF0ZSBieXRlcyB3aXRoIHRoZSBnaXZlbiBkaXN0cmlidXRpb24gb2YgY2hhcmFjdGVycy4gKilcbnZhbCBnZW4nIDogY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbZ2VuJ10sIGJ1dCBnZW5lcmF0ZSBieXRlcyB3aXRoIHRoZSBnaXZlbiBsZW5ndGguICopXG52YWwgZ2VuX3dpdGhfbGVuZ3RoIDogaW50IC0+IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIE5vdGUgdGhhdCBbYnl0ZXNdIGlzIGFscmVhZHkgc3RhYmxlIGJ5IGl0c2VsZiwgc2luY2UgYXMgYSBwcmltaXRpdmUgdHlwZSBpdCBpcyBhblxuICAgIGludGVncmFsIHBhcnQgb2YgdGhlIHNleHAgLyBiaW5faW8gcHJvdG9jb2wuIFtCeXRlcy5TdGFibGVdIGV4aXN0cyBvbmx5IHRvIHByb3ZpZGVcbiAgICBpbnRlcmZhY2UgdW5pZm9ybWl0eSB3aXRoIG90aGVyIHN0YWJsZSB0eXBlcy4gKilcbm1vZHVsZSBTdGFibGUgOiBzaWdcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgdHlwZSBub25yZWMgdCA9IHRcbiAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGluY2x1ZGVcbiAgICAgIFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kXG5lbmRcblxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmcuRiAoc3RydWN0XG4gICAgdHlwZSB0ID0gQmlnc3RyaW5nLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICAgIGxldCBjcmVhdGUgPSBCaWdzdHJpbmcuY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2M6Tm9uZVxuICAgIGxldCBsZW5ndGggPSBCaWdzdHJpbmcubGVuZ3RoXG4gICAgbGV0IGdldCA9IEJpZ3N0cmluZy5nZXRcblxuICAgIG1vZHVsZSBCbGl0ID0gTWFrZV9zdWJzdHJpbmcuQmxpdFxuXG4gICAgbGV0IGJsaXQgPSBCbGl0LmJpZ3N0cmluZ19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF90b19zdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19ieXRlc1xuICAgIGxldCBibGl0X3RvX2J5dGVzID0gQmxpdC5iaWdzdHJpbmdfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19iaWdzdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF9mcm9tX3N0cmluZyA9IEJsaXQuc3RyaW5nX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X2Zyb21fYmlnc3RyaW5nID0gQmxpdC5iaWdzdHJpbmdfYmlnc3RyaW5nXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RhYmxlX2ludGVybmFsXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgICAgICAgdmFsIGxhYmVsIDogc3RyaW5nXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgaW5kZXggOiBpbnRcbiAgICAgICAgOyBtaW5faW5kZXggOiBpbnRcbiAgICAgICAgOyBtYXhfaW5kZXggOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IGNyZWF0ZSBpbmRleCB+bWluIH5tYXggPVxuICAgICAgICBpZiBpbmRleCA8IG1pbiB8fCBpbmRleCA+IG1heFxuICAgICAgICB0aGVuXG4gICAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIChpbmRleCA6IGludCkgKG1pbiA6IGludCkgKG1heCA6IGludCldXG4gICAgICAgIGVsc2UgeyBpbmRleDsgbWluX2luZGV4ID0gbWluOyBtYXhfaW5kZXggPSBtYXggfVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIEZvcl9zZXhwYWJsZSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBzdHJpbmcgKiBpbnQgKiBzdHJpbmcgKiBpbnQgKiBzdHJpbmcgKiBpbnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgIChGb3Jfc2V4cGFibGUpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlIHQgPSBNLmxhYmVsLCB0LmluZGV4LCBcIm9mXCIsIHQubWluX2luZGV4LCBcInRvXCIsIHQubWF4X2luZGV4XG5cbiAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSAobGFiZWwsIGluZGV4LCBvZl8sIG1pbiwgdG9fLCBtYXgpID1cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmVxdWFsIGxhYmVsIE0ubGFiZWxcbiAgICAgICAgICAgICAgJiYgU3RyaW5nLmVxdWFsIG9mXyBcIm9mXCJcbiAgICAgICAgICAgICAgJiYgU3RyaW5nLmVxdWFsIHRvXyBcInRvXCJcbiAgICAgICAgICAgICAgdGhlbiBjcmVhdGUgaW5kZXggfm1pbiB+bWF4XG4gICAgICAgICAgICAgIGVsc2UgRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJpbnZhbGlkIHNleHAgZm9yIGluZGV4XCIgfmxhYmVsOk0ubGFiZWxdXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwX29mLCBjb21wYXJlXVxuICAgICAgICBlbmQpXG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgICAgICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxub3BlbiEgU3RkX2ludGVybmFsXG5cbm1vZHVsZSB0eXBlIFMgPSBCb3VuZGVkX2luZGV4X2ludGYuU1xuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHZhbCBsYWJlbCA6IHN0cmluZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gU3RhYmxlLlYxLk1ha2UgKE0pXG4gIGVuZFxuXG4gIG9wZW4gU3RhYmxlLlYxXG5cbiAgdHlwZSB0ID0gU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY3JlYXRlID0gU3RhYmxlLlYxLmNyZWF0ZVxuXG4gIGxldCBjcmVhdGVfYWxsIH5taW4gfm1heCA9XG4gICAgU2VxdWVuY2UudW5mb2xkIH5pbml0Om1pbiB+ZjooZnVuIGluZGV4IC0+XG4gICAgICBpZiBpbmRleCA8IG1pbiB8fCBpbmRleCA+IG1heCB0aGVuIE5vbmUgZWxzZSBTb21lIChjcmVhdGUgaW5kZXggfm1pbiB+bWF4LCBpbmRleCArIDEpKVxuICAgIHw+IFNlcXVlbmNlLnRvX2xpc3RcbiAgOztcblxuICBsZXQgaW5kZXggdCA9IHQuaW5kZXhcbiAgbGV0IG1heF9pbmRleCB0ID0gdC5tYXhfaW5kZXhcbiAgbGV0IG1pbl9pbmRleCB0ID0gdC5taW5faW5kZXhcbiAgbGV0IHplcm9fYmFzZWRfaW5kZXggdCA9IGluZGV4IHQgLSBtaW5faW5kZXggdFxuICBsZXQgbnVtX2luZGV4ZXMgdCA9IG1heF9pbmRleCB0IC0gbWluX2luZGV4IHQgKyAxXG5cbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBdXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBDb21tYW5kXG5cbm1vZHVsZSBBcmdfdHlwZSA9IHN0cnVjdFxuICBpbmNsdWRlIEFyZ190eXBlXG5cbiAgbW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRXhwb3J0XG5cbiAgICBsZXQgZGF0ZSA9IGNyZWF0ZSBEYXRlLm9mX3N0cmluZ1xuICAgIGxldCBwZXJjZW50ID0gY3JlYXRlIFBlcmNlbnQub2Zfc3RyaW5nXG4gICAgbGV0IGhvc3RfYW5kX3BvcnQgPSBjcmVhdGUgSG9zdF9hbmRfcG9ydC5vZl9zdHJpbmdcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBhcmFtID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIFBhcmFtIDpcbiAgICBzaWdcbiAgICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgUGFyYW0gd2l0aCBtb2R1bGUgQXJnX3R5cGUgOj0gUGFyYW0uQXJnX3R5cGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEFyZ190eXBlID0gQXJnX3R5cGVcbiAgaW5jbHVkZSBBcmdfdHlwZS5FeHBvcnRcbmVuZFxuXG5tb2R1bGUgU3BlYyA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBTcGVjIDpcbiAgICBzaWdcbiAgICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgU3BlYyB3aXRoIG1vZHVsZSBBcmdfdHlwZSA6PSBTcGVjLkFyZ190eXBlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBBcmdfdHlwZSA9IEFyZ190eXBlXG4gIGluY2x1ZGUgQXJnX3R5cGUuRXhwb3J0XG5lbmRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBMZXRfc3ludGF4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIExldF9zeW50YXhcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBQYXJhbVxuICBlbmRcbmVuZFxuIiwiKCoqIENvcmUgZ3JlYXRseSBleHBhbmRzIHRoZSBmdW5jdGlvbmFsaXR5IGF2YWlsYWJsZSBpbiBCYXNlIHdoaWxlIHN0aWxsIHJlbWFpbmluZ1xuICAgIHBsYXRmb3JtLWFnbm9zdGljLiAgQ29yZSBjaGFuZ2VzIG1vcmUgZnJlcXVlbnRseSAoaS5lLiwgaXMgbGVzcyBzdGFibGUpIHRoYW4gQmFzZS5cblxuICAgIFNvbWUgbW9kdWxlcyBhcmUgbWVyZSBleHRlbnNpb25zIG9mIHRoZWlyIGNvdW50ZXJwYXJ0cyBpbiBCYXNlLCB1c3VhbGx5IGFkZGluZyBnZW5lcmljXG4gICAgZnVuY3Rpb25hbGl0eSBieSBpbmNsdWRpbmcgZnVuY3RvcnMgdGhhdCBtYWtlIHRoZW0gYmluYWJsZSwgY29tcGFyYWJsZSwgc2V4cGFibGUsXG4gICAgYmxpdGFibGUsIGV0Yy4gIFRoZSBidWxrIG9mIENvcmUsIHRob3VnaCwgaXMgbW9kdWxlcyBwcm92aWRpbmcgZW50aXJlbHkgbmV3XG4gICAgZnVuY3Rpb25hbGl0eS4gKilcblxub3BlbiEgSW1wb3J0XG5cblxubW9kdWxlIEFwcGxpY2F0aXZlID0gQXBwbGljYXRpdmVcbm1vZHVsZSBBcmcgPSBBcmdcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5tb2R1bGUgQXZsdHJlZSA9IEF2bHRyZWVcbm1vZHVsZSBCYWNrdHJhY2UgPSBCYWNrdHJhY2Vcbm1vZHVsZSBCYWcgPSBCYWdcbm1vZHVsZSBCaWdidWZmZXIgPSBCaWdidWZmZXJcbm1vZHVsZSBCaWdzdHJpbmcgPSBCaWdzdHJpbmdcbm1vZHVsZSBCaWdzdWJzdHJpbmcgPSBCaWdzdWJzdHJpbmdcbm1vZHVsZSBCaW5fcHJvdCA9IENvcmVfYmluX3Byb3Rcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxubW9kdWxlIEJpbmFyeV9zZWFyY2ggPSBCaW5hcnlfc2VhcmNoXG5tb2R1bGUgQmluYXJ5X3NlYXJjaGFibGUgPSBCaW5hcnlfc2VhcmNoYWJsZVxubW9kdWxlIEJsYW5nID0gQmxhbmdcbm1vZHVsZSBCbGl0ID0gQmxpdFxubW9kdWxlIEJvb2wgPSBCb29sXG5tb2R1bGUgQm91bmRlZF9pbmRleCA9IEJvdW5kZWRfaW5kZXhcbm1vZHVsZSBCdWZmZXIgPSBCYXNlLkJ1ZmZlclxubW9kdWxlIEJ5dGVfdW5pdHMgPSBCeXRlX3VuaXRzXG5tb2R1bGUgQnl0ZXMgPSBCeXRlc1xubW9kdWxlIENhbWwgPSBDYW1sIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMy0wMV0gdXNlIFN0ZGxpYiBpbnN0ZWFkIG9mIENhbWxcIl1cbm1vZHVsZSBDaGFyID0gQ2hhclxubW9kdWxlIENvbW1hbmQgPSBDb21tYW5kX2ludGVybmFsXG5tb2R1bGUgQ29tcGFyYWJsZSA9IENvbXBhcmFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvclxubW9kdWxlIENvbXBhcmlzb25zID0gQ29tcGFyaXNvbnNcbm1vZHVsZSBDb250YWluZXIgPSBDb250YWluZXJcbm1vZHVsZSBDb250YWluZXJfaW50ZiA9IENvbnRhaW5lcl9pbnRmXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IENvbnRpbnVlX29yX3N0b3BcblxubW9kdWxlIENvcmVfa2VybmVsX3N0YWJsZSA9IFN0YWJsZVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA1XSBVc2UgW0NvcmVfc3RhYmxlXSAtLSBbQ29yZV9rZXJuZWxdIHdhcyByZW5hbWVkIGFzIFtDb3JlXVwiXVxuXG5tb2R1bGUgQ29yZV9zdGFibGUgPSBTdGFibGVcbm1vZHVsZSBEYXRlID0gRGF0ZVxubW9kdWxlIERheV9vZl93ZWVrID0gRGF5X29mX3dlZWtcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnXG5tb2R1bGUgRGVxdWUgPSBEZXF1ZVxubW9kdWxlIERlcml2aW5nX2hhc2ggPSBEZXJpdmluZ19oYXNoXG5tb2R1bGUgRGlnZXN0ID0gTWQ1IFtAQG9jYW1sLmRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNy0wNV0gVXNlIE1kNSBpbnN0ZWFkLlwiXVxubW9kdWxlIERvdWJseV9saW5rZWQgPSBEb3VibHlfbGlua2VkXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyXG5tb2R1bGUgRXBoZW1lcm9uID0gU3RkbGliLkVwaGVtZXJvblxubW9kdWxlIEVxdWFsID0gRXF1YWxcbm1vZHVsZSBFcnJvciA9IEVycm9yXG5tb2R1bGUgRXhuID0gQmFzZS5FeG5cbm1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWcgPSBFeHBlY3RfdGVzdF9jb25maWdcbm1vZHVsZSBGZGVxdWUgPSBGZGVxdWVcbm1vZHVsZSBGaWVsZCA9IEZpZWxkXG5tb2R1bGUgRmlsZW5hbWUgPSBGaWxlbmFtZVxubW9kdWxlIEZsb2F0ID0gRmxvYXRcbm1vZHVsZSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24gPSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb25cbm1vZHVsZSBGbG9hdGFibGUgPSBGbG9hdGFibGVcbm1vZHVsZSBGbiA9IEZuXG5tb2R1bGUgRm9ybWF0dGVyID0gRm9ybWF0dGVyXG5tb2R1bGUgRnF1ZXVlID0gRnF1ZXVlXG5tb2R1bGUgR2MgPSBHY1xubW9kdWxlIEhhc2ggPSBIYXNoXG5tb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWVcbm1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0XG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZVxubW9kdWxlIEhhc2h0YmwgPSBIYXNodGJsXG5tb2R1bGUgSGFzaHRibF9pbnRmID0gSGFzaHRibF9pbnRmXG5tb2R1bGUgSGVhcF9ibG9jayA9IEhlYXBfYmxvY2tcbm1vZHVsZSBIZXhkdW1wID0gSGV4ZHVtcFxubW9kdWxlIEhleGR1bXBfaW50ZiA9IEhleGR1bXBfaW50ZlxubW9kdWxlIEhvc3RfYW5kX3BvcnQgPSBIb3N0X2FuZF9wb3J0XG5tb2R1bGUgSWRlbnRpZmlhYmxlID0gSWRlbnRpZmlhYmxlXG5tb2R1bGUgSW1tZWRpYXRlX29wdGlvbiA9IEltbWVkaWF0ZV9vcHRpb25cbm1vZHVsZSBJbW1lZGlhdGVfb3B0aW9uX2ludGYgPSBJbW1lZGlhdGVfb3B0aW9uX2ludGZcbm1vZHVsZSBJbl9jaGFubmVsID0gSW5fY2hhbm5lbFxubW9kdWxlIEluZGV4ZWRfY29udGFpbmVyID0gSW5kZXhlZF9jb250YWluZXJcbm1vZHVsZSBJbmZvID0gSW5mb1xubW9kdWxlIEludCA9IEludFxubW9kdWxlIEludDMyID0gSW50MzJcbm1vZHVsZSBJbnQ2MyA9IEludDYzXG5tb2R1bGUgSW50NjQgPSBJbnQ2NFxubW9kdWxlIEludF9jb252ZXJzaW9ucyA9IEludF9jb252ZXJzaW9uc1xubW9kdWxlIEludF9pbnRmID0gSW50X2ludGZcbm1vZHVsZSBJbnRfbWF0aCA9IEludF9tYXRoXG5tb2R1bGUgSW50YWJsZSA9IEludGFibGVcbm1vZHVsZSBJbnRlcmZhY2VzID0gSW50ZXJmYWNlc1xubW9kdWxlIEludmFyaWFudCA9IEludmFyaWFudFxubW9kdWxlIExhenkgPSBMYXp5XG5tb2R1bGUgTGlua2VkX3F1ZXVlID0gTGlua2VkX3F1ZXVlXG5tb2R1bGUgTGlzdCA9IExpc3Rcbm1vZHVsZSBNYXAgPSBNYXBcbm1vZHVsZSBNYXBfaW50ZiA9IE1hcF9pbnRmXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZFxubW9kdWxlIE1kNSA9IE1kNVxubW9kdWxlIE1lbW8gPSBNZW1vXG5tb2R1bGUgTW9uYWQgPSBNb25hZFxubW9kdWxlIE1vbnRoID0gTW9udGhcblxubW9kdWxlIE11dGV4ID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE5LTAyXSBVc2UgW0Vycm9yX2NoZWNraW5nX211dGV4XSBvciBbQ2FtbF90aHJlYWRzLk11dGV4XVwiXVxuXG5tb2R1bGUgTmF0aXZlaW50ID0gTmF0aXZlaW50XG5tb2R1bGUgTm9fcG9seW1vcnBoaWNfY29tcGFyZSA9IE5vX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBOb3RoaW5nID0gTm90aGluZ1xubW9kdWxlIE9ubHlfaW5fdGVzdCA9IE9ubHlfaW5fdGVzdFxubW9kdWxlIE9wdGlvbiA9IE9wdGlvblxubW9kdWxlIE9wdGlvbl9hcnJheSA9IE9wdGlvbl9hcnJheVxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IE9wdGlvbmFsX3N5bnRheFxubW9kdWxlIE9wdGlvbmFsX3N5bnRheF9pbnRmID0gT3B0aW9uYWxfc3ludGF4X2ludGZcbm1vZHVsZSBPcl9lcnJvciA9IE9yX2Vycm9yXG5tb2R1bGUgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbiA9IE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb25cbm1vZHVsZSBPcmRlcmluZyA9IE9yZGVyaW5nXG5tb2R1bGUgT3V0X2NoYW5uZWwgPSBPdXRfY2hhbm5lbFxubW9kdWxlIFBlcmNlbnQgPSBQZXJjZW50XG5tb2R1bGUgUGVybXMgPSBQZXJtc1xubW9kdWxlIFBpZCA9IFBpZFxubW9kdWxlIFBvbHkgPSBQb2x5XG5cbm1vZHVsZSBQb3Bjb3VudCA9IEJhc2UuUG9wY291bnRcbltAQHdhcm5pbmcgXCItM1wiXVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTEwXSB1c2UgW3BvcGNvdW50XSBmdW5jdGlvbnMgaW4gaW5kaXZpZHVhbCBpbnQgbW9kdWxlc1wiXVxuXG5tb2R1bGUgUHJldHR5X3ByaW50ZXIgPSBQcmV0dHlfcHJpbnRlclxubW9kdWxlIFByaW50ZXhjID0gUHJpbnRleGNcbm1vZHVsZSBQcmludGYgPSBQcmludGZcbm1vZHVsZSBRdWV1ZSA9IFF1ZXVlXG5tb2R1bGUgUXVpY2tjaGVjayA9IFF1aWNrY2hlY2tcbm1vZHVsZSBRdWlja2NoZWNrX2ludGYgPSBRdWlja2NoZWNrX2ludGZcbm1vZHVsZSBRdWlja2NoZWNrYWJsZSA9IFF1aWNrY2hlY2thYmxlXG5tb2R1bGUgUmFuZG9tID0gQmFzZS5SYW5kb21cbm1vZHVsZSBSZWYgPSBSZWZcbm1vZHVsZSBSZXN1bHQgPSBSZXN1bHRcbm1vZHVsZSBSb2J1c3RseV9jb21wYXJhYmxlID0gUm9idXN0bHlfY29tcGFyYWJsZVxubW9kdWxlIFNlcXVlbmNlID0gU2VxdWVuY2Vcbm1vZHVsZSBTZXQgPSBTZXRcbm1vZHVsZSBTZXRfaW50ZiA9IFNldF9pbnRmXG5tb2R1bGUgU2V0X29uY2UgPSBTZXRfb25jZVxubW9kdWxlIFNleHBfbWF5YmUgPSBTZXhwLlNleHBfbWF5YmVcblxubW9kdWxlIFNleHAgPSBTZXhwXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZVxubW9kdWxlIFNpZ24gPSBTaWduXG5tb2R1bGUgU2lnbmFsID0gU2lnbmFsXG5tb2R1bGUgU2lnbl9vcl9uYW4gPSBTaWduX29yX25hblxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb25cbm1vZHVsZSBTcGxpdHRhYmxlX3JhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tXG5tb2R1bGUgU3RhYmxlX2NvbXBhcmFibGUgPSBTdGFibGVfY29tcGFyYWJsZVxubW9kdWxlIFN0YWJsZV91bml0X3Rlc3QgPSBTdGFibGVfdW5pdF90ZXN0XG5tb2R1bGUgU3RhY2sgPSBTdGFja1xubW9kdWxlIFN0YWdlZCA9IEJhc2UuU3RhZ2VkXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nX2lkID0gU3RyaW5nX2lkXG5tb2R1bGUgU3RyaW5nYWJsZSA9IFN0cmluZ2FibGVcbm1vZHVsZSBTdWJzdHJpbmcgPSBTdWJzdHJpbmdcbm1vZHVsZSBTdWJzdHJpbmdfaW50ZiA9IFN1YnN0cmluZ19pbnRmXG5tb2R1bGUgU3lzID0gQ29yZV9zeXNcblxubW9kdWxlIFRocmVhZCA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNF0gVXNlIFtDb3JlX3RocmVhZF0gb3IgW0NhbWxfdGhyZWFkcy5UaHJlYWRdXCJdXG5cbm1vZHVsZSBUaW1lID0gVGltZV9mbG9hdFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTExXSBVc2UgW1RpbWVfZmxvYXRdIG9yIFtUaW1lX2Zsb2F0X3VuaXhdIGluc3RlYWRcIl1cblxubW9kdWxlIFRpbWVfZmxvYXQgPSBUaW1lX2Zsb2F0XG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNcbm1vZHVsZSBUdXBsZSA9IFR1cGxlXG5tb2R1bGUgVHVwbGUyID0gVHVwbGUuVDJcbm1vZHVsZSBUdXBsZTMgPSBUdXBsZS5UM1xubW9kdWxlIFR5cGVfZXF1YWwgPSBUeXBlX2VxdWFsXG5tb2R1bGUgVHlwZV9pbW1lZGlhY3kgPSBUeXBlX2ltbWVkaWFjeVxubW9kdWxlIFVjaGFyID0gVWNoYXJcbm1vZHVsZSBVbmlmb3JtX2FycmF5ID0gVW5pZm9ybV9hcnJheVxubW9kdWxlIFVuaW9uX2ZpbmQgPSBVbmlvbl9maW5kXG5tb2R1bGUgVW5pcXVlX2lkID0gVW5pcXVlX2lkXG5tb2R1bGUgVW5pdCA9IFVuaXRcbm1vZHVsZSBVbml0X29mX3RpbWUgPSBVbml0X29mX3RpbWVcbm1vZHVsZSBVbml2X21hcCA9IFVuaXZfbWFwXG5cbm1vZHVsZSBVbml4ID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZFxuICBcIltzaW5jZSAyMDIwLTAzXSBDb3JlIHNoYWRvd3MgVW5peC4gVXNlIENvcmVfdW5peCwgd2hpY2ggb3ZlcnJpZGVzIHNvbWUgb2YgVW5peCdzIFxcXG4gICBiZWhhdmlvci4gSWYgbmVjZXNzYXJ5LCBVbml4IGlzIGF2YWlsYWJsZSBhbmQgdW5zaGFkb3dlZCBhcyBDYW1sX3VuaXguXCJdXG5cbm1vZHVsZSBWYWxpZGF0ZSA9IFZhbGlkYXRlXG5tb2R1bGUgVmFsaWRhdGVkID0gVmFsaWRhdGVkXG5tb2R1bGUgVmFyaWFudCA9IFZhcmlhbnRcbm1vZHVsZSBXZWFrID0gV2Vha1xubW9kdWxlIFdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBXb3JkX3NpemVcblxubW9kdWxlIHR5cGUgVW5pcXVlX2lkID0gVW5pcXVlX2lkLklkXG5cbmluY2x1ZGUgVCAoKiogQG9wZW4gKilcblxuaW5jbHVkZSBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgTm90X2ZvdW5kXG5cbigqKiB7MiBUb3AtbGV2ZWwgdmFsdWVzfSAqKVxuXG5leHRlcm5hbCBwaHlzX2VxdWFsIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcVwiXG5cbnR5cGUgJ2EgX21heWJlX2JvdW5kID0gJ2EgTWF5YmVfYm91bmQudCA9XG4gIHwgSW5jbCBvZiAnYVxuICB8IEV4Y2wgb2YgJ2FcbiAgfCBVbmJvdW5kZWRcblxubGV0IGFtX3J1bm5pbmdfdGVzdCA9IGFtX3J1bm5pbmdfdGVzdFxubGV0IGRvZXNfcmFpc2UgPSBFeG4uZG9lc19yYWlzZVxubGV0IHNlYyA9IFRpbWVfZmxvYXQuU3Bhbi5vZl9zZWNcbmxldCAoIF4vICkgPSBGaWxlbmFtZS5jb25jYXRcblxuKCoqIFdlIHBlcmZvcm0gdGhlc2Ugc2lkZSBlZmZlY3RzIGhlcmUgYmVjYXVzZSB3ZSB3YW50IHRoZW0gdG8gcnVuIGZvciBhbnkgY29kZSB0aGF0IHVzZXNcbiAgICBbQ29yZV0uICBJZiB0aGlzIHdlcmUgaW4gYW5vdGhlciBtb2R1bGUgaW4gW0NvcmVdIHRoYXQgd2FzIG5vdCB1c2VkIGluIHNvbWUgcHJvZ3JhbSxcbiAgICB0aGVuIHRoZSBzaWRlIGVmZmVjdHMgbWlnaHQgbm90IGJlIHJ1biBpbiB0aGF0IHByb2dyYW0uICBUaGlzIHdpbGwgcnVuIGFzIGxvbmcgYXMgdGhlXG4gICAgcHJvZ3JhbSByZWZlcnMgdG8gYXQgbGVhc3Qgb25lIHZhbHVlIGRpcmVjdGx5IGluIENvcmU7IHJlZmVycmluZyB0byB2YWx1ZXMgaW5cbiAgICBbQ29yZS5Cb29sXSwgZm9yIGV4YW1wbGUsIGlzIG5vdCBzdWZmaWNpZW50LiAqKVxubGV0ICgpID0gRXhuLmluaXRpYWxpemVfbW9kdWxlICgpXG5cbigqKiBUbyBiZSB1c2VkIGluIGltcGxlbWVudGluZyBDb3JlLCBidXQgbm90IGJ5IGVuZCB1c2Vycy4gKilcbm1vZHVsZSBDb3JlX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIERpZ2l0X3N0cmluZ19oZWxwZXJzID0gRGlnaXRfc3RyaW5nX2hlbHBlcnNcbiAgbW9kdWxlIFRpbWVfem9uZSA9IFpvbmVcbiAgbW9kdWxlIE9mZGF5X2hlbHBlcnMgPSBPZmRheV9oZWxwZXJzXG4gIG1vZHVsZSBTcGFuX2Zsb2F0ID0gU3Bhbl9mbG9hdFxuXG4gIG1vZHVsZSBCaWdidWZmZXJfaW50ZXJuYWwgPSBCaWdidWZmZXJfaW50ZXJuYWxcbiAgbW9kdWxlIFN0YWJsZV9pbnRlcm5hbCA9IFN0YWJsZV9pbnRlcm5hbFxuICBtb2R1bGUgU3RkX2ludGVybmFsID0gU3RkX2ludGVybmFsXG5cbiAgbW9kdWxlIFRpbWVfbnNfYWx0ZXJuYXRlX3NleHAgPSBUaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5lbmRcblxubW9kdWxlIENvcmVfa2VybmVsX3ByaXZhdGUgPSBDb3JlX3ByaXZhdGVcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNV0gVXNlIFtDb3JlX3ByaXZhdGVdIC0tIFtDb3JlX2tlcm5lbF0gd2FzIHJlbmFtZWQgYXMgW0NvcmVdXCJdXG4iLCJpbmNsdWRlIENvbW1hbmQuU2hhcGVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuISBTdGFibGVfaW50ZXJuYWxcbiAgb3BlbiEgUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cblxuICBtb2R1bGUgQW5vbnMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgR3JhbW1hciA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ29tbWFuZC5TaGFwZS5TdGFibGUuQW5vbnMuR3JhbW1hci5WMVxuXG4gICAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkFub25zLkdyYW1tYXIuVjEudCA9XG4gICAgICAgICAgfCBaZXJvXG4gICAgICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICAgICAgfCBNYW55IG9mIHRcbiAgICAgICAgICB8IE1heWJlIG9mIHRcbiAgICAgICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgICAgWyVleHBlY3Qge3wgYTE3ZmQzNGVjMjEzZTUwOGRiNDUwZjY0NjlmN2ZlOTkgfH1dXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5Bbm9ucy5WMlxuXG4gICAgICB0eXBlIHQgPSBDb21tYW5kLlNoYXBlLlN0YWJsZS5Bbm9ucy5WMi50ID1cbiAgICAgICAgfCBVc2FnZSBvZiBzdHJpbmdcbiAgICAgICAgfCBHcmFtbWFyIG9mIEdyYW1tYXIuVjEudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMDgxZDllYzE2NzkwM2Y4ZjhjNDljYmY4ZTNmYjNhNjYgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRmxhZ19pbmZvID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkZsYWdfaW5mby5WMVxuXG4gICAgICB0eXBlIHQgPSBDb21tYW5kLlNoYXBlLlN0YWJsZS5GbGFnX2luZm8uVjEudCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IGRvYyA6IHN0cmluZ1xuICAgICAgICA7IGFsaWFzZXMgOiBzdHJpbmcgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCBiZDhkNmZiN2E2NjJkMmMwYjVlMGQyMDI2YzZkMmQyMSB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBCYXNlX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQ29tbWFuZC5TaGFwZS5TdGFibGUuQmFzZV9pbmZvLlYyXG5cbiAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkJhc2VfaW5mby5WMi50ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IGFub25zIDogQW5vbnMuVjIudFxuICAgICAgICA7IGZsYWdzIDogRmxhZ19pbmZvLlYxLnQgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA4ZmFhYzFlOGQ5ZGViMGJhYWE1NmFjOGViZjg1YjQ5OCB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBHcm91cF9pbmZvID0gc3RydWN0XG4gICAgdHlwZSBhID0gRHVtbXlfdHlwZV9iZWNhdXNlX3dlX2Nhbm5vdF9kaWdlc3RfdHlwZV9jb25zdHJ1Y3RvcnNfb25seV9jb25jcmV0ZV90eXBlc1xuICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5Hcm91cF9pbmZvLlYyXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIENvbW1hbmQuU2hhcGUuU3RhYmxlLkdyb3VwX2luZm8uVjIudCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgTGlzdC5TdGFibGUuVjEudCBMYXp5LlN0YWJsZS5WMS50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogYSB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMmNjM2VlYjU4ZDEyZDhmZTQ0MDAwMDllNTkyZDc4MjcgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRXhlY19pbmZvID0gc3RydWN0XG4gICAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkV4ZWNfaW5mby5WM1xuXG4gICAgICB0eXBlIHQgPSBDb21tYW5kLlNoYXBlLlN0YWJsZS5FeGVjX2luZm8uVjMudCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgICAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IGMwYzgyNTZlOTIzOGNkZDhmMmVjMWY4Nzg1ZTAyYWUwIHx9XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEZ1bGx5X2ZvcmNlZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5GdWxseV9mb3JjZWQuVjFcblxuICAgICAgdHlwZSB0ID0gQ29tbWFuZC5TaGFwZS5TdGFibGUuRnVsbHlfZm9yY2VkLlYxLnQgPVxuICAgICAgICB8IEJhc2ljIG9mIEJhc2VfaW5mby5WMi50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYyLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMy50ICogdFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgOTgxMTU0ZWYzOTE5NDM3YzZjODIyNjE5ODgyODQxZDQgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBUb2tlbiA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgSWRlbnRcbiAgICB8IEZ1bmN0aW9uXG4gICAgfCBBdGtleXdvcmRcbiAgICB8IEhhc2hcbiAgICB8IFN0cmluZ1xuICAgIHwgVXJpXG4gICAgfCBEZWxpbVxuICAgIHwgTnVtYmVyXG4gICAgfCBQZXJjZW50YWdlXG4gICAgfCBEaW1lbnNpb25cbiAgICB8IFdoaXRlX3NwYWNlXG4gICAgfCBDb2xvblxuICAgIHwgU2VtaV9jb2xvblxuICAgIHwgQ29tbWFcbiAgICB8IExicmFja2V0XG4gICAgfCBSYnJhY2tldFxuICAgIHwgTHBhcmVuXG4gICAgfCBScGFyZW5cbiAgICB8IExjdXJseVxuICAgIHwgUmN1cmx5XG4gICAgfCBDb21tZW50XG4gICAgfCBFb2ZcbiAgICB8IEVycm9yXG4gIFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmVdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuZW5kXG5cbnR5cGUgdCA9XG4gIHsgcyA6IHN0cmluZ1xuICA7IG11dGFibGUgb2ZmIDogaW50XG4gIDsgKCogc3RhcnQgb2YgdGhlIGN1cnJlbnQgdG9rZW4gKilcbiAgICBtdXRhYmxlIGxlbiA6IGludFxuICA7ICgqIGxlbmd0aCBvZiB0aGUgY3VycmVudCB0b2tlbiAqKVxuICAgIG11dGFibGUgY3VycmVudCA6IFRva2VuLnRcbiAgfVxuXG50eXBlIG1hcmsgPSBNYXJrIG9mIGludCBbQEB1bmJveGVkXVxuXG5sZXQgbWFyayB0ID0gTWFyayB0LmxlblxubGV0IHNvdXJjZSB0ID0gdC5zXG5sZXQgbmV4dF9wb3MgdCA9IHQub2ZmICsgdC5sZW5cbmxldCBpc19uZXh0X2VvZiB0ID0gbmV4dF9wb3MgdCA+PSBTdHJpbmcubGVuZ3RoIHQuc1xubGV0IG5leHRfY2hhciB0ID0gdC5zLltuZXh0X3BvcyB0XVxubGV0IHJlc2V0IHQgKE1hcmsgdikgPSB0LmxlbiA8LSB2XG5sZXQgY29uc3VtZV8xIHQgPSB0LmxlbiA8LSB0LmxlbiArIDFcbmxldCBjb25zdW1lX24gdCBuID0gdC5sZW4gPC0gdC5sZW4gKyBuXG5cbmxldCBvbmVfY2hhcl90b2tlbiB0IHRvayA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgY29uc3VtZV8xIHQ7XG4gIHQuY3VycmVudCA8LSB0b2tcbjs7XG5cbmV4Y2VwdGlvbiBFcnJvcl9oYXBwZW5lZFxuXG5sZXQgZXJyb3IgdCA9XG4gIHQuY3VycmVudCA8LSBFcnJvcjtcbiAgcmFpc2UgRXJyb3JfaGFwcGVuZWRcbjs7XG5cbmxldCBhY2NlcHQgdCBmID1cbiAgaWYgKG5vdCAoaXNfbmV4dF9lb2YgdCkpICYmIGYgKG5leHRfY2hhciB0KVxuICB0aGVuIChcbiAgICBjb25zdW1lXzEgdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG47O1xuXG5sZXQgYWNjZXB0X2NoYXIgdCBjaCA9IGFjY2VwdCB0IChDaGFyLmVxdWFsIGNoKVxuXG5sZXQgYWNjZXB0X3N0cmluZyB0IHN0ciA9XG4gIGlmIFN0cmluZy5sZW5ndGggc3RyID0gMFxuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IHBvcyA9IG5leHRfcG9zIHQgaW5cbiAgICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgaWYgcG9zICsgc3RyX2xlbiA+IFN0cmluZy5sZW5ndGggdC5zXG4gICAgdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgU3RyaW5nLmlzX3N1YnN0cmluZ19hdCB0LnMgfnBvcyB+c3Vic3RyaW5nOnN0clxuICAgIHRoZW4gKFxuICAgICAgY29uc3VtZV9uIHQgc3RyX2xlbjtcbiAgICAgIHRydWUpXG4gICAgZWxzZSBmYWxzZSlcbjs7XG5cbmxldCBleHBlY3QgdCBmID0gaWYgYWNjZXB0IHQgZiB0aGVuICgpIGVsc2UgZXJyb3IgdFxubGV0IGV4cGVjdF9jaGFyIHQgY2ggPSBleHBlY3QgdCAoQ2hhci5lcXVhbCBjaClcblxubGV0IG1hbnkgdCBmID1cbiAgd2hpbGUgKG5vdCAoaXNfbmV4dF9lb2YgdCkpICYmIGYgKG5leHRfY2hhciB0KSBkb1xuICAgIGNvbnN1bWVfMSB0XG4gIGRvbmVcbjs7XG5cbmxldCBtYW55MSB0IGYgPVxuICBleHBlY3QgdCBmO1xuICBtYW55IHQgZlxuOztcblxubGV0IHBsdXNfb3JfbWludXMgPSBmdW5jdGlvblxuICB8ICctJyB8ICcrJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IG5tc3RhcnQgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJ18nIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgbm1jaGFyID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICdfJyB8ICcwJyAuLiAnOScgfCAnLScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpZGVudCB0ID1cbiAgaWYgYWNjZXB0X2NoYXIgdCAnLSdcbiAgdGhlblxuICAgIGlmIGFjY2VwdF9jaGFyIHQgJy0nXG4gICAgdGhlbiBtYW55IHQgbm1jaGFyXG4gICAgZWxzZSAoXG4gICAgICBleHBlY3QgdCBubXN0YXJ0O1xuICAgICAgbWFueSB0IG5tY2hhcilcbiAgZWxzZSAoXG4gICAgZXhwZWN0IHQgbm1zdGFydDtcbiAgICBtYW55IHQgbm1jaGFyKVxuOztcblxubGV0IGlkZW50X29yX2Z1bmN0aW9uIHQgPVxuICBpZGVudCB0O1xuICBpZiBhY2NlcHRfY2hhciB0ICcoJyB0aGVuIHQuY3VycmVudCA8LSBGdW5jdGlvbiBlbHNlIHQuY3VycmVudCA8LSBJZGVudFxuOztcblxubGV0IGlzX3doaXRlc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxuJyB8ICdcXHgwYycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBxdW90ZWRfc3RyaW5nJyB0IH5xdW90ZSA9XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpIHF1b3RlKTtcbiAgY29uc3VtZV8xIHQ7XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWFueSB0IChmdW5jdGlvblxuICAgICAgfCAnXFxuJyB8ICdcXHInIHwgJ1xceDBjJyB8ICdcXFxcJyAtPiBmYWxzZVxuICAgICAgfCBjIHdoZW4gQ2hhci5lcXVhbCBjIHF1b3RlIC0+IGZhbHNlXG4gICAgICB8IF8gLT4gdHJ1ZSk7XG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnXFxcXCdcbiAgICB0aGVuXG4gICAgICBpZiBhY2NlcHRfY2hhciB0IHF1b3RlXG4gICAgICB0aGVuIGxvb3AgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBuZXh0X2NoYXIgdCB3aXRoXG4gICAgICAgIHwgJ1xcbicgfCAnXFx4MGMnIC0+XG4gICAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICAgbG9vcCAoKVxuICAgICAgICB8ICdcXHInIC0+XG4gICAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICAgaWdub3JlIChhY2NlcHRfY2hhciB0ICdcXG4nIDogYm9vbCk7XG4gICAgICAgICAgbG9vcCAoKVxuICAgICAgICB8IF9jIC0+XG4gICAgICAgICAgKCogSGFuZGxlIHRoZSBcImVzY2FwZVwiIHJ1bGU6XG4gICAgICAgICAgICAge3ZcbiAgICAgICAgICAgICAgICB1bmljb2RlOiBcXFxcWzAtOWEtZl17MSw2fShcXHJcXG58WyBcXG5cXHJcXHRcXGZdKT9cbiAgICAgICAgICAgICAgICBlc2NhcGUgOiB7dW5pY29kZX18XFxcXFteXFxuXFxyXFxmMC05YS1mXVxuICAgICAgICAgICAgICB2fVxuICAgICAgICAgICopXG4gICAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKTtcbiAgZXhwZWN0X2NoYXIgdCBxdW90ZVxuOztcblxubGV0IHN0YXJ0X251bSB0ID1cbiAgbGV0IGN1ciA9IG1hcmsgdCBpblxuICBsZXQgYiA9XG4gICAgaWdub3JlIChhY2NlcHQgdCBwbHVzX29yX21pbnVzIDogYm9vbCk7XG4gICAgaWdub3JlIChhY2NlcHRfY2hhciB0ICcuJyA6IGJvb2wpO1xuICAgIGFjY2VwdCB0IENoYXIuaXNfZGlnaXRcbiAgaW5cbiAgcmVzZXQgdCBjdXI7XG4gIGJcbjs7XG5cbmxldCBzdGFydF9pZGVudCB+cHJlZml4IHQgPVxuICBsZXQgY3VyID0gbWFyayB0IGluXG4gIGxldCBiID1cbiAgICBhY2NlcHRfc3RyaW5nIHQgcHJlZml4XG4gICAgJiZcbiAgICBpZiBhY2NlcHRfY2hhciB0ICctJyB0aGVuIGFjY2VwdF9jaGFyIHQgJy0nIHx8IGFjY2VwdCB0IG5tc3RhcnQgZWxzZSBhY2NlcHQgdCBubXN0YXJ0XG4gIGluXG4gIHJlc2V0IHQgY3VyO1xuICBiXG47O1xuXG5sZXQgcXVvdGVkX3N0cmluZyB0IH5xdW90ZSA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgcXVvdGVkX3N0cmluZycgdCB+cXVvdGU7XG4gIHQuY3VycmVudCA8LSBTdHJpbmdcbjs7XG5cbmxldCBleHBvbmVudGlhbF9wYXJ0IHQgPVxuICBsZXQgbWFyayA9IG1hcmsgdCBpblxuICBpZiBhY2NlcHQgdCAoZnVuY3Rpb25cbiAgICB8ICdlJyB8ICdFJyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlKVxuICB0aGVuXG4gICAgaWYgYWNjZXB0IHQgcGx1c19vcl9taW51c1xuICAgIHRoZW4gbWFueTEgdCBDaGFyLmlzX2RpZ2l0XG4gICAgZWxzZSBpZiBhY2NlcHQgdCBDaGFyLmlzX2RpZ2l0XG4gICAgdGhlbiBtYW55IHQgQ2hhci5pc19kaWdpdFxuICAgIGVsc2VcbiAgICAgICgqIEJhY2t0cmFjayBpZiB0aGVyZSBhcmUgbm8gZGlnaXRzIG9yIHNpZ25zIGFmdGVyIHRoZSAnZScgYmVjYXVzZVxuICAgICAgICAgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgJ2UnIHdhcyBhY3R1YWxseSBhIHBhcnQgb2Ygc29tZXRoaW5nIGVsc2UuIEZvclxuICAgICAgICAgZXhhbXBsZSwgdGhlICdlJyBjb3VsZCBiZSBwYXJ0IG9mIGFuICdlbScgb3IgJ2VuJyBkaW1lbnNpb24gaW5zdGVhZFxuICAgICAgICAgb2YgYmVnaW5uaW5nIHRoZSBleHBvbmVudGlhbCBwYXJ0IG9mIGEgc2NpZW50aWZpYyBub3RhdGlvbiBudW1iZXIuXG5cbiAgICAgICAgIEV4YW1wbGU6IDEuMmUzIGlzIHNjaWVudGlmaWMgbm90YXRpb24sIGJ1dCAxLjJlbSBpcyBhIG51bWJlciB3aXRoIGFcbiAgICAgICAgIGRpbWVuc2lvbi4gKilcbiAgICAgIHJlc2V0IHQgbWFya1xuOztcblxubGV0IG51bSB0ID1cbiAgaWdub3JlIChhY2NlcHQgdCBwbHVzX29yX21pbnVzIDogYm9vbCk7XG4gIGlmIGFjY2VwdF9jaGFyIHQgJy4nXG4gIHRoZW4gbWFueTEgdCBDaGFyLmlzX2RpZ2l0XG4gIGVsc2UgKFxuICAgIG1hbnkxIHQgQ2hhci5pc19kaWdpdDtcbiAgICBpZiBhY2NlcHRfY2hhciB0ICcuJyB0aGVuIG1hbnkxIHQgQ2hhci5pc19kaWdpdCk7XG4gIGV4cG9uZW50aWFsX3BhcnQgdFxuOztcblxubGV0IG51bWJlcl9vcl9wZXJjZW50YWdlX29yX2RpbWVuc2lvbiB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBudW0gdDtcbiAgaWYgYWNjZXB0X2NoYXIgdCAnJSdcbiAgdGhlbiB0LmN1cnJlbnQgPC0gUGVyY2VudGFnZVxuICBlbHNlIGlmIHN0YXJ0X2lkZW50IH5wcmVmaXg6XCJcIiB0XG4gIHRoZW4gKFxuICAgIGlkZW50IHQ7XG4gICAgdC5jdXJyZW50IDwtIERpbWVuc2lvbilcbiAgZWxzZSB0LmN1cnJlbnQgPC0gTnVtYmVyXG47O1xuXG5sZXQgaGFzaF9vcl9kZWxpbSB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBhc3NlcnQgKENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnIycpO1xuICBjb25zdW1lXzEgdDtcbiAgaWYgYWNjZXB0IHQgbm1jaGFyXG4gIHRoZW4gKFxuICAgIG1hbnkxIHQgbm1jaGFyO1xuICAgIHQuY3VycmVudCA8LSBIYXNoKVxuICBlbHNlIHQuY3VycmVudCA8LSBEZWxpbVxuOztcblxubGV0IGF0a2V5d29yZCB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBhc3NlcnQgKENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnQCcpO1xuICBjb25zdW1lXzEgdDtcbiAgaWRlbnQgdDtcbiAgdC5jdXJyZW50IDwtIEF0a2V5d29yZFxuOztcblxubGV0IHVyaV9vcl9pZGVudF9vcl9mdW5jdGlvbiB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBhc3NlcnQgKENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAndScpO1xuICBpZiBhY2NlcHRfc3RyaW5nIHQgXCJ1cmwoXCJcbiAgdGhlbiAoXG4gICAgbGV0IG0gPSBtYXJrIHQgaW5cbiAgICBtYW55IHQgaXNfd2hpdGVzcGFjZTtcbiAgICBpZiBDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJ1wiJyB8fCBDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJ1xcJydcbiAgICB0aGVuIChcbiAgICAgIHJlc2V0IHQgbTtcbiAgICAgIHQuY3VycmVudCA8LSBGdW5jdGlvbilcbiAgICBlbHNlIChcbiAgICAgIG1hbnkgdCAoZnVuY3Rpb25cbiAgICAgICAgfCAnKScgfCAnICcgLT4gZmFsc2VcbiAgICAgICAgfCAnXFwnJyB8ICdcIicgfCAnKCcgLT4gZXJyb3IgdFxuICAgICAgICB8IGMgd2hlbiBDaGFyLmlzX3ByaW50IGMgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZXJyb3IgdCk7XG4gICAgICBtYW55IHQgaXNfd2hpdGVzcGFjZTtcbiAgICAgIGV4cGVjdF9jaGFyIHQgJyknO1xuICAgICAgdC5jdXJyZW50IDwtIFVyaSkpXG4gIGVsc2UgaWRlbnRfb3JfZnVuY3Rpb24gdFxuOztcblxubGV0IGNvbW1lbnRfb3JfZGVsaW0gdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgaWYgYWNjZXB0X3N0cmluZyB0IFwiLypcIlxuICB0aGVuIChcbiAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgbWFueSB0IChmdW5jdGlvblxuICAgICAgICB8ICcqJyAtPiBmYWxzZVxuICAgICAgICB8IF8gLT4gdHJ1ZSk7XG4gICAgICBpZiBhY2NlcHRfc3RyaW5nIHQgXCIqL1wiXG4gICAgICB0aGVuIHQuY3VycmVudCA8LSBDb21tZW50XG4gICAgICBlbHNlIGlmIGFjY2VwdF9jaGFyIHQgJyonXG4gICAgICB0aGVuIGxvb3AgKClcbiAgICAgIGVsc2UgZXJyb3IgdFxuICAgIGluXG4gICAgbG9vcCAoKSlcbiAgZWxzZSAoXG4gICAgZXhwZWN0X2NoYXIgdCAnLyc7XG4gICAgdC5jdXJyZW50IDwtIERlbGltKVxuOztcblxubGV0IG5leHQgdCA9XG4gIGxldCBuZXdfb2ZmID0gbmV4dF9wb3MgdCBpblxuICB0Lm9mZiA8LSBuZXdfb2ZmO1xuICB0LmxlbiA8LSAwO1xuICBpZiBpc19uZXh0X2VvZiB0XG4gIHRoZW4gdC5jdXJyZW50IDwtIEVvZlxuICBlbHNlIChcbiAgICBtYXRjaCBuZXh0X2NoYXIgdCB3aXRoXG4gICAgfCBjIHdoZW4gaXNfd2hpdGVzcGFjZSBjIC0+XG4gICAgICBtYW55IHQgaXNfd2hpdGVzcGFjZTtcbiAgICAgIHQuY3VycmVudCA8LSBXaGl0ZV9zcGFjZVxuICAgIHwgJzonIC0+IG9uZV9jaGFyX3Rva2VuIHQgQ29sb25cbiAgICB8ICc7JyAtPiBvbmVfY2hhcl90b2tlbiB0IFNlbWlfY29sb25cbiAgICB8ICd7JyAtPiBvbmVfY2hhcl90b2tlbiB0IExjdXJseVxuICAgIHwgJ30nIC0+IG9uZV9jaGFyX3Rva2VuIHQgUmN1cmx5XG4gICAgfCAnWycgLT4gb25lX2NoYXJfdG9rZW4gdCBMYnJhY2tldFxuICAgIHwgJ10nIC0+IG9uZV9jaGFyX3Rva2VuIHQgUmJyYWNrZXRcbiAgICB8ICcoJyAtPiBvbmVfY2hhcl90b2tlbiB0IExwYXJlblxuICAgIHwgJyknIC0+IG9uZV9jaGFyX3Rva2VuIHQgUnBhcmVuXG4gICAgfCAnLCcgLT4gb25lX2NoYXJfdG9rZW4gdCBDb21tYVxuICAgIHwgKCdcXCcnIHwgJ1wiJykgYXMgcXVvdGUgLT4gcXVvdGVkX3N0cmluZyB0IH5xdW90ZVxuICAgIHwgKCcwJyAuLiAnOScgfCAnLicgfCAnKycgfCAnLScpIHdoZW4gc3RhcnRfbnVtIHQgLT5cbiAgICAgIG51bWJlcl9vcl9wZXJjZW50YWdlX29yX2RpbWVuc2lvbiB0XG4gICAgfCAnLycgLT4gY29tbWVudF9vcl9kZWxpbSB0XG4gICAgfCAnIycgLT4gaGFzaF9vcl9kZWxpbSB0XG4gICAgfCAnQCcgd2hlbiBzdGFydF9pZGVudCB+cHJlZml4OlwiQFwiIHQgLT4gYXRrZXl3b3JkIHRcbiAgICB8ICd1JyAtPiB1cmlfb3JfaWRlbnRfb3JfZnVuY3Rpb24gdFxuICAgIHwgXyAtPlxuICAgICAgaWYgc3RhcnRfaWRlbnQgfnByZWZpeDpcIlwiIHRcbiAgICAgIHRoZW4gaWRlbnRfb3JfZnVuY3Rpb24gdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGNvbnN1bWVfMSB0O1xuICAgICAgICAoKiB0aGlzIGlzIHdlaXJkIGJ1dCB0aGUgc3BlYyBpcyB3ZWlyZCAqKVxuICAgICAgICB0LmN1cnJlbnQgPC0gRGVsaW0pKVxuOztcblxubGV0IG5leHQgdCA9XG4gICgqIE1ha2Ugc3VyZSB3ZSBhcmUgaWRlbXBvdGVudCB3aGVuIHdlIGdldCBpbnRvIHRoZSBlcnJvciBzdGF0ZSAqKVxuICBpZiBUb2tlbi5lcXVhbCB0LmN1cnJlbnQgRXJyb3JcbiAgdGhlbiAoKVxuICBlbHNlIChcbiAgICB0cnkgbmV4dCB0IHdpdGhcbiAgICB8IEVycm9yX2hhcHBlbmVkIC0+ICgpKVxuOztcblxubGV0IGNyZWF0ZSBzID1cbiAgKCogY3VycmVudCBpcyBkdW1teSBhbmQgd2lsbCBiZSBzZXQgYnkgY2FsbCB0byBuZXh0ICopXG4gIGxldCB0ID0geyBzOyBvZmYgPSAwOyBsZW4gPSAwOyBjdXJyZW50ID0gV2hpdGVfc3BhY2UgfSBpblxuICBuZXh0IHQ7XG4gIHRcbjs7XG5cbmxldCBzbGljZSB0ID0gdC5vZmYsIHQubGVuXG5sZXQgY3VycmVudCB0ID0gdC5jdXJyZW50XG5cbmxldCBjdXJyZW50X3RleHQgdCA9XG4gIGlmIFRva2VuLmVxdWFsIHQuY3VycmVudCBFb2ZcbiAgdGhlbiBcIlwiXG4gIGVsc2UgKFxuICAgIGxldCBwb3MsIGxlbiA9IHNsaWNlIHQgaW5cbiAgICBTdHJpbmcuc3ViIHQucyB+cG9zIH5sZW4pXG47O1xuXG5sZXQgdG9fbGlzdCBzID1cbiAgbGV0IHQgPSBjcmVhdGUgcyBpblxuICBsZXQgcmVjIGxvb3AgYWNjID1cbiAgICBsZXQgc3RhcnQsIGxlbiA9IHNsaWNlIHQgaW5cbiAgICBsZXQgYWNjID0gKGN1cnJlbnQgdCwgc3RhcnQsIGxlbikgOjogYWNjIGluXG4gICAgaWYgVG9rZW4uZXF1YWwgKGN1cnJlbnQgdCkgRW9mIHx8IFRva2VuLmVxdWFsIChjdXJyZW50IHQpIEVycm9yXG4gICAgdGhlbiBMaXN0LnJldiBhY2NcbiAgICBlbHNlIChcbiAgICAgIG5leHQgdDtcbiAgICAgIGxvb3AgYWNjKVxuICBpblxuICBsb29wIFtdXG47O1xuXG5sZXQldGVzdF9tb2R1bGUgXCJ0ZXN0c1wiID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQgdGVzdCBzID1cbiAgICAgIHByaW50X2VuZGxpbmVcbiAgICAgICAgKFNleHAudG9fc3RyaW5nX21hY2ggKFslc2V4cF9vZjogKFRva2VuLnQgKiBpbnQgKiBpbnQpIGxpc3RdICh0b19saXN0IHMpKSlcbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZW9mXCIgPVxuICAgICAgdGVzdCBcIlwiO1xuICAgICAgWyVleHBlY3Qge3woKEVvZiAwIDApKXx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzaW1wbGVfdG9rZW5zXCIgPVxuICAgICAgdGVzdCBcIikoe31bXTs6XCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fCAoKFJwYXJlbiAwIDEpKExwYXJlbiAxIDEpKExjdXJseSAyIDEpKFJjdXJseSAzIDEpKExicmFja2V0IDQgMSkoUmJyYWNrZXQgNSAxKShTZW1pX2NvbG9uIDYgMSkoQ29sb24gNyAxKShFb2YgOCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImlkZW50XCIgPVxuICAgICAgdGVzdCBcIi1mb28tYmFyOiBiYXpcIjtcbiAgICAgIHRlc3QgXCItZm9vLWJhcihcIjtcbiAgICAgIHRlc3QgXCJAZm9vLWJhclwiO1xuICAgICAgdGVzdCBcIkAtZm9vLWJhclwiO1xuICAgICAgdGVzdCBcIkAtLWZvby1iYXJcIjtcbiAgICAgIHRlc3QgXCItLXZhclwiO1xuICAgICAgdGVzdCBcIlJHQkFcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChJZGVudCAwIDgpKENvbG9uIDggMSkoV2hpdGVfc3BhY2UgOSAxKShJZGVudCAxMCAzKShFb2YgMTMgMCkpXG4gICAgKChGdW5jdGlvbiAwIDkpKEVvZiA5IDApKVxuICAgICgoQXRrZXl3b3JkIDAgOCkoRW9mIDggMCkpXG4gICAgKChBdGtleXdvcmQgMCA5KShFb2YgOSAwKSlcbiAgICAoKEF0a2V5d29yZCAwIDEwKShFb2YgMTAgMCkpXG4gICAgKChJZGVudCAwIDUpKEVvZiA1IDApKVxuICAgICgoSWRlbnQgMCA0KShFb2YgNCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIndoaXRlc3BhY2VcIiA9XG4gICAgICB0ZXN0IFwiICBcIjtcbiAgICAgIFslZXhwZWN0IHt8KChXaGl0ZV9zcGFjZSAwIDIpKEVvZiAyIDApKXx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJudW1iZXJzXCIgPVxuICAgICAgdGVzdCBcIm1hcmdpbjogMC41ZW5cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNWVtXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjVpblwiO1xuICAgICAgdGVzdCBcImxpbmUtaGVpZ2h0OiAzY21cIjtcbiAgICAgIHRlc3QgXCJsaW5lLWhlaWdodDogMTIwJVwiO1xuICAgICAgdGVzdCBcImdyaWQ6IDAgMSBmb29cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNS1pblwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyZSsyMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyZS0yMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyRSsyMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyRS0yMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyRTIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJlMjBcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA1KShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA1KShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA1KShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDExKShDb2xvbiAxMSAxKShXaGl0ZV9zcGFjZSAxMiAxKShEaW1lbnNpb24gMTMgMykoRW9mIDE2IDApKVxuICAgICgoSWRlbnQgMCAxMSkoQ29sb24gMTEgMSkoV2hpdGVfc3BhY2UgMTIgMSkoUGVyY2VudGFnZSAxMyA0KShFb2YgMTcgMCkpXG4gICAgKChJZGVudCAwIDQpKENvbG9uIDQgMSkoV2hpdGVfc3BhY2UgNSAxKShOdW1iZXIgNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDEpKFdoaXRlX3NwYWNlIDkgMSkoSWRlbnQgMTAgMykoRW9mIDEzIDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoRGltZW5zaW9uIDggNikoRW9mIDE0IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNykoRW9mIDE1IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNykoRW9mIDE1IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNykoRW9mIDE1IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNykoRW9mIDE1IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNikoRW9mIDE0IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNikoRW9mIDE0IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiYmFkbHlfcXVvdGVkXCIgPVxuICAgICAgdGVzdCBcIidmb28gYmFyXCI7XG4gICAgICB0ZXN0IFwiJ1wiO1xuICAgICAgdGVzdCBcIidcXFxcJ1wiO1xuICAgICAgWyVleHBlY3Qge3xcbiAgICAoKEVycm9yIDAgOCkpXG4gICAgKChFcnJvciAwIDEpKVxuICAgICgoRXJyb3IgMCAzKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInF1b3RlZFwiID1cbiAgICAgIHRlc3Qge3wnRm9vICdcIkJhclwiJzsnICdcXCcnIFwiXFxcIlwifH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fCAoKFN0cmluZyAwIDYpKFN0cmluZyA2IDUpKFN0cmluZyAxMSAzKShXaGl0ZV9zcGFjZSAxNCAxKShTdHJpbmcgMTUgNCkoV2hpdGVfc3BhY2UgMTkgMSkoU3RyaW5nIDIwIDQpKEVvZiAyNCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImNvbG9yc1wiID1cbiAgICAgIHRlc3Qge3xjb2xvcjogI2YwMHx9O1xuICAgICAgdGVzdCB7fGNvbG9yOiByZ2IoMjU1LDAsMCl8fTtcbiAgICAgIHRlc3Qge3xjb2xvcjogcmdiKDI1NSwwLDApfH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoSWRlbnQgMCA1KShDb2xvbiA1IDEpKFdoaXRlX3NwYWNlIDYgMSkoSGFzaCA3IDQpKEVvZiAxMSAwKSlcbiAgICAoKElkZW50IDAgNSkoQ29sb24gNSAxKShXaGl0ZV9zcGFjZSA2IDEpKEZ1bmN0aW9uIDcgNCkoTnVtYmVyIDExIDMpKENvbW1hIDE0IDEpKE51bWJlciAxNSAxKShDb21tYSAxNiAxKShOdW1iZXIgMTcgMSkoUnBhcmVuIDE4IDEpKEVvZiAxOSAwKSlcbiAgICAoKElkZW50IDAgNSkoQ29sb24gNSAxKShXaGl0ZV9zcGFjZSA2IDEpKEZ1bmN0aW9uIDcgNCkoTnVtYmVyIDExIDMpKENvbW1hIDE0IDEpKE51bWJlciAxNSAxKShDb21tYSAxNiAxKShOdW1iZXIgMTcgMSkoUnBhcmVuIDE4IDEpKEVvZiAxOSAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImltcG9ydFwiID1cbiAgICAgIHRlc3Qge3xAaW1wb3J0IFwiZm9vLmJhclwiO3x9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3wgKChBdGtleXdvcmQgMCA3KShXaGl0ZV9zcGFjZSA3IDEpKFN0cmluZyA4IDkpKFNlbWlfY29sb24gMTcgMSkoRW9mIDE4IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwicmVkIGV4YW1wbGVcIiA9XG4gICAgICB0ZXN0IFwicmVkLS0+XCI7XG4gICAgICBbJWV4cGVjdCB7fCAoKElkZW50IDAgNSkoRGVsaW0gNSAxKShFb2YgNiAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInVybFwiID1cbiAgICAgIHRlc3Qge3x1cmwoIFwiaHR0cDovL3d3d3cuZ29vZ2xlLmNvbVwiKXx9O1xuICAgICAgdGVzdCB7fHVybCgnaHR0cDovL3d3d3cuZ29vZ2xlLmNvbScpfH07XG4gICAgICB0ZXN0IHt8dXJsKCdodHRwOi8vd3d3dy5nb29nbGUuY29tJyApfH07XG4gICAgICB0ZXN0IHt8dXJsKCAgaHR0cDovL3d3d3cuZ29vZ2xlLmNvbSApfH07XG4gICAgICB0ZXN0IHt8dXJsKCAgaHR0cDovL3d3d3cuZ29vZ2xlLlwiY29tICl8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChGdW5jdGlvbiAwIDQpKFdoaXRlX3NwYWNlIDQgMSkoU3RyaW5nIDUgMjQpKFJwYXJlbiAyOSAxKShFb2YgMzAgMCkpXG4gICAgKChGdW5jdGlvbiAwIDQpKFN0cmluZyA0IDI0KShScGFyZW4gMjggMSkoRW9mIDI5IDApKVxuICAgICgoRnVuY3Rpb24gMCA0KShTdHJpbmcgNCAyNCkoV2hpdGVfc3BhY2UgMjggMSkoUnBhcmVuIDI5IDEpKEVvZiAzMCAwKSlcbiAgICAoKFVyaSAwIDMwKShFb2YgMzAgMCkpXG4gICAgKChFcnJvciAwIDI1KSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImVzY2FwZVwiID1cbiAgICAgIHRlc3Qge3xcInRlc3RcXDE5YWJmMlxcMlwifH07XG4gICAgICB0ZXN0IHt8XCJcXDAxMFxceEZGYVxcbzEyM1xcblxcXFxcXHV7MTIzNDV9YWHwn5Cq8J+QqvCfkKrwn5Cq8J+QqlwifH07XG4gICAgICB0ZXN0IHt8XCLihpAg4oaRIOKGkiDihpMg4oaUIOKGlSDih6og4oa5IOKsiCDihpgg4p++IOKGtlwifH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoU3RyaW5nIDAgMTUpKEVvZiAxNSAwKSlcbiAgICAoKFN0cmluZyAwIDUxKShFb2YgNTEgMCkpXG4gICAgKChTdHJpbmcgMCA0OSkoRW9mIDQ5IDApKSB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuIiwiKCogUmVjdXJzaXZlIGRlc2NlbnQgcGFyc2Vycy4gIEEgcGFyc2VyIHJldHVybnMgZmFsc2UgaWYgYmFzZWQgb24gYVxuICAgc2luZ2xlIHRva2VuIGxvb2thaGVhZCBpdCBkZWNpZGVzIHRoYXQgdGhlIGdpdmVuIHRleHQgY2FuIG5vdCBiZVxuICAgcGFyc2VkLiAgQW55IG90aGVyIHBhcnNlIGVycm9ycyBhcmUgaGFuZGxlZCBieSByYWlzaW5nIGV4Y2VwdGlvbnMuXG5cbiAgIFNvbWUgcGFyc2VycyByZXR1cm4gdW5pdCBiZWNhdXNlIHdlIG9ubHkgY2FsbCB0aGVtIHdoZW4gYSBmYWlsdXJlXG4gICB0byBwYXJzZSBpbXBsaWVzIGEgcGFyc2UgZXJyb3IgKGFuZCBub3QgdGhhdCBzb21lIHBhcnNlciBoaWdoZXIgdXBcbiAgIGluIHRoZSBjYWxsIGNoYWluIHNob3VsZCB0cnkgdG8gcGFyc2Ugc29tZXRoaW5nIGVsc2UpLlxuXG4gICBGb3Igc2ltcGxpY2l0eSB0aGUgcGFyc2VycyB0aGVtc2VsdmVzIGp1c3QgdmFsaWRhdGUgYW5kIGRvbid0XG4gICBwcm9kdWNlIGFueSB2YWx1ZXMuICBUaGF0IGxlYWRzIHRvIGEgZmV3IHVuZWxlZ2FudCBjb25zdHJ1Y3RzXG4gICAocHJpbWFyaWx5IGluIGRlY2xhcmF0aW9uKSwgYnV0IG1lYW5zIHdlIG90aGVyd2lzZSBoYXZlIHJhdGhlclxuICAgc2ltcGxlIGNvZGUgdGhhdCBhbHNvIGFsbG9jYXRlcyB2ZXJ5IGxpdHRsZS5cbiopXG5cbm9wZW4gQ29yZVxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgcmVjIG5leHQgY3QgPVxuICBDc3NfdG9rZW5pemVyLm5leHQgY3Q7XG4gIGlmIENzc190b2tlbml6ZXIuKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBDb21tZW50KSB0aGVuIG5leHQgY3QgZWxzZSAoKVxuOztcblxubGV0IHNraXBfd2hpdGVfc3BhY2UgY3QgPVxuICB3aGlsZSBDc3NfdG9rZW5pemVyLihUb2tlbi5lcXVhbCAoY3VycmVudCBjdCkgV2hpdGVfc3BhY2UpIGRvXG4gICAgbmV4dCBjdFxuICBkb25lXG47O1xuXG5sZXQgYWNjZXB0IGN0IGV4cGVjdGVkID1cbiAgbGV0IGdvdCA9IENzc190b2tlbml6ZXIuY3VycmVudCBjdCBpblxuICBpZiBDc3NfdG9rZW5pemVyLlRva2VuLmVxdWFsIGdvdCBleHBlY3RlZFxuICB0aGVuIChcbiAgICBuZXh0IGN0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2Vcbjs7XG5cbmxldCBleHBlY3QgY3QgZXhwZWN0ZWQgPVxuICBsZXQgZ290ID0gQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0IGluXG4gIGlmIENzc190b2tlbml6ZXIuVG9rZW4uZXF1YWwgZ290IGV4cGVjdGVkXG4gIHRoZW4gbmV4dCBjdFxuICBlbHNlXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVW5leHBlY3RlZCB0b2tlblwiXG4gICAgICAgICAgKGV4cGVjdGVkIDogQ3NzX3Rva2VuaXplci5Ub2tlbi50KVxuICAgICAgICAgIChnb3QgOiBDc3NfdG9rZW5pemVyLlRva2VuLnQpXVxuOztcblxubGV0IHJlYyBtYW55IChjdCA6IENzc190b2tlbml6ZXIudCkgZiA9IGlmIGYgY3QgdGhlbiBtYW55IGN0IGYgZWxzZSAoKVxuXG5sZXQgbWFueTEgKGN0IDogQ3NzX3Rva2VuaXplci50KSBmID1cbiAgaWYgZiBjdFxuICB0aGVuIChcbiAgICBtYW55IGN0IGY7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuOztcblxubGV0IHJlYyBhbnkgY3QgOiBib29sID1cbiAgbGV0IHJlcyA9XG4gICAgbWF0Y2ggQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0IHdpdGhcbiAgICB8IElkZW50IHwgTnVtYmVyIHwgUGVyY2VudGFnZSB8IERpbWVuc2lvbiB8IFN0cmluZyB8IFVyaSB8IERlbGltIHwgSGFzaCB8IENvbW1hIC0+XG4gICAgICBuZXh0IGN0O1xuICAgICAgdHJ1ZVxuICAgIHwgRnVuY3Rpb24gLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgbWFueSBjdCBhbnk7XG4gICAgICBleHBlY3QgY3QgUnBhcmVuO1xuICAgICAgdHJ1ZVxuICAgIHwgTHBhcmVuIC0+XG4gICAgICBuZXh0IGN0O1xuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIGV4cGVjdF9hbnkgY3Q7XG4gICAgICBleHBlY3QgY3QgUnBhcmVuO1xuICAgICAgdHJ1ZVxuICAgIHwgTGJyYWNrZXQgLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgZXhwZWN0X2FueSBjdDtcbiAgICAgIGV4cGVjdCBjdCBSYnJhY2tldDtcbiAgICAgIHRydWVcbiAgICB8IFJjdXJseSB8IFJwYXJlbiB8IFJicmFja2V0IC0+IGZhbHNlXG4gICAgfCBMY3VybHkgLT4gZmFsc2VcbiAgICB8IEF0a2V5d29yZCB8IENvbG9uIHwgU2VtaV9jb2xvbiAtPiBmYWxzZVxuICAgIHwgQ29tbWVudCB8IFdoaXRlX3NwYWNlIHwgRW9mIHwgRXJyb3IgLT4gZmFsc2VcbiAgaW5cbiAgaWYgcmVzIHRoZW4gc2tpcF93aGl0ZV9zcGFjZSBjdCBlbHNlICgpO1xuICByZXNcblxuYW5kIGV4cGVjdF9hbnkgY3QgPSBpZiBhbnkgY3QgdGhlbiAoKSBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFwiRXhwZWN0ZWQgPGFueT5cIl1cblxuYW5kIHZhbHVlMCBjdCA9XG4gIGFueSBjdFxuICB8fCBibG9jayBjdFxuICB8fFxuICBpZiBhY2NlcHQgY3QgQXRrZXl3b3JkXG4gIHRoZW4gKFxuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuXG5hbmQgdmFsdWUgY3QgPSBtYW55MSBjdCB2YWx1ZTBcblxuYW5kIGJsb2NrIGN0IDogYm9vbCA9XG4gIGlmIGFjY2VwdCBjdCBMY3VybHlcbiAgdGhlbiAoXG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICBtYW55IGN0IChmdW4gY3QgLT5cbiAgICAgIHZhbHVlMCBjdFxuICAgICAgfHxcbiAgICAgIGlmIGFjY2VwdCBjdCBTZW1pX2NvbG9uXG4gICAgICB0aGVuIChcbiAgICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgICAgdHJ1ZSlcbiAgICAgIGVsc2UgZmFsc2UpO1xuICAgIGV4cGVjdCBjdCBSY3VybHk7XG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG5cbmFuZCBleHBlY3RfdmFsdWUgY3QgPSBpZiB2YWx1ZSBjdCB0aGVuICgpIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgXCJFeHBlY3RlZCA8dmFsdWU+XCJdXG5cbmxldCBkZWNsYXJhdGlvbiBjdCA9XG4gIGxldCBpZGVudF9zdGFydCwgaWRlbnRfbGVuID0gQ3NzX3Rva2VuaXplci5zbGljZSBjdCBpblxuICBpZiBhY2NlcHQgY3QgSWRlbnRcbiAgdGhlbiAoXG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICBleHBlY3QgY3QgQ29sb247XG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICBsZXQgdmFsdWVfc3RhcnQgPSBDc3NfdG9rZW5pemVyLnNsaWNlIGN0IHw+IGZzdCBpblxuICAgIGV4cGVjdF92YWx1ZSBjdDtcbiAgICBsZXQgbmV4dF90b2tlbl9zdGFydCA9IENzc190b2tlbml6ZXIuc2xpY2UgY3QgfD4gZnN0IGluXG4gICAgbGV0IHNvdXJjZSA9IENzc190b2tlbml6ZXIuc291cmNlIGN0IGluXG4gICAgU29tZVxuICAgICAgKCBTdHJpbmcuc3ViIHNvdXJjZSB+cG9zOmlkZW50X3N0YXJ0IH5sZW46aWRlbnRfbGVuXG4gICAgICAsIFN0cmluZy5yc3RyaXBcbiAgICAgICAgICAoU3RyaW5nLnN1YiBzb3VyY2UgfnBvczp2YWx1ZV9zdGFydCB+bGVuOihuZXh0X3Rva2VuX3N0YXJ0IC0gdmFsdWVfc3RhcnQpKSApKVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBleHBlY3RfZGVjbGFyYXRpb24gY3QgPVxuICBtYXRjaCBkZWNsYXJhdGlvbiBjdCB3aXRoXG4gIHwgU29tZSAoZmllbGQsIHZhbHVlKSAtPiBmaWVsZCwgdmFsdWVcbiAgfCBOb25lIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiRXhwZWN0ZWQgPGRlY2xhcmF0aW9uPlwiXVxuOztcblxuKCogQXMgcGVyOiBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXN0eWxlLWF0dHIvXG4gICBkZWNsYXJhdGlvbi1saXN0XG4gICA6IFMqIGRlY2xhcmF0aW9uPyBbICc7JyBTKiBkZWNsYXJhdGlvbj8gXSpcbiAgIDtcbiopXG5sZXQgZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QgY3QgPVxuICBsZXQgcmVzID0gcmVmIFtdIGluXG4gIGxldCBhZGQga3YgPVxuICAgIG1hdGNoIGt2IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgKGssIHYpIC0+IHJlcyA6PSAoaywgdikgOjogIXJlc1xuICBpblxuICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICBhZGQgKGRlY2xhcmF0aW9uIGN0KTtcbiAgbWFueSBjdCAoZnVuIGN0IC0+XG4gICAgaWYgYWNjZXB0IGN0IFNlbWlfY29sb25cbiAgICB0aGVuIChcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBhZGQgKGRlY2xhcmF0aW9uIGN0KTtcbiAgICAgIHRydWUpXG4gICAgZWxzZSBmYWxzZSk7XG4gIExpc3QucmV2ICFyZXNcbjs7XG5cbmxldCBwYXJzZSBwYXJzZXJfZiBzID1cbiAgbGV0IGN0ID0gQ3NzX3Rva2VuaXplci5jcmVhdGUgcyBpblxuICB3aGlsZSBDc3NfdG9rZW5pemVyLihUb2tlbi5lcXVhbCAoY3VycmVudCBjdCkgQ29tbWVudCkgZG9cbiAgICBDc3NfdG9rZW5pemVyLm5leHQgY3RcbiAgZG9uZTtcbiAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgIGxldCByZXMgPSBwYXJzZXJfZiBjdCBpblxuICAgIGV4cGVjdCBjdCBFb2Y7XG4gICAgcmVzKVxuOztcblxubGV0IHByaW50X3Rva2VucyBzID1cbiAgbGV0IGN0ID0gQ3NzX3Rva2VuaXplci5jcmVhdGUgcyBpblxuICB3aGlsZSBDc3NfdG9rZW5pemVyLihub3QgKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBFb2YpKSBkb1xuICAgIHByaW50X3MgKENzc190b2tlbml6ZXIuVG9rZW4uc2V4cF9vZl90IChDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3QpKTtcbiAgICBDc3NfdG9rZW5pemVyLm5leHQgY3RcbiAgZG9uZVxuOztcblxubGV0IHZhbGlkYXRlX3ZhbHVlID0gcGFyc2UgZXhwZWN0X3ZhbHVlXG5sZXQgcGFyc2VfZGVjbGFyYXRpb25fbGlzdCBzID0gcGFyc2UgZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3Qgc1xuXG5sZXQgdGVzdF9wYXJzZXIgcCBzZXhwX29mX2FyZyBzID1cbiAgbGV0IHIgPSBwYXJzZSBwIHMgaW5cbiAgcHJpbnRmICFcIiVzIC0tPiAle3NleHA6YXJnIE9yX2Vycm9yLnR9XFxuXCIgcyByXG47O1xuXG5sZXQldGVzdF9tb2R1bGUgXCJ0ZXN0c1wiID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJcIiA9XG4gICAgICBsZXQgdmFsdWUgPVxuICAgICAgICBcIjAgNHB4IDhweCAwIFJHQkEodmFyKC0tanMtdGV4dC1jb2xvci1yZ2IpLCAwLjEyKSwgMCAycHggNHB4IDAgXFxcbiAgICAgICAgIFJHQkEodmFyKC0tanMtdGV4dC1jb2xvci1yZ2IpLCAwLjA4KVwiXG4gICAgICBpblxuICAgICAgcHJpbnRfdG9rZW5zIHZhbHVlO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIEZ1bmN0aW9uXG4gICAgRnVuY3Rpb25cbiAgICBJZGVudFxuICAgIFJwYXJlblxuICAgIENvbW1hXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBScGFyZW5cbiAgICBDb21tYVxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgV2hpdGVfc3BhY2VcbiAgICBGdW5jdGlvblxuICAgIEZ1bmN0aW9uXG4gICAgSWRlbnRcbiAgICBScGFyZW5cbiAgICBDb21tYVxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgUnBhcmVuIHx9XTtcbiAgICAgIHByaW50X3MgWyVtZXNzYWdlICh2YWxpZGF0ZV92YWx1ZSB2YWx1ZSA6IHVuaXQgT3JfZXJyb3IudCldO1xuICAgICAgWyVleHBlY3Qge3xcbiAgICAoXCJ2YWxpZGF0ZV92YWx1ZSB2YWx1ZVwiIChPayAoKSkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ2YWx1ZXNcIiA9XG4gICAgICBsZXQgdGVzdCA9IHRlc3RfcGFyc2VyIGV4cGVjdF92YWx1ZSBVbml0LnNleHBfb2ZfdCBpblxuICAgICAgdGVzdCBcInhcIjtcbiAgICAgIHRlc3QgXCIzXCI7XG4gICAgICB0ZXN0IFwiM2luXCI7XG4gICAgICB0ZXN0IFwiMyVcIjtcbiAgICAgIHRlc3QgXCIjZmZmXCI7XG4gICAgICB0ZXN0IFwiMSAwIGF1dG9cIjtcbiAgICAgIHRlc3QgXCInSGVsbG8gV29ybGQnXCI7XG4gICAgICB0ZXN0IFwicmdiKDAsMCwwKVwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAgIHggLS0+IChPayAoKSlcbiAgICAgIDMgLS0+IChPayAoKSlcbiAgICAgIDNpbiAtLT4gKE9rICgpKVxuICAgICAgMyUgLS0+IChPayAoKSlcbiAgICAgICNmZmYgLS0+IChPayAoKSlcbiAgICAgIDEgMCBhdXRvIC0tPiAoT2sgKCkpXG4gICAgICAnSGVsbG8gV29ybGQnIC0tPiAoT2sgKCkpXG4gICAgICByZ2IoMCwwLDApIC0tPiAoT2sgKCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJkZWNsYXJhdGlvblwiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X2RlY2xhcmF0aW9uIFslc2V4cF9vZjogc3RyaW5nICogc3RyaW5nXSBpblxuICAgICAgdGVzdCBcImZsZXg6IDEgMCBhdXRvXCI7XG4gICAgICB0ZXN0IFwiY29udGVudDogJ0hlbGxvIFdvcmxkJ1wiO1xuICAgICAgdGVzdCBcImNvbnRlbnQ6IGZvbztcIjtcbiAgICAgICgqIFNlbWkncyBhcmUgaGFuZGxlZCBpbiBkZWNsYXJhdGlvbiBsaXN0ICopXG4gICAgICB0ZXN0IFwiY29udGVudDogYmFyIFwiO1xuICAgICAgKCogYnV0IHdoaXRlc3BhY2UgaXMgaGFuZGxlZCBpbiBkZWNsYXJhdGlvbiAoYW55IHJlYWxseSkgKilcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgICBmbGV4OiAxIDAgYXV0byAtLT4gKE9rIChmbGV4IFwiMSAwIGF1dG9cIikpXG4gICAgICBjb250ZW50OiAnSGVsbG8gV29ybGQnIC0tPiAoT2sgKGNvbnRlbnQgXCInSGVsbG8gV29ybGQnXCIpKVxuICAgICAgY29udGVudDogZm9vOyAtLT4gKEVycm9yIChcIlVuZXhwZWN0ZWQgdG9rZW5cIiAoZXhwZWN0ZWQgRW9mKSAoZ290IFNlbWlfY29sb24pKSlcbiAgICAgIGNvbnRlbnQ6IGJhciAgLS0+IChPayAoY29udGVudCBiYXIpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidW5pY29kZVwiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X2RlY2xhcmF0aW9uIFslc2V4cF9vZjogc3RyaW5nICogc3RyaW5nXSBpblxuICAgICAgdGVzdCBcImNvbnRlbnQ6ICfihpAg4oaRIOKGkiDihpMg4oaUIOKGlSDih6og4oa5IOKsiCDihpgg4p++IOKGtidcIjtcbiAgICAgIHByaW50X2VuZGxpbmUgKFNleHAudG9fc3RyaW5nIChTZXhwLkF0b20gXCLihpAg4oaRIOKGkiDihpMg4oaUIOKGlSDih6og4oa5IOKsiCDihpgg4p++IOKGtlwiKSk7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIGNvbnRlbnQ6ICfihpAg4oaRIOKGkiDihpMg4oaUIOKGlSDih6og4oa5IOKsiCDihpgg4p++IOKGticgLS0+IChPa1xuICAgICAoY29udGVudFxuICAgICAgXCInXFwyMjZcXDEzNFxcMTQ0IFxcMjI2XFwxMzRcXDE0NSBcXDIyNlxcMTM0XFwxNDYgXFwyMjZcXDEzNFxcMTQ3IFxcMjI2XFwxMzRcXDE0OCBcXDIyNlxcMTM0XFwxNDkgXFwyMjZcXDEzNVxcMTcwIFxcMjI2XFwxMzRcXDE4NSBcXDIyNlxcMTcyXFwxMzYgXFwyMjZcXDEzNFxcMTUyIFxcMjI2XFwxNTlcXDE5MCBcXDIyNlxcMTM0XFwxODInXCIpKVxuICAgIFwiXFwyMjZcXDEzNFxcMTQ0IFxcMjI2XFwxMzRcXDE0NSBcXDIyNlxcMTM0XFwxNDYgXFwyMjZcXDEzNFxcMTQ3IFxcMjI2XFwxMzRcXDE0OCBcXDIyNlxcMTM0XFwxNDkgXFwyMjZcXDEzNVxcMTcwIFxcMjI2XFwxMzRcXDE4NSBcXDIyNlxcMTcyXFwxMzYgXFwyMjZcXDEzNFxcMTUyIFxcMjI2XFwxNTlcXDE5MCBcXDIyNlxcMTM0XFwxODJcIiB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZGVjbGFyYXRpb24gbGlzdFwiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QgWyVzZXhwX29mOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XSBpblxuICAgICAgdGVzdCBcImZsZXg6IDEgMCBhdXRvXCI7XG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG87XCI7XG4gICAgICB0ZXN0XG4gICAgICAgIFwiYmFja2dyb3VuZDogIzVkOWFiMiB1cmwoXFxcImltZ190cmVlLnBuZ1xcXCIpIG5vLXJlcGVhdCB0b3AgbGVmdDttYXJnaW4tbGVmdDogMjAwcHhcIjtcbiAgICAgIHRlc3QgXCI7Ozs7O1wiO1xuICAgICAgdGVzdCBcImZsZXg6IDEgMCBhdXRvIDs7IG90aGVyIDogc2EgXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIGZsZXg6IDEgMCBhdXRvIC0tPiAoT2sgKChmbGV4IFwiMSAwIGF1dG9cIikpKVxuICAgIGZsZXg6IDEgMCBhdXRvOyAtLT4gKE9rICgoZmxleCBcIjEgMCBhdXRvXCIpKSlcbiAgICBiYWNrZ3JvdW5kOiAjNWQ5YWIyIHVybChcImltZ190cmVlLnBuZ1wiKSBuby1yZXBlYXQgdG9wIGxlZnQ7bWFyZ2luLWxlZnQ6IDIwMHB4IC0tPiAoT2tcbiAgICAgKChiYWNrZ3JvdW5kIFwiIzVkOWFiMiB1cmwoXFxcImltZ190cmVlLnBuZ1xcXCIpIG5vLXJlcGVhdCB0b3AgbGVmdFwiKVxuICAgICAgKG1hcmdpbi1sZWZ0IDIwMHB4KSkpXG4gICAgOzs7OzsgLS0+IChPayAoKSlcbiAgICBmbGV4OiAxIDAgYXV0byA7OyBvdGhlciA6IHNhICAtLT4gKE9rICgoZmxleCBcIjEgMCBhdXRvXCIpIChvdGhlciBzYSkpKSB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIENvcmUuQ29yZV9zdGFibGVcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAoKiogKGZpZWxkICogdmFsdWUpIGxpc3QuICBXaGVyZSB2YWx1ZSBzaG91bGQgYmUgZXNjYXBlZCAvIHF1b3RlZFxuICAgICAgICBhcyBuZWNlc3NhcnkgYXMgcGVyIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjcnVsZS1zZXRzLiAqKVxuICAgIHR5cGUgdCA9IChzdHJpbmcgKiBzdHJpbmcpIGxpc3QgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgYmluX2lvXVxuICBlbmRcbmVuZFxuXG5vcGVuIENvcmVcbmluY2x1ZGUgU3RhYmxlLlYxXG5cbnR5cGUgY3NzX2dsb2JhbF92YWx1ZXMgPVxuICBbIGBJbmhlcml0XG4gIHwgYEluaXRpYWxcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgPSByZWYgKGZ1biBkaWdpdHMgZiAtPiBzcHJpbnRmIFwiJS4qZlwiIGRpZ2l0cyBmKVxuZW5kXG5cbmxldCBmMnMgZGlnaXRzIGYgPSAhUHJpdmF0ZS5mbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCBkaWdpdHMgZlxuXG5tb2R1bGUgQ29sb3IgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgUkdCQSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyByIDogaW50XG4gICAgICAgIDsgZyA6IGludFxuICAgICAgICA7IGIgOiBpbnRcbiAgICAgICAgOyBhIDogUGVyY2VudC50IG9wdGlvblxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGZpZWxkc11cblxuICAgICAgbGV0IGNyZWF0ZSB+ciB+ZyB+YiA/YSAoKSA9IHsgcjsgZzsgYjsgYSB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgSFNMQSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBoIDogaW50XG4gICAgICAgIDsgcyA6IFBlcmNlbnQudFxuICAgICAgICA7IGwgOiBQZXJjZW50LnRcbiAgICAgICAgOyBhIDogUGVyY2VudC50IG9wdGlvblxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGZpZWxkc11cblxuICAgICAgbGV0IGNyZWF0ZSB+aCB+cyB+bCA/YSAoKSA9IHsgaDsgczsgbDsgYSB9XG4gICAgZW5kXG5cbiAgICB0eXBlIHQgPVxuICAgICAgWyBgUkdCQSBvZiBSR0JBLnRcbiAgICAgIHwgYEhTTEEgb2YgSFNMQS50XG4gICAgICB8IGBOYW1lIG9mIHN0cmluZ1xuICAgICAgfCBgSGV4IG9mIHN0cmluZ1xuICAgICAgfCBgVmFyIG9mIHN0cmluZ1xuICAgICAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZV1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBsZXQgdG9fc3RyaW5nX2NzcyA6IFs8IHQgXSAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgfCBgUkdCQSB7IFJHQkEucjsgZzsgYjsgYSB9IC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICAgfCBOb25lIC0+IFslc3RyaW5nIFwicmdiKCV7ciNJbnR9LCV7ZyNJbnR9LCV7YiNJbnR9KVwiXVxuICAgICAgIHwgU29tZSBwIC0+XG4gICAgICAgICBbJXN0cmluZyBcInJnYmEoJXtyI0ludH0sJXtnI0ludH0sJXtiI0ludH0sJXtmMnMgMiAoUGVyY2VudC50b19tdWx0IHApfSlcIl0pXG4gICAgfCBgSFNMQSB7IEhTTEEuaDsgczsgbDsgYSB9IC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBbJXN0cmluZ1xuICAgICAgICAgICBcImhzbCgle2gjSW50fSwle2YycyAwIChQZXJjZW50LnRvX3BlcmNlbnRhZ2Ugcyl9JSwle2YycyAwIFxcXG4gICAgICAgICAgICAoUGVyY2VudC50b19wZXJjZW50YWdlIGwpfSUpXCJdXG4gICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgIFslc3RyaW5nXG4gICAgICAgICAgIFwiaHNsYSgle2gjSW50fSwle2YycyAwIChQZXJjZW50LnRvX3BlcmNlbnRhZ2Ugcyl9JSwle2YycyAwIFxcXG4gICAgICAgICAgICAoUGVyY2VudC50b19wZXJjZW50YWdlIGwpfSUsJXtmMnMgMiAoUGVyY2VudC50b19tdWx0IHApfSlcIl0pXG4gICAgfCBgTmFtZSBuYW1lIC0+IG5hbWVcbiAgICB8IGBIZXggaGV4IC0+IGhleFxuICAgIHwgYFZhciB2YXIgLT4gWyVzdHJpbmcgXCJ2YXIoJXt2YXJ9KVwiXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbGlnbm1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBMZWZ0XG4gICAgfCBgUmlnaHRcbiAgICB8IGBDZW50ZXIgKCogaG9yaXpvbnRhbCAqKVxuICAgIHwgYFRvcFxuICAgIHwgYEJvdHRvbVxuICAgIHwgYE1pZGRsZSAoKiB2ZXJ0aWNhbCAqKVxuICAgIHwgYEp1c3RpZnkgKCogdGV4dC1hbGlnbiAoaW4gYWRkaXRpb24gdG8gW2hvcml6b250YWxdKSAqKVxuICAgIHwgYFN1cGVyICgqIHZlcnRpY2FsICopXG4gICAgfCBgU3ViICgqIHZlcnRpY2FsICopXG4gICAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlXVxuXG4gIGxldCB0b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgICB8IGBKdXN0aWZ5IC0+IFwianVzdGlmeVwiXG4gICAgfCBgVG9wIC0+IFwidG9wXCJcbiAgICB8IGBSaWdodCAtPiBcInJpZ2h0XCJcbiAgICB8IGBMZWZ0IC0+IFwibGVmdFwiXG4gICAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgTWlkZGxlIC0+IFwibWlkZGxlXCJcbiAgICB8IGBCb3R0b20gLT4gXCJib3R0b21cIlxuICAgIHwgYFN1cGVyIC0+IFwic3VwZXJcIlxuICAgIHwgYFN1YiAtPiBcInN1YlwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICA7O1xuZW5kXG5cbm1vZHVsZSBMZW5ndGggPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBSYXcgb2Ygc3RyaW5nXG4gICAgfCBgQ2ggb2YgZmxvYXRcbiAgICB8IGBSZW0gb2YgZmxvYXRcbiAgICB8IGBFbSBvZiBpbnRcbiAgICB8IGBFbV9mbG9hdCBvZiBmbG9hdFxuICAgIHwgYFBlcmNlbnQgb2YgUGVyY2VudC50XG4gICAgfCBgUHQgb2YgZmxvYXRcbiAgICB8IGBQeCBvZiBpbnRcbiAgICB8IGBQeF9mbG9hdCBvZiBmbG9hdFxuICAgIHwgYFZoIG9mIFBlcmNlbnQudFxuICAgIHwgYFZ3IG9mIFBlcmNlbnQudFxuICAgIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgICBdXG4gIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxuICBsZXQgdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gICAgfCBgUmF3IHMgLT4gc1xuICAgIHwgYENoIGMgLT4gWyVzdHJpbmcgXCIle2YycyAyIGN9Y2hcIl1cbiAgICB8IGBSZW0gZiAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgZn1yZW1cIl1cbiAgICB8IGBFbSBpIC0+IFslc3RyaW5nIFwiJXtpI0ludH1lbVwiXVxuICAgIHwgYEVtX2Zsb2F0IGYgLT4gWyVzdHJpbmcgXCIle2YycyAyIGZ9ZW1cIl1cbiAgICB8IGBQZXJjZW50IHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcCl9JVwiXVxuICAgIHwgYFB0IHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIHB9cHRcIl1cbiAgICB8IGBQeCBpIC0+IFslc3RyaW5nIFwiJXtpI0ludH1weFwiXVxuICAgIHwgYFB4X2Zsb2F0IGYgLT4gWyVzdHJpbmcgXCIle2YycyAyIGZ9cHhcIl1cbiAgICB8IGBWaCBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiAoUGVyY2VudC50b19wZXJjZW50YWdlIHApfXZoXCJdXG4gICAgfCBgVncgcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwKX12d1wiXVxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIDs7XG5cbiAgbGV0IHBlcmNlbnQxMDAgPSBgUGVyY2VudCAoUGVyY2VudC5vZl9wZXJjZW50YWdlIDEwMC4pXG5lbmRcblxubW9kdWxlIEF1dG9fb3JfbGVuZ3RoID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgQXV0b1xuICAgIHwgTGVuZ3RoLnRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgI0xlbmd0aC50IGFzIGwgLT4gTGVuZ3RoLnRvX3N0cmluZ19jc3MgbFxuICA7O1xuZW5kXG5cbmxldCB2YWx1ZV9tYXAgbyB+ZiA9IE9wdGlvbi52YWx1ZV9tYXAgbyB+ZGVmYXVsdDpcIlwiIH5mXG5sZXQgY29tYmluZSB0MSB0MiA9IHQxIEAgdDJcbmxldCAoIEA+ICkgPSBjb21iaW5lXG5sZXQgY29uY2F0IGwgPSBMaXN0LmNvbmNhdCBsXG5sZXQgdG9fc3RyaW5nX2xpc3QgPSBGbi5pZFxuXG5sZXQgdG9fc3RyaW5nX2NzcyB0ID1cbiAgTGlzdC5tYXAgdCB+ZjooZnVuIChmaWVsZCwgdmFsdWUpIC0+IFslc3RyaW5nIFwiJXtmaWVsZH06ICV7dmFsdWV9XCJdKVxuICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCI7XCJcbjs7XG5cbmxldCBvZl9zdHJpbmdfY3NzX2V4biBzID0gQ3NzX3BhcnNlci5wYXJzZV9kZWNsYXJhdGlvbl9saXN0IHMgfD4gT3JfZXJyb3Iub2tfZXhuXG5cbigqKiBjcmVhdGVfcmF3IGNyZWF0ZXMgYSBzaW5nbGUgZmllbGQsIHZhbHVlIHBhaXIuICBJdCBhc3N1bWVzIHRoYXQgdGhlIHZhbHVlIGlzIGEgdmFsaWRcbiAgICBjc3MgdmFsdWUuICBBcyBzdWNoIGl0IGlzIHVuc2FmZSB0byB1c2Ugd2l0aCBhcmJpdHJhcnkgdmFsdWUgc3RyaW5ncy4gIEJ1dCBmb3IgdGhlXG4gICAgdmFzdCBtYWpvcml0eSBvZiBjb21iaW5hdG9ycyBpbiB0aGlzIG1vZHVsZSBpdCBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gdXNlLCBhcyB3ZSBrbm93XG4gICAgYnkgY29uc3RydWN0aW9uIHRoYXQgdGhlIHZhbHVlcyBkbyBub3QgbmVlZCBxdW90aW5nIC8gZXNjYXBpbmcuICopXG5sZXQgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlID0gWyBmaWVsZCwgdmFsdWUgXVxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBzaG91bGRfdmFsaWRhdGUgPSByZWYgZmFsc2VcbmVuZFxuXG5sZXQgY3JlYXRlIH5maWVsZCB+dmFsdWUgPVxuICBpZiAhRXhwZXJ0LnNob3VsZF92YWxpZGF0ZSB0aGVuIENzc19wYXJzZXIudmFsaWRhdGVfdmFsdWUgdmFsdWUgfD4gT3JfZXJyb3Iub2tfZXhuO1xuICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWVcbjs7XG5cbmxldCBlbXB0eSA9IFtdXG5sZXQgaXNfZW1wdHkgPSBMaXN0LmlzX2VtcHR5XG5sZXQgY3JlYXRlX3BsYWNlbWVudCBuYW1lIGxlbmd0aCA9IGNyZWF0ZSB+ZmllbGQ6bmFtZSB+dmFsdWU6KExlbmd0aC50b19zdHJpbmdfY3NzIGxlbmd0aClcbmxldCBsZWZ0ID0gY3JlYXRlX3BsYWNlbWVudCBcImxlZnRcIlxubGV0IHRvcCA9IGNyZWF0ZV9wbGFjZW1lbnQgXCJ0b3BcIlxubGV0IGJvdHRvbSA9IGNyZWF0ZV9wbGFjZW1lbnQgXCJib3R0b21cIlxubGV0IHJpZ2h0ID0gY3JlYXRlX3BsYWNlbWVudCBcInJpZ2h0XCJcblxubGV0IHBvc2l0aW9uID90b3A6dHAgP2JvdHRvbTpidCA/bGVmdDpsdCA/cmlnaHQ6cnQgcG9zID1cbiAgbGV0IHBvcyA9XG4gICAgbGV0IHZhbHVlID1cbiAgICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgICB8IGBTdGF0aWMgLT4gXCJzdGF0aWNcIlxuICAgICAgfCBgQWJzb2x1dGUgLT4gXCJhYnNvbHV0ZVwiXG4gICAgICB8IGBTdGlja3kgLT4gXCJzdGlja3lcIlxuICAgICAgfCBgUmVsYXRpdmUgLT4gXCJyZWxhdGl2ZVwiXG4gICAgICB8IGBGaXhlZCAtPiBcImZpeGVkXCJcbiAgICBpblxuICAgIGNyZWF0ZSB+ZmllbGQ6XCJwb3NpdGlvblwiIH52YWx1ZVxuICBpblxuICBsZXQgY29udmVydCBvcHRfbCBmID0gT3B0aW9uLnZhbHVlX21hcCBvcHRfbCB+ZGVmYXVsdDplbXB0eSB+ZiBpblxuICBjb25jYXQgWyBwb3M7IGNvbnZlcnQgdHAgdG9wOyBjb252ZXJ0IGx0IGxlZnQ7IGNvbnZlcnQgcnQgcmlnaHQ7IGNvbnZlcnQgYnQgYm90dG9tIF1cbjs7XG5cbmxldCBib3hfc2l6aW5nIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYENvbnRlbnRfYm94IC0+IFwiY29udGVudC1ib3hcIlxuICAgIHwgYEJvcmRlcl9ib3ggLT4gXCJib3JkZXItYm94XCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImJveC1zaXppbmdcIiB+dmFsdWVcbjs7XG5cbmxldCBkaXNwbGF5IHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYElubGluZSAtPiBcImlubGluZVwiXG4gICAgfCBgQmxvY2sgLT4gXCJibG9ja1wiXG4gICAgfCBgSW5saW5lX2Jsb2NrIC0+IFwiaW5saW5lLWJsb2NrXCJcbiAgICB8IGBMaXN0X2l0ZW0gLT4gXCJsaXN0LWl0ZW1cIlxuICAgIHwgYFRhYmxlIC0+IFwidGFibGVcIlxuICAgIHwgYElubGluZV90YWJsZSAtPiBcImlubGluZS10YWJsZVwiXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYEZsZXggLT4gXCJmbGV4XCJcbiAgICB8IGBJbmxpbmVfZmxleCAtPiBcImlubGluZS1mbGV4XCJcbiAgICB8IGBJbmxpbmVfZ3JpZCAtPiBcImlubGluZS1ncmlkXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImRpc3BsYXlcIiB+dmFsdWVcbjs7XG5cbmxldCB2aXNpYmlsaXR5IHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYFZpc2libGUgLT4gXCJ2aXNpYmxlXCJcbiAgICB8IGBIaWRkZW4gLT4gXCJoaWRkZW5cIlxuICAgIHwgYENvbGxhcHNlIC0+IFwiY29sbGFwc2VcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwidmlzaWJpbGl0eVwiIH52YWx1ZVxuOztcblxudHlwZSBvdmVyZmxvdyA9XG4gIFsgYFZpc2libGVcbiAgfCBgSGlkZGVuXG4gIHwgYFNjcm9sbFxuICB8IGBBdXRvXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG5sZXQgbWFrZV9vdmVyZmxvdyBmaWVsZCB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBWaXNpYmxlIC0+IFwidmlzaWJsZVwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBTY3JvbGwgLT4gXCJzY3JvbGxcIlxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWVcbjs7XG5cbmxldCBvdmVyZmxvdyA9IG1ha2Vfb3ZlcmZsb3cgXCJvdmVyZmxvd1wiXG5sZXQgb3ZlcmZsb3dfeCA9IG1ha2Vfb3ZlcmZsb3cgXCJvdmVyZmxvdy14XCJcbmxldCBvdmVyZmxvd195ID0gbWFrZV9vdmVyZmxvdyBcIm92ZXJmbG93LXlcIlxubGV0IHpfaW5kZXggaSA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiei1pbmRleFwiIH52YWx1ZTooSW50LnRvX3N0cmluZyBpKVxubGV0IG9wYWNpdHkgaSA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwib3BhY2l0eVwiIH52YWx1ZTooZjJzIDYgaSlcblxubGV0IGNyZWF0ZV9sZW5ndGhfZmllbGQgZmllbGQgbCA9XG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooQXV0b19vcl9sZW5ndGgudG9fc3RyaW5nX2NzcyBsKVxuOztcblxubGV0IHdoaXRlX3NwYWNlIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgTm93cmFwIC0+IFwibm93cmFwXCJcbiAgICB8IGBQcmUgLT4gXCJwcmVcIlxuICAgIHwgYFByZV9saW5lIC0+IFwicHJlLWxpbmVcIlxuICAgIHwgYFByZV93cmFwIC0+IFwicHJlLXdyYXBcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gIGluXG4gIGNyZWF0ZSB+ZmllbGQ6XCJ3aGl0ZS1zcGFjZVwiIH52YWx1ZVxuOztcblxudHlwZSBmb250X3N0eWxlID1cbiAgWyBgTm9ybWFsXG4gIHwgYEl0YWxpY1xuICB8IGBPYmxpcXVlXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG50eXBlIGZvbnRfd2VpZ2h0ID1cbiAgWyBgTm9ybWFsXG4gIHwgYEJvbGRcbiAgfCBgQm9sZGVyXG4gIHwgYExpZ2h0ZXJcbiAgfCBgTnVtYmVyIG9mIGludFxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxudHlwZSBmb250X3ZhcmlhbnQgPVxuICBbIGBOb3JtYWxcbiAgfCBgU21hbGxfY2Fwc1xuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxubGV0IGZvbnRfc2l6ZSA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJmb250LXNpemVcIlxubGV0IGZvbnRfZmFtaWx5IGwgPSBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtZmFtaWx5XCIgfnZhbHVlOihTdHJpbmcuY29uY2F0IGwgfnNlcDpcIixcIilcblxubGV0IGZvbnRfc3R5bGUgcyA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBJdGFsaWMgLT4gXCJpdGFsaWNcIlxuICAgIHwgYE9ibGlxdWUgLT4gXCJvYmxpcXVlXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtc3R5bGVcIiB+dmFsdWVcbjs7XG5cbmxldCBmb250X3dlaWdodCBzID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IGBOdW1iZXIgaSAtPiBJbnQudG9fc3RyaW5nIGlcbiAgICB8IGBCb2xkIC0+IFwiYm9sZFwiXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBMaWdodGVyIC0+IFwibGlnaHRlclwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEJvbGRlciAtPiBcImJvbGRlclwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtd2VpZ2h0XCIgfnZhbHVlXG47O1xuXG5sZXQgYm9sZCA9IGZvbnRfd2VpZ2h0IGBCb2xkXG5cbmxldCBmb250X3ZhcmlhbnQgcyA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBTbWFsbF9jYXBzIC0+IFwic21hbGwtY2Fwc1wiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmb250LXZhcmlhbnRcIiB+dmFsdWVcbjs7XG5cbmxldCBmb250IH5zaXplIH5mYW1pbHkgP3N0eWxlID93ZWlnaHQgP3ZhcmlhbnQgKCkgPVxuICBbIFNvbWUgKGZvbnRfc2l6ZSBzaXplKVxuICA7IFNvbWUgKGZvbnRfZmFtaWx5IGZhbWlseSlcbiAgOyBPcHRpb24ubWFwIHN0eWxlIH5mOmZvbnRfc3R5bGVcbiAgOyBPcHRpb24ubWFwIHdlaWdodCB+Zjpmb250X3dlaWdodFxuICA7IE9wdGlvbi5tYXAgdmFyaWFudCB+Zjpmb250X3ZhcmlhbnRcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkIH5jb2xvciA9IGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooQ29sb3IudG9fc3RyaW5nX2NzcyBjb2xvcilcbmxldCBjb2xvciBjb2xvciA9IGNyZWF0ZV93aXRoX2NvbG9yIH5maWVsZDpcImNvbG9yXCIgfmNvbG9yXG5sZXQgYmFja2dyb3VuZF9jb2xvciBjb2xvciA9IGNyZWF0ZV93aXRoX2NvbG9yIH5maWVsZDpcImJhY2tncm91bmQtY29sb3JcIiB+Y29sb3JcbmxldCBmaWxsIGNvbG9yID0gY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkOlwiZmlsbFwiIH5jb2xvclxuXG50eXBlIHN0b3BzID0gKFBlcmNlbnQudCAqIENvbG9yLnQpIGxpc3RcblxudHlwZSBsaW5lYXJfZ3JhZGllbnQgPVxuICB7IGRpcmVjdGlvbiA6IFsgYERlZyBvZiBpbnQgXVxuICA7IHN0b3BzIDogc3RvcHNcbiAgfVxuXG50eXBlIHJhZGlhbF9ncmFkaWVudCA9IHsgc3RvcHMgOiBzdG9wcyB9XG5cbnR5cGUgYmFja2dyb3VuZF9pbWFnZSA9XG4gIFsgYFVybCBvZiBzdHJpbmdcbiAgfCBgTGluZWFyX2dyYWRpZW50IG9mIGxpbmVhcl9ncmFkaWVudFxuICB8IGBSYWRpYWxfZ3JhZGllbnQgb2YgcmFkaWFsX2dyYWRpZW50XG4gIF1cblxudHlwZSB0ZXh0X2FsaWduID1cbiAgWyBgTGVmdFxuICB8IGBSaWdodFxuICB8IGBDZW50ZXJcbiAgfCBgSnVzdGlmeVxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxubGV0IHN0b3BzX3RvX3N0cmluZyBzdG9wcyA9XG4gIExpc3QubWFwIHN0b3BzIH5mOihmdW4gKHBjdCwgY29sb3IpIC0+XG4gICAgKCogTm90ZTogUGVyY2VudC50b19zdHJpbmcgcHJvZHVjZWQgZS5nLiBcIjB4XCIsIFwiMXhcIiwgd29uJ3Qgd29yayBoZXJlLiAqKVxuICAgIFslc3RyaW5nIFwiJXtDb2xvci50b19zdHJpbmdfY3NzIGNvbG9yfSAle2YycyA2IChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcGN0KX0lXCJdKVxuICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG47O1xuXG5sZXQgYmFja2dyb3VuZF9pbWFnZSBzcGVjID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICB8IGBVcmwgdXJsIC0+IFslc3RyaW5nIFwidXJsKCV7dXJsfSlcIl1cbiAgICB8IGBMaW5lYXJfZ3JhZGllbnQgeyBkaXJlY3Rpb24gPSBgRGVnIGRpcmVjdGlvbjsgc3RvcHMgfSAtPlxuICAgICAgWyVzdHJpbmcgXCJsaW5lYXItZ3JhZGllbnQoJXtkaXJlY3Rpb24jSW50fWRlZywgJXtzdG9wc190b19zdHJpbmcgc3RvcHN9KVwiXVxuICAgIHwgYFJhZGlhbF9ncmFkaWVudCB7IHN0b3BzIH0gLT4gWyVzdHJpbmcgXCJyYWRpYWwtZ3JhZGllbnQoJXtzdG9wc190b19zdHJpbmcgc3RvcHN9KVwiXVxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImJhY2tncm91bmQtaW1hZ2VcIiB+dmFsdWVcbjs7XG5cbmxldCBjcmVhdGVfYWxpZ25tZW50IGZpZWxkIGEgPVxuICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWU6KEFsaWdubWVudC50b19zdHJpbmdfY3NzIChhIDo+IEFsaWdubWVudC50KSlcbjs7XG5cbmxldCB0ZXh0X2FsaWduID0gY3JlYXRlX2FsaWdubWVudCBcInRleHQtYWxpZ25cIlxubGV0IGhvcml6b250YWxfYWxpZ24gPSBjcmVhdGVfYWxpZ25tZW50IFwiaG9yaXpvbnRhbC1hbGlnblwiXG5sZXQgdmVydGljYWxfYWxpZ24gPSBjcmVhdGVfYWxpZ25tZW50IFwidmVydGljYWwtYWxpZ25cIlxuXG5sZXQgZmxvYXQgZiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggZiB3aXRoXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYExlZnQgLT4gXCJsZWZ0XCJcbiAgICB8IGBSaWdodCAtPiBcInJpZ2h0XCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZsb2F0XCIgfnZhbHVlXG47O1xuXG5sZXQgbGluZV9oZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibGluZS1oZWlnaHRcIlxubGV0IHdpZHRoID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIndpZHRoXCJcbmxldCBtaW5fd2lkdGggPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWluLXdpZHRoXCJcbmxldCBtYXhfd2lkdGggPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWF4LXdpZHRoXCJcbmxldCBoZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiaGVpZ2h0XCJcbmxldCBtaW5faGVpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1pbi1oZWlnaHRcIlxubGV0IG1heF9oZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWF4LWhlaWdodFwiXG5sZXQgcGFkZGluZ190b3AgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy10b3BcIlxubGV0IHBhZGRpbmdfYm90dG9tID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctYm90dG9tXCJcbmxldCBwYWRkaW5nX2xlZnQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy1sZWZ0XCJcbmxldCBwYWRkaW5nX3JpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctcmlnaHRcIlxuXG5sZXQgcGFkZGluZyA/dG9wID9ib3R0b20gP2xlZnQgP3JpZ2h0ICgpID1cbiAgbGV0IG0gPSBPcHRpb24ubWFwIGluXG4gIFsgbSB0b3AgfmY6cGFkZGluZ190b3BcbiAgOyBtIGJvdHRvbSB+ZjpwYWRkaW5nX2JvdHRvbVxuICA7IG0gbGVmdCB+ZjpwYWRkaW5nX2xlZnRcbiAgOyBtIHJpZ2h0IH5mOnBhZGRpbmdfcmlnaHRcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG5sZXQgdW5pZm9ybV9wYWRkaW5nIGwgPSBwYWRkaW5nIH50b3A6bCB+Ym90dG9tOmwgfmxlZnQ6bCB+cmlnaHQ6bCAoKVxubGV0IG1hcmdpbl90b3AgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWFyZ2luLXRvcFwiXG5sZXQgbWFyZ2luX2JvdHRvbSA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tYm90dG9tXCJcbmxldCBtYXJnaW5fbGVmdCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tbGVmdFwiXG5sZXQgbWFyZ2luX3JpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi1yaWdodFwiXG5cbmxldCBtYXJnaW4gP3RvcCA/Ym90dG9tID9sZWZ0ID9yaWdodCAoKSA9XG4gIGxldCBtID0gT3B0aW9uLm1hcCBpblxuICBbIG0gdG9wIH5mOm1hcmdpbl90b3BcbiAgOyBtIGJvdHRvbSB+ZjptYXJnaW5fYm90dG9tXG4gIDsgbSBsZWZ0IH5mOm1hcmdpbl9sZWZ0XG4gIDsgbSByaWdodCB+ZjptYXJnaW5fcmlnaHRcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG5sZXQgdW5pZm9ybV9tYXJnaW4gbCA9IG1hcmdpbiB+dG9wOmwgfmJvdHRvbTpsIH5sZWZ0OmwgfnJpZ2h0OmwgKClcbmxldCByb3dfZ2FwID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInJvdy1nYXBcIlxubGV0IGNvbHVtbl9nYXAgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiY29sdW1uLWdhcFwiXG5cbnR5cGUgYm9yZGVyX3N0eWxlID1cbiAgWyBgTm9uZVxuICB8IGBIaWRkZW5cbiAgfCBgRG90dGVkXG4gIHwgYERhc2hlZFxuICB8IGBTb2xpZFxuICB8IGBEb3VibGVcbiAgfCBgR3Jvb3ZlXG4gIHwgYFJpZGdlXG4gIHwgYEluc2V0XG4gIHwgYE91dHNldFxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxuKCoqIENvbmNhdCAyIHZhbHVlcyB3aXRoIGEgc3BhY2UgaW4gYmV0d2Vlbi4gIElmIGVpdGhlciBpcyB0aGUgZW1wdHkgc3RyaW5nXG4gICAgZG9uJ3QgcHV0IGluIHVubmVjZXNzYXJ5IHdoaXRlc3BhY2UuICopXG5sZXQgY29uY2F0MnYgdjEgdjIgPVxuICBtYXRjaCB2MSwgdjIgd2l0aFxuICB8IFwiXCIsIHggLT4geFxuICB8IHgsIFwiXCIgLT4geFxuICB8IHgsIHkgLT4geCBeIFwiIFwiIF4geVxuOztcblxuKCoqIENvbmNhdCB1cCB0byAzIHZhbHVlcyB3aXRoIHNwYWNlcyBpbiBiZXR3ZWVuLiAqKVxubGV0IGNvbmNhdDN2IHYxIHYyIHYzID0gY29uY2F0MnYgKGNvbmNhdDJ2IHYxIHYyKSB2M1xuXG5sZXQgYm9yZGVyX3ZhbHVlID93aWR0aCA/Y29sb3IgfihzdHlsZSA6IGJvcmRlcl9zdHlsZSkgKCkgPVxuICBsZXQgc3R5bGUgPVxuICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICB8IGBSaWRnZSAtPiBcInJpZGdlXCJcbiAgICB8IGBPdXRzZXQgLT4gXCJvdXRzZXRcIlxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBHcm9vdmUgLT4gXCJncm9vdmVcIlxuICAgIHwgYERhc2hlZCAtPiBcImRhc2hlZFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluc2V0IC0+IFwiaW5zZXRcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgRG91YmxlIC0+IFwiZG91YmxlXCJcbiAgICB8IGBEb3R0ZWQgLT4gXCJkb3R0ZWRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBTb2xpZCAtPiBcInNvbGlkXCJcbiAgaW5cbiAgbGV0IHdpZHRoID0gdmFsdWVfbWFwIHdpZHRoIH5mOkxlbmd0aC50b19zdHJpbmdfY3NzIGluXG4gIGxldCBjb2xvciA9IHZhbHVlX21hcCBjb2xvciB+ZjpDb2xvci50b19zdHJpbmdfY3NzIGluXG4gIGNvbmNhdDN2IHdpZHRoIHN0eWxlIGNvbG9yXG47O1xuXG5sZXQgY3JlYXRlX2JvcmRlciA/c2lkZSAoKSA9XG4gIGxldCBmaWVsZCA9XG4gICAgbWF0Y2ggc2lkZSB3aXRoXG4gICAgfCBTb21lIGBUb3AgLT4gXCJib3JkZXItdG9wXCJcbiAgICB8IFNvbWUgYEJvdHRvbSAtPiBcImJvcmRlci1ib3R0b21cIlxuICAgIHwgU29tZSBgUmlnaHQgLT4gXCJib3JkZXItcmlnaHRcIlxuICAgIHwgU29tZSBgTGVmdCAtPiBcImJvcmRlci1sZWZ0XCJcbiAgICB8IE5vbmUgLT4gXCJib3JkZXJcIlxuICBpblxuICBmdW4gP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgLT5cbiAgICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWU6KGJvcmRlcl92YWx1ZSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSlcbjs7XG5cbmxldCBib3JkZXJfdG9wID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgVG9wICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX2JvdHRvbSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9XG4gIGNyZWF0ZV9ib3JkZXIgfnNpZGU6YEJvdHRvbSAoKSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKVxuOztcblxubGV0IGJvcmRlcl9sZWZ0ID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgTGVmdCAoKSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKVxuOztcblxubGV0IGJvcmRlcl9yaWdodCA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9XG4gIGNyZWF0ZV9ib3JkZXIgfnNpZGU6YFJpZ2h0ICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID0gY3JlYXRlX2JvcmRlciA/c2lkZTpOb25lID93aWR0aCA/Y29sb3IgfnN0eWxlICgpICgpXG5cbmxldCBvdXRsaW5lID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJvdXRsaW5lXCIgfnZhbHVlOihib3JkZXJfdmFsdWUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkpXG47O1xuXG5sZXQgYm9yZGVyX2NvbGxhcHNlIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYFNlcGFyYXRlIC0+IFwic2VwYXJhdGVcIlxuICAgIHwgYENvbGxhcHNlIC0+IFwiY29sbGFwc2VcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYm9yZGVyLWNvbGxhcHNlXCIgfnZhbHVlXG47O1xuXG5sZXQgYm9yZGVyX3NwYWNpbmcgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiYm9yZGVyLXNwYWNpbmdcIlxubGV0IGJvcmRlcl9yYWRpdXMgbCA9IGNyZWF0ZSB+ZmllbGQ6XCJib3JkZXItcmFkaXVzXCIgfnZhbHVlOihMZW5ndGgudG9fc3RyaW5nX2NzcyBsKVxuXG50eXBlIHRleHRfZGVjb3JhdGlvbl9saW5lID1cbiAgWyBgTm9uZVxuICB8IGBVbmRlcmxpbmVcbiAgfCBgT3ZlcmxpbmVcbiAgfCBgTGluZV90aHJvdWdoXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF1cblxudHlwZSB0ZXh0X2RlY29yYXRpb25fc3R5bGUgPVxuICBbIGBTb2xpZFxuICB8IGBEb3VibGVcbiAgfCBgRG90dGVkXG4gIHwgYERhc2hlZFxuICB8IGBXYXZ5XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHRleHRfZGVjb3JhdGlvbiA/c3R5bGUgP2NvbG9yIH5saW5lICgpID1cbiAgbGV0IHZhbHVlID1cbiAgICBsZXQgbGluZSA9XG4gICAgICBMaXN0Lm1hcCBsaW5lIH5mOihmdW5jdGlvblxuICAgICAgICB8IGBMaW5lX3Rocm91Z2ggLT4gXCJsaW5lLXRocm91Z2hcIlxuICAgICAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgICAgfCBgT3ZlcmxpbmUgLT4gXCJvdmVybGluZVwiXG4gICAgICAgIHwgYFVuZGVybGluZSAtPiBcInVuZGVybGluZVwiXG4gICAgICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCIpXG4gICAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCJcbiAgICBpblxuICAgIGxldCBzdHlsZSA9XG4gICAgICBtYXRjaCBzdHlsZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgfCBTb21lIGBTb2xpZCAtPiBcInNvbGlkXCJcbiAgICAgIHwgU29tZSBgRG91YmxlIC0+IFwiZG91YmxlXCJcbiAgICAgIHwgU29tZSBgRG90dGVkIC0+IFwiZG90dGVkXCJcbiAgICAgIHwgU29tZSBgRGFzaGVkIC0+IFwiZGFzaGVkXCJcbiAgICAgIHwgU29tZSBgV2F2eSAtPiBcIndhdnlcIlxuICAgICAgfCBTb21lIGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICB8IFNvbWUgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICBpblxuICAgIGxldCBjb2xvciA9IHZhbHVlX21hcCBjb2xvciB+ZjpDb2xvci50b19zdHJpbmdfY3NzIGluXG4gICAgY29uY2F0M3YgbGluZSBzdHlsZSBjb2xvclxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInRleHQtZGVjb3JhdGlvblwiIH52YWx1ZVxuOztcblxudHlwZSBjb250ZW50X2FsaWdubWVudCA9XG4gIFsgYE5vcm1hbFxuICB8IGBGbGV4X3N0YXJ0XG4gIHwgYEZsZXhfZW5kXG4gIHwgYENlbnRlclxuICB8IGBTcGFjZV9iZXR3ZWVuXG4gIHwgYFNwYWNlX2Fyb3VuZFxuICB8IGBTcGFjZV9ldmVubHlcbiAgfCBgU3RyZXRjaFxuICBdXG5cbmxldCBjb250ZW50X2FsaWdubWVudF90b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgfCBgRmxleF9zdGFydCAtPiBcImZsZXgtc3RhcnRcIlxuICB8IGBGbGV4X2VuZCAtPiBcImZsZXgtZW5kXCJcbiAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgfCBgU3BhY2VfYmV0d2VlbiAtPiBcInNwYWNlLWJldHdlZW5cIlxuICB8IGBTcGFjZV9hcm91bmQgLT4gXCJzcGFjZS1hcm91bmRcIlxuICB8IGBTcGFjZV9ldmVubHkgLT4gXCJzcGFjZS1ldmVubHlcIlxuICB8IGBTdHJldGNoIC0+IFwic3RyZXRjaFwiXG47O1xuXG50eXBlIGl0ZW1fYWxpZ25tZW50ID1cbiAgWyBgQXV0b1xuICB8IGBGbGV4X3N0YXJ0XG4gIHwgYEZsZXhfZW5kXG4gIHwgYENlbnRlclxuICB8IGBCYXNlbGluZVxuICB8IGBTdHJldGNoXG4gIF1cblxubGV0IGl0ZW1fYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gIHwgYEZsZXhfc3RhcnQgLT4gXCJmbGV4LXN0YXJ0XCJcbiAgfCBgRmxleF9lbmQgLT4gXCJmbGV4LWVuZFwiXG4gIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gIHwgYEJhc2VsaW5lIC0+IFwiYmFzZWxpbmVcIlxuICB8IGBTdHJldGNoIC0+IFwic3RyZXRjaFwiXG47O1xuXG50eXBlIGp1c3RpZnlfY29udGVudCA9XG4gIFsgYEZsZXhfc3RhcnRcbiAgfCBgRmxleF9lbmRcbiAgfCBgQ2VudGVyXG4gIHwgYFNwYWNlX2JldHdlZW5cbiAgfCBgU3BhY2VfYXJvdW5kXG4gIHwgYFNwYWNlX2V2ZW5seVxuICBdXG5cbmxldCBqdXN0aWZ5X2NvbnRlbnRfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYEZsZXhfc3RhcnQgLT4gXCJmbGV4LXN0YXJ0XCJcbiAgfCBgRmxleF9lbmQgLT4gXCJmbGV4LWVuZFwiXG4gIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gIHwgYFNwYWNlX2JldHdlZW4gLT4gXCJzcGFjZS1iZXR3ZWVuXCJcbiAgfCBgU3BhY2VfYXJvdW5kIC0+IFwic3BhY2UtYXJvdW5kXCJcbiAgfCBgU3BhY2VfZXZlbmx5IC0+IFwic3BhY2UtZXZlbmx5XCJcbjs7XG5cbmxldCBmbGV4X2NvbnRhaW5lclxuICAgICAgPyhpbmxpbmUgPSBmYWxzZSlcbiAgICAgID8oZGlyZWN0aW9uID0gYFJvdylcbiAgICAgID8od3JhcCA9IGBOb3dyYXApXG4gICAgICA/YWxpZ25faXRlbXNcbiAgICAgID9hbGlnbl9jb250ZW50XG4gICAgICA/anVzdGlmeV9jb250ZW50XG4gICAgICA/cm93X2dhcDpyZ1xuICAgICAgP2NvbHVtbl9nYXA6Y2dcbiAgICAgICgpXG4gID1cbiAgbGV0IGRpcmVjdGlvbiA9XG4gICAgbGV0IG1ha2VfZGlyIHYgPSBjcmVhdGVfcmF3IH5maWVsZDpcImZsZXgtZGlyZWN0aW9uXCIgfnZhbHVlOnYgaW5cbiAgICBtYXRjaCBkaXJlY3Rpb24gd2l0aFxuICAgIHwgYFJvdyAtPiBtYWtlX2RpciBcInJvd1wiXG4gICAgfCBgUm93X3JldmVyc2UgLT4gbWFrZV9kaXIgXCJyb3ctcmV2ZXJzZVwiXG4gICAgfCBgQ29sdW1uIC0+IG1ha2VfZGlyIFwiY29sdW1uXCJcbiAgICB8IGBDb2x1bW5fcmV2ZXJzZSAtPiBtYWtlX2RpciBcImNvbHVtbi1yZXZlcnNlXCJcbiAgICB8IGBEZWZhdWx0IC0+IGVtcHR5XG4gIGluXG4gIGxldCB3cmFwID1cbiAgICBsZXQgbWFrZV93cmFwIHYgPSBjcmVhdGVfcmF3IH5maWVsZDpcImZsZXgtd3JhcFwiIH52YWx1ZTp2IGluXG4gICAgbWF0Y2ggd3JhcCB3aXRoXG4gICAgfCBgTm93cmFwIC0+IG1ha2Vfd3JhcCBcIm5vd3JhcFwiXG4gICAgfCBgV3JhcCAtPiBtYWtlX3dyYXAgXCJ3cmFwXCJcbiAgICB8IGBXcmFwX3JldmVyc2UgLT4gbWFrZV93cmFwIFwid3JhcC1yZXZlcnNlXCJcbiAgICB8IGBEZWZhdWx0IC0+IGVtcHR5XG4gIGluXG4gIGxldCBhbGlnbl9pdGVtcyA9XG4gICAgbWF0Y2ggYWxpZ25faXRlbXMgd2l0aFxuICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgIHwgU29tZSBhIC0+IGNyZWF0ZV9yYXcgfmZpZWxkOlwiYWxpZ24taXRlbXNcIiB+dmFsdWU6KGl0ZW1fYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgYSlcbiAgaW5cbiAgbGV0IGFsaWduX2NvbnRlbnQgPVxuICAgIG1hdGNoIGFsaWduX2NvbnRlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgIHwgU29tZSBhIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFsaWduLWNvbnRlbnRcIiB+dmFsdWU6KGNvbnRlbnRfYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgYSlcbiAgaW5cbiAgbGV0IGp1c3RpZnlfY29udGVudCA9XG4gICAgbWF0Y2gganVzdGlmeV9jb250ZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICB8IFNvbWUgYSAtPlxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJqdXN0aWZ5LWNvbnRlbnRcIiB+dmFsdWU6KGp1c3RpZnlfY29udGVudF90b19zdHJpbmdfY3NzIGEpXG4gIGluXG4gIGxldCByb3dfZ2FwID0gT3B0aW9uLnZhbHVlX21hcCB+ZGVmYXVsdDplbXB0eSB+Zjpyb3dfZ2FwIHJnIGluXG4gIGxldCBjb2x1bW5fZ2FwID0gT3B0aW9uLnZhbHVlX21hcCB+ZGVmYXVsdDplbXB0eSB+Zjpjb2x1bW5fZ2FwIGNnIGluXG4gIGNvbmNhdFxuICAgIFsgZGlzcGxheSAoaWYgaW5saW5lIHRoZW4gYElubGluZV9mbGV4IGVsc2UgYEZsZXgpXG4gICAgOyBkaXJlY3Rpb25cbiAgICA7IHdyYXBcbiAgICA7IGFsaWduX2l0ZW1zXG4gICAgOyBhbGlnbl9jb250ZW50XG4gICAgOyBqdXN0aWZ5X2NvbnRlbnRcbiAgICA7IGNvbHVtbl9nYXBcbiAgICA7IHJvd19nYXBcbiAgICBdXG47O1xuXG5sZXQgZmxleF9pdGVtID9vcmRlciA/KGJhc2lzID0gYEF1dG8pID8oc2hyaW5rID0gMS4pIH5ncm93ICgpID1cbiAgbGV0IG9yZGVyID1cbiAgICBPcHRpb24ubWFwIG9yZGVyIH5mOihmdW4gaSAtPiBjcmVhdGVfcmF3IH5maWVsZDpcIm9yZGVyXCIgfnZhbHVlOihJbnQudG9fc3RyaW5nIGkpKVxuICAgIHw+IE9wdGlvbi50b19saXN0XG4gICAgfD4gTGlzdC5qb2luXG4gIGluXG4gIGxldCBmbGV4ID1cbiAgICBsZXQgYmFzaXMgPSBBdXRvX29yX2xlbmd0aC50b19zdHJpbmdfY3NzIGJhc2lzIGluXG4gICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmbGV4XCIgfnZhbHVlOlslc3RyaW5nIFwiJXtmMnMgNiBncm93fSAle2YycyA2IHNocmlua30gJXtiYXNpc31cIl1cbiAgaW5cbiAgY29uY2F0IFsgZmxleDsgb3JkZXIgXVxuOztcblxubGV0IGFsaWduX3NlbGYgYSA9XG4gIGxldCB2YWx1ZSA9IGl0ZW1fYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgYSBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImFsaWduLXNlbGZcIiB+dmFsdWVcbjs7XG5cbmxldCByZXNpemUgKHZhbHVlIDogWyBgTm9uZSB8IGBCb3RoIHwgYEhvcml6b250YWwgfCBgVmVydGljYWwgfCBjc3NfZ2xvYmFsX3ZhbHVlcyBdKSA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBCb3RoIC0+IFwiYm90aFwiXG4gICAgfCBgSG9yaXpvbnRhbCAtPiBcImhvcml6b250YWxcIlxuICAgIHwgYFZlcnRpY2FsIC0+IFwidmVydGljYWxcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwicmVzaXplXCIgfnZhbHVlXG47O1xuXG5sZXQgYW5pbWF0aW9uIH5uYW1lIH5kdXJhdGlvbiA/ZGVsYXkgP2RpcmVjdGlvbiA/ZmlsbF9tb2RlID9pdGVyX2NvdW50ID90aW1pbmdfZnVuY3Rpb24gKClcbiAgPVxuICBsZXQgbSA9IE9wdGlvbi5tYXAgaW5cbiAgbGV0IHNwYW5fdG9fc3RyaW5nIHMgPSBbJXN0cmluZyBcIiV7ZjJzIDIgKFRpbWVfbnMuU3Bhbi50b19zZWMgcyl9c1wiXSBpblxuICBsZXQgZGlyZWN0aW9uID1cbiAgICBtIGRpcmVjdGlvbiB+ZjooZnVuIGQgLT5cbiAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgICAgICB8IGBSZXZlcnNlIC0+IFwicmV2ZXJzZVwiXG4gICAgICAgIHwgYEFsdGVybmF0ZSAtPiBcImFsdGVybmF0ZVwiXG4gICAgICAgIHwgYEFsdGVybmF0ZV9yZXZlcnNlIC0+IFwiYWx0ZXJuYXRlLXJldmVyc2VcIlxuICAgICAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICAgIGluXG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1kaXJlY3Rpb25cIiB+dmFsdWUpXG4gIGluXG4gIGxldCBmaWxsX21vZGUgPVxuICAgIG0gZmlsbF9tb2RlIH5mOihmdW4gZiAtPlxuICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgbWF0Y2ggZiB3aXRoXG4gICAgICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICAgICAgfCBgRm9yd2FyZHMgLT4gXCJmb3J3YXJkc1wiXG4gICAgICAgIHwgYEJhY2t3YXJkcyAtPiBcImJhY2t3YXJkc1wiXG4gICAgICAgIHwgYEJvdGggLT4gXCJib3RoXCJcbiAgICAgICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgICBpblxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tZmlsbC1tb2RlXCIgfnZhbHVlKVxuICBpblxuICBbIFNvbWUgKGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLW5hbWVcIiB+dmFsdWU6bmFtZSlcbiAgOyBTb21lIChjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1kdXJhdGlvblwiIH52YWx1ZTooc3Bhbl90b19zdHJpbmcgZHVyYXRpb24pKVxuICA7IG0gZGVsYXkgfmY6KGZ1biBzIC0+IGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWRlbGF5XCIgfnZhbHVlOihzcGFuX3RvX3N0cmluZyBzKSlcbiAgOyBtIGl0ZXJfY291bnQgfmY6KGZ1biBpIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnRcIiB+dmFsdWU6KEludC50b19zdHJpbmcgaSkpXG4gIDsgbSB0aW1pbmdfZnVuY3Rpb24gfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uXCIgfnZhbHVlKVxuICA7IGRpcmVjdGlvblxuICA7IGZpbGxfbW9kZVxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbnR5cGUgdXNlcl9zZWxlY3QgPVxuICBbIGBBbGxcbiAgfCBgQXV0b1xuICB8IGBOb25lXG4gIHwgYFRleHRcbiAgXVxuXG5sZXQgdXNlcl9zZWxlY3RfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYEFsbCAtPiBcImFsbFwiXG4gIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICB8IGBUZXh0IC0+IFwidGV4dFwiXG47O1xuXG5sZXQgdXNlcl9zZWxlY3QgcyA9XG4gIGxldCB2YWx1ZSA9IHVzZXJfc2VsZWN0X3RvX3N0cmluZ19jc3MgcyBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInVzZXItc2VsZWN0XCIgfnZhbHVlXG47O1xuXG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCVleHBlY3RfdGVzdCBcInRvX3N0cmluZ19jc3MgLT4gb2Zfc3RyaW5nX2Nzc19leG4gLT4gdG9fc3RyaW5nX2Nzc1wiID1cbiAgICAgIGxldCB0IGNzcyA9XG4gICAgICAgIGxldCBzID0gdG9fc3RyaW5nX2NzcyBjc3MgaW5cbiAgICAgICAgbGV0IHMyID0gdG9fc3RyaW5nX2NzcyAob2Zfc3RyaW5nX2Nzc19leG4gcykgaW5cbiAgICAgICAgcHJpbnRfZW5kbGluZSBzO1xuICAgICAgICBwcmludF9lbmRsaW5lIHMyXG4gICAgICBpblxuICAgICAgdCAoZmxleF9pdGVtIH5ncm93OjEuMCAoKSBAPiBvdmVyZmxvdyBgU2Nyb2xsKTtcbiAgICAgIHQgKGZsZXhfY29udGFpbmVyIH5pbmxpbmU6dHJ1ZSB+ZGlyZWN0aW9uOmBDb2x1bW4gKCkgQD4gYm9yZGVyIH5zdHlsZTpgRGFzaGVkICgpKTtcbiAgICAgIHQgKGNvbG9yIChgUkdCQSAoQ29sb3IuUkdCQS5jcmVhdGUgfnI6MTAwIH5nOjEwMCB+YjoxMDAgKCkpKSk7XG4gICAgICB0XG4gICAgICAgIChjb2xvclxuICAgICAgICAgICAoYEhTTEFcbiAgICAgICAgICAgICAgKENvbG9yLkhTTEEuY3JlYXRlXG4gICAgICAgICAgICAgICAgIH5oOjEwMFxuICAgICAgICAgICAgICAgICB+czooUGVyY2VudC5vZl9tdWx0IDAuNzUpXG4gICAgICAgICAgICAgICAgIH5sOihQZXJjZW50Lm9mX211bHQgMC42MClcbiAgICAgICAgICAgICAgICAgKCkpKSk7XG4gICAgICB0IChjcmVhdGUgfmZpZWxkOlwiY29udGVudFwiIH52YWx1ZTp7fFwiO1wifH0pO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBmbGV4OiAxLjAwMDAwMCAxLjAwMDAwMCBhdXRvO292ZXJmbG93OiBzY3JvbGxcbiAgICBmbGV4OiAxLjAwMDAwMCAxLjAwMDAwMCBhdXRvO292ZXJmbG93OiBzY3JvbGxcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO2ZsZXgtd3JhcDogbm93cmFwO2JvcmRlcjogZGFzaGVkXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtmbGV4LXdyYXA6IG5vd3JhcDtib3JkZXI6IGRhc2hlZFxuICAgIGNvbG9yOiByZ2IoMTAwLDEwMCwxMDApXG4gICAgY29sb3I6IHJnYigxMDAsMTAwLDEwMClcbiAgICBjb2xvcjogaHNsKDEwMCw3NSUsNjAlKVxuICAgIGNvbG9yOiBoc2woMTAwLDc1JSw2MCUpXG4gICAgY29udGVudDogXCI7XCJcbiAgICBjb250ZW50OiBcIjtcIiB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZ3JhZGllbnRzXCIgPVxuICAgICAgbGV0IHAgeCA9IFBlcmNlbnQub2ZfbXVsdCB4IGluXG4gICAgICBsZXQgYyBzID0gYE5hbWUgcyBpblxuICAgICAgbGV0IHQgY3NzID0gcHJpbnRfZW5kbGluZSAodG9fc3RyaW5nX2NzcyBjc3MpIGluXG4gICAgICB0XG4gICAgICAgIChiYWNrZ3JvdW5kX2ltYWdlXG4gICAgICAgICAgIChgTGluZWFyX2dyYWRpZW50XG4gICAgICAgICAgICAgIHsgZGlyZWN0aW9uID0gYERlZyA5MFxuICAgICAgICAgICAgICA7IHN0b3BzID1cbiAgICAgICAgICAgICAgICAgIFsgcCAwLiwgYyBcImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIDsgcCAwLjIsIGMgXCIjZmYwMDAwXCJcbiAgICAgICAgICAgICAgICAgIDsgcCAwLjQsIGMgXCJyZWRcIlxuICAgICAgICAgICAgICAgICAgOyAoIHAgMS5cbiAgICAgICAgICAgICAgICAgICAgLCBgUkdCQVxuICAgICAgICAgICAgICAgICAgICAgICAgKENvbG9yLlJHQkEuY3JlYXRlIH5yOjEwMCB+Zzo1MCB+YjozMCB+YTooUGVyY2VudC5vZl9tdWx0IDAuNzUpICgpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0pKTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8IGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgYmxhY2sgMC4wMDAwMDAlLCAjZmYwMDAwIDIwLjAwMDAwMCUsIHJlZCA0MC4wMDAwMDAlLCByZ2JhKDEwMCw1MCwzMCwwLjc1KSAxMDAuMDAwMDAwJSkgfH1dO1xuICAgICAgdFxuICAgICAgICAoYmFja2dyb3VuZF9pbWFnZVxuICAgICAgICAgICAoYFJhZGlhbF9ncmFkaWVudCB7IHN0b3BzID0gWyBwIDAuLCBjIFwiYmxhY2tcIjsgcCAxLiwgYyBcInJlZFwiIF0gfSkpO1xuICAgICAgWyVleHBlY3Qge3wgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KGJsYWNrIDAuMDAwMDAwJSwgcmVkIDEwMC4wMDAwMDAlKSB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuIiwib3BlbiBKc19vZl9vY2FtbFxuXG5sZXQgdG9fanNfc3RyaW5nIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvU3RyaW5nXG5sZXQgdG9fanNfc3RyaW5nX2ZpeGVkIGRpZ2l0cyB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b0ZpeGVkIGRpZ2l0c1xubGV0IHRvX2pzX3N0cmluZ19wcmVjaXNpb24gZGlnaXRzIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvUHJlY2lzaW9uIGRpZ2l0c1xubGV0IHRvX2pzX3N0cmluZ19leHBvbmVudGlhbCB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b0V4cG9uZW50aWFsXG5sZXQgdG9fc3RyaW5nIHZhbHVlID0gdG9fanNfc3RyaW5nIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xubGV0IHRvX3N0cmluZ19maXhlZCBkaWdpdHMgdmFsdWUgPSB0b19qc19zdHJpbmdfZml4ZWQgZGlnaXRzIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xubGV0IHRvX3N0cmluZ19wcmVjaXNpb24gZGlnaXRzIHZhbHVlID0gdG9fanNfc3RyaW5nX3ByZWNpc2lvbiBkaWdpdHMgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5sZXQgdG9fc3RyaW5nX2V4cG9uZW50aWFsIHZhbHVlID0gdG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIGxldCBvcGVuIENvcmUgaW5cbiAgbGV0IHByaW50IGYgPSBwcmludGYgXCIlc1wiICh0b19zdHJpbmcgZikgaW5cbiAgcHJpbnQgMS47XG4gIFslZXhwZWN0IHt8IDEgfH1dO1xuICBwcmludCBGbG9hdC5uYW47XG4gIFslZXhwZWN0IHt8IE5hTiB8fV07XG4gIHByaW50IEZsb2F0LmluZmluaXR5O1xuICBbJWV4cGVjdCB7fCBJbmZpbml0eSB8fV07XG4gIHByaW50IEZsb2F0Lm5lZ19pbmZpbml0eTtcbiAgWyVleHBlY3Qge3wgLUluZmluaXR5IHx9XTtcbiAgcHJpbnQgMC4wMDAwMDAwMTtcbiAgWyVleHBlY3Qge3wgMWUtOCB8fV07XG4gIHByaW50ICgtMS4pO1xuICBbJWV4cGVjdCB7fCAtMSB8fV07XG4gIHByaW50IDEuMDAwMDAwMTtcbiAgWyVleHBlY3Qge3wgMS4wMDAwMDAxIHx9XVxuOztcbiIsIm9wZW4gQmFzZVxub3BlbiBKc19vZl9vY2FtbFxuaW5jbHVkZSBVaV9lZmZlY3RcblxuKCogQWxsIHZpc2liaWxpdHkgaGFuZGxlcnMgc2VlIGFsbCBldmVudHMsIHNvIGEgc2ltcGxlIGxpc3QgaXMgZW5vdWdoLiAgKilcbmxldCB2aXNpYmlsaXR5X2hhbmRsZXJzIDogKHVuaXQgLT4gdW5pdCkgbGlzdCByZWYgPSByZWYgW11cblxubW9kdWxlIHR5cGUgVmlzaWJpbGl0eV9oYW5kbGVyID0gc2lnXG4gIHZhbCBoYW5kbGUgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgRGVmaW5lX3Zpc2liaWxpdHkgKFZIIDogVmlzaWJpbGl0eV9oYW5kbGVyKSA9IHN0cnVjdFxuICBsZXQgKCkgPSB2aXNpYmlsaXR5X2hhbmRsZXJzIDo9IFZILmhhbmRsZSA6OiAhdmlzaWJpbGl0eV9oYW5kbGVyc1xuZW5kXG5cbnR5cGUgXyB0ICs9XG4gIHwgVmlld3BvcnRfY2hhbmdlZFxuICB8IFN0b3BfcHJvcGFnYXRpb25cbiAgfCBTdG9wX2ltbWVkaWF0ZV9wcm9wYWdhdGlvblxuICB8IFByZXZlbnRfZGVmYXVsdFxuXG5sZXQgc2VxdWVuY2VfYXNfc2libGluZyBsZWZ0IH51bmxlc3Nfc3RvcHBlZCA9XG4gIGxldCByZWMgY29udGFpbnNfc3RvcCA9IGZ1bmN0aW9uXG4gICAgfCBNYW55IGVzIC0+IExpc3QuZXhpc3RzIGVzIH5mOmNvbnRhaW5zX3N0b3BcbiAgICB8IFN0b3BfaW1tZWRpYXRlX3Byb3BhZ2F0aW9uIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgaWYgY29udGFpbnNfc3RvcCBsZWZ0IHRoZW4gbGVmdCBlbHNlIFVpX2VmZmVjdC5NYW55IFsgbGVmdDsgdW5sZXNzX3N0b3BwZWQgKCkgXVxuOztcblxuKCogV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IGRvbSBldmVudCBoZXJlIHNvIHRoYXRcbiAgIG1vdmVtZW50IGJldHdlZW4gW1Zkb20uRWZmZWN0LkV4cGVydC5oYW5kbGVdIGFuZFxuICAgW1VpX2NvbmNyZXRlLkVmZmVjdC5FeHBlcnQuaGFuZGxlXSBrZWVwcyB0aGUgb3JpZ2luYWxcbiAgIGRvbSBldmVudCBhcm91bmQuICopXG5sZXQgY3VycmVudF9kb21fZXZlbnQgPSByZWYgTm9uZVxuXG5sZXQgKCkgPVxuICBIYXNodGJsLmFkZF9leG5cbiAgICBFeHBlcnQuaGFuZGxlcnNcbiAgICB+a2V5OlN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLihpZCAob2ZfdmFsIFZpZXdwb3J0X2NoYW5nZWQpKVxuICAgIH5kYXRhOihmdW4gXyAtPiBMaXN0Lml0ZXIgIXZpc2liaWxpdHlfaGFuZGxlcnMgfmY6KGZ1biBmIC0+IGYgKCkpKVxuOztcblxubGV0ICgpID1cbiAgSGFzaHRibC5hZGRfZXhuXG4gICAgRXhwZXJ0LmhhbmRsZXJzXG4gICAgfmtleTpTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCBTdG9wX3Byb3BhZ2F0aW9uKSlcbiAgICB+ZGF0YTooZnVuIF8gLT4gT3B0aW9uLml0ZXIgIWN1cnJlbnRfZG9tX2V2ZW50IH5mOkRvbV9odG1sLnN0b3BQcm9wYWdhdGlvbilcbjs7XG5cbmxldCAoKSA9XG4gIEhhc2h0YmwuYWRkX2V4blxuICAgIEV4cGVydC5oYW5kbGVyc1xuICAgIH5rZXk6U3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuKGlkIChvZl92YWwgUHJldmVudF9kZWZhdWx0KSlcbiAgICB+ZGF0YTooZnVuIF8gLT4gT3B0aW9uLml0ZXIgIWN1cnJlbnRfZG9tX2V2ZW50IH5mOkRvbS5wcmV2ZW50RGVmYXVsdClcbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGhhbmRsZV9ub25fZG9tX2V2ZW50X2V4biA9IEV4cGVydC5oYW5kbGVcblxuICBsZXQgaGFuZGxlIGRvbV9ldmVudCBldmVudCA9XG4gICAgbGV0IG9sZCA9ICFjdXJyZW50X2RvbV9ldmVudCBpblxuICAgIGN1cnJlbnRfZG9tX2V2ZW50IDo9IFNvbWUgKGRvbV9ldmVudCA6PiBEb21faHRtbC5lbGVtZW50IERvbS5ldmVudCBKcy50KTtcbiAgICBFeHBlcnQuaGFuZGxlIGV2ZW50O1xuICAgIGN1cnJlbnRfZG9tX2V2ZW50IDo9IG9sZFxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBKc19vZl9vY2FtbFxuXG5tb2R1bGUgdHlwZSBTID0gSG9va3NfaW50Zi5TXG5tb2R1bGUgdHlwZSBJbnB1dCA9IEhvb2tzX2ludGYuSW5wdXRcblxubGV0IGNhbmNlbF9hbmltYXRpb25fZnJhbWUgaWQgPSBEb21faHRtbC53aW5kb3cjI2NhbmNlbEFuaW1hdGlvbkZyYW1lIGlkXG5cbmxldCByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBmID1cbiAgRG9tX2h0bWwud2luZG93IyNyZXF1ZXN0QW5pbWF0aW9uRnJhbWUgKEpzLndyYXBfY2FsbGJhY2sgZilcbjs7XG5cbm1vZHVsZSBFeHRyYSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVCA6XG4gICAgICAgIHsgdHlwZV9pZCA6ICdhIFR5cGVfZXF1YWwuSWQudFxuICAgICAgICA7IHZhbHVlIDogJ2FcbiAgICAgICAgfVxuICAgICAgICAtPiB0XG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB7IHR5cGVfaWQ7IHZhbHVlIH0pID0gVHlwZV9lcXVhbC5JZC50b19zZXhwIHR5cGVfaWQgdmFsdWVcbmVuZFxuXG50eXBlIHQgPVxuICB8IFQgOlxuICAgICAgeyBpbnB1dCA6ICdpbnB1dFxuICAgICAgOyBpbnB1dF9pZCA6ICdpbnB1dCBUeXBlX2VxdWFsLklkLnRcbiAgICAgIDsgY29tYmluZV9pbnB1dHMgOiAnaW5wdXQgLT4gJ2lucHV0IC0+ICdpbnB1dFxuICAgICAgOyBpbml0IDpcbiAgICAgICAgICAnaW5wdXRcbiAgICAgICAgICAtPiBEb21faHRtbC5lbGVtZW50IEpzLnRcbiAgICAgICAgICAtPiAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgOyB1cGRhdGUgOlxuICAgICAgICAgICdpbnB1dFxuICAgICAgICAgIC0+ICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICAgICAgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50XG4gICAgICAgICAgLT4gJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgIDsgZGVzdHJveSA6XG4gICAgICAgICAgJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgICAgICAtPiBEb21faHRtbC5lbGVtZW50IEpzLnRcbiAgICAgICAgICAtPiB1bml0XG4gICAgICA7IGlkIDogKCdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlKSBDb3JlLlR5cGVfZXF1YWwuSWQudFxuICAgICAgfVxuICAgICAgLT4gdFxuXG5sZXQgZ2VuZXJpY19ob29rID0gbGF6eSBKcy5VbnNhZmUuKGdldCBnbG9iYWwgKEpzLnN0cmluZyBcIkdlbmVyaWNIb29rXCIpKVxuXG5sZXQgbWFrZV9ob29rIH5jb21iaW5lX2lucHV0cyB+aW5pdCB+ZXh0cmE6KGlucHV0LCBpbnB1dF9pZCkgfnVwZGF0ZSB+ZGVzdHJveSB+aWQgPVxuICBUIHsgaW5pdDsgY29tYmluZV9pbnB1dHM7IGlucHV0OyBpbnB1dF9pZDsgdXBkYXRlOyBkZXN0cm95OyBpZCB9XG47O1xuXG5sZXQgcGFjayAoVCB7IGluaXQ7IGlucHV0OyBpbnB1dF9pZDsgdXBkYXRlOyBkZXN0cm95OyBpZDsgXyB9KSA9XG4gIGxldCB3cmFwIGEgPSBhIHw+IEpzLndyYXBfY2FsbGJhY2sgfD4gSnMuVW5zYWZlLmluamVjdCBpblxuICBsZXQgaW5pdCA9IHdyYXAgKGluaXQgaW5wdXQpIGluXG4gIGxldCB1cGRhdGUgPSB3cmFwICh1cGRhdGUgaW5wdXQpIGluXG4gIGxldCBkZXN0cm95ID0gd3JhcCBkZXN0cm95IGluXG4gIGxldCBnZW5lcmljX2hvb2sgPSBMYXp5LmZvcmNlIGdlbmVyaWNfaG9vayBpblxuICBsZXQgZXh0cmEgPSBFeHRyYS5UIHsgdHlwZV9pZCA9IGlucHV0X2lkOyB2YWx1ZSA9IGlucHV0IH0gaW5cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgZ2VuZXJpY19ob29rXG4gICAgW3wgaW5pdDsgdXBkYXRlOyBkZXN0cm95OyBpZCB8PiBKcy5VbnNhZmUuaW5qZWN0OyBleHRyYSB8PiBKcy5VbnNhZmUuaW5qZWN0IHxdXG47O1xuXG5sZXQgY29tYmluZSAoVCBsZWZ0KSAoVCByaWdodCkgPVxuICBtYXRjaCBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzcyBsZWZ0LmlucHV0X2lkIHJpZ2h0LmlucHV0X2lkIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgZXByaW50X3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcImhvb2tzIGRvIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUsIHNvIHRoZXkgY2Fubm90IGJlIGNvbWJpbmVkOyB0YWtpbmcgdGhlIHNlY29uZCBcXFxuICAgICAgICAgb2YgdGhlIHR3b1wiXTtcbiAgICBUIHJpZ2h0XG4gIHwgU29tZSBUIC0+IFQgeyByaWdodCB3aXRoIGlucHV0ID0gcmlnaHQuY29tYmluZV9pbnB1dHMgbGVmdC5pbnB1dCByaWdodC5pbnB1dCB9XG47O1xuXG5tb2R1bGUgTWFrZSAoUyA6IFMpID0gc3RydWN0XG4gIGxldCBpbnB1dF9hbmRfc3RhdGVfaWQgPVxuICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlwiXCIgKGZ1biAoaW5wdXQsIF9hbmltYXRpb25faWQsIHN0YXRlKSAtPlxuICAgICAgWyVzZXhwX29mOiBTLklucHV0LnQgKiBvcGFxdWVdIChpbnB1dCwgc3RhdGUpKVxuICA7O1xuXG4gIGxldCBpbnB1dF9pZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlwiXCIgUy5JbnB1dC5zZXhwX29mX3RcblxuICBsZXQgaW5pdCBpbnB1dCBlbGVtZW50ID1cbiAgICBsZXQgc3RhdGUgPSBTLmluaXQgaW5wdXQgZWxlbWVudCBpblxuICAgIGxldCBhbmltYXRpb25faWQgPVxuICAgICAgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgKGZ1biBfIC0+IFMub25fbW91bnQgaW5wdXQgc3RhdGUgZWxlbWVudClcbiAgICBpblxuICAgIGlucHV0LCBhbmltYXRpb25faWQsIHN0YXRlXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSBpbnB1dCAob2xkX2lucHV0LCBhbmltYXRpb25faWQsIHN0YXRlKSBlbGVtZW50ID1cbiAgICBTLnVwZGF0ZSB+b2xkX2lucHV0IH5uZXdfaW5wdXQ6aW5wdXQgc3RhdGUgZWxlbWVudDtcbiAgICBpbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZVxuICA7O1xuXG4gIGxldCBkZXN0cm95IChvbGRfaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGUpIGVsZW1lbnQgPVxuICAgIGNhbmNlbF9hbmltYXRpb25fZnJhbWUgYW5pbWF0aW9uX2lkO1xuICAgIFMuZGVzdHJveSBvbGRfaW5wdXQgc3RhdGUgZWxlbWVudFxuICA7O1xuXG4gIGxldCBjcmVhdGUgaW5wdXQgPVxuICAgIG1ha2VfaG9va1xuICAgICAgfmV4dHJhOihpbnB1dCwgaW5wdXRfaWQpXG4gICAgICB+Y29tYmluZV9pbnB1dHM6Uy5JbnB1dC5jb21iaW5lXG4gICAgICB+aWQ6aW5wdXRfYW5kX3N0YXRlX2lkXG4gICAgICB+aW5pdFxuICAgICAgfnVwZGF0ZVxuICAgICAgfmRlc3Ryb3lcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBsZXQgdHlwZV9pZCA9IGlucHV0X2lkXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgRXh0cmEgPSBFeHRyYVxuZW5kXG4iLCJvcGVuISBKc19vZl9vY2FtbFxub3BlbiEgSnNcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSBtYXAgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgc2V0IDogJ2EgLT4gJ2IgLT4gdW5pdCBtZXRoXG4gIG1ldGhvZCBnZXQgOiAnYSAtPiAnYiBPcHRkZWYudCBtZXRoXG4gIG1ldGhvZCBkZWxldGUgOiAnYSAtPiB1bml0IG1ldGhcbmVuZFxuXG50eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBtYXAgSnMudFxuXG5sZXQgbWFwIDogdW5pdCAtPiAoJ2EsICdiKSBtYXAgSnMudCBKcy5jb25zdHIgPSBmdW4gKCkgLT4gVW5zYWZlLmdsb2JhbCMjLl9NYXBcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBtYXAgPSBtYXAgKCkgaW5cbiAgbmV3JWpzIG1hcFxuOztcblxubGV0IHNldCB0IGEgYiA9IHQjI3NldCBhIGJcbmxldCBnZXQgdCBhID0gSnMuT3B0ZGVmLnRvX29wdGlvbiAodCMjZ2V0IGEpXG5sZXQgZGVsZXRlIHQgYSA9IHQjI2RlbGV0ZSBhXG4iLCJvcGVuIEJhc2Vcbm9wZW4gSnNfb2Zfb2NhbWxcblxubW9kdWxlIEpzX29iamVjdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBKcy5VbnNhZmUuYW55XG5cbiAgbGV0IGVtcHR5X29iaiAoKSA9IEpzLlVuc2FmZS5vYmogW3x8XVxuICBsZXQgc2V0X3Byb3BfYXNjaWkgdCBuYW1lIHZhbHVlID0gSnMuVW5zYWZlLnNldCB0IChKcy5zdHJpbmcgbmFtZSkgdmFsdWVcbiAgbGV0IGdldF9wcm9wX2FzY2lpIHQgbmFtZSA9IEpzLlVuc2FmZS5nZXQgdCAoSnMuc3RyaW5nIG5hbWUpXG4gIGxldCBoYXNfcHJvcGVydHkgdCBuYW1lID0gSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5nZXQgdCAoSnMuc3RyaW5nIG5hbWUpKVxuICBsZXQgaXNfdW5kZWZpbmVkIGEgPSBub3QgKEpzLk9wdGRlZi50ZXN0IGEpXG5lbmRcblxubW9kdWxlIEF0dHJzID0gc3RydWN0XG4gIHR5cGUgdCA9IEpzX29iamVjdC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA6IHQgPSBKc19vYmplY3QuZW1wdHlfb2JqICgpXG5cbiAgbGV0IHNldF9wcm9wZXJ0eSA6IHQgLT4gc3RyaW5nIC0+IHQgLT4gdW5pdCA9XG4gICAgZnVuIHQgbmFtZSB2YWx1ZSAtPiBKc19vYmplY3Quc2V0X3Byb3BfYXNjaWkgdCBuYW1lIHZhbHVlXG4gIDs7XG5cbiAgbGV0IGhhc19wcm9wZXJ0eSA6IHQgLT4gc3RyaW5nIC0+IGJvb2wgPSBKc19vYmplY3QuaGFzX3Byb3BlcnR5XG5cbiAgbGV0IGhhc19hdHRyaWJ1dGUgdCBuYW1lID1cbiAgICBKc19vYmplY3QuaGFzX3Byb3BlcnR5IHQgXCJhdHRyaWJ1dGVzXCJcbiAgICAmJiBKc19vYmplY3QuaGFzX3Byb3BlcnR5IChKc19vYmplY3QuZ2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIikgbmFtZVxuICA7O1xuXG4gIGxldCBzZXRfYXR0cmlidXRlIDogdCAtPiBzdHJpbmcgLT4gdCAtPiB1bml0ID1cbiAgICBmdW4gdCBuYW1lIHZhbHVlIC0+XG4gICAgICBpZiBKc19vYmplY3QuaXNfdW5kZWZpbmVkIChKc19vYmplY3QuZ2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIilcbiAgICAgIHRoZW4gSnNfb2JqZWN0LnNldF9wcm9wX2FzY2lpIHQgXCJhdHRyaWJ1dGVzXCIgKEpzX29iamVjdC5lbXB0eV9vYmogKCkpO1xuICAgICAgSnNfb2JqZWN0LnNldF9wcm9wX2FzY2lpIChKc19vYmplY3QuZ2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIikgbmFtZSB2YWx1ZVxuICA7O1xuZW5kXG5cbnR5cGUgdmlydHVhbF9kb21fbm9kZVxudHlwZSB2aXJ0dWFsX2RvbV9wYXRjaFxuXG5tb2R1bGUgVmlydHVhbF9kb20gPSBzdHJ1Y3RcbiAgY2xhc3MgdHlwZSB2aXJ0dWFsX2RvbSA9IG9iamVjdFxuICAgIG1ldGhvZCBfVk5vZGUgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50XG4gICAgICAgLT4gQXR0cnMudFxuICAgICAgIC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmXG4gICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50KVxuICAgICAgICBKcy5jb25zdHJcbiAgICAgICAgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF9WVGV4dCA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50KSBKcy5jb25zdHIgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNyZWF0ZUVsZW1lbnQgOiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCBkaWZmIDpcbiAgICAgIHZpcnR1YWxfZG9tX25vZGUgSnMudCAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgLT4gdmlydHVhbF9kb21fcGF0Y2ggSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcGF0Y2ggOlxuICAgICAgRG9tX2h0bWwuZWxlbWVudCBKcy50IC0+IHZpcnR1YWxfZG9tX3BhdGNoIEpzLnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCBzdmcgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50XG4gICAgICAgLT4gQXR0cnMudFxuICAgICAgIC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmXG4gICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50KVxuICAgICAgICBKcy5jb25zdHJcbiAgICAgICAgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBsZXQgdmlydHVhbF9kb20gOiB2aXJ0dWFsX2RvbSBKcy50ID0gSnMuVW5zYWZlLmdsb2JhbCAjIy4gVmlydHVhbERvbVxuZW5kXG5cbm1vZHVsZSBOb2RlID0gc3RydWN0XG4gIG9wZW4gVmlydHVhbF9kb21cblxuICB0eXBlIHQgPSB2aXJ0dWFsX2RvbV9ub2RlIEpzLnRcblxuICBsZXQgdG9fZG9tIDogdmlydHVhbF9kb21fbm9kZSBKcy50IC0+IERvbV9odG1sLmVsZW1lbnQgSnMudCA9XG4gICAgZnVuIHZub2RlIC0+IHZpcnR1YWxfZG9tIyNjcmVhdGVFbGVtZW50IHZub2RlXG4gIDs7XG5cbiAgbGV0IG5vZGVcbiAgICA6ICBzdHJpbmcgLT4gQXR0cnMudCAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBzdHJpbmcgb3B0aW9uXG4gICAgICAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnRcbiAgICA9XG4gICAgZnVuIHRhZyBhdHRycyBjaGlsZHJlbiBrZXkgLT5cbiAgICAgIGxldCB0YWcgPSBKcy5zdHJpbmcgdGFnIGluXG4gICAgICBsZXQga2V5ID1cbiAgICAgICAgbWF0Y2gga2V5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEpzLk9wdGRlZi5lbXB0eVxuICAgICAgICB8IFNvbWUga2V5IC0+IEpzLk9wdGRlZi5yZXR1cm4gKEpzX29mX29jYW1sLkpzLnN0cmluZyBrZXkpXG4gICAgICBpblxuICAgICAgbGV0IHZub2RlID0gdmlydHVhbF9kb20jIy5fVk5vZGUgaW5cbiAgICAgIG5ldyVqcyB2bm9kZSB0YWcgYXR0cnMgY2hpbGRyZW4ga2V5XG4gIDs7XG5cbiAgbGV0IHN2Z1xuICAgIDogIHN0cmluZyAtPiBBdHRycy50IC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHN0cmluZyBvcHRpb25cbiAgICAgIC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudFxuICAgID1cbiAgICBmdW4gdGFnIGF0dHJzIGNoaWxkcmVuIGtleSAtPlxuICAgICAgbGV0IHRhZyA9IEpzLnN0cmluZyB0YWcgaW5cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBtYXRjaCBrZXkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gSnMuT3B0ZGVmLmVtcHR5XG4gICAgICAgIHwgU29tZSBrZXkgLT4gSnMuT3B0ZGVmLnJldHVybiAoSnMuc3RyaW5nIGtleSlcbiAgICAgIGluXG4gICAgICBsZXQgdnN2ZyA9IHZpcnR1YWxfZG9tIyMuc3ZnIGluXG4gICAgICBuZXclanMgdnN2ZyB0YWcgYXR0cnMgY2hpbGRyZW4ga2V5XG4gIDs7XG5cbiAgbGV0IHRleHQgcyA9XG4gICAgbGV0IHZ0ZXh0ID0gdmlydHVhbF9kb20jIy5fVlRleHQgaW5cbiAgICBuZXclanMgdnRleHQgKEpzLnN0cmluZyBzKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBQYXRjaCA9IHN0cnVjdFxuICBvcGVuIFZpcnR1YWxfZG9tXG5cbiAgdHlwZSB0ID0gdmlydHVhbF9kb21fcGF0Y2ggSnMudFxuXG4gIGxldCBkaWZmIDogdmlydHVhbF9kb21fbm9kZSBKcy50IC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCAtPiB2aXJ0dWFsX2RvbV9wYXRjaCBKcy50ID1cbiAgICBmdW4gYSBiIC0+IHZpcnR1YWxfZG9tIyNkaWZmIGEgYlxuICA7O1xuXG4gIGxldCBwYXRjaCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiB2aXJ0dWFsX2RvbV9wYXRjaCBKcy50IC0+IERvbV9odG1sLmVsZW1lbnQgSnMudCA9XG4gICAgZnVuIGVsZW1lbnQgdm5vZGUgLT4gdmlydHVhbF9kb20jI3BhdGNoIGVsZW1lbnQgdm5vZGVcbiAgOztcblxuICBsZXQgY3JlYXRlIH5wcmV2aW91cyB+Y3VycmVudCA9IGRpZmYgcHJldmlvdXMgY3VycmVudFxuICBsZXQgYXBwbHkgPSBwYXRjaFxuXG4gIGxldCBpc19lbXB0eSA6IHQgLT4gYm9vbCA9XG4gICAgbGV0IGYgPVxuICAgICAgSnMuVW5zYWZlLnB1cmVfanNfZXhwclxuICAgICAgICB7anN8XG4gICAgICAgIChmdW5jdGlvbiAocGF0Y2gpIHtcbiAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcGF0Y2gpIHtcbiAgICAgICAgICAgIGlmIChrZXkgIT09ICdhJykgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0pXG4gICAgICB8anN9XG4gICAgaW5cbiAgICBmdW4gKHQgOiB0KSAtPiBKcy5VbnNhZmUuZnVuX2NhbGwgZiBbfCBKcy5VbnNhZmUuaW5qZWN0IHQgfF0gfD4gSnMudG9fYm9vbFxuICA7O1xuZW5kXG5cbm1vZHVsZSBXaWRnZXQgPSBzdHJ1Y3RcbiAgY2xhc3MgdHlwZSBbJ3MsICdlbGVtZW50XSB3aWRnZXQgPSBvYmplY3RcbiAgICBjb25zdHJhaW50ICdlbGVtZW50ID0gI0RvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgIG1ldGhvZCB0eXBlXyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAoKiB2aXJ0dWFsLWRvbSBjb25zaWRlcnMgdHdvIHdpZGdldHMgb2YgYmVpbmcgb2YgdGhlIHNhbWUgXCJraW5kXCIgaWYgZWl0aGVyXG4gICAgICAgb2YgdGhlIGZvbGxvd2luZyBob2xkczpcblxuICAgICAgIDEuIFRoZXkgYm90aCBoYXZlIGEgXCJuYW1lXCIgYXR0cmlidXRlIGFuZCB0aGVpciBcImlkXCIgZmllbGRzIGFyZSBlcXVhbC5cbiAgICAgICAoSSB0aGluayB0aGlzIGlzIHByb2JhYmx5IGEgYnVnIGluIHZpcnR1YWwtZG9tIGFuZCBoYXZlIGZpZWxkIGFuIGlzc3VlXG4gICAgICAgb24gZ2l0aHViOiBbaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9pc3N1ZXMvMzgwXSlcblxuICAgICAgIDIuIFRoZWlyIFtpbml0XSBtZXRob2RzIGFyZSBcIj09PVwiIGVxdWFsLiBUaGlzIGlzIHRydWUgd2hlbiB1c2luZyB2aXJ0dWFsLWRvbVxuICAgICAgIHdpZGdldHMgaW4gdGhlIHVzdWFsIHN0eWxlIGluIEphdmFzY3JpcHQsIHNpbmNlIHRoZSBbaW5pdF0gbWV0aG9kIHdpbGwgYmUgZGVmaW5lZFxuICAgICAgIG9uIGEgcHJvdG90eXBlLCBidXQgaXMgbm90IHRydWUgaW4gdGhpcyBiaW5kaW5nIGFzIGl0IGlzIHJlZGVmaW5lZCBmb3IgZWFjaFxuICAgICAgIGNhbGwgdG8gW3dpZGdldF0uXG5cbiAgICAgICBTbywgd2UgZ28gd2l0aCBvcHRpb24gMSBhbmQgbXVzdCBoYXZlIGEgdHJpdmlhbCBmaWVsZCBjYWxsZWQgW25hbWVdLlxuICAgICopXG4gICAgbWV0aG9kIG5hbWUgOiB1bml0IEpzLndyaXRlb25seV9wcm9wXG4gICAgbWV0aG9kIGlkIDogKCdzICogJ2VsZW1lbnQpIFR5cGVfZXF1YWwuSWQudCBKcy5wcm9wXG4gICAgbWV0aG9kIHN0YXRlIDogJ3MgSnMucHJvcFxuICAgIG1ldGhvZCB2ZG9tRm9yVGVzdGluZyA6IE5vZGUudCBMYXp5LnQgb3B0aW9uIEpzLnByb3BcbiAgICBtZXRob2QgaW5mbyA6IFNleHAudCBMYXp5LnQgb3B0aW9uIEpzLnByb3BcbiAgICBtZXRob2QgZGVzdHJveSA6ICgnZWxlbWVudCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHVwZGF0ZSA6XG4gICAgICAoKCdvdGhlcl9zdGF0ZSwgJ290aGVyX2VsZW1lbnQpIHdpZGdldCBKcy50IC0+ICdlbGVtZW50IC0+ICdlbGVtZW50KSBKcy5jYWxsYmFja1xuICAgICAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGluaXQgOiAodW5pdCAtPiAnZWxlbWVudCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcbiAgZW5kXG5cbiAgKCogV2UgbW9kZWwgSlMgbGV2ZWwgb2JqZWN0cyBoZXJlIHNvIHRoZXJlIGlzIGEgbG90IG9mIHRocm93aW5nIGF3YXkgb2YgdHlwZVxuICAgICBpbmZvcm1hdGlvbi4gIFdlIGNvdWxkIHBvc3NpYmx5IHRyeSB0byByZWRpc2NvdmVyIG1vcmUgb2YgaXQuICBPciBtYXliZSB3ZVxuICAgICBzaG91bGQgc2VlIGlmIHdlIGNhbiBnZXQgcmlkIFdpZGdldCBjb21wbGV0ZWx5LlxuICAgICB0aGUgdW5pdCB0eXBlIHBhcmFtZXRlcnMgaGVyZSBhcmUgbm90IGFjdHVhbGx5IHVuaXQsIGJ1dCBwYXJ0IG9mXG4gICAgIHRoZSB0eXBlIGluZm8gd2UgaGF2ZSB0aHJvd24gYXdheSBpbnRvIG91ciBkYW5jZVxuICAgICB3aXRoIEpTICopXG4gIHR5cGUgdCA9IE5vZGUudFxuXG4gICgqIGhlcmUgaXMgaG93IHdlIHRocm93IGF3YXkgdHlwZSBpbmZvcm1hdGlvbi4gIE91ciBnb29kIG9sZCBmcmllbmQgT2JqLm1hZ2ljLFxuICAgICBidXQgY29uc3RyYWluZWQgYSBsaXR0bGUgYml0ICopXG4gIGxldCBub2RlX29mX3dpZGdldCA6IChfLCBfKSB3aWRnZXQgSnMudCAtPiBOb2RlLnQgPSBTdGRsaWIuT2JqLm1hZ2ljXG5cbiAgbW9kdWxlIFN0YXRlX2tlZXBlciA9IHN0cnVjdFxuICAgIHR5cGUgYm94ID0gVCA6ICgnYSAqIF8pIFR5cGVfZXF1YWwuSWQudCAqICdhIC0+IGJveFxuXG4gICAgbGV0IHQgOiAoSnMuVW5zYWZlLmFueSwgYm94KSBKc19tYXAudCA9IEpzX21hcC5jcmVhdGUgKClcbiAgICBsZXQgc2V0IH5pZCBlbGVtZW50IHN0YXRlID0gSnNfbWFwLnNldCB0IChKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQpIChUIChpZCwgc3RhdGUpKVxuXG4gICAgbGV0IGdldCA6IHR5cGUgYSBiLiBpZDooYSAqIGIpIFR5cGVfZXF1YWwuSWQudCAtPiBfIC0+IGEgPVxuICAgICAgZnVuIH5pZCBlbGVtZW50IC0+XG4gICAgICBsZXQgZWxlbWVudCA9IEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudCBpblxuICAgICAgbWF0Y2ggSnNfbWFwLmdldCB0IGVsZW1lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBpZF9zZXhwID0gVHlwZV9lcXVhbC5JZC5zZXhwX29mX3QgKGZ1biBfIC0+IFNleHAuQXRvbSBcIjxvcGFxdWU+XCIpIGlkIGluXG4gICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiQlVHOiBlbGVtZW50IHN0YXRlIG5vdCBmb3VuZFwiIChpZF9zZXhwIDogU2V4cC50KV1cbiAgICAgIHwgU29tZSAoVCAoZl9pZCwgc3RhdGUpKSAtPlxuICAgICAgICBsZXQgVCA9IFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biBpZCBmX2lkIGluXG4gICAgICAgIHN0YXRlXG4gICAgOztcblxuICAgIGxldCBkZWxldGUgZWxlbWVudCA9IEpzX21hcC5kZWxldGUgdCAoSnMuVW5zYWZlLmluamVjdCBlbGVtZW50KVxuICBlbmRcblxuICBsZXQgY3JlYXRlXG4gICAgICAgICh0eXBlIHMpXG4gICAgICAgID8odmRvbV9mb3JfdGVzdGluZyA6IE5vZGUudCBMYXp5LnQgb3B0aW9uKVxuICAgICAgICA/KGRlc3Ryb3kgOiBzIC0+ICdlbGVtZW50IC0+IHVuaXQgPSBmdW4gXyBfIC0+ICgpKVxuICAgICAgICA/KHVwZGF0ZSA6IHMgLT4gJ2VsZW1lbnQgLT4gcyAqICdlbGVtZW50ID0gZnVuIHMgZWx0IC0+IHMsIGVsdClcbiAgICAgICAgfihpZCA6IChzICogJ2VsZW1lbnQpIFR5cGVfZXF1YWwuSWQudClcbiAgICAgICAgfihpbml0IDogdW5pdCAtPiBzICogJ2VsZW1lbnQpXG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCBvYmogOiAocywgXykgd2lkZ2V0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgICBvYmojIy50eXBlXyA6PSBKcy5zdHJpbmcgXCJXaWRnZXRcIjtcbiAgICBvYmojIy5uYW1lIDo9ICgpO1xuICAgIG9iaiMjLmlkIDo9IGlkO1xuICAgIG9iaiMjLnZkb21Gb3JUZXN0aW5nIDo9IHZkb21fZm9yX3Rlc3Rpbmc7XG4gICAgb2JqIyMuaW5pdFxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biAoKSAtPlxuICAgICAgbGV0IHMwLCBkb21fbm9kZSA9IGluaXQgKCkgaW5cbiAgICAgIFN0YXRlX2tlZXBlci5zZXQgfmlkIGRvbV9ub2RlIHMwO1xuICAgICAgZG9tX25vZGUpO1xuICAgIG9iaiMjLnVwZGF0ZVxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBwcmV2IGRvbV9ub2RlIC0+XG4gICAgICAoKiBUaGUgW3VwZGF0ZV0gbWV0aG9kIG9mIFtvYmpdIGlzIG9ubHkgY2FsbGVkIGJ5IHZpcnR1YWwtZG9tIGFmdGVyIGl0IGhhcyBjaGVja2VkXG4gICAgICAgICB0aGF0IHRoZSBbaWRdcyBvZiBbcHJldl0gYW5kIFtvYmpdIGFyZSBcIj09PVwiIGVxdWFsLiBUaHVzIFtzYW1lX3dpdG5lc3NfZXhuXSB3aWxsXG4gICAgICAgICBuZXZlciByYWlzZS4gKilcbiAgICAgIG1hdGNoIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biBwcmV2IyMuaWQgaWQgd2l0aFxuICAgICAgfCBUeXBlX2VxdWFsLlQgLT5cbiAgICAgICAgbGV0IHByZXZfc3RhdGUgPSBTdGF0ZV9rZWVwZXIuZ2V0IH5pZCBkb21fbm9kZSBpblxuICAgICAgICBsZXQgc3RhdGUnLCBkb21fbm9kZScgPSB1cGRhdGUgcHJldl9zdGF0ZSBkb21fbm9kZSBpblxuICAgICAgICBTdGF0ZV9rZWVwZXIuZGVsZXRlIGRvbV9ub2RlO1xuICAgICAgICBTdGF0ZV9rZWVwZXIuc2V0IH5pZCBkb21fbm9kZScgc3RhdGUnO1xuICAgICAgICBkb21fbm9kZScpO1xuICAgIG9iaiMjLmRlc3Ryb3lcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gZG9tX25vZGUgLT5cbiAgICAgIGxldCBwcmV2X3N0YXRlID0gU3RhdGVfa2VlcGVyLmdldCB+aWQgZG9tX25vZGUgaW5cbiAgICAgIGRlc3Ryb3kgcHJldl9zdGF0ZSBkb21fbm9kZTtcbiAgICAgIFN0YXRlX2tlZXBlci5kZWxldGUgZG9tX25vZGUpO1xuICAgIG5vZGVfb2Zfd2lkZ2V0IG9ialxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuIEpzX29mX29jYW1sXG5tb2R1bGUgVmRvbV9yYXcgPSBSYXdcblxubGV0ICgpID1cbiAgKCogdXNlIHRoZSBuYXRpdmUtamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBmbG9hdCAtPiBzdHJpbmcgd2l0aCBhIGZpeGVkIG51bWJlciBvZlxuICAgICBudW1iZXJzIGFmdGVyIHRoZSBkZWNpbWFsIHBsYWNlLiAqKVxuICBDc3NfZ2VuLlByaXZhdGUuZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgOj0gRG9tX2Zsb2F0LnRvX3N0cmluZ19maXhlZFxuOztcblxuKCoqIFRoaXMgaGFzIDMga2luZHMgb2YgY29uc3RydWN0b3JzLlxuICAgIHt2XG4gICAgICAtIGNvbnN0cnVjdG9ycyBmb3IgcHJvcGVydGllcyAvIGF0dHJpYnV0ZXMgZm9yIHdoaWNoIHdlXG4gICAgICAgIGhhdmUgd3JpdHRlbiBmaXJzdCBjbGFzcyBvY2FtbCByZXByZXNlbnRhdGlvbnMgKHNvIGZhciBvbmx5IFN0eWxlLFxuICAgICAgICBDbGFzcywgYW5kIEhhbmRsZXIpXG5cbiAgICAgIC0gVGhvc2Ugd2hpY2ggd2UgaW1tZWRpYXRlbHkgY29udmVydCBpbnRvIEpzIGNhbGxlZCBSYXcsIHdoaWNoXG4gICAgICAgIGluIHR1cm4gaGFzIHR3byBjYXNlczpcbiAgICAgICAgLSBQcm9wZXJ0eSBmb3IgcHJvcGVydGllcyBvbiB0aGUgRE9NXG4gICAgICAgIC0gQXR0cmlidXRlIGZvciBhdHRyaWJ1dGVzIG9uIHRoZSBET01cblxuICAgICAgLSBIb29rcywgd2hpY2ggcmVnaXN0ZXIgY2FsbGJhY2tzIG9uIHByb3BlcnR5IGFkZGl0aW9uIGFuZCByZW1vdmFsLlxuICAgIHZ9XG5cbiAgICBHZW5lcmFsbHkgc3BlYWtpbmcgb25lIHNob3VsZCBhdm9pZCBjcmVhdGluZyBhIHByb3BlcnR5IG9yIGF0dHJpYnV0ZVxuICAgIGZvciBzb21ldGhpbmcgZm9yIHdoaWNoIHdlIGhhdmUgYSBmaXJzdCBjbGFzcyByZXByZXNlbnRhdGlvbi5cbiopXG5cbm1vZHVsZSBFdmVudF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUIDpcbiAgICAgICAgeyB0eXBlX2lkIDogJ2EgVHlwZV9lcXVhbC5JZC50XG4gICAgICAgIDsgaGFuZGxlciA6ICgjRG9tX2h0bWwuZXZlbnQgYXMgJ2EpIEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudFxuICAgICAgICB9XG4gICAgICAgIC0+IHRcblxuICBsZXQgY29tYmluZVxuICAgICAgICAoVCB7IHR5cGVfaWQgPSBsdGlkOyBoYW5kbGVyID0gbGhhbmRsZXIgfSlcbiAgICAgICAgKFQgeyB0eXBlX2lkID0gcnRpZDsgaGFuZGxlciA9IHJoYW5kbGVyIH0gYXMgcmlnaHQpXG4gICAgPVxuICAgICgqIElmIHRoZXkgYXJlIG5vdCB0aGUgc2FtZSB3aXRuZXNzLCB0aGVuIGl0IGlzIGEgYnVnIGluIHZpcnR1YWxfZG9tLCBzaW5jZVxuICAgICAgIHdlIGRvIG5vdCBleHBvc2UgW29uXSBhbnltb3JlIHdoaWNoIG1lYW5zIHRoaXMgbGlicmFyeSBjYW4gZGV0ZXJtaW5lZCB0aGVcbiAgICAgICBbVHlwZV9lcXVhbC5JZF0gY29ycmVzcG9uZGluZyB0byBlYWNoIGV2ZW50LiB2aXJ0dWFsX2RvbSBtYWludGFpbnMgdGhlXG4gICAgICAgaW52YXJpYW50IHRoYXQgYW55IHR3byBldmVudHMgd2l0aCB0aGUgc2FtZSBuYW1lIHdpbGwgcHJvZHVjZSBoYW5kbGVyc1xuICAgICAgIHRoYXQgaGF2ZSB0aGUgc2FtZSBbVHlwZV9lcXVhbC5JZF0uICopXG4gICAgbWF0Y2ggVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3MgbHRpZCBydGlkIHdpdGhcbiAgICB8IFNvbWUgVCAtPlxuICAgICAgVFxuICAgICAgICB7IHR5cGVfaWQgPSBsdGlkXG4gICAgICAgIDsgaGFuZGxlciA9XG4gICAgICAgICAgICAoZnVuIHZhbHVlIC0+XG4gICAgICAgICAgICAgICBFZmZlY3Quc2VxdWVuY2VfYXNfc2libGluZyAobGhhbmRsZXIgdmFsdWUpIH51bmxlc3Nfc3RvcHBlZDooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIHJoYW5kbGVyIHZhbHVlKSlcbiAgICAgICAgfVxuICAgIHwgTm9uZSAtPlxuICAgICAgZXByaW50X3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJCVUchICBUeXBlLWlkcyBmb3IgZXZlbnQgaGFuZGxlcnMgZGlmZmVyXCJcbiAgICAgICAgICAgIChsdGlkIDogXyBUeXBlX2VxdWFsLklkLnQpXG4gICAgICAgICAgICAocnRpZCA6IF8gVHlwZV9lcXVhbC5JZC50KV07XG4gICAgICByaWdodFxuICA7O1xuZW5kXG5cbnR5cGUgdCA9XG4gIHwgUHJvcGVydHkgb2ZcbiAgICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgOiBib29sXG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgdmFsdWUgOiBKcy5VbnNhZmUuYW55XG4gICAgICB9XG4gIHwgQXR0cmlidXRlIG9mXG4gICAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzIDogYm9vbFxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICA7IHZhbHVlIDogSnMuVW5zYWZlLmFueVxuICAgICAgfVxuICB8IEhhbmRsZXIgb2ZcbiAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyBoYW5kbGVyIDogRXZlbnRfaGFuZGxlci50XG4gICAgICB9XG4gIHwgSG9vayBvZlxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IGhvb2sgOiBIb29rcy50XG4gICAgICB9XG4gIHwgU3R5bGUgb2YgQ3NzX2dlbi50XG4gIHwgQ2xhc3Mgb2Ygc3RyaW5nIGxpc3RcbiAgfCBNYW55IG9mIHQgbGlzdFxuICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgb2ZcbiAgICAgIHQgbGlzdCAqIChDc3NfZ2VuLnQgLT4gQ3NzX2dlbi50KSAqIChzdHJpbmcgbGlzdCAtPiBzdHJpbmcgbGlzdClcbiAgfCBNYW55X3dpdGhvdXRfbWVyZ2Ugb2YgdCBsaXN0XG5cbmxldCBjcmVhdGUgbmFtZSB2YWx1ZSA9XG4gIEF0dHJpYnV0ZVxuICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZTsgbmFtZTsgdmFsdWUgPSBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgdmFsdWUpIH1cbjs7XG5cbmxldCBjcmVhdGVfZmxvYXQgbmFtZSB2YWx1ZSA9XG4gIEF0dHJpYnV0ZVxuICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZVxuICAgIDsgbmFtZVxuICAgIDsgdmFsdWUgPSBKcy5VbnNhZmUuaW5qZWN0IChEb21fZmxvYXQudG9fanNfc3RyaW5nIHZhbHVlKVxuICAgIH1cbjs7XG5cbmxldCBwcm9wZXJ0eSBuYW1lIHZhbHVlID0gUHJvcGVydHkgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSB9XG5cbmxldCBzdHJpbmdfcHJvcGVydHkgbmFtZSB2YWx1ZSA9XG4gIFByb3BlcnR5XG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB2YWx1ZSkgfVxuOztcblxubGV0IGJvb2xfcHJvcGVydHkgbmFtZSB2YWx1ZSA9XG4gIFByb3BlcnR5XG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKEpzLmJvb2wgdmFsdWUpIH1cbjs7XG5cbmxldCBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZ1bmN0aW9uXG4gIHwgQXR0cmlidXRlIGF0dHJpYnV0ZSAtPiBBdHRyaWJ1dGUgeyBhdHRyaWJ1dGUgd2l0aCBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IHRydWUgfVxuICB8IFByb3BlcnR5IHByb3BlcnR5IC0+IFByb3BlcnR5IHsgcHJvcGVydHkgd2l0aCBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IHRydWUgfVxuICB8IHQgLT4gdFxuOztcblxubGV0IGNyZWF0ZV9ob29rIG5hbWUgaG9vayA9IEhvb2sgeyBuYW1lOyBob29rIH1cbmxldCBtYW55IGF0dHJzID0gTWFueSBhdHRyc1xubGV0IG1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyA9IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRyc1xubGV0IGVtcHR5ID0gTWFueSBbXVxubGV0IGNvbWJpbmUgbGVmdCByaWdodCA9IE1hbnkgWyBsZWZ0OyByaWdodCBdXG5sZXQgKCBAICkgPSBjb21iaW5lXG5cbm1vZHVsZSBVbm1lcmdlZF93YXJuaW5nX21vZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5vX3dhcm5pbmdzXG4gICAgfCBBbGxfd2FybmluZ3NcbiAgICB8IFN0b3BfYWZ0ZXJfcXVvdGEgb2YgaW50XG5cbiAgbGV0IHdhcm5pbmdfY291bnQgPSByZWYgMFxuICBsZXQgY3VycmVudCA9IHJlZiAoU3RvcF9hZnRlcl9xdW90YSAxMDApXG5cbiAgbGV0IHdhcm5fcyBzID1cbiAgICBpbmNyIHdhcm5pbmdfY291bnQ7XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgTm9fd2FybmluZ3MgLT4gKClcbiAgICB8IEFsbF93YXJuaW5ncyAtPiBlcHJpbnRfcyBzXG4gICAgfCBTdG9wX2FmdGVyX3F1b3RhIHF1b3RhIC0+XG4gICAgICBsZXQgd2FybmluZ19jb3VudCA9ICF3YXJuaW5nX2NvdW50IGluXG4gICAgICBpZiB3YXJuaW5nX2NvdW50IDw9IHF1b3RhXG4gICAgICB0aGVuIChcbiAgICAgICAgZXByaW50X3MgcztcbiAgICAgICAgaWYgd2FybmluZ19jb3VudCA9IHF1b3RhXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBlcHJpbnRfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiV0FSTklORzogcmVhY2hlZCB3YXJuaW5nIG1lc3NhZ2UgcXVvdGE7IG5vIG1vcmUgbWVzc2FnZXMgd2lsbCBiZSBwcmludGVkXCJcbiAgICAgICAgICAgICAgICAocXVvdGEgOiBpbnQpXSlcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBsZXQgcmVzZXRfd2FybmluZ19jb3VudCAoKSA9IHdhcm5pbmdfY291bnQgOj0gMFxuICBlbmRcbmVuZFxuXG50eXBlIG1lcmdlID1cbiAgeyBzdHlsZXMgOiBDc3NfZ2VuLnRcbiAgOyBjbGFzc2VzIDogc3RyaW5nIGxpc3RcbiAgOyBoYW5kbGVycyA6IEV2ZW50X2hhbmRsZXIudCBNYXAuTShTdHJpbmcpLnRcbiAgOyBob29rcyA6IEhvb2tzLnQgTWFwLk0oU3RyaW5nKS50XG4gIH1cblxubGV0IGNvbWJpbmluZ19tYXBfYWRkIG1hcCBrZXkgdmFsdWUgfmNvbWJpbmUgPVxuICBNYXAudXBkYXRlIG1hcCBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgfCBTb21lIGV4aXN0aW5nX3ZhbHVlIC0+IGNvbWJpbmUgfmtleSBleGlzdGluZ192YWx1ZSB2YWx1ZVxuICAgIHwgTm9uZSAtPiB2YWx1ZSlcbjs7XG5cbmxldCBlbXB0eV9tZXJnZSA9XG4gIHsgc3R5bGVzID0gQ3NzX2dlbi5lbXB0eVxuICA7IGNsYXNzZXMgPSBbXVxuICA7IGhhbmRsZXJzID0gTWFwLmVtcHR5IChtb2R1bGUgU3RyaW5nKVxuICA7IGhvb2tzID0gTWFwLmVtcHR5IChtb2R1bGUgU3RyaW5nKVxuICB9XG47O1xuXG5sZXQgdG9fcmF3IGF0dHIgPVxuICBsZXQgYXR0cnMgPSBbIGF0dHIgXSBpblxuICAoKiBXaGVuIGlucHV0IGVsZW1lbnRzIGhhdmUgdGhlaXIgdmFsdWUgc2V0IHRvIHdoYXQgaXQgYWxyZWFkeSBpc1xuICAgICB0aGUgY3Vyc29yIGdldHMgbW92ZWQgdG8gdGhlIGVuZCBvZiB0aGUgZmllbGQgZXZlbiB3aGVuIHRoZSB1c2VyXG4gICAgIGlzIGVkaXRpbmcgaW4gdGhlIG1pZGRsZS4gU29mdFNldEhvb2sgKGZyb20gLi9zb2Z0LXNldC1ob29rLmpzKVxuICAgICBjb21wYXJlcyBiZWZvcmUgc2V0dGluZywgYXZvaWRpbmcgdGhlIHByb2JsZW0ganVzdCBsaWtlIGluXG4gICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9NYXR0LUVzY2gvdmlydHVhbC1kb20vYmxvYi85NDdlY2Y5MmI2N2QyNWJiNjkzYTBmNjI1ZmE4ZTkwYzA5OTg4N2Q1L3ZpcnR1YWwtaHlwZXJzY3JpcHQvaW5kZXguanMjTDQzLUw1MVxuXG4gICAgIG5vdGUgdGhhdCBFbG0ncyB2aXJ0dWFsLWRvbSBpbmNsdWRlcyBhIHdvcmthcm91bmQgZm9yIHRoaXMgc29cbiAgICAgaWYgd2Ugc3dpdGNoIHRvIHRoYXQgdGhlIHdvcmthcm91bmQgaGVyZSB3aWxsIGJlIHVubmVjZXNzYXJ5LlxuICAgICBodHRwczovL2dpdGh1Yi5jb20vZWxtLWxhbmcvdmlydHVhbC1kb20vYmxvYi8xN2IzMGZiN2RlNDg2NzI1NjVkNjIyN2QzM2MwMTc2ZjA3NTc4NmRiL3NyYy9OYXRpdmUvVmlydHVhbERvbS5qcyNMNDM0LUw0MzlcbiAgKilcbiAgbGV0IGF0dHJzX29iaiA6IFZkb21fcmF3LkF0dHJzLnQgPSBWZG9tX3Jhdy5BdHRycy5jcmVhdGUgKCkgaW5cbiAgKCogW3Rha2Vfc2Vjb25kXypdIGlzIHRoZSB0cml2aWFsIG1lcmdlIGZ1bmN0aW9uIChpLmUuIG5vIG1lcmdlIGF0IGFsbCk7IGl0XG4gICAgIHRha2VzIHR3byBhdHRyaWJ1dGVzIG9mIHRoZSBzYW1lIGtpbmQsIGlnbm9yZXMgYSBmaXJzdCwgYW5kIGVtaXRzXG4gICAgIGEgd2FybmluZyBpZiBbd2Fybl9hYm91dF91bm1lcmdlZF9hdHRyaWJ1dGVzXSBpcyBlbmFibGVkLiAqKVxuICBsZXQgdGFrZV9zZWNvbmRfc3R5bGVzIGZpcnN0IHNlY29uZCA9XG4gICAgaWYgbm90IChDc3NfZ2VuLmlzX2VtcHR5IGZpcnN0KVxuICAgIHRoZW5cbiAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIHN0eWxlc1wiIChmaXJzdCA6IENzc19nZW4udCkgKHNlY29uZCA6IENzc19nZW4udCldO1xuICAgIHNlY29uZFxuICBpblxuICBsZXQgdGFrZV9zZWNvbmRfY2xhc3NlcyBmaXJzdCBzZWNvbmQgPVxuICAgIGlmIG5vdCAoTGlzdC5pc19lbXB0eSBmaXJzdClcbiAgICB0aGVuIChcbiAgICAgIGxldCBmaXJzdCA9IExpc3Quc29ydCB+Y29tcGFyZTpbJWNvbXBhcmU6IHN0cmluZ10gZmlyc3QgaW5cbiAgICAgIGxldCBzZWNvbmQgPSBMaXN0LnNvcnQgfmNvbXBhcmU6WyVjb21wYXJlOiBzdHJpbmddIHNlY29uZCBpblxuICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgY2xhc3Nlc1wiIChmaXJzdCA6IHN0cmluZyBsaXN0KSAoc2Vjb25kIDogc3RyaW5nIGxpc3QpXSk7XG4gICAgc2Vjb25kXG4gIGluXG4gIGxldCB0YWtlX3NlY29uZF9oYW5kbGVyIH5rZXk6bmFtZSBfZmlyc3Qgc2Vjb25kID1cbiAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIGhhbmRsZXJzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgbGV0IHRha2Vfc2Vjb25kX2hvb2sgfmtleTpuYW1lIF9maXJzdCBzZWNvbmQgPVxuICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3MgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBob29rc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgc2Vjb25kXG4gIGluXG4gICgqIFdlIG1lcmdlIGF0dHJpYnV0ZXMgd2hlbiB0aGV5IGFyZSB3cml0dGVuIHRvIHRoZSByYXcgYXR0cmlidXRlIG9iamVjdCxcbiAgICAgcmF0aGVyIHRoYW4gd2hlbiB0aGUgdXNlci1mYWNpbmcgbWVyZ2UgZnVuY3Rpb25zIChbbWFueV0sIFtjb21iaW5lXSwgYW5kXG4gICAgIFtAXSkgYXJlIGNhbGxlZC4gVGhpcyBzdHJhdGVneSBpcyBiZXR0ZXIgaW4gYm90aCBzcGVlZCBhbmQgbWVtb3J5IHVzYWdlLFxuICAgICBzaW5jZSBpdCBtZWFucyB3ZSBkbyBub3QgbmVlZCB0byBjb25jYXRlbmF0ZSB0aGUgbGlzdCBvZiBcInVubWVyZ2VhYmxlXCJcbiAgICAgYXR0cmlidXRlcyAoUHJvcGVydHkgYW5kIEF0dHJpYnV0ZSk7IGluc3RlYWQsIHdlIGNhbiBpdGVyYXRlIHRocm91Z2ggdGhlXG4gICAgIHRyZWUgb2YgYXR0cmlidXRlcyBhbmQgZWFnZXJseSB3cml0ZSB1bm1lcmdlYWJsZSBhdHRyaWJ1dGVzIHRvIHRoZVxuICAgICBhdHRyaWJ1dGUgb2JqZWN0IGFzIHdlIGZpbmQgdGhlbS4gSWYgdHdvIHVubWVyZ2VhYmxlIGF0dHJpYnV0ZXMgaGF2ZSB0aGVcbiAgICAgc2FtZSBuYW1lLCB0aGUgc2Vjb25kIHdpbGwgc2ltcGx5IG92ZXJ3cml0ZSB0aGUgZmlyc3QsIGFzIGRlc2lyZWQuXG5cbiAgICAgSW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGV4aXN0aW5nIGJlaGF2aW9yIG9mIHRoZSBbTXVsdGldIG1vZHVsZSAodGhhdCBpcyxcbiAgICAgaXQgbXVzdCBiZSBwb3NzaWJsZSB0byBtZXJnZSBjbGFzc2VzIGFuZCBzdHlsZXMsIGJ1dCBub3QgaG9va3MgYW5kXG4gICAgIGhhbmRsZXJzKSwgd2UgaW50cm9kdWNlIHRoZSB3b3JrYXJvdW5kIGNvbnN0cnVjdG9yXG4gICAgIFtNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzXS5cblxuICAgICBUaGVyZSBhcmUgdGh1cyB0aHJlZSBjYXNlcyB0aGF0IGVhY2ggaGF2ZSBkaWZmZXJlbnQgbWVyZ2UgYmVoYXZpb3JzOlxuICAgICAtIFNpbXBsZSBsaXN0cyAtIG5vIG1lcmdpbmdcbiAgICAgLSBMaXN0cyB3cmFwcGVkIGluIGEgW01hbnldIC0gbWVyZ2VzIGNsYXNzZXMsIHN0eWxlcywgaG9va3MsIGFuZCBoYW5kbGVyc1xuICAgICAtIExpc3RzIHdyYXBwZWQgaW4gYSBbTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlc10gLSBtZXJnZXMgY2xhc3NlcyBhbmQgc3R5bGVzXG5cbiAgICAgVG8gYXZvaWQgZHVwbGljYXRpbmcgdGhlIG1hdGNoIGV4cHJlc3Npb24gbG9naWMsIHdlIHBhcmVtZXRlcml6ZSBpdCBieSB0aGVcbiAgICAgbWVyZ2luZyBiZWhhdmlvciwgc2luY2UgXCJubyBtZXJnZVwiIHJlYWxseSBtZWFucyBcIm1lcmdlIGJ5IHRha2luZyB0aGVcbiAgICAgc2Vjb25kIG9uZVwiLiAqKVxuICBsZXQgcmVjIG1lcmdlIH5jb21iaW5lX2hvb2sgfmNvbWJpbmVfaGFuZGxlciB+Y29tYmluZV9zdHlsZXMgfmNvbWJpbmVfY2xhc3NlcyBhY2MgPVxuICAgIExpc3QuZm9sZCB+aW5pdDphY2MgfmY6KGZ1biBhY2MgYXR0ciAtPlxuICAgICAgbWF0Y2ggYXR0ciB3aXRoXG4gICAgICB8IFByb3BlcnR5IHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3M7IG5hbWU7IHZhbHVlIH0gLT5cbiAgICAgICAgaWYgUmF3LkF0dHJzLmhhc19wcm9wZXJ0eSBhdHRyc19vYmogbmFtZSAmJiBub3Qgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgICAgIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgcHJvcGVydGllc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgICAgIChtYXRjaCBuYW1lIHdpdGhcbiAgICAgICAgIHwgXCJ2YWx1ZVwiIC0+XG4gICAgICAgICAgIGxldCBzb2Z0U2V0SG9vayB4IDogSnMuVW5zYWZlLmFueSA9IEpzLlVuc2FmZS5nbG9iYWwgIyMgU29mdFNldEhvb2sgeCBpblxuICAgICAgICAgICBsZXQgdmFsdWUgPSBzb2Z0U2V0SG9vayB2YWx1ZSBpblxuICAgICAgICAgICBWZG9tX3Jhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIFwidmFsdWVcIiB2YWx1ZVxuICAgICAgICAgfCBuYW1lIC0+IFJhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIG5hbWUgdmFsdWUpO1xuICAgICAgICBhY2NcbiAgICAgIHwgQXR0cmlidXRlIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3M7IG5hbWU7IHZhbHVlIH0gLT5cbiAgICAgICAgaWYgUmF3LkF0dHJzLmhhc19hdHRyaWJ1dGUgYXR0cnNfb2JqIG5hbWUgJiYgbm90IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgICAgICBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIGF0dHJpYnV0ZXNcIiAobmFtZSA6IHN0cmluZyldO1xuICAgICAgICBSYXcuQXR0cnMuc2V0X2F0dHJpYnV0ZSBhdHRyc19vYmogbmFtZSB2YWx1ZTtcbiAgICAgICAgYWNjXG4gICAgICB8IFN0eWxlIG5ld19zdHlsZXMgLT4geyBhY2Mgd2l0aCBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIG5ld19zdHlsZXMgfVxuICAgICAgfCBDbGFzcyBuZXdfY2xhc3NlcyAtPlxuICAgICAgICB7IGFjYyB3aXRoIGNsYXNzZXMgPSBjb21iaW5lX2NsYXNzZXMgYWNjLmNsYXNzZXMgbmV3X2NsYXNzZXMgfVxuICAgICAgfCBIb29rIHsgbmFtZTsgaG9vayB9IC0+XG4gICAgICAgIHsgYWNjIHdpdGggaG9va3MgPSBjb21iaW5pbmdfbWFwX2FkZCBhY2MuaG9va3MgbmFtZSBob29rIH5jb21iaW5lOmNvbWJpbmVfaG9vayB9XG4gICAgICB8IEhhbmRsZXIgeyBuYW1lOyBoYW5kbGVyIH0gLT5cbiAgICAgICAgeyBhY2Mgd2l0aFxuICAgICAgICAgIGhhbmRsZXJzID0gY29tYmluaW5nX21hcF9hZGQgYWNjLmhhbmRsZXJzIG5hbWUgaGFuZGxlciB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgfVxuICAgICAgfCBNYW55IGF0dHJzIC0+XG4gICAgICAgIGxldCBzdWJfbWVyZ2UgPVxuICAgICAgICAgIG1lcmdlXG4gICAgICAgICAgICB+Y29tYmluZV9ob29rOihmdW4gfmtleTpfIC0+IEhvb2tzLmNvbWJpbmUpXG4gICAgICAgICAgICB+Y29tYmluZV9oYW5kbGVyOihmdW4gfmtleTpfIC0+IEV2ZW50X2hhbmRsZXIuY29tYmluZSlcbiAgICAgICAgICAgIH5jb21iaW5lX3N0eWxlczpDc3NfZ2VuLmNvbWJpbmVcbiAgICAgICAgICAgIH5jb21iaW5lX2NsYXNzZXM6Q29yZS4oIEAgKVxuICAgICAgICAgICAgZW1wdHlfbWVyZ2VcbiAgICAgICAgICAgIGF0dHJzXG4gICAgICAgIGluXG4gICAgICAgIHsgc3R5bGVzID0gY29tYmluZV9zdHlsZXMgYWNjLnN0eWxlcyBzdWJfbWVyZ2Uuc3R5bGVzXG4gICAgICAgIDsgY2xhc3NlcyA9IGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBzdWJfbWVyZ2UuY2xhc3Nlc1xuICAgICAgICA7IGhhbmRsZXJzID1cbiAgICAgICAgICAgIE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhhbmRsZXJzIHN1Yl9tZXJnZS5oYW5kbGVycyB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgOyBob29rcyA9IE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhvb2tzIHN1Yl9tZXJnZS5ob29rcyB+Y29tYmluZTpjb21iaW5lX2hvb2tcbiAgICAgICAgfVxuICAgICAgfCBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChhdHRycywgbWFwX3N0eWxlcywgbWFwX2NsYXNzZXMpIC0+XG4gICAgICAgIGxldCBzdWJfbWVyZ2UgPVxuICAgICAgICAgIG1lcmdlXG4gICAgICAgICAgICB+Y29tYmluZV9ob29rOnRha2Vfc2Vjb25kX2hvb2tcbiAgICAgICAgICAgIH5jb21iaW5lX2hhbmRsZXI6dGFrZV9zZWNvbmRfaGFuZGxlclxuICAgICAgICAgICAgfmNvbWJpbmVfc3R5bGVzOkNzc19nZW4uY29tYmluZVxuICAgICAgICAgICAgfmNvbWJpbmVfY2xhc3NlczpDb3JlLiggQCApXG4gICAgICAgICAgICBlbXB0eV9tZXJnZVxuICAgICAgICAgICAgYXR0cnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdHlsZXMgPSBtYXBfc3R5bGVzIChjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIHN1Yl9tZXJnZS5zdHlsZXMpXG4gICAgICAgIDsgY2xhc3NlcyA9IG1hcF9jbGFzc2VzIChjb21iaW5lX2NsYXNzZXMgYWNjLmNsYXNzZXMgc3ViX21lcmdlLmNsYXNzZXMpXG4gICAgICAgIDsgaGFuZGxlcnMgPVxuICAgICAgICAgICAgTWFwLm1lcmdlX3NrZXdlZCBhY2MuaGFuZGxlcnMgc3ViX21lcmdlLmhhbmRsZXJzIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICA7IGhvb2tzID0gTWFwLm1lcmdlX3NrZXdlZCBhY2MuaG9va3Mgc3ViX21lcmdlLmhvb2tzIH5jb21iaW5lOmNvbWJpbmVfaG9va1xuICAgICAgICB9XG4gICAgICB8IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyAtPlxuICAgICAgICBsZXQgc3ViX21lcmdlID1cbiAgICAgICAgICBtZXJnZVxuICAgICAgICAgICAgfmNvbWJpbmVfaG9vazp0YWtlX3NlY29uZF9ob29rXG4gICAgICAgICAgICB+Y29tYmluZV9oYW5kbGVyOnRha2Vfc2Vjb25kX2hhbmRsZXJcbiAgICAgICAgICAgIH5jb21iaW5lX3N0eWxlczp0YWtlX3NlY29uZF9zdHlsZXNcbiAgICAgICAgICAgIH5jb21iaW5lX2NsYXNzZXM6dGFrZV9zZWNvbmRfY2xhc3Nlc1xuICAgICAgICAgICAgZW1wdHlfbWVyZ2VcbiAgICAgICAgICAgIGF0dHJzXG4gICAgICAgIGluXG4gICAgICAgIHsgc3R5bGVzID0gY29tYmluZV9zdHlsZXMgYWNjLnN0eWxlcyBzdWJfbWVyZ2Uuc3R5bGVzXG4gICAgICAgIDsgY2xhc3NlcyA9IGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBzdWJfbWVyZ2UuY2xhc3Nlc1xuICAgICAgICA7IGhhbmRsZXJzID1cbiAgICAgICAgICAgIE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhhbmRsZXJzIHN1Yl9tZXJnZS5oYW5kbGVycyB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgOyBob29rcyA9IE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhvb2tzIHN1Yl9tZXJnZS5ob29rcyB+Y29tYmluZTpjb21iaW5lX2hvb2tcbiAgICAgICAgfSlcbiAgaW5cbiAgbGV0IG1lcmdlID1cbiAgICBtZXJnZVxuICAgICAgfmNvbWJpbmVfaG9vazp0YWtlX3NlY29uZF9ob29rXG4gICAgICB+Y29tYmluZV9oYW5kbGVyOnRha2Vfc2Vjb25kX2hhbmRsZXJcbiAgICAgIH5jb21iaW5lX3N0eWxlczp0YWtlX3NlY29uZF9zdHlsZXNcbiAgICAgIH5jb21iaW5lX2NsYXNzZXM6dGFrZV9zZWNvbmRfY2xhc3Nlc1xuICAgICAgZW1wdHlfbWVyZ2VcbiAgICAgIGF0dHJzXG4gIGluXG4gIE1hcC5pdGVyaSBtZXJnZS5ob29rcyB+ZjooZnVuIH5rZXk6bmFtZSB+ZGF0YTpob29rIC0+XG4gICAgUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogbmFtZSAoSG9va3MucGFjayBob29rKSk7XG4gIE1hcC5pdGVyaSBtZXJnZS5oYW5kbGVycyB+ZjooZnVuIH5rZXk6bmFtZSB+ZGF0YTooRXZlbnRfaGFuZGxlci5UIHsgaGFuZGxlcjsgXyB9KSAtPlxuICAgIGxldCBmIGUgPVxuICAgICAgRWZmZWN0LkV4cGVydC5oYW5kbGUgZSAoaGFuZGxlciBlKTtcbiAgICAgIEpzLl90cnVlXG4gICAgaW5cbiAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiAoXCJvblwiIF4gbmFtZSkgKEpzLlVuc2FmZS5pbmplY3QgKERvbS5oYW5kbGVyIGYpKSk7XG4gIGxldCAoKSA9XG4gICAgaWYgbm90IChDc3NfZ2VuLmlzX2VtcHR5IG1lcmdlLnN0eWxlcylcbiAgICB0aGVuIChcbiAgICAgIGxldCBwcm9wcyA9IENzc19nZW4udG9fc3RyaW5nX2xpc3QgbWVyZ2Uuc3R5bGVzIGluXG4gICAgICBsZXQgb2JqID0gUmF3LkF0dHJzLmNyZWF0ZSAoKSBpblxuICAgICAgTGlzdC5pdGVyIHByb3BzIH5mOihmdW4gKGssIHYpIC0+XG4gICAgICAgIFJhdy5BdHRycy5zZXRfcHJvcGVydHkgb2JqIGsgKEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB2KSkpO1xuICAgICAgUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogXCJzdHlsZVwiIChvYmogOj4gSnMuVW5zYWZlLmFueSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSBtZXJnZS5jbGFzc2VzXG4gICAgdGhlbiAoKVxuICAgIGVsc2VcbiAgICAgIFJhdy5BdHRycy5zZXRfYXR0cmlidXRlXG4gICAgICAgIGF0dHJzX29ialxuICAgICAgICBcImNsYXNzXCJcbiAgICAgICAgKEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyAoU3RyaW5nLmNvbmNhdCBtZXJnZS5jbGFzc2VzIH5zZXA6XCIgXCIpKSlcbiAgaW5cbiAgYXR0cnNfb2JqXG47O1xuXG5sZXQgdG9fcmF3IGF0dHIgPVxuICBtYXRjaCBhdHRyIHdpdGhcbiAgfCBNYW55IFtdIHwgTWFueV93aXRob3V0X21lcmdlIFtdIC0+IFJhdy5BdHRycy5jcmVhdGUgKClcbiAgfCBhdHRyIC0+IHRvX3JhdyBhdHRyXG47O1xuXG5sZXQgc3R5bGUgY3NzID0gU3R5bGUgY3NzXG5sZXQgY2xhc3NfIGNsYXNzbmFtZSA9IENsYXNzIFsgY2xhc3NuYW1lIF1cbmxldCBjbGFzc2VzJyBjbGFzc2VzID0gQ2xhc3MgKFNldC50b19saXN0IGNsYXNzZXMpXG5sZXQgY2xhc3NlcyBjbGFzc25hbWVzID0gQ2xhc3MgY2xhc3NuYW1lc1xubGV0IGlkIHMgPSBjcmVhdGUgXCJpZFwiIHNcbmxldCBuYW1lIHMgPSBjcmVhdGUgXCJuYW1lXCIgc1xubGV0IGhyZWYgciA9IGNyZWF0ZSBcImhyZWZcIiByXG5sZXQgbGFiZWwgciA9IGNyZWF0ZSBcImxhYmVsXCIgclxubGV0IHRhcmdldCBzID0gY3JlYXRlIFwidGFyZ2V0XCIgc1xubGV0IGNoZWNrZWQgPSBjcmVhdGUgXCJjaGVja2VkXCIgXCJcIlxubGV0IHNlbGVjdGVkID0gY3JlYXRlIFwic2VsZWN0ZWRcIiBcIlwiXG5sZXQgaGlkZGVuID0gY3JlYXRlIFwiaGlkZGVuXCIgXCJcIlxubGV0IHJlYWRvbmx5ID0gY3JlYXRlIFwicmVhZG9ubHlcIiBcIlwiXG5sZXQgZGlzYWJsZWQgPSBjcmVhdGUgXCJkaXNhYmxlZFwiIFwiXCJcbmxldCBwbGFjZWhvbGRlciB4ID0gY3JlYXRlIFwicGxhY2Vob2xkZXJcIiB4XG5cbmxldCBhdXRvZm9jdXMgPSBmdW5jdGlvblxuICB8IHRydWUgLT4gY3JlYXRlIFwiYXV0b2ZvY3VzXCIgXCJcIlxuICB8IGZhbHNlIC0+IGVtcHR5XG47O1xuXG5sZXQgZm9yXyB4ID0gY3JlYXRlIFwiZm9yXCIgeFxubGV0IHR5cGVfIHggPSBjcmVhdGUgXCJ0eXBlXCIgeFxubGV0IHZhbHVlIHggPSBjcmVhdGUgXCJ2YWx1ZVwiIHhcbmxldCB2YWx1ZV9wcm9wIHggPSBzdHJpbmdfcHJvcGVydHkgXCJ2YWx1ZVwiIHhcbmxldCB0YWJpbmRleCB4ID0gY3JlYXRlIFwidGFiaW5kZXhcIiAoSW50LnRvX3N0cmluZyB4KVxubGV0IHRpdGxlIHggPSBjcmVhdGUgXCJ0aXRsZVwiIHhcbmxldCBhbHQgeCA9IGNyZWF0ZSBcImFsdFwiIHhcbmxldCBzcmMgeCA9IGNyZWF0ZSBcInNyY1wiIHhcbmxldCBvcGVuXyA9IGNyZWF0ZSBcIm9wZW5cIiBcIlwiXG5sZXQgc3RhcnQgeCA9IGNyZWF0ZSBcInN0YXJ0XCIgKEludC50b19zdHJpbmcgeClcbmxldCBtaW4geCA9IGNyZWF0ZV9mbG9hdCBcIm1pblwiIHhcbmxldCBtYXggeCA9IGNyZWF0ZV9mbG9hdCBcIm1heFwiIHhcbmxldCBtaW5fZGF0ZSB4ID0gY3JlYXRlIFwibWluXCIgKERhdGUudG9fc3RyaW5nIHgpXG5sZXQgbWF4X2RhdGUgeCA9IGNyZWF0ZSBcIm1heFwiIChEYXRlLnRvX3N0cmluZyB4KVxubGV0IG1pbl9kYXRlX3RpbWUgeCA9IGNyZWF0ZSBcIm1pblwiIChEYXRlLnRvX3N0cmluZyB4IF4gXCJUMDA6MDBcIilcbmxldCBtYXhfZGF0ZV90aW1lIHggPSBjcmVhdGUgXCJtYXhcIiAoRGF0ZS50b19zdHJpbmcgeCBeIFwiVDIzOjU5XCIpXG5sZXQgY29sc3BhbiB4ID0gY3JlYXRlIFwiY29sc3BhblwiIChJbnQudG9fc3RyaW5nIHgpXG5sZXQgcm93c3BhbiB4ID0gY3JlYXRlIFwicm93c3BhblwiIChJbnQudG9fc3RyaW5nIHgpXG5sZXQgZHJhZ2dhYmxlIGIgPSBjcmVhdGUgXCJkcmFnZ2FibGVcIiAoQm9vbC50b19zdHJpbmcgYilcblxubW9kdWxlIFR5cGVfaWQgPSBzdHJ1Y3RcbiAgKCogV2UgcHJvdmlkZSBhIHRyaXZpYWwgW3RvX3NleHBdIGZ1bmN0aW9uIHNpbmNlIHdlIG9ubHkgd2FudFxuICAgICB0byB1bmlmeSB0eXBlIGlkcyBhbmQgbm90IGNvbnZlcnQgdHlwZXMgdG8gaWRzICopXG4gIGxldCBjcmVhdGUgbmFtZSA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lIChmdW4gXyAtPiBTZXhwbGliLlNleHAuTGlzdCBbXSlcbiAgbGV0IChldmVudCA6IERvbV9odG1sLmV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJldmVudFwiXG4gIGxldCAoZm9jdXMgOiBEb21faHRtbC5mb2N1c0V2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJmb2N1c0V2ZW50XCJcbiAgbGV0IChtb3VzZSA6IERvbV9odG1sLm1vdXNlRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcIm1vdXNlRXZlbnRcIlxuICBsZXQgKGtleWJvYXJkIDogRG9tX2h0bWwua2V5Ym9hcmRFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwia2V5Ym9hcmRFdmVudFwiXG4gIGxldCAoc3VibWl0IDogRG9tX2h0bWwuc3VibWl0RXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcInN1Ym1pdEV2ZW50XCJcbiAgbGV0IChtb3VzZXdoZWVsIDogRG9tX2h0bWwubW91c2V3aGVlbEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJtb3VzZXdoZWVsRXZlbnRcIlxuXG4gIGxldCAod2hlZWwgOiBKc19vZl9vY2FtbF9wYXRjaGVzLkRvbV9odG1sLndoZWVsRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9XG4gICAgY3JlYXRlIFwid2hlZWx3aGVlbEV2ZW50XCJcbiAgOztcblxuICBsZXQgKGNsaXBib2FyZCA6IERvbV9odG1sLmNsaXBib2FyZEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJjbGlwYm9hcmRFdmVudFwiXG4gIGxldCAoZHJhZyA6IERvbV9odG1sLmRyYWdFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwiZHJhZ0V2ZW50XCJcbiAgbGV0IChwb2ludGVyIDogRG9tX2h0bWwucG9pbnRlckV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJwb2ludGVyRXZlbnRcIlxuICBsZXQgKGFuaW1hdGlvbiA6IERvbV9odG1sLmFuaW1hdGlvbkV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJhbmltYXRpb25FdmVudFwiXG5lbmRcblxubGV0IG9uIHR5cGVfaWQgbmFtZSAoaGFuZGxlciA6ICNEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQgVWlfZWZmZWN0LnQpIDogdCA9XG4gIEhhbmRsZXIgeyBuYW1lOyBoYW5kbGVyID0gVCB7IGhhbmRsZXI7IHR5cGVfaWQgfSB9XG47O1xuXG5sZXQgb25fZm9jdXMgPSBvbiBUeXBlX2lkLmZvY3VzIFwiZm9jdXNcIlxubGV0IG9uX2JsdXIgPSBvbiBUeXBlX2lkLmZvY3VzIFwiYmx1clwiXG5sZXQgb25fY2xpY2sgPSBvbiBUeXBlX2lkLm1vdXNlIFwiY2xpY2tcIlxubGV0IG9uX2NvbnRleHRtZW51ID0gb24gVHlwZV9pZC5tb3VzZSBcImNvbnRleHRtZW51XCJcbmxldCBvbl9kb3VibGVfY2xpY2sgPSBvbiBUeXBlX2lkLm1vdXNlIFwiZGJsY2xpY2tcIlxubGV0IG9uX2RyYWcgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnXCJcbmxldCBvbl9kcmFnc3RhcnQgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnc3RhcnRcIlxubGV0IG9uX2RyYWdlbmQgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnZW5kXCJcbmxldCBvbl9kcmFnZW50ZXIgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnZW50ZXJcIlxubGV0IG9uX2RyYWdsZWF2ZSA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdsZWF2ZVwiXG5sZXQgb25fZHJhZ292ZXIgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnb3ZlclwiXG5sZXQgb25fZHJvcCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyb3BcIlxubGV0IG9uX21vdXNlbW92ZSA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZW1vdmVcIlxubGV0IG9uX21vdXNldXAgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2V1cFwiXG5sZXQgb25fbW91c2Vkb3duID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlZG93blwiXG5sZXQgb25fbW91c2VlbnRlciA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZWVudGVyXCJcbmxldCBvbl9tb3VzZWxlYXZlID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlbGVhdmVcIlxubGV0IG9uX21vdXNlb3ZlciA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZW92ZXJcIlxubGV0IG9uX21vdXNlb3V0ID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlb3V0XCJcbmxldCBvbl9rZXl1cCA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXl1cFwiXG5sZXQgb25fa2V5cHJlc3MgPSBvbiBUeXBlX2lkLmtleWJvYXJkIFwia2V5cHJlc3NcIlxubGV0IG9uX2tleWRvd24gPSBvbiBUeXBlX2lkLmtleWJvYXJkIFwia2V5ZG93blwiXG5sZXQgb25fc2Nyb2xsID0gb24gVHlwZV9pZC5ldmVudCBcInNjcm9sbFwiXG5sZXQgb25fbG9hZCA9IG9uIFR5cGVfaWQuZXZlbnQgXCJsb2FkXCJcbmxldCBvbl9zdWJtaXQgPSBvbiBUeXBlX2lkLnN1Ym1pdCBcInN1Ym1pdFwiXG5sZXQgb25fcG9pbnRlcmRvd24gPSBvbiBUeXBlX2lkLnBvaW50ZXIgXCJwb2ludGVyZG93blwiXG5sZXQgb25fcG9pbnRlcnVwID0gb24gVHlwZV9pZC5wb2ludGVyIFwicG9pbnRlcnVwXCJcbmxldCBvbl9tb3VzZXdoZWVsID0gb24gVHlwZV9pZC5tb3VzZXdoZWVsIFwibW91c2V3aGVlbFwiXG5sZXQgb25fd2hlZWwgPSBvbiBUeXBlX2lkLndoZWVsIFwid2hlZWxcIlxubGV0IG9uX2NvcHkgPSBvbiBUeXBlX2lkLmNsaXBib2FyZCBcImNvcHlcIlxubGV0IG9uX2N1dCA9IG9uIFR5cGVfaWQuY2xpcGJvYXJkIFwiY3V0XCJcbmxldCBvbl9wYXN0ZSA9IG9uIFR5cGVfaWQuY2xpcGJvYXJkIFwicGFzdGVcIlxubGV0IG9uX3Jlc2V0ID0gb24gVHlwZV9pZC5ldmVudCBcInJlc2V0XCJcbmxldCBvbl9hbmltYXRpb25lbmQgPSBvbiBUeXBlX2lkLmFuaW1hdGlvbiBcImFuaW1hdGlvbmVuZFwiXG5sZXQgY29uc3RfaWdub3JlIF8gPSBFZmZlY3QuSWdub3JlXG5cbmNsYXNzIHR5cGUgdmFsdWVfZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmVsZW1lbnRcbiAgbWV0aG9kIHZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuZW5kXG5cbnR5cGUgdmFsdWVfY29lcmNpb24gPSBEb21faHRtbC5lbGVtZW50IEpzLnQgLT4gdmFsdWVfZWxlbWVudCBKcy50IEpzLm9wdFxuXG5sZXQgcnVuX2NvZXJjaW9uIGNvZXJjaW9uIHRhcmdldCBwcmV2ID1cbiAgbWF0Y2ggcHJldiB3aXRoXG4gIHwgU29tZSBfIC0+IHByZXZcbiAgfCBOb25lIC0+IEpzLk9wdC50b19vcHRpb24gKGNvZXJjaW9uIHRhcmdldClcbjs7XG5cbmxldCBjb2VyY2VfdmFsdWVfZWxlbWVudCB0YXJnZXQgPVxuICBsZXQgb3BlbiBEb21faHRtbC5Db2VyY2VUbyBpblxuICBOb25lXG4gIHw+IHJ1bl9jb2VyY2lvbiAoaW5wdXQgOj4gdmFsdWVfY29lcmNpb24pIHRhcmdldFxuICB8PiBydW5fY29lcmNpb24gKHNlbGVjdCA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG4gIHw+IHJ1bl9jb2VyY2lvbiAodGV4dGFyZWEgOj4gdmFsdWVfY29lcmNpb24pIHRhcmdldFxuOztcblxubGV0IG9uX2lucHV0X2V2ZW50IHR5cGVfaWQgZXZlbnQgaGFuZGxlciA9XG4gIG9uIHR5cGVfaWQgZXZlbnQgKGZ1biBldiAtPlxuICAgIEpzLk9wdC5jYXNlIGV2IyMudGFyZ2V0IGNvbnN0X2lnbm9yZSAoZnVuIHRhcmdldCAtPlxuICAgICAgT3B0aW9uLnZhbHVlX21hcFxuICAgICAgICAoY29lcmNlX3ZhbHVlX2VsZW1lbnQgdGFyZ2V0KVxuICAgICAgICB+ZGVmYXVsdDpFZmZlY3QuSWdub3JlXG4gICAgICAgIH5mOihmdW4gdGFyZ2V0IC0+XG4gICAgICAgICAgbGV0IHRleHQgPSBKcy50b19zdHJpbmcgdGFyZ2V0IyMudmFsdWUgaW5cbiAgICAgICAgICBoYW5kbGVyIGV2IHRleHQpKSlcbjs7XG5cbmxldCBvbl9jaGFuZ2UgPSBvbl9pbnB1dF9ldmVudCBUeXBlX2lkLmV2ZW50IFwiY2hhbmdlXCJcbmxldCBvbl9pbnB1dCA9IG9uX2lucHV0X2V2ZW50IFR5cGVfaWQuZXZlbnQgXCJpbnB1dFwiXG5sZXQgdG9fcmF3IGwgPSB0b19yYXcgbFxuXG5sZXQgb25fZmlsZV9pbnB1dCBoYW5kbGVyID1cbiAgb24gVHlwZV9pZC5ldmVudCBcImlucHV0XCIgKGZ1biBldiAtPlxuICAgIEpzLk9wdC5jYXNlIGV2IyMudGFyZ2V0IGNvbnN0X2lnbm9yZSAoZnVuIHRhcmdldCAtPlxuICAgICAgSnMuT3B0LmNhc2UgKERvbV9odG1sLkNvZXJjZVRvLmlucHV0IHRhcmdldCkgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICAgIEpzLk9wdGRlZi5jYXNlIHRhcmdldCMjLmZpbGVzIGNvbnN0X2lnbm9yZSAoZnVuIGZpbGVzIC0+IGhhbmRsZXIgZXYgZmlsZXMpKSkpXG47O1xuXG5tb2R1bGUgQWx3YXlzX2ZvY3VzX2hvb2sgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdGUgPSBVbml0XG5cbiAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVW5pdFxuXG4gICAgICBsZXQgY29tYmluZSAoKSAoKSA9ICgpXG4gICAgZW5kXG5cbiAgICBsZXQgaW5pdCAoKSBfID0gKClcbiAgICBsZXQgb25fbW91bnQgKCkgKCkgZWxlbWVudCA9IGVsZW1lbnQjI2ZvY3VzXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0OigpIH5uZXdfaW5wdXQ6KCkgKCkgXyA9ICgpXG4gICAgbGV0IGRlc3Ryb3kgKCkgKCkgXyA9ICgpXG4gIGVuZFxuXG4gIG1vZHVsZSBIb29rID0gSG9va3MuTWFrZSAoVClcblxuICBsZXQgYXR0ciBgUmVhZF90aGVfZG9jc19fdGhpc19ob29rX2lzX3VucHJlZGljdGFibGUgPVxuICAgICgqIEFwcGVuZCB0aGUgaWQgdG8gdGhlIG5hbWUgb2YgdGhlIGhvb2sgdG8gZW5zdXJlIHRoYXQgaXQgaXMgZGlzdGluY3RcbiAgICAgICBmcm9tIGFsbCBvdGhlciBmb2N1cyBob29rcy4gKilcbiAgICBjcmVhdGVfaG9vayBcImFsd2F5cy1mb2N1cy1ob29rXCIgKEhvb2suY3JlYXRlICgpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTaW5nbGVfZm9jdXNfaG9vayAoKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcblxuICAgIGxldCBoYXNfYmVlbl91c2VkID0gcmVmIGZhbHNlXG5cbiAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9ICh1bml0IFVpX2VmZmVjdC50W0BzZXhwLm9wYXF1ZV0pIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjb21iaW5lIGxlZnQgcmlnaHQgPSBVaV9lZmZlY3QuTWFueSBbIGxlZnQ7IHJpZ2h0IF1cbiAgICBlbmRcblxuICAgIGxldCBpbml0IF8gXyA9ICgpXG5cbiAgICBsZXQgb25fbW91bnQgZXZlbnQgKCkgZWxlbWVudCA9XG4gICAgICBpZiBub3QgIWhhc19iZWVuX3VzZWRcbiAgICAgIHRoZW4gKFxuICAgICAgICBoYXNfYmVlbl91c2VkIDo9IHRydWU7XG4gICAgICAgIGVsZW1lbnQjI2ZvY3VzO1xuICAgICAgICBFZmZlY3QuRXhwZXJ0LmhhbmRsZV9ub25fZG9tX2V2ZW50X2V4biBldmVudClcbiAgICA7O1xuXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0Ol8gfm5ld19pbnB1dDpfICgpIF8gPSAoKVxuICAgIGxldCBkZXN0cm95IF8gKCkgXyA9ICgpXG4gIGVuZFxuXG4gIG1vZHVsZSBIb29rID0gSG9va3MuTWFrZSAoVClcblxuICBsZXQgYXR0ciBgUmVhZF90aGVfZG9jc19fdGhpc19ob29rX2lzX3VucHJlZGljdGFibGUgfmFmdGVyID1cbiAgICAoKiBBcHBlbmQgdGhlIGlkIHRvIHRoZSBuYW1lIG9mIHRoZSBob29rIHRvIGVuc3VyZSB0aGF0IGl0IGlzIGRpc3RpbmN0XG4gICAgICAgZnJvbSBhbGwgb3RoZXIgZm9jdXMgaG9va3MuICopXG4gICAgY3JlYXRlX2hvb2sgXCJzaW5nbGUtZm9jdXMtaG9va1wiIChIb29rLmNyZWF0ZSBhZnRlcilcbiAgOztcbmVuZFxuXG5tb2R1bGUgTm9fb3BfaG9vayAoTSA6IHNpZ1xuICAgIG1vZHVsZSBJbnB1dCA6IEhvb2tzX2ludGYuSW5wdXRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBIb29rID0gSG9va3MuTWFrZSAoc3RydWN0XG4gICAgICBtb2R1bGUgU3RhdGUgPSBVbml0XG4gICAgICBtb2R1bGUgSW5wdXQgPSBNLklucHV0XG5cbiAgICAgIGxldCBpbml0IF8gXyA9ICgpXG4gICAgICBsZXQgb25fbW91bnQgXyAoKSBfID0gKClcbiAgICAgIGxldCB1cGRhdGUgfm9sZF9pbnB1dDpfIH5uZXdfaW5wdXQ6XyAoKSBfID0gKClcbiAgICAgIGxldCBkZXN0cm95IF8gKCkgXyA9ICgpXG4gICAgZW5kKVxuXG4gIGxldCBhdHRyIGlucHV0ID0gY3JlYXRlX2hvb2sgTS5uYW1lIChIb29rLmNyZWF0ZSBpbnB1dClcbiAgbGV0IHR5cGVfaWQgPSBIb29rLkZvcl90ZXN0aW5nLnR5cGVfaWRcbmVuZFxuXG5tb2R1bGUgTXVsdGkgPSBzdHJ1Y3RcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBsaXN0XG5cbiAgbGV0IG1hcF9zdHlsZSB0IH5mID0gWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBmLCBGbi5pZCkgXVxuICBsZXQgYWRkX2NsYXNzIHQgYyA9IFsgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAodCwgRm4uaWQsIGZ1biBjcyAtPiBjIDo6IGNzKSBdXG4gIGxldCBhZGRfc3R5bGUgdCBzID0gbWFwX3N0eWxlIHQgfmY6KGZ1biBzcyAtPiBDc3NfZ2VuLmNvbWJpbmUgc3MgcylcblxuICBsZXQgbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIHQgPVxuICAgIFsgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAodCwgRm4uaWQsIEZuLmlkKSBdXG4gIDs7XG5lbmRcblxubW9kdWxlIENzc192YXJfaG9vayA9IEhvb2tzLk1ha2UgKHN0cnVjdFxuICAgIG9wZW4gSnNfb2Zfb2NhbWxcbiAgICBtb2R1bGUgU3RhdGUgPSBVbml0XG5cbiAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IChzdHJpbmcgKiBzdHJpbmcpIGxpc3QgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGNvbWJpbmUgPSBMaXN0LmFwcGVuZFxuICAgIGVuZFxuXG4gICAgbGV0IGluaXQgaW5wdXQgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgICAgIExpc3QuaXRlciBpbnB1dCB+ZjooZnVuIChrLCB2KSAtPlxuICAgICAgICBlbGVtZW50IyMuc3R5bGUjI3NldFByb3BlcnR5IChKcy5zdHJpbmcgaykgKEpzLnN0cmluZyB2KSBKcy51bmRlZmluZWRcbiAgICAgICAgfD4gKGlnbm9yZSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpKVxuICAgIDs7XG5cbiAgICBsZXQgb25fbW91bnQgXyAoKSBfID0gKClcblxuICAgIGxldCBkZXN0cm95IGlucHV0ICgpIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA9XG4gICAgICBMaXN0Lml0ZXIgaW5wdXQgfmY6KGZ1biAoaywgXykgLT5cbiAgICAgICAgZWxlbWVudCMjLnN0eWxlIyNyZW1vdmVQcm9wZXJ0eSAoSnMuc3RyaW5nIGspXG4gICAgICAgIHw+IChpZ25vcmUgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSlcbiAgICA7O1xuXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0IH5uZXdfaW5wdXQgKCkgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgb2xkX2lucHV0IG5ld19pbnB1dFxuICAgICAgfHwgWyVlcXVhbDogKHN0cmluZyAqIHN0cmluZykgbGlzdF0gb2xkX2lucHV0IG5ld19pbnB1dFxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGRlc3Ryb3kgb2xkX2lucHV0ICgpIGVsZW1lbnQ7XG4gICAgICAgIGluaXQgbmV3X2lucHV0IGVsZW1lbnQpXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgX19jc3NfdmFyc19ub19rZWJhYnMgYWxpc3QgPSBjcmVhdGVfaG9vayBcImN1c3RvbS1jc3MtdmFyc1wiIChDc3NfdmFyX2hvb2suY3JlYXRlIGFsaXN0KVxubGV0IGNzc192YXIgfm5hbWUgdiA9IF9fY3NzX3ZhcnNfbm9fa2ViYWJzIFsgXCItLVwiIF4gbmFtZSwgdiBdXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHJlYyBmaWx0ZXJfYnlfa2luZCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFByb3BlcnR5IF8gLT4gaWYgZiBgUHJvcGVydHkgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IEF0dHJpYnV0ZSBfIC0+IGlmIGYgYEF0dHJpYnV0ZSB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgSG9vayBfIC0+IGlmIGYgYEhvb2sgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IEhhbmRsZXIgXyAtPiBpZiBmIGBIYW5kbGVyIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBTdHlsZSBfIC0+IGlmIGYgYFN0eWxlIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBDbGFzcyBfIC0+IGlmIGYgYENsYXNzIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBNYW55IGF0dHJzIC0+IE1hbnkgKExpc3QubWFwIGF0dHJzIH5mOihmaWx0ZXJfYnlfa2luZCB+ZikpXG4gICAgfCBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChhdHRycywgYSwgYikgLT5cbiAgICAgIE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKExpc3QubWFwIGF0dHJzIH5mOihmaWx0ZXJfYnlfa2luZCB+ZiksIGEsIGIpXG4gICAgfCBNYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgLT5cbiAgICAgIE1hbnlfd2l0aG91dF9tZXJnZSAoTGlzdC5tYXAgYXR0cnMgfmY6KGZpbHRlcl9ieV9raW5kIH5mKSlcbiAgOztcblxuICBsZXQgcmVjIGNvbnRhaW5zX25hbWUgbG9va2luZ19mb3IgPSBmdW5jdGlvblxuICAgIHwgUHJvcGVydHkgeyBuYW1lOyBfIH0gfCBBdHRyaWJ1dGUgeyBuYW1lOyBfIH0gfCBIb29rIHsgbmFtZTsgXyB9IC0+XG4gICAgICBTdHJpbmcuZXF1YWwgbG9va2luZ19mb3IgbmFtZVxuICAgIHwgSGFuZGxlciB7IG5hbWU7IF8gfSAtPiBTdHJpbmcuZXF1YWwgKFwib25cIiBeIG5hbWUpIGxvb2tpbmdfZm9yXG4gICAgfCBTdHlsZSBfIC0+IFN0cmluZy5lcXVhbCBsb29raW5nX2ZvciBcInN0eWxlXCJcbiAgICB8IENsYXNzIF8gLT4gU3RyaW5nLmVxdWFsIGxvb2tpbmdfZm9yIFwiY2xhc3NcIlxuICAgIHwgTWFueSBhdHRyc1xuICAgIHwgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAoYXR0cnMsIF8sIF8pXG4gICAgfCBNYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgLT4gTGlzdC5leGlzdHMgfmY6KGNvbnRhaW5zX25hbWUgbG9va2luZ19mb3IpIGF0dHJzXG4gIDs7XG5lbmRcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcblxubW9kdWxlIE1ha2UgKFggOiBzaWdcbiAgICB0eXBlIGV2ZW50ID0gcHJpdmF0ZSAjRG9tX2h0bWwuZXZlbnRcblxuICAgIHZhbCBldmVudF9raW5kIDogZXZlbnQgSnMudCBEb20uRXZlbnQudHlwXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgSG9va3MuTWFrZSAoc3RydWN0XG4gICAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gWC5ldmVudCBKcy50IC0+IHVuaXQgVWlfZWZmZWN0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICBsZXQgY29tYmluZSBmIGcgZXZlbnQgPSBVaV9lZmZlY3QuTWFueSBbIGYgZXZlbnQ7IGcgZXZlbnQgXVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSB7IG11dGFibGUgbGlzdGVuZXIgOiAoRG9tX2h0bWwuZXZlbnRfbGlzdGVuZXJfaWRbQHNleHAub3BhcXVlXSkgfVxuICAgICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgZW5kXG5cbiAgICAgIGxldCBzZXQgZiA9XG4gICAgICAgIGxldCBoYW5kbGVyID1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIGV2IC0+XG4gICAgICAgICAgICBFZmZlY3QuRXhwZXJ0LmhhbmRsZSBldiAoZiBldik7XG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgICAgaW5cbiAgICAgICAgRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lciBEb21faHRtbC53aW5kb3cgWC5ldmVudF9raW5kIGhhbmRsZXIgSnMuX3RydWVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbml0IGYgX2VsZW1lbnQgPSB7IFN0YXRlLmxpc3RlbmVyID0gc2V0IGYgfVxuICAgICAgbGV0IGRlc3Ryb3kgX2lucHV0IHN0YXRlIF9lbGVtZW50ID0gRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lciBzdGF0ZS5TdGF0ZS5saXN0ZW5lclxuXG4gICAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dDpmIHN0YXRlIGVsZW1lbnQgPVxuICAgICAgICAoKiBpZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gY2hhbmdlcywgY2FuY2VsIHRoZSBvbGQgb25lIGFuZCByZS1pbnN0YWxsICopXG4gICAgICAgIGRlc3Ryb3kgb2xkX2lucHV0IHN0YXRlIGVsZW1lbnQ7XG4gICAgICAgIGxldCBuZXdfc3RhdGUgPSBpbml0IGYgZWxlbWVudCBpblxuICAgICAgICBzdGF0ZS5TdGF0ZS5saXN0ZW5lciA8LSBuZXdfc3RhdGUubGlzdGVuZXJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvbl9tb3VudCBfaW5wdXQgX3N0YXRlIF9lbGVtZW50ID0gKClcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1vdXNldXAgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIGV2ZW50ID0gRG9tX2h0bWwubW91c2VFdmVudFxuXG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tb3VzZXVwXG4gIGVuZClcblxubW9kdWxlIE1vdXNlbW92ZSA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5tb3VzZUV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1vdXNlbW92ZVxuICBlbmQpXG5cbm1vZHVsZSBDbGljayA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5tb3VzZUV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50LmNsaWNrXG4gIGVuZClcblxubW9kdWxlIENvbnRleHRtZW51ID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLm1vdXNlRXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcImNvbnRleHRtZW51XCJcbiAgZW5kKVxuXG5tb2R1bGUgS2V5ZG93biA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5rZXlib2FyZEV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50LmtleWRvd25cbiAgZW5kKVxuXG5tb2R1bGUgVmlzaWJpbGl0eWNoYW5nZSA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5ldmVudFxuXG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tYWtlIFwidmlzaWJpbGl0eWNoYW5nZVwiXG4gIGVuZClcblxubW9kdWxlIEJlZm9yZXVubG9hZCA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5ldmVudFxuXG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tYWtlIFwiYmVmb3JldW5sb2FkXCJcbiAgZW5kKVxuXG5sZXQgbW91c2V1cCBmID0gTW91c2V1cC5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLW1vdXNldXAtbGlzdGVuZXJcIlxubGV0IG1vdXNlbW92ZSBmID0gTW91c2Vtb3ZlLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtbW91c2Vtb3ZlLWxpc3RlbmVyXCJcbmxldCBjbGljayBmID0gQ2xpY2suY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1jbGljay1saXN0ZW5lclwiXG5sZXQgY29udGV4dG1lbnUgZiA9IENvbnRleHRtZW51LmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtY29udGV4dG1lbnUtbGlzdGVuZXJcIlxubGV0IGtleWRvd24gZiA9IEtleWRvd24uY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1rZXlkb3duLWxpc3RlbmVyXCJcblxuY2xhc3MgdHlwZSBldmVudF93aXRoX3N0cmluZ19yZXR1cm5fdmFsdWUgPSBvYmplY3RcbiAgKCogRXZlbnRzIHdpdGggW3JldHVyblZhbHVlXSBhcmUgaW1wb3NzaWJsZSB0byBwcm9wZXJseSB0eXBlLCBzbyB3ZSBtYWtlIG9uZSB0aGF0XG4gICAgIGlzIHNwZWNpYWxpemVkIGZvciBzdHJpbmcsIGFuZCBjYXN0IG91ciBiZWZvcmVfdW5sb2FkIHR5cGUgdG8gaXQuICopXG4gIG1ldGhvZCByZXR1cm5WYWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IGJlZm9yZXVubG9hZCBmID1cbiAgbGV0IGYgZXZlbnQgPVxuICAgIG1hdGNoJWJpbmQuRWZmZWN0IGYgZXZlbnQgd2l0aFxuICAgIHwgYFNob3dfd2FybmluZyAtPlxuICAgICAgbGV0IGV2ZW50IDogZXZlbnRfd2l0aF9zdHJpbmdfcmV0dXJuX3ZhbHVlIEpzLnQgPSBPYmoubWFnaWMgZXZlbnQgaW5cbiAgICAgIGV2ZW50IyMucmV0dXJuVmFsdWUgOj0gSnMuc3RyaW5nIFwidGhpcyBzdHJpbmcgY2FuIGJlIGFueXRoaW5nXCI7XG4gICAgICBFZmZlY3QuSWdub3JlXG4gICAgfCBgRG9fbm90aGluZyAtPiBFZmZlY3QuSWdub3JlXG4gIGluXG4gIEJlZm9yZXVubG9hZC5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLWJlZm9yZXVubG9hZC1saXN0ZW5lclwiXG47O1xuXG5sZXQgdmlzaWJpbGl0eWNoYW5nZSBmID1cbiAgVmlzaWJpbGl0eWNoYW5nZS5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLXZpc2liaWxpdHljaGFuZ2UtbGlzdGVuZXJcIlxuOztcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIGxldCBtb3VzZXVwX3R5cGVfaWQgPSBNb3VzZXVwLkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IG1vdXNlbW92ZV90eXBlX2lkID0gTW91c2Vtb3ZlLkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IGtleWRvd25fdHlwZV9pZCA9IEtleWRvd24uRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgY2xpY2tfdHlwZV9pZCA9IENsaWNrLkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IGNvbnRleHRtZW51X3R5cGVfaWQgPSBDb250ZXh0bWVudS5Gb3JfdGVzdGluZy50eXBlX2lkXG4gIGxldCB2aXNpYmlsaXR5Y2hhbmdlX3R5cGVfaWQgPSBWaXNpYmlsaXR5Y2hhbmdlLkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IGJlZm9yZXVubG9hZF90eXBlX2lkID0gQmVmb3JldW5sb2FkLkZvcl90ZXN0aW5nLnR5cGVfaWRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSnNfb2Zfb2NhbWxcblxudHlwZSB0ID0gUmF3Lk5vZGUudFxuXG5sZXQgdmRvbV90aHVuayA9IGxhenkgSnMuVW5zYWZlLihnZXQgZ2xvYmFsIChKcy5zdHJpbmcgXCJWZG9tVGh1bmtcIikpXG5cbmxldCBjcmVhdGUgfmtleSBhcmcgfmYgPVxuICBsZXQga2V5ID1cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgU29tZSBrZXkgLT4gSnMuT3B0ZGVmLnJldHVybiAoSnMuc3RyaW5nIGtleSlcbiAgICB8IE5vbmUgLT4gSnMuT3B0ZGVmLmVtcHR5XG4gIGluXG4gIGxldCBrZXkgPSBKcy5VbnNhZmUuaW5qZWN0IGtleSBpblxuICBsZXQgZiA9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBhIC0+IGYgYSkgfD4gSnMuVW5zYWZlLmluamVjdCBpblxuICBsZXQgYXJnID0gSnMuVW5zYWZlLmluamVjdCBhcmcgaW5cbiAgKE9iai5tYWdpYyA6IF8gLT4gUmF3Lk5vZGUudClcbiAgICAoSnMuVW5zYWZlLmZ1bl9jYWxsIChMYXp5LmZvcmNlIHZkb21fdGh1bmspIFt8IGY7IGFyZzsga2V5IHxdKVxuOztcbiIsIm9wZW4gQmFzZVxub3BlbiBKc19vZl9vY2FtbFxuXG50eXBlIGVsZW1lbnQgPVxuICB7IHRhZyA6IHN0cmluZ1xuICA7IGtleSA6IHN0cmluZyBvcHRpb25cbiAgOyBhdHRycyA6IEF0dHIudFxuICA7IHJhd19hdHRycyA6IFJhdy5BdHRycy50IExhenkudFxuICA7IGNoaWxkcmVuIDogUmF3Lk5vZGUudCBKcy5qc19hcnJheSBKcy50XG4gIDsga2luZCA6IFsgYFZub2RlIHwgYFN2ZyBdXG4gIH1cblxuYW5kIHdpZGdldCA9IFJhdy5XaWRnZXQudFxuXG5hbmQgdCA9XG4gIHwgTm9uZVxuICB8IFRleHQgb2Ygc3RyaW5nXG4gIHwgRWxlbWVudCBvZiBlbGVtZW50XG4gIHwgV2lkZ2V0IG9mIHdpZGdldFxuICB8IExhenkgb2ZcbiAgICAgIHsga2V5IDogc3RyaW5nIG9wdGlvblxuICAgICAgOyB0IDogdCBMYXp5LnRcbiAgICAgIH1cblxubW9kdWxlIEFsaWFzZXMgPSBzdHJ1Y3RcbiAgdHlwZSBub2RlX2NyZWF0b3IgPSA/a2V5OnN0cmluZyAtPiA/YXR0cnM6QXR0ci50IGxpc3QgLT4gdCBsaXN0IC0+IHRcbiAgdHlwZSBub2RlX2NyZWF0b3JfY2hpbGRsZXNzID0gP2tleTpzdHJpbmcgLT4gP2F0dHJzOkF0dHIudCBsaXN0IC0+IHVuaXQgLT4gdFxuZW5kXG5cbm1vZHVsZSBFbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IGVsZW1lbnRcblxuICBsZXQgdGFnIHQgPSB0LnRhZ1xuICBsZXQgYXR0cnMgdCA9IHQuYXR0cnNcbiAgbGV0IGtleSB0ID0gdC5rZXlcbiAgbGV0IHdpdGhfa2V5IHQga2V5ID0geyB0IHdpdGgga2V5ID0gU29tZSBrZXkgfVxuXG4gIGxldCBtYXBfYXR0cnMgdCB+ZiA9XG4gICAgbGV0IGF0dHJzID0gZiB0LmF0dHJzIGluXG4gICAgbGV0IHJhd19hdHRycyA9IGxhenkgKEF0dHIudG9fcmF3IGF0dHJzKSBpblxuICAgIHsgdCB3aXRoIGF0dHJzOyByYXdfYXR0cnMgfVxuICA7O1xuXG4gIGxldCBhZGRfY2xhc3MgdCBjID0gbWFwX2F0dHJzIHQgfmY6KGZ1biBhIC0+IEF0dHIuKGEgQCBjbGFzc18gYykpXG4gIGxldCBhZGRfY2xhc3NlcyB0IGMgPSBtYXBfYXR0cnMgdCB+ZjooZnVuIGEgLT4gQXR0ci4oYSBAIGNsYXNzZXMgYykpXG4gIGxldCBhZGRfc3R5bGUgdCBzID0gbWFwX2F0dHJzIHQgfmY6KGZ1biBhIC0+IEF0dHIuKGEgQCBzdHlsZSBzKSlcbmVuZFxuXG5sZXQgcmVjIHRfdG9fanMgPSBmdW5jdGlvblxuICB8IE5vbmUgLT5cbiAgICAoKiBXZSBub3JtYWxseSBmaWx0ZXIgdGhlc2Ugb3V0LCBidXQgaWYgW3RvX2pzXSBpcyBjYWxsZWQgZGlyZWN0bHkgb24gYSBbTm9uZV0gbm9kZSxcbiAgICAgICB3ZSB1c2UgdGhpcyBoYWNrLiBBc2lkZSBmcm9tIGhhdmluZyBhIFtUZXh0XSBub2RlIHdpdGhvdXQgYW55IHRleHQgcHJlc2VudCBpbiB0aGVcbiAgICAgICBEb20sIHRoZXJlIHNob3VsZCBiZSBubyB1bndhbnRlZCBzaWRlLWVmZmVjdHMuICBJbiBhbiBJbmNyX2RvbSBhcHBsaWNhdGlvbiwgdGhpc1xuICAgICAgIGNhbiBvbmx5IGhhcHBlbiB3aGVuIHRoZSByb290IHZpZXcgSW5jcmVtZW50YWwgaXMgaW5oYWJpdGVkIGJ5IGEgW05vbmVdLiAqKVxuICAgIFJhdy5Ob2RlLnRleHQgXCJcIlxuICB8IFRleHQgcyAtPiBSYXcuTm9kZS50ZXh0IHNcbiAgfCBFbGVtZW50IHsgdGFnOyBrZXk7IGF0dHJzID0gXzsgcmF3X2F0dHJzID0gKGxhenkgcmF3X2F0dHJzKTsgY2hpbGRyZW47IGtpbmQgPSBgVm5vZGUgfVxuICAgIC0+IFJhdy5Ob2RlLm5vZGUgdGFnIHJhd19hdHRycyBjaGlsZHJlbiBrZXlcbiAgfCBFbGVtZW50IHsgdGFnOyBrZXk7IGF0dHJzID0gXzsgcmF3X2F0dHJzID0gKGxhenkgcmF3X2F0dHJzKTsgY2hpbGRyZW47IGtpbmQgPSBgU3ZnIH1cbiAgICAtPiBSYXcuTm9kZS5zdmcgdGFnIHJhd19hdHRycyBjaGlsZHJlbiBrZXlcbiAgfCBXaWRnZXQgdyAtPiB3XG4gIHwgTGF6eSB7IHQ7IGtleSB9IC0+IFRodW5rLmNyZWF0ZSB+a2V5IHQgfmY6dF90b19qc19sYXp5XG5cbmFuZCB0X3RvX2pzX2xhenkgKGxhenkgdCkgPSB0X3RvX2pzIHRcblxubGV0IHRleHQgcyA9IFRleHQgc1xuXG5sZXQgZWxlbWVudCBraW5kIH50YWcgfmtleSBhdHRycyBjaGlsZHJlbiA9XG4gIGxldCBjaGlsZHJlbl9yYXcgPSBuZXclanMgSnMuYXJyYXlfZW1wdHkgaW5cbiAgTGlzdC5pdGVyIGNoaWxkcmVuIH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgKFRleHQgXyB8IEVsZW1lbnQgXyB8IFdpZGdldCBfIHwgTGF6eSBfKSBhcyBvdGhlciAtPlxuICAgICAgbGV0IChfIDogaW50KSA9IGNoaWxkcmVuX3JhdyMjcHVzaCAodF90b19qcyBvdGhlcikgaW5cbiAgICAgICgpKTtcbiAgbGV0IHJhd19hdHRycyA9IGxhenkgKEF0dHIudG9fcmF3IGF0dHJzKSBpblxuICB7IGtpbmQ7IHRhZzsga2V5OyBhdHRyczsgcmF3X2F0dHJzOyBjaGlsZHJlbiA9IGNoaWxkcmVuX3JhdyB9XG47O1xuXG5sZXQgY3JlYXRlIHRhZyA/a2V5ID8oYXR0cnMgPSBbXSkgY2hpbGRyZW4gPVxuICBFbGVtZW50IChlbGVtZW50IGBWbm9kZSB+dGFnIH5rZXkgKEF0dHIubWFueSBhdHRycykgY2hpbGRyZW4pXG47O1xuXG5tb2R1bGUgV2lkZ2V0ID0gc3RydWN0XG4gIG9wZW4gSnNfb2Zfb2NhbWxcblxuICBsZXQgY3JlYXRlX2VsZW1lbnQgPSBjcmVhdGVcblxuICB0eXBlIHZkb21fbm9kZSA9IHRcblxuICBpbmNsdWRlIFJhdy5XaWRnZXRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSBkb20gPSBwcml2YXRlICNEb21faHRtbC5lbGVtZW50XG5cbiAgICBtb2R1bGUgSW5wdXQgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN0YXRlIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgdmFsIGNyZWF0ZSA6IElucHV0LnQgLT4gU3RhdGUudCAqIGRvbSBKcy50XG5cbiAgICB2YWwgdXBkYXRlXG4gICAgICA6ICBwcmV2X2lucHV0OklucHV0LnRcbiAgICAgIC0+IGlucHV0OklucHV0LnRcbiAgICAgIC0+IHN0YXRlOlN0YXRlLnRcbiAgICAgIC0+IGVsZW1lbnQ6ZG9tIEpzLnRcbiAgICAgIC0+IFN0YXRlLnQgKiBkb20gSnMudFxuXG4gICAgdmFsIGRlc3Ryb3kgOiBwcmV2X2lucHV0OklucHV0LnQgLT4gc3RhdGU6U3RhdGUudCAtPiBlbGVtZW50OmRvbSBKcy50IC0+IHVuaXRcbiAgICB2YWwgdG9fdmRvbV9mb3JfdGVzdGluZyA6IFsgYEN1c3RvbSBvZiBJbnB1dC50IC0+IHZkb21fbm9kZSB8IGBTZXhwX29mX2lucHV0IF1cbiAgZW5kXG5cbiAgbGV0IG9mX21vZHVsZSAodHlwZSBpbnB1dCkgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgSW5wdXQudCA9IGlucHV0KSA9XG4gICAgbGV0IG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBpbnB1dCA6IE0uSW5wdXQudFxuICAgICAgICA7IHN0YXRlIDogTS5TdGF0ZS50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG4gICAgaW5cbiAgICBsZXQgc2V4cF9vZl9kb20gOiBNLmRvbSBKcy50IC0+IFNleHAudCA9IGZ1biBfIC0+IFNleHAuQXRvbSBcIjxvcGFxdWU+XCIgaW5cbiAgICBsZXQgaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpNLm5hbWUgWyVzZXhwX29mOiBTdGF0ZS50ICogZG9tXSBpblxuICAgIEJhc2UuU3RhZ2VkLnN0YWdlIChmdW4gaW5wdXQgLT5cbiAgICAgIGxldCB2ZG9tX2Zvcl90ZXN0aW5nID1cbiAgICAgICAgbGF6eVxuICAgICAgICAgICh0X3RvX2pzXG4gICAgICAgICAgICAgKG1hdGNoIE0udG9fdmRvbV9mb3JfdGVzdGluZyB3aXRoXG4gICAgICAgICAgICAgIHwgYEN1c3RvbSBmIC0+IGYgaW5wdXRcbiAgICAgICAgICAgICAgfCBgU2V4cF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgICAgIGxldCBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBNLklucHV0LnNleHBfb2ZfdCBpbnB1dCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IEF0b20gXCI8b3BhcXVlPlwiIC0+IFtdXG4gICAgICAgICAgICAgICAgICB8IG90aGVyIC0+IFsgdGV4dCAoU2V4cC50b19zdHJpbmdfaHVtIG90aGVyKSBdXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBjcmVhdGVfZWxlbWVudCAoTS5uYW1lIF4gXCItd2lkZ2V0XCIpIGNoaWxkcmVuKSlcbiAgICAgIGluXG4gICAgICBjcmVhdGVcbiAgICAgICAgfmlkXG4gICAgICAgIH52ZG9tX2Zvcl90ZXN0aW5nXG4gICAgICAgIH5pbml0OihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgc3RhdGUsIGVsZW1lbnQgPSBNLmNyZWF0ZSBpbnB1dCBpblxuICAgICAgICAgIHsgaW5wdXQ7IHN0YXRlIH0sIGVsZW1lbnQpXG4gICAgICAgIH51cGRhdGU6KGZ1biB7IFN0YXRlLmlucHV0ID0gcHJldl9pbnB1dDsgc3RhdGUgfSBlbGVtZW50IC0+XG4gICAgICAgICAgbGV0IHN0YXRlLCBlbGVtZW50ID0gTS51cGRhdGUgfnByZXZfaW5wdXQgfmlucHV0IH5zdGF0ZSB+ZWxlbWVudCBpblxuICAgICAgICAgIHsgaW5wdXQ7IHN0YXRlIH0sIGVsZW1lbnQpXG4gICAgICAgIH5kZXN0cm95OihmdW4geyBTdGF0ZS5pbnB1dCA9IHByZXZfaW5wdXQ7IHN0YXRlIH0gZWxlbWVudCAtPlxuICAgICAgICAgIE0uZGVzdHJveSB+cHJldl9pbnB1dCB+c3RhdGUgfmVsZW1lbnQpXG4gICAgICAgICgpKVxuICA7O1xuZW5kXG5cbmxldCBsYXp5XyA/a2V5IHQgPSBMYXp5IHsga2V5OyB0IH1cblxubGV0IGVsZW1lbnRfZXhwZXJ0IGtpbmQgfnRhZyA/a2V5IGF0dHJzIGNoaWxkcmVuID1cbiAgbGV0IHJhd19hdHRycyA9IGxhenkgKEF0dHIudG9fcmF3IGF0dHJzKSBpblxuICB7IGtpbmQ7IHRhZzsga2V5OyBhdHRyczsgcmF3X2F0dHJzOyBjaGlsZHJlbiB9XG47O1xuXG5sZXQgd2lkZ2V0ID92ZG9tX2Zvcl90ZXN0aW5nID9kZXN0cm95ID91cGRhdGUgfmlkIH5pbml0ICgpID1cbiAgbGV0IHZkb21fZm9yX3Rlc3RpbmcgPVxuICAgIGxhenlcbiAgICAgIChtYXRjaCB2ZG9tX2Zvcl90ZXN0aW5nIHdpdGhcbiAgICAgICB8IFNvbWUgdCAtPiB0X3RvX2pzIChMYXp5LmZvcmNlIHQpXG4gICAgICAgfCBOb25lIC0+IHRfdG9fanMgKGNyZWF0ZSAoVHlwZV9lcXVhbC5JZC5uYW1lIGlkIF4gXCItd2lkZ2V0XCIpIFtdKSlcbiAgaW5cbiAgV2lkZ2V0IChXaWRnZXQuY3JlYXRlIH52ZG9tX2Zvcl90ZXN0aW5nID9kZXN0cm95ID91cGRhdGUgfmlkIH5pbml0ICgpKVxuOztcblxubGV0IGNyZWF0ZV9jaGlsZGxlc3MgdGFnID9rZXkgP2F0dHJzICgpID0gY3JlYXRlIHRhZyA/a2V5ID9hdHRycyBbXVxuXG5sZXQgY3JlYXRlX3N2ZyB0YWcgP2tleSA/KGF0dHJzID0gW10pIGNoaWxkcmVuID1cbiAgRWxlbWVudCAoZWxlbWVudCBgU3ZnIH50YWcgfmtleSAoQXR0ci5tYW55IGF0dHJzKSBjaGlsZHJlbilcbjs7XG5cbmxldCBjcmVhdGVfc3ZnX21vbm9pZCB0YWcgP2tleSA/KGF0dHJzID0gW10pIGNoaWxkcmVuID1cbiAgRWxlbWVudCAoZWxlbWVudCBgU3ZnIH50YWcgfmtleSAoQXR0ci5tYW55IGF0dHJzKSBjaGlsZHJlbilcbjs7XG5cbmxldCBub25lID0gTm9uZVxubGV0IHRleHRmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiB0ZXh0IGZvcm1hdFxuXG5sZXQgd2lkZ2V0X29mX21vZHVsZSBtID1cbiAgbGV0IGYgPSBCYXNlLlN0YWdlZC51bnN0YWdlIChXaWRnZXQub2ZfbW9kdWxlIG0pIGluXG4gIEJhc2UuU3RhZ2VkLnN0YWdlIChmdW4gaSAtPiBXaWRnZXQgKGYgaSkpXG47O1xuXG5sZXQgdG9fcmF3ID0gdF90b19qc1xubGV0IHRvX2RvbSB0ID0gUmF3Lk5vZGUudG9fZG9tICh0b19yYXcgdClcblxubW9kdWxlIElubmVyX2h0bWwgPSBzdHJ1Y3RcbiAgbGV0IHdpZGdldCB+bmFtZSBjcmVhdGUgPVxuICAgIGxldCBpZCA9XG4gICAgICAoKiBzdGFnZSB0aGUgaWQgZ2VuZXJhdGlvbiAqKVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWUgKGZ1biAoKGNvbnRlbnQsIF8sIF8pLCBfKSAtPiBTZXhwLkF0b20gY29udGVudClcbiAgICBpblxuICAgIFN0YWdlZC5zdGFnZVxuICAgICAgKGZ1blxuICAgICAgICA/b3ZlcnJpZGVfdmRvbV9mb3JfdGVzdGluZ1xuICAgICAgICB+dGFnXG4gICAgICAgIH5hdHRyc1xuICAgICAgICB+dGhpc19odG1sX2lzX3Nhbml0aXplZF9hbmRfaXNfdG90YWxseV9zYWZlX3RydXN0X21lOmNvbnRlbnRcbiAgICAgICAgKClcbiAgICAgICAgLT5cbiAgICAgICAgICBsZXQgZWxlbWVudCA9IGNyZWF0ZSB0YWcgfmF0dHJzIFtdIGluXG4gICAgICAgICAgbGV0IGluaXQgKCkgPVxuICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSB0b19kb20gZWxlbWVudCBpblxuICAgICAgICAgICAgZWxlbWVudCMjLmlubmVySFRNTCA6PSBKcy5zdHJpbmcgY29udGVudDtcbiAgICAgICAgICAgIChjb250ZW50LCB0YWcsIGF0dHJzKSwgZWxlbWVudFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHVwZGF0ZSAocHJldl9jb250ZW50LCBwcmV2X3RhZywgcHJldl9hdHRyKSBlbGVtZW50ID1cbiAgICAgICAgICAgIGxldCBlbGVtZW50ID1cbiAgICAgICAgICAgICAgKCogaWYgdGhlIHRhZyBvciB0aGUgYXR0cmlidXRlcyBhcmUgZGlmZmVyZW50LCBkbyBhIGRpZmYvcGF0Y2ggY3ljbGUgdG9cbiAgICAgICAgICAgICAgICAgZ2V0IGl0IHVwIHRvIGRhdGUgKilcbiAgICAgICAgICAgICAgaWYgKG5vdCAoU3RyaW5nLmVxdWFsIHByZXZfdGFnIHRhZykpIHx8IG5vdCAocGh5c19lcXVhbCBwcmV2X2F0dHIgYXR0cnMpXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBSYXcuUGF0Y2guY3JlYXRlXG4gICAgICAgICAgICAgICAgICB+cHJldmlvdXM6KGNyZWF0ZSBwcmV2X3RhZyB+YXR0cnM6cHJldl9hdHRyIFtdIHw+IHRvX3JhdylcbiAgICAgICAgICAgICAgICAgIH5jdXJyZW50OihjcmVhdGUgdGFnIH5hdHRycyBbXSB8PiB0b19yYXcpXG4gICAgICAgICAgICAgICAgfD4gUmF3LlBhdGNoLmFwcGx5IGVsZW1lbnRcbiAgICAgICAgICAgICAgZWxzZSBlbGVtZW50XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogaWYgdGhlIHRhZyBjaGFuZ2VkLCB0aGVuIFtlbGVtZW50XSB3aWxsIGJlIGVtcHR5LCBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGVcbiAgICAgICAgICAgICAgIGlubmVySFRNTC4gIElmIHRoZSBjb250ZW50IGNoYW5nZWQsIHRoZW4gd2UgbmVlZCB0byBzZXQgdGhlIGlubmVySFRNTCBmb3JcbiAgICAgICAgICAgICAgIG9idmlvdXMgcmVhc29ucy4gKilcbiAgICAgICAgICAgIGlmIChub3QgKFN0cmluZy5lcXVhbCBwcmV2X3RhZyB0YWcpKSB8fCBub3QgKFN0cmluZy5lcXVhbCBwcmV2X2NvbnRlbnQgY29udGVudClcbiAgICAgICAgICAgIHRoZW4gZWxlbWVudCMjLmlubmVySFRNTCA6PSBKcy5zdHJpbmcgY29udGVudDtcbiAgICAgICAgICAgIChjb250ZW50LCB0YWcsIGF0dHJzKSwgZWxlbWVudFxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogV2UgdXNlIHRoZSBbd2lkZ2V0XSBmdW5jdGlvbiBkaXJlY3RseSwgcmF0aGVyIHRoYW4gdGhyb3VnaCB0aGVcbiAgICAgICAgICAgICBlYXNpZXItdG8tdXNlIFt3aWRnZXRfb2ZfbW9kdWxlXSBmdW5jdGlvbiBiZWNhdXNlIHdlIHdhbnQgdG9cbiAgICAgICAgICAgICBleHBsaWNpdGx5IGNyZWF0ZSB0aGUgaWQgc3VjaCB0aGF0IGl0IGlzIGRpc3RpbmN0IGJldHdlZW5cbiAgICAgICAgICAgICBbaW5uZXJfaHRtbF0gYW5kIFtpbm5lcl9odG1sX3N2Z10uICopXG4gICAgICAgICAgbGV0IHZkb21fZm9yX3Rlc3RpbmcgPVxuICAgICAgICAgICAgbWF0Y2ggb3ZlcnJpZGVfdmRvbV9mb3JfdGVzdGluZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbGF6eSAoY3JlYXRlIHRhZyB+YXR0cnMgWyB0ZXh0IGNvbnRlbnQgXSlcbiAgICAgICAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgICAgICBpblxuICAgICAgICAgIHdpZGdldCB+aWQgfnZkb21fZm9yX3Rlc3RpbmcgfmluaXQgfnVwZGF0ZSAoKSlcbiAgOztcbmVuZFxuXG5sZXQgaW5uZXJfaHRtbF9zdmcgPVxuICBJbm5lcl9odG1sLndpZGdldCB+bmFtZTpcImlubmVyLWh0bWwtc3ZnLW5vZGVcIiAoZnVuIHRhZyB+YXR0cnMgLT5cbiAgICBjcmVhdGVfc3ZnX21vbm9pZCB0YWcgP2tleTpOb25lIH5hdHRycylcbiAgfD4gU3RhZ2VkLnVuc3RhZ2Vcbjs7XG5cbmxldCBpbm5lcl9odG1sID1cbiAgSW5uZXJfaHRtbC53aWRnZXQgfm5hbWU6XCJpbm5lci1odG1sLW5vZGVcIiAoZnVuIHRhZyB+YXR0cnMgLT5cbiAgICBjcmVhdGUgdGFnID9rZXk6Tm9uZSB+YXR0cnMpXG4gIHw+IFN0YWdlZC51bnN0YWdlXG47O1xuXG5sZXQgYSA9IGNyZWF0ZSBcImFcIlxubGV0IGFiYnIgPSBjcmVhdGUgXCJhYmJyXCJcbmxldCBib2R5ID0gY3JlYXRlIFwiYm9keVwiXG5sZXQgYnV0dG9uID0gY3JlYXRlIFwiYnV0dG9uXCJcbmxldCBjb2RlID0gY3JlYXRlIFwiY29kZVwiXG5sZXQgZGF0YWxpc3QgPSBjcmVhdGUgXCJkYXRhbGlzdFwiXG5sZXQgZGV0YWlscyA9IGNyZWF0ZSBcImRldGFpbHNcIlxubGV0IGRpdiA9IGNyZWF0ZSBcImRpdlwiXG5sZXQgbWFpbiA9IGNyZWF0ZSBcIm1haW5cIlxubGV0IGZpZWxkc2V0ID0gY3JlYXRlIFwiZmllbGRzZXRcIlxubGV0IGxlZ2VuZCA9IGNyZWF0ZSBcImxlZ2VuZFwiXG5sZXQgZm9vdGVyID0gY3JlYXRlIFwiZm9vdGVyXCJcbmxldCBoMSA9IGNyZWF0ZSBcImgxXCJcbmxldCBoMiA9IGNyZWF0ZSBcImgyXCJcbmxldCBoMyA9IGNyZWF0ZSBcImgzXCJcbmxldCBoNCA9IGNyZWF0ZSBcImg0XCJcbmxldCBoNSA9IGNyZWF0ZSBcImg1XCJcbmxldCBoNiA9IGNyZWF0ZSBcImg2XCJcbmxldCBoZWFkZXIgPSBjcmVhdGUgXCJoZWFkZXJcIlxubGV0IGh0bWwgPSBjcmVhdGUgXCJodG1sXCJcbmxldCBpbnB1dCA9IGNyZWF0ZV9jaGlsZGxlc3MgXCJpbnB1dFwiXG5sZXQgaW1nID0gY3JlYXRlX2NoaWxkbGVzcyBcImltZ1wiXG5sZXQgaW5wdXRfZGVwcmVjYXRlZCA9IGNyZWF0ZSBcImlucHV0XCJcbmxldCB0ZXh0YXJlYSA9IGNyZWF0ZSBcInRleHRhcmVhXCJcbmxldCBzZWxlY3QgPSBjcmVhdGUgXCJzZWxlY3RcIlxubGV0IG9wdGdyb3VwID0gY3JlYXRlIFwib3B0Z3JvdXBcIlxubGV0IG9wdGlvbiA9IGNyZWF0ZSBcIm9wdGlvblwiXG5sZXQgbGFiZWwgPSBjcmVhdGUgXCJsYWJlbFwiXG5sZXQgbGkgPSBjcmVhdGUgXCJsaVwiXG5sZXQgcCA9IGNyZWF0ZSBcInBcIlxubGV0IHByZSA9IGNyZWF0ZSBcInByZVwiXG5sZXQgc2VjdGlvbiA9IGNyZWF0ZSBcInNlY3Rpb25cIlxubGV0IHNwYW4gPSBjcmVhdGUgXCJzcGFuXCJcbmxldCBzdHJvbmcgPSBjcmVhdGUgXCJzdHJvbmdcIlxubGV0IGVtID0gY3JlYXRlIFwiZW1cIlxubGV0IGJsb2NrcXVvdGUgPSBjcmVhdGUgXCJibG9ja3F1b3RlXCJcbmxldCBzdW1tYXJ5ID0gY3JlYXRlIFwic3VtbWFyeVwiXG5sZXQgaWZyYW1lID0gY3JlYXRlIFwiaWZyYW1lXCJcbmxldCB0YWJsZSA9IGNyZWF0ZSBcInRhYmxlXCJcbmxldCB0Ym9keSA9IGNyZWF0ZSBcInRib2R5XCJcbmxldCB0ZCA9IGNyZWF0ZSBcInRkXCJcbmxldCB0aCA9IGNyZWF0ZSBcInRoXCJcbmxldCB0aGVhZCA9IGNyZWF0ZSBcInRoZWFkXCJcbmxldCB0ciA9IGNyZWF0ZSBcInRyXCJcbmxldCB1bCA9IGNyZWF0ZSBcInVsXCJcbmxldCBvbCA9IGNyZWF0ZSBcIm9sXCJcbmxldCBiciA9IGNyZWF0ZV9jaGlsZGxlc3MgXCJiclwiXG5sZXQgaHIgPSBjcmVhdGVfY2hpbGRsZXNzIFwiaHJcIlxubGV0IGRsID0gY3JlYXRlIFwiZGxcIlxubGV0IGR0ID0gY3JlYXRlIFwiZHRcIlxubGV0IGRkID0gY3JlYXRlIFwiZGRcIlxuXG5sZXQgc2V4cF9mb3JfZGVidWdnaW5nID9pbmRlbnQgc2V4cCA9XG4gIHNleHAgfD4gU2V4cC50b19zdHJpbmdfaHVtID9pbmRlbnQgfD4gdGV4dCB8PiBMaXN0LnJldHVybiB8PiBwcmUgfmF0dHJzOltdXG47O1xuXG5tb2R1bGUgUGF0Y2ggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUmF3LlBhdGNoLnRcblxuICBsZXQgY3JlYXRlIH5wcmV2aW91cyB+Y3VycmVudCA9XG4gICAgUmF3LlBhdGNoLmNyZWF0ZSB+cHJldmlvdXM6KHRfdG9fanMgcHJldmlvdXMpIH5jdXJyZW50Oih0X3RvX2pzIGN1cnJlbnQpXG4gIDs7XG5cbiAgbGV0IGFwcGx5IHQgZWx0ID0gUmF3LlBhdGNoLmFwcGx5IGVsdCB0XG4gIGxldCBpc19lbXB0eSB0ID0gUmF3LlBhdGNoLmlzX2VtcHR5IHRcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBjcmVhdGUgP2tleSB0YWcgYXR0cnMgY2hpbGRyZW4gPVxuICAgIEVsZW1lbnQgKGVsZW1lbnRfZXhwZXJ0IGBWbm9kZSA/a2V5IH50YWcgYXR0cnMgY2hpbGRyZW4pXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9zdmcgP2tleSB0YWcgYXR0cnMgY2hpbGRyZW4gPVxuICAgIEVsZW1lbnQgKGVsZW1lbnRfZXhwZXJ0IGBTdmcgP2tleSB+dGFnIGF0dHJzIGNoaWxkcmVuKVxuICA7O1xuZW5kXG4iLCJtb2R1bGUgQXR0ciA9IHN0cnVjdFxuICBpbmNsdWRlIEF0dHJcbiAgbW9kdWxlIEhvb2tzID0gSG9va3NcbiAgbW9kdWxlIEdsb2JhbF9saXN0ZW5lcnMgPSBHbG9iYWxfbGlzdGVuZXJzXG5lbmRcblxubW9kdWxlIEF0dHJzID0gQXR0ci5NdWx0aVxubW9kdWxlIEVmZmVjdCA9IEVmZmVjdFxubW9kdWxlIE5vZGUgPSBOb2RlXG4iLCJtb2R1bGUgVmRvbSA9IFZkb21cbm1vZHVsZSBEb21fZmxvYXQgPSBEb21fZmxvYXRcbm1vZHVsZSBKc19tYXAgPSBKc19tYXBcblxubW9kdWxlIFRvcF9sZXZlbF9lZmZlY3RzID0gc3RydWN0XG4gIGxldCAoKSA9XG4gICAgKCogdXNlIHRoZSBuYXRpdmUtamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBmbG9hdCAtPiBzdHJpbmcgd2l0aCBhIGZpeGVkIG51bWJlciBvZlxuICAgICAgIG51bWJlcnMgYWZ0ZXIgdGhlIGRlY2ltYWwgcGxhY2UuICopXG4gICAgQ3NzX2dlbi5Qcml2YXRlLmZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkIDo9IERvbV9mbG9hdC50b19zdHJpbmdfZml4ZWRcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDcHVzZXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBJbnQuU2V0LnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgbGV0IGhlcmUgPSBbJWhlcmVdXG5cbiAgICAgIGxldCB2YWxpZGF0ZSB0ID1cbiAgICAgICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZVxuICAgICAgICAgIChJbnQudmFsaWRhdGVfbGJvdW5kIH5taW46KEluY2wgMSkgKFNldC5sZW5ndGggdCkpXG4gICAgICAgICAgKFNldC50b19saXN0IHRcbiAgICAgICAgICAgfD4gTGlzdC5tYXAgfmY6SW50LnZhbGlkYXRlX25vbl9uZWdhdGl2ZVxuICAgICAgICAgICB8PiBWYWxpZGF0ZS5uYW1lX2xpc3QgXCJUaHJlYWRfcG9vbF9jcHVzZXRcIilcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIGxldCBlcXVhbCB0MSB0MiA9IEludC5TZXQuZXF1YWwgKHQxIHw+IHJhdykgKHQyIHw+IHJhdylcbmVuZFxuXG50eXBlIHQgPVxuICB8IEluaGVyaXRcbiAgfCBDcHVzZXQgb2YgQ3B1c2V0LnRcbltAQGRlcml2aW5nIHNleHBdXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgVHVwbGVfdHlwZV9pbnRmXG5cbm1vZHVsZSBTbG90cyA9IHN0cnVjdFxuICB0eXBlIHVfID0geyBzbG90c19wZXJfdHVwbGUgOiBpbnQgfSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgndHVwbGUsICd2YXJpYW50KSB1ID0gdV8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSB0XyA9IFsgYFNsb3RzIG9mIHVfIF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ3R1cGxlLCAndmFyaWFudCkgdCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHNsb3RzX3Blcl90dXBsZSAoYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gbiB9KSA9IG5cblxuICB0eXBlICdhMCB0MSA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExKSB0MiA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIpIHQzID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzKSB0NCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0KSB0NSA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUpIHQ2ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2KSB0NyA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3KSB0OCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgpIHQ5ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5KSB0MTAgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCkgdDExID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTksICdhMTAsICdhMTEpIHQxMiA9IHRfXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwLCAnYTExLCAnYTEyKSB0MTMgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCwgJ2ExMSwgJ2ExMiwgJ2ExMykgdDE0ID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdDEgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxIH1cbiAgbGV0IHQyID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMiB9XG4gIGxldCB0MyA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDMgfVxuICBsZXQgdDQgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA0IH1cbiAgbGV0IHQ1ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gNSB9XG4gIGxldCB0NiA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDYgfVxuICBsZXQgdDcgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA3IH1cbiAgbGV0IHQ4ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gOCB9XG4gIGxldCB0OSA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDkgfVxuICBsZXQgdDEwID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTAgfVxuICBsZXQgdDExID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTEgfVxuICBsZXQgdDEyID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTIgfVxuICBsZXQgdDEzID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTMgfVxuICBsZXQgdDE0ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTQgfVxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHVwbGVfcG9vbF9pbnRmXG5tb2R1bGUgVHVwbGVfdHlwZSA9IFR1cGxlX3R5cGVcblxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xubGV0IHBoeXNfZXF1YWwgPSBTdGRsaWIuKCA9PSApXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplX2luX2JpdHMgPSA2NFxuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCBudW1fYml0cyA9IEludC5udW1fYml0c1xuICBsZXQgbWF4X3ZhbHVlID0gU3RkbGliLm1heF9pbnRcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9pbnRcbmVuZFxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5sZXQgY29uY2F0IGwgPSBCYXNlLlN0cmluZy5jb25jYXQgfnNlcDpcIlwiIGxcblxubW9kdWxlIHR5cGUgUyA9IFNcblxubW9kdWxlIFBvb2wgPSBzdHJ1Y3RcbiAgbGV0IGdyb3dfY2FwYWNpdHkgfmNhcGFjaXR5IH5vbGRfY2FwYWNpdHkgPVxuICAgIG1hdGNoIGNhcGFjaXR5IHdpdGhcbiAgICB8IE5vbmUgLT4gaWYgb2xkX2NhcGFjaXR5ID0gMCB0aGVuIDEgZWxzZSBvbGRfY2FwYWNpdHkgKiAyXG4gICAgfCBTb21lIGNhcGFjaXR5IC0+XG4gICAgICBpZiBjYXBhY2l0eSA8PSBvbGRfY2FwYWNpdHlcbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiUG9vbC5ncm93IGdvdCB0b28gc21hbGwgY2FwYWNpdHlcIlxuICAgICAgICAgIChgY2FwYWNpdHkgY2FwYWNpdHksIGBvbGRfY2FwYWNpdHkgb2xkX2NhcGFjaXR5KVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgY2FwYWNpdHkgb2YgaW50IF0gKiBbIGBvbGRfY2FwYWNpdHkgb2YgaW50IF1dO1xuICAgICAgY2FwYWNpdHlcbiAgOztcblxuICBtb2R1bGUgU2xvdHMgPSBUdXBsZV90eXBlLlNsb3RzXG5cbiAgbGV0IG1heF9zbG90ID0gMTRcblxuICAoKiBUaGUgcG9vbCBpcyByZXByZXNlbnRlZCBhcyBhIHNpbmdsZSBbVW5pZm9ybV9hcnJheS50XSwgd2hlcmUgaW5kZXggemVybyBoYXMgdGhlXG4gICAgIG1ldGFkYXRhIGFib3V0IHRoZSBwb29sIGFuZCB0aGUgcmVtYWluaW5nIGluZGljZXMgYXJlIHRoZSB0dXBsZXMgbGF5ZWQgb3V0IG9uZSBhZnRlclxuICAgICB0aGUgb3RoZXIuICBFYWNoIHR1cGxlIHRha2VzIFsxICsgc2xvdHNfcGVyX3R1cGxlXSBpbmRpY2VzIGluIHRoZSBwb29sLCB3aGVyZSB0aGVcbiAgICAgZmlyc3QgaW5kZXggaG9sZHMgYSBoZWFkZXIgYW5kIHRoZSByZW1haW5pbmcgaW5kaWNlcyBob2xkIHRoZSB0dXBsZSdzIHNsb3RzOlxuXG4gICAgIHt2XG4gICAgIHwgaGVhZGVyIHwgczAgfCBzMSB8IC4uLiB8IHM8Ti0xPiB8XG4gICAgIHZ9XG5cbiAgICAgQSBbUG9pbnRlci50XSB0byBhIHR1cGxlIGNvbnRhaW5zIHRoZSBpbnRlZ2VyIGluZGV4IHdoZXJlIGl0cyBoZWFkZXIgaXMsIGFzIHdlbGwgYXNcbiAgICAgKGEgbWFzayBvZikgdGhlIHR1cGxlJ3MgdW5pcXVlIGlkLlxuXG4gICAgIFRoZSBmcmVlIHR1cGxlcyBhcmUgc2luZ2x5IGxpbmtlZCB2aWEgdGhlIGhlYWRlcnMuXG5cbiAgICAgV2hlbiBhIHR1cGxlIGlzIGluIHVzZSwgaXRzIGhlYWRlciBpcyBtYXJrZWQgdG8gaW5kaWNhdGUgc28sIGFuZCBhbHNvIHRvIGluY2x1ZGUgdGhlXG4gICAgIHR1cGxlJ3MgdW5pcXVlIGlkLiAgVGhpcyBhbGxvd3MgdXMgdG8gY2hlY2sgaW4gY29uc3RhbnQgdGltZSB3aGV0aGVyIGEgcG9pbnRlciBpc1xuICAgICB2YWxpZCwgYnkgY29tcGFyaW5nIHRoZSBpZCBpbiB0aGUgcG9pbnRlciB3aXRoIHRoZSBpZCBpbiB0aGUgaGVhZGVyLlxuXG4gICAgIFdoZW4gYSB0dXBsZSBpcyBub3QgaW4gdXNlLCBpdHMgaGVhZGVyIGlzIHBhcnQgb2YgdGhlIGZyZWUgbGlzdCwgYW5kIGl0cyB0dXBsZSBzbG90c1xuICAgICBoYXZlIGR1bW15IHZhbHVlcyBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZXMsIGZyb20gdGhlIFtkdW1teV0gdHVwbGUgc3VwcGxpZWQgdG9cbiAgICAgW2NyZWF0ZV0uICBXZSBtdXN0IGhhdmUgZHVtbXkgdmFsdWVzIG9mIHRoZSBjb3JyZWN0IHR5cGUgdG8gcHJldmVudCBhIHNlZ2ZhdWx0IGluXG4gICAgIGNvZGUgdGhhdCAobWlzdGFrZW5seSkgdXNlcyBhIHBvaW50ZXIgdG8gYSBmcmVlIHR1cGxlLlxuXG4gICAgIEZvciBbUG9vbC5VbnNhZmVdLCBhIHNsb3QgaW4gYSBmcmVlIG9iamVjdCBpcyBndWFyYW50ZWVkIHRvIGJlIGFuIGludDsgaXQgbXVzdCBub3QgYmVcbiAgICAgcG9pbnRlciB0byBwcmV2ZW50IGEgc3BhY2UgbGVhay4gIEhvd2V2ZXIsIHRoZSBpbnQgaW4gdGhlIHNsb3QgbWF5IG5vdCByZXByZXNlbnQgYVxuICAgICB2YWxpZCB2YWx1ZSBvZiB0aGUgdHlwZS5cbiAgKilcblxuICBtb2R1bGUgU2xvdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdzbG90cywgJ2EpIHQgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBlcXVhbCAodDEgOiAoXywgXykgdCkgdDIgPSB0MSA9IHQyXG4gICAgbGV0IHQwID0gMVxuICAgIGxldCB0MSA9IDJcbiAgICBsZXQgdDIgPSAzXG4gICAgbGV0IHQzID0gNFxuICAgIGxldCB0NCA9IDVcbiAgICBsZXQgdDUgPSA2XG4gICAgbGV0IHQ2ID0gN1xuICAgIGxldCB0NyA9IDhcbiAgICBsZXQgdDggPSA5XG4gICAgbGV0IHQ5ID0gMTBcbiAgICBsZXQgdDEwID0gMTFcbiAgICBsZXQgdDExID0gMTJcbiAgICBsZXQgdDEyID0gMTNcbiAgICBsZXQgdDEzID0gMTRcbiAgICBsZXQldGVzdCBfID0gdDEzID0gbWF4X3Nsb3RcbiAgZW5kXG5cbiAgKCogV2Ugb25seSBoYXZlIFtJbnQubnVtX2JpdHNdIGJpdHMgYXZhaWxhYmxlIGZvciBwb29sIHBvaW50ZXJzLiAgVGhlIGJpdHMgb2YgYSBwb29sXG4gICAgIHBvaW50ZXIgZW5jb2RlIHR3byB0aGluZ3M6XG5cbiAgICAgLSB0aGUgdHVwbGUncyBhcnJheSBpbmRleCBpbiB0aGUgcG9vbFxuICAgICAtIHRoZSB0dXBsZSdzIGlkZW50aWZpZXIgKG5vdCBuZWNlc3NhcmlseSB1bmlxdWUpXG5cbiAgICAgV2UgY2hvb3NlIFthcnJheV9pbmRleF9udW1fYml0c10gYXMgbGFyZ2UgYXMgbmVlZGVkIGZvciB0aGUgbWF4aW11bSBwb29sIGNhcGFjaXR5XG4gICAgIHRoYXQgd2Ugd2FudCB0byBzdXBwb3J0LCBhbmQgdXNlIHRoZSByZW1haW5pbmcgW21hc2tlZF90dXBsZV9pZF9udW1fYml0c10gYml0cyBmb3JcbiAgICAgdGhlIGlkZW50aWZpZXIuICA2NC1iaXQgYW5kIDMyLWJpdCBhcmNoaXRlY3R1cmVzIHR5cGljYWxseSBoYXZlIHZlcnkgZGlmZmVyZW50XG4gICAgIGFkZHJlc3Mtc3BhY2Ugc2l6ZXMsIHNvIHdlIGNob29zZSBbYXJyYXlfaW5kZXhfbnVtX2JpdHNdIGRpZmZlcmVudGx5LiAqKVxuXG4gIGxldCBhcnJheV9pbmRleF9udW1fYml0cyA9XG4gICAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgICB0aGVuIChcbiAgICAgIGFzc2VydCAoSW50Lm51bV9iaXRzID0gNjMpO1xuICAgICAgMzApXG4gICAgZWxzZSAoXG4gICAgICBhc3NlcnQgKEludC5udW1fYml0cyA9IDMxIHx8IEludC5udW1fYml0cyA9IDMyKTtcbiAgICAgIDIyKVxuICA7O1xuXG4gIGxldCBtYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHMgPSBJbnQubnVtX2JpdHMgLSBhcnJheV9pbmRleF9udW1fYml0c1xuICBsZXQldGVzdCBfID0gYXJyYXlfaW5kZXhfbnVtX2JpdHMgPiAwXG4gIGxldCV0ZXN0IF8gPSBtYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHMgPiAwXG4gIGxldCV0ZXN0IF8gPSBhcnJheV9pbmRleF9udW1fYml0cyArIG1hc2tlZF90dXBsZV9pZF9udW1fYml0cyA8PSBJbnQubnVtX2JpdHNcbiAgbGV0IG1heF9hcnJheV9sZW5ndGggPSAxIGxzbCBhcnJheV9pbmRleF9udW1fYml0c1xuXG4gIG1vZHVsZSBUdXBsZV9pZCA6IHNpZ1xuICAgIHR5cGUgdCA9IHByaXZhdGUgaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGluaXQgOiB0XG4gICAgdmFsIG5leHQgOiB0IC0+IHRcbiAgICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgICB2YWwgZXhhbXBsZXMgOiB0IGxpc3RcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAoKiBXZSBndWFyYW50ZWUgdGhhdCB0dXBsZSBpZHMgYXJlIG5vbm5lZ2F0aXZlIHNvIHRoYXQgdGhleSBjYW4gYmUgZW5jb2RlZCBpblxuICAgICAgIGhlYWRlcnMuICopXG4gICAgbGV0IGludmFyaWFudCB0ID0gYXNzZXJ0ICh0ID49IDApXG4gICAgbGV0IHRvX3N0cmluZyA9IEludC50b19zdHJpbmdcbiAgICBsZXQgZXF1YWwgKHQxIDogdCkgdDIgPSB0MSA9IHQyXG4gICAgbGV0IGluaXQgPSAwXG4gICAgbGV0IG5leHQgdCA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gdCArIDEgZWxzZSBpZiB0ID0gSW50Lm1heF92YWx1ZSB0aGVuIDAgZWxzZSB0ICsgMVxuICAgIGxldCB0b19pbnQgdCA9IHRcblxuICAgIGxldCBvZl9pbnQgaSA9XG4gICAgICBpZiBpIDwgMFxuICAgICAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlR1cGxlX2lkLm9mX2ludCBnb3QgbmVnYXRpdmUgaW50XCIgaSBbJXNleHBfb2Y6IGludF07XG4gICAgICBpXG4gICAgOztcblxuICAgIGxldCBleGFtcGxlcyA9IFsgMDsgMTsgMHgxRkZGX0ZGRkY7IEludC5tYXhfdmFsdWUgXVxuICBlbmRcblxuICBsZXQgdHVwbGVfaWRfbWFzayA9ICgxIGxzbCBtYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHMpIC0gMVxuXG4gIG1vZHVsZSBQb2ludGVyIDogc2lnXG4gICAgKCogW1BvaW50ZXIudF0gaXMgYW4gZW5jb2RpbmcgYXMgYW4gW2ludF0gb2YgdGhlIGZvbGxvd2luZyBzdW0gdHlwZTpcblxuICAgICAgIHtbXG4gICAgICAgICB8IE51bGxcbiAgICAgICAgIHwgTm9ybWFsIG9mIHsgaGVhZGVyX2luZGV4IDogaW50OyBtYXNrZWRfdHVwbGVfaWQgOiBpbnQgfVxuICAgICAgIF19XG5cbiAgICAgICBUaGUgZW5jb2RpbmcgaXMgY2hvc2VuIHRvIG9wdGltaXplIHRoZSBtb3N0IGNvbW1vbiBvcGVyYXRpb24sIG5hbWVseSB0dXBsZS1zbG90XG4gICAgICAgYWNjZXNzLCB0aGUgW3Nsb3RfaW5kZXhdIGZ1bmN0aW9uLiAgVGhlIGVuY29kaW5nIGlzIGRlc2lnbmVkIHNvIHRoYXQgW3Nsb3RfaW5kZXhdXG4gICAgICAgcHJvZHVjZXMgYSBuZWdhdGl2ZSBudW1iZXIgZm9yIFtOdWxsXSwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc3Vic2VxdWVudCBhcnJheSBib3VuZHNcbiAgICAgICBjaGVjayB0byBmYWlsLiAqKVxuXG4gICAgdHlwZSAnc2xvdHMgdCA9IHByaXZhdGUgaW50IFtAQGRlcml2aW5nIHNleHBfb2YsIHR5cGVyZXBdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgcGh5c19jb21wYXJlIDogJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBwaHlzX2VxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcblxuICAgICgqIFRoZSBudWxsIHBvaW50ZXIuICBbbnVsbF0gaXMgYSBmdW5jdGlvbiBkdWUgdG8gaXNzdWVzIHdpdGggdGhlIHZhbHVlIHJlc3RyaWN0aW9uLiAqKVxuXG4gICAgdmFsIG51bGwgOiB1bml0IC0+IF8gdFxuICAgIHZhbCBpc19udWxsIDogXyB0IC0+IGJvb2xcblxuICAgICgqIE5vcm1hbCBwb2ludGVycy4gKilcblxuICAgIHZhbCBjcmVhdGUgOiBoZWFkZXJfaW5kZXg6aW50IC0+IFR1cGxlX2lkLnQgLT4gXyB0XG4gICAgdmFsIGhlYWRlcl9pbmRleCA6IF8gdCAtPiBpbnRcbiAgICB2YWwgbWFza2VkX3R1cGxlX2lkIDogXyB0IC0+IGludFxuICAgIHZhbCBzbG90X2luZGV4IDogXyB0IC0+IChfLCBfKSBTbG90LnQgLT4gaW50XG4gICAgdmFsIGZpcnN0X3Nsb3RfaW5kZXggOiBfIHQgLT4gaW50XG5cbiAgICBtb2R1bGUgSWQgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICAgIHZhbCB0b19pbnQ2MyA6IHQgLT4gSW50NjMudFxuICAgICAgdmFsIG9mX2ludDYzIDogSW50NjMudCAtPiB0XG4gICAgZW5kXG5cbiAgICB2YWwgdG9faWQgOiBfIHQgLT4gSWQudFxuICAgIHZhbCBvZl9pZF9leG4gOiBJZC50IC0+IF8gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICAoKiBBIHBvaW50ZXIgaXMgZWl0aGVyIFtudWxsXSBvciB0aGUgKHBvc2l0aXZlKSBpbmRleCBpbiB0aGUgcG9vbCBvZiB0aGUgbmV4dC1mcmVlXG4gICAgICAgZmllbGQgcHJlY2VlZGluZyB0aGUgdHVwbGUncyBzbG90cy4gKilcbiAgICB0eXBlICdzbG90cyB0ID0gaW50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbiAgICBsZXQgc2V4cF9vZl90IF8gdCA9IFNleHAuQXRvbSAoc3ByaW50ZiBcIjxQb29sLlBvaW50ZXIudDogMHglMDh4PlwiIHQpXG4gICAgbGV0IHBoeXNfZXF1YWwgKHQxIDogXyB0KSB0MiA9IHBoeXNfZXF1YWwgdDEgdDJcbiAgICBsZXQgcGh5c19jb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBudWxsICgpID0gLW1heF9zbG90IC0gMVxuICAgIGxldCBpc19udWxsIHQgPSBwaHlzX2VxdWFsIHQgKG51bGwgKCkpXG5cbiAgICAoKiBbbnVsbF0gbXVzdCBiZSBzdWNoIHRoYXQgW251bGwgKyBzbG90XSBpcyBhbiBpbnZhbGlkIGFycmF5IGluZGV4IGZvciBhbGwgc2xvdHMuXG4gICAgICAgT3RoZXJ3aXNlIGdldC9zZXQgb24gdGhlIG51bGwgcG9pbnRlciBtYXkgbGVhZCB0byBhIHNlZ2ZhdWx0LiAqKVxuICAgIGxldCV0ZXN0IF8gPSBudWxsICgpICsgbWF4X3Nsb3QgPCAwXG5cbiAgICBsZXQgY3JlYXRlIH5oZWFkZXJfaW5kZXggKHR1cGxlX2lkIDogVHVwbGVfaWQudCkgPVxuICAgICAgaGVhZGVyX2luZGV4XG4gICAgICBsb3IgKChUdXBsZV9pZC50b19pbnQgdHVwbGVfaWQgbGFuZCB0dXBsZV9pZF9tYXNrKSBsc2wgYXJyYXlfaW5kZXhfbnVtX2JpdHMpXG4gICAgOztcblxuICAgIGxldCBoZWFkZXJfaW5kZXhfbWFzayA9ICgxIGxzbCBhcnJheV9pbmRleF9udW1fYml0cykgLSAxXG4gICAgbGV0IG1hc2tlZF90dXBsZV9pZCB0ID0gdCBsc3IgYXJyYXlfaW5kZXhfbnVtX2JpdHNcbiAgICBsZXQgaGVhZGVyX2luZGV4IHQgPSB0IGxhbmQgaGVhZGVyX2luZGV4X21hc2tcbiAgICBsZXQgaW52YXJpYW50IF8gdCA9IGlmIG5vdCAoaXNfbnVsbCB0KSB0aGVuIGFzc2VydCAoaGVhZGVyX2luZGV4IHQgPiAwKVxuICAgIGxldCV0ZXN0X3VuaXQgXyA9IGludmFyaWFudCBpZ25vcmUgKG51bGwgKCkpXG5cbiAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgTGlzdC5pdGVyIFR1cGxlX2lkLmV4YW1wbGVzIH5mOihmdW4gdHVwbGVfaWQgLT5cbiAgICAgICAgaW52YXJpYW50IGlnbm9yZSAoY3JlYXRlIH5oZWFkZXJfaW5kZXg6MSB0dXBsZV9pZCkpXG4gICAgOztcblxuICAgIGxldCBzbG90X2luZGV4IHQgc2xvdCA9IGhlYWRlcl9pbmRleCB0ICsgc2xvdFxuICAgIGxldCBmaXJzdF9zbG90X2luZGV4IHQgPSBzbG90X2luZGV4IHQgU2xvdC50MFxuXG4gICAgbW9kdWxlIElkID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEludDYzXG5cbiAgICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuICAgICAgbGV0IG9mX2ludDYzIGkgPSBpXG4gICAgZW5kXG5cbiAgICBsZXQgdG9faWQgdCA9IElkLm9mX2ludCB0XG5cbiAgICBsZXQgb2ZfaWRfZXhuIGlkID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgdCA9IElkLnRvX2ludF9leG4gaWQgaW5cbiAgICAgICAgaWYgaXNfbnVsbCB0XG4gICAgICAgIHRoZW4gdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgc2hvdWxkX2VxdWFsID1cbiAgICAgICAgICAgIGNyZWF0ZSB+aGVhZGVyX2luZGV4OihoZWFkZXJfaW5kZXggdCkgKFR1cGxlX2lkLm9mX2ludCAobWFza2VkX3R1cGxlX2lkIHQpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgcGh5c19lcXVhbCB0IHNob3VsZF9lcXVhbFxuICAgICAgICAgIHRoZW4gdFxuICAgICAgICAgIGVsc2UgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJzaG91bGQgZXF1YWxcIiBzaG91bGRfZXF1YWwgWyVzZXhwX29mOiBfIHRdKVxuICAgICAgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiUG9pbnRlci5vZl9pZF9leG4gZ290IHN0cmFuZ2UgaWRcIlxuICAgICAgICAgIChpZCwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogSWQudCAqIGV4bl1cbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgSGVhZGVyIDogc2lnXG4gICAgKCogQSBbSGVhZGVyLnRdIGlzIGFuIGVuY29kaW5nIGFzIGFuIFtpbnRdIG9mIHRoZSBmb2xsb3dpbmcgdHlwZTpcblxuICAgICAgIHtbXG4gICAgICAgICB8IE51bGxcbiAgICAgICAgIHwgRnJlZSBvZiB7IG5leHRfZnJlZV9oZWFkZXJfaW5kZXggOiBpbnQgfVxuICAgICAgICAgfCBVc2VkIG9mIHsgdHVwbGVfaWQgOiBpbnQgfVxuICAgICAgIF19XG5cbiAgICAgICBJZiBhIHR1cGxlIGlzIGZyZWUsIGl0cyBoZWFkZXIgaXMgc2V0IHRvIGVpdGhlciBbTnVsbF0gb3IgW0ZyZWVdIHdpdGhcbiAgICAgICBbbmV4dF9mcmVlX2hlYWRlcl9pbmRleF0gaW5kaWNhdGluZyB0aGUgaGVhZGVyIG9mIHRoZSBuZXh0IHR1cGxlIG9uIHRoZSBmcmVlIGxpc3QuXG4gICAgICAgSWYgYSB0dXBsZSBpcyBpbiB1c2UsIGl0IGhlYWRlciBpcyBzZXQgdG8gW1VzZWRdLiAqKVxuXG4gICAgdHlwZSB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBudWxsIDogdFxuICAgIHZhbCBpc19udWxsIDogdCAtPiBib29sXG4gICAgdmFsIGZyZWUgOiBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4OmludCAtPiB0XG4gICAgdmFsIGlzX2ZyZWUgOiB0IC0+IGJvb2xcbiAgICB2YWwgbmV4dF9mcmVlX2hlYWRlcl9pbmRleCA6IHQgLT4gaW50XG5cbiAgICAoKiBvbmx5IHZhbGlkIGlmIFtpc19mcmVlIHRdICopXG5cbiAgICB2YWwgdXNlZCA6IFR1cGxlX2lkLnQgLT4gdFxuICAgIHZhbCBpc191c2VkIDogdCAtPiBib29sXG4gICAgdmFsIHR1cGxlX2lkIDogdCAtPiBUdXBsZV9pZC50XG5cbiAgICAoKiBvbmx5IHZhbGlkIGlmIFtpc191c2VkIHRdICopXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGludFxuXG4gICAgbGV0IG51bGwgPSAwXG4gICAgbGV0IGlzX251bGwgdCA9IHQgPSAwXG5cbiAgICAoKiBXZSBrbm93IHRoYXQgaGVhZGVyIGluZGljZXMgYXJlIFs+IDBdLCBiZWNhdXNlIGluZGV4IFswXSBob2xkcyB0aGUgbWV0YWRhdGEuICopXG4gICAgbGV0IGZyZWUgfm5leHRfZnJlZV9oZWFkZXJfaW5kZXggPSBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4XG4gICAgbGV0IGlzX2ZyZWUgdCA9IHQgPiAwXG4gICAgbGV0IG5leHRfZnJlZV9oZWFkZXJfaW5kZXggdCA9IHRcbiAgICBsZXQgdXNlZCAodHVwbGVfaWQgOiBUdXBsZV9pZC50KSA9IC0xIC0gKHR1cGxlX2lkIDo+IGludClcbiAgICBsZXQgaXNfdXNlZCB0ID0gdCA8IDBcbiAgICBsZXQgdHVwbGVfaWQgdCA9IFR1cGxlX2lkLm9mX2ludCAoLSh0ICsgMSkpXG5cbiAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgTGlzdC5pdGVyIFR1cGxlX2lkLmV4YW1wbGVzIH5mOihmdW4gaWQgLT5cbiAgICAgICAgbGV0IHQgPSB1c2VkIGlkIGluXG4gICAgICAgIGFzc2VydCAoaXNfdXNlZCB0KTtcbiAgICAgICAgYXNzZXJ0IChUdXBsZV9pZC5lcXVhbCAodHVwbGVfaWQgdCkgaWQpKVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgaWYgaXNfbnVsbCB0XG4gICAgICB0aGVuIFNleHAuQXRvbSBcIm51bGxcIlxuICAgICAgZWxzZSBpZiBpc19mcmVlIHRcbiAgICAgIHRoZW4gU2V4cC4oTGlzdCBbIEF0b20gXCJGcmVlXCI7IEF0b20gKEludC50b19zdHJpbmcgKG5leHRfZnJlZV9oZWFkZXJfaW5kZXggdCkpIF0pXG4gICAgICBlbHNlIFNleHAuKExpc3QgWyBBdG9tIFwiVXNlZFwiOyBBdG9tIChUdXBsZV9pZC50b19zdHJpbmcgKHR1cGxlX2lkIHQpKSBdKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBtZXRhZGF0YV9pbmRleCA9IDBcbiAgbGV0IHN0YXJ0X29mX3R1cGxlc19pbmRleCA9IDFcblxuICBsZXQgbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUgPVxuICAgIChtYXhfYXJyYXlfbGVuZ3RoIC0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4KSAvICgxICsgc2xvdHNfcGVyX3R1cGxlKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgZm9yIHNsb3RzX3Blcl90dXBsZSA9IDEgdG8gbWF4X3Nsb3QgZG9cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIHN0YXJ0X29mX3R1cGxlc19pbmRleCArICgoMSArIHNsb3RzX3Blcl90dXBsZSkgKiBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSlcbiAgICAgICAgPD0gbWF4X2FycmF5X2xlbmd0aClcbiAgICBkb25lXG4gIDs7XG5cbiAgbW9kdWxlIE1ldGFkYXRhID0gc3RydWN0XG4gICAgdHlwZSAnc2xvdHMgdCA9XG4gICAgICB7ICgqIFtzbG90c19wZXJfdHVwbGVdIGlzIG51bWJlciBvZiBzbG90cyBpbiBhIHR1cGxlIGFzIHNlZW4gYnkgdGhlIHVzZXI7IGkuZS4gbm90XG4gICAgICAgICAgIGNvdW50aW5nIHRoZSBuZXh0LWZyZWUgcG9pbnRlci4gKilcbiAgICAgICAgc2xvdHNfcGVyX3R1cGxlIDogaW50XG4gICAgICA7IGNhcGFjaXR5IDogaW50XG4gICAgICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgICA7IG11dGFibGUgbmV4dF9pZCA6IFR1cGxlX2lkLnRcbiAgICAgIDsgbXV0YWJsZSBmaXJzdF9mcmVlIDogSGVhZGVyLnRcbiAgICAgICgqIFtkdW1teV0gaXMgW05vbmVdIGluIGFuIHVuc2FmZSBwb29sLiAgSW4gYSBzYWZlIHBvb2wsIFtkdW1teV0gaXMgW1NvbWUgYV0sIHdpdGhcbiAgICAgICAgIFtVbmlmb3JtX2FycmF5Lmxlbmd0aCBhID0gc2xvdHNfcGVyX3R1cGxlXS4gIFtkdW1teV0gaXMgYWN0dWFsbHkgYSB0dXBsZSB2YWx1ZVxuICAgICAgICAgd2l0aCB0aGUgY29ycmVjdCB0eXBlIChjb3JyZXNwb25kaW5nIHRvIFsnc2xvdHNdKSwgYnV0IHdlIG1ha2UgdGhlIHR5cGUgb2ZcbiAgICAgICAgIFtkdW1teV0gYmUgW09iai50IFVuaWZvcm1fYXJyYXkudF0gYmVjYXVzZSB3ZSBjYW4ndCB3cml0ZSB0aGF0IHR5cGUgaGVyZS4gIEFsc28sXG4gICAgICAgICB0aGUgcHVycG9zZSBvZiBbZHVtbXldIGlzIHRvIGluaXRpYWxpemUgYSBwb29sIGVsZW1lbnQsIG1ha2luZyBbZHVtbXldIGFuIFtPYmoudFxuICAgICAgICAgVW5pZm9ybV9hcnJheS50XSBsZXRzIHVzIGluaXRpYWxpemUgYSBwb29sIGVsZW1lbnQgdXNpbmcgW1VuaWZvcm1fYXJyYXkuYmxpdF1cbiAgICAgICAgIGZyb20gW2R1bW15XSB0byB0aGUgcG9vbCwgd2hpY2ggaXMgYW4gW09iai50IFVuaWZvcm1fYXJyYXkudF0uICopXG4gICAgICA7IGR1bW15IDogKE9iai50IFVuaWZvcm1fYXJyYXkudFtAc2V4cC5vcGFxdWVdKSBvcHRpb25cbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdCA9IDEgKyB0LnNsb3RzX3Blcl90dXBsZVxuICAgIGxldCBhcnJheV9sZW5ndGggdCA9IHN0YXJ0X29mX3R1cGxlc19pbmRleCArICh0LmNhcGFjaXR5ICogYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdClcblxuICAgIGxldCBoZWFkZXJfaW5kZXhfdG9fdHVwbGVfbnVtIHQgfmhlYWRlcl9pbmRleCA9XG4gICAgICAoaGVhZGVyX2luZGV4IC0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4KSAvIGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHRcbiAgICA7O1xuXG4gICAgbGV0IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggdCB0dXBsZV9udW0gPVxuICAgICAgc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICsgKHR1cGxlX251bSAqIGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHQpXG4gICAgOztcblxuICAgIGxldCB0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCB0IHR1cGxlX251bSA9XG4gICAgICB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IHQgdHVwbGVfbnVtICsgMVxuICAgIDs7XG5cbiAgICBsZXQgaXNfZnVsbCB0ID0gdC5sZW5ndGggPSB0LmNhcGFjaXR5XG4gIGVuZFxuXG4gIG9wZW4gTWV0YWRhdGFcblxuICAoKiBXZSB1c2UgdHlwZSBbT2JqLnRdIGJlY2F1c2UgdGhlIGFycmF5IGhvbGRzIGEgbWl4IG9mIGludGVnZXJzIGFzIHdlbGwgYXMgT0NhbWwgdmFsdWVzXG4gICAgIG9mIGFyYml0cmFyeSB0eXBlLiAqKVxuICB0eXBlICdzbG90cyB0ID0gT2JqLnQgVW5pZm9ybV9hcnJheS50XG5cbiAgbGV0IG1ldGFkYXRhICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBtZXRhZGF0YV9pbmRleCB8PiAoT2JqLm9iaiA6IF8gLT4gc2xvdHMgTWV0YWRhdGEudClcbiAgOztcblxuICBsZXQgbGVuZ3RoIHQgPSAobWV0YWRhdGEgdCkubGVuZ3RoXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl90eSB0ID0gTWV0YWRhdGEuc2V4cF9vZl90IHNleHBfb2ZfdHkgKG1ldGFkYXRhIHQpXG5cbiAgKCogQmVjYXVzZSBbdW5zYWZlX2hlYWRlcl0gYW5kIFt1bnNhZmVfc2V0X2hlYWRlcl0gZG8gbm90IGRvIGEgYm91bmRzIGNoZWNrLCBvbmUgbXVzdCBiZVxuICAgICBzdXJlIHRoYXQgb25lIGhhcyBhIHZhbGlkIFtoZWFkZXJfaW5kZXhdIGJlZm9yZSBjYWxsaW5nIHRoZW0uICopXG4gIGxldCB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaGVhZGVyX2luZGV4IHw+IChPYmoub2JqIDogXyAtPiBIZWFkZXIudClcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IChoZWFkZXIgOiBIZWFkZXIudCkgPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGhlYWRlcl9pbmRleCAoaGVhZGVyIDo+IGludClcbiAgOztcblxuICBsZXQgaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyB0IH5oZWFkZXJfaW5kZXggPVxuICAgIGhlYWRlcl9pbmRleCA+PSBzdGFydF9vZl90dXBsZXNfaW5kZXggJiYgaGVhZGVyX2luZGV4IDwgVW5pZm9ybV9hcnJheS5sZW5ndGggdFxuICA7O1xuXG4gIGxldCB1bnNhZmVfcG9pbnRlcl9pc19saXZlIHQgcG9pbnRlciA9XG4gICAgbGV0IGhlYWRlcl9pbmRleCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBsZXQgaGVhZGVyID0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXggaW5cbiAgICBIZWFkZXIuaXNfdXNlZCBoZWFkZXJcbiAgICAmJiBUdXBsZV9pZC50b19pbnQgKEhlYWRlci50dXBsZV9pZCBoZWFkZXIpIGxhbmQgdHVwbGVfaWRfbWFza1xuICAgICAgID0gUG9pbnRlci5tYXNrZWRfdHVwbGVfaWQgcG9pbnRlclxuICA7O1xuXG4gIGxldCBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlciA9XG4gICAgaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyB0IH5oZWFkZXJfaW5kZXg6KFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIpXG4gICAgKCogQXQgdGhpcyBwb2ludCwgd2Uga25vdyB0aGUgcG9pbnRlciBpc24ndCBbbnVsbF0gYW5kIGlzIGluIGJvdW5kcywgc28gd2Uga25vdyBpdCBpc1xuICAgICAgIHRoZSBpbmRleCBvZiBhIGhlYWRlciwgc2luY2Ugd2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IGFsbCBwb2ludGVycyBvdGhlciB0aGFuXG4gICAgICAgW251bGxdIGFyZS4gKilcbiAgICAmJiB1bnNhZmVfcG9pbnRlcl9pc19saXZlIHQgcG9pbnRlclxuICA7O1xuXG4gIGxldCBpZF9vZl9wb2ludGVyIF90IHBvaW50ZXIgPSBQb2ludGVyLnRvX2lkIHBvaW50ZXJcblxuICBsZXQgaXNfdmFsaWRfaGVhZGVyX2luZGV4IHQgfmhlYWRlcl9pbmRleCA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIGhlYWRlcl9pbmRleF9pc19pbl9ib3VuZHMgdCB+aGVhZGVyX2luZGV4XG4gICAgJiYgMFxuICAgICAgID0gKGhlYWRlcl9pbmRleCAtIHN0YXJ0X29mX3R1cGxlc19pbmRleClcbiAgICAgICAgIG1vZCBNZXRhZGF0YS5hcnJheV9pbmRpY2VzX3Blcl90dXBsZSBtZXRhZGF0YVxuICA7O1xuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICB0cnlcbiAgICAgIGxldCBwb2ludGVyID0gUG9pbnRlci5vZl9pZF9leG4gaWQgaW5cbiAgICAgIGlmIG5vdCAoUG9pbnRlci5pc19udWxsIHBvaW50ZXIpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICAgICAgaWYgbm90IChpc192YWxpZF9oZWFkZXJfaW5kZXggdCB+aGVhZGVyX2luZGV4KVxuICAgICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiaW52YWxpZCBoZWFkZXIgaW5kZXhcIiBoZWFkZXJfaW5kZXggWyVzZXhwX29mOiBpbnRdO1xuICAgICAgICBpZiBub3QgKHVuc2FmZV9wb2ludGVyX2lzX2xpdmUgdCBwb2ludGVyKSB0aGVuIGZhaWx3aXRoIFwicG9pbnRlciBub3QgbGl2ZVwiKTtcbiAgICAgIHBvaW50ZXJcbiAgICB3aXRoXG4gICAgfCBleG4gLT5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5wb2ludGVyX29mX2lkX2V4biBnb3QgaW52YWxpZCBpZFwiXG4gICAgICAgIChpZCwgdCwgZXhuKVxuICAgICAgICBbJXNleHBfb2Y6IFBvaW50ZXIuSWQudCAqIF8gdCAqIGV4bl1cbiAgOztcblxuICBsZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0IDogdW5pdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCBtZXRhZGF0YSkgaW5cbiAgICAgIE1ldGFkYXRhLkZpZWxkcy5pdGVyXG4gICAgICAgIH5zbG90c19wZXJfdHVwbGU6KGNoZWNrIChmdW4gc2xvdHNfcGVyX3R1cGxlIC0+IGFzc2VydCAoc2xvdHNfcGVyX3R1cGxlID4gMCkpKVxuICAgICAgICB+Y2FwYWNpdHk6XG4gICAgICAgICAgKGNoZWNrIChmdW4gY2FwYWNpdHkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKGNhcGFjaXR5ID49IDApO1xuICAgICAgICAgICAgIGFzc2VydCAoVW5pZm9ybV9hcnJheS5sZW5ndGggdCA9IE1ldGFkYXRhLmFycmF5X2xlbmd0aCBtZXRhZGF0YSkpKVxuICAgICAgICB+bGVuZ3RoOlxuICAgICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICAgIGFzc2VydCAobGVuZ3RoID49IDApO1xuICAgICAgICAgICAgIGFzc2VydCAobGVuZ3RoIDw9IG1ldGFkYXRhLmNhcGFjaXR5KSkpXG4gICAgICAgIH5uZXh0X2lkOihjaGVjayBUdXBsZV9pZC5pbnZhcmlhbnQpXG4gICAgICAgIH5maXJzdF9mcmVlOlxuICAgICAgICAgIChjaGVjayAoZnVuIGZpcnN0X2ZyZWUgLT5cbiAgICAgICAgICAgICBsZXQgZnJlZSA9IEFycmF5LmNyZWF0ZSB+bGVuOm1ldGFkYXRhLmNhcGFjaXR5IGZhbHNlIGluXG4gICAgICAgICAgICAgbGV0IHIgPSByZWYgZmlyc3RfZnJlZSBpblxuICAgICAgICAgICAgIHdoaWxlIG5vdCAoSGVhZGVyLmlzX251bGwgIXIpIGRvXG4gICAgICAgICAgICAgICBsZXQgaGVhZGVyID0gIXIgaW5cbiAgICAgICAgICAgICAgIGFzc2VydCAoSGVhZGVyLmlzX2ZyZWUgaGVhZGVyKTtcbiAgICAgICAgICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSBIZWFkZXIubmV4dF9mcmVlX2hlYWRlcl9pbmRleCBoZWFkZXIgaW5cbiAgICAgICAgICAgICAgIGFzc2VydCAoaXNfdmFsaWRfaGVhZGVyX2luZGV4IHQgfmhlYWRlcl9pbmRleCk7XG4gICAgICAgICAgICAgICBsZXQgdHVwbGVfbnVtID0gaGVhZGVyX2luZGV4X3RvX3R1cGxlX251bSBtZXRhZGF0YSB+aGVhZGVyX2luZGV4IGluXG4gICAgICAgICAgICAgICBpZiBmcmVlLih0dXBsZV9udW0pXG4gICAgICAgICAgICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiY3ljbGUgaW4gZnJlZSBsaXN0XCIgdHVwbGVfbnVtIFslc2V4cF9vZjogaW50XTtcbiAgICAgICAgICAgICAgIGZyZWUuKHR1cGxlX251bSkgPC0gdHJ1ZTtcbiAgICAgICAgICAgICAgIHIgOj0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXhcbiAgICAgICAgICAgICBkb25lKSlcbiAgICAgICAgfmR1bW15OlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFNvbWUgZHVtbXkgLT4gYXNzZXJ0IChVbmlmb3JtX2FycmF5Lmxlbmd0aCBkdW1teSA9IG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSlcbiAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgIGZvciB0dXBsZV9udW0gPSAwIHRvIG1ldGFkYXRhLmNhcGFjaXR5IC0gMSBkb1xuICAgICAgICAgICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgICAgICAgICAgICAgbGV0IGhlYWRlciA9IHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IGluXG4gICAgICAgICAgICAgICAgIGlmIEhlYWRlci5pc19mcmVlIGhlYWRlclxuICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBsZXQgZmlyc3Rfc2xvdCA9IHR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgICAgICAgICAgICAgIGZvciBzbG90ID0gMCB0byBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgLSAxIGRvXG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKE9iai5pc19pbnQgKFVuaWZvcm1fYXJyYXkuZ2V0IHQgKGZpcnN0X3Nsb3QgKyBzbG90KSkpXG4gICAgICAgICAgICAgICAgICAgZG9uZSlcbiAgICAgICAgICAgICAgIGRvbmUpKVxuICAgIHdpdGhcbiAgICB8IGV4biAtPlxuICAgICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJQb29sLmludmFyaWFudCBmYWlsZWRcIiAoZXhuLCB0KSBbJXNleHBfb2Y6IGV4biAqIF8gdF1cbiAgOztcblxuICBsZXQgY2FwYWNpdHkgdCA9IChtZXRhZGF0YSB0KS5jYXBhY2l0eVxuICBsZXQgaXNfZnVsbCB0ID0gTWV0YWRhdGEuaXNfZnVsbCAobWV0YWRhdGEgdClcblxuICBsZXQgdW5zYWZlX2FkZF90b19mcmVlX2xpc3QgdCBtZXRhZGF0YSB+aGVhZGVyX2luZGV4ID1cbiAgICB1bnNhZmVfc2V0X2hlYWRlciB0IH5oZWFkZXJfaW5kZXggbWV0YWRhdGEuZmlyc3RfZnJlZTtcbiAgICBtZXRhZGF0YS5maXJzdF9mcmVlIDwtIEhlYWRlci5mcmVlIH5uZXh0X2ZyZWVfaGVhZGVyX2luZGV4OmhlYWRlcl9pbmRleFxuICA7O1xuXG4gIGxldCBzZXRfbWV0YWRhdGEgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgbWV0YWRhdGEgPVxuICAgIFVuaWZvcm1fYXJyYXkuc2V0IHQgbWV0YWRhdGFfaW5kZXggKE9iai5yZXByIChtZXRhZGF0YSA6IHNsb3RzIE1ldGFkYXRhLnQpKVxuICA7O1xuXG4gIGxldCBjcmVhdGVfYXJyYXkgKHR5cGUgc2xvdHMpIChtZXRhZGF0YSA6IHNsb3RzIE1ldGFkYXRhLnQpIDogc2xvdHMgdCA9XG4gICAgbGV0IHQgPSBVbmlmb3JtX2FycmF5LmNyZWF0ZV9vYmpfYXJyYXkgfmxlbjooTWV0YWRhdGEuYXJyYXlfbGVuZ3RoIG1ldGFkYXRhKSBpblxuICAgIHNldF9tZXRhZGF0YSB0IG1ldGFkYXRhO1xuICAgIHRcbiAgOztcblxuICAoKiBJbml0aWFsaXplIHR1cGxlcyBudW1iZXJlZCBmcm9tIFtsb10gKGluY2x1c2l2ZSkgdXAgdG8gW2hpXSAoZXhjbHVzaXZlKS4gIEZvciBlYWNoXG4gICAgIHR1cGxlLCB0aGlzIHB1dHMgZHVtbXkgdmFsdWVzIGluIHRoZSB0dXBsZSdzIHNsb3RzIGFuZCBhZGRzIHRoZSB0dXBsZSB0byB0aGUgZnJlZVxuICAgICBsaXN0LiAqKVxuICBsZXQgdW5zYWZlX2luaXRfcmFuZ2UgdCBtZXRhZGF0YSB+bG8gfmhpID1cbiAgICAobWF0Y2ggbWV0YWRhdGEuZHVtbXkgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGR1bW15IC0+XG4gICAgICAgZm9yIHR1cGxlX251bSA9IGxvIHRvIGhpIC0gMSBkb1xuICAgICAgICAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgICAgICAgIH5zcmM6ZHVtbXlcbiAgICAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICAgICB+ZHN0OnRcbiAgICAgICAgICAgfmRzdF9wb3M6KHR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSlcbiAgICAgICAgICAgfmxlbjptZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgICBkb25lKTtcbiAgICBmb3IgdHVwbGVfbnVtID0gaGkgLSAxIGRvd250byBsbyBkb1xuICAgICAgdW5zYWZlX2FkZF90b19mcmVlX2xpc3RcbiAgICAgICAgdFxuICAgICAgICBtZXRhZGF0YVxuICAgICAgICB+aGVhZGVyX2luZGV4Oih0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSlcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2R1bW15IHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXkgPVxuICAgIGlmIGNhcGFjaXR5IDwgMFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiUG9vbC5jcmVhdGUgZ290IGludmFsaWQgY2FwYWNpdHlcIiBjYXBhY2l0eSBbJXNleHBfb2Y6IGludF07XG4gICAgbGV0IHNsb3RzX3Blcl90dXBsZSA9IFNsb3RzLnNsb3RzX3Blcl90dXBsZSBzbG90cyBpblxuICAgIGxldCBtYXhfY2FwYWNpdHkgPSBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSBpblxuICAgIGlmIGNhcGFjaXR5ID4gbWF4X2NhcGFjaXR5XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJQb29sLmNyZWF0ZSBnb3QgdG9vIGxhcmdlIGNhcGFjaXR5XCJcbiAgICAgICAgKGNhcGFjaXR5LCBgbWF4IG1heF9jYXBhY2l0eSlcbiAgICAgICAgWyVzZXhwX29mOiBpbnQgKiBbIGBtYXggb2YgaW50IF1dO1xuICAgIGxldCBtZXRhZGF0YSA9XG4gICAgICB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgOyBjYXBhY2l0eVxuICAgICAgOyBsZW5ndGggPSAwXG4gICAgICA7IG5leHRfaWQgPSBUdXBsZV9pZC5pbml0XG4gICAgICA7IGZpcnN0X2ZyZWUgPSBIZWFkZXIubnVsbFxuICAgICAgOyBkdW1teVxuICAgICAgfVxuICAgIGluXG4gICAgbGV0IHQgPSBjcmVhdGVfYXJyYXkgbWV0YWRhdGEgaW5cbiAgICB1bnNhZmVfaW5pdF9yYW5nZSB0IG1ldGFkYXRhIH5sbzowIH5oaTpjYXBhY2l0eTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSAodHlwZSB0dXBsZSkgKHNsb3RzIDogKHR1cGxlLCBfKSBTbG90cy50KSB+Y2FwYWNpdHkgfmR1bW15ID1cbiAgICBsZXQgZHVtbXkgPVxuICAgICAgaWYgU2xvdHMuc2xvdHNfcGVyX3R1cGxlIHNsb3RzID0gMVxuICAgICAgdGhlbiBVbmlmb3JtX2FycmF5LnNpbmdsZXRvbiAoT2JqLnJlcHIgKGR1bW15IDogdHVwbGUpKVxuICAgICAgZWxzZSAoT2JqLm1hZ2ljIChkdW1teSA6IHR1cGxlKSA6IE9iai50IFVuaWZvcm1fYXJyYXkudClcbiAgICBpblxuICAgIGNyZWF0ZV93aXRoX2R1bW15IHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXk6KFNvbWUgZHVtbXkpXG4gIDs7XG5cbiAgKCogUHVyZ2UgYSBwb29sIGFuZCBtYWtlIGl0IHVudXNhYmxlLiAqKVxuICBsZXQgZGVzdHJveSB0ID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgKCogV2UgY2xlYXIgb3V0IGFsbCB0aGUgcG9vbCdzIGVudHJpZXMsIHdoaWNoIGNhdXNlcyBhbGwgcG9pbnRlcnMgdG8gYmUgaW52YWxpZC4gIFRoaXNcbiAgICAgICBhbHNvIHByZXZlbnRzIHRoZSBkZXN0cm95ZWQgcG9vbCBmcm9tIHVubmVjZXNzYXJpbHkga2VlcGluZyBoZWFwIGJsb2NrcyBhbGl2ZS5cbiAgICAgICBUaGlzIGlzIHNpbWlsYXIgdG8gW2ZyZWVdaW5nIGFsbCB0aGUgZW50cmllcyB3aXRoIHRoZSBkaWZmZXJlbmNlIHRoYXQgd2UgbWFrZSB0aGVcbiAgICAgICBmcmVlIGxpc3QgZW1wdHkgYXMgd2VsbC4gKilcbiAgICAobWF0Y2ggbWV0YWRhdGEuZHVtbXkgd2l0aFxuICAgICB8IE5vbmUgLT5cbiAgICAgICBmb3IgaSA9IHN0YXJ0X29mX3R1cGxlc19pbmRleCB0byBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0IC0gMSBkb1xuICAgICAgICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgaSAoT2JqLnJlcHIgMClcbiAgICAgICBkb25lXG4gICAgIHwgU29tZSBkdW1teSAtPlxuICAgICAgIGZvciB0dXBsZV9udW0gPSAwIHRvIG1ldGFkYXRhLmNhcGFjaXR5IC0gMSBkb1xuICAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICAgICB1bnNhZmVfc2V0X2hlYWRlciB0IH5oZWFkZXJfaW5kZXggSGVhZGVyLm51bGw7XG4gICAgICAgICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICAgICAgICAgfnNyYzpkdW1teVxuICAgICAgICAgICB+c3JjX3BvczowXG4gICAgICAgICAgIH5kc3Q6dFxuICAgICAgICAgICB+ZHN0X3BvczooaGVhZGVyX2luZGV4ICsgMSlcbiAgICAgICAgICAgfmxlbjptZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgICBkb25lKTtcbiAgICBsZXQgbWV0YWRhdGEgPVxuICAgICAgeyBNZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgPSBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgIDsgY2FwYWNpdHkgPSAwXG4gICAgICA7IGxlbmd0aCA9IDBcbiAgICAgIDsgbmV4dF9pZCA9IG1ldGFkYXRhLm5leHRfaWRcbiAgICAgIDsgZmlyc3RfZnJlZSA9IEhlYWRlci5udWxsXG4gICAgICA7IGR1bW15ID0gbWV0YWRhdGEuZHVtbXlcbiAgICAgIH1cbiAgICBpblxuICAgIHNldF9tZXRhZGF0YSB0IG1ldGFkYXRhXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSBncm93ID9jYXBhY2l0eSB0ID1cbiAgICBsZXQgeyBNZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgICAgOyBjYXBhY2l0eSA9IG9sZF9jYXBhY2l0eVxuICAgICAgICA7IGxlbmd0aFxuICAgICAgICA7IG5leHRfaWRcbiAgICAgICAgOyBmaXJzdF9mcmVlID0gX1xuICAgICAgICA7IGR1bW15XG4gICAgICAgIH1cbiAgICAgID1cbiAgICAgIG1ldGFkYXRhIHRcbiAgICBpblxuICAgIGxldCBjYXBhY2l0eSA9XG4gICAgICBtaW4gKG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlKSAoZ3Jvd19jYXBhY2l0eSB+Y2FwYWNpdHkgfm9sZF9jYXBhY2l0eSlcbiAgICBpblxuICAgIGlmIGNhcGFjaXR5ID0gb2xkX2NhcGFjaXR5XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJQb29sLmdyb3cgY2Fubm90IGdyb3cgcG9vbDsgY2FwYWNpdHkgYWxyZWFkeSBhdCBtYXhpbXVtXCJcbiAgICAgICAgY2FwYWNpdHlcbiAgICAgICAgWyVzZXhwX29mOiBpbnRdO1xuICAgIGxldCBtZXRhZGF0YSA9XG4gICAgICB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgOyBjYXBhY2l0eVxuICAgICAgOyBsZW5ndGhcbiAgICAgIDsgbmV4dF9pZFxuICAgICAgOyBmaXJzdF9mcmVlID0gSGVhZGVyLm51bGxcbiAgICAgIDsgZHVtbXlcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCB0JyA9IGNyZWF0ZV9hcnJheSBtZXRhZGF0YSBpblxuICAgIFVuaWZvcm1fYXJyYXkuYmxpdFxuICAgICAgfnNyYzp0XG4gICAgICB+c3JjX3BvczpzdGFydF9vZl90dXBsZXNfaW5kZXhcbiAgICAgIH5kc3Q6dCdcbiAgICAgIH5kc3RfcG9zOnN0YXJ0X29mX3R1cGxlc19pbmRleFxuICAgICAgfmxlbjoob2xkX2NhcGFjaXR5ICogTWV0YWRhdGEuYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgbWV0YWRhdGEpO1xuICAgIGRlc3Ryb3kgdDtcbiAgICB1bnNhZmVfaW5pdF9yYW5nZSB0JyBtZXRhZGF0YSB+bG86b2xkX2NhcGFjaXR5IH5oaTpjYXBhY2l0eTtcbiAgICBmb3IgdHVwbGVfbnVtID0gb2xkX2NhcGFjaXR5IC0gMSBkb3dudG8gMCBkb1xuICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICBsZXQgaGVhZGVyID0gdW5zYWZlX2hlYWRlciB0JyB+aGVhZGVyX2luZGV4IGluXG4gICAgICBpZiBub3QgKEhlYWRlci5pc191c2VkIGhlYWRlcilcbiAgICAgIHRoZW4gdW5zYWZlX2FkZF90b19mcmVlX2xpc3QgdCcgbWV0YWRhdGEgfmhlYWRlcl9pbmRleFxuICAgIGRvbmU7XG4gICAgdCdcbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX21hbGxvY19mdWxsIHQgPVxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiUG9vbC5tYWxsb2Mgb2YgZnVsbCBwb29sXCIgdCBbJXNleHBfb2Y6IF8gdF1cbiAgOztcblxuICBsZXQgbWFsbG9jICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIDogc2xvdHMgUG9pbnRlci50ID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgbGV0IGZpcnN0X2ZyZWUgPSBtZXRhZGF0YS5maXJzdF9mcmVlIGluXG4gICAgaWYgSGVhZGVyLmlzX251bGwgZmlyc3RfZnJlZSB0aGVuIHJhaXNlX21hbGxvY19mdWxsIHQ7XG4gICAgbGV0IGhlYWRlcl9pbmRleCA9IEhlYWRlci5uZXh0X2ZyZWVfaGVhZGVyX2luZGV4IGZpcnN0X2ZyZWUgaW5cbiAgICBtZXRhZGF0YS5maXJzdF9mcmVlIDwtIHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4O1xuICAgIG1ldGFkYXRhLmxlbmd0aCA8LSBtZXRhZGF0YS5sZW5ndGggKyAxO1xuICAgIGxldCB0dXBsZV9pZCA9IG1ldGFkYXRhLm5leHRfaWQgaW5cbiAgICB1bnNhZmVfc2V0X2hlYWRlciB0IH5oZWFkZXJfaW5kZXggKEhlYWRlci51c2VkIHR1cGxlX2lkKTtcbiAgICBtZXRhZGF0YS5uZXh0X2lkIDwtIFR1cGxlX2lkLm5leHQgdHVwbGVfaWQ7XG4gICAgUG9pbnRlci5jcmVhdGUgfmhlYWRlcl9pbmRleCB0dXBsZV9pZFxuICA7O1xuXG4gIGxldCB1bnNhZmVfZnJlZSAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSAocG9pbnRlciA6IHNsb3RzIFBvaW50ZXIudCkgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICBtZXRhZGF0YS5sZW5ndGggPC0gbWV0YWRhdGEubGVuZ3RoIC0gMTtcbiAgICB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCB0IG1ldGFkYXRhIH5oZWFkZXJfaW5kZXg6KFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIpO1xuICAgIG1hdGNoIG1ldGFkYXRhLmR1bW15IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBwb3MgPSBQb2ludGVyLmZpcnN0X3Nsb3RfaW5kZXggcG9pbnRlciBpblxuICAgICAgZm9yIGkgPSAwIHRvIG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSAtIDEgZG9cbiAgICAgICAgVW5pZm9ybV9hcnJheS51bnNhZmVfY2xlYXJfaWZfcG9pbnRlciB0IChwb3MgKyBpKVxuICAgICAgZG9uZVxuICAgIHwgU29tZSBkdW1teSAtPlxuICAgICAgVW5pZm9ybV9hcnJheS51bnNhZmVfYmxpdFxuICAgICAgICB+c3JjOmR1bW15XG4gICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgfmxlbjptZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgICAgfmRzdDp0XG4gICAgICAgIH5kc3RfcG9zOihQb2ludGVyLmZpcnN0X3Nsb3RfaW5kZXggcG9pbnRlcilcbiAgOztcblxuICBsZXQgZnJlZSAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSAocG9pbnRlciA6IHNsb3RzIFBvaW50ZXIudCkgPVxuICAgICgqIENoZWNrIFtwb2ludGVyX2lzX3ZhbGlkXSB0bzpcbiAgICAgICAtIGF2b2lkIGZyZWVpbmcgYSBudWxsIHBvaW50ZXJcbiAgICAgICAtIGF2b2lkIGZyZWVpbmcgYSBmcmVlIHBvaW50ZXIgKHRoaXMgd291bGQgbGVhZCB0byBhIHBvb2wgaW5jb25zaXN0ZW5jeSlcbiAgICAgICAtIGJlIGFibGUgdG8gdXNlIHVuc2FmZSBmdW5jdGlvbnMgYWZ0ZXIuICopXG4gICAgaWYgbm90IChwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlcilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wuZnJlZSBvZiBpbnZhbGlkIHBvaW50ZXJcIlxuICAgICAgICAocG9pbnRlciwgdClcbiAgICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudCAqIF8gdF07XG4gICAgdW5zYWZlX2ZyZWUgdCBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzEgdCBhMCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcyIHQgYTAgYTEgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MyB0IGEwIGExIGEyID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzQgdCBhMCBhMSBhMiBhMyA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc1IHQgYTAgYTEgYTIgYTMgYTQgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEyKSAoT2JqLnJlcHIgYTExKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMikgKE9iai5yZXByIGExMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEzKSAoT2JqLnJlcHIgYTEyKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTIpIChPYmoucmVwciBhMTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMykgKE9iai5yZXByIGExMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDE0KSAoT2JqLnJlcHIgYTEzKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IGdldCB0IHAgc2xvdCA9IE9iai5vYmogKFVuaWZvcm1fYXJyYXkuZ2V0IHQgKFBvaW50ZXIuc2xvdF9pbmRleCBwIHNsb3QpKVxuXG4gIGxldCB1bnNhZmVfZ2V0IHQgcCBzbG90ID1cbiAgICBPYmoub2JqIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkpXG4gIDs7XG5cbiAgbGV0IHNldCB0IHAgc2xvdCB4ID0gVW5pZm9ybV9hcnJheS5zZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkgKE9iai5yZXByIHgpXG5cbiAgbGV0IHVuc2FmZV9zZXQgdCBwIHNsb3QgeCA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKFBvaW50ZXIuc2xvdF9pbmRleCBwIHNsb3QpIChPYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCBnZXRfdHVwbGUgKHR5cGUgdHVwbGUpICh0IDogKHR1cGxlLCBfKSBTbG90cy50IHQpIHBvaW50ZXIgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICBsZXQgbGVuID0gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlIGluXG4gICAgaWYgbGVuID0gMVxuICAgIHRoZW4gZ2V0IHQgcG9pbnRlciBTbG90LnQwXG4gICAgZWxzZVxuICAgICAgKE9iai5tYWdpY1xuICAgICAgICAgKFVuaWZvcm1fYXJyYXkuc3ViIHQgfnBvczooUG9pbnRlci5maXJzdF9zbG90X2luZGV4IHBvaW50ZXIpIH5sZW5cbiAgICAgICAgICA6IE9iai50IFVuaWZvcm1fYXJyYXkudClcbiAgICAgICA6IHR1cGxlKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG9vbFxuXG5tb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gIGluY2x1ZGUgUG9vbFxuXG4gIGxldCBjcmVhdGUgc2xvdHMgfmNhcGFjaXR5ID0gY3JlYXRlX3dpdGhfZHVtbXkgc2xvdHMgfmNhcGFjaXR5IH5kdW1teTpOb25lXG5lbmRcblxubW9kdWxlIERlYnVnIChQb29sIDogUykgPSBzdHJ1Y3RcbiAgb3BlbiBQb29sXG5cbiAgbGV0IGNoZWNrX2ludmFyaWFudCA9IHJlZiB0cnVlXG4gIGxldCBzaG93X21lc3NhZ2VzID0gcmVmIHRydWVcblxuICBsZXQgZGVidWcgbmFtZSB0cyBhcmcgc2V4cF9vZl9hcmcgc2V4cF9vZl9yZXN1bHQgZiA9XG4gICAgbGV0IHByZWZpeCA9IFwiUG9vbC5cIiBpblxuICAgIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBMaXN0Lml0ZXIgdHMgfmY6KGludmFyaWFudCBpZ25vcmUpO1xuICAgIGlmICFzaG93X21lc3NhZ2VzIHRoZW4gRGVidWcuZXByaW50cyAoY29uY2F0IFsgcHJlZml4OyBuYW1lIF0pIGFyZyBzZXhwX29mX2FyZztcbiAgICBsZXQgcmVzdWx0X29yX2V4biA9IFJlc3VsdC50cnlfd2l0aCBmIGluXG4gICAgaWYgIXNob3dfbWVzc2FnZXNcbiAgICB0aGVuXG4gICAgICBEZWJ1Zy5lcHJpbnRzXG4gICAgICAgIChjb25jYXQgWyBwcmVmaXg7IG5hbWU7IFwiIHJlc3VsdFwiIF0pXG4gICAgICAgIHJlc3VsdF9vcl9leG5cbiAgICAgICAgWyVzZXhwX29mOiAocmVzdWx0LCBleG4pIFJlc3VsdC50XTtcbiAgICBSZXN1bHQub2tfZXhuIHJlc3VsdF9vcl9leG5cbiAgOztcblxuICBtb2R1bGUgU2xvdHMgPSBTbG90c1xuICBtb2R1bGUgU2xvdCA9IFNsb3RcblxuICBtb2R1bGUgUG9pbnRlciA9IHN0cnVjdFxuICAgIG9wZW4gUG9pbnRlclxuXG4gICAgdHlwZSBub25yZWMgJ3Nsb3RzIHQgPSAnc2xvdHMgdCBbQEBkZXJpdmluZyBzZXhwX29mLCB0eXBlcmVwXVxuXG4gICAgbGV0IHBoeXNfY29tcGFyZSB0MSB0MiA9XG4gICAgICBkZWJ1Z1xuICAgICAgICBcIlBvaW50ZXIucGh5c19jb21wYXJlXCJcbiAgICAgICAgW11cbiAgICAgICAgKHQxLCB0MilcbiAgICAgICAgWyVzZXhwX29mOiBfIHQgKiBfIHRdXG4gICAgICAgIFslc2V4cF9vZjogaW50XVxuICAgICAgICAoZnVuICgpIC0+IHBoeXNfY29tcGFyZSB0MSB0MilcbiAgICA7O1xuXG4gICAgbGV0IHBoeXNfZXF1YWwgdDEgdDIgPVxuICAgICAgZGVidWdcbiAgICAgICAgXCJQb2ludGVyLnBoeXNfZXF1YWxcIlxuICAgICAgICBbXVxuICAgICAgICAodDEsIHQyKVxuICAgICAgICBbJXNleHBfb2Y6IF8gdCAqIF8gdF1cbiAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAoZnVuICgpIC0+IHBoeXNfZXF1YWwgdDEgdDIpXG4gICAgOztcblxuICAgIGxldCBpc19udWxsIHQgPVxuICAgICAgZGVidWcgXCJQb2ludGVyLmlzX251bGxcIiBbXSB0IFslc2V4cF9vZjogXyB0XSBbJXNleHBfb2Y6IGJvb2xdIChmdW4gKCkgLT4gaXNfbnVsbCB0KVxuICAgIDs7XG5cbiAgICBsZXQgbnVsbCA9IG51bGxcblxuICAgIG1vZHVsZSBJZCA9IHN0cnVjdFxuICAgICAgb3BlbiBJZFxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICAgIGxldCBvZl9pbnQ2MyBpID1cbiAgICAgICAgZGVidWcgXCJQb2ludGVyLklkLm9mX2ludDYzXCIgW10gaSBbJXNleHBfb2Y6IEludDYzLnRdIFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgIG9mX2ludDYzIGkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9faW50NjMgdCA9XG4gICAgICAgIGRlYnVnIFwiUG9pbnRlci5JZC50b19pbnQ2M1wiIFtdIHQgWyVzZXhwX29mOiB0XSBbJXNleHBfb2Y6IEludDYzLnRdIChmdW4gKCkgLT5cbiAgICAgICAgICB0b19pbnQ2MyB0KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgdHlwZSBub25yZWMgJ3Nsb3RzIHQgPSAnc2xvdHMgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gIGxldCBpZF9vZl9wb2ludGVyIHQgcG9pbnRlciA9XG4gICAgZGVidWdcbiAgICAgIFwiaWRfb2ZfcG9pbnRlclwiXG4gICAgICBbIHQgXVxuICAgICAgcG9pbnRlclxuICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF1cbiAgICAgIFslc2V4cF9vZjogUG9pbnRlci5JZC50XVxuICAgICAgKGZ1biAoKSAtPiBpZF9vZl9wb2ludGVyIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgcG9pbnRlcl9vZl9pZF9leG4gdCBpZCA9XG4gICAgZGVidWdcbiAgICAgIFwicG9pbnRlcl9vZl9pZF9leG5cIlxuICAgICAgWyB0IF1cbiAgICAgIGlkXG4gICAgICBbJXNleHBfb2Y6IFBvaW50ZXIuSWQudF1cbiAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnRdXG4gICAgICAoZnVuICgpIC0+IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQpXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyID1cbiAgICBkZWJ1Z1xuICAgICAgXCJwb2ludGVyX2lzX3ZhbGlkXCJcbiAgICAgIFsgdCBdXG4gICAgICBwb2ludGVyXG4gICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50XVxuICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgKGZ1biAoKSAtPiBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgY3JlYXRlIHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXkgPVxuICAgIGRlYnVnIFwiY3JlYXRlXCIgW10gY2FwYWNpdHkgWyVzZXhwX29mOiBpbnRdIFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICBjcmVhdGUgc2xvdHMgfmNhcGFjaXR5IH5kdW1teSlcbiAgOztcblxuICBsZXQgbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUgPVxuICAgIGRlYnVnIFwibWF4X2NhcGFjaXR5XCIgW10gc2xvdHNfcGVyX3R1cGxlIFslc2V4cF9vZjogaW50XSBbJXNleHBfb2Y6IGludF0gKGZ1biAoKSAtPlxuICAgICAgbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUpXG4gIDs7XG5cbiAgbGV0IGNhcGFjaXR5IHQgPVxuICAgIGRlYnVnIFwiY2FwYWNpdHlcIiBbIHQgXSB0IFslc2V4cF9vZjogXyB0XSBbJXNleHBfb2Y6IGludF0gKGZ1biAoKSAtPiBjYXBhY2l0eSB0KVxuICA7O1xuXG4gIGxldCBncm93ID9jYXBhY2l0eSB0ID1cbiAgICBkZWJ1Z1xuICAgICAgXCJncm93XCJcbiAgICAgIFsgdCBdXG4gICAgICAoYGNhcGFjaXR5IGNhcGFjaXR5KVxuICAgICAgWyVzZXhwX29mOiBbIGBjYXBhY2l0eSBvZiBpbnQgb3B0aW9uIF1dXG4gICAgICBbJXNleHBfb2Y6IF8gdF1cbiAgICAgIChmdW4gKCkgLT4gZ3JvdyA/Y2FwYWNpdHkgdClcbiAgOztcblxuICBsZXQgaXNfZnVsbCB0ID1cbiAgICBkZWJ1ZyBcImlzX2Z1bGxcIiBbIHQgXSB0IFslc2V4cF9vZjogXyB0XSBbJXNleHBfb2Y6IGJvb2xdIChmdW4gKCkgLT4gaXNfZnVsbCB0KVxuICA7O1xuXG4gIGxldCB1bnNhZmVfZnJlZSB0IHAgPVxuICAgIGRlYnVnIFwidW5zYWZlX2ZyZWVcIiBbIHQgXSBwIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogdW5pdF0gKGZ1biAoKSAtPlxuICAgICAgdW5zYWZlX2ZyZWUgdCBwKVxuICA7O1xuXG4gIGxldCBmcmVlIHQgcCA9XG4gICAgZGVidWcgXCJmcmVlXCIgWyB0IF0gcCBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IHVuaXRdIChmdW4gKCkgLT4gZnJlZSB0IHApXG4gIDs7XG5cbiAgbGV0IGRlYnVnX25ldyB0IGYgPSBkZWJ1ZyBcIm5ld1wiIFsgdCBdICgpIFslc2V4cF9vZjogdW5pdF0gWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gZlxuICBsZXQgbmV3MSB0IGEwID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxIHQgYTApXG4gIGxldCBuZXcyIHQgYTAgYTEgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzIgdCBhMCBhMSlcbiAgbGV0IG5ldzMgdCBhMCBhMSBhMiA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MyB0IGEwIGExIGEyKVxuICBsZXQgbmV3NCB0IGEwIGExIGEyIGEzID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc0IHQgYTAgYTEgYTIgYTMpXG4gIGxldCBuZXc1IHQgYTAgYTEgYTIgYTMgYTQgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzUgdCBhMCBhMSBhMiBhMyBhNClcbiAgbGV0IG5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1KVxuICBsZXQgbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2ID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYpXG5cbiAgbGV0IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcpXG4gIDs7XG5cbiAgbGV0IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTgpXG4gIDs7XG5cbiAgbGV0IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSlcbiAgOztcblxuICBsZXQgbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTApXG4gIDs7XG5cbiAgbGV0IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEpXG4gIDs7XG5cbiAgbGV0IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMilcbiAgOztcblxuICBsZXQgbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMpXG4gIDs7XG5cbiAgbGV0IGdldF90dXBsZSB0IHBvaW50ZXIgPVxuICAgIGRlYnVnIFwiZ2V0X3R1cGxlXCIgWyB0IF0gcG9pbnRlciBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IF9dIChmdW4gKCkgLT5cbiAgICAgIGdldF90dXBsZSB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGRlYnVnX2dldCBuYW1lIGYgdCBwb2ludGVyID1cbiAgICBkZWJ1ZyBuYW1lIFsgdCBdIHBvaW50ZXIgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiBfXSAoZnVuICgpIC0+IGYgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBnZXQgdCBwb2ludGVyIHNsb3QgPSBkZWJ1Z19nZXQgXCJnZXRcIiBnZXQgdCBwb2ludGVyIHNsb3RcbiAgbGV0IHVuc2FmZV9nZXQgdCBwb2ludGVyIHNsb3QgPSBkZWJ1Z19nZXQgXCJ1bnNhZmVfZ2V0XCIgdW5zYWZlX2dldCB0IHBvaW50ZXIgc2xvdFxuXG4gIGxldCBkZWJ1Z19zZXQgbmFtZSBmIHQgcG9pbnRlciBzbG90IGEgPVxuICAgIGRlYnVnIG5hbWUgWyB0IF0gcG9pbnRlciBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IHVuaXRdIChmdW4gKCkgLT5cbiAgICAgIGYgdCBwb2ludGVyIHNsb3QgYSlcbiAgOztcblxuICBsZXQgc2V0IHQgcG9pbnRlciBzbG90IGEgPSBkZWJ1Z19zZXQgXCJzZXRcIiBzZXQgdCBwb2ludGVyIHNsb3QgYVxuICBsZXQgdW5zYWZlX3NldCB0IHBvaW50ZXIgc2xvdCBhID0gZGVidWdfc2V0IFwidW5zYWZlX3NldFwiIHVuc2FmZV9zZXQgdCBwb2ludGVyIHNsb3QgYVxuZW5kXG5cbm1vZHVsZSBFcnJvcl9jaGVjayAoUG9vbCA6IFMpID0gc3RydWN0XG4gIG9wZW4gUG9vbFxuICBtb2R1bGUgU2xvdHMgPSBTbG90c1xuICBtb2R1bGUgU2xvdCA9IFNsb3RcblxuICBtb2R1bGUgUG9pbnRlciA9IHN0cnVjdFxuICAgIHR5cGUgJ3Nsb3RzIHQgPVxuICAgICAgeyBtdXRhYmxlIGlzX3ZhbGlkIDogYm9vbFxuICAgICAgOyBwb2ludGVyIDogJ3Nsb3RzIFBvaW50ZXIudFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2YsIHR5cGVyZXBdXG5cbiAgICBsZXQgY3JlYXRlIHBvaW50ZXIgPSB7IGlzX3ZhbGlkID0gdHJ1ZTsgcG9pbnRlciB9XG4gICAgbGV0IG51bGwgKCkgPSB7IGlzX3ZhbGlkID0gZmFsc2U7IHBvaW50ZXIgPSBQb2ludGVyLm51bGwgKCkgfVxuICAgIGxldCBwaHlzX2NvbXBhcmUgdDEgdDIgPSBQb2ludGVyLnBoeXNfY29tcGFyZSB0MS5wb2ludGVyIHQyLnBvaW50ZXJcbiAgICBsZXQgcGh5c19lcXVhbCB0MSB0MiA9IFBvaW50ZXIucGh5c19lcXVhbCB0MS5wb2ludGVyIHQyLnBvaW50ZXJcbiAgICBsZXQgaXNfbnVsbCB0ID0gUG9pbnRlci5pc19udWxsIHQucG9pbnRlclxuXG4gICAgbGV0IGZvbGxvdyB0ID1cbiAgICAgIGlmIG5vdCB0LmlzX3ZhbGlkXG4gICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byB1c2UgaW52YWxpZCBwb2ludGVyXCIgdCBbJXNleHBfb2Y6IF8gdF07XG4gICAgICB0LnBvaW50ZXJcbiAgICA7O1xuXG4gICAgbGV0IGludmFsaWRhdGUgdCA9IHQuaXNfdmFsaWQgPC0gZmFsc2VcblxuICAgIG1vZHVsZSBJZCA9IFBvaW50ZXIuSWRcbiAgZW5kXG5cbiAgdHlwZSAnc2xvdHMgdCA9ICdzbG90cyBQb29sLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICBsZXQgcG9pbnRlcl9pc192YWxpZCB0IHsgUG9pbnRlci5pc192YWxpZDsgcG9pbnRlciB9ID1cbiAgICBpc192YWxpZCAmJiBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlclxuICA7O1xuXG4gICgqIFdlIGRvbid0IGRvIFtQb2ludGVyLmZvbGxvdyBwb2ludGVyXSwgYmVjYXVzZSB0aGF0IHdvdWxkIGRpc2FsbG93IFtpZF9vZl9wb2ludGVyIHRcbiAgICAgKFBvaW50ZXIubnVsbCAoKSldLiAqKVxuICBsZXQgaWRfb2ZfcG9pbnRlciB0IHBvaW50ZXIgPSBpZF9vZl9wb2ludGVyIHQgcG9pbnRlci5Qb2ludGVyLnBvaW50ZXJcblxuICBsZXQgcG9pbnRlcl9vZl9pZF9leG4gdCBpZCA9XG4gICAgbGV0IHBvaW50ZXIgPSBwb2ludGVyX29mX2lkX2V4biB0IGlkIGluXG4gICAgbGV0IGlzX3ZhbGlkID0gUG9vbC5wb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlciBpblxuICAgIHsgUG9pbnRlci5pc192YWxpZDsgcG9pbnRlciB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSA9IGNyZWF0ZVxuICBsZXQgY2FwYWNpdHkgPSBjYXBhY2l0eVxuICBsZXQgbWF4X2NhcGFjaXR5ID0gbWF4X2NhcGFjaXR5XG4gIGxldCBncm93ID0gZ3Jvd1xuICBsZXQgaXNfZnVsbCA9IGlzX2Z1bGxcbiAgbGV0IGdldF90dXBsZSB0IHAgPSBnZXRfdHVwbGUgdCAoUG9pbnRlci5mb2xsb3cgcClcbiAgbGV0IGdldCB0IHAgPSBnZXQgdCAoUG9pbnRlci5mb2xsb3cgcClcbiAgbGV0IHVuc2FmZV9nZXQgdCBwID0gdW5zYWZlX2dldCB0IChQb2ludGVyLmZvbGxvdyBwKVxuICBsZXQgc2V0IHQgcCBzbG90IHYgPSBzZXQgdCAoUG9pbnRlci5mb2xsb3cgcCkgc2xvdCB2XG4gIGxldCB1bnNhZmVfc2V0IHQgcCBzbG90IHYgPSB1bnNhZmVfc2V0IHQgKFBvaW50ZXIuZm9sbG93IHApIHNsb3QgdlxuXG4gIGxldCB1bnNhZmVfZnJlZSB0IHAgPVxuICAgIHVuc2FmZV9mcmVlIHQgKFBvaW50ZXIuZm9sbG93IHApO1xuICAgIFBvaW50ZXIuaW52YWxpZGF0ZSBwXG4gIDs7XG5cbiAgbGV0IGZyZWUgdCBwID1cbiAgICBmcmVlIHQgKFBvaW50ZXIuZm9sbG93IHApO1xuICAgIFBvaW50ZXIuaW52YWxpZGF0ZSBwXG4gIDs7XG5cbiAgbGV0IG5ldzEgdCBhMCA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEgdCBhMClcbiAgbGV0IG5ldzIgdCBhMCBhMSA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzIgdCBhMCBhMSlcbiAgbGV0IG5ldzMgdCBhMCBhMSBhMiA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzMgdCBhMCBhMSBhMilcbiAgbGV0IG5ldzQgdCBhMCBhMSBhMiBhMyA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzQgdCBhMCBhMSBhMiBhMylcbiAgbGV0IG5ldzUgdCBhMCBhMSBhMiBhMyBhNCA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzUgdCBhMCBhMSBhMiBhMyBhNClcbiAgbGV0IG5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSlcbiAgbGV0IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNilcblxuICBsZXQgbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3ID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcpXG4gIDs7XG5cbiAgbGV0IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4KVxuICA7O1xuXG4gIGxldCBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5ID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5KVxuICA7O1xuXG4gIGxldCBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTApXG4gIDs7XG5cbiAgbGV0IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExKVxuICA7O1xuXG4gIGxldCBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyKVxuICA7O1xuXG4gIGxldCBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMyA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMpXG4gIDs7XG5lbmRcbiIsIigqIEJlIHN1cmUgYW5kIGZpcnN0IHJlYWQgdGhlIGltcGxlbWVudGF0aW9uIG92ZXJ2aWV3IGluIHRpbWluZ193aGVlbF9pbnRmLm1sLlxuXG4gICBBIHRpbWluZyB3aGVlbCBpcyByZXByZXNlbnRlZCBhcyBhbiBhcnJheSBvZiBcImxldmVsc1wiLCB3aGVyZSBlYWNoIGxldmVsIGlzIGFuIGFycmF5IG9mXG4gICBcInNsb3RzXCIuICBFYWNoIHNsb3QgcmVwcmVzZW50cyBhIHJhbmdlIG9mIGtleXMsIGFuZCBob2xkcyBlbGVtZW50cyBhc3NvY2lhdGVkIHdpdGhcbiAgIHRob3NlIGtleXMuICBFYWNoIGxldmVsIGlzIGRldGVybWluZWQgYnkgdHdvIHBhcmFtZXRlcnM6IFtiaXRzXSwgdGhlIG51bWJlciBvZiBrZXkgYml0c1xuICAgdGhhdCB0aGF0IGxldmVsIGlzIHJlc3BvbnNpYmxlIGZvciBkaXN0aW5ndWlzaGluZywgYW5kIFtiaXRzX3Blcl9zbG90XSwgdGhlIHNpemUgb2YgdGhlXG4gICByYW5nZSBvZiBrZXlzIHRoYXQgY29ycmVzcG9uZCB0byBhIHNpbmdsZSBzbG90IGluIHRoZSBhcnJheS4gIENvbmNlcHR1YWxseSwgZWFjaCBsZXZlbFxuICAgYnJlYWtzIHVwIGFsbCBwb3NzaWJsZSBrZXlzIGludG8gcmFuZ2VzIG9mIHNpemUgWzJeYml0c19wZXJfc2xvdF0uICBUaGUgbGVuZ3RoIG9mIGFcbiAgIGxldmVsIGFycmF5IGlzIFsyXmJpdHNdLCBhbmQgdGhlIGFycmF5IGlzIHVzZWQgbGlrZSBhIGNpcmN1bGFyIGJ1ZmZlciB0byB0cmF2ZXJzZSB0aGVcbiAgIHJhbmdlcyBhcyB0aGUgdGltaW5nIHdoZWVsJ3MgW21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzLiAgQSBrZXkgW2tdLCBpZiBzdG9yZWQgaW4gdGhlXG4gICBsZXZlbCwgaXMgc3RvcmVkIGF0IGluZGV4IFsoayAvIDJeYml0c19wZXJfc2xvdCkgbW9kIDJeYml0c10uXG5cbiAgIFRoZSBzZXR0aW5ncyBvZiB0aGUgW2JpdHNdIHZhbHVlcyBhcmUgY29uZmlndXJhYmxlIGJ5IHVzZXIgY29kZSB1c2luZyBbTGV2ZWxfYml0c10sXG4gICBhbHRob3VnaCB0aGVyZSBpcyBhIHJlYXNvbmFibGUgZGVmYXVsdCBzZXR0aW5nLiAgR2l2ZW4gdGhlIFtiaXRzXSB2YWx1ZXMsIHRoZVxuICAgW2JpdHNfcGVyX3Nsb3RdIGFyZSBjaG9zZW4gc28gdGhhdCBbYml0c19wZXJfc2xvdF0gYXQgbGV2ZWwgW2ldIGlzIHRoZSBzdW0gb2YgdGhlXG4gICBbYml0c10gYXQgYWxsIGxvd2VyIGxldmVscy4gIFRodXMsIGEgc2xvdCdzIHJhbmdlIGF0IGxldmVsIFtpXSBpcyBhcyBsYXJnZSBhcyB0aGVcbiAgIGVudGlyZSByYW5nZSBvZiB0aGUgYXJyYXkgYXQgbGV2ZWwgW2kgLSAxXS5cblxuICAgRWFjaCBsZXZlbCBoYXMgYSBbbWluX2FsbG93ZWRfa2V5XSBhbmQgYSBbbWF4X2FsbG93ZWRfa2V5XSB0aGF0IGRldGVybWluZSB0aGUgcmFuZ2Ugb2ZcbiAgIGtleXMgdGhhdCBpdCBjdXJyZW50bHkgcmVwcmVzZW50cy4gIFRoZSBjcnVjaWFsIGludmFyaWFudCBvZiB0aGUgdGltaW5nIHdoZWVsIGRhdGFcbiAgIHN0cnVjdHVyZSBpcyB0aGF0IHRoZSBbbWluX2FsbG93ZWRfa2V5XSBhdCBsZXZlbCBbaV0gaXMgbm8gbW9yZSB0aGFuIHRoZVxuICAgW21heF9hbGxvd2VkX2tleSArIDFdIG9mIGxldmVsIFtpIC0gMV0uICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgbGV2ZWxzIGNhbiByZXByZXNlbnQgYWxsXG4gICBrZXlzIGZyb20gdGhlIFttaW5fYWxsb3dlZF9rZXldIG9mIHRoZSBsb3dlc3QgbGV2ZWwgdG8gdGhlIFttYXhfYWxsb3dlZF9rZXldIG9mIHRoZVxuICAgaGlnaGVzdCBsZXZlbC4gIFRoZSBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgcmVzdG9yaW5nXG4gICB0aGlzIGludmFyaWFudC5cblxuICAgQXQgbGV2ZWwgMCwgW2JpdHNfcGVyX3Nsb3QgPSAwXSwgYW5kIHNvIHRoZSBzaXplIG9mIGVhY2ggc2xvdCBpcyBbMV0uICBUaGF0IGlzLCBsZXZlbCAwXG4gICBwcmVjaXNlbHkgZGlzdGluZ3Vpc2hlcyBhbGwgdGhlIGtleXMgYmV0d2VlbiBpdHMgW21pbl9hbGxvd2VkX2tleV0gKHdoaWNoIGlzIHRoZSBzYW1lXG4gICBhcyB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgdGhlIGVudGlyZSB0aW1pbmcgd2hlZWwpIGFuZCBbbWF4X2FsbG93ZWRfa2V5XS4gIEFzIHRoZVxuICAgbGV2ZWxzIGluY3JlYXNlLCB0aGUgW21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzLCB0aGUgW2JpdHNfcGVyX3Nsb3RdIGluY3JlYXNlcywgYW5kXG4gICB0aGUgcmFuZ2Ugb2Yga2V5cyBzdG9yZWQgaW4gdGhlIGxldmVsIGluY3JlYXNlcyAoZHJhbWF0aWNhbGx5KS5cblxuICAgVGhlIGlkZWEgb2YgdGhlIGltcGxlbWVudGF0aW9uIGlzIHNpbWlsYXIgdG8gdGhlIGhpZXJhcmNoaWNhbCBhcHByb2FjaCBkZXNjcmliZWQgaW46XG5cbiAgIHt2XG4gICAgIEhhc2hlZCBhbmQgSGllcmFyY2hpY2FsIFRpbWluZyBXaGVlbHM6XG4gICAgIEVmZmljaWVudCBEYXRhIFN0cnVjdHVyZXMgZm9yIEltcGxlbWVudGluZyBhIFRpbWVyIEZhY2lsaXR5XG5cbiAgICAgVmFyZ2hlc2UgJiBMYXVjaywgMTk5NlxuICAgdn1cblxuICAgSG93ZXZlciwgdGhlIGNvZGUgaXMgY29tcGxldGVseSBuZXcuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgVGltaW5nX3doZWVsX2ludGZcbm1vZHVsZSBQb29sID0gVHVwbGVfcG9vbFxubW9kdWxlIFRpbWVfbnMgPSBDb3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxuXG5sZXQgc2V4cF9vZl90X3N0eWxlIDogWyBgUHJldHR5IHwgYEludGVybmFsIF0gcmVmID0gcmVmIGBQcmV0dHlcblxuKCogW3ttYXgsbWlufV90aW1lXSBhcmUgYm91bmRzIG9uIHRoZSB0aW1lcyBzdXBwb3J0ZWQgYnkgYSB0aW1pbmcgd2hlZWwuICopXG5cbmxldCBtYXhfdGltZSA9IFRpbWVfbnMubWF4X3ZhbHVlX3JlcHJlc2VudGFibGVcbmxldCBtaW5fdGltZSA9IFRpbWVfbnMuZXBvY2hcblxubW9kdWxlIE51bV9rZXlfYml0cyA6IHNpZ1xuICB0eXBlIHQgPSBwcml2YXRlIGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCB6ZXJvIDogdFxuXG4gICgqIHZhbCBtaW5fdmFsdWUgOiB0ICopXG5cbiAgdmFsIG1heF92YWx1ZSA6IHRcbiAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgcG93MiA6IHQgLT4gSW50NjMudFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgSW50XG5cbiAgbGV0IG1pbl92YWx1ZSA9IDBcblxuICAoKiogV2Ugc3VwcG9ydCBhbGwgbm9uLW5lZ2F0aXZlIFtUaW1lX25zLnRdIHZhbHVlcy4gKilcbiAgbGV0IG1heF92YWx1ZSA9IEludDYzLm51bV9iaXRzIC0gMVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgYXNzZXJ0ICh0ID49IG1pbl92YWx1ZSk7XG4gICAgYXNzZXJ0ICh0IDw9IG1heF92YWx1ZSlcbiAgOztcblxuICBsZXQgb2ZfaW50IGkgPVxuICAgIGludmFyaWFudCBpO1xuICAgIGlcbiAgOztcblxuICBsZXQgKCArICkgdDEgdDIgPVxuICAgIGxldCB0ID0gdDEgKyB0MiBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgKCAtICkgdDEgdDIgPVxuICAgIGxldCB0ID0gdDEgLSB0MiBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgcG93MiB0ID0gSW50NjMuc2hpZnRfbGVmdCBJbnQ2My5vbmUgdFxuZW5kXG5cbm1vZHVsZSBMZXZlbF9iaXRzID0gc3RydWN0XG4gIHR5cGUgdCA9IE51bV9rZXlfYml0cy50IGxpc3QgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgbWF4X251bV9iaXRzID0gKE51bV9rZXlfYml0cy5tYXhfdmFsdWUgOj4gaW50KVxuICBsZXQgbnVtX2JpdHNfaW50ZXJuYWwgdCA9IExpc3QuZm9sZCB0IH5pbml0Ok51bV9rZXlfYml0cy56ZXJvIH5mOk51bV9rZXlfYml0cy4oICsgKVxuICBsZXQgbnVtX2JpdHMgdCA9IChudW1fYml0c19pbnRlcm5hbCB0IDo+IGludClcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIGFzc2VydCAobm90IChMaXN0LmlzX2VtcHR5IHQpKTtcbiAgICBMaXN0Lml0ZXIgdCB+ZjooZnVuIG51bV9rZXlfYml0cyAtPlxuICAgICAgTnVtX2tleV9iaXRzLmludmFyaWFudCBudW1fa2V5X2JpdHM7XG4gICAgICBhc3NlcnQgKE51bV9rZXlfYml0cy4oID4gKSBudW1fa2V5X2JpdHMgTnVtX2tleV9iaXRzLnplcm8pKTtcbiAgICBOdW1fa2V5X2JpdHMuaW52YXJpYW50IChudW1fYml0c19pbnRlcm5hbCB0KVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHQgPSBzZXhwIHw+IFslb2Zfc2V4cDogdF0gaW5cbiAgICBpbnZhcmlhbnQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9leG4gPyhleHRlbmRfdG9fbWF4X251bV9iaXRzID0gZmFsc2UpIGludHMgPVxuICAgIGlmIExpc3QuaXNfZW1wdHkgaW50cyB0aGVuIGZhaWx3aXRoIFwiTGV2ZWxfYml0cy5jcmVhdGVfZXhuIHJlcXVpcmVzIGEgbm9uZW1wdHkgbGlzdFwiO1xuICAgIGlmIExpc3QuZXhpc3RzIGludHMgfmY6KGZ1biBiaXRzIC0+IGJpdHMgPD0gMClcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkxldmVsX2JpdHMuY3JlYXRlX2V4biBnb3Qgbm9ucG9zaXRpdmUgbnVtIGJpdHNcIiB+XzooaW50cyA6IGludCBsaXN0KV07XG4gICAgbGV0IG51bV9iaXRzID0gTGlzdC5mb2xkIGludHMgfmluaXQ6MCB+ZjooICsgKSBpblxuICAgIGlmIG51bV9iaXRzID4gbWF4X251bV9iaXRzXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkxldmVsX2JpdHMuY3JlYXRlX2V4biBnb3QgdG9vIG1hbnkgYml0c1wiXG4gICAgICAgICAgICB+XzooaW50cyA6IGludCBsaXN0KVxuICAgICAgICAgICAgfmdvdDoobnVtX2JpdHMgOiBpbnQpXG4gICAgICAgICAgICAobWF4X251bV9iaXRzIDogaW50KV07XG4gICAgbGV0IGludHMgPVxuICAgICAgaWYgZXh0ZW5kX3RvX21heF9udW1fYml0c1xuICAgICAgdGhlbiBpbnRzIEAgTGlzdC5pbml0IChtYXhfbnVtX2JpdHMgLSBudW1fYml0cykgfmY6KGNvbnN0IDEpXG4gICAgICBlbHNlIGludHNcbiAgICBpblxuICAgIExpc3QubWFwIGludHMgfmY6TnVtX2tleV9iaXRzLm9mX2ludFxuICA7O1xuXG4gIGxldCBkZWZhdWx0ID0gY3JlYXRlX2V4biBbIDExOyAxMDsgMTA7IDEwOyAxMDsgMTA7IDEgXVxuXG4gIGxldCB0cmltIHQgfm1heF9udW1fYml0cyA9XG4gICAgaWYgTnVtX2tleV9iaXRzLiggPD0gKSAobnVtX2JpdHNfaW50ZXJuYWwgdCkgbWF4X251bV9iaXRzXG4gICAgdGhlbiB0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgdCB+cmVtYWluaW5nID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgfCBiIDo6IHQgLT5cbiAgICAgICAgICBpZiBOdW1fa2V5X2JpdHMuKCA+PSApIGIgcmVtYWluaW5nXG4gICAgICAgICAgdGhlbiBbIHJlbWFpbmluZyBdXG4gICAgICAgICAgZWxzZSBiIDo6IGxvb3AgdCB+cmVtYWluaW5nOihOdW1fa2V5X2JpdHMuKCAtICkgcmVtYWluaW5nIGIpXG4gICAgICBpblxuICAgICAgbG9vcCB0IH5yZW1haW5pbmc6bWF4X251bV9iaXRzKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbGFybV9wcmVjaXNpb24gOiBzaWdcbiAgaW5jbHVkZSBBbGFybV9wcmVjaXNpb25cblxuICB2YWwgbnVtX2tleV9iaXRzIDogdCAtPiBOdW1fa2V5X2JpdHMudFxuICB2YWwgaW50ZXJ2YWxfbnVtIDogdCAtPiBUaW1lX25zLnQgLT4gSW50NjMudFxuICB2YWwgaW50ZXJ2YWxfbnVtX3N0YXJ0IDogdCAtPiBJbnQ2My50IC0+IFRpbWVfbnMudFxuZW5kID0gc3RydWN0XG4gICgqKiBbdF0gaXMgcmVwcmVzZW50ZWQgYXMgdGhlIGxvZzIgb2YgYSBudW1iZXIgb2YgbmFub3NlY29uZHMuICopXG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cbiAgbGV0IG51bV9rZXlfYml0cyB0ID0gdCB8PiBOdW1fa2V5X2JpdHMub2ZfaW50XG5cbiAgbGV0IHRvX3NwYW4gdCA9XG4gICAgaWYgdCA8IDBcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW0FsYXJtX3ByZWNpc2lvbi50b19zcGFuXSBvZiBuZWdhdGl2ZSBwb3dlciBvZiB0d28gbmFub3NlY29uZHNcIiB+XzoodCA6IGludCldO1xuICAgIEludDYzLihzaGlmdF9sZWZ0IG9uZSkgdCB8PiBUaW1lX25zLlNwYW4ub2ZfaW50NjNfbnNcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKHQgfD4gdG9fc3BhbiA6IFRpbWVfbnMuU3Bhbi50KV1cbiAgbGV0IG9uZV9uYW5vc2Vjb25kID0gMFxuICBsZXQgYWJvdXRfb25lX21pY3Jvc2Vjb25kID0gMTBcbiAgbGV0IGFib3V0X29uZV9taWxsaXNlY29uZCA9IDIwXG4gIGxldCBhYm91dF9vbmVfc2Vjb25kID0gMzBcbiAgbGV0IGFib3V0X29uZV9kYXkgPSA0NlxuICBsZXQgbXVsIHQgfnBvdzIgPSB0ICsgcG93MlxuICBsZXQgZGl2IHQgfnBvdzIgPSB0IC0gcG93MlxuICBsZXQgaW50ZXJ2YWxfbnVtIHQgdGltZSA9IEludDYzLnNoaWZ0X3JpZ2h0ICh0aW1lIHw+IFRpbWVfbnMudG9faW50NjNfbnNfc2luY2VfZXBvY2gpIHRcblxuICBsZXQgaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgaW50ZXJ2YWxfbnVtID1cbiAgICBJbnQ2My5zaGlmdF9sZWZ0IGludGVydmFsX251bSB0IHw+IFRpbWVfbnMub2ZfaW50NjNfbnNfc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgb2Zfc3Bhbl9mbG9vcl9wb3cyX25zIHNwYW4gPVxuICAgIGlmIFRpbWVfbnMuU3Bhbi4oIDw9ICkgc3BhbiBUaW1lX25zLlNwYW4uemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbQWxhcm1fcHJlY2lzaW9uLm9mX3NwYW5fZmxvb3JfcG93Ml9uc10gZ290IG5vbi1wb3NpdGl2ZSBzcGFuXCJcbiAgICAgICAgICAgIChzcGFuIDogVGltZV9ucy5TcGFuLnQpXTtcbiAgICBzcGFuIHw+IFRpbWVfbnMuU3Bhbi50b19pbnQ2M19ucyB8PiBJbnQ2My5mbG9vcl9sb2cyXG4gIDs7XG5cbiAgbGV0IG9mX3NwYW4gPSBvZl9zcGFuX2Zsb29yX3BvdzJfbnNcblxuICBtb2R1bGUgVW5zdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zcGFuX2Zsb29yX3BvdzJfbnNcbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3BhblxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3Bhbl9mbG9vcl9wb3cyX25zXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zcGFuXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFRpbWVfbnMuU3BhbikgKFQpXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZSAoVGltZV9ucy5TcGFuKSAoVClcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgbGV2ZWxfYml0c19kZWZhdWx0ID0gTGV2ZWxfYml0cy5kZWZhdWx0XG5cbiAgdHlwZSB0ID1cbiAgICB7IGFsYXJtX3ByZWNpc2lvbiA6IEFsYXJtX3ByZWNpc2lvbi5VbnN0YWJsZS50XG4gICAgOyBsZXZlbF9iaXRzIDogTGV2ZWxfYml0cy50IFtAZGVmYXVsdCBsZXZlbF9iaXRzX2RlZmF1bHRdXG4gICAgOyBjYXBhY2l0eSA6IGludCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF1cblxuICBsZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBBbGFybV9wcmVjaXNpb24udG9fc3BhbiB0LmFsYXJtX3ByZWNpc2lvblxuXG4gICgqIFttYXhfbnVtX2xldmVsX2JpdHMgYWxhcm1fcHJlY2lzaW9uXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgbGV2ZWwgYml0cyBuZWVkZWQgZm9yIGFcbiAgICAgdGltaW5nIHdoZWVsIHdpdGggdGhlIHNwZWNpZmllZCBbYWxhcm1fcHJlY2lzaW9uXSB0byBiZSBhYmxlIHRvIHJlcHJlc2VudCBhbGxcbiAgICAgcG9zc2libGUgdGltZXMgZnJvbSBbVGltZV9ucy5lcG9jaF0gb253YXJkLiAgU2luY2Ugbm9uLW5lZ2F0aXZlIHRpbWVzIGhhdmUgNjIgYml0cyxcbiAgICAgd2UgcmVxdWlyZSBbTCA8PSA2MiAtIEFdLCB3aGVyZSBbQV0gaXMgdGhlIG51bWJlciBvZiBhbGFybSBiaXRzIGFuZCBbTF0gaXMgdGhlXG4gICAgIG51bWJlciBvZiBsZXZlbCBiaXRzLiAqKVxuICBsZXQgbWF4X251bV9sZXZlbF9iaXRzIGFsYXJtX3ByZWNpc2lvbiA9XG4gICAgTnVtX2tleV9iaXRzLiggLSApXG4gICAgICBOdW1fa2V5X2JpdHMubWF4X3ZhbHVlXG4gICAgICAoQWxhcm1fcHJlY2lzaW9uLm51bV9rZXlfYml0cyBhbGFybV9wcmVjaXNpb24pXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIE51bV9rZXlfYml0cy4oIDw9IClcbiAgICAgICAgICAoTGV2ZWxfYml0cy5udW1fYml0c19pbnRlcm5hbCB0LmxldmVsX2JpdHMpXG4gICAgICAgICAgKG1heF9udW1fbGV2ZWxfYml0cyB0LmFsYXJtX3ByZWNpc2lvbikpO1xuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+YWxhcm1fcHJlY2lzaW9uOmlnbm9yZVxuICAgICAgICB+Y2FwYWNpdHk6aWdub3JlXG4gICAgICAgIH5sZXZlbF9iaXRzOihjaGVjayBMZXZlbF9iaXRzLmludmFyaWFudCkpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSA/Y2FwYWNpdHkgPyhsZXZlbF9iaXRzID0gbGV2ZWxfYml0c19kZWZhdWx0KSB+YWxhcm1fcHJlY2lzaW9uICgpID1cbiAgICBsZXQgbGV2ZWxfYml0cyA9XG4gICAgICBMZXZlbF9iaXRzLnRyaW0gbGV2ZWxfYml0cyB+bWF4X251bV9iaXRzOihtYXhfbnVtX2xldmVsX2JpdHMgYWxhcm1fcHJlY2lzaW9uKVxuICAgIGluXG4gICAgeyBhbGFybV9wcmVjaXNpb247IGxldmVsX2JpdHM7IGNhcGFjaXR5IH1cbiAgOztcblxuICBsZXQgbWljcm9zZWNvbmRfcHJlY2lzaW9uICgpID1cbiAgICBjcmVhdGVcbiAgICAgICgpXG4gICAgICB+YWxhcm1fcHJlY2lzaW9uOkFsYXJtX3ByZWNpc2lvbi5hYm91dF9vbmVfbWljcm9zZWNvbmRcbiAgICAgIH5sZXZlbF9iaXRzOihMZXZlbF9iaXRzLmNyZWF0ZV9leG4gWyAxMDsgMTA7IDY7IDY7IDUgXSlcbiAgOztcblxuICBsZXQgZHVyYXRpb25zIHQgPVxuICAgIExpc3QuZm9sZGluZ19tYXBcbiAgICAgIHQubGV2ZWxfYml0c1xuICAgICAgfmluaXQ6KEFsYXJtX3ByZWNpc2lvbi5udW1fa2V5X2JpdHMgdC5hbGFybV9wcmVjaXNpb24gfD4gTnVtX2tleV9iaXRzLnRvX2ludClcbiAgICAgIH5mOihmdW4gbnVtX2JpdHNfYWNjdW0gbGV2ZWxfbnVtX2JpdHMgLT5cbiAgICAgICAgbGV0IG51bV9iaXRzX2FjY3VtID0gbnVtX2JpdHNfYWNjdW0gKyAobGV2ZWxfbnVtX2JpdHMgfD4gTnVtX2tleV9iaXRzLnRvX2ludCkgaW5cbiAgICAgICAgbGV0IGR1cmF0aW9uID1cbiAgICAgICAgICBUaW1lX25zLlNwYW4ub2ZfaW50NjNfbnNcbiAgICAgICAgICAgIChpZiBudW1fYml0c19hY2N1bSA9IEludDYzLm51bV9iaXRzIC0gMVxuICAgICAgICAgICAgIHRoZW4gSW50NjMubWF4X3ZhbHVlXG4gICAgICAgICAgICAgZWxzZSBJbnQ2My5zaGlmdF9sZWZ0IEludDYzLm9uZSBudW1fYml0c19hY2N1bSlcbiAgICAgICAgaW5cbiAgICAgICAgbnVtX2JpdHNfYWNjdW0sIGR1cmF0aW9uKVxuICA7O1xuZW5kXG5cblxuKCoqIFRpbWluZyB3aGVlbCBpcyBpbXBsZW1lbnRlZCBhcyBhIHByaW9yaXR5IHF1ZXVlIGluIHdoaWNoIHRoZSBrZXlzIGFyZVxuICAgIG5vbi1uZWdhdGl2ZSBpbnRlZ2VycyBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcnZhbHMgb2YgdGltZS4gIFRoZSBwcmlvcml0eSBxdWV1ZSBpc1xuICAgIHVubGlrZSBhIHR5cGljYWwgcHJpb3JpdHkgcXVldWUgaW4gdGhhdCByYXRoZXIgdGhhbiBoYXZpbmcgYSBcImRlbGV0ZSBtaW5cIiBvcGVyYXRpb24sXG4gICAgaXQgaGFzIGEgbm9uZGVjcmVhc2luZyBtaW5pbXVtIGFsbG93ZWQga2V5LCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgY3VycmVudCB0aW1lLFxuICAgIGFuZCBhbiBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSBvcGVyYXRpb24sIHdoaWNoIGltcGxlbWVudHMgW2FkdmFuY2VfY2xvY2tdLlxuICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIGFzIGEgc2lkZSBlZmZlY3QgcmVtb3ZlcyBhbGwgZWxlbWVudHMgZnJvbSB0aGUgdGltaW5nXG4gICAgd2hlZWwgd2hvc2Uga2V5IGlzIHNtYWxsZXIgdGhhbiB0aGUgbmV3IG1pbmltdW0sIHdoaWNoIGltcGxlbWVudHMgZmlyaW5nIHRoZSBhbGFybXNcbiAgICB3aG9zZSB0aW1lIGhhcyBleHBpcmVkLlxuXG4gICAgQWRkaW5nIGVsZW1lbnRzIHRvIGFuZCByZW1vdmluZyBlbGVtZW50cyBmcm9tIGEgdGltaW5nIHdoZWVsIHRha2VzIGNvbnN0YW50IHRpbWUsXG4gICAgdW5saWtlIGEgaGVhcC1iYXNlZCBwcmlvcml0eSBxdWV1ZSB3aGljaCB0YWtlcyBsb2coTiksIHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZlxuICAgIGVsZW1lbnRzIGluIHRoZSBoZWFwLiAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gdGFrZXMgdGltZSBwcm9wb3J0aW9uYWwgdG8gdGhlXG4gICAgYW1vdW50IG9mIGluY3JlYXNlIGluIHRoZSBtaW4tYWxsb3dlZCBrZXksIGFzIGNvbXBhcmVkIHRvIGxvZyhOKSBmb3IgYSBoZWFwLiAgSXQgaXNcbiAgICB0aGVzZSBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlcyB0aGF0IG1vdGl2YXRlIHRoZSBleGlzdGVuY2Ugb2YgdGltaW5nIHdoZWVscyBhbmQgbWFrZVxuICAgIHRoZW0gYSBnb29kIGNob2ljZSBmb3IgbWFpbnRhaW5nIGEgc2V0IG9mIGFsYXJtcy4gIFdpdGggYSB0aW1pbmcgd2hlZWwsIG9uZSBjYW5cbiAgICBzdXBwb3J0IGFueSBudW1iZXIgb2YgYWxhcm1zIHBheWluZyBjb25zdGFudCBvdmVyaGVhZCBwZXIgYWxhcm0sIHdoaWxlIHBheWluZyBhXG4gICAgc21hbGwgY29uc3RhbnQgb3ZlcmhlYWQgcGVyIHVuaXQgb2YgdGltZSBwYXNzZWQuXG5cbiAgICBBcyB0aGUgbWluaW11bSBhbGxvd2VkIGtleSBpbmNyZWFzZXMsIHRoZSB0aW1pbmcgd2hlZWwgZG9lcyBhIGxhenkgcmFkaXggc29ydCBvZiB0aGVcbiAgICBlbGVtZW50IGtleXMsIHdpdGggbGV2ZWwgMCBoYW5kbGluZyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgW2JfMF0gYml0cyBpbiBhIGtleSwgYW5kXG4gICAgZWFjaCBzdWJzZXF1ZW50IGxldmVsIFtpXSBoYW5kbGluZyB0aGUgbmV4dCBtb3N0IHNpZ25pZmljYW50IFtiX2ldIGJpdHMuICBUaGUgbGV2ZWxzXG4gICAgaG9sZCBpbmNyZWFzaW5nbHkgbGFyZ2VyIHJhbmdlcyBvZiBrZXlzLCB3aGVyZSB0aGUgdW5pb24gb2YgYWxsIHRoZSBsZXZlbHMgY2FuIGhvbGRcbiAgICBhbnkga2V5IGZyb20gW21pbl9hbGxvd2VkX2tleSB0XSB0byBbbWF4X2FsbG93ZWRfa2V5IHRdLiAgV2hlbiBhIGtleSBpcyBhZGRlZCB0byB0aGVcbiAgICB0aW1pbmcgd2hlZWwsIGl0IGlzIGFkZGVkIGF0IHRoZSBsb3dlc3QgcG9zc2libGUgbGV2ZWwgdGhhdCBjYW4gc3RvcmUgdGhlIGtleS4gIEFzXG4gICAgdGhlIG1pbmltdW0gYWxsb3dlZCBrZXkgaW5jcmVhc2VzLCB0aW1pbmctd2hlZWwgZWxlbWVudHMgbW92ZSBkb3duIGxldmVscyB1bnRpbCB0aGV5XG4gICAgcmVhY2ggbGV2ZWwgMCwgYW5kIHRoZW4gYXJlIGV2ZW50dWFsbHkgcmVtb3ZlZC4gICopXG5tb2R1bGUgUHJpb3JpdHlfcXVldWUgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgJ2EgcHJpb3JpdHlfcXVldWUgPSAnYSB0XG5cbiAgbW9kdWxlIEtleSA6IEludGVydmFsX251bVxuXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICAoKiogQW4gW0VsdC50XSByZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCB3YXMgYWRkZWQgdG8gYSB0aW1pbmcgd2hlZWwuICopXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB2YWwgYXQgOiAnYSBwcmlvcml0eV9xdWV1ZSAtPiAnYSB0IC0+IFRpbWVfbnMudFxuICAgIHZhbCBrZXkgOiAnYSBwcmlvcml0eV9xdWV1ZSAtPiAnYSB0IC0+IEtleS50XG4gICAgdmFsIHZhbHVlIDogJ2EgcHJpb3JpdHlfcXVldWUgLT4gJ2EgdCAtPiAnYVxuICAgIHZhbCBudWxsIDogdW5pdCAtPiAnYSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBJbnRlcm5hbF9lbHQgOiBzaWdcbiAgICBtb2R1bGUgUG9vbCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBrZXkgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBLZXkudFxuICAgIHZhbCBtYXhfYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuICAgIHZhbCBtaW5fYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuICAgIHZhbCBpc19udWxsIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgdG9fZXh0ZXJuYWwgOiAnYSB0IC0+ICdhIEVsdC50XG4gIGVuZFxuXG4gIHZhbCBwb29sIDogJ2EgdCAtPiAnYSBJbnRlcm5hbF9lbHQuUG9vbC50XG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICgqKiBbY3JlYXRlID9sZXZlbF9iaXRzICgpXSBjcmVhdGVzIGEgbmV3IGVtcHR5IHRpbWluZyB3aGVlbCwgW3RdLCB3aXRoIFtsZW5ndGggdCA9IDBdXG4gICAgICBhbmQgW21pbl9hbGxvd2VkX2tleSB0ID0gMF0uICopXG4gIHZhbCBjcmVhdGUgOiA/Y2FwYWNpdHk6aW50IC0+ID9sZXZlbF9iaXRzOkxldmVsX2JpdHMudCAtPiB1bml0IC0+ICdhIHRcblxuICAoKiogW2xlbmd0aCB0XSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHRpbWluZyB3aGVlbC4gKilcbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcblxuICAoKiogW21pbl9hbGxvd2VkX2tleSB0XSBpcyB0aGUgbWluaW11bSBrZXkgdGhhdCBjYW4gYmUgc3RvcmVkIGluIFt0XS4gIFRoaXMgb25seVxuICAgICAgaW5kaWNhdGVzIHRoZSBwb3NzaWJpbGl0eTsgdGhlcmUgbmVlZCBub3QgYmUgYW4gZWxlbWVudCBbZWx0XSBpbiBbdF0gd2l0aCBbRWx0LmtleVxuICAgICAgZWx0ID0gbWluX2FsbG93ZWRfa2V5IHRdLiAgVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIFwibWluX2tleVwiIG9wZXJhdGlvbiBpbiBhXG4gICAgICB0eXBpY2FsIHByaW9yaXR5IHF1ZXVlLlxuXG4gICAgICBbbWluX2FsbG93ZWRfa2V5IHRdIGNhbiBpbmNyZWFzZSBvdmVyIHRpbWUsIHZpYSBjYWxscyB0b1xuICAgICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0uICopXG4gIHZhbCBtaW5fYWxsb3dlZF9rZXkgOiBfIHQgLT4gS2V5LnRcblxuICAoKiogW21heF9hbGxvd2VkX2tleSB0XSBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGtleSB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gW3RdLiAgQXNcbiAgICAgIFttaW5fYWxsb3dlZF9rZXldIGluY3JlYXNlcywgc28gZG9lcyBbbWF4X2FsbG93ZWRfa2V5XTsgaG93ZXZlciBpdCBpcyBub3QgdGhlIGNhc2VcbiAgICAgIHRoYXQgW21heF9hbGxvd2VkX2tleSB0IC0gbWluX2FsbG93ZWRfa2V5IHRdIGlzIGEgY29uc3RhbnQuICBJdCBpcyBndWFyYW50ZWVkIHRoYXRcbiAgICAgIFttYXhfYWxsb3dlZF9rZXkgdCA+PSBtaW5fYWxsb3dlZF9rZXkgdCArIDJeQiAtIDFdLFxuICAgICAgd2hlcmUgW0JdIGlzIHRoZSBzdW0gb2YgdGhlIGJfaSBpbiBbbGV2ZWxfYml0c10uICopXG4gIHZhbCBtYXhfYWxsb3dlZF9rZXkgOiBfIHQgLT4gS2V5LnRcblxuICB2YWwgbWluX2VsdF8gOiAnYSB0IC0+ICdhIEludGVybmFsX2VsdC50XG4gIHZhbCBpbnRlcm5hbF9hZGQgOiAnYSB0IC0+IGtleTpLZXkudCAtPiBhdDpUaW1lX25zLnQgLT4gJ2EgLT4gJ2EgSW50ZXJuYWxfZWx0LnRcblxuICAoKiogW3JlbW92ZSB0IGVsdF0gcmVtb3ZlcyBbZWx0XSBmcm9tIFt0XS4gIEl0IGlzIGFuIGVycm9yIGlmIFtlbHRdIGlzIG5vdCBjdXJyZW50bHlcbiAgICAgIGluIFt0XSwgYW5kIHRoaXMgZXJyb3IgbWF5IG9yIG1heSBub3QgYmUgZGV0ZWN0ZWQuICopXG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+ICdhIEVsdC50IC0+IHVuaXRcblxuICB2YWwgY2hhbmdlIDogJ2EgdCAtPiAnYSBFbHQudCAtPiBrZXk6S2V5LnQgLT4gYXQ6VGltZV9ucy50IC0+IHVuaXRcblxuICAoKiogW2NsZWFyIHRdIHJlbW92ZXMgYWxsIGVsdHMgZnJvbSBbdF0uICopXG4gIHZhbCBjbGVhciA6IF8gdCAtPiB1bml0XG5cbiAgdmFsIG1lbSA6ICdhIHQgLT4gJ2EgRWx0LnQgLT4gYm9vbFxuXG4gIG1vZHVsZSBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0IDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlXG4gICAgICB8IE1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkXG4gIGVuZFxuXG4gICgqKiBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5IHQgfmtleSB+aGFuZGxlX3JlbW92ZWRdIGluY3JlYXNlcyB0aGUgbWluaW11bSBhbGxvd2VkXG4gICAgICBrZXkgaW4gW3RdIHRvIFtrZXldLCBhbmQgcmVtb3ZlcyBhbGwgZWxlbWVudHMgd2l0aCBrZXlzIGxlc3MgdGhhbiBba2V5XSwgYXBwbHlpbmdcbiAgICAgIFtoYW5kbGVfcmVtb3ZlZF0gdG8gZWFjaCBlbGVtZW50IHRoYXQgaXMgcmVtb3ZlZC4gIElmIFtrZXkgPD0gbWluX2FsbG93ZWRfa2V5IHRdLFxuICAgICAgdGhlbiBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSBkb2VzIG5vdGhpbmcuICBPdGhlcndpc2UsIGlmXG4gICAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSByZXR1cm5zIHN1Y2Nlc3NmdWxseSwgW21pbl9hbGxvd2VkX2tleSB0ID0ga2V5XS5cblxuICAgICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gdGFrZXMgdGltZSBwcm9wb3J0aW9uYWwgdG8gW2tleSAtIG1pbl9hbGxvd2VkX2tleSB0XSxcbiAgICAgIGFsdGhvdWdoIHBvc3NpYmx5IGxlc3MgdGltZS5cblxuICAgICAgQmVoYXZpb3IgaXMgdW5zcGVjaWZpZWQgaWYgW2hhbmRsZV9yZW1vdmVkXSBhY2Nlc3NlcyBbdF0gaW4gYW55IHdheSBvdGhlciB0aGFuXG4gICAgICBbRWx0XSBmdW5jdGlvbnMuICopXG4gIHZhbCBpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlcbiAgICA6ICAnYSB0XG4gICAgLT4ga2V5OktleS50XG4gICAgLT4gaGFuZGxlX3JlbW92ZWQ6KCdhIEVsdC50IC0+IHVuaXQpXG4gICAgLT4gSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdC50XG5cbiAgdmFsIGl0ZXIgOiAnYSB0IC0+IGY6KCdhIEVsdC50IC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgZmlyZV9wYXN0X2FsYXJtc1xuICAgIDogICdhIHRcbiAgICAtPiBoYW5kbGVfZmlyZWQ6KCdhIEVsdC50IC0+IHVuaXQpXG4gICAgLT4ga2V5OktleS50XG4gICAgLT4gbm93OlRpbWVfbnMudFxuICAgIC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICAoKiogRWFjaCBzbG90IGluIGEgbGV2ZWwgaXMgYSAocG9zc2libHkgbnVsbCkgcG9pbnRlciB0byBhIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdFxuICAgICAgb2YgZWxlbWVudHMuICBXZSBwb29sIHRoZSBlbGVtZW50cyBzbyB0aGF0IHdlIGNhbiByZXVzZSB0aGVtIGFmdGVyIHRoZXkgYXJlIHJlbW92ZWRcbiAgICAgIGZyb20gdGhlIHRpbWluZyB3aGVlbCAoZWl0aGVyIHZpYSBbcmVtb3ZlXSBvciBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSkuICBJblxuICAgICAgYWRkaXRpb24gdG8gc3RvcmluZyB0aGUgW2tleV0sIFthdF0sIGFuZCBbdmFsdWVdIGluIHRoZSBlbGVtZW50LCB3ZSBzdG9yZSB0aGVcbiAgICAgIFtsZXZlbF9pbmRleF0gc28gdGhhdCB3ZSBjYW4gcXVpY2tseSBnZXQgdG8gdGhlIGxldmVsIGhvbGRpbmcgYW4gZWxlbWVudCB3aGVuIHdlXG4gICAgICBbcmVtb3ZlXSBpdC5cblxuICAgICAgV2UgZGlzdGluZ3Vpc2ggYmV0d2VlbiBbRXh0ZXJuYWxfZWx0XSBhbmQgW0ludGVybmFsX2VsdF0sIHdoaWNoIGFyZSB0aGUgc2FtZVxuICAgICAgdW5kZXJuZWF0aC4gIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCBhbiBbSW50ZXJuYWxfZWx0XSBpcyBlaXRoZXIgW251bGxdIG9yIGFcbiAgICAgIHZhbGlkIHBvaW50ZXIuICBPbiB0aGUgb3RoZXIgaGFuZCwgW0V4dGVybmFsX2VsdF1zIGFyZSByZXR1cm5lZCB0byB1c2VyIGNvZGUsIHNvXG4gICAgICB0aGVyZSBpcyBubyBndWFyYW50ZWUgb2YgdmFsaWRpdHkgLS0gd2UgYWx3YXlzIHZhbGlkYXRlIGFuIFtFeHRlcm5hbF9lbHRdIGJlZm9yZVxuICAgICAgZG9pbmcgYW55dGhpbmcgd2l0aCBpdC5cblxuICAgICAgSXQgaXMgdGhlcmVmb3JlIE9LIHRvIHVzZSBbUG9vbC5VbnNhZmVdLCBiZWNhdXNlIHdlIHdpbGwgbmV2ZXIgYXR0ZW1wdCB0byBhY2Nlc3MgYVxuICAgICAgc2xvdCBvZiBhbiBpbnZhbGlkIHBvaW50ZXIuICopXG4gIG1vZHVsZSBQb29sID0gUG9vbC5VbnNhZmVcblxuICBtb2R1bGUgUG9pbnRlciA9IFBvb2wuUG9pbnRlclxuXG4gIG1vZHVsZSBLZXkgOiBzaWdcbiAgICAoKiogW0ludGVydmFsX251bV0gaXMgdGhlIHB1YmxpYyBBUEkuICBFdmVyeXRoaW5nIGZvbGxvd2luZyBpbiB0aGUgc2lnbmF0dXJlIGlzXG4gICAgICAgIGZvciBpbnRlcm5hbCB1c2UuICopXG4gICAgaW5jbHVkZSBUaW1pbmdfd2hlZWxfaW50Zi5JbnRlcnZhbF9udW1cblxuICAgICgqKiBbYWRkX2NsYW1wX3RvX21heF0gZG9lc24ndCB3b3JrIGF0IGFsbCB3aXRoIG5lZ2F0aXZlIHNwYW5zICopXG4gICAgdmFsIGFkZF9jbGFtcF90b19tYXggOiB0IC0+IFNwYW4udCAtPiB0XG5cbiAgICB2YWwgc3VjY19jbGFtcF90b19tYXggOiB0IC0+IHRcblxuICAgICgqKiBbU2xvdHNfbWFza10gaXMgdXNlZCB0byBxdWlja2x5IGRldGVybWluZSBhIGtleSdzIHNsb3QgaW4gYSBnaXZlbiBsZXZlbC4gKilcbiAgICBtb2R1bGUgU2xvdHNfbWFzayA6IHNpZ1xuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSBJbnQ2My50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgIHZhbCBjcmVhdGUgOiBsZXZlbF9iaXRzOk51bV9rZXlfYml0cy50IC0+IHRcbiAgICAgIHZhbCBuZXh0X3Nsb3QgOiB0IC0+IGludCAtPiBpbnRcbiAgICBlbmRcblxuICAgICgqKiBbTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza10gaXMgdXNlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgbWluaW11bSBrZXkgaW4gdGhlXG4gICAgICAgIHNhbWUgc2xvdCBhcyBhIGdpdmVuIGtleS4gKilcbiAgICBtb2R1bGUgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA6IHNpZ1xuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSBJbnQ2My50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgIGluY2x1ZGUgRXF1YWwuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIHZhbCBjcmVhdGUgOiBiaXRzX3Blcl9zbG90Ok51bV9rZXlfYml0cy50IC0+IHRcbiAgICBlbmRcblxuICAgIHZhbCBudW1fa2V5cyA6IE51bV9rZXlfYml0cy50IC0+IFNwYW4udFxuICAgIHZhbCBtaW5fa2V5X2luX3NhbWVfc2xvdCA6IHQgLT4gTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay50IC0+IHRcbiAgICB2YWwgc2xvdCA6IHQgLT4gYml0c19wZXJfc2xvdDpOdW1fa2V5X2JpdHMudCAtPiBzbG90c19tYXNrOlNsb3RzX21hc2sudCAtPiBpbnRcbiAgZW5kID0gc3RydWN0XG4gICAgbW9kdWxlIFNsb3RzX21hc2sgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEludDYzLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgbGV0IGNyZWF0ZSB+bGV2ZWxfYml0cyA9IEludDYzLiggLSApIChOdW1fa2V5X2JpdHMucG93MiBsZXZlbF9iaXRzKSBJbnQ2My5vbmVcbiAgICAgIGxldCBuZXh0X3Nsb3QgdCBzbG90ID0gKHNsb3QgKyAxKSBsYW5kIEludDYzLnRvX2ludF9leG4gdFxuICAgIGVuZFxuXG4gICAgbGV0IG51bV9rZXlzIG51bV9iaXRzID0gTnVtX2tleV9iaXRzLnBvdzIgbnVtX2JpdHNcblxuICAgIG1vZHVsZSBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEludDYzXG5cbiAgICAgIGxldCBjcmVhdGUgfmJpdHNfcGVyX3Nsb3QgPSBiaXRfbm90IChOdW1fa2V5X2JpdHMucG93MiBiaXRzX3Blcl9zbG90IC0gb25lKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFNwYW4gPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50NjNcblxuICAgICAgbGV0IHRvX2ludDYzIHQgPSB0XG4gICAgICBsZXQgb2ZfaW50NjMgaSA9IGlcbiAgICAgIGxldCBzY2FsZV9pbnQgdCBpID0gdCAqIG9mX2ludCBpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEludDYzXG5cbiAgICBsZXQgb2ZfaW50NjMgaSA9IGlcbiAgICBsZXQgdG9faW50NjMgdCA9IHRcbiAgICBsZXQgYWRkIHQgaSA9IHQgKyBpXG4gICAgbGV0IGFkZF9jbGFtcF90b19tYXggdCBpID0gaWYgdCA+IG1heF92YWx1ZSAtIGkgdGhlbiBtYXhfdmFsdWUgZWxzZSB0ICsgaVxuICAgIGxldCBzdWNjX2NsYW1wX3RvX21heCB0ID0gaWYgdCA9IG1heF92YWx1ZSB0aGVuIG1heF92YWx1ZSBlbHNlIHN1Y2MgdFxuICAgIGxldCBzdWIgdCBpID0gdCAtIGlcbiAgICBsZXQgZGlmZiB0MSB0MiA9IHQxIC0gdDJcblxuICAgIGxldCBzbG90IHQgfihiaXRzX3Blcl9zbG90IDogTnVtX2tleV9iaXRzLnQpIH5zbG90c19tYXNrID1cbiAgICAgIHRvX2ludF9leG4gKGJpdF9hbmQgKHNoaWZ0X3JpZ2h0IHQgKGJpdHNfcGVyX3Nsb3QgOj4gaW50KSkgc2xvdHNfbWFzaylcbiAgICA7O1xuXG4gICAgbGV0IG1pbl9rZXlfaW5fc2FtZV9zbG90IHQgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9XG4gICAgICBiaXRfYW5kIHQgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID0gS2V5Lk1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgbW9kdWxlIFNsb3RzX21hc2sgPSBLZXkuU2xvdHNfbWFza1xuXG4gIG1vZHVsZSBFeHRlcm5hbF9lbHQgPSBzdHJ1Y3RcblxuICAgICgqKiBUaGUgW3Bvb2xfc2xvdHNdIGhlcmUgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgc2xvdHMgaW4gYSBsZXZlbCBhcnJheS4gIFRoaXMgaXNcbiAgICAgICAgZm9yIHRoZSBzbG90cyBpbiB0aGUgcG9vbCB0dXBsZSByZXByZXNlbnRpbmcgYSBsZXZlbCBlbGVtZW50LiAqKVxuICAgIHR5cGUgJ2EgcG9vbF9zbG90cyA9XG4gICAgICAoIEtleS50XG4gICAgICAsIFRpbWVfbnMudFxuICAgICAgLCAnYVxuICAgICAgLCBpbnRcbiAgICAgICwgJ2EgcG9vbF9zbG90cyBQb2ludGVyLnRcbiAgICAgICwgJ2EgcG9vbF9zbG90cyBQb2ludGVyLnQgKVxuICAgICAgICBQb29sLlNsb3RzLnQ2XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHR5cGUgJ2EgdCA9ICdhIHBvb2xfc2xvdHMgUG9pbnRlci50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgbnVsbCA9IFBvaW50ZXIubnVsbFxuICBlbmRcblxuICBtb2R1bGUgSW50ZXJuYWxfZWx0IDogc2lnXG4gICAgbW9kdWxlIFBvb2wgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICAgIHZhbCBjcmVhdGUgOiA/Y2FwYWNpdHk6aW50IC0+IHVuaXQgLT4gXyB0XG4gICAgICB2YWwgaXNfZnVsbCA6IF8gdCAtPiBib29sXG4gICAgICB2YWwgZ3JvdyA6ID9jYXBhY2l0eTppbnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSBwcml2YXRlICdhIEV4dGVybmFsX2VsdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB2YWwgbnVsbCA6IHVuaXQgLT4gXyB0XG4gICAgdmFsIGlzX251bGwgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCBpc192YWxpZCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGJvb2xcblxuICAgICgqKiBEZWFsaW5nIHdpdGggW0V4dGVybmFsX2VsdF1zLiAqKVxuXG4gICAgdmFsIGV4dGVybmFsX2lzX3ZhbGlkIDogJ2EgUG9vbC50IC0+ICdhIEV4dGVybmFsX2VsdC50IC0+IGJvb2xcbiAgICB2YWwgdG9fZXh0ZXJuYWwgOiAnYSB0IC0+ICdhIEV4dGVybmFsX2VsdC50XG4gICAgdmFsIG9mX2V4dGVybmFsX2V4biA6ICdhIFBvb2wudCAtPiAnYSBFeHRlcm5hbF9lbHQudCAtPiAnYSB0XG4gICAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgaW52YXJpYW50IDogJ2EgUG9vbC50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBbY3JlYXRlXSByZXR1cm5zIGFuIGVsZW1lbnQgd2hvc2UgW25leHRdIGFuZCBbcHJldl0gYXJlIFtudWxsXS4gKilcbiAgICB2YWwgY3JlYXRlXG4gICAgICA6ICAnYSBQb29sLnRcbiAgICAgIC0+IGtleTpLZXkudFxuICAgICAgKCoqIFthdF0gaXMgdXNlZCB3aGVuIHRoZSBwcmlvcml0eSBxdWV1ZSBpcyB1c2VkIHRvIGltcGxlbWVudCBhIHRpbWluZyB3aGVlbC4gIElmXG4gICAgICAgICAgdW51c2VkLCBpdCB3aWxsIGJlIFtUaW1lX25zLmVwb2NoXS4gKilcbiAgICAgIC0+IGF0OlRpbWVfbnMudFxuICAgICAgLT4gdmFsdWU6J2FcbiAgICAgIC0+IGxldmVsX2luZGV4OmludFxuICAgICAgLT4gJ2EgdFxuXG4gICAgdmFsIGZyZWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB1bml0XG5cbiAgICAoKiogYWNjZXNzb3JzICopXG5cbiAgICB2YWwga2V5IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gS2V5LnRcbiAgICB2YWwgYXQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBUaW1lX25zLnRcbiAgICB2YWwgbGV2ZWxfaW5kZXggOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgbmV4dCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgdmFsdWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiAnYVxuXG4gICAgKCoqIG11dGF0b3JzICopXG5cbiAgICB2YWwgc2V0X2tleSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IEtleS50IC0+IHVuaXRcbiAgICB2YWwgc2V0X2F0IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gVGltZV9ucy50IC0+IHVuaXRcbiAgICB2YWwgc2V0X2xldmVsX2luZGV4IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gaW50IC0+IHVuaXRcblxuICAgICgqKiBbaW5zZXJ0X2F0X2VuZCBwb29sIHQgfnRvX2FkZF0gdHJlYXRzIFt0XSBhcyB0aGUgaGVhZCBvZiB0aGUgbGlzdCBhbmQgYWRkcyBbdG9fYWRkXVxuICAgICAgICB0byB0aGUgZW5kIG9mIGl0LiAqKVxuICAgIHZhbCBpbnNlcnRfYXRfZW5kIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gdG9fYWRkOidhIHQgLT4gdW5pdFxuXG4gICAgKCoqIFtsaW5rX3RvX3NlbGYgcG9vbCB0XSBtYWtlcyBbdF0gYmUgYSBzaW5nbGV0b24gY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0LiAqKVxuICAgIHZhbCBsaW5rX3RvX3NlbGYgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB1bml0XG5cbiAgICAoKiogW3VubGluayBwIHRdIHVubGlua3MgW3RdIGZyb20gdGhlIGNpcmN1bGFybHkgZG91Ymx5LWxpbmtlZCBsaXN0IHRoYXQgaXQgaXMgaW4uICBJdFxuICAgICAgICBjaGFuZ2VzIHRoZSBwb2ludGVycyBvZiBbdF0ncyBbcHJldl0gYW5kIFtuZXh0XSBlbHRzLCBidXQgbm90IFt0XSdzIFtwcmV2XSBhbmRcbiAgICAgICAgW25leHRdIHBvaW50ZXJzLiAgW3VubGlua10gaXMgbWVhbmluZ2xlc3MgaWYgW3RdIGlzIGEgc2luZ2xldG9uLiAqKVxuICAgIHZhbCB1bmxpbmsgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB1bml0XG5cbiAgICAoKiogSXRlcmF0b3JzLiAgW2l0ZXIgcCB0IH5pbml0IH5mXSB2aXNpdHMgZWFjaCBlbGVtZW50IGluIHRoZSBkb3VibHktbGlua2VkIGxpc3RcbiAgICAgICAgY29udGFpbmluZyBbdF0sIHN0YXJ0aW5nIGF0IFt0XSwgYW5kIGZvbGxvd2luZyBbbmV4dF0gcG9pbnRlcnMuICBbbGVuZ3RoXSBjb3VudHNcbiAgICAgICAgYnkgdmlzaXRpbmcgZWFjaCBlbGVtZW50IGluIHRoZSBsaXN0LiAqKVxuICAgIHZhbCBpdGVyIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gZjooJ2EgdCAtPiB1bml0KSAtPiB1bml0XG5cbiAgICB2YWwgbGVuZ3RoIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gaW50XG5cbiAgICAoKiogW21heF9hbGFybV90aW1lIHQgZWx0IH53aXRoX2tleV0gZmluZHMgdGhlIG1heCBbYXRdIGluIFtlbHRdJ3MgbGlzdCBhbW9uZyB0aGUgZWx0c1xuICAgICAgICB3aG9zZSBrZXkgaXMgW3dpdGhfa2V5XSwgcmV0dXJuaW5nIFtUaW1lX25zLmVwb2NoXSBpZiB0aGUgbGlzdCBpcyBlbXB0eS4gKilcbiAgICB2YWwgbWF4X2FsYXJtX3RpbWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB3aXRoX2tleTpLZXkudCAtPiBUaW1lX25zLnRcblxuICAgIHZhbCBtaW5fYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHBvb2xfc2xvdHMgPSAnYSBFeHRlcm5hbF9lbHQucG9vbF9zbG90cyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgJ2EgdCA9ICdhIEV4dGVybmFsX2VsdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgbnVsbCA9IFBvaW50ZXIubnVsbFxuICAgIGxldCBpc19udWxsID0gUG9pbnRlci5pc19udWxsXG4gICAgbGV0IGVxdWFsIHQxIHQyID0gUG9pbnRlci5waHlzX2VxdWFsIHQxIHQyXG5cbiAgICBsZXQgY3JlYXRlIHBvb2wgfmtleSB+YXQgfnZhbHVlIH5sZXZlbF9pbmRleCA9XG4gICAgICBQb29sLm5ldzYgcG9vbCBrZXkgYXQgdmFsdWUgbGV2ZWxfaW5kZXggKG51bGwgKCkpIChudWxsICgpKVxuICAgIDs7XG5cbiAgICBsZXQgZnJlZSA9IFBvb2wuZnJlZVxuICAgIGxldCBrZXkgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50MFxuICAgIGxldCBzZXRfa2V5IHAgdCBrID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50MCBrXG4gICAgbGV0IGF0IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDFcbiAgICBsZXQgc2V0X2F0IHAgdCB4ID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50MSB4XG4gICAgbGV0IHZhbHVlIHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDJcbiAgICBsZXQgbGV2ZWxfaW5kZXggcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50M1xuICAgIGxldCBzZXRfbGV2ZWxfaW5kZXggcCB0IGkgPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQzIGlcbiAgICBsZXQgcHJldiBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQ0XG4gICAgbGV0IHNldF9wcmV2IHAgdCB4ID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50NCB4XG4gICAgbGV0IG5leHQgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50NVxuICAgIGxldCBzZXRfbmV4dCBwIHQgeCA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDUgeFxuICAgIGxldCBpc192YWxpZCBwIHQgPSBQb29sLnBvaW50ZXJfaXNfdmFsaWQgcCB0XG4gICAgbGV0IGV4dGVybmFsX2lzX3ZhbGlkID0gaXNfdmFsaWRcblxuICAgIGxldCBpbnZhcmlhbnQgcG9vbCBpbnZhcmlhbnRfYSB0ID1cbiAgICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICAgIGFzc2VydCAoaXNfdmFsaWQgcG9vbCB0KTtcbiAgICAgICAgaW52YXJpYW50X2EgKHZhbHVlIHBvb2wgdCk7XG4gICAgICAgIGxldCBuID0gbmV4dCBwb29sIHQgaW5cbiAgICAgICAgYXNzZXJ0IChpc19udWxsIG4gfHwgUG9pbnRlci5waHlzX2VxdWFsIHQgKHByZXYgcG9vbCBuKSk7XG4gICAgICAgIGxldCBwID0gcHJldiBwb29sIHQgaW5cbiAgICAgICAgYXNzZXJ0IChpc19udWxsIHAgfHwgUG9pbnRlci5waHlzX2VxdWFsIHQgKG5leHQgcG9vbCBwKSkpXG4gICAgOztcblxuICAgIG1vZHVsZSBQb29sID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBwb29sX3Nsb3RzIFBvb2wudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID0gUG9vbC5pbnZhcmlhbnQgaWdub3JlIHRcbiAgICAgIGxldCBjcmVhdGUgPyhjYXBhY2l0eSA9IDEpICgpID0gUG9vbC5jcmVhdGUgUG9vbC5TbG90cy50NiB+Y2FwYWNpdHlcbiAgICAgIGxldCBncm93ID0gUG9vbC5ncm93XG4gICAgICBsZXQgaXNfZnVsbCA9IFBvb2wuaXNfZnVsbFxuICAgIGVuZFxuXG4gICAgbGV0IHRvX2V4dGVybmFsIHQgPSB0XG5cbiAgICBsZXQgb2ZfZXh0ZXJuYWxfZXhuIHBvb2wgdCA9XG4gICAgICBpZiBpc192YWxpZCBwb29sIHQgdGhlbiB0IGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1pbmdfd2hlZWwgZ290IGludmFsaWQgYWxhcm1cIl1cbiAgICA7O1xuXG4gICAgbGV0IHVubGluayBwb29sIHQgPVxuICAgICAgc2V0X25leHQgcG9vbCAocHJldiBwb29sIHQpIChuZXh0IHBvb2wgdCk7XG4gICAgICBzZXRfcHJldiBwb29sIChuZXh0IHBvb2wgdCkgKHByZXYgcG9vbCB0KVxuICAgIDs7XG5cbiAgICBsZXQgbGluayBwb29sIHByZXYgbmV4dCA9XG4gICAgICBzZXRfbmV4dCBwb29sIHByZXYgbmV4dDtcbiAgICAgIHNldF9wcmV2IHBvb2wgbmV4dCBwcmV2XG4gICAgOztcblxuICAgIGxldCBsaW5rX3RvX3NlbGYgcG9vbCB0ID0gbGluayBwb29sIHQgdFxuXG4gICAgbGV0IGluc2VydF9hdF9lbmQgcG9vbCB0IH50b19hZGQgPVxuICAgICAgbGV0IHByZXYgPSBwcmV2IHBvb2wgdCBpblxuICAgICAgbGluayBwb29sIHByZXYgdG9fYWRkO1xuICAgICAgbGluayBwb29sIHRvX2FkZCB0XG4gICAgOztcblxuICAgIGxldCBpdGVyIHBvb2wgZmlyc3QgfmYgPVxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgKCogV2UgZ2V0IFtuZXh0XSBiZWZvcmUgY2FsbGluZyBbZl0gc28gdGhhdCBbZl0gY2FuIG1vZGlmeSBvciBbZnJlZV0gWyFjdXJyZW50XS4gKilcbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgZiAhY3VycmVudDtcbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgIGRvbmVcbiAgICA7O1xuXG4gICAgbGV0IGxlbmd0aCBwb29sIGZpcnN0ID1cbiAgICAgIGxldCByID0gcmVmIDAgaW5cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgIGluY3IgcjtcbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgIGRvbmU7XG4gICAgICAhclxuICAgIDs7XG5cbiAgICBsZXQgbWF4X2FsYXJtX3RpbWUgcG9vbCBmaXJzdCB+d2l0aF9rZXkgPVxuICAgICAgbGV0IG1heF9hbGFybV90aW1lID0gcmVmIFRpbWVfbnMuZXBvY2ggaW5cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgIGlmIEtleS5lcXVhbCAoa2V5IHBvb2wgIWN1cnJlbnQpIHdpdGhfa2V5XG4gICAgICAgIHRoZW4gbWF4X2FsYXJtX3RpbWUgOj0gVGltZV9ucy5tYXggKGF0IHBvb2wgIWN1cnJlbnQpICFtYXhfYWxhcm1fdGltZTtcbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgIGRvbmU7XG4gICAgICAhbWF4X2FsYXJtX3RpbWVcbiAgICA7O1xuXG4gICAgbGV0IG1pbl9hbGFybV90aW1lIHBvb2wgZmlyc3QgfndpdGhfa2V5ID1cbiAgICAgIGxldCBtaW5fYWxhcm1fdGltZSA9IHJlZiBUaW1lX25zLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlIGluXG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICAoKiBUaGUgW2tleV0gY29tcGFyaXNvbiBpcyBuZWNlc3NhcnkgZm9yIFttYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxdIGJlY2F1c2VcbiAgICAgICAgICAgbWF4IHRpbWUgcGVyIGludGVydmFsIGlzIG5vdCB0aGUgc2FtZSBhcyBtYXggdGltZSBnbG9iYWxseS5cblxuICAgICAgICAgICBUaGlzIGlzIG5vdCBzbyBmb3IgW21pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF0sIHNvIHRoaXMgY2FuIHBvdGVudGlhbGx5XG4gICAgICAgICAgIGJlIHNpbXBsaWZpZWQuXG5cbiAgICAgICAgICAgUHJvYmFibHkgYSBiZXR0ZXIgY2hhbmdlIHdvdWxkIGJlIHRvIHNpbXBseSB0cmFuc2ZlciB0aGUgZXZlbnRzIHRvIHRoZVxuICAgICAgICAgICBcImZpcmVkXCIgY29sbGVjdGlvbiAoYW5kIHJlbmFtZSBpdCB0byBcImFib3V0IHRvIGZpcmVcIiksIHdoaWNoIGlzIHNvcnRlZCBieSB0aW1lLFxuICAgICAgICAgICBzbyBnZXR0aW5nIHRoZSBmaXJzdCBlbGVtZW50IGZyb20gdGhhdCBjb2xsZWN0aW9uIGlzIGVmZmljaWVudC5cbiAgICAgICAgKilcbiAgICAgICAgaWYgS2V5LmVxdWFsIChrZXkgcG9vbCAhY3VycmVudCkgd2l0aF9rZXlcbiAgICAgICAgdGhlbiBtaW5fYWxhcm1fdGltZSA6PSBUaW1lX25zLm1pbiAoYXQgcG9vbCAhY3VycmVudCkgIW1pbl9hbGFybV90aW1lO1xuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZTtcbiAgICAgICFtaW5fYWxhcm1fdGltZVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBMZXZlbCA9IHN0cnVjdFxuICAgICgqKiBGb3IgZ2l2ZW4gbGV2ZWwsIG9uZSBjYW4gYnJlYWsgdGhlIGJpdHMgaW50byBhIGtleSBpbnRvIHRocmVlIHJlZ2lvbnM6XG5cbiAgICAgICAge3ZcbiAgICAgICAgIHwgaGlnaGVyIGxldmVscyB8IHRoaXMgbGV2ZWwgfCBsb3dlciBsZXZlbHMgfFxuICAgICAgICB2fVxuXG4gICAgICAgIFwiTG93ZXIgbGV2ZWxzXCIgaXMgW2JpdHNfcGVyX3Nsb3RdIGJpdHMgd2lkZS4gIFwiVGhpcyBsZXZlbFwiIGlzIFtiaXRzXSB3aWRlLiAqKVxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7ICgqIFRoZSBbaW5kZXhdIGluIHRoZSB0aW1pbmcgd2hlZWwncyBhcnJheSBvZiBsZXZlbHMgd2hlcmUgdGhpcyBsZXZlbCBpcy4gKilcbiAgICAgICAgaW5kZXggOiBpbnRcbiAgICAgIDsgKCogSG93IG1hbnkgW2JpdHNdIHRoaXMgbGV2ZWwgaXMgcmVzcG9uc2libGUgZm9yLiAqKVxuICAgICAgICBiaXRzIDogTnVtX2tleV9iaXRzLnRcbiAgICAgIDsgKCogW3Nsb3RzX21hc2sgPSBTbG90c19tYXNrLmNyZWF0ZSB+bGV2ZWxfYml0czp0LmJpdHNdLiAqKVxuICAgICAgICBzbG90c19tYXNrIDogU2xvdHNfbWFzay50XG4gICAgICA7ICgqIFtiaXRzX3Blcl9zbG90XSBpcyBob3cgbWFueSBiaXRzIGVhY2ggc2xvdCBkaXN0aW5ndWlzaGVzLCBhbmQgaXMgdGhlIHN1bSBvZiBvZlxuICAgICAgICAgICB0aGUgW2JpdHNdIG9mIGFsbCB0aGUgbG93ZXIgbGV2ZWxzLiAqKVxuICAgICAgICBiaXRzX3Blcl9zbG90IDogTnVtX2tleV9iaXRzLnRcbiAgICAgIDsga2V5c19wZXJfc2xvdCA6IEtleS5TcGFuLnRcbiAgICAgIDsgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA6IE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sudFxuICAgICAgOyAoKiBbZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5ID0ga2V5c19wZXJfc2xvdCAqIEFycmF5Lmxlbmd0aCBzbG90cyAtIDFdICopXG4gICAgICAgIGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleSA6IEtleS5TcGFuLnRcbiAgICAgIDsgKCogW2xlbmd0aF0gaXMgdGhlIG51bWJlciBvZiBlbHRzIGN1cnJlbnRseSBpbiB0aGlzIGxldmVsLiAqKVxuICAgICAgICBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgICAgOyAoKiBBbGwgZWxlbWVudHMgYXQgdGhpcyBsZXZlbCBoYXZlIHRoZWlyIFtrZXldIHNhdGlzZnkgW21pbl9hbGxvd2VkX2tleSA8PSBrZXkgPD1cbiAgICAgICAgICAgbWF4X2FsbG93ZWRfa2V5XS4gIEFsc28sIFttaW5fYWxsb3dlZF9rZXldIGlzIGEgbXVsdGlwbGUgb2YgW2tleXNfcGVyX3Nsb3RdLiAqKVxuICAgICAgICBtdXRhYmxlIG1pbl9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7IG11dGFibGUgbWF4X2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgKCogW3Nsb3RzXSBob2xkcyB0aGUgKHBvc3NpYmx5IG51bGwpIHBvaW50ZXJzIHRvIHRoZSBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3RzXG4gICAgICAgICAgIG9mIGVsdHMuICBbQXJyYXkubGVuZ3RoIHNsb3RzID0gMSBsc2wgYml0c10uICopXG4gICAgICAgIHNsb3RzIDogKCdhIEludGVybmFsX2VsdC50IGFycmF5W0BzZXhwLm9wYXF1ZV0pXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IHNsb3QgdCB+a2V5ID0gS2V5LnNsb3Qga2V5IH5iaXRzX3Blcl9zbG90OnQuYml0c19wZXJfc2xvdCB+c2xvdHNfbWFzazp0LnNsb3RzX21hc2tcbiAgICBsZXQgbmV4dF9zbG90IHQgc2xvdCA9IFNsb3RzX21hc2submV4dF9zbG90IHQuc2xvdHNfbWFzayBzbG90XG5cbiAgICBsZXQgbWluX2tleV9pbl9zYW1lX3Nsb3QgdCB+a2V5ID1cbiAgICAgIEtleS5taW5fa2V5X2luX3NhbWVfc2xvdCBrZXkgdC5taW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgOztcblxuICAgIGxldCBjb21wdXRlX21pbl9hbGxvd2VkX2tleSB0IH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSA9XG4gICAgICAoKiBUaGlzIGNvbXB1dGF0aW9uIGVuc3VyZXMgdGhhdCBbdF0ncyBbbWluX2FsbG93ZWRfa2V5XSBpcyBhcyBsYXJnZSBhcyBwb3NzaWJsZVxuICAgICAgICAgc3ViamVjdCB0byB0aGUgY29uc3RyYWludCB0aGF0IHRoZXJlIGlzIG5vIGludGVyLWxldmVsIGdhcC4gKilcbiAgICAgIGlmIEtleS5lcXVhbCBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSBLZXkubWF4X3ZhbHVlXG4gICAgICB0aGVuIEtleS5tYXhfdmFsdWVcbiAgICAgIGVsc2UgbWluX2tleV9pbl9zYW1lX3Nsb3QgdCB+a2V5OihLZXkuc3VjYyBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSlcbiAgICA7O1xuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7IG11dGFibGUgcG9vbCA6ICdhIEludGVybmFsX2VsdC5Qb29sLnRcbiAgICA7ICgqIFttaW5fZWx0XSBpcyBlaXRoZXIgbnVsbCBvciBhbiBlbGVtZW50IHdob3NlIGtleSBpcyBbZWx0X2tleV9sb3dlcl9ib3VuZF0uICopXG4gICAgICBtdXRhYmxlIG1pbl9lbHQgOiAnYSBJbnRlcm5hbF9lbHQudFxuICAgIDsgKCogQWxsIGVsZW1lbnRzIGluIHRoZSBwcmlvcml0eSBxdWV1ZSBoYXZlIHRoZWlyIGtleSBbPj0gZWx0X2tleV9sb3dlcl9ib3VuZF0uICopXG4gICAgICBtdXRhYmxlIGVsdF9rZXlfbG93ZXJfYm91bmQgOiBLZXkudFxuICAgIDsgbGV2ZWxzIDogJ2EgTGV2ZWwudCBhcnJheVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgcHJpb3JpdHlfcXVldWUgPSAnYSB0XG5cbiAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEV4dGVybmFsX2VsdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgbnVsbCA9IEV4dGVybmFsX2VsdC5udWxsXG4gICAgbGV0IGF0IHAgdCA9IEludGVybmFsX2VsdC5hdCBwLnBvb2wgKEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcC5wb29sIHQpXG4gICAgbGV0IGtleSBwIHQgPSBJbnRlcm5hbF9lbHQua2V5IHAucG9vbCAoSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwLnBvb2wgdClcbiAgICBsZXQgdmFsdWUgcCB0ID0gSW50ZXJuYWxfZWx0LnZhbHVlIHAucG9vbCAoSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwLnBvb2wgdClcbiAgZW5kXG5cbiAgbGV0IHNleHBfb2ZfdF9pbnRlcm5hbCA9IHNleHBfb2ZfdFxuICBsZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuICBsZXQgbnVtX2xldmVscyB0ID0gQXJyYXkubGVuZ3RoIHQubGV2ZWxzXG4gIGxldCBtaW5fYWxsb3dlZF9rZXkgdCA9IExldmVsLm1pbl9hbGxvd2VkX2tleSB0LmxldmVscy4oMClcbiAgbGV0IG1heF9hbGxvd2VkX2tleSB0ID0gTGV2ZWwubWF4X2FsbG93ZWRfa2V5IHQubGV2ZWxzLihudW1fbGV2ZWxzIHQgLSAxKVxuXG4gIGxldCBpbnRlcm5hbF9pdGVyIHQgfmYgPVxuICAgIGlmIHQubGVuZ3RoID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBsZXZlbHMgPSB0LmxldmVscyBpblxuICAgICAgZm9yIGxldmVsX2luZGV4ID0gMCB0byBBcnJheS5sZW5ndGggbGV2ZWxzIC0gMSBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSBsZXZlbHMuKGxldmVsX2luZGV4KSBpblxuICAgICAgICBpZiBsZXZlbC5sZW5ndGggPiAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICAgICAgZm9yIHNsb3RfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBzbG90cyAtIDEgZG9cbiAgICAgICAgICAgIGxldCBlbHQgPSBzbG90cy4oc2xvdF9pbmRleCkgaW5cbiAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0KSB0aGVuIEludGVybmFsX2VsdC5pdGVyIHBvb2wgZWx0IH5mXG4gICAgICAgICAgZG9uZSlcbiAgICAgIGRvbmUpXG4gIDs7XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9IGludGVybmFsX2l0ZXIgdCB+ZjooZiA6IF8gRWx0LnQgLT4gdW5pdCA6PiBfIEludGVybmFsX2VsdC50IC0+IHVuaXQpXG5cbiAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHsga2V5IDogS2V5LnRcbiAgICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtaW5fYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyBtYXhfYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyBlbHRzIDogJ2EgRWx0LnQgbGlzdFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBwcmV0dHkgdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICB7IFByZXR0eS5taW5fYWxsb3dlZF9rZXkgPSBtaW5fYWxsb3dlZF9rZXkgdFxuICAgIDsgbWF4X2FsbG93ZWRfa2V5ID0gbWF4X2FsbG93ZWRfa2V5IHRcbiAgICA7IGVsdHMgPVxuICAgICAgICAobGV0IHIgPSByZWYgW10gaW5cbiAgICAgICAgIGludGVybmFsX2l0ZXIgdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICByXG4gICAgICAgICAgIDo9IHsgUHJldHR5LkVsdC5rZXkgPSBJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0XG4gICAgICAgICAgICAgIDsgdmFsdWUgPSBJbnRlcm5hbF9lbHQudmFsdWUgcG9vbCBlbHRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6OiAhcik7XG4gICAgICAgICBMaXN0LnJldiAhcilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgbWF0Y2ggIXNleHBfb2ZfdF9zdHlsZSB3aXRoXG4gICAgfCBgSW50ZXJuYWwgLT4gWyVzZXhwICh0IDogYSB0X2ludGVybmFsKV1cbiAgICB8IGBQcmV0dHkgLT4gWyVzZXhwIChwcmV0dHkgdCA6IGEgUHJldHR5LnQpXVxuICA7O1xuXG4gIGxldCBjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleSB+bGV2ZWxfYml0cyB+Yml0c19wZXJfc2xvdCA9XG4gICAgbGV0IGJpdHMgPSBOdW1fa2V5X2JpdHMuKCArICkgbGV2ZWxfYml0cyBiaXRzX3Blcl9zbG90IGluXG4gICAgaWYgTnVtX2tleV9iaXRzLmVxdWFsIGJpdHMgTnVtX2tleV9iaXRzLm1heF92YWx1ZVxuICAgIHRoZW4gS2V5LlNwYW4ubWF4X3ZhbHVlXG4gICAgZWxzZSBLZXkuU3Bhbi5wcmVkIChLZXkubnVtX2tleXMgYml0cylcbiAgOztcblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgOiB1bml0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBsZXZlbF9pbnZhcmlhbnQgbGV2ZWwgPVxuICAgICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIGxldmVsIFslc2V4cF9vZjogXyBMZXZlbC50XSAoZnVuICgpIC0+XG4gICAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIGxldmVsIGYgaW5cbiAgICAgICAgTGV2ZWwuRmllbGRzLml0ZXJcbiAgICAgICAgICB+aW5kZXg6KGNoZWNrIChmdW4gaW5kZXggLT4gYXNzZXJ0IChpbmRleCA+PSAwKSkpXG4gICAgICAgICAgfmJpdHM6KGNoZWNrIChmdW4gYml0cyAtPiBhc3NlcnQgKE51bV9rZXlfYml0cy4oID4gKSBiaXRzIE51bV9rZXlfYml0cy56ZXJvKSkpXG4gICAgICAgICAgfnNsb3RzX21hc2s6XG4gICAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAgIChbJXRlc3RfcmVzdWx0OiBTbG90c19tYXNrLnRdXG4gICAgICAgICAgICAgICAgICB+ZXhwZWN0OihTbG90c19tYXNrLmNyZWF0ZSB+bGV2ZWxfYml0czpsZXZlbC5iaXRzKSkpXG4gICAgICAgICAgfmJpdHNfcGVyX3Nsb3Q6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBiaXRzX3Blcl9zbG90IC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKE51bV9rZXlfYml0cy4oID49ICkgYml0c19wZXJfc2xvdCBOdW1fa2V5X2JpdHMuemVybykpKVxuICAgICAgICAgIH5rZXlzX3Blcl9zbG90OlxuICAgICAgICAgICAgKGNoZWNrIChmdW4ga2V5c19wZXJfc2xvdCAtPlxuICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAga2V5c19wZXJfc2xvdFxuICAgICAgICAgICAgICAgICB+ZXhwZWN0OihLZXkubnVtX2tleXMgbGV2ZWwuYml0c19wZXJfc2xvdCkpKVxuICAgICAgICAgIH5taW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay5lcXVhbFxuICAgICAgICAgICAgICAgICAgIG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICAgICAgICAgICAgICAgICAoTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay5jcmVhdGUgfmJpdHNfcGVyX3Nsb3Q6bGV2ZWwuYml0c19wZXJfc2xvdCkpKSlcbiAgICAgICAgICB+ZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5OlxuICAgICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgICAoWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgIChjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgICAgICB+bGV2ZWxfYml0czpsZXZlbC5iaXRzXG4gICAgICAgICAgICAgICAgICAgICAgIH5iaXRzX3Blcl9zbG90OmxldmVsLmJpdHNfcGVyX3Nsb3QpKSlcbiAgICAgICAgICB+bGVuZ3RoOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBsZW5ndGhcbiAgICAgICAgICAgICAgICAgPSBBcnJheS5mb2xkIGxldmVsLnNsb3RzIH5pbml0OjAgfmY6KGZ1biBuIGVsdCAtPlxuICAgICAgICAgICAgICAgICAgIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICAgICAgICAgICAgICAgICAgIHRoZW4gblxuICAgICAgICAgICAgICAgICAgIGVsc2UgbiArIEludGVybmFsX2VsdC5sZW5ndGggcG9vbCBlbHQpKSkpXG4gICAgICAgICAgfm1pbl9hbGxvd2VkX2tleTpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG1pbl9hbGxvd2VkX2tleSAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIG1pbl9hbGxvd2VkX2tleSBLZXkuemVybyk7XG4gICAgICAgICAgICAgICBpZiBLZXkuKCA8ICkgbWluX2FsbG93ZWRfa2V5IEtleS5tYXhfdmFsdWVcbiAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAgICAoS2V5LnJlbSBtaW5fYWxsb3dlZF9rZXkgbGV2ZWwua2V5c19wZXJfc2xvdClcbiAgICAgICAgICAgICAgICAgICB+ZXhwZWN0OktleS5TcGFuLnplcm8pKVxuICAgICAgICAgIH5tYXhfYWxsb3dlZF9rZXk6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBtYXhfYWxsb3dlZF9rZXkgLT5cbiAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS50XVxuICAgICAgICAgICAgICAgICBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAoS2V5LmFkZF9jbGFtcF90b19tYXhcbiAgICAgICAgICAgICAgICAgICAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgICAgICBsZXZlbC5kaWZmX21heF9taW5fYWxsb3dlZF9rZXkpKSlcbiAgICAgICAgICB+c2xvdHM6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBzbG90cyAtPlxuICAgICAgICAgICAgICAgQXJyYXkuaXRlciBzbG90cyB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdClcbiAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgSW50ZXJuYWxfZWx0LmludmFyaWFudCBwb29sIGludmFyaWFudF9hIGVsdDtcbiAgICAgICAgICAgICAgICAgICBJbnRlcm5hbF9lbHQuaXRlciBwb29sIGVsdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KSBsZXZlbC5taW5fYWxsb3dlZF9rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA8PSApIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KSBsZXZlbC5tYXhfYWxsb3dlZF9rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KSB0LmVsdF9rZXlfbG93ZXJfYm91bmQpO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChJbnRlcm5hbF9lbHQubGV2ZWxfaW5kZXggcG9vbCBlbHQgPSBsZXZlbC5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICBpbnZhcmlhbnRfYSAoSW50ZXJuYWxfZWx0LnZhbHVlIHBvb2wgZWx0KSkpKSkpKVxuICAgIGluXG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRfaW50ZXJuYWxdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChtaW5fYWxsb3dlZF9rZXkgdCkgS2V5Lnplcm8pO1xuICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChtYXhfYWxsb3dlZF9rZXkgdCkgKG1pbl9hbGxvd2VkX2tleSB0KSk7XG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+bGVuZ3RoOihjaGVjayAoZnVuIGxlbmd0aCAtPiBhc3NlcnQgKGxlbmd0aCA+PSAwKSkpXG4gICAgICAgIH5wb29sOihjaGVjayAoSW50ZXJuYWxfZWx0LlBvb2wuaW52YXJpYW50IGlnbm9yZSkpXG4gICAgICAgIH5taW5fZWx0OlxuICAgICAgICAgIChjaGVjayAoZnVuIGVsdF8gLT5cbiAgICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdF8pXG4gICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICBhc3NlcnQgKEludGVybmFsX2VsdC5pc192YWxpZCB0LnBvb2wgZWx0Xyk7XG4gICAgICAgICAgICAgICBhc3NlcnQgKEtleS5lcXVhbCB0LmVsdF9rZXlfbG93ZXJfYm91bmQgKEludGVybmFsX2VsdC5rZXkgdC5wb29sIGVsdF8pKSkpKVxuICAgICAgICB+ZWx0X2tleV9sb3dlcl9ib3VuZDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBlbHRfa2V5X2xvd2VyX2JvdW5kIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIGVsdF9rZXlfbG93ZXJfYm91bmQgKG1pbl9hbGxvd2VkX2tleSB0KSk7XG4gICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA8PSApIGVsdF9rZXlfbG93ZXJfYm91bmQgKG1heF9hbGxvd2VkX2tleSB0KSk7XG4gICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCB0Lm1pbl9lbHQpXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuZXF1YWwgZWx0X2tleV9sb3dlcl9ib3VuZCAoSW50ZXJuYWxfZWx0LmtleSB0LnBvb2wgdC5taW5fZWx0KSkpKVxuICAgICAgICB+bGV2ZWxzOlxuICAgICAgICAgIChjaGVjayAoZnVuIGxldmVscyAtPlxuICAgICAgICAgICAgIGFzc2VydCAobnVtX2xldmVscyB0ID4gMCk7XG4gICAgICAgICAgICAgQXJyYXkuaXRlcmkgbGV2ZWxzIH5mOihmdW4gbGV2ZWxfaW5kZXggbGV2ZWwgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAobGV2ZWxfaW5kZXggPSBMZXZlbC5pbmRleCBsZXZlbCk7XG4gICAgICAgICAgICAgICBsZXZlbF9pbnZhcmlhbnQgbGV2ZWw7XG4gICAgICAgICAgICAgICBpZiBsZXZlbF9pbmRleCA+IDBcbiAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICBsZXQgcHJldl9sZXZlbCA9IGxldmVscy4obGV2ZWxfaW5kZXggLSAxKSBpblxuICAgICAgICAgICAgICAgICBsZXQgbW9kdWxlIEwgPSBMZXZlbCBpblxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICAgIChMLmtleXNfcGVyX3Nsb3QgbGV2ZWwpXG4gICAgICAgICAgICAgICAgICAgfmV4cGVjdDooS2V5LlNwYW4uc3VjYyBwcmV2X2xldmVsLmRpZmZfbWF4X21pbl9hbGxvd2VkX2tleSk7XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS50XVxuICAgICAgICAgICAgICAgICAgIGxldmVsLm1pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgICAoTGV2ZWwuY29tcHV0ZV9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgICAgICAgICAgICAgICB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXk6cHJldl9sZXZlbC5tYXhfYWxsb3dlZF9rZXkpKSkpKSlcbiAgOztcblxuICAoKiogW21pbl9lbHRfXSByZXR1cm5zIFtudWxsXSBpZiBpdCBjYW4ndCBmaW5kIHRoZSBkZXNpcmVkIGVsZW1lbnQuICBXZSB3cmFwIGl0IHVwXG4gICAgICBhZnRlcndhcmRzIHRvIHJldHVybiBhbiBbb3B0aW9uXS4gKilcbiAgbGV0IG1pbl9lbHRfIHQgPVxuICAgIGlmIGlzX2VtcHR5IHRcbiAgICB0aGVuIEludGVybmFsX2VsdC5udWxsICgpXG4gICAgZWxzZSBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIHQubWluX2VsdClcbiAgICB0aGVuIHQubWluX2VsdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBtaW5fZWx0X2FscmVhZHlfZm91bmQgPSByZWYgKEludGVybmFsX2VsdC5udWxsICgpKSBpblxuICAgICAgbGV0IG1pbl9rZXlfYWxyZWFkeV9mb3VuZCA9IHJlZiBLZXkubWF4X3ZhbHVlIGluXG4gICAgICBsZXQgbGV2ZWxfaW5kZXggPSByZWYgMCBpblxuICAgICAgbGV0IG51bV9sZXZlbHMgPSBudW1fbGV2ZWxzIHQgaW5cbiAgICAgIHdoaWxlICFsZXZlbF9pbmRleCA8IG51bV9sZXZlbHMgZG9cbiAgICAgICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKCFsZXZlbF9pbmRleCkgaW5cbiAgICAgICAgaWYgS2V5LiggPiApIChMZXZlbC5taW5fYWxsb3dlZF9rZXkgbGV2ZWwpICFtaW5fa2V5X2FscmVhZHlfZm91bmRcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIFdlIGRvbid0IG5lZWQgdG8gY29uc2lkZXIgYW55IG1vcmUgbGV2ZWxzLiAgUXVpdCB0aGUgbG9vcC4gKilcbiAgICAgICAgICBsZXZlbF9pbmRleCA6PSBudW1fbGV2ZWxzXG4gICAgICAgIGVsc2UgaWYgbGV2ZWwubGVuZ3RoID0gMFxuICAgICAgICB0aGVuIGluY3IgbGV2ZWxfaW5kZXhcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogTG9vayBpbiBbbGV2ZWxdLiAqKVxuICAgICAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICAgICAgbGV0IHNsb3RfbWluX2tleSA9XG4gICAgICAgICAgICByZWZcbiAgICAgICAgICAgICAgKExldmVsLm1pbl9rZXlfaW5fc2FtZV9zbG90XG4gICAgICAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgICAgICAgIH5rZXk6KEtleS5tYXggbGV2ZWwubWluX2FsbG93ZWRfa2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgc2xvdCA9IHJlZiAoTGV2ZWwuc2xvdCBsZXZlbCB+a2V5OiFzbG90X21pbl9rZXkpIGluXG4gICAgICAgICAgKCogRmluZCB0aGUgZmlyc3Qgbm9uZW1wdHkgc2xvdCB3aXRoIGEgc21hbGwgZW5vdWdoIFtzbG90X21pbl9rZXldLiAqKVxuICAgICAgICAgIHdoaWxlXG4gICAgICAgICAgICBJbnRlcm5hbF9lbHQuaXNfbnVsbCBzbG90cy4oIXNsb3QpXG4gICAgICAgICAgICAmJiBLZXkuKCA8ICkgIXNsb3RfbWluX2tleSAhbWluX2tleV9hbHJlYWR5X2ZvdW5kXG4gICAgICAgICAgZG9cbiAgICAgICAgICAgIHNsb3QgOj0gTGV2ZWwubmV4dF9zbG90IGxldmVsICFzbG90O1xuICAgICAgICAgICAgc2xvdF9taW5fa2V5IDo9IEtleS5hZGQgIXNsb3RfbWluX2tleSBsZXZlbC5rZXlzX3Blcl9zbG90XG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBsZXQgZmlyc3QgPSBzbG90cy4oIXNsb3QpIGluXG4gICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBmaXJzdClcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICgqIFZpc2l0IGFsbCBvZiB0aGUgZWx0cyBpbiB0aGlzIHNsb3QgYW5kIGZpbmQgb25lIHdpdGggbWluaW11bSBrZXkuICopXG4gICAgICAgICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgICAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICAgICAgICBsZXQgY3VycmVudF9rZXkgPSBJbnRlcm5hbF9lbHQua2V5IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgICAgICAgaWYgS2V5LiggPD0gKSBjdXJyZW50X2tleSAhbWluX2tleV9hbHJlYWR5X2ZvdW5kXG4gICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgIG1pbl9lbHRfYWxyZWFkeV9mb3VuZCA6PSAhY3VycmVudDtcbiAgICAgICAgICAgICAgICBtaW5fa2V5X2FscmVhZHlfZm91bmQgOj0gY3VycmVudF9rZXkpO1xuICAgICAgICAgICAgICBsZXQgbmV4dCA9IEludGVybmFsX2VsdC5uZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgICAgICAgKCogSWYgWyFsZXZlbF9pbmRleCA9IDBdIHRoZW4gYWxsIGVsdHMgaW4gdGhpcyBzbG90IGhhdmUgdGhlIHNhbWUgW2tleV0sXG4gICAgICAgICAgICAgICAgIGkuZS4gWyFzbG90X21pbl9rZXldLiAgU28sIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sgYW55IGVsZW1lbnRzIGFmdGVyXG4gICAgICAgICAgICAgICAgIFtmaXJzdF0uICBUaGlzIGlzIGEgdXNlZnVsIHNob3J0IGN1dCBpbiB0aGUgY29tbW9uIGNhc2UgdGhhdCB0aGVyZSBhcmVcbiAgICAgICAgICAgICAgICAgbXVsdGlwbGUgZWxlbWVudHMgaW4gdGhlIHNhbWUgbWluIHNsb3QgaW4gbGV2ZWwgMC4gKilcbiAgICAgICAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHx8ICFsZXZlbF9pbmRleCA9IDBcbiAgICAgICAgICAgICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgICAgICAgICAgICBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgICAgICAgZG9uZSk7XG4gICAgICAgICAgKCogRmluaXNoZWQgbG9va2luZyBpbiBbbGV2ZWxdLiAgTW92ZSB1cCB0byB0aGUgbmV4dCBsZXZlbC4gKilcbiAgICAgICAgICBpbmNyIGxldmVsX2luZGV4KVxuICAgICAgZG9uZTtcbiAgICAgIHQubWluX2VsdCA8LSAhbWluX2VsdF9hbHJlYWR5X2ZvdW5kO1xuICAgICAgdC5lbHRfa2V5X2xvd2VyX2JvdW5kIDwtICFtaW5fa2V5X2FscmVhZHlfZm91bmQ7XG4gICAgICB0Lm1pbl9lbHQpXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9hZGRfZWx0X2tleV9vdXRfb2ZfYm91bmRzIHQga2V5ID1cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJQcmlvcml0eV9xdWV1ZS5hZGRfZWx0IGtleSBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgICAoa2V5IDogS2V5LnQpXG4gICAgICAgICAgKG1pbl9hbGxvd2VkX2tleSB0IDogS2V5LnQpXG4gICAgICAgICAgKG1heF9hbGxvd2VkX2tleSB0IDogS2V5LnQpXG4gICAgICAgICAgfnByaW9yaXR5X3F1ZXVlOih0IDogXyB0KV1cbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9sZXZlbF9ib3VuZHMga2V5IGxldmVsID1cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJQcmlvcml0eV9xdWV1ZS5hZGRfZWx0IGtleSBvdXQgb2YgbGV2ZWwgYm91bmRzXCIgKGtleSA6IEtleS50KSAobGV2ZWwgOiBfIExldmVsLnQpXVxuICA7O1xuXG4gIGxldCBhZGRfZWx0IHQgZWx0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBrZXkgPSBJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0IGluXG4gICAgaWYgbm90IChLZXkuKCA+PSApIGtleSAobWluX2FsbG93ZWRfa2V5IHQpICYmIEtleS4oIDw9ICkga2V5IChtYXhfYWxsb3dlZF9rZXkgdCkpXG4gICAgdGhlbiByYWlzZV9hZGRfZWx0X2tleV9vdXRfb2ZfYm91bmRzIHQga2V5O1xuICAgICgqIEZpbmQgdGhlIGxvd2VzdCBsZXZlbCB0aGF0IHdpbGwgaG9sZCBbZWx0XS4gKilcbiAgICBsZXQgbGV2ZWxfaW5kZXggPVxuICAgICAgbGV0IGxldmVsX2luZGV4ID0gcmVmIDAgaW5cbiAgICAgIHdoaWxlIEtleS4oID4gKSBrZXkgKExldmVsLm1heF9hbGxvd2VkX2tleSB0LmxldmVscy4oIWxldmVsX2luZGV4KSkgZG9cbiAgICAgICAgaW5jciBsZXZlbF9pbmRleFxuICAgICAgZG9uZTtcbiAgICAgICFsZXZlbF9pbmRleFxuICAgIGluXG4gICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKGxldmVsX2luZGV4KSBpblxuICAgIGlmIG5vdCAoS2V5LiggPj0gKSBrZXkgbGV2ZWwubWluX2FsbG93ZWRfa2V5ICYmIEtleS4oIDw9ICkga2V5IGxldmVsLm1heF9hbGxvd2VkX2tleSlcbiAgICB0aGVuIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9sZXZlbF9ib3VuZHMga2V5IGxldmVsO1xuICAgIGxldmVsLmxlbmd0aCA8LSBsZXZlbC5sZW5ndGggKyAxO1xuICAgIEludGVybmFsX2VsdC5zZXRfbGV2ZWxfaW5kZXggcG9vbCBlbHQgbGV2ZWxfaW5kZXg7XG4gICAgbGV0IHNsb3QgPSBMZXZlbC5zbG90IGxldmVsIH5rZXkgaW5cbiAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgIGxldCBmaXJzdCA9IHNsb3RzLihzbG90KSBpblxuICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZmlyc3QpXG4gICAgdGhlbiBJbnRlcm5hbF9lbHQuaW5zZXJ0X2F0X2VuZCBwb29sIGZpcnN0IH50b19hZGQ6ZWx0XG4gICAgZWxzZSAoXG4gICAgICBzbG90cy4oc2xvdCkgPC0gZWx0O1xuICAgICAgSW50ZXJuYWxfZWx0LmxpbmtfdG9fc2VsZiBwb29sIGVsdClcbiAgOztcblxuICBsZXQgaW50ZXJuYWxfYWRkX2VsdCB0IGVsdCA9XG4gICAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgdC5wb29sIGVsdCBpblxuICAgIGlmIEtleS4oIDwgKSBrZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kXG4gICAgdGhlbiAoXG4gICAgICB0Lm1pbl9lbHQgPC0gZWx0O1xuICAgICAgdC5lbHRfa2V5X2xvd2VyX2JvdW5kIDwtIGtleSk7XG4gICAgYWRkX2VsdCB0IGVsdDtcbiAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX2dvdF9pbnZhbGlkX2tleSB0IGtleSA9XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLmFkZF9hdF9pbnRlcnZhbF9udW0gZ290IGludmFsaWQgaW50ZXJ2YWwgbnVtXCJcbiAgICAgICAgICB+aW50ZXJ2YWxfbnVtOihrZXkgOiBLZXkudClcbiAgICAgICAgICB+bWluX2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtOihtaW5fYWxsb3dlZF9rZXkgdCA6IEtleS50KVxuICAgICAgICAgIH5tYXhfYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW06KG1heF9hbGxvd2VkX2tleSB0IDogS2V5LnQpXVxuICA7O1xuXG4gIGxldCBlbnN1cmVfdmFsaWRfa2V5IHQgfmtleSA9XG4gICAgaWYgS2V5LiggPCApIGtleSAobWluX2FsbG93ZWRfa2V5IHQpIHx8IEtleS4oID4gKSBrZXkgKG1heF9hbGxvd2VkX2tleSB0KVxuICAgIHRoZW4gcmFpc2VfZ290X2ludmFsaWRfa2V5IHQga2V5XG4gIDs7XG5cbiAgbGV0IGludGVybmFsX2FkZCB0IH5rZXkgfmF0IHZhbHVlID1cbiAgICBlbnN1cmVfdmFsaWRfa2V5IHQgfmtleTtcbiAgICBpZiBJbnRlcm5hbF9lbHQuUG9vbC5pc19mdWxsIHQucG9vbCB0aGVuIHQucG9vbCA8LSBJbnRlcm5hbF9lbHQuUG9vbC5ncm93IHQucG9vbDtcbiAgICBsZXQgZWx0ID0gSW50ZXJuYWxfZWx0LmNyZWF0ZSB0LnBvb2wgfmtleSB+YXQgfnZhbHVlIH5sZXZlbF9pbmRleDooLTEpIGluXG4gICAgaW50ZXJuYWxfYWRkX2VsdCB0IGVsdDtcbiAgICBlbHRcbiAgOztcblxuICAoKiogW3JlbW92ZV9vcl9yZV9hZGRfZWx0c10gdmlzaXRzIGVhY2ggZWxlbWVudCBpbiB0aGUgY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0XG4gICAgICBbZmlyc3RdLiAgSWYgdGhlIGVsZW1lbnQncyBrZXkgaXMgWz49IHRfbWluX2FsbG93ZWRfa2V5XSwgdGhlbiBpdCBhZGRzIHRoZSBlbGVtZW50XG4gICAgICBiYWNrIGF0IGEgbG93ZXIgbGV2ZWwuICBJZiBub3QsIHRoZW4gaXQgY2FsbHMgW2hhbmRsZV9yZW1vdmVkXSBhbmQgW2ZyZWVdcyB0aGVcbiAgICAgIGVsZW1lbnQuICopXG4gIGxldCByZW1vdmVfb3JfcmVfYWRkX2VsdHMgdCAobGV2ZWwgOiBfIExldmVsLnQpIGZpcnN0IH50X21pbl9hbGxvd2VkX2tleSB+aGFuZGxlX3JlbW92ZWRcbiAgICA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAoKiBXZSBleHRyYWN0IFtuZXh0XSBmcm9tIFtjdXJyZW50XSBmaXJzdCwgYmVjYXVzZSB3ZSB3aWxsIG1vZGlmeSBvciBbZnJlZV1cbiAgICAgICAgIFtjdXJyZW50XSBiZWZvcmUgY29udGludWluZyB0aGUgbG9vcC4gKilcbiAgICAgIGxldCBuZXh0ID0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgbGV2ZWwubGVuZ3RoIDwtIGxldmVsLmxlbmd0aCAtIDE7XG4gICAgICBpZiBLZXkuKCA+PSApIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgIWN1cnJlbnQpIHRfbWluX2FsbG93ZWRfa2V5XG4gICAgICB0aGVuIGFkZF9lbHQgdCAhY3VycmVudFxuICAgICAgZWxzZSAoXG4gICAgICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgICAgICAgaGFuZGxlX3JlbW92ZWQgKEludGVybmFsX2VsdC50b19leHRlcm5hbCAhY3VycmVudCk7XG4gICAgICAgIEludGVybmFsX2VsdC5mcmVlIHBvb2wgIWN1cnJlbnQpO1xuICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICBkb25lXG4gIDs7XG5cbiAgKCoqIFtpbmNyZWFzZV9sZXZlbF9taW5fYWxsb3dlZF9rZXldIGluY3JlYXNlcyB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgW2xldmVsXSB0byBhc1xuICAgICAgbGFyZ2UgYSB2YWx1ZSBhcyBwb3NzaWJsZSwgYnV0IG5vIG1vcmUgdGhhbiBbbWF4X2xldmVsX21pbl9hbGxvd2VkX2tleV0uXG4gICAgICBbdF9taW5fYWxsb3dlZF9rZXldIGlzIHRoZSBtaW5pbXVtIGFsbG93ZWQga2V5IGZvciB0aGUgZW50aXJlIHRpbWluZyB3aGVlbC4gIEFzXG4gICAgICBlbGVtZW50cyBhcmUgZW5jb3VudGVyZWQsIHRoZXkgYXJlIHJlbW92ZWQgZnJvbSB0aGUgdGltaW5nIHdoZWVsIGlmIHRoZWlyIGtleSBpc1xuICAgICAgc21hbGxlciB0aGFuIFt0X21pbl9hbGxvd2VkX2tleV0sIG9yIGFkZGVkIGF0IGEgbG93ZXIgbGV2ZWwgaWYgbm90LiAqKVxuICBsZXQgaW5jcmVhc2VfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgIHRcbiAgICAgICAgKGxldmVsIDogXyBMZXZlbC50KVxuICAgICAgICB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgfnRfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgIH5oYW5kbGVfcmVtb3ZlZFxuICAgID1cbiAgICBsZXQgZGVzaXJlZF9taW5fYWxsb3dlZF9rZXkgPVxuICAgICAgTGV2ZWwuY29tcHV0ZV9taW5fYWxsb3dlZF9rZXkgbGV2ZWwgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5XG4gICAgaW5cbiAgICAoKiBXZSByZXF1aXJlIHRoYXQgW21vZCBsZXZlbC5taW5fYWxsb3dlZF9rZXkgbGV2ZWwua2V5c19wZXJfc2xvdCA9IDBdLiAgU28sXG4gICAgICAgd2Ugc3RhcnQgW2xldmVsX21pbl9hbGxvd2VkX2tleV0gd2hlcmUgdGhhdCBpcyB0cnVlLCBhbmQgdGhlbiBpbmNyZWFzZSBpdCBieVxuICAgICAgIFtrZXlzX3Blcl9zbG90XSBlYWNoIGl0ZXJhdGlvbiBvZiB0aGUgbG9vcC4gKilcbiAgICBsZXQgbGV2ZWxfbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgIExldmVsLm1pbl9rZXlfaW5fc2FtZV9zbG90XG4gICAgICAgIGxldmVsXG4gICAgICAgIH5rZXk6XG4gICAgICAgICAgKEtleS5taW5cbiAgICAgICAgICAgICBkZXNpcmVkX21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgIChLZXkubWF4IGxldmVsLm1pbl9hbGxvd2VkX2tleSB0LmVsdF9rZXlfbG93ZXJfYm91bmQpKVxuICAgIGluXG4gICAgbGV0IGxldmVsX21pbl9hbGxvd2VkX2tleSA9IHJlZiBsZXZlbF9taW5fYWxsb3dlZF9rZXkgaW5cbiAgICBsZXQgc2xvdCA9IHJlZiAoTGV2ZWwuc2xvdCBsZXZlbCB+a2V5OiFsZXZlbF9taW5fYWxsb3dlZF9rZXkpIGluXG4gICAgbGV0IGtleXNfcGVyX3Nsb3QgPSBsZXZlbC5rZXlzX3Blcl9zbG90IGluXG4gICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICB3aGlsZSBLZXkuKCA8ICkgIWxldmVsX21pbl9hbGxvd2VkX2tleSBkZXNpcmVkX21pbl9hbGxvd2VkX2tleSBkb1xuICAgICAgaWYgbGV2ZWwubGVuZ3RoID0gMFxuICAgICAgdGhlblxuICAgICAgICAoKiBJZiBubyBlbGVtZW50cyByZW1haW4gYXQgdGhpcyBsZXZlbCwgd2UgY2FuIGp1c3Qgc2V0IFttaW5fYWxsb3dlZF9rZXldIHRvIHRoZVxuICAgICAgICAgICBkZXNpcmVkIHZhbHVlLiAqKVxuICAgICAgICBsZXZlbF9taW5fYWxsb3dlZF9rZXkgOj0gZGVzaXJlZF9taW5fYWxsb3dlZF9rZXlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZmlyc3QgPSBzbG90cy4oIXNsb3QpIGluXG4gICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZmlyc3QpXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHNsb3RzLighc2xvdCkgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKCk7XG4gICAgICAgICAgcmVtb3ZlX29yX3JlX2FkZF9lbHRzIHQgbGV2ZWwgZmlyc3QgfnRfbWluX2FsbG93ZWRfa2V5IH5oYW5kbGVfcmVtb3ZlZCk7XG4gICAgICAgIHNsb3QgOj0gTGV2ZWwubmV4dF9zbG90IGxldmVsICFzbG90O1xuICAgICAgICBsZXZlbF9taW5fYWxsb3dlZF9rZXkgOj0gS2V5LmFkZF9jbGFtcF90b19tYXggIWxldmVsX21pbl9hbGxvd2VkX2tleSBrZXlzX3Blcl9zbG90KVxuICAgIGRvbmU7XG4gICAgbGV2ZWwubWluX2FsbG93ZWRfa2V5IDwtIGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5O1xuICAgIGxldmVsLm1heF9hbGxvd2VkX2tleVxuICAgIDwtIEtleS5hZGRfY2xhbXBfdG9fbWF4IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IGxldmVsLmRpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICA7O1xuXG4gIG1vZHVsZSBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlXG4gICAgICB8IE1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkXG4gIGVuZFxuXG4gIGxldCBpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXkgdCB+a2V5IH5oYW5kbGVfcmVtb3ZlZCA6IEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQudCA9XG4gICAgaWYgS2V5LiggPD0gKSBrZXkgKG1pbl9hbGxvd2VkX2tleSB0KVxuICAgIHRoZW4gTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlXG4gICAgZWxzZSAoXG4gICAgICAoKiBXZSBpbmNyZWFzZSB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgbGV2ZWxzIGluIG9yZGVyIHRvIHJlc3RvcmUgdGhlIGludmFyaWFudFxuICAgICAgICAgdGhhdCB0aGV5IGhhdmUgYXMgbGFyZ2UgYXMgcG9zc2libGUgYSBbbWluX2FsbG93ZWRfa2V5XSwgd2hpbGUgbGVhdmluZyBubyBnYXBzXG4gICAgICAgICBpbiBrZXlzLiAqKVxuICAgICAgbGV0IGxldmVsX2luZGV4ID0gcmVmIDAgaW5cbiAgICAgIGxldCByZXN1bHQgPSByZWYgSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdC5NYXhfYWxsb3dlZF9rZXlfbWF5YmVfY2hhbmdlZCBpblxuICAgICAgbGV0IHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5ID0gcmVmIChLZXkucHJlZCBrZXkpIGluXG4gICAgICBsZXQgbGV2ZWxzID0gdC5sZXZlbHMgaW5cbiAgICAgIGxldCBudW1fbGV2ZWxzID0gbnVtX2xldmVscyB0IGluXG4gICAgICB3aGlsZSAhbGV2ZWxfaW5kZXggPCBudW1fbGV2ZWxzIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IGxldmVscy4oIWxldmVsX2luZGV4KSBpblxuICAgICAgICBsZXQgbWluX2FsbG93ZWRfa2V5X2JlZm9yZSA9IGxldmVsLm1pbl9hbGxvd2VkX2tleSBpblxuICAgICAgICBpbmNyZWFzZV9sZXZlbF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICB0XG4gICAgICAgICAgbGV2ZWxcbiAgICAgICAgICB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXk6IXByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgICAgfnRfbWluX2FsbG93ZWRfa2V5OmtleVxuICAgICAgICAgIH5oYW5kbGVfcmVtb3ZlZDtcbiAgICAgICAgaWYgS2V5LmVxdWFsIChMZXZlbC5taW5fYWxsb3dlZF9rZXkgbGV2ZWwpIG1pbl9hbGxvd2VkX2tleV9iZWZvcmVcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogVGhpcyBsZXZlbCBkaWQgbm90IHNoaWZ0LiAgRG9uJ3Qgc2hpZnQgYW55IGhpZ2hlciBsZXZlbHMuICopXG4gICAgICAgICAgbGV2ZWxfaW5kZXggOj0gbnVtX2xldmVscztcbiAgICAgICAgICByZXN1bHQgOj0gTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBMZXZlbCBbbGV2ZWxfaW5kZXhdIHNoaWZ0ZWQuICBDb25zaWRlciBzaGlmdGluZyBoaWdoZXIgbGV2ZWxzLiAqKVxuICAgICAgICAgIGxldmVsX2luZGV4IDo9ICFsZXZlbF9pbmRleCArIDE7XG4gICAgICAgICAgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgOj0gTGV2ZWwubWF4X2FsbG93ZWRfa2V5IGxldmVsKVxuICAgICAgZG9uZTtcbiAgICAgIGlmIEtleS4oID4gKSBrZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogV2UgaGF2ZSByZW1vdmVkIFt0Lm1pbl9lbHRdIG9yIGl0IHdhcyBhbHJlYWR5IG51bGwsIHNvIGp1c3Qgc2V0IGl0IHRvXG4gICAgICAgICAgIG51bGwuICopXG4gICAgICAgIHQubWluX2VsdCA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKTtcbiAgICAgICAgdC5lbHRfa2V5X2xvd2VyX2JvdW5kIDwtIG1pbl9hbGxvd2VkX2tleSB0KTtcbiAgICAgICFyZXN1bHQpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSA/Y2FwYWNpdHkgP2xldmVsX2JpdHMgKCkgPVxuICAgIGxldCBsZXZlbF9iaXRzID1cbiAgICAgIG1hdGNoIGxldmVsX2JpdHMgd2l0aFxuICAgICAgfCBTb21lIGwgLT4gbFxuICAgICAgfCBOb25lIC0+IExldmVsX2JpdHMuZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IF8sIF8sIGxldmVscyA9XG4gICAgICBMaXN0LmZvbGRpXG4gICAgICAgIGxldmVsX2JpdHNcbiAgICAgICAgfmluaXQ6KE51bV9rZXlfYml0cy56ZXJvLCBLZXkuemVybywgW10pXG4gICAgICAgIH5mOlxuICAgICAgICAgIChmdW5cbiAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAoYml0c19wZXJfc2xvdCwgbWF4X2xldmVsX21pbl9hbGxvd2VkX2tleSwgbGV2ZWxzKVxuICAgICAgICAgICAgKGxldmVsX2JpdHMgOiBOdW1fa2V5X2JpdHMudClcbiAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIGxldCBrZXlzX3Blcl9zbG90ID0gS2V5Lm51bV9rZXlzIGJpdHNfcGVyX3Nsb3QgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleSA9XG4gICAgICAgICAgICAgICAgY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rZXkgfmxldmVsX2JpdHMgfmJpdHNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPSBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLmNyZWF0ZSB+Yml0c19wZXJfc2xvdCBpblxuICAgICAgICAgICAgICBsZXQgbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgICAgICAgICAgICBLZXkubWluX2tleV9pbl9zYW1lX3Nsb3QgbWF4X2xldmVsX21pbl9hbGxvd2VkX2tleSBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBtYXhfYWxsb3dlZF9rZXkgPVxuICAgICAgICAgICAgICAgIEtleS5hZGRfY2xhbXBfdG9fbWF4IG1pbl9hbGxvd2VkX2tleSBkaWZmX21heF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxldmVsID1cbiAgICAgICAgICAgICAgICB7IExldmVsLmluZGV4XG4gICAgICAgICAgICAgICAgOyBiaXRzID0gbGV2ZWxfYml0c1xuICAgICAgICAgICAgICAgIDsgc2xvdHNfbWFzayA9IFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzXG4gICAgICAgICAgICAgICAgOyBiaXRzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAgOyBrZXlzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAgOyBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgICAgICAgICAgICAgOyBkaWZmX21heF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICA7IGxlbmd0aCA9IDBcbiAgICAgICAgICAgICAgICA7IG1pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgIDsgbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgOyBzbG90cyA9XG4gICAgICAgICAgICAgICAgICAgIEFycmF5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5sZW46KEludDYzLnRvX2ludF9leG4gKE51bV9rZXlfYml0cy5wb3cyIGxldmVsX2JpdHMpKVxuICAgICAgICAgICAgICAgICAgICAgIChJbnRlcm5hbF9lbHQubnVsbCAoKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggTnVtX2tleV9iaXRzLiggKyApIGxldmVsX2JpdHMgYml0c19wZXJfc2xvdFxuICAgICAgICAgICAgICAsIEtleS5zdWNjX2NsYW1wX3RvX21heCBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgLCBsZXZlbCA6OiBsZXZlbHMgKSlcbiAgICBpblxuICAgIHsgbGVuZ3RoID0gMFxuICAgIDsgcG9vbCA9IEludGVybmFsX2VsdC5Qb29sLmNyZWF0ZSA/Y2FwYWNpdHkgKClcbiAgICA7IG1pbl9lbHQgPSBJbnRlcm5hbF9lbHQubnVsbCAoKVxuICAgIDsgZWx0X2tleV9sb3dlcl9ib3VuZCA9IEtleS56ZXJvXG4gICAgOyBsZXZlbHMgPSBBcnJheS5vZl9saXN0X3JldiBsZXZlbHNcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1lbSB0IGVsdCA9IEludGVybmFsX2VsdC5leHRlcm5hbF9pc192YWxpZCB0LnBvb2wgZWx0XG5cbiAgbGV0IGludGVybmFsX3JlbW92ZSB0IGVsdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBpZiBJbnRlcm5hbF9lbHQuZXF1YWwgZWx0IHQubWluX2VsdFxuICAgIHRoZW5cbiAgICAgIHQubWluX2VsdCA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKVxuICAgICgqIFdlIGtlZXAgW3QuZWx0X2xvd2VyX2JvdW5kXSBzaW5jZSBpdCBpcyB2YWxpZCBldmVuIHRob3VnaCBbdC5taW5fZWx0XSBpcyBiZWluZ1xuICAgICAgIHJlbW92ZWQuICopO1xuICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4oSW50ZXJuYWxfZWx0LmxldmVsX2luZGV4IHBvb2wgZWx0KSBpblxuICAgIGxldmVsLmxlbmd0aCA8LSBsZXZlbC5sZW5ndGggLSAxO1xuICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgbGV0IHNsb3QgPSBMZXZlbC5zbG90IGxldmVsIH5rZXk6KEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpIGluXG4gICAgbGV0IGZpcnN0ID0gc2xvdHMuKHNsb3QpIGluXG4gICAgaWYgcGh5c19lcXVhbCBlbHQgKEludGVybmFsX2VsdC5uZXh0IHBvb2wgZWx0KVxuICAgIHRoZW4gKCogW2VsdF0gaXMgdGhlIG9ubHkgZWxlbWVudCBpbiB0aGUgc2xvdCAqKVxuICAgICAgc2xvdHMuKHNsb3QpIDwtIEludGVybmFsX2VsdC5udWxsICgpXG4gICAgZWxzZSAoXG4gICAgICBpZiBwaHlzX2VxdWFsIGVsdCBmaXJzdCB0aGVuIHNsb3RzLihzbG90KSA8LSBJbnRlcm5hbF9lbHQubmV4dCBwb29sIGVsdDtcbiAgICAgIEludGVybmFsX2VsdC51bmxpbmsgcG9vbCBlbHQpXG4gIDs7XG5cbiAgbGV0IHJlbW92ZSB0IGVsdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQgZWx0ID0gSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwb29sIGVsdCBpblxuICAgIGludGVybmFsX3JlbW92ZSB0IGVsdDtcbiAgICBJbnRlcm5hbF9lbHQuZnJlZSBwb29sIGVsdFxuICA7O1xuXG4gIGxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgfmhhbmRsZV9maXJlZCB+a2V5IH5ub3cgPVxuICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLigwKSBpblxuICAgIGlmIGxldmVsLmxlbmd0aCA+IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBzbG90ID0gTGV2ZWwuc2xvdCBsZXZlbCB+a2V5IGluXG4gICAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBmaXJzdCA9IHJlZiBzbG90cy4oc2xvdCkgaW5cbiAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgIWZpcnN0KVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBjdXJyZW50ID0gcmVmICFmaXJzdCBpblxuICAgICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgICBsZXQgZWx0ID0gIWN1cnJlbnQgaW5cbiAgICAgICAgICBsZXQgbmV4dCA9IEludGVybmFsX2VsdC5uZXh0IHBvb2wgZWx0IGluXG4gICAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0ICFmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0O1xuICAgICAgICAgIGlmIFRpbWVfbnMuKCA8PSApIChJbnRlcm5hbF9lbHQuYXQgcG9vbCBlbHQpIG5vd1xuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgaGFuZGxlX2ZpcmVkIChJbnRlcm5hbF9lbHQudG9fZXh0ZXJuYWwgZWx0KTtcbiAgICAgICAgICAgIGludGVybmFsX3JlbW92ZSB0IGVsdDtcbiAgICAgICAgICAgIEludGVybmFsX2VsdC5mcmVlIHBvb2wgZWx0O1xuICAgICAgICAgICAgKCogV2UgcmVjb21wdXRlIFtmaXJzdF0gYmVjYXVzZSBbaW50ZXJuYWxfcmVtb3ZlXSBtYXkgaGF2ZSBjaGFuZ2VkIGl0LiAqKVxuICAgICAgICAgICAgZmlyc3QgOj0gc2xvdHMuKHNsb3QpKVxuICAgICAgICBkb25lKSlcbiAgOztcblxuICBsZXQgY2hhbmdlIHQgZWx0IH5rZXkgfmF0ID1cbiAgICBlbnN1cmVfdmFsaWRfa2V5IHQgfmtleTtcbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBlbHQgPSBJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHBvb2wgZWx0IGluXG4gICAgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0O1xuICAgIEludGVybmFsX2VsdC5zZXRfa2V5IHBvb2wgZWx0IGtleTtcbiAgICBJbnRlcm5hbF9lbHQuc2V0X2F0IHBvb2wgZWx0IGF0O1xuICAgIGludGVybmFsX2FkZF9lbHQgdCBlbHRcbiAgOztcblxuICBsZXQgY2xlYXIgdCA9XG4gICAgaWYgbm90IChpc19lbXB0eSB0KVxuICAgIHRoZW4gKFxuICAgICAgdC5sZW5ndGggPC0gMDtcbiAgICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgICBsZXQgZnJlZV9lbHQgZWx0ID0gSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCBlbHQgaW5cbiAgICAgIGxldCBsZXZlbHMgPSB0LmxldmVscyBpblxuICAgICAgZm9yIGxldmVsX2luZGV4ID0gMCB0byBBcnJheS5sZW5ndGggbGV2ZWxzIC0gMSBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSBsZXZlbHMuKGxldmVsX2luZGV4KSBpblxuICAgICAgICBpZiBsZXZlbC5sZW5ndGggPiAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldmVsLmxlbmd0aCA8LSAwO1xuICAgICAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICAgICAgZm9yIHNsb3RfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBzbG90cyAtIDEgZG9cbiAgICAgICAgICAgIGxldCBlbHQgPSBzbG90cy4oc2xvdF9pbmRleCkgaW5cbiAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0KVxuICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgIEludGVybmFsX2VsdC5pdGVyIHBvb2wgZWx0IH5mOmZyZWVfZWx0O1xuICAgICAgICAgICAgICBzbG90cy4oc2xvdF9pbmRleCkgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKCkpXG4gICAgICAgICAgZG9uZSlcbiAgICAgIGRvbmUpXG4gIDs7XG5lbmRcblxubW9kdWxlIEludGVybmFsX2VsdCA9IFByaW9yaXR5X3F1ZXVlLkludGVybmFsX2VsdFxubW9kdWxlIEtleSA9IFByaW9yaXR5X3F1ZXVlLktleVxubW9kdWxlIEludGVydmFsX251bSA9IEtleVxuXG5sZXQgbWluX2ludGVydmFsX251bSA9IEludGVydmFsX251bS56ZXJvXG5cbigqIEFsbCB0aW1lIGZyb20gdGhlIGVwb2NoIG9ud2FyZHMgaXMgYnJva2VuIGludG8gaGFsZi1vcGVuIGludGVydmFscyBvZiBzaXplXG4gICBbQ29uZmlnLmFsYXJtX3ByZWNpc2lvbiBjb25maWddLiAgVGhlIGludGVydmFscyBhcmUgbnVtYmVyZWQgc3RhcnRpbmcgYXQgemVybywgYW5kIGFcbiAgIHRpbWUncyBpbnRlcnZhbCBudW1iZXIgc2VydmVzIGFzIGl0cyBrZXkgaW4gW3ByaW9yaXR5X3F1ZXVlXS4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgY29uZmlnIDogQ29uZmlnLnRcbiAgOyBzdGFydCA6IFRpbWVfbnMudFxuICA7ICgqIFttYXhfaW50ZXJ2YWxfbnVtXSBpcyB0aGUgaW50ZXJ2YWwgbnVtYmVyIG9mIFttYXhfdGltZV0uICopXG4gICAgbWF4X2ludGVydmFsX251bSA6IEludGVydmFsX251bS50XG4gIDsgbXV0YWJsZSBub3cgOiBUaW1lX25zLnRcbiAgOyBtdXRhYmxlIG5vd19pbnRlcnZhbF9udW1fc3RhcnQgOiBUaW1lX25zLnRcbiAgOyBtdXRhYmxlIG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgOiBUaW1lX25zLnRcbiAgOyBwcmlvcml0eV9xdWV1ZSA6ICdhIFByaW9yaXR5X3F1ZXVlLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG50eXBlICdhIHRpbWluZ193aGVlbCA9ICdhIHRcbnR5cGUgJ2EgdF9ub3cgPSAnYSB0XG5cbmxldCBzZXhwX29mX3Rfbm93IF8gdCA9IFslc2V4cCAodC5ub3cgOiBUaW1lX25zLnQpXVxubGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gQ29uZmlnLmFsYXJtX3ByZWNpc2lvbiB0LmNvbmZpZ1xuXG5tb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgUHJpb3JpdHlfcXVldWUuRWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgbnVsbCA9IFByaW9yaXR5X3F1ZXVlLkVsdC5udWxsXG4gIGxldCBhdCB0dyB0ID0gUHJpb3JpdHlfcXVldWUuRWx0LmF0IHR3LnByaW9yaXR5X3F1ZXVlIHRcbiAgbGV0IHZhbHVlIHR3IHQgPSBQcmlvcml0eV9xdWV1ZS5FbHQudmFsdWUgdHcucHJpb3JpdHlfcXVldWUgdFxuICBsZXQgaW50ZXJ2YWxfbnVtIHR3IHQgPSBQcmlvcml0eV9xdWV1ZS5FbHQua2V5IHR3LnByaW9yaXR5X3F1ZXVlIHRcbmVuZFxuXG5sZXQgc2V4cF9vZl90X2ludGVybmFsID0gc2V4cF9vZl90XG5sZXQgaXRlciB0IH5mID0gUHJpb3JpdHlfcXVldWUuaXRlciB0LnByaW9yaXR5X3F1ZXVlIH5mXG5cbm1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFsYXJtID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgYXQgOiBUaW1lX25zLnRcbiAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCBjcmVhdGUgdCBhbGFybSA9IHsgYXQgPSBBbGFybS5hdCB0IGFsYXJtOyB2YWx1ZSA9IEFsYXJtLnZhbHVlIHQgYWxhcm0gfVxuICAgIGxldCBjb21wYXJlIHQxIHQyID0gVGltZV9ucy5jb21wYXJlIChhdCB0MSkgKGF0IHQyKVxuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgY29uZmlnIDogQ29uZmlnLnRcbiAgICA7IHN0YXJ0IDogVGltZV9ucy50XG4gICAgOyBtYXhfaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnRcbiAgICA7IG5vdyA6IFRpbWVfbnMudFxuICAgIDsgYWxhcm1zIDogJ2EgQWxhcm0udCBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBwcmV0dHlcbiAgICAgICh7IGNvbmZpZ1xuICAgICAgIDsgc3RhcnRcbiAgICAgICA7IG1heF9pbnRlcnZhbF9udW1cbiAgICAgICA7IG5vd1xuICAgICAgIDsgbm93X2ludGVydmFsX251bV9zdGFydCA9IF9cbiAgICAgICA7IG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPSBfXG4gICAgICAgOyBwcmlvcml0eV9xdWV1ZSA9IF9cbiAgICAgICB9IGFzIHQpXG4gID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiByIDo9IFByZXR0eS5BbGFybS5jcmVhdGUgdCBhIDo6ICFyKTtcbiAgbGV0IGFsYXJtcyA9IExpc3Quc29ydCAhciB+Y29tcGFyZTpQcmV0dHkuQWxhcm0uY29tcGFyZSBpblxuICB7IFByZXR0eS5jb25maWc7IHN0YXJ0OyBtYXhfaW50ZXJ2YWxfbnVtOyBub3c7IGFsYXJtcyB9XG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgbWF0Y2ggIXNleHBfb2ZfdF9zdHlsZSB3aXRoXG4gIHwgYEludGVybmFsIC0+IHNleHBfb2ZfdF9pbnRlcm5hbCBzZXhwX29mX2EgdFxuICB8IGBQcmV0dHkgLT4gWyVzZXhwIChwcmV0dHkgdCA6IGEgUHJldHR5LnQpXVxuOztcblxubGV0IGxlbmd0aCB0ID0gUHJpb3JpdHlfcXVldWUubGVuZ3RoIHQucHJpb3JpdHlfcXVldWVcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldFtAY29sZF0gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF9leG5fb2ZfZW1wdHlfdGltaW5nX3doZWVsIHQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biBvZiBlbXB0eSB0aW1pbmcgd2hlZWxcIiB+dGltaW5nX3doZWVsOih0IDogXyB0KV1cbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF93aXRoX2FsbF9hbGFybXNfaW5fbWF4X2ludGVydmFsIHQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biB3aXRoIGFsbCBhbGFybXMgaW4gbWF4IGludGVydmFsXCJcbiAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldXG47O1xuXG5sZXQgcG9vbCB0ID0gUHJpb3JpdHlfcXVldWUucG9vbCB0LnByaW9yaXR5X3F1ZXVlXG5cbmxldCBpbnRlcnZhbF9udW1faW50ZXJuYWwgfnRpbWUgfmFsYXJtX3ByZWNpc2lvbiA9XG4gIEludGVydmFsX251bS5vZl9pbnQ2MyAoQWxhcm1fcHJlY2lzaW9uLmludGVydmFsX251bSBhbGFybV9wcmVjaXNpb24gdGltZSlcbjs7XG5cbmxldCBpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgdGltZSA9XG4gIGludGVydmFsX251bV9pbnRlcm5hbCB+dGltZSB+YWxhcm1fcHJlY2lzaW9uOnQuY29uZmlnLmFsYXJtX3ByZWNpc2lvblxuOztcblxubGV0IGludGVydmFsX251bSB0IHRpbWUgPVxuICBpZiBUaW1lX25zLiggPCApIHRpbWUgbWluX3RpbWVcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5pbnRlcnZhbF9udW0gZ290IHRpbWUgdG9vIGZhciBpbiB0aGUgcGFzdFwiICh0aW1lIDogVGltZV9ucy50KV07XG4gIGludGVydmFsX251bV91bmNoZWNrZWQgdCB0aW1lXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IGludGVydmFsX251bSA9XG4gIEFsYXJtX3ByZWNpc2lvbi5pbnRlcnZhbF9udW1fc3RhcnRcbiAgICB0LmNvbmZpZy5hbGFybV9wcmVjaXNpb25cbiAgICAoaW50ZXJ2YWxfbnVtIHw+IEludGVydmFsX251bS50b19pbnQ2Mylcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fc21hbGwgaW50ZXJ2YWxfbnVtID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwuaW50ZXJ2YWxfbnVtX3N0YXJ0IGdvdCB0b28gc21hbGwgaW50ZXJ2YWxfbnVtXCJcbiAgICAgICAgKGludGVydmFsX251bSA6IEludGVydmFsX251bS50KVxuICAgICAgICAobWluX2ludGVydmFsX251bSA6IEludGVydmFsX251bS50KV1cbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fbGFyZ2UgdCBpbnRlcnZhbF9udW0gPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5pbnRlcnZhbF9udW1fc3RhcnQgZ290IHRvbyBsYXJnZSBpbnRlcnZhbF9udW1cIlxuICAgICAgICAoaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXG4gICAgICAgICh0Lm1heF9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udCldXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgaW50ZXJ2YWxfbnVtID1cbiAgaWYgSW50ZXJ2YWxfbnVtLiggPCApIGludGVydmFsX251bSBtaW5faW50ZXJ2YWxfbnVtXG4gIHRoZW4gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fc21hbGwgaW50ZXJ2YWxfbnVtO1xuICBpZiBJbnRlcnZhbF9udW0uKCA+ICkgaW50ZXJ2YWxfbnVtIHQubWF4X2ludGVydmFsX251bVxuICB0aGVuIHJhaXNlX2ludGVydmFsX251bV9zdGFydF9nb3RfdG9vX2xhcmdlIHQgaW50ZXJ2YWxfbnVtO1xuICBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgaW50ZXJ2YWxfbnVtXG47O1xuXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCB0IGtleSA9XG4gICgqIFtpbnRlcnZhbF9udW1fc3RhcnQgdCBrZXldIGlzIHRoZSBrZXkgY29ycmVzcG9uZGluZyB0byB0aGUgc3RhcnQgb2YgdGhlIHRpbWUgaW50ZXJ2YWxcbiAgICAgaG9sZGluZyB0aGUgZmlyc3QgYWxhcm0gaW4gW3RdLiAgQWR2YW5jaW5nIHRvIHRoYXQgd291bGQgbm90IGJlIGVub3VnaCwgc2luY2UgdGhlXG4gICAgIGFsYXJtcyBpbiB0aGF0IGludGVydmFsIGRvbid0IGZpcmUgdW50aWwgdGhlIGNsb2NrIGlzIGFkdmFuY2VkIHRvIHRoZSBzdGFydCBvZiB0aGVcbiAgICAgbmV4dCBpbnRlcnZhbC4gIFNvLCB3ZSB1c2UgW3N1Y2Mga2V5XSB0byBhZHZhbmNlIHRvIHRoZSBzdGFydCBvZiB0aGUgbmV4dFxuICAgICBpbnRlcnZhbC4gKilcbiAgaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgKEtleS5zdWNjIGtleSlcbjs7XG5cbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0IHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCBrZXkgPSBJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdCBpblxuICAgIGlmIEludGVydmFsX251bS5lcXVhbCBrZXkgdC5tYXhfaW50ZXJ2YWxfbnVtXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSBTb21lIChuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIHQga2V5KSlcbjs7XG5cbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF9leG5fb2ZfZW1wdHlfdGltaW5nX3doZWVsIHQ7XG4gIGxldCBrZXkgPSBJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdCBpblxuICBpZiBJbnRlcnZhbF9udW0uZXF1YWwga2V5IHQubWF4X2ludGVydmFsX251bVxuICB0aGVuIHJhaXNlX25leHRfYWxhcm1fZmlyZXNfYXRfd2l0aF9hbGxfYWxhcm1zX2luX21heF9pbnRlcnZhbCB0O1xuICBuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIHQga2V5XG47O1xuXG5sZXQgY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQgPVxuICBsZXQgbWF4X2FsbG93ZWRfa2V5ID0gUHJpb3JpdHlfcXVldWUubWF4X2FsbG93ZWRfa2V5IHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJ2YWxfbnVtLiggPj0gKSBtYXhfYWxsb3dlZF9rZXkgdC5tYXhfaW50ZXJ2YWxfbnVtXG4gIHRoZW4gbWF4X3RpbWVcbiAgZWxzZVxuICAgIFRpbWVfbnMuYWRkXG4gICAgICAoaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IG1heF9hbGxvd2VkX2tleSlcbiAgICAgIChUaW1lX25zLlNwYW4uKCAtICkgKGFsYXJtX3ByZWNpc2lvbiB0KSBUaW1lX25zLlNwYW4ubmFub3NlY29uZClcbjs7XG5cbmxldCBub3dfaW50ZXJ2YWxfbnVtIHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fYWxsb3dlZF9rZXkgdC5wcmlvcml0eV9xdWV1ZVxubGV0IG1pbl9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bSA9IG5vd19pbnRlcnZhbF9udW1cbmxldCBtYXhfYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW0gdCA9IGludGVydmFsX251bSB0IChtYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpXG5sZXQgaW50ZXJ2YWxfc3RhcnQgdCB0aW1lID0gaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IChpbnRlcnZhbF9udW0gdCB0aW1lKVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+Y29uZmlnOihjaGVjayBDb25maWcuaW52YXJpYW50KVxuICAgICAgfnN0YXJ0OlxuICAgICAgICAoY2hlY2sgKGZ1biBzdGFydCAtPlxuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA+PSApIHN0YXJ0IG1pbl90aW1lKTtcbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPD0gKSBzdGFydCBtYXhfdGltZSkpKVxuICAgICAgfm1heF9pbnRlcnZhbF9udW06XG4gICAgICAgIChjaGVjayAoZnVuIG1heF9pbnRlcnZhbF9udW0gLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogSW50ZXJ2YWxfbnVtLnRdXG4gICAgICAgICAgICAgfmV4cGVjdDptYXhfaW50ZXJ2YWxfbnVtXG4gICAgICAgICAgICAgKGludGVydmFsX251bSB0IG1heF90aW1lKTtcbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogSW50ZXJ2YWxfbnVtLnRdXG4gICAgICAgICAgICAgfmV4cGVjdDptYXhfaW50ZXJ2YWxfbnVtXG4gICAgICAgICAgICAgKGludGVydmFsX251bSB0IChpbnRlcnZhbF9udW1fc3RhcnQgdCBtYXhfaW50ZXJ2YWxfbnVtKSkpKVxuICAgICAgfm5vdzpcbiAgICAgICAgKGNoZWNrIChmdW4gbm93IC0+XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oID49ICkgbm93IHQuc3RhcnQpO1xuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIG5vdyBtYXhfdGltZSk7XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgSW50ZXJ2YWxfbnVtLmVxdWFsXG4gICAgICAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgdC5ub3cpXG4gICAgICAgICAgICAgICAoUHJpb3JpdHlfcXVldWUubWluX2FsbG93ZWRfa2V5IHQucHJpb3JpdHlfcXVldWUpKSkpXG4gICAgICB+bm93X2ludGVydmFsX251bV9zdGFydDpcbiAgICAgICAgKGNoZWNrIChmdW4gbm93X2ludGVydmFsX251bV9zdGFydCAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdXG4gICAgICAgICAgICAgbm93X2ludGVydmFsX251bV9zdGFydFxuICAgICAgICAgICAgIH5leHBlY3Q6KGludGVydmFsX251bV9zdGFydCB0IChub3dfaW50ZXJ2YWxfbnVtIHQpKSkpXG4gICAgICB+bWF4X2FsbG93ZWRfYWxhcm1fdGltZTpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2FsbG93ZWRfYWxhcm1fdGltZSAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdXG4gICAgICAgICAgICAgbWF4X2FsbG93ZWRfYWxhcm1fdGltZVxuICAgICAgICAgICAgIH5leHBlY3Q6KGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0KSkpXG4gICAgICB+cHJpb3JpdHlfcXVldWU6KGNoZWNrIChQcmlvcml0eV9xdWV1ZS5pbnZhcmlhbnQgaW52YXJpYW50X2EpKTtcbiAgICBpdGVyIHQgfmY6KGZ1biBhbGFybSAtPlxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgSW50ZXJ2YWxfbnVtLmVxdWFsXG4gICAgICAgICAgKEFsYXJtLmludGVydmFsX251bSB0IGFsYXJtKVxuICAgICAgICAgIChpbnRlcnZhbF9udW0gdCAoQWxhcm0uYXQgdCBhbGFybSkpKTtcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIFRpbWVfbnMuKCA+PSApIChpbnRlcnZhbF9zdGFydCB0IChBbGFybS5hdCB0IGFsYXJtKSkgKGludGVydmFsX3N0YXJ0IHQgKG5vdyB0KSkpO1xuICAgICAgYXNzZXJ0IChUaW1lX25zLiggPiApIChBbGFybS5hdCB0IGFsYXJtKSAoVGltZV9ucy5zdWIgKG5vdyB0KSAoYWxhcm1fcHJlY2lzaW9uIHQpKSkpKVxuOztcblxubGV0IGRlYnVnID0gZmFsc2VcblxubGV0IGFkdmFuY2VfY2xvY2sgdCB+dG9fIH5oYW5kbGVfZmlyZWQgPVxuICBpZiBUaW1lX25zLiggPiApIHRvXyAobm93IHQpXG4gIHRoZW4gKFxuICAgIHQubm93IDwtIHRvXztcbiAgICBsZXQga2V5ID0gaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IHRvXyBpblxuICAgIHQubm93X2ludGVydmFsX251bV9zdGFydCA8LSBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQga2V5O1xuICAgIG1hdGNoXG4gICAgICBQcmlvcml0eV9xdWV1ZS5pbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgdC5wcmlvcml0eV9xdWV1ZVxuICAgICAgICB+a2V5XG4gICAgICAgIH5oYW5kbGVfcmVtb3ZlZDpoYW5kbGVfZmlyZWRcbiAgICB3aXRoXG4gICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2UgLT5cbiAgICAgIGlmIGRlYnVnXG4gICAgICB0aGVuXG4gICAgICAgIGFzc2VydCAoVGltZV9ucy4oID0gKSB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgKGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0KSlcbiAgICB8IE1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkIC0+XG4gICAgICB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPC0gY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpXG47O1xuXG5sZXQgY3JlYXRlIH5jb25maWcgfnN0YXJ0ID1cbiAgaWYgVGltZV9ucy4oIDwgKSBzdGFydCBUaW1lX25zLmVwb2NoXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJUaW1pbmdfd2hlZWwuY3JlYXRlIGdvdCBzdGFydCBiZWZvcmUgdGhlIGVwb2NoXCIgKHN0YXJ0IDogVGltZV9ucy50KV07XG4gIGxldCB0ID1cbiAgICB7IGNvbmZpZ1xuICAgIDsgc3RhcnRcbiAgICA7IG1heF9pbnRlcnZhbF9udW0gPVxuICAgICAgICBpbnRlcnZhbF9udW1faW50ZXJuYWwgfnRpbWU6bWF4X3RpbWUgfmFsYXJtX3ByZWNpc2lvbjpjb25maWcuYWxhcm1fcHJlY2lzaW9uXG4gICAgOyBub3cgPSBUaW1lX25zLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICgqIHNldCBieSBbYWR2YW5jZV9jbG9ja10gYmVsb3cgKilcbiAgICA7IG5vd19pbnRlcnZhbF9udW1fc3RhcnQgPVxuICAgICAgICBUaW1lX25zLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICgqIHNldCBieSBbYWR2YW5jZV9jbG9ja10gYmVsb3cgKilcbiAgICA7IG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPSBtYXhfdGltZSAoKiBzZXQgYnkgW2FkdmFuY2VfY2xvY2tdIGJlbG93ICopXG4gICAgOyBwcmlvcml0eV9xdWV1ZSA9XG4gICAgICAgIFByaW9yaXR5X3F1ZXVlLmNyZWF0ZSA/Y2FwYWNpdHk6Y29uZmlnLmNhcGFjaXR5IH5sZXZlbF9iaXRzOmNvbmZpZy5sZXZlbF9iaXRzICgpXG4gICAgfVxuICBpblxuICB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPC0gY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQ7XG4gIGFkdmFuY2VfY2xvY2sgdCB+dG9fOnN0YXJ0IH5oYW5kbGVfZmlyZWQ6KGZ1biBfIC0+IGFzc2VydCBmYWxzZSk7XG4gIHRcbjs7XG5cbmxldCBhZGRfYXRfaW50ZXJ2YWxfbnVtIHQgfmF0IHZhbHVlID1cbiAgSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsXG4gICAgKFByaW9yaXR5X3F1ZXVlLmludGVybmFsX2FkZFxuICAgICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICAgICB+a2V5OmF0XG4gICAgICAgfmF0OihpbnRlcnZhbF9udW1fc3RhcnQgdCBhdClcbiAgICAgICB2YWx1ZSlcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfdGhhdF9mYXJfaW5fdGhlX2Z1dHVyZSB0IGF0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwgY2Fubm90IHNjaGVkdWxlIGFsYXJtIHRoYXQgZmFyIGluIHRoZSBmdXR1cmVcIlxuICAgICAgICAoYXQgOiBUaW1lX25zLnQpXG4gICAgICAgIH5tYXhfYWxsb3dlZF9hbGFybV90aW1lOih0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgOiBUaW1lX25zLnQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9iZWZvcmVfc3RhcnRfb2ZfY3VycmVudF9pbnRlcnZhbCB0IGF0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwgY2Fubm90IHNjaGVkdWxlIGFsYXJtIGJlZm9yZSBzdGFydCBvZiBjdXJyZW50IGludGVydmFsXCJcbiAgICAgICAgKGF0IDogVGltZV9ucy50KVxuICAgICAgICB+bm93X2ludGVydmFsX251bV9zdGFydDoodC5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IDogVGltZV9ucy50KV1cbjs7XG5cbmxldCBlbnN1cmVfY2FuX3NjaGVkdWxlX2FsYXJtIHQgfmF0ID1cbiAgaWYgVGltZV9ucy4oID4gKSBhdCB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdGhlbiByYWlzZV90aGF0X2Zhcl9pbl90aGVfZnV0dXJlIHQgYXQ7XG4gIGlmIFRpbWVfbnMuKCA8ICkgYXQgdC5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0XG4gIHRoZW4gcmFpc2VfYmVmb3JlX3N0YXJ0X29mX2N1cnJlbnRfaW50ZXJ2YWwgdCBhdFxuOztcblxubGV0IGFkZCB0IH5hdCB2YWx1ZSA9XG4gIGVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0gdCB+YXQ7XG4gIEludGVybmFsX2VsdC50b19leHRlcm5hbFxuICAgIChQcmlvcml0eV9xdWV1ZS5pbnRlcm5hbF9hZGRcbiAgICAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgICAgfmtleTooaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IGF0KVxuICAgICAgIH5hdFxuICAgICAgIHZhbHVlKVxuOztcblxubGV0IHJlbW92ZSB0IGFsYXJtID0gUHJpb3JpdHlfcXVldWUucmVtb3ZlIHQucHJpb3JpdHlfcXVldWUgYWxhcm1cbmxldCBjbGVhciB0ID0gUHJpb3JpdHlfcXVldWUuY2xlYXIgdC5wcmlvcml0eV9xdWV1ZVxubGV0IG1lbSB0IGFsYXJtID0gUHJpb3JpdHlfcXVldWUubWVtIHQucHJpb3JpdHlfcXVldWUgYWxhcm1cblxubGV0IHJlc2NoZWR1bGVfZ2VuIHQgYWxhcm0gfmtleSB+YXQgPVxuICBpZiBub3QgKG1lbSB0IGFsYXJtKVxuICB0aGVuIGZhaWx3aXRoIFwiVGltaW5nX3doZWVsIGNhbm5vdCByZXNjaGVkdWxlIGFsYXJtIG5vdCBpbiB0aW1pbmcgd2hlZWxcIjtcbiAgZW5zdXJlX2Nhbl9zY2hlZHVsZV9hbGFybSB0IH5hdDtcbiAgUHJpb3JpdHlfcXVldWUuY2hhbmdlIHQucHJpb3JpdHlfcXVldWUgYWxhcm0gfmtleSB+YXRcbjs7XG5cbmxldCByZXNjaGVkdWxlIHQgYWxhcm0gfmF0ID0gcmVzY2hlZHVsZV9nZW4gdCBhbGFybSB+a2V5OihpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgYXQpIH5hdFxuXG5sZXQgcmVzY2hlZHVsZV9hdF9pbnRlcnZhbF9udW0gdCBhbGFybSB+YXQgPVxuICByZXNjaGVkdWxlX2dlbiB0IGFsYXJtIH5rZXk6YXQgfmF0OihpbnRlcnZhbF9udW1fc3RhcnQgdCBhdClcbjs7XG5cbmxldCBtaW5fYWxhcm1faW50ZXJ2YWxfbnVtIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiBOb25lIGVsc2UgU29tZSAoSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHQpXG47O1xuXG5sZXQgbWluX2FsYXJtX2ludGVydmFsX251bV9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLm1pbl9hbGFybV9pbnRlcnZhbF9udW1fZXhuIG9mIGVtcHR5IHRpbWluZ193aGVlbFwiXG4gICAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldXG4gIGVsc2UgSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHRcbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0ID1cbiAgbGV0IHBvb2wgPSBwb29sIHQgaW5cbiAgSW50ZXJuYWxfZWx0Lm1heF9hbGFybV90aW1lIHBvb2wgZWx0IH53aXRoX2tleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbjs7XG5cbmxldCBtaW5fYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0ID1cbiAgbGV0IHBvb2wgPSBwb29sIHQgaW5cbiAgSW50ZXJuYWxfZWx0Lm1pbl9hbGFybV90aW1lIHBvb2wgZWx0IH53aXRoX2tleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIE5vbmUgZWxzZSBTb21lIChtYXhfYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0KVxuOztcblxubGV0IG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKG1pbl9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQpXG47O1xuXG5sZXQgbWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biBvZiBlbXB0eSB0aW1pbmcgd2hlZWxcIlxuICAgICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXTtcbiAgbWF4X2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdFxuOztcblxubGV0IG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gb2YgZW1wdHkgdGltaW5nIHdoZWVsXCJcbiAgICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV07XG4gIG1pbl9hbGFybV90aW1lX2luX2xpc3QgdCBlbHRcbjs7XG5cbmxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgfmhhbmRsZV9maXJlZCA9XG4gIFByaW9yaXR5X3F1ZXVlLmZpcmVfcGFzdF9hbGFybXNcbiAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgfmhhbmRsZV9maXJlZFxuICAgIH5rZXk6KG5vd19pbnRlcnZhbF9udW0gdClcbiAgICB+bm93OnQubm93XG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgTnVtX2tleV9iaXRzID0gTnVtX2tleV9iaXRzXG5cbiAgbGV0IGludGVydmFsX251bV9pbnRlcm5hbCA9IGludGVydmFsX251bV9pbnRlcm5hbFxuICBsZXQgbWF4X3RpbWUgPSBtYXhfdGltZVxuZW5kXG4iLCJtb2R1bGUgSW5yaWFfc3lzID0gU3lzXG5vcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbm9wZW4gUG9seVxuXG5sZXQgc2VjID0gVGltZV9ucy5TcGFuLm9mX3NlY1xubGV0IGNvbmNhdCA9IFN0cmluZy5jb25jYXRcblxubW9kdWxlIEVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRpbWVfbnMuU3BhblxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gVGltZV9ucy5TcGFuLnZhbGlkYXRlX25vbl9uZWdhdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRpbWVfbnMuU3BhblxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gVGltZV9ucy5TcGFuLnZhbGlkYXRlX25vbl9uZWdhdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgICBpbmNsdWRlIEludFxuXG4gICAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICAgIGVuZClcblxuICBsZXQgZGVmYXVsdCA9IGNyZWF0ZV9leG4gKDEgbHNsIDE2KVxuICBsZXQgZXF1YWwgKHQxIDogdCkgdDIgPSB0MSA9IHQyXG5lbmRcblxubW9kdWxlIE1heF9udW1fdGhyZWFkcyA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gIGVuZClcblxubW9kdWxlIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBJbnQudmFsaWRhdGVfcG9zaXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgRHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IHN0cnVjdFxuICBtb2R1bGUgSG93X3RvX2R1bXAgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBEZWZhdWx0XG4gICAgICB8IENhbGxfYWJvcnRcbiAgICAgIHwgQ2FsbF9nY29yZVxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuXG4gIHR5cGUgd2F0Y2ggPVxuICAgIHsgZHVtcF9pZl9kZWxheWVkX2J5IDogVGltZV9ucy5TcGFuLnRcbiAgICA7IGhvd190b19kdW1wIDogSG93X3RvX2R1bXAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF1cblxuICB0eXBlIHQgPVxuICAgIHwgV2F0Y2ggb2Ygd2F0Y2hcbiAgICB8IERvX25vdF93YXRjaFxuICBbQEBkZXJpdmluZyBzZXhwXVxuZW5kXG5cbm1vZHVsZSBEZWJ1Z190YWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBbGxcbiAgICAgIHwgQ2xvY2tcbiAgICAgIHwgRmRcbiAgICAgIHwgRmlsZV9kZXNjcl93YXRjaGVyXG4gICAgICB8IEZpbmFsaXplcnNcbiAgICAgIHwgSW50ZXJydXB0b3JcbiAgICAgIHwgTW9uaXRvclxuICAgICAgfCBNb25pdG9yX3NlbmRfZXhuXG4gICAgICB8IFBhcmFsbGVsXG4gICAgICB8IFJlYWRlclxuICAgICAgfCBTY2hlZHVsZXJcbiAgICAgIHwgU2h1dGRvd25cbiAgICAgIHwgVGhyZWFkX3Bvb2xcbiAgICAgIHwgVGhyZWFkX3NhZmVcbiAgICAgIHwgV3JpdGVyXG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBsZXQgbGlzdCA9XG4gICAgWyBBbGxcbiAgICA7IENsb2NrXG4gICAgOyBGZFxuICAgIDsgRmlsZV9kZXNjcl93YXRjaGVyXG4gICAgOyBGaW5hbGl6ZXJzXG4gICAgOyBJbnRlcnJ1cHRvclxuICAgIDsgTW9uaXRvclxuICAgIDsgTW9uaXRvcl9zZW5kX2V4blxuICAgIDsgUGFyYWxsZWxcbiAgICA7IFJlYWRlclxuICAgIDsgU2NoZWR1bGVyXG4gICAgOyBTaHV0ZG93blxuICAgIDsgVGhyZWFkX3Bvb2xcbiAgICA7IFRocmVhZF9zYWZlXG4gICAgOyBXcml0ZXJcbiAgICBdXG4gIDs7XG5lbmRcblxubW9kdWxlIEZpbGVfZGVzY3Jfd2F0Y2hlciA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEVwb2xsX2lmX3RpbWVyZmRcbiAgICAgIHwgRXBvbGxcbiAgICAgIHwgU2VsZWN0XG4gICAgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBsZXQgbGlzdCA9IFsgRXBvbGxfaWZfdGltZXJmZDsgRXBvbGw7IFNlbGVjdCBdXG5lbmRcblxudHlwZSB0ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgOiBUaW1lX25zLlNwYW4udCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBjaGVja19pbnZhcmlhbnRzIDogYm9vbCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgOiBib29sIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgOiBEdW1wX2NvcmVfb25fam9iX2RlbGF5LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA6IEVwb2xsX21heF9yZWFkeV9ldmVudHMudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgOiBGaWxlX2Rlc2NyX3dhdGNoZXIudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA6IE1heF9pbnRlcl9jeWNsZV90aW1lb3V0LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzIDogTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV90aHJlYWRzIDogTWF4X251bV90aHJlYWRzLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50IG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BzZXhwLm9wdGlvbl1cbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA6IE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIDogRGVidWdfdGFnLnQgbGlzdCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyByZWNvcmRfYmFja3RyYWNlcyA6IGJvb2wgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA6IFRocmVhZF9wb29sX2NwdV9hZmZpbml0eS50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHRpbWluZ193aGVlbF9jb25maWcgOiBUaW1pbmdfd2hlZWwuQ29uZmlnLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF1cblxubGV0IGVtcHR5ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBOb25lXG4gIDsgY2hlY2tfaW52YXJpYW50cyA9IE5vbmVcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBOb25lXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IE5vbmVcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gTm9uZVxuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IE5vbmVcbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IE5vbmVcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBOb25lXG4gIDsgbWF4X251bV90aHJlYWRzID0gTm9uZVxuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gTm9uZVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gTm9uZVxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IE5vbmVcbiAgOyByZWNvcmRfYmFja3RyYWNlcyA9IE5vbmVcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gTm9uZVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9IE5vbmVcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gTm9uZVxuICB9XG47O1xuXG5sZXQgY3JlYXRlXG4gICAgICA/YWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gICAgICA/Y2hlY2tfaW52YXJpYW50c1xuICAgICAgP2RldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxuICAgICAgP2R1bXBfY29yZV9vbl9qb2JfZGVsYXlcbiAgICAgID9lcG9sbF9tYXhfcmVhZHlfZXZlbnRzXG4gICAgICA/ZmlsZV9kZXNjcl93YXRjaGVyXG4gICAgICA/bWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgICAgID9tYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbiAgICAgID9tYXhfbnVtX3RocmVhZHNcbiAgICAgID9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICAgICAgP21pbl9pbnRlcl9jeWNsZV90aW1lb3V0XG4gICAgICA/cHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG4gICAgICA/cmVjb3JkX2JhY2t0cmFjZXNcbiAgICAgID9yZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gICAgICA/dGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG4gICAgICA/dGltaW5nX3doZWVsX2NvbmZpZ1xuICAgICAgKClcbiAgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IGNoZWNrX2ludmFyaWFudHNcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWRcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5XG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlclxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG4gIDsgbWF4X251bV90aHJlYWRzXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dFxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuICA7IHJlY29yZF9iYWNrdHJhY2VzXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eVxuICA7IHRpbWluZ193aGVlbF9jb25maWdcbiAgfVxuOztcblxubGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ19mb3Jfd29yZF9zaXplICh3b3JkX3NpemUgOiBXb3JkX3NpemUudCkgPVxuICBsZXQgbW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA9IFRpbWluZ193aGVlbC5BbGFybV9wcmVjaXNpb24gaW5cbiAgbGV0IGFsYXJtX3ByZWNpc2lvbiwgbGV2ZWxfYml0cyA9XG4gICAgbWF0Y2ggd29yZF9zaXplIHdpdGhcbiAgICB8IFczMiAtPiBBbGFybV9wcmVjaXNpb24uYWJvdXRfb25lX21pbGxpc2Vjb25kLCBbIDEwOyAxMDsgOSBdXG4gICAgfCBXNjQgLT4gQWxhcm1fcHJlY2lzaW9uLihkaXYgYWJvdXRfb25lX21pbGxpc2Vjb25kIH5wb3cyOjMpLCBbIDE0OyAxNTsgOTsgNiBdXG4gIGluXG4gIFRpbWluZ193aGVlbC5Db25maWcuY3JlYXRlXG4gICAgfmFsYXJtX3ByZWNpc2lvblxuICAgIH5sZXZlbF9iaXRzOihUaW1pbmdfd2hlZWwuTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGxldmVsX2JpdHMpXG4gICAgKClcbjs7XG5cbmxldCBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcgPVxuICBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWdfZm9yX3dvcmRfc2l6ZSBXb3JkX3NpemUud29yZF9zaXplXG47O1xuXG5sZXQgZGVmYXVsdCA9XG4gICgqIEZvciBbZmlsZV9kZXNjcl93YXRjaGVyXSBhbmQgW21heF9udW1fb3Blbl9maWxlX2Rlc2Nyc10gd2UgY2hvb3NlIHRoZSBkZWZhdWx0IGZvciB0aGVcbiAgICAgY29tbW9uIGNhc2UgdGhhdCBbZXBvbGxdIGlzIGF2YWlsYWJsZS4gIFRoZXJlIGlzIHNvbWUgYWRkaXRpb25hbCBjb2RlIGluXG4gICAgIFtBc3luY191bml4LkNvbmZpZ10gdGhhdCBjaGVja3Mgd2hldGhlciBbZXBvbGxdIGlzIGFjdHVhbGx5IGF2YWlsYWJsZSwgYW5kIGlmIG5vdCxcbiAgICAgdXNlcyBbc2VsZWN0XSBhbmQgYSBzbWFsbGVyIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3JzLiAqKVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgKHNlYyA2MC4pXG4gIDsgY2hlY2tfaW52YXJpYW50cyA9IFNvbWUgZmFsc2VcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBTb21lIGZhbHNlXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IFNvbWUgRG9fbm90X3dhdGNoXG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IFNvbWUgKEVwb2xsX21heF9yZWFkeV9ldmVudHMuY3JlYXRlX2V4biAyNTYpXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyID0gU29tZSBFcG9sbF9pZl90aW1lcmZkXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIChNYXhfaW50ZXJfY3ljbGVfdGltZW91dC5jcmVhdGVfZXhuIChzZWMgMC4wNSkpXG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gU29tZSBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMuZGVmYXVsdFxuICA7IG1heF9udW1fdGhyZWFkcyA9IFNvbWUgKE1heF9udW1fdGhyZWFkcy5jcmVhdGVfZXhuIDUwKVxuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID1cbiAgICAgIFNvbWUgKE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLmNyZWF0ZV9leG4gNTAwKVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSAoTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQuY3JlYXRlX2V4biAoc2VjIDAuKSlcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSBTb21lIFtdXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBTb21lIGZhbHNlXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgKHNlYyAxLilcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSBTb21lIEluaGVyaXRcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gU29tZSBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWdcbiAgfVxuOztcblxubGV0IGV4YW1wbGUgPVxuICB7IGRlZmF1bHQgd2l0aFxuICAgIHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IFNvbWUgRGVidWdfdGFnLlsgRmQ7IFNjaGVkdWxlciBdXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID1cbiAgICAgIFNvbWVcbiAgICAgICAgKENwdXNldFxuICAgICAgICAgICAoWyAwOyAxOyAyIF0gfD4gSW50LlNldC5vZl9saXN0IHw+IFRocmVhZF9wb29sX2NwdV9hZmZpbml0eS5DcHVzZXQuY3JlYXRlX2V4bikpXG4gIH1cbjs7XG5cbmxldCBlbnZpcm9ubWVudF92YXJpYWJsZSA9IFwiQVNZTkNfQ09ORklHXCJcblxubGV0IGZpZWxkX2Rlc2NyaXB0aW9ucyAoKSA6IHN0cmluZyA9XG4gIGxldCBmaWVsZCB0b19zZXhwIGRlc2NyaXB0aW9uIGFjIGZpZWxkID1cbiAgICAoRmllbGQubmFtZSBmaWVsZCwgdG9fc2V4cCAoT3B0aW9uLnZhbHVlX2V4biAoRmllbGQuZ2V0IGZpZWxkIGRlZmF1bHQpKSwgZGVzY3JpcHRpb24pXG4gICAgOjogYWNcbiAgaW5cbiAgbGV0IGZpZWxkcyA9XG4gICAgRmllbGRzLmZvbGRcbiAgICAgIH5pbml0OltdXG4gICAgICB+YWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF1cbiAgICAgICAgICAgWyB7fFxuICBCeSBkZWZhdWx0LCBBc3luYyB3aWxsIHNlbmQgYW4gZXhjZXB0aW9uIHRvIHRoZSB0b3BsZXZlbCBtb25pdG9yXG4gIGlmIGl0IGRldGVjdHMgdGhhdCB0aGUgdGhyZWFkIHBvb2wgaXMgc3R1Y2sgZm9yIGxvbmdlciB0aGFuIHRoaXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmNoZWNrX2ludmFyaWFudHM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgICAgIFsge3xcbiAgSWYgdHJ1ZSwgY2F1c2VzIEFzeW5jIHRvIHJlZ3VsYXJseSBjaGVjayBpbnZhcmlhbnRzIG9mIGl0cyBpbnRlcm5hbFxuICBkYXRhIHN0cnVjdHVyZXMuICBUaGlzIGNhbiBzdWJzdGFudGlhbGx5IHNsb3cgZG93biB5b3VyIHByb2dyYW0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZDpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgICAgWyB7fFxuICBJZiB0cnVlLCBjYXVzZXMgQXN5bmMgcm91dGluZXMgdG8gY2hlY2sgaWYgdGhleSBhcmUgYmVpbmcgYWNjZXNzZWRcbiAgZnJvbSBzb21lIHRocmVhZCBvdGhlciB0aGFuIHRoZSB0aHJlYWQgY3VycmVudGx5IGhvbGRpbmcgdGhlIEFzeW5jXG4gIGxvY2ssIHdoaWNoIGlzIG5vdCBhbGxvd2VkIGFuZCBjYW4gbGVhZCB0byB2ZXJ5IGNvbmZ1c2luZyBiZWhhdmlvci5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZHVtcF9jb3JlX29uX2pvYl9kZWxheTpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRHVtcF9jb3JlX29uX2pvYl9kZWxheS50XVxuICAgICAgICAgICBbIHt8XG4gIENhbiBiZSBzZXQgdG8gW0RvX25vdF93YXRjaF0gb3I6XG5cbiAgICAoV2F0Y2ggKChkdW1wX2lmX2RlbGF5ZWRfYnkgU1BBTikgKGhvd190b19kdW1wIEhPVykpKVxuXG4gIElmIHNldCB0byBbV2F0Y2hdLCB0aGVuIG9uIHByb2dyYW0gc3RhcnQgdGhpcyB3aWxsIHN0YXJ0IGEgcmVndWxhclxuICBBc3luYyBqb2IgdGhhdCBpbmNyZW1lbnRzIGEgY291bnRlciwgYW5kIGEgQyB0aHJlYWQgdGhhdCB3aWxsXG4gIGRldGVjdCBpZiB0aGF0IGpvYiBpcyBkZWxheWVkIGJ5IFtkdW1wX2lmX2RlbGF5ZWRfYnldLCBhbmQgaWYgc28sXG4gIHdpbGwgY29yZSBkdW1wIHRoZSBwcm9ncmFtLiAgSWYgYXZhaWxhYmxlLCBbL3Vzci9iaW4vZ2NvcmVdIGlzXG4gIHVzZWQgYnkgZGVmYXVsdCB0byBkdW1wIHRoZSBjb3JlLCB3aGljaCBzaG91bGQgYWxsb3cgdGhlIHByb2dyYW1cbiAgdG8gY29udGludWUgcnVubmluZy4gIE90aGVyd2lzZSwgW2Fib3J0XSB3aWxsIGJlIGNhbGxlZCBmcm9tIEMsXG4gIHdoaWNoIHdpbGwga2lsbCB0aGUgcHJvZ3JhbSB3aGlsZSBjYXVzaW5nIGEgY29yZSBkdW1wLiAgT25lIGNhblxuICBmb3JjZSBbYWJvcnRdIG9yIFtnY29yZV0gdmlhIFtob3dfdG9fZHVtcF0sIHdoaWNoIHNob3VsZCBiZSBvbmUgb2Y6XG4gIFtDYWxsX2Fib3J0XSwgW0NhbGxfZ2NvcmVdLCBvciBbRGVmYXVsdF0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmVwb2xsX21heF9yZWFkeV9ldmVudHM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IEVwb2xsX21heF9yZWFkeV9ldmVudHMudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2YgcmVhZHkgZXZlbnRzIHRoYXQgQXN5bmMncyBjYWxsIHRvIFtFcG9sbC53YWl0XVxuICB3aWxsIGhhbmRsZS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZmlsZV9kZXNjcl93YXRjaGVyOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBGaWxlX2Rlc2NyX3dhdGNoZXIudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGlzIGRldGVybWluZXMgd2hhdCBPUyBzdWJzeXN0ZW0gQXN5bmMgdXNlcyB0byB3YXRjaCBmaWxlIGRlc2NyaXB0b3JzIGZvciBiZWluZyByZWFkeS5cbiAgVGhlIGRlZmF1bHQgaXMgdG8gdXNlIFtlcG9sbF0gaWYgdGltZXJmZCdzIGFyZSBzdXBwb3J0ZWQgYW5kIGlmIG5vdCwgdXNlIFtzZWxlY3RdLlxuXG4gIEFsbG93ZWQgdmFsdWVzIGFyZTp8fVxuICAgICAgICAgICA7IGNvbmNhdFxuICAgICAgICAgICAgICAgfnNlcDpcIiwgXCJcbiAgICAgICAgICAgICAgIChMaXN0Lm1hcCBGaWxlX2Rlc2NyX3dhdGNoZXIubGlzdCB+ZjpGaWxlX2Rlc2NyX3dhdGNoZXIudG9fc3RyaW5nKVxuICAgICAgICAgICA7IHt8LlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5tYXhfbnVtX29wZW5fZmlsZV9kZXNjcnM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICAoZnVuIGRlZmF1bHQgLT5cbiAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgICAgICAgfl86XG4gICAgICAgICAgICAgICAgICAgIChjb25jYXRcbiAgICAgICAgICAgICAgICAgICAgICAgWyBcIm1pbiBcIlxuICAgICAgICAgICAgICAgICAgICAgICA7IGRlZmF1bHQgfD4gTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzLnJhdyB8PiBJbnQudG9fc3RyaW5nX2h1bVxuICAgICAgICAgICAgICAgICAgICAgICA7IFwiIFt1bGltaXQgLW4gLUhdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgOiBzdHJpbmcpXSlcbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzIGFsbG93ZWQgYXQgYW55IG9uZSB0aW1lLnx9IF0pXG4gICAgICB+bWF4X251bV90aHJlYWRzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNYXhfbnVtX3RocmVhZHMudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGhyZWFkcyB0aGF0IEFzeW5jIHdpbGwgY3JlYXRlIHRvIGRvIGJsb2NraW5nXG4gIHN5c3RlbSBjYWxscyBhbmQgaGFuZGxlIGNhbGxzIHRvIFtJbl90aHJlYWQucnVuXS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQ6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1heF9pbnRlcl9jeWNsZV90aW1lb3V0LnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdGhlIHNjaGVkdWxlciB3aWxsIHBhdXNlIGJldHdlZW4gY3ljbGVzXG4gIHdoZW4gaXQgaGFzIG5vIGpvYnMgYW5kIGlzIGdvaW5nIHRvIHdhaXQgZm9yIEkvTy4gIEluIHByaW5jaXBsZSBvbmVcbiAgZG9lc24ndCBuZWVkIHRoaXMsIGFuZCB3ZSBjb3VsZCB1c2UgYW4gaW5maW5pdGUgdGltZW91dC4gIFdlIGluc3RlYWRcbiAgdXNlIGEgc21hbGwgdGltZW91dCAoYnkgZGVmYXVsdCksIHRvIGJlIG1vcmUgcm9idXN0IHRvIGJ1Z3MgdGhhdFxuICBjb3VsZCBwcmV2ZW50IEFzeW5jIGZyb20gd2FraW5nIHVwIGFuZCBzZXJ2aWNpbmcgZXZlbnRzLiAgRm9yXG4gIGV4YW1wbGUsIGFzIG9mIDIwMTMtMDEsIHRoZSBPQ2FtbCBydW50aW1lIGhhcyBhIGJ1ZyB0aGF0IGNhdXNlcyBpdFxuICB0byBub3QgbmVjZXNzYXJpbHkgcnVuIGFuIE9DYW1sIHNpZ25hbCBoYW5kbGVyIGluIGEgdGltZWx5IG1hbm5lci5cbiAgVGhpcyBpbiB0dXJuIGNhbiBjYXVzZSBhIHNpbXBsZSBBc3luYyBwcm9ncmFtIHRoYXQgaXMgd2FpdGluZyBvbiBhXG4gIHNpZ25hbCB0byBoYW5nLCB3aGVuIGluIGZhY3QgaXQgc2hvdWxkIGhhbmRsZSB0aGUgc2lnbmFsLlxuXG4gIFdlIHVzZSA1MG1zIGFzIHRoZSBkZWZhdWx0IHRpbWVvdXQsIGJlY2F1c2UgaXQgaXMgaW5mcmVxdWVudCBlbm91Z2hcbiAgdG8gaGF2ZSBhIG5lZ2xpZ2libGUgcGVyZm9ybWFuY2UgaW1wYWN0LCBhbmQgZnJlcXVlbnQgZW5vdWdoIHRoYXRcbiAgdGhlIGxhdGVuY3kgd291bGQgdHlwaWNhbGx5IGJlIG5vdCBub3RpY2VhYmxlLiAgQWxzbywgNTBtcyBpcyB3aGF0XG4gIHRoZSBPQ2FtbCB0aWNrZXIgdGhyZWFkIHVzZXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiBqb2JzIHRoYXQgd2lsbCBiZSBkb25lIGF0IGVhY2ggcHJpb3JpdHkgd2l0aGluXG4gIGVhY2ggQXN5bmMgY3ljbGUuICBUaGlzIGxpbWl0cyBob3cgbWFueSBqb2JzIHRoZSBzY2hlZHVsZXIgd2lsbCBydW5cbiAgYmVmb3JlIHBhdXNpbmcgdG8gY2hlY2sgZm9yIEkvTy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWluX2ludGVyX2N5Y2xlX3RpbWVvdXQ6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0LnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1pbmltdW0gdGltZW91dCB0aGUgc2NoZWR1bGVyIHdpbGwgcGFzcyB0byB0aGUgT1Mgd2hlbiBpdCBjaGVja3NcbiAgZm9yIEkvTyBiZXR3ZWVuIGN5Y2xlcy4gIFRoaXMgaXMgemVybyBieSBkZWZhdWx0LiAgU2V0dGluZyBpdCB0byBhXG4gIG5vbnplcm8gdmFsdWUgaXMgdXNlZCB0byBpbmNyZWFzZSB0aHJlYWQgZmFpcm5lc3MgYmV0d2VlbiB0aGUgc2NoZWR1bGVyXG4gIGFuZCBvdGhlciB0aHJlYWRzLiAgQSBwbGF1c2libGUgc2V0dGluZyBpcyAxdXMuICBUaGlzIGlzIGFsc29cbiAgY29uZmlndXJhYmxlIGluIE9DYW1sIHZpYSBbU2NoZWR1bGVyLnNldF9taW5faW50ZXJfY3ljbGVfdGltZW91dF0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnByaW50X2RlYnVnX21lc3NhZ2VzX2ZvcjpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRGVidWdfdGFnLnQgbGlzdF1cbiAgICAgICAgICAgWyB7fFxuICBBIGxpc3Qgb2YgdGFncyBzcGVjaWZ5aW5nIHdoaWNoIEFzeW5jIGZ1bmN0aW9ucyBzaG91bGQgcHJpbnQgZGVidWdcbiAgbWVzc2FnZXMgdG8gc3RkZXJyLiAgRWFjaCB0YWcgaWRlbnRpZmllcyBhIGdyb3VwIG9mIHJlbGF0ZWQgQXN5bmNcbiAgZnVuY3Rpb25zLiAgVGhlIHRhZyBbYWxsXSBtZWFucyB0byBwcmludCBkZWJ1ZyBtZXNzYWdlcyBmb3IgYWxsXG4gIGZ1bmN0aW9ucy4gIEFsbG93ZWQgdmFsdWVzIGFyZTpcblxufH1cbiAgICAgICAgICAgOyBjb25jYXRcbiAgICAgICAgICAgICAgIChMaXN0Lm1hcCBEZWJ1Z190YWcubGlzdCB+ZjooZnVuIGQgLT5cbiAgICAgICAgICAgICAgICAgIGNvbmNhdCBbIFwiICAgIFwiOyBEZWJ1Z190YWcudG9fc3RyaW5nIGQ7IFwiXFxuXCIgXSkpXG4gICAgICAgICAgIDsge3xcbiAgVHVybmluZyBvbiBkZWJ1ZyBtZXNzYWdlcyB3aWxsIHN1YnN0YW50aWFsbHkgc2xvdyBkb3duIG1vc3QgcHJvZ3JhbXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnJlY29yZF9iYWNrdHJhY2VzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAgICBbIHt8XG4gIElmIHRydWUsIHRoaXMgd2lsbCBjYXVzZSBBc3luYyB0byBrZWVwIGluIHRoZSBleGVjdXRpb24gY29udGV4dCB0aGVcbiAgaGlzdG9yeSBvZiBzdGFjayBiYWNrdHJhY2VzIChvYnRhaW5lZCB2aWEgW0JhY2t0cmFjZS5nZXRdKSB0aGF0IGxlZFxuICB0byB0aGUgY3VycmVudCBqb2IuICBJZiBhbiBBc3luYyBqb2IgaGFzIGFuIHVuaGFuZGxlZCBleGNlcHRpb24sXG4gIHRoaXMgYmFja3RyYWNlIGhpc3Rvcnkgd2lsbCBiZSByZWNvcmRlZCBpbiB0aGUgZXhjZXB0aW9uLiAgSW5cbiAgcGFydGljdWxhciB0aGUgaGlzdG9yeSB3aWxsIGFwcGVhciBpbiBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uIHRoYXRcbiAgcmVhY2hlcyB0aGUgbWFpbiBtb25pdG9yLiAgVGhpcyBjYW4gaGF2ZSBhIHN1YnN0YW50aWFsIHBlcmZvcm1hbmNlXG4gIGltcGFjdCwgYm90aCBpbiBydW5uaW5nIHRpbWUgYW5kIHNwYWNlIHVzYWdlLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5yZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF1cbiAgICAgICAgICAgWyB7fFxuICBCeSBkZWZhdWx0LCBBc3luYyB3aWxsIHByaW50IGEgbWVzc2FnZSB0byBzdGRlcnIgZXZlcnkgc2Vjb25kIGlmXG4gIHRoZSB0aHJlYWQgcG9vbCBpcyBzdHVjayBmb3IgbG9uZ2VyIHRoYW4gdGhpcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+dGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5OlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkudF1cbiAgICAgICAgICAgWyB7fFxuICAgV2hldGhlciBhbmQgaG93IHRocmVhZHMgaW4gdGhlIHRocmVhZCBwb29sIHNob3VsZCBiZSBhZmZpbml0aXplZCB0byBDUFVzLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH50aW1pbmdfd2hlZWxfY29uZmlnOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1pbmdfd2hlZWwuQ29uZmlnLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhpcyBpcyB1c2VkIHRvIGFkanVzdCB0aGUgdGltZS9zcGFjZSB0cmFkZW9mZiBpbiB0aGUgdGltaW5nIHdoZWVsXG4gIHVzZWQgdG8gaW1wbGVtZW50IEFzeW5jJ3MgY2xvY2suICBUaW1lIGlzIHNwbGl0IGludG8gaW50ZXJ2YWxzIG9mXG4gIHNpemUgW2FsYXJtX3ByZWNpc2lvbl0sIGFuZCBhbGFybXMgd2l0aCB0aW1lcyBpbiB0aGUgc2FtZSBpbnRlcnZhbFxuICBmaXJlIGluIHRoZSBzYW1lIGN5Y2xlLiAgTGV2ZWwgW2ldIGluIHRoZSB0aW1pbmcgd2hlZWwgaGFzIGFuXG4gIGFycmF5IG9mIHNpemUgWzJeYl0sIHdoZXJlIFtiXSBpcyB0aGUgW2ldJ3RoIGVudHJ5IGluIFtsZXZlbF9iaXRzXS5cbnx9XG4gICAgICAgICAgIF0pXG4gIGluXG4gIGNvbmNhdFxuICAgIChMaXN0Lm1hcFxuICAgICAgIChMaXN0LnNvcnQgZmllbGRzIH5jb21wYXJlOihmdW4gKG5hbWUxLCBfLCBfKSAobmFtZTIsIF8sIF8pIC0+XG4gICAgICAgICAgU3RyaW5nLmNvbXBhcmUgbmFtZTEgbmFtZTIpKVxuICAgICAgIH5mOihmdW4gKG5hbWUsIGRlZmF1bHQsIGRlc2NyaXB0aW9uKSAtPlxuICAgICAgICAgY29uY2F0XG4gICAgICAgICAgIChcIlxcblwiIDo6IG5hbWUgOjogXCIgKGRlZmF1bHQgXCIgOjogU2V4cC50b19zdHJpbmcgZGVmYXVsdCA6OiBcIilcIiA6OiBkZXNjcmlwdGlvbikpKVxuOztcblxubGV0IGhlbHBfbWVzc2FnZSAoKSA9XG4gIGNvbmNhdFxuICAgIFsgXCJUaGUgXCJcbiAgICA7IGVudmlyb25tZW50X3ZhcmlhYmxlXG4gICAgOyB7fCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhZmZlY3RzIEFzeW5jXG5pbiB2YXJpb3VzIHdheXMuICBJdHMgdmFsdWUgc2hvdWxkIGJlIGEgc2V4cCBvZiB0aGUgZm9sbG93aW5nIGZvcm0sXG53aGVyZSBhbGwgZmllbGRzIGFyZSBvcHRpb25hbDpcblxufH1cbiAgICA7IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl90IGV4YW1wbGUpXG4gICAgOyB7fFxuXG5IZXJlIGlzIGFuIGV4cGxhbmF0aW9uIG9mIGVhY2ggZmllbGQuXG58fVxuICAgIDsgZmllbGRfZGVzY3JpcHRpb25zICgpXG4gICAgXVxuOztcblxubGV0IHVzYWdlICgpID1cbiAgZXByaW50ZiBcIiVzJSFcIiAoaGVscF9tZXNzYWdlICgpKTtcbiAgZXhpdCAxXG47O1xuXG5sZXQgdCA9XG4gIG1hdGNoIE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IElucmlhX3N5cy5nZXRlbnYgZW52aXJvbm1lbnRfdmFyaWFibGUpIHdpdGhcbiAgfCBOb25lIC0+IGVtcHR5XG4gIHwgU29tZSBcIlwiIC0+IHVzYWdlICgpXG4gIHwgU29tZSBzdHJpbmcgLT5cbiAgICAobWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gdF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyBzdHJpbmcpKSB3aXRoXG4gICAgIHwgT2sgdCAtPiB0XG4gICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgZXByaW50ZlxuICAgICAgICAgXCIlc1xcblxcblwiXG4gICAgICAgICAoU2V4cC50b19zdHJpbmdfaHVtXG4gICAgICAgICAgICAoRXJyb3Iuc2V4cF9vZl90XG4gICAgICAgICAgICAgICAoRXJyb3IuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgXCJpbnZhbGlkIHZhbHVlIGZvciAlcyBlbnZpcm9ubWVudCB2YXJpYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudF92YXJpYWJsZSlcbiAgICAgICAgICAgICAgICAgIGV4blxuICAgICAgICAgICAgICAgICAgWyVzZXhwX29mOiBleG5dKSkpO1xuICAgICAgIHVzYWdlICgpKVxuOztcblxubW9kdWxlIFByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IHN0cnVjdFxuICBsZXQgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIHRhZyA9XG4gICAgbWF0Y2ggdC5wcmludF9kZWJ1Z19tZXNzYWdlc19mb3Igd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBsIC0+IExpc3QubWVtIGwgdGFnIH5lcXVhbDpEZWJ1Z190YWcuZXF1YWxcbiAgOztcblxuICBsZXQgYWxsID0gcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIEFsbFxuICBsZXQgZGVidWcgdGFnID0gYWxsIHx8IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciB0YWdcbiAgbGV0IGNsb2NrID0gZGVidWcgQ2xvY2tcbiAgbGV0IGZkID0gZGVidWcgRmRcbiAgbGV0IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IGRlYnVnIEZpbGVfZGVzY3Jfd2F0Y2hlclxuICBsZXQgZmluYWxpemVycyA9IGRlYnVnIEZpbmFsaXplcnNcbiAgbGV0IGludGVycnVwdG9yID0gZGVidWcgSW50ZXJydXB0b3JcbiAgbGV0IG1vbml0b3IgPSBkZWJ1ZyBNb25pdG9yXG4gIGxldCBtb25pdG9yX3NlbmRfZXhuID0gZGVidWcgTW9uaXRvcl9zZW5kX2V4blxuICBsZXQgcGFyYWxsZWwgPSBkZWJ1ZyBQYXJhbGxlbFxuICBsZXQgcmVhZGVyID0gZGVidWcgUmVhZGVyXG4gIGxldCBzY2hlZHVsZXIgPSBkZWJ1ZyBTY2hlZHVsZXJcbiAgbGV0IHNodXRkb3duID0gZGVidWcgU2h1dGRvd25cbiAgbGV0IHRocmVhZF9wb29sID0gZGVidWcgVGhyZWFkX3Bvb2xcbiAgbGV0IHRocmVhZF9zYWZlID0gZGVidWcgVGhyZWFkX3NhZmVcbiAgbGV0IHdyaXRlciA9IGRlYnVnIFdyaXRlclxuZW5kXG5cbmxldCAoICEhICkgZmllbGQgPVxuICBPcHRpb24udmFsdWUgKEZpZWxkLmdldCBmaWVsZCB0KSB+ZGVmYXVsdDooT3B0aW9uLnZhbHVlX2V4biAoRmllbGQuZ2V0IGZpZWxkIGRlZmF1bHQpKVxuOztcblxubGV0IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9ICEhRmllbGRzLmFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxubGV0IGNoZWNrX2ludmFyaWFudHMgPSAhIUZpZWxkcy5jaGVja19pbnZhcmlhbnRzXG5sZXQgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkID0gISFGaWVsZHMuZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG5sZXQgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9ICEhRmllbGRzLmVwb2xsX21heF9yZWFkeV9ldmVudHNcbmxldCB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSAhIUZpZWxkcy50aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlcbmxldCBmaWxlX2Rlc2NyX3dhdGNoZXIgPSAhIUZpZWxkcy5maWxlX2Rlc2NyX3dhdGNoZXJcbmxldCBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9ICEhRmllbGRzLm1heF9pbnRlcl9jeWNsZV90aW1lb3V0XG5sZXQgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gISFGaWVsZHMubWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG5sZXQgbWF4X251bV90aHJlYWRzID0gISFGaWVsZHMubWF4X251bV90aHJlYWRzXG5sZXQgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSAhIUZpZWxkcy5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxubGV0IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gISFGaWVsZHMubWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbmxldCByZWNvcmRfYmFja3RyYWNlcyA9ICEhRmllbGRzLnJlY29yZF9iYWNrdHJhY2VzXG5sZXQgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9ICEhRmllbGRzLnJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbmxldCB0aW1pbmdfd2hlZWxfY29uZmlnID0gISFGaWVsZHMudGltaW5nX3doZWVsX2NvbmZpZ1xubGV0IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSAhIUZpZWxkcy5kdW1wX2NvcmVfb25fam9iX2RlbGF5XG5cbmxldCB0ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IGNoZWNrX2ludmFyaWFudHMgPSBTb21lIGNoZWNrX2ludmFyaWFudHNcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBTb21lIGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSBTb21lIGR1bXBfY29yZV9vbl9qb2JfZGVsYXlcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSBTb21lIHRocmVhZF9wb29sX2NwdV9hZmZpbml0eVxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBTb21lIGVwb2xsX21heF9yZWFkeV9ldmVudHNcbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgPSBTb21lIGZpbGVfZGVzY3Jfd2F0Y2hlclxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSBtYXhfaW50ZXJfY3ljbGVfdGltZW91dFxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IFNvbWUgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG4gIDsgbWF4X251bV90aHJlYWRzID0gU29tZSBtYXhfbnVtX3RocmVhZHNcbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9IFNvbWUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IFNvbWUgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSB0LnByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuICA7IHJlY29yZF9iYWNrdHJhY2VzID0gU29tZSByZWNvcmRfYmFja3RyYWNlc1xuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gU29tZSB0aW1pbmdfd2hlZWxfY29uZmlnXG4gIH1cbjs7XG5cbmxldCB0YXNrX2lkID0gcmVmIChmdW4gKCkgLT4gU2V4cC5BdG9tIFwiPG5vIHRhc2sgaWQ+XCIpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgcmVmXG5cbigqIEJlaW5nIGEgcG9pbnRlciwgbm8gb25lIG91dHNpZGUgdGhpcyBtb2R1bGUgY2FuIGNvbnN0cnVjdCBhIHZhbHVlIHRoYXQgaXNcbiAgIFtwaHlzX3NhbWVdIGFzIHRoaXMgb25lLlxuXG4gICB0aGlzIGNvZGUgaXMgZHVwbGljYXRlZCBpbiBPcHRpb25fYXJyYXkuQ2hlYXBfb3B0aW9uLCBhbmQgaWYgd2UgZmluZCB5ZXQgYW5vdGhlclxuICAgcGxhY2Ugd2hlcmUgd2Ugd2FudCBpdCB3ZSBzaG91bGQgcmVjb25zaWRlciBtYWtpbmcgaXQgc2hhcmVkLiAqKVxubGV0IG5vbmUgPSBPYmoub2JqIChPYmoubmV3X2Jsb2NrIE9iai5hYnN0cmFjdF90YWcgMSlcbmxldCBjcmVhdGUgKCkgPSByZWYgbm9uZVxubGV0IGlzX25vbmUgeCA9IHBoeXNfZXF1YWwgIXggbm9uZVxubGV0IGlzX3NvbWUgeCA9IG5vdCAoaXNfbm9uZSB4KVxubGV0IGdldF9zb21lX2V4biB4ID0gaWYgaXNfbm9uZSB4IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNb3B0aW9uLmdldF9zb21lX2V4blwiXSBlbHNlICF4XG5sZXQgZ2V0IHQgPSBpZiBpc19ub25lIHQgdGhlbiBOb25lIGVsc2UgU29tZSAhdFxubGV0IHVuc2FmZV9nZXQgdCA9ICF0XG5sZXQgc2V0X3NvbWUgdCB2ID0gdCA6PSB2XG5sZXQgc2V0X25vbmUgdCA9IHQgOj0gbm9uZVxuXG5sZXQgc2V0IHQgdiA9XG4gIG1hdGNoIHYgd2l0aFxuICB8IE5vbmUgLT4gc2V0X25vbmUgdFxuICB8IFNvbWUgdiAtPiBzZXRfc29tZSB0IHZcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKGdldCB0IDogYSBvcHRpb24pXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIE9wdGlvbi5pdGVyIChnZXQgdCkgfmY6aW52YXJpYW50X2EpXG47O1xuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX2dldFxuICBlbmRcbmVuZFxuIiwib3BlbiEgQ29yZVxubW9kdWxlIFBvb2wgPSBUdXBsZV9wb29sXG5tb2R1bGUgUG9pbnRlciA9IFBvb2wuUG9pbnRlclxuXG4oKiBUaGlzIHBvb2wgaG9sZHMgbm9kZXMgdGhhdCB3b3VsZCBiZSByZXByZXNlbnRlZCBtb3JlIHRyYWRpdGlvbmFsbHkgYXM6XG5cbiAgIHtbXG4gICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgfCBFbXB0eVxuICAgICAgIHwgSGVhcCBvZiAnYSAqICdhIHQgbGlzdCBdfVxuXG4gICBXZSB3aWxsIHJlcHJlc2VudCB0aGVtIGFzIGEgbGVmdC1jaGlsZCwgcmlnaHQtc2libGluZyB0cmVlIGluIGEgdHJpcGxldFxuICAgKHZhbHVlICogbGVmdF9jaGlsZCAqIHJpZ2h0X3NpYmxpbmcpLiAgVGhlIGxlZnQgY2hpbGQgYW5kIGFsbCByaWdodCBzaWJsaW5nc1xuICAgb2YgdGhlIGxlZnQgY2hpbGQgZm9ybSBhIGxpbmtlZCBsaXN0IHJlcHJlc2VudGluZyB0aGUgc3ViaGVhcHMgb2YgYSBnaXZlbiBoZWFwOlxuXG4gICB7dlxuICAgICAgICAgQVxuICAgICAgICAvXG4gICAgICAgQiAtPiBDIC0+IEQgLT4gRSAtPiBGXG4gICAgICAvICAgICAgICAgLyAgICAgICAgIC9cbiAgICAgRyAgICAgICAgIEgtPkktPkogICBLLT5MXG4gICB2fSAqKVxuXG5tb2R1bGUgTm9kZSA6IHNpZ1xuICAoKiBFeHBvc2luZyBbcHJpdmF0ZSBpbnRdIGlzIGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIGJlY2F1c2UgaXQgYWxsb3dzXG4gICAgIHRoZSBjb21waWxlciB0byBza2lwIHRoZSB3cml0ZSBiYXJyaWVyLiAqKVxuXG4gIHR5cGUgJ2EgdCA9IHByaXZhdGUgaW50XG5cbiAgbW9kdWxlIElkIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICBlbmRcblxuICBtb2R1bGUgUG9vbCA6IHNpZ1xuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHRcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBjcmVhdGUgOiBtaW5fc2l6ZTppbnQgLT4gJ2EgdFxuICAgIHZhbCBpc19mdWxsIDogJ2EgdCAtPiBib29sXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gICAgdmFsIGdyb3cgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgY29weSA6ICdhIHQgLT4gJ2Egbm9kZSAtPiAnYSBub2RlICogJ2EgdFxuICBlbmRcblxuICAoKiogW2FsbG9jYXRlIHYgfnBvb2xdIGFsbG9jYXRlcyBhIG5ldyBub2RlIGZyb20gdGhlIHBvb2wgd2l0aCBubyBjaGlsZCBvciBzaWJsaW5nICopXG4gIHZhbCBhbGxvY2F0ZSA6ICdhIC0+IHBvb2w6J2EgUG9vbC50IC0+IGlkOklkLnQgLT4gJ2EgdFxuXG4gICgqKiBbZnJlZSB0IH5wb29sXSBmcmVlcyBbdF0gZm9yIHJldXNlLiAgSXQgaXMgYW4gZXJyb3IgdG8gYWNjZXNzIFt0XSBhZnRlciB0aGlzLiAqKVxuICB2YWwgZnJlZSA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gdW5pdFxuXG4gICgqKiBhIHNwZWNpYWwgW3RdIHRoYXQgcmVwcmVzZW50cyB0aGUgZW1wdHkgbm9kZSAqKVxuICB2YWwgZW1wdHkgOiB1bml0IC0+ICdhIHRcblxuICB2YWwgaXNfZW1wdHkgOiAnYSB0IC0+IGJvb2xcbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcblxuICAoKiogW3ZhbHVlX2V4biB0IH5wb29sXSByZXR1cm4gdGhlIHZhbHVlIG9mIFt0XSwgcmFpc2UgaWYgW2lzX2VtcHR5IHRdICopXG4gIHZhbCB2YWx1ZV9leG4gOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhXG5cbiAgdmFsIGlkIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiBJZC50XG4gIHZhbCBjaGlsZCA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuICB2YWwgc2libGluZyA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBbcHJldiB0XSBpcyBlaXRoZXIgdGhlIHBhcmVudCBvZiBbdF0gb3IgdGhlIHNpYmxpbmcgaW1tZWRpYXRlbHkgbGVmdCBvZiBbdF0gKilcbiAgdmFsIHByZXYgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcblxuICAoKiogW2FkZF9jaGlsZCB0IH5jaGlsZCB+cG9vbF0gQWRkIGEgY2hpbGQgdG8gW3RdLCBwcmVzZXJ2aW5nIGV4aXN0aW5nIGNoaWxkcmVuIGFzXG4gICAgICBzaWJsaW5ncyBvZiBbY2hpbGRdLiBbdF0gYW5kIFtjaGlsZF0gc2hvdWxkIG5vdCBiZSBlbXB0eSBhbmQgW2NoaWxkXSBzaG91bGQgaGF2ZSBub1xuICAgICAgc2libGluZyBhbmQgaGF2ZSBubyBwcmV2IG5vZGUuICopXG4gIHZhbCBhZGRfY2hpbGQgOiAnYSB0IC0+IGNoaWxkOidhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gdW5pdFxuXG4gICgqKiBkaXNjb25uZWN0IGFuZCByZXR1cm4gdGhlIHNpYmxpbmcgKilcbiAgdmFsIGRpc2Nvbm5lY3Rfc2libGluZyA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBkaXNjb25uZWN0IGFuZCByZXR1cm4gdGhlIGNoaWxkICopXG4gIHZhbCBkaXNjb25uZWN0X2NoaWxkIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIFtkZXRhY2ggdCB+cG9vbF0gcmVtb3ZlcyBbdF0gZnJvbSB0aGUgdHJlZSwgYWRqdXN0aW5nIHBvaW50ZXJzIGFyb3VuZCBpdC4gQWZ0ZXJcbiAgICAgIFtkZXRhY2hdLCBbdF0gaXMgdGhlIHJvb3Qgb2YgYSBzdGFuZGFsb25lIGhlYXAsIHdoaWNoIGlzIGRldGFjaGVkIGZyb20gdGhlIG9yaWdpbmFsXG4gICAgICBoZWFwLiAqKVxuICB2YWwgZGV0YWNoIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIElkID0gSW50XG5cbiAgbGV0IGR1bW15X2lkIDogSWQudCA9IC0xXG5cbiAgdHlwZSAnYSBub2RlID1cbiAgICAoJ2EsICdhIG5vZGUgUG9pbnRlci50LCAnYSBub2RlIFBvaW50ZXIudCwgJ2Egbm9kZSBQb2ludGVyLnQsIElkLnQpIFBvb2wuU2xvdHMudDVcblxuICB0eXBlICdhIHQgPSAnYSBub2RlIFBvaW50ZXIudFxuXG4gIGxldCBlbXB0eSA9IFBvaW50ZXIubnVsbFxuICBsZXQgaXNfZW1wdHkgPSBQb2ludGVyLmlzX251bGxcbiAgbGV0IGVxdWFsID0gUG9pbnRlci5waHlzX2VxdWFsXG4gIGxldCB2YWx1ZSB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50MFxuICBsZXQgY2hpbGQgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDFcbiAgbGV0IHNpYmxpbmcgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDJcbiAgbGV0IHByZXYgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDNcbiAgbGV0IGlkIHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQ0XG5cbiAgKCogbGV0IHNldF92YWx1ZSAgIHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDAgdiAqKVxuICBsZXQgc2V0X2NoaWxkIHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDEgdlxuICBsZXQgc2V0X3NpYmxpbmcgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MiB2XG4gIGxldCBzZXRfcHJldiB0IHYgfnBvb2wgPSBQb29sLnNldCBwb29sIHQgUG9vbC5TbG90LnQzIHZcblxuICBsZXQgdmFsdWVfZXhuIHQgfnBvb2wgPVxuICAgIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gICAgdmFsdWUgdCB+cG9vbFxuICA7O1xuXG4gIGxldCBhbGxvY2F0ZSB2YWx1ZSB+cG9vbCB+aWQgPSBQb29sLm5ldzUgcG9vbCB2YWx1ZSAoZW1wdHkgKCkpIChlbXB0eSAoKSkgKGVtcHR5ICgpKSBpZFxuICBsZXQgZnJlZSB0IH5wb29sID0gUG9vbC51bnNhZmVfZnJlZSBwb29sIHRcblxuICBsZXQgZGlzY29ubmVjdF9zaWJsaW5nIHQgfnBvb2wgPVxuICAgIGxldCBzaWJsaW5nID0gc2libGluZyB0IH5wb29sIGluXG4gICAgaWYgbm90IChpc19lbXB0eSBzaWJsaW5nKVxuICAgIHRoZW4gKFxuICAgICAgc2V0X3NpYmxpbmcgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgc2V0X3ByZXYgc2libGluZyAoZW1wdHkgKCkpIH5wb29sKTtcbiAgICBzaWJsaW5nXG4gIDs7XG5cbiAgbGV0IGRpc2Nvbm5lY3RfY2hpbGQgdCB+cG9vbCA9XG4gICAgbGV0IGNoaWxkID0gY2hpbGQgdCB+cG9vbCBpblxuICAgIGlmIG5vdCAoaXNfZW1wdHkgY2hpbGQpXG4gICAgdGhlbiAoXG4gICAgICBzZXRfY2hpbGQgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgc2V0X3ByZXYgY2hpbGQgKGVtcHR5ICgpKSB+cG9vbCk7XG4gICAgY2hpbGRcbiAgOztcblxuICBsZXQgYWRkX2NoaWxkIHQgfmNoaWxkOm5ld19jaGlsZCB+cG9vbCA9XG4gICAgKCogYXNzZXJ0aW9ucyB3ZSB3b3VsZCBtYWtlLCBidXQgZm9yIHNwZWVkOlxuICAgICAgIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gICAgICAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IG5ld19jaGlsZCkpO1xuICAgICAgIGFzc2VydCAoaXNfZW1wdHkgKHNpYmxpbmcgbmV3X2NoaWxkIH5wb29sKSk7XG4gICAgICAgYXNzZXJ0IChpc19lbXB0eSAocHJldiBuZXdfY2hpbGQgfnBvb2wpKTtcbiAgICAqKVxuICAgIGxldCBjdXJyZW50X2NoaWxkID0gZGlzY29ubmVjdF9jaGlsZCB0IH5wb29sIGluXG4gICAgKCogYWRkIFtuZXdfY2hpbGRdIHRvIHRoZSBsaXN0IG9mIFt0XSdzIGNoaWxkcmVuICh3aGljaCBtYXkgYmUgZW1wdHkpICopXG4gICAgc2V0X3NpYmxpbmcgbmV3X2NoaWxkIGN1cnJlbnRfY2hpbGQgfnBvb2w7XG4gICAgaWYgbm90IChpc19lbXB0eSBjdXJyZW50X2NoaWxkKSB0aGVuIHNldF9wcmV2IGN1cnJlbnRfY2hpbGQgbmV3X2NoaWxkIH5wb29sO1xuICAgIHNldF9jaGlsZCB0IG5ld19jaGlsZCB+cG9vbDtcbiAgICBzZXRfcHJldiBuZXdfY2hpbGQgdCB+cG9vbFxuICA7O1xuXG4gIGxldCBkZXRhY2ggdCB+cG9vbCA9XG4gICAgaWYgbm90IChpc19lbXB0eSB0KVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHByZXYgPSBwcmV2IHQgfnBvb2wgaW5cbiAgICAgIGlmIG5vdCAoaXNfZW1wdHkgcHJldilcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgcmVsYXRpb25fdG9fcHJldiA9IGlmIGVxdWFsIHQgKGNoaWxkIHByZXYgfnBvb2wpIHRoZW4gYGNoaWxkIGVsc2UgYHNpYmxpbmcgaW5cbiAgICAgICAgc2V0X3ByZXYgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgICBsZXQgc2libGluZyA9IGRpc2Nvbm5lY3Rfc2libGluZyB0IH5wb29sIGluXG4gICAgICAgIChtYXRjaCByZWxhdGlvbl90b19wcmV2IHdpdGhcbiAgICAgICAgIHwgYGNoaWxkIC0+IHNldF9jaGlsZCBwcmV2IHNpYmxpbmcgfnBvb2xcbiAgICAgICAgIHwgYHNpYmxpbmcgLT4gc2V0X3NpYmxpbmcgcHJldiBzaWJsaW5nIH5wb29sKTtcbiAgICAgICAgaWYgbm90IChpc19lbXB0eSBzaWJsaW5nKSB0aGVuIHNldF9wcmV2IHNpYmxpbmcgcHJldiB+cG9vbCkpXG4gIDs7XG5cbiAgbW9kdWxlIFBvb2wgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBub2RlIFBvb2wudFxuICAgIHR5cGUgbm9ucmVjICdhIG5vZGUgPSAnYSBub2RlIFBvaW50ZXIudFxuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSBhKSB+bWluX3NpemU6Y2FwYWNpdHkgOiBhIHQgPVxuICAgICAgUG9vbC5jcmVhdGVcbiAgICAgICAgUG9vbC5TbG90cy50NVxuICAgICAgICB+Y2FwYWNpdHlcbiAgICAgICAgfmR1bW15OlxuICAgICAgICAgICggKE9iai5tYWdpYyBOb25lIDogYSlcbiAgICAgICAgICAsIFBvaW50ZXIubnVsbCAoKVxuICAgICAgICAgICwgUG9pbnRlci5udWxsICgpXG4gICAgICAgICAgLCBQb2ludGVyLm51bGwgKClcbiAgICAgICAgICAsIGR1bW15X2lkIClcbiAgICA7O1xuXG4gICAgbGV0IGlzX2Z1bGwgdCA9IFBvb2wuaXNfZnVsbCB0XG4gICAgbGV0IGxlbmd0aCB0ID0gUG9vbC5sZW5ndGggdFxuICAgIGxldCBncm93IHQgPSBQb29sLmdyb3cgdFxuXG4gICAgbGV0IGNvcHkgdCBzdGFydCA9XG4gICAgICBsZXQgdCcgPSBjcmVhdGUgfm1pbl9zaXplOihQb29sLmNhcGFjaXR5IHQpIGluXG4gICAgICBsZXQgY29weV9ub2RlIG5vZGUgdG9fdmlzaXQgPVxuICAgICAgICBpZiBpc19lbXB0eSBub2RlXG4gICAgICAgIHRoZW4gZW1wdHkgKCksIHRvX3Zpc2l0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIHdlIHVzZSB0aGUgc2FtZSBpZCwgYnV0IHRoYXQncyBvayBzaW5jZSBpZHMgc2hvdWxkIGJlIHVuaXF1ZSBwZXIgaGVhcCAqKVxuICAgICAgICAgIGxldCBuZXdfbm9kZSA9XG4gICAgICAgICAgICBhbGxvY2F0ZSAodmFsdWVfZXhuIG5vZGUgfnBvb2w6dCkgfnBvb2w6dCcgfmlkOihpZCBub2RlIH5wb29sOnQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdG9fdmlzaXQgPVxuICAgICAgICAgICAgKG5ld19ub2RlLCBgY2hpbGQsIGNoaWxkIG5vZGUgfnBvb2w6dClcbiAgICAgICAgICAgIDo6IChuZXdfbm9kZSwgYHNpYmxpbmcsIHNpYmxpbmcgbm9kZSB+cG9vbDp0KVxuICAgICAgICAgICAgOjogdG9fdmlzaXRcbiAgICAgICAgICBpblxuICAgICAgICAgIG5ld19ub2RlLCB0b192aXNpdClcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGxvb3AgdG9fdmlzaXQgPVxuICAgICAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCAobm9kZV90b191cGRhdGUsIHNsb3QsIG5vZGVfdG9fY29weSkgOjogcmVzdCAtPlxuICAgICAgICAgIGxldCBuZXdfbm9kZSwgdG9fdmlzaXQgPSBjb3B5X25vZGUgbm9kZV90b19jb3B5IHJlc3QgaW5cbiAgICAgICAgICAobWF0Y2ggc2xvdCB3aXRoXG4gICAgICAgICAgIHwgYGNoaWxkIC0+IHNldF9jaGlsZCBub2RlX3RvX3VwZGF0ZSBuZXdfbm9kZSB+cG9vbDp0J1xuICAgICAgICAgICB8IGBzaWJsaW5nIC0+IHNldF9zaWJsaW5nIG5vZGVfdG9fdXBkYXRlIG5ld19ub2RlIH5wb29sOnQnKTtcbiAgICAgICAgICBpZiBub3QgKGlzX2VtcHR5IG5ld19ub2RlKSB0aGVuIHNldF9wcmV2IG5ld19ub2RlIG5vZGVfdG9fdXBkYXRlIH5wb29sOnQnO1xuICAgICAgICAgIGxvb3AgdG9fdmlzaXRcbiAgICAgIGluXG4gICAgICBsZXQgbmV3X3N0YXJ0LCB0b192aXNpdCA9IGNvcHlfbm9kZSBzdGFydCBbXSBpblxuICAgICAgbG9vcCB0b192aXNpdDtcbiAgICAgIG5ld19zdGFydCwgdCdcbiAgICA7O1xuICBlbmRcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7ICgqIGNtcCBpcyBwbGFjZWQgZmlyc3QgdG8gc2hvcnQtY2lyY3VpdCBwb2x5bW9ycGhpYyBjb21wYXJlICopXG4gICAgY21wIDogJ2EgLT4gJ2EgLT4gaW50XG4gIDsgbXV0YWJsZSBwb29sIDogJ2EgTm9kZS5Qb29sLnRcbiAgOyAoKiBpbnZhcmlhbnQ6ICBbcm9vdF0gbmV2ZXIgaGFzIGEgc2libGluZyAqKVxuICAgIG11dGFibGUgcm9vdCA6ICdhIE5vZGUudFxuICA7IG11dGFibGUgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyA6IGludFxuICB9XG5cbmxldCBpbnZhcmlhbnQgXyB0ID1cbiAgbGV0IHJlYyBsb29wIHRvX3Zpc2l0ID1cbiAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgKG5vZGUsIGV4cGVjdGVkX3ByZXYsIG1heWJlX3BhcmVudF92YWx1ZSkgOjogcmVzdCAtPlxuICAgICAgaWYgbm90IChOb2RlLmlzX2VtcHR5IG5vZGUpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRoaXNfdmFsdWUgPSBOb2RlLnZhbHVlX2V4biBub2RlIH5wb29sOnQucG9vbCBpblxuICAgICAgICBhc3NlcnQgKE5vZGUuZXF1YWwgKE5vZGUucHJldiBub2RlIH5wb29sOnQucG9vbCkgZXhwZWN0ZWRfcHJldik7XG4gICAgICAgIE9wdGlvbi5pdGVyIG1heWJlX3BhcmVudF92YWx1ZSB+ZjooZnVuIHBhcmVudF92YWx1ZSAtPlxuICAgICAgICAgIGFzc2VydCAodC5jbXAgcGFyZW50X3ZhbHVlIHRoaXNfdmFsdWUgPD0gMCkpO1xuICAgICAgICBsb29wXG4gICAgICAgICAgKChOb2RlLmNoaWxkIG5vZGUgfnBvb2w6dC5wb29sLCBub2RlLCBTb21lIHRoaXNfdmFsdWUpXG4gICAgICAgICAgIDo6IChOb2RlLnNpYmxpbmcgbm9kZSB+cG9vbDp0LnBvb2wsIG5vZGUsIG1heWJlX3BhcmVudF92YWx1ZSlcbiAgICAgICAgICAgOjogcmVzdCkpXG4gICAgICBlbHNlIGxvb3AgcmVzdFxuICBpblxuICBhc3NlcnQgKE5vZGUuaXNfZW1wdHkgdC5yb290IHx8IE5vZGUuaXNfZW1wdHkgKE5vZGUuc2libGluZyB0LnJvb3QgfnBvb2w6dC5wb29sKSk7XG4gIGxvb3AgWyB0LnJvb3QsIE5vZGUuZW1wdHkgKCksIE5vbmUgXVxuOztcblxubGV0IGNyZWF0ZSA/KG1pbl9zaXplID0gMSkgfmNtcCAoKSA9XG4gIHsgY21wXG4gIDsgcG9vbCA9IE5vZGUuUG9vbC5jcmVhdGUgfm1pbl9zaXplXG4gIDsgcm9vdCA9IE5vZGUuZW1wdHkgKClcbiAgOyBudW1fb2ZfYWxsb2NhdGVkX25vZGVzID0gMFxuICB9XG47O1xuXG5sZXQgY29weSB7IGNtcDsgcG9vbDsgcm9vdDsgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyB9ID1cbiAgbGV0IHJvb3QsIHBvb2wgPSBOb2RlLlBvb2wuY29weSBwb29sIHJvb3QgaW5cbiAgeyBjbXA7IHBvb2w7IHJvb3Q7IG51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgfVxuOztcblxubGV0IGFsbG9jYXRlIHQgdiA9XG4gIGlmIE5vZGUuUG9vbC5pc19mdWxsIHQucG9vbCB0aGVuIHQucG9vbCA8LSBOb2RlLlBvb2wuZ3JvdyB0LnBvb2w7XG4gIHQubnVtX29mX2FsbG9jYXRlZF9ub2RlcyA8LSB0Lm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgKyAxO1xuICBOb2RlLmFsbG9jYXRlIHYgfnBvb2w6dC5wb29sIH5pZDooTm9kZS5JZC5vZl9pbnQgdC5udW1fb2ZfYWxsb2NhdGVkX25vZGVzKVxuOztcblxuKCogdHJhbnNsYXRpb246XG4gICB7W1xuICAgICBtYXRjaCByb290MSwgcm9vdDIgd2l0aFxuICAgICB8IE5vbmUsIGggfCBoLCBOb25lIC0+IGhcbiAgICAgfCBTb21lIChOb2RlICh2MSwgY2hpbGRyZW4xKSksIFNvbWUgKE5vZGUgKHYyLCBjaGlsZHJlbjIpKSAtPlxuICAgICAgIGlmIHYxIDwgdjJcbiAgICAgICB0aGVuIFNvbWUgKE5vZGUgKHYxLCByb290MiA6OiBjaGlsZHJlbjEpKVxuICAgICAgIGVsc2UgU29tZSAoTm9kZSAodjIsIHJvb3QxIDo6IGNoaWxkcmVuMikpXG4gICBdfVxuXG4gICBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgbmVpdGhlciByb290IGhhcyBhIHByZXYgbm9kZSAodXN1YWxseSBiZWNhdXNlIHRoZSBpbnB1dHMgY29tZVxuICAgZnJvbSBbZGlzY29ubmVjdF8qXSBvciBhcmUgdGhlIHRvcCBvZiB0aGUgaGVhcCBvciBhcmUgdGhlIG91dHB1dCBvZiB0aGlzIGZ1bmN0aW9uKS4gKilcbmxldCBtZXJnZSB0IHJvb3QxIHJvb3QyID1cbiAgaWYgTm9kZS5pc19lbXB0eSByb290MVxuICB0aGVuIHJvb3QyXG4gIGVsc2UgaWYgTm9kZS5pc19lbXB0eSByb290MlxuICB0aGVuIHJvb3QxXG4gIGVsc2UgKFxuICAgIGxldCBhZGRfY2hpbGQgdCBub2RlIH5jaGlsZCA9XG4gICAgICBOb2RlLmFkZF9jaGlsZCBub2RlIH5wb29sOnQucG9vbCB+Y2hpbGQ7XG4gICAgICBub2RlXG4gICAgaW5cbiAgICBsZXQgdjEgPSBOb2RlLnZhbHVlX2V4biByb290MSB+cG9vbDp0LnBvb2wgaW5cbiAgICBsZXQgdjIgPSBOb2RlLnZhbHVlX2V4biByb290MiB+cG9vbDp0LnBvb2wgaW5cbiAgICBpZiB0LmNtcCB2MSB2MiA8IDBcbiAgICB0aGVuIGFkZF9jaGlsZCB0IHJvb3QxIH5jaGlsZDpyb290MlxuICAgIGVsc2UgYWRkX2NoaWxkIHQgcm9vdDIgfmNoaWxkOnJvb3QxKVxuOztcblxubGV0IHRvcF9leG4gdCA9XG4gIGlmIE5vZGUuaXNfZW1wdHkgdC5yb290XG4gIHRoZW4gZmFpbHdpdGggXCJIZWFwLnRvcF9leG4gY2FsbGVkIG9uIGFuIGVtcHR5IGhlYXBcIlxuICBlbHNlIE5vZGUudmFsdWVfZXhuIHQucm9vdCB+cG9vbDp0LnBvb2xcbjs7XG5cbmxldCB0b3AgdCA9IGlmIE5vZGUuaXNfZW1wdHkgdC5yb290IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvcF9leG4gdClcblxubGV0IGFkZF9ub2RlIHQgdiA9XG4gIGxldCBub2RlID0gYWxsb2NhdGUgdCB2IGluXG4gIHQucm9vdCA8LSBtZXJnZSB0IHQucm9vdCBub2RlO1xuICBub2RlXG47O1xuXG5sZXQgYWRkIHQgdiA9IGlnbm9yZSAoYWRkX25vZGUgdCB2IDogXyBOb2RlLnQpXG5cbigqIFttZXJnZV9wYWlyc10gdGFrZXMgYSBsaXN0IG9mIGhlYXAgcm9vdHMgYW5kIG1lcmdlcyBjb25zZWN1dGl2ZSBwYWlycywgcmVkdWNpbmcgdGhlXG4gICBsaXN0IG9mIGxlbmd0aCBuIHRvIG4vMi4gIFRoZW4gaXQgbWVyZ2VzIHRoZSBtZXJnZWQgcGFpcnMgaW50byBhIHNpbmdsZSBoZWFwLiAgT25lXG4gICBpbnR1aXRpb24gaXMgdGhhdCB0aGlzIGlzIHNvbWV3aGF0IGxpa2UgYnVpbGRpbmcgYSBzaW5nbGUgbGV2ZWwgb2YgYSBiaW5hcnkgdHJlZS5cblxuICAgVGhlIG91dHB1dCBoZWFwIGRvZXMgbm90IGNvbnRhaW4gdGhlIHZhbHVlIHRoYXQgd2FzIGF0IHRoZSByb290IG9mIHRoZSBpbnB1dCBoZWFwLlxuXG4gICBXZSBicmVhayB0aGUgZnVuY3Rpb24gaW50byB0d28gcGFydHMuICBBIGZpcnN0IHN0YWdlIHRoYXQgaXMgd2lsbGluZyB0byB1c2UgbGltaXRlZFxuICAgc3RhY2sgaW5zdGVhZCBvZiBoZWFwIGFsbG9jYXRpb24gZm9yIGJvb2trZWVwaW5nLCBhbmQgYSBzZWNvbmQgc3RhZ2UgdGhhdCBzaGlmdHMgdG9cbiAgIHVzaW5nIGEgbGlzdCBhcyBhbiBhY2N1bXVsYXRvciBpZiB3ZSBnbyB0b28gZGVlcC5cblxuICAgVGhpcyBjYW4gYmUgbWFkZSB0YWlsIHJlY3Vyc2l2ZSBhbmQgbm9uLWFsbG9jYXRpbmcgYnkgc3RhcnRpbmcgd2l0aCBhbiBlbXB0eSBoZWFwIGFuZFxuICAgbWVyZ2luZyBtZXJnZWQgcGFpcnMgaW50byBpdC4gVW5mb3J0dW5hdGVseSB0aGlzIFwibGVmdCBmb2xkXCIgdmVyc2lvbiBpcyBub3Qgd2hhdCBpc1xuICAgZGVzY3JpYmVkIGluIHRoZSBvcmlnaW5hbCBwYXBlciBieSBGcmVkbWFuIGV0IGFsLjsgdGhleSBzcGVjaWZpY2FsbHkgc2F5IHRoYXRcbiAgIGNoaWxkcmVuIHNob3VsZCBiZSBtZXJnZWQgdG9nZXRoZXIgZnJvbSB0aGUgZW5kIG9mIHRoZSBsaXN0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlXG4gICBsaXN0LiAoW21lcmdlXSBpcyBub3QgYXNzb2NpYXRpdmUsIHNvIG9yZGVyIG1hdHRlcnMuKVxuKilcbigqIHRyYW5zbGF0aW9uOlxuICAge1tcbiAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICB8IFtoZWFkXSAtPiBoZWFkIDo6IGFjY1xuICAgICAgIHwgaGVhZCA6OiBuZXh0MSA6OiBuZXh0MiAtPiBsb29wIChtZXJnZSBoZWFkIG5leHQxIDo6IGFjYykgbmV4dDJcbiAgICAgaW5cbiAgICAgbWF0Y2ggbG9vcCBbXSBjaGlsZHJlbiB3aXRoXG4gICAgIHwgW10gLT4gTm9uZVxuICAgICB8IFtoXSAtPiBTb21lIGhcbiAgICAgfCB4IDo6IHhzIC0+IFNvbWUgKExpc3QuZm9sZCB4cyB+aW5pdDp4IH5mOm1lcmdlKVxuICAgXX1cbiopXG5sZXQgYWxsb2NhdGluZ19tZXJnZV9wYWlycyB0IGhlYWQgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGhlYWQgPVxuICAgIGlmIE5vZGUuaXNfZW1wdHkgaGVhZFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmV4dDEgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBoZWFkIH5wb29sOnQucG9vbCBpblxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBuZXh0MVxuICAgICAgdGhlbiBoZWFkIDo6IGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXh0MiA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIG5leHQxIH5wb29sOnQucG9vbCBpblxuICAgICAgICBsb29wIChtZXJnZSB0IGhlYWQgbmV4dDEgOjogYWNjKSBuZXh0MikpXG4gIGluXG4gIG1hdGNoIGxvb3AgW10gaGVhZCB3aXRoXG4gIHwgW10gLT4gTm9kZS5lbXB0eSAoKVxuICB8IFsgaCBdIC0+IGhcbiAgfCB4IDo6IHhzIC0+IExpc3QuZm9sZCB4cyB+aW5pdDp4IH5mOihmdW4gYWNjIGhlYXAgLT4gbWVyZ2UgdCBhY2MgaGVhcClcbjs7XG5cbigqIHRyYW5zbGF0aW9uOlxuICAge1tcbiAgICAgbWF0Y2ggdC5yb290IHdpdGhcbiAgICAgfCBOb2RlIChfLCBjaGlsZHJlbikgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZGVwdGggY2hpbGRyZW4gPVxuICAgICAgICAgaWYgZGVwdGggPj0gbWF4X3N0YWNrX2RlcHRoXG4gICAgICAgICB0aGVuIGFsbG9jYXRpbmdfbWVyZ2VfcGFpcnMgdCBjaGlsZGVuXG4gICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgIG1hdGNoIGNoaWxkcmVuIHdpdGhcbiAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgIHwgW2hlYWRdIC0+IFNvbWUgaGVhZFxuICAgICAgICAgICB8IGhlYWQgOjogbmV4dDEgOjogbmV4dDIgLT5cbiAgICAgICAgICAgICBtZXJnZSAobWVyZ2UgaGVhZCBuZXh0MSkgKGxvb3AgKGRlcHRoICsgMSkgbmV4dDIpXG4gICAgICAgICBlbmRcbiAgICAgICBpblxuICAgICAgIGxvb3AgMCBjaGlsZHJlblxuICAgXX1cbiopXG5sZXQgbWVyZ2VfcGFpcnMgPVxuICBsZXQgbWF4X3N0YWNrX2RlcHRoID0gMV8wMDAgaW5cbiAgbGV0IHJlYyBsb29wIHQgZGVwdGggaGVhZCA9XG4gICAgaWYgZGVwdGggPj0gbWF4X3N0YWNrX2RlcHRoXG4gICAgdGhlbiBhbGxvY2F0aW5nX21lcmdlX3BhaXJzIHQgaGVhZFxuICAgIGVsc2UgaWYgTm9kZS5pc19lbXB0eSBoZWFkXG4gICAgdGhlbiBoZWFkXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmV4dDEgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBoZWFkIH5wb29sOnQucG9vbCBpblxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBuZXh0MVxuICAgICAgdGhlbiBoZWFkXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5leHQyID0gTm9kZS5kaXNjb25uZWN0X3NpYmxpbmcgbmV4dDEgfnBvb2w6dC5wb29sIGluXG4gICAgICAgICgqIG1lcmdlIHRoZSBmaXJzdCB0d28gbm9kZXMgaW4gb3VyIGxpc3QsIGFuZCB0aGVuIG1lcmdlIHRoZSByZXN1bHQgd2l0aCB0aGVcbiAgICAgICAgICAgcmVzdWx0IG9mIHJlY3Vyc2l2ZWx5IGNhbGxpbmcgbWVyZ2VfcGFpcnMgb24gdGhlIHRhaWwgKilcbiAgICAgICAgbWVyZ2UgdCAobWVyZ2UgdCBoZWFkIG5leHQxKSAobG9vcCB0IChkZXB0aCArIDEpIG5leHQyKSkpXG4gIGluXG4gIGZ1biB0IGhlYWQgLT4gbG9vcCB0IDAgaGVhZFxuOztcblxubGV0IHJlbW92ZV9ub25fZW1wdHkgdCBub2RlID1cbiAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgTm9kZS5kZXRhY2ggbm9kZSB+cG9vbDtcbiAgbGV0IG1lcmdlZF9jaGlsZHJlbiA9IG1lcmdlX3BhaXJzIHQgKE5vZGUuZGlzY29ubmVjdF9jaGlsZCBub2RlIH5wb29sKSBpblxuICBsZXQgbmV3X3Jvb3QgPVxuICAgIGlmIE5vZGUuZXF1YWwgdC5yb290IG5vZGUgdGhlbiBtZXJnZWRfY2hpbGRyZW4gZWxzZSBtZXJnZSB0IHQucm9vdCBtZXJnZWRfY2hpbGRyZW5cbiAgaW5cbiAgTm9kZS5mcmVlIG5vZGUgfnBvb2w7XG4gIHQucm9vdCA8LSBuZXdfcm9vdFxuOztcblxubGV0IHJlbW92ZV90b3AgdCA9IGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0LnJvb3QpIHRoZW4gcmVtb3ZlX25vbl9lbXB0eSB0IHQucm9vdFxuXG4oKiBOb3RlIHRoYXQgdGhpcyBpcyB0YWlsLXJlY3Vyc2l2ZSBhbmQgdGhhdCBlYWNoIG5vZGUgaXMgdmlzaXRlZCBhdCBtb3N0IDMgdGltZXMgKG9uY2VcbiAgIGZvciBlYWNoIGJyYW5jaCBvZiB0aGUgXCJpZlwiKSwgc28gaXQgdGFrZXMgbGluZWFyIHRpbWUgYW5kIGNvbnN0YW50IHNwYWNlLiAqKVxubGV0IHJlYyByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBub2RlIH5wb29sID1cbiAgbGV0IGNoaWxkID0gTm9kZS5jaGlsZCBub2RlIH5wb29sIGluXG4gIGxldCBzaWJsaW5nID0gTm9kZS5zaWJsaW5nIG5vZGUgfnBvb2wgaW5cbiAgaWYgbm90IChOb2RlLmlzX2VtcHR5IGNoaWxkKVxuICB0aGVuIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IGNoaWxkIH5wb29sXG4gIGVsc2UgaWYgbm90IChOb2RlLmlzX2VtcHR5IHNpYmxpbmcpXG4gIHRoZW4gcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgc2libGluZyB+cG9vbFxuICBlbHNlIChcbiAgICBsZXQgcHJldiA9IE5vZGUucHJldiBub2RlIH5wb29sIGluXG4gICAgTm9kZS5kZXRhY2ggbm9kZSB+cG9vbDtcbiAgICBOb2RlLmZyZWUgbm9kZSB+cG9vbDtcbiAgICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgcHJldikgdGhlbiByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBwcmV2IH5wb29sKVxuOztcblxubGV0IGNsZWFyIHQgPVxuICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgdC5yb290KVxuICB0aGVuIChcbiAgICByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSB0LnJvb3QgfnBvb2w6dC5wb29sO1xuICAgIHQucm9vdCA8LSBOb2RlLmVtcHR5ICgpKVxuOztcblxubGV0IHBvcF9leG4gdCA9XG4gIGxldCByID0gdG9wX2V4biB0IGluXG4gIHJlbW92ZV90b3AgdDtcbiAgclxuOztcblxubGV0IHBvcCB0ID0gaWYgTm9kZS5pc19lbXB0eSB0LnJvb3QgdGhlbiBOb25lIGVsc2UgU29tZSAocG9wX2V4biB0KVxuXG5sZXQgcG9wX2lmIHQgZiA9XG4gIG1hdGNoIHRvcCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHYgLT5cbiAgICBpZiBmIHZcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZV90b3AgdDtcbiAgICAgIFNvbWUgdilcbiAgICBlbHNlIE5vbmVcbjs7XG5cbigqIHBhaXJpbmcgaGVhcHMgYXJlIG5vdCBiYWxhbmNlZCB0cmVlcywgYW5kIHRoZXJlZm9yZSB3ZSBjYW4ndCByZWx5IG9uIGEgYmFsYW5jZVxuICAgcHJvcGVydHkgdG8gc3RvcCBvdXJzZWx2ZXMgZnJvbSBvdmVyZmxvd2luZyB0aGUgc3RhY2suICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyB0b192aXNpdCA9XG4gICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBub2RlIDo6IHJlc3QgLT5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbm9kZVxuICAgICAgdGhlbiBsb29wIGFjYyByZXN0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHRvX3Zpc2l0ID0gTm9kZS5zaWJsaW5nIH5wb29sIG5vZGUgOjogTm9kZS5jaGlsZCB+cG9vbCBub2RlIDo6IHJlc3QgaW5cbiAgICAgICAgbG9vcCAoZiBhY2MgKE5vZGUudmFsdWVfZXhuIH5wb29sIG5vZGUpKSB0b192aXNpdClcbiAgaW5cbiAgbG9vcCBpbml0IFsgdC5yb290IF0gW0Bub250YWlsXVxuOztcblxuKCogYWxtb3N0IGlkZW50aWNhbCB0byBmb2xkLCBjb3BpZWQgZm9yIHNwZWVkIHB1cnBvc2VzICopXG5sZXQgaXRlciB0IH5mID1cbiAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgbGV0IHJlYyBsb29wIHRvX3Zpc2l0ID1cbiAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgbm9kZSA6OiByZXN0IC0+XG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5vZGVcbiAgICAgIHRoZW4gbG9vcCByZXN0XG4gICAgICBlbHNlIChcbiAgICAgICAgZiAoTm9kZS52YWx1ZV9leG4gfnBvb2wgbm9kZSk7XG4gICAgICAgIGxldCB0b192aXNpdCA9IE5vZGUuc2libGluZyB+cG9vbCBub2RlIDo6IE5vZGUuY2hpbGQgfnBvb2wgbm9kZSA6OiByZXN0IGluXG4gICAgICAgIGxvb3AgdG9fdmlzaXQpXG4gIGluXG4gIGxvb3AgWyB0LnJvb3QgXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSBOb2RlLlBvb2wubGVuZ3RoIHQucG9vbFxuXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgaXNfZW1wdHkgdCA9IE5vZGUuaXNfZW1wdHkgdC5yb290XG5sZXQgbWVtID0gQy5tZW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCBvZl9hcnJheSBhcnIgfmNtcCA9XG4gIGxldCB0ID0gY3JlYXRlIH5taW5fc2l6ZTooQXJyYXkubGVuZ3RoIGFycikgfmNtcCAoKSBpblxuICBBcnJheS5pdGVyIGFyciB+ZjooZnVuIHYgLT4gYWRkIHQgdik7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0IGwgfmNtcCA9IG9mX2FycmF5IChBcnJheS5vZl9saXN0IGwpIH5jbXBcbmxldCBzZXhwX29mX3QgZiB0ID0gQXJyYXkuc2V4cF9vZl90IGYgKHRvX2FycmF5IHQgfD4gQXJyYXkuc29ydGVkX2NvcHkgfmNvbXBhcmU6dC5jbXApXG5cbm1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIG5vZGUgOiAnYSBOb2RlLnRcbiAgICA7IG5vZGVfaWQgOiBOb2RlLklkLnRcbiAgICA7IGhlYXAgOiAnYSB0XG4gICAgfVxuXG4gICgqIElmIGlkcyBhcmUgZGlmZmVyZW50LCBpdCBtZWFucyB0aGF0IHRoZSBub2RlIGhhcyBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBieSBzb21lXG4gICAgIG90aGVyIG1lYW5zIChhbmQgcG9zc2libHkgcmV1c2VkKS4gKilcbiAgbGV0IGlzX25vZGVfdmFsaWQgdCA9IE5vZGUuSWQuZXF1YWwgKE5vZGUuaWQgfnBvb2w6dC5oZWFwLnBvb2wgdC5ub2RlKSB0Lm5vZGVfaWRcblxuICBsZXQgdmFsdWUgdCA9XG4gICAgaWYgaXNfbm9kZV92YWxpZCB0IHRoZW4gU29tZSAoTm9kZS52YWx1ZV9leG4gdC5ub2RlIH5wb29sOnQuaGVhcC5wb29sKSBlbHNlIE5vbmVcbiAgOztcblxuICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgIGlmIGlzX25vZGVfdmFsaWQgdFxuICAgIHRoZW4gTm9kZS52YWx1ZV9leG4gdC5ub2RlIH5wb29sOnQuaGVhcC5wb29sXG4gICAgZWxzZSBmYWlsd2l0aCBcIkhlYXAudmFsdWVfZXhuOiBub2RlIHdhcyByZW1vdmVkIGZyb20gdGhlIGhlYXBcIlxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKHZhbHVlIHQgOiBhIG9wdGlvbildXG5lbmRcblxubGV0IHJlbW92ZSB0ICh0b2tlbiA6IF8gRWx0LnQpID1cbiAgaWYgbm90IChwaHlzX2VxdWFsIHQgdG9rZW4uaGVhcClcbiAgdGhlbiBmYWlsd2l0aCBcImNhbm5vdCByZW1vdmUgZnJvbSBhIGRpZmZlcmVudCBoZWFwXCJcbiAgZWxzZSBpZiBub3QgKE5vZGUuaXNfZW1wdHkgdG9rZW4ubm9kZSlcbiAgdGhlbiAoXG4gICAgaWYgRWx0LmlzX25vZGVfdmFsaWQgdG9rZW4gdGhlbiByZW1vdmVfbm9uX2VtcHR5IHQgdG9rZW4ubm9kZTtcbiAgICB0b2tlbi5ub2RlIDwtIE5vZGUuZW1wdHkgKCkpXG47O1xuXG5sZXQgYWRkX3JlbW92YWJsZSB0IHYgPVxuICBsZXQgbm9kZSA9IGFkZF9ub2RlIHQgdiBpblxuICB7IEVsdC5ub2RlOyBoZWFwID0gdDsgbm9kZV9pZCA9IE5vZGUuaWQgfnBvb2w6dC5wb29sIG5vZGUgfVxuOztcblxubGV0IHVwZGF0ZSB0IHRva2VuIHYgPVxuICByZW1vdmUgdCB0b2tlbjtcbiAgYWRkX3JlbW92YWJsZSB0IHZcbjs7XG5cbmxldCBmaW5kX2VsdCA9XG4gIGxldCByZWMgbG9vcCB0IGYgbm9kZXMgPVxuICAgIG1hdGNoIG5vZGVzIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IG5vZGUgOjogcmVzdCAtPlxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBub2RlXG4gICAgICB0aGVuIGxvb3AgdCBmIHJlc3RcbiAgICAgIGVsc2UgaWYgZiAoTm9kZS52YWx1ZV9leG4gbm9kZSB+cG9vbDp0LnBvb2wpXG4gICAgICB0aGVuIFNvbWUgeyBFbHQubm9kZTsgaGVhcCA9IHQ7IG5vZGVfaWQgPSBOb2RlLmlkIH5wb29sOnQucG9vbCBub2RlIH1cbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCB0IGYgKE5vZGUuc2libGluZyBub2RlIH5wb29sOnQucG9vbCA6OiBOb2RlLmNoaWxkIG5vZGUgfnBvb2w6dC5wb29sIDo6IHJlc3QpXG4gIGluXG4gIGZ1biB0IH5mIC0+IGxvb3AgdCBmIFsgdC5yb290IF1cbjs7XG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgaGVhcCA9ICdhIHRcbiAgICB0eXBlICdhIHQgPSAnYSBOb2RlLnRcblxuICAgIGxldCB2YWx1ZSB0IGhlYXAgPSBOb2RlLnZhbHVlX2V4biB+cG9vbDpoZWFwLnBvb2wgdFxuICBlbmRcblxuICBsZXQgYWRkX3JlbW92YWJsZSA9IGFkZF9ub2RlXG4gIGxldCByZW1vdmUgPSByZW1vdmVfbm9uX2VtcHR5XG5cbiAgbGV0IHVwZGF0ZSB0IGVsdCB2ID1cbiAgICByZW1vdmUgdCBlbHQ7XG4gICAgYWRkX3JlbW92YWJsZSB0IHZcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHZhbCBhbV9ydW5uaW5nX3Rlc3QgOiBib29sXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHBdXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgYSA9XG4gICAgaWYgTS5hbV9ydW5uaW5nX3Rlc3QgdGhlbiBTZXhwLkF0b20gXCI8aGlkZGVuX2luX3Rlc3Q+XCIgZWxzZSBzZXhwX29mX2EgYVxuICA7O1xuXG4gIG1vZHVsZSBXaXRoX25vbl9yb3VuZHRyaXBwaW5nX2luX3Rlc3Rfb2Zfc2V4cCA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHBdXG4gIGVuZFxuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBtb2R1bGUgVHVybmVkX29mZiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29mZiA9IE1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSBmYWxzZVxuICAgICAgICBlbmQpXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdF90dXJuZWRfb2ZmLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUdXJuZWRfb24gPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vbiA9IE1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSB0cnVlXG4gICAgICAgIGVuZClcblxuICAgICAgdHlwZSBub25yZWMgdCA9IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vbi50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJUdXJuZWQgb25cIiA9XG4gICAgICBwcmludF9zIFslc2V4cCAoMTAyNCA6IFR1cm5lZF9vbi50KV07XG4gICAgICBbJWV4cGVjdCB7fCA8aGlkZGVuX2luX3Rlc3Q+IHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJUdXJuZWQgb2ZmXCIgPVxuICAgICAgcHJpbnRfcyAoWyVzZXhwX29mOiBUdXJuZWRfb2ZmLnRdIDEwMjQpO1xuICAgICAgWyVleHBlY3Qge3wgMTAyNCB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuXG5pbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSBhbV9ydW5uaW5nX3Rlc3RcbiAgZW5kKVxuIiwib3BlbiBCYXNlXG5cbnR5cGUgKydhIHRcblxuKCogVGhpcyBbT2JqLm1hZ2ljXSBpcyBPSyBiZWNhdXNlIHdlIG5ldmVyIGFsbG93IHVzZXIgY29kZSBhY2Nlc3MgdG8gW25vbmVdIChleGNlcHQgdmlhXG4gICBbdW5zYWZlX3ZhbHVlXSkuICBXZSBkaXNhbGxvdyBbXyBVb3B0LnQgVW9wdC50XSwgc28gdGhlcmUgaXMgbm8gY2hhbmNlIG9mIGNvbmZ1c2luZ1xuICAgW25vbmVdIHdpdGggW3NvbWUgbm9uZV0uICBBbmQgW2Zsb2F0IFVvcHQudCBhcnJheV0gaXMgc2ltaWxhcmx5IGRpc2FsbG93ZWQuICopXG5sZXQgbm9uZSA6ICdhIHQgPSBTdGRsaWIuT2JqLm1hZ2ljIFwiVW9wdC5ub25lXCJcblxubGV0W0BpbmxpbmVdIHNvbWUgKHggOiAnYSkgPVxuICBsZXQgciA6ICdhIHQgPSBTdGRsaWIuT2JqLm1hZ2ljIHggaW5cbiAgaWYgcGh5c19lcXVhbCByIG5vbmUgdGhlbiBmYWlsd2l0aCBcIlVvcHQuc29tZSBVb3B0Lm5vbmVcIjtcbiAgclxuOztcblxubGV0IHNvbWVfbG9jYWwgPSBTdGRsaWIuT2JqLm1hZ2ljIHNvbWVcbmxldCBzb21lX2xvY2FsIDogJ2EuICgnYVtAbG9jYWxdKSAtPiAoJ2EgdFtAbG9jYWxdKSA9IHNvbWVfbG9jYWxcbmxldCB1bnNhZmVfdmFsdWUgKHggOiAnYSB0KSA6ICdhID0gU3RkbGliLk9iai5tYWdpYyB4XG5sZXQgdW5zYWZlX3ZhbHVlX2xvY2FsID0gU3RkbGliLk9iai5tYWdpYyB1bnNhZmVfdmFsdWVcbmxldCB1bnNhZmVfdmFsdWVfbG9jYWwgOiAnYS4gKCdhIHRbQGxvY2FsXSkgLT4gKCdhW0Bsb2NhbF0pID0gdW5zYWZlX3ZhbHVlX2xvY2FsXG5sZXQgaXNfbm9uZSB0ID0gcGh5c19lcXVhbCB0IG5vbmVcbmxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGlmIGlzX3NvbWUgdCB0aGVuIGludmFyaWFudF9hICh1bnNhZmVfdmFsdWUgdClcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gIGlmIGlzX25vbmUgdCB0aGVuIFslc2V4cCBOb25lXSBlbHNlIFslc2V4cCBTb21lICh1bnNhZmVfdmFsdWUgdCA6IGEpXVxuOztcblxubGV0IHZhbHVlX2V4biB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gZmFpbHdpdGggXCJVb3B0LnZhbHVlX2V4blwiIGVsc2UgdW5zYWZlX3ZhbHVlIHRcbmxldCB0b19vcHRpb24gdCA9IGlmIGlzX25vbmUgdCB0aGVuIE5vbmUgZWxzZSBTb21lICh1bnNhZmVfdmFsdWUgdClcblxubGV0IG9mX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBub25lXG4gIHwgU29tZSBhIC0+IHNvbWUgYVxuOztcblxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuc2FmZV92YWx1ZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTG9jYWwgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuc2FmZV92YWx1ZV9sb2NhbFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5sZXQldGVzdF9tb2R1bGUgXyA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0JWV4cGVjdF90ZXN0IChcInVzaW5nIHRoZSBzYW1lIHNlbnRpbmVsIHZhbHVlXCIgW0B0YWdzIFwibm8tanNcIl0pID1cbiAgICAgIG1hdGNoIHNvbWUgXCJVb3B0Lm5vbmVcIiB3aXRoXG4gICAgICB8IChfIDogc3RyaW5nIHQpIC0+IGZhaWx3aXRoIFwic2hvdWxkIG5vdCBoYXZlIGdvdHRlbiB0byB0aGlzIHBvaW50XCJcbiAgICAgIHwgZXhjZXB0aW9uIF8gLT4gKClcbiAgICA7O1xuICBlbmQpXG47O1xuIiwiKCogVGhpcyBtb2R1bGUgZXhwbG9pdHMgdGhlIGZhY3QgdGhhdCBPQ2FtbCBkb2VzIG5vdCBwZXJmb3JtIGNvbnRleHQtc3dpdGNoZXMgdW5kZXJcbiAgIGNlcnRhaW4gY29uZGl0aW9ucy4gIEl0IGNhbiB0aGVyZWZvcmUgYXZvaWQgdXNpbmcgbXV0ZXhlcy5cblxuICAgR2l2ZW4gdGhlIHNlbWFudGljcyBvZiB0aGUgY3VycmVudCBPQ2FtbCBydW50aW1lIChhbmQgZm9yIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUpLCBjb2RlXG4gICBzZWN0aW9ucyBkb2N1bWVudGVkIGFzIGF0b21pYyBiZWxvdyB3aWxsIG5ldmVyIGNvbnRhaW4gYSBjb250ZXh0LXN3aXRjaC4gIFRoZSBkZWNpZGluZ1xuICAgY3JpdGVyaW9uIGlzIHdoZXRoZXIgdGhleSBjb250YWluIGFsbG9jYXRpb25zIG9yIGNhbGxzIHRvIGV4dGVybmFsL2J1aWx0aW4gZnVuY3Rpb25zLlxuICAgSWYgdGhlcmUgaXMgbm9uZSwgYSBjb250ZXh0LXN3aXRjaCBjYW5ub3QgaGFwcGVuLiAgQXNzaWdubWVudHMgd2l0aG91dCBhbGxvY2F0aW9ucyxcbiAgIGZpZWxkIGFjY2VzcywgcGF0dGVybi1tYXRjaGluZywgZXRjLiwgZG8gbm90IHRyaWdnZXIgY29udGV4dC1zd2l0Y2hlcy5cblxuICAgQ29kZSByZXZpZXdlcnMgc2hvdWxkIHRoZXJlZm9yZSBtYWtlIHN1cmUgdGhhdCB0aGUgc2VjdGlvbnMgZG9jdW1lbnRlZCBhcyBhdG9taWMgYmVsb3dcbiAgIGRvIG5vdCB2aW9sYXRlIHRoZSBhYm92ZSBhc3N1bXB0aW9ucy4gIEl0IGlzIHBydWRlbnQgdG8gZGlzYXNzZW1ibGUgdGhlIC5vIGZpbGUgKHVzaW5nXG4gICBbb2JqZHVtcCAtZHJdKSBhbmQgZXhhbWluZSBpdC4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgdmFsdWUgOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dCA6ICgnYSB0IFVvcHQudFtAc2V4cC5vcGFxdWVdKVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlICgpID0geyB2YWx1ZSA9IFVvcHQubm9uZTsgbmV4dCA9IFVvcHQubm9uZSB9XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAoKiBbZnJvbnRdIHRvIFtiYWNrXSBoYXMgW2xlbmd0aCArIDFdIGxpbmtlZCBlbGVtZW50cywgd2hlcmUgdGhlIGZpcnN0IFtsZW5ndGhdIGhvbGQgdGhlXG4gICAgIHZhbHVlcyBpbiB0aGUgcXVldWUsIGFuZCB0aGUgbGFzdCBpcyBbYmFja10sIGhvbGRpbmcgbm8gdmFsdWUuICopXG4gIDsgbXV0YWJsZSBmcm9udCA6ICdhIEVsdC50XG4gIDsgbXV0YWJsZSBiYWNrIDogJ2EgRWx0LnRcbiAgKCogW3VudXNlZF9lbHRzXSBpcyBzaW5nbHkgbGlua2VkIHZpYSBbbmV4dF0sIGFuZCBlbmRzIHdpdGggW3NlbnRpbmVsXS4gIEFsbCBlbHRzIGluXG4gICAgIFt1bnVzZWRfZWx0c10gaGF2ZSBbVW9wdC5pc19ub25lIGVsdC52YWx1ZV0uICopXG4gIDsgbXV0YWJsZSB1bnVzZWRfZWx0cyA6ICdhIEVsdC50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOihjaGVjayAoZnVuIGxlbmd0aCAtPiBhc3NlcnQgKGxlbmd0aCA+PSAwKSkpXG4gICAgICB+ZnJvbnQ6XG4gICAgICAgIChjaGVjayAoZnVuIGZyb250IC0+XG4gICAgICAgICAgIGxldCBpID0gcmVmIHQubGVuZ3RoIGluXG4gICAgICAgICAgIGxldCByID0gcmVmIGZyb250IGluXG4gICAgICAgICAgIHdoaWxlICFpID4gMCBkb1xuICAgICAgICAgICAgIGRlY3IgaTtcbiAgICAgICAgICAgICBsZXQgZWx0ID0gIXIgaW5cbiAgICAgICAgICAgICByIDo9IFVvcHQudmFsdWVfZXhuIGVsdC5FbHQubmV4dDtcbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfc29tZSBlbHQudmFsdWUpXG4gICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCAhciB0LmJhY2spKSlcbiAgICAgIH5iYWNrOihjaGVjayAoZnVuIGJhY2sgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgYmFjay5FbHQudmFsdWUpKSlcbiAgICAgIH51bnVzZWRfZWx0czpcbiAgICAgICAgKGNoZWNrIChmdW4gdW51c2VkX2VsdHMgLT5cbiAgICAgICAgICAgbGV0IHIgPSByZWYgdW51c2VkX2VsdHMgaW5cbiAgICAgICAgICAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgICAgICAgICAgbGV0IGVsdCA9IFVvcHQudmFsdWVfZXhuICFyIGluXG4gICAgICAgICAgICAgciA6PSBlbHQuRWx0Lm5leHQ7XG4gICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX25vbmUgZWx0LnZhbHVlKVxuICAgICAgICAgICBkb25lKSkpXG47O1xuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IGVsdCA9IEVsdC5jcmVhdGUgKCkgaW5cbiAgeyBmcm9udCA9IGVsdDsgYmFjayA9IGVsdDsgbGVuZ3RoID0gMDsgdW51c2VkX2VsdHMgPSBVb3B0Lm5vbmUgfVxuOztcblxubGV0IGdldF91bnVzZWRfZWx0IHQgPVxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICBpZiBVb3B0LmlzX3NvbWUgdC51bnVzZWRfZWx0c1xuICB0aGVuIChcbiAgICBsZXQgZWx0ID0gVW9wdC51bnNhZmVfdmFsdWUgdC51bnVzZWRfZWx0cyBpblxuICAgIHQudW51c2VkX2VsdHMgPC0gZWx0Lm5leHQ7XG4gICAgZWx0ICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKSlcbiAgZWxzZSBFbHQuY3JlYXRlICgpXG47O1xuXG5sZXQgZW5xdWV1ZSAodHlwZSBhKSAodCA6IGEgdCkgKGEgOiBhKSA9XG4gIGxldCBuZXdfYmFjayA9IGdldF91bnVzZWRfZWx0IHQgaW5cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxO1xuICB0LmJhY2sudmFsdWUgPC0gVW9wdC5zb21lIGE7XG4gIHQuYmFjay5uZXh0IDwtIFVvcHQuc29tZSBuZXdfYmFjaztcbiAgdC5iYWNrIDwtIG5ld19iYWNrXG47O1xuXG4oKiBFTkQgQVRPTUlDIFNFQ1RJT04gKilcblxubGV0IHJldHVybl91bnVzZWRfZWx0IHQgKGVsdCA6IF8gRWx0LnQpID1cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgZWx0LnZhbHVlIDwtIFVvcHQubm9uZTtcbiAgZWx0Lm5leHQgPC0gdC51bnVzZWRfZWx0cztcbiAgdC51bnVzZWRfZWx0cyA8LSBVb3B0LnNvbWUgZWx0O1xuICAoKiBFTkQgQVRPTUlDIFNFQ1RJT04gKilcbiAgKClcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfZGVxdWV1ZV9lbXB0eSB0ID1cbiAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biBvZiBlbXB0eSBxdWV1ZVwiIHQgWyVzZXhwX29mOiBfIHRdXG47O1xuXG5sZXQgZGVxdWV1ZV9leG4gdCA9XG4gICgqIEJFR0lOIEFUT01JQyBTRUNUSU9OICopXG4gIGlmIHQubGVuZ3RoID0gMCB0aGVuIHJhaXNlX2RlcXVldWVfZW1wdHkgdDtcbiAgbGV0IGVsdCA9IHQuZnJvbnQgaW5cbiAgbGV0IGEgPSBlbHQudmFsdWUgaW5cbiAgdC5mcm9udCA8LSBVb3B0LnVuc2FmZV92YWx1ZSBlbHQubmV4dDtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAoKiBFTkQgQVRPTUlDIFNFQ1RJT04gKilcbiAgcmV0dXJuX3VudXNlZF9lbHQgdCBlbHQ7XG4gIFVvcHQudW5zYWZlX3ZhbHVlIGFcbjs7XG5cbmxldCBjbGVhcl9pbnRlcm5hbF9wb29sIHQgPSB0LnVudXNlZF9lbHRzIDwtIFVvcHQubm9uZVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgVW9wdCA9IFVvcHRcbmVuZFxuIiwiaW5jbHVkZSBDb3JlLkNvcmVfcHJpdmF0ZS5UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5cbigqIFthZnRlcl0gaXMgbGlrZSBbYWRkXSwgYnV0IGRlYWxzIG5pY2VseSB3aXRoIHRoZSBjYXNlIG9mIG92ZXJmbG93IGJ5IGluc3RlYWQgcmV0dXJuaW5nXG4gICBbbWF4X3ZhbHVlXS4gIFRpbWUtc291cmNlIGZ1bmN0aW9ucyB1c2UgW2FmdGVyXSB0byBhdm9pZCBpbW1lZGlhdGVseSBmaXJpbmcgZXZlbnRzIHRoYXRcbiAgIHNob3VsZCBuZXZlciBmaXJlLCBkdWUgdG8gdGhlIG92ZXJmbG93IGxlYWRpbmcgdG8gYSBuZWdhdGl2ZSB0aW1lIHRoYXQgYXBwZWFycyB0byBiZSBpblxuICAgdGhlIHBhc3QuICBXZSBkb24ndCBjaGVjayB1bmRlcmZsb3cgYmVjYXVzZSB0aGF0IGlzIHZlcnkgdW5saWtlbHksIHJlcXVpcmluZyBib3RoIGFcbiAgIG5lZ2F0aXZlIHRpbWUgYW5kIGEgbmVnYXRpdmUgc3Bhbi4gKilcbmxldCBhZnRlciB0IHNwYW4gPVxuICBsZXQgcmVzdWx0ID0gYWRkIHQgc3BhbiBpblxuICBpZiBTcGFuLiggPiApIHNwYW4gU3Bhbi56ZXJvICYmIHJlc3VsdCA8IHQgdGhlbiBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyBlbHNlIHJlc3VsdFxuOztcbiIsIm1vZHVsZSBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5ID0gVGltZV9uc1xub3BlbiBDb3JlXG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnlcbmluY2x1ZGUgQXN5bmNfa2VybmVsX2NvbmZpZy5QcmludF9kZWJ1Z19tZXNzYWdlc19mb3JcblxubGV0IGxvZyBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgZXByaW50ZlxuICAgIFwiJXNcXG4lIVwiXG4gICAgKFNleHAudG9fc3RyaW5nX2h1bVxuICAgICAgIChbJXNleHBfb2Y6IFNleHAudCAqIFRpbWVfbnMudCAqIHN0cmluZyAqIGFdXG4gICAgICAgICAgKCFBc3luY19rZXJuZWxfY29uZmlnLnRhc2tfaWQgKCksIFRpbWVfbnMubm93ICgpLCBtZXNzYWdlLCBhKSkpXG47O1xuXG5sZXQgbG9nX3N0cmluZyBtZXNzYWdlID0gbG9nIG1lc3NhZ2UgKCkgWyVzZXhwX29mOiB1bml0XVxuIiwibW9kdWxlIERlYnVnX2luX3RoaXNfZGlyZWN0b3J5ID0gRGVidWdcbm1vZHVsZSBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5ID0gVGltZV9uc1xub3BlbiEgQ29yZVxuaW5jbHVkZSBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgRGVidWcgPSBEZWJ1Z19pbl90aGlzX2RpcmVjdG9yeVxubW9kdWxlIFRpbWVfbnMgPSBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5XG5tb2R1bGUgUG9vbCA9IFR1cGxlX3Bvb2xcblxubW9kdWxlIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID1cbiAgQXN5bmNfa2VybmVsX2NvbmZpZy5NYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuXG5sZXQgY29uY2F0ID0gU3RyaW5nLmNvbmNhdFxubGV0IGVwcmludCA9IENvcmUuRGVidWcuZXByaW50XG5sZXQgZXByaW50X3MgPSBDb3JlLkRlYnVnLmVwcmludF9zXG5sZXQgZXByaW50cyA9IENvcmUuRGVidWcuZXByaW50c1xubGV0IHByaW50X3Mgc2V4cCA9IHByaW50ZiBcIiVzXFxuJSFcIiAoc2V4cCB8PiBTZXhwLnRvX3N0cmluZ19odW0pXG5sZXQgc2VjID0gVGltZV9ucy5TcGFuLm9mX3NlY1xuXG4oKiBXZSBkb24ndCB3YW50IHRvIHVzZSB0aGVzZSBtb2R1bGVzIGluIEFzeW5jX2tlcm5lbCwgdG8gYXZvaWQgZGlmZmljdWx0aWVzIHdpdGhcbiAgIHVzaW5nIGl0IG9uIGpzX29mX29jYW1sLiAqKVxubW9kdWxlIFRocmVhZCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBVbml4ID0gc3RydWN0IGVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTm9ybWFsXG4gIHwgTG93XG5bQEBkZXJpdmluZyBzZXhwX29mLCBlbnVtZXJhdGVdXG5cbmxldCBub3JtYWwgPSBOb3JtYWxcbmxldCBsb3cgPSBMb3dcbiIsIigqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBtdXR1YWxseSByZWN1cnNpdmUgdHlwZXMgYXQgdGhlIGhlYXJ0IG9mIEFzeW5jLiAgVGhlIGZ1bmN0aW9uc1xuICAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0eXBlcyBhcmUgZGVmaW5lZCBpbiB0aGUgY29ycmVzcG9uZGluZyBmaWxlKHMpIGZvciBlYWNoIG1vZHVsZS5cbiAgIFRoaXMgZmlsZSBzaG91bGQgZGVmaW5lIG9ubHkgdHlwZXMsIG5vdCBmdW5jdGlvbnMsIHNpbmNlIGZ1bmN0aW9ucyBkZWZpbmVkIGluc2lkZSB0aGVcbiAgIHJlY3Vyc2l2ZSBtb2R1bGVzIGFyZSBub3QgaW5saW5lZC5cblxuICAgSWYgeW91IG5lZWQgdG8gYWRkIGZ1bmN0aW9uYWxpdHkgdG8gYSBtb2R1bGUgYnV0IGRvaW5nIHNvIHdvdWxkIGNyZWF0ZSBhIGRlcGVuZGVuY3lcbiAgIGN5Y2xlLCBzcGxpdCB0aGUgZmlsZSBpbnRvIHBpZWNlcyBhcyBuZWVkZWQgdG8gYnJlYWsgdGhlIGN5Y2xlLCBlLmcuIHNjaGVkdWxlcjAubWwsXG4gICBzY2hlZHVsZXIxLm1sLCBzY2hlZHVsZXIubWwuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgcmVjIENlbGwgOiBzaWdcbiAgdHlwZSBhbnkgPVxuICAgIFsgYEVtcHR5XG4gICAgfCBgRW1wdHlfb25lX2hhbmRsZXJcbiAgICB8IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgIHwgYEZ1bGxcbiAgICB8IGBJbmRpclxuICAgIF1cblxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgOlxuICAgICAgICB7IG11dGFibGUgcnVuIDogJ2EgLT4gdW5pdFxuICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgICA7IG11dGFibGUgcHJldiA6ICdhIEhhbmRsZXIudFxuICAgICAgICA7IG11dGFibGUgbmV4dCA6ICdhIEhhbmRsZXIudFxuICAgICAgICB9XG4gICAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIHRcbiAgICB8IEVtcHR5X29uZV9oYW5kbGVyIDpcbiAgICAgICAgKCdhIC0+IHVuaXQpICogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfaGFuZGxlciBdKSB0XG4gICAgfCBFbXB0eSA6ICgnYSwgWz4gYEVtcHR5IF0pIHRcbiAgICB8IEZ1bGwgOiAnYSAtPiAoJ2EsIFs+IGBGdWxsIF0pIHRcbiAgICB8IEluZGlyIDogJ2EgSXZhci50IC0+ICgnYSwgWz4gYEluZGlyIF0pIHRcbmVuZCA9XG4gIENlbGxcblxuYW5kIEhhbmRsZXIgOiBzaWdcbiAgdHlwZSAnYSB0ID0gKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBDZWxsLnRcbmVuZCA9XG4gIEhhbmRsZXJcblxuYW5kIEl2YXIgOiBzaWdcbiAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIGNlbGwgOiAoJ2EsIENlbGwuYW55KSBDZWxsLnQgfVxuXG4gIG1vZHVsZSBJbW11dGFibGUgOiBzaWdcbiAgICB0eXBlICdhIHQgPSB7IGNlbGwgOiAoJ2EsIENlbGwuYW55KSBDZWxsLnQgfVxuICBlbmRcbmVuZCA9XG4gIEl2YXJcblxuYW5kIERlZmVycmVkIDogc2lnXG4gIHR5cGUgKyEnYSB0XG5lbmQgPVxuICBEZWZlcnJlZFxuXG5hbmQgRXhlY3V0aW9uX2NvbnRleHQgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgICA7IHByaW9yaXR5IDogUHJpb3JpdHkudFxuICAgIDsgbG9jYWxfc3RvcmFnZSA6IFVuaXZfbWFwLnRcbiAgICA7IGJhY2t0cmFjZV9oaXN0b3J5IDogQmFja3RyYWNlLnQgbGlzdFxuICAgIH1cbmVuZCA9XG4gIEV4ZWN1dGlvbl9jb250ZXh0XG5cbmFuZCBGb3J3YXJkaW5nIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgfCBEZXRhY2hlZFxuICAgIHwgUGFyZW50IG9mIE1vbml0b3IudFxuICAgIHwgUmVwb3J0X3VuY2F1Z2h0X2V4blxuZW5kID1cbiAgRm9yd2FyZGluZ1xuXG5hbmQgTW9uaXRvciA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbmFtZSA6IEluZm8udFxuICAgIDsgaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgb3B0aW9uXG4gICAgOyBpZCA6IGludFxuICAgIDsgbXV0YWJsZSBuZXh0X2Vycm9yIDogZXhuIEl2YXIudFxuICAgIDsgbXV0YWJsZSBoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyA6IChFeGVjdXRpb25fY29udGV4dC50ICogKGV4biAtPiB1bml0KSkgQmFnLnRcbiAgICA7IG11dGFibGUgdGFpbHNfZm9yX2FsbF9lcnJvcnMgOiBleG4gVGFpbC50IGxpc3RcbiAgICA7IG11dGFibGUgaGFzX3NlZW5fZXJyb3IgOiBib29sXG4gICAgOyBtdXRhYmxlIGZvcndhcmRpbmcgOiBGb3J3YXJkaW5nLnRcbiAgICB9XG5lbmQgPVxuICBNb25pdG9yXG5cbmFuZCBUYWlsIDogc2lnXG4gIHR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBuZXh0IDogJ2EgU3RyZWFtLm5leHQgSXZhci50IH1cbmVuZCA9XG4gIFRhaWxcblxuYW5kIFN0cmVhbSA6IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBuZXh0IERlZmVycmVkLnRcblxuICBhbmQgJ2EgbmV4dCA9XG4gICAgfCBOaWxcbiAgICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5lbmQgPVxuICBTdHJlYW1cblxuKCogV2UgYXZvaWQgdXNpbmcgW21vZHVsZSByZWNdIHRvIGRlZmluZSBbQnZhcl0sIHNvIHRoYXQgW3RvX3JlcHJdIGFuZCBbb2ZfcmVwcl0gYXJlXG4gICBpbmxpbmVkLiAqKVxubW9kdWxlIEJ2YXIgOiBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybWlzc2lvbikgdFxuXG4gICgqKiBbcmVwcl0gZXhpc3RzIHNvIHRoYXQgd2UgbWF5IGhpZGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgW0J2YXIudF0sIGFuZCB0aGVuIGFkZCBhXG4gICAgICBwaGFudG9tIHR5cGUgdG8gaXQgdXBzdHJlYW0uICBXaXRob3V0IHRoaXMsIHRoZSBwaGFudG9tIHR5cGUgdmFyaWFibGUgd291bGQgYWxsb3dcbiAgICAgIGZvciBhbnl0aGluZyB0byBiZSBjb2VyY2VkIGluIGFuZCBvdXQsIHNpbmNlIGl0IGlzIHVudXNlZC4gKilcbiAgdHlwZSAnYSByZXByID1cbiAgICB7IG11dGFibGUgaGFzX2FueV93YWl0ZXJzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBpdmFyIDogJ2EgSXZhci50XG4gICAgfVxuXG4gIHZhbCBvZl9yZXByIDogJ2EgcmVwciAtPiAoJ2EsICdwZXJtaXNzaW9uKSB0XG4gIHZhbCB0b19yZXByIDogKCdhLCAncGVybWlzc2lvbikgdCAtPiAnYSByZXByXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSByZXByID1cbiAgICB7IG11dGFibGUgaGFzX2FueV93YWl0ZXJzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBpdmFyIDogJ2EgSXZhci50XG4gICAgfVxuXG4gIHR5cGUgKCdhLCAncGVybWlzc2lvbikgdCA9ICdhIHJlcHJcblxuICBsZXQgdG9fcmVwciB0ID0gdFxuICBsZXQgb2ZfcmVwciB0ID0gdFxuZW5kXG5cbm1vZHVsZSByZWMgRXZlbnQgOiBzaWdcbiAgbW9kdWxlIFN0YXR1cyA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEZpcmVkXG4gICAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudFxuICAgICAgfCBTY2hlZHVsZWRcbiAgICAgIHwgVW5zY2hlZHVsZWRcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGlvbiA6IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50XG4gICAgOyBtdXRhYmxlIGF0IDogVGltZV9ucy50XG4gICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIG5leHRfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICA7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICB9XG5lbmQgPVxuICBFdmVudFxuXG5hbmQgRXh0ZXJuYWxfam9iIDogc2lnXG4gIHR5cGUgdCA9IFQgOiBFeGVjdXRpb25fY29udGV4dC50ICogKCdhIC0+IHVuaXQpICogJ2EgLT4gdFxuZW5kID1cbiAgRXh0ZXJuYWxfam9iXG5cbmFuZCBKb2IgOiBzaWdcbiAgdHlwZSBzbG90cyA9IChFeGVjdXRpb25fY29udGV4dC50LCBPYmoudCAtPiB1bml0LCBPYmoudCkgUG9vbC5TbG90cy50M1xuICB0eXBlIHQgPSBzbG90cyBQb29sLlBvaW50ZXIudFxuZW5kID1cbiAgSm9iXG5cbmFuZCBKb2Jfb3JfZXZlbnQgOiBzaWdcbiAgdHlwZSB0XG5lbmQgPVxuICBKb2Jfb3JfZXZlbnRcblxuYW5kIEpvYl9wb29sIDogc2lnXG4gIHR5cGUgdCA9IEpvYi5zbG90cyBQb29sLnRcbmVuZCA9XG4gIEpvYl9wb29sXG5cbmFuZCBKb2JfcXVldWUgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgbnVtX2pvYnNfcnVuIDogaW50XG4gICAgOyBtdXRhYmxlIGpvYnNfbGVmdF90aGlzX2N5Y2xlIDogaW50XG4gICAgOyBtdXRhYmxlIGpvYnMgOiBPYmoudCBVbmlmb3JtX2FycmF5LnRcbiAgICA7IG11dGFibGUgbWFzayA6IGludFxuICAgIDsgbXV0YWJsZSBmcm9udCA6IGludFxuICAgIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7IG11dGFibGUgYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgICB9XG5lbmQgPVxuICBKb2JfcXVldWVcblxuYW5kIEpvYnMgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IHNjaGVkdWxlciA6IFNjaGVkdWxlci50XG4gICAgOyBtdXRhYmxlIGpvYl9wb29sIDogSm9iX3Bvb2wudFxuICAgIDsgbm9ybWFsIDogSm9iX3F1ZXVlLnRcbiAgICA7IGxvdyA6IEpvYl9xdWV1ZS50XG4gICAgfVxuZW5kID1cbiAgSm9ic1xuXG5hbmQgU2NoZWR1bGVyIDogc2lnXG5cbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY2hlY2tfYWNjZXNzIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGpvYl9wb29sIDogSm9iX3Bvb2wudFxuICAgIDsgbm9ybWFsX3ByaW9yaXR5X2pvYnMgOiBKb2JfcXVldWUudFxuICAgIDsgbG93X3ByaW9yaXR5X2pvYnMgOiBKb2JfcXVldWUudFxuICAgIDsgdmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyA6IFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50IERlcXVlLnRcbiAgICA7IG11dGFibGUgbWFpbl9leGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgdW5jYXVnaHRfZXhuIDogKEV4bi50ICogU2V4cC50KSBvcHRpb25cbiAgICA7IG11dGFibGUgY3ljbGVfY291bnQgOiBpbnRcbiAgICA7IG11dGFibGUgY3ljbGVfc3RhcnQgOiBUaW1lX25zLnRcbiAgICA7IG11dGFibGUgaW5fY3ljbGUgOiBib29sXG4gICAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA6IEN5Y2xlX2hvb2sudCBhcnJheVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIDogKEN5Y2xlX2hvb2tfaGFuZGxlLnQsIEN5Y2xlX2hvb2sudCkgSGFzaHRibC50XG4gICAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9lbmQgOiBDeWNsZV9ob29rLnQgYXJyYXlcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgOiAoQ3ljbGVfaG9va19oYW5kbGUudCwgQ3ljbGVfaG9vay50KSBIYXNodGJsLnRcbiAgICA7IG11dGFibGUgbGFzdF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgbGFzdF9jeWNsZV9udW1fam9icyA6IGludFxuICAgIDsgbXV0YWJsZSB0b3RhbF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgdGltZV9zb3VyY2UgOiByZWFkX3dyaXRlIFRpbWVfc291cmNlLnQxXG4gICAgOyBleHRlcm5hbF9qb2JzIDogRXh0ZXJuYWxfam9iLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICAgIDsgbXV0YWJsZSB0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA6IHVuaXQgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBqb2JfcXVldWVkX2hvb2sgOiAoUHJpb3JpdHkudCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgZXZlbnRfYWRkZWRfaG9vayA6IChUaW1lX25zLnQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBtdXRhYmxlIHlpZWxkIDogKHVuaXQsIHJlYWRfd3JpdGUpIEJ2YXIudFxuICAgIDsgbXV0YWJsZSB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA6ICh1bml0LCByZWFkX3dyaXRlKSBCdmFyLnRcbiAgICA7IG11dGFibGUgY2hlY2tfaW52YXJpYW50cyA6IGJvb2xcbiAgICA7IG11dGFibGUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XG4gICAgOyBtdXRhYmxlIHJlY29yZF9iYWNrdHJhY2VzIDogYm9vbFxuICAgIH1cbmVuZCA9XG4gIFNjaGVkdWxlclxuXG5hbmQgQ3ljbGVfaG9vayA6IHNpZ1xuICB0eXBlIHQgPSB1bml0IC0+IHVuaXRcbmVuZCA9XG4gIEN5Y2xlX2hvb2tcblxuYW5kIEN5Y2xlX2hvb2tfaGFuZGxlIDogVW5pcXVlX2lkLklkID0gVW5pcXVlX2lkLkludDYzICgpXG5hbmQgVGltZV9zb3VyY2VfaWQgOiBVbmlxdWVfaWQuSWQgPSBVbmlxdWVfaWQuSW50NjMgKClcblxuYW5kIFRpbWVfc291cmNlIDogc2lnXG4gIHR5cGUgLSdydyB0MSA9XG4gICAgeyBpZCA6IFRpbWVfc291cmNlX2lkLnRcbiAgICA7IG11dGFibGUgYWR2YW5jZV9lcnJvcnMgOiBFcnJvci50IGxpc3RcbiAgICA7IG11dGFibGUgYW1fYWR2YW5jaW5nIDogYm9vbFxuICAgIDsgZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLnRcbiAgICA7IG11dGFibGUgZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7IG11dGFibGUgbW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyBoYW5kbGVfZmlyZWQgOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udCAtPiB1bml0XG4gICAgOyBpc193YWxsX2Nsb2NrIDogYm9vbFxuICAgIDsgc2NoZWR1bGVyIDogU2NoZWR1bGVyLnRcbiAgICB9XG5lbmQgPVxuICBUaW1lX3NvdXJjZVxuXG5hbmQgVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyIDogc2lnXG4gIG1vZHVsZSBFeGVjX3Jlc3VsdCA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEZpbmlzaGVkXG4gICAgICB8IE5vdF9maW5pc2hlZFxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBleGVjIDogdW5pdCAtPiBFeGVjX3Jlc3VsdC50XG4gICAgfVxuZW5kID1cbiAgVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyXG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5cbmxldCBkZWJ1ZyA9IERlYnVnLm1vbml0b3JcblxubW9kdWxlIEZvcndhcmRpbmcgPSBUeXBlcy5Gb3J3YXJkaW5nXG5cbnR5cGUgdCA9IFR5cGVzLk1vbml0b3IudCA9XG4gIHsgbmFtZSA6IEluZm8udFxuICA7IGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50IG9wdGlvblxuICA7IGlkIDogaW50XG4gIDsgbXV0YWJsZSBuZXh0X2Vycm9yIDogZXhuIFR5cGVzLkl2YXIudFxuICA7ICgqIFtNb25pdG9yLnNlbmRfZXhuXSBzY2hlZHVsZXMgYSBqb2IgZm9yIGVhY2ggZWxlbWVudCBvZiBbaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNdLiAqKVxuICAgIG11dGFibGUgaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgOiAoVHlwZXMuRXhlY3V0aW9uX2NvbnRleHQudCAqIChleG4gLT4gdW5pdCkpIEJhZy50XG4gIDsgKCogW01vbml0b3Iuc2VuZF9leG5dIGV4dGVuZHMgZWFjaCB0YWlsIGluIFt0YWlsc19mb3JfYWxsX2Vycm9yc10uICopXG4gICAgbXV0YWJsZSB0YWlsc19mb3JfYWxsX2Vycm9ycyA6IGV4biBUeXBlcy5UYWlsLnQgbGlzdFxuICA7IG11dGFibGUgaGFzX3NlZW5fZXJyb3IgOiBib29sXG4gIDsgbXV0YWJsZSBmb3J3YXJkaW5nIDogRm9yd2FyZGluZy50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxubGV0IGRlc2NyaXB0aW9uIHQgPVxuICBtYXRjaCB0LmhlcmUgd2l0aFxuICB8IE5vbmUgLT4gWyVzZXhwICh0Lm5hbWUgOiBJbmZvLnQpXVxuICB8IFNvbWUgaGVyZSAtPiBbJXNleHAgKHQubmFtZSA6IEluZm8udCksIChoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG47O1xuXG5sZXQgZGVzY3JpcHRpb25zID1cbiAgbGV0IHJlYyBsb29wIHQgYWMgPVxuICAgIGxldCBhYyA9IGRlc2NyaXB0aW9uIHQgOjogYWMgaW5cbiAgICBtYXRjaCB0LmZvcndhcmRpbmcgd2l0aFxuICAgIHwgRGV0YWNoZWQgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+IExpc3QucmV2IGFjXG4gICAgfCBQYXJlbnQgdCAtPiBsb29wIHQgYWNcbiAgaW5cbiAgZnVuIHQgLT4gbG9vcCB0IFtdXG47O1xuXG5sZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKGRlc2NyaXB0aW9ucyB0IDogU2V4cC50IGxpc3QpXVxuXG5sZXQgbmV4dF9pZCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfcGFyZW50ID9oZXJlID9pbmZvID9uYW1lIHBhcmVudCA9XG4gIGxldCBpZCA9IG5leHRfaWQgKCkgaW5cbiAgbGV0IG5hbWUgPVxuICAgIG1hdGNoIGluZm8sIG5hbWUgd2l0aFxuICAgIHwgU29tZSBpLCBOb25lIC0+IGlcbiAgICB8IFNvbWUgaSwgU29tZSBzIC0+IEluZm8udGFnIGkgfnRhZzpzXG4gICAgfCBOb25lLCBTb21lIHMgLT4gSW5mby5vZl9zdHJpbmcgc1xuICAgIHwgTm9uZSwgTm9uZSAtPiBJbmZvLmNyZWF0ZSBcImlkXCIgaWQgWyVzZXhwX29mOiBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdC50XVxuICBpblxuICBsZXQgdCA9XG4gICAgeyBuYW1lXG4gICAgOyBoZXJlXG4gICAgOyBmb3J3YXJkaW5nID1cbiAgICAgICAgKG1hdGNoIHBhcmVudCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gUmVwb3J0X3VuY2F1Z2h0X2V4blxuICAgICAgICAgfCBTb21lIHBhcmVudCAtPiBQYXJlbnQgcGFyZW50KVxuICAgIDsgaWRcbiAgICA7IG5leHRfZXJyb3IgPSB7IGNlbGwgPSBFbXB0eSB9XG4gICAgOyBoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyA9IEJhZy5jcmVhdGUgKClcbiAgICA7IHRhaWxzX2Zvcl9hbGxfZXJyb3JzID0gW11cbiAgICA7IGhhc19zZWVuX2Vycm9yID0gZmFsc2VcbiAgICB9XG4gIGluXG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiY3JlYXRlZCBtb25pdG9yXCIgdCBbJXNleHBfb2Y6IHRdO1xuICB0XG47O1xuXG5sZXQgbWFpbiA9IGNyZWF0ZV93aXRoX3BhcmVudCB+bmFtZTpcIm1haW5cIiBOb25lXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvcjBcblxudHlwZSB0ID0gVHlwZXMuRXhlY3V0aW9uX2NvbnRleHQudCA9XG4gIHsgbW9uaXRvciA6IE1vbml0b3IudFxuICA7IHByaW9yaXR5IDogUHJpb3JpdHkudFxuICA7IGxvY2FsX3N0b3JhZ2UgOiBVbml2X21hcC50XG4gIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxubGV0IG1haW4gPVxuICB7IG1vbml0b3IgPSBNb25pdG9yLm1haW5cbiAgOyBwcmlvcml0eSA9IFByaW9yaXR5Lm5vcm1hbFxuICA7IGxvY2FsX3N0b3JhZ2UgPSBVbml2X21hcC5lbXB0eVxuICA7IGJhY2t0cmFjZV9oaXN0b3J5ID0gW11cbiAgfVxuOztcblxubGV0IGNyZWF0ZV9saWtlID9tb25pdG9yID9wcmlvcml0eSA/bG9jYWxfc3RvcmFnZSB0ID1cbiAgbWF0Y2ggbW9uaXRvciwgcHJpb3JpdHksIGxvY2FsX3N0b3JhZ2Ugd2l0aFxuICB8IE5vbmUsIE5vbmUsIE5vbmUgLT5cbiAgICAoKiBhdm9pZCBhbGxvY2F0aW5nIGluIHRoZSB0cml2aWFsIGNhc2UsIHdoaWNoIGUuZy4gaGFwcGVucyB3aGVuIGNhbGxpbmdcbiAgICAgICBbQXN5bmMuc2NoZWR1bGVdIHdpdGhvdXQgb3B0aW9uYWwgYXJncyAqKVxuICAgIHRcbiAgfCBfIC0+XG4gICAgbGV0IG1vbml0b3IgPSBPcHRpb24udmFsdWUgbW9uaXRvciB+ZGVmYXVsdDp0Lm1vbml0b3IgaW5cbiAgICB7IG1vbml0b3JcbiAgICA7IHByaW9yaXR5ID0gT3B0aW9uLnZhbHVlIHByaW9yaXR5IH5kZWZhdWx0OnQucHJpb3JpdHlcbiAgICA7IGxvY2FsX3N0b3JhZ2UgPSBPcHRpb24udmFsdWUgbG9jYWxfc3RvcmFnZSB+ZGVmYXVsdDp0LmxvY2FsX3N0b3JhZ2VcbiAgICA7IGJhY2t0cmFjZV9oaXN0b3J5ID0gdC5iYWNrdHJhY2VfaGlzdG9yeVxuICAgIH1cbjs7XG5cbmxldCBmaW5kX2xvY2FsIHQga2V5ID0gVW5pdl9tYXAuZmluZCB0LmxvY2FsX3N0b3JhZ2Uga2V5XG5cbmxldCB3aXRoX2xvY2FsIHQga2V5IGRhdGEgPVxuICB7IHQgd2l0aCBsb2NhbF9zdG9yYWdlID0gVW5pdl9tYXAuY2hhbmdlIHQubG9jYWxfc3RvcmFnZSBrZXkgfmY6KGZ1biBfIC0+IGRhdGEpIH1cbjs7XG5cbmxldCByZWNvcmRfYmFja3RyYWNlIHQgPVxuICB7IHQgd2l0aCBiYWNrdHJhY2VfaGlzdG9yeSA9IEJhY2t0cmFjZS5nZXQgKCkgOjogdC5iYWNrdHJhY2VfaGlzdG9yeSB9XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFR5cGVzLkV4dGVybmFsX2pvYlxuXG5sZXQgc2V4cF9vZl90IF8gPSBTZXhwLkF0b20gXCI8am9iPlwiXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gUG9vbFxuXG5sZXQgZHVtbXlfZSA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbmxldCBkdW1teV9mIDogT2JqLnQgLT4gdW5pdCA9IGlnbm9yZVxubGV0IGR1bW15X2EgOiBPYmoudCA9IE9iai5yZXByICgpXG5cbnR5cGUgc2xvdHMgPSAoRXhlY3V0aW9uX2NvbnRleHQudCwgT2JqLnQgLT4gdW5pdCwgKE9iai50W0BzZXhwLm9wYXF1ZV0pKSBTbG90cy50M1xuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSB0ID0gc2xvdHMgUG9vbC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9IFBvb2wuaW52YXJpYW50IGlnbm9yZSB0XG5sZXQgY3JlYXRlICgpID0gY3JlYXRlIFNsb3RzLnQzIH5jYXBhY2l0eToxIH5kdW1teTooZHVtbXlfZSwgZHVtbXlfZiwgZHVtbXlfYSlcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBKb2JfcG9vbC5zbG90cyBQb29sLlBvaW50ZXIudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRXZlbnQgPSBUeXBlcy5FdmVudFxubW9kdWxlIEpvYiA9IFR5cGVzLkpvYlxuaW5jbHVkZSBUeXBlcy5Kb2Jfb3JfZXZlbnRcblxuKCogVGhpcyByZWRlZmluaXRpb24gb2YgW0V2ZW50XSBpcyBoZXJlIHNvIHRoZSB0eXBlIGNoZWNrcyBhcmUgcmlnaHQgbmV4dCB0b1xuICAgW09iai5tYWdpY11zLiAqKVxubW9kdWxlIF8gOiBzaWcgZW5kID0gc3RydWN0XG4gIG9wZW4gVHlwZXNcbiAgb3BlbiBFdmVudFxuXG4gIHR5cGUgX3QgPSB0ID1cbiAgICB7ICgqIG11c3QgbmV2ZXIgYmUgaW1tZWRpYXRlICopXG4gICAgICBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbiAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgXyA6IHNpZyBlbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEVuc3VyZV9wcml2YXRlX2ludCAoTSA6IHNpZ1xuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSBpbnRcbiAgICBlbmQpID1cbiAgc3RydWN0XG4gICAgdHlwZSBfdCA9IE0udFxuICBlbmRcblxuICBpbmNsdWRlIEVuc3VyZV9wcml2YXRlX2ludCAoSm9iKVxuZW5kXG5cbmxldCBvZl9ldmVudCBldmVudCA6IHQgPSBPYmoubWFnaWMgKGV2ZW50IDogRXZlbnQudClcbmxldCBvZl9qb2Igam9iIDogdCA9IE9iai5tYWdpYyAoam9iIDogSm9iLnQpXG5sZXQgaXNfZXZlbnQgKHQgOiB0KSA9IE9iai5pc19ibG9jayAoT2JqLnJlcHIgdClcbmxldCBpc19qb2IgKHQgOiB0KSA9IE9iai5pc19pbnQgKE9iai5yZXByIHQpXG5cbm1vZHVsZSBNYXRjaCA9IHN0cnVjdFxuICB0eXBlIF8ga2luZCA9XG4gICAgfCBFdmVudCA6IEV2ZW50LnQga2luZFxuICAgIHwgSm9iIDogSm9iLnQga2luZFxuXG4gIHR5cGUgcGFja2VkID0gSyA6IF8ga2luZCAtPiBwYWNrZWQgW0BAdW5ib3hlZF1cblxuICBsZXQga2luZCB0ID0gaWYgaXNfZXZlbnQgdCB0aGVuIEsgRXZlbnQgZWxzZSBLIEpvYlxuICBsZXQgcHJvamVjdCAodHlwZSBhKSAoXyA6IGEga2luZCkgam9iX29yX2V2ZW50ID0gKE9iai5tYWdpYyA6IHQgLT4gYSkgam9iX29yX2V2ZW50XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBUeXBlcy5TY2hlZHVsZXJcblxubGV0IGV2ZW50cyB0ID0gdC50aW1lX3NvdXJjZS5ldmVudHNcblxubGV0IHNldF9leGVjdXRpb25fY29udGV4dCB0IGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgKCogQXZvaWQgYSBjYW1sX21vZGlmeSBpbiBtb3N0IGNhc2VzLiAqKVxuICBpZiBub3QgKHBoeXNfZXF1YWwgdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IGV4ZWN1dGlvbl9jb250ZXh0KVxuICB0aGVuIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dCA8LSBleGVjdXRpb25fY29udGV4dFxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjBcblxubGV0IGR1bW15X2UgPSBFeGVjdXRpb25fY29udGV4dC5tYWluXG5sZXQgZHVtbXlfZiA6IE9iai50IC0+IHVuaXQgPSBpZ25vcmVcbmxldCBkdW1teV9hIDogT2JqLnQgPSBPYmoucmVwciAoKVxubGV0IHNsb3RzX3Blcl9lbHQgPSAzXG5cbm1vZHVsZSBBID0gVW5pZm9ybV9hcnJheVxuXG4oKiBUaGlzIGlzIGVzc2VudGlhbGx5IGEgc3BlY2lhbGl6ZWQgW0ZsYXRfcXVldWVdLCBkb25lIGZvciByZWFzb25zIG9mIHNwZWVkLiAqKVxudHlwZSB0ID0gVHlwZXMuSm9iX3F1ZXVlLnQgPVxuICB7IG11dGFibGUgbnVtX2pvYnNfcnVuIDogaW50XG4gIDsgbXV0YWJsZSBqb2JzX2xlZnRfdGhpc19jeWNsZSA6IGludFxuICA7ICgqIFtqb2JzXSBpcyBhbiBhcnJheSBvZiBsZW5ndGggW2NhcGFjaXR5IHQgKiBzbG90c19wZXJfZWx0XSwgd2hlcmUgZWFjaCBlbHQgaGFzIHRoZVxuICAgICAgIHRocmVlIGNvbXBvbmVudHMgb2YgYSBqb2IgKFtleGVjdXRpb25fY29udGV4dF0sIFtmXSwgW2FdKSBpbiBjb25zZWN1dGl2ZSBzcG90cyBpblxuICAgICAgIFtqb2JzXS4gIFtlbnF1ZXVlXSBkb3VibGVzIHRoZSBsZW5ndGggb2YgW2pvYnNdIGlmIFtqb2JzXSBpcyBmdWxsLiAgW2pvYnNdIG5ldmVyXG4gICAgICAgc2hyaW5rcy4gIFtqb2JzXSBpcyBzb21ld2hhdCBsaWtlIGEgW0NvcmUuUG9vbF0gc3BlY2lhbGl6ZWQgdG8gMy10dXBsZXM7IHdlXG4gICAgICAgZG9uJ3QgdXNlIFtQb29sXSBiZWNhdXNlIHRoYXQgaW1wbGVtZW50cyBhIHNldCwgd2hlcmUgW2pvYnNdIGlzIGEgcXVldWUuICopXG4gICAgbXV0YWJsZSBqb2JzIDogKE9iai50IEEudFtAc2V4cC5vcGFxdWVdKVxuICA7ICgqIFttYXNrXSBpcyBbY2FwYWNpdHkgdCAtIDFdLCBhbmQgaXMgdXNlZCBmb3IgcXVpY2tseSBjb21wdXRpbmcgW2kgbW9kIChjYXBhY2l0eVxuICAgICAgIHQpXS4gQSBzcGVjaWFsIGNhc2Ugd2hlbiB0aGUgam9iIHF1ZXVlIGhhcyBjYXBhY2l0eSAwIGlzIHJlcHJlc2VudGVkXG4gICAgICAgd2l0aCBbbWFzayA9IC0xXS4gVGhpcyB2YWx1ZSBpcyBub3QgdXNlZnVsIGFzIGEgYml0LW1hc2ssIGJ1dCB3ZSBvbmx5IHVzZVxuICAgICAgIHRoZSBiaXQtbWFzayB3aGVuIHRoZXJlJ3MgY2FwYWNpdHkgaW4gdGhlIGFycmF5LCBzbyB0aGF0IGlzIG5vdCBhIHByb2JsZW0uXG4gICAgKilcbiAgICBtdXRhYmxlIG1hc2sgOiBpbnRcbiAgOyAoKiBbZnJvbnRdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgam9iIGluIHRoZSBxdWV1ZS4gIFRoZSBhcnJheSBpbmRleCBvZiB0aGF0IGpvYidzXG4gICAgICAgZXhlY3V0aW9uIGNvbnRleHQgaXMgW2Zyb250ICogc2xvdHNfcGVyX2VsdF0uICopXG4gICAgbXV0YWJsZSBmcm9udCA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBiYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBvZmZzZXQgdCBpID0gKHQuZnJvbnQgKyBpKSBsYW5kIHQubWFzayAqIHNsb3RzX3Blcl9lbHRcbmxldCBjYXBhY2l0eSB0ID0gdC5tYXNrICsgMVxuXG5sZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5udW1fam9ic19ydW46KGNoZWNrIChmdW4gbnVtX2pvYnNfcnVuIC0+IGFzc2VydCAobnVtX2pvYnNfcnVuID49IDApKSlcbiAgICAgIH5qb2JzX2xlZnRfdGhpc19jeWNsZTpcbiAgICAgICAgKGNoZWNrIChmdW4gam9ic19sZWZ0X3RoaXNfY3ljbGUgLT4gYXNzZXJ0IChqb2JzX2xlZnRfdGhpc19jeWNsZSA+PSAwKSkpXG4gICAgICB+am9iczpcbiAgICAgICAgKGNoZWNrIChmdW4gam9icyAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICAgICAgICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50XG4gICAgICAgICAgICAgICAoT2JqLm9iaiAoQS5nZXQgam9icyAob2Zmc2V0IHQgaSkpIDogRXhlY3V0aW9uX2NvbnRleHQudClcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+bWFzazpcbiAgICAgICAgKGNoZWNrIChmdW4gbWFzayAtPlxuICAgICAgICAgICBsZXQgY2FwYWNpdHkgPSBtYXNrICsgMSBpblxuICAgICAgICAgICBhc3NlcnQgKGNhcGFjaXR5ID0gMCB8fCBJbnQuaXNfcG93MiBjYXBhY2l0eSk7XG4gICAgICAgICAgIGFzc2VydCAoY2FwYWNpdHkgKiBzbG90c19wZXJfZWx0ID0gQS5sZW5ndGggdC5qb2JzKSkpXG4gICAgICB+YmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWU6KGZ1biBfIC0+ICgpKVxuICAgICAgfmZyb250OlxuICAgICAgICAoY2hlY2sgKGZ1biBmcm9udCAtPlxuICAgICAgICAgICBhc3NlcnQgKGZyb250ID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKGZyb250IDwgbWF4IDEgKGNhcGFjaXR5IHQpKSkpXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobGVuZ3RoIDw9IGNhcGFjaXR5IHQpKSkpXG47O1xuXG5sZXQgY3JlYXRlX2FycmF5IH5jYXBhY2l0eSA9IEEuY3JlYXRlX29ial9hcnJheSB+bGVuOihjYXBhY2l0eSAqIHNsb3RzX3Blcl9lbHQpXG5cbmxldCBjcmVhdGUgKCkgPVxuICAoKiBXZSBzdGFydCB3aXRoIFtjYXBhY2l0eSAgPSAwXSBzbyB0aGF0IHRoZSBmaXJzdCBqb2IgdGhhdCBpcyBhZGRlZCBjYWxscyBbZ3Jvd10gYW5kXG4gICAgIGZpbGxzIGluIHRoZSBbYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWVdLiAqKVxuICBsZXQgY2FwYWNpdHkgPSAwIGluXG4gIHsgbnVtX2pvYnNfcnVuID0gMFxuICA7IGpvYnNfbGVmdF90aGlzX2N5Y2xlID0gMFxuICA7IGpvYnMgPSBjcmVhdGVfYXJyYXkgfmNhcGFjaXR5XG4gIDsgbWFzayA9IGNhcGFjaXR5IC0gMVxuICA7IGZyb250ID0gMFxuICA7IGxlbmd0aCA9IDBcbiAgOyBiYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSA9IE5vbmVcbiAgfVxuOztcblxubGV0IGJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIHQgPSB0LmJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlXG5cbmxldCBjbGVhciB0ID1cbiAgdC5mcm9udCA8LSAwO1xuICB0Lmxlbmd0aCA8LSAwO1xuICB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIDwtIDBcbjs7XG5cbmxldCBncm93IHQgPVxuICAobWF0Y2ggdC5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSB3aXRoXG4gICB8IFNvbWUgXyAtPiBhc3NlcnQgKGNhcGFjaXR5IHQgPiAwKVxuICAgfCBOb25lIC0+IHQuYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUgPC0gU29tZSAoQmFja3RyYWNlLmdldCAoKSkpO1xuICBsZXQgb2xkX2NhcGFjaXR5ID0gY2FwYWNpdHkgdCBpblxuICBsZXQgbmV3X2NhcGFjaXR5ID0gbWF4IDEgKG9sZF9jYXBhY2l0eSAqIDIpIGluXG4gIGxldCBvbGRfam9icyA9IHQuam9icyBpblxuICBsZXQgb2xkX2Zyb250ID0gdC5mcm9udCBpblxuICBsZXQgbGVuMSA9IEludC5taW4gdC5sZW5ndGggKG9sZF9jYXBhY2l0eSAtIG9sZF9mcm9udCkgKiBzbG90c19wZXJfZWx0IGluXG4gIGxldCBsZW4yID0gKHQubGVuZ3RoICogc2xvdHNfcGVyX2VsdCkgLSBsZW4xIGluXG4gIGxldCBuZXdfam9icyA9IGNyZWF0ZV9hcnJheSB+Y2FwYWNpdHk6bmV3X2NhcGFjaXR5IGluXG4gIEEuYmxpdFxuICAgIH5sZW46bGVuMVxuICAgIH5zcmM6b2xkX2pvYnNcbiAgICB+c3JjX3Bvczoob2xkX2Zyb250ICogc2xvdHNfcGVyX2VsdClcbiAgICB+ZHN0Om5ld19qb2JzXG4gICAgfmRzdF9wb3M6MDtcbiAgQS5ibGl0IH5sZW46bGVuMiB+c3JjOm9sZF9qb2JzIH5zcmNfcG9zOjAgfmRzdDpuZXdfam9icyB+ZHN0X3BvczpsZW4xO1xuICB0Lm1hc2sgPC0gbmV3X2NhcGFjaXR5IC0gMTtcbiAgdC5qb2JzIDwtIG5ld19qb2JzO1xuICB0LmZyb250IDwtIDBcbjs7XG5cbmxldCBzZXQgKHR5cGUgYSkgdCBpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGxldCBvZmZzZXQgPSBvZmZzZXQgdCBpIGluXG4gIEEudW5zYWZlX3NldCB0LmpvYnMgb2Zmc2V0IChPYmoucmVwciAoZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50KSk7XG4gIEEudW5zYWZlX3NldCB0LmpvYnMgKG9mZnNldCArIDEpIChPYmoucmVwciAoZiA6IGEgLT4gdW5pdCkpO1xuICBBLnVuc2FmZV9zZXQgdC5qb2JzIChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgKGEgOiBhKSlcbjs7XG5cbmxldCBlbnF1ZXVlIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgaWYgdC5sZW5ndGggPSBjYXBhY2l0eSB0IHRoZW4gZ3JvdyB0O1xuICBzZXQgdCB0Lmxlbmd0aCBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0IG4gPVxuICBpZiBuIDwgMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiSm9icy5zZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgZ290IG5lZ2F0aXZlIG51bWJlclwiIChuIDogaW50KSAodCA6IHQpXTtcbiAgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA8LSBuXG47O1xuXG5sZXQgY2FuX3J1bl9hX2pvYiB0ID0gdC5sZW5ndGggPiAwICYmIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPiAwXG5cbmxldCBydW5fam9iIHQgKHNjaGVkdWxlciA6IFNjaGVkdWxlci50KSBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICB0Lm51bV9qb2JzX3J1biA8LSB0Lm51bV9qb2JzX3J1biArIDE7XG4gIFNjaGVkdWxlci5zZXRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0O1xuICBmIGFcbjs7XG5cbmxldCBydW5fZXh0ZXJuYWxfam9icyB0IChzY2hlZHVsZXIgOiBTY2hlZHVsZXIudCkgPVxuICBsZXQgZXh0ZXJuYWxfam9icyA9IHNjaGVkdWxlci5leHRlcm5hbF9qb2JzIGluXG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCBleHRlcm5hbF9qb2JzID4gMCBkb1xuICAgIGxldCAoRXh0ZXJuYWxfam9iLlQgKGV4ZWN1dGlvbl9jb250ZXh0LCBmLCBhKSkgPVxuICAgICAgVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gZXh0ZXJuYWxfam9ic1xuICAgIGluXG4gICAgcnVuX2pvYiB0IHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGFcbiAgZG9uZVxuOztcblxubGV0IHJ1bl9qb2JzICh0eXBlIGEpIHQgc2NoZWR1bGVyID1cbiAgKCogV2UgZG8gdGhlIFt0cnktd2l0aF0gb3V0c2lkZSBvZiB0aGUgW3doaWxlXSBiZWNhdXNlIGl0IGlzIGNoZWFwZXIgdGhhbiBkb2luZyBhXG4gICAgIFt0cnktd2l0aF0gZm9yIGVhY2ggam9iLiAqKVxuICAoKiBbcnVuX2V4dGVybmFsX2pvYnNdIGJlZm9yZSBlbnRlcmluZyB0aGUgbG9vcCwgc2luY2UgaXQgbWlnaHQgZW5xdWV1ZSBhIGpvYixcbiAgICAgY2hhbmdpbmcgW3QubGVuZ3RoXS4gKilcbiAgdHJ5XG4gICAgcnVuX2V4dGVybmFsX2pvYnMgdCBzY2hlZHVsZXI7XG4gICAgd2hpbGUgY2FuX3J1bl9hX2pvYiB0IGRvXG4gICAgICBsZXQgdGhpc19qb2IgPSBvZmZzZXQgdCAwIGluXG4gICAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50ID1cbiAgICAgICAgT2JqLm9iaiAoQS51bnNhZmVfZ2V0IHQuam9icyB0aGlzX2pvYilcbiAgICAgIGluXG4gICAgICBsZXQgZiA6IGEgLT4gdW5pdCA9IE9iai5vYmogKEEudW5zYWZlX2dldCB0LmpvYnMgKHRoaXNfam9iICsgMSkpIGluXG4gICAgICBsZXQgYSA6IGEgPSBPYmoub2JqIChBLnVuc2FmZV9nZXQgdC5qb2JzICh0aGlzX2pvYiArIDIpKSBpblxuICAgICAgKCogV2UgY2xlYXIgb3V0IHRoZSBqb2IgcmlnaHQgbm93IHNvIHRoYXQgaXQgaXNuJ3QgbGl2ZSBhdCB0aGUgbmV4dCBtaW5vclxuICAgICAgICAgY29sbGVjdGlvbi4gIFdlIHRyaWVkIG5vdCBkb2luZyB0aGlzIGFuZCBzYXcgc2lnbmlmaWNhbnQgKDE1JSBvciBzbykgcGVyZm9ybWFuY2VcbiAgICAgICAgIGhpdHMgZHVlIHRvIHNwdXJpb3VzIHByb21vdGlvbi4gKilcbiAgICAgIHNldCB0IDAgZHVtbXlfZSBkdW1teV9mIGR1bW15X2E7XG4gICAgICB0LmZyb250IDwtICh0LmZyb250ICsgMSkgbGFuZCB0Lm1hc2s7XG4gICAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICAgICB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIDwtIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgLSAxO1xuICAgICAgKCogSXQgaXMgT0sgaWYgW3J1bl9qb2JdIG9yIFtydW5fZXh0ZXJuYWxfam9ic10gcmFpc2VzLCBpbiB3aGljaCBjYXNlIHRoZSBleG4gaXNcbiAgICAgICAgIGhhbmRsZWQgYnkgdGhlIG91dGVyIHRyeS13aXRoLiAgVGhlIG9ubHkgc2lkZSBlZmZlY3RzIHdlIGhhdmUgZG9uZSBhcmUgdG8gdGFrZVxuICAgICAgICAgdGhlIGpvYiBvdXQgb2YgdGhlIHF1ZXVlIGFuZCBkZWNyZW1lbnQgW2pvYnNfbGVmdF90aGlzX2N5Y2xlXS4gIFtydW5fam9iXSBvclxuICAgICAgICAgW3J1bl9leHRlcm5hbF9qb2JzXSBtYXkgc2lkZSBlZmZlY3QgW3RdLCBlaXRoZXIgYnkgZW5xdWV1ZWluZyBqb2JzLCBvciBieVxuICAgICAgICAgY2xlYXJpbmcgW3RdLiAqKVxuICAgICAgcnVuX2pvYiB0IHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gICAgICAoKiBbcnVuX2V4dGVybmFsX2pvYnNdIGF0IGVhY2ggaXRlcmF0aW9uIG9mIHRoZSBbd2hpbGVdIGxvb3AsIGZvciBmYWlybmVzcy4gKilcbiAgICAgIHJ1bl9leHRlcm5hbF9qb2JzIHQgc2NoZWR1bGVyXG4gICAgZG9uZTtcbiAgICBPayAoKVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgKCogV2UgY2FsbCBbRXhuLmJhY2t0cmFjZV0gaW1tZWRpYXRlbHkgYWZ0ZXIgY2F0Y2hpbmcgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbiwgdG9cbiAgICAgICBlbnN1cmUgdGhlcmUgaXMgbm8gaW50ZXJ2ZW5pbmcgY29kZSB0aGF0IGludGVyZmVyZXMgd2l0aCB0aGUgZ2xvYmFsIGJhY2t0cmFjZVxuICAgICAgIHN0YXRlLiAqKVxuICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgRXJyb3IgKGV4biwgYmFja3RyYWNlKVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVGltZV9ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfbnNcblxuICBleHRlcm5hbCBmb3JtYXQgOiBmbG9hdCAtPiBzdHJpbmcgLT4gc3RyaW5nID0gXCJjb3JlX3RpbWVfbnNfZm9ybWF0XCJcblxuICAoKiBXZSB1c2UgYSBtb3JlIHBsZWFzYW50IGZvcm1hdCB0aGFuIFtDb3JlLlRpbWVfbnMuc2V4cF9vZl90XSxcbiAgICAgd2hpY2ggaGFzIHRvIGJlIG1lc3NpZXIgZm9yIHJvdW5kIHRyaXBwYWJpbGl0eS4gKilcbiAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICBbJXNleHBcbiAgICAgIChmb3JtYXQgKHQgfD4gdG9fc3Bhbl9zaW5jZV9lcG9jaCB8PiBTcGFuLnRvX3NlYykgXCIlWS0lbS0lZFQlSDolTTolUyV6XCIgOiBzdHJpbmcpXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWluZ193aGVlbC5BbGFybVxuXG4gIGxldCBpc19udWxsIHQgPSBwaHlzX2VxdWFsIHQgKG51bGwgKCkpXG5lbmRcblxubW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA9IFRpbWluZ193aGVlbC5BbGFybV9wcmVjaXNpb25cblxubGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyA9XG4gICgqIDEvOHRoIG9mIGEgbWlsbGlzZWNvbmQgYWxhcm1fcHJlY2lzaW9uIHNlZW1zIHN1ZmZpY2llbnQgdG8gYXZvaWQgaGF2aW5nIG1hbnkgYWxhcm1zXG4gICAgIGluIHRoZSBzYW1lIGludGVydmFsLCB3aGljaCBhdm9pZHMgcXVhZHJhdGljIGluc2VydGlvbiBzb3J0IHdoZW4gZmlyaW5nIGFsYXJtcy4gIEFuZFxuICAgICB0aGUgbGV2ZWwgYml0cyBnaXZlIHVzIGxldmVscyBvZiA+MXMsID4xbSwgPjFoLCA+MWQuICBTZWUgdGVzdCBpblxuICAgICBbLi4vdGVzdC90ZXN0X3N5bmNocm9ub3VzX3RpbWVfc291cmNlLm1sXS4gKilcbiAgVGltaW5nX3doZWVsLkNvbmZpZy5jcmVhdGVcbiAgICB+YWxhcm1fcHJlY2lzaW9uOkFsYXJtX3ByZWNpc2lvbi4oZGl2IGFib3V0X29uZV9taWxsaXNlY29uZCB+cG93MjozKVxuICAgIH5sZXZlbF9iaXRzOihUaW1pbmdfd2hlZWwuTGV2ZWxfYml0cy5jcmVhdGVfZXhuIFsgMTM7IDY7IDY7IDUgXSlcbiAgICAoKVxuOztcblxudHlwZSBjYWxsYmFjayA9IHVuaXQgLT4gdW5pdFxuXG5tb2R1bGUgSWQgPSBUeXBlcy5UaW1lX3NvdXJjZV9pZFxuXG5tb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgbW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXR1cyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVHlwZXMuRXZlbnQuU3RhdHVzLnQgPVxuICAgICAgICB8IEZpcmVkICgqIGluIFtmaXJlZF9ldmVudHNdLCByZWFkeSB0byBydW4gKilcbiAgICAgICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnRcbiAgICAgICAgKCogY3VycmVudGx5IHJ1bm5pbmcgdGhlIGNhbGxiYWNrIChmb3IgYSBwZXJpb2RpYyBldmVudCkgKilcbiAgICAgICAgfCBTY2hlZHVsZWQgKCogaW4gdGhlIHRpbWluZyB3aGVlbCAqKVxuICAgICAgICB8IFVuc2NoZWR1bGVkICgqIG5vdCBpbiB0aW1pbmcgd2hlZWwgb3IgW2ZpcmVkX2V2ZW50c10gKilcbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgICBsZXQgdHJhbnNpdGlvbl9pc19hbGxvd2VkIH5mcm9tIH50b18gPVxuICAgICAgICBtYXRjaCBmcm9tLCB0b18gd2l0aFxuICAgICAgICB8ICggRmlyZWRcbiAgICAgICAgICAsIEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCAoKiBzdGFydGVkIHJ1bm5pbmcgY2FsbGJhY2sgKGZvciBhIHBlcmlvZGljIGV2ZW50KSAqKVxuICAgICAgICAgIClcbiAgICAgICAgfCAoIEZpcmVkXG4gICAgICAgICAgLCBVbnNjaGVkdWxlZFxuICAgICAgICAgICAgKCogYWJvcnRlZCwgb3Igc3RhcnRlZCBydW5uaW5nIGNhbGxiYWNrIChmb3IgYSBub24tcGVyaW9kaWMgZXZlbnQpICopIClcbiAgICAgICAgKCogW3Jlc2NoZWR1bGVfKl0gZ29lcyB0aHJvdWdoIGFuIGludGVybWVkaWF0ZSBbRmlyZWQsIFVuc2NoZWR1bGVkXSBzdGF0ZSxcbiAgICAgICAgICAgc28gd2UgbmV2ZXIgdHJhbnNpdGlvbiBmcm9tIFtGaXJlZF0gZGlyZWN0bHkgdG8gW1NjaGVkdWxlZF0uICopXG4gICAgICAgIHwgKCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnRcbiAgICAgICAgICAsIFNjaGVkdWxlZCAoKiBzY2hlZHVsZWQgbmV4dCBpdGVyYXRpb24gb2YgYSBwZXJpb2RpYyBldmVudCAqKSApXG4gICAgICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50LCBVbnNjaGVkdWxlZCAoKiBhYm9ydGVkICopXG4gICAgICAgIHwgU2NoZWR1bGVkLCBGaXJlZCAoKiBtb3ZlZCBmcm9tIHRpbWluZyB3aGVlbCB0byBbZmlyZWRfZXZlbnRzXSAqKVxuICAgICAgICB8IFNjaGVkdWxlZCwgVW5zY2hlZHVsZWQgKCogYWJvcnRlZCAqKVxuICAgICAgICB8IFVuc2NoZWR1bGVkLCBGaXJlZCAoKiBldmVudCBzY2hlZHVsZWQgaW4gdGhlIHBhc3QgKilcbiAgICAgICAgfCBVbnNjaGVkdWxlZCwgU2NoZWR1bGVkICgqIGV2ZW50IHNjaGVkdWxlZCBpbiB0aGUgZnV0dXJlICopIC0+IHRydWVcbiAgICAgICAgfCAoRmlyZWQgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgfCBTY2hlZHVsZWQgfCBVbnNjaGVkdWxlZCksIF8gLT4gZmFsc2VcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICB0eXBlIGV2ZW50ID0gVHlwZXMuRXZlbnQudFxuXG4gICAgbGV0IHNleHBfb2ZfZXZlbnRcbiAgICAgICAgICAoeyBhbGFybSA9IF9cbiAgICAgICAgICAgOyBhdFxuICAgICAgICAgICA7IGNhbGxiYWNrID0gX1xuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gX1xuICAgICAgICAgICA7IGludGVydmFsXG4gICAgICAgICAgIDsgbmV4dF9maXJlZCA9IF9cbiAgICAgICAgICAgOyBwcmV2X2ZpcmVkID0gX1xuICAgICAgICAgICA7IHN0YXR1c1xuICAgICAgICAgICB9IDpcbiAgICAgICAgICAgICBldmVudClcbiAgICAgID1cbiAgICAgIFslc2V4cFxuICAgICAgICB7IHN0YXR1cyA6IFN0YXR1cy50XG4gICAgICAgIDsgYXQgOiBUaW1lX25zLnRcbiAgICAgICAgOyBpbnRlcnZhbCA6IChUaW1lX25zLlNwYW4udCBvcHRpb25bQHNleHAub3B0aW9uXSlcbiAgICAgICAgfV1cbiAgICA7O1xuXG4gICAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICAgICAgKCogVGhpcyByZWRlZmluaXRpb24gb2YgW0V2ZW50XSBpcyBoZXJlIHNvIHRoZSB0eXBlIGNoZWNrcyBhcmUgcmlnaHQgbmV4dFxuICAgICAgICAgdG8gW09iai5tYWdpY11zLiAqKVxuICAgICAgbW9kdWxlIEV2ZW50X2lzX2Jsb2NrIDogc2lnIGVuZCA9IHN0cnVjdFxuICAgICAgICBvcGVuIFR5cGVzXG4gICAgICAgIG9wZW4gRXZlbnRcblxuICAgICAgICB0eXBlIF90ID0gdCA9XG4gICAgICAgICAgeyAoKiBtdXN0IG5ldmVyIGJlIGltbWVkaWF0ZSAqKVxuICAgICAgICAgICAgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50XG4gICAgICAgICAgOyBtdXRhYmxlIGF0IDogVGltZV9ucy50XG4gICAgICAgICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAgICAgOyBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgICAgICAgOyBtdXRhYmxlIG5leHRfZmlyZWQgOiBPcHRpb24udFxuICAgICAgICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgICAgICA7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICAgICAgICB9XG4gICAgICBlbmRcblxuICAgICAgdHlwZSB0ID0gVHlwZXMuRXZlbnQuT3B0aW9uLnRcblxuICAgICAgKCogVXNpbmcgYW4gaW1tZWRpYXRlIHJhdGhlciB0aGFuIGEgc3RhdGljYWxseS1hbGxvY2F0ZWQgcmVjb3JkIGhlcmUgc2VlbXMgdG9cbiAgICAgICAgIGltcHJvdmUgcGVyZm9ybWFuY2Ugbm90aWNlYWJseSAoWy4uL2JlbmNoL2Jpbi9iZW5jaF90aW1lX3NvdXJjZS5leGVdIGJlbmNobWFya1xuICAgICAgICAgaXMgZmFzdGVyIGJ5IH4xMG5zIHBlciBhbGFybSksIHByZXN1bWFibHkgYmVjYXVzZSBpdCBhdm9pZHMgdGhlIGV4cGVuc2l2ZVxuICAgICAgICAgcGFydHMgb2YgY2FtbF9tb2RpZnkuICopXG4gICAgICBsZXQgbm9uZSA9IChPYmoubWFnaWMgTm9uZSA6IHQpICgqIGFuIGFyYml0cmFyeSBpbW1lZGlhdGUgKilcbiAgICAgIGxldCBzb21lID0gKE9iai5tYWdpYyA6IFR5cGVzLkV2ZW50LnQgLT4gdClcbiAgICAgIGxldCBpc19ub25lIHQgPSBwaHlzX2VxdWFsIHQgbm9uZVxuICAgICAgbGV0IGlzX3NvbWUgdCA9IG5vdCAoaXNfbm9uZSB0KVxuICAgICAgbGV0IGZpcnN0X3NvbWUgdDEgdDIgPSBpZiBpc19zb21lIHQxIHRoZW4gdDEgZWxzZSB0MlxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IChPYmoubWFnaWMgOiB0IC0+IFR5cGVzLkV2ZW50LnQpXG5cbiAgICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bnNhZmVfdmFsdWVcbiAgICAgICAgZW5kXG4gICAgICBlbmRcblxuICAgICAgb3BlbiBPcHRpb25hbF9zeW50YXhcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgICAgbWF0Y2glb3B0aW9uYWwgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBbJXNleHAgKCldXG4gICAgICAgIHwgU29tZSBldmVudCAtPiBbJXNleHAgKGV2ZW50IDogZXZlbnQpXVxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBCb29sLnNlbGVjdCAoaXNfbm9uZSB0KSBkZWZhdWx0ICh1bnNhZmVfdmFsdWUgdClcblxuICAgICAgbGV0IHZhbHVlX2V4biB0ID1cbiAgICAgICAgbWF0Y2glb3B0aW9uYWwgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZV9zIFslc2V4cCBcIltTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC5PcHRpb24udmFsdWVfZXhuIE5vbmVdXCJdXG4gICAgICAgIHwgU29tZSBldmVudCAtPiBldmVudFxuICAgICAgOztcblxuICAgICAgbGV0IHRvX29wdGlvbiB0ID1cbiAgICAgICAgbWF0Y2glb3B0aW9uYWwgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBldmVudCAtPiBTb21lIGV2ZW50XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IHNvbWUgZXZlbnRcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICB0eXBlIHQgPSBUeXBlcy5FdmVudC50ID1cbiAgICAgIHsgKCogW2FsYXJtXSBpcyBub24tbnVsbCBpZmYgdGhlIGV2ZW50IGlzIGluIHRoZSB0aW1pbmcgd2hlZWwuICopXG4gICAgICAgIG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBBbGFybS50XG4gICAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICAgIDsgY2FsbGJhY2sgOiB1bml0IC0+IHVuaXRcbiAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICA7ICgqIFtpbnRlcnZhbF0gaXMgdGhlIHBlcmlvZCBmb3IgdGhlIHBlcmlvZGljIGV2ZW50cy4gKilcbiAgICAgICAgbXV0YWJsZSBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvblxuICAgICAgOyAoKiBbbmV4dF9maXJlZF0gYW5kIFtwcmV2X2ZpcmVkXSBjcmVhdGUgYSBkb3VibHktbGlua2VkIChub24tY2lyY3VsYXIpIGxpc3Qgb2ZcbiAgICAgICAgICAgZmlyZWQgZXZlbnRzLCBsaW5rZWQgdmlhIHRoZXNlIGZpZWxkcy4gQW4gZXZlbnQgaXMgYWRkZWQgdG8gdGhlIGxpc3Qgd2hlblxuICAgICAgICAgICBpdCBmaXJlcywgZWl0aGVyIGJlY2F1c2UgaXQgaXMgYWRkZWQgd2l0aCBhIHRpbWUgaW4gdGhlIHBhc3QsIG9yXG4gICAgICAgICAgIGJlY2F1c2UgdGltZSBhZHZhbmNlcy4gW2FkdmFuY2VfYnlfYWxhcm1zXSBpdGVyYXRlcyBvdmVyIHRoZSBldmVudHNcbiAgICAgICAgICAgaW4gW25leHRfZmlyZWRdIGFuZCBydW5zIHRoZW0sIGVtcHR5aW5nIHRoZSBsaXN0LiBbbm9uZV0gaXMgdXNlZCB0b1xuICAgICAgICAgICBpbmRpY2F0ZSB0aGUgZW5kIG9mIHRoZSBsaW5rZWQgbGlzdCBvZiBmaXJlZCBldmVudHMuICopXG4gICAgICAgIG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgICA7IG11dGFibGUgcHJldl9maXJlZCA6IE9wdGlvbi50XG4gICAgICA7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gWyVzZXhwX29mOiBldmVudF1cblxuICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgICAgfmFsYXJtOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gYWxhcm0gLT5cbiAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAgICAgICAgICAgIChBbGFybS5pc19udWxsIGFsYXJtKVxuICAgICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgICAgIChtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRmlyZWQgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgfCBVbnNjaGVkdWxlZCAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIHwgU2NoZWR1bGVkIC0+IGZhbHNlKSkpXG4gICAgICAgICAgfmF0Omlnbm9yZVxuICAgICAgICAgIH5jYWxsYmFjazppZ25vcmVcbiAgICAgICAgICB+ZXhlY3V0aW9uX2NvbnRleHQ6aWdub3JlXG4gICAgICAgICAgfmludGVydmFsOmlnbm9yZVxuICAgICAgICAgIH5uZXh0X2ZpcmVkOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbmV4dF9maXJlZCAtPlxuICAgICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwgKG5leHRfZmlyZWQgOiBPcHRpb24udCkgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICgqIFtuZXh0X2ZpcmVkXSBjYW4gYmUgW05vbmVdIGV2ZW4gaWYgdGhlIGV2ZW50IHN0YXR1cyBpcyBGaXJlZCwgYXNzdW1pbmdcbiAgICAgICAgICAgICAgICAgICAgaXQncyBhdCB0aGUgZW5kIG9mIHRoZSBmaXJlZCBldmVudHMgbGlzdCAqKVxuICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgfCBTb21lIG5leHRfZmlyZWQgLT5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogU3RhdHVzLnRdIHQuc3RhdHVzIH5leHBlY3Q6RmlyZWQ7XG4gICAgICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCAoT3B0aW9uLnNvbWUgdCkgbmV4dF9maXJlZC5wcmV2X2ZpcmVkKSkpXG4gICAgICAgICAgfnByZXZfZmlyZWQ6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBwcmV2X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbCAocHJldl9maXJlZCA6IE9wdGlvbi50KSB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgKCogW3ByZXZfZmlyZWRdIGNhbiBiZSBbTm9uZV0gZXZlbiBpZiB0aGUgZXZlbnQgc3RhdHVzIGlzIEZpcmVkLCBhc3N1bWluZ1xuICAgICAgICAgICAgICAgICAgICBpdCdzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpcmVkIGV2ZW50cyBsaXN0ICopXG4gICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICB8IFNvbWUgcHJldl9maXJlZCAtPlxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBTdGF0dXMudF0gdC5zdGF0dXMgfmV4cGVjdDpGaXJlZDtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIChPcHRpb24uc29tZSB0KSBwcmV2X2ZpcmVkLm5leHRfZmlyZWQpKSlcbiAgICAgICAgICB+c3RhdHVzOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gKHN0YXR1cyA6IFN0YXR1cy50KSAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IC0+IGFzc2VydCAoQ29yZS5PcHRpb24uaXNfc29tZSB0LmludGVydmFsKVxuICAgICAgICAgICAgICAgfCBGaXJlZCB8IFVuc2NoZWR1bGVkIHwgU2NoZWR1bGVkIC0+ICgpKSkpXG4gICAgOztcblxuICAgIGxldCBzZXRfc3RhdHVzIHQgdG9fID1cbiAgICAgIGxldCBmcm9tID0gdC5zdGF0dXMgaW5cbiAgICAgIGlmIG5vdCAoU3RhdHVzLnRyYW5zaXRpb25faXNfYWxsb3dlZCB+ZnJvbSB+dG9fKVxuICAgICAgdGhlblxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBbJWhlcmVdXG4gICAgICAgICAgICAgIFwiYnVnIC0tIHNldF9zdGF0dXMgdHJhbnNpdGlvbiBub3QgYWxsb3dlZFwiXG4gICAgICAgICAgICAgIChmcm9tIDogU3RhdHVzLnQpXG4gICAgICAgICAgICAgICh0b18gOiBTdGF0dXMudClcbiAgICAgICAgICAgICAgfmV2ZW50Oih0IDogdCldO1xuICAgICAgdC5zdGF0dXMgPC0gdG9fXG4gICAgOztcblxuICAgIGxldCBzZXRfc3RhdHVzX2lmIH5pcyB0IHRvXyA9IGlmIFN0YXR1cy5lcXVhbCBpcyB0LnN0YXR1cyB0aGVuIHNldF9zdGF0dXMgdCB0b19cbiAgICBsZXQgc2NoZWR1bGVkX2F0ID0gYXRcbiAgZW5kXG5cbiAgbW9kdWxlIEpvYl9vcl9ldmVudCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSm9iX29yX2V2ZW50XG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgbGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gICAgICBsZXQgKEsgaykgPSBraW5kIHQgaW5cbiAgICAgIG1hdGNoIGssIHByb2plY3QgayB0IHdpdGhcbiAgICAgIHwgRXZlbnQsIGV2ZW50IC0+IFslc2V4cCAoZXZlbnQgOiBFdmVudC50KV1cbiAgICAgIHwgSm9iLCBfIC0+XG4gICAgICAgICgqIFdlIGRvbid0IGRpc3BsYXkgdGhlIFtKb2IudF1zIGluIFtldmVudHNdIGJlY2F1c2UgdGhvc2UgYXJlXG4gICAgICAgICAgIHBvb2wgcG9pbnRlcnMsIHdoaWNoIGFyZSB1bmluZm9ybWF0aXZlLiAqKVxuICAgICAgICBbJW1lc3NhZ2UgXCI8Sm9iLnQ+XCJdXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAtJ3J3IHQgPSAncncgVHlwZXMuVGltZV9zb3VyY2UudDEgPVxuICAgIHsgaWQgOiBJZC50XG4gICAgOyAoKiBbYWR2YW5jZV9lcnJvcnNdIGFjY3VtdWxhdGVzIGVycm9ycyByYWlzZWQgYnkgYWxhcm1zIHJ1biBieVxuICAgICAgICAgW2FkdmFuY2VfYnlfYWxhcm1zXS4gKilcbiAgICAgIG11dGFibGUgYWR2YW5jZV9lcnJvcnMgOiBFcnJvci50IGxpc3RcbiAgICA7ICgqIFthbV9hZHZhbmNpbmddIGlzIHRydWUgb25seSBkdXJpbmcgW2FkdmFuY2VfYnlfYWxhcm1zXSwgYW5kIGlzIHVzZWQgdG8gY2F1c2VcbiAgICAgICAgIGNhbGxiYWNrcyB0byByYWlzZSBpZiB0aGV5IGNhbGwgW2FkdmFuY2VfYnlfYWxhcm1zXS4gKilcbiAgICAgIG11dGFibGUgYW1fYWR2YW5jaW5nIDogYm9vbFxuICAgIDsgZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLnRcbiAgICA7ICgqIFtmaXJlZF9ldmVudHNdIGlzIHRoZSBmcm9udCBvZiB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGZpcmVkIGV2ZW50cyxcbiAgICAgICAgIHdoaWNoIGlzIHN0b3JlZCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIFtFdmVudC5hdF0uICopXG4gICAgICBtdXRhYmxlIGZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyAoKiBbbW9zdF9yZWNlbnRseV9maXJlZF0gaXMgdGhlIGV2ZW50IHRoYXQgd2FzIG1vc3QgcmVjZW50bHkgaW5zZXJ0ZWQgaW50b1xuICAgICAgICAgW2ZpcmVkX2V2ZW50c10uIEl0IGlzIHVzZWQgYXMgYW4gb3B0aW1pemF0aW9uIHRvIGFsbG93IGluc2VydGlvbiBvZlxuICAgICAgICAgc3Vic2VxdWVudCBldmVudHMgdG8gc3RhcnQgbGF0ZXIgaW4gdGhlIGxpc3QgcmF0aGVyIHRoYW4gYXQgdGhlIGJlZ2lubmluZy5cbiAgICAgICAgIEl0IHNwZWNpZmljYWxseSBhdm9pZHMgcXVhZHJhdGljIGJlaGF2aW9yIHdoZW4gaW5zZXJ0aW5nIG11bHRpcGxlIGV2ZW50c1xuICAgICAgICAgdGhhdCBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGltZSAtLSB0aGUgdGltZSBzb3VyY2UgZmlyZXMgc3VjaCBldmVudHMgaW5cbiAgICAgICAgIHRoZSBvcmRlciB0aGV5IHdlcmUgYWRkZWQsIGFuZCB3ZSB3YW50IHRoZW0gdG8gYmUgaW4gdGhhdCBzYW1lIG9yZGVyIGluXG4gICAgICAgICBbZmlyZWRfZXZlbnRzXS4gKilcbiAgICAgIG11dGFibGUgbW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyAoKiBXZSBzdG9yZSBbaGFuZGxlX2ZpcmVkXSBpbiBbdF0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBldmVyeSB0aW1lIHdlIGNhbGxcbiAgICAgICAgIFthZHZhbmNlX2Nsb2NrXS4gKilcbiAgICAgIGhhbmRsZV9maXJlZCA6IEpvYl9vcl9ldmVudC50IEFsYXJtLnQgLT4gdW5pdFxuICAgIDsgaXNfd2FsbF9jbG9jayA6IGJvb2xcbiAgICA7IHNjaGVkdWxlciA6IFNjaGVkdWxlcjAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICgqIFdlIGRvbid0IGluY2x1ZGUgdGhlIFtpZF0gaW4gdGhlIHNleHAgYmVjYXVzZSB0aGUgdXNlciAocmlnaHRseSkgY2FuJ3QgY29udHJvbCBpdCwgc29cbiAgICAgaXQncyBoYXJkIHRvIG1ha2UgaXQgZGV0ZXJtaW5pc3RpYyBpbiB0ZXN0cy4gKilcbiAgbGV0IHNleHBfb2ZfdFxuICAgICAgICBfXG4gICAgICAgIHsgaWQgPSBfXG4gICAgICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBfXG4gICAgICAgIDsgYW1fYWR2YW5jaW5nID0gX1xuICAgICAgICA7IGV2ZW50c1xuICAgICAgICA7IGZpcmVkX2V2ZW50cyA9IF9cbiAgICAgICAgOyBoYW5kbGVfZmlyZWQgPSBfXG4gICAgICAgIDsgaXNfd2FsbF9jbG9ja1xuICAgICAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBfXG4gICAgICAgIDsgc2NoZWR1bGVyID0gX1xuICAgICAgICB9XG4gICAgPVxuICAgIGxldCBub3cgPSBUaW1pbmdfd2hlZWwubm93IGV2ZW50cyBpblxuICAgIGlmIGlzX3dhbGxfY2xvY2tcbiAgICB0aGVuIFslbWVzc2FnZSBcIndhbGxfY2xvY2tcIiAobm93IDogVGltZV9ucy50KV1cbiAgICBlbHNlIChcbiAgICAgIGxldCBhbGxfZXZlbnRzID0gcmVmIFtdIGluXG4gICAgICBUaW1pbmdfd2hlZWwuaXRlciBldmVudHMgfmY6KGZ1biBhbGFybSAtPlxuICAgICAgICBhbGxfZXZlbnRzIDo9IChBbGFybS5hdCBldmVudHMgYWxhcm0sIEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkgOjogIWFsbF9ldmVudHMpO1xuICAgICAgbGV0IGV2ZW50cyA9XG4gICAgICAgIExpc3Quc29ydCAhYWxsX2V2ZW50cyB+Y29tcGFyZTooZnVuIChhdDEsIF8pIChhdDIsIF8pIC0+IFRpbWVfbnMuY29tcGFyZSBhdDEgYXQyKVxuICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpzbmRcbiAgICAgIGluXG4gICAgICBbJW1lc3NhZ2UgXCJcIiAobm93IDogVGltZV9ucy50KSAoZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgbGlzdCldKVxuICA7O1xuXG4gIGxldCB0aW1pbmdfd2hlZWxfbm93IHQgPSBUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXG5cbiAgbGV0IGlzX2luX2ZpcmVkX2V2ZW50cyA9XG4gICAgbGV0IHJlYyBzZWFyY2ggY3VycmVudCB+dGFyZ2V0X2V2ZW50ID1cbiAgICAgIG1hdGNoJW9wdGlvbmFsIChjdXJyZW50IDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIGN1cnJlbnQgLT5cbiAgICAgICAgcGh5c19lcXVhbCBjdXJyZW50IHRhcmdldF9ldmVudCB8fCBzZWFyY2ggY3VycmVudC5uZXh0X2ZpcmVkIH50YXJnZXRfZXZlbnRcbiAgICBpblxuICAgIGZ1biB0IHRhcmdldF9ldmVudCAtPiBzZWFyY2ggdC5maXJlZF9ldmVudHMgfnRhcmdldF9ldmVudFxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRfd2l0aF9qb2JzICh0eXBlIHJ3KSB+am9iOihqb2JfaW52YXJpYW50IDogSm9iLnQgLT4gdW5pdCkgKHQgOiBydyB0KSA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmlkOmlnbm9yZVxuICAgICAgICB+YWR2YW5jZV9lcnJvcnM6aWdub3JlXG4gICAgICAgIH5hbV9hZHZhbmNpbmc6aWdub3JlXG4gICAgICAgIH5ldmVudHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZXZlbnRzIC0+XG4gICAgICAgICAgICAgVGltaW5nX3doZWVsLmludmFyaWFudCBpZ25vcmUgZXZlbnRzO1xuICAgICAgICAgICAgIFRpbWluZ193aGVlbC5pdGVyIGV2ZW50cyB+ZjooZnVuIGFsYXJtIC0+XG4gICAgICAgICAgICAgICBsZXQgam9iX29yX2V2ZW50ID0gQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtIGluXG4gICAgICAgICAgICAgICBsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgICAgICAgICAgICAgIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gICAgICAgICAgICAgICBtYXRjaCBrLCBwcm9qZWN0IGsgam9iX29yX2V2ZW50IHdpdGhcbiAgICAgICAgICAgICAgIHwgSm9iLCBqb2IgLT4gam9iX2ludmFyaWFudCBqb2JcbiAgICAgICAgICAgICAgIHwgRXZlbnQsIGV2ZW50IC0+XG4gICAgICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBhbGFybSBldmVudC5hbGFybSk7XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF0gZXZlbnQuYXQgfmV4cGVjdDooQWxhcm0uYXQgZXZlbnRzIGFsYXJtKTtcbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogRXZlbnQuU3RhdHVzLnRdIGV2ZW50LnN0YXR1cyB+ZXhwZWN0OlNjaGVkdWxlZDtcbiAgICAgICAgICAgICAgICAgRXZlbnQuaW52YXJpYW50IGV2ZW50KSkpXG4gICAgICAgIH5maXJlZF9ldmVudHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gKGZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50KSAtPlxuICAgICAgICAgICAgIGxldCByZWMgY2hlY2tfZXZlbnQgKGN1cnJlbnQgOiBFdmVudC50KSA9XG4gICAgICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIGN1cnJlbnQuYXQgKHRpbWluZ193aGVlbF9ub3cgdCkpO1xuICAgICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwuRXZlbnQuT3B0aW9uIGN1cnJlbnQubmV4dF9maXJlZCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICAgIHwgU29tZSBuZXh0IC0+XG4gICAgICAgICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgY3VycmVudC5hdCBuZXh0LmF0KTtcbiAgICAgICAgICAgICAgICAgY2hlY2tfZXZlbnQgbmV4dFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwuRXZlbnQuT3B0aW9uIGZpcmVkX2V2ZW50cyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGV2ZW50IC0+IGNoZWNrX2V2ZW50IGV2ZW50KSlcbiAgICAgICAgfmhhbmRsZV9maXJlZDppZ25vcmVcbiAgICAgICAgfmlzX3dhbGxfY2xvY2s6aWdub3JlXG4gICAgICAgIH5tb3N0X3JlY2VudGx5X2ZpcmVkOlxuICAgICAgICAgIChjaGVjayAoZnVuIG1vc3RfcmVjZW50bHlfZmlyZWQgLT5cbiAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbCAobW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGV2ZW50IC0+IGFzc2VydCAoaXNfaW5fZmlyZWRfZXZlbnRzIHQgZXZlbnQpKSlcbiAgICAgICAgfnNjaGVkdWxlcjppZ25vcmUpXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCB0ID0gaW52YXJpYW50X3dpdGhfam9icyB+am9iOihmdW4gXyAtPiAoKSkgdFxuZW5kXG5cbm9wZW4gVDFcblxudHlwZSB0ID0gcmVhZCBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xuXG5tb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWFkX3dyaXRlIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xuZW5kXG5cbmxldCBpZCB0ID0gdC5pZFxubGV0IGlzX3dhbGxfY2xvY2sgdCA9IHQuaXNfd2FsbF9jbG9ja1xubGV0IGxlbmd0aCB0ID0gVGltaW5nX3doZWVsLmxlbmd0aCB0LmV2ZW50c1xubGV0IG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCA9IFRpbWluZ193aGVlbC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQuZXZlbnRzXG5sZXQgcmVhZF9vbmx5ICh0IDogWz4gcmVhZCBdIFQxLnQpID0gKHQgOj4gdClcblxuKCogW2ZpcmUgdCBldmVudF0gc2V0cyBbZXZlbnQuc3RhdHVzID0gRmlyZWRdIGFuZCBpbnNlcnRzIFtldmVudF0gaW50b1xuICAgW3QuZmlyZWRfZXZlbnRzXSBpbiBzb3J0ZWQgdGltZSBvcmRlci4gKilcbmxldCBmaXJlIHQgKGV2ZW50IDogRXZlbnQudCkgPVxuICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IEZpcmVkO1xuICBldmVudC5hbGFybSA8LSBBbGFybS5udWxsICgpO1xuICBsZXQgKCkgPVxuICAgICgqIElmIFtldmVudF0gYmVsb25ncyBhZnRlciBbdC5tb3N0X3JlY2VudGx5X2ZpcmVkXSwgdGhlbiB3ZSBzdGFydCB0aGVcbiAgICAgICBpbnNlcnRpb24gdGhlcmUgcmF0aGVyIHRoYW4gYXQgdGhlIGZyb250IG9mIFt0LmZpcmVkX2V2ZW50c10uIFRoaXMgd29ya3NcbiAgICAgICBuaWNlbHkgaWYgd2UncmUgZ2V0dGluZyB0aGUgYWxhcm1zIGluIG5vbi1kZWNyZWFzaW5nIHRpbWUgb3JkZXIsIHdoaWNoIGlzXG4gICAgICAgY2xvc2UgdG8gd2hhdCBbVGltaW5nX3doZWVsXSBwcm92aWRlcyAoYWx0aG91Z2ggW1RpbWluZ193aGVlbF0gZG9lc24ndFxuICAgICAgIGd1YXJhbnRlZSB0aW1lIG9yZGVyaW5nIGZvciB0aW1lcyBpbiB0aGUgc2FtZSBpbnRlcnZhbCkuICopXG4gICAgbWF0Y2glb3B0aW9uYWwgKHQubW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBTb21lIG1vc3RfcmVjZW50bHlfZmlyZWQgd2hlbiBUaW1lX25zLiggPD0gKSBtb3N0X3JlY2VudGx5X2ZpcmVkLmF0IGV2ZW50LmF0IC0+XG4gICAgICBldmVudC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIG1vc3RfcmVjZW50bHlfZmlyZWQ7XG4gICAgICBldmVudC5uZXh0X2ZpcmVkIDwtIG1vc3RfcmVjZW50bHlfZmlyZWQubmV4dF9maXJlZFxuICAgIHwgXyAtPlxuICAgICAgZXZlbnQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgICAgIGV2ZW50Lm5leHRfZmlyZWQgPC0gdC5maXJlZF9ldmVudHNcbiAgaW5cbiAgdC5tb3N0X3JlY2VudGx5X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50O1xuICAoKiBXZSB1c2UgW1RpbWVfbnMuKCA8PSApXSByYXRoZXIgdGhhbiBbPF0gc28gdGhhdCBbZXZlbnRdIGlzIGFkZGVkIGFmdGVyIG90aGVyXG4gICAgIGV2ZW50cyBhdCB0aGUgc2FtZSB0aW1lLiBTaW5jZSBbVGltaW5nX3doZWVsXSBmaXJlcyBhbGFybXMgaW4gYSBidWNrZXQgaW5cbiAgICAgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgd2VyZSBhZGRlZCwgdXNpbmcgWzw9XSBrZWVwcyBldmVudHMgYXQgdGhlIHNhbWVcbiAgICAgdGltZSBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIGFkZGVkLiAqKVxuICB3aGlsZVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5uZXh0X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbmV4dCAtPlxuICAgICAgbGV0IGNvbnRpbnVlID0gVGltZV9ucy4oIDw9ICkgbmV4dC5hdCBldmVudC5hdCBpblxuICAgICAgaWYgY29udGludWVcbiAgICAgIHRoZW4gKFxuICAgICAgICBldmVudC5wcmV2X2ZpcmVkIDwtIGV2ZW50Lm5leHRfZmlyZWQ7XG4gICAgICAgIGV2ZW50Lm5leHRfZmlyZWQgPC0gbmV4dC5uZXh0X2ZpcmVkKTtcbiAgICAgIGNvbnRpbnVlXG4gIGRvXG4gICAgKClcbiAgZG9uZTtcbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQubmV4dF9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5leHQgLT4gbmV4dC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50XG4gIGluXG4gIG1hdGNoJW9wdGlvbmFsIChldmVudC5wcmV2X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgfCBOb25lIC0+IHQuZmlyZWRfZXZlbnRzIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50XG4gIHwgU29tZSBwcmV2IC0+IHByZXYubmV4dF9maXJlZCA8LSBFdmVudC5PcHRpb24uc29tZSBldmVudFxuOztcblxubGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiB0LmV2ZW50c1xubGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IHQuZXZlbnRzXG5cbmxldCBuZXh0X2FsYXJtX3J1bnNfYXQgdCA9XG4gIGlmIEV2ZW50Lk9wdGlvbi5pc19zb21lIHQuZmlyZWRfZXZlbnRzXG4gIHRoZW4gU29tZSAodGltaW5nX3doZWVsX25vdyB0KVxuICBlbHNlIFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IHQuZXZlbnRzXG47O1xuXG5sZXQgbm93IHQgPSBpZiB0LmlzX3dhbGxfY2xvY2sgdGhlbiBUaW1lX25zLm5vdyAoKSBlbHNlIHRpbWluZ193aGVlbF9ub3cgdFxubGV0IHRpbWluZ193aGVlbF9ub3cgPSB0aW1pbmdfd2hlZWxfbm93XG5cbmxldCBzY2hlZHVsZSB0IChldmVudCA6IEV2ZW50LnQpID1cbiAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBTY2hlZHVsZWQ7XG4gIGV2ZW50LmFsYXJtIDwtIFRpbWluZ193aGVlbC5hZGQgdC5ldmVudHMgfmF0OmV2ZW50LmF0IChldmVudCB8PiBKb2Jfb3JfZXZlbnQub2ZfZXZlbnQpXG47O1xuXG5sZXQgcmVtb3ZlX2Zyb21fZmlyZWQgdCAoZXZlbnQgOiBFdmVudC50KSB+bmV3X3N0YXR1cyA9XG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKHQubW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG1vc3RfcmVjZW50bHlfZmlyZWQgLT5cbiAgICAgIGlmIHBoeXNfZXF1YWwgZXZlbnQgbW9zdF9yZWNlbnRseV9maXJlZFxuICAgICAgdGhlblxuICAgICAgICB0Lm1vc3RfcmVjZW50bHlfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLmZpcnN0X3NvbWUgZXZlbnQubmV4dF9maXJlZCBldmVudC5wcmV2X2ZpcmVkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50LnByZXZfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiB0LmZpcmVkX2V2ZW50cyA8LSBldmVudC5uZXh0X2ZpcmVkXG4gICAgfCBTb21lIHByZXYgLT4gcHJldi5uZXh0X2ZpcmVkIDwtIGV2ZW50Lm5leHRfZmlyZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQubmV4dF9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5leHQgLT4gbmV4dC5wcmV2X2ZpcmVkIDwtIGV2ZW50LnByZXZfZmlyZWRcbiAgaW5cbiAgZXZlbnQubmV4dF9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgZXZlbnQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBuZXdfc3RhdHVzXG47O1xuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFdmVudFxuXG4gIGxldCBjcmVhdGVfaW50ZXJuYWwgdCB+YXQgfmludGVydmFsIH5jYWxsYmFjayA9XG4gICAgeyBhbGFybSA9IEFsYXJtLm51bGwgKClcbiAgICA7IGF0XG4gICAgOyBjYWxsYmFja1xuICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSB0LnNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XG4gICAgOyBpbnRlcnZhbFxuICAgIDsgbmV4dF9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBwcmV2X2ZpcmVkID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IHN0YXR1cyA9IFVuc2NoZWR1bGVkXG4gICAgfVxuICA7O1xuXG4gIGxldCBhZGQgdCBldmVudCA9XG4gICAgaWYgVGltZV9ucy4oIDw9ICkgZXZlbnQuYXQgKHRpbWluZ193aGVlbF9ub3cgdClcbiAgICB0aGVuIGZpcmUgdCBldmVudFxuICAgIGVsc2Ugc2NoZWR1bGUgdCBldmVudFxuICA7O1xuXG4gIGxldCBjcmVhdGVfYW5kX2FkZCB0IH5hdCB+aW50ZXJ2YWwgfmNhbGxiYWNrID1cbiAgICBsZXQgZXZlbnQgPSBjcmVhdGVfaW50ZXJuYWwgdCB+YXQgfmludGVydmFsIH5jYWxsYmFjayBpblxuICAgIGFkZCB0IGV2ZW50O1xuICAgIGV2ZW50XG4gIDs7XG5cbiAgbGV0IGF0IHQgYXQgY2FsbGJhY2sgPSBjcmVhdGVfYW5kX2FkZCB0IH5hdCB+aW50ZXJ2YWw6Tm9uZSB+Y2FsbGJhY2tcblxuICBsZXQgYWZ0ZXIgdCBzcGFuIGNhbGxiYWNrID1cbiAgICBjcmVhdGVfYW5kX2FkZCB0IH5hdDooVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW4pIH5pbnRlcnZhbDpOb25lIH5jYWxsYmFja1xuICA7O1xuXG4gIGxldCByZXF1aXJlX3NwYW5fYXRfbGVhc3RfYWxhcm1fcHJlY2lzaW9uIHQgc3BhbiA9XG4gICAgbGV0IGFsYXJtX3ByZWNpc2lvbiA9IGFsYXJtX3ByZWNpc2lvbiB0IGluXG4gICAgaWYgVGltZV9ucy5TcGFuLiggPCApIHNwYW4gYWxhcm1fcHJlY2lzaW9uXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImludGVydmFsIHNwYW4gc21hbGxlciB0aGFuIGFsYXJtIHByZWNpc2lvblwiXG4gICAgICAgICAgICAoc3BhbiA6IFRpbWVfbnMuU3Bhbi50KVxuICAgICAgICAgICAgKGFsYXJtX3ByZWNpc2lvbiA6IFRpbWVfbnMuU3Bhbi50KV1cbiAgOztcblxuICBsZXQgYXRfaW50ZXJ2YWxzIHQgc3BhbiBjYWxsYmFjayA9XG4gICAgcmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByZWNpc2lvbiB0IHNwYW47XG4gICAgY3JlYXRlX2FuZF9hZGQgdCB+YXQ6KG5vdyB0KSB+aW50ZXJ2YWw6KFNvbWUgc3BhbikgfmNhbGxiYWNrXG4gIDs7XG5cbiAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IFByZXZpb3VzbHlfdW5zY2hlZHVsZWRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgYWJvcnQgdCAoZXZlbnQgOiB0KSA6IEFib3J0X3Jlc3VsdC50ID1cbiAgICBtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IC0+XG4gICAgICAobWF0Y2ggZXZlbnQuaW50ZXJ2YWwgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IFNvbWUgKF8gOiBUaW1lX25zLlNwYW4udCkgLT5cbiAgICAgICAgIGV2ZW50LmludGVydmFsIDwtIE5vbmU7XG4gICAgICAgICBldmVudC5zdGF0dXMgPC0gVW5zY2hlZHVsZWQ7XG4gICAgICAgICBPaylcbiAgICB8IEZpcmVkIC0+XG4gICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzOlVuc2NoZWR1bGVkO1xuICAgICAgT2tcbiAgICB8IFNjaGVkdWxlZCAtPlxuICAgICAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBVbnNjaGVkdWxlZDtcbiAgICAgIFRpbWluZ193aGVlbC5yZW1vdmUgdC5ldmVudHMgZXZlbnQuYWxhcm07XG4gICAgICBldmVudC5hbGFybSA8LSBBbGFybS5udWxsICgpO1xuICAgICAgT2tcbiAgICB8IFVuc2NoZWR1bGVkIC0+IFByZXZpb3VzbHlfdW5zY2hlZHVsZWRcbiAgOztcblxuICBsZXQgYWJvcnRfaWZfcG9zc2libGUgdCBldmVudCA9IGlnbm9yZSAoYWJvcnQgdCBldmVudCA6IEFib3J0X3Jlc3VsdC50KVxuXG4gIGxldCBhYm9ydF9leG4gdCBldmVudCA9XG4gICAgbWF0Y2ggYWJvcnQgdCBldmVudCB3aXRoXG4gICAgfCBPayAtPiAoKVxuICAgIHwgcmVhc29uIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW1N5bmNocm9ub3VzX3RpbWVfc291cmNlLmFib3J0X2V4bl0gY2Fubm90IGFib3J0IGV2ZW50XCJcbiAgICAgICAgICAgIChyZWFzb24gOiBBYm9ydF9yZXN1bHQudCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB0IGNhbGxiYWNrID0gY3JlYXRlX2ludGVybmFsIHQgfmF0OlRpbWVfbnMuZXBvY2ggfmludGVydmFsOk5vbmUgfmNhbGxiYWNrXG5cbiAgbGV0IGlzX3NjaGVkdWxlZCAoZXZlbnQgOiB0KSA9XG4gICAgbWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCB8IFNjaGVkdWxlZCB8IEZpcmVkIC0+IHRydWVcbiAgICB8IFVuc2NoZWR1bGVkIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlX2F0X2ludGVybmFsIHQgKGV2ZW50IDogdCkgYXQgfmludGVydmFsID1cbiAgICBtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgIHwgKEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCB8IFNjaGVkdWxlZCB8IEZpcmVkKSBhcyBzdGF0dXMgLT5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVzZXhwIFwiY2Fubm90IHNjaGVkdWxlIGFuIGV2ZW50IHdpdGggc3RhdHVzXCIsIChzdGF0dXMgOiBFdmVudC5TdGF0dXMudCldXG4gICAgfCBVbnNjaGVkdWxlZCAtPlxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBldmVudC5pbnRlcnZhbCA8LSBpbnRlcnZhbDtcbiAgICAgIGFkZCB0IGV2ZW50O1xuICAgICAgT2sgKClcbiAgOztcblxuICBsZXQgc2NoZWR1bGVfYXQgdCBldmVudCBhdCA9IHNjaGVkdWxlX2F0X2ludGVybmFsIHQgZXZlbnQgYXQgfmludGVydmFsOk5vbmVcbiAgbGV0IHNjaGVkdWxlX2FmdGVyIHQgZXZlbnQgc3BhbiA9IHNjaGVkdWxlX2F0IHQgZXZlbnQgKFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBzcGFuKVxuXG4gIGxldCBzY2hlZHVsZV9hdF9pbnRlcnZhbHMgdCBldmVudCBzcGFuID1cbiAgICByZXF1aXJlX3NwYW5fYXRfbGVhc3RfYWxhcm1fcHJlY2lzaW9uIHQgc3BhbjtcbiAgICBzY2hlZHVsZV9hdF9pbnRlcm5hbCB0IGV2ZW50IChub3cgdCkgfmludGVydmFsOihTb21lIHNwYW4pXG4gIDs7XG5cbiAgbGV0IHJlc2NoZWR1bGVfYXQgdCBldmVudCBhdCA6IHVuaXQgPVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCBGaXJlZCAtPlxuICAgICAgcmVtb3ZlX2Zyb21fZmlyZWQgdCBldmVudCB+bmV3X3N0YXR1czpVbnNjaGVkdWxlZDtcbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgYWRkIHQgZXZlbnRcbiAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCAtPlxuICAgICAgKCogSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IGV2ZW50cyBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGZyb20gW2ZpcmVkXS4gKilcbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgYWRkIHQgZXZlbnRcbiAgICB8IFNjaGVkdWxlZCAtPlxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBpZiBUaW1lX25zLiggPiApIGF0ICh0aW1pbmdfd2hlZWxfbm93IHQpXG4gICAgICB0aGVuIFRpbWluZ193aGVlbC5yZXNjaGVkdWxlIHQuZXZlbnRzIGV2ZW50LmFsYXJtIH5hdFxuICAgICAgZWxzZSAoXG4gICAgICAgIFRpbWluZ193aGVlbC5yZW1vdmUgdC5ldmVudHMgZXZlbnQuYWxhcm07XG4gICAgICAgIGZpcmUgdCBldmVudClcbiAgICB8IFVuc2NoZWR1bGVkIC0+XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGV2ZW50LmludGVydmFsIDwtIE5vbmU7XG4gICAgICBhZGQgdCBldmVudFxuICA7O1xuXG4gIGxldCByZXNjaGVkdWxlX2FmdGVyIHQgZXZlbnQgc3BhbiA9IHJlc2NoZWR1bGVfYXQgdCBldmVudCAoVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW4pXG5cbmVuZFxuXG5sZXQgcnVuX2FmdGVyIHQgc3BhbiBjYWxsYmFjayA9IGlnbm9yZSAoRXZlbnQuYWZ0ZXIgdCBzcGFuIGNhbGxiYWNrIDogRXZlbnQudClcbmxldCBydW5fYXQgdCBhdCBjYWxsYmFjayA9IGlnbm9yZSAoRXZlbnQuYXQgdCBhdCBjYWxsYmFjayA6IEV2ZW50LnQpXG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzIHQgc3BhbiBjYWxsYmFjayA9XG4gIGlnbm9yZSAoRXZlbnQuYXRfaW50ZXJ2YWxzIHQgc3BhbiBjYWxsYmFjayA6IEV2ZW50LnQpXG47O1xuXG50eXBlIHNlbmRfZXhuID0gTW9uaXRvcjAudCAtPiA/YmFja3RyYWNlOlsgYEdldCB8IGBUaGlzIG9mIEJhY2t0cmFjZS50IF0gLT4gZXhuIC0+IHVuaXRcblxubGV0IHJ1bl9maXJlZF9ldmVudHMgdCB+KHNlbmRfZXhuIDogc2VuZF9leG4gb3B0aW9uKSA9XG4gIGxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ID0gdC5zY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBpblxuICB3aGlsZVxuICAgIG1hdGNoJW9wdGlvbmFsICh0LmZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGV2ZW50IC0+XG4gICAgICAobWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCB8IFNjaGVkdWxlZCB8IFVuc2NoZWR1bGVkIC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgRmlyZWQgLT5cbiAgICAgICAgIGxldCBuZXdfc3RhdHVzID1cbiAgICAgICAgICAgbWF0Y2ggZXZlbnQuaW50ZXJ2YWwgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gKFVuc2NoZWR1bGVkIDogRXZlbnQuU3RhdHVzLnQpXG4gICAgICAgICAgIHwgU29tZSBfIC0+IChIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgOiBFdmVudC5TdGF0dXMudClcbiAgICAgICAgIGluXG4gICAgICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzO1xuICAgICAgICAgKCogV2Ugc2V0IHRoZSBleGVjdXRpb24gY29udGV4dCBzbyB0aGF0IFtldmVudC5jYWxsYmFja10gcnVucyBpbiB0aGUgc2FtZSBjb250ZXh0XG4gICAgICAgICAgICB0aGF0IHdhcyBpbiBwbGFjZSB3aGVuIFtldmVudF0gd2FzIGNyZWF0ZWQuICopXG4gICAgICAgICBTY2hlZHVsZXIwLnNldF9leGVjdXRpb25fY29udGV4dCB0LnNjaGVkdWxlciBldmVudC5leGVjdXRpb25fY29udGV4dDtcbiAgICAgICAgICgqIEFueSBtb2RpZmljYXRpb24gb2YgW3N0YXR1c10gYmVsb3cgbmVlZHMgdG8gZmlyc3QgY2hlY2sgdGhhdCB0aGUgZXZlbnQgaXNcbiAgICAgICAgICAgIHN0aWxsIFtIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnRdLiBJZiB0aGUgZXZlbnQgc3RhdHVzIGlzIG5vdFxuICAgICAgICAgICAgW0hhcHBlbmluZ19wZXJpb2RpY19ldmVudF0gdGhlbiB0aGUgZXZlbnQncyBjYWxsYmFjayBtdXN0IGhhdmUgcmVzY2hlZHVsZWQgdGhlXG4gICAgICAgICAgICBldmVudC4gSW4gdGhhdCBjYXNlLCBkbyBub3Qgc2V0IHRoZSBzdGF0dXMgb3IgYXR0ZW1wdCB0byByZXNjaGVkdWxlIGFcbiAgICAgICAgICAgIHJlcGVhdGluZyBldmVudC5cblxuICAgICAgICAgICAgVGhpcyBjb2RlIGNvdWxkIGJlIG11Y2ggc2ltcGxlciBpZiB3ZSBpbW1lZGlhdGVseSByZXNjaGVkdWxlZCB0aGUgZXZlbnQgYmVmb3JlXG4gICAgICAgICAgICBydW5uaW5nIHRoZSBjYWxsYmFjayAobm8gbmVlZCBmb3IgdGhlIEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCBzdGF0ZSB0aGVuKS5cbiAgICAgICAgICAgIE9uZSByZWFzb24gd2UgZG9uJ3QgZG8gdGhhdCBpcyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gYXV0b21hdGljYWxseSByZXNjaGVkdWxlXG4gICAgICAgICAgICBhIHBlcmlvZGljIGV2ZW50IGlmIGl0cyBjYWxsYmFjayByYWlzZXMuICopXG4gICAgICAgICAobWF0Y2ggZXZlbnQuY2FsbGJhY2sgKCkgd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgKG1hdGNoIHNlbmRfZXhuIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gdC5hZHZhbmNlX2Vycm9ycyA8LSBFcnJvci5vZl9leG4gZXhuIDo6IHQuYWR2YW5jZV9lcnJvcnNcbiAgICAgICAgICAgICB8IFNvbWUgc2VuZF9leG4gLT5cbiAgICAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgICAgICAgICBzZW5kX2V4biBldmVudC5leGVjdXRpb25fY29udGV4dC5tb25pdG9yIGV4biB+YmFja3RyYWNlOihgVGhpcyBiYWNrdHJhY2UpKTtcbiAgICAgICAgICAgIEV2ZW50LnNldF9zdGF0dXNfaWYgfmlzOkhhcHBlbmluZ19wZXJpb2RpY19ldmVudCBldmVudCBVbnNjaGVkdWxlZFxuICAgICAgICAgIHwgKCkgLT5cbiAgICAgICAgICAgIChtYXRjaCBldmVudC5pbnRlcnZhbCB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IEV2ZW50LnNldF9zdGF0dXNfaWYgfmlzOkhhcHBlbmluZ19wZXJpb2RpY19ldmVudCBldmVudCBVbnNjaGVkdWxlZFxuICAgICAgICAgICAgIHwgU29tZSBpbnRlcnZhbCAtPlxuICAgICAgICAgICAgICAgaWYgRXZlbnQuU3RhdHVzLmVxdWFsIEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCBldmVudC5zdGF0dXNcbiAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAoKiBUaGUgZXZlbnQncyBjYWxsYmFjayBkaWQgbm90IHJlc2NoZWR1bGUgdGhlIGV2ZW50LiBTbyByZXNjaGVkdWxlIHRoZVxuICAgICAgICAgICAgICAgICAgICByZXBlYXRpbmcgdGltZXIgYmFzZWQgb24gdGhlIGxhc3QgW2F0XSB0aW1lLiAqKVxuICAgICAgICAgICAgICAgICBldmVudC5hdFxuICAgICAgICAgICAgICAgICA8LSBUaW1lX25zLm5leHRfbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICAgIH5iYXNlOmV2ZW50LmF0XG4gICAgICAgICAgICAgICAgICAgICAgfmFmdGVyOih0aW1pbmdfd2hlZWxfbm93IHQpXG4gICAgICAgICAgICAgICAgICAgICAgfmludGVydmFsO1xuICAgICAgICAgICAgICAgICBzY2hlZHVsZSB0IGV2ZW50KSkpO1xuICAgICAgICAgdHJ1ZSlcbiAgZG9cbiAgICAoKVxuICBkb25lO1xuICBTY2hlZHVsZXIwLnNldF9leGVjdXRpb25fY29udGV4dCB0LnNjaGVkdWxlciBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XG47O1xuXG5sZXQgYW55X2ZpcmVkX2V2ZW50c190b19ydW4gdCA9IEV2ZW50Lk9wdGlvbi5pc19zb21lICh0LmZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50KVxuXG5sZXQgYWR2YW5jZV9jbG9jayB0IH50b18gfnNlbmRfZXhuID1cbiAgVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2sgdC5ldmVudHMgfnRvXyB+aGFuZGxlX2ZpcmVkOnQuaGFuZGxlX2ZpcmVkO1xuICBydW5fZmlyZWRfZXZlbnRzIHQgfnNlbmRfZXhuXG47O1xuXG5sZXQgZmlyZV9wYXN0X2FsYXJtcyB0IH5zZW5kX2V4biA9XG4gIFRpbWluZ193aGVlbC5maXJlX3Bhc3RfYWxhcm1zIHQuZXZlbnRzIH5oYW5kbGVfZmlyZWQ6dC5oYW5kbGVfZmlyZWQ7XG4gIHJ1bl9maXJlZF9ldmVudHMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG4gPVxuICBhZHZhbmNlX2Nsb2NrIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpcmVfcGFzdF9hbGFybXMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBwcmVwYXJlX3RvX2FkdmFuY2UgdCB+c2VuZF9leG4gPVxuICBpZiB0LmFtX2FkdmFuY2luZ1xuICB0aGVuXG4gICAgcmFpc2VfcyBbJXNleHAgXCJjYW5ub3QgY2FsbCBbYWR2YW5jZV9ieV9hbGFybXNdIG9yIFthZHZhbmNlX2RpcmVjdGx5XSBmcm9tIGNhbGxiYWNrXCJdO1xuICB0LmFtX2FkdmFuY2luZyA8LSB0cnVlO1xuICAobWF0Y2ggdC5hZHZhbmNlX2Vycm9ycyB3aXRoXG4gICB8IFtdIC0+ICgpXG4gICB8IF8gLT4gdC5hZHZhbmNlX2Vycm9ycyA8LSBbXSk7XG4gIHJ1bl9maXJlZF9ldmVudHMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBmaW5pc2hfYWR2YW5jaW5nIHQgPVxuICB0LmFtX2FkdmFuY2luZyA8LSBmYWxzZTtcbiAgbWF0Y2ggdC5hZHZhbmNlX2Vycm9ycyB3aXRoXG4gIHwgW10gLT4gT2sgKClcbiAgfCBlcnJvcnMgLT5cbiAgICB0LmFkdmFuY2VfZXJyb3JzIDwtIFtdO1xuICAgIEVycm9yIChFcnJvci5vZl9saXN0IGVycm9ycylcbjs7XG5cbmxldCBhZHZhbmNlX2J5X2FsYXJtcyB0IH50b18gPVxuICBsZXQgc2VuZF9leG4gPSBOb25lIGluXG4gIHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4bjtcbiAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgaWYgVGltaW5nX3doZWVsLmlzX2VtcHR5IHQuZXZlbnRzXG4gICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG1pbl9hbGFybV90aW1lID0gVGltaW5nX3doZWVsLm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdC5ldmVudHMgaW5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG1pbl9hbGFybV90aW1lIHRvX1xuICAgICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICAoKiBXZSB1c2UgdGhlIGFjdHVhbCBhbGFybSB0aW1lLCByYXRoZXIgdGhhbiBbbmV4dF9hbGFybV9maXJlc19hdF0sIHNvIGFzIG5vdCB0b1xuICAgICAgICAgICBleHBvc2UgKG9yIGFjY3VtdWxhdGUgZXJyb3JzIGFzc29jaWF0ZWQgd2l0aCkgdGhlIHByZWNpc2lvbiBvZlxuICAgICAgICAgICBbVGltaW5nX3doZWVsXS4gKilcbiAgICAgICAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b186bWluX2FsYXJtX3RpbWUgfnNlbmRfZXhuKVxuICBkb25lO1xuICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpbmlzaF9hZHZhbmNpbmcgdFxuOztcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zX2J5IHQgYnkgPSBhZHZhbmNlX2J5X2FsYXJtcyB0IH50b186KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBieSlcblxubGV0IGFkdmFuY2VfYnlfbWF4X2FsYXJtc19pbl9lYWNoX3RpbWluZ193aGVlbF9pbnRlcnZhbCB0IH50b18gPVxuICBsZXQgc2VuZF9leG4gPSBOb25lIGluXG4gIHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4bjtcbiAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgaWYgVGltaW5nX3doZWVsLmlzX2VtcHR5IHQuZXZlbnRzXG4gICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gdC5ldmVudHMgaW5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG5leHRfYWxhcm1fZmlyZXNfYXQgdG9fXG4gICAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgICgqIFdlIHVzZSB0aGUgYWN0dWFsIGFsYXJtIHRpbWUsIHJhdGhlciB0aGFuIFtuZXh0X2FsYXJtX2ZpcmVzX2F0XSwgc28gYXMgbm90IHRvXG4gICAgICAgICAgIGV4cG9zZSAob3IgYWNjdW11bGF0ZSBlcnJvcnMgYXNzb2NpYXRlZCB3aXRoKSB0aGUgcHJlY2lzaW9uIG9mXG4gICAgICAgICAgIFtUaW1pbmdfd2hlZWxdLiAqKVxuICAgICAgICBhZHZhbmNlX2ludGVybmFsXG4gICAgICAgICAgdFxuICAgICAgICAgIH50b186KFRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQuZXZlbnRzKVxuICAgICAgICAgIH5zZW5kX2V4bilcbiAgZG9uZTtcbiAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gfnNlbmRfZXhuO1xuICBmaW5pc2hfYWR2YW5jaW5nIHRcbjs7XG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXyA9XG4gIGxldCBzZW5kX2V4biA9IE5vbmUgaW5cbiAgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuO1xuICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpbmlzaF9hZHZhbmNpbmcgdFxuOztcblxubGV0IGFkdmFuY2VfZGlyZWN0bHlfYnkgdCBieSA9IGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOihUaW1lX25zLmFmdGVyIChub3cgdCkgYnkpXG5cbmxldCBkdXJhdGlvbl9vZiB0IGYgPVxuICBsZXQgc3RhcnQgPSBub3cgdCBpblxuICBsZXQgcmVzdWx0ID0gZiAoKSBpblxuICBsZXQgZHVyYXRpb24gPSBUaW1lX25zLmRpZmYgKG5vdyB0KSBzdGFydCBpblxuICByZXN1bHQsIGR1cmF0aW9uXG47O1xuXG5sZXQgbWF4X2FsYXJtX3RpbWVfaW5fbWluX3RpbWluZ193aGVlbF9pbnRlcnZhbCB0ID1cbiAgVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0LmV2ZW50c1xuOztcblxubGV0IGhhc19ldmVudHNfdG9fcnVuIHQgPSBFdmVudC5PcHRpb24uaXNfc29tZSB0LmZpcmVkX2V2ZW50c1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuaW5jbHVkZSBTY2hlZHVsZXIwXG5tb2R1bGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTBcbm1vZHVsZSBFdmVudCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50XG5tb2R1bGUgQWxhcm0gPSBUaW1pbmdfd2hlZWwuQWxhcm1cbm1vZHVsZSBKb2Jfb3JfZXZlbnQgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS5Kb2Jfb3JfZXZlbnRcblxubGV0IGRlYnVnID0gRGVidWcuc2NoZWR1bGVyXG5cbm1vZHVsZSBJdmFyID0gc3RydWN0XG4gIG9wZW4gVHlwZXMuSXZhclxuXG4gIGxldCBjcmVhdGVfd2l0aF9jZWxsIGNlbGwgPSB7IGNlbGwgfVxuICBsZXQgY3JlYXRlICgpID0gY3JlYXRlX3dpdGhfY2VsbCBFbXB0eVxuXG4gIGxldCBjcmVhdGVfZnVsbCAodHlwZSBhKSAoYSA6IGEpID1cbiAgICAoKiBXZSBhbGxvY2F0ZSBhbiBpbW11dGFibGUgaXZhciBhbmQgdGhlbiBjYXN0IGl0IHRvIGEgbXV0YWJsZSBpdmFyLiAgVGhlIGltbXV0YWJpbGl0eVxuICAgICAgIGFsbG93cyBPQ2FtbCB0byBzdGF0aWNhbGx5IGFsbG9jYXRlIHRoZSBpdmFyIGlmIFthXSBpcyBjb25zdGFudC4gIFRoaXMgY2FzdCBpcyBzYWZlXG4gICAgICAgYmVjYXVzZSBhIGZ1bGwgaXZhciBpcyBuZXZlciBtdXRhdGVkLiAgV2UgYWxzbyBiZWxpZXZlIHRoYXQgd2Ugd2lsbCBub3QgdHJpZ2dlclxuICAgICAgIGZsYW1iZGEgdG8gc3B1cmlvdXNseSByZXBvciB3YXJuaW5nIDU5LCBtdXRhdGlvbiBvZiBrbm93biBpbW11dGFibGUgZGF0YS4gIEFsbFxuICAgICAgIG11dGF0aW9ucyBvZiBhbiBpdmFyIGNlbGwsIGkuZS4gW2Zvby5jZWxsIDwtIC4uLl0sIGFyZSBkaXJlY3RseSBwcmVjZWRlZCBieSBhXG4gICAgICAgW21hdGNoIGZvby5jZWxsXSB0aGF0IHByZXZlbnRzIHRoZSBbRnVsbF0gY2FzZSBmcm9tIHJlYWNoaW5nIHRoZSBtb2RpZmljYXRpb24uICBTb1xuICAgICAgIGZsYW1iZGEgc2hvdWxkIGFsd2F5cyBlbGltaW5hdGUgdGhlIFtmb28uY2VsbCA8LSAuLi5dIG9mIGEgY29uc3RhbnQgW0Z1bGxdIGl2YXIsXG4gICAgICAgYW5kIG5vdCB3YXJuLiAqKVxuICAgIChPYmoubWFnaWMgOiBhIEltbXV0YWJsZS50IC0+IGEgdCkgeyBjZWxsID0gRnVsbCBhIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQnZhciA9IHN0cnVjdFxuICBvcGVuIFR5cGVzLkJ2YXJcblxuICBsZXQgY3JlYXRlICgpID0gb2ZfcmVwciB7IGhhc19hbnlfd2FpdGVycyA9IGZhbHNlOyBpdmFyID0gSXZhci5jcmVhdGUgKCkgfVxuZW5kXG5cbm1vZHVsZSBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEV4ZWNfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVHlwZXMuVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLkV4ZWNfcmVzdWx0LnQgPVxuICAgICAgfCBGaW5pc2hlZFxuICAgICAgfCBOb3RfZmluaXNoZWRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICB0eXBlIHQgPSBUeXBlcy5WZXJ5X2xvd19wcmlvcml0eV93b3JrZXIudCA9XG4gICAgeyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IGV4ZWMgOiB1bml0IC0+IEV4ZWNfcmVzdWx0LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlciB+ZXhlY3V0aW9uX2NvbnRleHQ6KGNoZWNrIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCkgfmV4ZWM6aWdub3JlKVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFNjaGVkdWxlcjAudCA9XG4gIHsgKCogW2NoZWNrX2FjY2Vzc10gb3B0aW9uYWxseSBob2xkcyBhIGZ1bmN0aW9uIHRvIHJ1biB0byBjaGVjayB3aGV0aGVyIGFjY2VzcyB0byBbdF0gaXNcbiAgICAgICBjdXJyZW50bHkgYWxsb3dlZC4gIEl0IGlzIHVzZWQgdG8gZGV0ZWN0IGludmFsaWQgYWNjZXNzIHRvIHRoZSBzY2hlZHVsZXIgZnJvbSBhXG4gICAgICAgdGhyZWFkLiAqKVxuICAgIG11dGFibGUgY2hlY2tfYWNjZXNzIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uXG4gIDsgbXV0YWJsZSBqb2JfcG9vbCA6IEpvYl9wb29sLnRcbiAgOyBub3JtYWxfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gIDsgbG93X3ByaW9yaXR5X2pvYnMgOiBKb2JfcXVldWUudFxuICA7IHZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgOiBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIudCBEZXF1ZS50XG4gIDsgbXV0YWJsZSBtYWluX2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICA7IG11dGFibGUgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgKCogVGhlIHNjaGVkdWxlciBjYWxscyBbZ290X3VuY2F1Z2h0X2V4bl0gd2hlbiBhbiBleGNlcHRpb24gYnViYmxlcyB0byB0aGUgdG9wIG9mIHRoZVxuICAgICBtb25pdG9yIHRyZWUgd2l0aG91dCBiZWluZyBoYW5kbGVkLiAgVGhpcyBmdW5jdGlvbiBndWFyYW50ZWVzIHRvIG5ldmVyIHJ1biBhbm90aGVyXG4gICAgIGpvYiBhZnRlciB0aGlzIGJ5IGNhbGxpbmcgW2NsZWFyXSBhbmQgYmVjYXVzZSBbZW5xdWV1ZV9qb2JdIHdpbGwgbmV2ZXIgYWRkIGFub3RoZXJcbiAgICAgam9iLiAqKVxuICA7IG11dGFibGUgdW5jYXVnaHRfZXhuIDogKEV4bi50ICogU2V4cC50KSBvcHRpb25cbiAgOyBtdXRhYmxlIGN5Y2xlX2NvdW50IDogaW50XG4gIDsgbXV0YWJsZSBjeWNsZV9zdGFydCA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgaW5fY3ljbGUgOiBib29sXG4gIDsgbXV0YWJsZSBydW5fZXZlcnlfY3ljbGVfc3RhcnQgOiAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pIGFycmF5XG4gIDsgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIDpcbiAgICAgIChUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS50LCAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pKSBIYXNodGJsLnRcbiAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9lbmQgOiAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pIGFycmF5XG4gIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSA6XG4gICAgICAoVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUudCwgKFR5cGVzLkN5Y2xlX2hvb2sudFtAc2V4cC5vcGFxdWVdKSkgSGFzaHRibC50XG4gIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICA7IG11dGFibGUgbGFzdF9jeWNsZV9udW1fam9icyA6IGludFxuICA7IG11dGFibGUgdG90YWxfY3ljbGVfdGltZSA6IFRpbWVfbnMuU3Bhbi50XG4gIDsgbXV0YWJsZSB0aW1lX3NvdXJjZSA6IHJlYWRfd3JpdGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudFxuICAoKiBbZXh0ZXJuYWxfam9ic10gaXMgYSBxdWV1ZSBvZiBhY3Rpb25zIHNlbnQgZnJvbSBvdXRzaWRlIG9mIGFzeW5jLiAgVGhpcyBpcyBmb3IgdGhlXG4gICAgIGNhc2Ugd2hlcmUgd2Ugd2FudCB0byBzY2hlZHVsZSBhIGpvYiBvciBmaWxsIGFuIGl2YXIgZnJvbSBhIGNvbnRleHQgd2hlcmUgaXQgaXMgbm90XG4gICAgIHNhZmUgdG8gcnVuIGFzeW5jIGNvZGUsIGJlY2F1c2UgdGhlIGFzeW5jIGxvY2sgaXNuJ3QgaGVsZC4gIEZvciBpbnN0YW5jZTogLSBpbiBhblxuICAgICBPQ2FtbCBmaW5hbGl6ZXIsIGFzIHRoZXkgY2FuIHJ1biBhdCBhbnkgdGltZSBpbiBhbnkgdGhyZWFkLlxuXG4gICAgIFRoZSB3YXkgdG8gZG8gaXQgaXMgdG8gcXVldWUgYSB0aHVuayBpbiBbZXh0ZXJuYWxfam9ic10gYW5kIGNhbGxcbiAgICAgW3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rXSwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIG5vdGlmeWluZyB0aGUgc2NoZWR1bGVyXG4gICAgIHRoYXQgbmV3IGFjdGlvbnMgYXJlIGF2YWlsYWJsZS5cblxuICAgICBXaGVuIHVzaW5nIEFzeW5jIG9uIHVuaXgsIFt0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va10gaXMgc2V0IGluIFtBc3luY191bml4XVxuICAgICB0byBjYWxsIFtJbnRlcnJ1cHRvci50aHJlYWRfc2FmZV9pbnRlcnJ1cHRdLCB3aGljaCB3aWxsIHdha2UgdXAgdGhlXG4gICAgIFtBc3luY191bml4XSBzY2hlZHVsZXIgYW5kIHJ1biBhIGN5Y2xlLlxuXG4gICAgIE5vdGUgdGhhdCB0aGlzIGhvb2sgbWlnaHQgYmUgdXNlZCBpbiBvdGhlciBjb250ZXh0IChqc19vZl9vY2FtbCwgbWlyYWdlKS5cblxuICAgICBXaGVuIHJ1bm5pbmcgYSBjeWNsZSwgd2UgcHVsbCBleHRlcm5hbCBhY3Rpb25zIGF0IGV2ZXJ5IGpvYiBhbmQgcGVyZm9ybSB0aGVtXG4gICAgIGltbWVkaWF0ZWx5LiAqKVxuICA7IGV4dGVybmFsX2pvYnMgOiBFeHRlcm5hbF9qb2IudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgbXV0YWJsZSB0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA6IHVuaXQgLT4gdW5pdFxuICAoKiBbam9iX3F1ZXVlZF9ob29rXSBhbmQgW2V2ZW50X2FkZGVkX2hvb2tdIGFpbSB0byBiZSB1c2VkIGJ5IGpzX29mX29jYW1sLiAqKVxuICAoKiBXZSB1c2UgW18gb3B0aW9uXSBoZXJlIGJlY2F1c2UgdGhvc2UgaG9va3Mgd2lsbCBub3QgYmUgc2V0IGluIHRoZSBjb21tb24gY2FzZVxuICAgICBhbmQgd2Ugd2FudCB0byBhdm9pZCBleHRyYSBmdW5jdGlvbiBjYWxscy4gKilcbiAgOyBtdXRhYmxlIGpvYl9xdWV1ZWRfaG9vayA6IChQcmlvcml0eS50IC0+IHVuaXQpIG9wdGlvblxuICA7IG11dGFibGUgZXZlbnRfYWRkZWRfaG9vayA6IChUaW1lX25zLnQgLT4gdW5pdCkgb3B0aW9uXG4gIDsgbXV0YWJsZSB5aWVsZCA6ICgodW5pdCwgcmVhZF93cml0ZSkgVHlwZXMuQnZhci50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgbXV0YWJsZVxuICAgIHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluIDpcbiAgICAgICgodW5pdCwgcmVhZF93cml0ZSkgVHlwZXMuQnZhci50W0BzZXhwLm9wYXF1ZV0gKCogY29uZmlndXJhdGlvbiopKVxuICA7IG11dGFibGUgY2hlY2tfaW52YXJpYW50cyA6IGJvb2xcbiAgOyBtdXRhYmxlIG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIDogTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUudFxuICA7IG11dGFibGUgcmVjb3JkX2JhY2t0cmFjZXMgOiBib29sXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHVuY2F1Z2h0X2V4bl91bndyYXBwZWQgPSB1bmNhdWdodF9leG5cblxubGV0IHVuY2F1Z2h0X2V4biB0ID1cbiAgbWF0Y2ggdC51bmNhdWdodF9leG4gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGV4biwgc2V4cCkgLT5cbiAgICBTb21lIChFcnJvci5jcmVhdGUgXCJ1bmhhbmRsZWQgZXhjZXB0aW9uXCIgKGV4biwgc2V4cCkgWyVzZXhwX29mOiBFeG4udCAqIFNleHAudF0pXG47O1xuXG5sZXQgbnVtX3BlbmRpbmdfam9icyB0ID1cbiAgSm9iX3F1ZXVlLmxlbmd0aCB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzICsgSm9iX3F1ZXVlLmxlbmd0aCB0Lmxvd19wcmlvcml0eV9qb2JzXG47O1xuXG5sZXQgbnVtX2pvYnNfcnVuIHQgPVxuICBKb2JfcXVldWUubnVtX2pvYnNfcnVuIHQubm9ybWFsX3ByaW9yaXR5X2pvYnNcbiAgKyBKb2JfcXVldWUubnVtX2pvYnNfcnVuIHQubG93X3ByaW9yaXR5X2pvYnNcbjs7XG5cbmxldCBsYXN0X2N5Y2xlX251bV9qb2JzIHQgPSB0Lmxhc3RfY3ljbGVfbnVtX2pvYnNcblxubGV0IHVub3JkZXJlZF9pc19zdWJsaXN0IH5lcXVhbCB+c3VibGlzdDpzbWFsbCBsYXJnZSA9XG4gIGxldCBsYXJnZSA9IEFycmF5LnRvX2xpc3QgbGFyZ2UgaW5cbiAgbGV0IHJlbW92ZSBhIHggPVxuICAgIG1hdGNoIExpc3Quc3BsaXRfd2hpbGUgYSB+ZjooZnVuIHkgLT4gbm90IChlcXVhbCB5IHgpKSB3aXRoXG4gICAgfCBfLCBbXSAtPiBOb25lXG4gICAgfCBsLCBfIDo6IHIgLT4gU29tZSAobCBAIHIpXG4gIGluXG4gIE9wdGlvbi5pc19zb21lXG4gICAgKExpc3QuZm9sZCBzbWFsbCB+aW5pdDooU29tZSBsYXJnZSkgfmY6KGZ1biBhY2MgeCAtPlxuICAgICAgIE9wdGlvbi5iaW5kIGFjYyB+ZjooZnVuIGwgLT4gcmVtb3ZlIGwgeCkpKVxuOztcblxubGV0IGNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IHRhYmxlIGFycmF5ID1cbiAgKCogWW91IGNhbiBpbiBmYWN0IGhhdmUgaG9va3MgaW4gdGhlIGxpc3QgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIGNvcnJlc3BvbmRpbmcgZW50cnkgaW5cbiAgICAgdGhlIHRhYmxlLiBTdWNoIGhvb2tzIGNhbiBuZXZlciBiZSByZW1vdmVkLiAqKVxuICBhc3NlcnQgKHVub3JkZXJlZF9pc19zdWJsaXN0IH5lcXVhbDpwaHlzX2VxdWFsIH5zdWJsaXN0OihIYXNodGJsLmRhdGEgdGFibGUpIGFycmF5KVxuOztcblxubGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gIHRyeVxuICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jaGVja19hY2Nlc3M6aWdub3JlXG4gICAgICB+am9iX3Bvb2w6KGNoZWNrIEpvYl9wb29sLmludmFyaWFudClcbiAgICAgIH5ub3JtYWxfcHJpb3JpdHlfam9iczooY2hlY2sgSm9iX3F1ZXVlLmludmFyaWFudClcbiAgICAgIH5sb3dfcHJpb3JpdHlfam9iczooY2hlY2sgSm9iX3F1ZXVlLmludmFyaWFudClcbiAgICAgIH52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBxIC0+IERlcXVlLml0ZXIgcSB+ZjpWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuaW52YXJpYW50KSlcbiAgICAgIH5tYWluX2V4ZWN1dGlvbl9jb250ZXh0OihjaGVjayBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQpXG4gICAgICB+Y3VycmVudF9leGVjdXRpb25fY29udGV4dDooY2hlY2sgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50KVxuICAgICAgfnVuY2F1Z2h0X2V4bjpcbiAgICAgICAgKGNoZWNrIChmdW4gdW5jYXVnaHRfZXhuIC0+XG4gICAgICAgICAgIGlmIGlzX3NvbWUgdW5jYXVnaHRfZXhuIHRoZW4gYXNzZXJ0IChudW1fcGVuZGluZ19qb2JzIHQgPSAwKSkpXG4gICAgICB+Y3ljbGVfY291bnQ6KGNoZWNrIChmdW4gY3ljbGVfY291bnQgLT4gYXNzZXJ0IChjeWNsZV9jb3VudCA+PSAwKSkpXG4gICAgICB+Y3ljbGVfc3RhcnQ6aWdub3JlXG4gICAgICB+aW5fY3ljbGU6aWdub3JlXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0Omlnbm9yZVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIC0+XG4gICAgICAgICAgIGNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCkpXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX2VuZDppZ25vcmVcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlOlxuICAgICAgICAoY2hlY2sgKGZ1biBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIC0+XG4gICAgICAgICAgIGNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgdC5ydW5fZXZlcnlfY3ljbGVfZW5kKSlcbiAgICAgIH5sYXN0X2N5Y2xlX3RpbWU6aWdub3JlXG4gICAgICB+dG90YWxfY3ljbGVfdGltZTppZ25vcmVcbiAgICAgIH5sYXN0X2N5Y2xlX251bV9qb2JzOlxuICAgICAgICAoY2hlY2sgKGZ1biBsYXN0X2N5Y2xlX251bV9qb2JzIC0+IGFzc2VydCAobGFzdF9jeWNsZV9udW1fam9icyA+PSAwKSkpXG4gICAgICB+dGltZV9zb3VyY2U6XG4gICAgICAgIChjaGVja1xuICAgICAgICAgICAoU3luY2hyb25vdXNfdGltZV9zb3VyY2UuUmVhZF93cml0ZS5pbnZhcmlhbnRfd2l0aF9qb2JzIH5qb2I6KGZ1biBqb2IgLT5cbiAgICAgICAgICAgICAgYXNzZXJ0IChQb29sLnBvaW50ZXJfaXNfdmFsaWQgdC5qb2JfcG9vbCBqb2IpKSkpXG4gICAgICB+ZXh0ZXJuYWxfam9iczppZ25vcmVcbiAgICAgIH50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vazppZ25vcmVcbiAgICAgIH5qb2JfcXVldWVkX2hvb2s6aWdub3JlXG4gICAgICB+ZXZlbnRfYWRkZWRfaG9vazppZ25vcmVcbiAgICAgIH55aWVsZDppZ25vcmVcbiAgICAgIH55aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbjppZ25vcmVcbiAgICAgIH5jaGVja19pbnZhcmlhbnRzOmlnbm9yZVxuICAgICAgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlOmlnbm9yZVxuICAgICAgfnJlY29yZF9iYWNrdHJhY2VzOmlnbm9yZVxuICB3aXRoXG4gIHwgZXhuIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiU2NoZWR1bGVyLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSAodCA6IHQpXVxuOztcblxubGV0IGZyZWVfam9iIHQgam9iID0gUG9vbC5mcmVlIHQuam9iX3Bvb2wgam9iXG5cbmxldCBlbnF1ZXVlIHQgKGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudCkgZiBhID1cbiAgKCogSWYgdGhlcmUncyBiZWVuIGFuIHVuY2F1Z2h0IGV4biwgd2UgZG9uJ3QgYWRkIHRoZSBqb2IsIHNpbmNlIHdlIGRvbid0IHdhbnQgYW55IGpvYnNcbiAgICAgdG8gcnVuIG9uY2UgdGhlcmUncyBiZWVuIGFuIHVuY2F1Z2h0IGV4bi4gKilcbiAgaWYgaXNfbm9uZSB0LnVuY2F1Z2h0X2V4blxuICB0aGVuIChcbiAgICBsZXQgcHJpb3JpdHkgPSBleGVjdXRpb25fY29udGV4dC5wcmlvcml0eSBpblxuICAgIGxldCBqb2JfcXVldWUgPVxuICAgICAgbWF0Y2ggcHJpb3JpdHkgd2l0aFxuICAgICAgfCBOb3JtYWwgLT4gdC5ub3JtYWxfcHJpb3JpdHlfam9ic1xuICAgICAgfCBMb3cgLT4gdC5sb3dfcHJpb3JpdHlfam9ic1xuICAgIGluXG4gICAgSm9iX3F1ZXVlLmVucXVldWUgam9iX3F1ZXVlIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgICBtYXRjaCB0LmpvYl9xdWV1ZWRfaG9vayB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGYgLT4gZiBwcmlvcml0eSlcbjs7XG5cbmxldCBlbnF1ZXVlX2pvYiB0IGpvYiB+ZnJlZV9qb2IgPVxuICBsZXQgam9iX3Bvb2wgPSB0LmpvYl9wb29sIGluXG4gIGVucXVldWVcbiAgICB0XG4gICAgKFBvb2wuZ2V0IGpvYl9wb29sIGpvYiBQb29sLlNsb3QudDApXG4gICAgKFBvb2wuZ2V0IGpvYl9wb29sIGpvYiBQb29sLlNsb3QudDEpXG4gICAgKFBvb2wuZ2V0IGpvYl9wb29sIGpvYiBQb29sLlNsb3QudDIpO1xuICBpZiBmcmVlX2pvYiB0aGVuIFBvb2wuZnJlZSB0LmpvYl9wb29sIGpvYlxuOztcblxubGV0IGhhbmRsZV9maXJlZCAodGltZV9zb3VyY2UgOiBfIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLnQpIGpvYl9vcl9ldmVudCA9XG4gIGxldCBvcGVuIEpvYl9vcl9ldmVudC5NYXRjaCBpblxuICBsZXQgKEsgaykgPSBraW5kIGpvYl9vcl9ldmVudCBpblxuICBtYXRjaCBrLCBwcm9qZWN0IGsgam9iX29yX2V2ZW50IHdpdGhcbiAgfCBKb2IsIGpvYiAtPiBlbnF1ZXVlX2pvYiB0aW1lX3NvdXJjZS5zY2hlZHVsZXIgam9iIH5mcmVlX2pvYjp0cnVlXG4gIHwgRXZlbnQsIGV2ZW50IC0+IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLmZpcmUgdGltZV9zb3VyY2UgZXZlbnRcbjs7XG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgbm93ID0gVGltZV9ucy5ub3cgKCkgaW5cbiAgbGV0IHJlYyB0ID1cbiAgICB7IGNoZWNrX2FjY2VzcyA9IE5vbmVcbiAgICA7IGpvYl9wb29sID0gSm9iX3Bvb2wuY3JlYXRlICgpXG4gICAgOyBub3JtYWxfcHJpb3JpdHlfam9icyA9IEpvYl9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IGxvd19wcmlvcml0eV9qb2JzID0gSm9iX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgdmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyA9IERlcXVlLmNyZWF0ZSAoKVxuICAgIDsgbWFpbl9leGVjdXRpb25fY29udGV4dCA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbiAgICA7IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgPSBFeGVjdXRpb25fY29udGV4dC5tYWluXG4gICAgOyB1bmNhdWdodF9leG4gPSBOb25lXG4gICAgOyBjeWNsZV9zdGFydCA9IG5vd1xuICAgIDsgY3ljbGVfY291bnQgPSAwXG4gICAgOyBpbl9jeWNsZSA9IGZhbHNlXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnQgPSBbfHxdXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlKVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCA9IFt8fF1cbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlKVxuICAgIDsgbGFzdF9jeWNsZV90aW1lID0gc2VjIDAuXG4gICAgOyBsYXN0X2N5Y2xlX251bV9qb2JzID0gMFxuICAgIDsgdG90YWxfY3ljbGVfdGltZSA9IHNlYyAwLlxuICAgIDsgdGltZV9zb3VyY2VcbiAgICA7IGV4dGVybmFsX2pvYnMgPSBUaHJlYWRfc2FmZV9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IHRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rID0gaWdub3JlXG4gICAgOyBqb2JfcXVldWVkX2hvb2sgPSBOb25lXG4gICAgOyBldmVudF9hZGRlZF9ob29rID0gTm9uZVxuICAgIDsgeWllbGQgPSBCdmFyLmNyZWF0ZSAoKVxuICAgIDsgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gPSBCdmFyLmNyZWF0ZSAoKSAoKiBjb25maWd1cmF0aW9uICopXG4gICAgOyBjaGVja19pbnZhcmlhbnRzID0gQXN5bmNfa2VybmVsX2NvbmZpZy5jaGVja19pbnZhcmlhbnRzXG4gICAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9XG4gICAgICAgIEFzeW5jX2tlcm5lbF9jb25maWcubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgICA7IHJlY29yZF9iYWNrdHJhY2VzID0gQXN5bmNfa2VybmVsX2NvbmZpZy5yZWNvcmRfYmFja3RyYWNlc1xuICAgIH1cbiAgYW5kIGV2ZW50cyA9XG4gICAgVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOkFzeW5jX2tlcm5lbF9jb25maWcudGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQ6bm93XG4gIGFuZCB0aW1lX3NvdXJjZSA6IF8gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudCA9XG4gICAgeyBpZCA9IFR5cGVzLlRpbWVfc291cmNlX2lkLmNyZWF0ZSAoKVxuICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBbXVxuICAgIDsgYW1fYWR2YW5jaW5nID0gZmFsc2VcbiAgICA7IGV2ZW50c1xuICAgIDsgaGFuZGxlX2ZpcmVkID0gKGZ1biBhbGFybSAtPiBoYW5kbGVfZmlyZWQgdGltZV9zb3VyY2UgKEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkpXG4gICAgOyBmaXJlZF9ldmVudHMgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgaXNfd2FsbF9jbG9jayA9IHRydWVcbiAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgc2NoZWR1bGVyID0gdFxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IGlzX2RlYWQgdCA9IGlzX3NvbWUgdC51bmNhdWdodF9leG5cbmxldCBzZXRfY2hlY2tfYWNjZXNzIHQgZiA9IHQuY2hlY2tfYWNjZXNzIDwtIGZcblxubGV0IGJhY2t0cmFjZV9vZl9maXJzdF9qb2IgdCA9XG4gIE9wdGlvbi5maXJzdF9zb21lXG4gICAgKEpvYl9xdWV1ZS5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzKVxuICAgIChKb2JfcXVldWUuYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUgdC5sb3dfcHJpb3JpdHlfam9icylcbjs7XG5cbmxldCB0X3JlZiA9XG4gIG1hdGNoIFJlc3VsdC50cnlfd2l0aCBjcmVhdGUgd2l0aFxuICB8IE9rIHQgLT4gcmVmIHRcbiAgfCBFcnJvciBleG4gLT5cbiAgICBEZWJ1Zy5sb2cgXCJBc3luYyBjYW5ub3QgY3JlYXRlIGl0cyByYXcgc2NoZWR1bGVyXCIgZXhuIFslc2V4cF9vZjogZXhuXTtcbiAgICBleGl0IDFcbjs7XG5cbmxldCBjaGVja19hY2Nlc3MgdCA9XG4gIG1hdGNoIHQuY2hlY2tfYWNjZXNzIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmIC0+IGYgKClcbjs7XG5cbmxldCB0ICgpID1cbiAgbGV0IHQgPSAhdF9yZWYgaW5cbiAgY2hlY2tfYWNjZXNzIHQ7XG4gIHRcbjs7XG5cbmxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgPVxuICBpZiB0LnJlY29yZF9iYWNrdHJhY2VzXG4gIHRoZW4gRXhlY3V0aW9uX2NvbnRleHQucmVjb3JkX2JhY2t0cmFjZSB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbiAgZWxzZSB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbjs7XG5cbmxldCB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSB0IHRtcF9jb250ZXh0IH5mIHggPVxuICBsZXQgb2xkX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgdG1wX2NvbnRleHQ7XG4gIHByb3RlY3R4IH5mIHggfmZpbmFsbHk6KGZ1biBfIC0+IHNldF9leGVjdXRpb25fY29udGV4dCB0IG9sZF9jb250ZXh0KVxuOztcblxubGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgdCB0bXBfY29udGV4dCB+ZiA9IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIHQgdG1wX2NvbnRleHQgfmYgKClcblxubGV0IGNyZWF0ZV9qb2IgKHR5cGUgYSkgdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBpZiBQb29sLmlzX2Z1bGwgdC5qb2JfcG9vbCB0aGVuIHQuam9iX3Bvb2wgPC0gUG9vbC5ncm93IHQuam9iX3Bvb2w7XG4gIFBvb2wubmV3M1xuICAgIHQuam9iX3Bvb2xcbiAgICBleGVjdXRpb25fY29udGV4dFxuICAgIChPYmoubWFnaWMgKGYgOiBhIC0+IHVuaXQpIDogT2JqLnQgLT4gdW5pdClcbiAgICAoT2JqLnJlcHIgKGEgOiBhKSlcbjs7XG5cbmxldCBnb3RfdW5jYXVnaHRfZXhuIHQgZXhuIHNleHAgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcImdvdF91bmNhdWdodF9leG5cIiAoZXhuLCBzZXhwKSBbJXNleHBfb2Y6IEV4bi50ICogU2V4cC50XTtcbiAgTGlzdC5pdGVyIFsgdC5ub3JtYWxfcHJpb3JpdHlfam9iczsgdC5sb3dfcHJpb3JpdHlfam9icyBdIH5mOkpvYl9xdWV1ZS5jbGVhcjtcbiAgdC51bmNhdWdodF9leG4gPC0gU29tZSAoZXhuLCBzZXhwKVxuOztcblxuKCogW3N0YXJ0X2N5Y2xlIHQgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHldIGVuYWJsZXMgc3Vic2VxdWVudCBjYWxscyBvZiBbcnVuX2pvYnNdXG4gICB0byBydW4gdXAgdG8gW21heF9udW1fam9ic19wZXJfcHJpb3JpdHldIGpvYnMgb2YgZWFjaCBwcmlvcml0eSBsZXZlbC4gKilcbmxldCBzdGFydF9jeWNsZSB0IH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5ID1cbiAgbGV0IG4gPSBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5yYXcgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eSBpblxuICBKb2JfcXVldWUuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgbjtcbiAgSm9iX3F1ZXVlLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0Lmxvd19wcmlvcml0eV9qb2JzIG5cbjs7XG5cbigqIFtydW5fam9icyB0XSByZW1vdmVzIGpvYnMgZnJvbSBbdF0gb25lIGF0IGEgdGltZSBhbmQgcnVucyB0aGVtLCBzdG9wcGluZyBhcyBzb29uXG4gICBhcyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uIGlzIHJhaXNlZCwgb3Igd2hlbiBubyBtb3JlIGpvYnMgY2FuIGJlIHJ1biBhdCBhbnkgcHJpb3JpdHksXG4gICBhcyBwZXIgW35tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5XS4gKilcbmxldCByZWMgcnVuX2pvYnMgdCA9XG4gIG1hdGNoIEpvYl9xdWV1ZS5ydW5fam9icyB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzIHQgd2l0aFxuICB8IEVycm9yIF8gYXMgZSAtPiBlXG4gIHwgT2sgKCkgLT5cbiAgICAobWF0Y2ggSm9iX3F1ZXVlLnJ1bl9qb2JzIHQubG93X3ByaW9yaXR5X2pvYnMgdCB3aXRoXG4gICAgIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgICAgfCBPayAoKSAtPlxuICAgICAgIGlmIEpvYl9xdWV1ZS5jYW5fcnVuX2Ffam9iIHQubm9ybWFsX3ByaW9yaXR5X2pvYnNcbiAgICAgICB8fCBKb2JfcXVldWUuY2FuX3J1bl9hX2pvYiB0Lmxvd19wcmlvcml0eV9qb2JzXG4gICAgICAgdGhlbiBydW5fam9icyB0XG4gICAgICAgZWxzZSBPayAoKSlcbjs7XG5cbmxldCBzdGFiaWxpemUgdCA9XG4gIHN0YXJ0X2N5Y2xlXG4gICAgdFxuICAgIH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5OlxuICAgICAgKE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLmNyZWF0ZV9leG4gSW50Lm1heF92YWx1ZSk7XG4gIG1hdGNoIHJ1bl9qb2JzIHQgd2l0aFxuICB8IE9rICgpIC0+IE9rICgpXG4gIHwgRXJyb3IgKGV4biwgX2JhY2t0cmFjZSkgLT4gRXJyb3IgZXhuXG47O1xuXG5sZXQgY3JlYXRlX3RpbWVfc291cmNlXG4gICAgICA/KHRpbWluZ193aGVlbF9jb25maWcgPSBBc3luY19rZXJuZWxfY29uZmlnLnRpbWluZ193aGVlbF9jb25maWcpXG4gICAgICB+bm93XG4gICAgICAoKVxuICA9XG4gIGxldCB0ID0gdCAoKSBpblxuICBsZXQgZXZlbnRzID0gVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0Om5vdyBpblxuICBsZXQgcmVjIHRpbWVfc291cmNlIDogXyBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50ID1cbiAgICB7IGlkID0gVHlwZXMuVGltZV9zb3VyY2VfaWQuY3JlYXRlICgpXG4gICAgOyBhZHZhbmNlX2Vycm9ycyA9IFtdXG4gICAgOyBhbV9hZHZhbmNpbmcgPSBmYWxzZVxuICAgIDsgZXZlbnRzXG4gICAgOyBoYW5kbGVfZmlyZWQgPSAoZnVuIGFsYXJtIC0+IGhhbmRsZV9maXJlZCB0aW1lX3NvdXJjZSAoQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSlcbiAgICA7IGZpcmVkX2V2ZW50cyA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBpc193YWxsX2Nsb2NrID0gZmFsc2VcbiAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgc2NoZWR1bGVyID0gdFxuICAgIH1cbiAgaW5cbiAgdGltZV9zb3VyY2Vcbjs7XG5cbmxldCB3YWxsX2Nsb2NrICgpID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UucmVhZF9vbmx5ICh0ICgpKS50aW1lX3NvdXJjZVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxubW9kdWxlIENlbGwgPSBUeXBlcy5DZWxsXG5cbnR5cGUgYW55ID1cbiAgWyBgRW1wdHlcbiAgfCBgRW1wdHlfb25lX2hhbmRsZXJcbiAgfCBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgfCBgRnVsbFxuICB8IGBJbmRpclxuICBdXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkl2YXIudCA9IHsgbXV0YWJsZSBjZWxsIDogKCdhLCBhbnkpIGNlbGwgfVxuXG4oKiBUaGUgWydiXSBpcyB1c2VkIHRvIGVuY29kZSB0aGUgY29uc3RydWN0b3IuICBUaGlzIGFsbG93cyB1cyB0byB3cml0ZSBmdW5jdGlvbnMgdGhhdFxuICAgdGFrZSBvbmx5IG9uZSBvZiB0aGUgY29uc3RydWN0b3JzLCB3aXRoIG5vIHJ1bnRpbWUgdGVzdC5cblxuICAgV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHRoZSBkaXJlY3RlZCBncmFwaCB3aXRoIGl2YXJzIGFzIG5vZGVzIGFuZCBbSW5kaXJdcyBhc1xuICAgZWRnZXMgaXMgYWN5Y2xpYy4gIFRoZSBvbmx5IGZ1bmN0aW9ucyB0aGF0IGNyZWF0ZSBhbiBbSW5kaXJdIGFyZSBbc3F1YXNoXSBhbmRcbiAgIFtjb25uZWN0XSwgYW5kIGZvciB0aG9zZSwgdGhlIHRhcmdldCBvZiB0aGUgW0luZGlyXSBpcyBhbHdheXMgYSBub24tW0luZGlyXS4gIFRodXMsIHRoZVxuICAgbmV3bHkgYWRkZWQgZWRnZXMgYXJlIG5ldmVyIHBhcnQgb2YgYSBjeWNsZS4gKilcbmFuZCAoJ2EsICdiKSBjZWxsID0gKCdhLCAnYikgVHlwZXMuQ2VsbC50ID1cbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyA6XG4gICAgICB7ICgqIFtydW5dIGlzIG11dGFibGUgc28gd2UgY2FuIHNldCBpdCB0byBbaWdub3JlXSB3aGVuIHRoZSBoYW5kbGVyIGlzIHJlbW92ZWQuXG4gICAgICAgICAgIFRoaXMgaXMgdXNlZCB3aGVuIHdlIGluc3RhbGwgYSBoYW5kbGVyIG9uIGEgZnVsbCBpdmFyIHNpbmNlIGl0IGlzIGltbWVkaWF0ZWx5XG4gICAgICAgICAgIGFkZGVkIHRvIHRoZSBzY2hlZHVsZXIuICopXG4gICAgICAgIG11dGFibGUgcnVuIDogJ2EgLT4gdW5pdFxuICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgIDsgKCogW3ByZXZdIGFuZCBbbmV4dF0gY2lyY3VsYXJseSBkb3VibHkgbGluayBhbGwgaGFuZGxlcnMgb2YgdGhlIHNhbWUgaXZhci4gKilcbiAgICAgICAgbXV0YWJsZSBwcmV2IDogKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gICAgICA7IG11dGFibGUgbmV4dCA6ICgnYSwgWyBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgY2VsbFxuICAgICAgfVxuICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgY2VsbFxuICB8IEVtcHR5X29uZV9oYW5kbGVyIDpcbiAgICAgICgnYSAtPiB1bml0KSAqIEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9oYW5kbGVyIF0pIGNlbGxcbiAgfCBFbXB0eSA6ICgnYSwgWz4gYEVtcHR5IF0pIGNlbGxcbiAgfCBGdWxsIDogJ2EgLT4gKCdhLCBbPiBgRnVsbCBdKSBjZWxsXG4gIHwgSW5kaXIgOiAnYSB0IC0+ICgnYSwgWz4gYEluZGlyIF0pIGNlbGxcblxubW9kdWxlIEhhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG5cbiAgbGV0IHJ1biAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0LnJ1blxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpID0gdC5leGVjdXRpb25fY29udGV4dFxuICBsZXQgcHJldiAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0LnByZXZcbiAgbGV0IG5leHQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpID0gdC5uZXh0XG4gIGxldCBzZXRfcnVuIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSB4ID0gdC5ydW4gPC0geFxuICBsZXQgc2V0X3ByZXYgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpIHggPSB0LnByZXYgPC0geFxuICBsZXQgc2V0X25leHQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpIHggPSB0Lm5leHQgPC0geFxuXG4gIGxldCBjcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgICAoKiBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2Y6XG5cbiAgICAgICB7W1xuICAgICAgICAgbGV0IHJlYyB0ID1cbiAgICAgICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICAgICAgICAgICB7IHJ1blxuICAgICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHRcbiAgICAgICAgICAgICA7IHByZXYgICAgICAgICAgICAgID0gdFxuICAgICAgICAgICAgIDsgbmV4dCAgICAgICAgICAgICAgPSB0IH1cbiAgICAgICAgIGluXG4gICAgICAgICBoMSBdfVxuXG4gICAgICAgSG93ZXZlciB0aGUgY29tcGlsYXRpb24gb2YgcmVjdXJzaXZlIHZhbHVlIGluIE9DYW1sIGlzIG5vdCBvcHRpbWFsOiB0aGUgdmFsdWUgaXNcbiAgICAgICBhbGxvY2F0ZWQgdHdpY2UgYW5kIGNvcGllZCBvbmNlICh3aXRoIGEgbG9vcCBjYWxsaW5nIGNhbWxfbW9kaWZ5KS4gIFRoaXMgaXMgbm90XG4gICAgICAgbmVjZXNzYXJ5IGZvciBzaW1wbGUgcmVjdXJzaXZlIGRlZmluaXRpb25zIGxpa2UgdGhpcyBvbmUuXG5cbiAgICAgICBJbnN0ZWFkIHdlIGFsbG9jYXRlIHRoZSB2YWx1ZSB3aXRoIGR1bW15IGZpZWxkcyBhbmQgdXBkYXRlIHRoZW0gYWZ0ZXIuICopXG4gICAgbGV0IHQgPVxuICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICAgICAgeyBydW47IGV4ZWN1dGlvbl9jb250ZXh0OyBwcmV2ID0gT2JqLm1hZ2ljIE5vbmU7IG5leHQgPSBPYmoubWFnaWMgTm9uZSB9XG4gICAgaW5cbiAgICBzZXRfcHJldiB0IHQ7XG4gICAgc2V0X25leHQgdCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgY3JlYXRlMiBydW4xIGV4ZWN1dGlvbl9jb250ZXh0MSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiA9XG4gICAgKCogQW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIG9mOlxuXG4gICAgICAge1tcbiAgICAgICAgIGxldCByZWMgdDEgPVxuICAgICAgICAgICB7IHJ1biAgICAgICAgICAgICAgID0gcnVuMVxuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQxXG4gICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0MlxuICAgICAgICAgICA7IG5leHQgICAgICAgICAgICAgID0gdDIgfVxuICAgICAgICAgYW5kIHQyID1cbiAgICAgICAgICAgeyBydW4gICAgICAgICAgICAgICA9IHJ1bjJcbiAgICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA9IGV4ZWN1dGlvbl9jb250ZXh0MlxuICAgICAgICAgICA7IHByZXYgICAgICAgICAgICAgID0gdDFcbiAgICAgICAgICAgOyBuZXh0ICAgICAgICAgICAgICA9IHQxIH1cbiAgICAgICAgIGluXG4gICAgICAgICB0MSBdfSAqKVxuICAgIGxldCB0MSA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1biA9IHJ1bjFcbiAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA9IGV4ZWN1dGlvbl9jb250ZXh0MVxuICAgICAgICA7IHByZXYgPSBPYmoubWFnaWMgTm9uZVxuICAgICAgICA7IG5leHQgPSBPYmoubWFnaWMgTm9uZVxuICAgICAgICB9XG4gICAgaW5cbiAgICBsZXQgdDIgPVxuICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICAgICAgeyBydW4gPSBydW4yOyBleGVjdXRpb25fY29udGV4dCA9IGV4ZWN1dGlvbl9jb250ZXh0MjsgcHJldiA9IHQxOyBuZXh0ID0gdDEgfVxuICAgIGluXG4gICAgc2V0X3ByZXYgdDEgdDI7XG4gICAgc2V0X25leHQgdDEgdDI7XG4gICAgdDFcbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCAoZXhlY3V0aW9uX2NvbnRleHQgdCk7XG4gICAgbGV0IHIgPSByZWYgKG5leHQgdCkgaW5cbiAgICB3aGlsZSBub3QgKHBoeXNfZXF1YWwgIXIgdCkgZG9cbiAgICAgIGxldCB0MSA9ICFyIGluXG4gICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgKHByZXYgKG5leHQgdDEpKSB0MSk7XG4gICAgICBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQgKGV4ZWN1dGlvbl9jb250ZXh0IHQxKTtcbiAgICAgIHIgOj0gbmV4dCAhclxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgaXNfc2luZ2xldG9uIHQgPSBwaHlzX2VxdWFsIHQgKG5leHQgdClcblxuICBsZXQgbGVuZ3RoIHQgPVxuICAgIGxldCBuID0gcmVmIDEgaW5cbiAgICBsZXQgciA9IHJlZiAobmV4dCB0KSBpblxuICAgIHdoaWxlIG5vdCAocGh5c19lcXVhbCAhciB0KSBkb1xuICAgICAgaW5jciBuO1xuICAgICAgciA6PSBuZXh0ICFyXG4gICAgZG9uZTtcbiAgICAhblxuICA7O1xuXG4gIGxldCBlbnF1ZXVlIHQgc2NoZWR1bGVyIHYgPSBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgKGV4ZWN1dGlvbl9jb250ZXh0IHQpIChydW4gdCkgdlxuXG4gIGxldCBzY2hlZHVsZV9qb2JzIHQgdiA9XG4gICAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgZW5xdWV1ZSB0IHNjaGVkdWxlciB2O1xuICAgIGxldCByID0gcmVmIChuZXh0IHQpIGluXG4gICAgd2hpbGUgbm90IChwaHlzX2VxdWFsICFyIHQpIGRvXG4gICAgICBlbnF1ZXVlICFyIHNjaGVkdWxlciB2O1xuICAgICAgciA6PSBuZXh0ICFyXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCB1bmxpbmsgdCA9XG4gICAgc2V0X3ByZXYgKG5leHQgdCkgKHByZXYgdCk7XG4gICAgc2V0X25leHQgKHByZXYgdCkgKG5leHQgdCk7XG4gICAgc2V0X3ByZXYgdCB0O1xuICAgIHNldF9uZXh0IHQgdFxuICA7O1xuXG4gIGxldCBhZGQgdCBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgeyBydW47IGV4ZWN1dGlvbl9jb250ZXh0OyBwcmV2ID0gcHJldiB0OyBuZXh0ID0gdCB9XG4gICAgaW5cbiAgICBzZXRfbmV4dCAocHJldiB0KSByZXN1bHQ7XG4gICAgc2V0X3ByZXYgdCByZXN1bHQ7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgKCogW3NwbGljZSB0MSB0Ml0gY3JlYXRlczpcblxuICAgICB7dlxuICAgICAgIC0tPiB0MSA8LS0+IC4uLiA8LS0+IGxhc3QxIDwtLT4gdDIgPC0tPiAuLi4gPC0tPiBsYXN0MiA8LS1cbiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICB2fSAqKVxuICBsZXQgc3BsaWNlIHQxIHQyID1cbiAgICBsZXQgbGFzdDEgPSBwcmV2IHQxIGluXG4gICAgbGV0IGxhc3QyID0gcHJldiB0MiBpblxuICAgIHNldF9uZXh0IGxhc3QxIHQyO1xuICAgIHNldF9uZXh0IGxhc3QyIHQxO1xuICAgIHNldF9wcmV2IHQxIGxhc3QyO1xuICAgIHNldF9wcmV2IHQyIGxhc3QxXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCAocnVuLCBleGVjdXRpb25fY29udGV4dCkgOjogbCAtPlxuICAgICAgbGV0IGZpcnN0ID0gY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCBpblxuICAgICAgbGV0IHJlYyBsb29wIHByZXYgbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHNldF9wcmV2IGZpcnN0IHByZXZcbiAgICAgICAgfCAocnVuLCBleGVjdXRpb25fY29udGV4dCkgOjogbCAtPlxuICAgICAgICAgIGxldCB0ID1cbiAgICAgICAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHsgcnVuOyBleGVjdXRpb25fY29udGV4dDsgcHJldjsgbmV4dCA9IGZpcnN0IH1cbiAgICAgICAgICBpblxuICAgICAgICAgIHNldF9uZXh0IHByZXYgdDtcbiAgICAgICAgICBsb29wIHQgbFxuICAgICAgaW5cbiAgICAgIGxvb3AgZmlyc3QgbDtcbiAgICAgIFNvbWUgZmlyc3RcbiAgOztcblxuICBsZXQgdG9fbGlzdCBmaXJzdCA9XG4gICAgbGV0IHJlYyBsb29wIHQgYWNjID1cbiAgICAgIGxldCBhY2MgPSAocnVuIHQsIGV4ZWN1dGlvbl9jb250ZXh0IHQpIDo6IGFjYyBpblxuICAgICAgaWYgcGh5c19lcXVhbCB0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCAocHJldiB0KSBhY2NcbiAgICBpblxuICAgIGxvb3AgKHByZXYgZmlyc3QpIFtdXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBfICh0IDogXyB0KSA9XG4gICAgbGV0IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB7IHJ1biA9IF87IGV4ZWN1dGlvbl9jb250ZXh0OyBuZXh0ID0gXzsgcHJldiA9IF8gfSkgPVxuICAgICAgdFxuICAgIGluXG4gICAgWyVtZXNzYWdlIChleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpXVxuICA7O1xuZW5kXG5cbnR5cGUgJ2EgaXZhciA9ICdhIHRcblxuKCogQ29tcGlsZWQgYXMgdGhlIGlkZW50aXR5LiAqKVxubGV0IGNlbGxfb2ZfaGFuZGxlciA6IF8gSGFuZGxlci50IC0+IF8gPSBmdW5jdGlvblxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgeCAtPiAoeCA6PiAoXywgYW55KSBjZWxsKVxuOztcblxubGV0IGVxdWFsICh0IDogXyB0KSB0JyA9IHBoeXNfZXF1YWwgdCB0J1xubGV0IGluZGlyIHQgPSB7IGNlbGwgPSBJbmRpciB0IH1cblxuaW5jbHVkZSBTY2hlZHVsZXIuSXZhclxuXG4oKiBbc3F1YXNoIHRdIHJldHVybnMgdGhlIG5vbi1bSW5kaXJdIGl2YXIgYXQgdGhlIGVuZCBvZiB0aGUgKHBvc3NpYmx5IGVtcHR5KSBjaGFpbiBvZlxuICAgW0luZGlyXXMgc3RhcnRpbmcgd2l0aCBbdF0gYW5kIGVuc3VyZXMgdGhhdCBhbGwgW0luZGlyXXMgYWxvbmcgdGhhdCBjaGFpbiBhcmUgcmVwbGFjZWRcbiAgIHdpdGggYW4gW0luZGlyXSBwb2ludGluZyB0byB0aGUgZW5kIG9mIHRoZSBjaGFpbi4gKilcbmxldCBzcXVhc2ggPVxuICBsZXQgcmVjIGZvbGxvdyBpbmRpciB0ID1cbiAgICAoKiBbaW5kaXIgPSBJbmRpciB0XSAqKVxuICAgIG1hdGNoIHQuY2VsbCB3aXRoXG4gICAgfCBJbmRpciB0JyBhcyBpbmRpcicgLT4gZm9sbG93IGluZGlyJyB0J1xuICAgIHwgXyAtPiBpbmRpclxuICBpblxuICBsZXQgcmVjIHVwZGF0ZSB0IGluZGlyID1cbiAgICBtYXRjaCB0LmNlbGwgd2l0aFxuICAgIHwgSW5kaXIgdCcgLT5cbiAgICAgIHQuY2VsbCA8LSBpbmRpcjtcbiAgICAgIHVwZGF0ZSB0JyBpbmRpclxuICAgIHwgXyAtPiB0XG4gIGluXG4gIGZ1biB0IC0+XG4gICAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgICB8IEluZGlyIHQnIC0+XG4gICAgICAobWF0Y2ggdCcuY2VsbCB3aXRoXG4gICAgICAgfCBJbmRpciB0JycgYXMgaW5kaXIgLT4gdXBkYXRlIHQgKGZvbGxvdyBpbmRpciB0JycpXG4gICAgICAgfCBfIC0+IHQnICgqIG5vdGhpbmcgdG8gZG8sIHNpbmNlIFt0XSBpcyBhIGNoYWluIHdpdGggYSBzaW5nbGUgW0luZGlyXSAqKSlcbiAgICB8IF8gLT4gdFxuOztcblxuKCogbm90aGluZyB0byBkbywgc2luY2UgW3RdIGlzbid0IGFuIFtJbmRpcl0uICopXG5cbmxldCBpbnZhcmlhbnQgYV9pbnZhcmlhbnQgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gYV9pbnZhcmlhbnQgYVxuICB8IEVtcHR5IC0+ICgpXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKF8sIGV4ZWN1dGlvbl9jb250ZXh0KSAtPlxuICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCBleGVjdXRpb25fY29udGV4dFxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPiBIYW5kbGVyLmludmFyaWFudCBoYW5kbGVyXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0IDogU2V4cC50ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgYSAtPiBMaXN0IFsgQXRvbSBcIkZ1bGxcIjsgc2V4cF9vZl9hIGEgXVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT4gQXRvbSBcIkVtcHR5XCJcbjs7XG5cbmxldCBwZWVrIHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IFNvbWUgYVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT4gTm9uZVxuOztcblxubGV0IHZhbHVlIHQgfmlmX2VtcHR5X3RoZW5fZmFpbHdpdGggPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IGFcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+XG4gICAgZmFpbHdpdGggaWZfZW1wdHlfdGhlbl9mYWlsd2l0aFxuOztcblxubGV0IHZhbHVlX2V4biB0ID0gdmFsdWUgdCB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aDpcIkl2YXIudmFsdWVfZXhuIGNhbGxlZCBvbiBlbXB0eSBpdmFyXCJcblxubGV0IGlzX2VtcHR5IHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBfIC0+IGZhbHNlXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiB0cnVlXG47O1xuXG5sZXQgaXNfZnVsbCB0ID0gbm90IChpc19lbXB0eSB0KVxuXG5sZXQgZmlsbCB0IHYgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBfIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiSXZhci5maWxsIG9mIGZ1bGwgaXZhclwiICh0IDogXyB0KV1cbiAgfCBFbXB0eSAtPiB0LmNlbGwgPC0gRnVsbCB2XG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpIC0+XG4gICAgdC5jZWxsIDwtIEZ1bGwgdjtcbiAgICBTY2hlZHVsZXIuKGVucXVldWUgKHQgKCkpKSBleGVjdXRpb25fY29udGV4dCBydW4gdlxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPlxuICAgIHQuY2VsbCA8LSBGdWxsIHY7XG4gICAgSGFuZGxlci5zY2hlZHVsZV9qb2JzIGhhbmRsZXIgdlxuOztcblxubGV0IHJlbW92ZV9oYW5kbGVyIHQgKGhhbmRsZXIgOiBfIEhhbmRsZXIudCkgPVxuICBIYW5kbGVyLnNldF9ydW4gaGFuZGxlciBpZ25vcmU7XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gLT5cbiAgICAoKiBUaGVzZSBhcmUgb25seSBwb3NzaWJsZSBpZiBbaGFuZGxlcl0gd2FzIGFscmVhZHkgcmVtb3ZlZC4gICopXG4gICAgKClcbiAgfCBGdWxsIF8gLT5cbiAgICAoKiBUaGlzIGlzIHBvc3NpYmxlIGlmIFt0XSB3YXMgZmlsbGVkIGJlZm9yZSB3ZSB0cnkgdG8gcmVtb3ZlIHRoZSBoYW5kbGVyLiAgRS5nLlxuICAgICAgIFtEZWZlcnJlZC5jaG9vc2VdIHdpbGwgZG8gdGhpcy4gKilcbiAgICAoKVxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgY2VsbCAtPlxuICAgIGlmIEhhbmRsZXIuaXNfc2luZ2xldG9uIGhhbmRsZXJcbiAgICB0aGVuIHQuY2VsbCA8LSBFbXB0eVxuICAgIGVsc2UgKFxuICAgICAgaWYgcGh5c19lcXVhbCBoYW5kbGVyIGNlbGwgdGhlbiB0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIChIYW5kbGVyLm5leHQgaGFuZGxlcik7XG4gICAgICBIYW5kbGVyLnVubGluayBoYW5kbGVyKVxuOztcblxubGV0IGFkZF9oYW5kbGVyIHQgcnVuIGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5IC0+XG4gICAgbGV0IGhhbmRsZXIgPSBIYW5kbGVyLmNyZWF0ZSBydW4gZXhlY3V0aW9uX2NvbnRleHQgaW5cbiAgICB0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXI7XG4gICAgaGFuZGxlclxuICB8IEVtcHR5X29uZV9oYW5kbGVyIChydW4nLCBleGVjdXRpb25fY29udGV4dCcpIC0+XG4gICAgbGV0IGhhbmRsZXIgPSBIYW5kbGVyLmNyZWF0ZTIgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IHJ1bicgZXhlY3V0aW9uX2NvbnRleHQnIGluXG4gICAgdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciBoYW5kbGVyO1xuICAgIGhhbmRsZXJcbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIgLT4gSGFuZGxlci5hZGQgaGFuZGxlciBydW4gZXhlY3V0aW9uX2NvbnRleHRcbiAgfCBGdWxsIHYgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCBpblxuICAgICgqIFtydW5dIGNhbGxzIFtoYW5kbGVyLnJ1bl0sIHdoaWNoLCBpZiBbaGFuZGxlcl0gaGFzIGJlZW4gcmVtb3ZlZCwgaGFzIGJlZW4gY2hhbmdlZFxuICAgICAgIHRvIFtpZ25vcmVdLiAqKVxuICAgIGxldCBydW4gdiA9IEhhbmRsZXIucnVuIGhhbmRsZXIgdiBpblxuICAgIFNjaGVkdWxlci4oZW5xdWV1ZSAodCAoKSkpIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2O1xuICAgIGhhbmRsZXJcbjs7XG5cbmxldCBoYXNfaGFuZGxlcnMgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiB0cnVlXG4gIHwgRW1wdHkgfCBGdWxsIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCB1cG9uJyB0IHJ1biA9IGFkZF9oYW5kbGVyIHQgcnVuIFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpXG5cbigqIFt1cG9uXSBpcyBjb25jZXB0dWFsbHkgdGhlIHNhbWUgYXM6XG5cbiAgIHtbXG4gICAgIGxldCB1cG9uIHQgZiA9IGlnbm9yZSAodXBvbicgdCBydW4pIF19XG5cbiAgIEhvd2V2ZXIsIGJlbG93IGlzIGEgbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIHdvcnRoIGRvaW5nIGJlY2F1c2UgW3Vwb25dXG4gICBpcyB2ZXJ5IHdpZGVseSB1c2VkIGFuZCBpcyBzbyBtdWNoIG1vcmUgY29tbW9uIHRoYW4gW3Vwb24nXS4gIFRoZSBiZWxvdyBpbXBsZW1lbnRhdGlvblxuICAgYXZvaWRzIHRoZSB1c2Ugb2YgdGhlIGJhZyBvZiBoYW5kbGVycyBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIG9mIG9uZSBoYW5kbGVyIGZvclxuICAgdGhlIGRlZmVycmVkLiAqKVxubGV0IHVwb24gdCBydW4gPVxuICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGluXG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIHYgLT4gU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2XG4gIHwgRW1wdHkgLT4gdC5jZWxsIDwtIEVtcHR5X29uZV9oYW5kbGVyIChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KVxuICB8IEVtcHR5X29uZV9oYW5kbGVyIChydW4nLCBleGVjdXRpb25fY29udGV4dCcpIC0+XG4gICAgdC5jZWxsXG4gICAgPC0gY2VsbF9vZl9oYW5kbGVyIChIYW5kbGVyLmNyZWF0ZTIgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IHJ1bicgZXhlY3V0aW9uX2NvbnRleHQnKVxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPlxuICAgIGlnbm9yZSAoSGFuZGxlci5hZGQgaGFuZGxlciBydW4gZXhlY3V0aW9uX2NvbnRleHQgOiBfIEhhbmRsZXIudClcbjs7XG5cbigqIFtjb25uZWN0XSB0YWtlcyBpdmFycyBbYmluZF9yZXN1bHRdIGFuZCBbYmluZF9yaHNdLCBhbmQgbWFrZXMgW2JpbmRfcmhzXVxuICAgYmUgYW4gW0luZGlyXSBwb2ludGluZyB0byB0aGUgbm9uLWluZGlyIGNlbGwgcmVhY2hhYmxlIGZyb20gW2JpbmRfcmVzdWx0XS4gIE9uIGVudHJ5XG4gICB0byBbY29ubmVjdF0sIFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10gbWF5IGJlIGNoYWlucywgc2luY2UgW2JpbmRfcmhzXSBpcyBhblxuICAgYXJiaXRyYXJ5IHVzZXItc3VwcGxpZWQgZGVmZXJyZWQsIGFuZCBbYmluZF9yZXN1bHRdIGlzIHJldHVybmVkIHRvIHRoZSB1c2VyIHByaW9yIHRvXG4gICBiZWluZyBbY29ubmVjdF1lZCwgYW5kIG1heSBoYXZlIGJlZW4gY29udmVydGVkIHRvIGFuIGluZGlyZWN0aW9uIGluIHRoZSBjYXNlIG9mXG4gICByaWdodC1uZXN0ZWQgYmluZHMuXG5cbiAgIFRoZSBwdXJwb3NlIG9mIFtjb25uZWN0XSBpcyB0byBtYWtlIHRhaWwtcmVjdXJzaXZlIGJpbmQgbG9vcHMgdXNlIGNvbnN0YW50IHNwYWNlLlxuICAgRS5nLjpcblxuICAge1tcbiAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgIGlmIGkgPSAwXG4gICAgICAgdGhlbiByZXR1cm4gKClcbiAgICAgICBlbHNlIChcbiAgICAgICAgIGxldCViaW5kICgpID0gYWZ0ZXIgKHNlYyAxLikgaW5cbiAgICAgICAgIGxvb3AgKGkgLSAxKSkgXX1cblxuICAgW2Nvbm5lY3RdIG1ha2VzIGludGVybWVkaWF0ZSBiaW5kIHJlc3VsdHMgYWxsIGJlIFtJbmRpcl1zIHBvaW50aW5nIGF0IHRoZSBvdXRlcm1vc3RcbiAgIGJpbmQsIHJhdGhlciB0aGFuIGJlaW5nIGEgbGluZWFyLWxlbmd0aCBjaGFpbiwgd2l0aCBlYWNoIHBvaW50aW5nIHRvIHRoZSBwcmV2aW91cyBvbmUuXG4gICBUaGVuLCBzaW5jZSB0aGUgcHJvZ3JhbSBpcyBvbmx5IGhvbGRpbmcgb24gdG8gdGhlIGlubmVybW9zdCBhbmQgb3V0ZXJtb3N0IGJpbmRzIGFsbCB0aGVcbiAgIGludGVybWVkaWF0ZSBvbmVzIGNhbiBiZSBnYXJiYWdlIGNvbGxlY3RlZC5cblxuICAgW2Nvbm5lY3RdIHdvcmtzIGJ5IHNxdWFzaGluZyBpdHMgYXJndW1lbnRzIHNvIHRoYXQgdGhlIFtiaW5kX3Joc10gYWx3YXlzIHBvaW50cyBhdCB0aGVcbiAgIHVsdGltYXRlIHJlc3VsdC4gKilcbmxldCBjb25uZWN0ID1cbiAgKCogW3JlcG9pbnRfaW5kaXJzIH5pdmFyIH5pbmRpciB+YmluZF9yZXN1bHRdIHJlcG9pbnRzIHRvIFtpbmRpcl0gYWxsIHRoZSBpdmFycyBpbiB0aGVcbiAgICAgY2hhaW4gcmVhY2hhYmxlIGZyb20gW2l2YXJdLCBhbmQgcmV0dXJucyB0aGUgbm9uLVtJbmRpcl0gY2VsbCBhdCB0aGUgZW5kIG9mIHRoZVxuICAgICBjaGFpbi4gIEFmdGVyIHJlcG9pbnRpbmcsIHdlIHdpbGwgbWVyZ2UgdGhlIGhhbmRsZXJzIGluIHRoYXQgY2VsbCB3aXRoIHRoZSBoYW5kbGVyc1xuICAgICBpbiBbYmluZF9yZXN1bHRdLCBhbmQgcHV0IHRoZSBtZXJnZWQgc2V0IG9mIGhhbmRsZXJzIGluIFtiaW5kX3Jlc3VsdF0uICopXG4gIGxldCByZWMgcmVwb2ludF9pbmRpcnMgfml2YXIgfmluZGlyIH5iaW5kX3Jlc3VsdCA9XG4gICAgbGV0IGNlbGwgPSBpdmFyLmNlbGwgaW5cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IEluZGlyIGl2YXInIC0+XG4gICAgICBpdmFyLmNlbGwgPC0gaW5kaXI7XG4gICAgICByZXBvaW50X2luZGlycyB+aXZhcjppdmFyJyB+aW5kaXIgfmJpbmRfcmVzdWx0XG4gICAgfCBGdWxsIF8gLT4gY2VsbFxuICAgIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPlxuICAgICAgKCogSXQgaXMgcG9zc2libGUgdGhhdCBbYmluZF9yZXN1bHRdIGFuZCBbYmluZF9yaHNdIGFyZSBub3QgZXF1YWwsIGJ1dCB0aGVpciBjaGFpbnNcbiAgICAgICAgIG9mIGluZGlycyBsZWFkIHRvIHRoZSBzYW1lIG5vbi1bSW5kaXJdIGNlbGwsIGluIHdoaWNoIGNhc2Ugd2UgY2Fubm90IHNldCB0aGF0XG4gICAgICAgICBjZWxsIHRvIHBvaW50IHRvIGl0c2VsZiwgYmVjYXVzZSB0aGF0IHdvdWxkIGludHJvZHVjZSBhIGN5Y2xlLiAqKVxuICAgICAgaWYgbm90IChwaHlzX2VxdWFsIGl2YXIgYmluZF9yZXN1bHQpIHRoZW4gaXZhci5jZWxsIDwtIGluZGlyO1xuICAgICAgY2VsbFxuICBpblxuICBmdW4gfmJpbmRfcmVzdWx0IH5iaW5kX3JocyAtPlxuICAgIGlmIG5vdCAocGh5c19lcXVhbCBiaW5kX3Jlc3VsdCBiaW5kX3JocylcbiAgICB0aGVuIChcbiAgICAgIGxldCBiaW5kX3Jlc3VsdCA9IHNxdWFzaCBiaW5kX3Jlc3VsdCBpblxuICAgICAgbGV0IGluZGlyID0gSW5kaXIgYmluZF9yZXN1bHQgaW5cbiAgICAgIGxldCBiaW5kX3Joc19jb250ZW50cyA9IHJlcG9pbnRfaW5kaXJzIH5pdmFyOmJpbmRfcmhzIH5pbmRpciB+YmluZF9yZXN1bHQgaW5cbiAgICAgICgqIHVwZGF0ZSBbYmluZF9yZXN1bHRdIHdpdGggdGhlIHVuaW9uIG9mIGhhbmRsZXJzIGluIFtiaW5kX3Jlc3VsdF0gYW5kXG4gICAgICAgICBbYmluZF9yaHNdICopXG4gICAgICBtYXRjaCBiaW5kX3Jlc3VsdC5jZWxsLCBiaW5kX3Joc19jb250ZW50cyB3aXRoXG4gICAgICB8IEluZGlyIF8sIF8gfCBfLCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdIGFuZCBbcmVwb2ludF9pbmRpcnNdICopXG4gICAgICAoKiBbY29ubmVjdF0gaXMgb25seSB1c2VkIGluIGJpbmQsIHdob3NlIGl2YXIgaXMgb25seSBldmVyIGV4cG9ydGVkIGFzIGEgcmVhZC1vbmx5XG4gICAgICAgICBkZWZlcnJlZC4gIFRodXMsIFtiaW5kX3Jlc3VsdF0gbXVzdCBiZSBlbXB0eS4gKilcbiAgICAgIHwgRnVsbCBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBfLCBFbXB0eSAtPiAoKVxuICAgICAgfCBFbXB0eSwgXyAtPiBiaW5kX3Jlc3VsdC5jZWxsIDwtIGJpbmRfcmhzX2NvbnRlbnRzXG4gICAgICB8IEVtcHR5X29uZV9oYW5kbGVyIChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSwgRnVsbCB2IC0+XG4gICAgICAgIGJpbmRfcmVzdWx0LmNlbGwgPC0gYmluZF9yaHNfY29udGVudHM7XG4gICAgICAgIFNjaGVkdWxlci4oZW5xdWV1ZSAodCAoKSkpIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2XG4gICAgICB8IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIpLCBGdWxsIHYgLT5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBiaW5kX3Joc19jb250ZW50cztcbiAgICAgICAgSGFuZGxlci5zY2hlZHVsZV9qb2JzIGhhbmRsZXIgdlxuICAgICAgfCAoIEVtcHR5X29uZV9oYW5kbGVyIChydW4xLCBleGVjdXRpb25fY29udGV4dDEpXG4gICAgICAgICwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bjIsIGV4ZWN1dGlvbl9jb250ZXh0MikgKSAtPlxuICAgICAgICBsZXQgaGFuZGxlcjEgPSBIYW5kbGVyLmNyZWF0ZTIgcnVuMSBleGVjdXRpb25fY29udGV4dDEgcnVuMiBleGVjdXRpb25fY29udGV4dDIgaW5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjFcbiAgICAgIHwgKCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMSlcbiAgICAgICAgLCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMiwgZXhlY3V0aW9uX2NvbnRleHQyKSApIC0+XG4gICAgICAgIGlnbm9yZSAoSGFuZGxlci5hZGQgaGFuZGxlcjEgcnVuMiBleGVjdXRpb25fY29udGV4dDIgOiBfIEhhbmRsZXIudClcbiAgICAgIHwgKCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMSwgZXhlY3V0aW9uX2NvbnRleHQxKVxuICAgICAgICAsIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIyKSApIC0+XG4gICAgICAgIGxldCBoYW5kbGVyMSA9IEhhbmRsZXIuYWRkIGhhbmRsZXIyIHJ1bjEgZXhlY3V0aW9uX2NvbnRleHQxIGluXG4gICAgICAgIGJpbmRfcmVzdWx0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXIxXG4gICAgICB8ICggKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjEpXG4gICAgICAgICwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjIpICkgLT4gSGFuZGxlci5zcGxpY2UgaGFuZGxlcjEgaGFuZGxlcjIpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgSXZhciA9IEl2YXIwXG5tb2R1bGUgSGFuZGxlciA9IEl2YXIuSGFuZGxlclxuXG4oKiBEZWZlcnJlZHMgcHJlc2VudCBhIGNvdmFyaWFudCB2aWV3IG9mIGl2YXJzLiAgV2UgY291bGQgYWN0dWFsbHkgaW1wbGVtZW50IGRlZmVycmVkc1xuICAgdXNpbmcgYSByZWNvcmQgb2YgY2xvc3VyZXMsIGFzIGluIHRoZSBbZXNzZW5jZV9vZl9kZWZlcnJlZF0gcmVjb3JkIGJlbG93LCBmb3Igd2hpY2ggdGhlXG4gICBPQ2FtbCB0eXBlIGNoZWNrZXIgY2FuIGluZmVyIGNvdmFyaWFuY2UuICBIb3dldmVyLCBkb2luZyBzbyB3b3VsZCBtYWtlIFtJdmFyLnJlYWRdIHZlcnlcbiAgIGNvc3RseSwgYmVjYXVzZSBpdCB3b3VsZCBoYXZlIHRvIGFsbG9jYXRlIGxvdHMgb2YgY2xvc3VyZXMgYW5kIGEgcmVjb3JkLiAgSW5zdGVhZCBvZlxuICAgZG9pbmcgdGhpcywgd2UgbWFrZSBkZWZlcnJlZHMgYW4gYWJzdHJhY3QgY292YXJpYW50IHR5cGUsIHdoaWNoIGNvbmNyZXRlbHkgaXMganVzdCB0aGVcbiAgIGl2YXIsIGFuZCB1c2UgW09iai5tYWdpY10gdG8gY29udmVydCBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIGEgZGVmZXJyZWQgYW5kIGl0cyBjb25jcmV0ZVxuICAgcmVwcmVzZW50YXRpb24gYXMgYW4gaXZhci4gIFRoaXMgW09iai5tYWdpY10gaXMgc2FmZSBiZWNhdXNlIHRoZSByZXByZXNlbnRhdGlvbiBpc1xuICAgYWx3YXlzIGp1c3QgYW4gaXZhciwgYW5kIHRoZSBjb3ZhcmlhbmNlIGZvbGxvd3MgZnJvbSB0aGUgZmFjdCB0aGF0IGFsbCB0aGUgZGVmZXJyZWRcbiAgIG9wZXJhdGlvbnMgYXJlIGVxdWl2YWxlbnQgdG8gdGhvc2UgaW1wbGVtZW50ZWQgZGlyZWN0bHkgb24gdG9wIG9mIHRoZVxuICAgW2Vzc2VuY2Vfb2ZfZGVmZXJyZWRdLlxuXG4gICB7W1xuICAgICB0eXBlICgrJ2EsICdleGVjdXRpb25fY29udGV4dCkgZXNzZW5jZV9vZl9kZWZlcnJlZCA9XG4gICAgICAgeyBwZWVrICAgICAgICAgICAgICAgICAgICAgIDogdW5pdCAtPiAnYSBvcHRpb25cbiAgICAgICA7IGlzX2RldGVybWluZWQgICAgICAgICAgICAgOiB1bml0IC0+IGJvb2xcbiAgICAgICA7IHVwb24gICAgICAgICAgICAgICAgICAgICAgOiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICAgICAgIDsgdXBvbicgICAgICAgICAgICAgICAgICAgICA6ICgnYSAtPiB1bml0KSAtPiBVbnJlZ2lzdGVyLnRcbiAgICAgICA7IGluc3RhbGxfcmVtb3ZhYmxlX2hhbmRsZXIgOiAoJ2EsICdleGVjdXRpb25fY29udGV4dCkgUmF3X2hhbmRsZXIudCAtPiBVbnJlZ2lzdGVyLnQ7IH0gXX0gKilcblxudHlwZSArJ2EgdCA9ICdhIFR5cGVzLkRlZmVycmVkLnRcblxuKCogdGhlIGFic3RyYWN0IGNvdmFyaWFudCB0eXBlLCBlcXVpdmFsZW50IHRvIGl2YXIgKilcblxubGV0IG9mX2l2YXIgKHR5cGUgYSkgKGl2YXIgOiBhIEl2YXIudCkgOiBhIHQgPSBPYmoubWFnaWMgaXZhclxubGV0IHRvX2l2YXIgKHR5cGUgYSkgdCA6IGEgSXZhci50ID0gT2JqLm1hZ2ljICh0IDogYSB0KVxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gSXZhci5pbnZhcmlhbnQgaW52YXJpYW50X2EgKHRvX2l2YXIgdClcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBJdmFyLnNleHBfb2ZfdCBzZXhwX29mX2EgKHRvX2l2YXIgdClcbmxldCBwZWVrIHQgPSBJdmFyLnBlZWsgKHRvX2l2YXIgdClcbmxldCByZXR1cm4gYSA9IG9mX2l2YXIgKEl2YXIuY3JlYXRlX2Z1bGwgYSlcbmxldCBpc19kZXRlcm1pbmVkIHQgPSBJdmFyLmlzX2Z1bGwgKHRvX2l2YXIgdClcblxubGV0IHZhbHVlX2V4biB0ID1cbiAgSXZhci52YWx1ZVxuICAgICh0b19pdmFyIHQpXG4gICAgfmlmX2VtcHR5X3RoZW5fZmFpbHdpdGg6XCJEZWZlcnJlZC52YWx1ZV9leG4gY2FsbGVkIG9uIHVuZGV0ZXJtaW5lZCBkZWZlcnJlZFwiXG47O1xuXG5sZXQgdXBvbiB0IGYgPSBJdmFyLnVwb24gKHRvX2l2YXIgdCkgZlxuXG5sZXQgY3JlYXRlIGYgPVxuICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgZiByZXN1bHQ7XG4gIG9mX2l2YXIgcmVzdWx0XG47O1xuXG4oKiBkb24ndCB1c2UgW2NyZWF0ZV0gaGVyZSBhcyBpdCB3b3VsZCBhbGxvY2F0ZSBvbmUgbW9yZSBjbG9zdXJlICopXG5sZXQgYmluZCB0IH5mID1cbiAgbGV0IGJpbmRfcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgdXBvbiB0IChmdW4gYSAtPiBJdmFyLmNvbm5lY3QgfmJpbmRfcmVzdWx0IH5iaW5kX3JoczoodG9faXZhciAoZiBhKSkpO1xuICBvZl9pdmFyIGJpbmRfcmVzdWx0XG47O1xuXG5sZXQgYWRkX2hhbmRsZXIgdCBmIGV4ZWN1dGlvbl9jb250ZXh0ID0gSXZhci5hZGRfaGFuZGxlciAodG9faXZhciB0KSBmIGV4ZWN1dGlvbl9jb250ZXh0XG5sZXQgcmVtb3ZlX2hhbmRsZXIgdCBoID0gSXZhci5yZW1vdmVfaGFuZGxlciAodG9faXZhciB0KSBoXG4iLCJvcGVuIENvcmVcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMFxuaW5jbHVkZSBJdmFyMFxuXG5sZXQgcmVhZCA9IERlZmVycmVkLm9mX2l2YXJcbmxldCBmaWxsX2lmX2VtcHR5IHQgdiA9IGlmIGlzX2VtcHR5IHQgdGhlbiBmaWxsIHQgdlxuXG5pbmNsdWRlXG4gIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgKE9wdGlvbilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgdG9fYmluYWJsZSB0ID0gcGVlayB0XG5cbiAgICAgIGxldCBvZl9iaW5hYmxlID0gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGNyZWF0ZSAoKVxuICAgICAgICB8IFNvbWUgYSAtPiBjcmVhdGVfZnVsbCBhXG4gICAgICA7O1xuICAgIGVuZClcbiIsIigqKiBbTW9uYWRfc2VxdWVuY2UuU10gaXMgYSBnZW5lcmljIGludGVyZmFjZSBzcGVjaWZ5aW5nIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBhXG4gICAgY29udGFpbmVyIGFuZCBhIG1vbmFkLiAgSXQgaXMgc3BlY2lhbGl6ZWQgdG8gdGhlIFtEZWZlcnJlZF0gbW9uYWQgYW5kIHVzZWQgd2l0aFxuICAgIHZhcmlvdXMgY29udGFpbmVycyBpbiBtb2R1bGVzIFtEZWZlcnJlZC5BcnJheV0sIFtEZWZlcnJlZC5MaXN0XSwgW0RlZmVycmVkLlF1ZXVlXSwgYW5kXG4gICAgW0RlZmVycmVkLlNlcXVlbmNlXS4gIFRoZSBbTW9uYWRfc2VxdWVuY2UuaG93XSB0eXBlIHNwZWNpZmllcyB0aGUgcGFyYWxsZWxpc20gb2ZcbiAgICBjb250YWluZXIgaXRlcmF0b3JzLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSBob3cgPVxuICBbIGBQYXJhbGxlbCAoKiogbGlrZSBbYE1heF9jb25jdXJyZW50X2pvYnMgSW50Lm1heF92YWx1ZV0gKilcbiAgfCBgU2VxdWVudGlhbFxuICAoKiogW2BTZXF1ZW50aWFsXSBpcyBvZnRlbiBidXQgbm90IGFsd2F5cyB0aGUgc2FtZSBhcyBbYE1heF9jb25jdXJyZW50X2pvYnMgMV1cbiAgICAgIChmb3IgZXhhbXBsZSwgdGhleSBkaWZmZXIgaW4gdGhlIFtPcl9lcnJvcl0gbW9uYWQpLiAqKVxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG9mIGludFxuICBdXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgbW9uYWRcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGZvbGRpIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGludCAtPiAnYiAtPiAnYSAtPiAnYiBtb25hZCkgLT4gJ2IgbW9uYWRcbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIG1vbmFkXG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiAnYSBvcHRpb24gbW9uYWRcbiAgdmFsIGZpbmRpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gKGludCAqICdhKSBvcHRpb24gbW9uYWRcbiAgdmFsIGZpbmRfbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZF9tYXBpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uIG1vbmFkKSAtPiAnYiBvcHRpb24gbW9uYWRcbiAgdmFsIGV4aXN0cyA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZXhpc3RzaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wgbW9uYWQpIC0+IGJvb2wgbW9uYWRcbiAgdmFsIGZvcl9hbGwgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgbW9uYWQpIC0+IGJvb2wgbW9uYWRcbiAgdmFsIGZvcl9hbGxpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgYWxsIDogJ2EgbW9uYWQgdCAtPiAnYSB0IG1vbmFkXG4gIHZhbCBhbGxfdW5pdCA6IHVuaXQgbW9uYWQgdCAtPiB1bml0IG1vbmFkXG5cbiAgKCoqIHsyIERlZmVycmVkIGl0ZXJhdG9yc31cblxuICAgICAgSW4gdGhlIGZvbGxvd2luZywgdGhlIGRlZmF1bHQgW2hvd10gaXMgW2BTZXF1ZW50aWFsXSAqKVxuXG4gIHZhbCBpbml0IDogaG93OmhvdyAtPiBpbnQgLT4gZjooaW50IC0+ICdhIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBpdGVyIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+IHVuaXQgbW9uYWQpIC0+IHVuaXQgbW9uYWRcbiAgdmFsIGl0ZXJpIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiB1bml0IG1vbmFkKSAtPiB1bml0IG1vbmFkXG4gIHZhbCBtYXAgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIG1hcGkgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBmaWx0ZXIgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gJ2EgdCBtb25hZFxuICB2YWwgZmlsdGVyaSA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gJ2EgdCBtb25hZFxuICB2YWwgZmlsdGVyX21hcCA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGZpbHRlcl9tYXBpIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGNvbmNhdF9tYXAgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgY29uY2F0X21hcGkgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIHQgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbmVuZFxuIiwib3BlbiBDb3JlXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxuaW5jbHVkZSBEZWZlcnJlZDBcblxuKCogVG8gYXZvaWQgYSBzcGFjZSBsZWFrLCBpdCBpcyBuZWNlc3NhcnkgdGhhdCBbbmV2ZXJdIGFsbG9jYXRlcyBhIG5ldyBpdmFyIHdoZW5ldmVyIGl0IGlzXG4gICBjYWxsZWQuICBDb2RlIGNhbiBiaW5kIG9uIFtuZXZlciAoKV0sIHNvIGlmIHdlIHJlLXVzZWQgdGhlIGl2YXIsIHdlIGNvdWxkIGVuZGxlc3NseVxuICAgYWNjdW11bGF0ZSBoYW5kbGVycy4gKilcbmxldCBuZXZlciAoKSA9IEl2YXIucmVhZCAoSXZhci5jcmVhdGUgKCkpXG5cbm1vZHVsZSBNID0gTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBEZWZlcnJlZDBcblxuICAgIGxldCBtYXAgdCB+ZiA9XG4gICAgICAoKiBXZSBtYW51YWxseSBpbmxpbmUgW0RlZmVycmVkLmNyZWF0ZV0gaGVyZSwgYmVjYXVzZSB0aGUgbm9uLWZsYW1iZGEgY29tcGlsZXIgaXNuJ3RcbiAgICAgICAgIGFibGUgdG8gb3B0aW1pemUgYXdheSB0aGUgY2xvc3VyZSB0aGF0IHdvdWxkIGJlIGJlIGNyZWF0ZWQuICopXG4gICAgICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIHVwb24gdCAoZnVuIGEgLT4gSXZhci5maWxsIHJlc3VsdCAoZiBhKSk7XG4gICAgICBvZl9pdmFyIHJlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5pbmNsdWRlIE1cblxuKCogV2UgcmViaW5kIGFsbCB0aGUgdmFyaW91cyBbcmV0dXJuXXMgYmVjYXVzZSB0aGUgdXNlIG9mIHRoZSBbTW9uYWQuTWFrZV0gZnVuY3RvclxuICAgY2F1c2VzIHRoZSBjb21waWxlciB0byBub3QgaW5saW5lIFtyZXR1cm5dLCBhbmQgaGVuY2UgbWFrZXMgaXQgaW1wb3NzaWJsZSB0b1xuICAgc3RhdGljYWxseSBhbGxvY2F0ZSBjb25zdGFudHMgbGlrZSBbcmV0dXJuICgpXS4gIEJ5IHJlYmluZGluZyBbcmV0dXJuXSBhc1xuICAgW0RlZmVycmVkMC5yZXR1cm5dLCB0aGUgY29tcGlsZXIgY2FuIHNlZSB0aGF0OlxuXG4gICB7W1xuICAgICByZXR1cm4gYSA9IHsgSXZhci5JbW11dGFibGUuIGNlbGwgPSBGdWxsIGEgfSBdfVxuXG4gICBBbmQgaGVuY2UsIGlmIFthXSBpcyBjb25zdGFudCwgdGhlbiB0aGUgcmV0dXJuIGlzIGNvbnN0YW50IGFuZCBjYW4gYmUgc3RhdGljYWxseVxuICAgYWxsb2NhdGVkLiAgV2hlbiBjb21waWxpbmcgd2l0aCBmbGFtYmRhLCB0aGUgY29tcGlsZXIgaW5saW5lcyBbcmV0dXJuXSBhbmQgdGhpcyBtYW51YWxcbiAgIHJlYmluZGluZyB3b3VsZCBub3QgaGVscDsgd2UndmUgZGVjaWRlZCB0byBkbyBpdCBhbnl3YXkgc28gdGhhdCBub24tZmxhbWJkYSBidWlsZHNcbiAgIGdldCB0aGUgb3B0aW1pemF0aW9uLiAqKVxubGV0IHJldHVybiA9IERlZmVycmVkMC5yZXR1cm5cblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNLkxldF9zeW50YXhcblxuICBsZXQgcmV0dXJuID0gRGVmZXJyZWQwLnJldHVyblxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBNLkxldF9zeW50YXguTGV0X3N5bnRheFxuXG4gICAgbGV0IHJldHVybiA9IERlZmVycmVkMC5yZXR1cm5cbiAgZW5kXG5lbmRcblxub3BlbiBMZXRfc3ludGF4XG5cbigqIFdlIHNoYWRvdyBbYWxsXSBvbi1wdXJwb3NlIGhlcmUsIHNpbmNlIHRoZSBkZWZhdWx0IGRlZmluaXRpb24gaW50cm9kdWNlcyBhIGNoYWluIG9mXG4gICBiaW5kcyBhcyBsb25nIGFzIHRoZSBsaXN0LiAqKVxubGV0IGFsbCA9IGBNYWtlX3N1cmVfdG9fZGVmaW5lX2FsbF9lbHNld2hlcmVcbmxldCBfID0gYWxsXG5sZXQgdW5pdCA9IHJldHVybiAoKVxuXG5sZXQgYm90aCB0MSB0MiA9XG4gIGNyZWF0ZSAoZnVuIHJlc3VsdCAtPiB1cG9uIHQxIChmdW4gYTEgLT4gdXBvbiB0MiAoZnVuIGEyIC0+IEl2YXIuZmlsbCByZXN1bHQgKGExLCBhMikpKSlcbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbGV0ICggPj4+ICkgPSB1cG9uXG4gIGxldCBwcHhfYm90aCA9IGJvdGhcbmVuZFxuXG5vcGVuIEluZml4XG5cbmxldCBkb24ndF93YWl0X2ZvciAoXyA6IHVuaXQgdCkgPSAoKVxuXG5tb2R1bGUgQ2hvaWNlID0gc3RydWN0XG4gIHR5cGUgKydhIHQgPSBUIDogJ2IgRGVmZXJyZWQwLnQgKiAoJ2IgLT4gJ2EpIC0+ICdhIHRcblxuICBsZXQgbWFwIChUICh0LCBmMSkpIH5mOmYyID0gVCAodCwgZnVuIHggLT4gZjIgKGYxIHgpKVxuZW5kXG5cbm1vZHVsZSBVbnJlZ2lzdGVyID0gc3RydWN0XG4gICgqIFRoaXMgcmVwcmVzZW50YXRpb24gc2F2ZXMgMm4gd29yZHMgZm9yIGEgbGlzdCBvZiBuIGNob2ljZXMuICopXG4gIHR5cGUgJ3IgdCA9XG4gICAgfCBOaWwgOiAnciB0XG4gICAgfCBDb25zIDogJ2EgRGVmZXJyZWQwLnQgKiAoJ2EgLT4gJ3IpICogJ2EgRGVmZXJyZWQwLkhhbmRsZXIudCAqICdyIHQgLT4gJ3IgdFxuXG4gIGxldCByZWMgcHJvY2VzcyA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgKHQsIF9mLCBoYW5kbGVyLCByZXN0KSAtPlxuICAgICAgcmVtb3ZlX2hhbmRsZXIgdCBoYW5kbGVyO1xuICAgICAgcHJvY2VzcyByZXN0XG4gIDs7XG5lbmRcblxubGV0IGNob2ljZSB0IGYgPSBDaG9pY2UuVCAodCwgZilcblxubGV0IGVuYWJsZWQgY2hvaWNlcyA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgdW5yZWdpc3RlcnMgPSByZWYgVW5yZWdpc3Rlci5OaWwgaW5cbiAgbGV0IHJlYWR5IF8gPVxuICAgIGlmIEl2YXIuaXNfZW1wdHkgcmVzdWx0XG4gICAgdGhlbiAoXG4gICAgICBVbnJlZ2lzdGVyLnByb2Nlc3MgIXVucmVnaXN0ZXJzO1xuICAgICAgSXZhci5maWxsIHJlc3VsdCAoZnVuICgpIC0+XG4gICAgICAgIExpc3QucmV2XG4gICAgICAgICAgKExpc3QuZm9sZCBjaG9pY2VzIH5pbml0OltdIH5mOihmdW4gYWMgKENob2ljZS5UICh0LCBmKSkgLT5cbiAgICAgICAgICAgICBtYXRjaCBwZWVrIHQgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBhY1xuICAgICAgICAgICAgIHwgU29tZSB2IC0+IGYgdiA6OiBhYykpKSlcbiAgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgaW5cbiAgdW5yZWdpc3RlcnNcbiAgOj0gTGlzdC5mb2xkIGNob2ljZXMgfmluaXQ6VW5yZWdpc3Rlci5OaWwgfmY6KGZ1biBhY2MgKENob2ljZS5UICh0LCBmKSkgLT5cbiAgICBDb25zICh0LCBmLCBEZWZlcnJlZDAuYWRkX2hhbmRsZXIgdCByZWFkeSBleGVjdXRpb25fY29udGV4dCwgYWNjKSk7XG4gIEl2YXIucmVhZCByZXN1bHRcbjs7XG5cbmxldCByZWMgY2hvb3NlX3Jlc3VsdCBjaG9pY2VzID1cbiAgbWF0Y2ggY2hvaWNlcyB3aXRoXG4gIHwgVW5yZWdpc3Rlci5OaWwgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgVW5yZWdpc3Rlci5Db25zICh0LCBmLCBfLCByZXN0KSAtPlxuICAgIChtYXRjaCBwZWVrIHQgd2l0aFxuICAgICB8IE5vbmUgLT4gY2hvb3NlX3Jlc3VsdCByZXN0XG4gICAgIHwgU29tZSB2IC0+IGYgdilcbjs7XG5cbmxldCBnZW5lcmljX2Nob29zZSBjaG9pY2VzID1cbiAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGluXG4gICgqIEEgYmFjay1wYXRjaGVkIHJlZiBjb3VsZCBiZSB1c2VkIGhlcmUsIGJ1dCB1c2luZyBsYXp5IHNhdmVzIHNvbWUgbWVtb3J5XG4gICAgIGJlY2F1c2UgdGhlIEdDIGV2ZW50dWFsbHkgcmVtb3ZlcyB0aGUgZXh0cmEgaW5kaXJlY3Rpb24uICopXG4gIGxldCByZWMgdW5yZWdpc3RlcnMgPVxuICAgIGxhenlcbiAgICAgIChMaXN0LmZvbGRfcmlnaHQgY2hvaWNlcyB+aW5pdDpVbnJlZ2lzdGVyLk5pbCB+ZjooZnVuIChDaG9pY2UuVCAodCwgZikpIGFjYyAtPlxuICAgICAgICAgVW5yZWdpc3Rlci5Db25zICh0LCBmLCBEZWZlcnJlZDAuYWRkX2hhbmRsZXIgdCByZWFkeSBleGVjdXRpb25fY29udGV4dCwgYWNjKSkpXG4gIGFuZCByZWFkeSA6ICdhLiAnYSAtPiB1bml0ID1cbiAgICBmdW4gXyAtPlxuICAgICAgaWYgSXZhci5pc19lbXB0eSByZXN1bHRcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdW5yZWdpc3RlcnMgPSBMYXp5LmZvcmNlIHVucmVnaXN0ZXJzIGluXG4gICAgICAgIFVucmVnaXN0ZXIucHJvY2VzcyB1bnJlZ2lzdGVycztcbiAgICAgICAgSXZhci5maWxsIHJlc3VsdCAoY2hvb3NlX3Jlc3VsdCB1bnJlZ2lzdGVycykpXG4gIGluXG4gIGxldCAoXyA6IF8pID0gTGF6eS5mb3JjZSB1bnJlZ2lzdGVycyBpblxuICBJdmFyLnJlYWQgcmVzdWx0XG47O1xuXG4oKiBbY2hvb3NlMl0gaXMgYSBzcGVjaWFsaXphdGlvbiBvZiBbY2hvb3NlXSB0aGF0IGhhcyBiZXR0ZXIgbWVtb3J5IHVzYWdlLlxuICAgQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywgW2Nob29zZTJdIGtlZXBzIDIyIGV4dHJhIHdvcmRzIGFsaXZlXG4gICBmb3IgdGhlIGR1cmF0aW9uIG9mIGNob2ljZSBzdGF5aW5nIHVuZGV0ZXJtaW5lZCwgd2hpbGUgdGhlIGVxdWl2YWxlbnQgZ2VuZXJpY1xuICAgW2Nob29zZV0ga2VlcHMgMjcgKHNlZSB0aGUgYmVuY2htYXJrIGluIC4uL2JlbmNoL2Jpbi9iZW5jaF9jaG9vc2VfbWVtb3J5X3VzYWdlLm1sKS4gKilcbmxldCBjaG9vc2UyIGEgZmEgYiBmYiA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBpblxuICBsZXQgcmVjIGFfaGFuZGxlciA9IGxhenkgKERlZmVycmVkMC5hZGRfaGFuZGxlciBhIHJlYWR5IGV4ZWN1dGlvbl9jb250ZXh0KVxuICBhbmQgYl9oYW5kbGVyID0gbGF6eSAoRGVmZXJyZWQwLmFkZF9oYW5kbGVyIGIgcmVhZHkgZXhlY3V0aW9uX2NvbnRleHQpXG4gIGFuZCByZWFkeSA6ICdhLiAnYSAtPiB1bml0ID1cbiAgICBmdW4gXyAtPlxuICAgICAgaWYgSXZhci5pc19lbXB0eSByZXN1bHRcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBUaGUgb3JkZXIgb2YgdGhlc2Ugb3BlcmF0aW9ucyBtYXR0ZXJzOlxuICAgICAgICAgICBpZiB3ZSBjYWxsIFtmYl0gb3IgW2ZhXSBmaXJzdCBhbmQgW3JlbW92ZV9oYW5kbGVyXSBhZnRlciwgdGhlblxuICAgICAgICAgICBhbnkgZXhjZXB0aW9ucyByYWlzZWQgd2lsbCBjYXVzZSB0aGUgaGFuZGxlcnMgdG8gcmVtYWluIGFuZCB0aGVuXG4gICAgICAgICAgIHRoZSBcInNlY29uZCBjaG9pY2VcIiBnZXRzIGEgY2hhbmNlIHRvIHJ1bi5cbiAgICAgICAgKilcbiAgICAgICAgcmVtb3ZlX2hhbmRsZXIgYSAoTGF6eS5mb3JjZSBhX2hhbmRsZXIpO1xuICAgICAgICByZW1vdmVfaGFuZGxlciBiIChMYXp5LmZvcmNlIGJfaGFuZGxlcik7XG4gICAgICAgIG1hdGNoIHBlZWsgYSB3aXRoXG4gICAgICAgIHwgU29tZSBhdiAtPiBJdmFyLmZpbGwgcmVzdWx0IChmYSBhdilcbiAgICAgICAgfCBOb25lIC0+IEl2YXIuZmlsbCByZXN1bHQgKGZiICh2YWx1ZV9leG4gYikpKVxuICBpblxuICBsZXQgKF8gOiBfKSA9IExhenkuZm9yY2UgYV9oYW5kbGVyIGluXG4gIGxldCAoXyA6IF8pID0gTGF6eS5mb3JjZSBiX2hhbmRsZXIgaW5cbiAgSXZhci5yZWFkIHJlc3VsdFxuOztcblxubGV0IGNob29zZSBjaG9pY2VzID1cbiAgbWF0Y2ggY2hvaWNlcyB3aXRoXG4gIHwgWyBDaG9pY2UuVCAoYSwgZmEpOyBDaG9pY2UuVCAoYiwgZmIpIF0gLT4gY2hvb3NlMiBhIGZhIGIgZmJcbiAgfCBjaG9pY2VzIC0+IGdlbmVyaWNfY2hvb3NlIGNob2ljZXNcbjs7XG5cbmxldCBhbnlfZiB0cyBmID0gY2hvb3NlIChMaXN0Lm1hcCB0cyB+ZjooZnVuIHQgLT4gY2hvaWNlIHQgZikpXG5sZXQgYW55IHRzID0gYW55X2YgdHMgRm4uaWRcbmxldCBhbnlfdW5pdCB0cyA9IGFueV9mIHRzIChGbi5pZ25vcmUgOiB1bml0IC0+IHVuaXQpXG5cbmxldCBmb3JfIHN0YXJ0IH50b18gfmRvXyA9XG4gIGlmIHN0YXJ0ID4gdG9fXG4gIHRoZW4gcmV0dXJuICgpXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGxldCViaW5kICgpID0gZG9fIGkgaW5cbiAgICAgIGlmIGkgPj0gdG9fIHRoZW4gcmV0dXJuICgpIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIHN0YXJ0KVxuOztcblxubGV0IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgY3JlYXRlIChmdW4gZmluaXNoZWQgLT5cbiAgICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgICAgZiBzdGF0ZVxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IGBSZXBlYXQgc3RhdGUgLT4gbG9vcCBzdGF0ZVxuICAgICAgfCBgRmluaXNoZWQgcmVzdWx0IC0+IEl2YXIuZmlsbCBmaW5pc2hlZCByZXN1bHRcbiAgICBpblxuICAgIGxvb3Agc3RhdGUpXG47O1xuXG5sZXQgZm9yZXZlciBzdGF0ZSBmID1cbiAgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIChmdW4gc3RhdGUgLT5cbiAgICBsZXQlbWFwIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgIGBSZXBlYXQgc3RhdGUpXG4gID4+PiBuZXZlcl9yZXR1cm5zXG47O1xuXG50eXBlIGhvdyA9IE1vbmFkX3NlcXVlbmNlLmhvdyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgdHlwZSBNb25hZF9zZXF1ZW5jZSA9IE1vbmFkX3NlcXVlbmNlLlMgd2l0aCB0eXBlICdhIG1vbmFkIDo9ICdhIHRcblxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgYiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICB8IHggOjogeHMgLT4gZiBiIHggPj4+IGZ1biBiIC0+IGxvb3AgeHMgYlxuICAgIGluXG4gICAgbG9vcCB0IGluaXQpXG47O1xuXG5sZXQgc2VxbWFwIHQgfmYgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBicyBhIC0+IGYgYSA+PnwgZnVuIGIgLT4gYiA6OiBicykgPj58IExpc3QucmV2XG5sZXQgYWxsIGRzID0gc2VxbWFwIGRzIH5mOkZuLmlkXG5sZXQgYWxsX3VuaXQgZHMgPSBmb2xkIGRzIH5pbml0OigpIH5mOihmdW4gKCkgZCAtPiBkKVxubGV0IG9rIHggPSB4ID4+fCBmdW4geCAtPiBPayB4XG5cbm1vZHVsZSBGb3JfdGVzdHMgPSBzdHJ1Y3RcbiAgbGV0IGdlbmVyaWNfY2hvb3NlID0gZ2VuZXJpY19jaG9vc2VcbmVuZFxuIiwib3BlbiBEZWZlcnJlZDFcbmluY2x1ZGUgSW5maXhcbmluY2x1ZGUgTGV0X3N5bnRheFxuXG5sZXQgY2hvaWNlID0gY2hvaWNlXG5sZXQgY2hvb3NlID0gY2hvb3NlXG5sZXQgZG9uJ3Rfd2FpdF9mb3IgPSBkb24ndF93YWl0X2ZvclxubGV0IG5ldmVyID0gbmV2ZXJcbmxldCByZXR1cm4gPSByZXR1cm5cbmxldCB1cG9uID0gdXBvblxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdSA9XG4gIHwgRW1wdHkgb2YgJ2EgSXZhci50XG4gIHwgRnVsbFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSAnYSB0ID0gJ2EgdSByZWYgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IEZ1bGwgLT4gKClcbiAgICB8IEVtcHR5IGl2YXIgLT4gYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKVxuOztcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBpdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IHQgPSByZWYgKEVtcHR5IGl2YXIpIGluXG4gIHQsIEl2YXIucmVhZCBpdmFyXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBFbXB0eSBfIC0+IHRydWVcbiAgfCBGdWxsIC0+IGZhbHNlXG47O1xuXG5sZXQgZmlsbCB0IGEgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgRW1wdHkgaSAtPlxuICAgIHQgOj0gRnVsbDtcbiAgICBJdmFyLmZpbGwgaSBhXG4gIHwgRnVsbCAtPiByYWlzZV9zIFslbWVzc2FnZSBcImF0dGVtcHQgdG8gZmlsbCBmdWxsIGl2YXJcIl1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgU3RyZWFtID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG5leHQgRGVmZXJyZWQudFxuXG4gIGFuZCAnYSBuZXh0ID0gJ2EgVHlwZXMuU3RyZWFtLm5leHQgPVxuICAgIHwgTmlsXG4gICAgfCBDb25zIG9mICdhICogJ2EgdFxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIGxldCByZWMgbG9vcCBkIGFjIDogU2V4cC50ID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTGlzdCAoTGlzdC5yZXYgKFNleHAuQXRvbSBcIi4uLlwiIDo6IGFjKSlcbiAgICAgIHwgU29tZSBOaWwgLT4gTGlzdCAoTGlzdC5yZXYgYWMpXG4gICAgICB8IFNvbWUgKENvbnMgKGEsIHQpKSAtPiBsb29wIHQgKHNleHBfb2ZfYSBhIDo6IGFjKVxuICAgIGluXG4gICAgbG9vcCB0IFtdXG4gIDs7XG5cbiAgbGV0IG5leHQgdCA9IHRcbmVuZFxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5UYWlsLnQgPVxuICB7ICgqIFtuZXh0XSBwb2ludHMgYXQgdGhlIHRhaWwgb2YgdGhlIHN0cmVhbSAqKSBtdXRhYmxlIG5leHQgOiAnYSBTdHJlYW0ubmV4dCBJdmFyLnQgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG5sZXQgc2V4cF9vZl90IF8gdCA6IFNleHAudCA9XG4gIEF0b20gKGlmIEl2YXIuaXNfZW1wdHkgdC5uZXh0IHRoZW4gXCI8b3BlbiB0YWlsPlwiIGVsc2UgXCI8Y2xvc2VkIHRhaWw+XCIpXG47O1xuXG5sZXQgY3JlYXRlICgpID0geyBuZXh0ID0gSXZhci5jcmVhdGUgKCkgfVxubGV0IGNvbGxlY3QgdCA9IEl2YXIucmVhZCAobmV4dCB0KVxubGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIChuZXh0IHQpXG5cbmxldCBmaWxsX2V4biB0IHYgPVxuICBpZiBpc19jbG9zZWQgdCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwic3RyZWFtIGlzIGNsb3NlZFwiXSBlbHNlIEl2YXIuZmlsbCAobmV4dCB0KSB2XG47O1xuXG5sZXQgY2xvc2VfZXhuIHQgPSBmaWxsX2V4biB0IE5pbFxubGV0IGNsb3NlX2lmX29wZW4gdCA9IGlmIG5vdCAoaXNfY2xvc2VkIHQpIHRoZW4gSXZhci5maWxsIChuZXh0IHQpIE5pbFxuXG5sZXQgZXh0ZW5kIHQgdiA9XG4gIGxldCBuZXh0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgZmlsbF9leG4gdCAoQ29ucyAodiwgSXZhci5yZWFkIG5leHQpKTtcbiAgdC5uZXh0IDwtIG5leHRcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxubW9kdWxlIFN0cmVhbSA9IFRhaWwuU3RyZWFtXG5tb2R1bGUgTW9uaXRvciA9IE1vbml0b3IwXG5pbmNsdWRlIE1vbml0b3JcblxudHlwZSBtb25pdG9yID0gdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm5hbWU6aWdub3JlXG4gICAgICB+aGVyZTppZ25vcmVcbiAgICAgIH5pZDppZ25vcmVcbiAgICAgIH5mb3J3YXJkaW5nOmlnbm9yZVxuICAgICAgfm5leHRfZXJyb3I6KGNoZWNrIChmdW4gbmV4dF9lcnJvciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgbmV4dF9lcnJvcikpKVxuICAgICAgfmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzOmlnbm9yZVxuICAgICAgfnRhaWxzX2Zvcl9hbGxfZXJyb3JzOmlnbm9yZVxuICAgICAgfmhhc19zZWVuX2Vycm9yOmlnbm9yZSlcbjs7XG5cbmxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSlcbmxldCBjdXJyZW50ICgpID0gRXhlY3V0aW9uX2NvbnRleHQubW9uaXRvciAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSlcbmxldCBkZXRhY2ggdCA9IHQuZm9yd2FyZGluZyA8LSBEZXRhY2hlZFxuXG50eXBlIGhhbmRsZXJfc3RhdGUgPVxuICB8IFVuaW5pdGlhbGl6ZWRcbiAgfCBSdW5uaW5nIG9mIChFeGVjdXRpb25fY29udGV4dC50ICogKGV4biAtPiB1bml0KSkgQmFnLkVsdC50XG4gIHwgVGVybWluYXRlZFxuXG5sZXQgZGV0YWNoX2FuZF9pdGVyX2Vycm9ycyB0IH5mID1cbiAgZGV0YWNoIHQ7XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgbGV0IGhhbmRsZXJfc3RhdGVfcmVmID0gcmVmIFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IHJ1bl9mIGV4biA9XG4gICAgbWF0Y2ggIWhhbmRsZXJfc3RhdGVfcmVmIHdpdGhcbiAgICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBUZXJtaW5hdGVkIC0+ICgpXG4gICAgfCBSdW5uaW5nIGJhZ19lbHQgLT5cbiAgICAgICh0cnkgZiBleG4gd2l0aFxuICAgICAgIHwgaW5uZXJfZXhuIC0+XG4gICAgICAgICBoYW5kbGVyX3N0YXRlX3JlZiA6PSBUZXJtaW5hdGVkO1xuICAgICAgICAgQmFnLnJlbW92ZSB0LmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIGJhZ19lbHQ7XG4gICAgICAgICAoKiBbcnVuX2ZdIGFsd2F5cyBydW5zIGluIFtleGVjdXRpb25fY29udGV4dF0uICBIZW5jZSwgW3JhaXNlIGlubmVyX2V4bl0gc2VuZHNcbiAgICAgICAgICAgIFtpbm5lcl9leG5dIHRvIFtleGVjdXRpb25fY29udGV4dF0ncyBtb25pdG9yLCBpLmUuIHRoZSBtb25pdG9yIGluIGVmZmVjdCB3aGVuXG4gICAgICAgICAgICBbZGV0YWNoX2FuZF9pdGVyX2Vycm9yc10gd2FzIGNhbGxlZC4gKilcbiAgICAgICAgIHJhaXNlIGlubmVyX2V4bilcbiAgaW5cbiAgaGFuZGxlcl9zdGF0ZV9yZWZcbiAgOj0gUnVubmluZyAoQmFnLmFkZCB0LmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIChleGVjdXRpb25fY29udGV4dCwgcnVuX2YpKVxuOztcblxubGV0IGRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSB0ID1cbiAgZGV0YWNoIHQ7XG4gIGxldCB0YWlsID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgdC50YWlsc19mb3JfYWxsX2Vycm9ycyA8LSB0YWlsIDo6IHQudGFpbHNfZm9yX2FsbF9lcnJvcnM7XG4gIFRhaWwuY29sbGVjdCB0YWlsXG47O1xuXG5sZXQgZ2V0X25leHRfZXJyb3IgdCA9IEl2YXIucmVhZCB0Lm5leHRfZXJyb3JcblxubGV0IGRldGFjaF9hbmRfZ2V0X25leHRfZXJyb3IgdCA9XG4gIGRldGFjaCB0O1xuICBnZXRfbmV4dF9lcnJvciB0XG47O1xuXG5sZXQgY3JlYXRlID9oZXJlID9pbmZvID9uYW1lICgpID1cbiAgbGV0IHBhcmVudCA9IGN1cnJlbnQgKCkgaW5cbiAgY3JlYXRlX3dpdGhfcGFyZW50ID9oZXJlID9pbmZvID9uYW1lIChTb21lIHBhcmVudClcbjs7XG5cbm1vZHVsZSBNb25pdG9yX2V4biA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZXhuIDogZXhuXG4gICAgOyBiYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgICA7IGJhY2t0cmFjZV9oaXN0b3J5IDogQmFja3RyYWNlLnQgbGlzdFxuICAgIDsgbW9uaXRvciA6IE1vbml0b3IudFxuICAgIH1cblxuICBsZXQgYmFja3RyYWNlIHQgPSB0LmJhY2t0cmFjZVxuICBsZXQgZXh0cmFjdF9leG4gdCA9IHQuZXhuXG5cbiAgbGV0IGJhY2t0cmFjZV90cnVuY2F0aW9uX2hldXJpc3RpY3MgPVxuICAgIGxldCBqb2JfcXVldWUgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImpvYl9xdWV1ZS5tbFxcXCJcIiBpblxuICAgIGxldCBkZWZlcnJlZDAgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImRlZmVycmVkMC5tbFxcXCJcIiBpblxuICAgIGxldCBkZWZlcnJlZDEgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImRlZmVycmVkMS5tbFxcXCJcIiBpblxuICAgIGxldCBtb25pdG9yID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJtb25pdG9yLm1sXFxcIlwiIGluXG4gICAgbGV0IGltcG9ydDAgPSBcIlJhaXNlZCBhdCBmaWxlIFxcXCJpbXBvcnQwLm1sXFxcIlwiIGluXG4gICAgbGV0IGVycm9yID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJlcnJvci5tbFxcXCJcIiBpblxuICAgIGZ1biB0cmFjZXMgLT5cbiAgICAgICgqIC4uL3Rlc3QvdGVzdF90cnlfd2l0aF9lcnJvcl9kaXNwbGF5Lm1sIG1ha2VzIHN1cmUgdGhpcyBzdGF5cyB1cC10by1kYXRlLiAqKVxuICAgICAgbGV0IHRyYWNlcyA9XG4gICAgICAgIG1hdGNoIHRyYWNlcyB3aXRoXG4gICAgICAgIHwgdDEgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDEgfnByZWZpeDppbXBvcnQwIC0+XG4gICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICB8IHQyIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6ZXJyb3IgLT5cbiAgICAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICAgIHwgdDMgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDMgfnByZWZpeDplcnJvciAtPiByZXN0XG4gICAgICAgICAgICAgIHwgXyAtPiByZXN0KVxuICAgICAgICAgICB8IF8gLT4gcmVzdClcbiAgICAgICAgfCBfIC0+IHRyYWNlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIExpc3QucmV2IHRyYWNlcyB3aXRoXG4gICAgICB8IHQxIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQxIH5wcmVmaXg6am9iX3F1ZXVlIC0+XG4gICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgIHwgdDIgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDpqb2JfcXVldWUgLT5cbiAgICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgfCB0MiA6OiByZXN0XG4gICAgICAgICAgICAgIHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4OmRlZmVycmVkMFxuICAgICAgICAgICAgICAgICgqIGJpbmQgKilcbiAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6ZGVmZXJyZWQxXG4gICAgICAgICAgICAgICAgKCogbWFwICopXG4gICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4Om1vbml0b3JcbiAgICAgICAgICAgICAgKCogdHJ5X3dpdGggKikgLT4gTGlzdC5yZXYgcmVzdFxuICAgICAgICAgICAgfCBfIC0+IExpc3QucmV2IHJlc3QpXG4gICAgICAgICB8IF8gLT4gTGlzdC5yZXYgcmVzdClcbiAgICAgIHwgXyAtPiB0cmFjZXNcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHsgZXhuOyBiYWNrdHJhY2U7IGJhY2t0cmFjZV9oaXN0b3J5OyBtb25pdG9yIH0gPVxuICAgIGxldCBtb25pdG9yID1cbiAgICAgIGxldCBuYW1lID1cbiAgICAgICAgbWF0Y2ggSW5mby50b19zdHJpbmdfaHVtIG1vbml0b3IubmFtZSB3aXRoXG4gICAgICAgIHwgXCJcIiAtPiBOb25lXG4gICAgICAgIHwgcyAtPiBTb21lIHNcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID1cbiAgICAgICAgbWF0Y2ggbW9uaXRvci5oZXJlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGhlcmUgLT5cbiAgICAgICAgICAoKiBXZSBkaXNwbGF5IHRoZSBmdWxsIGZpbGVuYW1lLCB3aGVyZWFzIGJhY2t0cmFjZXMgb25seSBoYXZlIGJhc2VuYW1lcywgYnV0XG4gICAgICAgICAgICAgcGVyaGFwcyB0aGF0J3Mgd2hhdCBzaG91bGQgY2hhbmdlLiAqKVxuICAgICAgICAgIGxldCBjb2x1bW4gPSBoZXJlLnBvc19jbnVtIC0gaGVyZS5wb3NfYm9sIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKCogV2UgaGlkZSBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyB3aGVuIFthbV9ydW5uaW5nX3Rlc3RdIHRvIG1ha2UgdGVzdCBvdXRwdXRcbiAgICAgICAgICAgICAgIG1vcmUgcm9idXN0LiAgVGhpcyBzYXZlcyBwZW9wbGUgbWFudWFsbHkgaGlkaW5nIHRoZSBudW1iZXJzIG9yIGV2ZW4gd29yc2UsXG4gICAgICAgICAgICAgICBsZWF2aW5nIHRoZW0gaW4gdGVzdCBvdXRwdXQuICBIaWRpbmcgaW4gdGVzdCBpcyBkaWZmZXJlbnQgY2hvaWNlIGZvclxuICAgICAgICAgICAgICAgYmVoYXZpb3IgdGhhbiBvdXIgY29kZWJhc2UgbWFrZXMgZm9yIFtCYWNrdHJhY2UuZWxpZGVdLCB3aGljaCBoYXMgZGVmYXVsdFxuICAgICAgICAgICAgICAgW2ZhbHNlXSwgYW5kIHRodXMgc2hvd3MgYmFja3RyYWNlcyBpbiB0ZXN0LiAgVGhlcmUgYXJlIGEgY291cGxlIHJlYXNvbnMgZm9yXG4gICAgICAgICAgICAgICB0aGlzIGRpZmZlcmVudCBjaG9pY2UuICBGaXJzdCwgZXhwZWN0LXRlc3QgbWFjaGluZXJ5IGhhcyBjaGVjayB0byBwcmV2ZW50XG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIGZyb20gYXBwZWFyaW5nIGluIHRlc3Qgb3V0cHV0LiAgSXQgaGFzIG5vIHN1Y2ggY2hlY2tzIGZvciBsaW5lXG4gICAgICAgICAgICAgICBhbmQgY29sdW1uIG51bWJlcnMuICBTZWNvbmQsIHdoZW4gdGhlcmUgaXMgYSByZWFsIGVycm9yIGFuZCB5b3Ugd2FudCB0byBzZWVcbiAgICAgICAgICAgICAgIHRoZSBiYWNrdHJhY2UsIHRocm93aW5nIGF3YXkgdGhlIHdob2xlIGJhY2t0cmFjZSBsb3NlcyBhIGxvdCBvZiBwb3RlbnRpYWxseVxuICAgICAgICAgICAgICAgdXNlZnVsIGluZm9ybWF0aW9uIHRoYXQgbWF5IGJlIGhhcmQgdG8gcmVjb3Zlci4gIFdoZXJlYXMgd2UncmUganVzdFxuICAgICAgICAgICAgICAgdGhyb3dpbmcgYSB3YXkgYSBsaW5lIG51bWJlciBhbmQgY29sdW1uLCB3aGljaCBhcmUgYSBtaW5vciBjb252ZW5pZW5jZVxuICAgICAgICAgICAgICAgZ2l2ZW4gdGhhdCB0aGUgZmlsZW5hbWUgaGFzIG1vc3Qgb2YgdGhlIGluZm9ybWF0aW9uLiAqKVxuICAgICAgICAgICAgKGlmIGFtX3J1bm5pbmdfdGVzdFxuICAgICAgICAgICAgIHRoZW4gc3ByaW50ZiBcImZpbGUgJVMsIGxpbmUgTElORSwgY2hhcmFjdGVycyBDMS1DMlwiIGhlcmUucG9zX2ZuYW1lXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcImZpbGUgJVMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWRcIlxuICAgICAgICAgICAgICAgICBoZXJlLnBvc19mbmFtZVxuICAgICAgICAgICAgICAgICBoZXJlLnBvc19sbnVtXG4gICAgICAgICAgICAgICAgIGNvbHVtblxuICAgICAgICAgICAgICAgICBjb2x1bW4pXG4gICAgICBpblxuICAgICAgbWF0Y2ggcG9zLCBuYW1lIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIHBvcywgTm9uZSAtPiBbIHNwcmludGYgXCJDYXVnaHQgYnkgbW9uaXRvciBhdCAlc1wiIHBvcyBdXG4gICAgICB8IE5vbmUsIFNvbWUgbmFtZSAtPiBbIHNwcmludGYgXCJDYXVnaHQgYnkgbW9uaXRvciAlc1wiIG5hbWUgXVxuICAgICAgfCBTb21lIHBvcywgU29tZSBuYW1lIC0+IFsgc3ByaW50ZiBcIkNhdWdodCBieSBtb25pdG9yICVzIGF0ICVzXCIgbmFtZSBwb3MgXVxuICAgIGluXG4gICAgbGV0IGJhY2t0cmFjZSA9XG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSBiYWNrdHJhY2UgLT4gQmFja3RyYWNlLnRvX3N0cmluZ19saXN0IGJhY2t0cmFjZVxuICAgICAgaW5cbiAgICAgIGJhY2t0cmFjZV90cnVuY2F0aW9uX2hldXJpc3RpY3MgYmFja3RyYWNlIEAgbW9uaXRvclxuICAgIGluXG4gICAgbGV0IGxpc3RfaWZfbm90X2VtcHR5ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBfIDo6IF8gYXMgbCAtPiBTb21lIGxcbiAgICBpblxuICAgIFslc2V4cFxuICAgICAgKGV4biA6IGV4bilcbiAgICAsIChsaXN0X2lmX25vdF9lbXB0eSBiYWNrdHJhY2UgOiAoc3RyaW5nIGxpc3Qgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICwgYGJhY2t0cmFjZV9oaXN0b3J5XG4gICAgICAgIChsaXN0X2lmX25vdF9lbXB0eSBiYWNrdHJhY2VfaGlzdG9yeSA6IChCYWNrdHJhY2UudCBsaXN0IG9wdGlvbltAc2V4cC5vcHRpb25dKSldXG4gIDs7XG5lbmRcblxuZXhjZXB0aW9uIE1vbml0b3JfZXhuIG9mIE1vbml0b3JfZXhuLnRcblxubGV0ICgpID1cbiAgU2V4cGxpYi5Db252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1vbml0b3JfZXhuXSAoZnVuY3Rpb25cbiAgICB8IE1vbml0b3JfZXhuIHQgLT4gWyVzZXhwIFwibW9uaXRvci5tbC5FcnJvclwiIDo6ICh0IDogTW9uaXRvcl9leG4udCldXG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCBleHRyYWN0X2V4biBleG4gPVxuICBtYXRjaCBleG4gd2l0aFxuICB8IE1vbml0b3JfZXhuIGVycm9yIC0+IGVycm9yLmV4blxuICB8IGV4biAtPiBleG5cbjs7XG5cbmxldCBzZW5kX2V4biB0ID8oYmFja3RyYWNlID0gYEdldCkgZXhuID1cbiAgbGV0IGV4biA9XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICB8IE1vbml0b3JfZXhuIF8gLT4gZXhuXG4gICAgfCBfIC0+XG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgICAgICAgfCBgR2V0IC0+IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnRfZm9yX2V4biBleG5cbiAgICAgICAgfCBgVGhpcyBiIC0+IFNvbWUgYlxuICAgICAgaW5cbiAgICAgIGxldCBiYWNrdHJhY2VfaGlzdG9yeSA9IChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKS5iYWNrdHJhY2VfaGlzdG9yeSBpblxuICAgICAgTW9uaXRvcl9leG4geyBNb25pdG9yX2V4bi5leG47IGJhY2t0cmFjZTsgYmFja3RyYWNlX2hpc3Rvcnk7IG1vbml0b3IgPSB0IH1cbiAgaW5cbiAgaWYgRGVidWcubW9uaXRvcl9zZW5kX2V4biB0aGVuIERlYnVnLmxvZyBcIk1vbml0b3Iuc2VuZF9leG5cIiAodCwgZXhuKSBbJXNleHBfb2Y6IHQgKiBleG5dO1xuICB0Lmhhc19zZWVuX2Vycm9yIDwtIHRydWU7XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgSXZhci5maWxsIHQubmV4dF9lcnJvciBleG47XG4gICAgdC5uZXh0X2Vycm9yIDwtIEl2YXIuY3JlYXRlICgpO1xuICAgIG1hdGNoIHQuZm9yd2FyZGluZyB3aXRoXG4gICAgfCBEZXRhY2hlZCAtPlxuICAgICAgaWYgRGVidWcubW9uaXRvcl9zZW5kX2V4blxuICAgICAgdGhlblxuICAgICAgICBEZWJ1Zy5sb2cgXCJNb25pdG9yLnNlbmRfZXhuIGZvdW5kIGxpc3RlbmluZyBtb25pdG9yXCIgKHQsIGV4bikgWyVzZXhwX29mOiB0ICogZXhuXTtcbiAgICAgIEJhZy5pdGVyIHQuaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgfmY6KGZ1biAoZXhlY3V0aW9uX2NvbnRleHQsIGYpIC0+XG4gICAgICAgIFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGV4bik7XG4gICAgICBMaXN0Lml0ZXIgdC50YWlsc19mb3JfYWxsX2Vycm9ycyB+ZjooZnVuIHRhaWwgLT4gVGFpbC5leHRlbmQgdGFpbCBleG4pXG4gICAgfCBQYXJlbnQgcGFyZW50IC0+IGxvb3AgcGFyZW50XG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+XG4gICAgICAoKiBEbyBub3QgY2hhbmdlIHRoaXMgYnJhbmNoIHRvIHByaW50IHRoZSBleGNlcHRpb24gb3IgdG8gZXhpdC4gIEhhdmluZyB0aGVcbiAgICAgICAgIHNjaGVkdWxlciByYWlzZSBhbiB1bmNhdWdodCBleGNlcHRpb24gaXMgdGhlIG5lY2Vzc2FyeSBiZWhhdmlvciBmb3IgcHJvZ3JhbXNcbiAgICAgICAgIHRoYXQgY2FsbCBbU2NoZWR1bGVyLmdvXSBhbmQgd2FudCB0byBoYW5kbGUgaXQuICopXG4gICAgICBTY2hlZHVsZXIuKGdvdF91bmNhdWdodF9leG4gKHQgKCkpKSBleG4gKCFBc3luY19rZXJuZWxfY29uZmlnLnRhc2tfaWQgKCkpXG4gIGluXG4gIGxvb3AgdFxuOztcblxubW9kdWxlIEV4cG9ydGVkX2Zvcl9zY2hlZHVsZXIgPSBzdHJ1Y3RcbiAgbGV0IHdpdGhpbl9jb250ZXh0IGNvbnRleHQgZiA9XG4gICAgU2NoZWR1bGVyLih3aXRoX2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgY29udGV4dCB+ZjooZnVuICgpIC0+XG4gICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggZiB3aXRoXG4gICAgICB8IE9rIHggLT4gT2sgeFxuICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgc2VuZF9leG4gKEV4ZWN1dGlvbl9jb250ZXh0Lm1vbml0b3IgY29udGV4dCkgZXhuIH5iYWNrdHJhY2U6YEdldDtcbiAgICAgICAgRXJyb3IgKCkpXG4gIDs7XG5cbiAgbGV0IHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIGxldCB0bXBfY29udGV4dCA9XG4gICAgICBFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZSAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSkgP21vbml0b3IgP3ByaW9yaXR5XG4gICAgaW5cbiAgICB3aXRoaW5fY29udGV4dCB0bXBfY29udGV4dCBmXG4gIDs7XG5cbiAgbGV0IHdpdGhpbicgP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIG1hdGNoIHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgd2l0aFxuICAgIHwgRXJyb3IgKCkgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICB8IE9rIGQgLT4gZFxuICA7O1xuXG4gIGxldCB3aXRoaW5fdiA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbWF0Y2ggd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiB3aXRoXG4gICAgfCBFcnJvciAoKSAtPiBOb25lXG4gICAgfCBPayB4IC0+IFNvbWUgeFxuICA7O1xuXG4gIGxldCB3aXRoaW4gP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIG1hdGNoIHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgd2l0aFxuICAgIHwgRXJyb3IgKCkgLT4gKClcbiAgICB8IE9rICgpIC0+ICgpXG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayB4ID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBTY2hlZHVsZXIuZW5xdWV1ZVxuICAgICAgc2NoZWR1bGVyXG4gICAgICAoRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2VcbiAgICAgICAgIChTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIpXG4gICAgICAgICA/bW9uaXRvclxuICAgICAgICAgP3ByaW9yaXR5KVxuICAgICAgd29ya1xuICAgICAgeFxuICA7O1xuXG4gIGxldCBzY2hlZHVsZSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayA9IHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayAoKVxuXG4gIGxldCBzY2hlZHVsZScgPVxuICAgICgqIEZvciBwZXJmb3JtYW5jZSwgd2UgdXNlIFtzY2hlZHVsZV93aXRoX2RhdGFdIHdpdGggYSBjbG9zZWQgZnVuY3Rpb24sIGFuZCBpbmxpbmVcbiAgICAgICBbRGVmZXJyZWQuY3JlYXRlXS4gKilcbiAgICBsZXQgdXBvbl93b3JrX2ZpbGxfaSAod29yaywgaSkgPSB1cG9uICh3b3JrICgpKSAoZnVuIGEgLT4gSXZhci5maWxsIGkgYSkgaW5cbiAgICBmdW4gP21vbml0b3IgP3ByaW9yaXR5IHdvcmsgLT5cbiAgICAgIGxldCBpID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgdXBvbl93b3JrX2ZpbGxfaSAod29yaywgaSk7XG4gICAgICBJdmFyLnJlYWQgaVxuICA7O1xuXG4gIGxldCBwcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCBmID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgICBzdGFnZSAoZnVuIGEgLT4gU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSlcbiAgOztcblxuICBsZXQgcHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQnIGYgPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICAgIGxldCBjYWxsX2FuZF9maWxsIChmLCBhLCBpKSA9IHVwb24gKGYgYSkgKGZ1biByIC0+IEl2YXIuZmlsbCBpIHIpIGluXG4gICAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpIC0+XG4gICAgICAgIFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBjYWxsX2FuZF9maWxsIChmLCBhLCBpKSkpXG4gIDs7XG5lbmRcblxub3BlbiBFeHBvcnRlZF9mb3Jfc2NoZWR1bGVyXG5cbmxldCBzdHJlYW1faXRlciBzdHJlYW0gfmYgPVxuICBsZXQgcmVjIGxvb3Agc3RyZWFtID1cbiAgICBTdHJlYW0ubmV4dCBzdHJlYW1cbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAodiwgc3RyZWFtKSAtPlxuICAgICAgbG9vcCBzdHJlYW07XG4gICAgICBmIHZcbiAgaW5cbiAgbG9vcCBzdHJlYW1cbjs7XG5cbigqIEFuIFsnYSBPa19hbmRfZXhucy50XSByZXByZXNlbnRzIHRoZSBvdXRwdXQgb2YgYSBjb21wdXRhdGlvbiBydW5uaW5nIGluIGEgZGV0YWNoZWRcbiAgIG1vbml0b3IuICopXG5tb2R1bGUgT2tfYW5kX2V4bnMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG9rIDogJ2EgRGVmZXJyZWQudFxuICAgIDsgZXhucyA6IGV4biBTdHJlYW0udFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1biBmID1cbiAgICAoKiBXZSBjYWxsIFtjcmVhdGVfd2l0aF9wYXJlbnQgTm9uZV0gYmVjYXVzZSBbbW9uaXRvcl0gZG9lcyBub3QgbmVlZCBhIHBhcmVudC4gIEl0XG4gICAgICAgZG9lcyBub3QgYmVjYXVzZSB3ZSBjYWxsIFtkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvcl0gYW5kIGRlYWwgd2l0aCB0aGVcbiAgICAgICBlcnJvcnMgZXhwbGljaXRseSwgdGh1cyBbc2VuZF9leG5dIHdvdWxkIG5ldmVyIHByb3BhZ2F0ZSBhbiBleG4gcGFzdCBbbW9uaXRvcl0uICopXG4gICAgbGV0IG1vbml0b3IgPSBjcmVhdGVfd2l0aF9wYXJlbnQgP2hlcmUgP2luZm8gP25hbWUgTm9uZSBpblxuICAgIGxldCBleG5zID0gZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIG1vbml0b3IgaW5cbiAgICBsZXQgb2sgPVxuICAgICAgbWF0Y2ggcnVuIHdpdGhcbiAgICAgIHwgYE5vdyAtPiB3aXRoaW4nIH5tb25pdG9yIGZcbiAgICAgIHwgYFNjaGVkdWxlIC0+IHNjaGVkdWxlJyB+bW9uaXRvciBmXG4gICAgaW5cbiAgICB7IG9rOyBleG5zIH1cbiAgOztcbmVuZFxuXG5sZXQgZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvdW5kX2Vycm9yc1xuICAgICAgcmVzdWx0X2ZpbGxlclxuICAgICAgcmVzdWx0XG4gICAgICBleG5zXG4gICAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHRcbiAgPVxuICBpZiBJdmFyX2ZpbGxlci5pc19lbXB0eSByZXN1bHRfZmlsbGVyXG4gIHRoZW4gKFxuICAgIEl2YXJfZmlsbGVyLmZpbGwgcmVzdWx0X2ZpbGxlciByZXN1bHQ7XG4gICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IGV4bnMpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCB0cnlfd2l0aF9sb2dfZXhuIDogKGV4biAtPiB1bml0KSByZWYgPVxuICAgIHJlZiAoZnVuIGV4biAtPlxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJmYWlsZWQgdG8gc2V0IFtNb25pdG9yLkV4cGVydC50cnlfd2l0aF9sb2dfZXhuXVwiIChleG4gOiBFeG4udCldKVxuICA7O1xuZW5kXG5cbmxldCBtYWtlX2hhbmRsZV9leG4gcmVzdCA9XG4gIG1hdGNoIHJlc3Qgd2l0aFxuICB8IGBMb2cgLT5cbiAgICAoKiBXZSBhcmUgY2FyZWZ1bCB0byBub3QgY2xvc2Ugb3ZlciBjdXJyZW50IGNvbnRleHQsIHdoaWNoIGlzIG5vdCBuZWVkZWQuICopXG4gICAgIUV4cGVydC50cnlfd2l0aF9sb2dfZXhuXG4gIHwgYFJhaXNlIC0+XG4gICAgbGV0IHBhcmVudCA9IGN1cnJlbnQgKCkgaW5cbiAgICBmdW4gZXhuIC0+IHNlbmRfZXhuIHBhcmVudCBleG4gP2JhY2t0cmFjZTpOb25lXG4gIHwgYENhbGwgZiAtPlxuICAgIGxldCBwYXJlbnQgPSBjdXJyZW50ICgpIGluXG4gICAgZnVuIGV4biAtPiB3aXRoaW4gfm1vbml0b3I6cGFyZW50IChmdW4gKCkgLT4gZiBleG4pXG47O1xuXG5sZXQgdHJ5X3dpdGhcbiAgICAgID9oZXJlXG4gICAgICA/aW5mb1xuICAgICAgPyhuYW1lID0gXCJcIilcbiAgICAgID9leHRyYWN0X2V4bjooZG9fZXh0cmFjdF9leG4gPSBmYWxzZSlcbiAgICAgID8ocnVuID0gYE5vdylcbiAgICAgID8ocmVzdCA9IGBSYWlzZSlcbiAgICAgIGZcbiAgPVxuICBsZXQgeyBPa19hbmRfZXhucy5vazsgZXhucyB9ID0gT2tfYW5kX2V4bnMuY3JlYXRlID9oZXJlID9pbmZvIH5uYW1lIH5ydW4gZiBpblxuICBsZXQgaGFuZGxlX2V4biA9IG1ha2VfaGFuZGxlX2V4biByZXN0IGluXG4gIGxldCBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQgZXhucyA9IHN0cmVhbV9pdGVyIGV4bnMgfmY6aGFuZGxlX2V4biBpblxuICAoKiBXZSBydW4gW3dpdGhpbicgfm1vbml0b3I6bWFpbl0gdG8gYXZvaWQgaG9sZGluZyBvbiB0byByZWZlcmVuY2VzIHRvIHRoZSBldmFsdWF0aW9uXG4gICAgIGNvbnRleHQgaW4gd2hpY2ggW3RyeV93aXRoXSB3YXMgY2FsbGVkLiAgVGhpcyBhdm9pZHMgYSBzcGFjZSBsZWFrIHdoZW4gYSBjaGFpbiBvZlxuICAgICBbdHJ5X3dpdGhdJ3MgYXJlIHJ1biBlYWNoIG5lc3RlZCB3aXRoaW4gdGhlIHByZXZpb3VzIG9uZS4gIFdpdGhvdXQgdGhlIFt3aXRoaW4nXSwgdGhlXG4gICAgIGVycm9yIGhhbmRsaW5nIGZvciB0aGUgaW5uZXJtb3N0IFt0cnlfd2l0aF0gd291bGQga2VlcCBhbGl2ZSB0aGUgZW50aXJlIGNoYWluLiAqKVxuICB3aXRoaW4nIH5tb25pdG9yOm1haW4gKGZ1biAoKSAtPlxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgb2tcbiAgICB0aGVuIChcbiAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCBleG5zO1xuICAgICAgcmV0dXJuIChPayAoRGVmZXJyZWQudmFsdWVfZXhuIG9rKSkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVzdWx0X2ZpbGxlciwgcmVzdWx0ID0gSXZhcl9maWxsZXIuY3JlYXRlICgpIGluXG4gICAgICB1cG9uIG9rIChmdW4gcmVzIC0+XG4gICAgICAgIGZpbGxfcmVzdWx0X2FuZF9oYW5kbGVfYmFja2dyb3VuZF9lcnJvcnNcbiAgICAgICAgICByZXN1bHRfZmlsbGVyXG4gICAgICAgICAgKE9rIHJlcylcbiAgICAgICAgICBleG5zXG4gICAgICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0KTtcbiAgICAgIHVwb24gKFN0cmVhbS5uZXh0IGV4bnMpIChmdW5jdGlvblxuICAgICAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBDb25zIChleG4sIGV4bnMpIC0+XG4gICAgICAgICAgbGV0IGV4biA9IGlmIGRvX2V4dHJhY3RfZXhuIHRoZW4gZXh0cmFjdF9leG4gZXhuIGVsc2UgZXhuIGluXG4gICAgICAgICAgZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvdW5kX2Vycm9yc1xuICAgICAgICAgICAgcmVzdWx0X2ZpbGxlclxuICAgICAgICAgICAgKEVycm9yIGV4bilcbiAgICAgICAgICAgIGV4bnNcbiAgICAgICAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCk7XG4gICAgICByZXN1bHQpKVxuOztcblxubGV0IHRyeV93aXRoX29yX2Vycm9yID9oZXJlID9pbmZvID8obmFtZSA9IFwidHJ5X3dpdGhfb3JfZXJyb3JcIikgP2V4dHJhY3RfZXhuID9yZXN0IGYgPVxuICB0cnlfd2l0aCBmID9oZXJlID9pbmZvIH5uYW1lID9leHRyYWN0X2V4biB+cnVuOmBOb3cgP3Jlc3QgPj58IE9yX2Vycm9yLm9mX2V4bl9yZXN1bHRcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luX29yX2Vycm9yXG4gICAgICA/aGVyZVxuICAgICAgP2luZm9cbiAgICAgID8obmFtZSA9IFwidHJ5X3dpdGhfam9pbl9vcl9lcnJvclwiKVxuICAgICAgP2V4dHJhY3RfZXhuXG4gICAgICA/cmVzdFxuICAgICAgZlxuICA9XG4gIHRyeV93aXRoX29yX2Vycm9yIGYgP2hlcmUgP2luZm8gfm5hbWUgP2V4dHJhY3RfZXhuID9yZXN0ID4+fCBPcl9lcnJvci5qb2luXG47O1xuXG5sZXQgcHJvdGVjdCA/aGVyZSA/aW5mbyA/KG5hbWUgPSBcIk1vbml0b3IucHJvdGVjdFwiKSA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCBmIH5maW5hbGx5ID1cbiAgbGV0JWJpbmQgciA9IHRyeV93aXRoID9leHRyYWN0X2V4biA/aGVyZSA/aW5mbyA/cnVuID9yZXN0IH5uYW1lIGYgaW5cbiAgbGV0JW1hcCBmciA9XG4gICAgdHJ5X3dpdGhcbiAgICAgIH5leHRyYWN0X2V4bjpmYWxzZVxuICAgICAgP2hlcmVcbiAgICAgID9pbmZvXG4gICAgICB+cnVuOmBTY2hlZHVsZSAoKiBjb25zaWRlciBbfnJ1bjpgTm93XSAqKVxuICAgICAgP3Jlc3RcbiAgICAgIH5uYW1lOlwiZmluYWxseVwiXG4gICAgICBmaW5hbGx5XG4gIGluXG4gIG1hdGNoIHIsIGZyIHdpdGhcbiAgfCBFcnJvciBleG4sIEVycm9yIGZpbmFsbHlfZXhuIC0+XG4gICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJBc3luYyBmaW5hbGx5XCIgKGV4biA6IGV4bikgKGZpbmFsbHlfZXhuIDogZXhuKV1cbiAgfCBFcnJvciBlLCBPayAoKSB8IE9rIF8sIEVycm9yIGUgLT4gcmFpc2UgZVxuICB8IE9rIHIsIE9rICgpIC0+IHJcbjs7XG5cbmxldCBoYW5kbGVfZXJyb3JzID9oZXJlID9pbmZvID9uYW1lIGYgaGFuZGxlciA9XG4gIGxldCB7IE9rX2FuZF9leG5zLm9rOyBleG5zIH0gPSBPa19hbmRfZXhucy5jcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1bjpgTm93IGYgaW5cbiAgc3RyZWFtX2l0ZXIgZXhucyB+ZjpoYW5kbGVyO1xuICBva1xuOztcblxubGV0IGNhdGNoX3N0cmVhbSA/aGVyZSA/aW5mbyA/bmFtZSBmID1cbiAgbGV0IHsgT2tfYW5kX2V4bnMuZXhuczsgXyB9ID1cbiAgICBPa19hbmRfZXhucy5jcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1bjpgTm93IChmdW4gKCkgLT5cbiAgICAgIGYgKCk7XG4gICAgICByZXR1cm4gKCkpXG4gIGluXG4gIGV4bnNcbjs7XG5cbmxldCBjYXRjaCA/aGVyZSA/aW5mbyA/bmFtZSBmID1cbiAgbWF0Y2glbWFwIFN0cmVhbS5uZXh0IChjYXRjaF9zdHJlYW0gP2hlcmUgP2luZm8gP25hbWUgZikgd2l0aFxuICB8IENvbnMgKHgsIF8pIC0+IHhcbiAgfCBOaWwgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNb25pdG9yLmNhdGNoIGdvdCB1bmV4cGVjdGVkIGVtcHR5IHN0cmVhbVwiXVxuOztcblxubGV0IGNhdGNoX2Vycm9yID9oZXJlID9pbmZvID9uYW1lIGYgPSBjYXRjaCA/aGVyZSA/aW5mbyA/bmFtZSBmID4+fCBFcnJvci5vZl9leG5cblxubW9kdWxlIEZvcl90ZXN0cyA9IHN0cnVjdFxuICBsZXQgcGFyZW50IHQgPVxuICAgIG1hdGNoIHQuZm9yd2FyZGluZyB3aXRoXG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+IE5vbmVcbiAgICB8IFBhcmVudCBwYXJlbnQgLT4gU29tZSBwYXJlbnRcbiAgICB8IERldGFjaGVkIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZGVwdGggdCA9XG4gICAgbGV0IHJlYyBsb29wIHQgbiA9XG4gICAgICBtYXRjaCBwYXJlbnQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gblxuICAgICAgfCBTb21lIHQgLT4gbG9vcCB0IChuICsgMSlcbiAgICBpblxuICAgIGxvb3AgdCAwXG4gIDs7XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuaW5jbHVkZSBUYWlsLlN0cmVhbVxuXG5sZXQgZmlyc3RfZXhuIHQgPVxuICBtYXRjaCVtYXAgbmV4dCB0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTdHJlYW0uZmlyc3Qgb2YgZW1wdHkgc3RyZWFtXCJdXG4gIHwgQ29ucyAoeCwgXykgLT4geFxuOztcblxubGV0IGZvbGQnIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBiID1cbiAgICAgIHVwb24gKG5leHQgdCkgKGZ1bmN0aW9uXG4gICAgICAgIHwgTmlsIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgICB8IENvbnMgKHYsIHQpIC0+IHVwb24gKGYgYiB2KSAobG9vcCB0KSlcbiAgICBpblxuICAgIGxvb3AgdCBpbml0KVxuOztcblxuKCogW2ZvbGRdIGlzIGltcGxlbWVudGVkIHRvIGF2b2lkIHBlci1zdHJlYW0tZWxlbWVudCBkZWZlcnJlZCBvdmVyaGVhZCBpbiB0aGUgY2FzZSB3aGVuXG4gICBtdWx0aXBsZSBzdHJlYW0gZWxlbWVudHMgYXJlIGF2YWlsYWJsZSBzaW11bHRhbmVvdXNseS4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBiID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKG5leHQgdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IHVwb24gKG5leHQgdCkgKGZ1biBuZXh0IC0+IGxvb3BfbmV4dCBuZXh0IGIpXG4gICAgICB8IFNvbWUgbmV4dCAtPiBsb29wX25leHQgbmV4dCBiXG4gICAgYW5kIGxvb3BfbmV4dCBuZXh0IGIgPVxuICAgICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIHwgQ29ucyAodiwgdCkgLT4gbG9vcCB0IChmIGIgdilcbiAgICBpblxuICAgIGxvb3AgdCBpbml0KVxuOztcblxubGV0IGxlbmd0aCB0ID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIF8gLT4gbiArIDEpXG5sZXQgaXRlcicgdCB+ZiA9IGZvbGQnIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSB2IC0+IGYgdilcblxubGV0IGNsb3NlZCB0ID1cbiAgbWF0Y2ggRGVmZXJyZWQucGVlayAobmV4dCB0KSB3aXRoXG4gIHwgU29tZSBOaWwgLT4gcmV0dXJuICgpXG4gIHwgXyAtPiBpdGVyJyB0IH5mOihmdW4gXyAtPiByZXR1cm4gKCkpXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAoaXRlcicgdCB+ZjooZnVuIGEgLT5cbiAgICAgICBmIGE7XG4gICAgICAgcmV0dXJuICgpKSlcbjs7XG5cbmxldCBjcmVhdGUgZiA9XG4gIGxldCB0YWlsID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgKCogY29sbGVjdCBiZWZvcmUgY2FsbGluZyBbZl0sIGluIGNhc2UgW2ZdIGltbWVkaWF0ZWx5IGV4dGVuZHMuICopXG4gIGxldCB0ID0gVGFpbC5jb2xsZWN0IHRhaWwgaW5cbiAgZiB0YWlsO1xuICB0XG47O1xuXG5sZXQgdW5mb2xkIGIgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgbGV0IHJlYyBsb29wIGIgPVxuICAgICAgdXBvbiAoZiBiKSAoZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgICAgfCBTb21lIChhLCBiKSAtPlxuICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgYTtcbiAgICAgICAgICBsb29wIGIpXG4gICAgaW5cbiAgICBsb29wIGIpXG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBUYWlsLmV4dGVuZCB0YWlsIHgpO1xuICAgIFRhaWwuY2xvc2VfZXhuIHRhaWwpXG47O1xuXG5sZXQgdG9fbGlzdCBzID0gZm9sZCcgcyB+aW5pdDpbXSB+ZjooZnVuIGIgYSAtPiByZXR1cm4gKGEgOjogYikpID4+fCBMaXN0LnJldlxubGV0IGNvcHlfdG9fdGFpbCB0IHRhaWwgPSBpdGVyJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKFRhaWwuZXh0ZW5kIHRhaWwgYSkpXG5cbmxldCBhcHBlbmQgdDEgdDIgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvbiAoY29weV90b190YWlsIHQxIHRhaWwpIChmdW4gKCkgLT5cbiAgICAgIHVwb24gKGNvcHlfdG9fdGFpbCB0MiB0YWlsKSAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKSlcbjs7XG5cbmxldCBjb25jYXQgdCA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uIChpdGVyJyB0IH5mOihmdW4gdCAtPiBjb3B5X3RvX3RhaWwgdCB0YWlsKSkgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBmaWx0ZXInIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biB2IC0+XG4gICAgICAgICBtYXRjaCVtYXAgZiB2IHdpdGhcbiAgICAgICAgIHwgZmFsc2UgLT4gKClcbiAgICAgICAgIHwgdHJ1ZSAtPiBUYWlsLmV4dGVuZCB0YWlsIHYpKVxuICAgICAgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBmaWx0ZXJfZGVwcmVjYXRlZCB0IH5mID0gZmlsdGVyJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKGYgYSkpXG5cbmxldCBmaWx0ZXJfbWFwJyB0IH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb25cbiAgICAgIChpdGVyJyB0IH5mOihmdW4gdiAtPlxuICAgICAgICAgbWF0Y2glbWFwIGYgdiB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSB2IC0+IFRhaWwuZXh0ZW5kIHRhaWwgdikpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGZpbHRlcl9tYXBfZGVwcmVjYXRlZCB0IH5mID0gZmlsdGVyX21hcCcgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKVxuXG5sZXQgbWFwJyB0IH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb24gKGl0ZXInIHQgfmY6KGZ1biB2IC0+IGYgdiA+PnwgVGFpbC5leHRlbmQgdGFpbCkpIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgbWFwIHQgfmYgPSBtYXAnIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSlcblxubGV0IGZpcnN0X24gcyBuID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGxldCByZWMgbG9vcCBzIG4gPVxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgZWxzZVxuICAgICAgICB1cG9uIChuZXh0IHMpIChmdW5jdGlvblxuICAgICAgICAgIHwgTmlsIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgICAgICB8IENvbnMgKHgsIHQpIC0+XG4gICAgICAgICAgICBUYWlsLmV4dGVuZCB0YWlsIHg7XG4gICAgICAgICAgICBsb29wIHQgKG4gLSAxKSlcbiAgICBpblxuICAgIGxvb3AgcyBuKVxuOztcblxubGV0IGF2YWlsYWJsZV9ub3cgdCA9XG4gIGxldCByZWMgbG9vcCB0IGFjID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChuZXh0IHQpIHdpdGhcbiAgICB8IE5vbmUgfCBTb21lIE5pbCAtPiBMaXN0LnJldiBhYywgdFxuICAgIHwgU29tZSAoQ29ucyAoeCwgdCkpIC0+IGxvb3AgdCAoeCA6OiBhYylcbiAgaW5cbiAgbG9vcCB0IFtdXG47O1xuXG5sZXQgc3BsaXQgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpID8oZiA9IGZ1biBfIC0+IGBDb250aW51ZSkgdCA9XG4gIGxldCByZWFzb25fZm9yX3N0b3BwaW5nID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IHByZWZpeCA9IFRhaWwuY3JlYXRlICgpIGluXG4gIGxldCBmaW5pc2ggdiA9XG4gICAgVGFpbC5jbG9zZV9leG4gcHJlZml4O1xuICAgIEl2YXIuZmlsbCByZWFzb25fZm9yX3N0b3BwaW5nIHZcbiAgaW5cbiAgbGV0IHJlYyBsb29wIHQgPVxuICAgIGNob29zZSBbIGNob2ljZSBzdG9wIChmdW4gKCkgLT4gYFN0b3BwZWQpOyBjaG9pY2UgKG5leHQgdCkgKGZ1biBvIC0+IGBOZXh0IG8pIF1cbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IGBTdG9wcGVkIC0+IGZpbmlzaCAoYFN0b3BwZWQgdClcbiAgICB8IGBOZXh0IG8gLT5cbiAgICAgIChtYXRjaCBvIHdpdGhcbiAgICAgICB8IE5pbCAtPiBmaW5pc2ggYEVuZF9vZl9zdHJlYW1cbiAgICAgICB8IENvbnMgKGEsIHQpIC0+XG4gICAgICAgICAobWF0Y2ggZiBhIHdpdGhcbiAgICAgICAgICB8IGBDb250aW51ZSAtPlxuICAgICAgICAgICAgVGFpbC5leHRlbmQgcHJlZml4IGE7XG4gICAgICAgICAgICBsb29wIHRcbiAgICAgICAgICB8IGBGb3VuZCBiIC0+IGZpbmlzaCAoYEZvdW5kIChiLCB0KSkpKVxuICBpblxuICBsb29wIHQ7XG4gIFRhaWwuY29sbGVjdCBwcmVmaXgsIEl2YXIucmVhZCByZWFzb25fZm9yX3N0b3BwaW5nXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbGV0IF8sIGZvdW5kID0gc3BsaXQgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gYEZvdW5kIGEgZWxzZSBgQ29udGludWUpIGluXG4gIG1hdGNoJW1hcCBmb3VuZCB3aXRoXG4gIHwgYFN0b3BwZWQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCAoYEVuZF9vZl9zdHJlYW0gfCBgRm91bmQgXykgYXMgeCAtPiB4XG47O1xuXG5sZXQgdW5ncm91cCB0ID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb25cbiAgICAgIChpdGVyJyB0IH5mOihmdW4gbCAtPlxuICAgICAgICAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IFRhaWwuZXh0ZW5kIHRhaWwgeCk7XG4gICAgICAgICByZXR1cm4gKCkpKVxuICAgICAgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBpbnRlcmxlYXZlIHRzID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgICgqIFRoZSBpbnRlcmxlYXZlZCBzdHJlYW0gc2hvdWxkIGJlIGNsb3NlZCB3aGVuIHRoZSBvdXRlciBzdHJlYW0gYW5kIGFsbCBvZlxuICAgICAgIHRoZSBpbm5lciBzdHJlYW1zIGhhdmUgYmVlbiBjbG9zZWQuICBLZWVwIGEgY291bnQgb2YgdGhlIG51bWJlciBvZiBvcGVuXG4gICAgICAgc3RyZWFtcyBhbmQgY2xvc2UgdGhlIGludGVybGVhdmVkIHN0cmVhbSB3aGVuIHRoYXQgY291bnQgYmVjb21lc1xuICAgICAgIHplcm8uICopXG4gICAgbGV0IG51bV9vcGVuID0gcmVmIDEgaW5cbiAgICAoKiAxIGZvciB0aGUgb3V0ZXIgc3RyZWFtIHRoYXQgaXMgb3BlbiAqKVxuICAgIGxldCBjbG9zZSAoKSA9XG4gICAgICBudW1fb3BlbiA6PSAhbnVtX29wZW4gLSAxO1xuICAgICAgaWYgIW51bV9vcGVuID0gMCB0aGVuIFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICBpblxuICAgIGxldCBvdXRlcl9jbG9zZWQgPVxuICAgICAgaXRlcicgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgIG51bV9vcGVuIDo9ICFudW1fb3BlbiArIDE7XG4gICAgICAgIHVwb24gKGNvcHlfdG9fdGFpbCB0IHRhaWwpIGNsb3NlO1xuICAgICAgICByZXR1cm4gKCkpXG4gICAgaW5cbiAgICB1cG9uIG91dGVyX2Nsb3NlZCBjbG9zZSlcbjs7XG5cbmxldCB0YWtlX3VudGlsIHQgZCA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICB1cG9uXG4gICAgICAgIChjaG9vc2UgWyBjaG9pY2UgZCAoZnVuICgpIC0+IGBTdG9wKTsgY2hvaWNlIChuZXh0IHQpIChmdW4geiAtPiBgTmV4dCB6KSBdKVxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IGBTdG9wIHwgYE5leHQgTmlsIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgICAgICB8IGBOZXh0IChDb25zICh4LCB0KSkgLT5cbiAgICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgeDtcbiAgICAgICAgICAgIGxvb3AgdClcbiAgICBpblxuICAgIGxvb3AgdClcbjs7XG5cbmxldCBpdGVyX2R1cmFibHknIHQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBuZXh0IHRcbiAgICAgID4+PiBmdW5jdGlvblxuICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCAoKVxuICAgICAgfCBDb25zICh4LCB0KSAtPlxuICAgICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgICAgICB+cmVzdDpgUmFpc2VcbiAgICAgICAgICAoZnVuICgpIC0+IGYgeClcbiAgICAgICAgPj4+IGZ1biB6IC0+XG4gICAgICAgIGxvb3AgdDtcbiAgICAgICAgKG1hdGNoIHogd2l0aFxuICAgICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgICAgfCBFcnJvciBlIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZSlcbiAgICBpblxuICAgIGxvb3AgdClcbjs7XG5cbmxldCBpdGVyX2R1cmFibHlfcmVwb3J0X2VuZCB0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgbmV4dCB0XG4gICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgIHwgTmlsIC0+IEl2YXIuZmlsbCByZXN1bHQgKClcbiAgICAgIHwgQ29ucyAoeCwgdCkgLT5cbiAgICAgICAgKCogV2UgaW1tZWRpYXRlbHkgY2FsbCBbbG9vcF0sIHRodXMgbWFraW5nIHRoZSBpdGVyIGR1cmFibGUuICBBbnkgZXhjZXB0aW9uc1xuICAgICAgICAgICByYWlzZWQgYnkgW2ZdIHdpbGwgbm90IHByZXZlbnQgdGhlIGxvb3AgZnJvbSBjb250aW51aW5nLCBhbmQgd2lsbCBnbyB0byB0aGVcbiAgICAgICAgICAgbW9uaXRvciBvZiB3aG9tZXZlciBjYWxsZWQgW2l0ZXJfZHVyYWJseV9yZXBvcnRfZW5kXS4gKilcbiAgICAgICAgbG9vcCB0O1xuICAgICAgICBmIHhcbiAgICBpblxuICAgIGxvb3AgdClcbjs7XG5cbmxldCBpdGVyX2R1cmFibHkgdCB+ZiA9IGRvbid0X3dhaXRfZm9yIChpdGVyX2R1cmFibHlfcmVwb3J0X2VuZCB0IH5mKVxuXG5sZXQgb2ZfZnVuIGYgPVxuICB1bmZvbGQgKCkgfmY6KGZ1biAoKSAtPlxuICAgIGxldCVtYXAgYSA9IGYgKCkgaW5cbiAgICBTb21lIChhLCAoKSkpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgKCdhLCAncGVybWlzc2lvbikgdCA9ICgnYSwgJ3Blcm1pc3Npb24pIFR5cGVzLkJ2YXIudFxuXG50eXBlICdhIHJlcHIgPSAnYSBUeXBlcy5CdmFyLnJlcHIgPVxuICB7IG11dGFibGUgaGFzX2FueV93YWl0ZXJzIDogYm9vbFxuICA7IG11dGFibGUgaXZhciA6ICdhIEl2YXIudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgXyB0ID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gcmVwciBbJXNleHBfb2Y6IF8gcmVwcl0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHJlcHIgZiBpblxuICAgIEZpZWxkc19vZl9yZXByLml0ZXJcbiAgICAgIH5oYXNfYW55X3dhaXRlcnM6XG4gICAgICAgIChjaGVjayAoZnVuIGhhc19hbnlfd2FpdGVycyAtPlxuICAgICAgICAgICBpZiBJdmFyLmhhc19oYW5kbGVycyByZXByLml2YXIgdGhlbiBhc3NlcnQgaGFzX2FueV93YWl0ZXJzKSlcbiAgICAgIH5pdmFyOlxuICAgICAgICAoY2hlY2sgKGZ1biBpdmFyIC0+XG4gICAgICAgICAgIEl2YXIuaW52YXJpYW50IGludmFyaWFudF9hIGl2YXI7XG4gICAgICAgICAgIGFzc2VydCAoSXZhci5pc19lbXB0eSBpdmFyKSkpKVxuOztcblxubGV0IHNleHBfb2ZfdCBfIF8gdCA9XG4gIGxldCB7IGhhc19hbnlfd2FpdGVyczsgaXZhciA9IF8gfSA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gICgqIFdlIGRvbid0IHNob3cgW2l2YXJdIGJlY2F1c2UgaXQncyBhbHdheXMgZW1wdHkuICopXG4gIFslbWVzc2FnZSAoaGFzX2FueV93YWl0ZXJzIDogYm9vbCldXG47O1xuXG5pbmNsdWRlIFNjaGVkdWxlcjEuQnZhclxuXG5sZXQgYnJvYWRjYXN0IHQgYSA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgaWYgcmVwci5oYXNfYW55X3dhaXRlcnNcbiAgdGhlbiAoXG4gICAgcmVwci5oYXNfYW55X3dhaXRlcnMgPC0gZmFsc2U7XG4gICAgSXZhci5maWxsIHJlcHIuaXZhciBhO1xuICAgIHJlcHIuaXZhciA8LSBJdmFyLmNyZWF0ZSAoKSlcbjs7XG5cbmxldCB3YWl0IHQgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIHJlcHIuaGFzX2FueV93YWl0ZXJzIDwtIHRydWU7XG4gIEl2YXIucmVhZCByZXByLml2YXJcbjs7XG5cbmxldCBoYXNfYW55X3dhaXRlcnMgdCA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgcmVwci5oYXNfYW55X3dhaXRlcnNcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxuXG5sZXQgZGVidWcgPSBEZWJ1Zy5jbG9ja1xuXG5tb2R1bGUgQWxhcm0gPSBUaW1pbmdfd2hlZWwuQWxhcm1cbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcblxubGV0IHVwb24gPSBEZWZlcnJlZC51cG9uXG5sZXQgY2hvb3NlID0gRGVmZXJyZWQuY2hvb3NlXG5sZXQgY2hvaWNlID0gRGVmZXJyZWQuY2hvaWNlXG5sZXQgKCA+Pj4gKSA9IHVwb25cblxubW9kdWxlIFQxID0gc3RydWN0XG4gIGluY2x1ZGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLlQxXG5cbiAgKCogV2UgZG9uJ3QgaW5jbHVkZSB0aGUgW2lkXSBpbiB0aGUgc2V4cCBiZWNhdXNlIHRoZSB1c2VyIChyaWdodGx5KSBjYW4ndCBjb250cm9sIGl0LCBzb1xuICAgICBpdCdzIGhhcmQgdG8gbWFrZSBpdCBkZXRlcm1pbmlzdGljIGluIHRlc3RzLiAqKVxuICBsZXQgc2V4cF9vZl90XG4gICAgICAgIF9cbiAgICAgICAgeyBpZCA9IF9cbiAgICAgICAgOyBhZHZhbmNlX2Vycm9ycyA9IF9cbiAgICAgICAgOyBhbV9hZHZhbmNpbmcgPSBfXG4gICAgICAgIDsgZXZlbnRzXG4gICAgICAgIDsgZmlyZWRfZXZlbnRzID0gX1xuICAgICAgICA7IGhhbmRsZV9maXJlZCA9IF9cbiAgICAgICAgOyBpc193YWxsX2Nsb2NrXG4gICAgICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IF9cbiAgICAgICAgOyBzY2hlZHVsZXIgPSBfXG4gICAgICAgIH1cbiAgICA9XG4gICAgaWYgaXNfd2FsbF9jbG9ja1xuICAgIHRoZW4gWyVtZXNzYWdlIFwiPHdhbGxfY2xvY2s+XCJdXG4gICAgZWxzZVxuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIChpc193YWxsX2Nsb2NrIDogYm9vbClcbiAgICAgICAgICAoKiBXZSBkb24ndCBkaXNwbGF5IHRoZSBbSm9iLnRdcyBpbiBbZXZlbnRzXSBiZWNhdXNlIHRob3NlIGFyZVxuICAgICAgICAgICAgIHBvb2wgcG9pbnRlcnMsIHdoaWNoIGFyZSB1bmluZm9ybWF0aXZlLiAqKVxuICAgICAgICAgIChldmVudHMgOiBfIFRpbWluZ193aGVlbC50KV1cbiAgOztcbmVuZFxuXG5vcGVuIFQxXG5cbm1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlYWRfd3JpdGUgVDEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5lbmRcblxudHlwZSB0ID0gcmVhZCBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xubGV0IHJlYWRfb25seSAodCA6IFs+IHJlYWQgXSBUMS50KSA9ICh0IDo+IHQpXG5sZXQgY3JlYXRlID0gU2NoZWR1bGVyLmNyZWF0ZV90aW1lX3NvdXJjZVxubGV0IHdhbGxfY2xvY2sgPSBTY2hlZHVsZXIud2FsbF9jbG9ja1xubGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiB0LmV2ZW50c1xubGV0IGlzX3dhbGxfY2xvY2sgdCA9IHQuaXNfd2FsbF9jbG9ja1xubGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IHQuZXZlbnRzXG5sZXQgdGltaW5nX3doZWVsX25vdyB0ID0gVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50c1xubGV0IGlkIHQgPSB0LmlkXG5cbm1vZHVsZSBJZCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5JZFxuXG5sZXQgbm93IHQgPVxuICBpZiB0LmlzX3dhbGxfY2xvY2tcbiAgdGhlblxuICAgICgqIEZvciB0aGUgd2FsbC1jbG9jayB0aW1lLXNvdXJjZSwgd2UgdXNlIFtUaW1lX25zLm5vdyAoKV0gcmF0aGVyIHRoYW5cbiAgICAgICBbVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50c10uICBUaGUgbGF0dGVyIGlzIG9ubHkgdXBkYXRlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaFxuICAgICAgIGN5Y2xlLiAgVGhlcmUgY2FuIGJlIHN1YnN0YW50aWFsIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIHdoZW4gcGVvcGxlIGRvIGxvbmdcbiAgICAgICBydW5uaW5nIGNvbXB1dGF0aW9ucyBvciBtaXggYmxvY2tpbmcgY29kZSB3aXRoIGFzeW5jLiAgQW5kIGh1bWFucyBleHBlY3QgdGhhdFxuICAgICAgIHdhbGwtY2xvY2sgdGltZSBpcyBiYXNlZCBvbiBbVGltZS5ub3ddLCBub3Qgc29tZSBhcnRpZmFjdCBvZiBhc3luY1xuICAgICAgIGltcGxlbWVudGF0aW9uLiAqKVxuICAgIFRpbWVfbnMubm93ICgpXG4gIGVsc2UgdGltaW5nX3doZWVsX25vdyB0XG47O1xuXG4oKiBXZSBwcmVhbGxvY2F0ZSBbc2VuZF9leG5dIHRvIGF2b2lkIGFsbG9jYXRpbmcgaXQgb24gZWFjaCBjYWxsIHRvIFthZHZhbmNlX2Nsb2NrXS4gKilcbmxldCBzZW5kX2V4biA9IFNvbWUgTW9uaXRvci5zZW5kX2V4blxubGV0IGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmFkdmFuY2VfY2xvY2sgdCB+dG9fIH5zZW5kX2V4blxubGV0IGFkdmFuY2VfZGlyZWN0bHlfYnkgdCBieSA9IGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOihUaW1lX25zLmFmdGVyIChub3cgdCkgYnkpXG5sZXQgYWR2YW5jZSA9IGFkdmFuY2VfZGlyZWN0bHlcbmxldCBhZHZhbmNlX2J5ID0gYWR2YW5jZV9kaXJlY3RseV9ieVxubGV0IGZpcmVfcGFzdF9hbGFybXMgdCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5maXJlX3Bhc3RfYWxhcm1zIHQgfnNlbmRfZXhuXG5sZXQgeWllbGQgdCA9IEJ2YXIud2FpdCAoU2NoZWR1bGVyLnlpZWxkIHQuc2NoZWR1bGVyKVxubGV0IGNhbl9ydW5fYV9qb2IgdCA9IFNjaGVkdWxlci5udW1fcGVuZGluZ19qb2JzIHQgPiAwIHx8IEJ2YXIuaGFzX2FueV93YWl0ZXJzIHQueWllbGRcblxubW9kdWxlIEVhZ2VyX2RlZmVycmVkID0gc3RydWN0XG4gIGxldCBiaW5kX3VuaXQgdCB+ZiA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCB0XG4gICAgdGhlbiBmICgpXG4gICAgZWxzZSAoXG4gICAgICBsZXQlYmluZCAoKSA9IHQgaW5cbiAgICAgIGYgKCkpXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID1cbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHRcbiAgICB0aGVuIHJldHVybiAoZiAoRGVmZXJyZWQudmFsdWVfZXhuIHQpKVxuICAgIGVsc2UgRGVmZXJyZWQubWFwIHQgfmZcbiAgOztcbmVuZFxuXG5sZXQgYWR2YW5jZV9ieV9hbGFybXMgP3dhaXRfZm9yIHQgfnRvXyA9XG4gIGxldCBydW5fcXVldWVkX2FsYXJtcyAoKSA9XG4gICAgKCogRXZlcnkgdGltZSB3ZSB3YW50IHRvIHJ1biBxdWV1ZWQgYWxhcm1zIHdlIG5lZWQgdG8geWllbGQgY29udHJvbCBiYWNrIHRvIHRoZVxuICAgICAgIFtBc3luYy5TY2hlZHVsZXJdIGFuZCBbd2FpdF9mb3JdIGFueSBsb2dpYyB0aGF0IGlzIHN1cHBvc2VkIHRvIGZpbmlzaCBhdCB0aGlzIHRpbWVcbiAgICAgICBiZWZvcmUgYWR2YW5jaW5nLiAgSWYgbm8gW3dhaXRfZm9yXSBsb2dpYyBpcyBzcGVjaWZpZWQgd2UgY2FuIHNpbXBseSB5aWVsZCBjb250cm9sXG4gICAgICAgYnkgaW52b2tpbmcgW3lpZWxkIHRdLCB3aGljaCBlbnF1ZXVlcyBhbm90aGVyIGpvYiBhdCB0aGUgZW5kIG9mIHRoZSBzY2hlZHVsZXIgam9iXG4gICAgICAgcXVldWUgc28gYWxhcm0gam9icyBoYXZlIHRoZSBvcHBvcnR1bml0eSB0byBydW4gYmVmb3JlIHdlIGFkdmFuY2UuICopXG4gICAgbWF0Y2ggd2FpdF9mb3Igd2l0aFxuICAgIHwgTm9uZSAtPiB5aWVsZCB0XG4gICAgfCBTb21lIGYgLT4gZiAoKVxuICBpblxuICBsZXQgb25lX3N0ZXAgKCkgPVxuICAgIGlmIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5hbnlfZmlyZWRfZXZlbnRzX3RvX3J1biB0XG4gICAgdGhlbiBub3cgdCwgYGNvbnRpbnVlXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBUaW1pbmdfd2hlZWwubWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQuZXZlbnRzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0b18sIGBmaW5pc2hcbiAgICAgIHwgU29tZSBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgLT5cbiAgICAgICAgaWYgVGltZV9ucy4oID49ICkgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHRvX1xuICAgICAgICB0aGVuIHRvXywgYGZpbmlzaFxuICAgICAgICBlbHNlIG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCwgYGNvbnRpbnVlKVxuICBpblxuICBsZXQgcmVjIHdhbGtfYWxhcm1zICgpID1cbiAgICBsZXQgYWR2YW5jZV90bywgbmV4dCA9IG9uZV9zdGVwICgpIGluXG4gICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b186YWR2YW5jZV90bztcbiAgICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICAgRWFnZXJfZGVmZXJyZWQuYmluZF91bml0IChydW5fcXVldWVkX2FsYXJtcyAoKSkgfmY6KGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IGBmaW5pc2ggLT4gcmV0dXJuICgpXG4gICAgICB8IGBjb250aW51ZSAtPiB3YWxrX2FsYXJtcyAoKSlcbiAgaW5cbiAgKCogVGhpcyBmaXJzdCBbcnVuX3F1ZXVlZF9hbGFybXNdIGNhbGwgYWxsb3dzIFtDbG9ja19ucy5ldmVyeV0gdGhlIG9wcG9ydHVuaXR5IHRvIHJ1blxuICAgICBpdHMgY29udGludWF0aW9uIGRlZmVycmVkcyBzbyB0aGF0IHRoZXkgY2FuIHJlc2NoZWR1bGUgYWxhcm1zLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHlcbiAgICAgdXNlZnVsIGluIG91ciBcImFkdmFuY2UgaGl0cyBpbnRlcm1lZGlhdGUgYWxhcm1zXCIgdW5pdCB0ZXN0IGJlbG93LCBidXQgbGlrZWx5IHVzZWZ1bFxuICAgICBpbiBvdGhlciBjYXNlcyB3aGVyZSBbZXZlcnldIGlzIHN5bmNocm9ub3VzbHkgZm9sbG93ZWQgYnkgW2FkdmFuY2VdLiAqKVxuICBsZXQlYmluZCAoKSA9IHJ1bl9xdWV1ZWRfYWxhcm1zICgpIGluXG4gIHdhbGtfYWxhcm1zICgpXG47O1xuXG5sZXQgYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfdGltaW5nX3doZWVsX2ludGVydmFsID93YWl0X2ZvciB0IH50b18gPVxuICBsZXQgcnVuX3F1ZXVlZF9hbGFybXMgKCkgPVxuICAgICgqIEV2ZXJ5IHRpbWUgd2Ugd2FudCB0byBydW4gcXVldWVkIGFsYXJtcyB3ZSBuZWVkIHRvIHlpZWxkIGNvbnRyb2wgYmFjayB0byB0aGVcbiAgICAgICBbQXN5bmMuU2NoZWR1bGVyXSBhbmQgW3dhaXRfZm9yXSBhbnkgbG9naWMgdGhhdCBpcyBzdXBwb3NlZCB0byBmaW5pc2ggYXQgdGhpcyB0aW1lXG4gICAgICAgYmVmb3JlIGFkdmFuY2luZy4gIElmIG5vIFt3YWl0X2Zvcl0gbG9naWMgaXMgc3BlY2lmaWVkIHdlIGNhbiBzaW1wbHkgeWllbGQgY29udHJvbFxuICAgICAgIGJ5IGludm9raW5nIFt5aWVsZCB0XSwgd2hpY2ggZW5xdWV1ZXMgYW5vdGhlciBqb2IgYXQgdGhlIGVuZCBvZiB0aGUgc2NoZWR1bGVyIGpvYlxuICAgICAgIHF1ZXVlIHNvIGFsYXJtIGpvYnMgaGF2ZSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuIGJlZm9yZSB3ZSBhZHZhbmNlLiAqKVxuICAgIG1hdGNoIHdhaXRfZm9yIHdpdGhcbiAgICB8IE5vbmUgLT4geWllbGQgdFxuICAgIHwgU29tZSBmIC0+IGYgKClcbiAgaW5cbiAgbGV0IGZpbmlzaCAoKSA9XG4gICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b187XG4gICAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAgICgqIHNvIHRoYXQgYWxhcm1zIHNjaGVkdWxlZCBhdCBvciBiZWZvcmUgW3RvX10gZmlyZSAqKVxuICAgIHJ1bl9xdWV1ZWRfYWxhcm1zICgpXG4gIGluXG4gIGxldCByZWMgd2Fsa19hbGFybXMgKCkgPVxuICAgIG1hdGNoIG5leHRfYWxhcm1fZmlyZXNfYXQgdCB3aXRoXG4gICAgfCBOb25lIC0+IGZpbmlzaCAoKVxuICAgIHwgU29tZSBuZXh0X2FsYXJtX2ZpcmVzX2F0IC0+XG4gICAgICBpZiBUaW1lX25zLiggPj0gKSBuZXh0X2FsYXJtX2ZpcmVzX2F0IHRvX1xuICAgICAgdGhlbiBmaW5pc2ggKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXzooVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdC5ldmVudHMpO1xuICAgICAgICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICAgICAgIGxldCBxdWV1ZWRfYWxhcm1zX3JhbiA9IHJ1bl9xdWV1ZWRfYWxhcm1zICgpIGluXG4gICAgICAgIEVhZ2VyX2RlZmVycmVkLmJpbmRfdW5pdCBxdWV1ZWRfYWxhcm1zX3JhbiB+Zjp3YWxrX2FsYXJtcylcbiAgaW5cbiAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAoKiBUaGlzIGZpcnN0IFtydW5fcXVldWVkX2FsYXJtc10gY2FsbCBhbGxvd3MgW0Nsb2NrX25zLmV2ZXJ5XSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuXG4gICAgIGl0cyBjb250aW51YXRpb24gZGVmZXJyZWRzIHNvIHRoYXQgdGhleSBjYW4gcmVzY2hlZHVsZSBhbGFybXMuICBUaGlzIGlzIHBhcnRpY3VsYXJseVxuICAgICB1c2VmdWwgaW4gb3VyIFwiYWR2YW5jZSBoaXRzIGludGVybWVkaWF0ZSBhbGFybXNcIiB1bml0IHRlc3QgYmVsb3csIGJ1dCBsaWtlbHkgdXNlZnVsXG4gICAgIGluIG90aGVyIGNhc2VzIHdoZXJlIFtldmVyeV0gaXMgc3luY2hyb25vdXNseSBmb2xsb3dlZCBieSBbYWR2YW5jZV0uICopXG4gIGxldCViaW5kICgpID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgd2Fsa19hbGFybXMgKClcbjs7XG5cbmxldCBhZHZhbmNlX2J5X2FsYXJtc19ieSA/d2FpdF9mb3IgdCBieSA9XG4gIGFkdmFuY2VfYnlfYWxhcm1zID93YWl0X2ZvciB0IH50b186KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBieSlcbjs7XG5cbmxldCBzcGFuX3RvX3RpbWUgdCBzcGFuID0gVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW5cblxubGV0IHNjaGVkdWxlX2pvYiB0IH5hdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBsZXQgYWxhcm0gPVxuICAgIFRpbWluZ193aGVlbC5hZGRcbiAgICAgIHQuZXZlbnRzXG4gICAgICB+YXRcbiAgICAgIChKb2Jfb3JfZXZlbnQub2Zfam9iIChTY2hlZHVsZXIuY3JlYXRlX2pvYiB0LnNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGEpKVxuICBpblxuICAobWF0Y2ggdC5zY2hlZHVsZXIuZXZlbnRfYWRkZWRfaG9vayB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmIC0+IGYgYXQpO1xuICBhbGFybVxuOztcblxubGV0IHJ1bl9hdF9pbnRlcm5hbCB0IHRpbWUgZiBhID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdC5zY2hlZHVsZXIgaW5cbiAgaWYgVGltZV9ucy4oID4gKSB0aW1lIChUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzKVxuICB0aGVuIHNjaGVkdWxlX2pvYiB0IH5hdDp0aW1lIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuICBlbHNlIChcbiAgICBTY2hlZHVsZXIuZW5xdWV1ZSB0LnNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gICAgQWxhcm0ubnVsbCAoKSlcbjs7XG5cbmxldCBydW5fYXQgdCB0aW1lIGYgYSA9IGlnbm9yZSAocnVuX2F0X2ludGVybmFsIHQgdGltZSBmIGEgOiBfIEFsYXJtLnQpXG5sZXQgcnVuX2FmdGVyIHQgc3BhbiBmIGEgPSBydW5fYXQgdCAoc3Bhbl90b190aW1lIHQgc3BhbikgZiBhXG5cbmxldCBhdCA9XG4gIGxldCBmaWxsIHJlc3VsdCA9IEl2YXIuZmlsbCByZXN1bHQgKCkgaW5cbiAgZnVuIHQgdGltZSAtPlxuICAgIGlmIFRpbWVfbnMuKCA8PSApIHRpbWUgKFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHMpXG4gICAgdGhlbiByZXR1cm4gKClcbiAgICBlbHNlIChcbiAgICAgIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgaWdub3JlIChydW5fYXRfaW50ZXJuYWwgdCB0aW1lIGZpbGwgcmVzdWx0IDogXyBBbGFybS50KTtcbiAgICAgIEl2YXIucmVhZCByZXN1bHQpXG47O1xuXG5sZXQgYWZ0ZXIgdCBzcGFuID0gYXQgdCAoc3Bhbl90b190aW1lIHQgc3BhbilcblxubGV0IHJlbW92ZV9hbGFybSB0IGFsYXJtIDogdW5pdCA9XG4gIGxldCBqb2Jfb3JfZXZlbnQgPSBBbGFybS52YWx1ZSB0LmV2ZW50cyBhbGFybSBpblxuICAobGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gICBsZXQgKEsgaykgPSBraW5kIGpvYl9vcl9ldmVudCBpblxuICAgbWF0Y2ggaywgcHJvamVjdCBrIGpvYl9vcl9ldmVudCB3aXRoXG4gICB8IEpvYiwgam9iIC0+IFNjaGVkdWxlci5mcmVlX2pvYiB0LnNjaGVkdWxlciBqb2JcbiAgIHwgRXZlbnQsIF8gLT5cbiAgICAgKCogVGhpcyBpcyB1bnJlYWNoYWJsZSBiZWNhdXNlIFthbGFybV0gb25seSBldmVyIGNvbWVzIGZyb20gW0V2ZW50LmFsYXJtXSB3aGljaCBvbmx5XG4gICAgICAgIGV2ZXIgZ2V0cyBwb3B1bGF0ZWQgYnkgYSBjYWxsIHRvIFtzY2hlZHVsZV9qb2JdLiAqKVxuICAgICBhc3NlcnQgZmFsc2UpO1xuICBUaW1pbmdfd2hlZWwucmVtb3ZlIHQuZXZlbnRzIGFsYXJtXG47O1xuXG5sZXQgcmVtb3ZlX2FsYXJtX2lmX3NjaGVkdWxlZCB0IGFsYXJtID1cbiAgaWYgVGltaW5nX3doZWVsLm1lbSB0LmV2ZW50cyBhbGFybSB0aGVuIHJlbW92ZV9hbGFybSB0IGFsYXJtXG47O1xuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZpcmVkID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgeyBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgQWxhcm0udFxuICAgIDsgbXV0YWJsZSBmaXJlIDogdW5pdCAtPiB1bml0XG4gICAgOyAoKiBBcyBsb25nIGFzIFtJdmFyLmlzX2VtcHR5IGZpcmVkXSwgd2UgaGF2ZSBub3QgeWV0IGNvbW1pdHRlZCB0byB3aGV0aGVyIHRoZSBldmVudFxuICAgICAgICAgd2lsbCBoYXBwZW4gb3IgYmUgYWJvcnRlZC4gIFdoZW4gW0l2YXIuaXNfZW1wdHkgZmlyZWRdLCB0aGUgYWxhcm0gbWF5IG9yIG1heSBub3RcbiAgICAgICAgIGJlIGluIHRoZSB0aW1pbmcgd2hlZWwgLS0gaWYgaXQgaXNuJ3QsIHRoZW4gdGhlcmUncyBhIGpvYiBpbiBBc3luYydzIGpvYiBxdWV1ZVxuICAgICAgICAgdGhhdCB3aWxsIGZpcmUgdGhlIGV2ZW50LCB1bmxlc3MgaXQgaXMgYWJvcnRlZCBiZWZvcmUgdGhhdCBqb2IgY2FuIHJ1bi4gKilcbiAgICAgIGZpcmVkIDogKCdhLCAnaCkgRmlyZWQudCBJdmFyLnRcbiAgICA7ICgqIFtudW1fZmlyZXNfdG9fc2tpcF0gaXMgdXNlZCB0byByZXNjaGVkdWxlIGV2ZW50cyB0aGF0IGhhdmUgZmlyZWQgYW5kIGVudGVyZWQgdGhlXG4gICAgICAgICBBc3luYyBqb2IgcXVldWUsIGJ1dCBoYXZlIG5vdCB5ZXQgcnVuLiAgVGhvc2Ugam9icyBvbmx5IHJ1biBpZiBbbnVtX2ZpcmVzX3RvX3NraXBcbiAgICAgICAgID0gMF0sIGFuZCBvdGhlcndpc2UganVzdCBkZWNyZW1lbnQgaXQuICBTbywgdG8gcmVzY2hlZHVsZSBhbiBldmVudCBpbiBzdWNoIGFcbiAgICAgICAgIHN0YXRlLCB3ZSBpbmNyZW1lbnQgW251bV9maXJlc190b19za2lwXSBhbmQgYWRkIGEgbmV3IGFsYXJtIHRvIHRoZSB0aW1pbmdcbiAgICAgICAgIHdoZWVsLiAqKVxuICAgICAgbXV0YWJsZSBudW1fZmlyZXNfdG9fc2tpcCA6IGludFxuICAgIDsgKCogW3NjaGVkdWxlZF9hdF0gaXMgdGhlIHRpbWUgYXQgd2hpY2ggW3RdIGhhcyBtb3N0IHJlY2VudGx5IGJlZW4gc2NoZWR1bGVkIHRvIGZpcmUuXG4gICAgICAgICBXaGlsZSBbdC5hbGFybV0gaXMgc3RpbGwgaW4gdGhlIHRpbWluZyB3aGVlbCwgdGhpcyBpcyB0aGUgc2FtZSBhcyBbQWxhcm0uYXRcbiAgICAgICAgIHQuYWxhcm1dLiAqKVxuICAgICAgbXV0YWJsZSBzY2hlZHVsZWRfYXQgOiBUaW1lX25zLnRcbiAgICA7IHRpbWVfc291cmNlIDogU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICB0eXBlIHRfdW5pdCA9ICh1bml0LCB1bml0KSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGZpcmVkIHQgPSBJdmFyLnJlYWQgdC5maXJlZFxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgaW52YXJpYW50X2ggdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGV2ZW50cyA9IHQudGltZV9zb3VyY2UuZXZlbnRzIGluXG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5hbGFybTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBhbGFybSAtPlxuICAgICAgICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmZpcmVkXG4gICAgICAgICAgICAgdGhlbiBhc3NlcnQgKG5vdCAoVGltaW5nX3doZWVsLm1lbSBldmVudHMgYWxhcm0pKVxuICAgICAgICAgICAgIGVsc2UgaWYgVGltaW5nX3doZWVsLm1lbSBldmVudHMgYWxhcm1cbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAoSm9iX29yX2V2ZW50LmlzX2pvYiAoQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSkpKVxuICAgICAgICB+ZmlyZTppZ25vcmVcbiAgICAgICAgfmZpcmVkOlxuICAgICAgICAgIChjaGVjayAoZnVuIChmaXJlZCA6IF8gRmlyZWQudCBJdmFyLnQpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoSXZhci5yZWFkIGZpcmVkKSB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IGludmFyaWFudF9hIGFcbiAgICAgICAgICAgICB8IFNvbWUgKEhhcHBlbmVkIGgpIC0+IGludmFyaWFudF9oIGgpKVxuICAgICAgICB+bnVtX2ZpcmVzX3RvX3NraXA6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbnVtX2ZpcmVzX3RvX3NraXAgLT4gYXNzZXJ0IChudW1fZmlyZXNfdG9fc2tpcCA+PSAwKSkpXG4gICAgICAgIH5zY2hlZHVsZWRfYXQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gc2NoZWR1bGVkX2F0IC0+XG4gICAgICAgICAgICAgaWYgVGltaW5nX3doZWVsLm1lbSBldmVudHMgdC5hbGFybVxuICAgICAgICAgICAgIHRoZW4gWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XSBzY2hlZHVsZWRfYXQgfmV4cGVjdDooQWxhcm0uYXQgZXZlbnRzIHQuYWxhcm0pKSlcbiAgICAgICAgfnRpbWVfc291cmNlOmlnbm9yZSlcbiAgOztcblxuICBtb2R1bGUgU3RhdHVzID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgICAgfCBTY2hlZHVsZWRfYXQgb2YgVGltZV9ucy50XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHN0YXR1cyB0IDogXyBTdGF0dXMudCA9XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoSXZhci5yZWFkIHQuZmlyZWQpIHdpdGhcbiAgICB8IE5vbmUgLT4gU2NoZWR1bGVkX2F0IHQuc2NoZWR1bGVkX2F0XG4gICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IEFib3J0ZWQgYVxuICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gSGFwcGVuZWQgaFxuICA7O1xuXG4gIG1vZHVsZSBBYm9ydF9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBPa1xuICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgb2YgJ2FcbiAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCBvZiAnaFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBhYm9ydCB0IGEgOiBfIEFib3J0X3Jlc3VsdC50ID1cbiAgICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcIlRpbWVfc291cmNlLkV2ZW50LmFib3J0XCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChmaXJlZCB0KSB3aXRoXG4gICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IFByZXZpb3VzbHlfYWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBQcmV2aW91c2x5X2hhcHBlbmVkIGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIEl2YXIuZmlsbCB0LmZpcmVkIChBYm9ydGVkIGEpO1xuICAgICAgcmVtb3ZlX2FsYXJtX2lmX3NjaGVkdWxlZCB0LnRpbWVfc291cmNlIHQuYWxhcm07XG4gICAgICBPa1xuICA7O1xuXG4gIGxldCBhYm9ydF9leG4gdCBhID1cbiAgICBtYXRjaCBhYm9ydCB0IGEgd2l0aFxuICAgIHwgT2sgLT4gKClcbiAgICB8IFByZXZpb3VzbHlfaGFwcGVuZWQgXyAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJDbG9jay5FdmVudC5hYm9ydF9leG4gZmFpbGVkIHRvIGFib3J0IGV2ZW50IHRoYXQgcHJldmlvdXNseSBoYXBwZW5lZFwiXVxuICAgIHwgUHJldmlvdXNseV9hYm9ydGVkIF8gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiQ2xvY2suRXZlbnQuYWJvcnRfZXhuIGZhaWxlZCB0byBhYm9ydCBldmVudCB0aGF0IHByZXZpb3VzbHkgYWJvcnRlZFwiXVxuICA7O1xuXG4gIGxldCBhYm9ydF9pZl9wb3NzaWJsZSB0IGEgPSBpZ25vcmUgKGFib3J0IHQgYSA6IF8gQWJvcnRfcmVzdWx0LnQpXG4gIGxldCBzY2hlZHVsZSB0ID0gdC5hbGFybSA8LSBydW5fYXRfaW50ZXJuYWwgdC50aW1lX3NvdXJjZSB0LnNjaGVkdWxlZF9hdCB0LmZpcmUgKClcblxuICBtb2R1bGUgUmVzY2hlZHVsZV9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBPa1xuICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgb2YgJ2FcbiAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCBvZiAnaFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCByZXNjaGVkdWxlX2F0IHQgYXQgOiBfIFJlc2NoZWR1bGVfcmVzdWx0LnQgPVxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgRGVidWcubG9nIFwiVGltZV9zb3VyY2UuRXZlbnQucmVzY2hlZHVsZV9hdFwiICh0LCBhdCkgWyVzZXhwX29mOiAoXywgXykgdCAqIFRpbWVfbnMudF07XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoZmlyZWQgdCkgd2l0aFxuICAgIHwgU29tZSAoQWJvcnRlZCBhKSAtPiBQcmV2aW91c2x5X2Fib3J0ZWQgYVxuICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gUHJldmlvdXNseV9oYXBwZW5lZCBoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgZXZlbnRzID0gdC50aW1lX3NvdXJjZS5ldmVudHMgaW5cbiAgICAgIGxldCBpc19pbl90aW1pbmdfd2hlZWwgPSBUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyB0LmFsYXJtIGluXG4gICAgICBsZXQgYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlX2Z1dHVyZSA9XG4gICAgICAgIFRpbWVfbnMuKCA+ICkgYXQgKFRpbWluZ193aGVlbC5ub3cgZXZlbnRzKVxuICAgICAgaW5cbiAgICAgIHQuc2NoZWR1bGVkX2F0IDwtIGF0O1xuICAgICAgKG1hdGNoIGFtX3RyeWluZ190b19yZXNjaGVkdWxlX2luX3RoZV9mdXR1cmUsIGlzX2luX3RpbWluZ193aGVlbCB3aXRoXG4gICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gKClcbiAgICAgICB8IGZhbHNlLCB0cnVlIC0+XG4gICAgICAgICB0LnRpbWVfc291cmNlLmhhbmRsZV9maXJlZCB0LmFsYXJtO1xuICAgICAgICAgVGltaW5nX3doZWVsLnJlbW92ZSBldmVudHMgdC5hbGFybVxuICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT5cbiAgICAgICAgIHQubnVtX2ZpcmVzX3RvX3NraXAgPC0gdC5udW1fZmlyZXNfdG9fc2tpcCArIDE7XG4gICAgICAgICBzY2hlZHVsZSB0XG4gICAgICAgfCB0cnVlLCB0cnVlIC0+IFRpbWluZ193aGVlbC5yZXNjaGVkdWxlIGV2ZW50cyB0LmFsYXJtIH5hdCk7XG4gICAgICBPa1xuICA7O1xuXG4gIGxldCByZXNjaGVkdWxlX2FmdGVyIHQgc3BhbiA9IHJlc2NoZWR1bGVfYXQgdCAoc3Bhbl90b190aW1lIHQudGltZV9zb3VyY2Ugc3BhbilcblxuICBsZXQgcnVuX2F0IHRpbWVfc291cmNlIHNjaGVkdWxlZF9hdCBmIHogPVxuICAgIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiVGltZV9zb3VyY2UuRXZlbnQucnVuX2F0XCIgc2NoZWR1bGVkX2F0IFslc2V4cF9vZjogVGltZV9ucy50XTtcbiAgICBsZXQgdCA9XG4gICAgICB7IGFsYXJtID0gQWxhcm0ubnVsbCAoKVxuICAgICAgOyBmaXJlID0gaWdub3JlICgqIHNldCBiZWxvdyAqKVxuICAgICAgOyBmaXJlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICA7IG51bV9maXJlc190b19za2lwID0gMFxuICAgICAgOyBzY2hlZHVsZWRfYXRcbiAgICAgIDsgdGltZV9zb3VyY2UgPSByZWFkX29ubHkgdGltZV9zb3VyY2VcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCBmaXJlICgpID1cbiAgICAgICgqIFtmaXJlXSBydW5zIGluIGFuIEFzeW5jIGpvYi4gIFRoZSBldmVudCBtYXkgaGF2ZSBiZWVuIGFib3J0ZWQgYWZ0ZXIgdGhlIGpvYlxuICAgICAgICAgd2FzIGVucXVldWVkLCBzbyBbZmlyZV0gbXVzdCBjaGVjayBbZmlyZWRdLiAqKVxuICAgICAgaWYgSXZhci5pc19lbXB0eSB0LmZpcmVkXG4gICAgICB0aGVuXG4gICAgICAgIGlmIHQubnVtX2ZpcmVzX3RvX3NraXAgPiAwXG4gICAgICAgIHRoZW4gdC5udW1fZmlyZXNfdG9fc2tpcCA8LSB0Lm51bV9maXJlc190b19za2lwIC0gMVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gZiB6IGluXG4gICAgICAgICAgKCogW2Ygel0gbWF5IGhhdmUgYWJvcnRlZCB0aGUgZXZlbnQsIHNvIHdlIG11c3QgY2hlY2sgW2ZpcmVkXSBhZ2Fpbi4gKilcbiAgICAgICAgICBpZiBJdmFyLmlzX2VtcHR5IHQuZmlyZWQgdGhlbiBJdmFyLmZpbGwgdC5maXJlZCAoSGFwcGVuZWQgcmVzdWx0KSlcbiAgICBpblxuICAgIHQuZmlyZSA8LSBmaXJlO1xuICAgIHNjaGVkdWxlIHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBhdCB0aW1lX3NvdXJjZSB0aW1lID0gcnVuX2F0IHRpbWVfc291cmNlIHRpbWUgaWdub3JlICgpXG5cbiAgbGV0IHJ1bl9hZnRlciB0aW1lX3NvdXJjZSBzcGFuIGYgYSA9XG4gICAgcnVuX2F0IHRpbWVfc291cmNlIChzcGFuX3RvX3RpbWUgdGltZV9zb3VyY2Ugc3BhbikgZiBhXG4gIDs7XG5cbiAgbGV0IGFmdGVyIHRpbWVfc291cmNlIHNwYW4gPSBhdCB0aW1lX3NvdXJjZSAoc3Bhbl90b190aW1lIHRpbWVfc291cmNlIHNwYW4pXG5lbmRcblxubGV0IGF0X3RpbWVzID8oc3RvcCA9IERlZmVycmVkLm5ldmVyICgpKSB0IG5leHRfdGltZSA9XG4gIGxldCB0YWlsID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBjaG9vc2VcbiAgICAgIFsgY2hvaWNlIHN0b3AgKGZ1biAoKSAtPiBgU3RvcCk7IGNob2ljZSAoYXQgdCAobmV4dF90aW1lICgpKSkgKGZ1biAoKSAtPiBgVGljaykgXVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgYFN0b3AgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgIHwgYFRpY2sgLT5cbiAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgKCk7XG4gICAgICBsb29wICgpXG4gIGluXG4gIGxvb3AgKCk7XG4gIFRhaWwuY29sbGVjdCB0YWlsXG47O1xuXG5sZXQgYXRfdmFyeWluZ19pbnRlcnZhbHMgP3N0b3AgdCBjb21wdXRlX3NwYW4gPVxuICBhdF90aW1lcyB0ID9zdG9wIChmdW4gKCkgLT4gVGltZV9ucy5hZnRlciAobm93IHQpIChjb21wdXRlX3NwYW4gKCkpKVxuOztcblxubGV0IGF0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgdCBpbnRlcnZhbCA9XG4gIGxldCBzdGFydCA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gbm93IHRcbiAgaW5cbiAgYXRfdGltZXMgdCA/c3RvcCAoZnVuICgpIC0+XG4gICAgVGltZV9ucy5uZXh0X211bHRpcGxlIH5iYXNlOnN0YXJ0IH5hZnRlcjoobm93IHQpIH5pbnRlcnZhbCAoKSlcbjs7XG5cbm1vZHVsZSBDb250aW51ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgSW1tZWRpYXRlbHlcbiAgICB8IEFmdGVyIG9mIFRpbWVfbnMuU3Bhbi50XG4gICAgfCBOZXh0X211bHRpcGxlIG9mIFRpbWVfbnMudCAqIFRpbWVfbnMuU3Bhbi50XG5cbiAgbGV0IGltbWVkaWF0ZWx5ID0gSW1tZWRpYXRlbHlcblxuICBsZXQgYXQgdCB0aW1lX3NvdXJjZSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBJbW1lZGlhdGVseSAtPiBUaW1pbmdfd2hlZWwubm93IHRpbWVfc291cmNlLmV2ZW50c1xuICAgIHwgQWZ0ZXIgc3BhbiAtPiBzcGFuX3RvX3RpbWUgdGltZV9zb3VyY2Ugc3BhblxuICAgIHwgTmV4dF9tdWx0aXBsZSAoYmFzZSwgaW50ZXJ2YWwpIC0+XG4gICAgICBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2UgfmFmdGVyOihub3cgdGltZV9zb3VyY2UpIH5pbnRlcnZhbCAoKVxuICA7O1xuZW5kXG5cbmxldCBydW5fcmVwZWF0ZWRseVxuICAgICAgPyhzdGFydCA9IHJldHVybiAoKSlcbiAgICAgID9zdG9wXG4gICAgICA/KGNvbnRpbnVlX29uX2Vycm9yID0gdHJ1ZSlcbiAgICAgID8oZmluaXNoZWQgPSBJdmFyLmNyZWF0ZSAoKSlcbiAgICAgIHRcbiAgICAgIH5mXG4gICAgICB+Y29udGludWVcbiAgPVxuICBzdGFydFxuICA+Pj4gZnVuICgpIC0+XG4gIGxldCBhbGFybSA9IHJlZiAoQWxhcm0ubnVsbCAoKSkgaW5cbiAgbGV0IHN0b3AgPVxuICAgIG1hdGNoIHN0b3Agd2l0aFxuICAgIHwgTm9uZSAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgIHwgU29tZSBzdG9wIC0+XG4gICAgICB1cG9uIHN0b3AgKGZ1biAoKSAtPlxuICAgICAgICBpZiBUaW1pbmdfd2hlZWwubWVtIHQuZXZlbnRzICFhbGFybVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByZW1vdmVfYWxhcm0gdCAhYWxhcm07XG4gICAgICAgICAgSXZhci5maWxsX2lmX2VtcHR5IGZpbmlzaGVkICgpKSk7XG4gICAgICBzdG9wXG4gIGluXG4gICgqIFtydW5fZl0sIFtjb250aW51ZV9mXSwgYW5kIFtjb250aW51ZV90cnlfd2l0aF0gYXJlIGRlZmluZWQgc28gdGhhdCB3ZSBhbGxvY2F0ZSB0aGVpclxuICAgICBjbG9zdXJlcyBvbmNlLCBub3Qgb25jZSBwZXIgaXRlcmF0aW9uLiAqKVxuICBsZXQgcmVjIHJ1bl9mICgpID1cbiAgICAoKiBCZWZvcmUgY2FsbGluZyBbZl0sIHdlIHN5bmNocm9ub3VzbHkgY2hlY2sgd2hldGhlciBbc3RvcF0gaXMgZGV0ZXJtaW5lZC4gKilcbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHN0b3BcbiAgICB0aGVuIEl2YXIuZmlsbF9pZl9lbXB0eSBmaW5pc2hlZCAoKVxuICAgIGVsc2UgaWYgY29udGludWVfb25fZXJyb3JcbiAgICB0aGVuIE1vbml0b3IudHJ5X3dpdGggZiB+cnVuOmBOb3cgfnJlc3Q6YFJhaXNlID4+PiBjb250aW51ZV90cnlfd2l0aFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGQgPSBmICgpIGluXG4gICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGQgdGhlbiBjb250aW51ZV9mICgpIGVsc2UgZCA+Pj4gY29udGludWVfZilcbiAgYW5kIGNvbnRpbnVlX2YgKCkgPVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgIHRoZW4gSXZhci5maWxsX2lmX2VtcHR5IGZpbmlzaGVkICgpXG4gICAgZWxzZSBhbGFybSA6PSBydW5fYXRfaW50ZXJuYWwgdCAoQ29udGludWUuYXQgY29udGludWUgdCkgcnVuX2YgKClcbiAgYW5kIGNvbnRpbnVlX3RyeV93aXRoIG9yX2Vycm9yID1cbiAgICAobWF0Y2ggb3JfZXJyb3Igd2l0aFxuICAgICB8IE9rICgpIC0+ICgpXG4gICAgIHwgRXJyb3IgZXJyb3IgLT4gTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBlcnJvcik7XG4gICAgY29udGludWVfZiAoKVxuICBpblxuICBydW5fZiAoKVxuOztcblxubGV0IGV2ZXJ5JyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCB0IHNwYW4gZiA9XG4gIGlmIFRpbWVfbnMuU3Bhbi4oIDw9ICkgc3BhbiBUaW1lX25zLlNwYW4uemVyb1xuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZV9zb3VyY2UuZXZlcnkgZ290IG5vbnBvc2l0aXZlIHNwYW5cIiAoc3BhbiA6IFRpbWVfbnMuU3Bhbi50KV07XG4gIHJ1bl9yZXBlYXRlZGx5IHQgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgfmYgfmNvbnRpbnVlOihBZnRlciBzcGFuKVxuOztcblxubGV0IGV2ZXJ5ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgdCBzcGFuIGYgPVxuICBldmVyeScgdCA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZDpOb25lIHNwYW4gKGZ1biAoKSAtPlxuICAgIGYgKCk7XG4gICAgcmV0dXJuICgpKVxuOztcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgdCBpbnRlcnZhbCBmID1cbiAgbGV0IG5vdyA9IG5vdyB0IGluXG4gIGxldCBiYXNlLCBzdGFydCA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgTm9uZSAtPiBub3csIE5vbmVcbiAgICB8IFNvbWUgc3RhcnQgLT5cbiAgICAgICggc3RhcnRcbiAgICAgICwgU29tZVxuICAgICAgICAgIChhdFxuICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAoVGltZV9ucy5uZXh0X211bHRpcGxlXG4gICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICB+YmFzZTpzdGFydFxuICAgICAgICAgICAgICAgIH5hZnRlcjpub3dcbiAgICAgICAgICAgICAgICB+Y2FuX2VxdWFsX2FmdGVyOnRydWVcbiAgICAgICAgICAgICAgICB+aW50ZXJ2YWwpKSApXG4gIGluXG4gIHJ1bl9yZXBlYXRlZGx5XG4gICAgdFxuICAgID9zdGFydFxuICAgID9zdG9wXG4gICAgP2NvbnRpbnVlX29uX2Vycm9yXG4gICAgfmZcbiAgICB+Y29udGludWU6KE5leHRfbXVsdGlwbGUgKGJhc2UsIGludGVydmFsKSlcbjs7XG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgdCBpbnRlcnZhbCBmID1cbiAgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIChmdW4gKCkgLT5cbiAgICBmICgpO1xuICAgIHJldHVybiAoKSlcbjs7XG5cbmxldCB3aXRoX3RpbWVvdXQgdCBzcGFuIGQgPVxuICBsZXQgdGltZW91dCA9IEV2ZW50LmFmdGVyIHQgc3BhbiBpblxuICBjaG9vc2VcbiAgICAoKiBUaGUgY29kZSBiZWxvdyBkb2VzIGV4aGF1c3RpdmUgY2FzZSBhbmFseXNpcyBpbiBib3RoIFtjaG9pY2Vdcy4gIEJlY2F1c2UgW3RpbWVvdXRdXG4gICAgICAgZG9lcyBub3QgZXNjYXBlIHRoZSBzY29wZSBvZiB0aGlzIGZ1bmN0aW9uLCBjZXJ0YWluIGNhc2VzIHNob3VsZCBiZSBpbXBvc3NpYmxlLCBhbmRcbiAgICAgICBhcmUgbWFya2VkIGFzIHN1Y2ggd2l0aCBleGNlcHRpb25zLiAgV2UgZG8gbm90IGV4cGVjdCB0aG9zZSBleGNlcHRpb25zIHRvIG9jY3VyLFxuICAgICAgIGJ1dCBpZiB0aGV5IGRvLCBpdCBsaWtlbHkgaW5kaWNhdGVzIGEgYnVnIGluIFtjaG9vc2VdIHJhdGhlciB0aGFuXG4gICAgICAgW3dpdGhfdGltZW91dF0uICopXG4gICAgWyBjaG9pY2UgZCAoZnVuIHYgLT5cbiAgICAgICAgKG1hdGNoIEV2ZW50LmFib3J0IHRpbWVvdXQgKCkgd2l0aFxuICAgICAgICAgKCogW1ByZXZpb3VzbHlfaGFwcGVuZWRdIGNhbiBvY2N1ciBpZiBib3RoIFtkXSBhbmQgW3dhaXRdIGJlY29tZSBkZXRlcm1pbmVkIGF0XG4gICAgICAgICAgICB0aGUgc2FtZSB0aW1lLCBlLmcuIFt3aXRoX3RpbWVvdXQgKHNlYyAwLikgKHJldHVybiAoKSldLiAqKVxuICAgICAgICAgfCBPayB8IFByZXZpb3VzbHlfaGFwcGVuZWQgKCkgLT4gKClcbiAgICAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkICgpIC0+XG4gICAgICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZV9zb3VyY2Uud2l0aF90aW1lb3V0IGJ1Zzogc2hvdWxkIG9ubHkgYWJvcnQgb25jZVwiXSk7XG4gICAgICAgIGBSZXN1bHQgdilcbiAgICA7IGNob2ljZSAoRXZlbnQuZmlyZWQgdGltZW91dCkgKGZ1bmN0aW9uXG4gICAgICAgIHwgSGFwcGVuZWQgKCkgLT4gYFRpbWVvdXRcbiAgICAgICAgfCBBYm9ydGVkICgpIC0+XG4gICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgYnVnOiBib3RoIGNvbXBsZXRlZCBhbmQgdGltZWQgb3V0XCJdKVxuICAgIF1cbjs7XG5cbmxldCBkdXJhdGlvbl9vZiB0IGYgPVxuICBsZXQgc3RhcnQgPSBub3cgdCBpblxuICAoKiBFYWdlciBtYXAgdG8gcHJvdmlkZSBtb3JlIGFjY3VyYXRlIHRpbWluZ3Mgd2hlbiBbZl0gaXMgc3luY2hyb25vdXMuICopXG4gIEVhZ2VyX2RlZmVycmVkLm1hcCAoZiAoKSkgfmY6KGZ1biByZXN1bHQgLT5cbiAgICBsZXQgZHVyYXRpb24gPSBUaW1lX25zLmRpZmYgKG5vdyB0KSBzdGFydCBpblxuICAgIHJlc3VsdCwgZHVyYXRpb24pXG47O1xuXG5sZXQgb2Zfc3luY2hyb25vdXMgdCA9IHRcbmxldCB0b19zeW5jaHJvbm91cyB0ID0gdFxuXG5sZXQgdGltaW5nX3doZWVsX2hhc19ldmVudF9hdF9vcl9iZWZvcmUgd2hlZWwgdGltZSA9XG4gIGlmIFRpbWluZ193aGVlbC5pc19lbXB0eSB3aGVlbFxuICB0aGVuIGZhbHNlXG4gIGVsc2UgKFxuICAgIGxldCBuZXh0X2FsYXJtID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHdoZWVsIGluXG4gICAgVGltZV9uc19pbl90aGlzX2RpcmVjdG9yeS4obmV4dF9hbGFybSA8PSB0aW1lKSlcbjs7XG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5X2lmX3F1aWVzY2VudCB0IH50b18gPVxuICBsZXQgaXNfcXVlc2NlbnQgPVxuICAgICgqIFNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUganVzdCBhIGZhc3QgY2FzZSBvZiBbYWR2YW5jZV9ieV9hbGFybXNdLFxuICAgICAgIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNhbGwgdG8gW1NjaGVkdWxlci55aWVsZCAoKV0gY2FuIGJlIGVsaWRlZCxcbiAgICAgICBoZW5jZSB0aGUgW2Nhbl9ydW5fYV9qb2JdIGNoZWNrLlxuXG4gICAgICAgV2UncmUgbm90IGNoZWNraW5nIGVwb2xsLCBhbmQgd2UncmUgbm90IGNoZWNraW5nIHRoZSBbZXh0ZXJuYWxfam9ic10uICBUaGF0IGlzIGFuXG4gICAgICAgb2JzZXJ2YWJsZSBkaWZmZXJlbmNlLCBidXQgc2luY2UgW2FkdmFuY2VfYnlfYWxhcm1zID93YWl0X2ZvcjpOb25lXSBpcyBhbHJlYWR5XG4gICAgICAgcHJldHR5IGJyb2tlbiB3aGVuIHdhaXRpbmcgZm9yIGV4dGVybmFsIGV2ZW50cywgaXQncyBub3QgZ29pbmcgdG8gYmUgbWVhbmluZ2Z1bC5cbiAgICAqKVxuICAgIGNhbl9ydW5fYV9qb2IgdC5zY2hlZHVsZXJcbiAgICB8fCBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuaGFzX2V2ZW50c190b19ydW4gdFxuICAgIHx8IHRpbWluZ193aGVlbF9oYXNfZXZlbnRfYXRfb3JfYmVmb3JlIHQuZXZlbnRzIHRvX1xuICBpblxuICBpZiBpc19xdWVzY2VudFxuICB0aGVuIGZhbHNlXG4gIGVsc2UgKFxuICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fO1xuICAgIHRydWUpXG47O1xuIiwidHlwZSB0ID0gdW5pdCAtPiB1bml0XG5cbm1vZHVsZSBIYW5kbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUudFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxubW9kdWxlIFN0cmVhbSA9IEFzeW5jX3N0cmVhbVxuaW5jbHVkZSAoU2NoZWR1bGVyIDogbW9kdWxlIHR5cGUgb2YgU2NoZWR1bGVyIHdpdGggbW9kdWxlIEJ2YXIgOj0gU2NoZWR1bGVyLkJ2YXIpXG5cbmxldCB0ID0gU2NoZWR1bGVyLnRcblxuaW5jbHVkZSBNb25pdG9yLkV4cG9ydGVkX2Zvcl9zY2hlZHVsZXJcblxubGV0IGZpbmRfbG9jYWwga2V5ID0gRXhlY3V0aW9uX2NvbnRleHQuZmluZF9sb2NhbCAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGtleVxuXG5sZXQgd2l0aF9sb2NhbCBrZXkgdmFsdWUgfmYgPVxuICBsZXQgdCA9IHQgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgICBFeGVjdXRpb25fY29udGV4dC53aXRoX2xvY2FsIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQpIGtleSB2YWx1ZVxuICBpblxuICB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0IHQgZXhlY3V0aW9uX2NvbnRleHQgfmZcbjs7XG5cbmxldCBtYWluX2V4ZWN1dGlvbl9jb250ZXh0ID0gKHQgKCkpLm1haW5fZXhlY3V0aW9uX2NvbnRleHRcbmxldCBjYW5fcnVuX2Ffam9iIHQgPSBudW1fcGVuZGluZ19qb2JzIHQgPiAwIHx8IEJ2YXIuaGFzX2FueV93YWl0ZXJzIHQueWllbGRcbmxldCBoYXNfdXBjb21pbmdfZXZlbnQgdCA9IG5vdCAoVGltaW5nX3doZWVsLmlzX2VtcHR5IChldmVudHMgdCkpXG5sZXQgbmV4dF91cGNvbWluZ19ldmVudCB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgKGV2ZW50cyB0KVxubGV0IG5leHRfdXBjb21pbmdfZXZlbnRfZXhuIHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gKGV2ZW50cyB0KVxubGV0IGV2ZW50X3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiAoZXZlbnRzIHQpXG5sZXQgY3ljbGVfc3RhcnQgdCA9IHQuY3ljbGVfc3RhcnRcblxubGV0IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mID1cbiAgKCogVXNpbmcgYW4gYXJyYXkgcmF0aGVyIHRoYW4gYSBsaXN0IGZvciBjYWNoZSBlZmZpY2llbmN5LiBUaGlzIGFuZFxuICAgICBbcnVuX2V2ZXJ5X2N5Y2xlX2VuZF0gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBwcm9ncmFtIGluaXRpYWxpemF0aW9uLCBzbyB0aGVcbiAgICAgYWxsb2NhdGlvbiBhbmQgZ2FyYmFnZSBjcmVhdGlvbiBzaG91bGQgbm90IGJlIGFuIGlzc3VlLlxuXG4gICAgIE5vdGUgdGhhdCBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gTiB0aW1lcyB0YWtlcyBPKE5eMikgdGltZSwgYnV0IHRoaXMgc2hvdWxkIGJlIGZpbmVcbiAgICAgYmVjYXVzZSBOIGlzIHNtYWxsLiBTYW1lIGZvciBbcnVuX2V2ZXJ5X2N5Y2xlX2VuZF0uICopXG4gIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDwtIEFycmF5LmFwcGVuZCBbfCBmIHxdIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0XG47O1xuXG5sZXQgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCB0IH5mID1cbiAgdC5ydW5fZXZlcnlfY3ljbGVfZW5kIDwtIEFycmF5LmFwcGVuZCBbfCBmIHxdIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZFxuOztcblxubGV0IGFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rIHQgfmYgPVxuICBsZXQgaGFuZGxlID0gVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUuY3JlYXRlICgpIGluXG4gIEhhc2h0YmwuYWRkX2V4biB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSB+a2V5OmhhbmRsZSB+ZGF0YTpmO1xuICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjtcbiAgaGFuZGxlXG47O1xuXG5sZXQgYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rIHQgfmYgPVxuICBsZXQgaGFuZGxlID0gVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUuY3JlYXRlICgpIGluXG4gIEhhc2h0YmwuYWRkX2V4biB0LnJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgfmtleTpoYW5kbGUgfmRhdGE6ZjtcbiAgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCB0IH5mO1xuICBoYW5kbGVcbjs7XG5cbmxldCBhcnJheV9yZW1vdmVfZmlyc3QgYXJyIH5mID1cbiAgbWF0Y2ggQXJyYXkuZmluZGkgYXJyIH5mIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChpZHgsIF8pIC0+XG4gICAgU29tZVxuICAgICAgKEFycmF5LmluaXRcbiAgICAgICAgIChBcnJheS5sZW5ndGggYXJyIC0gMSlcbiAgICAgICAgIH5mOihmdW4gaSAtPiBpZiBpIDwgaWR4IHRoZW4gYXJyLihpKSBlbHNlIGFyci4oaSArIDEpKSlcbjs7XG5cbmxldCByZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgYXJyIGYgPVxuICAoKiBSZW1vdmUgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgW2ZdIGZyb20gW2Fycl0uIE1vcmUgdGhhbiBvbmUgaW5zdGFuY2UgbWF5IGJlIHByZXNlbnQsXG4gICAgIGJ1dCByZW1vdmFsIGlzIHJlZmVyZW5jZS1jb3VudGVkIGJ5IFtydW5fZXZlcnlfY3ljbGVfKHN0YXJ0fGVuZClfc3RhdGVdIHRhYmxlcy4gKilcbiAgbWF0Y2ggYXJyYXlfcmVtb3ZlX2ZpcnN0IH5mOihmdW4gXyBnIC0+IHBoeXNfZXF1YWwgZiBnKSBhcnIgd2l0aFxuICB8IFNvbWUgYXJyIC0+IGFyclxuICB8IE5vbmUgLT5cbiAgICAoKiBUaGlzIHNob3VsZCBiZSB1bnJlYWNoYWJsZSwgc2VlIHRoZSBbaW52YXJpYW50XSBpbiBbc2NoZWR1bGVyMS5tbF0uICopXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiU2NoZWR1bGVyLnJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayBjYWxsZWQgd2l0aCBhIGhvb2sgdGhhdCBpc24ndCByZWdpc3RlcmVkXCJdXG47O1xuXG5sZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2tfZXhuIHQgaGFuZGxlID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FuZF9yZW1vdmUgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgaGFuZGxlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgZmFpbHdpdGggXCJBdHRlbXB0ZWQgdG8gcmVtb3ZlIGEgY3ljbGUgc3RhcnQgaG9vayB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQuXCJcbiAgfCBTb21lIGYgLT5cbiAgICB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCA8LSByZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgZlxuOztcblxubGV0IHJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leG4gdCBoYW5kbGUgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYW5kX3JlbW92ZSB0LnJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgaGFuZGxlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgZmFpbHdpdGggXCJBdHRlbXB0ZWQgdG8gcmVtb3ZlIGEgY3ljbGUgZW5kIGhvb2sgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkLlwiXG4gIHwgU29tZSBmIC0+IHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCA8LSByZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgdC5ydW5fZXZlcnlfY3ljbGVfZW5kIGZcbjs7XG5cbmxldCBtYXBfY3ljbGVfdGltZXMgdCB+ZiA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmY6KGZ1biAoKSAtPiBUYWlsLmV4dGVuZCB0YWlsIChmIHQubGFzdF9jeWNsZV90aW1lKSkpXG47O1xuXG5sZXQgbG9uZ19jeWNsZXMgdCB+YXRfbGVhc3QgPVxuICBTdHJlYW0uY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mOihmdW4gKCkgLT5cbiAgICAgIGlmIFRpbWVfbnMuU3Bhbi4oID49ICkgdC5sYXN0X2N5Y2xlX3RpbWUgYXRfbGVhc3RcbiAgICAgIHRoZW4gVGFpbC5leHRlbmQgdGFpbCB0Lmxhc3RfY3ljbGVfdGltZSkpXG47O1xuXG5sZXQgY3ljbGVfbnVtX2pvYnMgdCA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmY6KGZ1biAoKSAtPiBUYWlsLmV4dGVuZCB0YWlsIHQubGFzdF9jeWNsZV9udW1fam9icykpXG47O1xuXG5sZXQgY3ljbGVfY291bnQgdCA9IHQuY3ljbGVfY291bnRcblxubGV0IHNldF9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSB0IGludCA9XG4gIHQubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgPC0gTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUuY3JlYXRlX2V4biBpbnRcbjs7XG5cbmxldCBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSB0ID1cbiAgTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUucmF3IHQubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbjs7XG5cbmxldCBzZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgdCBmID0gdC50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA8LSBmXG5cbmxldCB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIFRocmVhZF9zYWZlX3F1ZXVlLmVucXVldWUgdC5leHRlcm5hbF9qb2JzIChFeHRlcm5hbF9qb2IuVCAoZXhlY3V0aW9uX2NvbnRleHQsIGYsIGEpKTtcbiAgdC50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayAoKVxuOztcblxubGV0IHNldF9ldmVudF9hZGRlZF9ob29rIHQgZiA9IHQuZXZlbnRfYWRkZWRfaG9vayA8LSBTb21lIGZcbmxldCBzZXRfam9iX3F1ZXVlZF9ob29rIHQgZiA9IHQuam9iX3F1ZXVlZF9ob29rIDwtIFNvbWUgZlxuXG5sZXQgY3JlYXRlX2FsYXJtIHQgZiA9XG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCBpblxuICBHYy5FeHBlcnQuQWxhcm0uY3JlYXRlIChmdW4gKCkgLT5cbiAgICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgKCkpXG47O1xuXG5sZXQgYWRkX2ZpbmFsaXplciB0IGhlYXBfYmxvY2sgZiA9XG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCBpblxuICBsZXQgZmluYWxpemVyIGhlYXBfYmxvY2sgPVxuICAgICgqIEhlcmUgd2UgY2FuIGJlIGluIGFueSB0aHJlYWQsIGFuZCBtYXkgbm90IGJlIGhvbGRpbmcgdGhlIGFzeW5jIGxvY2suICBTbywgd2UgY2FuXG4gICAgICAgb25seSBkbyB0aHJlYWQtc2FmZSB0aGluZ3MuXG5cbiAgICAgICBCeSBwdXR0aW5nIFtoZWFwX2Jsb2NrXSBpbiBbZXh0ZXJuYWxfam9ic10sIHdlIGFyZSBrZWVwaW5nIGl0IGFsaXZlIHVudGlsIHRoZSBuZXh0XG4gICAgICAgdGltZSB0aGUgYXN5bmMgc2NoZWR1bGVyIGdldHMgYXJvdW5kIHRvIGRlcXVldWVpbmcgaXQuICBDYWxsaW5nXG4gICAgICAgW3QudGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tdIGVuc3VyZXMgdGhhdCB3aWxsIGhhcHBlbiBpbiBzaG9ydCBvcmRlci4gIFRodXMsXG4gICAgICAgd2UgYXJlIG5vdCBkcmFtYXRpY2FsbHkgaW5jcmVhc2luZyB0aGUgbGlmZXRpbWUgb2YgW2hlYXBfYmxvY2tdLCBzaW5jZSB0aGUgT0NhbWxcbiAgICAgICBydW50aW1lIGFscmVhZHkgcmVzdXJyZWN0ZWQgW2hlYXBfYmxvY2tdIHNvIHRoYXQgd2UgY291bGQgcmVmZXIgdG8gaXQgaGVyZS4gIFRoZVxuICAgICAgIE9DYW1sIHJ1bnRpbWUgYWxyZWFkeSByZW1vdmVkIHRoZSBmaW5hbGl6ZXIgZnVuY3Rpb24gd2hlbiBpdCBub3RpY2VkIFtoZWFwX2Jsb2NrXVxuICAgICAgIGNvdWxkIGJlIGZpbmFsaXplZCwgc28gdGhlcmUgaXMgbm8gaW5maW5pdGUgbG9vcCBpbiB3aGljaCB3ZSBhcmUgY2F1c2luZyB0aGVcbiAgICAgICBmaW5hbGl6ZXIgdG8gcnVuIGFnYWluLiAgQWxzbywgT0NhbWwgZG9lcyBub3QgaW1wb3NlIGFueSByZXF1aXJlbWVudCBvbiBmaW5hbGl6ZXJcbiAgICAgICBmdW5jdGlvbnMgdGhhdCB0aGV5IG5lZWQgdG8gZGlzcG9zZSBvZiB0aGUgYmxvY2ssIHNvIGl0J3MgZmluZSB0aGF0IHdlIGtlZXBcbiAgICAgICBbaGVhcF9ibG9ja10gYXJvdW5kIHVudGlsIGxhdGVyLiAqKVxuICAgIGlmIERlYnVnLmZpbmFsaXplcnMgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiZW5xdWV1ZWluZyBmaW5hbGl6ZXJcIjtcbiAgICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgaGVhcF9ibG9ja1xuICBpblxuICBpZiBEZWJ1Zy5maW5hbGl6ZXJzIHRoZW4gRGVidWcubG9nX3N0cmluZyBcImFkZGluZyBmaW5hbGl6ZXJcIjtcbiAgKCogV2UgdXNlIFtDYW1sLkdjLmZpbmFsaXNlXSBpbnN0ZWFkIG9mIFtDb3JlLkdjLmFkZF9maW5hbGl6ZXJdIGJlY2F1c2UgdGhlIGxhdHRlclxuICAgICBoYXMgaXRzIG93biB3cmFwcGVyIGFyb3VuZCBbQ2FtbC5HYy5maW5hbGlzZV0gdG8gcnVuIGZpbmFsaXplcnMgc3luY2hyb25vdXNseS4gKilcbiAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZSBmaW5hbGl6ZXIgaGVhcF9ibG9jayB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgKCogW0hlYXBfYmxvY2tdIGVuc3VyZXMgdGhhdCB0aGlzIHdpbGwgb25seSBmYWlsIGZvciBzdGF0aWMgZGF0YSwgaW4gd2hpY2ggY2FzZSB3ZVxuICAgICAgIGNhbiBkcm9wIHRoZSBmaW5hbGl6ZXIgc2luY2UgdGhlIGJsb2NrIHdpbGwgbmV2ZXIgYmUgY29sbGVjdGVkLiopXG4gICAgKClcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyX2V4biB0IHggZiA9XG4gIGFkZF9maW5hbGl6ZXIgdCAoSGVhcF9ibG9jay5jcmVhdGVfZXhuIHgpIChmdW4gaGVhcF9ibG9jayAtPlxuICAgIGYgKEhlYXBfYmxvY2sudmFsdWUgaGVhcF9ibG9jaykpXG47O1xuXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0IHQgaGVhcF9ibG9jayBmID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIGxldCBmaW5hbGl6ZXIgKCkgPVxuICAgICgqIEhlcmUgd2UgY2FuIGJlIGluIGFueSB0aHJlYWQsIGFuZCBtYXkgbm90IGJlIGhvbGRpbmcgdGhlIGFzeW5jIGxvY2suICBTbywgd2UgY2FuXG4gICAgICAgb25seSBkbyB0aHJlYWQtc2FmZSB0aGluZ3MuICopXG4gICAgaWYgRGVidWcuZmluYWxpemVyc1xuICAgIHRoZW4gRGVidWcubG9nX3N0cmluZyBcImVucXVldWVpbmcgZmluYWxpemVyICh1c2luZyAnbGFzdCcgc2VtYW50aWMpXCI7XG4gICAgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgdCBleGVjdXRpb25fY29udGV4dCBmICgpXG4gIGluXG4gIGlmIERlYnVnLmZpbmFsaXplcnMgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiYWRkaW5nIGZpbmFsaXplciAodXNpbmcgJ2xhc3QnIHNlbWFudGljKVwiO1xuICAoKiBXZSB1c2UgW0NhbWwuR2MuZmluYWxpc2VfbGFzdF0gaW5zdGVhZCBvZiBbQ29yZS5HYy5hZGRfZmluYWxpemVyX2xhc3RdIGJlY2F1c2VcbiAgICAgdGhlIGxhdHRlciBoYXMgaXRzIG93biB3cmFwcGVyIGFyb3VuZCBbQ2FtbC5HYy5maW5hbGlzZV9sYXN0XSB0byBydW4gZmluYWxpemVyc1xuICAgICBzeW5jaHJvbm91c2x5LiAqKVxuICB0cnkgU3RkbGliLkdjLmZpbmFsaXNlX2xhc3QgZmluYWxpemVyIGhlYXBfYmxvY2sgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICgqIFtIZWFwX2Jsb2NrXSBlbnN1cmVzIHRoYXQgdGhpcyB3aWxsIG9ubHkgZmFpbCBmb3Igc3RhdGljIGRhdGEsIGluIHdoaWNoIGNhc2Ugd2VcbiAgICAgICBjYW4gZHJvcCB0aGUgZmluYWxpemVyIHNpbmNlIHRoZSBibG9jayB3aWxsIG5ldmVyIGJlIGNvbGxlY3RlZC4qKVxuICAgICgpXG47O1xuXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0X2V4biB0IHggZiA9IGFkZF9maW5hbGl6ZXJfbGFzdCB0IChIZWFwX2Jsb2NrLmNyZWF0ZV9leG4geCkgZlxuXG4oKiogW2ZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kXSBzZXRzIHRoZSBudW1iZXIgb2Ygbm9ybWFsIGpvYnMgYWxsb3dlZCB0byBydW4gaW4gdGhpc1xuICAgIGN5Y2xlIHRvIHplcm8uICBUaHVzLCBhZnRlciB0aGUgY3VycmVudGx5IHJ1bm5pbmcgam9iIGNvbXBsZXRlcywgdGhlIHNjaGVkdWxlciB3aWxsXG4gICAgc3dpdGNoIHRvIGxvdyBwcmlvcml0eSBqb2JzIGFuZCB0aGVuIGVuZCB0aGUgY3VycmVudCBjeWNsZS4gKilcbmxldCBmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCB0ID1cbiAgSm9iX3F1ZXVlLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzIDBcbjs7XG5cbigqIFdlIHByZWFsbG9jYXRlIFtzZW5kX2V4bl0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBvbiBlYWNoIGNhbGwgdG8gW2FkdmFuY2VfY2xvY2tdLiAqKVxubGV0IHNlbmRfZXhuID0gU29tZSBNb25pdG9yLnNlbmRfZXhuXG5cbmxldCBhZHZhbmNlX2Nsb2NrIHQgfm5vdyA9XG4gIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5hZHZhbmNlX2ludGVybmFsIHQudGltZV9zb3VyY2UgfnRvXzpub3cgfnNlbmRfZXhuXG47O1xuXG5sZXQgcnVuX2N5Y2xlIHQgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcInJ1bl9jeWNsZSBzdGFydGluZ1wiIHQgWyVzZXhwX29mOiB0XTtcbiAgbGV0IG5vdyA9IFRpbWVfbnMubm93ICgpIGluXG4gIHQuY3ljbGVfY291bnQgPC0gdC5jeWNsZV9jb3VudCArIDE7XG4gIHQuY3ljbGVfc3RhcnQgPC0gbm93O1xuICB0LmluX2N5Y2xlIDwtIHRydWU7XG4gIEJ2YXIuYnJvYWRjYXN0IHQueWllbGQgKCk7XG4gIGxldCBudW1fam9ic19ydW5fYXRfc3RhcnRfb2ZfY3ljbGUgPSBudW1fam9ic19ydW4gdCBpblxuICBBcnJheS5pdGVyIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IH5mOihmdW4gZiAtPiBmICgpKTtcbiAgYWR2YW5jZV9jbG9jayB0IH5ub3c7XG4gIHN0YXJ0X2N5Y2xlIHQgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHk6dC5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZTtcbiAgbGV0IHJlYyBydW5fam9icyB0ID1cbiAgICBtYXRjaCBTY2hlZHVsZXIucnVuX2pvYnMgdCB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBleG4gfmJhY2t0cmFjZTooYFRoaXMgYmFja3RyYWNlKTtcbiAgICAgICgqIFtydW5fam9ic10gc3RvcHBlZCBkdWUgdG8gYW4gZXhuLiAgVGhlcmUgbWF5IHN0aWxsIGJlIGpvYnMgdGhhdCBjb3VsZCBiZVxuICAgICAgICAgcnVuIHRoaXMgY3ljbGUsIHNvIFtydW5fam9ic10gYWdhaW4uICopXG4gICAgICBydW5fam9icyB0XG4gIGluXG4gIHJ1bl9qb2JzIHQ7XG4gIGxldCBjeWNsZV90aW1lID0gVGltZV9ucy5kaWZmIChUaW1lX25zLm5vdyAoKSkgdC5jeWNsZV9zdGFydCBpblxuICB0Lmxhc3RfY3ljbGVfdGltZSA8LSBjeWNsZV90aW1lO1xuICB0Lmxhc3RfY3ljbGVfbnVtX2pvYnMgPC0gbnVtX2pvYnNfcnVuIHQgLSBudW1fam9ic19ydW5fYXRfc3RhcnRfb2ZfY3ljbGU7XG4gIHQudG90YWxfY3ljbGVfdGltZSA8LSBUaW1lX25zLlNwYW4uKHQudG90YWxfY3ljbGVfdGltZSArIGN5Y2xlX3RpbWUpO1xuICBpZiBCdmFyLmhhc19hbnlfd2FpdGVycyB0LnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluICYmIG51bV9wZW5kaW5nX2pvYnMgdCA9IDBcbiAgdGhlbiBCdmFyLmJyb2FkY2FzdCB0LnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluICgpO1xuICBBcnJheS5pdGVyIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCB+ZjooZnVuIGYgLT4gZiAoKSk7XG4gIHQuaW5fY3ljbGUgPC0gZmFsc2U7XG4gIGlmIGRlYnVnXG4gIHRoZW5cbiAgICBEZWJ1Zy5sb2dcbiAgICAgIFwicnVuX2N5Y2xlIGZpbmlzaGVkXCJcbiAgICAgICh1bmNhdWdodF9leG4gdCwgaXNfc29tZSAobmV4dF91cGNvbWluZ19ldmVudCB0KSlcbiAgICAgIFslc2V4cF9vZjogRXJyb3IudCBvcHRpb24gKiBib29sXVxuOztcblxubGV0IHJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gKCkgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluIHN0YXJ0aW5nXCI7XG4gIGxldCB0ID0gdCAoKSBpblxuICBpZiBpc19kZWFkIHRcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gY2Fubm90IHByb2NlZWQgLS0gc2NoZWR1bGVyIGlzIGRlYWRcIlxuICAgICAgICAgIH5zY2hlZHVsZXI6KHQgOiB0KV07XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgcnVuX2N5Y2xlIHQ7XG4gICAgYWR2YW5jZV9jbG9jayB0IH5ub3c6KFRpbWVfbnMubm93ICgpKTtcbiAgICBpZiBjYW5fcnVuX2Ffam9iIHQgdGhlbiBsb29wICgpXG4gIGluXG4gIGxvb3AgKCk7XG4gICgqIFJlc2V0IHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBjb250ZXh0IHRvIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB3aGVuIHdlJ3JlIG5vdCBpblxuICAgICBhIGpvYiwgW2N1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgPSBtYWluX2V4ZWN1dGlvbl9jb250ZXh0XS4gKilcbiAgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgdC5tYWluX2V4ZWN1dGlvbl9jb250ZXh0O1xuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluIGZpbmlzaGVkXCI7XG4gIE9wdGlvbi5pdGVyICh1bmNhdWdodF9leG4gdCkgfmY6RXJyb3IucmFpc2Vcbjs7XG5cbmxldCBtYWtlX2FzeW5jX3VudXNhYmxlICgpID1cbiAgbGV0IHQgPSAhdF9yZWYgaW5cbiAgdC5jaGVja19hY2Nlc3NcbiAgPC0gU29tZVxuICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICByYWlzZV9zIFslc2V4cCBcIkFzeW5jIHNjaGVkdWxlciBpcyB1bnVzYWJsZSBkdWUgdG8gW21ha2VfYXN5bmNfdW51c2FibGVdXCJdKVxuOztcblxubGV0IHJlc2V0X2luX2ZvcmtlZF9wcm9jZXNzICgpID1cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwicmVzZXRfaW5fZm9ya2VkX3Byb2Nlc3NcIjtcbiAgKCogVGhlcmUgaXMgbm8gbmVlZCB0byBlbXB0eSBbbWFpbl9tb25pdG9yX2hvbGVdLiAqKVxuICBTY2hlZHVsZXIuKHRfcmVmIDo9IGNyZWF0ZSAoKSlcbjs7XG5cbmxldCBjaGVja19pbnZhcmlhbnRzIHQgPSB0LmNoZWNrX2ludmFyaWFudHNcbmxldCBzZXRfY2hlY2tfaW52YXJpYW50cyB0IGIgPSB0LmNoZWNrX2ludmFyaWFudHMgPC0gYlxubGV0IHNldF9yZWNvcmRfYmFja3RyYWNlcyB0IGIgPSB0LnJlY29yZF9iYWNrdHJhY2VzIDwtIGJcbmxldCB5aWVsZCB0ID0gQnZhci53YWl0IHQueWllbGRcblxubGV0IHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluID8obWF5X3JldHVybl9pbW1lZGlhdGVseSA9IGZhbHNlKSB0ID1cbiAgaWYgbWF5X3JldHVybl9pbW1lZGlhdGVseSAmJiBudW1fcGVuZGluZ19qb2JzIHQgPSAwXG4gIHRoZW4gcmV0dXJuICgpXG4gIGVsc2UgQnZhci53YWl0IHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW5cbjs7XG5cbmxldCB5aWVsZF9ldmVyeSB+biA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiU2NoZWR1bGVyLnlpZWxkX2V2ZXJ5IGdvdCBub25wb3NpdGl2ZSBjb3VudFwiIChuIDogaW50KV1cbiAgZWxzZSBpZiBuID0gMVxuICB0aGVuIHN0YWdlIChmdW4gdCAtPiB5aWVsZCB0KVxuICBlbHNlIChcbiAgICBsZXQgY291bnRfdW50aWxfeWllbGQgPSByZWYgbiBpblxuICAgIHN0YWdlIChmdW4gdCAtPlxuICAgICAgZGVjciBjb3VudF91bnRpbF95aWVsZDtcbiAgICAgIGlmICFjb3VudF91bnRpbF95aWVsZCA+IDBcbiAgICAgIHRoZW4gcmV0dXJuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgY291bnRfdW50aWxfeWllbGQgOj0gbjtcbiAgICAgICAgeWllbGQgdCkpKVxuOztcblxubGV0IHRvdGFsX2N5Y2xlX3RpbWUgdCA9XG4gICgqIEFkanVzdCBmb3IgdGhlIGZhY3QgdGhlIGNhbGxlcidzIHByb2JhYmx5IGFuIEFzeW5jIGpvYi4gKilcbiAgaWYgdC5pbl9jeWNsZVxuICB0aGVuIChcbiAgICBsZXQgdGhpc19jeWNsZV90aW1lID0gVGltZV9ucy4oZGlmZiAobm93ICgpKSB0LmN5Y2xlX3N0YXJ0KSBpblxuICAgIFRpbWVfbnMuU3Bhbi4odC50b3RhbF9jeWNsZV90aW1lICsgdGhpc19jeWNsZV90aW1lKSlcbiAgZWxzZSB0LnRvdGFsX2N5Y2xlX3RpbWVcbjs7XG5cbm1vZHVsZSBWZXJ5X2xvd19wcmlvcml0eV93b3JrID0gc3RydWN0XG4gIG1vZHVsZSBXb3JrZXJfcmVzdWx0ID0gVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLkV4ZWNfcmVzdWx0XG5cblxuICBsZXQgcmVjIHJ1biB0ID0gcnVuX3dvcmtlcnMgdCB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZzoxXzAwMFxuXG4gIGFuZCBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID1cbiAgICBpZiBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID0gMFxuICAgIHRoZW4geWllbGRfdGhlbl9ydW4gdFxuICAgIGVsc2UgaWYgbm90IChEZXF1ZS5pc19lbXB0eSB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgd29ya2VyID0gRGVxdWUuZGVxdWV1ZV9mcm9udF9leG4gdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIGluXG4gICAgICBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCB3b3JrZXIuZXhlY3V0aW9uX2NvbnRleHQ7XG4gICAgICBydW5fd29ya2VyIHQgd29ya2VyIH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nKVxuXG4gIGFuZCB5aWVsZF90aGVuX3J1biB0ID1cbiAgICBpZiBub3QgKERlcXVlLmlzX2VtcHR5IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycylcbiAgICB0aGVuIERlZmVycmVkLnVwb24gKHlpZWxkIHQpIChmdW4gKCkgLT4gcnVuIHQpXG5cbiAgYW5kIHJ1bl93b3JrZXIgdCB3b3JrZXIgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPVxuICAgIGFzc2VydCAocGh5c19lcXVhbCB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgd29ya2VyLmV4ZWN1dGlvbl9jb250ZXh0KTtcbiAgICBpZiBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID0gMFxuICAgIHRoZW4gKFxuICAgICAgRGVxdWUuZW5xdWV1ZV9mcm9udCB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgd29ya2VyO1xuICAgICAgeWllbGRfdGhlbl9ydW4gdClcbiAgICBlbHNlIChcbiAgICAgIGxldCBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID0gbnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyAtIDEgaW5cbiAgICAgIG1hdGNoIHdvcmtlci5leGVjICgpIHdpdGhcbiAgICAgIHwgRmluaXNoZWQgLT4gcnVuX3dvcmtlcnMgdCB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZ1xuICAgICAgfCBOb3RfZmluaXNoZWQgLT4gcnVuX3dvcmtlciB0IHdvcmtlciB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZ1xuICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIGxldCBidCA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICAgICAgTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBleG4gfmJhY2t0cmFjZTooYFRoaXMgYnQpO1xuICAgICAgICBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nKVxuICA7O1xuXG4gIGxldCBlbnF1ZXVlIH5mID1cbiAgICBsZXQgdCA9IHQgKCkgaW5cbiAgICBsZXQgcXVldWUgPSB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgaW5cbiAgICBsZXQgcnVubmluZyA9IG5vdCAoRGVxdWUuaXNfZW1wdHkgcXVldWUpIGluXG4gICAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmNyZWF0ZV9saWtlIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQpIH5wcmlvcml0eTpMb3dcbiAgICBpblxuICAgIERlcXVlLmVucXVldWVfYmFjayBxdWV1ZSB7IGV4ZWN1dGlvbl9jb250ZXh0OyBleGVjID0gZiB9O1xuICAgIGlmIG5vdCBydW5uaW5nIHRoZW4gZW5xdWV1ZSB0IGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB0XG4gIDs7XG5lbmRcblxubW9kdWxlIEZvcl9iZW5jaCA9IHN0cnVjdFxuICBsZXQgYWR2YW5jZV9jbG9jayA9IGFkdmFuY2VfY2xvY2tcbmVuZFxuXG5sZXQgaW5fY3ljbGUgdCA9IHQuaW5fY3ljbGVcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIENvdW50aW5nX3NlbWFwaG9yZSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgd2FpdF90b19hY3F1aXJlX2pvYl90b2tlbiA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCByZWxlYXNlX2pvYl90b2tlbiA6IHQgLT4gdW5pdFxuICB2YWwgYWJvcnQgOiB0IC0+IHVuaXRcbiAgdmFsIGNyZWF0ZSA6IG1heF9jb25jdXJyZW50X2pvYnM6aW50IC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBtYXhfY29uY3VycmVudF9qb2JzIDogaW50XG4gICAgOyBtdXRhYmxlIHdhaXRlciA6IHVuaXQgSXZhci50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBhYm9ydGVkIDogYm9vbFxuICAgIH1cblxuICBsZXQgd2FpdF90b19hY3F1aXJlX2pvYl90b2tlbiAoeyBtYXhfY29uY3VycmVudF9qb2JzOyB3YWl0ZXI7IGFib3J0ZWQgfSBhcyB0KSA9XG4gICAgbWF0Y2ggYWJvcnRlZCB3aXRoXG4gICAgfCB0cnVlIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgaWYgbWF4X2NvbmN1cnJlbnRfam9icyA+IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICB0Lm1heF9jb25jdXJyZW50X2pvYnMgPC0gbWF4X2NvbmN1cnJlbnRfam9icyAtIDE7XG4gICAgICAgIERlZmVycmVkLnJldHVybiAoKSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBhc3NlcnQgKE9wdGlvbi5pc19ub25lIHdhaXRlcik7XG4gICAgICAgIGxldCBpdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgICAgdC53YWl0ZXIgPC0gU29tZSBpdmFyO1xuICAgICAgICBJdmFyLnJlYWQgaXZhcilcbiAgOztcblxuICBsZXQgcmVsZWFzZV9qb2JfdG9rZW4gKHsgbWF4X2NvbmN1cnJlbnRfam9iczsgd2FpdGVyOyBhYm9ydGVkID0gXyB9IGFzIHQpID1cbiAgICBtYXRjaCB3YWl0ZXIgd2l0aFxuICAgIHwgU29tZSBpdmFyIC0+XG4gICAgICBJdmFyLmZpbGwgaXZhciAoKTtcbiAgICAgIHQud2FpdGVyIDwtIE5vbmVcbiAgICB8IE5vbmUgLT4gdC5tYXhfY29uY3VycmVudF9qb2JzIDwtIG1heF9jb25jdXJyZW50X2pvYnMgKyAxXG4gIDs7XG5cbiAgbGV0IGFib3J0IHQgPVxuICAgIHQuYWJvcnRlZCA8LSB0cnVlO1xuICAgIHQud2FpdGVyIDwtIE5vbmVcbiAgOztcblxuICBsZXQgY3JlYXRlIH5tYXhfY29uY3VycmVudF9qb2JzID1cbiAgICB7IG1heF9jb25jdXJyZW50X2pvYnM7IHdhaXRlciA9IE5vbmU7IGFib3J0ZWQgPSBmYWxzZSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGNvbXB1dGUgOlxuICAgICAgICBFeGVjdXRpb25fY29udGV4dC50IC0+IENvdW50aW5nX3NlbWFwaG9yZS50IC0+ICgnYSBEZWZlcnJlZC50IC0+IHVuaXQpIC0+IHVuaXRcbiAgICB9XG4gIFtAQHVuYm94ZWRdXG5cbiAgbGV0IHJldHVybiB4ID0geyBjb21wdXRlID0gKGZ1biBfIF8gayAtPiBrIChyZXR1cm4geCkpIH1cblxuICBsZXQgbWFwID1cbiAgICBgQ3VzdG9tXG4gICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgIHsgY29tcHV0ZSA9XG4gICAgICAgICAgICAgKGZ1biBleGVjX2N0eCBzZW1hcGhvcmUgayAtPlxuICAgICAgICAgICAgICAgIHQuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biBkIC0+XG4gICAgICAgICAgICAgICAgICBrXG4gICAgICAgICAgICAgICAgICAgIChsZXQlbWFwIHJlc3VsdCA9IGQgaW5cbiAgICAgICAgICAgICAgICAgICAgIGYgcmVzdWx0KSkpXG4gICAgICAgICB9KVxuICA7O1xuXG4gIGxldCBhcHBseSB0X2YgdCA9XG4gICAgeyBjb21wdXRlID1cbiAgICAgICAgKGZ1biBleGVjX2N0eCBzZW1hcGhvcmUgayAtPlxuICAgICAgICAgICB0X2YuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biBkZiAtPlxuICAgICAgICAgICAgIHQuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biBkdiAtPlxuICAgICAgICAgICAgICAga1xuICAgICAgICAgICAgICAgICAobGV0JWJpbmQgZiA9IGRmIGluXG4gICAgICAgICAgICAgICAgICBsZXQlbWFwIHYgPSBkdiBpblxuICAgICAgICAgICAgICAgICAgZiB2KSkpKVxuICAgIH1cbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoVClcblxubGV0IGVucXVldWUnIHNjaGVkdWxlciBjdHggZiA9XG4gIGxldCBpdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGN0eCAoZnVuICgpIC0+IHVwb24gKGYgKCkpIChJdmFyLmZpbGwgaXZhcikpICgpO1xuICBJdmFyLnJlYWQgaXZhclxuOztcblxubGV0IGpvYiBmID1cbiAgeyBjb21wdXRlID1cbiAgICAgIChmdW4gZXhlY19jdHggc2VtYXBob3JlIGsgLT5cbiAgICAgICAgIERlZmVycmVkLnVwb24gKENvdW50aW5nX3NlbWFwaG9yZS53YWl0X3RvX2FjcXVpcmVfam9iX3Rva2VuIHNlbWFwaG9yZSkgKGZ1biAoKSAtPlxuICAgICAgICAgICBrXG4gICAgICAgICAgICAgKGVucXVldWUnIChTY2hlZHVsZXIudCAoKSkgZXhlY19jdHggKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgIGxldCVtYXAgYSA9IGYgKCkgaW5cbiAgICAgICAgICAgICAgICBDb3VudGluZ19zZW1hcGhvcmUucmVsZWFzZV9qb2JfdG9rZW4gc2VtYXBob3JlO1xuICAgICAgICAgICAgICAgIGEpKSkpXG4gIH1cbjs7XG5cbmxldCBydW4gdCB+bWF4X2NvbmN1cnJlbnRfam9icyA9XG4gIGxldCBzZW1hcGhvcmUgPSBDb3VudGluZ19zZW1hcGhvcmUuY3JlYXRlIH5tYXhfY29uY3VycmVudF9qb2JzIGluXG4gICgqIFRoZSBuYW1lIGlzIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nIGluIG9yZGVyIHRvIHByZXZlbnQgW01vbml0b3Iuc2VuZF9leG5dXG4gICAgIGZyb20gYXBwZW5kaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgbW9uaXRvciB0byB0aGUgZXhjZXB0aW9ucyB3ZSBmb3J3YXJkLlxuICAgICBUaGlzIG1hdHRlcnMgYmVjYXVzZSB3ZSB3YW50IHNpbWxpYXIgYmVoYXZpb3IgdG8gW1Rocm90dGxlXSBhbmQgbm90IGJyZWFrXG4gICAgIGV4aXN0aW5nIHRlc3RzLiAqKVxuICBsZXQgbW9uaXRvciA9IE1vbml0b3IuY3JlYXRlIH5uYW1lOlwiXCIgKCkgaW5cbiAgbGV0IHBhcmVudF9tb25pdG9yID0gTW9uaXRvci5jdXJyZW50ICgpIGluXG4gIE1vbml0b3IuZGV0YWNoX2FuZF9pdGVyX2Vycm9ycyBtb25pdG9yIH5mOihmdW4gZXJyIC0+XG4gICAgQ291bnRpbmdfc2VtYXBob3JlLmFib3J0IHNlbWFwaG9yZTtcbiAgICBNb25pdG9yLnNlbmRfZXhuIHBhcmVudF9tb25pdG9yIGVycik7XG4gIGxldCBleGVjX2N0eCA9XG4gICAgRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2VcbiAgICAgIH5tb25pdG9yXG4gICAgICAoU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKFNjaGVkdWxlci50ICgpKSlcbiAgaW5cbiAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICB0LmNvbXB1dGUgZXhlY19jdHggc2VtYXBob3JlIChmdW4gciAtPiBEZWZlcnJlZC51cG9uIHIgKEl2YXIuZmlsbCBpdmFyKSk7XG4gIEl2YXIucmVhZCBpdmFyXG47O1xuXG5sZXQgb2ZfdGh1bmsgdGh1bmsgPVxuICB7IGNvbXB1dGUgPVxuICAgICAgKGZ1biBleGVjX2N0eCBzZW1hcGhvcmUgayAtPlxuICAgICAgICAgbGV0IHQgPSB0aHVuayAoKSBpblxuICAgICAgICAgdC5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSBrKVxuICB9XG47O1xuXG5sZXQgKCAqPiApIHQxIHQyID1cbiAgeyBjb21wdXRlID1cbiAgICAgIChmdW4gZXhlY19jdHggc2VtYXBob3JlIGsgLT5cbiAgICAgICAgIHQxLmNvbXB1dGUgZXhlY19jdHggc2VtYXBob3JlIChmdW4gZDEgLT5cbiAgICAgICAgICAgdDIuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biBkMiAtPlxuICAgICAgICAgICAgIGtcbiAgICAgICAgICAgICAgIChsZXQlYmluZCAoKSA9IGQxIGluXG4gICAgICAgICAgICAgICAgZDIpKSkpXG4gIH1cbjs7XG5cbmxldCBib3RoX3VuaXQgPSAoICo+IClcbiIsIm9wZW4hIEJhc2VcblxudHlwZSBfIHQgPVxuICB8IFN0YWNrIDogJ2EgU3RhY2sudCAtPiAnYSB0XG4gIHwgQ291bnRlciA6IHsgbXV0YWJsZSBsZW5ndGggOiBpbnQgfSAtPiB1bml0IHRcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBvZl9saXN0IGxpc3QgPSBTdGFjayAoU3RhY2sub2ZfbGlzdCBsaXN0KVxuXG5sZXQgY3JlYXRlX2NvdW50ZXIgfmxlbmd0aCA9XG4gIGlmIGxlbmd0aCA8IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIltTdGFja19vcl9jb3VudGVyLmNyZWF0ZV9jb3VudGVyXSBnb3QgbmVnYXRpdmUgbGVuZ3RoXCIgKGxlbmd0aCA6IGludCldO1xuICBDb3VudGVyIHsgbGVuZ3RoIH1cbjs7XG5cbmxldCBsZW5ndGggKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5sZW5ndGggc1xuICB8IENvdW50ZXIgciAtPiByLmxlbmd0aFxuOztcblxubGV0IGNsZWFyICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2suY2xlYXIgc1xuICB8IENvdW50ZXIgciAtPiByLmxlbmd0aCA8LSAwXG47O1xuXG5sZXQgcHVzaCAodHlwZSBhKSAodCA6IGEgdCkgYSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2sucHVzaCBzIGFcbiAgfCBDb3VudGVyIHIgLT4gci5sZW5ndGggPC0gci5sZW5ndGggKyAxXG47O1xuXG5sZXQgcG9wX2V4biAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLnBvcF9leG4gc1xuICB8IENvdW50ZXIgciAtPlxuICAgIGlmIHIubGVuZ3RoID0gMCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiW1N0YWNrX29yX2NvdW50ZXIucG9wX2V4bl0gb2YgZW1wdHkgc3RhY2tcIl07XG4gICAgci5sZW5ndGggPC0gci5sZW5ndGggLSAxXG47O1xuXG5sZXQgaXRlciAodHlwZSBhKSAodCA6IGEgdCkgfihmIDogYSAtPiB1bml0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2suaXRlciBzIH5mXG4gIHwgQ291bnRlciByIC0+XG4gICAgZm9yIF8gPSAxIHRvIHIubGVuZ3RoIGRvXG4gICAgICBmICgpXG4gICAgZG9uZVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxudHlwZSAnYSBvdXRjb21lID1cbiAgWyBgT2sgb2YgJ2FcbiAgfCBgQWJvcnRlZFxuICB8IGBSYWlzZWQgb2YgZXhuXG4gIF1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSBJbnRlcm5hbF9qb2IgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNyZWF0ZSA6ICgnYSAtPiAnYiBEZWZlcnJlZC50KSAtPiAnYSB0ICogJ2Igb3V0Y29tZSBEZWZlcnJlZC50XG5cbiAgKCogRXZlcnkgaW50ZXJuYWwgam9iIHdpbGwgZXZlbnR1YWxseSBiZSBlaXRoZXIgW3J1bl0gb3IgW2Fib3J0XWVkLCBidXQgbm90IGJvdGguICopXG5cbiAgdmFsIHJ1biA6ICdhIHQgLT4gJ2EgLT4gWyBgT2sgfCBgUmFpc2VkIF0gRGVmZXJyZWQudFxuICB2YWwgYWJvcnQgOiBfIHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBzdGFydCA6IFsgYEFib3J0IHwgYFN0YXJ0IG9mICdhIF0gSXZhci50XG4gICAgOyBvdXRjb21lIDogWyBgT2sgfCBgQWJvcnRlZCB8IGBSYWlzZWQgXSBEZWZlcnJlZC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgd29yayA9XG4gICAgbGV0IHN0YXJ0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1hdGNoJWJpbmQgSXZhci5yZWFkIHN0YXJ0IHdpdGhcbiAgICAgIHwgYEFib3J0IC0+IHJldHVybiBgQWJvcnRlZFxuICAgICAgfCBgU3RhcnQgYSAtPlxuICAgICAgICAobWF0Y2glbWFwXG4gICAgICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICAgICAoZnVuICgpIC0+IHdvcmsgYSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgT2sgYSAtPiBgT2sgYVxuICAgICAgICAgfCBFcnJvciBleG4gLT4gYFJhaXNlZCBleG4pXG4gICAgaW5cbiAgICBsZXQgb3V0Y29tZSA9XG4gICAgICBtYXRjaCVtYXAgcmVzdWx0IHdpdGhcbiAgICAgIHwgYE9rIF8gLT4gYE9rXG4gICAgICB8IGBBYm9ydGVkIC0+IGBBYm9ydGVkXG4gICAgICB8IGBSYWlzZWQgXyAtPiBgUmFpc2VkXG4gICAgaW5cbiAgICBsZXQgdCA9IHsgc3RhcnQ7IG91dGNvbWUgfSBpblxuICAgIHQsIHJlc3VsdFxuICA7O1xuXG4gIGxldCBydW4gdCBhID1cbiAgICBJdmFyLmZpbGwgdC5zdGFydCAoYFN0YXJ0IGEpO1xuICAgIG1hdGNoJW1hcCB0Lm91dGNvbWUgd2l0aFxuICAgIHwgYEFib3J0ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCAoYE9rIHwgYFJhaXNlZCkgYXMgeCAtPiB4XG4gIDs7XG5cbiAgbGV0IGFib3J0IHQgPSBJdmFyLmZpbGwgdC5zdGFydCBgQWJvcnRcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IGNvbnRpbnVlX29uX2Vycm9yIDogYm9vbFxuICA7IG1heF9jb25jdXJyZW50X2pvYnMgOiBpbnRcbiAgOyAoKiBbam9iX3Jlc291cmNlc19ub3RfaW5fdXNlXSBob2xkcyByZXNvdXJjZXMgdGhhdCBhcmUgbm90IGN1cnJlbnRseSBpbiB1c2UgYnkgYVxuICAgICAgIHJ1bm5pbmcgam9iLiAqKVxuICAgIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSA6ICdhIFN0YWNrX29yX2NvdW50ZXIudFxuICA7XG4gICAgKCogW2pvYnNfd2FpdGluZ190b19zdGFydF0gaXMgdGhlIHF1ZXVlIG9mIGpvYnMgdGhhdCBoYXZlbid0IHlldCBzdGFydGVkLiAqKVxuICAgIGpvYnNfd2FpdGluZ190b19zdGFydCA6ICdhIEludGVybmFsX2pvYi50IFF1ZXVlLnRcbiAgOyAoKiBbMCA8PSBudW1fam9ic19ydW5uaW5nIDw9IG1heF9jb25jdXJyZW50X2pvYnNdLiAqKVxuICAgIG11dGFibGUgbnVtX2pvYnNfcnVubmluZyA6IGludFxuICA7ICgqIFtjYXBhY2l0eV9hdmFpbGFibGVdIGlzIFtTb21lIGl2YXJdIGlmIHVzZXIgY29kZSBoYXMgY2FsbGVkIFtjYXBhY2l0eV9hdmFpbGFibGUgdF1cbiAgICAgICBhbmQgaXMgd2FpdGluZyB0byBiZSBub3RpZmllZCB3aGVuIGNhcGFjaXR5IGlzIGF2YWlsYWJsZSBpbiB0aGUgdGhyb3R0bGUuXG4gICAgICAgW21heWJlX3N0YXJ0X2pvYl0gd2lsbCBmaWxsIFtpdmFyXSB3aGVuIGNhcGFjaXR5IGJlY29tZXMgYXZhaWxhYmxlLCBpLmUuIHdoZW5cbiAgICAgICBbam9ic193YWl0aW5nX3RvX3N0YXJ0XSBpcyBlbXB0eSBhbmQgW251bV9qb2JzX3J1bm5pbmcgPCBtYXhfY29uY3VycmVudF9qb2JzXS4gKilcbiAgICBtdXRhYmxlIGNhcGFjaXR5X2F2YWlsYWJsZSA6IHVuaXQgSXZhci50IG9wdGlvblxuICA7ICgqIFtpc19kZWFkXSBpcyB0cnVlIGlmIFt0XSB3YXMga2lsbGVkIGR1ZSB0byBhIGpvYiByYWlzaW5nIGFuIGV4Y2VwdGlvbiBvciBba2lsbCB0XVxuICAgICAgIGJlaW5nIGNhbGxlZC4gKilcbiAgICBtdXRhYmxlIGlzX2RlYWQgOiBib29sXG4gIDsgKCogW2NsZWFuc10gaG9sZHMgZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gY2xlYW4gZWFjaCByZXNvdXJjZSB3aGVuIFt0XSBpc1xuICAgICAgIGtpbGxlZC4gKilcbiAgICBtdXRhYmxlIGNsZWFucyA6ICgnYSAtPiB1bml0IERlZmVycmVkLnQpIGxpc3RcbiAgOyAoKiBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF0gaXMgdGhlIG51bWJlciBvZiByZXNvdXJjZXMgd2hvc2UgY2xlYW4gZnVuY3Rpb25zIGhhdmVcbiAgICAgICBub3QgeWV0IGNvbXBsZXRlZC4gIFdoaWxlIFt0XSBpcyBhbGl2ZSwgW251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPVxuICAgICAgIG1heF9jb25jdXJyZW50X2pvYnNdLiAgT25jZSBbdF0gaXMga2lsbGVkLCBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF0gZGVjcmVhc2VzIHRvXG4gICAgICAgemVybyBvdmVyIHRpbWUgYXMgdGhlIGNsZWFuIGZ1bmN0aW9ucyBjb21wbGV0ZS4gKilcbiAgICBtdXRhYmxlIG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgOiBpbnRcbiAgOyAoKiBbY2xlYW5lZF0gYmVjb21lcyBkZXRlcm1pbmVkIHdoZW4gW251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWRdIHJlYWNoZXMgemVybyxcbiAgICAgICBpLmUuIGFmdGVyIFt0XSBpcyBraWxsZWQgYW5kIGFsbCBpdHMgY2xlYW4gZnVuY3Rpb25zIGNvbXBsZXRlLiAqKVxuICAgIGNsZWFuZWQgOiB1bml0IEl2YXIudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA6IHVuaXQgPVxuICB0cnlcbiAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+Y29udGludWVfb25fZXJyb3I6aWdub3JlXG4gICAgICB+bWF4X2NvbmN1cnJlbnRfam9iczpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2NvbmN1cnJlbnRfam9icyAtPiBhc3NlcnQgKG1heF9jb25jdXJyZW50X2pvYnMgPiAwKSkpXG4gICAgICB+am9iX3Jlc291cmNlc19ub3RfaW5fdXNlOlxuICAgICAgICAoY2hlY2sgKGZ1biBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgLT5cbiAgICAgICAgICAgU3RhY2tfb3JfY291bnRlci5pdGVyIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSB+ZjppbnZhcmlhbnRfYTtcbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBTdGFja19vcl9jb3VudGVyLmxlbmd0aCBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2VcbiAgICAgICAgICAgICA9IGlmIHQuaXNfZGVhZCB0aGVuIDAgZWxzZSB0Lm1heF9jb25jdXJyZW50X2pvYnMgLSB0Lm51bV9qb2JzX3J1bm5pbmcpKSlcbiAgICAgIH5qb2JzX3dhaXRpbmdfdG9fc3RhcnQ6XG4gICAgICAgIChjaGVjayAoZnVuY3Rpb24gam9ic193YWl0aW5nX3RvX3N0YXJ0IC0+XG4gICAgICAgICAgIGlmIHQuaXNfZGVhZCB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgam9ic193YWl0aW5nX3RvX3N0YXJ0KSkpXG4gICAgICB+bnVtX2pvYnNfcnVubmluZzpcbiAgICAgICAgKGNoZWNrIChmdW4gbnVtX2pvYnNfcnVubmluZyAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9qb2JzX3J1bm5pbmcgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobnVtX2pvYnNfcnVubmluZyA8PSB0Lm1heF9jb25jdXJyZW50X2pvYnMpO1xuICAgICAgICAgICBpZiBudW1fam9ic19ydW5uaW5nIDwgdC5tYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSB0LmpvYnNfd2FpdGluZ190b19zdGFydCkpKVxuICAgICAgfmNhcGFjaXR5X2F2YWlsYWJsZTpcbiAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgfCBTb21lIGl2YXIgLT4gYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKSlcbiAgICAgIH5pc19kZWFkOmlnbm9yZVxuICAgICAgfmNsZWFuczppZ25vcmVcbiAgICAgIH5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIDw9IHQubWF4X2NvbmN1cnJlbnRfam9icyk7XG4gICAgICAgICAgIGlmIG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPCB0Lm1heF9jb25jdXJyZW50X2pvYnMgdGhlbiBhc3NlcnQgdC5pc19kZWFkKSlcbiAgICAgIH5jbGVhbmVkOlxuICAgICAgICAoY2hlY2sgKGZ1biBjbGVhbmVkIC0+XG4gICAgICAgICAgIGlmIEl2YXIuaXNfZnVsbCBjbGVhbmVkIHRoZW4gYXNzZXJ0ICh0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSAwKSkpXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaHJvdHRsZS5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgKHQgOiBfIHQpXVxuOztcblxubW9kdWxlIFQyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2tpbmQpIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgdFxuZW5kXG5cbmxldCBudW1fam9ic193YWl0aW5nX3RvX3N0YXJ0IHQgPSBRdWV1ZS5sZW5ndGggdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnRcblxubGV0IGNsZWFuX3Jlc291cmNlIHQgYSA9XG4gIERlZmVycmVkLmFsbF91bml0IChMaXN0Lm1hcCB0LmNsZWFucyB+ZjooZnVuIGYgLT4gZiBhKSlcbiAgPj4+IGZ1biAoKSAtPlxuICB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPC0gdC5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIC0gMTtcbiAgaWYgdC5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID0gMCB0aGVuIEl2YXIuZmlsbCB0LmNsZWFuZWQgKClcbjs7XG5cbmxldCBraWxsIHQgPVxuICBpZiBub3QgdC5pc19kZWFkXG4gIHRoZW4gKFxuICAgIHQuaXNfZGVhZCA8LSB0cnVlO1xuICAgIFF1ZXVlLml0ZXIgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQgfmY6SW50ZXJuYWxfam9iLmFib3J0O1xuICAgIFF1ZXVlLmNsZWFyIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0O1xuICAgIFN0YWNrX29yX2NvdW50ZXIuaXRlciB0LmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSB+ZjooZnVuIGEgLT4gY2xlYW5fcmVzb3VyY2UgdCBhKTtcbiAgICBTdGFja19vcl9jb3VudGVyLmNsZWFyIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlKVxuOztcblxubGV0IGF0X2tpbGwgdCBmID1cbiAgKCogV2UgcHJlc2VydmUgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHNvIHRoYXQgZXhjZXB0aW9ucyByYWlzZWQgYnkgW2ZdIGdvIHRvIHRoZSBtb25pdG9yXG4gICAgIGluIGVmZmVjdCB3aGVuIFthdF9raWxsXSB3YXMgY2FsbGVkLiAqKVxuICBsZXQgZiA9IHVuc3RhZ2UgKE1vbml0b3IuRXhwb3J0ZWRfZm9yX3NjaGVkdWxlci5wcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCcgZikgaW5cbiAgdC5jbGVhbnMgPC0gZiA6OiB0LmNsZWFuc1xuOztcblxubGV0IGNsZWFuZWQgdCA9IEl2YXIucmVhZCB0LmNsZWFuZWRcblxubGV0IHJlYyBzdGFydF9qb2IgdCA9XG4gIGFzc2VydCAobm90IHQuaXNfZGVhZCk7XG4gIGFzc2VydCAodC5udW1fam9ic19ydW5uaW5nIDwgdC5tYXhfY29uY3VycmVudF9qb2JzKTtcbiAgYXNzZXJ0IChub3QgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KSk7XG4gIGxldCBqb2IgPSBRdWV1ZS5kZXF1ZXVlX2V4biB0LmpvYnNfd2FpdGluZ190b19zdGFydCBpblxuICB0Lm51bV9qb2JzX3J1bm5pbmcgPC0gdC5udW1fam9ic19ydW5uaW5nICsgMTtcbiAgbGV0IGpvYl9yZXNvdXJjZSA9IFN0YWNrX29yX2NvdW50ZXIucG9wX2V4biB0LmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSBpblxuICBJbnRlcm5hbF9qb2IucnVuIGpvYiBqb2JfcmVzb3VyY2VcbiAgPj4+IGZ1biByZXMgLT5cbiAgdC5udW1fam9ic19ydW5uaW5nIDwtIHQubnVtX2pvYnNfcnVubmluZyAtIDE7XG4gIChtYXRjaCByZXMgd2l0aFxuICAgfCBgT2sgLT4gKClcbiAgIHwgYFJhaXNlZCAtPiBpZiBub3QgdC5jb250aW51ZV9vbl9lcnJvciB0aGVuIGtpbGwgdCk7XG4gIGlmIHQuaXNfZGVhZFxuICB0aGVuIGNsZWFuX3Jlc291cmNlIHQgam9iX3Jlc291cmNlXG4gIGVsc2UgKFxuICAgIFN0YWNrX29yX2NvdW50ZXIucHVzaCB0LmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSBqb2JfcmVzb3VyY2U7XG4gICAgaWYgbm90IChRdWV1ZS5pc19lbXB0eSB0LmpvYnNfd2FpdGluZ190b19zdGFydClcbiAgICB0aGVuIHN0YXJ0X2pvYiB0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB0LmNhcGFjaXR5X2F2YWlsYWJsZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBpdmFyIC0+XG4gICAgICAgIEl2YXIuZmlsbCBpdmFyICgpO1xuICAgICAgICB0LmNhcGFjaXR5X2F2YWlsYWJsZSA8LSBOb25lKSlcbjs7XG5cbmxldCBjcmVhdGVfaW50ZXJuYWwgfmNvbnRpbnVlX29uX2Vycm9yIGpvYl9yZXNvdXJjZXMgPVxuICBsZXQgbWF4X2NvbmN1cnJlbnRfam9icyA9IFN0YWNrX29yX2NvdW50ZXIubGVuZ3RoIGpvYl9yZXNvdXJjZXMgaW5cbiAgeyBjb250aW51ZV9vbl9lcnJvclxuICA7IG1heF9jb25jdXJyZW50X2pvYnNcbiAgOyBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgPSBqb2JfcmVzb3VyY2VzXG4gIDsgam9ic193YWl0aW5nX3RvX3N0YXJ0ID0gUXVldWUuY3JlYXRlICgpXG4gIDsgbnVtX2pvYnNfcnVubmluZyA9IDBcbiAgOyBjYXBhY2l0eV9hdmFpbGFibGUgPSBOb25lXG4gIDsgaXNfZGVhZCA9IGZhbHNlXG4gIDsgY2xlYW5zID0gW11cbiAgOyBudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID0gbWF4X2NvbmN1cnJlbnRfam9ic1xuICA7IGNsZWFuZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICB9XG47O1xuXG5sZXQgY3JlYXRlX3dpdGggfmNvbnRpbnVlX29uX2Vycm9yIGpvYl9yZXNvdXJjZXMgPVxuICBjcmVhdGVfaW50ZXJuYWwgfmNvbnRpbnVlX29uX2Vycm9yIChTdGFja19vcl9jb3VudGVyLm9mX2xpc3Qgam9iX3Jlc291cmNlcylcbjs7XG5cbm1vZHVsZSBTZXF1ZW5jZXIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlID8oY29udGludWVfb25fZXJyb3IgPSBmYWxzZSkgYSA9IGNyZWF0ZV93aXRoIH5jb250aW51ZV9vbl9lcnJvciBbIGEgXVxuZW5kXG5cbmxldCBjcmVhdGUgfmNvbnRpbnVlX29uX2Vycm9yIH5tYXhfY29uY3VycmVudF9qb2JzID1cbiAgaWYgbWF4X2NvbmN1cnJlbnRfam9icyA8PSAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaHJvdHRsZS5jcmVhdGUgcmVxdWlyZXMgcG9zaXRpdmUgbWF4X2NvbmN1cnJlbnRfam9icywgYnV0IGdvdFwiXG4gICAgICAgICAgKG1heF9jb25jdXJyZW50X2pvYnMgOiBpbnQpXTtcbiAgY3JlYXRlX2ludGVybmFsXG4gICAgfmNvbnRpbnVlX29uX2Vycm9yXG4gICAgKFN0YWNrX29yX2NvdW50ZXIuY3JlYXRlX2NvdW50ZXIgfmxlbmd0aDptYXhfY29uY3VycmVudF9qb2JzKVxuOztcblxubW9kdWxlIEpvYiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHsgaW50ZXJuYWxfam9iIDogJ2EgSW50ZXJuYWxfam9iLnRcbiAgICA7IHJlc3VsdCA6IFsgYE9rIG9mICdiIHwgYEFib3J0ZWQgfCBgUmFpc2VkIG9mIGV4biBdIERlZmVycmVkLnRcbiAgICB9XG5cbiAgbGV0IHJlc3VsdCB0ID0gdC5yZXN1bHRcbiAgbGV0IGFib3J0IHQgPSBJbnRlcm5hbF9qb2IuYWJvcnQgdC5pbnRlcm5hbF9qb2JcblxuICBsZXQgY3JlYXRlIGYgPVxuICAgIGxldCBpbnRlcm5hbF9qb2IsIHJlc3VsdCA9IEludGVybmFsX2pvYi5jcmVhdGUgZiBpblxuICAgIHsgaW50ZXJuYWxfam9iOyByZXN1bHQgfVxuICA7O1xuZW5kXG5cbmxldCBlbnF1ZXVlJyB0IGYgPVxuICBsZXQgam9iID0gSm9iLmNyZWF0ZSBmIGluXG4gIGlmIHQuaXNfZGVhZFxuICB0aGVuIEpvYi5hYm9ydCBqb2JcbiAgZWxzZSAoXG4gICAgUXVldWUuZW5xdWV1ZSB0LmpvYnNfd2FpdGluZ190b19zdGFydCBqb2IuaW50ZXJuYWxfam9iO1xuICAgIGlmIHQubnVtX2pvYnNfcnVubmluZyA8IHQubWF4X2NvbmN1cnJlbnRfam9icyB0aGVuIHN0YXJ0X2pvYiB0KTtcbiAgSm9iLnJlc3VsdCBqb2Jcbjs7XG5cbmxldCBoYW5kbGVfZW5xdWV1ZV9yZXN1bHQgcmVzdWx0ID1cbiAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgfCBgT2sgYSAtPiBhXG4gIHwgYEFib3J0ZWQgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJ0aHJvdHRsZSBhYm9ydGVkIGpvYlwiXVxuICB8IGBSYWlzZWQgZXhuIC0+IHJhaXNlIGV4blxuOztcblxubGV0IGVucXVldWUgdCBmID0gZW5xdWV1ZScgdCBmID4+fCBoYW5kbGVfZW5xdWV1ZV9yZXN1bHRcblxubGV0IGVucXVldWVfZXhjbHVzaXZlIHQgZiA9XG4gIGxldCBuID0gdC5tYXhfY29uY3VycmVudF9qb2JzIGluXG4gIGlmIEludC4oID49ICkgbiAxXzAwMF8wMDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslc2V4cFxuICAgICAgICBcIltlbnF1ZXVlX2V4Y2x1c2l2ZV0gd2FzIGNhbGxlZCB3aXRoIGEgdmVyeSBsYXJnZSB2YWx1ZSBvZiBcXFxuICAgICAgICAgW21heF9jb25jdXJyZW50X2pvYnNdLiBUaGlzIGRvZXNuJ3Qgd29yay5cIl07XG4gIGxldCBkb25lXyA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGFzc2VydCAobiA+IDApO1xuICBsZXQgZl9wbGFjZWhvbGRlciBfc2xvdCA9IEl2YXIucmVhZCBkb25lXyBpblxuICBmb3IgXyA9IDEgdG8gbiAtIDEgZG9cbiAgICBkb24ndF93YWl0X2ZvciAoZW5xdWV1ZSB0IGZfcGxhY2Vob2xkZXIpXG4gIGRvbmU7XG4gIGxldCVtYXAgcmVzdWx0ID0gZW5xdWV1ZScgdCAoZnVuIF9zbG90IC0+IGYgKCkpIGluXG4gIEl2YXIuZmlsbCBkb25lXyAoKTtcbiAgaGFuZGxlX2VucXVldWVfcmVzdWx0IHJlc3VsdFxuOztcblxubGV0IG1vbmFkX3NlcXVlbmNlX2hvdyB+aG93IH5mID1cbiAgc3RhZ2VcbiAgICAobWF0Y2ggaG93IHdpdGhcbiAgICAgfCBgUGFyYWxsZWwgLT4gZlxuICAgICB8IChgU2VxdWVudGlhbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgIGxldCBtYXhfY29uY3VycmVudF9qb2JzID1cbiAgICAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICAgICB8IGBTZXF1ZW50aWFsIC0+IDFcbiAgICAgICAgIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPiBtYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgaW5cbiAgICAgICBsZXQgdCA9IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3I6ZmFsc2Ugfm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgICAgICBmdW4gYSAtPiBlbnF1ZXVlIHQgKGZ1biAoKSAtPiBmIGEpKVxuOztcblxubGV0IG1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZiA9XG4gIHN0YWdlXG4gICAgKG1hdGNoIGhvdyB3aXRoXG4gICAgIHwgYFBhcmFsbGVsIC0+IGZcbiAgICAgfCAoYFNlcXVlbnRpYWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgICBsZXQgbWF4X2NvbmN1cnJlbnRfam9icyA9XG4gICAgICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgICAgfCBgU2VxdWVudGlhbCAtPiAxXG4gICAgICAgICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT4gbWF4X2NvbmN1cnJlbnRfam9ic1xuICAgICAgIGluXG4gICAgICAgbGV0IHQgPSBjcmVhdGUgfmNvbnRpbnVlX29uX2Vycm9yOmZhbHNlIH5tYXhfY29uY3VycmVudF9qb2JzIGluXG4gICAgICAgZnVuIGExIGEyIC0+IGVucXVldWUgdCAoZnVuICgpIC0+IGYgYTEgYTIpKVxuOztcblxubGV0IHByaW9yX2pvYnNfZG9uZSB0ID1cbiAgKCogV2UgcXVldWUgW3QubWF4X2NvbmN1cnJlbnRfam9ic10gZHVtbXkgam9icyBhbmQgd2hlbiB0aGV5IGFyZSBhbGwgc3RhcnRlZCB3ZSBrbm93XG4gICAgIHRoYXQgYWxsIHByaW9yIGpvYnMgZmluaXNoZWQuICBXZSBtYWtlIHN1cmUgdGhhdCBhbGwgZHVtbXkgam9icyB3YWl0IGZvciB0aGUgbGFzdCBvbmVcbiAgICAgdG8gZ2V0IHN0YXJ0ZWQgYmVmb3JlIGZpbmlzaGluZy4gKilcbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gYWxsX2R1bW15X2pvYnNfcnVubmluZyAtPlxuICAgIGxldCBkdW1teV9qb2JzX3J1bm5pbmcgPSByZWYgMCBpblxuICAgIGZvciBfID0gMSB0byB0Lm1heF9jb25jdXJyZW50X2pvYnMgZG9cbiAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgIChlbnF1ZXVlIHQgKGZ1biBfIC0+XG4gICAgICAgICAgIGluY3IgZHVtbXlfam9ic19ydW5uaW5nO1xuICAgICAgICAgICBpZiAhZHVtbXlfam9ic19ydW5uaW5nID0gdC5tYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgICAgIHRoZW4gSXZhci5maWxsIGFsbF9kdW1teV9qb2JzX3J1bm5pbmcgKCk7XG4gICAgICAgICAgIEl2YXIucmVhZCBhbGxfZHVtbXlfam9ic19ydW5uaW5nKSlcbiAgICBkb25lKVxuOztcblxubGV0IGNhcGFjaXR5X2F2YWlsYWJsZSB0ID1cbiAgaWYgbnVtX2pvYnNfcnVubmluZyB0IDwgbWF4X2NvbmN1cnJlbnRfam9icyB0XG4gIHRoZW4gcmV0dXJuICgpXG4gIGVsc2UgKFxuICAgIG1hdGNoIHQuY2FwYWNpdHlfYXZhaWxhYmxlIHdpdGhcbiAgICB8IFNvbWUgaXZhciAtPiBJdmFyLnJlYWQgaXZhclxuICAgIHwgTm9uZSAtPiBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+IHQuY2FwYWNpdHlfYXZhaWxhYmxlIDwtIFNvbWUgaXZhcikpXG47O1xuIiwib3BlbiEgQ29yZVxuaW5jbHVkZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTBcblxubGV0IGNyZWF0ZSA9IFNjaGVkdWxlcjEuY3JlYXRlX3RpbWVfc291cmNlXG5sZXQgd2FsbF9jbG9jayA9IFNjaGVkdWxlcjEud2FsbF9jbG9ja1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNjaGVkdWxlclxuXG5sZXQgZW5xdWV1ZV9qb2IgZXhlY3V0aW9uX2NvbnRleHQgZiBhID0gZW5xdWV1ZSAodCAoKSkgZXhlY3V0aW9uX2NvbnRleHQgZiBhXG5cbmxldCB0aHJlYWRfc2FmZV9lbnF1ZXVlX2pvYiBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiAodCAoKSkgZXhlY3V0aW9uX2NvbnRleHQgZiBhXG47O1xuXG5sZXQgY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpXG5sZXQgY3ljbGVfY291bnQgKCkgPSBjeWNsZV9jb3VudCAodCAoKSlcbmxldCBjeWNsZV9zdGFydF9ucyAoKSA9IGN5Y2xlX3N0YXJ0ICh0ICgpKVxubGV0IGN5Y2xlX3N0YXJ0ICgpID0gVGltZV9ucy50b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgKGN5Y2xlX3N0YXJ0X25zICgpKVxubGV0IGN5Y2xlX3RpbWVzX25zICgpID0gbWFwX2N5Y2xlX3RpbWVzICh0ICgpKSB+ZjpGbi5pZFxubGV0IGN5Y2xlX3RpbWVzICgpID0gbWFwX2N5Y2xlX3RpbWVzICh0ICgpKSB+ZjpUaW1lX25zLlNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0XG5sZXQgdG90YWxfY3ljbGVfdGltZSAoKSA9IHRvdGFsX2N5Y2xlX3RpbWUgKHQgKCkpXG5sZXQgbGFzdF9jeWNsZV90aW1lICgpID0gbGFzdF9jeWNsZV90aW1lICh0ICgpKVxubGV0IGxvbmdfY3ljbGVzIH5hdF9sZWFzdCA9IGxvbmdfY3ljbGVzICh0ICgpKSB+YXRfbGVhc3RcbmxldCBldmVudF9wcmVjaXNpb25fbnMgKCkgPSBldmVudF9wcmVjaXNpb24gKHQgKCkpXG5sZXQgZXZlbnRfcHJlY2lzaW9uICgpID0gVGltZV9ucy5TcGFuLnRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCAoZXZlbnRfcHJlY2lzaW9uX25zICgpKVxuXG5sZXQgc2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIGkgPVxuICBzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgKHQgKCkpIGlcbjs7XG5cbmxldCBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSAoKSA9IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlICh0ICgpKVxubGV0IHNldF9yZWNvcmRfYmFja3RyYWNlcyBib29sID0gc2V0X3JlY29yZF9iYWNrdHJhY2VzICh0ICgpKSBib29sXG5sZXQgZm9yY2VfY3VycmVudF9jeWNsZV90b19lbmQgKCkgPSBmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCAodCAoKSlcbmxldCB5aWVsZCAoKSA9IHlpZWxkICh0ICgpKVxuXG5sZXQgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gP21heV9yZXR1cm5faW1tZWRpYXRlbHkgKCkgPVxuICB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA/bWF5X3JldHVybl9pbW1lZGlhdGVseSAodCAoKSlcbjs7XG5cbmxldCB5aWVsZF9ldmVyeSB+biA9XG4gIGxldCB5aWVsZF9ldmVyeSA9IFN0YWdlZC51bnN0YWdlICh5aWVsZF9ldmVyeSB+bikgaW5cbiAgbGV0IHQgPSB0ICgpIGluXG4gIHN0YWdlIChmdW4gKCkgLT4geWllbGRfZXZlcnkgdClcbjs7XG5cbmxldCBudW1fam9ic19ydW4gKCkgPSBudW1fam9ic19ydW4gKHQgKCkpXG5sZXQgbnVtX3BlbmRpbmdfam9icyAoKSA9IG51bV9wZW5kaW5nX2pvYnMgKHQgKCkpXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gPSBydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluXG4gIGxldCBsYXN0X2N5Y2xlX251bV9qb2JzICgpID0gbGFzdF9jeWNsZV9udW1fam9icyAodCAoKSlcbiAgbGV0IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCBmID0gcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0ICh0ICgpKSB+ZlxuICBsZXQgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCBmID0gcnVuX2V2ZXJ5X2N5Y2xlX2VuZCAodCAoKSkgfmZcbiAgbGV0IGFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rIH5mID0gYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2sgKHQgKCkpIH5mXG4gIGxldCBhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2sgfmYgPSBhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2sgKHQgKCkpIH5mXG5cbiAgbGV0IHJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rX2V4biBoYW5kbGUgPVxuICAgIHJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rX2V4biAodCAoKSkgaGFuZGxlXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leG4gaGFuZGxlID1cbiAgICByZW1vdmVfZXZlcnlfY3ljbGVfZW5kX2hvb2tfZXhuICh0ICgpKSBoYW5kbGVcbiAgOztcblxuICBsZXQgd2l0aF9leGVjdXRpb25fY29udGV4dCBleGVjdXRpb25fY29udGV4dCBmID1cbiAgICB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSBleGVjdXRpb25fY29udGV4dCB+ZlxuICA7O1xuXG4gIGxldCB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSBleGVjdXRpb25fY29udGV4dCB+ZiB4ID1cbiAgICB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSAodCAoKSkgZXhlY3V0aW9uX2NvbnRleHQgfmYgeFxuICA7O1xuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gU2NoZWR1bGVyXG4iLCIoKiogU2NoZWR1bGUgam9icyB0byBydW4gYXQgYSB0aW1lIGluIHRoZSBmdXR1cmUuXG5cbiAgICBUaGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgaGVhcCBvZiBldmVudHMsIG9uZSBmb3IgZWFjaCBqb2IgdGhhdCBuZWVkcyB0b1xuICAgIHJ1biBpbiB0aGUgZnV0dXJlLiAgVGhlIEFzeW5jIHNjaGVkdWxlciBpcyByZXNwb25zaWJsZSBmb3Igd2FraW5nIHVwIGF0IHRoZSByaWdodCB0aW1lXG4gICAgdG8gcnVuIHRoZSBqb2JzLiAqKVxuXG5vcGVuIENvcmVcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgT3JfdGltZW91dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIFsgYFJlc3VsdCBvZiAnYVxuICAgIHwgYFRpbWVvdXRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgQ2xvY2sgPSBzaWdcbiAgbW9kdWxlIE9yX3RpbWVvdXQgPSBPcl90aW1lb3V0XG5cbiAgbW9kdWxlIFRpbWUgOiBzaWdcbiAgICBtb2R1bGUgU3BhbiA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgZW5kXG5cbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgKCoqIFtydW5fYXQgdGltZSBmIGFdIHJ1bnMgW2YgYV0gYXMgc29vbiBhcyBwb3NzaWJsZSBhZnRlciBbdGltZV0uICBJZiBbdGltZV0gaXMgaW4gdGhlXG4gICAgICBwYXN0LCB0aGVuIFtydW5fYXRdIHdpbGwgaW1tZWRpYXRlbHkgc2NoZWR1bGUgYSBqb2IgW3RdIHRoYXQgd2lsbCBydW4gW2YgYV0uICBJbiBub1xuICAgICAgc2l0dWF0aW9uIHdpbGwgW3J1bl9hdF0gYWN0dWFsbHkgY2FsbCBbZl0gaXRzZWxmLiAgVGhlIGNhbGwgdG8gW2ZdIHdpbGwgYWx3YXlzIGJlIGluXG4gICAgICBhbm90aGVyIGpvYi4gKilcbiAgdmFsIHJ1bl9hdCA6IFRpbWUudCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuXG4gICgqKiBbcnVuX2FmdGVyXSBpcyBsaWtlIFtydW5fYXRdLCBleGNlcHQgdGhhdCBvbmUgc3BlY2lmaWVzIGEgdGltZSBzcGFuIHJhdGhlciB0aGFuIGFuXG4gICAgICBhYnNvbHV0ZSB0aW1lLiAqKVxuICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcblxuICAoKiogW2F0IHRpbWVdIHJldHVybnMgYSBkZWZlcnJlZCBbZF0gdGhhdCB3aWxsIGJlY29tZSBkZXRlcm1pbmVkIGFzIHNvb24gYXMgcG9zc2libGVcbiAgICAgIGFmdGVyIFt0aW1lXS4gKilcbiAgdmFsIGF0IDogVGltZS50IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBbYWZ0ZXJdIGlzIGxpa2UgW2F0XSwgZXhjZXB0IHRoYXQgb25lIHNwZWNpZmllcyBhIHRpbWUgc3BhbiByYXRoZXIgdGhhbiBhbiBhYnNvbHV0ZVxuICAgICAgdGltZS4gKilcbiAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFt3aXRoX3RpbWVvdXQgc3BhbiBkXSByZXR1cm5zIGEgZGVmZXJyZWQgdGhhdCB3aWxsIGJlY29tZSBkZXRlcm1pbmVkIGFmdGVyIGVpdGhlclxuICAgICAgW3NwYW5dIGVsYXBzZXMgb3IgW2RdIGlzIGRldGVybWluZWQsIHJldHVybmluZyBlaXRoZXIgW2BUaW1lb3V0XSBvciBbYFJlc3VsdF1cbiAgICAgIGRlcGVuZGluZyBvbiB3aGljaCBvbmUgc3VjY2VlZGVkIGZpcnN0LiAgQXQgdGhlIHRpbWUgdGhlIHJldHVybmVkIGRlZmVycmVkIGJlY29tZXNcbiAgICAgIGRldGVybWluZWQsIGJvdGggdGhpbmdzIG1heSBoYXZlIGhhcHBlbmVkLCBpbiB3aGljaCBjYXNlIFtgUmVzdWx0XSBpcyBnaXZlblxuICAgICAgcHJlZmVyZW5jZS4gKilcbiAgdmFsIHdpdGhfdGltZW91dCA6IFRpbWUuU3Bhbi50IC0+ICdhIERlZmVycmVkLnQgLT4gJ2EgT3JfdGltZW91dC50IERlZmVycmVkLnRcblxuICAoKiogRXZlbnRzIHByb3ZpZGUgdmFyaWFudHMgb2YgW3J1bl9hdF0gYW5kIFtydW5fYWZ0ZXJdIHdpdGggdGhlIGFiaWxpdHkgdG8gYWJvcnQgb3JcbiAgICAgIHJlc2NoZWR1bGUgYW4gZXZlbnQgdGhhdCBoYXNuJ3QgeWV0IGhhcHBlbmVkLiAgT25jZSBhbiBldmVudCBoYXBwZW5zIG9yIGlzIGFib3J0ZWQsXG4gICAgICBBc3luYyBkb2Vzbid0IHVzZSBhbnkgc3BhY2UgZm9yIHRyYWNraW5nIGl0LiAqKVxuICBtb2R1bGUgRXZlbnQgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2gpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlIHRfdW5pdCA9ICh1bml0LCB1bml0KSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgc2NoZWR1bGVkX2F0IDogKF8sIF8pIHQgLT4gVGltZS50XG5cbiAgICBtb2R1bGUgU3RhdHVzIDogc2lnXG4gICAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgICB8IEFib3J0ZWQgb2YgJ2FcbiAgICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgICAgICB8IFNjaGVkdWxlZF9hdCBvZiBUaW1lLnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICAoKiogSWYgW3N0YXR1c10gcmV0dXJucyBbU2NoZWR1bGVkX2F0IHRpbWVdLCBpdCBpcyBwb3NzaWJsZSB0aGF0IFt0aW1lIDwgVGltZS5ub3cgKCldXG4gICAgICAgIGlmIEFzeW5jJ3Mgc2NoZWR1bGVyIGhhc24ndCB5ZXQgZ290dGVuIHRoZSBjaGFuY2UgdG8gdXBkYXRlIGl0cyBjbG9jaywgZS5nLiwgZHVlXG4gICAgICAgIHRvIHVzZXIgam9icyBydW5uaW5nLiAqKVxuICAgIHZhbCBzdGF0dXMgOiAoJ2EsICdoKSB0IC0+ICgnYSwgJ2gpIFN0YXR1cy50XG5cbiAgICAoKiogTGV0IFt0ID0gcnVuX2F0IHRpbWUgZiB6XS4gIEF0IFt0aW1lXSwgdGhpcyBydW5zIFtmIHpdIGFuZCB0cmFuc2l0aW9ucyBbc3RhdHVzIHRdXG4gICAgICAgIHRvIFtIYXBwZW5lZCBoXSwgd2hlcmUgW2hdIGlzIHJlc3VsdCBvZiBbZiB6XS5cblxuICAgICAgICBNb3JlIHByZWNpc2VseSwgYXQgW3RpbWVdLCBwcm92aWRlZCBbYWJvcnQgdCBhXSBoYXMgbm90IHByZXZpb3VzbHkgYmVlbiBjYWxsZWQsXG4gICAgICAgIHRoaXMgd2lsbCBjYWxsIFtmIHpdLCB3aXRoIHRoZSBndWFyYW50ZWUgdGhhdCBbc3RhdHVzIHQgPSBTY2hlZHVsZWRfYXQgdGltZV0uICBJZlxuICAgICAgICBbZiB6XSByZXR1cm5zIFtoXSBhbmQgZGlkIG5vdCBjYWxsIFthYm9ydCB0IGFdLCB0aGVuIFtzdGF0dXMgdF0gYmVjb21lcyBbSGFwcGVuZWRcbiAgICAgICAgaF0uICBJZiBbZiB6XSBjYWxscyBbYWJvcnQgdCBhXSwgdGhlbiB0aGUgcmVzdWx0IG9mIFtmXSBpcyBpZ25vcmVkLCBhbmQgW3N0YXR1cyB0XVxuICAgICAgICBpcyBbQWJvcnRlZCBhXS5cblxuICAgICAgICBJZiBbZiB6XSByYWlzZXMsIHRoZW4gW3N0YXR1cyB0XSBkb2VzIG5vdCB0cmFuc2l0aW9uIGFuZCByZW1haW5zIFtTY2hlZHVsZWRfYXRcbiAgICAgICAgdGltZV0sIGFuZCB0aGUgZXhjZXB0aW9uIGlzIHNlbnQgdG8gdGhlIG1vbml0b3IgaW4gZWZmZWN0IHdoZW4gW3J1bl9hdF0gd2FzXG4gICAgICAgIGNhbGxlZC4gKilcbiAgICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgneiAtPiAnaCkgLT4gJ3ogLT4gKF8sICdoKSB0XG5cbiAgICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcblxuICAgIG1vZHVsZSBBYm9ydF9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5BYm9ydF9yZXN1bHRcblxuICAgICgqKiBbYWJvcnQgdF0gY2hhbmdlcyBbc3RhdHVzIHRdIHRvIFtBYm9ydGVkXSBhbmQgcmV0dXJucyBbT2tdLCB1bmxlc3MgW3RdXG4gICAgICAgIHByZXZpb3VzbHkgaGFwcGVuZWQgb3Igd2FzIHByZXZpb3VzbHkgYWJvcnRlZC4gKilcbiAgICB2YWwgYWJvcnQgOiAoJ2EsICdoKSB0IC0+ICdhIC0+ICgnYSwgJ2gpIEFib3J0X3Jlc3VsdC50XG5cbiAgICAoKiogW2Fib3J0X2V4biB0IGFdIHJldHVybnMgW3VuaXRdIGlmIFthYm9ydCB0IGEgPSBgT2tdLCBhbmQgb3RoZXJ3aXNlIHJhaXNlcy4gKilcbiAgICB2YWwgYWJvcnRfZXhuIDogKCdhLCAnaCkgdCAtPiAnYSAtPiB1bml0XG5cbiAgICAoKiogW2Fib3J0X2lmX3Bvc3NpYmxlIHQgYSA9IGlnbm9yZSAoYWJvcnQgdCBhKV0uICopXG4gICAgdmFsIGFib3J0X2lmX3Bvc3NpYmxlIDogKCdhLCBfKSB0IC0+ICdhIC0+IHVuaXRcblxuICAgIG1vZHVsZSBGaXJlZCA9IFRpbWVfc291cmNlLkV2ZW50LkZpcmVkXG5cbiAgICB2YWwgZmlyZWQgOiAoJ2EsICdoKSB0IC0+ICgnYSwgJ2gpIEZpcmVkLnQgRGVmZXJyZWQudFxuXG4gICAgbW9kdWxlIFJlc2NoZWR1bGVfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuUmVzY2hlZHVsZV9yZXN1bHRcblxuICAgICgqKiBbcmVzY2hlZHVsZV9hdCB0XSBhbmQgW3Jlc2NoZWR1bGVfYWZ0ZXIgdF0gY2hhbmdlIHRoZSB0aW1lIHRoYXQgW3RdIHdpbGwgZmlyZSwgaWZcbiAgICAgICAgcG9zc2libGUsIGFuZCBpZiBub3QsIGdpdmUgYSByZWFzb24gd2h5LiAgTGlrZSBbcnVuX2F0XSwgaWYgdGhlIHJlcXVlc3RlZCB0aW1lIGlzXG4gICAgICAgIGluIHRoZSBwYXN0LCB0aGUgZXZlbnQgd2lsbCBiZSBzY2hlZHVsZWQgdG8gcnVuIGltbWVkaWF0ZWx5LiAgSWYgW3Jlc2NoZWR1bGVfYXQgdFxuICAgICAgICB0aW1lID0gT2tdLCB0aGVuIHN1YnNlcXVlbnRseSBbc2NoZWR1bGVkX2F0IHQgPSB0aW1lXS4gICopXG4gICAgdmFsIHJlc2NoZWR1bGVfYXQgOiAoJ2EsICdoKSB0IC0+IFRpbWUudCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG5cbiAgICB2YWwgcmVzY2hlZHVsZV9hZnRlciA6ICgnYSwgJ2gpIHQgLT4gVGltZS5TcGFuLnQgLT4gKCdhLCAnaCkgUmVzY2hlZHVsZV9yZXN1bHQudFxuXG4gICAgKCoqIFthdCB0aW1lXSAgICBpcyBbcnVuX2F0ICAgIHRpbWUgaWdub3JlICgpXS5cbiAgICAgICAgW2FmdGVyIHRpbWVdIGlzIFtydW5fYWZ0ZXIgdGltZSBpZ25vcmUgKCldLlxuXG4gICAgICAgIFlvdSBzaG91bGQgZ2VuZXJhbGx5IHByZWZlciB0byB1c2UgdGhlIFtydW5fKl0gZnVuY3Rpb25zLCB3aGljaCBhbGxvdyB5b3UgdG9cbiAgICAgICAgc3luY2hyb25vdXNseSB1cGRhdGUgc3RhdGUgdmlhIGEgdXNlci1zdXBwbGllZCBmdW5jdGlvbiB3aGVuIHRoZSBldmVudFxuICAgICAgICB0cmFuc2l0aW9ucyB0byBbSGFwcGVuZWRdLiAgVGhhdCBpcywgdGhlcmUgaXMgYW4gaW1wb3J0YW50IGRpZmZlcmVuY2UgYmV0d2VlbjpcblxuICAgICAgICB7W1xuICAgICAgICAgIGxldCB0ID0gcnVuX2F0IHRpbWUgZiAoKSBdfVxuXG4gICAgICAgIGFuZDpcblxuICAgICAgICB7W1xuICAgICAgICAgIGxldCB0ID0gYXQgdGltZSBpblxuICAgICAgICAgIGZpcmVkIHRcbiAgICAgICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgICAgICB8IEhhcHBlbmVkICgpIC0+IGYgKClcbiAgICAgICAgICB8IEFib3J0ZWQgKCkgLT4gKCkgXX1cblxuICAgICAgICBXaXRoIFtydW5fYXRdLCBpZiBbc3RhdHVzIHQgPSBIYXBwZW5lZF0sIG9uZSBrbm93cyB0aGF0IFtmXSBoYXMgcnVuLiAgV2l0aCBbYXRdXG4gICAgICAgIGFuZCBbZmlyZWRdLCBvbmUgZG9lcyBub3Qga25vdyB3aGV0aGVyIFtmXSBoYXMgeWV0IHJ1bjsgaXQgbWF5IHN0aWxsIGJlIHNjaGVkdWxlZFxuICAgICAgICB0byBydW4uICBUaHVzLCB3aXRoIFthdF0gYW5kIFtmaXJlZF0sIGl0IGlzIGVhc3kgdG8gaW50cm9kdWNlIGEgcmFjZS4gIEZvclxuICAgICAgICBleGFtcGxlLCBjb25zaWRlciB0aGVzZSB0d28gY29kZSBzbmlwcGV0czpcblxuICAgICAgICB7W1xuICAgICAgICAgIGxldCB0ID0gRXZlbnQuYWZ0ZXIgKHNlYyAyLikgaW5cbiAgICAgICAgICB1cG9uIChFdmVudC5maXJlZCB0KSAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgQWJvcnRlZCAoKSAtPiAoKVxuICAgICAgICAgICAgfCBIYXBwZW5lZCAoKSAtPiBwcmludGYgXCJUaW1lciBmaXJlZFwiKTtcbiAgICAgICAgICB1cG9uIGRlZmVycmVkX2V2ZW50IChmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEV2ZW50LmFib3J0IHQgKCkgd2l0aFxuICAgICAgICAgICAgfCBPayAtPiBwcmludGYgXCJFdmVudCBvY2N1cnJlZFwiXG4gICAgICAgICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCAoKSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCAoKSAtPiBwcmludGYgXCJFdmVudCBvY2N1cnJlZCBhZnRlciB0aW1lciBmaXJlZFwiKTsgXX1cblxuICAgICAgICB7W1xuICAgICAgICAgIGxldCB0ID0gRXZlbnQucnVuX2FmdGVyIChzZWMgMi4pIHByaW50ZiBcIlRpbWVyIGZpcmVkXCIgaW5cbiAgICAgICAgICB1cG9uIGRlZmVycmVkX2V2ZW50IChmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEV2ZW50LmFib3J0IHQgKCkgd2l0aFxuICAgICAgICAgICAgfCBPayAtPiBwcmludGYgXCJFdmVudCBvY2N1cnJlZFwiXG4gICAgICAgICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCAoKSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCAoKSAtPiBwcmludGYgXCJFdmVudCBvY2N1cnJlZCBhZnRlciB0aW1lciBmaXJlZFwiKTsgXX1cblxuICAgICAgICBJbiBib3RoIHNuaXBwZXRzLCBpZiBbRXZlbnQuYWJvcnRdIHJldHVybnMgW09rXSwgXCJUaW1lciBmaXJlZFwiIGlzIG5ldmVyIHByaW50ZWQuXG4gICAgICAgIEhvd2V2ZXIsIHRoZSBmaXJzdCBzbmlwcGV0IG1pZ2h0IHByaW50IFwiRXZlbnQgb2NjdXJyZWQgYWZ0ZXIgdGltZXIgZmlyZWRcIiBhbmQgdGhlblxuICAgICAgICBcIlRpbWVyIGZpcmVkXCIuICBUaGlzIGNvbmZ1c2VkIG9yZGVyaW5nIGNhbm5vdCBoYXBwZW4gd2l0aCBbRXZlbnQucnVuX2FmdGVyXS4gKilcbiAgICB2YWwgYXQgOiBUaW1lLnQgLT4gKF8sIHVuaXQpIHRcblxuICAgIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IChfLCB1bml0KSB0XG4gIGVuZFxuXG4gICgqKiBbYXRfdmFyeWluZ19pbnRlcnZhbHMgZiA/c3RvcF0gcmV0dXJucyBhIHN0cmVhbSB3aG9zZSBuZXh0IGVsZW1lbnQgYmVjb21lc1xuICAgICAgZGV0ZXJtaW5lZCBieSBjYWxsaW5nIFtmICgpXSBhbmQgd2FpdGluZyBmb3IgdGhhdCBhbW91bnQgb2YgdGltZSwgYW5kIHRoZW4gbG9vcGluZ1xuICAgICAgdG8gZGV0ZXJtaW5lIHN1YnNlcXVlbnQgZWxlbWVudHMuICBUaGUgc3RyZWFtIHdpbGwgZW5kIGFmdGVyIFtzdG9wXSBiZWNvbWVzXG4gICAgICBkZXRlcm1pbmVkLiAqKVxuICB2YWwgYXRfdmFyeWluZ19pbnRlcnZhbHNcbiAgICA6ICA/c3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiAodW5pdCAtPiBUaW1lLlNwYW4udClcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG5cbiAgKCoqIFthdF9pbnRlcnZhbHMgaW50ZXJ2YWwgP3N0YXJ0ID9zdG9wXSByZXR1cm5zIGEgc3RyZWFtIHdob3NlIGVsZW1lbnRzIHdpbGwgYmVjb21lXG4gICAgICBkZXRlcm1pbmVkIGF0IG5vbm5lZ2F0aXZlIGludGVnZXIgbXVsdGlwbGVzIG9mIFtpbnRlcnZhbF0gYWZ0ZXIgdGhlIFtzdGFydF0gdGltZSxcbiAgICAgIHVudGlsIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQ6XG5cbiAgICAgIHt2XG4gICAgICAgIHN0YXJ0ICsgMCAqIGludGVydmFsXG4gICAgICAgIHN0YXJ0ICsgMSAqIGludGVydmFsXG4gICAgICAgIHN0YXJ0ICsgMiAqIGludGVydmFsXG4gICAgICAgIHN0YXJ0ICsgMyAqIGludGVydmFsXG4gICAgICAgIC4uLlxuICAgICAgdn1cblxuICAgICAgTm90ZSB0aGF0IG9ubHkgZWxlbWVudHMgdGhhdCBhcmUgc3RyaWN0bHkgaW4gdGhlIGZ1dHVyZSBldmVyIGJlY29tZSBkZXRlcm1pbmVkLlxuICAgICAgSW4gcGFydGljdWxhciwgaWYgW3N0YXJ0XSBpcyBub3QgaW4gdGhlIGZ1dHVyZSwgb3IgW3N0YXJ0XSBpcyBub3QgcHJvdmlkZWQsXG4gICAgICB0aGVuIHRoZXJlIHdpbGwgYmUgbm8gZWxlbWVudCBiZWZvcmUgdGhlIFtpbnRlcnZhbF0gaGFzIHBhc3NlZC5cblxuICAgICAgSWYgdGhlIGludGVydmFsIGlzIHRvbyBzbWFsbCBvciB0aGUgQ1BVIGlzIHRvbyBsb2FkZWQsIFthdF9pbnRlcnZhbHNdIHdpbGwgc2tpcFxuICAgICAgdW50aWwgdGhlIG5leHQgdXBjb21pbmcgbXVsdGlwbGUgb2YgW2ludGVydmFsXSBhZnRlciBbc3RhcnRdLiAqKVxuICB2YWwgYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudFxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gdW5pdCBBc3luY19zdHJlYW0udFxuXG4gICgqKiBbZXZlcnknID9zdGFydCA/c3RvcCBzcGFuIGZdIHJ1bnMgW2YgKCldIGV2ZXJ5IFtzcGFuXSBhbW91bnQgb2YgdGltZSBzdGFydGluZyB3aGVuXG4gICAgICBbc3RhcnRdIGJlY29tZXMgZGV0ZXJtaW5lZCBhbmQgc3RvcHBpbmcgd2hlbiBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkLiAgW2V2ZXJ5J11cbiAgICAgIHdhaXRzIHVudGlsIHRoZSBvdXRjb21lIG9mIFtmICgpXSBiZWNvbWVzIGRldGVybWluZWQgYmVmb3JlIHdhaXRpbmcgZm9yIHRoZSBuZXh0XG4gICAgICBbc3Bhbl0uXG5cbiAgICAgIEl0IGlzIGd1YXJhbnRlZWQgdGhhdCBpZiBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkLCBldmVuIGR1cmluZyBldmFsdWF0aW9uIG9mIFtmXSxcbiAgICAgIHRoZW4gW2ZdIHdpbGwgbm90IGJlIGNhbGxlZCBhZ2FpbiBieSBhIHN1YnNlcXVlbnQgaXRlcmF0aW9uIG9mIHRoZSBsb29wLlxuXG4gICAgICBJdCBpcyBhbiBlcnJvciBmb3IgW3NwYW5dIHRvIGJlIG5vbnBvc2l0aXZlLlxuXG4gICAgICBbY29udGludWVfb25fZXJyb3JdIGNvbnRyb2xzIHdoYXQgc2hvdWxkIGhhcHBlbiBpZiBbZl0gcmFpc2VzIGFuIGV4Y2VwdGlvbi5cbiAgICAgIFdpdGggW35jb250aW51ZV9vbl9lcnJvcjpmYWxzZV0sIGl0ZXJhdGlvbiBvbmx5IGNvbnRpbnVlcyBpZiBbZl0gc3VjY2Vzc2Z1bGx5XG4gICAgICByZXR1cm5zIGEgZGVmZXJyZWQgYW5kIHRoYXQgZGVmZXJyZWQgaXMgZGV0ZXJtaW5lZC5cbiAgICAgIFdpdGggW35jb250aW51ZV9vbl9lcnJvcjp0cnVlXSwgaXRlcmF0aW9uIGFsc28gY29udGludWVzIGlmIFtmXSByYWlzZXMgYW4gZXhjZXB0aW9uLlxuICAgICAgSWYgW2ZdIHJhaXNlcyBhbiBleGNlcHRpb24gYXN5bmNocm9ub3VzbHksIHRoaXMgbWF5IGNhdXNlIHVzIHRvIHByb2NlZWQgd2l0aCB0aGVcbiAgICAgIG5leHQgaXRlcmF0aW9uIHdoaWxlIHRoZSBwcmV2aW91cyBjYWxsIHRvIFtmXSBpcyBzdGlsbCBydW5uaW5nLlxuXG4gICAgICBFeGNlcHRpb25zIHJhaXNlZCBieSBbZl0gYXJlIGFsd2F5cyBzZW50IHRvIHRoZSBtb25pdG9yIGluIGVmZmVjdCB3aGVuIFtldmVyeSddIHdhc1xuICAgICAgY2FsbGVkLCBldmVuIHdpdGggW35jb250aW51ZV9vbl9lcnJvcjp0cnVlXS5cblxuICAgICAgSWYgW2ZpbmlzaGVkXSBpcyBzdXBwbGllZCwgW2V2ZXJ5J10gd2lsbCBmaWxsIGl0IG9uY2UgYWxsIG9mIHRoZSBmb2xsb3dpbmcgYmVjb21lXG4gICAgICBkZXRlcm1pbmVkOiBbc3RhcnRdLCBbc3RvcF0sIGFuZCB0aGUgb3V0Y29tZSBvZiB0aGUgZmluYWwgY2FsbCB0byBbZl0uICopXG4gIHZhbCBldmVyeSdcbiAgICA6ICA/c3RhcnQ6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtyZXR1cm4gKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiA/ZmluaXNoZWQ6dW5pdCBJdmFyLnRcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtldmVyeSA/c3RhcnQgP3N0b3Agc3BhbiBmXSBpc1xuICAgICAgW2V2ZXJ5JyA/c3RhcnQgP3N0b3Agc3BhbiAoZnVuICgpIC0+IGYgKCk7IHJldHVybiAoKSldLiAqKVxuICB2YWwgZXZlcnlcbiAgICA6ICA/c3RhcnQ6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtyZXR1cm4gKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wIHNwYW4gZl0gcnVucyBbZigpXSBhdCBpbmNyZW1lbnRzIG9mIFtzdGFydCArIGkgKlxuICAgICAgc3Bhbl0gZm9yIG5vbm5lZ2F0aXZlIGludGVnZXJzIFtpXSwgdW50aWwgW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZC5cbiAgICAgIElmIHRoZSByZXN1bHQgb2YgW2ZdIGlzIG5vdCBkZXRlcm1pbmVkIGZhc3QgZW5vdWdoIHRoZW4gdGhlIG5leHQgaW50ZXJ2YWwocylcbiAgICAgIGFyZSBza2lwcGVkIHNvIHRoYXQgdGhlcmUgYXJlIG5ldmVyIG11bHRpcGxlIGNvbmN1cnJlbnQgaW52b2NhdGlvbnMgb2YgW2ZdIGluXG4gICAgICBmbGlnaHQuXG5cbiAgICAgIEV4Y2VwdGlvbnMgcmFpc2VkIGJ5IFtmXSBhcmUgYWx3YXlzIHNlbnQgdG8gbW9uaXRvciBpbiBlZmZlY3Qgd2hlblxuICAgICAgW3J1bl9hdF9pbnRlcnZhbHMnXSB3YXMgY2FsbGVkLCBldmVuIHdpdGggW35jb250aW51ZV9vbl9lcnJvcjp0cnVlXS4gKilcbiAgdmFsIHJ1bl9hdF9pbnRlcnZhbHMnXG4gICAgOiAgP3N0YXJ0OlRpbWUudCAoKiogZGVmYXVsdCBpcyBbVGltZS5ub3cgKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3Igc3BhbiBmXSBpcyBlcXVpdmFsZW50IHRvOlxuXG4gICAgICB7W1xuICAgICAgICBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHNwYW5cbiAgICAgICAgICAoZnVuICgpIC0+IGYgKCk7IHJldHVybiAoKSkgXX0gKilcbiAgdmFsIHJ1bl9hdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtkdXJhdGlvbl9vZiBmXSBpbnZva2VzIFtmICgpXSBhbmQgbWVhc3VyZXMgaG93IGxvbmcgaXQgdGFrZXMgZnJvbSB0aGUgaW52b2NhdGlvblxuICAgICAgdG8gYWZ0ZXIgdGhlIGRlZmVycmVkIGlzIGRldGVybWluZWQuXG5cbiAgICAgIE5vdGUgdGhhdCB0aGUgbWVhc3VyZW1lbnQgaXMgbm90IGV4YWN0OyBiZWNhdXNlIGl0IGludm9sdmVzIGFuIGFkZGl0aW9uYWwgbWFwIG9uIHRoZVxuICAgICAgZGVmZXJyZWQsIHRoZSB0aW1pbmcgYWxzbyBpbmNsdWRlcyB0aGUgZHVyYXRpb24gb2Ygam9icyBpbiB0aGUgam9iIHF1ZXVlIHdoZW4gW2YgKCldXG4gICAgICBpcyBkZXRlcm1pbmVkLiAqKVxuICB2YWwgZHVyYXRpb25fb2YgOiAodW5pdCAtPiAnYSBEZWZlcnJlZC50KSAtPiAoJ2EgKiBUaW1lLlNwYW4udCkgRGVmZXJyZWQudFxuZW5kXG5cbigqKiBbQ2xvY2tfZGVwcmVjYXRlZF0gaXMgdXNlZCBpbiBbUmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZV0gdG8gY3JlYXRlIGEgY2xvY2tcbiAgICBtb2R1bGUgaW4gd2hpY2ggYWxsIGZ1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZC4gKilcbm1vZHVsZSB0eXBlIENsb2NrX2RlcHJlY2F0ZWQgPSBzaWdcbiAgbW9kdWxlIE9yX3RpbWVvdXQgPSBPcl90aW1lb3V0XG5cbiAgbW9kdWxlIFRpbWUgOiBzaWdcbiAgICBtb2R1bGUgU3BhbiA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgZW5kXG5cbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgdmFsIHJ1bl9hdCA6IFRpbWUudCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHJ1bl9hZnRlciA6IFRpbWUuU3Bhbi50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgYXQgOiBUaW1lLnQgLT4gdW5pdCBEZWZlcnJlZC50IFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiB1bml0IERlZmVycmVkLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCB3aXRoX3RpbWVvdXQgOiBUaW1lLlNwYW4udCAtPiAnYSBEZWZlcnJlZC50IC0+ICdhIE9yX3RpbWVvdXQudCBEZWZlcnJlZC50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICBtb2R1bGUgRXZlbnQgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2gpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlIHRfdW5pdCA9ICh1bml0LCB1bml0KSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB2YWwgaW52YXJpYW50IDogJ2EgSW52YXJpYW50LnQgLT4gJ2IgSW52YXJpYW50LnQgLT4gKCdhLCAnYikgdCBJbnZhcmlhbnQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBzY2hlZHVsZWRfYXQgOiAoXywgXykgdCAtPiBUaW1lLnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgU3RhdHVzIDogc2lnXG4gICAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgICB8IEFib3J0ZWQgb2YgJ2FcbiAgICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgICAgICB8IFNjaGVkdWxlZF9hdCBvZiBUaW1lLnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICB2YWwgc3RhdHVzIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBTdGF0dXMudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgQWJvcnRfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuQWJvcnRfcmVzdWx0XG5cbiAgICB2YWwgYWJvcnQgOiAoJ2EsICdoKSB0IC0+ICdhIC0+ICgnYSwgJ2gpIEFib3J0X3Jlc3VsdC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGFib3J0X2V4biA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gdW5pdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhYm9ydF9pZl9wb3NzaWJsZSA6ICgnYSwgXykgdCAtPiAnYSAtPiB1bml0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIEZpcmVkID0gVGltZV9zb3VyY2UuRXZlbnQuRmlyZWRcblxuICAgIHZhbCBmaXJlZCA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgRmlyZWQudCBEZWZlcnJlZC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIFJlc2NoZWR1bGVfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuUmVzY2hlZHVsZV9yZXN1bHRcblxuICAgIHZhbCByZXNjaGVkdWxlX2F0IDogKCdhLCAnaCkgdCAtPiBUaW1lLnQgLT4gKCdhLCAnaCkgUmVzY2hlZHVsZV9yZXN1bHQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCByZXNjaGVkdWxlX2FmdGVyIDogKCdhLCAnaCkgdCAtPiBUaW1lLlNwYW4udCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGF0IDogVGltZS50IC0+IChfLCB1bml0KSB0IFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IChfLCB1bml0KSB0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuICBlbmRcblxuICB2YWwgYXRfdmFyeWluZ19pbnRlcnZhbHNcbiAgICA6ICA/c3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiAodW5pdCAtPiBUaW1lLlNwYW4udClcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudFxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gdW5pdCBBc3luY19zdHJlYW0udFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGV2ZXJ5J1xuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+ID9maW5pc2hlZDp1bml0IEl2YXIudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBldmVyeVxuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgcnVuX2F0X2ludGVydmFscydcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudCAoKiogZGVmYXVsdCBpcyBbVGltZS5ub3cgKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGR1cmF0aW9uX29mIDogKHVuaXQgLT4gJ2EgRGVmZXJyZWQudCkgLT4gKCdhICogVGltZS5TcGFuLnQpIERlZmVycmVkLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuZW5kXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIChcbnN0cnVjdFxuICBbQEBAd2FybmluZyBcIi0zXCJdXG5cbiAgbW9kdWxlIF8gKEMgOiBDbG9jaykgOiBDbG9ja19kZXByZWNhdGVkID0gQ1xuXG4gIG1vZHVsZSBfIChDIDogQ2xvY2tfZGVwcmVjYXRlZCkgOiBDbG9jayA9IENcbmVuZCA6XG5zaWcgZW5kKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIENsb2NrID0gQ2xvY2tfaW50Zi5DbG9ja1xubW9kdWxlIHR5cGUgQ2xvY2tfZGVwcmVjYXRlZCA9IENsb2NrX2ludGYuQ2xvY2tfZGVwcmVjYXRlZFxuXG5tb2R1bGUgT3JfdGltZW91dCA9IENsb2NrX2ludGYuT3JfdGltZW91dFxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcblxubGV0IHRpbWVfc291cmNlICgpID0gKFNjaGVkdWxlci50ICgpKS50aW1lX3NvdXJjZSB8PiBUaW1lX3NvdXJjZS5vZl9zeW5jaHJvbm91c1xubGV0IGFmdGVyIHNwYW4gPSBUaW1lX3NvdXJjZS5hZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW5cbmxldCBhdCB0aW1lID0gVGltZV9zb3VyY2UuYXQgKHRpbWVfc291cmNlICgpKSB0aW1lXG5cbmxldCBhdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCBjb21wdXRlX3NwYW4gPVxuICBUaW1lX3NvdXJjZS5hdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCAodGltZV9zb3VyY2UgKCkpIGNvbXB1dGVfc3BhblxuOztcblxubGV0IGF0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgaW50ZXJ2YWwgPVxuICBUaW1lX3NvdXJjZS5hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wICh0aW1lX3NvdXJjZSAoKSkgaW50ZXJ2YWxcbjs7XG5cbmxldCBldmVyeScgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgc3BhbiBmID1cbiAgVGltZV9zb3VyY2UuZXZlcnknID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmXG47O1xuXG5sZXQgZXZlcnkgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBzcGFuIGYgPVxuICBUaW1lX3NvdXJjZS5ldmVyeSA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmXG47O1xuXG5sZXQgcnVuX2FmdGVyIHNwYW4gZiBhID0gVGltZV9zb3VyY2UucnVuX2FmdGVyICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmIGFcbmxldCBydW5fYXQgdGltZSBmIGEgPSBUaW1lX3NvdXJjZS5ydW5fYXQgKHRpbWVfc291cmNlICgpKSB0aW1lIGYgYVxuXG5sZXQgcnVuX2F0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIGludGVydmFsIGYgPVxuICBUaW1lX3NvdXJjZS5ydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgKHRpbWVfc291cmNlICgpKSBpbnRlcnZhbCBmXG47O1xuXG5sZXQgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBpbnRlcnZhbCBmID1cbiAgVGltZV9zb3VyY2UucnVuX2F0X2ludGVydmFscydcbiAgICA/c3RhcnRcbiAgICA/c3RvcFxuICAgID9jb250aW51ZV9vbl9lcnJvclxuICAgICh0aW1lX3NvdXJjZSAoKSlcbiAgICBpbnRlcnZhbFxuICAgIGZcbjs7XG5cbmxldCB3aXRoX3RpbWVvdXQgc3BhbiBkID0gVGltZV9zb3VyY2Uud2l0aF90aW1lb3V0ICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBkXG5sZXQgZHVyYXRpb25fb2YgZiA9IFRpbWVfc291cmNlLmR1cmF0aW9uX29mICh0aW1lX3NvdXJjZSAoKSkgZlxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX3NvdXJjZS5FdmVudFxuXG4gIGxldCBhZnRlciBzcGFuID0gYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuXG4gIGxldCBydW5fYWZ0ZXIgc3BhbiBmIGEgPSBydW5fYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuIGYgYVxuICBsZXQgYXQgdGltZSA9IGF0ICh0aW1lX3NvdXJjZSAoKSkgdGltZVxuICBsZXQgcnVuX2F0IHRpbWUgZiB6ID0gcnVuX2F0ICh0aW1lX3NvdXJjZSAoKSkgdGltZSBmIHpcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIGkgYiA9XG4gICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRcbiAgICAgIHRoZW4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICBlbHNlIGYgaSBiIHQuKGkpID4+PiBmdW4gYiAtPiBsb29wIChpICsgMSkgYlxuICAgIGluXG4gICAgbG9vcCAwIGluaXQpXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG5sZXQgc2VxbWFwaSB0IH5mID1cbiAgbGV0JW1hcCBicyA9IGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT4gZiBpIGEgPj58IGZ1biBiIC0+IGIgOjogYnMpIGluXG4gIEFycmF5Lm9mX2xpc3QgKENvcmUuTGlzdC5yZXYgYnMpXG47O1xuXG5sZXQgYWxsIGRzID0gc2VxbWFwaSBkcyB+ZjooZnVuIF8geCAtPiB4KVxubGV0IGFsbF91bml0IGRzID0gRGVmZXJyZWQuaWdub3JlX20gKGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpKVxuXG5sZXQgaXRlcmkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgYWxsX3VuaXQgKEFycmF5Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbjs7XG5cbmxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgIGFsbCAoQXJyYXkubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbjs7XG5cbmxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYm9vbHMgPSBtYXBpIHQgfmhvdyB+ZiBpblxuICBBcnJheS5vZl9saXN0X3JldlxuICAgIChBcnJheS5mb2xkMl9leG4gdCBib29scyB+aW5pdDpbXSB+ZjooZnVuIGFjIHggYiAtPiBpZiBiIHRoZW4geCA6OiBhYyBlbHNlIGFjKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgQXJyYXkuZmlsdGVyX29wdFxuXG5sZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID1cbiAgbGV0JW1hcCB0ID0gbWFwaSB0IH5ob3cgfmYgaW5cbiAgQXJyYXkuY29uY2F0IChBcnJheS50b19saXN0IHQpXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRcbiAgICB0aGVuIHJldHVybiBOb25lXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCViaW5kIGYgaSB0LihpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXV4IChpICsgMSlcbiAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gIGluXG4gIGF1eCAwXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gXyBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIGVsdCBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiB0cnVlXG4gIHwgTm9uZSAtPiBmYWxzZVxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBub3QgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiBmYWxzZVxuICB8IE5vbmUgLT4gdHJ1ZVxuOztcblxubGV0IGl0ZXIgfmhvdyB0IH5mID0gaXRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgfmhvdyB0IH5mID0gZmlsdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGNvbmNhdF9tYXAgfmhvdyB0IH5mID0gY29uY2F0X21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChBcnJheS5pbml0IG4gfmY6Rm4uaWQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBpIGIgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgfCB4IDo6IHhzIC0+IGYgaSBiIHggPj4+IGZ1biBiIC0+IGxvb3AgeHMgKGkgKyAxKSBiXG4gICAgaW5cbiAgICBsb29wIHQgMCBpbml0KVxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBfIGEgeCAtPiBmIGEgeClcblxubGV0IHNlcW1hcGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGkgYSBpblxuICAgIGIgOjogYnMpXG4gID4+fCBMaXN0LnJldlxuOztcblxubGV0IGFsbCBkcyA9IHNlcW1hcGkgZHMgfmY6KGZ1biBfIHggLT4geClcbmxldCBhbGxfdW5pdCBkcyA9IERlZmVycmVkLmlnbm9yZV9tIChmb2xkIGRzIH5pbml0OigpIH5mOihmdW4gKCkgZCAtPiBkKSlcblxubGV0IGl0ZXJpIH5ob3cgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYFBhcmFsbGVsIGFzIGhvdyAtPlxuICAgIGFsbF91bml0IChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgam9iX2NvdW50IC0+XG4gICAgbGV0IHJlYyBnZW5fY29tcHV0YXRpb24gaWR4ID0gZnVuY3Rpb25cbiAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICBUaHJvdHRsZWQub2ZfdGh1bmsgKGZ1biAoKSAtPlxuICAgICAgICAgIFRocm90dGxlZC5ib3RoX3VuaXRcbiAgICAgICAgICAgIChUaHJvdHRsZWQuam9iIChmdW4gKCkgLT4gZiBpZHggeCkpXG4gICAgICAgICAgICAoZ2VuX2NvbXB1dGF0aW9uIChpZHggKyAxKSB4cykpXG4gICAgICB8IFtdIC0+IFRocm90dGxlZC5yZXR1cm4gKClcbiAgICBpblxuICAgIFRocm90dGxlZC5ydW4gKGdlbl9jb21wdXRhdGlvbiAwIHQpIH5tYXhfY29uY3VycmVudF9qb2JzOmpvYl9jb3VudFxuICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG47O1xuXG5sZXQgbWFwaSB+aG93IHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBQYXJhbGxlbCBhcyBob3cgLT5cbiAgICBhbGwgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBqb2JfY291bnQgLT5cbiAgICBsZXQgcmVjIGdlbl9jb21wdXRhdGlvbiBpZHggPSBmdW5jdGlvblxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgIFRocm90dGxlZC5vZl90aHVuayAoZnVuICgpIC0+XG4gICAgICAgICAgVGhyb3R0bGVkLm1hcDJcbiAgICAgICAgICAgIChUaHJvdHRsZWQuam9iIChmdW4gKCkgLT4gZiBpZHggeCkpXG4gICAgICAgICAgICAoZ2VuX2NvbXB1dGF0aW9uIChpZHggKyAxKSB4cylcbiAgICAgICAgICAgIH5mOihmdW4geSB5cyAtPiB5IDo6IHlzKSlcbiAgICAgIHwgW10gLT4gVGhyb3R0bGVkLnJldHVybiBbXVxuICAgIGluXG4gICAgVGhyb3R0bGVkLnJ1biAoZ2VuX2NvbXB1dGF0aW9uIDAgdCkgfm1heF9jb25jdXJyZW50X2pvYnM6am9iX2NvdW50XG4gIHwgYFNlcXVlbnRpYWwgLT4gc2VxbWFwaSB0IH5mXG47O1xuXG5sZXQgZmlsdGVyaSB+aG93IHQgfmYgPVxuICBsZXQlbWFwIGJvb2xzID0gbWFwaSB0IH5ob3cgfmYgaW5cbiAgTGlzdC5yZXYgKExpc3QuZm9sZDJfZXhuIHQgYm9vbHMgfmluaXQ6W10gfmY6KGZ1biBhYyB4IGIgLT4gaWYgYiB0aGVuIHggOjogYWMgZWxzZSBhYykpXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuZmlsdGVyX29wdFxubGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmNvbmNhdFxuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGZpbmRfbWFwaSB0IH5mIGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAobWF0Y2glYmluZCBmIGkgaGQgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gIGluXG4gIGZpbmRfbWFwaSB0IH5mIDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IG1hcCB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyIH5ob3cgdCB+ZiA9IGZpbHRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPSBjb25jYXRfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGluaXQgfmhvdyBuIH5mID0gbWFwIH5ob3cgKExpc3QuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgTGlzdCA9IERlZmVycmVkX2xpc3Rcbm1vZHVsZSBUaHJvdHRsZWRfbWFwID0gTWFwLk1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoVGhyb3R0bGVkKVxuXG50eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE1hcC50XG5cbmxldCBjaGFuZ2UgdCBrIH5mID1cbiAgbGV0JW1hcCBvcHQgPSBmIChNYXAuZmluZCB0IGspIGluXG4gIE1hcC5jaGFuZ2UgdCBrIH5mOihmdW4gXyAtPiBvcHQpXG47O1xuXG5sZXQgdXBkYXRlIHQgayB+ZiA9XG4gIGxldCVtYXAgZGF0YSA9IGYgKE1hcC5maW5kIHQgaykgaW5cbiAgTWFwLnNldCB0IH5rZXk6ayB+ZGF0YVxuOztcblxubGV0IGl0ZXJfa2V5cyB+aG93IHQgfmYgPSBMaXN0Lml0ZXIgfmhvdyAoTWFwLmtleXMgdCkgfmZcbmxldCBpdGVyIH5ob3cgdCB+ZiA9IExpc3QuaXRlciB+aG93IChNYXAuZGF0YSB0KSB+ZlxubGV0IGl0ZXJpIH5ob3cgdCB+ZiA9IExpc3QuaXRlciB+aG93IChNYXAudG9fYWxpc3QgdCkgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPiBmIH5rZXkgfmRhdGEpXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIgPVxuICAgIE1hcC5mb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFsaXN0IC0+IChrZXksIGRhdGEpIDo6IGFsaXN0KVxuICBpblxuICBMaXN0LmZvbGQgYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIgfmluaXQgfmY6KGZ1biBhYyAoa2V5LCBkYXRhKSAtPiBmIH5rZXkgfmRhdGEgYWMpXG47O1xuXG5sZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID1cbiAgbGV0IGFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyID1cbiAgICBNYXAuZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhbGlzdCAtPiAoa2V5LCBkYXRhKSA6OiBhbGlzdClcbiAgaW5cbiAgTGlzdC5mb2xkIGFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyIH5pbml0IH5mOihmdW4gYWMgKGtleSwgZGF0YSkgLT4gZiB+a2V5IH5kYXRhIGFjKVxuOztcblxubW9kdWxlIEpvYiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID1cbiAgICB7IGtleSA6ICdhXG4gICAgOyBkYXRhIDogJ2JcbiAgICA7IG11dGFibGUgcmVzdWx0IDogJ2Mgb3B0aW9uXG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5lbmRcblxubGV0IGZpbHRlcl9tYXBpX3NlcXVlbnRpYWwgdCB+ZiA9XG4gIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgdCBpblxuICBsZXQgc2VxdWVuY2UgPSBNYXAudG9fc2VxdWVuY2Ugfm9yZGVyOmBJbmNyZWFzaW5nX2tleSB0IGluXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGRcbiAgICAgIHNlcXVlbmNlXG4gICAgICB+aW5pdDpCYXNlLk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuQnVpbGRfaW5jcmVhc2luZy5lbXB0eVxuICAgICAgfmY6KGZ1biBzIChrZXksIGRhdGEpIH5rIC0+XG4gICAgICAgIHVwb24gKGYgfmtleSB+ZGF0YSkgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGsgc1xuICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgICAgIEJhc2UuTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5CdWlsZF9pbmNyZWFzaW5nLmFkZF9leG5cbiAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICAgICB+a2V5XG4gICAgICAgICAgICAgICAgfmRhdGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBrIHMpKVxuICAgICAgfmZpbmlzaDooZnVuIHggLT5cbiAgICAgICAgSXZhci5maWxsXG4gICAgICAgICAgaXZhclxuICAgICAgICAgIChNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlXG4gICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICAoQmFzZS5NYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLkJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZSB4KSkpKVxuOztcblxubGV0IGZpbHRlcl9tYXBpX21heF9jb25jdXJyZW50IHQgfmYgfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICBsZXQgY29tcHV0YXRpb24gPVxuICAgIFRocm90dGxlZF9tYXAuZmlsdGVyX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgIFRocm90dGxlZC5qb2IgKGZ1biAoKSAtPiBmIH5rZXkgfmRhdGEpKVxuICBpblxuICBUaHJvdHRsZWQucnVuIGNvbXB1dGF0aW9uIH5tYXhfY29uY3VycmVudF9qb2JzXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgU2VxdWVudGlhbCAtPiBmaWx0ZXJfbWFwaV9zZXF1ZW50aWFsIHQgfmZcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+XG4gICAgZmlsdGVyX21hcGlfbWF4X2NvbmN1cnJlbnQgdCB+ZiB+bWF4X2NvbmN1cnJlbnRfam9ic1xuICB8IGBQYXJhbGxlbCAtPlxuICAgIGxldCBqb2JzID0gcmVmIFtdIGluXG4gICAgbGV0IGpvYl9tYXAgPVxuICAgICAgTWFwLm1hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgbGV0IGpvYiA9IHsgSm9iLmtleTsgZGF0YTsgcmVzdWx0ID0gTm9uZSB9IGluXG4gICAgICAgIGpvYnMgOj0gam9iIDo6ICFqb2JzO1xuICAgICAgICBqb2IpXG4gICAgaW5cbiAgICBsZXQlbWFwICgpID1cbiAgICAgIExpc3QuaXRlciB+aG93IChCYXNlLkxpc3QucmV2ICFqb2JzKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCB7IEpvYi5rZXk7IGRhdGE7IHJlc3VsdCA9IF8gfSBhcyBqb2IgLT5cbiAgICAgICAgICBsZXQlbWFwIHggPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgICAgICBqb2IucmVzdWx0IDwtIHgpXG4gICAgaW5cbiAgICBNYXAuZmlsdGVyX21hcCBqb2JfbWFwIH5mOkpvYi5yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBmaWx0ZXJfa2V5cyB+aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbGV0JW1hcCBiID0gZiBrZXkgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaWx0ZXIgfmhvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+XG4gICAgbGV0JW1hcCBiID0gZiBkYXRhIGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZGF0YSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmlsdGVyaSB+aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbGV0JW1hcCBiID0gZiB+a2V5IH5kYXRhIGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZGF0YSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgbWFwaV9tYXhfY29uY3VycmVudCB0IH5mIH5tYXhfY29uY3VycmVudF9qb2JzID1cbiAgbGV0IGNvbXB1dGF0aW9uID1cbiAgICBUaHJvdHRsZWRfbWFwLm1hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gVGhyb3R0bGVkLmpvYiAoZnVuICgpIC0+IGYgfmtleSB+ZGF0YSkpXG4gIGluXG4gIFRocm90dGxlZC5ydW4gY29tcHV0YXRpb24gfm1heF9jb25jdXJyZW50X2pvYnNcbjs7XG5cbmxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYFNlcXVlbnRpYWwgfCBgUGFyYWxsZWwgLT5cbiAgICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICBsZXQlbWFwIHogPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgIFNvbWUgeilcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+XG4gICAgbWFwaV9tYXhfY29uY3VycmVudCB0IH5mIH5tYXhfY29uY3VycmVudF9qb2JzXG47O1xuXG5sZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IG1lcmdlIH5ob3cgdDEgdDIgfmYgPVxuICBmaWx0ZXJfbWFwXG4gICAgfmhvd1xuICAgIChNYXAubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5IHogLT4gU29tZSAoZnVuICgpIC0+IGYgfmtleSB6KSkpXG4gICAgfmY6KGZ1biB0aHVuayAtPiB0aHVuayAoKSlcbjs7XG5cbmxldCBhbGwgdCA9IG1hcCB0IH5mOkZuLmlkIH5ob3c6YFNlcXVlbnRpYWxcbiIsIm9wZW4hIENvcmVcbm9wZW4hIERlZmVycmVkX3N0ZFxuaW5jbHVkZSBEZWZlcnJlZF9tZW1vX2ludGZcblxubW9kdWxlIE1ha2UgKE0gOiBNb25hZC5JbmZpeCB3aXRoIHR5cGUgJ2EgdCA9ICdhIERlZmVycmVkMS50KSA6XG4gIFMgd2l0aCB0eXBlICdhIGRlZmVycmVkIDo9ICdhIE0udCA9IHN0cnVjdFxuICBvcGVuISBNXG5cbiAgbGV0IHJlcmFpc2UgPSBmdW5jdGlvblxuICAgIHwgT2sgeCAtPiB4XG4gICAgfCBFcnJvciBleG4gLT4gRXhuLnJlcmFpc2UgZXhuIFwiY2F1Z2h0IGV4Y2VwdGlvbiBpbiBtZW1vaXplZCBmdW5jdGlvblwiXG4gIDs7XG5cbiAgbGV0IGdlbmVyYWwnICh0eXBlIGEpIH5ydW4gKGhhc2hhYmxlIDogKG1vZHVsZSBIYXNoYWJsZS5TX3BsYWluIHdpdGggdHlwZSB0ID0gYSkpIGYgPVxuICAgIGxldCBtb2R1bGUgSGFzaGFibGUgPSAodmFsIGhhc2hhYmxlKSBpblxuICAgIGxldCBmID1cbiAgICAgIE1lbW8uZ2VuZXJhbCB+aGFzaGFibGU6SGFzaGFibGUuaGFzaGFibGUgKGZ1biBhIC0+XG4gICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgICAgfnJ1blxuICAgICAgICAgIChmdW4gKCkgLT4gZiBhKSlcbiAgICBpblxuICAgIFN0YWdlZC5zdGFnZSAoZnVuIGEgLT4gZiBhID4+fCByZXJhaXNlKVxuICA7O1xuXG4gIGxldCBnZW5lcmFsIGhhc2hhYmxlIGYgPSBnZW5lcmFsJyB+cnVuOmBOb3cgaGFzaGFibGUgZlxuXG4gIGxldCByZWN1cnNpdmUgKHR5cGUgYSkgKGhhc2hhYmxlIDogKG1vZHVsZSBIYXNoYWJsZS5TX3BsYWluIHdpdGggdHlwZSB0ID0gYSkpIGZfb25lc3RlcCA9XG4gICAgbGV0IHJlYyBtZW1vaXplZCA9XG4gICAgICBsYXp5XG4gICAgICAgIChnZW5lcmFsJ1xuICAgICAgICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgICAgICBoYXNoYWJsZVxuICAgICAgICAgICAoZl9vbmVzdGVwIChmdW4geCAtPiAodW5zdGFnZSAoZm9yY2UgbWVtb2l6ZWQpKSB4KSkpXG4gICAgaW5cbiAgICBmb3JjZSBtZW1vaXplZFxuICA7O1xuXG4gIGxldCB1bml0IGYgPVxuICAgIGxldCBmID1cbiAgICAgIE1lbW8udW5pdCAoZnVuICgpIC0+XG4gICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgICAgfnJ1bjpgTm93XG4gICAgICAgICAgZilcbiAgICBpblxuICAgIFN0YWdlZC5zdGFnZSAoZnVuICgpIC0+IGYgKCkgPj58IHJlcmFpc2UpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBNYWtlIChEZWZlcnJlZDEpXG4iLCJvcGVuIENvcmVcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBPcHRpb24udCBEZWZlcnJlZC50XG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgcmV0dXJuIGEgPSBEZWZlcnJlZC5yZXR1cm4gKFNvbWUgYSlcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgRGVmZXJyZWQuYmluZCB0IH5mOihmdW5jdGlvblxuICAgICAgICB8IFNvbWUgYSAtPiBmIGFcbiAgICAgICAgfCBOb25lIC0+IERlZmVycmVkLnJldHVybiBOb25lKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHQgfmYgPSBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHIgLT4gT3B0aW9uLm1hcCByIH5mKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdlcnJvcikgdCA9ICgnYSwgJ2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50XG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBjb21iaW5lIHQxIHQyIH5vayB+ZXJyID1cbiAgbGV0JW1hcCB0MSA9IHQxXG4gIGFuZCB0MiA9IHQyIGluXG4gIFJlc3VsdC5jb21iaW5lIHQxIHQyIH5vayB+ZXJyXG47O1xuXG5pbmNsdWRlIE1vbmFkLk1ha2UyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCByZXR1cm4gYSA9IERlZmVycmVkLnJldHVybiAoT2sgYSlcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgRGVmZXJyZWQuYmluZCB0IH5mOihmdW5jdGlvblxuICAgICAgICB8IE9rIGEgLT4gZiBhXG4gICAgICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiBEZWZlcnJlZC5yZXR1cm4gZXJyb3IpXG4gICAgOztcblxuICAgIGxldCBtYXAgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBSZXN1bHQubWFwIHIgfmYpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGZhaWwgeCA9IERlZmVycmVkLnJldHVybiAoRXJyb3IgeClcbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcbmxldCBtYXBfZXJyb3IgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBSZXN1bHQubWFwX2Vycm9yIHIgfmYpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgTW9uaXRvciA9IHN0cnVjdFxuICBsZXQgdHJ5X3dpdGggPSBNb25pdG9yLnRyeV93aXRoXG5lbmRcblxuKCogQ29waWVkIHRvIFtlYWdlcl9kZWZlcnJlZF9vcl9lcnJvci5tbF0uICBUaGVyZSBzaG91bGQgYmUgbm8gZGlmZnMgYmVsb3cgdGhpcyBsaW5lLiAqKVxuXG5pbmNsdWRlIChEZWZlcnJlZF9yZXN1bHQgOiBNb25hZC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBEZWZlcnJlZF9yZXN1bHQudClcblxudHlwZSAnYSB0ID0gJ2EgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbmluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGxldCBhcHBseSBmIHggPVxuICAgICAgRGVmZXJyZWRfcmVzdWx0LmNvbWJpbmVcbiAgICAgICAgZlxuICAgICAgICB4XG4gICAgICAgIH5vazooZnVuIGYgeCAtPiBmIHgpXG4gICAgICAgIH5lcnI6KGZ1biBlMSBlMiAtPiBFcnJvci5vZl9saXN0IFsgZTE7IGUyIF0pXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSByZXR1cm5cblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgKCogZnJvbSBBcHBsaWNhdGl2ZS5NYWtlICopXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICBlbmRcbmVuZFxuXG5vcGVuIExldF9zeW50YXhcblxubGV0IGZhaWwgZXJyb3IgPSBEZWZlcnJlZC5yZXR1cm4gKFJlc3VsdC5mYWlsIGVycm9yKVxubGV0IG9rX2V4biB0ID0gRGVmZXJyZWQubWFwIHQgfmY6T3JfZXJyb3Iub2tfZXhuXG5sZXQgb2ZfZXhuID9iYWNrdHJhY2UgZXhuID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5vZl9leG4gP2JhY2t0cmFjZSBleG4pXG5sZXQgb2ZfZXhuX3Jlc3VsdCA/YmFja3RyYWNlIHQgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3Iub2ZfZXhuX3Jlc3VsdCA/YmFja3RyYWNlKVxubGV0IGVycm9yIG1zZyB2IHNleHBfb2YgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yIG1zZyB2IHNleHBfb2YpXG5sZXQgZXJyb3JfcyBzZXhwID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zIHNleHApXG5sZXQgZXJyb3Jfc3RyaW5nIG1zZyA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIG1zZylcbmxldCBlcnJvcmYgZm9ybWF0ID0ga3NwcmludGYgZXJyb3Jfc3RyaW5nIGZvcm1hdFxubGV0IHRhZyB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnIH50YWcpXG5sZXQgdGFnX3MgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZ19zIH50YWcpXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnX3NfbGF6eSB+dGFnKVxuXG5sZXQgdGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHQgLT4gT3JfZXJyb3IudGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgdW5pbXBsZW1lbnRlZCBtc2cgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLnVuaW1wbGVtZW50ZWQgbXNnKVxubGV0IGNvbWJpbmVfZXJyb3JzIGwgPSBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5jb21iaW5lX2Vycm9yc1xubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbCA9IERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcblxubGV0IGZpbHRlcl9va19hdF9sZWFzdF9vbmUgbCA9XG4gIERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmZpbHRlcl9va19hdF9sZWFzdF9vbmVcbjs7XG5cbmxldCBmaW5kX21hcF9vayBsIH5mID1cbiAgRGVmZXJyZWQucmVwZWF0X3VudGlsX2ZpbmlzaGVkIChsLCBbXSkgKGZ1biAobCwgZXJyb3JzKSAtPlxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGxldCBlcnJvcnMgPSBFcnJvci5vZl9saXN0IChMaXN0LnJldiBlcnJvcnMpIGluXG4gICAgICBEZWZlcnJlZC5yZXR1cm4gKGBGaW5pc2hlZCAoRXJyb3IgZXJyb3JzKSlcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBEZWZlcnJlZC5tYXAgKGYgaGQpIH5mOihmdW5jdGlvblxuICAgICAgICB8IEVycm9yIGN1cnJlbnRfZXJyb3IgLT4gYFJlcGVhdCAodGwsIGN1cnJlbnRfZXJyb3IgOjogZXJyb3JzKVxuICAgICAgICB8IE9rIHJlc3VsdCAtPiBgRmluaXNoZWQgKE9rIHJlc3VsdCkpKVxuOztcblxubGV0IG9rX3VuaXQgPSByZXR1cm4gKClcblxubGV0IHRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYgPVxuICBEZWZlcnJlZC5tYXAgKE1vbml0b3IudHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZikgfmY6KGZ1bmN0aW9uXG4gICAgfCBFcnJvciBleG4gLT4gRXJyb3IgKEVycm9yLm9mX2V4biBleG4pXG4gICAgfCBPayBfIGFzIG9rIC0+IG9rKVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZiA9XG4gIERlZmVycmVkLm1hcCAodHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZikgfmY6T3JfZXJyb3Iuam9pblxuOztcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgbGV0IGZvbGRpIGxpc3QgfmluaXQ6YWNjIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgaSBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gYWNjXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCViaW5kIGFjYyA9IGYgaSBhY2MgaGQgaW5cbiAgICAgICAgbG9vcCAoaSArIDEpIGFjYyB0bFxuICAgIGluXG4gICAgbG9vcCAwIGFjYyBsaXN0XG4gIDs7XG5cbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBfIGEgeCAtPiBmIGEgeClcblxuICBsZXQgc2VxbWFwaSB0IH5mID1cbiAgICBmb2xkaSB0IH5pbml0OltdIH5mOihmdW4gaSBicyBhIC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgYSBpblxuICAgICAgYiA6OiBicylcbiAgICA+PnwgTGlzdC5yZXZcbiAgOztcblxuICBsZXQgYWxsID0gYWxsXG4gIGxldCBhbGxfdW5pdCA9IGFsbF91bml0XG5cbiAgbGV0IGl0ZXJpIH5ob3cgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbF91bml0IChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBmb2xkaSB0IH5pbml0OigpIH5mOihmdW4gaSAoKSB4IC0+IGYgaSB4KVxuICA7O1xuXG4gIGxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gc2VxbWFwaSB0IH5mXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmZpbHRlcl9vcHRcbiAgbGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmNvbmNhdFxuXG4gIGxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gICAgZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgeCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgICBsZXQgcmVjIGZpbmRfbWFwaSB0IH5mIGkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IHJldHVybiBOb25lXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCViaW5kIGYgaSBoZCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gZmluZF9tYXBpIHRsIH5mIChpICsgMSlcbiAgICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gICAgaW5cbiAgICBmaW5kX21hcGkgdCB+ZiAwXG4gIDs7XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5cbiAgbGV0IGZpbmRpIHQgfmYgPVxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZCB0IH5mID1cbiAgICBmaW5kX21hcCB0IH5mOihmdW4gZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZXhpc3RzaSB0IH5mID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiB0cnVlXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiBmYWxzZVxuICAgIHwgTm9uZSAtPiB0cnVlXG4gIDs7XG5cbiAgbGV0IGl0ZXIgfmhvdyB0IH5mID0gaXRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IG1hcCB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXIgfmhvdyB0IH5mID0gZmlsdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPSBjb25jYXRfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgaW5pdCB+aG93IG4gfmYgPSBtYXAgfmhvdyAoTGlzdC5pbml0IG4gfmY6Rm4uaWQpIH5mXG5lbmRcblxubGV0IHJlYyByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZiA9XG4gIG1hdGNoJWJpbmQgZiBzdGF0ZSB3aXRoXG4gIHwgYFJlcGVhdCBzdGF0ZSAtPiByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZlxuICB8IGBGaW5pc2hlZCBzdGF0ZSAtPiByZXR1cm4gc3RhdGVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgTGlzdCA9IERlZmVycmVkX2xpc3RcblxuKCogV2UgaW1wbGVtZW50IGFsbCBvZiB0aGUgW1F1ZXVlXSBvcGVyYXRpb25zIGJ5IGNvbnZlcnRpbmcgdGhlIHF1ZXVlIHRvIGEgbGlzdCBhbmQgdGhlblxuICAgdXNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgW0xpc3RdIG9wZXJhdGlvbi4gIFdlIHVzZSBsaXN0cyByYXRoZXIgdGhhbiBhcnJheXMgYmVjYXVzZVxuICAgYXJyYXlzIGxvbmdlciB0aGFuIGEgY2VydGFpbiBsZW5ndGggYXJlIGFsbG9jYXRlZCBpbiB0aGUgbWFqb3IgaGVhcCwgd2hpY2ggY2FuIGNhdXNlXG4gICB1bm5lY2Vzc2FyeSBwcm9tb3Rpb24gb2YgdGhlIGVsZW1lbnRzIGluIHRoZSBxdWV1ZS4gIEFsc28sIHdoZW4gb25lIGlzIGZvbGRpbmcgb3JcbiAgIGl0ZXJhdGluZyBvdmVyIGFuIGFycmF5LCB0aGUgZW50aXJlIGFycmF5IG11c3QgYmUga2VwdCBhbGl2ZS4gIFdoZW4gZm9sZGluZyBvclxuICAgaXRlcmF0aW5nIG92ZXIgYSBsaXN0LCBvbmx5IHRoZSByZW1haW5pbmcgdGFpbCBvZiB0aGUgbGlzdCBpcyBrZXB0IGFsaXZlLiAgU28sIHVzaW5nXG4gICBhcnJheXMgcmF0aGVyIHRoYW4gbGlzdHMgd291bGQgaW5jcmVhc2UgdGhlIGxpdmUtc3BhY2UgbmVlZGVkIGJ5IHRoZSBwcm9ncmFtLiAqKVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmluaXQgfmZcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBMaXN0LmZvbGQgKFF1ZXVlLnRvX2xpc3QgdCkgfmluaXQgfmZcbmxldCBhbGwgdCA9IExpc3QuYWxsIChRdWV1ZS50b19saXN0IHQpID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgYWxsX3VuaXQgdCA9IExpc3QuYWxsX3VuaXQgKFF1ZXVlLnRvX2xpc3QgdClcbmxldCBpdGVyIH5ob3cgdCB+ZiA9IExpc3QuaXRlciB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgaXRlcmkgfmhvdyB0IH5mID0gTGlzdC5pdGVyaSB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgbWFwIH5ob3cgdCB+ZiA9IExpc3QubWFwIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBtYXBpIH5ob3cgdCB+ZiA9IExpc3QubWFwaSB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgaW5pdCB+aG93IG4gfmYgPSBMaXN0LmluaXQgfmhvdyBuIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyIH5ob3cgdCB+ZiA9IExpc3QuZmlsdGVyIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9IExpc3QuZmlsdGVyaSB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBMaXN0LmZpbHRlcl9tYXAgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9IExpc3QuZmlsdGVyX21hcGkgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxuXG5sZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPVxuICBMaXN0LmNvbmNhdF9tYXAgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZjooZnVuIHggLT4gZiB4ID4+fCBRdWV1ZS50b19saXN0KVxuICA+PnwgUXVldWUub2ZfbGlzdFxuOztcblxubGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9XG4gIExpc3QuY29uY2F0X21hcGkgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZjooZnVuIGkgeCAtPiBmIGkgeCA+PnwgUXVldWUudG9fbGlzdClcbiAgPj58IFF1ZXVlLm9mX2xpc3Rcbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID0gTGlzdC5maW5kX21hcCAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmRfbWFwaSB0IH5mID0gTGlzdC5maW5kX21hcGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBmaW5kIHQgfmYgPSBMaXN0LmZpbmQgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBmaW5kaSB0IH5mID0gTGlzdC5maW5kaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZvcl9hbGwgdCB+ZiA9IExpc3QuZm9yX2FsbCAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZvcl9hbGxpIHQgfmYgPSBMaXN0LmZvcl9hbGxpIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGV4aXN0c2kgdCB+ZiA9IExpc3QuZXhpc3RzaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbigqIFtmb2xkX21hcGkgfmhvdyB0IH5pbml0IH5tYXBpX2YgfmZvbGRfZl0gaXMgYSBtb3JlIGVmZmljaWVudCB2ZXJzaW9uIG9mOlxuXG4gICB7W1xuICAgICBmb2xkIH5pbml0IH5mOihmdW4gYiBhIC0+IHJldHVybiAoZm9sZF9mIGIgYSkpIChtYXBpIHQgfmhvdyB+ZjptYXBpX2YpIF19XG5cbiAgIEl0IGF2b2lkcyBjcmVhdGluZyB0aGUgaW50ZXJtZWRpYXRlIHNlcXVlbmNlIHRoYXQgd291bGQgcmVzdWx0IGZyb20gW21hcGldLCBhbmRcbiAgIGFsbG93cyB0aGUgW2ZvbGRdIHRvIHByb2NlZWQgY29uY3VycmVudGx5IHdpdGggdGhlIFttYXBpXSwgc28gdGhhdCBvbmUgY2FuIGFjY3VtdWxhdGVcbiAgIHRoZSByZXN1bHQgYXMgc29vbiBhcyBwb3NzaWJsZSwgcG9zc2libHkgYXZvaWRpbmcgY3JlYXRpbmcgYW4gaW50ZXJtZWRpYXRlIHN0cnVjdHVyZVxuICAgKGUuZy4gW2l0ZXJpXSBhbmQgW2ZpbHRlcl9tYXBdIHVzZXMgW2ZvbGRfbWFwaV0gdG8gZG8gdGhpcykuICopXG5sZXQgZm9sZF9tYXBpXG4gICAgICAodHlwZSBhIGIgYylcbiAgICAgID8oaG93ID0gYFNlcXVlbnRpYWwpXG4gICAgICAodCA6IGEgU2VxdWVuY2UudClcbiAgICAgIH4oaW5pdCA6IGMpXG4gICAgICB+KG1hcGlfZiA6IGludCAtPiBhIC0+IGIgRGVmZXJyZWQudClcbiAgICAgIH4oZm9sZF9mIDogYyAtPiBiIC0+IGMpXG4gIDogYyBEZWZlcnJlZC50XG4gID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgU2VxdWVudGlhbCAtPlxuICAgIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWMgbG9vcCBpIHQgKGMgOiBjKSA9XG4gICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEl2YXIuZmlsbCByZXN1bHQgY1xuICAgICAgfCBTb21lIChhLCB0KSAtPiB1cG9uIChtYXBpX2YgaSBhKSAoZnVuIGIgLT4gbG9vcCAoaSArIDEpIHQgKGZvbGRfZiBjIGIpKVxuICAgIGluXG4gICAgbG9vcCAwIHQgaW5pdDtcbiAgICBJdmFyLnJlYWQgcmVzdWx0XG4gIHwgYFBhcmFsbGVsIC0+XG4gICAgbGV0IHJlYyBsb29wIGkgdCAoYyA6IGMgRGVmZXJyZWQudCkgPVxuICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoaSArIDEpXG4gICAgICAgICAgdFxuICAgICAgICAgIChsZXQlYmluZCBiID0gbWFwaV9mIGkgYSBpblxuICAgICAgICAgICBsZXQlbWFwIGMgPSBjIGluXG4gICAgICAgICAgIGZvbGRfZiBjIGIpXG4gICAgaW5cbiAgICBsb29wIDAgdCAocmV0dXJuIGluaXQpXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPlxuICAgIGxldCB0aHJvdHRsZSA9IFRocm90dGxlLmNyZWF0ZSB+bWF4X2NvbmN1cnJlbnRfam9icyB+Y29udGludWVfb25fZXJyb3I6ZmFsc2UgaW5cbiAgICAoKiBbbG9vcF0gZm9yY2VzIHRoZSBpbnB1dCBzZXF1ZW5jZSBhbmQgZW5xdWV1ZXMgYSB0aHJvdHRsZSBqb2Igb25seSBpZiB0aGVyZSBpc1xuICAgICAgIGNhcGFjaXR5IGF2YWlsYWJsZS4gKilcbiAgICBsZXQgcmVjIGxvb3AgaSB0IChjIDogYyBEZWZlcnJlZC50KSA9XG4gICAgICBsZXQlYmluZCAoKSA9IFRocm90dGxlLmNhcGFjaXR5X2F2YWlsYWJsZSB0aHJvdHRsZSBpblxuICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoaSArIDEpXG4gICAgICAgICAgdFxuICAgICAgICAgIChsZXQlYmluZCBiID0gVGhyb3R0bGUuZW5xdWV1ZSB0aHJvdHRsZSAoZnVuICgpIC0+IG1hcGlfZiBpIGEpIGluXG4gICAgICAgICAgIGxldCVtYXAgYyA9IGMgaW5cbiAgICAgICAgICAgZm9sZF9mIGMgYilcbiAgICBpblxuICAgIGxvb3AgMCB0IChyZXR1cm4gaW5pdClcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgU2VxdWVuY2UuZGVsYXllZF9mb2xkXG4gICAgdFxuICAgIH5pbml0OigwLCBpbml0KVxuICAgIH5mOihmdW4gKGksIGIpIGEgfmsgLT5cbiAgICAgIGxldCViaW5kIGIgPSBmIGkgYiBhIGluXG4gICAgICBrIChpICsgMSwgYikpXG4gICAgfmZpbmlzaDooZnVuIChfLCBiKSAtPiByZXR1cm4gYilcbjs7XG5cbigqIFtmb2xkXSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgW2ZvbGRpXSB0byBzYXZlIHRoZSBpbnRlcm1lZGlhdGUgY2xvc3VyZVxuICAgYWxsb2NhdGlvbi4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGQgdCB+aW5pdCB+ZjooZnVuIGIgYSB+ayAtPiBmIGIgYSA+Pj0gaykgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBhbGwgdCA9XG4gIGxldCVtYXAgcmVzID1cbiAgICBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBhY2N1bSBkIC0+XG4gICAgICBsZXQlbWFwIGEgPSBkIGluXG4gICAgICBhIDo6IGFjY3VtKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiByZXMpXG47O1xuXG5sZXQgYWxsX3VuaXQgdCA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIHYgLT4gdilcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByZXR1cm4gTm9uZVxuICAgIHwgU29tZSAodiwgcmVzdCkgLT5cbiAgICAgIChtYXRjaCViaW5kIGYgaSB2IHdpdGhcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXBpIHJlc3QgfmYgKGkgKyAxKVxuICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gIGluXG4gIGZpbmRfbWFwaSB0IH5mIDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlcmkgfmhvdyB0IH5mIDogdW5pdCBEZWZlcnJlZC50ID1cbiAgZm9sZF9tYXBpIH5ob3cgdCB+bWFwaV9mOmYgfmluaXQ6KCkgfmZvbGRfZjooZnVuICgpICgpIC0+ICgpKVxuOztcblxubGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgbGV0JW1hcCBicyA9XG4gICAgZm9sZF9tYXBpIH5ob3cgdCB+bWFwaV9mOihmdW4gaSBhIC0+IGYgaSBhKSB+aW5pdDpbXSB+Zm9sZF9mOihmdW4gYnMgYiAtPiBiIDo6IGJzKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiBicylcbjs7XG5cbigqIFtmaWx0ZXJfbWFwaV0gaXMgaW1wbGVtZW50ZWQgdXNpbmcgW2ZvbGRfbWFwaV0gcmF0aGVyIHRoYW4gW21hcF0gc28gdGhhdCB3ZSBuZXZlciBuZWVkXG4gICB0byBrZWVwIGEgbG9uZyBzdHJlYW0gb2YgaW50ZXJtZWRpYXRlIFtOb25lXSByZXN1bHRzIGluIHRoZSBhY2N1bXVsYXRvciwgb25seSB0byBsYXRlclxuICAgZmlsdGVyIHRoZW0gYWxsIG91dC4gKilcbmxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPVxuICBsZXQlbWFwIGJzID1cbiAgICBmb2xkX21hcGlcbiAgICAgIHRcbiAgICAgIH5ob3dcbiAgICAgIH5tYXBpX2Y6KGZ1biBpIGEgLT4gZiBpIGEpXG4gICAgICB+aW5pdDpbXVxuICAgICAgfmZvbGRfZjooZnVuIGJzIG1heWJlX3YgLT5cbiAgICAgICAgbWF0Y2ggbWF5YmVfdiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBic1xuICAgICAgICB8IFNvbWUgYiAtPiBiIDo6IGJzKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiBicylcbjs7XG5cbmxldCBjb25jYXRfbWFwaSB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZiA+PnwgU2VxdWVuY2UuY29uY2F0XG5cbmxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIGkgYSAtPlxuICAgIG1hdGNoJW1hcCBmIGkgYSB3aXRoXG4gICAgfCB0cnVlIC0+IFNvbWUgYVxuICAgIHwgZmFsc2UgLT4gTm9uZSlcbjs7XG5cbmxldCBpdGVyIH5ob3cgdCB+ZiA9IGl0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgfmhvdyB0IH5mID0gZmlsdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgaW5pdCB+aG93IG4gfmYgPSBtYXAgfmhvdyAoU2VxdWVuY2UuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQ2xvY2tfbnMgPSBDbG9ja19uc1xubW9kdWxlIFRpbWVfbnMgPSBUaW1lX25zXG5tb2R1bGUgVGltZSA9IFRpbWVfZmxvYXRcbm1vZHVsZSBBc3luY19rZXJuZWxfc2NoZWR1bGVyID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlclxubW9kdWxlIERhdGUgPSBEYXRlXG5cbmxldCBhZnRlciA9IENsb2NrX25zLmFmdGVyXG5sZXQgYXQgPSBDbG9ja19ucy5hdFxubGV0IGV2ZXJ5ID0gQ2xvY2tfbnMuZXZlcnlcbmxldCB3aXRoX3RpbWVvdXQgPSBDbG9ja19ucy53aXRoX3RpbWVvdXRcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5cbmxldCBzaG93X2RlYnVnX21lc3NhZ2VzID0gcmVmIGZhbHNlXG5sZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIGZhbHNlXG5cbm1vZHVsZSBGbHVzaGVkX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYE9rXG4gICAgfCBgUmVhZGVyX2Nsb3NlZFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5cbiAgbGV0IGNvbWJpbmUgKGwgOiB0IERlZmVycmVkLnQgbGlzdCkgPVxuICAgIGxldCVtYXAgbCA9IERlZmVycmVkLmFsbCBsIGluXG4gICAgbWF0Y2ggTGlzdC5tZW0gbCBgUmVhZGVyX2Nsb3NlZCB+ZXF1YWwgd2l0aFxuICAgIHwgdHJ1ZSAtPiBgUmVhZGVyX2Nsb3NlZFxuICAgIHwgZmFsc2UgLT4gYE9rXG4gIDs7XG5lbmRcblxuKCogQSBbQ29uc3VtZXIudF0gYWN0cyBhcyB0aGUgbW9uaXRvciBvZiBzb21lIHByb2Nlc3MgdGhhdCByZWFkcyB2YWx1ZXMgZnJvbSBhIHBpcGUgYW5kXG4gICBwcm9jZXNzZXMgdGhlbSwgYWxsb3dpbmcgdGhhdCBwcm9jZXNzOlxuICAgLSB0byBjb21tdW5pY2F0ZSB0aGF0IGl0IGhhcyB0YWtlbiByZXNwb25zaWJpbGl0eSBmb3IgdGhlIHZhbHVlc1xuICAgLSB0byBzaWduYWwgd2hlbiBpdCBoYXMgZmluaXNoZWQgd2l0aCB0aGUgdmFsdWVzIHRvIGludGVyZXN0ZWQgcGFydGllcyAodmlhXG4gICAgIFtkb3duc3RyZWFtX2ZsdXNoZWRdKVxuXG4gICBJdCBpcyB1c2VkIGluIHR3byBzdGVwczpcblxuICAgMS4gY2FsbGluZyBbQ29uc3VtZXIuc3RhcnRdIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgY29uc3VtZXIgdGFrZXMgdmFsdWVzIG91dCBvZiB0aGVcbiAgIFBpcGUgdmlhIFtyZWFkXSBvciBbcmVhZCddLlxuXG4gICAyLiBjYWxsaW5nIFtDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtXS5cblxuICAgQnkgY2FsbGluZyBbdmFsdWVzX3NlbnRfZG93bnN0cmVhbV0gb25lIGFzc2VydHMgdGhhdCB0aGUgW2Rvd25zdHJlYW1fZmx1c2hlZF0gZnVuY3Rpb25cbiAgIHN1cHBsaWVkIHRvIFtjcmVhdGVdIHdpbGwgbm93IHdhaXQgZm9yIHRoaXMgdmFsdWUuXG5cbiAgIElmIG5vIFtDb25zdW1lci50XSBpcyBzdXBwbGllZCB3aGVuIGEgdmFsdWUgaXMgcmVhZCB0aGVuIHRoZSB2YWx1ZSBpcyBkZWZpbmVkIHRvIGJlXG4gICBmbHVzaGVkIGF0IHRoYXQgdGltZS4gKilcbm1vZHVsZSBDb25zdW1lciA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgcGlwZV9pZDppbnRcbiAgICAtPiBkb3duc3RyZWFtX2ZsdXNoZWQ6KHVuaXQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50KVxuICAgIC0+IHRcblxuICB2YWwgcGlwZV9pZCA6IHQgLT4gaW50XG4gIHZhbCBzdGFydCA6IHQgLT4gdW5pdFxuICB2YWwgdmFsdWVzX3NlbnRfZG93bnN0cmVhbSA6IHQgLT4gdW5pdFxuICB2YWwgdmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1c2hlZCA6IHQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHBpcGVfaWQgOiBpbnRcbiAgICA7ICgqIFt2YWx1ZXNfcmVhZF0gcmVmbGVjdHMgd2hldGhlciB2YWx1ZXMgdGhlIGNvbnN1bWVyIGhhcyByZWFkIGZyb20gdGhlIHBpcGUgaGF2ZSBiZWVuXG4gICAgICAgICBzZW50IGRvd25zdHJlYW0gb3IgaWYgbm90LCBob2xkcyBhbiBpdmFyIHRoYXQgaXMgdG8gYmUgZmlsbGVkIHdoZW4gdGhleSBhcmUuICopXG4gICAgICBtdXRhYmxlXG4gICAgICAgIHZhbHVlc19yZWFkIDpcbiAgICAgICAgWyBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSBvZiB1bml0IEl2YXIudCBdXG4gICAgOyAoKiBbZG93bnN0cmVhbV9mbHVzaGVkICgpXSByZXR1cm5zIHdoZW4gYWxsIHByaW9yIHZhbHVlcyB0aGF0IHRoZSBjb25zdW1lciBoYXNcbiAgICAgICAgIHBhc3NlZCBkb3duc3RyZWFtIGhhdmUgYmVlbiBmbHVzaGVkIGFsbCB0aGUgd2F5IGRvd24gdGhlIGNoYWluIG9mIHBpcGVzLiAqKVxuICAgICAgZG93bnN0cmVhbV9mbHVzaGVkIDogdW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgICB0cnlcbiAgICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+cGlwZV9pZDppZ25vcmVcbiAgICAgICAgfnZhbHVlc19yZWFkOlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+ICgpXG4gICAgICAgICAgICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpKVxuICAgICAgICB+ZG93bnN0cmVhbV9mbHVzaGVkOmlnbm9yZVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUuQ29uc3VtZXIuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pIH5waXBlOih0IDogdCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB+cGlwZV9pZCB+ZG93bnN0cmVhbV9mbHVzaGVkID1cbiAgICB7IHBpcGVfaWQ7IHZhbHVlc19yZWFkID0gYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW07IGRvd25zdHJlYW1fZmx1c2hlZCB9XG4gIDs7XG5cbiAgbGV0IHN0YXJ0IHQgPVxuICAgIG1hdGNoIHQudmFsdWVzX3JlYWQgd2l0aFxuICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIF8gLT4gKClcbiAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+XG4gICAgICB0LnZhbHVlc19yZWFkIDwtIGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSAoSXZhci5jcmVhdGUgKCkpXG4gIDs7XG5cbiAgbGV0IHZhbHVlc19zZW50X2Rvd25zdHJlYW0gdCA9XG4gICAgbWF0Y2ggdC52YWx1ZXNfcmVhZCB3aXRoXG4gICAgfCBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSAtPiAoKVxuICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIGl2YXIgLT5cbiAgICAgIEl2YXIuZmlsbCBpdmFyICgpO1xuICAgICAgdC52YWx1ZXNfcmVhZCA8LSBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbVxuICA7O1xuXG4gIGxldCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkIHQgPVxuICAgIG1hdGNoIHQudmFsdWVzX3JlYWQgd2l0aFxuICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT4gdC5kb3duc3RyZWFtX2ZsdXNoZWQgKClcbiAgICB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSB3aGVuX3NlbnRfZG93bnN0cmVhbSAtPlxuICAgICAgbGV0JWJpbmQgKCkgPSBJdmFyLnJlYWQgd2hlbl9zZW50X2Rvd25zdHJlYW0gaW5cbiAgICAgIHQuZG93bnN0cmVhbV9mbHVzaGVkICgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEJsb2NrZWRfcmVhZCA9IHN0cnVjdFxuICAoKiBBIFtCbG9ja2VkX3JlYWQudF0gcmVwcmVzZW50cyBhIGJsb2NrZWQgcmVhZCBhdHRlbXB0LiAgSWYgc29tZW9uZSByZWFkcyBmcm9tIGFuIGVtcHR5XG4gICAgIHBpcGUsIHRoZXkgZW5xdWV1ZSBhIFtCbG9ja2VkX3JlYWQudF0gaW4gdGhlIHF1ZXVlIG9mIFtibG9ja2VkX3JlYWRzXS4gIExhdGVyLCB3aGVuXG4gICAgIHZhbHVlcyBhcmUgd3JpdHRlbiB0byBhIHBpcGUsIHRoYXQgd2lsbCBjYXVzZSBzb21lIG51bWJlciBvZiBibG9ja2VkIHJlYWRzIHRvIGJlXG4gICAgIGZpbGxlZCwgZmlyc3QgY29tZSBmaXJzdCBzZXJ2ZS4gIFRoZSBibG9ja2VkLXJlYWQgY29uc3RydWN0b3Igc3BlY2lmaWVzIGhvdyBtYW55XG4gICAgIHZhbHVlcyBhIHJlYWQgc2hvdWxkIGNvbnN1bWUgZnJvbSB0aGUgcGlwZSB3aGVuIGl0IGdldHMgaXRzIHR1cm4uXG5cbiAgICAgSWYgYSBwaXBlIGlzIGNsb3NlZCwgdGhlbiBhbGwgYmxvY2tlZCByZWFkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIFtgRW9mXS4gKilcbiAgdHlwZSAnYSB3YW50cyA9XG4gICAgfCBaZXJvIG9mIFsgYEVvZiB8IGBPayBdIEl2YXIudFxuICAgIHwgT25lIG9mIFsgYEVvZiB8IGBPayBvZiAnYSBdIEl2YXIudFxuICAgIHwgQXRfbW9zdCBvZiBpbnQgKiBbIGBFb2YgfCBgT2sgb2YgJ2EgUXVldWUudCBdIEl2YXIudFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB3YW50cyA6ICdhIHdhbnRzXG4gICAgOyBjb25zdW1lciA6IENvbnN1bWVyLnQgb3B0aW9uXG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfndhbnRzOlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFplcm8gXyB8IE9uZSBfIC0+ICgpXG4gICAgICAgICAgICAgfCBBdF9tb3N0IChpLCBfKSAtPiBhc3NlcnQgKGkgPiAwKSkpXG4gICAgICAgIH5jb25zdW1lcjpcbiAgICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGNvbnN1bWVyIC0+IENvbnN1bWVyLmludmFyaWFudCBjb25zdW1lcikpXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+XG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUuQmxvY2tlZF9yZWFkLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSB+cGlwZToodCA6IF8gdCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB3YW50cyBjb25zdW1lciA9IHsgd2FudHM7IGNvbnN1bWVyIH1cblxuICBsZXQgaXNfZW1wdHkgdCA9XG4gICAgbWF0Y2ggdC53YW50cyB3aXRoXG4gICAgfCBaZXJvIGkgLT4gSXZhci5pc19lbXB0eSBpXG4gICAgfCBPbmUgaSAtPiBJdmFyLmlzX2VtcHR5IGlcbiAgICB8IEF0X21vc3QgKF8sIGkpIC0+IEl2YXIuaXNfZW1wdHkgaVxuICA7O1xuXG4gIGxldCBmaWxsX3dpdGhfZW9mIHQgPVxuICAgIG1hdGNoIHQud2FudHMgd2l0aFxuICAgIHwgWmVybyBpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgICB8IE9uZSBpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgICB8IEF0X21vc3QgKF8sIGkpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgOztcbmVuZFxuXG5tb2R1bGUgQmxvY2tlZF9mbHVzaCA9IHN0cnVjdFxuICAoKiBBIFtCbG9ja2VkX2ZsdXNoLnRdIHJlcHJlc2VudHMgYSBibG9ja2VkIGZsdXNoIG9wZXJhdGlvbiwgd2hpY2ggY2FuIGJlIGVuYWJsZWQgYnkgYVxuICAgICBmdXR1cmUgcmVhZC4gIElmIHNvbWVvbmUgZG9lcyBbZmx1c2hlZCBwXSBvbiBhIHBpcGUsIHRoYXQgYmxvY2tzIHVudGlsIGV2ZXJ5dGhpbmdcbiAgICAgdGhhdCdzIGN1cnJlbnRseSBpbiB0aGUgcGlwZSBhdCB0aGF0IHBvaW50IGhhcyBkcmFpbmVkIG91dCBvZiB0aGUgcGlwZS4gIFdoZW4gd2UgY2FsbFxuICAgICBbZmx1c2hlZF0sIGl0IHJlY29yZHMgdGhlIHRvdGFsIGFtb3VudCBvZiBkYXRhIHRoYXQgaGFzIGJlZW4gd3JpdHRlbiBzbyBmYXIgaW5cbiAgICAgW2ZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWRdLiAgV2UgZmlsbCB0aGUgW0ZsdXNoLnRdIHdpdGggW2BPa10gd2hlbiB0aGlzIGFtb3VudCBvZlxuICAgICBkYXRhIGhhcyBiZWVuIHJlYWQgZnJvbSB0aGUgcGlwZS5cblxuICAgICBBIFtCbG9ja2VkX2ZsdXNoLnRdIGNhbiBhbHNvIGJlIGZpbGxlZCB3aXRoIFtgUmVhZGVyX2Nsb3NlZF0sIHdoaWNoIGhhcHBlbnMgd2hlbiB0aGVcbiAgICAgcmVhZGVyIGVuZCBvZiB0aGUgcGlwZSBpcyBjbG9zZWQsIGFuZCB3ZSBhcmUgdGh1cyBzdXJlIHRoYXQgdGhlIHVucmVhZCBlbGVtZW50cyBwcmVjZWRpbmcgdGhlIGZsdXNoIHdpbGwgbmV2ZXIgYmUgcmVhZC4gKilcbiAgdHlwZSB0ID1cbiAgICB7IGZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgOiBpbnRcbiAgICA7IHJlYWR5IDogWyBgT2sgfCBgUmVhZGVyX2Nsb3NlZCBdIEl2YXIudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBmaWxsIHQgdiA9IEl2YXIuZmlsbCB0LnJlYWR5IHZcbmVuZFxuXG50eXBlICgnYSwgJ3BoYW50b20pIHQgPVxuICB7ICgqIFtpZF0gaXMgYW4gaW50ZWdlciB1c2VkIHRvIGRpc3Rpbmd1aXNoIHBpcGVzIHdoZW4gZGVidWdnaW5nLiAqKVxuICAgIGlkIDogaW50IFNleHBfaGlkZGVuX2luX3Rlc3QudFxuICA7ICgqIFtpbmZvXSBpcyB1c2VyLXByb3ZpZGVkIGFyYml0cmFyeSBzZXhwLCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiAqKVxuICAgIG11dGFibGUgaW5mbyA6IFNleHAudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyAoKiBbYnVmZmVyXSBob2xkcyB2YWx1ZXMgd3JpdHRlbiB0byB0aGUgcGlwZSB0aGF0IGhhdmUgbm90IHlldCBiZWVuIHJlYWQuICopXG4gICAgbXV0YWJsZSBidWZmZXIgOiAnYSBRdWV1ZS50XG4gIDsgKCogW3NpemVfYnVkZ2V0XSBnb3Zlcm5zIHB1c2hiYWNrIG9uIHdyaXRlcnMgdG8gdGhlIHBpcGUuXG5cbiAgICAgICBUaGVyZSBpcyAqbm8qIGludmFyaWFudCB0aGF0IFtRdWV1ZS5sZW5ndGggYnVmZmVyIDw9IHNpemVfYnVkZ2V0XS5cbiAgICAgICBUaGVyZSBpcyBubyBoYXJkIHVwcGVyIGJvdW5kIG9uIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdGhhdCBjYW4gYmUgc3R1ZmZlZCBpbnRvIHRoZVxuICAgICAgIFtidWZmZXJdLiBUaGlzIGlzIGR1ZSB0byB0aGUgd2F5IHdlIGhhbmRsZSB3cml0ZXMuIFdoZW4gd2UgZG8gYSB3cml0ZSwgYWxsIG9mIHRoZVxuICAgICAgIHZhbHVlcyB3cml0dGVuIGFyZSBpbW1lZGlhdGVseSBlbnF1ZXVlZCBpbnRvIFtidWZmZXJdLiBBZnRlciB0aGUgd3JpdGUsIGlmXG4gICAgICAgW1F1ZXVlLmxlbmd0aCBidWZmZXIgPD0gdC5zaXplX2J1ZGdldF0sIHRoZW4gdGhlIHdyaXRlciB3aWxsIGJlIG5vdGlmaWVkIHRvXG4gICAgICAgY29udGludWUgd3JpdGluZy4gQWZ0ZXIgdGhlIHdyaXRlLCBpZiBbbGVuZ3RoIHQgPiB0LnNpemVfYnVkZ2V0XSwgdGhlbiB0aGUgd3JpdGVcbiAgICAgICB3aWxsIGJsb2NrIHVudGlsIHRoZSBwaXBlIGlzIHVuZGVyIGJ1ZGdldC4gKilcbiAgICBtdXRhYmxlIHNpemVfYnVkZ2V0IDogaW50XG4gIDsgKCogW3Jlc2VydmVkX3NwYWNlXSBjb3VudHMgYWdhaW5zdCBbc2l6ZV9idWRnZXRdIHdpdGhvdXQgYWN0dWFsbHkgYnVmZmVyaW5nIGFueXRoaW5nXG4gICAgICAgeWV0LiBXaGVuIGl0J3MgcG9zaXRpdmUsIHdyaXRlcyBkZWNyZW1lbnQgaXQuICopXG4gICAgbXV0YWJsZSByZXNlcnZlZF9zcGFjZSA6IGludFxuICA7ICgqIFtwdXNoYmFja10gaXMgdXNlZCB0byBnaXZlIGZlZWRiYWNrIHRvIHdyaXRlcnMgYWJvdXQgd2hldGhlciB0aGV5IHNob3VsZCB3cml0ZSB0b1xuICAgICAgIHRoZSBwaXBlLiBbcHVzaGJhY2tdIGlzIGZ1bGwgaWZmIFtsZW5ndGggdCArIHJlc2VydmVkX3NwYWNlIHQgPD0gdC5zaXplX2J1ZGdldCB8fFxuICAgICAgIGlzX2Nsb3NlZCB0XS4gKilcbiAgICBtdXRhYmxlIHB1c2hiYWNrIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbbnVtX3ZhbHVlc19yZWFkXSBrZWVwcyB0cmFjayBvZiB0aGUgdG90YWwgbnVtYmVyIG9mIHZhbHVlcyB0aGF0IGhhdmUgYmVlbiByZWFkXG4gICAgICAgZnJvbSB0aGUgcGlwZS4gIFdlIGRvIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IG92ZXJmbG93IGluIFtudW1fdmFsdWVzX3JlYWRdLiAgWW91J2RcbiAgICAgICBuZWVkIHRvIHdyaXRlIDJeNjIgZWxlbWVudHMgdG8gdGhlIHBpcGUsIHdoaWNoIHdvdWxkIHRha2UgYWJvdXQgMTQ2IHllYXJzLCBhdCBhXG4gICAgICAgZmxvdyByYXRlIG9mIDEgc2l6ZS11bml0L25hbm9zZWNvbmQuICopXG4gICAgbXV0YWJsZSBudW1fdmFsdWVzX3JlYWQgOiBpbnRcbiAgKCogW2Jsb2NrZWRfZmx1c2hlc10gaG9sZHMgZmx1c2hlcyB3aG9zZSBwcmVjZWRpbmcgZWxlbWVudHMgaGF2ZSBub3QgYmVlbiBjb21wbGV0ZWx5XG4gICAgIHJlYWQuICBGb3IgZWFjaCBibG9ja2VkIGZsdXNoLCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgbmVlZCB0byBiZSByZWFkIGZyb20gdGhlXG4gICAgIHBpcGUgaW4gb3JkZXIgdG8gZmlsbCB0aGUgZmx1c2ggaXMgICAgICAgICAgICAgICAgICAgICAgICA6XG5cbiAgICAgZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCAtIG51bV92YWx1ZXNfcmVhZFxuXG4gICAgIEtlZXBpbmcgdGhlIGRhdGEgaW4gdGhpcyBmb3JtIGFsbG93cyB1cyB0byBjaGFuZ2UgYSBzaW5nbGUgZmllbGQobnVtX3ZhbHVlc19yZWFkKVxuICAgICB3aGVuIHdlIGNvbnN1bWUgdmFsdWVzIGluc3RlYWQgb2YgaGF2aW5nIHRvIGl0ZXJhdGUgb3ZlciB0aGUgd2hvbGUgcXVldWUgb2ZcbiAgICAgZmx1c2hlcy4gKilcbiAgOyBibG9ja2VkX2ZsdXNoZXMgOiBCbG9ja2VkX2ZsdXNoLnQgUXVldWUudFxuICA7ICgqIFtibG9ja2VkX3JlYWRzXSBob2xkcyByZWFkcyB0aGF0IGFyZSB3YWl0aW5nIG9uIGRhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgcGlwZS4gKilcbiAgICBibG9ja2VkX3JlYWRzIDogJ2EgQmxvY2tlZF9yZWFkLnQgUXVldWUudFxuICA7ICgqIFtjbG9zZWRdIGlzIGZpbGxlZCB3aGVuIHdlIGNsb3NlIHRoZSB3cml0ZSBlbmQgb2YgdGhlIHBpcGUuICopXG4gICAgY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbcmVhZF9jbG9zZWRdIGlzIGZpbGxlZCB3aGVuIHdlIGNsb3NlIHRoZSByZWFkIGVuZCBvZiB0aGUgcGlwZS4gKilcbiAgICByZWFkX2Nsb3NlZCA6IHVuaXQgSXZhci50XG4gIDsgKCogW2NvbnN1bWVyc10gaXMgYSBsaXN0IG9mIGFsbCBjb25zdW1lcnMgdGhhdCBtYXkgYmUgaGFuZGxpbmcgdmFsdWVzIHJlYWQgZnJvbSB0aGVcbiAgICAgICBwaXBlLiAqKVxuICAgIG11dGFibGUgY29uc3VtZXJzIDogQ29uc3VtZXIudCBsaXN0XG4gIDsgKCogW3Vwc3RyZWFtX2ZsdXNoZWRzXSBoYXMgYSBmdW5jdGlvbiBmb3IgZWFjaCBwaXBlIGltbWVkaWF0ZWx5IHVwc3RyZWFtIG9mIHRoaXMgb25lLlxuICAgICAgIFRoYXQgZnVuY3Rpb24gd2Fsa3MgdG8gdGhlIGhlYWQocykgb2YgdGhlIHVwc3RyZWFtIHBpcGUsIGFuZCBjYWxsc1xuICAgICAgIFtkb3duc3RyZWFtX2ZsdXNoZWRdIG9uIHRoZSBoZWFkKHMpLiAgU2VlIHRoZSBkZWZpbml0aW9uIG9mIFt1cHN0cmVhbV9mbHVzaGVkXVxuICAgICAgIGJlbG93LiAqKVxuICAgIHVwc3RyZWFtX2ZsdXNoZWRzIDogKHVuaXQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50KSBCYWcudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBlZmZlY3RpdmVfc2l6ZV9idWRnZXQgdCA9IHQuc2l6ZV9idWRnZXQgLSB0LnJlc2VydmVkX3NwYWNlXG5cbnR5cGUgKCdhLCAncGhhbnRvbSkgcGlwZSA9ICgnYSwgJ3BoYW50b20pIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGhhc2ggdCA9IEhhc2h0YmwuaGFzaCB0LmlkXG5sZXQgZXF1YWwgKHQxIDogKF8sIF8pIHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxubGV0IGNvbXBhcmUgdDEgdDIgPSBJbnQuY29tcGFyZSB0MS5pZCB0Mi5pZFxubGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQuY2xvc2VkXG5sZXQgaXNfcmVhZF9jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LnJlYWRfY2xvc2VkXG5sZXQgY2xvc2VkIHQgPSBJdmFyLnJlYWQgdC5jbG9zZWRcbmxldCBwdXNoYmFjayB0ID0gSXZhci5yZWFkIHQucHVzaGJhY2tcbmxldCBsZW5ndGggdCA9IFF1ZXVlLmxlbmd0aCB0LmJ1ZmZlclxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcbmxldCB1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIHQgfmRlbHRhID0gdC5udW1fdmFsdWVzX3JlYWQgPC0gdC5udW1fdmFsdWVzX3JlYWQgKyBkZWx0YVxuXG5sZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgdHJ5XG4gICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmlkOmlnbm9yZVxuICAgICAgfmluZm86aWdub3JlXG4gICAgICB+YnVmZmVyOmlnbm9yZVxuICAgICAgfnNpemVfYnVkZ2V0OihjaGVjayAoZnVuIHNpemVfYnVkZ2V0IC0+IGFzc2VydCAoc2l6ZV9idWRnZXQgPj0gMCkpKVxuICAgICAgfnJlc2VydmVkX3NwYWNlOihjaGVjayAoZnVuIHJlc2VydmVkX3NwYWNlIC0+IGFzc2VydCAocmVzZXJ2ZWRfc3BhY2UgPj0gMCkpKVxuICAgICAgfnB1c2hiYWNrOlxuICAgICAgICAoY2hlY2sgKGZ1biBwdXNoYmFjayAtPlxuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIEJvb2wuZXF1YWxcbiAgICAgICAgICAgICAgIChJdmFyLmlzX2Z1bGwgcHVzaGJhY2spXG4gICAgICAgICAgICAgICAobGVuZ3RoIHQgPD0gZWZmZWN0aXZlX3NpemVfYnVkZ2V0IHQgfHwgaXNfY2xvc2VkIHQpKSkpXG4gICAgICB+bnVtX3ZhbHVlc19yZWFkOmlnbm9yZVxuICAgICAgfmJsb2NrZWRfZmx1c2hlczpcbiAgICAgICAgKGNoZWNrIChmdW4gYmxvY2tlZF9mbHVzaGVzIC0+XG4gICAgICAgICAgIFF1ZXVlLml0ZXIgYmxvY2tlZF9mbHVzaGVzIH5mOihmdW4gKGYgOiBCbG9ja2VkX2ZsdXNoLnQpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChmLmZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgPiB0Lm51bV92YWx1ZXNfcmVhZCkpO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIExpc3QuaXNfc29ydGVkXG4gICAgICAgICAgICAgICB+Y29tcGFyZTpJbnQuY29tcGFyZVxuICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAoUXVldWUudG9fbGlzdCBibG9ja2VkX2ZsdXNoZXMpXG4gICAgICAgICAgICAgICAgICB+ZjpCbG9ja2VkX2ZsdXNoLmZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQpKTtcbiAgICAgICAgICAgaWYgaXNfZW1wdHkgdCB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgYmxvY2tlZF9mbHVzaGVzKSkpXG4gICAgICB+YmxvY2tlZF9yZWFkczpcbiAgICAgICAgKGNoZWNrIChmdW4gYmxvY2tlZF9yZWFkcyAtPlxuICAgICAgICAgICAoKiBJZiBkYXRhIGlzIGF2YWlsYWJsZSwgbm8gb25lIGlzIHdhaXRpbmcgZm9yIGl0LiAgVGhpcyB3b3VsZCBuZWVkIHRvIGNoYW5nZSBpZlxuICAgICAgICAgICAgICB3ZSBldmVyIGltcGxlbWVudCBbcmVhZF9leGFjdGx5XSBhcyBhbiBhdG9taWMgb3BlcmF0aW9uLiAqKVxuICAgICAgICAgICBpZiBub3QgKGlzX2VtcHR5IHQpIHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX3JlYWRzKTtcbiAgICAgICAgICAgUXVldWUuaXRlciBibG9ja2VkX3JlYWRzIH5mOihmdW4gcmVhZCAtPlxuICAgICAgICAgICAgIEJsb2NrZWRfcmVhZC5pbnZhcmlhbnQgcmVhZDtcbiAgICAgICAgICAgICBhc3NlcnQgKEJsb2NrZWRfcmVhZC5pc19lbXB0eSByZWFkKSk7XG4gICAgICAgICAgICgqIFlvdSBuZXZlciBibG9jayB0cnlpbmcgdG8gcmVhZCBhIGNsb3NlZCBwaXBlLiAqKVxuICAgICAgICAgICBpZiBpc19jbG9zZWQgdCB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgYmxvY2tlZF9yZWFkcykpKVxuICAgICAgfmNsb3NlZDppZ25vcmVcbiAgICAgIH5yZWFkX2Nsb3NlZDppZ25vcmVcbiAgICAgIH5jb25zdW1lcnM6XG4gICAgICAgIChjaGVjayAoZnVuIGwgLT5cbiAgICAgICAgICAgTGlzdC5pdGVyIGwgfmY6KGZ1biBjb25zdW1lciAtPlxuICAgICAgICAgICAgIENvbnN1bWVyLmludmFyaWFudCBjb25zdW1lcjtcbiAgICAgICAgICAgICBhc3NlcnQgKENvbnN1bWVyLnBpcGVfaWQgY29uc3VtZXIgPSB0LmlkKSkpKVxuICAgICAgfnVwc3RyZWFtX2ZsdXNoZWRzOmlnbm9yZVxuICB3aXRoXG4gIHwgZXhuIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgfnBpcGU6KHQgOiAoXywgXykgdCldXG47O1xuXG5tb2R1bGUgUmVhZGVyID0gc3RydWN0XG4gIHR5cGUgcGhhbnRvbSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICdhIHQgPSAoJ2EsIHBoYW50b20pIHBpcGUgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5lbmRcblxubW9kdWxlIFdyaXRlciA9IHN0cnVjdFxuICB0eXBlIHBoYW50b20gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAnYSB0ID0gKCdhLCBwaGFudG9tKSBwaXBlIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuZW5kXG5cbmxldCBpZF9yZWYgPSByZWYgMFxuXG5sZXQgY3JlYXRlX2ludGVybmFsIH5zaXplX2J1ZGdldCB+aW5mbyB+aW5pdGlhbF9idWZmZXIgPVxuICBpbmNyIGlkX3JlZjtcbiAgbGV0IHQgPVxuICAgIHsgaWQgPSAhaWRfcmVmXG4gICAgOyBpbmZvXG4gICAgOyBjbG9zZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgcmVhZF9jbG9zZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDtcbiAgICAgIHNpemVfYnVkZ2V0XG4gICAgOyByZXNlcnZlZF9zcGFjZSA9IDBcbiAgICA7IHB1c2hiYWNrID0gSXZhci5jcmVhdGUgKClcbiAgICA7IGJ1ZmZlciA9IGluaXRpYWxfYnVmZmVyXG4gICAgOyBudW1fdmFsdWVzX3JlYWQgPSAwXG4gICAgOyBibG9ja2VkX2ZsdXNoZXMgPSBRdWV1ZS5jcmVhdGUgKClcbiAgICA7IGJsb2NrZWRfcmVhZHMgPSBRdWV1ZS5jcmVhdGUgKClcbiAgICA7IGNvbnN1bWVycyA9IFtdXG4gICAgOyB1cHN0cmVhbV9mbHVzaGVkcyA9IEJhZy5jcmVhdGUgKClcbiAgICB9XG4gIGluXG4gIHRcbjs7XG5cbmxldCB2YWxpZGF0ZV9zaXplX2J1ZGdldCBzaXplX2J1ZGdldCA9XG4gIGlmIHNpemVfYnVkZ2V0IDwgMFxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwibmVnYXRpdmUgc2l6ZV9idWRnZXRcIiAoc2l6ZV9idWRnZXQgOiBpbnQpXVxuICBlbHNlIHNpemVfYnVkZ2V0XG47O1xuXG5sZXQgY3JlYXRlID9zaXplX2J1ZGdldCA/aW5mbyAoKSA9XG4gIGxldCBzaXplX2J1ZGdldCA9XG4gICAgbWF0Y2ggc2l6ZV9idWRnZXQgd2l0aFxuICAgIHwgU29tZSB2IC0+IHZhbGlkYXRlX3NpemVfYnVkZ2V0IHZcbiAgICB8IE5vbmUgLT4gMFxuICBpblxuICBsZXQgdCA9IGNyZWF0ZV9pbnRlcm5hbCB+c2l6ZV9idWRnZXQgfmluZm8gfmluaXRpYWxfYnVmZmVyOihRdWV1ZS5jcmVhdGUgKCkpIGluXG4gICgqIGluaXRpYWxseSwgdGhlIHBpcGUgZG9lcyBub3QgcHVzaGJhY2sgKilcbiAgSXZhci5maWxsIHQucHVzaGJhY2sgKCk7XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgdCwgdFxuOztcblxubGV0IHVwZGF0ZV9wdXNoYmFjayB0ID1cbiAgaWYgbGVuZ3RoIHQgPD0gZWZmZWN0aXZlX3NpemVfYnVkZ2V0IHQgfHwgaXNfY2xvc2VkIHRcbiAgdGhlbiBJdmFyLmZpbGxfaWZfZW1wdHkgdC5wdXNoYmFjayAoKVxuICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LnB1c2hiYWNrXG4gIHRoZW4gdC5wdXNoYmFjayA8LSBJdmFyLmNyZWF0ZSAoKVxuOztcblxubGV0IGNsb3NlIHQgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgXCJjbG9zZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgbm90IChpc19jbG9zZWQgdClcbiAgdGhlbiAoXG4gICAgSXZhci5maWxsIHQuY2xvc2VkICgpO1xuICAgIGlmIGlzX2VtcHR5IHRcbiAgICB0aGVuIChcbiAgICAgIFF1ZXVlLml0ZXIgdC5ibG9ja2VkX3JlYWRzIH5mOkJsb2NrZWRfcmVhZC5maWxsX3dpdGhfZW9mO1xuICAgICAgUXVldWUuY2xlYXIgdC5ibG9ja2VkX3JlYWRzKTtcbiAgICB1cGRhdGVfcHVzaGJhY2sgdClcbjs7XG5cbmxldCBjbG9zZV9yZWFkIHQgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgXCJjbG9zZV9yZWFkXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBpZiBub3QgKGlzX3JlYWRfY2xvc2VkIHQpXG4gIHRoZW4gKFxuICAgIEl2YXIuZmlsbCB0LnJlYWRfY2xvc2VkICgpO1xuICAgIFF1ZXVlLml0ZXIgdC5ibG9ja2VkX2ZsdXNoZXMgfmY6KGZ1biBmbHVzaCAtPiBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggYFJlYWRlcl9jbG9zZWQpO1xuICAgIFF1ZXVlLmNsZWFyIHQuYmxvY2tlZF9mbHVzaGVzO1xuICAgIFF1ZXVlLmNsZWFyIHQuYnVmZmVyO1xuICAgIHQucmVzZXJ2ZWRfc3BhY2UgPC0gMDtcbiAgICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgICAoKiB3ZSBqdXN0IGNsZWFyZWQgdGhlIGJ1ZmZlciwgc28gbWF5IG5lZWQgdG8gZmlsbCBbdC5wdXNoYmFja10gKilcbiAgICBjbG9zZSB0KVxuOztcblxubGV0IGNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4Y2VwdGlvbiA/c2l6ZV9idWRnZXQgZiA9XG4gIGxldCByLCB3ID0gY3JlYXRlID9zaXplX2J1ZGdldCAoKSBpblxuICB1cG9uIChmIHcpIChmdW4gKCkgLT4gY2xvc2Ugdyk7XG4gIHJcbjs7XG5cbmxldCBjcmVhdGVfcmVhZGVyID9zaXplX2J1ZGdldCB+Y2xvc2Vfb25fZXhjZXB0aW9uIGYgPVxuICBpZiBub3QgY2xvc2Vfb25fZXhjZXB0aW9uXG4gIHRoZW4gY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uID9zaXplX2J1ZGdldCBmXG4gIGVsc2UgKFxuICAgIGxldCByLCB3ID0gY3JlYXRlID9zaXplX2J1ZGdldCAoKSBpblxuICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAoTW9uaXRvci5wcm90ZWN0XG4gICAgICAgICAoZnVuICgpIC0+IGYgdylcbiAgICAgICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgICAgICAgY2xvc2UgdztcbiAgICAgICAgICAgcmV0dXJuICgpKSk7XG4gICAgcilcbjs7XG5cbmxldCBjcmVhdGVfd3JpdGVyID9zaXplX2J1ZGdldCBmID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKE1vbml0b3IucHJvdGVjdFxuICAgICAgIChmdW4gKCkgLT4gZiByKVxuICAgICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgICAgIGNsb3NlX3JlYWQgcjtcbiAgICAgICAgIHJldHVybiAoKSkpO1xuICB3XG47O1xuXG5sZXQgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyID1cbiAgT3B0aW9uLml0ZXIgY29uc3VtZXIgfmY6Q29uc3VtZXIuc3RhcnQ7XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWF0Y2ggUXVldWUucGVlayB0LmJsb2NrZWRfZmx1c2hlcyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGZsdXNoIC0+XG4gICAgICBpZiB0Lm51bV92YWx1ZXNfcmVhZCA+PSBmbHVzaC5maWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkXG4gICAgICB0aGVuIChcbiAgICAgICAgaWdub3JlIChRdWV1ZS5kZXF1ZXVlX2V4biB0LmJsb2NrZWRfZmx1c2hlcyA6IEJsb2NrZWRfZmx1c2gudCk7XG4gICAgICAgIChtYXRjaCBjb25zdW1lciB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gQmxvY2tlZF9mbHVzaC5maWxsIGZsdXNoIGBPa1xuICAgICAgICAgfCBTb21lIGNvbnN1bWVyIC0+XG4gICAgICAgICAgIHVwb25cbiAgICAgICAgICAgICAoQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1c2hlZCBjb25zdW1lcilcbiAgICAgICAgICAgICAoZnVuIGZsdXNoX3Jlc3VsdCAtPiBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggZmx1c2hfcmVzdWx0KSk7XG4gICAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKClcbjs7XG5cbigqIFtjb25zdW1lX2FsbCB0XSByZWFkcyBhbGwgdGhlIGVsZW1lbnRzIGluIFt0XS4gKilcbmxldCBjb25zdW1lX2FsbCB0IGNvbnN1bWVyID1cbiAgbGV0IHJlc3VsdCA9IHQuYnVmZmVyIGluXG4gIHQuYnVmZmVyIDwtIFF1ZXVlLmNyZWF0ZSAoKTtcbiAgdXBkYXRlX251bV92YWx1ZXNfcmVhZCB0IH5kZWx0YTooUXVldWUubGVuZ3RoIHJlc3VsdCk7XG4gIHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lcjtcbiAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gIHJlc3VsdFxuOztcblxubGV0IGNvbnN1bWVfb25lIHQgY29uc3VtZXIgPVxuICBhc3NlcnQgKGxlbmd0aCB0ID49IDEpO1xuICBsZXQgcmVzdWx0ID0gUXVldWUuZGVxdWV1ZV9leG4gdC5idWZmZXIgaW5cbiAgdXBkYXRlX251bV92YWx1ZXNfcmVhZCB0IH5kZWx0YToxO1xuICB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXI7XG4gIHVwZGF0ZV9wdXNoYmFjayB0O1xuICByZXN1bHRcbjs7XG5cbmxldCBjb25zdW1lIHQgfm1heF9xdWV1ZV9sZW5ndGggY29uc3VtZXIgPVxuICBhc3NlcnQgKG1heF9xdWV1ZV9sZW5ndGggPj0gMCk7XG4gIGlmIG1heF9xdWV1ZV9sZW5ndGggPj0gbGVuZ3RoIHRcbiAgdGhlbiBjb25zdW1lX2FsbCB0IGNvbnN1bWVyXG4gIGVsc2UgKFxuICAgIHVwZGF0ZV9udW1fdmFsdWVzX3JlYWQgdCB+ZGVsdGE6bWF4X3F1ZXVlX2xlbmd0aDtcbiAgICB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXI7XG4gICAgbGV0IHJlc3VsdCA9IFF1ZXVlLmNyZWF0ZSB+Y2FwYWNpdHk6bWF4X3F1ZXVlX2xlbmd0aCAoKSBpblxuICAgIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzp0LmJ1ZmZlciB+ZHN0OnJlc3VsdCB+bGVuOm1heF9xdWV1ZV9sZW5ndGggKCk7XG4gICAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gICAgcmVzdWx0KVxuOztcblxubGV0IHNldF9zaXplX2J1ZGdldCB0IHNpemVfYnVkZ2V0ID1cbiAgbGV0IHNpemVfYnVkZ2V0ID0gdmFsaWRhdGVfc2l6ZV9idWRnZXQgc2l6ZV9idWRnZXQgaW5cbiAgdC5zaXplX2J1ZGdldCA8LSBzaXplX2J1ZGdldDtcbiAgdXBkYXRlX3B1c2hiYWNrIHRcbjs7XG5cbmxldCByZXNlcnZlX3NwYWNlIHQgbiA9XG4gIGlmIG4gPCAwIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJyZXNlcnZpbmcgbmVnYXRpdmUgc3BhY2VcIiAobiA6IGludCldO1xuICBsZXQgcmVzZXJ2ZWRfc3BhY2UgPSB0LnJlc2VydmVkX3NwYWNlICsgbiBpblxuICBpZiByZXNlcnZlZF9zcGFjZSA8IDBcbiAgdGhlblxuICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwib3ZlcmZsb3cgd2hlbiByZXNlcnZpbmcgc3BhY2VcIiAodC5yZXNlcnZlZF9zcGFjZSA6IGludCkgKG4gOiBpbnQpXTtcbiAgdC5yZXNlcnZlZF9zcGFjZSA8LSByZXNlcnZlZF9zcGFjZTtcbiAgdXBkYXRlX3B1c2hiYWNrIHRcbjs7XG5cbmxldCBmaWxsX2Jsb2NrZWRfcmVhZHMgdCA9XG4gIHdoaWxlIChub3QgKFF1ZXVlLmlzX2VtcHR5IHQuYmxvY2tlZF9yZWFkcykpICYmIG5vdCAoaXNfZW1wdHkgdCkgZG9cbiAgICBsZXQgYmxvY2tlZF9yZWFkID0gUXVldWUuZGVxdWV1ZV9leG4gdC5ibG9ja2VkX3JlYWRzIGluXG4gICAgbGV0IGNvbnN1bWVyID0gYmxvY2tlZF9yZWFkLmNvbnN1bWVyIGluXG4gICAgbWF0Y2ggYmxvY2tlZF9yZWFkLndhbnRzIHdpdGhcbiAgICB8IFplcm8gaXZhciAtPiBJdmFyLmZpbGwgaXZhciBgT2tcbiAgICB8IE9uZSBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIChgT2sgKGNvbnN1bWVfb25lIHQgY29uc3VtZXIpKVxuICAgIHwgQXRfbW9zdCAobWF4X3F1ZXVlX2xlbmd0aCwgaXZhcikgLT5cbiAgICAgIEl2YXIuZmlsbCBpdmFyIChgT2sgKGNvbnN1bWUgdCB+bWF4X3F1ZXVlX2xlbmd0aCBjb25zdW1lcikpXG4gIGRvbmVcbjs7XG5cbmxldCBkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSB0IG4gPSB0LnJlc2VydmVkX3NwYWNlIDwtIEludC5tYXggMCAodC5yZXNlcnZlZF9zcGFjZSAtIG4pXG5cbigqIGNoZWNrcyBhbGwgaW52YXJpYW50cywgY2FsbHMgYSBwYXNzZWQgaW4gZiB0byBoYW5kbGUgYSB3cml0ZSwgdGhlbiB1cGRhdGVzIHJlYWRzIGFuZFxuICAgcHVzaGJhY2sgKilcbmxldCBzdGFydF93cml0ZSB0IH5zaXplID1cbiAgaWYgIXNob3dfZGVidWdfbWVzc2FnZXMgdGhlbiBlcHJpbnRzIFwid3JpdGVcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIGlzX2Nsb3NlZCB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJ3cml0ZSB0byBjbG9zZWQgcGlwZVwiIH5waXBlOih0IDogKF8sIF8pIHQpXTtcbiAgZGVjcmVhc2VfcmVzZXJ2ZWRfc3BhY2UgdCBzaXplXG47O1xuXG5sZXQgZmluaXNoX3dyaXRlIHQgPVxuICBmaWxsX2Jsb2NrZWRfcmVhZHMgdDtcbiAgdXBkYXRlX3B1c2hiYWNrIHRcbjs7XG5cbmxldCB0cmFuc2Zlcl9pbl93aXRob3V0X3B1c2hiYWNrIHQgfmZyb20gPVxuICBzdGFydF93cml0ZSB0IH5zaXplOihRdWV1ZS5sZW5ndGggZnJvbSk7XG4gIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzpmcm9tIH5kc3Q6dC5idWZmZXIgKCk7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgdHJhbnNmZXJfaW4gdCB+ZnJvbSA9XG4gIHRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZnJvbTtcbiAgcHVzaGJhY2sgdFxuOztcblxubGV0IGNvcHlfaW5fd2l0aG91dF9wdXNoYmFjayB0IH5mcm9tID1cbiAgc3RhcnRfd3JpdGUgdCB+c2l6ZTooUXVldWUubGVuZ3RoIGZyb20pO1xuICBRdWV1ZS5pdGVyIGZyb20gfmY6KGZ1biB4IC0+IFF1ZXVlLmVucXVldWUgdC5idWZmZXIgeCk7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG4oKiBbd3JpdGUnXSBpcyB1c2VkIGludGVybmFsbHkgKilcbmxldCB3cml0ZScgdCBxID0gdHJhbnNmZXJfaW4gdCB+ZnJvbTpxXG5cbmxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgdmFsdWUgPVxuICBzdGFydF93cml0ZSB0IH5zaXplOjE7XG4gIFF1ZXVlLmVucXVldWUgdC5idWZmZXIgdmFsdWU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgd3JpdGUgdCB2YWx1ZSA9XG4gIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB2YWx1ZTtcbiAgcHVzaGJhY2sgdFxuOztcblxubGV0IHdyaXRlX3doZW5fcmVhZHkgdCB+ZiA9XG4gIGxldCVtYXAgKCkgPSBwdXNoYmFjayB0IGluXG4gIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYENsb3NlZCBlbHNlIGBPayAoZiAoZnVuIHggLT4gd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHgpKVxuOztcblxubGV0IHdyaXRlX2lmX29wZW4gdCB4ID0gaWYgbm90IChpc19jbG9zZWQgdCkgdGhlbiB3cml0ZSB0IHggZWxzZSByZXR1cm4gKClcblxubGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2tfaWZfb3BlbiB0IHggPVxuICBpZiBub3QgKGlzX2Nsb3NlZCB0KSB0aGVuIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4XG47O1xuXG5sZXQgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgP2NvbnN1bWVyIHQgPVxuICBtYXRjaCBjb25zdW1lciB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgY29uc3VtZXIgLT5cbiAgICBpZiB0LmlkIDw+IENvbnN1bWVyLnBpcGVfaWQgY29uc3VtZXJcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiQXR0ZW1wdCB0byB1c2UgY29uc3VtZXIgd2l0aCB3cm9uZyBwaXBlXCJcbiAgICAgICAgICAgIChjb25zdW1lciA6IENvbnN1bWVyLnQpXG4gICAgICAgICAgICB+cGlwZToodCA6IF8gUmVhZGVyLnQpXVxuOztcblxubGV0IHN0YXJ0X3JlYWQgP2NvbnN1bWVyIHQgbGFiZWwgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgbGFiZWwgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyB0ID9jb25zdW1lclxuOztcblxubGV0IGdlbl9yZWFkX25vdyA/Y29uc3VtZXIgdCBjb25zdW1lID1cbiAgc3RhcnRfcmVhZCB0IFwicmVhZF9ub3dcIiA/Y29uc3VtZXI7XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBpZiBpc19jbG9zZWQgdCB0aGVuIGBFb2YgZWxzZSBgTm90aGluZ19hdmFpbGFibGVcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSB0LmJsb2NrZWRfcmVhZHMpO1xuICAgICgqIGZyb20gW2ludmFyaWFudF0gYW5kIFtub3QgKGlzX2VtcHR5IHQpXSAqKVxuICAgIGBPayAoY29uc3VtZSB0IGNvbnN1bWVyKSlcbjs7XG5cbmxldCBnZXRfbWF4X3F1ZXVlX2xlbmd0aCB+bWF4X3F1ZXVlX2xlbmd0aCA9XG4gIG1hdGNoIG1heF9xdWV1ZV9sZW5ndGggd2l0aFxuICB8IE5vbmUgLT4gSW50Lm1heF92YWx1ZVxuICB8IFNvbWUgbWF4X3F1ZXVlX2xlbmd0aCAtPlxuICAgIGlmIG1heF9xdWV1ZV9sZW5ndGggPD0gMFxuICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJtYXhfcXVldWVfbGVuZ3RoIDw9IDBcIiAobWF4X3F1ZXVlX2xlbmd0aCA6IGludCldO1xuICAgIG1heF9xdWV1ZV9sZW5ndGhcbjs7XG5cbmxldCByZWFkX25vdycgP2NvbnN1bWVyID9tYXhfcXVldWVfbGVuZ3RoIHQgPVxuICBsZXQgbWF4X3F1ZXVlX2xlbmd0aCA9IGdldF9tYXhfcXVldWVfbGVuZ3RoIH5tYXhfcXVldWVfbGVuZ3RoIGluXG4gIGdlbl9yZWFkX25vdyB0ID9jb25zdW1lciAoZnVuIHQgY29uc3VtZXIgLT4gY29uc3VtZSB0IH5tYXhfcXVldWVfbGVuZ3RoIGNvbnN1bWVyKVxuOztcblxubGV0IHJlYWRfbm93ID9jb25zdW1lciB0ID0gZ2VuX3JlYWRfbm93IHQgP2NvbnN1bWVyIGNvbnN1bWVfb25lXG5sZXQgcGVlayB0ID0gUXVldWUucGVlayB0LmJ1ZmZlclxuXG5sZXQgY2xlYXIgdCA9XG4gIG1hdGNoIHJlYWRfbm93JyB0IHdpdGhcbiAgfCBgRW9mIHwgYE5vdGhpbmdfYXZhaWxhYmxlIHwgYE9rIF8gLT4gKClcbjs7XG5cbmxldCByZWFkJyA/Y29uc3VtZXIgP21heF9xdWV1ZV9sZW5ndGggdCA9XG4gIGxldCBtYXhfcXVldWVfbGVuZ3RoID0gZ2V0X21heF9xdWV1ZV9sZW5ndGggfm1heF9xdWV1ZV9sZW5ndGggaW5cbiAgc3RhcnRfcmVhZCB0IFwicmVhZCdcIiA/Y29uc3VtZXI7XG4gIG1hdGNoIHJlYWRfbm93JyB0ID9jb25zdW1lciB+bWF4X3F1ZXVlX2xlbmd0aCB3aXRoXG4gIHwgKGBPayBfIHwgYEVvZikgYXMgciAtPiByZXR1cm4gclxuICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgIFF1ZXVlLmVucXVldWVcbiAgICAgICAgdC5ibG9ja2VkX3JlYWRzXG4gICAgICAgIChCbG9ja2VkX3JlYWQuY3JlYXRlIChBdF9tb3N0IChtYXhfcXVldWVfbGVuZ3RoLCBpdmFyKSkgY29uc3VtZXIpKVxuOztcblxubGV0IHJlYWQgP2NvbnN1bWVyIHQgPVxuICBzdGFydF9yZWFkIHQgXCJyZWFkXCIgP2NvbnN1bWVyO1xuICBpZiBpc19lbXB0eSB0XG4gIHRoZW5cbiAgICBpZiBpc19jbG9zZWQgdFxuICAgIHRoZW4gcmV0dXJuIGBFb2ZcbiAgICBlbHNlXG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgICAgIFF1ZXVlLmVucXVldWUgdC5ibG9ja2VkX3JlYWRzIChCbG9ja2VkX3JlYWQuKGNyZWF0ZSAoT25lIGl2YXIpKSBjb25zdW1lcikpXG4gIGVsc2UgKFxuICAgIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgdC5ibG9ja2VkX3JlYWRzKTtcbiAgICByZXR1cm4gKGBPayAoY29uc3VtZV9vbmUgdCBjb25zdW1lcikpKVxuOztcblxubGV0IHJlYWRfZXhuID9jb25zdW1lciB0ID1cbiAgbWF0Y2glbWFwIHJlYWQgP2NvbnN1bWVyIHQgd2l0aFxuICB8IGBPayB2YWx1ZSAtPiB2YWx1ZVxuICB8IGBFb2YgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLnJlYWRfZXhuOiByZWNlaXZlZCBFT0ZcIl1cbjs7XG5cbmxldCB2YWx1ZXNfYXZhaWxhYmxlIHQgPVxuICBzdGFydF9yZWFkIHQgXCJ2YWx1ZXNfYXZhaWxhYmxlXCI7XG4gIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgdGhlbiByZXR1cm4gYE9rXG4gIGVsc2UgaWYgaXNfY2xvc2VkIHRcbiAgdGhlbiByZXR1cm4gYEVvZlxuICBlbHNlIChcbiAgICBtYXRjaCBRdWV1ZS5sYXN0IHQuYmxvY2tlZF9yZWFkcyB3aXRoXG4gICAgfCBTb21lIHsgY29uc3VtZXIgPSBOb25lOyB3YW50cyA9IFplcm8gaXZhciB9IC0+XG4gICAgICAoKiBUaGlzIGNhc2UgaXMgYW4gb3B0aW1pemF0aW9uIGZvciBtdWx0aXBsZSBjYWxscyB0byBbdmFsdWVzX2F2YWlsYWJsZV0gaW5cbiAgICAgICAgIHNlcXVlbmNlLiAgSXQgY2F1c2VzIHRoZW0gdG8gYWxsIHNoYXJlIHRoZSBzYW1lIGl2YXIsIHJhdGhlciB0aGFuIGFsbG9jYXRlXG4gICAgICAgICBhbiBpdmFyIHBlciBjYWxsLiAqKVxuICAgICAgSXZhci5yZWFkIGl2YXJcbiAgICB8IF8gLT5cbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgICAgUXVldWUuZW5xdWV1ZSB0LmJsb2NrZWRfcmVhZHMgKEJsb2NrZWRfcmVhZC4oY3JlYXRlIChaZXJvIGl2YXIpKSBOb25lKSkpXG47O1xuXG5sZXQgcmVhZF9jaG9pY2UgdCA9IGNob2ljZSAodmFsdWVzX2F2YWlsYWJsZSB0KSAoZnVuIChfIDogWyBgT2sgfCBgRW9mIF0pIC0+IHJlYWRfbm93IHQpXG5cbmxldCByZWFkX2Nob2ljZV9zaW5nbGVfY29uc3VtZXJfZXhuIHQgaGVyZSA9XG4gIERlZmVycmVkLkNob2ljZS5tYXAgKHJlYWRfY2hvaWNlIHQpIH5mOihmdW5jdGlvblxuICAgIHwgKGBPayBfIHwgYEVvZikgYXMgeCAtPiB4XG4gICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJQaXBlLnJlYWRfY2hvaWNlX3NpbmdsZV9jb25zdW1lcl9leG46IGNob2ljZSB3YXMgZW5hYmxlZCBidXQgcGlwZSBpcyBlbXB0eTsgXFxcbiAgICAgICAgICAgdGhpcyBpcyBsaWtlbHkgZHVlIHRvIGEgcmFjZSBjb25kaXRpb24gd2l0aCBvbmUgb3IgbW9yZSBvdGhlciBjb25zdW1lcnNcIlxuICAgICAgICAgICAgKGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV0pXG47O1xuXG4oKiBbcmVhZF9leGFjdGx5IHQgfm51bV92YWx1ZXNdIGxvb3BzLCBnZXR0aW5nIHlvdSBhbGwgW251bV92YWx1ZXNdIGl0ZW1zLCB1cFxuICAgdG8gRU9GLiAqKVxubGV0IHJlYWRfZXhhY3RseSA/Y29uc3VtZXIgdCB+bnVtX3ZhbHVlcyA9XG4gIHN0YXJ0X3JlYWQgdCBcInJlYWRfZXhhY3RseVwiID9jb25zdW1lcjtcbiAgaWYgbnVtX3ZhbHVlcyA8PSAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLnJlYWRfZXhhY3RseSBnb3QgbnVtX3ZhbHVlcyA8PSAwXCIgKG51bV92YWx1ZXMgOiBpbnQpXTtcbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gZmluaXNoIC0+XG4gICAgbGV0IHJlc3VsdCA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBsZXQgYWxyZWFkeV9yZWFkID0gUXVldWUubGVuZ3RoIHJlc3VsdCBpblxuICAgICAgYXNzZXJ0IChhbHJlYWR5X3JlYWQgPD0gbnVtX3ZhbHVlcyk7XG4gICAgICBpZiBhbHJlYWR5X3JlYWQgPSBudW1fdmFsdWVzXG4gICAgICB0aGVuIEl2YXIuZmlsbCBmaW5pc2ggKGBFeGFjdGx5IHJlc3VsdClcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZCcgP2NvbnN1bWVyIHQgfm1heF9xdWV1ZV9sZW5ndGg6KG51bV92YWx1ZXMgLSBhbHJlYWR5X3JlYWQpXG4gICAgICAgID4+PiBmdW5jdGlvblxuICAgICAgICB8IGBFb2YgLT4gSXZhci5maWxsIGZpbmlzaCAoaWYgYWxyZWFkeV9yZWFkID0gMCB0aGVuIGBFb2YgZWxzZSBgRmV3ZXIgcmVzdWx0KVxuICAgICAgICB8IGBPayBxIC0+XG4gICAgICAgICAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOnEgfmRzdDpyZXN1bHQgKCk7XG4gICAgICAgICAgbG9vcCAoKVxuICAgIGluXG4gICAgbG9vcCAoKSlcbjs7XG5cbmxldCBkb3duc3RyZWFtX2ZsdXNoZWQgdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlblxuICAgIGlmIExpc3QuaXNfZW1wdHkgdC5jb25zdW1lcnNcbiAgICB0aGVuIHJldHVybiBgT2tcbiAgICBlbHNlXG4gICAgICBGbHVzaGVkX3Jlc3VsdC5jb21iaW5lXG4gICAgICAgIChMaXN0Lm1hcCB0LmNvbnN1bWVycyB+ZjpDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkKVxuICBlbHNlXG4gICAgKCogW3RdIG1pZ2h0IGJlIGNsb3NlZC4gIEJ1dCB0aGUgcmVhZCBlbmQgY2FuJ3QgYmUgY2xvc2VkLCBiZWNhdXNlIGlmIGl0IHdlcmUsIHRoZW5cbiAgICAgICBbdF0gd291bGQgYmUgZW1wdHkuICBJZiB0aGUgd3JpdGUgZW5kIGlzIGNsb3NlZCBidXQgbm90IHRoZSByZWFkIGVuZCwgdGhlbiB3ZSB3YW50XG4gICAgICAgdG8gZW5xdWV1ZSBhIGJsb2NrZWQgZmx1c2ggYmVjYXVzZSB0aGUgZW5xdWV1ZWQgdmFsdWVzIG1heSBnZXQgcmVhZC4gKilcbiAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZWFkeSAtPlxuICAgICAgUXVldWUuZW5xdWV1ZVxuICAgICAgICB0LmJsb2NrZWRfZmx1c2hlc1xuICAgICAgICB7IGZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgPSB0Lm51bV92YWx1ZXNfcmVhZCArIGxlbmd0aCB0OyByZWFkeSB9KVxuOztcblxuKCogSW4gcHJhY3RpY2UsIGFsb25nIHdpdGggW0xpbmsuY3JlYXRlXSBhbmQgW2FkZF91cHN0cmVhbV9mbHVzaGVkXSwgW3Vwc3RyZWFtX2ZsdXNoZWRdXG4gICB0cmF2ZXJzZXMgdGhlIGdyYXBoIG9mIGxpbmtlZCBwaXBlcyB1cCB0byB0aGUgaGVhZHMgYW5kIHRoZW4gY2FsbHMgW2Rvd25zdHJlYW1fZmx1c2hlZF1cbiAgIG9uIHRoZW0uICopXG5sZXQgdXBzdHJlYW1fZmx1c2hlZCB0ID1cbiAgaWYgQmFnLmlzX2VtcHR5IHQudXBzdHJlYW1fZmx1c2hlZHNcbiAgdGhlbiBkb3duc3RyZWFtX2ZsdXNoZWQgdFxuICBlbHNlXG4gICAgQmFnLnRvX2xpc3QgdC51cHN0cmVhbV9mbHVzaGVkc1xuICAgIHw+IExpc3QubWFwIH5mOihmdW4gZiAtPiBmICgpKVxuICAgIHw+IEZsdXNoZWRfcmVzdWx0LmNvbWJpbmVcbjs7XG5cbmxldCBhZGRfdXBzdHJlYW1fZmx1c2hlZCB0IHVwc3RyZWFtX2ZsdXNoZWQgPSBCYWcuYWRkIHQudXBzdHJlYW1fZmx1c2hlZHMgdXBzdHJlYW1fZmx1c2hlZFxuXG5sZXQgYWRkX2NvbnN1bWVyIHQgfmRvd25zdHJlYW1fZmx1c2hlZCA9XG4gIGxldCBjb25zdW1lciA9IENvbnN1bWVyLmNyZWF0ZSB+cGlwZV9pZDp0LmlkIH5kb3duc3RyZWFtX2ZsdXNoZWQgaW5cbiAgdC5jb25zdW1lcnMgPC0gY29uc3VtZXIgOjogdC5jb25zdW1lcnM7XG4gIGNvbnN1bWVyXG47O1xuXG4oKiBBIFtMaW5rLnRdIGxpbmtzIGZsdXNoaW5nIG9mIHR3byBwaXBlcyB0b2dldGhlci4gKilcbm1vZHVsZSBMaW5rIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1cHN0cmVhbTooXywgXykgcGlwZSAtPiBkb3duc3RyZWFtOihfLCBfKSBwaXBlIC0+IHRcbiAgdmFsIGNvbnN1bWVyIDogdCAtPiBDb25zdW1lci50XG5cbiAgKCogW3VubGlua191cHN0cmVhbV0gcmVtb3ZlcyBkb3duc3RyZWFtJ3MgcmVmZXJlbmNlIHRvIHVwc3RyZWFtLiAqKVxuXG4gIHZhbCB1bmxpbmtfdXBzdHJlYW0gOiB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHVucGFja2VkID1cbiAgICB7IGRvd25zdHJlYW0gOiAoJ2EsICdiKSB0XG4gICAgOyBjb25zdW1lciA6IENvbnN1bWVyLnRcbiAgICA7IHVwc3RyZWFtX2ZsdXNoZWRzX2JhZ19lbHQgOiAodW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnQpIEJhZy5FbHQudFxuICAgIH1cblxuICB0eXBlIHQgPSBUIDogKF8sIF8pIHVucGFja2VkIC0+IHRcblxuICBsZXQgY29uc3VtZXIgKFQgdCkgPSB0LmNvbnN1bWVyXG5cbiAgbGV0IGNyZWF0ZSB+dXBzdHJlYW0gfmRvd25zdHJlYW0gPVxuICAgIFRcbiAgICAgIHsgZG93bnN0cmVhbVxuICAgICAgOyBjb25zdW1lciA9XG4gICAgICAgICAgYWRkX2NvbnN1bWVyIHVwc3RyZWFtIH5kb3duc3RyZWFtX2ZsdXNoZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgICAgZG93bnN0cmVhbV9mbHVzaGVkIGRvd25zdHJlYW0pXG4gICAgICA7IHVwc3RyZWFtX2ZsdXNoZWRzX2JhZ19lbHQgPVxuICAgICAgICAgIGFkZF91cHN0cmVhbV9mbHVzaGVkIGRvd25zdHJlYW0gKGZ1biAoKSAtPiB1cHN0cmVhbV9mbHVzaGVkIHVwc3RyZWFtKVxuICAgICAgfVxuICA7O1xuXG4gIGxldCB1bmxpbmtfdXBzdHJlYW0gKFQgdCkgPVxuICAgIEJhZy5yZW1vdmUgdC5kb3duc3RyZWFtLnVwc3RyZWFtX2ZsdXNoZWRzIHQudXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbHVzaGVkID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDb25zdW1lciBvZiBDb25zdW1lci50XG4gICAgfCBXaGVuX3ZhbHVlX3Byb2Nlc3NlZFxuICAgIHwgV2hlbl92YWx1ZV9yZWFkXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IGZvbGRfZ2VuXG4gICAgICAocmVhZF9ub3cgOiA/Y29uc3VtZXI6Q29uc3VtZXIudCAtPiBfIFJlYWRlci50IC0+IF8pXG4gICAgICA/KGZsdXNoZWQgPSBGbHVzaGVkLldoZW5fdmFsdWVfcmVhZClcbiAgICAgIHRcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICA9XG4gIGxldCBjb25zdW1lciA9XG4gICAgbWF0Y2ggZmx1c2hlZCB3aXRoXG4gICAgfCBXaGVuX3ZhbHVlX3JlYWQgLT4gTm9uZVxuICAgIHwgQ29uc3VtZXIgY29uc3VtZXIgLT4gU29tZSBjb25zdW1lclxuICAgIHwgV2hlbl92YWx1ZV9wcm9jZXNzZWQgLT5cbiAgICAgICgqIFRoZSBmYWN0IHRoYXQgXCJubyBjb25zdW1lclwiIGJlaGF2ZXMgZGlmZmVyZW50IGZyb20gXCJ0cml2aWFsIGNvbnN1bWVyXCIgaXMgd2VpcmQsXG4gICAgICAgICBidXQgdGhhdCdzIGhvdyB0aGUgY29uc3VtZXIgbWFjaGluZXJ5IHdvcmtzLiAqKVxuICAgICAgU29tZSAoYWRkX2NvbnN1bWVyIHQgfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+IHJldHVybiBgT2spKVxuICBpblxuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIHQgP2NvbnN1bWVyO1xuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBmaW5pc2hlZCAtPlxuICAgICgqIFdlIGRvIFt2YWx1ZXNfYXZhaWxhYmxlIHQgPj4+XSB0byBlbnN1cmUgdGhhdCBbZl0gaXMgb25seSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuXG4gICAgICAgU2VlIFsxXSBmb3IgbW9yZSBkZXRhaWxzLiAqKVxuICAgICgqIFsxXSBGb3IgbmV3IGVtcHR5IHBpcGVzIGNyZWF0ZWQgYXQgdG9wLWxldmVsIHdlIHdhbnQgdG8gYXZvaWQgaW1tZWRpYXRlbHlcbiAgICAgICBzY2hlZHVsaW5nIGEgam9iIG9uIHRoZSBzY2hlZHVsZXIgKHNlZSBbU2NoZWR1bGVyLnJhaXNlX2lmX2FueV9qb2JzX3dlcmVfc2NoZWR1bGVkXSkuXG4gICAgICAgSnVzdCBbcmV0dXJuICgpID4+Pl0gZG9lc24ndCB3b3JrOiBbcmV0dXJuICgpXSBjcmVhdGVzIGEgZnVsbCBpdmFyIHRoYXQgY2F1c2VzXG4gICAgICAgWz4+Pl0gdG8gc2NoZWR1bGUgYSBqb2IuICopXG4gICAgdmFsdWVzX2F2YWlsYWJsZSB0XG4gICAgPj4+IGZ1biAoXyA6IFsgYE9rIHwgYEVvZiBdKSAtPlxuICAgIGxldCByZWMgbG9vcCBiID1cbiAgICAgIG1hdGNoIHJlYWRfbm93IHQgP2NvbnN1bWVyIHdpdGhcbiAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgZmluaXNoZWQgYlxuICAgICAgfCBgT2sgdiAtPiBmIGIgdiBjb250aW51ZVxuICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gdmFsdWVzX2F2YWlsYWJsZSB0ID4+PiBmdW4gXyAtPiBsb29wIGJcbiAgICBhbmQgY29udGludWUgYiA9XG4gICAgICBPcHRpb24uaXRlciBjb25zdW1lciB+ZjpDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtO1xuICAgICAgbG9vcCBiXG4gICAgaW5cbiAgICBsb29wIGluaXQpXG47O1xuXG5sZXQgZm9sZCcgP2ZsdXNoZWQgP21heF9xdWV1ZV9sZW5ndGggdCB+aW5pdCB+ZiA9XG4gIGZvbGRfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpID9mbHVzaGVkIHQgfmluaXQgfmY6KGZ1biBiIHEgbG9vcCAtPlxuICAgIGYgYiBxID4+PiBsb29wKVxuOztcblxubGV0IGZvbGQgP2ZsdXNoZWQgdCB+aW5pdCB+ZiA9XG4gIGZvbGRfZ2VuIHJlYWRfbm93ID9mbHVzaGVkIHQgfmluaXQgfmY6KGZ1biBiIGEgbG9vcCAtPiBmIGIgYSA+Pj4gbG9vcClcbjs7XG5cbmxldCBmb2xkX3dpdGhvdXRfcHVzaGJhY2sgP2NvbnN1bWVyIHQgfmluaXQgfmYgPVxuICBmb2xkX2dlblxuICAgIHJlYWRfbm93XG4gICAgdFxuICAgIH5pbml0XG4gICAgfmY6KGZ1biBiIGEgbG9vcCAtPiBsb29wIChmIGIgYSkpXG4gICAgP2ZsdXNoZWQ6XG4gICAgICAobWF0Y2ggY29uc3VtZXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgfCBTb21lIGMgLT4gU29tZSAoQ29uc3VtZXIgYykpXG47O1xuXG5sZXQgd2l0aF9lcnJvcl90b19jdXJyZW50X21vbml0b3IgPyhjb250aW51ZV9vbl9lcnJvciA9IGZhbHNlKSBmIGEgPVxuICBpZiBub3QgY29udGludWVfb25fZXJyb3JcbiAgdGhlbiBmIGFcbiAgZWxzZSAoXG4gICAgbWF0Y2glbWFwXG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5ydW46YFNjaGVkdWxlXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgKGZ1biAoKSAtPiBmIGEpXG4gICAgd2l0aFxuICAgIHwgT2sgKCkgLT4gKClcbiAgICB8IEVycm9yIGV4biAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIChNb25pdG9yLmV4dHJhY3RfZXhuIGV4bikpXG47O1xuXG5sZXQgaXRlcicgP2NvbnRpbnVlX29uX2Vycm9yID9mbHVzaGVkID9tYXhfcXVldWVfbGVuZ3RoIHQgfmYgPVxuICBmb2xkJyA/bWF4X3F1ZXVlX2xlbmd0aCA/Zmx1c2hlZCB0IH5pbml0OigpIH5mOihmdW4gKCkgcSAtPlxuICAgIHdpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yID9jb250aW51ZV9vbl9lcnJvciBmIHEpXG47O1xuXG5sZXQgaXRlciA/Y29udGludWVfb25fZXJyb3IgP2ZsdXNoZWQgdCB+ZiA9XG4gIGZvbGRfZ2VuIHJlYWRfbm93ID9mbHVzaGVkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBhIGxvb3AgLT5cbiAgICB3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciA/Y29udGludWVfb25fZXJyb3IgZiBhID4+PiBmdW4gKCkgLT4gbG9vcCAoKSlcbjs7XG5cbigqIFtpdGVyX3dpdGhvdXRfcHVzaGJhY2tdIGlzIGEgY29tbW9uIGNhc2UsIHNvIHdlIGltcGxlbWVudCBpdCBpbiBhbiBvcHRpbWl6ZWQgbWFubmVyLFxuICAgcmF0aGVyIHRoYW4gdmlhIFtpdGVyXS4gIFRoZSBpbXBsZW1lbnRhdGlvbiByZWFkcyBvbmx5IG9uZSBlbGVtZW50IGF0IGEgdGltZSwgc28gdGhhdFxuICAgaWYgW2ZdIGNsb3NlcyBbdF0gb3IgcmFpc2VzLCBubyBtb3JlIGVsZW1lbnRzIHdpbGwgYmUgcmVhZC4gKilcbmxldCBpdGVyX3dpdGhvdXRfcHVzaGJhY2tcbiAgICAgID9jb25zdW1lclxuICAgICAgPyhjb250aW51ZV9vbl9lcnJvciA9IGZhbHNlKVxuICAgICAgP21heF9pdGVyYXRpb25zX3Blcl9qb2JcbiAgICAgIHRcbiAgICAgIH5mXG4gID1cbiAgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgdCA/Y29uc3VtZXI7XG4gIGxldCBtYXhfaXRlcmF0aW9uc19wZXJfam9iID1cbiAgICBtYXRjaCBtYXhfaXRlcmF0aW9uc19wZXJfam9iIHdpdGhcbiAgICB8IE5vbmUgLT4gSW50Lm1heF92YWx1ZVxuICAgIHwgU29tZSBtYXhfaXRlcmF0aW9uc19wZXJfam9iIC0+XG4gICAgICBpZiBtYXhfaXRlcmF0aW9uc19wZXJfam9iIDw9IDBcbiAgICAgIHRoZW5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJpdGVyX3dpdGhvdXRfcHVzaGJhY2sgZ290IG5vbi1wb3NpdGl2ZSBtYXhfaXRlcmF0aW9uc19wZXJfam9iXCJcbiAgICAgICAgICAgICAgKG1heF9pdGVyYXRpb25zX3Blcl9qb2IgOiBpbnQpXTtcbiAgICAgIG1heF9pdGVyYXRpb25zX3Blcl9qb2JcbiAgaW5cbiAgbGV0IGYgPVxuICAgIGlmIG5vdCBjb250aW51ZV9vbl9lcnJvclxuICAgIHRoZW4gZlxuICAgIGVsc2VcbiAgICAgIGZ1biBhIC0+XG4gICAgICAgIHRyeSBmIGEgd2l0aFxuICAgICAgICB8IGV4biAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4blxuICBpblxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBmaW5pc2hlZCAtPlxuICAgICgqIFdlIGRvIFt2YWx1ZXNfYXZhaWxhYmxlIHQgPj4+XSB0byBlbnN1cmUgdGhhdCBbZl0gaXMgb25seSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuXG4gICAgICAgU2VlIFsxXSBmb3IgbW9yZSBkZXRhaWxzLiAqKVxuICAgIHZhbHVlc19hdmFpbGFibGUgdFxuICAgID4+PiBmdW4gKF8gOiBbIGBPayB8IGBFb2YgXSkgLT5cbiAgICBsZXQgcmVjIHN0YXJ0ICgpID0gbG9vcCB+cmVtYWluaW5nOm1heF9pdGVyYXRpb25zX3Blcl9qb2JcbiAgICBhbmQgbG9vcCB+cmVtYWluaW5nID1cbiAgICAgIGlmIHJlbWFpbmluZyA9IDBcbiAgICAgIHRoZW4gcmV0dXJuICgpID4+PiBmdW4gKCkgLT4gc3RhcnQgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCByZWFkX25vdyB0ID9jb25zdW1lciB3aXRoXG4gICAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgZmluaXNoZWQgKClcbiAgICAgICAgfCBgT2sgYSAtPlxuICAgICAgICAgIGYgYTtcbiAgICAgICAgICBsb29wIH5yZW1haW5pbmc6KHJlbWFpbmluZyAtIDEpXG4gICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+IHZhbHVlc19hdmFpbGFibGUgdCA+Pj4gZnVuIF8gLT4gc3RhcnQgKCkpXG4gICAgaW5cbiAgICBzdGFydCAoKSlcbjs7XG5cbmxldCBkcmFpbiB0ID0gaXRlcicgdCB+ZjooZnVuIF8gLT4gcmV0dXJuICgpKVxubGV0IGRyYWluX2FuZF9jb3VudCB0ID0gZm9sZCcgdCB+aW5pdDowIH5mOihmdW4gc3VtIHEgLT4gcmV0dXJuIChzdW0gKyBRdWV1ZS5sZW5ndGggcSkpXG5cbmxldCByZWFkX2FsbCBpbnB1dCA9XG4gIGxldCByZXN1bHQgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0JW1hcCAoKSA9XG4gICAgaXRlcicgaW5wdXQgfmY6KGZ1biBxIC0+XG4gICAgICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6cSB+ZHN0OnJlc3VsdCAoKTtcbiAgICAgIHJldHVybiAoKSlcbiAgaW5cbiAgcmVzdWx0XG47O1xuXG5sZXQgdG9fbGlzdCByID0gcmVhZF9hbGwgciA+PnwgUXVldWUudG9fbGlzdFxuXG5sZXQgdG9fc3RyZWFtX2RlcHJlY2F0ZWQgdCA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgaXRlcl93aXRob3V0X3B1c2hiYWNrIHQgfmY6KGZ1biB4IC0+IFRhaWwuZXh0ZW5kIHRhaWwgeClcbiAgICA+Pj4gZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpXG47O1xuXG4oKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgW29mX3N0cmVhbV9kZXByZWNhdGVkXSBkb2VzIGFzIG11Y2ggYmF0Y2hpbmcgYXMgcG9zc2libGUuICBJdFxuICAgZ3JhYnMgYXMgbWFueSBpdGVtcyBhcyBhcmUgYXZhaWxhYmxlIGludG8gYW4gaW50ZXJuYWwgcXVldWUuICBPbmNlIGl0IGhhcyBncmFiYmVkXG4gICBldmVyeXRoaW5nLCBpdCB3cml0ZXMgaXQgdG8gdGhlIHBpcGUgYW5kIHRoZW4gYmxvY2tzIHdhaXRpbmcgZm9yIHRoZSBuZXh0IGVsZW1lbnQgZnJvbVxuICAgdGhlIHN0cmVhbS5cblxuICAgVGhlcmUncyBubyBwb3NzaWJpbGl0eSB0aGF0IHdlJ2xsIHN0YXJ2ZSB0aGUgcGlwZSByZWFkaW5nIGFuIGVuZGxlc3Mgc3RyZWFtLCBqdXN0XG4gICBhY2N1bXVsYXRpbmcgdGhlIGVsZW1lbnRzIGludG8gb3VyIHByaXZhdGUgcXVldWUgZm9yZXZlciB3aXRob3V0IGV2ZXIgd3JpdGluZyB0aGVtXG4gICBkb3duc3RyZWFtIHRvIHRoZSBwaXBlLiAgV2h5PyBiZWNhdXNlIHdoaWxlIHdlJ3JlIHJ1bm5pbmcsIHRoZSBzdHJlYW0tcHJvZHVjZXIgKmlzbid0KlxuICAgcnVubmluZyAtLSB0aGVyZSBhcmUgbm8gQXN5bmMgYmxvY2sgcG9pbnRzIGluIHRoZSBxdWV1ZS1hY2N1bXVsYXRvciBsb29wLiAgU28gdGhlXG4gICBxdWV1ZS1hY2N1bXVsYXRvciBsb29wIHdpbGwgZXZlbnR1YWxseSBjYXRjaCB1cCB0byB0aGUgY3VycmVudCBzdHJlYW0gdGFpbCwgYXQgd2hpY2hcbiAgIHBvaW50IHdlJ2xsIGRvIHRoZSBwaXBlLXdyaXRlIGFuZCB0aGVuIGJsb2NrIG9uIHRoZSBzdHJlYW0uLi4gdGh1cyBnaXZpbmcgdGhlXG4gICBzdHJlYW0tcHJvZHVjZXIgYSBjaGFuY2UgdG8gbWFrZSBtb3JlIGVsZW1lbnRzLlxuXG4gICBPbmUgY2FuJ3QgaW1wbGVtZW50IFtvZl9zdHJlYW1dIHVzaW5nIFtTdHJlYW0uaXRlcl0gb3IgW1N0cmVhbS5pdGVyJ10gYmVjYXVzZSB5b3VcbiAgIG5lZWQgdG8gYmUgYWJsZSB0byBzdG9wIGVhcmx5IHdoZW4gdGhlIGNvbnN1bWVyIGNsb3NlcyB0aGUgcGlwZS4gIEFsc28sIHVzaW5nIGVpdGhlclxuICAgb2YgdGhvc2Ugd291bGQgZW50YWlsIHNpZ25pZmljYW50bHkgbW9yZSBkZWZlcnJlZCBvdmVyaGVhZCwgd2hlcmVhcyB0aGUgYmVsb3dcbiAgIGltcGxlbWVudGF0aW9uIHVzZXMgYSBkZWZlcnJlZCBvbmx5IHdoZW4gaXQgbmVlZHMgdG8gd2FpdCBmb3IgZGF0YSBmcm9tIHRoZSBzdHJlYW0uICopXG5sZXQgb2Zfc3RyZWFtX2RlcHJlY2F0ZWQgcyA9XG4gIGxldCByLCB3ID0gY3JlYXRlICgpIGluXG4gIGxldCBxID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCB0cmFuc2ZlciAoKSA9XG4gICAgaWYgbm90IChRdWV1ZS5pc19lbXB0eSBxKVxuICAgIHRoZW5cbiAgICAgICgqIENhbiBub3QgcHVzaGJhY2sgb24gdGhlIHN0cmVhbSwgc28gaWdub3JlIHRoZSBwdXNoYmFjayBvbiB0aGUgcGlwZS4gKilcbiAgICAgIGRvbid0X3dhaXRfZm9yICh3cml0ZScgdyBxKVxuICBpblxuICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgYXNzZXJ0IChub3QgKGlzX2Nsb3NlZCB3KSk7XG4gICAgbGV0IG5leHRfZGVmZXJyZWQgPSBTdHJlYW0ubmV4dCBzIGluXG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayBuZXh0X2RlZmVycmVkIHdpdGhcbiAgICB8IFNvbWUgbmV4dCAtPiBsb29wX25leHQgbmV4dFxuICAgIHwgTm9uZSAtPlxuICAgICAgdHJhbnNmZXIgKCk7XG4gICAgICB1cG9uIG5leHRfZGVmZXJyZWQgY2hlY2tfY2xvc2VkX2xvb3BfbmV4dFxuICBhbmQgY2hlY2tfY2xvc2VkX2xvb3BfbmV4dCBuZXh0ID0gaWYgbm90IChpc19jbG9zZWQgdykgdGhlbiBsb29wX25leHQgbmV4dFxuICBhbmQgbG9vcF9uZXh0ID0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPlxuICAgICAgdHJhbnNmZXIgKCk7XG4gICAgICBjbG9zZSB3XG4gICAgfCBDb25zICh4LCBzKSAtPlxuICAgICAgUXVldWUuZW5xdWV1ZSBxIHg7XG4gICAgICBsb29wIHNcbiAgaW5cbiAgbG9vcCBzO1xuICByXG47O1xuXG5sZXQgdHJhbnNmZXJfZ2VuXG4gICAgICAocmVhZF9ub3cgOiA/Y29uc3VtZXI6Q29uc3VtZXIudCAtPiBfIFJlYWRlci50IC0+IF8pXG4gICAgICB3cml0ZVxuICAgICAgaW5wdXRcbiAgICAgIG91dHB1dFxuICAgICAgfmZcbiAgPVxuICBpZiAhY2hlY2tfaW52YXJpYW50XG4gIHRoZW4gKFxuICAgIGludmFyaWFudCBpbnB1dDtcbiAgICBpbnZhcmlhbnQgb3V0cHV0KTtcbiAgbGV0IGxpbmsgPSBMaW5rLmNyZWF0ZSB+dXBzdHJlYW06aW5wdXQgfmRvd25zdHJlYW06b3V0cHV0IGluXG4gIGxldCBjb25zdW1lciA9IExpbmsuY29uc3VtZXIgbGluayBpblxuICAoKiBXaGVuIHdlJ3JlIGRvbmUgd2l0aCBbaW5wdXRdLCB3ZSB1bmxpbmsgdG8gcmVtb3ZlIHBvaW50ZXJzIGZyb21cbiAgICAgW291dHB1dF0gdG8gW2lucHV0XSwgd2hpY2ggd291bGQgY2F1c2UgYSBzcGFjZSBsZWFrIGlmIHdlIGhhZCBzaW5nbGUgbG9uZy1saXZlZFxuICAgICBvdXRwdXQgaW50byB3aGljaCB3ZSB0cmFuc2ZlciBsb3RzIG9mIHNob3J0LWxpdmVkIGlucHV0cy4gKilcbiAgbGV0IHVubGluayAoKSA9IExpbmsudW5saW5rX3Vwc3RyZWFtIGxpbmsgaW5cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IGlucHV0X2F2YWlsYWJsZV9vcl9vdXRwdXRfY2xvc2VkICgpID1cbiAgICAgIGNob29zZSBbIGNob2ljZSAodmFsdWVzX2F2YWlsYWJsZSBpbnB1dCkgaWdub3JlOyBjaG9pY2UgKGNsb3NlZCBvdXRwdXQpIGlnbm9yZSBdXG4gICAgaW5cbiAgICAoKiBXZSBkbyBbaW5wdXRfYXZhaWxhYmxlX29yX291dHB1dF9jbG9zZWQgKCkgPj4+XSB0byBlbnN1cmUgdGhhdCBbZl0gaXMgb25seSBjYWxsZWRcbiAgICAgICBhc3luY2hyb25vdXNseS4gU2VlIFsxXSBmb3IgbW9yZSBkZXRhaWxzLiAqKVxuICAgIGlucHV0X2F2YWlsYWJsZV9vcl9vdXRwdXRfY2xvc2VkICgpXG4gICAgPj4+IGZ1biAoKSAtPlxuICAgIGxldCBvdXRwdXRfY2xvc2VkICgpID1cbiAgICAgIGNsb3NlX3JlYWQgaW5wdXQ7XG4gICAgICB1bmxpbmsgKCk7XG4gICAgICBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgaWYgaXNfY2xvc2VkIG91dHB1dFxuICAgICAgdGhlbiBvdXRwdXRfY2xvc2VkICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcmVhZF9ub3cgaW5wdXQgfmNvbnN1bWVyIHdpdGhcbiAgICAgICAgfCBgRW9mIC0+XG4gICAgICAgICAgdW5saW5rICgpO1xuICAgICAgICAgIEl2YXIuZmlsbCByZXN1bHQgKClcbiAgICAgICAgfCBgT2sgeCAtPiBmIHggY29udGludWVcbiAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gaW5wdXRfYXZhaWxhYmxlX29yX291dHB1dF9jbG9zZWQgKCkgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuICAgIGFuZCBjb250aW51ZSB5ID1cbiAgICAgIGlmIGlzX2Nsb3NlZCBvdXRwdXRcbiAgICAgIHRoZW4gb3V0cHV0X2Nsb3NlZCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBwdXNoYmFjayA9IHdyaXRlIG91dHB1dCB5IGluXG4gICAgICAgIENvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW0gY29uc3VtZXI7XG4gICAgICAgIHB1c2hiYWNrID4+PiBmdW4gKCkgLT4gbG9vcCAoKSlcbiAgICBpblxuICAgIGxvb3AgKCkpXG47O1xuXG5sZXQgdHJhbnNmZXInID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IG91dHB1dCB+ZiA9XG4gIHRyYW5zZmVyX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgb3V0cHV0IH5mOihmdW4gcSBrIC0+IGYgcSA+Pj4gaylcbjs7XG5cbmxldCB0cmFuc2ZlciBpbnB1dCBvdXRwdXQgfmYgPVxuICB0cmFuc2Zlcl9nZW4gcmVhZF9ub3cgd3JpdGUgaW5wdXQgb3V0cHV0IH5mOihmdW4gYSBrIC0+IGsgKGYgYSkpXG47O1xuXG5sZXQgdHJhbnNmZXJfaWQgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgb3V0cHV0ID1cbiAgdHJhbnNmZXJfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCBvdXRwdXQgfmY6KGZ1biBxIGsgLT4gayBxKVxuOztcblxubGV0IG1hcF9nZW4gcmVhZCB3cml0ZSBpbnB1dCB+ZiA9XG4gIGxldCBpbmZvID0gT3B0aW9uLm1hcCBpbnB1dC5pbmZvIH5mOihmdW4gaW5mbyAtPiBbJXNleHAgTWFwcGVkIChpbmZvIDogU2V4cC50KV0pIGluXG4gIGxldCByZXN1bHQsIG91dHB1dCA9IGNyZWF0ZSA/aW5mbyAoKSBpblxuICB1cG9uICh0cmFuc2Zlcl9nZW4gcmVhZCB3cml0ZSBpbnB1dCBvdXRwdXQgfmYpIChmdW4gKCkgLT4gY2xvc2Ugb3V0cHV0KTtcbiAgcmVzdWx0XG47O1xuXG5sZXQgbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+IGYgcSA+Pj4gaylcbjs7XG5cbmxldCBtYXAgaW5wdXQgfmYgPSBtYXBfZ2VuIHJlYWRfbm93IHdyaXRlIGlucHV0IH5mOihmdW4gYSBrIC0+IGsgKGYgYSkpXG5cbmxldCBjb25jYXRfbWFwX2xpc3QgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmYgPVxuICBtYXBfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCB+ZjooZnVuIHEgayAtPlxuICAgIGsgKFF1ZXVlLmNvbmNhdF9tYXAgcSB+ZikpXG47O1xuXG5sZXQgZmlsdGVyX21hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmYgPVxuICBtYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mOihmdW4gcSAtPlxuICAgIERlZmVycmVkLlF1ZXVlLmZpbHRlcl9tYXAgfmhvdzpgU2VxdWVudGlhbCBxIH5mKVxuOztcblxubGV0IGZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmYgPVxuICBtYXBfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCB+ZjooZnVuIHEgayAtPlxuICAgIGsgKFF1ZXVlLmZpbHRlcl9tYXAgcSB+ZjooZnVuIHggLT4gaWYgaXNfcmVhZF9jbG9zZWQgaW5wdXQgdGhlbiBOb25lIGVsc2UgZiB4KSkpXG47O1xuXG5sZXQgZm9sZGluZ19maWx0ZXJfbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZiA9XG4gIGxldCBhY2N1bSA9IHJlZiBpbml0IGluXG4gIGZpbHRlcl9tYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mOihmdW4geCAtPlxuICAgIGxldCVtYXAgYSwgeCA9IGYgIWFjY3VtIHggaW5cbiAgICBhY2N1bSA6PSBhO1xuICAgIHgpXG47O1xuXG5sZXQgZm9sZGluZ19maWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mID1cbiAgbGV0IGFjY3VtID0gcmVmIGluaXQgaW5cbiAgZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZjooZnVuIHggLT5cbiAgICBsZXQgYSwgeCA9IGYgIWFjY3VtIHggaW5cbiAgICBhY2N1bSA6PSBhO1xuICAgIHgpXG47O1xuXG5sZXQgZm9sZGluZ19tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmYgPVxuICBmb2xkaW5nX2ZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmY6KGZ1biBhY2N1bSBhIC0+XG4gICAgbGV0IGFjY3VtLCBiID0gZiBhY2N1bSBhIGluXG4gICAgYWNjdW0sIFNvbWUgYilcbjs7XG5cbmxldCBmaWx0ZXIgaW5wdXQgfmYgPSBmaWx0ZXJfbWFwIGlucHV0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKVxuXG5sZXQgb2ZfcXVldWVfaW50ZXJuYWwgcXVldWUgPVxuICBsZXQgdCA9IGNyZWF0ZV9pbnRlcm5hbCB+c2l6ZV9idWRnZXQ6MCB+aW5mbzpOb25lIH5pbml0aWFsX2J1ZmZlcjpxdWV1ZSBpblxuICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gIHVwZGF0ZV9wdXNoYmFjayB0O1xuICB0XG47O1xuXG5sZXQgb2ZfcXVldWUgcXVldWUgPSBvZl9xdWV1ZV9pbnRlcm5hbCAoUXVldWUuY29weSBxdWV1ZSlcbmxldCBvZl9saXN0IGwgPSBvZl9xdWV1ZV9pbnRlcm5hbCAoUXVldWUub2ZfbGlzdCBsKVxubGV0IGVtcHR5ICgpID0gb2ZfbGlzdCBbXVxuXG5sZXQgc2luZ2xldG9uIHggPVxuICBsZXQgcmVhZGVyLCB3cml0ZXIgPSBjcmVhdGUgKCkgaW5cbiAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgeDtcbiAgY2xvc2Ugd3JpdGVyO1xuICByZWFkZXJcbjs7XG5cbmxldCB1bmZvbGQgfmluaXQ6cyB+ZiA9XG4gICgqIFRvIGdldCBzb21lIGJhdGNoaW5nLCB3ZSBydW4gdGhlIGNvbnRpbnVhdGlvbiBpbW1lZGlhdGVseSBpZiB0aGUgZGVmZXJyZWQgaXNcbiAgICAgZGV0ZXJtaW5lZC4gIEhvd2V2ZXIsIHdlIGFsd2F5cyBjaGVjayBmb3IgcHVzaGJhY2suICBCZWNhdXNlIHNpemUgYnVkZ2V0IGNhbid0IGJlXG4gICAgIGluZmluaXRlLCB0aGUgYmVsb3cgbG9vcCBpcyBndWFyYW50ZWVkIHRvIGV2ZW50dWFsbHkgeWllbGQgdG8gdGhlIHNjaGVkdWxlci4gKilcbiAgbGV0ICggPj49fiApIGQgZiA9XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICB8IE5vbmUgLT4gZCA+Pj0gZlxuICAgIHwgU29tZSB4IC0+IGYgeFxuICBpblxuICBjcmVhdGVfcmVhZGVyIH5jbG9zZV9vbl9leGNlcHRpb246ZmFsc2UgKGZ1biB3cml0ZXIgLT5cbiAgICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgICBmIHNcbiAgICAgID4+PX4gZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiByZXR1cm4gKClcbiAgICAgIHwgU29tZSAoYSwgcykgLT5cbiAgICAgICAgaWYgaXNfY2xvc2VkIHdyaXRlciB0aGVuIHJldHVybiAoKSBlbHNlIHdyaXRlIHdyaXRlciBhID4+PX4gZnVuICgpIC0+IGxvb3Agc1xuICAgIGluXG4gICAgbG9vcCBzKVxuOztcblxubGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgY3JlYXRlX3JlYWRlciB+Y2xvc2Vfb25fZXhjZXB0aW9uOmZhbHNlIChmdW4gd3JpdGVyIC0+XG4gICAgbGV0IHJlYyBlbnF1ZXVlX24gc2VxdWVuY2UgaSA9XG4gICAgICBpZiBpIDw9IDBcbiAgICAgIHRoZW4gc2VxdWVuY2VcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHNlcXVlbmNlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNlcXVlbmNlXG4gICAgICAgIHwgU29tZSAoYSwgc2VxdWVuY2UpIC0+XG4gICAgICAgICAgZGVjcmVhc2VfcmVzZXJ2ZWRfc3BhY2Ugd3JpdGVyIDE7XG4gICAgICAgICAgUXVldWUuZW5xdWV1ZSB3cml0ZXIuYnVmZmVyIGE7XG4gICAgICAgICAgZW5xdWV1ZV9uIHNlcXVlbmNlIChpIC0gMSkpXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3Agc2VxdWVuY2UgPVxuICAgICAgaWYgaXNfY2xvc2VkIHdyaXRlciB8fCBTZXF1ZW5jZS5pc19lbXB0eSBzZXF1ZW5jZVxuICAgICAgdGhlbiByZXR1cm4gKClcbiAgICAgIGVsc2UgKFxuICAgICAgICAoKiBbc2l6ZTowXSBoZXJlIGFzIHdlIGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlIHNlcXVlbmNlIHN0YXRpY2FsbHkuIFdlJ2xsXG4gICAgICAgICAgIGNhbGwgW2RlY3JlYXNlX3Jlc2VydmVkX3NwYWNlXSBhcyB3ZSBnby5cbiAgICAgICAgICAgKGFsdGhvdWdoIHJlYWxpc3RpY2FsbHksIGl0J3MgaW1wb3NzaWJsZSBmb3IgdGhlIHVzZXIgdG8gcmVzZXJ2ZSBzcGFjZSBpblxuICAgICAgICAgICB0aGlzIHBpcGUgYmVjYXVzZSB5b3UgbmVlZCBhIHBpcGUgd3JpdGVyIGZvciB0aGF0LCBidXQgW29mX3NlcXVlbmNlXSByZXR1cm5zXG4gICAgICAgICAgIGEgcmVhZGVyKSAqKVxuICAgICAgICBzdGFydF93cml0ZSB3cml0ZXIgfnNpemU6MDtcbiAgICAgICAgbGV0IHNlcXVlbmNlID0gZW5xdWV1ZV9uIHNlcXVlbmNlICgxICsgd3JpdGVyLnNpemVfYnVkZ2V0IC0gbGVuZ3RoIHdyaXRlcikgaW5cbiAgICAgICAgZmluaXNoX3dyaXRlIHdyaXRlcjtcbiAgICAgICAgbGV0JWJpbmQgKCkgPSBwdXNoYmFjayB3cml0ZXIgaW5cbiAgICAgICAgbG9vcCBzZXF1ZW5jZSlcbiAgICBpblxuICAgIGxvb3Agc2VxdWVuY2UpXG47O1xuXG50eXBlICdhIHRvX3NlcXVlbmNlX2VsdCA9XG4gIHwgVmFsdWUgb2YgJ2FcbiAgfCBXYWl0X2ZvciA6IF8gRGVmZXJyZWQudCAtPiBfIHRvX3NlcXVlbmNlX2VsdFxuXG5sZXQgdG9fc2VxdWVuY2UgdCA9XG4gIFNlcXVlbmNlLnVuZm9sZCB+aW5pdDooKSB+ZjooZnVuICgpIC0+XG4gICAgbWF0Y2ggcmVhZF9ub3cgdCB3aXRoXG4gICAgfCBgRW9mIC0+IE5vbmVcbiAgICB8IGBPayBhIC0+IFNvbWUgKFZhbHVlIGEsICgpKVxuICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+IFNvbWUgKFdhaXRfZm9yICh2YWx1ZXNfYXZhaWxhYmxlIHQpLCAoKSkpXG47O1xuXG5sZXQgaW50ZXJsZWF2ZV9waXBlIGlucHV0cyA9XG4gIGxldCBvdXRwdXQsIG91dHB1dF93cml0ZXIgPSBjcmVhdGUgfmluZm86WyVzZXhwIFwiUGlwZS5pbnRlcmxlYXZlXCJdICgpIGluXG4gICgqIFdlIGtlZXAgYSByZWZlcmVuY2UgY291bnQgb2YgYWxsIHRoZSBwaXBlcyB0aGF0IFtpbnRlcmxlYXZlX3BpcGVdIGlzIG1hbmFnaW5nO1xuICAgICBbaW5wdXRzXSBjb3VudHMgYXMgb25lLiAgV2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IGRyb3BzIHRvIHplcm8sIHdlIGtub3cgdGhhdCBhbGxcbiAgICAgcGlwZXMgYXJlIGNsb3NlZCBhbmQgd2UgY2FuIGNsb3NlIFtvdXRwdXRfd3JpdGVyXS4gKilcbiAgbGV0IG51bV9waXBlc19yZW1haW5pbmcgPSByZWYgMSBpblxuICBsZXQgZGVjcl9udW1fcGlwZXNfcmVtYWluaW5nICgpID1cbiAgICBkZWNyIG51bV9waXBlc19yZW1haW5pbmc7XG4gICAgaWYgIW51bV9waXBlc19yZW1haW5pbmcgPSAwIHRoZW4gY2xvc2Ugb3V0cHV0X3dyaXRlclxuICBpblxuICBkb24ndF93YWl0X2ZvclxuICAgIChsZXQlbWFwICgpID1cbiAgICAgICBpdGVyX3dpdGhvdXRfcHVzaGJhY2sgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT5cbiAgICAgICAgIGluY3IgbnVtX3BpcGVzX3JlbWFpbmluZztcbiAgICAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgICAgIChsZXQlbWFwICgpID0gdHJhbnNmZXJfaWQgaW5wdXQgb3V0cHV0X3dyaXRlciBpblxuICAgICAgICAgICAgZGVjcl9udW1fcGlwZXNfcmVtYWluaW5nICgpKSlcbiAgICAgaW5cbiAgICAgZGVjcl9udW1fcGlwZXNfcmVtYWluaW5nICgpKTtcbiAgKCogZm9yIFtpbnB1dHNdICopXG4gIG91dHB1dFxuOztcblxubGV0IGludGVybGVhdmUgaW5wdXRzID1cbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIExpc3QuaXRlciBpbnB1dHMgfmY6aW52YXJpYW50O1xuICBpbnRlcmxlYXZlX3BpcGUgKG9mX2xpc3QgaW5wdXRzKVxuOztcblxubGV0IG1lcmdlIGlucHV0cyB+Y29tcGFyZSA9XG4gIG1hdGNoIGlucHV0cyB3aXRoXG4gIHwgW10gLT4gZW1wdHkgKClcbiAgfCBbIGlucHV0IF0gLT4gaW5wdXRcbiAgfCBpbnB1dHMgLT5cbiAgICBsZXQgbW9kdWxlIEhlYXAgPSBQYWlyaW5nX2hlYXAgaW5cbiAgICBsZXQgciwgdyA9IGNyZWF0ZSAoKSBpblxuICAgIHVwb24gKGNsb3NlZCB3KSAoZnVuICgpIC0+IExpc3QuaXRlciBpbnB1dHMgfmY6Y2xvc2VfcmVhZCk7XG4gICAgbGV0IGhlYXAgPSBIZWFwLmNyZWF0ZSB+Y21wOihmdW4gKGExLCBfKSAoYTIsIF8pIC0+IGNvbXBhcmUgYTEgYTIpICgpIGluXG4gICAgbGV0IGhhbmRsZV9yZWFkIGlucHV0IGVvZl9vcl9vayA9XG4gICAgICBtYXRjaCBlb2Zfb3Jfb2sgd2l0aFxuICAgICAgfCBgRW9mIC0+ICgpXG4gICAgICB8IGBPayB2IC0+IEhlYXAuYWRkIGhlYXAgKHYsIGlucHV0KVxuICAgIGluXG4gICAgbGV0IHJlYyBwb3BfaGVhcF9hbmRfbG9vcCAoKSA9XG4gICAgICAoKiBBdCB0aGlzIHBvaW50LCBhbGwgaW5wdXRzIG5vdCBhdCBFb2Ygb2NjdXIgaW4gW2hlYXBdIGV4YWN0bHkgb25jZSwgc28gd2Uga25vd1xuICAgICAgICAgd2hhdCB0aGUgbmV4dCBvdXRwdXQgZWxlbWVudCBpcy4gIFtwb3BfaGVhcF9hbmRfbG9vcF0gcmVwZWF0ZWRseSB0YWtlcyBlbGVtZW50c1xuICAgICAgICAgZnJvbSB0aGUgaW5wdXRzIGFzIGxvbmcgYXMgaXQgaGFzIG9uZSBmcm9tIGVhY2ggaW5wdXQuICBUaGlzIGlzIGRvbmVcbiAgICAgICAgIHN5bmNocm9ub3VzbHkgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgYSBkZWZlcnJlZCBmb3IgZWFjaCBlbGVtZW50IG9mIHRoZSBvdXRwdXQgLS1cbiAgICAgICAgIHRoZXJlJ3Mgbm8gbmVlZCB0byBwdXNoYmFjayBzaW5jZSB0aGF0IGlzIG9ubHkgbW92aW5nIGVsZW1lbnRzIGZyb20gb25lIHBpcGUgdG9cbiAgICAgICAgIGFub3RoZXIuICBBcyBzb29uIGFzIFtwb3BfaGVhcF9hbmRfbG9vcF0gY2FuJ3QgZ2V0IGFuIGVsZW1lbnQgZnJvbSBzb21lIGlucHV0LCBpdFxuICAgICAgICAgd2FpdHMgb24gcHVzaGJhY2sgZnJvbSB0aGUgb3V0cHV0LCBzaW5jZSBpdCBoYXMgdG8gd2FpdCBvbiB0aGUgaW5wdXQgYW55d2F5LlxuICAgICAgICAgVGhpcyBhbHNvIHByZXZlbnRzIFttZXJnZV0gZnJvbSBjb25zdW1pbmcgaW5wdXRzIGF0IGEgcmF0ZSBmYXN0ZXIgdGhhbiBpdHMgb3V0cHV0XG4gICAgICAgICBpcyBjb25zdW1lZC4gKilcbiAgICAgIG1hdGNoIEhlYXAucG9wIGhlYXAgd2l0aFxuICAgICAgfCBOb25lIC0+IGNsb3NlIHdcbiAgICAgIHwgU29tZSAodiwgaW5wdXQpIC0+XG4gICAgICAgIGlmIG5vdCAoaXNfY2xvc2VkIHcpXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdyB2O1xuICAgICAgICAgIGlmIEhlYXAubGVuZ3RoIGhlYXAgPSAwXG4gICAgICAgICAgdGhlbiB1cG9uICh0cmFuc2Zlcl9pZCBpbnB1dCB3KSAoZnVuICgpIC0+IGNsb3NlIHcpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCByZWFkX25vdyBpbnB1dCB3aXRoXG4gICAgICAgICAgICB8IChgRW9mIHwgYE9rIF8pIGFzIHggLT5cbiAgICAgICAgICAgICAgaGFuZGxlX3JlYWQgaW5wdXQgeDtcbiAgICAgICAgICAgICAgcG9wX2hlYXBfYW5kX2xvb3AgKClcbiAgICAgICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgICAgIHB1c2hiYWNrIHdcbiAgICAgICAgICAgICAgPj4+IGZ1biAoKSAtPlxuICAgICAgICAgICAgICByZWFkIGlucHV0XG4gICAgICAgICAgICAgID4+PiBmdW4geCAtPlxuICAgICAgICAgICAgICBoYW5kbGVfcmVhZCBpbnB1dCB4O1xuICAgICAgICAgICAgICBwb3BfaGVhcF9hbmRfbG9vcCAoKSkpXG4gICAgaW5cbiAgICBsZXQgaW5pdGlhbF9wdXNoID1cbiAgICAgIERlZmVycmVkLkxpc3QuaXRlciB+aG93OmBTZXF1ZW50aWFsIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+XG4gICAgICAgIGxldCVtYXAgeCA9IHJlYWQgaW5wdXQgaW5cbiAgICAgICAgaGFuZGxlX3JlYWQgaW5wdXQgeClcbiAgICBpblxuICAgIHVwb24gaW5pdGlhbF9wdXNoIHBvcF9oZWFwX2FuZF9sb29wO1xuICAgIHJcbjs7XG5cbmxldCBjb25jYXRfcGlwZSBpbnB1dHMgPVxuICBsZXQgciA9XG4gICAgY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uIChmdW4gdyAtPlxuICAgICAgbGV0IGxpbmsgPSBMaW5rLmNyZWF0ZSB+dXBzdHJlYW06aW5wdXRzIH5kb3duc3RyZWFtOncgaW5cbiAgICAgIGxldCBjb25zdW1lciA9IExpbmsuY29uc3VtZXIgbGluayBpblxuICAgICAgaXRlciB+Zmx1c2hlZDooQ29uc3VtZXIgY29uc3VtZXIpIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+IHRyYW5zZmVyX2lkIGlucHV0IHcpKVxuICBpblxuICB1cG9uIChjbG9zZWQgcikgKGZ1biAoKSAtPiBjbG9zZSBpbnB1dHMpO1xuICByXG47O1xuXG5sZXQgY29uY2F0IGlucHV0cyA9XG4gIGNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4Y2VwdGlvbiAoZnVuIHcgLT5cbiAgICBEZWZlcnJlZC5MaXN0Lml0ZXIgfmhvdzpgU2VxdWVudGlhbCBpbnB1dHMgfmY6KGZ1biBpbnB1dCAtPiB0cmFuc2Zlcl9pZCBpbnB1dCB3KSlcbjs7XG5cbmxldCBmb3JrIHQgfnB1c2hiYWNrX3VzZXMgPVxuICBsZXQgcmVhZGVyMCwgd3JpdGVyMCA9IGNyZWF0ZSAoKSBpblxuICBsZXQgcmVhZGVyMSwgd3JpdGVyMSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgY29uc3VtZXIgPVxuICAgIGFkZF9jb25zdW1lciB0IH5kb3duc3RyZWFtX2ZsdXNoZWQ6KGZ1biAoKSAtPlxuICAgICAgbGV0IHNvbWVfcmVhZGVyX3dhc19jbG9zZWQgPSAhc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCBpblxuICAgICAgbWF0Y2glbWFwXG4gICAgICAgIEZsdXNoZWRfcmVzdWx0LmNvbWJpbmUgWyBkb3duc3RyZWFtX2ZsdXNoZWQgd3JpdGVyMDsgZG93bnN0cmVhbV9mbHVzaGVkIHdyaXRlcjEgXVxuICAgICAgd2l0aFxuICAgICAgfCBgUmVhZGVyX2Nsb3NlZCAtPiBgUmVhZGVyX2Nsb3NlZFxuICAgICAgfCBgT2sgLT5cbiAgICAgICAgKCogSW4gdGhpcyBjYXNlLCB0aGVyZSBjb3VsZCBoYXZlIGJlZW4gbm8gcGVuZGluZyBpdGVtcyBpbiBbd3JpdGVyMF0gbm9yIGluXG4gICAgICAgICAgIFt3cml0ZXIxXSwgaW4gd2hpY2ggY2FzZSB3ZSBjb3VsZCBoYXZlIGhhZCBhIGNsb3NlZCBwaXBlIHRoYXQgbWlzc2VkIHNvbWVcbiAgICAgICAgICAgd3JpdGVzLCBidXQgW0ZsdXNoZWRfcmVzdWx0LmNvbWJpbmVdIHdvdWxkIHN0aWxsIGhhdmUgcmV0dXJuZWQgW2BPa10gKilcbiAgICAgICAgaWYgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCB0aGVuIGBSZWFkZXJfY2xvc2VkIGVsc2UgYE9rKVxuICBpblxuICBkb24ndF93YWl0X2ZvclxuICAgIChsZXQgc3RpbGxfb3BlbiA9IFsgd3JpdGVyMDsgd3JpdGVyMSBdIGluXG4gICAgIGxldCBmaWx0ZXJfb3BlbiBzdGlsbF9vcGVuID1cbiAgICAgICAoKiBPbmx5IGNhbGwgW2ZpbHRlcl0gYW5kIHJlYWxsb2NhdGUgbGlzdCBpZiBzb21ldGhpbmcgd2lsbCBnZXQgZmlsdGVyZWQgKilcbiAgICAgICBpZiBub3QgKExpc3QuZXhpc3RzIHN0aWxsX29wZW4gfmY6aXNfY2xvc2VkKVxuICAgICAgIHRoZW4gc3RpbGxfb3BlblxuICAgICAgIGVsc2UgKFxuICAgICAgICAgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCA6PSB0cnVlO1xuICAgICAgICAgbGV0IHN0aWxsX29wZW4gPSBMaXN0LmZpbHRlciBzdGlsbF9vcGVuIH5mOihmdW4gdyAtPiBub3QgKGlzX2Nsb3NlZCB3KSkgaW5cbiAgICAgICAgIGlmIExpc3QuaXNfZW1wdHkgc3RpbGxfb3BlbiB0aGVuIGNsb3NlIHQ7XG4gICAgICAgICBzdGlsbF9vcGVuKVxuICAgICBpblxuICAgICBsZXQlYmluZCBzdGlsbF9vcGVuID1cbiAgICAgICBmb2xkJyB0IH5mbHVzaGVkOihDb25zdW1lciBjb25zdW1lcikgfmluaXQ6c3RpbGxfb3BlbiB+ZjooZnVuIHN0aWxsX29wZW4gcXVldWUgLT5cbiAgICAgICAgIGxldCBzdGlsbF9vcGVuID0gZmlsdGVyX29wZW4gc3RpbGxfb3BlbiBpblxuICAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBzdGlsbF9vcGVuXG4gICAgICAgICB0aGVuIHJldHVybiBbXVxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICAgIG1hdGNoIHB1c2hiYWNrX3VzZXMgd2l0aFxuICAgICAgICAgICAgIHwgYEZhc3RfY29uc3VtZXJfb25seSAtPiBEZWZlcnJlZC5hbnkgKExpc3QubWFwIHN0aWxsX29wZW4gfmY6cHVzaGJhY2spXG4gICAgICAgICAgICAgfCBgQm90aF9jb25zdW1lcnMgLT4gRGVmZXJyZWQuYWxsX3VuaXQgKExpc3QubWFwIHN0aWxsX29wZW4gfmY6cHVzaGJhY2spXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBzdGlsbF9vcGVuID0gZmlsdGVyX29wZW4gc3RpbGxfb3BlbiBpblxuICAgICAgICAgICBMaXN0Lml0ZXIgc3RpbGxfb3BlbiB+ZjooZnVuIHcgLT4gY29weV9pbl93aXRob3V0X3B1c2hiYWNrIHcgfmZyb206cXVldWUpO1xuICAgICAgICAgICBzdGlsbF9vcGVuKSlcbiAgICAgaW5cbiAgICAgTGlzdC5pdGVyIHN0aWxsX29wZW4gfmY6Y2xvc2U7XG4gICAgIHJldHVybiAoKSk7XG4gIHJlYWRlcjAsIHJlYWRlcjFcbjs7XG5cbmxldCBzZXRfaW5mbyB0IGluZm8gPSBzZXRfaW5mbyB0IChTb21lIGluZm8pXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxuXG50eXBlICgnYSwgJ3BoYW50b20pIHQgPVxuICB7IGN1cnJlbnRfdmFsdWUgOiAnYSBNb3B0aW9uLnRcbiAgOyB0YWtlbiA6ICh1bml0LCByZWFkX3dyaXRlKSBCdmFyLnRcbiAgOyBtdXRhYmxlIHZhbHVlX2F2YWlsYWJsZSA6IHVuaXQgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHZhbHVlX2F2YWlsYWJsZSB0ID0gSXZhci5yZWFkIHQudmFsdWVfYXZhaWxhYmxlXG5sZXQgaXNfZW1wdHkgdCA9IE1vcHRpb24uaXNfbm9uZSB0LmN1cnJlbnRfdmFsdWVcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfICh0IDogXyB0KSA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmN1cnJlbnRfdmFsdWU6KGNoZWNrIChNb3B0aW9uLmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+dGFrZW46KGNoZWNrIChCdmFyLmludmFyaWFudCBVbml0LmludmFyaWFudCBpZ25vcmUpKVxuICAgICAgfnZhbHVlX2F2YWlsYWJsZTpcbiAgICAgICAgKGNoZWNrIChmdW4gdmFsdWVfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAgICAgICAgKEl2YXIuaXNfZnVsbCB2YWx1ZV9hdmFpbGFibGUpXG4gICAgICAgICAgICAgfmV4cGVjdDooTW9wdGlvbi5pc19zb21lIHQuY3VycmVudF92YWx1ZSkpKSlcbjs7XG5cbmxldCBwZWVrIHQgPSBNb3B0aW9uLmdldCB0LmN1cnJlbnRfdmFsdWVcblxubGV0IHBlZWtfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNdmFyLnBlZWtfZXhuIGNhbGxlZCBvbiBlbXB0eSBtdmFyXCJdO1xuICBNb3B0aW9uLmdldF9zb21lX2V4biB0LmN1cnJlbnRfdmFsdWVcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IFslc2V4cCAocGVlayB0IDogYSBvcHRpb24pXVxuXG5tb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCByZWFkX3dyaXRlKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaW52YXJpYW50IGludmFyaWFudF9hIGlnbm9yZSB0XG5lbmRcblxubW9kdWxlIFJlYWRfb25seSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCByZWFkKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaW52YXJpYW50IGludmFyaWFudF9hIGlnbm9yZSB0XG5lbmRcblxubGV0IHJlYWRfb25seSAodCA6ICgnYSwgWz4gcmVhZCBdKSB0KSA9ICh0IDo+ICgnYSwgcmVhZCkgdClcbmxldCB3cml0ZV9vbmx5ICh0IDogKCdhLCBbPiB3cml0ZSBdKSB0KSA9ICh0IDo+ICgnYSwgd3JpdGUpIHQpXG5cbmxldCBjcmVhdGUgKCkgPVxuICB7IGN1cnJlbnRfdmFsdWUgPSBNb3B0aW9uLmNyZWF0ZSAoKVxuICA7IHRha2VuID0gQnZhci5jcmVhdGUgKClcbiAgOyB2YWx1ZV9hdmFpbGFibGUgPSBJdmFyLmNyZWF0ZSAoKVxuICB9XG47O1xuXG5sZXQgdGFrZV9ub25lbXB0eSB0ID1cbiAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IHIgPSBNb3B0aW9uLmdldF9zb21lX2V4biB0LmN1cnJlbnRfdmFsdWUgaW5cbiAgTW9wdGlvbi5zZXRfbm9uZSB0LmN1cnJlbnRfdmFsdWU7XG4gIEJ2YXIuYnJvYWRjYXN0IHQudGFrZW4gKCk7XG4gIHQudmFsdWVfYXZhaWxhYmxlIDwtIEl2YXIuY3JlYXRlICgpO1xuICByXG47O1xuXG5sZXQgdGFrZV9ub3dfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNdmFyLnRha2VfZXhuIGNhbGxlZCBvbiBlbXB0eSBtdmFyXCJdO1xuICB0YWtlX25vbmVtcHR5IHRcbjs7XG5cbmxldCB0YWtlX25vdyB0ID0gaWYgbm90IChpc19lbXB0eSB0KSB0aGVuIFNvbWUgKHRha2Vfbm9uZW1wdHkgdCkgZWxzZSBOb25lXG5cbmxldCByZWMgdGFrZSB0ID1cbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIHJldHVybiAodGFrZV9ub25lbXB0eSB0KVxuICBlbHNlIChcbiAgICBsZXQlYmluZCAoKSA9IHZhbHVlX2F2YWlsYWJsZSB0IGluXG4gICAgdGFrZSB0KVxuOztcblxubGV0IHNldCB0IHYgPVxuICBNb3B0aW9uLnNldF9zb21lIHQuY3VycmVudF92YWx1ZSB2O1xuICBJdmFyLmZpbGxfaWZfZW1wdHkgdC52YWx1ZV9hdmFpbGFibGUgKClcbjs7XG5cbmxldCB1cGRhdGUgdCB+ZiA9IHNldCB0IChmIChwZWVrIHQpKVxubGV0IHVwZGF0ZV9leG4gdCB+ZiA9IHNldCB0IChmIChwZWVrX2V4biB0KSlcbmxldCB0YWtlbiB0ID0gQnZhci53YWl0IHQudGFrZW5cblxubGV0IHJlYyBwdXQgdCB2ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIChcbiAgICBzZXQgdCB2O1xuICAgIHJldHVybiAoKSlcbiAgZWxzZSAoXG4gICAgbGV0JWJpbmQgKCkgPSB0YWtlbiB0IGluXG4gICAgcHV0IHQgdilcbjs7XG5cbmxldCBwaXBlX3doZW5fcmVhZHkgdCA9XG4gIGxldCByLCB3ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBsZXQlYmluZCAoKSA9IHZhbHVlX2F2YWlsYWJsZSB0IGluXG4gICAgaWYgbm90IChQaXBlLmlzX2Nsb3NlZCB3KVxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggdGFrZV9ub3cgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoKVxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgbGV0JWJpbmQgKCkgPSBQaXBlLndyaXRlIHcgeCBpblxuICAgICAgICBsb29wICgpKVxuICAgIGVsc2UgcmV0dXJuICgpXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yIChsb29wICgpKTtcbiAgclxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHN0YXJ0IDogdW5pdCBJdmFyLnRcbiAgICA7IHJlc3VsdCA6ICdhIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgIH1cblxuICBsZXQgY3JlYXRlID8ocmVzdF9leG4gPSBgTG9nKSBmID1cbiAgICBsZXQgc3RhcnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIHsgc3RhcnRcbiAgICA7IHJlc3VsdCA9XG4gICAgICAgIChsZXQlYmluZCAoKSA9IEl2YXIucmVhZCBzdGFydCBpblxuICAgICAgICAgTW9uaXRvci50cnlfd2l0aF9vcl9lcnJvclxuICAgICAgICAgICB+cmVzdDpyZXN0X2V4blxuICAgICAgICAgICBmKVxuICAgIH1cbiAgOztcblxuICBsZXQgY3JlYXRlX29yX2Vycm9yID8ocmVzdF9leG4gPSBgTG9nKSBmID1cbiAgICBsZXQgc3RhcnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIHsgc3RhcnRcbiAgICA7IHJlc3VsdCA9XG4gICAgICAgIChsZXQlYmluZCAoKSA9IEl2YXIucmVhZCBzdGFydCBpblxuICAgICAgICAgTW9uaXRvci50cnlfd2l0aF9qb2luX29yX2Vycm9yXG4gICAgICAgICAgIH5yZXN0OnJlc3RfZXhuXG4gICAgICAgICAgIGYpXG4gICAgfVxuICA7O1xuXG4gIGxldCB3YWl0IHQgPSB0LnJlc3VsdFxuICBsZXQgd2FpdF9leG4gdCA9IHdhaXQgdCA+Pnwgb2tfZXhuXG4gIGxldCBzdGFydCB0ID0gSXZhci5maWxsX2lmX2VtcHR5IHQuc3RhcnQgKClcblxuICBsZXQgZm9yY2UgdCA9XG4gICAgc3RhcnQgdDtcbiAgICB3YWl0IHRcbiAgOztcblxuICBsZXQgZm9yY2VfZXhuIHQgPSBmb3JjZSB0ID4+fCBva19leG5cbiAgbGV0IHJldHVybiBhID0gY3JlYXRlIChmdW4gKCkgLT4gcmV0dXJuIGEpXG5cbiAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgY3JlYXRlIChmdW4gKCkgLT5cbiAgICAgIGxldCViaW5kIGEgPSBmb3JjZV9leG4gdCBpblxuICAgICAgZm9yY2VfZXhuIChmIGEpKVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IGNyZWF0ZSAoZnVuICgpIC0+IGZvcmNlX2V4biB0ID4+fCBmKVxuICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgTW9uYWQuTWFrZSAoVClcblxubGV0IGJpbmQnIHQgZiA9IGJpbmQgdCB+ZjooZnVuIGEgLT4gY3JlYXRlIChmdW4gKCkgLT4gZiBhKSlcbmxldCBpc19mb3JjZWQgdCA9IEl2YXIuaXNfZnVsbCB0LnN0YXJ0XG5sZXQgaXNfZGV0ZXJtaW5lZCB0ID0gRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCB0LnJlc3VsdFxubGV0IHBlZWsgdCA9IERlZmVycmVkLnBlZWsgdC5yZXN1bHRcbmxldCBwZWVrX2V4biB0ID0gT3B0aW9uLm1hcCAocGVlayB0KSB+Zjpva19leG5cbiIsIm9wZW4gQ29yZVxuXG50eXBlICdhIHQgPSB7IHdhaXRzIDogJ2EgSXZhci50IFF1ZXVlLnQgfSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY3JlYXRlICgpID0geyB3YWl0cyA9IFF1ZXVlLmNyZWF0ZSAoKSB9XG5sZXQgd2FpdCB0ID0gRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPiBRdWV1ZS5lbnF1ZXVlIHQud2FpdHMgaXZhcilcbmxldCBzaWduYWwgdCBhID0gT3B0aW9uLml0ZXIgKFF1ZXVlLmRlcXVldWUgdC53YWl0cykgfmY6KGZ1biBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGEpXG5cbmxldCBicm9hZGNhc3QgdCBhID1cbiAgUXVldWUuaXRlciB0LndhaXRzIH5mOihmdW4gaXZhciAtPiBJdmFyLmZpbGwgaXZhciBhKTtcbiAgUXVldWUuY2xlYXIgdC53YWl0c1xuOztcbiIsIm9wZW4gQ29yZVxuaW5jbHVkZSBHY1xuXG4oKiogW2FkZF9maW5hbGl6ZXIgZiB4XSBpcyBsaWtlIFtHYy5maW5hbGlzZSBmIHhdLCBleGNlcHQgdGhhdCB0aGUgZmluYWxpemVyIGlzIGd1YXJhbnRlZWRcbiAgICB0byBydW4gYXMgYW4gQXN5bmMgam9iIChpLmUuIHdpdGhvdXQgaW50ZXJydXB0aW5nIG90aGVyIEFzeW5jIGpvYnMpLiAgVW5wcm90ZWN0ZWQgdXNlXG4gICAgb2YgW0NhbWwuR2MuZmluYWxpc2VdIG9yIFtDb3JlLkdjLmFkZF9maW5hbGl6ZXJdIGluIEFzeW5jIHByb2dyYW1zIGlzIHdyb25nLCBiZWNhdXNlXG4gICAgdGhlIGZpbmFsaXplcnMgd29uJ3QgaG9sZCB0aGUgYXN5bmMgbG9jaywgYW5kIHRodXMgY291bGQgaW50ZXJsZWF2ZSBhcmJpdHJhcmlseSB3aXRoXG4gICAgYXN5bmMgam9icy4gKilcbmxldCBhZGRfZmluYWxpemVyIGhlYXBfYmxvY2sgZiA9IFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplciAodCAoKSkpIGhlYXBfYmxvY2sgZlxuXG5sZXQgYWRkX2ZpbmFsaXplcl9leG4gaGVhcF9ibG9jayBmID0gU2NoZWR1bGVyLihhZGRfZmluYWxpemVyX2V4biAodCAoKSkpIGhlYXBfYmxvY2sgZlxubGV0IGFkZF9maW5hbGl6ZXJfbGFzdCBoZWFwX2Jsb2NrIGYgPSBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXJfbGFzdCAodCAoKSkpIGhlYXBfYmxvY2sgZlxuXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0X2V4biBoZWFwX2Jsb2NrIGYgPVxuICBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXJfbGFzdF9leG4gKHQgKCkpKSBoZWFwX2Jsb2NrIGZcbjs7XG5cbm1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICBtb2R1bGUgQWxhcm0gPSBHYy5FeHBlcnQuQWxhcm1cblxuICB0eXBlIHQgPSBBbGFybS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBmID0gU2NoZWR1bGVyLihjcmVhdGVfYWxhcm0gKHQgKCkpKSBmXG4gIGxldCBkZWxldGUgPSBBbGFybS5kZWxldGVcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgc2lnbmF0dXJlcyB0aGF0IGV4dGVuZCBbQ29yZS5JbnZhcmlhbnRdIHdpdGggYW4gW0FzeW5jXVxuICAgIHN1Ym1vZHVsZSBmb3IgaW52YXJpYW50cyB0aGF0IHVzZSBhc3luYyBjb21wdXRhdGlvbiBhbmQgcmV0dXJuIFt1bml0IERlZmVycmVkLnRdLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFzeW5jID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIC0+IHVuaXQgRGVmZXJyZWQudFxuICB0eXBlICdhIGludiA9ICdhIHRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgaW52YXJpYW50IDogdCBpbnZcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBpbnYgLT4gJ2EgdCBpbnZcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBpbnYgLT4gJ2IgaW52IC0+ICgnYSwgJ2IpIHQgaW52XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYiBpbnYgLT4gJ2MgaW52IC0+ICgnYSwgJ2IsICdjKSB0IGludlxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBc3luY19pbnZhcmlhbnQgPSBzaWdcbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBDb3JlLkludmFyaWFudFxuXG4gIG1vZHVsZSBBc3luYyA6IHNpZ1xuICAgIG9wZW4gQXN5bmNcblxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSBBc3luYy50XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gU1xuICAgIG1vZHVsZSB0eXBlIFMxID0gUzFcbiAgICBtb2R1bGUgdHlwZSBTMiA9IFMyXG4gICAgbW9kdWxlIHR5cGUgUzMgPSBTM1xuXG4gICAgdmFsIGludmFyaWFudFxuICAgICAgOiAgU291cmNlX2NvZGVfcG9zaXRpb24udFxuICAgICAgLT4gJ2FcbiAgICAgIC0+ICgnYSAtPiBTZXhwLnQpXG4gICAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgICAtPiB1bml0IERlZmVycmVkLnRcblxuICAgICgqKiBbY2hlY2tfZmllbGRdIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHJlY29yZCBmaWVsZHMgd2hlbiB1c2luZyBbW0BAZGVyaXZpbmcgZmllbGRzXV0uXG4gICAgICAgIElkaW9tYXRpYyB1c2FnZSBsb29rcyBsaWtlOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgdHlwZSB0ID0geyBmb28gOiBGb28udCA7IGJhciA6IEJhci50IH1cbiAgICAgICAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICAgICAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgICAgICAgSW52YXJpYW50LkFzeW5jLmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIGxldCBjaGVjayBpbnYgPSBJbnZhcmlhbnQuQXN5bmMuY2hlY2tfZmllbGQgdCBpbnYgaW5cbiAgICAgICAgICAgICAgRmllbGRzLmZvbGQgfmluaXQ6KHJldHVybiAoKSlcbiAgICAgICAgICAgICAgICB+Zm9vOiAoY2hlY2sgRm9vLmludmFyaWFudClcbiAgICAgICAgICAgICAgICB+YmFyOiAoY2hlY2sgQmFyLmludmFyaWFudCkgXX1cblxuICAgICAgICBXaGVuIHNvbWUgZmllbGRzIGhhdmUgc3luY2hyb25vdXMgaW52YXJpYW50cywgb3IgZG8gbm90IG5lZWQgdG8gYmUgY2hlY2tlZCwgaXRcbiAgICAgICAgbWF5IGJlIHVzZWZ1bCB0byBkZWZpbmUgYSBzZWNvbmQgd3JhcHBlciBhcm91bmQgW2NoZWNrX2ZpZWxkXTpcblxuICAgICAgICB7W1xuICAgICAgICAgIHR5cGUgdCA9IHsgZm9vIDogRm9vLnQgOyBiYXIgOiBCYXIudCA7IHF1dXggOiBRdXV4LnQgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgICBJbnZhcmlhbnQuQXN5bmMuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgbGV0IGNoZWNrJyBpbnYgPSBJbnZhcmlhbnQuQXN5bmMuY2hlY2tfZmllbGQgdCBpbnYgaW5cbiAgICAgICAgICAgICAgbGV0IGNoZWNrIGludiA9IGNoZWNrJyAoZnVuIHggLT4gaW52IHg7IHJldHVybiAoKSkgaW5cbiAgICAgICAgICAgICAgRmllbGRzLmZvbGQgfmluaXQ6KHJldHVybiAoKSlcbiAgICAgICAgICAgICAgICB+Zm9vOiAgKGNoZWNrJyBGb28uaW52YXJpYW50KVxuICAgICAgICAgICAgICAgIH5iYXI6ICAoY2hlY2sgIEJhci5pbnZhcmlhbnQpXG4gICAgICAgICAgICAgICAgfnF1dXg6IChjaGVjayAgaWdub3JlKSBdfSAqKVxuICAgIHZhbCBjaGVja19maWVsZCA6ICdhIC0+ICdiIHQgLT4gdW5pdCBEZWZlcnJlZC50IC0+ICgnYSwgJ2IpIEZpZWxkLnQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBEZWZlcnJlZC5MZXRfc3ludGF4XG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29yZS5JbnZhcmlhbnRcblxubW9kdWxlIEFzeW5jID0gc3RydWN0XG4gIGluY2x1ZGUgQXN5bmNfaW52YXJpYW50X2ludGYuQXN5bmNcblxuICBsZXQgaW52YXJpYW50IGhlcmUgdCBzZXhwX29mX3QgZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5ydW46YFNjaGVkdWxlXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgZlxuICAgICAgICB+ZXh0cmFjdF9leG46dHJ1ZVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciBleG4gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJpbnZhcmlhbnQgZmFpbGVkXCIgfl86KGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KSAoZXhuIDogZXhuKSB+XzoodCA6IHQpXVxuICA7O1xuXG4gIGxldCBjaGVja19maWVsZCB0IGYgd2FpdF9mb3JfcHJldmlvdXMgZmllbGQgPVxuICAgIGxldCViaW5kICgpID0gd2FpdF9mb3JfcHJldmlvdXMgaW5cbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICB+ZXh0cmFjdF9leG46dHJ1ZVxuICAgICAgICAoZnVuICgpIC0+IGYgKEZpZWxkLmdldCBmaWVsZCB0KSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcInByb2JsZW0gd2l0aCBmaWVsZFwiIH5maWVsZDooRmllbGQubmFtZSBmaWVsZCA6IHN0cmluZykgKGV4biA6IGV4bildXG4gIDs7XG5lbmRcbiIsIigqKiBDb250YWlucyBBc3luYydzIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzLCBsaWtlIHt7IUFzeW5jX2tlcm5lbC5EZWZlcnJlZH1bRGVmZXJyZWRdfSxcbiAgICB7eyFBc3luY19rZXJuZWwuSXZhcn1bSXZhcl19LCBhbmQge3shQXN5bmNfa2VybmVsLkNsb2NrX2ludGYuQ2xvY2t9W0Nsb2NrXX0uXG5cbiAgICBbQXN5bmNfa2VybmVsXSBpcyBkZXNpZ25lZCB0byBkZXBlbmQgb25seSBvbiB7eyFDb3JlfVtDb3JlXX0gYW5kIHNvIGlzIG1vcmVcbiAgICBwbGF0Zm9ybS1pbmRlcGVuZGVudC4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQXN5bmNfa2VybmVsX2NvbmZpZyA9IEFzeW5jX2tlcm5lbF9jb25maWdcbm1vZHVsZSBBc3luY19rZXJuZWxfcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZSA9IFJlcXVpcmVfZXhwbGljaXRfdGltZV9zb3VyY2Vcbm1vZHVsZSBBc3luY19rZXJuZWxfc2NoZWR1bGVyID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlclxubW9kdWxlIEJ2YXIgPSBCdmFyXG5tb2R1bGUgQ2xvY2tfbnMgPSBDbG9ja19uc1xubW9kdWxlIENvbmRpdGlvbiA9IEFzeW5jX2NvbmRpdGlvblxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWRcbm1vZHVsZSBFeGVjdXRpb25fY29udGV4dCA9IEV4ZWN1dGlvbl9jb250ZXh0XG5tb2R1bGUgR2MgPSBBc3luY19nY1xubW9kdWxlIEludmFyaWFudCA9IEFzeW5jX2ludmFyaWFudFxubW9kdWxlIEl2YXIgPSBJdmFyXG5tb2R1bGUgTGF6eV9kZWZlcnJlZCA9IExhenlfZGVmZXJyZWRcbm1vZHVsZSBNb25hZF9zZXF1ZW5jZSA9IE1vbmFkX3NlcXVlbmNlXG5tb2R1bGUgTW9uaXRvciA9IE1vbml0b3Jcbm1vZHVsZSBNdmFyID0gTXZhclxubW9kdWxlIFBpcGUgPSBQaXBlXG5tb2R1bGUgUHJpb3JpdHkgPSBQcmlvcml0eVxubW9kdWxlIFNlcXVlbmNlciA9IFRocm90dGxlLlNlcXVlbmNlclxubW9kdWxlIFN0cmVhbSA9IEFzeW5jX3N0cmVhbVxubW9kdWxlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Vcbm1vZHVsZSBUYWlsID0gVGFpbFxubW9kdWxlIFRocm90dGxlID0gVGhyb3R0bGVcbm1vZHVsZSBUaHJvdHRsZWQgPSBUaHJvdHRsZWRcbm1vZHVsZSBUaW1lX3NvdXJjZSA9IFRpbWVfc291cmNlXG5cblxuKCoqIHsyIFRvcGxldmVsIGZ1bmN0aW9ucyB9XG5cbiAgICBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBicm9hZGx5IHVzZWZ1bCB3aGVuIHdyaXRpbmcgQXN5bmMgcHJvZ3JhbXMsIGFuZCBzbyBhcmUgbWFkZVxuICAgIGF2YWlsYWJsZSBhdCB0aGUgdG9wbGV2ZWwuICopXG5cblxubGV0IGFmdGVyID0gQ2xvY2tfbnMuYWZ0ZXJcbmxldCBhdCA9IENsb2NrX25zLmF0XG5sZXQgY2F0Y2ggPSBNb25pdG9yLmNhdGNoXG5sZXQgY2hvaWNlID0gRGVmZXJyZWQuY2hvaWNlXG5sZXQgY2hvb3NlID0gRGVmZXJyZWQuY2hvb3NlXG5sZXQgZG9uJ3Rfd2FpdF9mb3IgPSBEZWZlcnJlZC5kb24ndF93YWl0X2ZvclxubGV0IGV2ZXJ5ID0gQ2xvY2tfbnMuZXZlcnlcbmxldCBuZXZlciA9IERlZmVycmVkLm5ldmVyXG5sZXQgc2NoZWR1bGUgPSBTY2hlZHVsZXIuc2NoZWR1bGVcbmxldCBzY2hlZHVsZScgPSBTY2hlZHVsZXIuc2NoZWR1bGUnXG5sZXQgdHJ5X3dpdGggPSBNb25pdG9yLnRyeV93aXRoXG5sZXQgdXBvbiA9IERlZmVycmVkLnVwb25cbmxldCB3aXRoX3RpbWVvdXQgPSBDbG9ja19ucy53aXRoX3RpbWVvdXRcbmxldCB3aXRoaW4gPSBTY2hlZHVsZXIud2l0aGluXG5sZXQgd2l0aGluJyA9IFNjaGVkdWxlci53aXRoaW4nXG5cbigqKiB7MiBJbmZpeCBvcGVyYXRvcnMgYW5kIFtMZXRfc3ludGF4XSBzdXBwb3J0fSAqKVxuXG5pbmNsdWRlIChEZWZlcnJlZCA6IE1vbmFkLkluZml4IHdpdGggdHlwZSAnYSB0IDo9ICdhIERlZmVycmVkLnQpXG5cbigqKiBlcXVpdmFsZW50IHRvIHshRGVmZXJyZWQudXBvbn0uICopXG5sZXQgKCA+Pj4gKSA9IERlZmVycmVkLkluZml4LiggPj4+IClcblxuKCoqIGVxdWl2YWxlbnQgdG8geyFEZWZlcnJlZC5SZXN1bHQuYmluZH0uICopXG5sZXQgKCA+Pj0/ICkgPSBEZWZlcnJlZC5SZXN1bHQuKCA+Pj0gKVxuXG4oKiogZXF1aXZhbGVudCB0byB7IURlZmVycmVkLlJlc3VsdC5tYXB9LiAqKVxubGV0ICggPj58PyApID0gRGVmZXJyZWQuUmVzdWx0LiggPj58IClcblxuaW5jbHVkZSBEZWZlcnJlZC5MZXRfc3ludGF4XG5cbigqKi8qKilcblxuKCoqIFRoZSBtb2R1bGVzIGluIFtBc3luY19rZXJuZWxfcHJpdmF0ZV0gYXJlIHVzZWQgZm9yIGNvbnN0cnVjdGluZyBhbmQgdGVzdGluZyBBc3luYywgYW5kXG4gICAgc2hvdWxkIG5vdCBvdGhlcndpc2UgYmUgdXNlZC4gKilcbm1vZHVsZSBBc3luY19rZXJuZWxfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgRGVidWcgPSBEZWJ1Z1xuICBtb2R1bGUgSXZhcjAgPSBJdmFyMFxuICBtb2R1bGUgSXZhcl9maWxsZXIgPSBJdmFyX2ZpbGxlclxuICBtb2R1bGUgSm9iID0gSm9iXG4gIG1vZHVsZSBTdGFja19vcl9jb3VudGVyID0gU3RhY2tfb3JfY291bnRlclxuZW5kXG5cbigqKi8qKilcblxuKCogVGhpcyB0ZXN0IG11c3QgYmUgaW4gdGhpcyBsaWJyYXJ5LCBiZWNhdXNlIGl0IHJlcXVpcmVzIFtyZXR1cm5dIHRvIGJlIGlubGluZWQuICBNb3ZpbmdcbiAgIGl0IHRvIGFub3RoZXIgbGlicmFyeSB3aWxsIGNhdXNlIGl0IHRvIGJyZWFrIHdpdGggW1hfTElCUkFSWV9JTkxJTklORz1mYWxzZV0uICopXG5sZXQldGVzdF91bml0IFwiW3JldHVybiAoKV0gZG9lcyBub3QgYWxsb2NhdGVcIiA9XG4gIGxldCB3MSA9IEdjLm1pbm9yX3dvcmRzICgpIGluXG4gIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAocmV0dXJuICgpKSA6IF8gRGVmZXJyZWQudCk7XG4gIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoRGVmZXJyZWQucmV0dXJuICgpKSA6IF8gRGVmZXJyZWQudCk7XG4gIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoRGVmZXJyZWQuTGV0X3N5bnRheC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5MZXRfc3ludGF4LkxldF9zeW50YXgucmV0dXJuICgpKSA6IF8gRGVmZXJyZWQudCk7XG4gIGxldCB3MiA9IEdjLm1pbm9yX3dvcmRzICgpIGluXG4gIFsldGVzdF9yZXN1bHQ6IGludF0gdzIgfmV4cGVjdDp3MVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgKydhIHQgPSAnYSBEZWZlcnJlZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHJldHVybiA9IERlZmVycmVkLnJldHVyblxuXG4gIGxldCBiaW5kIHQgfmYgPVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgdCB0aGVuIGYgKERlZmVycmVkLnZhbHVlX2V4biB0KSBlbHNlIERlZmVycmVkLmJpbmQgdCB+ZlxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCB0XG4gICAgdGhlbiByZXR1cm4gKGYgKERlZmVycmVkLnZhbHVlX2V4biB0KSlcbiAgICBlbHNlIERlZmVycmVkLm1hcCB0IH5mXG4gIDs7XG5cbiAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIE1vbmFkLk1ha2UgKFQpXG5cbmxldCBjcmVhdGUgPSBEZWZlcnJlZC5jcmVhdGVcbmxldCBkb24ndF93YWl0X2ZvciA9IERlZmVycmVkLmRvbid0X3dhaXRfZm9yXG5sZXQgaW52YXJpYW50ID0gRGVmZXJyZWQuaW52YXJpYW50XG5sZXQgaXNfZGV0ZXJtaW5lZCA9IERlZmVycmVkLmlzX2RldGVybWluZWRcbmxldCBuZXZlciA9IERlZmVycmVkLm5ldmVyXG5sZXQgcGVlayA9IERlZmVycmVkLnBlZWtcbmxldCB1bml0ID0gRGVmZXJyZWQudW5pdFxubGV0IHZhbHVlX2V4biA9IERlZmVycmVkLnZhbHVlX2V4blxubGV0IHVwb24gdCBmID0gaWYgaXNfZGV0ZXJtaW5lZCB0IHRoZW4gZiAodmFsdWVfZXhuIHQpIGVsc2UgRGVmZXJyZWQudXBvbiB0IGZcblxubGV0IGJvdGggdDEgdDIgPVxuICBjcmVhdGUgKGZ1biByZXN1bHQgLT4gdXBvbiB0MSAoZnVuIGExIC0+IHVwb24gdDIgKGZ1biBhMiAtPiBJdmFyLmZpbGwgcmVzdWx0IChhMSwgYTIpKSkpXG47O1xuXG5sZXQgb2sgdCA9IGlmIGlzX2RldGVybWluZWQgdCB0aGVuIHJldHVybiAoT2sgKHZhbHVlX2V4biB0KSkgZWxzZSBEZWZlcnJlZC5vayB0XG5sZXQgaWdub3JlX20gdCA9IGlmIGlzX2RldGVybWluZWQgdCB0aGVuIHVuaXQgZWxzZSBEZWZlcnJlZC5pZ25vcmVfbSB0XG5cbmxldCBhbnkgdHMgPVxuICBtYXRjaCBMaXN0LmZpbmQgdHMgfmY6aXNfZGV0ZXJtaW5lZCB3aXRoXG4gIHwgU29tZSB4IC0+IHJldHVybiAodmFsdWVfZXhuIHgpXG4gIHwgTm9uZSAtPiBEZWZlcnJlZC5hbnkgdHNcbjs7XG5cbmxldCBhbnlfdW5pdCB0cyA9XG4gIGlmIExpc3QuZXhpc3RzIHRzIH5mOihpc19kZXRlcm1pbmVkIDogdW5pdCB0IC0+IGJvb2wpXG4gIHRoZW4gdW5pdFxuICBlbHNlIERlZmVycmVkLmFueV91bml0IHRzXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIGxldCAoID4+PiApID0gdXBvblxuZW5kXG5cbmxldCByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZiA9XG4gIGxldCBvcGVuIEluZml4IGluXG4gIGNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICAgIGYgc3RhdGVcbiAgICAgID4+PiBmdW5jdGlvblxuICAgICAgfCBgUmVwZWF0IHN0YXRlIC0+IGxvb3Agc3RhdGVcbiAgICAgIHwgYEZpbmlzaGVkIHJlc3VsdCAtPiBJdmFyLmZpbGwgZmluaXNoZWQgcmVzdWx0XG4gICAgaW5cbiAgICBsb29wIHN0YXRlKVxuOztcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgb3BlbiBJbmZpeFxuICBvcGVuIExldF9zeW50YXhcblxuICBsZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gICAgY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgdCBpIGIgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgICAgfCB4IDo6IHhzIC0+IGYgaSBiIHggPj4+IGZ1biBiIC0+IGxvb3AgeHMgKGkgKyAxKSBiXG4gICAgICBpblxuICAgICAgbG9vcCB0IDAgaW5pdClcbiAgOztcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG4gIGxldCBzZXFtYXBpIHQgfmYgPVxuICAgIGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgICBiIDo6IGJzKVxuICAgID4+fCBMaXN0LnJldlxuICA7O1xuXG4gIGxldCBhbGwgZHMgPSBzZXFtYXBpIGRzIH5mOihmdW4gXyB4IC0+IHgpXG4gIGxldCBhbGxfdW5pdCBkcyA9IGlnbm9yZV9tIChmb2xkIGRzIH5pbml0OigpIH5mOihmdW4gKCkgZCAtPiBkKSA6IHVuaXQgVC50KVxuXG4gIGxldCBpdGVyaSB+aG93IHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGxfdW5pdCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbiAgOztcblxuICBsZXQgbWFwaSB+aG93IHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGwgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuICA7O1xuXG4gIGxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gICAgbGV0JW1hcCBib29scyA9IG1hcGkgdCB+aG93IH5mIGluXG4gICAgTGlzdC5yZXZcbiAgICAgIChMaXN0LmZvbGQyX2V4biB0IGJvb2xzIH5pbml0OltdIH5mOihmdW4gYWMgeCBiIC0+IGlmIGIgdGhlbiB4IDo6IGFjIGVsc2UgYWMpKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5maWx0ZXJfb3B0XG4gIGxldCBjb25jYXRfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5jb25jYXRcblxuICBsZXQgZmluZF9tYXBpIHQgfmYgPVxuICAgIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoJWJpbmQgZiBpIGhkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgICBpblxuICAgIGZpbmRfbWFwaSB0IH5mIDBcbiAgOztcblxuICBsZXQgZmluZGkgdCB+ZiA9XG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gZWx0IC0+IGlmJW1hcCBmIGVsdCB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcblxuICBsZXQgZXhpc3RzaSB0IH5mID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiB0cnVlXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiBmYWxzZVxuICAgIHwgTm9uZSAtPiB0cnVlXG4gIDs7XG5cbiAgbGV0IGl0ZXIgfmhvdyB0IH5mID0gaXRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IG1hcCB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXIgfmhvdyB0IH5mID0gZmlsdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPSBjb25jYXRfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgaW5pdCB+aG93IG4gfmYgPSBtYXAgfmhvdyAoTGlzdC5pbml0IG4gfmY6Rm4uaWQpIH5mXG5lbmRcblxubGV0IGFsbF91bml0ID0gTGlzdC5hbGxfdW5pdFxuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBEZWZlcnJlZCA9IEVhZ2VyX2RlZmVycmVkMFxub3BlbiBEZWZlcnJlZC5MZXRfc3ludGF4XG5cbigqIENvcGllZCBmcm9tIFtkZWZlcnJlZF9yZXN1bHQubWxdLiAgVGhlcmUgc2hvdWxkIGJlIG5vIGRpZmZzIGJlbG93IHRoaXMgbGluZS4gKilcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdlcnJvcikgdCA9ICgnYSwgJ2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50XG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBjb21iaW5lIHQxIHQyIH5vayB+ZXJyID1cbiAgbGV0JW1hcCB0MSA9IHQxXG4gIGFuZCB0MiA9IHQyIGluXG4gIFJlc3VsdC5jb21iaW5lIHQxIHQyIH5vayB+ZXJyXG47O1xuXG5pbmNsdWRlIE1vbmFkLk1ha2UyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCByZXR1cm4gYSA9IERlZmVycmVkLnJldHVybiAoT2sgYSlcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgRGVmZXJyZWQuYmluZCB0IH5mOihmdW5jdGlvblxuICAgICAgICB8IE9rIGEgLT4gZiBhXG4gICAgICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiBEZWZlcnJlZC5yZXR1cm4gZXJyb3IpXG4gICAgOztcblxuICAgIGxldCBtYXAgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBSZXN1bHQubWFwIHIgfmYpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGZhaWwgeCA9IERlZmVycmVkLnJldHVybiAoRXJyb3IgeClcbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcbmxldCBtYXBfZXJyb3IgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBSZXN1bHQubWFwX2Vycm9yIHIgfmYpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19rZXJuZWxcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRWFnZXJfZGVmZXJyZWQwXG5tb2R1bGUgRGVmZXJyZWRfcmVzdWx0ID0gRWFnZXJfZGVmZXJyZWRfcmVzdWx0XG5cbm1vZHVsZSBNb25pdG9yID0gc3RydWN0XG4gIGxldCB0cnlfd2l0aCA/KHJ1biA9IGBOb3cpID0gTW9uaXRvci50cnlfd2l0aCB+cnVuXG5lbmRcblxuKCogQ29waWVkIGZyb20gW2RlZmVycmVkX29yX2Vycm9yLm1sXS4gIFRoZXJlIHNob3VsZCBiZSBubyBkaWZmcyBiZWxvdyB0aGlzIGxpbmUuICopXG5cbmluY2x1ZGUgKERlZmVycmVkX3Jlc3VsdCA6IE1vbmFkLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIERlZmVycmVkX3Jlc3VsdC50KVxuXG50eXBlICdhIHQgPSAnYSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgbGV0IGFwcGx5IGYgeCA9XG4gICAgICBEZWZlcnJlZF9yZXN1bHQuY29tYmluZVxuICAgICAgICBmXG4gICAgICAgIHhcbiAgICAgICAgfm9rOihmdW4gZiB4IC0+IGYgeClcbiAgICAgICAgfmVycjooZnVuIGUxIGUyIC0+IEVycm9yLm9mX2xpc3QgWyBlMTsgZTIgXSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAoKiBmcm9tIEFwcGxpY2F0aXZlLk1ha2UgKilcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4gTGV0X3N5bnRheFxuXG5sZXQgZmFpbCBlcnJvciA9IERlZmVycmVkLnJldHVybiAoUmVzdWx0LmZhaWwgZXJyb3IpXG5sZXQgb2tfZXhuIHQgPSBEZWZlcnJlZC5tYXAgdCB+ZjpPcl9lcnJvci5va19leG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLm9mX2V4biA/YmFja3RyYWNlIGV4bilcbmxldCBvZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UgdCA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci5vZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UpXG5sZXQgZXJyb3IgbXNnIHYgc2V4cF9vZiA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3IgbXNnIHYgc2V4cF9vZilcbmxldCBlcnJvcl9zIHNleHAgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3Mgc2V4cClcbmxldCBlcnJvcl9zdHJpbmcgbXNnID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgbXNnKVxubGV0IGVycm9yZiBmb3JtYXQgPSBrc3ByaW50ZiBlcnJvcl9zdHJpbmcgZm9ybWF0XG5sZXQgdGFnIHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWcgfnRhZylcbmxldCB0YWdfcyB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnX3MgfnRhZylcbmxldCB0YWdfc19sYXp5IHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWdfc19sYXp5IH50YWcpXG5cbmxldCB0YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIERlZmVycmVkLm1hcCB0IH5mOihmdW4gdCAtPiBPcl9lcnJvci50YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCB1bmltcGxlbWVudGVkIG1zZyA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IudW5pbXBsZW1lbnRlZCBtc2cpXG5sZXQgY29tYmluZV9lcnJvcnMgbCA9IERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzXG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsID0gRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuXG5sZXQgZmlsdGVyX29rX2F0X2xlYXN0X29uZSBsID1cbiAgRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuZmlsdGVyX29rX2F0X2xlYXN0X29uZVxuOztcblxubGV0IGZpbmRfbWFwX29rIGwgfmYgPVxuICBEZWZlcnJlZC5yZXBlYXRfdW50aWxfZmluaXNoZWQgKGwsIFtdKSAoZnVuIChsLCBlcnJvcnMpIC0+XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgbGV0IGVycm9ycyA9IEVycm9yLm9mX2xpc3QgKExpc3QucmV2IGVycm9ycykgaW5cbiAgICAgIERlZmVycmVkLnJldHVybiAoYEZpbmlzaGVkIChFcnJvciBlcnJvcnMpKVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIERlZmVycmVkLm1hcCAoZiBoZCkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgRXJyb3IgY3VycmVudF9lcnJvciAtPiBgUmVwZWF0ICh0bCwgY3VycmVudF9lcnJvciA6OiBlcnJvcnMpXG4gICAgICAgIHwgT2sgcmVzdWx0IC0+IGBGaW5pc2hlZCAoT2sgcmVzdWx0KSkpXG47O1xuXG5sZXQgb2tfdW5pdCA9IHJldHVybiAoKVxuXG5sZXQgdHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZiA9XG4gIERlZmVycmVkLm1hcCAoTW9uaXRvci50cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmKSB+ZjooZnVuY3Rpb25cbiAgICB8IEVycm9yIGV4biAtPiBFcnJvciAoRXJyb3Iub2ZfZXhuIGV4bilcbiAgICB8IE9rIF8gYXMgb2sgLT4gb2spXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmID1cbiAgRGVmZXJyZWQubWFwICh0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmKSB+ZjpPcl9lcnJvci5qb2luXG47O1xuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBsZXQgZm9sZGkgbGlzdCB+aW5pdDphY2MgfmYgPVxuICAgIGxldCByZWMgbG9vcCBpIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiBhY2NcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgbGV0JWJpbmQgYWNjID0gZiBpIGFjYyBoZCBpblxuICAgICAgICBsb29wIChpICsgMSkgYWNjIHRsXG4gICAgaW5cbiAgICBsb29wIDAgYWNjIGxpc3RcbiAgOztcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG4gIGxldCBzZXFtYXBpIHQgfmYgPVxuICAgIGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgICBiIDo6IGJzKVxuICAgID4+fCBMaXN0LnJldlxuICA7O1xuXG4gIGxldCBhbGwgPSBhbGxcbiAgbGV0IGFsbF91bml0ID0gYWxsX3VuaXRcblxuICBsZXQgaXRlcmkgfmhvdyB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsX3VuaXQgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG4gIDs7XG5cbiAgbGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsIChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuZmlsdGVyX29wdFxuICBsZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbiAgbGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSB4IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZF9tYXBpIHQgfmYgPVxuICAgIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoJWJpbmQgZiBpIGhkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgICBpblxuICAgIGZpbmRfbWFwaSB0IH5mIDBcbiAgOztcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcblxuICBsZXQgZmluZGkgdCB+ZiA9XG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPVxuICAgIGZpbmRfbWFwIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IHRydWVcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IGZhbHNlXG4gICAgfCBOb25lIC0+IHRydWVcbiAgOztcblxuICBsZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChMaXN0LmluaXQgbiB+ZjpGbi5pZCkgfmZcbmVuZFxuXG5sZXQgcmVjIHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgbWF0Y2glYmluZCBmIHN0YXRlIHdpdGhcbiAgfCBgUmVwZWF0IHN0YXRlIC0+IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmXG4gIHwgYEZpbmlzaGVkIHN0YXRlIC0+IHJldHVybiBzdGF0ZVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFMgPSBFYWdlcl9kZWZlcnJlZF9pbnRmLlNcblxuaW5jbHVkZSBFYWdlcl9kZWZlcnJlZDFcblxubW9kdWxlIFVzZSA9IHN0cnVjdFxuICBtb2R1bGUgRGVmZXJyZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBEZWZlcnJlZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEVhZ2VyX2RlZmVycmVkMVxuICBlbmRcblxuICBpbmNsdWRlIChFYWdlcl9kZWZlcnJlZDEgOiBNb25hZC5JbmZpeCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBEZWZlcnJlZC50KVxuICBpbmNsdWRlIEVhZ2VyX2RlZmVycmVkMS5MZXRfc3ludGF4XG5cbiAgbGV0IHVwb24gPSBFYWdlcl9kZWZlcnJlZDEudXBvblxuICBsZXQgKCA+Pj4gKSA9IEVhZ2VyX2RlZmVycmVkMS5JbmZpeC4oID4+PiApXG5cbiAgbGV0ICggPj49PyApIHggZiA9XG4gICAgeFxuICAgID4+PSBmdW5jdGlvblxuICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiByZXR1cm4gZXJyb3JcbiAgICB8IE9rIHYgLT4gZiB2XG4gIDs7XG5cbiAgbGV0ICggPj58PyApIHggZiA9XG4gICAgeFxuICAgID4+fCBmdW5jdGlvblxuICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiBlcnJvclxuICAgIHwgT2sgdiAtPiBPayAoZiB2KVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ2xvc2VkXG4gICAgfCBXcml0ZV9pbl9wcm9ncmVzc1xuICAgIHwgT2tfdG9fd3JpdGVcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaXNfY2xvc2VkID0gZnVuY3Rpb25cbiAgICB8IENsb3NlZCAtPiB0cnVlXG4gICAgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBmYWxzZVxuICAgIHwgT2tfdG9fd3JpdGUgLT4gZmFsc2VcbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2FsbGJhY2tfYXJpdHkgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgPVxuICAgIHwgQXJpdHkxIDogKCdhIC0+IHVuaXQpIHRcbiAgICB8IEFyaXR5MV9sb2NhbCA6ICgoJ2FbQGxvY2FsXSkgLT4gdW5pdCkgdFxuICAgIHwgQXJpdHkyIDogKCdhIC0+ICdiIC0+IHVuaXQpIHRcbiAgICB8IEFyaXR5MyA6ICgnYSAtPiAnYiAtPiAnYyAtPiB1bml0KSB0XG4gICAgfCBBcml0eTQgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gdW5pdCkgdFxuICAgIHwgQXJpdHk1IDogKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+IHVuaXQpIHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdXNlc19sb2NhbF9hcmdzIDogdHlwZSBhLiBhIHQgLT4gYm9vbCA9IGZ1bmN0aW9uXG4gICAgfCBBcml0eTEgLT4gZmFsc2VcbiAgICB8IEFyaXR5MV9sb2NhbCAtPiB0cnVlXG4gICAgfCBBcml0eTIgLT4gZmFsc2VcbiAgICB8IEFyaXR5MyAtPiBmYWxzZVxuICAgIHwgQXJpdHk0IC0+IGZhbHNlXG4gICAgfCBBcml0eTUgLT4gZmFsc2VcbiAgOztcbmVuZFxuXG5tb2R1bGUgTGFzdF92YWx1ZSA6IHNpZ1xuICB0eXBlICdjYWxsYmFjayB0XG5cbiAgdmFsIGNyZWF0ZV9leG4gOiAnY2FsbGJhY2sgQ2FsbGJhY2tfYXJpdHkudCAtPiAnY2FsbGJhY2sgdFxuICB2YWwgc2V0MSA6ICgnYSAtPiB1bml0KSB0IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHNldDIgOiAoJ2EgLT4gJ2IgLT4gdW5pdCkgdCAtPiAnYSAtPiAnYiAtPiB1bml0XG4gIHZhbCBzZXQzIDogKCdhIC0+ICdiIC0+ICdjIC0+IHVuaXQpIHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdFxuICB2YWwgc2V0NCA6ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiB1bml0KSB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IHVuaXRcbiAgdmFsIHNldDUgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gdW5pdCkgdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiB1bml0XG4gIHZhbCBzZW5kIDogJ2NhbGxiYWNrIHQgLT4gJ2NhbGxiYWNrIC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIF8gdHVwbGUgPVxuICAgIHwgVHVwbGUxIDogeyBtdXRhYmxlIGFyZzEgOiAnYSB9IC0+ICgnYSAtPiB1bml0KSB0dXBsZVxuICAgIHwgVHVwbGUyIDpcbiAgICAgICAgeyBtdXRhYmxlIGFyZzEgOiAnYVxuICAgICAgICA7IG11dGFibGUgYXJnMiA6ICdiXG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhIC0+ICdiIC0+IHVuaXQpIHR1cGxlXG4gICAgfCBUdXBsZTMgOlxuICAgICAgICB7IG11dGFibGUgYXJnMSA6ICdhXG4gICAgICAgIDsgbXV0YWJsZSBhcmcyIDogJ2JcbiAgICAgICAgOyBtdXRhYmxlIGFyZzMgOiAnY1xuICAgICAgICB9XG4gICAgICAgIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiB1bml0KSB0dXBsZVxuICAgIHwgVHVwbGU0IDpcbiAgICAgICAgeyBtdXRhYmxlIGFyZzEgOiAnYVxuICAgICAgICA7IG11dGFibGUgYXJnMiA6ICdiXG4gICAgICAgIDsgbXV0YWJsZSBhcmczIDogJ2NcbiAgICAgICAgOyBtdXRhYmxlIGFyZzQgOiAnZFxuICAgICAgICB9XG4gICAgICAgIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiB1bml0KSB0dXBsZVxuICAgIHwgVHVwbGU1IDpcbiAgICAgICAgeyBtdXRhYmxlIGFyZzEgOiAnYVxuICAgICAgICA7IG11dGFibGUgYXJnMiA6ICdiXG4gICAgICAgIDsgbXV0YWJsZSBhcmczIDogJ2NcbiAgICAgICAgOyBtdXRhYmxlIGFyZzQgOiAnZFxuICAgICAgICA7IG11dGFibGUgYXJnNSA6ICdlXG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+IHVuaXQpIHR1cGxlXG5cbiAgdHlwZSAnY2FsbGJhY2sgdCA9ICdjYWxsYmFjayB0dXBsZSBvcHRpb24gcmVmXG5cbiAgbGV0IGNyZWF0ZV9leG4gKHR5cGUgY2FsbGJhY2spIChhcml0eSA6IGNhbGxiYWNrIENhbGxiYWNrX2FyaXR5LnQpIDogY2FsbGJhY2sgdCA9XG4gICAgaWYgQ2FsbGJhY2tfYXJpdHkudXNlc19sb2NhbF9hcmdzIGFyaXR5XG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkNhbm5vdCBzYXZlIGxhc3QgdmFsdWUgd2hlbiB1c2luZyBsb2NhbCBhcmdzXCIgKGFyaXR5IDogXyBDYWxsYmFja19hcml0eS50KV07XG4gICAgcmVmIE5vbmVcbiAgOztcblxuICBsZXQgc2V0MSB0IGEgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gdCA6PSBTb21lIChUdXBsZTEgeyBhcmcxID0gYSB9KVxuICAgIHwgU29tZSAoVHVwbGUxIGFyZ3MpIC0+IGFyZ3MuYXJnMSA8LSBhXG4gIDs7XG5cbiAgbGV0IHNldDIgdCBhIGIgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gdCA6PSBTb21lIChUdXBsZTIgeyBhcmcxID0gYTsgYXJnMiA9IGIgfSlcbiAgICB8IFNvbWUgKFR1cGxlMiBhcmdzKSAtPlxuICAgICAgYXJncy5hcmcxIDwtIGE7XG4gICAgICBhcmdzLmFyZzIgPC0gYlxuICA7O1xuXG4gIGxldCBzZXQzIHQgYSBiIGMgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gdCA6PSBTb21lIChUdXBsZTMgeyBhcmcxID0gYTsgYXJnMiA9IGI7IGFyZzMgPSBjIH0pXG4gICAgfCBTb21lIChUdXBsZTMgYXJncykgLT5cbiAgICAgIGFyZ3MuYXJnMSA8LSBhO1xuICAgICAgYXJncy5hcmcyIDwtIGI7XG4gICAgICBhcmdzLmFyZzMgPC0gY1xuICA7O1xuXG4gIGxldCBzZXQ0IHQgYSBiIGMgZCA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlNCB7IGFyZzEgPSBhOyBhcmcyID0gYjsgYXJnMyA9IGM7IGFyZzQgPSBkIH0pXG4gICAgfCBTb21lIChUdXBsZTQgYXJncykgLT5cbiAgICAgIGFyZ3MuYXJnMSA8LSBhO1xuICAgICAgYXJncy5hcmcyIDwtIGI7XG4gICAgICBhcmdzLmFyZzMgPC0gYztcbiAgICAgIGFyZ3MuYXJnNCA8LSBkXG4gIDs7XG5cbiAgbGV0IHNldDUgdCBhcmcxIGFyZzIgYXJnMyBhcmc0IGFyZzUgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gdCA6PSBTb21lIChUdXBsZTUgeyBhcmcxOyBhcmcyOyBhcmczOyBhcmc0OyBhcmc1IH0pXG4gICAgfCBTb21lIChUdXBsZTUgYXJncykgLT5cbiAgICAgIGFyZ3MuYXJnMSA8LSBhcmcxO1xuICAgICAgYXJncy5hcmcyIDwtIGFyZzI7XG4gICAgICBhcmdzLmFyZzMgPC0gYXJnMztcbiAgICAgIGFyZ3MuYXJnNCA8LSBhcmc0O1xuICAgICAgYXJncy5hcmc1IDwtIGFyZzVcbiAgOztcblxuICBsZXQgc2VuZCAodHlwZSBjYWxsYmFjaykgKHQgOiBjYWxsYmFjayB0KSAoY2FsbGJhY2sgOiBjYWxsYmFjaykgOiB1bml0ID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIChUdXBsZTEgeyBhcmcxIH0pIC0+IGNhbGxiYWNrIGFyZzFcbiAgICB8IFNvbWUgKFR1cGxlMiB7IGFyZzE7IGFyZzIgfSkgLT4gY2FsbGJhY2sgYXJnMSBhcmcyXG4gICAgfCBTb21lIChUdXBsZTMgeyBhcmcxOyBhcmcyOyBhcmczIH0pIC0+IGNhbGxiYWNrIGFyZzEgYXJnMiBhcmczXG4gICAgfCBTb21lIChUdXBsZTQgeyBhcmcxOyBhcmcyOyBhcmczOyBhcmc0IH0pIC0+IGNhbGxiYWNrIGFyZzEgYXJnMiBhcmczIGFyZzRcbiAgICB8IFNvbWUgKFR1cGxlNSB7IGFyZzE7IGFyZzI7IGFyZzM7IGFyZzQ7IGFyZzUgfSkgLT4gY2FsbGJhY2sgYXJnMSBhcmcyIGFyZzMgYXJnNCBhcmc1XG4gIDs7XG5lbmRcblxubW9kdWxlIE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQWxsb3dcbiAgICB8IEFsbG93X2FuZF9zZW5kX2xhc3RfdmFsdWVcbiAgICB8IFJhaXNlXG4gIFtAQGRlcml2aW5nIGVudW1lcmF0ZSwgc2V4cF9vZl1cblxuICBsZXQgYWxsb3dfc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlID0gZnVuY3Rpb25cbiAgICB8IEFsbG93IC0+IHRydWVcbiAgICB8IEFsbG93X2FuZF9zZW5kX2xhc3RfdmFsdWUgLT4gdHJ1ZVxuICAgIHwgUmFpc2UgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgc2F2ZV9sYXN0X3ZhbHVlX2V4biB0IGNhbGxiYWNrX2FyaXR5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEFsbG93X2FuZF9zZW5kX2xhc3RfdmFsdWUgLT4gU29tZSAoTGFzdF92YWx1ZS5jcmVhdGVfZXhuIGNhbGxiYWNrX2FyaXR5KVxuICAgIHwgQWxsb3cgLT4gTm9uZVxuICAgIHwgUmFpc2UgLT4gTm9uZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBCdXNfaWQgPSBVbmlxdWVfaWQuSW50NjMgKClcblxubW9kdWxlIFN1YnNjcmliZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnY2FsbGJhY2sgdCA9XG4gICAgeyBidXNfaWQgOiBCdXNfaWQudFxuICAgIDsgY2FsbGJhY2sgOiAnY2FsbGJhY2tcbiAgICA7IGV4dHJhY3RfZXhuIDogYm9vbFxuICAgIDsgKCogW3N1YnNjcmliZXJzX2luZGV4XSBpcyB0aGUgaW5kZXggb2YgdGhpcyBzdWJzY3JpYmVyIGluIHRoZSBidXMncyBbc3Vic2NyaWJlcnNdXG4gICAgICAgICBhcnJheS4gIFstMV0gaW5kaWNhdGVzIHRoYXQgdGhpcyBzdWJzY3JpYmVyIGlzIG5vdCBzdWJzY3JpYmVkLiAqKVxuICAgICAgbXV0YWJsZSBzdWJzY3JpYmVyc19pbmRleCA6IGludFxuICAgIDsgb25fY2FsbGJhY2tfcmFpc2UgOiAoRXJyb3IudCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG9uX2Nsb3NlIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBzdWJzY3JpYmVkX2Zyb20gOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgbGV0IGlzX3N1YnNjcmliZWQgdCB+dG9fID0gdC5zdWJzY3JpYmVyc19pbmRleCA+PSAwICYmIEJ1c19pZC5lcXVhbCB0LmJ1c19pZCB0b19cblxuICBsZXQgc2V4cF9vZl90XG4gICAgICAgIF9cbiAgICAgICAgeyBjYWxsYmFjayA9IF9cbiAgICAgICAgOyBidXNfaWQgPSBfXG4gICAgICAgIDsgZXh0cmFjdF9leG5cbiAgICAgICAgOyBzdWJzY3JpYmVyc19pbmRleFxuICAgICAgICA7IG9uX2NhbGxiYWNrX3JhaXNlXG4gICAgICAgIDsgb25fY2xvc2UgPSBfXG4gICAgICAgIDsgc3Vic2NyaWJlZF9mcm9tXG4gICAgICAgIH1cbiAgICA6IFNleHAudFxuICAgID1cbiAgICBMaXN0XG4gICAgICBbIEF0b20gXCJCdXMuU3Vic2NyaWJlci50XCJcbiAgICAgIDsgWyVtZXNzYWdlXG4gICAgICAgIFwiXCJcbiAgICAgICAgICB+c3Vic2NyaWJlcnNfaW5kZXg6XG4gICAgICAgICAgICAoaWYgUHB4X2lubGluZV90ZXN0X2xpYi5hbV9ydW5uaW5nIHRoZW4gTm9uZSBlbHNlIFNvbWUgc3Vic2NyaWJlcnNfaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoaW50IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICAob25fY2FsbGJhY2tfcmFpc2UgOiAoKEVycm9yLnQgLT4gdW5pdCkgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIH5leHRyYWN0X2V4bjpcbiAgICAgICAgICAgIChpZiBleHRyYWN0X2V4biB0aGVuIFNvbWUgdHJ1ZSBlbHNlIE5vbmUgOiAoYm9vbCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgKHN1YnNjcmliZWRfZnJvbSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuICAgICAgXVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmJ1c19pZDppZ25vcmVcbiAgICAgICAgfmNhbGxiYWNrOihjaGVjayBpbnZhcmlhbnRfYSlcbiAgICAgICAgfmV4dHJhY3RfZXhuOmlnbm9yZVxuICAgICAgICB+c3Vic2NyaWJlcnNfaW5kZXg6aWdub3JlXG4gICAgICAgIH5vbl9jYWxsYmFja19yYWlzZTppZ25vcmVcbiAgICAgICAgfm9uX2Nsb3NlOmlnbm9yZVxuICAgICAgICB+c3Vic2NyaWJlZF9mcm9tOmlnbm9yZSlcbiAgOztcblxuICBsZXQgY3JlYXRlXG4gICAgICAgIHN1YnNjcmliZWRfZnJvbVxuICAgICAgICB+Y2FsbGJhY2tcbiAgICAgICAgfmJ1c19pZFxuICAgICAgICB+ZXh0cmFjdF9leG5cbiAgICAgICAgfnN1YnNjcmliZXJzX2luZGV4XG4gICAgICAgIH5vbl9jYWxsYmFja19yYWlzZVxuICAgICAgICB+b25fY2xvc2VcbiAgICA9XG4gICAgeyBidXNfaWRcbiAgICA7IGNhbGxiYWNrXG4gICAgOyBleHRyYWN0X2V4blxuICAgIDsgc3Vic2NyaWJlcnNfaW5kZXhcbiAgICA7IG9uX2NhbGxiYWNrX3JhaXNlXG4gICAgOyBvbl9jbG9zZVxuICAgIDsgc3Vic2NyaWJlZF9mcm9tXG4gICAgfVxuICA7O1xuZW5kXG5cbnR5cGUgKCdjYWxsYmFjaywgJ3BoYW50b20pIHQgPVxuICB7IGJ1c19pZCA6IEJ1c19pZC50XG4gIDsgbmFtZSA6IEluZm8udCBvcHRpb25cbiAgOyBjYWxsYmFja19hcml0eSA6ICdjYWxsYmFjayBDYWxsYmFja19hcml0eS50XG4gIDsgY3JlYXRlZF9mcm9tIDogU291cmNlX2NvZGVfcG9zaXRpb24udFxuICA7IG9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSA6IE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS50XG4gIDsgb25fY2FsbGJhY2tfcmFpc2UgOiBFcnJvci50IC0+IHVuaXRcbiAgOyBsYXN0X3ZhbHVlIDogJ2NhbGxiYWNrIExhc3RfdmFsdWUudCBvcHRpb25cbiAgOyBtdXRhYmxlIHN0YXRlIDogU3RhdGUudFxuICA7IG11dGFibGUgd3JpdGVfZXZlcl9jYWxsZWQgOiBib29sXG4gIDsgbXV0YWJsZSBudW1fc3Vic2NyaWJlcnMgOiBpbnRcbiAgOyAoKiBbc3Vic2NyaWJlcnNdIGNvbnRhaW5zIGFsbCBzdWJzY3JpYmVycyB0byB0aGUgYnVzLCBpbiBhIGNvbnRpZ3VvdXMgcHJlZml4IGZyb21cbiAgICAgICBpbmRleCBbMF0gdG8gW251bV9zdWJzY3JpYmVycyAtIDFdLiAqKVxuICAgIG11dGFibGUgc3Vic2NyaWJlcnMgOiAnY2FsbGJhY2sgU3Vic2NyaWJlci50IE9wdGlvbl9hcnJheS50XG4gIDsgKCogW2NhbGxiYWNrc10gaG9sZHMgdGhlIGNhbGxiYWNrcyBvZiB0aGUgY29ycmVzcG9uZGluZyBlbnRyaWVzIG9mIFtzdWJzY3JpYmVyc10uICopXG4gICAgbXV0YWJsZSBjYWxsYmFja3MgOiAnY2FsbGJhY2sgT3B0aW9uX2FycmF5LnRcbiAgOyBtdXRhYmxlIHVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgOiAnY2FsbGJhY2sgU3Vic2NyaWJlci50IGxpc3RcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG5sZXQgc2V4cF9vZl90XG4gICAgICBfXG4gICAgICBfXG4gICAgICB7IGJ1c19pZCA9IF9cbiAgICAgIDsgY2FsbGJhY2tfYXJpdHlcbiAgICAgIDsgY2FsbGJhY2tzID0gX1xuICAgICAgOyBjcmVhdGVkX2Zyb21cbiAgICAgIDsgbGFzdF92YWx1ZSA9IF9cbiAgICAgIDsgbmFtZVxuICAgICAgOyBudW1fc3Vic2NyaWJlcnNcbiAgICAgIDsgb25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlXG4gICAgICA7IG9uX2NhbGxiYWNrX3JhaXNlID0gX1xuICAgICAgOyBzdGF0ZVxuICAgICAgOyBzdWJzY3JpYmVyc1xuICAgICAgOyB3cml0ZV9ldmVyX2NhbGxlZFxuICAgICAgOyB1bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlID0gX1xuICAgICAgfVxuICA9XG4gIGxldCBzdWJzY3JpYmVycyA9XG4gICAgQXJyYXkuaW5pdCBudW1fc3Vic2NyaWJlcnMgfmY6KGZ1biBpIC0+IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gc3Vic2NyaWJlcnMgaSlcbiAgaW5cbiAgWyVtZXNzYWdlXG4gICAgXCJcIlxuICAgICAgKG5hbWUgOiAoSW5mby50IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgIChjYWxsYmFja19hcml0eSA6IF8gQ2FsbGJhY2tfYXJpdHkudClcbiAgICAgIChjcmVhdGVkX2Zyb20gOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KVxuICAgICAgKG9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSA6IE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS50KVxuICAgICAgKHN0YXRlIDogU3RhdGUudClcbiAgICAgICh3cml0ZV9ldmVyX2NhbGxlZCA6IGJvb2wpXG4gICAgICAoc3Vic2NyaWJlcnMgOiBfIFN1YnNjcmliZXIudCBBcnJheS50KV1cbjs7XG5cbnR5cGUgKCdjYWxsYmFjaywgJ3BoYW50b20pIGJ1cyA9ICgnY2FsbGJhY2ssICdwaGFudG9tKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCByZWFkX29ubHkgdCA9ICh0IDo+IChfLCByZWFkKSB0KVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmJ1c19pZDppZ25vcmVcbiAgICAgIH5uYW1lOmlnbm9yZVxuICAgICAgfmNhbGxiYWNrczpcbiAgICAgICAgKGNoZWNrIChmdW4gY2FsbGJhY2tzIC0+XG4gICAgICAgICAgIGFzc2VydCAoT3B0aW9uX2FycmF5Lmxlbmd0aCBjYWxsYmFja3MgPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuc3Vic2NyaWJlcnMpO1xuICAgICAgICAgICBmb3IgaSA9IDAgdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBjYWxsYmFja3MgLSAxIGRvXG4gICAgICAgICAgICAgaWYgaSA8IHQubnVtX3N1YnNjcmliZXJzXG4gICAgICAgICAgICAgdGhlbiBpbnZhcmlhbnRfYSAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBjYWxsYmFja3MgaSlcbiAgICAgICAgICAgICBlbHNlIGFzc2VydCAoT3B0aW9uX2FycmF5LmlzX25vbmUgY2FsbGJhY2tzIGkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfmNhbGxiYWNrX2FyaXR5Omlnbm9yZVxuICAgICAgfmNyZWF0ZWRfZnJvbTppZ25vcmVcbiAgICAgIH5udW1fc3Vic2NyaWJlcnM6KGNoZWNrIChmdW4gbnVtX3N1YnNjcmliZXJzIC0+IGFzc2VydCAobnVtX3N1YnNjcmliZXJzID49IDApKSlcbiAgICAgIH5vbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGU6aWdub3JlXG4gICAgICB+b25fY2FsbGJhY2tfcmFpc2U6aWdub3JlXG4gICAgICB+bGFzdF92YWx1ZTppZ25vcmVcbiAgICAgIH5zdGF0ZTppZ25vcmVcbiAgICAgIH53cml0ZV9ldmVyX2NhbGxlZDppZ25vcmVcbiAgICAgIH5zdWJzY3JpYmVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gc3Vic2NyaWJlcnMgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIE9wdGlvbl9hcnJheS5sZW5ndGggc3Vic2NyaWJlcnMgLSAxIGRvXG4gICAgICAgICAgICAgaWYgaSA8IHQubnVtX3N1YnNjcmliZXJzXG4gICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlciA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gc3Vic2NyaWJlcnMgaSBpblxuICAgICAgICAgICAgICAgU3Vic2NyaWJlci5pbnZhcmlhbnQgaW52YXJpYW50X2Egc3Vic2NyaWJlcjtcbiAgICAgICAgICAgICAgIGFzc2VydCAoaSA9IHN1YnNjcmliZXIuc3Vic2NyaWJlcnNfaW5kZXgpKVxuICAgICAgICAgICAgIGVsc2UgYXNzZXJ0IChPcHRpb25fYXJyYXkuaXNfbm9uZSBzdWJzY3JpYmVycyBpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH51bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlOmlnbm9yZSlcbjs7XG5cbmxldCBpc19jbG9zZWQgdCA9IFN0YXRlLmlzX2Nsb3NlZCB0LnN0YXRlXG5cbm1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gIHR5cGUgJ2NhbGxiYWNrIHQgPSAoJ2NhbGxiYWNrLCByZWFkX3dyaXRlKSBidXMgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgaWdub3JlIHRcbmVuZFxuXG5tb2R1bGUgUmVhZF9vbmx5ID0gc3RydWN0XG4gIHR5cGUgJ2NhbGxiYWNrIHQgPSAoJ2NhbGxiYWNrLCByZWFkKSBidXMgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgaWdub3JlIHRcbmVuZFxuXG5sZXRbQGNvbGRdIHN0YXJ0X3dyaXRlX2ZhaWxpbmcgdCA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENsb3NlZCAtPlxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiW0J1cy53cml0ZV0gY2FsbGVkIG9uIGNsb3NlZCBidXNcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdXG4gIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiW0J1cy53cml0ZV0gY2FsbGVkIGZyb20gY2FsbGJhY2sgb24gdGhlIHNhbWUgYnVzXCJcbiAgICAgIHRcbiAgICAgIFslc2V4cF9vZjogKF8sIF8pIHRdXG4gIHwgT2tfdG9fd3JpdGUgLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG5sZXQgY2FwYWNpdHkgdCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5zdWJzY3JpYmVyc1xuXG5sZXQgbWF5YmVfc2hyaW5rX2NhcGFjaXR5IHQgPVxuICBpZiB0Lm51bV9zdWJzY3JpYmVycyAqIDQgPD0gY2FwYWNpdHkgdFxuICB0aGVuIChcbiAgICBsZXQgZGVzaXJlZF9jYXBhY2l0eSA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gICAgbGV0IGNvcHlfYW5kX3NocmluayBhcnJheSA9XG4gICAgICBsZXQgbmV3X2FycmF5ID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOmRlc2lyZWRfY2FwYWNpdHkgaW5cbiAgICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICAgIH5zcmM6YXJyYXlcbiAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICB+ZHN0Om5ld19hcnJheVxuICAgICAgICB+ZHN0X3BvczowXG4gICAgICAgIH5sZW46dC5udW1fc3Vic2NyaWJlcnM7XG4gICAgICBuZXdfYXJyYXlcbiAgICBpblxuICAgIHQuc3Vic2NyaWJlcnMgPC0gY29weV9hbmRfc2hyaW5rIHQuc3Vic2NyaWJlcnM7XG4gICAgdC5jYWxsYmFja3MgPC0gY29weV9hbmRfc2hyaW5rIHQuY2FsbGJhY2tzKVxuOztcblxubGV0IGFkZF9zdWJzY3JpYmVyIHQgKHN1YnNjcmliZXIgOiBfIFN1YnNjcmliZXIudCkgfmF0X3N1YnNjcmliZXJzX2luZGV4ID1cbiAgc3Vic2NyaWJlci5zdWJzY3JpYmVyc19pbmRleCA8LSBhdF9zdWJzY3JpYmVyc19pbmRleDtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuc3Vic2NyaWJlcnMgYXRfc3Vic2NyaWJlcnNfaW5kZXggc3Vic2NyaWJlcjtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuY2FsbGJhY2tzIGF0X3N1YnNjcmliZXJzX2luZGV4IHN1YnNjcmliZXIuY2FsbGJhY2tcbjs7XG5cbmxldCByZW1vdmVfc3Vic2NyaWJlciB0IChzdWJzY3JpYmVyIDogXyBTdWJzY3JpYmVyLnQpID1cbiAgbGV0IHN1YnNjcmliZXJzX2luZGV4ID0gc3Vic2NyaWJlci5zdWJzY3JpYmVyc19pbmRleCBpblxuICBzdWJzY3JpYmVyLnN1YnNjcmliZXJzX2luZGV4IDwtIC0xO1xuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5zdWJzY3JpYmVycyBzdWJzY3JpYmVyc19pbmRleDtcbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuY2FsbGJhY2tzIHN1YnNjcmliZXJzX2luZGV4XG47O1xuXG5sZXQgdW5zdWJzY3JpYmVfYXNzdW1pbmdfdmFsaWRfc3Vic2NyaWJlciB0IChzdWJzY3JpYmVyIDogXyBTdWJzY3JpYmVyLnQpID1cbiAgbGV0IHN1YnNjcmliZXJfaW5kZXggPSBzdWJzY3JpYmVyLnN1YnNjcmliZXJzX2luZGV4IGluXG4gIGxldCBsYXN0X3N1YnNjcmliZXJfaW5kZXggPSB0Lm51bV9zdWJzY3JpYmVycyAtIDEgaW5cbiAgcmVtb3ZlX3N1YnNjcmliZXIgdCBzdWJzY3JpYmVyO1xuICBpZiBzdWJzY3JpYmVyX2luZGV4IDwgbGFzdF9zdWJzY3JpYmVyX2luZGV4XG4gIHRoZW4gKFxuICAgIGxldCBsYXN0X3N1YnNjcmliZXIgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuc3Vic2NyaWJlcnMgbGFzdF9zdWJzY3JpYmVyX2luZGV4IGluXG4gICAgcmVtb3ZlX3N1YnNjcmliZXIgdCBsYXN0X3N1YnNjcmliZXI7XG4gICAgYWRkX3N1YnNjcmliZXIgdCBsYXN0X3N1YnNjcmliZXIgfmF0X3N1YnNjcmliZXJzX2luZGV4OnN1YnNjcmliZXJfaW5kZXgpO1xuICB0Lm51bV9zdWJzY3JpYmVycyA8LSB0Lm51bV9zdWJzY3JpYmVycyAtIDE7XG4gIG1heWJlX3Nocmlua19jYXBhY2l0eSB0XG47O1xuXG5sZXQgdW5zdWJzY3JpYmUgdCBzdWJzY3JpYmVyID1cbiAgaWYgU3Vic2NyaWJlci5pc19zdWJzY3JpYmVkIHN1YnNjcmliZXIgfnRvXzp0LmJ1c19pZFxuICB0aGVuIChcbiAgICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICB8IFdyaXRlX2luX3Byb2dyZXNzIC0+XG4gICAgICB0LnVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgPC0gc3Vic2NyaWJlciA6OiB0LnVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGVcbiAgICB8IENsb3NlZCAtPlxuICAgICAgKCogVGhpcyBjYW4gaGFwcGVuIGlmIGR1cmluZyBbd3JpdGVdLCBbdW5zdWJzY3JpYmVdIGlzIGNhbGxlZCBhZnRlciBbY2xvc2VdLiAgV2VcbiAgICAgICAgIGRvbid0IGRvIGFueXRoaW5nIGhlcmUgYmVjYXVzZSBhbGwgc3Vic2NyaWJlcnMgd2lsbCBiZSB1bnN1YnNjcmliZWQgYWZ0ZXIgdGhlXG4gICAgICAgICBbd3JpdGVdIGZpbmlzaGVzLiAqKVxuICAgICAgKClcbiAgICB8IE9rX3RvX3dyaXRlIC0+IHVuc3Vic2NyaWJlX2Fzc3VtaW5nX3ZhbGlkX3N1YnNjcmliZXIgdCBzdWJzY3JpYmVyKVxuOztcblxubGV0W0Bjb2xkXSB1bnN1YnNjcmliZV9hZnRlcl9maW5pc2hfd3JpdGUgdCA9XG4gIExpc3QuaXRlciB0LnVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgfmY6KHVuc3Vic2NyaWJlX2Fzc3VtaW5nX3ZhbGlkX3N1YnNjcmliZXIgdCk7XG4gIHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSA8LSBbXVxuOztcblxubGV0W0Bjb2xkXSB1bnN1YnNjcmliZV9hbGwgdCA9XG4gIGFzc2VydCAoaXNfY2xvc2VkIHQpO1xuICBmb3IgaSA9IDAgdG8gdC5udW1fc3Vic2NyaWJlcnMgLSAxIGRvXG4gICAgbGV0IHN1YnNjcmliZXIgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuc3Vic2NyaWJlcnMgaSBpblxuICAgIE9wdGlvbi5pdGVyIHN1YnNjcmliZXIub25fY2xvc2UgfmY6KGZ1biBvbl9jbG9zZSAtPiBvbl9jbG9zZSAoKSk7XG4gICAgcmVtb3ZlX3N1YnNjcmliZXIgdCBzdWJzY3JpYmVyXG4gIGRvbmU7XG4gIHQubnVtX3N1YnNjcmliZXJzIDwtIDA7XG4gIG1heWJlX3Nocmlua19jYXBhY2l0eSB0XG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGZpbmlzaF93cml0ZSB0ID1cbiAgaWYgbm90IChMaXN0LmlzX2VtcHR5IHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSkgdGhlbiB1bnN1YnNjcmliZV9hZnRlcl9maW5pc2hfd3JpdGUgdDtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIC0+IHVuc3Vic2NyaWJlX2FsbCB0XG4gIHwgT2tfdG9fd3JpdGUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gdC5zdGF0ZSA8LSBPa190b193cml0ZVxuOztcblxubGV0W0Bjb2xkXSBjbG9zZSB0ID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIC0+ICgpXG4gIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gdC5zdGF0ZSA8LSBDbG9zZWRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIHQuc3RhdGUgPC0gQ2xvc2VkO1xuICAgIHVuc3Vic2NyaWJlX2FsbCB0XG47O1xuXG5sZXQgY2FsbF9vbl9jYWxsYmFja19yYWlzZSB0IGVycm9yID1cbiAgdHJ5IHQub25fY2FsbGJhY2tfcmFpc2UgZXJyb3Igd2l0aFxuICB8IGV4biAtPlxuICAgIGNsb3NlIHQ7XG4gICAgcmFpc2UgZXhuXG47O1xuXG5sZXQgY2FsbGJhY2tfcmFpc2VkIHQgaSBleG4gPVxuICAoKiBbaV0gd2FzIGluY3JlbWVudGVkIGJlZm9yZSB0aGUgY2FsbGJhY2sgd2FzIGNhbGxlZCwgc28gd2UgaGF2ZSB0byBzdWJ0cmFjdCBvbmVcbiAgICAgaGVyZS4gIFdlIGRvIHRoaXMgaGVyZSwgcmF0aGVyIHRoYW4gYXQgdGhlIGNhbGwgc2l0ZSwgYmVjYXVzZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiAgICAgY2FsbCBzaXRlcyBkdWUgdG8gdGhlIG9wdGltaXphdGlvbnMgbmVlZGVkIHRvIGtlZXAgdGhpcyB6ZXJvLWFsbG9jLiAqKVxuICBsZXQgc3Vic2NyaWJlciA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5zdWJzY3JpYmVycyAoaSAtIDEpIGluXG4gIGxldCBlcnJvciA9XG4gICAgbWF0Y2ggc3Vic2NyaWJlci5leHRyYWN0X2V4biB3aXRoXG4gICAgfCB0cnVlIC0+IEVycm9yLm9mX2V4biBleG5cbiAgICB8IGZhbHNlIC0+XG4gICAgICAoKiBUaGlzIFtCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpXSBpcyBpbnRlbmRlZCB0byBncmFiIHRoZSBiYWNrdHJhY2Ugb2YgdGhlIFt0cnlcbiAgICAgICAgIC4uLiB3aXRoXSdzIHRoYXQgY2FsbCBbY2FsbGJhY2tfcmFpc2VkXS4gIFRoZSBjYWxsIGlzIGhlcmUgcmF0aGVyIHRoYW4gZWFybGllciBzb1xuICAgICAgICAgdGhhdCB3ZSBvbmx5IGRvIGl0IHdoZW4gW3N1YnNjcmliZXIuZXh0cmFjdF9leG4gPSBmYWxzZV0uICopXG4gICAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiQnVzIHN1YnNjcmliZXIgcmFpc2VkXCJcbiAgICAgICAgICAoZXhuIDogZXhuKVxuICAgICAgICAgIChiYWNrdHJhY2UgOiBCYWNrdHJhY2UudClcbiAgICAgICAgICAoc3Vic2NyaWJlciA6IF8gU3Vic2NyaWJlci50KV1cbiAgICAgIHw+IFslb2Zfc2V4cDogRXJyb3IudF1cbiAgaW5cbiAgbWF0Y2ggc3Vic2NyaWJlci5vbl9jYWxsYmFja19yYWlzZSB3aXRoXG4gIHwgTm9uZSAtPiBjYWxsX29uX2NhbGxiYWNrX3JhaXNlIHQgZXJyb3JcbiAgfCBTb21lIGYgLT5cbiAgICAodHJ5IGYgZXJyb3Igd2l0aFxuICAgICB8IGV4biAtPlxuICAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgY2FsbF9vbl9jYWxsYmFja19yYWlzZVxuICAgICAgICAgdFxuICAgICAgICAgKGxldCBvcmlnaW5hbF9lcnJvciA9IGVycm9yIGluXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIkJ1cyBzdWJzY3JpYmVyJ3MgW29uX2NhbGxiYWNrX3JhaXNlXSByYWlzZWRcIlxuICAgICAgICAgICAgICAoZXhuIDogZXhuKVxuICAgICAgICAgICAgICAoYmFja3RyYWNlIDogQmFja3RyYWNlLnQpXG4gICAgICAgICAgICAgIChvcmlnaW5hbF9lcnJvciA6IEVycm9yLnQpXVxuICAgICAgICAgIHw+IFslb2Zfc2V4cDogRXJyb3IudF0pKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGEgaSA9XG4gICgqIFdlIGNvbnNpZGVyZWQgdXNpbmcgW09wdGlvbl9hcnJheS5nZXRfc29tZV9leG5dIGFuZFxuICAgICBbT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG5dIGhlcmUsIGJ1dCBib3RoIGFyZSBzaWduaWZpY2FudGx5IHNsb3dlci4gIENoZWNrXG4gICAgIHRoZSB3cml0ZSBiZW5jaG1hcmtzIGluIFtiZW5jaF9idXMubWxdIGJlZm9yZSBjaGFuZ2luZyB0aGlzLiAqKVxuICBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2Fzc3VtaW5nX3NvbWUgYSBpXG47O1xuXG5sZXQgd3JpdGVfbm9uX29wdGltaXplZCB0IGNhbGxiYWNrcyBhMSA9XG4gIGxldCBsZW4gPSB0Lm51bV9zdWJzY3JpYmVycyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgdHJ5XG4gICAgICBsZXQgY2FsbGJhY2sgPSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAhaSBpblxuICAgICAgaW5jciBpO1xuICAgICAgY2FsbGJhY2sgYTFcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgIWkgZXhuXG4gIGRvbmU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgd3JpdGVfbG9jYWxfbm9uX29wdGltaXplZCB0IGNhbGxiYWNrcyAoYTEgW0Bsb2NhbF0pID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZTJfbm9uX29wdGltaXplZCB0IGNhbGxiYWNrcyBhMSBhMiA9XG4gIGxldCBsZW4gPSB0Lm51bV9zdWJzY3JpYmVycyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgdHJ5XG4gICAgICBsZXQgY2FsbGJhY2sgPSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAhaSBpblxuICAgICAgaW5jciBpO1xuICAgICAgY2FsbGJhY2sgYTEgYTJcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgIWkgZXhuXG4gIGRvbmU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgd3JpdGUzX25vbl9vcHRpbWl6ZWQgdCBjYWxsYmFja3MgYTEgYTIgYTMgPVxuICBsZXQgbGVuID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIHRyeVxuICAgICAgbGV0IGNhbGxiYWNrID0gdW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgIWkgaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGNhbGxiYWNrIGExIGEyIGEzXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0ICFpIGV4blxuICBkb25lO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHdyaXRlNF9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIGExIGEyIGEzIGE0ID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMSBhMiBhMyBhNFxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZTVfbm9uX29wdGltaXplZCB0IGNhbGxiYWNrcyBhMSBhMiBhMyBhNCBhNSA9XG4gIGxldCBsZW4gPSB0Lm51bV9zdWJzY3JpYmVycyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgdHJ5XG4gICAgICBsZXQgY2FsbGJhY2sgPSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAhaSBpblxuICAgICAgaW5jciBpO1xuICAgICAgY2FsbGJhY2sgYTEgYTIgYTMgYTQgYTVcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgIWkgZXhuXG4gIGRvbmU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG4oKiBUaGUgW3dyaXRlX05dIGZ1bmN0aW9ucyBhcmUgd3JpdHRlbiB0byBtaW5pbWlzZSByZWdpc3RlcnMgbGl2ZSBhY3Jvc3MgZnVuY3Rpb24gY2FsbHNcbiAgICh0aGVzZSBoYXZlIHRvIGJlIHNwaWxsZWQpLiAgVGhleSBhcmUgYWxzbyBhbm5vdGF0ZWQgZm9yIHBhcnRpYWwgaW5saW5pbmcgKHRoZVxuICAgb25lLWNhbGxiYWNrIGNhc2UgYmVjb21lcyBpbmxpbmVkIHdoZXJlYXMgdGhlID4xLWNhbGxiYWNrLWNhc2UgcmVxdWlyZXMgYSBmdXJ0aGVyXG4gICBkaXJlY3QgY2FsbCkuICopXG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGUgdCBhMSA9XG4gIGxldCBjYWxsYmFja3MgPSB0LmNhbGxiYWNrcyBpblxuICB0LndyaXRlX2V2ZXJfY2FsbGVkIDwtIHRydWU7XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENsb3NlZCB8IFdyaXRlX2luX3Byb2dyZXNzIC0+IHN0YXJ0X3dyaXRlX2ZhaWxpbmcgdFxuICB8IE9rX3RvX3dyaXRlIC0+XG4gICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPiAwXG4gICAgdGhlbiAoXG4gICAgICB0LnN0YXRlIDwtIFdyaXRlX2luX3Byb2dyZXNzO1xuICAgICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPSAxXG4gICAgICB0aGVuIChcbiAgICAgICAgKHRyeSAodW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgMCkgYTEgd2l0aFxuICAgICAgICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgMSBleG4pO1xuICAgICAgICBmaW5pc2hfd3JpdGUgdClcbiAgICAgIGVsc2UgKHdyaXRlX25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEpO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZXQxIGxhc3RfdmFsdWUgYTEpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHdyaXRlX2xvY2FsIHQgKGExIFtAbG9jYWxdKSA9XG4gIGxldCBjYWxsYmFja3MgPSB0LmNhbGxiYWNrcyBpblxuICB0LndyaXRlX2V2ZXJfY2FsbGVkIDwtIHRydWU7XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENsb3NlZCB8IFdyaXRlX2luX3Byb2dyZXNzIC0+IHN0YXJ0X3dyaXRlX2ZhaWxpbmcgdFxuICB8IE9rX3RvX3dyaXRlIC0+XG4gICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPiAwXG4gICAgdGhlbiAoXG4gICAgICB0LnN0YXRlIDwtIFdyaXRlX2luX3Byb2dyZXNzO1xuICAgICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPSAxXG4gICAgICB0aGVuIChcbiAgICAgICAgKHRyeSAodW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgMCkgYTEgd2l0aFxuICAgICAgICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgMSBleG4pO1xuICAgICAgICBmaW5pc2hfd3JpdGUgdClcbiAgICAgIGVsc2UgKHdyaXRlX2xvY2FsX25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHdyaXRlMiB0IGExIGEyID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSBhMiB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGUyX25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEgYTIpO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZXQyIGxhc3RfdmFsdWUgYTEgYTIpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHdyaXRlMyB0IGExIGEyIGEzID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSBhMiBhMyB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGUzX25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEgYTIgYTMpO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZXQzIGxhc3RfdmFsdWUgYTEgYTIgYTMpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHdyaXRlNCB0IGExIGEyIGEzIGE0ID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSBhMiBhMyBhNCB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGU0X25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEgYTIgYTMgYTQpO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZXQ0IGxhc3RfdmFsdWUgYTEgYTIgYTMgYTQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHdyaXRlNSB0IGExIGEyIGEzIGE0IGE1ID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSBhMiBhMyBhNCBhNSB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGU1X25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEgYTIgYTMgYTQgYTUpO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZXQ1IGxhc3RfdmFsdWUgYTEgYTIgYTMgYTQgYTUpXG47O1xuXG5sZXQgYWxsb3dfc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlIHQgPVxuICBPbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUuYWxsb3dfc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlXG4gICAgdC5vbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbjs7XG5cbmxldCBjcmVhdGVfZXhuXG4gICAgICA/bmFtZVxuICAgICAgY3JlYXRlZF9mcm9tXG4gICAgICBjYWxsYmFja19hcml0eVxuICAgICAgfihvbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUgOiBPbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUudClcbiAgICAgIH5vbl9jYWxsYmFja19yYWlzZVxuICA9XG4gIGxldCBsYXN0X3ZhbHVlID1cbiAgICBPbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUuc2F2ZV9sYXN0X3ZhbHVlX2V4blxuICAgICAgb25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlXG4gICAgICBjYWxsYmFja19hcml0eVxuICBpblxuICB7IGJ1c19pZCA9IEJ1c19pZC5jcmVhdGUgKClcbiAgOyBuYW1lXG4gIDsgY2FsbGJhY2tfYXJpdHlcbiAgOyBjcmVhdGVkX2Zyb21cbiAgOyBudW1fc3Vic2NyaWJlcnMgPSAwXG4gIDsgb25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlXG4gIDsgb25fY2FsbGJhY2tfcmFpc2VcbiAgOyBsYXN0X3ZhbHVlXG4gIDsgc3Vic2NyaWJlcnMgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46MFxuICA7IGNhbGxiYWNrcyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjowXG4gIDsgc3RhdGUgPSBPa190b193cml0ZVxuICA7IHdyaXRlX2V2ZXJfY2FsbGVkID0gZmFsc2VcbiAgOyB1bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlID0gW11cbiAgfVxuOztcblxubGV0IGNhbl9zdWJzY3JpYmUgdCA9IGFsbG93X3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSB0IHx8IG5vdCB0LndyaXRlX2V2ZXJfY2FsbGVkXG5cbmxldCBlbmxhcmdlX2NhcGFjaXR5IHQgPVxuICBsZXQgY2FwYWNpdHkgPSBjYXBhY2l0eSB0IGluXG4gIGxldCBuZXdfY2FwYWNpdHkgPSBJbnQubWF4IDEgKGNhcGFjaXR5ICogMikgaW5cbiAgbGV0IGNvcHlfYW5kX2RvdWJsZSBhcnJheSA9XG4gICAgbGV0IG5ld19hcnJheSA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpuZXdfY2FwYWNpdHkgaW5cbiAgICBPcHRpb25fYXJyYXkuYmxpdCB+c3JjOmFycmF5IH5zcmNfcG9zOjAgfmRzdDpuZXdfYXJyYXkgfmRzdF9wb3M6MCB+bGVuOmNhcGFjaXR5O1xuICAgIG5ld19hcnJheVxuICBpblxuICB0LnN1YnNjcmliZXJzIDwtIGNvcHlfYW5kX2RvdWJsZSB0LnN1YnNjcmliZXJzO1xuICB0LmNhbGxiYWNrcyA8LSBjb3B5X2FuZF9kb3VibGUgdC5jYWxsYmFja3Ncbjs7XG5cbmxldCBzdWJzY3JpYmVfZXhuXG4gICAgICA/KGV4dHJhY3RfZXhuID0gZmFsc2UpXG4gICAgICA/b25fY2FsbGJhY2tfcmFpc2VcbiAgICAgID9vbl9jbG9zZVxuICAgICAgdFxuICAgICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgICB+ZjpjYWxsYmFja1xuICA9XG4gIGlmIG5vdCAoY2FuX3N1YnNjcmliZSB0KVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIkJ1cy5zdWJzY3JpYmVfZXhuIGNhbGxlZCBhZnRlciBmaXJzdCB3cml0ZVwiXG4gICAgICBbJXNleHAgfn4oc3Vic2NyaWJlZF9mcm9tIDogU291cmNlX2NvZGVfcG9zaXRpb24udCksIHsgYnVzID0gKHQgOiAoXywgXykgdCkgfV1cbiAgICAgIFslc2V4cF9vZjogU2V4cC50XTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIC0+XG4gICAgKCogQW55dGhpbmcgdGhhdCBzYXRpc2ZpZXMgdGhlIHJldHVybiB0eXBlIHdpbGwgZG8uICBTaW5jZSB0aGUgc3Vic2NyaWJlciBpcyBuZXZlclxuICAgICAgIHN0b3JlZCBpbiB0aGUgYXJyYXlzLCB0aGUgW29uX2Nsb3NlXSBjYWxsYmFjayB3aWxsIG5ldmVyIGJlIGNhbGxlZC4gKilcbiAgICBTdWJzY3JpYmVyLmNyZWF0ZVxuICAgICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgICB+YnVzX2lkOnQuYnVzX2lkXG4gICAgICB+Y2FsbGJhY2tcbiAgICAgIH5leHRyYWN0X2V4blxuICAgICAgfnN1YnNjcmliZXJzX2luZGV4OigtMSlcbiAgICAgIH5vbl9jYWxsYmFja19yYWlzZVxuICAgICAgfm9uX2Nsb3NlXG4gIHwgT2tfdG9fd3JpdGUgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPlxuICAgICgqIFRoZSBjb2RlIGJlbG93IHNpZGUgZWZmZWN0cyBbdF0sIHdoaWNoIHBvdGVudGlhbGx5IGNvdWxkIGludGVyZmVyZSB3aXRoIGEgd3JpdGUgaW5cbiAgICAgICBwcm9ncmVzcy4gIEhvd2V2ZXIsIHRoZSBzaWRlIGVmZmVjdHMgZG9uJ3QgY2hhbmdlIHRoZSBwcmVmaXggb2YgW3QuY2FsbGJhY2tzXSB0aGF0XG4gICAgICAgd3JpdGUgdXNlczsgdGhleSBvbmx5IGNoYW5nZSBbdC5jYWxsYmFja3NdIGJleW9uZCB0aGF0IHByZWZpeC4gIEFuZCBhbGwgd3JpdGVzXG4gICAgICAgZXh0cmFjdCBbdC5udW1fc3Vic2NyaWJlcnNdIGF0IHRoZSBzdGFydCwgc28gdGhhdCB0aGV5IHdpbGwgbm90IHNlZSBhbnkgc3Vic2VxdWVudFxuICAgICAgIGNoYW5nZXMgdG8gaXQuICopXG4gICAgbGV0IHN1YnNjcmliZXIgPVxuICAgICAgU3Vic2NyaWJlci5jcmVhdGVcbiAgICAgICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgICAgIH5idXNfaWQ6dC5idXNfaWRcbiAgICAgICAgfmNhbGxiYWNrXG4gICAgICAgIH5leHRyYWN0X2V4blxuICAgICAgICB+c3Vic2NyaWJlcnNfaW5kZXg6dC5udW1fc3Vic2NyaWJlcnNcbiAgICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlXG4gICAgICAgIH5vbl9jbG9zZVxuICAgIGluXG4gICAgaWYgY2FwYWNpdHkgdCA9IHQubnVtX3N1YnNjcmliZXJzIHRoZW4gZW5sYXJnZV9jYXBhY2l0eSB0O1xuICAgIGFkZF9zdWJzY3JpYmVyIHQgc3Vic2NyaWJlciB+YXRfc3Vic2NyaWJlcnNfaW5kZXg6dC5udW1fc3Vic2NyaWJlcnM7XG4gICAgdC5udW1fc3Vic2NyaWJlcnMgPC0gdC5udW1fc3Vic2NyaWJlcnMgKyAxO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZW5kIGxhc3RfdmFsdWUgY2FsbGJhY2spO1xuICAgIHN1YnNjcmliZXJcbjs7XG5cbmxldCBpdGVyX2V4biA/ZXh0cmFjdF9leG4gdCBzdWJzY3JpYmVkX2Zyb20gfmYgPVxuICBpZiBub3QgKGNhbl9zdWJzY3JpYmUgdClcbiAgdGhlblxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQnVzLml0ZXJfZXhuIGNhbGxlZCBhZnRlciBmaXJzdCB3cml0ZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlnbm9yZSAoc3Vic2NyaWJlX2V4biA/ZXh0cmFjdF9leG4gdCBzdWJzY3JpYmVkX2Zyb20gfmYgOiBfIFN1YnNjcmliZXIudClcbjs7XG5cbm1vZHVsZSBGb2xkX2FyaXR5ID0gc3RydWN0XG4gIHR5cGUgKF8sIF8sIF8pIHQgPVxuICAgIHwgQXJpdHkxIDogKCdhIC0+IHVuaXQsICdzIC0+ICdhIC0+ICdzLCAncykgdFxuICAgIHwgQXJpdHkyIDogKCdhIC0+ICdiIC0+IHVuaXQsICdzIC0+ICdhIC0+ICdiIC0+ICdzLCAncykgdFxuICAgIHwgQXJpdHkzIDogKCdhIC0+ICdiIC0+ICdjIC0+IHVuaXQsICdzIC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdzLCAncykgdFxuICAgIHwgQXJpdHk0IDogKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IHVuaXQsICdzIC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdzLCAncykgdFxuICAgIHwgQXJpdHk1XG4gICAgICA6ICggJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gdW5pdFxuICAgICAgICAsICdzIC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+ICdzXG4gICAgICAgICwgJ3MgKVxuICAgICAgICAgIHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgZm9sZF9leG5cbiAgICAgID9leHRyYWN0X2V4blxuICAgICAgKHR5cGUgYyBmIHMpXG4gICAgICAodCA6IChjLCBfKSB0KVxuICAgICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgICAoZm9sZF9hcml0eSA6IChjLCBmLCBzKSBGb2xkX2FyaXR5LnQpXG4gICAgICB+KGluaXQgOiBzKVxuICAgICAgfihmIDogZilcbiAgPVxuICBsZXQgc3RhdGUgPSByZWYgaW5pdCBpblxuICBpZiBub3QgKGNhbl9zdWJzY3JpYmUgdClcbiAgdGhlblxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQnVzLmZvbGRfZXhuIGNhbGxlZCBhZnRlciBmaXJzdCB3cml0ZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGl0ZXJfZXhuXG4gICAgP2V4dHJhY3RfZXhuXG4gICAgdFxuICAgIHN1YnNjcmliZWRfZnJvbVxuICAgIH5mOlxuICAgICAgKG1hdGNoIGZvbGRfYXJpdHkgd2l0aFxuICAgICAgIHwgQXJpdHkxIC0+IGZ1biBhMSAtPiBzdGF0ZSA6PSBmICFzdGF0ZSBhMVxuICAgICAgIHwgQXJpdHkyIC0+IGZ1biBhMSBhMiAtPiBzdGF0ZSA6PSBmICFzdGF0ZSBhMSBhMlxuICAgICAgIHwgQXJpdHkzIC0+IGZ1biBhMSBhMiBhMyAtPiBzdGF0ZSA6PSBmICFzdGF0ZSBhMSBhMiBhM1xuICAgICAgIHwgQXJpdHk0IC0+IGZ1biBhMSBhMiBhMyBhNCAtPiBzdGF0ZSA6PSBmICFzdGF0ZSBhMSBhMiBhMyBhNFxuICAgICAgIHwgQXJpdHk1IC0+IGZ1biBhMSBhMiBhMyBhNCBhNSAtPiBzdGF0ZSA6PSBmICFzdGF0ZSBhMSBhMiBhMyBhNCBhNSlcbjs7XG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQgYXNzZXJ0X25vX2FsbG9jYXRpb24gYnVzIGNhbGxiYWNrIHdyaXRlID1cbiAgICAgIGxldCBidXNfciA9IHJlYWRfb25seSBidXMgaW5cbiAgICAgIGlnbm9yZSAoc3Vic2NyaWJlX2V4biBidXNfciBbJWhlcmVdIH5mOmNhbGxiYWNrIDogXyBTdWJzY3JpYmVyLnQpO1xuICAgICAgbGV0IHN0YXJ0aW5nX21pbm9yX3dvcmRzID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgICAgIGxldCBzdGFydGluZ19tYWpvcl93b3JkcyA9IEdjLm1ham9yX3dvcmRzICgpIGluXG4gICAgICB3cml0ZSAoKTtcbiAgICAgIGxldCBlbmRpbmdfbWlub3Jfd29yZHMgPSBHYy5taW5vcl93b3JkcyAoKSBpblxuICAgICAgbGV0IGVuZGluZ19tYWpvcl93b3JkcyA9IEdjLm1ham9yX3dvcmRzICgpIGluXG4gICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdIChlbmRpbmdfbWlub3Jfd29yZHMgLSBzdGFydGluZ19taW5vcl93b3JkcykgfmV4cGVjdDowO1xuICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAoZW5kaW5nX21ham9yX3dvcmRzIC0gc3RhcnRpbmdfbWFqb3Jfd29yZHMpIH5leHBlY3Q6MFxuICAgIDs7XG5cbiAgICAoKiBUaGlzIHRlc3Qgb25seSB3b3JrcyB3aGVuIFt3cml0ZV0gaXMgcHJvcGVybHkgaW5saW5lZC4gIEl0IGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0XG4gICAgICAgW3dyaXRlXSBuZXZlciBhbGxvY2F0ZXMgaW4gYW55IHNpdHVhdGlvbi4gIEZvciBleGFtcGxlLCBpZiB0aGlzIHRlc3QgaXMgbW92ZWQgdG9cbiAgICAgICBhbm90aGVyIGxpYnJhcnkgYW5kIHJ1biB3aXRoIFhfTElCUkFSWV9JTkxJTklORz1mYWxzZSwgaXQgZmFpbHMuICopXG4gICAgbGV0JXRlc3RfdW5pdCBcIndyaXRlIGRvZXNuJ3QgYWxsb2NhdGUgd2hlbiBpbmxpbmVkXCIgPVxuICAgICAgbGV0IGNyZWF0ZSBjcmVhdGVkX2Zyb20gYXJpdHkgPVxuICAgICAgICBjcmVhdGVfZXhuXG4gICAgICAgICAgY3JlYXRlZF9mcm9tXG4gICAgICAgICAgYXJpdHlcbiAgICAgICAgICB+b25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlOlJhaXNlXG4gICAgICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlOkVycm9yLnJhaXNlXG4gICAgICBpblxuICAgICAgbGV0IGJ1czEgPSBjcmVhdGUgWyVoZXJlXSBBcml0eTEgaW5cbiAgICAgIGxldCBidXMyID0gY3JlYXRlIFslaGVyZV0gQXJpdHkyIGluXG4gICAgICBsZXQgYnVzMyA9IGNyZWF0ZSBbJWhlcmVdIEFyaXR5MyBpblxuICAgICAgbGV0IGJ1czQgPSBjcmVhdGUgWyVoZXJlXSBBcml0eTQgaW5cbiAgICAgIGxldCBidXM1ID0gY3JlYXRlIFslaGVyZV0gQXJpdHk1IGluXG4gICAgICBhc3NlcnRfbm9fYWxsb2NhdGlvbiBidXMxIChmdW4gKCkgLT4gKCkpIChmdW4gKCkgLT4gd3JpdGUgYnVzMSAoKSk7XG4gICAgICBhc3NlcnRfbm9fYWxsb2NhdGlvbiBidXMyIChmdW4gKCkgKCkgLT4gKCkpIChmdW4gKCkgLT4gd3JpdGUyIGJ1czIgKCkgKCkpO1xuICAgICAgYXNzZXJ0X25vX2FsbG9jYXRpb24gYnVzMyAoZnVuICgpICgpICgpIC0+ICgpKSAoZnVuICgpIC0+IHdyaXRlMyBidXMzICgpICgpICgpKTtcbiAgICAgIGFzc2VydF9ub19hbGxvY2F0aW9uXG4gICAgICAgIGJ1czRcbiAgICAgICAgKGZ1biAoKSAoKSAoKSAoKSAtPiAoKSlcbiAgICAgICAgKGZ1biAoKSAtPiB3cml0ZTQgYnVzNCAoKSAoKSAoKSAoKSk7XG4gICAgICBhc3NlcnRfbm9fYWxsb2NhdGlvblxuICAgICAgICBidXM1XG4gICAgICAgIChmdW4gKCkgKCkgKCkgKCkgKCkgLT4gKCkpXG4gICAgICAgIChmdW4gKCkgLT4gd3JpdGU1IGJ1czUgKCkgKCkgKCkgKCkgKCkpXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxub3BlbiEgQXN5bmNfa2VybmVsX3JlcXVpcmVfZXhwbGljaXRfdGltZV9zb3VyY2VcbmluY2x1ZGUgUGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbF9pbnRmXG5cbigqIFRoaXMgcG9zaXRpb24gc2hvd3MgdXAgaW4gdGVzdHMgaW4gYSB3YXkgdGhhdCBpcyBkaWZmaWN1bHQgdG8gc3VwcHJlc3MsIHNvIHdlIGRlZmluZSBpdFxuICAgaGVyZSBpbiBhIHBsYWNlIHRoYXQgaXMgdW5saWtlbHkgdG8gY2hhbmdlIHZlcnkgb2Z0ZW4gKilcbmxldCBkdW1teV9zcmNfcG9zX3RoYXRfc2hvd3NfdXBfaW5fdGVzdHMgPSBbJWhlcmVdXG5cbm1vZHVsZSBNYWtlIChDb25uIDogQ2xvc2FibGUpID0gc3RydWN0XG4gIG1vZHVsZSBDb25uID0gc3RydWN0XG4gICAgaW5jbHVkZSBDb25uXG5cbiAgICBsZXQgc2V4cF9vZl90IChfIDogdCkgOiBTZXhwLnQgPSBBdG9tIFwiPENvbm4udD5cIlxuICBlbmRcblxuICB0eXBlIGNvbm4gPSBDb25uLnRcblxuICBtb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhZGRyZXNzIHQgPVxuICAgICAgfCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3RcbiAgICAgIHwgT2J0YWluZWRfYWRkcmVzcyBvZiAnYWRkcmVzc1xuICAgICAgfCBGYWlsZWRfdG9fY29ubmVjdCBvZiBFcnJvci50XG4gICAgICB8IENvbm5lY3RlZCBvZiAoY29ubltAc2V4cC5vcGFxdWVdKVxuICAgICAgfCBEaXNjb25uZWN0ZWRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdHlwZSAnYWRkcmVzcyBldmVudCA9ICdhZGRyZXNzIHRcblxuICAgIG1vZHVsZSBIYW5kbGVyID0gc3RydWN0XG4gICAgICB0eXBlICdhZGRyZXNzIHQgPVxuICAgICAgICB7IHNlcnZlcl9uYW1lIDogc3RyaW5nXG4gICAgICAgIDsgb25fZXZlbnQgOiAnYWRkcmVzcyBldmVudCAtPiB1bml0IERlZmVycmVkLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIGxldCBsb2dfbGV2ZWwgPSBmdW5jdGlvblxuICAgICAgfCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3QgfCBDb25uZWN0ZWQgXyB8IERpc2Nvbm5lY3RlZCB8IE9idGFpbmVkX2FkZHJlc3MgXyAtPiBgSW5mb1xuICAgICAgfCBGYWlsZWRfdG9fY29ubmVjdCBfIC0+IGBFcnJvclxuICAgIDs7XG5cbiAgICBsZXQgaGFuZGxlIHQgeyBIYW5kbGVyLnNlcnZlcl9uYW1lID0gXzsgb25fZXZlbnQgfSA9IG9uX2V2ZW50IHRcbiAgZW5kXG5cbiAgKCogQSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gdGhhdCBpcyBwb2x5bW9ycGhpYyBpbiB0aGUgYWRkcmVzcyB0eXBlLiAgV2UgaGlkZSBhd2F5IHRoaXNcbiAgICAgdHlwZSBsYXRlciBzaW5jZSBpdCBvbmx5IGFwcGVhcnMgaW4gdGhlIHR5cGUgb2YgW2NyZWF0ZV0uICopXG4gIG1vZHVsZSBQb2x5ID0gc3RydWN0XG4gICAgdHlwZSAnYWRkcmVzcyB0ID1cbiAgICAgIHsgZ2V0X2FkZHJlc3MgOiB1bml0IC0+ICdhZGRyZXNzIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgICAgOyBjb25uZWN0IDogJ2FkZHJlc3MgLT4gQ29ubi50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgICAgOyByZXRyeV9kZWxheSA6IHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50XG4gICAgICA7IG11dGFibGUgY29ubiA6IFsgYE9rIG9mIENvbm4udCB8IGBDbG9zZV9zdGFydGVkIF0gSXZhci50XG4gICAgICA7IG11dGFibGUgbmV4dF9jb25uZWN0X3Jlc3VsdCA6IENvbm4udCBPcl9lcnJvci50IEl2YXIudFxuICAgICAgOyBldmVudF9oYW5kbGVyIDogJ2FkZHJlc3MgRXZlbnQuSGFuZGxlci50XG4gICAgICA7IGV2ZW50X2J1cyA6ICh1bml0IEV2ZW50LnQgLT4gdW5pdCwgcmVhZF93cml0ZSkgQnVzLnRcbiAgICAgIDsgY2xvc2Vfc3RhcnRlZCA6IHVuaXQgSXZhci50XG4gICAgICA7IGNsb3NlX2ZpbmlzaGVkIDogdW5pdCBJdmFyLnRcbiAgICAgIDsgZG9uJ3RfcmVjb25uZWN0IDogdW5pdCBJdmFyLnRcbiAgICAgIDsgYWRkcmVzc19lcXVhbCA6ICdhZGRyZXNzIC0+ICdhZGRyZXNzIC0+IGJvb2xcbiAgICAgIDsgc2V4cF9vZl9hZGRyZXNzIDogJ2FkZHJlc3MgLT4gU2V4cC50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IHNlcnZlcl9uYW1lIHQgPSB0LmV2ZW50X2hhbmRsZXIuc2VydmVyX25hbWVcblxuICAgIGxldCBoYW5kbGVfZXZlbnQgKHR5cGUgYWRkcmVzcykgdCAoZXZlbnQgOiBhZGRyZXNzIEV2ZW50LnQpID1cbiAgICAgIEJ1cy53cml0ZVxuICAgICAgICB0LmV2ZW50X2J1c1xuICAgICAgICAobWF0Y2ggZXZlbnQgd2l0aFxuICAgICAgICAgfCBPYnRhaW5lZF9hZGRyZXNzIChfIDogYWRkcmVzcykgLT4gT2J0YWluZWRfYWRkcmVzcyAoKVxuICAgICAgICAgfCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3QgLT4gQXR0ZW1wdGluZ190b19jb25uZWN0XG4gICAgICAgICB8IEZhaWxlZF90b19jb25uZWN0IGUgLT4gRmFpbGVkX3RvX2Nvbm5lY3QgZVxuICAgICAgICAgfCBDb25uZWN0ZWQgY29ubiAtPiBDb25uZWN0ZWQgY29ublxuICAgICAgICAgfCBEaXNjb25uZWN0ZWQgLT4gRGlzY29ubmVjdGVkKTtcbiAgICAgIEV2ZW50LmhhbmRsZSBldmVudCB0LmV2ZW50X2hhbmRsZXJcbiAgICA7O1xuXG4gICAgKCogVGhpcyBmdW5jdGlvbiBmb2N1c2VzIGluIG9uIHRoZSB0aGUgZXJyb3IgaXRzZWxmLCBkaXNjYXJkaW5nIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoXG4gICAgICAgbW9uaXRvciBjYXVnaHQgdGhlIGVycm9yLCBpZiBhbnkuXG5cbiAgICAgICBJZiB3ZSBkb24ndCBkbyB0aGlzLCB3ZSBzb21ldGltZXMgZW5kIHVwIHdpdGggbm9pc3kgbG9ncyB3aGljaCByZXBvcnQgdGhlIHNhbWUgZXJyb3JcbiAgICAgICBhZ2FpbiBhbmQgYWdhaW4sIGRpZmZlcmluZyBvbmx5IGFzIHRvIHdoYXQgbW9uaXRvciBjYXVnaHQgdGhlbS4gKilcbiAgICBsZXQgc2FtZV9lcnJvciBlMSBlMiA9XG4gICAgICBsZXQgdG9fc2V4cCBlID0gRXhuLnNleHBfb2ZfdCAoTW9uaXRvci5leHRyYWN0X2V4biAoRXJyb3IudG9fZXhuIGUpKSBpblxuICAgICAgU2V4cC5lcXVhbCAodG9fc2V4cCBlMSkgKHRvX3NleHAgZTIpXG4gICAgOztcblxuICAgICgqIENvbnRpbnVlIHRyeWluZyB0byBjb25uZWN0IHVudGlsIHdlIGFyZSBhYmxlIHRvIGRvIHNvLCBpbiB3aGljaCBjYXNlIHdlIHJldHVybiBib3RoXG4gICAgICAgdGhlIG5ldyBjb25uZWN0aW9uIGFuZCBhIGRlZmVycmVkIHRoYXQgd2lsbCBiZWNvbWUgZGV0ZXJtaW5lZCBvbmNlIHdlIGFyZSByZWFkeSBmb3JcbiAgICAgICB0aGUgbmV4dCByZWNvbm5lY3Rpb24gYXR0ZW1wdC4gKilcbiAgICBsZXQgdHJ5X2Nvbm5lY3RpbmdfdW50aWxfc3VjY2Vzc2Z1bCB0ID1cbiAgICAgICgqIFdlIHRha2UgY2FyZSBub3QgdG8gc3BhbSBsb2dzIHdpdGggdGhlIHNhbWUgbWVzc2FnZSBvdmVyIGFuZCBvdmVyIGJ5IGNvbXBhcmluZ1xuICAgICAgICAgZWFjaCBsb2cgbWVzc2FnZSB0aGUgdGhlIHByZXZpb3VzIG9uZSBvZiB0aGUgc2FtZSB0eXBlLiAqKVxuICAgICAgbGV0IHByZXZpb3VzX2FkZHJlc3MgPSByZWYgTm9uZSBpblxuICAgICAgbGV0IHByZXZpb3VzX2Vycm9yID0gcmVmIE5vbmUgaW5cbiAgICAgIGxldCBjb25uZWN0ICgpID1cbiAgICAgICAgdC5nZXRfYWRkcmVzcyAoKVxuICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCBFcnJvciBlIC0+IHJldHVybiAoRXJyb3IgZSlcbiAgICAgICAgfCBPayBhZGRyIC0+XG4gICAgICAgICAgbGV0IHNhbWVfYXNfcHJldmlvdXNfYWRkcmVzcyA9XG4gICAgICAgICAgICBtYXRjaCAhcHJldmlvdXNfYWRkcmVzcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSBwcmV2aW91c19hZGRyZXNzIC0+IHQuYWRkcmVzc19lcXVhbCBhZGRyIHByZXZpb3VzX2FkZHJlc3NcbiAgICAgICAgICBpblxuICAgICAgICAgIHByZXZpb3VzX2FkZHJlc3MgOj0gU29tZSBhZGRyO1xuICAgICAgICAgIChpZiBzYW1lX2FzX3ByZXZpb3VzX2FkZHJlc3NcbiAgICAgICAgICAgdGhlbiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgIGVsc2UgaGFuZGxlX2V2ZW50IHQgKE9idGFpbmVkX2FkZHJlc3MgYWRkcikpXG4gICAgICAgICAgPj49IGZ1biAoKSAtPiB0LmNvbm5lY3QgYWRkclxuICAgICAgaW5cbiAgICAgIGxldCBjb25uZWN0ICgpID1cbiAgICAgICAgKCogQ2F0Y2ggZXhjZXB0aW9ucyByYWlzZWQgYnkgdGhlIHVzZXItcHJvdmlkZWQgW3QuZ2V0X2FkZHJlc3NdIG9yIFt0LmNvbm5lY3RdICopXG4gICAgICAgIERlZmVycmVkLk9yX2Vycm9yLnRyeV93aXRoX2pvaW4gfmV4dHJhY3RfZXhuOmFtX3J1bm5pbmdfdGVzdCBjb25uZWN0XG4gICAgICBpblxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBJdmFyLmZpbGwgdC5jb25uIGBDbG9zZV9zdGFydGVkO1xuICAgICAgICAgIHJldHVybiBgQ2xvc2Vfc3RhcnRlZClcbiAgICAgICAgZWxzZSBpZiBJdmFyLmlzX2Z1bGwgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgdGhlbiByZXR1cm4gYERvbid0X3JlY29ubmVjdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZyA9IHQucmV0cnlfZGVsYXkgKCkgaW5cbiAgICAgICAgICBsZXQlYmluZCBjb25uZWN0X3Jlc3VsdCA9IGNvbm5lY3QgKCkgaW5cbiAgICAgICAgICBJdmFyLmZpbGwgdC5uZXh0X2Nvbm5lY3RfcmVzdWx0IGNvbm5lY3RfcmVzdWx0O1xuICAgICAgICAgIHQubmV4dF9jb25uZWN0X3Jlc3VsdCA8LSBJdmFyLmNyZWF0ZSAoKTtcbiAgICAgICAgICBtYXRjaCBjb25uZWN0X3Jlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayBjb25uIC0+XG4gICAgICAgICAgICBJdmFyLmZpbGwgdC5jb25uIChgT2sgY29ubik7XG4gICAgICAgICAgICByZXR1cm4gKGBPayAoY29ubiwgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZykpXG4gICAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICAgIGxldCBzYW1lX2FzX3ByZXZpb3VzX2Vycm9yID1cbiAgICAgICAgICAgICAgbWF0Y2ggIXByZXZpb3VzX2Vycm9yIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgICAgIHwgU29tZSBwcmV2aW91c19lcnIgLT4gc2FtZV9lcnJvciBlcnIgcHJldmlvdXNfZXJyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcHJldmlvdXNfZXJyb3IgOj0gU29tZSBlcnI7XG4gICAgICAgICAgICAoaWYgc2FtZV9hc19wcmV2aW91c19lcnJvclxuICAgICAgICAgICAgIHRoZW4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICAgIGVsc2UgaGFuZGxlX2V2ZW50IHQgKEZhaWxlZF90b19jb25uZWN0IGVycikpXG4gICAgICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICBEZWZlcnJlZC5hbnlcbiAgICAgICAgICAgICAgWyByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICA+Pj0gZnVuICgpIC0+IGxvb3AgKCkpXG4gICAgICBpblxuICAgICAgbG9vcCAoKVxuICAgIDs7XG5cbiAgICBsZXQgYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0aXZlX2Nvbm5lY3Rpb24gdCA9XG4gICAgICBJdmFyLmZpbGwgdC5jbG9zZV9zdGFydGVkICgpO1xuICAgICAgSXZhci5maWxsIHQuY2xvc2VfZmluaXNoZWQgKCk7XG4gICAgICBJdmFyLmZpbGwgdC5jb25uIGBDbG9zZV9zdGFydGVkXG4gICAgOztcblxuICAgIGxldCBjcmVhdGVcbiAgICAgICAgICAodHlwZSBhZGRyZXNzKVxuICAgICAgICAgIH5zZXJ2ZXJfbmFtZVxuICAgICAgICAgID8ob25fZXZlbnQgPSBmdW4gXyAtPiBEZWZlcnJlZC51bml0KVxuICAgICAgICAgID9yZXRyeV9kZWxheVxuICAgICAgICAgID8ocmFuZG9tX3N0YXRlID0gYFN0YXRlIFJhbmRvbS5TdGF0ZS5kZWZhdWx0KVxuICAgICAgICAgID8odGltZV9zb3VyY2UgPSBUaW1lX3NvdXJjZS53YWxsX2Nsb2NrICgpKVxuICAgICAgICAgIH5jb25uZWN0XG4gICAgICAgICAgfmFkZHJlc3M6KG1vZHVsZSBBZGRyZXNzIDogQWRkcmVzcyB3aXRoIHR5cGUgdCA9IGFkZHJlc3MpXG4gICAgICAgICAgZ2V0X2FkZHJlc3NcbiAgICAgID1cbiAgICAgIGxldCBldmVudF9oYW5kbGVyID0geyBFdmVudC5IYW5kbGVyLnNlcnZlcl9uYW1lOyBvbl9ldmVudCB9IGluXG4gICAgICBsZXQgZGVmYXVsdF9yZXRyeV9kZWxheSA9XG4gICAgICAgIEZuLmNvbnN0IChUaW1lX25zLlNwYW4ub2Zfc2VjIChpZiBhbV9ydW5uaW5nX3Rlc3QgdGhlbiAwLjEgZWxzZSAxMC4pKVxuICAgICAgaW5cbiAgICAgIGxldCBub25fcmFuZG9taXplZF9kZWxheSA9IE9wdGlvbi52YWx1ZSByZXRyeV9kZWxheSB+ZGVmYXVsdDpkZWZhdWx0X3JldHJ5X2RlbGF5IGluXG4gICAgICBsZXQgcmV0cnlfZGVsYXlfc3BhbiA9XG4gICAgICAgIG1hdGNoIHJhbmRvbV9zdGF0ZSB3aXRoXG4gICAgICAgIHwgYE5vbl9yYW5kb20gLT4gbm9uX3JhbmRvbWl6ZWRfZGVsYXlcbiAgICAgICAgfCBgU3RhdGUgcmFuZG9tX3N0YXRlIC0+XG4gICAgICAgICAgZnVuICgpIC0+XG4gICAgICAgICAgICBsZXQgc3BhbiA9IG5vbl9yYW5kb21pemVkX2RlbGF5ICgpIGluXG4gICAgICAgICAgICBsZXQgc3BhbiA9IFRpbWVfbnMuU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICAgICAgbGV0IGRpc3RhbmNlID0gUmFuZG9tLlN0YXRlLmZsb2F0IHJhbmRvbV9zdGF0ZSAoc3BhbiAqLiAwLjMpIGluXG4gICAgICAgICAgICBsZXQgd2FpdCA9XG4gICAgICAgICAgICAgIGlmIFJhbmRvbS5TdGF0ZS5ib29sIHJhbmRvbV9zdGF0ZVxuICAgICAgICAgICAgICB0aGVuIHNwYW4gKy4gZGlzdGFuY2VcbiAgICAgICAgICAgICAgZWxzZSBzcGFuIC0uIGRpc3RhbmNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgVGltZV9ucy5TcGFuLm9mX3NlYyB3YWl0XG4gICAgICBpblxuICAgICAgbGV0IHJldHJ5X2RlbGF5ICgpID0gVGltZV9zb3VyY2UuYWZ0ZXIgdGltZV9zb3VyY2UgKHJldHJ5X2RlbGF5X3NwYW4gKCkpIGluXG4gICAgICBsZXQgdCA9XG4gICAgICAgIHsgZXZlbnRfaGFuZGxlclxuICAgICAgICA7IGV2ZW50X2J1cyA9XG4gICAgICAgICAgICBCdXMuY3JlYXRlX2V4blxuICAgICAgICAgICAgICAoaWYgYW1fcnVubmluZ190ZXN0IHRoZW4gZHVtbXlfc3JjX3Bvc190aGF0X3Nob3dzX3VwX2luX3Rlc3RzIGVsc2UgWyVoZXJlXSlcbiAgICAgICAgICAgICAgQXJpdHkxXG4gICAgICAgICAgICAgIH5vbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGU6QWxsb3dfYW5kX3NlbmRfbGFzdF92YWx1ZVxuICAgICAgICAgICAgICB+b25fY2FsbGJhY2tfcmFpc2U6aWdub3JlXG4gICAgICAgIDsgZ2V0X2FkZHJlc3NcbiAgICAgICAgOyBjb25uZWN0XG4gICAgICAgIDsgbmV4dF9jb25uZWN0X3Jlc3VsdCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgIDsgcmV0cnlfZGVsYXlcbiAgICAgICAgOyBjb25uID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBjbG9zZV9zdGFydGVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBjbG9zZV9maW5pc2hlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgIDsgZG9uJ3RfcmVjb25uZWN0ID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBhZGRyZXNzX2VxdWFsID0gQWRkcmVzcy5lcXVhbFxuICAgICAgICA7IHNleHBfb2ZfYWRkcmVzcyA9IEFkZHJlc3Muc2V4cF9vZl90XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICAoKiB0aGlzIGxvb3AgZmluaXNoZXMgb25jZSBbY2xvc2UgdF0gaGFzIGJlZW4gY2FsbGVkLCBpbiB3aGljaCBjYXNlIGl0IG1ha2VzIHN1cmUgdG9cbiAgICAgICAgIGxlYXZlIFt0LmNvbm5dIGZpbGxlZCB3aXRoIFtgQ2xvc2Vfc3RhcnRlZF0uICopXG4gICAgICBkb24ndF93YWl0X2ZvclxuICAgICAgQEAgRGVmZXJyZWQucmVwZWF0X3VudGlsX2ZpbmlzaGVkICgpIChmdW4gKCkgLT5cbiAgICAgICAgbGV0JWJpbmQgKCkgPSBoYW5kbGVfZXZlbnQgdCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3QgaW5cbiAgICAgICAgbWF0Y2glYmluZCB0cnlfY29ubmVjdGluZ191bnRpbF9zdWNjZXNzZnVsIHQgd2l0aFxuICAgICAgICB8IGBDbG9zZV9zdGFydGVkIC0+IHJldHVybiAoYEZpbmlzaGVkICgpKVxuICAgICAgICB8IGBEb24ndF9yZWNvbm5lY3QgLT5cbiAgICAgICAgICBhYm9ydF9yZWNvbm5lY3Rpbmdfd2l0aF9ub19hY3RpdmVfY29ubmVjdGlvbiB0O1xuICAgICAgICAgIHJldHVybiAoYEZpbmlzaGVkICgpKVxuICAgICAgICB8IGBPayAoY29ubiwgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZykgLT5cbiAgICAgICAgICBsZXQlYmluZCAoKSA9IGhhbmRsZV9ldmVudCB0IChDb25uZWN0ZWQgY29ubikgaW5cbiAgICAgICAgICBsZXQlYmluZCAoKSA9IENvbm4uY2xvc2VfZmluaXNoZWQgY29ubiBpblxuICAgICAgICAgIHQuY29ubiA8LSBJdmFyLmNyZWF0ZSAoKTtcbiAgICAgICAgICBsZXQlYmluZCAoKSA9IGhhbmRsZV9ldmVudCB0IERpc2Nvbm5lY3RlZCBpblxuICAgICAgICAgICgqIHdhaXRzIHVudGlsIFtyZXRyeV9kZWxheSAoKV0gdGltZSBoYXMgcGFzc2VkIHNpbmNlIHRoZSB0aW1lIGp1c3QgYmVmb3JlIHdlIGxhc3RcbiAgICAgICAgICAgICB0cmllZCB0byBjb25uZWN0IHJhdGhlciB0aGFuIHRoZSB0aW1lIHdlIG5vdGljZWQgYmVpbmcgZGlzY29ubmVjdGVkLCBzbyB0aGF0IGlmXG4gICAgICAgICAgICAgYSBsb25nLWxpdmVkIGNvbm5lY3Rpb24gZGllcywgd2Ugd2lsbCBhdHRlbXB0IHRvIHJlY29ubmVjdCBpbW1lZGlhdGVseS4gKilcbiAgICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICAgIERlZmVycmVkLmFueVxuICAgICAgICAgICAgICBbIHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmdcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuZG9uJ3RfcmVjb25uZWN0XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIEl2YXIuZmlsbCB0LmNvbm4gYENsb3NlX3N0YXJ0ZWQ7XG4gICAgICAgICAgICBgRmluaXNoZWQgKCkpXG4gICAgICAgICAgZWxzZSBpZiBJdmFyLmlzX2Z1bGwgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdGl2ZV9jb25uZWN0aW9uIHQ7XG4gICAgICAgICAgICBgRmluaXNoZWQgKCkpXG4gICAgICAgICAgZWxzZSBgUmVwZWF0ICgpKTtcbiAgICAgIHRcbiAgICA7O1xuXG4gICAgbGV0IGNvbm5lY3RlZCB0ID1cbiAgICAgICgqIFRha2UgY2FyZSBub3QgdG8gcmV0dXJuIGEgY29ubmVjdGlvbiB0aGF0IGlzIGtub3duIHRvIGJlIGNsb3NlZCBhdCB0aGUgdGltZVxuICAgICAgICAgW2Nvbm5lY3RlZF0gd2FzIGNhbGxlZC4gIFRoaXMgY291bGQgaGFwcGVuIGluIGNsaWVudCBjb2RlIHRoYXQgYmVoYXZlcyBsaWtlXG4gICAgICAgICB7W1xuICAgICAgICAgICBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjLmNvbm5lY3RlZCB0XG4gICAgICAgICAgID4+PSBmdW4gYzEgLT5cbiAgICAgICAgICAgLi4uXG4gICAgICAgICAgICAgUnBjLkNvbm5lY3Rpb24uY2xvc2VfZmluaXNoZWQgYzFcbiAgICAgICAgICAgKCogYXQgdGhpcyBwb2ludCB3ZSBhcmUgaW4gYSByYWNlIHdpdGggdGhlIHNhbWUgY2FsbCBpbnNpZGVcbiAgICAgICAgICAgICAgcGVyc2lzdGVudF9jbGllbnQubWwgKilcbiAgICAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjLmNvbm5lY3RlZCB0XG4gICAgICAgICAgICgqIGRlcGVuZGluZyBvbiBob3cgdGhlIHJhY2UgdHVybnMgb3V0LCB3ZSBkb24ndCB3YW50IHRvIGdldCBhIGNsb3NlZCBjb25uZWN0aW9uXG4gICAgICAgICAgICAgIGhlcmUgKilcbiAgICAgICAgICAgPj49IGZ1biBjMiAtPlxuICAgICAgICAgICAuLi5cbiAgICAgICAgIF19XG4gICAgICAgICBUaGlzIGRvZXNuJ3QgcmVtb3ZlIHRoZSByYWNlIGNvbmRpdGlvbiwgYnV0IGl0IG1ha2VzIGl0IGxlc3MgbGlrZWx5IHRvIGhhcHBlbi5cbiAgICAgICopXG4gICAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgICBsZXQgZCA9IEl2YXIucmVhZCB0LmNvbm4gaW5cbiAgICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgZFxuICAgICAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYENsb3NlX3N0YXJ0ZWQgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICAgICAgICAgIHwgYE9rIGNvbm4gLT4gcmV0dXJuIGNvbm4pXG4gICAgICAgIHwgU29tZSBgQ2xvc2Vfc3RhcnRlZCAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgICAgICB8IFNvbWUgKGBPayBjb25uKSAtPlxuICAgICAgICAgIGlmIENvbm4uaXNfY2xvc2VkIGNvbm5cbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAoKiBnaXZlIHRoZSByZWNvbm5lY3Rpb24gbG9vcCBhIGNoYW5jZSB0byBvdmVyd3JpdGUgdGhlIGl2YXIgKilcbiAgICAgICAgICAgIENvbm4uY2xvc2VfZmluaXNoZWQgY29ubiA+Pj0gbG9vcFxuICAgICAgICAgIGVsc2UgcmV0dXJuIGNvbm5cbiAgICAgIGluXG4gICAgICBsb29wICgpXG4gICAgOztcblxuICAgIGxldCBjdXJyZW50X2Nvbm5lY3Rpb24gdCA9XG4gICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChJdmFyLnJlYWQgdC5jb25uKSB3aXRoXG4gICAgICB8IE5vbmUgfCBTb21lIGBDbG9zZV9zdGFydGVkIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoYE9rIGNvbm4pIC0+IFNvbWUgY29ublxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2VfZmluaXNoZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlX2ZpbmlzaGVkXG4gICAgbGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuXG4gICAgbGV0IGNsb3NlIHQgPVxuICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgdGhlblxuICAgICAgICAoKiBBbm90aGVyIGNhbGwgdG8gY2xvc2UgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcy4gIFdhaXQgZm9yIGl0IHRvIGZpbmlzaC4gKilcbiAgICAgICAgY2xvc2VfZmluaXNoZWQgdFxuICAgICAgZWxzZSAoXG4gICAgICAgIEl2YXIuZmlsbCB0LmNsb3NlX3N0YXJ0ZWQgKCk7XG4gICAgICAgIEl2YXIucmVhZCB0LmNvbm5cbiAgICAgICAgPj49IGZ1biBjb25uX29wdCAtPlxuICAgICAgICAobWF0Y2ggY29ubl9vcHQgd2l0aFxuICAgICAgICAgfCBgQ2xvc2Vfc3RhcnRlZCAtPiBEZWZlcnJlZC51bml0XG4gICAgICAgICB8IGBPayBjb25uIC0+IENvbm4uY2xvc2UgY29ubilcbiAgICAgICAgPj58IGZ1biAoKSAtPiBJdmFyLmZpbGwgdC5jbG9zZV9maW5pc2hlZCAoKSlcbiAgICA7O1xuXG4gICAgbGV0IGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdF9jb25uZWN0aW9uX2Nsb3NlZCA9XG4gICAgICBPcl9lcnJvci5lcnJvcl9zIFslbWVzc2FnZSBcIlBlcnNpc3RlbnQgY29ubmVjdGlvbiBjbG9zZWRcIl1cbiAgICA7O1xuXG4gICAgbGV0IGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCB0ID1cbiAgICAgIGlmIGlzX2Nsb3NlZCB0XG4gICAgICB0aGVuIHJldHVybiBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3RfY29ubmVjdGlvbl9jbG9zZWRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBjdXJyZW50X2Nvbm5lY3Rpb24gdCB3aXRoXG4gICAgICAgIHwgU29tZSB4IHdoZW4gbm90IChDb25uLmlzX2Nsb3NlZCB4KSAtPiByZXR1cm4gKE9rIHgpXG4gICAgICAgIHwgU29tZSAoXyA6IENvbm4udCkgfCBOb25lIC0+XG4gICAgICAgICAgRGVmZXJyZWQuY2hvb3NlXG4gICAgICAgICAgICBbIGNob2ljZSAoSXZhci5yZWFkIHQuY2xvc2Vfc3RhcnRlZCkgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgIGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdF9jb25uZWN0aW9uX2Nsb3NlZClcbiAgICAgICAgICAgIDsgY2hvaWNlIChJdmFyLnJlYWQgdC5uZXh0X2Nvbm5lY3RfcmVzdWx0KSBGbi5pZFxuICAgICAgICAgICAgXSlcbiAgICA7O1xuXG4gICAgbGV0IGNsb3NlX3doZW5fY3VycmVudF9jb25uZWN0aW9uX2lzX2Nsb3NlZCB0ID1cbiAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSB0LmRvbid0X3JlY29ubmVjdCAoKVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgdCA9IFQgOiAnYWRkcmVzcyBQb2x5LnQgLT4gdCBbQEB1bmJveGVkXVxuXG4gIGxldCBzZXhwX29mX3QgKFQgdCkgPSBQb2x5LnNleHBfb2ZfdCB0LnNleHBfb2ZfYWRkcmVzcyB0XG5cbiAgbGV0IGNsb3NlX3doZW5fY3VycmVudF9jb25uZWN0aW9uX2lzX2Nsb3NlZCAoVCB0KSA9XG4gICAgUG9seS5jbG9zZV93aGVuX2N1cnJlbnRfY29ubmVjdGlvbl9pc19jbG9zZWQgdFxuICA7O1xuXG4gIGxldCBjbG9zZV9maW5pc2hlZCAoVCB0KSA9IFBvbHkuY2xvc2VfZmluaXNoZWQgdFxuICBsZXQgaXNfY2xvc2VkIChUIHQpID0gUG9seS5pc19jbG9zZWQgdFxuICBsZXQgZXZlbnRfYnVzIChUIHQpID0gQnVzLnJlYWRfb25seSB0LmV2ZW50X2J1c1xuICBsZXQgY2xvc2UgKFQgdCkgPSBQb2x5LmNsb3NlIHRcbiAgbGV0IHNlcnZlcl9uYW1lIChUIHQpID0gUG9seS5zZXJ2ZXJfbmFtZSB0XG4gIGxldCBjdXJyZW50X2Nvbm5lY3Rpb24gKFQgdCkgPSBQb2x5LmN1cnJlbnRfY29ubmVjdGlvbiB0XG4gIGxldCBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QgKFQgdCkgPSBQb2x5LmNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCB0XG4gIGxldCBjb25uZWN0ZWQgKFQgdCkgPSBQb2x5LmNvbm5lY3RlZCB0XG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICB+c2VydmVyX25hbWVcbiAgICAgICAgP29uX2V2ZW50XG4gICAgICAgID9yZXRyeV9kZWxheVxuICAgICAgICA/cmFuZG9tX3N0YXRlXG4gICAgICAgID90aW1lX3NvdXJjZVxuICAgICAgICB+Y29ubmVjdFxuICAgICAgICB+YWRkcmVzc1xuICAgICAgICBnZXRfYWRkcmVzc1xuICAgID1cbiAgICBUXG4gICAgICAoUG9seS5jcmVhdGVcbiAgICAgICAgIH5zZXJ2ZXJfbmFtZVxuICAgICAgICAgP29uX2V2ZW50XG4gICAgICAgICA/cmV0cnlfZGVsYXlcbiAgICAgICAgID9yYW5kb21fc3RhdGVcbiAgICAgICAgID90aW1lX3NvdXJjZVxuICAgICAgICAgfmNvbm5lY3RcbiAgICAgICAgIH5hZGRyZXNzXG4gICAgICAgICBnZXRfYWRkcmVzcylcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxuXG50eXBlIHQgPVxuICB8IEtyYlxuICB8IEtyYl90ZXN0X21vZGVcbiAgfCBScGNcbltAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cCwgYmluX2lvXVxuXG5sZXQgbWFnaWNfd29yZCA9IGZ1bmN0aW9uXG4gIHwgS3JiIC0+IFwiS1JCMlwiXG4gIHwgS3JiX3Rlc3RfbW9kZSAtPiBcIktCVFwiXG4gIHwgUnBjIC0+IFwiUlBDXCJcbjs7XG5cbmxldCBnZW5fbWFnaWNfbnVtYmVyIHdvcmQgPVxuICBTdHJpbmcudG9fbGlzdF9yZXYgd29yZFxuICB8PiBMaXN0LmZvbGQgfmluaXQ6MCB+ZjooZnVuIGFjYyBjIC0+IChhY2MgKiAyNTYpICsgQ2hhci50b19pbnQgYylcbjs7XG5cbmxldCBtYWdpY19udW1iZXIgdCA9IGdlbl9tYWdpY19udW1iZXIgKG1hZ2ljX3dvcmQgdClcbmxldCBieV9tYWdpY19udW1iZXIgPSBJbnQuTWFwLm9mX2FsaXN0X2V4biAoTGlzdC5tYXAgYWxsIH5mOihmdW4gcCAtPiBtYWdpY19udW1iZXIgcCwgcCkpXG5cbigqIFdlIG9uY2UgbWludGVkIGEgbmV3IG1hZ2ljIG51bWJlciBmb3IgS3JiIGluIG9yZGVyIHRvIGNoYW5nZSB0aGUgcHJvdG9jb2xcbiAgIG5lZ290aWF0aW9uLiAgTGV0J3MgYmUgY2FyZWZ1bCB0aGF0IHdlIGRvbid0IHJldXNlIHRoZSBvbGQgbWFnaWMgbnVtYmVyICopXG5sZXQgcmV0aXJlZF9rcmJfd29yZCA9IFwiS1JCXCJcblxuKCogRW5zdXJlIHRlc3RzIGJyZWFrIGlmIHRoZSBtYWdpYyBudW1iZXJzIGFyZSBjaGFuZ2VkICopXG5sZXQldGVzdF91bml0IFwibWFnaWMgbnVtYmVyc1wiID1cbiAgYXNzZXJ0IChnZW5fbWFnaWNfbnVtYmVyIHJldGlyZWRfa3JiX3dvcmQgPSA0XzM0Nl80NDMpO1xuICBhc3NlcnQgKG1hZ2ljX251bWJlciBLcmIgPSA4NDNfMjA3XzI0Myk7XG4gIGFzc2VydCAobWFnaWNfbnVtYmVyIEtyYl90ZXN0X21vZGUgPSA1XzUyMV85OTUpO1xuICBhc3NlcnQgKG1hZ2ljX251bWJlciBScGMgPSA0XzQxMV80NzQpXG47O1xuXG5tb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgbGV0IGFsbF9tYWdpY19udW1iZXJzX2luY2x1ZGluZ19yZXRpcmVkID1cbiAgICBsYXp5IChyZXRpcmVkX2tyYl93b3JkIDo6IExpc3QubWFwIGFsbCB+ZjptYWdpY193b3JkIHw+IExpc3QubWFwIH5mOmdlbl9tYWdpY19udW1iZXIpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbmluY2x1ZGUgTGlzdF93aXRoX21heF9sZW5faW50ZlxuXG5tb2R1bGUgTWFrZSAoQ29uZmlnIDogQ29uZmlnKSA9IHN0cnVjdFxuICBpbmNsdWRlIENvbmZpZ1xuXG4gIHR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBiaW5fd3JpdGVdXG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fID0gTGlzdC5fX2Jpbl9yZWFkX3RfX1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gICAgdHJ5IEJpbl9wcm90LlJlYWQuYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4gfm1heF9sZW4gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIHdpdGhcbiAgICB8IGV4biAtPiBFeG4ucmVyYWlzZSBleG4gKEluZm8udG9fc3RyaW5nX2h1bSBjb250ZXh0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgKGJpbl9yZWFkZXJfYSA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyKSA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90IGJpbl9yZWFkZXJfYS5yZWFkXG4gICAgOyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyX2EucmVhZFxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgKGJpbl9hIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy50KSA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNoYXBlID0gYmluX3NoYXBlX3QgYmluX2Euc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCBiaW5fYS53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCBiaW5fYS5yZWFkZXJcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3RfZXhuIGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgaWYgbGVuID4gbWF4X2xlblxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiTGlzdCBpcyB0b28gbGFyZ2VcIiAoY29udGV4dCA6IEluZm8udCkgKGxlbiA6IGludCkgKG1heF9sZW4gOiBpbnQpXTtcbiAgICBsXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA9IExpc3Quc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCB0X29mX2Egc2V4cCA9XG4gICAgbGV0IHQgPSBMaXN0LnRfb2Zfc2V4cCB0X29mX2Egc2V4cCBpblxuICAgIG9mX2xpc3RfZXhuIHRcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxubW9kdWxlIEtub3duX3Byb3RvY29sID0gS25vd25fcHJvdG9jb2xcblxubGV0IG1heF9zdXBwb3J0ZWRfdmVyc2lvbiA9IDFfMDAwXzAwMFxubGV0IG91dHNpZGVfbWF4X3N1cHBvcnRlZF92ZXJzaW9uX3JhbmdlIG51bSA9IG51bSA+IG1heF9zdXBwb3J0ZWRfdmVyc2lvblxuXG5tb2R1bGUgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlID1cbiAgTGlzdF93aXRoX21heF9sZW4uTWFrZSAoc3RydWN0XG4gICAgbGV0IG1heF9sZW4gPSAxMDBcbiAgICBsZXQgY29udGV4dCA9IEluZm8ub2Zfc3RyaW5nIFwiUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXJcIlxuICBlbmQpXG5cbnR5cGUgdCA9IGludCBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUudFxuW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG5sZXQga25vd25fcHJvdG9jb2xfbWFnaWNfbnVtYmVycyA9IGxhenkgKE1hcC5rZXlfc2V0IEtub3duX3Byb3RvY29sLmJ5X21hZ2ljX251bWJlcilcblxubGV0IGNyZWF0ZV9leG4gPyhhZGRpdGlvbmFsX21hZ2ljX251bWJlcnMgPSBbXSkgfnByb3RvY29sIH5zdXBwb3J0ZWRfdmVyc2lvbnMgKCkgPVxuICBsZXQgcHJvdG9jb2xfbWFnaWNfbnVtYmVyID0gS25vd25fcHJvdG9jb2wubWFnaWNfbnVtYmVyIHByb3RvY29sIGluXG4gIGlmIExpc3QuZXhpc3RzIHN1cHBvcnRlZF92ZXJzaW9ucyB+ZjpvdXRzaWRlX21heF9zdXBwb3J0ZWRfdmVyc2lvbl9yYW5nZVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVW5hYmxlIHRvIGFkdmVydGlzZSB2ZXJzaW9ucyBsYXJnZXIgdGhhbiBtYXggc3VwcG9ydGVkIHZlcnNpb25cIlxuICAgICAgICAgIChtYXhfc3VwcG9ydGVkX3ZlcnNpb24gOiBpbnQpXG4gICAgICAgICAgKHN1cHBvcnRlZF92ZXJzaW9ucyA6IGludCBsaXN0KV07XG4gIGlmIExpc3QuZXhpc3RzIGFkZGl0aW9uYWxfbWFnaWNfbnVtYmVycyB+ZjooRm4ubm9uIG91dHNpZGVfbWF4X3N1cHBvcnRlZF92ZXJzaW9uX3JhbmdlKVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW2FkZGl0aW9uYWxfbWFnaWNfbnVtYmVyc10gc2hvdWxkbid0IGJlIHdpdGhpbiBbbWF4X3N1cHBvcnRlZF92ZXJzaW9uXSByYW5nZVwiXG4gICAgICAgICAgKG1heF9zdXBwb3J0ZWRfdmVyc2lvbiA6IGludClcbiAgICAgICAgICAoYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIDogaW50IGxpc3QpXTtcbiAgaWYgTGlzdC5leGlzdHNcbiAgICAgICBhZGRpdGlvbmFsX21hZ2ljX251bWJlcnNcbiAgICAgICB+ZjooU2V0Lm1lbSAoZm9yY2Uga25vd25fcHJvdG9jb2xfbWFnaWNfbnVtYmVycykpXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbYWRkaXRpb25hbF9tYWdpY19udW1iZXJzXSBzaG91bGRuJ3QgYmUgb3ZlcmxhcHBpbmcgd2l0aCBwb3RlbnRpYWwgXFxcbiAgICAgICAgIFtwcm90b2NvbF9tYWdpY19udW1iZXJdc1wiXG4gICAgICAgICAgKGFkZGl0aW9uYWxfbWFnaWNfbnVtYmVycyA6IGludCBsaXN0KVxuICAgICAgICAgIH5rbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzOihmb3JjZSBrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzIDogSW50LlNldC50KV07XG4gIHByb3RvY29sX21hZ2ljX251bWJlciA6OiAoYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIEAgc3VwcG9ydGVkX3ZlcnNpb25zKVxuICB8PiBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUub2ZfbGlzdF9leG5cbjs7XG5cbmxldCByYXdfdmVyc2lvbl9saXN0ICh0IDogdCkgPSAodCA6PiBpbnQgbGlzdClcblxubGV0IGdldF9wcm90b2NvbCAodCA6IHQpID1cbiAgbGV0IHByb3RvY29scywgdmVyc2lvbnMsIF9hZGRpdGlvbmFsX21hZ2ljX251bWJlcnMgPVxuICAgIExpc3QucGFydGl0aW9uM19tYXBcbiAgICAgICh0IDo+IGludCBsaXN0KVxuICAgICAgfmY6KGZ1biB2IC0+XG4gICAgICAgIG1hdGNoIE1hcC5maW5kIEtub3duX3Byb3RvY29sLmJ5X21hZ2ljX251bWJlciB2IHdpdGhcbiAgICAgICAgfCBTb21lIHAgLT4gYEZzdCBwXG4gICAgICAgIHwgTm9uZSAtPiBpZiBvdXRzaWRlX21heF9zdXBwb3J0ZWRfdmVyc2lvbl9yYW5nZSB2IHRoZW4gYFRyZCB2IGVsc2UgYFNuZCB2KVxuICBpblxuICBtYXRjaCBwcm90b2NvbHMgd2l0aFxuICB8IFtdIC0+IE9rIChOb25lLCBJbnQuU2V0Lm9mX2xpc3QgdmVyc2lvbnMpXG4gIHwgWyBwIF0gLT4gT2sgKFNvbWUgcCwgSW50LlNldC5vZl9saXN0IHZlcnNpb25zKVxuICB8IF8gLT5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubmVnb3RpYXRlXTogbXVsdGlwbGUgbWFnaWMgbnVtYmVycyBzZWVuLlwiXG4gICAgICAgICAgKHByb3RvY29scyA6IEtub3duX3Byb3RvY29sLnQgbGlzdClcbiAgICAgICAgICAodmVyc2lvbnMgOiBpbnQgbGlzdCldXG47O1xuXG5sZXQgbmVnb3RpYXRlIH5hbGxvd19sZWdhY3lfcGVlciB+KHVzIDogdCkgfihwZWVyIDogdCkgPVxuICBsZXQgb3BlbiBPcl9lcnJvci5MZXRfc3ludGF4IGluXG4gIGxldCViaW5kIHVzX3Byb3RvY29sLCB1c192ZXJzaW9ucyA9IGdldF9wcm90b2NvbCB1cyBpblxuICBsZXQlYmluZCBwZWVyX3Byb3RvY29sLCBwZWVyX3ZlcnNpb25zID0gZ2V0X3Byb3RvY29sIHBlZXIgaW5cbiAgbGV0JWJpbmQgdXNfcHJvdG9jb2wgPVxuICAgIG1hdGNoIHVzX3Byb3RvY29sIHdpdGhcbiAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuICAgIHwgTm9uZSAtPiBlcnJvcl9zIFslbWVzc2FnZSBcIk5vIG1hZ2ljIG51bWJlcnMgc2VlblwiICh1c192ZXJzaW9ucyA6IEludC5TZXQudCldXG4gIGluXG4gIGxldCViaW5kIHBlZXJfcHJvdG9jb2wgPVxuICAgIG1hdGNoIHBlZXJfcHJvdG9jb2wgd2l0aFxuICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gICAgfCBOb25lIC0+XG4gICAgICAoKiB3ZSBhc3N1bWUgcGVlciBpcyBzcGVha2luZyBvdXIgcHJvdG9jb2wgaWYgW2FsbG93X2xlZ2FjeV9wZWVyXSAqKVxuICAgICAgaWYgYWxsb3dfbGVnYWN5X3BlZXJcbiAgICAgIHRoZW4gcmV0dXJuIHVzX3Byb3RvY29sXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHBlZXJfcHJvdG9jb2wgPSBgVW5rbm93biBpblxuICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBjb25mbGljdGluZyBtYWdpYyBwcm90b2NvbCBudW1iZXJzXCJcbiAgICAgICAgICAgICAgKHVzX3Byb3RvY29sIDogS25vd25fcHJvdG9jb2wudClcbiAgICAgICAgICAgICAgKHBlZXJfcHJvdG9jb2wgOiBbIGBVbmtub3duIF0pXSlcbiAgaW5cbiAgaWYgbm90IChbJWNvbXBhcmUuZXF1YWw6IEtub3duX3Byb3RvY29sLnRdIHVzX3Byb3RvY29sIHBlZXJfcHJvdG9jb2wpXG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubmVnb3RpYXRlXTogY29uZmxpY3RpbmcgbWFnaWMgcHJvdG9jb2wgbnVtYmVyc1wiXG4gICAgICAgICAgKHVzX3Byb3RvY29sIDogS25vd25fcHJvdG9jb2wudClcbiAgICAgICAgICAocGVlcl9wcm90b2NvbCA6IEtub3duX3Byb3RvY29sLnQpXVxuICBlbHNlIChcbiAgICBsZXQgcHJvdG9jb2wgPSB1c19wcm90b2NvbCBpblxuICAgIG1hdGNoIFNldC5tYXhfZWx0IChTZXQuaW50ZXIgdXNfdmVyc2lvbnMgcGVlcl92ZXJzaW9ucykgd2l0aFxuICAgIHwgU29tZSB2ZXJzaW9uIC0+IE9rIHZlcnNpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubmVnb3RpYXRlXTogbm8gc2hhcmVkIHZlcnNpb24gbnVtYmVyc1wiXG4gICAgICAgICAgICAodXNfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAocGVlcl92ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChwcm90b2NvbCA6IEtub3duX3Byb3RvY29sLnQpXSlcbjs7XG5cbmxldCBtYXRjaGVzX21hZ2ljX3ByZWZpeCAodCA6IHQpIH5wcm90b2NvbCA9XG4gIGxldCBtYWdpY19udW1iZXIgPSBLbm93bl9wcm90b2NvbC5tYWdpY19udW1iZXIgcHJvdG9jb2wgaW5cbiAgTGlzdC5tZW0gfmVxdWFsOkludC5lcXVhbCAocmF3X3ZlcnNpb25fbGlzdCB0KSBtYWdpY19udW1iZXJcbjs7XG5cbmxldCBjb250YWluc19tYWdpY19wcmVmaXggfnByb3RvY29sID1cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyIChtYXRjaGVzX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wpIGJpbl90LnJlYWRlclxuOztcblxubGV0IGFueV9tYWdpY19wcmVmaXggPVxuICBsZXQgZiB0ID1cbiAgICBMaXN0LmZpbmQgS25vd25fcHJvdG9jb2wuYWxsIH5mOihmdW4gcHJvdG9jb2wgLT4gbWF0Y2hlc19tYWdpY19wcmVmaXggfnByb3RvY29sIHQpXG4gIGluXG4gIEJpbl9wcm90LlR5cGVfY2xhc3MuY252X3JlYWRlciBmIGJpbl90LnJlYWRlclxuOztcblxubGV0IG1hZ2ljX251bWJlcl9iaW5fc2l6ZSA9IDVcblxubW9kdWxlIE1hZ2ljX3ByZWZpeF9iaW5fcmVwciA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBiaW5fd3JpdGVdXG5cbiAgKCogVGhlIGJpbiBwcm90IHJlcHJlc2VudGF0aW9uIG9mIGEgcHJvdG9jb2wgdmVyc2lvbiBoZWFkZXIgaXMgdGhlIHN0YW5kYXJkXG4gICAgIHJlcHJlc2VudGF0aW9uIGZvciBhbiBpbnQgbGlzdDpcblxuICAgICB8IG5hdDAgaW5kaWNhdGluZyBzaXplIHwgZWxlbWVudCAwIHwgZWxlbWVudCAxIHwgLi4uXG5cbiAgICAgW2NyZWF0ZV9leG5dIHdpbGwgYWx3YXlzIHB1dCB0aGUga25vd24gcHJvdG9jb2wgbWFnaWMgbnVtYmVyIGFzIFwiZWxlbWVudCAwXCIuXG5cbiAgICAgVGhlIGJpbiBzaXplIG9mIFwibmF0MCBpbmRpY2F0aW5nIHNpemVcIiBhbmQgXCJlbGVtZW50IDBcIiBpcyBmaXhlZCAodGhlcmUgYXJlIGV4cGVjdFxuICAgICB0ZXN0cyB0byBtYWtlIHN1cmUgd2UgbmV2ZXIgY2hhbmdlIHRoZW0pLiAqKVxuICBsZXQgYmluX3NpemUgPVxuICAgIGJpbl9zaXplX3QgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLm1heF9sZW5cbiAgICArIG1hZ2ljX251bWJlcl9iaW5fc2l6ZVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IChfbGlzdF9sZW5ndGggOiBCaW5fcHJvdC5OYXQwLnQpID0gQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiBpblxuICAgIEJpbl9wcm90LlJlYWQuYmluX3JlYWRfaW50IGJ1ZiB+cG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgPVxuICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gSW50Ll9fYmluX3JlYWRfdF9fIH1cbiAgOztcbmVuZFxuXG5sZXQgYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlcyA9XG4gIEJpbl9wcm90LlR5cGVfY2xhc3MuY252X3JlYWRlclxuICAgIChmdW4gbWFnaWNfbnVtYmVyIC0+IChNYXAuZmluZCBLbm93bl9wcm90b2NvbC5ieV9tYWdpY19udW1iZXIpIG1hZ2ljX251bWJlcilcbiAgICBNYWdpY19wcmVmaXhfYmluX3JlcHIuYmluX3JlYWRlcl90XG47O1xuXG5sZXQgYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlc19iaW5fc2l6ZSA9IE1hZ2ljX3ByZWZpeF9iaW5fcmVwci5iaW5fc2l6ZVxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCByYXdfdmVyc2lvbl9saXN0ID0gcmF3X3ZlcnNpb25fbGlzdFxuZW5kXG5cbm1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICBtb2R1bGUgTWFrZV9saXN0X3dpdGhfbWF4X2xlbiA9IExpc3Rfd2l0aF9tYXhfbGVuLk1ha2VcblxuICBsZXQgbWFnaWNfbnVtYmVyX2Jpbl9zaXplID0gbWFnaWNfbnVtYmVyX2Jpbl9zaXplXG4gIGxldCBtYXhfc3VwcG9ydGVkX3ZlcnNpb24gPSBtYXhfc3VwcG9ydGVkX3ZlcnNpb25cbmVuZFxuXG5sZXQldGVzdF91bml0IFwiYmluIHNpemVzIGFyZSBub3QgY2hhbmdlZCBieSBhY2NpZGVudFwiID1cbiAgKCogRW5zdXJlIHRoZSBiaW5fc2l6ZSBvZiBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICAgICBpcyBhbHdheXMgMS4gVGhpcyBtZWFucyB0aGF0IHJlZ2FyZGxlc3Mgb2YgaG93IGxvbmcgdGhlIGxpc3Qgb2YgdmVyc2lvbnMgaW4gdGhlXG4gICAgIHByb3RvY29sIGhlYWRlciBpcywgdGhlIHJlcHJlc2VudGF0aW9uIHdpbGwgYmUgdGhlIHNhbWUgbnVtYmVyIG9mIGJ5dGVzLiBUaGVcbiAgICAgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50IGp1bXBzIHRvIDMgYnl0ZXMgYXQgdGhlIHZhbHVlIDEyOC4gKilcbiAgbGV0IGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSA9XG4gICAgSW50LmJpbl9zaXplX3QgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLm1heF9sZW5cbiAgaW5cbiAgYXNzZXJ0IChib3VuZGVkX2xpc3RfYmluX3NpemUgPSAxKTtcbiAgYXNzZXJ0ICg2ID0gbWFnaWNfbnVtYmVyX2Jpbl9zaXplICsgYm91bmRlZF9saXN0X2Jpbl9zaXplKTtcbiAgYXNzZXJ0IChcbiAgICBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzX2Jpbl9zaXplXG4gICAgPSBtYWdpY19udW1iZXJfYmluX3NpemUgKyBib3VuZGVkX2xpc3RfYmluX3NpemUpXG47O1xuIiwidHlwZSB0ID0gQmluX3Byb3QuTmF0MC50XG5bQEBkZXJpdmluZyBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODk5ZTJmNGEtNDkwYS0xMWU2LWI2OGYtYmJkNjI0NzI1MTZjXCJdXG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICBbJWV4cGVjdCB7fCA1OTVmMmE2MGYxMTgxNmIyOWE3MmRkYWIxNzAwMmI1NiB8fV1cbjs7XG5cbmxldCBiaW5fdCA9IEJpbl9wcm90LlR5cGVfY2xhc3MuYmluX25hdDBcbmxldCBiaW5fc2l6ZV90ID0gQmluX3Byb3QuU2l6ZS5iaW5fc2l6ZV9uYXQwXG5sZXQgYmluX3dyaXRlcl90ID0gQmluX3Byb3QuVHlwZV9jbGFzcy5iaW5fd3JpdGVyX25hdDBcbmxldCBiaW5fd3JpdGVfdCA9IEJpbl9wcm90LldyaXRlLmJpbl93cml0ZV9uYXQwXG5sZXQgYmluX3JlYWRlcl90ID0gQmluX3Byb3QuVHlwZV9jbGFzcy5iaW5fcmVhZGVyX25hdDBcbmxldCBiaW5fcmVhZF90ID0gQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9uYXQwXG5cbmxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmIF92bmF0MCA9XG4gIEJpbl9wcm90LkNvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBvZl9pbnRfZXhuID0gQmluX3Byb3QuTmF0MC5vZl9pbnRcbiIsIm9wZW4gQ29yZVxub3BlbiBQb2x5XG5cbmxldCBvZl93cml0ZXIgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlOyBzaXplIH0gPVxuICBsZXQgd3JpdGUgYnVmIH5wb3MgYSA9XG4gICAgbGV0IGxlbiA9IE5hdDAub2ZfaW50X2V4biAoc2l6ZSBhKSBpblxuICAgIGxldCBwb3MgPSBOYXQwLmJpbl93cml0ZV90IGJ1ZiB+cG9zIGxlbiBpblxuICAgIHdyaXRlIGJ1ZiB+cG9zIGFcbiAgaW5cbiAgbGV0IHNpemUgYSA9XG4gICAgbGV0IGxlbiA9IE5hdDAub2ZfaW50X2V4biAoc2l6ZSBhKSBpblxuICAgIE5hdDAuYmluX3NpemVfdCBsZW4gKyAoKGxlbiA6IEJpbl9wcm90Lk5hdDAudCkgOj4gaW50KVxuICBpblxuICB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfVxuOztcblxubGV0IG9mX3R5cGVfY2xhc3MgKGJpbl9hIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnQpID0gb2Zfd3JpdGVyIGJpbl9hLndyaXRlclxuXG5sZXQldGVzdF9tb2R1bGUgXyA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0IGJpZ3N0cmluZ19iaW5fcHJvdCBzID1cbiAgICAgIGxldCBiaWdzdHJpbmcgPSBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCBCeXRlcy5iaW5fd3JpdGVyX3QgcyBpblxuICAgICAgQmluX3Byb3QuVXRpbHMuYmluX2R1bXAgQmlnc3RyaW5nLlN0YWJsZS5WMS5iaW5fd3JpdGVyX3QgYmlnc3RyaW5nXG4gICAgOztcblxuICAgIGxldCBiaW5fcHJvdF93aXRoX2xlbmd0aCBzID1cbiAgICAgIGxldCB3cml0ZXJfd2l0aF9sZW5ndGggPSBvZl93cml0ZXIgQnl0ZXMuYmluX3dyaXRlcl90IGluXG4gICAgICBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCB3cml0ZXJfd2l0aF9sZW5ndGggc1xuICAgIDs7XG5cbiAgICBsZXQgdGVzdCBsZW4gPVxuICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICBsZXQgYmlnc3RyaW5nX3ZlcnNpb24gPSBiaWdzdHJpbmdfYmluX3Byb3QgcyBpblxuICAgICAgbGV0IHdpdGhfbGVuZ3RoX3ZlcnNpb24gPSBiaW5fcHJvdF93aXRoX2xlbmd0aCBzIGluXG4gICAgICBpZiBCaWdzdHJpbmcudG9fc3RyaW5nIGJpZ3N0cmluZ192ZXJzaW9uIDw+IEJpZ3N0cmluZy50b19zdHJpbmcgd2l0aF9sZW5ndGhfdmVyc2lvblxuICAgICAgdGhlbiBmYWlsd2l0aGYgXCJtaXNtYXRjaCBmb3IgbGVuZ3RoICVkXCIgbGVuICgpXG4gICAgOztcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICBmb3IgbGVuID0gMCB0byBJbnQucG93IDIgMTAgZG9cbiAgICAgICAgdGVzdCBsZW5cbiAgICAgIGRvbmU7XG4gICAgICBmb3IgcG93ID0gMTAgdG8gMjAgZG9cbiAgICAgICAgbGV0IHggPSBJbnQucG93IDIgcG93IGluXG4gICAgICAgIHRlc3QgKHggLSAxKTtcbiAgICAgICAgdGVzdCB4O1xuICAgICAgICB0ZXN0ICh4ICsgMSlcbiAgICAgIGRvbmVcbiAgICA7O1xuICBlbmQpXG47O1xuIiwib3BlbiBDb3JlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyB2ZXJzaW9uIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBlcXVhbCwgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgIFslZXhwZWN0IHt8IDQ1MjFmNDRkYmM2MDk4YzBhZmMyNzcwY2M4NDU1MmIxIHx9XVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoU3RhYmxlLlYxKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTdGFibGUuVjEpXG5cbmxldCBzdW1tYXJpemUgdHMgPVxuICBMaXN0Lm1hcCB0cyB+ZjooZnVuIHsgbmFtZTsgdmVyc2lvbiB9IC0+IG5hbWUsIHZlcnNpb24pXG4gIHw+IFN0cmluZy5NYXAub2ZfYWxpc3RfZm9sZCB+aW5pdDpJbnQuU2V0LmVtcHR5IH5mOkNvcmUuU2V0LmFkZFxuOztcblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBsZXQgZGVzY3JpcHRpb25zID1cbiAgICBbIHsgbmFtZSA9IFwiZm9vXCI7IHZlcnNpb24gPSAxIH1cbiAgICA7IHsgbmFtZSA9IFwiZm9vXCI7IHZlcnNpb24gPSAyIH1cbiAgICA7IHsgbmFtZSA9IFwiYmFyXCI7IHZlcnNpb24gPSA1IH1cbiAgICBdXG4gIGluXG4gIGxldCBzdW1tYXJ5ID0gc3VtbWFyaXplIGRlc2NyaXB0aW9ucyBpblxuICBwcmludF9zIFslc2V4cCAoc3VtbWFyeSA6IEludC5TZXQudCBTdHJpbmcuTWFwLnQpXTtcbiAgWyVleHBlY3Qge3wgKChiYXIgKDUpKSAoZm9vICgxIDIpKSkgfH1dXG47O1xuIiwib3BlbiEgQ29yZVxuXG50eXBlICdhIHQgPVxuICB8IEF1dGhvcml6ZWQgb2YgJ2FcbiAgfCBOb3RfYXV0aG9yaXplZCBvZiBFcnJvci50XG5cbmxldCBiaW5kIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBdXRob3JpemVkIGEgLT4gZiBhXG4gIHwgTm90X2F1dGhvcml6ZWQgXyBhcyB0IC0+IHRcbjs7XG5cbmxldCBiaW5kX2RlZmVycmVkIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBdXRob3JpemVkIGEgLT4gZiBhXG4gIHwgTm90X2F1dGhvcml6ZWQgXyBhcyB0IC0+IEVhZ2VyX2RlZmVycmVkLnJldHVybiB0XG47O1xuXG5sZXQgbWFwX2RlZmVycmVkIHQgfmYgPVxuICBiaW5kX2RlZmVycmVkIHQgfmY6KGZ1biBhIC0+IEVhZ2VyX2RlZmVycmVkLm1hcCAoZiBhKSB+ZjooZnVuIGEgLT4gQXV0aG9yaXplZCBhKSlcbjs7XG5cbmxldCBsaWZ0X2RlZmVycmVkID0gbWFwX2RlZmVycmVkIH5mOkZuLmlkXG4iLCIoKiogQXN5bmNfcnBjIHByb3RvY29sIHR5cGVzLCBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgKilcblxuKCogV0FSTklORzogZG8gbm90IGNoYW5nZSBhbnkgb2YgdGhlc2UgdHlwZXMgd2l0aG91dCBnb29kIHJlYXNvbiAqKVxuXG5vcGVuIEJpbl9wcm90LlN0ZFxub3BlbiBTZXhwbGliLlN0ZFxubW9kdWxlIENvcmVfZm9yX3Rlc3RpbmcgPSBDb3JlXG5tb2R1bGUgUnBjX3RhZyA6IENvcmUuSWRlbnRpZmlhYmxlID0gQ29yZS5TdHJpbmdcbm1vZHVsZSBRdWVyeV9pZCA9IENvcmUuVW5pcXVlX2lkLkludDYzIChzdHJ1Y3QgZW5kKVxuXG5tb2R1bGUgVW51c2VkX3F1ZXJ5X2lkIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgdmFsIHQgOiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUXVlcnlfaWQudCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICBbJWV4cGVjdCB7fCAyYjUyOGY0YjIyZjA4ZTI4ODc2ZmZlMDIzOTMxNWFjMiB8fV1cbiAgOztcblxuICBsZXQgdCA9IFF1ZXJ5X2lkLmNyZWF0ZSAoKVxuZW5kXG5cbm1vZHVsZSBScGNfZXJyb3IgOiBzaWdcbiAgb3BlbiBDb3JlXG5cbiAgdHlwZSB0ID1cbiAgICB8IEJpbl9pb19leG4gb2YgU2V4cC50XG4gICAgfCBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIHwgV3JpdGVfZXJyb3Igb2YgU2V4cC50XG4gICAgfCBVbmNhdWdodF9leG4gb2YgU2V4cC50XG4gICAgfCBVbmltcGxlbWVudGVkX3JwYyBvZiBScGNfdGFnLnQgKiBbIGBWZXJzaW9uIG9mIGludCBdXG4gICAgfCBVbmtub3duX3F1ZXJ5X2lkIG9mIFF1ZXJ5X2lkLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEJpbl9pb19leG4gb2YgQ29yZS5TZXhwLnRcbiAgICAgIHwgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICAgIHwgV3JpdGVfZXJyb3Igb2YgQ29yZS5TZXhwLnRcbiAgICAgIHwgVW5jYXVnaHRfZXhuIG9mIENvcmUuU2V4cC50XG4gICAgICB8IFVuaW1wbGVtZW50ZWRfcnBjIG9mIFJwY190YWcudCAqIFsgYFZlcnNpb24gb2YgQ29yZS5JbnQuU3RhYmxlLlYxLnQgXVxuICAgICAgfCBVbmtub3duX3F1ZXJ5X2lkIG9mIFF1ZXJ5X2lkLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIGNvbXBhcmVdXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzdGFibGVcIiA9XG4gICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICBbJWV4cGVjdCB7fCA4Y2M3NjZiZWZhMmNmNTY1ZWExNDdkOWZjZDVlYWFhYiB8fV1cbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb3JlLkNvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgUnBjX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsIFJwY19lcnJvci50KSBDb3JlLlJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgdF07XG4gICAgWyVleHBlY3Qge3wgNTg3MzRhNjNhNWM4M2MxYjdjYmZjM2ZlZGZhM2FlODIgfH1dXG4gIDs7XG5lbmRcblxubW9kdWxlIEhlYWRlciA9IFByb3RvY29sX3ZlcnNpb25faGVhZGVyXG5cbm1vZHVsZSBRdWVyeV92MSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgeyB0YWcgOiBScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGlkIDogUXVlcnlfaWQudFxuICAgIDsgZGF0YSA6ICdhXG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgWyVleHBlY3Qge3wgYmU1ODg4NjkxZDczNDI3YjNhYzhlYTMwMGMxNjk0MjIgfH1dXG4gIDs7XG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuZW5kXG5cbm1vZHVsZSBRdWVyeSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgeyB0YWcgOiBScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGlkIDogUXVlcnlfaWQudFxuICAgIDsgbWV0YWRhdGEgOiBzdHJpbmcgb3B0aW9uXG4gICAgOyBkYXRhIDogJ2FcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCBlZjcwZWEyZGQwYmI4MTJhNjAxZDI4ODEwZTY2MzdkNCB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG5cbiAgbGV0IHRvX3YxIHsgdGFnOyB2ZXJzaW9uOyBpZDsgbWV0YWRhdGEgPSAoXyA6IHN0cmluZyBvcHRpb24pOyBkYXRhIH0gOiBfIFF1ZXJ5X3YxLnQgPVxuICAgIHsgdGFnOyB2ZXJzaW9uOyBpZDsgZGF0YSB9XG4gIDs7XG5cbiAgbGV0IG9mX3YxID9tZXRhZGF0YSB7IFF1ZXJ5X3YxLnRhZzsgdmVyc2lvbjsgaWQ7IGRhdGEgfSA9XG4gICAgeyB0YWc7IHZlcnNpb247IGlkOyBtZXRhZGF0YTsgZGF0YSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIFJlc3BvbnNlID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB7IGlkIDogUXVlcnlfaWQudFxuICAgIDsgZGF0YSA6ICdhIFJwY19yZXN1bHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCBuZWVkc19sZW5ndGhdO1xuICAgIFslZXhwZWN0IHt8IGEyMmE3NmYxOTJiM2E0ZWMxYzM3MTE3YzZiYjI1MmY1IHx9XVxuICA7O1xuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbmVuZFxuXG5tb2R1bGUgU3RyZWFtX3F1ZXJ5ID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICBbIGBRdWVyeSBvZiAnYVxuICAgIHwgYEFib3J0XG4gICAgXVxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgWyVleHBlY3Qge3wgMmMzNzg2ODc2MTk3MWM3OGNjMzU1ZDQzZjA4NTQ4NjAgfH1dXG4gIDs7XG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuICB0eXBlIG5hdDBfdCA9IE5hdDAudCBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIGJpbl93cml0ZV1cbmVuZFxuXG5tb2R1bGUgU3RyZWFtX2luaXRpYWxfbWVzc2FnZSA9IHN0cnVjdFxuICB0eXBlICgncmVzcG9uc2UsICdlcnJvcikgdCA9XG4gICAgeyB1bnVzZWRfcXVlcnlfaWQgOiBVbnVzZWRfcXVlcnlfaWQudFxuICAgIDsgaW5pdGlhbCA6ICgncmVzcG9uc2UsICdlcnJvcikgQ29yZS5SZXN1bHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogKHVuaXQsIHVuaXQpIHRdO1xuICAgIFslZXhwZWN0IHt8IDQ2ZjIzMWRkYjdmYTU5ZGE5YzI3NzU5ZDUwYWUwMWE5IHx9XVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTdHJlYW1fcmVzcG9uc2VfZGF0YSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgWyBgT2sgb2YgJ2FcbiAgICB8IGBFb2ZcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCBjMWRiY2RjZmUyYjEyZTc5N2VjNjRmMGQ3NGRmMTgxMSB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG4gIHR5cGUgbmF0MF90ID0gTmF0MC50IG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgYmluX3dyaXRlXVxuZW5kXG5cbm1vZHVsZSBNZXNzYWdlID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB8IEhlYXJ0YmVhdFxuICAgIHwgUXVlcnlfdjEgb2YgJ2EgUXVlcnlfdjEubmVlZHNfbGVuZ3RoXG4gICAgfCBSZXNwb25zZSBvZiAnYSBSZXNwb25zZS5uZWVkc19sZW5ndGhcbiAgICB8IFF1ZXJ5IG9mICdhIFF1ZXJ5Lm5lZWRzX2xlbmd0aFxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgWyVleHBlY3Qge3wgZjYwY2UyZDEwNGUyZjBkOTI3MWY2MjJlY2Q5N2NlYTggfH1dXG4gIDs7XG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBzZXhwX29mXVxuICB0eXBlIG5hdDBfdCA9IE5hdDAudCBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIGJpbl93cml0ZV1cbmVuZFxuXG5sZXQldGVzdCBcInYxIG1lc3NhZ2UgY29tcGF0aWJpbGl0eVwiID1cbiAgbGV0IG1vZHVsZSBNZXNzYWdlX3YxID0gc3RydWN0XG4gICAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgICAgfCBIZWFydGJlYXRcbiAgICAgIHwgUXVlcnkgb2YgJ2EgUXVlcnlfdjEubmVlZHNfbGVuZ3RoXG4gICAgICB8IFJlc3BvbnNlIG9mICdhIFJlc3BvbnNlLm5lZWRzX2xlbmd0aFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgICBbJWV4cGVjdCB7fCAxNDk2NWIwZGI5ODQ0ZTZiMzc2MTUxZGQ4OTA4MDhlOCB8fV1cbiAgICA7O1xuICBlbmRcbiAgaW5cbiAgbGV0IHRhZyA9IFJwY190YWcub2Zfc3RyaW5nIFwicnBjXCIgaW5cbiAgbGV0IHF1ZXJ5X2lkID0gUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gIGxldCB2MV9xdWVyeSA9IHsgUXVlcnlfdjEudGFnOyB2ZXJzaW9uID0gMTsgaWQgPSBxdWVyeV9pZDsgZGF0YSA9ICgpIH0gaW5cbiAgbGV0IHJlc3BvbnNlID0geyBSZXNwb25zZS5pZCA9IHF1ZXJ5X2lkOyBkYXRhID0gT2sgKCkgfSBpblxuICBsZXQgdjEgPSBNZXNzYWdlX3YxLlsgSGVhcnRiZWF0OyBRdWVyeSB2MV9xdWVyeTsgUmVzcG9uc2UgcmVzcG9uc2UgXSBpblxuICBsZXQgdjIgPSBNZXNzYWdlLlsgSGVhcnRiZWF0OyBRdWVyeV92MSB2MV9xdWVyeTsgUmVzcG9uc2UgcmVzcG9uc2UgXSBpblxuICBsZXQgdjFfc3RyID1cbiAgICBDb3JlX2Zvcl90ZXN0aW5nLkJpbl9wcm90LldyaXRlci50b19zdHJpbmdcbiAgICAgIFslYmluX3dyaXRlcjogdW5pdCBNZXNzYWdlX3YxLm5lZWRzX2xlbmd0aCBsaXN0XVxuICAgICAgdjFcbiAgaW5cbiAgbGV0IHYyX3N0ciA9XG4gICAgQ29yZV9mb3JfdGVzdGluZy5CaW5fcHJvdC5Xcml0ZXIudG9fc3RyaW5nXG4gICAgICBbJWJpbl93cml0ZXI6IHVuaXQgTWVzc2FnZS5uZWVkc19sZW5ndGggbGlzdF1cbiAgICAgIHYyXG4gIGluXG4gIFN0cmluZy5lcXVhbCB2MV9zdHIgdjJfc3RyXG47O1xuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuISBDb3JlLkNvcmVfc3RhYmxlXG5cbiAgKCogV2UgY2FuJ3QgbWFrZSBbQmluX3Byb3QuU2hhcGUudF0gYmluYWJsZSBkaXJlY3RseSBiZWNhdXNlIHRoYXQgd291bGQgaW50cm9kdWNlIGFcbiAgICAgY2lyY3VsYXIgZGVwZW5kZW5jeSwgc28gd2UgbWFrZSBpdCBbQmluYWJsZS5PZl9zZXhwYWJsZV93aXRoX3V1aWRdIGhlcmUgaW5zdGVhZC4gVGhpc1xuICAgICBhbGxvd3MgdXMgdG8gc2VuZCB0aGUgc2hhcGUgb3ZlciB0aGUgd2lyZSBhcyBwYXJ0IG9mIHRoZVxuICAgICBbVmVyc2lvbmVkX3JwYy5TaGFwZV9tZW51LnRdLiBbQmluX3Byb3QuU2hhcGUuQ2Fub25pY2FsLnRdLCB0aG91Z2ggZXhwb3NlZCBhbmRcbiAgICAgdGhlcmVmb3JlIGJpbmFibGUsIGlzIG5vdCBhIHN1aXRhYmxlIGFsdGVybmF0aXZlIGJlY2F1c2UgaXQgaGFzIGFuIGV4cG9uZW50aWFsXG4gICAgIGV4cGFuc2lvbi4gKilcbiAgbW9kdWxlIFNoYXBlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEJpbl9wcm90LlNoYXBlLlN0YWJsZS5WMVxuXG4gICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiMGFhNTM1NDktYWQ4OC00YjRmLWFiYzctMWY4NDUzZTdhYTExXCJcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQmluYWJsZS5PZl9zZXhwYWJsZS5WMiAoVClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgUnBjIG9mXG4gICAgICAgICAgeyBxdWVyeSA6IFNoYXBlLlYxLnRcbiAgICAgICAgICA7IHJlc3BvbnNlIDogU2hhcGUuVjEudFxuICAgICAgICAgIH1cbiAgICAgIHwgT25lX3dheSBvZiB7IG1zZyA6IFNoYXBlLlYxLnQgfVxuICAgICAgfCBTdHJlYW1pbmdfcnBjIG9mXG4gICAgICAgICAgeyBxdWVyeSA6IFNoYXBlLlYxLnRcbiAgICAgICAgICA7IGluaXRpYWxfcmVzcG9uc2UgOiBTaGFwZS5WMS50XG4gICAgICAgICAgOyB1cGRhdGVfcmVzcG9uc2UgOiBTaGFwZS5WMS50XG4gICAgICAgICAgOyBlcnJvciA6IFNoYXBlLlYxLnRcbiAgICAgICAgICB9XG4gICAgICB8IFVua25vd25cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gIGVuZFxuZW5kXG5cbm9wZW4hIENvcmVcblxubW9kdWxlIFNoYXBlID0gc3RydWN0XG4gIHR5cGUgdCA9IEJpbl9wcm90LlNoYXBlLnRcblxuICAoKiBBbiB1bnN0YWJsZSBzZXhwZXIgdGhhdCdzIHVzZWZ1bCBmb3IgZXhwZWN0IHRlc3RzLCBwcmludGluZyBvdXQgdGhlIHNoYXBlIGRpZ2VzdHNcbiAgICAgaW5zdGVhZCBvZiB0aGUgc2hhcGVzIHRoZW1zZWx2ZXMuICopXG4gIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAoQmluX3Byb3QuU2hhcGUuZXZhbF90b19kaWdlc3Rfc3RyaW5nIHQgOiBzdHJpbmcpXVxuZW5kXG5cbnR5cGUgdCA9IFN0YWJsZS5WMS50ID1cbiAgfCBScGMgb2ZcbiAgICAgIHsgcXVlcnkgOiBTaGFwZS50XG4gICAgICA7IHJlc3BvbnNlIDogU2hhcGUudFxuICAgICAgfVxuICB8IE9uZV93YXkgb2YgeyBtc2cgOiBTaGFwZS50IH1cbiAgfCBTdHJlYW1pbmdfcnBjIG9mXG4gICAgICB7IHF1ZXJ5IDogU2hhcGUudFxuICAgICAgOyBpbml0aWFsX3Jlc3BvbnNlIDogU2hhcGUudFxuICAgICAgOyB1cGRhdGVfcmVzcG9uc2UgOiBTaGFwZS50XG4gICAgICA7IGVycm9yIDogU2hhcGUudFxuICAgICAgfVxuICB8IFVua25vd25cbltAQGRlcml2aW5nIHNleHBfb2ZdXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbnR5cGUgJ2EgbWVzc2FnZV9oYW5kbGVyID0gQmlnc3RyaW5nLnQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+ICdhXG5cbm1vZHVsZSBIYW5kbGVyX3Jlc3VsdCA9IHN0cnVjdFxuICAoKiogUmVzdWx0IG9mIGFuIFtvbl9tZXNzYWdlXSBjYWxsYmFjay4gIFdlIHNwbGl0IHRoZSBbQ29udGludWVdIGFuZCBbV2FpdCBfXSBjYXNlcyB0b1xuICAgICAgbWFrZSBpdCBjbGVhciB0aGF0IFtDb250aW51ZV0gaXMgdGhlIGV4cGVjdGVkIGNhc2UuICBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGJlXG4gICAgICBvcHRpbWl6ZWQgZm9yIHRoaXMgY2FzZS4gKilcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFN0b3Agb2YgJ2FcbiAgICB8IENvbnRpbnVlXG4gICAgfCBXYWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuZW5kXG5cblxubW9kdWxlIHR5cGUgUmVhZGVyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBjbG9zZSA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCBpc19jbG9zZWQgOiB0IC0+IGJvb2xcbiAgdmFsIGJ5dGVzX3JlYWQgOiB0IC0+IEludDYzLnRcblxuICAoKiogU3RhcnQgcmVhZGluZyBpbmNvbWluZyBtZXNzYWdlcyBhbmQgcGFzcyB0aGVtIHRvIFtvbl9tZXNzYWdlXSwgdW50aWwgaXQgcmV0dXJuc1xuICAgICAgW1N0b3AgX10uXG5cbiAgICAgIFtvbl9lbmRfb2ZfYmF0Y2hdIGlzIGNhbGxlZCBhZnRlciBwcm9jZXNzaW5nIGEgYmF0Y2ggb2YgbWVzc2FnZXMsIGJlZm9yZSB3YWl0aW5nIGZvclxuICAgICAgdGhlIGZpbGUgZGVzY3JpcHRvciB0byBiZWNvbWUgcmVhZGFibGUgYWdhaW4uICopXG4gIHZhbCByZWFkX2ZvcmV2ZXJcbiAgICA6ICB0XG4gICAgLT4gb25fbWVzc2FnZTooQmlnc3RyaW5nLnQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+ICdhIEhhbmRsZXJfcmVzdWx0LnQpXG4gICAgLT4gb25fZW5kX29mX2JhdGNoOih1bml0IC0+IHVuaXQpXG4gICAgLT4gKCdhLCBbIGBFb2YgfCBgQ2xvc2VkIF0pIFJlc3VsdC50IERlZmVycmVkLnRcbmVuZFxuXG5tb2R1bGUgU2VuZF9yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSBtZXNzYWdlX3Rvb19iaWcgPVxuICAgIHsgc2l6ZSA6IGludFxuICAgIDsgbWF4X21lc3NhZ2Vfc2l6ZSA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICdhIHQgPVxuICAgIHwgU2VudCBvZiAnYVxuICAgIHwgQ2xvc2VkXG4gICAgfCBNZXNzYWdlX3Rvb19iaWcgb2YgbWVzc2FnZV90b29fYmlnXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgV3JpdGVyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBjbG9zZSA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCBpc19jbG9zZWQgOiB0IC0+IGJvb2xcbiAgdmFsIG1vbml0b3IgOiB0IC0+IE1vbml0b3IudFxuICB2YWwgYnl0ZXNfdG9fd3JpdGUgOiB0IC0+IGludFxuICB2YWwgYnl0ZXNfd3JpdHRlbiA6IHQgLT4gSW50NjMudFxuXG4gICgqKiBCZWNvbWVzIGRldGVybWluZWQgd2hlbiBpdCBpcyBubyBsb25nZXIgcG9zc2libGUgdG8gc2VuZCBtZXNzYWdlIHVzaW5nIHRoaXMgd3JpdGVyLFxuICAgICAgZm9yIGluc3RhbmNlIHdoZW4gdGhlIHdyaXRlciBpcyBjbG9zZWQgb3IgdGhlIGNvbnN1bWVyIGxlYXZlcy5cblxuICAgICAgVGhlIHJlc3VsdCBvZiB0aGlzIGZ1bmN0aW9uIGlzIGNhY2hlZCBieSBbUnBjLlRyYW5zcG9ydF0gKilcbiAgdmFsIHN0b3BwZWQgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBbZmx1c2hlZCB0XSByZXR1cm5zIGEgZGVmZXJyZWQgdGhhdCBtdXN0IGJlY29tZSBkZXRlcm1pbmVkIHdoZW4gYWxsIHByaW9yIHNlbnRcbiAgICAgIG1lc3NhZ2VzIGFyZSBkZWxpdmVyZWQuXG5cbiAgICAgIEl0IG11c3QgYmUgT0sgdG8gY2FsbCBbZmx1c2hlZCB0XSBhZnRlciBbdF0gaGFzIGJlZW4gY2xvc2VkLiAqKVxuICB2YWwgZmx1c2hlZCA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFtyZWFkeV90b193cml0ZSB0XSBiZWNvbWVzIGRldGVybWluZWQgd2hlbiBpdCBpcyBhIGdvb2QgdGltZSB0byBzZW5kIG1lc3NhZ2VzXG4gICAgICBhZ2Fpbi4gQXN5bmMgUlBDIGNhbGxzIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgc2VuZGluZyBhIGJhdGNoIG9mIG1lc3NhZ2VzLCB0byBhdm9pZFxuICAgICAgZmxvb2RpbmcgdGhlIHRyYW5zcG9ydC5cblxuICAgICAgVXNpbmcgW2xldCByZWFkeV90b193cml0ZSA9IGZsdXNoZWRdIGlzIGFuIGFjY2VwdGFibGUgaW1wbGVtZW50YXRpb24uICopXG4gIHZhbCByZWFkeV90b193cml0ZSA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIEFsbCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBzZW5kIGV4YWN0bHkgb25lIG1lc3NhZ2UuICopXG5cbiAgdmFsIHNlbmRfYmluX3Byb3QgOiB0IC0+ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyIC0+ICdhIC0+IHVuaXQgU2VuZF9yZXN1bHQudFxuXG4gIHZhbCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICA6ICB0XG4gICAgLT4gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAtPiAnYVxuICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgIC0+IHBvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdCBTZW5kX3Jlc3VsdC50XG5cbiAgKCoqIFNhbWUgYXMgW3NlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ10gYnV0IHRoZSBiaWdzdHJpbmcgY2FuJ3QgYmUgbW9kaWZpZWQgdW50aWwgdGhlXG4gICAgICByZXR1cm5lZCBkZWZlcnJlZCBiZWNvbWVzIGRldGVybWluZWQuICBUaGlzIGNhbiBiZSB1c2VkIHRvIGF2b2lkIGNvcHlpbmcgdGhlXG4gICAgICBiaWdzdHJpbmcuICopXG4gIHZhbCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbiAgICA6ICB0XG4gICAgLT4gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAtPiAnYVxuICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgIC0+IHBvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdCBEZWZlcnJlZC50IFNlbmRfcmVzdWx0LnRcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG5tb2R1bGUgSGVhZGVyID0gc3RydWN0XG4gIGxldCBsZW5ndGggPSA4XG4gIGxldCB1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zID0gQmlnc3RyaW5nLnVuc2FmZV9nZXRfaW50NjRfbGVfZXhuIGJ1ZiB+cG9zXG5cbiAgbGV0IHVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3MgcGF5bG9hZF9sZW4gPVxuICAgIEJpZ3N0cmluZy51bnNhZmVfc2V0X2ludDY0X2xlIGJ1ZiB+cG9zIHBheWxvYWRfbGVuXG4gIDs7XG5lbmRcblxubW9kdWxlIEhhbmRsZXJfcmVzdWx0ID0gVHJhbnNwb3J0X2ludGYuSGFuZGxlcl9yZXN1bHRcblxubW9kdWxlIFJlYWRlciA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gVHJhbnNwb3J0X2ludGYuUmVhZGVyXG5cbiAgdHlwZSB0ID0gVCA6IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKSAqICdhIC0+IHRcblxuICBsZXQgcGFjayBtIHQgPSBUIChtLCB0KVxuXG4gICgqIFdlIHB1dCB0eXBlIGFubm90YXRpb25zIHRvIGJlIHN1cmUgdGhlIHR5cGUgaXMgbm90IGEgZnVuY3Rpb24gdHlwZSwgaS5lLiB0byBhdm9pZFxuICAgICBjcmVhdGluZyBjbG9zdXJlcyAqKVxuICBsZXQgc2V4cF9vZl90IChUICgobW9kdWxlIE0pLCB0KSkgOiBTZXhwLnQgPSBNLnNleHBfb2ZfdCB0XG4gIGxldCBjbG9zZSAoVCAoKG1vZHVsZSBNKSwgdCkpIDogdW5pdCBEZWZlcnJlZC50ID0gTS5jbG9zZSB0XG4gIGxldCBpc19jbG9zZWQgKFQgKChtb2R1bGUgTSksIHQpKSA6IGJvb2wgPSBNLmlzX2Nsb3NlZCB0XG4gIGxldCBieXRlc19yZWFkIChUICgobW9kdWxlIE0pLCB0KSkgOiBJbnQ2My50ID0gTS5ieXRlc19yZWFkIHRcblxuICBsZXQgcmVhZF9mb3JldmVyIChUICgobW9kdWxlIE0pLCB0KSkgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCA6IF8gRGVmZXJyZWQudCA9XG4gICAgTS5yZWFkX2ZvcmV2ZXIgdCB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoXG4gIDs7XG5cbiAgbGV0IHJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3QgdCAoYmluX3JlYWRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIpID1cbiAgICByZWFkX2ZvcmV2ZXJcbiAgICAgIHRcbiAgICAgIH5vbl9tZXNzYWdlOihmdW4gYnVmIH5wb3MgfmxlbiAtPlxuICAgICAgICBsZXQgcG9zX3JlZiA9IHJlZiBwb3MgaW5cbiAgICAgICAgbGV0IHggPSBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIGlmICFwb3NfcmVmIDw+IHBvcyArIGxlblxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICBcIm1lc3NhZ2UgbGVuZ3RoICglZCkgZGlkIG5vdCBtYXRjaCBleHBlY3RlZCBsZW5ndGggKCVkKVwiXG4gICAgICAgICAgICAoIXBvc19yZWYgLSBwb3MpXG4gICAgICAgICAgICBsZW5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGVsc2UgU3RvcCB4KVxuICAgICAgfm9uX2VuZF9vZl9iYXRjaDppZ25vcmVcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2VuZF9yZXN1bHQgPSBUcmFuc3BvcnRfaW50Zi5TZW5kX3Jlc3VsdFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBUcmFuc3BvcnRfaW50Zi5Xcml0ZXJcblxuICB0eXBlICdhIHdyaXRlciA9XG4gICAgeyBpbXBsIDogKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgOyB0IDogJ2FcbiAgICAoKiBXZSBjYWNoZSB0aGUgcmVzdWx0IG9mIFtzdG9wcGVkXSBiZWNhdXNlIGl0IGlzIG9mdGVuIHRoZSBbRGVmZXJyZWQuYW55XSBvZiBzZXZlcmFsXG4gICAgICAgb3RoZXIgZGVmZXJyZWRzIGFuZCB3ZSB3YW50IFtjYW5fc2VuZF0gdG8gYmUgc2ltcGxlLiAqKVxuICAgIDsgc3RvcHBlZCA6IHVuaXQgRGVmZXJyZWQudFxuICAgIH1cblxuICB0eXBlIHQgPSBUIDogJ2Egd3JpdGVyIC0+IHRcblxuICBsZXQgcGFjayAodHlwZSBhKSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgdCA9XG4gICAgVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBzdG9wcGVkID0gTS5zdG9wcGVkIHQgfVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IFNleHAudCA9IE0uc2V4cF9vZl90IHRcbiAgbGV0IGNsb3NlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiB1bml0IERlZmVycmVkLnQgPSBNLmNsb3NlIHRcbiAgbGV0IGlzX2Nsb3NlZCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogYm9vbCA9IE0uaXNfY2xvc2VkIHRcbiAgbGV0IG1vbml0b3IgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IE1vbml0b3IudCA9IE0ubW9uaXRvciB0XG4gIGxldCBieXRlc190b193cml0ZSAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogaW50ID0gTS5ieXRlc190b193cml0ZSB0XG4gIGxldCBieXRlc193cml0dGVuIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBJbnQ2My50ID0gTS5ieXRlc193cml0dGVuIHRcbiAgbGV0IGZsdXNoZWQgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9IE0uZmx1c2hlZCB0XG5cbiAgbGV0IHJlYWR5X3RvX3dyaXRlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiB1bml0IERlZmVycmVkLnQgPVxuICAgIE0ucmVhZHlfdG9fd3JpdGUgdFxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90IChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgYmluX3dyaXRlciB4IDogXyBTZW5kX3Jlc3VsdC50ID1cbiAgICBNLnNlbmRfYmluX3Byb3QgdCBiaW5fd3JpdGVyIHhcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgICAgIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSlcbiAgICAgICAgYmluX3dyaXRlclxuICAgICAgICB4XG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgOiBfIFNlbmRfcmVzdWx0LnRcbiAgICA9XG4gICAgTS5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG4gICAgICAgIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSlcbiAgICAgICAgYmluX3dyaXRlclxuICAgICAgICB4XG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgOiBfIFNlbmRfcmVzdWx0LnRcbiAgICA9XG4gICAgTS5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmcgdCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgOztcblxuICBsZXQgc3RvcHBlZCAoVCB7IHN0b3BwZWQ7IF8gfSkgPSBzdG9wcGVkXG5cbiAgbGV0IGNhbl9zZW5kIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IHN0b3BwZWQgfSkgPVxuICAgIG5vdCAoTS5pc19jbG9zZWQgdCB8fCBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHN0b3BwZWQpXG4gIDs7XG5cbiAgbGV0IHRyYW5zZmVyIHQgPyhtYXhfbnVtX3ZhbHVlc19wZXJfcmVhZCA9IDFfMDAwKSBwaXBlIGYgPVxuICAgIGxldCBjb25zdW1lciA9XG4gICAgICBQaXBlLmFkZF9jb25zdW1lciBwaXBlIH5kb3duc3RyZWFtX2ZsdXNoZWQ6KGZ1biAoKSAtPlxuICAgICAgICBsZXQlbWFwICgpID0gZmx1c2hlZCB0IGluXG4gICAgICAgIGBPaylcbiAgICBpblxuICAgIGxldCBlbmRfb2ZfcGlwZSA9XG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgICAgIGxldCByZWMgaXRlciAoKSA9XG4gICAgICAgICAgaWYgY2FuX3NlbmQgdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgUGlwZS5yZWFkX25vdycgcGlwZSB+Y29uc3VtZXIgfm1heF9xdWV1ZV9sZW5ndGg6bWF4X251bV92YWx1ZXNfcGVyX3JlYWRcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgYE9rIHEgLT5cbiAgICAgICAgICAgICAgUXVldWUuaXRlciBxIH5mO1xuICAgICAgICAgICAgICBQaXBlLkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW0gY29uc3VtZXI7XG4gICAgICAgICAgICAgIHJlYWR5X3RvX3dyaXRlIHQgPj4+IGl0ZXJcbiAgICAgICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgICAgIFBpcGUudmFsdWVzX2F2YWlsYWJsZSBwaXBlID4+PiBmdW4gKGBPayB8IGBFb2YpIC0+IGl0ZXIgKClcbiAgICAgICAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgaXZhciAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgaXRlciAoKSlcbiAgICBpblxuICAgIGxldCVtYXAgKCkgPSBEZWZlcnJlZC5hbnkgWyBlbmRfb2ZfcGlwZTsgc3RvcHBlZCB0IF0gaW5cbiAgICBQaXBlLmNsb3NlX3JlYWQgcGlwZVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9XG4gIHsgcmVhZGVyIDogUmVhZGVyLnRcbiAgOyB3cml0ZXIgOiBXcml0ZXIudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY2xvc2UgdCA9XG4gIGxldCViaW5kICgpID0gV3JpdGVyLmNsb3NlIHQud3JpdGVyIGluXG4gIFJlYWRlci5jbG9zZSB0LnJlYWRlclxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gUHJvdG9jb2xcblxuKCoqIFRoZSB0eXBlcyBvZiB0aGUgW0ltcGxlbWVudGF0aW9uXSBhbmQgW0ltcGxlbWVudGF0aW9uc10gbW9kdWxlcywgd2hpY2ggaGF2ZVxuICAgIGEgZGVwZW5kZW5jeSBjeWxlOiBbSW1wbGVtZW50YXRpb25dIC0+IFtEaXJlY3Rfc3RyZWFtX3dyaXRlcl0gLT5cbiAgICBbSW1wbGVtZW50YXRpb25zXSAtPiBbSW1wbGVtZW50YXRpb25dLiAqKVxuXG5tb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXJfaWQgPSBVbmlxdWVfaWQuSW50NjMgKClcblxubW9kdWxlIE9uX2V4Y2VwdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgY2FsbGJhY2sgOiAoZXhuIC0+IHVuaXQpIG9wdGlvbiBbQHNleHAub21pdF9uaWxdXG4gICAgOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA6IGJvb2xcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHJlYyBJbXBsZW1lbnRhdGlvbiA6IHNpZ1xuICBtb2R1bGUgRXhwZXJ0IDogc2lnXG4gICAgbW9kdWxlIFJlc3BvbmRlciA6IHNpZ1xuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBxdWVyeV9pZCA6IFF1ZXJ5X2lkLnRcbiAgICAgICAgOyB3cml0ZXIgOiBUcmFuc3BvcnQuV3JpdGVyLnRcbiAgICAgICAgOyBtdXRhYmxlIHJlc3BvbmRlZCA6IGJvb2xcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgdHlwZSBpbXBsZW1lbnRhdGlvbl9yZXN1bHQgPVxuICAgICAgfCBSZXBsaWVkXG4gICAgICB8IERlbGF5ZWRfcmVzcG9uc2Ugb2YgdW5pdCBEZWZlcnJlZC50XG4gIGVuZFxuXG4gIG1vZHVsZSBGIDogc2lnXG4gICAgdHlwZSAoXywgXykgcmVzdWx0X21vZGUgPVxuICAgICAgfCBCbG9ja2luZyA6ICgnYSwgJ2EgT3Jfbm90X2F1dGhvcml6ZWQudCkgcmVzdWx0X21vZGVcbiAgICAgIHwgRGVmZXJyZWQgOiAoJ2EsICdhIE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudCkgcmVzdWx0X21vZGVcblxuICAgIHR5cGUgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbCA9XG4gICAgICB8IFBpcGUgb2ZcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAgIC0+ICgnaW5pdCAqICd1cGRhdGUgUGlwZS5SZWFkZXIudCwgJ2luaXQpIFJlc3VsdC50IE9yX25vdF9hdXRob3JpemVkLnRcbiAgICAgICAgICAgICAgICBEZWZlcnJlZC50KVxuICAgICAgfCBEaXJlY3Qgb2ZcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAgIC0+ICd1cGRhdGUgRGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAtPiAoJ2luaXQsICdpbml0KSBSZXN1bHQudCBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpXG5cbiAgICB0eXBlICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX3JwYyA9XG4gICAgICB7IGJpbl9xdWVyeV9yZWFkZXIgOiAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgIDsgYmluX2luaXRfd3JpdGVyIDogJ2luaXQgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgIDsgYmluX3VwZGF0ZV93cml0ZXIgOiAndXBkYXRlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAoKiAnaW5pdCBjYW4gYmUgYW4gZXJyb3Igb3IgYW4gaW5pdGlhbCBzdGF0ZSAqKVxuICAgICAgOyBpbXBsIDogKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbFxuICAgICAgfVxuXG4gICAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgICAgIHwgT25lX3dheSA6XG4gICAgICAgICAgJ21zZyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdtc2cgLT4gdW5pdCBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBPbmVfd2F5X2V4cGVydCA6XG4gICAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAgICAtPiB1bml0IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IFJwYyA6XG4gICAgICAgICAgJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICAgKiAncmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICAgICAqICgnY29ubmVjdGlvbl9zdGF0ZSAtPiAncXVlcnkgLT4gJ3Jlc3VsdClcbiAgICAgICAgICAqICgncmVzcG9uc2UsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBScGNfZXhwZXJ0IDpcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gRXhwZXJ0LlJlc3BvbmRlci50XG4gICAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAgICAtPiAncmVzdWx0KVxuICAgICAgICAgICogKEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBTdHJlYW1pbmdfcnBjIDpcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19ycGNcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gIGVuZFxuXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9XG4gICAgeyB0YWcgOiBScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGYgOiAnY29ubmVjdGlvbl9zdGF0ZSBGLnRcbiAgICA7IHNoYXBlcyA6IFJwY19zaGFwZXMudCBMYXp5LnRcbiAgICA7IG9uX2V4Y2VwdGlvbiA6IE9uX2V4Y2VwdGlvbi50XG4gICAgfVxuZW5kID1cbiAgSW1wbGVtZW50YXRpb25cblxuYW5kIEltcGxlbWVudGF0aW9ucyA6IHNpZ1xuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjID1cbiAgICBbIGBSYWlzZVxuICAgIHwgYENvbnRpbnVlXG4gICAgfCBgQ2xvc2VfY29ubmVjdGlvblxuICAgIHwgYENhbGwgb2ZcbiAgICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgLT4gcnBjX3RhZzpzdHJpbmdcbiAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgLT4gWyBgQ2xvc2VfY29ubmVjdGlvbiB8IGBDb250aW51ZSBdXG4gICAgfCBgRXhwZXJ0IG9mXG4gICAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgIC0+IHJwY190YWc6c3RyaW5nXG4gICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgIC0+IEltcGxlbWVudGF0aW9uLkV4cGVydC5SZXNwb25kZXIudFxuICAgICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdCBEZWZlcnJlZC50XG4gICAgXVxuXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9XG4gICAgeyBpbXBsZW1lbnRhdGlvbnMgOiAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbi50IERlc2NyaXB0aW9uLlRhYmxlLnRcbiAgICA7IG9uX3Vua25vd25fcnBjIDogJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNcbiAgICB9XG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSBpbXBsZW1lbnRhdGlvbnMgPSAnY29ubmVjdGlvbl9zdGF0ZSB0XG5cbiAgbW9kdWxlIHJlYyBJbnN0YW5jZSA6IHNpZ1xuICAgIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlID1cbiAgICAgIHwgUGlwZSA6IF8gUGlwZS5SZWFkZXIudCAtPiBzdHJlYW1pbmdfcmVzcG9uc2VcbiAgICAgIHwgRGlyZWN0IDogXyBEaXJlY3Rfc3RyZWFtX3dyaXRlci50IC0+IHN0cmVhbWluZ19yZXNwb25zZVxuXG4gICAgdHlwZSAnYSB1bnBhY2tlZCA9XG4gICAgICB7IGltcGxlbWVudGF0aW9ucyA6ICdhIGltcGxlbWVudGF0aW9uc1xuICAgICAgOyB3cml0ZXIgOiBUcmFuc3BvcnQuV3JpdGVyLnRcbiAgICAgIDsgb3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIDogKFF1ZXJ5X2lkLnQsIHN0cmVhbWluZ19yZXNwb25zZSkgSGFzaHRibC50XG4gICAgICA7IG11dGFibGUgc3RvcHBlZCA6IGJvb2xcbiAgICAgIDsgY29ubmVjdGlvbl9zdGF0ZSA6ICdhXG4gICAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgICAgIDsgY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIDogSW5mby50IERlZmVycmVkLnRcbiAgICAgIDsgbXV0YWJsZVxuICAgICAgICBsYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gOlxuICAgICAgICAgIChEZXNjcmlwdGlvbi50ICogJ2EgSW1wbGVtZW50YXRpb24udCkgb3B0aW9uXG4gICAgICA7IHBhY2tlZF9zZWxmIDogdFxuICAgICAgfVxuXG4gICAgYW5kIHQgPSBUIDogXyB1bnBhY2tlZCAtPiB0XG4gIGVuZFxuZW5kID1cbiAgSW1wbGVtZW50YXRpb25zXG5cbmFuZCBEaXJlY3Rfc3RyZWFtX3dyaXRlciA6IHNpZ1xuICBtb2R1bGUgUGVuZGluZ19yZXNwb25zZSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IE5vcm1hbCBvZiAnYVxuICAgICAgfCBFeHBlcnQgb2Ygc3RyaW5nXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ZSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IE5vdF9zdGFydGVkIG9mICdhIFBlbmRpbmdfcmVzcG9uc2UudCBRdWV1ZS50XG4gICAgICB8IFN0YXJ0ZWRcbiAgZW5kXG5cbiAgbW9kdWxlIElkID0gRGlyZWN0X3N0cmVhbV93cml0ZXJfaWRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgaWQgOiBJZC50XG4gICAgOyBtdXRhYmxlIHN0YXRlIDogJ2EgU3RhdGUudFxuICAgIDsgY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgICA7IGluc3RhbmNlIDogSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnRcbiAgICA7IHF1ZXJ5X2lkIDogUXVlcnlfaWQudFxuICAgIDsgc3RyZWFtX3dyaXRlciA6ICdhIENhY2hlZF9iaW5fd3JpdGVyLnRcbiAgICA7IGdyb3VwcyA6ICdhIGdyb3VwX2VudHJ5IEJhZy50XG4gICAgfVxuXG4gIGFuZCAnYSBncm91cF9lbnRyeSA9XG4gICAgeyBncm91cCA6ICdhIERpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLnRcbiAgICA7IGVsZW1lbnRfaW5fZ3JvdXAgOiAnYSB0IEJhZy5FbHQudFxuICAgIH1cblxuICBtb2R1bGUgR3JvdXAgOiBzaWdcbiAgICB0eXBlICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyID0gJ2EgdFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgKCogW2NvbXBvbmVudHNdIGlzIG9ubHkgdHJhY2tlZCBzZXBhcmF0ZWx5IGZyb20gW2NvbXBvbmVudHNfYnlfaWRdIHNvIHdlIGNhbiBpdGVyYXRlXG4gICAgICAgICAgIG92ZXIgaXRzIGVsZW1lbnRzIG1vcmUgcXVpY2tseSB0aGFuIHdlIGNvdWxkIGl0ZXJhdGUgb3ZlciB0aGUgdmFsdWVzIG9mXG4gICAgICAgICAgIFtjb21wb25lbnRzX2J5X2lkXS4gKilcbiAgICAgICAgbXV0YWJsZSBjb21wb25lbnRzIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLnRcbiAgICAgIDsgY29tcG9uZW50c19ieV9pZCA6ICdhIGNvbXBvbmVudCBJZC5UYWJsZS50XG4gICAgICA7IGJ1ZmZlciA6IEJpZ3N0cmluZy50IHJlZlxuICAgICAgfVxuXG4gICAgYW5kICdhIGNvbXBvbmVudCA9XG4gICAgICB7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLkVsdC50XG4gICAgICA7IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIDogJ2EgZ3JvdXBfZW50cnkgQmFnLkVsdC50XG4gICAgICB9XG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgOj0gJ2EgdFxuZW5kID1cbiAgRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuYW5kIENhY2hlZF9iaW5fd3JpdGVyIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBoZWFkZXJfcHJlZml4IDogc3RyaW5nICgqIEJpbl9wcm90dGVkIGNvbnN0YW50IHByZWZpeCBvZiB0aGUgbWVzc2FnZSAqKVxuICAgIDsgbXV0YWJsZSBkYXRhX2xlbiA6IE5hdDAudFxuICAgIDsgYmluX3dyaXRlciA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgfVxuZW5kID1cbiAgQ2FjaGVkX2Jpbl93cml0ZXJcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxudHlwZSB0ID0gSW1wbGVtZW50YXRpb25fdHlwZXMuT25fZXhjZXB0aW9uLnQgPVxuICB7IGNhbGxiYWNrIDogKGV4biAtPiB1bml0KSBvcHRpb24gW0BzZXhwLm9taXRfbmlsXVxuICA7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlIDogYm9vbFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY2xvc2VfY29ubmVjdGlvbiA9IHsgY2FsbGJhY2sgPSBOb25lOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA9IHRydWUgfVxubGV0IGNvbnRpbnVlID0geyBjYWxsYmFjayA9IE5vbmU7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlID0gZmFsc2UgfVxuXG5sZXQgaGFuZGxlX2V4blxuICAgICAgeyBjYWxsYmFjazsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgfVxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgZXhuXG4gID1cbiAgT3B0aW9uLml0ZXIgY2FsbGJhY2sgfmY6KGZ1biBjYWxsYmFjayAtPiBjYWxsYmFjayBleG4pO1xuICBpZiBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZVxuICB0aGVuIE1vbml0b3Iuc2VuZF9leG4gY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4blxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gUHJvdG9jb2xcbm9wZW4gSW1wbGVtZW50YXRpb25fdHlwZXMuSW1wbGVtZW50YXRpb25cblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBtb2R1bGUgUmVzcG9uZGVyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRXhwZXJ0LlJlc3BvbmRlci50ID1cbiAgICAgIHsgcXVlcnlfaWQgOiBRdWVyeV9pZC50XG4gICAgICA7IHdyaXRlciA6IFRyYW5zcG9ydC5Xcml0ZXIudFxuICAgICAgOyBtdXRhYmxlIHJlc3BvbmRlZCA6IGJvb2xcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGNyZWF0ZSBxdWVyeV9pZCB3cml0ZXIgPSB7IHF1ZXJ5X2lkOyB3cml0ZXI7IHJlc3BvbmRlZCA9IGZhbHNlIH1cbiAgZW5kXG5cbiAgdHlwZSBpbXBsZW1lbnRhdGlvbl9yZXN1bHQgPSBFeHBlcnQuaW1wbGVtZW50YXRpb25fcmVzdWx0ID1cbiAgICB8IFJlcGxpZWRcbiAgICB8IERlbGF5ZWRfcmVzcG9uc2Ugb2YgdW5pdCBEZWZlcnJlZC50XG5lbmRcblxubW9kdWxlIEYgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSByZXN1bHRfbW9kZSA9ICgnYSwgJ2IpIEYucmVzdWx0X21vZGUgPVxuICAgIHwgQmxvY2tpbmcgOiAoJ2EsICdhIE9yX25vdF9hdXRob3JpemVkLnQpIHJlc3VsdF9tb2RlXG4gICAgfCBEZWZlcnJlZCA6ICgnYSwgJ2EgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KSByZXN1bHRfbW9kZVxuXG4gIHR5cGUgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbCA9XG4gICAgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBGLnN0cmVhbWluZ19pbXBsID1cbiAgICB8IFBpcGUgb2ZcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgIC0+ICgnaW5pdCAqICd1cGRhdGUgUGlwZS5SZWFkZXIudCwgJ2luaXQpIFJlc3VsdC50IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICB8IERpcmVjdCBvZlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+ICdxdWVyeVxuICAgICAgICAgLT4gJ3VwZGF0ZSBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAtPiAoJ2luaXQsICdpbml0KSBSZXN1bHQudCBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpXG5cbiAgdHlwZSAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19ycGMgPVxuICAgICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgRi5zdHJlYW1pbmdfcnBjID1cbiAgICB7IGJpbl9xdWVyeV9yZWFkZXIgOiAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICA7IGJpbl9pbml0X3dyaXRlciA6ICdpbml0IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgOyBiaW5fdXBkYXRlX3dyaXRlciA6ICd1cGRhdGUgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAoKiAnaW5pdCBjYW4gYmUgYW4gZXJyb3Igb3IgYW4gaW5pdGlhbCBzdGF0ZSAqKVxuICAgIDsgaW1wbCA6ICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX2ltcGxcbiAgICB9XG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID0gJ2Nvbm5lY3Rpb25fc3RhdGUgRi50ID1cbiAgICB8IE9uZV93YXkgOlxuICAgICAgICAnbXNnIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdtc2cgLT4gdW5pdCBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IE9uZV93YXlfZXhwZXJ0IDpcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAgLT4gdW5pdCBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFJwYyA6XG4gICAgICAgICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICAgICAqICdyZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAqICgnY29ubmVjdGlvbl9zdGF0ZSAtPiAncXVlcnkgLT4gJ3Jlc3VsdClcbiAgICAgICAgKiAoJ3Jlc3BvbnNlLCAncmVzdWx0KSByZXN1bHRfbW9kZVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgfCBScGNfZXhwZXJ0IDpcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiBFeHBlcnQuUmVzcG9uZGVyLnRcbiAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAtPiAncmVzdWx0KVxuICAgICAgICAqIChFeHBlcnQuaW1wbGVtZW50YXRpb25fcmVzdWx0LCAncmVzdWx0KSByZXN1bHRfbW9kZVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgfCBTdHJlYW1pbmdfcnBjIDpcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfcnBjXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcblxuICBsZXQgc2V4cF9vZl90IF8gPSBmdW5jdGlvblxuICAgIHwgT25lX3dheV9leHBlcnQgXyB8IE9uZV93YXkgXyAtPiBbJW1lc3NhZ2UgXCJvbmUtd2F5XCJdXG4gICAgfCBScGNfZXhwZXJ0IF8gfCBScGMgXyAtPiBbJW1lc3NhZ2UgXCJycGNcIl1cbiAgICB8IFN0cmVhbWluZ19ycGMgXyAtPiBbJW1lc3NhZ2UgXCJzdHJlYW1pbmctcnBjXCJdXG4gIDs7XG5cbiAgbGV0IGxpZnQgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBPbmVfd2F5IChiaW5fbXNnLCBpbXBsKSAtPlxuICAgICAgbGV0IGltcGwgc3RhdGUgc3RyID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHN0cilcbiAgICAgIGluXG4gICAgICBPbmVfd2F5IChiaW5fbXNnLCBpbXBsKVxuICAgIHwgT25lX3dheV9leHBlcnQgaW1wbCAtPlxuICAgICAgT25lX3dheV9leHBlcnRcbiAgICAgICAgKGZ1biBzdGF0ZSBidWYgfnBvcyB+bGVuIC0+XG4gICAgICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmRfZGVmZXJyZWQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSBidWYgfnBvcyB+bGVuKSlcbiAgICB8IFJwYyAoYmluX3F1ZXJ5LCBiaW5fcmVzcG9uc2UsIGltcGwsIEJsb2NraW5nKSAtPlxuICAgICAgbGV0IGltcGwgc3RhdGUgcSA9XG4gICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSBxKVxuICAgICAgaW5cbiAgICAgIFJwYyAoYmluX3F1ZXJ5LCBiaW5fcmVzcG9uc2UsIGltcGwsIEJsb2NraW5nKVxuICAgIHwgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgRGVmZXJyZWQpIC0+XG4gICAgICBsZXQgaW1wbCBzdGF0ZSBxID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHEpXG4gICAgICBpblxuICAgICAgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgRGVmZXJyZWQpXG4gICAgfCBScGNfZXhwZXJ0IChpbXBsLCBCbG9ja2luZykgLT5cbiAgICAgIGxldCBpbXBsIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4pXG4gICAgICBpblxuICAgICAgUnBjX2V4cGVydCAoaW1wbCwgQmxvY2tpbmcpXG4gICAgfCBScGNfZXhwZXJ0IChpbXBsLCBEZWZlcnJlZCkgLT5cbiAgICAgIGxldCBpbXBsIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmRfZGVmZXJyZWQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4pXG4gICAgICBpblxuICAgICAgUnBjX2V4cGVydCAoaW1wbCwgRGVmZXJyZWQpXG4gICAgfCBTdHJlYW1pbmdfcnBjIHsgYmluX3F1ZXJ5X3JlYWRlcjsgYmluX2luaXRfd3JpdGVyOyBiaW5fdXBkYXRlX3dyaXRlcjsgaW1wbCB9IC0+XG4gICAgICBsZXQgaW1wbCA9XG4gICAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgICB8IFBpcGUgaW1wbCAtPlxuICAgICAgICAgIFBpcGVcbiAgICAgICAgICAgIChmdW4gc3RhdGUgcSAtPlxuICAgICAgICAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSBxKSlcbiAgICAgICAgfCBEaXJlY3QgaW1wbCAtPlxuICAgICAgICAgIERpcmVjdFxuICAgICAgICAgICAgKGZ1biBzdGF0ZSBxIHcgLT5cbiAgICAgICAgICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmRfZGVmZXJyZWQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgICAgICAgICBpbXBsIGF1dGhvcml6ZWRfc3RhdGUgcSB3KSlcbiAgICAgIGluXG4gICAgICBTdHJlYW1pbmdfcnBjIHsgYmluX3F1ZXJ5X3JlYWRlcjsgYmluX2luaXRfd3JpdGVyOyBiaW5fdXBkYXRlX3dyaXRlcjsgaW1wbCB9XG4gIDs7XG5cbiAgbGV0IGxpZnRfZGVmZXJyZWQgKHR5cGUgYSBiKSAodCA6IGIgdCkgfihmIDogYSAtPiBiIERlZmVycmVkLnQpIDogYSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE9uZV93YXkgKGJpbl9tc2csIGltcGwpIC0+XG4gICAgICBPbmVfd2F5XG4gICAgICAgICggYmluX21zZ1xuICAgICAgICAsIGZ1biBzdGF0ZSBzdHIgLT4gRWFnZXJfZGVmZXJyZWQuYmluZCAoZiBzdGF0ZSkgfmY6KGZ1biBzdGF0ZSAtPiBpbXBsIHN0YXRlIHN0cilcbiAgICAgICAgKVxuICAgIHwgT25lX3dheV9leHBlcnQgaW1wbCAtPlxuICAgICAgT25lX3dheV9leHBlcnRcbiAgICAgICAgKGZ1biBzdGF0ZSBidWYgfnBvcyB+bGVuIC0+XG4gICAgICAgICAgIEVhZ2VyX2RlZmVycmVkLmJpbmQgKGYgc3RhdGUpIH5mOihmdW4gc3RhdGUgLT4gaW1wbCBzdGF0ZSBidWYgfnBvcyB+bGVuKSlcbiAgICB8IFJwYyAoYmluX3F1ZXJ5LCBiaW5fcmVzcG9uc2UsIGltcGwsIEJsb2NraW5nKSAtPlxuICAgICAgUnBjXG4gICAgICAgICggYmluX3F1ZXJ5XG4gICAgICAgICwgYmluX3Jlc3BvbnNlXG4gICAgICAgICwgKGZ1biBzdGF0ZSBxIC0+XG4gICAgICAgICAgICAgbGV0JW1hcC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgICBpbXBsIHN0YXRlIHEpXG4gICAgICAgICwgRGVmZXJyZWQgKVxuICAgIHwgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgRGVmZXJyZWQpIC0+XG4gICAgICBScGNcbiAgICAgICAgKCBiaW5fcXVlcnlcbiAgICAgICAgLCBiaW5fcmVzcG9uc2VcbiAgICAgICAgLCAoZnVuIHN0YXRlIHEgLT5cbiAgICAgICAgICAgICBsZXQlYmluZC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgICBpbXBsIHN0YXRlIHEpXG4gICAgICAgICwgRGVmZXJyZWQgKVxuICAgIHwgUnBjX2V4cGVydCAoaW1wbCwgRGVmZXJyZWQpIC0+XG4gICAgICBScGNfZXhwZXJ0XG4gICAgICAgICggKGZ1biBzdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4gLT5cbiAgICAgICAgICAgIGxldCViaW5kLkVhZ2VyX2RlZmVycmVkIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgICAgICAgICAgaW1wbCBzdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4pXG4gICAgICAgICwgRGVmZXJyZWQgKVxuICAgIHwgUnBjX2V4cGVydCAoaW1wbCwgQmxvY2tpbmcpIC0+XG4gICAgICBScGNfZXhwZXJ0XG4gICAgICAgICggKGZ1biBzdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4gLT5cbiAgICAgICAgICAgIGxldCVtYXAuRWFnZXJfZGVmZXJyZWQgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgICAgICAgICBpbXBsIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbilcbiAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgfCBTdHJlYW1pbmdfcnBjIHsgYmluX3F1ZXJ5X3JlYWRlcjsgYmluX2luaXRfd3JpdGVyOyBiaW5fdXBkYXRlX3dyaXRlcjsgaW1wbCB9IC0+XG4gICAgICBsZXQgaW1wbCA9XG4gICAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgICB8IFBpcGUgaW1wbCAtPlxuICAgICAgICAgIFBpcGVcbiAgICAgICAgICAgIChmdW4gc3RhdGUgcSAtPlxuICAgICAgICAgICAgICAgbGV0JWJpbmQuRWFnZXJfZGVmZXJyZWQgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgICAgICAgICAgICBpbXBsIHN0YXRlIHEpXG4gICAgICAgIHwgRGlyZWN0IGltcGwgLT5cbiAgICAgICAgICBEaXJlY3RcbiAgICAgICAgICAgIChmdW4gc3RhdGUgcSB3IC0+XG4gICAgICAgICAgICAgICBsZXQlYmluZC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgICAgIGltcGwgc3RhdGUgcSB3KVxuICAgICAgaW5cbiAgICAgIFN0cmVhbWluZ19ycGMgeyBiaW5fcXVlcnlfcmVhZGVyOyBiaW5faW5pdF93cml0ZXI7IGJpbl91cGRhdGVfd3JpdGVyOyBpbXBsIH1cbiAgOztcbmVuZFxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvbi50ID1cbiAgeyB0YWcgOiBScGNfdGFnLnRcbiAgOyB2ZXJzaW9uIDogaW50XG4gIDsgZiA6ICdjb25uZWN0aW9uX3N0YXRlIEYudFxuICA7IHNoYXBlcyA6IFJwY19zaGFwZXMudCBMYXp5LnRcbiAgOyBvbl9leGNlcHRpb24gOiBPbl9leGNlcHRpb24udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IFJwY190YWcudG9fc3RyaW5nIHQudGFnOyB2ZXJzaW9uID0gdC52ZXJzaW9uIH1cbmxldCBzaGFwZXMgdCA9IGZvcmNlIHQuc2hhcGVzXG5cbmxldCBsaWZ0ICh0eXBlIGEgYikgKHQgOiBhIHQpIH4oZiA6IGIgLT4gYSkgOiBiIHQgPVxuICB7IHQgd2l0aCBmID0gRi5saWZ0IHQuZiB+ZjooZnVuIGIgLT4gT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoZiBiKSkgfVxuOztcblxubGV0IHdpdGhfYXV0aG9yaXphdGlvbiB0IH5mID0geyB0IHdpdGggZiA9IEYubGlmdCB0LmYgfmYgfVxubGV0IGxpZnRfZGVmZXJyZWQgdCB+ZiA9IHsgdCB3aXRoIGYgPSBGLmxpZnRfZGVmZXJyZWQgdC5mIH5mIH1cbmxldCB1cGRhdGVfb25fZXhjZXB0aW9uIHQgfmYgPSB7IHQgd2l0aCBvbl9leGNlcHRpb24gPSBmIHQub25fZXhjZXB0aW9uIH1cbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbmluY2x1ZGUgUHJvdG9jb2wuUnBjX2Vycm9yXG5pbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFByb3RvY29sLlJwY19lcnJvcilcblxuZXhjZXB0aW9uIFJwYyBvZiB0ICogSW5mby50IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCByYWlzZSB0IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gPSByYWlzZSAoUnBjICh0LCBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uKSlcblxubGV0IHNleHBfb2ZfdCB0IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBDb25uZWN0aW9uX2Nsb3NlZCAtPlxuICAgIFslc2V4cCBgQ29ubmVjdGlvbl9jbG9zZWQgKGdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiAoKSA6IFNleHAudCldXG4gIHwgQmluX2lvX2V4biBfXG4gIHwgV3JpdGVfZXJyb3IgX1xuICB8IFVuY2F1Z2h0X2V4biBfXG4gIHwgVW5pbXBsZW1lbnRlZF9ycGMgX1xuICB8IFVua25vd25fcXVlcnlfaWQgXyAtPiBzZXhwX29mX3QgdFxuOztcblxuKCogaXQgd291bGQgbWFrZSBzZW5zZSB0byBqdXN0IHRha2UgYSBbQ29ubmVjdGlvbi50XSwgYnV0IHdlIHRha2UgaXRzIHBpZWNlcyBpbnN0ZWFkIHRvXG4gICBhdm9pZCBhIGRlcGVuZGVuY3kgY3ljbGUgKilcbmxldCB0b19lcnJvclxuICAgICAgdFxuICAgICAgfnJwY19kZXNjcmlwdGlvbjp7IERlc2NyaXB0aW9uLm5hbWUgPSBycGNfbmFtZTsgdmVyc2lvbiA9IHJwY192ZXJzaW9uIH1cbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gID1cbiAgbGV0IHJwY19lcnJvciA9XG4gICAgc2V4cF9vZl90IHQgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbjooZnVuICgpIC0+XG4gICAgICBsZXQgY2xvc2VfcmVhc29uID1cbiAgICAgICAgKCogVXN1YWxseSAoYWx3YXlzPykgaGVyZSB3ZSB3aWxsIGhhdmUgdGhlIGRlZmVycmVkIGFscmVhZHkgZnVsbFxuICAgICAgICAgICBiZWNhdXNlIENvbm5lY3Rpb25fY2xvc2VkIGVycm9yIG1lYW5zIHRoZSBjb25uZWN0aW9uIGlzIGFscmVhZHlcbiAgICAgICAgICAgY2xvc2VkICopXG4gICAgICAgIERlZmVycmVkLnBlZWsgY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgICBpblxuICAgICAgWyVzZXhwIChjbG9zZV9yZWFzb24gOiBJbmZvLnQgb3B0aW9uKV0pXG4gIGluXG4gIEVycm9yLmNyZWF0ZV9zXG4gICAgWyVzZXhwXG4gICAgICB7IHJwY19lcnJvciA6IFNleHAudFxuICAgICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uIDogSW5mby50XG4gICAgICA7IHJwY19uYW1lIDogc3RyaW5nXG4gICAgICA7IHJwY192ZXJzaW9uIDogaW50XG4gICAgICB9XVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxuXG50eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGxvY2FsX3N0b3JhZ2Vfa2V5ID1cbiAgVW5pdl9tYXAuS2V5LmNyZWF0ZSB+bmFtZTpcImFzeW5jX3JwY19rZXJuZWxfbWV0YWRhdGFcIiBbJXNleHBfb2Y6IHRdXG47O1xuXG5sZXQgZ2V0ICgpID0gQXN5bmNfa2VybmVsLkFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuZmluZF9sb2NhbCBsb2NhbF9zdG9yYWdlX2tleVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgd2l0aF9tZXRhZGF0YSBtZXRhZGF0YSB+ZiA9XG4gICAgQXN5bmNfa2VybmVsLkFzeW5jX2tlcm5lbF9zY2hlZHVsZXIud2l0aF9sb2NhbCBsb2NhbF9zdG9yYWdlX2tleSBtZXRhZGF0YSB+ZlxuICA7O1xuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbnR5cGUgJ2EgdCA9ICgnYSwgUnBjX2Vycm9yLnQpIFJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCB0XTtcbiAgWyVleHBlY3Qge3wgNTg3MzRhNjNhNWM4M2MxYjdjYmZjM2ZlZGZhM2FlODIgfH1dXG47O1xuXG50eXBlIGxvY2F0ZWRfZXJyb3IgPVxuICB7IGxvY2F0aW9uIDogc3RyaW5nXG4gIDsgZXhuIDogRXhuLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IHVuY2F1Z2h0X2V4biB+bG9jYXRpb24gZXhuID1cbiAgRXJyb3IgKFJwY19lcnJvci5VbmNhdWdodF9leG4gKHNleHBfb2ZfbG9jYXRlZF9lcnJvciB7IGxvY2F0aW9uOyBleG4gfSkpXG47O1xuXG5sZXQgYmluX2lvX2V4biB+bG9jYXRpb24gZXhuID1cbiAgRXJyb3IgKFJwY19lcnJvci5CaW5faW9fZXhuIChzZXhwX29mX2xvY2F0ZWRfZXJyb3IgeyBsb2NhdGlvbjsgZXhuIH0pKVxuOztcblxubGV0IHRyeV93aXRoID9vbl9iYWNrZ3JvdW5kX2V4Y2VwdGlvbiA/cnVuIH5sb2NhdGlvbiBmID1cbiAgbGV0IHggPVxuICAgIGxldCByZXN0ID1cbiAgICAgIG1hdGNoIG9uX2JhY2tncm91bmRfZXhjZXB0aW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBgTG9nXG4gICAgICB8IFNvbWUgY2FsbGJhY2sgLT4gYENhbGwgY2FsbGJhY2tcbiAgICBpblxuICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgIH5yZXN0XG4gICAgICB+cnVuOihPcHRpb24udmFsdWUgcnVuIH5kZWZhdWx0OmBTY2hlZHVsZSlcbiAgICAgIGZcbiAgaW5cbiAgbGV0IGpvaW4gPSBmdW5jdGlvblxuICAgIHwgT2sgeCAtPiB4XG4gICAgfCBFcnJvciBleG4gLT4gdW5jYXVnaHRfZXhuIH5sb2NhdGlvbiBleG5cbiAgaW5cbiAgbWF0Y2ggRGVmZXJyZWQucGVlayB4IHdpdGhcbiAgfCBOb25lIC0+IHggPj58IGpvaW5cbiAgfCBTb21lIHggLT4gcmV0dXJuIChqb2luIHgpXG47O1xuXG5sZXQgb3JfZXJyb3IgfnJwY19kZXNjcmlwdGlvbiB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbiB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkID1cbiAgUmVzdWx0Lm1hcF9lcnJvclxuICAgIH5mOlxuICAgICAgKFJwY19lcnJvci50b19lcnJvclxuICAgICAgICAgfnJwY19kZXNjcmlwdGlvblxuICAgICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQpXG47O1xuIiwib3BlbiBDb3JlXG5cbigqIHV0aWxpdHkgZnVuY3Rpb24gZm9yIGJpbi1pbydpbmcgb3V0IG9mIGEgQmlnc3RyaW5nLnQgKilcbmxldCBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgKGJpbl9yZWFkZXJfdCA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIpXG4gICAgICA/YWRkX2xlblxuICAgICAgYnVmXG4gICAgICB+cG9zX3JlZlxuICAgICAgfihsZW4gOiBOYXQwLnQpXG4gICAgICB+bG9jYXRpb25cbiAgPVxuICB0cnlcbiAgICBsZXQgaW5pdF9wb3MgPSAhcG9zX3JlZiBpblxuICAgIGxldCBkYXRhID0gYmluX3JlYWRlcl90LnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgbGV0IGFkZF9sZW4gPVxuICAgICAgbWF0Y2ggYWRkX2xlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gMFxuICAgICAgfCBTb21lIGFkZF9sZW4gLT4gYWRkX2xlbiBkYXRhXG4gICAgaW5cbiAgICBpZiAhcG9zX3JlZiAtIGluaXRfcG9zICsgYWRkX2xlbiA8PiAobGVuIDo+IGludClcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aGZcbiAgICAgICAgXCJtZXNzYWdlIGxlbmd0aCAoJWQpIGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgbGVuZ3RoICglZClcIlxuICAgICAgICAoIXBvc19yZWYgLSBpbml0X3BvcylcbiAgICAgICAgKGxlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgICAgICgpO1xuICAgIE9rIGRhdGFcbiAgd2l0aFxuICB8IGUgLT4gUnBjX3Jlc3VsdC5iaW5faW9fZXhuIH5sb2NhdGlvbiBlXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIFBvbHlcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFV0aWxcbm9wZW4gSW1wbGVtZW50YXRpb25fdHlwZXMuSW1wbGVtZW50YXRpb25zXG5tb2R1bGUgUCA9IFByb3RvY29sXG5tb2R1bGUgV3JpdGVyID0gVHJhbnNwb3J0LldyaXRlclxuXG4oKiBUaGUgUmVzdWx0IG1vbmFkIGlzIGFsc28gdXNlZC4gKilcbmxldCAoID4+fH4gKSA9IFJlc3VsdC4oID4+fCApXG5cbigqIENvbW11dGUgUmVzdWx0IGFuZCBEZWZlcnJlZC4gKilcbmxldCBkZWZlcl9yZXN1bHQgOiAnYSAnYi4gKCdhIERlZmVycmVkLnQsICdiKSBSZXN1bHQudCAtPiAoJ2EsICdiKSBSZXN1bHQudCBEZWZlcnJlZC50XG4gID0gZnVuY3Rpb25cbiAgICB8IEVycm9yIF8gYXMgZXJyIC0+IHJldHVybiBlcnJcbiAgICB8IE9rIGQgLT5cbiAgICAgIChtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbGV0JW1hcCB4ID0gZCBpblxuICAgICAgICAgT2sgeFxuICAgICAgIHwgU29tZSBkIC0+IHJldHVybiAoT2sgZCkpXG47O1xuXG5tb2R1bGUgUmVzcG9uZGVyID0gSW1wbGVtZW50YXRpb24uRXhwZXJ0LlJlc3BvbmRlclxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjID1cbiAgWyBgUmFpc2VcbiAgfCBgQ29udGludWVcbiAgfCBgQ2xvc2VfY29ubmVjdGlvblxuICB8IGBDYWxsIG9mXG4gICAgICAnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgLT4gcnBjX3RhZzpzdHJpbmdcbiAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAtPiBbIGBDbG9zZV9jb25uZWN0aW9uIHwgYENvbnRpbnVlIF1cbiAgXVxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjX3dpdGhfZXhwZXJ0ID1cbiAgWyAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY1xuICB8IGBFeHBlcnQgb2ZcbiAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgIC0+IFJlc3BvbmRlci50XG4gICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgLT4gcG9zOmludFxuICAgICAgLT4gbGVuOmludFxuICAgICAgLT4gdW5pdCBEZWZlcnJlZC50XG4gIF1cblxudHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID0gJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb25fdHlwZXMuSW1wbGVtZW50YXRpb25zLnQgPVxuICB7IGltcGxlbWVudGF0aW9ucyA6ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uLnQgRGVzY3JpcHRpb24uVGFibGUudFxuICA7IG9uX3Vua25vd25fcnBjIDogJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNfd2l0aF9leHBlcnRcbiAgfVxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIGltcGxlbWVudGF0aW9ucyA9ICdjb25uZWN0aW9uX3N0YXRlIHRcblxubGV0IGRlc2NyaXB0aW9ucyB0ID0gSGFzaHRibC5rZXlzIHQuaW1wbGVtZW50YXRpb25zXG5cbm1vZHVsZSBJbnN0YW5jZSA9IHN0cnVjdFxuICB0eXBlIHN0cmVhbWluZ19yZXNwb25zZSA9IEluc3RhbmNlLnN0cmVhbWluZ19yZXNwb25zZSA9XG4gICAgfCBQaXBlIDogXyBQaXBlLlJlYWRlci50IC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICAgIHwgRGlyZWN0IDpcbiAgICAgICAgKF8gSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXIudFtAc2V4cC5vcGFxdWVdKVxuICAgICAgICAtPiBzdHJlYW1pbmdfcmVzcG9uc2VcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlIHN0cmVhbWluZ19yZXNwb25zZXMgPSAoUC5RdWVyeV9pZC50LCBzdHJlYW1pbmdfcmVzcG9uc2UpIEhhc2h0YmwudFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdW5wYWNrZWQgPSAnYSBJbnN0YW5jZS51bnBhY2tlZCA9XG4gICAgeyBpbXBsZW1lbnRhdGlvbnMgOiAoJ2EgaW1wbGVtZW50YXRpb25zW0BzZXhwLm9wYXF1ZV0pXG4gICAgOyB3cml0ZXIgOiBXcml0ZXIudFxuICAgIDsgb3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIDogc3RyZWFtaW5nX3Jlc3BvbnNlc1xuICAgIDsgbXV0YWJsZSBzdG9wcGVkIDogYm9vbFxuICAgIDsgY29ubmVjdGlvbl9zdGF0ZSA6ICdhXG4gICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uIDogSW5mby50XG4gICAgOyBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgRGVmZXJyZWQudFxuICAgIDsgbXV0YWJsZVxuICAgICAgbGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIDpcbiAgICAgICAgKERlc2NyaXB0aW9uLnQgKiAoJ2EgSW1wbGVtZW50YXRpb24udFtAc2V4cC5vcGFxdWVdKSkgb3B0aW9uXG4gICAgKCogW3BhY2tlZF9zZWxmXSBpcyBoZXJlIHNvIHdlIGNhbiBlc3NlbnRpYWxseSBwYWNrIGFuIHVucGFja2VkIGluc3RhbmNlIHdpdGhvdXQgZG9pbmdcbiAgICAgICBhbnkgYWRkaXRpb25hbCBhbGxvY2F0aW9uLiAqKVxuICAgIDsgcGFja2VkX3NlbGYgOiAodFtAc2V4cC5vcGFxdWVdKVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBhbmQgdCA9IEluc3RhbmNlLnQgPSBUIDogXyB1bnBhY2tlZCAtPiB0XG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IFslc2V4cF9vZjogXyB1bnBhY2tlZF0gdFxuXG4gIGxldCBzZW5kX3dyaXRlX2Vycm9yIHQgaWQgc2V4cCA9XG4gICAgbGV0IGRhdGEgOiBfIFAuTWVzc2FnZS50ID0gUmVzcG9uc2UgeyBpZDsgZGF0YSA9IEVycm9yIChXcml0ZV9lcnJvciBzZXhwKSB9IGluXG4gICAgbWF0Y2ggV3JpdGVyLnNlbmRfYmluX3Byb3QgdC53cml0ZXIgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IGRhdGEgd2l0aFxuICAgIHwgU2VudCAoKSB8IENsb3NlZCAtPiAoKVxuICAgIHwgTWVzc2FnZV90b29fYmlnIF8gYXMgciAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJXNleHBcbiAgICAgICAgICBcIkZhaWxlZCB0byBzZW5kIHdyaXRlIGVycm9yIHRvIGNsaWVudFwiXG4gICAgICAgICwgeyBlcnJvciA9IChzZXhwIDogU2V4cC50KTsgcmVhc29uID0gKHIgOiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50KSB9XVxuICA7O1xuXG4gIGxldCBoYW5kbGVfc2VuZF9yZXN1bHQgdCBpZCAocmVzdWx0IDogXyBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCkgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBTZW50ICgpIC0+ICgpXG4gICAgfCBDbG9zZWQgLT4gKClcbiAgICB8IE1lc3NhZ2VfdG9vX2JpZyBfIGFzIHIgLT5cbiAgICAgIHNlbmRfd3JpdGVfZXJyb3IgdCBpZCAoWyVzZXhwX29mOiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XSByKVxuICA7O1xuXG4gIGxldCB3cml0ZV9tZXNzYWdlIHQgYmluX3dyaXRlciB4IH5pZCA9XG4gICAgaWYgbm90IHQuc3RvcHBlZFxuICAgIHRoZW4gV3JpdGVyLnNlbmRfYmluX3Byb3QgdC53cml0ZXIgYmluX3dyaXRlciB4IHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0IGlkXG4gIDs7XG5cbiAgbGV0IHdyaXRlX21lc3NhZ2VfZXhwZXJ0IHQgYmluX3dyaXRlciB4IH5idWYgfnBvcyB+bGVuIH5pZCA9XG4gICAgaWYgbm90IHQuc3RvcHBlZFxuICAgIHRoZW5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdC53cml0ZXIgYmluX3dyaXRlciB4IH5idWYgfnBvcyB+bGVuXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdCBpZFxuICA7O1xuXG4gIGxldCB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl93cml0ZXJfZGF0YSBkYXRhID1cbiAgICBsZXQgYmluX3dyaXRlciA9XG4gICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uZWVkc19sZW5ndGggKFdyaXRlcl93aXRoX2xlbmd0aC5vZl93cml0ZXIgYmluX3dyaXRlcl9kYXRhKVxuICAgIGluXG4gICAgd3JpdGVfbWVzc2FnZSB0IH5pZCBiaW5fd3JpdGVyIChSZXNwb25zZSB7IGlkOyBkYXRhIH0pXG4gIDs7XG5cbiAgbW9kdWxlIENhY2hlZF9iaW5fd3JpdGVyIDogc2lnXG4gICAgdHlwZSAnYSB0ID0gJ2EgSW1wbGVtZW50YXRpb25fdHlwZXMuQ2FjaGVkX2Jpbl93cml0ZXIudFxuXG4gICAgdmFsIGNyZWF0ZSA6IGlkOlAuUXVlcnlfaWQudCAtPiBiaW5fd3JpdGVyOidhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyIC0+ICdhIHRcbiAgICB2YWwgcHJlcF93cml0ZSA6ICdhIHQgLT4gJ2EgLT4gKCdhIHQgKiAnYSkgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICB2YWwgcHJlcF93cml0ZV9leHBlcnQgOiAnYSB0IC0+IGxlbjppbnQgLT4gJ2EgdCBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIHZhbCBwcmVwX3dyaXRlX3N0cmluZyA6ICdhIHQgLT4gc3RyaW5nIC0+ICgnYSB0ICogc3RyaW5nKSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBJbXBsZW1lbnRhdGlvbl90eXBlcy5DYWNoZWRfYmluX3dyaXRlci50ID1cbiAgICAgIHsgaGVhZGVyX3ByZWZpeCA6IHN0cmluZyAoKiBCaW5fcHJvdHRlZCBjb25zdGFudCBwcmVmaXggb2YgdGhlIG1lc3NhZ2UgKilcbiAgICAgIDsgKCogTGVuZ3RoIG9mIHRoZSB1c2VyIGRhdGEgcGFydC4gV2Ugc2V0IHRoaXMgZmllbGQgd2hlbiBzZW5kaW5nIGEgbWVzc2FnZS4gVGhpc1xuICAgICAgICAgICByZWxpZXMgb24gdGhlIGZhY3QgdGhhdCB0aGUgbWVzc2FnZSBpcyBzZXJpYWxpemVkIGltbWVkaWF0ZWx5ICh3aGljaCBpcyB0aGVcbiAgICAgICAgICAgb25seSBhY2NlcHRhYmxlIHNlbWFudGljcyBmb3IgdGhlIHRyYW5zcG9ydCBsYXllciBhbnl3YXksIGFzIGl0IGRvZXNuJ3Qga25vdyBpZlxuICAgICAgICAgICB0aGUgdmFsdWUgaXMgbXV0YWJsZSBvciBub3QpLlxuXG4gICAgICAgICAgIFtkYXRhX2xlbl0gaXMgcGFzc2VkIHRvIGJpbi1wcm90IHdyaXRlcnMgYnkgbXV0YXRpbmcgW2RhdGFfbGVuXSBpbnN0ZWFkIG9mIGJ5XG4gICAgICAgICAgIHBhc3NpbmcgYW4gYWRkaXRpb25hbCBhcmd1bWVudCB0byBhdm9pZCBzb21lIGFsbG9jYXRpb24uXG4gICAgICAgICopXG4gICAgICAgIG11dGFibGUgZGF0YV9sZW4gOiBOYXQwLnRcbiAgICAgIDsgYmluX3dyaXRlciA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICB9XG5cblxuICAgIHR5cGUgdm9pZCA9IFZvaWRcblxuICAgIGxldCBiaW5fc2l6ZV92b2lkIFZvaWQgPSAwXG4gICAgbGV0IGJpbl93cml0ZV92b2lkIF9idWYgfnBvcyBWb2lkID0gcG9zXG5cbiAgICB0eXBlIHZvaWRfbWVzc2FnZSA9IHZvaWQgUC5NZXNzYWdlLm5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fd3JpdGVdXG5cbiAgICB0eXBlIHZvaWRfc3RyZWFtX3Jlc3BvbnNlX2RhdGEgPSB2b2lkIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEubmVlZHNfbGVuZ3RoXG4gICAgW0BAZGVyaXZpbmcgYmluX3dyaXRlXVxuXG4gICAgKCogVGhpcyBpcyBub3QgcmUtZW50cmFudCBidXQgQXN5bmMgY29kZSBhbHdheXMgcnVucyBvbiBvbmUgdGhyZWFkIGF0IGEgdGltZSAqKVxuICAgIGxldCBidWZmZXIgPSBCaWdzdHJpbmcuY3JlYXRlIDMyXG5cbiAgICBsZXQgY2FjaGVfYmluX3Byb3R0ZWQgKGJpbl93cml0ZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyKSB4ID1cbiAgICAgIGxldCBsZW4gPSBiaW5fd3JpdGVyLndyaXRlIGJ1ZmZlciB+cG9zOjAgeCBpblxuICAgICAgQmlnc3RyaW5nLlRvX3N0cmluZy5zdWIgYnVmZmVyIH5wb3M6MCB+bGVuXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgKHR5cGUgYSkgfmlkIH5iaW5fd3JpdGVyIDogYSB0ID1cbiAgICAgIGxldCBoZWFkZXJfcHJlZml4ID1cbiAgICAgICAgY2FjaGVfYmluX3Byb3R0ZWQgYmluX3dyaXRlcl92b2lkX21lc3NhZ2UgKFJlc3BvbnNlIHsgaWQ7IGRhdGEgPSBPayBWb2lkIH0pXG4gICAgICBpblxuICAgICAgeyBoZWFkZXJfcHJlZml4OyBiaW5fd3JpdGVyOyBkYXRhX2xlbiA9IE5hdDAub2ZfaW50X2V4biAwIH1cbiAgICA7O1xuXG4gICAgKCogVGhpcyBwYXJ0IG9mIHRoZSBtZXNzYWdlIGhlYWRlciBpcyBhIGNvbnN0YW50LCBtYWtlIGl0IGEgbGl0ZXJhbCB0byBtYWtlIHRoZVxuICAgICAgIHdyaXRpbmcgY29kZSBzbGlnaHRseSBmYXN0ZXIuICopXG4gICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9sZW4gPSA0XG4gICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hc19pbnQzMiA9IDB4OGE3OWxcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJzdHJlYW1fcmVzcG9uc2VfKiBjb25zdGFudHMgYXJlIGNvcnJlY3RcIiA9XG4gICAgICBsZXQgbGVuID1cbiAgICAgICAgYmluX3dyaXRlcl92b2lkX3N0cmVhbV9yZXNwb25zZV9kYXRhLndyaXRlXG4gICAgICAgICAgYnVmZmVyXG4gICAgICAgICAgfnBvczowXG4gICAgICAgICAgKGBPayBWb2lkIDogdm9pZF9zdHJlYW1fcmVzcG9uc2VfZGF0YSlcbiAgICAgIGluXG4gICAgICBhc3NlcnQgKGxlbiA9IHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9sZW4pO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgQmlnc3RyaW5nLnVuc2FmZV9nZXRfaW50MzJfdF9sZSBidWZmZXIgfnBvczowXG4gICAgICAgID0gc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2FzX2ludDMyKVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlX3N0cmluZ19ub19sZW5ndGggYnVmIH5wb3Mgc3RyID1cbiAgICAgIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICAgICgqIFZlcnkgbG93LWxldmVsIGJpbl9wcm90IHN0dWZmLi4uICopXG4gICAgICBCaW5fcHJvdC5Db21tb24uYXNzZXJ0X3BvcyBwb3M7XG4gICAgICBsZXQgbmV4dCA9IHBvcyArIHN0cl9sZW4gaW5cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5jaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgQmluX3Byb3QuQ29tbW9uLnVuc2FmZV9ibGl0X3N0cmluZ19idWYgfnNyY19wb3M6MCBzdHIgfmRzdF9wb3M6cG9zIGJ1ZiB+bGVuOnN0cl9sZW47XG4gICAgICBuZXh0XG4gICAgOztcblxuICAgICgqIFRoZSB0d28gZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSB0aGUgMyB2YXJpYW50cyBleHBvc2VkIGJ5IHRoaXMgbW9kdWxlLiBUaGV5XG4gICAgICAgc2VyaWFsaXplIGEgW1Jlc3BvbnNlIHsgaWQ7IGRhdGEgPSBPayAoYE9rIGRhdGFfbGVuKSB9XSB2YWx1ZSwgdGFraW5nIGNhcmUgb2ZcbiAgICAgICB3cml0aW5nIHRoZSBbTmF0MC50XSBsZW5ndGggcHJlZml4IHdoZXJlIGFwcHJvcmlhdGUuXG5cbiAgICAgICBCZWFyIGluIG1pbmQgdGhhdCB0aGVyZSBhcmUgdHdvIGxldmVscyBvZiBsZW5ndGggcHJlZml4ZXMgZm9yIHN0cmVhbSByZXNwb25zZSBkYXRhXG4gICAgICAgbWVzc2FnZTogb25lIGZvciB0aGUgdXNlciBkYXRhICh1bmRlciB0aGUgYE9rLCBiZWZvcmUgdGhlIGFjdHVhbCBkYXRhKSwgYW5kIG9uZSBmb3JcbiAgICAgICB0aGUgcmVzcG9uc2UgZGF0YSAodW5kZXIgdGhlIC5kYXRhIGZpZWxkLCBiZWZvcmUgdGhlIE9rKS4gKilcbiAgICBsZXQgYmluX3NpemVfbmF0MF9oZWFkZXIgeyBoZWFkZXJfcHJlZml4OyBkYXRhX2xlbjsgXyB9ID1cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiA9XG4gICAgICAgIHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9sZW4gKyBOYXQwLmJpbl9zaXplX3QgZGF0YV9sZW5cbiAgICAgIGluXG4gICAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuID1cbiAgICAgICAgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbmF0MF9sZW4gKyAoZGF0YV9sZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgICAgaW5cbiAgICAgIFN0cmluZy5sZW5ndGggaGVhZGVyX3ByZWZpeFxuICAgICAgKyBOYXQwLmJpbl9zaXplX3QgKE5hdDAub2ZfaW50X2V4biBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4pXG4gICAgICArIHN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgYnVmIH5wb3MgeyBoZWFkZXJfcHJlZml4OyBkYXRhX2xlbjsgXyB9ID1cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCBidWYgfnBvcyBoZWFkZXJfcHJlZml4IGluXG4gICAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuID1cbiAgICAgICAgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlblxuICAgICAgICArIE5hdDAuYmluX3NpemVfdCBkYXRhX2xlblxuICAgICAgICArIChkYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgICBpblxuICAgICAgbGV0IHBvcyA9IE5hdDAuYmluX3dyaXRlX3QgYnVmIH5wb3MgKE5hdDAub2ZfaW50X2V4biBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4pIGluXG4gICAgICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5jaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgQmlnc3RyaW5nLnVuc2FmZV9zZXRfaW50MzJfdF9sZSBidWYgfnBvcyBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXNfaW50MzI7XG4gICAgICBOYXQwLmJpbl93cml0ZV90IGJ1ZiB+cG9zOm5leHQgZGF0YV9sZW5cbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZXJfbmF0MF9oZWFkZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID1cbiAgICAgIHsgc2l6ZSA9IGJpbl9zaXplX25hdDBfaGVhZGVyOyB3cml0ZSA9IGJpbl93cml0ZV9uYXQwX2hlYWRlciB9XG4gICAgOztcblxuICAgIGxldCBiaW5fc2l6ZV9tZXNzYWdlICh0LCBfKSA9IGJpbl9zaXplX25hdDBfaGVhZGVyIHQgKyAodC5kYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG5cbiAgICBsZXQgYmluX3dyaXRlX21lc3NhZ2UgYnVmIH5wb3MgKHQsIGRhdGEpID1cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgYnVmIH5wb3MgdCBpblxuICAgICAgdC5iaW5fd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIGRhdGFcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZSA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgICAgeyBzaXplID0gYmluX3NpemVfbWVzc2FnZTsgd3JpdGUgPSBiaW5fd3JpdGVfbWVzc2FnZSB9XG4gICAgOztcblxuICAgIGxldCBiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZyAodCwgXykgPVxuICAgICAgYmluX3NpemVfbmF0MF9oZWFkZXIgdCArICh0LmRhdGFfbGVuIDogTmF0MC50IDo+IGludClcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZV9tZXNzYWdlX2FzX3N0cmluZyBidWYgfnBvcyAodCwgc3RyKSA9XG4gICAgICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDBfaGVhZGVyIGJ1ZiB+cG9zIHQgaW5cbiAgICAgIGJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIGJ1ZiB+cG9zIHN0clxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgICAgeyBzaXplID0gYmluX3NpemVfbWVzc2FnZV9hc19zdHJpbmc7IHdyaXRlID0gYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIH1cbiAgICA7O1xuXG4gICAgbGV0IHByZXBfd3JpdGUgdCBkYXRhID1cbiAgICAgIHQuZGF0YV9sZW4gPC0gTmF0MC5vZl9pbnRfZXhuICh0LmJpbl93cml0ZXIuc2l6ZSBkYXRhKTtcbiAgICAgIGJpbl93cml0ZXJfbWVzc2FnZVxuICAgIDs7XG5cbiAgICBsZXQgcHJlcF93cml0ZV9zdHJpbmcgdCBzdHIgPVxuICAgICAgdC5kYXRhX2xlbiA8LSBOYXQwLm9mX2ludF9leG4gKFN0cmluZy5sZW5ndGggc3RyKTtcbiAgICAgIGJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmdcbiAgICA7O1xuXG4gICAgbGV0IHByZXBfd3JpdGVfZXhwZXJ0IHQgfmxlbiA9XG4gICAgICB0LmRhdGFfbGVuIDwtIE5hdDAub2ZfaW50X2V4biBsZW47XG4gICAgICBiaW5fd3JpdGVyX25hdDBfaGVhZGVyXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuICAgIG1vZHVsZSBTdGF0ZSA9IFQuU3RhdGVcbiAgICBtb2R1bGUgSWQgPSBULklkXG5cbiAgICB0eXBlICdhIHQgPSAnYSBULnQgPVxuICAgICAgeyBpZCA6IElkLnRcbiAgICAgIDsgbXV0YWJsZSBzdGF0ZSA6ICdhIFN0YXRlLnRcbiAgICAgIDsgY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgICAgIDsgaW5zdGFuY2UgOiBJbnN0YW5jZS50XG4gICAgICA7IHF1ZXJ5X2lkIDogUC5RdWVyeV9pZC50XG4gICAgICA7IHN0cmVhbV93cml0ZXIgOiAnYSBDYWNoZWRfYmluX3dyaXRlci50XG4gICAgICA7IGdyb3VwcyA6ICdhIGdyb3VwX2VudHJ5IEJhZy50XG4gICAgICB9XG5cbiAgICBhbmQgJ2EgZ3JvdXBfZW50cnkgPSAnYSBULmdyb3VwX2VudHJ5ID1cbiAgICAgIHsgZ3JvdXAgOiAnYSBULkdyb3VwLnRcbiAgICAgIDsgZWxlbWVudF9pbl9ncm91cCA6ICdhIHQgQmFnLkVsdC50XG4gICAgICB9XG5cbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbiAgICBsZXQgY2xvc2VkIHQgPSBJdmFyLnJlYWQgdC5jbG9zZWRcblxuICAgIGxldCBmbHVzaGVkIHQgPVxuICAgICAgbGV0IChUIGluc3RhbmNlKSA9IHQuaW5zdGFuY2UgaW5cbiAgICAgIFRyYW5zcG9ydC5Xcml0ZXIuZmx1c2hlZCBpbnN0YW5jZS53cml0ZXJcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZXIgdCA9IHQuc3RyZWFtX3dyaXRlci5iaW5fd3JpdGVyXG5cbiAgICBsZXQgd3JpdGVfZW9mIHsgaW5zdGFuY2UgPSBUIGluc3RhbmNlOyBxdWVyeV9pZDsgXyB9ID1cbiAgICAgIHdyaXRlX3Jlc3BvbnNlIGluc3RhbmNlIHF1ZXJ5X2lkIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEuYmluX3dyaXRlcl9uYXQwX3QgKE9rIGBFb2YpXG4gICAgOztcblxuICAgICgqIFt3cml0ZV9tZXNzYWdlX3N0cmluZ10gYW5kIFt3cml0ZV9tZXNzYWdlXSBib3RoIGFsbG9jYXRlIDMgd29yZHMgZm9yIHRoZSB0dXBsZXMuXG4gICAgICAgW3dyaXRlX21lc3NhZ2VfZXhwZXJ0XSBkb2VzIG5vdCBhbGxvY2F0ZS4gKilcblxuICAgIGxldCB3cml0ZV9tZXNzYWdlX3N0cmluZyB0IHggPVxuICAgICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmcgPVxuICAgICAgICBDYWNoZWRfYmluX3dyaXRlci5wcmVwX3dyaXRlX3N0cmluZyB0LnN0cmVhbV93cml0ZXIgeFxuICAgICAgaW5cbiAgICAgIGxldCAoVCBpbnN0YW5jZSkgPSB0Lmluc3RhbmNlIGluXG4gICAgICB3cml0ZV9tZXNzYWdlXG4gICAgICAgIGluc3RhbmNlXG4gICAgICAgIH5pZDp0LnF1ZXJ5X2lkXG4gICAgICAgIGJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmdcbiAgICAgICAgKHQuc3RyZWFtX3dyaXRlciwgeClcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2UgdCB4ID1cbiAgICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2UgPSBDYWNoZWRfYmluX3dyaXRlci5wcmVwX3dyaXRlIHQuc3RyZWFtX3dyaXRlciB4IGluXG4gICAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5pbnN0YW5jZSBpblxuICAgICAgd3JpdGVfbWVzc2FnZSBpbnN0YW5jZSB+aWQ6dC5xdWVyeV9pZCBiaW5fd3JpdGVyX21lc3NhZ2UgKHQuc3RyZWFtX3dyaXRlciwgeClcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2VfZXhwZXJ0IHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZSA9IENhY2hlZF9iaW5fd3JpdGVyLnByZXBfd3JpdGVfZXhwZXJ0IHQuc3RyZWFtX3dyaXRlciB+bGVuIGluXG4gICAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5pbnN0YW5jZSBpblxuICAgICAgd3JpdGVfbWVzc2FnZV9leHBlcnRcbiAgICAgICAgaW5zdGFuY2VcbiAgICAgICAgfmlkOnQucXVlcnlfaWRcbiAgICAgICAgYmluX3dyaXRlcl9tZXNzYWdlXG4gICAgICAgIHQuc3RyZWFtX3dyaXRlclxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2Vfd2l0aG91dF9yZW1vdmluZ19mcm9tX2luc3RhbmNlIHQgPVxuICAgICAgaWYgbm90IChJdmFyLmlzX2Z1bGwgdC5jbG9zZWQpXG4gICAgICB0aGVuIChcbiAgICAgICAgSXZhci5maWxsIHQuY2xvc2VkICgpO1xuICAgICAgICBsZXQgZ3JvdXBzID0gdC5ncm91cHMgaW5cbiAgICAgICAgaWYgbm90IChCYWcuaXNfZW1wdHkgZ3JvdXBzKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQXN5bmNfa2VybmVsX3NjaGVkdWxlci5Qcml2YXRlLlZlcnlfbG93X3ByaW9yaXR5X3dvcmsuZW5xdWV1ZSB+ZjooZnVuICgpIC0+XG4gICAgICAgICAgICBtYXRjaCBCYWcucmVtb3ZlX29uZSBncm91cHMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IEZpbmlzaGVkXG4gICAgICAgICAgICB8IFNvbWUgeyBncm91cDsgZWxlbWVudF9pbl9ncm91cCB9IC0+XG4gICAgICAgICAgICAgIEJhZy5yZW1vdmUgZ3JvdXAuY29tcG9uZW50cyBlbGVtZW50X2luX2dyb3VwO1xuICAgICAgICAgICAgICBIYXNodGJsLnJlbW92ZSBncm91cC5jb21wb25lbnRzX2J5X2lkIHQuaWQ7XG4gICAgICAgICAgICAgIE5vdF9maW5pc2hlZCk7XG4gICAgICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICB8IE5vdF9zdGFydGVkIF8gLT4gKClcbiAgICAgICAgfCBTdGFydGVkIC0+IHdyaXRlX2VvZiB0KVxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2UgKHsgaW5zdGFuY2UgPSBUIGluc3RhbmNlOyBxdWVyeV9pZDsgXyB9IGFzIHQpID1cbiAgICAgIGNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbnN0YW5jZSB0O1xuICAgICAgSGFzaHRibC5yZW1vdmUgaW5zdGFuY2Uub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIHF1ZXJ5X2lkXG4gICAgOztcblxuICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCA9XG4gICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbiAgICAgIHRoZW4gYENsb3NlZFxuICAgICAgZWxzZSAoXG4gICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgIHwgTm90X3N0YXJ0ZWQgcSAtPiBRdWV1ZS5lbnF1ZXVlIHEgKE5vcm1hbCB4KVxuICAgICAgICAgfCBTdGFydGVkIC0+IHdyaXRlX21lc3NhZ2UgdCB4KTtcbiAgICAgICAgYE9rKVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGUgKHsgaW5zdGFuY2UgPSBUIGluc3RhbmNlOyBfIH0gYXMgdCkgeCA9XG4gICAgICBtYXRjaCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCB3aXRoXG4gICAgICB8IGBDbG9zZWQgLT4gYENsb3NlZFxuICAgICAgfCBgT2sgLT4gYEZsdXNoZWQgKFdyaXRlci5mbHVzaGVkIGluc3RhbmNlLndyaXRlcilcbiAgICA7O1xuXG4gICAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxuICAgICAgICB0aGVuIGBDbG9zZWRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICB8IE5vdF9zdGFydGVkIHEgLT5cbiAgICAgICAgICAgICBRdWV1ZS5lbnF1ZXVlIHEgKEV4cGVydCAoQmlnc3RyaW5nLlRvX3N0cmluZy5zdWIgYnVmIH5wb3MgfmxlbikpXG4gICAgICAgICAgIHwgU3RhcnRlZCAtPiB3cml0ZV9tZXNzYWdlX2V4cGVydCB0IH5idWYgfnBvcyB+bGVuKTtcbiAgICAgICAgICBgT2spXG4gICAgICA7O1xuXG4gICAgICBsZXQgd3JpdGUgKHsgaW5zdGFuY2UgPSBUIGluc3RhbmNlOyBfIH0gYXMgdCkgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICBtYXRjaCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW4gd2l0aFxuICAgICAgICB8IGBDbG9zZWQgLT4gYENsb3NlZFxuICAgICAgICB8IGBPayAtPiBgRmx1c2hlZCAoV3JpdGVyLmZsdXNoZWQgaW5zdGFuY2Uud3JpdGVyKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBzdGFydCB0ID1cbiAgICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgfCBTdGFydGVkIC0+IGZhaWx3aXRoIFwiYXR0ZW1wdGVkIHRvIHN0YXJ0IHdyaXRlciB3aGljaCB3YXMgYWxyZWFkeSBzdGFydGVkXCJcbiAgICAgIHwgTm90X3N0YXJ0ZWQgcSAtPlxuICAgICAgICB0LnN0YXRlIDwtIFN0YXJ0ZWQ7XG4gICAgICAgIFF1ZXVlLml0ZXIgcSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vcm1hbCB4IC0+IHdyaXRlX21lc3NhZ2UgdCB4XG4gICAgICAgICAgfCBFeHBlcnQgeCAtPiB3cml0ZV9tZXNzYWdlX3N0cmluZyB0IHgpO1xuICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZWQgdGhlbiB3cml0ZV9lb2YgdFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb25cbiAgICAgICAgKHJlc3VsdCA6IChfLCBScGNfZXJyb3IudCkgUmVzdWx0LnQpXG4gICAgICAgIG9uX2V4Y2VwdGlvblxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBFcnJvciAoVW5jYXVnaHRfZXhuIHNleHApIC0+XG4gICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciAoRXhuLmNyZWF0ZV9zIHNleHApXG4gICAgfCBFcnJvciBfIHwgT2sgXyAtPiAoKVxuICA7O1xuXG4gIGxldCBhdXRob3JpemF0aW9uX2ZhaWx1cmVfcmVzdWx0IGVycm9yIH5ycGNfa2luZCA9XG4gICAgbGV0IGV4biA9IEVycm9yLnRvX2V4biBlcnJvciBpblxuICAgIFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICBleG5cbiAgICAgIH5sb2NhdGlvbjpbJXN0cmluZyBcInNlcnZlci1zaWRlICV7cnBjX2tpbmR9IGF1dGhvcml6YXRpb25cIl1cbiAgOztcblxuICBsZXQgYXBwbHlfc3RyZWFtaW5nX2ltcGxlbWVudGF0aW9uXG4gICAgICAgIHRcbiAgICAgICAgeyBJbXBsZW1lbnRhdGlvbi5GLmJpbl9xdWVyeV9yZWFkZXI7IGJpbl9pbml0X3dyaXRlcjsgYmluX3VwZGF0ZV93cml0ZXI7IGltcGwgfVxuICAgICAgICB+bGVuXG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+aWRcbiAgICAgICAgfihvbl9leGNlcHRpb24gOiBPbl9leGNlcHRpb24udClcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgID1cbiAgICBsZXQgZGF0YSA9XG4gICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICBiaW5fcXVlcnlfcmVhZGVyXG4gICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmxlblxuICAgICAgICB+bG9jYXRpb246XCJzdHJlYW1pbmdfcnBjIHNlcnZlci1zaWRlIHF1ZXJ5IHVuLWJpbi1pbydpbmdcIlxuICAgIGluXG4gICAgbGV0IChUIGluc3RhbmNlKSA9IHQucGFja2VkX3NlbGYgaW5cbiAgICBsZXQgc3RyZWFtX3dyaXRlciA9IENhY2hlZF9iaW5fd3JpdGVyLmNyZWF0ZSB+aWQgfmJpbl93cml0ZXI6YmluX3VwZGF0ZV93cml0ZXIgaW5cbiAgICBsZXQgaW1wbF93aXRoX3N0YXRlID1cbiAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgfCBQaXBlIGYgLT4gYFBpcGUgZlxuICAgICAgfCBEaXJlY3QgZiAtPlxuICAgICAgICBsZXQgd3JpdGVyIDogXyBEaXJlY3Rfc3RyZWFtX3dyaXRlci50ID1cbiAgICAgICAgICB7IGlkID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuSWQuY3JlYXRlICgpXG4gICAgICAgICAgOyBzdGF0ZSA9IE5vdF9zdGFydGVkIChRdWV1ZS5jcmVhdGUgKCkpXG4gICAgICAgICAgOyBjbG9zZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICAgIDsgaW5zdGFuY2UgPSB0LnBhY2tlZF9zZWxmXG4gICAgICAgICAgOyBxdWVyeV9pZCA9IGlkXG4gICAgICAgICAgOyBncm91cHMgPSBCYWcuY3JlYXRlICgpXG4gICAgICAgICAgOyBzdHJlYW1fd3JpdGVyXG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBIYXNodGJsLnNldCB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+a2V5OmlkIH5kYXRhOihEaXJlY3Qgd3JpdGVyKTtcbiAgICAgICAgYERpcmVjdCAoZiwgd3JpdGVyKVxuICAgIGluXG4gICAgbGV0IHJ1bl9pbXBsIGltcGwgc3BsaXRfb2sgaGFuZGxlX29rID1cbiAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICBScGNfcmVzdWx0LnRyeV93aXRoXG4gICAgICAgICAgP29uX2JhY2tncm91bmRfZXhjZXB0aW9uOm9uX2V4Y2VwdGlvbi5jYWxsYmFja1xuICAgICAgICAgIChmdW4gKCkgLT4gZGVmZXJfcmVzdWx0IChkYXRhID4+fH4gaW1wbCkpXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcGlwZV9ycGMgY29tcHV0YXRpb25cIlxuICAgICAgaW5cbiAgICAgIEVhZ2VyX2RlZmVycmVkLnVwb24gcmVzdWx0IChmdW5jdGlvblxuICAgICAgICB8IEVycm9yIChScGNfZXJyb3IuVW5jYXVnaHRfZXhuIHNleHAgYXMgZXJyKSAtPlxuICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChFcnJvciBlcnIpO1xuICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuXG4gICAgICAgICAgICBvbl9leGNlcHRpb25cbiAgICAgICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgICAgIChFeG4uY3JlYXRlX3Mgc2V4cClcbiAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZDtcbiAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9pbml0X3dyaXRlciAoRXJyb3IgZXJyKVxuICAgICAgICB8IE9rIChPcl9ub3RfYXV0aG9yaXplZC5Ob3RfYXV0aG9yaXplZCBlcnJvcikgLT5cbiAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZDtcbiAgICAgICAgICB3cml0ZV9yZXNwb25zZVxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgaWRcbiAgICAgICAgICAgIGJpbl9pbml0X3dyaXRlclxuICAgICAgICAgICAgKGF1dGhvcml6YXRpb25fZmFpbHVyZV9yZXN1bHQgZXJyb3IgfnJwY19raW5kOlwicGlwZV9ycGNcIilcbiAgICAgICAgfCBPayAoQXV0aG9yaXplZCAoRXJyb3IgZXJyb3IpKSAtPlxuICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChPayBlcnJvcilcbiAgICAgICAgfCBPayAoQXV0aG9yaXplZCAoT2sgb2spKSAtPlxuICAgICAgICAgIGxldCBpbml0aWFsLCByZXN0ID0gc3BsaXRfb2sgb2sgaW5cbiAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9pbml0X3dyaXRlciAoT2sgaW5pdGlhbCk7XG4gICAgICAgICAgaGFuZGxlX29rIHJlc3QpXG4gICAgaW5cbiAgICBtYXRjaCBpbXBsX3dpdGhfc3RhdGUgd2l0aFxuICAgIHwgYFBpcGUgZiAtPlxuICAgICAgcnVuX2ltcGxcbiAgICAgICAgKGZ1biBkYXRhIC0+IGYgdC5jb25uZWN0aW9uX3N0YXRlIGRhdGEpXG4gICAgICAgIEZuLmlkXG4gICAgICAgIChmdW4gcGlwZV9yIC0+XG4gICAgICAgICAgIEhhc2h0Ymwuc2V0IHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5rZXk6aWQgfmRhdGE6KFBpcGUgcGlwZV9yKTtcbiAgICAgICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgICAgICAoV3JpdGVyLnRyYW5zZmVyIHQud3JpdGVyIHBpcGVfciAoZnVuIGRhdGEgLT5cbiAgICAgICAgICAgICAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlID0gQ2FjaGVkX2Jpbl93cml0ZXIucHJlcF93cml0ZSBzdHJlYW1fd3JpdGVyIGRhdGEgaW5cbiAgICAgICAgICAgICAgICB3cml0ZV9tZXNzYWdlIGluc3RhbmNlIH5pZCBiaW5fd3JpdGVyX21lc3NhZ2UgKHN0cmVhbV93cml0ZXIsIGRhdGEpKSk7XG4gICAgICAgICAgIFBpcGUuY2xvc2VkIHBpcGVfclxuICAgICAgICAgICA+Pj4gZnVuICgpIC0+XG4gICAgICAgICAgIFBpcGUudXBzdHJlYW1fZmx1c2hlZCBwaXBlX3JcbiAgICAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgYE9rIHwgYFJlYWRlcl9jbG9zZWQgLT5cbiAgICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEuYmluX3dyaXRlcl9uYXQwX3QgKE9rIGBFb2YpO1xuICAgICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkKVxuICAgIHwgYERpcmVjdCAoZiwgd3JpdGVyKSAtPlxuICAgICAgcnVuX2ltcGxcbiAgICAgICAgKGZ1biBkYXRhIC0+IGYgdC5jb25uZWN0aW9uX3N0YXRlIGRhdGEgd3JpdGVyKVxuICAgICAgICAoZnVuIHggLT4geCwgKCkpXG4gICAgICAgIChmdW4gKCkgLT4gRGlyZWN0X3N0cmVhbV93cml0ZXIuc3RhcnQgd3JpdGVyKVxuICA7O1xuXG4gIGxldCBhcHBseV9pbXBsZW1lbnRhdGlvbidcbiAgICAgICAgdFxuICAgICAgICBpbXBsZW1lbnRhdGlvblxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgfm9uX2V4Y2VwdGlvblxuICAgIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudFxuICAgID1cbiAgICBsZXQgaWQgPSBxdWVyeS5pZCBpblxuICAgIG1hdGNoIGltcGxlbWVudGF0aW9uIHdpdGhcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuT25lX3dheSAoYmluX3F1ZXJ5X3JlYWRlciwgZikgLT5cbiAgICAgIGxldCBxdWVyeV9jb250ZW50cyA9XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgYmluX3F1ZXJ5X3JlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIG9uZS13YXkgcnBjIG1lc3NhZ2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICBpblxuICAgICAgKG1hdGNoIHF1ZXJ5X2NvbnRlbnRzIHdpdGhcbiAgICAgICB8IEVycm9yIF8gYXMgZXJyIC0+IFN0b3AgZXJyXG4gICAgICAgfCBPayBxIC0+XG4gICAgICAgICAodHJ5XG4gICAgICAgICAgICAoKiBXZSBkb24ndCBjbG9zZSBjb25uZWN0aW9ucyBvbiB1bmF1dGhvcml6ZWQgUlBDcy4gU2luY2UgdGhlcmUgaXMgbm8gd2F5IHRvXG4gICAgICAgICAgICAgICBjb21tdW5pY2F0ZSBmYWlsdXJlIGJhY2sgdG8gdGhlIHNlbmRlciBpbiBvbmUtd2F5IHJwY3MsIHdlIGRvIG5vdGhpbmcuIFRoZVxuICAgICAgICAgICAgICAgZGVmZXJyZWQgKGFuZCBhbnkgZGVmZXJyZWQgZXhjZXB0aW9ucykgYXJlIGRyb3BwZWQgaGVyZSBhcyBhIGNvbnNlcXVlbmNlIG9mXG4gICAgICAgICAgICAgICBbbGlmdF9kZWZlcnJlZF0gZXhpc3RpbmcgZm9yIG9uZS13YXkgcnBjcy4gV2UgdXNlIFtFYWdlcl9kZWZlcnJlZF0gc28gaW5cbiAgICAgICAgICAgICAgIHRoZSBub24tYmxvY2tpbmcgY2FzZXMgdGhpcyB3aWxsIHN0aWxsIHJ1biBzeW5jaHJvbm91c2x5LiAqKVxuICAgICAgICAgICAgbGV0IChfIDogXyBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpID0gZiB0LmNvbm5lY3Rpb25fc3RhdGUgcSBpblxuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgICAgIGlmIG9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBTdG9wXG4gICAgICAgICAgICAgICAgKFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICAgICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgb25lLXdheSBycGMgY29tcHV0YXRpb25cIilcbiAgICAgICAgICAgIGVsc2UgQ29udGludWUpKVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5PbmVfd2F5X2V4cGVydCBmIC0+XG4gICAgICAodHJ5XG4gICAgICAgICBsZXQgbGVuID0gKHF1ZXJ5LmRhdGEgOj4gaW50KSBpblxuICAgICAgICAgbGV0IChfIDogXyBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpID1cbiAgICAgICAgICAgZiB0LmNvbm5lY3Rpb25fc3RhdGUgcmVhZF9idWZmZXIgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZiB+bGVuXG4gICAgICAgICBpblxuICAgICAgICAgcmVhZF9idWZmZXJfcG9zX3JlZiA6PSAhcmVhZF9idWZmZXJfcG9zX3JlZiArIGxlbjtcbiAgICAgICAgIENvbnRpbnVlXG4gICAgICAgd2l0aFxuICAgICAgIHwgZXhuIC0+XG4gICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG47XG4gICAgICAgICBpZiBvbl9leGNlcHRpb24uY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWVcbiAgICAgICAgIHRoZW5cbiAgICAgICAgICAgU3RvcFxuICAgICAgICAgICAgIChScGNfcmVzdWx0LnVuY2F1Z2h0X2V4blxuICAgICAgICAgICAgICAgIGV4blxuICAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIG9uZS13YXkgcnBjIGV4cGVydCBjb21wdXRhdGlvblwiKVxuICAgICAgICAgZWxzZSBDb250aW51ZSlcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuUnBjIChiaW5fcXVlcnlfcmVhZGVyLCBiaW5fcmVzcG9uc2Vfd3JpdGVyLCBmLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIGxldCBxdWVyeV9jb250ZW50cyA9XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgYmluX3F1ZXJ5X3JlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJwYyBxdWVyeSB1bi1iaW4taW8naW5nXCJcbiAgICAgIGluXG4gICAgICBsZXQgb3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCByZXN1bHQgLT4gT2sgcmVzdWx0XG4gICAgICAgIHwgTm90X2F1dGhvcml6ZWQgZXJyb3IgLT4gYXV0aG9yaXphdGlvbl9mYWlsdXJlX3Jlc3VsdCBlcnJvciB+cnBjX2tpbmQ6XCJycGNcIlxuICAgICAgaW5cbiAgICAgIChtYXRjaCByZXN1bHRfbW9kZSB3aXRoXG4gICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkJsb2NraW5nIC0+XG4gICAgICAgICAodHJ5XG4gICAgICAgICAgICBSZXN1bHQuYmluZCBxdWVyeV9jb250ZW50cyB+ZjooZnVuIHF1ZXJ5IC0+XG4gICAgICAgICAgICAgIGYgdC5jb25uZWN0aW9uX3N0YXRlIHF1ZXJ5IHw+IG9yX25vdF9hdXRob3JpemVkX3RvX3JwY19yZXN1bHQpXG4gICAgICAgICAgICB8PiB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXJcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgICgqIEluIHRoZSBbRGVmZXJyZWRdIGJyYW5jaCB3ZSB1c2UgW01vbml0b3IudHJ5X3dpdGhdLCB3aGljaCBpbmNsdWRlc1xuICAgICAgICAgICAgICAgYmFja3RyYWNlcyB3aGVuIGl0IGNhdGNoZXMgYW4gZXhjZXB0aW9uLiBGb3IgY29uc2lzdGVuY3ksIHdlIGFsc28gZ2V0XG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIGhlcmUuICopXG4gICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgICAgICAgbGV0IHNleHAgPVxuICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICB7IGxvY2F0aW9uID0gXCJzZXJ2ZXItc2lkZSBibG9ja2luZyBycGMgY29tcHV0YXRpb25cIlxuICAgICAgICAgICAgICAgIDsgZXhuIDogZXhuXG4gICAgICAgICAgICAgICAgOyBiYWNrdHJhY2UgOiBCYWNrdHJhY2UudFxuICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyIChFcnJvciAoUnBjX2Vycm9yLlVuY2F1Z2h0X2V4biBzZXhwKSk7XG4gICAgICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG4pXG4gICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkRlZmVycmVkIC0+XG4gICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICgqIFdlIGdlbmVyYWxseSB0cnkgdG8gd3JpdGUgYSByZXNwb25zZSBiZWZvcmUgaGFuZGxpbmcgW29uX2V4Y2VwdGlvbl0gc28gaWYgd2VcbiAgICAgICAgICAgICAgYXJlIGNsb3NpbmcgdGhlIGNvbm5lY3Rpb24gd2Ugc3RpbGwgYWN0dWFsbHkgc2VuZCB0aGUgcmVzcG9uc2UgYmFjay4gV2hlbiB3ZVxuICAgICAgICAgICAgICBwYXNzIFtvbl9leGNlcHRpb24uY2FsbGJhY2tdIGhlcmUsIHdlIGFyZSBtYWtpbmcgaXQgcG9zc2libGUgZm9yIHJhaXNlZFxuICAgICAgICAgICAgICBleGNlcHRpb25zIG5vdCB0byBiZSB3cml0dGVuIGJhY2sgdG8gdGhlIGNsaWVudCAoZS5nLiBpZiB0aGUgaW1wbGVtZW50YXRpb25cbiAgICAgICAgICAgICAgcmFpc2VzIGJvdGggYXN5bmNocm9ub3VzbHkgYW5kIHN5bmNocm9ub3VzbHkpLiBUaGlzIHdvdWxkIGJlIGhhcmQgdG8gaGFuZGxlXG4gICAgICAgICAgICAgIGluIGEgbW9yZSBwcmluY2lwbGVkIHdheS4gKilcbiAgICAgICAgICAgUnBjX3Jlc3VsdC50cnlfd2l0aFxuICAgICAgICAgICAgID9vbl9iYWNrZ3JvdW5kX2V4Y2VwdGlvbjpvbl9leGNlcHRpb24uY2FsbGJhY2tcbiAgICAgICAgICAgICB+cnVuOmBOb3dcbiAgICAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBycGMgY29tcHV0YXRpb25cIlxuICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBxdWVyeV9jb250ZW50cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gRGVmZXJyZWQucmV0dXJuIChFcnJvciBlcnIpXG4gICAgICAgICAgICAgICAgfCBPayBxdWVyeSAtPlxuICAgICAgICAgICAgICAgICAgRWFnZXJfZGVmZXJyZWQubWFwXG4gICAgICAgICAgICAgICAgICAgIChmIHQuY29ubmVjdGlvbl9zdGF0ZSBxdWVyeSlcbiAgICAgICAgICAgICAgICAgICAgfmY6b3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsdClcbiAgICAgICAgIGluXG4gICAgICAgICAoKiBJbiB0aGUgY29tbW9uIGNhc2UgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gcmV0dXJucyBhIHZhbHVlIGltbWVkaWF0ZWx5LCB3ZSB3aWxsXG4gICAgICAgICAgICB3cml0ZSB0aGUgcmVzcG9uc2UgaW1tZWRpYXRlbHkgYXMgd2VsbCAodGhpcyBpcyBhbHNvIHdoeSB0aGUgYWJvdmUgW3RyeV93aXRoXVxuICAgICAgICAgICAgaGFzIFt+cnVuOmBOb3ddKS4gIFRoaXMgY2FuIGJlIGEgYmlnIHBlcmZvcm1hbmNlIHdpbiBmb3Igc2VydmVycyB0aGF0IGdldCBtYW55XG4gICAgICAgICAgICBxdWVyaWVzIGluIGEgc2luZ2xlIEFzeW5jIGN5Y2xlLiAqKVxuICAgICAgICAgKG1hdGNoIERlZmVycmVkLnBlZWsgZGF0YSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICA+Pj4gZnVuIGRhdGEgLT5cbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3Jlc3BvbnNlX3dyaXRlciBkYXRhO1xuICAgICAgICAgICAgbWF5YmVfZGlzcGF0Y2hfb25fZXhjZXB0aW9uIGRhdGEgb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyIGRhdGE7XG4gICAgICAgICAgICBtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24gZGF0YSBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvcikpO1xuICAgICAgQ29udGludWVcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuUnBjX2V4cGVydCAoZiwgcmVzdWx0X21vZGUpIC0+XG4gICAgICBsZXQgcmVzcG9uZGVyID0gSW1wbGVtZW50YXRpb24uRXhwZXJ0LlJlc3BvbmRlci5jcmVhdGUgcXVlcnkuaWQgdC53cml0ZXIgaW5cbiAgICAgIGxldCBkID1cbiAgICAgICAgKCogV2UgbmVlZCB0aGUgW01vbml0b3IudHJ5X3dpdGhdIGV2ZW4gZm9yIHRoZSBibG9ja2luZyBtb2RlIGFzIHRoZSBpbXBsZW1lbnRhdGlvblxuICAgICAgICAgICBtaWdodCByZXR1cm4gW0RlbGF5ZWRfcmVwb25zZV0sIHNvIHdlIGRvbid0IGJvdGhlciBvcHRpbWl6aW5nIHRoZSBibG9ja2luZ1xuICAgICAgICAgICBtb2RlLiAqKVxuICAgICAgICBsZXQgcmVzdCA9XG4gICAgICAgICAgbWF0Y2ggb25fZXhjZXB0aW9uLmNhbGxiYWNrIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGBMb2dcbiAgICAgICAgICB8IFNvbWUgY2FsbGJhY2sgLT4gYENhbGwgY2FsbGJhY2tcbiAgICAgICAgaW5cbiAgICAgICAgTW9uaXRvci50cnlfd2l0aCB+cmVzdCB+cnVuOmBOb3cgKGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBsZW4gPSAocXVlcnkuZGF0YSA6PiBpbnQpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICBmIHQuY29ubmVjdGlvbl9zdGF0ZSByZXNwb25kZXIgcmVhZF9idWZmZXIgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZiB+bGVuXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCByZXN1bHRfbW9kZSB3aXRoXG4gICAgICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkRlZmVycmVkIC0+IHJlc3VsdFxuICAgICAgICAgIHwgSW1wbGVtZW50YXRpb24uRi5CbG9ja2luZyAtPiBEZWZlcnJlZC5yZXR1cm4gcmVzdWx0KVxuICAgICAgaW5cbiAgICAgIGxldCBjb21wdXRhdGlvbl9mYWlsdXJlX3Jlc3VsdCBleG4gPVxuICAgICAgICBScGNfcmVzdWx0LnVuY2F1Z2h0X2V4biBleG4gfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcnBjIGV4cGVydCBjb21wdXRhdGlvblwiXG4gICAgICBpblxuICAgICAgbGV0IGhhbmRsZV9leG4gcmVzdWx0ID1cbiAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgaWYgcmVzcG9uZGVyLnJlc3BvbmRlZFxuICAgICAgICAgIHRoZW4gcmVzdWx0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl93cml0ZXJfdW5pdCByZXN1bHQ7XG4gICAgICAgICAgICBPayAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgcmVzdWx0XG4gICAgICBpblxuICAgICAgbGV0IGNoZWNrX3Jlc3BvbmRlZCAoKSA9XG4gICAgICAgIGlmIHJlc3BvbmRlci5yZXNwb25kZWRcbiAgICAgICAgdGhlbiBPayAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaGFuZGxlX2V4blxuICAgICAgICAgICAgKGNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IChGYWlsdXJlIFwiRXhwZXJ0IGltcGxlbWVudGF0aW9uIGRpZCBub3QgcmVwbHlcIikpXG4gICAgICBpblxuICAgICAgbGV0IGQgPVxuICAgICAgICBsZXQgb3BlbiBFYWdlcl9kZWZlcnJlZC5MZXRfc3ludGF4IGluXG4gICAgICAgIG1hdGNoJW1hcCBkIHdpdGhcbiAgICAgICAgfCBPayAoQXV0aG9yaXplZCByZXN1bHQpIC0+XG4gICAgICAgICAgbGV0IGQgPVxuICAgICAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgIHwgUmVwbGllZCAtPiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgICB8IERlbGF5ZWRfcmVzcG9uc2UgZCAtPiBkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGRcbiAgICAgICAgICB0aGVuIGNoZWNrX3Jlc3BvbmRlZCAoKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgdXBvbiBkIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgY2hlY2tfcmVzcG9uZGVkICgpXG4gICAgICAgICAgICAgIHw+IFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgICAgICAgICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS50YWc7IHZlcnNpb24gPSBxdWVyeS52ZXJzaW9uIH1cbiAgICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjp0LmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOnQuY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgIHw+IG9rX2V4bik7XG4gICAgICAgICAgICBPayAoKSlcbiAgICAgICAgfCBPayAoTm90X2F1dGhvcml6ZWQgZXJyb3IpIC0+XG4gICAgICAgICAgaGFuZGxlX2V4biAoYXV0aG9yaXphdGlvbl9mYWlsdXJlX3Jlc3VsdCBlcnJvciB+cnBjX2tpbmQ6XCJycGMgZXhwZXJ0XCIpXG4gICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGhhbmRsZV9leG4gKGNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IGV4bikgaW5cbiAgICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG47XG4gICAgICAgICAgcmVzdWx0XG4gICAgICBpblxuICAgICAgKG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBXYWl0XG4gICAgICAgICAgIChsZXQlbWFwIHIgPSBkIGluXG4gICAgICAgICAgICBva19leG5cbiAgICAgICAgICAgICAgKFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgICAgICAgICAgICAgfnJwY19kZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LnRhZzsgdmVyc2lvbiA9IHF1ZXJ5LnZlcnNpb24gfVxuICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjp0LmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDp0LmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgICAgICAgICByKSlcbiAgICAgICB8IFNvbWUgcmVzdWx0IC0+XG4gICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IENvbnRpbnVlXG4gICAgICAgICAgfCBFcnJvciBfIC0+IFN0b3AgcmVzdWx0KSlcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuU3RyZWFtaW5nX3JwYyBzdHJlYW1pbmdfcnBjIC0+XG4gICAgICBsZXQgc3RyZWFtX3F1ZXJ5ID1cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICBQLlN0cmVhbV9xdWVyeS5iaW5fcmVhZGVyX25hdDBfdFxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHBpcGVfcnBjIHN0cmVhbV9xdWVyeSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICB+YWRkX2xlbjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYEFib3J0IC0+IDBcbiAgICAgICAgICAgIHwgYFF1ZXJ5IChsZW4gOiBOYXQwLnQpIC0+IChsZW4gOj4gaW50KSlcbiAgICAgIGluXG4gICAgICAobWF0Y2ggc3RyZWFtX3F1ZXJ5IHdpdGhcbiAgICAgICB8IEVycm9yIF9lcnIgLT4gKClcbiAgICAgICB8IE9rIGBBYm9ydCAtPlxuICAgICAgICAgKCogTm90ZSB0aGF0IHRoZXJlJ3Mgc29tZSBkZWxheSBiZXR3ZWVuIHdoZW4gd2UgcmVjZWl2ZSBhIHBpcGUgUlBDIHF1ZXJ5IGFuZFxuICAgICAgICAgICAgd2hlbiB3ZSBwdXQgc29tZXRoaW5nIGluIFtvcGVuX3N0cmVhbWluZ19yZXNwb25zZXNdICh3ZSB3YWl0IGZvclxuICAgICAgICAgICAgYSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHRvIHJldHVybikuIER1cmluZyB0aGlzIHRpbWUsIGFuIGFib3J0IG1lc3NhZ2Ugd291bGRcbiAgICAgICAgICAgIGp1c3QgYmUgaWdub3JlZC4gVGhlIGRpc3BhdGNoZXIgY2FuJ3QgYWJvcnQgdGhlIHF1ZXJ5IHdoaWxlIHRoaXMgaXNcbiAgICAgICAgICAgIGhhcHBlbmluZywgdGhvdWdoLCBzaW5jZSB0aGUgaW50ZXJmYWNlIGRvZXNuJ3QgZXhwb3NlIHRoZSBJRCByZXF1aXJlZCB0b1xuICAgICAgICAgICAgYWJvcnQgdGhlIHF1ZXJ5IHVudGlsIGFmdGVyIGEgcmVzcG9uc2UgaGFzIGJlZW4gcmV0dXJuZWQuICopXG4gICAgICAgICBPcHRpb24uaXRlciAoSGFzaHRibC5maW5kIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIHF1ZXJ5LmlkKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgfCBQaXBlIHBpcGUgLT4gUGlwZS5jbG9zZV9yZWFkIHBpcGVcbiAgICAgICAgICAgfCBEaXJlY3QgdyAtPiBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZSB3KVxuICAgICAgIHwgT2sgKGBRdWVyeSBsZW4pIC0+XG4gICAgICAgICBhcHBseV9zdHJlYW1pbmdfaW1wbGVtZW50YXRpb25cbiAgICAgICAgICAgdFxuICAgICAgICAgICBzdHJlYW1pbmdfcnBjXG4gICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgIH5pZFxuICAgICAgICAgICB+b25fZXhjZXB0aW9uXG4gICAgICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IpO1xuICAgICAgQ29udGludWVcbiAgOztcblxuICBsZXQgYXBwbHlfaW1wbGVtZW50YXRpb25cbiAgICAgICAgdFxuICAgICAgICBpbXBsZW1lbnRhdGlvblxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgfm9uX2V4Y2VwdGlvblxuICAgIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudFxuICAgID1cbiAgICBhcHBseV9pbXBsZW1lbnRhdGlvbidcbiAgICAgIHRcbiAgICAgIGltcGxlbWVudGF0aW9uXG4gICAgICB+cXVlcnlcbiAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgIH5vbl9leGNlcHRpb25cbiAgOztcblxuICBsZXQgZmx1c2ggKFQgdCkgPVxuICAgIGFzc2VydCAobm90IHQuc3RvcHBlZCk7XG4gICAgbGV0IHByb2R1Y2Vyc19mbHVzaGVkID1cbiAgICAgIEhhc2h0YmwuZm9sZCB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+aW5pdDpbXSB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBhY2MgLT5cbiAgICAgICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgIHwgRGlyZWN0IF8gLT4gYWNjXG4gICAgICAgIHwgUGlwZSBwaXBlIC0+IERlZmVycmVkLmlnbm9yZV9tIChQaXBlLnVwc3RyZWFtX2ZsdXNoZWQgcGlwZSkgOjogYWNjKVxuICAgIGluXG4gICAgRGVmZXJyZWQuYWxsX3VuaXQgcHJvZHVjZXJzX2ZsdXNoZWRcbiAgOztcblxuICBsZXQgc3RvcCAoVCB0KSA9XG4gICAgdC5zdG9wcGVkIDwtIHRydWU7XG4gICAgSGFzaHRibC5pdGVyIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5mOihmdW5jdGlvblxuICAgICAgfCBEaXJlY3Qgd3JpdGVyIC0+XG4gICAgICAgICgqIERvbid0IHJlbW92ZSB0aGUgd3JpdGVyIGZyb20gdGhlIGluc3RhbmNlLCBhcyB0aGF0IHdvdWxkIG1vZGlmeSB0aGUgaGFzaHRhYmxlXG4gICAgICAgICAgIHRoYXQgd2UgYXJlIGN1cnJlbnRseSBpdGVyYXRpbmcgb3Zlci4gKilcbiAgICAgICAgRGlyZWN0X3N0cmVhbV93cml0ZXIuY2xvc2Vfd2l0aG91dF9yZW1vdmluZ19mcm9tX2luc3RhbmNlIHdyaXRlclxuICAgICAgfCBQaXBlIF8gLT4gKCkpO1xuICAgIEhhc2h0YmwuY2xlYXIgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXNcbiAgOztcblxuICBsZXQgaGFuZGxlX3Vua25vd25fcnBjIG9uX3Vua25vd25fcnBjIGVycm9yIHQgcXVlcnkgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50ID1cbiAgICBtYXRjaCBvbl91bmtub3duX3JwYyB3aXRoXG4gICAgfCBgQ29udGludWUgLT4gQ29udGludWVcbiAgICB8IGBSYWlzZSAtPiBScGNfZXJyb3IucmFpc2UgZXJyb3IgdC5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgfCBgQ2xvc2VfY29ubmVjdGlvbiAtPiBTdG9wIChPayAoKSlcbiAgICB8IGBDYWxsIGYgLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgZlxuICAgICAgICAgICB0LmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgfnJwY190YWc6KFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkuUC5RdWVyeS50YWcpXG4gICAgICAgICAgIH52ZXJzaW9uOnF1ZXJ5LnZlcnNpb25cbiAgICAgICB3aXRoXG4gICAgICAgfCBgQ2xvc2VfY29ubmVjdGlvbiAtPiBTdG9wIChPayAoKSlcbiAgICAgICB8IGBDb250aW51ZSAtPiBDb250aW51ZSlcbiAgOztcblxuICBsZXQgaGFuZGxlX3F1ZXJ5X2ludGVybmFsXG4gICAgICAgIHRcbiAgICAgICAgfihxdWVyeSA6IE5hdDAudCBQLlF1ZXJ5LnQpXG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgPVxuICAgIGxldCB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfSA9IHQuaW1wbGVtZW50YXRpb25zIGluXG4gICAgbGV0IGRlc2NyaXB0aW9uIDogRGVzY3JpcHRpb24udCA9XG4gICAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LnRhZzsgdmVyc2lvbiA9IHF1ZXJ5LnZlcnNpb24gfVxuICAgIGluXG4gICAgbWF0Y2ggdC5sYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gd2l0aFxuICAgIHwgU29tZSAobGFzdF9kZXNjLCBpbXBsZW1lbnRhdGlvbikgd2hlbiBEZXNjcmlwdGlvbi5lcXVhbCBsYXN0X2Rlc2MgZGVzY3JpcHRpb24gLT5cbiAgICAgIGFwcGx5X2ltcGxlbWVudGF0aW9uXG4gICAgICAgIHRcbiAgICAgICAgaW1wbGVtZW50YXRpb24uZlxuICAgICAgICB+cXVlcnlcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgfm9uX2V4Y2VwdGlvbjppbXBsZW1lbnRhdGlvbi5vbl9leGNlcHRpb25cbiAgICB8IE5vbmUgfCBTb21lIF8gLT5cbiAgICAgIChtYXRjaCBIYXNodGJsLmZpbmQgaW1wbGVtZW50YXRpb25zIGRlc2NyaXB0aW9uIHdpdGhcbiAgICAgICB8IFNvbWUgaW1wbGVtZW50YXRpb24gLT5cbiAgICAgICAgIHQubGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIDwtIFNvbWUgKGRlc2NyaXB0aW9uLCBpbXBsZW1lbnRhdGlvbik7XG4gICAgICAgICBhcHBseV9pbXBsZW1lbnRhdGlvblxuICAgICAgICAgICB0XG4gICAgICAgICAgIGltcGxlbWVudGF0aW9uLmZcbiAgICAgICAgICAgfm9uX2V4Y2VwdGlvbjppbXBsZW1lbnRhdGlvbi5vbl9leGNlcHRpb25cbiAgICAgICAgICAgfnF1ZXJ5XG4gICAgICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICAobWF0Y2ggb25fdW5rbm93bl9ycGMgd2l0aFxuICAgICAgICAgIHwgYEV4cGVydCBpbXBsIC0+XG4gICAgICAgICAgICBsZXQgeyBQLlF1ZXJ5LnRhZzsgdmVyc2lvbjsgaWQ7IG1ldGFkYXRhID0gKF8gOiBzdHJpbmcgb3B0aW9uKTsgZGF0YSA9IGxlbiB9ID1cbiAgICAgICAgICAgICAgcXVlcnlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgICAgIGxldCByZXNwb25kZXIgPSBSZXNwb25kZXIuY3JlYXRlIGlkIHQud3JpdGVyIGluXG4gICAgICAgICAgICAgIGltcGxcbiAgICAgICAgICAgICAgICB0LmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgICAgICB+cnBjX3RhZzooUC5ScGNfdGFnLnRvX3N0cmluZyB0YWcpXG4gICAgICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgICAgICByZXNwb25kZXJcbiAgICAgICAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgICAgICAgIH5wb3M6IXJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgICB+bGVuOihsZW4gOj4gaW50KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIENvbnRpbnVlIGVsc2UgV2FpdCBkXG4gICAgICAgICAgfCAoYENvbnRpbnVlIHwgYFJhaXNlIHwgYENsb3NlX2Nvbm5lY3Rpb24gfCBgQ2FsbCBfKSBhcyBvbl91bmtub3duX3JwYyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yID0gUnBjX2Vycm9yLlVuaW1wbGVtZW50ZWRfcnBjIChxdWVyeS50YWcsIGBWZXJzaW9uIHF1ZXJ5LnZlcnNpb24pIGluXG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IHF1ZXJ5LmlkIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdCAoRXJyb3IgZXJyb3IpO1xuICAgICAgICAgICAgaGFuZGxlX3Vua25vd25fcnBjIG9uX3Vua25vd25fcnBjIGVycm9yIHQgcXVlcnkpKVxuICA7O1xuXG4gIGxldCBoYW5kbGVfcXVlcnlcbiAgICAgICAgKFQgdClcbiAgICAgICAgfihxdWVyeSA6IE5hdDAudCBQLlF1ZXJ5LnQpXG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgPVxuICAgIGlmIHQuc3RvcHBlZCB8fCBXcml0ZXIuaXNfY2xvc2VkIHQud3JpdGVyXG4gICAgdGhlbiBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQuU3RvcCAoT2sgKCkpXG4gICAgZWxzZVxuICAgICAgUnBjX21ldGFkYXRhLlByaXZhdGUud2l0aF9tZXRhZGF0YSBxdWVyeS5tZXRhZGF0YSB+ZjooZnVuICgpIC0+XG4gICAgICAgIGhhbmRsZV9xdWVyeV9pbnRlcm5hbFxuICAgICAgICAgIHRcbiAgICAgICAgICB+cXVlcnlcbiAgICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IpXG4gIDs7XG5lbmRcblxubW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gSW5zdGFuY2UuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxubGV0IGNyZWF0ZSB+aW1wbGVtZW50YXRpb25zOmkncyB+b25fdW5rbm93bl9ycGMgPVxuICAoKiBNYWtlIHN1cmUgdGhlIHRhZ3MgYXJlIHVuaXF1ZS4gKilcbiAgbGV0IGltcGxlbWVudGF0aW9ucyA9IERlc2NyaXB0aW9uLlRhYmxlLmNyZWF0ZSB+c2l6ZToxMCAoKSBpblxuICBsZXQgZHVwcyA9IERlc2NyaXB0aW9uLkhhc2hfc2V0LmNyZWF0ZSB+c2l6ZToxMCAoKSBpblxuICBMaXN0Lml0ZXIgaSdzIH5mOihmdW4gKGkgOiBfIEltcGxlbWVudGF0aW9uLnQpIC0+XG4gICAgbGV0IGRlc2NyaXB0aW9uID1cbiAgICAgIHsgRGVzY3JpcHRpb24ubmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgaS50YWc7IHZlcnNpb24gPSBpLnZlcnNpb24gfVxuICAgIGluXG4gICAgbWF0Y2ggSGFzaHRibC5hZGQgaW1wbGVtZW50YXRpb25zIH5rZXk6ZGVzY3JpcHRpb24gfmRhdGE6aSB3aXRoXG4gICAgfCBgT2sgLT4gKClcbiAgICB8IGBEdXBsaWNhdGUgLT4gSGFzaF9zZXQuYWRkIGR1cHMgZGVzY3JpcHRpb24pO1xuICBpZiBub3QgKEhhc2hfc2V0LmlzX2VtcHR5IGR1cHMpXG4gIHRoZW4gRXJyb3IgKGBEdXBsaWNhdGVfaW1wbGVtZW50YXRpb25zIChIYXNoX3NldC50b19saXN0IGR1cHMpKVxuICBlbHNlIE9rIHsgaW1wbGVtZW50YXRpb25zOyBvbl91bmtub3duX3JwYyA6PiBfIG9uX3Vua25vd25fcnBjX3dpdGhfZXhwZXJ0IH1cbjs7XG5cbmxldCBpbnN0YW50aWF0ZVxuICAgICAgdFxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB+d3JpdGVyXG4gID1cbiAgbGV0IHJlYyB1bnBhY2tlZCA6IF8gSW5zdGFuY2UudW5wYWNrZWQgPVxuICAgIHsgaW1wbGVtZW50YXRpb25zID0gdFxuICAgIDsgd3JpdGVyXG4gICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgPSBIYXNodGJsLlBvbHkuY3JlYXRlIH5zaXplOjEwICgpXG4gICAgOyBjb25uZWN0aW9uX3N0YXRlXG4gICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgOyBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICA7IHN0b3BwZWQgPSBmYWxzZVxuICAgIDsgbGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uID0gTm9uZVxuICAgIDsgcGFja2VkX3NlbGYgPSBJbnN0YW5jZS5UIHVucGFja2VkXG4gICAgfVxuICBpblxuICB1bnBhY2tlZC5wYWNrZWRfc2VsZlxuOztcblxuZXhjZXB0aW9uIER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgb2YgRGVzY3JpcHRpb24udCBsaXN0IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCBjcmVhdGVfZXhuIH5pbXBsZW1lbnRhdGlvbnMgfm9uX3Vua25vd25fcnBjID1cbiAgbWF0Y2ggY3JlYXRlIH5pbXBsZW1lbnRhdGlvbnMgfm9uX3Vua25vd25fcnBjIHdpdGhcbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciAoYER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgZHVwcykgLT4gcmFpc2UgKER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgZHVwcylcbjs7XG5cbmxldCBudWxsICgpID0gY3JlYXRlX2V4biB+aW1wbGVtZW50YXRpb25zOltdIH5vbl91bmtub3duX3JwYzpgUmFpc2VcblxubGV0IGFkZF9leG4gdCAoaW1wbGVtZW50YXRpb24gOiBfIEltcGxlbWVudGF0aW9uLnQpID1cbiAgbGV0IGRlc2MgOiBEZXNjcmlwdGlvbi50ID1cbiAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIGltcGxlbWVudGF0aW9uLnRhZzsgdmVyc2lvbiA9IGltcGxlbWVudGF0aW9uLnZlcnNpb24gfVxuICBpblxuICBsZXQgaW1wbGVtZW50YXRpb25zID0gSGFzaHRibC5jb3B5IHQuaW1wbGVtZW50YXRpb25zIGluXG4gIG1hdGNoIEhhc2h0YmwuYWRkIGltcGxlbWVudGF0aW9ucyB+a2V5OmRlc2MgfmRhdGE6aW1wbGVtZW50YXRpb24gd2l0aFxuICB8IGBEdXBsaWNhdGUgLT4gcmFpc2UgKER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgWyBkZXNjIF0pXG4gIHwgYE9rIC0+IHsgdCB3aXRoIGltcGxlbWVudGF0aW9ucyB9XG47O1xuXG5sZXQgYWRkIHQgaW1wbGVtZW50YXRpb24gPSBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGFkZF9leG4gdCBpbXBsZW1lbnRhdGlvbilcblxubGV0IGxpZnQgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIH0gfmYgPVxuICBsZXQgaW1wbGVtZW50YXRpb25zID0gSGFzaHRibC5tYXAgaW1wbGVtZW50YXRpb25zIH5mOihJbXBsZW1lbnRhdGlvbi5saWZ0IH5mKSBpblxuICBsZXQgb25fdW5rbm93bl9ycGMgPVxuICAgIG1hdGNoIG9uX3Vua25vd25fcnBjIHdpdGhcbiAgICB8IChgUmFpc2UgfCBgQ29udGludWUgfCBgQ2xvc2VfY29ubmVjdGlvbikgYXMgeCAtPiB4XG4gICAgfCBgQ2FsbCBjYWxsIC0+IGBDYWxsIChmdW4gc3RhdGUgLT4gY2FsbCAoZiBzdGF0ZSkpXG4gICAgfCBgRXhwZXJ0IGV4cGVydCAtPiBgRXhwZXJ0IChmdW4gc3RhdGUgLT4gZXhwZXJ0IChmIHN0YXRlKSlcbiAgaW5cbiAgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIH1cbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlc3BvbmRlciA9IFJlc3BvbmRlclxuXG4gIG1vZHVsZSBScGNfcmVzcG9uZGVyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gUmVzcG9uZGVyLnRcblxuICAgIGxldCBjYW5ub3Rfc2VuZCByID1cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiTWVzc2FnZSBjYW5ub3QgYmUgc2VudFwiXG4gICAgICAgIHJcbiAgICAgICAgWyVzZXhwX29mOiBfIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XVxuICAgIDs7XG5cbiAgICBsZXQgbWFya19yZXNwb25kZWQgKHQgOiB0KSA9XG4gICAgICBpZiB0LnJlc3BvbmRlZFxuICAgICAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIkFscmVhZHkgcmVzcG9uZGVkXCIgdCBbJXNleHBfb2Y6IFJlc3BvbmRlci50XTtcbiAgICAgIHQucmVzcG9uZGVkIDwtIHRydWVcbiAgICA7O1xuXG4gICAgbGV0IHNjaGVkdWxlICh0IDogdCkgYnVmIH5wb3MgfmxlbiA9XG4gICAgICBtYXJrX3Jlc3BvbmRlZCB0O1xuICAgICAgbGV0IGhlYWRlciA6IE5hdDAudCBQLk1lc3NhZ2UudCA9XG4gICAgICAgIFJlc3BvbnNlIHsgaWQgPSB0LnF1ZXJ5X2lkOyBkYXRhID0gT2sgKE5hdDAub2ZfaW50X2V4biBsZW4pIH1cbiAgICAgIGluXG4gICAgICBtYXRjaFxuICAgICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG4gICAgICAgICAgdC53cml0ZXJcbiAgICAgICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgICBoZWFkZXJcbiAgICAgICAgICB+YnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgIHdpdGhcbiAgICAgIHwgU2VudCBkIC0+IGBGbHVzaGVkIGRcbiAgICAgIHwgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+IGNhbm5vdF9zZW5kIHJcbiAgICA7O1xuXG4gICAgbGV0IGhhbmRsZV9zZW5kX3Jlc3VsdCA6IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQgLT4gdW5pdCA9IGZ1bmN0aW9uXG4gICAgICB8IFNlbnQgKCkgfCBDbG9zZWQgLT4gKClcbiAgICAgIHwgTWVzc2FnZV90b29fYmlnIF8gYXMgciAtPiBjYW5ub3Rfc2VuZCByXG4gICAgOztcblxuICAgIGxldCB3cml0ZV9iaWdzdHJpbmcgKHQgOiB0KSBidWYgfnBvcyB+bGVuID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBsZXQgaGVhZGVyIDogTmF0MC50IFAuTWVzc2FnZS50ID1cbiAgICAgICAgUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayAoTmF0MC5vZl9pbnRfZXhuIGxlbikgfVxuICAgICAgaW5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICAgICAgdC53cml0ZXJcbiAgICAgICAgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90XG4gICAgICAgIGhlYWRlclxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0XG4gICAgOztcblxuICAgIGxldCB3cml0ZV9lcnJvciAodCA6IHQpIGVycm9yID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBsZXQgZGF0YSA9XG4gICAgICAgIFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcmF3IHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgKEVycm9yLnRvX2V4biBlcnJvcilcbiAgICAgIGluXG4gICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdFxuICAgICAgICB0LndyaXRlclxuICAgICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgKFJlc3BvbnNlIHsgaWQgPSB0LnF1ZXJ5X2lkOyBkYXRhIH0pXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2Jpbl9wcm90ICh0IDogdCkgYmluX3dyaXRlcl9hIGEgPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICAgIHQud3JpdGVyXG4gICAgICAgIChQLk1lc3NhZ2UuYmluX3dyaXRlcl9uZWVkc19sZW5ndGggKFdyaXRlcl93aXRoX2xlbmd0aC5vZl93cml0ZXIgYmluX3dyaXRlcl9hKSlcbiAgICAgICAgKFJlc3BvbnNlIHsgaWQgPSB0LnF1ZXJ5X2lkOyBkYXRhID0gT2sgYSB9KVxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGNyZWF0ZV9leG4gPSBjcmVhdGVfZXhuXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm1vZHVsZSBUaW1lX25zID0gQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbm1vZHVsZSBQID0gUHJvdG9jb2xcbm1vZHVsZSBSZWFkZXIgPSBUcmFuc3BvcnQuUmVhZGVyXG5tb2R1bGUgV3JpdGVyID0gVHJhbnNwb3J0LldyaXRlclxuXG5tb2R1bGUgSGFuZHNoYWtlX2Vycm9yID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRW9mXG4gICAgICB8IFRyYW5zcG9ydF9jbG9zZWRcbiAgICAgIHwgVGltZW91dFxuICAgICAgfCBSZWFkaW5nX2hlYWRlcl9mYWlsZWQgb2YgRXJyb3IudFxuICAgICAgfCBOZWdvdGlhdGlvbl9mYWlsZWQgb2YgRXJyb3IudFxuICAgICAgfCBOZWdvdGlhdGVkX3VuZXhwZWN0ZWRfdmVyc2lvbiBvZiBpbnRcbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGV4Y2VwdGlvbiBIYW5kc2hha2VfZXJyb3Igb2YgKHQgKiBJbmZvLnQpIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgbGV0IHRvX2V4biB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbiB0ID0gSGFuZHNoYWtlX2Vycm9yICh0LCBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uKVxuZW5kXG5cbm1vZHVsZSBIZWFkZXIgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICB2YWwgdjEgOiB0XG4gIHZhbCB2MiA6IHRcbiAgdmFsIG5lZ290aWF0ZSA6IHVzOnQgLT4gcGVlcjp0IC0+IChpbnQsIEhhbmRzaGFrZV9lcnJvci50KSByZXN1bHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFAuSGVhZGVyXG5cbiAgbGV0IGNyZWF0ZSB+c3VwcG9ydGVkX3ZlcnNpb25zID1cbiAgICBQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5jcmVhdGVfZXhuICgpIH5wcm90b2NvbDpScGMgfnN1cHBvcnRlZF92ZXJzaW9uc1xuICA7O1xuXG4gIGxldCB2MiA9IGNyZWF0ZSB+c3VwcG9ydGVkX3ZlcnNpb25zOlsgMTsgMiBdXG4gIGxldCB2MSA9IGNyZWF0ZSB+c3VwcG9ydGVkX3ZlcnNpb25zOlsgMSBdXG5cbiAgbGV0IG5lZ290aWF0ZSB+dXMgfnBlZXIgPVxuICAgIG1hdGNoIG5lZ290aWF0ZSB+YWxsb3dfbGVnYWN5X3BlZXI6dHJ1ZSB+dXMgfnBlZXIgd2l0aFxuICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoSGFuZHNoYWtlX2Vycm9yLk5lZ290aWF0aW9uX2ZhaWxlZCBlKVxuICAgIHwgT2sgaSAtPiBPayBpXG4gIDs7XG5lbmRcblxubW9kdWxlIFByb3RvY29sX3dyaXRlciA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgc2V4cF9vZl93cml0ZXIgOiB0IC0+IFNleHAudFxuICB2YWwgY3JlYXRlX2JlZm9yZV9uZWdvdGlhdGlvbiA6IFdyaXRlci50IC0+IHRcbiAgdmFsIHNldF9uZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gOiB0IC0+IGludCAtPiB1bml0XG5cbiAgdmFsIHNlbmRfcXVlcnlcbiAgICA6ICB0XG4gICAgLT4gJ3F1ZXJ5IFAuUXVlcnkudFxuICAgIC0+IGJpbl93cml0ZXJfcXVlcnk6J3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgLT4gdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudFxuXG4gIHZhbCBzZW5kX2V4cGVydF9xdWVyeVxuICAgIDogIHRcbiAgICAtPiB1bml0IFAuUXVlcnkudFxuICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgIC0+IHBvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nOlxuICAgICAgICAgKFdyaXRlci50XG4gICAgICAgICAgLT4gUC5NZXNzYWdlLm5hdDBfdCBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAgIC0+IFAuTWVzc2FnZS5uYXQwX3RcbiAgICAgICAgICAtPiBidWY6Qmlnc3RyaW5nLnRcbiAgICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAgIC0+ICdyZXN1bHQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQpXG4gICAgLT4gJ3Jlc3VsdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudFxuXG4gIHZhbCBzZW5kX2hlYXJ0YmVhdCA6IHQgLT4gdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudFxuICB2YWwgY2FuX3NlbmQgOiB0IC0+IGJvb2xcbiAgdmFsIGJ5dGVzX3RvX3dyaXRlIDogdCAtPiBpbnRcbiAgdmFsIGJ5dGVzX3dyaXR0ZW4gOiB0IC0+IEludDYzLnRcbiAgdmFsIGZsdXNoZWQgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuICB2YWwgc3RvcHBlZCA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCBjbG9zZSA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA6IGludCBTZXRfb25jZS50XG4gICAgOyB3cml0ZXIgOiBXcml0ZXIudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl93cml0ZXIgdCA9IFslc2V4cF9vZjogV3JpdGVyLnRdIHQud3JpdGVyXG5cbiAgbGV0IGNyZWF0ZV9iZWZvcmVfbmVnb3RpYXRpb24gd3JpdGVyID1cbiAgICB7IG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA9IFNldF9vbmNlLmNyZWF0ZSAoKTsgd3JpdGVyIH1cbiAgOztcblxuICBsZXQgc2V0X25lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiB0IG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA9XG4gICAgU2V0X29uY2Uuc2V0X2V4biB0Lm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiBbJWhlcmVdIG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvblxuICA7O1xuXG4gIGxldCBxdWVyeV9tZXNzYWdlIHQgcXVlcnkgOiBfIFAuTWVzc2FnZS50ID1cbiAgICBtYXRjaCBTZXRfb25jZS5nZXRfZXhuIHQubmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIFslaGVyZV0gd2l0aFxuICAgIHwgMSAtPiBRdWVyeV92MSAoUC5RdWVyeS50b192MSBxdWVyeSlcbiAgICB8IF8gLT4gUXVlcnkgcXVlcnlcbiAgOztcblxuICBsZXQgc2VuZF9xdWVyeSB0IHF1ZXJ5IH5iaW5fd3JpdGVyX3F1ZXJ5ID1cbiAgICBsZXQgbWVzc2FnZSA9IHF1ZXJ5X21lc3NhZ2UgdCBxdWVyeSBpblxuICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICB0LndyaXRlclxuICAgICAgKFAuTWVzc2FnZS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aCAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3dyaXRlciBiaW5fd3JpdGVyX3F1ZXJ5KSlcbiAgICAgIG1lc3NhZ2VcbiAgOztcblxuICBsZXQgc2VuZF9leHBlcnRfcXVlcnkgdCBxdWVyeSB+YnVmIH5wb3MgfmxlbiB+c2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nID1cbiAgICBsZXQgaGVhZGVyID0gcXVlcnlfbWVzc2FnZSB0IHsgcXVlcnkgd2l0aCBkYXRhID0gTmF0MC5vZl9pbnRfZXhuIGxlbiB9IGluXG4gICAgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIHQud3JpdGVyIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdCBoZWFkZXIgfmJ1ZiB+cG9zIH5sZW5cbiAgOztcblxuICBsZXQgc2VuZF9oZWFydGJlYXQgdCA9XG4gICAgV3JpdGVyLnNlbmRfYmluX3Byb3QgdC53cml0ZXIgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IEhlYXJ0YmVhdFxuICA7O1xuXG4gIGxldCBvZl93cml0ZXIgZiB0ID0gZiB0LndyaXRlclxuICBsZXQgY2FuX3NlbmQgPSBvZl93cml0ZXIgV3JpdGVyLmNhbl9zZW5kXG4gIGxldCBieXRlc190b193cml0ZSA9IG9mX3dyaXRlciBXcml0ZXIuYnl0ZXNfdG9fd3JpdGVcbiAgbGV0IGJ5dGVzX3dyaXR0ZW4gPSBvZl93cml0ZXIgV3JpdGVyLmJ5dGVzX3dyaXR0ZW5cbiAgbGV0IGZsdXNoZWQgPSBvZl93cml0ZXIgV3JpdGVyLmZsdXNoZWRcbiAgbGV0IHN0b3BwZWQgPSBvZl93cml0ZXIgV3JpdGVyLnN0b3BwZWRcbiAgbGV0IGNsb3NlID0gb2Zfd3JpdGVyIFdyaXRlci5jbG9zZVxuZW5kXG5cbm1vZHVsZSBIZWFydGJlYXRfY29uZmlnID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyB0aW1lb3V0IDogVGltZV9ucy5TcGFuLnRcbiAgICA7IHNlbmRfZXZlcnkgOiBUaW1lX25zLlNwYW4udFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBmaWVsZHNdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICBbJWV4cGVjdCB7fCA3NGExZjQ3NWJmYjJlZWQ1YTUwOWJhNzFjZDc4OTFkMiB8fV1cbiAgOztcblxuICBsZXQgY3JlYXRlXG4gICAgICAgID8odGltZW91dCA9IFRpbWVfbnMuU3Bhbi5vZl9zZWMgMzAuKVxuICAgICAgICA/KHNlbmRfZXZlcnkgPSBUaW1lX25zLlNwYW4ub2Zfc2VjIDEwLilcbiAgICAgICAgKClcbiAgICA9XG4gICAgeyB0aW1lb3V0OyBzZW5kX2V2ZXJ5IH1cbiAgOztcblxuICBtb2R1bGUgUnVudGltZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG11dGFibGUgdGltZW91dCA6IFRpbWVfbnMuU3Bhbi50XG4gICAgICA7IHNlbmRfZXZlcnkgOiBUaW1lX25zLlNwYW4udFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCB0b19ydW50aW1lIHsgdGltZW91dDsgc2VuZF9ldmVyeSB9ID0geyBSdW50aW1lLnRpbWVvdXQ7IHNlbmRfZXZlcnkgfVxuZW5kXG5cbnR5cGUgcmVzcG9uc2VfaGFuZGxlciA9XG4gIE5hdDAudCBQLlJlc3BvbnNlLnRcbiAgLT4gcmVhZF9idWZmZXI6Qmlnc3RyaW5nLnRcbiAgLT4gcmVhZF9idWZmZXJfcG9zX3JlZjppbnQgcmVmXG4gIC0+IFsgYGtlZXBcbiAgICAgfCBgd2FpdCBvZiB1bml0IERlZmVycmVkLnRcbiAgICAgfCBgcmVtb3ZlIG9mIHVuaXQgUnBjX3Jlc3VsdC50XG4gICAgIHwgYHJlbW92ZV9hbmRfd2FpdCBvZiB1bml0IERlZmVycmVkLnRcbiAgICAgXVxuXG50eXBlIHQgPVxuICB7IGRlc2NyaXB0aW9uIDogSW5mby50XG4gIDsgaGVhcnRiZWF0X2NvbmZpZyA6IEhlYXJ0YmVhdF9jb25maWcuUnVudGltZS50XG4gIDsgbXV0YWJsZSBoZWFydGJlYXRfY2FsbGJhY2tzIDogKHVuaXQgLT4gdW5pdCkgYXJyYXlcbiAgOyBtdXRhYmxlIGxhc3Rfc2Vlbl9hbGl2ZSA6IFRpbWVfbnMudFxuICA7IG1heF9tZXRhZGF0YV9zaXplIDogQnl0ZV91bml0cy50XG4gIDsgcmVhZGVyIDogUmVhZGVyLnRcbiAgOyB3cml0ZXIgOiBQcm90b2NvbF93cml0ZXIudFxuICA7IG9wZW5fcXVlcmllcyA6IChQLlF1ZXJ5X2lkLnQsIChyZXNwb25zZV9oYW5kbGVyW0BzZXhwLm9wYXF1ZV0pKSBIYXNodGJsLnRcbiAgOyBjbG9zZV9zdGFydGVkIDogSW5mby50IEl2YXIudFxuICA7IGNsb3NlX2ZpbmlzaGVkIDogdW5pdCBJdmFyLnRcbiAgKCogVGhlcmUncyBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBjb25uZWN0aW9ucyBhbmQgdGhlaXIgaW1wbGVtZW50YXRpb24gaW5zdGFuY2VzXG4gICAgICh0aGUgbGF0dGVyIGRlcGVuZHMgb24gdGhlIGNvbm5lY3Rpb24gc3RhdGUsIHdoaWNoIGlzIGdpdmVuIGFjY2VzcyB0byB0aGUgY29ubmVjdGlvblxuICAgICB3aGVuIGl0IGlzIGNyZWF0ZWQpLiAqKVxuICA7IGltcGxlbWVudGF0aW9uc19pbnN0YW5jZSA6IEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS50IFNldF9vbmNlLnRcbiAgOyB0aW1lX3NvdXJjZSA6IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLnRcbiAgOyBoZWFydGJlYXRfZXZlbnQgOiBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC50IFNldF9vbmNlLnRcbiAgOyBuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gOiBpbnQgU2V0X29uY2UudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90X2h1bV93cml0ZXIgdCA9XG4gIFslc2V4cFxuICAgIHsgZGVzY3JpcHRpb24gOiBJbmZvLnQgPSB0LmRlc2NyaXB0aW9uOyB3cml0ZXIgOiBQcm90b2NvbF93cml0ZXIud3JpdGVyID0gdC53cml0ZXIgfV1cbjs7XG5cbmxldCBkZXNjcmlwdGlvbiB0ID0gdC5kZXNjcmlwdGlvblxubGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuXG5sZXQgd3JpdGVyIHQgPVxuICBpZiBpc19jbG9zZWQgdCB8fCBub3QgKFByb3RvY29sX3dyaXRlci5jYW5fc2VuZCB0LndyaXRlcilcbiAgdGhlbiBFcnJvciBgQ2xvc2VkXG4gIGVsc2UgT2sgdC53cml0ZXJcbjs7XG5cbmxldCBieXRlc190b193cml0ZSB0ID0gUHJvdG9jb2xfd3JpdGVyLmJ5dGVzX3RvX3dyaXRlIHQud3JpdGVyXG5sZXQgYnl0ZXNfd3JpdHRlbiB0ID0gUHJvdG9jb2xfd3JpdGVyLmJ5dGVzX3dyaXR0ZW4gdC53cml0ZXJcbmxldCBieXRlc19yZWFkIHQgPSBSZWFkZXIuYnl0ZXNfcmVhZCB0LnJlYWRlclxubGV0IGZsdXNoZWQgdCA9IFByb3RvY29sX3dyaXRlci5mbHVzaGVkIHQud3JpdGVyXG5cbmxldCBoYW5kbGVfc2VuZF9yZXN1bHQgOiB0IC0+ICdhIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50IC0+ICdhID1cbiAgZnVuIHQgciAtPlxuICBtYXRjaCByIHdpdGhcbiAgfCBTZW50IHggLT4geFxuICB8IENsb3NlZCAtPlxuICAgICgqIEFsbCBvZiB0aGUgcGxhY2VzIHdlIGNhbGwgW2hhbmRsZV9zZW5kX3Jlc3VsdF0gY2hlY2sgd2hldGhlciBbdF0gaXMgY2xvc2VkXG4gICAgICAgKHVzdWFsbHkgdmlhIHRoZSBbd3JpdGVyXSBmdW5jdGlvbiBhYm92ZSkuIFRoaXMgY2hlY2tzIHdoZXRoZXIgW3Qud3JpdGVyXSBpc1xuICAgICAgIGNsb3NlZCwgd2hpY2ggc2hvdWxkIG5vdCBoYXBwZW4gdW5sZXNzIFt0XSBpcyBjbG9zZWQuICopXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJSUEMgY29ubmVjdGlvbiBnb3QgY2xvc2VkIHdyaXRlclwiIHQgc2V4cF9vZl90X2h1bV93cml0ZXJcbiAgfCBNZXNzYWdlX3Rvb19iaWcgXyAtPlxuICAgIHJhaXNlX3NcbiAgICAgIFslc2V4cFxuICAgICAgICBcIk1lc3NhZ2UgY2Fubm90IGJlIHNlbnRcIlxuICAgICAgLCB7IHJlYXNvbiA9IChyIDogXyBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCk7IGNvbm5lY3Rpb24gPSAodCA6IHRfaHVtX3dyaXRlcikgfV1cbjs7XG5cbmxldCBkaXNwYXRjaCB0IH5yZXNwb25zZV9oYW5kbGVyIH5iaW5fd3JpdGVyX3F1ZXJ5IH4ocXVlcnkgOiBfIFAuUXVlcnkudCkgPVxuICBtYXRjaCB3cml0ZXIgdCB3aXRoXG4gIHwgRXJyb3IgYENsb3NlZCBhcyByIC0+IHJcbiAgfCBPayB3cml0ZXIgLT5cbiAgICBsZXQgcXVlcnkgPVxuICAgICAgbWF0Y2ggcXVlcnkubWV0YWRhdGEgd2l0aFxuICAgICAgfCBTb21lIG1ldGFkYXRhIC0+XG4gICAgICAgIHsgcXVlcnkgd2l0aFxuICAgICAgICAgIG1ldGFkYXRhID1cbiAgICAgICAgICAgIFNvbWUgKFN0cmluZy5wcmVmaXggbWV0YWRhdGEgKEJ5dGVfdW5pdHMuYnl0ZXNfaW50X2V4biB0Lm1heF9tZXRhZGF0YV9zaXplKSlcbiAgICAgICAgfVxuICAgICAgfCBOb25lIC0+IHF1ZXJ5XG4gICAgaW5cbiAgICBPcHRpb24uaXRlciByZXNwb25zZV9oYW5kbGVyIH5mOihmdW4gcmVzcG9uc2VfaGFuZGxlciAtPlxuICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3F1ZXJpZXMgfmtleTpxdWVyeS5pZCB+ZGF0YTpyZXNwb25zZV9oYW5kbGVyKTtcbiAgICBQcm90b2NvbF93cml0ZXIuc2VuZF9xdWVyeSB3cml0ZXIgcXVlcnkgfmJpbl93cml0ZXJfcXVlcnkgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQ7XG4gICAgT2sgKClcbjs7XG5cbmxldCBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgZG9fc2VuZFxuICAgICAgP21ldGFkYXRhXG4gICAgICB0XG4gICAgICB+dGFnXG4gICAgICB+dmVyc2lvblxuICAgICAgYnVmXG4gICAgICB+cG9zXG4gICAgICB+bGVuXG4gICAgICB+cmVzcG9uc2VfaGFuZGxlclxuICA9XG4gIG1hdGNoIHdyaXRlciB0IHdpdGhcbiAgfCBFcnJvciBgQ2xvc2VkIC0+IEVycm9yIGBDbG9zZWRcbiAgfCBPayB3cml0ZXIgLT5cbiAgICBsZXQgaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIGxldCBxdWVyeSA6IHVuaXQgUC5RdWVyeS50ID0geyB0YWc7IHZlcnNpb247IGlkOyBtZXRhZGF0YTsgZGF0YSA9ICgpIH0gaW5cbiAgICBPcHRpb24uaXRlciByZXNwb25zZV9oYW5kbGVyIH5mOihmdW4gcmVzcG9uc2VfaGFuZGxlciAtPlxuICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3F1ZXJpZXMgfmtleTppZCB+ZGF0YTpyZXNwb25zZV9oYW5kbGVyKTtcbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIFByb3RvY29sX3dyaXRlci5zZW5kX2V4cGVydF9xdWVyeVxuICAgICAgICB3cml0ZXJcbiAgICAgICAgcXVlcnlcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICAgICAgfnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZzpkb19zZW5kXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdFxuICAgIGluXG4gICAgT2sgcmVzdWx0XG47O1xuXG5sZXQgZGlzcGF0Y2hfYmlnc3RyaW5nID0gbWFrZV9kaXNwYXRjaF9iaWdzdHJpbmcgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuXG5sZXQgc2NoZWR1bGVfZGlzcGF0Y2hfYmlnc3RyaW5nID1cbiAgbWFrZV9kaXNwYXRjaF9iaWdzdHJpbmcgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZ1xuOztcblxubGV0IGhhbmRsZV9yZXNwb25zZSB0IChyZXNwb25zZSA6IF8gUC5SZXNwb25zZS50KSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIHQub3Blbl9xdWVyaWVzIHJlc3BvbnNlLmlkIHdpdGhcbiAgfCBOb25lIC0+IFN0b3AgKEVycm9yIChScGNfZXJyb3IuVW5rbm93bl9xdWVyeV9pZCByZXNwb25zZS5pZCkpXG4gIHwgU29tZSByZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgKG1hdGNoIHJlc3BvbnNlX2hhbmRsZXIgcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmIHdpdGhcbiAgICAgfCBga2VlcCAtPiBDb250aW51ZVxuICAgICB8IGB3YWl0IHdhaXQgLT4gV2FpdCB3YWl0XG4gICAgIHwgYHJlbW92ZV9hbmRfd2FpdCB3YWl0IC0+XG4gICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3F1ZXJpZXMgcmVzcG9uc2UuaWQ7XG4gICAgICAgV2FpdCB3YWl0XG4gICAgIHwgYHJlbW92ZSByZW1vdmFsX2NpcmN1bXN0YW5jZXMgLT5cbiAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fcXVlcmllcyByZXNwb25zZS5pZDtcbiAgICAgICAobWF0Y2ggcmVtb3ZhbF9jaXJjdW1zdGFuY2VzIHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBDb250aW51ZVxuICAgICAgICB8IEVycm9yIGUgLT5cbiAgICAgICAgICAobWF0Y2ggZSB3aXRoXG4gICAgICAgICAgIHwgVW5pbXBsZW1lbnRlZF9ycGMgXyAtPiBDb250aW51ZVxuICAgICAgICAgICB8IEJpbl9pb19leG4gX1xuICAgICAgICAgICB8IENvbm5lY3Rpb25fY2xvc2VkXG4gICAgICAgICAgIHwgV3JpdGVfZXJyb3IgX1xuICAgICAgICAgICB8IFVuY2F1Z2h0X2V4biBfXG4gICAgICAgICAgIHwgVW5rbm93bl9xdWVyeV9pZCBfIC0+IFN0b3AgKEVycm9yIGUpKSkpXG47O1xuXG5sZXQgaGFuZGxlX21zZ1xuICAgICAgdFxuICAgICAgKG1zZyA6IF8gUC5NZXNzYWdlLnQpXG4gICAgICB+cmVhZF9idWZmZXJcbiAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudFxuICA9XG4gIG1hdGNoIG1zZyB3aXRoXG4gIHwgSGVhcnRiZWF0IC0+XG4gICAgQXJyYXkuaXRlciB0LmhlYXJ0YmVhdF9jYWxsYmFja3MgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICAgIENvbnRpbnVlXG4gIHwgUmVzcG9uc2UgcmVzcG9uc2UgLT4gaGFuZGxlX3Jlc3BvbnNlIHQgcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gIHwgUXVlcnkgcXVlcnkgLT5cbiAgICBsZXQgaW5zdGFuY2UgPSBTZXRfb25jZS5nZXRfZXhuIHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIFslaGVyZV0gaW5cbiAgICBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UuaGFuZGxlX3F1ZXJ5XG4gICAgICBpbnN0YW5jZVxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgfnF1ZXJ5XG4gICAgICB+cmVhZF9idWZmZXJcbiAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gIHwgUXVlcnlfdjEgcXVlcnkgLT5cbiAgICBsZXQgaW5zdGFuY2UgPSBTZXRfb25jZS5nZXRfZXhuIHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIFslaGVyZV0gaW5cbiAgICBsZXQgcXVlcnkgPSBQLlF1ZXJ5Lm9mX3YxIHF1ZXJ5IGluXG4gICAgSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLmhhbmRsZV9xdWVyeVxuICAgICAgaW5zdGFuY2VcbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgIH5xdWVyeVxuICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuOztcblxubGV0IGNsb3NlX3JlYXNvbiB0IH5vbl9jbG9zZSA9XG4gIGxldCByZWFzb24gPSBJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkIGluXG4gIG1hdGNoIG9uX2Nsb3NlIHdpdGhcbiAgfCBgc3RhcnRlZCAtPiByZWFzb25cbiAgfCBgZmluaXNoZWQgLT5cbiAgICBsZXQlYmluZCAoKSA9IEl2YXIucmVhZCB0LmNsb3NlX2ZpbmlzaGVkIGluXG4gICAgcmVhc29uXG47O1xuXG5sZXQgY2xvc2VfZmluaXNoZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlX2ZpbmlzaGVkXG5cbmxldCBhZGRfaGVhcnRiZWF0X2NhbGxiYWNrIHQgZiA9XG4gICgqIEFkZGluZyBoZWFydGJlYXQgY2FsbGJhY2tzIGlzIHJlbGF0aXZlbHkgcmFyZSwgYnV0IHRoZSBjYWxsYmFja3MgYXJlIHRyaWdnZXJlZCBhIGxvdC5cbiAgICAgVGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG1ha2VzIHRoZSBhZGRpdGlvbiBxdWFkcmF0aWMgZm9yIHRoZSBzYWtlIG9mIGtlZXBpbmcgdGhlXG4gICAgIHRyaWdnZXJpbmcgY2hlYXAuICopXG4gIHQuaGVhcnRiZWF0X2NhbGxiYWNrcyA8LSBBcnJheS5hcHBlbmQgW3wgZiB8XSB0LmhlYXJ0YmVhdF9jYWxsYmFja3Ncbjs7XG5cbmxldCByZXNldF9oZWFydGJlYXRfdGltZW91dCB0IHRpbWVvdXQgPVxuICB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dCA8LSB0aW1lb3V0O1xuICB0Lmxhc3Rfc2Vlbl9hbGl2ZSA8LSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZVxuOztcblxubGV0IGxhc3Rfc2Vlbl9hbGl2ZSB0ID0gdC5sYXN0X3NlZW5fYWxpdmVcblxubGV0IGFib3J0X2hlYXJ0YmVhdGluZyB0ID1cbiAgT3B0aW9uLml0ZXIgKFNldF9vbmNlLmdldCB0LmhlYXJ0YmVhdF9ldmVudCkgfmY6KGZ1biBldmVudCAtPlxuICAgIG1hdGNoIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LmFib3J0IHQudGltZV9zb3VyY2UgZXZlbnQgd2l0aFxuICAgIHwgT2sgfCBQcmV2aW91c2x5X3Vuc2NoZWR1bGVkIC0+ICgpKVxuOztcblxubGV0IGNsb3NlID8oc3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0ID0gVGltZV9ucy5TcGFuLm9mX2ludF9zZWMgNSkgfnJlYXNvbiB0ID1cbiAgaWYgbm90IChpc19jbG9zZWQgdClcbiAgdGhlbiAoXG4gICAgYWJvcnRfaGVhcnRiZWF0aW5nIHQ7XG4gICAgSXZhci5maWxsIHQuY2xvc2Vfc3RhcnRlZCByZWFzb247XG4gICAgKG1hdGNoIFNldF9vbmNlLmdldCB0LmltcGxlbWVudGF0aW9uc19pbnN0YW5jZSB3aXRoXG4gICAgIHwgTm9uZSAtPiBEZWZlcnJlZC51bml0XG4gICAgIHwgU29tZSBpbnN0YW5jZSAtPlxuICAgICAgIGxldCBmbHVzaGVkID0gSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLmZsdXNoIGluc3RhbmNlIGluXG4gICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBmbHVzaGVkXG4gICAgICAgdGhlbiAoXG4gICAgICAgICBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2Uuc3RvcCBpbnN0YW5jZTtcbiAgICAgICAgIGZsdXNoZWQpXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICAgRGVmZXJyZWQuYW55X3VuaXRcbiAgICAgICAgICAgICBbIGZsdXNoZWRcbiAgICAgICAgICAgICA7IFByb3RvY29sX3dyaXRlci5zdG9wcGVkIHQud3JpdGVyXG4gICAgICAgICAgICAgOyBUaW1lX3NvdXJjZS5hZnRlclxuICAgICAgICAgICAgICAgICAoVGltZV9zb3VyY2Uub2Zfc3luY2hyb25vdXMgdC50aW1lX3NvdXJjZSlcbiAgICAgICAgICAgICAgICAgc3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0XG4gICAgICAgICAgICAgXVxuICAgICAgICAgaW5cbiAgICAgICAgIEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5zdG9wIGluc3RhbmNlKSlcbiAgICA+Pj4gZnVuICgpIC0+XG4gICAgUHJvdG9jb2xfd3JpdGVyLmNsb3NlIHQud3JpdGVyXG4gICAgPj4+IGZ1biAoKSAtPiBSZWFkZXIuY2xvc2UgdC5yZWFkZXIgPj4+IGZ1biAoKSAtPiBJdmFyLmZpbGwgdC5jbG9zZV9maW5pc2hlZCAoKSk7XG4gIGNsb3NlX2ZpbmlzaGVkIHRcbjs7XG5cbmxldCBvbl9tZXNzYWdlIHQgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciA9XG4gIGxldCBmIGJ1ZiB+cG9zIH5sZW46XyA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnQgPVxuICAgIGxldCBwb3NfcmVmID0gcmVmIHBvcyBpblxuICAgIGxldCBuYXQwX21zZyA9IFAuTWVzc2FnZS5iaW5fcmVhZF9uYXQwX3QgYnVmIH5wb3NfcmVmIGluXG4gICAgbWF0Y2hcbiAgICAgIGhhbmRsZV9tc2dcbiAgICAgICAgdFxuICAgICAgICBuYXQwX21zZ1xuICAgICAgICB+cmVhZF9idWZmZXI6YnVmXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmOnBvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgIHdpdGhcbiAgICB8IENvbnRpbnVlIC0+IENvbnRpbnVlXG4gICAgfCBXYWl0IF8gYXMgcmVzIC0+IHJlc1xuICAgIHwgU3RvcCByZXN1bHQgLT5cbiAgICAgIGxldCByZWFzb24gPVxuICAgICAgICBsZXQgbXNnID0gXCJScGMgbWVzc2FnZSBoYW5kbGluZyBsb29wIHN0b3BwZWRcIiBpblxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IE9rICgpIC0+IEluZm8ub2Zfc3RyaW5nIG1zZ1xuICAgICAgICB8IEVycm9yIGUgLT5cbiAgICAgICAgICBJbmZvLmNyZWF0ZVxuICAgICAgICAgICAgbXNnXG4gICAgICAgICAgICBlXG4gICAgICAgICAgICAoUnBjX2Vycm9yLnNleHBfb2ZfdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgICBcIkNvbm5lY3Rpb24ub25fbWVzc2FnZSByZXN1bHRlZCBpbiBDb25uZWN0aW9uX2Nsb3NlZCBlcnJvci4gVGhpcyBpcyBcXFxuICAgICAgICAgICAgICAgICAgd2VpcmQuXCJdKSlcbiAgICAgIGluXG4gICAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uKTtcbiAgICAgIFN0b3AgcmVhc29uXG4gIGluXG4gIFN0YWdlZC5zdGFnZSBmXG47O1xuXG5sZXQgaGVhcnRiZWF0X25vdyB0ID1cbiAgbGV0IHNpbmNlX2xhc3RfaGVhcnRiZWF0ID1cbiAgICBUaW1lX25zLmRpZmYgKFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlKSB0Lmxhc3Rfc2Vlbl9hbGl2ZVxuICBpblxuICBpZiBUaW1lX25zLlNwYW4uKCA+ICkgc2luY2VfbGFzdF9oZWFydGJlYXQgdC5oZWFydGJlYXRfY29uZmlnLnRpbWVvdXRcbiAgdGhlbiAoXG4gICAgbGV0IHJlYXNvbiAoKSA9XG4gICAgICBzcHJpbnRmXG4gICAgICAgICFcIk5vIGhlYXJ0YmVhdHMgcmVjZWl2ZWQgZm9yICV7c2V4cDpUaW1lX25zLlNwYW4udH0uXCJcbiAgICAgICAgdC5oZWFydGJlYXRfY29uZmlnLnRpbWVvdXRcbiAgICBpblxuICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb246KEluZm8ub2ZfdGh1bmsgcmVhc29uKSkpXG4gIGVsc2UgKFxuICAgIG1hdGNoIHdyaXRlciB0IHdpdGhcbiAgICB8IEVycm9yIGBDbG9zZWQgLT4gKClcbiAgICB8IE9rIHdyaXRlciAtPiBQcm90b2NvbF93cml0ZXIuc2VuZF9oZWFydGJlYXQgd3JpdGVyIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0KVxuOztcblxubGV0IGRlZmF1bHRfaGFuZHNoYWtlX3RpbWVvdXQgPSBUaW1lX25zLlNwYW4ub2Zfc2VjIDMwLlxuXG5sZXQgY2xlYW51cCB0IH5yZWFzb24gZXhuID1cbiAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIH5yZWFzb24gdCk7XG4gIGlmIG5vdCAoSGFzaHRibC5pc19lbXB0eSB0Lm9wZW5fcXVlcmllcylcbiAgdGhlbiAoXG4gICAgbGV0IGVycm9yID1cbiAgICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICB8IFJwY19lcnJvci5ScGMgKGVycm9yLCAoXyA6IEluZm8udCkpIC0+IGVycm9yXG4gICAgICB8IGV4biAtPiBVbmNhdWdodF9leG4gKEV4bi5zZXhwX29mX3QgZXhuKVxuICAgIGluXG4gICAgKCogY2xlYW4gdXAgb3BlbiBzdHJlYW1pbmcgcmVzcG9uc2VzICopXG4gICAgKCogYW4gdW5mb3J0dW5hdGUgaGFjazsgb2sgYmVjYXVzZSB0aGUgcmVzcG9uc2UgaGFuZGxlciB3aWxsIGhhdmUgbm90aGluZ1xuICAgICAgIHRvIHJlYWQgZm9sbG93aW5nIGEgcmVzcG9uc2Ugd2hlcmUgW2RhdGFdIGlzIGFuIGVycm9yICopXG4gICAgbGV0IGR1bW15X2J1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgMSBpblxuICAgIGxldCBkdW1teV9yZWYgPSByZWYgMCBpblxuICAgIEhhc2h0YmwuaXRlcmkgdC5vcGVuX3F1ZXJpZXMgfmY6KGZ1biB+a2V5OnF1ZXJ5X2lkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIgLT5cbiAgICAgIGlnbm9yZVxuICAgICAgICAocmVzcG9uc2VfaGFuZGxlclxuICAgICAgICAgICB+cmVhZF9idWZmZXI6ZHVtbXlfYnVmZmVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmOmR1bW15X3JlZlxuICAgICAgICAgICB7IGlkID0gcXVlcnlfaWQ7IGRhdGEgPSBFcnJvciBlcnJvciB9KSk7XG4gICAgSGFzaHRibC5jbGVhciB0Lm9wZW5fcXVlcmllcztcbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgZHVtbXlfYnVmZmVyKVxuOztcblxubGV0IHNjaGVkdWxlX2hlYXJ0YmVhdHMgdCA9XG4gIHQubGFzdF9zZWVuX2FsaXZlIDwtIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlO1xuICBsZXQgaGVhcnRiZWF0X2Zyb21fbm93X29uID1cbiAgICAoKiBbYXRfaW50ZXJ2YWxzXSB3aWxsIHNjaGVkdWxlIHRoZSBmaXJzdCBoZWFydGJlYXQgdGhlIGZpcnN0IHRpbWUgdGhlIHRpbWVfc291cmNlIGlzXG4gICAgICAgYWR2YW5jZWQgKilcbiAgICBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC5hdF9pbnRlcnZhbHNcbiAgICAgIHQudGltZV9zb3VyY2VcbiAgICAgIHQuaGVhcnRiZWF0X2NvbmZpZy5zZW5kX2V2ZXJ5XG4gICAgICAoZnVuICgpIC0+IGhlYXJ0YmVhdF9ub3cgdClcbiAgaW5cbiAgU2V0X29uY2Uuc2V0X2V4biB0LmhlYXJ0YmVhdF9ldmVudCBbJWhlcmVdIGhlYXJ0YmVhdF9mcm9tX25vd19vblxuOztcblxubGV0IHJ1bl9hZnRlcl9oYW5kc2hha2VcbiAgICAgIHRcbiAgICAgIHdyaXRlclxuICAgICAgfm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvblxuICAgICAgfmltcGxlbWVudGF0aW9uc1xuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIH53cml0ZXJfbW9uaXRvcl9leG5zXG4gID1cbiAgUHJvdG9jb2xfd3JpdGVyLnNldF9uZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gdC53cml0ZXIgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uO1xuICBsZXQgaW5zdGFuY2UgPVxuICAgIEltcGxlbWVudGF0aW9ucy5pbnN0YW50aWF0ZVxuICAgICAgaW1wbGVtZW50YXRpb25zXG4gICAgICB+d3JpdGVyXG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjp0LmRlc2NyaXB0aW9uXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkKVxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGU6KGNvbm5lY3Rpb25fc3RhdGUgdClcbiAgaW5cbiAgU2V0X29uY2Uuc2V0X2V4biB0LmltcGxlbWVudGF0aW9uc19pbnN0YW5jZSBbJWhlcmVdIGluc3RhbmNlO1xuICBsZXQgY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yID0gTW9uaXRvci5jcmVhdGUgfm5hbWU6XCJSUEMgY2xvc2UgY29ubmVjdGlvbiBtb25pdG9yXCIgKCkgaW5cbiAgTW9uaXRvci5kZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIGNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciB+ZjooZnVuIGV4biAtPlxuICAgIGxldCByZWFzb24gPVxuICAgICAgSW5mby5jcmVhdGVfcyBbJW1lc3NhZ2UgXCJVbmNhdWdodCBleGNlcHRpb24gaW4gaW1wbGVtZW50YXRpb25cIiAoZXhuIDogRXhuLnQpXVxuICAgIGluXG4gICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIH5yZWFzb24gdCkpO1xuICBsZXQgbW9uaXRvciA9IE1vbml0b3IuY3JlYXRlIH5uYW1lOlwiUlBDIGNvbm5lY3Rpb24gbG9vcFwiICgpIGluXG4gIGxldCByZWFzb24gbmFtZSBleG4gPVxuICAgIGV4biwgSW5mby50YWcgKEluZm8ub2ZfZXhuIGV4bikgfnRhZzooXCJleG4gcmFpc2VkIGluIFJQQyBjb25uZWN0aW9uIFwiIF4gbmFtZSlcbiAgaW5cbiAgU3RyZWFtLml0ZXJcbiAgICAoU3RyZWFtLmludGVybGVhdmVcbiAgICAgICAoU3RyZWFtLm9mX2xpc3RcbiAgICAgICAgICBbIFN0cmVhbS5tYXAgfmY6KHJlYXNvbiBcImxvb3BcIikgKE1vbml0b3IuZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIG1vbml0b3IpXG4gICAgICAgICAgOyBTdHJlYW0ubWFwIH5mOihyZWFzb24gXCJXcml0ZXIudFwiKSB3cml0ZXJfbW9uaXRvcl9leG5zXG4gICAgICAgICAgXSkpXG4gICAgfmY6KGZ1biAoZXhuLCByZWFzb24pIC0+IGNsZWFudXAgdCBleG4gfnJlYXNvbik7XG4gIHdpdGhpbiB+bW9uaXRvciAoZnVuICgpIC0+XG4gICAgc2NoZWR1bGVfaGVhcnRiZWF0cyB0O1xuICAgIFJlYWRlci5yZWFkX2ZvcmV2ZXJcbiAgICAgIHQucmVhZGVyXG4gICAgICB+b25fbWVzc2FnZTooU3RhZ2VkLnVuc3RhZ2UgKG9uX21lc3NhZ2UgdCB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yKSlcbiAgICAgIH5vbl9lbmRfb2ZfYmF0Y2g6KGZ1biAoKSAtPlxuICAgICAgICB0Lmxhc3Rfc2Vlbl9hbGl2ZSA8LSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZSlcbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IE9rIHJlYXNvbiAtPiBjbGVhbnVwIHQgfnJlYXNvbiAoUnBjX2Vycm9yLlJwYyAoQ29ubmVjdGlvbl9jbG9zZWQsIHQuZGVzY3JpcHRpb24pKVxuICAgICgqIFRoZSBwcm90b2NvbCBpcyBzdWNoIHRoYXQgcmlnaHQgbm93LCB0aGUgb25seSBvdXRjb21lIG9mIHRoZSBvdGhlciBzaWRlIGNsb3NpbmcgdGhlXG4gICAgICAgY29ubmVjdGlvbiBub3JtYWxseSBpcyB0aGF0IHdlIGdldCBhbiBlb2YuICopXG4gICAgfCBFcnJvciAoYEVvZiB8IGBDbG9zZWQpIC0+XG4gICAgICBjbGVhbnVwXG4gICAgICAgIHRcbiAgICAgICAgfnJlYXNvbjooSW5mby5vZl9zdHJpbmcgXCJFT0Ygb3IgY29ubmVjdGlvbiBjbG9zZWRcIilcbiAgICAgICAgKFJwY19lcnJvci5ScGMgKENvbm5lY3Rpb25fY2xvc2VkLCB0LmRlc2NyaXB0aW9uKSkpXG47O1xuXG5sZXQgZG9faGFuZHNoYWtlIHQgd3JpdGVyIH5oYW5kc2hha2VfdGltZW91dCB+aGVhZGVyID1cbiAgaWYgbm90IChXcml0ZXIuY2FuX3NlbmQgd3JpdGVyKVxuICB0aGVuIHJldHVybiAoRXJyb3IgSGFuZHNoYWtlX2Vycm9yLlRyYW5zcG9ydF9jbG9zZWQpXG4gIGVsc2UgKFxuICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90IHdyaXRlciBIZWFkZXIuYmluX3Qud3JpdGVyIGhlYWRlciB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdDtcbiAgICAoKiBJZiB3ZSB1c2UgW21heF9jb25uZWN0aW9uc10gaW4gdGhlIHNlcnZlciwgdGhlbiB0aGlzIHJlYWQgbWF5IGp1c3QgaGFuZyB1bnRpbCB0aGVcbiAgICAgICBzZXJ2ZXIgc3RhcnRzIGFjY2VwdGluZyBuZXcgY29ubmVjdGlvbnMgKHdoaWNoIGNvdWxkIGJlIG5ldmVyKS4gIFRoYXQgaXMgd2h5IGFcbiAgICAgICB0aW1lb3V0IGlzIHVzZWQgKilcbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICB+cnVuOmBOb3dcbiAgICAgICAgKGZ1biAoKSAtPiBSZWFkZXIucmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCB0LnJlYWRlciBIZWFkZXIuYmluX3QucmVhZGVyKVxuICAgIGluXG4gICAgbWF0Y2glbWFwXG4gICAgICBUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXRcbiAgICAgICAgKFRpbWVfc291cmNlLm9mX3N5bmNocm9ub3VzIHQudGltZV9zb3VyY2UpXG4gICAgICAgIGhhbmRzaGFrZV90aW1lb3V0XG4gICAgICAgIHJlc3VsdFxuICAgIHdpdGhcbiAgICB8IGBUaW1lb3V0IC0+XG4gICAgICAoKiBUaGVyZSdzIGEgcGVuZGluZyByZWFkLCB0aGUgcmVhZGVyIGlzIGJhc2ljYWxseSB1c2VsZXNzIG5vdywgc28gd2UgY2xlYW4gaXRcbiAgICAgICAgIHVwLiAqKVxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbjooSW5mby5vZl9zdHJpbmcgXCJIYW5kc2hha2UgdGltZW91dFwiKSk7XG4gICAgICBFcnJvciBIYW5kc2hha2VfZXJyb3IuVGltZW91dFxuICAgIHwgYFJlc3VsdCAoRXJyb3IgZXhuKSAtPlxuICAgICAgbGV0IHJlYXNvbiA9IEluZm8ub2Zfc3RyaW5nIFwiW1JlYWRlci5yZWFkX29uZV9tZXNzYWdlX2Jpbl9wcm90XSByYWlzZWRcIiBpblxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbik7XG4gICAgICBFcnJvciAoUmVhZGluZ19oZWFkZXJfZmFpbGVkIChFcnJvci5vZl9leG4gZXhuKSlcbiAgICB8IGBSZXN1bHQgKE9rIChFcnJvciBgRW9mKSkgLT4gRXJyb3IgRW9mXG4gICAgfCBgUmVzdWx0IChPayAoRXJyb3IgYENsb3NlZCkpIC0+IEVycm9yIFRyYW5zcG9ydF9jbG9zZWRcbiAgICB8IGBSZXN1bHQgKE9rIChPayBwZWVyKSkgLT4gSGVhZGVyLm5lZ290aWF0ZSB+dXM6aGVhZGVyIH5wZWVyKVxuOztcblxubGV0IGNvbnRhaW5zX21hZ2ljX3ByZWZpeCA9IFByb3RvY29sX3ZlcnNpb25faGVhZGVyLmNvbnRhaW5zX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2w6UnBjXG5sZXQgZGVmYXVsdF9oYW5kc2hha2VfaGVhZGVyID0gSGVhZGVyLnYyXG5cbmxldCBoYW5kc2hha2VfaGVhZGVyX292ZXJyaWRlX2tleSA9XG4gIFVuaXZfbWFwLktleS5jcmVhdGUgfm5hbWU6XCJhc3luYyBycGMgaGFuZHNoYWtlIGhlYWRlciBvdmVycmlkZVwiIFslc2V4cF9vZjogSGVhZGVyLnRdXG47O1xuXG5sZXQgZ2V0X2hhbmRzaGFrZV9oZWFkZXIgKCkgPVxuICBBc3luY19rZXJuZWxfc2NoZWR1bGVyLmZpbmRfbG9jYWwgaGFuZHNoYWtlX2hlYWRlcl9vdmVycmlkZV9rZXlcbiAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OmRlZmF1bHRfaGFuZHNoYWtlX2hlYWRlclxuOztcblxubGV0IGNyZWF0ZVxuICAgICAgP2ltcGxlbWVudGF0aW9uc1xuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgID8oaGFuZHNoYWtlX3RpbWVvdXQgPSBkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0KVxuICAgICAgPyhoZWFydGJlYXRfY29uZmlnID0gSGVhcnRiZWF0X2NvbmZpZy5jcmVhdGUgKCkpXG4gICAgICA/KG1heF9tZXRhZGF0YV9zaXplID0gQnl0ZV91bml0cy5vZl9raWxvYnl0ZXMgMS4pXG4gICAgICA/KGRlc2NyaXB0aW9uID0gSW5mby5vZl9zdHJpbmcgXCI8Y3JlYXRlZC1kaXJlY3RseT5cIilcbiAgICAgID8odGltZV9zb3VyY2UgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS53YWxsX2Nsb2NrICgpKVxuICAgICAgKHsgcmVhZGVyOyB3cml0ZXIgfSA6IFRyYW5zcG9ydC50KVxuICA9XG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPVxuICAgIG1hdGNoIGltcGxlbWVudGF0aW9ucyB3aXRoXG4gICAgfCBOb25lIC0+IEltcGxlbWVudGF0aW9ucy5udWxsICgpXG4gICAgfCBTb21lIHMgLT4gc1xuICBpblxuICBsZXQgdCA9XG4gICAgeyBkZXNjcmlwdGlvblxuICAgIDsgaGVhcnRiZWF0X2NvbmZpZyA9IEhlYXJ0YmVhdF9jb25maWcudG9fcnVudGltZSBoZWFydGJlYXRfY29uZmlnXG4gICAgOyBoZWFydGJlYXRfY2FsbGJhY2tzID0gW3x8XVxuICAgIDsgbGFzdF9zZWVuX2FsaXZlID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHRpbWVfc291cmNlXG4gICAgOyBtYXhfbWV0YWRhdGFfc2l6ZVxuICAgIDsgcmVhZGVyXG4gICAgOyB3cml0ZXIgPSBQcm90b2NvbF93cml0ZXIuY3JlYXRlX2JlZm9yZV9uZWdvdGlhdGlvbiB3cml0ZXJcbiAgICA7IG9wZW5fcXVlcmllcyA9IEhhc2h0YmwuUG9seS5jcmVhdGUgfnNpemU6MTAgKClcbiAgICA7IGNsb3NlX3N0YXJ0ZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgY2xvc2VfZmluaXNoZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgaW1wbGVtZW50YXRpb25zX2luc3RhbmNlID0gU2V0X29uY2UuY3JlYXRlICgpXG4gICAgOyB0aW1lX3NvdXJjZVxuICAgIDsgaGVhcnRiZWF0X2V2ZW50ID0gU2V0X29uY2UuY3JlYXRlICgpXG4gICAgOyBuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gPSBTZXRfb25jZS5jcmVhdGUgKClcbiAgICB9XG4gIGluXG4gIGxldCB3cml0ZXJfbW9uaXRvcl9leG5zID0gTW9uaXRvci5kZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gKFdyaXRlci5tb25pdG9yIHdyaXRlcikgaW5cbiAgdXBvbiAoV3JpdGVyLnN0b3BwZWQgd3JpdGVyKSAoZnVuICgpIC0+XG4gICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbjooSW5mby5vZl9zdHJpbmcgXCJSUEMgdHJhbnNwb3J0IHN0b3BwZWRcIikpKTtcbiAgbGV0IGhlYWRlciA9IGdldF9oYW5kc2hha2VfaGVhZGVyICgpIGluXG4gIG1hdGNoJW1hcCBkb19oYW5kc2hha2UgdCB3cml0ZXIgfmhhbmRzaGFrZV90aW1lb3V0IH5oZWFkZXIgd2l0aFxuICB8IE9rIG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiAtPlxuICAgIHJ1bl9hZnRlcl9oYW5kc2hha2VcbiAgICAgIHRcbiAgICAgIHdyaXRlclxuICAgICAgfm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvblxuICAgICAgfmltcGxlbWVudGF0aW9uc1xuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIH53cml0ZXJfbW9uaXRvcl9leG5zO1xuICAgIE9rIHRcbiAgfCBFcnJvciBlcnJvciAtPlxuICAgIEVycm9yIChIYW5kc2hha2VfZXJyb3IudG9fZXhuIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOmRlc2NyaXB0aW9uIGVycm9yKVxuOztcblxubGV0IHdpdGhfY2xvc2VcbiAgICAgID9pbXBsZW1lbnRhdGlvbnNcbiAgICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgID9kZXNjcmlwdGlvblxuICAgICAgP3RpbWVfc291cmNlXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgdHJhbnNwb3J0XG4gICAgICB+ZGlzcGF0Y2hfcXVlcmllc1xuICAgICAgfm9uX2hhbmRzaGFrZV9lcnJvclxuICA9XG4gIGxldCBoYW5kbGVfaGFuZHNoYWtlX2Vycm9yID1cbiAgICBtYXRjaCBvbl9oYW5kc2hha2VfZXJyb3Igd2l0aFxuICAgIHwgYENhbGwgZiAtPiBmXG4gICAgfCBgUmFpc2UgLT4gcmFpc2VcbiAgaW5cbiAgbGV0JWJpbmQgdCA9XG4gICAgY3JlYXRlXG4gICAgICA/aW1wbGVtZW50YXRpb25zXG4gICAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgICA/ZGVzY3JpcHRpb25cbiAgICAgID90aW1lX3NvdXJjZVxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIHRyYW5zcG9ydFxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBFcnJvciBlIC0+XG4gICAgbGV0JWJpbmQgKCkgPSBUcmFuc3BvcnQuY2xvc2UgdHJhbnNwb3J0IGluXG4gICAgaGFuZGxlX2hhbmRzaGFrZV9lcnJvciBlXG4gIHwgT2sgdCAtPlxuICAgIE1vbml0b3IucHJvdGVjdFxuICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgIH5yZXN0OmBMb2dcbiAgICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgICAgY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIlJwYy5Db25uZWN0aW9uLndpdGhfY2xvc2UgZmluaXNoZWRcIikpXG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgICBsZXQlYmluZCByZXN1bHQgPSBkaXNwYXRjaF9xdWVyaWVzIHQgaW5cbiAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbnMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICB8IFNvbWUgXyAtPiBjbG9zZV9maW5pc2hlZCB0XG4gICAgICAgICBpblxuICAgICAgICAgcmVzdWx0KVxuOztcblxubGV0IHNlcnZlcl93aXRoX2Nsb3NlXG4gICAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgICA/ZGVzY3JpcHRpb25cbiAgICAgID90aW1lX3NvdXJjZVxuICAgICAgdHJhbnNwb3J0XG4gICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgfm9uX2hhbmRzaGFrZV9lcnJvclxuICA9XG4gIGxldCBvbl9oYW5kc2hha2VfZXJyb3IgPVxuICAgIG1hdGNoIG9uX2hhbmRzaGFrZV9lcnJvciB3aXRoXG4gICAgfCBgQ2FsbCBmIC0+IGBDYWxsIGZcbiAgICB8IGBSYWlzZSAtPiBgUmFpc2VcbiAgICB8IGBJZ25vcmUgLT4gYENhbGwgKGZ1biBfIC0+IERlZmVycmVkLnVuaXQpXG4gIGluXG4gIHdpdGhfY2xvc2VcbiAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgID9kZXNjcmlwdGlvblxuICAgID90aW1lX3NvdXJjZVxuICAgIHRyYW5zcG9ydFxuICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgIH5vbl9oYW5kc2hha2VfZXJyb3JcbiAgICB+ZGlzcGF0Y2hfcXVlcmllczooZnVuIF8gLT4gRGVmZXJyZWQudW5pdClcbjs7XG5cbmxldCBjbG9zZVxuICAgICAgP3N0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dFxuICAgICAgPyhyZWFzb24gPSBJbmZvLm9mX3N0cmluZyBcIlJwYy5Db25uZWN0aW9uLmNsb3NlXCIpXG4gICAgICB0XG4gID1cbiAgY2xvc2UgP3N0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dCB+cmVhc29uIHRcbjs7XG5cbm1vZHVsZSBDbGllbnRfaW1wbGVtZW50YXRpb25zID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdzIHQgPVxuICAgIHsgY29ubmVjdGlvbl9zdGF0ZSA6IHQgLT4gJ3NcbiAgICA7IGltcGxlbWVudGF0aW9ucyA6ICdzIEltcGxlbWVudGF0aW9ucy50XG4gICAgfVxuXG4gIGxldCBudWxsICgpID1cbiAgICB7IGNvbm5lY3Rpb25fc3RhdGUgPSAoZnVuIF8gLT4gKCkpOyBpbXBsZW1lbnRhdGlvbnMgPSBJbXBsZW1lbnRhdGlvbnMubnVsbCAoKSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIG1vZHVsZSBIZWFkZXIgPSBIZWFkZXJcblxuICBsZXQgd2l0aF9hc3luY19leGVjdXRpb25fY29udGV4dCB+Y29udGV4dCB+ZiA9XG4gICAgQXN5bmNfa2VybmVsX3NjaGVkdWxlci53aXRoX2xvY2FsIGhhbmRzaGFrZV9oZWFkZXJfb3ZlcnJpZGVfa2V5IChTb21lIGNvbnRleHQpIH5mXG4gIDs7XG5lbmRcbiIsIlxub3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBVdGlsXG5tb2R1bGUgUCA9IFByb3RvY29sXG5tb2R1bGUgRGVzY3JpcHRpb24gPSBEZXNjcmlwdGlvblxubW9kdWxlIE9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvblxubW9kdWxlIEltcGxlbWVudGF0aW9uID0gSW1wbGVtZW50YXRpb25cbm1vZHVsZSBJbXBsZW1lbnRhdGlvbnMgPSBJbXBsZW1lbnRhdGlvbnNcbm1vZHVsZSBUcmFuc3BvcnQgPSBUcmFuc3BvcnRcbm1vZHVsZSBDb25uZWN0aW9uID0gQ29ubmVjdGlvblxuXG4oKiBUaGUgUmVzdWx0IG1vbmFkIGlzIGFsc28gdXNlZC4gKilcbmxldCAoID4+PX4gKSA9IFJlc3VsdC4oID4+PSApXG5sZXQgKCA+Pnx+ICkgPSBSZXN1bHQuKCA+PnwgKVxuXG5tb2R1bGUgUnBjX2NvbW1vbiA9IHN0cnVjdFxuICBsZXQgZGlzcGF0Y2hfcmF3J1xuICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgY29ublxuICAgICAgICB+dGFnXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5XG4gICAgICAgIH5xdWVyeVxuICAgICAgICB+cXVlcnlfaWRcbiAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXJcbiAgICA9XG4gICAgbGV0IHF1ZXJ5ID0geyBQLlF1ZXJ5LnRhZzsgdmVyc2lvbjsgaWQgPSBxdWVyeV9pZDsgbWV0YWRhdGE7IGRhdGEgPSBxdWVyeSB9IGluXG4gICAgbWF0Y2ggQ29ubmVjdGlvbi5kaXNwYXRjaCBjb25uIH5yZXNwb25zZV9oYW5kbGVyIH5iaW5fd3JpdGVyX3F1ZXJ5IH5xdWVyeSB3aXRoXG4gICAgfCBPayAoKSAtPiBPayAoKVxuICAgIHwgRXJyb3IgYENsb3NlZCAtPiBFcnJvciBScGNfZXJyb3IuQ29ubmVjdGlvbl9jbG9zZWRcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfcmF3ID9tZXRhZGF0YSBjb25uIH50YWcgfnZlcnNpb24gfmJpbl93cml0ZXJfcXVlcnkgfnF1ZXJ5IH5xdWVyeV9pZCB+ZiA9XG4gICAgbGV0IHJlc3BvbnNlX2l2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIChtYXRjaFxuICAgICAgIGRpc3BhdGNoX3JhdydcbiAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgY29ublxuICAgICAgICAgfnRhZ1xuICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5XG4gICAgICAgICB+cXVlcnlcbiAgICAgICAgIH5xdWVyeV9pZFxuICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6KFNvbWUgKGYgcmVzcG9uc2VfaXZhcikpXG4gICAgIHdpdGhcbiAgICAgfCBPayAoKSAtPiAoKVxuICAgICB8IEVycm9yIF8gYXMgZSAtPiBJdmFyLmZpbGwgcmVzcG9uc2VfaXZhciBlKTtcbiAgICBJdmFyLnJlYWQgcmVzcG9uc2VfaXZhclxuICA7O1xuZW5kXG5cbm1vZHVsZSBScGMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3F1ZXJ5LCAncmVzcG9uc2UpIHQgPVxuICAgIHsgdGFnIDogUC5ScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGJpbl9xdWVyeSA6ICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGJpbl9yZXNwb25zZSA6ICdyZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IHF1ZXJ5X3R5cGVfaWQgOiAncXVlcnkgVHlwZV9lcXVhbC5JZC50XG4gICAgOyByZXNwb25zZV90eXBlX2lkIDogJ3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIH1cblxuICBsZXQgY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSA9XG4gICAgbGV0IHF1ZXJ5X3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OnF1ZXJ5XCJdIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06cmVzcG9uc2VcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIHsgdGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBuYW1lXG4gICAgOyB2ZXJzaW9uXG4gICAgOyBiaW5fcXVlcnlcbiAgICA7IGJpbl9yZXNwb25zZVxuICAgIDsgcXVlcnlfdHlwZV9pZFxuICAgIDsgcmVzcG9uc2VfdHlwZV9pZFxuICAgIH1cbiAgOztcblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LnRhZ1xuICBsZXQgdmVyc2lvbiB0ID0gdC52ZXJzaW9uXG4gIGxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gbmFtZSB0OyB2ZXJzaW9uID0gdmVyc2lvbiB0IH1cbiAgbGV0IHF1ZXJ5X3R5cGVfaWQgdCA9IHQucXVlcnlfdHlwZV9pZFxuICBsZXQgcmVzcG9uc2VfdHlwZV9pZCB0ID0gdC5yZXNwb25zZV90eXBlX2lkXG4gIGxldCBiaW5fcXVlcnkgdCA9IHQuYmluX3F1ZXJ5XG4gIGxldCBiaW5fcmVzcG9uc2UgdCA9IHQuYmluX3Jlc3BvbnNlXG5cbiAgbGV0IHNoYXBlcyB0ID1cbiAgICBScGNfc2hhcGVzLlJwYyB7IHF1ZXJ5ID0gdC5iaW5fcXVlcnkuc2hhcGU7IHJlc3BvbnNlID0gdC5iaW5fcmVzcG9uc2Uuc2hhcGUgfVxuICA7O1xuXG4gIGxldCBibG9ja2luZ19ub19hdXRob3JpemF0aW9uIGYgc3RhdGUgcXVlcnkgPVxuICAgIE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKGYgc3RhdGUgcXVlcnkpXG4gIDs7XG5cbiAgbGV0IGRlZmVycmVkX25vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSBxdWVyeSA9XG4gICAgRWFnZXJfZGVmZXJyZWQubWFwIChmIHN0YXRlIHF1ZXJ5KSB+ZjooZnVuIGEgLT4gT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCBhKVxuICA7O1xuXG4gIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9XG4gICAgICAgIFJwY1xuICAgICAgICAgICggdC5iaW5fcXVlcnkucmVhZGVyXG4gICAgICAgICAgLCB0LmJpbl9yZXNwb25zZS53cml0ZXJcbiAgICAgICAgICAsIGRlZmVycmVkX25vX2F1dGhvcml6YXRpb24gZlxuICAgICAgICAgICwgRGVmZXJyZWQgKVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCcgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9XG4gICAgICAgIFJwY1xuICAgICAgICAgICggdC5iaW5fcXVlcnkucmVhZGVyXG4gICAgICAgICAgLCB0LmJpbl9yZXNwb25zZS53cml0ZXJcbiAgICAgICAgICAsIGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZlxuICAgICAgICAgICwgQmxvY2tpbmcgKVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoJyA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQgcmVzcG9uc2VfaGFuZGxlclxuICAgICAgICAgIGl2YXJcbiAgICAgICAgICAocmVzcG9uc2UgOiBfIFAuUmVzcG9uc2UudClcbiAgICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgPVxuICAgICAgbGV0IHJlc3BvbnNlID1cbiAgICAgICAgcmVzcG9uc2UuZGF0YVxuICAgICAgICA+Pj1+IGZ1biBsZW4gLT5cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICB0LmJpbl9yZXNwb25zZS5yZWFkZXJcbiAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmxvY2F0aW9uOlwiY2xpZW50LXNpZGUgcnBjIHJlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgaW5cbiAgICAgIEl2YXIuZmlsbCBpdmFyIHJlc3BvbnNlO1xuICAgICAgYHJlbW92ZSAoT2sgKCkpXG4gICAgaW5cbiAgICBsZXQgcXVlcnlfaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIFJwY19jb21tb24uZGlzcGF0Y2hfcmF3XG4gICAgICA/bWV0YWRhdGFcbiAgICAgIGNvbm5cbiAgICAgIH50YWc6dC50YWdcbiAgICAgIH52ZXJzaW9uOnQudmVyc2lvblxuICAgICAgfmJpbl93cml0ZXJfcXVlcnk6dC5iaW5fcXVlcnkud3JpdGVyXG4gICAgICB+cXVlcnlcbiAgICAgIH5xdWVyeV9pZFxuICAgICAgfmY6cmVzcG9uc2VfaGFuZGxlclxuICA7O1xuXG4gIGxldCBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHQgPVxuICAgIFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgIHJlc3VsdFxuICAgICAgfnJwY19kZXNjcmlwdGlvbjooZGVzY3JpcHRpb24gdClcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOihDb25uZWN0aW9uLmRlc2NyaXB0aW9uIGNvbm4pXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgOztcblxuICBsZXQgZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0JW1hcCByZXN1bHQgPSBkaXNwYXRjaCcgP21ldGFkYXRhIHQgY29ubiBxdWVyeSBpblxuICAgIHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdFxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9leG4gP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSA+PnwgT3JfZXJyb3Iub2tfZXhuXG4gIDs7XG5cbiAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgIG1vZHVsZSBSZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbnMuRXhwZXJ0LlJwY19yZXNwb25kZXJcblxuICAgIGxldCBtYWtlX2Rpc3BhdGNoXG4gICAgICAgICAgZG9fZGlzcGF0Y2hcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgID1cbiAgICAgIGxldCByZXNwb25zZV9oYW5kbGVyIDogQ29ubmVjdGlvbi5yZXNwb25zZV9oYW5kbGVyID1cbiAgICAgICAgZnVuIHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZiAtPlxuICAgICAgICAgIG1hdGNoIHJlc3BvbnNlLmRhdGEgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgICAgaGFuZGxlX2Vycm9yXG4gICAgICAgICAgICAgIChFcnJvci50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgKFJwY19lcnJvci5zZXhwX29mX3RcbiAgICAgICAgICAgICAgICAgICAgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbjooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgICAgICAgICAoRGVmZXJyZWQucGVlayAoQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgOiBJbmZvLnQgb3B0aW9uKV0pXG4gICAgICAgICAgICAgICAgICAgIGUpKTtcbiAgICAgICAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgICAgICAgIHwgT2sgbGVuIC0+XG4gICAgICAgICAgICBsZXQgbGVuID0gKGxlbiA6IE5hdDAudCA6PiBpbnQpIGluXG4gICAgICAgICAgICBsZXQgZCA9IGhhbmRsZV9yZXNwb25zZSByZWFkX2J1ZmZlciB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmIH5sZW4gaW5cbiAgICAgICAgICAgIHJlYWRfYnVmZmVyX3Bvc19yZWYgOj0gIXJlYWRfYnVmZmVyX3Bvc19yZWYgKyBsZW47XG4gICAgICAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGQgdGhlbiBgcmVtb3ZlIChPayAoKSkgZWxzZSBgcmVtb3ZlX2FuZF93YWl0IGRcbiAgICAgIGluXG4gICAgICBkb19kaXNwYXRjaFxuICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgY29ublxuICAgICAgICB+dGFnOihQLlJwY190YWcub2Zfc3RyaW5nIHJwY190YWcpXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIGJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6KFNvbWUgcmVzcG9uc2VfaGFuZGxlcilcbiAgICA7O1xuXG4gICAgbGV0IGRpc3BhdGNoXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICA9XG4gICAgICBtYXRjaFxuICAgICAgICBtYWtlX2Rpc3BhdGNoXG4gICAgICAgICAgQ29ubmVjdGlvbi5kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgKCkgLT4gYE9rXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIGxldCBzY2hlZHVsZV9kaXNwYXRjaFxuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgbWFrZV9kaXNwYXRjaFxuICAgICAgICAgIENvbm5lY3Rpb24uc2NoZWR1bGVfZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICB3aXRoXG4gICAgICB8IE9rIGQgLT4gYEZsdXNoZWQgZFxuICAgICAgfCBFcnJvciBgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIDs7XG5cbiAgICB0eXBlIGltcGxlbWVudGF0aW9uX3Jlc3VsdCA9IEltcGxlbWVudGF0aW9uLkV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQgPVxuICAgICAgfCBSZXBsaWVkXG4gICAgICB8IERlbGF5ZWRfcmVzcG9uc2Ugb2YgdW5pdCBEZWZlcnJlZC50XG5cbiAgICBsZXQgZGVmZXJyZWRfbm9fYXV0aG9yaXphdGlvbiBmIHN0YXRlIHJlc3BvbmRlciBidWYgfnBvcyB+bGVuID1cbiAgICAgIEVhZ2VyX2RlZmVycmVkLm1hcCAoZiBzdGF0ZSByZXNwb25kZXIgYnVmIH5wb3MgfmxlbikgfmY6KGZ1biBhIC0+XG4gICAgICAgIE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgYSlcbiAgICA7O1xuXG4gICAgbGV0IGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSByZXNwb25kZXIgYnVmIH5wb3MgfmxlbiA9XG4gICAgICBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIChmIHN0YXRlIHJlc3BvbmRlciBidWYgfnBvcyB+bGVuKVxuICAgIDs7XG5cbiAgICBsZXQgaW1wbGVtZW50ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSB0IGYgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIGYsIERlZmVycmVkKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnQnID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSB0IGYgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChibG9ja2luZ19ub19hdXRob3JpemF0aW9uIGYsIEJsb2NraW5nKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnRfZm9yX3RhZ19hbmRfdmVyc2lvblxuICAgICAgICAgID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKVxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBmXG4gICAgICA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgcnBjX3RhZ1xuICAgICAgOyB2ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIGYsIERlZmVycmVkKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IFJwY19zaGFwZXMuVW5rbm93blxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uJ1xuICAgICAgICAgID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKVxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBmXG4gICAgICA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgcnBjX3RhZ1xuICAgICAgOyB2ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChibG9ja2luZ19ub19hdXRob3JpemF0aW9uIGYsIEJsb2NraW5nKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IFJwY19zaGFwZXMuVW5rbm93blxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgT25lX3dheSA9IHN0cnVjdFxuICB0eXBlICdtc2cgdCA9XG4gICAgeyB0YWcgOiBQLlJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgYmluX21zZyA6ICdtc2cgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBtc2dfdHlwZV9pZCA6ICdtc2cgVHlwZV9lcXVhbC5JZC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgbGV0IG5hbWUgdCA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC50YWdcblxuICBsZXQgY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fbXNnID1cbiAgICBsZXQgbXNnX3R5cGVfaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06bXNnXCJdIHNleHBfb2Zfb3BhcXVlIGluXG4gICAgeyB0YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIG5hbWU7IHZlcnNpb247IGJpbl9tc2c7IG1zZ190eXBlX2lkIH1cbiAgOztcblxuICBsZXQgc2hhcGVzIHQgPSBScGNfc2hhcGVzLk9uZV93YXkgeyBtc2cgPSB0LmJpbl9tc2cuc2hhcGUgfVxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBtc2dfdHlwZV9pZCB0ID0gdC5tc2dfdHlwZV9pZFxuXG4gIGxldCBub19hdXRob3JpemF0aW9uIGYgc3RhdGUgcXVlcnkgPVxuICAgIEVhZ2VyX2RlZmVycmVkLnJldHVybiAoT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoZiBzdGF0ZSBxdWVyeSkpXG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uKSB0IGYgPVxuICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICA7IGYgPSBPbmVfd2F5ICh0LmJpbl9tc2cucmVhZGVyLCBub19hdXRob3JpemF0aW9uIGYpXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgZGlzcGF0Y2gnID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCBxdWVyeV9pZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgUnBjX2NvbW1vbi5kaXNwYXRjaF9yYXcnXG4gICAgICA/bWV0YWRhdGFcbiAgICAgIGNvbm5cbiAgICAgIH50YWc6dC50YWdcbiAgICAgIH52ZXJzaW9uOnQudmVyc2lvblxuICAgICAgfmJpbl93cml0ZXJfcXVlcnk6dC5iaW5fbXNnLndyaXRlclxuICAgICAgfnF1ZXJ5XG4gICAgICB+cXVlcnlfaWRcbiAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgOztcblxuICBsZXQgcnBjX3Jlc3VsdF90b19vcl9lcnJvciB0IGNvbm4gcmVzdWx0ID1cbiAgICBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICByZXN1bHRcbiAgICAgIH5ycGNfZGVzY3JpcHRpb246KGRlc2NyaXB0aW9uIHQpXG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjooQ29ubmVjdGlvbi5kZXNjcmlwdGlvbiBjb25uKVxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDooQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGRpc3BhdGNoJyA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IHw+IGZ1biByZXN1bHQgLT4gcnBjX3Jlc3VsdF90b19vcl9lcnJvciB0IGNvbm4gcmVzdWx0XG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX2V4biA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBPcl9lcnJvci5va19leG4gKGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkpXG4gIDs7XG5cbiAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgIGxldCBub19hdXRob3JpemF0aW9uIGYgc3RhdGUgYnVmIH5wb3MgfmxlbiA9XG4gICAgICBFYWdlcl9kZWZlcnJlZC5yZXR1cm4gKE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKGYgc3RhdGUgYnVmIH5wb3MgfmxlbikpXG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY2xvc2VfY29ubmVjdGlvbikgdCBmID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgICAgOyBmID0gT25lX3dheV9leHBlcnQgKG5vX2F1dGhvcml6YXRpb24gZilcbiAgICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgZGlzcGF0Y2hcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICB7IHRhZzsgdmVyc2lvbjsgYmluX21zZyA9IF87IG1zZ190eXBlX2lkID0gXyB9XG4gICAgICAgICAgY29ublxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICA9XG4gICAgICBtYXRjaFxuICAgICAgICBDb25uZWN0aW9uLmRpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+dGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgKCkgLT4gYE9rXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIGxldCBzY2hlZHVsZV9kaXNwYXRjaFxuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIHsgdGFnOyB2ZXJzaW9uOyBiaW5fbXNnID0gXzsgbXNnX3R5cGVfaWQgPSBfIH1cbiAgICAgICAgICBjb25uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgID1cbiAgICAgIG1hdGNoXG4gICAgICAgIENvbm5lY3Rpb24uc2NoZWR1bGVfZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH50YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICAgICAgd2l0aFxuICAgICAgfCBPayBmbHVzaGVkIC0+IGBGbHVzaGVkIGZsdXNoZWRcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGlwZV9jbG9zZV9yZWFzb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENsb3NlZF9sb2NhbGx5XG4gICAgfCBDbG9zZWRfcmVtb3RlbHlcbiAgICB8IEVycm9yIG9mIEVycm9yLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgWyVleHBlY3Qge3wgNzQ4YzhiZjQ1MDJkMDk3OGQwMDdiZjdmOTZhN2VmN2YgfH1dXG4gIDs7XG5cbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgPVxuICAgICAgICB8IENsb3NlZF9sb2NhbGx5XG4gICAgICAgIHwgQ2xvc2VkX3JlbW90ZWx5XG4gICAgICAgIHwgRXJyb3Igb2YgRXJyb3IuU3RhYmxlLlYyLnRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDc0OGM4YmY0NTAyZDA5NzhkMDA3YmY3Zjk2YTdlZjdmIHx9XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuKCogdGhlIGJhc2lzIG9mIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgUGlwZV9ycGMgYW5kIFN0YXRlX3JwYyAqKVxubW9kdWxlIFN0cmVhbWluZ19ycGMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEluaXRpYWxfbWVzc2FnZSA9IFAuU3RyZWFtX2luaXRpYWxfbWVzc2FnZVxuXG4gIHR5cGUgKCdxdWVyeSwgJ2luaXRpYWxfcmVzcG9uc2UsICd1cGRhdGVfcmVzcG9uc2UsICdlcnJvcl9yZXNwb25zZSkgdCA9XG4gICAgeyB0YWcgOiBQLlJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgYmluX3F1ZXJ5IDogJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX2luaXRpYWxfcmVzcG9uc2UgOiAnaW5pdGlhbF9yZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGJpbl91cGRhdGVfcmVzcG9uc2UgOiAndXBkYXRlX3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX2Vycm9yX3Jlc3BvbnNlIDogJ2Vycm9yX3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgIDsgcXVlcnlfdHlwZV9pZCA6ICdxdWVyeSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IGluaXRpYWxfcmVzcG9uc2VfdHlwZV9pZCA6ICdpbml0aWFsX3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIDsgdXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWQgOiAndXBkYXRlX3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIDsgZXJyb3JfcmVzcG9uc2VfdHlwZV9pZCA6ICdlcnJvcl9yZXNwb25zZSBUeXBlX2VxdWFsLklkLnRcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgfmJpbl9pbml0aWFsX3Jlc3BvbnNlXG4gICAgICAgIH5iaW5fdXBkYXRlX3Jlc3BvbnNlXG4gICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgfmFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlXG4gICAgICAgIH5hbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlXG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCBjbGllbnRfcHVzaGVzX2JhY2sgPVxuICAgICAgbWF0Y2ggY2xpZW50X3B1c2hlc19iYWNrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lICgpIC0+IHRydWVcbiAgICBpblxuICAgIGxldCBxdWVyeV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTpxdWVyeVwiXSBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgbGV0IGluaXRpYWxfcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZVxuICAgICAgICB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06JXthbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZX1cIl1cbiAgICAgICAgc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCB1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZVxuICAgICAgICB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06JXthbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlfVwiXVxuICAgICAgICBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgbGV0IGVycm9yX3Jlc3BvbnNlX3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OmVycm9yXCJdIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICB7IHRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgbmFtZVxuICAgIDsgdmVyc2lvblxuICAgIDsgYmluX3F1ZXJ5XG4gICAgOyBiaW5faW5pdGlhbF9yZXNwb25zZVxuICAgIDsgYmluX3VwZGF0ZV9yZXNwb25zZVxuICAgIDsgYmluX2Vycm9yX3Jlc3BvbnNlID0gYmluX2Vycm9yXG4gICAgOyBjbGllbnRfcHVzaGVzX2JhY2tcbiAgICA7IHF1ZXJ5X3R5cGVfaWRcbiAgICA7IGluaXRpYWxfcmVzcG9uc2VfdHlwZV9pZFxuICAgIDsgdXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWRcbiAgICA7IGVycm9yX3Jlc3BvbnNlX3R5cGVfaWRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1ha2VfaW5pdGlhbF9tZXNzYWdlIHggPVxuICAgIHsgSW5pdGlhbF9tZXNzYWdlLnVudXNlZF9xdWVyeV9pZCA9IFAuVW51c2VkX3F1ZXJ5X2lkLnQ7IGluaXRpYWwgPSB4IH1cbiAgOztcblxuICBsZXQgc2hhcGVzIHQgPVxuICAgIFJwY19zaGFwZXMuU3RyZWFtaW5nX3JwY1xuICAgICAgeyBxdWVyeSA9IHQuYmluX3F1ZXJ5LnNoYXBlXG4gICAgICA7IGluaXRpYWxfcmVzcG9uc2UgPSB0LmJpbl9pbml0aWFsX3Jlc3BvbnNlLnNoYXBlXG4gICAgICA7IHVwZGF0ZV9yZXNwb25zZSA9IHQuYmluX3VwZGF0ZV9yZXNwb25zZS5zaGFwZVxuICAgICAgOyBlcnJvciA9IHQuYmluX2Vycm9yX3Jlc3BvbnNlLnNoYXBlXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudF9nZW4gdCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgaW1wbCA9XG4gICAgbGV0IGJpbl9pbml0X3dyaXRlciA9XG4gICAgICBJbml0aWFsX21lc3NhZ2UuYmluX3dyaXRlcl90XG4gICAgICAgIHQuYmluX2luaXRpYWxfcmVzcG9uc2Uud3JpdGVyXG4gICAgICAgIHQuYmluX2Vycm9yX3Jlc3BvbnNlLndyaXRlclxuICAgIGluXG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9XG4gICAgICAgIFN0cmVhbWluZ19ycGNcbiAgICAgICAgICB7IGJpbl9xdWVyeV9yZWFkZXIgPSB0LmJpbl9xdWVyeS5yZWFkZXJcbiAgICAgICAgICA7IGJpbl9pbml0X3dyaXRlclxuICAgICAgICAgIDsgYmluX3VwZGF0ZV93cml0ZXIgPSB0LmJpbl91cGRhdGVfcmVzcG9uc2Uud3JpdGVyXG4gICAgICAgICAgOyBpbXBsXG4gICAgICAgICAgfVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgbGV0IGYgYyBxdWVyeSA9XG4gICAgICBtYXRjaCVtYXAgZiBjIHF1ZXJ5IHdpdGhcbiAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgIE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKEVycm9yIChtYWtlX2luaXRpYWxfbWVzc2FnZSAoRXJyb3IgZXJyKSkpXG4gICAgICB8IE9rIChpbml0aWFsLCBwaXBlKSAtPiBBdXRob3JpemVkIChPayAobWFrZV9pbml0aWFsX21lc3NhZ2UgKE9rIGluaXRpYWwpLCBwaXBlKSlcbiAgICBpblxuICAgIGltcGxlbWVudF9nZW4gdCA/b25fZXhjZXB0aW9uIChQaXBlIGYpXG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudF9kaXJlY3QgP29uX2V4Y2VwdGlvbiB0IGYgPVxuICAgIGxldCBmIGMgcXVlcnkgd3JpdGVyID1cbiAgICAgIG1hdGNoJW1hcCBmIGMgcXVlcnkgd3JpdGVyIHdpdGhcbiAgICAgIHwgRXJyb3IgXyBhcyB4IC0+IE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKEVycm9yIChtYWtlX2luaXRpYWxfbWVzc2FnZSB4KSlcbiAgICAgIHwgT2sgXyBhcyB4IC0+IEF1dGhvcml6ZWQgKE9rIChtYWtlX2luaXRpYWxfbWVzc2FnZSB4KSlcbiAgICBpblxuICAgIGltcGxlbWVudF9nZW4gP29uX2V4Y2VwdGlvbiB0IChEaXJlY3QgZilcbiAgOztcblxuICBsZXQgYWJvcnQgdCBjb25uIGlkID1cbiAgICBsZXQgcXVlcnkgPVxuICAgICAgeyBQLlF1ZXJ5LnRhZyA9IHQudGFnOyB2ZXJzaW9uID0gdC52ZXJzaW9uOyBpZDsgbWV0YWRhdGEgPSBOb25lOyBkYXRhID0gYEFib3J0IH1cbiAgICBpblxuICAgIGlnbm9yZVxuICAgICAgKENvbm5lY3Rpb24uZGlzcGF0Y2hcbiAgICAgICAgIGNvbm5cbiAgICAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5OlAuU3RyZWFtX3F1ZXJ5LmJpbl93cml0ZXJfbmF0MF90XG4gICAgICAgICB+cXVlcnlcbiAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgICAgICA6ICh1bml0LCBbIGBDbG9zZWQgXSkgUmVzdWx0LnQpXG4gIDs7XG5cbiAgbW9kdWxlIFBpcGVfbWVzc2FnZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFVwZGF0ZSBvZiAnYVxuICAgICAgfCBDbG9zZWQgb2YgWyBgQnlfcmVtb3RlX3NpZGUgfCBgRXJyb3Igb2YgRXJyb3IudCBdXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3Jlc3BvbnNlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQ29udGludWVcbiAgICAgIHwgV2FpdCBvZiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfbWV0YWRhdGEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBxdWVyeV9pZCA6IFAuUXVlcnlfaWQudFxuICAgICAgOyBjbG9zZV9yZWFzb24gOiBQaXBlX2Nsb3NlX3JlYXNvbi50IERlZmVycmVkLnRcbiAgICAgIH1cblxuICAgIGxldCBpZCB0ID0gdC5xdWVyeV9pZFxuICAgIGxldCBjbG9zZV9yZWFzb24gdCA9IHQuY2xvc2VfcmVhc29uXG4gIGVuZFxuXG4gIG1vZHVsZSBSZXNwb25zZV9zdGF0ZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBVcGRhdGVfaGFuZGxlciA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9yZXNwb25zZS50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgSW5pdGlhbCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdxLCAnaSwgJ3UsICdlLCAnZXh0cmEpIHQgPVxuICAgICAgICB7IHJwYyA6ICgncSwgJ2ksICd1LCAnZSkgdFxuICAgICAgICA7IHF1ZXJ5X2lkIDogUC5RdWVyeV9pZC50XG4gICAgICAgIDsgbWFrZV91cGRhdGVfaGFuZGxlciA6IHVuaXQgLT4gJ2V4dHJhICogJ3UgVXBkYXRlX2hhbmRsZXIudFxuICAgICAgICA7IGl2YXIgOiAoUC5RdWVyeV9pZC50ICogJ2kgKiAnZXh0cmEsICdlKSBSZXN1bHQudCBScGNfcmVzdWx0LnQgSXZhci50XG4gICAgICAgIDsgY29ubmVjdGlvbiA6IENvbm5lY3Rpb24udFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgV2FpdGluZ19mb3JfaW5pdGlhbF9yZXNwb25zZSA6ICgncSwgJ2ksICd1LCAnZSwgJ2V4dHJhKSBJbml0aWFsLnQgLT4gJ3UgdFxuICAgICAgICB8IFdyaXRpbmdfdXBkYXRlcyBvZiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciAqICdhIFVwZGF0ZV9oYW5kbGVyLnRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBzdGF0ZSA6ICdhIFN0YXRlLnQgfVxuICBlbmRcblxuICBsZXQgcmVhZF9lcnJvclxuICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uXG4gICAgICAgIChoYW5kbGVyIDogXyBSZXNwb25zZV9zdGF0ZS5VcGRhdGVfaGFuZGxlci50KVxuICAgICAgICBlcnJcbiAgICA9XG4gICAgbGV0IGNvcmVfZXJyID1cbiAgICAgIEVycm9yLnRfb2Zfc2V4cCAoUnBjX2Vycm9yLnNleHBfb2ZfdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGVycilcbiAgICBpblxuICAgIGlnbm9yZSAoaGFuZGxlciAoQ2xvc2VkIChgRXJyb3IgY29yZV9lcnIpKSA6IFBpcGVfcmVzcG9uc2UudCk7XG4gICAgYHJlbW92ZSAoRXJyb3IgZXJyKVxuICA7O1xuXG4gIGxldCBlb2YgKGhhbmRsZXIgOiBfIFJlc3BvbnNlX3N0YXRlLlVwZGF0ZV9oYW5kbGVyLnQpID1cbiAgICBpZ25vcmUgKGhhbmRsZXIgKENsb3NlZCBgQnlfcmVtb3RlX3NpZGUpIDogUGlwZV9yZXNwb25zZS50KTtcbiAgICBgcmVtb3ZlIChPayAoKSlcbiAgOztcblxuICBsZXQgcmVzcG9uc2VfaGFuZGxlciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGluaXRpYWxfc3RhdGVcbiAgICA6IENvbm5lY3Rpb24ucmVzcG9uc2VfaGFuZGxlclxuICAgID1cbiAgICBsZXQgb3BlbiBSZXNwb25zZV9zdGF0ZSBpblxuICAgIGxldCBzdGF0ZSA9IHsgc3RhdGUgPSBXYWl0aW5nX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIGluaXRpYWxfc3RhdGUgfSBpblxuICAgIGZ1biByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWYgLT5cbiAgICAgIG1hdGNoIHN0YXRlLnN0YXRlIHdpdGhcbiAgICAgIHwgV3JpdGluZ191cGRhdGVzIChiaW5fcmVhZGVyX3VwZGF0ZSwgaGFuZGxlcikgLT5cbiAgICAgICAgKG1hdGNoIHJlc3BvbnNlLmRhdGEgd2l0aFxuICAgICAgICAgfCBFcnJvciBlcnIgLT4gcmVhZF9lcnJvciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGhhbmRsZXIgZXJyXG4gICAgICAgICB8IE9rIGxlbiAtPlxuICAgICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICAgICAgIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEuYmluX3JlYWRlcl9uYXQwX3RcbiAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBzdHJlYW1pbmdfcnBjIHJlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgICAgICAgfmFkZF9sZW46KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgIHwgYEVvZiAtPiAwXG4gICAgICAgICAgICAgICAgIHwgYE9rIChsZW4gOiBOYXQwLnQpIC0+IChsZW4gOj4gaW50KSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgKG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gcmVhZF9lcnJvciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGhhbmRsZXIgZXJyXG4gICAgICAgICAgICB8IE9rIGBFb2YgLT4gZW9mIGhhbmRsZXJcbiAgICAgICAgICAgIHwgT2sgKGBPayBsZW4pIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgICAgICAgYmluX3JlYWRlcl91cGRhdGVcbiAgICAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBzdHJlYW1pbmdfcnBjIHJlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAobWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIGVyciAtPiByZWFkX2Vycm9yIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaGFuZGxlciBlcnJcbiAgICAgICAgICAgICAgIHwgT2sgZGF0YSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggaGFuZGxlciAoVXBkYXRlIGRhdGEpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQ29udGludWUgLT4gYGtlZXBcbiAgICAgICAgICAgICAgICAgIHwgV2FpdCBkIC0+IGB3YWl0IGQpKSkpXG4gICAgICB8IFN0YXRlLldhaXRpbmdfZm9yX2luaXRpYWxfcmVzcG9uc2UgaW5pdGlhbF9oYW5kbGVyIC0+XG4gICAgICAgICgqIFdlIG5ldmVyIHVzZSBbYHJlbW92ZSAoRXJyb3IgXyldIGhlcmUsIHNpbmNlIHRoYXQgaW5kaWNhdGVzIHRoYXQgdGhlXG4gICAgICAgICAgIGNvbm5lY3Rpb24gc2hvdWxkIGJlIGNsb3NlZCwgYW5kIHRoZXNlIGFyZSBcIm5vcm1hbFwiIGVycm9ycy4gKEluIGNvbnRyYXN0LCB0aGVcbiAgICAgICAgICAgZXJyb3JzIHdlIGdldCBpbiB0aGUgW1dyaXRpbmdfdXBkYXRlc190b19waXBlXSBjYXNlIGluZGljYXRlIG1vcmUgc2VyaW91c1xuICAgICAgICAgICBwcm9ibGVtcy4pIEluc3RlYWQsIHdlIGp1c3QgcHV0IGVycm9ycyBpbiBbaXZhcl0uICopXG4gICAgICAgIGxldCBlcnJvciBlcnIgPVxuICAgICAgICAgIEl2YXIuZmlsbCBpbml0aWFsX2hhbmRsZXIuaXZhciAoRXJyb3IgZXJyKTtcbiAgICAgICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIHJlc3BvbnNlLmRhdGEgd2l0aFxuICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyb3IgZXJyXG4gICAgICAgICB8IE9rIGxlbiAtPlxuICAgICAgICAgICBsZXQgaW5pdGlhbCA9XG4gICAgICAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICAgICAgIChJbml0aWFsX21lc3NhZ2UuYmluX3JlYWRlcl90XG4gICAgICAgICAgICAgICAgICBpbml0aWFsX2hhbmRsZXIucnBjLmJpbl9pbml0aWFsX3Jlc3BvbnNlLnJlYWRlclxuICAgICAgICAgICAgICAgICAgaW5pdGlhbF9oYW5kbGVyLnJwYy5iaW5fZXJyb3JfcmVzcG9uc2UucmVhZGVyKVxuICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHN0cmVhbWluZ19ycGMgaW5pdGlhbF9yZXNwb25zZSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgKG1hdGNoIGluaXRpYWwgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyb3IgZXJyXG4gICAgICAgICAgICB8IE9rIGluaXRpYWxfbXNnIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBpbml0aWFsX21zZy5pbml0aWFsIHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgICAgICAgIEl2YXIuZmlsbCBpbml0aWFsX2hhbmRsZXIuaXZhciAoT2sgKEVycm9yIGVycikpO1xuICAgICAgICAgICAgICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICAgICAgICAgICAgIHwgT2sgaW5pdGlhbCAtPlxuICAgICAgICAgICAgICAgICBsZXQgZXh0cmEsIGhhbmRsZXIgPSBpbml0aWFsX2hhbmRsZXIubWFrZV91cGRhdGVfaGFuZGxlciAoKSBpblxuICAgICAgICAgICAgICAgICBJdmFyLmZpbGxcbiAgICAgICAgICAgICAgICAgICBpbml0aWFsX2hhbmRsZXIuaXZhclxuICAgICAgICAgICAgICAgICAgIChPayAoT2sgKGluaXRpYWxfaGFuZGxlci5xdWVyeV9pZCwgaW5pdGlhbCwgZXh0cmEpKSk7XG4gICAgICAgICAgICAgICAgIHN0YXRlLnN0YXRlXG4gICAgICAgICAgICAgICAgIDwtIFdyaXRpbmdfdXBkYXRlc1xuICAgICAgICAgICAgICAgICAgICAgIChpbml0aWFsX2hhbmRsZXIucnBjLmJpbl91cGRhdGVfcmVzcG9uc2UucmVhZGVyLCBoYW5kbGVyKTtcbiAgICAgICAgICAgICAgICAgYGtlZXApKSlcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfZ2VuID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgbWFrZV91cGRhdGVfaGFuZGxlciA9XG4gICAgbGV0IGJpbl93cml0ZXJfcXVlcnkgPVxuICAgICAgUC5TdHJlYW1fcXVlcnkuYmluX3dyaXRlcl9uZWVkc19sZW5ndGhcbiAgICAgICAgKFdyaXRlcl93aXRoX2xlbmd0aC5vZl90eXBlX2NsYXNzIHQuYmluX3F1ZXJ5KVxuICAgIGluXG4gICAgbGV0IHF1ZXJ5ID0gYFF1ZXJ5IHF1ZXJ5IGluXG4gICAgbGV0IHF1ZXJ5X2lkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBScGNfY29tbW9uLmRpc3BhdGNoX3Jhd1xuICAgICAgP21ldGFkYXRhXG4gICAgICBjb25uXG4gICAgICB+cXVlcnlfaWRcbiAgICAgIH50YWc6dC50YWdcbiAgICAgIH52ZXJzaW9uOnQudmVyc2lvblxuICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgIH5xdWVyeVxuICAgICAgfmY6KGZ1biBpdmFyIC0+XG4gICAgICAgIHJlc3BvbnNlX2hhbmRsZXJcbiAgICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAoRGVmZXJyZWQucGVlayAoQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gICAgICAgICAgICAgICA6IEluZm8udCBvcHRpb24pXSlcbiAgICAgICAgICB7IHJwYyA9IHQ7IHF1ZXJ5X2lkOyBjb25uZWN0aW9uID0gY29ubjsgaXZhcjsgbWFrZV91cGRhdGVfaGFuZGxlciB9KVxuICAgID4+fCBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICAgICAgfnJwY19kZXNjcmlwdGlvbjp7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHQudGFnOyB2ZXJzaW9uID0gdC52ZXJzaW9uIH1cbiAgICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjooQ29ubmVjdGlvbi5kZXNjcmlwdGlvbiBjb25uKVxuICAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9pdGVyID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgfmYgPVxuICAgIG1hdGNoJW1hcCBkaXNwYXRjaF9nZW4gP21ldGFkYXRhIHQgY29ubiBxdWVyeSAoZnVuICgpIC0+ICgpLCBmKSB3aXRoXG4gICAgfCAoRXJyb3IgXyB8IE9rIChFcnJvciBfKSkgYXMgZSAtPiBlXG4gICAgfCBPayAoT2sgKGlkLCBpbml0LCAoKSkpIC0+IE9rIChPayAoaWQsIGluaXQpKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGRpc3BhdGNoX2dlbiA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IChmdW4gKCkgLT5cbiAgICAgICAgbGV0IHBpcGVfciwgcGlwZV93ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICAgICAgKCogU2V0IGEgc21hbGwgYnVmZmVyIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHB1c2hiYWNrIGV2ZW50cyAqKVxuICAgICAgICBQaXBlLnNldF9zaXplX2J1ZGdldCBwaXBlX3cgMTAwO1xuICAgICAgICBsZXQgY2xvc2VfcmVhc29uIDogUGlwZV9jbG9zZV9yZWFzb24udCBJdmFyLnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgICBsZXQgZiA6IF8gUmVzcG9uc2Vfc3RhdGUuVXBkYXRlX2hhbmRsZXIudCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBVcGRhdGUgZGF0YSAtPlxuICAgICAgICAgICAgaWYgbm90IChQaXBlLmlzX2Nsb3NlZCBwaXBlX3cpXG4gICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHBpcGVfdyBkYXRhO1xuICAgICAgICAgICAgICBpZiB0LmNsaWVudF9wdXNoZXNfYmFjayAmJiBQaXBlLmxlbmd0aCBwaXBlX3cgPj0gUGlwZS5zaXplX2J1ZGdldCBwaXBlX3dcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIFdhaXRcbiAgICAgICAgICAgICAgICAgIChtYXRjaCVtYXAgUGlwZS5kb3duc3RyZWFtX2ZsdXNoZWQgcGlwZV93IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBPayB8IGBSZWFkZXJfY2xvc2VkIC0+ICgpKVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlKVxuICAgICAgICAgICAgZWxzZSBDb250aW51ZVxuICAgICAgICAgIHwgQ2xvc2VkIHJlYXNvbiAtPlxuICAgICAgICAgICAgSXZhci5maWxsX2lmX2VtcHR5XG4gICAgICAgICAgICAgIGNsb3NlX3JlYXNvblxuICAgICAgICAgICAgICAobWF0Y2ggcmVhc29uIHdpdGhcbiAgICAgICAgICAgICAgIHwgYEJ5X3JlbW90ZV9zaWRlIC0+IENsb3NlZF9yZW1vdGVseVxuICAgICAgICAgICAgICAgfCBgRXJyb3IgZXJyIC0+IEVycm9yIGVycik7XG4gICAgICAgICAgICBQaXBlLmNsb3NlIHBpcGVfdztcbiAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgIGluXG4gICAgICAgIChwaXBlX3IsIGNsb3NlX3JlYXNvbiksIGYpXG4gICAgd2l0aFxuICAgIHwgKEVycm9yIF8gfCBPayAoRXJyb3IgXykpIGFzIGUgLT4gZVxuICAgIHwgT2sgKE9rIChpZCwgaW5pdCwgKHBpcGVfciwgY2xvc2VfcmVhc29uKSkpIC0+XG4gICAgICB1cG9uIChQaXBlLmNsb3NlZCBwaXBlX3IpIChmdW4gKCkgLT5cbiAgICAgICAgaWYgbm90IChJdmFyLmlzX2Z1bGwgY2xvc2VfcmVhc29uKVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBhYm9ydCB0IGNvbm4gaWQ7XG4gICAgICAgICAgSXZhci5maWxsX2lmX2VtcHR5IGNsb3NlX3JlYXNvbiBDbG9zZWRfbG9jYWxseSkpO1xuICAgICAgbGV0IHBpcGVfbWV0YWRhdGEgOiBQaXBlX21ldGFkYXRhLnQgPVxuICAgICAgICB7IHF1ZXJ5X2lkID0gaWQ7IGNsb3NlX3JlYXNvbiA9IEl2YXIucmVhZCBjbG9zZV9yZWFzb24gfVxuICAgICAgaW5cbiAgICAgIE9rIChPayAocGlwZV9tZXRhZGF0YSwgaW5pdCwgcGlwZV9yKSlcbiAgOztcbmVuZFxuXG4oKiBBIFBpcGVfcnBjIGlzIGxpa2UgYSBTdHJlYW1pbmdfcnBjLCBleGNlcHQgd2UgZG9uJ3QgY2FyZSBhYm91dCBpbml0aWFsIHN0YXRlIC0gdGh1c1xuICAgaXQgaXMgcmVzdHJpY3RlZCB0byB1bml0IGFuZCB1bHRpbWF0ZWx5IGlnbm9yZWQgKilcbm1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICB0eXBlICgncXVlcnksICdyZXNwb25zZSwgJ2Vycm9yKSB0ID0gKCdxdWVyeSwgdW5pdCwgJ3Jlc3BvbnNlLCAnZXJyb3IpIFN0cmVhbWluZ19ycGMudFxuXG4gIG1vZHVsZSBJZCA9IFAuUXVlcnlfaWRcbiAgbW9kdWxlIE1ldGFkYXRhID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhXG5cbiAgbGV0IGNyZWF0ZSA/Y2xpZW50X3B1c2hlc19iYWNrIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSB+YmluX2Vycm9yICgpID1cbiAgICBTdHJlYW1pbmdfcnBjLmNyZWF0ZVxuICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgfm5hbWVcbiAgICAgIH52ZXJzaW9uXG4gICAgICB+YmluX3F1ZXJ5XG4gICAgICB+YmluX2luaXRpYWxfcmVzcG9uc2U6VW5pdC5iaW5fdFxuICAgICAgfmJpbl91cGRhdGVfcmVzcG9uc2U6YmluX3Jlc3BvbnNlXG4gICAgICB+YmluX2Vycm9yXG4gICAgICAoKiBbaW5pdGlhbF9yZXNwb25zZV0gZG9lc24ndCBzaG93IHVwIGluIFtQaXBlX3JwY10ncyBzaWduYXR1cmUsXG4gICAgICAgICBzbyB0aGUgdHlwZS1pZCBjcmVhdGVkIHVzaW5nIFthbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZV0gaXNcbiAgICAgICAgIHVucmVhY2hhYmxlLiAqKVxuICAgICAgfmFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlOlwiXCJcbiAgICAgIH5hbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlOlwicmVzcG9uc2VcIlxuICAgICAgKClcbiAgOztcblxuICBsZXQgYmluX3F1ZXJ5IHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX3F1ZXJ5XG4gIGxldCBiaW5fcmVzcG9uc2UgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fdXBkYXRlX3Jlc3BvbnNlXG4gIGxldCBiaW5fZXJyb3IgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fZXJyb3JfcmVzcG9uc2VcbiAgbGV0IGNsaWVudF9wdXNoZXNfYmFjayB0ID0gdC5TdHJlYW1pbmdfcnBjLmNsaWVudF9wdXNoZXNfYmFja1xuXG4gIGxldCBpbXBsZW1lbnQgP29uX2V4Y2VwdGlvbiB0IGYgPVxuICAgIFN0cmVhbWluZ19ycGMuaW1wbGVtZW50ID9vbl9leGNlcHRpb24gdCAoZnVuIGEgcXVlcnkgLT5cbiAgICAgIGxldCVtYXAgeCA9IGYgYSBxdWVyeSBpblxuICAgICAgeCA+Pnx+IGZ1biB4IC0+ICgpLCB4KVxuICA7O1xuXG4gIG1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbiAgICBtb2R1bGUgR3JvdXAgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBCdWZmZXIgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gQmlnc3RyaW5nLnQgcmVmXG5cbiAgICAgICAgbGV0IGNyZWF0ZSA/KGluaXRpYWxfc2l6ZSA9IDQwOTYpICgpID1cbiAgICAgICAgICBpZiBpbml0aWFsX3NpemUgPCAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuQnVmZmVyLmNyZWF0ZSBnb3QgbmVnYXRpdmUgYnVmZmVyIFxcXG4gICAgICAgICAgICAgICBzaXplXCJcbiAgICAgICAgICAgICAgaW5pdGlhbF9zaXplXG4gICAgICAgICAgICAgIEludC5zZXhwX29mX3Q7XG4gICAgICAgICAgcmVmIChCaWdzdHJpbmcuY3JlYXRlIGluaXRpYWxfc2l6ZSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyID0gJ2EgdFxuXG4gICAgICBtb2R1bGUgVCA9IEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFQuR3JvdXAudCA9XG4gICAgICAgIHsgbXV0YWJsZSBjb21wb25lbnRzIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLnRcbiAgICAgICAgOyBjb21wb25lbnRzX2J5X2lkIDogJ2EgY29tcG9uZW50IElkLlRhYmxlLnRcbiAgICAgICAgOyBidWZmZXIgOiBCaWdzdHJpbmcudCByZWZcbiAgICAgICAgfVxuXG4gICAgICBhbmQgJ2EgY29tcG9uZW50ID0gJ2EgVC5Hcm91cC5jb21wb25lbnQgPVxuICAgICAgICB7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLkVsdC50XG4gICAgICAgIDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgOiAnYSBULmdyb3VwX2VudHJ5IEJhZy5FbHQudFxuICAgICAgICB9XG5cbiAgICAgIGxldCBjcmVhdGUgP2J1ZmZlciAoKSA9XG4gICAgICAgIGxldCBidWZmZXIgPVxuICAgICAgICAgIG1hdGNoIGJ1ZmZlciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgKClcbiAgICAgICAgICB8IFNvbWUgYiAtPiBiXG4gICAgICAgIGluXG4gICAgICAgIHsgY29tcG9uZW50cyA9IEJhZy5jcmVhdGUgKCk7IGNvbXBvbmVudHNfYnlfaWQgPSBJZC5UYWJsZS5jcmVhdGUgKCk7IGJ1ZmZlciB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgbGVuZ3RoIHQgPSBCYWcubGVuZ3RoIHQuY29tcG9uZW50c1xuXG4gICAgICBsZXQgYWRkX2V4biB0ICh3cml0ZXIgOiBfIEltcGxlbWVudGF0aW9ucy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50KSA9XG4gICAgICAgIGlmIGlzX2Nsb3NlZCB3cml0ZXJcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICBcIlJwYy5QaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC5hZGRfZXhuOiBjYW5ub3QgYWRkIGEgY2xvc2VkIGRpcmVjdCBcXFxuICAgICAgICAgICAgIHN0cmVhbSB3cml0ZXJcIjtcbiAgICAgICAgaWYgSGFzaHRibC5tZW0gdC5jb21wb25lbnRzX2J5X2lkIHdyaXRlci5pZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLmFkZF9leG46IHRyeWluZyB0byBhZGQgYSBkaXJlY3QgXFxcbiAgICAgICAgICAgICBzdHJlYW0gd3JpdGVyIHRoYXQgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBncm91cFwiO1xuICAgICAgICAobWF0Y2ggQmFnLmNob29zZSB0LmNvbXBvbmVudHMgd2l0aFxuICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICB8IFNvbWUgb25lIC0+XG4gICAgICAgICAgIGxldCBvbmUgPSBCYWcuRWx0LnZhbHVlIG9uZSBpblxuICAgICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgKGJpbl93cml0ZXIgb25lKSAoYmluX3dyaXRlciB3cml0ZXIpKVxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLmFkZDogY2Fubm90IGFkZCBhIGRpcmVjdCBzdHJlYW0gXFxcbiAgICAgICAgICAgICAgICB3cml0ZXIgd2l0aCBhIGRpZmZlcmVudCBiaW5fd3JpdGVyXCIpO1xuICAgICAgICBsZXQgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgPSBCYWcuYWRkIHQuY29tcG9uZW50cyB3cml0ZXIgaW5cbiAgICAgICAgbGV0IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyID1cbiAgICAgICAgICBCYWcuYWRkIHdyaXRlci5ncm91cHMgeyBncm91cCA9IHQ7IGVsZW1lbnRfaW5fZ3JvdXAgPSB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCB9XG4gICAgICAgIGluXG4gICAgICAgIEhhc2h0YmwuYWRkX2V4blxuICAgICAgICAgIHQuY29tcG9uZW50c19ieV9pZFxuICAgICAgICAgIH5rZXk6d3JpdGVyLmlkXG4gICAgICAgICAgfmRhdGE6eyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgfVxuICAgICAgOztcblxuICAgICAgbGV0IHJlbW92ZSB0ICh3cml0ZXIgOiBfIEltcGxlbWVudGF0aW9ucy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50KSA9XG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9hbmRfcmVtb3ZlIHQuY29tcG9uZW50c19ieV9pZCB3cml0ZXIuaWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXA7IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIH0gLT5cbiAgICAgICAgICBCYWcucmVtb3ZlIHQuY29tcG9uZW50cyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cDtcbiAgICAgICAgICBCYWcucmVtb3ZlIHdyaXRlci5ncm91cHMgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXJcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19saXN0IHQgPSBCYWcudG9fbGlzdCB0LmNvbXBvbmVudHNcblxuICAgICAgbGV0IGZsdXNoZWRfb3JfY2xvc2VkIHQgPVxuICAgICAgICB0b19saXN0IHRcbiAgICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biB0IC0+IERlZmVycmVkLmFueV91bml0IFsgZmx1c2hlZCB0OyBjbG9zZWQgdCBdKVxuICAgICAgICB8PiBEZWZlcnJlZC5hbGxfdW5pdFxuICAgICAgOztcblxuICAgICAgbGV0IGZsdXNoZWQgdCA9IGZsdXNoZWRfb3JfY2xvc2VkIHRcblxuICAgICAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgICAgICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgICBCYWcuaXRlciB0LmNvbXBvbmVudHMgfmY6KGZ1biBkaXJlY3Rfc3RyZWFtX3dyaXRlciAtPlxuICAgICAgICAgICAgKCogV3JpdGVycyBhcmUgYXV0b21hdGljYWxseSBzY2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZWlyIGdyb3VwcyB3aGVuXG4gICAgICAgICAgICAgICBjbG9zZWQsIHNvIFtgQ2xvc2VkXSBoZXJlIGp1c3QgbWVhbnMgdGhhdCB0aGUgcmVtb3ZhbCBkaWRuJ3QgaGFwcGVuIHlldC4gKilcbiAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAoRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgZGlyZWN0X3N0cmVhbV93cml0ZXIgfmJ1ZiB+cG9zIH5sZW5cbiAgICAgICAgICAgICAgIDogWyBgT2sgfCBgQ2xvc2VkIF0pKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cml0ZSB0IH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW47XG4gICAgICAgICAgZmx1c2hlZF9vcl9jbG9zZWQgdFxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCA9XG4gICAgICAgIG1hdGNoIEJhZy5jaG9vc2UgdC5jb21wb25lbnRzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBvbmUgLT5cbiAgICAgICAgICBsZXQgb25lID0gQmFnLkVsdC52YWx1ZSBvbmUgaW5cbiAgICAgICAgICBsZXQgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlOyBzaXplIH0gPSBiaW5fd3JpdGVyIG9uZSBpblxuICAgICAgICAgIGxldCBidWZmZXIgPSAhKHQuYnVmZmVyKSBpblxuICAgICAgICAgICgqIE9wdGltaXN0aWMgZmlyc3QgdHJ5ICopXG4gICAgICAgICAgKG1hdGNoIHdyaXRlIGJ1ZmZlciB+cG9zOjAgeCB3aXRoXG4gICAgICAgICAgIHwgbGVuIC0+IEV4cGVydC53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZjpidWZmZXIgfnBvczowIH5sZW5cbiAgICAgICAgICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgICAgICAgICgqIEl0J3MgbGlrZWx5IHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyBkdWUgdG8gYSBidWZmZXIgb3ZlcmZsb3csIHNvIHJlc2l6ZSB0aGVcbiAgICAgICAgICAgICAgICBpbnRlcm5hbCBidWZmZXIgYW5kIHRyeSBhZ2Fpbi4gVGVjaG5pY2FsbHkgd2UgY291bGQgbWF0Y2ggb25cbiAgICAgICAgICAgICAgICBbQmluX3Byb3QuQ29tbW9uLkJ1ZmZlcl9zaG9ydF0gb25seSwgaG93ZXZlciB3ZSBjYW4ndCBlYXNpbHkgZW5mb3JjZSB0aGF0XG4gICAgICAgICAgICAgICAgY3VzdG9tIGJpbl93cml0ZV94eHggZnVuY3Rpb25zIHJhaXNlIHRoaXMgcGFydGljdWxhciBleGNlcHRpb24gYW5kIG5vdFxuICAgICAgICAgICAgICAgIFtJbnZhbGlkX2FyZ3VtZW50XSBvciBbRmFpbHVyZV0gZm9yIGluc3RhbmNlLiAqKVxuICAgICAgICAgICAgIGxldCBsZW4gPSBzaXplIHggaW5cbiAgICAgICAgICAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmZmVyO1xuICAgICAgICAgICAgIGxldCBidWZmZXIgPSBCaWdzdHJpbmcuY3JlYXRlIChJbnQuY2VpbF9wb3cyIGxlbikgaW5cbiAgICAgICAgICAgICB0LmJ1ZmZlciA6PSBidWZmZXI7XG4gICAgICAgICAgICAgbGV0IGxlbiA9IHdyaXRlIGJ1ZmZlciB+cG9zOjAgeCBpblxuICAgICAgICAgICAgIEV4cGVydC53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZjpidWZmZXIgfnBvczowIH5sZW4pXG4gICAgICA7O1xuXG4gICAgICBsZXQgd3JpdGUgdCB4ID1cbiAgICAgICAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHg7XG4gICAgICAgIGZsdXNoZWRfb3JfY2xvc2VkIHRcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBpbXBsZW1lbnRfZGlyZWN0ID9vbl9leGNlcHRpb24gdCBmID1cbiAgICBTdHJlYW1pbmdfcnBjLmltcGxlbWVudF9kaXJlY3QgP29uX2V4Y2VwdGlvbiB0IGZcbiAgOztcblxuICBsZXQgZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0JW1hcCByZXNwb25zZSA9IFN0cmVhbWluZ19ycGMuZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSBpblxuICAgIHJlc3BvbnNlID4+fH4gZnVuIHggLT4geCA+Pnx+IGZ1biAobWV0YWRhdGEsICgpLCBwaXBlX3IpIC0+IHBpcGVfciwgbWV0YWRhdGFcbiAgOztcblxuICBleGNlcHRpb24gUGlwZV9ycGNfZmFpbGVkXG5cbiAgbGV0IGRpc3BhdGNoX2V4biA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3VsdCA9IGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgaW5cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgcnBjX2Vycm9yIC0+IHJhaXNlIChFcnJvci50b19leG4gcnBjX2Vycm9yKVxuICAgIHwgT2sgKEVycm9yIF8pIC0+IHJhaXNlIFBpcGVfcnBjX2ZhaWxlZFxuICAgIHwgT2sgKE9rIHBpcGVfYW5kX2lkKSAtPiBwaXBlX2FuZF9pZFxuICA7O1xuXG4gIG1vZHVsZSBQaXBlX21lc3NhZ2UgPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWVzc2FnZVxuICBtb2R1bGUgUGlwZV9yZXNwb25zZSA9IFN0cmVhbWluZ19ycGMuUGlwZV9yZXNwb25zZVxuXG4gIGxldCBkaXNwYXRjaF9pdGVyID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgfmYgPVxuICAgIGxldCVtYXAgcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLmRpc3BhdGNoX2l0ZXIgP21ldGFkYXRhIHQgY29ubiBxdWVyeSB+ZiBpblxuICAgIHJlc3BvbnNlID4+fH4gZnVuIHggLT4geCA+Pnx+IGZ1biAoaWQsICgpKSAtPiBpZFxuICA7O1xuXG4gIGxldCBhYm9ydCA9IFN0cmVhbWluZ19ycGMuYWJvcnRcbiAgbGV0IGNsb3NlX3JlYXNvbiA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXRhZGF0YS5jbG9zZV9yZWFzb25cbiAgbGV0IG5hbWUgdCA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC5TdHJlYW1pbmdfcnBjLnRhZ1xuICBsZXQgdmVyc2lvbiB0ID0gdC5TdHJlYW1pbmdfcnBjLnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLnF1ZXJ5X3R5cGVfaWRcbiAgbGV0IGVycm9yX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5lcnJvcl9yZXNwb25zZV90eXBlX2lkXG4gIGxldCByZXNwb25zZV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMudXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWRcbmVuZFxuXG5tb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gIHR5cGUgKCdxdWVyeSwgJ3N0YXRlLCAndXBkYXRlLCAnZXJyb3IpIHQgPVxuICAgICgncXVlcnksICdzdGF0ZSwgJ3VwZGF0ZSwgJ2Vycm9yKSBTdHJlYW1pbmdfcnBjLnRcblxuICBtb2R1bGUgSWQgPSBQLlF1ZXJ5X2lkXG4gIG1vZHVsZSBNZXRhZGF0YSA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXRhZGF0YVxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgICB+bmFtZVxuICAgICAgICB+dmVyc2lvblxuICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgIH5iaW5fc3RhdGVcbiAgICAgICAgfmJpbl91cGRhdGVcbiAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAoKVxuICAgID1cbiAgICBTdHJlYW1pbmdfcnBjLmNyZWF0ZVxuICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgfm5hbWVcbiAgICAgIH52ZXJzaW9uXG4gICAgICB+YmluX3F1ZXJ5XG4gICAgICB+YmluX2luaXRpYWxfcmVzcG9uc2U6YmluX3N0YXRlXG4gICAgICB+YmluX3VwZGF0ZV9yZXNwb25zZTpiaW5fdXBkYXRlXG4gICAgICB+YmluX2Vycm9yXG4gICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2U6XCJzdGF0ZVwiXG4gICAgICB+YWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZTpcInVwZGF0ZVwiXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBiaW5fcXVlcnkgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fcXVlcnlcbiAgbGV0IGJpbl9zdGF0ZSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9pbml0aWFsX3Jlc3BvbnNlXG4gIGxldCBiaW5fdXBkYXRlIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX3VwZGF0ZV9yZXNwb25zZVxuICBsZXQgYmluX2Vycm9yIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX2Vycm9yX3Jlc3BvbnNlXG4gIGxldCBpbXBsZW1lbnQgPSBTdHJlYW1pbmdfcnBjLmltcGxlbWVudFxuICBsZXQgaW1wbGVtZW50X2RpcmVjdCA9IFN0cmVhbWluZ19ycGMuaW1wbGVtZW50X2RpcmVjdFxuXG4gIGxldCBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5kaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IGluXG4gICAgcmVzcG9uc2VcbiAgICA+Pnx+IGZ1biB4IC0+IHggPj58fiBmdW4gKG1ldGFkYXRhLCBzdGF0ZSwgdXBkYXRlX3IpIC0+IHN0YXRlLCB1cGRhdGVfciwgbWV0YWRhdGFcbiAgOztcblxuICBsZXQgYWJvcnQgPSBTdHJlYW1pbmdfcnBjLmFib3J0XG4gIGxldCBjbG9zZV9yZWFzb24gPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWV0YWRhdGEuY2xvc2VfcmVhc29uXG4gIGxldCBjbGllbnRfcHVzaGVzX2JhY2sgdCA9IHQuU3RyZWFtaW5nX3JwYy5jbGllbnRfcHVzaGVzX2JhY2tcbiAgbGV0IG5hbWUgdCA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC5TdHJlYW1pbmdfcnBjLnRhZ1xuICBsZXQgdmVyc2lvbiB0ID0gdC5TdHJlYW1pbmdfcnBjLnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLnF1ZXJ5X3R5cGVfaWRcbiAgbGV0IHN0YXRlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5pbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IHVwZGF0ZV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMudXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IGVycm9yX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5lcnJvcl9yZXNwb25zZV90eXBlX2lkXG5lbmRcblxubW9kdWxlIEFueSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgUnBjIDogKCdxLCAncikgUnBjLnQgLT4gdFxuICAgIHwgUGlwZSA6ICgncSwgJ3IsICdlKSBQaXBlX3JwYy50IC0+IHRcbiAgICB8IFN0YXRlIDogKCdxLCAncywgJ3UsICdlKSBTdGF0ZV9ycGMudCAtPiB0XG4gICAgfCBPbmVfd2F5IDogJ20gT25lX3dheS50IC0+IHRcblxuICBsZXQgZGVzY3JpcHRpb24gPSBmdW5jdGlvblxuICAgIHwgUnBjIHJwYyAtPiBScGMuZGVzY3JpcHRpb24gcnBjXG4gICAgfCBQaXBlIHJwYyAtPiBQaXBlX3JwYy5kZXNjcmlwdGlvbiBycGNcbiAgICB8IFN0YXRlIHJwYyAtPiBTdGF0ZV9ycGMuZGVzY3JpcHRpb24gcnBjXG4gICAgfCBPbmVfd2F5IHJwYyAtPiBPbmVfd2F5LmRlc2NyaXB0aW9uIHJwY1xuICA7O1xuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIERlc2NyaXB0aW9uID0gRGVzY3JpcHRpb24uU3RhYmxlXG4gIG1vZHVsZSBQaXBlX2Nsb3NlX3JlYXNvbiA9IFBpcGVfY2xvc2VfcmVhc29uLlN0YWJsZVxuICBtb2R1bGUgUnBjID0gUnBjXG4gIG1vZHVsZSBQaXBlX3JwYyA9IFBpcGVfcnBjXG4gIG1vZHVsZSBTdGF0ZV9ycGMgPSBTdGF0ZV9ycGNcbiAgbW9kdWxlIE9uZV93YXkgPSBPbmVfd2F5XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gUnBjXG5cbm1vZHVsZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICB0eXBlICdpbnB1dCB0ID1cbiAgICB8IFQgOlxuICAgICAgICB7IGNvbnZlcnQgOiAnaW5wdXQgLT4gJ291dHB1dFxuICAgICAgICA7IHdyaXRlciA6ICdvdXRwdXQgRGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICB9XG4gICAgICAgIC0+ICdpbnB1dCB0XG5cbiAgbGV0IGNyZWF0ZSB+Y29udmVydCB+d3JpdGVyID0gVCB7IGNvbnZlcnQ7IHdyaXRlciB9XG5cbiAgbGV0IHdyaXRlIChUIHsgY29udmVydDsgd3JpdGVyIH0pIGlucHV0ID1cbiAgICBEaXJlY3Rfc3RyZWFtX3dyaXRlci53cml0ZSB3cml0ZXIgKGNvbnZlcnQgaW5wdXQpXG4gIDs7XG5cbiAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgKFQgeyBjb252ZXJ0OyB3cml0ZXIgfSkgaW5wdXQgPVxuICAgIERpcmVjdF9zdHJlYW1fd3JpdGVyLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChjb252ZXJ0IGlucHV0KVxuICA7O1xuXG4gIGxldCBjbG9zZSAoVCB7IGNvbnZlcnQgPSBfOyB3cml0ZXIgfSkgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZSB3cml0ZXJcbiAgbGV0IGlzX2Nsb3NlZCAoVCB7IGNvbnZlcnQgPSBfOyB3cml0ZXIgfSkgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5pc19jbG9zZWQgd3JpdGVyXG4gIGxldCBjbG9zZWQgKFQgeyBjb252ZXJ0ID0gXzsgd3JpdGVyIH0pID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuY2xvc2VkIHdyaXRlclxuZW5kXG5cbmxldCBmYWlsZWRfY29udmVyc2lvbiB4ID1cbiAgRXJyb3IuY3JlYXRlXG4gICAgXCJ0eXBlIGNvbnZlcnNpb24gZmFpbHVyZVwiXG4gICAgeFxuICAgIFslc2V4cF9vZjpcbiAgICAgIFsgYE1zZyB8IGBRdWVyeSB8IGBSZXNwb25zZSB8IGBFcnJvciB8IGBTdGF0ZSB8IGBVcGRhdGUgXVxuICAgICAgKiBbIGBScGMgb2Ygc3RyaW5nIF1cbiAgICAgICogWyBgVmVyc2lvbiBvZiBpbnQgXVxuICAgICAgKiBleG5dXG47O1xuXG5sZXQgbXVsdGlwbGVfcmVnaXN0cmF0aW9ucyB4ID1cbiAgRXJyb3IuY3JlYXRlXG4gICAgXCJtdWx0aXBsZSBycGMgcmVnaXN0cmF0aW9uc1wiXG4gICAgeFxuICAgIFslc2V4cF9vZjogWyBgUnBjIG9mIHN0cmluZyBdICogWyBgVmVyc2lvbiBvZiBpbnQgXV1cbjs7XG5cbmxldCB1bmtub3duX3ZlcnNpb24geCA9IEVycm9yLmNyZWF0ZSBcInVua25vd24gcnBjIHZlcnNpb25cIiB4IFslc2V4cF9vZjogc3RyaW5nICogaW50XVxuXG5tb2R1bGUgQ2FsbGVlX2NvbnZlcnRzID0gc3RydWN0XG4gIG1vZHVsZSBScGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2ltcGxlID0gc3RydWN0XG4gICAgICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgYWRhcHRlciA9XG4gICAgICAgIHsgYWRhcHQgOlxuICAgICAgICAgICAgJ3N0YXRlLiAoJ3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzcG9uc2UgRGVmZXJyZWQudCkgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnRcbiAgICAgICAgfVxuXG4gICAgICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgdCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IGFkYXB0ZXJzIDogKCdxdWVyeSwgJ3Jlc3BvbnNlKSBhZGFwdGVyIEludC5NYXAudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICAgIGxldCBjcmVhdGUgfm5hbWUgPSB7IG5hbWU7IGFkYXB0ZXJzID0gSW50Lk1hcC5lbXB0eSB9XG5cbiAgICAgIGxldCB3cmFwX2Vycm9yIGZuIHN0YXRlIHF1ZXJ5ID1cbiAgICAgICAgbWF0Y2glbWFwIGZuIHN0YXRlIHF1ZXJ5IHdpdGhcbiAgICAgICAgfCBPayB2YWx1ZSAtPiBPayB2YWx1ZVxuICAgICAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yIChFcnJvci50b19zdHJpbmdfaHVtIGVycm9yKVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZCB7IG5hbWU7IGFkYXB0ZXJzIH0gcnBjIGFkYXB0ZXIgPVxuICAgICAgICBpZiBTdHJpbmcuKCA8PiApIG5hbWUgKFJwYy5uYW1lIHJwYylcbiAgICAgICAgdGhlblxuICAgICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgICBcIlJwYyBuYW1lcyBkb24ndCBhZ3JlZVwiXG4gICAgICAgICAgICAobmFtZSwgUnBjLm5hbWUgcnBjKVxuICAgICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB2ZXJzaW9uID0gUnBjLnZlcnNpb24gcnBjIGluXG4gICAgICAgICAgbWF0Y2ggTWFwLmZpbmQgYWRhcHRlcnMgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgICAgIFwiVmVyc2lvbiBhbHJlYWR5IGV4aXN0c1wiXG4gICAgICAgICAgICAgIChuYW1lLCB2ZXJzaW9uKVxuICAgICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIGludF1cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCBhZGFwdGVycyA9IE1hcC5zZXQgYWRhcHRlcnMgfmtleTp2ZXJzaW9uIH5kYXRhOmFkYXB0ZXIgaW5cbiAgICAgICAgICAgIE9rIHsgbmFtZTsgYWRhcHRlcnMgfSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGRfcnBjX3ZlcnNpb24gdCBvbGRfcnBjIHVwZ3JhZGUgZG93bmdyYWRlID1cbiAgICAgICAgbGV0IGFkYXB0IGZuID1cbiAgICAgICAgICBsZXQgYWRhcHRlZCBzdGF0ZSBvbGRfcXVlcnkgPVxuICAgICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBmbiBzdGF0ZSAodXBncmFkZSBvbGRfcXVlcnkpIGluXG4gICAgICAgICAgICBkb3duZ3JhZGUgcmVzdWx0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBScGMuaW1wbGVtZW50IG9sZF9ycGMgYWRhcHRlZFxuICAgICAgICBpblxuICAgICAgICBhZGQgdCBvbGRfcnBjIHsgYWRhcHQgfVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF9ycGNfdmVyc2lvbl93aXRoX2ZhaWx1cmUgdCBvbGRfcnBjIHVwZ3JhZGVfb3JfZXJyb3IgZG93bmdyYWRlX29yX2Vycm9yID1cbiAgICAgICAgbGV0IGFkYXB0IGZuID1cbiAgICAgICAgICBsZXQgYWRhcHRlZCBzdGF0ZSBvbGRfcXVlcnkgPVxuICAgICAgICAgICAgbGV0IG9wZW4gRGVmZXJyZWQuUmVzdWx0LkxldF9zeW50YXggaW5cbiAgICAgICAgICAgIGxldCViaW5kIHF1ZXJ5ID0gRGVmZXJyZWQucmV0dXJuICh1cGdyYWRlX29yX2Vycm9yIG9sZF9xdWVyeSkgaW5cbiAgICAgICAgICAgIGxldCViaW5kIHJlc3BvbnNlID0gZm4gc3RhdGUgcXVlcnkgaW5cbiAgICAgICAgICAgIERlZmVycmVkLnJldHVybiAoZG93bmdyYWRlX29yX2Vycm9yIHJlc3BvbnNlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgUnBjLmltcGxlbWVudCBvbGRfcnBjICh3cmFwX2Vycm9yIGFkYXB0ZWQpXG4gICAgICAgIGluXG4gICAgICAgIGFkZCB0IG9sZF9ycGMgeyBhZGFwdCB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3ZlcnNpb24gdCB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgdXBncmFkZSBkb3duZ3JhZGUgPVxuICAgICAgICBsZXQgcnBjID0gUnBjLmNyZWF0ZSB+bmFtZTp0Lm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIGluXG4gICAgICAgIGFkZF9ycGNfdmVyc2lvbiB0IHJwYyB1cGdyYWRlIGRvd25ncmFkZVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF92ZXJzaW9uX3dpdGhfZmFpbHVyZSB0IH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSB1cGdyYWRlIGRvd25ncmFkZSA9XG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lOnQubmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgaW5cbiAgICAgICAgYWRkX3JwY192ZXJzaW9uX3dpdGhfZmFpbHVyZSB0IHJwYyB1cGdyYWRlIGRvd25ncmFkZVxuICAgICAgOztcblxuICAgICAgbGV0IGltcGxlbWVudCB0IGZuID0gTWFwLmRhdGEgdC5hZGFwdGVycyB8PiBMaXN0Lm1hcCB+ZjooZnVuIHsgYWRhcHQgfSAtPiBhZGFwdCBmbilcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gcXVlcnkgLT4gcmVzcG9uc2UgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9ICdzIC0+IHZlcnNpb246aW50IC0+IE1vZGVsLnF1ZXJ5IC0+IE1vZGVsLnJlc3BvbnNlIERlZmVycmVkLnRcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5IDogKGludCwgaW1wbGVtZW50ZXIgKiBBbnkudCkgSGFzaHRibC50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF9ycGMpIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIFJwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxKSB3aXRoXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgICAgRXJyb3IucmFpc2UgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgfCBPayBxIC0+XG4gICAgICAgICAgICAgICAgbGV0JW1hcCByID0gZiBzIH52ZXJzaW9uIHEgaW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsIHIpIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBPayByIC0+IHJcbiAgICAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5ScGMgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBxdWVyeVxuICAgICAgICAgICAgLT4gKHJlc3BvbnNlIFBpcGUuUmVhZGVyLnQsIGVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfZGlyZWN0X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgICAgICAtPiByZXNwb25zZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAgLT4gKHVuaXQsIGVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICB0eXBlIGVycm9yXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuXG4gICAgICB0eXBlICdzIGltcGwgPVxuICAgICAgICB8IFBpcGUgb2ZcbiAgICAgICAgICAgICgnc1xuICAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgICAtPiAoTW9kZWwucmVzcG9uc2UgUGlwZS5SZWFkZXIudCwgTW9kZWwuZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIHwgRGlyZWN0IG9mXG4gICAgICAgICAgICAoJ3NcbiAgICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgICAgLT4gTW9kZWwucmVzcG9uc2UgVmVyc2lvbmVkX2RpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgICAgICAtPiAodW5pdCwgTW9kZWwuZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG5cbiAgICAgIHR5cGUgaW1wbGVtZW50ZXIgPVxuICAgICAgICB7IGltcGxlbWVudCA6ICdzLiBsb2dfdmVyc2lvbjooaW50IC0+IHVuaXQpIC0+ICdzIGltcGwgLT4gJ3MgSW1wbGVtZW50YXRpb24udCB9XG5cbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpX2dlbiA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBpbXBsID1cbiAgICAgICAgbGV0IGxvZ192ZXJzaW9uID1cbiAgICAgICAgICBtYXRjaCBsb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWdub3JlXG4gICAgICAgICAgKCogcHJldmVudCBjYWxsaW5nIFtmXSBtb3JlIHRoYW4gb25jZSBwZXIgdmVyc2lvbiAqKVxuICAgICAgICAgIHwgU29tZSBmIC0+IE1lbW8uZ2VuZXJhbCAoZiB+bmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoaSwgXykgLT4gaS5pbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGltcGwpXG4gICAgICA7O1xuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBpbXBsZW1lbnRfbXVsdGlfZ2VuID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIChQaXBlIGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgaW1wbGVtZW50X2RpcmVjdF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgaW1wbGVtZW50X211bHRpX2dlbiA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiAoRGlyZWN0IGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgdmFsIG1vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgdmFsIGVycm9yX29mX21vZGVsIDogTW9kZWwuZXJyb3IgLT4gZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pIDogVmVyc2lvbl9zaGFyZWQpIChDb252ZXJ0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9lbHQgOiAoTW9kZWwucmVzcG9uc2UgLT4gVmVyc2lvbl9pLnJlc3BvbnNlKSBPcl9lcnJvci50XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X3BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgTW9kZWwucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBWZXJzaW9uX2kucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG4gICAgICAgIG9wZW4gQ29udmVydFxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFBpcGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3Jlc3BvbnNlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cmFwcGVkX21vZGVsX29mX3F1ZXJ5IHEgPVxuICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgfCBxIC0+IHFcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgd3JhcHBlZF9lcnJvcl9vZl9tb2RlbCBlcnJvciA9XG4gICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLmVycm9yX29mX21vZGVsIGVycm9yIHdpdGhcbiAgICAgICAgICB8IGVycm9yIC0+IEVycm9yIGVycm9yXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGltcGwgPVxuICAgICAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgICAgIHwgUGlwZSBmIC0+XG4gICAgICAgICAgICBQaXBlX3JwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoJWJpbmQgZiBzIH52ZXJzaW9uICh3cmFwcGVkX21vZGVsX29mX3F1ZXJ5IHEpIHdpdGhcbiAgICAgICAgICAgICAgfCBPayBwaXBlIC0+XG4gICAgICAgICAgICAgICAgTW9uaXRvci5oYW5kbGVfZXJyb3JzXG4gICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IHJldHVybiAoT2sgKGNvbnZlcnRfcGlwZSBwaXBlKSkpXG4gICAgICAgICAgICAgICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gcmV0dXJuICh3cmFwcGVkX2Vycm9yX29mX21vZGVsIGVycm9yKSlcbiAgICAgICAgICB8IERpcmVjdCBmIC0+XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPcl9lcnJvci5va19leG4gY29udmVydF9lbHQgaW5cbiAgICAgICAgICAgIFBpcGVfcnBjLmltcGxlbWVudF9kaXJlY3QgcnBjIChmdW4gcyBxIGRzdyAtPlxuICAgICAgICAgICAgICBsZXQgd3JpdGVyID1cbiAgICAgICAgICAgICAgICBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIuY3JlYXRlIH5jb252ZXJ0OmNvbnZlcnRfZWx0IH53cml0ZXI6ZHN3XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoJW1hcCBmIHMgfnZlcnNpb24gKHdyYXBwZWRfbW9kZWxfb2ZfcXVlcnkgcSkgd3JpdGVyIHdpdGhcbiAgICAgICAgICAgICAgfCBPayAoKSAtPiBPayAoKVxuICAgICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+IHdyYXBwZWRfZXJyb3Jfb2ZfbW9kZWwgZXJyb3IpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooeyBpbXBsZW1lbnQgfSwgQW55LlBpcGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnQgLT4gcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9XG4gICAgICAgICAgICAgIE9yX2Vycm9yLmVycm9yX3N0cmluZyBcImNhbm5vdCB1c2UgZGlyZWN0IGludGVyZmFjZSB3aXRoIFJlZ2lzdGVyX3Jhd1wiXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlID0gVmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT2sgVmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlIHBpcGUgPSBQaXBlLm1hcCBwaXBlIH5mOlZlcnNpb25faS5yZXNwb25zZV9vZl9tb2RlbFxuICAgICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgc3RhdGVcbiAgICAgIHR5cGUgdXBkYXRlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBxdWVyeVxuICAgICAgICAgICAgLT4gKHN0YXRlICogdXBkYXRlIFBpcGUuUmVhZGVyLnQsIGVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9XG4gICAgICAgICdzXG4gICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgIC0+IChNb2RlbC5zdGF0ZSAqIE1vZGVsLnVwZGF0ZSBQaXBlLlJlYWRlci50LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudFxuXG4gICAgICB0eXBlIGltcGxlbWVudGVyID1cbiAgICAgICAgeyBpbXBsZW1lbnQgOiAncy4gbG9nX3ZlcnNpb246KGludCAtPiB1bml0KSAtPiAncyBpbXBsIC0+ICdzIEltcGxlbWVudGF0aW9uLnQgfVxuXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgbGV0IGxvZ192ZXJzaW9uID1cbiAgICAgICAgICBtYXRjaCBsb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWdub3JlXG4gICAgICAgICAgKCogcHJldmVudCBjYWxsaW5nIFtmXSBtb3JlIHRoYW4gb25jZSBwZXIgdmVyc2lvbiAqKVxuICAgICAgICAgIHwgU29tZSBmIC0+IE1lbW8uZ2VuZXJhbCAoZiB+bmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoaSwgXykgLT4gaS5pbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHN0YXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSB1cGRhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5xdWVyeVxuICAgICAgICB2YWwgc3RhdGVfb2ZfbW9kZWwgOiBNb2RlbC5zdGF0ZSAtPiBzdGF0ZVxuICAgICAgICB2YWwgZXJyb3Jfb2ZfbW9kZWwgOiBNb2RlbC5lcnJvciAtPiBlcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCB1cGRhdGVfb2ZfbW9kZWxcbiAgICAgICAgICAgIDogIE1vZGVsLnN0YXRlXG4gICAgICAgICAgICAtPiBNb2RlbC51cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID1cbiAgICAgICAgICBTdGF0ZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fc3RhdGVcbiAgICAgICAgICAgIH5iaW5fdXBkYXRlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGltcGxlbWVudCB+bG9nX3ZlcnNpb24gZiA9XG4gICAgICAgICAgICBTdGF0ZV9ycGMuaW1wbGVtZW50IHJwYyAoZnVuIHMgcSAtPlxuICAgICAgICAgICAgICBsb2dfdmVyc2lvbiB2ZXJzaW9uO1xuICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfcXVlcnkgcSB3aXRoXG4gICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IHEgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2glYmluZCBmIHMgfnZlcnNpb24gcSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgT2sgKG1vZGVsX3N0YXRlLCBwaXBlKSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBzdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kuc3RhdGVfb2ZfbW9kZWwgbW9kZWxfc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBzdGF0ZSAtPiBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgU3RhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIE1vbml0b3IuaGFuZGxlX2Vycm9yc1xuICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChPayAoc3RhdGUsIFZlcnNpb25faS51cGRhdGVfb2ZfbW9kZWwgbW9kZWxfc3RhdGUgcGlwZSkpKVxuICAgICAgICAgICAgICAgICAgICAgKGZ1biBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFVwZGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPlxuICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5lcnJvcl9vZl9tb2RlbCBlcnJvciB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBlcnJvciAtPiBFcnJvciBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuU3RhdGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9tb2RlbCA6IE1vZGVsLnVwZGF0ZSAtPiB1cGRhdGVcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBSZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCBfc3RhdGUgcGlwZSA9IFBpcGUubWFwIH5mOnVwZGF0ZV9vZl9tb2RlbCBwaXBlXG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBtc2dcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gbXNnIC0+IHVuaXQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBtc2dcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9ICdzIC0+IHZlcnNpb246aW50IC0+IE1vZGVsLm1zZyAtPiB1bml0XG5cbiAgICAgIHR5cGUgaW1wbGVtZW50ZXIgPVxuICAgICAgICB7IGltcGxlbWVudCA6ICdzLiBsb2dfdmVyc2lvbjooaW50IC0+IHVuaXQpIC0+ICdzIGltcGwgLT4gJ3MgSW1wbGVtZW50YXRpb24udCB9XG5cbiAgICAgIGxldCByZWdpc3RyeSA6IChpbnQsIGltcGxlbWVudGVyICogQW55LnQpIEhhc2h0YmwudCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfcnBjKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIG1zZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9tc2cgOiBtc2cgLT4gTW9kZWwubXNnXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IE9uZV93YXkuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fbXNnXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIE9uZV93YXkuaW1wbGVtZW50IHJwYyAoZnVuIHMgcSAtPlxuICAgICAgICAgICAgICBsb2dfdmVyc2lvbiB2ZXJzaW9uO1xuICAgICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kubW9kZWxfb2ZfbXNnIHEpIHdpdGhcbiAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBNc2csIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgfCBPayBxIC0+IGYgcyB+dmVyc2lvbiBxKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuT25lX3dheSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1lbnUgPSBzdHJ1Y3RcbiAgKCoqKioqKioqKioqKioqKioqIHNvbWUgcHJvaGliaXRpb25zIGZvciB0aGlzIG1vZHVsZSAqKioqKioqKioqKioqKioqKipcblxuICAgICAgICAgICAgICAgICAgICAgKDEpICEhISBuZXZlciBwcnVuZSBvbGQgdmVyc2lvbnMgb2YgdGhpcyBycGMgISEhXG5cbiAgICAgICAgICAgICAgICAgICAgIEl0IGlzIHRvbyBmdW5kYW1lbnRhbCB0byB0aGUgd29ya2luZ3Mgb2YgdmFyaW91cyB2ZXJzaW9uaW5nXG4gICAgICAgICAgICAgICAgICAgICBzY2hlbWVzIGFuZCBpdCBwcm9iYWJseSB3b24ndCBjaGFuZ2UgdmVyeSBtdWNoIGFueXdheS5cblxuICAgICAgICAgICAgICAgICAgICAgKDIpICEhISBvbmx5IGV2ZXIgc2F5IFwid2l0aCBiaW5faW9cIiBvbiBidWlsdC1pbiBvY2FtbCB0eXBlcyAhISFcblxuICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZXMgb2YgYnVpbHQtaW4gdHlwZXMgYXJlIGludCwgbGlzdCwgc3RyaW5nLCBldGMuXG5cbiAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgdG8gcHJvdGVjdCBvdXJzZWx2ZXMgYWdhaW5zdCBjaGFuZ2VzIHRvIENvcmUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlcywgZm9yIGV4YW1wbGUuXG5cbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICBtb2R1bGUgTW9kZWwgPSBzdHJ1Y3RcbiAgICBsZXQgbmFtZSA9IFwiX19WZXJzaW9uZWRfcnBjLk1lbnVcIlxuXG4gICAgdHlwZSBxdWVyeSA9IHVuaXRcbiAgICB0eXBlIHJlc3BvbnNlID0gRGVzY3JpcHRpb24udCBsaXN0XG4gIGVuZFxuXG4gIGluY2x1ZGUgQ2FsbGVlX2NvbnZlcnRzLlJwYy5NYWtlIChNb2RlbClcblxuICBsZXQgcnBjX25hbWUgPSBNb2RlbC5uYW1lXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGxldCB2ZXJzaW9uID0gMVxuXG4gICAgICB0eXBlIHF1ZXJ5ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHF1ZXJ5XTtcbiAgICAgICAgWyVleHBlY3Qge3wgODZiYTVkZjc0N2VlYzgzN2YwYjM5MWRkNDlmMzNmOWUgfH1dXG4gICAgICA7O1xuXG4gICAgICB0eXBlIHJlc3BvbnNlID0gKHN0cmluZyAqIGludCkgbGlzdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHJlc3BvbnNlXTtcbiAgICAgICAgWyVleHBlY3Qge3wgNGMxZTUwYzkzYjM4YzJhZDA1NTRjYmQ5MjliZWYzYWMgfH1dXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgcSA9IHFcblxuICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID1cbiAgICAgICAgTGlzdC5tYXAgfmY6KGZ1biB7IERlc2NyaXB0aW9uLm5hbWU7IHZlcnNpb24gfSAtPiBuYW1lLCB2ZXJzaW9uKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgUmVnaXN0ZXIgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBDdXJyZW50X3ZlcnNpb24gPSBWMVxuXG4gIGxldCBhZGQgaW1wbHMgPVxuICAgIGxldCBtZW51ID0gTGlzdC5tYXAgaW1wbHMgfmY6SW1wbGVtZW50YXRpb24uZGVzY3JpcHRpb24gaW5cbiAgICBsZXQgbWVudV9pbXBscyA9IGltcGxlbWVudF9tdWx0aSAoZnVuIF8gfnZlcnNpb246XyAoKSAtPiByZXR1cm4gbWVudSkgaW5cbiAgICBpbXBscyBAIG1lbnVfaW1wbHNcbiAgOztcblxuICB0eXBlIHQgPSBJbnQuU2V0LnQgU3RyaW5nLlRhYmxlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc3VwcG9ydGVkX3JwY3MgdCA9XG4gICAgbGV0IG9wZW4gTGlzdC5MZXRfc3ludGF4IGluXG4gICAgbGV0JWJpbmQgbmFtZSwgdmVyc2lvbnMgPSBIYXNodGJsLnRvX2FsaXN0IHQgaW5cbiAgICBsZXQlbWFwIHZlcnNpb24gPSBTZXQudG9fbGlzdCB2ZXJzaW9ucyBpblxuICAgIHsgRGVzY3JpcHRpb24ubmFtZTsgdmVyc2lvbiB9XG4gIDs7XG5cbiAgbGV0IHN1cHBvcnRlZF92ZXJzaW9ucyB0IH5ycGNfbmFtZSA9XG4gICAgT3B0aW9uLnZhbHVlIH5kZWZhdWx0OkludC5TZXQuZW1wdHkgKEhhc2h0YmwuZmluZCB0IHJwY19uYW1lKVxuICA7O1xuXG4gIGxldCBvZl9lbnRyaWVzIGVudHJpZXMgPVxuICAgIEhhc2h0YmwubWFwIH5mOkludC5TZXQub2ZfbGlzdCAoU3RyaW5nLlRhYmxlLm9mX2FsaXN0X211bHRpIGVudHJpZXMpXG4gIDs7XG5cbiAgbGV0IGF1eF9yZXF1ZXN0IGRpc3BhdGNoIGNvbm4gPVxuICAgIGxldCVtYXAgcmVzdWx0ID0gZGlzcGF0Y2ggQ3VycmVudF92ZXJzaW9uLnJwYyBjb25uICgpIGluXG4gICAgUmVzdWx0Lm1hcCByZXN1bHQgfmY6b2ZfZW50cmllc1xuICA7O1xuXG4gIGxldCByZXF1ZXN0IGNvbm4gPSBhdXhfcmVxdWVzdCBScGMuZGlzcGF0Y2ggY29ublxuICBsZXQgcmVxdWVzdCcgY29ubiA9IGF1eF9yZXF1ZXN0IFJwYy5kaXNwYXRjaCcgY29ublxuXG4gIGxldCBjcmVhdGUgZGVzY3JpcHRpb25zID1cbiAgICBMaXN0Lm1hcCBkZXNjcmlwdGlvbnMgfmY6KGZ1biB7IERlc2NyaXB0aW9uLm5hbWU7IHZlcnNpb24gfSAtPiBuYW1lLCB2ZXJzaW9uKVxuICAgIHw+IG9mX2VudHJpZXNcbiAgOztcblxuICBtb2R1bGUgV2l0aF9zaGFwZXMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTW9kZWwgPSBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gXCJfX1ZlcnNpb25lZF9ycGMuU2hhcGVfbWVudVwiXG5cbiAgICAgIHR5cGUgcXVlcnkgPSB1bml0XG4gICAgICB0eXBlIHJlc3BvbnNlID0gKERlc2NyaXB0aW9uLnQgKiBScGNfc2hhcGVzLnQpIGxpc3RcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgQ2FsbGVlX2NvbnZlcnRzLlJwYy5NYWtlIChNb2RlbClcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IHZlcnNpb24gPSAxXG5cbiAgICAgICAgdHlwZSBxdWVyeSA9IHVuaXQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogcXVlcnldO1xuICAgICAgICAgIFslZXhwZWN0IHt8IDg2YmE1ZGY3NDdlZWM4MzdmMGIzOTFkZDQ5ZjMzZjllIHx9XVxuICAgICAgICA7O1xuXG4gICAgICAgIHR5cGUgcmVzcG9uc2UgPSAoRGVzY3JpcHRpb24uU3RhYmxlLlYxLnQgKiBScGNfc2hhcGVzLlN0YWJsZS5WMS50KSBsaXN0XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHJlc3BvbnNlXTtcbiAgICAgICAgICBbJWV4cGVjdCB7fCBiNGJkYzAxYjdlYWQ5MDdlNmQwZDNmM2Q4OTcwMGYxYiB8fV1cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBGbi5pZFxuICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSBGbi5pZFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBSZWdpc3RlciAoVClcbiAgICBlbmRcblxuICAgIG1vZHVsZSBDdXJyZW50X3ZlcnNpb24gPSBWMVxuXG4gICAgdHlwZSB0ID0gKERlc2NyaXB0aW9uLnQgKiBScGNfc2hhcGVzLnQpIGxpc3RcblxuICAgIGxldCBhZGQgaW1wbHMgPVxuICAgICAgbGV0IHNoYXBlX21lbnUgPVxuICAgICAgICBMaXN0Lm1hcCBpbXBscyB+ZjooZnVuIGltcGwgLT5cbiAgICAgICAgICBJbXBsZW1lbnRhdGlvbi5kZXNjcmlwdGlvbiBpbXBsLCBJbXBsZW1lbnRhdGlvbi5zaGFwZXMgaW1wbClcbiAgICAgIGluXG4gICAgICBsZXQgc2hhcGVfbWVudV9pbXBscyA9IGltcGxlbWVudF9tdWx0aSAoZnVuIF8gfnZlcnNpb246XyAoKSAtPiByZXR1cm4gc2hhcGVfbWVudSkgaW5cbiAgICAgIGFkZCBpbXBscyBAIHNoYXBlX21lbnVfaW1wbHNcbiAgICA7O1xuXG4gICAgbGV0IHJlcXVlc3QgY29ubiA9IFJwYy5kaXNwYXRjaCBDdXJyZW50X3ZlcnNpb24ucnBjIGNvbm4gKClcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbm5lY3Rpb25fd2l0aF9tZW51ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBjb25uZWN0aW9uIDogQ29ubmVjdGlvbi50XG4gICAgOyBtZW51IDogTWVudS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgbGV0IGNyZWF0ZSBjb25uZWN0aW9uID1cbiAgICBsZXQgb3BlbiBEZWZlcnJlZC5Pcl9lcnJvci5MZXRfc3ludGF4IGluXG4gICAgbGV0JW1hcCBtZW51ID0gTWVudS5yZXF1ZXN0IGNvbm5lY3Rpb24gaW5cbiAgICB7IGNvbm5lY3Rpb247IG1lbnUgfVxuICA7O1xuXG4gIGxldCBjcmVhdGVfZGlyZWN0bHkgY29ubmVjdGlvbiBtZW51ID0geyBjb25uZWN0aW9uOyBtZW51IH1cbmVuZFxuXG5tb2R1bGUgQ2FsbGVyX2NvbnZlcnRzID0gc3RydWN0XG4gIGxldCBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvbiB+cnBjX25hbWUgfmNhbGxlcl92ZXJzaW9ucyB+Y2FsbGVlX3ZlcnNpb25zIH5jYWxsZWVfbWVudSA9XG4gICAgbWF0Y2ggU2V0Lm1heF9lbHQgKFNldC5pbnRlciBjYWxsZWVfdmVyc2lvbnMgY2FsbGVyX3ZlcnNpb25zKSB3aXRoXG4gICAgfCBTb21lIHZlcnNpb24gLT4gT2sgdmVyc2lvblxuICAgIHwgTm9uZSAtPlxuICAgICAgZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImNhbGxlciBhbmQgY2FsbGVlIHNoYXJlIG5vIGNvbW1vbiB2ZXJzaW9ucyBmb3IgcnBjXCJcbiAgICAgICAgICAgIChycGNfbmFtZSA6IHN0cmluZylcbiAgICAgICAgICAgIChjYWxsZXJfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAoY2FsbGVlX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKGNhbGxlZV9tZW51IDogTWVudS50KV1cbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJoaWdoZXN0IHZlcnNpb24gbnVtYmVyIGlzIHRha2VuIGluIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXCIgPVxuICAgIGxldCBycGNfbmFtZSA9IFwidGhlLXJwY1wiIGluXG4gICAgbGV0IG1lbnUgPSBNZW51Lm9mX2VudHJpZXMgWyBycGNfbmFtZSwgMiBdIGluXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvblxuICAgICAgICB+cnBjX25hbWVcbiAgICAgICAgfmNhbGxlcl92ZXJzaW9uczooSW50LlNldC5vZl9saXN0IFsgMTsgMjsgMyBdKVxuICAgICAgICB+Y2FsbGVlX3ZlcnNpb25zOihJbnQuU2V0Lm9mX2xpc3QgWyAyIF0pXG4gICAgICAgIH5jYWxsZWVfbWVudTptZW51XG4gICAgaW5cbiAgICBwcmludF9zIFslc2V4cCAocmVzdWx0IDogaW50IE9yX2Vycm9yLnQpXTtcbiAgICBbJWV4cGVjdCB7fCAoT2sgMikgfH1dXG4gIDs7XG5cbiAgbGV0JWV4cGVjdF90ZXN0IFwiZXJyb3IgZnJvbSBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvbiBsb29rcyByZWFzb25hYmxlXCIgPVxuICAgIGxldCB0aGVfcnBjID0gXCJ0aGUtcnBjXCIgaW5cbiAgICBsZXQgbm90X3RoZV9ycGMgPSBcIm90aGVyLXJwY1wiIGluXG4gICAgbGV0IG1lbnUgPSBNZW51Lm9mX2VudHJpZXMgWyBub3RfdGhlX3JwYywgMTsgbm90X3RoZV9ycGMsIDIgXSBpblxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cbiAgICAgICAgfnJwY19uYW1lOnRoZV9ycGNcbiAgICAgICAgfmNhbGxlcl92ZXJzaW9uczooSW50LlNldC5vZl9saXN0IFsgMTsgMjsgMyBdKVxuICAgICAgICB+Y2FsbGVlX3ZlcnNpb25zOihNZW51LnN1cHBvcnRlZF92ZXJzaW9ucyBtZW51IH5ycGNfbmFtZTp0aGVfcnBjKVxuICAgICAgICB+Y2FsbGVlX21lbnU6bWVudVxuICAgIGluXG4gICAgcHJpbnRfcyBbJXNleHAgKHJlc3VsdCA6IGludCBPcl9lcnJvci50KV07XG4gICAgWyVleHBlY3RcbiAgICAgIHt8XG4gICAgICAoRXJyb3JcbiAgICAgICAoXCJjYWxsZXIgYW5kIGNhbGxlZSBzaGFyZSBubyBjb21tb24gdmVyc2lvbnMgZm9yIHJwY1wiIChycGNfbmFtZSB0aGUtcnBjKVxuICAgICAgICAoY2FsbGVyX3ZlcnNpb25zICgxIDIgMykpIChjYWxsZWVfdmVyc2lvbnMgKCkpXG4gICAgICAgIChjYWxsZWVfbWVudSAoKG90aGVyLXJwYyAoMSAyKSkpKSkpfH1dXG4gIDs7XG5cbiAgbW9kdWxlIERpc3BhdGNoID0gc3RydWN0XG4gICAgbW9kdWxlIE1ha2UgKE0gOiBNb25hZCkgPSBzdHJ1Y3RcbiAgICAgIG9wZW4gTVxuXG4gICAgICBsZXQgd2l0aF9zcGVjaWZpY192ZXJzaW9uIH52ZXJzaW9uIH5jb25uZWN0aW9uIH5uYW1lIH5xdWVyeSB+ZGlzcGF0Y2hlciB+cmVnaXN0cnkgPVxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByZXR1cm4gKEVycm9yICh1bmtub3duX3ZlcnNpb24gKG5hbWUsIHZlcnNpb24pKSlcbiAgICAgICAgfCBTb21lIChkaXNwYXRjaCwgX3JwYykgLT4gZGlzcGF0Y2hlciBkaXNwYXRjaCBjb25uZWN0aW9uIHF1ZXJ5XG4gICAgICA7O1xuXG4gICAgICBsZXQgd2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICAgIHsgQ29ubmVjdGlvbl93aXRoX21lbnUuY29ubmVjdGlvbjsgbWVudSB9XG4gICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgICB+ZGlzcGF0Y2hlclxuICAgICAgICA9XG4gICAgICAgIGxldCBjYWxsZWVfdmVyc2lvbnMgPSBNZW51LnN1cHBvcnRlZF92ZXJzaW9ucyBtZW51IH5ycGNfbmFtZTpuYW1lIGluXG4gICAgICAgIGxldCBjYWxsZXJfdmVyc2lvbnMgPSB2ZXJzaW9ucyAoKSBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXG4gICAgICAgICAgICB+cnBjX25hbWU6bmFtZVxuICAgICAgICAgICAgfmNhbGxlcl92ZXJzaW9uc1xuICAgICAgICAgICAgfmNhbGxlZV92ZXJzaW9uc1xuICAgICAgICAgICAgfmNhbGxlZV9tZW51Om1lbnVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IEVycm9yIGUgLT4gcmV0dXJuIChFcnJvciBlKVxuICAgICAgICB8IE9rIHZlcnNpb24gLT5cbiAgICAgICAgICB3aXRoX3NwZWNpZmljX3ZlcnNpb24gfnZlcnNpb24gfmNvbm5lY3Rpb24gfm5hbWUgfnF1ZXJ5IH5yZWdpc3RyeSB+ZGlzcGF0Y2hlclxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBBc3luYyA9IE1ha2UgKERlZmVycmVkKVxuICAgIG1vZHVsZSBEaXJlY3QgPSBNYWtlIChNb25hZC5JZGVudClcbiAgZW5kXG5cbiAgbW9kdWxlIFJwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gcmVzcG9uc2UgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgcXVlcnkgPVxuICAgICAgICBEaXNwYXRjaC5Bc3luYy53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgcXVlcnlcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOkZuLmlkXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXInIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIHF1ZXJ5X29mX21vZGVsIDogTW9kZWwucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2UgOiBNb2RlbC5xdWVyeSAtPiByZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZVxuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGRpc3BhdGNoIGNvbm4gbXEgPVxuICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLnF1ZXJ5X29mX21vZGVsIG1xKSB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAoRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICB8IE9rIHEgLT5cbiAgICAgICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBScGMuZGlzcGF0Y2ggcnBjIGNvbm4gcSBpblxuICAgICAgICAgICAgICBSZXN1bHQuYmluZCByZXN1bHQgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1vZGVsX29mX3Jlc3BvbnNlIG1xIHIpIHdpdGhcbiAgICAgICAgICAgICAgICB8IE9rIHIgLT4gT2sgclxuICAgICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55LlJwYyBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIHF1ZXJ5X29mX21vZGVsIDogTW9kZWwucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2UgOiByZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgICAgUmVnaXN0ZXInIChzdHJ1Y3RcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlIF8gciA9IG1vZGVsX29mX3Jlc3BvbnNlIHJcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgIC0+IChyZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBQaXBlX3JwYy5NZXRhZGF0YS50LCBlcnJvcikgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgZGlzcGF0Y2hfaXRlcl9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgIC0+IGY6KHJlc3BvbnNlIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcnBjLlBpcGVfcmVzcG9uc2UudClcbiAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIGVycm9yKSBSZXN1bHQudCBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIGFib3J0X211bHRpIDogQ29ubmVjdGlvbl93aXRoX21lbnUudCAtPiBQaXBlX3JwYy5JZC50IC0+IHVuaXQgT3JfZXJyb3IudFxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBkaXNwYXRjaGVyID1cbiAgICAgICAgeyBhYm9ydCA6IENvbm5lY3Rpb24udCAtPiBQaXBlX3JwYy5JZC50IC0+IHVuaXRcbiAgICAgICAgOyBkaXNwYXRjaCA6XG4gICAgICAgICAgICBDb25uZWN0aW9uLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgICAtPiAoIE1vZGVsLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgICAgICwgTW9kZWwuZXJyb3IgKVxuICAgICAgICAgICAgICAgICBSZXN1bHQudFxuICAgICAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgICAgIERlZmVycmVkLnRcbiAgICAgICAgOyBkaXNwYXRjaF9pdGVyIDpcbiAgICAgICAgICAgIENvbm5lY3Rpb24udFxuICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgIC0+IGY6KE1vZGVsLnJlc3BvbnNlIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcnBjLlBpcGVfcmVzcG9uc2UudClcbiAgICAgICAgICAgIC0+IChQaXBlX3JwYy5JZC50LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICAgIH1cblxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgOiAoZGlzcGF0Y2hlciAqIEFueS50KSBJbnQuVGFibGUudCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfaXRlcl9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSB+ZiA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6KGZ1biB7IGRpc3BhdGNoX2l0ZXI7IF8gfSBjb25uIHF1ZXJ5IC0+IGRpc3BhdGNoX2l0ZXIgY29ubiBxdWVyeSB+ZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6KGZ1biB7IGRpc3BhdGNoOyBfIH0gY29ubiBxdWVyeSAtPiBkaXNwYXRjaCBjb25uIHF1ZXJ5KVxuICAgICAgOztcblxuICAgICAgbGV0IGFib3J0X211bHRpIGNvbm5fd2l0aF9tZW51IGlkID1cbiAgICAgICAgRGlzcGF0Y2guRGlyZWN0LndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBpZFxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6KGZ1biB7IGFib3J0OyBfIH0gY29ubiBpZCAtPlxuICAgICAgICAgICAgYWJvcnQgY29ubiBpZDtcbiAgICAgICAgICAgIE9rICgpKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5lcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kgOiBWZXJzaW9uX3NoYXJlZCkgKENvbnZlcnQgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X2VsdCA6IChWZXJzaW9uX2kucmVzcG9uc2UgLT4gTW9kZWwucmVzcG9uc2UpIE9yX2Vycm9yLnRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfcGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICBWZXJzaW9uX2kucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBNb2RlbC5yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuICAgICAgICBvcGVuIENvbnZlcnRcblxuICAgICAgICBsZXQgcnBjID1cbiAgICAgICAgICBQaXBlX3JwYy5jcmVhdGVcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICAgICAgfmJpbl9yZXNwb25zZVxuICAgICAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFjazooT3B0aW9uLnNvbWVfaWYgY2xpZW50X3B1c2hlc19iYWNrICgpKVxuICAgICAgICAgICAgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgd3JhcHBlZF9xdWVyeV9vZl9tb2RlbCBxID1cbiAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kucXVlcnlfb2ZfbW9kZWwgcSB3aXRoXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICByZXR1cm4gKEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFF1ZXJ5LCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgIHwgcSAtPiByZXR1cm4gKE9rIHEpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNvbnZlcnRfcmVzdWx0IHJlc3VsdCB+Y29udmVydF9vayA9XG4gICAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IEVycm9yIF8gYXMgZSAtPiBlXG4gICAgICAgICAgfCBPayAoRXJyb3IgZSkgLT5cbiAgICAgICAgICAgIChtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfZXJyb3IgZSB3aXRoXG4gICAgICAgICAgICAgfCBlJyAtPiBPayAoRXJyb3IgZScpXG4gICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICB8IE9rIChPayBvaykgLT4gT2sgKE9rIChjb252ZXJ0X29rIG9rKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBxID1cbiAgICAgICAgICB3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIHFcbiAgICAgICAgICA+Pj0/IGZ1biBxIC0+XG4gICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBQaXBlX3JwYy5kaXNwYXRjaCBycGMgY29ubiBxIGluXG4gICAgICAgICAgY29udmVydF9yZXN1bHQgcmVzdWx0IH5jb252ZXJ0X29rOihmdW4gKHBpcGUsIGlkKSAtPiBjb252ZXJ0X3BpcGUgcGlwZSwgaWQpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGRpc3BhdGNoX2l0ZXIgY29ubiBxIH5mID1cbiAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPcl9lcnJvci5va19leG4gY29udmVydF9lbHQgaW5cbiAgICAgICAgICB3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIHFcbiAgICAgICAgICA+Pj0/IGZ1biBxIC0+XG4gICAgICAgICAgbGV0IGNvbnZlcnRfbWVzc2FnZSAobSA6IF8gUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQpID1cbiAgICAgICAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICAgICAgfCBDbG9zZWQgXyBhcyBjbG9zZWQgLT4gY2xvc2VkXG4gICAgICAgICAgICB8IFVwZGF0ZSB1IC0+IFVwZGF0ZSAoY29udmVydF9lbHQgdSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID1cbiAgICAgICAgICAgIFBpcGVfcnBjLmRpc3BhdGNoX2l0ZXIgcnBjIGNvbm4gcSB+ZjooZnVuIG1lc3NhZ2UgLT5cbiAgICAgICAgICAgICAgZiAoY29udmVydF9tZXNzYWdlIG1lc3NhZ2UpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgY29udmVydF9yZXN1bHQgcmVzdWx0IH5jb252ZXJ0X29rOkZuLmlkXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGFib3J0IGNvbm4gaWQgPSBQaXBlX3JwYy5hYm9ydCBycGMgY29ubiBpZFxuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgSGFzaHRibC5zZXRcbiAgICAgICAgICAgICAgcmVnaXN0cnlcbiAgICAgICAgICAgICAgfmtleTp2ZXJzaW9uXG4gICAgICAgICAgICAgIH5kYXRhOih7IGFib3J0OyBkaXNwYXRjaDsgZGlzcGF0Y2hfaXRlciB9LCBBbnkuUGlwZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgICA6ICByZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiBNb2RlbC5yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJDYW5ub3QgdXNlIERpcmVjdCB3aXRoIFJlZ2lzdGVyX3Jhd1wiXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlID0gVmVyc2lvbl9pLm1vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT2sgVmVyc2lvbl9pLm1vZGVsX29mX3Jlc3BvbnNlXG5cbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgcnMgPVxuICAgICAgICAgICAgICBQaXBlLm1hcCBycyB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2UgciB3aXRoXG4gICAgICAgICAgICAgICAgfCByIC0+IE9rIHJcbiAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIFZlcnNpb25faS52ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSBzdGF0ZVxuICAgICAgdHlwZSB1cGRhdGVcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gKCBzdGF0ZSAqIHVwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBTdGF0ZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAsIGVycm9yIClcbiAgICAgICAgICAgICBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSBzdGF0ZVxuICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICB0eXBlIGVycm9yXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6Rm4uaWRcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHN0YXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSB1cGRhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgbW9kZWxfb2Zfc3RhdGUgOiBzdGF0ZSAtPiBNb2RlbC5zdGF0ZVxuICAgICAgICB2YWwgbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5lcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIDogIHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiBNb2RlbC51cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9XG4gICAgICAgICAgU3RhdGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3N0YXRlXG4gICAgICAgICAgICB+YmluX3VwZGF0ZVxuICAgICAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFjazooT3B0aW9uLnNvbWVfaWYgY2xpZW50X3B1c2hlc19iYWNrICgpKVxuICAgICAgICAgICAgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLnF1ZXJ5X29mX21vZGVsIHEgd2l0aFxuICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIChFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIHwgcSAtPlxuICAgICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFN0YXRlX3JwYy5kaXNwYXRjaCBycGMgY29ubiBxIGluXG4gICAgICAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT4gRXJyb3IgZXhuXG4gICAgICAgICAgICAgICB8IE9rIChFcnJvciBlKSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX2Vycm9yIGUgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBlJyAtPiBPayAoRXJyb3IgZScpXG4gICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICAgICB8IE9rIChPayAoc3RhdGUsIHBpcGUsIGlkKSkgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9zdGF0ZSBzdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgU3RhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgICAgIHwgc3RhdGUgLT4gT2sgKE9rIChzdGF0ZSwgVmVyc2lvbl9pLm1vZGVsX29mX3VwZGF0ZSBwaXBlLCBpZCkpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55LlN0YXRlIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl91cGRhdGUgOiB1cGRhdGUgLT4gTW9kZWwudXBkYXRlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgcnMgPVxuICAgICAgICAgICAgICBQaXBlLm1hcCBycyB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfdXBkYXRlIHIgd2l0aFxuICAgICAgICAgICAgICAgIHwgciAtPiBPayByXG4gICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBVcGRhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT25lX3dheSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgbXNnXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aSA6IENvbm5lY3Rpb25fd2l0aF9tZW51LnQgLT4gbXNnIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBtc2dcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IG1zZyA9XG4gICAgICAgIERpc3BhdGNoLkRpcmVjdC53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgbXNnXG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjpGbi5pZFxuICAgICAgOztcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIG1zZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBtc2dfb2ZfbW9kZWwgOiBNb2RlbC5tc2cgLT4gbXNnXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IE9uZV93YXkuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fbXNnXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBxID1cbiAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tc2dfb2ZfbW9kZWwgcSkgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgTXNnLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICB8IE9rIHEgLT4gT25lX3dheS5kaXNwYXRjaCBycGMgY29ubiBxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooZGlzcGF0Y2gsIEFueS5PbmVfd2F5IHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQm90aF9jb252ZXJ0ID0gc3RydWN0XG4gIG1vZHVsZSBQbGFpbiA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlZV9xdWVyeVxuICAgICAgdHlwZSBjYWxsZXJfcmVzcG9uc2VcbiAgICAgIHR5cGUgY2FsbGVlX3Jlc3BvbnNlXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IGNhbGxlcl9xdWVyeVxuICAgICAgICAtPiBjYWxsZXJfcmVzcG9uc2UgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlIC0+IHZlcnNpb246aW50IC0+IGNhbGxlZV9xdWVyeSAtPiBjYWxsZWVfcmVzcG9uc2UgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLlJwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5ScGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbiA6IHNpZ1xuICAgICAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCBxdWVyeV9vZl9jYWxsZXJfbW9kZWwgOiBDYWxsZXIucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gQ2FsbGVlLnF1ZXJ5XG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbCA6IENhbGxlZS5yZXNwb25zZSAtPiByZXNwb25zZVxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2UgOiByZXNwb25zZSAtPiBDYWxsZXIucmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvblxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9yZXNwb25zZSA9IGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQldGVzdCBfID0gSW50LlNldC5lcXVhbCAoQ2FsbGVyLnZlcnNpb25zICgpKSAoQ2FsbGVlLnZlcnNpb25zICgpKVxuICAgICAgZW5kXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSA9IENhbGxlci5kaXNwYXRjaF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfbXVsdGlcblxuICAgICAgKCogTm90ZTogQ2FsbGVyLnZlcnNpb25zIGlzIHRoZSBzYW1lIGFzIENhbGxlZS52ZXJzaW9ucywgc28gaXQgZG9lc24ndCBtYXR0ZXIgd2hpY2hcbiAgICAgICAgIG9uZSB3ZSBjYWxsIGhlcmUuIFNhbWUgZm9yIFtycGNzXS4gKilcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IENhbGxlci52ZXJzaW9ucyAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBDYWxsZXIucnBjcyAoKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNhbGxlcl9xdWVyeVxuICAgICAgdHlwZSBjYWxsZWVfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVyX3Jlc3BvbnNlXG4gICAgICB0eXBlIGNhbGxlZV9yZXNwb25zZVxuICAgICAgdHlwZSBjYWxsZXJfZXJyb3JcbiAgICAgIHR5cGUgY2FsbGVlX2Vycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IGNhbGxlcl9xdWVyeVxuICAgICAgICAtPiAoIGNhbGxlcl9yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBQaXBlX3JwYy5NZXRhZGF0YS50XG4gICAgICAgICAgICwgY2FsbGVyX2Vycm9yIClcbiAgICAgICAgICAgICBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBkaXNwYXRjaF9pdGVyX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+IGY6KGNhbGxlcl9yZXNwb25zZSBQaXBlX3JwYy5QaXBlX21lc3NhZ2UudCAtPiBQaXBlX3JwYy5QaXBlX3Jlc3BvbnNlLnQpXG4gICAgICAgIC0+IChQaXBlX3JwYy5JZC50LCBjYWxsZXJfZXJyb3IpIFJlc3VsdC50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgYWJvcnRfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gY2FsbGVlX3F1ZXJ5XG4gICAgICAgICAgICAtPiAoY2FsbGVlX3Jlc3BvbnNlIFBpcGUuUmVhZGVyLnQsIGNhbGxlZV9lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgaW1wbGVtZW50X2RpcmVjdF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBjYWxsZWVfcXVlcnlcbiAgICAgICAgICAgIC0+IGNhbGxlZV9yZXNwb25zZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAgLT4gKHVuaXQsIGNhbGxlZV9lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgICB0eXBlIGVycm9yXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBDYWxsZWUgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuUGlwZV9ycGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlclxuICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBDYWxsZWUgPSBDYWxsZWVfY29udmVydHMuUGlwZV9ycGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgcXVlcnlfb2ZfY2FsbGVyX21vZGVsIDogTW9kZWwuQ2FsbGVyLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBjYWxsZWVfbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5DYWxsZWUucXVlcnlcbiAgICAgICAgdmFsIGVycm9yX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS5lcnJvciAtPiBlcnJvclxuICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuQ2FsbGVyLmVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuQ2FsbGVlLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcblxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIDogIHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLkNhbGxlci5yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlID0gY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IE1vZGVsLkNhbGxlci5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCByZXNwb25zZV9vZl9tb2RlbCA9IHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IGVycm9yX29mX21vZGVsID0gZXJyb3Jfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlID0gY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgZGlzcGF0Y2hfaXRlcl9tdWx0aSA9IENhbGxlci5kaXNwYXRjaF9pdGVyX211bHRpXG4gICAgICBsZXQgYWJvcnRfbXVsdGkgPSBDYWxsZXIuYWJvcnRfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X2RpcmVjdF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfZGlyZWN0X211bHRpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlZV9xdWVyeVxuICAgICAgdHlwZSBjYWxsZXJfc3RhdGVcbiAgICAgIHR5cGUgY2FsbGVlX3N0YXRlXG4gICAgICB0eXBlIGNhbGxlcl91cGRhdGVcbiAgICAgIHR5cGUgY2FsbGVlX3VwZGF0ZVxuICAgICAgdHlwZSBjYWxsZXJfZXJyb3JcbiAgICAgIHR5cGUgY2FsbGVlX2Vycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IGNhbGxlcl9xdWVyeVxuICAgICAgICAtPiAoIGNhbGxlcl9zdGF0ZSAqIGNhbGxlcl91cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogU3RhdGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgLCBjYWxsZXJfZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBjYWxsZWVfcXVlcnlcbiAgICAgICAgICAgIC0+IChjYWxsZWVfc3RhdGUgKiBjYWxsZWVfdXBkYXRlIFBpcGUuUmVhZGVyLnQsIGNhbGxlZV9lcnJvcikgUmVzdWx0LnRcbiAgICAgICAgICAgICAgICAgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgICAgdHlwZSB1cGRhdGVcbiAgICAgICAgICB0eXBlIGVycm9yXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLlN0YXRlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5TdGF0ZV9ycGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgc3RhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHVwZGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCBxdWVyeV9vZl9jYWxsZXJfbW9kZWwgOiBNb2RlbC5DYWxsZXIucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLkNhbGxlZS5xdWVyeVxuICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3N0YXRlIDogc3RhdGUgLT4gTW9kZWwuQ2FsbGVyLnN0YXRlXG4gICAgICAgIHZhbCBzdGF0ZV9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUuc3RhdGUgLT4gc3RhdGVcbiAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLkNhbGxlci5lcnJvclxuICAgICAgICB2YWwgZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIDogIHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiBNb2RlbC5DYWxsZXIudXBkYXRlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIDogIE1vZGVsLkNhbGxlZS5zdGF0ZVxuICAgICAgICAgICAgLT4gTW9kZWwuQ2FsbGVlLnVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiB1cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgc3RhdGVfb2ZfbW9kZWwgPSBzdGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCB1cGRhdGVfb2ZfbW9kZWwgPSB1cGRhdGVfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3N0YXRlID0gY2FsbGVyX21vZGVsX29mX3N0YXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfdXBkYXRlID0gY2FsbGVyX21vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX2Vycm9yID0gY2FsbGVyX21vZGVsX29mX2Vycm9yXG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUudXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIDogdXBkYXRlIC0+IE1vZGVsLkNhbGxlci51cGRhdGVcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgc3RhdGVfb2ZfbW9kZWwgPSBzdGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCB1cGRhdGVfb2ZfbW9kZWwgPSB1cGRhdGVfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2Zfc3RhdGUgPSBjYWxsZXJfbW9kZWxfb2Zfc3RhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgPSBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfbXNnXG4gICAgICB0eXBlIGNhbGxlZV9tc2dcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpIDogQ29ubmVjdGlvbl93aXRoX21lbnUudCAtPiBjYWxsZXJfbXNnIC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBjYWxsZWVfbXNnIC0+IHVuaXQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgbW9kdWxlIENhbGxlciA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBDYWxsZWUgOiBzaWdcbiAgICAgICAgICB0eXBlIG1zZ1xuICAgICAgICBlbmRcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgbW9kdWxlIENhbGxlciA9IENhbGxlcl9jb252ZXJ0cy5PbmVfd2F5Lk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLk9uZV93YXkuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbiA6IHNpZ1xuICAgICAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgICB0eXBlIG1zZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgbXNnX29mX2NhbGxlcl9tb2RlbCA6IENhbGxlci5tc2cgLT4gbXNnXG4gICAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9tc2cgOiBtc2cgLT4gQ2FsbGVlLm1zZ1xuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX21zZyA9IGNhbGxlZV9tb2RlbF9vZl9tc2dcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBtc2dfb2ZfbW9kZWwgPSBtc2dfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuXG4gICAgICAoKiBOb3RlOiBDYWxsZXIudmVyc2lvbnMgaXMgdGhlIHNhbWUgYXMgQ2FsbGVlLnZlcnNpb25zLCBzbyBpdCBkb2Vzbid0IG1hdHRlciB3aGljaFxuICAgICAgICAgb25lIHdlIGNhbGwgaGVyZS4gU2FtZSBmb3IgW3JwY3NdLiAqKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBUcmFuc3BvcnRcbiAgbW9kdWxlIEhlYWRlciA9IEhlYWRlclxuICBtb2R1bGUgSGFuZGxlcl9yZXN1bHQgPSBIYW5kbGVyX3Jlc3VsdFxuICBtb2R1bGUgU2VuZF9yZXN1bHQgPSBTZW5kX3Jlc3VsdFxuICBtb2R1bGUgUmVhZGVyID0gUmVhZGVyXG4gIG1vZHVsZSBXcml0ZXIgPSBXcml0ZXJcbmVuZFxuXG5sZXQgcmVjIHBpcGVfcmVhZCB0IGYgPVxuICBtYXRjaCViaW5kIFBpcGUudmFsdWVzX2F2YWlsYWJsZSB0IHdpdGhcbiAgfCBgRW9mIC0+IGYgYEVvZlxuICB8IGBPayAtPlxuICAgIChtYXRjaCBQaXBlLnJlYWRfbm93JyB0IHdpdGhcbiAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gcGlwZV9yZWFkIHQgZlxuICAgICB8IChgRW9mIHwgYE9rIF8pIGFzIHJlcyAtPiBmIHJlcylcbjs7XG5cbm1vZHVsZSB0eXBlIERBVEEgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBhZGRfdG9fYmlnYnVmZmVyIDogQmlnYnVmZmVyLnQgLT4gdCAtPiB1bml0XG4gIHZhbCB0b19iaWdzdHJpbmcgOiB0IC0+IEJpZ3N0cmluZy50XG4gIHZhbCBvZl9iaWdzdHJpbmcgOiBCaWdzdHJpbmcudCAtPiB0XG5lbmRcblxubW9kdWxlIFBpcGVfYW5kX2J1ZmZlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcGlwZSA6ICdhIFBpcGUuUmVhZGVyLnRcbiAgICA7IGJ1ZmZlciA6IEJpZ2J1ZmZlci50XG4gICAgOyBtdXRhYmxlIGJ5dGVzX3JlYWQgOiBJbnQ2My50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgcGlwZSA9XG4gICAgeyBwaXBlOyBidWZmZXIgPSBCaWdidWZmZXIuY3JlYXRlIEhlYWRlci5sZW5ndGg7IGJ5dGVzX3JlYWQgPSBJbnQ2My56ZXJvIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgUGlwZV9yZWFkZXIgKERhdGEgOiBEQVRBKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBEYXRhLnQgUGlwZV9hbmRfYnVmZmVyLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY2xvc2UgKHQgOiB0KSA9XG4gICAgUGlwZS5jbG9zZV9yZWFkIHQucGlwZTtcbiAgICBEZWZlcnJlZC51bml0XG4gIDs7XG5cbiAgbGV0IGlzX2Nsb3NlZCAodCA6IHQpID0gUGlwZS5pc19jbG9zZWQgdC5waXBlXG4gIGxldCBieXRlc19yZWFkICh0IDogdCkgPSB0LmJ5dGVzX3JlYWRcblxuICBsZXQgcmVhZF9mb3JldmVyICh0IDogdCkgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCA6IChfLCBfKSBEZWZlcnJlZC5SZXN1bHQudCA9XG4gICAgbGV0IGJ1ZmZlciA9IHQuYnVmZmVyIGluXG4gICAgKCogRGVxdWV1ZSB1bnRpbCBlbm91Z2ggZGF0YSAoW25lZWRdKSBpcyBhdmFpbGFibGUgYW5kIHRyeSByZWFkIG1lc3NhZ2VzICopXG4gICAgbGV0IHJlYyBwcm9jZXNzX3F1ZXVlIH5uZWVkIHF1ZXVlID1cbiAgICAgIG1hdGNoIFF1ZXVlLmRlcXVldWUgcXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIFF1ZXVlIGlzIGVtcHR5IC0gd2UgbmVlZCB0byB3YWl0IGZvciBtb3JlIGRhdGEgKilcbiAgICAgICAgcmV0dXJuIChTZWNvbmQgbmVlZClcbiAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgIGxldCBidWZmX2xlbiA9IEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyIGluXG4gICAgICAgIGxldCBkYXRhX2xlbiA9IERhdGEubGVuZ3RoIGRhdGEgaW5cbiAgICAgICAgaWYgYnVmZl9sZW4gPSAwICYmIGRhdGFfbGVuID49IG5lZWRcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIFdlIGhhdmUgZW5vdWdoIGRhdGEgYW5kIGJ1ZmZlciBpcyBlbXB0eS5cbiAgICAgICAgICAgICBUaGlzIGlzIHRoZSBjb21tb24gY2FzZSB3aGVyZSBldmVyeSBiaW5fcHJvdCBtZXNzYWdlIGlzIHNlbnQgaW4gaXRzIG93blxuICAgICAgICAgICAgIHdlYnNvY2tldCBmcmFtZSAqKVxuICAgICAgICAgIHByb2Nlc3NfZGF0YSB+cG9zOjAgfmRhdGE6KERhdGEudG9fYmlnc3RyaW5nIGRhdGEpIH5sZW5ndGg6ZGF0YV9sZW4gcXVldWVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogU2xvdyBwYXRoLiBXZSBoYXZlIHRvIGFjY3VtdWxhdGUgW0JpZ3N0cmluZy50XXMgKilcbiAgICAgICAgICBEYXRhLmFkZF90b19iaWdidWZmZXIgYnVmZmVyIGRhdGE7XG4gICAgICAgICAgaWYgQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgPj0gbmVlZFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVGhlcmUgaXMgZW5vdWdoIGRhdGEgaW4gdGhlIGJ1ZmZlciAqKVxuICAgICAgICAgICAgbGV0IGRhdGEgPSBCaWdidWZmZXIudm9sYXRpbGVfY29udGVudHMgYnVmZmVyIGluXG4gICAgICAgICAgICBsZXQgbGVuZ3RoID0gQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgaW5cbiAgICAgICAgICAgIHByb2Nlc3NfZGF0YSB+cG9zOjAgfmRhdGEgfmxlbmd0aCBxdWV1ZSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKiBXZSBuZWVkIG1vcmUgZGF0YSAtIGtlZXAgcHJvY2Vzc2luZyB0aGUgcXVldWUgKilcbiAgICAgICAgICAgIHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUpXG4gICAgKCogUmVhZCBhcyBtYW55IG1lc3NhZ2VzIGFzIHBvc3NpYmxlIGZyb20gdGhlIGN1cnJlbnQgZGF0YSAqKVxuICAgIGFuZCBwcm9jZXNzX2RhdGEgfnBvcyB+ZGF0YSB+bGVuZ3RoIHF1ZXVlID1cbiAgICAgIGlmIGxlbmd0aCA+PSBIZWFkZXIubGVuZ3RoXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHBheWxvYWRfbGVuID0gSGVhZGVyLnVuc2FmZV9nZXRfcGF5bG9hZF9sZW5ndGggZGF0YSB+cG9zIGluXG4gICAgICAgIGxldCB0b3RhbF9sZW4gPSBIZWFkZXIubGVuZ3RoICsgcGF5bG9hZF9sZW4gaW5cbiAgICAgICAgaWYgbGVuZ3RoID49IHRvdGFsX2xlblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICB0LmJ5dGVzX3JlYWQgPC0gSW50NjMuKHQuYnl0ZXNfcmVhZCArIG9mX2ludCBwYXlsb2FkX2xlbik7XG4gICAgICAgICAgbWF0Y2ggb25fbWVzc2FnZSBkYXRhIH5wb3M6KHBvcyArIEhlYWRlci5sZW5ndGgpIH5sZW46cGF5bG9hZF9sZW4gd2l0aFxuICAgICAgICAgIHwgSGFuZGxlcl9yZXN1bHQuU3RvcCB4IC0+XG4gICAgICAgICAgICBsZXQgcG9zID0gcG9zICsgdG90YWxfbGVuIGluXG4gICAgICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoIC0gdG90YWxfbGVuIGluXG4gICAgICAgICAgICAoKiBNYWtlIHN1cmUgdGhhdCBhbGwgZGF0YSB3ZSd2ZSByZWFkIChhbmQgbm90IFwiY29uc3VtZWRcIikgZnJvbSB0aGUgcGlwZVxuICAgICAgICAgICAgICAgaXMga2VwdCBpbiB0aGUgYnVmZmVyLlxuICAgICAgICAgICAgICAgVGhhdCBpcyB0aGUgcmVtYWluaW5nIGJpdHMgaW4gW2RhdGFdIGFuZCBhbGwgY29udGVudHMgaW4gW3F1ZXVlXS5cbiAgICAgICAgICAgICopXG4gICAgICAgICAgICBzZXRfYnVmZmVyIH5wb3Mgfmxlbmd0aCB+ZGF0YTtcbiAgICAgICAgICAgIFF1ZXVlLml0ZXIgcXVldWUgfmY6KGZ1biBkYXRhIC0+IERhdGEuYWRkX3RvX2JpZ2J1ZmZlciBidWZmZXIgZGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gKEZpcnN0IHgpXG4gICAgICAgICAgfCAoQ29udGludWUgfCBXYWl0IF8pIGFzIGNvbnRpbnVlX29yX3dhaXQgLT5cbiAgICAgICAgICAgIGxldCViaW5kICgpID1cbiAgICAgICAgICAgICAgbWF0Y2ggY29udGludWVfb3Jfd2FpdCB3aXRoXG4gICAgICAgICAgICAgIHwgSGFuZGxlcl9yZXN1bHQuU3RvcCBfIC0+XG4gICAgICAgICAgICAgICAgKCogSW1wb3NzaWJsZTogdGhpcyBicmFuY2ggZG9lcyBub3QgY29udGFpbiBbU3RvcCBfXSAqKVxuICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICB8IENvbnRpbnVlIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgICAgfCBXYWl0IGQgLT4gZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSBwb3MgKyB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGggLSB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgIGFzc2VydCAobGVuZ3RoID49IDApO1xuICAgICAgICAgICAgaWYgbGVuZ3RoID4gMFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAoKiBQcm9jZXNzIHRoZSByZXN0IG9mIHRoZSBkYXRhLlxuICAgICAgICAgICAgICAgICBNb3JlIHRoYW4gb25lIGJpbl9wcm90IG1lc3NhZ2Ugd2FzIHNlbnQgaW5zaWRlIHRoZSB3ZWJzb2NrZXQgZnJhbWUgKilcbiAgICAgICAgICAgICAgcHJvY2Vzc19kYXRhIH5wb3MgfmRhdGEgfmxlbmd0aCBxdWV1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoKiBsZW5ndGggPSAwICopXG4gICAgICAgICAgICAgICgqIEFsbCBkYXRhIHdhcyByZWFkIC0ga2VlcCBwcm9jZXNzaW5nIHRoZSBxdWV1ZSAqKVxuICAgICAgICAgICAgICBzZXRfYnVmZmVyX2FuZF9wcm9jZXNzX3F1ZXVlIH5uZWVkOkhlYWRlci5sZW5ndGggfnBvcyB+bGVuZ3RoOjAgfnF1ZXVlIH5kYXRhKVxuICAgICAgICBlbHNlIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQ6dG90YWxfbGVuIH5wb3Mgfmxlbmd0aCB+cXVldWUgfmRhdGEpXG4gICAgICBlbHNlIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQ6SGVhZGVyLmxlbmd0aCB+cG9zIH5sZW5ndGggfnF1ZXVlIH5kYXRhXG4gICAgYW5kIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhID1cbiAgICAgIGlmIGxlbmd0aCA9IDBcbiAgICAgIHRoZW4gQmlnYnVmZmVyLmNsZWFyIGJ1ZmZlclxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBkYXRhID0gQmlnc3RyaW5nLnN1YiBkYXRhIH5wb3MgfmxlbjpsZW5ndGggaW5cbiAgICAgICAgQmlnYnVmZmVyLmNsZWFyIGJ1ZmZlcjtcbiAgICAgICAgQmlnYnVmZmVyLmFkZF9iaWdzdHJpbmcgYnVmZmVyIGRhdGEpXG4gICAgYW5kIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQgfnBvcyB+bGVuZ3RoIH5xdWV1ZSB+ZGF0YSA9XG4gICAgICBzZXRfYnVmZmVyIH5wb3Mgfmxlbmd0aCB+ZGF0YTtcbiAgICAgIHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWVcbiAgICBpblxuICAgIGxldCByZWMgd2FpdF9mb3JfcmVhZCB+bmVlZCA9XG4gICAgICBwaXBlX3JlYWQgdC5waXBlIChmdW5jdGlvblxuICAgICAgICB8IGBFb2YgLT4gcmV0dXJuIChFcnJvciBgRW9mKVxuICAgICAgICB8IGBPayBxdWV1ZSAtPiBwcm9jZXNzX3F1ZXVlIH5uZWVkIHF1ZXVlID4+PSBlbmRfb2ZfYmF0Y2hfYW5kX2NvbnRpbnVlKVxuICAgIGFuZCBlbmRfb2ZfYmF0Y2hfYW5kX2NvbnRpbnVlIG5leHQgPVxuICAgICAgb25fZW5kX29mX2JhdGNoICgpO1xuICAgICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IEZpcnN0IHJlc3VsdCAtPiByZXR1cm4gKE9rIHJlc3VsdClcbiAgICAgIHwgU2Vjb25kIG5lZWQgLT4gd2FpdF9mb3JfcmVhZCB+bmVlZFxuICAgIGluXG4gICAgbGV0IHN0YXJ0X3Byb2Nlc3NpbmdfZXhpc3RpbmdfZGF0YSB+ZGF0YSB+bGVuZ3RoID1cbiAgICAgIHByb2Nlc3NfZGF0YSB+cG9zOjAgfmRhdGEgfmxlbmd0aCAoUXVldWUuY3JlYXRlICgpKSA+Pj0gZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZVxuICAgIGluXG4gICAgKCogV2UgZWl0aGVyIHN0YXJ0IGJ5XG4gICAgICAgLSBwcm9jZXNzaW5nIHJlbWFpbmluZyBiaXRzIGluIHRoZSBidWZmZXJcbiAgICAgICAtIG9yIHdhaXRpbmcgZm9yIG1vcmUgZGF0YSBpbiB0aGUgcGlwZSAqKVxuICAgIGxldCBuZWVkID0gSGVhZGVyLmxlbmd0aCBpblxuICAgIGxldCBsZW5ndGggPSBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciBpblxuICAgIGlmIEludC4oIDwgKSBsZW5ndGggbmVlZFxuICAgIHRoZW4gd2FpdF9mb3JfcmVhZCB+bmVlZFxuICAgIGVsc2Ugc3RhcnRfcHJvY2Vzc2luZ19leGlzdGluZ19kYXRhIH5sZW5ndGggfmRhdGE6KEJpZ2J1ZmZlci52b2xhdGlsZV9jb250ZW50cyBidWZmZXIpXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRGF0YS50XG5cbiAgICBsZXQgb2ZfYmlnc3RyaW5nID0gRGF0YS5vZl9iaWdzdHJpbmdcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBpcGVfYW5kX21vbml0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHBpcGUgOiAnYSBQaXBlLldyaXRlci50XG4gICAgOyBtb25pdG9yIDogTW9uaXRvci50XG4gICAgOyBtdXRhYmxlIGJ5dGVzX3dyaXR0ZW4gOiBJbnQ2My50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgcGlwZSA9IHsgcGlwZTsgbW9uaXRvciA9IE1vbml0b3IuY3JlYXRlICgpOyBieXRlc193cml0dGVuID0gSW50NjMuemVybyB9XG5lbmRcblxuKCogV2UgZG9uJ3QgcGVyZm9ybSBhbnkgYnVmZmVyaW5nIGhlcmUuXG4gICBBIG1lc3NhZ2UgaXMgY29uc2lkZXIgdG8gYmUgZmx1c2hlZCBhcyBzb29uIGFzIGl0IGVudGVycyB0aGUgcGlwZS4gKilcbm1vZHVsZSBQaXBlX3dyaXRlciAoRGF0YSA6IERBVEEpID0gc3RydWN0XG4gIHR5cGUgdCA9IERhdGEudCBQaXBlX2FuZF9tb25pdG9yLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY2xvc2UgKHQgOiB0KSA9XG4gICAgUGlwZS5jbG9zZSB0LnBpcGU7XG4gICAgRGVmZXJyZWQudW5pdFxuICA7O1xuXG4gIGxldCBpc19jbG9zZWQgKHQgOiB0KSA9IFBpcGUuaXNfY2xvc2VkIHQucGlwZVxuICBsZXQgbW9uaXRvciAodCA6IHQpID0gdC5tb25pdG9yXG5cbiAgKCogQmVjYXVzZSB3ZSBkb24ndCBtYWludGFpbiBhbnkgYnVmZmVyLCB0aGVyZSBhcmUgbm8gcGVuZGluZyB3cml0ZXMgKilcbiAgbGV0IGJ5dGVzX3RvX3dyaXRlIChfIDogdCkgPSAwXG4gIGxldCBieXRlc193cml0dGVuICh0IDogdCkgPSB0LmJ5dGVzX3dyaXR0ZW5cbiAgbGV0IHN0b3BwZWQgKHQgOiB0KSA9IFBpcGUuY2xvc2VkIHQucGlwZVxuXG4gICgqIFdlIGNvbnNpZGVyIHRoYXQgYSBtZXNzYWdlIGlzIGZsdXNoZWQgYXMgc29vbiBhcyBpdCByZWFjaGVzIHRoZSB1bmRlcmxpbmluZ1xuICAgICB0cmFuc3BvcnQuICopXG4gIGxldCBmbHVzaGVkIChfIDogdCkgPSBEZWZlcnJlZC51bml0XG4gIGxldCByZWFkeV90b193cml0ZSA9IGZsdXNoZWRcbiAgbGV0IHNlbnRfcmVzdWx0IHggOiBfIFNlbmRfcmVzdWx0LnQgPSBTZW50IHhcblxuICBsZXQgY2hlY2tfY2xvc2VkICh0IDogdCkgZiA9XG4gICAgaWYgbm90IChQaXBlLmlzX2Nsb3NlZCB0LnBpcGUpIHRoZW4gZiAoKSBlbHNlIFNlbmRfcmVzdWx0LkNsb3NlZFxuICA7O1xuXG4gIGxldCBpbmNyX2J5dGVzX3dyaXR0ZW4gKHQgOiB0KSBudW1fYnl0ZXMgPVxuICAgIHQuYnl0ZXNfd3JpdHRlbiA8LSBJbnQ2My4odC5ieXRlc193cml0dGVuICsgb2ZfaW50IG51bV9ieXRlcylcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdCB0IHdyaXRlciB4ID1cbiAgICBjaGVja19jbG9zZWQgdCAoZnVuICgpIC0+XG4gICAgICBsZXQgYnVmID0gQmluX3Byb3QuVXRpbHMuYmluX2R1bXAgfmhlYWRlcjp0cnVlIHdyaXRlciB4IGluXG4gICAgICBsZXQgZGF0YSA9IERhdGEub2ZfYmlnc3RyaW5nIGJ1ZiBpblxuICAgICAgaW5jcl9ieXRlc193cml0dGVuIHQgKERhdGEubGVuZ3RoIGRhdGEpO1xuICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQucGlwZSBkYXRhO1xuICAgICAgc2VudF9yZXN1bHQgKCkpXG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgICAgICB0XG4gICAgICAgICh3cml0ZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyKVxuICAgICAgICB4XG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuOnBheWxvYWRfc2l6ZVxuICAgID1cbiAgICBjaGVja19jbG9zZWQgdCAoZnVuICgpIC0+XG4gICAgICAoKiBXcml0ZSB0aGUgc2l6ZSBoZWFkZXIgbWFudWFsbHkgYW5kIGNvbmNhdGVuYXRlIHRoZSB0d28gKilcbiAgICAgIGxldCBkYXRhX3NpemUgPSB3cml0ZXIuc2l6ZSB4IGluXG4gICAgICBsZXQgZGF0YSA9IEJpZ3N0cmluZy5jcmVhdGUgKGRhdGFfc2l6ZSArIEhlYWRlci5sZW5ndGggKyBwYXlsb2FkX3NpemUpIGluXG4gICAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBkYXRhIH5wb3M6MCAoZGF0YV9zaXplICsgcGF5bG9hZF9zaXplKTtcbiAgICAgIGxldCBkc3RfcG9zID0gd3JpdGVyLndyaXRlIGRhdGEgfnBvczpIZWFkZXIubGVuZ3RoIHggaW5cbiAgICAgIEJpZ3N0cmluZy5ibGl0IH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OmRhdGEgfmRzdF9wb3MgfmxlbjpwYXlsb2FkX3NpemU7XG4gICAgICBsZXQgZGF0YSA9IERhdGEub2ZfYmlnc3RyaW5nIGRhdGEgaW5cbiAgICAgIGluY3JfYnl0ZXNfd3JpdHRlbiB0IChEYXRhLmxlbmd0aCBkYXRhKTtcbiAgICAgIFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB0LnBpcGUgZGF0YTtcbiAgICAgIHNlbnRfcmVzdWx0ICgpKVxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmcgdCB3cml0ZXIgeCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgbWF0Y2ggc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIHQgd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW4gd2l0aFxuICAgIHwgU2VudCAoKSAtPiBzZW50X3Jlc3VsdCBEZWZlcnJlZC51bml0XG4gICAgfCAoQ2xvc2VkIHwgTWVzc2FnZV90b29fYmlnIF8pIGFzIHIgLT4gclxuICA7O1xuZW5kXG5cbm1vZHVsZSBCaWdzdHJpbmdfZGF0YSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCaWdzdHJpbmcudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBsZW5ndGggPSBCaWdzdHJpbmcubGVuZ3RoXG4gIGxldCBhZGRfdG9fYmlnYnVmZmVyID0gQmlnYnVmZmVyLmFkZF9iaWdzdHJpbmdcbiAgbGV0IHRvX2JpZ3N0cmluZyB4ID0geFxuICBsZXQgb2ZfYmlnc3RyaW5nIHggPSB4XG5lbmRcblxubW9kdWxlIFN0cmluZ19kYXRhID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0cmluZy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcbiAgbGV0IGFkZF90b19iaWdidWZmZXIgPSBCaWdidWZmZXIuYWRkX3N0cmluZ1xuICBsZXQgdG9fYmlnc3RyaW5nIHggPSBCaWdzdHJpbmcub2Zfc3RyaW5nIHhcbiAgbGV0IG9mX2JpZ3N0cmluZyB4ID0gQmlnc3RyaW5nLnRvX3N0cmluZyB4XG5lbmRcblxubW9kdWxlIEJpZ3N0cmluZ19waXBlX3JlYWRlciA9IFBpcGVfcmVhZGVyIChCaWdzdHJpbmdfZGF0YSlcbm1vZHVsZSBCaWdzdHJpbmdfcGlwZV93cml0ZXIgPSBQaXBlX3dyaXRlciAoQmlnc3RyaW5nX2RhdGEpXG5tb2R1bGUgU3RyaW5nX3BpcGVfcmVhZGVyID0gUGlwZV9yZWFkZXIgKFN0cmluZ19kYXRhKVxubW9kdWxlIFN0cmluZ19waXBlX3dyaXRlciA9IFBpcGVfd3JpdGVyIChTdHJpbmdfZGF0YSlcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFN0cmluZyA6IHN0cmluZyB0XG4gICAgfCBCaWdzdHJpbmcgOiBiaWdzdHJpbmcgdFxuXG4gIGxldCBzdHJpbmcgPSBTdHJpbmdcbiAgbGV0IGJpZ3N0cmluZyA9IEJpZ3N0cmluZ1xuZW5kXG5cbmxldCBtYWtlX3JlYWRlciAodHlwZSBhKSAoeCA6IGEgS2luZC50KSAocmVhZGVyIDogYSBQaXBlLlJlYWRlci50KSA9XG4gIGxldCByZWFkZXIgPSBQaXBlX2FuZF9idWZmZXIuY3JlYXRlIHJlYWRlciBpblxuICBtYXRjaCB4IHdpdGhcbiAgfCBLaW5kLlN0cmluZyAtPiBSZWFkZXIucGFjayAobW9kdWxlIFN0cmluZ19waXBlX3JlYWRlcikgcmVhZGVyXG4gIHwgS2luZC5CaWdzdHJpbmcgLT4gUmVhZGVyLnBhY2sgKG1vZHVsZSBCaWdzdHJpbmdfcGlwZV9yZWFkZXIpIHJlYWRlclxuOztcblxubGV0IG1ha2Vfd3JpdGVyICh0eXBlIGEpICh4IDogYSBLaW5kLnQpICh3cml0ZXIgOiBhIFBpcGUuV3JpdGVyLnQpID1cbiAgbGV0IHdyaXRlciA9IFBpcGVfYW5kX21vbml0b3IuY3JlYXRlIHdyaXRlciBpblxuICBtYXRjaCB4IHdpdGhcbiAgfCBLaW5kLlN0cmluZyAtPiBXcml0ZXIucGFjayAobW9kdWxlIFN0cmluZ19waXBlX3dyaXRlcikgd3JpdGVyXG4gIHwgS2luZC5CaWdzdHJpbmcgLT4gV3JpdGVyLnBhY2sgKG1vZHVsZSBCaWdzdHJpbmdfcGlwZV93cml0ZXIpIHdyaXRlclxuOztcblxubGV0IGNyZWF0ZSBraW5kIHJlYWRlciB3cml0ZXIgPVxuICB7IFRyYW5zcG9ydC5yZWFkZXIgPSBtYWtlX3JlYWRlciBraW5kIHJlYWRlcjsgd3JpdGVyID0gbWFrZV93cml0ZXIga2luZCB3cml0ZXIgfVxuOztcblxuKCogVGVzdGluZyAqKVxuXG5tb2R1bGUgdHlwZSBUcmFuc3BvcnRfcmVhZGVyID0gc2lnXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIG9mX2JpZ3N0cmluZyA6IEJpZ3N0cmluZy50IC0+IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBUcmFuc3BvcnQuUmVhZGVyLlMgd2l0aCB0eXBlIHQgPSBGb3JfdGVzdGluZy50IFBpcGVfYW5kX2J1ZmZlci50XG5lbmRcblxubW9kdWxlIFRlc3RfcmVhZGVyIChUcmFuc3BvcnRfcmVhZGVyIDogVHJhbnNwb3J0X3JlYWRlcikgPSBzdHJ1Y3RcbiAgb3BlbiBUcmFuc3BvcnRfcmVhZGVyLkZvcl90ZXN0aW5nXG5cbiAgbGV0IGRlZmF1bHRfbWVzc2FnZSA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJGT09CQVIxMjNcIlxuXG4gIGxldCBjcmVhdGVfbWVzc2FnZV9idWYgKG1lc3NhZ2UgOiBCaWdzdHJpbmcudCkgOiBCaWdzdHJpbmcudCA9XG4gICAgbGV0IG1lc3NhZ2VfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlIGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgKEhlYWRlci5sZW5ndGggKyBtZXNzYWdlX2xlbikgaW5cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIG1lc3NhZ2VfbGVuO1xuICAgIEJpZ3N0cmluZy5ibGl0XG4gICAgICB+c3JjOm1lc3NhZ2VcbiAgICAgIH5kc3Q6YnVmXG4gICAgICB+c3JjX3BvczowXG4gICAgICB+ZHN0X3BvczpIZWFkZXIubGVuZ3RoXG4gICAgICB+bGVuOm1lc3NhZ2VfbGVuO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWVzc2FnZSAoKSA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2VcblxuICBsZXQgb25fbWVzc2FnZSA/KG1lc3NhZ2UgPSBkZWZhdWx0X21lc3NhZ2UpIG9uX21lc3NhZ2VfY291bnQgYnVmZmVyIH5wb3MgfmxlbiA9XG4gICAgb25fbWVzc2FnZV9jb3VudCA6PSAhb25fbWVzc2FnZV9jb3VudCArIDE7XG4gICAgWyV0ZXN0X3Jlc3VsdDogQmlnc3RyaW5nLnRdIChCaWdzdHJpbmcuc3ViIGJ1ZmZlciB+cG9zIH5sZW4pIH5leHBlY3Q6bWVzc2FnZTtcbiAgICBIYW5kbGVyX3Jlc3VsdC5Db250aW51ZVxuICA7O1xuXG4gIGxldCBvbl9lbmRfb2ZfYmF0Y2ggb25fZW5kX29mX2JhdGNoX2NvdW50ICgpID0gaW5jciBvbl9lbmRfb2ZfYmF0Y2hfY291bnRcbiAgbGV0IHdhaXQgKCkgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyLkV4cGVydC5ydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluICgpXG5cbiAgbGV0IHJ1bl90ZXN0IHJ1biB2ZXJpZnkgPVxuICAgIGxldCByZWFkZXIsIHdyaXRlciA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gICAgbGV0IG9uX21lc3NhZ2VfY291bnQgPSByZWYgMCBpblxuICAgIGxldCBvbl9lbmRfb2ZfYmF0Y2hfY291bnQgPSByZWYgMCBpblxuICAgIGxldCBvbl9tZXNzYWdlID0gb25fbWVzc2FnZSBvbl9tZXNzYWdlX2NvdW50IGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaCA9IG9uX2VuZF9vZl9iYXRjaCBvbl9lbmRfb2ZfYmF0Y2hfY291bnQgaW5cbiAgICBpZ25vcmUgKFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyIHJlYWRlciB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoKTtcbiAgICB3YWl0ICgpO1xuICAgIHJ1biAoZnVuIHggLT4gUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciAob2ZfYmlnc3RyaW5nIHgpKTtcbiAgICB3YWl0ICgpO1xuICAgIHZlcmlmeSB+b25fbWVzc2FnZV9jb3VudCB+b25fZW5kX29mX2JhdGNoX2NvdW50XG4gIDs7XG5cbiAgbGV0IHZlcmlmeSB+b25fbWVzc2FnZV9jb3VudCB+b25fZW5kX29mX2JhdGNoX2NvdW50IG1lc3NhZ2VfY291bnQgYmF0Y2hfY291bnQgPVxuICAgIFsldGVzdF9yZXN1bHQ6IGludF0gIW9uX21lc3NhZ2VfY291bnQgfmV4cGVjdDptZXNzYWdlX2NvdW50O1xuICAgIFsldGVzdF9yZXN1bHQ6IGludF0gIW9uX2VuZF9vZl9iYXRjaF9jb3VudCB+ZXhwZWN0OmJhdGNoX2NvdW50XG4gIDs7XG5cbiAgbGV0IHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGUgPSB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpXG5cbiAgKCogTm90IGVub3VnaCBkYXRhLCB3ZSBuZWVkIHRvIGFjY3VtdWxhdGUgKilcbiAgbGV0IHdyaXRlXzFfbXNnXzNfY2h1bmsgd3JpdGUgPVxuICAgIGxldCBidWYgPSBjcmVhdGVfbWVzc2FnZV9idWYgKEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJcIikgaW5cbiAgICBsZXQgbWVzc2FnZV9yYXcgPSBkZWZhdWx0X21lc3NhZ2UgaW5cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIChCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2VfcmF3KTtcbiAgICB3cml0ZSBidWY7XG4gICAgd2FpdCAoKTtcbiAgICBsZXQgbXNnX2xlbiA9IEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZV9yYXcgaW5cbiAgICBsZXQgc3BsaXRfYXQgPSBtc2dfbGVuIC8gMiBpblxuICAgIGxldCBwYXJ0MSA9IEJpZ3N0cmluZy5zdWIgbWVzc2FnZV9yYXcgfnBvczowIH5sZW46c3BsaXRfYXQgaW5cbiAgICBsZXQgcGFydDIgPSBCaWdzdHJpbmcuc3ViIG1lc3NhZ2VfcmF3IH5wb3M6c3BsaXRfYXQgfmxlbjoobXNnX2xlbiAtIHNwbGl0X2F0KSBpblxuICAgIHdyaXRlIHBhcnQxO1xuICAgIHdhaXQgKCk7XG4gICAgd3JpdGUgcGFydDJcbiAgOztcblxuICAoKiBUb28gbXVjaCBkYXRhLCB3ZSBuZWVkIHRvIGxvb3Agd2l0aGluZyB0aGUgc2FtZSBiYXRjaCAqKVxuICBsZXQgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZSA9XG4gICAgbGV0IG9uZV9tc2cgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlIGluXG4gICAgbGV0IHR3b19tc2cgPSBCaWdzdHJpbmcuY29uY2F0IFsgb25lX21zZzsgb25lX21zZyBdIGluXG4gICAgd3JpdGUgdHdvX21zZ1xuICA7O1xuXG4gIGxldCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgd3JpdGUgPVxuICAgIGxldCBvbmVfbXNnID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZSBpblxuICAgIGxldCB0d29fbXNnID0gQmlnc3RyaW5nLmNvbmNhdCBbIG9uZV9tc2c7IG9uZV9tc2cgXSBpblxuICAgIGZvciBpID0gMCB0byBCaWdzdHJpbmcubGVuZ3RoIHR3b19tc2cgLSAxIGRvXG4gICAgICB3cml0ZSAoQmlnc3RyaW5nLnN1YiB0d29fbXNnIH5wb3M6aSB+bGVuOjEpO1xuICAgICAgd2FpdCAoKVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8xX21zZ18xX2NodW5rICh2ZXJpZnkgMSAxKVxuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGVcbiAgICBpblxuICAgIHJ1bl90ZXN0IGYgKHZlcmlmeSAyIDEpXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfM19jaHVuayAodmVyaWZ5IDEgMylcbiAgbGV0JXRlc3RfdW5pdCBfID0gcnVuX3Rlc3Qgd3JpdGVfMl9tc2dfMV9jaHVuayAodmVyaWZ5IDIgMSlcbiAgbGV0JXRlc3RfdW5pdCBfID0gcnVuX3Rlc3Qgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rICh2ZXJpZnkgMiAzNClcblxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSk7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpXG4gICAgaW5cbiAgICBydW5fdGVzdCBmICh2ZXJpZnkgNyA0MClcbiAgOztcblxuICBsZXQldGVzdF91bml0IFwiY2FuIGNhbGwgcmVhZF9mb3JldmVyIG11bHRpcGxlIHRpbWVzXCIgPVxuICAgIGxldCByZWFkZXIsIHdyaXRlciA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaCAoKSA9ICgpIGluXG4gICAgbGV0IHdyaXRlIHggPSBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChvZl9iaWdzdHJpbmcgeCkgaW5cbiAgICBsZXQgbnVtID0gcmVmIDAgaW5cbiAgICBsZXQgc3RvcF9hZnRlcl9vbl9tZXNzYWdlIGJ1ZmZlciB+cG9zIH5sZW4gPVxuICAgICAgaW5jciBudW07XG4gICAgICBbJXRlc3RfcmVzdWx0OiBCaWdzdHJpbmcudF0gKEJpZ3N0cmluZy5zdWIgYnVmZmVyIH5wb3MgfmxlbikgfmV4cGVjdDpkZWZhdWx0X21lc3NhZ2U7XG4gICAgICBIYW5kbGVyX3Jlc3VsdC5TdG9wICgpXG4gICAgaW5cbiAgICB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlO1xuICAgIFBpcGUuY2xvc2Ugd3JpdGVyO1xuICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAobGV0JWJpbmQgeCA9XG4gICAgICAgICBUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlclxuICAgICAgICAgICByZWFkZXJcbiAgICAgICAgICAgfm9uX21lc3NhZ2U6c3RvcF9hZnRlcl9vbl9tZXNzYWdlXG4gICAgICAgICAgIH5vbl9lbmRfb2ZfYmF0Y2hcbiAgICAgICBpblxuICAgICAgIGFzc2VydCAoUmVzdWx0LmlzX29rIHgpO1xuICAgICAgIGxldCViaW5kIHggPVxuICAgICAgICAgVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXJcbiAgICAgICAgICAgcmVhZGVyXG4gICAgICAgICAgIH5vbl9tZXNzYWdlOnN0b3BfYWZ0ZXJfb25fbWVzc2FnZVxuICAgICAgICAgICB+b25fZW5kX29mX2JhdGNoXG4gICAgICAgaW5cbiAgICAgICBhc3NlcnQgKFJlc3VsdC5pc19vayB4KTtcbiAgICAgICBEZWZlcnJlZC51bml0KTtcbiAgICB3YWl0ICgpO1xuICAgIFsldGVzdF9yZXN1bHQ6IEludC50XSB+ZXhwZWN0OjIgIW51bVxuICA7O1xuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBcIlRlc3RfcmVhZGVyX3N0cmluZ1wiID0gKG1vZHVsZSBUZXN0X3JlYWRlciAoU3RyaW5nX3BpcGVfcmVhZGVyKSlcbmxldCV0ZXN0X21vZHVsZSBcIlRlc3RfcmVhZGVyX2JpZ3N0cmluZ1wiID0gKG1vZHVsZSBUZXN0X3JlYWRlciAoQmlnc3RyaW5nX3BpcGVfcmVhZGVyKSlcblxubW9kdWxlIEJlbmNoX3JlYWRlciAoVHJhbnNwb3J0X3JlYWRlciA6IFRyYW5zcG9ydF9yZWFkZXIpID0gc3RydWN0XG4gIG9wZW4gVHJhbnNwb3J0X3JlYWRlci5Gb3JfdGVzdGluZ1xuXG4gIGxldCBkZWZhdWx0X21lc3NhZ2UgPSBCaWdzdHJpbmcub2Zfc3RyaW5nIFwiRk9PQkFSMTIzXCJcblxuICBsZXQgY3JlYXRlX21lc3NhZ2VfYnVmIChtZXNzYWdlIDogQmlnc3RyaW5nLnQpIDogQmlnc3RyaW5nLnQgPVxuICAgIGxldCBtZXNzYWdlX2xlbiA9IEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZSBpblxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcuY3JlYXRlIChIZWFkZXIubGVuZ3RoICsgbWVzc2FnZV9sZW4pIGluXG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCBtZXNzYWdlX2xlbjtcbiAgICBCaWdzdHJpbmcuYmxpdFxuICAgICAgfnNyYzptZXNzYWdlXG4gICAgICB+ZHN0OmJ1ZlxuICAgICAgfnNyY19wb3M6MFxuICAgICAgfmRzdF9wb3M6SGVhZGVyLmxlbmd0aFxuICAgICAgfmxlbjptZXNzYWdlX2xlbjtcbiAgICBidWZcbiAgOztcblxuICBsZXQgY3JlYXRlX21lc3NhZ2UgKCkgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlXG4gIGxldCBvbmVfbWVzc2FnZSA9IGNyZWF0ZV9tZXNzYWdlICgpXG4gIGxldCB0d29fbWVzc2FnZXMgPSBCaWdzdHJpbmcuY29uY2F0IFsgb25lX21lc3NhZ2U7IG9uZV9tZXNzYWdlIF1cblxuICBsZXQgb25lX21lc3NhZ2VfcDEsIG9uZV9tZXNzYWdlX3AyID1cbiAgICBsZXQgbXNnX2xlbiA9IEJpZ3N0cmluZy5sZW5ndGggb25lX21lc3NhZ2UgaW5cbiAgICBsZXQgc3BsaXRfYXQgPSBtc2dfbGVuIC8gMiBpblxuICAgIGxldCBwYXJ0MSA9IEJpZ3N0cmluZy5zdWIgb25lX21lc3NhZ2UgfnBvczowIH5sZW46c3BsaXRfYXQgaW5cbiAgICBsZXQgcGFydDIgPSBCaWdzdHJpbmcuc3ViIG9uZV9tZXNzYWdlIH5wb3M6c3BsaXRfYXQgfmxlbjoobXNnX2xlbiAtIHNwbGl0X2F0KSBpblxuICAgIHBhcnQxLCBwYXJ0MlxuICA7O1xuXG4gIGxldCBvbl9tZXNzYWdlIF9idWZmZXIgfnBvczpfIH5sZW46XyA9IEhhbmRsZXJfcmVzdWx0LkNvbnRpbnVlXG4gIGxldCBvbl9lbmRfb2ZfYmF0Y2ggKCkgPSAoKVxuICBsZXQgd2FpdCAoKSA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuRXhwZXJ0LnJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gKClcblxuICBsZXQgcnVuX3Rlc3QgcnVuID1cbiAgICBsZXQgcmVhZGVyLCB3cml0ZXIgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWFkZXIgPSBQaXBlX2FuZF9idWZmZXIuY3JlYXRlIHJlYWRlciBpblxuICAgIGxldCBvbl9tZXNzYWdlID0gb25fbWVzc2FnZSBpblxuICAgIGxldCBvbl9lbmRfb2ZfYmF0Y2ggPSBvbl9lbmRfb2ZfYmF0Y2ggaW5cbiAgICBpZ25vcmUgKFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyIHJlYWRlciB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoKTtcbiAgICB3YWl0ICgpO1xuICAgIGZvciBfID0gMCB0byAxMDAgZG9cbiAgICAgIHJ1biAoZnVuIHggLT4gUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciAob2ZfYmlnc3RyaW5nIHgpKVxuICAgIGRvbmU7XG4gICAgd2FpdCAoKVxuICA7O1xuXG4gIGxldCB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlID0gd3JpdGUgb25lX21lc3NhZ2VcblxuICAoKiBOb3QgZW5vdWdoIGRhdGEsIHdlIG5lZWQgdG8gYWNjdW11bGF0ZSAqKVxuICBsZXQgYnVmID0gY3JlYXRlX21lc3NhZ2VfYnVmIChCaWdzdHJpbmcub2Zfc3RyaW5nIFwiXCIpXG5cbiAgbGV0IHdyaXRlXzFfbXNnXzNfY2h1bmsgd3JpdGUgPVxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgKEJpZ3N0cmluZy5sZW5ndGggb25lX21lc3NhZ2UpO1xuICAgIHdyaXRlIGJ1ZjtcbiAgICB3cml0ZSBvbmVfbWVzc2FnZV9wMTtcbiAgICB3cml0ZSBvbmVfbWVzc2FnZV9wMlxuICA7O1xuXG4gICgqIFRvbyBtdWNoIGRhdGEsIHdlIG5lZWQgdG8gbG9vcCB3aXRoaW5nIHRoZSBzYW1lIGJhdGNoICopXG4gIGxldCB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlID0gd3JpdGUgdHdvX21lc3NhZ2VzXG5cbiAgbGV0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZSA9XG4gICAgZm9yIGkgPSAwIHRvIEJpZ3N0cmluZy5sZW5ndGggdHdvX21lc3NhZ2VzIC0gMSBkb1xuICAgICAgd3JpdGUgKEJpZ3N0cmluZy5zdWIgdHdvX21lc3NhZ2VzIH5wb3M6aSB+bGVuOjEpXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCViZW5jaCBcIndyaXRlXzFfbXNnXzFfY2h1bmtcIiA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzFfY2h1bmtcblxuICBsZXQlYmVuY2ggXCJ3cml0ZV8yX21zZ18xX2NodW5rXCIgPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlXG4gICAgaW5cbiAgICBydW5fdGVzdCBmXG4gIDs7XG5cbiAgbGV0JWJlbmNoIFwid3JpdGVfMV9tc2dfM19jaHVua1wiID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfM19jaHVua1xuICBsZXQlYmVuY2ggXCJ3cml0ZV8yX21zZ18xX2NodW5rXCIgPSBydW5fdGVzdCB3cml0ZV8yX21zZ18xX2NodW5rXG4gIGxldCViZW5jaCBcIndyaXRlXzJfbXNnX29uZV9ieXRlXCIgPSBydW5fdGVzdCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmtcblxuICBsZXQlYmVuY2ggXCJtdWx0aVwiID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpO1xuICAgICAgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpXG4gICAgaW5cbiAgICBydW5fdGVzdCBmXG4gIDs7XG5lbmRcblxubGV0JWJlbmNoX21vZHVsZSBcIlRlc3RfcmVhZGVyX3N0cmluZ1wiID0gKG1vZHVsZSBCZW5jaF9yZWFkZXIgKFN0cmluZ19waXBlX3JlYWRlcikpXG5sZXQlYmVuY2hfbW9kdWxlIFwiVGVzdF9yZWFkZXJfYmlnc3RyaW5nXCIgPSAobW9kdWxlIEJlbmNoX3JlYWRlciAoQmlnc3RyaW5nX3BpcGVfcmVhZGVyKSlcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxuaW5jbHVkZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25fa2VybmVsXG5cbm1vZHVsZSBWZXJzaW9uZWRfcnBjID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gVmVyc2lvbmVkX3JwYy5Db25uZWN0aW9uX3dpdGhfbWVudS50XG5cbiAgICBsZXQgcnBjX2Nvbm5lY3Rpb24gPSBWZXJzaW9uZWRfcnBjLkNvbm5lY3Rpb25fd2l0aF9tZW51LmNvbm5lY3Rpb25cbiAgICBsZXQgY2xvc2UgdCA9IFJwYy5Db25uZWN0aW9uLmNsb3NlIChycGNfY29ubmVjdGlvbiB0KVxuICAgIGxldCBpc19jbG9zZWQgdCA9IFJwYy5Db25uZWN0aW9uLmlzX2Nsb3NlZCAocnBjX2Nvbm5lY3Rpb24gdClcbiAgICBsZXQgY2xvc2VfZmluaXNoZWQgdCA9IFJwYy5Db25uZWN0aW9uLmNsb3NlX2ZpbmlzaGVkIChycGNfY29ubmVjdGlvbiB0KVxuICBlbmQpXG5cbm1vZHVsZSBScGMgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBScGMuQ29ubmVjdGlvbi50XG5cbiAgICBsZXQgY2xvc2UgdCA9IFJwYy5Db25uZWN0aW9uLmNsb3NlIHRcbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBScGMuQ29ubmVjdGlvbi5pc19jbG9zZWQgdFxuICAgIGxldCBjbG9zZV9maW5pc2hlZCB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2VfZmluaXNoZWQgdFxuICBlbmQpXG4iLCJtb2R1bGUgUnBjID0gUnBjXG5tb2R1bGUgVmVyc2lvbmVkX3JwYyA9IFZlcnNpb25lZF9ycGNcbm1vZHVsZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24gPSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25cbm1vZHVsZSBQaXBlX3RyYW5zcG9ydCA9IFBpcGVfdHJhbnNwb3J0XG5tb2R1bGUgUnBjX2Vycm9yID0gUnBjX2Vycm9yXG5tb2R1bGUgUnBjX3Jlc3VsdCA9IFJwY19yZXN1bHRcbm1vZHVsZSBScGNfc2hhcGVzID0gUnBjX3NoYXBlc1xubW9kdWxlIE9yX25vdF9hdXRob3JpemVkID0gT3Jfbm90X2F1dGhvcml6ZWRcblxubW9kdWxlIFJwY19tZXRhZGF0YSA6XG4gIG1vZHVsZSB0eXBlIG9mIFJwY19tZXRhZGF0YSB3aXRoIG1vZHVsZSBQcml2YXRlIDo9IFJwY19tZXRhZGF0YS5Qcml2YXRlID1cbiAgUnBjX21ldGFkYXRhXG5cbm1vZHVsZSBBc3luY19ycGNfa2VybmVsX3N0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgUnBjID0gUnBjLlN0YWJsZVxuZW5kXG5cbm1vZHVsZSBBc3luY19ycGNfa2VybmVsX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbm5lY3Rpb24gPSBDb25uZWN0aW9uXG4gIG1vZHVsZSBQcm90b2NvbCA9IFByb3RvY29sXG4gIG1vZHVsZSBUcmFuc3BvcnQgPSBUcmFuc3BvcnRcblxuICBsZXQgZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dCA9IENvbm5lY3Rpb24uZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dFxuZW5kXG4iLCJvcGVuIFN0cmluZ1xuXG5sZXQgc3RyaW5nX2FmdGVyIHMgbiA9IFN0cmluZy5zdWIgcyBuIChTdHJpbmcubGVuZ3RoIHMgLSBuKVxuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKDIgKiBsZW4pIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgJ1snIHwgJ10nIHwgJyonIHwgJy4nIHwgJ1xcXFwnIHwgJz8nIHwgJysnIHwgJ14nIHwgJyQnIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1xcXFwnO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICBkb25lO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cblxuKCogTm90IHRhaWwgcmVjdXJzaXZlIGZvciBcInBlcmZvcm1hbmNlXCIsIHBsZWFzZSBjaG9vc2UgbG93IHZhbHVlcyBmb3JcbiAgIFttYXhdLiBUaGUgaWRlYSBpcyB0aGF0IG1heCBpcyBhbHdheXMgc21hbGwgYmVjYXVzZSBpdCdzIGhhcmRcbiAgIGNvZGUgKilcbmxldCBzcGxpdF9jaGFyX2JvdW5kZWQgc3RyIH5vbiB+bWF4ID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2UgaWYgbWF4ID0gMSB0aGVuIFtzdHJdXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3Agb2Zmc2V0IHRva2VucyA9XG4gICAgICBpZiB0b2tlbnMgPSBtYXggLSAxXG4gICAgICB0aGVuIFtzdWIgc3RyIG9mZnNldCAobGVuZ3RoIHN0ciAtIG9mZnNldCldXG4gICAgICBlbHNlXG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4X2Zyb20gc3RyIG9mZnNldCBvbiBpblxuICAgICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICAgIFwiXCI6Oihsb29wIChvZmZzZXQgKyAxKSAodG9rZW5zICsgMSkpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHRva2VuID0gU3RyaW5nLnN1YiBzdHIgb2Zmc2V0IChpbmRleCAtIG9mZnNldCkgaW5cbiAgICAgICAgICAgIHRva2VuOjoobG9vcCAoaW5kZXggKyAxKSAodG9rZW5zICsgMSkpXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFtzdWIgc3RyIG9mZnNldCAobGVuZ3RoIHN0ciAtIG9mZnNldCldXG4gICAgaW4gbG9vcCAwIDBcblxubGV0IHNwbGl0X2NoYXJfdW5ib3VuZGVkIHN0ciB+b24gPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCBhY2Mgb2Zmc2V0ID1cbiAgICAgIHRyeSBiZWdpblxuICAgICAgICBsZXQgaW5kZXggPSByaW5kZXhfZnJvbSBzdHIgb2Zmc2V0IG9uIGluXG4gICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICBsb29wIChcIlwiOjphY2MpIChpbmRleCAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgdG9rZW4gPSBzdWIgc3RyIChpbmRleCArIDEpIChvZmZzZXQgLSBpbmRleCkgaW5cbiAgICAgICAgICBsb29wICh0b2tlbjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgZW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPiAoc3ViIHN0ciAwIChvZmZzZXQgKyAxKSk6OmFjY1xuICAgIGluIGxvb3AgW10gKGxlbmd0aCBzdHIgLSAxKVxuXG5sZXQgb2ZfY2hhciA9IFN0cmluZy5tYWtlIDFcblxubGV0IGZ1bGxfc3BsaXQgc3RyIH5vbiA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHNlcCA9IG9mX2NoYXIgb24gaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIG9mZnNldCA9XG4gICAgICB0cnkgYmVnaW5cbiAgICAgICAgbGV0IGluZGV4ID0gcmluZGV4X2Zyb20gc3RyIG9mZnNldCBvbiBpblxuICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgbG9vcCAoc2VwOjphY2MpIChpbmRleCAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgdG9rZW4gPSBzdWIgc3RyIChpbmRleCArIDEpIChvZmZzZXQgLSBpbmRleCkgaW5cbiAgICAgICAgICBsb29wIChzZXA6OnRva2VuOjphY2MpIChpbmRleCAtIDEpXG4gICAgICBlbmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICAgIHRoZW4gKHN1YiBzdHIgMCAob2Zmc2V0ICsgMSkpOjphY2NcbiAgICAgICAgZWxzZSBhY2NcbiAgICBpbiBsb29wIFtdIChsZW5ndGggc3RyIC0gMSlcblxuKCogY29weWluZyBjb3JlJ3MgY29udmVudGlvbiBmb3IgU3RyaW5nLnNwbGl0IGJ1dCB3aXRoIGFuIG9wdGlvbmFsIG1heFxuICAgYXJndW1lbnQgKilcbmxldCBzcGxpdCA/bWF4IHMgfm9uID1cbiAgbWF0Y2ggbWF4IHdpdGhcbiAgfCBOb25lIC0+IHNwbGl0X2NoYXJfdW5ib3VuZGVkIHMgfm9uXG4gIHwgU29tZSBtYXggLT4gICAgICAgICAgICAgICAgICgqIGFzc2VydCAobWF4IDwgMTAwKTsgKilcbiAgICBzcGxpdF9jaGFyX2JvdW5kZWQgcyB+b24gfm1heFxuXG5sZXQgcmluZGV4X2Zyb21fb24gcyB+b2Zmc2V0IH5vbiA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIG9uIHMuW2ldIHRoZW4gaVxuICAgIGVsc2UgbG9vcCAoaSAtIDEpXG4gIGluIGxvb3Agb2Zmc2V0XG5cbmxldCB0cmltX2xlZnRfc3ViIHMgfnBvcyB+bGVuIH5jaGFycyA9XG4gIGxldCBzdGFydF9wb3MgPVxuICAgIGxldCBmaW5hbCA9IHBvcyArIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBsYXN0X2NoYXIgaSA9XG4gICAgICBpZiBpID0gZmluYWwgdGhlbiBsYXN0X2NoYXJcbiAgICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIGNoYXJzIHMuW2ldIHRoZW4gbG9vcCAoaSArIDEpIChpICsgMSlcbiAgICAgIGVsc2UgbGFzdF9jaGFyXG4gICAgaW4gbG9vcCBwb3MgcG9zXG4gIGluXG4gIGxldCBuZXdfbGVuID0gbGVuIC0gKHN0YXJ0X3BvcyAtIHBvcykgaW5cbiAgU3RyaW5nLnN1YiBzIHN0YXJ0X3BvcyBuZXdfbGVuXG5cbmxldCBzcGxpdF90cmltX2xlZnQgc3RyIH5vbiB+dHJpbSA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHJlYyBsb29wIGFjYyBvZmZzZXQgPVxuICAgICAgdHJ5IGJlZ2luXG4gICAgICAgIGxldCBpbmRleCA9IHJpbmRleF9mcm9tX29uIHN0ciB+b2Zmc2V0IH5vbiBpblxuICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgbG9vcCAoXCJcIjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHRva2VuID0gdHJpbV9sZWZ0X3N1YiBzdHIgfnBvczooaW5kZXggKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgfmxlbjoob2Zmc2V0IC0gaW5kZXgpIH5jaGFyczp0cmltIGluXG4gICAgICAgICAgbG9vcCAodG9rZW46OmFjYykgKGluZGV4IC0gMSlcbiAgICAgIGVuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHRyaW1fbGVmdF9zdWIgc3RyIH5wb3M6MCB+bGVuOihvZmZzZXQgKyAxKSB+Y2hhcnM6dHJpbSk6OmFjY1xuICAgIGluIGxvb3AgW10gKGxlbmd0aCBzdHIgLSAxKVxuXG5leGNlcHRpb24gRm91bmRfaW50IG9mIGludFxuXG5sZXQgZmlyc3RfY2hhcl9uZSBzIGMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAwICYmIHMuWzBdIDw+IGNcblxubGV0IHRyaW1fbGVmdCBzID1cbiAgaWYgZmlyc3RfY2hhcl9uZSBzICcgJyB0aGVuIHNcbiAgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICB0cnlcbiAgICAgIGZvciBpPTAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBpZiBzLltpXSA8PiAnICcgdGhlbiByYWlzZSAoRm91bmRfaW50IGkpXG4gICAgICBkb25lO1xuICAgICAgXCJcIlxuICAgIHdpdGggRm91bmRfaW50IG5vbl9zcGFjZSAtPlxuICAgICAgc3ViIHMgbm9uX3NwYWNlIChsZW4gLSBub25fc3BhY2UpXG5cbmxldCBzdWJzdHJfZXEgPyhzdGFydD0wKSBzIH5wYXR0ZXJuID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcGF0dGVybiAtIDEgZG9cbiAgICAgIGlmIHMuW2kgKyBzdGFydF0gPD4gcGF0dGVybi5baV0gdGhlbiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggXyAtPiBmYWxzZVxuXG5sZXQgZmluZF9mcm9tID8oc3RhcnQ9MCkgc3RyIH5wYXR0ZXJuID1cbiAgdHJ5XG4gICAgZm9yIGkgPSBzdGFydCB0byAoU3RyaW5nLmxlbmd0aCBzdHIpIC0gKFN0cmluZy5sZW5ndGggcGF0dGVybikgZG9cbiAgICAgIGlmIHN1YnN0cl9lcSB+c3RhcnQ6aSBzdHIgfnBhdHRlcm4gdGhlblxuICAgICAgICByYWlzZSAoRm91bmRfaW50IGkpXG4gICAgZG9uZTtcbiAgICBOb25lXG4gIHdpdGhcbiAgfCBGb3VuZF9pbnQgaSAtPiBTb21lIGlcbiAgfCAgXyAtPiBOb25lXG5cbmxldCBmaW5kX21pbiBsIH5mID1cbiAgbGV0IHJlYyBsb29wIHggZnggPSBmdW5jdGlvblxuICAgIHwgW10gLT4gU29tZSAoeCwgZngpXG4gICAgfCB4Jzo6eHMgLT5cbiAgICAgIGxldCBmeCcgPSBmIHgnIGluXG4gICAgICBpZiBmeCcgPCBmeCB0aGVuIGxvb3AgeCcgZngnIHhzXG4gICAgICBlbHNlIGxvb3AgeCBmeCB4c1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeDo6eHMgLT4gbG9vcCB4IChmIHgpIHhzXG5cbmxldCByZXBsYWNlX2FsbCBzdHIgfnBhdHRlcm4gfndpdGhfID1cbiAgbGV0IChzbGVuLCBwbGVuKSA9IFN0cmluZy4obGVuZ3RoIHN0ciwgbGVuZ3RoIHBhdHRlcm4pIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIHNsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIG1hdGNoIGZpbmRfZnJvbSB+c3RhcnQ6aSBzdHIgfnBhdHRlcm4gd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChzbGVuIC0gaSk7XG4gICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gICAgfCBTb21lIGogLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoaiAtIGkpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHdpdGhfO1xuICAgICAgbG9vcCAoaiArIHBsZW4pXG4gIGluIGxvb3AgMFxuXG5leGNlcHRpb24gRm91bmRfcmVwbGFjZSBvZiBpbnQgKiBzdHJpbmcgKiBzdHJpbmdcblxubGV0IHJlcGxhY2VfYWxsX2Fzc29jIHN0ciB0YmwgPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIHNsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gc2xlbiB0aGVuIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgICBlbHNlXG4gICAgICBsZXQgciA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBmb3VuZCA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgIGxldCBlID1cbiAgICAgICAgICAgIGZpbmRfbWluIHRibCB+ZjooZnVuIChwYXR0ZXJuLCB3aXRoXykgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZmluZF9mcm9tIH5zdGFydDppIHN0ciB+cGF0dGVybiB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAgIC0+IG1heF9pbnRcbiAgICAgICAgICAgICAgfCBTb21lIGogd2hlbiBqID0gaSAtPiByYWlzZSAoRm91bmRfcmVwbGFjZSAoaiwgcGF0dGVybiwgd2l0aF8pKVxuICAgICAgICAgICAgICB8IFNvbWUgaiAtPiBmb3VuZCA6PSB0cnVlOyBqKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgKChwYXR0ZXJuLCB3aXRoXyksIGopIHdoZW4gIWZvdW5kIC0+IFNvbWUgKGosIHBhdHRlcm4sIHdpdGhfKVxuICAgICAgICAgIHwgU29tZSBfIC0+IE5vbmVcbiAgICAgICAgd2l0aCBGb3VuZF9yZXBsYWNlIChqLCBwYXR0ZXJuLCB3aXRoXykgLT4gU29tZSAoaiwgcGF0dGVybiwgd2l0aF8pXG4gICAgICBpblxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChzbGVuIC0gaSk7XG4gICAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgICAgIHwgU29tZSAoaiwgcGF0dGVybiwgd2l0aF8pIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoaiAtIGkpO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgd2l0aF87XG4gICAgICAgIGxvb3AgKGogKyBTdHJpbmcubGVuZ3RoIHBhdHRlcm4pXG4gIGluIGxvb3AgMFxuXG5sZXQgaXRlcmkgZiBsID1cbiAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IHg6OnhzIC0+IChmIGkgeCk7IGxvb3AgKHN1Y2MgaSkgeHNcbiAgaW4gbG9vcCAwIGxcblxubGV0IG9mX2xpc3QgeHMgPVxuICBsZXQgbCA9IExpc3QubGVuZ3RoIHhzIGluXG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIGwgaW5cbiAgaXRlcmkgKGZ1biBpIGMgLT4gQnl0ZXMuc2V0IHMgaSBjKSB4cztcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPVxuICAgIGlmIGkgPSAtMSB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIGxvb3AgKHMuW2ldIDo6IGFjYykgKHByZWQgaSlcbiAgaW4gbG9vcCBbXSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcblxubGV0IG9mX2FycmF5IGEgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgbGV0IGJ5dGVzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIEJ5dGVzLnNldCBieXRlcyBpIGEuKGkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnl0ZXNcblxubGV0IHRvX2FycmF5IHMgPSBBcnJheS5pbml0IChTdHJpbmcubGVuZ3RoIHMpIChTdHJpbmcuZ2V0IHMpXG5cbigqIHJpcHBlZCBvZmYgZnJvbSBvbmUgb2YgZGJ1ZW56bGkncyBsaWJzICopXG5sZXQgY3V0IHMgfm9uID1cbiAgbGV0IHNlcF9tYXggPSBsZW5ndGggb24gLSAxIGluXG4gIGlmIHNlcF9tYXggPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmdleHQuY3V0OiBlbXB0eSBzZXBhcmF0b3JcIiBlbHNlXG4gICAgbGV0IHNfbWF4ID0gbGVuZ3RoIHMgLSAxIGluXG4gICAgaWYgc19tYXggPCAwIHRoZW4gTm9uZSBlbHNlXG4gICAgICBsZXQgayA9IHJlZiAwIGluXG4gICAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgICAoKiBXZSBydW4gZnJvbSB0aGUgc3RhcnQgb2YgW3NdIHRvIGVuZCB3aXRoIFtpXSB0cnlpbmcgdG8gbWF0Y2ggdGhlXG4gICAgICAgICBmaXJzdCBjaGFyYWN0ZXIgb2YgW29uXSBpbiBbc10uIElmIHRoaXMgbWF0Y2hlcywgd2UgdmVyaWZ5IHRoYXRcbiAgICAgICAgIHRoZSB3aG9sZSBbb25dIGlzIG1hdGNoZWQgdXNpbmcgW2tdLiBJZiBpdCBkb2Vzbid0IG1hdGNoIHdlXG4gICAgICAgICBjb250aW51ZSB0byBsb29rIGZvciBbb25dIHdpdGggW2ldLiBJZiBpdCBtYXRjaGVzIHdlIGV4aXQgdGhlXG4gICAgICAgICBsb29wIGFuZCBleHRyYWN0IGEgc3Vic3RyaW5nIGZyb20gdGhlIHN0YXJ0IG9mIFtzXSB0byB0aGVcbiAgICAgICAgIHBvc2l0aW9uIGJlZm9yZSB0aGUgW29uXSB3ZSBmb3VuZCBhbmQgYW5vdGhlciBmcm9tIHRoZSBwb3NpdGlvblxuICAgICAgICAgYWZ0ZXIgdGhlIFtvbl0gd2UgZm91bmQgdG8gZW5kIG9mIHN0cmluZy4gSWYgW2ldIGlzIHN1Y2ggdGhhdCBub1xuICAgICAgICAgc2VwYXJhdG9yIGNhbiBiZSBmb3VuZCB3ZSBleGl0IHRoZSBsb29wIGFuZCByZXR1cm4gdGhlIG5vIG1hdGNoXG4gICAgICAgICBjYXNlLiAqKVxuICAgICAgdHJ5XG4gICAgICAgIHdoaWxlICghaSArIHNlcF9tYXggPD0gc19tYXgpIGRvXG4gICAgICAgICAgKCogQ2hlY2sgcmVtYWluaW5nIFtvbl0gY2hhcnMgbWF0Y2gsIGFjY2VzcyB0byB1bnNhZmUgcyAoIWkgKyAhaykgaXNcbiAgICAgICAgICAgICBndWFyYW50ZWVkIGJ5IGxvb3AgaW52YXJpYW50LiAqKVxuICAgICAgICAgIGlmIHVuc2FmZV9nZXQgcyAhaSA8PiB1bnNhZmVfZ2V0IG9uIDAgdGhlbiBpbmNyIGkgZWxzZSBiZWdpblxuICAgICAgICAgICAgayA6PSAxO1xuICAgICAgICAgICAgd2hpbGUgKCFrIDw9IHNlcF9tYXggJiYgdW5zYWZlX2dldCBzICghaSArICFrKSA9IHVuc2FmZV9nZXQgb24gIWspXG4gICAgICAgICAgICBkbyBpbmNyIGsgZG9uZTtcbiAgICAgICAgICAgIGlmICFrIDw9IHNlcF9tYXggdGhlbiAoKiBubyBtYXRjaCAqKSBpbmNyIGkgZWxzZSByYWlzZSBFeGl0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGRvbmU7XG4gICAgICAgIE5vbmUgKCogbm8gbWF0Y2ggaW4gdGhlIHdob2xlIHN0cmluZy4gKilcbiAgICAgIHdpdGhcbiAgICAgIHwgRXhpdCAtPiAoKiBpIGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlcGFyYXRvciAqKVxuICAgICAgICBsZXQgbGVmdF9lbmQgPSAhaSAtIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X3N0YXJ0ID0gIWkgKyBzZXBfbWF4ICsgMSBpblxuICAgICAgICBTb21lIChzdWIgcyAwIChsZWZ0X2VuZCArIDEpLFxuICAgICAgICAgICAgICBzdWIgcyByaWdodF9zdGFydCAoc19tYXggLSByaWdodF9zdGFydCArIDEpKVxuXG5sZXQgcmN1dCBzIH5vbiA9XG4gIGxldCBzZXBfbWF4ID0gbGVuZ3RoIG9uIC0gMSBpblxuICBpZiBzZXBfbWF4IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nZXh0LnJjdXQ6IGVtcHR5IHNlcGFyYXRvclwiIGVsc2VcbiAgICBsZXQgc19tYXggPSBsZW5ndGggcyAtIDEgaW5cbiAgICBpZiBzX21heCA8IDAgdGhlbiBOb25lIGVsc2VcbiAgICAgIGxldCBrID0gcmVmIDAgaW5cbiAgICAgIGxldCBpID0gcmVmIHNfbWF4IGluXG4gICAgICAoKiBXZSBydW4gZnJvbSB0aGUgZW5kIG9mIFtzXSB0byB0aGUgYmVnaW5uaW5nIHdpdGggW2ldIHRyeWluZyB0b1xuICAgICAgICAgbWF0Y2ggdGhlIGxhc3QgY2hhcmFjdGVyIG9mIFtvbl0gaW4gW3NdLiBJZiB0aGlzIG1hdGNoZXMsIHdlXG4gICAgICAgICB2ZXJpZnkgdGhhdCB0aGUgd2hvbGUgW29uXSBpcyBtYXRjaGVkIHVzaW5nIFtrXSAod2UgZG8gdGhhdFxuICAgICAgICAgYmFja3dhcmRzKS4gIElmIGl0IGRvZXNuJ3QgbWF0Y2ggd2UgY29udGludWUgdG8gbG9vayBmb3IgW29uXVxuICAgICAgICAgd2l0aCBbaV0uICBJZiBpdCBtYXRjaGVzIHdlIGV4aXQgdGhlIGxvb3AgYW5kIGV4dHJhY3QgYVxuICAgICAgICAgc3Vic3RyaW5nIGZyb20gdGhlIHN0YXJ0IG9mIFtzXSB0byB0aGUgcG9zaXRpb24gYmVmb3JlIHRoZVxuICAgICAgICAgW29uXSB3ZSBmb3VuZCBhbmQgYW5vdGhlciBmcm9tIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgW29uXSB3ZVxuICAgICAgICAgZm91bmQgdG8gZW5kIG9mIHN0cmluZy4gIElmIFtpXSBpcyBzdWNoIHRoYXQgbm8gc2VwYXJhdG9yIGNhblxuICAgICAgICAgYmUgZm91bmQgd2UgZXhpdCB0aGUgbG9vcCBhbmQgcmV0dXJuIHRoZSBubyBtYXRjaCBjYXNlLiAqKVxuICAgICAgdHJ5XG4gICAgICAgIHdoaWxlICghaSA+PSBzZXBfbWF4KSBkb1xuICAgICAgICAgIGlmIHVuc2FmZV9nZXQgcyAhaSA8PiB1bnNhZmVfZ2V0IG9uIHNlcF9tYXggdGhlbiBkZWNyIGkgZWxzZSBiZWdpblxuICAgICAgICAgICAgKCogQ2hlY2sgcmVtYWluaW5nIFtvbl0gY2hhcnMgbWF0Y2gsIGFjY2VzcyB0byB1bnNhZmVfZ2V0XG4gICAgICAgICAgICAgICBzIChzZXBfc3RhcnQgKyAhaykgaXMgZ3VhcmFudGVlZCBieSBsb29wIGludmFyaWFudC4gKilcbiAgICAgICAgICAgIGxldCBzZXBfc3RhcnQgPSAhaSAtIHNlcF9tYXggaW5cbiAgICAgICAgICAgIGsgOj0gc2VwX21heCAtIDE7XG4gICAgICAgICAgICB3aGlsZSAoIWsgPj0gMCAmJiB1bnNhZmVfZ2V0IHMgKHNlcF9zdGFydCArICFrKSA9IHVuc2FmZV9nZXQgb24gIWspXG4gICAgICAgICAgICBkbyBkZWNyIGsgZG9uZTtcbiAgICAgICAgICAgIGlmICFrID49IDAgdGhlbiAoKiBubyBtYXRjaCAqKSBkZWNyIGkgZWxzZSByYWlzZSBFeGl0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGRvbmU7XG4gICAgICAgIE5vbmUgKCogbm8gbWF0Y2ggaW4gdGhlIHdob2xlIHN0cmluZy4gKilcbiAgICAgIHdpdGhcbiAgICAgIHwgRXhpdCAtPiAoKiBpIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHNlcGFyYXRvciAqKVxuICAgICAgICBsZXQgbGVmdF9lbmQgPSAhaSAtIHNlcF9tYXggLSAxIGluXG4gICAgICAgIGxldCByaWdodF9zdGFydCA9ICFpICsgMSBpblxuICAgICAgICBTb21lIChzdWIgcyAwIChsZWZ0X2VuZCArIDEpLFxuICAgICAgICAgICAgICBzdWIgcyByaWdodF9zdGFydCAoc19tYXggLSByaWdodF9zdGFydCArIDEpKVxuXG5sZXQgY2hvcF9wcmVmaXggcyB+cHJlZml4ID1cbiAgbGV0IHByZWZpeF9sID0gU3RyaW5nLmxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHN0cmluZ19sID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIHByZWZpeF9sID4gc3RyaW5nX2wgdGhlbiBOb25lXG4gIGVsc2VcbiAgICB0cnlcbiAgICAgIGZvciBpID0gMCB0byBwcmVmaXhfbCAtIDEgZG9cbiAgICAgICAgaWYgcy5baV0gPD4gcHJlZml4LltpXSB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICBkb25lO1xuICAgICAgU29tZSAoU3RyaW5nLnN1YiBzIHByZWZpeF9sIChzdHJpbmdfbCAtIHByZWZpeF9sKSlcbiAgICB3aXRoIF8gLT4gTm9uZVxuXG5sZXQgZHJvcCBzIG4gPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBuID49IGxcbiAgdGhlbiBcIlwiXG4gIGVsc2UgU3RyaW5nLnN1YiBzIG4gKGwgLSBuKVxuXG5sZXQgdGFrZSBzIG4gPVxuICBpZiBuID49IFN0cmluZy5sZW5ndGggc1xuICB0aGVuIHNcbiAgZWxzZSBTdHJpbmcuc3ViIHMgMCBuXG4iLCJ0eXBlIGJpZ3N0cmluZyA9XG4gIChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbnR5cGUgdCA9IGJpZ3N0cmluZ1xuXG5sZXQgY3JlYXRlIHNpemUgPSBCaWdhcnJheS4oQXJyYXkxLmNyZWF0ZSBjaGFyIGNfbGF5b3V0IHNpemUpXG5sZXQgZW1wdHkgICAgICAgPSBjcmVhdGUgMFxuXG5tb2R1bGUgQkExID0gQmlnYXJyYXkuQXJyYXkxXG5cbmxldCBsZW5ndGggdCA9IEJBMS5kaW0gdFxuXG5leHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV9yZWZfMVwiXG5leHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGNoYXIgICAgICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0ICAgICAgICAgICAgOiB0ICAgICAgIC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X3RvX2JpZ3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3RvX2J5dGVzICAgOiB0ICAgICAgIC0+IHNyY19vZmY6aW50IC0+IEJ5dGVzLnQgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzXCIgICAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zyb21fYnl0ZXMgOiBCeXRlcy50IC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcIiAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIDogc3RyaW5nIC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcIiAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXAgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gaW50ID1cbiAgXCJiaWdzdHJpbmdhZl9tZW1jbXBfYmlnc3RyaW5nXCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcF9zdHJpbmcgOiB0IC0+IGludCAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiBpbnQgPVxuICBcImJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY2hyIDogdCAtPiBpbnQgLT4gY2hhciAtPiBpbnQgLT4gaW50ID1cbiAgXCJiaWdzdHJpbmdhZl9tZW1jaHJcIiBbQEBub2FsbG9jXVxuXG5sZXQgc3ViIHQgfm9mZiB+bGVuID1cbiAgQkExLnN1YiB0IG9mZiBsZW5cblxubGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfYm91bmRzIG9wIGJ1ZmZlcl9sZW4gb2ZmIGxlbiA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIkJpZ3N0cmluZ2FmLiVzIGludmFsaWQgcmFuZ2U6IHsgYnVmZmVyX2xlbjogJWQsIG9mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3AgYnVmZmVyX2xlbiBvZmYgbGVuXG4gIGluXG4gIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IG1lc3NhZ2UpXG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9ib3VuZHNfYmxpdCBvcCBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbiA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIkJpZ3N0cmluZ2FmLiVzIGludmFsaWQgcmFuZ2U6IHsgc3JjX2xlbjogJWQsIHNyY19vZmY6ICVkLCBkc3RfbGVuOiAlZCwgZHN0X29mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3Agc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW5cbiAgaW5cbiAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgbWVzc2FnZSlcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2JvdW5kc19tZW1jbXAgb3AgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiQmlnc3RyaW5nYWYuJXMgaW52YWxpZCByYW5nZTogeyBidWYxX2xlbjogJWQsIGJ1ZjFfb2ZmOiAlZCwgYnVmMl9sZW46ICVkLCBidWYyX29mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3AgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuXG4gIGluXG4gIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IG1lc3NhZ2UpXG47O1xuXG4oKiBBIG5vdGUgb24gYm91bmRzIGNoZWNraW5nLlxuICpcbiAqIFRoZSBjb2RlIHNob3VsZCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIGJsaXQgZG9lc24ndFxuICogcnVuIG9mZiB0aGUgZW5kIG9mIHRoZSBpbnB1dCBidWZmZXI6XG4gKlxuICogICB7W29mZiArIGxlbiA8PSBidWZmZXJfbGVuXX1cbiAqXG4gKiBIb3dldmVyLCB0aGlzIG1heSBsZWFkIHRvIGFuIGludGVnZXIgb3ZlcmZsb3cgZm9yIGxhcmdlIHZhbHVlcyBvZiBbb2ZmXSxcbiAqIGUuZy4sIFttYXhfaW50XSwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgY29tcGFyaXNvbiB0byByZXR1cm4gW3RydWVdIHdoZW4gaXRcbiAqIHNob3VsZCByZWFsbHkgcmV0dXJuIFtmYWxzZV0uXG4gKlxuICogQW4gZXF1aXZhbGVudCBjb21wYXJpc29uIHRoYXQgZG9lcyBub3QgcnVuIGludG8gdGhpcyBpbnRlZ2VyIG92ZXJmbG93XG4gKiBwcm9ibGVtIGlzOlxuICpcbiAqICAge1tidWZmZXJfbGVuIC0gb2ZmID0+IGxlbl19XG4gKlxuICogVGhpcyBpcyBjaGVja2luZyB0aGF0IHRoZSBpbnB1dCBidWZmZXIsIGxlc3MgdGhlIG9mZnNldCwgaXMgc3VmZmljaWVudGx5XG4gKiBsb25nIHRvIHBlcmZvcm0gdGhlIGJsaXQuIFNpbmNlIHRoZSBleHByZXNzaW9uIGlzIHN1YnRyYWN0aW5nIFtvZmZdIHJhdGhlclxuICogdGhhbiBhZGRpbmcgaXQsIGl0IGRvZXNuJ3Qgc3VmZmVyIGZyb20gdGhlIG92ZXJmbG93IHRoYXQgdGhlIHByZXZpb3VzXG4gKiBpbmVxdWFsaXR5IGRpZC4gQXMgbG9uZyBhcyB0aGVyZSBpcyBhIGNoZWNrIHRvIGVuc3VyZSB0aGF0IFtvZmZdIGlzIG5vdFxuICogbmVnYXRpdmUsIGl0IHdvbid0IHVuZGVyZmxvdyBlaXRoZXIuICopXG5cbmxldCBjb3B5IHQgfm9mZiB+bGVuID1cbiAgbGV0IGJ1ZmZlcl9sZW4gPSBsZW5ndGggdCBpblxuICBpZiBsZW4gPCAwIHx8IG9mZiA8IDAgfHwgYnVmZmVyX2xlbiAtIG9mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwiY29weVwiIGJ1ZmZlcl9sZW4gb2ZmIGxlbjtcbiAgbGV0IGRzdCA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXQgdCB+c3JjX29mZjpvZmYgZHN0IH5kc3Rfb2ZmOjAgfmxlbjtcbiAgZHN0XG47O1xuXG5sZXQgc3Vic3RyaW5nIHQgfm9mZiB+bGVuID1cbiAgbGV0IGJ1ZmZlcl9sZW4gPSBsZW5ndGggdCBpblxuICBpZiBsZW4gPCAwIHx8IG9mZiA8IDAgfHwgYnVmZmVyX2xlbiAtIG9mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwic3Vic3RyaW5nXCIgYnVmZmVyX2xlbiBvZmYgbGVuO1xuICBsZXQgYiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgdCB+c3JjX29mZjpvZmYgYiB+ZHN0X29mZjowIH5sZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYlxuOztcblxubGV0IHRvX3N0cmluZyB0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIGxldCBiID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF90b19ieXRlcyB0IH5zcmNfb2ZmOjAgYiB+ZHN0X29mZjowIH5sZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYlxuOztcblxubGV0IG9mX3N0cmluZyB+b2ZmIH5sZW4gcyA9XG4gIGxldCBidWZmZXJfbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIGxlbiA8IDAgfHwgb2ZmIDwgMCB8fCBidWZmZXJfbGVuIC0gb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJvZl9zdHJpbmdcIiBidWZmZXJfbGVuIG9mZiBsZW47XG4gIGxldCBiID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzIH5zcmNfb2ZmOm9mZiBiIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgYlxuOztcblxubGV0IGJsaXQgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBsZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gbGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgc3JjX29mZiA8IDAgfHwgc3JjX2xlbiAtIHNyY19vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdFwiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0XCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0IHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlblxuOztcblxubGV0IGJsaXRfZnJvbV9zdHJpbmcgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBTdHJpbmcubGVuZ3RoIHNyYyBpblxuICBsZXQgZHN0X2xlbiA9IGxlbmd0aCBkc3QgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fc3RyaW5nXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9zdHJpbmdcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX3N0cmluZ1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICB1bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBibGl0X2Zyb21fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBCeXRlcy5sZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gbGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0X2Zyb21fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgYmxpdF90b19ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBCeXRlcy5sZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF90b19ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X3RvX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIGRzdF9vZmYgPCAwIHx8IGRzdF9sZW4gLSBkc3Rfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfdG9fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgbWVtY21wIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW4gPVxuICBsZXQgYnVmMV9sZW4gPSBsZW5ndGggYnVmMSBpblxuICBsZXQgYnVmMl9sZW4gPSBsZW5ndGggYnVmMiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYxX29mZiA8IDAgfHwgYnVmMV9sZW4gLSBidWYxX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcFwiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMl9vZmYgPCAwIHx8IGJ1ZjJfbGVuIC0gYnVmMl9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIHVuc2FmZV9tZW1jbXAgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlblxuOztcblxubGV0IG1lbWNtcF9zdHJpbmcgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlbiA9XG4gIGxldCBidWYxX2xlbiA9IGxlbmd0aCBidWYxIGluXG4gIGxldCBidWYyX2xlbiA9IFN0cmluZy5sZW5ndGggYnVmMiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wX3N0cmluZ1wiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMV9vZmYgPCAwIHx8IGJ1ZjFfbGVuIC0gYnVmMV9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBfc3RyaW5nXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYyX29mZiA8IDAgfHwgYnVmMl9sZW4gLSBidWYyX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcF9zdHJpbmdcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIHVuc2FmZV9tZW1jbXBfc3RyaW5nIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW5cbjs7XG5cbmxldCBtZW1jaHIgYnVmIGJ1Zl9vZmYgY2hyIGxlbiA9XG4gIGxldCBidWZfbGVuID0gbGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJtZW1jaHJcIiBidWZfbGVuIGJ1Zl9vZmYgbGVuO1xuICBpZiBidWZfb2ZmIDwgMCB8fCBidWZfbGVuIC0gYnVmX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwibWVtY2hyXCIgYnVmX2xlbiBidWZfb2ZmIGxlbjtcbiAgdW5zYWZlX21lbWNociBidWYgYnVmX29mZiBjaHIgbGVuXG5cbigqIFNhZmUgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludCAgIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQxNlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NFwiXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX2dldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19nZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0XCJcblxubW9kdWxlIFN3YXAgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50MzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50NjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfc2V0XzE2IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgYnMgb2ZmIChic3dhcDE2IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3NldF8zMiBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfc2V0XzMyIGJzIG9mZiAoYnN3YXBfaW50MzIgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfc2V0XzY0IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgYnMgb2ZmIChic3dhcF9pbnQ2NCBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19nZXRfMTYgYnMgb2ZmID1cbiAgICBic3dhcDE2IChjYW1sX2JpZ3N0cmluZ19nZXRfMTYgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19nZXRfMzIgYnMgb2ZmID1cbiAgICBic3dhcF9pbnQzMiAoY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IGJzIG9mZiA9XG4gICAgYnN3YXBfaW50NjQgKGNhbWxfYmlnc3RyaW5nX2dldF82NCBicyBvZmYpXG5cbiAgbGV0IGdldF9pbnQxNl9zaWduX2V4dGVuZGVkIHggb2ZmID1cbiAgICAoKGNhbWxfYmlnc3RyaW5nX2dldF8xNiB4IG9mZikgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5lbmRcblxubGV0IHNldF9pbnQxNl9sZSwgc2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8xNiwgY2FtbF9iaWdzdHJpbmdfc2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfc2V0XzE2ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzE2XG5cbmxldCBzZXRfaW50MzJfbGUsIHNldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3NldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3NldF8zMiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8zMlxuXG5sZXQgc2V0X2ludDY0X2xlLCBzZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzY0LCBjYW1sX2JpZ3N0cmluZ19zZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfNjRcblxubGV0IGdldF9pbnQxNl9sZSwgZ2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8xNiwgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzE2XG5cbmxldCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9ub3N3YXAgeCBvZmYgPVxuICAoKGNhbWxfYmlnc3RyaW5nX2dldF8xNiAgICAgIHggb2ZmKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX2xlLCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9iZSAgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQgICwgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwXG4gIGVsc2UgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwLCBTd2FwLmdldF9pbnQxNl9zaWduX2V4dGVuZGVkXG5cbmxldCBnZXRfaW50MzJfbGUsIGdldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfMzIsIGNhbWxfYmlnc3RyaW5nX2dldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX2dldF8zMiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8zMlxuXG5sZXQgZ2V0X2ludDY0X2xlLCBnZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzY0LCBjYW1sX2JpZ3N0cmluZ19nZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19nZXRfNjQgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfNjRcblxuKCogVW5zYWZlIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2dVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NHVcIlxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2dVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0dVwiXG5cbm1vZHVsZSBVU3dhcCA9IHN0cnVjdFxuICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuICBleHRlcm5hbCBic3dhcF9pbnQzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuICBleHRlcm5hbCBic3dhcF9pbnQ2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IGJzIG9mZiAoYnN3YXAxNiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIGJzIG9mZiAoYnN3YXBfaW50MzIgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCBicyBvZmYgKGJzd2FwX2ludDY0IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgYnMgb2ZmID1cbiAgICBic3dhcDE2IChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiBicyBvZmYgPVxuICAgIGJzd2FwX2ludDMyIChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCBicyBvZmYgPVxuICAgIGJzd2FwX2ludDY0IChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0IGJzIG9mZilcbmVuZFxuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9sZSwgdW5zYWZlX3NldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTZcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfbGUsIHVuc2FmZV9zZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyXG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X2xlLCB1bnNhZmVfc2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NFxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9sZSwgdW5zYWZlX2dldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTZcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSB4IG9mZiA9XG4gICgodW5zYWZlX2dldF9pbnQxNl9sZSB4IG9mZikgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfYmUgeCBvZmYgPVxuICAoKHVuc2FmZV9nZXRfaW50MTZfYmUgeCBvZmYgKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfbGUsIHVuc2FmZV9nZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyXG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2xlLCB1bnNhZmVfZ2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NFxuIiwidHlwZSAnYSBzdGF0ZSA9XG4gIHwgUGFydGlhbCBvZiAnYSBwYXJ0aWFsXG4gIHwgRG9uZSAgICBvZiBpbnQgKiAnYVxuICB8IEZhaWwgICAgb2YgaW50ICogc3RyaW5nIGxpc3QgKiBzdHJpbmdcblxuYW5kICdhIHBhcnRpYWwgPVxuICB7IGNvbW1pdHRlZCA6IGludFxuICA7IGNvbnRpbnVlICA6IEJpZ3N0cmluZ2FmLnQgLT4gb2ZmOmludCAtPiBsZW46aW50IC0+IE1vcmUudCAtPiAnYSBzdGF0ZSB9XG5cblxubGV0IHN0YXRlX3RvX29wdGlvbiB4ID0gbWF0Y2ggeCB3aXRoXG4gIHwgRG9uZShfLCB2KSAtPiBTb21lIHZcbiAgfCBGYWlsIF8gICAgIC0+IE5vbmVcbiAgfCBQYXJ0aWFsIF8gIC0+IE5vbmVcblxubGV0IGZhaWxfdG9fc3RyaW5nIG1hcmtzIGVyciA9XG4gIFN0cmluZy5jb25jYXQgXCIgPiBcIiBtYXJrcyBeIFwiOiBcIiBeIGVyclxuXG5sZXQgc3RhdGVfdG9fcmVzdWx0IHggPSBtYXRjaCB4IHdpdGhcbiAgfCBEb25lKF8sIHYpICAgICAgICAgIC0+IE9rIHZcbiAgfCBQYXJ0aWFsIF8gICAgICAgICAgIC0+IEVycm9yIFwiaW5jb21wbGV0ZSBpbnB1dFwiXG4gIHwgRmFpbChfLCBtYXJrcywgZXJyKSAtPiBFcnJvciAoZmFpbF90b19zdHJpbmcgbWFya3MgZXJyKVxuIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ29weXJpZ2h0IChjKSAyMDE3IEluaGFiaXRlZCBUeXBlIExMQy5cblxuICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgICBhcmUgbWV0OlxuXG4gICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9yc1xuICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZVxuICAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NcbiAgICBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICAgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAgICBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcbiAgICBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAgICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTilcbiAgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsXG4gICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOXG4gICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFXG4gICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG50eXBlIHQgPVxuICB7IG11dGFibGUgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA6IGludFxuICA7IGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgICAgICAgICA6IGludFxuICA7IG9mZiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludFxuICA7IGxlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludFxuICA7IGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICA6IEJpZ3N0cmluZ2FmLnRcbiAgfVxuXG5sZXQgY3JlYXRlIGJ1ZmZlciB+b2ZmIH5sZW4gfmNvbW1pdHRlZF9ieXRlcyA9XG4gIHsgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA9IGNvbW1pdHRlZF9ieXRlc1xuICA7IGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgPSBjb21taXR0ZWRfYnl0ZXNcbiAgOyBvZmZcbiAgOyBsZW5cbiAgOyBidWZmZXIgfVxuXG5sZXQgbGVuZ3RoICAgICAgICAgICAgICAgICB0ID0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzICsgdC5sZW5cbmxldCBjbGllbnRfY29tbWl0dGVkX2J5dGVzIHQgPSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXNcbmxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgPSB0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXNcblxubGV0IGNvbW1pdHRlZF9ieXRlc19kaXNjcmVwYW5jeSB0ID0gdC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIC0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzXG5sZXQgYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgIHQgPSBjb21taXR0ZWRfYnl0ZXNfZGlzY3JlcGFuY3kgdFxuXG5sZXQgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHQgPSB0LmxlbiAtIGJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IHRcblxubGV0IGludmFyaWFudCB0ID1cbiAgYXNzZXJ0IChwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgKyBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdCA9IGxlbmd0aCB0KTtcbiAgYXNzZXJ0IChwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgLSBjbGllbnRfY29tbWl0dGVkX2J5dGVzICAgdCA9IGJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IHQpO1xuOztcblxubGV0IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgPVxuICB0Lm9mZiArIHBvcyAtIHQuY2xpZW50X2NvbW1pdHRlZF9ieXRlc1xuXG5sZXQgYXBwbHkgdCBwb3MgbGVuIH5mID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgZiB0LmJ1ZmZlciB+b2ZmIH5sZW5cblxubGV0IHVuc2FmZV9nZXRfY2hhciB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2xlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9sZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfbGUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2xlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9sZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfbGUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2JlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9iZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfYmUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2JlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9iZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfYmUgdC5idWZmZXIgb2ZmXG5cbmxldCBjb3VudF93aGlsZSB0IHBvcyB+ZiA9XG4gIGxldCBidWZmZXIgPSB0LmJ1ZmZlciBpblxuICBsZXQgb2ZmICAgID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBsZXQgaSAgICAgID0gcmVmIG9mZiBpblxuICBsZXQgbGltaXQgID0gdC5vZmYgKyB0LmxlbiBpblxuICB3aGlsZSAhaSA8IGxpbWl0ICYmIGYgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgYnVmZmVyICFpKSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICAhaSAtIG9mZlxuOztcblxubGV0IGNvbW1pdCB0IHBvcyA9XG4gIHQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA8LSBwb3Ncbjs7XG4iLCJtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFBhcnRpYWwgb2YgJ2EgcGFydGlhbFxuICAgIHwgTGF6eSAgICBvZiAnYSB0IExhenkudFxuICAgIHwgRG9uZSAgICBvZiBpbnQgKiAnYVxuICAgIHwgRmFpbCAgICBvZiBpbnQgKiBzdHJpbmcgbGlzdCAqIHN0cmluZ1xuXG4gIGFuZCAnYSBwYXJ0aWFsID1cbiAgICB7IGNvbW1pdHRlZCA6IGludFxuICAgIDsgY29udGludWUgIDogQmlnc3RyaW5nYWYudCAtPiBvZmY6aW50IC0+IGxlbjppbnQgLT4gTW9yZS50IC0+ICdhIHQgfVxuXG5lbmRcbnR5cGUgJ2Egd2l0aF9zdGF0ZSA9IElucHV0LnQgLT4gIGludCAtPiBNb3JlLnQgLT4gJ2FcblxudHlwZSAnYSBmYWlsdXJlID0gKHN0cmluZyBsaXN0IC0+IHN0cmluZyAtPiAnYSBTdGF0ZS50KSB3aXRoX3N0YXRlXG50eXBlICgnYSwgJ3IpIHN1Y2Nlc3MgPSAoJ2EgLT4gJ3IgU3RhdGUudCkgd2l0aF9zdGF0ZVxuXG50eXBlICdhIHQgPVxuICB7IHJ1biA6ICdyLiAoJ3IgZmFpbHVyZSAtPiAoJ2EsICdyKSBzdWNjZXNzIC0+ICdyIFN0YXRlLnQpIHdpdGhfc3RhdGUgfVxuXG5sZXQgZmFpbF9rICAgIGlucHV0IHBvcyBfIG1hcmtzIG1zZyA9XG4gIFN0YXRlLkZhaWwocG9zIC0gSW5wdXQuY2xpZW50X2NvbW1pdHRlZF9ieXRlcyBpbnB1dCwgbWFya3MsIG1zZylcbmxldCBzdWNjZWVkX2sgaW5wdXQgcG9zIF8gICAgICAgdiAgID1cbiAgU3RhdGUuRG9uZShwb3MgLSBJbnB1dC5jbGllbnRfY29tbWl0dGVkX2J5dGVzIGlucHV0LCB2KVxuXG5sZXQgcmVjIHRvX2V4cG9ydGVkX3N0YXRlID0gZnVuY3Rpb25cbiAgfCBTdGF0ZS5QYXJ0aWFsIHtjb21taXR0ZWQ7Y29udGludWV9IC0+XG4gICAgIEV4cG9ydGVkX3N0YXRlLlBhcnRpYWxcbiAgICAgICB7IGNvbW1pdHRlZFxuICAgICAgIDsgY29udGludWUgPVxuICAgICAgICAgICBmdW4gYnMgfm9mZiB+bGVuIG1vcmUgLT5cbiAgICAgICAgICAgdG9fZXhwb3J0ZWRfc3RhdGUgKGNvbnRpbnVlIGJzIH5vZmYgfmxlbiBtb3JlKX1cbiAgfCBTdGF0ZS5Eb25lIChpLHgpIC0+IEV4cG9ydGVkX3N0YXRlLkRvbmUgKGkseClcbiAgfCBTdGF0ZS5GYWlsIChpLCBzbCwgcykgLT4gRXhwb3J0ZWRfc3RhdGUuRmFpbCAoaSwgc2wsIHMpXG4gIHwgU3RhdGUuTGF6eSB4IC0+IHRvX2V4cG9ydGVkX3N0YXRlIChMYXp5LmZvcmNlIHgpXG5cbmxldCBwYXJzZSBwID1cbiAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIEJpZ3N0cmluZ2FmLmVtcHR5IH5jb21taXR0ZWRfYnl0ZXM6MCB+b2ZmOjAgfmxlbjowIGluXG4gIHRvX2V4cG9ydGVkX3N0YXRlIChwLnJ1biBpbnB1dCAwIEluY29tcGxldGUgZmFpbF9rIHN1Y2NlZWRfaylcblxubGV0IHBhcnNlX2JpZ3N0cmluZyBwIGlucHV0ID1cbiAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIGlucHV0IH5jb21taXR0ZWRfYnl0ZXM6MCB+b2ZmOjAgfmxlbjooQmlnc3RyaW5nYWYubGVuZ3RoIGlucHV0KSBpblxuICBFeHBvcnRlZF9zdGF0ZS5zdGF0ZV90b19yZXN1bHQgKHRvX2V4cG9ydGVkX3N0YXRlIChwLnJ1biBpbnB1dCAwIENvbXBsZXRlIGZhaWxfayBzdWNjZWVkX2spKVxuXG5tb2R1bGUgTW9uYWQgPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiB2ID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlIHZcbiAgICB9XG5cbiAgbGV0IGZhaWwgbXNnID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIF9zdWNjIC0+XG4gICAgICBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIG1zZ1xuICAgIH1cblxuICBsZXQgKD4+PSkgcCBmID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyB2ID0gKGYgdikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICAgIH1cblxuICBsZXQgKD4+fCkgcCBmID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyB2ID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyAoZiB2KSBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICAgIH1cblxuICBsZXQgKDwkPikgZiBtID1cbiAgICBtID4+fCBmXG5cbiAgbGV0ICg8Kj4pIGYgbSA9XG4gICAgKCogZiA+Pj0gZnVuIGYgLT4gbSA+PnwgZiAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MwIGlucHV0MCBwb3MwIG1vcmUwIGYgPVxuICAgICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgbSA9IHN1Y2MgaW5wdXQxIHBvczEgbW9yZTEgKGYgbSkgaW5cbiAgICAgICAgbS5ydW4gaW5wdXQwIHBvczAgbW9yZTAgZmFpbCBzdWNjMVxuICAgICAgaW5cbiAgICAgIGYucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzAgfVxuXG4gIGxldCBsaWZ0IGYgbSA9XG4gICAgZiA8JD4gbVxuXG4gIGxldCBsaWZ0MiBmIG0xIG0yID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtMSA9XG4gICAgICAgIGxldCBzdWNjMiBpbnB1dDIgcG9zMiBtb3JlMiBtMiA9IHN1Y2MgaW5wdXQyIHBvczIgbW9yZTIgKGYgbTEgbTIpIGluXG4gICAgICAgIG0yLnJ1biBpbnB1dDEgcG9zMSBtb3JlMSBmYWlsIHN1Y2MyXG4gICAgICBpblxuICAgICAgbTEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzEgfVxuXG4gIGxldCBsaWZ0MyBmIG0xIG0yIG0zID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtMSA9XG4gICAgICAgIGxldCBzdWNjMiBpbnB1dDIgcG9zMiBtb3JlMiBtMiA9XG4gICAgICAgICAgbGV0IHN1Y2MzIGlucHV0MyBwb3MzIG1vcmUzIG0zID1cbiAgICAgICAgICAgIHN1Y2MgaW5wdXQzIHBvczMgbW9yZTMgKGYgbTEgbTIgbTMpIGluXG4gICAgICAgICAgbTMucnVuIGlucHV0MiBwb3MyIG1vcmUyIGZhaWwgc3VjYzMgaW5cbiAgICAgICAgbTIucnVuIGlucHV0MSBwb3MxIG1vcmUxIGZhaWwgc3VjYzJcbiAgICAgIGluXG4gICAgICBtMS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMSB9XG5cbiAgbGV0IGxpZnQ0IGYgbTEgbTIgbTMgbTQgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0xID1cbiAgICAgICAgbGV0IHN1Y2MyIGlucHV0MiBwb3MyIG1vcmUyIG0yID1cbiAgICAgICAgICBsZXQgc3VjYzMgaW5wdXQzIHBvczMgbW9yZTMgbTMgPVxuICAgICAgICAgICAgbGV0IHN1Y2M0IGlucHV0NCBwb3M0IG1vcmU0IG00ID1cbiAgICAgICAgICAgICAgc3VjYyBpbnB1dDQgcG9zNCBtb3JlNCAoZiBtMSBtMiBtMyBtNCkgaW5cbiAgICAgICAgICAgIG00LnJ1biBpbnB1dDMgcG9zMyBtb3JlMyBmYWlsIHN1Y2M0IGluXG4gICAgICAgICAgbTMucnVuIGlucHV0MiBwb3MyIG1vcmUyIGZhaWwgc3VjYzMgaW5cbiAgICAgICAgbTIucnVuIGlucHV0MSBwb3MxIG1vcmUxIGZhaWwgc3VjYzJcbiAgICAgIGluXG4gICAgICBtMS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMSB9XG5cbiAgbGV0ICggKj4pIGEgYiA9XG4gICAgKCogYSA+Pj0gZnVuIF8gLT4gYiAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIF8gPSBiLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIGEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYydcbiAgICB9XG5cbiAgbGV0ICg8KiApIGEgYiA9XG4gICAgKCogYSA+Pj0gZnVuIHggLT4gYiA+PnwgZnVuIF8gLT4geCAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MwIGlucHV0MCBwb3MwIG1vcmUwIHggPVxuICAgICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgXyA9IHN1Y2MgaW5wdXQxIHBvczEgbW9yZTEgeCBpblxuICAgICAgICBiLnJ1biBpbnB1dDAgcG9zMCBtb3JlMCBmYWlsIHN1Y2MxXG4gICAgICBpblxuICAgICAgYS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMCB9XG5lbmRcblxubW9kdWxlIENob2ljZSA9IHN0cnVjdFxuICBsZXQgKDw/PikgcCBtYXJrID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyBtYXJrcyBtc2cgPVxuICAgICAgICBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIChtYXJrOjptYXJrcykgbXNnIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsJyBzdWNjXG4gICAgfVxuXG4gIGxldCAoPHw+KSBwIHEgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnIG1hcmtzIG1zZyA9XG4gICAgICAgICgqIFRoZSBvbmx5IHR3byBjb25zdHJ1Y3RvcnMgdGhhdCBpbnRyb2R1Y2UgbmV3IGZhaWx1cmUgY29udGludWF0aW9ucyBhcmVcbiAgICAgICAgICogWzw/Pl0gYW5kIFs8fD5dLiBJZiB0aGUgaW5pdGlhbCBpbnB1dCBwb3NpdGlvbiBpcyBsZXNzIHRoYW4gdGhlIGxlbmd0aFxuICAgICAgICAgKiBvZiB0aGUgY29tbWl0dGVkIGlucHV0LCB0aGVuIGNhbGxpbmcgdGhlIGZhaWx1cmUgY29udGludWF0aW9uIHdpbGxcbiAgICAgICAgICogaGF2ZSB0aGUgZWZmZWN0IG9mIHVud2luZGluZyBhbGwgY2hvaWNlcyBhbmQgY29sbGVjdGluZyBtYXJrcyBhbG9uZ1xuICAgICAgICAgKiB0aGUgd2F5LiAqKVxuICAgICAgICBpZiBwb3MgPCBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIGlucHV0JyB0aGVuXG4gICAgICAgICAgZmFpbCBpbnB1dCcgcG9zJyBtb3JlIG1hcmtzIG1zZ1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcS5ydW4gaW5wdXQnIHBvcyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwnIHN1Y2NcbiAgICB9XG5lbmRcblxubW9kdWxlIE1vbmFkX3VzZV9mb3JfZGVidWdnaW5nID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSBNb25hZC5yZXR1cm5cbiAgbGV0IGZhaWwgICA9IE1vbmFkLmZhaWxcbiAgbGV0ICg+Pj0pICA9IE1vbmFkLig+Pj0pXG5cbiAgbGV0ICg+PnwpIG0gZiA9IG0gPj49IGZ1biB4IC0+IHJldHVybiAoZiB4KVxuXG4gIGxldCAoPCQ+KSBmIG0gPSBtID4+fCBmXG4gIGxldCAoPCo+KSBmIG0gPSBmID4+PSBmdW4gZiAtPiBtID4+fCBmXG5cbiAgbGV0IGxpZnQgID0gKD4+fClcbiAgbGV0IGxpZnQyIGYgbTEgbTIgICAgICAgPSBmIDwkPiBtMSA8Kj4gbTJcbiAgbGV0IGxpZnQzIGYgbTEgbTIgbTMgICAgPSBmIDwkPiBtMSA8Kj4gbTIgPCo+IG0zXG4gIGxldCBsaWZ0NCBmIG0xIG0yIG0zIG00ID0gZiA8JD4gbTEgPCo+IG0yIDwqPiBtMyA8Kj4gbTRcblxuICBsZXQgKCAqPikgYSBiID0gYSA+Pj0gZnVuIF8gLT4gYlxuICBsZXQgKDwqICkgYSBiID0gYSA+Pj0gZnVuIHggLT4gYiA+PnwgZnVuIF8gLT4geFxuZW5kXG4iLCJ0eXBlIHQgPVxuICB7IG11dGFibGUgYnVmIDogQmlnc3RyaW5nYWYudFxuICA7IG11dGFibGUgb2ZmIDogaW50XG4gIDsgbXV0YWJsZSBsZW4gOiBpbnQgfVxuXG5sZXQgb2ZfYmlnc3RyaW5nIH5vZmYgfmxlbiBidWYgPVxuICBhc3NlcnQgKG9mZiA+PSAwKTtcbiAgYXNzZXJ0IChCaWdzdHJpbmdhZi5sZW5ndGggYnVmID49IGxlbiAtIG9mZik7XG4gIHsgYnVmOyBvZmY7IGxlbiB9XG5cbmxldCBjcmVhdGUgbGVuID1cbiAgb2ZfYmlnc3RyaW5nIH5vZmY6MCB+bGVuOjAgKEJpZ3N0cmluZ2FmLmNyZWF0ZSBsZW4pXG5cbmxldCB3cml0YWJsZV9zcGFjZSB0ID1cbiAgQmlnc3RyaW5nYWYubGVuZ3RoIHQuYnVmIC0gdC5sZW5cblxubGV0IHRyYWlsaW5nX3NwYWNlIHQgPVxuICBCaWdzdHJpbmdhZi5sZW5ndGggdC5idWYgLSAodC5vZmYgKyB0LmxlbilcblxubGV0IGNvbXByZXNzIHQgPVxuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdCB0LmJ1ZiB+c3JjX29mZjp0Lm9mZiB0LmJ1ZiB+ZHN0X29mZjowIH5sZW46dC5sZW47XG4gIHQub2ZmIDwtIDBcblxubGV0IGdyb3cgdCB0b19jb3B5ID1cbiAgbGV0IG9sZF9sZW4gPSBCaWdzdHJpbmdhZi5sZW5ndGggdC5idWYgaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgb2xkX2xlbiBpblxuICBsZXQgc3BhY2UgPSB3cml0YWJsZV9zcGFjZSB0IGluXG4gIHdoaWxlIHNwYWNlICsgIW5ld19sZW4gLSBvbGRfbGVuIDwgdG9fY29weSBkb1xuICAgIG5ld19sZW4gOj0gKDMgKiAhbmV3X2xlbikgLyAyXG4gIGRvbmU7XG4gIGxldCBuZXdfYnVmID0gQmlnc3RyaW5nYWYuY3JlYXRlICFuZXdfbGVuIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0IHQuYnVmIH5zcmNfb2ZmOnQub2ZmIG5ld19idWYgfmRzdF9vZmY6MCB+bGVuOnQubGVuO1xuICB0LmJ1ZiA8LSBuZXdfYnVmO1xuICB0Lm9mZiA8LSAwXG5cbmxldCBlbnN1cmUgdCB0b19jb3B5ID1cbiAgaWYgdHJhaWxpbmdfc3BhY2UgdCA8IHRvX2NvcHkgdGhlblxuICAgIGlmIHdyaXRhYmxlX3NwYWNlIHQgPj0gdG9fY29weVxuICAgIHRoZW4gY29tcHJlc3MgdFxuICAgIGVsc2UgZ3JvdyB0IHRvX2NvcHlcblxubGV0IHdyaXRlX3BvcyB0ID1cbiAgdC5vZmYgKyB0LmxlblxuXG5sZXQgZmVlZF9zdHJpbmcgdCB+b2ZmIH5sZW4gc3RyID1cbiAgYXNzZXJ0IChvZmYgPj0gMCk7XG4gIGFzc2VydCAoU3RyaW5nLmxlbmd0aCBzdHIgPj0gbGVuIC0gb2ZmKTtcbiAgZW5zdXJlIHQgbGVuO1xuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzdHIgfnNyY19vZmY6b2ZmIHQuYnVmIH5kc3Rfb2ZmOih3cml0ZV9wb3MgdCkgfmxlbjtcbiAgdC5sZW4gPC0gdC5sZW4gKyBsZW5cblxubGV0IGZlZWRfYmlnc3RyaW5nIHQgfm9mZiB+bGVuIGIgPVxuICBhc3NlcnQgKG9mZiA+PSAwKTtcbiAgYXNzZXJ0IChCaWdzdHJpbmdhZi5sZW5ndGggYiA+PSBsZW4gLSBvZmYpO1xuICBlbnN1cmUgdCBsZW47XG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0IGIgfnNyY19vZmY6b2ZmIHQuYnVmIH5kc3Rfb2ZmOih3cml0ZV9wb3MgdCkgfmxlbjtcbiAgdC5sZW4gPC0gdC5sZW4gKyBsZW5cblxubGV0IGZlZWRfaW5wdXQgdCA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyAgICBzIC0+IGZlZWRfc3RyaW5nICAgIHQgfm9mZjowIH5sZW46KFN0cmluZyAgICAgLmxlbmd0aCBzKSBzXG4gIHwgYEJpZ3N0cmluZyBiIC0+IGZlZWRfYmlnc3RyaW5nIHQgfm9mZjowIH5sZW46KEJpZ3N0cmluZ2FmLmxlbmd0aCBiKSBiXG5cbmxldCBzaGlmdCB0IG4gPVxuICBhc3NlcnQgKHQubGVuID49IG4pO1xuICB0Lm9mZiA8LSB0Lm9mZiArIG47XG4gIHQubGVuIDwtIHQubGVuIC0gblxuXG5sZXQgZm9yX3JlYWRpbmcgeyBidWY7IG9mZjsgbGVuIH0gPVxuICBCaWdzdHJpbmdhZi5zdWIgfm9mZiB+bGVuIGJ1ZlxuXG5tb2R1bGUgVW5jb25zdW1lZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgYnVmIDogQmlnc3RyaW5nYWYudFxuICAgIDsgb2ZmIDogaW50XG4gICAgOyBsZW4gOiBpbnQgfVxuZW5kXG5cbmxldCB1bmNvbnN1bWVkID8oc2hpZnQ9MCkgeyBidWY7IG9mZjsgbGVuIH0gPVxuICBhc3NlcnQgKGxlbiA+PSBzaGlmdCk7XG4gIHsgVW5jb25zdW1lZC5idWY7IG9mZiA9IG9mZiArIHNoaWZ0OyBsZW4gPSBsZW4gLSBzaGlmdCB9XG5cbmxldCBvZl91bmNvbnN1bWVkIHsgVW5jb25zdW1lZC5idWY7IG9mZjsgbGVuIH0gPVxuICB7IGJ1Zjsgb2ZmOyBsZW4gfVxuXG50eXBlIHVuY29uc3VtZWQgPSBVbmNvbnN1bWVkLnQgPVxuICB7IGJ1ZiA6IEJpZ3N0cmluZ2FmLnRcbiAgOyBvZmYgOiBpbnRcbiAgOyBsZW4gOiBpbnQgfVxuIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ29weXJpZ2h0IChjKSAyMDE2IEluaGFiaXRlZCBUeXBlIExMQy5cblxuICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgICBhcmUgbWV0OlxuXG4gICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9yc1xuICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZVxuICAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NcbiAgICBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICAgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAgICBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcbiAgICBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAgICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTilcbiAgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsXG4gICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOXG4gICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFXG4gICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG5tb2R1bGUgQmlnYXJyYXkgPSBzdHJ1Y3RcbiAgKCogRG8gbm90IGFjY2VzcyBCaWdhcnJheSBvcGVyYXRpb25zIGRpcmVjdGx5LiBJZiBhbnl0aGluZydzIG5lZWRlZCwgcmVmZXIgdG9cbiAgICogdGhlIGludGVybmFsIEJpZ3N0cmluZyBtb2R1bGUuICopXG5lbmRcblxudHlwZSBiaWdzdHJpbmcgPSBCaWdzdHJpbmdhZi50XG5cblxubW9kdWxlIFVuYnVmZmVyZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQYXJzZXJcblxuICBpbmNsdWRlIEV4cG9ydGVkX3N0YXRlXG5cbiAgdHlwZSBtb3JlID0gTW9yZS50ID1cbiAgICB8IENvbXBsZXRlXG4gICAgfCBJbmNvbXBsZXRlXG5lbmRcblxuaW5jbHVkZSBVbmJ1ZmZlcmVkXG5pbmNsdWRlIFBhcnNlci5Nb25hZFxuaW5jbHVkZSBQYXJzZXIuQ2hvaWNlXG5cbm1vZHVsZSBCdWZmZXJlZCA9IHN0cnVjdFxuICB0eXBlIHVuY29uc3VtZWQgPSBCdWZmZXJpbmcudW5jb25zdW1lZCA9XG4gICAgeyBidWYgOiBiaWdzdHJpbmdcbiAgICA7IG9mZiA6IGludFxuICAgIDsgbGVuIDogaW50IH1cblxuICB0eXBlIGlucHV0ID1cbiAgICBbIGBCaWdzdHJpbmcgb2YgYmlnc3RyaW5nXG4gICAgfCBgU3RyaW5nICAgIG9mIHN0cmluZyBdXG5cbiAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgfCBQYXJ0aWFsIG9mIChbIGlucHV0IHwgYEVvZiBdIC0+ICdhIHN0YXRlKVxuICAgIHwgRG9uZSAgICBvZiB1bmNvbnN1bWVkICogJ2FcbiAgICB8IEZhaWwgICAgb2YgdW5jb25zdW1lZCAqIHN0cmluZyBsaXN0ICogc3RyaW5nXG5cbiAgbGV0IGZyb21fdW5idWZmZXJlZF9zdGF0ZSB+ZiBidWZmZXJpbmcgPSBmdW5jdGlvblxuICAgIHwgVW5idWZmZXJlZC5QYXJ0aWFsIHAgICAgICAgICAtPiBQYXJ0aWFsIChmIHApXG4gICAgfCBVbmJ1ZmZlcmVkLkRvbmUoY29uc3VtZWQsIHYpIC0+XG4gICAgICBsZXQgdW5jb25zdW1lZCA9IEJ1ZmZlcmluZy51bmNvbnN1bWVkIH5zaGlmdDpjb25zdW1lZCBidWZmZXJpbmcgaW5cbiAgICAgIERvbmUodW5jb25zdW1lZCwgdilcbiAgICB8IFVuYnVmZmVyZWQuRmFpbChjb25zdW1lZCwgbWFya3MsIG1zZykgLT5cbiAgICAgIGxldCB1bmNvbnN1bWVkID0gQnVmZmVyaW5nLnVuY29uc3VtZWQgfnNoaWZ0OmNvbnN1bWVkIGJ1ZmZlcmluZyBpblxuICAgICAgRmFpbCh1bmNvbnN1bWVkLCBtYXJrcywgbXNnKVxuXG4gIGxldCBwYXJzZSA/KGluaXRpYWxfYnVmZmVyX3NpemU9MHgxMDAwKSBwID1cbiAgICBpZiBpbml0aWFsX2J1ZmZlcl9zaXplIDwgMSB0aGVuXG4gICAgICBmYWlsd2l0aCBcInBhcnNlOiBpbnZhbGlkIGFyZ3VtZW50LCBpbml0aWFsX2J1ZmZlcl9zaXplIDwgMVwiO1xuICAgIGxldCBidWZmZXJpbmcgPSBCdWZmZXJpbmcuY3JlYXRlIGluaXRpYWxfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgcmVjIGYgcCBpbnB1dCA9XG4gICAgICBCdWZmZXJpbmcuc2hpZnQgYnVmZmVyaW5nIHAuY29tbWl0dGVkO1xuICAgICAgbGV0IG1vcmUgOiBNb3JlLnQgPVxuICAgICAgICBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICAgIHwgYEVvZiAgICAgICAgICAgIC0+IENvbXBsZXRlXG4gICAgICAgIHwgI2lucHV0IGFzIGlucHV0IC0+XG4gICAgICAgICAgQnVmZmVyaW5nLmZlZWRfaW5wdXQgYnVmZmVyaW5nIGlucHV0O1xuICAgICAgICAgIEluY29tcGxldGVcbiAgICAgIGluXG4gICAgICBsZXQgZm9yX3JlYWRpbmcgPSBCdWZmZXJpbmcuZm9yX3JlYWRpbmcgYnVmZmVyaW5nIGluXG4gICAgICBwLmNvbnRpbnVlIGZvcl9yZWFkaW5nIH5vZmY6MCB+bGVuOihCaWdzdHJpbmdhZi5sZW5ndGggZm9yX3JlYWRpbmcpIG1vcmVcbiAgICAgIHw+IGZyb21fdW5idWZmZXJlZF9zdGF0ZSBidWZmZXJpbmcgfmZcbiAgICBpblxuICAgIFVuYnVmZmVyZWQucGFyc2UgcFxuICAgIHw+IGZyb21fdW5idWZmZXJlZF9zdGF0ZSBidWZmZXJpbmcgfmZcblxuICBsZXQgZmVlZCBzdGF0ZSBpbnB1dCA9XG4gICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgIHwgUGFydGlhbCBrIC0+IGsgaW5wdXRcbiAgICB8IEZhaWwodW5jb25zdW1lZCwgbWFya3MsIG1zZykgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgIHwgYEVvZiAgIC0+IHN0YXRlXG4gICAgICB8ICNpbnB1dCBhcyBpbnB1dCAtPlxuICAgICAgICBsZXQgYnVmZmVyaW5nID0gQnVmZmVyaW5nLm9mX3VuY29uc3VtZWQgdW5jb25zdW1lZCBpblxuICAgICAgICBCdWZmZXJpbmcuZmVlZF9pbnB1dCBidWZmZXJpbmcgaW5wdXQ7XG4gICAgICAgIEZhaWwoQnVmZmVyaW5nLnVuY29uc3VtZWQgYnVmZmVyaW5nLCBtYXJrcywgbXNnKVxuICAgICAgZW5kXG4gICAgfCBEb25lKHVuY29uc3VtZWQsIHYpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICB8IGBFb2YgICAtPiBzdGF0ZVxuICAgICAgfCAjaW5wdXQgYXMgaW5wdXQgLT5cbiAgICAgICAgbGV0IGJ1ZmZlcmluZyA9IEJ1ZmZlcmluZy5vZl91bmNvbnN1bWVkIHVuY29uc3VtZWQgaW5cbiAgICAgICAgQnVmZmVyaW5nLmZlZWRfaW5wdXQgYnVmZmVyaW5nIGlucHV0O1xuICAgICAgICBEb25lKEJ1ZmZlcmluZy51bmNvbnN1bWVkIGJ1ZmZlcmluZywgdilcbiAgICAgIGVuZFxuXG4gIGxldCBzdGF0ZV90b19vcHRpb24gPSBmdW5jdGlvblxuICAgIHwgRG9uZShfLCB2KSAtPiBTb21lIHZcbiAgICB8IFBhcnRpYWwgXyAgLT4gTm9uZVxuICAgIHwgRmFpbCBfICAgICAtPiBOb25lXG5cbiAgbGV0IHN0YXRlX3RvX3Jlc3VsdCA9IGZ1bmN0aW9uXG4gICAgfCBQYXJ0aWFsIF8gICAgICAgICAgIC0+IEVycm9yIFwiaW5jb21wbGV0ZSBpbnB1dFwiXG4gICAgfCBEb25lKF8sIHYpICAgICAgICAgIC0+IE9rIHZcbiAgICB8IEZhaWwoXywgbWFya3MsIG1zZykgLT4gRXJyb3IgKFVuYnVmZmVyZWQuZmFpbF90b19zdHJpbmcgbWFya3MgbXNnKVxuXG4gIGxldCBzdGF0ZV90b191bmNvbnN1bWVkID0gZnVuY3Rpb25cbiAgICB8IERvbmUodW5jb25zdW1lZCwgXylcbiAgICB8IEZhaWwodW5jb25zdW1lZCwgXywgXykgLT4gU29tZSB1bmNvbnN1bWVkXG4gICAgfCBQYXJ0aWFsIF8gICAgICAgICAgICAgIC0+IE5vbmVcblxuZW5kXG5cbigqKiBCRUdJTjogZ2V0dGluZyBpbnB1dCAqKVxuXG5sZXQgcmVjIHByb21wdCBpbnB1dCBwb3MgZmFpbCBzdWNjID1cbiAgKCogW3Byb21wdF0gc2hvdWxkIG9ubHkgY2FsbCBbc3VjY10gaWYgaXQgaGFzIHJlY2VpdmVkIG1vcmUgaW5wdXQuIElmIHRoZXJlXG4gICAqIGlzIG5vIGNoYW5jZSB0aGF0IHRoZSBpbnB1dCB3aWxsIGdyb3csIGkuZS4sIFttb3JlID0gQ29tcGxldGVdLCB0aGVuXG4gICAqIFtwcm9tcHRdIHNob3VsZCBjYWxsIFtmYWlsXS4gT3RoZXJ3aXNlIChpbiB0aGUgY2FzZSB3aGVyZSB0aGUgaW5wdXRcbiAgICogaGFzbid0IGdyb3duIGJ1dCBbbW9yZSA9IEluY29tcGxldGVdIGp1c3QgcHJvbXB0IGFnYWluLiAqKVxuICBsZXQgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzID0gSW5wdXQucGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIGlucHV0IGluXG4gIGxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzICAgPSBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzICAgaW5wdXQgaW5cbiAgKCogVGhlIGNvbnRpbnVhdGlvbiBzaG91bGQgbm90IGhvbGQgYW55IHJlZmVyZW5jZXMgdG8gaW5wdXQgYWJvdmUuICopXG4gIGxldCBjb250aW51ZSBpbnB1dCB+b2ZmIH5sZW4gbW9yZSA9XG4gICAgaWYgbGVuIDwgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHRoZW5cbiAgICAgIGZhaWx3aXRoIFwicHJvbXB0OiBpbnB1dCBzaHJ1bmshXCI7XG4gICAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIGlucHV0IH5vZmYgfmxlbiB+Y29tbWl0dGVkX2J5dGVzOnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5cbiAgICBpZiBsZW4gPSBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdGhlblxuICAgICAgbWF0Y2ggKG1vcmUgOiBNb3JlLnQpIHdpdGhcbiAgICAgIHwgQ29tcGxldGUgICAtPiBmYWlsIGlucHV0IHBvcyBNb3JlLkNvbXBsZXRlXG4gICAgICB8IEluY29tcGxldGUgLT4gcHJvbXB0IGlucHV0IHBvcyBmYWlsIHN1Y2NcbiAgICBlbHNlXG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlXG4gIGluXG4gIFN0YXRlLlBhcnRpYWwgeyBjb21taXR0ZWQgPSBJbnB1dC5ieXRlc19mb3JfY2xpZW50X3RvX2NvbW1pdCBpbnB1dDsgY29udGludWUgfVxuXG5sZXQgZGVtYW5kX2lucHV0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbWF0Y2ggKG1vcmUgOiBNb3JlLnQpIHdpdGhcbiAgICB8IENvbXBsZXRlICAgLT4gZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIm5vdCBlbm91Z2ggaW5wdXRcIlxuICAgIHwgSW5jb21wbGV0ZSAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyAoKVxuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID0gZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyBbXSBcIm5vdCBlbm91Z2ggaW5wdXRcIiBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbmxldCBlbnN1cmVfc3VzcGVuZGVkIG4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjID1cbiAgbGV0IHJlYyBnbyA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCcgc3VjYycgLT5cbiAgICAgIGlmIHBvcycgKyBuIDw9IElucHV0Lmxlbmd0aCBpbnB1dCcgdGhlblxuICAgICAgICBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyAoKVxuICAgICAgZWxzZVxuICAgICAgICAoZGVtYW5kX2lucHV0ICo+IGdvKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCcgc3VjYydcbiAgICB9XG4gIGluXG4gIChkZW1hbmRfaW5wdXQgKj4gZ28pLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2NcblxubGV0IHVuc2FmZV9hcHBseSBsZW4gfmYgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIChJbnB1dC5hcHBseSBpbnB1dCBwb3MgbGVuIH5mKVxuICB9XG5cbmxldCB1bnNhZmVfYXBwbHlfb3B0IGxlbiB+ZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIG1hdGNoIElucHV0LmFwcGx5IGlucHV0IHBvcyBsZW4gfmYgd2l0aFxuICAgIHwgRXJyb3IgZSAtPiBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIGVcbiAgICB8IE9rICAgIHggLT4gc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIHhcbiAgfVxuXG5sZXQgZW5zdXJlIG4gcCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGlmIHBvcyArIG4gPD0gSW5wdXQubGVuZ3RoIGlucHV0XG4gICAgdGhlbiBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2NcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKCkgPSBwLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIGVuc3VyZV9zdXNwZW5kZWQgbiBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxuKCoqIEVORDogZ2V0dGluZyBpbnB1dCAqKVxuXG5sZXQgYXRfZW5kX29mX2lucHV0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgXyBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgZmFsc2VcbiAgICBlbHNlIG1hdGNoIG1vcmUgd2l0aFxuICAgIHwgQ29tcGxldGUgLT4gc3VjYyBpbnB1dCBwb3MgbW9yZSB0cnVlXG4gICAgfCBJbmNvbXBsZXRlIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIGZhbHNlXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIHRydWUgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgZW5kX29mX2lucHV0ID1cbiAgYXRfZW5kX29mX2lucHV0XG4gID4+PSBmdW5jdGlvblxuICAgIHwgdHJ1ZSAgLT4gcmV0dXJuICgpXG4gICAgfCBmYWxzZSAtPiBmYWlsIFwiZW5kX29mX2lucHV0XCJcblxubGV0IGFkdmFuY2UgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcImFkdmFuY2VcIlxuICBlbHNlXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPiBzdWNjIGlucHV0IChwb3MgKyBuKSBtb3JlICgpIH1cbiAgICBpblxuICAgIGVuc3VyZSBuIHBcblxubGV0IHBvcyA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT4gc3VjYyBpbnB1dCBwb3MgbW9yZSBwb3MgfVxuXG5sZXQgYXZhaWxhYmxlID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKElucHV0Lmxlbmd0aCBpbnB1dCAtIHBvcylcbiAgfVxuXG5sZXQgY29tbWl0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIElucHV0LmNvbW1pdCBpbnB1dCBwb3M7XG4gICAgc3VjYyBpbnB1dCBwb3MgbW9yZSAoKSB9XG5cbigqIERvIG5vdCB1c2UgdGhpcyBpZiBbcF0gY29udGFpbnMgYSBbY29tbWl0XS4gKilcbmxldCB1bnNhZmVfbG9va2FoZWFkIHAgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgc3VjYycgaW5wdXQnIF8gbW9yZScgdiA9IHN1Y2MgaW5wdXQnIHBvcyBtb3JlJyB2IGluXG4gICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJyB9XG5cbmxldCBwZWVrX2NoYXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKFNvbWUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpKVxuICAgIGVsc2UgaWYgbW9yZSA9IENvbXBsZXRlIHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgKFNvbWUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCcgcG9zJykpXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIE5vbmUgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG4oKiBUaGlzIHBhcnNlciBpcyB0b28gaW1wb3J0YW50IHRvIG5vdCBiZSBvcHRpbWl6ZWQuIERvIGEgY3VzdG9tIGpvYi4gKilcbmxldCByZWMgcGVla19jaGFyX2ZhaWwgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXRcbiAgICB0aGVuIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpID1cbiAgICAgICAgcGVla19jaGFyX2ZhaWwucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgZW5zdXJlX3N1c3BlbmRlZCAxIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG5sZXQgc2F0aXNmeSBmID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgaWYgZiBjXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgY1xuICAgICAgZWxzZSBQcmludGYua3NwcmludGYgKGZhaWwgaW5wdXQgcG9zIG1vcmUgW10pIFwic2F0aXNmeTogJUNcIiBjXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpID1cbiAgICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQnIHBvcycgaW5cbiAgICAgICAgaWYgZiBjXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCcgKHBvcycgKyAxKSBtb3JlJyBjXG4gICAgICAgIGVsc2UgUHJpbnRmLmtzcHJpbnRmIChmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdKSBcInNhdGlzZnk6ICVDXCIgY1xuICAgICAgaW5cbiAgICAgIGVuc3VyZV9zdXNwZW5kZWQgMSBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxubGV0IGNoYXIgYyA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGlmIElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgPSBjXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgY1xuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIChQcmludGYuc3ByaW50ZiBcImNoYXIgJUNcIiBjKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IG5vdF9jaGFyIGMgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYycgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBpZiBjIDw+IGMnXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgYydcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSAoUHJpbnRmLnNwcmludGYgXCJub3QgY2hhciAlQ1wiIGMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X2NoYXIgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcykgIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgaW50OCBpID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpIGluXG4gICAgICBpZiBjID0gaSBsYW5kIDB4ZmZcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjXG4gICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gKFByaW50Zi5zcHJpbnRmIFwiaW50OCAlZFwiIGkpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X3VpbnQ4ID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoQ2hhci5jb2RlIGMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X2ludDggPVxuICAoKiBodHRwczovL2dyYXBoaWNzLnN0YW5mb3JkLmVkdS9+c2VhbmRlci9iaXRoYWNrcy5odG1sI1ZhcmlhYmxlU2lnbkV4dGVuZFJpc2t5ICopXG4gIGxldCBzID0gU3lzLmludF9zaXplIC0gOCBpblxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlICgoQ2hhci5jb2RlIGMgbHNsIHMpIGFzciBzKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IHNraXAgZiA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGlmIGYgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgKClcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcInNraXBcIiB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IHJlYyBjb3VudF93aGlsZSB+aW5pdCB+ZiB+d2l0aF9idWZmZXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgbGVuICAgICAgICAgPSBJbnB1dC5jb3VudF93aGlsZSBpbnB1dCAocG9zICsgaW5pdCkgfmYgaW5cbiAgICBsZXQgaW5wdXRfbGVuICAgPSBJbnB1dC5sZW5ndGggaW5wdXQgaW5cbiAgICBsZXQgaW5pdCcgICAgICAgPSBpbml0ICsgbGVuIGluXG4gICAgKCogQ2hlY2sgaWYgdGhlIGxvb3AgdGVybWluYXRlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW5wdXRcbiAgICAgKiBidWZmZXIuIElmIHNvLCB0aGVuIHByb21wdCBmb3IgYWRkaXRpb25hbCBpbnB1dCBhbmQgY29udGludWUuICopXG4gICAgaWYgcG9zICsgaW5pdCcgPCBpbnB1dF9sZW4gfHwgbW9yZSA9IENvbXBsZXRlXG4gICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBpbml0JykgbW9yZSAoSW5wdXQuYXBwbHkgaW5wdXQgcG9zIGluaXQnIH5mOndpdGhfYnVmZmVyKVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIChjb3VudF93aGlsZSB+aW5pdDppbml0JyB+ZiB+d2l0aF9idWZmZXIpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2NcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIChwb3MnICsgaW5pdCcpIG1vcmUnIChJbnB1dC5hcHBseSBpbnB1dCcgcG9zJyBpbml0JyB+Zjp3aXRoX2J1ZmZlcilcbiAgICAgIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IHJlYyBjb3VudF93aGlsZTEgfmYgfndpdGhfYnVmZmVyID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IGxlbiAgICAgICAgID0gSW5wdXQuY291bnRfd2hpbGUgaW5wdXQgcG9zIH5mIGluXG4gICAgbGV0IGlucHV0X2xlbiAgID0gSW5wdXQubGVuZ3RoIGlucHV0IGluXG4gICAgKCogQ2hlY2sgaWYgdGhlIGxvb3AgdGVybWluYXRlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW5wdXRcbiAgICAgKiBidWZmZXIuIElmIHNvLCB0aGVuIHByb21wdCBmb3IgYWRkaXRpb25hbCBpbnB1dCBhbmQgY29udGludWUuICopXG4gICAgaWYgbGVuIDwgMVxuICAgIHRoZW5cbiAgICAgIGlmIHBvcyA8IGlucHV0X2xlbiB8fCBtb3JlID0gQ29tcGxldGVcbiAgICAgIHRoZW4gZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcImNvdW50X3doaWxlMVwiXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgICAgKGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXIpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2NcbiAgICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgICBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdIFwiY291bnRfd2hpbGUxXCJcbiAgICAgICAgaW5cbiAgICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICAgIGVsc2UgaWYgcG9zICsgbGVuIDwgaW5wdXRfbGVuIHx8IG1vcmUgPSBDb21wbGV0ZVxuICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIChJbnB1dC5hcHBseSBpbnB1dCBwb3MgbGVuIH5mOndpdGhfYnVmZmVyKVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIChjb3VudF93aGlsZSB+aW5pdDpsZW4gfmYgfndpdGhfYnVmZmVyKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyAocG9zJyArIGxlbikgbW9yZScgKElucHV0LmFwcGx5IGlucHV0JyBwb3MnIGxlbiB+Zjp3aXRoX2J1ZmZlcilcbiAgICAgIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IHN0cmluZ18gZiBzID1cbiAgKCogWFhYKHNlbGlvcG91KTogSW5lZmZpY2llbnQuIENvdWxkIGNoZWNrIHByZWZpeCBlcXVhbGl0eSB0byBzaG9ydC1jaXJjdWl0XG4gICAqIHRoZSBpby4gKilcbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBlbnN1cmUgIGxlbiAodW5zYWZlX2FwcGx5X29wdCBsZW4gfmY6KGZ1biBidWZmZXIgfm9mZiB+bGVuIC0+XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIHdoaWxlICFpIDwgbGVuICYmIENoYXIuZXF1YWwgKGYgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgYnVmZmVyIChvZmYgKyAhaSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGYgKFN0cmluZy51bnNhZmVfZ2V0IHMgIWkpKVxuICAgIGRvXG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGlmIGxlbiA9ICFpXG4gICAgdGhlbiBPayAoQmlnc3RyaW5nYWYuc3Vic3RyaW5nIGJ1ZmZlciB+b2ZmIH5sZW4pXG4gICAgZWxzZSBFcnJvciBcInN0cmluZ1wiKSlcblxubGV0IHN0cmluZyBzICAgID0gc3RyaW5nXyAoZnVuIHggLT4geCkgc1xubGV0IHN0cmluZ19jaSBzID0gc3RyaW5nXyBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbmxldCBza2lwX3doaWxlIGYgPVxuICBjb3VudF93aGlsZSB+aW5pdDowIH5mIH53aXRoX2J1ZmZlcjooZnVuIF8gfm9mZjpfIH5sZW46XyAtPiAoKSlcblxubGV0IHRha2UgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcInRha2U6IG4gPCAwXCJcbiAgZWxzZVxuICAgIGxldCBuID0gbWF4IG4gMCBpblxuICAgIGVuc3VyZSBuICh1bnNhZmVfYXBwbHkgbiB+ZjpCaWdzdHJpbmdhZi5zdWJzdHJpbmcpXG5cbmxldCB0YWtlX2JpZ3N0cmluZyBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwidGFrZV9iaWdzdHJpbmc6IG4gPCAwXCJcbiAgZWxzZVxuICAgIGxldCBuID0gbWF4IG4gMCBpblxuICAgIGVuc3VyZSBuICh1bnNhZmVfYXBwbHkgbiB+ZjpCaWdzdHJpbmdhZi5jb3B5KVxuXG5sZXQgdGFrZV9iaWdzdHJpbmdfd2hpbGUgZiA9XG4gIGNvdW50X3doaWxlIH5pbml0OjAgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLmNvcHlcblxubGV0IHRha2VfYmlnc3RyaW5nX3doaWxlMSBmID1cbiAgY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5jb3B5XG5cbmxldCB0YWtlX2JpZ3N0cmluZ190aWxsIGYgPVxuICB0YWtlX2JpZ3N0cmluZ193aGlsZSAoZnVuIGMgLT4gbm90IChmIGMpKVxuXG5sZXQgcGVla19zdHJpbmcgbiA9XG4gIHVuc2FmZV9sb29rYWhlYWQgKHRha2UgbilcblxubGV0IHRha2Vfd2hpbGUgZiA9XG4gIGNvdW50X3doaWxlIH5pbml0OjAgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xuXG5sZXQgdGFrZV93aGlsZTEgZiA9XG4gIGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5cbmxldCB0YWtlX3RpbGwgZiA9XG4gIHRha2Vfd2hpbGUgKGZ1biBjIC0+IG5vdCAoZiBjKSlcblxubGV0IGNob2ljZSA/KGZhaWx1cmVfbXNnPVwibm8gbW9yZSBjaG9pY2VzXCIpIHBzID1cbiAgTGlzdC5mb2xkX3JpZ2h0ICg8fD4pIHBzIChmYWlsIGZhaWx1cmVfbXNnKVxuXG5sZXQgZml4X2RpcmVjdCBmID1cbiAgbGV0IHJlYyBwID0gbGF6eSAoZiByKVxuICBhbmQgciA9IHsgcnVuID0gZnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAoTGF6eS5mb3JjZSBwKS5ydW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYyB9XG4gIGluXG4gIHJcblxubGV0IGZpeF9sYXp5IH5tYXhfc3RlcHMgZiA9XG4gIGxldCBzdGVwcyA9IHJlZiBtYXhfc3RlcHMgaW5cbiAgbGV0IHJlYyBwID0gbGF6eSAoZiByKVxuICBhbmQgciA9IHsgcnVuID0gZnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBkZWNyIHN0ZXBzO1xuICAgIGlmICFzdGVwcyA8IDBcbiAgICB0aGVuIChcbiAgICAgIHN0ZXBzIDo9IG1heF9zdGVwcztcbiAgICAgIFN0YXRlLkxhenkgKGxhenkgKChMYXp5LmZvcmNlIHApLnJ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjKSkpXG4gICAgZWxzZVxuICAgICAgKExhenkuZm9yY2UgcCkucnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2NcbiAgICAgICAgICB9XG4gIGluXG4gIHJcblxubGV0IGZpeCA9IG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IE5hdGl2ZSAtPiBmaXhfZGlyZWN0XG4gIHwgQnl0ZWNvZGUgLT4gZml4X2RpcmVjdFxuICB8IE90aGVyIF8gLT4gZnVuIGYgLT4gZml4X2xhenkgfm1heF9zdGVwczoyMCBmXG5cbmxldCBvcHRpb24geCBwID1cbiAgcCA8fD4gcmV0dXJuIHhcblxubGV0IGNvbnMgeCB4cyA9IHggOjogeHNcblxubGV0IHJlYyBsaXN0IHBzID1cbiAgbWF0Y2ggcHMgd2l0aFxuICB8IFtdICAgIC0+IHJldHVybiBbXVxuICB8IHA6OnBzIC0+IGxpZnQyIGNvbnMgcCAobGlzdCBwcylcblxubGV0IGNvdW50IG4gcCA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcImNvdW50OiBuIDwgMFwiXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgfCAwIC0+IHJldHVybiBbXVxuICAgICAgfCBuIC0+IGxpZnQyIGNvbnMgcCAobG9vcCAobiAtIDEpKVxuICAgIGluXG4gICAgbG9vcCBuXG5cbmxldCBtYW55IHAgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgKGxpZnQyIGNvbnMgcCBtKSA8fD4gcmV0dXJuIFtdKVxuXG5sZXQgbWFueTEgcCA9XG4gIGxpZnQyIGNvbnMgcCAobWFueSBwKVxuXG5sZXQgbWFueV90aWxsIHAgdCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICAodCAqPiByZXR1cm4gW10pIDx8PiAobGlmdDIgY29ucyBwIG0pKVxuXG5sZXQgc2VwX2J5MSBzIHAgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgbGlmdDIgY29ucyBwICgocyAqPiBtKSA8fD4gcmV0dXJuIFtdKSlcblxubGV0IHNlcF9ieSBzIHAgPVxuICAobGlmdDIgY29ucyBwICgocyAqPiBzZXBfYnkxIHMgcCkgPHw+IHJldHVybiBbXSkpIDx8PiByZXR1cm4gW11cblxubGV0IHNraXBfbWFueSBwID1cbiAgZml4IChmdW4gbSAtPlxuICAgICAgKChwID4+fCBmdW4gXyAtPiB0cnVlKSA8fD4gcmV0dXJuIGZhbHNlKSA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiBtXG4gICAgICB8IGZhbHNlIC0+IHJldHVybiAoKVxuICAgIClcblxubGV0IHNraXBfbWFueTEgcCA9XG4gIHAgKj4gc2tpcF9tYW55IHBcblxubGV0IGVuZF9vZl9saW5lID1cbiAgKGNoYXIgJ1xcbicgKj4gcmV0dXJuICgpKSA8fD4gKHN0cmluZyBcIlxcclxcblwiICo+IHJldHVybiAoKSkgPD8+IFwiZW5kX29mX2xpbmVcIlxuXG5sZXQgc2Nhbl8gc3RhdGUgZiB+d2l0aF9idWZmZXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgc3RhdGUgPSByZWYgc3RhdGUgaW5cbiAgICBsZXQgcGFyc2VyID1cbiAgICAgIGNvdW50X3doaWxlIH5pbml0OjAgfmY6KGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGYgIXN0YXRlIGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIHN0YXRlJyAtPiBzdGF0ZSA6PSBzdGF0ZSc7IHRydWUpXG4gICAgICB+d2l0aF9idWZmZXJcbiAgICAgID4+fCBmdW4geCAtPiB4LCAhc3RhdGVcbiAgICBpblxuICAgIHBhcnNlci5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIH1cblxubGV0IHNjYW4gc3RhdGUgZiA9XG4gIHNjYW5fIHN0YXRlIGYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xuXG5sZXQgc2Nhbl9zdGF0ZSBzdGF0ZSBmID1cbiAgc2Nhbl8gc3RhdGUgZiB+d2l0aF9idWZmZXI6KGZ1biBfIH5vZmY6XyB+bGVuOl8gLT4gKCkpXG4gID4+fCBmdW4gKCgpLCBzdGF0ZSkgLT4gc3RhdGVcblxubGV0IHNjYW5fc3RyaW5nIHN0YXRlIGYgPVxuICBzY2FuIHN0YXRlIGYgPj58IGZzdFxuXG5sZXQgY29uc3VtZV93aXRoIHAgZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBzdGFydCA9IHBvcyBpblxuICAgIGxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzID0gSW5wdXQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpbnB1dCAgaW5cbiAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgXyA9XG4gICAgICBpZiBwYXJzZXJfY29tbWl0dGVkX2J5dGVzIDw+IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5wdXQnXG4gICAgICB0aGVuIGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10gXCJjb25zdW1lZDogcGFyc2VyIGNvbW1pdHRlZFwiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxlbiA9IHBvcycgLSBzdGFydCBpblxuICAgICAgICBsZXQgY29uc3VtZWQgPSBJbnB1dC5hcHBseSBpbnB1dCcgc3RhcnQgbGVuIH5mIGluXG4gICAgICAgIHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgY29uc3VtZWQpXG4gICAgaW5cbiAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gIH1cblxubGV0IGNvbnN1bWVkICAgICAgICAgICBwID0gY29uc3VtZV93aXRoIHAgQmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5sZXQgY29uc3VtZWRfYmlnc3RyaW5nIHAgPSBjb25zdW1lX3dpdGggcCBCaWdzdHJpbmdhZi5jb3B5XG5cbmxldCBib3RoIGEgYiA9IGxpZnQyIChmdW4gYSBiIC0+IGEsIGIpIGEgYlxubGV0IG1hcCB0IH5mID0gdCA+PnwgZlxubGV0IGJpbmQgdCB+ZiA9IHQgPj49IGZcbmxldCBtYXAyIGEgYiB+ZiA9IGxpZnQyIGYgYSBiXG5sZXQgbWFwMyBhIGIgYyB+ZiA9IGxpZnQzIGYgYSBiIGNcbmxldCBtYXA0IGEgYiBjIGQgfmYgPSBsaWZ0NCBmIGEgYiBjIGRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgbGV0ICggPj49ICkgPSAoID4+PSApXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBib3RoID0gYm90aFxuICAgIGxldCBtYXAyID0gbWFwMlxuICAgIGxldCBtYXAzID0gbWFwM1xuICAgIGxldCBtYXA0ID0gbWFwNFxuICBlbmRcbmVuZFxuXG5sZXQgKCBsZXQrICkgPSAoID4+fCApXG5sZXQgKCBsZXQqICkgPSAoID4+PSApXG5sZXQgKCBhbmQrICkgPSBib3RoXG5cbm1vZHVsZSBCRSA9IHN0cnVjdFxuICAoKiBYWFgoc2VsaW9wb3UpOiBUaGUgcGF0dGVybiBpbiBib3RoIHRoaXMgbW9kdWxlIGFuZCBbTEVdIGFyZSBhIGNvbXByb21pc2VcbiAgICogYmV0d2VlbiBlZmZpY2llbmN5IGFuZCBjb2RlIHJldXNlLiBCeSBpbmxpbmluZyBbZW5zdXJlXSB5b3UgY2FuIHJlY292ZXJcbiAgICogYWJvdXQgMiBuYW5vc2Vjb25kcyBvbiBhdmVyYWdlLiBUaGF0IG1heSBhZGQgdXAgaW4gY2VydGFpbiBhcHBsaWNhdGlvbnMuXG4gICAqXG4gICAqIFRoaXMgcGF0dGVybiBkb2VzIG5vdCBhbGxvY2F0ZSBpbiB0aGUgZmFzdCAoc3VjY2VzcykgcGF0aC5cbiAgICogKilcbiAgbGV0IGludDE2IG4gPVxuICAgIGxldCBieXRlcyA9IDIgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW5wdXQudW5zYWZlX2dldF9pbnQxNl9iZSBpbnB1dCBwb3MgPSAobiBsYW5kIDB4ZmZmZilcbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJCRS5pbnQxNlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDMyIG4gPVxuICAgIGxldCBieXRlcyA9IDQgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50MzIuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50MzJfYmUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiQkUuaW50MzJcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQ2NCBuID1cbiAgICBsZXQgYnl0ZXMgPSA4IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDY0LmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDY0X2JlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkJFLmludDY0XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgYW55X3VpbnQxNiA9XG4gICAgZW5zdXJlIDIgKHVuc2FmZV9hcHBseSAyIH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9iZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50MTYgID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfYmUgIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQzMiAgPVxuICAgIGVuc3VyZSA0ICh1bnNhZmVfYXBwbHkgNCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfYmUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDY0ID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2JlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9mbG9hdCA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50MzIuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9iZSBicyBvZmYpKSlcblxuICBsZXQgYW55X2RvdWJsZSA9XG4gICAgZW5zdXJlIDggKHVuc2FmZV9hcHBseSA4IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50NjQuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9iZSBicyBvZmYpKSlcbmVuZFxuXG5tb2R1bGUgTEUgPSBzdHJ1Y3RcbiAgbGV0IGludDE2IG4gPVxuICAgIGxldCBieXRlcyA9IDIgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW5wdXQudW5zYWZlX2dldF9pbnQxNl9sZSBpbnB1dCBwb3MgPSAobiBsYW5kIDB4ZmZmZilcbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJMRS5pbnQxNlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDMyIG4gPVxuICAgIGxldCBieXRlcyA9IDQgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50MzIuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50MzJfbGUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiTEUuaW50MzJcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQ2NCBuID1cbiAgICBsZXQgYnl0ZXMgPSA4IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDY0LmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDY0X2xlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkxFLmludDY0XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuXG4gIGxldCBhbnlfdWludDE2ID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2xlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQxNiAgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSAgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDMyICA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9sZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50NjQgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfbGUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2Zsb2F0ID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQzMi5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2xlIGJzIG9mZikpKVxuXG4gIGxldCBhbnlfZG91YmxlID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQ2NC5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2xlIGJzIG9mZikpKVxuZW5kXG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgbGV0IHRha2UgbiBmID1cbiAgICBsZXQgbiA9IG1heCBuIDAgaW5cbiAgICBlbnN1cmUgbiAodW5zYWZlX2FwcGx5IG4gfmYpXG5cbiAgbGV0IHBlZWsgbiBmID1cbiAgICB1bnNhZmVfbG9va2FoZWFkICh0YWtlIG4gZilcblxuICBsZXQgdGFrZV93aGlsZSBjaGVjayBmID1cbiAgICBjb3VudF93aGlsZSB+aW5pdDowIH5mOmNoZWNrIH53aXRoX2J1ZmZlcjpmXG5cbiAgbGV0IHRha2Vfd2hpbGUxIGNoZWNrIGYgPVxuICAgIGNvdW50X3doaWxlMSB+ZjpjaGVjayB+d2l0aF9idWZmZXI6ZlxuXG4gIGxldCB0YWtlX3RpbGwgY2hlY2sgZiA9XG4gICAgdGFrZV93aGlsZSAoZnVuIGMgLT4gbm90IChjaGVjayBjKSkgZlxuZW5kXG5cbm1vZHVsZSBDb25zdW1lID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBQcmVmaXhcbiAgICB8IEFsbFxuZW5kXG5cbmxldCBwYXJzZV9iaWdzdHJpbmcgfmNvbnN1bWUgcCBicyA9XG4gIGxldCBwID1cbiAgICBtYXRjaCAoY29uc3VtZSA6IENvbnN1bWUudCkgd2l0aFxuICAgIHwgUHJlZml4IC0+IHBcbiAgICB8IEFsbCAtPiBwIDwqIGVuZF9vZl9pbnB1dFxuICBpblxuICBVbmJ1ZmZlcmVkLnBhcnNlX2JpZ3N0cmluZyBwIGJzXG5cbmxldCBwYXJzZV9zdHJpbmcgfmNvbnN1bWUgcCBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnMgID0gQmlnc3RyaW5nYWYuY3JlYXRlIGxlbiBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzIH5zcmNfb2ZmOjAgYnMgfmRzdF9vZmY6MCB+bGVuO1xuICBwYXJzZV9iaWdzdHJpbmcgfmNvbnN1bWUgcCBic1xuIiwiKCpcbiAqIENvcHlyaWdodCAoYykgMjAxMi0yMDE0IEFuaWwgTWFkaGF2YXBlZGR5IDxhbmlsQHJlY29pbC5vcmc+XG4gKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBEYXZpZCBTaGVldHMgPHNoZWV0c0BhbHVtLm1pdC5lZHU+XG4gKlxuICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG4gKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlXG4gKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTXG4gKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GXG4gKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUlxuICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFU1xuICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOXG4gKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRlxuICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbiAqXG4gKilcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxudHlwZSBjb21wb25lbnQgPSBbXG4gIHwgYFNjaGVtZVxuICB8IGBBdXRob3JpdHlcbiAgfCBgVXNlcmluZm8gKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcbiAgfCBgSG9zdCAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuICB8IGBQYXRoXG4gIHwgYFF1ZXJ5XG4gIHwgYFF1ZXJ5X2tleVxuICB8IGBRdWVyeV92YWx1ZVxuICB8IGBGcmFnbWVudFxuICB8IGBHZW5lcmljXG4gIHwgYEN1c3RvbSBvZiAoY29tcG9uZW50ICogc3RyaW5nICogc3RyaW5nKSAoKiAoY29tcG9uZW50ICogc2FmZSBjaGFycyAqIHVuc2FmZSBjaGFycykgKilcbl1cblxudHlwZSBwY3RfZW5jb2RlciA9IHtcbiAgICBzY2hlbWU6IGNvbXBvbmVudDtcbiAgICB1c2VyaW5mbzogY29tcG9uZW50O1xuICAgIGhvc3Q6IGNvbXBvbmVudDtcbiAgICBwYXRoOiBjb21wb25lbnQ7XG4gICAgcXVlcnlfa2V5OiBjb21wb25lbnQ7XG4gICAgcXVlcnlfdmFsdWU6IGNvbXBvbmVudDtcbiAgICBmcmFnbWVudDogY29tcG9uZW50O1xuICB9XG5cbmxldCByZWMgaXRlcl9jb25jYXQgZm4gc2VwIGJ1ZiA9IGZ1bmN0aW9uXG4gIHwgbGFzdDo6W10gLT4gZm4gYnVmIGxhc3RcbiAgfCBlbDo6cmVzdCAtPlxuICAgIGZuIGJ1ZiBlbDtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgc2VwO1xuICAgIGl0ZXJfY29uY2F0IGZuIHNlcCBidWYgcmVzdFxuICB8IFtdIC0+ICgpXG5cbmxldCByZXZfaW50ZXJqZWN0IGUgbHN0ID1cbiAgbGV0IHJlYyBhdXggYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdICAtPiBhY2NcbiAgICB8IHg6OnhzIC0+IGF1eCAoeDo6ZTo6YWNjKSB4c1xuICBpbiBtYXRjaCBsc3Qgd2l0aFxuICB8IFtdICAtPiBbXVxuICB8IGg6OnQgLT4gYXV4IFtoXSB0XG5cbmxldCBjb21wYXJlX29wdCBjIHQgdCcgPSBtYXRjaCB0LCB0JyB3aXRoXG4gIHwgTm9uZSwgICBOb25lICAgLT4gMFxuICB8IFNvbWUgXywgTm9uZSAgIC0+IDFcbiAgfCBOb25lLCAgIFNvbWUgXyAtPiAtMVxuICB8IFNvbWUgYSwgU29tZSBiIC0+IGMgYSBiXG5cbmxldCByZWMgY29tcGFyZV9saXN0IGYgdCB0JyA9IG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBbXSwgICAgW10gICAgLT4gIDBcbiAgfCBfOjpfLCAgW10gICAgLT4gIDFcbiAgfCBbXSwgICAgXzo6XyAgLT4gLTFcbiAgfCB4Ojp4cywgeTo6eXMgLT5cbiAgICBtYXRjaCBmIHggeSB3aXRoIDAgLT4gY29tcGFyZV9saXN0IGYgeHMgeXMgfCBjIC0+IGNcblxuKCoqIFNhZmUgY2hhcmFjdGVycyB0aGF0IGFyZSBhbHdheXMgYWxsb3dlZCBpbiBhIFVSSVxuICAqIFVuZm9ydHVuYXRlbHksIHRoaXMgdmFyaWVzIGRlcGVuZGluZyBvbiB3aGljaCBiaXQgb2YgdGhlIFVSSVxuICAqIGlzIGJlaW5nIHBhcnNlZCwgc28gdGhlcmUgYXJlIG11bHRpcGxlIHZhcmlhbnRzIChhbmQgdGhpc1xuICAqIHNldCBpcyBwcm9iYWJseSBub3QgZXhoYXVzdGl2ZS4gVE9ETzogY2hlY2suXG4qKVxudHlwZSBzYWZlX2NoYXJzID0gYm9vbCBhcnJheVxuXG5tb2R1bGUgdHlwZSBTY2hlbWUgPSBzaWdcbiAgdmFsIHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCA6IGNvbXBvbmVudCAtPiBzYWZlX2NoYXJzXG4gIHZhbCBub3JtYWxpemVfaG9zdCA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGNhbm9uaWNhbGl6ZV9wb3J0IDogaW50IG9wdGlvbiAtPiBpbnQgb3B0aW9uXG4gIHZhbCBjYW5vbmljYWxpemVfcGF0aCA6IHN0cmluZyBsaXN0IC0+IHN0cmluZyBsaXN0XG5lbmRcblxubW9kdWxlIEdlbmVyaWMgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgbGV0IHN1Yl9kZWxpbXMgYSA9XG4gICAgbGV0IHN1YmQgPSBcIiEkJicoKSorLDs9XCIgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdWJkIC0gMSBkb1xuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgc3ViZC5baV0gaW5cbiAgICAgIGEuKGMpIDwtIHRydWVcbiAgICBkb25lO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFycyA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkubWFrZSAyNTYgZmFsc2UgaW5cbiAgICBsZXQgYWx3YXlzX3NhZmUgPVxuICAgICAgXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OV8uLX5cIiBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIGFsd2F5c19zYWZlIC0gMSBkb1xuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgYWx3YXlzX3NhZmUuW2ldIGluXG4gICAgICBhLihjKSA8LSB0cnVlXG4gICAgZG9uZTtcbiAgICBhXG5cbiAgbGV0IHBjaGFyIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBzdWJfZGVsaW1zIChBcnJheS5jb3B5IHNhZmVfY2hhcnMpIGluXG4gICAgYS4oQ2hhci5jb2RlICc6JykgPC0gdHJ1ZTtcbiAgICBhLihDaGFyLmNvZGUgJ0AnKSA8LSB0cnVlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3Jfc2NoZW1lIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnMgaW5cbiAgICBhLihDaGFyLmNvZGUgJysnKSA8LSB0cnVlO1xuICAgIGFcblxuICAoKiogU2FmZSBjaGFyYWN0ZXJzIGZvciB0aGUgcGF0aCBjb21wb25lbnQgb2YgYSBVUkkgKilcbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3BhdGggOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IHN1Yl9kZWxpbXMgKEFycmF5LmNvcHkgcGNoYXIpIGluXG4gICAgKCogZGVsaW1pdGVyOiBub24tc2VnbWVudCBkZWxpbWl0aW5nIHVzZXMgc2hvdWxkIGJlIHBjdCBlbmNvZGVkICopXG4gICAgYS4oQ2hhci5jb2RlICcvJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9xdWVyeSA6IHNhZmVfY2hhcnMgPVxuICAgICgqIFRPRE86IFdoYXQgYWJvdXQge1wiIVwiLFwiJFwiLFwiLFwifT8gU2VlIDxodHRwczovL2dpdGh1Yi5jb20vYXZzbS9vY2FtbC11cmkvY29tbWl0LzFlZjNmMWRmYjQxYmRiNGYzM2YyMjNmZmUxNmU2MmEzMzk3NTY2MWEjZGlmZi03NDBmMmRlNTNjOWViMzZlOTY3MGRkZmJkYjliYTkxNFIxNzE+ICopXG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHBjaGFyIGluXG4gICAgYS4oQ2hhci5jb2RlICcvJykgPC0gdHJ1ZTtcbiAgICBhLihDaGFyLmNvZGUgJz8nKSA8LSB0cnVlO1xuICAgICgqICcmJyBpcyBzYWZlIGJ1dCB3ZSBzaG91bGQgZW5jb2RlIGxpdGVyYWxzIHRvIGF2b2lkIGFtYmlndWl0eVxuICAgICAgIHdpdGggdGhlIGFscmVhZHkgcGFyc2VkIHFzIHBhcmFtcyAqKVxuICAgIGEuKENoYXIuY29kZSAnJicpIDwtIGZhbHNlO1xuICAgICgqICc7JyBpcyBzYWZlIGJ1dCBzb21lIHN5c3RlbXMgdHJlYXQgaXQgbGlrZSAnJicuICopXG4gICAgYS4oQ2hhci5jb2RlICc7JykgPC0gZmFsc2U7XG4gICAgYS4oQ2hhci5jb2RlICcrJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9xdWVyeV9rZXkgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFyc19mb3JfcXVlcnkgaW5cbiAgICBhLihDaGFyLmNvZGUgJz0nKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5IGluXG4gICAgYS4oQ2hhci5jb2RlICcsJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9mcmFnbWVudCA6IHNhZmVfY2hhcnMgPSBzYWZlX2NoYXJzX2Zvcl9xdWVyeVxuXG4gICgqKiBTYWZlIGNoYXJhY3RlcnMgZm9yIHRoZSB1c2VyaW5mbyBzdWJjb21wb25lbnQgb2YgYSBVUkkuXG4gICAgICBUT0RPOiB0aGlzIG5lZWRzIG1vcmUgcmVzZXJ2ZWQgY2hhcmFjdGVycyBhZGRlZCAqKVxuICBsZXQgc2FmZV9jaGFyc19mb3JfdXNlcmluZm8gOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFycyBpblxuICAgICgqIGRlbGltaXRlcjogbm9uLXNlZ21lbnQgZGVsaW1pdGluZyB1c2VzIHNob3VsZCBiZSBwY3QgZW5jb2RlZCAqKVxuICAgIGEuKENoYXIuY29kZSAnOicpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgcmVjIHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCA9IGZ1bmN0aW9uXG4gICAgfCBgUGF0aCAtPiBzYWZlX2NoYXJzX2Zvcl9wYXRoXG4gICAgfCBgVXNlcmluZm8gLT4gc2FmZV9jaGFyc19mb3JfdXNlcmluZm9cbiAgICB8IGBRdWVyeSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeVxuICAgIHwgYFF1ZXJ5X2tleSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeV9rZXlcbiAgICB8IGBRdWVyeV92YWx1ZSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeV92YWx1ZVxuICAgIHwgYEZyYWdtZW50IC0+IHNhZmVfY2hhcnNfZm9yX2ZyYWdtZW50XG4gICAgfCBgU2NoZW1lIC0+IHNhZmVfY2hhcnNfZm9yX3NjaGVtZVxuICAgIHwgYEN1c3RvbSAoKGNvbXBvbmVudCA6IGNvbXBvbmVudCksIHNhZmUsIHVuc2FmZSkgLT5cbiAgICAgICBsZXQgc2FmZV9jaGFycyA9IEFycmF5LmNvcHkgKHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCBjb21wb25lbnQpIGluXG4gICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc2FmZSAtIDEgZG9cbiAgICAgICAgIGxldCBjID0gQ2hhci5jb2RlIHNhZmUuW2ldIGluXG4gICAgICAgICBzYWZlX2NoYXJzLihjKSA8LSB0cnVlXG4gICAgICAgZG9uZTtcbiAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCB1bnNhZmUgLSAxIGRvXG4gICAgICAgICBsZXQgYyA9IENoYXIuY29kZSB1bnNhZmUuW2ldIGluXG4gICAgICAgICBzYWZlX2NoYXJzLihjKSA8LSBmYWxzZVxuICAgICAgIGRvbmU7XG4gICAgICAgc2FmZV9jaGFyc1xuICAgIHwgYEdlbmVyaWNcbiAgICB8IF8gLT4gc2FmZV9jaGFyc1xuXG4gIGxldCBub3JtYWxpemVfaG9zdCBoc28gPSBoc29cblxuICBsZXQgY2Fub25pY2FsaXplX3BvcnQgcG9ydCA9IHBvcnRcbiAgbGV0IGNhbm9uaWNhbGl6ZV9wYXRoIHBhdGggPSBwYXRoXG5lbmRcblxubW9kdWxlIEh0dHAgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgbGV0IG5vcm1hbGl6ZV9ob3N0IGhzID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBoc1xuXG4gIGxldCBjYW5vbmljYWxpemVfcG9ydCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgODAgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IFNvbWUgeFxuXG4gIGxldCBjYW5vbmljYWxpemVfcGF0aCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXCIvXCJdXG4gICAgfCB4ICAtPiB4XG5lbmRcblxubW9kdWxlIEh0dHBzIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgSHR0cFxuXG4gIGxldCBjYW5vbmljYWxpemVfcG9ydCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgNDQzIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBTb21lIHhcbmVuZFxuXG5tb2R1bGUgRmlsZSA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBsZXQgbm9ybWFsaXplX2hvc3QgaHMgPVxuICAgIGxldCBocyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaHMgaW5cbiAgICBpZiBocz1cImxvY2FsaG9zdFwiIHRoZW4gXCJcIiBlbHNlIGhzXG5lbmRcblxubW9kdWxlIFVybiA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuZW5kXG5cbmxldCBtb2R1bGVfb2Zfc2NoZW1lID0gZnVuY3Rpb25cbiAgfCBTb21lIHMgLT4gYmVnaW4gbWF0Y2ggU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzIHdpdGhcbiAgICAgIHwgXCJodHRwXCIgLT4gKG1vZHVsZSBIdHRwIDogU2NoZW1lKVxuICAgICAgfCBcImh0dHBzXCIgIC0+IChtb2R1bGUgSHR0cHMgOiBTY2hlbWUpXG4gICAgICB8IFwiZmlsZVwiIC0+IChtb2R1bGUgRmlsZSA6IFNjaGVtZSlcbiAgICAgIHwgXCJ1cm5cIiAgLT4gKG1vZHVsZSBVcm4gOiBTY2hlbWUpXG4gICAgICB8IF8gLT4gKG1vZHVsZSBHZW5lcmljIDogU2NoZW1lKVxuICAgIGVuZFxuICB8IE5vbmUgLT4gKG1vZHVsZSBHZW5lcmljIDogU2NoZW1lKVxuXG4oKiogUG9ydGlvbnMgb2YgdGhlIFVSTCBtdXN0IGJlIGNvbnZlcnRlZCB0by1hbmQtZnJvbSBwZXJjZW50LWVuY29kaW5nXG4gICogYW5kIHRoaXMgcmVhbGx5LCByZWFsbHkgc2hvdWxkbid0IGJlIG1peGVkIHVwLiBTbyB0aGlzIFBjdCBtb2R1bGVcbiAgKiBkZWZpbmVzIGFic3RyYWN0IFBjdC5lbmNvZGVkIGFuZCBQY3QuZGVjb2RlZCB0eXBlcyB3aGljaCBzZXRzIHRoZVxuICAqIHN0YXRlIG9mIHRoZSB1bmRlcmx5aW5nIHN0cmluZy4gIFRoZXJlIGFyZSBmdW5jdGlvbnMgdG8gXCJjYXN0XCIgdG9cbiAgKiBhbmQgZnJvbSB0aGVzZSBhbmQgbm9ybWFsIHN0cmluZ3MsIGFuZCB0aGlzIHByb21vdGVzIGEgYml0IG9mXG4gICogaW50ZXJuYWwgc2FmZXR5LiAgVGhlc2UgdHlwZXMgYXJlIG5vdCBleHBvc2VkIHRvIHRoZSBleHRlcm5hbFxuICAqIGludGVyZmFjZSwgYXMgY2FzdGluZyB0by1hbmQtZnJvbSBpcyBxdWl0ZSBhIGJpdCBvZiBoYXNzbGUgYW5kXG4gICogcHJvYmFibHkgbm90IGEgbG90IG9mIHVzZSB0byB0aGUgYXZlcmFnZSBjb25zdW1lciBvZiB0aGlzIGxpYnJhcnlcbiopXG5tb2R1bGUgUGN0IDogc2lnXG4gIHR5cGUgZW5jb2RlZFxuICB0eXBlIGRlY29kZWRcblxuICB2YWwgZW5jb2RlIDogP3NjaGVtZTpzdHJpbmcgLT4gP2NvbXBvbmVudDpjb21wb25lbnQgLT4gZGVjb2RlZCAtPiBlbmNvZGVkXG4gIHZhbCBkZWNvZGUgOiBlbmNvZGVkIC0+IGRlY29kZWRcblxuICAoKiBUaGUgZW1wdHkgZGVjb2RlZCBzdHJpbmcgKilcbiAgdmFsIGVtcHR5X2RlY29kZWQgOiBkZWNvZGVkXG4gICgqIElkZW50aXR5IGZ1bmN0aW9ucyBzbyB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgY2FzdCB3aGVuIHVzaW5nIHRoZW0gYmVsb3cgKilcbiAgdmFsIGNhc3RfZW5jb2RlZCA6IHN0cmluZyAtPiBlbmNvZGVkXG4gIHZhbCBjYXN0X2RlY29kZWQgOiBzdHJpbmcgLT4gZGVjb2RlZFxuICB2YWwgdW5jYXN0X2VuY29kZWQgOiBlbmNvZGVkIC0+IHN0cmluZ1xuICB2YWwgdW5jYXN0X2RlY29kZWQgOiBkZWNvZGVkIC0+IHN0cmluZ1xuICAoKiBMaWZ0IEhPRnMgZm9yIG1hcHMgb3ZlciBlbmNvZGluZ3MsIGRlY29kaW5ncywgYW5kIHN0cmluZ3MgKilcbiAgdmFsIGxpZnRfZW5jb2RlZCA6IChlbmNvZGVkIC0+IGVuY29kZWQpIC0+IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGxpZnRfZGVjb2RlZCA6IChkZWNvZGVkIC0+IGRlY29kZWQpIC0+IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIHVubGlmdF9lbmNvZGVkIDogKHN0cmluZyAtPiBzdHJpbmcpIC0+IGVuY29kZWQgLT4gZW5jb2RlZFxuICB2YWwgdW5saWZ0X2RlY29kZWQgOiAoc3RyaW5nIC0+IHN0cmluZykgLT4gZGVjb2RlZCAtPiBkZWNvZGVkXG4gIHZhbCB1bmxpZnRfZGVjb2RlZDIgOiAoc3RyaW5nIC0+IHN0cmluZyAtPiAnYSkgLT4gZGVjb2RlZCAtPiBkZWNvZGVkIC0+ICdhXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBlbmNvZGVkID0gc3RyaW5nXG4gIHR5cGUgZGVjb2RlZCA9IHN0cmluZ1xuICBsZXQgY2FzdF9lbmNvZGVkIHggPSB4XG4gIGxldCBjYXN0X2RlY29kZWQgeCA9IHhcbiAgbGV0IGVtcHR5X2RlY29kZWQgPSBcIlwiXG4gIGxldCB1bmNhc3RfZGVjb2RlZCB4ID0geFxuICBsZXQgdW5jYXN0X2VuY29kZWQgeCA9IHhcblxuICBsZXQgbGlmdF9lbmNvZGVkIGYgPSBmXG4gIGxldCBsaWZ0X2RlY29kZWQgZiA9IGZcbiAgbGV0IHVubGlmdF9lbmNvZGVkIGYgPSBmXG4gIGxldCB1bmxpZnRfZGVjb2RlZCBmID0gZlxuICBsZXQgdW5saWZ0X2RlY29kZWQyIGYgPSBmXG5cbiAgKCoqIFNjYW4gZm9yIHJlc2VydmVkIGNoYXJhY3RlcnMgYW5kIHJlcGxhY2UgdGhlbSB3aXRoXG4gICAgICBwZXJjZW50LWVuY29kZWQgZXF1aXZhbGVudHMuXG4gICAgICBAcmV0dXJuIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZyAqKVxuICBsZXQgZW5jb2RlID9zY2hlbWUgPyhjb21wb25lbnQ9YFBhdGgpIGIgPVxuICAgIGxldCBtb2R1bGUgU2NoZW1lID0gKHZhbCAobW9kdWxlX29mX3NjaGVtZSBzY2hlbWUpIDogU2NoZW1lKSBpblxuICAgIGxldCBzYWZlX2NoYXJzID0gU2NoZW1lLnNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCBjb21wb25lbnQgaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBiIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBzY2FuIHN0YXJ0IGN1ciA9XG4gICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydCk7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgYyA9IENoYXIuY29kZSBiLltjdXJdIGluXG4gICAgICAgIGlmIHNhZmVfY2hhcnMuKGMpIHRoZW5cbiAgICAgICAgICBzY2FuIHN0YXJ0IChjdXIrMSlcbiAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgIGlmIGN1ciA+IHN0YXJ0IHRoZW4gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydCk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQcmludGYuc3ByaW50ZiBcIiUlJTAyWFwiIGMpO1xuICAgICAgICAgIHNjYW4gKGN1cisxKSAoY3VyKzEpXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgaW5cbiAgICBzY2FuIDAgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IGludF9vZl9oZXhfY2hhciBjID1cbiAgICBsZXQgYyA9IGludF9vZl9jaGFyIChDaGFyLnVwcGVyY2FzZV9hc2NpaSBjKSAtIDQ4IGluXG4gICAgaWYgYyA+IDlcbiAgICB0aGVuIGlmIGMgPiAxNiAmJiBjIDwgMjNcbiAgICAgIHRoZW4gYyAtIDdcbiAgICAgIGVsc2UgZmFpbHdpdGggXCJpbnRfb2ZfaGV4X2NoYXJcIlxuICAgIGVsc2UgaWYgYyA+PSAwXG4gICAgdGhlbiBjXG4gICAgZWxzZSBmYWlsd2l0aCBcImludF9vZl9oZXhfY2hhclwiXG5cbiAgKCoqIFNjYW4gZm9yIHBlcmNlbnQtZW5jb2RpbmcgYW5kIGNvbnZlcnQgdGhlbSBpbnRvIEFTQ0lJLlxuICAgICAgQHJldHVybiBhIHBlcmNlbnQtZGVjb2RlZCBzdHJpbmcgKilcbiAgbGV0IGRlY29kZSBiID1cbiAgICAoKiBUT0RPOiBTaG91bGQgYm90aCBzdHJpY3QgYW5kIG5vbi1zdHJpY3QgdmVyc2lvbnMgYmUgZXhwb3NlZD8gKilcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBiIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBzY2FuIHN0YXJ0IGN1ciA9XG4gICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydClcbiAgICAgIGVsc2UgaWYgYi5bY3VyXSA9ICclJyB0aGVuIGJlZ2luXG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBiIHN0YXJ0IChjdXItc3RhcnQpO1xuICAgICAgICBsZXQgY3VyID0gY3VyICsgMSBpblxuICAgICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnJSdcbiAgICAgICAgZWxzZSBtYXRjaCBpbnRfb2ZfaGV4X2NoYXIgYi5bY3VyXSB3aXRoXG4gICAgICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICBzY2FuIGN1ciBjdXJcbiAgICAgICAgfCBoaWdoYml0cyAtPiBiZWdpblxuICAgICAgICAgIGxldCBjdXIgPSBjdXIgKyAxIGluXG4gICAgICAgICAgaWYgY3VyID49IGxlbiB0aGVuIGJlZ2luXG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgYi5bY3VyLTFdXG4gICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIGxldCBzdGFydF9hdCA9XG4gICAgICAgICAgICAgIG1hdGNoIGludF9vZl9oZXhfY2hhciBiLltjdXJdIHdpdGhcbiAgICAgICAgICAgICAgfCBsb3diaXRzIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgKGhpZ2hiaXRzIGxzbCA0ICsgbG93Yml0cykpO1xuICAgICAgICAgICAgICAgIGN1cisxXG4gICAgICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGIuW2N1ci0xXTtcbiAgICAgICAgICAgICAgICBjdXJcbiAgICAgICAgICAgIGluIHNjYW4gc3RhcnRfYXQgc3RhcnRfYXRcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBzY2FuIHN0YXJ0IChjdXIrMSlcbiAgICBpblxuICAgIHNjYW4gMCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbmVuZFxuXG4oKiBQZXJjZW50IGVuY29kZSBhIHN0cmluZyAqKVxubGV0IHBjdF9lbmNvZGUgP3NjaGVtZSA/KGNvbXBvbmVudD1gUGF0aCkgcyA9XG4gIFBjdC4odW5jYXN0X2VuY29kZWQgKGVuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgKGNhc3RfZGVjb2RlZCBzKSkpXG5cbmxldCBwY3RfZW5jb2RlclxuICAgICAgPyhzY2hlbWU9YFNjaGVtZSlcbiAgICAgID8odXNlcmluZm89YFVzZXJpbmZvKVxuICAgICAgPyhob3N0PWBIb3N0KVxuICAgICAgPyhwYXRoPWBQYXRoKVxuICAgICAgPyhxdWVyeV9rZXk9YFF1ZXJ5X2tleSlcbiAgICAgID8ocXVlcnlfdmFsdWU9YFF1ZXJ5X3ZhbHVlKVxuICAgICAgPyhmcmFnbWVudD1gRnJhZ21lbnQpXG4gICAgICAoKSA9XG4gIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcGF0aDsgcXVlcnlfa2V5OyBxdWVyeV92YWx1ZTsgZnJhZ21lbnQgfVxuXG4oKiBQZXJjZW50IGRlY29kZSBhIHN0cmluZyAqKVxubGV0IHBjdF9kZWNvZGUgcyA9IFBjdC4odW5jYXN0X2RlY29kZWQgKGRlY29kZSAoY2FzdF9lbmNvZGVkIHMpKSlcblxuKCogVXNlcmluZm8gc3RyaW5nIGhhbmRsaW5nLCB0byBhbmQgZnJvbSBhbiBpZCAqIGNyZWRlbnRpYWwgcGFpciAqKVxubW9kdWxlIFVzZXJpbmZvID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyAqIHN0cmluZyBvcHRpb25cblxuICBsZXQgY29tcGFyZSAodSxwKSAodScscCcpID1cbiAgICBtYXRjaCBTdHJpbmcuY29tcGFyZSB1IHUnIHdpdGhcbiAgICB8IDAgLT4gY29tcGFyZV9vcHQgU3RyaW5nLmNvbXBhcmUgcCBwJ1xuICAgIHwgYyAtPiBjXG5cbiAgbGV0IHVzZXJpbmZvX29mX2VuY29kZWQgdXMgPVxuICAgIG1hdGNoIFN0cmluZ2V4dC5zcGxpdCB+bWF4OjIgfm9uOic6JyB1cyB3aXRoXG4gICAgfCBbXSAtPiAoXCJcIixOb25lKVxuICAgIHwgW3VdIC0+IChwY3RfZGVjb2RlIHUsTm9uZSlcbiAgICB8IHU6OnA6Ol8gLT4gKHBjdF9kZWNvZGUgdSxTb21lIChwY3RfZGVjb2RlIHApKVxuXG4gIGxldCBlbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudCAodSxwbykgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcuKFxuICAgICAgMSArIChsZW5ndGggdSkgKyAobWF0Y2ggcG8gd2l0aCBOb25lIC0+IDAgfCBTb21lIHAgLT4gbGVuZ3RoIHApKVxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCB1KTtcbiAgICBiZWdpbiBtYXRjaCBwbyB3aXRoIE5vbmUgLT4gKCk7XG4gICAgfCBTb21lIHAgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJzonO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCBwKVxuICAgIGVuZDtcbiAgICBQY3QuY2FzdF9lbmNvZGVkIChCdWZmZXIuY29udGVudHMgYnVmKVxuZW5kXG5cbmxldCB1c2VyaW5mb19vZl9lbmNvZGVkID0gVXNlcmluZm8udXNlcmluZm9fb2ZfZW5jb2RlZFxubGV0IGVuY29kZWRfb2ZfdXNlcmluZm8gP3NjaGVtZSB+Y29tcG9uZW50ID0gVXNlcmluZm8uZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnRcblxuKCogUGF0aCBzdHJpbmcgaGFuZGxpbmcsIHRvIGFuZCBmcm9tIGEgbGlzdCBvZiBwYXRoIHRva2VucyAqKVxubW9kdWxlIFBhdGggPSBzdHJ1Y3RcbiAgKCogSW52YXJpYW50OiBldmVyeSBlbGVtZW50IGlzIG5vbi16ZXJvLCBzbGFzaGVzICgvKSBvbmx5IG9jY3VyIGFsb25lLiAqKVxuICAoKiBZZXMsIGl0J3MgYmV0dGVyIHRoaXMgd2F5LiBUaGlzIG1lYW5zIHlvdSBjYW4gcmV0YWluIHNlcGFyYXRvclxuICAgICBjb250ZXh0IGluIHJlY3Vyc2lvbiAoZS5nLiByZW1vdmVfZG90X3NlZ21lbnRzIGZvciByZWxhdGl2ZSByZXNvbHV0aW9uKS4gKilcblxuICB0eXBlIHQgPSBzdHJpbmcgbGlzdFxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZV9saXN0IFN0cmluZy5jb21wYXJlXG5cbiAgKCogTWFrZSBhIHBhdGggdG9rZW4gbGlzdCBmcm9tIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZyAqKVxuICBsZXQgcGF0aF9vZl9lbmNvZGVkIHBzID1cbiAgICBsZXQgdG9rbCA9IFN0cmluZ2V4dC5mdWxsX3NwbGl0IHBzIH5vbjonLycgaW5cbiAgICBMaXN0Lm1hcCBwY3RfZGVjb2RlIHRva2xcblxuICAoKiBTdWJyb3V0aW5lIGZvciByZXNvbHZlIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yLjQ+ICopXG4gIGxldCByZW1vdmVfZG90X3NlZ21lbnRzIHAgPVxuICAgIGxldCByZXZwID0gTGlzdC5yZXYgcCBpblxuICAgIGxldCByZWMgbG9vcCBhc2NlbnNpb24gb3V0cCA9IGZ1bmN0aW9uXG4gICAgICB8IFwiL1wiOjpcIi4uXCI6OnIgfCBcIi4uXCI6OnIgLT4gbG9vcCAoYXNjZW5zaW9uICsgMSkgb3V0cCByXG4gICAgICB8IFwiL1wiOjpcIi5cIjo6ciAgfCBcIi5cIjo6ciAgLT4gbG9vcCBhc2NlbnNpb24gb3V0cCByXG4gICAgICB8IFwiL1wiOjpbXSB8IFtdIHdoZW4gTGlzdC4obGVuZ3RoIHAgPiAwICYmIGhkIHAgPSBcIi9cIikgLT4gXCIvXCI6Om91dHBcbiAgICAgIHwgW10gd2hlbiBhc2NlbnNpb24gPiAwIC0+IExpc3QucmV2X2FwcGVuZFxuICAgICAgICAoXCIvXCI6OihyZXZfaW50ZXJqZWN0IFwiL1wiIEFycmF5Lih0b19saXN0IChtYWtlIGFzY2Vuc2lvbiBcIi4uXCIpKSkpIG91dHBcbiAgICAgIHwgW10gLT4gTGlzdC4oaWYgbGVuZ3RoIG91dHAgPiAwICYmIGhkIG91dHAgPSBcIi9cIiB0aGVuIHRsIG91dHAgZWxzZSBvdXRwKVxuICAgICAgfCBcIi9cIjo6XCIvXCI6OnIgd2hlbiBhc2NlbnNpb24gPiAwIC0+IGxvb3AgKGFzY2Vuc2lvbiAtIDEpIG91dHAgKFwiL1wiOjpyKVxuICAgICAgfCBcIi9cIjo6Xzo6ciB3aGVuIGFzY2Vuc2lvbiA+IDAgLT4gbG9vcCAoYXNjZW5zaW9uIC0gMSkgb3V0cCByXG4gICAgICB8IHM6OnIgLT4gbG9vcCAwIChzOjpvdXRwKSByXG4gICAgaW4gbG9vcCAwIFtdIHJldnBcblxuICBsZXQgZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudCBwID1cbiAgICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBjIHRvayAtPiBTdHJpbmcubGVuZ3RoIHRvayArIGMpIDAgcCBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIGl0ZXJfY29uY2F0IChmdW4gYnVmIC0+IGZ1bmN0aW9uXG4gICAgfCBcIi9cIiAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcvJ1xuICAgIHwgc2VnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgc2VnKVxuICAgICkgXCJcIiBidWYgcDtcbiAgICBQY3QuY2FzdF9lbmNvZGVkIChCdWZmZXIuY29udGVudHMgYnVmKVxuXG4gICgqIFN1YnJvdXRpbmUgZm9yIHJlc29sdmUgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIuMz4gKilcbiAgbGV0IG1lcmdlIGJob3N0IGJwYXRoIHJlbHBhdGggPVxuICAgIG1hdGNoIGJob3N0LCBMaXN0LnJldiBicGF0aCB3aXRoXG4gICAgfCBTb21lIF8sIFtdIC0+IFwiL1wiOjpyZWxwYXRoXG4gICAgfCBfLCAoXCIvXCI6OnJicGF0aCB8IF86OlwiL1wiOjpyYnBhdGgpIC0+IExpc3QucmV2X2FwcGVuZCAoXCIvXCI6OnJicGF0aCkgcmVscGF0aFxuICAgIHwgXywgXyAtPiByZWxwYXRoXG5lbmRcblxubGV0IHBhdGhfb2ZfZW5jb2RlZCA9IFBhdGgucGF0aF9vZl9lbmNvZGVkXG5sZXQgZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudCA9IFBhdGguZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudFxuXG4oKiBRdWVyeSBzdHJpbmcgaGFuZGxpbmcsIHRvIGFuZCBmcm9tIGFuIGFzc29jIGxpc3Qgb2Yga2V5L3ZhbHVlcyAqKVxubW9kdWxlIFF1ZXJ5ID0gc3RydWN0XG5cbiAgdHlwZSBrdiA9IChzdHJpbmcgKiBzdHJpbmcgbGlzdCkgbGlzdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBLViBvZiBrdlxuICAgIHwgUmF3IG9mIHN0cmluZyBvcHRpb24gKiBrdiBMYXp5LnRcblxuICBsZXQgY29tcGFyZSB4IHkgPSBtYXRjaCB4LCB5IHdpdGhcbiAgICB8IEtWIGt2bCwgS1Yga3ZsJ1xuICAgIHwgUmF3IChfLCBsYXp5IGt2bCksIEtWIGt2bCdcbiAgICB8IEtWIGt2bCwgUmF3IChfLCBsYXp5IGt2bCcpIC0+XG4gICAgICBjb21wYXJlX2xpc3QgKGZ1biAoayx2bCkgKGsnLHZsJykgLT5cbiAgICAgICAgbWF0Y2ggU3RyaW5nLmNvbXBhcmUgayBrJyB3aXRoXG4gICAgICAgIHwgMCAtPiBjb21wYXJlX2xpc3QgU3RyaW5nLmNvbXBhcmUgdmwgdmwnXG4gICAgICAgIHwgYyAtPiBjXG4gICAgICApIGt2bCBrdmwnXG4gICAgfCBSYXcgKHJhdyxfKSwgUmF3IChyYXcnLF8pIC0+IGNvbXBhcmVfb3B0IFN0cmluZy5jb21wYXJlIHJhdyByYXcnXG5cbiAgbGV0IGZpbmQgcSBrID0gdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBxKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHNwbGl0X3F1ZXJ5IHFzID1cbiAgICBsZXQgZWxzID0gU3RyaW5nZXh0LnNwbGl0IH5vbjonJicgcXMgaW5cbiAgICAoKiBSZXBsYWNlIGEgKyBpbiBhIHF1ZXJ5IHN0cmluZyB3aXRoIGEgc3BhY2UgaW4tcGxhY2UgKilcbiAgICBsZXQgcGx1c190b19zcGFjZSBzID1cbiAgICAgIGxldCBzID0gQnl0ZXMudW5zYWZlX29mX3N0cmluZyBzIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQnl0ZXMubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIGlmIEJ5dGVzLmdldCBzIGkgPSAnKycgdGhlbiBCeXRlcy5zZXQgcyBpICcgJ1xuICAgICAgZG9uZTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc1xuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IChrOjp2OjpfKTo6dGwgLT5cbiAgICAgICAgbGV0IG4gPSBwbHVzX3RvX3NwYWNlIGssXG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0cmluZ2V4dC5zcGxpdCB+b246JywnIChwbHVzX3RvX3NwYWNlIHYpIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBbXSAtPiBbXCJcIl0gfCBsIC0+IGwpIGluXG4gICAgICAgIGxvb3AgKG46OmFjYykgdGxcbiAgICAgIHwgW2tdOjp0bCAtPlxuICAgICAgICBsZXQgbiA9IHBsdXNfdG9fc3BhY2UgaywgW10gaW5cbiAgICAgICAgbG9vcCAobjo6YWNjKSB0bFxuICAgICAgfCBbXTo6dGwgLT4gbG9vcCAoKFwiXCIsIFtdKTo6YWNjKSB0bFxuICAgICAgfCBbXSAtPiBhY2NcbiAgICBpblxuICAgIG1hdGNoIGVscyB3aXRoXG4gICAgfCBbXSAgLT4gW1wiXCIsW11dXG4gICAgfCBlbHMgLT4gbG9vcCBbXVxuICAgICAgKExpc3QucmV2X21hcCAoZnVuIGVsIC0+IFN0cmluZ2V4dC5zcGxpdCB+b246Jz0nIGVsIH5tYXg6MikgZWxzKVxuXG4gICgqIE1ha2UgYSBxdWVyeSB0dXBsZSBsaXN0IGZyb20gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nICopXG4gIGxldCBxdWVyeV9vZl9lbmNvZGVkIHFzID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAoaywgdikgLT4gKHBjdF9kZWNvZGUgaywgTGlzdC5tYXAgcGN0X2RlY29kZSB2KSlcbiAgICAgIChzcGxpdF9xdWVyeSBxcylcblxuICAoKiBBc3NlbWJsZSBhIHF1ZXJ5IHN0cmluZyBzdWl0YWJsZSBmb3IgcHV0dGluZyBpbnRvIGEgVVJJLlxuICAgKiBUdXBsZSBpbnB1dHMgYXJlIHBlcmNlbnQgZGVjb2RlZCBhbmQgd2lsbCBiZSBlbmNvZGVkIGJ5XG4gICAqIHRoaXMgZnVuY3Rpb24uXG4gICopXG4gIGxldCBlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgbCA9XG4gICAgbGV0IGxlbiA9IExpc3QuZm9sZF9sZWZ0IChmdW4gYSAoayx2KSAtPlxuICAgICAgICBhICsgKFN0cmluZy5sZW5ndGggaylcbiAgICAgICAgKyAoTGlzdC5mb2xkX2xlZnQgKGZ1biBhIHMgLT4gYSsoU3RyaW5nLmxlbmd0aCBzKSsxKSAwIHYpICsgMikgKC0xKSBsIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgaXRlcl9jb25jYXQgKGZ1biBidWYgKGssdikgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5xdWVyeV9rZXkgayk7XG4gICAgICAgIGlmIHYgPD4gW10gdGhlbiAoXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnPSc7XG4gICAgICAgICAgaXRlcl9jb25jYXQgKGZ1biBidWYgcyAtPlxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZcbiAgICAgICAgICAgICAgICAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucXVlcnlfdmFsdWUgcylcbiAgICAgICAgICAgICkgXCIsXCIgYnVmIHYpXG4gICAgICApIFwiJlwiIGJ1ZiBsO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgb2ZfcmF3IHFzID1cbiAgICBsZXQgbGF6eV9xdWVyeSA9IExhenkuZnJvbV9mdW4gKGZ1biAoKSAtPiBxdWVyeV9vZl9lbmNvZGVkIHFzKSBpblxuICAgIFJhdyAoU29tZSBxcywgbGF6eV9xdWVyeSlcblxuICBsZXQga3YgPSBmdW5jdGlvbiBSYXcgKF8sIGxhenkga3YpIHwgS1Yga3YgLT4ga3ZcbmVuZFxuXG5sZXQgcXVlcnlfb2ZfZW5jb2RlZCA9IFF1ZXJ5LnF1ZXJ5X29mX2VuY29kZWRcbmxldCBlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgPSBRdWVyeS5lbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWVcblxuKCogVHlwZSBvZiB0aGUgVVJJLCB3aXRoIG1vc3QgYml0cyBiZWluZyBvcHRpb25hbCAqKVxudHlwZSB0ID0ge1xuICBzY2hlbWU6IFBjdC5kZWNvZGVkIG9wdGlvbjtcbiAgdXNlcmluZm86IFVzZXJpbmZvLnQgb3B0aW9uO1xuICBob3N0OiBbIGBJcHY0X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgIHwgYElwdjZfbGl0ZXJhbCBvZiBzdHJpbmdcbiAgICAgICAgfCBgSG9zdCBvZiBQY3QuZGVjb2RlZF0gb3B0aW9uIDtcbiAgcG9ydDogaW50IG9wdGlvbjtcbiAgcGF0aDogUGF0aC50O1xuICBxdWVyeTogUXVlcnkudDtcbiAgZnJhZ21lbnQ6IFBjdC5kZWNvZGVkIG9wdGlvbjtcbn1cblxubGV0IGVtcHR5ID0ge1xuICBzY2hlbWUgPSBOb25lO1xuICB1c2VyaW5mbyA9IE5vbmU7XG4gIGhvc3QgPSBOb25lO1xuICBwb3J0ID0gTm9uZTtcbiAgcGF0aCA9IFtdO1xuICBxdWVyeSA9IFF1ZXJ5LlJhdyAoTm9uZSwgTGF6eS5mcm9tX3ZhbCBbXSk7XG4gIGZyYWdtZW50ID0gTm9uZTtcbn1cblxubGV0IGNvbXBhcmVfZGVjb2RlZCA9IFBjdC51bmxpZnRfZGVjb2RlZDIgU3RyaW5nLmNvbXBhcmVcbmxldCBjb21wYXJlX2RlY29kZWRfb3B0ID0gY29tcGFyZV9vcHQgY29tcGFyZV9kZWNvZGVkXG5sZXQgY29tcGFyZV9ob3N0IGgxIGgyID1cbiAgbWF0Y2ggaDEsIGgyIHdpdGhcbiAgfCBgSXB2NF9saXRlcmFsIGlwMSwgYElwdjRfbGl0ZXJhbCBpcDIgLT4gU3RyaW5nLmNvbXBhcmUgaXAxIGlwMlxuICB8IGBJcHY2X2xpdGVyYWwgaXAxLCBgSXB2Nl9saXRlcmFsIGlwMiAtPiBTdHJpbmcuY29tcGFyZSBpcDEgaXAyXG4gIHwgYEhvc3QgaDEsIGBIb3N0IGgyIC0+IGNvbXBhcmVfZGVjb2RlZCBoMSBoMlxuICB8IF8gLT4gLTFcbmxldCBjb21wYXJlX2hvc3Rfb3B0ID0gY29tcGFyZV9vcHQgY29tcGFyZV9ob3N0XG5cbmxldCBjb21wYXJlIHQgdCcgPVxuICAobWF0Y2ggY29tcGFyZV9ob3N0X29wdCB0Lmhvc3QgdCcuaG9zdCB3aXRoXG4gIHwgMCAtPiAobWF0Y2ggY29tcGFyZV9kZWNvZGVkX29wdCB0LnNjaGVtZSB0Jy5zY2hlbWUgd2l0aFxuICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZV9vcHQgKGZ1biBwIHAnIC0+XG4gICAgICBpZiBwIDwgcCcgdGhlbiAtMSBlbHNlIGlmIHAgPiBwJyB0aGVuIDEgZWxzZSAwXG4gICAgKSB0LnBvcnQgdCcucG9ydCB3aXRoXG4gICAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmVfb3B0IFVzZXJpbmZvLmNvbXBhcmUgdC51c2VyaW5mbyB0Jy51c2VyaW5mbyB3aXRoXG4gICAgICAgIHwgMCAtPiAobWF0Y2ggUGF0aC5jb21wYXJlIHQucGF0aCB0Jy5wYXRoIHdpdGhcbiAgICAgICAgICB8IDAgLT4gKG1hdGNoIFF1ZXJ5LmNvbXBhcmUgdC5xdWVyeSB0Jy5xdWVyeSB3aXRoXG4gICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9kZWNvZGVkX29wdCB0LmZyYWdtZW50IHQnLmZyYWdtZW50XG4gICAgICAgICAgICB8IGMgLT4gYylcbiAgICAgICAgICB8IGMgLT4gYylcbiAgICAgICAgfCBjIC0+IGMpXG4gICAgICB8IGMgLT4gYylcbiAgICB8IGMgLT4gYylcbiAgfCBjIC0+IGMpXG5cbmxldCBlcXVhbCB0IHQnID0gY29tcGFyZSB0IHQnID0gMFxuXG5sZXQgdW5jYXN0X29wdCA9IGZ1bmN0aW9uXG4gIHwgU29tZSBoIC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCBoKVxuICB8IE5vbmUgLT4gTm9uZVxuXG5sZXQgbm9ybWFsaXplIHNjaGVtIHVyaSA9XG4gIGxldCBtb2R1bGUgU2NoZW1lID1cbiAgICAodmFsIChtb2R1bGVfb2Zfc2NoZW1lICh1bmNhc3Rfb3B0IHNjaGVtKSkgOiBTY2hlbWUpIGluXG4gIGxldCBkb2IgZiA9IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT4gU29tZSAoUGN0LnVubGlmdF9kZWNvZGVkIGYgeClcbiAgICB8IE5vbmUgLT4gTm9uZVxuICBpbiB7dXJpIHdpdGhcbiAgICAgIHNjaGVtZT1kb2IgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSB1cmkuc2NoZW1lO1xuICAgICAgaG9zdD0gbWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICAgICAgIHwgU29tZSAoYElwdjRfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgU29tZSAoYElwdjRfbGl0ZXJhbCAoU2NoZW1lLm5vcm1hbGl6ZV9ob3N0IGhvc3QpKVxuICAgICAgIHwgU29tZSAoYElwdjZfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgU29tZSAoYElwdjZfbGl0ZXJhbCAoU2NoZW1lLm5vcm1hbGl6ZV9ob3N0IGhvc3QpKVxuICAgICAgIHwgU29tZSAoYEhvc3QgaG9zdCkgLT5cbiAgICAgICAgIFNvbWUgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIChTY2hlbWUubm9ybWFsaXplX2hvc3QgKFBjdC51bmNhc3RfZGVjb2RlZCBob3N0KSkpKVxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgIH1cblxuKCoqIENvbnZlcnQgYSBVUkkgc3RydWN0dXJlIGludG8gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nXG4gICAgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjM+XG4qKVxubGV0IHRvX3N0cmluZyA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPVxuICBsZXQgc2NoZW1lID0gbWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIHMpXG4gICAgfCBOb25lIC0+IE5vbmUgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gICgqIFBlcmNlbnQgZW5jb2RlIGEgZGVjb2RlZCBzdHJpbmcgYW5kIGFkZCBpdCB0byB0aGUgYnVmZmVyICopXG4gIGxldCBhZGRfcGN0X3N0cmluZyA/KGNvbXBvbmVudD1gUGF0aCkgeCA9XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQY3QudW5jYXN0X2VuY29kZWQgKFBjdC5lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHgpKVxuICBpblxuICAobWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICB8Tm9uZSAtPiAoKVxuICAgfFNvbWUgeCAtPlxuICAgICBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnNjaGVtZSB4O1xuICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc6J1xuICApO1xuICAoKiBVUkkgaGFzIGEgaG9zdCBpZiBhbnkgaG9zdC1yZWxhdGVkIGNvbXBvbmVudCBpcyBzZXQuIERlZmF1bHRzIHRvIFwiXCIuICopXG4gIGlmIChtYXRjaCB1cmkudXNlcmluZm8sIHVyaS5ob3N0LCB1cmkucG9ydCB3aXRoXG4gIHwgU29tZSBfLCBfLCBfIHwgXywgU29tZSBfLCBfIHwgXywgXywgU29tZSBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIi8vXCI7XG4gIChtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSB1c2VyaW5mbyAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZlxuICAgICAgKFBjdC51bmNhc3RfZW5jb2RlZCAoZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIudXNlcmluZm8gdXNlcmluZm8pKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdAJ1xuICApO1xuICAobWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSAoYEhvc3QgaG9zdCkgLT5cbiAgICBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLmhvc3QgaG9zdDtcbiAgfFNvbWUgKGBJcHY0X2xpdGVyYWwgaG9zdCkgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIGhvc3RcbiAgfFNvbWUgKGBJcHY2X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1snO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIGhvc3Q7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICddJ1xuICApO1xuICAobWF0Y2ggdXJpLnBvcnQgd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSBwb3J0IC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnOic7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChzdHJpbmdfb2ZfaW50IHBvcnQpXG4gICk7XG4gIChtYXRjaCB1cmkucGF0aCB3aXRoICgqIEhhbmRsZSByZWxhdGl2ZSBwYXRocyBjb3JyZWN0bHkgKilcbiAgfCBbXSAtPiAoKVxuICB8IFwiL1wiOjpfIC0+XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQY3QudW5jYXN0X2VuY29kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnBhdGggdXJpLnBhdGgpKVxuICB8IGZpcnN0X3NlZ21lbnQ6Ol8gLT5cbiAgICAobWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICAgICB8IFNvbWUgXyAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcvJ1xuICAgICB8IE5vbmUgLT5cbiAgICAgICAoKiBlbnN1cmUgcm91bmR0cmlwIGJ5IGZvcmNpbmcgcmVsYXRpdmUgcGF0aCBpbnRlcnByZXRhdGlvbiBub3Qgc2NoZW1lICopXG4gICAgICAgbWF0Y2ggU3RyaW5nZXh0LmZpbmRfZnJvbSBmaXJzdF9zZWdtZW50IH5wYXR0ZXJuOlwiOlwiIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICB8IFNvbWUgXyAtPiBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgIHwgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIuL1wiXG4gICAgKTtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZcbiAgICAgIChQY3QudW5jYXN0X2VuY29kZWQgKGVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aCkpXG4gICk7XG4gIFF1ZXJ5LihtYXRjaCB1cmkucXVlcnkgd2l0aFxuICAgIHwgUmF3IChOb25lLF8pIHwgS1YgW10gLT4gKClcbiAgICB8IFJhdyAoXyxsYXp5IHEpIHwgS1YgcSAtPiAoKiBub3JtYWxpemUgZS5nLiBwZXJjZW50IGNhcGl0YWxpemF0aW9uICopXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc/JztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lIH5wY3RfZW5jb2RlciBxKVxuICApO1xuICAobWF0Y2ggdXJpLmZyYWdtZW50IHdpdGhcbiAgIHxOb25lIC0+ICgpXG4gICB8U29tZSBmIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJyMnOyBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLmZyYWdtZW50IGZcbiAgKTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4oKiBWYXJpb3VzIGFjY2Vzc29yIGZ1bmN0aW9ucywgYXMgdGhlIGV4dGVybmFsIHVyaSB0eXBlIGlzIGFic3RyYWN0ICAqKVxubGV0IGdldF9kZWNvZGVkX29wdCA9IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8U29tZSB4IC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCB4KVxubGV0IHNjaGVtZSB1cmkgPSBnZXRfZGVjb2RlZF9vcHQgdXJpLnNjaGVtZVxubGV0IHdpdGhfc2NoZW1lIHVyaSA9XG4gIGZ1bmN0aW9uXG4gIHxTb21lIHNjaGVtZSAtPiB7IHVyaSB3aXRoIHNjaGVtZT1Tb21lIChQY3QuY2FzdF9kZWNvZGVkIHNjaGVtZSkgfVxuICB8Tm9uZSAtPiB7IHVyaSB3aXRoIHNjaGVtZT1Ob25lIH1cblxubGV0IGhvc3QgdXJpID1cbiAgbWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGBJcHY0X2xpdGVyYWwgaCB8IGBJcHY2X2xpdGVyYWwgaCkgLT4gU29tZSBoXG4gIHwgU29tZSAoYEhvc3QgaCkgLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIGgpXG5cbmxldCBob3N0X3dpdGhfZGVmYXVsdCA/KGRlZmF1bHQ9XCJsb2NhbGhvc3RcIikgdXJpID1cbiAgbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICB8Tm9uZSAtPiBkZWZhdWx0XG4gIHxTb21lIGggLT4gaFxuXG5sZXQgdXNlcmluZm8gPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgdXJpID0gbWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHVzZXJpbmZvIC0+IFNvbWUgKFBjdC51bmNhc3RfZW5jb2RlZCAobWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICAgfCBOb25lIC0+IGVuY29kZWRfb2ZfdXNlcmluZm8gfmNvbXBvbmVudDpwY3RfZW5jb2Rlci51c2VyaW5mbyB1c2VyaW5mb1xuICAgIHwgU29tZSBzIC0+IGVuY29kZWRfb2ZfdXNlcmluZm8gfnNjaGVtZTooUGN0LnVuY2FzdF9kZWNvZGVkIHMpIH5jb21wb25lbnQ6cGN0X2VuY29kZXIudXNlcmluZm8gdXNlcmluZm8pKVxubGV0IHdpdGhfdXNlcmluZm8gdXJpIHVzZXJpbmZvID1cbiAgbGV0IHVzZXJpbmZvID0gbWF0Y2ggdXNlcmluZm8gd2l0aFxuICAgIHwgU29tZSB1IC0+IFNvbWUgKHVzZXJpbmZvX29mX2VuY29kZWQgdSlcbiAgICB8IE5vbmUgLT4gTm9uZVxuICBpblxuICBtYXRjaCBob3N0IHVyaSB3aXRoXG4gIHwgTm9uZSAtPiB7IHVyaSB3aXRoIGhvc3Q9U29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgXCJcIikpOyB1c2VyaW5mbz11c2VyaW5mbyB9XG4gIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggdXNlcmluZm89dXNlcmluZm8gfVxuXG5sZXQgdXNlciB1cmkgPSBtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKHVzZXIsIF8pIC0+IFNvbWUgdXNlclxuXG5sZXQgcGFzc3dvcmQgdXJpID0gbWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfCBOb25lIHwgU29tZSAoXywgTm9uZSkgLT4gTm9uZVxuICB8IFNvbWUgKF8sIFNvbWUgcGFzcykgLT4gU29tZSBwYXNzXG5sZXQgd2l0aF9wYXNzd29yZCB1cmkgcGFzc3dvcmQgPVxuICBsZXQgcmVzdWx0IHVzZXJpbmZvID0gbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICAgIHwgTm9uZSAtPiB7IHVyaSB3aXRoIGhvc3Q9U29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgXCJcIikpOyB1c2VyaW5mbz11c2VyaW5mbyB9XG4gICAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCB1c2VyaW5mbz11c2VyaW5mbyB9XG4gIGluXG4gIG1hdGNoIHVyaS51c2VyaW5mbywgcGFzc3dvcmQgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gdXJpXG4gIHwgTm9uZSwgU29tZSBfIC0+IHJlc3VsdCAoU29tZSAoXCJcIixwYXNzd29yZCkpXG4gIHwgU29tZSAodXNlcixfKSwgXyAtPiByZXN1bHQgKFNvbWUgKHVzZXIsIHBhc3N3b3JkKSlcblxubGV0IHBvcnQgdXJpID0gdXJpLnBvcnRcbmxldCB3aXRoX3BvcnQgdXJpIHBvcnQgPVxuICBtYXRjaCBob3N0IHVyaSB3aXRoXG4gIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggcG9ydD1wb3J0IH1cbiAgfCBOb25lIC0+IGJlZ2luXG4gICAgIG1hdGNoIHBvcnQgd2l0aFxuICAgICB8IE5vbmUgLT4geyB1cmkgd2l0aCBob3N0PU5vbmU7IHBvcnQ9Tm9uZSB9XG4gICAgIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggaG9zdD1Tb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBcIlwiKSk7IHBvcnQ9cG9ydCB9XG4gIGVuZFxuXG4oKiBSZXR1cm4gdGhlIHBhdGggY29tcG9uZW50ICopXG5sZXQgcGF0aCA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPSBQY3QudW5jYXN0X2VuY29kZWQgKG1hdGNoIHVyaS5zY2hlbWUgd2l0aFxuICB8IE5vbmUgLT4gZW5jb2RlZF9vZl9wYXRoIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aFxuICB8IFNvbWUgcyAtPiBlbmNvZGVkX29mX3BhdGggfnNjaGVtZTooUGN0LnVuY2FzdF9kZWNvZGVkIHMpIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aClcbmxldCB3aXRoX3BhdGggdXJpIHBhdGggPVxuICBsZXQgcGF0aCA9IHBhdGhfb2ZfZW5jb2RlZCBwYXRoIGluXG4gIG1hdGNoIGhvc3QgdXJpLCBwYXRoIHdpdGhcbiAgfCBOb25lLCBfIHwgU29tZSBfLCBcIi9cIjo6XyB8IFNvbWUgXywgW10gLT4geyB1cmkgd2l0aCBwYXRoPXBhdGggfVxuICB8IFNvbWUgXywgXyAgLT4geyB1cmkgd2l0aCBwYXRoPVwiL1wiOjpwYXRoIH1cblxubGV0IGZyYWdtZW50IHVyaSA9IGdldF9kZWNvZGVkX29wdCB1cmkuZnJhZ21lbnRcbmxldCB3aXRoX2ZyYWdtZW50IHVyaSA9XG4gIGZ1bmN0aW9uXG4gIHxOb25lIC0+IHsgdXJpIHdpdGggZnJhZ21lbnQ9Tm9uZSB9XG4gIHxTb21lIGZyYWcgLT4geyB1cmkgd2l0aCBmcmFnbWVudD1Tb21lIChQY3QuY2FzdF9kZWNvZGVkIGZyYWcpIH1cblxubGV0IHF1ZXJ5IHVyaSA9IFF1ZXJ5Lmt2IHVyaS5xdWVyeVxubGV0IHZlcmJhdGltX3F1ZXJ5ID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9IFF1ZXJ5LihtYXRjaCB1cmkucXVlcnkgd2l0aFxuICB8IFJhdyAocXMsXykgLT4gcXNcbiAgfCBLViBbXSAtPiBOb25lXG4gIHwgS1Yga3YgLT4gU29tZSAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lOihzY2hlbWUgdXJpKSB+cGN0X2VuY29kZXIga3YpXG4pXG5sZXQgZ2V0X3F1ZXJ5X3BhcmFtJyB1cmkgayA9IFF1ZXJ5LihmaW5kIChrdiB1cmkucXVlcnkpIGspXG5sZXQgZ2V0X3F1ZXJ5X3BhcmFtIHVyaSBrID1cbiAgbWF0Y2ggZ2V0X3F1ZXJ5X3BhcmFtJyB1cmkgayB3aXRoXG4gIHxOb25lIC0+IE5vbmVcbiAgfFNvbWUgdiAtPiBTb21lIChTdHJpbmcuY29uY2F0IFwiLFwiIHYpXG5cbmxldCB3aXRoX3F1ZXJ5IHVyaSBxdWVyeSA9IHsgdXJpIHdpdGggcXVlcnk9UXVlcnkuS1YgcXVlcnkgfVxubGV0IHFfcyBxID0gTGlzdC5tYXAgKGZ1biAoayx2KSAtPiBrLFt2XSkgcVxubGV0IHdpdGhfcXVlcnknIHVyaSBxdWVyeSA9IHdpdGhfcXVlcnkgdXJpIChxX3MgcXVlcnkpXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtIHVyaSBwID0gUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKHA6OihrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbScgdXJpIChrLHYpID1cbiAgUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKChrLFt2XSk6OihrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbXMgdXJpIHBzID0gUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKHBzQChrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbXMnIHVyaSBwcyA9XG4gIFF1ZXJ5Lih7IHVyaSB3aXRoIHF1ZXJ5PUtWICgocV9zIHBzKUAoa3YgdXJpLnF1ZXJ5KSkgfSlcbmxldCByZW1vdmVfcXVlcnlfcGFyYW0gdXJpIGsgPSBRdWVyeS4oXG4gIHsgdXJpIHdpdGggcXVlcnk9S1YgKExpc3QuZmlsdGVyIChmdW4gKGsnLF8pIC0+IGs8PmsnKSAoa3YgdXJpLnF1ZXJ5KSkgfVxuKVxuXG4oKiBDb25zdHJ1Y3QgZW5jb2RlZCBwYXRoIGFuZCBxdWVyeSBjb21wb25lbnRzICopXG5sZXQgcGF0aF9hbmRfcXVlcnkgdXJpID1cbiAgbWF0Y2ggKHBhdGggdXJpKSwgKHF1ZXJ5IHVyaSkgd2l0aFxuICB8XCJcIiwgW10gLT4gXCIvXCIgKCogVE9ETzogV2hhdCBhYm91dCBzYW1lIGRvY3VtZW50PyAoLykgKilcbiAgfFwiXCIsIHEgLT4gKCogVE9ETzogV2hhdCBhYm91dCBzYW1lIGRvY3VtZW50PyAoLykgKilcbiAgICBsZXQgc2NoZW1lID0gdW5jYXN0X29wdCB1cmkuc2NoZW1lIGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIvPyVzXCIgKGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSBxKVxuICB8cCwgW10gLT4gcFxuICB8cCwgcSAtPlxuICAgIGxldCBzY2hlbWUgPSB1bmNhc3Rfb3B0IHVyaS5zY2hlbWUgaW5cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzPyVzXCIgcCAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lIHEpXG5cbigqIFRPRE86IGZ1bmN0aW9ucyB0byBhZGQgYW5kIHJlbW92ZSBmcm9tIGEgVVJJICopXG5cbigqIFJlc29sdmUgYSBVUkkgd3J0IGEgYmFzZSBVUkkgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjI+ICopXG5sZXQgcmVzb2x2ZSBzY2hlbSBiYXNlIHVyaSA9XG4gIGxldCBzY2hlbSA9IFNvbWUgKFBjdC5jYXN0X2RlY29kZWQgKG1hdGNoIHNjaGVtZSBiYXNlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAgc2NoZW1cbiAgICAgIHwgU29tZSBzY2hlbWUgLT4gc2NoZW1lXG4gICAgKSkgaW5cbiAgbm9ybWFsaXplIHNjaGVtXG4gICAgUGF0aC4obWF0Y2ggc2NoZW1lIHVyaSwgdXNlcmluZm8gdXJpLCBob3N0IHVyaSB3aXRoXG4gICAgfCBTb21lIF8sIF8sIF8gLT5cbiAgICAgIHt1cmkgd2l0aCBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgdXJpLnBhdGh9XG4gICAgfCBOb25lLCBTb21lIF8sIF9cbiAgICB8IE5vbmUsIF8sIFNvbWUgXyAtPlxuICAgICAge3VyaSB3aXRoIHNjaGVtZT1iYXNlLnNjaGVtZTsgcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIHVyaS5wYXRofVxuICAgIHwgTm9uZSwgTm9uZSwgTm9uZSAtPlxuICAgICAgbGV0IHVyaSA9IHt1cmkgd2l0aCBzY2hlbWU9YmFzZS5zY2hlbWU7IHVzZXJpbmZvPWJhc2UudXNlcmluZm87XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9YmFzZS5ob3N0OyBwb3J0PWJhc2UucG9ydH0gaW5cbiAgICAgIGxldCBwYXRoX3N0ciA9IHBhdGggdXJpIGluXG4gICAgICBpZiBwYXRoX3N0cj1cIlwiXG4gICAgICB0aGVuIHsgdXJpIHdpdGhcbiAgICAgICAgICAgICBwYXRoPWJhc2UucGF0aDtcbiAgICAgICAgICAgICBxdWVyeT1tYXRjaCB1cmkucXVlcnkgd2l0aFxuICAgICAgICAgICAgICAgfCBRdWVyeS5SYXcgKE5vbmUsXykgfCBRdWVyeS5LViBbXSAtPiBiYXNlLnF1ZXJ5XG4gICAgICAgICAgICAgICB8IF8gLT4gdXJpLnF1ZXJ5XG4gICAgICAgICAgIH1cbiAgICAgIGVsc2UgaWYgcGF0aF9zdHIuWzBdPScvJ1xuICAgICAgdGhlbiB7dXJpIHdpdGggcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIHVyaS5wYXRofVxuICAgICAgZWxzZSB7dXJpIHdpdGhcbiAgICAgICAgcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIChtZXJnZSBiYXNlLmhvc3QgYmFzZS5wYXRoIHVyaS5wYXRoKTtcbiAgICAgIH1cbiAgICApXG5cbmxldCBjYW5vbmljYWxpemUgdXJpID1cbiAgbGV0IHVyaSA9IHJlc29sdmUgXCJcIiBlbXB0eSB1cmkgaW5cbiAgbGV0IG1vZHVsZSBTY2hlbWUgPVxuICAgICh2YWwgKG1vZHVsZV9vZl9zY2hlbWUgKHVuY2FzdF9vcHQgdXJpLnNjaGVtZSkpIDogU2NoZW1lKSBpblxuICB7IHVyaSB3aXRoXG4gICAgcG9ydD1TY2hlbWUuY2Fub25pY2FsaXplX3BvcnQgdXJpLnBvcnQ7XG4gICAgcGF0aD1TY2hlbWUuY2Fub25pY2FsaXplX3BhdGggdXJpLnBhdGg7XG4gIH1cblxubGV0IHBwIHBwZiB1cmkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAodG9fc3RyaW5nIHVyaSlcbmxldCBwcF9odW0gcHBmIHVyaSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmcgdXJpKVxuXG5tb2R1bGUgUGFyc2VyID0gc3RydWN0XG4gIG9wZW4gQW5nc3Ryb21cblxuICBsZXQgc3RyaW5nX29mX2NoYXIgPSBTdHJpbmcubWFrZSAxXG5cbiAgbGV0IHN0cmluZ19vZl9jaGFyX2xpc3QgY2hhcnMgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2NoYXIgY2hhcnMpXG5cbiAgbGV0IHNjaGVtZSA9XG4gICAgbGlmdFxuICAgICAgKGZ1biBzIC0+IFNvbWUgKFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcykpKVxuICAgICAgKHRha2Vfd2hpbGUgKGZ1biBjIC0+IGMgPD4gJzonICYmIGMgPD4gJy8nICYmIGMgPD4gJz8nICYmIGMgPD4gJyMnKVxuICAgICAgPCogY2hhciAnOicpXG4gICAgPHw+IHJldHVybiBOb25lXG5cbiAgbGV0IGlzX2RpZ2l0ID0gZnVuY3Rpb24gJzAnIC4uICc5JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBoZXhfZGlnaXQgPVxuICAgIHNhdGlzZnkgKGZ1bmN0aW9uXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgaGV4YWRlY2ltYWwgPSBsaWZ0IHN0cmluZ19vZl9jaGFyX2xpc3QgKG1hbnkgaGV4X2RpZ2l0KVxuXG4gIGxldCBjX2RvdCA9IGNoYXIgJy4nXG5cbiAgbGV0IGNfYXQgPSBjaGFyICdAJ1xuXG4gIGxldCBjX2NvbG9uID0gY2hhciAnOidcblxuICBsZXQgZGVjX29jdGV0ID1cbiAgICB0YWtlX3doaWxlMSAoZnVuY3Rpb24gJzAnIC4uICc5JyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgPj49IGZ1biBudW0gLT5cbiAgICBpZiBpbnRfb2Zfc3RyaW5nIG51bSA8IDI1NiB0aGVuXG4gICAgICByZXR1cm4gbnVtXG4gICAgZWxzZVxuICAgICAgZmFpbCBcImludmFsaWQgb2N0ZWN0XCJcblxuICBsZXQgaXB2NF9hZGRyZXNzID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biB0aHJlZSBvbmUgLT4gU3RyaW5nLmNvbmNhdCBcIi5cIiB0aHJlZSBeIFwiLlwiIF4gb25lKVxuICAgICAgKGNvdW50IDMgKGRlY19vY3RldCA8KiBjX2RvdCkpXG4gICAgICBkZWNfb2N0ZXRcblxuICAoKiAtLSBhZnRlciBkb3VibGUgY29sb24sIElQdjQgZG90dGVkIG5vdGF0aW9uIGNvdWxkIGFwcGVhciBhbnl3aGVyZSAqKVxuICBsZXQgYWZ0ZXJfZG91YmxlX2NvbG9uID1cbiAgICBmaXggKGZ1biBmIC0+XG4gICAgICAgIGxpc3QgWyBpcHY0X2FkZHJlc3MgXVxuICAgICAgICA8fD4gbGlmdDIgKGZ1biB4IHkgLT4geCA6OiB5KSBoZXhhZGVjaW1hbCAoY19jb2xvbiAqPiBmIDx8PiByZXR1cm4gW10pKVxuXG4gIGxldCBkb3VibGVfY29sb24gY291bnQgPVxuICAgIGFmdGVyX2RvdWJsZV9jb2xvbiA+Pj0gKGZ1biByZXN0IC0+XG4gICAgbGV0IGZpbGxlcl9sZW5ndGggPSA4IC0gY291bnQgLSBMaXN0Lmxlbmd0aCByZXN0IGluXG4gICAgaWYgZmlsbGVyX2xlbmd0aCA8PSAwIHRoZW5cbiAgICAgIGZhaWwgXCJ0b28gbWFueSBwYXJ0cyBpbiBJUHY2IGFkZHJlc3NcIlxuICAgIGVsc2VcbiAgICAgIHJldHVybiAoXCJcIiA6OiByZXN0KSlcbiAgICA8fD4gcmV0dXJuIFtcIlwiXVxuXG4gIGxldCByZWMgcGFydCA9IGZ1bmN0aW9uXG4gICAgfCA3IC0+XG4gICAgICAoKiBtYXggOCBwYXJ0cyBpbiBhbiBJUHY2IGFkZHJlc3MgKilcbiAgICAgIGxpZnQgKGZ1biB4IC0+IFsgeCBdKSBoZXhhZGVjaW1hbFxuICAgIHwgNiAtPlxuICAgICAgKCogYWZ0ZXIgNiBwYXJ0cyBpdCBjb3VsZCBlbmQgaW4gSVB2NCBkb3R0ZWQgbm90YXRpb24gKilcbiAgICAgIGxpc3QgWyBpcHY0X2FkZHJlc3MgXSA8fD4gaGV4X3BhcnQgNlxuICAgIHwgbiAtPlxuICAgICAgaGV4X3BhcnQgblxuXG4gIGFuZCBoZXhfcGFydCBuID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biB4IHkgLT4geCA6OiB5KVxuICAgICAgaGV4YWRlY2ltYWxcbiAgICAgIChjX2NvbG9uICo+IChjX2NvbG9uICo+IGRvdWJsZV9jb2xvbiAobiArIDEpIDx8PiBwYXJ0IChuICsgMSkpKVxuXG4gIGxldCByZWMgc3BsaXRfd2l0aCBmIHhzID1cbiAgICBtYXRjaCB4cyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgW10sIFtdXG4gICAgfCB5IDo6IHlzIC0+XG4gICAgICBpZiBmIHkgdGhlblxuICAgICAgICBsZXQgenMsIHRzID0gc3BsaXRfd2l0aCBmIHlzIGluXG4gICAgICAgIHkgOjogenMsIHRzXG4gICAgICBlbHNlXG4gICAgICAgIFtdLCB4c1xuXG4gIGxldCBpcHY2ID1cbiAgICBsZXQgZm9ybWF0X2FkZHIgc2VnbWVudHMgPVxuICAgICAgbGV0IGJlZm9yZV9kb3VibGVfY29sb24sIGFmdGVyX2RvdWJsZV9jb2xvbiA9XG4gICAgICAgIHNwbGl0X3dpdGggKGZ1biBzZWdtZW50IC0+IHNlZ21lbnQgPD4gXCJcIikgc2VnbWVudHNcbiAgICAgIGluXG4gICAgICBsZXQgYmVmb3JlID0gU3RyaW5nLmNvbmNhdCBcIjpcIiBiZWZvcmVfZG91YmxlX2NvbG9uIGluXG4gICAgICBsZXQgcmVzID1cbiAgICAgICAgbWF0Y2ggYWZ0ZXJfZG91YmxlX2NvbG9uIHdpdGhcbiAgICAgICAgfCBcIlwiIDo6IHhzIC0+XG4gICAgICAgICAgYmVmb3JlIF4gXCI6OlwiIF4gU3RyaW5nLmNvbmNhdCBcIjpcIiB4c1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBiZWZvcmVcbiAgICAgIGluXG4gICAgICByZXNcbiAgICBpblxuICAgIGxpZnQgZm9ybWF0X2FkZHIgKGNfY29sb24gKj4gY19jb2xvbiAqPiBkb3VibGVfY29sb24gMCA8fD4gcGFydCAwKVxuXG4gIGxldCBpcHY2X2FkZHJlc3MgPVxuICAgIChjaGFyICdbJykgKj4gaXB2NiA8KiAoY2hhciAnXScpXG5cbiAgbGV0IHBjdF9lbmNvZGVkID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biBwY3QgZGlnaXRzIC0+IHN0cmluZ19vZl9jaGFyX2xpc3QgKHBjdCA6OiBkaWdpdHMpKVxuICAgICAgKGNoYXIgJyUnKVxuICAgICAgKGNvdW50IDIgaGV4X2RpZ2l0KVxuXG4gIGxldCBzdWJfZGVsaW1zID1cbiAgICBzYXRpc2Z5IChmdW5jdGlvblxuICAgICAgICB8ICchJyB8ICckJyB8ICcmJyB8ICdcXCcnIHwgJygnIHwgJyknIHwgJyonIHwgJysnIHwgJywnIHwgJzsnIHwgJz0nIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgdW5yZXNlcnZlZCA9XG4gICAgKCogXCJbQS1aYS16MC05LS5ffl1cIiAqKVxuICAgIHNhdGlzZnkgKGZ1bmN0aW9uXG4gICAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgfCAnMCcgLi4gJzknIHwgJy0nIHwgJy4nIHwgJ18nIHwgJ34nIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgcmVnX25hbWUgPVxuICAgIGxpZnRcbiAgICAgIChTdHJpbmcuY29uY2F0IFwiXCIpXG4gICAgICAobWFueVxuICAgICAgICAgKGNob2ljZVxuICAgICAgICAgICAgWyBzdHJpbmdfb2ZfY2hhciA8JD4gdW5yZXNlcnZlZFxuICAgICAgICAgICAgOyBwY3RfZW5jb2RlZFxuICAgICAgICAgICAgOyBzdHJpbmdfb2ZfY2hhciA8JD4gc3ViX2RlbGltc1xuICAgICAgICAgICAgXSkpXG5cbiAgbGV0IGhvc3QgPVxuICAgIGNob2ljZVxuICAgICAgWyBpcHY0X2FkZHJlc3MgPj58IChmdW4gaCAtPiBgSXB2NF9saXRlcmFsIGgpXG4gICAgICA7IGlwdjZfYWRkcmVzcyA+PnwgKGZ1biBoIC0+IGBJcHY2X2xpdGVyYWwgaClcbiAgICAgIDsgcmVnX25hbWUgPj58IChmdW4gcyAtPiBgSG9zdCAoUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBzKSkpXG4gICAgICAoKiBUT0RPKGRpbm9zYXVyZSk6IEFjY29yZGluZyB0byBSRkMzOTg2OlxuXG4gICAgICAgICBob3N0ICAgICAgICA9IElQLWxpdGVyYWwgLyBJUHY0YWRkcmVzcyAvIHJlZy1uYW1lXG4gICAgICAgICBJUC1saXRlcmFsICA9IFwiW1wiICggSVB2NmFkZHJlc3MgLyBJUHZGdXR1cmUgICkgXCJdXCJcbiAgICAgICAgIElQdkZ1dHVyZSAgID0gXCJ2XCIgMSpIRVhESUcgXCIuXCIgMSooIHVucmVzZXJ2ZWQgLyBzdWItZGVsaW1zIC8gXCI6XCIgKVxuXG4gICAgICAgICBJUHZGdXR1cmUgaXMgbm90IGltcGxlbWVudGVkLiBXZSBzaG91bGQgaGFuZGxlIGl0OlxuXG4gICAgICAgICBJUHZGdXR1cmUgICA9IFwidlwiIDEqSEVYRElHIFwiLlwiIDEqKCB1bnJlc2VydmVkIC8gc3ViLWRlbGltcyAvIFwiOlwiIClcbiAgICAgICAqKVxuICAgICAgXVxuXG4gIGxldCB1c2VyaW5mbyA9XG4gICAgbGlmdFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCBzID0gU3RyaW5nLmNvbmNhdCBcIlwiIHggaW5cbiAgICAgICAgU29tZSAoVXNlcmluZm8udXNlcmluZm9fb2ZfZW5jb2RlZCBzKSlcbiAgICAgIChtYW55XG4gICAgICAgICAoY2hvaWNlXG4gICAgICAgICAgICBbIHN0cmluZ19vZl9jaGFyIDwkPiB1bnJlc2VydmVkXG4gICAgICAgICAgICA7IHBjdF9lbmNvZGVkXG4gICAgICAgICAgICA7IHN0cmluZ19vZl9jaGFyIDwkPiBzdWJfZGVsaW1zXG4gICAgICAgICAgICA7IHN0cmluZ19vZl9jaGFyIDwkPiBjX2NvbG9uXG4gICAgICAgICAgICBdKVxuICAgICAgPCogY19hdClcbiAgICA8fD4gcmV0dXJuIE5vbmVcblxuICBsZXQgcG9ydCA9XG4gICAgcGVla19jaGFyID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSAnOicgLT5cbiAgICAgIGNfY29sb24gKj4gdGFrZV93aGlsZSBpc19kaWdpdCA+PnwgZnVuIHBvcnQgLT5cbiAgICAgIGxldCBkZWNvZGVkID0gUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBwb3J0KSBpblxuICAgICAgKHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIChQY3QudW5jYXN0X2RlY29kZWQgZGVjb2RlZCkpIHdpdGggXyAtPiBOb25lKVxuICAgIHwgU29tZSBfIHwgTm9uZSAtPlxuICAgICAgcmV0dXJuIE5vbmVcblxuICBsZXQgYXV0aG9yaXR5ID1cbiAgICBzdHJpbmcgXCIvL1wiXG4gICAgKj4gbGlmdDNcbiAgICAgICAgIChmdW4gdXNlcmluZm8gaG9zdCBwb3J0IC0+XG4gICAgICAgICAgIHVzZXJpbmZvLCBTb21lIGhvc3QsIHBvcnQpXG4gICAgICAgICB1c2VyaW5mb1xuICAgICAgICAgaG9zdFxuICAgICAgICAgcG9ydFxuICAgIDx8PiByZXR1cm4gKE5vbmUsIE5vbmUsIE5vbmUpXG5cbiAgbGV0IHBhdGggPVxuICAgIGxpZnRcbiAgICAgIFBhdGgucGF0aF9vZl9lbmNvZGVkXG4gICAgICAodGFrZV93aGlsZSAoZnVuY3Rpb24gJz8nIHwgJyMnIC0+IGZhbHNlIHwgXyAtPiB0cnVlKSlcblxuICBsZXQgcXVlcnkgPVxuICAgIGxpZnRcbiAgICAgIFF1ZXJ5Lm9mX3Jhd1xuICAgICAgKGNoYXIgJz8nICo+IHRha2VfdGlsbCAoZnVuY3Rpb24gJyMnIC0+IHRydWUgfCBfIC0+IGZhbHNlKSlcbiAgICA8fD4gcmV0dXJuIChRdWVyeS5SYXcgKE5vbmUsIExhenkuZnJvbV92YWwgW10pKVxuXG4gIGxldCBmcmFnbWVudCA9XG4gICAgbGlmdFxuICAgICAgKGZ1biBzIC0+IFNvbWUgKFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcykpKVxuICAgICAgKGNoYXIgJyMnICo+IHRha2Vfd2hpbGUgKGZ1biBfIC0+IHRydWUpKVxuICAgIDx8PiByZXR1cm4gTm9uZVxuXG4gIGxldCBfdXJpX3JlZmVyZW5jZSA9XG4gICAgbGlmdDRcbiAgICAgIChmdW4gc2NoZW1lICh1c2VyaW5mbywgaG9zdCwgcG9ydCkgcGF0aCBxdWVyeSBmcmFnbWVudCAtPlxuICAgICAgICBub3JtYWxpemUgc2NoZW1lIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH0pXG4gICAgICBzY2hlbWVcbiAgICAgIGF1dGhvcml0eVxuICAgICAgcGF0aFxuICAgICAgcXVlcnlcbiAgICA8Kj4gZnJhZ21lbnRcblxuICAoKiBYWFgoYW5tb250ZWlybyk6IEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMgd2l0aCB0aGUgb2xkIHJlZ2V4IHBhcnNlciwgd2VcbiAgICogb25seSBwYXJzZSB1bnRpbCB0aGUgZmlyc3QgbmV3bGluZSBjaGFyYWN0ZXIgYW5kIGRyb3AgZXZlcnl0aGluZyBlbHNlXG4gICAqIGFmdGVyIHRoYXQgKilcbiAgbGV0IHVyaV9yZWZlcmVuY2UgPVxuICAgIHRha2Vfd2hpbGUgKGZ1bmN0aW9uIHwgJ1xcbicgLT4gZmFsc2UgfCBfIC0+IHRydWUpID4+fCBmdW4gcyAtPlxuICAgICAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOkFsbCBfdXJpX3JlZmVyZW5jZSBzIHdpdGhcbiAgICAgIHwgT2sgdCAtPiB0XG4gICAgICB8IEVycm9yIF8gLT5cbiAgICAgICAgKCogU2hvdWxkbid0IHJlYWxseSBoYXBwZW4gaWYgdGhlIHBhcnNlciBpcyBmb3JnaXZpbmcuICopXG4gICAgICAgIGVtcHR5XG5lbmRcblxubGV0IGRlY29kZV9ob3N0IGhvc3QgPVxuICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6QWxsIFBhcnNlci5ob3N0IGhvc3Qgd2l0aFxuICB8IE9rIHBhcnNlZCAtPiBwYXJzZWRcbiAgfCBFcnJvciBfIC0+XG4gICAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOkFsbCBQYXJzZXIuaXB2NiBob3N0IHdpdGhcbiAgICB8IE9rIHBhcnNlZCAtPiAoYElwdjZfbGl0ZXJhbCBwYXJzZWQpXG4gICAgfCBFcnJvciBfIC0+IChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBob3N0KSlcblxuKCogTWFrZSBhIFVSSSByZWNvcmQuIFRoaXMgaXMgYSBiaXQgbW9yZSBpbmVmZmljaWVudCB0aGFuIGl0IG5lZWRzIHRvIGJlIGR1ZSB0byB0aGVcbiAqIGNhc3RpbmcvdW5jYXN0aW5nICh3aGljaCBpc24ndCBmdWxseSBpZGVudGl0eSBkdWUgdG8gdGhlIG9wdGlvbiBib3gpLCBidXQgaXQgaXNcbiAqIG5vIGJpZyBkZWFsIGZvciBub3cuXG4qKVxubGV0IG1ha2UgP3NjaGVtZSA/dXNlcmluZm8gP2hvc3QgP3BvcnQgP3BhdGggP3F1ZXJ5ID9mcmFnbWVudCAoKSA9XG4gIGxldCBkZWNvZGUgPSBmdW5jdGlvblxuICAgIHxTb21lIHggLT4gU29tZSAoUGN0LmNhc3RfZGVjb2RlZCB4KSB8Tm9uZSAtPiBOb25lIGluXG4gIGxldCBob3N0ID0gbWF0Y2ggdXNlcmluZm8sIGhvc3QsIHBvcnQgd2l0aFxuICAgIHwgXywgU29tZSBfLCBfIHwgTm9uZSwgTm9uZSwgTm9uZSAtPiBob3N0XG4gICAgfCBTb21lIF8sIE5vbmUsIF8gfCBfLCBOb25lLCBTb21lIF8gLT4gU29tZSBcIlwiXG4gIGluXG4gIGxldCB1c2VyaW5mbyA9IG1hdGNoIHVzZXJpbmZvIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSB8IFNvbWUgdSAtPiBTb21lICh1c2VyaW5mb19vZl9lbmNvZGVkIHUpIGluXG4gIGxldCBwYXRoID0gbWF0Y2ggcGF0aCB3aXRoXG4gICAgfE5vbmUgLT4gW10gfCBTb21lIHAgLT5cbiAgICAgIGxldCBwYXRoID0gcGF0aF9vZl9lbmNvZGVkIHAgaW5cbiAgICAgIG1hdGNoIGhvc3QsIHBhdGggd2l0aFxuICAgICAgfCBOb25lLCBfIHwgU29tZSBfLCBcIi9cIjo6XyB8IFNvbWUgXywgW10gLT4gcGF0aFxuICAgICAgfCBTb21lIF8sIF8gIC0+IFwiL1wiOjpwYXRoXG4gIGluXG4gIGxldCBxdWVyeSA9IG1hdGNoIHF1ZXJ5IHdpdGhcbiAgICB8IE5vbmUgLT4gUXVlcnkuS1YgW11cbiAgICB8IFNvbWUgcCAtPiBRdWVyeS5LViBwXG4gIGluXG4gIGxldCBzY2hlbWUgPSBkZWNvZGUgc2NoZW1lIGluXG4gIG5vcm1hbGl6ZSBzY2hlbWVcbiAgICB7IHNjaGVtZTsgdXNlcmluZm87XG4gICAgICBob3N0ID1cbiAgICAgICAgKG1hdGNoIGhvc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgaG9zdCAtPiBTb21lIChkZWNvZGVfaG9zdCBob3N0KVxuICAgICAgICB8IE5vbmUgLT4gTm9uZSk7XG4gICAgICBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQ9ZGVjb2RlIGZyYWdtZW50IH1cblxubGV0IHdpdGhfaG9zdCB1cmkgaG9zdCA9XG4gIHsgdXJpIHdpdGhcbiAgICBob3N0ID0gKG1hdGNoIGhvc3Qgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGhvc3QgLT4gU29tZSAoZGVjb2RlX2hvc3QgaG9zdClcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICB9XG5cbmxldCB3aXRoX3VyaSA/c2NoZW1lID91c2VyaW5mbyA/aG9zdCA/cG9ydCA/cGF0aCA/cXVlcnkgP2ZyYWdtZW50IHVyaSA9XG4gIGxldCB3aXRoX3BhdGhfb3B0IHUgbyA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IHdpdGhfcGF0aCB1IFwiXCJcbiAgICB8IFNvbWUgcCAtPiB3aXRoX3BhdGggdSBwXG4gIGluXG4gIGxldCB3aXRoX3F1ZXJ5X29wdCB1IG8gPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiB3aXRoX3F1ZXJ5IHUgW11cbiAgICB8IFNvbWUgcSAtPiB3aXRoX3F1ZXJ5IHUgcVxuICBpblxuICBsZXQgd2l0aF8gZiBvIHUgPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiB1XG4gICAgfCBTb21lIHggLT4gZiB1IHhcbiAgaW5cbiAgd2l0aF8gd2l0aF9zY2hlbWUgc2NoZW1lIHVyaVxuICB8PiB3aXRoXyB3aXRoX3VzZXJpbmZvIHVzZXJpbmZvXG4gIHw+IHdpdGhfIHdpdGhfaG9zdCBob3N0XG4gIHw+IHdpdGhfIHdpdGhfcG9ydCBwb3J0XG4gIHw+IHdpdGhfIHdpdGhfcGF0aF9vcHQgcGF0aFxuICB8PiB3aXRoXyB3aXRoX3F1ZXJ5X29wdCBxdWVyeVxuICB8PiB3aXRoXyB3aXRoX2ZyYWdtZW50IGZyYWdtZW50XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gICgqIFRvIHByZXNlcnZlIHRoZSBvbGQgcmVnZXggcGFyc2VyJ3MgYmVoYXZpb3IsIHdlIG9ubHkgcGFyc2UgYSBwcmVmaXgsIGFuZFxuICAgKiBzdG9wIHdoZW5ldmVyIHdlIGNhbid0IHBhcnNlIG1vcmUuICopXG4gIG1hdGNoIEFuZ3N0cm9tLnBhcnNlX3N0cmluZyB+Y29uc3VtZTpQcmVmaXggUGFyc2VyLnVyaV9yZWZlcmVuY2UgcyB3aXRoXG4gIHwgT2sgdCAtPiB0XG4gIHwgRXJyb3IgXyAtPlxuICAgICgqIFNob3VsZG4ndCByZWFsbHkgaGFwcGVuIGlmIHRoZSBwYXJzZXIgaXMgZm9yZ2l2aW5nLiAqKVxuICAgIGVtcHR5XG5cbm1vZHVsZSBBYnNvbHV0ZV9odHRwID0gc3RydWN0XG4gIHR5cGUgdXJpID0gdFxuICB0eXBlIHQgPVxuICAgIHsgc2NoZW1lIDogWyBgSHR0cCB8IGBIdHRwcyBdO1xuICAgICAgdXNlcmluZm86IFVzZXJpbmZvLnQgb3B0aW9uO1xuICAgICAgaG9zdDogWyBgSXB2NF9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBgSXB2Nl9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBgSG9zdCBvZiBQY3QuZGVjb2RlZF07XG4gICAgICBwb3J0IDogaW50IG9wdGlvbjtcbiAgICAgIHBhdGggOiBQYXRoLnQ7XG4gICAgICBxdWVyeSA6IFF1ZXJ5LnQ7XG4gICAgICBmcmFnbWVudCA6IFBjdC5kZWNvZGVkIG9wdGlvblxuICAgIH1cblxuICBsZXQgKCBsZXQqICkgPSBSZXN1bHQuYmluZFxuXG4gIGxldCB0b191cmkgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfSA9XG4gICAgbGV0IHNjaGVtZSA9XG4gICAgICBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgfCBgSHR0cCAtPiBQY3QuY2FzdF9kZWNvZGVkIFwiaHR0cFwiXG4gICAgICB8IGBIdHRwcyAtPiBQY3QuY2FzdF9kZWNvZGVkIFwiaHR0cHNcIlxuICAgIGluXG4gICAgKHsgc2NoZW1lID0gU29tZSBzY2hlbWU7XG4gICAgICAgdXNlcmluZm87XG4gICAgICAgaG9zdCA9IFNvbWUgaG9zdDtcbiAgICAgICBwb3J0O1xuICAgICAgIHBhdGg7XG4gICAgICAgcXVlcnk7XG4gICAgICAgZnJhZ21lbnQgfSA6IHVyaSlcbiAgOztcblxuICBsZXQgb2ZfdXJpICh7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudCB9OiB1cmkpID1cbiAgICBsZXQqIHNjaGVtZSA9XG4gICAgICBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEVycm9yIChgTXNnIFwiTm8gc2NoZW1lIHByZXNlbnQgaW4gVVJJXCIpXG4gICAgICB8IFNvbWUgc2NoZW1lIC0+XG4gICAgICAgIChtYXRjaCBQY3QudW5jYXN0X2RlY29kZWQgc2NoZW1lIHdpdGhcbiAgICAgICAgIHwgXCJodHRwXCIgLT4gT2sgYEh0dHBcbiAgICAgICAgIHwgXCJodHRwc1wiIC0+IE9rIGBIdHRwc1xuICAgICAgICAgfCB1bnN1cHBvcnRlZF9zY2hlbWUgLT5cbiAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAoYE1zZ1xuICAgICAgICAgICAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiT25seSBodHRwIGFuZCBodHRwcyBVUklzIGFyZSBzdXBwb3J0ZWQuICVzIGlzIGludmFsaWQuXCJcbiAgICAgICAgICAgICAgICAgICB1bnN1cHBvcnRlZF9zY2hlbWUpKSlcbiAgICBpblxuICAgIGxldCogaG9zdCA9IE9wdGlvbi50b19yZXN1bHQgfm5vbmU6KGBNc2cgXCJob3N0IGlzIHJlcXVpcmVkIGZvciBIVFRQKFMpIHVyaXNcIikgaG9zdCBpblxuICAgIE9rIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH1cbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nIHMgPSBtYXRjaCBvZl9zdHJpbmcgcyB8PiBvZl91cmkgd2l0aFxuICAgIHwgT2sgdCAtPiB0XG4gICAgfCBFcnJvciAoYE1zZyBlcnJvcikgLT4gZmFpbHdpdGggZXJyb3JcblxuICBsZXQgdG9fc3RyaW5nID9wY3RfZW5jb2RlciB0ID0gdG9fdXJpIHQgfD4gdG9fc3RyaW5nID9wY3RfZW5jb2RlclxuXG4gIGxldCBub3JtYWxpemUgdCA9XG4gICAgeyB0IHdpdGhcbiAgICAgIGhvc3QgPSBtYXRjaCB0Lmhvc3Qgd2l0aFxuICAgICAgIHwgKGBJcHY0X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIChgSXB2NF9saXRlcmFsIChTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhvc3QpKVxuICAgICAgIHwgKGBJcHY2X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIChgSXB2Nl9saXRlcmFsIChTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhvc3QpKVxuICAgICAgIHwgKGBIb3N0IGhvc3QpIC0+XG4gICAgICAgICAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgKFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgKFBjdC51bmNhc3RfZGVjb2RlZCBob3N0KSkpKVxuICAgIH1cblxuICBsZXQgbWFrZSB+c2NoZW1lIH5ob3N0ID91c2VyaW5mbyA/cG9ydCA/cGF0aCA/cXVlcnkgP2ZyYWdtZW50ICgpID1cbiAgICBsZXQgZGVjb2RlID0gZnVuY3Rpb25cbiAgICAgIHxTb21lIHggLT4gU29tZSAoUGN0LmNhc3RfZGVjb2RlZCB4KSB8Tm9uZSAtPiBOb25lIGluXG4gICAgbGV0IHVzZXJpbmZvID0gbWF0Y2ggdXNlcmluZm8gd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmUgfCBTb21lIHUgLT4gU29tZSAodXNlcmluZm9fb2ZfZW5jb2RlZCB1KSBpblxuICAgIGxldCBwYXRoID0gbWF0Y2ggcGF0aCB3aXRoXG4gICAgICB8Tm9uZSAtPiBbXSB8IFNvbWUgcCAtPlxuICAgICAgICBsZXQgcGF0aCA9IHBhdGhfb2ZfZW5jb2RlZCBwIGluXG4gICAgICAgIG1hdGNoIHBhdGggd2l0aFxuICAgICAgICB8ICBcIi9cIjo6XyB8ICBbXSAtPiBwYXRoXG4gICAgICAgIHwgXyAgLT4gXCIvXCI6OnBhdGhcbiAgICBpblxuICAgIGxldCBxdWVyeSA9IG1hdGNoIHF1ZXJ5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBRdWVyeS5LViBbXVxuICAgICAgfCBTb21lIHAgLT4gUXVlcnkuS1YgcFxuICAgIGluXG4gICAgbm9ybWFsaXplXG4gICAgICB7IHNjaGVtZTtcbiAgICAgICAgdXNlcmluZm87XG4gICAgICAgIGhvc3Q9IGRlY29kZV9ob3N0IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudD1kZWNvZGUgZnJhZ21lbnQgfVxuXG4gIGxldCBob3N0IHQgPVxuICAgIG1hdGNoIHQuaG9zdCB3aXRoXG4gICAgfCAoYElwdjRfbGl0ZXJhbCBoIHwgYElwdjZfbGl0ZXJhbCBoKSAtPiBoXG4gICAgfCAoYEhvc3QgaCkgLT4gKFBjdC51bmNhc3RfZGVjb2RlZCBoKVxuXG4gIGxldCBzY2hlbWUgdCA9IHQuc2NoZW1lXG5lbmRcbiIsIm9wZW4gVXJpXG5cbm1vZHVsZSBEZXJpdmVkID1cbnN0cnVjdFxuXG5cdG9wZW4gU2V4cGxpYjAuU2V4cF9jb252XG5cblx0dHlwZSBjb21wb25lbnQgPSBbXG5cdCAgfCBgU2NoZW1lXG5cdCAgfCBgQXV0aG9yaXR5XG5cdCAgfCBgVXNlcmluZm8gKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcblx0ICB8IGBIb3N0ICgqIHN1YmNvbXBvbmVudCBvZiBhdXRob3JpdHkgaW4gc29tZSBzY2hlbWVzICopXG5cdCAgfCBgUGF0aFxuXHQgIHwgYFF1ZXJ5XG5cdCAgfCBgUXVlcnlfa2V5XG5cdCAgfCBgUXVlcnlfdmFsdWVcblx0ICB8IGBGcmFnbWVudFxuICAgICAgICAgIHwgYEdlbmVyaWNcbiAgICAgICAgICB8IGBDdXN0b20gb2YgKGNvbXBvbmVudCAqIHN0cmluZyAqIHN0cmluZylcblx0XSBbQEBkZXJpdmluZyBzZXhwXVxuXG5cdHR5cGUgdCA9IHtcbiAgICAgICAgICBzY2hlbWU6IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgdXNlcmluZm86IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgaG9zdDogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBwb3J0OiBpbnQgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHBhdGg6IHN0cmluZyBbQGRlZmF1bHQgXCJcIl0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBxdWVyeTogKHN0cmluZyAqIHN0cmluZyBsaXN0KSBsaXN0IFtAc2V4cC5saXN0XTtcbiAgICAgICAgICBmcmFnbWVudDogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXVxuXHR9IFtAQGRlcml2aW5nIHNleHBdXG5cbmVuZFxuXG5vcGVuIERlcml2ZWRcblxubGV0IGNvbXBvbmVudF9vZl9zZXhwID0gY29tcG9uZW50X29mX3NleHBcbmxldCBzZXhwX29mX2NvbXBvbmVudCA9IHNleHBfb2ZfY29tcG9uZW50XG5cbmxldCB0X29mX3NleHAgc2V4cCA9XG5cdGxldCB0ID0gdF9vZl9zZXhwIHNleHAgaW5cblx0VXJpLm1ha2Vcblx0XHQ/c2NoZW1lOnQuc2NoZW1lXG5cdFx0P3VzZXJpbmZvOnQudXNlcmluZm9cblx0XHQ/aG9zdDp0Lmhvc3Rcblx0XHQ/cG9ydDp0LnBvcnRcblx0XHR+cGF0aDp0LnBhdGhcblx0XHR+cXVlcnk6dC5xdWVyeVxuXHRcdD9mcmFnbWVudDp0LmZyYWdtZW50XG5cdFx0KClcblxubGV0IHNleHBfb2ZfdCB0ID1cblx0c2V4cF9vZl90IHtcblx0XHRzY2hlbWUgPSBzY2hlbWUgdDtcblx0XHR1c2VyaW5mbyA9IHVzZXJpbmZvIHQ7XG5cdFx0aG9zdCA9IGhvc3QgdDtcblx0XHRwb3J0ID0gcG9ydCB0O1xuXHRcdHBhdGggPSBwYXRoIHQ7XG5cdFx0cXVlcnkgPSBxdWVyeSB0O1xuXHRcdGZyYWdtZW50ID0gZnJhZ21lbnQgdFxuXHR9XG5cbnR5cGUgY29tcG9uZW50ID0gVXJpLmNvbXBvbmVudFxubGV0IGNvbXBhcmUgYSBiID0gVXJpLmNvbXBhcmUgYSBiXG5sZXQgZXF1YWwgYSBiID0gVXJpLmVxdWFsIGEgYlxudHlwZSB0ID0gVXJpLnRcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gQ29yZVxuXG5sZXQgaXNfdmFsaWRfaWQgcyA9XG4gIGlmIFN0cmluZy5lcXVhbCBzIFwiXCJcbiAgdGhlbiBmYWxzZVxuICBlbHNlIChcbiAgICBtYXRjaCBzLlswXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IGZhbHNlXG4gICAgfCBfIC0+XG4gICAgICBTdHJpbmcuZm9yX2FsbCBzIH5mOihmdW5jdGlvblxuICAgICAgICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJ18nIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZSkpXG47O1xuXG5sZXQgaXNfdmFsaWRfZmllbGRfbmFtZSB+c2VlbiBuYW1lID0gaXNfdmFsaWRfaWQgbmFtZSAmJiBub3QgKFNldC5tZW0gc2VlbiBuYW1lKVxuXG5sZXQgcmVjIGtleV92YWx1ZV9zaGFwZSB+c2VlbiB+cmV2X2FjYyBsaXN0ID1cbiAgbWF0Y2ggKGxpc3QgOiBTZXhwLnQgbGlzdCkgd2l0aFxuICB8IFtdIC0+IFNvbWUgKExpc3QucmV2IHJldl9hY2MpXG4gIHwgQXRvbSBuYW1lIDo6IHJlc3Qgd2hlbiBpc192YWxpZF9maWVsZF9uYW1lIH5zZWVuIG5hbWUgLT5cbiAgICBsZXQgcmV2X2FjYyA9IChuYW1lLCBOb25lKSA6OiByZXZfYWNjIGluXG4gICAgbGV0IHNlZW4gPSBTZXQuYWRkIHNlZW4gbmFtZSBpblxuICAgIGtleV92YWx1ZV9zaGFwZSB+c2VlbiB+cmV2X2FjYyByZXN0XG4gIHwgTGlzdCBbIEF0b20gbmFtZTsgdiBdIDo6IHJlc3Qgd2hlbiBpc192YWxpZF9maWVsZF9uYW1lIH5zZWVuIG5hbWUgLT5cbiAgICBsZXQgcmV2X2FjYyA9IChuYW1lLCBTb21lIHYpIDo6IHJldl9hY2MgaW5cbiAgICBsZXQgc2VlbiA9IFNldC5hZGQgc2VlbiBuYW1lIGluXG4gICAga2V5X3ZhbHVlX3NoYXBlIH5zZWVuIH5yZXZfYWNjIHJlc3RcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgYW55X29mX3NleHAgPSBmdW5jdGlvblxuICB8IFNleHAuQXRvbSBzIC0+IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBzKVxuICB8IFNleHAuTGlzdCBbIEF0b20gbmFtZTsgdiBdIC0+IEpzLlVuc2FmZS5vYmogW3wgbmFtZSwgYW55X29mX3NleHAgdiB8XVxuICB8IFNleHAuTGlzdCBsIC0+XG4gICAgKG1hdGNoIGtleV92YWx1ZV9zaGFwZSB+c2VlbjpTdHJpbmcuU2V0LmVtcHR5IH5yZXZfYWNjOltdIGwgd2l0aFxuICAgICB8IE5vbmUgLT4gTGlzdC5tYXAgbCB+Zjphbnlfb2Zfc2V4cCB8PiBBcnJheS5vZl9saXN0IHw+IEpzLmFycmF5IHw+IEpzLlVuc2FmZS5pbmplY3RcbiAgICAgfCBTb21lIFtdIC0+IEpzLmFycmF5IFt8fF0gfD4gSnMuVW5zYWZlLmluamVjdFxuICAgICB8IFNvbWUgbCAtPlxuICAgICAgIEpzLlVuc2FmZS5vYmpcbiAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBuYW1lLCBTb21lIHYgLT4gbmFtZSwgYW55X29mX3NleHAgdlxuICAgICAgICAgICAgfCBuYW1lLCBOb25lIC0+IG5hbWUsIEpzLlVuc2FmZS5pbmplY3QgSnMubnVsbClcbiAgICAgICAgICB8PiBBcnJheS5vZl9saXN0KSlcbjs7XG5cbmxldCBsb2dfcyBzZXhwID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKGFueV9vZl9zZXhwIHNleHApXG5sZXQgbG9nX3NfYXNfc3RyaW5nIHNleHAgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIChTZXhwLnRvX3N0cmluZ19odW0gc2V4cCkpXG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgdHlwZSB1ID0geyBzb21lX25hbWUgOiBzdHJpbmcgfSBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRm9vXG4gICAgICB8IEJhciBvZlxuICAgICAgICAgIHsgZmllbGQxIDogdVxuICAgICAgICAgIDsgZmllbGQyIDogc3RyaW5nIG9wdGlvblxuICAgICAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcbiAgaW5cbiAgbGV0IHRvX3N0cmluZyA6IEpzLlVuc2FmZS5hbnkgLT4gc3RyaW5nID1cbiAgICBmdW4gYW55IC0+IEpzLnRvX3N0cmluZyAoSnMuX0pTT04jI3N0cmluZ2lmeSBhbnkgOiBKcy5qc19zdHJpbmcgSnMudClcbiAgaW5cbiAgbGV0IG9wZW4gTSBpblxuICBwcmludF9lbmRsaW5lICh0b19zdHJpbmcgKGFueV9vZl9zZXhwIChzZXhwX29mX3QgRm9vKSkpO1xuICBbJWV4cGVjdCB7fCBcIkZvb1wiIHx9XTtcbiAgcHJpbnRfZW5kbGluZVxuICAgICh0b19zdHJpbmdcbiAgICAgICAoYW55X29mX3NleHBcbiAgICAgICAgICAoc2V4cF9vZl90XG4gICAgICAgICAgICAgKEJhciB7IGZpZWxkMSA9IHsgc29tZV9uYW1lID0gXCJkZWJ1Z1wiIH07IGZpZWxkMiA9IFNvbWUgXCJvdGhlciBzdHJpbmdcIiB9KSkpKTtcbiAgWyVleHBlY3Qge3wge1wiQmFyXCI6bnVsbCxcImZpZWxkMVwiOntcInNvbWVfbmFtZVwiOlwiZGVidWdcIn0sXCJmaWVsZDJcIjpbXCJvdGhlciBzdHJpbmdcIl19IHx9XVxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwiZHVwbGljYXRlIGtleXMgYXJlIGRpc3BsYXllZCBjb3JyZWN0bHlcIiA9XG4gIGxldCB0b19zdHJpbmcgOiBKcy5VbnNhZmUuYW55IC0+IHN0cmluZyA9XG4gICAgZnVuIGFueSAtPiBKcy50b19zdHJpbmcgKEpzLl9KU09OIyNzdHJpbmdpZnkgYW55IDogSnMuanNfc3RyaW5nIEpzLnQpXG4gIGluXG4gIGxldCBzZXhwX3dpdGhfZHVwbGljYXRlX2tleXMgPSB7fCAoKEEgQikgKEEgQykpIHx9IHw+IFNleHAub2Zfc3RyaW5nIGluXG4gIHByaW50X2VuZGxpbmUgKHRvX3N0cmluZyAoYW55X29mX3NleHAgc2V4cF93aXRoX2R1cGxpY2F0ZV9rZXlzKSk7XG4gIFslZXhwZWN0IHt8IFt7XCJBXCI6XCJCXCJ9LHtcIkFcIjpcIkNcIn1dIHx9XVxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwibm8gc3RhY2sgb3ZlcmZsb3dcIiA9XG4gIGxldCBhID0gQXJyYXkuaW5pdCAxMDAwMCB+ZjooZnVuIGkgLT4gc3ByaW50ZiBcImYlZFwiIGksIGkpIGluXG4gIGxldCBzZXhwID0gWyVzZXhwX29mOiAoc3RyaW5nICogaW50KSBhcnJheV0gYSBpblxuICBsZXQgeCA9IGFueV9vZl9zZXhwIHNleHAgaW5cbiAgcHJpbnRmIFwiJWRcIiAoSnMuVW5zYWZlLmNvZXJjZSB4KSMjLmY5OTk7XG4gIFslZXhwZWN0IHt8IDk5OSB8fV1cbjs7XG4iLCJtb2R1bGUgQXN5bmNfanNfZGVidWcgPSBEZWJ1Z1xub3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgVXJpID0gc3RydWN0XG4gIGluY2x1ZGUgVXJpXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFVyaV9zZXhwLnNleHBfb2ZfdFxuZW5kXG5cbm1vZHVsZSBXZWJzb2NrZXRfY29ubmVjdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IEFzeW5jX3JwY19rZXJuZWwuUnBjLkNvbm5lY3Rpb25cblxuICB0eXBlICgncmVzdCwgJ2ltcGxlbWVudGF0aW9ucykgY2xpZW50X3QgPVxuICAgID91cmk6VXJpLnRcbiAgICAtPiA/aGVhcnRiZWF0X2NvbmZpZzpULkhlYXJ0YmVhdF9jb25maWcudFxuICAgIC0+ID9kZXNjcmlwdGlvbjpJbmZvLnRcbiAgICAtPiA/aW1wbGVtZW50YXRpb25zOidpbXBsZW1lbnRhdGlvbnMgVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLnRcbiAgICAtPiAncmVzdFxuXG4gIG1vZHVsZSBDbG9zZV9jb2RlIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgICB2YWwgb2ZfZXZlbnQgOiBfIFdlYlNvY2tldHMuY2xvc2VFdmVudCBKcy50IC0+IHRcbiAgICB2YWwgbm9ybWFsX2Nsb3N1cmUgOiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgY2xvc2VfZXZlbnRfY29kZSA9IGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGFsbF9vZl9jbG9zZV9ldmVudF9jb2RlID0gW11cblxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5vcm1hbF9jbG9zdXJlXG4gICAgICB8IEdvaW5nX2F3YXlcbiAgICAgIHwgUHJvdG9jb2xfZXJyb3JcbiAgICAgIHwgVW5zdXBwb3J0ZWRfZGF0YVxuICAgICAgfCBOb19zdGF0dXNfUmVjZWl2ZWRcbiAgICAgIHwgQWJub3JtYWxfY2xvc3VyZVxuICAgICAgfCBJbnZhbGlkX2ZyYW1lX3BheWxvYWRfZGF0YVxuICAgICAgfCBQb2xpY3lfdmlvbGF0aW9uXG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZ1xuICAgICAgfCBNaXNzaW5nX2V4dGVuc2lvblxuICAgICAgfCBJbnRlcm5hbF9lcnJvclxuICAgICAgfCBTZXJ2aWNlX3Jlc3RhcnRcbiAgICAgIHwgVHJ5X2FnYWluX2xhdGVyXG4gICAgICB8IEJhZF9nYXRld2F5XG4gICAgICB8IFRMU19oYW5kc2hha2VcbiAgICAgIHwgVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlIG9mIGNsb3NlX2V2ZW50X2NvZGVcbiAgICAgIHwgSW52YWxpZF9jbG9zZV9ldmVudF9jb2RlIG9mIGNsb3NlX2V2ZW50X2NvZGVcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHBdXG5cbiAgICBsZXQgbm9ybWFsX2Nsb3N1cmUgPSBOb3JtYWxfY2xvc3VyZVxuXG4gICAgbGV0IG9mX2ludCA9IGZ1bmN0aW9uXG4gICAgICB8IDEwMDAgLT4gTm9ybWFsX2Nsb3N1cmVcbiAgICAgIHwgMTAwMSAtPiBHb2luZ19hd2F5XG4gICAgICB8IDEwMDIgLT4gUHJvdG9jb2xfZXJyb3JcbiAgICAgIHwgMTAwMyAtPiBVbnN1cHBvcnRlZF9kYXRhXG4gICAgICB8IDEwMDUgLT4gTm9fc3RhdHVzX1JlY2VpdmVkXG4gICAgICB8IDEwMDYgLT4gQWJub3JtYWxfY2xvc3VyZVxuICAgICAgfCAxMDA3IC0+IEludmFsaWRfZnJhbWVfcGF5bG9hZF9kYXRhXG4gICAgICB8IDEwMDggLT4gUG9saWN5X3Zpb2xhdGlvblxuICAgICAgfCAxMDA5IC0+IE1lc3NhZ2VfdG9vX2JpZ1xuICAgICAgfCAxMDEwIC0+IE1pc3NpbmdfZXh0ZW5zaW9uXG4gICAgICB8IDEwMTEgLT4gSW50ZXJuYWxfZXJyb3JcbiAgICAgIHwgMTAxMiAtPiBTZXJ2aWNlX3Jlc3RhcnRcbiAgICAgIHwgMTAxMyAtPiBUcnlfYWdhaW5fbGF0ZXJcbiAgICAgIHwgMTAxNCAtPiBCYWRfZ2F0ZXdheVxuICAgICAgfCAxMDE1IC0+IFRMU19oYW5kc2hha2VcbiAgICAgIHwgY29kZSAtPlxuICAgICAgICBpZiBjb2RlID49IDMwMDAgJiYgY29kZSA8PSA0OTk5XG4gICAgICAgIHRoZW4gVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlIGNvZGVcbiAgICAgICAgZWxzZSBJbnZhbGlkX2Nsb3NlX2V2ZW50X2NvZGUgY29kZVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZXZlbnQgY2xvc2VfZXZlbnQgPSBvZl9pbnQgY2xvc2VfZXZlbnQjIy5jb2RlXG5cbiAgICBsZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgICAgIHwgTm9ybWFsX2Nsb3N1cmUgLT4gMTAwMFxuICAgICAgfCBHb2luZ19hd2F5IC0+IDEwMDFcbiAgICAgIHwgUHJvdG9jb2xfZXJyb3IgLT4gMTAwMlxuICAgICAgfCBVbnN1cHBvcnRlZF9kYXRhIC0+IDEwMDNcbiAgICAgIHwgTm9fc3RhdHVzX1JlY2VpdmVkIC0+IDEwMDVcbiAgICAgIHwgQWJub3JtYWxfY2xvc3VyZSAtPiAxMDA2XG4gICAgICB8IEludmFsaWRfZnJhbWVfcGF5bG9hZF9kYXRhIC0+IDEwMDdcbiAgICAgIHwgUG9saWN5X3Zpb2xhdGlvbiAtPiAxMDA4XG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZyAtPiAxMDA5XG4gICAgICB8IE1pc3NpbmdfZXh0ZW5zaW9uIC0+IDEwMTBcbiAgICAgIHwgSW50ZXJuYWxfZXJyb3IgLT4gMTAxMVxuICAgICAgfCBTZXJ2aWNlX3Jlc3RhcnQgLT4gMTAxMlxuICAgICAgfCBUcnlfYWdhaW5fbGF0ZXIgLT4gMTAxM1xuICAgICAgfCBCYWRfZ2F0ZXdheSAtPiAxMDE0XG4gICAgICB8IFRMU19oYW5kc2hha2UgLT4gMTAxNVxuICAgICAgfCBVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUgY29kZSAtPiBjb2RlXG4gICAgICB8IEludmFsaWRfY2xvc2VfZXZlbnRfY29kZSBjb2RlIC0+IGNvZGVcbiAgICA7O1xuXG4gICAgbGV0JXRlc3RfdW5pdCBcInRvX2ludCAtPiBvZl9pbnQgcm91bmQtdHJpcFwiID1cbiAgICAgIExpc3QuaXRlciBhbGwgfmY6KGZ1biB0IC0+IGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiB0XSAob2ZfaW50ICh0b19pbnQgdCkpIHQpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBjbG9zZV93ZWJzb2NrZXQgKHdlYnNvY2tldCA6IFdlYlNvY2tldHMud2ViU29ja2V0IEpzLnQpIHJlYXNvbiA9XG4gICAgKCogW2Nsb3NlX3dpdGhDb2RlQW5kUmVhc29uXSBkb2VzIG5vdGhpbmcgaWYgdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeSBDbG9zZWQuICopXG4gICAgbGV0IGNsb3NlIHJlYXNvbiA9XG4gICAgICAoKiBUaGUgY29kZSBtdXN0IGJlIGVpdGhlciAxMDAwIChOb3JtYWxfY2xvc3VyZSksIG9yIGJldHdlZW4gMzAwMCBhbmQgNDk5OVxuICAgICAgICAgKFVua25vd25fY2xvc2VfZXZlbnRfY29kZSkuICopXG4gICAgICB3ZWJzb2NrZXQjI2Nsb3NlX3dpdGhDb2RlQW5kUmVhc29uXG4gICAgICAgIENsb3NlX2NvZGUuKHRvX2ludCBub3JtYWxfY2xvc3VyZSlcbiAgICAgICAgKEpzLnN0cmluZyByZWFzb24pXG4gICAgaW5cbiAgICBtYXRjaCBjbG9zZSByZWFzb24gd2l0aFxuICAgIHwgKCkgLT4gKClcbiAgICB8IGV4Y2VwdGlvbiAoXyA6IEV4bi50KSAtPlxuICAgICAgKCogdGhpcyBjYW4gZmFpbCBpZiBbcmVhc29uXSBpcyB0b28gbG9uZyBvciBjb250YWlucyBpbnZhbGlkIFVURjggKilcbiAgICAgIGNsb3NlIFwiY2xvc2UtcmVhc29uLXdhcy10b28tbG9uZy1vci1jb250YWlucy1pbnZhbGlkLXV0ZjhcIlxuICA7O1xuXG4gIGxldCBjb25uZWN0X3dlYnNvY2tldCB1cmwgfmZyb21fc2VydmVyIH50b19zZXJ2ZXIgPVxuICAgIG1hdGNoIG5ldyVqcyBXZWJTb2NrZXRzLndlYlNvY2tldCAoSnMuc3RyaW5nIChVcmkudG9fc3RyaW5nIHVybCkpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBKc19lcnJvci5FeG4gZXhuIC0+XG4gICAgICAoKiBlLmcuIFNFQ1VSSVRZX0VSUiwgdGhvdWdoIG5vdGUgdGhhdCBlLmcuIGNvbm5lY3RpbmcgdG8gd3M6Ly8gZnJvbSBhIGh0dHBzOi8vIHBhZ2VcbiAgICAgICAgIGluIGNocm9tZSBzZWVtcyB0byBtYW5pZmVzdCBhcyBzdWNjZXNzZnVsIGNvbnN0cnVjdGlvbiBidXQgaW1tZWRpYXRlIGNsb3N1cmVcbiAgICAgICAgIChzZWUgYmVsb3cpLiAgKilcbiAgICAgIHJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIChKc19lcnJvci5tZXNzYWdlIGV4bikpXG4gICAgfCBleGNlcHRpb24gZXhuIC0+IHJldHVybiAoT3JfZXJyb3Iub2ZfZXhuIGV4bilcbiAgICB8IHdlYnNvY2tldCAtPlxuICAgICAgbGV0IGNvbm5lY3RlZF9pdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIGxldCBjbGVhbnVwIH5yZWFzb24gPVxuICAgICAgICAoKiBJZiB3ZSBoYXZlbid0IGNvbm5lY3RlZCB5ZXQsIHRoZW4gY29ubmVjdGluZyBqdXN0IGZhaWxlZC4gT3RoZXJ3aXNlIGl0IHdhcyB0aGVcbiAgICAgICAgICAgY2xvc3VyZSBvZiBhbiBleGlzdGluZyBjb25uZWN0aW9uLiAqKVxuICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgY29ubmVjdGVkX2l2YXIgKEVycm9yIHJlYXNvbik7XG4gICAgICAgICgqIFtQaXBlLmNsb3NlXSBhbmQgW1dlYlNvY2tldC5jbG9zZV0gYXJlIGFsbCBpZGVtcG90ZW50LiAqKVxuICAgICAgICBQaXBlLmNsb3NlIGZyb21fc2VydmVyO1xuICAgICAgICBQaXBlLmNsb3NlX3JlYWQgdG9fc2VydmVyO1xuICAgICAgICBjbG9zZV93ZWJzb2NrZXQgd2Vic29ja2V0IChFcnJvci50b19zdHJpbmdfaHVtIHJlYXNvbilcbiAgICAgIGluXG4gICAgICBsZXQgb25jbG9zZSAoY2xvc2VfZXZlbnQgOiBfIFdlYlNvY2tldHMuY2xvc2VFdmVudCBKcy50KSA9XG4gICAgICAgICgqIFRoZSBSUEMgQVBJIGRvZXNuJ3QgZ2l2ZSB1cyBhIGdvb2QgcGxhY2UgdG8gcHV0IGRldGFpbHMgYWJvdXQgX3doeV8gdGhlXG4gICAgICAgICAgIGNvbm5lY3Rpb24gY2xvc2VkLlxuXG4gICAgICAgICAgIE5vdGUgdGhhdCBpbiBDaHJvbWUgW2Nsb3NlX2V2ZW50IyMucmVhc29uXSBpcyB0eXBpY2FsbHkgZW1wdHkgYW5kXG4gICAgICAgICAgIFtjbG9zZV9ldmVudCMjLmNvZGVdIGRvZXNuJ3QgYWN0dWFsbHkgcHJvdmlkZSB0aGF0IG11Y2ggaW5zaWdodCBpbnRvIHdoeSB0aGVcbiAgICAgICAgICAgY29ubmVjdGlvbiBmYWlsZWQgKGl0J3MgYXZhaWxhYmxlIGluIHRoZSBpbnNwZWN0b3IgY29uc29sZSwgYnV0IGFzIGZhciBhcyBJIGNhblxuICAgICAgICAgICB0ZWxsLCBub3QgYXZhaWxhYmxlIHRvIHVzKS4gU28gaXQncyBub3QgbGlrZSB3ZSdyZSBsb3NpbmcgbXVjaCBhbnl3YXkuICopXG4gICAgICAgIGxldCByZWFzb24gPVxuICAgICAgICAgIGxldCB3aGF0X2hhcHBlbmVkID1cbiAgICAgICAgICAgIG1hdGNoIEl2YXIuaXNfZnVsbCBjb25uZWN0ZWRfaXZhciB3aXRoXG4gICAgICAgICAgICB8IGZhbHNlIC0+IFwiY29ubmVjdGlvbiBmYWlsZWRcIlxuICAgICAgICAgICAgfCB0cnVlIC0+IFwiY2xvc2VkXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICFcIldlYlNvY2tldCAlcyAoJXtzZXhwOkNsb3NlX2NvZGUudH0pXCJcbiAgICAgICAgICAgIHdoYXRfaGFwcGVuZWRcbiAgICAgICAgICAgIChDbG9zZV9jb2RlLm9mX2V2ZW50IGNsb3NlX2V2ZW50KVxuICAgICAgICBpblxuICAgICAgICBjbGVhbnVwIH5yZWFzb246KEVycm9yLm9mX3N0cmluZyByZWFzb24pO1xuICAgICAgICBKcy5fZmFsc2VcbiAgICAgIGluXG4gICAgICBsZXQgb25tZXNzYWdlIChldmVudCA6IF8gV2ViU29ja2V0cy5tZXNzYWdlRXZlbnQgSnMudCkgPVxuICAgICAgICBsZXQgZGF0YSA9IFR5cGVkX2FycmF5LkJpZ3N0cmluZy5vZl9hcnJheUJ1ZmZlciBldmVudCMjLmRhdGFfYnVmZmVyIGluXG4gICAgICAgIFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFja19pZl9vcGVuIGZyb21fc2VydmVyIGRhdGE7XG4gICAgICAgIEpzLl9mYWxzZVxuICAgICAgaW5cbiAgICAgIGxldCBjb25uZWN0ZWQgKCkgPSBJdmFyLmZpbGxfaWZfZW1wdHkgY29ubmVjdGVkX2l2YXIgKE9rICgpKSBpblxuICAgICAgd2Vic29ja2V0IyMuYmluYXJ5VHlwZSA6PSBKcy5zdHJpbmcgXCJhcnJheWJ1ZmZlclwiO1xuICAgICAgKCogaWYgdGhlIHdlYnNvY2tldCBpcyBhbHJlYWR5IGNsb3NlZCwgW29uY2xvc2VdIHdvbid0IGJlIHJlLWZpcmVkIHdoZW4gd2UgYWRkIG91clxuICAgICAgICAgaGFuZGxlci4gKilcbiAgICAgIChtYXRjaCB3ZWJzb2NrZXQjIy5yZWFkeVN0YXRlIHdpdGhcbiAgICAgICB8IENPTk5FQ1RJTkcgLT5cbiAgICAgICAgIHdlYnNvY2tldCMjLm9ub3BlblxuICAgICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biAoXyA6IF8gRG9tLmV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgIGNvbm5lY3RlZCAoKTtcbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICAgICAgIHwgT1BFTiAtPiBjb25uZWN0ZWQgKClcbiAgICAgICB8IENMT1NJTkcgfCBDTE9TRUQgLT5cbiAgICAgICAgICgqIGUuZy4sIFJlZnVzZWQgdG8gY29ubmVjdCB0byB3czogYmVjYXVzZSBpdCB2aW9sYXRlcyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAqKVxuICAgICAgICAgY2xlYW51cCB+cmVhc29uOihFcnJvci5vZl9zdHJpbmcgXCJXZWJTb2NrZXQgZmFpbGVkIGltbWVkaWF0ZWx5IChpbGxlZ2FsIFVSST8pXCIpKTtcbiAgICAgICgqIFVwb24gYW4gZXJyb3IsIFtvbmVycm9yXSBmaXJlcyBhbmQgdGhlbiBbb25jbG9zZV0gZmlyZXMgKGl0J3MgcG9zc2libGUgZm9yIGFcbiAgICAgICAgIGdyYWNlZnVsIGNsb3N1cmUgdG8gY2FsbCBbb25jbG9zZV0gb25seSkuIFNpbmNlIEFzeW5jX1JQQyBoYXMgbm8gbm90aW9uIG9mXG4gICAgICAgICBncmFjZWZ1bCBjbG9zdXJlLCB3ZSBvbmx5IG5lZWQgdG8gaGFuZGxlIFtvbmNsb3NlXSBhbnl3YXkuIEZ1cnRoZXIsIHRoZSBldmVudFxuICAgICAgICAgcGFzc2VkIHRvIFtvbmVycm9yXSBjb250YWlucyBubyBleHRyYSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXJyb3IuICBOb3RlIHRoYXQgd2VcbiAgICAgICAgIHN0aWxsIGxpc3RlbiB0byBbb25lcnJvcl0gdG8gcHJldmVudCB0aGUgZXJyb3IgZnJvbSBsZWFraW5nIHRvIHVuY29udHJvbGxlZFxuICAgICAgICAgY29udGV4dCAqKVxuICAgICAgd2Vic29ja2V0IyMub25lcnJvclxuICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biAoXyA6IF8gRG9tLmV2ZW50IEpzLnQpIC0+XG4gICAgICAgIEFzeW5jX2pzX2RlYnVnLmxvZ19zIFslbWVzc2FnZSBcIndlYnNvY2tldCBlbmNvdW50ZXJlZCB1bmV4cGVjdGVkIGVycm9yXCJdO1xuICAgICAgICBKcy5fZmFsc2UpO1xuICAgICAgd2Vic29ja2V0IyMub25tZXNzYWdlIDo9IERvbS5oYW5kbGVyIG9ubWVzc2FnZTtcbiAgICAgIHdlYnNvY2tldCMjLm9uY2xvc2UgOj0gRG9tLmhhbmRsZXIgb25jbG9zZTtcbiAgICAgIGxldCBjb25uZWN0ZWRfZGVmZXJyZWQgPSBJdmFyLnJlYWQgY29ubmVjdGVkX2l2YXIgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgIChtYXRjaCViaW5kIGNvbm5lY3RlZF9kZWZlcnJlZCB3aXRoXG4gICAgICAgICB8IEVycm9yIChfIDogRXJyb3IudCkgLT4gcmV0dXJuICgpXG4gICAgICAgICB8IE9rICgpIC0+XG4gICAgICAgICAgIFBpcGUuaXRlcl93aXRob3V0X3B1c2hiYWNrIHRvX3NlcnZlciB+ZjooZnVuIGRhdGEgLT5cbiAgICAgICAgICAgICBtYXRjaCAod2Vic29ja2V0IyMucmVhZHlTdGF0ZSA6IFdlYlNvY2tldHMucmVhZHlTdGF0ZSkgd2l0aFxuICAgICAgICAgICAgIHwgQ09OTkVDVElORyAtPlxuICAgICAgICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJCVUc6IG9ub3BlbiBjYWxsZWQgYnV0IHJlYWR5U3RhdGUgaXMgQ09OTkVDVElOR1wiXVxuICAgICAgICAgICAgIHwgQ0xPU0lORyB8IENMT1NFRCAtPiAoKVxuICAgICAgICAgICAgIHwgT1BFTiAtPlxuICAgICAgICAgICAgICAgbGV0IGJ1ZmZlciA9IFR5cGVkX2FycmF5LkJpZ3N0cmluZy50b19hcnJheUJ1ZmZlciBkYXRhIGluXG4gICAgICAgICAgICAgICAodHJ5IHdlYnNvY2tldCMjc2VuZF9idWZmZXIgYnVmZmVyIHdpdGhcbiAgICAgICAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2UgKEVycm9yLnRhZyB+dGFnOlwid2Vic29ja2V0IyNzZW5kX2J1ZmZlclwiIChFcnJvci5vZl9leG4gZXhuKSkpKSk7XG4gICAgICBsZXQgY2xlYW51cF93aGVuX2FfcGlwZV9pc19jbG9zZWQgPVxuICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICBEZWZlcnJlZC5hbnlfdW5pdCBbIFBpcGUuY2xvc2VkIHRvX3NlcnZlcjsgUGlwZS5jbG9zZWQgZnJvbV9zZXJ2ZXIgXVxuICAgICAgICBpblxuICAgICAgICBjbGVhbnVwIH5yZWFzb246KEVycm9yLm9mX3N0cmluZyBcIlJQQyBjb25uZWN0aW9uIGNsb3NlZCBieSBjbGllbnRcIilcbiAgICAgIGluXG4gICAgICBkb24ndF93YWl0X2ZvciBjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZDtcbiAgICAgIGNvbm5lY3RlZF9kZWZlcnJlZFxuICA7O1xuXG4gIGxldCBkZWZhdWx0X3VyaSAoKSA9XG4gICAgbGV0IHNjaGVtZSA9IGlmIFN0cmluZy5lcXVhbCBVcmwuQ3VycmVudC5wcm90b2NvbCBcImh0dHBzOlwiIHRoZW4gXCJ3c3NcIiBlbHNlIFwid3NcIiBpblxuICAgIGxldCBwb3J0ID1cbiAgICAgIG1hdGNoIFVybC5DdXJyZW50LnBvcnQgd2l0aFxuICAgICAgfCBTb21lIHBvcnQgLT4gcG9ydFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGlmIFN0cmluZy5lcXVhbCBVcmwuQ3VycmVudC5wcm90b2NvbCBcImh0dHBzOlwiXG4gICAgICAgIHRoZW4gVXJsLmRlZmF1bHRfaHR0cHNfcG9ydFxuICAgICAgICBlbHNlIFVybC5kZWZhdWx0X2h0dHBfcG9ydFxuICAgIGluXG4gICAgbGV0IGhvc3QgPSBVcmwuQ3VycmVudC5ob3N0IGluXG4gICAgVXJpLm1ha2UgfnNjaGVtZSB+aG9zdCB+cG9ydCAoKVxuICA7O1xuXG4gIGxldCBjbGllbnQgPyh1cmkgPSBkZWZhdWx0X3VyaSAoKSkgP2hlYXJ0YmVhdF9jb25maWcgP2Rlc2NyaXB0aW9uID9pbXBsZW1lbnRhdGlvbnMgKCkgPVxuICAgIGxldCBkZXNjcmlwdGlvbiA9XG4gICAgICBJbmZvLmNyZWF0ZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIndlYnNvY2tldFwiIChkZXNjcmlwdGlvbiA6IChJbmZvLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKSAodXJpIDogVXJpLnQpXVxuICAgIGluXG4gICAgbGV0IG1ha2VfY29ubmVjdGlvbiB0cmFuc3BvcnQgPVxuICAgICAgbGV0IGNyZWF0ZSB7IFQuQ2xpZW50X2ltcGxlbWVudGF0aW9ucy5jb25uZWN0aW9uX3N0YXRlOyBpbXBsZW1lbnRhdGlvbnMgfSA9XG4gICAgICAgIFQuY3JlYXRlXG4gICAgICAgICAgdHJhbnNwb3J0XG4gICAgICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgICAgICB+ZGVzY3JpcHRpb25cbiAgICAgICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIGluXG4gICAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbnMgd2l0aFxuICAgICAgfCBOb25lIC0+IGNyZWF0ZSAoVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLm51bGwgKCkpXG4gICAgICB8IFNvbWUgaW1wbGVtZW50YXRpb25zIC0+IGNyZWF0ZSBpbXBsZW1lbnRhdGlvbnNcbiAgICBpblxuICAgIGxldCBmcm9tX3NlcnZlcl9yLCBmcm9tX3NlcnZlcl93ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgdG9fc2VydmVyX3IsIHRvX3NlcnZlcl93ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBtYXRjaCViaW5kXG4gICAgICBjb25uZWN0X3dlYnNvY2tldCB1cmkgfmZyb21fc2VydmVyOmZyb21fc2VydmVyX3cgfnRvX3NlcnZlcjp0b19zZXJ2ZXJfclxuICAgIHdpdGhcbiAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT4gcmV0dXJuIGVycm9yXG4gICAgfCBPayAoKSAtPlxuICAgICAgbGV0IHRyYW5zcG9ydCA9XG4gICAgICAgIEFzeW5jX3JwY19rZXJuZWwuUGlwZV90cmFuc3BvcnQuY3JlYXRlXG4gICAgICAgICAgQXN5bmNfcnBjX2tlcm5lbC5QaXBlX3RyYW5zcG9ydC5LaW5kLmJpZ3N0cmluZ1xuICAgICAgICAgIGZyb21fc2VydmVyX3JcbiAgICAgICAgICB0b19zZXJ2ZXJfd1xuICAgICAgaW5cbiAgICAgIChtYXRjaCViaW5kIG1ha2VfY29ubmVjdGlvbiB0cmFuc3BvcnQgd2l0aFxuICAgICAgIHwgT2sgY29ubmVjdGlvbiAtPiByZXR1cm4gKE9rIGNvbm5lY3Rpb24pXG4gICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgIGxldCViaW5kICgpID0gQXN5bmNfcnBjX2tlcm5lbC5ScGMuVHJhbnNwb3J0LmNsb3NlIHRyYW5zcG9ydCBpblxuICAgICAgICAgcmV0dXJuIChPcl9lcnJvci5vZl9leG4gZXhuKSlcbiAgOztcblxuICBsZXQgY2xpZW50X2V4biA/dXJpID9oZWFydGJlYXRfY29uZmlnID9kZXNjcmlwdGlvbiA/aW1wbGVtZW50YXRpb25zICgpID1cbiAgICBjbGllbnQgP3VyaSA/aGVhcnRiZWF0X2NvbmZpZyA/ZGVzY3JpcHRpb24gP2ltcGxlbWVudGF0aW9ucyAoKSA+PnwgT3JfZXJyb3Iub2tfZXhuXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBBc3luY19ycGNfa2VybmVsLlJwY1xuXG5tb2R1bGUgQ29ubmVjdGlvbiA9IHN0cnVjdFxuICBpbmNsdWRlIENvbm5lY3Rpb25cbiAgaW5jbHVkZSBXZWJzb2NrZXRfY29ubmVjdGlvblxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19ycGNfa2VybmVsXG5cbm1vZHVsZSBVcmkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFVyaVxuXG4gICAgbGV0IHRvX3N0cmluZyBzID0gVXJpLnRvX3N0cmluZyBzXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLk9mX3N0cmluZ2FibGUgKFQpXG5lbmRcblxubW9kdWxlIFJwYyA9IHN0cnVjdFxuICBpbmNsdWRlIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGNcblxuICBsZXQgY3JlYXRlX2Zyb21fdXJpID0gUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jcmVhdGUgfmFkZHJlc3M6KG1vZHVsZSBVcmkpXG5cbiAgbGV0IGNyZWF0ZV9mcm9tX3VyaV9vcHRpb24gPVxuICAgIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY3JlYXRlXG4gICAgICB+YWRkcmVzczpcbiAgICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBVcmkudCBvcHRpb24gW0BAZGVyaXZpbmcgZXF1YWwsIHNleHBdXG4gICAgICAgIGVuZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgVmVyc2lvbmVkX3JwYyA9IEFzeW5jX3JwY19rZXJuZWwuUGVyc2lzdGVudF9jb25uZWN0aW9uLlZlcnNpb25lZF9ycGNcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBPcHQgPSBKcy5PcHRcbm1vZHVsZSBPcHRkZWYgPSBKcy5PcHRkZWZcblxubW9kdWxlIFJlc3BvbnNlX3R5cGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgWG1sSHR0cFJlcXVlc3QucmVzcG9uc2UgPVxuICAgIHwgQXJyYXlCdWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IE9wdC50IHRcbiAgICB8IEJsb2IgOiAjRmlsZS5ibG9iIEpzLnQgSnMuT3B0LnQgdFxuICAgIHwgRG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgSnMudCBPcHQudCB0XG4gICAgfCBKU09OIDogJ2EgT3B0LnQgdFxuICAgIHwgVGV4dCA6IEpzLmpzX3N0cmluZyBKcy50IHRcbiAgICB8IERlZmF1bHQgOiBzdHJpbmcgdFxuZW5kXG5cbm1vZHVsZSBSZXNwb25zZSA9IHN0cnVjdFxuICB0eXBlICdyZXNwb25zZSB0ID1cbiAgICB7IGNvZGUgOiBpbnRcbiAgICA7IGdldF9oZWFkZXIgOiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICAgIDsgY29udGVudCA6ICdyZXNwb25zZVxuICAgIH1cbmVuZFxuXG5tb2R1bGUgUG9zdF9ib2R5ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBCbG9iIG9mIEZpbGUuYmxvYiBKcy50XG4gICAgfCBEb2N1bWVudCBvZiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgSnMudFxuICAgIHwgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgRm9ybV9kYXRhIG9mIEZvcm0uZm9ybURhdGEgSnMudFxuZW5kXG5cbm1vZHVsZSBNZXRob2Rfd2l0aF9hcmdzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBHZXQgb2YgKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAgIHwgUG9zdCBvZiBQb3N0X2JvZHkudCBvcHRpb25cbmVuZFxuXG50eXBlICdrIHdpdGhfcmVxdWVzdF9hcmdzID1cbiAgP2hlYWRlcnM6KHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAtPiA/b25fcHJvZ3Jlc3M6KGxvYWRlZDppbnQgLT4gdG90YWw6aW50IC0+IHVuaXQpXG4gIC0+ID9vbl91cGxvYWRfcHJvZ3Jlc3M6KGxvYWRlZDppbnQgLT4gdG90YWw6aW50IC0+IHVuaXQpXG4gIC0+IHVybDpzdHJpbmdcbiAgLT4gJ2tcblxubGV0IGhhc19nZXRfYXJncyB1cmwgPSBPcHRpb24uaXNfc29tZSAoU3RyaW5nLmluZGV4IHVybCAnPycpXG5cbmxldCByZXF1ZXN0XG4gICAgICA/KGhlYWRlcnMgPSBbXSlcbiAgICAgID9vbl9wcm9ncmVzc1xuICAgICAgP29uX3VwbG9hZF9wcm9ncmVzc1xuICAgICAgfnVybFxuICAgICAgKHR5cGUgcmVzcClcbiAgICAgIH4ocmVzcG9uc2VfdHlwZSA6IHJlc3AgUmVzcG9uc2VfdHlwZS50KVxuICAgICAgKG1ldGhvZF93aXRoX2FyZ3MgOiBNZXRob2Rfd2l0aF9hcmdzLnQpXG4gID1cbiAgbGV0IHVybCwgbWV0aG9kX3N0cmluZyA9XG4gICAgbWF0Y2ggbWV0aG9kX3dpdGhfYXJncyB3aXRoXG4gICAgfCBHZXQgYXJncyAtPlxuICAgICAgdXJsIF4gKGlmIGhhc19nZXRfYXJncyB1cmwgdGhlbiBcIiZcIiBlbHNlIFwiP1wiKSBeIFVybC5lbmNvZGVfYXJndW1lbnRzIGFyZ3MsIFwiR0VUXCJcbiAgICB8IFBvc3QgX2JvZHkgLT4gdXJsLCBcIlBPU1RcIlxuICBpblxuICBsZXQgcmVxID0gWG1sSHR0cFJlcXVlc3QuY3JlYXRlICgpIGluXG4gIHJlcSMjX29wZW4gKEpzLnN0cmluZyBtZXRob2Rfc3RyaW5nKSAoSnMuc3RyaW5nIHVybCkgSnMuX3RydWU7XG4gIChsZXQgb3BlbiBSZXNwb25zZV90eXBlIGluXG4gICBtYXRjaCByZXNwb25zZV90eXBlIHdpdGhcbiAgIHwgQXJyYXlCdWZmZXIgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImFycmF5YnVmZmVyXCJcbiAgIHwgQmxvYiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYmxvYlwiXG4gICB8IERvY3VtZW50IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJkb2N1bWVudFwiXG4gICB8IEpTT04gLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImpzb25cIlxuICAgfCBUZXh0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJ0ZXh0XCJcbiAgIHwgRGVmYXVsdCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiXCIpO1xuICBMaXN0Lml0ZXIgaGVhZGVycyB+ZjooZnVuIChuYW1lLCB2YWx1ZSkgLT5cbiAgICByZXEjI3NldFJlcXVlc3RIZWFkZXIgKEpzLnN0cmluZyBuYW1lKSAoSnMuc3RyaW5nIHZhbHVlKSk7XG4gIGxldCByZXNwb25zZSA6IHJlc3AgUmVzcG9uc2UudCBPcl9lcnJvci50IEl2YXIudCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIHJlcSMjLm9uZXJyb3JcbiAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgSXZhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJOZXR3b3JrIGVycm9yXCIpO1xuICAgIEpzLl90cnVlKTtcbiAgcmVxIyMub250aW1lb3V0XG4gIDo9IERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgIEl2YXIuZmlsbF9pZl9lbXB0eSByZXNwb25zZSAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiVGltZW91dFwiKTtcbiAgICBKcy5fdHJ1ZSk7XG4gIHJlcSMjLm9ucmVhZHlzdGF0ZWNoYW5nZVxuICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPlxuICAgIG1hdGNoIHJlcSMjLnJlYWR5U3RhdGUgd2l0aFxuICAgIHwgRE9ORSAtPlxuICAgICAgbGV0IHJlcyA9XG4gICAgICAgIGlmIHJlcSMjLnN0YXR1cyA+PSAyMDAgJiYgcmVxIyMuc3RhdHVzIDwgMzAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCViaW5kLk9yX2Vycm9yIGNvbnRlbnQgOiByZXNwIE9yX2Vycm9yLnQgPVxuICAgICAgICAgICAgbGV0IGdldF90ZXh0X2NvbnRlbnRzX29yX2Vycm9yICgpID1cbiAgICAgICAgICAgICAgT3B0LmNhc2VcbiAgICAgICAgICAgICAgICByZXEjIy5yZXNwb25zZVRleHRcbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIHNob3VsZCBub3QgYmUgZW50ZXJlZCBhcyBwZXIgdGhlIHNwZWNpZmljYXRpb24gb2ZcbiAgICAgICAgICAgICAgICAgICAgICBYTUxIdHRwUmVxdWVzdCBhdCBNRE4gd2ViIGRvY3MsIGJlY2F1c2UgaWYgYSByZXF1ZXN0IGlzIHN1Y2Nlc3NmdWwsXG4gICAgICAgICAgICAgICAgICAgICAgaW4gc3RhdGUgW0RPTkVdIGFuZCByZXNwb25zZV90eXBlIFtUZXh0XSBvciBbRGVmYXVsdF0sXG4gICAgICAgICAgICAgICAgICAgICAgW3Jlc3BvbnNlVGV4dF0gc2hvdWxkIG5vdCBiZSBbbnVsbF0uXG4gICAgICAgICAgICAgICAgICAgICAgU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdC9yZXNwb25zZVRleHRcbiAgICAgICAgICAgICAgICAgICAqKVxuICAgICAgICAgICAgICAgICAgIGVycm9yX3NcbiAgICAgICAgICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgICAgICAgICBcIk5vIHJlc3BvbnNlIHJldHVybmVkIGRlc3BpdGUgc3VjY2Vzc2Z1bCByZXF1ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICwgeyBjb2RlID0gKHJlcSMjLnN0YXR1cyA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAgOyBzdGF0dXNfdGV4dCA9IChKcy50b19zdHJpbmcgcmVxIyMuc3RhdHVzVGV4dCA6IHN0cmluZylcbiAgICAgICAgICAgICAgICAgICAgICAgfV0pXG4gICAgICAgICAgICAgICAgUmVzdWx0LnJldHVyblxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBvcGVuIFJlc3BvbnNlX3R5cGUgaW5cbiAgICAgICAgICAgIG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICAgICAgICAgICAgfCBBcnJheUJ1ZmZlciAtPiBPayAoRmlsZS5Db2VyY2VUby5hcnJheUJ1ZmZlciByZXEjIy5yZXNwb25zZSlcbiAgICAgICAgICAgIHwgQmxvYiAtPiBPayAoRmlsZS5Db2VyY2VUby5ibG9iIHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBEb2N1bWVudCAtPiBPayAoRmlsZS5Db2VyY2VUby5kb2N1bWVudCByZXEjIy5yZXNwb25zZSlcbiAgICAgICAgICAgIHwgSlNPTiAtPiBPayAoRmlsZS5Db2VyY2VUby5qc29uIHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBUZXh0IC0+IGdldF90ZXh0X2NvbnRlbnRzX29yX2Vycm9yICgpXG4gICAgICAgICAgICB8IERlZmF1bHQgLT4gT3JfZXJyb3IubWFwIChnZXRfdGV4dF9jb250ZW50c19vcl9lcnJvciAoKSkgfmY6SnMudG9fc3RyaW5nXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZ2V0X2hlYWRlciBzID1cbiAgICAgICAgICAgIE9wdC5jYXNlXG4gICAgICAgICAgICAgIChyZXEjI2dldFJlc3BvbnNlSGVhZGVyIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgICAgICAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgICAgICAgICAgIChmdW4gdiAtPiBTb21lIChKcy50b19zdHJpbmcgdikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBPayB7IFJlc3BvbnNlLmNvbnRlbnQ7IGNvZGUgPSByZXEjIy5zdGF0dXM7IGdldF9oZWFkZXIgfSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICBcIlJlcXVlc3QgZmFpbGVkXCJcbiAgICAgICAgICAgICwgeyBjb2RlID0gKHJlcSMjLnN0YXR1cyA6IGludClcbiAgICAgICAgICAgICAgOyBzdGF0dXNfdGV4dCA9IChKcy50b19zdHJpbmcgcmVxIyMuc3RhdHVzVGV4dCA6IHN0cmluZylcbiAgICAgICAgICAgICAgfV1cbiAgICAgIGluXG4gICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgcmVzXG4gICAgfCBfIC0+ICgpKTtcbiAgT3B0aW9uLml0ZXIgb25fcHJvZ3Jlc3MgfmY6KGZ1biBvbl9wcm9ncmVzcyAtPlxuICAgIHJlcSMjLm9ucHJvZ3Jlc3NcbiAgICA6PSBEb20uaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgIG9uX3Byb2dyZXNzIH5sb2FkZWQ6ZSMjLmxvYWRlZCB+dG90YWw6ZSMjLnRvdGFsO1xuICAgICAgSnMuX3RydWUpKTtcbiAgT3B0ZGVmLml0ZXIgcmVxIyMudXBsb2FkIChmdW4gdXBsb2FkIC0+XG4gICAgT3B0aW9uLml0ZXIgb25fdXBsb2FkX3Byb2dyZXNzIH5mOihmdW4gb25fdXBsb2FkX3Byb2dyZXNzIC0+XG4gICAgICB1cGxvYWQjIy5vbnByb2dyZXNzXG4gICAgICA6PSBEb20uaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgICAgb25fdXBsb2FkX3Byb2dyZXNzIH5sb2FkZWQ6ZSMjLmxvYWRlZCB+dG90YWw6ZSMjLnRvdGFsO1xuICAgICAgICBKcy5fdHJ1ZSkpKTtcbiAgKG1hdGNoIG1ldGhvZF93aXRoX2FyZ3Mgd2l0aFxuICAgfCBHZXQgXyAtPiByZXEjI3NlbmQgSnMubnVsbFxuICAgfCBQb3N0IGJvZHkgLT5cbiAgICAgKG1hdGNoIGJvZHkgd2l0aFxuICAgICAgfCBOb25lIC0+IHJlcSMjc2VuZCBKcy5udWxsXG4gICAgICB8IFNvbWUgYm9keSAtPlxuICAgICAgICAobWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICB8IEJsb2IgYiAtPiByZXEjI3NlbmRfYmxvYiBiXG4gICAgICAgICB8IERvY3VtZW50IGQgLT4gcmVxIyNzZW5kX2RvY3VtZW50IGRcbiAgICAgICAgIHwgU3RyaW5nIHMgLT4gcmVxIyNzZW5kIChKcy5zb21lIChKcy5zdHJpbmcgcykpXG4gICAgICAgICB8IEZvcm1fZGF0YSBmZCAtPiByZXEjI3NlbmRfZm9ybURhdGEgZmQpKSk7XG4gIEl2YXIucmVhZCByZXNwb25zZVxuOztcblxubGV0IGdldCA/KGFyZ3VtZW50cyA9IFtdKSB1cmwgPVxuICBEZWZlcnJlZC5Pcl9lcnJvci5tYXBcbiAgICB+ZjooZnVuIHJlc3AgLT4gcmVzcC5jb250ZW50KVxuICAgIChyZXF1ZXN0IH51cmwgfnJlc3BvbnNlX3R5cGU6RGVmYXVsdCAoR2V0IGFyZ3VtZW50cykpXG47O1xuXG5sZXQgcG9zdCA/Ym9keSB1cmwgPVxuICBEZWZlcnJlZC5Pcl9lcnJvci5tYXBcbiAgICB+ZjooZnVuIHJlc3AgLT4gcmVzcC5jb250ZW50KVxuICAgIChyZXF1ZXN0IH51cmwgfnJlc3BvbnNlX3R5cGU6RGVmYXVsdCAoUG9zdCBib2R5KSlcbjs7XG4iLCJvcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gQ29yZS5UaW1lX25zXG5tb2R1bGUgQ2xvY2tfbnMgPSBBc3luY19rZXJuZWwuQ2xvY2tfbnNcbm1vZHVsZSBTY2hlZHVsZXIgPSBBc3luY19rZXJuZWwuQXN5bmNfa2VybmVsX3NjaGVkdWxlci5Qcml2YXRlXG5vcGVuIEpzX29mX29jYW1sXG5cbmxldCBzbGVlcCBkID0gQ2xvY2tfbnMuYWZ0ZXIgKFRpbWVfbnMuU3Bhbi5vZl9zZWMgZClcbmxldCB5aWVsZCAoKSA9IFNjaGVkdWxlci55aWVsZCAoU2NoZWR1bGVyLnQgKCkpXG5cbmxldCByZWMgZXh0cmFjdF9qc19lcnJvciAoZXhuIDogZXhuKSA6IChzdHJpbmcgbGlzdCAqIEpzX2Vycm9yLnQpIG9wdGlvbiA9XG4gIG1hdGNoIGV4biB3aXRoXG4gIHwgRXhuLlJlcmFpc2VkIChtc2csIGV4bikgLT5cbiAgICAobWF0Y2ggZXh0cmFjdF9qc19lcnJvciBleG4gd2l0aFxuICAgICB8IFNvbWUgKG1lc3NhZ2VzLCBqc19lcnJvcikgLT4gU29tZSAobXNnIDo6IG1lc3NhZ2VzLCBqc19lcnJvcilcbiAgICAgfCBOb25lIC0+IE5vbmUpXG4gIHwgZXhuIC0+XG4gICAgKG1hdGNoIEpzX2Vycm9yLm9mX2V4biBleG4gd2l0aFxuICAgICB8IFNvbWUganNfZXJyb3IgLT4gU29tZSAoW10sIGpzX2Vycm9yKVxuICAgICB8IE5vbmUgLT4gTm9uZSlcbjs7XG5cbmxldCBwcmV0dHlfcHJpbnRfZXhjZXB0aW9uIG5hbWUgZXhuID1cbiAgbGV0IGV4biA9IEFzeW5jX2tlcm5lbC5Nb25pdG9yLmV4dHJhY3RfZXhuIGV4biBpblxuICBsZXQgY2xhc3NpZmljYXRpb24gPVxuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgfCBKc19lcnJvci5FeG4gZXJyIC0+IGBKcyBlcnJcbiAgICB8IGV4biAtPlxuICAgICAgKG1hdGNoIGV4dHJhY3RfanNfZXJyb3IgZXhuIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gYEV4biBleG5cbiAgICAgICB8IFNvbWUgZXJyIC0+IGBKc19hbmRfZXhuIChleG4sIGVycikpXG4gIGluXG4gIG1hdGNoIGNsYXNzaWZpY2F0aW9uIHdpdGhcbiAgfCBgSnMgZXJyIC0+IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiAoSnMuc3RyaW5nIG5hbWUpIGVyclxuICB8IGBFeG4gZXhuIC0+IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiAoSnMuc3RyaW5nIG5hbWUpIChKcy5zdHJpbmcgKEV4bi50b19zdHJpbmcgZXhuKSlcbiAgfCBgSnNfYW5kX2V4biAoZXhuLCAobWVzc2FnZXMsIGVycikpIC0+XG4gICAgKG1hdGNoIG1lc3NhZ2VzIHdpdGhcbiAgICAgfCBbXSAtPiBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwIChKcy5zdHJpbmcgbmFtZSlcbiAgICAgfCBoZCA6OiByZXN0IC0+XG4gICAgICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cCAoSnMuc3RyaW5nIGhkKTtcbiAgICAgICBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIG5hbWUpO1xuICAgICAgIExpc3QuaXRlciByZXN0IH5mOihmdW4gbWVzc2FnZSAtPiBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIChKcy5zdHJpbmcgbWVzc2FnZSkpKTtcbiAgICAoKiBXZSBmaXJzdCBvdXRwdXQgdGhlIHN0cmluZ2lmaWVkIG9jYW1sIGV4Y2VwdGlvbiAqKVxuICAgIEZpcmVidWcuY29uc29sZSMjZ3JvdXBDb2xsYXBzZWQgKEpzLnN0cmluZyBcIk9DYW1sIEV4Y2VwdGlvblwiKTtcbiAgICBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIChFeG4udG9fc3RyaW5nIGV4bikpO1xuICAgIEZpcmVidWcuY29uc29sZSMjZ3JvdXBFbmQ7XG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciBlcnI7XG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cEVuZFxuOztcblxubGV0IHJ1biA9XG4gIGxldCBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBJZGxlXG4gICAgICB8IFJ1bm5pbmdcbiAgICAgIHwgV2lsbF9ydW5fc29vblxuICBlbmRcbiAgaW5cbiAgbGV0IG1vZHVsZSBOZXh0X3dha2V1cCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEF0IG9mIFRpbWVfbnMudCAqIGZsb2F0XG4gICAgICB8IE5vX3dha2V1cFxuICAgICAgfCBTb29uXG4gIGVuZFxuICBpblxuICBsZXQgc3RhdGUgPSByZWYgU3RhdGUuSWRsZSBpblxuICBsZXQgdGltZW91dHMgPSBTdGFjay5jcmVhdGUgKCkgaW5cbiAgbGV0IHJ1bl9hZnRlciB+ZiB+bXMgPSBpZ25vcmUgKERvbV9odG1sLnNldFRpbWVvdXQgZiBtcyA6IERvbV9odG1sLnRpbWVvdXRfaWRfc2FmZSkgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBsZXQgdCA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgbWF0Y2ggIXN0YXRlLCBTY2hlZHVsZXIudW5jYXVnaHRfZXhuIHQgd2l0aFxuICAgIHwgXywgU29tZSBfIHwgU3RhdGUuUnVubmluZywgTm9uZSAtPiAoKVxuICAgIHwgKFN0YXRlLklkbGUgfCBTdGF0ZS5XaWxsX3J1bl9zb29uKSwgTm9uZSAtPlxuICAgICAgc3RhdGUgOj0gU3RhdGUuUnVubmluZztcbiAgICAgIFNjaGVkdWxlci5ydW5fY3ljbGUgdDtcbiAgICAgIGxldCBuZXh0X3dha2V1cCA6IE5leHRfd2FrZXVwLnQgPVxuICAgICAgICBpZiBTY2hlZHVsZXIuY2FuX3J1bl9hX2pvYiB0XG4gICAgICAgIHRoZW4gU29vblxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBTY2hlZHVsZXIubmV4dF91cGNvbWluZ19ldmVudCB0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9fd2FrZXVwXG4gICAgICAgICAgfCBTb21lIG5leHQgLT5cbiAgICAgICAgICAgIGxldCBub3cgPSBUaW1lX25zLm5vdyAoKSBpblxuICAgICAgICAgICAgbGV0IGQgPSBUaW1lX25zLmRpZmYgbmV4dCBub3cgaW5cbiAgICAgICAgICAgIGxldCBkX21zID0gVGltZV9ucy5TcGFuLnRvX21zIGQgaW5cbiAgICAgICAgICAgIGlmIEZsb2F0LiggPD0gKSBkX21zIDAuIHRoZW4gU29vbiBlbHNlIEF0IChuZXh0LCBkX21zKSlcbiAgICAgIGluXG4gICAgICBPcHRpb24uaXRlciAoU2NoZWR1bGVyLnVuY2F1Z2h0X2V4bl91bndyYXBwZWQgdCkgfmY6KGZ1biAoZXhuLCBfc2V4cCkgLT5cbiAgICAgICAgbWF0Y2ggQXN5bmNfa2VybmVsLk1vbml0b3IuZXh0cmFjdF9leG4gZXhuIHdpdGhcbiAgICAgICAgfCBKc19lcnJvci5FeG4gZXJyIC0+IEpzX2Vycm9yLnJhaXNlXyBlcnJcbiAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAobWF0Y2ggSnNfZXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBleG5cbiAgICAgICAgICAgfCBTb21lIGVyciAtPlxuICAgICAgICAgICAgICgqIEhhY2sgdG8gZ2V0IGEgYmV0dGVyIGJhY2t0cmFjZSAqKVxuICAgICAgICAgICAgIHByZXR0eV9wcmludF9leGNlcHRpb24gXCJFcnJvcjpcIiBleG47XG4gICAgICAgICAgICAgKCogQW5kIHRoZW4gcmFpc2UgdGhlIGVtYmVkZGVkIGphdmFzY3JpcHQgZXJyb3IgdGhhdCBwcm92aWRlcyBhIHByb3BlclxuICAgICAgICAgICAgICAgIGJhY2t0cmFjZSB3aXRoIGdvb2Qgc291cmNlbWFwIHN1cHBvcnQuXG4gICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhpcyBqYXZhc2NyaXB0IGVycm9yIGlzIHByb2JhYmx5IG5vdCBtZWFuaW5nZnVsIHdoaWNoIGlzIHdoeVxuICAgICAgICAgICAgICAgIHdlIGZpcnN0IG91dHB1dCB0aGUgc2VyaWFsaXphdGlvbiBvZiBvY2FtbCBleGNlcHRpb24uICopXG4gICAgICAgICAgICAgSnNfZXJyb3IucmFpc2VfIGVycikpO1xuICAgICAgKG1hdGNoIG5leHRfd2FrZXVwIHdpdGhcbiAgICAgICB8IE5vX3dha2V1cCAtPiBzdGF0ZSA6PSBJZGxlXG4gICAgICAgfCBTb29uIC0+XG4gICAgICAgICBzdGF0ZSA6PSBXaWxsX3J1bl9zb29uO1xuICAgICAgICAgcnVuX2FmdGVyIH5mOmxvb3Agfm1zOjAuXG4gICAgICAgfCBBdCAoYXQsIGRfbXMpIC0+XG4gICAgICAgICBzdGF0ZSA6PSBJZGxlO1xuICAgICAgICAgaWYgU3RhY2suaXNfZW1wdHkgdGltZW91dHMgfHwgVGltZV9ucy4oIDwgKSBhdCAoU3RhY2sudG9wX2V4biB0aW1lb3V0cylcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBTdGFjay5wdXNoIHRpbWVvdXRzIGF0O1xuICAgICAgICAgICBydW5fYWZ0ZXIgfmY6cnVuX3RpbWVvdXQgfm1zOmRfbXMpKVxuICBhbmQgcnVuX3RpbWVvdXQgKCkgPVxuICAgICgqIEVhY2ggY2FsbCB0byBbcnVuX3RpbWVvdXRdIHJlbW92ZXMgZXhhY3RseSBvbmUgZWxlbWVudCBmcm9tIFt0aW1lb3V0c10uICBUaGlzXG4gICAgICAgbWFpbnRhaW5zIHRoZSBpbnZhcmlhbnQgdGhhdCBbU3RhY2subGVuZ3RoIHRpbWVvdXRzXSBpcyBleGFjdGx5IHRoZSBudW1iZXIgb2ZcbiAgICAgICBvdXRzdGFuZGluZyB0aW1lb3V0cyB3ZSBoYXZlIHJlZ2lzdGVyZWQuICopXG4gICAgaWdub3JlIChTdGFjay5wb3BfZXhuIHRpbWVvdXRzIDogVGltZV9ucy50KTtcbiAgICBsb29wICgpXG4gIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICFzdGF0ZSB3aXRoXG4gICAgfCBTdGF0ZS5JZGxlIC0+XG4gICAgICBydW5fYWZ0ZXIgfmY6bG9vcCB+bXM6MC47XG4gICAgICBzdGF0ZSA6PSBTdGF0ZS5XaWxsX3J1bl9zb29uXG4gICAgfCBTdGF0ZS5SdW5uaW5nIHwgU3RhdGUuV2lsbF9ydW5fc29vbiAtPiAoKVxuOztcblxubGV0IGluaXRpYWxpemVkX3JlZiA9IHJlZiBmYWxzZVxuXG5sZXQgaW5pdGlhbGl6YXRpb24gPVxuICBsYXp5XG4gICAgKGxldCB0ID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICAgaW5pdGlhbGl6ZWRfcmVmIDo9IHRydWU7XG4gICAgIFNjaGVkdWxlci5zZXRfam9iX3F1ZXVlZF9ob29rIHQgKGZ1biBfIC0+IHJ1biAoKSk7XG4gICAgIFNjaGVkdWxlci5zZXRfZXZlbnRfYWRkZWRfaG9vayB0IChmdW4gXyAtPiBydW4gKCkpO1xuICAgICBTY2hlZHVsZXIuc2V0X3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIHQgcnVuO1xuICAgICBBc3luY19rZXJuZWwuTW9uaXRvci5FeHBlcnQudHJ5X3dpdGhfbG9nX2V4blxuICAgICA6PSBwcmV0dHlfcHJpbnRfZXhjZXB0aW9uIFwiQXN5bmNfa2VybmVsOiBNb25pdG9yLnRyeV93aXRoXCI7XG4gICAgIEFzeW5jX2tlcm5lbC5Nb25pdG9yLmRldGFjaF9hbmRfaXRlcl9lcnJvcnNcbiAgICAgICBBc3luY19rZXJuZWwuTW9uaXRvci5tYWluXG4gICAgICAgfmY6KHByZXR0eV9wcmludF9leGNlcHRpb24gXCJBc3luY19rZXJuZWw6IFVuaGFuZGxlZCBleGNlcHRpb25cIik7XG4gICAgIHJ1biAoKSlcbjs7XG5cbmxldCBpbml0ICgpID0gZm9yY2UgaW5pdGlhbGl6YXRpb25cbmxldCBpbml0aWFsaXplZCAoKSA9ICFpbml0aWFsaXplZF9yZWZcblxubGV0IGRvY3VtZW50X2xvYWRlZCA9XG4gIGxldCBqc19zdHJpbmdfY29tcGFyZSBzID1cbiAgICBsZXQgY29tcGFyZV91c2luZ19qYXZhc2NyaXB0X3RyaXBsZV9lcXVhbF9mb3Jfc3RyaW5ncyA9IHBoeXNfZXF1YWwgaW5cbiAgICBjb21wYXJlX3VzaW5nX2phdmFzY3JpcHRfdHJpcGxlX2VxdWFsX2Zvcl9zdHJpbmdzIChKcy5zdHJpbmcgcylcbiAgaW5cbiAgbGV0IHJlYWR5X3N0YXRlX2NoYW5nZSA9IFwicmVhZHlzdGF0ZWNoYW5nZVwiIGluXG4gIGxldCBjb21wbGV0ZSA9IFwiY29tcGxldGVcIiBpblxuICBsZXQgcmVhZHlzdGF0ZWNoYW5nZV9ldiA9IERvbS5FdmVudC5tYWtlIHJlYWR5X3N0YXRlX2NoYW5nZSBpblxuICBsZXQgYWRkX2V2ZW50IHRhcmdldCBldnQgaGFuZGxlciA9XG4gICAgaWdub3JlXG4gICAgICAoRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lciB0YXJnZXQgZXZ0IGhhbmRsZXIgSnMuX2ZhbHNlIDogRG9tLmV2ZW50X2xpc3RlbmVyX2lkKVxuICBpblxuICBmdW4gKCkgLT5cbiAgICBpZiBqc19zdHJpbmdfY29tcGFyZSBjb21wbGV0ZSBEb21faHRtbC5kb2N1bWVudCMjLnJlYWR5U3RhdGVcbiAgICB0aGVuIEFzeW5jX2tlcm5lbC5EZWZlcnJlZC51bml0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbG9hZGVkID0gQXN5bmNfa2VybmVsLkl2YXIuY3JlYXRlICgpIGluXG4gICAgICBsZXQgaGFuZGxlciBldnQgPVxuICAgICAgICBpZiAobm90IChqc19zdHJpbmdfY29tcGFyZSByZWFkeV9zdGF0ZV9jaGFuZ2UgZXZ0IyMuX3R5cGUpKVxuICAgICAgICB8fCBqc19zdHJpbmdfY29tcGFyZSBjb21wbGV0ZSBEb21faHRtbC5kb2N1bWVudCMjLnJlYWR5U3RhdGVcbiAgICAgICAgdGhlbiBBc3luY19rZXJuZWwuSXZhci5maWxsX2lmX2VtcHR5IGxvYWRlZCAoKTtcbiAgICAgICAgSnMuX3RydWVcbiAgICAgIGluXG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwuZG9jdW1lbnQgRG9tX2h0bWwuRXZlbnQuZG9tQ29udGVudExvYWRlZCAoRG9tLmhhbmRsZXIgaGFuZGxlcik7XG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwuZG9jdW1lbnQgcmVhZHlzdGF0ZWNoYW5nZV9ldiAoRG9tLmhhbmRsZXIgaGFuZGxlcik7XG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwud2luZG93IERvbV9odG1sLkV2ZW50LmxvYWQgKERvbS5oYW5kbGVyIGhhbmRsZXIpO1xuICAgICAgQXN5bmNfa2VybmVsLkl2YXIucmVhZCBsb2FkZWQpXG47O1xuIiwibW9kdWxlIFJwYyA9IFJwY1xubW9kdWxlIEh0dHAgPSBIdHRwXG5tb2R1bGUgRGVidWcgPSBEZWJ1Z1xubW9kdWxlIFBlcnNpc3RlbnRfY29ubmVjdGlvbiA9IFBlcnNpc3RlbnRfY29ubmVjdGlvblxuaW5jbHVkZSBBc3luY19qczBcblxubGV0IGxvZ19zID0gRGVidWcubG9nX3NcbmxldCBsb2dfc19hc19zdHJpbmcgPSBEZWJ1Zy5sb2dfc19hc19zdHJpbmdcbiIsIm9wZW4hIEJhc2VcblxuKCogVGhlIFtkYXRhXSBhcnJheSBpcyBhbiBpbXBsaWNpdCBiaW5hcnkgdHJlZSB3aXRoIFtjaGlsZHJlbl9sZW5ndGggKiAyIC0gMV0gbm9kZXMsXG4gICB3aXRoIGVhY2ggbm9kZSBiZWluZyB0aGUgc3VtIG9mIHRoZSB0d28gY2hpbGQgbm9kZXMgYW5kIHRoZSByb290IG5vZGUgYmVpbmcgdGhlIDB0aFxuICAgbm9kZS4gIFRoZSBsZWF2ZXMgb2YgdGhlIHRyZWUgYXJlIHRoZSBsYXN0IFtudW1fbGVhdmVzXSBub2Rlcy5cblxuICAgVGhlIGNoaWxkcmVuIGFyZSBub3QgbmVjZXNzYXJpbHkgYWxsIGF0IHRoZSBzYW1lIGxldmVsIG9mIHRoZSB0cmVlLiBGb3IgaW5zdGFuY2UgaWZcbiAgIHlvdSBoYXZlIDMgY2hpbGRyZW4gW3wgYTsgYjsgYyB8XTpcblxuICAge3ZcbiAgICAgICAgICBvXG4gICAgICAgICAvIFxcXG4gICAgICAgIG8gICBjXG4gICAgICAgLyBcXFxuICAgICAgYSAgIGJcbiAgIHZ9XG5cbiAgIFdlIHdhbnQgdGhpcyB0cmVlIHRvIGJlIHJlcHJlc2VudGF0ZWQgYXMgW3wgbzsgbzsgYzsgYTsgYiB8XSwgaS5lLiB3ZSBuZWVkIHRvIGFwcGx5XG4gICBmaXJzdCBhIHJvdGF0aW9uIHRoZW4gYSB0cmFuc2xhdGlvbiB0byBjb252ZXJ0IGFuIGluZGV4IGluIFt8IGE7IGI7IGMgfF0gdG8gYSAobGVhZilcbiAgIGluZGV4IGluIFt8IG87IG87IGM7IGE7IGIgfF0uICopXG50eXBlICdhIHQgPVxuICB7IGRhdGEgOiAnYSBPcHRpb25fYXJyYXkudFxuICA7IG51bV9sZWF2ZXMgOiBpbnRcbiAgOyBudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgOiBpbnRcbiAgOyByZWR1Y2UgOiAnYSAtPiAnYSAtPiAnYVxuICA7IHNleHBfb2ZfYSA6ICdhIC0+IFNleHAudFxuICB9XG5cbmxldCBsZW5ndGggdCA9IHQubnVtX2xlYXZlc1xuXG4oKiB7dlxuICAgICBwYXJlbnQ6ICAgICAgMCAgMSAgMiAgMyAgNCAgNSAgNiAgNyAgOCAgOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAuLi5cbiAgICAgbGVmdCBjaGlsZDogIDEgIDMgIDUgIDcgIDkgMTEgMTMgMTUgMTcgMTkgMjEgMjMgMjUgMjcgMjkgMzEgMzMgMzUgMzcgMzkgLi4uXG4gICAgIHJpZ2h0IGNoaWxkOiAyICA0ICA2ICA4IDEwIDEyIDE0IDE2IDE4IDIwIDIyIDI0IDI2IDI4IDMwIDMyIDM0IDM2IDM4IDQwIC4uLiB2fSAqKVxubGV0IHBhcmVudF9pbmRleCB+Y2hpbGRfaW5kZXggPSAoY2hpbGRfaW5kZXggLSAxKSAvIDJcbmxldCBsZWZ0X2NoaWxkX2luZGV4IH5wYXJlbnRfaW5kZXggPSAocGFyZW50X2luZGV4ICogMikgKyAxXG5sZXQgcmlnaHRfY2hpbGRfaW5kZXggfmxlZnRfY2hpbGRfaW5kZXggPSBsZWZ0X2NoaWxkX2luZGV4ICsgMVxuXG4oKiBUaGUgZmlyc3QgW251bV9sZWF2ZXMtMV0gZWxlbWVudHMgYXJlIGludGVybmFsIG5vZGVzIG9mIHRoZSB0cmVlLiAgVGhlIG5leHRcbiAgIFtudW1fbGVhdmVzXSBlbGVtZW50cyBhcmUgdGhlIGxlYXZlcy4gKilcbmxldCBudW1fYnJhbmNoZXMgdCA9IHQubnVtX2xlYXZlcyAtIDFcbmxldCBpbmRleF9pc19sZWFmIHQgaSA9IGkgPj0gbnVtX2JyYW5jaGVzIHRcblxuKCogVGhlIHRyZWUgaXMgY29tcGxldGUsIGJ1dCBub3QgbmVjZXNzYXJpbHkgcGVyZmVjdCwgc28gd2UgcGVyZm9ybSBzb21lIHJvdGF0aW9uIG9mIHRoZVxuICAgbGVhdmVzIHRvIGVuc3VyZSB0aGF0IG91ciByZWR1Y3Rpb25zIHByZXNlcnZlIG9yZGVyaW5nLiAqKVxubGV0IGxlYWZfaW5kZXggdCBpID1cbiAgKCogVGhlIHRyZWUgbGF5b3V0IGlzIGxldmVsIG9yZGVyLiAgQW55IGxlYXZlcyBpbiB0aGUgc2Vjb25kIHRvIGxhc3QgbGV2ZWwgbmVlZCB0byBvY2N1clxuICAgICBpbiB0aGUgYXJyYXkgYmVmb3JlIHRoZSBsZWF2ZXMgaW4gdGhlIGJvdHRvbSBsZXZlbC4gKilcbiAgbGV0IHJvdGF0ZWRfaW5kZXggPVxuICAgIGxldCBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXkgPSBpICsgdC5udW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgaW5cbiAgICBpZiBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXkgPCB0Lm51bV9sZWF2ZXNcbiAgICB0aGVuIG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheVxuICAgIGVsc2Ugb2Zmc2V0X2Zyb21fc3RhcnRfb2ZfbGVhdmVzX2luX2FycmF5IC0gdC5udW1fbGVhdmVzXG4gIGluXG4gICgqIFRoZSBsZWF2ZXMgb2NjdXIgYWZ0ZXIgdGhlIGJyYW5jaGVzIGluIHRoZSBhcnJheS4gKilcbiAgcm90YXRlZF9pbmRleCArIG51bV9icmFuY2hlcyB0XG47O1xuXG5sZXQgZ2V0X2xlYWYgdCBpID0gT3B0aW9uX2FycmF5LmdldCB0LmRhdGEgKGxlYWZfaW5kZXggdCBpKVxubGV0IHRvX2xpc3QgdCA9IExpc3QuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiBnZXRfbGVhZiB0IGkpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwICh0b19saXN0IHQgOiBhIG9wdGlvbiBsaXN0KV1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbGV0IGRhdGEgPSB0LmRhdGEgaW5cbiAgZm9yIGkgPSAwIHRvIE9wdGlvbl9hcnJheS5sZW5ndGggZGF0YSAtIDEgZG9cbiAgICBtYXRjaCBPcHRpb25fYXJyYXkuZ2V0IGRhdGEgaSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGEgLT4gaW52YXJpYW50X2EgYVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbnVtX2JyYW5jaGVzIHQgLSAxIGRvXG4gICAgbGV0IGxlZnQgPSBsZWZ0X2NoaWxkX2luZGV4IH5wYXJlbnRfaW5kZXg6aSBpblxuICAgIGxldCByaWdodCA9IHJpZ2h0X2NoaWxkX2luZGV4IH5sZWZ0X2NoaWxkX2luZGV4OmxlZnQgaW5cbiAgICBsZXQgbGVmdF9pc19ub25lID0gT3B0aW9uX2FycmF5LmlzX25vbmUgZGF0YSBsZWZ0IGluXG4gICAgbGV0IHJpZ2h0X2lzX25vbmUgPSBPcHRpb25fYXJyYXkuaXNfbm9uZSBkYXRhIHJpZ2h0IGluXG4gICAgaWYgT3B0aW9uX2FycmF5LmlzX3NvbWUgZGF0YSBpXG4gICAgdGhlbiBhc3NlcnQgKG5vdCAobGVmdF9pc19ub25lIHx8IHJpZ2h0X2lzX25vbmUpKVxuICAgIGVsc2VcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIGluZGV4X2lzX2xlYWYgdCBsZWZ0IHx8IGluZGV4X2lzX2xlYWYgdCByaWdodCB8fCBsZWZ0X2lzX25vbmUgfHwgcmlnaHRfaXNfbm9uZSlcbiAgZG9uZVxuOztcblxubGV0IGNyZWF0ZV9leG4gPyhzZXhwX29mX2EgPSBbJXNleHBfb2Y6IF9dKSAoKSB+bGVuOm51bV9sZWF2ZXMgfnJlZHVjZSA9XG4gIGlmIG51bV9sZWF2ZXMgPCAxXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJub24tcG9zaXRpdmUgbnVtYmVyIG9mIGxlYXZlcyBpbiBiYWxhbmNlZCByZWR1Y2VyXCIgKG51bV9sZWF2ZXMgOiBpbnQpXTtcbiAgbGV0IG51bV9icmFuY2hlcyA9IG51bV9sZWF2ZXMgLSAxIGluXG4gIGxldCBudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgPSBJbnQuY2VpbF9wb3cyIG51bV9sZWF2ZXMgLSBudW1fbGVhdmVzIGluXG4gIGxldCBkYXRhID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOihudW1fYnJhbmNoZXMgKyBudW1fbGVhdmVzKSBpblxuICB7IGRhdGE7IG51bV9sZWF2ZXM7IG51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbDsgcmVkdWNlOyBzZXhwX29mX2EgfVxuOztcblxubGV0IHZhbGlkYXRlX2luZGV4IHQgaSA9XG4gIGlmIGkgPCAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJhdHRlbXB0IHRvIGFjY2VzcyBuZWdhdGl2ZSBpbmRleCBpbiBiYWxhbmNlZCByZWR1Y2VyXCIgfmluZGV4OihpIDogaW50KV07XG4gIGxldCBsZW5ndGggPSB0Lm51bV9sZWF2ZXMgaW5cbiAgaWYgaSA+PSBsZW5ndGhcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcImF0dGVtcHQgdG8gYWNjZXNzIG91dCBvZiBib3VuZHMgaW5kZXggaW4gYmFsYW5jZWQgcmVkdWNlclwiXG4gICAgICAgICAgfmluZGV4OihpIDogaW50KVxuICAgICAgICAgIChsZW5ndGggOiBpbnQpXVxuOztcblxubGV0IHNldF9leG4gdCBpIGEgPVxuICB2YWxpZGF0ZV9pbmRleCB0IGk7XG4gIGxldCBkYXRhID0gdC5kYXRhIGluXG4gIGxldCBpID0gcmVmIChsZWFmX2luZGV4IHQgaSkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIGRhdGEgIWkgYTtcbiAgd2hpbGUgIWkgPD4gMCBkb1xuICAgIGxldCBwYXJlbnQgPSBwYXJlbnRfaW5kZXggfmNoaWxkX2luZGV4OiFpIGluXG4gICAgaWYgT3B0aW9uX2FycmF5LmlzX25vbmUgZGF0YSBwYXJlbnRcbiAgICB0aGVuIGkgOj0gMFxuICAgIGVsc2UgKFxuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSBkYXRhIHBhcmVudDtcbiAgICAgIGkgOj0gcGFyZW50KVxuICBkb25lXG47O1xuXG5sZXQgZ2V0X2V4biB0IGkgPVxuICB2YWxpZGF0ZV9pbmRleCB0IGk7XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5kYXRhIChsZWFmX2luZGV4IHQgaSlcbjs7XG5cbmxldCByZWMgY29tcHV0ZV9leG4gdCBpID1cbiAgaWYgT3B0aW9uX2FycmF5LmlzX3NvbWUgdC5kYXRhIGlcbiAgdGhlbiBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biB0LmRhdGEgaVxuICBlbHNlIChcbiAgICBsZXQgbGVmdCA9IGxlZnRfY2hpbGRfaW5kZXggfnBhcmVudF9pbmRleDppIGluXG4gICAgbGV0IHJpZ2h0ID0gcmlnaHRfY2hpbGRfaW5kZXggfmxlZnRfY2hpbGRfaW5kZXg6bGVmdCBpblxuICAgIGlmIGxlZnQgPj0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmRhdGFcbiAgICB0aGVuIChcbiAgICAgICgqIElmIHdlIGdldCBoZXJlLCB0aGUgcGFyZW50IHdhcyBhbiB1bnNldCBsZWFmLiAqKVxuICAgICAgbGV0IHNleHBfb2ZfYSA9IHQuc2V4cF9vZl9hIGluXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiYXR0ZW1wdCB0byBjb21wdXRlIGJhbGFuY2VkIHJlZHVjZXIgd2l0aCB1bnNldCBlbGVtZW50c1wiXG4gICAgICAgICAgICB+YmFsYW5jZWRfcmVkdWNlcjoodCA6IGEgdCldKTtcbiAgICBsZXQgYSA9IHQucmVkdWNlIChjb21wdXRlX2V4biB0IGxlZnQpIChjb21wdXRlX2V4biB0IHJpZ2h0KSBpblxuICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdC5kYXRhIGkgYTtcbiAgICBhKVxuOztcblxubGV0IGNvbXB1dGVfZXhuIHQgPSBjb21wdXRlX2V4biB0IDBcbiIsIm9wZW4hIENvcmVcblxubW9kdWxlIFRpbWVfbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX25zXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFRpbWVfbnMuQWx0ZXJuYXRlX3NleHAuc2V4cF9vZl90XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBpbml0IDogJ2FcbiAgOyBzdGVwcyA6IChUaW1lX25zLnQgKiAnYSkgU2VxdWVuY2UudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgeyBpbml0OyBzdGVwcyA9IF8gfSA9IGludmFyaWFudF9hIGluaXRcblxubGV0IHJlYyB2YWx1ZV9pbnRlcm5hbCBpbml0IHN0ZXBzIH5hdCA9XG4gIG1hdGNoIFNlcXVlbmNlLm5leHQgc3RlcHMgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgKCh0LCBhKSwgc3RlcHMpIC0+XG4gICAgaWYgVGltZV9ucy4oIDwgKSBhdCB0IHRoZW4gaW5pdCBlbHNlIHZhbHVlX2ludGVybmFsIGEgc3RlcHMgfmF0XG47O1xuXG5sZXQgdmFsdWUgdCB+YXQgPSB2YWx1ZV9pbnRlcm5hbCB0LmluaXQgdC5zdGVwcyB+YXRcbmxldCBjb25zdGFudCBpbml0ID0geyBpbml0OyBzdGVwcyA9IFNlcXVlbmNlLmVtcHR5IH1cblxubGV0IGNyZWF0ZV9leG4gfmluaXQgfnN0ZXBzID1cbiAgaWYgbm90XG4gICAgICAgKExpc3QuaXNfc29ydGVkIHN0ZXBzIH5jb21wYXJlOihmdW4gKHRpbWUxLCBfKSAodGltZTIsIF8pIC0+XG4gICAgICAgICAgVGltZV9ucy5jb21wYXJlIHRpbWUxIHRpbWUyKSlcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltTdGVwX2Z1bmN0aW9uLmNyZWF0ZV9leG5dIGdvdCB1bnNvcnRlZCB0aW1lc1wiXG4gICAgICAgICAgfnN0ZXBzOihzdGVwcyB8PiBMaXN0Lm1hcCB+Zjpmc3QgOiBUaW1lX25zLnQgbGlzdCldO1xuICB7IGluaXQ7IHN0ZXBzID0gc3RlcHMgfD4gU2VxdWVuY2Uub2ZfbGlzdCB9XG47O1xuXG5sZXQgY3JlYXRlX2Zyb21fc2VxdWVuY2UgfmluaXQgfnN0ZXBzID0geyBpbml0OyBzdGVwcyB9XG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBXZWFrID0gU3RkbGliLldlYWtcblxudHlwZSAnYSB0ID0gJ2EgSGVhcF9ibG9jay50IFdlYWsudFxuXG5sZXQgY3JlYXRlIH5sZW4gPSBXZWFrLmNyZWF0ZSBsZW5cbmxldCBsZW5ndGggdCA9IFdlYWsubGVuZ3RoIHRcbmxldCBzZXQgPSBXZWFrLnNldFxuXG5sZXQgc2V0X2V4biB0IGkgeCA9IHNldCB0IGkgKE9wdGlvbi5tYXAgeCB+ZjpIZWFwX2Jsb2NrLmNyZWF0ZV9leG4pXG5cbmxldCBnZXQgPSBXZWFrLmdldFxubGV0IGlzX3NvbWUgdCBpID0gV2Vhay5jaGVjayB0IGlcbmxldCBpc19ub25lIHQgaSA9IG5vdCAoaXNfc29tZSB0IGkpXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gZ2V0IHQgaSlcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHBfb2Y6IGEgSGVhcF9ibG9jay50IG9wdGlvbiBhcnJheV0gKHRvX2FycmF5IHQpXG5cbmxldCBpdGVyIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgbWF0Y2ggZ2V0IHQgaSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHYgLT4gZiAoSGVhcF9ibG9jay52YWx1ZSB2KVxuICBkb25lXG5cbmxldCBpdGVyaSB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIG1hdGNoIGdldCB0IGkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB2IC0+IGYgaSAoSGVhcF9ibG9jay52YWx1ZSB2KVxuICBkb25lXG5cbmxldCBibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgV2Vhay5ibGl0IHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuIiwiKCogV2UgaW1wbGVtZW50IGEgd2VhayBwb2ludGVyIHVzaW5nIGEgW1dlYWtfYXJyYXkudF0uICopXG5cbm9wZW4hIEJhc2VcblxudHlwZSAnYSB0ID0gJ2EgV2Vha19hcnJheS50XG5cbmxldCBjcmVhdGUgKCkgPSBXZWFrX2FycmF5LmNyZWF0ZSB+bGVuOjFcblxuKCogV2UgdXNlIGEgd2VhayBhcnJheSBvZiBsZW5ndGggMSwgc28gdGhlIHdlYWsgcG9pbnRlciBpcyBhdCBpbmRleCAwLiAqKVxubGV0IGluZGV4ID0gMFxuXG5sZXQgZ2V0IHQgPSBXZWFrX2FycmF5LmdldCB0IGluZGV4XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKGdldCB0IDogYSBIZWFwX2Jsb2NrLnQgb3B0aW9uKV1cblxubGV0IGlzX25vbmUgdCA9IFdlYWtfYXJyYXkuaXNfbm9uZSB0IGluZGV4XG5sZXQgaXNfc29tZSB0ID0gV2Vha19hcnJheS5pc19zb21lIHQgaW5kZXhcblxubGV0IHNldCB0IGJsb2NrID0gV2Vha19hcnJheS5zZXQgdCBpbmRleCAoU29tZSBibG9jaylcbiIsIm9wZW4hIEJhc2VcblxuXG50eXBlICgnYSwgJ2IpIHQgPVxuICB7IGVudHJ5X2J5X2tleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoJ2EsICdiIFdlYWtfcG9pbnRlci50KSBIYXNodGJsLnRcbiAgOyBrZXlzX3dpdGhfdW51c2VkX2RhdGEgICAgICAgICAgICAgICAgICAgIDogJ2EgVGhyZWFkX3NhZmVfcXVldWUudFxuICA7IG11dGFibGUgdGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgOiB1bml0IC0+IHVuaXRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIFVzaW5nX2hhc2hhYmxlID0gc3RydWN0XG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIGhhc2hhYmxlID1cbiAgICB7IGVudHJ5X2J5X2tleSAgICAgICAgICAgICAgICAgICAgID1cbiAgICAgICAgSGFzaHRibC5jcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplXG4gICAgICAgICAgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuXG4gICAgOyBrZXlzX3dpdGhfdW51c2VkX2RhdGEgICAgICAgICAgICA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgdGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgPSBpZ25vcmVcbiAgICB9XG4gIDs7XG5lbmRcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9XG4gIFVzaW5nX2hhc2hhYmxlLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2hhYmxlLm9mX2tleSBtKVxuOztcblxubGV0IHNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSB0IH50aHJlYWRfc2FmZV9mID1cbiAgdC50aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSA8LSB0aHJlYWRfc2FmZV9mO1xuOztcblxubGV0IHJlbW92ZSB0IGtleSA9IEhhc2h0YmwucmVtb3ZlIHQuZW50cnlfYnlfa2V5IGtleVxuXG4oKiBJbiBvcmRlciBmb3IgYSBjYWxsIHRvIFtyZWNsYWltX3NwYWNlX2Zvcl9rZXlzX3dpdGhfdW51c2VkX2RhdGFdIHRvIHJlY2xhaW0gYSBrZXkgdGhhdFxuICAgd2FzIHByZXZpb3VzbHkgZmluYWxpemVkLCB0aGUgd2VhayBwb2ludGVyIG11c3QgaGF2ZSBiZWVuIGNsZWFyZWQuICBUaGlzIHJlbGllcyBvbiB0aGVcbiAgIGZhY3QgdGhhdCB0aGUgT0NhbWwgZ2FyYmFnZSBjb2xsZWN0b3IgY2xlYXJzIHdlYWtzIGFuZCB0aGVuIHJ1bnMgZmluYWxpemVycy4gKilcbmxldCByZWNsYWltX3NwYWNlX2Zvcl9rZXlzX3dpdGhfdW51c2VkX2RhdGEgdCA9XG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCB0LmtleXNfd2l0aF91bnVzZWRfZGF0YSA+IDAgZG9cbiAgICBsZXQga2V5ID0gVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gdC5rZXlzX3dpdGhfdW51c2VkX2RhdGEgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdC5lbnRyeV9ieV9rZXkga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZW50cnkgLT4gaWYgV2Vha19wb2ludGVyLmlzX25vbmUgZW50cnkgdGhlbiByZW1vdmUgdCBrZXlcbiAgZG9uZTtcbjs7XG5cbmxldCBnZXRfZW50cnkgdCBrZXkgPVxuICBIYXNodGJsLmZpbmRfb3JfYWRkIHQuZW50cnlfYnlfa2V5IGtleVxuICAgIH5kZWZhdWx0OihmdW4gKCkgLT4gV2Vha19wb2ludGVyLmNyZWF0ZSAoKSk7XG47O1xuXG5sZXQgbWVtIHQga2V5ID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIHQuZW50cnlfYnlfa2V5IGtleSB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgZW50cnkgLT4gV2Vha19wb2ludGVyLmlzX3NvbWUgZW50cnlcbjs7XG5cbmxldCBrZXlfaXNfdXNpbmdfc3BhY2UgdCBrZXkgPSBIYXNodGJsLm1lbSB0LmVudHJ5X2J5X2tleSBrZXlcblxubGV0IHNldF9kYXRhIHQga2V5IGVudHJ5IChkYXRhIDogXyBIZWFwX2Jsb2NrLnQpID1cbiAgV2Vha19wb2ludGVyLnNldCBlbnRyeSBkYXRhO1xuICBsZXQgY2xlYW51cCAoKSA9XG4gICAgRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+XG4gICAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQua2V5c193aXRoX3VudXNlZF9kYXRhIGtleTtcbiAgICAgIHQudGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgKCkpXG4gIGluXG4gIHRyeSBTdGRsaWIuR2MuZmluYWxpc2VfbGFzdCBjbGVhbnVwIGRhdGEgd2l0aFxuICAoKiBJbiB0aGlzIGNhc2UsIFt4XSBpcyBrbm93biB0byBiZSBzdGF0aWMgZGF0YSwgd2hpY2ggd2lsbFxuICAgICBuZXZlciBiZSBjb2xsZWN0ZWQgYnkgdGhlIEdDIGFueXdheSwgc28gaXQncyBzYWZlIHRvIGRyb3AgKilcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gKClcblxuOztcblxubGV0IHJlcGxhY2UgdCB+a2V5IH5kYXRhID0gc2V0X2RhdGEgdCBrZXkgKGdldF9lbnRyeSB0IGtleSkgZGF0YVxuXG5sZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICBsZXQgZW50cnkgPSBnZXRfZW50cnkgdCBrZXkgaW5cbiAgaWYgV2Vha19wb2ludGVyLmlzX3NvbWUgZW50cnlcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIldlYWtfaGFzaHRibC5hZGRfZXhuIG9mIGtleSBpbiB1c2VcIiB+XzoodCA6IChfLCBfKSB0KSBbJWhlcmVdXTtcbiAgc2V0X2RhdGEgdCBrZXkgZW50cnkgZGF0YTtcbjs7XG5cbmxldCBmaW5kIHQga2V5ID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIHQuZW50cnlfYnlfa2V5IGtleSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBlbnRyeSAtPiBXZWFrX3BvaW50ZXIuZ2V0IGVudHJ5XG47O1xuXG5sZXQgZmluZF9vcl9hZGQgdCBrZXkgfmRlZmF1bHQgPVxuICBsZXQgZW50cnkgPSBnZXRfZW50cnkgdCBrZXkgaW5cbiAgbWF0Y2ggV2Vha19wb2ludGVyLmdldCBlbnRyeSB3aXRoXG4gIHwgU29tZSB2IC0+IHZcbiAgfCBOb25lIC0+XG4gICAgbGV0IGRhdGEgPSBkZWZhdWx0ICgpIGluXG4gICAgc2V0X2RhdGEgdCBrZXkgZW50cnkgZGF0YTtcbiAgICBkYXRhXG47O1xuIiwidHlwZSB0ID1cbiAgfCBCZWZvcmVcbiAgfCBBZnRlclxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiIsIlslJWltcG9ydCBcImRlYnVnLm1saFwiXVxuXG5vcGVuIENvcmVcblxuKCogQWxsIFthc3NlcnRdcyBhbmQgb3RoZXIgY2hlY2tzIHRocm91Z2hvdXQgdGhlIGNvZGUgYXJlIGd1YXJkZWQgYnkgW2lmIGRlYnVnXS4gIFRoZVxuICAgREVCVUcgdmFyaWFibGUgaXMgc2V0IGluIHRoZSBsaWIgW2luY3JlbWVudGFsXSBhbmQgdW5zZXQgaW4gdGhlIGxpYlxuICAgW2luY3JlbWVudGFsX2RlYnVnXSwgYnV0IGFwYXJ0IGZyb20gdGhhdCB0aGV5IGFyZSBpZGVudGljYWwuICBUZXN0cyBhcmUgcnVuIHdpdGggYm90aFxuICAgdGhlIHByb2R1Y3Rpb24gYW5kIGRlYnVnIGxpYiwgYW5kIHVzZXJzIGNhbiBjaG9vc2UgdG8gYnVpbGQgd2l0aCB0aGUgZGVidWcgbGlicmFyeSwgaWZcbiAgIHRoZXkgc3VzcGVjdCB0aGV5IGZvdW5kIGEgYnVnIGluIGluY3JlbWVudGFsLiAqKVxuXG5bJSVpZiBKU0NfREVCVUddXG5cbmxldCBkZWJ1ZyA9IHRydWVcblxuWyUlZWxzZV1cblxubGV0IGRlYnVnID0gZmFsc2VcblxuWyUlZW5kaWZdXG5cbmxldCBjb25jYXQgPSBTdHJpbmcuY29uY2F0XG5sZXQgdGFnIG5hbWUgYSBzZXhwX29mX2EgPSAobmFtZSwgYSkgfD4gWyVzZXhwX29mOiBzdHJpbmcgKiBhXVxuXG5tb2R1bGUgU3RlcF9mdW5jdGlvbiA9IEluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb25cblxubW9kdWxlIFRpbWVfbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX25zXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFRpbWVfbnMuQWx0ZXJuYXRlX3NleHAuc2V4cF9vZl90XG5lbmRcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG4gIGluY2x1ZGUgQXJyYXlcblxuICAoKiBOb3QgZGVmaW5pbmcgYWxpYXNlcyBpbiBwcm9kdWN0aW9uIG1vZGUsIHNpbmNlIHRoZXkgYnJlYWsgdHlwZSBzcGVjaWFsaXphdGlvbiBvZlxuICAgICBhcnJheSBhY2Nlc3Nlcy4gKilcbiAgWyUlaWYgSlNDX0RFQlVHXVxuXG4gIGxldCB1bnNhZmVfZ2V0ID0gZ2V0XG4gIGxldCB1bnNhZmVfc2V0ID0gc2V0XG5cbiAgWyUlZW5kaWZdXG5cbiAgKCogUmVxdWlyZXMgW2xlbiA+PSBsZW5ndGggdF0uICopXG4gIGxldCByZWFsbG9jIHQgfmxlbiBhID1cbiAgICBsZXQgbmV3X3QgPSBjcmVhdGUgfmxlbiBhIGluXG4gICAgQXJyYXkuYmxpdCB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om5ld190IH5kc3RfcG9zOjAgfmxlbjoobGVuZ3RoIHQpO1xuICAgIG5ld190XG4gIDs7XG5lbmRcblxubW9kdWxlIFVvcHQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVb3B0XG5cbiAgbGV0IHVuc2FmZV92YWx1ZSA9IGlmIGRlYnVnIHRoZW4gdmFsdWVfZXhuIGVsc2UgdW5zYWZlX3ZhbHVlXG5lbmRcblxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVbmlmb3JtX2FycmF5XG5cbiAgWyUlaWYgSlNDX0RFQlVHXVxuXG4gIGxldCB1bnNhZmVfZ2V0ID0gZ2V0XG4gIGxldCB1bnNhZmVfc2V0ID0gc2V0X3dpdGhfY2FtbF9tb2RpZnlcblxuICBbJSVlbHNlXVxuXG4gICgqIFVuaWZvcm1fYXJyYXkgaXMgYmVpbmcgXCJzbWFydFwiIGJ5IGNoZWNraW5nIGlmIGVsZW1lbnRzIGFyZSBpbnRlZ2VycywgYnV0IFVvcHQudFxuICAgICBhbG1vc3QgbmV2ZXIgY29udGFpbiBpbnRlZ2Vycywgc28gdGhlIGV4dHJhIGNoZWNrIHRvIG1ha2UgZ2VuZXJhdGVkIGNvZGUgaGFyZGVyIHRvXG4gICAgIHJlYWQgYW5kIHBvdGVudGlhbGx5IHNsb3dlci4gKilcbiAgbGV0IHVuc2FmZV9zZXQgPSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnlcbiAgbGV0IHNldCA9IHNldF93aXRoX2NhbWxfbW9kaWZ5XG5cbiAgWyUlZW5kaWZdXG5cbiAgKCogUmVxdWlyZXMgW2xlbiA+PSBsZW5ndGggdF0uICopXG4gIGxldCByZWFsbG9jIHQgfmxlbiA9XG4gICAgbGV0IG5ld190ID0gY3JlYXRlIH5sZW4gVW9wdC5ub25lIGluXG4gICAgYmxpdCB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om5ld190IH5kc3RfcG9zOjAgfmxlbjoobGVuZ3RoIHQpO1xuICAgIG5ld190XG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA9IFRpbWluZ193aGVlbC5BbGFybV9wcmVjaXNpb25cbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9XG4gICgqIFdlIHNwZWNpYWxpemUgc29tZSBjdXRvZmZzIHRvIGF2b2lkIGFuIGluZGlyZWN0IGZ1bmN0aW9uIGNhbGw7IGluIHBhcnRpY3VsYXIgd2VcbiAgICAgc3BlY2lhbGl6ZSB0aGUgZGVmYXVsdCAoYW5kIGhlbmNlIG92ZXJ3aGVsbWluZ2x5IGNvbW1vbikgY2FzZSBvZiBwaHlzaWNhbFxuICAgICBlcXVhbGl0eS4gKilcbiAgfCBBbHdheXNcbiAgfCBOZXZlclxuICB8IFBoeXNfZXF1YWxcbiAgfCBDb21wYXJlIG9mICgnYSAtPiAnYSAtPiBpbnQpXG4gIHwgRXF1YWwgb2YgKCdhIC0+ICdhIC0+IGJvb2wpXG4gIHwgRiBvZiAob2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiBib29sKVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQWx3YXlzIHwgTmV2ZXIgfCBQaHlzX2VxdWFsIHwgQ29tcGFyZSBfIHwgRXF1YWwgXyB8IEYgXyAtPiAoKSlcbjs7XG5cbmxldCBjcmVhdGUgZiA9IEYgZlxubGV0IG9mX2NvbXBhcmUgZiA9IENvbXBhcmUgZlxubGV0IG9mX2VxdWFsIGYgPSBFcXVhbCBmXG5sZXQgbmV2ZXIgPSBOZXZlclxubGV0IGFsd2F5cyA9IEFsd2F5c1xubGV0IHBvbHlfZXF1YWwgPSBFcXVhbCBQb2x5LmVxdWFsXG5cbmxldCBzaG91bGRfY3V0b2ZmIHQgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgUGh5c19lcXVhbCAtPiBwaHlzX2VxdWFsIG9sZF92YWx1ZSBuZXdfdmFsdWVcbiAgfCBOZXZlciAtPiBmYWxzZVxuICB8IEFsd2F5cyAtPiB0cnVlXG4gIHwgQ29tcGFyZSBmIC0+IGYgb2xkX3ZhbHVlIG5ld192YWx1ZSA9IDBcbiAgfCBFcXVhbCBmIC0+IGYgb2xkX3ZhbHVlIG5ld192YWx1ZVxuICB8IEYgZiAtPiBmIH5vbGRfdmFsdWUgfm5ld192YWx1ZVxuOztcblxubGV0IGVxdWFsIHQxIHQyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBBbHdheXMsIEFsd2F5cyAtPiB0cnVlXG4gIHwgQWx3YXlzLCBfIC0+IGZhbHNlXG4gIHwgTmV2ZXIsIE5ldmVyIC0+IHRydWVcbiAgfCBOZXZlciwgXyAtPiBmYWxzZVxuICB8IFBoeXNfZXF1YWwsIFBoeXNfZXF1YWwgLT4gdHJ1ZVxuICB8IFBoeXNfZXF1YWwsIF8gLT4gZmFsc2VcbiAgfCBDb21wYXJlIGYxLCBDb21wYXJlIGYyIC0+IHBoeXNfZXF1YWwgZjEgZjJcbiAgfCBDb21wYXJlIF8sIF8gLT4gZmFsc2VcbiAgfCBFcXVhbCBmMSwgRXF1YWwgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IEVxdWFsIF8sIF8gLT4gZmFsc2VcbiAgfCBGIGYxLCBGIGYyIC0+IHBoeXNfZXF1YWwgZjEgZjJcbiAgfCBGIF8sIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBwaHlzX2VxdWFsID0gUGh5c19lcXVhbFxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFN0cmluZ19saXN0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBsaXN0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IubWFrZSB+c2V4cF9vZl90IH5jb21wYXJlKVxuZW5kXG5cbnR5cGUgZG90ID1cbiAgeyBsYWJlbCA6IFNldC5NKFN0cmluZ19saXN0KS50XG4gIDsgYXR0cmlidXRlcyA6IHN0cmluZyBTdHJpbmcuTWFwLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSB0ID1cbiAgfCBEb3Qgb2YgZG90XG4gIHwgSW5mbyBvZiBJbmZvLnRcbiAgfCBBcHBlbmQgb2ZcbiAgICAgIHsgcHJpb3IgOiB0XG4gICAgICA7IG5ld18gOiB0XG4gICAgICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW5mbyBpbmZvID0gSW5mbyBpbmZvXG5sZXQgYXBwZW5kIHByaW9yIG5ld18gPSBBcHBlbmQgeyBwcmlvcjsgbmV3XyB9XG5cbmxldCBkb3QgfmxhYmVsIH5hdHRyaWJ1dGVzID1cbiAgbGV0IGxhYmVsID0gU2V0LnNpbmdsZXRvbiAobW9kdWxlIFN0cmluZ19saXN0KSBsYWJlbCBpblxuICBEb3QgeyBsYWJlbDsgYXR0cmlidXRlcyB9XG47O1xuXG5sZXQgcmVjIHRvX2RvdCA9IGZ1bmN0aW9uXG4gIHwgSW5mbyBpIC0+XG4gICAgeyBsYWJlbCA9IFNldC5zaW5nbGV0b24gKG1vZHVsZSBTdHJpbmdfbGlzdCkgWyBJbmZvLnRvX3N0cmluZ19odW0gaSBdXG4gICAgOyBhdHRyaWJ1dGVzID0gU3RyaW5nLk1hcC5lbXB0eVxuICAgIH1cbiAgfCBEb3QgZG90IC0+IGRvdFxuICB8IEFwcGVuZCB7IHByaW9yOyBuZXdfIH0gLT5cbiAgICBsZXQgcHJpb3IgPSB0b19kb3QgcHJpb3IgaW5cbiAgICBsZXQgbmV3XyA9IHRvX2RvdCBuZXdfIGluXG4gICAgbGV0IGxhYmVsID0gU2V0LnVuaW9uIHByaW9yLmxhYmVsIG5ld18ubGFiZWwgaW5cbiAgICBsZXQgYXR0cmlidXRlcyA9XG4gICAgICBNYXAubWVyZ2Vfc2tld2VkXG4gICAgICAgIHByaW9yLmF0dHJpYnV0ZXNcbiAgICAgICAgbmV3Xy5hdHRyaWJ1dGVzXG4gICAgICAgIH5jb21iaW5lOihmdW4gfmtleTpfIF9sZWZ0IHJpZ2h0IC0+IHJpZ2h0KVxuICAgIGluXG4gICAgeyBsYWJlbDsgYXR0cmlidXRlcyB9XG47O1xuXG5sZXQgZXNjYXBlX2RvdF9zdHJpbmcgcyA9XG4gICgqIGh0dHBzOi8vZ3JhcGh2aXoub3JnL2RvYy9pbmZvL2xhbmcuaHRtbCAqKVxuICBcIlxcXCJcIiBeIFN0cmluZy5zdWJzdHJfcmVwbGFjZV9hbGwgcyB+cGF0dGVybjpcIlxcXCJcIiB+d2l0aF86XCJcXFxcXFxcIlwiIF4gXCJcXFwiXCJcbjs7XG5cbmxldCBlc2NhcGVfcmVjb3JkX2xhYmVsIHMgPVxuICAoKiBodHRwczovL2dyYXBodml6Lm9yZy9kb2MvaW5mby9zaGFwZXMuaHRtbCAqKVxuICBTdHJpbmcuY29uY2F0X21hcCBzIH5mOihmdW5jdGlvblxuICAgIHwgKCc8JyB8ICc+JyB8ICd7JyB8ICd9JyB8ICd8JyB8ICdcXFxcJyB8ICcgJykgYXMgYyAtPiBcIlxcXFxcIiBeIFN0cmluZy5vZl9jaGFyIGNcbiAgICB8IGMgLT4gU3RyaW5nLm9mX2NoYXIgYylcbjs7XG5cbmxldCB0b19zdHJpbmcgfm5hbWUgeyBsYWJlbDsgYXR0cmlidXRlcyB9ID1cbiAgbGV0IGxhYmVsID1cbiAgICBsYWJlbFxuICAgIHw+IFNldC50b19saXN0XG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBjb2xzIC0+XG4gICAgICBcIntcIiBeIFN0cmluZy5jb25jYXQgKExpc3QubWFwIGNvbHMgfmY6ZXNjYXBlX3JlY29yZF9sYWJlbCkgfnNlcDpcInxcIiBeIFwifVwiKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcInxcIlxuICAgIHw+IGZ1biBzIC0+IFwie1wiIF4gcyBeIFwifVwiXG4gIGluXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBhdHRyaWJ1dGVzXG4gICAgfD4gTWFwLnRvX2FsaXN0XG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biAoaywgdikgLT5cbiAgICAgIHNwcmludGYge3wgJXM9JXN8fSAoZXNjYXBlX2RvdF9zdHJpbmcgaykgKGVzY2FwZV9kb3Rfc3RyaW5nIHYpKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIlxuICBpblxuICBzcHJpbnRmIHt8ICAlcyBbc2hhcGU9TXJlY29yZCBsYWJlbD0lcyAlc118fSBuYW1lIChlc2NhcGVfZG90X3N0cmluZyBsYWJlbCkgYXR0cmlidXRlc1xuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludFxuXG5sZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQgPj0gMSlcblxubGV0IG5leHQgPVxuICBsZXQgciA9IHJlZiAwIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgcjtcbiAgICAhclxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludFxuXG5sZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQgPj0gLTEpXG5sZXQgbm9uZSA9IC0xXG5sZXQgaXNfbm9uZSB0ID0gdCA9IG5vbmVcbmxldCBpc19zb21lIHQgPSB0ID49IDBcbmxldCBhZGQxIHQgPSB0ICsgMVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBQcmV2aW91c191cGRhdGVfa2luZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmV2ZXJfYmVlbl91cGRhdGVkXG4gICAgfCBOZWNlc3NhcnlcbiAgICB8IENoYW5nZWRcbiAgICB8IEludmFsaWRhdGVkXG4gICAgfCBVbm5lY2Vzc2FyeVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSBOb2RlX3VwZGF0ZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgTmVjZXNzYXJ5IG9mICdhXG4gICAgfCBDaGFuZ2VkIG9mICdhICogJ2FcbiAgICB8IEludmFsaWRhdGVkXG4gICAgfCBVbm5lY2Vzc2FyeVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgZiA6ICdhIE5vZGVfdXBkYXRlLnQgLT4gdW5pdFxuICA7IG11dGFibGUgcHJldmlvdXNfdXBkYXRlX2tpbmQgOiBQcmV2aW91c191cGRhdGVfa2luZC50XG4gIDsgY3JlYXRlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGNyZWF0ZSBmIH5hdDpjcmVhdGVkX2F0ID0geyBmOyBwcmV2aW91c191cGRhdGVfa2luZCA9IE5ldmVyX2JlZW5fdXBkYXRlZDsgY3JlYXRlZF9hdCB9XG5cbmxldCByZWFsbHlfcnVuIHQgKG5vZGVfdXBkYXRlIDogXyBOb2RlX3VwZGF0ZS50KSA9XG4gIHQucHJldmlvdXNfdXBkYXRlX2tpbmRcbiAgPC0gKG1hdGNoIG5vZGVfdXBkYXRlIHdpdGhcbiAgICB8IE5lY2Vzc2FyeSBfIC0+IE5lY2Vzc2FyeVxuICAgIHwgQ2hhbmdlZCBfIC0+IENoYW5nZWRcbiAgICB8IEludmFsaWRhdGVkIC0+IEludmFsaWRhdGVkXG4gICAgfCBVbm5lY2Vzc2FyeSAtPiBVbm5lY2Vzc2FyeSk7XG4gIHQuZiBub2RlX3VwZGF0ZVxuOztcblxubGV0IHJ1biB0IChub2RlX3VwZGF0ZSA6IF8gTm9kZV91cGRhdGUudCkgfm5vdyA9XG4gICgqIFdlIG9ubHkgcnVuIHRoZSBoYW5kbGVyIGlmIHdhcyBjcmVhdGVkIGluIGFuIGVhcmxpZXIgc3RhYmlsaXphdGlvbiBjeWNsZS4gIElmIHRoZVxuICAgICBoYW5kbGVyIHdhcyBjcmVhdGVkIGJ5IGFub3RoZXIgb24tdXBkYXRlIGhhbmRsZXIgZHVyaW5nIHRoZSBydW5uaW5nIG9mIG9uLXVwZGF0ZVxuICAgICBoYW5kbGVycyBpbiB0aGUgY3VycmVudCBzdGFiaWxpemF0aW9uLCB3ZSB0cmVhdCB0aGUgYWRkZWQgaGFuZGxlciBhcyBpZiBpdCB3ZXJlIGFkZGVkXG4gICAgIGFmdGVyIHRoaXMgc3RhYmlsaXphdGlvbiBmaW5pc2hlZC4gIFdlIHdpbGwgcnVuIGl0IGF0IHRoZSBuZXh0IHN0YWJpbGl6YXRpb24sIGJlY2F1c2VcbiAgICAgdGhlIG5vZGUgd2l0aCB0aGUgaGFuZGxlciB3YXMgcHVzaGVkIG9uIFtzdGF0ZS5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0uICopXG4gIGlmIFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmUgdC5jcmVhdGVkX2F0IG5vdyA8IDBcbiAgdGhlbiAoXG4gICAgbWF0Y2ggdC5wcmV2aW91c191cGRhdGVfa2luZCwgbm9kZV91cGRhdGUgd2l0aFxuICAgICgqIE9uY2UgYSBub2RlIGlzIGludmFsaWRhdGVkLCB0aGVyZSB3aWxsIG5ldmVyIGJlIGZ1cnRoZXIgaW5mb3JtYXRpb24gdG8gcHJvdmlkZSxcbiAgICAgICBzaW5jZSBpbmNyZW1lbnRhbCBkb2VzIG5vdCBhbGxvdyBhbiBpbnZhbGlkIG5vZGUgdG8gYmVjb21lIHZhbGlkLiAqKVxuICAgIHwgSW52YWxpZGF0ZWQsIF8gLT4gKClcbiAgICAoKiBUaGVzZSBjYXNlcyBjYW4gaGFwcGVuIGlmIGEgbm9kZSBpcyBoYW5kbGVkIGFmdGVyIHN0YWJpbGl6YXRpb24gZHVlIHRvIGFub3RoZXJcbiAgICAgICBoYW5kbGVyLiAgQnV0IGZvciB0aGUgY3VycmVudCBoYW5kbGVyLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvIGJlY2F1c2UgdGhlcmUgaXMgbm9cbiAgICAgICBuZXcgaW5mb3JtYXRpb24gdG8gcHJvdmlkZS4gKilcbiAgICB8IENoYW5nZWQsIE5lY2Vzc2FyeSBfIHwgTmVjZXNzYXJ5LCBOZWNlc3NhcnkgXyB8IFVubmVjZXNzYXJ5LCBVbm5lY2Vzc2FyeSAtPiAoKVxuICAgICgqIElmIHRoaXMgaGFuZGxlciBoYXNuJ3Qgc2VlbiBhIG5vZGUgdGhhdCBpcyBjaGFuZ2luZywgd2UgdHJlYXQgdGhlIHVwZGF0ZSBhcyBhblxuICAgICAgIGluaXRpYWxpemF0aW9uLiAqKVxuICAgIHwgKE5ldmVyX2JlZW5fdXBkYXRlZCB8IFVubmVjZXNzYXJ5KSwgQ2hhbmdlZCAoXywgYSkgLT4gcmVhbGx5X3J1biB0IChOZWNlc3NhcnkgYSlcbiAgICAoKiBBbGwgb3RoZXIgdXBkYXRlcyBhcmUgcnVuIGFzIGlzLiAqKVxuICAgIHwgTmV2ZXJfYmVlbl91cGRhdGVkLCAoTmVjZXNzYXJ5IF8gfCBVbm5lY2Vzc2FyeSB8IEludmFsaWRhdGVkKVxuICAgIHwgVW5uZWNlc3NhcnksIChOZWNlc3NhcnkgXyB8IEludmFsaWRhdGVkKVxuICAgIHwgTmVjZXNzYXJ5LCAoQ2hhbmdlZCBfIHwgVW5uZWNlc3NhcnkgfCBJbnZhbGlkYXRlZClcbiAgICB8IENoYW5nZWQsIChDaGFuZ2VkIF8gfCBVbm5lY2Vzc2FyeSB8IEludmFsaWRhdGVkKSAtPiByZWFsbHlfcnVuIHQgbm9kZV91cGRhdGUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgeyBleG4gOiBleG5cbiAgOyBiYWNrdHJhY2UgOiBCYWNrdHJhY2UudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY3JlYXRlIGV4biA9IHsgZXhuOyBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIH1cblxubGV0IHJlcmFpc2Vfd2l0aF9tZXNzYWdlIHsgZXhuOyBiYWNrdHJhY2UgfSBtc2cgPVxuICBFeG4ucmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgKEV4bi5SZXJhaXNlZCAobXNnLCBleG4pKSBiYWNrdHJhY2Vcbjs7XG5cbmxldCByZXJhaXNlIHsgZXhuOyBiYWNrdHJhY2UgfSA9IEV4bi5yYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSBleG4gYmFja3RyYWNlXG4iLCIoKiBUaGlzIG1vZHVsZSBoYXMgYSBnaWFudCBbbW9kdWxlIHJlY10gZGVmaW5pbmcgYWxsIHRoZSBtdXR1YWxseSByZWN1cnNpdmUgdHlwZXMgdXNlZFxuICAgaW4gdGhlIGltcGxlbWVudGF0aW9uLiAgVGhlIGRlZmluaXRpb24gb2YgZWFjaCB0eXBlIGlzIHRoZW4gcmVwZWF0ZWQgaW4gaXRzIGZpbGU7XG4gICBjb21tZW50cyBiZWxvbmcgdGhlcmUsIG5vdCBoZXJlLlxuXG4gICBXZSBwdXQganVzdCBlbm91Z2ggc2V4cCBjb252ZXJ0ZXJzIGhlcmUgdG8gZGlzcGxheSBub2RlIGlkcy4gIFRoZSBkZXRhaWxlZCBzZXhwXG4gICBjb252ZXJ0ZXJzIGFyZSBnZW5lcmF0ZWQgdmlhIFt3aXRoIHNleHBdIGluIHRoZSBpbmRpdmlkdWFsIGZpbGVzLiAgRGVmaW5pbmcgdGhlIHNleHBcbiAgIGNvbnZlcnRlcnMgb3V0c2lkZSBvZiB0aGUgW21vZHVsZSByZWNdIG1ha2VzIGl0IGltcG9zc2libGUgdG8gYWNjaWRlbnRhbGx5IGludHJvZHVjZSBhXG4gICBzZXhwIGNvbnZlcnRlciB0aGF0IHdvdWxkIHRyeSB0byBwcm9kdWNlIGFuIGluZmluaXRlIHNleHAuXG4qKVxuXG5vcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5cbm1vZHVsZSByZWMgQWRqdXN0X2hlaWdodHNfaGVhcCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2xvd2VyX2JvdW5kIDogaW50XG4gICAgOyBtdXRhYmxlIG1heF9oZWlnaHRfc2VlbiA6IGludFxuICAgIDsgbXV0YWJsZSBub2Rlc19ieV9oZWlnaHQgOiBOb2RlLlBhY2tlZC50IFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgICB9XG5lbmQgPVxuICBBZGp1c3RfaGVpZ2h0c19oZWFwXG5cbmFuZCBBbGFybSA6IHNpZ1xuICB0eXBlIHQgPSBBbGFybV92YWx1ZS50IFRpbWluZ193aGVlbC5BbGFybS50XG5lbmQgPVxuICBBbGFybVxuXG5hbmQgQWxhcm1fdmFsdWUgOiBzaWdcbiAgbW9kdWxlIEFjdGlvbiA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEF0IG9mIEF0LnRcbiAgICAgIHwgQXRfaW50ZXJ2YWxzIG9mIEF0X2ludGVydmFscy50XG4gICAgICB8IFNuYXBzaG90IDogXyBTbmFwc2hvdC50IC0+IHRcbiAgICAgIHwgU3RlcF9mdW5jdGlvbiA6IF8gU3RlcF9mdW5jdGlvbl9ub2RlLnQgLT4gdFxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgYWN0aW9uIDogQWN0aW9uLnRcbiAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IHQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgQWxhcm1fdmFsdWVcblxuYW5kIEFycmF5X2ZvbGQgOiBzaWdcbiAgdHlwZSAoJ2EsICdhY2MpIHQgPVxuICAgIHsgaW5pdCA6ICdhY2NcbiAgICA7IGYgOiAnYWNjIC0+ICdhIC0+ICdhY2NcbiAgICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gICAgfVxuZW5kID1cbiAgQXJyYXlfZm9sZFxuXG5hbmQgQXQgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG1haW4gOiBCZWZvcmVfb3JfYWZ0ZXIudCBOb2RlLnRcbiAgICA7IGF0IDogVGltZV9ucy50XG4gICAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICAgIDsgY2xvY2sgOiBDbG9jay50XG4gICAgfVxuZW5kID1cbiAgQXRcblxuYW5kIEF0X2ludGVydmFscyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbWFpbiA6IHVuaXQgTm9kZS50XG4gICAgOyBiYXNlIDogVGltZV9ucy50XG4gICAgOyBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50XG4gICAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICAgIDsgY2xvY2sgOiBDbG9jay50XG4gICAgfVxuZW5kID1cbiAgQXRfaW50ZXJ2YWxzXG5cbmFuZCBCaW5kIDogc2lnXG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgeyBtYWluIDogJ2IgTm9kZS50XG4gICAgOyBtdXRhYmxlIGYgOiAnYSAtPiAnYiBOb2RlLnRcbiAgICA7IGxocyA6ICdhIE5vZGUudFxuICAgIDsgbGhzX2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gICAgOyBtdXRhYmxlIHJocyA6ICdiIE5vZGUudCBVb3B0LnRcbiAgICA7IG11dGFibGUgcmhzX3Njb3BlIDogU2NvcGUudFxuICAgIDsgbXV0YWJsZSBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIH1cbmVuZCA9XG4gIEJpbmRcblxuYW5kIENsb2NrIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyB0aW1pbmdfd2hlZWwgOiBBbGFybV92YWx1ZS50IFRpbWluZ193aGVlbC50XG4gICAgOyBub3cgOiBUaW1lX25zLnQgVmFyLnRcbiAgICA7IGhhbmRsZV9maXJlZCA6IEFsYXJtLnQgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBmaXJlZF9hbGFybV92YWx1ZXMgOiBBbGFybV92YWx1ZS50IFVvcHQudFxuICAgIH1cbmVuZCA9XG4gIENsb2NrXG5cbmFuZCBFeHBlcnQgOiBzaWdcbiAgdHlwZSAnYSBlZGdlID1cbiAgICB7IGNoaWxkIDogJ2EgTm9kZS50XG4gICAgOyBvbl9jaGFuZ2UgOiAnYSAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGluZGV4IDogaW50IFVvcHQudFxuICAgIH1cblxuICB0eXBlIHBhY2tlZF9lZGdlID0gRSA6ICdhIGVkZ2UgLT4gcGFja2VkX2VkZ2UgW0BAdW5ib3hlZF1cblxuICB0eXBlICdhIHQgPVxuICAgIHsgZiA6IHVuaXQgLT4gJ2FcbiAgICA7IG9uX29ic2VydmFiaWxpdHlfY2hhbmdlIDogaXNfbm93X29ic2VydmFibGU6Ym9vbCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGNoaWxkcmVuIDogcGFja2VkX2VkZ2UgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIDsgbXV0YWJsZSBudW1fY2hpbGRyZW4gOiBpbnRcbiAgICA7IG11dGFibGUgZm9yY2Vfc3RhbGUgOiBib29sXG4gICAgOyBtdXRhYmxlIG51bV9pbnZhbGlkX2NoaWxkcmVuIDogaW50XG4gICAgOyBtdXRhYmxlIHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDogYm9vbFxuICAgIH1cbmVuZCA9XG4gIEV4cGVydFxuXG5hbmQgRnJlZXplIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyBjaGlsZCA6ICdhIE5vZGUudFxuICAgIDsgb25seV9mcmVlemVfd2hlbiA6ICdhIC0+IGJvb2xcbiAgICB9XG5lbmQgPVxuICBGcmVlemVcblxuYW5kIElmX3RoZW5fZWxzZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgdGVzdCA6IGJvb2wgTm9kZS50XG4gICAgOyB0ZXN0X2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnRfYnJhbmNoIDogJ2EgTm9kZS50IFVvcHQudFxuICAgIDsgdGhlbl8gOiAnYSBOb2RlLnRcbiAgICA7IGVsc2VfIDogJ2EgTm9kZS50XG4gICAgfVxuZW5kID1cbiAgSWZfdGhlbl9lbHNlXG5cbmFuZCBJbnRlcm5hbF9vYnNlcnZlciA6IHNpZ1xuICBtb2R1bGUgU3RhdGUgOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBDcmVhdGVkXG4gICAgICB8IEluX3VzZVxuICAgICAgfCBEaXNhbGxvd2VkXG4gICAgICB8IFVubGlua2VkXG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIHN0YXRlIDogU3RhdGUudFxuICAgIDsgb2JzZXJ2aW5nIDogJ2EgTm9kZS50XG4gICAgOyBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBwcmV2X2luX2FsbCA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX2FsbCA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBwcmV2X2luX29ic2VydmluZyA6ICdhIHQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fb2JzZXJ2aW5nIDogJ2EgdCBVb3B0LnRcbiAgICB9XG5cbiAgdHlwZSAnYSBpbnRlcm5hbF9vYnNlcnZlciA9ICdhIHRcblxuICBtb2R1bGUgUGFja2VkIDogc2lnXG4gICAgdHlwZSB0ID0gVCA6IF8gaW50ZXJuYWxfb2JzZXJ2ZXIgLT4gdCBbQEB1bmJveGVkXVxuICBlbmRcbmVuZCA9XG4gIEludGVybmFsX29ic2VydmVyXG5cbmFuZCBKb2luIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyBsaHMgOiAnYSBOb2RlLnQgTm9kZS50XG4gICAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgICA7IG11dGFibGUgcmhzIDogJ2EgTm9kZS50IFVvcHQudFxuICAgIH1cbmVuZCA9XG4gIEpvaW5cblxuYW5kIEtpbmQgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEFycmF5X2ZvbGQgOiAoXywgJ2EpIEFycmF5X2ZvbGQudCAtPiAnYSB0XG4gICAgfCBBdCA6IEF0LnQgLT4gQmVmb3JlX29yX2FmdGVyLnQgdFxuICAgIHwgQXRfaW50ZXJ2YWxzIDogQXRfaW50ZXJ2YWxzLnQgLT4gdW5pdCB0XG4gICAgfCBCaW5kX2xoc19jaGFuZ2UgOiAoXywgXykgQmluZC50IC0+IHVuaXQgdFxuICAgIHwgQmluZF9tYWluIDogKF8sICdhKSBCaW5kLnQgLT4gJ2EgdFxuICAgIHwgQ29uc3Qgb2YgJ2FcbiAgICB8IEV4cGVydCBvZiAnYSBFeHBlcnQudFxuICAgIHwgRnJlZXplIG9mICdhIEZyZWV6ZS50XG4gICAgfCBJZl90ZXN0X2NoYW5nZSA6IF8gSWZfdGhlbl9lbHNlLnQgLT4gdW5pdCB0XG4gICAgfCBJZl90aGVuX2Vsc2Ugb2YgJ2EgSWZfdGhlbl9lbHNlLnRcbiAgICB8IEludmFsaWRcbiAgICB8IEpvaW5fbGhzX2NoYW5nZSA6IF8gSm9pbi50IC0+IHVuaXQgdFxuICAgIHwgSm9pbl9tYWluIG9mICdhIEpvaW4udFxuICAgIHwgTWFwIDogKCdhMSAtPiAnYSkgKiAnYTEgTm9kZS50IC0+ICdhIHRcbiAgICB8IFNuYXBzaG90IG9mICdhIFNuYXBzaG90LnRcbiAgICB8IFN0ZXBfZnVuY3Rpb24gb2YgJ2EgU3RlcF9mdW5jdGlvbl9ub2RlLnRcbiAgICB8IFVuaW5pdGlhbGl6ZWRcbiAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIDogKF8sICdhKSBVbm9yZGVyZWRfYXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgICB8IFZhciBvZiAnYSBWYXIudFxuICAgIHwgTWFwMiA6ICgnYTEgLT4gJ2EyIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50IC0+ICdhIHRcbiAgICB8IE1hcDMgOiAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgKiAnYTMgTm9kZS50IC0+ICdhIHRcbiAgICB8IE1hcDQgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwNSA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDYgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDcgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwOCA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDkgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDEwIDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhMTAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTEgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMiA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTMgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2ExMlxuICAgICAgICAgLT4gJ2ExM1xuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAqICdhMTIgTm9kZS50XG4gICAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTQgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2ExMlxuICAgICAgICAgLT4gJ2ExM1xuICAgICAgICAgLT4gJ2ExNFxuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAqICdhMTIgTm9kZS50XG4gICAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxNSA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYTEzXG4gICAgICAgICAtPiAnYTE0XG4gICAgICAgICAtPiAnYTE1XG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgICAqICdhMTQgTm9kZS50XG4gICAgICAgICogJ2ExNSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuZW5kID1cbiAgS2luZFxuXG5hbmQgTm9kZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgaWQgOiBOb2RlX2lkLnRcbiAgICA7IHN0YXRlIDogU3RhdGUudFxuICAgIDsgbXV0YWJsZSByZWNvbXB1dGVkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgbXV0YWJsZSB2YWx1ZV9vcHQgOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUga2luZCA6ICdhIEtpbmQudFxuICAgIDsgbXV0YWJsZSBjdXRvZmYgOiAnYSBDdXRvZmYudFxuICAgIDsgbXV0YWJsZSBjaGFuZ2VkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgbXV0YWJsZSBudW1fb25fdXBkYXRlX2hhbmRsZXJzIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9wYXJlbnRzIDogaW50XG4gICAgO1xuICAgICAgbXV0YWJsZSBwYXJlbnQxX2FuZF9iZXlvbmQgOiBOb2RlLlBhY2tlZC50IFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgICA7IG11dGFibGUgcGFyZW50MCA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGNyZWF0ZWRfaW4gOiBTY29wZS50XG4gICAgOyBtdXRhYmxlIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgaGVpZ2h0IDogaW50XG4gICAgOyBtdXRhYmxlIGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA6IGludFxuICAgIDsgbXV0YWJsZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogaW50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG9sZF92YWx1ZV9vcHQgOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgb2JzZXJ2ZXJzIDogJ2EgSW50ZXJuYWxfb2JzZXJ2ZXIudCBVb3B0LnRcbiAgICA7IG11dGFibGUgaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBib29sXG4gICAgOyBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgICA7IG11dGFibGUgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4IDogaW50IGFycmF5XG4gICAgOyBtdXRhYmxlIGZvcmNlX25lY2Vzc2FyeSA6IGJvb2xcbiAgICA7IG11dGFibGUgdXNlcl9pbmZvIDogRG90X3VzZXJfaW5mby50IG9wdGlvblxuICAgIDsgY3JlYXRpb25fYmFja3RyYWNlIDogQmFja3RyYWNlLnQgb3B0aW9uXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIG1vZHVsZSBQYWNrZWQgOiBzaWdcbiAgICB0eXBlICdhIG5vZGUgPSAnYSB0XG4gICAgdHlwZSB0ID0gVCA6IF8gbm9kZSAtPiB0IFtAQGRlcml2aW5nIHNleHBfb2ZdIFtAQHVuYm94ZWRdXG4gIGVuZFxuXG4gIHZhbCBpc192YWxpZCA6IF8gdCAtPiBib29sXG4gIHZhbCBpc19uZWNlc3NhcnkgOiBfIHQgLT4gYm9vbFxuICB2YWwgdHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgOiAnYSB0IC0+ICdiIHQgLT4gKCdhLCAnYikgVHlwZV9lcXVhbC50IG9wdGlvblxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIE5vZGUgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIE5vZGVcbiAgICBlbmRcbiAgICB3aXRoIG1vZHVsZSBQYWNrZWQgOj0gTm9kZS5QYWNrZWQpXG5cbiAgbGV0IHNleHBfb2ZfdCBfIHQgPSBjb25jYXQgWyBcIm5cIjsgTm9kZV9pZC50b19zdHJpbmcgdC5pZCBdIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuXG4gIG1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIG5vZGUgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSB0ID0gVCA6IF8gbm9kZSAtPiB0IFtAQHVuYm94ZWRdXG5cbiAgICBsZXQgc2V4cF9vZl90IChUIHQpID0gdCB8PiBbJXNleHBfb2Y6IF8gbm9kZV1cbiAgZW5kXG5cbiAgbGV0IGlzX3ZhbGlkIHQgPVxuICAgIG1hdGNoIHQua2luZCB3aXRoXG4gICAgfCBJbnZhbGlkIC0+IGZhbHNlXG4gICAgfCBfIC0+IHRydWVcbiAgOztcblxuICAoKiBbaXNfbmVjZXNzYXJ5XSBpcyBkZWZpbmVkIGhlcmUgYmVjYXVzZSB3ZSBuZWVkIGl0IGJlZm9yZSBub2RlLm1sIGlzIGF2YWlsYWJsZS4gIEl0IGlzXG4gICAgIHVzZWQgZHVyaW5nIGdyYXBoIG1hbmlwdWxhdGlvbiwgYW5kIHNvIGlzIHdyaXR0ZW4gd2l0aCBzb21lIGNhcmUgdG8gYmUgZmFzdC4gKilcbiAgbGV0IGlzX25lY2Vzc2FyeSB0ID1cbiAgICB0Lm51bV9wYXJlbnRzID4gMFxuICAgIHx8IFVvcHQuaXNfc29tZSB0Lm9ic2VydmVyc1xuICAgIHx8IChtYXRjaCB0LmtpbmQgd2l0aFxuICAgICAgfCBGcmVlemUgXyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfHwgdC5mb3JjZV9uZWNlc3NhcnlcbiAgOztcblxuICBsZXQgdF9pc19pbmplY3RpdmUgKHR5cGUgYSBiKSAoVCA6IChhIHQsIGIgdCkgVHlwZV9lcXVhbC50KSA6IChhLCBiKSBUeXBlX2VxdWFsLnQgPSBUXG5cbiAgbGV0IHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lICh0eXBlIGEgYikgKHQxIDogYSB0KSAodDIgOiBiIHQpID1cbiAgICAoKiBUaGlzIGlzIHR5cGUtc2FmZSBhc3N1bWluZyBubyBvbmUgY2FuIGdpdmUgdGhlIHNhbWUgaW5jcmVtZW50YWwgbm9kZSB0d28gZGlmZmVyZW50XG4gICAgICAgdHlwZXMuICBUaGlzIGlzIHRydWUgYmVjYXVzZSB0aGUgZmllbGQgW211dGFibGUgb2xkX3ZhbHVlX29wdCA6ICdhIG9wdGlvbl0gcHJldmVudHNcbiAgICAgICBib3RoIHN1YnR5cGluZyBhbmQgcGFyYW1ldGVyaWMgcG9seW1vcnBoaXNtLiAgQnV0IHRoaXMgYWxsb3dzIHRvIGJyZWFrXG4gICAgICAgYWJzdHJhY3Rpb25zLCBhcyBpbiBzb21lb25lIGNvdWxkIHdyaXRlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdFxuICAgICAgICAgdHlwZSB1ICgqID0gdCB1bmRlcm5lYXRoICopXG4gICAgICAgICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0IEluY3IudCAqIHUgSW5jci50ICgqIHRoZSB0d28gaW5jcmVtZW50YWxzIGFyZSBwaHlzX2VxdWFsICopXG4gICAgICAgXX1cblxuICAgICAgIGFuZCB3ZSB3b3VsZCBmaWd1cmUgb3V0IHRoYXQgdHlwZSB0ID0gdS4gIEhvd2V2ZXIsIHdlIGNvdWxkIGFkZCBhIFR5cGVfZXF1YWwuSWQgdG9cbiAgICAgICBub2RlcyBhbmQgZG8gdGhlIHNhbWUsIHNvIGl0IHNlZW1zIHRvIGJlIGEgbW9yZSBnZW5lcmFsIGlzc3VlLiAqKVxuICAgIGlmIHBoeXNfc2FtZSB0MSB0MlxuICAgIHRoZW4gU29tZSAodF9pc19pbmplY3RpdmUgKE9iai5tYWdpYyAoVCA6IF8gVHlwZV9lcXVhbC50KSA6IChhIHQsIGIgdCkgVHlwZV9lcXVhbC50KSlcbiAgICBlbHNlIE5vbmVcbiAgOztcbmVuZFxuXG5hbmQgT2JzZXJ2ZXIgOiBzaWdcbiAgdHlwZSAnYSB0ID0gJ2EgSW50ZXJuYWxfb2JzZXJ2ZXIudCByZWZcbmVuZCA9XG4gIE9ic2VydmVyXG5cbmFuZCBPbmx5X2luX2RlYnVnIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX25vZGUgOiBOb2RlLlBhY2tlZC50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgOiBOb2RlLlBhY2tlZC50IGxpc3RcbiAgICB9XG5lbmQgPVxuICBPbmx5X2luX2RlYnVnXG5cbmFuZCBQYWNrZWRfd2Vha19oYXNodGJsIDogc2lnXG4gIHR5cGUgdCA9IFQgOiAoXywgXykgV2Vha19oYXNodGJsLnQgLT4gdFxuZW5kID1cbiAgUGFja2VkX3dlYWtfaGFzaHRibFxuXG5hbmQgUmVjb21wdXRlX2hlYXAgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICAgIDsgbXV0YWJsZSBub2Rlc19ieV9oZWlnaHQgOiBOb2RlLlBhY2tlZC50IFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgICB9XG5lbmQgPVxuICBSZWNvbXB1dGVfaGVhcFxuXG5hbmQgUnVuX29uX3VwZGF0ZV9oYW5kbGVycyA6IHNpZ1xuICB0eXBlIHQgPSBUIDogJ2EgTm9kZS50ICogJ2EgT25fdXBkYXRlX2hhbmRsZXIuTm9kZV91cGRhdGUudCAtPiB0XG5lbmQgPVxuICBSdW5fb25fdXBkYXRlX2hhbmRsZXJzXG5cbmFuZCBTY29wZSA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHwgVG9wXG4gICAgfCBCaW5kIDogKF8sIF8pIEJpbmQudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFRvcFxuICAgIHwgQmluZCA6IChfLCBfKSBCaW5kLnQgLT4gdFxuXG4gIGxldCBzZXhwX29mX3QgPSBmdW5jdGlvblxuICAgIHwgVG9wIC0+IFwiVG9wXCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgfCBCaW5kIGJpbmQgLT4gYmluZC5tYWluIHw+IFslc2V4cF9vZjogXyBOb2RlLnRdXG4gIDs7XG5lbmRcblxuYW5kIFNuYXBzaG90IDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyBhdCA6IFRpbWVfbnMudFxuICAgIDsgYmVmb3JlIDogJ2FcbiAgICA7IHZhbHVlX2F0IDogJ2EgTm9kZS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBTbmFwc2hvdFxuXG5hbmQgU3RhdGUgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICA7IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgOiBib29sXG4gICAgOyBtdXRhYmxlIHN0YWJpbGl6YXRpb25fbnVtIDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgbXV0YWJsZSBjdXJyZW50X3Njb3BlIDogU2NvcGUudFxuICAgIDsgcmVjb21wdXRlX2hlYXAgOiBSZWNvbXB1dGVfaGVhcC50XG4gICAgOyBhZGp1c3RfaGVpZ2h0c19oZWFwIDogQWRqdXN0X2hlaWdodHNfaGVhcC50XG4gICAgOyBwcm9wYWdhdGVfaW52YWxpZGl0eSA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgbXV0YWJsZSBudW1fYWN0aXZlX29ic2VydmVycyA6IGludFxuICAgIDsgbXV0YWJsZSBhbGxfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gICAgOyBmaW5hbGl6ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICAgIDsgbmV3X29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IGRpc2FsbG93ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDogVmFyLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gICAgOyBydW5fb25fdXBkYXRlX2hhbmRsZXJzIDogUnVuX29uX3VwZGF0ZV9oYW5kbGVycy50IFN0YWNrLnRcbiAgICA7IG11dGFibGUgb25seV9pbl9kZWJ1ZyA6IE9ubHlfaW5fZGVidWcudFxuICAgIDsgd2Vha19oYXNodGJscyA6IFBhY2tlZF93ZWFrX2hhc2h0YmwudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gICAgOyBtdXRhYmxlIGtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UgOiBib29sXG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5IDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2NoYW5nZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2NyZWF0ZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2ludmFsaWRhdGVkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fdmFyX3NldHMgOiBpbnRcbiAgICB9XG5lbmQgPVxuICBTdGF0ZVxuXG5hbmQgU3RhdHVzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgfCBTdGFiaWxpemluZ1xuICAgIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnNcbiAgICB8IE5vdF9zdGFiaWxpemluZ1xuICAgIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIG9mIFJhaXNlZF9leG4udFxuZW5kID1cbiAgU3RhdHVzXG5cbmFuZCBTdGVwX2Z1bmN0aW9uX25vZGUgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IG11dGFibGUgY2hpbGQgOiAnYSBTdGVwX2Z1bmN0aW9uLnQgTm9kZS50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBleHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSB1cGNvbWluZ19zdGVwcyA6IChUaW1lX25zLnQgKiAnYSkgU2VxdWVuY2UudFxuICAgIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgICA7IG11dGFibGUgYWxhcm1fdmFsdWUgOiBBbGFybV92YWx1ZS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBTdGVwX2Z1bmN0aW9uX25vZGVcblxuYW5kIFVub3JkZXJlZF9hcnJheV9mb2xkIDogc2lnXG4gIHR5cGUgKCdhLCAnYWNjKSB0ID1cbiAgICB7IG1haW4gOiAnYWNjIE5vZGUudFxuICAgIDsgaW5pdCA6ICdhY2NcbiAgICA7IGYgOiAnYWNjIC0+ICdhIC0+ICdhY2NcbiAgICA7IHVwZGF0ZSA6ICdhY2MgLT4gb2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiAnYWNjXG4gICAgOyBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIDogaW50XG4gICAgOyBjaGlsZHJlbiA6ICdhIE5vZGUudCBhcnJheVxuICAgIDsgbXV0YWJsZSBmb2xkX3ZhbHVlIDogJ2FjYyBVb3B0LnRcbiAgICA7IG11dGFibGUgbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgOiBpbnRcbiAgICB9XG5lbmQgPVxuICBVbm9yZGVyZWRfYXJyYXlfZm9sZFxuXG5hbmQgVmFyIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIHZhbHVlIDogJ2FcbiAgICA7IG11dGFibGUgdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIHNldF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IHdhdGNoIDogJ2EgTm9kZS50XG4gICAgfVxuXG4gIHR5cGUgJ2EgdmFyIDo9ICdhIHRcblxuICBtb2R1bGUgUGFja2VkIDogc2lnXG4gICAgdHlwZSB0ID0gVCA6IF8gdmFyIC0+IHQgW0BAdW5ib3hlZF1cbiAgZW5kXG5lbmQgPVxuICBWYXJcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuVmFyLnQgPVxuICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICA7ICgqIFt2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25dIGlzIG9ubHkgc2V0IHRvIFtVb3B0LnNvbWVdIGlmIHRoZSB1c2VyIGNhbGxzXG4gICAgICAgW1Zhci5zZXRdIGR1cmluZyBzdGFiaWxpemF0aW9uLCBpbiB3aGljaCBjYXNlIGl0IGhvbGRzIHRoZSAobGFzdCkgdmFsdWUgc2V0LiAgQXRcbiAgICAgICB0aGUgZW5kIG9mIHN0YWJpbGl6YXRpb24sIGFsbCBzdWNoIHZhcmlhYmxlcyBhcmUgcHJvY2Vzc2VkIHRvIGRvIFt0LnZhbHVlIDwtXG4gICAgICAgdC52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25dLiAqKVxuICAgIG11dGFibGUgdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDogJ2EgVW9wdC50XG4gIDsgKCogW3NldF9hdF0gdGhlIHN0YWJpbGl6YXRpb24gbnVtYmVyIGluIGVmZmVjdCB0aGUgbW9zdCByZWNlbnQgdGltZSBbdC52YWx1ZV0gY2hhbmdlZC5cbiAgICAgICBUaGlzIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyB0aGUgc3RhYmlsaXphdGlvbiBudW1iZXIgaW4gZWZmZWN0IHRoZSBtb3N0XG4gICAgICAgcmVjZW50IHRpbWUgW1Zhci5zZXQgdF0gd2FzIGNhbGxlZCwgZHVlIHRvIHRoZSBlZmZlY3Qgb2YgW1Zhci5zZXRdIGR1cmluZ1xuICAgICAgIHN0YWJpbGl6YXRpb24gYmVpbmcgZGVsYXllZCB1bnRpbCBhZnRlciB0aGUgc3RhYmlsaXphdGlvbi4gKilcbiAgICBtdXRhYmxlIHNldF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyB3YXRjaCA6ICdhIE5vZGUudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH52YWx1ZTooY2hlY2sgaW52YXJpYW50X2EpXG4gICAgICB+dmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uOihjaGVjayAoVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfnNldF9hdDooY2hlY2sgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50KVxuICAgICAgfndhdGNoOlxuICAgICAgICAoY2hlY2sgKGZ1biAod2F0Y2ggOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggd2F0Y2gua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKSAoKiBwb3NzaWJsZSB3aXRoIFt+dXNlX2N1cnJlbnRfc2NvcGU6dHJ1ZV0gKilcbiAgICAgICAgICAgfCBWYXIgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKSlcbjs7XG5cbmxldCBpbmNyX3N0YXRlIHQgPSB0LndhdGNoLnN0YXRlXG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB2YXIgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgdCA9IFR5cGVzLlZhci5QYWNrZWQudCA9IFQgOiBfIHZhciAtPiB0IFtAQHVuYm94ZWRdIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IGxhdGVzdF92YWx1ZSB0ID1cbiAgaWYgVW9wdC5pc19zb21lIHQudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXG4gIHRoZW4gVW9wdC51bnNhZmVfdmFsdWUgdC52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25cbiAgZWxzZSB0LnZhbHVlXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxubW9kdWxlIFVwZGF0ZSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgRl9pbnZlcnNlIG9mICgnYiAtPiAnYSAtPiAnYilcbiAgICB8IFVwZGF0ZSBvZiAoJ2IgLT4gb2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiAnYilcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdXBkYXRlIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgVXBkYXRlIHVwZGF0ZSAtPiB1cGRhdGVcbiAgICB8IEZfaW52ZXJzZSBmX2ludmVyc2UgLT5cbiAgICAgIGZ1biBmb2xkX3ZhbHVlIH5vbGRfdmFsdWUgfm5ld192YWx1ZSAtPiBmIChmX2ludmVyc2UgZm9sZF92YWx1ZSBvbGRfdmFsdWUpIG5ld192YWx1ZVxuICA7O1xuZW5kXG5cbnR5cGUgKCdhLCAnYWNjKSB0ID0gKCdhLCAnYWNjKSBUeXBlcy5Vbm9yZGVyZWRfYXJyYXlfZm9sZC50ID1cbiAgeyBtYWluIDogJ2FjYyBOb2RlLnRcbiAgOyBpbml0IDogJ2FjY1xuICA7IGYgOiAnYWNjIC0+ICdhIC0+ICdhY2NcbiAgOyB1cGRhdGUgOiAnYWNjIC0+IG9sZF92YWx1ZTonYSAtPiBuZXdfdmFsdWU6J2EgLT4gJ2FjY1xuICA7IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgOiBpbnRcbiAgOyBjaGlsZHJlbiA6ICdhIE5vZGUudCBhcnJheVxuICA7IG11dGFibGUgZm9sZF92YWx1ZSA6ICdhY2MgVW9wdC50XG4gIDsgbXV0YWJsZSBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA6IGludFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IChfLCBfKSB0KSAodDIgOiAoXywgXykgdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBpbnZhcmlhbnRfYWNjIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+aW5pdDooY2hlY2sgaW52YXJpYW50X2FjYylcbiAgICAgIH5mOmlnbm9yZVxuICAgICAgfnVwZGF0ZTppZ25vcmVcbiAgICAgIH5jaGlsZHJlbjpcbiAgICAgICAgKGNoZWNrIChmdW4gY2hpbGRyZW4gLT5cbiAgICAgICAgICAgQXJyYXkuaXRlciBjaGlsZHJlbiB+ZjooZnVuIChjaGlsZCA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hIGNoaWxkLnZhbHVlX29wdDtcbiAgICAgICAgICAgICBpZiB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwgdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfc29tZSBjaGlsZC52YWx1ZV9vcHQpKSkpXG4gICAgICB+Zm9sZF92YWx1ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gZm9sZF92YWx1ZSAtPlxuICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYWNjIGZvbGRfdmFsdWU7XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAgICAgICAgKFVvcHQuaXNfc29tZSBmb2xkX3ZhbHVlKVxuICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAodC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcykpKVxuICAgICAgfm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDw9IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcykpKVxuICAgICAgfmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXM6XG4gICAgICAgIChjaGVjayAoZnVuIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgLT5cbiAgICAgICAgICAgYXNzZXJ0IChmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzID4gMCkpKSlcbjs7XG5cbmxldCBjcmVhdGUgfmluaXQgfmYgfnVwZGF0ZSB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB+Y2hpbGRyZW4gfm1haW4gPVxuICB7IGluaXRcbiAgOyBmXG4gIDsgdXBkYXRlID0gVXBkYXRlLnVwZGF0ZSB1cGRhdGUgfmZcbiAgOyBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIDsgY2hpbGRyZW5cbiAgOyBtYWluXG4gIDsgZm9sZF92YWx1ZSA9XG4gICAgICBVb3B0Lm5vbmVcbiAgKCogV2UgbWFrZSBbbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPSBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXVxuICAgICBzbyB0aGF0IHRoZXJlIHdpbGwgYmUgYSBmdWxsIGNvbXB1dGF0aW9uIHRoZSBuZXh0IHRpbWUgdGhlIG5vZGUgaXMgY29tcHV0ZWQuICopXG4gIDsgbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPSBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIH1cbjs7XG5cbmxldCBmdWxsX2NvbXB1dGUgeyBpbml0OyBmOyBjaGlsZHJlbjsgXyB9ID1cbiAgbGV0IHJlc3VsdCA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgcmVzdWx0IDo9IGYgIXJlc3VsdCAoVW9wdC52YWx1ZV9leG4gKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkudmFsdWVfb3B0KVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgY29tcHV0ZSB0ID1cbiAgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA9IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICB0aGVuIChcbiAgICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIDA7XG4gICAgdC5mb2xkX3ZhbHVlIDwtIFVvcHQuc29tZSAoZnVsbF9jb21wdXRlIHQpKTtcbiAgVW9wdC52YWx1ZV9leG4gdC5mb2xkX3ZhbHVlXG47O1xuXG5sZXQgZm9yY2VfZnVsbF9jb21wdXRlIHQgPVxuICB0LmZvbGRfdmFsdWUgPC0gVW9wdC5ub25lO1xuICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuOztcblxubGV0IGNoaWxkX2NoYW5nZWRcbiAgICAgICh0eXBlIGEgYilcbiAgICAgICh0IDogKGEsIF8pIHQpXG4gICAgICB+KGNoaWxkIDogYiBOb2RlLnQpXG4gICAgICB+Y2hpbGRfaW5kZXhcbiAgICAgIH4ob2xkX3ZhbHVlX29wdCA6IGIgVW9wdC50KVxuICAgICAgfihuZXdfdmFsdWUgOiBiKVxuICA9XG4gIGxldCBjaGlsZF9hdF9pbmRleCA9IHQuY2hpbGRyZW4uKGNoaWxkX2luZGV4KSBpblxuICBtYXRjaCBOb2RlLnR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIGNoaWxkIGNoaWxkX2F0X2luZGV4IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1Vub3JkZXJlZF9hcnJheV9mb2xkLmNoaWxkX2NoYW5nZWRdIG1pc21hdGNoXCJcbiAgICAgICAgICB+dW5vcmRlcmVkX2FycmF5X2ZvbGQ6KHQgOiAoXywgXykgdClcbiAgICAgICAgICAoY2hpbGRfaW5kZXggOiBpbnQpXG4gICAgICAgICAgKGNoaWxkIDogXyBOb2RlLnQpXVxuICB8IFNvbWUgVCAtPlxuICAgIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgLSAxXG4gICAgdGhlbiAoXG4gICAgICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgKyAxO1xuICAgICAgKCogV2Ugb25seSByZWFjaCB0aGlzIGNhc2UgaWYgd2UgaGF2ZSBhbHJlYWR5IGRvbmUgYSBmdWxsIGNvbXB1dGUsIGluIHdoaWNoIGNhc2VcbiAgICAgICAgIFtVb3B0LmlzX3NvbWUgdC5mb2xkX3ZhbHVlXSBhbmQgW1VvcHQuaXNfc29tZSBvbGRfdmFsdWVfb3B0XS4gKilcbiAgICAgIHQuZm9sZF92YWx1ZVxuICAgICAgPC0gVW9wdC5zb21lXG4gICAgICAgICAgICh0LnVwZGF0ZVxuICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gdC5mb2xkX3ZhbHVlKVxuICAgICAgICAgICAgICB+b2xkX3ZhbHVlOihVb3B0LnZhbHVlX2V4biBvbGRfdmFsdWVfb3B0KVxuICAgICAgICAgICAgICB+bmV3X3ZhbHVlKSlcbiAgICBlbHNlIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICB0aGVuIGZvcmNlX2Z1bGxfY29tcHV0ZSB0XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQWxhcm0gPSBUaW1pbmdfd2hlZWwuQWxhcm1cblxudHlwZSB0ID0gKFR5cGVzLkFsYXJtX3ZhbHVlLnRbQHNleHAub3BhcXVlXSkgQWxhcm0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IG51bGwgPSBBbGFybS5udWxsICgpXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgQWxhcm1fdmFsdWUgPSBUeXBlcy5BbGFybV92YWx1ZVxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlN0ZXBfZnVuY3Rpb25fbm9kZS50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgbXV0YWJsZSBjaGlsZCA6ICdhIFN0ZXBfZnVuY3Rpb24udCBOb2RlLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBleHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IG11dGFibGUgdmFsdWUgOiAnYSBVb3B0LnRcbiAgOyBtdXRhYmxlIHVwY29taW5nX3N0ZXBzIDogKFRpbWVfbnMudCAqICdhKSBTZXF1ZW5jZS50XG4gIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgOyBtdXRhYmxlIGFsYXJtX3ZhbHVlIDogKEFsYXJtX3ZhbHVlLnRbQHNleHAub3BhcXVlXSlcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHBoeXNfc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IENvbnN0IF8gLT4gKCkgKCogaGFwcGVucyB3aGVuIFt1cGNvbWluZ19zdGVwc10gYmVjb21lcyBlbXB0eS4gKilcbiAgICAgICAgICAgfCBTdGVwX2Z1bmN0aW9uIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jaGlsZDppZ25vcmVcbiAgICAgIH5leHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0Omlnbm9yZVxuICAgICAgfnZhbHVlOihjaGVjayAoVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfnVwY29taW5nX3N0ZXBzOmlnbm9yZVxuICAgICAgfmFsYXJtOihjaGVjayBBbGFybS5pbnZhcmlhbnQpXG4gICAgICB+YWxhcm1fdmFsdWU6XG4gICAgICAgIChjaGVjayAoZnVuIChhbGFybV92YWx1ZSA6IEFsYXJtX3ZhbHVlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIGFsYXJtX3ZhbHVlLmFjdGlvbiB3aXRoXG4gICAgICAgICAgIHwgU3RlcF9mdW5jdGlvbiB0MiAtPiBhc3NlcnQgKHBoeXNfc2FtZSB0IHQyKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuXG5sZXQgcmVjIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIGExIHN0ZXBzID1cbiAgbWF0Y2ggU2VxdWVuY2UubmV4dCBzdGVwcyB3aXRoXG4gIHwgU29tZSAoKHN0ZXBfYXQsIGEyKSwgc3RlcHMyKSB3aGVuIFRpbWVfbnMuKCA+PSApIHRvXyBzdGVwX2F0IC0+XG4gICAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gYTIgc3RlcHMyXG4gIHwgXyAtPlxuICAgIHQudmFsdWUgPC0gVW9wdC5zb21lIGExO1xuICAgIHQudXBjb21pbmdfc3RlcHMgPC0gc3RlcHNcbjs7XG5cbmxldCBhZHZhbmNlIHQgfnRvXyA9IGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIChVb3B0LnZhbHVlX2V4biB0LnZhbHVlKSB0LnVwY29taW5nX3N0ZXBzXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgKCdhLCAnYWNjKSB0ID0gKCdhLCAnYWNjKSBUeXBlcy5BcnJheV9mb2xkLnQgPVxuICB7IGluaXQgOiAnYWNjXG4gIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBpbnZhcmlhbnRfYWNjIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5pbml0OihjaGVjayBpbnZhcmlhbnRfYWNjKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+Y2hpbGRyZW46XG4gICAgICAgIChjaGVjayAoZnVuIGNoaWxkcmVuIC0+XG4gICAgICAgICAgIEFycmF5Lml0ZXIgY2hpbGRyZW4gfmY6KGZ1biAoY2hpbGQgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSBjaGlsZC52YWx1ZV9vcHQpKSkpXG47O1xuXG5sZXQgY29tcHV0ZSB7IGluaXQ7IGY7IGNoaWxkcmVuIH0gPVxuICBsZXQgcmVzdWx0ID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICByZXN1bHQgOj0gZiAhcmVzdWx0IChVb3B0LnZhbHVlX2V4biAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKS52YWx1ZV9vcHQpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSB0ID0gVHlwZXMuQXQudCA9XG4gIHsgbWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudFxuICA7IGF0IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQ29uc3QgQWZ0ZXIgLT4gKCkgKCogaGFwcGVucyBvbmNlIHRoZSBjdXJyZW50IHRpbWUgcGFzc2VzIFt0LmF0XS4gKilcbiAgICAgICAgICAgfCBBdCB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+YXQ6aWdub3JlXG4gICAgICB+YWxhcm06KGNoZWNrIEFsYXJtLmludmFyaWFudClcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgdCA9IFR5cGVzLkF0X2ludGVydmFscy50ID1cbiAgeyBtYWluIDogdW5pdCBOb2RlLnRcbiAgOyBiYXNlIDogVGltZV9ucy50XG4gIDsgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udFxuICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gIDsgY2xvY2sgOiAoVHlwZXMuQ2xvY2sudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQXRfaW50ZXJ2YWxzIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5iYXNlOmlnbm9yZVxuICAgICAgfmludGVydmFsOihjaGVjayAoZnVuIGludGVydmFsIC0+IGFzc2VydCAoVGltZV9ucy5TcGFuLmlzX3Bvc2l0aXZlIGludGVydmFsKSkpXG4gICAgICB+YWxhcm06KGNoZWNrIEFsYXJtLmludmFyaWFudClcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIEJpbmQgPSBUeXBlcy5CaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcbm1vZHVsZSBTY29wZSA9IFR5cGVzLlNjb3BlXG5cbnR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIEJpbmQudCA9XG4gIHsgbWFpbiA6ICdiIE5vZGUudFxuICA7ICgqIFtmXSBpcyB0aGUgdXNlci1zdXBwbGllZCBmdW5jdGlvbiB0aGF0IHdlIHJ1biBlYWNoIHRpbWUgW3QubGhzXSBjaGFuZ2VzLiAgSXQgaXNcbiAgICAgICBtdXRhYmxlIG9ubHkgc28gd2UgY2FuIGNsZWFyIGl0IHdoZW4gW3RdIGlzIGludmFsaWRhdGVkLiAqKVxuICAgIG11dGFibGUgZiA6ICdhIC0+ICdiIE5vZGUudFxuICA7IGxocyA6ICdhIE5vZGUudFxuICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICA7ICgqIFtyaHNdIGlzIGluaXRpYWxseSBbbm9uZV0sIGFuZCBhZnRlciB0aGF0IGlzIFtzb21lXSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBtb3N0IHJlY2VudFxuICAgICAgIGNhbGwgdG8gW2ZdLiAqKVxuICAgIG11dGFibGUgcmhzIDogJ2IgTm9kZS50IFVvcHQudFxuICA7ICgqIFtyaHNfc2NvcGVdIGlzIHRoZSBzY29wZSBpbiB3aGljaCBbdC5mXSBpcyBydW4sIGkuZS4gaXQgaXMgW1Njb3BlLkJpbmQgdF0uICBJdCBpc1xuICAgICAgIFttdXRhYmxlXSBvbmx5IHRvIGF2b2lkIGEgW2xldCByZWNdIGR1cmluZyBjcmVhdGlvbi4gKilcbiAgICBtdXRhYmxlIHJoc19zY29wZSA6IFNjb3BlLnRcbiAgOyAoKiBbYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXSBpcyB0aGUgaGVhZCBvZiB0aGUgc2luZ2x5LWxpbmtlZCBsaXN0IG9mIG5vZGVzIGNyZWF0ZWQgb25cbiAgICAgICB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIFt0XSwgaS5lLiBpbiBbdC5yaHNfc2NvcGVdLiAqKVxuICAgIG11dGFibGUgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiAoXywgXykgdCkgKHQyIDogKF8sIF8pIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpc192YWxpZCB0ID1cbiAgbWF0Y2ggdC5tYWluLmtpbmQgd2l0aFxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgfCBfIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIHQgfihmIDogTm9kZS5QYWNrZWQudCAtPiB1bml0KSA9XG4gIGxldCByID0gcmVmIHQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCAoVCBub2RlX29uX3JocykgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgIHIgOj0gbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGU7XG4gICAgZiAoVCBub2RlX29uX3JocylcbiAgZG9uZVxuOztcblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgX2ludmFyaWFudF9iIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBCaW5kX21haW4gdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+bGhzOmlnbm9yZVxuICAgICAgfmxoc19jaGFuZ2U6XG4gICAgICAgIChjaGVjayAoZnVuIChsaHNfY2hhbmdlIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBsaHNfY2hhbmdlLmNyZWF0ZWRfaW4gdC5tYWluLmNyZWF0ZWRfaW4pO1xuICAgICAgICAgICBtYXRjaCBsaHNfY2hhbmdlLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBCaW5kX2xoc19jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfnJoczppZ25vcmVcbiAgICAgIH5yaHNfc2NvcGU6XG4gICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgfCBTY29wZS5Ub3AgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgIHwgQmluZCB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JykpKVxuICAgICAgfmFsbF9ub2Rlc19jcmVhdGVkX29uX3JoczpcbiAgICAgICAgKGNoZWNrIChmdW4gXyAtPlxuICAgICAgICAgICBpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBub2RlLmNyZWF0ZWRfaW4gdC5yaHNfc2NvcGUpO1xuICAgICAgICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUgdGhlbiBhc3NlcnQgKHQubGhzX2NoYW5nZS5oZWlnaHQgPCBub2RlLmhlaWdodCkpKSkpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSBlZGdlID0gJ2EgVHlwZXMuRXhwZXJ0LmVkZ2UgPVxuICB7IGNoaWxkIDogJ2EgTm9kZS50XG4gIDsgb25fY2hhbmdlIDogJ2EgLT4gdW5pdFxuICA7ICgqIFtpbmRleF0gaXMgZGVmaW5lZCB3aGVuZXZlciB0aGUgW2VkZ2VdIGlzIGluIHRoZSBbY2hpbGRyZW5dIG9mIHNvbWUgW3RdLiBUaGVuIGl0IGlzXG4gICAgICAgdGhlIGluZGV4IG9mIHRoaXMgW2VkZ2VdIGluIHRoYXQgW2NoaWxkcmVuXSBhcnJheS4gSXQgbWlnaHQgc2VlbSByZWR1bmRhbnQgd2l0aCBhbGxcbiAgICAgICB0aGUgb3RoZXIgaW5kZXhlcyB3ZSBoYXZlLCBidXQgaXQgaXMgbmVjZXNzYXJ5IHRvIHJlbW92ZSBjaGlsZHJlbi4gIFRoZSBpbmRleCBtYXlcbiAgICAgICBjaGFuZ2UgYXMgc2libGluZyBjaGlsZHJlbiBhcmUgcmVtb3ZlZC4gKilcbiAgICBtdXRhYmxlIGluZGV4IDogaW50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHBhY2tlZF9lZGdlID0gVHlwZXMuRXhwZXJ0LnBhY2tlZF9lZGdlID0gRSA6ICdhIGVkZ2UgLT4gcGFja2VkX2VkZ2VcbltAQHVuYm94ZWRdIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkV4cGVydC50ID1cbiAgeyBmIDogdW5pdCAtPiAnYVxuICA7IG9uX29ic2VydmFiaWxpdHlfY2hhbmdlIDogaXNfbm93X29ic2VydmFibGU6Ym9vbCAtPiB1bml0XG4gIDsgbXV0YWJsZSBjaGlsZHJlbiA6IHBhY2tlZF9lZGdlIFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgOyBtdXRhYmxlIG51bV9jaGlsZHJlbiA6IGludFxuICA7ICgqIFdoZW4gc2V0LCBtYWtlcyB0aGUgbm9kZSBvZiBbdF0gc3RhbGUuICBJdCBpcyBzZXQgd2hlbiB0aGUgc2V0IG9mIGNoaWxkcmVuIGNoYW5nZXMuXG4gICAgICAgT3RoZXJ3aXNlIHRoZSBub3JtYWwgY2hlY2sgb2Ygc3RhbGVuZXNzIChjb21wYXJpbmcgdGhlIFtjaGFuZ2VkX2F0XSBmaWVsZCBvZlxuICAgICAgIGNoaWxkcmVuIGFuZCB0aGUgW3JlY29tcHV0ZWRfYXRdIGZpZWxkIGZvciB0aGUgbm9kZSBvZiBbdF0pIHdvdWxkIG5vdCBiZSBlbm91Z2guXG4gICAgICAgVGhpcyBwbGF5cyBhIHJvbGUgc2ltaWxhciB0byB0aGUgY3V0b2ZmIG9mIFtOZXZlcl0gZm9yIHRoZSBsaHMtY2hhbmdlIG9mIGJpbmRzLCBidXRcbiAgICAgICB3ZSBkb24ndCBoYXZlIGEgc3BlY2lhbCBjaGlsZC4gKilcbiAgICBtdXRhYmxlIGZvcmNlX3N0YWxlIDogYm9vbFxuICA7ICgqIFRoZSBudW1iZXIgb2YgaW52YWxpZCBjaGlsZHJlbiB0aGF0IHBvaW50IHRvIHVzLiAgVXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgbm9kZVxuICAgICAgIG9mIFt0XSBuZWVkcyB0byBpbnZhbGlkYXRlZCwgd2l0aG91dCBpdGVyYXRpbmcgb3ZlciBhbGwgdGhlIGNoaWxkcmVuLiAgVGhpcyBpcyBub3RcbiAgICAgICBuZWVkZWQgZm9yIG90aGVyIG5vZGVzLCBiZWNhdXNlIHRoZXJlIGFyZSBubyBvdGhlciBub2RlcyB0aGF0IGhhdmUgYSBwb3RlbnRpYWxseVxuICAgICAgIGxhcmdlIGFuZCBkeW5hbWljIHNldCBvZiBjaGlsZHJlbi4gKilcbiAgICBtdXRhYmxlIG51bV9pbnZhbGlkX2NoaWxkcmVuIDogaW50XG4gIDsgKCogV2hldGhlciB3ZSB3aWxsIGZpcmUgdGhlIFtvbl9jaGFuZ2VdIGNhbGxiYWNrcyBmb3IgYWxsIGNoaWxkcmVuIHdoZW4gdGhlIG5vZGUgb2YgW3RdXG4gICAgICAgaXRzZWxmIHJ1bnMuICBVc2VkIHRvIG1ha2Ugc3VyZSB3ZSByZXJ1biBldmVyeXRoaW5nIGFmdGVyIFt0XSBzd2l0Y2hlcyBmcm9tXG4gICAgICAgdW5vYnNlcnZhYmxlIGFuZCBiYWNrIHRvIG9ic2VydmFibGUuICopXG4gICAgbXV0YWJsZSB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA6IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudFxuICAgICAgX2ludmFyaWFudF9hXG4gICAgICB7IGYgPSBfXG4gICAgICA7IGNoaWxkcmVuXG4gICAgICA7IG51bV9jaGlsZHJlblxuICAgICAgOyBmb3JjZV9zdGFsZSA9IF9cbiAgICAgIDsgbnVtX2ludmFsaWRfY2hpbGRyZW5cbiAgICAgIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgPSBfXG4gICAgICA7IHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzID0gX1xuICAgICAgfVxuICA9XG4gIGFzc2VydCAobnVtX2NoaWxkcmVuIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIGNoaWxkcmVuKTtcbiAgaWdub3JlIG51bV9pbnZhbGlkX2NoaWxkcmVuO1xuICAoKiBpbnZhcmlhbnQgaXMgYmVsb3csIGJlY2F1c2Ugd2UgbmVlZCBzb21lIGNvbnRleHQgKilcbiAgVW5pZm9ybV9hcnJheS5pdGVyaSBjaGlsZHJlbiB+ZjooZnVuIGkgdW9wdCAtPlxuICAgIG1hdGNoIGkgPCBudW1fY2hpbGRyZW4gd2l0aFxuICAgIHwgdHJ1ZSAtPlxuICAgICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gdW9wdCBpblxuICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAoVW9wdC52YWx1ZV9leG4gci5pbmRleCkgfmV4cGVjdDppXG4gICAgfCBmYWxzZSAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSB1b3B0KSlcbjs7XG5cbmxldCBpbnZhcmlhbnRfYWJvdXRfbnVtX2ludmFsaWRfY2hpbGRyZW4gdCB+aXNfbmVjZXNzYXJ5ID1cbiAgbGV0IHsgY2hpbGRyZW47IG51bV9jaGlsZHJlbjsgbnVtX2ludmFsaWRfY2hpbGRyZW47IF8gfSA9IHQgaW5cbiAgaWYgbm90IGlzX25lY2Vzc2FyeVxuICB0aGVuIFsldGVzdF9yZXN1bHQ6IGludF0gbnVtX2ludmFsaWRfY2hpbGRyZW4gfmV4cGVjdDowXG4gIGVsc2UgKFxuICAgIGxldCBjb3VudF9pbnZhbGlkX2NoaWxkcmVuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbnVtX2NoaWxkcmVuIC0gMSBkb1xuICAgICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkcmVuIGkpIGluXG4gICAgICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgci5jaGlsZCkgdGhlbiBpbmNyIGNvdW50X2ludmFsaWRfY2hpbGRyZW5cbiAgICBkb25lO1xuICAgIFsldGVzdF9yZXN1bHQ6IGludF0gbnVtX2ludmFsaWRfY2hpbGRyZW4gfmV4cGVjdDohY291bnRfaW52YWxpZF9jaGlsZHJlbilcbjs7XG5cbmxldCBjcmVhdGUgfmYgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlID1cbiAgeyBmXG4gIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2VcbiAgOyBjaGlsZHJlbiA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbiAgOyBudW1fY2hpbGRyZW4gPSAwXG4gIDsgZm9yY2Vfc3RhbGUgPSBmYWxzZVxuICA7IG51bV9pbnZhbGlkX2NoaWxkcmVuID0gMFxuICA7IHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzID0gdHJ1ZVxuICB9XG47O1xuXG5sZXQgbWFrZV9zdGFsZSB0ID1cbiAgaWYgdC5mb3JjZV9zdGFsZVxuICB0aGVuIGBBbHJlYWR5X3N0YWxlXG4gIGVsc2UgKFxuICAgIHQuZm9yY2Vfc3RhbGUgPC0gdHJ1ZTtcbiAgICBgT2spXG47O1xuXG5sZXQgaW5jcl9pbnZhbGlkX2NoaWxkcmVuIHQgPSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIDwtIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gKyAxXG5sZXQgZGVjcl9pbnZhbGlkX2NoaWxkcmVuIHQgPSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIDwtIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gLSAxXG5cbmxldCBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgdCA9XG4gIGlmIHQubnVtX2NoaWxkcmVuID49IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQuY2hpbGRyZW5cbiAgdGhlbiAoXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKHQubnVtX2NoaWxkcmVuID0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5jaGlsZHJlbik7XG4gICAgbGV0IG5ld19tYXggPSBJbnQubWF4IDIgKDIgKiBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LmNoaWxkcmVuKSBpblxuICAgIHQuY2hpbGRyZW4gPC0gVW5pZm9ybV9hcnJheS5yZWFsbG9jIHQuY2hpbGRyZW4gfmxlbjpuZXdfbWF4KVxuOztcblxubGV0IGFkZF9jaGlsZF9lZGdlIHQgcGFja2VkX2VkZ2UgPVxuICBsZXQgKEUgZWRnZSkgPSBwYWNrZWRfZWRnZSBpblxuICBhc3NlcnQgKFVvcHQuaXNfbm9uZSBlZGdlLmluZGV4KTtcbiAgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHQ7XG4gIGxldCBuZXdfY2hpbGRfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiBpblxuICBlZGdlLmluZGV4IDwtIFVvcHQuc29tZSBuZXdfY2hpbGRfaW5kZXg7XG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQuY2hpbGRyZW4gbmV3X2NoaWxkX2luZGV4IChVb3B0LnNvbWUgcGFja2VkX2VkZ2UpO1xuICB0Lm51bV9jaGlsZHJlbiA8LSB0Lm51bV9jaGlsZHJlbiArIDE7XG4gIHQuZm9yY2Vfc3RhbGUgPC0gdHJ1ZTtcbiAgKCogV2Ugd2lsbCBidW1wIHRoZSBudW1iZXIgb2YgaW52YWxpZCBjaGlsZHJlbiBpZiBuZWNlc3Nhcnkgd2hlbiBjb25uZWN0aW5nIGNoaWxkIGFuZFxuICAgICBwYXJlbnQuICBTYW1lIHRoaW5nIGZvciBydW5uaW5nIHRoZSBbb25fY2hhbmdlXSBjYWxsYmFja3MuICopXG4gIG5ld19jaGlsZF9pbmRleFxuOztcblxubGV0IHN3YXBfY2hpbGRyZW4gdCB+Y2hpbGRfaW5kZXgxIH5jaGlsZF9pbmRleDIgPVxuICBsZXQgKEUgZWRnZTEpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgxKSBpblxuICBsZXQgKEUgZWRnZTIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgyKSBpblxuICBlZGdlMS5pbmRleCA8LSBVb3B0LnNvbWUgY2hpbGRfaW5kZXgyO1xuICBlZGdlMi5pbmRleCA8LSBVb3B0LnNvbWUgY2hpbGRfaW5kZXgxO1xuICBVbmlmb3JtX2FycmF5LnN3YXAgdC5jaGlsZHJlbiBjaGlsZF9pbmRleDEgY2hpbGRfaW5kZXgyXG47O1xuXG5sZXQgbGFzdF9jaGlsZF9lZGdlX2V4biB0ID1cbiAgbGV0IGxhc3RfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiAtIDEgaW5cbiAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gbGFzdF9pbmRleClcbjs7XG5cbmxldCByZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biB0ID1cbiAgbGV0IGxhc3RfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiAtIDEgaW5cbiAgbGV0IHBhY2tlZF9lZGdlX29wdCA9IFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gbGFzdF9pbmRleCBpblxuICBVbmlmb3JtX2FycmF5LnNldCB0LmNoaWxkcmVuIGxhc3RfaW5kZXggVW9wdC5ub25lO1xuICB0Lm51bV9jaGlsZHJlbiA8LSBsYXN0X2luZGV4O1xuICB0LmZvcmNlX3N0YWxlIDwtIHRydWU7XG4gIGFzc2VydCAoVW9wdC5pc19zb21lIHBhY2tlZF9lZGdlX29wdCk7XG4gIGxldCAoRSBlZGdlKSA9IFVvcHQudW5zYWZlX3ZhbHVlIHBhY2tlZF9lZGdlX29wdCBpblxuICBlZGdlLmluZGV4IDwtIFVvcHQubm9uZVxuOztcblxubGV0IGJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIHQgPVxuICBpZiB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuID4gMFxuICB0aGVuIGBJbnZhbGlkXG4gIGVsc2UgKFxuICAgIHQuZm9yY2Vfc3RhbGUgPC0gZmFsc2U7XG4gICAgbGV0IHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzID0gdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyBpblxuICAgIHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPC0gZmFsc2U7XG4gICAgaWYgd2lsbF9maXJlX2FsbF9jYWxsYmFja3NcbiAgICB0aGVuXG4gICAgICBmb3IgaSA9IDAgdG8gdC5udW1fY2hpbGRyZW4gLSAxIGRvXG4gICAgICAgIGxldCAoRSByKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGkpIGluXG4gICAgICAgIHIub25fY2hhbmdlIChVb3B0LnZhbHVlX2V4biByLmNoaWxkLnZhbHVlX29wdClcbiAgICAgIGRvbmU7XG4gICAgYE9rKVxuOztcblxubGV0IG9ic2VydmFiaWxpdHlfY2hhbmdlIHQgfmlzX25vd19vYnNlcnZhYmxlID1cbiAgdC5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSB+aXNfbm93X29ic2VydmFibGU7XG4gIGlmIG5vdCBpc19ub3dfb2JzZXJ2YWJsZVxuICB0aGVuIChcbiAgICB0LndpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDwtIHRydWU7XG4gICAgKCogSWYgd2UgZG9uJ3QgcmVzZXQgbnVtX2ludmFsaWRfY2hpbGRyZW4sIHdlIHdvdWxkIGRvdWJsZSBjb3VudCB0aGVtOiBqdXN0IGltYWdpbmVcbiAgICAgICB3aGF0IGhhcHBlbnMgd2UgaWYgcmVjb25uZWN0L2Rpc2Nvbm5lY3QvcmVjb25uZWN0L2Rpc2Nvbm5lY3Qgd2l0aCBhbiBpbnZhbGlkXG4gICAgICAgY2hpbGQuICopXG4gICAgdC5udW1faW52YWxpZF9jaGlsZHJlbiA8LSAwKVxuOztcblxubGV0IHJ1bl9lZGdlX2NhbGxiYWNrIHQgfmNoaWxkX2luZGV4ID1cbiAgaWYgbm90IHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3NcbiAgdGhlbiAoXG4gICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgpIGluXG4gICAgKCogVGhpcyB2YWx1ZSBpcyBub3QgbmVjZXNzYXJpbHkgc2V0LCBiZWNhdXNlIHdlIHRyeSB0byBydW4gdGhpcyB3aGVuIGNvbm5lY3RpbmcgdGhlXG4gICAgICAgbm9kZSB0byBpdHMgY2hpbGRyZW4sIHdoaWNoIGNvdWxkIGJlIGJlZm9yZSB0aGV5IGhhdmUgcnVuIGV2ZW4gb25jZS4gIEFsc28gdGhlIG5vZGVcbiAgICAgICBjb3VsZCBiZSBpbnZhbGlkLiAqKVxuICAgIGlmIFVvcHQuaXNfc29tZSByLmNoaWxkLnZhbHVlX29wdFxuICAgIHRoZW4gci5vbl9jaGFuZ2UgKFVvcHQudW5zYWZlX3ZhbHVlIHIuY2hpbGQudmFsdWVfb3B0KSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5pbmNsdWRlIFR5cGVzLlNjb3BlXG5cbmxldCB0b3AgPSBUb3BcblxubGV0IGlzX3RvcCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IHRydWVcbiAgfCBCaW5kIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpbnZhcmlhbnQgPSBmdW5jdGlvblxuICB8IFRvcCAtPiAoKVxuICB8IEJpbmQgYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaWdub3JlIGJpbmRcbjs7XG5cbigqIFVubGlrZSBmb3Igbm9kZXMsIHRoZXJlIGlzIG5vIGludmFyaWFudCBbaXNfbmVjZXNzYXJ5IHQgPD0+IGhlaWdodCA+IC0xXSAoZG9lc24ndCB3b3JrXG4gICBiZWNhdXNlIG9mIFtUb3BdKS4gIFRoaXMgaXMgZmluZSBzaW5jZSB0aGUgaGVpZ2h0IG9mIGEgc2NvcGUgaXMgb25seSB1c2VkIHRvIGNvbnN0cmFpblxuICAgb3RoZXIgaGVpZ2h0cywgbm90IHRvIHNjaGVkdWxlIGl0LiAqKVxubGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IC0xXG4gIHwgQmluZCBiaW5kIC0+IGJpbmQubGhzX2NoYW5nZS5oZWlnaHRcbjs7XG5cbmxldCBpc192YWxpZCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IHRydWVcbiAgfCBCaW5kIGJpbmQgLT4gQmluZC5pc192YWxpZCBiaW5kXG47O1xuXG5sZXQgaXNfbmVjZXNzYXJ5ID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gdHJ1ZVxuICB8IEJpbmQgYmluZCAtPiBOb2RlLmlzX25lY2Vzc2FyeSBiaW5kLm1haW5cbjs7XG5cbmxldCBhZGRfbm9kZSB0IChub2RlIDogXyBOb2RlLnQpID1cbiAgYXNzZXJ0IChwaHlzX2VxdWFsIG5vZGUuY3JlYXRlZF9pbiB0KTtcbiAgbWF0Y2ggdCB3aXRoXG4gIHwgVG9wIC0+ICgpXG4gIHwgQmluZCBiaW5kIC0+XG4gICAgbm9kZS5uZXh0X25vZGVfaW5fc2FtZV9zY29wZSA8LSBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocztcbiAgICBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA8LSBVb3B0LnNvbWUgKFR5cGVzLk5vZGUuUGFja2VkLlQgbm9kZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuRnJlZXplLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBjaGlsZCA6ICdhIE5vZGUudFxuICA7IG9ubHlfZnJlZXplX3doZW4gOiAnYSAtPiBib29sXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBhc3NlcnQgKFNjb3BlLmlzX3RvcCBtYWluLmNyZWF0ZWRfaW4pO1xuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKCkgKCogaGFwcGVucyB3aGVuIGZyZWV6aW5nIGFuIGludmFsaWQgdmFsdWUgKilcbiAgICAgICAgICAgfCBDb25zdCBfIC0+ICgpICgqIGhhcHBlbnMgb24gYmVjb21pbmcgZnJvemVuICopXG4gICAgICAgICAgIHwgRnJlZXplIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jaGlsZDppZ25vcmVcbiAgICAgIH5vbmx5X2ZyZWV6ZV93aGVuOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSWZfdGhlbl9lbHNlLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyB0ZXN0IDogYm9vbCBOb2RlLnRcbiAgOyB0ZXN0X2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gIDsgbXV0YWJsZSBjdXJyZW50X2JyYW5jaCA6ICdhIE5vZGUudCBVb3B0LnRcbiAgOyB0aGVuXyA6ICdhIE5vZGUudFxuICA7IGVsc2VfIDogJ2EgTm9kZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSWZfdGhlbl9lbHNlIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gKCkpKVxuICAgICAgfnRlc3Q6aWdub3JlXG4gICAgICB+dGVzdF9jaGFuZ2U6XG4gICAgICAgIChjaGVjayAoZnVuICh0ZXN0X2NoYW5nZSA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCB0ZXN0X2NoYW5nZS5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSWZfdGVzdF9jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmN1cnJlbnRfYnJhbmNoOlxuICAgICAgICAoY2hlY2sgKGZ1biBjdXJyZW50X2JyYW5jaCAtPlxuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgY3VycmVudF9icmFuY2hcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IGN1cnJlbnRfYnJhbmNoID0gVW9wdC52YWx1ZV9leG4gY3VycmVudF9icmFuY2ggaW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGh5c19lcXVhbCBjdXJyZW50X2JyYW5jaCB0LnRoZW5fIHx8IHBoeXNfZXF1YWwgY3VycmVudF9icmFuY2ggdC5lbHNlXykpKSlcbiAgICAgIH50aGVuXzppZ25vcmVcbiAgICAgIH5lbHNlXzppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkpvaW4udCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IGxocyA6ICdhIE5vZGUudCBOb2RlLnRcbiAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgOyBtdXRhYmxlIHJocyA6ICdhIE5vZGUudCBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBKb2luX21haW4gdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmxoczppZ25vcmVcbiAgICAgIH5saHNfY2hhbmdlOlxuICAgICAgICAoY2hlY2sgKGZ1biAobGhzX2NoYW5nZSA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBsaHNfY2hhbmdlLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBKb2luX2xoc19jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfnJoczppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlNuYXBzaG90LnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBhdCA6IFRpbWVfbnMudFxuICA7IGJlZm9yZSA6ICdhXG4gIDsgdmFsdWVfYXQgOiAnYSBOb2RlLnRcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIGFzc2VydCAoU2NvcGUuaXNfdG9wIG1haW4uY3JlYXRlZF9pbik7XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKSAoKiBoYXBwZW5zIHdoZW4gc25hcHNob3R0aW5nIGFuIGludmFsaWQgbm9kZSAqKVxuICAgICAgICAgICB8IENvbnN0IF8gLT4gKCkgKCogaGFwcGVucyBhZnRlciB0aGUgc25hcHNob3QgKilcbiAgICAgICAgICAgfCBTbmFwc2hvdCB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+YXQ6aWdub3JlXG4gICAgICB+YmVmb3JlOihjaGVjayBpbnZhcmlhbnRfYSlcbiAgICAgIH52YWx1ZV9hdDppZ25vcmVcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLktpbmQudCA9XG4gIHwgQXJyYXlfZm9sZCA6IChfLCAnYSkgQXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgfCBBdCA6IEF0LnQgLT4gQmVmb3JlX29yX2FmdGVyLnQgdFxuICB8IEF0X2ludGVydmFscyA6IEF0X2ludGVydmFscy50IC0+IHVuaXQgdFxuICB8IEJpbmRfbGhzX2NoYW5nZSA6IChfLCBfKSBCaW5kLnQgLT4gdW5pdCB0XG4gIHwgQmluZF9tYWluIDogKF8sICdhKSBCaW5kLnQgLT4gJ2EgdFxuICB8IENvbnN0IG9mICdhXG4gIHwgRXhwZXJ0IG9mICdhIEV4cGVydC50XG4gIHwgRnJlZXplIG9mICdhIEZyZWV6ZS50XG4gIHwgSWZfdGVzdF9jaGFuZ2UgOiBfIElmX3RoZW5fZWxzZS50IC0+IHVuaXQgdFxuICB8IElmX3RoZW5fZWxzZSBvZiAnYSBJZl90aGVuX2Vsc2UudFxuICB8IEludmFsaWRcbiAgfCBKb2luX2xoc19jaGFuZ2UgOiBfIEpvaW4udCAtPiB1bml0IHRcbiAgfCBKb2luX21haW4gb2YgJ2EgSm9pbi50XG4gIHwgTWFwIDogKCdhMSAtPiAnYSkgKiAnYTEgTm9kZS50IC0+ICdhIHRcbiAgfCBTbmFwc2hvdCBvZiAnYSBTbmFwc2hvdC50XG4gIHwgU3RlcF9mdW5jdGlvbiBvZiAnYSBTdGVwX2Z1bmN0aW9uX25vZGUudFxuICB8IFVuaW5pdGlhbGl6ZWRcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCA6IChfLCAnYSkgVW5vcmRlcmVkX2FycmF5X2ZvbGQudCAtPiAnYSB0XG4gIHwgVmFyIG9mICdhIFZhci50XG4gIHwgTWFwMiA6ICgnYTEgLT4gJ2EyIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50IC0+ICdhIHRcbiAgfCBNYXAzIDogKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50ICogJ2EzIE5vZGUudCAtPiAnYSB0XG4gIHwgTWFwNCA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50ICogJ2EzIE5vZGUudCAqICdhNCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA1IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA2IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA3IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA4IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA5IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMCA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMSA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYTExIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDEyIDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMyA6XG4gICAgICAoJ2ExXG4gICAgICAgLT4gJ2EyXG4gICAgICAgLT4gJ2EzXG4gICAgICAgLT4gJ2E0XG4gICAgICAgLT4gJ2E1XG4gICAgICAgLT4gJ2E2XG4gICAgICAgLT4gJ2E3XG4gICAgICAgLT4gJ2E4XG4gICAgICAgLT4gJ2E5XG4gICAgICAgLT4gJ2ExMFxuICAgICAgIC0+ICdhMTFcbiAgICAgICAtPiAnYTEyXG4gICAgICAgLT4gJ2ExM1xuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDE0IDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYTEzXG4gICAgICAgLT4gJ2ExNFxuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDE1IDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYTEzXG4gICAgICAgLT4gJ2ExNFxuICAgICAgIC0+ICdhMTVcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgICogJ2ExNSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBuYW1lIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBBcnJheV9mb2xkIF8gLT4gXCJBcnJheV9mb2xkXCJcbiAgfCBBdCBfIC0+IFwiQXRcIlxuICB8IEF0X2ludGVydmFscyBfIC0+IFwiQXRfaW50ZXJ2YWxzXCJcbiAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPiBcIkJpbmRfbGhzX2NoYW5nZVwiXG4gIHwgQmluZF9tYWluIF8gLT4gXCJCaW5kX21haW5cIlxuICB8IENvbnN0IF8gLT4gXCJDb25zdFwiXG4gIHwgRXhwZXJ0IF8gLT4gXCJFeHBlcnRcIlxuICB8IEZyZWV6ZSBfIC0+IFwiRnJlZXplXCJcbiAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+IFwiSWZfdGVzdF9jaGFuZ2VcIlxuICB8IElmX3RoZW5fZWxzZSBfIC0+IFwiSWZfdGhlbl9lbHNlXCJcbiAgfCBJbnZhbGlkIC0+IFwiSW52YWxpZFwiXG4gIHwgSm9pbl9saHNfY2hhbmdlIF8gLT4gXCJKb2luX2xoc19jaGFuZ2VcIlxuICB8IEpvaW5fbWFpbiBfIC0+IFwiSm9pbl9tYWluXCJcbiAgfCBNYXAgXyAtPiBcIk1hcFwiXG4gIHwgTWFwMiBfIC0+IFwiTWFwMlwiXG4gIHwgTWFwMyBfIC0+IFwiTWFwM1wiXG4gIHwgTWFwNCBfIC0+IFwiTWFwNFwiXG4gIHwgTWFwNSBfIC0+IFwiTWFwNVwiXG4gIHwgTWFwNiBfIC0+IFwiTWFwNlwiXG4gIHwgTWFwNyBfIC0+IFwiTWFwN1wiXG4gIHwgTWFwOCBfIC0+IFwiTWFwOFwiXG4gIHwgTWFwOSBfIC0+IFwiTWFwOVwiXG4gIHwgTWFwMTAgXyAtPiBcIk1hcDEwXCJcbiAgfCBNYXAxMSBfIC0+IFwiTWFwMTFcIlxuICB8IE1hcDEyIF8gLT4gXCJNYXAxMlwiXG4gIHwgTWFwMTMgXyAtPiBcIk1hcDEzXCJcbiAgfCBNYXAxNCBfIC0+IFwiTWFwMTRcIlxuICB8IE1hcDE1IF8gLT4gXCJNYXAxNVwiXG4gIHwgU25hcHNob3QgXyAtPiBcIlNuYXBzaG90XCJcbiAgfCBTdGVwX2Z1bmN0aW9uIF8gLT4gXCJTdGVwX2Z1bmN0aW9uXCJcbiAgfCBVbmluaXRpYWxpemVkIC0+IFwiVW5pbml0aWFsaXplZFwiXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPiBcIlVub3JkZXJlZF9hcnJheV9mb2xkXCJcbiAgfCBWYXIgXyAtPiBcIlZhclwiXG47O1xuXG5sZXQgaW52YXJpYW50IDogdHlwZSBhLiBhIEludmFyaWFudC50IC0+IGEgdCBJbnZhcmlhbnQudCA9XG4gIGZ1biBpbnZhcmlhbnRfYSB0IC0+XG4gIG1hdGNoIHQgd2l0aFxuICB8IEFycmF5X2ZvbGQgYXJyYXlfZm9sZCAtPiBBcnJheV9mb2xkLmludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2EgYXJyYXlfZm9sZFxuICB8IEF0IGF0IC0+IEF0LmludmFyaWFudCBhdFxuICB8IEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMgLT4gQXRfaW50ZXJ2YWxzLmludmFyaWFudCBhdF9pbnRlcnZhbHNcbiAgfCBCaW5kX2xoc19jaGFuZ2UgYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaWdub3JlIGJpbmRcbiAgfCBCaW5kX21haW4gYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2EgYmluZFxuICB8IENvbnN0IGEgLT4gaW52YXJpYW50X2EgYVxuICB8IEV4cGVydCBlIC0+IEV4cGVydC5pbnZhcmlhbnQgaW52YXJpYW50X2EgZVxuICB8IEZyZWV6ZSBmcmVlemUgLT4gRnJlZXplLmludmFyaWFudCBpbnZhcmlhbnRfYSBmcmVlemVcbiAgfCBJZl90ZXN0X2NoYW5nZSBpZl90aGVuX2Vsc2UgLT4gSWZfdGhlbl9lbHNlLmludmFyaWFudCBpZ25vcmUgaWZfdGhlbl9lbHNlXG4gIHwgSWZfdGhlbl9lbHNlIGlmX3RoZW5fZWxzZSAtPiBJZl90aGVuX2Vsc2UuaW52YXJpYW50IGludmFyaWFudF9hIGlmX3RoZW5fZWxzZVxuICB8IEludmFsaWQgLT4gKClcbiAgfCBKb2luX2xoc19jaGFuZ2Ugam9pbiAtPiBKb2luLmludmFyaWFudCBpZ25vcmUgam9pblxuICB8IEpvaW5fbWFpbiBqb2luIC0+IEpvaW4uaW52YXJpYW50IGludmFyaWFudF9hIGpvaW5cbiAgfCBNYXAgX1xuICB8IE1hcDIgX1xuICB8IE1hcDMgX1xuICB8IE1hcDQgX1xuICB8IE1hcDUgX1xuICB8IE1hcDYgX1xuICB8IE1hcDcgX1xuICB8IE1hcDggX1xuICB8IE1hcDkgX1xuICB8IE1hcDEwIF9cbiAgfCBNYXAxMSBfXG4gIHwgTWFwMTIgX1xuICB8IE1hcDEzIF9cbiAgfCBNYXAxNCBfXG4gIHwgTWFwMTUgXyAtPiAoKVxuICB8IFNuYXBzaG90IHNuYXBzaG90IC0+IFNuYXBzaG90LmludmFyaWFudCBpbnZhcmlhbnRfYSBzbmFwc2hvdFxuICB8IFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlIC0+XG4gICAgU3RlcF9mdW5jdGlvbl9ub2RlLmludmFyaWFudCBpbnZhcmlhbnRfYSBzdGVwX2Z1bmN0aW9uX25vZGVcbiAgfCBVbmluaXRpYWxpemVkIC0+ICgpXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdW5vcmRlcmVkX2FycmF5X2ZvbGQgLT5cbiAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5pbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9hIHVub3JkZXJlZF9hcnJheV9mb2xkXG4gIHwgVmFyIHZhciAtPiBWYXIuaW52YXJpYW50IGlnbm9yZSB2YXJcbjs7XG5cbmxldCBpbml0aWFsX251bV9jaGlsZHJlbiAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBdCBfIC0+IDBcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiAwXG4gIHwgQmluZF9saHNfY2hhbmdlIF8gLT4gMVxuICB8IEJpbmRfbWFpbiBfIC0+IDJcbiAgfCBDb25zdCBfIC0+IDBcbiAgfCBFeHBlcnQgXyAtPiAwXG4gIHwgRnJlZXplIF8gLT4gMVxuICB8IElmX3Rlc3RfY2hhbmdlIF8gLT4gMVxuICB8IElmX3RoZW5fZWxzZSBfIC0+IDJcbiAgfCBJbnZhbGlkIC0+IDBcbiAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPiAxXG4gIHwgSm9pbl9tYWluIF8gLT4gMlxuICB8IE1hcCBfIC0+IDFcbiAgfCBNYXAyIF8gLT4gMlxuICB8IE1hcDMgXyAtPiAzXG4gIHwgTWFwNCBfIC0+IDRcbiAgfCBNYXA1IF8gLT4gNVxuICB8IE1hcDYgXyAtPiA2XG4gIHwgTWFwNyBfIC0+IDdcbiAgfCBNYXA4IF8gLT4gOFxuICB8IE1hcDkgXyAtPiA5XG4gIHwgTWFwMTAgXyAtPiAxMFxuICB8IE1hcDExIF8gLT4gMTFcbiAgfCBNYXAxMiBfIC0+IDEyXG4gIHwgTWFwMTMgXyAtPiAxM1xuICB8IE1hcDE0IF8gLT4gMTRcbiAgfCBNYXAxNSBfIC0+IDE1XG4gIHwgU25hcHNob3QgXyAtPiAwXG4gIHwgU3RlcF9mdW5jdGlvbiBfIC0+IDFcbiAgfCBVbmluaXRpYWxpemVkIC0+IDBcbiAgfCBWYXIgXyAtPiAwXG4gIHwgQXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gQXJyYXkubGVuZ3RoIGNoaWxkcmVuXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+IEFycmF5Lmxlbmd0aCBjaGlsZHJlblxuOztcblxubGV0IGJpbmRfcmhzX2NoaWxkX2luZGV4ID0gMVxubGV0IGZyZWV6ZV9jaGlsZF9pbmRleCA9IDBcbmxldCBpZl9icmFuY2hfY2hpbGRfaW5kZXggPSAxXG5sZXQgam9pbl9yaHNfY2hpbGRfaW5kZXggPSAxXG5cbigqIFdlIGRvIG5vdCBpbXBsZW1lbnQgdGhlIHRpbWUtYmFzZWQgbm9kZXMgKFtBdF0sIFtBdF9pbnRlcnZhbHNdLCBbU25hcHNob3RdLFxuICAgW1N0ZXBfZnVuY3Rpb25dKSBhcyBwYXJlbnRzIG9mIHRoZSBjdXJyZW50LXRpbWUgbm9kZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gIFdlIGRvbid0XG4gICB3YW50IGFsbCBzdWNoIG5vZGVzIHRvIGJlIHJlY29tcHV0ZWQgd2hlbmV2ZXIgdGhlIHRpbWUgY2hhbmdlcywgd2hpY2ggd291bGQgYmUgaG9ycmlibHlcbiAgIGlubmVmaWNpZW50LiAgSW5zdGVhZCwgd2Ugb25seSB3YW50IHRoZW0gdG8gYmUgcmVjb21wdXRlZCBhdCB0aGUgXCJyaWdodFwiIHRpbWUsXG4gICBpLmUuIHdoZW4gdGltZSBwYXNzZXMgc29tZSB0aHJlc2hvbGQgcmVsZXZhbnQgdG8gdGhlbS4gIFdlIGRvIHRoaXMgdmlhIHNjaGVkdWxpbmdcbiAgIGFsYXJtcyBhdCB0aG9zZSB0aHJlc2hvbGRzLiAqKVxubGV0IGl0ZXJpX2NoaWxkcmVuICh0eXBlIGEpICh0IDogYSB0KSB+KGYgOiBpbnQgLT4gTm9kZS5QYWNrZWQudCAtPiB1bml0KSA6IHVuaXQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgICBmIGkgKFQgKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkpXG4gICAgZG9uZVxuICB8IEF0IF8gLT4gKClcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiAoKVxuICB8IEJpbmRfbGhzX2NoYW5nZSBiaW5kIC0+IGYgMCAoVCBiaW5kLmxocylcbiAgfCBCaW5kX21haW4geyBsaHNfY2hhbmdlOyByaHM7IF8gfSAtPlxuICAgICgqIFZhcmlvdXMgY29kZSwgZS5nLiBbc3RhdGUuYmVjYW1lX25lY2Vzc2FyeV0sIHJlbGllcyBvbiBwcm9jZXNzaW5nIFtsaHNfY2hhbmdlXVxuICAgICAgIGJlZm9yZSBbcmhzXS4gKilcbiAgICBmIDAgKFQgbGhzX2NoYW5nZSk7XG4gICAgaWYgVW9wdC5pc19zb21lIHJocyB0aGVuIGYgMSAoVCAoVW9wdC51bnNhZmVfdmFsdWUgcmhzKSlcbiAgfCBDb25zdCBfIC0+ICgpXG4gIHwgRXhwZXJ0IHsgY2hpbGRyZW47IG51bV9jaGlsZHJlbjsgXyB9IC0+XG4gICAgZm9yIGkgPSAwIHRvIG51bV9jaGlsZHJlbiAtIDEgZG9cbiAgICAgIGxldCAoRXhwZXJ0LkUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpIGluXG4gICAgICBmIGkgKFQgci5jaGlsZClcbiAgICBkb25lXG4gIHwgRnJlZXplIHsgY2hpbGQ7IF8gfSAtPiBmIDAgKFQgY2hpbGQpXG4gIHwgSWZfdGVzdF9jaGFuZ2UgeyB0ZXN0OyBfIH0gLT4gZiAwIChUIHRlc3QpXG4gIHwgSWZfdGhlbl9lbHNlIHsgdGVzdF9jaGFuZ2U7IGN1cnJlbnRfYnJhbmNoOyBfIH0gLT5cbiAgICBmIDAgKFQgdGVzdF9jaGFuZ2UpO1xuICAgIGlmIFVvcHQuaXNfc29tZSBjdXJyZW50X2JyYW5jaCB0aGVuIGYgMSAoVCAoVW9wdC51bnNhZmVfdmFsdWUgY3VycmVudF9icmFuY2gpKVxuICB8IEludmFsaWQgLT4gKClcbiAgfCBKb2luX2xoc19jaGFuZ2UgeyBsaHM7IF8gfSAtPiBmIDAgKFQgbGhzKVxuICB8IEpvaW5fbWFpbiB7IGxoc19jaGFuZ2U7IHJoczsgXyB9IC0+XG4gICAgZiAwIChUIGxoc19jaGFuZ2UpO1xuICAgIGlmIFVvcHQuaXNfc29tZSByaHMgdGhlbiBmIDEgKFQgKFVvcHQudW5zYWZlX3ZhbHVlIHJocykpXG4gIHwgU25hcHNob3QgXyAtPiAoKVxuICB8IFN0ZXBfZnVuY3Rpb24geyBjaGlsZDsgXyB9IC0+XG4gICAgaWYgVW9wdC5pc19zb21lIGNoaWxkIHRoZW4gZiAwIChUIChVb3B0LnVuc2FmZV92YWx1ZSBjaGlsZCkpXG4gIHwgVW5pbml0aWFsaXplZCAtPiAoKVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgICBmIGkgKFQgKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkpXG4gICAgZG9uZVxuICB8IFZhciBfIC0+ICgpXG4gIHwgTWFwIChfLCBub2RlMCkgLT4gZiAwIChUIG5vZGUwKVxuICB8IE1hcDIgKF8sIG5vZGUwLCBub2RlMSkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSlcbiAgfCBNYXAzIChfLCBub2RlMCwgbm9kZTEsIG5vZGUyKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpXG4gIHwgTWFwNCAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKVxuICB8IE1hcDUgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNClcbiAgfCBNYXA2IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpXG4gIHwgTWFwNyAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KVxuICB8IE1hcDggKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNykgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNylcbiAgfCBNYXA5IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNiwgbm9kZTcsIG5vZGU4KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpXG4gIHwgTWFwMTAgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNywgbm9kZTgsIG5vZGU5KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSlcbiAgfCBNYXAxMSAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3LCBub2RlOCwgbm9kZTksIG5vZGUxMClcbiAgICAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApXG4gIHwgTWFwMTJcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSlcbiAgfCBNYXAxM1xuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTFcbiAgICAgICwgbm9kZTEyICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSk7XG4gICAgZiAxMiAoVCBub2RlMTIpXG4gIHwgTWFwMTRcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExXG4gICAgICAsIG5vZGUxMlxuICAgICAgLCBub2RlMTMgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKTtcbiAgICBmIDEyIChUIG5vZGUxMik7XG4gICAgZiAxMyAoVCBub2RlMTMpXG4gIHwgTWFwMTVcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExXG4gICAgICAsIG5vZGUxMlxuICAgICAgLCBub2RlMTNcbiAgICAgICwgbm9kZTE0ICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSk7XG4gICAgZiAxMiAoVCBub2RlMTIpO1xuICAgIGYgMTMgKFQgbm9kZTEzKTtcbiAgICBmIDE0IChUIG5vZGUxNClcbjs7XG5cbigqIFtzbG93X2dldF9jaGlsZF0gaXMgb25seSB1c2VkIGJ5IFtOb2RlLmludmFyaWFudF0sIHNvIHdlIGRvbid0IG1pbmQgdXNpbmcgW3dpdGhfcmV0dXJuXVxuICAgYW5kIFtpdGVyaV9jaGlsZHJlbl0uICBJZiB3ZSBldmVyIG5lZWQgYSBmYXN0IFtnZXRfY2hpbGRdLCB3ZSBjb2RlZCBpdCBpbiByZXZcbiAgIDQ4ZGJmZDAzYzljNS4gKilcbmxldCBzbG93X2dldF9jaGlsZCA6IHR5cGUgYS4gYSB0IC0+IGluZGV4Ol8gLT4gTm9kZS5QYWNrZWQudCA9XG4gIGZ1biB0IH5pbmRleCAtPlxuICBtYXRjaCB0IHdpdGhcbiAgfCBBcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBUIGNoaWxkcmVuLihpbmRleClcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gVCBjaGlsZHJlbi4oaW5kZXgpXG4gIHwgRXhwZXJ0IHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGxldCAoRSBlZGdlKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZHJlbiBpbmRleCkgaW5cbiAgICBUIGVkZ2UuY2hpbGRcbiAgfCBfIC0+XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gaSBjaGlsZCAtPiBpZiBpID0gaW5kZXggdGhlbiByLnJldHVybiBjaGlsZCk7XG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIktpbmQuc2xvd19nZXRfY2hpbGQgZ290IGludmFsaWQgaW5kZXhcIlxuICAgICAgICAoaW5kZXgsIHQpXG4gICAgICAgIFslc2V4cF9vZjogaW50ICogXyB0XSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIEtpbmRcbm1vZHVsZSBJbnRlcm5hbF9vYnNlcnZlciA9IFR5cGVzLkludGVybmFsX29ic2VydmVyXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcbm9wZW4gTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5Ob2RlLnQgPVxuICB7ICgqIFtpZF0gaXMgYSB1bmlxdWUgaWQgZm9yIHRoZSBub2RlLiAqKVxuICAgIGlkIDogTm9kZV9pZC50XG4gIDsgc3RhdGUgOiAoVHlwZXMuU3RhdGUudFtAc2V4cC5vcGFxdWVdKVxuICA7ICgqIFRoZSBmaWVsZHMgZnJvbSBbcmVjb21wdXRlZF9hdF0gdG8gW2NyZWF0ZWRfaW5dIGFyZSBncm91cGVkIHRvZ2V0aGVyIGFuZCBhcmUgaW4gdGhlXG4gICAgICAgc2FtZSBvcmRlciBhcyB0aGV5IGFyZSB1c2VkIGJ5IFtTdGF0ZS5yZWNvbXB1dGVdIFRoaXMgaGFzIGEgcG9zaXRpdmUgcGVyZm9ybWFuY2VcbiAgICAgICBpbXBhY3QgZHVlIHRvIGNhY2hlIGVmZmVjdHMuICBEb24ndCBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZXNlIG5vZGVzIHdpdGhvdXRcbiAgICAgICBwZXJmb3JtYW5jZSB0ZXN0aW5nLiAqKVxuICAgICgqIFtyZWNvbXB1dGVkX2F0XSBpcyB0aGUgbGFzdCBzdGFiaWxpemF0aW9uIHdoZW4gW3RdJ3MgdmFsdWUgd2FzIHJlY29tcHV0ZWQsIGV2ZW4gaWZcbiAgICAgICBpdCB3YXMgY3V0IG9mZi4gKilcbiAgICBtdXRhYmxlIHJlY29tcHV0ZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgKCogW3ZhbHVlX29wdF0gc3RhcnRzIGFzIFtub25lXSwgYW5kIHRoZSBmaXJzdCB0aW1lIFt0XSBpcyBjb21wdXRlZCBpdCBpcyBzZXQgdG9cbiAgICAgICBbc29tZV0sIGFuZCByZW1haW5zIFtzb21lXSB0aGVyZWFmdGVyLCB1bnRpbCBbdF0gaXMgaW52YWxpZGF0ZWQsIGlmIGV2ZXIuICopXG4gICAgbXV0YWJsZSB2YWx1ZV9vcHQgOiAnYSBVb3B0LnRcbiAgOyAoKiBba2luZF0gaXMgdGhlIGtpbmQgb2YgREFHIG5vZGUgW3RdIGlzLiAgW2tpbmRdIGlzIG11dGFibGUgYm90aCBmb3IgaW5pdGlhbGl6YXRpb25cbiAgICAgICBhbmQgYmVjYXVzZSBpdCBjYW4gY2hhbmdlLCBlLmcuIGlmIFt0XSBpcyBpbnZhbGlkYXRlZC4gKilcbiAgICBtdXRhYmxlIGtpbmQgOiAnYSBLaW5kLnRcbiAgOyBtdXRhYmxlIGN1dG9mZiA6ICdhIEN1dG9mZi50XG4gIDsgKCogW2NoYW5nZWRfYXRdIGlzIHRoZSBsYXN0IHN0YWJpbGl6YXRpb24gd2hlbiB0aGlzIG5vZGUgd2FzIGNvbXB1dGVkIGFuZCBub3QgY3V0IG9mZi5cbiAgICAgICBJdCBpcyB1c2VkIHRvIGRldGVjdCB3aGVuIFt0XSdzIHBhcmVudHMgYXJlIHN0YWxlIGFuZCAoYmVjYXVzZSBhbGwgcGFyZW50cyBhcmVcbiAgICAgICBuZWNlc3NhcnkpIG5lZWQgdG8gYmUgcmVjb21wdXRlZC4gKilcbiAgICBtdXRhYmxlIGNoYW5nZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgKCogW251bV9vbl91cGRhdGVfaGFuZGxlcnNdIGlzIFtMaXN0Lmxlbmd0aCB0Lm9uX3VwZGF0ZV9oYW5kbGVyc10gcGx1cyB0aGUgbnVtYmVyIG9mXG4gICAgICAgb24tdXBkYXRlIGhhbmRsZXJzIHN1bW1lZCBvdmVyIGFsbCBvYnNlcnZlcnMgaW4gW3Qub2JzZXJ2ZXJzXS4gIEl0IGlzIHVzZWQgdG9cbiAgICAgICBxdWlja2x5IGRlY2lkZSB3aGV0aGVyIFt0XSBuZWVkcyB0byBiZSBhZGRlZCB0byBbc3RhdGUuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dXG4gICAgICAgd2hlbiBbdF0gY2hhbmdlcy4gIFtudW1fb25fdXBkYXRlX2hhbmRsZXJzXSB3aWxsIGRlY3JlYXNlIHdoZW4gYW4gb2JzZXJ2ZXIgaXNcbiAgICAgICByZW1vdmVkIGZyb20gW3Qub2JzZXJ2ZXJzXSwgaWYgdGhlIG9ic2VydmVyIGhhcyBvbi11cGRhdGUgaGFuZGxlcnMuICopXG4gICAgbXV0YWJsZSBudW1fb25fdXBkYXRlX2hhbmRsZXJzIDogaW50XG4gIDsgKCogVGhlIHBhcmVudHMgb2YgW3RdIGFyZSB0aGUgbm9kZXMgdGhhdCBkZXBlbmQgb24gaXQsIGFuZCBzaG91bGQgYmUgY29tcHV0ZWQgd2hlbiBbdF1cbiAgICAgICBjaGFuZ2VzLCBvbmNlIGFsbCBvZiB0aGVpciBvdGhlciBjaGlsZHJlbiBhcmUgdXAgdG8gZGF0ZS4gIFtudW1fcGFyZW50c10gaXMgdGhlXG4gICAgICAgbnVtYmVyIG9mIHBhcmVudHMuICBJZiBbbnVtX3BhcmVudHMgPj0gMV0sIHRoZW4gW3BhcmVudDBdIGlzIHRoZSBmaXJzdCBwYXJlbnQuXG4gICAgICAgW3BhcmVudDFfYW5kX2JleW9uZF0gaG9sZHMgdGhlIHJlbWFpbmluZyBwYXJlbnRzLiAgVGhlIG9yZGVyIG9mIHRoZSBwYXJlbnRzIGRvZXNuJ3RcbiAgICAgICBtYXR0ZXIuICBPbmUgbm9kZSBtYXkgb2NjdXIgbXVsdGlwbGUgdGltZXMgYXMgYSBwYXJlbnQgb2YgYW5vdGhlciAoZS5nLiBjb25zaWRlclxuICAgICAgIFttYXAyIG4xIG4xIH5mXSkuXG5cbiAgICAgICBUaGlzIHJlcHJlc2VudGF0aW9uIGlzIG9wdGltaXplZCBmb3IgdGhlIG92ZXJ3aGVsbWluZ2x5IGNvbW1vbiBjYXNlIHRoYXQgYSBub2RlIGhhc1xuICAgICAgIG9ubHkgb25lIHBhcmVudC4gKilcbiAgICBtdXRhYmxlIG51bV9wYXJlbnRzIDogaW50XG4gIDsgbXV0YWJsZSBwYXJlbnQxX2FuZF9iZXlvbmQgOiBQYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gIDsgbXV0YWJsZSBwYXJlbnQwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2NyZWF0ZWRfaW5dIGlzIGluaXRpYWxseSB0aGUgc2NvcGUgdGhhdCB0aGUgbm9kZSBpcyBjcmVhdGVkIGluLiAgSWYgYSBub2RlIGlzXG4gICAgICAgbGF0ZXIgXCJyZXNjb3BlZFwiLCB0aGVuIGNyZWF0ZWRfaW4gd2lsbCBiZSBhZGp1c3RlZCB0byB0aGUgbmV3IHNjb3BlIHRoYXQgdGhlIG5vZGVcbiAgICAgICBpcyBwYXJ0IG9mLiAqKVxuICAgIG11dGFibGUgY3JlYXRlZF9pbiA6IFNjb3BlLnRcbiAgOyAoKiBbbmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdIHNpbmdseSBsaW5rcyBhbGwgbm9kZXMgY3JlYXRlZCBpbiBbdC5jcmVhdGVkX2luXS4gKilcbiAgICBtdXRhYmxlIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2hlaWdodF0gaXMgdXNlZCB0byB2aXNpdCBub2RlcyBpbiB0b3BvbG9naWNhbCBvcmRlci4gIElmIFtpc19uZWNlc3NhcnkgdF0sIHRoZW5cbiAgICAgICBbaGVpZ2h0ID4gYy5oZWlnaHRdIGZvciBhbGwgY2hpbGRyZW4gW2NdIG9mIFt0XSwgYW5kIFtoZWlnaHQgPiBTY29wZS5oZWlnaHRcbiAgICAgICB0LmNyZWF0ZWRfaW5dLiAgSWYgW25vdCAoaXNfbmVjZXNzYXJ5IHQpXSwgdGhlbiBbaGVpZ2h0ID0gLTFdLiAqKVxuICAgIG11dGFibGUgaGVpZ2h0IDogaW50XG4gIDsgKCogW2hlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF0gaXMgdGhlIGhlaWdodCBhdCB3aGljaCBbdF0gaXMgc3RvcmVkIGluIHRoZSByZWNvbXB1dGVcbiAgICAgICBoZWFwLCBhbmQgaXMgbm9uLW5lZ2F0aXZlIGlmZiBbdF0gaXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAgSWYgW3RdIGlzIHRoZVxuICAgICAgIHJlY29tcHV0ZSBoZWFwLCB0aGVuIHR5cGljYWxseSBbdC5oZWlnaHQgPSB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF07IGhvd2V2ZXIsXG4gICAgICAgd2hpbGUgaGVpZ2h0IGlzIGJlaW5nIGFkanVzdGVkLCBvbmUgY2FuIHRlbXBvcmFyaWx5IGhhdmUgW3QuaGVpZ2h0ID5cbiAgICAgICB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF0uICBXaGVuIGhlaWdodCBhZGp1c3RtZW50IGZpbmlzaGVzLCBlcXVhbGl0eSBpcyByZXN0b3JlZFxuICAgICAgIGJ5IGluY3JlYXNpbmcgW3QuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXSB0byBbdC5oZWlnaHRdIGFuZCBzaGlmdGluZyBbdF0nc1xuICAgICAgIHBvc2l0aW9uIGluIHRoZSByZWNvbXB1dGUgaGVhcC4gKilcbiAgICBtdXRhYmxlIGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA6IGludFxuICA7ICgqIFtwcmV2X2luX3JlY29tcHV0ZV9oZWFwXSBhbmQgW25leHRfaW5fcmVjb21wdXRlX2hlYXBdIGRvdWJseSBsaW5rIGFsbCBub2RlcyBvZiB0aGVcbiAgICAgICBzYW1lIGhlaWdodCBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICopXG4gICAgbXV0YWJsZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2hlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXSBpcyB1c2VkIG9ubHkgZHVyaW5nIGhlaWdodCBhZGp1c3RtZW50LCBhbmQgaXNcbiAgICAgICBub24tbmVnYXRpdmUgaWZmIFt0XSBpcyBpbiB0aGUgYWRqdXN0LWhlaWdodHMgaGVhcC4gIEl0IGhvbGRzIHRoZSBwcmUtYWRqdXN0ZWRcbiAgICAgICBoZWlnaHQgb2YgW3RdLiAqKVxuICAgIG11dGFibGUgaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBpbnRcbiAgOyAoKiBbbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXSBzaW5nbHkgbGlua3MgYWxsIG5vZGVzIG9mIHRoZSBzYW1lIGhlaWdodCBpbiB0aGVcbiAgICAgICBhZGp1c3QtaGVpZ2h0cyBoZWFwLiAqKVxuICAgIG11dGFibGUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW29sZF92YWx1ZV9vcHRdIGlzIHVzZWQgb25seSBkdXJpbmcgc3RhYmlsaXphdGlvbiwgYW5kIG9ubHkgaWZcbiAgICAgICBbdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMF0uICBJdCBob2xkcyB0aGUgcHJlLXN0YWJpbGl6YXRpb24gdmFsdWUgb2YgW3RdLiAgSXRcbiAgICAgICBpcyBjbGVhcmVkIHdoZW4gcnVubmluZyBbdF0ncyBvbi11cGRhdGUgaGFuZGxlcnMsIGFuZCBzbyBpcyBhbHdheXMgW1VvcHQubm9uZV1cbiAgICAgICBiZXR3ZWVuIHN0YWJpbGl6YXRpb25zLiAqKVxuICAgIG11dGFibGUgb2xkX3ZhbHVlX29wdCA6ICdhIFVvcHQudFxuICA7ICgqIFtvYnNlcnZlcnNdIGlzIHRoZSBoZWFkIG9mIHRoZSBkb3VibHktbGlua2VkIGxpc3Qgb2Ygb2JzZXJ2ZXJzIG9mIFt0XSwgb3JcbiAgICAgICBbVW9wdC5ub25lXSBpZiB0aGVyZSBhcmUgbm8gb2JzZXJ2ZXJzLiAqKVxuICAgIG11dGFibGUgb2JzZXJ2ZXJzIDogKCdhIEludGVybmFsX29ic2VydmVyLnRbQHNleHAub3BhcXVlXSkgVW9wdC50XG4gIDsgKCogW2lzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSBpcyB1c2VkIHRvIGF2b2lkIHB1c2hpbmcgdGhlIHNhbWUgbm9kZSBtdWx0aXBsZVxuICAgICAgIHRpbWVzIG9udG8gW3N0YXRlLmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXS4gKilcbiAgICBtdXRhYmxlIGlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogYm9vbFxuICA7ICgqIFtvbl91cGRhdGVfaGFuZGxlcnNdIGlzIHRoZSBmdW5jdGlvbnMgc3VwcGxpZWQgdG8gW0luY3JlbWVudGFsLm9uX3VwZGF0ZV0gdG8gYmUgcnVuXG4gICAgICAgYXMgZGVzY3JpYmVkIGluIHRoZSBtb2R1bGUgW09uX3VwZGF0ZV9oYW5kbGVyXS4gIFtvbl91cGRhdGVfaGFuZGxlcnNdIGRvZXMgbm90XG4gICAgICAgY29udGFpbiB0aGUgb24tdXBkYXRlIGhhbmRsZXJzIGluIFt0Lm9ic2VydmVyc10uICBbb25fdXBkYXRlX2hhbmRsZXJzXSBvbmx5IGV2ZXJcbiAgICAgICBnZXRzIGxvbmdlcjsgdGhlcmUgaXMgbm8gd2F5IHRvIHJlbW92ZSBlbGVtZW50cy4gKilcbiAgICBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICA7IG11dGFibGUgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IDogaW50IGFycmF5XG4gIDsgbXV0YWJsZSBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgOyBtdXRhYmxlIGZvcmNlX25lY2Vzc2FyeSA6IGJvb2xcbiAgOyBtdXRhYmxlIHVzZXJfaW5mbyA6IERvdF91c2VyX2luZm8udCBvcHRpb25cbiAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcbmxldCBwYWNrZWRfc2FtZSAoUGFja2VkLlQgdDEpIChQYWNrZWQuVCB0MikgPSBzYW1lIHQxIHQyXG5sZXQgaXNfbmVjZXNzYXJ5ID0gTm9kZS5pc19uZWNlc3NhcnlcbmxldCBpbml0aWFsX251bV9jaGlsZHJlbiB0ID0gS2luZC5pbml0aWFsX251bV9jaGlsZHJlbiB0LmtpbmRcbmxldCBpdGVyaV9jaGlsZHJlbiB0IH5mID0gS2luZC5pdGVyaV9jaGlsZHJlbiB0LmtpbmQgfmZcbmxldCBpc192YWxpZCA9IE5vZGUuaXNfdmFsaWRcbmxldCB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSA9IHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lXG5cbmxldCB1c2VyX2luZm8gdCA9XG4gIG1hdGNoIHQudXNlcl9pbmZvIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChJbmZvIGkpIC0+IFNvbWUgaVxuICB8IFNvbWUgb3RoZXIgLT4gU29tZSAoSW5mby5jcmVhdGVfcyAoRG90X3VzZXJfaW5mby5zZXhwX29mX3Qgb3RoZXIpKVxuOztcblxubGV0IHNldF91c2VyX2luZm8gdCBpbmZvID1cbiAgdC51c2VyX2luZm9cbiAgPC0gKG1hdGNoIGluZm8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGkgLT4gU29tZSAoSW5mbyBpKSlcbjs7XG5cbmxldCBhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IHQgfmxhYmVsIH5hdHRycyA9XG4gIGxldCBuZXdfID0gRG90X3VzZXJfaW5mby5kb3QgfmxhYmVsIH5hdHRyaWJ1dGVzOmF0dHJzIGluXG4gIHQudXNlcl9pbmZvXG4gIDwtIChtYXRjaCB0LnVzZXJfaW5mbyB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgbmV3X1xuICAgIHwgU29tZSBvdGhlciAtPiBTb21lIChEb3RfdXNlcl9pbmZvLmFwcGVuZCBvdGhlciBuZXdfKSlcbjs7XG5cbmxldCBlZGdlX2lzX3N0YWxlIH5jaGlsZCB+cGFyZW50ID1cbiAgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSBjaGlsZC5jaGFuZ2VkX2F0IHBhcmVudC5yZWNvbXB1dGVkX2F0ID4gMFxuOztcblxubGV0IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHQgPVxuICBsZXQgaXNfc3RhbGUgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+XG4gICAgaWYgZWRnZV9pc19zdGFsZSB+Y2hpbGQgfnBhcmVudDp0IHRoZW4gaXNfc3RhbGUgOj0gdHJ1ZSk7XG4gICFpc19zdGFsZVxuOztcblxubGV0IGlzX3N0YWxlIDogdHlwZSBhLiBhIHQgLT4gYm9vbCA9XG4gIGZ1biAodCA6IGEgdCkgLT5cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICAoKiBBIGNvbnN0IG5vZGUgaXMgc3RhbGUgb25seSBhdCBpbml0aWFsaXphdGlvbi4gKilcbiAgfCBDb25zdCBfIC0+IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gICgqIFRpbWUtYmFzZWQgbm9kZXMgYXJlIGNvbnNpZGVyZWQgc3RhbGUgd2hlbiBbdC5yZWNvbXB1dGVkX2F0XSBpcyBub25lLCB3aGljaCBoYXBwZW5zXG4gICAgIGF0IGluaXRpYWxpemF0aW9uIGFuZCB3aGVuIHRoZSBhbGFybSBtZWNoYW5pc20gbWFrZXMgYSBub2RlIHN0YWxlIChpdCBzZXRzIHRoZVxuICAgICBbdC5yZWNvbXB1dGVkX2F0XSB0byBbU3RhYmlsaXphdGlvbl9udW0ubm9uZV0pLiAqKVxuICB8IEF0IF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICB8IFNuYXBzaG90IF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgKCogV2UgbmV2ZXIgY29uc2lkZXIgYW4gaW52YWxpZGF0ZWQgbm9kZSB0byBiZSBzdGFsZSAtLSB3aGVuIHdlIGludmFsaWRhdGUgYSBub2RlLCB3ZVxuICAgICBpbW1lZGlhdGVseSBwcm9wYWdhdGUgaW52YWxpZGl0eSB0byBpdHMgYW5jZXN0b3JzLiAqKVxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgKCogQSBbVmFyXSBub2RlIGlzIHN0YWxlIGlmIGl0IHdhcyBzZXQgc2luY2UgaXQgd2FzIHJlY29tcHV0ZWQuICopXG4gIHwgVmFyIHsgc2V0X2F0OyBfIH0gLT4gU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSBzZXRfYXQgdC5yZWNvbXB1dGVkX2F0ID4gMFxuICAoKiBOb2RlcyB0aGF0IGhhdmUgY2hpbGRyZW4uICopXG4gIHwgQmluZF9saHNfY2hhbmdlIF8gLT5cbiAgICBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdCB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG4gIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBBcnJheV9mb2xkIF9cbiAgfCBCaW5kX21haW4gX1xuICB8IEZyZWV6ZSBfXG4gIHwgSWZfdGhlbl9lbHNlIF9cbiAgfCBKb2luX21haW4gX1xuICB8IE1hcCBfXG4gIHwgTWFwMiBfXG4gIHwgTWFwMyBfXG4gIHwgTWFwNCBfXG4gIHwgTWFwNSBfXG4gIHwgTWFwNiBfXG4gIHwgTWFwNyBfXG4gIHwgTWFwOCBfXG4gIHwgTWFwOSBfXG4gIHwgTWFwMTAgX1xuICB8IE1hcDExIF9cbiAgfCBNYXAxMiBfXG4gIHwgTWFwMTMgX1xuICB8IE1hcDE0IF9cbiAgfCBNYXAxNSBfXG4gIHwgU3RlcF9mdW5jdGlvbiBfXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBFeHBlcnQgeyBmb3JjZV9zdGFsZTsgXyB9IC0+XG4gICAgZm9yY2Vfc3RhbGVcbiAgICB8fCBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICAgIHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbjs7XG5cbmxldCBuZWVkc190b19iZV9jb21wdXRlZCB0ID0gaXNfbmVjZXNzYXJ5IHQgJiYgaXNfc3RhbGUgdFxubGV0IGlzX2luX3JlY29tcHV0ZV9oZWFwIHQgPSB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA+PSAwXG5sZXQgaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCB0ID0gdC5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA+PSAwXG5cbmxldCBnZXRfcGFyZW50IHQgfmluZGV4ID1cbiAgVW9wdC52YWx1ZV9leG5cbiAgICAoaWYgaW5kZXggPSAwIHRoZW4gdC5wYXJlbnQwIGVsc2UgVW5pZm9ybV9hcnJheS5nZXQgdC5wYXJlbnQxX2FuZF9iZXlvbmQgKGluZGV4IC0gMSkpXG47O1xuXG5sZXQgaXRlcmlfcGFyZW50cyB0IH5mID1cbiAgaWYgdC5udW1fcGFyZW50cyA+IDBcbiAgdGhlbiAoXG4gICAgZiAwIChVb3B0LnZhbHVlX2V4biB0LnBhcmVudDApO1xuICAgIGZvciBpbmRleCA9IDEgdG8gdC5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgIGYgaW5kZXggKFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LnBhcmVudDFfYW5kX2JleW9uZCAoaW5kZXggLSAxKSkpXG4gICAgZG9uZSlcbjs7XG5cbmxldCBoYXNfY2hpbGQgdCB+Y2hpbGQgPVxuICBsZXQgaGFzID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGNoaWxkJykgLT4gaGFzIDo9ICFoYXMgfHwgc2FtZSBjaGlsZCBjaGlsZCcpO1xuICAhaGFzXG47O1xuXG5sZXQgaGFzX2ludmFsaWRfY2hpbGQgdCA9XG4gIGxldCBoYXMgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+IGhhcyA6PSAhaGFzIHx8IG5vdCAoaXNfdmFsaWQgY2hpbGQpKTtcbiAgIWhhc1xuOztcblxubGV0IGhhc19wYXJlbnQgKHQgOiBfIHQpIH5wYXJlbnQgPVxuICBsZXQgaGFzID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX3BhcmVudHMgdCB+ZjooZnVuIF8gKFQgcGFyZW50JykgLT4gaGFzIDo9ICFoYXMgfHwgc2FtZSBwYXJlbnQgcGFyZW50Jyk7XG4gICFoYXNcbjs7XG5cbmxldCBzaG91bGRfYmVfaW52YWxpZGF0ZWQgOiB0eXBlIGEuIGEgdCAtPiBib29sID1cbiAgZnVuIHQgLT5cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgKCogbm9kZXMgd2l0aCBubyBjaGlsZHJlbiAqKVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQXQgXyAtPiBmYWxzZVxuICB8IEF0X2ludGVydmFscyBfIC0+IGZhbHNlXG4gIHwgQ29uc3QgXyB8IFNuYXBzaG90IF8gfCBWYXIgXyAtPiBmYWxzZVxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgKCogTm9kZXMgd2l0aCBhIGZpeGVkIHNldCBvZiBjaGlsZHJlbiBhcmUgaW52YWxpZCBpZiBhbnkgY2hpbGQgaXMgaW52YWxpZC4gKilcbiAgfCBBcnJheV9mb2xkIF9cbiAgfCBGcmVlemUgX1xuICB8IE1hcCBfXG4gIHwgTWFwMiBfXG4gIHwgTWFwMyBfXG4gIHwgTWFwNCBfXG4gIHwgTWFwNSBfXG4gIHwgTWFwNiBfXG4gIHwgTWFwNyBfXG4gIHwgTWFwOCBfXG4gIHwgTWFwOSBfXG4gIHwgTWFwMTAgX1xuICB8IE1hcDExIF9cbiAgfCBNYXAxMiBfXG4gIHwgTWFwMTMgX1xuICB8IE1hcDE0IF9cbiAgfCBNYXAxNSBfXG4gIHwgU3RlcF9mdW5jdGlvbiBfXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPiBoYXNfaW52YWxpZF9jaGlsZCB0XG4gICgqIEEgKl9jaGFuZ2Ugbm9kZSBpcyBpbnZhbGlkIGlmIHRoZSBub2RlIGl0IGlzIHdhdGNoaW5nIGZvciBjaGFuZ2VzIGlzIGludmFsaWQgKHNhbWVcbiAgICAgcmVhc29uIGFzIGFib3ZlKS4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBbaGFzX2ludmFsaWRfY2hpbGQgdF0uICopXG4gIHwgQmluZF9saHNfY2hhbmdlIHsgbGhzOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHMpXG4gIHwgSWZfdGVzdF9jaGFuZ2UgeyB0ZXN0OyBfIH0gLT4gbm90IChpc192YWxpZCB0ZXN0KVxuICB8IEpvaW5fbGhzX2NoYW5nZSB7IGxoczsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzKVxuICAoKiBbQmluZF9tYWluXSwgW0lmX3RoZW5fZWxzZV0sIGFuZCBbSm9pbl9tYWluXSBhcmUgaW52YWxpZCBpZiB0aGVpciAqX2NoYW5nZSBjaGlsZCBpcyxcbiAgICAgYnV0IG5vdCBuZWNlc3NhcmlseSBpZiB0aGVpciBvdGhlciBjaGlsZHJlbiBhcmUgLS0gdGhlIGdyYXBoIG1heSBiZSByZXN0cnVjdHVyZWQgdG9cbiAgICAgYXZvaWQgdGhlIGludmFsaWRpdHkgb2YgdGhvc2UuICopXG4gIHwgQmluZF9tYWluIHsgbGhzX2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzX2NoYW5nZSlcbiAgfCBJZl90aGVuX2Vsc2UgeyB0ZXN0X2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgdGVzdF9jaGFuZ2UpXG4gIHwgSm9pbl9tYWluIHsgbGhzX2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzX2NoYW5nZSlcbiAgfCBFeHBlcnQgXyAtPlxuICAgICgqIFRoaXMgaXMgc2ltaWxhciB0byB3aGF0IHdlIGRvIGZvciBiaW5kIGFib3ZlLCBleGNlcHQgdGhhdCBhbnkgaW52YWxpZCBjaGlsZCBjYW4gYmVcbiAgICAgICByZW1vdmVkLCBzbyB3ZSBjYW4gb25seSB0ZWxsIGlmIGFuIGV4cGVydCBub2RlIGJlY29tZXMgaW52YWxpZCB3aGVuIGFsbCBpdHNcbiAgICAgICBkZXBlbmRlbmNpZXMgaGF2ZSBmaXJlZCAod2hpY2ggaW4gcHJhY3RpY2UgbWVhbnMgd2hlbiB3ZSBhcmUgYWJvdXQgdG8gcnVuIGl0KS4gKilcbiAgICBmYWxzZVxuOztcblxubGV0IGZvbGRfb2JzZXJ2ZXJzICh0IDogXyB0KSB+aW5pdCB+ZiA9XG4gIGxldCByID0gcmVmIHQub2JzZXJ2ZXJzIGluXG4gIGxldCBhYyA9IHJlZiBpbml0IGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCBvYnNlcnZlciA9IFVvcHQudmFsdWVfZXhuICFyIGluXG4gICAgciA6PSBvYnNlcnZlci5uZXh0X2luX29ic2VydmluZztcbiAgICBhYyA6PSBmICFhYyBvYnNlcnZlclxuICBkb25lO1xuICAhYWNcbjs7XG5cbmxldCBpdGVyX29ic2VydmVycyB0IH5mID0gZm9sZF9vYnNlcnZlcnMgdCB+aW5pdDooKSB+ZjooZnVuICgpIG9ic2VydmVyIC0+IGYgb2JzZXJ2ZXIpXG5cbmxldCBpbnZhcmlhbnQgKHR5cGUgYSkgKGludmFyaWFudF9hIDogYSAtPiB1bml0KSAodCA6IGEgdCkgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIFsldGVzdF9lcTogYm9vbF0gKG5lZWRzX3RvX2JlX2NvbXB1dGVkIHQpIChpc19pbl9yZWNvbXB1dGVfaGVhcCB0KTtcbiAgICBpZiBpc19uZWNlc3NhcnkgdFxuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0ICh0LmhlaWdodCA+IFNjb3BlLmhlaWdodCB0LmNyZWF0ZWRfaW4pO1xuICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+XG4gICAgICAgIGFzc2VydCAodC5oZWlnaHQgPiBjaGlsZC5oZWlnaHQpO1xuICAgICAgICBhc3NlcnQgKGhhc19wYXJlbnQgY2hpbGQgfnBhcmVudDp0KSk7XG4gICAgICBhc3NlcnQgKG5vdCAoc2hvdWxkX2JlX2ludmFsaWRhdGVkIHQpKSk7XG4gICAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gXyAoVCBwYXJlbnQpIC0+XG4gICAgICBhc3NlcnQgKGhhc19jaGlsZCBwYXJlbnQgfmNoaWxkOnQpO1xuICAgICAgYXNzZXJ0IChpc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgICAgIGFzc2VydCAodC5oZWlnaHQgPCBwYXJlbnQuaGVpZ2h0KSk7XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5pZDooY2hlY2sgTm9kZV9pZC5pbnZhcmlhbnQpXG4gICAgICB+c3RhdGU6aWdub3JlXG4gICAgICB+cmVjb21wdXRlZF9hdDooY2hlY2sgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50KVxuICAgICAgfnZhbHVlX29wdDpcbiAgICAgICAgKGNoZWNrIChmdW4gdmFsdWVfb3B0IC0+XG4gICAgICAgICAgIGlmIGlzX3ZhbGlkIHQgJiYgbm90IChpc19zdGFsZSB0KSB0aGVuIGFzc2VydCAoVW9wdC5pc19zb21lIHZhbHVlX29wdCk7XG4gICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hIHZhbHVlX29wdCkpXG4gICAgICB+a2luZDpcbiAgICAgICAgKGNoZWNrIChmdW4ga2luZCAtPlxuICAgICAgICAgICBLaW5kLmludmFyaWFudCBpbnZhcmlhbnRfYSBraW5kO1xuICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgfCBFeHBlcnQgZSAtPlxuICAgICAgICAgICAgIEV4cGVydC5pbnZhcmlhbnRfYWJvdXRfbnVtX2ludmFsaWRfY2hpbGRyZW4gZSB+aXNfbmVjZXNzYXJ5Oihpc19uZWNlc3NhcnkgdClcbiAgICAgICAgICAgfCBfIC0+ICgpKSlcbiAgICAgIH5jdXRvZmY6KGNoZWNrIChDdXRvZmYuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH5jaGFuZ2VkX2F0OlxuICAgICAgICAoY2hlY2sgKGZ1biBjaGFuZ2VkX2F0IC0+XG4gICAgICAgICAgIFN0YWJpbGl6YXRpb25fbnVtLmludmFyaWFudCBjaGFuZ2VkX2F0O1xuICAgICAgICAgICBpZiBTdGFiaWxpemF0aW9uX251bS5pc19zb21lIHQucmVjb21wdXRlZF9hdFxuICAgICAgICAgICB0aGVuIGFzc2VydCAoU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSBjaGFuZ2VkX2F0IHQucmVjb21wdXRlZF9hdCA8PSAwKSkpXG4gICAgICB+bnVtX29uX3VwZGF0ZV9oYW5kbGVyczpcbiAgICAgICAgKGNoZWNrXG4gICAgICAgICAgIChbJXRlc3RfcmVzdWx0OiBpbnRdXG4gICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgKExpc3QubGVuZ3RoIHQub25fdXBkYXRlX2hhbmRsZXJzXG4gICAgICAgICAgICAgICAgICsgZm9sZF9vYnNlcnZlcnMgdCB+aW5pdDowIH5mOihmdW4gbiB7IG9uX3VwZGF0ZV9oYW5kbGVyczsgXyB9IC0+XG4gICAgICAgICAgICAgICAgICAgbiArIExpc3QubGVuZ3RoIG9uX3VwZGF0ZV9oYW5kbGVycykpKSlcbiAgICAgIH5udW1fcGFyZW50czpcbiAgICAgICAgKGNoZWNrIChmdW4gbnVtX3BhcmVudHMgLT5cbiAgICAgICAgICAgYXNzZXJ0IChudW1fcGFyZW50cyA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fcGFyZW50cyA8PSAxICsgVW5pZm9ybV9hcnJheS5sZW5ndGggdC5wYXJlbnQxX2FuZF9iZXlvbmQpKSlcbiAgICAgIH5wYXJlbnQxX2FuZF9iZXlvbmQ6XG4gICAgICAgIChjaGVjayAoZnVuIHBhcmVudDFfYW5kX2JleW9uZCAtPlxuICAgICAgICAgICBmb3IgcGFyZW50X2luZGV4ID0gMSB0byBVbmlmb3JtX2FycmF5Lmxlbmd0aCBwYXJlbnQxX2FuZF9iZXlvbmQgZG9cbiAgICAgICAgICAgICBbJXRlc3RfZXE6IGJvb2xdXG4gICAgICAgICAgICAgICAocGFyZW50X2luZGV4IDwgdC5udW1fcGFyZW50cylcbiAgICAgICAgICAgICAgIChVb3B0LmlzX3NvbWUgKFVuaWZvcm1fYXJyYXkuZ2V0IHBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5wYXJlbnQwOlxuICAgICAgICAoY2hlY2sgKGZ1biBwYXJlbnQwIC0+XG4gICAgICAgICAgIFsldGVzdF9lcTogYm9vbF0gKHQubnVtX3BhcmVudHMgPiAwKSAoVW9wdC5pc19zb21lIHBhcmVudDApKSlcbiAgICAgIH5jcmVhdGVkX2luOihjaGVjayBTY29wZS5pbnZhcmlhbnQpXG4gICAgICB+bmV4dF9ub2RlX2luX3NhbWVfc2NvcGU6XG4gICAgICAgIChjaGVjayAoZnVuIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIC0+XG4gICAgICAgICAgIGlmIFNjb3BlLmlzX3RvcCB0LmNyZWF0ZWRfaW4gfHwgbm90IChpc192YWxpZCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlKSkpXG4gICAgICB+aGVpZ2h0OlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHQgLT5cbiAgICAgICAgICAgaWYgaXNfbmVjZXNzYXJ5IHQgdGhlbiBhc3NlcnQgKGhlaWdodCA+PSAwKSBlbHNlIGFzc2VydCAoaGVpZ2h0ID0gLTEpKSlcbiAgICAgIH5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCAtPlxuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA+PSAtMSk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDw9IHQuaGVpZ2h0KSkpXG4gICAgICB+cHJldl9pbl9yZWNvbXB1dGVfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gKHByZXZfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnQpIC0+XG4gICAgICAgICAgIGlmIG5vdCAoaXNfaW5fcmVjb21wdXRlX2hlYXAgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIHByZXZfaW5fcmVjb21wdXRlX2hlYXBcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IChUIHByZXYpID0gVW9wdC52YWx1ZV9leG4gcHJldl9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICAgICAgICAgICAgIGFzc2VydCAocGFja2VkX3NhbWUgKFQgdCkgKFVvcHQudmFsdWVfZXhuIHByZXYubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCkpO1xuICAgICAgICAgICAgIGFzc2VydCAodC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBwcmV2LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCkpKSlcbiAgICAgIH5uZXh0X2luX3JlY29tcHV0ZV9oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biAobmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA6IFBhY2tlZC50IFVvcHQudCkgLT5cbiAgICAgICAgICAgaWYgbm90IChpc19pbl9yZWNvbXB1dGVfaGVhcCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKFQgbmV4dCkgPSBVb3B0LnZhbHVlX2V4biBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gICAgICAgICAgICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCB0KSAoVW9wdC52YWx1ZV9leG4gbmV4dC5wcmV2X2luX3JlY29tcHV0ZV9oZWFwKSk7XG4gICAgICAgICAgICAgYXNzZXJ0ICh0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IG5leHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKSkpKVxuICAgICAgfmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCAtPlxuICAgICAgICAgICBpZiBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA+PSAwXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8IHQuaGVpZ2h0KSkpXG4gICAgICB+bmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biAobmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogUGFja2VkLnQgVW9wdC50KSAtPlxuICAgICAgICAgICBpZiBub3QgKGlzX2luX2FkanVzdF9oZWlnaHRzX2hlYXAgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXApXG4gICAgICAgICAgIGVsc2UgaWYgVW9wdC5pc19zb21lIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKFQgbmV4dCkgPSBVb3B0LnZhbHVlX2V4biBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgaW5cbiAgICAgICAgICAgICBhc3NlcnQgKGlzX2luX2FkanVzdF9oZWlnaHRzX2hlYXAgbmV4dCk7XG4gICAgICAgICAgICAgYXNzZXJ0ICh0LmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gbmV4dC5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCkpKSlcbiAgICAgIH5vbGRfdmFsdWVfb3B0OihjaGVjayAoVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfm9ic2VydmVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gXyAtPlxuICAgICAgICAgICBpdGVyX29ic2VydmVycyB0IH5mOihmdW4geyBzdGF0ZTsgb2JzZXJ2aW5nOyBfIH0gLT5cbiAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgdCBvYnNlcnZpbmcpO1xuICAgICAgICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2UpKSlcbiAgICAgIH5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbjppZ25vcmVcbiAgICAgIH5vbl91cGRhdGVfaGFuZGxlcnM6aWdub3JlXG4gICAgICB+dXNlcl9pbmZvOmlnbm9yZVxuICAgICAgfm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleDpcbiAgICAgICAgKGNoZWNrIChmdW4gbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IC0+XG4gICAgICAgICAgIChtYXRjaCB0LmtpbmQgd2l0aFxuICAgICAgICAgICAgfCBFeHBlcnQgXyAtPiAoKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGludF1cbiAgICAgICAgICAgICAgICAoQXJyYXkubGVuZ3RoIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleClcbiAgICAgICAgICAgICAgICB+ZXhwZWN0Oihpbml0aWFsX251bV9jaGlsZHJlbiB0KSk7XG4gICAgICAgICAgIGlmIGlzX25lY2Vzc2FyeSB0XG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gY2hpbGRfaW5kZXggKFQgY2hpbGQpIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBwYWNrZWRfc2FtZVxuICAgICAgICAgICAgICAgICAgIChUIHQpXG4gICAgICAgICAgICAgICAgICAgKGdldF9wYXJlbnRcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZFxuICAgICAgICAgICAgICAgICAgICAgIH5pbmRleDpteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSkpKTtcbiAgICAgICAgICAgaWYgZGVidWcgJiYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICAgICAgICAgdGhlbiBBcnJheS5pdGVyIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCB+ZjooZnVuIHggLT4gYXNzZXJ0ICh4ID0gLTEpKSkpXG4gICAgICB+bXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4OlxuICAgICAgICAoY2hlY2sgKGZ1biBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XVxuICAgICAgICAgICAgIChBcnJheS5sZW5ndGggbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4KVxuICAgICAgICAgICAgIH5leHBlY3Q6KFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQucGFyZW50MV9hbmRfYmV5b25kICsgMSk7XG4gICAgICAgICAgIGl0ZXJpX3BhcmVudHMgdCB+ZjooZnVuIHBhcmVudF9pbmRleCAoVCBwYXJlbnQpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBhY2tlZF9zYW1lXG4gICAgICAgICAgICAgICAgIChUIHQpXG4gICAgICAgICAgICAgICAgIChLaW5kLnNsb3dfZ2V0X2NoaWxkXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudC5raW5kXG4gICAgICAgICAgICAgICAgICAgIH5pbmRleDpteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkpKSk7XG4gICAgICAgICAgIGlmIGRlYnVnICYmIG5vdCAoaXNfbmVjZXNzYXJ5IHQpXG4gICAgICAgICAgIHRoZW4gQXJyYXkuaXRlciBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggfmY6KGZ1biB4IC0+IGFzc2VydCAoeCA9IC0xKSkpKVxuICAgICAgfmZvcmNlX25lY2Vzc2FyeTppZ25vcmVcbiAgICAgIH5jcmVhdGlvbl9iYWNrdHJhY2U6aWdub3JlKVxuOztcblxubGV0IHVuc2FmZV92YWx1ZSB0ID0gVW9wdC51bnNhZmVfdmFsdWUgdC52YWx1ZV9vcHRcblxubGV0IHZhbHVlX2V4biB0ID1cbiAgaWYgVW9wdC5pc19zb21lIHQudmFsdWVfb3B0XG4gIHRoZW4gVW9wdC51bnNhZmVfdmFsdWUgdC52YWx1ZV9vcHRcbiAgZWxzZSBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImF0dGVtcHQgdG8gZ2V0IHZhbHVlIG9mIGFuIGludmFsaWQgbm9kZVwiIHQgWyVzZXhwX29mOiBfIHRdXG47O1xuXG5sZXQgZ2V0X2N1dG9mZiB0ID0gdC5jdXRvZmZcbmxldCBzZXRfY3V0b2ZmIHQgY3V0b2ZmID0gdC5jdXRvZmYgPC0gY3V0b2ZmXG5cbmxldCBpc19jb25zdCB0ID1cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgfCBDb25zdCBfIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgb25fdXBkYXRlIHQgb25fdXBkYXRlX2hhbmRsZXIgPVxuICB0Lm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBvbl91cGRhdGVfaGFuZGxlciA6OiB0Lm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzIDwtIHQubnVtX29uX3VwZGF0ZV9oYW5kbGVycyArIDFcbjs7XG5cbmxldCBydW5fb25fdXBkYXRlX2hhbmRsZXJzIHQgbm9kZV91cGRhdGUgfm5vdyA9XG4gIGxldCByID0gcmVmIHQub25fdXBkYXRlX2hhbmRsZXJzIGluXG4gIHdoaWxlIG5vdCAoTGlzdC5pc19lbXB0eSAhcikgZG9cbiAgICBtYXRjaCAhciB3aXRoXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHJlc3QgLT5cbiAgICAgIHIgOj0gcmVzdDtcbiAgICAgIE9uX3VwZGF0ZV9oYW5kbGVyLnJ1biBvbl91cGRhdGVfaGFuZGxlciBub2RlX3VwZGF0ZSB+bm93XG4gIGRvbmU7XG4gIGxldCByID0gcmVmIHQub2JzZXJ2ZXJzIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCBvYnNlcnZlciA9IFVvcHQudmFsdWVfZXhuICFyIGluXG4gICAgciA6PSBvYnNlcnZlci5uZXh0X2luX29ic2VydmluZztcbiAgICBsZXQgciA9IHJlZiBvYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnMgaW5cbiAgICB3aGlsZSBub3QgKExpc3QuaXNfZW1wdHkgIXIpIGRvXG4gICAgICBtYXRjaCAhciB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBvbl91cGRhdGVfaGFuZGxlciA6OiByZXN0IC0+XG4gICAgICAgIHIgOj0gcmVzdDtcbiAgICAgICAgKCogV2UgaGF2ZSB0byB0ZXN0IFtzdGF0ZV0gYmVmb3JlIGVhY2ggb24tdXBkYXRlIGhhbmRsZXIsIGJlY2F1c2UgYW4gb24tdXBkYXRlXG4gICAgICAgICAgIGhhbmRsZXIgbWlnaHQgZGlzYWJsZSBpdHMgb3duIG9ic2VydmVyLCB3aGljaCBzaG91bGQgcHJldmVudCBvdGhlciBvbi11cGRhdGVcbiAgICAgICAgICAgaGFuZGxlcnMgaW4gdGhlIHNhbWUgb2JzZXJ2ZXIgZnJvbSBydW5uaW5nLiAqKVxuICAgICAgICAobWF0Y2ggb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgIHwgSW5fdXNlIC0+IE9uX3VwZGF0ZV9oYW5kbGVyLnJ1biBvbl91cGRhdGVfaGFuZGxlciBub2RlX3VwZGF0ZSB+bm93KVxuICAgIGRvbmVcbiAgZG9uZVxuOztcblxubGV0IHNldF9raW5kIHQga2luZCA9XG4gIHQua2luZCA8LSBraW5kO1xuICB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleFxuICA8LSBBcnJheS5jcmVhdGUgfmxlbjooS2luZC5pbml0aWFsX251bV9jaGlsZHJlbiBraW5kKSAoLTEpXG47O1xuXG5sZXQgY3JlYXRlIHN0YXRlIGNyZWF0ZWRfaW4ga2luZCA9XG4gIGxldCB0ID1cbiAgICB7IGlkID0gTm9kZV9pZC5uZXh0ICgpXG4gICAgOyBzdGF0ZVxuICAgIDsgcmVjb21wdXRlZF9hdCA9IFN0YWJpbGl6YXRpb25fbnVtLm5vbmVcbiAgICA7IHZhbHVlX29wdCA9IFVvcHQubm9uZVxuICAgIDsga2luZFxuICAgIDsgY3V0b2ZmID0gQ3V0b2ZmLnBoeXNfZXF1YWxcbiAgICA7IGNoYW5nZWRfYXQgPSBTdGFiaWxpemF0aW9uX251bS5ub25lXG4gICAgOyBudW1fb25fdXBkYXRlX2hhbmRsZXJzID0gMFxuICAgIDsgbnVtX3BhcmVudHMgPSAwXG4gICAgOyBwYXJlbnQxX2FuZF9iZXlvbmQgPSBVbmlmb3JtX2FycmF5LmVtcHR5XG4gICAgOyBwYXJlbnQwID0gVW9wdC5ub25lXG4gICAgOyBjcmVhdGVkX2luXG4gICAgOyBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSA9IFVvcHQubm9uZVxuICAgIDsgaGVpZ2h0ID0gLTFcbiAgICA7IGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IC0xXG4gICAgOyBwcmV2X2luX3JlY29tcHV0ZV9oZWFwID0gVW9wdC5ub25lXG4gICAgOyBuZXh0X2luX3JlY29tcHV0ZV9oZWFwID0gVW9wdC5ub25lXG4gICAgOyBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IC0xXG4gICAgOyBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IG9sZF92YWx1ZV9vcHQgPSBVb3B0Lm5vbmVcbiAgICA7IG9ic2VydmVycyA9IFVvcHQubm9uZVxuICAgIDsgaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gPSBmYWxzZVxuICAgIDsgb25fdXBkYXRlX2hhbmRsZXJzID0gW11cbiAgICA7IG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCA9XG4gICAgICAgIEFycmF5LmNyZWF0ZSB+bGVuOihLaW5kLmluaXRpYWxfbnVtX2NoaWxkcmVuIGtpbmQpICgtMSlcbiAgICAoKiBbbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4XSBoYXMgb25lIGVsZW1lbnQgYmVjYXVzZSBpdCBtYXkgbmVlZCB0byBob2xkXG4gICAgICAgdGhlIGNoaWxkIGluZGV4IG9mIFtwYXJlbnQwXS4gKilcbiAgICA7IG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCA9IFt8IC0xIHxdXG4gICAgOyBmb3JjZV9uZWNlc3NhcnkgPSBmYWxzZVxuICAgIDsgdXNlcl9pbmZvID0gTm9uZVxuICAgIDsgY3JlYXRpb25fYmFja3RyYWNlID1cbiAgICAgICAgKGlmIHN0YXRlLmtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UgdGhlbiBTb21lIChCYWNrdHJhY2UuZ2V0ICgpKSBlbHNlIE5vbmUpXG4gICAgfVxuICBpblxuICBTY29wZS5hZGRfbm9kZSBjcmVhdGVkX2luIHQ7XG4gICgqIFtpbnZhcmlhbnRdIGRvZXMgbm90IHlldCBob2xkIGhlcmUgYmVjYXVzZSBtYW55IHVzZXMgb2YgW05vZGUuY3JlYXRlXSB1c2UgW2tpbmQgPVxuICAgICBVbmluaXRpYWxpemVkXSwgYW5kIHRoZW4gbXV0YXRlIFt0LmtpbmRdIGxhdGVyLiAqKVxuICB0XG47O1xuXG5sZXQgbWF4X251bV9wYXJlbnRzIHQgPSAxICsgVW5pZm9ybV9hcnJheS5sZW5ndGggdC5wYXJlbnQxX2FuZF9iZXlvbmRcblxubGV0IG1ha2Vfc3BhY2VfZm9yX3BhcmVudF9pZl9uZWNlc3NhcnkgdCA9XG4gIGlmIHQubnVtX3BhcmVudHMgPSBtYXhfbnVtX3BhcmVudHMgdFxuICB0aGVuIChcbiAgICBsZXQgbmV3X21heF9udW1fcGFyZW50cyA9IDIgKiBtYXhfbnVtX3BhcmVudHMgdCBpblxuICAgIHQucGFyZW50MV9hbmRfYmV5b25kXG4gICAgPC0gVW5pZm9ybV9hcnJheS5yZWFsbG9jIHQucGFyZW50MV9hbmRfYmV5b25kIH5sZW46KG5ld19tYXhfbnVtX3BhcmVudHMgLSAxKTtcbiAgICB0Lm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleFxuICAgIDwtIEFycmF5LnJlYWxsb2MgdC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggfmxlbjpuZXdfbWF4X251bV9wYXJlbnRzICgtMSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAodC5udW1fcGFyZW50cyA8IG1heF9udW1fcGFyZW50cyB0KVxuOztcblxubGV0IG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSB0IH5jaGlsZF9pbmRleCA9XG4gIGxldCBtYXhfbnVtX2NoaWxkcmVuID0gQXJyYXkubGVuZ3RoIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IGluXG4gIGlmIGNoaWxkX2luZGV4ID49IG1heF9udW1fY2hpbGRyZW5cbiAgdGhlbiAoXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkX2luZGV4ID0gbWF4X251bV9jaGlsZHJlbik7XG4gICAgbGV0IG5ld19tYXhfbnVtX2NoaWxkcmVuID0gSW50Lm1heCAyICgyICogbWF4X251bV9jaGlsZHJlbikgaW5cbiAgICB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleFxuICAgIDwtIEFycmF5LnJlYWxsb2MgdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggfmxlbjpuZXdfbWF4X251bV9jaGlsZHJlbiAoLTEpKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkX2luZGV4IDwgQXJyYXkubGVuZ3RoIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4KVxuOztcblxubGV0IHNldF9wYXJlbnQgOiB0eXBlIGEuIGNoaWxkOmEgdCAtPiBwYXJlbnQ6UGFja2VkLnQgVW9wdC50IC0+IHBhcmVudF9pbmRleDppbnQgLT4gdW5pdCA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+cGFyZW50X2luZGV4IC0+XG4gIGlmIHBhcmVudF9pbmRleCA9IDBcbiAgdGhlbiBjaGlsZC5wYXJlbnQwIDwtIHBhcmVudFxuICBlbHNlIFVuaWZvcm1fYXJyYXkuc2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkgcGFyZW50XG47O1xuXG5sZXQgbGlua1xuICA6IHR5cGUgYSBiLiBjaGlsZDphIHQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHBhcmVudDpiIHQgLT4gcGFyZW50X2luZGV4OmludCAtPiB1bml0XG4gID1cbiAgZnVuIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4IC0+XG4gIHNldF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQ6KFVvcHQuc29tZSAoUGFja2VkLlQgcGFyZW50KSkgfnBhcmVudF9pbmRleDtcbiAgY2hpbGQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpIDwtIGNoaWxkX2luZGV4O1xuICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleCkgPC0gcGFyZW50X2luZGV4XG47O1xuXG5sZXQgdW5saW5rXG4gIDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gcGFyZW50OmIgdCAtPiBwYXJlbnRfaW5kZXg6aW50IC0+IHVuaXRcbiAgPVxuICBmdW4gfmNoaWxkIH5jaGlsZF9pbmRleCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgc2V0X3BhcmVudCB+Y2hpbGQgfnBhcmVudDpVb3B0Lm5vbmUgfnBhcmVudF9pbmRleDtcbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgY2hpbGQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpIDwtIC0xO1xuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSA8LSAtMSlcbjs7XG5cbmxldCBhZGRfcGFyZW50IDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBwYXJlbnQ6YiB0IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBtYWtlX3NwYWNlX2Zvcl9wYXJlbnRfaWZfbmVjZXNzYXJ5IGNoaWxkO1xuICBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgcGFyZW50IH5jaGlsZF9pbmRleDtcbiAgbGluayB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleDpjaGlsZC5udW1fcGFyZW50cztcbiAgY2hpbGQubnVtX3BhcmVudHMgPC0gY2hpbGQubnVtX3BhcmVudHMgKyAxXG47O1xuXG5sZXQgcmVtb3ZlX3BhcmVudCA6IHR5cGUgYSBiLiBjaGlsZDphIHQgLT4gcGFyZW50OmIgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gdW5pdCA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXggLT5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkLm51bV9wYXJlbnRzID49IDEpO1xuICBsZXQgcGFyZW50X2luZGV4ID0gcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpIGluXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCBwYXJlbnQpIChnZXRfcGFyZW50IGNoaWxkIH5pbmRleDpwYXJlbnRfaW5kZXgpKTtcbiAgbGV0IGxhc3RfcGFyZW50X2luZGV4ID0gY2hpbGQubnVtX3BhcmVudHMgLSAxIGluXG4gIGlmIHBhcmVudF9pbmRleCA8IGxhc3RfcGFyZW50X2luZGV4XG4gIHRoZW4gKFxuICAgIGxldCAoVCBwYXJlbnQpID1cbiAgICAgIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZC5wYXJlbnQxX2FuZF9iZXlvbmQgKGxhc3RfcGFyZW50X2luZGV4IC0gMSkpXG4gICAgaW5cbiAgICBsaW5rXG4gICAgICB+Y2hpbGRcbiAgICAgIH5jaGlsZF9pbmRleDpjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGxhc3RfcGFyZW50X2luZGV4KVxuICAgICAgfnBhcmVudFxuICAgICAgfnBhcmVudF9pbmRleCk7XG4gIHVubGluayB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleDpsYXN0X3BhcmVudF9pbmRleDtcbiAgY2hpbGQubnVtX3BhcmVudHMgPC0gY2hpbGQubnVtX3BhcmVudHMgLSAxXG47O1xuXG5sZXQgc3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZCBwYXJlbnQgfmNoaWxkMSB+Y2hpbGRfaW5kZXgxIH5jaGlsZDIgfmNoaWxkX2luZGV4MiA9XG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIGFzc2VydCAocGFja2VkX3NhbWUgKFQgY2hpbGQxKSAoS2luZC5zbG93X2dldF9jaGlsZCBwYXJlbnQua2luZCB+aW5kZXg6Y2hpbGRfaW5kZXgxKSk7XG4gICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCBjaGlsZDIpIChLaW5kLnNsb3dfZ2V0X2NoaWxkIHBhcmVudC5raW5kIH5pbmRleDpjaGlsZF9pbmRleDIpKSk7XG4gIGxldCBpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxID1cbiAgICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDEpXG4gIGluXG4gIGxldCBpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQyID1cbiAgICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDIpXG4gIGluXG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIGFzc2VydCAoXG4gICAgICBjaGlsZDEubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxKSA9IGNoaWxkX2luZGV4MSk7XG4gICAgYXNzZXJ0IChcbiAgICAgIGNoaWxkMi5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDIpID0gY2hpbGRfaW5kZXgyKSk7XG4gICgqIG5vdyBzdGFydCBzd2FwcGluZyAqKVxuICBjaGlsZDEubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxKSA8LSBjaGlsZF9pbmRleDI7XG4gIGNoaWxkMi5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDIpIDwtIGNoaWxkX2luZGV4MTtcbiAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgxKSA8LSBpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQyO1xuICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDIpIDwtIGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDFcbjs7XG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUGFja2VkLnQgPSBUIDogXyBUeXBlcy5Ob2RlLnQgLT4gdCBbQEB1bmJveGVkXVxuXG4gIGxldCBzZXhwX29mX3QgKFQgdCkgPSB0IHw+IFslc2V4cF9vZjogXyB0XVxuICBsZXQgaW52YXJpYW50IChUIHQpID0gaW52YXJpYW50IGlnbm9yZSB0XG5cbiAgbW9kdWxlIEFzX2xpc3QgKE0gOiBzaWdcbiAgICAgIHZhbCBuZXh0IDogUGFja2VkLnQgLT4gUGFja2VkLnQgVW9wdC50XG4gICAgZW5kKSA9XG4gIHN0cnVjdFxuICAgIHR5cGUgdCA9IFBhY2tlZC50IFVvcHQudFxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgYWMgPSByZWYgaW5pdCBpblxuICAgICAgbGV0IHIgPSByZWYgdCBpblxuICAgICAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgICAgIGxldCBwYWNrZWRfbm9kZSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgICAgIHIgOj0gTS5uZXh0IHBhY2tlZF9ub2RlO1xuICAgICAgICBhYyA6PSBmICFhYyBwYWNrZWRfbm9kZVxuICAgICAgZG9uZTtcbiAgICAgICFhY1xuICAgIDs7XG5cbiAgICBsZXQgaXRlciB0IH5mID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgbiAtPiBmIG4pXG4gICAgbGV0IGludmFyaWFudCB0ID0gaXRlciB0IH5mOmludmFyaWFudFxuICAgIGxldCBsZW5ndGggdCA9IGZvbGQgdCB+aW5pdDowIH5mOihmdW4gbiBfIC0+IG4gKyAxKVxuICAgIGxldCB0b19saXN0IHQgPSBMaXN0LnJldiAoZm9sZCB0IH5pbml0OltdIH5mOihmdW4gYWMgbiAtPiBuIDo6IGFjKSlcbiAgICBsZXQgc2V4cF9vZl90IHQgPSB0b19saXN0IHQgfD4gWyVzZXhwX29mOiBQYWNrZWQudCBsaXN0XVxuICBlbmRcblxuICBsZXQgaXRlcl9kZXNjZW5kYW50c19pbnRlcm5hbCB0cyB+ZiA9XG4gICAgbGV0IHNlZW4gPSBOb2RlX2lkLkhhc2hfc2V0LmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWMgaXRlcl9kZXNjZW5kYW50cyAoVCB0KSA9XG4gICAgICBpZiBub3QgKEhhc2hfc2V0Lm1lbSBzZWVuIHQuaWQpXG4gICAgICB0aGVuIChcbiAgICAgICAgSGFzaF9zZXQuYWRkIHNlZW4gdC5pZDtcbiAgICAgICAgZiAoVCB0KTtcbiAgICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gdCAtPiBpdGVyX2Rlc2NlbmRhbnRzIHQpKVxuICAgIGluXG4gICAgTGlzdC5pdGVyIHRzIH5mOml0ZXJfZGVzY2VuZGFudHM7XG4gICAgc2VlblxuICA7O1xuXG4gIGxldCBpdGVyX2Rlc2NlbmRhbnRzIHRzIH5mID0gaWdub3JlIChpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIHRzIH5mIDogXyBIYXNoX3NldC50KVxuXG4gIG1vZHVsZSBEb3RfdXNlcl9pbmZvID0gc3RydWN0XG4gICAgaW5jbHVkZSBEb3RfdXNlcl9pbmZvXG5cbiAgICBsZXQgZGVmYXVsdCB+bmFtZSB0ID1cbiAgICAgIERvdF91c2VyX2luZm8uZG90XG4gICAgICAgIH5sYWJlbDpbIG5hbWU7IEtpbmQubmFtZSB0LmtpbmQ7IHNwcmludGYgXCJoZWlnaHQ9JWRcIiB0LmhlaWdodCBdXG4gICAgICAgIH5hdHRyaWJ1dGVzOlN0cmluZy5NYXAuZW1wdHlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgYXBwZW5kX3VzZXJfaW5mb19ncmFwaHZpeiAoVCB0KSA9IGFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXogdFxuXG4gIGxldCBwcmludF9ub2RlIG91dCB+bmFtZSB0ID1cbiAgICBsZXQgZGVmYXVsdCA9IERvdF91c2VyX2luZm8uZGVmYXVsdCB+bmFtZSB0IGluXG4gICAgbGV0IGluZm8gPVxuICAgICAgbWF0Y2ggdC51c2VyX2luZm8gd2l0aFxuICAgICAgfCBOb25lIC0+IGRlZmF1bHRcbiAgICAgIHwgU29tZSB1c2VyX2luZm8gLT4gRG90X3VzZXJfaW5mby5hcHBlbmQgZGVmYXVsdCB1c2VyX2luZm9cbiAgICBpblxuICAgIGZwcmludGYgb3V0IFwiJXNcXG5cIiAoRG90X3VzZXJfaW5mby50b19zdHJpbmcgfm5hbWUgKERvdF91c2VyX2luZm8udG9fZG90IGluZm8pKVxuICA7O1xuXG4gIGxldCBzYXZlX2RvdCBvdXQgdHMgPVxuICAgIGxldCBub2RlX25hbWUgPVxuICAgICAgaWYgYW1fcnVubmluZ190ZXN0XG4gICAgICB0aGVuIGZ1biBfIC0+IFwibiMjI1wiXG4gICAgICBlbHNlIGZ1biBub2RlIC0+IFwiblwiIF4gTm9kZV9pZC50b19zdHJpbmcgbm9kZS5pZFxuICAgIGluXG4gICAgZnByaW50ZiBvdXQgXCJkaWdyYXBoIEcge1xcblwiO1xuICAgIGZwcmludGYgb3V0IFwiICByYW5rZGlyID0gQlRcXG5cIjtcbiAgICBsZXQgYmluZF9lZGdlcyA9IHJlZiBbXSBpblxuICAgIGxldCBzZWVuID1cbiAgICAgIGl0ZXJfZGVzY2VuZGFudHNfaW50ZXJuYWwgdHMgfmY6KGZ1biAoVCB0KSAtPlxuICAgICAgICBsZXQgbmFtZSA9IG5vZGVfbmFtZSB0IGluXG4gICAgICAgIHByaW50X25vZGUgb3V0IH5uYW1lIHQ7XG4gICAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGZyb21fKSAtPlxuICAgICAgICAgIGZwcmludGYgb3V0IFwiICAlcyAtPiAlc1xcblwiIChub2RlX25hbWUgZnJvbV8pIG5hbWUpO1xuICAgICAgICBtYXRjaCB0LmtpbmQgd2l0aFxuICAgICAgICB8IEJpbmRfbGhzX2NoYW5nZSBiaW5kIC0+XG4gICAgICAgICAgQmluZC5pdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIGJpbmQgfmY6KGZ1biB0b18gLT5cbiAgICAgICAgICAgIGJpbmRfZWRnZXMgOj0gKFQgdCwgdG9fKSA6OiAhYmluZF9lZGdlcylcbiAgICAgICAgfCBfIC0+ICgpKVxuICAgIGluXG4gICAgTGlzdC5pdGVyICFiaW5kX2VkZ2VzIH5mOihmdW4gKFQgZnJvbSwgVCB0b18pIC0+XG4gICAgICBpZiBIYXNoX3NldC5tZW0gc2VlbiB0b18uaWRcbiAgICAgIHRoZW4gZnByaW50ZiBvdXQgXCIgICVzIC0+ICVzIFtzdHlsZT1kYXNoZWRdXFxuXCIgKG5vZGVfbmFtZSBmcm9tKSAobm9kZV9uYW1lIHRvXykpO1xuICAgIGZwcmludGYgb3V0IFwifVxcbiUhXCJcbiAgOztcblxuICBsZXQgc2F2ZV9kb3RfdG9fZmlsZSBmaWxlIHRzID1cbiAgICBPdXRfY2hhbm5lbC53aXRoX2ZpbGUgZmlsZSB+ZjooZnVuIG91dCAtPiBzYXZlX2RvdCBvdXQgdHMpXG4gIDs7XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIEFzX3JlY29tcHV0ZV9saXN0ID0gTm9kZS5QYWNrZWQuQXNfbGlzdCAoc3RydWN0XG4gICAgbGV0IG5leHQgKE5vZGUuUGFja2VkLlQgbm9kZSkgPSBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXBcbiAgZW5kKVxuXG5tb2R1bGUgTm9kZXNfYnlfaGVpZ2h0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEFzX3JlY29tcHV0ZV9saXN0LnQgVW5pZm9ybV9hcnJheS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgKCogV2UgZGlzcGxheSB0aGUgc21hbGxlc3QgcHJlZml4IG9mIFtub2Rlc19ieV9oZWlnaHRdIHRoYXQgaW5jbHVkZXMgYWxsIG5vZGVzLiAqKVxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBtYXhfbm9uZW1wdHlfaW5kZXggPSByZWYgKC0xKSBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlcmkgdCB+ZjooZnVuIGkgbCAtPiBpZiBVb3B0LmlzX3NvbWUgbCB0aGVuIG1heF9ub25lbXB0eV9pbmRleCA6PSBpKTtcbiAgICBVbmlmb3JtX2FycmF5LnN1YiB0IH5wb3M6MCB+bGVuOighbWF4X25vbmVtcHR5X2luZGV4ICsgMSkgfD4gWyVzZXhwX29mOiB0XVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLlJlY29tcHV0ZV9oZWFwLnQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGVzX2J5X2hlaWdodC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IG1heF9oZWlnaHRfYWxsb3dlZCB0ID0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQgLSAxXG5sZXQgaXNfZW1wdHkgdCA9IHQubGVuZ3RoID0gMFxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmxlbmd0aDpcbiAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgIGxldCBhY3R1YWxfbGVuZ3RoID0gcmVmIDAgaW5cbiAgICAgICAgICAgVW5pZm9ybV9hcnJheS5pdGVyIHQubm9kZXNfYnlfaGVpZ2h0IH5mOihmdW4gbm9kZSAtPlxuICAgICAgICAgICAgIGFjdHVhbF9sZW5ndGggOj0gIWFjdHVhbF9sZW5ndGggKyBBc19yZWNvbXB1dGVfbGlzdC5sZW5ndGggbm9kZSk7XG4gICAgICAgICAgIFsldGVzdF9lcTogaW50XSBsZW5ndGggIWFjdHVhbF9sZW5ndGgpKVxuICAgICAgfmhlaWdodF9sb3dlcl9ib3VuZDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0X2xvd2VyX2JvdW5kIC0+XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9sb3dlcl9ib3VuZCA8PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCk7XG4gICAgICAgICAgIGZvciBoZWlnaHQgPSAwIHRvIGhlaWdodF9sb3dlcl9ib3VuZCAtIDEgZG9cbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0KSlcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+bm9kZXNfYnlfaGVpZ2h0OlxuICAgICAgICAoY2hlY2sgKGZ1biBub2Rlc19ieV9oZWlnaHQgLT5cbiAgICAgICAgICAgVW5pZm9ybV9hcnJheS5pdGVyaSBub2Rlc19ieV9oZWlnaHQgfmY6KGZ1biBoZWlnaHQgbm9kZSAtPlxuICAgICAgICAgICAgIEFzX3JlY29tcHV0ZV9saXN0Lml0ZXIgbm9kZSB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gaGVpZ2h0KTtcbiAgICAgICAgICAgICAgIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKSkpKSkpXG47O1xuXG5sZXQgY3JlYXRlX25vZGVzX2J5X2hlaWdodCB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgVW5pZm9ybV9hcnJheS5jcmVhdGUgfmxlbjoobWF4X2hlaWdodF9hbGxvd2VkICsgMSkgVW9wdC5ub25lXG47O1xuXG5sZXQgc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0IG1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIGlmIGRlYnVnXG4gIHRoZW5cbiAgICBmb3IgaSA9IG1heF9oZWlnaHRfYWxsb3dlZCArIDEgdG8gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQgLSAxIGRvXG4gICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaSkpXG4gICAgZG9uZTtcbiAgbGV0IHNyYyA9IHQubm9kZXNfYnlfaGVpZ2h0IGluXG4gIGxldCBkc3QgPSBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWQgaW5cbiAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgfnNyY1xuICAgIH5zcmNfcG9zOjBcbiAgICB+ZHN0XG4gICAgfmRzdF9wb3M6MFxuICAgIH5sZW46KG1pbiAoVW5pZm9ybV9hcnJheS5sZW5ndGggc3JjKSAoVW5pZm9ybV9hcnJheS5sZW5ndGggZHN0KSk7XG4gIHQubm9kZXNfYnlfaGVpZ2h0IDwtIGRzdDtcbiAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gbWluIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBkc3QpXG47O1xuXG5sZXQgY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICB7IGxlbmd0aCA9IDBcbiAgOyBoZWlnaHRfbG93ZXJfYm91bmQgPSBtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxXG4gIDsgbm9kZXNfYnlfaGVpZ2h0ID0gY3JlYXRlX25vZGVzX2J5X2hlaWdodCB+bWF4X2hlaWdodF9hbGxvd2VkXG4gIH1cbjs7XG5cbmxldCBzZXRfbmV4dCAocHJldiA6IE5vZGUuUGFja2VkLnQgVW9wdC50KSB+bmV4dCA9XG4gIGlmIFVvcHQuaXNfc29tZSBwcmV2XG4gIHRoZW4gKFxuICAgIGxldCAoVCBwcmV2KSA9IFVvcHQudW5zYWZlX3ZhbHVlIHByZXYgaW5cbiAgICBwcmV2Lm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gbmV4dClcbjs7XG5cbmxldCBzZXRfcHJldiAobmV4dCA6IE5vZGUuUGFja2VkLnQgVW9wdC50KSB+cHJldiA9XG4gIGlmIFVvcHQuaXNfc29tZSBuZXh0XG4gIHRoZW4gKFxuICAgIGxldCAoVCBuZXh0KSA9IFVvcHQudW5zYWZlX3ZhbHVlIG5leHQgaW5cbiAgICBuZXh0LnByZXZfaW5fcmVjb21wdXRlX2hlYXAgPC0gcHJldilcbjs7XG5cbmxldCBsaW5rICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBsZXQgaGVpZ2h0ID0gbm9kZS5oZWlnaHQgaW5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gIG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDwtIGhlaWdodDtcbiAgbGV0IG5leHQgPSBVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgaW5cbiAgbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIDwtIG5leHQ7XG4gIHNldF9wcmV2IG5leHQgfnByZXY6KFVvcHQuc29tZSAoTm9kZS5QYWNrZWQuVCBub2RlKSk7XG4gIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgKFVvcHQuc29tZSAoTm9kZS5QYWNrZWQuVCBub2RlKSlcbjs7XG5cbmxldCB1bmxpbmsgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGxldCBwcmV2ID0gbm9kZS5wcmV2X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gIGxldCBuZXh0ID0gbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gIGlmIHBoeXNfc2FtZVxuICAgICAgIChVb3B0LnNvbWUgbm9kZSlcbiAgICAgICAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApXG4gIHRoZW4gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIG5leHQ7XG4gIHNldF9wcmV2IG5leHQgfnByZXY7XG4gIHNldF9uZXh0IHByZXYgfm5leHQ7XG4gIG5vZGUucHJldl9pbl9yZWNvbXB1dGVfaGVhcCA8LSBVb3B0Lm5vbmVcbjs7XG5cbigqIFdlIGRvbid0IHNldCBbbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwXSBoZXJlLCBidXQgcmF0aGVyIGFmdGVyIGNhbGxpbmcgW3VubGlua10uICopXG5cbmxldCBhZGQgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGlmIGRlYnVnICYmIChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgfHwgbm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImluY29ycmVjdCBhdHRlbXB0IHRvIGFkZCBub2RlIHRvIHJlY29tcHV0ZSBoZWFwXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm9kZS5oZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICBsZXQgaGVpZ2h0ID0gbm9kZS5oZWlnaHQgaW5cbiAgaWYgaGVpZ2h0IDwgdC5oZWlnaHRfbG93ZXJfYm91bmQgdGhlbiB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBoZWlnaHQ7XG4gIGxpbmsgdCBub2RlO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCByZW1vdmUgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGlmIGRlYnVnICYmICgobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpKSB8fCBOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiaW5jb3JyZWN0IFtyZW1vdmVdIG9mIG5vZGUgZnJvbSByZWNvbXB1dGUgaGVhcFwiXG4gICAgICBub2RlXG4gICAgICBbJXNleHBfb2Y6IF8gTm9kZS50XTtcbiAgdW5saW5rIHQgbm9kZTtcbiAgbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIDwtIFVvcHQubm9uZTtcbiAgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gLTE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMVxuOztcblxubGV0IGluY3JlYXNlX2hlaWdodCAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChub2RlLmhlaWdodCA+IG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKTtcbiAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgICBhc3NlcnQgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSkpO1xuICB1bmxpbmsgdCBub2RlO1xuICBsaW5rIHQgbm9kZVxuOztcblxubGV0IG1pbl9oZWlnaHQgdCA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0XG4gIGVsc2UgKFxuICAgIGxldCBub2Rlc19ieV9oZWlnaHQgPSB0Lm5vZGVzX2J5X2hlaWdodCBpblxuICAgIHdoaWxlIFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgbm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kKSBkb1xuICAgICAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gdC5oZWlnaHRfbG93ZXJfYm91bmQgKyAxXG4gICAgZG9uZSk7XG4gIHQuaGVpZ2h0X2xvd2VyX2JvdW5kXG47O1xuXG5sZXQgcmVtb3ZlX21pbiB0IDogTm9kZS5QYWNrZWQudCA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IG5vZGVzX2J5X2hlaWdodCA9IHQubm9kZXNfYnlfaGVpZ2h0IGluXG4gIGxldCBub2RlID0gcmVmIChVbmlmb3JtX2FycmF5LmdldCBub2Rlc19ieV9oZWlnaHQgdC5oZWlnaHRfbG93ZXJfYm91bmQpIGluXG4gIHdoaWxlIFVvcHQuaXNfbm9uZSAhbm9kZSBkb1xuICAgIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIHQuaGVpZ2h0X2xvd2VyX2JvdW5kICsgMTtcbiAgICBpZiBkZWJ1ZyAmJiB0LmhlaWdodF9sb3dlcl9ib3VuZCA+PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUmVjb21wdXRlX2hlYXAucmVtb3ZlX21pbiB1bmV4cGVjdGVkbHkgcmVhY2hlZCBlbmQgb2YgaGVhcFwiXG4gICAgICAgIHRcbiAgICAgICAgWyVzZXhwX29mOiB0XTtcbiAgICBub2RlIDo9IFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZFxuICBkb25lO1xuICBsZXQgKFQgbm9kZSkgPSBVb3B0LnVuc2FmZV92YWx1ZSAhbm9kZSBpblxuICBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBsZXQgbmV4dCA9IG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICBVbmlmb3JtX2FycmF5LnNldCB0Lm5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZCBuZXh0O1xuICBzZXRfcHJldiBuZXh0IH5wcmV2OlVvcHQubm9uZTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBub2RlLnByZXZfaW5fcmVjb21wdXRlX2hlYXApO1xuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gVW9wdC5ub25lO1xuICBUIG5vZGVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcblxubW9kdWxlIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QgPSBOb2RlLlBhY2tlZC5Bc19saXN0IChzdHJ1Y3RcbiAgICBsZXQgbmV4dCAoTm9kZS5QYWNrZWQuVCBub2RlKSA9IG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXG4gIGVuZClcblxubW9kdWxlIE5vZGVzX2J5X2hlaWdodCA9IHN0cnVjdFxuICB0eXBlIHQgPSBBc19hZGp1c3RfaGVpZ2h0c19saXN0LnQgVW5pZm9ybV9hcnJheS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICBsZXQgbWF4X25vbmVtcHR5X2luZGV4ID0gcmVmICgtMSkgaW5cbiAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIHQgfmY6KGZ1biBpIGwgLT4gaWYgVW9wdC5pc19zb21lIGwgdGhlbiBtYXhfbm9uZW1wdHlfaW5kZXggOj0gaSk7XG4gICAgVW5pZm9ybV9hcnJheS5zdWIgdCB+cG9zOjAgfmxlbjooIW1heF9ub25lbXB0eV9pbmRleCArIDEpIHw+IFslc2V4cF9vZjogdF1cbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgVW5pZm9ybV9hcnJheS5pdGVyaSB0IH5mOihmdW4gaGVpZ2h0IG5vZGVzIC0+XG4gICAgICAgIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QuaW52YXJpYW50IG5vZGVzO1xuICAgICAgICBBc19hZGp1c3RfaGVpZ2h0c19saXN0Lml0ZXIgbm9kZXMgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgICAgICAgIGFzc2VydCAobm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IGhlaWdodCk7XG4gICAgICAgICAgYXNzZXJ0IChub2RlLmhlaWdodCA+IG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXApO1xuICAgICAgICAgIGlmIE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZVxuICAgICAgICAgIHRoZW4gYXNzZXJ0IChub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXApKSkpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgICBVbmlmb3JtX2FycmF5LmNyZWF0ZSB+bGVuOihtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxKSBVb3B0Lm5vbmVcbiAgOztcblxuICBsZXQgbGVuZ3RoIHQgPVxuICAgIGxldCByID0gcmVmIDAgaW5cbiAgICBVbmlmb3JtX2FycmF5Lml0ZXIgdCB+ZjooZnVuIG5vZGUgLT4gciA6PSAhciArIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QubGVuZ3RoIG5vZGUpO1xuICAgICFyXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gVHlwZXMuQWRqdXN0X2hlaWdodHNfaGVhcC50ID1cbiAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgaGVpZ2h0X2xvd2VyX2JvdW5kIDogaW50XG4gIDsgbXV0YWJsZSBtYXhfaGVpZ2h0X3NlZW4gOiBpbnRcbiAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGVzX2J5X2hlaWdodC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcbmxldCBtYXhfaGVpZ2h0X2FsbG93ZWQgdCA9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0IC0gMVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmxlbmd0aDpcbiAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+IGFzc2VydCAobGVuZ3RoID0gTm9kZXNfYnlfaGVpZ2h0Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCkpKVxuICAgICAgfmhlaWdodF9sb3dlcl9ib3VuZDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0X2xvd2VyX2JvdW5kIC0+XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9sb3dlcl9ib3VuZCA8PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCk7XG4gICAgICAgICAgIGZvciBoZWlnaHQgPSAwIHRvIGhlaWdodF9sb3dlcl9ib3VuZCAtIDEgZG9cbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0KSlcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+bWF4X2hlaWdodF9zZWVuOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfaGVpZ2h0X3NlZW4gLT5cbiAgICAgICAgICAgYXNzZXJ0IChtYXhfaGVpZ2h0X3NlZW4gPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobWF4X2hlaWdodF9zZWVuIDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KSkpXG4gICAgICB+bm9kZXNfYnlfaGVpZ2h0OihjaGVjayBOb2Rlc19ieV9oZWlnaHQuaW52YXJpYW50KSlcbjs7XG5cbmxldCBjcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIHsgbGVuZ3RoID0gMFxuICA7IGhlaWdodF9sb3dlcl9ib3VuZCA9IG1heF9oZWlnaHRfYWxsb3dlZCArIDFcbiAgOyBtYXhfaGVpZ2h0X3NlZW4gPSAwXG4gIDsgbm9kZXNfYnlfaGVpZ2h0ID0gTm9kZXNfYnlfaGVpZ2h0LmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkXG4gIH1cbjs7XG5cbmxldCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQgbWF4X2hlaWdodF9hbGxvd2VkID1cbiAgaWYgbWF4X2hlaWdodF9hbGxvd2VkIDwgdC5tYXhfaGVpZ2h0X3NlZW5cbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJjYW5ub3Qgc2V0X21heF9oZWlnaHRfYWxsb3dlZCBsZXNzIHRoYW4gdGhlIG1heCBoZWlnaHQgYWxyZWFkeSBzZWVuXCJcbiAgICAgIChtYXhfaGVpZ2h0X2FsbG93ZWQsIGBtYXhfaGVpZ2h0X3NlZW4gdC5tYXhfaGVpZ2h0X3NlZW4pXG4gICAgICBbJXNleHBfb2Y6IGludCAqIFsgYG1heF9oZWlnaHRfc2VlbiBvZiBpbnQgXV07XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChpc19lbXB0eSB0KTtcbiAgdC5ub2Rlc19ieV9oZWlnaHQgPC0gTm9kZXNfYnlfaGVpZ2h0LmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkXG47O1xuXG5sZXQgYWRkX3VubGVzc19tZW0gKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGlmIG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSAtMVxuICB0aGVuIChcbiAgICBsZXQgaGVpZ2h0ID0gbm9kZS5oZWlnaHQgaW5cbiAgICAoKiBXZSBwcm9jZXNzIG5vZGVzIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgcHJlLWFkanVzdGVkIGhlaWdodCwgc28gaXQgaXMgYSBidWcgaWYgd2VcbiAgICAgICBldmVyIHRyeSB0byBhZGQgYSBub2RlIHRoYXQgd291bGQgdmlvbGF0ZSB0aGF0LiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChoZWlnaHQgPj0gdC5oZWlnaHRfbG93ZXJfYm91bmQpO1xuICAgICgqIFdoZW5ldmVyIHdlIHNldCBhIG5vZGUncyBoZWlnaHQsIHdlIHVzZSBbc2V0X2hlaWdodF0sIHdoaWNoIGVuZm9yY2VzIHRoaXMuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gICAgbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSBoZWlnaHQ7XG4gICAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxO1xuICAgIG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodDtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0IChVb3B0LnNvbWUgKE5vZGUuUGFja2VkLlQgbm9kZSkpKVxuOztcblxubGV0IHJlbW92ZV9taW5fZXhuIHQgOiBOb2RlLlBhY2tlZC50ID1cbiAgaWYgZGVidWcgJiYgaXNfZW1wdHkgdFxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJBZGp1c3RfaGVpZ2h0c19oZWFwLnJlbW92ZV9taW4gb2YgZW1wdHkgaGVhcFwiIHQgWyVzZXhwX29mOiB0XTtcbiAgbGV0IHIgPSByZWYgdC5oZWlnaHRfbG93ZXJfYm91bmQgaW5cbiAgd2hpbGUgVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCAhcikgZG9cbiAgICBpbmNyIHJcbiAgZG9uZTtcbiAgbGV0IGhlaWdodCA9ICFyIGluXG4gIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIGhlaWdodDtcbiAgbGV0IChUIG5vZGUpID0gVW9wdC51bnNhZmVfdmFsdWUgKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQpIGluXG4gIG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gLTE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCBub2RlLm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcDtcbiAgbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gVW9wdC5ub25lO1xuICBUIG5vZGVcbjs7XG5cbmxldCBzZXRfaGVpZ2h0IHQgKG5vZGUgOiBfIE5vZGUudCkgaGVpZ2h0ID1cbiAgaWYgaGVpZ2h0ID4gdC5tYXhfaGVpZ2h0X3NlZW5cbiAgdGhlbiAoXG4gICAgdC5tYXhfaGVpZ2h0X3NlZW4gPC0gaGVpZ2h0O1xuICAgIGlmIGhlaWdodCA+IG1heF9oZWlnaHRfYWxsb3dlZCB0XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJub2RlIHdpdGggdG9vIGxhcmdlIGhlaWdodFwiXG4gICAgICAgIChgSGVpZ2h0IGhlaWdodCwgYE1heCAobWF4X2hlaWdodF9hbGxvd2VkIHQpKVxuICAgICAgICBbJXNleHBfb2Y6IFsgYEhlaWdodCBvZiBpbnQgXSAqIFsgYE1heCBvZiBpbnQgXV0pO1xuICBub2RlLmhlaWdodCA8LSBoZWlnaHRcbjs7XG5cbmxldCBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50IHQgfm9yaWdpbmFsX2NoaWxkIH5vcmlnaW5hbF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgY2hpbGQpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgaWYgTm9kZS5zYW1lIHBhcmVudCBvcmlnaW5hbF9jaGlsZFxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImFkZGluZyBlZGdlIG1hZGUgZ3JhcGggY3ljbGljXCJcbiAgICAgIChgY2hpbGQgb3JpZ2luYWxfY2hpbGQsIGBwYXJlbnQgb3JpZ2luYWxfcGFyZW50KVxuICAgICAgWyVzZXhwX29mOiBbIGBjaGlsZCBvZiBfIE5vZGUudCBdICogWyBgcGFyZW50IG9mIF8gTm9kZS50IF1dO1xuICBpZiBjaGlsZC5oZWlnaHQgPj0gcGFyZW50LmhlaWdodFxuICB0aGVuIChcbiAgICBhZGRfdW5sZXNzX21lbSB0IHBhcmVudDtcbiAgICAoKiBXZSBzZXQgW3BhcmVudC5oZWlnaHRdIGFmdGVyIGFkZGluZyBbcGFyZW50XSB0byB0aGUgaGVhcCwgc28gdGhhdCBbcGFyZW50XSBnb2VzXG4gICAgICAgaW4gdGhlIGhlYXAgd2l0aCBpdHMgcHJlLWFkanVzdGVkIGhlaWdodC4gKilcbiAgICBzZXRfaGVpZ2h0IHQgcGFyZW50IChjaGlsZC5oZWlnaHQgKyAxKSlcbjs7XG5cbmxldCBhZGp1c3RfaGVpZ2h0c1xuICAgICAgKHR5cGUgYSBiKVxuICAgICAgdFxuICAgICAgcmVjb21wdXRlX2hlYXBcbiAgICAgIH5jaGlsZDoob3JpZ2luYWxfY2hpbGQgOiBhIE5vZGUudClcbiAgICAgIH5wYXJlbnQ6KG9yaWdpbmFsX3BhcmVudCA6IGIgTm9kZS50KVxuICA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChpc19lbXB0eSB0KTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG9yaWdpbmFsX2NoaWxkLmhlaWdodCA+PSBvcmlnaW5hbF9wYXJlbnQuaGVpZ2h0KTtcbiAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gb3JpZ2luYWxfcGFyZW50LmhlaWdodDtcbiAgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudFxuICAgIHRcbiAgICB+b3JpZ2luYWxfY2hpbGRcbiAgICB+b3JpZ2luYWxfcGFyZW50XG4gICAgfmNoaWxkOm9yaWdpbmFsX2NoaWxkXG4gICAgfnBhcmVudDpvcmlnaW5hbF9wYXJlbnQ7XG4gIHdoaWxlIGxlbmd0aCB0ID4gMCBkb1xuICAgIGxldCAoVCBjaGlsZCkgPSByZW1vdmVfbWluX2V4biB0IGluXG4gICAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBjaGlsZFxuICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuaW5jcmVhc2VfaGVpZ2h0IHJlY29tcHV0ZV9oZWFwIGNoaWxkO1xuICAgIGlmIGNoaWxkLm51bV9wYXJlbnRzID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IChUIHBhcmVudCkgPSBVb3B0LnZhbHVlX2V4biBjaGlsZC5wYXJlbnQwIGluXG4gICAgICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50IHQgfm9yaWdpbmFsX2NoaWxkIH5vcmlnaW5hbF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQ7XG4gICAgICBmb3IgcGFyZW50X2luZGV4ID0gMSB0byBjaGlsZC5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgICAgbGV0IChUIHBhcmVudCkgPVxuICAgICAgICAgIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZC5wYXJlbnQxX2FuZF9iZXlvbmQgKHBhcmVudF9pbmRleCAtIDEpKVxuICAgICAgICBpblxuICAgICAgICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50IHQgfm9yaWdpbmFsX2NoaWxkIH5vcmlnaW5hbF9wYXJlbnQgfmNoaWxkIH5wYXJlbnRcbiAgICAgIGRvbmUpO1xuICAgIG1hdGNoIGNoaWxkLmtpbmQgd2l0aFxuICAgIHwgQmluZF9saHNfY2hhbmdlIHsgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzOyBfIH0gLT5cbiAgICAgIGxldCByID0gcmVmIGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyBpblxuICAgICAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgICAgIGxldCAoVCBub2RlX29uX3JocykgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgICAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlX29uX3Joc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudFxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgfm9yaWdpbmFsX2NoaWxkXG4gICAgICAgICAgICB+b3JpZ2luYWxfcGFyZW50XG4gICAgICAgICAgICB+Y2hpbGRcbiAgICAgICAgICAgIH5wYXJlbnQ6bm9kZV9vbl9yaHNcbiAgICAgIGRvbmVcbiAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGlzX2VtcHR5IHQpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAob3JpZ2luYWxfY2hpbGQuaGVpZ2h0IDwgb3JpZ2luYWxfcGFyZW50LmhlaWdodClcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQWN0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLkFsYXJtX3ZhbHVlLkFjdGlvbi50ID1cbiAgICB8IEF0IG9mIEF0LnRcbiAgICB8IEF0X2ludGVydmFscyBvZiBBdF9pbnRlcnZhbHMudFxuICAgIHwgU25hcHNob3QgOiBfIFNuYXBzaG90LnQgLT4gdFxuICAgIHwgU3RlcF9mdW5jdGlvbiA6IF8gU3RlcF9mdW5jdGlvbl9ub2RlLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBmdW5jdGlvblxuICAgIHwgQXQgYXQgLT4gQXQuaW52YXJpYW50IGF0XG4gICAgfCBBdF9pbnRlcnZhbHMgYXRfaW50ZXJ2YWxzIC0+IEF0X2ludGVydmFscy5pbnZhcmlhbnQgYXRfaW50ZXJ2YWxzXG4gICAgfCBTbmFwc2hvdCBzbmFwc2hvdCAtPiBTbmFwc2hvdC5pbnZhcmlhbnQgaWdub3JlIHNuYXBzaG90XG4gICAgfCBTdGVwX2Z1bmN0aW9uIHN0ZXBfZnVuY3Rpb25fbm9kZSAtPlxuICAgICAgU3RlcF9mdW5jdGlvbl9ub2RlLmludmFyaWFudCBpZ25vcmUgc3RlcF9mdW5jdGlvbl9ub2RlXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gVHlwZXMuQWxhcm1fdmFsdWUudCA9XG4gIHsgYWN0aW9uIDogQWN0aW9uLnRcbiAgOyAoKiBbbmV4dF9maXJlZF0gc2luZ2x5IGxpbmtzIGFsbCBhbGFybSB2YWx1ZXMgdGhhdCBmaXJlIGR1cmluZyBhIHNpbmdsZSBjYWxsIHRvXG4gICAgICAgW2FkdmFuY2VfY2xvY2tdLiAqKVxuICAgIG11dGFibGUgbmV4dF9maXJlZCA6ICh0IFVvcHQudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyIH5hY3Rpb246KGNoZWNrIEFjdGlvbi5pbnZhcmlhbnQpIH5uZXh0X2ZpcmVkOmlnbm9yZSlcbjs7XG5cbmxldCBjcmVhdGUgYWN0aW9uID0geyBhY3Rpb247IG5leHRfZmlyZWQgPSBVb3B0Lm5vbmUgfVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbmZpZ19pbnRmXG5cbm1vZHVsZSBEZWZhdWx0ICgpID0gc3RydWN0XG4gIGxldCBiaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzID0gdHJ1ZVxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlclxuXG5tb2R1bGUgUGFja2VkXyA9IHN0cnVjdFxuICBpbmNsdWRlIFR5cGVzLkludGVybmFsX29ic2VydmVyLlBhY2tlZFxuXG4gIGxldCBzZXhwX29mX3QgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID1cbiAgICBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgfD4gWyVzZXhwX29mOiBfIFR5cGVzLk5vZGUudF1cbiAgOztcblxuICBsZXQgcHJldl9pbl9hbGwgKFQgdCkgPSB0LnByZXZfaW5fYWxsXG4gIGxldCBuZXh0X2luX2FsbCAoVCB0KSA9IHQubmV4dF9pbl9hbGxcbiAgbGV0IHNldF9wcmV2X2luX2FsbCAoVCB0MSkgdDIgPSB0MS5wcmV2X2luX2FsbCA8LSB0MlxuICBsZXQgc2V0X25leHRfaW5fYWxsIChUIHQxKSB0MiA9IHQxLm5leHRfaW5fYWxsIDwtIHQyXG5lbmRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLkludGVybmFsX29ic2VydmVyLlN0YXRlLnQgPVxuICAgIHwgQ3JlYXRlZFxuICAgIHwgSW5fdXNlXG4gICAgfCBEaXNhbGxvd2VkXG4gICAgfCBVbmxpbmtlZFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkludGVybmFsX29ic2VydmVyLnQgPVxuICB7ICgqIFN0YXRlIHRyYW5zaXRpb25zOlxuXG4gICAgICAge3ZcbiAgICAgICAgIENyZWF0ZWQgLS0+IEluX3VzZSAtLT4gRGlzYWxsb3dlZCAtLT4gVW5saW5rZWRcbiAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXG4gICAgICAgICAgIFxcLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS9cbiAgICAgICB2fSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiBTdGF0ZS50XG4gIDsgb2JzZXJ2aW5nIDogJ2EgTm9kZS50XG4gIDsgbXV0YWJsZSBvbl91cGRhdGVfaGFuZGxlcnMgOiAnYSBPbl91cGRhdGVfaGFuZGxlci50IGxpc3RcbiAgOyAoKiBbe3ByZXYsbmV4dH1faW5fYWxsXSBkb3VibHkgbGluayBhbGwgb2JzZXJ2ZXJzIGluIFtzdGF0ZS5hbGxfb2JzZXJ2ZXJzXS4gKilcbiAgICBtdXRhYmxlIHByZXZfaW5fYWxsIDogUGFja2VkXy50IFVvcHQudFxuICA7IG11dGFibGUgbmV4dF9pbl9hbGwgOiBQYWNrZWRfLnQgVW9wdC50XG4gIDsgKCogW3twcmV2LG5leHR9X2luX29ic2VydmluZ10gZG91Ymx5IGxpbmsgYWxsIG9ic2VydmVycyBvZiBbb2JzZXJ2aW5nXS4gKilcbiAgICBtdXRhYmxlIHByZXZfaW5fb2JzZXJ2aW5nIDogKCdhIHRbQHNleHAub3BhcXVlXSkgVW9wdC50XG4gIDsgbXV0YWJsZSBuZXh0X2luX29ic2VydmluZyA6ICgnYSB0W0BzZXhwLm9wYXF1ZV0pIFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbnR5cGUgJ2EgaW50ZXJuYWxfb2JzZXJ2ZXIgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbmNyX3N0YXRlIHQgPSB0Lm9ic2VydmluZy5zdGF0ZVxuXG5sZXQgdXNlX2lzX2FsbG93ZWQgdCA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENyZWF0ZWQgfCBJbl91c2UgLT4gdHJ1ZVxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPiBmYWxzZVxuOztcblxubGV0IHNhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5sZXQgc2FtZV9hc19wYWNrZWQgKHQxIDogXyB0KSAoUGFja2VkXy5UIHQyKSA9IHNhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfnN0YXRlOmlnbm9yZVxuICAgICAgfm9ic2VydmluZzooY2hlY2sgKE5vZGUuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH5vbl91cGRhdGVfaGFuZGxlcnM6XG4gICAgICAgIChjaGVjayAoZnVuIG9uX3VwZGF0ZV9oYW5kbGVycyAtPlxuICAgICAgICAgICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgfCBDcmVhdGVkIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICB8IFVubGlua2VkIC0+IGFzc2VydCAoTGlzdC5pc19lbXB0eSBvbl91cGRhdGVfaGFuZGxlcnMpKSlcbiAgICAgIH5wcmV2X2luX2FsbDpcbiAgICAgICAgKGNoZWNrIChmdW4gcHJldl9pbl9hbGwgLT5cbiAgICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBwcmV2X2luX2FsbCkpO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgcHJldl9pbl9hbGxcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBzYW1lX2FzX3BhY2tlZFxuICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4biAoUGFja2VkXy5uZXh0X2luX2FsbCAoVW9wdC52YWx1ZV9leG4gcHJldl9pbl9hbGwpKSkpKSlcbiAgICAgIH5uZXh0X2luX2FsbDpcbiAgICAgICAgKGNoZWNrIChmdW4gbmV4dF9pbl9hbGwgLT5cbiAgICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X2luX2FsbCkpO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9hbGxcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBzYW1lX2FzX3BhY2tlZFxuICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4biAoUGFja2VkXy5wcmV2X2luX2FsbCAoVW9wdC52YWx1ZV9leG4gbmV4dF9pbl9hbGwpKSkpKSlcbiAgICAgIH5wcmV2X2luX29ic2VydmluZzpcbiAgICAgICAgKGNoZWNrIChmdW4gcHJldl9pbl9vYnNlcnZpbmcgLT5cbiAgICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBwcmV2X2luX29ic2VydmluZykpO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgcHJldl9pbl9vYnNlcnZpbmdcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBwaHlzX2VxdWFsXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChuZXh0X2luX29ic2VydmluZyAoVW9wdC52YWx1ZV9leG4gcHJldl9pbl9vYnNlcnZpbmcpKSkpKSlcbiAgICAgIH5uZXh0X2luX29ic2VydmluZzpcbiAgICAgICAgKGNoZWNrIChmdW4gbmV4dF9pbl9vYnNlcnZpbmcgLT5cbiAgICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X2luX29ic2VydmluZykpO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9vYnNlcnZpbmdcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBwaHlzX2VxdWFsXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChwcmV2X2luX29ic2VydmluZyAoVW9wdC52YWx1ZV9leG4gbmV4dF9pbl9vYnNlcnZpbmcpKSkpKSkpXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDcmVhdGVkIC0+XG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIk9ic2VydmVyLnZhbHVlX2V4biBjYWxsZWQgd2l0aG91dCBzdGFiaWxpemluZ1wiXG4gICAgICB0XG4gICAgICBbJXNleHBfb2Y6IF8gdF1cbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCBhZnRlciBkaXNhbGxvd19mdXR1cmVfdXNlXCJcbiAgICAgIHRcbiAgICAgIFslc2V4cF9vZjogXyB0XVxuICB8IEluX3VzZSAtPlxuICAgIGxldCB1b3B0ID0gdC5vYnNlcnZpbmcudmFsdWVfb3B0IGluXG4gICAgaWYgVW9wdC5pc19ub25lIHVvcHRcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImF0dGVtcHQgdG8gZ2V0IHZhbHVlIG9mIGFuIGludmFsaWQgbm9kZVwiIHQgWyVzZXhwX29mOiBfIHRdO1xuICAgIFVvcHQudW5zYWZlX3ZhbHVlIHVvcHRcbjs7XG5cbmxldCBvbl91cGRhdGVfZXhuIHQgb25fdXBkYXRlX2hhbmRsZXIgPVxuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT5cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIm9uX3VwZGF0ZSBkaXNhbGxvd2VkXCIgdCBbJXNleHBfb2Y6IF8gdF1cbiAgfCBDcmVhdGVkIHwgSW5fdXNlIC0+XG4gICAgdC5vbl91cGRhdGVfaGFuZGxlcnMgPC0gb25fdXBkYXRlX2hhbmRsZXIgOjogdC5vbl91cGRhdGVfaGFuZGxlcnM7XG4gICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgfCBDcmVhdGVkIC0+XG4gICAgICAgKCogV2UnbGwgYnVtcCBbb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnNdIHdoZW4gW3RdIGlzIGFjdHVhbGx5IGFkZGVkIHRvXG4gICAgICAgICAgW29ic2VydmluZy5vYnNlcnZlcnNdIGF0IHRoZSBzdGFydCBvZiB0aGUgbmV4dCBzdGFiaWxpemF0aW9uLiAqKVxuICAgICAgICgpXG4gICAgIHwgSW5fdXNlIC0+XG4gICAgICAgbGV0IG9ic2VydmluZyA9IHQub2JzZXJ2aW5nIGluXG4gICAgICAgb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPC0gb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgKyAxKVxuOztcblxubGV0IHVubGlua19mcm9tX29ic2VydmluZyB0ID1cbiAgbGV0IHByZXYgPSB0LnByZXZfaW5fb2JzZXJ2aW5nIGluXG4gIGxldCBuZXh0ID0gdC5uZXh0X2luX29ic2VydmluZyBpblxuICB0LnByZXZfaW5fb2JzZXJ2aW5nIDwtIFVvcHQubm9uZTtcbiAgdC5uZXh0X2luX29ic2VydmluZyA8LSBVb3B0Lm5vbmU7XG4gIGlmIFVvcHQuaXNfc29tZSBuZXh0IHRoZW4gKFVvcHQudW5zYWZlX3ZhbHVlIG5leHQpLnByZXZfaW5fb2JzZXJ2aW5nIDwtIHByZXY7XG4gIGlmIFVvcHQuaXNfc29tZSBwcmV2IHRoZW4gKFVvcHQudW5zYWZlX3ZhbHVlIHByZXYpLm5leHRfaW5fb2JzZXJ2aW5nIDwtIG5leHQ7XG4gIGxldCBvYnNlcnZpbmcgPSB0Lm9ic2VydmluZyBpblxuICBpZiBwaHlzX2VxdWFsIHQgKFVvcHQudmFsdWVfZXhuIG9ic2VydmluZy5vYnNlcnZlcnMpIHRoZW4gb2JzZXJ2aW5nLm9ic2VydmVycyA8LSBuZXh0O1xuICBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc1xuICA8LSBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVycyAtIExpc3QubGVuZ3RoIHQub25fdXBkYXRlX2hhbmRsZXJzO1xuICB0Lm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBbXVxuOztcblxubGV0IHVubGlua19mcm9tX2FsbCB0ID1cbiAgbGV0IHByZXYgPSB0LnByZXZfaW5fYWxsIGluXG4gIGxldCBuZXh0ID0gdC5uZXh0X2luX2FsbCBpblxuICB0LnByZXZfaW5fYWxsIDwtIFVvcHQubm9uZTtcbiAgdC5uZXh0X2luX2FsbCA8LSBVb3B0Lm5vbmU7XG4gIGlmIFVvcHQuaXNfc29tZSBuZXh0IHRoZW4gUGFja2VkXy5zZXRfcHJldl9pbl9hbGwgKFVvcHQudW5zYWZlX3ZhbHVlIG5leHQpIHByZXY7XG4gIGlmIFVvcHQuaXNfc29tZSBwcmV2IHRoZW4gUGFja2VkXy5zZXRfbmV4dF9pbl9hbGwgKFVvcHQudW5zYWZlX3ZhbHVlIHByZXYpIG5leHRcbjs7XG5cbmxldCB1bmxpbmsgdCA9XG4gIHVubGlua19mcm9tX29ic2VydmluZyB0O1xuICB1bmxpbmtfZnJvbV9hbGwgdFxuOztcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICBpbmNsdWRlIFBhY2tlZF9cblxuICBsZXQgc2V4cF9vZl90IChUIGludGVybmFsX29ic2VydmVyKSA9XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIgfD4gWyVzZXhwX29mOiBfIGludGVybmFsX29ic2VydmVyXVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgKFQgdCkgPSBpbnZhcmlhbnQgaWdub3JlIHRcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgSW50ZXJuYWxfb2JzZXJ2ZXIudCByZWYgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIuaW52YXJpYW50IGludmFyaWFudF9hICF0XG5sZXQgb2JzZXJ2aW5nIHQgPSBJbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgIXRcbmxldCB1c2VfaXNfYWxsb3dlZCB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIudXNlX2lzX2FsbG93ZWQgIXRcbmxldCB2YWx1ZV9leG4gdCA9IEludGVybmFsX29ic2VydmVyLnZhbHVlX2V4biAhdFxubGV0IGluY3Jfc3RhdGUgdCA9IEludGVybmFsX29ic2VydmVyLmluY3Jfc3RhdGUgIXRcblxubGV0IG9uX3VwZGF0ZV9leG4gdCBvbl91cGRhdGVfaGFuZGxlciA9XG4gIEludGVybmFsX29ic2VydmVyLm9uX3VwZGF0ZV9leG4gIXQgb25fdXBkYXRlX2hhbmRsZXJcbjs7XG4iLCIoKiBbU3RhdGVdIGRlZmluZXMgdGhlIGdsb2JhbCBzdGF0ZSBvZiB3aGljaCB0aGVyZSBpcyBvbmUgaW5zdGFuY2UgZm9yIGVhY2ggY2FsbCB0b1xuICAgW0luY3JlbWVudGFsLk1ha2VdLlxuXG4gICBUaGlzIG1vZHVsZSBkb2VzIG5vdCBoYXZlIGFuIG1saSBiZWNhdXNlIGl0IHdvdWxkIGVzc2VudGlhbGx5IGR1cGxpY2F0ZVxuICAgW0luY3JlbWVudGFsLlNdLCBleGNlcHQgYWRkaW5nIGFuIGV4dHJhIFtTdGF0ZS50XSBhcmd1bWVudCB0byBmdW5jdGlvbnMuICopXG5cbm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxuXG50eXBlIHN0YXR1cyA9IFR5cGVzLlN0YXR1cy50ID1cbiAgfCBTdGFiaWxpemluZ1xuICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzXG4gIHwgTm90X3N0YWJpbGl6aW5nXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIG9mIFJhaXNlZF9leG4udFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIE5vZGVfdXBkYXRlID0gT25fdXBkYXRlX2hhbmRsZXIuTm9kZV91cGRhdGVcblxubW9kdWxlIFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuUnVuX29uX3VwZGF0ZV9oYW5kbGVycy50ID0gVCA6ICdhIE5vZGUudCAqICdhIE5vZGVfdXBkYXRlLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgKFQgKG5vZGUsIF9ub2RlX3VwZGF0ZSkgYXMgdCkgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPiBOb2RlLmludmFyaWFudCBpZ25vcmUgbm9kZSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgT25seV9pbl9kZWJ1ZyA9IHN0cnVjdFxuICAoKiBFeHRyYSBzdGF0ZSBrZXB0IG9ubHkgd2hlbiBbZGVidWddIGZvciB0aGUgcHVycG9zZSBvZiB3cml0aW5nIGFzc2VydGlvbnMuICopXG4gIHR5cGUgdCA9IFR5cGVzLk9ubHlfaW5fZGVidWcudCA9XG4gICAgeyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX25vZGUgOiBOb2RlLlBhY2tlZC50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgOiBOb2RlLlBhY2tlZC50IGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmN1cnJlbnRseV9ydW5uaW5nX25vZGU6aWdub3JlXG4gICAgICAgIH5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGU6aWdub3JlKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgKCkgPVxuICAgIHsgY3VycmVudGx5X3J1bm5pbmdfbm9kZSA9IE5vbmU7IGV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA9IFtdIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgUGFja2VkX3dlYWtfaGFzaHRibCA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5QYWNrZWRfd2Vha19oYXNodGJsLnQgPSBUIDogKF8sIF8pIFdlYWtfaGFzaHRibC50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5TdGF0ZS50ID1cbiAgeyBtdXRhYmxlIHN0YXR1cyA6IHN0YXR1c1xuICA7IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgOiBib29sXG4gIDsgKCogW3N0YWJpbGl6YXRpb25fbnVtXSBzdGFydHMgYXQgemVybywgYW5kIGlzIGluY3JlbWVudGVkIGF0IHRoZSBlbmQgb2YgZWFjaFxuICAgICAgIHN0YWJpbGl6YXRpb24uICopXG4gICAgbXV0YWJsZSBzdGFiaWxpemF0aW9uX251bSA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyBtdXRhYmxlIGN1cnJlbnRfc2NvcGUgOiBTY29wZS50XG4gIDsgcmVjb21wdXRlX2hlYXAgOiBSZWNvbXB1dGVfaGVhcC50XG4gIDsgYWRqdXN0X2hlaWdodHNfaGVhcCA6IEFkanVzdF9oZWlnaHRzX2hlYXAudFxuICA7ICgqIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0gaG9sZHMgbm9kZXMgdGhhdCBoYXZlIGludmFsaWQgY2hpbGRyZW4gdGhhdCBzaG91bGQgYmVcbiAgICAgICBjb25zaWRlcmVkIGZvciBpbnZhbGlkYXRpb24uICBJdCBpcyBvbmx5IHVzZWQgZHVyaW5nIGdyYXBoIHJlc3RydWN0dXJpbmc6XG4gICAgICAgW2ludmFsaWRhdGVfbm9kZV0gYW5kIFthZGRfcGFyZW50XS4gIE9uY2UgYW4gZWxlbWVudCBpcyBhZGRlZCB0byB0aGUgc3RhY2ssIHdlIHRoZW5cbiAgICAgICBpdGVyYXRlIHVudGlsIGludmFsaWRpdHkgaGFzIHByb3BhZ2F0ZWQgdG8gYWxsIGFuY2VzdG9ycyBhcyBuZWNlc3NhcnksIGFjY29yZGluZyB0b1xuICAgICAgIFtOb2RlLnNob3VsZF9iZV9pbnZhbGlkYXRlZF0uICopXG4gICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgOyAoKiBbbnVtX2FjdGl2ZV9vYnNlcnZlcnNdIGlzIHRoZSBudW1iZXIgb2Ygb2JzZXJ2ZXJzIHdob3NlIHN0YXRlIGlzIFtDcmVhdGVkXSBvclxuICAgICAgIFtJbl91c2VdLiAqKVxuICAgIG11dGFibGUgbnVtX2FjdGl2ZV9vYnNlcnZlcnMgOiBpbnRcbiAgOyAoKiBbYWxsX29ic2VydmVyc10gaXMgdGhlIGRvdWJseS1saW5rZWQgbGlzdCBvZiBhbGwgb2JzZXJ2ZXJzIGluIGVmZmVjdCwgb3IgdGhhdCBoYXZlXG4gICAgICAgYmVlbiBkaXNhbGxvd2VkIHNpbmNlIHRoZSBtb3N0IHJlY2VudCBzdGFydCBvZiBhIHN0YWJpbGl6YXRpb24gLS0gdGhlc2UgaGF2ZVxuICAgICAgIFtzdGF0ZV0gYXMgW0luX3VzZV0gb3IgW0Rpc2FsbG93ZWRdLiAqKVxuICAgIG11dGFibGUgYWxsX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFVvcHQudFxuICA7ICgqIFdlIGVucXVldWUgZmluYWxpemVkIG9ic2VydmVycyBpbiBhIHRocmVhZC1zYWZlIHF1ZXVlLCBmb3IgaGFuZGxpbmcgZHVyaW5nXG4gICAgICAgc3RhYmlsaXphdGlvbi4gIFdlIHVzZSBhIHRocmVhZC1zYWZlIHF1ZXVlIGJlY2F1c2UgT0NhbWwgZmluYWxpemVycyBjYW4gcnVuIGluIGFueVxuICAgICAgIHRocmVhZC4gKilcbiAgICBmaW5hbGl6ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICA7ICgqIFtuZXdfb2JzZXJ2ZXJzXSBob2xkcyBvYnNlcnZlcnMgY3JlYXRlZCBzaW5jZSB0aGUgbW9zdCByZWNlbnQgc3RhcnQgb2YgYVxuICAgICAgIHN0YWJpbGl6YXRpb24gLS0gdGhlc2UgaGF2ZSBbc3RhdGVdIGFzIFtDcmVhdGVkXSBvciBbVW5saW5rZWRdLiAgQXQgdGhlIHN0YXJ0IG9mXG4gICAgICAgc3RhYmlsaXphdGlvbiwgd2UgbGluayBpbnRvIFthbGxfb2JzZXJ2ZXJzXSBhbGwgb2JzZXJ2ZXJzIGluIFtuZXdfb2JzZXJ2ZXJzXSB3aG9zZVxuICAgICAgIHN0YXRlIGlzIFtDcmVhdGVkXSBhbmQgYWRkIHRoZW0gdG8gdGhlIFtvYnNlcnZlcnNdIG9mIHRoZSBub2RlIHRoZXkgYXJlIG9ic2VydmluZy5cbiAgICAgICBXZSBzdHJ1Y3R1cmUgdGhpbmdzIHRoaXMgd2F5IHRvIGFsbG93IG9ic2VydmVycyB0byBiZSBjcmVhdGVkIGR1cmluZyBzdGFiaWxpemF0aW9uXG4gICAgICAgd2hpbGUgcnVubmluZyB1c2VyIGNvZGUgKFttYXBdLCBbYmluZF0sIGV0YyksIGJ1dCB0byBub3QgaGF2ZSB0byBkZWFsIHdpdGggbm9kZXNcbiAgICAgICBiZWNvbWluZyBuZWNlc3NhcnkgYW5kIHRoZSB0aGUgZ3JhcGggY2hhbmdpbmcgZHVyaW5nIHN1Y2ggY29kZS4gKilcbiAgICBuZXdfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFtkaXNhbGxvd2VkX29ic2VydmVyc10gaG9sZHMgYWxsIG9ic2VydmVycyB0aGF0IGhhdmUgYmVlbiBkaXNhbGxvd2VkIHNpbmNlIHRoZSBtb3N0XG4gICAgICAgcmVjZW50IHN0YXJ0IG9mIGEgc3RhYmlsaXphdGlvbiAtLSB0aGVzZSBoYXZlIFtzdGF0ZSA9IERpc2FsbG93ZWRdLiAgQXQgdGhlIHN0YXJ0XG4gICAgICAgb2Ygc3RhYmlsaXphdGlvbiwgdGhlc2UgYXJlIHVubGlua2VkIGZyb20gW2FsbF9vYnNlcnZlcnNdIGFuZCB0aGVpciBzdGF0ZSBpc1xuICAgICAgIGNoYW5nZWQgdG8gW1VubGlua2VkXS4gIFdlIHN0cnVjdHVyZSB0aGluZ3MgdGhpcyB3YXkgdG8gYWxsb3cgdXNlciBjb2RlIHJ1bm5pbmdcbiAgICAgICBkdXJpbmcgc3RhYmlsaXphdGlvbiB0byBjYWxsIFtkaXNhbGxvd19mdXR1cmVfdXNlXSwgYnV0IHRvIG5vdCBoYXZlIHRvIGRlYWwgd2l0aFxuICAgICAgIG5vZGVzIGJlY29taW5nIHVubmVjZXNzYXJ5IGFuZCB0aGUgZ3JhcGggY2hhbmdpbmcgZHVyaW5nIHN1Y2ggY29kZS4gKilcbiAgICBkaXNhbGxvd2VkX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFN0YWNrLnRcbiAgOyAoKiBXZSBkZWxheSBhbGwgW1Zhci5zZXRdIGNhbGxzIHRoYXQgaGFwcGVuIGR1cmluZyBzdGFiaWxpemF0aW9uIHNvIHRoYXQgdGhleSB0YWtlXG4gICAgICAgZWZmZWN0IGFmdGVyIHN0YWJpbGl6YXRpb24uICBBbGwgdmFyaWFibGVzIHNldCBkdXJpbmcgc3RhYmlsaXphdGlvbiBhcmUgcHVzaGVkIG9uXG4gICAgICAgW3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbl0gcmF0aGVyIHRoYW4gc2V0dGluZyB0aGVtLiAgVGhlbiwgYWZ0ZXIgdGhlIGdyYXBoIGhhc1xuICAgICAgIHN0YWJpbGl6ZWQsIHdlIGRvIGFsbCB0aGUgc2V0cywgc28gdGhhdCB0aGV5IHRha2UgZWZmZWN0IGF0IHRoZSBzdGFydCBvZiB0aGUgbmV4dFxuICAgICAgIHN0YWJpbGl6YXRpb24uICopXG4gICAgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDogVmFyLlBhY2tlZC50IFN0YWNrLnRcbiAgOyAoKiBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dIGhhcyBhbGwgbm9kZXMgd2l0aCBoYW5kbGVycyB0byBjb25zaWRlciBydW5uaW5nIGF0IHRoZVxuICAgICAgIGVuZCBvZiB0aGUgbmV4dCBzdGFiaWxpemF0aW9uLiAgQXQgdGhlIGVuZCBvZiBzdGFiaWxpemF0aW9uLCB3ZSBjb25zaWRlciBlYWNoIG5vZGVcbiAgICAgICBpbiBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLCBhbmQgaWYgd2UgZGVjaWRlIHRvIHJ1biBpdHMgb24tdXBkYXRlIGhhbmRsZXJzLFxuICAgICAgIHB1c2ggaXQgb24gW3J1bl9vbl91cGRhdGVfaGFuZGxlcnNdLiAgVGhlbiwgb25jZSB3ZSd2ZSBjb25zaWRlcmVkIGFsbCBub2RlcyBpblxuICAgICAgIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0sIHdlIGl0ZXJhdGUgdGhyb3VnaCBbcnVuX29uX3VwZGF0ZV9oYW5kbGVyc10gYW5kXG4gICAgICAgYWN0dWFsbHkgcnVuIHRoZSBoYW5kbGVycy5cblxuICAgICAgIFRoZXNlIHR3byBwYXNzZXMgYXJlIGVzc2VudGlhbCBmb3IgY29ycmVjdG5lc3MuICBEdXJpbmcgdGhlIGZpcnN0IHBhc3MsIHdlIGhhdmVuJ3RcbiAgICAgICBydW4gYW55IHVzZXIgaGFuZGxlcnMsIHNvIHdlIGtub3cgdGhhdCB0aGUgc3RhdGUgaXMgZXhhY3RseSBhcyBpdCB3YXMgd2hlblxuICAgICAgIHN0YWJpbGl6YXRpb24gZmluaXNoZWQuICBJbiBwYXJ0aWN1bGFyLCB3ZSBrbm93IHRoYXQgaWYgYSBub2RlIGlzIG5lY2Vzc2FyeSwgdGhlblxuICAgICAgIGl0IGhhcyBhIHN0YWJsZSB2YWx1ZTsgb25jZSB1c2VyIGhhbmRsZXJzIHJ1biwgd2UgZG9uJ3Qga25vdyB0aGlzLiAgRHVyaW5nIHRoZVxuICAgICAgIHNlY29uZCBwYXNzLCB1c2VyIGhhbmRsZXJzIGNhbiBtYWtlIGNhbGxzIHRvIGFueSBpbmNyZW1lbnRhbCBmdW5jdGlvbiBleGNlcHQgZm9yXG4gICAgICAgW3N0YWJpbGl6ZV0uICBJbiBwYXJ0aWN1bGFyLCBzb21lIGZ1bmN0aW9ucyBwdXNoIG5vZGVzIG9uXG4gICAgICAgW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXS4gIEJ1dCBubyBmdW5jdGlvbnMgKGV4Y2VwdCBmb3IgW3N0YWJpbGl6ZV0pIG1vZGlmeVxuICAgICAgIFtydW5fb25fdXBkYXRlX2hhbmRsZXJzXS4gKilcbiAgICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICA7IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgOiBSdW5fb25fdXBkYXRlX2hhbmRsZXJzLnQgU3RhY2sudFxuICA7IG11dGFibGUgb25seV9pbl9kZWJ1ZyA6IE9ubHlfaW5fZGVidWcudFxuICA7IHdlYWtfaGFzaHRibHMgOiBQYWNrZWRfd2Vha19oYXNodGJsLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICA7IG11dGFibGUga2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSA6IGJvb2xcbiAgOyAoKiBTdGF0cy4gIFRoZXNlIGFyZSBhbGwgaW5jcmVtZW50ZWQgYXQgdGhlIGFwcHJvcHJpYXRlIHBsYWNlLCBhbmQgbmV2ZXIgZGVjcmVtZW50ZWQuICopXG4gICAgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2NoYW5nZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19jcmVhdGVkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfaW52YWxpZGF0ZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0IDogaW50XG4gIDsgbXV0YWJsZSBudW1fdmFyX3NldHMgOiBpbnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5tb2R1bGUgQ2xvY2sgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuQ2xvY2sudCA9XG4gICAgeyAoKiBXZSB1c2UgW3RpbWluZ193aGVlbF0gZm9yIHRpbWUtYmFzZWQgaW5jcmVtZW50YWxzLiAgW25vd10gaXMgYSB2YXJpYWJsZSBob2xkaW5nXG4gICAgICAgICB0aGUgY3VycmVudCB0aW1lLiAgW2hhbmRsZV9maXJlZF0gaXMgdGhlIGNsb3N1cmUgcGFzc2VkIHRvXG4gICAgICAgICBbVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2tdLiAgSXQgbGlua3MgYWxsIHRoZSBmaXJlZCBhbGFybSB2YWx1ZXMgaW50b1xuICAgICAgICAgW2ZpcmVkX2FsYXJtX3ZhbHVlc10uICBBZnRlciBbVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2tdIHJldHVybnMsIGl0IHRoZW5cbiAgICAgICAgIHdhbGtzIHRocm91Z2ggdGhlIGxpbmtlZCBsaXN0IGFuZCBhY3R1YWxseSBmaXJlcyB0aGVtLiAgVGhpcyB0d28tcGFzcyBhcHByb2FjaCBpc1xuICAgICAgICAgbmVjZXNzYXJ5IGJlY2F1c2Ugb25lIGlzIG5vdCBhbGxvd2VkIHRvIGNhbGwgW1RpbWluZ193aGVlbF0gZnVuY3Rpb25zIGZyb20gdGhlXG4gICAgICAgICBbaGFuZGxlX2ZpcmVkXSB0aGF0IG9uZSBwYXNzZXMgdG8gW1RpbWluZ193aGVlbC5hZHZhbmNlX2Nsb2NrXS4gKilcbiAgICAgIHRpbWluZ193aGVlbCA6IEFsYXJtX3ZhbHVlLnQgVGltaW5nX3doZWVsLnRcbiAgICA7IG5vdyA6IFRpbWVfbnMudCBWYXIudFxuICAgIDsgaGFuZGxlX2ZpcmVkIDogQWxhcm0udCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGZpcmVkX2FsYXJtX3ZhbHVlcyA6IEFsYXJtX3ZhbHVlLnQgVW9wdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfm5vdzpcbiAgICAgICAgICAoY2hlY2sgKGZ1biAobm93IDogXyBWYXIudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuZXF1YWwgbm93LnZhbHVlIChUaW1pbmdfd2hlZWwubm93IHQudGltaW5nX3doZWVsKSkpKVxuICAgICAgICB+aGFuZGxlX2ZpcmVkOmlnbm9yZVxuICAgICAgICB+ZmlyZWRfYWxhcm1fdmFsdWVzOlxuICAgICAgICAgIChjaGVjayAoZnVuIGZpcmVkX2FsYXJtX3ZhbHVlcyAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBmaXJlZF9hbGFybV92YWx1ZXMpKSlcbiAgICAgICAgfnRpbWluZ193aGVlbDooY2hlY2sgKFRpbWluZ193aGVlbC5pbnZhcmlhbnQgQWxhcm1fdmFsdWUuaW52YXJpYW50KSkpXG4gIDs7XG5cbiAgbGV0IGluY3Jfc3RhdGUgdCA9IFZhci5pbmNyX3N0YXRlIHQubm93XG5lbmRcblxubGV0IG5vdyAoY2xvY2sgOiBDbG9jay50KSA9IGNsb2NrLm5vdy52YWx1ZVxubGV0IHRpbWluZ193aGVlbF9sZW5ndGggKGNsb2NrIDogQ2xvY2sudCkgPSBUaW1pbmdfd2hlZWwubGVuZ3RoIGNsb2NrLnRpbWluZ193aGVlbFxubGV0IG51bV9zdGFiaWxpemVzIHQgPSBTdGFiaWxpemF0aW9uX251bS50b19pbnQgdC5zdGFiaWxpemF0aW9uX251bVxubGV0IG1heF9oZWlnaHRfYWxsb3dlZCB0ID0gQWRqdXN0X2hlaWdodHNfaGVhcC5tYXhfaGVpZ2h0X2FsbG93ZWQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG5sZXQgbWF4X2hlaWdodF9zZWVuIHQgPSBBZGp1c3RfaGVpZ2h0c19oZWFwLm1heF9oZWlnaHRfc2VlbiB0LmFkanVzdF9oZWlnaHRzX2hlYXBcblxubGV0IGl0ZXJfb2JzZXJ2ZXJzIHQgfmYgPVxuICBsZXQgciA9IHJlZiB0LmFsbF9vYnNlcnZlcnMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IG9ic2VydmVyID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IEludGVybmFsX29ic2VydmVyLlBhY2tlZC5uZXh0X2luX2FsbCBvYnNlcnZlcjtcbiAgICBmIG9ic2VydmVyXG4gIGRvbmVcbjs7XG5cbmxldCBkaXJlY3RseV9vYnNlcnZlZCB0ID1cbiAgbGV0IHIgOiBOb2RlLlBhY2tlZC50IGxpc3QgcmVmID0gcmVmIFtdIGluXG4gIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biAoVCBpbnRlcm5hbF9vYnNlcnZlcikgLT5cbiAgICByIDo9IFQgaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nIDo6ICFyKTtcbiAgIXJcbjs7XG5cbmxldCBzYXZlX2RvdCB0IG91dCA9IE5vZGUuUGFja2VkLnNhdmVfZG90IG91dCAoZGlyZWN0bHlfb2JzZXJ2ZWQgdClcbmxldCBzYXZlX2RvdF90b19maWxlIHQgZmlsZSA9IE5vZGUuUGFja2VkLnNhdmVfZG90X3RvX2ZpbGUgZmlsZSAoZGlyZWN0bHlfb2JzZXJ2ZWQgdClcbmxldCBpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIHQgfmYgPSBOb2RlLlBhY2tlZC5pdGVyX2Rlc2NlbmRhbnRzIChkaXJlY3RseV9vYnNlcnZlZCB0KSB+ZlxuXG5tb2R1bGUgU3RhdHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG1heF9udW1fcGFyZW50cyA6IGludFxuICAgIDsgcGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyZW50cyA6IChpbnQgKiBQZXJjZW50LnQpIGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBdXG5lbmRcblxubGV0IHN0YXRzIHQgPVxuICBsZXQgbWF4X251bV9wYXJlbnRzID0gcmVmICgtMSkgaW5cbiAgbGV0IG51bV9uZWNlc3Nhcnlfbm9kZXMgPSByZWYgMCBpblxuICBpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgIGluY3IgbnVtX25lY2Vzc2FyeV9ub2RlcztcbiAgICBtYXhfbnVtX3BhcmVudHMgOj0gSW50Lm1heCAhbWF4X251bV9wYXJlbnRzIG5vZGUubnVtX3BhcmVudHMpO1xuICBsZXQgbWF4X251bV9wYXJlbnRzID0gIW1heF9udW1fcGFyZW50cyBpblxuICBsZXQgbnVtX25vZGVzX2J5X251bV9wYXJlbnRzID0gQXJyYXkuY3JlYXRlIH5sZW46KG1heF9udW1fcGFyZW50cyArIDEpIDAgaW5cbiAgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICBsZXQgbnVtX3BhcmVudHMgPSBub2RlLm51bV9wYXJlbnRzIGluXG4gICAgbnVtX25vZGVzX2J5X251bV9wYXJlbnRzLihudW1fcGFyZW50cykgPC0gbnVtX25vZGVzX2J5X251bV9wYXJlbnRzLihudW1fcGFyZW50cykgKyAxKTtcbiAgbGV0IHBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhcmVudHMgPVxuICAgIEFycmF5LmZvbGRpIG51bV9ub2Rlc19ieV9udW1fcGFyZW50cyB+aW5pdDpbXSB+ZjooZnVuIGkgYWMgbnVtX25vZGVzIC0+XG4gICAgICBpZiBudW1fbm9kZXMgPSAwXG4gICAgICB0aGVuIGFjXG4gICAgICBlbHNlIChpLCBQZXJjZW50Lm9mX211bHQgKGZsb2F0IG51bV9ub2RlcyAvLiBmbG9hdCAhbnVtX25lY2Vzc2FyeV9ub2RlcykpIDo6IGFjKVxuICAgIHw+IExpc3QucmV2XG4gIGluXG4gIHsgU3RhdHMubWF4X251bV9wYXJlbnRzOyBwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXJlbnRzIH1cbjs7XG5cbmxldCBhbV9zdGFiaWxpemluZyB0ID1cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgU3RhYmlsaXppbmcgLT4gdHJ1ZVxuICB8IE5vdF9zdGFiaWxpemluZyAtPiBmYWxzZVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgUmFpc2VkX2V4bi5yZXJhaXNlX3dpdGhfbWVzc2FnZVxuICAgICAgcmFpc2VkX2V4blxuICAgICAgXCJjYW5ub3QgY2FsbCBhbV9zdGFiaWxpemluZyAtLSBzdGFiaWxpemUgcHJldmlvdXNseSByYWlzZWRcIlxuOztcblxubGV0IGludmFyaWFudCB0ID1cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBfIC0+ICgpXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBTdGFiaWxpemluZyB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBpdGVyX29ic2VydmVycyB0IH5mOihmdW4gKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpIC0+XG4gICAgICAgIChtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+XG4gICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICBcIm1lbWJlciBvZiBhbGxfb2JzZXJ2ZXJzIHdpdGggdW5leHBlY3RlZCBzdGF0ZVwiXG4gICAgICAgICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXJcbiAgICAgICAgICAgICBbJXNleHBfb2Y6IF8gSW50ZXJuYWxfb2JzZXJ2ZXIudF0pO1xuICAgICAgICBJbnRlcm5hbF9vYnNlcnZlci5pbnZhcmlhbnQgaWdub3JlIGludGVybmFsX29ic2VydmVyKTtcbiAgICAgIGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgIE5vZGUuaW52YXJpYW50IGlnbm9yZSBub2RlO1xuICAgICAgICBpZiBub3QgKGFtX3N0YWJpbGl6aW5nIHQpIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbm9kZS5vbGRfdmFsdWVfb3B0KTtcbiAgICAgICAgYXNzZXJ0IChub2RlLmhlaWdodCA8PSBBZGp1c3RfaGVpZ2h0c19oZWFwLm1heF9oZWlnaHRfc2VlbiB0LmFkanVzdF9oZWlnaHRzX2hlYXApKTtcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9hbGxvd2VkIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxuICAgICAgICA9IFJlY29tcHV0ZV9oZWFwLm1heF9oZWlnaHRfYWxsb3dlZCB0LnJlY29tcHV0ZV9oZWFwKTtcbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5zdGF0dXM6aWdub3JlXG4gICAgICAgIH5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzOmlnbm9yZVxuICAgICAgICB+c3RhYmlsaXphdGlvbl9udW06KGNoZWNrIFN0YWJpbGl6YXRpb25fbnVtLmludmFyaWFudClcbiAgICAgICAgfmN1cnJlbnRfc2NvcGU6XG4gICAgICAgICAgKGNoZWNrIChmdW4gY3VycmVudF9zY29wZSAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgY3VycmVudF9zY29wZSBTY29wZS50b3ApKSlcbiAgICAgICAgfnJlY29tcHV0ZV9oZWFwOihjaGVjayBSZWNvbXB1dGVfaGVhcC5pbnZhcmlhbnQpXG4gICAgICAgIH5hZGp1c3RfaGVpZ2h0c19oZWFwOlxuICAgICAgICAgIChjaGVjayAoZnVuIGFkanVzdF9oZWlnaHRzX2hlYXAgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKEFkanVzdF9oZWlnaHRzX2hlYXAubGVuZ3RoIGFkanVzdF9oZWlnaHRzX2hlYXAgPSAwKTtcbiAgICAgICAgICAgICBBZGp1c3RfaGVpZ2h0c19oZWFwLmludmFyaWFudCBhZGp1c3RfaGVpZ2h0c19oZWFwKSlcbiAgICAgICAgfnByb3BhZ2F0ZV9pbnZhbGlkaXR5OlxuICAgICAgICAgIChjaGVjayAoZnVuIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChTdGFjay5pc19lbXB0eSBwcm9wYWdhdGVfaW52YWxpZGl0eSkpKVxuICAgICAgICB+bnVtX2FjdGl2ZV9vYnNlcnZlcnM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbnVtX2FjdGl2ZV9vYnNlcnZlcnMgLT4gYXNzZXJ0IChudW1fYWN0aXZlX29ic2VydmVycyA+PSAwKSkpXG4gICAgICAgIH5hbGxfb2JzZXJ2ZXJzOmlnbm9yZVxuICAgICAgICB+ZmluYWxpemVkX29ic2VydmVyczppZ25vcmVcbiAgICAgICAgfm5ld19vYnNlcnZlcnM6XG4gICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgKFN0YWNrLmludmFyaWFudCAoZnVuIHBhY2tlZCAtPlxuICAgICAgICAgICAgICAgIEludGVybmFsX29ic2VydmVyLlBhY2tlZC5pbnZhcmlhbnQgcGFja2VkO1xuICAgICAgICAgICAgICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICAgICAgICAgICAgICAoKiBXaGVuIGFuIG9ic2VydmVyIGlzIGFkZGVkIHRvIFtuZXdfb2JzZXJ2ZXJzXSwgaXQgaGFzIFtzdGF0ZSA9IENyZWF0ZWRdLlxuICAgICAgICAgICAgICAgICAgIFRoZSBvbmx5IHBvc3NpYmxlIHRyYW5zaXRpb25zIGZyb20gdGhlcmUgYXJlIHRvIFtVbmxpbmtlZF0gb3IgdG9cbiAgICAgICAgICAgICAgICAgICBbSW5fdXNlXSwgd2hpY2ggYWxzbyByZW1vdmVzIGl0IGZyb20gW25ld19vYnNlcnZlcnNdLCBuZXZlciB0byBiZSBhZGRlZFxuICAgICAgICAgICAgICAgICAgIGFnYWluLiAgVGh1cyBpdCBpcyBpbXBvc3NpYmxlIGZvciBhbiBvYnNlcnZlciBpbiBbbmV3X29ic2VydmVyc10gdG8gYmVcbiAgICAgICAgICAgICAgICAgICBbSW5fdXNlXSBvciBbRGlzYWxsb3dlZF0uICopXG4gICAgICAgICAgICAgICAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+IGFzc2VydCBmYWxzZSkpKVxuICAgICAgICB+ZGlzYWxsb3dlZF9vYnNlcnZlcnM6XG4gICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgKFN0YWNrLmludmFyaWFudCAoZnVuIHBhY2tlZCAtPlxuICAgICAgICAgICAgICAgIEludGVybmFsX29ic2VydmVyLlBhY2tlZC5pbnZhcmlhbnQgcGFja2VkO1xuICAgICAgICAgICAgICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBDcmVhdGVkIHwgSW5fdXNlIHwgVW5saW5rZWQgLT4gYXNzZXJ0IGZhbHNlKSkpXG4gICAgICAgIH5zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb246XG4gICAgICAgICAgKGNoZWNrIChmdW4gc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIC0+XG4gICAgICAgICAgICAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICAgICAgICAgICAgIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChTdGFjay5pc19lbXB0eSBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pXG4gICAgICAgICAgICAgfCBTdGFiaWxpemluZyAtPlxuICAgICAgICAgICAgICAgU3RhY2suaW52YXJpYW50XG4gICAgICAgICAgICAgICAgIChmdW4gKFZhci5QYWNrZWQuVCB2YXIpIC0+XG4gICAgICAgICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19zb21lIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pKVxuICAgICAgICAgICAgICAgICBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pKVxuICAgICAgICB+aGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb246KGNoZWNrIChTdGFjay5pbnZhcmlhbnQgTm9kZS5QYWNrZWQuaW52YXJpYW50KSlcbiAgICAgICAgfnJ1bl9vbl91cGRhdGVfaGFuZGxlcnM6KGNoZWNrIChTdGFjay5pbnZhcmlhbnQgUnVuX29uX3VwZGF0ZV9oYW5kbGVycy5pbnZhcmlhbnQpKVxuICAgICAgICB+b25seV9pbl9kZWJ1ZzooY2hlY2sgT25seV9pbl9kZWJ1Zy5pbnZhcmlhbnQpXG4gICAgICAgIH53ZWFrX2hhc2h0YmxzOmlnbm9yZVxuICAgICAgICB+a2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZTppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeTppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19jaGFuZ2VkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2NyZWF0ZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfaW52YWxpZGF0ZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfcmVjb21wdXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0Omlnbm9yZVxuICAgICAgICB+bnVtX3Zhcl9zZXRzOmlnbm9yZSlcbjs7XG5cbmxldCBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWUgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyID1cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IE5vdF9zdGFiaWxpemluZyAtPiAoKVxuICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIC0+XG4gICAgaWYgbm90IGFsbG93X2luX3VwZGF0ZV9oYW5kbGVyXG4gICAgdGhlbiAoXG4gICAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLmdldCAoKSBpblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgKHNwcmludGYgXCJjYW5ub3QgJXMgZHVyaW5nIG9uLXVwZGF0ZSBoYW5kbGVyc1wiIG5hbWUpXG4gICAgICAgIGJhY2t0cmFjZVxuICAgICAgICBbJXNleHBfb2Y6IEJhY2t0cmFjZS50XSlcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIFJhaXNlZF9leG4ucmVyYWlzZV93aXRoX21lc3NhZ2VcbiAgICAgIHJhaXNlZF9leG5cbiAgICAgIChzcHJpbnRmIFwiY2Fubm90ICVzIC0tIHN0YWJpbGl6ZSBwcmV2aW91c2x5IHJhaXNlZFwiIG5hbWUpXG4gIHwgU3RhYmlsaXppbmcgLT5cbiAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLmdldCAoKSBpblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgKHNwcmludGYgXCJjYW5ub3QgJXMgZHVyaW5nIHN0YWJpbGl6YXRpb25cIiBuYW1lKVxuICAgICAgYmFja3RyYWNlXG4gICAgICBbJXNleHBfb2Y6IEJhY2t0cmFjZS50XVxuOztcblxubGV0IHNldF9oZWlnaHQgKG5vZGUgOiBfIE5vZGUudCkgaGVpZ2h0ID1cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIEFkanVzdF9oZWlnaHRzX2hlYXAuc2V0X2hlaWdodCB0LmFkanVzdF9oZWlnaHRzX2hlYXAgbm9kZSBoZWlnaHRcbjs7XG5cbmxldCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQgaGVpZ2h0ID1cbiAgZW5zdXJlX25vdF9zdGFiaWxpemluZyB0IH5uYW1lOlwic2V0X21heF9oZWlnaHRfYWxsb3dlZFwiIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlcjp0cnVlO1xuICBBZGp1c3RfaGVpZ2h0c19oZWFwLnNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwIGhlaWdodDtcbiAgUmVjb21wdXRlX2hlYXAuc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0LnJlY29tcHV0ZV9oZWFwIGhlaWdodFxuOztcblxubGV0IGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgaWYgbm90IG5vZGUuaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25cbiAgdGhlbiAoXG4gICAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gICAgbm9kZS5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA8LSB0cnVlO1xuICAgIFN0YWNrLnB1c2ggdC5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiAoVCBub2RlKSlcbjs7XG5cbmxldCByZWMgcmVtb3ZlX2NoaWxkcmVuIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIHBhcmVudCAtPlxuICBOb2RlLml0ZXJpX2NoaWxkcmVuIHBhcmVudCB+ZjooZnVuIGNoaWxkX2luZGV4IChUIGNoaWxkKSAtPlxuICAgIHJlbW92ZV9jaGlsZCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXgpXG5cbmFuZCByZW1vdmVfY2hpbGQgOiB0eXBlIGEgYi4gY2hpbGQ6YiBOb2RlLnQgLT4gcGFyZW50OmEgTm9kZS50IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBOb2RlLnJlbW92ZV9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICBjaGVja19pZl91bm5lY2Vzc2FyeSBjaGlsZFxuXG5hbmQgY2hlY2tfaWZfdW5uZWNlc3NhcnkgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPiBpZiBub3QgKE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUpIHRoZW4gYmVjYW1lX3VubmVjZXNzYXJ5IG5vZGVcblxuYW5kIGJlY2FtZV91bm5lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICB0Lm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgPC0gdC5udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5ICsgMTtcbiAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMCB0aGVuIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGU7XG4gIG5vZGUuaGVpZ2h0IDwtIC0xO1xuICByZW1vdmVfY2hpbGRyZW4gbm9kZTtcbiAgKG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHUgLT4gVW5vcmRlcmVkX2FycmF5X2ZvbGQuZm9yY2VfZnVsbF9jb21wdXRlIHVcbiAgIHwgRXhwZXJ0IHAgLT4gRXhwZXJ0Lm9ic2VydmFiaWxpdHlfY2hhbmdlIHAgfmlzX25vd19vYnNlcnZhYmxlOmZhbHNlXG4gICB8IF8gLT4gKCkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKTtcbiAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlIHRoZW4gUmVjb21wdXRlX2hlYXAucmVtb3ZlIHQucmVjb21wdXRlX2hlYXAgbm9kZVxuOztcblxubGV0IHJlbW92ZV9hbGFybSAoY2xvY2sgOiBDbG9jay50KSBhbGFybSA9XG4gIGlmIFRpbWluZ193aGVlbC5tZW0gY2xvY2sudGltaW5nX3doZWVsIGFsYXJtXG4gIHRoZW4gVGltaW5nX3doZWVsLnJlbW92ZSBjbG9jay50aW1pbmdfd2hlZWwgYWxhcm1cbjs7XG5cbigqIEFuIGludmFsaWQgbm9kZSBpcyBub2RlIHdob3NlIGtpbmQgaXMgW0ludmFsaWRdLiAgQSBub2RlJ3Mga2luZCBpcyBzZXQgdG8gW0ludmFsaWRdXG4gICB3aGVuIHRoZSBsaHMgb2YgaXRzIHNjb3BlIGNoYW5nZXMsIG9yIG9uZSBpZiBpdHMgY2hpbGRyZW4gcHJvcGFnYXRlIHRoZSBpbnZhbGlkaXR5XG4gICB1cHdhcmQgKHNlZSBbTm9kZS5zaG91bGRfYmVfaW52YWxpZGF0ZWRdIHRvIHNlZSBpbiB3aGljaCBjYXNlIGludmFsaWRpdHkgcHJvcGFnYXRpb25cbiAgIHN0b3BzKS4gIEludmFsaWRhdGluZyBhIG5vZGUgZGlzY29ubmVjdHMgaXQgZnJvbSBpdHMgY2hpbGRyZW4sIHdoaWNoIG1lYW5zOlxuXG4gICAxLiBhbiBpbnZhbGlkIG5vZGUgY2Fubm90IGVuZCB1cCBvbiB0aGUgc2NoZWR1bGVyIChpZiBpdCBpcyBvbiB0aGUgc2NoZWR1bGVyIHdoZW5cbiAgIGl0IGlzIGludmFsaWRhdGVkLCBpdCBpcyByZW1vdmVkKVxuICAgMi4gYW4gaW52YWxpZCBub2RlIGRvZXNuJ3QgbWFrZSBpdHMgY2hpbGRyZW4gbmVjZXNzYXJ5IGFueW1vcmUuXG5cbiAgIEludmFsaWQgbm9kZXMgdXN1YWxseSBoYXZlIG5vIHBhcmVudHMsIGJlY2F1c2UgdGhlIHVwd2FyZCBpbnZhbGlkaXR5IHByb3BhZ2F0aW9uIG1lYW5zXG4gICB0aGF0IHRoZWlyIHBhcmVudHMgd2lsbCB0aGVtc2VsdmVzIGJlY29tZSBpbnZhbGlkIGFuZCBkaXNjb25uZWN0IGZyb20gdGhlaXIgY2hpbGRyZW4uXG4gICBIb3dldmVyLCBbaWZdLCBbam9pbl0gb3IgW2JpbmRdIGFyZSBub3QgaW52YWxpZGF0ZWQgYnkgdGhlIHVwd2FyZCBwcm9wYWdhdGlvbiwgc28gYW5cbiAgIGludmFsaWQgbm9kZSBjYW4gc3RpbGwgaGF2ZSBwYXJlbnRzLiAgSW52YWxpZCBub2RlcyBjYW4gYmUgbmVjZXNzYXJ5LCBpbiB0aGUgY2FzZSB3aGVyZVxuICAgdGhleSBoYXZlIHBhcmVudHMsIGFuZCBhbHNvIHdoZW4gdGhleSBhcmUgb2JzZXJ2ZWQuXG5cbiAgIFRoZSB1cHdhcmQgcHJvcGFnYXRpb24gb2YgaW52YWxpZGl0eSBoYXBwZW5zIGJvdGggd2hlbiBhIG5vZGUgYmVjb21lcyBpbnZhbGlkLCBhbmQgd2hlblxuICAgdHJ5aW5nIHRvIGFkZCBhbiBlZGdlIGZyb20gYW4gaW52YWxpZCBjaGlsZCBub2RlIHRvIGFub3RoZXIgbm9kZS4gIEJlY2F1c2UgaW52YWxpZGl0eVxuICAgaXMgb25seSBwcm9wYWdhdGVkIHVwd2FyZCwgYW5kIGJlY2F1c2UgdGhlIHJocyBvZiBhIGJpbmQgaXMgaW52YWxpZGF0ZWQgYmVmb3JlIGl0XG4gICBleGVjdXRlcywgYSBub2RlIGNhbm5vdCBiZSBib3RoIGNvbXB1dGVkIGFuZCBpbnZhbGlkYXRlZCBpbiB0aGUgc2FtZSBzdGFiaWxpemF0aW9uLlxuXG4gICBXaGVuIGludmFsaWRhdGluZywgd2UgY2FuJ3QgYXNzdW1lIG11Y2ggYWJvdXQgdGhlIG5vZGVzIHdlIHZpc2l0LiAgV2UgY2Fubm90IGFzc3VtZVxuICAgdGhhdCBub2RlcyBhcmUgdmFsaWQgKHRoZSByaHMgY2FuIGNvbnRhaW4gcHJldmlvdXNseSBpbnZhbGlkYXRlZCBub2RlcyksIG9yIHRoYXQgbm9kZXNcbiAgIGFyZSB1bm5lY2Vzc2FyeSAobm9kZXMgY2FuIGJlIG1hZGUgbmVjZXNzYXJ5IHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGVpciBjb250YWluaW5nXG4gICBiaW5kcykuICopXG5cbmxldCByZWMgaW52YWxpZGF0ZV9ub2RlIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgaWYgTm9kZS5pc192YWxpZCBub2RlXG4gIHRoZW4gKFxuICAgIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICAgIGlmIG5vZGUubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDAgdGhlbiBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBub2RlO1xuICAgIG5vZGUudmFsdWVfb3B0IDwtIFVvcHQubm9uZTtcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5vZGUub2xkX3ZhbHVlX29wdCk7XG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgbm9kZS5yZWNvbXB1dGVkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgdC5udW1fbm9kZXNfaW52YWxpZGF0ZWQgPC0gdC5udW1fbm9kZXNfaW52YWxpZGF0ZWQgKyAxO1xuICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAgICAgKCogVGhlIG5vZGUgZG9lc24ndCBoYXZlIGNoaWxkcmVuIGFueW1vcmUsIHNvIHdlIGNhbiBsb3dlciBpdHMgaGVpZ2h0IGFzIG11Y2ggYXNcbiAgICAgICAgIHBvc3NpYmxlLCB0byBvbmUgZ3JlYXRlciB0aGFuIHRoZSBzY29wZSBpdCB3YXMgY3JlYXRlZCBpbi4gIEFsc28sIGJlY2F1c2Ugd2VcbiAgICAgICAgIGFyZSBsb3dlcmluZyB0aGUgaGVpZ2h0LCB3ZSBkb24ndCBuZWVkIHRvIGFkanVzdCBhbnkgb2YgaXRzIGFuY2VzdG9ycycgaGVpZ2h0cy5cbiAgICAgICAgIFdlIGNvdWxkIGxlYXZlIHRoZSBoZWlnaHQgYWxvbmUsIGJ1dCB3ZSBtYXkgYXMgd2VsbCBsb3dlciBpdCBhcyBtdWNoIGFzXG4gICAgICAgICBwb3NzaWJsZSB0byBhdm9pZCBtYWtpbmcgdGhlIGhlaWdodHMgb2YgYW55IGZ1dHVyZSBhbmNlc3RvcnMgdW5uZWNlc3NhcmlseVxuICAgICAgICAgbGFyZ2UuICopXG4gICAgICBub2RlLmhlaWdodCA8LSBTY29wZS5oZWlnaHQgbm9kZS5jcmVhdGVkX2luICsgMSk7XG4gICAgKCogV2UgZG9uJ3Qgc2V0IFtub2RlLmNyZWF0ZWRfaW5dIG9yIFtub2RlLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXTsgd2UgbGVhdmUgW25vZGVdXG4gICAgICAgaW4gdGhlIHNjb3BlIGl0IHdhcyBjcmVhdGVkIGluLiAgSWYgdGhhdCBzY29wZSBpcyBldmVyIGludmFsaWRhdGVkLCB0aGVuIHRoYXRcbiAgICAgICB3aWxsIGNsZWFyIFtub2RlLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXSAqKVxuICAgIChtYXRjaCBub2RlLmtpbmQgd2l0aFxuICAgICB8IEF0IGF0IC0+IHJlbW92ZV9hbGFybSBhdC5jbG9jayBhdC5hbGFybVxuICAgICB8IEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMgLT4gcmVtb3ZlX2FsYXJtIGF0X2ludGVydmFscy5jbG9jayBhdF9pbnRlcnZhbHMuYWxhcm1cbiAgICAgfCBCaW5kX21haW4gYmluZCAtPiBpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmhzIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgIHwgU3RlcF9mdW5jdGlvbiB7IGFsYXJtOyBjbG9jazsgXyB9IC0+IHJlbW92ZV9hbGFybSBjbG9jayBhbGFybVxuICAgICB8IF8gLT4gKCkpO1xuICAgIE5vZGUuc2V0X2tpbmQgbm9kZSBJbnZhbGlkO1xuICAgICgqIElmIHdlIGNhbGxlZCBbcHJvcGFnYXRlX2ludmFsaWRpdHldIHJpZ2h0IGF3YXkgb24gdGhlIHBhcmVudHMsIHdlIHdvdWxkIGdldCBpbnRvXG4gICAgICAgdHJvdWJsZS4gIFRoZSBwYXJlbnQgd291bGQgZGlzY29ubmVjdCBpdHNlbGYgZnJvbSB0aGUgY3VycmVudCBub2RlLCB0aHVzXG4gICAgICAgbW9kaWZ5aW5nIHRoZSBsaXN0IG9mIHBhcmVudHMgd2UgaXRlcmF0ZSBvbi4gIEV2ZW4gaWYgd2UgbWFkZSBhIHNwZWNpYWwgY2FzZSwgaXRcbiAgICAgICBzdGlsbCB3b3VsZG4ndCBiZSBlbm91Z2ggdG8gaGFuZGxlIG90aGVyIGNhc2VzIHdoZXJlIHRoZSBsaXN0IG9mIHBhcmVudHMgaXNcbiAgICAgICBtb2RpZmllZCAoZS5nLiB3aGVuIFtsaHNdIGlzIGludmFsaWRhdGVkIGluIHRoZSBleGFtcGxlIGluIHRoZSBjb21tZW50IGFib3V0XG4gICAgICAgW2Nhbl9yZWNvbXB1dGVfbm93XSBmYXIgYmVsb3cpLiAqKVxuICAgIGZvciBpbmRleCA9IDAgdG8gbm9kZS5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgIFN0YWNrLnB1c2ggdC5wcm9wYWdhdGVfaW52YWxpZGl0eSAoTm9kZS5nZXRfcGFyZW50IG5vZGUgfmluZGV4KVxuICAgIGRvbmU7XG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKSk7XG4gICAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlIHRoZW4gUmVjb21wdXRlX2hlYXAucmVtb3ZlIHQucmVjb21wdXRlX2hlYXAgbm9kZSlcblxuYW5kIGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgbm9kZSA9XG4gIGxldCByID0gcmVmIG5vZGUgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZSA8LSBVb3B0Lm5vbmU7XG4gICAgaW52YWxpZGF0ZV9ub2RlIG5vZGVfb25fcmhzXG4gIGRvbmVcbjs7XG5cbigqIFdoZW4gW25vdCB0LmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHNdIGFuZCBhIGJpbmQncyBsaHMgY2hhbmdlcywgd2UgbW92ZVxuICAgbm9kZXMgY3JlYXRlZCBvbiB0aGUgYmluZCdzIHJocyB1cCB0byBpdHMgcGFyZW50IGJpbmQsIGFzIG9wcG9zZWQgdG8gW1Njb3BlLlRvcF0uICBUaGlzXG4gICBtYWludGFpbnMgdGhlaXIgZGVwZW5kZW5jZSBvbiB2YWxpZCBiaW5kIGxlZnQtaGFuZCBzaWRlcywgYW5kIGtlZXBzIHRoZW0gaGlnaGVyIGluIHRoZVxuICAgZ3JhcGguICBUaGlzIGluIHR1cm4gbWVhbnMgdGhhdCB3ZSB3aWxsIGNvbnRpbnVlIHRvIGNvbXB1dGUgdGhvc2Ugbm9kZXMgYWZ0ZXIgdGhlXG4gICBwYXJlbnQgYmluZCdzIGxocywgd2hpY2ggZ2l2ZXMgdGhlbSBtb3JlIG9mIGEgY2hhbmNlIHRvIGJlY29tZSB1bm5lY2Vzc2FyeSBhbmQgbm90IGJlXG4gICBjb21wdXRlZCBzaG91bGQgdGhlIHBhcmVudCBiaW5kJ3MgbGhzIGNoYW5nZS4gKilcbmxldCByZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzIF90IChmaXJzdF9ub2RlX29uX3JocyA6IE5vZGUuUGFja2VkLnQgVW9wdC50KSB+bmV3X3Njb3BlID1cbiAgbGV0IHIgPSByZWYgZmlyc3Rfbm9kZV9vbl9yaHMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZSA8LSBVb3B0Lm5vbmU7XG4gICAgbm9kZV9vbl9yaHMuY3JlYXRlZF9pbiA8LSBuZXdfc2NvcGU7XG4gICAgU2NvcGUuYWRkX25vZGUgbmV3X3Njb3BlIG5vZGVfb25fcmhzXG4gIGRvbmVcbjs7XG5cbmxldCBwcm9wYWdhdGVfaW52YWxpZGl0eSB0ID1cbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5KSBkb1xuICAgIGxldCAoVCBub2RlKSA9IFN0YWNrLnBvcF9leG4gdC5wcm9wYWdhdGVfaW52YWxpZGl0eSBpblxuICAgIGlmIE5vZGUuaXNfdmFsaWQgbm9kZVxuICAgIHRoZW5cbiAgICAgIGlmIE5vZGUuc2hvdWxkX2JlX2ludmFsaWRhdGVkIG5vZGVcbiAgICAgIHRoZW4gaW52YWxpZGF0ZV9ub2RlIG5vZGVcbiAgICAgIGVsc2UgKFxuICAgICAgICAoKiBbTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlXSBpcyB0cnVlIGJlY2F1c2VcbiAgICAgICAgICAgLSBub2RlIGlzIG5lY2Vzc2FyeS4gVGhpcyBpcyBiZWNhdXNlIGNoaWxkcmVuIGNhbiBvbmx5IHBvaW50IHRvIG5lY2Vzc2FyeVxuICAgICAgICAgICAgIHBhcmVudHNcbiAgICAgICAgICAgLSBub2RlIGlzIHN0YWxlLiBUaGlzIGlzIGJlY2F1c2U6IEZvciBiaW5kLCBpZiwgam9pbiwgdGhpcyBpcyB0cnVlIGJlY2F1c2VcbiAgICAgICAgICAgLSBlaXRoZXIgdGhlIGludmFsaWRhdGlvbiBpcyBjYXVzZWQgYnkgdGhlIGxocyBjaGFuZ2luZyAoaW4gd2hpY2ggY2FzZSB0aGVcbiAgICAgICAgICAgICBsaHMtY2hhbmdlIG5vZGUgYmVpbmcgbmV3ZXIgbWFrZXMgdXMgc3RhbGUpLlxuICAgICAgICAgICAtIG9yIGEgY2hpbGQgYmVjYW1lIGludmFsaWQgdGhpcyBzdGFiaWxpemF0aW9uIGN5Y2xlLCBpbiB3aGljaCBjYXNlIGl0IGhhc1xuICAgICAgICAgICAgIHQuY2hhbmdlZF9hdCBvZiBbdC5zdGFiaWxpemF0aW9uX251bV0sIGFuZCBzbyBbbm9kZV0gaXMgc3RhbGVcbiAgICAgICAgICAgLSBvciBbbm9kZV0ganVzdCBiZWNhbWUgbmVjZXNzYXJ5IGFuZCB0cmllZCBjb25uZWN0aW5nIHRvIGFuIGFscmVhZHkgaW52YWxpZFxuICAgICAgICAgICAgIGNoaWxkLiBJbiB0aGF0IGNhc2UsIFtjaGlsZC5jaGFuZ2VkX2F0ID4gbm9kZS5yZWNvbXB1dGVkX2F0XSBmb3IgdGhhdCBjaGlsZCxcbiAgICAgICAgICAgICBiZWNhdXNlIGlmIHdlIGhhZCBiZWVuIHJlY29tcHV0ZWQgd2hlbiB0aGF0IGNoaWxkIGNoYW5nZWQsIHdlIHdvdWxkIGhhdmUgYmVlblxuICAgICAgICAgICAgIG1hZGUgaW52YWxpZCBiYWNrIHRoZW4uICBGb3IgZXhwZXJ0IG5vZGVzLCB0aGUgYXJndW1lbnQgaXMgdGhlIHNhbWUsIGV4Y2VwdFxuICAgICAgICAgICAgIHRoYXQgaW5zdGVhZCBvZiBsaHMtY2hhbmdlIG5vZGVzIG1ha2UgdGhlIGV4cGVydCBub2RlcyBzdGFsZSwgaXQncyBtYWRlIHN0YWxlXG4gICAgICAgICAgICAgZXhwbGljaXRlbHkgd2hlbiBhZGRpbmcgb3IgcmVtb3ZpbmcgY2hpbGRyZW4uICopXG4gICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpO1xuICAgICAgICAobWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgICAgICAgIHwgRXhwZXJ0IGV4cGVydCAtPlxuICAgICAgICAgICAoKiBJZiBtdWx0aXBsZSBjaGlsZHJlbiBhcmUgaW52YWxpZCwgdGhleSB3aWxsIHB1c2ggdXMgYXMgbWFueSB0aW1lcyBvbiB0aGVcbiAgICAgICAgICAgICAgcHJvcGFnYXRpb24gc3RhY2ssIHNvIHdlIGNvdW50IHRoZW0gcmlnaHQuICopXG4gICAgICAgICAgIEV4cGVydC5pbmNyX2ludmFsaWRfY2hpbGRyZW4gZXhwZXJ0XG4gICAgICAgICB8IGtpbmQgLT5cbiAgICAgICAgICAgaWYgZGVidWdcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgICAgfCBCaW5kX21haW4gXyB8IElmX3RoZW5fZWxzZSBfIHwgSm9pbl9tYWluIF8gLT4gKClcbiAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZSAoKiBub2RlcyB3aXRoIG5vIGNoaWxkcmVuIGFyZSBuZXZlciBwdXNoZWQgb24gdGhlIHN0YWNrICopKSk7XG4gICAgICAgICgqIFdlIGRvIG5vdCBjaGVjayBbTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlXSBoZXJlLCBiZWNhdXNlIGl0IHNob3VsZCBiZVxuICAgICAgICAgICB0cnVlLCBhbmQgYmVjYXVzZSBjb21wdXRpbmcgaXQgdGFrZXMgTyhudW1iZXIgb2YgY2hpbGRyZW4pLCBub2RlIGNhbiBiZSBwdXNoZWRcbiAgICAgICAgICAgb24gdGhlIHN0YWNrIG9uY2UgcGVyIGNoaWxkLCBhbmQgZXhwZXJ0IG5vZGVzIGNhbiBoYXZlIGxvdHMgb2YgY2hpbGRyZW4uICopXG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIG5vZGUpXG4gIGRvbmVcbjs7XG5cbigqIFthZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHMgdCB+Y2hpbGQgfnBhcmVudF0gYWRkcyBbcGFyZW50XSBhcyBhIHBhcmVudCBvZlxuICAgW2NoaWxkXSwgYW5kIG1ha2VzIFtjaGlsZF0gYW5kIGFsbCBpdHMgZGVzY2VuZGFudHMgbmVjZXNzYXJ5LCBlbnN1cmluZyB0aGVpciBoZWlnaHRzXG4gICBhcmUgYWNjdXJhdGUuICBUaGVyZSBpcyBubyBndWFyYW50ZWUgYWJvdXQgdGhlIHJlbGF0aXZlIGhlaWdodHMgb2YgW2NoaWxkXSBhbmQgW3BhcmVudF1cbiAgIHRob3VnaC4gKilcbmxldCByZWMgYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzXG4gIDogdHlwZSBhIGIuIGNoaWxkOmEgTm9kZS50IC0+IHBhcmVudDpiIE5vZGUudCAtPiBjaGlsZF9pbmRleDppbnQgLT4gdW5pdFxuICA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXggLT5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gIGxldCB0ID0gY2hpbGQuc3RhdGUgaW5cbiAgbGV0IHdhc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeSBjaGlsZCBpblxuICBOb2RlLmFkZF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgY2hpbGQpIHRoZW4gU3RhY2sucHVzaCB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IChUIHBhcmVudCk7XG4gIGlmIG5vdCB3YXNfbmVjZXNzYXJ5IHRoZW4gYmVjYW1lX25lY2Vzc2FyeSBjaGlsZDtcbiAgbWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICB8IEV4cGVydCBlIC0+IEV4cGVydC5ydW5fZWRnZV9jYWxsYmFjayBlIH5jaGlsZF9pbmRleFxuICB8IF8gLT4gKClcblxuYW5kIGJlY2FtZV9uZWNlc3NhcnkgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICAoKiBbU2NvcGUuaXNfbmVjZXNzYXJ5IG5vZGUuY3JlYXRlZF9pbl0gaXMgdHJ1ZSAoYXNzdW1pbmcgdGhlIHNjb3BlIGl0c2VsZiBpcyB2YWxpZClcbiAgICAgYmVjYXVzZSBbTm9kZS5pdGVyX2NoaWxkcmVuXSBiZWxvdyBmaXJzdCB2aXNpdHMgdGhlIGxocy1jaGFuZ2Ugb2YgYmluZCBub2RlcyBhbmRcbiAgICAgdGhlbiB0aGUgcmhzLiAqKVxuICBpZiBOb2RlLmlzX3ZhbGlkIG5vZGUgJiYgbm90IChTY29wZS5pc19uZWNlc3Nhcnkgbm9kZS5jcmVhdGVkX2luKVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRyeWluZyB0byBtYWtlIGEgbm9kZSBuZWNlc3Nhcnkgd2hvc2UgZGVmaW5pbmcgYmluZCBpcyBub3QgbmVjZXNzYXJ5XCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgdC5udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSA8LSB0Lm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5ICsgMTtcbiAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMCB0aGVuIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGU7XG4gICgqIFNpbmNlIFtub2RlXSBiZWNhbWUgbmVjZXNzYXJ5LCB0byByZXN0b3JlIHRoZSBpbnZhcmlhbnQsIHdlIG5lZWQgdG86XG5cbiAgICAgLSBhZGQgcGFyZW50IHBvaW50ZXJzIHRvIFtub2RlXSBmcm9tIGl0cyBjaGlsZHJlbi5cbiAgICAgLSBzZXQgW25vZGVdJ3MgaGVpZ2h0LlxuICAgICAtIGFkZCBbbm9kZV0gdG8gdGhlIHJlY29tcHV0ZSBoZWFwLCBpZiBuZWNlc3NhcnkuICopXG4gIHNldF9oZWlnaHQgbm9kZSAoU2NvcGUuaGVpZ2h0IG5vZGUuY3JlYXRlZF9pbiArIDEpO1xuICBOb2RlLml0ZXJpX2NoaWxkcmVuIG5vZGUgfmY6KGZ1biBjaGlsZF9pbmRleCAoVCBjaGlsZCkgLT5cbiAgICBhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHMgfmNoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGRfaW5kZXg7XG4gICAgKCogTm93IHRoYXQgY2hpbGQgaXMgbmVjZXNzYXJ5LCBpdCBzaG91bGQgaGF2ZSBhIHZhbGlkIGhlaWdodC4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGQuaGVpZ2h0ID49IDApO1xuICAgIGlmIGNoaWxkLmhlaWdodCA+PSBub2RlLmhlaWdodCB0aGVuIHNldF9oZWlnaHQgbm9kZSAoY2hpbGQuaGVpZ2h0ICsgMSkpO1xuICAoKiBOb3cgdGhhdCB0aGUgaGVpZ2h0IGlzIGNvcnJlY3QsIG1heWJlIGFkZCBbbm9kZV0gdG8gdGhlIHJlY29tcHV0ZSBoZWFwLiAgW25vZGVdXG4gICAgIGp1c3QgYmVjYW1lIG5lY2Vzc2FyeSwgc28gaXQgY2FuJ3QgaGF2ZSBiZWVuIGluIHRoZSByZWNvbXB1dGUgaGVhcC4gIFNpbmNlIFtub2RlXVxuICAgICBpcyBuZWNlc3NhcnksIHdlIHNob3VsZCBhZGQgaXQgdG8gdGhlIHJlY29tcHV0ZSBoZWFwIGlmZiBpdCBpcyBzdGFsZS4gKilcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBub2RlKTtcbiAgaWYgTm9kZS5pc19zdGFsZSBub2RlIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgbm9kZTtcbiAgbWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgfCBFeHBlcnQgcCAtPiBFeHBlcnQub2JzZXJ2YWJpbGl0eV9jaGFuZ2UgcCB+aXNfbm93X29ic2VydmFibGU6dHJ1ZVxuICB8IF8gLT4gKClcbjs7XG5cbmxldCBiZWNhbWVfbmVjZXNzYXJ5IG5vZGUgPVxuICBiZWNhbWVfbmVjZXNzYXJ5IG5vZGU7XG4gIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IG5vZGUuc3RhdGVcbjs7XG5cbmxldCBhZGRfcGFyZW50IH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICBsZXQgdCA9IHBhcmVudC5zdGF0ZSBpblxuICAoKiBJbiB0aGUgY2FzZSB3aGVuIHRoZSBlZGdlIGJlaW5nIGFkZGVkIGNyZWF0ZXMgYSBjeWNsZSwgaXQgaXMgcG9zc2libGUgZm9yIHRoZVxuICAgICByZWN1cnNpb24gaW4gW2FkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0c10gdG8gcmVhY2ggW3BhcmVudF0gYXMgYSBkZXNjZW5kYW50XG4gICAgIG9mIFtjaGlsZF0uICBJbiB0aGF0IGNhc2UsIHRoZSByZWN1cnNpb24gdGVybWluYXRlcywgYmVjYXVzZSBbTm9kZS5pc19uZWNlc3NhcnlcbiAgICAgcGFyZW50XS4gIFdlIHRoZW4gcmV0dXJuIGhlcmUgYW5kIHN1YnNlcXVlbnRseSBkZXRlY3QgdGhlIGN5Y2xlIGluXG4gICAgIFthZGp1c3RfaGVpZ2h0c10uICopXG4gIGFkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0cyB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gICgqIFdlIGFkanVzdCBoZWlnaHRzIHNvIHRoYXQgd2UgZW5zdXJlIHRoZXJlIGFyZSBubyBjeWNsZXMgYmVmb3JlIGNhbGxpbmdcbiAgICAgW3Byb3BhZ2F0ZV9pbnZhbGlkaXR5XS4gKilcbiAgaWYgY2hpbGQuaGVpZ2h0ID49IHBhcmVudC5oZWlnaHRcbiAgdGhlblxuICAgIEFkanVzdF9oZWlnaHRzX2hlYXAuYWRqdXN0X2hlaWdodHNcbiAgICAgIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxuICAgICAgdC5yZWNvbXB1dGVfaGVhcFxuICAgICAgfmNoaWxkXG4gICAgICB+cGFyZW50O1xuICBwcm9wYWdhdGVfaW52YWxpZGl0eSB0O1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgKCogd2Ugb25seSBhZGQgbmVjZXNzYXJ5IHBhcmVudHMgKilcbiAgaWYgKG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBwYXJlbnQpKVxuICAmJiAoU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSBwYXJlbnQucmVjb21wdXRlZF9hdFxuICAgICAgfHwgTm9kZS5lZGdlX2lzX3N0YWxlIH5jaGlsZCB+cGFyZW50KVxuICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHBhcmVudFxuOztcblxubGV0IHJ1bl93aXRoX3Njb3BlIHQgc2NvcGUgfmYgPVxuICBsZXQgc2F2ZWQgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgdC5jdXJyZW50X3Njb3BlIDwtIHNjb3BlO1xuICB0cnlcbiAgICBsZXQgdiA9IGYgKCkgaW5cbiAgICB0LmN1cnJlbnRfc2NvcGUgPC0gc2F2ZWQ7XG4gICAgdlxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgdC5jdXJyZW50X3Njb3BlIDwtIHNhdmVkO1xuICAgIHJhaXNlIGV4blxuOztcblxubGV0IHdpdGhpbl9zY29wZSB0IHNjb3BlIH5mID1cbiAgaWYgbm90IChTY29wZS5pc192YWxpZCBzY29wZSlcbiAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImF0dGVtcHQgdG8gcnVuIHdpdGhpbiBhbiBpbnZhbGlkIHNjb3BlXCIgdCBbJXNleHBfb2Y6IHRdO1xuICBydW5fd2l0aF9zY29wZSB0IHNjb3BlIH5mXG47O1xuXG5sZXQgY2hhbmdlX2NoaWxkXG4gIDogdHlwZSBhIGIuXG4gICAgcGFyZW50OmEgTm9kZS50XG4gICAgLT4gb2xkX2NoaWxkOmIgTm9kZS50IFVvcHQudFxuICAgIC0+IG5ld19jaGlsZDpiIE5vZGUudFxuICAgIC0+IGNoaWxkX2luZGV4OmludFxuICAgIC0+IHVuaXRcbiAgPVxuICBmdW4gfnBhcmVudCB+b2xkX2NoaWxkIH5uZXdfY2hpbGQgfmNoaWxkX2luZGV4IC0+XG4gIGlmIFVvcHQuaXNfbm9uZSBvbGRfY2hpbGRcbiAgdGhlbiBhZGRfcGFyZW50IH5jaGlsZDpuZXdfY2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXhcbiAgZWxzZSAoXG4gICAgbGV0IG9sZF9jaGlsZCA9IFVvcHQudW5zYWZlX3ZhbHVlIG9sZF9jaGlsZCBpblxuICAgIGlmIG5vdCAocGh5c19lcXVhbCBvbGRfY2hpbGQgbmV3X2NoaWxkKVxuICAgIHRoZW4gKFxuICAgICAgKCogV2UgcmVtb3ZlIFtvbGRfY2hpbGRdIGJlZm9yZSBhZGRpbmcgW25ld19jaGlsZF0sIGJlY2F1c2UgdGhleSBzaGFyZSB0aGUgc2FtZVxuICAgICAgICAgY2hpbGQgaW5kZXguICopXG4gICAgICBOb2RlLnJlbW92ZV9wYXJlbnQgfmNoaWxkOm9sZF9jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgICAgICgqIFdlIGZvcmNlIFtvbGRfY2hpbGRdIHRvIHRlbXBvcmFyaWx5IGJlIG5lY2Vzc2FyeSBzbyB0aGF0IFthZGRfcGFyZW50XSBjYW4ndFxuICAgICAgICAgbWlzdGFrZW5seSB0aGluayBpdCBpcyB1bm5lY2Vzc2FyeSBhbmQgdHJhbnNpdGlvbiBpdCB0byBuZWNlc3NhcnkgKHdoaWNoIHdvdWxkXG4gICAgICAgICBhZGQgZHVwbGljYXRlIGVkZ2VzIGFuZCBicmVhayB0aGluZ3MgaG9ycmlibHkpLiAqKVxuICAgICAgb2xkX2NoaWxkLmZvcmNlX25lY2Vzc2FyeSA8LSB0cnVlO1xuICAgICAgYWRkX3BhcmVudCB+Y2hpbGQ6bmV3X2NoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICAgICAgb2xkX2NoaWxkLmZvcmNlX25lY2Vzc2FyeSA8LSBmYWxzZTtcbiAgICAgICgqIFdlIFtjaGVja19pZl91bm5lY2Vzc2FyeV0gYWZ0ZXIgW2FkZF9wYXJlbnRdLCBzbyB0aGF0IHdlIGRvbid0IHVubmVjZXNzYXJpbHlcbiAgICAgICAgIHRyYW5zaXRpb24gbm9kZXMgZnJvbSBuZWNlc3NhcnkgdG8gdW5uZWNlc3NhcnkgYW5kIHRoZW4gYmFjayBhZ2Fpbi4gKilcbiAgICAgIGNoZWNrX2lmX3VubmVjZXNzYXJ5IG9sZF9jaGlsZCkpXG47O1xuXG5sZXQgYWRkX2FsYXJtIGNsb2NrIH5hdCBhbGFybV92YWx1ZSA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IChub3cgY2xvY2spKTtcbiAgVGltaW5nX3doZWVsLmFkZCBjbG9jay50aW1pbmdfd2hlZWwgfmF0IGFsYXJtX3ZhbHVlXG47O1xuXG5sZXQgcmVjIHJlY29tcHV0ZSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICB0Lm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZSA8LSBTb21lIChUIG5vZGUpO1xuICAgIHQub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgPC0gW10pO1xuICB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkIDwtIHQubnVtX25vZGVzX3JlY29tcHV0ZWQgKyAxO1xuICBub2RlLnJlY29tcHV0ZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgbWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgfCBBcnJheV9mb2xkIGFycmF5X2ZvbGQgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKEFycmF5X2ZvbGQuY29tcHV0ZSBhcnJheV9mb2xkKVxuICB8IEF0IHsgYXQ7IGNsb2NrOyBfIH0gLT5cbiAgICAoKiBJdCBpcyBhIGJ1ZyBpZiB3ZSB0cnkgdG8gY29tcHV0ZSBhbiBbQXRdIG5vZGUgYWZ0ZXIgW2F0XS4gIFthZHZhbmNlX2Nsb2NrXSB3YXNcbiAgICAgICBzdXBwb3NlZCB0byBjb252ZXJ0IGl0IHRvIGEgW0NvbnN0XSBhdCB0aGUgYXBwcm9wcmlhdGUgdGltZS4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVGltZV9ucy4oID4gKSBhdCAobm93IGNsb2NrKSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgQmVmb3JlXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKClcbiAgfCBCaW5kX2xoc19jaGFuZ2VcbiAgICAgICh7IG1haW5cbiAgICAgICA7IGZcbiAgICAgICA7IGxoc1xuICAgICAgIDsgcmhzX3Njb3BlXG4gICAgICAgOyByaHMgPSBvbGRfcmhzXG4gICAgICAgOyBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgPSBvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICAgOyBfXG4gICAgICAgfSBhcyBiaW5kKSAtPlxuICAgICgqIFdlIGNsZWFyIFthbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNdIHNvIGl0IHdpbGwgaG9sZCBqdXN0IHRoZSBub2RlcyBjcmVhdGVkIGJ5XG4gICAgICAgdGhpcyBjYWxsIHRvIFtmXS4gKilcbiAgICBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA8LSBVb3B0Lm5vbmU7XG4gICAgbGV0IHJocyA9IHJ1bl93aXRoX3Njb3BlIHQgcmhzX3Njb3BlIH5mOihmdW4gKCkgLT4gZiAoTm9kZS52YWx1ZV9leG4gbGhzKSkgaW5cbiAgICBiaW5kLnJocyA8LSBVb3B0LnNvbWUgcmhzO1xuICAgICgqIEFudGljaXBhdGUgd2hhdCBbbWF5YmVfY2hhbmdlX3ZhbHVlXSB3aWxsIGRvLCB0byBtYWtlIHN1cmUgQmluZF9tYWluIGlzIHN0YWxlXG4gICAgICAgcmlnaHQgYXdheS4gVGhpcyB3YXksIGlmIHRoZSBuZXcgY2hpbGQgaXMgaW52YWxpZCwgd2UnbGwgc2F0aXNmeSB0aGUgaW52YXJpYW50XG4gICAgICAgc2F5aW5nIHRoYXQgW25lZWRzX3RvX2JlX2NvbXB1dGVkIGJpbmRfbWFpbl0gaW4gW3Byb3BhZ2F0ZV9pbnZhbGlkaXR5XSAqKVxuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGNoYW5nZV9jaGlsZFxuICAgICAgfnBhcmVudDptYWluXG4gICAgICB+b2xkX2NoaWxkOm9sZF9yaHNcbiAgICAgIH5uZXdfY2hpbGQ6cmhzXG4gICAgICB+Y2hpbGRfaW5kZXg6S2luZC5iaW5kX3Joc19jaGlsZF9pbmRleDtcbiAgICBpZiBVb3B0LmlzX3NvbWUgb2xkX3Joc1xuICAgIHRoZW4gKFxuICAgICAgKCogV2UgaW52YWxpZGF0ZSBhZnRlciBbY2hhbmdlX2NoaWxkXSwgYmVjYXVzZSBpbnZhbGlkYXRpb24gY2hhbmdlcyB0aGUgW2tpbmRdIG9mXG4gICAgICAgICBub2RlcyB0byBbSW52YWxpZF0sIHdoaWNoIG1lYW5zIHRoYXQgd2UgY2FuIG5vIGxvbmdlciB2aXNpdCB0aGVpciBjaGlsZHJlbi5cbiAgICAgICAgIEFsc28sIHRoZSBbb2xkX3Joc10gbm9kZXMgYXJlIHR5cGljYWxseSBtYWRlIHVubmVjZXNzYXJ5IGJ5IFtjaGFuZ2VfY2hpbGRdLCBhbmRcbiAgICAgICAgIHNvIGJ5IGludmFsaWRhdGluZyBhZnRlcndhcmRzLCB3ZSB3aWxsIG5vdCB3YXN0ZSB0aW1lIGFkZGluZyB0aGVtIHRvIHRoZVxuICAgICAgICAgcmVjb21wdXRlIGhlYXAgYW5kIHRoZW4gcmVtb3ZpbmcgdGhlbS4gKilcbiAgICAgIGlmIHQuYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3Joc1xuICAgICAgdGhlbiBpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmhzIG9sZF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgIGVsc2VcbiAgICAgICAgcmVzY29wZV9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgICAgIHRcbiAgICAgICAgICBvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICAgICAgfm5ld19zY29wZTptYWluLmNyZWF0ZWRfaW47XG4gICAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSB0KTtcbiAgICAoKiBbbm9kZV0gd2FzIHZhbGlkIGF0IHRoZSBzdGFydCBvZiB0aGUgW0JpbmRfbGhzX2NoYW5nZV0gYnJhbmNoLCBhbmQgaW52YWxpZGF0aW9uXG4gICAgICAgb25seSB2aXNpdHMgaGlnaGVyIG5vZGVzLCBzbyBbbm9kZV0gaXMgc3RpbGwgdmFsaWQuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfdmFsaWQgbm9kZSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKClcbiAgfCBCaW5kX21haW4geyByaHM7IF8gfSAtPiBjb3B5X2NoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGQ6KFVvcHQudmFsdWVfZXhuIHJocylcbiAgfCBDb25zdCBhIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIGFcbiAgfCBGcmVlemUgeyBjaGlsZDsgb25seV9mcmVlemVfd2hlbjsgXyB9IC0+XG4gICAgbGV0IHZhbHVlID0gTm9kZS52YWx1ZV9leG4gY2hpbGQgaW5cbiAgICBpZiBvbmx5X2ZyZWV6ZV93aGVuIHZhbHVlXG4gICAgdGhlbiAoXG4gICAgICByZW1vdmVfY2hpbGRyZW4gbm9kZTtcbiAgICAgIE5vZGUuc2V0X2tpbmQgbm9kZSAoQ29uc3QgdmFsdWUpO1xuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSB0aGVuIHNldF9oZWlnaHQgbm9kZSAwIGVsc2UgYmVjYW1lX3VubmVjZXNzYXJ5IG5vZGUpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIHZhbHVlXG4gIHwgSWZfdGVzdF9jaGFuZ2UgKHsgbWFpbjsgY3VycmVudF9icmFuY2g7IHRlc3Q7IHRoZW5fOyBlbHNlXzsgXyB9IGFzIGlmX3RoZW5fZWxzZSkgLT5cbiAgICBsZXQgZGVzaXJlZF9icmFuY2ggPSBpZiBOb2RlLnZhbHVlX2V4biB0ZXN0IHRoZW4gdGhlbl8gZWxzZSBlbHNlXyBpblxuICAgIGlmX3RoZW5fZWxzZS5jdXJyZW50X2JyYW5jaCA8LSBVb3B0LnNvbWUgZGVzaXJlZF9icmFuY2g7XG4gICAgKCogc2VlIHRoZSBjb21tZW50IGluIEJpbmRfbGhzX2NoYW5nZSAqKVxuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGNoYW5nZV9jaGlsZFxuICAgICAgfnBhcmVudDptYWluXG4gICAgICB+b2xkX2NoaWxkOmN1cnJlbnRfYnJhbmNoXG4gICAgICB+bmV3X2NoaWxkOmRlc2lyZWRfYnJhbmNoXG4gICAgICB+Y2hpbGRfaW5kZXg6S2luZC5pZl9icmFuY2hfY2hpbGRfaW5kZXg7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKClcbiAgfCBJZl90aGVuX2Vsc2UgeyBjdXJyZW50X2JyYW5jaDsgXyB9IC0+XG4gICAgY29weV9jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkOihVb3B0LnZhbHVlX2V4biBjdXJyZW50X2JyYW5jaClcbiAgfCBJbnZhbGlkIC0+XG4gICAgKCogV2UgbmV2ZXIgaGF2ZSBpbnZhbGlkIG5vZGVzIGluIHRoZSByZWNvbXB1dGUgaGVhcDsgdGhleSBhcmUgbmV2ZXIgc3RhbGUuICopXG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgSm9pbl9saHNfY2hhbmdlICh7IGxoczsgbWFpbjsgcmhzID0gb2xkX3JoczsgXyB9IGFzIGpvaW4pIC0+XG4gICAgbGV0IHJocyA9IE5vZGUudmFsdWVfZXhuIGxocyBpblxuICAgIGpvaW4ucmhzIDwtIFVvcHQuc29tZSByaHM7XG4gICAgKCogc2VlIHRoZSBjb21tZW50IGluIEJpbmRfbGhzX2NoYW5nZSAqKVxuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGNoYW5nZV9jaGlsZFxuICAgICAgfnBhcmVudDptYWluXG4gICAgICB+b2xkX2NoaWxkOm9sZF9yaHNcbiAgICAgIH5uZXdfY2hpbGQ6cmhzXG4gICAgICB+Y2hpbGRfaW5kZXg6S2luZC5qb2luX3Joc19jaGlsZF9pbmRleDtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IEpvaW5fbWFpbiB7IHJoczsgXyB9IC0+IGNvcHlfY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZDooVW9wdC52YWx1ZV9leG4gcmhzKVxuICB8IE1hcCAoZiwgbjEpIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChmIChOb2RlLnZhbHVlX2V4biBuMSkpXG4gIHwgU25hcHNob3QgeyBhdDsgYmVmb3JlOyBjbG9jazsgXyB9IC0+XG4gICAgKCogSXQgaXMgYSBidWcgaWYgd2UgdHJ5IHRvIGNvbXB1dGUgYSBbU25hcHNob3RdIGFuZCB0aGUgYWxhcm0gc2hvdWxkIGhhdmUgZmlyZWQuXG4gICAgICAgW2FkdmFuY2VfY2xvY2tdIHdhcyBzdXBwb3NlZCB0byBjb252ZXJ0IGl0IHRvIGEgW0ZyZWV6ZV0gYXQgdGhlIGFwcHJvcHJpYXRlXG4gICAgICAgdGltZS4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVGltZV9ucy4oID4gKSBhdCAobm93IGNsb2NrKSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgYmVmb3JlXG4gIHwgU3RlcF9mdW5jdGlvbiAoeyBjaGlsZDsgY2xvY2s7IF8gfSBhcyBzdGVwX2Z1bmN0aW9uX25vZGUpIC0+XG4gICAgaWYgVW9wdC5pc19zb21lIGNoaWxkXG4gICAgdGhlbiAoXG4gICAgICBsZXQgY2hpbGQgPSBVb3B0LnZhbHVlX2V4biBjaGlsZCBpblxuICAgICAgaWYgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZVxuICAgICAgICAgICBjaGlsZC5jaGFuZ2VkX2F0XG4gICAgICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5leHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0XG4gICAgICAgICA+IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdCA8LSBjaGlsZC5jaGFuZ2VkX2F0O1xuICAgICAgICByZW1vdmVfYWxhcm0gY2xvY2sgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtO1xuICAgICAgICBsZXQgc3RlcF9mdW5jdGlvbiA9IE5vZGUudmFsdWVfZXhuIGNoaWxkIGluXG4gICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS52YWx1ZSA8LSBVb3B0LnNvbWUgKFN0ZXBfZnVuY3Rpb24uaW5pdCBzdGVwX2Z1bmN0aW9uKTtcbiAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLnVwY29taW5nX3N0ZXBzIDwtIFN0ZXBfZnVuY3Rpb24uc3RlcHMgc3RlcF9mdW5jdGlvbjtcbiAgICAgICAgKCogSWYgdGhlIGNoaWxkIGlzIGEgY29uc3RhbnQsIHdlIGRyb3Agb3VyIHJlZmVyZW5jZSB0byBpdCwgdG8gYXZvaWQgaG9sZGluZyBvbiB0b1xuICAgICAgICAgICB0aGUgZW50aXJlIHN0ZXAgZnVuY3Rpb24uICopXG4gICAgICAgIGlmIE5vZGUuaXNfY29uc3QgY2hpbGRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgcmVtb3ZlX2NoaWxkcmVuIG5vZGU7XG4gICAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmNoaWxkIDwtIFVvcHQubm9uZTtcbiAgICAgICAgICBzZXRfaGVpZ2h0IG5vZGUgKFNjb3BlLmhlaWdodCBub2RlLmNyZWF0ZWRfaW4gKyAxKSkpKTtcbiAgICBTdGVwX2Z1bmN0aW9uX25vZGUuYWR2YW5jZSBzdGVwX2Z1bmN0aW9uX25vZGUgfnRvXzoobm93IGNsb2NrKTtcbiAgICBsZXQgc3RlcF9mdW5jdGlvbl92YWx1ZSA9IFVvcHQudmFsdWVfZXhuIHN0ZXBfZnVuY3Rpb25fbm9kZS52YWx1ZSBpblxuICAgIChtYXRjaCBTZXF1ZW5jZS5oZCBzdGVwX2Z1bmN0aW9uX25vZGUudXBjb21pbmdfc3RlcHMgd2l0aFxuICAgICB8IE5vbmUgLT4gaWYgVW9wdC5pc19ub25lIGNoaWxkIHRoZW4gTm9kZS5zZXRfa2luZCBub2RlIChDb25zdCBzdGVwX2Z1bmN0aW9uX3ZhbHVlKVxuICAgICB8IFNvbWUgKGF0LCBfKSAtPlxuICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5hbGFybSA8LSBhZGRfYWxhcm0gY2xvY2sgfmF0IHN0ZXBfZnVuY3Rpb25fbm9kZS5hbGFybV92YWx1ZSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgc3RlcF9mdW5jdGlvbl92YWx1ZVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHUgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKFVub3JkZXJlZF9hcnJheV9mb2xkLmNvbXB1dGUgdSlcbiAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICB8IFZhciB2YXIgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgdmFyLnZhbHVlXG4gIHwgTWFwMiAoZiwgbjEsIG4yKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChmIChOb2RlLnZhbHVlX2V4biBuMSkgKE5vZGUudmFsdWVfZXhuIG4yKSlcbiAgfCBNYXAzIChmLCBuMSwgbjIsIG4zKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSAoTm9kZS52YWx1ZV9leG4gbjIpIChOb2RlLnZhbHVlX2V4biBuMykpXG4gIHwgTWFwNCAoZiwgbjEsIG4yLCBuMywgbjQpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZiAoTm9kZS52YWx1ZV9leG4gbjEpIChOb2RlLnZhbHVlX2V4biBuMikgKE5vZGUudmFsdWVfZXhuIG4zKSAoTm9kZS52YWx1ZV9leG4gbjQpKVxuICB8IE1hcDUgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpKVxuICB8IE1hcDYgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KSlcbiAgfCBNYXA3IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNykgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpKVxuICB8IE1hcDggKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpKVxuICB8IE1hcDkgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjkpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KSlcbiAgfCBNYXAxMCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApKVxuICB8IE1hcDExIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSkpXG4gIHwgTWFwMTIgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKSlcbiAgfCBNYXAxMyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTMpKVxuICB8IE1hcDE0IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEzKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xNCkpXG4gIHwgTWFwMTUgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0LCBuMTUpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjE1KSlcbiAgfCBFeHBlcnQgZXhwZXJ0IC0+XG4gICAgKG1hdGNoIEV4cGVydC5iZWZvcmVfbWFpbl9jb21wdXRhdGlvbiBleHBlcnQgd2l0aFxuICAgICB8IGBJbnZhbGlkIC0+XG4gICAgICAgaW52YWxpZGF0ZV9ub2RlIG5vZGU7XG4gICAgICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgdFxuICAgICB8IGBPayAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoZXhwZXJ0LmYgKCkpKVxuXG5hbmQgY29weV9jaGlsZCA6IHR5cGUgYS4gcGFyZW50OmEgTm9kZS50IC0+IGNoaWxkOmEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gfnBhcmVudCB+Y2hpbGQgLT5cbiAgaWYgTm9kZS5pc192YWxpZCBjaGlsZFxuICB0aGVuIG1heWJlX2NoYW5nZV92YWx1ZSBwYXJlbnQgKE5vZGUudmFsdWVfZXhuIGNoaWxkKVxuICBlbHNlIChcbiAgICBpbnZhbGlkYXRlX25vZGUgcGFyZW50O1xuICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHBhcmVudC5zdGF0ZSlcblxuYW5kIG1heWJlX2NoYW5nZV92YWx1ZSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gYSAtPiB1bml0ID1cbiAgZnVuIG5vZGUgbmV3X3ZhbHVlIC0+XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICBsZXQgb2xkX3ZhbHVlX29wdCA9IG5vZGUudmFsdWVfb3B0IGluXG4gIGlmIFVvcHQuaXNfbm9uZSBvbGRfdmFsdWVfb3B0XG4gIHx8IG5vdFxuICAgICAgIChDdXRvZmYuc2hvdWxkX2N1dG9mZlxuICAgICAgICAgIG5vZGUuY3V0b2ZmXG4gICAgICAgICAgfm9sZF92YWx1ZTooVW9wdC51bnNhZmVfdmFsdWUgb2xkX3ZhbHVlX29wdClcbiAgICAgICAgICB+bmV3X3ZhbHVlKVxuICB0aGVuIChcbiAgICBub2RlLnZhbHVlX29wdCA8LSBVb3B0LnNvbWUgbmV3X3ZhbHVlO1xuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIHQubnVtX25vZGVzX2NoYW5nZWQgPC0gdC5udW1fbm9kZXNfY2hhbmdlZCArIDE7XG4gICAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgbm9kZS5vbGRfdmFsdWVfb3B0IDwtIG9sZF92YWx1ZV9vcHQ7XG4gICAgICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBub2RlKTtcbiAgICBpZiBub2RlLm51bV9wYXJlbnRzID49IDFcbiAgICB0aGVuIChcbiAgICAgIGZvciBwYXJlbnRfaW5kZXggPSAxIHRvIG5vZGUubnVtX3BhcmVudHMgLSAxIGRvXG4gICAgICAgIGxldCAoVCBwYXJlbnQpID1cbiAgICAgICAgICBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgbm9kZS5wYXJlbnQxX2FuZF9iZXlvbmQgKHBhcmVudF9pbmRleCAtIDEpKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICAgICAgICAgfCBFeHBlcnQgZXhwZXJ0IC0+XG4gICAgICAgICAgIGxldCBjaGlsZF9pbmRleCA9IG5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpIGluXG4gICAgICAgICAgIEV4cGVydC5ydW5fZWRnZV9jYWxsYmFjayB+Y2hpbGRfaW5kZXggZXhwZXJ0XG4gICAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHUgLT5cbiAgICAgICAgICAgVW5vcmRlcmVkX2FycmF5X2ZvbGQuY2hpbGRfY2hhbmdlZFxuICAgICAgICAgICAgIHVcbiAgICAgICAgICAgICB+Y2hpbGQ6bm9kZVxuICAgICAgICAgICAgIH5jaGlsZF9pbmRleDpub2RlLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KVxuICAgICAgICAgICAgIH5vbGRfdmFsdWVfb3B0XG4gICAgICAgICAgICAgfm5ld192YWx1ZVxuICAgICAgICAgfCBfIC0+ICgpKTtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgcGFyZW50KTtcbiAgICAgICAgKCogV2UgZG9uJ3QgZG8gdGhlIFtjYW5fcmVjb21wdXRlX25vd10gb3B0aW1pemF0aW9uLiAgU2luY2UgbW9zdCBub2RlcyBvbmx5IGhhdmVcbiAgICAgICAgICAgb25lIHBhcmVudCwgaXQgaXMgbm90IHByb2JhYmx5IG5vdCBhIGJpZyBsb3NzLiAgSWYgd2UgZGlkIGl0IGFueXdheSwgd2UnZFxuICAgICAgICAgICBoYXZlIHRvIGJlIGNhcmVmdWwsIGJlY2F1c2Ugd2hpbGUgd2UgaXRlcmF0ZSBvdmVyIHRoZSBsaXN0IG9mIHBhcmVudHMsIHdlXG4gICAgICAgICAgIHdvdWxkIGV4ZWN1dGUgdGhlbSwgYW5kIGluIHBhcnRpY3VsYXIgd2UgY2FuIGV4ZWN1dGUgbGhzLWNoYW5nZSBub2RlcyB3aG8gY2FuXG4gICAgICAgICAgIGNoYW5nZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBsaXN0IG9mIHBhcmVudHMgd2UgaXRlcmF0ZSBvbi4gIFRoaW5rIGFib3V0OlxuXG4gICAgICAgICAgIHtbXG4gICAgICAgICAgICAgbGhzID4+PSBmdW4gYiAtPiBpZiBiIHRoZW4gbGhzID4+fCBGbi5pZCBlbHNlIGNvbnN0IGJcbiAgICAgICAgICAgXX1cblxuICAgICAgICAgICBJZiB0aGUgb3B0aW1pemF0aW9uIGtpY2tzIGluIHdoZW4gd2UgcHJvcGFnYXRlIGNoYW5nZSB0byB0aGUgcGFyZW50cyBvZiBbbGhzXVxuICAgICAgICAgICAod2hpY2ggY2hhbmdlcyBmcm9tIFt0cnVlXSB0byBbZmFsc2VdKSwgd2UgY291bGQgZXhlY3V0ZSB0aGUgW2xocy1jaGFuZ2VdXG4gICAgICAgICAgIGZpcnN0LCB3aGljaCB3b3VsZCBtYWtlIGRpc2Nvbm5lY3QgdGhlIFttYXBdIG5vZGUgZnJvbSBbbGhzXS4gIEFuZCB0aGVuIHdlXG4gICAgICAgICAgIHdvdWxkIGV4ZWN1dGUgdGhlIHNlY29uZCBjaGlsZCBvZiB0aGUgW2xoc10sIHdoaWNoIGRvZXNuJ3QgZXhpc3QgYW55bW9yZSBhbmRcbiAgICAgICAgICAgaW5jcmVtZW50YWwgd291bGQgc2VnZmF1bHQgKHRoZXJlIG1heSBiZSBhIGxlc3MgbmFpdmUgd2F5IG9mIG1ha2luZyB0aGlzIHdvcmtcbiAgICAgICAgICAgdGhvdWdoKS4gKilcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudClcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBwYXJlbnRcbiAgICAgIGRvbmU7XG4gICAgICBsZXQgKFQgcGFyZW50KSA9IFVvcHQudmFsdWVfZXhuIG5vZGUucGFyZW50MCBpblxuICAgICAgKG1hdGNoIHBhcmVudC5raW5kIHdpdGhcbiAgICAgICB8IEV4cGVydCBwIC0+XG4gICAgICAgICBsZXQgY2hpbGRfaW5kZXggPSBub2RlLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oMCkgaW5cbiAgICAgICAgIEV4cGVydC5ydW5fZWRnZV9jYWxsYmFjayB+Y2hpbGRfaW5kZXggcFxuICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPlxuICAgICAgICAgVW5vcmRlcmVkX2FycmF5X2ZvbGQuY2hpbGRfY2hhbmdlZFxuICAgICAgICAgICB1XG4gICAgICAgICAgIH5jaGlsZDpub2RlXG4gICAgICAgICAgIH5jaGlsZF9pbmRleDpub2RlLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oMClcbiAgICAgICAgICAgfm9sZF92YWx1ZV9vcHRcbiAgICAgICAgICAgfm5ld192YWx1ZVxuICAgICAgIHwgXyAtPiAoKSk7XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBwYXJlbnQpO1xuICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudClcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgY2FuX3JlY29tcHV0ZV9ub3cgPVxuICAgICAgICAgIG1hdGNoIHBhcmVudC5raW5kIHdpdGhcbiAgICAgICAgICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgKCogVGhlc2Ugbm9kZXMgYXJlbid0IHBhcmVudHMuICopXG4gICAgICAgICAgfCBBdCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgQXRfaW50ZXJ2YWxzIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBDb25zdCBfIHwgSW52YWxpZCB8IFNuYXBzaG90IF8gfCBWYXIgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAoKiBUaGVzZSBub2RlcyBoYXZlIG1vcmUgdGhhbiBvbmUgY2hpbGQuICopXG4gICAgICAgICAgfCBBcnJheV9mb2xkIF9cbiAgICAgICAgICB8IE1hcDIgX1xuICAgICAgICAgIHwgTWFwMyBfXG4gICAgICAgICAgfCBNYXA0IF9cbiAgICAgICAgICB8IE1hcDUgX1xuICAgICAgICAgIHwgTWFwNiBfXG4gICAgICAgICAgfCBNYXA3IF9cbiAgICAgICAgICB8IE1hcDggX1xuICAgICAgICAgIHwgTWFwOSBfXG4gICAgICAgICAgfCBNYXAxMCBfXG4gICAgICAgICAgfCBNYXAxMSBfXG4gICAgICAgICAgfCBNYXAxMiBfXG4gICAgICAgICAgfCBNYXAxMyBfXG4gICAgICAgICAgfCBNYXAxNCBfXG4gICAgICAgICAgfCBNYXAxNSBfXG4gICAgICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfXG4gICAgICAgICAgfCBFeHBlcnQgXyAtPiBmYWxzZVxuICAgICAgICAgICgqIFdlIGNhbiBpbW1lZGlhdGVseSByZWNvbXB1dGUgW3BhcmVudF0gaWYgbm8gb3RoZXIgbm9kZSBuZWVkcyB0byBiZSBzdGFibGVcbiAgICAgICAgICAgICBiZWZvcmUgY29tcHV0aW5nIGl0LiAgSWYgW3BhcmVudF0gaGFzIGEgc2luZ2xlIGNoaWxkIChpLmUuIFtub2RlXSksIHRoZW5cbiAgICAgICAgICAgICB0aGlzIGFtb3VudHMgdG8gY2hlY2tpbmcgdGhhdCBbcGFyZW50XSB3b24ndCBiZSBpbnZhbGlkYXRlZCwgaS5lLiB0aGF0XG4gICAgICAgICAgICAgW3BhcmVudF0ncyBzY29wZSBoYXMgYWxyZWFkeSBzdGFiaWxpemVkLiAqKVxuICAgICAgICAgIHwgQmluZF9saHNfY2hhbmdlIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IEZyZWV6ZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgTWFwIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IFN0ZXBfZnVuY3Rpb24gXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgICgqIEZvciB0aGVzZSwgd2UgbmVlZCB0byBjaGVjayB0aGF0IHRoZSBcIl9jaGFuZ2VcIiBjaGlsZCBoYXMgYWxyZWFkeSBiZWVuXG4gICAgICAgICAgICAgZXZhbHVhdGVkIChpZiBuZWVkZWQpLiAgSWYgc28sIHRoaXMgYWxzbyBpbXBsaWVzOlxuXG4gICAgICAgICAgICAge1tcbiAgICAgICAgICAgICAgIG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgICAgXX0gKilcbiAgICAgICAgICB8IEJpbmRfbWFpbiBiIC0+IG5vZGUuaGVpZ2h0ID4gYi5saHNfY2hhbmdlLmhlaWdodFxuICAgICAgICAgIHwgSWZfdGhlbl9lbHNlIGkgLT4gbm9kZS5oZWlnaHQgPiBpLnRlc3RfY2hhbmdlLmhlaWdodFxuICAgICAgICAgIHwgSm9pbl9tYWluIGogLT4gbm9kZS5oZWlnaHQgPiBqLmxoc19jaGFuZ2UuaGVpZ2h0XG4gICAgICAgIGluXG4gICAgICAgIGlmIGNhbl9yZWNvbXB1dGVfbm93XG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGRcbiAgICAgICAgICA8LSB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkICsgMTtcbiAgICAgICAgICByZWNvbXB1dGUgcGFyZW50KVxuICAgICAgICBlbHNlIGlmIHBhcmVudC5oZWlnaHQgPD0gUmVjb21wdXRlX2hlYXAubWluX2hlaWdodCB0LnJlY29tcHV0ZV9oZWFwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIElmIFtwYXJlbnQuaGVpZ2h0XSBpcyBbPD1dIHRoZSBoZWlnaHQgb2YgYWxsIG5vZGVzIGluIHRoZSByZWNvbXB1dGUgaGVhcFxuICAgICAgICAgICAgIChwb3NzaWJseSBiZWNhdXNlIHRoZSByZWNvbXB1dGUgaGVhcCBpcyBlbXB0eSksIHRoZW4gd2UgY2FuIHJlY29tcHV0ZVxuICAgICAgICAgICAgIFtwYXJlbnRdIGltbWVkaWF0ZWx5IGFuZCBzYXZlIGFkZGluZyBpdCB0byBhbmQgdGhlbiByZW1vdmluZyBpdCBmcm9tIHRoZVxuICAgICAgICAgICAgIHJlY29tcHV0ZSBoZWFwLiAqKVxuICAgICAgICAgIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0XG4gICAgICAgICAgPC0gdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQgKyAxO1xuICAgICAgICAgIHJlY29tcHV0ZSBwYXJlbnQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIHBhcmVudCk7XG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBwYXJlbnQpKTtcbiAgICAgICAgICBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBwYXJlbnQpKSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGludmFyaWFudCB0XG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHJlY29tcHV0ZV9maXJzdF9ub2RlX3RoYXRfaXNfbmVjZXNzYXJ5IHIgPVxuICBsZXQgKFQgbm9kZSkgPSBSZWNvbXB1dGVfaGVhcC5yZW1vdmVfbWluIHIgaW5cbiAgaWYgZGVidWcgJiYgbm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwibm9kZSB1bmV4cGVjdGVkbHkgZG9lcyBub3QgbmVlZCB0byBiZSBjb21wdXRlZFwiXG4gICAgICBub2RlXG4gICAgICBbJXNleHBfb2Y6IF8gTm9kZS50XTtcbiAgcmVjb21wdXRlIG5vZGVcbjs7XG5cbmxldCB1bmxpbmtfZGlzYWxsb3dlZF9vYnNlcnZlcnMgdCA9XG4gIHdoaWxlIFN0YWNrLmxlbmd0aCB0LmRpc2FsbG93ZWRfb2JzZXJ2ZXJzID4gMCBkb1xuICAgIGxldCBwYWNrZWQgPSBTdGFjay5wb3BfZXhuIHQuZGlzYWxsb3dlZF9vYnNlcnZlcnMgaW5cbiAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gcGFja2VkIGluXG4gICAgaWYgZGVidWdcbiAgICB0aGVuXG4gICAgICBhc3NlcnQgKFxuICAgICAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRGlzYWxsb3dlZCAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZSk7XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgPC0gVW5saW5rZWQ7XG4gICAgbGV0IChUIGFsbF9vYnNlcnZlcnMpID0gVW9wdC52YWx1ZV9leG4gdC5hbGxfb2JzZXJ2ZXJzIGluXG4gICAgaWYgSW50ZXJuYWxfb2JzZXJ2ZXIuc2FtZSBpbnRlcm5hbF9vYnNlcnZlciBhbGxfb2JzZXJ2ZXJzXG4gICAgdGhlbiB0LmFsbF9vYnNlcnZlcnMgPC0gaW50ZXJuYWxfb2JzZXJ2ZXIubmV4dF9pbl9hbGw7XG4gICAgSW50ZXJuYWxfb2JzZXJ2ZXIudW5saW5rIGludGVybmFsX29ic2VydmVyO1xuICAgIGNoZWNrX2lmX3VubmVjZXNzYXJ5IGludGVybmFsX29ic2VydmVyLm9ic2VydmluZ1xuICBkb25lXG47O1xuXG5sZXQgZGlzYWxsb3dfZnV0dXJlX3VzZSBpbnRlcm5hbF9vYnNlcnZlciA9XG4gIGxldCB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIuaW5jcl9zdGF0ZSBpbnRlcm5hbF9vYnNlcnZlciBpblxuICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+ICgpXG4gIHwgQ3JlYXRlZCAtPlxuICAgIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgPC0gdC5udW1fYWN0aXZlX29ic2VydmVycyAtIDE7XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgPC0gVW5saW5rZWQ7XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2hhbmRsZXJzIDwtIFtdXG4gIHwgSW5fdXNlIC0+XG4gICAgdC5udW1fYWN0aXZlX29ic2VydmVycyA8LSB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIC0gMTtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBEaXNhbGxvd2VkO1xuICAgIFN0YWNrLnB1c2ggdC5kaXNhbGxvd2VkX29ic2VydmVycyAoVCBpbnRlcm5hbF9vYnNlcnZlcilcbjs7XG5cbmxldCBkaXNhbGxvd19maW5hbGl6ZWRfb2JzZXJ2ZXJzIHQgPVxuICB3aGlsZSBUaHJlYWRfc2FmZV9xdWV1ZS5sZW5ndGggdC5maW5hbGl6ZWRfb2JzZXJ2ZXJzID4gMCBkb1xuICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biB0LmZpbmFsaXplZF9vYnNlcnZlcnMgaW5cbiAgICBpZiBMaXN0LmlzX2VtcHR5IGludGVybmFsX29ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVyc1xuICAgIHRoZW4gZGlzYWxsb3dfZnV0dXJlX3VzZSBpbnRlcm5hbF9vYnNlcnZlclxuICBkb25lXG47O1xuXG5sZXQgb2JzZXJ2ZXJfZmluYWxpemVyIHQgPVxuICBzdGFnZSAoZnVuIG9ic2VydmVyIC0+XG4gICAgbGV0IGludGVybmFsX29ic2VydmVyID0gIW9ic2VydmVyIGluXG4gICAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LmZpbmFsaXplZF9vYnNlcnZlcnMgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpKVxuOztcblxubGV0IGNyZWF0ZV9vYnNlcnZlciA/KHNob3VsZF9maW5hbGl6ZSA9IHRydWUpIChvYnNlcnZpbmcgOiBfIE5vZGUudCkgPVxuICBsZXQgdCA9IG9ic2VydmluZy5zdGF0ZSBpblxuICBsZXQgaW50ZXJuYWxfb2JzZXJ2ZXIgOiBfIEludGVybmFsX29ic2VydmVyLnQgPVxuICAgIHsgc3RhdGUgPSBDcmVhdGVkXG4gICAgOyBvYnNlcnZpbmdcbiAgICA7IG9uX3VwZGF0ZV9oYW5kbGVycyA9IFtdXG4gICAgOyBwcmV2X2luX2FsbCA9IFVvcHQubm9uZVxuICAgIDsgbmV4dF9pbl9hbGwgPSBVb3B0Lm5vbmVcbiAgICA7IHByZXZfaW5fb2JzZXJ2aW5nID0gVW9wdC5ub25lXG4gICAgOyBuZXh0X2luX29ic2VydmluZyA9IFVvcHQubm9uZVxuICAgIH1cbiAgaW5cbiAgU3RhY2sucHVzaCB0Lm5ld19vYnNlcnZlcnMgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpO1xuICBsZXQgb2JzZXJ2ZXIgPSByZWYgaW50ZXJuYWxfb2JzZXJ2ZXIgaW5cbiAgaWYgc2hvdWxkX2ZpbmFsaXplXG4gIHRoZW4gR2MuRXhwZXJ0LmFkZF9maW5hbGl6ZXJfZXhuIG9ic2VydmVyICh1bnN0YWdlIChvYnNlcnZlcl9maW5hbGl6ZXIgdCkpO1xuICB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIDwtIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgKyAxO1xuICBvYnNlcnZlclxuOztcblxubGV0IGFkZF9uZXdfb2JzZXJ2ZXJzIHQgPVxuICB3aGlsZSBTdGFjay5sZW5ndGggdC5uZXdfb2JzZXJ2ZXJzID4gMCBkb1xuICAgIGxldCBwYWNrZWQgPSBTdGFjay5wb3BfZXhuIHQubmV3X29ic2VydmVycyBpblxuICAgIGxldCBtb2R1bGUgUGFja2VkID0gSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkIGluXG4gICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBVbmxpbmtlZCAtPiAoKVxuICAgIHwgQ3JlYXRlZCAtPlxuICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgPC0gSW5fdXNlO1xuICAgICAgbGV0IG9sZF9hbGxfb2JzZXJ2ZXJzID0gdC5hbGxfb2JzZXJ2ZXJzIGluXG4gICAgICBpZiBVb3B0LmlzX3NvbWUgb2xkX2FsbF9vYnNlcnZlcnNcbiAgICAgIHRoZW4gKFxuICAgICAgICBpbnRlcm5hbF9vYnNlcnZlci5uZXh0X2luX2FsbCA8LSBvbGRfYWxsX29ic2VydmVycztcbiAgICAgICAgUGFja2VkLnNldF9wcmV2X2luX2FsbCAoVW9wdC51bnNhZmVfdmFsdWUgb2xkX2FsbF9vYnNlcnZlcnMpIChVb3B0LnNvbWUgcGFja2VkKSk7XG4gICAgICB0LmFsbF9vYnNlcnZlcnMgPC0gVW9wdC5zb21lIHBhY2tlZDtcbiAgICAgIGxldCBvYnNlcnZpbmcgPSBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgaW5cbiAgICAgIGxldCB3YXNfbmVjZXNzYXJ5ID0gTm9kZS5pc19uZWNlc3Nhcnkgb2JzZXJ2aW5nIGluXG4gICAgICBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc1xuICAgICAgPC0gb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnNcbiAgICAgICAgICsgTGlzdC5sZW5ndGggaW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2hhbmRsZXJzO1xuICAgICAgbGV0IG9sZF9vYnNlcnZlcnMgPSBvYnNlcnZpbmcub2JzZXJ2ZXJzIGluXG4gICAgICBpZiBVb3B0LmlzX3NvbWUgb2xkX29ic2VydmVyc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGludGVybmFsX29ic2VydmVyLm5leHRfaW5fb2JzZXJ2aW5nIDwtIG9sZF9vYnNlcnZlcnM7XG4gICAgICAgIChVb3B0LnVuc2FmZV92YWx1ZSBvbGRfb2JzZXJ2ZXJzKS5wcmV2X2luX29ic2VydmluZyA8LSBVb3B0LnNvbWUgaW50ZXJuYWxfb2JzZXJ2ZXIpO1xuICAgICAgb2JzZXJ2aW5nLm9ic2VydmVycyA8LSBVb3B0LnNvbWUgaW50ZXJuYWxfb2JzZXJ2ZXI7XG4gICAgICAoKiBCeSBhZGRpbmcgW2ludGVybmFsX29ic2VydmVyXSB0byBbb2JzZXJ2aW5nLm9ic2VydmVyc10sIHdlIG1heSBoYXZlIGFkZGVkXG4gICAgICAgICBvbi11cGRhdGUgaGFuZGxlcnMgdG8gW29ic2VydmluZ10uICBXZSBuZWVkIHRvIGhhbmRsZSBbb2JzZXJ2aW5nXSBhZnRlciB0aGlzXG4gICAgICAgICBzdGFiaWxpemF0aW9uIHRvIGdpdmUgdGhvc2UgaGFuZGxlcnMgYSBjaGFuY2UgdG8gcnVuLiAqKVxuICAgICAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gb2JzZXJ2aW5nO1xuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IG9ic2VydmluZyk7XG4gICAgICBpZiBub3Qgd2FzX25lY2Vzc2FyeSB0aGVuIGJlY2FtZV9uZWNlc3Nhcnkgb2JzZXJ2aW5nXG4gIGRvbmVcbjs7XG5cbmxldCBvYnNlcnZlcl92YWx1ZV9leG4gb2JzZXJ2ZXIgPVxuICBsZXQgdCA9IE9ic2VydmVyLmluY3Jfc3RhdGUgb2JzZXJ2ZXIgaW5cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IE5vdF9zdGFiaWxpemluZyB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIC0+IE9ic2VydmVyLnZhbHVlX2V4biBvYnNlcnZlclxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgUmFpc2VkX2V4bi5yZXJhaXNlX3dpdGhfbWVzc2FnZVxuICAgICAgcmFpc2VkX2V4blxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGFmdGVyIHN0YWJpbGl6ZSBwcmV2aW91c2x5IHJhaXNlZFwiXG4gIHwgU3RhYmlsaXppbmcgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCBkdXJpbmcgc3RhYmlsaXphdGlvblwiXG4gICAgICBvYnNlcnZlclxuICAgICAgWyVzZXhwX29mOiBfIE9ic2VydmVyLnRdXG47O1xuXG5sZXQgb2JzZXJ2ZXJfdmFsdWUgb2JzZXJ2ZXIgPVxuICB0cnkgT2sgKG9ic2VydmVyX3ZhbHVlX2V4biBvYnNlcnZlcikgd2l0aFxuICB8IGV4biAtPiBFcnJvciAoRXJyb3Iub2ZfZXhuIGV4bilcbjs7XG5cbmxldCBub2RlX29uX3VwZGF0ZSAodHlwZSBhKSAobm9kZSA6IGEgTm9kZS50KSB+ZiA9XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICBOb2RlLm9uX3VwZGF0ZSBub2RlIChPbl91cGRhdGVfaGFuZGxlci5jcmVhdGUgZiB+YXQ6dC5zdGFiaWxpemF0aW9uX251bSk7XG4gIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGVcbjs7XG5cbmxldCBvYnNlcnZlcl9vbl91cGRhdGVfZXhuIG9ic2VydmVyIH5mID1cbiAgbGV0IHQgPSBPYnNlcnZlci5pbmNyX3N0YXRlIG9ic2VydmVyIGluXG4gIE9ic2VydmVyLm9uX3VwZGF0ZV9leG4gb2JzZXJ2ZXIgKE9uX3VwZGF0ZV9oYW5kbGVyLmNyZWF0ZSBmIH5hdDp0LnN0YWJpbGl6YXRpb25fbnVtKTtcbiAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gKE9ic2VydmVyLm9ic2VydmluZyBvYnNlcnZlcilcbjs7XG5cbmxldCBzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyB2YXIgdmFsdWUgPVxuICBsZXQgdCA9IFZhci5pbmNyX3N0YXRlIHZhciBpblxuICB0Lm51bV92YXJfc2V0cyA8LSB0Lm51bV92YXJfc2V0cyArIDE7XG4gIHZhci52YWx1ZSA8LSB2YWx1ZTtcbiAgaWYgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSB2YXIuc2V0X2F0IHQuc3RhYmlsaXphdGlvbl9udW0gPCAwXG4gIHRoZW4gKFxuICAgIHZhci5zZXRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBsZXQgd2F0Y2ggPSB2YXIud2F0Y2ggaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19zdGFsZSB3YXRjaCk7XG4gICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgd2F0Y2ggJiYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHdhdGNoKVxuICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgd2F0Y2gpXG47O1xuXG5sZXQgc2V0X3ZhciB2YXIgdmFsdWUgPVxuICBsZXQgdCA9IFZhci5pbmNyX3N0YXRlIHZhciBpblxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBOb3Rfc3RhYmlsaXppbmcgLT5cbiAgICBzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyB2YXIgdmFsdWVcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIFJhaXNlZF9leG4ucmVyYWlzZV93aXRoX21lc3NhZ2VcbiAgICAgIHJhaXNlZF9leG5cbiAgICAgIFwiY2Fubm90IHNldCB2YXIgLS0gc3RhYmlsaXphdGlvbiBwcmV2aW91c2x5IHJhaXNlZFwiXG4gIHwgU3RhYmlsaXppbmcgLT5cbiAgICBpZiBVb3B0LmlzX25vbmUgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvblxuICAgIHRoZW4gU3RhY2sucHVzaCB0LnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiAoVCB2YXIpO1xuICAgIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gPC0gVW9wdC5zb21lIHZhbHVlXG47O1xuXG5sZXQgcmVjbGFpbV9zcGFjZV9pbl93ZWFrX2hhc2h0YmxzIHQgPVxuICB3aGlsZSBUaHJlYWRfc2FmZV9xdWV1ZS5sZW5ndGggdC53ZWFrX2hhc2h0YmxzID4gMCBkb1xuICAgIGxldCAoVCB3ZWFrX2hhc2h0YmwpID0gVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gdC53ZWFrX2hhc2h0YmxzIGluXG4gICAgV2Vha19oYXNodGJsLnJlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YSB3ZWFrX2hhc2h0YmxcbiAgZG9uZVxuOztcblxubGV0IHN0YWJpbGl6ZV9zdGFydCB0ID1cbiAgdC5zdGF0dXMgPC0gU3RhYmlsaXppbmc7XG4gIGRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMgdDtcbiAgKCogSnVzdCBsaWtlIGZvciBiaW5kcywgd2UgYWRkIG5ldyBvYnNlcnZlcnMgYmVmb3JlIHJlbW92aW5nIGRpc2FsbG93ZWQgb2JzZXJ2ZXJzIHRvXG4gICAgIHBvdGVudGlhbGx5IGF2b2lkIHN3aXRjaGluZyB0aGUgb2JzZXJ2YWJpbGl0eSBvZiBzb21lIG5vZGVzIGJhY2sgYW5kIGZvcnRoLiAqKVxuICBhZGRfbmV3X29ic2VydmVycyB0O1xuICB1bmxpbmtfZGlzYWxsb3dlZF9vYnNlcnZlcnMgdDtcbiAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdFxuOztcblxubGV0IHN0YWJpbGl6ZV9lbmQgdCA9XG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIHQub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlIDwtIE5vbmU7XG4gICAgdC5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA8LSBbXSk7XG4gICgqIFdlIGluY3JlbWVudCBbdC5zdGFiaWxpemF0aW9uX251bV0gYmVmb3JlIGhhbmRsaW5nIHZhcmlhYmxlcyBzZXQgZHVyaW5nXG4gICAgIHN0YWJpbGl6YXRpb24sIHNvIHRoYXQgdGhleSBhcmUgdHJlYXRlZCBhcyBzZXQgZHVyaW5nIHRoZSBuZXcgc3RhYmlsaXphdGlvbiBjeWNsZS5cbiAgICAgQWxzbywgd2UgaW5jcmVtZW50IGJlZm9yZSBydW5uaW5nIG9uLXVwZGF0ZSBoYW5kbGVycywgdG8gYXZvaWQgcnVubmluZyBvbiB1cGRhdGVcbiAgICAgaGFuZGxlcnMgY3JlYXRlZCBkdXJpbmcgb24gdXBkYXRlIGhhbmRsZXJzLiAqKVxuICB0LnN0YWJpbGl6YXRpb25fbnVtIDwtIFN0YWJpbGl6YXRpb25fbnVtLmFkZDEgdC5zdGFiaWxpemF0aW9uX251bTtcbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbikgZG9cbiAgICBsZXQgKFQgdmFyKSA9IFN0YWNrLnBvcF9leG4gdC5zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gaW5cbiAgICBsZXQgdmFsdWUgPSBVb3B0LnZhbHVlX2V4biB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIGluXG4gICAgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA8LSBVb3B0Lm5vbmU7XG4gICAgc2V0X3Zhcl93aGlsZV9ub3Rfc3RhYmlsaXppbmcgdmFyIHZhbHVlXG4gIGRvbmU7XG4gIHdoaWxlIG5vdCAoU3RhY2suaXNfZW1wdHkgdC5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbikgZG9cbiAgICBsZXQgKFQgbm9kZSkgPSBTdGFjay5wb3BfZXhuIHQuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gaW5cbiAgICBub2RlLmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDwtIGZhbHNlO1xuICAgIGxldCBvbGRfdmFsdWUgPSBub2RlLm9sZF92YWx1ZV9vcHQgaW5cbiAgICBub2RlLm9sZF92YWx1ZV9vcHQgPC0gVW9wdC5ub25lO1xuICAgIGxldCBub2RlX3VwZGF0ZSA6IF8gTm9kZV91cGRhdGUudCA9XG4gICAgICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgbm9kZSlcbiAgICAgIHRoZW4gSW52YWxpZGF0ZWRcbiAgICAgIGVsc2UgaWYgbm90IChOb2RlLmlzX25lY2Vzc2FyeSBub2RlKVxuICAgICAgdGhlbiBVbm5lY2Vzc2FyeVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXdfdmFsdWUgPSBVb3B0LnZhbHVlX2V4biBub2RlLnZhbHVlX29wdCBpblxuICAgICAgICBpZiBVb3B0LmlzX25vbmUgb2xkX3ZhbHVlXG4gICAgICAgIHRoZW4gTmVjZXNzYXJ5IG5ld192YWx1ZVxuICAgICAgICBlbHNlIENoYW5nZWQgKFVvcHQudW5zYWZlX3ZhbHVlIG9sZF92YWx1ZSwgbmV3X3ZhbHVlKSlcbiAgICBpblxuICAgIFN0YWNrLnB1c2ggdC5ydW5fb25fdXBkYXRlX2hhbmRsZXJzIChUIChub2RlLCBub2RlX3VwZGF0ZSkpXG4gIGRvbmU7XG4gIHQuc3RhdHVzIDwtIFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzO1xuICBsZXQgbm93ID0gdC5zdGFiaWxpemF0aW9uX251bSBpblxuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQucnVuX29uX3VwZGF0ZV9oYW5kbGVycykgZG9cbiAgICBsZXQgKFQgKG5vZGUsIG5vZGVfdXBkYXRlKSkgPSBTdGFjay5wb3BfZXhuIHQucnVuX29uX3VwZGF0ZV9oYW5kbGVycyBpblxuICAgIE5vZGUucnVuX29uX3VwZGF0ZV9oYW5kbGVycyBub2RlIG5vZGVfdXBkYXRlIH5ub3dcbiAgZG9uZTtcbiAgdC5zdGF0dXMgPC0gTm90X3N0YWJpbGl6aW5nO1xuICByZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMgdFxuOztcblxubGV0IHJhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uIHQgZXhuID1cbiAgbGV0IHJhaXNlZCA9IFJhaXNlZF9leG4uY3JlYXRlIGV4biBpblxuICB0LnN0YXR1cyA8LSBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkO1xuICBSYWlzZWRfZXhuLnJlcmFpc2UgcmFpc2VkXG47O1xuXG5sZXQgc3RhYmlsaXplIHQgPVxuICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJzdGFiaWxpemVcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6ZmFsc2U7XG4gIHRyeVxuICAgIHN0YWJpbGl6ZV9zdGFydCB0O1xuICAgIGxldCByID0gdC5yZWNvbXB1dGVfaGVhcCBpblxuICAgIHdoaWxlIFJlY29tcHV0ZV9oZWFwLmxlbmd0aCByID4gMCBkb1xuICAgICAgcmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uZWNlc3NhcnkgclxuICAgIGRvbmU7XG4gICAgc3RhYmlsaXplX2VuZCB0XG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb24gdCBleG5cbjs7XG5cbm1vZHVsZSBTdGVwX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgS2VlcF9nb2luZ1xuICAgIHwgRG9uZVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgdCA6IFN0ZXBfcmVzdWx0LnQgPVxuICB0cnlcbiAgICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgfCBOb3Rfc3RhYmlsaXppbmcgLT5cbiAgICAgIHN0YWJpbGl6ZV9zdGFydCB0O1xuICAgICAgS2VlcF9nb2luZ1xuICAgIHwgU3RhYmlsaXppbmcgLT5cbiAgICAgIGxldCByID0gdC5yZWNvbXB1dGVfaGVhcCBpblxuICAgICAgaWYgUmVjb21wdXRlX2hlYXAubGVuZ3RoIHIgPiAwXG4gICAgICB0aGVuIChcbiAgICAgICAgcmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uZWNlc3NhcnkgcjtcbiAgICAgICAgS2VlcF9nb2luZylcbiAgICAgIGVsc2UgKFxuICAgICAgICBzdGFiaWxpemVfZW5kIHQ7XG4gICAgICAgIERvbmUpXG4gICAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBfIC0+XG4gICAgICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJzdGVwXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOmZhbHNlO1xuICAgICAgYXNzZXJ0IGZhbHNlXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICAobWF0Y2ggdC5zdGF0dXMgd2l0aFxuICAgICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBfIC0+XG4gICAgICAgKCogSWYgc3RhYmlsaXphdGlvbiBoYXMgYWxyZWFkeSByYWlzZWQsIHRoZW4gW2V4bl0gaXMgbWVyZWx5IGEgbm90aWZpY2F0aW9uIG9mIHRoaXNcbiAgICAgICAgICBmYWN0LCByYXRoZXIgdGhhbiB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uIGl0c2VsZi4gIFdlIHNob3VsZCBqdXN0IHByb3BhZ2F0ZSBbZXhuXVxuICAgICAgICAgIGZvcndhcmQ7IGNhbGxpbmcgW3JhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uXSB3b3VsZCBzdG9yZSBbZXhuXSBhcyB0aGUgZXhjZXB0aW9uXG4gICAgICAgICAgdGhhdCBpbml0aWFsbHkgcmFpc2VkIGR1cmluZyBzdGFiaWxpemF0aW9uLiAqKVxuICAgICAgIHJhaXNlIGV4blxuICAgICB8IF8gLT4gcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb24gdCBleG4pXG47O1xuXG5sZXQgY3JlYXRlX25vZGVfaW4gdCBjcmVhdGVkX2luIGtpbmQgPVxuICB0Lm51bV9ub2Rlc19jcmVhdGVkIDwtIHQubnVtX25vZGVzX2NyZWF0ZWQgKyAxO1xuICBOb2RlLmNyZWF0ZSB0IGNyZWF0ZWRfaW4ga2luZFxuOztcblxubGV0IGNyZWF0ZV9ub2RlIHQga2luZCA9IGNyZWF0ZV9ub2RlX2luIHQgdC5jdXJyZW50X3Njb3BlIGtpbmRcbmxldCBjcmVhdGVfbm9kZV90b3AgdCBraW5kID0gY3JlYXRlX25vZGVfaW4gdCBTY29wZS50b3Aga2luZFxuXG5sZXQgY3JlYXRlX3ZhciB0ID8odXNlX2N1cnJlbnRfc2NvcGUgPSBmYWxzZSkgdmFsdWUgPVxuICBsZXQgc2NvcGUgPSBpZiB1c2VfY3VycmVudF9zY29wZSB0aGVuIHQuY3VycmVudF9zY29wZSBlbHNlIFNjb3BlLnRvcCBpblxuICBsZXQgd2F0Y2ggPSBjcmVhdGVfbm9kZV9pbiB0IHNjb3BlIFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IHZhciA9XG4gICAgeyBWYXIudmFsdWVcbiAgICA7IHZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA9IFVvcHQubm9uZVxuICAgIDsgc2V0X2F0ID0gdC5zdGFiaWxpemF0aW9uX251bVxuICAgIDsgd2F0Y2hcbiAgICB9XG4gIGluXG4gIE5vZGUuc2V0X2tpbmQgd2F0Y2ggKFZhciB2YXIpO1xuICB2YXJcbjs7XG5cbigqIEEgW2NvbnN0XSB2YWx1ZSBjb3VsZCBjb21lIGZyb20gdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiBhbiBvdXRlciBiaW5kLiAgU28sIHdlIGNyZWF0ZSBhXG4gICBbY29uc3RdIG5vZGUgaW4gdGhlIGN1cnJlbnQgc2NvcGUsIG5vdCBpbiBbU2NvcGUudG9wXS4gKilcbmxldCBjb25zdCB0IGEgPSBjcmVhdGVfbm9kZSB0IChDb25zdCBhKVxubGV0IG1hcCAobiA6IF8gTm9kZS50KSB+ZiA9IGNyZWF0ZV9ub2RlIG4uc3RhdGUgKE1hcCAoZiwgbikpXG5sZXQgbWFwMiAobjEgOiBfIE5vZGUudCkgbjIgfmYgPSBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMiAoZiwgbjEsIG4yKSlcblxubGV0IGJvdGggKG4xIDogXyBOb2RlLnQpIChuMiA6IF8gTm9kZS50KSA9XG4gIG1hdGNoIG4xLCBuMiB3aXRoXG4gIHwgeyBraW5kID0gQ29uc3QgYTsgXyB9LCB7IGtpbmQgPSBDb25zdCBiOyBfIH0gLT4gY29uc3QgbjEuc3RhdGUgKGEsIGIpXG4gIHwgXyAtPiBtYXAyIG4xIG4yIH5mOlR1cGxlMi5jcmVhdGVcbjs7XG5cbmxldCBtYXAzIChuMSA6IF8gTm9kZS50KSBuMiBuMyB+ZiA9IGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAzIChmLCBuMSwgbjIsIG4zKSlcbmxldCBtYXA0IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCB+ZiA9IGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA0IChmLCBuMSwgbjIsIG4zLCBuNCkpXG5cbmxldCBtYXA1IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUpKVxuOztcblxubGV0IG1hcDYgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDYgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYpKVxuOztcblxubGV0IG1hcDcgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDcgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43KSlcbjs7XG5cbmxldCBtYXA4IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA4IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgpKVxuOztcblxubGV0IG1hcDkgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDkgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjkpKVxuOztcblxubGV0IG1hcDEwIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTAgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCkpXG47O1xuXG5sZXQgbWFwMTEgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTEgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExKSlcbjs7XG5cbmxldCBtYXAxMiAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTIgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIpKVxuOztcblxubGV0IG1hcDEzIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIG4xMiBuMTMgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTMgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMykpXG47O1xuXG5sZXQgbWFwMTQgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIG4xMyBuMTQgfmYgPVxuICBjcmVhdGVfbm9kZVxuICAgIG4xLnN0YXRlXG4gICAgKE1hcDE0IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCkpXG47O1xuXG5sZXQgbWFwMTUgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIG4xMyBuMTQgbjE1IH5mID1cbiAgY3JlYXRlX25vZGVcbiAgICBuMS5zdGF0ZVxuICAgIChNYXAxNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzLCBuMTQsIG4xNSkpXG47O1xuXG5sZXQgcHJlc2VydmVfY3V0b2ZmIH4oaW5wdXQgOiBfIE5vZGUudCkgfm91dHB1dCA9XG4gIE5vZGUuc2V0X2N1dG9mZlxuICAgIG91dHB1dFxuICAgIChDdXRvZmYuY3JlYXRlIChmdW4gfm9sZF92YWx1ZTpfIH5uZXdfdmFsdWU6XyAtPlxuICAgICAgIFN0YWJpbGl6YXRpb25fbnVtLmVxdWFsIGlucHV0LmNoYW5nZWRfYXQgb3V0cHV0LmNoYW5nZWRfYXQpKVxuOztcblxubGV0IGRlcGVuZF9vbiBpbnB1dCB+ZGVwZW5kX29uID1cbiAgbGV0IG91dHB1dCA9IG1hcDIgaW5wdXQgZGVwZW5kX29uIH5mOihmdW4gYSBfIC0+IGEpIGluXG4gIHByZXNlcnZlX2N1dG9mZiB+aW5wdXQgfm91dHB1dDtcbiAgb3V0cHV0XG47O1xuXG5sZXQgbmVjZXNzYXJ5X2lmX2FsaXZlIGlucHV0ID1cbiAgKCogSWYgW291dHB1dF0gaXMgYWxpdmUsIHRoZW4gW29ic2VydmVyXSBpcyBhbGl2ZSwgdGhlbiBbaW5wdXRdIGlzIG5lY2Vzc2FyeS4gIElmXG4gICAgIFtvdXRwdXRdIGlzIHVubmVjZXNzYXJ5LCB0aGVuIFtvdXRwdXRdIGlzIG5vdCBhIHBhcmVudCBvZiBbaW5wdXRdLCBhbmQgdGh1c1xuICAgICBbb3V0cHV0XSdzIGxpdmVuZXNzIGlzIGRlcGVuZGVudCBzb2xlbHkgb24gdXNlciBjb2RlLiAgQW5kIGluIHBhcnRpY3VsYXIsIGlmIFtvdXRwdXRdXG4gICAgIGRpZXMsIHRoZW4gW29ic2VydmVyXSB3aWxsIGJlIGZpbmFsaXplZCwgYW5kIHRoZW4gdXBvbiB0aGUgbmV4dCBzdGFiaWxpemF0aW9uLFxuICAgICBbaW5wdXRdIHdpbGwgYmVjb21lIHVubmVjZXNzYXJ5IChhdCBsZWFzdCB3aXRoIHJlc3BlY3QgdG8gW291dHB1dF0pLiAqKVxuICBsZXQgb2JzZXJ2ZXIgPSBjcmVhdGVfb2JzZXJ2ZXIgaW5wdXQgaW5cbiAgbGV0IG91dHB1dCA9XG4gICAgbWFwIGlucHV0IH5mOihmdW4gYSAtPlxuICAgICAgR2Mua2VlcF9hbGl2ZSBvYnNlcnZlcjtcbiAgICAgIGEpXG4gIGluXG4gIHByZXNlcnZlX2N1dG9mZiB+aW5wdXQgfm91dHB1dDtcbiAgb3V0cHV0XG47O1xuXG5sZXQgYmluZCAobGhzIDogXyBOb2RlLnQpIH5mID1cbiAgbGV0IHQgPSBsaHMuc3RhdGUgaW5cbiAgbGV0IGxoc19jaGFuZ2UgPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IGJpbmQgPVxuICAgIHsgQmluZC5tYWluXG4gICAgOyBmXG4gICAgOyBsaHNcbiAgICA7IGxoc19jaGFuZ2VcbiAgICA7IHJocyA9IFVvcHQubm9uZVxuICAgIDsgcmhzX3Njb3BlID0gU2NvcGUudG9wXG4gICAgOyBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgPSBVb3B0Lm5vbmVcbiAgICB9XG4gIGluXG4gICgqIFdlIHNldCBbbGhzX2NoYW5nZV0gdG8gbmV2ZXIgY3V0b2ZmIHNvIHRoYXQgd2hlbmV2ZXIgW2xoc10gY2hhbmdlcywgW21haW5dIGlzXG4gICAgIHJlY29tcHV0ZWQuICBUaGlzIGlzIG5lY2Vzc2FyeSB0byBoYW5kbGUgY2FzZXMgd2hlcmUgW2ZdIHJldHVybnMgYW4gZXhpc3Rpbmcgc3RhYmxlXG4gICAgIG5vZGUsIGluIHdoaWNoIGNhc2UgdGhlIFtsaHNfY2hhbmdlXSB3b3VsZCBiZSB0aGUgb25seSB0aGluZyBjYXVzaW5nIFttYWluXSB0byBiZVxuICAgICBzdGFsZS4gKilcbiAgTm9kZS5zZXRfY3V0b2ZmIGxoc19jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBiaW5kLnJoc19zY29wZSA8LSBCaW5kIGJpbmQ7XG4gIE5vZGUuc2V0X2tpbmQgbGhzX2NoYW5nZSAoQmluZF9saHNfY2hhbmdlIGJpbmQpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKEJpbmRfbWFpbiBiaW5kKTtcbiAgbWFpblxuOztcblxubGV0IGJpbmQyIG4xIG4yIH5mID1cbiAgYmluZCAobWFwMiBuMSBuMiB+ZjooZnVuIHYxIHYyIC0+IHYxLCB2MikpIH5mOihmdW4gKHYxLCB2MikgLT4gZiB2MSB2Milcbjs7XG5cbmxldCBiaW5kMyBuMSBuMiBuMyB+ZiA9XG4gIGJpbmQgKG1hcDMgbjEgbjIgbjMgfmY6KGZ1biB2MSB2MiB2MyAtPiB2MSwgdjIsIHYzKSkgfmY6KGZ1biAodjEsIHYyLCB2MykgLT4gZiB2MSB2MiB2Mylcbjs7XG5cbmxldCBiaW5kNCBuMSBuMiBuMyBuNCB+ZiA9XG4gIGJpbmRcbiAgICAobWFwNCBuMSBuMiBuMyBuNCB+ZjooZnVuIHYxIHYyIHYzIHY0IC0+IHYxLCB2MiwgdjMsIHY0KSlcbiAgICB+ZjooZnVuICh2MSwgdjIsIHYzLCB2NCkgLT4gZiB2MSB2MiB2MyB2NClcbjs7XG5cbmxldCBqb2luIChsaHMgOiBfIE5vZGUudCkgPVxuICBsZXQgdCA9IGxocy5zdGF0ZSBpblxuICBsZXQgbGhzX2NoYW5nZSA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgam9pbiA9IHsgSm9pbi5saHM7IGxoc19jaGFuZ2U7IHJocyA9IFVvcHQubm9uZTsgbWFpbiB9IGluXG4gIE5vZGUuc2V0X2N1dG9mZiBsaHNfY2hhbmdlIEN1dG9mZi5uZXZlcjtcbiAgTm9kZS5zZXRfa2luZCBsaHNfY2hhbmdlIChKb2luX2xoc19jaGFuZ2Ugam9pbik7XG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoSm9pbl9tYWluIGpvaW4pO1xuICBtYWluXG47O1xuXG5sZXQgaWZfICh0ZXN0IDogXyBOb2RlLnQpIH50aGVuXyB+ZWxzZV8gPVxuICBsZXQgdCA9IHRlc3Quc3RhdGUgaW5cbiAgbGV0IHRlc3RfY2hhbmdlID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBpZl90aGVuX2Vsc2UgPVxuICAgIHsgSWZfdGhlbl9lbHNlLnRlc3Q7IHRoZW5fOyBlbHNlXzsgdGVzdF9jaGFuZ2U7IG1haW47IGN1cnJlbnRfYnJhbmNoID0gVW9wdC5ub25lIH1cbiAgaW5cbiAgTm9kZS5zZXRfY3V0b2ZmIHRlc3RfY2hhbmdlIEN1dG9mZi5uZXZlcjtcbiAgTm9kZS5zZXRfa2luZCB0ZXN0X2NoYW5nZSAoSWZfdGVzdF9jaGFuZ2UgaWZfdGhlbl9lbHNlKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChJZl90aGVuX2Vsc2UgaWZfdGhlbl9lbHNlKTtcbiAgbWFpblxuOztcblxubGV0IGxhenlfZnJvbV9mdW4gdCB+ZiA9XG4gIGxldCBzY29wZSA9IHQuY3VycmVudF9zY29wZSBpblxuICBMYXp5LmZyb21fZnVuIChmdW4gKCkgLT4gd2l0aGluX3Njb3BlIHQgc2NvcGUgfmYpXG47O1xuXG5sZXQgZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZSA9IDRcblxubGV0IG1lbW9pemVfZnVuX2J5X2tleVxuICAgICAgPyhpbml0aWFsX3NpemUgPSBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplKVxuICAgICAgdFxuICAgICAgaGFzaGFibGVcbiAgICAgIHByb2plY3Rfa2V5XG4gICAgICBmXG4gID1cbiAgKCogSGVyZSdzIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB3ZSBnZXQgW3QuY3VycmVudF9zY29wZV0gaGVyZSwgYW5kIHRoZW4gY2FsbFxuICAgICBbd2l0aGluX3Njb3BlXSBiZWxvdy4gIENvbnNpZGVyIHRoaXMgKGltcG9zc2libGUpIGFsdGVybmF0ZSBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICBbbWVtb2l6ZV9mdW5fYnlfa2V5XTpcblxuICAgICB7W1xuICAgICAgIGxldCB0YWJsZSA9XG4gICAgICAgICBIYXNodGJsLm9mX2FsaXN0X2V4biBoYXNoYWJsZVxuICAgICAgICAgICAoTGlzdC5tYXAgYWxsX3Bvc3NpYmxlX2FfdmFsdWVzIH5mOihmdW4gYSAtPiAocHJvamVjdF9rZXkgYSwgZiBhKSlcbiAgICAgICBpblxuICAgICAgIHN0YWdlIChmdW4ga2V5IC0+IEhhc2h0YmwuZmluZF9leG4gdGFibGUgKHByb2plY3Rfa2V5IGEpKVxuICAgICBdfVxuXG4gICAgIFRoaXMgaW1wbGVtZW50YXRpb24gZG9lc24ndCB1c2UgW2N1cnJlbnRfc2NvcGVdIG9yIFt3aXRoaW5fc2NvcGVdLiAgQWxsIGNhbGxzIHRvIFtmXVxuICAgICBuYXR1cmFsbHkgb2NjdXIgaW4gW3QuY3VycmVudF9zY29wZV0uXG5cbiAgICAgU3VjaCBhbiBpbXBsZW1lbnRhdGlvbiBpcyBpbXBvc3NpYmxlIGJlY2F1c2Ugd2UgZG8gbm90IGhhdmUgW2FsbF9wb3NzaWJsZV9hX3ZhbHVlc10uXG4gICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBiZWxvdyB1c2VzIFt3aXRoaW5fc2NvcGVdIHRvIGNhbGwgW2YgYV0gaW4gdGhlIHNjb3BlIHRoYXQgd2FzXG4gICAgIGN1cnJlbnQgYXQgdGhlIHBvaW50IG9mIHRoZSBjYWxsIHRvIFttZW1vaXplX2Z1bl9ieV9rZXldIHNvIHRoYXQgd2UgY2FuIHRoaW5rIG9mIHRoZVxuICAgICBbdGFibGVdIGFzIGhhdmluZyBiZWVuIGNyZWF0ZWQgdGhlbiwgd2hlbiBpdCBpbiByZWFsaXR5IGlzIGNyZWF0ZWQgb24tZGVtYW5kLiAqKVxuICBsZXQgc2NvcGUgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgbGV0IHRhYmxlID0gSGFzaHRibC5jcmVhdGUgaGFzaGFibGUgfnNpemU6aW5pdGlhbF9zaXplIGluXG4gIHN0YWdlIChmdW4gYSAtPlxuICAgIGxldCBrZXkgPSBwcm9qZWN0X2tleSBhIGluXG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIHRhYmxlIGtleSB3aXRoXG4gICAgfCBTb21lIGIgLT4gYlxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGIgPSB3aXRoaW5fc2NvcGUgdCBzY29wZSB+ZjooZnVuICgpIC0+IGYgYSkgaW5cbiAgICAgIEhhc2h0YmwuYWRkX2V4biB0YWJsZSB+a2V5IH5kYXRhOmI7XG4gICAgICBiKVxuOztcblxubGV0IGFycmF5X2ZvbGQgdCBjaGlsZHJlbiB+aW5pdCB+ZiA9XG4gIGlmIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiA9IDBcbiAgdGhlbiBjb25zdCB0IGluaXRcbiAgZWxzZSBjcmVhdGVfbm9kZSB0IChBcnJheV9mb2xkIHsgaW5pdDsgZjsgY2hpbGRyZW4gfSlcbjs7XG5cbmxldCBhbGwgdCB0cyA9IGFycmF5X2ZvbGQgdCAoQXJyYXkub2ZfbGlzdF9yZXYgdHMpIH5pbml0OltdIH5mOihmdW4gYWMgYSAtPiBhIDo6IGFjKVxuXG5tb2R1bGUgVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlID0gVW5vcmRlcmVkX2FycmF5X2ZvbGQuVXBkYXRlXG5cbmxldCB1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgICAgdFxuICAgICAgPyhmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzID0gSW50Lm1heF92YWx1ZSlcbiAgICAgIGNoaWxkcmVuXG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgICAgIH51cGRhdGVcbiAgPVxuICBpZiBBcnJheS5sZW5ndGggY2hpbGRyZW4gPSAwXG4gIHRoZW4gY29uc3QgdCBpbml0XG4gIGVsc2UgaWYgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA8PSAwXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwidW5vcmRlcmVkX2FycmF5X2ZvbGQgZ290IG5vbi1wb3NpdGl2ZSBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXCJcbiAgICAgIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICAgIFslc2V4cF9vZjogaW50XVxuICBlbHNlIChcbiAgICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICAgIE5vZGUuc2V0X2tpbmRcbiAgICAgIG1haW5cbiAgICAgIChVbm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgICAgICAgKFVub3JkZXJlZF9hcnJheV9mb2xkLmNyZWF0ZVxuICAgICAgICAgICAgfmluaXRcbiAgICAgICAgICAgIH5mXG4gICAgICAgICAgICB+dXBkYXRlXG4gICAgICAgICAgICB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgICAgICAgICAgfmNoaWxkcmVuXG4gICAgICAgICAgICB+bWFpbikpO1xuICAgIG1haW4pXG47O1xuXG5sZXQgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkIHQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfmluaXQgfmYgfmZfaW52ZXJzZSA9XG4gIGxldCBmIChhY2N1bSwgbnVtX2ludmFsaWQpIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBhY2N1bSwgbnVtX2ludmFsaWQgKyAxXG4gICAgfCBTb21lIHggLT4gZiBhY2N1bSB4LCBudW1faW52YWxpZFxuICBpblxuICBsZXQgZl9pbnZlcnNlIChhY2N1bSwgbnVtX2ludmFsaWQpIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBhY2N1bSwgbnVtX2ludmFsaWQgLSAxXG4gICAgfCBTb21lIHggLT4gZl9pbnZlcnNlIGFjY3VtIHgsIG51bV9pbnZhbGlkXG4gIGluXG4gIG1hcFxuICAgICh1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgICAgIHRcbiAgICAgICB0c1xuICAgICAgIH5pbml0Oihpbml0LCAwKVxuICAgICAgIH5mXG4gICAgICAgfnVwZGF0ZTooRl9pbnZlcnNlIGZfaW52ZXJzZSlcbiAgICAgICA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcylcbiAgICB+ZjooZnVuIChhY2N1bSwgbnVtX2ludmFsaWQpIC0+IGlmIG51bV9pbnZhbGlkID0gMCB0aGVuIFNvbWUgYWNjdW0gZWxzZSBOb25lKVxuOztcblxubGV0IGF0X2xlYXN0X2tfb2YgdCBub2RlcyB+ayA9XG4gIGxldCBib29sX3RvX2ludCBiID0gaWYgYiB0aGVuIDEgZWxzZSAwIGluXG4gIG1hcFxuICAgIH5mOihmdW4gaSAtPiBpID49IGspXG4gICAgKHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgdFxuICAgICAgIG5vZGVzXG4gICAgICAgfmluaXQ6MFxuICAgICAgIH5mOihmdW4gbnVtX3RydWUgYiAtPiBudW1fdHJ1ZSArIGJvb2xfdG9faW50IGIpXG4gICAgICAgfnVwZGF0ZTooRl9pbnZlcnNlIChmdW4gbnVtX3RydWUgYiAtPiBudW1fdHJ1ZSAtIGJvb2xfdG9faW50IGIpKSlcbjs7XG5cbmxldCBleGlzdHMgdCBub2RlcyA9IGF0X2xlYXN0X2tfb2YgdCBub2RlcyB+azoxXG5sZXQgZm9yX2FsbCB0IG5vZGVzID0gYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rOihBcnJheS5sZW5ndGggbm9kZXMpXG5cbmxldCBzdW0gdCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBub2RlcyB+emVybyB+YWRkIH5zdWIgPVxuICB1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgIHRcbiAgICBub2Rlc1xuICAgIH5pbml0Onplcm9cbiAgICB+ZjphZGRcbiAgICB+dXBkYXRlOihGX2ludmVyc2Ugc3ViKVxuICAgID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG47O1xuXG5sZXQgb3B0X3N1bSB0ID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIG5vZGVzIH56ZXJvIH5hZGQgfnN1YiA9XG4gIG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgIHRcbiAgICBub2Rlc1xuICAgIH5pbml0Onplcm9cbiAgICB+ZjphZGRcbiAgICB+Zl9pbnZlcnNlOnN1YlxuICAgID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG47O1xuXG5sZXQgc3VtX2ludCB0IG5vZGVzID0gc3VtIHQgbm9kZXMgfnplcm86MCB+YWRkOiggKyApIH5zdWI6KCAtIClcblxubGV0IHN1bV9mbG9hdCB0IG5vZGVzID1cbiAgc3VtXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfnplcm86MC5cbiAgICB+YWRkOiggKy4gKVxuICAgIH5zdWI6KCAtLiApXG4gICAgfmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXM6KEFycmF5Lmxlbmd0aCBub2Rlcylcbjs7XG5cbmxldCBzZXRfZnJlZXplIChub2RlIDogXyBOb2RlLnQpIH5jaGlsZCB+b25seV9mcmVlemVfd2hlbiA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChTY29wZS5pc190b3Agbm9kZS5jcmVhdGVkX2luKTtcbiAgKCogQnkgbWFraW5nIFtub2RlLmtpbmRdIGJlIFtGcmVlemVdLCB3ZSBhcmUgbWFraW5nIFtOb2RlLmlzX25lY2Vzc2FyeSBub2RlXS4gKilcbiAgbGV0IHdhc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeSBub2RlIGluXG4gIE5vZGUuc2V0X2tpbmQgbm9kZSAoRnJlZXplIHsgbWFpbiA9IG5vZGU7IGNoaWxkOyBvbmx5X2ZyZWV6ZV93aGVuIH0pO1xuICBpZiB3YXNfbmVjZXNzYXJ5XG4gIHRoZW4gYWRkX3BhcmVudCB+Y2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDpLaW5kLmZyZWV6ZV9jaGlsZF9pbmRleFxuICBlbHNlIGJlY2FtZV9uZWNlc3Nhcnkgbm9kZVxuOztcblxubGV0IGZyZWV6ZSAoY2hpbGQgOiBfIE5vZGUudCkgfm9ubHlfZnJlZXplX3doZW4gPVxuICBsZXQgdCA9IGNoaWxkLnN0YXRlIGluXG4gIGxldCBub2RlID0gY3JlYXRlX25vZGVfdG9wIHQgVW5pbml0aWFsaXplZCBpblxuICBzZXRfZnJlZXplIG5vZGUgfmNoaWxkIH5vbmx5X2ZyZWV6ZV93aGVuO1xuICBub2RlXG47O1xuXG5sZXQgYXQgY2xvY2sgdGltZSA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBpZiBUaW1lX25zLiggPD0gKSB0aW1lIChub3cgY2xvY2spXG4gIHRoZW4gY29uc3QgdCBCZWZvcmVfb3JfYWZ0ZXIuQWZ0ZXJcbiAgZWxzZSAoXG4gICAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgICBsZXQgYXQgPSB7IEF0LmF0ID0gdGltZTsgbWFpbjsgYWxhcm0gPSBBbGFybS5udWxsOyBjbG9jayB9IGluXG4gICAgTm9kZS5zZXRfa2luZCBtYWluIChBdCBhdCk7XG4gICAgYXQuYWxhcm0gPC0gYWRkX2FsYXJtIGNsb2NrIH5hdDp0aW1lIChBbGFybV92YWx1ZS5jcmVhdGUgKEF0IGF0KSk7XG4gICAgbWFpbilcbjs7XG5cbmxldCBhZnRlciBjbG9jayBzcGFuID0gYXQgY2xvY2sgKFRpbWVfbnMuYWRkIChub3cgY2xvY2spIHNwYW4pXG5cbmxldCBuZXh0X2ludGVydmFsX2FsYXJtX3N0cmljdCAoY2xvY2sgOiBDbG9jay50KSB+YmFzZSB+aW50ZXJ2YWwgPVxuICBsZXQgYWZ0ZXIgPSBub3cgY2xvY2sgaW5cbiAgbGV0IGF0ID0gVGltZV9ucy5uZXh0X211bHRpcGxlIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgfmNhbl9lcXVhbF9hZnRlcjpmYWxzZSAoKSBpblxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVGltZV9ucy4oID4gKSBhdCBhZnRlcik7XG4gIGF0XG47O1xuXG5sZXQgYXRfaW50ZXJ2YWxzIChjbG9jayA6IENsb2NrLnQpIGludGVydmFsID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuU3Bhbi4oIDwgKSBpbnRlcnZhbCAoVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiBjbG9jay50aW1pbmdfd2hlZWwpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiYXRfaW50ZXJ2YWxzIGdvdCB0b28gc21hbGwgaW50ZXJ2YWxcIlxuICAgICAgaW50ZXJ2YWxcbiAgICAgIFslc2V4cF9vZjogVGltZV9ucy5TcGFuLnRdO1xuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgYmFzZSA9IG5vdyBjbG9jayBpblxuICBsZXQgYXRfaW50ZXJ2YWxzID0geyBBdF9pbnRlcnZhbHMubWFpbjsgYmFzZTsgaW50ZXJ2YWw7IGFsYXJtID0gQWxhcm0ubnVsbDsgY2xvY2sgfSBpblxuICBOb2RlLnNldF9raW5kIG1haW4gKEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMpO1xuICAoKiBbbWFpbiA6IHVuaXQgTm9kZS50XSwgc28gd2UgbWFrZSBpdCBuZXZlciBjdXRvZmYgc28gaXQgY2hhbmdlcyBlYWNoIHRpbWUgaXQgaXNcbiAgICAgcmVjb21wdXRlZC4gKilcbiAgTm9kZS5zZXRfY3V0b2ZmIG1haW4gQ3V0b2ZmLm5ldmVyO1xuICBhdF9pbnRlcnZhbHMuYWxhcm1cbiAgPC0gYWRkX2FsYXJtXG4gICAgICAgY2xvY2tcbiAgICAgICB+YXQ6KG5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IGNsb2NrIH5iYXNlIH5pbnRlcnZhbClcbiAgICAgICAoQWxhcm1fdmFsdWUuY3JlYXRlIChBdF9pbnRlcnZhbHMgYXRfaW50ZXJ2YWxzKSk7XG4gIG1haW5cbjs7XG5cbmxldCBzbmFwc2hvdCBjbG9jayB2YWx1ZV9hdCB+YXQgfmJlZm9yZSA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBpZiBUaW1lX25zLiggPD0gKSBhdCAobm93IGNsb2NrKVxuICB0aGVuXG4gICAgaWYgVGltZV9ucy4oIDwgKSBhdCAobm93IGNsb2NrKVxuICAgIHRoZW4gT3JfZXJyb3IuZXJyb3IgXCJjYW5ub3QgdGFrZSBzbmFwc2hvdCBpbiB0aGUgcGFzdFwiIGF0IFslc2V4cF9vZjogVGltZV9ucy50XVxuICAgIGVsc2UgT2sgKGZyZWV6ZSB2YWx1ZV9hdCB+b25seV9mcmVlemVfd2hlbjooRm4uY29uc3QgdHJ1ZSkpXG4gIGVsc2UgKFxuICAgIGxldCBtYWluID0gY3JlYXRlX25vZGVfdG9wIHQgVW5pbml0aWFsaXplZCBpblxuICAgIGxldCBzbmFwc2hvdCA9IHsgU25hcHNob3QubWFpbjsgYXQ7IGJlZm9yZTsgdmFsdWVfYXQ7IGNsb2NrIH0gaW5cbiAgICBOb2RlLnNldF9raW5kIG1haW4gKFNuYXBzaG90IHNuYXBzaG90KTtcbiAgICAoKiBVbmxpa2Ugb3RoZXIgdGltZS1iYXNlZCBpbmNyZW1lbnRhbHMsIGEgc25hcHNob3QgaXMgY3JlYXRlZCBpbiBbU2NvcGUudG9wXSBhbmRcbiAgICAgICBjYW5ub3QgYmUgaW52YWxpZGF0ZWQgYnkgaXRzIHNjb3BlLiAgVGh1cywgdGhlcmUgaXMgbm8gbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZVxuICAgICAgIGFsYXJtIHRoYXQgaXMgYWRkZWQsIGJlY2F1c2UgaXQgd2lsbCBuZXZlciBuZWVkIHRvIGJlIHJlbW92ZWQgZWFybHkuICopXG4gICAgaWdub3JlIChhZGRfYWxhcm0gY2xvY2sgfmF0IChBbGFybV92YWx1ZS5jcmVhdGUgKFNuYXBzaG90IHNuYXBzaG90KSkgOiBBbGFybS50KTtcbiAgICBPayBtYWluKVxuOztcblxubGV0IGluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24gY2xvY2sgY2hpbGQgPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IHN0ZXBfZnVuY3Rpb25fbm9kZSA9XG4gICAgeyBTdGVwX2Z1bmN0aW9uX25vZGUubWFpblxuICAgIDsgdmFsdWUgPSBVb3B0Lm5vbmVcbiAgICA7IGNoaWxkID0gVW9wdC5zb21lIGNoaWxkXG4gICAgOyBleHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0ID0gU3RhYmlsaXphdGlvbl9udW0ubm9uZVxuICAgIDsgdXBjb21pbmdfc3RlcHMgPSBTZXF1ZW5jZS5lbXB0eVxuICAgIDsgYWxhcm0gPSBBbGFybS5udWxsXG4gICAgOyBhbGFybV92YWx1ZSA9IE9iai5tYWdpYyBOb25lICgqIHNldCBiZWxvdyAqKVxuICAgIDsgY2xvY2tcbiAgICB9XG4gIGluXG4gIHN0ZXBfZnVuY3Rpb25fbm9kZS5hbGFybV92YWx1ZSA8LSBBbGFybV92YWx1ZS5jcmVhdGUgKFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChTdGVwX2Z1bmN0aW9uIHN0ZXBfZnVuY3Rpb25fbm9kZSk7XG4gIG1haW5cbjs7XG5cbmxldCBtYWtlX3N0YWxlIChub2RlIDogXyBOb2RlLnQpID1cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIG5vZGUucmVjb21wdXRlZF9hdCA8LSBTdGFiaWxpemF0aW9uX251bS5ub25lO1xuICAoKiBmb3JjZSB0aGUgbm9kZSB0byBiZSBzdGFsZSAqKVxuICBpZiBOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUgJiYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgbm9kZVxuOztcblxubGV0IGFkdmFuY2VfY2xvY2sgKGNsb2NrIDogQ2xvY2sudCkgfnRvXyA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJhZHZhbmNlX2Nsb2NrXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOnRydWU7XG4gIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIFRpbWVfbnMuKCA+ICkgdG9fIChub3cgY2xvY2spXG4gIHRoZW4gKFxuICAgIHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIGNsb2NrLm5vdyB0b187XG4gICAgVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2sgY2xvY2sudGltaW5nX3doZWVsIH50b18gfmhhbmRsZV9maXJlZDpjbG9jay5oYW5kbGVfZmlyZWQ7XG4gICAgVGltaW5nX3doZWVsLmZpcmVfcGFzdF9hbGFybXMgY2xvY2sudGltaW5nX3doZWVsIH5oYW5kbGVfZmlyZWQ6Y2xvY2suaGFuZGxlX2ZpcmVkO1xuICAgIHdoaWxlIFVvcHQuaXNfc29tZSBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgZG9cbiAgICAgIGxldCBhbGFybV92YWx1ZSA9IFVvcHQudW5zYWZlX3ZhbHVlIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyBpblxuICAgICAgY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzIDwtIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQ7XG4gICAgICBhbGFybV92YWx1ZS5uZXh0X2ZpcmVkIDwtIFVvcHQubm9uZTtcbiAgICAgIG1hdGNoIGFsYXJtX3ZhbHVlLmFjdGlvbiB3aXRoXG4gICAgICB8IEF0IHsgbWFpbjsgXyB9IC0+XG4gICAgICAgIGlmIE5vZGUuaXNfdmFsaWQgbWFpblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBOb2RlLnNldF9raW5kIG1haW4gKENvbnN0IEFmdGVyKTtcbiAgICAgICAgICBtYWtlX3N0YWxlIG1haW4pXG4gICAgICB8IEF0X2ludGVydmFscyAoeyBtYWluOyBiYXNlOyBpbnRlcnZhbDsgXyB9IGFzIGF0X2ludGVydmFscykgLT5cbiAgICAgICAgaWYgTm9kZS5pc192YWxpZCBtYWluXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGF0X2ludGVydmFscy5hbGFybVxuICAgICAgICAgIDwtIGFkZF9hbGFybVxuICAgICAgICAgICAgICAgY2xvY2tcbiAgICAgICAgICAgICAgIH5hdDoobmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QgY2xvY2sgfmJhc2UgfmludGVydmFsKVxuICAgICAgICAgICAgICAgYWxhcm1fdmFsdWU7XG4gICAgICAgICAgbWFrZV9zdGFsZSBtYWluKVxuICAgICAgfCBTbmFwc2hvdCB7IG1haW47IHZhbHVlX2F0OyBfIH0gLT5cbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfdmFsaWQgbWFpbik7XG4gICAgICAgIHNldF9mcmVlemUgbWFpbiB+Y2hpbGQ6dmFsdWVfYXQgfm9ubHlfZnJlZXplX3doZW46KGZ1biBfIC0+IHRydWUpO1xuICAgICAgICBtYWtlX3N0YWxlIG1haW5cbiAgICAgIHwgU3RlcF9mdW5jdGlvbiB7IG1haW47IF8gfSAtPiBpZiBOb2RlLmlzX3ZhbGlkIG1haW4gdGhlbiBtYWtlX3N0YWxlIG1haW5cbiAgICBkb25lO1xuICAgIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHQpXG47O1xuXG5sZXQgY3JlYXRlX2Nsb2NrIHQgfnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0ID1cbiAgbGV0IHRpbWluZ193aGVlbCA9IFRpbWluZ193aGVlbC5jcmVhdGUgfmNvbmZpZzp0aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydCBpblxuICBsZXQgcmVjIGNsb2NrIDogQ2xvY2sudCA9XG4gICAgeyBub3cgPSBjcmVhdGVfdmFyIHQgc3RhcnRcbiAgICA7IGhhbmRsZV9maXJlZFxuICAgIDsgZmlyZWRfYWxhcm1fdmFsdWVzID0gVW9wdC5ub25lXG4gICAgOyB0aW1pbmdfd2hlZWxcbiAgICB9XG4gIGFuZCBoYW5kbGVfZmlyZWQgYWxhcm0gPVxuICAgIGxldCBhbGFybV92YWx1ZSA9IFRpbWluZ193aGVlbC5BbGFybS52YWx1ZSBjbG9jay50aW1pbmdfd2hlZWwgYWxhcm0gaW5cbiAgICBhbGFybV92YWx1ZS5uZXh0X2ZpcmVkIDwtIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcztcbiAgICBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgPC0gVW9wdC5zb21lIGFsYXJtX3ZhbHVlXG4gIGluXG4gIGNsb2NrXG47O1xuXG5sZXQgY3JlYXRlIChtb2R1bGUgQ29uZmlnIDogQ29uZmlnLkluY3JlbWVudGFsX2NvbmZpZykgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIGxldCBhZGp1c3RfaGVpZ2h0c19oZWFwID0gQWRqdXN0X2hlaWdodHNfaGVhcC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCBpblxuICBsZXQgcmVjb21wdXRlX2hlYXAgPSBSZWNvbXB1dGVfaGVhcC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCBpblxuICBsZXQgdCA9XG4gICAgeyBzdGF0dXMgPSBOb3Rfc3RhYmlsaXppbmdcbiAgICA7IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgPSBDb25maWcuYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3Joc1xuICAgIDsgc3RhYmlsaXphdGlvbl9udW0gPSBTdGFiaWxpemF0aW9uX251bS56ZXJvXG4gICAgOyBjdXJyZW50X3Njb3BlID0gU2NvcGUudG9wXG4gICAgOyBhZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgOyByZWNvbXB1dGVfaGVhcFxuICAgIDsgcHJvcGFnYXRlX2ludmFsaWRpdHkgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IG51bV9hY3RpdmVfb2JzZXJ2ZXJzID0gMFxuICAgIDsgYWxsX29ic2VydmVycyA9IFVvcHQubm9uZVxuICAgIDsgZmluYWxpemVkX29ic2VydmVycyA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgZGlzYWxsb3dlZF9vYnNlcnZlcnMgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IG5ld19vYnNlcnZlcnMgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IG9ubHlfaW5fZGVidWcgPSBPbmx5X2luX2RlYnVnLmNyZWF0ZSAoKVxuICAgIDsgd2Vha19oYXNodGJscyA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsga2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSA9IGZhbHNlXG4gICAgOyBudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSA9IDBcbiAgICA7IG51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgPSAwXG4gICAgOyBudW1fbm9kZXNfY2hhbmdlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19pbnZhbGlkYXRlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19jcmVhdGVkID0gMFxuICAgIDsgbnVtX25vZGVzX3JlY29tcHV0ZWQgPSAwXG4gICAgOyBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZCA9IDBcbiAgICA7IG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCA9IDBcbiAgICA7IG51bV92YXJfc2V0cyA9IDBcbiAgICB9XG4gIGluXG4gIHRcbjs7XG5cbmxldCB3ZWFrX21lbW9pemVfZnVuX2J5X2tleVxuICAgICAgPyhpbml0aWFsX3NpemUgPSBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplKVxuICAgICAgdFxuICAgICAgaGFzaGFibGVcbiAgICAgIHByb2plY3Rfa2V5XG4gICAgICBmXG4gID1cbiAgbGV0IHNjb3BlID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIGxldCB0YWJsZSA9IFdlYWtfaGFzaHRibC5jcmVhdGUgfnNpemU6aW5pdGlhbF9zaXplIGhhc2hhYmxlIGluXG4gIGxldCBwYWNrZWQgPSBQYWNrZWRfd2Vha19oYXNodGJsLlQgdGFibGUgaW5cbiAgV2Vha19oYXNodGJsLnNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSB0YWJsZSB+dGhyZWFkX3NhZmVfZjooZnVuICgpIC0+XG4gICAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LndlYWtfaGFzaHRibHMgcGFja2VkKTtcbiAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgbGV0IGtleSA9IHByb2plY3Rfa2V5IGEgaW5cbiAgICBtYXRjaCBXZWFrX2hhc2h0YmwuZmluZCB0YWJsZSBrZXkgd2l0aFxuICAgIHwgU29tZSBiIC0+IGJcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBiID0gd2l0aGluX3Njb3BlIHQgc2NvcGUgfmY6KGZ1biAoKSAtPiBmIGEpIGluXG4gICAgICBXZWFrX2hhc2h0YmwuYWRkX2V4biB0YWJsZSB+a2V5IH5kYXRhOmI7XG4gICAgICBiKVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAoKiBHaXZlbiB0aGF0IGludmFsaWQgbm9kZSBhcmUgYXQgYXR0ZW1wdCBhdCBhdm9pZGluZyBicmVha2luZyB0aGUgZW50aXJlIGluY3JlbWVudGFsXG4gICAgIGNvbXB1dGF0aW9uIG9uIHByb2JsZW1zLCBsZXQncyBqdXN0IGlnbm9yZSBhbnkgb3BlcmF0aW9uIG9uIGFuIGludmFsaWQgaW5jcmVtZW50YWxcbiAgICAgcmF0aGVyIHRoYW4gcmFpc2luZy4gKilcbiAgbGV0IGV4cGVydF9raW5kX29mX25vZGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICAgIG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICAgfCBFeHBlcnQgZSAtPiBVb3B0LnNvbWUgZVxuICAgIHwgSW52YWxpZCAtPiBVb3B0Lm5vbmVcbiAgICB8IGtpbmQgLT4gcmFpc2VfcyBbJXNleHAgXCJ1bmV4cGVjdGVkIGtpbmQgZm9yIGV4cGVydCBub2RlXCIsIChraW5kIDogXyBLaW5kLnQpXVxuICA7O1xuXG4gIGxldCBjcmVhdGUgc3RhdGUgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIGYgPVxuICAgIGxldCBlID0gRXhwZXJ0LmNyZWF0ZSB+ZiB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgaW5cbiAgICBsZXQgbm9kZSA9IGNyZWF0ZV9ub2RlIHN0YXRlIChFeHBlcnQgZSkgaW5cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIGlmIE9wdGlvbi5pc19zb21lIHN0YXRlLm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZVxuICAgICAgdGhlblxuICAgICAgICBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZVxuICAgICAgICA8LSBUIG5vZGUgOjogc3RhdGUub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGU7XG4gICAgbm9kZVxuICA7O1xuXG4gIGxldCBjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biBzdGF0ZSBuYW1lID1cbiAgICBtYXRjaCBzdGF0ZS5vbmx5X2luX2RlYnVnLmN1cnJlbnRseV9ydW5uaW5nX25vZGUgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZV9zIFslc2V4cCAoXCJjYW4gb25seSBjYWxsIFwiIF4gbmFtZSBeIFwiIGR1cmluZyBzdGFiaWxpemF0aW9uXCIgOiBzdHJpbmcpXVxuICAgIHwgU29tZSBjdXJyZW50IC0+IGN1cnJlbnRcbiAgOztcblxuICAoKiBOb3RlIHRoYXQgdGhlIHR3byBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBub3Qgc3ltbWV0cmljIG9mIG9uZSBhbm90aGVyOiBpbiBbbGV0IHkgPVxuICAgICBtYXAgeF0sIFt4XSBpcyBhbHdheXMgYSBjaGlsZCBvZiBbeV0gKGFzc3VtaW5nIFt4XSBkb2Vzbid0IGJlY29tZSBpbnZhbGlkKSBidXQgW3ldIGluXG4gICAgIG9ubHkgYSBwYXJlbnQgb2YgW3hdIGlmIHkgaXMgbmVjZXNzYXJ5LiAqKVxuICBsZXQgYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBuYW1lID1cbiAgICBsZXQgKFQgY3VycmVudCkgPSBjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biBzdGF0ZSBuYW1lIGluXG4gICAgaWYgbm90IChOb2RlLmhhc19jaGlsZCBub2RlIH5jaGlsZDpjdXJyZW50KVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgKFwiY2FuIG9ubHkgY2FsbCBcIiBeIG5hbWUgXiBcIiBvbiBwYXJlbnQgbm9kZXNcIiA6IHN0cmluZylcbiAgICAgICAgLCB+fihub2RlLmtpbmQgOiBfIEtpbmQudClcbiAgICAgICAgLCB+fihjdXJyZW50LmtpbmQgOiBfIEtpbmQudCldXG4gIDs7XG5cbiAgbGV0IGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX3BhcmVudCBzdGF0ZSBub2RlIG5hbWUgPVxuICAgIGxldCAoVCBjdXJyZW50KSA9IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgaW5cbiAgICBpZiBub3QgKE5vZGUuaGFzX3BhcmVudCB+cGFyZW50OmN1cnJlbnQgbm9kZSlcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIChcImNhbiBvbmx5IGNhbGwgXCIgXiBuYW1lIF4gXCIgb24gY2hpbGRyZW4gbm9kZXNcIiA6IHN0cmluZylcbiAgICAgICAgLCB+fihub2RlLmtpbmQgOiBfIEtpbmQudClcbiAgICAgICAgLCB+fihjdXJyZW50LmtpbmQgOiBfIEtpbmQudCldXG4gIDs7XG5cbiAgbGV0IG1ha2Vfc3RhbGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICAgIGxldCBzdGF0ZSA9IG5vZGUuc3RhdGUgaW5cbiAgICBsZXQgZV9vcHQgPSBleHBlcnRfa2luZF9vZl9ub2RlIG5vZGUgaW5cbiAgICBpZiBVb3B0LmlzX3NvbWUgZV9vcHRcbiAgICB0aGVuIChcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBcIm1ha2Vfc3RhbGVcIjtcbiAgICAgIGxldCBlID0gVW9wdC51bnNhZmVfdmFsdWUgZV9vcHQgaW5cbiAgICAgIG1hdGNoIEV4cGVydC5tYWtlX3N0YWxlIGUgd2l0aFxuICAgICAgfCBgQWxyZWFkeV9zdGFsZSAtPiAoKVxuICAgICAgfCBgT2sgLT5cbiAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgc3RhdGUucmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgOztcblxuICBsZXQgaW52YWxpZGF0ZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBcImludmFsaWRhdGVcIjtcbiAgICBpbnZhbGlkYXRlX25vZGUgbm9kZTtcbiAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSBzdGF0ZVxuICA7O1xuXG4gIGxldCBhZGRfZGVwZW5kZW5jeSAobm9kZSA6IF8gTm9kZS50KSAoZGVwIDogXyBFeHBlcnQuZWRnZSkgPVxuICAgIGxldCBzdGF0ZSA9IG5vZGUuc3RhdGUgaW5cbiAgICBsZXQgZV9vcHQgPSBleHBlcnRfa2luZF9vZl9ub2RlIG5vZGUgaW5cbiAgICBpZiBVb3B0LmlzX3NvbWUgZV9vcHRcbiAgICB0aGVuIChcbiAgICAgIGlmIGRlYnVnXG4gICAgICB0aGVuXG4gICAgICAgIGlmIGFtX3N0YWJpbGl6aW5nIHN0YXRlXG4gICAgICAgICYmIG5vdFxuICAgICAgICAgICAgIChMaXN0Lm1lbVxuICAgICAgICAgICAgICAgIH5lcXVhbDpwaHlzX2VxdWFsXG4gICAgICAgICAgICAgICAgc3RhdGUub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGVcbiAgICAgICAgICAgICAgICAoVCBub2RlKSlcbiAgICAgICAgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwiYWRkX2RlcGVuZGVuY3lcIjtcbiAgICAgIGxldCBlID0gVW9wdC51bnNhZmVfdmFsdWUgZV9vcHQgaW5cbiAgICAgIGxldCBuZXdfY2hpbGRfaW5kZXggPSBFeHBlcnQuYWRkX2NoaWxkX2VkZ2UgZSAoRSBkZXApIGluXG4gICAgICAoKiBbbm9kZV0gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgbmVjZXNzYXJ5LCBldmVuIGlmIHdlIGFyZSBydW5uaW5nIGluIGEgY2hpbGQgb2ZcbiAgICAgICAgIFtub2RlXSwgYmVjYXVzZSB3ZSBjb3VsZCBiZSBydW5uaW5nIGR1ZSB0byBhIHBhcmVudCBvdGhlciB0aGFuIFtub2RlXSBtYWtpbmcgdXNcbiAgICAgICAgIG5lY2Vzc2FyeS4gKilcbiAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRfcGFyZW50IH5jaGlsZDpkZXAuY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDpuZXdfY2hpbGRfaW5kZXg7XG4gICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpO1xuICAgICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgc3RhdGUucmVjb21wdXRlX2hlYXAgbm9kZSkpXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9kZXBlbmRlbmN5IChub2RlIDogXyBOb2RlLnQpIChlZGdlIDogXyBFeHBlcnQuZWRnZSkgPVxuICAgIGxldCBzdGF0ZSA9IG5vZGUuc3RhdGUgaW5cbiAgICBsZXQgZV9vcHQgPSBleHBlcnRfa2luZF9vZl9ub2RlIG5vZGUgaW5cbiAgICBpZiBVb3B0LmlzX3NvbWUgZV9vcHRcbiAgICB0aGVuIChcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBcInJlbW92ZV9kZXBlbmRlbmN5XCI7XG4gICAgICBsZXQgZSA9IFVvcHQudW5zYWZlX3ZhbHVlIGVfb3B0IGluXG4gICAgICAoKiBbbm9kZV0gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgbmVjZXNzYXJ5LCBmb3IgdGhlIHJlYXNvbiBzdGF0ZWQgaW5cbiAgICAgICAgIFthZGRfZGVwZW5kZW5jeV0gKilcbiAgICAgIGxldCBlZGdlX2luZGV4ID0gVW9wdC52YWx1ZV9leG4gZWRnZS5pbmRleCBpblxuICAgICAgbGV0IChFIGxhc3RfZWRnZSkgPSBFeHBlcnQubGFzdF9jaGlsZF9lZGdlX2V4biBlIGluXG4gICAgICBsZXQgbGFzdF9lZGdlX2luZGV4ID0gVW9wdC52YWx1ZV9leG4gbGFzdF9lZGdlLmluZGV4IGluXG4gICAgICBpZiBlZGdlX2luZGV4IDw+IGxhc3RfZWRnZV9pbmRleFxuICAgICAgdGhlbiAoXG4gICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgICAgdGhlblxuICAgICAgICAgIE5vZGUuc3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZFxuICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgfmNoaWxkMTplZGdlLmNoaWxkXG4gICAgICAgICAgICB+Y2hpbGRfaW5kZXgxOmVkZ2VfaW5kZXhcbiAgICAgICAgICAgIH5jaGlsZDI6bGFzdF9lZGdlLmNoaWxkXG4gICAgICAgICAgICB+Y2hpbGRfaW5kZXgyOmxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgRXhwZXJ0LnN3YXBfY2hpbGRyZW4gZSB+Y2hpbGRfaW5kZXgxOmVkZ2VfaW5kZXggfmNoaWxkX2luZGV4MjpsYXN0X2VkZ2VfaW5kZXg7XG4gICAgICAgIGlmIGRlYnVnIHRoZW4gTm9kZS5pbnZhcmlhbnQgaWdub3JlIG5vZGUpO1xuICAgICAgRXhwZXJ0LnJlbW92ZV9sYXN0X2NoaWxkX2VkZ2VfZXhuIGU7XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19zdGFsZSBub2RlKTtcbiAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgIHRoZW4gKFxuICAgICAgICByZW1vdmVfY2hpbGQgfmNoaWxkOmVkZ2UuY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDpsYXN0X2VkZ2VfaW5kZXg7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlO1xuICAgICAgICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgZWRnZS5jaGlsZCkgdGhlbiBFeHBlcnQuZGVjcl9pbnZhbGlkX2NoaWxkcmVuIGUpKVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIERlcGVuZGVuY3kgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgRXhwZXJ0LmVkZ2UgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlID8ob25fY2hhbmdlID0gaWdub3JlKSBjaGlsZCA6IF8gdCA9IHsgY2hpbGQ7IG9uX2NoYW5nZTsgaW5kZXggPSBVb3B0Lm5vbmUgfVxuXG4gIGxldCB2YWx1ZSAodCA6IF8gdCkgPVxuICAgIGxldCBzdGF0ZSA9IHQuY2hpbGQuc3RhdGUgaW5cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIFN0YXRlLkV4cGVydC5hc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19wYXJlbnRcbiAgICAgICAgc3RhdGVcbiAgICAgICAgdC5jaGlsZFxuICAgICAgICBcIkRlcGVuZGVuY3kudmFsdWVcIjtcbiAgICAoKiBOb3QgZXhwb3NpbmcgdGhlIF9leG4sIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBhZHZlcnRpc2VkIGFzIGJlaW5nIHVzYWJsZSBvbmx5XG4gICAgICAgaW5zaWRlIHRoZSBjYWxsYmFja3Mgb2YgcGFyZW50cywgd2hlcmUgaXQgd2lsbCBub3QgcmFpc2UuICopXG4gICAgTm9kZS52YWx1ZV9leG4gdC5jaGlsZFxuICA7O1xuZW5kXG5cbm1vZHVsZSBOb2RlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSBOb2RlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIHN0YXRlID8ob25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgPSBmdW4gfmlzX25vd19vYnNlcnZhYmxlOl8gLT4gKCkpIGYgPVxuICAgIFN0YXRlLkV4cGVydC5jcmVhdGUgc3RhdGUgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIGZcbiAgOztcblxuICBsZXQgbWFrZV9zdGFsZSA9IFN0YXRlLkV4cGVydC5tYWtlX3N0YWxlXG4gIGxldCB3YXRjaCA9IEZuLmlkXG4gIGxldCBpbnZhbGlkYXRlID0gU3RhdGUuRXhwZXJ0LmludmFsaWRhdGVcbiAgbGV0IGFkZF9kZXBlbmRlbmN5ID0gU3RhdGUuRXhwZXJ0LmFkZF9kZXBlbmRlbmN5XG4gIGxldCByZW1vdmVfZGVwZW5kZW5jeSA9IFN0YXRlLkV4cGVydC5yZW1vdmVfZGVwZW5kZW5jeVxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubGV0IGNyZWF0ZSBzdGF0ZSBjaGlsZHJlbiB+ZiB+cmVkdWNlID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBjaGlsZHJlbiBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVkdWNlciA9IEJhbGFuY2VkX3JlZHVjZXIuY3JlYXRlX2V4biAoKSB+bGVuIH5yZWR1Y2UgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIEJhbGFuY2VkX3JlZHVjZXIuaW52YXJpYW50IChjb25zdCAoKSkgcmVkdWNlcjtcbiAgICBsZXQgbm9kZSA9XG4gICAgICBFeHBlcnQxLk5vZGUuY3JlYXRlIHN0YXRlIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGEgPSBCYWxhbmNlZF9yZWR1Y2VyLmNvbXB1dGVfZXhuIHJlZHVjZXIgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlbiBCYWxhbmNlZF9yZWR1Y2VyLmludmFyaWFudCAoY29uc3QgKCkpIHJlZHVjZXI7XG4gICAgICAgIGEpXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgRXhwZXJ0MS5Ob2RlLmFkZF9kZXBlbmRlbmN5XG4gICAgICAgIG5vZGVcbiAgICAgICAgKEV4cGVydDEuRGVwZW5kZW5jeS5jcmVhdGUgY2hpbGRyZW4uKGkpIH5vbl9jaGFuZ2U6KGZ1biBhIC0+XG4gICAgICAgICAgIEJhbGFuY2VkX3JlZHVjZXIuc2V0X2V4biByZWR1Y2VyIGkgKGYgYSk7XG4gICAgICAgICAgIGlmIGRlYnVnIHRoZW4gQmFsYW5jZWRfcmVkdWNlci5pbnZhcmlhbnQgKGNvbnN0ICgpKSByZWR1Y2VyKSlcbiAgICBkb25lO1xuICAgIFNvbWUgKEV4cGVydDEuTm9kZS53YXRjaCBub2RlKSlcbjs7XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyBtb3N0bHkgYSB3cmFwcGVyIGFyb3VuZCBbU3RhdGVdIGZ1bmN0aW9ucy4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluY3JlbWVudGFsX2ludGZcblxubW9kdWxlIHR5cGUgSW5jcmVtZW50YWxfY29uZmlnID0gQ29uZmlnLkluY3JlbWVudGFsX2NvbmZpZ1xuXG5tb2R1bGUgQ29uZmlnID0gQ29uZmlnXG5cbmxldCBkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCA9IDEyOFxuXG5tb2R1bGUgR2VuZXJpYyA9IHN0cnVjdFxuICBtb2R1bGUgQ3V0b2ZmID0gQ3V0b2ZmXG4gIG1vZHVsZSBTdGVwX2Z1bmN0aW9uID0gU3RlcF9mdW5jdGlvblxuXG4gIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhdGVcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICB2YWwgdCA6IHRcbiAgICBlbmRcblxuICAgIGxldCBjcmVhdGVfaW50ZXJuYWwgPSBjcmVhdGVcblxuICAgIGxldCBjcmVhdGUgPyhtYXhfaGVpZ2h0X2FsbG93ZWQgPSBkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCkgKCkgOiAobW9kdWxlIFMpID1cbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgIGxldCB0ID0gY3JlYXRlIChtb2R1bGUgQ29uZmlnLkRlZmF1bHQgKCkpIH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgICAgIGVuZClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU2NvcGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNjb3BlXG5cbiAgICBsZXQgY3VycmVudCAoc3RhdGUgOiBTdGF0ZS50KSAoKSA9IHN0YXRlLmN1cnJlbnRfc2NvcGVcbiAgICBsZXQgd2l0aGluIHN0YXRlIHQgfmYgPSBTdGF0ZS53aXRoaW5fc2NvcGUgc3RhdGUgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIE5vZGVcblxuICBsZXQgc3RhdGUgdCA9IHQuc3RhdGVcbiAgbGV0IHBhY2sgdCA9IFBhY2tlZC5UIHRcbiAgbGV0IGNvbnN0IHN0YXRlIGEgPSBTdGF0ZS5jb25zdCBzdGF0ZSBhXG4gIGxldCByZXR1cm4gPSBjb25zdFxuICBsZXQgb2JzZXJ2ZSA9IFN0YXRlLmNyZWF0ZV9vYnNlcnZlclxuICBsZXQgbWFwID0gU3RhdGUubWFwXG4gIGxldCBiaW5kID0gU3RhdGUuYmluZFxuXG4gIG1vZHVsZSBOX2FyeV9tYXBfYW5kX2JpbmQgPSBzdHJ1Y3RcbiAgICBsZXQgbWFwMiA9IFN0YXRlLm1hcDJcbiAgICBsZXQgbWFwMyA9IFN0YXRlLm1hcDNcbiAgICBsZXQgbWFwNCA9IFN0YXRlLm1hcDRcbiAgICBsZXQgbWFwNSA9IFN0YXRlLm1hcDVcbiAgICBsZXQgbWFwNiA9IFN0YXRlLm1hcDZcbiAgICBsZXQgbWFwNyA9IFN0YXRlLm1hcDdcbiAgICBsZXQgbWFwOCA9IFN0YXRlLm1hcDhcbiAgICBsZXQgbWFwOSA9IFN0YXRlLm1hcDlcbiAgICBsZXQgbWFwMTAgPSBTdGF0ZS5tYXAxMFxuICAgIGxldCBtYXAxMSA9IFN0YXRlLm1hcDExXG4gICAgbGV0IG1hcDEyID0gU3RhdGUubWFwMTJcbiAgICBsZXQgbWFwMTMgPSBTdGF0ZS5tYXAxM1xuICAgIGxldCBtYXAxNCA9IFN0YXRlLm1hcDE0XG4gICAgbGV0IG1hcDE1ID0gU3RhdGUubWFwMTVcbiAgICBsZXQgYmluZDIgPSBTdGF0ZS5iaW5kMlxuICAgIGxldCBiaW5kMyA9IFN0YXRlLmJpbmQzXG4gICAgbGV0IGJpbmQ0ID0gU3RhdGUuYmluZDRcbiAgZW5kXG5cbiAgaW5jbHVkZSBOX2FyeV9tYXBfYW5kX2JpbmRcblxuICBtb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICAgIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIEluZml4XG5cbiAgbGV0IGpvaW4gPSBTdGF0ZS5qb2luXG4gIGxldCBpZl8gPSBTdGF0ZS5pZl9cbiAgbGV0IGxhenlfZnJvbV9mdW4gc3RhdGUgZiA9IFN0YXRlLmxhenlfZnJvbV9mdW4gc3RhdGUgfmZcbiAgbGV0IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUgPSBTdGF0ZS5kZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplXG4gIGxldCBtZW1vaXplX2Z1bl9ieV9rZXkgPSBTdGF0ZS5tZW1vaXplX2Z1bl9ieV9rZXlcblxuICBsZXQgbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBzdGF0ZSBoYXNoYWJsZSBmID1cbiAgICBtZW1vaXplX2Z1bl9ieV9rZXkgc3RhdGUgP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBGbi5pZCBmXG4gIDs7XG5cbiAgbGV0IGFycmF5X2ZvbGQgc3RhdGUgdHMgfmluaXQgfmYgPSBTdGF0ZS5hcnJheV9mb2xkIHN0YXRlIHRzIH5pbml0IH5mXG4gIGxldCByZWR1Y2VfYmFsYW5jZWQgc3RhdGUgdHMgfmYgfnJlZHVjZSA9IFJlZHVjZV9iYWxhbmNlZC5jcmVhdGUgc3RhdGUgdHMgfmYgfnJlZHVjZVxuXG4gIG1vZHVsZSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUgPSBTdGF0ZS5Vbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGVcblxuICBsZXQgdW5vcmRlcmVkX2FycmF5X2ZvbGQgPSBTdGF0ZS51bm9yZGVyZWRfYXJyYXlfZm9sZFxuICBsZXQgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkID0gU3RhdGUub3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkXG4gIGxldCBhbGwgPSBTdGF0ZS5hbGxcbiAgbGV0IGV4aXN0cyA9IFN0YXRlLmV4aXN0c1xuICBsZXQgZm9yX2FsbCA9IFN0YXRlLmZvcl9hbGxcbiAgbGV0IGJvdGggPSBTdGF0ZS5ib3RoXG4gIGxldCBzdW0gPSBTdGF0ZS5zdW1cbiAgbGV0IG9wdF9zdW0gPSBTdGF0ZS5vcHRfc3VtXG4gIGxldCBzdW1faW50ID0gU3RhdGUuc3VtX2ludFxuICBsZXQgc3VtX2Zsb2F0ID0gU3RhdGUuc3VtX2Zsb2F0XG5cbiAgbW9kdWxlIFZhciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyXG5cbiAgICBsZXQgY3JlYXRlID0gU3RhdGUuY3JlYXRlX3ZhclxuICAgIGxldCBzZXQgPSBTdGF0ZS5zZXRfdmFyXG4gICAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG4gICAgbGV0IHdhdGNoIHQgPSB0LndhdGNoXG5cbiAgICAoKiBXZSBvdmVycmlkZSBbc2V4cF9vZl90XSB0byBqdXN0IHNob3cgdGhlIHZhbHVlLCByYXRoZXIgdGhhbiB0aGUgaW50ZXJuYWxcbiAgICAgICByZXByZXNlbnRhdGlvbi4gKilcbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gdC52YWx1ZSB8PiBbJXNleHBfb2Y6IGFdXG4gICAgbGV0IHJlcGxhY2UgdCB+ZiA9IHNldCB0IChmIChsYXRlc3RfdmFsdWUgdCkpXG4gIGVuZFxuXG4gIG1vZHVsZSBPYnNlcnZlciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgT2JzZXJ2ZXJcblxuICAgIG1vZHVsZSBVcGRhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgSW5pdGlhbGl6ZWQgb2YgJ2FcbiAgICAgICAgfCBDaGFuZ2VkIG9mICdhICogJ2FcbiAgICAgICAgfCBJbnZhbGlkYXRlZFxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIGxldCBvbl91cGRhdGVfZXhuIHQgfihmIDogXyBVcGRhdGUudCAtPiB1bml0KSA9XG4gICAgICBTdGF0ZS5vYnNlcnZlcl9vbl91cGRhdGVfZXhuIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgTmVjZXNzYXJ5IGEgLT4gZiAoSW5pdGlhbGl6ZWQgYSlcbiAgICAgICAgfCBDaGFuZ2VkIChhMSwgYTIpIC0+IGYgKENoYW5nZWQgKGExLCBhMikpXG4gICAgICAgIHwgSW52YWxpZGF0ZWQgLT4gZiBJbnZhbGlkYXRlZFxuICAgICAgICB8IFVubmVjZXNzYXJ5IC0+XG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcIkluY3JlbWVudGFsIGJ1ZyAtLSBPYnNlcnZlci5vbl91cGRhdGVfZXhuIGdvdCB1bmV4cGVjdGVkIHVwZGF0ZSBVbm5lY2Vzc2FyeVwiXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBbJXNleHBfb2Y6IF8gdF0pXG4gICAgOztcblxuICAgIGxldCBkaXNhbGxvd19mdXR1cmVfdXNlIHQgPSBTdGF0ZS5kaXNhbGxvd19mdXR1cmVfdXNlICF0XG4gICAgbGV0IHZhbHVlID0gU3RhdGUub2JzZXJ2ZXJfdmFsdWVcbiAgICBsZXQgdmFsdWVfZXhuID0gU3RhdGUub2JzZXJ2ZXJfdmFsdWVfZXhuXG5cbiAgICAoKiBXZSBvdmVycmlkZSBbc2V4cF9vZl90XSB0byBqdXN0IHNob3cgdGhlIHZhbHVlLCByYXRoZXIgdGhhbiB0aGUgaW50ZXJuYWxcbiAgICAgICByZXByZXNlbnRhdGlvbi4gKilcbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSAodCA6IF8gdCkgPVxuICAgICAgbWF0Y2ggIXQuc3RhdGUgd2l0aFxuICAgICAgfCBDcmVhdGVkIC0+IFslbWVzc2FnZSBcIjx1bnN0YWJpbGl6ZWQ+XCJdXG4gICAgICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPiBbJW1lc3NhZ2UgXCI8ZGlzYWxsb3dlZD5cIl1cbiAgICAgIHwgSW5fdXNlIC0+XG4gICAgICAgIGxldCB1b3B0ID0gIXQub2JzZXJ2aW5nLnZhbHVlX29wdCBpblxuICAgICAgICBpZiBVb3B0LmlzX25vbmUgdW9wdFxuICAgICAgICB0aGVuIFslbWVzc2FnZSBcIjxpbnZhbGlkPlwiXVxuICAgICAgICBlbHNlIFslc2V4cCAoVW9wdC51bnNhZmVfdmFsdWUgdW9wdCA6IGEpXVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBCZWZvcmVfb3JfYWZ0ZXIgPSBCZWZvcmVfb3JfYWZ0ZXJcblxuICBtb2R1bGUgQ2xvY2sgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFN0YXRlLkNsb2NrXG5cbiAgICBsZXQgc3RhdGUgPSBpbmNyX3N0YXRlXG5cbiAgICBsZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnID1cbiAgICAgIGxldCBhbGFybV9wcmVjaXNpb24gPSBBbGFybV9wcmVjaXNpb24uYWJvdXRfb25lX21pbGxpc2Vjb25kIGluXG4gICAgICBsZXQgbGV2ZWxfYml0cyA9IFsgMTQ7IDEzOyA1IF0gaW5cbiAgICAgIFRpbWluZ193aGVlbC5Db25maWcuY3JlYXRlXG4gICAgICAgIH5hbGFybV9wcmVjaXNpb25cbiAgICAgICAgfmxldmVsX2JpdHM6XG4gICAgICAgICAgKFRpbWluZ193aGVlbC5MZXZlbF9iaXRzLmNyZWF0ZV9leG4gbGV2ZWxfYml0cyB+ZXh0ZW5kX3RvX21heF9udW1fYml0czp0cnVlKVxuICAgICAgICAoKVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlIHN0YXRlID8odGltaW5nX3doZWVsX2NvbmZpZyA9IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZykgfnN0YXJ0ICgpID1cbiAgICAgICgqIE1ha2Ugc3VyZSBbc3RhcnRdIGlzIHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgbWljcm9zZWNvbmQuICBPdGhlcndpc2UsIGlmIHlvdVxuICAgICAgICAgZmVlZCBbQ2xvY2subm93ICgpXSB0byBhIHRpbWUgZnVuY3Rpb24sIGl0IGNhbiBiZSByb3VuZGVkIGRvd24gdG8gYSB0aW1lIGluXG4gICAgICAgICB0aGUgcGFzdCwgY2F1c2luZyBlcnJvcnMuICopXG4gICAgICBsZXQgc3RhcnQgPVxuICAgICAgICBUaW1lX25zLm9mX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxuICAgICAgICAgIChUaW1lX25zLnRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCBzdGFydClcbiAgICAgIGluXG4gICAgICBTdGF0ZS5jcmVhdGVfY2xvY2sgc3RhdGUgfnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0XG4gICAgOztcblxuICAgIGxldCBhbGFybV9wcmVjaXNpb24gdCA9IFRpbWluZ193aGVlbC5hbGFybV9wcmVjaXNpb24gdC50aW1pbmdfd2hlZWxcbiAgICBsZXQgdGltaW5nX3doZWVsX2xlbmd0aCA9IFN0YXRlLnRpbWluZ193aGVlbF9sZW5ndGhcbiAgICBsZXQgbm93ID0gU3RhdGUubm93XG4gICAgbGV0IHdhdGNoX25vdyB0ID0gdC5ub3cud2F0Y2hcbiAgICBsZXQgYXQgPSBTdGF0ZS5hdFxuICAgIGxldCBhZnRlciA9IFN0YXRlLmFmdGVyXG4gICAgbGV0IGF0X2ludGVydmFscyA9IFN0YXRlLmF0X2ludGVydmFsc1xuICAgIGxldCBhZHZhbmNlX2Nsb2NrID0gU3RhdGUuYWR2YW5jZV9jbG9ja1xuICAgIGxldCBhZHZhbmNlX2Nsb2NrX2J5IHQgc3BhbiA9IGFkdmFuY2VfY2xvY2sgdCB+dG9fOihUaW1lX25zLmFkZCAobm93IHQpIHNwYW4pXG4gICAgbGV0IGluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24gPSBTdGF0ZS5pbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uXG5cbiAgICBsZXQgc3RlcF9mdW5jdGlvbiB0IH5pbml0IHN0ZXBzID1cbiAgICAgIGluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb25cbiAgICAgICAgdFxuICAgICAgICAoY29uc3QgKGluY3Jfc3RhdGUgdCkgKFN0ZXBfZnVuY3Rpb24uY3JlYXRlX2V4biB+aW5pdCB+c3RlcHMpKVxuICAgIDs7XG5cbiAgICBsZXQgc25hcHNob3QgPSBTdGF0ZS5zbmFwc2hvdFxuICBlbmRcblxuICBsZXQgZnJlZXplID8od2hlbl8gPSBmdW4gXyAtPiB0cnVlKSB0ID0gU3RhdGUuZnJlZXplIHQgfm9ubHlfZnJlZXplX3doZW46d2hlbl9cbiAgbGV0IGRlcGVuZF9vbiB0IH5kZXBlbmRfb24gPSBTdGF0ZS5kZXBlbmRfb24gdCB+ZGVwZW5kX29uXG4gIGxldCBuZWNlc3NhcnlfaWZfYWxpdmUgPSBTdGF0ZS5uZWNlc3NhcnlfaWZfYWxpdmVcblxuICBtb2R1bGUgVXBkYXRlID0gT25fdXBkYXRlX2hhbmRsZXIuTm9kZV91cGRhdGVcblxuICBsZXQgb25fdXBkYXRlID0gU3RhdGUubm9kZV9vbl91cGRhdGVcbiAgbGV0IHN0YWJpbGl6ZSBzdGF0ZSA9IFN0YXRlLnN0YWJpbGl6ZSBzdGF0ZVxuICBsZXQgYW1fc3RhYmlsaXppbmcgc3RhdGUgPSBTdGF0ZS5hbV9zdGFiaWxpemluZyBzdGF0ZVxuICBsZXQgc2F2ZV9kb3QgPSBTdGF0ZS5zYXZlX2RvdFxuICBsZXQgc2F2ZV9kb3RfdG9fZmlsZSA9IFN0YXRlLnNhdmVfZG90X3RvX2ZpbGVcblxuICBtb2R1bGUgTm9kZV92YWx1ZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IEludmFsaWRcbiAgICAgIHwgTmVjZXNzYXJ5X21heWJlX3N0YWxlIG9mICdhIG9wdGlvblxuICAgICAgfCBVbm5lY2Vzc2FyeV9tYXliZV9zdGFsZSBvZiAnYSBvcHRpb25cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgbm9kZV92YWx1ZSB0IDogXyBOb2RlX3ZhbHVlLnQgPVxuICAgIGlmIG5vdCAoaXNfdmFsaWQgdClcbiAgICB0aGVuIEludmFsaWRcbiAgICBlbHNlIGlmIGlzX25lY2Vzc2FyeSB0XG4gICAgdGhlbiBOZWNlc3NhcnlfbWF5YmVfc3RhbGUgKFVvcHQudG9fb3B0aW9uIHQudmFsdWVfb3B0KVxuICAgIGVsc2UgVW5uZWNlc3NhcnlfbWF5YmVfc3RhbGUgKFVvcHQudG9fb3B0aW9uIHQudmFsdWVfb3B0KVxuICA7O1xuXG4gICgqIFdlIG92ZXJyaWRlIFtzZXhwX29mX3RdIHRvIHNob3cganVzdCB0aGUgdmFsdWUsIHJhdGhlciB0aGFuIHRoZSBpbnRlcm5hbFxuICAgICByZXByZXNlbnRhdGlvbi4gIFdlIG9ubHkgc2hvdyB0aGUgdmFsdWUgaWYgaXQgaXMgbmVjZXNzYXJ5IGFuZCB2YWxpZC4gKilcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgaWYgbm90IChpc192YWxpZCB0KVxuICAgIHRoZW4gXCI8aW52YWxpZD5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBlbHNlIGlmIG5vdCAoaXNfbmVjZXNzYXJ5IHQpXG4gICAgdGhlbiBcIjx1bm5lY2Vzc2FyeT5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBlbHNlIGlmIFVvcHQuaXNfbm9uZSB0LnZhbHVlX29wdFxuICAgIHRoZW4gXCI8dW5jb21wdXRlZD5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBlbHNlIHVuc2FmZV92YWx1ZSB0IHw+IFslc2V4cF9vZjogYV1cbiAgOztcblxuICBtb2R1bGUgRXhwZXJ0ID0gRXhwZXJ0MVxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoID4+PSApID0gKCA+Pj0gKVxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0IGJvdGggdDEgdDIgPSBtYXAyIHQxIHQyIH5mOihmdW4geDEgeDIgLT4geDEsIHgyKVxuXG4gICAgICBpbmNsdWRlIE5fYXJ5X21hcF9hbmRfYmluZFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IHdhdGNoID0gVmFyLndhdGNoXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID0gU3RhdGUud2Vha19tZW1vaXplX2Z1bl9ieV9rZXlcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIHN0YXRlIGhhc2hhYmxlIGYgPVxuICAgIHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgc3RhdGUgaGFzaGFibGUgRm4uaWQgZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfY29uZmlnIChJbmNyZW1lbnRhbF9jb25maWcgOiBJbmNyZW1lbnRhbF9jb25maWcpICgpID0gc3RydWN0XG4gIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGUgR2VuZXJpY1xuXG4gIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhdGVcblxuICAgIGxldCB0ID0gY3JlYXRlX2ludGVybmFsIChtb2R1bGUgSW5jcmVtZW50YWxfY29uZmlnKSB+bWF4X2hlaWdodF9hbGxvd2VkOjEyOFxuICBlbmRcblxuICBtb2R1bGUgQ2xvY2sgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENsb2NrXG5cbiAgICBsZXQgY3JlYXRlID90aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydCAoKSA9XG4gICAgICBjcmVhdGUgP3RpbWluZ193aGVlbF9jb25maWcgU3RhdGUudCB+c3RhcnQgKClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgaW5jbHVkZSBFeHBlcnRcblxuICAgIG1vZHVsZSBOb2RlID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE5vZGVcblxuICAgICAgbGV0IGNyZWF0ZSA/b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZiA9IGNyZWF0ZSBTdGF0ZS50ID9vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBmXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3RlcF9yZXN1bHQgPSBTdGF0ZS5TdGVwX3Jlc3VsdFxuXG4gICAgbGV0IGRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSAoKSA9IFN0YXRlLmRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSBTdGF0ZS50XG4gIGVuZFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBMZXRfc3ludGF4XG5cbiAgICBsZXQgcmV0dXJuIGEgPSByZXR1cm4gU3RhdGUudCBhXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBMZXRfc3ludGF4XG5cbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFNjb3BlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTY29wZVxuXG4gICAgbGV0IGN1cnJlbnQgKCkgPSBjdXJyZW50IFN0YXRlLnQgKClcbiAgICBsZXQgd2l0aGluIHQgfmYgPSB3aXRoaW4gU3RhdGUudCB0IH5mXG4gIGVuZFxuXG4gIG1vZHVsZSBWYXIgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFZhclxuXG4gICAgbGV0IGNyZWF0ZSA/dXNlX2N1cnJlbnRfc2NvcGUgdmFsdWUgPSBjcmVhdGUgP3VzZV9jdXJyZW50X3Njb3BlIFN0YXRlLnQgdmFsdWVcbiAgZW5kXG5cbiAgbGV0IGNvbnN0IGEgPSBjb25zdCBTdGF0ZS50IGFcbiAgbGV0IHJldHVybiBhID0gcmV0dXJuIFN0YXRlLnQgYVxuICBsZXQgYWxsIHRzID0gYWxsIFN0YXRlLnQgdHNcbiAgbGV0IGV4aXN0cyB0cyA9IGV4aXN0cyBTdGF0ZS50IHRzXG4gIGxldCBmb3JfYWxsIHRzID0gZm9yX2FsbCBTdGF0ZS50IHRzXG4gIGxldCBsYXp5X2Zyb21fZnVuIHN0YXRlIGYgPSBTdGF0ZS5sYXp5X2Zyb21fZnVuIHN0YXRlIH5mXG5cbiAgbGV0IG1lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIHByb2plY3Rfa2V5IGYgPVxuICAgIG1lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIFN0YXRlLnQgaGFzaGFibGUgcHJvamVjdF9rZXkgZlxuICA7O1xuXG4gIGxldCBtZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIGYgPSBtZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIFN0YXRlLnQgaGFzaGFibGUgZlxuICBsZXQgYXJyYXlfZm9sZCB0cyB+aW5pdCB+ZiA9IGFycmF5X2ZvbGQgU3RhdGUudCB0cyB+aW5pdCB+ZlxuICBsZXQgcmVkdWNlX2JhbGFuY2VkIHRzIH5mIH5yZWR1Y2UgPSByZWR1Y2VfYmFsYW5jZWQgU3RhdGUudCB0cyB+ZiB+cmVkdWNlXG5cbiAgbGV0IHVub3JkZXJlZF9hcnJheV9mb2xkID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH5pbml0IH5mIH51cGRhdGUgPVxuICAgIHVub3JkZXJlZF9hcnJheV9mb2xkIFN0YXRlLnQgdHMgfmluaXQgfmYgfnVwZGF0ZSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICA7O1xuXG4gIGxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfmluaXQgfmYgfmZfaW52ZXJzZSA9XG4gICAgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIFN0YXRlLnQgdHMgfmluaXQgfmYgfmZfaW52ZXJzZVxuICA7O1xuXG4gIGxldCBzdW0gP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfnplcm8gfmFkZCB+c3ViID1cbiAgICBzdW0gP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgU3RhdGUudCB0cyB+emVybyB+YWRkIH5zdWJcbiAgOztcblxuICBsZXQgb3B0X3N1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+emVybyB+YWRkIH5zdWIgPVxuICAgIG9wdF9zdW0gP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgU3RhdGUudCB0cyB+emVybyB+YWRkIH5zdWJcbiAgOztcblxuICBsZXQgc3VtX2ludCB0cyA9IHN1bV9pbnQgU3RhdGUudCB0c1xuICBsZXQgc3VtX2Zsb2F0IHRzID0gc3VtX2Zsb2F0IFN0YXRlLnQgdHNcbiAgbGV0IHN0YWJpbGl6ZSAoKSA9IHN0YWJpbGl6ZSBTdGF0ZS50XG4gIGxldCBhbV9zdGFiaWxpemluZyAoKSA9IGFtX3N0YWJpbGl6aW5nIFN0YXRlLnRcbiAgbGV0IHNhdmVfZG90IG91dCA9IHNhdmVfZG90IFN0YXRlLnQgb3V0XG4gIGxldCBzYXZlX2RvdF90b19maWxlIGZpbGUgPSBPdXRfY2hhbm5lbC53aXRoX2ZpbGUgZmlsZSB+ZjpzYXZlX2RvdFxuICBsZXQgbGF6eV9mcm9tX2Z1biBmID0gbGF6eV9mcm9tX2Z1biBTdGF0ZS50IGZcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBwcm9qZWN0X2tleSBmID1cbiAgICB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIFN0YXRlLnQgaGFzaGFibGUgcHJvamVjdF9rZXkgZlxuICA7O1xuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuID9pbml0aWFsX3NpemUgaGFzaGFibGUgZiA9XG4gICAgd2Vha19tZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIFN0YXRlLnQgaGFzaGFibGUgZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlICgpID0gTWFrZV93aXRoX2NvbmZpZyAoQ29uZmlnLkRlZmF1bHQgKCkpICgpXG5pbmNsdWRlIEdlbmVyaWNcblxubW9kdWxlIEFkZF93aXRuZXNzMCAoTSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBzaWdcbiAgdHlwZSAndyB0ID0gTS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ3cgdCA9IE0udFxuXG4gIGxldCBpbnZhcmlhbnQgXyB0ID0gTS5pbnZhcmlhbnQgdFxuICBsZXQgc2V4cF9vZl90IF8gdCA9IE0uc2V4cF9vZl90IHRcbmVuZFxuXG5tb2R1bGUgQWRkX3dpdG5lc3MxIChNIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGVuZCkgOiBzaWdcbiAgdHlwZSAoJ2EsICd3KSB0ID0gJ2EgTS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAndykgdCA9ICdhIE0udFxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgXyB0ID0gTS5pbnZhcmlhbnQgaW52YXJpYW50X2EgdFxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBNLnNleHBfb2ZfdCBzZXhwX29mX2EgdFxuZW5kXG5cbm1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICBpbmNsdWRlIENsb2NrXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MwIChDbG9jaylcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGluY2x1ZGUgRXhwZXJ0XG5cbiAgbW9kdWxlIERlcGVuZGVuY3kgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERlcGVuZGVuY3lcblxuICAgIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBEZXBlbmRlbmN5XG5cbiAgICAgICAgbGV0IGludmFyaWFudCBfIF8gPSAoKVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgTm9kZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTm9kZVxuXG4gICAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE5vZGVcblxuICAgICAgICBsZXQgaW52YXJpYW50IF8gXyA9ICgpXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGVwX3Jlc3VsdCA9IFN0YXRlLlN0ZXBfcmVzdWx0XG5cbiAgbGV0IGRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSBzdGF0ZSA9IFN0YXRlLmRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSBzdGF0ZVxuZW5kXG5cbm1vZHVsZSBOb2RlID0gc3RydWN0XG4gIGluY2x1ZGUgTm9kZVxuICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoTm9kZSlcbmVuZFxuXG50eXBlICgnYSwgJ3cpIHQgPSAoJ2EsICd3KSBOb2RlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbnR5cGUgKCdhLCAndykgaW5jcmVtZW50YWwgPSAoJ2EsICd3KSB0XG5cbmxldCBpbnZhcmlhbnQgPSBOb2RlLmludmFyaWFudFxuXG5tb2R1bGUgT2JzZXJ2ZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBPYnNlcnZlclxuICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoT2JzZXJ2ZXIpXG5lbmRcblxubW9kdWxlIFNjb3BlID0gc3RydWN0XG4gIGluY2x1ZGUgU2NvcGVcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczAgKFNjb3BlKVxuZW5kXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YXRlXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MwIChTdGF0ZSlcbmVuZFxuXG5tb2R1bGUgVmFyID0gc3RydWN0XG4gIGluY2x1ZGUgVmFyXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChWYXIpXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHN0YXRlX3dpdG5lc3MgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlXG4gICAgU19nZW5cbiAgICB3aXRoIHR5cGUgJ2EgdCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgaW5jcmVtZW50YWxcbiAgICB3aXRoIHR5cGUgQmVmb3JlX29yX2FmdGVyLnQgPSBCZWZvcmVfb3JfYWZ0ZXIudFxuICAgIHdpdGggdHlwZSBDbG9jay50ID0gc3RhdGVfd2l0bmVzcyBDbG9jay50XG4gICAgd2l0aCB0eXBlICdhIEN1dG9mZi50ID0gJ2EgQ3V0b2ZmLnRcbiAgICB3aXRoIHR5cGUgJ2EgRXhwZXJ0LkRlcGVuZGVuY3kudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgRXhwZXJ0LkRlcGVuZGVuY3kudFxuICAgIHdpdGggdHlwZSAnYSBFeHBlcnQuTm9kZS50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBFeHBlcnQuTm9kZS50XG4gICAgd2l0aCB0eXBlIEV4cGVydC5TdGVwX3Jlc3VsdC50ID0gRXhwZXJ0LlN0ZXBfcmVzdWx0LnRcbiAgICB3aXRoIHR5cGUgJ2EgT2JzZXJ2ZXIudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgT2JzZXJ2ZXIudFxuICAgIHdpdGggdHlwZSAnYSBPYnNlcnZlci5VcGRhdGUudCA9ICdhIE9ic2VydmVyLlVwZGF0ZS50XG4gICAgd2l0aCB0eXBlIFBhY2tlZC50ID0gUGFja2VkLnRcbiAgICB3aXRoIHR5cGUgU2NvcGUudCA9IHN0YXRlX3dpdG5lc3MgU2NvcGUudFxuICAgIHdpdGggdHlwZSBTdGF0ZS50ID0gc3RhdGVfd2l0bmVzcyBTdGF0ZS50XG4gICAgd2l0aCB0eXBlIFN0YXRlLlN0YXRzLnQgPSBTdGF0ZS5TdGF0cy50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIFVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZS50ID1cbiAgICAgICAgICAgKCdhLCAnYikgVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlLnRcbiAgICB3aXRoIHR5cGUgJ2EgVXBkYXRlLnQgPSAnYSBVcGRhdGUudFxuICAgIHdpdGggdHlwZSAnYSBWYXIudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgVmFyLnRcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgZGVidWcgPSBkZWJ1Z1xuZW5kXG4iLCJcbm9wZW4gQmFzZVxuXG5tb2R1bGUgQ29tbXV0YXRpdmVfZ3JvdXAgPSBzdHJ1Y3RcbiAgKCoqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgaW50ZXJmYWNlIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcblxuICAgICAgKyBhc3NvY2lhdGl2aXR5OiBbKGEgKyBiKSArIGMgPSBhICsgKGIgKyBjKV1cbiAgICAgICsgaWRlbnRpdHk6IFt6ZXJvICsgYSA9IGEgKyB6ZXJvID0gYV1cbiAgICAgICsgaW52ZXJzZXM6IGdpdmVuIGFueSBbYV0gdGhlcmUgZXhpc3RzIGEgKHVuaXF1ZSkgZWx0IFtiXSBzdWNoIHRoYXQgW2EgKyBiID0gYiArIGEgPVxuICAgICAgemVyb11cbiAgICAgICsgY29tbXV0YXRpdml0eTogW2EgKyBiID0gYiArIGFdXG4gICopXG5cbiAgbW9kdWxlIHR5cGUgV2l0aG91dF9zZXhwID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgKCspICA6IHQgLT4gdCAtPiB0XG4gICAgdmFsICgtKSAgOiB0IC0+IHQgLT4gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG4gICAgaW5jbHVkZSBXaXRob3V0X3NleHAgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVmVjdG9yX3NwYWNlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcbiAgICBpbmNsdWRlIENvbW11dGF0aXZlX2dyb3VwLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIHZhbCBzY2FsZSA6IHQgLT4gZmxvYXQgLT4gdFxuICBlbmRcbmVuZFxuIiwib3BlbiEgQ29yZVxuXG5tb2R1bGUgSW5zdHJ1bWVudGF0aW9uID0gc3RydWN0XG4gICgqKiBBbGwgW0luY3JfbWFwXSBmdW5jdGlvbnMgdGFrZSBhbiBvcHRpb25hbCBbaW5zdHJ1bWVudGF0aW9uXSBwYXJhbWV0ZXIgdGhhdCBoYXMgdHlwZVxuICAgICAgW0luc3RydW1lbnRhdGlvbi50XS4gIEEgdmFsdWUgb2YgdGhpcyB0eXBlIGlzIGEgcmVjb3JkIGNvbnRhaW5pbmcgYSBmdW5jdGlvbiB3aGljaFxuICAgICAgaXMgcG9seW1vcnBoaWMgb3ZlciBhIHVuaXZlcnNhbGx5LXF1YW50aWZpZWQgdHlwZSBbJ2FdLiBUaGlzIGZ1bmN0aW9uIGlzIHBhc3NlZFxuICAgICAgYSBbdW5pdCAtPiAnYV0gZnVuY3Rpb24sIHdoaWNoIG11c3QgYmUgaW1tZWRpYXRlbHkgZXhlY3V0ZWQsIGFuZCB0aGUgcmVzdWx0IG9mXG4gICAgICB3aGljaCBtdXN0IGJlIHJldHVybmVkLlxuXG4gICAgICBUaGUgZnVuY3Rpb24gcGFzc2VkIHRvIHRoZSBpbnN0cnVtZW50b3Igd2lsbCBiZSBkb2luZyB0aGUgYnVsayBvZiB0aGUgd29yayBmb3IgdGhlXG4gICAgICBbSW5jcl9tYXBdIGZ1bmN0aW9uIGluIHF1ZXN0aW9uICh1c3VhbGx5IGEgW01hcC5mb2xkX3N5bW1ldHJpY19kaWZmXSkuXG5cbiAgICAgIFlvdSBtYXkgd2FudCB0byB1c2UgdGhlIEluc3RydW1lbnRhdGlvbiBBUEkgdG8gYXNzaXN0IGluIHBlcmZvcm1hbmNlIHByb2ZpbGluZyBsaWtlXG4gICAgICBzbzpcblxuICAgICAge1tcbiAgICAgICAgbGV0IHByb2ZpbGUgbmFtZSA9XG4gICAgICAgICAgeyBJbmNyX21hcC5JbnN0cnVtZW50YXRpb24uZiA9IGZ1biBmIC0+XG4gICAgICAgICAgICAgIGxldCBiZWZvcmUgPSBUaW1lLm5vdyAoKSBpblxuICAgICAgICAgICAgICBsZXQgciA9IGYgKCkgaW5cbiAgICAgICAgICAgICAgbGV0IGFmdGVyID0gVGltZS5ub3cgKCkgaW5cbiAgICAgICAgICAgICAgbGV0IGRlbHRhID0gVGltZS5zdWIgYWZ0ZXIgYmVmb3JlIGluXG4gICAgICAgICAgICAgIHByaW50ZiBcIiVzIHRvb2sgJXNcIiBuYW1lIChUaW1lLlNwYW4udG9fc3RyaW5nX2h1bSBkZWx0YSk7XG4gICAgICAgICAgICAgIHJcbiAgICAgICAgICB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgSW5jcl9tYXAubWFwIH5pbnN0cnVtZW50YXRpb246KHByb2ZpbGUgXCJmb29cIikgfmY6bWFwX2Zvb1xuICAgICAgXX0gKilcblxuICB0eXBlIHQgPSB7IGYgOiAnYS4gKHVuaXQgLT4gJ2EpIC0+ICdhIH0gW0BAdW5ib3hlZF1cbmVuZFxuXG4oKiogW1NfZ2VuXSBpcyB0aGUgdHlwZSBvZiB0aGUgbW9kdWxlIHJldHVybmVkIGJ5IFtJbmNyX21hcC5NYWtlXS4gIEl0IGlzIGEgc3BlY2lhbGl6YXRpb25cbiAgICBvZiB0aGUgaW50ZXJmYWNlIG9mIFtJbmNyX21hcF0sIHdpdGg6XG5cbiAgICAtIHRoZSBbJ3ddIHN0YXRlX3dpdG5lc3MgdHlwZSBwYXJhbWV0ZXIgcmVtb3ZlZFxuICAgIC0gdGhlIFtJbmNyZW1lbnRhbC5TdGF0ZS50XSBhcmd1bWVudCByZW1vdmVkXG5cbiAgICBUaGUgY29tbWVudHMgZm9yIGNvbXBvbmVudHMgb2YgW1NfZ2VuXSBhcmUgaW4gW21vZHVsZSB0eXBlIEluY3JfbWFwXSBiZWxvdy4gKilcbm1vZHVsZSB0eXBlIFNfZ2VuID0gc2lnXG4gIG1vZHVsZSBJbmNyIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICBtb2R1bGUgQ3V0b2ZmIDogc2lnXG4gICAgICB0eXBlICdhIHRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEluc3RydW1lbnRhdGlvbiA9IEluc3RydW1lbnRhdGlvblxuXG4gIHZhbCBvZl9zZXRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCdrLCAnY21wKSBTZXQudCBJbmNyLnRcbiAgICAtPiAoJ2ssIHVuaXQsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MilcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YxIC0+ICd2MiBvcHRpb24pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBtYXBcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YxIC0+ICd2MilcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGZpbHRlcl9tYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIEluY3IudCAtPiAndjIgb3B0aW9uIEluY3IudClcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgSW5jci50IC0+ICd2MiBJbmNyLnQpXG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBmaWx0ZXJfbWFwJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YxIEluY3IudCAtPiAndjIgb3B0aW9uIEluY3IudClcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcCdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KCd2MSBJbmNyLnQgLT4gJ3YyIEluY3IudClcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgKiAoJ2ssICd2MywgJ2NtcCkgTWFwLnQpIEluY3IudFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSBJbmNyLnQgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudCBJbmNyLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCAqICgnaywgJ3YzLCAnY21wKSBNYXAudCkgSW5jci50XG5cbiAgdmFsIHVub3JkZXJlZF9mb2xkXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID91cGRhdGU6KGtleTonayAtPiBvbGRfZGF0YTondiAtPiBuZXdfZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gP3NwZWNpYWxpemVkX2luaXRpYWw6KGluaXQ6J2FjYyAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCAtPiAnYWNjKVxuICAgIC0+ID9maW5hbGl6ZTooJ2FjYyAtPiAnYWNjKVxuICAgIC0+ID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OmJvb2xcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBhZGQ6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiByZW1vdmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiAnYWNjIEluY3IudFxuXG4gIHZhbCB1bm9yZGVyZWRfZm9sZF93aXRoX2V4dHJhXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID9leHRyYV9lcXVhbDooJ2V4dHJhIC0+ICdleHRyYSAtPiBib29sKVxuICAgIC0+ID91cGRhdGU6KGtleTonayAtPiBvbGRfZGF0YTondiAtPiBuZXdfZGF0YTondiAtPiAnYWNjIC0+ICdleHRyYSAtPiAnYWNjKVxuICAgIC0+ID9zcGVjaWFsaXplZF9pbml0aWFsOihpbml0OidhY2MgLT4gKCdrLCAndiwgJ2UpIE1hcC50IC0+ICdleHRyYSAtPiAnYWNjKVxuICAgIC0+ID9maW5hbGl6ZTooJ2FjYyAtPiAnYWNjKVxuICAgIC0+ID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OmJvb2xcbiAgICAtPiAoJ2ssICd2LCAnZSkgTWFwLnQgSW5jci50XG4gICAgLT4gJ2V4dHJhIEluY3IudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiByZW1vdmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gZXh0cmFfY2hhbmdlZDpcbiAgICAgICAgIChvbGRfZXh0cmE6J2V4dHJhXG4gICAgICAgICAgLT4gbmV3X2V4dHJhOidleHRyYVxuICAgICAgICAgIC0+IGlucHV0OignaywgJ3YsICdlKSBNYXAudFxuICAgICAgICAgIC0+ICdhY2NcbiAgICAgICAgICAtPiAnYWNjKVxuICAgIC0+ICdhY2MgSW5jci50XG5cbiAgdmFsIGN1dG9mZlxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjdXRvZmY6J3YgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwaV9jb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sxIC0+IGRhdGE6J3YgLT4gJ2syKVxuICAgIC0+ICgnazIsIGludCwgJ2NtcDIpIE1hcC50IEluY3IudFxuXG4gIHZhbCBtYXBfY291bnRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ2syKVxuICAgIC0+ICgnazIsIGludCwgJ2NtcDIpIE1hcC50IEluY3IudFxuXG4gIHZhbCBtYXBpX21pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICdyIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWFwaV9tYXhcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAncilcbiAgICAtPiAnciBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1hcF9taW5cbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAncilcbiAgICAtPiAnciBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1hcF9tYXhcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAncilcbiAgICAtPiAnciBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1pbl92YWx1ZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOigndiwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICd2IG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWF4X3ZhbHVlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCd2LCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3Ygb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtYXBpX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICgnciAqICdyKSBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1hcF9ib3VuZHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAncilcbiAgICAtPiAoJ3IgKiAncikgb3B0aW9uIEluY3IudFxuXG4gIHZhbCB2YWx1ZV9ib3VuZHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ3YgKiAndikgb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtZXJnZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbF9sZWZ0OigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP2RhdGFfZXF1YWxfcmlnaHQ6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiAoJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQgLT4gJ3YzIG9wdGlvbilcbiAgICAtPiAoJ2ssICd2MywgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1lcmdlX2JvdGhfc29tZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbF9sZWZ0OigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP2RhdGFfZXF1YWxfcmlnaHQ6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiA/b3V0X2VxdWFsOigndjMgLT4gJ3YzIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gJ3YxIC0+ICd2MiAtPiAndjMpXG4gICAgLT4gKCdrLCAndjMsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCB1bnppcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/bGVmdF9yZXN1bHRfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/cmlnaHRfcmVzdWx0X2VxdWFsOigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEgKiAndjIsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnQgKiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHVuemlwX21hcGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP2xlZnRfcmVzdWx0X2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP3JpZ2h0X3Jlc3VsdF9lcXVhbDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICd2MSAqICd2MilcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50ICogKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCB1bnppcF9tYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2IEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiBJbmNyLnQgLT4gJ3YxIEluY3IudCAqICd2MiBJbmNyLnQpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudCAqICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWVyZ2UnXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6KCd2MSwgJ3YyKSBNYXAuTWVyZ2VfZWxlbWVudC50IEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbF9sZWZ0OigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP2RhdGFfZXF1YWxfcmlnaHQ6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiAoJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQgSW5jci50IC0+ICd2MyBvcHRpb24gSW5jci50KVxuICAgIC0+ICgnaywgJ3YzLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgZmxhdHRlbiA6ICgnaywgJ3YgSW5jci50LCAnY21wKSBNYXAudCAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgam9pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoJ2ssICd2IEluY3IudCwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHNlcGFyYXRlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiBJbmNyLnQsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBrZXlzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YsICdjKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2ssICdjKSBTZXQudCBJbmNyLnRcblxuICB2YWwgcmFua1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBCYXNlLk1hcC50IEluY3IudFxuICAgIC0+ICdrIEluY3IudFxuICAgIC0+IGludCBvcHRpb24gSW5jci50XG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+ICgnayBNYXliZV9ib3VuZC5Bc19sb3dlcl9ib3VuZC50ICogJ2sgTWF5YmVfYm91bmQuQXNfdXBwZXJfYm91bmQudCkgb3B0aW9uIEluY3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBzdWJyYW5nZV9ieV9yYW5rXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IChpbnQgTWF5YmVfYm91bmQuQXNfbG93ZXJfYm91bmQudCAqIGludCBNYXliZV9ib3VuZC5Bc191cHBlcl9ib3VuZC50KSBJbmNyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgcmVrZXlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrMSAtPiBkYXRhOid2IC0+ICdrMilcbiAgICAtPiAoJ2syLCAndiwgJ2NtcDIpIE1hcC50IEluY3IudFxuXG4gIHZhbCBpbmRleF9ieWlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5kZXg6KGtleTonaW5uZXJfa2V5IC0+IGRhdGE6J3YgLT4gJ291dGVyX2tleSBvcHRpb24pXG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBpbmRleF9ieVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdvdXRlcl9rZXksICdvdXRlcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpbmRleDooJ3YgLT4gJ291dGVyX2tleSBvcHRpb24pXG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTpib29sXG4gICAgLT4gP3VwZGF0ZTpcbiAgICAgICAgIChvdXRlcl9rZXk6J291dGVyX2tleVxuICAgICAgICAgIC0+IGlubmVyX2tleTonaW5uZXJfa2V5XG4gICAgICAgICAgLT4gb2xkX2RhdGE6J3ZcbiAgICAgICAgICAtPiBuZXdfZGF0YTondlxuICAgICAgICAgIC0+ICdhY2NcbiAgICAgICAgICAtPiAnYWNjKVxuICAgIC0+ICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBhZGQ6KG91dGVyX2tleTonb3V0ZXJfa2V5IC0+IGlubmVyX2tleTonaW5uZXJfa2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+IHJlbW92ZToob3V0ZXJfa2V5OidvdXRlcl9rZXkgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gJ2FjYyBJbmNyLnRcblxuICB2YWwgdHJhbnNwb3NlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnazIsICdrMl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAoJ2syLCAndiwgJ2syX2NtcCkgTWFwLnQsICdrMV9jbXApIE1hcC50IEluY3IudFxuICAgIC0+ICgnazIsICgnazEsICd2LCAnazFfY21wKSBNYXAudCwgJ2syX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGNvbGxhcHNlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignaW5uZXJfa2V5LCAnaW5uZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCAnb3V0ZXJfa2V5ICogJ2lubmVyX2tleVxuICAgICAgICwgJ3ZcbiAgICAgICAsICgnb3V0ZXJfY21wLCAnaW5uZXJfY21wKSBUdXBsZTIuY29tcGFyYXRvcl93aXRuZXNzIClcbiAgICAgICAgIE1hcC50XG4gICAgICAgICBJbmNyLnRcblxuICB2YWwgY29sbGFwc2VfYnlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IG1lcmdlX2tleXM6KCdvdXRlcl9rZXkgLT4gJ2lubmVyX2tleSAtPiAnY29tYmluZWRfa2V5KVxuICAgIC0+IGNvbXBhcmF0b3I6KCdjb21iaW5lZF9rZXksICdjb21iaW5lZF9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2NvbWJpbmVkX2tleSwgJ3YsICdjb21iaW5lZF9jbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBleHBhbmRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdvdXRlcl9rZXkgKiAnaW5uZXJfa2V5LCAndiwgJ3R1cGxlX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gb3V0ZXJfY29tcGFyYXRvcjooJ291dGVyX2tleSwgJ291dGVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGlubmVyX2NvbXBhcmF0b3I6KCdpbm5lcl9rZXksICdpbm5lcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGNvdW50aVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+IGludCBJbmNyLnRcblxuICB2YWwgY291bnRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKF8sICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IGludCBJbmNyLnRcblxuICB2YWwgZm9yX2FsbGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiBib29sIEluY3IudFxuXG4gIHZhbCBmb3JfYWxsXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+IChfLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YgLT4gYm9vbClcbiAgICAtPiBib29sIEluY3IudFxuXG4gIHZhbCBleGlzdHNpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gYm9vbCBJbmNyLnRcblxuICB2YWwgZXhpc3RzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+IChfLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YgLT4gYm9vbClcbiAgICAtPiBib29sIEluY3IudFxuXG4gIHZhbCBzdW1cbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKF8sICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiAobW9kdWxlIEFic3RyYWN0X2FsZ2VicmEuQ29tbXV0YXRpdmVfZ3JvdXAuV2l0aG91dF9zZXhwIHdpdGggdHlwZSB0ID0gJ3UpXG4gICAgLT4gZjooJ3YgLT4gJ3UpXG4gICAgLT4gJ3UgSW5jci50XG5cbiAgbW9kdWxlIExvb2t1cCA6IHNpZ1xuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgdmFsIGNyZWF0ZVxuICAgICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAgIC0+IGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAgIHZhbCBmaW5kIDogKCdrLCAndiwgXykgdCAtPiAnayAtPiAndiBvcHRpb24gSW5jci50XG5cbiAgICBtb2R1bGUgTSAoSyA6IHNpZ1xuICAgICAgICB0eXBlIHRcbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIGVuZCkgOiBzaWdcbiAgICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBGb3JfZGVidWcgOiBzaWdcbiAgICAgIHZhbCBzZXhwX29mX3QgOiAoJ2sgLT4gU2V4cC50KSAtPiAoJ3YgLT4gU2V4cC50KSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IFNleHAudFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgOiBzaWdcbiAgICB2YWwgZmluZF9rZXlfcmFuZ2VfbGluZWFyXG4gICAgICA6ICBmcm9tOmludFxuICAgICAgLT4gdG9fOmludFxuICAgICAgLT4gKCdhLCAnYiwgJ2MpIEJhc2UuTWFwLnRcbiAgICAgIC0+ICgnYSAqICdhIG9wdGlvbikgb3B0aW9uXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluY3JfbWFwID0gc2lnXG4gICgqKiBGdW5jdGlvbnMgZm9yIHVzaW5nIG1hcHMgZWZmaWNpZW50bHkgd2l0aGluIEluY3JlbWVudGFsLiAgVGhlIGdvYWwgb2YgdGhlIGFsZ29yaXRobXNcbiAgICAgIGhlcmUgaXMgdG8gZG8gd29yayBvbiB0aGUgb3V0cHV0IG9mIHRoZSBjb21wdXRhdGlvbiBwcm9wb3J0aW9uYWwgdG8gdGhlIGFtb3VudCBvZlxuICAgICAgd29yayBkb25lIG9uIHRoZSBpbnB1dC4gIGkuZS4sIFtrXSBtb2RpZmljYXRpb25zIHRvIHRoZSBpbnB1dCBtYXAgZm9yIHNvbWVcbiAgICAgIGNvbXB1dGF0aW9uIHdpbGwgcmVzdWx0IGluIFtrXSBtb2RpZmljYXRpb25zIHRvIHRoZSBvdXRwdXQgbWFwLiAgVGhlIGNoYW5nZXMgdG8gdGhlXG4gICAgICBpbnB1dCBtYXAgYXJlIHR5cGljYWxseSBjb21wdXRlZCB1c2luZyBbTWFwLnN5bW1ldHJpY19kaWZmXS5cblxuICAgICAgVW5sZXNzIHN0YXRlZCBvdGhlcndpc2UsIHRoZSBub24taW5jcmVtZW50YWwgc2VtYW50aWNzIG9mIHRoZXNlIGZ1bmN0aW9ucyAoaS5lLi4sXG4gICAgICBpZ25vcmluZyBwZXJmb3JtYW5jZSkgaXMgdGhlIHNhbWUgYXMgdGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb24gaW4gQ29yZSdzIFtNYXBdXG4gICAgICBtb2R1bGUuICAqKVxuXG4gIG1vZHVsZSBJbnN0cnVtZW50YXRpb24gPSBJbnN0cnVtZW50YXRpb25cblxuICB2YWwgb2Zfc2V0XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICdjbXApIFNldC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssIHVuaXQsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24pXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MilcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOigndjEgLT4gJ3YyIG9wdGlvbilcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBtYXBcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCd2MSAtPiAndjIpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgZmlsdGVyX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOigndjEsICd3KSBJbmNyZW1lbnRhbC50IC0+ICgndjIgb3B0aW9uLCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBtYXAnXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCgndjEsICd3KSBJbmNyZW1lbnRhbC50IC0+ICgndjIsICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGZpbHRlcl9tYXAnXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCgndjEsICd3KSBJbmNyZW1lbnRhbC50IC0+ICgndjIgb3B0aW9uLCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBtYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTooJ3YxLCAndykgSW5jcmVtZW50YWwudCAtPiAoJ3YyLCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCAqICgnaywgJ3YzLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgcGFydGl0aW9uX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6XG4gICAgICAgICAoa2V5OidrXG4gICAgICAgICAgLT4gZGF0YTooJ3YxLCAndykgSW5jcmVtZW50YWwudFxuICAgICAgICAgIC0+ICgoJ3YyLCAndjMpIEVpdGhlci50LCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50ICogKCdrLCAndjMsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbdW5vcmRlcmVkX2ZvbGQgaSB+aW5pdCB+YWRkIH5yZW1vdmVdIGNvbnN0cnVjdHMgYSBtb3JlIGluY3JlbWVudGFsIHZlcnNpb24gb2Y6XG5cbiAgICAgIHtbXG4gICAgICAgIGxldCVtYXAgbSA9IGkgaW5cbiAgICAgICAgTWFwLmZvbGQgbSB+aW5pdCB+ZjphZGRcbiAgICAgIF19XG5cbiAgICAgIGFzc3VtaW5nIHRoYXQgW3JlbW92ZV0gaXMgdGhlIGludmVyc2Ugb2YgW2FkZF0sIGFuZCB0aGF0IHRoZSBvcGVyYXRpb25zIGZvclxuICAgICAgZGlmZmVyZW50IGtleXMgY2FuIGJlIHBlcmZvcm1lZCBpbiBhbnkgb3JkZXIuIE5vdGUgdGhhdCBbZGF0YV9lcXVhbF0gZGVmYXVsdHNcbiAgICAgIHRvIFtwaHlzX2VxdWFsXSwgYnV0IGEgbW9yZSBwcmVjaXNlIGVxdWFsaXR5IGNhbiBiZSBwcm92aWRlZCBpbnN0ZWFkLlxuXG4gICAgICBXaGVuIHRoZSBkYXRhIGZvciBhIGtleSB1cGRhdGVzLCBieSBkZWZhdWx0IFtyZW1vdmVdIGlzIGNhbGxlZCBvbiB0aGUgb2xkIGRhdGFcbiAgICAgIGFuZCB0aGVuIFthZGRdIGlzIGNhbGxlZCBvbiB0aGUgbmV3IGRhdGEuXG4gICAgICBbdXBkYXRlXSBwcm92aWRlcyBhbiBhbHRlcm5hdGl2ZSBzaW5nbGUgZnVuY3Rpb24gdG8gY2FsbCBlYWNoIHRpbWUgYSBrZXkncyBkYXRhXG4gICAgICB1cGRhdGVzLCBhbmQgY2FuIGJlIHVzZWQgdG8gaW1wcm92ZSBlZmZpY2llbmN5LlxuXG4gICAgICBGb3IgdGhlIGluaXRpYWwgY29tcHV0YXRpb24sIGJ5IGRlZmF1bHQgW2FkZF0gaXMgY2FsbGVkIG9uIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlXG4gICAgICBtYXAuIEFzIHRoaXMgY2FuIGJlIGluZWZmaWNpZW50LCBbc3BlY2lhbGl6ZWRfaW5pdGlhbF0gY2FuIGJlIHByb3ZpZGVkIHRvIHBlcmZvcm1cbiAgICAgIHRoZSBjb21wdXRhdGlvbiBpbiBhIG1vcmUgZWZmZWN0aXZlIHdheS5cblxuICAgICAgSWYgW3JldmVydF90b19pbml0X3doZW5fZW1wdHldIGlzIHRydWUsIHRoZW4gaWYgdGhlIGlucHV0IG1hcCB0cmFuc2l0aW9ucyBmcm9tXG4gICAgICBiZWluZyBmdWxsIHRvIGVtcHR5LCB0aGVuIGluc3RlYWQgb2YgY2FsbGluZyBbcmVtb3ZlXSBvbiBldmVyeSBrdi1wYWlyLCBpdCB3aWxsXG4gICAgICBpbnN0ZWFkIGp1c3Qgc2V0IHRoZSBvdXRwdXQgdG8gd2hhdGV2ZXIgeW91J3ZlIHBhc3NlZCBhcyBbaW5pdF0uXG4gICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBbcmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eV0gaXMgW2ZhbHNlXSwgc28gdGhpcyBvcHRpbWl6YXRpb25cbiAgICAgIGRvZXMgbm90IGFwcGx5IGF1dG9tYXRpY2FsbHkuXG5cbiAgICAgIFtmaW5hbGl6ZV0gZGVmYXVsdHMgdG8gW0ZuLmlkXSBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBhY2N1bXVsYXRvciB2YWx1ZVxuICAgICAgaXMgc3RvcmVkIGFuZCByZXR1cm5lZCBkdXJpbmcgc3RhYmlsaXphdGlvbi4gIFlvdSBjYW4gdXNlIGl0IHRvIGUuZy4gcHJvY2VzcyB0aGVcbiAgICAgIGZvbGQgb3BlcmF0aW9ucyBpbiBhIGRpZmZlcmVudCBvcmRlci4gKilcbiAgdmFsIHVub3JkZXJlZF9mb2xkXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID91cGRhdGU6KGtleTonayAtPiBvbGRfZGF0YTondiAtPiBuZXdfZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gP3NwZWNpYWxpemVkX2luaXRpYWw6KGluaXQ6J2FjYyAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCAtPiAnYWNjKVxuICAgIC0+ID9maW5hbGl6ZTooJ2FjYyAtPiAnYWNjKVxuICAgIC0+ID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OmJvb2xcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gYWRkOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gcmVtb3ZlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gKCdhY2MsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFt1bm9yZGVyZWRfZm9sZF93aXRoX2V4dHJhXSBpcyBzaW1pbGFyIHRvIFt1bm9yZGVyZWRfZm9sZF0sIGJ1dCBpdCBhbHNvXG4gICAgICBkZXBlbmRzIG9uIGFub3RoZXIgYXJiaXRyYXJ5IGluY3JlbWVudGFsIHZhbHVlIHdoaWNoIGNhbiBiZSBmYWN0b3JlZCBpbnRvXG4gICAgICB0aGUgZm9sZGluZyBjb21wdXRhdGlvbi4gKilcbiAgdmFsIHVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmFcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP2V4dHJhX2VxdWFsOignZXh0cmEgLT4gJ2V4dHJhIC0+IGJvb2wpXG4gICAgLT4gP3VwZGF0ZTooa2V5OidrIC0+IG9sZF9kYXRhOid2IC0+IG5ld19kYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gP3NwZWNpYWxpemVkX2luaXRpYWw6KGluaXQ6J2FjYyAtPiAoJ2ssICd2LCAnZSkgTWFwLnQgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gP2ZpbmFsaXplOignYWNjIC0+ICdhY2MpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ICgoJ2ssICd2LCAnZSkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCdleHRyYSwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBhZGQ6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gcmVtb3ZlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdleHRyYSAtPiAnYWNjKVxuICAgIC0+IGV4dHJhX2NoYW5nZWQ6XG4gICAgICAgICAob2xkX2V4dHJhOidleHRyYVxuICAgICAgICAgIC0+IG5ld19leHRyYTonZXh0cmFcbiAgICAgICAgICAtPiBpbnB1dDooJ2ssICd2LCAnZSkgTWFwLnRcbiAgICAgICAgICAtPiAnYWNjXG4gICAgICAgICAgLT4gJ2FjYylcbiAgICAtPiAoJ2FjYywgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW2N1dG9mZl0gYXBwbGllcyBhIGN1dG9mZiB0byB2YWx1ZXMgaW4gdGhlIG1hcCBhcyB0aGV5IHBhc3MgdGhyb3VnaCB0aGVcbiAgICAgIGZ1bmN0aW9uLiAgSXQgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGNhbGxpbmcgW0luY3JfbWFwLm1hcCddIHdpdGggYW5cbiAgICAgIFtJbmNyLnNldF9jdXRvZmZdIGluc2lkZSwgYnV0IHdpdGggY29uc2lkZXJhYmx5IGJldHRlciBwZXJmb3JtYW5jZSBhbmRcbiAgICAgIG1lbW9yeSB1c2FnZS4gKilcbiAgdmFsIGN1dG9mZlxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY3V0b2ZmOid2IEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBHaXZlbiBhbiBpbnB1dCBtYXAgYW5kIGEgZnVuY3Rpb24gbWFwcGluZyBhIGt2LXBhaXIgdG8gYSBuZXdcbiAgICAgIHZhbHVlLCBbbWFwaV9jb3VudF0gd2lsbCBjb21wdXRlIGEgbXVsdGktc2V0IGtleWVkIG9uIHRoYXRcbiAgICAgIG5ldyB2YWx1ZS5cblxuICAgICAgQW55IHZhbHVlIHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhdmUgYSBjb3VudCBvZiBcIjBcIiBpcyBpbnN0ZWFkXG4gICAgICByZW1vdmVkIGZyb20gdGhlIG1hcC5cblxuICAgICAgSXQgaXMgYXNzdW1lZCB0aGF0IFtmXSBpcyBxdWl0ZSBmYXN0IGFzIHRoZSBmdW5jdGlvbiB3aWxsIGJlXG4gICAgICBjYWxsZWQgbW9yZSBvZnRlbiB0aGFuIHN0cmljdGx5IG5lY2Vzc2FyeSwgYnV0IGl0IGRvZXMgdGhpc1xuICAgICAgaW4gb3JkZXIgdG8gYXZvaWQgYWxsb2NhdGluZyBhbiBleHRyYSBtYXAuICBJZiBbZl0gaXMgdmVyeSBzbG93XG4gICAgICBhbmQgeW91IGRvbid0IG1pbmQgdGhlIGV4dHJhIGFsbG9jYXRpb25zLCB1c2VcbiAgICAgIFtJbmNyX21hcC5pbmRleF9ieWldIGNvbXBvc2VkIHdpdGggW0luY3JfbWFwLm1hcCB+ZjpNYXAubGVuZ3RoXSAqKVxuICB2YWwgbWFwaV9jb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrMSwgJ3YsICdjbXAxKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrMSAtPiBkYXRhOid2IC0+ICdrMilcbiAgICAtPiAoKCdrMiwgaW50LCAnY21wMikgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFRoZSBzYW1lIGFzIFttYXBpX2NvdW50XSBidXQgdGhlIFtmXSBmdW5jdGlvbiBvbmx5IGdldHMgdG8gc2VlIHRoZVxuICAgICAgZGF0YSBpbnN0ZWFkIG9mIGJvdGggdGhlIGtleSBhbmQgdGhlIGRhdGEuICopXG4gIHZhbCBtYXBfY291bnRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnazEsICd2LCAnY21wMSkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdrMilcbiAgICAtPiAoKCdrMiwgaW50LCAnY21wMikgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBzbWFsbGVzdCBbcl0gd2hlcmUgW3JdIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXIgaW4gdGhlXG4gICAgICBpbnB1dCBtYXAuICopXG4gIHZhbCBtYXBpX21pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAncilcbiAgICAtPiAoJ3Igb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgbGFyZ2VzdCBbcl0gd2hlcmUgW3JdIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXIgaW4gdGhlXG4gICAgICBpbnB1dCBtYXAuICopXG4gIHZhbCBtYXBpX21heFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAncilcbiAgICAtPiAoJ3Igb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgc21hbGxlc3QgW3JdIHdoZXJlIFtyXSBpcyBjb21wdXRlZCBmb3IgZWFjaCBrdi1wYWlyIGluIHRoZVxuICAgICAgaW5wdXQgbWFwLiAqKVxuICB2YWwgbWFwX21pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAncilcbiAgICAtPiAoJ3Igb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgbGFyZ2VzdCBbcl0gd2hlcmUgW3JdIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXIgaW4gdGhlXG4gICAgICBpbnB1dCBtYXAuICopXG4gIHZhbCBtYXBfbWF4XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICgnciBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBzbWFsbGVzdCBkYXRhIHZhbHVlIGZyb20gdGhlIGlucHV0IG1hcC4gKilcbiAgdmFsIG1pbl92YWx1ZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ3Ygb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgbGFyZ2VzdCBkYXRhIHZhbHVlIGZyb20gdGhlIGlucHV0IG1hcC4gKilcbiAgdmFsIG1heF92YWx1ZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ3Ygb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyBbbWluICogbWF4XSB3aGVyZSB0aGUgdmFsdWUgaXMgY29tcHV0ZWQgZm9yIGVhY2gga3YtcGFpclxuICAgICAgaW4gdGhlIGlucHV0IG1hcCAqKVxuICB2YWwgbWFwaV9ib3VuZHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3IpXG4gICAgLT4gKCgnciAqICdyKSBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIFttaW4gKiBtYXhdIHdoZXJlIHRoZSB2YWx1ZSBpcyBjb21wdXRlZCBmb3IgZWFjaCBrdi1wYWlyXG4gICAgICBpbiB0aGUgaW5wdXQgbWFwICopXG4gIHZhbCBtYXBfYm91bmRzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICgoJ3IgKiAncikgb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgc21hbGxlc3QgYW5kIGxhcmdlc3QgZGF0YSB2YWx1ZSBmcm9tIHRoZSBpbnB1dCBtYXAuICopXG4gIHZhbCB2YWx1ZV9ib3VuZHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCd2LCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCgndiAqICd2KSBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cblxuICAoKiogTGlrZSBbbWVyZ2VdIGluIFtCYXNlLk1hcC5tZXJnZV0uIE5vdGUgdGhhdCBbZl0gaXMgY2FsbGVkIGF0IG1vc3Qgb25jZSBwZXIga2V5IGluXG4gICAgICBhbnkgZ2l2ZW4gc3RhYmlsaXphdGlvbi4gKilcbiAgdmFsIG1lcmdlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gKCd2MSwgJ3YyKSBNYXAuTWVyZ2VfZWxlbWVudC50IC0+ICd2MyBvcHRpb24pXG4gICAgLT4gKCgnaywgJ3YzLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW21lcmdlX2JvdGhfc2FtZV0gaXMgbGlrZSBbbWVyZ2VdLCBidXQgb3B0aW1pemVkIGZvciB0aGUgY2FzZSB3aGVyZSB5b3Ugb25seSBjYXJlXG4gICAgICBhYm91dCB0aGUgY2FzZSB3aGVyZSBib3RoIG1hcHMgY29udGFpbiBhIHBhcnRpY3VsYXIga2V5LiAqKVxuICB2YWwgbWVyZ2VfYm90aF9zb21lXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ID9vdXRfZXF1YWw6KCd2MyAtPiAndjMgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+ICd2MSAtPiAndjIgLT4gJ3YzKVxuICAgIC0+ICgoJ2ssICd2MywgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIExpa2UgW21lcmdlXSwgYnV0IG9wZXJhdGluZyB1c2luZyBpbmNyZW1lbnRhbCBub2Rlcy4gVGhpcyBpcyBhIGdvb2QgdXNlIGNhc2UgZm9yXG4gICAgICBbcHB4X3BhdHRlcm5fYmluZF0uICopXG4gIHZhbCBtZXJnZSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjooJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbF9sZWZ0OigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP2RhdGFfZXF1YWxfcmlnaHQ6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjpcbiAgICAgICAgIChrZXk6J2tcbiAgICAgICAgICAtPiAoKCd2MSwgJ3YyKSBNYXAuTWVyZ2VfZWxlbWVudC50LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgICAgIC0+ICgndjMgb3B0aW9uLCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjMsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCB1bnppcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/bGVmdF9yZXN1bHRfZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gICAgLT4gP3JpZ2h0X3Jlc3VsdF9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAnYSAqICdiLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAnYSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50ICogKCgnaywgJ2IsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbdW56aXBfbWFwaV0gaXMgc2ltaWxhciB0byBbTGlzdC51bnppcF0sIGJ1dCBmb3IgaW5jcmVtZW50YWwgbWFwcy4gTm90ZSB0aGF0IFtmXSBtYXlcbiAgICAgIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiBhIHNpbmdsZSBlbGVtZW50LiAqKVxuICB2YWwgdW56aXBfbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/bGVmdF9yZXN1bHRfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/cmlnaHRfcmVzdWx0X2VxdWFsOigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICd2MSAqICd2MilcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgICogKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3VuemlwX21hcGknXSBpcyBsaWtlIFt1bnppcF9tYXBpXSwgYnV0IGFsbG93cyB5b3UgdG8gZGVmaW5lIHRoZSBtYXBwaW5nIGZyb20gdGhlXG4gICAgICBpbnB1dCBtYXAncyBlbGVtZW50cyB0byB0aGUgb3V0cHV0IG1hcHMnIGVsZW1lbnRzIGluY3JlbWVudGFsbHkuXG5cbiAgICAgIFRoZSBuYWl2ZSBpbXBsZW1lbnRhdGlvbiAoc2VlIGJlbG93KSBwcm9kdWNlcyB3b3JzZSBJbmNyZW1lbnRhbCBncmFwaHMuXG5cbiAgICAgIHtbXG4gICAgICAgIGxldCB0ZW1wID1cbiAgICAgICAgICBJbmNyX21hcC5tYXBpJyBpbnB1dCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgICAgIGYgfmtleSB+ZGF0YSB8PiBUdXBsZTIudW5jdXJyeSBJbmNyLmJvdGgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsZWZ0ID0gSW5jcl9tYXAubWFwIHRlbXAgfmY6VHVwbGUyLmdldDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0ID0gSW5jcl9tYXAubWFwIHRlbXAgfmY6VHVwbGUyLmdldDIgaW5cbiAgICAgICAgbGVmdCwgcmlnaHRcbiAgICAgIF19ICopXG4gIHZhbCB1bnppcF9tYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2IEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6XG4gICAgICAgICAoa2V5OidrXG4gICAgICAgICAgLT4gZGF0YTooJ3YsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKCd2MSwgJ3cpIEluY3JlbWVudGFsLnQgKiAoJ3YyLCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgICogKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogVGhpcyBpcyB0aGUgXCJlYXN5XCIgdmVyc2lvbiBvZiBbam9pbl0gKilcbiAgdmFsIGZsYXR0ZW5cbiAgICA6ICAndyBJbmNyZW1lbnRhbC5TdGF0ZS50XG4gICAgLT4gKCdrLCAoJ3YsICd3KSBJbmNyZW1lbnRhbC50LCAnY21wKSBNYXAudFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogVGhlIG5vbi1pbmNyZW1lbnRhbCBzZW1hbnRpY3Mgb2YgdGhpcyBmdW5jdGlvbiBpcyB0aGUgaWRlbnRpdHkgZnVuY3Rpb24uICBJdHNcbiAgICAgIHB1cnBvc2UgaXMgdG8gY29sbGFwc2UgdGhlIGV4dHJhIGxldmVsIG9mIGluY3JlbWVudGFsaXR5IGF0IHRoZSBsZXZlbCBvZiB0aGUgZGF0YSBvZlxuICAgICAgdGhlIG1hcC4qKVxuICB2YWwgam9pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoKCdrLCAoJ3YsICd3KSBJbmNyZW1lbnRhbC50LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIHNlcGFyYXRlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLnQsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBrZXlzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICd2LCAnYykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ2MpIFNldC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgW3JhbmtdIG9mIGEga2V5IChnaXZlbiBpbmNyZW1lbnRhbGx5KSBpbnNpZGUgb2YgYSBtYXAgKGFsc29cbiAgICAgIGluY3JlbWVudGFsKS4gIFRoZSB0cmFkaXRpb25hbCBbTWFwLnJhbmtdIGZ1bmN0aW9uIGlzIE8obiksIGFuZCB0aGlzIGluY3JlbWVudGFsXG4gICAgICByYW5rIGZ1bmN0aW9uIGhhcyB0aGUgZm9sbG93aW5nIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljczpcblxuICAgICAgZGVmaW5pdGlvbnM6XG4gICAgICBuIDogdGhlIHNpemUgb2YgdGhlIG1hcFxuICAgICAgciA6IHRoZSB0aW1lIHRvIGNvbXB1dGUgW01hcC5zeW1tZXRyaWNfZGlmZl0gYmV0d2VlbiB0aGUgdHdvIG1hcHNcbiAgICAgIGsgOiB0aGUgY2hhbmdlIGluIHJhbmsgb2YgdGhlIGtleSBiZXR3ZWVuIHR3byBzdGFiaWxpemF0aW9uc1xuXG4gICAgICBub3RlIHRoYXQgW3JdIGFuZCBba10gYXJlIF9tdWNoXyBzbWFsbGVyIHRoYW4gW25dIGZvciBtb3N0IHByYWN0aWNhbCBwdXJwb3Nlc1xuXG4gICAgICAtIE8obG9nIG4pIHdoZW4gdGhlIGtleSBpcyBub3QgaW4gdGhlIG1hcC5cbiAgICAgICAgVGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb3RoZXIgZXZlcnkgb3RoZXIgc2NlbmFyaW8uXG4gICAgICAtIE8obikgb24gdGhlIGluaXRpYWwgc3RhYmlsaXphdGlvblxuICAgICAgLSBPKG4pIHdoZW4gdGhlIGtleSB0cmFuc2l0aW9ucyBmcm9tIG5vdCBiZWluZyBpbiB0aGUgbWFwIHRvIGJlaW5nIGluIHRoZSBtYXBcbiAgICAgIC0gTyhsb2cgbiArIHIpIHdoZW4gdGhlIG1hcCBjaGFuZ2VzXG4gICAgICAtIE8obG9nIG4gKyBrKSB3aGVuIHRoZSBrZXkgY2hhbmdlc1xuICAgICAgLSBPKGxvZyBuICsgciArIGspIHdoZW4gYm90aCBrZXkgYW5kIG1hcCBjaGFuZ2UgKilcbiAgdmFsIHJhbmtcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIEJhc2UuTWFwLnQsICdzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCdrLCAnc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgIC0+IChpbnQgb3B0aW9uLCAnc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbc3VicmFuZ2UgbWFwIChtaW4sIG1heCldIGNvbnN0cnVjdHMgYW4gaW5jcmVtZW50YWwgc3VibWFwIHRoYXQgaW5jbHVkZXMgYWxsIG9mIHRoZVxuICAgICAga2V5cyBhbmQgZGF0YSBmcm9tIFttYXBdIGJldHdlZW4gW21pbl0gYW5kIFttYXhdLCBhbmQgbm9uZSBvZiB0aGUga2V5cyBvdXRzaWRlIHRoZVxuICAgICAgcmFuZ2UuXG5cbiAgICAgIFtzdWJyYW5nZSBtYXAgTm9uZV0gaXMgdGhlIGVtcHR5IG1hcC4gW3JhbmdlXSBiZWluZyBbTm9uZV0gbWVhbnMgbm8gZWxlbWVudHMgYXJlXG4gICAgICBjaG9zZW4uXG5cbiAgICAgIE5vdGUgdGhhdCBpbmNyZW1lbnRhbCBjaGFuZ2VzIGhhdmUgYSBydW50aW1lIG9mIE8oKGsgKyBtKSBsb2cgbikgd2hlcmUgayBpcyB0aGUgc2l6ZVxuICAgICAgb2YgdGhlIGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mIHRoZSBjaGFuZ2VzIHRvIHRoZVxuICAgICAgZWxlbWVudHMgY29udGFpbmVkIGJ5IHRoZSByYW5nZS4gVGhlIGNvbXBsZXhpdHkgb2YgdGhlIGluaXRpYWwgY29tcHV0YXRpb24gaXMgdGhlXG4gICAgICBzYW1lIGFzIHRoZSBpbmNyZW1lbnRhbCBjb21wdXRhdGlvbiwgd2l0aCBzb21lIHNpbXBsaWZpY2F0aW9uLiBrID0gMCBiZWNhdXNlIHdlIGhhdmVcbiAgICAgIG5vdCBtYWRlIGFueSBjaGFuZ2VzIHRvIHRoZSB1bmRlcmx5aW5nIG1hcCB5ZXQsIGFuZCBtIGVxdWFscyB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UsXG4gICAgICBiZWNhdXNlIHRoZSBpbml0aWFsIHJhbmdlIGlzIGVtcHR5LiAqKVxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICggKCdrIE1heWJlX2JvdW5kLkFzX2xvd2VyX2JvdW5kLnQgKiAnayBNYXliZV9ib3VuZC5Bc191cHBlcl9ib3VuZC50KSBvcHRpb25cbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtzdWJyYW5nZV9ieV9yYW5rIG1hcCAocywgZSldIGNvbnN0cnVjdHMgYW4gaW5jcmVtZW50YWwgc3VibWFwIHRoYXQgaW5jbHVkZXMgKGUtcysxKVxuICAgICAga2V5cyBiZXR3ZWVuIHMtdGggYW5kIGUtdGgsIGluY2x1c2l2ZS5cblxuICAgICAgSWYgcyBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIG1hcCBsZW5ndGgsIHRoZSByZXN1bHQgaXMgZW1wdHkuXG4gICAgICBJZiBlIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gbWFwIGxlbmd0aCwgdGhlIHJlc3VsdCBjb250YWlucyBrZXlzIGZyb20gcy10aCB0byB0aGVcbiAgICAgIGxhc3Qgb25lLlxuXG4gICAgICBSYWlzZXMgZm9yIGludmFsaWQgaW5kaWNlcyAtIHMgPCAwIG9yIGUgPCBzLlxuXG4gICAgICBSdW50aW1lIG9mIHRoZSBpbml0aWFsIGNvbXB1dGF0aW9uIGlzIE8obWluKGUsIG4tcykgKyBsb2cobikpLCBpLmUuIGxpbmVhcixcbiAgICAgIGJ1dCBvcHRpbWl6ZWQgZm9yIHJhbmdlcyBjbG9zZSB0byBiZWdpbm5pbmcgb3IgZW5kLlxuXG4gICAgICBSdW50aW1lIG9mIHRoZSBpbmNyZW1lbnRhbCBjb21wdXRhdGlvbiBpcyBPKGxvZyhuKSArIGsgKyAobSttJykgKiBsb2cobikpIHdoZXJlOlxuICAgICAgLSBrIGlzIHRoZSBzaXplIG9mIHRoZSBkaWZmXG4gICAgICAtIG0gaXMgdGhlIHRvdGFsIGltcGFjdCBvZiBtYXAgY2hhbmdlcyBvbiB0aGUgcmFuZ2UsIGJvdW5kZWQgYnkgayAoZS5nLiBpZiB3ZSBhZGRcbiAgICAgICAgMTAwMSBrZXlzIGFuZCByZW1vdmUgMTAwMCBiZWxvdyBzLCB0aGVuIG0gPSAxKVxuICAgICAgLSBtJyA9IE8oIHxuZXcgcyAtIG9sZCBzfCArIHxuZXcgZSAtIG9sZCBlfCApLlxuICAqKVxuICB2YWwgc3VicmFuZ2VfYnlfcmFua1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCBpbnQgTWF5YmVfYm91bmQuQXNfbG93ZXJfYm91bmQudCAqIGludCBNYXliZV9ib3VuZC5Bc191cHBlcl9ib3VuZC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbcmVrZXldIHRyYW5zZm9ybXMgYSBtYXAgYnkgbW9kaWZ5aW5nIHRoZSB0eXBlIG9mIHRoZSBrZXkuICBUaGUgdXNlciBpc1xuICAgICAgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIHRoYXQgW2ZdIGRvZXNuJ3QgcmV0dXJuIHRoZSBzYW1lIG91dHB1dCBrZXkgZm9yXG4gICAgICBtdWx0aXBsZSBpbnB1dCBrZXlzLlxuXG4gICAgICBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgW2ZdIGlzIGNoZWFwIHRvIGNvbXB1dGUgYW5kIGFjY29yZGluZ2x5IG1heSBjYWxsXG4gICAgICBpdCBtdWx0aXBsZSB0aW1lcy4gKilcbiAgdmFsIHJla2V5XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2sxLCAndiwgJ2NtcDEpIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sxIC0+IGRhdGE6J3YgLT4gJ2syKVxuICAgIC0+ICgoJ2syLCAndiwgJ2NtcDIpIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbaW5kZXhfYnlpIG1hcCB+Y29tcGFyYXRvciB+aW5kZXhdIGNvbnN0cnVjdHMgYW4gaW5jcmVtZW50YWwgbWFwLW9mLW1hcHMgd2hlcmUgZWFjaFxuICAgICAga2V5LWRhdGEgcGFpciBvZiB0aGUgaW5wdXQgbWFwIGlzIHByZXNlbnQgaW4gb25lIChvciBub25lKSBvZiB0aGUgaW5uZXIgbWFwcy5cbiAgICAgIFtpbmRleF0gc3BlY2lmaWVzIHRoZSBvdXRlciBtYXAga2V5IHVuZGVyIHdoaWNoIGVhY2ggb3JpZ2luYWwga2V5LWRhdGEgcGFpciBpc1xuICAgICAgZm91bmQuXG5cbiAgICAgIEFsbCBvZiB0aGUgcmVzdWx0aW5nIGlubmVyIG1hcHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgbm9uLWVtcHR5OyBpZiB0aGUgaW5uZXIgbWFwXG4gICAgICB3b3VsZCBvdGhlcndpc2UgYmUgZW1wdHksIHRoZW4gdGhlIGtleSBmb3IgdGhhdCBtYXAgaXMgaW5zdGVhZCByZW1vdmVkIGZyb20gdGhlXG4gICAgICBvdXRlciBtYXAuXG5cbiAgICAgIEFuIGFsbC1hdC1vbmNlIHZlcnNpb24gb2YgW2luZGV4X2J5XSB3b3VsZCBsb29rIGxpa2U6XG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBpbmRleF9ieWkgbWFwIH5jb21wYXJhdG9yIH5pbmRleCA9XG4gICAgICAgICAgTWFwLnRvX2FsaXN0IG1hcFxuICAgICAgICAgIHw+IExpc3QuZmlsdGVyX21hcCB+ZjooZnVuIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmRleCB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgaW5kZXggLT4gU29tZSAoaW5kZXgsIChrZXksIGRhdGEpKSlcbiAgICAgICAgICB8PiBNYXAub2ZfYWxpc3RfbXVsdGkgY29tcGFyYXRvclxuICAgICAgICAgIHw+IE1hcC5tYXAgfmY6KE1hcC5vZl9hbGlzdF9leG4gKE1hcC5jb21wYXJhdG9yX3MgbWFwKSlcbiAgICAgICAgOztcbiAgICAgIF19ICopXG4gIHZhbCBpbmRleF9ieWlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ291dGVyX2tleSwgJ291dGVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGluZGV4OihrZXk6J2lubmVyX2tleSAtPiBkYXRhOid2IC0+ICdvdXRlcl9rZXkgb3B0aW9uKVxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtpbmRleF9ieSBtYXAgfmNvbXBhcmF0b3IgfmluZGV4XSBpcyBsaWtlIFtpbmRleF9ieWkgbWFwIH5jb21wYXJhdG9yIH5pbmRleF0sIGJ1dFxuICAgICAgdGhlIFtpbmRleF0gZnVuY3Rpb24gZG9lcyBub3QgdGFrZSB0aGUgaW5uZXIgbWFwJ3MgW2tleV0uICopXG4gIHZhbCBpbmRleF9ieVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5kZXg6KCd2IC0+ICdvdXRlcl9rZXkgb3B0aW9uKVxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OmJvb2xcbiAgICAtPiA/dXBkYXRlOlxuICAgICAgICAgKG91dGVyX2tleTonb3V0ZXJfa2V5XG4gICAgICAgICAgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXlcbiAgICAgICAgICAtPiBvbGRfZGF0YTondlxuICAgICAgICAgIC0+IG5ld19kYXRhOid2XG4gICAgICAgICAgLT4gJ2FjY1xuICAgICAgICAgIC0+ICdhY2MpXG4gICAgLT4gKCAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBhZGQ6KG91dGVyX2tleTonb3V0ZXJfa2V5IC0+IGlubmVyX2tleTonaW5uZXJfa2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+IHJlbW92ZToob3V0ZXJfa2V5OidvdXRlcl9rZXkgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gKCdhY2MsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFt0cmFuc3Bvc2VdIGZsaXBzIHRoZSBvcmRlciBvZiBhIGRvdWJseSBuZXN0ZWQgaW5jcmVtZW50YWwgbWFwLlxuXG4gICAgICBBbGwgaW5uZXIgbWFwIGluc3RhbmNlcyB3aWxsIGhhdmUgYXQgbGVhc3Qgb25lIGVsZW1lbnQuICopXG4gIHZhbCB0cmFuc3Bvc2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrMiwgJ2syX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgoJ2sxLCAoJ2syLCAndiwgJ2syX2NtcCkgTWFwLnQsICdrMV9jbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2syLCAoJ2sxLCAndiwgJ2sxX2NtcCkgTWFwLnQsICdrMl9jbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBjb2xsYXBzZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdpbm5lcl9rZXksICdpbm5lcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoICggJ291dGVyX2tleSAqICdpbm5lcl9rZXlcbiAgICAgICAgICwgJ3ZcbiAgICAgICAgICwgKCdvdXRlcl9jbXAsICdpbm5lcl9jbXApIFR1cGxlMi5jb21wYXJhdG9yX3dpdG5lc3MgKVxuICAgICAgICAgICBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbY29sbGFwc2VfYnldIGlzIHNpbWlsYXIgdG8gW2NvbGxhcHNlXSwgYnV0IGl0IGFsbG93cyB0aGUgdXNlciB0b1xuICAgICAgY2hvb3NlIGhvdyB0byBjb21iaW5lIHRoZSB0d28ga2V5cyBmcm9tIHRoZSBvdXRlciBhbmQgaW5uZXIgbWFwcy5cbiAgICAgIFRoaXMgZG9lcyBtZWFuIHRoYXQgaXQncyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGltcGxlbWVudG9yIG9mIHRoZVxuICAgICAgW21lcmdlX2tleXNdIGZ1bmN0aW9uIHRvIHVwaG9sZCB0aGlzIGludmFyaWFudDpcblxuICAgICAgPiBhIG1lcmdlZC1rZXkgYmVpbmcgZXF1YWwgdG8gYW5vdGhlciBtZXJnZWQta2V5IGltcGxpZXMgdGhhdCB0aGVcbiAgICAgID4gb3V0ZXIta2V5cyBhbmQgaW5uZXIta2V5cyB3aGljaCB3ZXJlIHVzZWQgdG8gYnVpbGQgdGhlIG1lcmdlZCBrZXlzIGFsc29cbiAgICAgID4gY29tcGFyZSB0byBiZSBlcXVhbCB0byBvbmUgYW5vdGhlclxuXG4gICAgICBUaGUgW35jb21wYXJhdG9yXSBhcmd1bWVudCB0aGUgZmlyc3QtY2xhc3MgbW9kdWxlIG9mIHRoZSBvdXRwdXQga2V5LCBpdFxuICAgICAgdXN1YWxseSBsb29rcyBsaWtlIHRoaXM6XG4gICAgICBbIH5jb21wYXJhdG9yOihtb2R1bGUgQ29tYmluZWRfa2V5KSBdXG4gICAgICBidXQgbWFrZSBzdXJlIHRoYXQgdGhlIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBbQ29tcGFyYXRvci5TXSBzaWduYXR1cmUuICopXG4gIHZhbCBjb2xsYXBzZV9ieVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuICAgIC0+IG1lcmdlX2tleXM6KCdvdXRlcl9rZXkgLT4gJ2lubmVyX2tleSAtPiAnY29tYmluZWRfa2V5KVxuICAgIC0+IGNvbXBhcmF0b3I6KCdjb21iaW5lZF9rZXksICdjb21iaW5lZF9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoKCdjb21iaW5lZF9rZXksICd2LCAnY29tYmluZWRfY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29udmVydCBhIG1hcCB3aXRoIHR1cGxlcyBmb3Iga2V5cyBpbnRvIGEgbmVzdGVkIG1hcC4gVGhpcyBvcGVyYXRpb24gaXMgcm91Z2hseSB0aGVcbiAgICAgIGludmVyc2Ugb2YgW2NvbGxhcHNlXSwgdGhvdWdoIGlmIHRoZXJlIGFyZSBvdXRlciBrZXlzIGluIHRoZSB1bmNvbGxhcHNlZCBtYXAgdGhhdFxuICAgICAgY29ycmVzcG9uZCB0byBlbXB0eSBpbm5lciBtYXBzLCB0aGUgb3V0ZXIga2V5cyB3aWxsIGJlIGRyb3BwZWQgZnJvbSB0aGUgZXhwYW5kZWRcbiAgICAgIG1hcC4gKilcbiAgdmFsIGV4cGFuZFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdvdXRlcl9rZXkgKiAnaW5uZXJfa2V5LCAndiwgJ3R1cGxlX2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gb3V0ZXJfY29tcGFyYXRvcjooJ291dGVyX2tleSwgJ291dGVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGlubmVyX2NvbXBhcmF0b3I6KCdpbm5lcl9rZXksICdpbm5lcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBjb3VudGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gKGludCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgY291bnRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKChfLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooJ3YgLT4gYm9vbClcbiAgICAtPiAoaW50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmb3JfYWxsaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiAoYm9vbCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgZm9yX2FsbFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKF8sICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IChib29sLCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBleGlzdHNpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+IChib29sLCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBleGlzdHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKChfLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooJ3YgLT4gYm9vbClcbiAgICAtPiAoYm9vbCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogSW5jcmVtZW50YWxseSBjb21wdXRlIHRoZSBzdW0gb2YgYWxsIG9mIHRoZSB2YWx1ZXMgaW4gdGhlIG1hcC5cblxuICAgICAgQmV3YXJlIG9mIGZsb2F0J3MgbmVnYXRpdmUgaW5maW5pdGllcy4gVGhleSBhcmVuJ3QgY29tbXV0YXRpdmUgYW5kIHdpbGwgbWlzYmVoYXZlXG4gICAgICBoZXJlLlxuICAqKVxuICB2YWwgc3VtXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoXywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IChtb2R1bGUgQWJzdHJhY3RfYWxnZWJyYS5Db21tdXRhdGl2ZV9ncm91cC5XaXRob3V0X3NleHAgd2l0aCB0eXBlIHQgPSAndSlcbiAgICAtPiBmOigndiAtPiAndSlcbiAgICAtPiAoJ3UsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFsoJ2ssICd2KSBMb29rdXAudF0gcHJvdmlkZXMgYSB3YXkgdG8gbG9va3VwIGtleXMgaW4gYSBtYXAgd2hpY2ggdXNlcyBzeW1tZXRyaWNcbiAgICAgIGRpZmZzIHRvIHRyaWdnZXIgdXBkYXRlcyBvZiB0aGUgbG9va3Vwcy5cblxuICAgICAgVGhlIGNvbXBsZXhpdHkgb2YgYW4gdXBkYXRlIGRlcGVuZHMgb246XG4gICAgICAtIFtuXTogdGhlIG51bWJlciBvZiBrZXlzIGluIHRoZSBsYXJnZXIgb2YgdGhlIG9sZC91cGRhdGVkIGlucHV0IG1hcFxuICAgICAgLSBba106IHRoZSBudW1iZXIgb2YgbG9va3VwIG5vZGVzIGNyZWF0ZWQgdXNpbmcgW2ZpbmRdXG4gICAgICAtIFttXTogdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgc3ltZGlmZiBvZiB0aGUgbWFwc1xuICAgICAgLSBbc3ltZGlmZihuKV06IHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgdGhlIHN5bWRpZmYgb24gdGhlIG1hcCAobSA8PSBzeW1kaWZmKG4pIDw9IG4pXG5cbiAgICAgIEVhY2ggdXBkYXRlIHNob3VsZCBjb3N0IFtPKHN5bWRpZmYobikgKyBtICogbG9nIGspXSwgc28gdGhpcyB3aWxsIGJlIGVmZmljaWVudCB3aGVuXG4gICAgICB0aGVyZSBhcmUgYSBsb3Qgb2YgbG9va3VwcyAoY2xvc2UgdG8gbikgaW50byBhIG1hcCB3aGljaCBjYW4gYmUgZWZmaWNpZW50bHlcbiAgICAgIHN5bWRpZmZlZCAoYW5kIHRoZXJlZm9yZSBoYXMgYSBzbWFsbCBudW1iZXIgb2YgY2hhbmdlcyBhbHNvKS4gVGhlIGNvc3Qgb2YgdXBkYXRpbmdcbiAgICAgIHdoZW4gcGVyZm9ybWluZyB0aGUgc2FtZSBsb29rdXBzIGJ5IG1lYW5zIG9mIFtJbmNyLm1hcCB+ZjooZnVuIG0gLT4gTWFwLmZpbmQgbSBrZXkpXVxuICAgICAgaXMgW08oayAqIGxvZyBuKV0uXG4gICopXG4gIG1vZHVsZSBMb29rdXAgOiBzaWdcbiAgICB0eXBlICgnaywgJ3YsICdjbXAsICd3KSB0XG5cbiAgICAoKiogQ3JlYXRlIHRoZSBsb29rdXAgc3RydWN0dXJlIG9uIGFuIGluY3JlbWVudGFsIG1hcC4gKilcbiAgICB2YWwgY3JlYXRlXG4gICAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAgIC0+IGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXAsICd3KSB0XG5cbiAgICAoKiogQ3JlYXRlIGEgbm9kZSB3aGljaCBwZXJmb3JtcyBbTWFwLmZpbmRdIG9uIHRoZSBpbnB1dCBtYXAuXG5cbiAgICAgICAgW2ZpbmQgKGNyZWF0ZSBpbmNyX21hcCkga2V5XSBzaG91bGQgYmUgZXF1aXZhbGVudCB0byBbSW5jci5tYXAgfmY6KGZ1biBtIC0+XG4gICAgICAgIE1hcC5maW5kIG0ga2V5KSBpbmNyX21hcF0sIGJ1dCB3aGVuIHlvdSBjYWxsIFtmaW5kXSBtYW55IHRpbWVzIGZvciBhIHNpbmdsZVxuICAgICAgICBbY3JlYXRlXSB0aGUgbm9kZXMgc2hvdWxkIHVwZGF0ZSBtb3JlIGVmZmljaWVudGx5IGluIHN0YWJpbGlzYXRpb24gd2hlbiBbaW5jcl9tYXBdXG4gICAgICAgIGNoYW5nZXMgaW4gYSB3YXkgd2hpY2ggY2FuIGJlIGVmZmljaWVudGx5IGRpZmZlZC5cblxuICAgICAgICBUaGlzIHdpbGwgcmUtdXNlIGV4aXN0aW5nIG5vZGVzIHdoZW4gaXQgY2FuLCBidXQgd2lsbCBub3QgYWx3YXlzIGRvIHNvLlxuICAgICopXG4gICAgdmFsIGZpbmQgOiAoJ2ssICd2LCBfLCAndykgdCAtPiAnayAtPiAoJ3Ygb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICAgKCoqIEEgY29udmVuaWVudCB3YXkgdG8gcmVmZXIgdG8gdGhlIHR5cGUgZm9yIGEgZ2l2ZW4ga2V5LiAqKVxuICAgIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICAgIHR5cGUgdFxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kKSA6IHNpZ1xuICAgICAgdHlwZSBub25yZWMgKCd2LCAndykgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcywgJ3cpIHRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBGb3JfZGVidWcgOiBzaWdcbiAgICAgIHZhbCBzZXhwX29mX3QgOiAoJ2sgLT4gU2V4cC50KSAtPiAoJ3YgLT4gU2V4cC50KSAtPiAoJ2ssICd2LCAnY21wLCBfKSB0IC0+IFNleHAudFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgOiBzaWdcbiAgICB2YWwgZmluZF9rZXlfcmFuZ2VfbGluZWFyXG4gICAgICA6ICBmcm9tOmludFxuICAgICAgLT4gdG9fOmludFxuICAgICAgLT4gKCdhLCAnYiwgJ2MpIEJhc2UuTWFwLnRcbiAgICAgIC0+ICgnYSAqICdhIG9wdGlvbikgb3B0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFNfZ2VuID0gU19nZW5cblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSBzdGF0ZV93aXRuZXNzXG5cbiAgICBpbmNsdWRlXG4gICAgICBTX2dlblxuICAgICAgd2l0aCB0eXBlICdhIEluY3IudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgIGFuZCB0eXBlICdhIEluY3IuQ3V0b2ZmLnQgPSAnYSBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgICAgIGFuZCB0eXBlICgnaywgJ3YsICdjbXApIExvb2t1cC50ID0gKCdrLCAndiwgJ2NtcCwgc3RhdGVfd2l0bmVzcykgTG9va3VwLnRcbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEluY3IgOiBJbmNyZW1lbnRhbC5TKSA6XG4gICAgUyB3aXRoIHR5cGUgc3RhdGVfd2l0bmVzcyA6PSBJbmNyLnN0YXRlX3dpdG5lc3MgYW5kIG1vZHVsZSBJbmNyIDo9IEluY3JcbmVuZFxuIiwib3BlbiEgQ29yZVxuaW5jbHVkZSBJbmNyX21hcF9pbnRmXG5cbmxldCBub19pbnN0cnVtZW50YXRpb24gPSB7IEluc3RydW1lbnRhdGlvbi5mID0gKGZ1biBmIC0+IGYgKCkpIH1cblxuKCoqIFRoaXMgdHlwZSBsZXRzIHVzIGNhcHR1cmUgdGhlIGtpbmQgb2YgbWFwIGZ1bmN0aW9uIGJlaW5nIHBlcmZvcm1lZCwgc28gd2UgY2FuIHdpdGhcbiAgICBvbmUgaW1wbGVtZW50YXRpb24gcGVyZm9ybSBtYXAgYW5kIGZpbHRlci1tYXAgb3BlcmF0aW9ucy5cblxuICAgIEhlcmUsIFsnaW5wdXRfZGF0YV0gaXMgdGhlIHR5cGUgb2YgZGF0YSBpbiB0aGUgaW5wdXQgbWFwLCBbJ291dHB1dF9kYXRhXSBpcyB0aGUgdHlwZVxuICAgIG9mIGRhdGEgaW4gdGhlIG91dHB1dCBtYXAsIGFuZCBbJ2Zfb3V0cHV0XSBpcyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIFt+Zl0gZnVuY3Rpb25cbiAgICBwYXNzZWQgdG8gdGhlIG1hcHBpbmcgZnVuY3Rpb24uICopXG5tb2R1bGUgTWFwX3R5cGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2lucHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgJ2Zfb3V0cHV0KSB0ID1cbiAgICB8IE1hcCA6ICgnaW5wdXRfZGF0YSwgJ291dHB1dF9kYXRhLCAnb3V0cHV0X2RhdGEpIHRcbiAgICB8IEZpbHRlcl9tYXAgOiAoJ2lucHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgJ291dHB1dF9kYXRhIG9wdGlvbikgdFxuXG4gICgqIFRoZSBleHRyYSB0eXBlIHZhcmlhYmxlICdhIGlzIHRvIGFsbG93IGluIGZ1dHVyZTpcbiAgICAgfCBGaWx0ZXIgOiAoJ291dHB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsIGJvb2wpIHQgKilcbmVuZFxuXG5tb2R1bGUgR2VuZXJpYyA9IHN0cnVjdFxuICBsZXQgd2l0aF9vbGQgfmluc3RydW1lbnRhdGlvbiBpIH5mID1cbiAgICBsZXQgb3BlbiBJbmNyZW1lbnRhbC5MZXRfc3ludGF4IGluXG4gICAgbGV0IG9sZCA9IHJlZiBOb25lIGluXG4gICAgbGV0JW1hcCBhID0gaSBpblxuICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICBsZXQgYiA9IGYgfm9sZDohb2xkIGEgaW5cbiAgICAgIG9sZCA6PSBTb21lIChhLCBiKTtcbiAgICAgIGIpXG4gIDs7XG5cbiAgbGV0IGN1dG9mZiA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgbWFwIH5jdXRvZmYgPVxuICAgIGxldCBkYXRhX2VxdWFsIG9sZF92YWx1ZSBuZXdfdmFsdWUgPVxuICAgICAgSW5jcmVtZW50YWwuQ3V0b2ZmLnNob3VsZF9jdXRvZmYgY3V0b2ZmIH5vbGRfdmFsdWUgfm5ld192YWx1ZVxuICAgIGluXG4gICAgd2l0aF9vbGQgfmluc3RydW1lbnRhdGlvbiBtYXAgfmY6KGZ1biB+b2xkIGN1ciAtPlxuICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjdXJcbiAgICAgIHwgU29tZSAoX29sZF9pbiwgb2xkKSAtPlxuICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZiB+ZGF0YV9lcXVhbCB+aW5pdDpvbGQgb2xkIGN1ciB+ZjooZnVuIGFjYyAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICB8IGBMZWZ0IF9vbGQgLT4gTWFwLnJlbW92ZSBhY2Mga2V5XG4gICAgICAgICAgfCBgUmlnaHQgbmV3XyAtPiBNYXAuYWRkX2V4biBhY2MgfmtleSB+ZGF0YTpuZXdfXG4gICAgICAgICAgfCBgVW5lcXVhbCAoX29sZCwgbmV3X3ZhbHVlKSAtPiBNYXAuc2V0IGFjYyB+a2V5IH5kYXRhOm5ld192YWx1ZSkpXG4gIDs7XG5cbiAgbGV0IHVub3JkZXJlZF9mb2xkXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICA/c3BlY2lhbGl6ZWRfaW5pdGlhbFxuICAgICAgICA/KGZpbmFsaXplID0gRm4uaWQpXG4gICAgICAgID8ocmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eSA9IGZhbHNlKVxuICAgICAgICBtYXBcbiAgICAgICAgfmluaXRcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlXG4gICAgPVxuICAgIGxldCB1cGRhdGUgPVxuICAgICAgbGV0IGRlZmF1bHQgfmtleSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyA9XG4gICAgICAgIGFkZCB+a2V5IH5kYXRhOm5ld19kYXRhIChyZW1vdmUgfmtleSB+ZGF0YTpvbGRfZGF0YSBhY2MpXG4gICAgICBpblxuICAgICAgT3B0aW9uLnZhbHVlIHVwZGF0ZSB+ZGVmYXVsdFxuICAgIGluXG4gICAgd2l0aF9vbGQgfmluc3RydW1lbnRhdGlvbiBtYXAgfmY6KGZ1biB+b2xkIG5ld19pbiAtPlxuICAgICAgbGV0IGFjYyA9XG4gICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCBzcGVjaWFsaXplZF9pbml0aWFsIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IE1hcC5mb2xkIH5pbml0IH5mOmFkZCBuZXdfaW5cbiAgICAgICAgICAgfCBTb21lIGluaXRpYWwgLT4gaW5pdGlhbCB+aW5pdCBuZXdfaW4pXG4gICAgICAgIHwgU29tZSAob2xkX2luLCBvbGRfb3V0KSAtPlxuICAgICAgICAgIGlmIHJldmVydF90b19pbml0X3doZW5fZW1wdHkgJiYgTWFwLmxlbmd0aCBuZXdfaW4gPSAwXG4gICAgICAgICAgdGhlbiBpbml0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgfmluaXQ6b2xkX291dFxuICAgICAgICAgICAgICBvbGRfaW5cbiAgICAgICAgICAgICAgbmV3X2luXG4gICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgIH5mOihmdW4gYWNjIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgICAgICAgICAgIHwgYExlZnQgb2xkIC0+IHJlbW92ZSB+a2V5IH5kYXRhOm9sZCBhY2NcbiAgICAgICAgICAgICAgICB8IGBSaWdodCBuZXdfIC0+IGFkZCB+a2V5IH5kYXRhOm5ld18gYWNjXG4gICAgICAgICAgICAgICAgfCBgVW5lcXVhbCAob2xkLCBuZXdfKSAtPiB1cGRhdGUgfmtleSB+b2xkX2RhdGE6b2xkIH5uZXdfZGF0YTpuZXdfIGFjYylcbiAgICAgIGluXG4gICAgICBmaW5hbGl6ZSBhY2MpXG4gIDs7XG5cbiAgbGV0IHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICBpbmNyX21hcFxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICA9XG4gICAgbGV0IHVwZGF0ZSA9XG4gICAgICBtYXRjaCB1cGRhdGUgd2l0aFxuICAgICAgfCBTb21lIHVwZGF0ZSAtPiB1cGRhdGVcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgICAgYWRkXG4gICAgICAgICAgICB+b3V0ZXJfa2V5XG4gICAgICAgICAgICB+aW5uZXJfa2V5XG4gICAgICAgICAgICB+ZGF0YTpuZXdfZGF0YVxuICAgICAgICAgICAgKHJlbW92ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6b2xkX2RhdGEgYWNjKVxuICAgIGluXG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIGluY3JfbWFwXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgfmluaXRcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5Om91dGVyX2tleSB+b2xkX2RhdGE6b2xkX2lubmVyX21hcCB+bmV3X2RhdGE6bmV3X2lubmVyX21hcCBhY2MgLT5cbiAgICAgICAgKE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmIG9sZF9pbm5lcl9tYXAgbmV3X2lubmVyX21hcCB+ZGF0YV9lcXVhbClcbiAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICB+ZjooZnVuIGFjYyAoaW5uZXJfa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICB8IGBMZWZ0IGRhdGFfcmVtb3ZlZCAtPiByZW1vdmUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOmRhdGFfcmVtb3ZlZCBhY2NcbiAgICAgICAgICAgIHwgYFJpZ2h0IGRhdGFfYWRkZWQgLT4gYWRkIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpkYXRhX2FkZGVkIGFjY1xuICAgICAgICAgICAgfCBgVW5lcXVhbCAob2xkX2RhdGEsIG5ld19kYXRhKSAtPlxuICAgICAgICAgICAgICB1cGRhdGUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjKSBbQG5vbnRhaWxdKVxuICAgICAgfmFkZDooZnVuIH5rZXk6b3V0ZXJfa2V5IH5kYXRhOmlubmVyX21hcCBhY2MgLT5cbiAgICAgICAgTWFwLmZvbGQgaW5uZXJfbWFwIH5pbml0OmFjYyB+ZjooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIGFjYyAtPlxuICAgICAgICAgIGFkZCB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGEgYWNjKSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5Om91dGVyX2tleSB+ZGF0YTppbm5lcl9tYXAgYWNjIC0+XG4gICAgICAgIE1hcC5mb2xkIGlubmVyX21hcCB+aW5pdDphY2MgfmY6KGZ1biB+a2V5OmlubmVyX2tleSB+ZGF0YSBhY2MgLT5cbiAgICAgICAgICByZW1vdmUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhIGFjYykpXG4gIDs7XG5cbiAgbGV0IHdpdGhfY29tcGFyYXRvcicgZ2V0X2NvbXBhcmF0b3IgeCBmID1cbiAgICBJbmNyZW1lbnRhbC5iaW5kIChJbmNyZW1lbnRhbC5mcmVlemUgKEluY3JlbWVudGFsLm1hcCB4IH5mOmdldF9jb21wYXJhdG9yKSkgfmZcbiAgOztcblxuICAoKiogQ2FwdHVyZXMgdGhlIGNvbXBhcmF0b3IgKHdoaWNoIGNhbid0IGNoYW5nZSBhbnl3YXksIHNpbmNlIHRoZSB0eXBlIGRldGVybWluZXMgdGhlXG4gICAgICBjb21wYXJhdG9yKSBieSBmcmVlemluZyB0aGUgY29ycmVzcG9uZGluZyBtYXAuICBOb3RlIHRoYXQgYnkgZmlyc3QgdXNpbmcgSW5jcmVtZW50YWwubWFwIHRvXG4gICAgICBnZXQgdGhlIGNvbXBhcmF0b3Igb3V0IG9mIHRoZSBtYXAsIHdlIGFsbG93IHRoZSBpbml0aWFsIG1hcCBpdHNlbGYgdG8gYmUgZ2FyYmFnZVxuICAgICAgY29sbGVjdGVkICopXG4gIGxldCB3aXRoX2NvbXBhcmF0b3IgbWFwIGYgPSB3aXRoX2NvbXBhcmF0b3InIE1hcC5jb21wYXJhdG9yIG1hcCBmXG5cbiAgbGV0IG9mX3NldCA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgc2V0ID1cbiAgICB3aXRoX2NvbXBhcmF0b3InIFNldC5jb21wYXJhdG9yIHNldCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBvbGRfaW5wdXQgPSByZWYgKFNldC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yKSBpblxuICAgICAgbGV0IG9sZF9vdXRwdXQgPSByZWYgKE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yKSBpblxuICAgICAgSW5jcmVtZW50YWwubWFwIHNldCB+ZjooZnVuIG5ld19pbnB1dCAtPlxuICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBuZXdfb3V0cHV0ID1cbiAgICAgICAgICAgIFNlcXVlbmNlLmZvbGRcbiAgICAgICAgICAgICAgKFNldC5zeW1tZXRyaWNfZGlmZiAhb2xkX2lucHV0IG5ld19pbnB1dClcbiAgICAgICAgICAgICAgfmluaXQ6IW9sZF9vdXRwdXRcbiAgICAgICAgICAgICAgfmY6KGZ1biBvdXRwdXQgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IEZpcnN0IGsgLT4gTWFwLnJlbW92ZSBvdXRwdXQga1xuICAgICAgICAgICAgICAgIHwgU2Vjb25kIGsgLT4gTWFwLmFkZF9leG4gb3V0cHV0IH5rZXk6ayB+ZGF0YTooKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG9sZF9pbnB1dCA6PSBuZXdfaW5wdXQ7XG4gICAgICAgICAgb2xkX291dHB1dCA6PSBuZXdfb3V0cHV0O1xuICAgICAgICAgIG5ld19vdXRwdXQpKSlcbiAgOztcblxuICBsZXQgZ2VuZXJpY19tYXBpXG4gICAgICAgICh0eXBlIGlucHV0X2RhdGEgb3V0cHV0X2RhdGEgZl9vdXRwdXQgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgKHdpdG5lc3MgOiAoaW5wdXRfZGF0YSwgb3V0cHV0X2RhdGEsIGZfb3V0cHV0KSBNYXBfdHlwZS50KVxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChtYXAgOiAoKCdrZXksIGlucHV0X2RhdGEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGYgOiBrZXk6J2tleSAtPiBkYXRhOmlucHV0X2RhdGEgLT4gZl9vdXRwdXQpXG4gICAgPVxuICAgIHdpdGhfb2xkIH5pbnN0cnVtZW50YXRpb24gbWFwIH5mOihmdW4gfm9sZCBpbnB1dCAtPlxuICAgICAgbWF0Y2ggb2xkLCBNYXAubGVuZ3RoIGlucHV0IHdpdGhcbiAgICAgIHwgXywgMCB8IE5vbmUsIF8gLT5cbiAgICAgICAgKG1hdGNoIHdpdG5lc3Mgd2l0aFxuICAgICAgICAgfCBNYXBfdHlwZS5NYXAgLT4gKE1hcC5tYXBpIGlucHV0IH5mIDogKCdrZXksIG91dHB1dF9kYXRhLCAnY21wKSBNYXAudClcbiAgICAgICAgIHwgTWFwX3R5cGUuRmlsdGVyX21hcCAtPiBNYXAuZmlsdGVyX21hcGkgaW5wdXQgfmYpXG4gICAgICB8IFNvbWUgKG9sZF9pbnB1dCwgb2xkX291dHB1dCksIF8gLT5cbiAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICBvbGRfaW5wdXRcbiAgICAgICAgICBpbnB1dFxuICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgfmluaXQ6b2xkX291dHB1dFxuICAgICAgICAgIH5mOihmdW4gb3V0cHV0IChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICB8IGBMZWZ0IF8gLT4gTWFwLnJlbW92ZSBvdXRwdXQga2V5XG4gICAgICAgICAgICB8IGBSaWdodCBuZXdfZGF0YSB8IGBVbmVxdWFsIChfLCBuZXdfZGF0YSkgLT5cbiAgICAgICAgICAgICAgbGV0IHJlcyA9IGYgfmtleSB+ZGF0YTpuZXdfZGF0YSBpblxuICAgICAgICAgICAgICAobWF0Y2ggd2l0bmVzcyB3aXRoXG4gICAgICAgICAgICAgICB8IE1hcF90eXBlLk1hcCAtPiBNYXAuc2V0IG91dHB1dCB+a2V5IH5kYXRhOnJlc1xuICAgICAgICAgICAgICAgfCBNYXBfdHlwZS5GaWx0ZXJfbWFwIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCByZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE1hcC5yZW1vdmUgb3V0cHV0IGtleVxuICAgICAgICAgICAgICAgICAgfCBTb21lIG91dHB1dF9kYXRhIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGE6b3V0cHV0X2RhdGEpKSkpXG4gIDs7XG5cbiAgbGV0IG1hcGkgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgZ2VuZXJpY19tYXBpIE1hcCB+aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZlxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBnZW5lcmljX21hcGkgRmlsdGVyX21hcCB+aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZlxuICA7O1xuXG4gIGxldCBtYXAgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIG1hcGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBmaWx0ZXJfbWFwaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHdpdGhfb2xkMiB+aW5zdHJ1bWVudGF0aW9uIGkxIGkyIH5mID1cbiAgICBsZXQgb2xkID0gcmVmIE5vbmUgaW5cbiAgICBJbmNyZW1lbnRhbC5tYXAyIGkxIGkyIH5mOihmdW4gYTEgYTIgLT5cbiAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgIGxldCBiID0gZiB+b2xkOiFvbGQgYTEgYTIgaW5cbiAgICAgICAgb2xkIDo9IFNvbWUgKGExLCBhMiwgYik7XG4gICAgICAgIGIpKVxuICA7O1xuXG4gIGxldCB1bm9yZGVyZWRfZm9sZF93aXRoX2V4dHJhXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KGV4dHJhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICA/c3BlY2lhbGl6ZWRfaW5pdGlhbFxuICAgICAgICA/KGZpbmFsaXplID0gRm4uaWQpXG4gICAgICAgID8ocmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eSA9IGZhbHNlKVxuICAgICAgICBtYXBcbiAgICAgICAgZXh0cmFcbiAgICAgICAgfmluaXRcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlXG4gICAgICAgIH5leHRyYV9jaGFuZ2VkXG4gICAgPVxuICAgIGxldCB1cGRhdGUgPVxuICAgICAgbGV0IGRlZmF1bHQgfmtleSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyBleHRyYSA9XG4gICAgICAgIGFkZCB+a2V5IH5kYXRhOm5ld19kYXRhIChyZW1vdmUgfmtleSB+ZGF0YTpvbGRfZGF0YSBhY2MgZXh0cmEpIGV4dHJhXG4gICAgICBpblxuICAgICAgT3B0aW9uLnZhbHVlIHVwZGF0ZSB+ZGVmYXVsdFxuICAgIGluXG4gICAgd2l0aF9vbGQyIH5pbnN0cnVtZW50YXRpb24gbWFwIGV4dHJhIH5mOihmdW4gfm9sZCBuZXdfaW4gbmV3X2V4dHJhIC0+XG4gICAgICBsZXQgYWNjID1cbiAgICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHNwZWNpYWxpemVkX2luaXRpYWwgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBNYXAuZm9sZCBuZXdfaW4gfmluaXQgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgfmtleSB+ZGF0YSBhY2MgbmV3X2V4dHJhKVxuICAgICAgICAgICB8IFNvbWUgaW5pdGlhbCAtPiBpbml0aWFsIH5pbml0IG5ld19pbiBuZXdfZXh0cmEpXG4gICAgICAgIHwgU29tZSAob2xkX2luLCBvbGRfZXh0cmEsIG9sZF9vdXQpIC0+XG4gICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICBpZiBleHRyYV9lcXVhbCBvbGRfZXh0cmEgbmV3X2V4dHJhXG4gICAgICAgICAgICB0aGVuIG9sZF9vdXRcbiAgICAgICAgICAgIGVsc2UgZXh0cmFfY2hhbmdlZCB+b2xkX2V4dHJhIH5uZXdfZXh0cmEgfmlucHV0Om9sZF9pbiBvbGRfb3V0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiByZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5ICYmIE1hcC5sZW5ndGggbmV3X2luID0gMFxuICAgICAgICAgIHRoZW4gaW5pdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgIH5pbml0OmFjY1xuICAgICAgICAgICAgICBvbGRfaW5cbiAgICAgICAgICAgICAgbmV3X2luXG4gICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgIH5mOihmdW4gYWNjIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgICAgICAgICAgIHwgYExlZnQgb2xkIC0+IHJlbW92ZSB+a2V5IH5kYXRhOm9sZCBhY2MgbmV3X2V4dHJhXG4gICAgICAgICAgICAgICAgfCBgUmlnaHQgbmV3XyAtPiBhZGQgfmtleSB+ZGF0YTpuZXdfIGFjYyBuZXdfZXh0cmFcbiAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChvbGQsIG5ld18pIC0+XG4gICAgICAgICAgICAgICAgICB1cGRhdGUgfmtleSB+b2xkX2RhdGE6b2xkIH5uZXdfZGF0YTpuZXdfIGFjYyBuZXdfZXh0cmEpXG4gICAgICBpblxuICAgICAgZmluYWxpemUgYWNjKVxuICA7O1xuXG4gIGxldCBtYXBpX2NvdW50XG4gICAgICAgICh0eXBlIGEgY21wKVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgaW5wdXRcbiAgICAgICAgfihjb21wYXJhdG9yIDogKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSBhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcCkpXG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCBtb2R1bGUgTSA9ICh2YWwgY29tcGFyYXRvcikgaW5cbiAgICBsZXQgYWRkIG5ld19rZXkgYWNjID1cbiAgICAgIE1hcC51cGRhdGUgYWNjIG5ld19rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiAxXG4gICAgICAgIHwgU29tZSBuIC0+IG4gKyAxKVxuICAgIGluXG4gICAgbGV0IHJlbW92ZSBuZXdfa2V5IGFjYyA9XG4gICAgICBNYXAuY2hhbmdlIGFjYyBuZXdfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgMSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBuIC0+IFNvbWUgKG4gLSAxKSlcbiAgICBpblxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICB+ZGF0YV9lcXVhbFxuICAgICAgaW5wdXRcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBNKSlcbiAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgKGYgfmtleSB+ZGF0YSkgYWNjKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IHJlbW92ZSAoZiB+a2V5IH5kYXRhKSBhY2MpXG4gICAgICB+dXBkYXRlOihmdW4gfmtleSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICBsZXQgcHJldl9rZXkgPSBmIH5rZXkgfmRhdGE6b2xkX2RhdGEgaW5cbiAgICAgICAgbGV0IG5ld19rZXkgPSBmIH5rZXkgfmRhdGE6bmV3X2RhdGEgaW5cbiAgICAgICAgaWYgTS5jb21wYXJhdG9yLmNvbXBhcmUgcHJldl9rZXkgbmV3X2tleSA9IDBcbiAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgZWxzZSBhY2MgfD4gcmVtb3ZlIHByZXZfa2V5IHw+IGFkZCBuZXdfa2V5KVxuICA7O1xuXG4gIGxldCBtYXBfY291bnQgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9jb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+XG4gICAgICBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IG1pbl9oZWxwZXIgbWFwID1cbiAgICBtYXRjaCBNYXAubWluX2VsdCBtYXAgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChtaW4sIF8pIC0+IFNvbWUgbWluXG4gIDs7XG5cbiAgbGV0IG1heF9oZWxwZXIgbWFwID1cbiAgICBtYXRjaCBNYXAubWF4X2VsdCBtYXAgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChtYXgsIF8pIC0+IFNvbWUgbWF4XG4gIDs7XG5cbiAgbGV0IGJvdW5kc19oZWxwZXIgbWFwID1cbiAgICBtYXRjaCBNYXAubWluX2VsdCBtYXAsIE1hcC5tYXhfZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1pbiwgXyksIFNvbWUgKG1heCwgXykgLT4gU29tZSAobWluLCBtYXgpXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBtYXBpX21pbiA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXBcbiAgICAgIH5mOm1pbl9oZWxwZXJcbiAgICAgIChtYXBpX2NvdW50ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYpXG4gIDs7XG5cbiAgbGV0IG1hcGlfbWF4ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcFxuICAgICAgfmY6bWF4X2hlbHBlclxuICAgICAgKG1hcGlfY291bnQgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZilcbiAgOztcblxuICBsZXQgbWFwaV9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwXG4gICAgICB+Zjpib3VuZHNfaGVscGVyXG4gICAgICAobWFwaV9jb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mKVxuICA7O1xuXG4gIGxldCBtYXBfbWluID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfbWluID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICAgIGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWFwX21heCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBtYXBpX21heCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+XG4gICAgICBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IG1pbl92YWx1ZSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yID1cbiAgICBtYXBfbWluID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6Rm4uaWRcbiAgOztcblxuICBsZXQgbWF4X3ZhbHVlID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgPVxuICAgIG1hcF9tYXggP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjpGbi5pZFxuICA7O1xuXG4gIGxldCBtYXBfYm91bmRzID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfYm91bmRzID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICAgIGYgZGF0YSlcbiAgOztcblxuICBsZXQgdmFsdWVfYm91bmRzID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgPVxuICAgIG1hcF9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjpGbi5pZFxuICA7O1xuXG4gIGxldCBtZXJnZV9zaGFyZWRfaW1wbFxuICAgICAgICB+b2xkXG4gICAgICAgIH5uZXdfbGVmdF9tYXBcbiAgICAgICAgfm5ld19yaWdodF9tYXBcbiAgICAgICAgfmRhdGFfZXF1YWxfbGVmdFxuICAgICAgICB+ZGF0YV9lcXVhbF9yaWdodFxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgY29tcGFyYXRvciA9IE1hcC5jb21wYXJhdG9yIG5ld19sZWZ0X21hcCBpblxuICAgIGxldCBvbGRfbGVmdF9tYXAsIG9sZF9yaWdodF9tYXAsIG9sZF9vdXRwdXQgPVxuICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgZW1wdHkgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgICBlbXB0eSwgZW1wdHksIGVtcHR5XG4gICAgICB8IFNvbWUgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgbGVmdF9kaWZmID1cbiAgICAgIE1hcC5zeW1tZXRyaWNfZGlmZiBvbGRfbGVmdF9tYXAgbmV3X2xlZnRfbWFwIH5kYXRhX2VxdWFsOmRhdGFfZXF1YWxfbGVmdFxuICAgIGluXG4gICAgbGV0IHJpZ2h0X2RpZmYgPVxuICAgICAgTWFwLnN5bW1ldHJpY19kaWZmIG9sZF9yaWdodF9tYXAgbmV3X3JpZ2h0X21hcCB+ZGF0YV9lcXVhbDpkYXRhX2VxdWFsX3JpZ2h0XG4gICAgaW5cbiAgICAoKiBXZSBtZXJnZSB0aGUgdHdvIHNpZGVzIG9mIHRoZSBkaWZmcyB0b2dldGhlciBzbyB3ZSBjYW4gbWFrZSBzdXJlIHRvIGhhbmRsZSBlYWNoXG4gICAgICAga2V5IGV4YWN0bHkgb25jZS4gVGhpcyByZWxpZXMgb24gc3ltbWV0cmljIGRpZmYgZ2l2aW5nIHNvcnRlZCBvdXRwdXQuICopXG4gICAgU2VxdWVuY2UubWVyZ2Vfd2l0aF9kdXBsaWNhdGVzXG4gICAgICBsZWZ0X2RpZmZcbiAgICAgIHJpZ2h0X2RpZmZcbiAgICAgIH5jb21wYXJlOihmdW4gKGxlZnRfa2V5LCBfKSAocmlnaHRfa2V5LCBfKSAtPiBjb21wYXJhdG9yLmNvbXBhcmUgbGVmdF9rZXkgcmlnaHRfa2V5KVxuICAgIHw+IFNlcXVlbmNlLmZvbGQgfmluaXQ6b2xkX291dHB1dCB+ZjooZnVuIG91dHB1dCBkaWZmX2VsZW1lbnQgLT5cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBtYXRjaCBkaWZmX2VsZW1lbnQgd2l0aFxuICAgICAgICB8IExlZnQgKGtleSwgXykgfCBSaWdodCAoa2V5LCBfKSAtPiBrZXlcbiAgICAgICAgfCBCb3RoICgobGVmdF9rZXksIF8pLCAoX3JpZ2h0X2tleSwgXykpIC0+XG4gICAgICAgICAgKCogY29tcGFyaXNvbiBmdW5jdGlvbnMgY2FuIGJlIGV4cGVuc2l2ZSEgKilcbiAgICAgICAgICAoKiBhc3NlcnQgKGNvbXBhcmF0b3IuY29tcGFyZSBsZWZ0X2tleSByaWdodF9rZXkgPSAwKTsgKilcbiAgICAgICAgICBsZWZ0X2tleVxuICAgICAgaW5cbiAgICAgIGYgfm9sZF9vdXRwdXQgfmtleSB+b3V0cHV0IH5kaWZmX2VsZW1lbnQpXG4gIDs7XG5cbiAgbGV0IG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50ID0gZnVuY3Rpb25cbiAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgIHwgYFJpZ2h0IHggfCBgVW5lcXVhbCAoXywgeCkgLT4gU29tZSB4XG4gIDs7XG5cbiAgbGV0IG1lcmdlXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/KGRhdGFfZXF1YWxfbGVmdCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8oZGF0YV9lcXVhbF9yaWdodCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIGxlZnRfbWFwXG4gICAgICAgIHJpZ2h0X21hcFxuICAgICAgICB+ZlxuICAgID1cbiAgICB3aXRoX29sZDJcbiAgICAgIGxlZnRfbWFwXG4gICAgICByaWdodF9tYXBcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgIH5mOihmdW4gfm9sZCBuZXdfbGVmdF9tYXAgbmV3X3JpZ2h0X21hcCAtPlxuICAgICAgICBtZXJnZV9zaGFyZWRfaW1wbFxuICAgICAgICAgIH5vbGRcbiAgICAgICAgICB+bmV3X2xlZnRfbWFwXG4gICAgICAgICAgfm5ld19yaWdodF9tYXBcbiAgICAgICAgICB+ZGF0YV9lcXVhbF9sZWZ0XG4gICAgICAgICAgfmRhdGFfZXF1YWxfcmlnaHRcbiAgICAgICAgICB+ZjooZnVuIH5vbGRfb3V0cHV0Ol8gfmtleSB+b3V0cHV0IH5kaWZmX2VsZW1lbnQgLT5cbiAgICAgICAgICAgICgqIFRoZXNlIHZhbHVlcyByZXByZXNlbnQgd2hldGhlciB0aGVyZSBpcyBkYXRhIGZvciB0aGUgZ2l2ZW4ga2V5IGluIHRoZSBuZXdcbiAgICAgICAgICAgICAgIGlucHV0IGluIHRoZSBsZWZ0IGFuZCByaWdodCBtYXAuICopXG4gICAgICAgICAgICBsZXQgbGVmdF9kYXRhX29wdCwgcmlnaHRfZGF0YV9vcHQgPVxuICAgICAgICAgICAgICBtYXRjaCBkaWZmX2VsZW1lbnQgd2l0aFxuICAgICAgICAgICAgICB8IEJvdGggKChfLCBsZWZ0X2RpZmYpLCAoXywgcmlnaHRfZGlmZikpIC0+XG4gICAgICAgICAgICAgICAgbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgbGVmdF9kaWZmLCBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCByaWdodF9kaWZmXG4gICAgICAgICAgICAgIHwgTGVmdCAoXywgbGVmdF9kaWZmKSAtPlxuICAgICAgICAgICAgICAgIG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IGxlZnRfZGlmZiwgTWFwLmZpbmQgbmV3X3JpZ2h0X21hcCBrZXlcbiAgICAgICAgICAgICAgfCBSaWdodCAoXywgcmlnaHRfZGlmZikgLT5cbiAgICAgICAgICAgICAgICBNYXAuZmluZCBuZXdfbGVmdF9tYXAga2V5LCBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCByaWdodF9kaWZmXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG91dHB1dF9kYXRhX29wdCA9XG4gICAgICAgICAgICAgIG1hdGNoIGxlZnRfZGF0YV9vcHQsIHJpZ2h0X2RhdGFfb3B0IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIHgsIE5vbmUgLT4gZiB+a2V5IChgTGVmdCB4KVxuICAgICAgICAgICAgICB8IE5vbmUsIFNvbWUgeSAtPiBmIH5rZXkgKGBSaWdodCB5KVxuICAgICAgICAgICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IGYgfmtleSAoYEJvdGggKHgsIHkpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIG91dHB1dF9kYXRhX29wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTWFwLnJlbW92ZSBvdXRwdXQga2V5XG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBNYXAuc2V0IG91dHB1dCB+a2V5IH5kYXRhKSlcbiAgOztcblxuICBsZXQgbWVyZ2VfYm90aF9zb21lXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/KGRhdGFfZXF1YWxfbGVmdCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8oZGF0YV9lcXVhbF9yaWdodCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8ob3V0X2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgbGVmdF9tYXBcbiAgICAgICAgcmlnaHRfbWFwXG4gICAgICAgIH5mXG4gICAgPVxuICAgIHdpdGhfb2xkMlxuICAgICAgbGVmdF9tYXBcbiAgICAgIHJpZ2h0X21hcFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgfmY6KGZ1biB+b2xkIG5ld19sZWZ0X21hcCBuZXdfcmlnaHRfbWFwIC0+XG4gICAgICAgIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgbmV3X2xlZnRfbWFwIGluXG4gICAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICAgIG1hdGNoIE1hcC5sZW5ndGggbmV3X2xlZnRfbWFwLCBNYXAubGVuZ3RoIG5ld19yaWdodF9tYXAgd2l0aFxuICAgICAgICAoKiBCZWNhdXNlIHdlIG9ubHkgY2FyZSBhYm91dCBrZXlzIHRoYXQgYXJlIGluIGJvdGggbWFwcywgaWYgZWl0aGVyIG1hcCBpc1xuICAgICAgICAgICBlbXB0eSwgYmFpbCBlYXJseS4gKilcbiAgICAgICAgfCAwLCBfIHwgXywgMCAtPiBlbXB0eVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBtZXJnZV9zaGFyZWRfaW1wbFxuICAgICAgICAgICAgfm9sZFxuICAgICAgICAgICAgfm5ld19sZWZ0X21hcFxuICAgICAgICAgICAgfm5ld19yaWdodF9tYXBcbiAgICAgICAgICAgIH5kYXRhX2VxdWFsX2xlZnRcbiAgICAgICAgICAgIH5kYXRhX2VxdWFsX3JpZ2h0XG4gICAgICAgICAgICB+ZjooZnVuIH5vbGRfb3V0cHV0IH5rZXkgfm91dHB1dCB+ZGlmZl9lbGVtZW50IC0+XG4gICAgICAgICAgICAgIGxldCBsZWZ0X2FuZF9yaWdodF9kYXRhX29wdCA9XG4gICAgICAgICAgICAgICAgbGV0IG9wZW4gT3B0aW9uLkxldF9zeW50YXggaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBkaWZmX2VsZW1lbnQgd2l0aFxuICAgICAgICAgICAgICAgIHwgQm90aCAoKF8sIGxlZnRfZGlmZiksIChfLCByaWdodF9kaWZmKSkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCViaW5kIGxlZnRfZGF0YSA9IG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IGxlZnRfZGlmZiBpblxuICAgICAgICAgICAgICAgICAgbGV0JW1hcCByaWdodF9kYXRhID0gbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgcmlnaHRfZGlmZiBpblxuICAgICAgICAgICAgICAgICAgbGVmdF9kYXRhLCByaWdodF9kYXRhXG4gICAgICAgICAgICAgICAgfCBMZWZ0IChfLCBsZWZ0X2RpZmYpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQlYmluZCBsZWZ0X2RhdGEgPSBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCBsZWZ0X2RpZmYgaW5cbiAgICAgICAgICAgICAgICAgIGxldCVtYXAgcmlnaHRfZGF0YSA9IE1hcC5maW5kIG5ld19yaWdodF9tYXAga2V5IGluXG4gICAgICAgICAgICAgICAgICBsZWZ0X2RhdGEsIHJpZ2h0X2RhdGFcbiAgICAgICAgICAgICAgICB8IFJpZ2h0IChfLCByaWdodF9kaWZmKSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBtYXRjaCBhcm0gYmluZHMgW3JpZ2h0X2RhdGFdIGZpcnN0IGJlY2F1c2UgdGhlIG1hcCBsb29rdXBcbiAgICAgICAgICAgICAgICAgICAgIGlzIHNsb3dlciB0aGFuIGNhbGxpbmcgW25ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50XS4gKilcbiAgICAgICAgICAgICAgICAgIGxldCViaW5kIHJpZ2h0X2RhdGEgPSBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCByaWdodF9kaWZmIGluXG4gICAgICAgICAgICAgICAgICBsZXQlbWFwIGxlZnRfZGF0YSA9IE1hcC5maW5kIG5ld19sZWZ0X21hcCBrZXkgaW5cbiAgICAgICAgICAgICAgICAgIGxlZnRfZGF0YSwgcmlnaHRfZGF0YVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiBsb29rIGZvciB0aGUgcHJldmlvdXNseSBjb21wdXRlZCB2YWx1ZSB0byBzZWUgaWYgd2UgYWN0dWFsbHkgbmVlZCB0b1xuICAgICAgICAgICAgICAgICBhZGQgb3IgcmVtb3ZlIHRoZSBrZXkuICopXG4gICAgICAgICAgICAgIGxldCBwcmV2X291dCA9IE1hcC5maW5kIG9sZF9vdXRwdXQga2V5IGluXG4gICAgICAgICAgICAgIG1hdGNoIGxlZnRfYW5kX3JpZ2h0X2RhdGFfb3B0IHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lICh4LCB5KSAtPlxuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gZiB+a2V5IHggeSBpblxuICAgICAgICAgICAgICAgIChtYXRjaCBwcmV2X291dCB3aXRoXG4gICAgICAgICAgICAgICAgICgqIGlmIHRoZSBuZXcgcmVzdWx0IGlzIHRoZSBzYW1lIGFzIHRoZSBvbGQsIGRvbid0IGNoYW5nZSB0aGUgbWFwICopXG4gICAgICAgICAgICAgICAgIHwgU29tZSBwcmV2X291dCB3aGVuIG91dF9lcXVhbCBkYXRhIHByZXZfb3V0IC0+IG91dHB1dFxuICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTWFwLnNldCBvdXRwdXQgfmtleSB+ZGF0YSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIHByZXZfb3V0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IG91dHB1dFxuICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXkpKSlcbiAgOztcblxuICBsZXQgZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgKHR5cGUgaW5wdXRfZGF0YSBvdXRwdXRfZGF0YSBmX291dHB1dCBzdGF0ZV93aXRuZXNzKVxuICAgICAgICAod2l0bmVzcyA6IChpbnB1dF9kYXRhLCBvdXRwdXRfZGF0YSwgZl9vdXRwdXQpIE1hcF90eXBlLnQpXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2N1dG9mZlxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAobGhzIDogKCgna2V5LCBpbnB1dF9kYXRhLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihjb21wYXJhdG9yIDogKCdrZXksICdjbXApIENvbXBhcmF0b3IudClcbiAgICAgICAgfihmIDpcbiAgICAgICAgICAgIGtleTona2V5XG4gICAgICAgICAgLT4gZGF0YTooaW5wdXRfZGF0YSwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgICAgIC0+IChmX291dHB1dCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA6ICgoJ2tleSwgb3V0cHV0X2RhdGEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGxocyBpblxuICAgIGxldCBlbXB0eV9tYXAgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgIGxldCBwcmV2X21hcCA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcHJldl9ub2RlcyA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgYWNjIDogKCdrZXksIG91dHB1dF9kYXRhLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhYWNjKSBpblxuICAgIGxldCAob25faW5uZXJfY2hhbmdlIDoga2V5OidrZXkgLT4gZl9vdXRwdXQgLT4gdW5pdCkgPVxuICAgICAgbWF0Y2ggd2l0bmVzcyB3aXRoXG4gICAgICB8IE1hcF90eXBlLk1hcCAtPiBmdW4gfmtleSBkYXRhIC0+IGFjYyA6PSBNYXAuc2V0ICFhY2MgfmtleSB+ZGF0YVxuICAgICAgfCBNYXBfdHlwZS5GaWx0ZXJfbWFwIC0+XG4gICAgICAgIGZ1biB+a2V5IG9wdCAtPlxuICAgICAgICAgIGxldCBvbGQgPSAhYWNjIGluXG4gICAgICAgICAgYWNjXG4gICAgICAgICAgOj0gKG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTWFwLnJlbW92ZSBvbGQga2V5XG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBNYXAuc2V0IG9sZCB+a2V5IH5kYXRhKVxuICAgIGluXG4gICAgbGV0IHJlYyBsaHNfY2hhbmdlID1cbiAgICAgIGxhenlcbiAgICAgICAgKEluY3JlbWVudGFsLm1hcCBsaHMgfmY6KGZ1biBtYXAgLT5cbiAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgICAgICBsZXQgbmV3X25vZGVzID1cbiAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgICFwcmV2X21hcFxuICAgICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgICAgfmluaXQ6IXByZXZfbm9kZXNcbiAgICAgICAgICAgICAgICAgfmY6KGZ1biBub2RlcyAoa2V5LCBjaGFuZ2VkKSAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIF9kZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUubWFrZV9zdGFsZSBub2RlO1xuICAgICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlLCBkZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZXMgPSBNYXAucmVtb3ZlIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IHJlc3VsdCBkZXA7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gTWFwLnJlbW92ZSAhYWNjIGtleTtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5pbnZhbGlkYXRlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgIHwgYFJpZ2h0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgTWFwLmZpbmRfZXhuICFwcmV2X21hcCBrZXkpXG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgT3B0aW9uLml0ZXIgY3V0b2ZmIH5mOihmdW4gYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5zZXRfY3V0b2ZmIChFLk5vZGUud2F0Y2ggbm9kZSkgYyk7XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbm9kZSAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgbGhzX2NoYW5nZSkpO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IHVzZXJfZnVuY3Rpb25fZGVwID1cbiAgICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmIH5rZXkgfmRhdGE6KEUuTm9kZS53YXRjaCBub2RlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB+b25fY2hhbmdlOihvbl9pbm5lcl9jaGFuZ2UgfmtleSlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IHVzZXJfZnVuY3Rpb25fZGVwO1xuICAgICAgICAgICAgICAgICAgICAgTWFwLnNldCBub2RlcyB+a2V5IH5kYXRhOihub2RlLCB1c2VyX2Z1bmN0aW9uX2RlcCkpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBwcmV2X25vZGVzIDo9IG5ld19ub2RlcztcbiAgICAgICAgICAgICBwcmV2X21hcCA6PSBtYXApKSlcbiAgICBpblxuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGxoc19jaGFuZ2UpKTtcbiAgICBFLk5vZGUud2F0Y2ggcmVzdWx0XG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpJyA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBnZW5lcmljX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICBNYXBfdHlwZS5GaWx0ZXJfbWFwXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2N1dG9mZlxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBcbiAgICAgICAgfmZcbiAgICAgICAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG1hcGknID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3InXG4gICAgICAgIE1hcF90eXBlLk1hcFxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID9jdXRvZmZcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwXG4gICAgICAgIH5mXG4gICAgICAgIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBtYXAnID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIG1hcGknID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBmaWx0ZXJfbWFwaScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IG1lcmdlJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWxfbGVmdCA/ZGF0YV9lcXVhbF9yaWdodCBtYXAxIG1hcDIgfmYgPVxuICAgIG1lcmdlXG4gICAgICA/aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbF9sZWZ0XG4gICAgICA/ZGF0YV9lcXVhbF9yaWdodFxuICAgICAgbWFwMVxuICAgICAgbWFwMlxuICAgICAgfmY6KGZ1biB+a2V5Ol8gZGlmZiAtPiBTb21lIGRpZmYpXG4gICAgfD4gZmlsdGVyX21hcGknID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiB+ZjooZnVuIH5rZXkgfmRhdGE6ZGlmZiAtPiBmIH5rZXkgZGlmZilcbiAgOztcblxuICBsZXQgdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgKHR5cGUgdiB2MSB2MiBzdGF0ZV93aXRuZXNzKVxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID8oZGF0YV9lcXVhbCA6IHYgLT4gdiAtPiBib29sID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhsZWZ0X3Jlc3VsdF9lcXVhbCA6IHYxIC0+IHYxIC0+IGJvb2wgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KHJpZ2h0X3Jlc3VsdF9lcXVhbCA6IHYyIC0+IHYyIC0+IGJvb2wgPSBwaHlzX2VxdWFsKVxuICAgICAgICAoaW5wdXQgOiAoKCdrZXksIHYsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50KVxuICAgICAgICB+KGYgOiBrZXk6J2tleSAtPiBkYXRhOnYgLT4gdjEgKiB2MilcbiAgICA6ICgoJ2tleSwgdjEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAqICgoJ2tleSwgdjIsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGlucHV0IGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IGxlZnRfYWNjIDogKCdrZXksIHYxLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGxlZnRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFsZWZ0X2FjYykgaW5cbiAgICBsZXQgcmlnaHRfYWNjIDogKCdrZXksIHYyLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJpZ2h0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhcmlnaHRfYWNjKSBpblxuICAgIGxldCBwcmV2X21hcCA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgaW5wdXRfY2hhbmdlID1cbiAgICAgIEluY3JlbWVudGFsLm1hcCBpbnB1dCB+ZjooZnVuIG1hcCAtPlxuICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBsZWZ0LCByaWdodCA9XG4gICAgICAgICAgICBtYXRjaCBNYXAuaXNfZW1wdHkgIXByZXZfbWFwLCBNYXAuaXNfZW1wdHkgbWFwIHdpdGhcbiAgICAgICAgICAgIHwgdHJ1ZSwgdHJ1ZSB8IGZhbHNlLCB0cnVlIC0+IGVtcHR5X21hcCwgZW1wdHlfbWFwXG4gICAgICAgICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgICAgICAgICgqIE1hcHBpbmcgb24gYSBtYXAgaXMgd2F5IGZhc3RlciB0aGFuIHN5bW1ldHJpYyBkaWZmaW5nIGFuZCB0aGVuXG4gICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBtYXBzIHVwIHBpZWNlIGJ5IHBpZWNlLCBzbyB3ZSBkbyB0aGlzIHdoZW5ldmVyIHdlXG4gICAgICAgICAgICAgICAgIHRyYW5zaXRpb24gZnJvbSBcImVtcHR5XCIgdG8gXCJzb21ldGhpbmdcIiwgd2hpY2ggd2lsbCBhbG1vc3QgYWx3YXlzXG4gICAgICAgICAgICAgICAgIGhhcHBlbiBvbiB0aGUgZmlyc3Qgc3RhYmlsaXphdGlvbi4gKilcbiAgICAgICAgICAgICAgbGV0IGxlZnQgPVxuICAgICAgICAgICAgICAgIE1hcC5tYXBpIG1hcCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBsLCBfID0gZiB+a2V5IH5kYXRhIGluXG4gICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgcmlnaHQgPVxuICAgICAgICAgICAgICAgIE1hcC5tYXBpIG1hcCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBfLCByID0gZiB+a2V5IH5kYXRhIGluXG4gICAgICAgICAgICAgICAgICByKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZWZ0LCByaWdodFxuICAgICAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICFwcmV2X21hcFxuICAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgIH5pbml0OighbGVmdF9hY2MsICFyaWdodF9hY2MpXG4gICAgICAgICAgICAgICAgfmY6KGZ1biAobGVmdCwgcmlnaHQpIChrZXksIGNoYW5nZWQpIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2VkIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKHByZXYsIG5ld18pIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmV2X2EsIHByZXZfYiA9IGYgfmtleSB+ZGF0YTpwcmV2IGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdfYSwgbmV3X2IgPSBmIH5rZXkgfmRhdGE6bmV3XyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbGVmdCA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgbGVmdF9yZXN1bHRfZXF1YWwgcHJldl9hIG5ld19hXG4gICAgICAgICAgICAgICAgICAgICAgdGhlbiBsZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBNYXAuc2V0IGxlZnQgfmtleSB+ZGF0YTpuZXdfYVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgcmlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmIHJpZ2h0X3Jlc3VsdF9lcXVhbCBwcmV2X2IgbmV3X2JcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuIHJpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBNYXAuc2V0IHJpZ2h0IH5rZXkgfmRhdGE6bmV3X2JcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGVmdCwgcmlnaHRcbiAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBNYXAucmVtb3ZlIGxlZnQga2V5LCBNYXAucmVtb3ZlIHJpZ2h0IGtleVxuICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgZWxlbWVudCAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgYSwgYiA9IGYgfmtleSB+ZGF0YTplbGVtZW50IGluXG4gICAgICAgICAgICAgICAgICAgIE1hcC5zZXQgbGVmdCB+a2V5IH5kYXRhOmEsIE1hcC5zZXQgcmlnaHQgfmtleSB+ZGF0YTpiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsICFsZWZ0X2FjYyBsZWZ0KSB0aGVuIEUuTm9kZS5tYWtlX3N0YWxlIGxlZnRfcmVzdWx0O1xuICAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCAhcmlnaHRfYWNjIHJpZ2h0KSB0aGVuIEUuTm9kZS5tYWtlX3N0YWxlIHJpZ2h0X3Jlc3VsdDtcbiAgICAgICAgICBsZWZ0X2FjYyA6PSBsZWZ0O1xuICAgICAgICAgIHJpZ2h0X2FjYyA6PSByaWdodDtcbiAgICAgICAgICBwcmV2X21hcCA6PSBtYXApKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGlucHV0X2NoYW5nZSk7XG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSBpbnB1dF9jaGFuZ2UpO1xuICAgIEUuTm9kZS53YXRjaCBsZWZ0X3Jlc3VsdCwgRS5Ob2RlLndhdGNoIHJpZ2h0X3Jlc3VsdFxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICA/bGVmdF9yZXN1bHRfZXF1YWxcbiAgICAgICAgP3JpZ2h0X3Jlc3VsdF9lcXVhbFxuICAgICAgICBpbnB1dFxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgcGFpciA9XG4gICAgICB3aXRoX2NvbXBhcmF0b3IgaW5wdXQgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICAgIGlucHV0XG4gICAgICAgIHw+IHVuemlwX21hcGlfd2l0aF9jb21wYXJhdG9yXG4gICAgICAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgICAgICAgP2xlZnRfcmVzdWx0X2VxdWFsXG4gICAgICAgICAgICAgP3JpZ2h0X3Jlc3VsdF9lcXVhbFxuICAgICAgICAgICAgIH5jb21wYXJhdG9yXG4gICAgICAgICAgICAgfmZcbiAgICAgICAgfD4gVHVwbGUyLnVuY3VycnkgSW5jcmVtZW50YWwuYm90aClcbiAgICBpblxuICAgIEluY3JlbWVudGFsLm1hcCB+Zjpmc3QgcGFpciwgSW5jcmVtZW50YWwubWFwIH5mOnNuZCBwYWlyXG4gIDs7XG5cbiAgbGV0IHVuemlwID9pbnN0cnVtZW50YXRpb24gP2xlZnRfcmVzdWx0X2VxdWFsID9yaWdodF9yZXN1bHRfZXF1YWwgaW5wdXQgPVxuICAgIGxldCBkYXRhX2VxdWFsID1cbiAgICAgIE9wdGlvbi5tYXAyIGxlZnRfcmVzdWx0X2VxdWFsIHJpZ2h0X3Jlc3VsdF9lcXVhbCB+ZjooZnVuIGwgciAtPlxuICAgICAgICBUdXBsZTIuZXF1YWwgfmVxMTpsIH5lcTI6cilcbiAgICBpblxuICAgIHVuemlwX21hcGlcbiAgICAgID9pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICA/bGVmdF9yZXN1bHRfZXF1YWxcbiAgICAgID9yaWdodF9yZXN1bHRfZXF1YWxcbiAgICAgIGlucHV0XG4gICAgICB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBkYXRhKVxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgKHR5cGUgdiB2MSB2MiBzdGF0ZV93aXRuZXNzKVxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID9jdXRvZmZcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKGlucHV0IDogKCgna2V5LCB2LCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihjb21wYXJhdG9yIDogKCdrZXksICdjbXApIENvbXBhcmF0b3IudClcbiAgICAgICAgfihmIDpcbiAgICAgICAgICAgIGtleTona2V5XG4gICAgICAgICAgLT4gZGF0YToodiwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgICAgIC0+ICh2MSwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudCAqICh2Miwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA6ICgoJ2tleSwgdjEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAqICgoJ2tleSwgdjIsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGlucHV0IGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHByZXZfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBwcmV2X25vZGVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBsZWZ0X2FjYyA6ICgna2V5LCB2MSwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBsZWZ0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhbGVmdF9hY2MpIGluXG4gICAgbGV0IHJpZ2h0X2FjYyA6ICgna2V5LCB2MiwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByaWdodF9yZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIXJpZ2h0X2FjYykgaW5cbiAgICBsZXQgbGVmdF9vbl9pbm5lcl9jaGFuZ2UgfmtleSBkYXRhID0gbGVmdF9hY2MgOj0gTWFwLnNldCAhbGVmdF9hY2MgfmtleSB+ZGF0YSBpblxuICAgIGxldCByaWdodF9vbl9pbm5lcl9jaGFuZ2UgfmtleSBkYXRhID0gcmlnaHRfYWNjIDo9IE1hcC5zZXQgIXJpZ2h0X2FjYyB+a2V5IH5kYXRhIGluXG4gICAgbGV0IHJlYyBpbnB1dF9jaGFuZ2UgPVxuICAgICAgbGF6eVxuICAgICAgICAoSW5jcmVtZW50YWwubWFwIGlucHV0IH5mOihmdW4gbWFwIC0+XG4gICAgICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgICAgbGV0IG5ld19ub2RlcyA9XG4gICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICAhcHJldl9tYXBcbiAgICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICAgIH5pbml0OiFwcmV2X25vZGVzXG4gICAgICAgICAgICAgICAgIH5mOihmdW4gbm9kZXMgKGtleSwgY2hhbmdlZCkgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2VkIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlLCBfbGVmdF9kZXAsIF9yaWdodF9kZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUubWFrZV9zdGFsZSBub2RlO1xuICAgICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlLCBsZWZ0X2RlcCwgcmlnaHRfZGVwID0gTWFwLmZpbmRfZXhuIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGVzID0gTWFwLnJlbW92ZSBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5yZW1vdmVfZGVwZW5kZW5jeSBsZWZ0X3Jlc3VsdCBsZWZ0X2RlcDtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5yZW1vdmVfZGVwZW5kZW5jeSByaWdodF9yZXN1bHQgcmlnaHRfZGVwO1xuICAgICAgICAgICAgICAgICAgICAgbGVmdF9hY2MgOj0gTWFwLnJlbW92ZSAhbGVmdF9hY2Mga2V5O1xuICAgICAgICAgICAgICAgICAgICAgcmlnaHRfYWNjIDo9IE1hcC5yZW1vdmUgIXJpZ2h0X2FjYyBrZXk7XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuaW52YWxpZGF0ZSBub2RlO1xuICAgICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgICB8IGBSaWdodCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIE1hcC5maW5kX2V4biAhcHJldl9tYXAga2V5KVxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIE9wdGlvbi5pdGVyIGN1dG9mZiB+ZjooZnVuIGMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuc2V0X2N1dG9mZiAoRS5Ob2RlLndhdGNoIG5vZGUpIGMpO1xuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IG5vZGUgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGlucHV0X2NoYW5nZSkpO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGxlZnRfaW5jciwgcmlnaHRfaW5jciA9IGYgfmtleSB+ZGF0YTooRS5Ob2RlLndhdGNoIG5vZGUpIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgbGVmdF91c2VyX2Z1bmN0aW9uX2RlcCA9XG4gICAgICAgICAgICAgICAgICAgICAgIEUuRGVwZW5kZW5jeS5jcmVhdGUgbGVmdF9pbmNyIH5vbl9jaGFuZ2U6KGxlZnRfb25faW5uZXJfY2hhbmdlIH5rZXkpXG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IHJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwID1cbiAgICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0X2luY3JcbiAgICAgICAgICAgICAgICAgICAgICAgICB+b25fY2hhbmdlOihyaWdodF9vbl9pbm5lcl9jaGFuZ2UgfmtleSlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgbGVmdF91c2VyX2Z1bmN0aW9uX2RlcDtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByaWdodF9yZXN1bHQgcmlnaHRfdXNlcl9mdW5jdGlvbl9kZXA7XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc2V0XG4gICAgICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgICAgICAgIH5rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgfmRhdGE6KG5vZGUsIGxlZnRfdXNlcl9mdW5jdGlvbl9kZXAsIHJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIHByZXZfbm9kZXMgOj0gbmV3X25vZGVzO1xuICAgICAgICAgICAgIHByZXZfbWFwIDo9IG1hcCkpKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBpbnB1dF9jaGFuZ2UpKTtcbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmlnaHRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBpbnB1dF9jaGFuZ2UpKTtcbiAgICBFLk5vZGUud2F0Y2ggbGVmdF9yZXN1bHQsIEUuTm9kZS53YXRjaCByaWdodF9yZXN1bHRcbiAgOztcblxuICBsZXQgdW56aXBfbWFwaScgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBsZXQgcGFpciA9XG4gICAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgICBtYXBcbiAgICAgICAgfD4gdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3InIH5pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbCB+Y29tcGFyYXRvciB+ZlxuICAgICAgICB8PiBUdXBsZTIudW5jdXJyeSBJbmNyZW1lbnRhbC5ib3RoKVxuICAgIGluXG4gICAgSW5jcmVtZW50YWwubWFwIH5mOmZzdCBwYWlyLCBJbmNyZW1lbnRhbC5tYXAgfmY6c25kIHBhaXJcbiAgOztcblxuICBsZXQga2V5cyA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgbWFwID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IGFkZCB+a2V5IH5kYXRhOl8gYWNjID0gU2V0LmFkZCBhY2Mga2V5IGluXG4gICAgICBsZXQgcmVtb3ZlIH5rZXkgfmRhdGE6XyBhY2MgPSBTZXQucmVtb3ZlIGFjYyBrZXkgaW5cbiAgICAgIGxldCBkYXRhX2VxdWFsIF8gXyA9IHRydWUgaW5cbiAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgIG1hcFxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgIH5pbml0OihTZXQuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcilcbiAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmUpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgZW1wdHkgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgfmluaXQ6KGVtcHR5LCBlbXB0eSlcbiAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICB+dXBkYXRlOihmdW4gfmtleSB+b2xkX2RhdGE6XyB+bmV3X2RhdGE6ZGF0YSAoZmlyc3QsIHNlY29uZCkgLT5cbiAgICAgICAgICBtYXRjaCBmIH5rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgIHwgRmlyc3QgZGF0YSAtPiBNYXAuc2V0IGZpcnN0IH5rZXkgfmRhdGEsIE1hcC5yZW1vdmUgc2Vjb25kIGtleVxuICAgICAgICAgIHwgU2Vjb25kIGRhdGEgLT4gTWFwLnJlbW92ZSBmaXJzdCBrZXksIE1hcC5zZXQgc2Vjb25kIH5rZXkgfmRhdGEpXG4gICAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIChmaXJzdCwgc2Vjb25kKSAtPlxuICAgICAgICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCBkYXRhIC0+IE1hcC5hZGRfZXhuIGZpcnN0IH5rZXkgfmRhdGEsIHNlY29uZFxuICAgICAgICAgIHwgU2Vjb25kIGRhdGEgLT4gZmlyc3QsIE1hcC5hZGRfZXhuIHNlY29uZCB+a2V5IH5kYXRhKVxuICAgICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YTpfIChmaXJzdCwgc2Vjb25kKSAtPlxuICAgICAgICAgIE1hcC5yZW1vdmUgZmlyc3Qga2V5LCBNYXAucmVtb3ZlIHNlY29uZCBrZXkpKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwaScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgbWFwaScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZlxuICAgIHw+IHBhcnRpdGlvbl9tYXBpID9pbnN0cnVtZW50YXRpb24gfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZGF0YSlcbiAgOztcblxuICBsZXQgZmxhdHRlbiBzdGF0ZSBtYXAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCByZXN1bHQgPSByZWYgKE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihNYXAuY29tcGFyYXRvciBtYXApKSBpblxuICAgIGxldCBub2RlID0gRS5Ob2RlLmNyZWF0ZSBzdGF0ZSAoZnVuICgpIC0+ICFyZXN1bHQpIGluXG4gICAgTWFwLml0ZXJpIG1hcCB+ZjooZnVuIH5rZXkgfmRhdGE6aW5jciAtPlxuICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5XG4gICAgICAgIG5vZGVcbiAgICAgICAgKEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5jciB+b25fY2hhbmdlOihmdW4gYSAtPlxuICAgICAgICAgICByZXN1bHQgOj0gTWFwLnNldCAhcmVzdWx0IH5rZXkgfmRhdGE6YSkpKTtcbiAgICBFLk5vZGUud2F0Y2ggbm9kZVxuICA7O1xuXG4gIGxldCBqb2luX3dpdGhfY29tcGFyYXRvciB+aW5zdHJ1bWVudGF0aW9uIG1hcF9pbmNyIH5jb21wYXJhdG9yID1cbiAgICBsZXQgbW9kdWxlIEUgPSBJbmNyZW1lbnRhbC5FeHBlcnQgaW5cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBtYXBfaW5jciBpblxuICAgIGxldCBlbXB0eV9tYXAgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgIGxldCByZXN1bHRfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBvbGRfbWFwX29mX2luY3JzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBjdXJyZW50X2RlcGVuZGVuY2llcyA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFyZXN1bHRfbWFwKSBpblxuICAgIGxldCBhZGRfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IH5kYXRhX25vZGUgPVxuICAgICAgbGV0IG5ld19kZXAgPVxuICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlIGRhdGFfbm9kZSB+b25fY2hhbmdlOihmdW4gZGF0YSAtPlxuICAgICAgICAgIHJlc3VsdF9tYXAgOj0gTWFwLnNldCAhcmVzdWx0X21hcCB+a2V5IH5kYXRhKVxuICAgICAgaW5cbiAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgbmV3X2RlcDtcbiAgICAgIE1hcC5zZXQgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSB+ZGF0YTpuZXdfZGVwXG4gICAgaW5cbiAgICBsZXQgcmVtb3ZlX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSA9XG4gICAgICBsZXQgZGVwID0gTWFwLmZpbmRfZXhuIGN1cnJlbnRfZGVwZW5kZW5jaWVzIGtleSBpblxuICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IHJlc3VsdCBkZXA7XG4gICAgICByZXN1bHRfbWFwIDo9IE1hcC5yZW1vdmUgIXJlc3VsdF9tYXAga2V5O1xuICAgICAgTWFwLnJlbW92ZSBjdXJyZW50X2RlcGVuZGVuY2llcyBrZXlcbiAgICBpblxuICAgIGxldCBsaHNfY2hhbmdlID1cbiAgICAgIEluY3JlbWVudGFsLm1hcCBtYXBfaW5jciB+ZjooZnVuIG1hcF9vZl9pbmNycyAtPlxuICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBuZXdfZGVwZW5kZW5jeV9tYXAgPVxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWw6cGh5c19lcXVhbFxuICAgICAgICAgICAgICAhb2xkX21hcF9vZl9pbmNyc1xuICAgICAgICAgICAgICBtYXBfb2ZfaW5jcnNcbiAgICAgICAgICAgICAgfmluaXQ6IWN1cnJlbnRfZGVwZW5kZW5jaWVzXG4gICAgICAgICAgICAgIH5mOihmdW4gY3VycmVudF9kZXBlbmRlbmNpZXMgKGtleSwgZGlmZikgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gcmVtb3ZlX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleVxuICAgICAgICAgICAgICAgIHwgYFJpZ2h0IGRhdGFfbm9kZSAtPiBhZGRfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IH5kYXRhX25vZGVcbiAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChfLCBkYXRhX25vZGUpIC0+XG4gICAgICAgICAgICAgICAgICByZW1vdmVfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IHw+IGFkZF9zdWJub2RlIH5rZXkgfmRhdGFfbm9kZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGN1cnJlbnRfZGVwZW5kZW5jaWVzIDo9IG5ld19kZXBlbmRlbmN5X21hcDtcbiAgICAgICAgICBvbGRfbWFwX29mX2luY3JzIDo9IG1hcF9vZl9pbmNycykpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGxoc19jaGFuZ2UpO1xuICAgIEUuTm9kZS53YXRjaCByZXN1bHRcbiAgOztcblxuICBsZXQgam9pbiA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgbWFwID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgam9pbl93aXRoX2NvbXBhcmF0b3Igfmluc3RydW1lbnRhdGlvbiBtYXAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbW9kdWxlIFNlcGFyYXRlX3N0YXRlID0gc3RydWN0XG4gICAgdHlwZSAoJ2ssICd2LCAnY21wLCAndykgdCA9XG4gICAgICB7IG11dGFibGUgaW5wdXRfbWFwIDogKCdrLCAndiwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgbXV0YWJsZSBleHBlcnRfbm9kZXMgOiAoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLnQsICdjbXApIE1hcC50XG4gICAgICA7IG11dGFibGUgb3V0cHV0X21hcCA6ICgnaywgKCd2LCAndykgSW5jcmVtZW50YWwudCwgJ2NtcCkgTWFwLnRcbiAgICAgIH1cblxuICAgIGxldCBjcmVhdGUgY29tcGFyYXRvciA9XG4gICAgICBsZXQgZW1wdHkgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgeyBpbnB1dF9tYXAgPSBlbXB0eTsgZXhwZXJ0X25vZGVzID0gZW1wdHk7IG91dHB1dF9tYXAgPSBlbXB0eSB9XG4gICAgOztcblxuICAgIGxldCBjcmVhdGVfbG9va3VwX25vZGUgc3RhdGUgdCBrZXkgPVxuICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuY3JlYXRlIHN0YXRlIChmdW4gKCkgLT4gTWFwLmZpbmRfZXhuIHQuaW5wdXRfbWFwIGtleSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2VwYXJhdGUgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pIGlucHV0X21hcCB+ZGF0YV9lcXVhbCA9XG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgaW5wdXRfbWFwIGluXG4gICAgd2l0aF9jb21wYXJhdG9yIGlucHV0X21hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBzdGF0ZSA9IFNlcGFyYXRlX3N0YXRlLmNyZWF0ZSBjb21wYXJhdG9yIGluXG4gICAgICBsZXQgb3V0cHV0X21hcF9ub2RlID1cbiAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gc3RhdGUub3V0cHV0X21hcClcbiAgICAgIGluXG4gICAgICBsZXQgbWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfY2hhbmdlZCBub2RlIH5pbnB1dF9tYXBfY2hhbmdlZCA9XG4gICAgICAgIGxldCBkZXBlbmRlbmN5ID1cbiAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuRGVwZW5kZW5jeS5jcmVhdGUgKExhenkuZm9yY2VfdmFsIGlucHV0X21hcF9jaGFuZ2VkKVxuICAgICAgICBpblxuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5hZGRfZGVwZW5kZW5jeSBub2RlIGRlcGVuZGVuY3lcbiAgICAgIGluXG4gICAgICAoKiBXZSB3YW50IHRvIG1ha2Ugbm9kZXMgZGVwZW5kIG9uIFtpbnB1dF9tYXBfY2hhbmdlZF0gc28gdGhhdCBbaW5wdXRfbWFwX2NoYW5nZWRdXG4gICAgICAgICBpcyBhbGxvd2VkIHRvIG1ha2UgdGhlbSBzdGFsZSwgYnV0IHdlIGRvIG5vdCB3YW50IHRoZW0gdG8gYmUgcmVjb21wdXRlZCBmb3IgYW55XG4gICAgICAgICBvdGhlciByZWFzb24uIFNvIHdlIG1ha2UgW2lucHV0X21hcF9jaGFuZ2VkXSBhIHVuaXQgaW5jcmVtZW50YWwgKHRoYXQgdGhlcmVmb3JlXG4gICAgICAgICBuZXZlciBjaGFuZ2VzKSBhbmQgdGhpcyB3YXkgW291dHB1dF9tYXBfbm9kZV0gYW5kIHRoZSBsb29rdXAgbm9kZXMgd2lsbCBvbmx5IGJlXG4gICAgICAgICByZWNvbXB1dGVkIHdoZW4gdGhleSBhcmUgZXhwbGljaXRseSBtYWRlIHN0YWxlLlxuICAgICAgKilcbiAgICAgIGxldCByZWMgaW5wdXRfbWFwX2NoYW5nZWQgPVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKEluY3JlbWVudGFsLm1hcCBpbnB1dF9tYXAgfmY6KGZ1biBpbnB1dF9tYXAgLT5cbiAgICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgbGV0IHByZXZfaW5wdXRfbWFwID0gc3RhdGUuaW5wdXRfbWFwIGluXG4gICAgICAgICAgICAgICBsZXQgZXhwZXJ0X25vZGVzLCBvdXRwdXRfbWFwID1cbiAgICAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICAgICBwcmV2X2lucHV0X21hcFxuICAgICAgICAgICAgICAgICAgIGlucHV0X21hcFxuICAgICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgICAgfmluaXQ6KHN0YXRlLmV4cGVydF9ub2Rlcywgc3RhdGUub3V0cHV0X21hcClcbiAgICAgICAgICAgICAgICAgICB+ZjooZnVuIChleHBlcnRfbm9kZXMsIG91dHB1dF9tYXApIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IGBMZWZ0IF9vbGRfdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9sZF9ub2RlID0gTWFwLmZpbmRfZXhuIGV4cGVydF9ub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuaW52YWxpZGF0ZSBvbGRfbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUubWFrZV9zdGFsZSBvdXRwdXRfbWFwX25vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgIE1hcC5yZW1vdmUgZXhwZXJ0X25vZGVzIGtleSwgTWFwLnJlbW92ZSBvdXRwdXRfbWFwIGtleVxuICAgICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgX25ld192YWx1ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgU2VwYXJhdGVfc3RhdGUuY3JlYXRlX2xvb2t1cF9ub2RlIGluY3JlbWVudGFsX3N0YXRlIHN0YXRlIGtleVxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGVfZGVwZW5kX29uX2lucHV0X21hcF9jaGFuZ2VkIG5vZGUgfmlucHV0X21hcF9jaGFuZ2VkO1xuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIG91dHB1dF9tYXBfbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgKCBNYXAuYWRkX2V4biBleHBlcnRfbm9kZXMgfmtleSB+ZGF0YTpub2RlXG4gICAgICAgICAgICAgICAgICAgICAgICwgTWFwLmFkZF9leG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH5rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH5kYXRhOihJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBub2RlKSApXG4gICAgICAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChfb2xkX3ZhbHVlLCBfbmV3X3ZhbHVlKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIChNYXAuZmluZF9leG4gZXhwZXJ0X25vZGVzIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgIGV4cGVydF9ub2Rlcywgb3V0cHV0X21hcClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBzdGF0ZS5pbnB1dF9tYXAgPC0gaW5wdXRfbWFwO1xuICAgICAgICAgICAgICAgc3RhdGUuZXhwZXJ0X25vZGVzIDwtIGV4cGVydF9ub2RlcztcbiAgICAgICAgICAgICAgIHN0YXRlLm91dHB1dF9tYXAgPC0gb3V0cHV0X21hcCkpKVxuICAgICAgaW5cbiAgICAgIG1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwX2NoYW5nZWQgb3V0cHV0X21hcF9ub2RlIH5pbnB1dF9tYXBfY2hhbmdlZDtcbiAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIG91dHB1dF9tYXBfbm9kZSlcbiAgOztcblxuICAoKiBKdXN0IGZvciBkZXJpdmluZyBzdHJ1Y3R1cmFsIGVxdWFsaXR5LiAqKVxuICB0eXBlICdhIG1heWJlX2JvdW5kX3N0cnVjdHVyYWxseSA9ICdhIE1heWJlX2JvdW5kLnQgPVxuICAgIHwgSW5jbCBvZiAnYVxuICAgIHwgRXhjbCBvZiAnYVxuICAgIHwgVW5ib3VuZGVkXG4gIFtAQGRlcml2aW5nIGVxdWFsXVxuXG4gIGxldCBzdWJyYW5nZVxuICAgICAgICAodHlwZSBrIHYgY21wIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAobWFwX2luY3IgOiAoKGssIHYsIGNtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIHJhbmdlXG4gICAgPVxuICAgIHdpdGhfb2xkMiB+aW5zdHJ1bWVudGF0aW9uIG1hcF9pbmNyIHJhbmdlIH5mOihmdW4gfm9sZCBtYXAgcmFuZ2UgLT5cbiAgICAgIGxldCBjb21wYXJlID0gKE1hcC5jb21wYXJhdG9yIG1hcCkuY29tcGFyZSBpblxuICAgICAgbGV0IGVxdWFsIGwgciA9IGNvbXBhcmUgbCByID0gMCBpblxuICAgICAgbGV0ICggPiApIGEgYiA9IGNvbXBhcmUgYSBiID4gMFxuICAgICAgYW5kICggPj0gKSBhIGIgPSBjb21wYXJlIGEgYiA+PSAwIGluXG4gICAgICBsZXQgbWF5YmVfYm91bmRfZXF1YWwgYSBiIDogYm9vbCA9IGVxdWFsX21heWJlX2JvdW5kX3N0cnVjdHVyYWxseSBlcXVhbCBhIGIgaW5cbiAgICAgIGxldCByYW5nZV9pc19lbXB0eSB+bWluIH5tYXggOiBib29sID1cbiAgICAgICAgbWF0Y2ggbWluLCBtYXggd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCwgKFVuYm91bmRlZCB8IEV4Y2wgXyB8IEluY2wgXykgfCAoRXhjbCBfIHwgSW5jbCBfKSwgVW5ib3VuZGVkIC0+IGZhbHNlXG4gICAgICAgIHwgSW5jbCBtaW4sIEluY2wgbWF4IC0+IG1pbiA+IG1heFxuICAgICAgICB8IEV4Y2wgbWluLCBFeGNsIG1heCB8IEluY2wgbWluLCBFeGNsIG1heCB8IEV4Y2wgbWluLCBJbmNsIG1heCAtPiBtaW4gPj0gbWF4XG4gICAgICBpblxuICAgICAgbGV0IHJhbmdlX2luY2x1ZGVzIH5taW4gfm1heCBrZXkgOiBib29sID1cbiAgICAgICAgTWF5YmVfYm91bmQuaXNfbG93ZXJfYm91bmQgbWluIH5vZl86a2V5IH5jb21wYXJlXG4gICAgICAgICYmIE1heWJlX2JvdW5kLmlzX3VwcGVyX2JvdW5kIG1heCB+b2ZfOmtleSB+Y29tcGFyZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHJhbmdlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiBFbXB0eSBuZXcgcmFuZ2UgbWVhbnMgZW1wdHkgbWFwICopXG4gICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihNYXAuY29tcGFyYXRvciBtYXApXG4gICAgICB8IFNvbWUgKChtaW4sIG1heCkgYXMgcmFuZ2UpIC0+XG4gICAgICAgIGxldCBmcm9tX3NjcmF0Y2ggKCkgPSBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDptaW4gfnVwcGVyX2JvdW5kOm1heCBpblxuICAgICAgICAobWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgIHwgTm9uZSB8IFNvbWUgKF8sIE5vbmUsIF8pIC0+XG4gICAgICAgICAgICgqIG5vIG9sZCByYW5nZSAqKVxuICAgICAgICAgICBmcm9tX3NjcmF0Y2ggKClcbiAgICAgICAgIHwgU29tZSAoXywgU29tZSAob2xkX21pbiwgb2xkX21heCksIF8pXG4gICAgICAgICAgIHdoZW4gcmFuZ2VfaXNfZW1wdHkgfm1pbjpvbGRfbWluIH5tYXg6b2xkX21heFxuICAgICAgICAgICAgIHx8IHJhbmdlX2lzX2VtcHR5IH5taW4gfm1heDpvbGRfbWF4XG4gICAgICAgICAgICAgfHwgcmFuZ2VfaXNfZW1wdHkgfm1pbjpvbGRfbWluIH5tYXggLT5cbiAgICAgICAgICAgKCogZW1wdHkgb2xkIHJhbmdlIG9yIG9sZCByYW5nZSBkaXNqb2ludCB3aXRoIG5ldyAqKVxuICAgICAgICAgICBmcm9tX3NjcmF0Y2ggKClcbiAgICAgICAgIHwgU29tZSAob2xkX21hcCwgU29tZSAoKG9sZF9taW4sIG9sZF9tYXgpIGFzIG9sZF9yYW5nZSksIG9sZF9yZXMpIC0+XG4gICAgICAgICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgICAgICAgICgqIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGtleSBpcyBpbiBib3RoIG5ldyBhbmQgb2xkIHJhbmdlcyAqKVxuICAgICAgICAgICAgIGxldCBpbl9yYW5nZV9pbnRlcnNlY3Rpb24ga2V5ID1cbiAgICAgICAgICAgICAgIHJhbmdlX2luY2x1ZGVzIH5taW4gfm1heCBrZXlcbiAgICAgICAgICAgICAgICYmIHJhbmdlX2luY2x1ZGVzIH5taW46b2xkX21pbiB+bWF4Om9sZF9tYXgga2V5XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoKiBBcHBseSBjaGFuZ2VzIHRvIGtleXMgd2hpY2ggYXJlIGluIHRoZSBpbnRlcnNlY3Rpb24gb2YgYm90aCByYW5nZXMuXG5cbiAgICAgICAgICAgICAgICBbb3V0c2lkZV0gaXMgdGhlIG51bWJlciBvZiB1cGRhdGVzIG91dHNpZGUgdGhlIHJhbmdlIGludGVyc2VjdGlvbiB0aGF0IHdlXG4gICAgICAgICAgICAgICAgdG9sZXJhdGUgYmVmb3JlIGdpdmluZyB1cCBhbmQgcmVjb25zdHJ1Y3RpbmcgYmFzZWQgb24gdGhlIG5ldyByYW5nZS4gVGhpc1xuICAgICAgICAgICAgICAgIGlzIGFuIG9wdGltaXNhdGlvbiBpbiB0aGUgY2FzZSB0aGF0IHRoZSBtYXAgY2hhbmdlcyBpbiBhIHZlcnkgYmlnIHdheSwgYXRcbiAgICAgICAgICAgICAgICB3aGljaCBwb2ludCBjb21wdXRpbmcgYmFzZWQgb24gdGhlIG5ldyByYW5nZSBpcyBjaGVhcGVyLiAgKilcbiAgICAgICAgICAgICBsZXQgYXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb24gKG91dHNpZGUsIG1hcCkgKGtleSwgZGF0YSkgPVxuICAgICAgICAgICAgICAgaWYgaW5fcmFuZ2VfaW50ZXJzZWN0aW9uIGtleVxuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gb3V0c2lkZSwgTWFwLnJlbW92ZSBtYXAga2V5XG4gICAgICAgICAgICAgICAgIHwgYFJpZ2h0IGRhdGEgfCBgVW5lcXVhbCAoXywgZGF0YSkgLT4gb3V0c2lkZSwgTWFwLnNldCBtYXAgfmtleSB+ZGF0YSlcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBsZXQgb3V0c2lkZSA9IG91dHNpZGUgLSAxIGluXG4gICAgICAgICAgICAgICAgIGlmIEludC5PLihvdXRzaWRlIDwgMClcbiAgICAgICAgICAgICAgICAgdGhlbiByZXR1cm4gKGZyb21fc2NyYXRjaCAoKSlcbiAgICAgICAgICAgICAgICAgZWxzZSBvdXRzaWRlLCBNYXAucmVtb3ZlIG1hcCBrZXkpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoKiBGaXJzdCB1cGRhdGUgdGhlIGtleXMgaW4gL2JvdGgvIHRoZSBvbGQgYW5kIHRoZSBuZXcgcmFuZ2UuICopXG4gICAgICAgICAgICAgbGV0IHdpdGhfdXBkYXRlZF92YWx1ZXNfaW5faW50ZXJzZWN0aW9uID1cbiAgICAgICAgICAgICAgICgqIEN1dG9mZiB0aGUgYmlnIGRpZmYgY29tcHV0YXRpb24gaWYgd2UgcmVhY2ggTyh8c3VibWFwfCkgbnVtYmVyIG9mXG4gICAgICAgICAgICAgICAgICBjaGFuZ2VzIHRoYXQgYXJlIG91dHNpZGUgdGhlIHJhbmdlICopXG4gICAgICAgICAgICAgICBsZXQgb3V0c2lkZV9jdXRvZmYgPSBNYXAubGVuZ3RoIG9sZF9yZXMgLyA0IGluXG4gICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICBvbGRfbWFwXG4gICAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgICB+aW5pdDoob3V0c2lkZV9jdXRvZmYsIG9sZF9yZXMpXG4gICAgICAgICAgICAgICAgIH5mOmFwcGx5X2RpZmZfaW5faW50ZXJzZWN0aW9uXG4gICAgICAgICAgICAgICB8PiBzbmRcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGlmIFR1cGxlMi5lcXVhbCB+ZXExOm1heWJlX2JvdW5kX2VxdWFsIH5lcTI6bWF5YmVfYm91bmRfZXF1YWwgb2xkX3JhbmdlIHJhbmdlXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgKCogVGhlcmUgYXJlIG5vIGtleXMgdG8gcmVtb3ZlIGFuZCBldmVyeXRoaW5nIGluIHJhbmdlIGlzIHVwZGF0ZWQuICopXG4gICAgICAgICAgICAgICB3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2VjdGlvblxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgKCogUmVtb3ZlIGFueSBrZXlzIHdoaWNoIGFyZSBub3QgaW4gdGhlIG5ldyByYW5nZS4gKilcbiAgICAgICAgICAgICAgIGxldCB3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlID1cbiAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlXG4gICAgICAgICAgICAgICAgICAgd2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICB+bG93ZXJfYm91bmQ6bWluXG4gICAgICAgICAgICAgICAgICAgfnVwcGVyX2JvdW5kOm1heFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICgqIEFkZCBpbiBhbnkga2V5cyB3aGljaCBhcmUgaW4gdGhlIG5ldyByYW5nZSBidXQgbm90IHRoZSBvbGQgcmFuZ2UuICopXG4gICAgICAgICAgICAgICBsZXQgd2l0aF9uZXdfa2V5c19ub3dfaW5fcmFuZ2UgPVxuICAgICAgICAgICAgICAgICBsZXQgbWFwX2FwcGVuZF9leG4gbG93ZXJfcGFydCB1cHBlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBNYXAuYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgICAgICAgICAgICAgICAgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyAtPlxuICAgICAgICAgICAgICAgICAgICAgZmFpbHdpdGggXCJpbXBvc3NpYmxlIGNhc2U6IEJVRyBpbiBpbmNyX21hcC5tbCBzdWJyYW5nZVwiXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIGxldCBsb3dlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBvbGRfbWluIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVuYm91bmRlZCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgICAgICAgICAgICAgICB8IEV4Y2wgb2xkX21pbiAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6bWluIH51cHBlcl9ib3VuZDooSW5jbCBvbGRfbWluKVxuICAgICAgICAgICAgICAgICAgIHwgSW5jbCBvbGRfbWluIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDptaW4gfnVwcGVyX2JvdW5kOihFeGNsIG9sZF9taW4pXG4gICAgICAgICAgICAgICAgIGFuZCB1cHBlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBvbGRfbWF4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVuYm91bmRlZCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgICAgICAgICAgICAgICB8IEV4Y2wgb2xkX21heCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6KEluY2wgb2xkX21heCkgfnVwcGVyX2JvdW5kOm1heFxuICAgICAgICAgICAgICAgICAgIHwgSW5jbCBvbGRfbWF4IC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDooRXhjbCBvbGRfbWF4KSB+dXBwZXJfYm91bmQ6bWF4XG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIG1hcF9hcHBlbmRfZXhuXG4gICAgICAgICAgICAgICAgICAgbG93ZXJfcGFydFxuICAgICAgICAgICAgICAgICAgIChtYXBfYXBwZW5kX2V4biB3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlIHVwcGVyX3BhcnQpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgd2l0aF9uZXdfa2V5c19ub3dfaW5fcmFuZ2UpKSkpXG4gIDs7XG5cbiAgbGV0IHJla2V5XG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+Y29tcGFyYXRvcjpvdXRlcl9jb21wYXJhdG9yXG4gICAgICAgIH5mXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICBtYXBfaW5jclxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgIH5pbml0OihNYXAuZW1wdHkgb3V0ZXJfY29tcGFyYXRvciwgW10pXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSAob3V0cHV0LCBhZGRzKSAtPlxuICAgICAgICBsZXQgbmV3X2VudHJ5ID0gZiB+a2V5IH5kYXRhLCBkYXRhIGluXG4gICAgICAgIG91dHB1dCwgbmV3X2VudHJ5IDo6IGFkZHMpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YSAob3V0cHV0LCBhZGRzKSAtPiBNYXAucmVtb3ZlIG91dHB1dCAoZiB+a2V5IH5kYXRhKSwgYWRkcylcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgKG91dHB1dCwgYWRkcykgLT5cbiAgICAgICAgbGV0IHByZXZfa2V5ID0gZiB+a2V5IH5kYXRhOm9sZF9kYXRhIGluXG4gICAgICAgIGxldCBuZXdfa2V5ID0gZiB+a2V5IH5kYXRhOm5ld19kYXRhIGluXG4gICAgICAgIGlmIChNYXAuY29tcGFyYXRvciBvdXRwdXQpLmNvbXBhcmUgcHJldl9rZXkgbmV3X2tleSA9IDBcbiAgICAgICAgdGhlbiBNYXAuc2V0IG91dHB1dCB+a2V5Om5ld19rZXkgfmRhdGE6bmV3X2RhdGEsIGFkZHNcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IG91dHB1dCA9IE1hcC5yZW1vdmUgb3V0cHV0IHByZXZfa2V5IGluXG4gICAgICAgICAgb3V0cHV0LCAobmV3X2tleSwgbmV3X2RhdGEpIDo6IGFkZHMpKVxuICAgICAgfmZpbmFsaXplOihmdW4gKG91dHB1dCwgYWRkcykgLT5cbiAgICAgICAgbGV0IG91dHB1dCA9XG4gICAgICAgICAgTGlzdC5mb2xkIGFkZHMgfmluaXQ6b3V0cHV0IH5mOihmdW4gb3V0cHV0IChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgICBNYXAuYWRkX2V4biBvdXRwdXQgfmtleSB+ZGF0YSlcbiAgICAgICAgaW5cbiAgICAgICAgb3V0cHV0LCBbXSlcbiAgICB8PiBJbmNyZW1lbnRhbC5tYXAgfmY6ZnN0XG4gIDs7XG5cbiAgbGV0IGluZGV4X2J5aVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwX2luY3JcbiAgICAgICAgfmNvbXBhcmF0b3I6b3V0ZXJfY29tcGFyYXRvclxuICAgICAgICB+aW5kZXhcbiAgICA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcF9pbmNyIChmdW4gaW5uZXJfY29tcGFyYXRvciAtPlxuICAgICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+aW5pdDooTWFwLmVtcHR5IG91dGVyX2NvbXBhcmF0b3IpXG4gICAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgICAgfmFkZDooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIG91dGVyX21hcCAtPlxuICAgICAgICAgIG1hdGNoIGluZGV4IH5rZXk6aW5uZXJfa2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gb3V0ZXJfbWFwXG4gICAgICAgICAgfCBTb21lIG91dGVyX2tleSAtPlxuICAgICAgICAgICAgTWFwLnVwZGF0ZSBvdXRlcl9tYXAgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gaW5uZXJfa2V5IGRhdGEgfmNvbXBhcmF0b3I6aW5uZXJfY29tcGFyYXRvclxuICAgICAgICAgICAgICB8IFNvbWUgaW5uZXJfbWFwIC0+IE1hcC5hZGRfZXhuIGlubmVyX21hcCB+a2V5OmlubmVyX2tleSB+ZGF0YSkpXG4gICAgICAgIH5yZW1vdmU6KGZ1biB+a2V5OmlubmVyX2tleSB+ZGF0YSBvdXRlcl9tYXAgLT5cbiAgICAgICAgICBtYXRjaCBpbmRleCB+a2V5OmlubmVyX2tleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG91dGVyX21hcFxuICAgICAgICAgIHwgU29tZSBvdXRlcl9rZXkgLT5cbiAgICAgICAgICAgIE1hcC5jaGFuZ2Ugb3V0ZXJfbWFwIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgZmFpbHdpdGggXCJCVUc6IEhpdCBzdXBwb3NlZGx5IGltcG9zc2libGUgY2FzZSBpbiBJbmNyX21hcC5pbmRleF9ieVwiXG4gICAgICAgICAgICAgIHwgU29tZSBpbm5lcl9tYXAgLT5cbiAgICAgICAgICAgICAgICBsZXQgaW5uZXJfbWFwID0gTWFwLnJlbW92ZSBpbm5lcl9tYXAgaW5uZXJfa2V5IGluXG4gICAgICAgICAgICAgICAgaWYgTWFwLmlzX2VtcHR5IGlubmVyX21hcCB0aGVuIE5vbmUgZWxzZSBTb21lIGlubmVyX21hcCkpKVxuICA7O1xuXG4gIGxldCBpbmRleF9ieSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5jb21wYXJhdG9yIH5pbmRleCA9XG4gICAgaW5kZXhfYnlpXG4gICAgICA/aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICB+aW5kZXg6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gaW5kZXggZGF0YSlcbiAgOztcblxuXG4gICgqKiBGaW5kIHR3byBrZXlzIGluIG1hcCBieSBpbmRleCwgTyhuKS4gV2UgdXNlIGp1c3Qgb25lIGZvbGQgKHR3byBNYXAubnRoIHdvdWxkIHVzZSB0d28pXG4gICAgICBhbmQgb3B0aW1pemUgZm9yIGtleXMgY2xvc2UgdG8gZWl0aGVyIGJlZ2lubmluZyBvciBlbmQgYnkgdXNpbmcgZWl0aGVyIGZvbGQgb3JcbiAgICAgIGZvbGRfcmlnaHQuXG4gICopXG4gIG1vZHVsZSBLZXlfc3RhdHVzID0gc3RydWN0XG4gICAgdHlwZSAnayB0ID1cbiAgICAgIHwgS25vd24gb2YgJ2tcbiAgICAgIHwgS25vd25fbm9uZVxuICAgICAgfCBVbmtub3duXG5cbiAgICBsZXQgaXNfa25vd24gPSBmdW5jdGlvblxuICAgICAgfCBVbmtub3duIC0+IGZhbHNlXG4gICAgICB8IF8gLT4gdHJ1ZVxuICAgIDs7XG5cbiAgICBsZXQgdG9fb3B0aW9uID0gZnVuY3Rpb25cbiAgICAgIHwgVW5rbm93biB8IEtub3duX25vbmUgLT4gTm9uZVxuICAgICAgfCBLbm93biBrIC0+IFNvbWUga1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBmaW5kX2tleV9yYW5nZV9saW5lYXIgKHR5cGUgaykgfmZyb20gfnRvXyAobWFwIDogKGssIF8sIF8pIE1hcC50KVxuICAgIDogKGsgKiBrIG9wdGlvbikgb3B0aW9uXG4gICAgPVxuICAgIGxldCBvcGVuIEtleV9zdGF0dXMgaW5cbiAgICBsZXQgbGVuID0gTWFwLmxlbmd0aCBtYXAgaW5cbiAgICBsZXQgYmVnaW5fa2V5ID0gaWYgSW50LiggPj0gKSBmcm9tIGxlbiB0aGVuIEtub3duX25vbmUgZWxzZSBVbmtub3duIGluXG4gICAgbGV0IGVuZF9rZXkgPSBpZiBJbnQuKCA+PSApIHRvXyBsZW4gdGhlbiBLbm93bl9ub25lIGVsc2UgVW5rbm93biBpblxuICAgIGxldCBmaW5kX2tleXMgZm9sZCB+c3RhcnRfcG9zIH5hZHZhbmNlX3BvcyA9XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgICAgZm9sZFxuICAgICAgICAgIG1hcFxuICAgICAgICAgIH5pbml0OihiZWdpbl9rZXksIGVuZF9rZXksIHN0YXJ0X3BvcylcbiAgICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGE6XyAoYmVnaW5fa2V5LCBlbmRfa2V5LCBwb3MpIC0+XG4gICAgICAgICAgICBsZXQgYmVnaW5fa2V5ID0gaWYgSW50LiggPSApIHBvcyBmcm9tIHRoZW4gS25vd24ga2V5IGVsc2UgYmVnaW5fa2V5IGluXG4gICAgICAgICAgICBsZXQgZW5kX2tleSA9IGlmIEludC4oID0gKSBwb3MgdG9fIHRoZW4gS25vd24ga2V5IGVsc2UgZW5kX2tleSBpblxuICAgICAgICAgICAgaWYgaXNfa25vd24gYmVnaW5fa2V5ICYmIGlzX2tub3duIGVuZF9rZXlcbiAgICAgICAgICAgIHRoZW4gcmV0dXJuIChiZWdpbl9rZXksIGVuZF9rZXksIHBvcylcbiAgICAgICAgICAgIGVsc2UgYmVnaW5fa2V5LCBlbmRfa2V5LCBhZHZhbmNlX3BvcyBwb3MpKVxuICAgIGluXG4gICAgbGV0IGJlZ2luX2tleSwgZW5kX2tleSwgXyA9XG4gICAgICAoKiBTZWFyY2hpbmcgZnJvbSBsZWZ0IHRha2VzIE8odG9fKSwgZnJvbSByaWdodCAtIE8obGVuIC0gZnJvbSksIHNvIHNlbGVjdCB0aGVcbiAgICAgICAgIHNtYWxsZXIgb25lLiAqKVxuICAgICAgaWYgdG9fIDwgbGVuIC0gZnJvbVxuICAgICAgdGhlbiBmaW5kX2tleXMgTWFwLmZvbGQgfnN0YXJ0X3BvczowIH5hZHZhbmNlX3BvczooZnVuIHBvcyAtPiBwb3MgKyAxKVxuICAgICAgZWxzZSBmaW5kX2tleXMgTWFwLmZvbGRfcmlnaHQgfnN0YXJ0X3BvczoobGVuIC0gMSkgfmFkdmFuY2VfcG9zOihmdW4gcG9zIC0+IHBvcyAtIDEpXG4gICAgaW5cbiAgICBPcHRpb24ubWFwIChLZXlfc3RhdHVzLnRvX29wdGlvbiBiZWdpbl9rZXkpIH5mOihmdW4gYmVnaW5fa2V5IC0+XG4gICAgICBiZWdpbl9rZXksIEtleV9zdGF0dXMudG9fb3B0aW9uIGVuZF9rZXkpXG4gIDs7XG5cbiAgbGV0IG50aF9mcm9tX2VpdGhlcl9zaWRlICh0eXBlIGspIG4gKG1hcCA6IChrLCBfLCBfKSBNYXAudCkgOiBrIG9wdGlvbiA9XG4gICAgT3B0aW9uLm1hcCB+Zjpmc3QgKGZpbmRfa2V5X3JhbmdlX2xpbmVhciB+ZnJvbTpuIH50b186biBtYXApXG4gIDs7XG5cbiAgKCoqIEZpbmQga2V5IFtieV0gcG9zaXRpb25zIGVhcmxpZXIvbGF0ZXIgaW4gYSBtYXAuIFJldHVybnMgbm9uZSBpZiBvdXQgb2YgYm91bmRzLiAqKVxuICBsZXQgcmVjIG9mZnNldCAoa2V5IDogJ2spIChtYXAgOiAoJ2ssIF8sIF8pIE1hcC50KSB+YnkgOiAnayBvcHRpb24gPVxuICAgIGlmIEludC4oID0gKSBieSAwXG4gICAgdGhlbiBTb21lIGtleVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNsb3Nlc3RfZGlyLCBhZGQgPVxuICAgICAgICBpZiBJbnQuKCA8ICkgYnkgMCB0aGVuIGBMZXNzX3RoYW4sIDEgZWxzZSBgR3JlYXRlcl90aGFuLCAtMVxuICAgICAgaW5cbiAgICAgIG1hdGNoIE1hcC5jbG9zZXN0X2tleSBtYXAgY2xvc2VzdF9kaXIga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgKGtleSwgXykgLT4gb2Zmc2V0IGtleSBtYXAgfmJ5OihieSArIGFkZCkpXG4gIDs7XG5cbiAgKCoqIEZpbmQgaG93IHdlIG5lZWQgdG8gbW92ZSBba2V5XSBpZiBbY2hhbmdlZF9rZXldIGNoYW5nZWQgaW4gdGhlIGdpdmVuXG4gICAgICB3YXkgKilcbiAgbGV0IGZpbmRfb2Zmc2V0IH5jb21wYXJlIH5rZXkgfmNoYW5nZWRfa2V5IGNoYW5nZSA9XG4gICAgaWYgSW50LiggPCApIChjb21wYXJlIGNoYW5nZWRfa2V5IGtleSkgMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgIHwgYExlZnQgXyAtPiAxXG4gICAgICB8IGBSaWdodCBfIC0+IC0xXG4gICAgICB8IF8gLT4gMClcbiAgICBlbHNlIDBcbiAgOztcblxuICBsZXQgcmFua1xuICAgICAgICAodHlwZSBrIHYgY21wIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICAobWFwIDogKChrLCB2LCBjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICAoa2V5IDogKGssIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXkgPSBjb21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICAgIGxldCBzYW1lX2tleSBhIGIgPSBjb21wYXJlX2tleSBhIGIgPSAwIGluXG4gICAgICBsZXQgd2hlbl9rZXlfY2hhbmdlZCB+bWFwIH5vbGRfa2V5IH5uZXdfa2V5IH5vbGRfcmFuayA9XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IG5ld19rZXkgb2xkX2tleSA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogSWYgdGhlIG5ldyBrZXkgaXMgc21hbGxlciB0aGFuIHRoZSBvbGQga2V5LCBmaW5kIHRoZSBzaXplIG9mIHRoZSBtYXAgc3VicmFuZ2VcbiAgICAgICAgICAgICBiZXR3ZWVuIHRoZW0gYW5kIHN1YnRyYWN0IGl0IGZyb20gdGhlIHByZXZpb3VzIHJhbmsgKilcbiAgICAgICAgICBsZXQgbG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kID0gRXhjbCBuZXdfa2V5LCBFeGNsIG9sZF9rZXkgaW5cbiAgICAgICAgICBsZXQgc3VicmFuZ2UgPSBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgaW5cbiAgICAgICAgICBvbGRfcmFuayAtIE1hcC5sZW5ndGggc3VicmFuZ2UgLSAxKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBPdGhlcndpc2UsIHRoZSBuZXcga2V5IGlzIGxhcmdlciB0aGFuIHRoZSBvbGQga2V5LCBzbyBmaW5kIHRoZSBzaXplIG9mIHRoZVxuICAgICAgICAgICAgIG1hcCBzdWJyYW5nZSBiZXR3ZWVuIHRoZW0gYW5kIGFkZCBpdCB0byB0aGUgcHJldmlvdXMgcmFuayAqKVxuICAgICAgICAgIGxldCBsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQgPSBFeGNsIG9sZF9rZXksIEV4Y2wgbmV3X2tleSBpblxuICAgICAgICAgIGxldCBzdWJyYW5nZSA9IE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCBpblxuICAgICAgICAgIG9sZF9yYW5rICsgTWFwLmxlbmd0aCBzdWJyYW5nZSArIDEpXG4gICAgICBpblxuICAgICAgbGV0IHdoZW5fbWFwX2NoYW5nZWQgfm9sZF9tYXAgfm5ld19tYXAgfmtleSB+b2xkX3JhbmsgPVxuICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICgqIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGRhdGEsIHNvIG9wdGltaXplIHRoZXNlIGNoZWNrcyAqKVxuICAgICAgICAgIH5kYXRhX2VxdWFsOihmdW4gXyBfIC0+IHRydWUpXG4gICAgICAgICAgb2xkX21hcFxuICAgICAgICAgIG5ld19tYXBcbiAgICAgICAgICB+aW5pdDpvbGRfcmFua1xuICAgICAgICAgIH5mOihmdW4gYWNjIChkaWZmX2tleSwgZGlmZikgLT5cbiAgICAgICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICAgICAgfCBgTGVmdCBfIHdoZW4gY29tcGFyZV9rZXkgZGlmZl9rZXkga2V5IDwgMCAtPiBhY2MgLSAxXG4gICAgICAgICAgICB8IGBSaWdodCBfIHdoZW4gY29tcGFyZV9rZXkgZGlmZl9rZXkga2V5IDwgMCAtPiBhY2MgKyAxXG4gICAgICAgICAgICB8IF8gLT4gYWNjKVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgcHJvY2VzcyB+KG9sZCA6ICgoaywgdiwgXykgTWFwLnQgKiBfICogXykgb3B0aW9uKSBuZXdfbWFwIChuZXdfa2V5IDogaykgPVxuICAgICAgICBpZiBub3QgKE1hcC5tZW0gbmV3X21hcCBuZXdfa2V5KVxuICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgICAoKiBJZiB0aGUgbWFwIGFuZCBrZXkgYXJlIHRoZSBzYW1lLCBqdXN0IHJldXNlIHRoZSBvbGQgcmFuayAqKVxuICAgICAgICAgIHwgU29tZSAob2xkX21hcCwgb2xkX2tleSwgb2xkX3JhbmspXG4gICAgICAgICAgICB3aGVuIHBoeXNfZXF1YWwgbmV3X21hcCBvbGRfbWFwICYmIHNhbWVfa2V5IG9sZF9rZXkgbmV3X2tleSAtPiBvbGRfcmFua1xuICAgICAgICAgICgqIElmIHRoZSBtYXAgaXMgdGhlIHNhbWUgYnV0IHRoZSBrZXkgY2hhbmdlZCAqKVxuICAgICAgICAgIHwgU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykgd2hlbiBwaHlzX2VxdWFsIG5ld19tYXAgb2xkX21hcCAtPlxuICAgICAgICAgICAgU29tZSAod2hlbl9rZXlfY2hhbmdlZCB+bWFwOm5ld19tYXAgfm9sZF9rZXkgfm5ld19rZXkgfm9sZF9yYW5rKVxuICAgICAgICAgICgqIElmIHRoZSBrZXkgaXMgdGhlIHNhbWUgYnV0IHRoZSBtYXAgY2hhbmdlZCAqKVxuICAgICAgICAgIHwgU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykgd2hlbiBzYW1lX2tleSBuZXdfa2V5IG9sZF9rZXkgLT5cbiAgICAgICAgICAgIFNvbWUgKHdoZW5fbWFwX2NoYW5nZWQgfm9sZF9tYXAgfm5ld19tYXAgfmtleTpuZXdfa2V5IH5vbGRfcmFuaylcbiAgICAgICAgICAoKiBJZiBib3RoIHRoZSBtYXAgYW5kIHRoZSBrZXkgY2hhbmdlZCwgdGhpcyBjYW4gYmUgc2ltdWxhdGVkIGFzIHRoZVxuICAgICAgICAgICAgIG1hcCBjaGFuZ2luZyBmb2xsb3dlZCBieSB0aGUga2V5IGNoYW5naW5nICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSAtPlxuICAgICAgICAgICAgKCogV2UgY2FsbCBbcHJvY2Vzc10gcmVjdXJzaXZlbHkgaW5zdGVhZCBvZiBkaXJlY3RseSBjYWxsaW5nXG4gICAgICAgICAgICAgICBbd2hlbl9tYXBfY2hhbmdlZF0gZm9sbG93ZWQgYnkgW3doZW5fa2V5X2NoYW5nZWRdIHNpbmNlIGl0IG1pZ2h0IGJlIHRoZVxuICAgICAgICAgICAgICAgY2FzZSB0aGF0IFtvbGRfa2V5XSBpcyBpbiBbb2xkX21hcF0gYW5kIFtuZXdfa2V5XSBpcyBpbiBbbmV3X21hcF0sIGJ1dFxuICAgICAgICAgICAgICAgW29sZF9rZXldIGlzIG5vdCBpbiBbbmV3X21hcF0uICopXG4gICAgICAgICAgICBsZXQgb2xkX3JhbmsgPVxuICAgICAgICAgICAgICBwcm9jZXNzIH5vbGQ6KFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspKSBuZXdfbWFwIG9sZF9rZXlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBwcm9jZXNzIH5vbGQ6KFNvbWUgKG5ld19tYXAsIG9sZF9rZXksIG9sZF9yYW5rKSkgbmV3X21hcCBuZXdfa2V5XG4gICAgICAgICAgKCogSWYgdGhlIHByZXZpb3VzIGtleSB3YXMgbm90IGluIHRoZSBtYXAgb3IgdGhpcyBpcyB0aGUgZmlyc3Qgc3RhYmlsaXphdGlvbixcbiAgICAgICAgICAgICBjb21wdXRlIHRoZSByYW5rIGZyb20gc2NyYXRjaCAqKVxuICAgICAgICAgIHwgU29tZSAoXywgXywgTm9uZSkgfCBOb25lIC0+IE1hcC5yYW5rIG5ld19tYXAgbmV3X2tleSlcbiAgICAgIGluXG4gICAgICB3aXRoX29sZDIgfmluc3RydW1lbnRhdGlvbiBtYXAga2V5IH5mOnByb2Nlc3MpXG4gIDs7XG5cbiAgKCoqIFJhbmdlIG1hcCBieSBpbmRpY2VzICopXG4gIGxldCBzdWJyYW5nZV9ieV9yYW5rXG4gICAgICAgICh0eXBlIGsgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIChtYXAgOiAoKGssIF8sIF8pIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICAocmFuZ2UgOiAoaW50IE1heWJlX2JvdW5kLnQgKiBpbnQgTWF5YmVfYm91bmQudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA9XG4gICAgbGV0IGZpbmRfa2V5X3JhbmdlIChyYW5nZSA6IChpbnQgKiBpbnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICA6ICgoayAqIGsgb3B0aW9uKSBvcHRpb24sIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgID1cbiAgICAgIHdpdGhfb2xkMiBtYXAgcmFuZ2Ugfmluc3RydW1lbnRhdGlvbiB+ZjooZnVuIH5vbGQgbWFwIChmcm9tLCB0b18pIC0+XG4gICAgICAgICgqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBubyBrZXlzLCBvbmx5IGJlZ2luIGtleSwgb3IgYmVnaW4gYW5kIGVuZCBrZXlzLlxuICAgICAgICAgICBUaGVzZSBhcmUgdGhlIGtleXMgYXQgW2Zyb21dIGFuZCBbdG9fXSBwb3NpdGlvbnMgaW4gdGhlIG1hcCwgb3IgTm9uZSBpZiB0aGVcbiAgICAgICAgICAgaW5kaWNlcyBhcmUgdG9vIGJpZy4gQXMgYWx3YXlzIFswIDw9IGZyb20gJiYgZnJvbSA8PSB0b19dLCB0aGVyZSBpcyBub1xuICAgICAgICAgICBwb3NzaWJpbGl0eSBvZiBvbmx5IFt0b19dIGJlaW5nIGEgdmFsaWQgcG9zaXRpb24uXG4gICAgICAgICopXG4gICAgICAgIGlmIEludC4oIDwgKSB0b18gZnJvbSB8fCBJbnQuKCA8ICkgZnJvbSAwXG4gICAgICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJJbnZhbGlkIGluZGljZXNcIiAoZnJvbSA6IGludCkgKHRvXyA6IGludCldO1xuICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIChvbGRfZnJvbSwgb2xkX3RvKSwgU29tZSAoYmVnaW5fa2V5LCBlbmRfa2V5X29wdCkpIC0+XG4gICAgICAgICAgbGV0IGZpbmRfb2Zmc2V0ID0gZmluZF9vZmZzZXQgfmNvbXBhcmU6KE1hcC5jb21wYXJhdG9yIG1hcCkuY29tcGFyZSBpblxuICAgICAgICAgIGxldCByYW5nZV9vZmZzZXRfYmVnaW4gPSBmcm9tIC0gb2xkX2Zyb20gaW5cbiAgICAgICAgICBsZXQgcmFuZ2Vfb2Zmc2V0X2VuZCA9IHRvXyAtIG9sZF90byBpblxuICAgICAgICAgIGxldCBhZGp1c3RfYW5kX29mZnNldCB+Ynkga2V5ID1cbiAgICAgICAgICAgIGxldCBieSA9IGJ5ICsgaWYgYnkgPj0gMCAmJiBub3QgKE1hcC5tZW0gbWFwIGtleSkgdGhlbiAxIGVsc2UgMCBpblxuICAgICAgICAgICAgb2Zmc2V0IGtleSBtYXAgfmJ5XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBXZSBvbmx5IGNhcmUgYWJvdXQgdGhlIGtleXMgY2hhbmdpbmcgYW5kIG5vdCB0aGUgZGF0YSwgc28gW2RhdGFfZXF1YWxdIGhlcmVcbiAgICAgICAgICAgICBjYW4gYmUgYWx3YXlzIHRydWUgKilcbiAgICAgICAgICBsZXQgZGlmZiB+aW5pdCB+ZiA9XG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZiB+ZGF0YV9lcXVhbDooZnVuIF8gXyAtPiB0cnVlKSBvbGRfbWFwIG1hcCB+aW5pdCB+ZlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGJlZ2luX2tleV9vcHQsIGVuZF9rZXlfb3B0ID1cbiAgICAgICAgICAgIG1hdGNoIGVuZF9rZXlfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBlbmRfa2V5IC0+XG4gICAgICAgICAgICAgIGxldCBtYXBfb2Zmc2V0X2JlZ2luLCBtYXBfb2Zmc2V0X2VuZCA9XG4gICAgICAgICAgICAgICAgZGlmZiB+aW5pdDooMCwgMCkgfmY6KGZ1biAob2Zmc2V0X2JlZ2luLCBvZmZzZXRfZW5kKSAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgICAgICAgICAoIG9mZnNldF9iZWdpbiArIGZpbmRfb2Zmc2V0IH5rZXk6YmVnaW5fa2V5IH5jaGFuZ2VkX2tleTprZXkgY2hhbmdlXG4gICAgICAgICAgICAgICAgICAsIG9mZnNldF9lbmQgKyBmaW5kX29mZnNldCB+a2V5OmVuZF9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2UgKSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCBhZGp1c3RfYW5kX29mZnNldCBiZWdpbl9rZXkgfmJ5OihtYXBfb2Zmc2V0X2JlZ2luICsgcmFuZ2Vfb2Zmc2V0X2JlZ2luKVxuICAgICAgICAgICAgICAsIGFkanVzdF9hbmRfb2Zmc2V0IGVuZF9rZXkgfmJ5OihtYXBfb2Zmc2V0X2VuZCArIHJhbmdlX29mZnNldF9lbmQpIClcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBsZXQgbWFwX29mZnNldF9iZWdpbiA9XG4gICAgICAgICAgICAgICAgZGlmZiB+aW5pdDowIH5mOihmdW4gb2Zmc2V0X2JlZ2luIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICAgIG9mZnNldF9iZWdpbiArIGZpbmRfb2Zmc2V0IH5rZXk6YmVnaW5fa2V5IH5jaGFuZ2VkX2tleTprZXkgY2hhbmdlKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGFkanVzdF9hbmRfb2Zmc2V0IGJlZ2luX2tleSB+Ynk6KG1hcF9vZmZzZXRfYmVnaW4gKyByYW5nZV9vZmZzZXRfYmVnaW4pXG4gICAgICAgICAgICAgICwgbnRoX2Zyb21fZWl0aGVyX3NpZGUgdG9fIG1hcCApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhc3NlcnQgKE9wdGlvbi5mb3JfYWxsIH5mOihNYXAubWVtIG1hcCkgYmVnaW5fa2V5X29wdCk7XG4gICAgICAgICAgYXNzZXJ0IChPcHRpb24uZm9yX2FsbCB+ZjooTWFwLm1lbSBtYXApIGVuZF9rZXlfb3B0KTtcbiAgICAgICAgICBPcHRpb24ubWFwIGJlZ2luX2tleV9vcHQgfmY6KGZ1biBiZWdpbl9rZXkgLT4gYmVnaW5fa2V5LCBlbmRfa2V5X29wdClcbiAgICAgICAgfCBOb25lIHwgU29tZSAoXywgXywgTm9uZSkgLT5cbiAgICAgICAgICAoKiBPbiBmaXJzdCBydW4gKHdoZW4gd2UgaGF2ZSB0bykgb3Igd2hlbiBib3RoIHRoZSBrZXlzIGFyZSBub25lLCBydW4gTyhuKVxuICAgICAgICAgICAgIHNjYW4uIFRoaXMgaXMgZmluZSBmb3Iga2V5cy1hcmUtbm9uZSBjYXNlIGFzIGl0IGhhcHBlbnMgd2hlbiB0aGUgcG9zaXRpb25zXG4gICAgICAgICAgICAgYXJlIHBhc3QgZW5kIG9mIHRoZSBtYXAsIHNvIHRoZXkgc2hvdWxkbid0IGJlIHRvbyBmYXIgZnJvbSBlbmQgYWZ0ZXIgdGhlXG4gICAgICAgICAgICAgbWFwIGNoYW5nZXMsIGFuZCBbZmluZF9rZXlfcmFuZ2VfbGluZWFyXSBpcyBmYXN0IGluIHN1Y2ggY2FzZS4gKilcbiAgICAgICAgICBmaW5kX2tleV9yYW5nZV9saW5lYXIgbWFwIH5mcm9tIH50b18pXG4gICAgaW5cbiAgICAoKiBIYW5kbGUgZGlmZmVyZW50IE1heWJlX2JvdW5kIGNhc2VzIGFuZCBjYWxsIGZpbmRfa2V5X3JhbmdlIGlmIG5lY2Vzc2FyeS4gSXQnc1xuICAgICAgIG5pY2VyIHRvIGRvIHRoaXMgaGVyZSBhcyBvcHBvc2VkIHRvIG1ha2luZyBmaW5kX2tleV9yYW5nZSBldmVuIG1vcmUgY29tcGxpY2F0ZWQgKilcbiAgICBsZXQgb3BlbiBJbmNyZW1lbnRhbC5MZXRfc3ludGF4IGluXG4gICAgbGV0ICggPj4+ICkgbmV3XyBib3VuZCA9IE1heWJlX2JvdW5kLm1hcCB+ZjooZnVuIF8gLT4gbmV3XykgYm91bmQgaW5cbiAgICBsZXQgcmV0dXJuID0gSW5jcmVtZW50YWwucmV0dXJuIChJbmNyZW1lbnRhbC5zdGF0ZSBtYXApIGluXG4gICAgbGV0IGtleV9yYW5nZSA9XG4gICAgICBtYXRjaCVwYXR0ZXJuX2JpbmQgcmFuZ2Ugd2l0aFxuICAgICAgfCBNYXliZV9ib3VuZC5VbmJvdW5kZWQsIE1heWJlX2JvdW5kLlVuYm91bmRlZCAtPlxuICAgICAgICByZXR1cm4gKFNvbWUgKE1heWJlX2JvdW5kLlVuYm91bmRlZCwgTWF5YmVfYm91bmQuVW5ib3VuZGVkKSlcbiAgICAgIHwgKCAoKE1heWJlX2JvdW5kLkluY2wgbCB8IE1heWJlX2JvdW5kLkV4Y2wgbCkgYXMgbGIpXG4gICAgICAgICwgKChNYXliZV9ib3VuZC5JbmNsIHUgfCBNYXliZV9ib3VuZC5FeGNsIHUpIGFzIHViKSApIC0+XG4gICAgICAgIGxldCVtYXAga2V5X3JhbmdlID0gZmluZF9rZXlfcmFuZ2UgKEluY3JlbWVudGFsLmJvdGggbCB1KVxuICAgICAgICBhbmQgbGIgPSBsYlxuICAgICAgICBhbmQgdWIgPSB1YiBpblxuICAgICAgICAobWF0Y2gga2V5X3JhbmdlIHdpdGhcbiAgICAgICAgIHwgU29tZSAoYmVnaW5fa2V5LCBTb21lIGVuZF9rZXkpIC0+IFNvbWUgKGJlZ2luX2tleSA+Pj4gbGIsIGVuZF9rZXkgPj4+IHViKVxuICAgICAgICAgfCBTb21lIChiZWdpbl9rZXksIE5vbmUpIC0+IFNvbWUgKGJlZ2luX2tleSA+Pj4gbGIsIFVuYm91bmRlZClcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCAoKE1heWJlX2JvdW5kLkluY2wgbCB8IE1heWJlX2JvdW5kLkV4Y2wgbCkgYXMgbGIpLCBNYXliZV9ib3VuZC5VbmJvdW5kZWQgLT5cbiAgICAgICAgbGV0JW1hcCBrZXlfcmFuZ2UgPSBmaW5kX2tleV9yYW5nZSAoSW5jcmVtZW50YWwuYm90aCBsIGwpXG4gICAgICAgIGFuZCBsYiA9IGxiIGluXG4gICAgICAgIChtYXRjaCBrZXlfcmFuZ2Ugd2l0aFxuICAgICAgICAgfCBTb21lIChrZXksIF8pIC0+IFNvbWUgKGtleSA+Pj4gbGIsIFVuYm91bmRlZClcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCBNYXliZV9ib3VuZC5VbmJvdW5kZWQsICgoTWF5YmVfYm91bmQuSW5jbCB1IHwgTWF5YmVfYm91bmQuRXhjbCB1KSBhcyB1YikgLT5cbiAgICAgICAgbGV0JW1hcCBrZXlfcmFuZ2UgPSBmaW5kX2tleV9yYW5nZSAoSW5jcmVtZW50YWwuYm90aCB1IHUpXG4gICAgICAgIGFuZCB1YiA9IHViIGluXG4gICAgICAgIChtYXRjaCBrZXlfcmFuZ2Ugd2l0aFxuICAgICAgICAgfCBTb21lIChrZXksIF8pIC0+IFNvbWUgKFVuYm91bmRlZCwga2V5ID4+PiB1YilcbiAgICAgICAgICgqIEluIHRoaXMgY2FzZSwgdGhlIHVwcGVyIGJvdW5kIHdhcyBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZVxuICAgICAgICAgICAgbWFwLCBzbyB0aGUgdXBwZXIgYm91bmQgZm9yIHRoZSBrZXkgcmFuZ2UgaXMgW1VuYm91bmRlZF0uXG4gICAgICAgICAgICBUaGlzIGJlaGF2aW9yIGlzIGRlbW9uc3RyYXRlZCBpbiBhIHRlc3QgaW4gWy4uL3Rlc3QvdGVzdF9zdWJyYW5nZS5tbF0uICopXG4gICAgICAgICB8IE5vbmUgLT4gU29tZSAoVW5ib3VuZGVkLCBVbmJvdW5kZWQpKVxuICAgIGluXG4gICAgc3VicmFuZ2UgP2RhdGFfZXF1YWwgbWFwIGtleV9yYW5nZVxuICA7O1xuXG4gIGxldCB0cmFuc3Bvc2VcbiAgICA6IHR5cGUgazEgazIgdiBrMV9jbXAgazJfY21wIHN0YXRlX3dpdG5lc3MuXG4gICAgICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgICAtPiA/ZGF0YV9lcXVhbDoodiAtPiB2IC0+IGJvb2wpXG4gICAgICAtPiAoazIsIGsyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgICAgLT4gKChrMSwgKGsyLCB2LCBrMl9jbXApIE1hcC50LCBrMV9jbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAtPiAoKGsyLCAoazEsIHYsIGsxX2NtcCkgTWFwLnQsIGsyX2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgZnVuID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKSBrMl9jb21wYXJhdG9yIG0gLT5cbiAgICAgIHdpdGhfY29tcGFyYXRvciBtIChmdW4gazFfY29tcGFyYXRvciAtPlxuICAgICAgICBsZXQgdXBkYXRlXG4gICAgICAgICAgOiAga2V5OmsxIC0+IG9sZF9kYXRhOihrMiwgdiwgazJfY21wKSBNYXAudCAtPiBuZXdfZGF0YTooazIsIHYsIGsyX2NtcCkgTWFwLnRcbiAgICAgICAgICAgIC0+IChrMiwgKGsxLCB2LCBrMV9jbXApIE1hcC50LCBrMl9jbXApIE1hcC50XG4gICAgICAgICAgICAtPiAoazIsIChrMSwgdiwgazFfY21wKSBNYXAudCwgazJfY21wKSBNYXAudFxuICAgICAgICAgID1cbiAgICAgICAgICBmdW4gfmtleTprMSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgb2xkX2RhdGFcbiAgICAgICAgICAgICAgbmV3X2RhdGFcbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgfmluaXQ6YWNjXG4gICAgICAgICAgICAgIH5mOihmdW4gYWNjIChrMiwgZGlmZikgLT5cbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgeCB8IGBVbmVxdWFsIChfLCB4KSAtPiBTb21lIHhcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIE1hcC5jaGFuZ2UgYWNjIGsyIH5mOihmdW4gYWNjX2lubmVyIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjX2lubmVyID1cbiAgICAgICAgICAgICAgICAgICAgTWFwLmNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2NfaW5uZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICB+ZGVmYXVsdDooTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6azFfY29tcGFyYXRvcikpXG4gICAgICAgICAgICAgICAgICAgICAgazFcbiAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuIF8gLT4gdmFsdWUpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgaWYgTWFwLmlzX2VtcHR5IGFjY19pbm5lciB0aGVuIE5vbmUgZWxzZSBTb21lIGFjY19pbm5lcikpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhZGQgfmtleSB+ZGF0YSA9XG4gICAgICAgICAgdXBkYXRlIH5rZXkgfm9sZF9kYXRhOihNYXAuZW1wdHkgazJfY29tcGFyYXRvcikgfm5ld19kYXRhOmRhdGFcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlbW92ZSB+a2V5IH5kYXRhID1cbiAgICAgICAgICB1cGRhdGUgfmtleSB+b2xkX2RhdGE6ZGF0YSB+bmV3X2RhdGE6KE1hcC5lbXB0eSBrMl9jb21wYXJhdG9yKVxuICAgICAgICBpblxuICAgICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICAgIG1cbiAgICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgICAgfmluaXQ6KE1hcC5lbXB0eSBrMl9jb21wYXJhdG9yKVxuICAgICAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgICAgICB+dXBkYXRlXG4gICAgICAgICAgfmFkZFxuICAgICAgICAgIH5yZW1vdmUpXG4gIDs7XG5cbiAgbGV0IGNvbGxhcHNlX2J5XG4gICAgICAgICh0eXBlIG91dGVyX2tleSBvdXRlcl9jbXAgaW5uZXJfa2V5IGlubmVyX2NtcCBjb21iaW5lZF9rZXkgY29tYmluZWRfY21wKVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcF9pbmNyIDpcbiAgICAgICAgICAgKChvdXRlcl9rZXksIChpbm5lcl9rZXksIF8sIGlubmVyX2NtcCkgTWFwLnQsIG91dGVyX2NtcCkgTWFwLnQsIF8pIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4obWVyZ2Vfa2V5cyA6IG91dGVyX2tleSAtPiBpbm5lcl9rZXkgLT4gY29tYmluZWRfa2V5KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoY29tYmluZWRfa2V5LCBjb21iaW5lZF9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgY29tcGFyYXRvcilcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH51cGRhdGU6KGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhOl8gfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICBNYXAuc2V0IGFjYyB+a2V5OihtZXJnZV9rZXlzIG91dGVyX2tleSBpbm5lcl9rZXkpIH5kYXRhOm5ld19kYXRhKVxuICAgICAgfmFkZDooZnVuIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLmFkZF9leG4gYWNjIH5rZXk6KG1lcmdlX2tleXMgb3V0ZXJfa2V5IGlubmVyX2tleSkgfmRhdGEpXG4gICAgICB+cmVtb3ZlOihmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOl8gYWNjIC0+XG4gICAgICAgIE1hcC5yZW1vdmUgYWNjIChtZXJnZV9rZXlzIG91dGVyX2tleSBpbm5lcl9rZXkpKVxuICA7O1xuXG4gIGxldCBjb2xsYXBzZVxuICAgICAgICAodHlwZSBvdXRlcl9rZXkgb3V0ZXJfY21wIGlubmVyX2tleSBpbm5lcl9jbXApXG4gICAgICAgID9pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcF9pbmNyIDpcbiAgICAgICAgICAgKChvdXRlcl9rZXksIChpbm5lcl9rZXksIF8sIGlubmVyX2NtcCkgTWFwLnQsIG91dGVyX2NtcCkgTWFwLnQsIF8pIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH5jb21wYXJhdG9yOihpbm5lcl9jb21wYXJhdG9yIDogKGlubmVyX2tleSwgaW5uZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50KVxuICAgID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwX2luY3IgKGZ1biBvdXRlcl9jb21wYXJhdG9yIC0+XG4gICAgICBsZXQgbW9kdWxlIENtcCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBvdXRlcl9rZXkgKiBpbm5lcl9rZXlcbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAob3V0ZXJfY21wLCBpbm5lcl9jbXApIFR1cGxlMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICBsZXQgY29tcGFyYXRvciA9XG4gICAgICAgICAgbGV0IGlubmVyX2NvbXBhcmF0b3IgPVxuICAgICAgICAgICAgbGV0IG1vZHVsZSBNID0gKHZhbCBpbm5lcl9jb21wYXJhdG9yKSBpblxuICAgICAgICAgICAgTS5jb21wYXJhdG9yXG4gICAgICAgICAgaW5cbiAgICAgICAgICBUdXBsZTIuY29tcGFyYXRvciBvdXRlcl9jb21wYXJhdG9yIGlubmVyX2NvbXBhcmF0b3JcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGNvbGxhcHNlX2J5XG4gICAgICAgID9pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwX2luY3JcbiAgICAgICAgfm1lcmdlX2tleXM6VHVwbGUyLmNyZWF0ZVxuICAgICAgICB+Y29tcGFyYXRvcjoobW9kdWxlIENtcCkpXG4gIDs7XG5cbiAgbGV0IGV4cGFuZFxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwX2luY3JcbiAgICAgICAgfm91dGVyX2NvbXBhcmF0b3JcbiAgICAgICAgfmlubmVyX2NvbXBhcmF0b3JcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSBvdXRlcl9jb21wYXJhdG9yKVxuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXk6KG91dGVyX2tleSwgaW5uZXJfa2V5KSB+b2xkX2RhdGE6XyB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgIE1hcC51cGRhdGUgYWNjIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTWFwLnNpbmdsZXRvbiBpbm5lcl9jb21wYXJhdG9yIGlubmVyX2tleSBuZXdfZGF0YVxuICAgICAgICAgIHwgU29tZSBtYXAgLT4gTWFwLnNldCBtYXAgfmtleTppbm5lcl9rZXkgfmRhdGE6bmV3X2RhdGEpKVxuICAgICAgfmFkZDooZnVuIH5rZXk6KG91dGVyX2tleSwgaW5uZXJfa2V5KSB+ZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLnVwZGF0ZSBhY2Mgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBNYXAuc2luZ2xldG9uIGlubmVyX2NvbXBhcmF0b3IgaW5uZXJfa2V5IGRhdGFcbiAgICAgICAgICB8IFNvbWUgbWFwIC0+IE1hcC5hZGRfZXhuIG1hcCB+a2V5OmlubmVyX2tleSB+ZGF0YSkpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleToob3V0ZXJfa2V5LCBpbm5lcl9rZXkpIH5kYXRhOl8gYWNjIC0+XG4gICAgICAgIE1hcC5jaGFuZ2UgYWNjIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBtYXAgLT5cbiAgICAgICAgICAgIGxldCBtYXAgPSBNYXAucmVtb3ZlIG1hcCBpbm5lcl9rZXkgaW5cbiAgICAgICAgICAgIE9wdGlvbi5zb21lX2lmIChub3QgKE1hcC5pc19lbXB0eSBtYXApKSBtYXApKVxuICA7O1xuXG4gIGxldCBjb3VudGkgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDowXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSBjb3VudCAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudClcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhIGNvdW50IC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGNvdW50IC0gMSBlbHNlIGNvdW50KVxuICA7O1xuXG4gIGxldCBjb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBjb3VudGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IGV4aXN0c2kgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwIChjb3VudGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZikgfmY6KGZ1biBjb3VudCAtPlxuICAgICAgY291bnQgPD4gMClcbiAgOztcblxuICBsZXQgZXhpc3RzID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIGV4aXN0c2kgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHN1bVxuICAgICAgICAodHlwZSB1KVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcF9pbmNyIDogKChfLCBfLCBfKSBNYXAudCwgXykgSW5jcmVtZW50YWwudClcbiAgICAgICAgKG1vZHVsZSBHcm91cCA6IEFic3RyYWN0X2FsZ2VicmEuQ29tbXV0YXRpdmVfZ3JvdXAuV2l0aG91dF9zZXhwIHdpdGggdHlwZSB0ID0gdSlcbiAgICAgICAgfmZcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmluaXQ6R3JvdXAuemVyb1xuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfmFkZDooZnVuIH5rZXk6XyB+ZGF0YTp2IGFjYyAtPiBHcm91cC4oICsgKSBhY2MgKGYgdikpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleTpfIH5kYXRhOnYgYWNjIC0+IEdyb3VwLiggLSApIGFjYyAoZiB2KSlcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwXG4gICAgICAoY291bnRpID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgICBub3QgKGYgfmtleSB+ZGF0YSkpKVxuICAgICAgfmY6KGZ1biBjb3VudCAtPiBjb3VudCA9IDApXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGwgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgZm9yX2FsbGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHVub3JkZXJlZF9mb2xkXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICA/dXBkYXRlXG4gICAgICAgID9zcGVjaWFsaXplZF9pbml0aWFsXG4gICAgICAgID9maW5hbGl6ZVxuICAgICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgICBtYXBcbiAgICAgICAgfmluaXRcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgP3VwZGF0ZVxuICAgICAgP3NwZWNpYWxpemVkX2luaXRpYWxcbiAgICAgID9maW5hbGl6ZVxuICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgIG1hcFxuICAgICAgfmluaXRcbiAgICAgIH5hZGRcbiAgICAgIH5yZW1vdmVcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICAgID91cGRhdGVcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbml0XG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZVxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICA/dXBkYXRlXG4gICAgICBtYXBcbiAgICAgIH5pbml0XG4gICAgICB+YWRkXG4gICAgICB+cmVtb3ZlXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbGV0IGZpbmRfa2V5X3JhbmdlX2xpbmVhciA9IGZpbmRfa2V5X3JhbmdlX2xpbmVhclxuICBlbmRcblxuICBtb2R1bGUgTG9va3VwID0gc3RydWN0XG4gICAgdHlwZSAoJ3YsICd3KSBlbnRyeSA9XG4gICAgICB7IG11dGFibGUgc2F2ZWRfdmFsdWUgOiAndiBvcHRpb25cbiAgICAgIDsgbm9kZSA6ICgndiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS50XG4gICAgICB9XG5cbiAgICB0eXBlICgnaywgJ3YsICdjbXAsICd3KSB0ID1cbiAgICAgIHsgbXV0YWJsZSBzYXZlZF9tYXAgOiAoJ2ssICd2LCAnY21wKSBNYXAudFxuICAgICAgKCogV2UgbWF5IGhhdmUgbXVsdGlwbGUgZW50cmllcyBwZXIga2V5IGlmIG5vZGVzIGJlY29tZSBuZWNlc3NhcnkgYWdhaW4gYWZ0ZXIgYmVpbmdcbiAgICAgICAgIHJlbW92ZWQuICopXG4gICAgICA7IG11dGFibGUgbG9va3VwX2VudHJpZXMgOiAoJ2ssICgndiwgJ3cpIGVudHJ5IGxpc3QsICdjbXApIE1hcC50XG4gICAgICA7IHVwZGF0ZXJfbm9kZSA6ICh1bml0LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgOyBzY29wZSA6ICd3IEluY3JlbWVudGFsLlNjb3BlLnRcbiAgICAgIH1cblxuICAgIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICAgIHR5cGUgdFxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ3YsICd3KSB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzLCAndykgdFxuICAgIGVuZFxuXG4gICAgbGV0IGNyZWF0ZVxuICAgICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgICAgaW5wdXRfbWFwXG4gICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgID1cbiAgICAgIGxldCByZWMgc2VsZiA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAobGV0IHVwZGF0ZXJfbm9kZSA9XG4gICAgICAgICAgICAgSW5jcmVtZW50YWwubWFwIGlucHV0X21hcCB+ZjooZnVuIGlucHV0X21hcCAtPlxuICAgICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IChsYXp5IHNlbGYpID0gc2VsZiBpblxuICAgICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICAgIHNlbGYuc2F2ZWRfbWFwXG4gICAgICAgICAgICAgICAgICAgaW5wdXRfbWFwXG4gICAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgICB+aW5pdDooKVxuICAgICAgICAgICAgICAgICAgIH5mOihmdW4gKCkgKGtleSwgY2hhbmdlZF92YWx1ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBlbnRyaWVzID0gTWFwLmZpbmRfbXVsdGkgc2VsZi5sb29rdXBfZW50cmllcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIExpc3QuaXRlciBlbnRyaWVzIH5mOihmdW4gZW50cnkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgPC0gKG1hdGNoIGNoYW5nZWRfdmFsdWUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgbmV3X3ZhbHVlIHwgYFVuZXF1YWwgKF8sIG5ld192YWx1ZSkgLT4gU29tZSBuZXdfdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIGVudHJ5Lm5vZGUpKTtcbiAgICAgICAgICAgICAgICAgc2VsZi5zYXZlZF9tYXAgPC0gaW5wdXRfbWFwKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICAgICAgIHsgc2F2ZWRfbWFwID0gZW1wdHlfbWFwXG4gICAgICAgICAgIDsgbG9va3VwX2VudHJpZXMgPSBlbXB0eV9tYXBcbiAgICAgICAgICAgOyB1cGRhdGVyX25vZGVcbiAgICAgICAgICAgOyBzY29wZSA9IEluY3JlbWVudGFsLlNjb3BlLmN1cnJlbnQgKEluY3JlbWVudGFsLnN0YXRlIGlucHV0X21hcCkgKClcbiAgICAgICAgICAgfSlcbiAgICAgIGluXG4gICAgICBMYXp5LmZvcmNlIHNlbGZcbiAgICA7O1xuXG4gICAgbGV0W0Bjb2xkXSBzbG93X3BhdGhfbGlua19lbnRyeSB0IGVudHJ5IH5rZXkgfmlzX25vd19vYnNlcnZhYmxlID1cbiAgICAgIGxldCAobGF6eSBlbnRyeSkgPSBlbnRyeSBpblxuICAgICAgbGV0IGN1cnJlbnRfZW50cmllcyA9IE1hcC5maW5kX211bHRpIHQubG9va3VwX2VudHJpZXMga2V5IGluXG4gICAgICBsZXQgaXNfbGlua2VkID0gTGlzdC5leGlzdHMgY3VycmVudF9lbnRyaWVzIH5mOihwaHlzX2VxdWFsIGVudHJ5KSBpblxuICAgICAgaWYgQm9vbC5lcXVhbCBpc19saW5rZWQgaXNfbm93X29ic2VydmFibGVcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaWYgaXNfbm93X29ic2VydmFibGVcbiAgICAgIHRoZW5cbiAgICAgICAgdC5sb29rdXBfZW50cmllc1xuICAgICAgICA8LSBNYXAudXBkYXRlIHQubG9va3VwX2VudHJpZXMga2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSAob3RoZXJfZW50cnkgOjogXyBhcyBvdGhlcl9lbnRyaWVzKSAtPlxuICAgICAgICAgICAgKCogVXBkYXRlIHRoaXMgZW50cnkncyB2YWx1ZSB0byBiZSBjdXJyZW50LiAqKVxuICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWUgPC0gb3RoZXJfZW50cnkuc2F2ZWRfdmFsdWU7XG4gICAgICAgICAgICBlbnRyeSA6OiBvdGhlcl9lbnRyaWVzXG4gICAgICAgICAgfCBOb25lIHwgU29tZSBbXSAtPlxuICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWUgPC0gTWFwLmZpbmQgdC5zYXZlZF9tYXAga2V5O1xuICAgICAgICAgICAgWyBlbnRyeSBdKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXdfZW50cmllcyA9XG4gICAgICAgICAgTGlzdC5maWx0ZXIgY3VycmVudF9lbnRyaWVzIH5mOihmdW4geCAtPiBub3QgKHBoeXNfZXF1YWwgZW50cnkgeCkpXG4gICAgICAgIGluXG4gICAgICAgIHQubG9va3VwX2VudHJpZXNcbiAgICAgICAgPC0gKGlmIExpc3QuaXNfZW1wdHkgbmV3X2VudHJpZXNcbiAgICAgICAgICAgIHRoZW4gTWFwLnJlbW92ZSB0Lmxvb2t1cF9lbnRyaWVzIGtleVxuICAgICAgICAgICAgZWxzZSBNYXAuc2V0IHQubG9va3VwX2VudHJpZXMgfmtleSB+ZGF0YTpuZXdfZW50cmllcykpXG4gICAgOztcblxuICAgIGxldFtAY29sZF0gc2xvd19wYXRoX2NyZWF0ZV9ub2RlIHQga2V5ID1cbiAgICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIHQudXBkYXRlcl9ub2RlIGluXG4gICAgICBJbmNyZW1lbnRhbC5TY29wZS53aXRoaW4gaW5jcmVtZW50YWxfc3RhdGUgdC5zY29wZSB+ZjooZnVuICgpIC0+XG4gICAgICAgIGxldCByZWMgZW50cnkgPVxuICAgICAgICAgIGxhenlcbiAgICAgICAgICAgIHsgc2F2ZWRfdmFsdWUgPSBNYXAuZmluZCB0LnNhdmVkX21hcCBrZXlcbiAgICAgICAgICAgIDsgbm9kZSA9XG4gICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuY3JlYXRlXG4gICAgICAgICAgICAgICAgICBpbmNyZW1lbnRhbF9zdGF0ZVxuICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiAoZm9yY2UgZW50cnkpLnNhdmVkX3ZhbHVlKVxuICAgICAgICAgICAgICAgICAgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlOihzbG93X3BhdGhfbGlua19lbnRyeSB0IGVudHJ5IH5rZXkpXG4gICAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCAobGF6eSBlbnRyeSkgPSBlbnRyeSBpblxuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5hZGRfZGVwZW5kZW5jeVxuICAgICAgICAgIGVudHJ5Lm5vZGVcbiAgICAgICAgICAoSW5jcmVtZW50YWwuRXhwZXJ0LkRlcGVuZGVuY3kuY3JlYXRlIHQudXBkYXRlcl9ub2RlKTtcbiAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggZW50cnkubm9kZSlcbiAgICA7O1xuXG4gICAgbGV0IGZpbmQgdCBrZXkgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmRfbXVsdGkgdC5sb29rdXBfZW50cmllcyBrZXkgd2l0aFxuICAgICAgfCBlbnRyeSA6OiBfIC0+IEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIGVudHJ5Lm5vZGVcbiAgICAgIHwgW10gLT4gc2xvd19wYXRoX2NyZWF0ZV9ub2RlIHQga2V5XG4gICAgOztcblxuICAgIG1vZHVsZSBGb3JfZGVidWcgPSBzdHJ1Y3RcbiAgICAgIGxldFtAY29sZF0gc2V4cF9vZl9lbnRyeSBzZXhwX29mX3ZhbHVlIGVudHJ5ID1cbiAgICAgICAgbGV0IHsgc2F2ZWRfdmFsdWU7IG5vZGUgfSA9IGVudHJ5IGluXG4gICAgICAgIGxldCBub2RlID0gSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggbm9kZSBpblxuICAgICAgICBbJXNleHBcbiAgICAgICAgICB7IHNhdmVkX3ZhbHVlIDogdmFsdWUgb3B0aW9uXG4gICAgICAgICAgOyBub2RlX2luZm8gPSAoSW5jcmVtZW50YWwudXNlcl9pbmZvIG5vZGUgOiAoSW5mby50IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICA7IG5vZGVfaXNfY29uc3QgPVxuICAgICAgICAgICAgICAoT3B0aW9uLnNvbWVfaWYgKEluY3JlbWVudGFsLmlzX2NvbnN0IG5vZGUpICgpXG4gICAgICAgICAgICAgICA6ICh1bml0IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICA7IG5vZGVfaXNfaW52YWxpZCA9XG4gICAgICAgICAgICAgIChPcHRpb24uc29tZV9pZiAobm90IChJbmNyZW1lbnRhbC5pc192YWxpZCBub2RlKSkgKClcbiAgICAgICAgICAgICAgIDogKHVuaXQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIDsgbm9kZV9pc191bm5lY2Vzc2FyeSA9XG4gICAgICAgICAgICAgIChPcHRpb24uc29tZV9pZiAobm90IChJbmNyZW1lbnRhbC5pc19uZWNlc3Nhcnkgbm9kZSkpICgpXG4gICAgICAgICAgICAgICA6ICh1bml0IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICB9XVxuICAgICAgOztcblxuICAgICAgbGV0W0Bjb2xkXSBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl92YWx1ZSB0ID1cbiAgICAgICAgbGV0IGluZm9fcGVyX2tleSA9XG4gICAgICAgICAgTWFwLm1lcmdlIHQuc2F2ZWRfbWFwIHQubG9va3VwX2VudHJpZXMgfmY6KGZ1biB+a2V5IGRhdGEgLT5cbiAgICAgICAgICAgIGxldCBhY3R1YWxfdmFsdWUsIGVudHJpZXMgPVxuICAgICAgICAgICAgICBtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgICAgICAgfCBgTGVmdCB4IC0+IFNvbWUgeCwgW11cbiAgICAgICAgICAgICAgfCBgUmlnaHQgeSAtPiBOb25lLCB5XG4gICAgICAgICAgICAgIHwgYEJvdGggKHgsIHkpIC0+IFNvbWUgeCwgeVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgeyBrZXkgOiBrZXlcbiAgICAgICAgICAgICAgICA7IGFjdHVhbF92YWx1ZSA6ICh2YWx1ZSBvcHRpb25bQHNleHAub3B0aW9uXSlcbiAgICAgICAgICAgICAgICA7IGVudHJpZXMgOiB2YWx1ZSBlbnRyeSBsaXN0XG4gICAgICAgICAgICAgICAgfV0pXG4gICAgICAgIGluXG4gICAgICAgIFNleHAuTGlzdCAoTWFwLmRhdGEgaW5mb19wZXJfa2V5KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHN0YXRlX3dpdG5lc3NcblxuICBpbmNsdWRlXG4gICAgU19nZW5cbiAgICB3aXRoIHR5cGUgJ2EgSW5jci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgIGFuZCB0eXBlICdhIEluY3IuQ3V0b2ZmLnQgPSAnYSBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgICBhbmQgdHlwZSAoJ2ssICd2LCAnY21wKSBMb29rdXAudCA9ICgnaywgJ3YsICdjbXAsIHN0YXRlX3dpdG5lc3MpIEdlbmVyaWMuTG9va3VwLnRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSW5jciA6IEluY3JlbWVudGFsLlMpID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJpY1xuICBtb2R1bGUgSW5zdHJ1bWVudGF0aW9uID0gSW5zdHJ1bWVudGF0aW9uXG5cbiAgbGV0IGZsYXR0ZW4geCA9IGZsYXR0ZW4gSW5jci5TdGF0ZS50IHhcblxuICBtb2R1bGUgTG9va3VwID0gc3RydWN0XG4gICAgaW5jbHVkZSBMb29rdXBcblxuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXAsIEluY3Iuc3RhdGVfd2l0bmVzcykgTG9va3VwLnRcblxuICAgIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICAgIHR5cGUgdFxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kKSA6IHNpZ1xuICAgICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEdlbmVyaWNcbiIsIm9wZW4gQ29yZVxuXG5tb2R1bGUgTWFrZSAoSW5jciA6IEluY3JlbWVudGFsLlNfZ2VuKSA9IHN0cnVjdFxuICBtb2R1bGUgRSA9IEluY3IuRXhwZXJ0XG5cbiAgKCogSGFzaHRibCBzdGFydHMgb3V0IGF0IGEgcmlkaWN1bG91cyBzaXplIG9mIDEyOC4gVGhpcyBpcyBhIG1vcmUgcmVhc29uYWJsZSBudW1iZXJcbiAgICAgb2YgYmlucyB0byBoYXZlLiAqKVxuICBsZXQgaGFzaHRibF9zaXplID0gMTBcblxuICAoKiogW3NldHVwX2dlbmVyYXRvcl0gc2V0cyB1cCB0aGUgc3RhZ2VkIGNvbnZlcnNpb24uXG5cbiAgICAgIFtoYXNoYWJsZV0gaXMgdXNlZCB0byBidWlsZCBhIHRhYmxlIG9mIG5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMuIFdlIGRyb3AgdW5uZWNlc3NhcnlcbiAgICAgIGRlcGVuZGVuY2llcyB0byBhbGxvdyB0aGVtIHRvIGJlIGNvbGxlY3RlZC5cblxuICAgICAgW2NvbXB1dGVfb3V0cHV0IGtleV0gcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIG91dHB1dCBub2RlIGNvcnJlc3BvbmRpbmcgdG8gW2tleV0uXG4gICAgICBbY29tcHV0ZV9vdXRwdXRdIGlzIGNsb3NlZCBvdmVyIHRoZSBtdXRhYmxlIHN0YXRlIGRldGVybWluaW5nIHRoZSBjdXJyZW50IHZhbHVlIG9mXG4gICAgICB0aGUgc2VsZWN0b3IncyBpbnB1dC5cblxuICAgICAgW21ha2VfaW5wdXRfbm9kZV0gbWFrZXMgc3VyZSB0aGF0IHdoZW4gdGhlIG11dGFibGUgc3RhdGUgaW5zaWRlIFtjb21wdXRlX291dHB1dF0gaXNcbiAgICAgIHVwZGF0ZWQsIHRoZSBjb3JyZXNwb25kaW5nIG5vZGVzIGluIHRoZSBbbmVjZXNzYXJ5X2RlcGVuZGVuY2llc10gdGFibGUgYXJlIG1hZGVcbiAgICAgIHN0YWxlLiAgKilcbiAgbGV0IHNldHVwX2dlbmVyYXRvclxuICAgICAgICAoaGFzaGFibGUgOiAnYSBIYXNodGJsX2ludGYuSGFzaGFibGUudClcbiAgICAgICAgfihjb21wdXRlX291dHB1dCA6ICdhIC0+ICdiKVxuICAgICAgICB+KG1ha2VfaW5wdXRfbm9kZSA6IG1ha2Vfa2V5X3N0YWxlOignYSAtPiB1bml0KSAtPiB1bml0IEluY3IudClcbiAgICA6ICgnYSAtPiAnYiBJbmNyLnQpIFN0YWdlZC50XG4gICAgPVxuICAgIGxldCBuZWNlc3NhcnlfZGVwZW5kZW5jaWVzID0gSGFzaHRibC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfnNpemU6aGFzaHRibF9zaXplIH5oYXNoYWJsZSAoKSBpblxuICAgIGxldCAoaW5wdXRfbm9kZSA6IHVuaXQgSW5jci50KSA9XG4gICAgICBsZXQgbWFrZV9rZXlfc3RhbGUga2V5ID1cbiAgICAgICAgSGFzaHRibC5maW5kIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMga2V5XG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpbXVxuICAgICAgICB8PiBMaXN0Lml0ZXIgfmY6RS5Ob2RlLm1ha2Vfc3RhbGVcbiAgICAgIGluXG4gICAgICBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlXG4gICAgaW5cbiAgICAoKiBTZXQgdGhlIGN1dG9mZiBzbyB0aGF0IHdlIG5ldmVyIHBhc3MgYXV0b21hdGljYWxseSBmcm9tIHRoZSB1cGRhdGUgdG8gdGhlIG5vZGVzLiBXZVxuICAgICAgIHdhbnQgZXZlcnl0aGluZyB0byBnbyB0aHJvdWdoIFttYWtlX2tleV9zdGFsZV0gKilcbiAgICBJbmNyLnNldF9jdXRvZmYgaW5wdXRfbm9kZSBJbmNyLkN1dG9mZi5hbHdheXM7XG4gICAgc3RhZ2UgKGZ1biBrZXkgLT5cbiAgICAgIGxldCBpbnB1dF9kZXAgPSBFLkRlcGVuZGVuY3kuY3JlYXRlIGlucHV0X25vZGUgaW5cbiAgICAgIGxldCByZWMgb3V0cHV0X25vZGUgPSBsYXp5IChcbiAgICAgICAgRS5Ob2RlLmNyZWF0ZVxuICAgICAgICAgIChmdW4gKCkgLT4gY29tcHV0ZV9vdXRwdXQga2V5KVxuICAgICAgICAgIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZTooZnVuIH5pc19ub3dfb2JzZXJ2YWJsZSAtPlxuICAgICAgICAgICAgaWYgaXNfbm93X29ic2VydmFibGUgdGhlblxuICAgICAgICAgICAgICBIYXNodGJsLmFkZF9tdWx0aSBuZWNlc3NhcnlfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGE6KGZvcmNlIG91dHB1dF9ub2RlKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBIYXNodGJsLmNoYW5nZSBuZWNlc3NhcnlfZGVwZW5kZW5jaWVzIGtleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBMaXN0LmZpbHRlciBsIH5mOihGbi5ub24gKHBoeXNfZXF1YWwgKGZvcmNlIG91dHB1dF9ub2RlKSkpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCBsJyAtPiBTb21lIGwnXG4gICAgICAgICAgICAgICkpKVxuICAgICAgaW5cbiAgICAgIGxldCBvdXRwdXRfbm9kZSA9IGZvcmNlIG91dHB1dF9ub2RlIGluXG4gICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgb3V0cHV0X25vZGUgaW5wdXRfZGVwO1xuICAgICAgRS5Ob2RlLndhdGNoIG91dHB1dF9ub2RlXG4gICAgKVxuXG4gICgqKiBUaGlzIGNyZWF0ZXMgYSB1bml0IGluY3JlbWVudGFsIHRoYXQgZmlyZXMgd2hlbmV2ZXIgdGhlIGlucHV0IGluY3JlbWVudGFsXG4gICAgICBmaXJlcy4gV2hlbiB0aGF0IG9jY3VycywgaXQgdXBkYXRlcyBbc2VsZWN0ZWRdIHRvIG1hdGNoIHRoZSBjdXJyZW50IHZhbHVlIG9mXG4gICAgICBbaW5wdXRdLCBhbmQgY2FsbHMgW21ha2Vfa2V5X3N0YWxlXSBmb3IgYm90aCB0aGUgb2xkIGFuZCBuZXcgdmFsdWUgb2YgdGhlXG4gICAgICBpbmNyZW1lbnRhbC4gKilcbiAgbGV0IHVwZGF0ZV9vbmUgfmlucHV0IH5zZWxlY3RlZCB+bWFrZV9zdGFsZSA9XG4gICAgSW5jci5tYXAgaW5wdXQgfmY6KGZ1biBpbnAgLT5cbiAgICAgIE9wdGlvbi5pdGVyIGlucCB+ZjptYWtlX3N0YWxlO1xuICAgICAgT3B0aW9uLml0ZXIgIXNlbGVjdGVkIH5mOm1ha2Vfc3RhbGU7XG4gICAgICBzZWxlY3RlZCA6PSBpbnBcbiAgICApXG5cbiAgbGV0IHNlbGVjdF9vbmUnXG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIChpbnB1dCA6IGEgb3B0aW9uIEluY3IudClcbiAgICA9XG4gICAgbGV0IHNlbGVjdGVkID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgY29tcHV0ZV9vdXRwdXQga2V5ID1cbiAgICAgIG1hdGNoICFzZWxlY3RlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSBrZXknIC0+IEguY29tcGFyZSBrZXkga2V5JyA9IDBcbiAgICBpblxuICAgIGxldCBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlID1cbiAgICAgIHVwZGF0ZV9vbmUgfmlucHV0IH5zZWxlY3RlZCB+bWFrZV9zdGFsZTptYWtlX2tleV9zdGFsZVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIEguaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X29uZSBoIGlucHV0ID1cbiAgICBzZWxlY3Rfb25lJyBoIChJbmNyLm1hcCB+ZjpPcHRpb24uc29tZSBpbnB1dClcblxuICBsZXQgc2VsZWN0X29uZV92YWx1ZSdcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgfmRlZmF1bHRcbiAgICAgICAgaW5wdXRcbiAgICA9XG4gICAgbGV0IHNlbGVjdGVkID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgY29tcHV0ZV9vdXRwdXQga2V5ID1cbiAgICAgIG1hdGNoICFzZWxlY3RlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGVmYXVsdFxuICAgICAgfCBTb21lIChrZXknLCBkYXRhKSAtPiBpZiBILmNvbXBhcmUga2V5IGtleScgPSAwIHRoZW4gZGF0YSBlbHNlIGRlZmF1bHRcbiAgICBpblxuICAgIGxldCBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlID1cbiAgICAgIHVwZGF0ZV9vbmUgfnNlbGVjdGVkIH5pbnB1dCB+bWFrZV9zdGFsZTooZnVuIChrZXksIF8pIC0+IG1ha2Vfa2V5X3N0YWxlIGtleSlcbiAgICBpblxuICAgIHNldHVwX2dlbmVyYXRvciBILmhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5cbiAgbGV0IHNlbGVjdF9vbmVfdmFsdWUgaCB+ZGVmYXVsdCBpbnB1dCA9XG4gICAgc2VsZWN0X29uZV92YWx1ZScgaCB+ZGVmYXVsdCAoSW5jci5tYXAgfmY6T3B0aW9uLnNvbWUgaW5wdXQpXG5cbiAgbGV0IHNlbGVjdF9tYW55X3ZhbHVlc1xuICAgICAgICAodHlwZSBhKVxuICAgICAgICAobW9kdWxlIEggOiBIYXNoYWJsZS5Db21tb24gd2l0aCB0eXBlIHQgPSBhKVxuICAgICAgICB+ZGVmYXVsdFxuICAgICAgICBpbnB1dFxuICAgID1cbiAgICBsZXQgaGFzaGFibGUgPSBILmhhc2hhYmxlIGluXG4gICAgbGV0IHNlbGVjdGVkID0gSGFzaHRibC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfnNpemU6aGFzaHRibF9zaXplIH5oYXNoYWJsZSAoKSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgSGFzaHRibC5maW5kIHNlbGVjdGVkIGtleSB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHRcbiAgICBpblxuICAgIGxldCBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlID1cbiAgICAgIEluY3IubWFwIGlucHV0IH5mOihmdW4gaW5wIC0+XG4gICAgICAgIEhhc2h0YmwuaXRlcl9rZXlzIHNlbGVjdGVkIH5mOm1ha2Vfa2V5X3N0YWxlO1xuICAgICAgICBIYXNodGJsLmNsZWFyIHNlbGVjdGVkO1xuICAgICAgICBMaXN0Lml0ZXIgaW5wIH5mOihmdW4gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICBtYWtlX2tleV9zdGFsZSBrZXk7XG4gICAgICAgICAgSGFzaHRibC5zZXQgc2VsZWN0ZWQgfmtleSB+ZGF0YVxuICAgICAgICApKVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIGhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5cbiAgbGV0IHNlbGVjdF9tYW55XG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIGlucHV0XG4gICAgPVxuICAgIGxldCBoYXNoYWJsZSA9IEguaGFzaGFibGUgaW5cbiAgICBsZXQgc2VsZWN0ZWQgPSBIYXNoX3NldC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfnNpemU6aGFzaHRibF9zaXplIH5oYXNoYWJsZSAoKSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPSBIYXNoX3NldC5tZW0gc2VsZWN0ZWQga2V5IGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgSW5jci5tYXAgaW5wdXQgfmY6KGZ1biBpbnAgLT5cbiAgICAgICAgbGV0IG9sZF9zZXQgPSBIYXNoX3NldC5jb3B5IHNlbGVjdGVkIGluXG4gICAgICAgIEhhc2hfc2V0LmNsZWFyIHNlbGVjdGVkO1xuXG4gICAgICAgIExpc3QuaXRlciBpbnAgfmY6KGZ1biBrZXkgLT5cbiAgICAgICAgICBpZiBub3QgKEhhc2hfc2V0Lm1lbSBvbGRfc2V0IGtleSkgdGhlblxuICAgICAgICAgICAgbWFrZV9rZXlfc3RhbGUga2V5O1xuICAgICAgICAgIEhhc2hfc2V0LmFkZCBzZWxlY3RlZCBrZXlcbiAgICAgICAgKTtcblxuICAgICAgICBIYXNoX3NldC5pdGVyIG9sZF9zZXQgfmY6KGZ1biBrZXkgLT5cbiAgICAgICAgICBpZiBub3QgKEhhc2hfc2V0Lm1lbSBzZWxlY3RlZCBrZXkpIHRoZW5cbiAgICAgICAgICAgIG1ha2Vfa2V5X3N0YWxlIGtleTtcbiAgICAgICAgKSlcbiAgICBpblxuICAgIHNldHVwX2dlbmVyYXRvciBoYXNoYWJsZSB+Y29tcHV0ZV9vdXRwdXQgfm1ha2VfaW5wdXRfbm9kZVxuZW5kXG5cbiIsImV4dGVybmFsIGpzX3Byb2ZfbWFyayA6IHN0cmluZyAtPiB1bml0ID0gXCJqc19wcm9mX21hcmtcIlxuZXh0ZXJuYWwganNfcHJvZl9tZWFzdXJlIDogc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gdW5pdCA9IFwianNfcHJvZl9tZWFzdXJlXCJcbmV4dGVybmFsIGpzX3Byb2ZfY2xlYXJfbWFya3MgOiB1bml0IC0+IHVuaXQgPSBcImpzX3Byb2ZfY2xlYXJfbWFya3NcIlxuZXh0ZXJuYWwganNfcHJvZl9jbGVhcl9tZWFzdXJlcyA6IHVuaXQgLT4gdW5pdCA9IFwianNfcHJvZl9jbGVhcl9tZWFzdXJlc1wiXG5cbmxldCBtYXJrIG5hbWUgPSBqc19wcm9mX21hcmsgbmFtZVxubGV0IG1lYXN1cmUgfm5hbWUgfnN0YXJ0IH5lbmRfID0ganNfcHJvZl9tZWFzdXJlIG5hbWUgc3RhcnQgZW5kX1xuXG5sZXQgcmVjb3JkIG5hbWUgfmYgPVxuICBsZXQgYmVmb3JlX25hbWUgPSBuYW1lIF4gXCJfYmVmb3JlXCIgaW5cbiAgbGV0IGFmdGVyX25hbWUgPSBuYW1lIF4gXCJfYWZ0ZXJcIiBpblxuICBsZXQgKCkgPSBtYXJrIGJlZm9yZV9uYW1lIGluXG4gIGxldCByZXMgPSBmICgpIGluXG4gIGxldCAoKSA9IG1hcmsgYWZ0ZXJfbmFtZSBpblxuICBtZWFzdXJlIH5uYW1lIH5zdGFydDpiZWZvcmVfbmFtZSB+ZW5kXzphZnRlcl9uYW1lO1xuICByZXNcbjs7XG5cbmxldCBjbGVhcl9tYXJrcyAoKSA9IGpzX3Byb2ZfY2xlYXJfbWFya3MgKClcbmxldCBjbGVhcl9tZWFzdXJlcyAoKSA9IGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXMgKClcblxubW9kdWxlIE1hbnVhbCA9IHN0cnVjdFxuICBsZXQgbWFyayA9IG1hcmtcbiAgbGV0IG1lYXN1cmUgPSBtZWFzdXJlXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBWaXJ0dWFsX2RvbVxuXG50eXBlIHQgPVxuICB7IGZpbGVuYW1lIDogc3RyaW5nXG4gIDsgbWltZXR5cGUgOiBzdHJpbmdcbiAgOyBjb250ZW50cyA6IHN0cmluZ1xuICB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBjcmVhdGUgPSBGaWVsZHMuY3JlYXRlXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHNwcmludGYgXCI8ZG93bmxvYWRlcjogJXM+XCIgdC5maWxlbmFtZSlcblxubGV0IHRyaWdnZXIgeyBmaWxlbmFtZTsgbWltZXR5cGU7IGNvbnRlbnRzIH0gPVxuICBsZXQgb3BlbiBKc19vZl9vY2FtbCBpblxuICBpZiBQcHhfaW5saW5lX3Rlc3RfbGliLmFtX3J1bm5pbmdcbiAgdGhlblxuICAgIHByaW50X3NcbiAgICAgIFslbWVzc2FnZSBcIkRvd25sb2FkIHRyaWdnZXJlZFwiIChmaWxlbmFtZSA6IHN0cmluZykgKG1pbWV0eXBlIDogc3RyaW5nKSBjb250ZW50c11cbiAgZWxzZSAoXG4gICAgKCogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE5MzI4ODkxLzU1ODU5MiAqKVxuICAgIGxldCBhID0gRG9tX2h0bWwuY3JlYXRlQSBEb21faHRtbC5kb2N1bWVudCBpblxuICAgIGxldCBjb250ZW50c19iaWdzdHIgPVxuICAgICAgVHlwZWRfYXJyYXkuQmlnc3RyaW5nLnRvX2FycmF5QnVmZmVyIChCaWdzdHJpbmcub2Zfc3RyaW5nIGNvbnRlbnRzKVxuICAgIGluXG4gICAgbGV0IGJsb2IgPVxuICAgICAgKCogRG9uJ3QgdXNlIFtibG9iX2Zyb21fc3RyaW5nXS4gVGhhdCBoYXMgYW4gYXR0cmFjdGl2ZSB0eXBlIGJ1dCB3b3JrcyBieSBmaXJzdFxuICAgICAgICAgY29udmVydGluZyBvdXIgT0NhbWwgc3RyaW5nIHRvIGEgSmF2YXNjcmlwdCBzdHJpbmcsIHdoaWNoIGNvbnZlcnRzIHRvXG4gICAgICAgICBVVEYtMTYuIElmIHRoZSBzdHJpbmcgY29udGFpbnMgcmFuZG9tIGJpbmFyeSBkYXRhIHRoYXQgd2lsbCBkaXN0b3J0IGl0LiAqKVxuICAgICAgRmlsZS5ibG9iX2Zyb21fYW55IFsgYGFycmF5QnVmZmVyIGNvbnRlbnRzX2JpZ3N0ciBdIH5jb250ZW50VHlwZTptaW1ldHlwZVxuICAgIGluXG4gICAgbGV0IHVybCA9IERvbV9odG1sLndpbmRvdyMjLl9VUkwjI2NyZWF0ZU9iamVjdFVSTCBibG9iIGluXG4gICAgYSMjc2V0QXR0cmlidXRlIChKcy5zdHJpbmcgXCJocmVmXCIpIHVybDtcbiAgICBhIyNzZXRBdHRyaWJ1dGUgKEpzLnN0cmluZyBcImRvd25sb2FkXCIpIChKcy5zdHJpbmcgZmlsZW5hbWUpO1xuICAgIGEjI2NsaWNrO1xuICAgIERvbV9odG1sLndpbmRvdyMjLl9VUkwjI3Jldm9rZU9iamVjdFVSTCB1cmwpXG47O1xuXG5tb2R1bGUgQnV0dG9uID0gc3RydWN0XG4gIGxldCBjcmVhdGVcbiAgICAgICAgPyhlbmFibGVkID0gdHJ1ZSlcbiAgICAgICAgPyhvbl9jbGljayA9IGZ1biBfIC0+IFZkb20uRWZmZWN0Lklnbm9yZSlcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICB+Z2V0X2Rvd25sb2FkXG4gICAgICAgIH5idXR0b25fdGV4dFxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgb3BlbiBWZG9tIGluXG4gICAgbGV0IHRyaWdnZXJfY3N2X2Rvd25sb2FkIGV2ID1cbiAgICAgIHRyaWdnZXIgKGdldF9kb3dubG9hZCAoKSk7XG4gICAgICBvbl9jbGljayBldlxuICAgIGluXG4gICAgbGV0IGVuYWJsZWRfZGlzYWJsZWQgPVxuICAgICAgaWYgZW5hYmxlZCB0aGVuIFtdIGVsc2UgWyBBdHRyLmRpc2FibGVkOyBBdHRyLnN0eWxlIChDc3NfZ2VuLmNvbG9yIChgTmFtZSBcImdyZXlcIikpIF1cbiAgICBpblxuICAgIGxldCBhdHRycyA9XG4gICAgICBbIGV4dHJhX2F0dHJzOyBlbmFibGVkX2Rpc2FibGVkOyBbIEF0dHIub25fY2xpY2sgdHJpZ2dlcl9jc3ZfZG93bmxvYWQgXSBdXG4gICAgICB8PiBMaXN0LmNvbmNhdFxuICAgIGluXG4gICAgTm9kZS5idXR0b24gfmF0dHJzOlsgQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgXSBbIE5vZGUudGV4dCBidXR0b25fdGV4dCBdXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm1vZHVsZSBJbmNyID0gSW5jcmVtZW50YWwuTWFrZSAoKVxuXG4oKiBUaGlzIGlzIHRoZSBkZWZhdWx0IGNsb2NrIGZvciBydW5uaW5nIGNsaWVudHMsIGJ1dCBib25zYWkgdGVzdHMgaGF2ZSB0aGVpclxuICAgb3duIHNlcGFyYXRlIGNsb2NrcyAqKVxubGV0IGNsb2NrID0gSW5jci5DbG9jay5jcmVhdGUgfnN0YXJ0OihUaW1lX25zLm5vdyAoKSkgKClcblxuaW5jbHVkZSBJbmNyXG5tb2R1bGUgTWFwID0gSW5jcl9tYXAuTWFrZSAoSW5jcilcbm1vZHVsZSBTZWxlY3QgPSBJbmNyX3NlbGVjdC5NYWtlIChJbmNyKVxuIiwib3BlbiBWaXJ0dWFsX2RvbVxub3BlbiBDb3JlXG5cbnR5cGUgKCdhY3Rpb24sICdtb2RlbCwgJ3N0YXRlLCAnZXh0cmEpIHdpdGhfZXh0cmEgPVxuICB7IGFwcGx5X2FjdGlvbiA6ICdhY3Rpb24gLT4gJ3N0YXRlIC0+IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiAnbW9kZWxcbiAgOyB1cGRhdGVfdmlzaWJpbGl0eSA6IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiAnbW9kZWxcbiAgOyB2aWV3IDogVmRvbS5Ob2RlLnRcbiAgOyBvbl9kaXNwbGF5IDogJ3N0YXRlIC0+IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiB1bml0XG4gIDsgZXh0cmEgOiAnZXh0cmFcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG50eXBlICgnYWN0aW9uLCAnc3RhdGUsICdtb2RlbCkgdCA9ICgnYWN0aW9uLCAnc3RhdGUsICdtb2RlbCwgdW5pdCkgd2l0aF9leHRyYVxuXG5sZXQgY3JlYXRlX3dpdGhfZXh0cmEgP2FwcGx5X2FjdGlvbiA/dXBkYXRlX3Zpc2liaWxpdHkgP29uX2Rpc3BsYXkgfmV4dHJhIG1vZGVsIHZpZXcgPVxuICBsZXQgYXBwbHlfYWN0aW9uID1cbiAgICBPcHRpb24udmFsdWUgYXBwbHlfYWN0aW9uIH5kZWZhdWx0OihmdW4gXyBfIH5zY2hlZHVsZV9hY3Rpb246XyAtPiBtb2RlbClcbiAgaW5cbiAgbGV0IHVwZGF0ZV92aXNpYmlsaXR5ID1cbiAgICBPcHRpb24udmFsdWUgdXBkYXRlX3Zpc2liaWxpdHkgfmRlZmF1bHQ6KGZ1biB+c2NoZWR1bGVfYWN0aW9uOl8gLT4gbW9kZWwpXG4gIGluXG4gIGxldCBvbl9kaXNwbGF5ID0gT3B0aW9uLnZhbHVlIG9uX2Rpc3BsYXkgfmRlZmF1bHQ6KGZ1biBfIH5zY2hlZHVsZV9hY3Rpb246XyAtPiAoKSkgaW5cbiAgeyBhcHBseV9hY3Rpb247IHVwZGF0ZV92aXNpYmlsaXR5OyBvbl9kaXNwbGF5OyBleHRyYTsgdmlldyB9XG47O1xuXG5sZXQgY3JlYXRlID0gY3JlYXRlX3dpdGhfZXh0cmEgfmV4dHJhOigpXG4iLCJvcGVuISBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG4oKiogQ29tbW9uIG1vZHVsZSB0eXBlcyAqKVxubW9kdWxlIHR5cGUgTW9kZWwgPSBzaWdcbiAgdHlwZSB0XG5cblxuICAoKiogQSBmdW5jdGlvbiBmb3IgdGVzdGluZyB3aGV0aGVyIHRoZSBtb2RlbCBoYXMgY2hhbmdlZCBlbm91Z2ggdG8gcmVxdWlyZSByZWZpcmluZ1xuICAgICAgdGhlIGluY3JlbWVudGFsIGdyYXBoLlxuXG4gICAgICBJdCdzIGJlc3QgaWYgdGhlIHZhbHVlcyBpbiB0aGUgbW9kZWwgc3VwcG9ydCBhIHNlbWFudGljYWxseSByZWFzb25hYmxlIGN1dG9mZlxuICAgICAgZnVuY3Rpb24gd2hpY2ggbGV0cyB5b3UgYXZvaWQgaW5maW5pdGUgcmVjb21wdXRhdGlvbiBsb29wcyB0aGF0IGNhbiBvdGhlcndpc2UgYmVcbiAgICAgIHRyaWdnZXJlZCBieSB0aGUgdmlzaWJpbGl0eSBjaGVja3MuIEZvciB0aGlzIHJlYXNvbiwgaXQncyB0eXBpY2FsbHkgYSBnb29kIGlkZWEgdG9cbiAgICAgIGF2b2lkIGhhdmluZyBzaW1wbGUgY2xvc3VyZXMgc3RvcmVkIGluIHRoZSBtb2RlbC5cblxuICAgICAgVGhhdCBzYWlkLCBpdCBkb2VzIHdvcmsgaWYgeW91IHB1dCBwaHlzX2VxdWFsIGluIGZvciB0aGUgY3V0b2ZmLiAqKVxuICB2YWwgY3V0b2ZmIDogdCAtPiB0IC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY3Rpb24gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgU3RhdGUgPSBzaWdcbiAgKCoqIFJlcHJlc2VudHMgdGhlIGltcGVyYXRpdmUgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIGFuIGFwcGxpY2F0aW9uLCB0eXBpY2FsbHkgdXNlZCBmb3JcbiAgICAgIGhvdXNpbmcgdGhpbmdzIGxpa2UgY29tbXVuaWNhdGlvbiBBc3luYy1SUEMgY29ubmVjdGlvbnMuICopXG4gIHR5cGUgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIE1vZGVsIDogTW9kZWxcbiAgbW9kdWxlIEFjdGlvbiA6IEFjdGlvblxuICBtb2R1bGUgU3RhdGUgOiBTdGF0ZVxuXG4gICgqKiBbb25fc3RhcnR1cF0gaXMgY2FsbGVkIG9uY2UsIHJpZ2h0IGFmdGVyIHRoZSBpbml0aWFsIERPTSBpcyBzZXQgdG8gdGhlIHZpZXcgdGhhdFxuICAgICAgY29ycmVzcG9uZHMgdG8gdGhlIGluaXRpYWwgc3RhdGUuIFRoaXMgaXMgdXNlZnVsIGZvciBkb2luZyB0aGluZ3MgbGlrZSBzdGFydGluZyB1cFxuICAgICAgYXN5bmMgcHJvY2Vzc2VzLiAgTm90ZSB0aGF0IHRoaXMgcGFydCBvZiB0aGUgY29tcHV0YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBhbnlcbiAgICAgIGluY3JlbWVudGFsaXR5LCBzaW5jZSBpdCdzIG9ubHkgcnVuIG9uY2UuICopXG4gIHZhbCBvbl9zdGFydHVwIDogc2NoZWR1bGVfYWN0aW9uOihBY3Rpb24udCAtPiB1bml0KSAtPiBNb2RlbC50IC0+IFN0YXRlLnQgRGVmZXJyZWQudFxuXG4gICgqKiBbY3JlYXRlXSBpcyBhIGZ1bmN0aW9uIHRoYXQgaW5jcmVtZW50YWxseSBjb25zdHJ1Y3RzIGEgeyFDb21wb25lbnR9LiBOb3RlIHRoYXQgYVxuICAgICAgW0NvbXBvbmVudF0gc3VwcG9ydHMgZnVuY3Rpb25zIGxpa2UgW2FwcGx5X2FjdGlvbl0sIHdoaWNoIHJldHVybiBhIG5ldyBbTW9kZWwudF0sXG4gICAgICB3aXRob3V0IHRha2luZyBhIG1vZGVsIGFzIGFuIGV4cGxpY2l0IGlucHV0LiAgVGhlIGludGVudCBpcyBmb3IgW2FwcGx5X2FjdGlvbl0gdG9cbiAgICAgIGhhdmUgYWNjZXNzIHRvIHRoZSBjdXJyZW50IG1vZGVsIHZpYSBpdHMgY29uc3RydWN0aW9uXG5cbiAgICAgIEhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0aGlzIG1pZ2h0IGxvb2sgaW4gcHJhY3RpY2UuXG5cbiAgICAgIHtbXG4gICAgICAgIG1vZHVsZSBNb2RlbCA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHsgY291bnRlciA6IGludCB9IFtAQGRlcml2aW5nIGZpZWxkcywgY29tcGFyZV1cblxuICAgICAgICAgIGxldCBjdXRvZmYgdDEgdDIgPSBjb21wYXJlIHQxIHQyID0gMFxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSB1bml0XG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBJbmNyZW1lbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGxldCBzaG91bGRfbG9nIF8gPSBmYWxzZVxuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgaW5pdGlhbF9tb2RlbCA9IHsgTW9kZWwuY291bnRlciA9IDAgfVxuXG4gICAgICAgIGxldCBvbl9zdGFydHVwIH5zY2hlZHVsZV9hY3Rpb25zIF9tb2RlbCA9XG4gICAgICAgICAgZXZlcnkgKFRpbWVfbnMuU3Bhbi5vZl9zZWMgMS4pIChmdW4gKCkgLT5cbiAgICAgICAgICAgIHNjaGVkdWxlX2FjdGlvbnMgWyBBY3Rpb24uSW5jcmVtZW50IF0pO1xuICAgICAgICAgIERlZmVycmVkLnVuaXRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWw6XyB+aW5qZWN0Ol8gPVxuICAgICAgICAgIGxldCBvcGVuIEluY3IuTGV0X3N5bnRheCBpblxuICAgICAgICAgIGxldCVtYXAgYXBwbHlfYWN0aW9uID1cbiAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9IG1vZGVsID4+fCBNb2RlbC5jb3VudGVyIGluXG4gICAgICAgICAgICBmdW4gKEluY3JlbWVudCA6IEFjdGlvbi50KSBfIH5zY2hlZHVsZV9hY3Rpb25zOl8gLT5cbiAgICAgICAgICAgICAgeyBNb2RlbC5jb3VudGVyID0gY291bnRlciArIDEgfVxuICAgICAgICAgIGFuZCB2aWV3ID1cbiAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9XG4gICAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9IG1vZGVsID4+fCBNb2RlbC5jb3VudGVyIGluXG4gICAgICAgICAgICAgIFZkb20uTm9kZS5kaXYgW10gWyBWZG9tLk5vZGUudGV4dCAoSW50LnRvX3N0cmluZyBjb3VudGVyKSBdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgVmRvbS5Ob2RlLmJvZHkgW10gWyBjb3VudGVyIF1cbiAgICAgICAgICBhbmQgbW9kZWwgPSBtb2RlbCBpblxuICAgICAgICAgICgqIE5vdGUgdGhhdCB3ZSBkb24ndCBpbmNsdWRlIFtvbl9kaXNwbGF5XSBvciBbdXBkYXRlX3Zpc2liaWxpdHldLCBzaW5jZVxuICAgICAgICAgICAgIHRoZXNlIGFyZSBvcHRpb25hbCBhcmd1bWVudHMgKilcbiAgICAgICAgICBDb21wb25lbnQuY3JlYXRlIH5hcHBseV9hY3Rpb24gbW9kZWwgdmlld1xuICAgICAgICA7OyBdfVxuXG4gICAgICBUaGUgZnVsbCBjb2RlIGZvciB0aGlzIGV4YW1wbGUgY2FuIGJlIGZvdW5kIGluIGV4YW1wbGVzL2NvdW50ZXIuXG4gICopXG4gIHZhbCBjcmVhdGVcbiAgICA6ICBNb2RlbC50IEluY3IudFxuICAgIC0+IG9sZF9tb2RlbDpNb2RlbC50IEluY3IudFxuICAgICgqKiBbb2xkX21vZGVsXSBjb250YWlucyB0aGUgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUgbW9kZWwgKilcbiAgICAtPiBpbmplY3Q6KEFjdGlvbi50IC0+IHVuaXQgVmRvbS5FZmZlY3QudClcbiAgICAoKiogW2luamVjdF0gZ2l2ZXMgeW91IHRoZSBhYmlsaXR5IHRvIGNyZWF0ZSBldmVudCBoYW5kbGVycyBpbiB0aGUgdmlydHVhbCBET00uIEluXG4gICAgICAgIHlvdXIgZXZlbnQgaGFuZGxlciwgY2FsbCB0aGlzIGZ1bmN0aW9uIG9uIHRoZSBhY3Rpb24geW91IHdvdWxkIGxpa2UgdG9cbiAgICAgICAgc2NoZWR1bGUuIFZpcnR1YWwgRE9NIHdpbGwgYXV0b21hdGljYWxseSBkZWxlZ2F0ZSB0aGF0IGFjdGlvbiBiYWNrIHRvIHRoZVxuICAgICAgICBbU3RhcnRfYXBwXSBtYWluIGxvb3AuICopXG4gICAgLT4gKEFjdGlvbi50LCBNb2RlbC50LCBTdGF0ZS50KSBDb21wb25lbnQudCBJbmNyLnRcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICB0eXBlICgnc3RhdGUsICdtb2RlbCwgJ2FjdGlvbikgc25hcHNob3QgPVxuICAgIHsgdmlldyA6IFZkb20uTm9kZS50XG4gICAgOyBhcHBseV9hY3Rpb24gOlxuICAgICAgICAnc3RhdGUgLT4gc2NoZWR1bGVfZXZlbnQ6KHVuaXQgVWlfZWZmZWN0LnQgLT4gdW5pdCkgLT4gJ21vZGVsIC0+ICdhY3Rpb24gLT4gJ21vZGVsXG4gICAgOyB1cGRhdGVfdmlzaWJpbGl0eSA6ICdtb2RlbCAtPiBzY2hlZHVsZV9ldmVudDoodW5pdCBVaV9lZmZlY3QudCAtPiB1bml0KSAtPiAnbW9kZWxcbiAgICA7IG9uX2Rpc3BsYXkgOiAnc3RhdGUgLT4gc2NoZWR1bGVfZXZlbnQ6KHVuaXQgVWlfZWZmZWN0LnQgLT4gdW5pdCkgLT4gdW5pdFxuICAgIH1cblxuICBtb2R1bGUgdHlwZSBTX2Zvcl9ib25zYWkgPSBzaWdcbiAgICBtb2R1bGUgTW9kZWwgOiBNb2RlbFxuICAgIG1vZHVsZSBBY3Rpb24gOiBBY3Rpb25cbiAgICBtb2R1bGUgU3RhdGUgOiBTdGF0ZVxuXG4gICAgdmFsIGFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIDogQWN0aW9uLnQgLT4gYm9vbFxuICAgIHZhbCBvbl9zdGFydHVwIDogc2NoZWR1bGVfYWN0aW9uOihBY3Rpb24udCAtPiB1bml0KSAtPiBNb2RlbC50IC0+IFN0YXRlLnQgRGVmZXJyZWQudFxuXG4gICAgdmFsIGNyZWF0ZVxuICAgICAgOiAgTW9kZWwudCBJbmNyLnRcbiAgICAgIC0+IG9sZF9tb2RlbDpNb2RlbC50IEluY3IudFxuICAgICAgLT4gaW5qZWN0OihBY3Rpb24udCAtPiB1bml0IFZkb20uRWZmZWN0LnQpXG4gICAgICAtPiAoU3RhdGUudCwgTW9kZWwudCwgQWN0aW9uLnQpIHNuYXBzaG90IEluY3IudFxuICBlbmRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgUmVjdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgdG9wIDogJ2FcbiAgICA7IGxlZnQgOiAnYVxuICAgIDsgYm90dG9tIDogJ2FcbiAgICA7IHJpZ2h0IDogJ2FcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gIGxldCBtYXAgdCB+ZiA9XG4gICAgeyB0b3AgPSBmIHQudG9wOyBsZWZ0ID0gZiB0LmxlZnQ7IGJvdHRvbSA9IGYgdC5ib3R0b207IHJpZ2h0ID0gZiB0LnJpZ2h0IH1cbiAgOztcblxuICBsZXQgaW50X2hlaWdodCB0ID0gdC5ib3R0b20gLSB0LnRvcFxuICBsZXQgaW50X3dpZHRoIHQgPSB0LnJpZ2h0IC0gdC5sZWZ0XG4gIGxldCBmbG9hdF9oZWlnaHQgdCA9IHQuYm90dG9tIC0uIHQudG9wXG4gIGxldCBmbG9hdF93aWR0aCB0ID0gdC5yaWdodCAtLiB0LmxlZnRcbmVuZFxuXG5sZXQgcm91bmRfZmxvYXRfcmVjdCA/KHJvdW5kID0gRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuKSA9IFJlY3QubWFwIH5mOnJvdW5kXG5cbnR5cGUgcm93c19vcl9jb2x1bW5zID1cbiAgfCBSb3dzXG4gIHwgQ29sdW1uc1xuW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCB2YXJpYW50cywgY29tcGFyZV1cblxubGV0IGlubmVySGVpZ2h0ICgpID0gRG9tX2h0bWwud2luZG93IyMuaW5uZXJIZWlnaHRcbmxldCBpbm5lcldpZHRoICgpID0gRG9tX2h0bWwud2luZG93IyMuaW5uZXJXaWR0aFxuXG5sZXQgZWxlbWVudF9pc19pbl92aWV3cG9ydCAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA9XG4gIGxldCByZWN0ID0gZWx0IyNnZXRCb3VuZGluZ0NsaWVudFJlY3QgaW5cbiAgRmxvYXQuKCA+PSApIHJlY3QjIy50b3AgMC5cbiAgJiYgRmxvYXQuKCA+PSApIHJlY3QjIy5sZWZ0IDAuXG4gICYmIEZsb2F0LiggPD0gKSByZWN0IyMuYm90dG9tIChGbG9hdC5vZl9pbnQgKGlubmVySGVpZ2h0ICgpKSlcbiAgJiYgRmxvYXQuKCA8PSApIHJlY3QjIy5yaWdodCAoRmxvYXQub2ZfaW50IChpbm5lcldpZHRoICgpKSlcbjs7XG5cbigqKiBTY3JvbGxzIHRvIHRoZSBpdGVtIG1hcmtlZCBhcyBcImtlZXAtaW4tdmlld1wiICopXG5sZXQgc2Nyb2xsID8oaWQgPSBcImtlZXAtaW4tdmlld1wiKSAoKSA9XG4gIG1hdGNoIERvbV9odG1sLmdldEVsZW1lbnRCeUlkX29wdCBpZCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZWx0IC0+IGlmIG5vdCAoZWxlbWVudF9pc19pbl92aWV3cG9ydCBlbHQpIHRoZW4gZWx0IyNzY3JvbGxJbnRvVmlldyBKcy5fdHJ1ZVxuOztcblxuKCogTm90IHlldCBzdXBwb3J0ZWQgb24gQ2hyb21lLiAgTWF5YmUgd2Ugc2hvdWxkIHVzZSBqUXVlcnk/XG4gICB7W1xuICAgICBsZXQgc2Nyb2xsX2ludG9fdmlldyAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA6IHVuaXQgPVxuICAgICAgIGVsdCMjc2Nyb2xsSW50b1ZpZXcgKG9iamVjdCVqc1xuICAgICAgICAgdmFsIGJsb2NrID0gSnMuc3RyaW5nIFwic3RhcnRcIlxuICAgICAgICAgdmFsIGJlaGF2aW9yID0gSnMuc3RyaW5nIFwic21vb3RoXCJcbiAgICAgICBlbmQpXG4gICBdfVxuKilcbigqIFt2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgZWxdIGdldHMgYm91bmRpbmcgcmVjdCBvZiBbZWx0XS4gVGhlIGJvdW5kaW5nIHJlY3QgaXNcbiAgIHJlbGF0aXZlIHRvIHRoZSB2aWV3IHBvcnQgKilcbmxldCB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOiBmbG9hdCBSZWN0LnQgPVxuICBsZXQgcmVjdCA9IGVsdCMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGluXG4gIHsgUmVjdC50b3AgPSByZWN0IyMudG9wXG4gIDsgbGVmdCA9IHJlY3QjIy5sZWZ0XG4gIDsgYm90dG9tID0gcmVjdCMjLmJvdHRvbVxuICA7IHJpZ2h0ID0gcmVjdCMjLnJpZ2h0XG4gIH1cbjs7XG5cbmxldCB2aWV3cG9ydF9yZWN0ICgpID1cbiAgeyBSZWN0LnRvcCA9IDA7IGxlZnQgPSAwOyBib3R0b20gPSBpbm5lckhlaWdodCAoKTsgcmlnaHQgPSBpbm5lcldpZHRoICgpIH1cbjs7XG5cbmxldCBjbGllbnRfcmVjdF9vZl9lbGVtZW50IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIDogZmxvYXQgUmVjdC50ID1cbiAgbGV0IGJvdW5kaW5nX3JlY3QgPSB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgZWx0IGluXG4gIHsgYm91bmRpbmdfcmVjdCB3aXRoXG4gICAgYm90dG9tID0gYm91bmRpbmdfcmVjdC50b3AgKy4gRmxvYXQub2ZfaW50IGVsdCMjLmNsaWVudEhlaWdodFxuICA7IHJpZ2h0ID0gYm91bmRpbmdfcmVjdC5sZWZ0ICsuIEZsb2F0Lm9mX2ludCBlbHQjIy5jbGllbnRXaWR0aFxuICB9XG47O1xuXG5sZXQgY2xpZW50X3JlY3QgKCkgPVxuICB7IFJlY3QudG9wID0gMFxuICA7IGxlZnQgPSAwXG4gIDsgYm90dG9tID0gRG9tX2h0bWwuZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQjIy5jbGllbnRIZWlnaHRcbiAgOyByaWdodCA9IERvbV9odG1sLmRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IyMuY2xpZW50V2lkdGhcbiAgfVxuOztcblxuXG4oKiogU2ltcGxlIHdyYXBwZXIgZm9yIHRoZSBiaW5hcnktc2VhcmNoIGZ1bmN0b3IgICAqKVxubGV0IGJpbmFyeV9zZWFyY2ggKHR5cGUgZWx0KSB+bGVuZ3RoIH5nZXQgfmNvbXBhcmUgbW9kZSB4ID1cbiAgbGV0IG1vZHVsZSBCcyA9XG4gICAgQmluYXJ5X3NlYXJjaGFibGUuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyBlbHQgPSBlbHRcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB1bml0XG5cbiAgICAgIGxldCBnZXQgKCkgbiA9IGdldCBuXG4gICAgICBsZXQgbGVuZ3RoICgpID0gbGVuZ3RoXG4gICAgZW5kKVxuICBpblxuICBCcy5iaW5hcnlfc2VhcmNoICgpIH5jb21wYXJlIG1vZGUgeFxuOztcblxuKCoqIFNlYXJjaGVzIHRocm91Z2ggZWxlbWVudHMgaW5kZXhlZCBmcm9tIFswXSB0byBbbGVuZ3RoIC0gMV0uICopXG5sZXQgZWxlbWVudF9zZWFyY2ggfmxlbmd0aCB+bnRoX2VsZW1lbnRfaWQgfnNlYXJjaF9ieSBtb2RlIGxheW91dCB4ID1cbiAgbGV0IGdldCA9XG4gICAgbGV0IG50aF9lbGVtZW50IG4gPVxuICAgICAgbGV0IGlkID0gbnRoX2VsZW1lbnRfaWQgbiBpblxuICAgICAgbWF0Y2ggRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWRfb3B0IGlkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJFbGVtZW50ICVzIG5vdCBmb3VuZFwiIGlkICgpXG4gICAgICB8IFNvbWUgZWx0IC0+IGVsdFxuICAgIGluXG4gICAgbGV0IGZpcnN0ID0gdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IChudGhfZWxlbWVudCAwKSBpblxuICAgIGxldCBsYXN0ID0gdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IChudGhfZWxlbWVudCAobGVuZ3RoIC0gMSkpIGluXG4gICAgKCogQ29tcHV0ZSB0aGUgbid0aCBlbGVtZW50IGluIGEgbm9ybWFsaXplZCB3YXksIGFzIGlmIHRoZSBpbmRleGluZyBhbHdheXMgZ29lcyBpblxuICAgICAgIGluY3JlYXNpbmcgb3JkZXIgZnJvbSB0b3AgdG9wIGJvdHRvbSAqKVxuICAgIGxldCBudGhfZWxlbWVudF9ub3JtYWxpemVkIG4gPVxuICAgICAgbGV0IGlzX2FzY2VuZGluZyA9XG4gICAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIHwgUm93cyAtPiBGbG9hdC4oIDw9ICkgZmlyc3QudG9wIGxhc3QudG9wXG4gICAgICAgIHwgQ29sdW1ucyAtPiBGbG9hdC4oIDw9ICkgZmlyc3QubGVmdCBsYXN0LmxlZnRcbiAgICAgIGluXG4gICAgICBudGhfZWxlbWVudCAoaWYgaXNfYXNjZW5kaW5nIHRoZW4gbiBlbHNlIGxlbmd0aCAtIG4gLSAxKVxuICAgIGluXG4gICAgZnVuIG4gLT4gc2VhcmNoX2J5ICh2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKG50aF9lbGVtZW50X25vcm1hbGl6ZWQgbikpXG4gIGluXG4gIGJpbmFyeV9zZWFyY2ggfmxlbmd0aCB+Z2V0IH5jb21wYXJlOkZsb2F0LmNvbXBhcmUgbW9kZSB4XG47O1xuXG5sZXQgZmluZF92aXNpYmxlX3JhbmdlIH5sZW5ndGggfm50aF9lbGVtZW50X2lkIGxheW91dCA9XG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCBlbGVtZW50X3NlYXJjaCA9IGVsZW1lbnRfc2VhcmNoIH5sZW5ndGggfm50aF9lbGVtZW50X2lkIGluXG4gICAgbGV0IHZpZXdwb3J0X3JlY3QgPSB2aWV3cG9ydF9yZWN0ICgpIGluXG4gICAgbGV0IGZpcnN0ID1cbiAgICAgIGxldCBzZWFyY2hfYnksIHRhcmdldCA9XG4gICAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIHwgUm93cyAtPiBSZWN0LmJvdHRvbSwgdmlld3BvcnRfcmVjdC50b3BcbiAgICAgICAgfCBDb2x1bW5zIC0+IFJlY3QucmlnaHQsIHZpZXdwb3J0X3JlY3QubGVmdFxuICAgICAgaW5cbiAgICAgIGVsZW1lbnRfc2VhcmNoIH5zZWFyY2hfYnkgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBsYXlvdXQgKEZsb2F0Lm9mX2ludCB0YXJnZXQpXG4gICAgaW5cbiAgICBsZXQgbGFzdCA9XG4gICAgICBsZXQgc2VhcmNoX2J5LCB0YXJnZXQgPVxuICAgICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICB8IFJvd3MgLT4gUmVjdC50b3AsIHZpZXdwb3J0X3JlY3QuYm90dG9tXG4gICAgICAgIHwgQ29sdW1ucyAtPiBSZWN0LmxlZnQsIHZpZXdwb3J0X3JlY3QucmlnaHRcbiAgICAgIGluXG4gICAgICBlbGVtZW50X3NlYXJjaCB+c2VhcmNoX2J5IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBsYXlvdXQgKEZsb2F0Lm9mX2ludCB0YXJnZXQpXG4gICAgaW5cbiAgICAoKiBCb3RoIFtmaXJzdF0gYW5kIFtsYXN0XSBuZWVkIHRvIGJlIFtTb21lXS4gT3RoZXJ3aXNlLCBmb3IgZXhhbXBsZSBpZiB0aGUgd2hvbGVcbiAgICAgICB0YWJsZSBpcyBiZWxvdyB2aWV3IHBvcnQsIHRoZW4gW2ZpcnN0XSB3aWxsIGJlIFtTb21lXSwgW2xhc3RdIHdpbGwgYmUgW05vbmVdICopXG4gICAgT3B0aW9uLmJvdGggZmlyc3QgbGFzdClcbjs7XG5cbmxldCBnZXRfc2Nyb2xsX2NvbnRhaW5lcl9qc19leHByID1cbiAgSnMuVW5zYWZlLnB1cmVfanNfZXhwclxuICAgIHtqc3xcbiAgICAgIChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICB2YXIgZG9jID0gZWxlbWVudC5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50O1xuICAgICAgICB2YXIgd2luID0gZG9jLmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbiAgICAgICAgdmFyIHJlID0gLyhhdXRvfHNjcm9sbCkvO1xuXG4gICAgICAgIGlmIChlbGVtZW50ID09PSBkb2MpIHtcbiAgICAgICAgICByZXR1cm4gZG9jO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGN1ciA9IGVsZW1lbnQucGFyZW50Tm9kZTtcblxuICAgICAgICB3aGlsZSAoY3VyLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICB2YXIgc3R5bGUgPSB3aW4uZ2V0Q29tcHV0ZWRTdHlsZShjdXIpO1xuXG4gICAgICAgICAgaWYgKHJlLnRlc3Qoc3R5bGUub3ZlcmZsb3cgKyBzdHlsZS5vdmVyZmxvd1kgKyBzdHlsZS5vdmVyZmxvd1gpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3VyO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1ciA9IGN1ci5wYXJlbnROb2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRvYztcbiAgICAgIH0pXG4gICAgfGpzfVxuOztcblxubGV0IGdldF9zY3JvbGxfY29udGFpbmVyIChlbCA6ICNEb20ubm9kZSBKcy50KSA6IERvbS5ub2RlIEpzLnQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgZ2V0X3Njcm9sbF9jb250YWluZXJfanNfZXhwciBbfCBKcy5VbnNhZmUuaW5qZWN0IGVsIHxdXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiBWaXJ0dWFsX2RvbVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBQZXJmb3JtYW5jZSA9IEphdmFzY3JpcHRfcHJvZmlsaW5nXG5cbmxldCB0aW1lcl9zdGFydCBzIH5kZWJ1ZyB+cHJvZmlsZSA9XG4gIGlmIHByb2ZpbGUgdGhlbiBQZXJmb3JtYW5jZS5NYW51YWwubWFyayAocyBeIFwiYmVmb3JlXCIpO1xuICBpZiBkZWJ1ZyB0aGVuIEZpcmVidWcuY29uc29sZSMjdGltZSAoSnMuc3RyaW5nIHMpXG47O1xuXG5sZXQgdGltZXJfc3RvcCBzIH5kZWJ1ZyB+cHJvZmlsZSA9XG4gIGlmIHByb2ZpbGVcbiAgdGhlbiAoXG4gICAgbGV0IGJlZm9yZSA9IHMgXiBcImJlZm9yZVwiIGluXG4gICAgbGV0IGFmdGVyID0gcyBeIFwiYWZ0ZXJcIiBpblxuICAgIFBlcmZvcm1hbmNlLk1hbnVhbC5tYXJrIGFmdGVyO1xuICAgIFBlcmZvcm1hbmNlLk1hbnVhbC5tZWFzdXJlIH5uYW1lOnMgfnN0YXJ0OmJlZm9yZSB+ZW5kXzphZnRlcik7XG4gIGlmIGRlYnVnIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyN0aW1lRW5kIChKcy5zdHJpbmcgcylcbjs7XG5cbmxldCBwcmludF9lcnJvcmYgZm10ID0ga3NwcmludGYgKGZ1biBzIC0+IEZpcmVidWcuY29uc29sZSMjZXJyb3IgKEpzLnN0cmluZyBzKSkgZm10XG5cbm1vZHVsZSBSZXF1ZXN0X2lkcyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG5cbiAgdmFsIHNldF9vbmNlX2V4blxuICAgIDogIHRcbiAgICAtPiBhbmltYXRpb25fZnJhbWVfaWQ6RG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWRcbiAgICAtPiBzZXRfdGltZW91dF9pZDpEb21faHRtbC50aW1lb3V0X2lkXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBjYW5jZWxsZWQgOiB0IC0+IGJvb2xcbiAgdmFsIGNhbmNlbCA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgaWRzID1cbiAgICB8IEVtcHR5XG4gICAgfCBDYW5jZWxsZWRcbiAgICB8IElkcyBvZlxuICAgICAgICB7IGFuaW1hdGlvbl9mcmFtZV9pZCA6IERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkXG4gICAgICAgIDsgc2V0X3RpbWVvdXRfaWQgOiBEb21faHRtbC50aW1lb3V0X2lkXG4gICAgICAgIH1cblxuICB0eXBlIHQgPSBpZHMgcmVmXG5cbiAgbGV0IGNyZWF0ZSAoKSA6IHQgPSByZWYgRW1wdHlcblxuICBsZXQgc2V0X29uY2VfZXhuICh0IDogdCkgfmFuaW1hdGlvbl9mcmFtZV9pZCB+c2V0X3RpbWVvdXRfaWQgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IENhbmNlbGxlZCAtPlxuICAgICAgKCogVGhpcyBzaG91bGQgbm90IGhhcHBlbiwgYnV0IGxldCdzIGJlIGRlZmVuc2l2ZS4gKilcbiAgICAgIERvbV9odG1sLndpbmRvdyMjY2FuY2VsQW5pbWF0aW9uRnJhbWUgYW5pbWF0aW9uX2ZyYW1lX2lkO1xuICAgICAgRG9tX2h0bWwud2luZG93IyNjbGVhclRpbWVvdXQgc2V0X3RpbWVvdXRfaWRcbiAgICB8IEVtcHR5IC0+IHQgOj0gSWRzIHsgYW5pbWF0aW9uX2ZyYW1lX2lkOyBzZXRfdGltZW91dF9pZCB9XG4gICAgfCBJZHMgXyAtPiBpbnZhbGlkX2FyZyBcInJlcXVlc3RfaWRzIGFscmVhZHkgc2V0XCJcbiAgOztcblxuICBsZXQgY2FuY2VsbGVkIHggPVxuICAgIG1hdGNoICF4IHdpdGhcbiAgICB8IENhbmNlbGxlZCAtPiB0cnVlXG4gICAgfCBFbXB0eSB8IElkcyBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGNhbmNlbCAodCA6IHQpID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBDYW5jZWxsZWQgLT4gKClcbiAgICB8IEVtcHR5IC0+IHQgOj0gQ2FuY2VsbGVkXG4gICAgfCBJZHMgeyBhbmltYXRpb25fZnJhbWVfaWQ7IHNldF90aW1lb3V0X2lkIH0gLT5cbiAgICAgIERvbV9odG1sLndpbmRvdyMjY2FuY2VsQW5pbWF0aW9uRnJhbWUgYW5pbWF0aW9uX2ZyYW1lX2lkO1xuICAgICAgRG9tX2h0bWwud2luZG93IyNjbGVhclRpbWVvdXQgc2V0X3RpbWVvdXRfaWQ7XG4gICAgICB0IDo9IENhbmNlbGxlZFxuICA7O1xuZW5kXG5cbigqKiBbcmVxdWVzdF9hbmltYXRpb25fZnJhbWVdIG5vdGlmaWVzIHRoZSBicm93c2VyIHRoYXQgeW91IHdvdWxkIGxpa2UgdG8gZG8gc29tZVxuICAgIGNvbXB1dGF0aW9uIGJlZm9yZSB0aGUgbmV4dCByZXBhaW50LiBCZWNhdXNlIHRoaXMgbmVlZHMgdG8gb2NjdXIgaW4gdGhlIHNhbWVcbiAgICBzeW5jaHJvbm91cyBjYWxsIChjYWxsZWQgYmVmb3JlIHRoZSBuZXh0IHJlcGFpbnQpLCByZXR1cm5pbmcgYSBEZWZlcnJlZC50IHdpbGwgbm90XG4gICAgd29yay4gSW5zdGVhZCwgeW91IHBhc3MgaW4gYSBqb2IgdG8gYmUgcnVuIGJlZm9yZSB0aGUgcmVwYWludC5cblxuICAgIE5vdGUgdGhhdCBpZiBbY2FsbGJhY2tdIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgd29yayBiZWZvcmUgZG9pbmcgRE9NIGNoYW5nZXMsIHRob3NlXG4gICAgY2hhbmdlcyB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVwYWludCBhbmQgd2lsbCBiZSBzYXZlZCB1bnRpbCB0aGUgZm9sbG93aW5nIG9uZS5cblxuICAgIFdoZW4gdGhlIHRhYiBpcyBpbiB0aGUgYmFja2dyb3VuZCwgdGhlIGJyb3dzZXJzIG5hdGl2ZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgZnVuY3Rpb25cbiAgICB3aWxsIG5ldmVyIGNhbGwgdGhlIGNhbGxiYWNrLCBzbyBpbiBvcmRlciB0byBjb250aW51ZSBwcm9jZXNzaW5nIGV2ZW50cywgd2Ugc2V0IGFuXG4gICAgYWx0ZXJuYXRlIHNldFRpbWVvdXQgYXQgMSBzZWNvbmQuXG4qKVxubGV0IHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGNhbGxiYWNrID1cbiAgKCogV2UgY2FwdHVyZSB0aGUgY3VycmVudCBjb250ZXh0IHRvIHVzZSBpdCBsYXRlciB3aGVuIGhhbmRsaW5nIGNhbGxiYWNrcyBmcm9tXG4gICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSwgc2luY2UgZXhjZXB0aW9ucyByYWlzZWQgdG8gdGhhdCB3b3VsZCBvdGhlcndpc2Ugbm90IGdvIHRocm91Z2hcbiAgICAgb3VyIG9yZGluYXJ5IEFzeW5jIG1vbml0b3IuICopXG4gIGxldCBjdXJyZW50X2NvbnRleHQgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkgaW5cbiAgbGV0IHJlcXVlc3RfaWRzID0gUmVxdWVzdF9pZHMuY3JlYXRlICgpIGluXG4gIGxldCBjYWxsYmFjayAoKSA9XG4gICAgaWYgUmVxdWVzdF9pZHMuY2FuY2VsbGVkIHJlcXVlc3RfaWRzXG4gICAgdGhlbiAoKVxuICAgIGVsc2UgKFxuICAgICAgUmVxdWVzdF9pZHMuY2FuY2VsIHJlcXVlc3RfaWRzO1xuICAgICAgbGV0IGNhbGxiYWNrX3Jlc3VsdCA9XG4gICAgICAgIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIud2l0aGluX2NvbnRleHQgY3VycmVudF9jb250ZXh0IGNhbGxiYWNrXG4gICAgICBpblxuICAgICAgaWdub3JlIChjYWxsYmFja19yZXN1bHQgOiAodW5pdCwgdW5pdCkgUmVzdWx0LnQpKVxuICBpblxuICBsZXQgYW5pbWF0aW9uX2ZyYW1lX2lkID1cbiAgICBsZXQgYW5pbWF0aW9uX2NhbGxiYWNrID0gSnMud3JhcF9jYWxsYmFjayAoZnVuIF8gLT4gY2FsbGJhY2sgKCkpIGluXG4gICAgRG9tX2h0bWwud2luZG93IyNyZXF1ZXN0QW5pbWF0aW9uRnJhbWUgYW5pbWF0aW9uX2NhbGxiYWNrXG4gIGluXG4gIGxldCBzZXRfdGltZW91dF9pZCA9XG4gICAgbGV0IHRpbWVvdXRfY2FsbGJhY2sgPSBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPiBjYWxsYmFjayAoKSkgaW5cbiAgICAoKiAxMDAwIG1zID0gMXM7ICBDaG9zZW4gYmVjYXVzZSBiYWNrZ3JvdW5kZWQgdGFuZ2xlIHNlbmRzIHJlcXVlc3RzXG4gICAgICAgYXQgYXBwcm94aW1hdGVseSB0aGlzIHJhdGUuICopXG4gICAgbGV0IHRpbWVvdXQgPSAxMDAwLjAgaW5cbiAgICBEb21faHRtbC53aW5kb3cjI3NldFRpbWVvdXQgdGltZW91dF9jYWxsYmFjayB0aW1lb3V0XG4gIGluXG4gIFJlcXVlc3RfaWRzLnNldF9vbmNlX2V4biByZXF1ZXN0X2lkcyB+YW5pbWF0aW9uX2ZyYW1lX2lkIH5zZXRfdGltZW91dF9pZFxuOztcblxuKCoqIFRoZSBKc19vZl9vY2FtbCB0eXBlIERvbV9odG1sLmVsZW1lbnQgZG9lc24ndCBoYXZlIHRoZSBjb3JyZWN0IG9wdGlvbnMgZm9yXG4gICAgdGhlaXIgYGZvY3VzYCBtZXRob2QuIENhc3QgdG8gdGhpcyBpbiBvcmRlciB0byB3b3JrIGFyb3VuZCB0aGlzIGJ1Zy4gICopXG50eXBlIGZvY3VzYWJsZSA9XG4gIDwgZm9jdXMgOiA8IHByZXZlbnRTY3JvbGwgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcCA+IEpzLnQgLT4gdW5pdCBKcy5tZXRoID5cblxubGV0IGFzX2ZvY3VzYWJsZSA6IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiBmb2N1c2FibGUgSnMudCA9IEpzLlVuc2FmZS5jb2VyY2VcblxuKCoqIFtWaXNpYmlsaXR5XSBlbmNhcHN1bGF0ZXMgdGhlIGRpcnR5aW5nIGFuZCBjbGVhbmluZyBvZiB0aGUgdmlzaWJpbGl0eSBmbGFnXG5cbiAgICBUaGUgdmlld3BvcnQgc3RhcnRzIG91dCBkaXJ0eS4gV2hlbiB3ZSBsb29rIGF0IHRoZSBET00gdG8gY29tcHV0ZSB3aGF0IGlzIHZpc2libGUgYnlcbiAgICBjYWxsaW5nIFt1cGRhdGVfdmlzaWJpbGl0eV0sIHRoZSB2aWV3cG9ydCB0aGVuIGJlY29tZXMgY2xlYW4uIEFueSB0aW1lIHRoZSB1c2VyXG4gICAgc2Nyb2xscyBvdXIgcGFnZSBvciByZXNpemVzIHRoZSB3aW5kb3csIHRoZSB2aWV3cG9ydCBiZWNvbWVzIGRpcnR5IGFnYWluLiBJZiB3ZSB1cGRhdGVcbiAgICB0aGUgRE9NLCB0aGUgdmlld3BvcnQgYmVjb21lcyBkaXJ0eSBhZ2FpbiBiZWNhdXNlIGEgRE9NIHVwZGF0ZSBjb3VsZCBjYXVzZSBhIHJlZmxvdyxcbiAgICBtb3ZpbmcgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIHZpc2libGUuXG5cbiAgICBXZSBoYXZlIGltcGxlbWVudGVkIHRoaXMgYXMgYSBmbGFnIGluc3RlYWQgb2YgcmVxdWlyaW5nIHRoZSB1c2VycyB0byBzZW5kIGFuIGFjdGlvbiBvblxuICAgIHNjcm9sbCBiZWNhdXNlIGl0IHdvdWxkIG1ha2Ugbm8gc2Vuc2UgdG8gY29tcHV0ZSB0aGUgdmlzaWJpbGl0eSBvbiB0aGUgdmlydHVhbC1kb21cbiAgICB3aGVuIHRoZSB2aXJ0dWFsLWRvbSBkb2VzIG5vdCBtYXRjaCB0aGUgYWN0dWFsIGRvbSAoYXMgaXQgaXMgaW4gdGhlIG1pZGRsZSBvZlxuICAgIFthcHBseV9hY3Rpb25zXSkuICopXG5tb2R1bGUgVmlzaWJpbGl0eSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlX2FzX2RpcnR5IDogdW5pdCAtPiB0XG4gIHZhbCBtYXJrX2NsZWFuIDogdCAtPiB1bml0XG4gIHZhbCBtYXJrX2RpcnR5IDogdCAtPiB1bml0XG4gIHZhbCBpc19kaXJ0eSA6IHQgLT4gYm9vbFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgbXV0YWJsZSB3aGVuX2RpcnR5IDogdW5pdCBJdmFyLnQgfVxuXG4gIGxldCBjcmVhdGVfYXNfZGlydHkgKCkgPSB7IHdoZW5fZGlydHkgPSBJdmFyLmNyZWF0ZV9mdWxsICgpIH1cbiAgbGV0IG1hcmtfZGlydHkgdCA9IEl2YXIuZmlsbF9pZl9lbXB0eSB0LndoZW5fZGlydHkgKClcbiAgbGV0IGlzX2RpcnR5IHQgPSBJdmFyLmlzX2Z1bGwgdC53aGVuX2RpcnR5XG4gIGxldCBtYXJrX2NsZWFuIHQgPSBpZiBpc19kaXJ0eSB0IHRoZW4gdC53aGVuX2RpcnR5IDwtIEl2YXIuY3JlYXRlICgpXG5lbmRcblxubW9kdWxlIExvZ2dpbmdfZmlsdGVyID0gc3RydWN0XG4gIG1vZHVsZSBTdHJpbmdfYmxhbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nIEJsYW5nLnQgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZV1cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHwgQWxsXG4gICAgfCBOb25lXG4gICAgfCBOYW1lZF9maWx0ZXJfYmxhbmcgb2YgU3RyaW5nX2JsYW5nLnRcbiAgICB8IEN1c3RvbV9maWx0ZXIgb2YgKFNleHAudCAtPiBib29sKVxuZW5kXG5cbm1vZHVsZSBEZWJ1Z19mbGFncyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbG9nZ2luZ19maWx0ZXIgOiB1bml0IC0+IExvZ2dpbmdfZmlsdGVyLnRcbiAgICA7IHNob3VsZF9wcm9maWxlIDogdW5pdCAtPiBib29sXG4gICAgOyBzaG91bGRfZGVidWcgOiB1bml0IC0+IGJvb2xcbiAgICB9XG5cbiAgdmFsIGluaXRfYXBwXG4gICAgOiAgYXBwX2lkOnN0cmluZ1xuICAgIC0+IGZpbHRlcl9uYW1lczpTdHJpbmcuU2V0LnRcbiAgICAtPiBkZWJ1Zzpib29sXG4gICAgLT4gc3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGxvZ2dpbmdfZmlsdGVyIDogdW5pdCAtPiBMb2dnaW5nX2ZpbHRlci50XG4gICAgOyBzaG91bGRfcHJvZmlsZSA6IHVuaXQgLT4gYm9vbFxuICAgIDsgc2hvdWxkX2RlYnVnIDogdW5pdCAtPiBib29sXG4gICAgfVxuXG4gIG1vZHVsZSBBcHBfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBmaWx0ZXJfbmFtZXMgOiBTdHJpbmcuU2V0LnRcbiAgICAgIDsgbG9nZ2luZ19maWx0ZXIgOiBMb2dnaW5nX2ZpbHRlci50IHJlZlxuICAgICAgOyBzaG91bGRfcHJvZmlsZSA6IGJvb2wgcmVmXG4gICAgICA7IHNob3VsZF9kZWJ1ZyA6IGJvb2wgcmVmXG4gICAgICB9XG5cbiAgICBsZXQgc2V0X2xvZ2dpbmdfZmlsdGVyIHQgfmxvZ2dpbmdfZmlsdGVyID0gdC5sb2dnaW5nX2ZpbHRlciA6PSBsb2dnaW5nX2ZpbHRlclxuICAgIGxldCBzZXRfc2hvdWxkX3Byb2ZpbGUgdCB+c2hvdWxkX3Byb2ZpbGUgPSB0LnNob3VsZF9wcm9maWxlIDo9IHNob3VsZF9wcm9maWxlXG4gICAgbGV0IHNldF9zaG91bGRfZGVidWcgdCB+c2hvdWxkX2RlYnVnID0gdC5zaG91bGRfZGVidWcgOj0gc2hvdWxkX2RlYnVnXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgZ2xvYmFsID0gb2JqZWN0XG4gICAgbWV0aG9kIHN0YXJ0TG9nZ2luZ0FsbCA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3RhcnRMb2dnaW5nIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgICAgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdGFydExvZ2dpbmdDdXN0b20gOlxuICAgICAgKChKcy5qc19zdHJpbmcgSnMudCAtPiBib29sIEpzLnQpIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0b3BMb2dnaW5nIDogKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0YXJ0UHJvZmlsaW5nIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdG9wUHJvZmlsaW5nIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdGFydERlYnVnZ2luZyA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3RvcERlYnVnZ2luZyA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc2F2ZUluY3JlbWVudGFsR3JhcGggOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuICBlbmRcblxuICBsZXQgZ2xvYmFsIDogZ2xvYmFsIEpzLnQgPSBKcy5VbnNhZmUuZ2xvYmFsXG4gIGxldCBnbG9iYWxfaXNfaW5pdGlhbGl6ZWQgPSByZWYgZmFsc2VcbiAgbGV0IGFwcF9zdGF0ZXMgOiBBcHBfc3RhdGUudCBTdHJpbmcuVGFibGUudCA9IFN0cmluZy5UYWJsZS5jcmVhdGUgKClcblxuICBsZXQgc2luZ2xlX2xpbmVfc3RyaW5nX2xpc3Qgc3RyaW5ncyA9XG4gICAgc3RyaW5ncyB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIlxcXCJcIiBeIHN0ciBeIFwiXFxcIlwiKSB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG4gIDs7XG5cbiAgbGV0IG11bHRpX2xpbmVfc3RyaW5nX2xpc3Qgc3RyaW5ncyA9XG4gICAgc3RyaW5ncyB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIiAgXCIgXiBzdHIpIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiXG4gIDs7XG5cbiAgbGV0IGluaXRfZ2xvYmFsIH5hcHBfZmlsdGVycyAoKSA9XG4gICAgbGV0IHdpdGhfYXBwX2lkX29wdCB1cGRhdGVfc3RhdGUgYXBwX2lkX29wdCA9XG4gICAgICBsZXQgYXBwX2lkX29wdCA9IEpzLk9wdC50b19vcHRpb24gYXBwX2lkX29wdCB8PiBPcHRpb24ubWFwIH5mOkpzLnRvX3N0cmluZyBpblxuICAgICAgbWF0Y2ggYXBwX2lkX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gSGFzaHRibC5pdGVyIGFwcF9zdGF0ZXMgfmY6dXBkYXRlX3N0YXRlXG4gICAgICB8IFNvbWUgYXBwX2lkIC0+XG4gICAgICAgIChtYXRjaCBIYXNodGJsLmZpbmQgYXBwX3N0YXRlcyBhcHBfaWQgd2l0aFxuICAgICAgICAgfCBTb21lIHN0YXRlIC0+IHVwZGF0ZV9zdGF0ZSBzdGF0ZVxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIHByaW50X2Vycm9yZlxuICAgICAgICAgICAgIFwiVW5hYmxlIHRvIGZpbmQgYXBwIHdpdGggaWQgXFxcIiVzXFxcIi4gVmFsaWQgYXBwIGlkcyBhcmU6ICVzXCJcbiAgICAgICAgICAgICBhcHBfaWRcbiAgICAgICAgICAgICAoSGFzaHRibC5rZXlzIGFwcF9zdGF0ZXMgfD4gc2luZ2xlX2xpbmVfc3RyaW5nX2xpc3QpKVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciBsb2dnaW5nX2ZpbHRlciA9XG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKEFwcF9zdGF0ZS5zZXRfbG9nZ2luZ19maWx0ZXIgfmxvZ2dpbmdfZmlsdGVyKVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9zaG91bGRfcHJvZmlsZSBzaG91bGRfcHJvZmlsZSA9XG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKEFwcF9zdGF0ZS5zZXRfc2hvdWxkX3Byb2ZpbGUgfnNob3VsZF9wcm9maWxlKVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9zaG91bGRfZGVidWcgc2hvdWxkX2RlYnVnID1cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoQXBwX3N0YXRlLnNldF9zaG91bGRfZGVidWcgfnNob3VsZF9kZWJ1ZylcbiAgICBpblxuICAgIGdsb2JhbCMjLnN0YXJ0TG9nZ2luZ0FsbCA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfbG9nZ2luZ19maWx0ZXIgQWxsKTtcbiAgICBnbG9iYWwjIy5zdGFydExvZ2dpbmdcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gYmxhbmdfc3RyIC0+XG4gICAgICBsZXQgYmxhbmdfc3RyID0gSnMudG9fc3RyaW5nIGJsYW5nX3N0ciBpblxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChmdW4gYXBwX3N0YXRlIC0+XG4gICAgICAgIGxldCBibGFuZyA9IEJsYW5nLnRfb2Zfc2V4cCBTdHJpbmcudF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyBibGFuZ19zdHIpIGluXG4gICAgICAgIGxldCBpbnZhbGlkX25hbWVzID1cbiAgICAgICAgICBCbGFuZy5mb2xkIGJsYW5nIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgfmY6KGZ1biBpbnZhbGlkX25hbWVzIG5hbWUgLT5cbiAgICAgICAgICAgIGlmIFNldC5tZW0gYXBwX3N0YXRlLmZpbHRlcl9uYW1lcyBuYW1lXG4gICAgICAgICAgICB0aGVuIGludmFsaWRfbmFtZXNcbiAgICAgICAgICAgIGVsc2UgU2V0LmFkZCBpbnZhbGlkX25hbWVzIG5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIGlmIFNldC5pc19lbXB0eSBpbnZhbGlkX25hbWVzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBBcHBfc3RhdGUuc2V0X2xvZ2dpbmdfZmlsdGVyXG4gICAgICAgICAgICBhcHBfc3RhdGVcbiAgICAgICAgICAgIH5sb2dnaW5nX2ZpbHRlcjooTmFtZWRfZmlsdGVyX2JsYW5nIGJsYW5nKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcHJpbnRfZXJyb3JmXG4gICAgICAgICAgICBcIlVuYWJsZSB0byBmaW5kIG5hbWVkIGZpbHRlcihzKTogJXMuIFZhbGlkIG5hbWVzIGFyZTpcXG4lc1wiXG4gICAgICAgICAgICAoU2V0LnRvX2xpc3QgaW52YWxpZF9uYW1lcyB8PiBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdClcbiAgICAgICAgICAgIChTZXQudG9fbGlzdCBhcHBfc3RhdGUuZmlsdGVyX25hbWVzIHw+IG11bHRpX2xpbmVfc3RyaW5nX2xpc3QpKSk7XG4gICAgZ2xvYmFsIyMuc3RhcnRMb2dnaW5nQ3VzdG9tXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGZpbHRlciAtPlxuICAgICAgbGV0IGZpbHRlciBhY3Rpb25fc2V4cCA9XG4gICAgICAgIGFjdGlvbl9zZXhwIHw+IFNleHAudG9fc3RyaW5nIHw+IEpzLnN0cmluZyB8PiBmaWx0ZXIgfD4gSnMudG9fYm9vbFxuICAgICAgaW5cbiAgICAgIHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciAoQ3VzdG9tX2ZpbHRlciBmaWx0ZXIpKTtcbiAgICBnbG9iYWwjIy5zdG9wTG9nZ2luZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfbG9nZ2luZ19maWx0ZXIgTm9uZSk7XG4gICAgZ2xvYmFsIyMuc3RhcnRQcm9maWxpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9wcm9maWxlIHRydWUpO1xuICAgIGdsb2JhbCMjLnN0b3BQcm9maWxpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9wcm9maWxlIGZhbHNlKTtcbiAgICBnbG9iYWwjIy5zdGFydERlYnVnZ2luZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX2RlYnVnIHRydWUpO1xuICAgIGdsb2JhbCMjLnN0b3BEZWJ1Z2dpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9kZWJ1ZyBmYWxzZSk7XG4gICAgZ2xvYmFsIyMuc2F2ZUluY3JlbWVudGFsR3JhcGhcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gKCkgLT5cbiAgICAgIGxldCBmaWxlbmFtZSA9IFwiY3VycmVudF9pbmNyX2RvbV9kb3RfZ3JhcGguZG90XCIgaW5cbiAgICAgIFVpX2luY3Iuc2F2ZV9kb3RfdG9fZmlsZSBmaWxlbmFtZTtcbiAgICAgIGxldCBjb250ZW50cyA9IEluX2NoYW5uZWwucmVhZF9hbGwgZmlsZW5hbWUgaW5cbiAgICAgIFZkb21fZmlsZV9kb3dubG9hZC5jcmVhdGUgfmZpbGVuYW1lIH5taW1ldHlwZTpcInBsYWluL3RleHRcIiB+Y29udGVudHNcbiAgICAgIHw+IFZkb21fZmlsZV9kb3dubG9hZC50cmlnZ2VyKTtcbiAgICBsZXQgZ3JvdXAgcyB+ZiA9XG4gICAgICBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwQ29sbGFwc2VkIChKcy5zdHJpbmcgcyk7XG4gICAgICBmICgpO1xuICAgICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cEVuZFxuICAgIGluXG4gICAgbGV0IGxvZyBzID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyBzKSBpblxuICAgIGdyb3VwIFwiSW5jcl9kb20gLyBCb25zYWkgQ29uc29sZVwiIH5mOihmdW4gKCkgLT5cbiAgICAgIGdyb3VwIFwiQWN0aW9uIExvZ2dpbmdcIiB+ZjooZnVuICgpIC0+XG4gICAgICAgIGxvZ1xuICAgICAgICAgIHt8TG9nZ2luZyBwcmludHMgYWN0aW9uIGluZm8gdG8gdGhlIGNvbnNvbGUuIEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIFRvIHN0YXJ0IGxvZ2dpbmcsIHR5cGUgb25lIG9mIHRoZSBmb2xsb3dpbmc6XG5zdGFydExvZ2dpbmdBbGwoW2FwcF9pZF0pIC0gbG9nIGFsbCBhY3Rpb25zXG5zdGFydExvZ2dpbmcoZmlsdGVyX25hbWUgWywgYXBwX2lkXSkgLSBmaWx0ZXIgYWN0aW9ucyB1c2luZyBhIHByZS1kZWZpbmVkIG5hbWVkIGZpbHRlciBbZmlsdGVyX25hbWVdXG5zdGFydExvZ2dpbmcoZmlsdGVyX25hbWVfYmxhbmcgWywgYXBwX2lkXSkgLSBmaWx0ZXIgYWN0aW9ucyB1c2luZyBhIGJsYW5nIG9mIG5hbWVkIGZpbHRlcnMgW2ZpbHRlcl9uYW1lX2JsYW5nXVxuc3RhcnRMb2dnaW5nQ3VzdG9tKGZpbHRlciBbLCBhcHBfaWRdKSAtIGZpbHRlciBhY3Rpb25zIHVzaW5nIGEgY3VzdG9tIGZ1bmN0aW9uIFtmaWx0ZXJdIGZyb20gYSBzdHJpbmcgKHRoZSBhY3Rpb24gc2V4cCkgdG8gYSBib29sXG5UbyBzdG9wIGxvZ2dpbmcsIHR5cGU6IHN0b3BMb2dnaW5nKFthcHBfaWRdKXx9KTtcbiAgICAgIGdyb3VwIFwiQWN0aW9uIFByb2ZpbGluZ1wiIH5mOihmdW4gKCkgLT5cbiAgICAgICAgbG9nXG4gICAgICAgICAge3xQcm9maWxpbmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC5cblRvIHN0YXJ0IHByb2ZpbGluZywgdHlwZTogc3RhcnRQcm9maWxpbmcoW2FwcF9pZF0pXG5UbyBzdG9wIHByb2ZpbGluZywgdHlwZTogc3RvcFByb2ZpbGluZyhbYXBwX2lkXSl8fSk7XG4gICAgICBncm91cCBcIkRlYnVnZ2luZ1wiIH5mOihmdW4gKCkgLT5cbiAgICAgICAgbG9nXG4gICAgICAgICAge3xEZWJ1Z2dpbmcgcHJpbnRzIHRpbWluZyBpbmZvIHRvIHRoZSBjb25zb2xlLiBJdCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkIGJ5IHRoZSBhcHAuXG5UbyBzdGFydCBkZWJ1Z2dpbmcsIHR5cGU6IHN0YXJ0RGVidWdnaW5nKFthcHBfaWRdKVxuVG8gc3RvcCBkZWJ1Z2dpbmcsIHR5cGU6IHN0b3BEZWJ1Z2dpbmcoW2FwcF9pZF0pXG5cblthcHBfaWRdIGlzIGVxdWFsIHRvIHRoZSBpZCBvZiB0aGUgZWxlbWVudCB0aGF0IHRoZSBpbmNyLWRvbSBhcHAgaXMgYm91bmQgdG8uIElmIHRoZSBwYWdlIG9ubHkgaGFzIG9uZSBhcHAgb3IgeW91IHdhbnQgdG8gYXBwbHkgdGhlIGFjdGlvbiB0byBhbGwgYXBwcywgeW91IGNhbiBwYXNzIGluIFtudWxsXSAob3IgZm9yIHNpbmdsZS1hcmd1bWVudCBmdW5jdGlvbnMsIG9taXQgaXQgYWx0b2dldGhlcikufH0pO1xuICAgICAgbG9nIGFwcF9maWx0ZXJzKVxuICA7O1xuXG4gIGxldCBpbml0X2FwcCB+YXBwX2lkIH5maWx0ZXJfbmFtZXMgfmRlYnVnIH5zdG9wID1cbiAgICBsZXQgYXBwX2luaXRfbWVzc2FnZSA9XG4gICAgICBzcHJpbnRmXG4gICAgICAgIHt8QXZhaWxhYmxlIGxvZ2dpbmcgZmlsdGVycyBmb3IgXCIlc1wiOlxuJXN8fVxuICAgICAgICBhcHBfaWRcbiAgICAgICAgKFNldC50b19saXN0IGZpbHRlcl9uYW1lcyB8PiBtdWx0aV9saW5lX3N0cmluZ19saXN0KVxuICAgIGluXG4gICAgaWYgbm90ICFnbG9iYWxfaXNfaW5pdGlhbGl6ZWRcbiAgICB0aGVuIChcbiAgICAgIGluaXRfZ2xvYmFsIH5hcHBfZmlsdGVyczphcHBfaW5pdF9tZXNzYWdlICgpO1xuICAgICAgZ2xvYmFsX2lzX2luaXRpYWxpemVkIDo9IHRydWUpXG4gICAgZWxzZSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIGFwcF9pbml0X21lc3NhZ2UpO1xuICAgIGxldCBsb2dnaW5nX2ZpbHRlciA9IHJlZiBMb2dnaW5nX2ZpbHRlci5Ob25lIGluXG4gICAgbGV0IHNob3VsZF9wcm9maWxlID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHNob3VsZF9kZWJ1ZyA9IHJlZiBkZWJ1ZyBpblxuICAgIEhhc2h0Ymwuc2V0XG4gICAgICBhcHBfc3RhdGVzXG4gICAgICB+a2V5OmFwcF9pZFxuICAgICAgfmRhdGE6eyBmaWx0ZXJfbmFtZXM7IGxvZ2dpbmdfZmlsdGVyOyBzaG91bGRfcHJvZmlsZTsgc2hvdWxkX2RlYnVnIH07XG4gICAgdXBvbiBzdG9wIChmdW4gKCkgLT4gSGFzaHRibC5yZW1vdmUgYXBwX3N0YXRlcyBhcHBfaWQpO1xuICAgIHsgbG9nZ2luZ19maWx0ZXIgPSAoZnVuICgpIC0+ICFsb2dnaW5nX2ZpbHRlcilcbiAgICA7IHNob3VsZF9wcm9maWxlID0gKGZ1biAoKSAtPiAhc2hvdWxkX3Byb2ZpbGUpXG4gICAgOyBzaG91bGRfZGVidWcgPSAoZnVuICgpIC0+ICFzaG91bGRfZGVidWcpXG4gICAgfVxuICA7O1xuZW5kXG5cbigqIEFkZHMgdGhlIG5lY2Vzc2FyeSBhdHRyaWJ1dGUgdG8gdGhlIHJvb3Qgbm9kZSBzbyB0aGF0IGl0IGNhbiBpbnRlcmNlcHRcbiAgIGtleWJvYXJkIGV2ZW50cy5cbiAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvdGFiaW5kZXggKilcbmxldCBvdmVycmlkZV9yb290X2VsZW1lbnQgcm9vdCA9XG4gIGxldCBvcGVuIFZkb20gaW5cbiAgbGV0IHNob3VsZF9hZGRfZm9jdXNfbW9kaWZpZXJzIGVsZW1lbnQgPVxuICAgIGVsZW1lbnQgfD4gTm9kZS5FbGVtZW50LmF0dHJzIHw+IEF0dHIuRXhwZXJ0LmNvbnRhaW5zX25hbWUgXCJkaXNhYmxlX3RhYl9pbmRleFwiIHw+IG5vdFxuICBpblxuICBtYXRjaCAocm9vdCA6IE5vZGUudCkgd2l0aFxuICB8IEVsZW1lbnQgZWxlbWVudCB3aGVuIHNob3VsZF9hZGRfZm9jdXNfbW9kaWZpZXJzIGVsZW1lbnQgLT5cbiAgICBsZXQgYWRkX25ld19hdHRycyBhdHRycyA9XG4gICAgICBWZG9tLkF0dHIuKHN0eWxlIChDc3NfZ2VuLm91dGxpbmUgfnN0eWxlOmBOb25lICgpKSBAIHRhYmluZGV4IDAgQCBhdHRycylcbiAgICBpblxuICAgIGVsZW1lbnQgfD4gTm9kZS5FbGVtZW50Lm1hcF9hdHRycyB+ZjphZGRfbmV3X2F0dHJzIHw+IE5vZGUuRWxlbWVudFxuICB8IF8gLT4gcm9vdFxuOztcblxubGV0IHJlYyBnZXRfdGFnX25hbWUgKG5vZGUgOiBWZG9tLk5vZGUudCkgPVxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBFbGVtZW50IGUgLT4gU29tZSAoVmRvbS5Ob2RlLkVsZW1lbnQudGFnIGUpXG4gIHwgTGF6eSB7IHQ7IF8gfSAtPiBnZXRfdGFnX25hbWUgKExhenkuZm9yY2UgdClcbiAgfCBOb25lIHwgVGV4dCBfIHwgV2lkZ2V0IF8gLT4gTm9uZVxuOztcblxubGV0IHN0YXJ0X2JvbnNhaVxuICAgICAgKHR5cGUgbW9kZWwgYWN0aW9uKVxuICAgICAgPyhkZWJ1ZyA9IGZhbHNlKVxuICAgICAgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpXG4gICAgICA/KG5hbWVkX2xvZ2dpbmdfZmlsdGVycyA9IFtdKVxuICAgICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkXG4gICAgICB+aW5pdGlhbF9tb2RlbFxuICAgICAgKG1vZHVsZSBBcHAgOiBBcHBfaW50Zi5Qcml2YXRlLlNfZm9yX2JvbnNhaVxuICAgICAgICB3aXRoIHR5cGUgTW9kZWwudCA9IG1vZGVsXG4gICAgICAgICBhbmQgdHlwZSBBY3Rpb24udCA9IGFjdGlvbilcbiAgPVxuICAoKiBUaGlzIGlzIGlkZW1wb3RlbnQgYW5kIHNvIGZpbmUgdG8gZG8uICopXG4gIEFzeW5jX2pzLmluaXQgKCk7XG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGxldCViaW5kICgpID0gQXN5bmNfanMuZG9jdW1lbnRfbG9hZGVkICgpIGluXG4gICAgIGxldCBtb2RlbF92ID0gSW5jci5WYXIuY3JlYXRlIGluaXRpYWxfbW9kZWwgaW5cbiAgICAgbGV0IG1vZGVsID0gSW5jci5WYXIud2F0Y2ggbW9kZWxfdiBpblxuICAgICBsZXQgbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXlfdiA9IEluY3IuVmFyLmNyZWF0ZSBpbml0aWFsX21vZGVsIGluXG4gICAgIGxldCBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSA9IEluY3IuVmFyLndhdGNoIG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YgaW5cbiAgICAgbGV0IGN1dG9mZiA9XG4gICAgICAgSW5jci5DdXRvZmYuY3JlYXRlIChmdW4gfm9sZF92YWx1ZSB+bmV3X3ZhbHVlIC0+XG4gICAgICAgICBBcHAuTW9kZWwuY3V0b2ZmIG9sZF92YWx1ZSBuZXdfdmFsdWUpXG4gICAgIGluXG4gICAgIEluY3Iuc2V0X2N1dG9mZiBtb2RlbCBjdXRvZmY7XG4gICAgIEluY3Iuc2V0X2N1dG9mZiBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSBjdXRvZmY7XG4gICAgIGxldCBhY3Rpb25fcXVldWUgPSBEZXF1ZS5jcmVhdGUgKCkgaW5cbiAgICAgbGV0IG1vZHVsZSBFdmVudCA9XG4gICAgICAgVmRvbS5FZmZlY3QuRGVmaW5lIChzdHJ1Y3RcbiAgICAgICAgIG1vZHVsZSBBY3Rpb24gPSBBcHAuQWN0aW9uXG5cbiAgICAgICAgIGxldCBoYW5kbGUgYWN0aW9uID0gRGVxdWUuZW5xdWV1ZV9iYWNrIGFjdGlvbl9xdWV1ZSBhY3Rpb25cbiAgICAgICBlbmQpXG4gICAgIGluXG4gICAgIGxldCB2aXNpYmlsaXR5ID0gVmlzaWJpbGl0eS5jcmVhdGVfYXNfZGlydHkgKCkgaW5cbiAgICAgbGV0IHZpZXdwb3J0X2NoYW5nZWQgKCkgPSBWaXNpYmlsaXR5Lm1hcmtfZGlydHkgdmlzaWJpbGl0eSBpblxuICAgICAoKiBUaGlzIHJlZ2lzdGVycyB0aGUgW3ZpZXdwb3J0X2NoYW5nZWRdIGhhbmRsZXIgd2l0aCBWaXJ0dWFsX2RvbS4gSWYgZXZlbnQgaGFuZGxlcnNcbiAgICAgICAgdXNlIHRoZSBbVmRvbS5FZmZlY3QuVmlld3BvcnRfY2hhbmdlZF0gZXZlbnQsIHdlIGFyZSBub3RpZmllZC4gKilcbiAgICAgbGV0IG1vZHVsZSBfID1cbiAgICAgICBWZG9tLkVmZmVjdC5EZWZpbmVfdmlzaWJpbGl0eSAoc3RydWN0XG4gICAgICAgICBsZXQgaGFuZGxlID0gdmlld3BvcnRfY2hhbmdlZFxuICAgICAgIGVuZClcbiAgICAgaW5cbiAgICAgbGV0IGdldF92aWV3LCBnZXRfYXBwbHlfYWN0aW9uLCBnZXRfdXBkYXRlX3Zpc2liaWxpdHksIGdldF9vbl9kaXNwbGF5ID1cbiAgICAgICBsZXQgb2JzID1cbiAgICAgICAgIEluY3Iub2JzZXJ2ZVxuICAgICAgICAgICAoQXBwLmNyZWF0ZSBtb2RlbCB+b2xkX21vZGVsOm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5IH5pbmplY3Q6RXZlbnQuaW5qZWN0KVxuICAgICAgIGluXG4gICAgICAgbGV0IGZldGNoIChmIDogXyBBcHBfaW50Zi5Qcml2YXRlLnNuYXBzaG90IC0+IF8pICgpID1cbiAgICAgICAgIGYgKEluY3IuT2JzZXJ2ZXIudmFsdWVfZXhuIG9icylcbiAgICAgICBpblxuICAgICAgICggZmV0Y2ggKGZ1biB7IHZpZXc7IF8gfSAtPiB2aWV3KVxuICAgICAgICwgZmV0Y2ggKGZ1biB7IGFwcGx5X2FjdGlvbjsgXyB9IC0+IGFwcGx5X2FjdGlvbilcbiAgICAgICAsIGZldGNoIChmdW4geyB1cGRhdGVfdmlzaWJpbGl0eTsgXyB9IC0+IHVwZGF0ZV92aXNpYmlsaXR5KVxuICAgICAgICwgZmV0Y2ggKGZ1biB7IG9uX2Rpc3BsYXk7IF8gfSAtPiBvbl9kaXNwbGF5KSApXG4gICAgIGluXG4gICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICBsZXQgbmFtZWRfbG9nZ2luZ19maWx0ZXJzID1cbiAgICAgICAoXCJhbGxcIiwgRm4uY29uc3QgdHJ1ZSkgOjogKFwibm9uZVwiLCBGbi5jb25zdCBmYWxzZSkgOjogbmFtZWRfbG9nZ2luZ19maWx0ZXJzXG4gICAgICAgfD4gU3RyaW5nLlRhYmxlLm9mX2FsaXN0X2V4blxuICAgICBpblxuICAgICBsZXQgeyBEZWJ1Z19mbGFncy5sb2dnaW5nX2ZpbHRlcjsgc2hvdWxkX3Byb2ZpbGU7IHNob3VsZF9kZWJ1ZyB9ID1cbiAgICAgICBsZXQgZmlsdGVyX25hbWVzID0gSGFzaHRibC5rZXlzIG5hbWVkX2xvZ2dpbmdfZmlsdGVycyB8PiBTdHJpbmcuU2V0Lm9mX2xpc3QgaW5cbiAgICAgICBEZWJ1Z19mbGFncy5pbml0X2FwcCB+YXBwX2lkOmJpbmRfdG9fZWxlbWVudF93aXRoX2lkIH5maWx0ZXJfbmFtZXMgfmRlYnVnIH5zdG9wXG4gICAgIGluXG4gICAgIGxldCBodG1sID0gZ2V0X3ZpZXcgKCkgaW5cbiAgICAgbGV0IGh0bWxfZG9tID0gVmRvbS5Ob2RlLnRvX2RvbSBodG1sIGluXG4gICAgIGxldCBlbGVtID0gRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWRfZXhuIGJpbmRfdG9fZWxlbWVudF93aXRoX2lkIGluXG4gICAgIGxldCBwYXJlbnQgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlOlslaGVyZV0gKEpzLk9wdC50b19vcHRpb24gZWxlbSMjLnBhcmVudE5vZGUpIGluXG4gICAgIERvbS5yZXBsYWNlQ2hpbGQgcGFyZW50IGh0bWxfZG9tIGVsZW07XG4gICAgICgqIHdlIG1ha2Ugc3VyZSB0byBjYWxsIFt2aWV3cG9ydF9jaGFuZ2VkXSB3aGVuZXZlciB0aGUgd2luZG93IHJlc2l6ZXMgb3IgdGhlIHNjcm9sbFxuICAgICAgICBjb250YWluZXIgaW4gd2hpY2ggb3VyIEhUTUwgaXMgbG9jYXRlZCBpcyBzY3JvbGxlZC4gKilcbiAgICAgbGV0IGNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCBldmVudF9uYW1lIHdoZXJlID1cbiAgICAgICBpZ25vcmVcbiAgICAgICAgIChEb20uYWRkRXZlbnRMaXN0ZW5lclxuICAgICAgICAgICAgd2hlcmVcbiAgICAgICAgICAgIChEb20uRXZlbnQubWFrZSBldmVudF9uYW1lKVxuICAgICAgICAgICAgKERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgdmlld3BvcnRfY2hhbmdlZCAoKTtcbiAgICAgICAgICAgICAgIEpzLl90cnVlKSlcbiAgICAgICAgICAgIEpzLl9mYWxzZVxuICAgICAgICAgIDogRG9tLmV2ZW50X2xpc3RlbmVyX2lkKVxuICAgICBpblxuICAgICBjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQgXCJzY3JvbGxcIiAoSnNfbWlzYy5nZXRfc2Nyb2xsX2NvbnRhaW5lciBodG1sX2RvbSk7XG4gICAgIGNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCBcInJlc2l6ZVwiIERvbV9odG1sLndpbmRvdztcbiAgICAgbGV0JWJpbmQgc3RhdGUgPVxuICAgICAgIEFwcC5vbl9zdGFydHVwXG4gICAgICAgICB+c2NoZWR1bGVfYWN0aW9uOihmdW4gYSAtPiBVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZSAoRXZlbnQuaW5qZWN0IGEpKVxuICAgICAgICAgKEluY3IuVmFyLnZhbHVlIG1vZGVsX3YpXG4gICAgIGluXG4gICAgIGxldCBwcmV2X2h0bWwgPSByZWYgaHRtbCBpblxuICAgICBsZXQgcHJldl9lbHQgPSByZWYgaHRtbF9kb20gaW5cbiAgICAgbGV0IHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpID1cbiAgICAgICBsZXQgZWxlbWVudCA9ICFwcmV2X2VsdCBpblxuICAgICAgICgqIElmIHRoZSBlbGVtZW50IHRvIGZvY3VzIGlzIGFuIGVsZW1lbnQsIGNhc3QgaXQgaW50byB0aGVcbiAgICAgICAgICBtb3JlIHBlcm1pc3NpdmUgXCJmb2N1c2FibGVcIiB0eXBlIGRlZmluZWQgYXQgdGhlIHRvcCBvZlxuICAgICAgICAgIHRoaXMgZmlsZSwgYW5kIHRoZW4gZm9jdXMgdGhhdC4gKilcbiAgICAgICBEb21faHRtbC5Db2VyY2VUby5lbGVtZW50IGVsZW1lbnRcbiAgICAgICB8PiBKcy5PcHQudG9fb3B0aW9uXG4gICAgICAgfD4gT3B0aW9uLm1hcCB+Zjphc19mb2N1c2FibGVcbiAgICAgICB8PiBPcHRpb24uaXRlciB+ZjooZnVuIGVsZW1lbnQgLT5cbiAgICAgICAgIGVsZW1lbnQjI2ZvY3VzXG4gICAgICAgICAgIChvYmplY3QlanNcbiAgICAgICAgICAgICB2YWwgcHJldmVudFNjcm9sbCA9IEpzLl90cnVlXG4gICAgICAgICAgIGVuZCkpXG4gICAgIGluXG4gICAgIGxldCB0aW1lcl9zdGFydCBzID1cbiAgICAgICB0aW1lcl9zdGFydCBzIH5kZWJ1Zzooc2hvdWxkX2RlYnVnICgpKSB+cHJvZmlsZTooc2hvdWxkX3Byb2ZpbGUgKCkpXG4gICAgIGluXG4gICAgIGxldCB0aW1lcl9zdG9wIHMgPVxuICAgICAgIHRpbWVyX3N0b3AgcyB+ZGVidWc6KHNob3VsZF9kZWJ1ZyAoKSkgfnByb2ZpbGU6KHNob3VsZF9wcm9maWxlICgpKVxuICAgICBpblxuICAgICAoKlxuICAgICAgICBUYWtlIGFjdGlvbiBvbiBhbnkgYmx1ciBldmVudCwgcmVmb2N1c2luZyB0byB0aGUgcm9vdCBub2RlIGlmIHRoZSByZWxhdGVkVGFyZ2V0IGlzXG4gICAgICAgIG51bGwgb3IgdW5kZWZpbmVkLCBzaWduaWZ5aW5nIHRoYXQgZm9jdXMgd2FzIGxvc3QgYW5kIHdvdWxkIG90aGVyd2lzZSBiZSByZXNldCB0b1xuICAgICAgICB0aGUgYm9keSBub2RlLlxuXG4gICAgICAgIFRoZSBKcy5fdHJ1ZSBwYXJhbWV0ZXIgcHJvdmlkZWQgdG8gRG9tLmFkZEV2ZW50TGlzdGVuZXIgaXMgdGhlIHVzZUNhcHR1cmVcbiAgICAgICAgcGFyYW1ldGVyIGRlc2NyaWJlZCBoZXJlOlxuICAgICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRUYXJnZXQvYWRkRXZlbnRMaXN0ZW5lclxuICAgICAqKVxuICAgICBpZ25vcmVcbiAgICAgQEAgRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiAgICAgICAgICBEb21faHRtbC53aW5kb3dcbiAgICAgICAgICBEb21faHRtbC5FdmVudC5ibHVyXG4gICAgICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBlIC0+XG4gICAgICAgICAgICAgKCogW0pzLlVuc2FmZS4qXSBpcyBsaWtlIFtPYmoubWFnaWNdLiBXZSBzaG91bGQgYmUgZXhwbGljaXQgYWJvdXQgd2hhdCB3ZVxuICAgICAgICAgICAgICAgIGV4cGVjdC4gKilcbiAgICAgICAgICAgICBsZXQgZVxuICAgICAgICAgICAgICAgOiA8IHJlbGF0ZWRUYXJnZXQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3AgPiBKcy50XG4gICAgICAgICAgICAgICA9XG4gICAgICAgICAgICAgICBKcy5VbnNhZmUuY29lcmNlIGVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCByZWxhdGVkX3RhcmdldCA9IGUjIy5yZWxhdGVkVGFyZ2V0IGluXG4gICAgICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCByZWxhdGVkX3RhcmdldCkgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKTtcbiAgICAgICAgICAgICBKcy5fdHJ1ZSkpXG4gICAgICAgICAgSnMuX3RydWU7XG4gICAgIGxldCB1cGRhdGVfdmlzaWJpbGl0eSAoKSA9XG4gICAgICAgVmlzaWJpbGl0eS5tYXJrX2NsZWFuIHZpc2liaWxpdHk7XG4gICAgICAgbGV0IG5ld19tb2RlbCA9XG4gICAgICAgICAoZ2V0X3VwZGF0ZV92aXNpYmlsaXR5ICgpKVxuICAgICAgICAgICB+c2NoZWR1bGVfZXZlbnQ6VWlfZWZmZWN0LkV4cGVydC5oYW5kbGVcbiAgICAgICAgICAgKEluY3IuVmFyLmxhdGVzdF92YWx1ZSBtb2RlbF92KVxuICAgICAgIGluXG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX3YgbmV3X21vZGVsO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwic3RhYmlsaXplXCI7XG4gICAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcInN0YWJpbGl6ZVwiXG4gICAgIGluXG4gICAgIGxldCBtYXliZV9sb2dfYWN0aW9uID1cbiAgICAgICBsZXQgc2FmZV9maWx0ZXIgfm5hbWUgZmlsdGVyIGFjdGlvbiA9XG4gICAgICAgICBtYXRjaCBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGZpbHRlciBhY3Rpb24pIHdpdGhcbiAgICAgICAgIHwgT2sgc2hvdWxkX2xvZyAtPiBzaG91bGRfbG9nXG4gICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICBwcmludF9lcnJvcmYgIVwiRXhjZXB0aW9uIHJhaXNlZCBieSAlczogJXtFcnJvciNodW19XCIgbmFtZSBlcnI7XG4gICAgICAgICAgIGZhbHNlXG4gICAgICAgaW5cbiAgICAgICBsZXQgbmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlID1cbiAgICAgICAgIENvcmUuTWVtby5vZl9jb21wYXJhYmxlXG4gICAgICAgICAgIChtb2R1bGUgTG9nZ2luZ19maWx0ZXIuU3RyaW5nX2JsYW5nKVxuICAgICAgICAgICAoZnVuIGJsYW5nIC0+XG4gICAgICAgICAgICAgIGxldCBmaWx0ZXIgPSBIYXNodGJsLmZpbmRfZXhuIG5hbWVkX2xvZ2dpbmdfZmlsdGVycyBpblxuICAgICAgICAgICAgICBzYWZlX2ZpbHRlclxuICAgICAgICAgICAgICAgIH5uYW1lOihzcHJpbnRmICFcIm5hbWVkIGZpbHRlciBibGFuZyBcXFwiJXtzZXhwOnN0cmluZyBCbGFuZy50fVxcXCJcIiBibGFuZylcbiAgICAgICAgICAgICAgICAobWF0Y2ggYmxhbmcgd2l0aFxuICAgICAgICAgICAgICAgICB8IEJhc2UgbmFtZSAtPiBmaWx0ZXIgbmFtZVxuICAgICAgICAgICAgICAgICB8IF8gLT4gZnVuIGFjdGlvbiAtPiBCbGFuZy5ldmFsIGJsYW5nIChmdW4gbmFtZSAtPiBmaWx0ZXIgbmFtZSBhY3Rpb24pKSlcbiAgICAgICBpblxuICAgICAgIGZ1biBhY3Rpb24gLT5cbiAgICAgICAgIGxldCBzaG91bGRfbG9nX2FjdGlvbiA9XG4gICAgICAgICAgIG1hdGNoIGxvZ2dpbmdfZmlsdGVyICgpIHdpdGhcbiAgICAgICAgICAgfCBBbGwgLT4gdHJ1ZVxuICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgfCBOYW1lZF9maWx0ZXJfYmxhbmcgYmxhbmcgLT4gbmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlIGJsYW5nIGFjdGlvblxuICAgICAgICAgICB8IEN1c3RvbV9maWx0ZXIgZmlsdGVyIC0+XG4gICAgICAgICAgICAgc2FmZV9maWx0ZXJcbiAgICAgICAgICAgICAgIH5uYW1lOlwiY3VzdG9tIGZpbHRlclwiXG4gICAgICAgICAgICAgICAoZnVuIGFjdGlvbiAtPiBmaWx0ZXIgKEFwcC5BY3Rpb24uc2V4cF9vZl90IGFjdGlvbikpXG4gICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgIGluXG4gICAgICAgICBpZiBzaG91bGRfbG9nX2FjdGlvblxuICAgICAgICAgdGhlbiBBc3luY19qcy5sb2dfc19hc19zdHJpbmcgWyVtZXNzYWdlIFwiQWN0aW9uXCIgKGFjdGlvbiA6IEFwcC5BY3Rpb24udCldXG4gICAgIGluXG4gICAgIGxldCBhcHBseV9hY3Rpb24gYWN0aW9uID1cbiAgICAgICBtYXliZV9sb2dfYWN0aW9uIGFjdGlvbjtcbiAgICAgICBpZiBBcHAuYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24gYWN0aW9uXG4gICAgICAgdGhlbiAoXG4gICAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZS1mb3ItYWN0aW9uXCI7XG4gICAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemUtZm9yLWFjdGlvblwiKVxuICAgICAgIGVsc2UgaWYgc2hvdWxkX2RlYnVnICgpXG4gICAgICAgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnIChKcy5zdHJpbmcgXCJhY3Rpb24gYXBwbGllZCB3aXRob3V0IHN0YWJpbGl6aW5nXCIpO1xuICAgICAgIGxldCBuZXdfbW9kZWwgPVxuICAgICAgICAgKGdldF9hcHBseV9hY3Rpb24gKCkpXG4gICAgICAgICAgIHN0YXRlXG4gICAgICAgICAgIH5zY2hlZHVsZV9ldmVudDpVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZVxuICAgICAgICAgICAoSW5jci5WYXIubGF0ZXN0X3ZhbHVlIG1vZGVsX3YpXG4gICAgICAgICAgIGFjdGlvblxuICAgICAgIGluXG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX3YgbmV3X21vZGVsXG4gICAgIGluXG4gICAgIGxldCByZWMgYXBwbHlfYWN0aW9ucyAoKSA9XG4gICAgICAgbWF0Y2ggRGVxdWUuZGVxdWV1ZV9mcm9udCBhY3Rpb25fcXVldWUgd2l0aFxuICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgIHwgU29tZSBhY3Rpb24gLT5cbiAgICAgICAgIGFwcGx5X2FjdGlvbiBhY3Rpb247XG4gICAgICAgICBhcHBseV9hY3Rpb25zICgpXG4gICAgIGluXG4gICAgIGxldCBwZXJmb3JtX3VwZGF0ZSAoKSA9XG4gICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemVcIjtcbiAgICAgICAoKiBUaGUgY2xvY2sgaXMgc2V0IG9ubHkgb25jZSBwZXIgY2FsbCB0byBwZXJmb3JtX3VwZGF0ZSwgc28gdGhhdCBhbGwgYWN0aW9ucyB0aGF0XG4gICAgICAgICAgb2NjdXIgYmVmb3JlIGVhY2ggZGlzcGxheSB1cGRhdGUgb2NjdXIgXCJhdCB0aGUgc2FtZSB0aW1lLlwiICopXG4gICAgICAgbGV0IG5vdyA9XG4gICAgICAgICBsZXQgZGF0ZSA9IG5ldyVqcyBKcy5kYXRlX25vdyBpblxuICAgICAgICAgVGltZV9ucy5TcGFuLm9mX21zIGRhdGUjI2dldFRpbWUgfD4gVGltZV9ucy5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgICAgaW5cbiAgICAgICBJbmNyLkNsb2NrLmFkdmFuY2VfY2xvY2sgSW5jci5jbG9jayB+dG9fOm5vdztcbiAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJ0b3RhbFwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwidXBkYXRlIHZpc2liaWxpdHlcIjtcbiAgICAgICBpZiBWaXNpYmlsaXR5LmlzX2RpcnR5IHZpc2liaWxpdHkgdGhlbiB1cGRhdGVfdmlzaWJpbGl0eSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwidXBkYXRlIHZpc2liaWxpdHlcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcImFwcGx5IGFjdGlvbnNcIjtcbiAgICAgICBhcHBseV9hY3Rpb25zICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJhcHBseSBhY3Rpb25zXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemVcIjtcbiAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplXCI7XG4gICAgICAgbGV0IGh0bWwgPSBnZXRfdmlldyAoKSBpblxuICAgICAgIGxldCBodG1sID0gb3ZlcnJpZGVfcm9vdF9lbGVtZW50IGh0bWwgaW5cbiAgICAgICB0aW1lcl9zdGFydCBcImRpZmZcIjtcbiAgICAgICBsZXQgcGF0Y2ggPSBWZG9tLk5vZGUuUGF0Y2guY3JlYXRlIH5wcmV2aW91czohcHJldl9odG1sIH5jdXJyZW50Omh0bWwgaW5cbiAgICAgICB0aW1lcl9zdG9wIFwiZGlmZlwiO1xuICAgICAgIGlmIG5vdCAoVmRvbS5Ob2RlLlBhdGNoLmlzX2VtcHR5IHBhdGNoKSB0aGVuIFZpc2liaWxpdHkubWFya19kaXJ0eSB2aXNpYmlsaXR5O1xuICAgICAgIHRpbWVyX3N0YXJ0IFwicGF0Y2hcIjtcbiAgICAgICBsZXQgZWx0ID0gVmRvbS5Ob2RlLlBhdGNoLmFwcGx5IHBhdGNoICFwcmV2X2VsdCBpblxuICAgICAgIHRpbWVyX3N0b3AgXCJwYXRjaFwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwib25fZGlzcGxheVwiO1xuICAgICAgIChnZXRfb25fZGlzcGxheSAoKSkgc3RhdGUgfnNjaGVkdWxlX2V2ZW50OlVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlO1xuICAgICAgIHRpbWVyX3N0b3AgXCJvbl9kaXNwbGF5XCI7XG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YgKEluY3IuVmFyLnZhbHVlIG1vZGVsX3YpO1xuICAgICAgIGxldCBvbGRfdGFnX25hbWUgPSBnZXRfdGFnX25hbWUgIXByZXZfaHRtbCBpblxuICAgICAgIGxldCBuZXdfdGFnX25hbWUgPSBnZXRfdGFnX25hbWUgaHRtbCBpblxuICAgICAgIGxldCB0YWdzX3RoZV9zYW1lID0gT3B0aW9uLmVxdWFsIFN0cmluZy5lcXVhbCBvbGRfdGFnX25hbWUgbmV3X3RhZ19uYW1lIGluXG4gICAgICAgcHJldl9odG1sIDo9IGh0bWw7XG4gICAgICAgcHJldl9lbHQgOj0gZWx0O1xuICAgICAgIHRpbWVyX3N0b3AgXCJ0b3RhbFwiO1xuICAgICAgIGlmIHNob3VsZF9kZWJ1ZyAoKSB0aGVuIEZpcmVidWcuY29uc29sZSMjZGVidWcgKEpzLnN0cmluZyBcIi0tLS0tLS1cIik7XG4gICAgICAgKCogQ2hhbmdpbmcgdGhlIHRhZyBuYW1lIGNhdXNlcyBmb2N1cyB0byBiZSBsb3N0LiAgUmVmb2N1cyBpbiB0aGF0IGNhc2UuICopXG4gICAgICAgaWYgbm90IHRhZ3NfdGhlX3NhbWUgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKVxuICAgICBpblxuICAgICAoKiBXZSB1c2UgW3JlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lXSBzbyB0aGF0IGJyb3dzZXIgdGVsbHMgdXMgd2hlcmUgaXQncyB0aW1lIHRvXG4gICAgICAgIHJlZnJlc2ggdGhlIFVJLiBBbGwgdGhlIGFjdGlvbnMgd2lsbCBiZSBwcm9jZXNzZWQgYW5kIHRoZSBjaGFuZ2VzIHByb3BhZ2F0ZWRcbiAgICAgICAgdG8gdGhlIERPTSBpbiBvbmUgZnJhbWUuICopXG4gICAgIGxldCByZWMgY2FsbGJhY2sgKCkgPVxuICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgICAgIHRoZW4gKClcbiAgICAgICBlbHNlIChcbiAgICAgICAgIHBlcmZvcm1fdXBkYXRlICgpO1xuICAgICAgICAgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2spXG4gICAgIGluXG4gICAgICgqIFdlIHdhbnQgdGhlIHJvb3QgZWxlbWVudCB0byBzdGFydCBvdXQgZm9jdXNlZCwgc28gcGVyZm9ybSBhbiBpbml0aWFsXG4gICAgICAgIHVwZGF0ZS9yZW5kZXIsIHRoZW4gaW1tZWRpYXRlbHkgZm9jdXMgdGhlIHJvb3QgKHVubGVzcyBhIG5vbi1ib2R5IGVsZW1lbnQgYWxyZWFkeVxuICAgICAgICBoYXMgZm9jdXMpLiAgVGhpcyBmb2N1c2luZyBjYW4ndCBoYXBwZW4gaW5zaWRlIG9mIHRoZSBgY2FsbGJhY2tgIGJlY2F1c2UgdGhlbiBpdFxuICAgICAgICB3b3VsZCByZWZvY3VzIHJvb3QgZXZlcnkgZnJhbWUuICAqKVxuICAgICBwZXJmb3JtX3VwZGF0ZSAoKTtcbiAgICAgKG1hdGNoIEpzLk9wdC50b19vcHRpb24gRG9tX2h0bWwuZG9jdW1lbnQjIy5hY3RpdmVFbGVtZW50IHdpdGhcbiAgICAgIHwgU29tZSBlbCAtPiBpZiBKcy5PcHQudGVzdCAoRG9tX2h0bWwuQ29lcmNlVG8uYm9keSBlbCkgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKVxuICAgICAgfCBOb25lIC0+IHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpKTtcbiAgICAgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2s7XG4gICAgIERlZmVycmVkLm5ldmVyICgpKVxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHN0YXJ0X2JvbnNhaSA9IHN0YXJ0X2JvbnNhaVxuZW5kXG5cbmxldCBzdGFydFxuICAgICAgKHR5cGUgbW9kZWwgYWN0aW9uKVxuICAgICAgPyhkZWJ1ZyA9IGZhbHNlKVxuICAgICAgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpXG4gICAgICA/KG5hbWVkX2xvZ2dpbmdfZmlsdGVycyA9IFtdKVxuICAgICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkXG4gICAgICB+aW5pdGlhbF9tb2RlbFxuICAgICAgKG1vZHVsZSBBcHAgOiBBcHBfaW50Zi5TIHdpdGggdHlwZSBNb2RlbC50ID0gbW9kZWwgYW5kIHR5cGUgQWN0aW9uLnQgPSBhY3Rpb24pXG4gID1cbiAgc3RhcnRfYm9uc2FpXG4gICAgfmRlYnVnXG4gICAgfnN0b3BcbiAgICB+bmFtZWRfbG9nZ2luZ19maWx0ZXJzXG4gICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkXG4gICAgfmluaXRpYWxfbW9kZWxcbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgaW5jbHVkZSBBcHBcblxuICAgICAgbGV0IGFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIF8gPSB0cnVlXG5cbiAgICAgIGxldCBjcmVhdGUgbW9kZWwgfm9sZF9tb2RlbCB+aW5qZWN0ID1cbiAgICAgICAgbGV0IG9wZW4gSW5jci5MZXRfc3ludGF4IGluXG4gICAgICAgIGxldCVtYXAgY29tcG9uZW50ID0gY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWwgfmluamVjdCBpblxuICAgICAgICBsZXQgdmlldyA9IENvbXBvbmVudC52aWV3IGNvbXBvbmVudCBpblxuICAgICAgICBsZXQgYXBwbHlfYWN0aW9uIHN0YXRlIH5zY2hlZHVsZV9ldmVudCBfbW9kZWwgYWN0aW9uID1cbiAgICAgICAgICBsZXQgc2NoZWR1bGVfYWN0aW9uIGEgPSBzY2hlZHVsZV9ldmVudCAoaW5qZWN0IGEpIGluXG4gICAgICAgICAgQ29tcG9uZW50LmFwcGx5X2FjdGlvbiBjb21wb25lbnQgYWN0aW9uIHN0YXRlIH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHVwZGF0ZV92aXNpYmlsaXR5IF9tb2RlbCB+c2NoZWR1bGVfZXZlbnQgPVxuICAgICAgICAgIGxldCBzY2hlZHVsZV9hY3Rpb24gYSA9IHNjaGVkdWxlX2V2ZW50IChpbmplY3QgYSkgaW5cbiAgICAgICAgICBDb21wb25lbnQudXBkYXRlX3Zpc2liaWxpdHkgY29tcG9uZW50IH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG9uX2Rpc3BsYXkgc3RhdGUgfnNjaGVkdWxlX2V2ZW50ID1cbiAgICAgICAgICBsZXQgc2NoZWR1bGVfYWN0aW9uIGEgPSBzY2hlZHVsZV9ldmVudCAoaW5qZWN0IGEpIGluXG4gICAgICAgICAgQ29tcG9uZW50Lm9uX2Rpc3BsYXkgY29tcG9uZW50IHN0YXRlIH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgeyBBcHBfaW50Zi5Qcml2YXRlLnZpZXc7IGFwcGx5X2FjdGlvbjsgdXBkYXRlX3Zpc2liaWxpdHk7IG9uX2Rpc3BsYXkgfVxuICAgICAgOztcbiAgICBlbmQpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tLlZkb21cbmluY2x1ZGUgVmRvbV9pbnB1dF93aWRnZXRzX2ludGZcblxubW9kdWxlIE1lcmdlX2JlaGF2aW9yID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBNZXJnZVxuICAgIHwgTGVnYWN5X2RvbnRfbWVyZ2VcbmVuZFxuXG5tb2R1bGUgRGVjaW1hbCA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdFxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgdClcbiAgICB0aGVuIGZhaWx3aXRoZiBcIkNhbm5vdCByZXByZXNlbnQgbm9uLWZpbml0ZSBmbG9hdCBhcyBkZWNpbWFsOiAlZlwiIHQgKClcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIGxldCB0ID0gRmxvYXQub2Zfc3RyaW5nIHMgaW5cbiAgICBpbnZhcmlhbnQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICBpbnZhcmlhbnQgdDtcbiAgICBzcHJpbnRmIFwiJS4xMmdcIiB0XG4gIDs7XG5lbmRcblxubW9kdWxlIFZhbGlkYXRlZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgSW5pdGlhbFxuICAgICgqIFRoaXMgaXMgdXNlZCB0byBhdm9pZCBtYXJraW5nIGFzIGludmFsaWQgYSBmaWVsZCB0aGF0IGhhc24ndCBldmVyIGJlZW5cbiAgICAgICB0b3VjaGVkIGJ5IHRoZSB1c2VyLCB0byBpbXByb3ZlIFVYLiAqKVxuICAgIHwgVmFsaWQgb2ZcbiAgICAgICAgeyBpbnB1dCA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICAgIH1cbiAgICB8IEludmFsaWQgb2ZcbiAgICAgICAgeyBpbnB1dCA6IHN0cmluZ1xuICAgICAgICA7IGxhc3RfdmFsaWQgOiAnYSBvcHRpb25cbiAgICAgICAgOyBlcnJvciA6IHN0cmluZ1xuICAgICAgICB9XG4gIFtAQGRlcml2aW5nIGVxdWFsLCBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbiAgdHlwZSAnYSB1cGRhdGUgPSAnYSB0IFtAQGRlcml2aW5nIGVxdWFsLCBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbiAgbGV0IGxpZnQgKHR5cGUgYSkgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gYSB0XG5cbiAgICAgIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgICAgICB8IEluaXRpYWwgLT4gXCJcIlxuICAgICAgICB8IEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZCA9IF87IGVycm9yID0gXyB9IC0+IGlucHV0XG4gICAgICAgIHwgVmFsaWQgeyBpbnB1dDsgdmFsdWUgfSAtPlxuICAgICAgICAgIChtYXRjaCBpbnB1dCB3aXRoXG4gICAgICAgICAgIHwgU29tZSBpbnB1dCAtPiBpbnB1dFxuICAgICAgICAgICB8IE5vbmUgLT4gTS50b19zdHJpbmcgdmFsdWUpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICB0cnkgVmFsaWQgeyBpbnB1dCA9IFNvbWUgczsgdmFsdWUgPSBNLm9mX3N0cmluZyBzIH0gd2l0aFxuICAgICAgICB8IGV4biAtPiBJbnZhbGlkIHsgaW5wdXQgPSBzOyBsYXN0X3ZhbGlkID0gTm9uZTsgZXJyb3IgPSBFeG4udG9fc3RyaW5nIGV4biB9XG4gICAgICA7O1xuICAgIGVuZCA6IFN0cmluZ2FibGUuU1xuICAgICAgd2l0aCB0eXBlIHQgPSBhIHQpXG4gIDs7XG5cbiAgbGV0IGluaXRpYWxfZW1wdHkgPSBJbml0aWFsXG4gIGxldCByZXR1cm4gdmFsdWUgPSBWYWxpZCB7IGlucHV0ID0gTm9uZTsgdmFsdWUgfVxuXG4gIGxldCBnZXRfY3VycmVudCA9IGZ1bmN0aW9uXG4gICAgfCBWYWxpZCB7IGlucHV0ID0gXzsgdmFsdWUgfSAtPiBTb21lIHZhbHVlXG4gICAgfCBJbnZhbGlkIF8gfCBJbml0aWFsIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZ2V0X2xhc3QgPSBmdW5jdGlvblxuICAgIHwgVmFsaWQgeyBpbnB1dCA9IF87IHZhbHVlIH0gLT4gU29tZSB2YWx1ZVxuICAgIHwgSW52YWxpZCB7IGlucHV0ID0gXzsgbGFzdF92YWxpZDsgZXJyb3IgPSBfIH0gLT4gbGFzdF92YWxpZFxuICAgIHwgSW5pdGlhbCAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGdldF9lcnJvciA9IGZ1bmN0aW9uXG4gICAgfCBJbml0aWFsIHwgVmFsaWQgXyAtPiBOb25lXG4gICAgfCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkID0gXzsgZXJyb3IgfSAtPiBTb21lIGVycm9yXG4gIDs7XG5cbiAgbGV0IGlzX2ludmFsaWQgPSBmdW5jdGlvblxuICAgIHwgSW52YWxpZCBfIC0+IHRydWVcbiAgICB8IFZhbGlkIF8gfCBJbml0aWFsIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGlzX2luaXRpYWxfZW1wdHkgPSBmdW5jdGlvblxuICAgIHwgSW5pdGlhbCAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSBvbGQgbmV3XyA9XG4gICAgbWF0Y2ggb2xkLCBuZXdfIHdpdGhcbiAgICB8IEluaXRpYWwsIF8gLT4gbmV3X1xuICAgIHwgXywgVmFsaWQgXyAtPiBuZXdfXG4gICAgfCBWYWxpZCB7IGlucHV0ID0gXzsgdmFsdWUgPSBvbGQgfSwgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gXzsgZXJyb3IgfSAtPlxuICAgICAgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gU29tZSBvbGQ7IGVycm9yIH1cbiAgICB8ICggSW52YWxpZCB7IGlucHV0ID0gXzsgbGFzdF92YWxpZDsgZXJyb3IgPSBfIH1cbiAgICAgICwgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gTm9uZTsgZXJyb3IgfSApIC0+XG4gICAgICBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQ7IGVycm9yIH1cbiAgICB8IEludmFsaWQgXywgSW52YWxpZCB7IGlucHV0ID0gXzsgbGFzdF92YWxpZCA9IFNvbWUgXzsgZXJyb3IgPSBfIH0gLT4gbmV3X1xuICAgIHwgXywgSW5pdGlhbCAtPiBvbGRcbiAgOztcbmVuZFxuXG5sZXQgbWF5YmVfaW52YWxpZCB2YWxpZGF0ZWQgYXR0cnMgPVxuICBpZiBWYWxpZGF0ZWQuaXNfaW52YWxpZCB2YWxpZGF0ZWRcbiAgdGhlbiBBdHRyLmNyZWF0ZSBcImFyaWEtaW52YWxpZFwiIFwidHJ1ZVwiIDo6IGF0dHJzXG4gIGVsc2UgYXR0cnNcbjs7XG5cbm1vZHVsZSBUaW1lX2NvbXBhdCA9IHN0cnVjdFxuICBtb2R1bGUgT2ZkYXkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUaW1lX25zLk9mZGF5LnRcblxuICAgIGxldCBvZl9zdHJpbmcgPSBUaW1lX25zLk9mZGF5Lm9mX3N0cmluZ1xuXG4gICAgKCogVGhlIGJyb3dzZXIgZXhwZWN0cyBhIEhIOm1tIGZvcm1hdCB3aXRoIG9wdGlvbmFsIHRyYWlsaW5nIFwiOnNzXCIgb3IgXCI6c3MuU1NTXCI7XG4gICAgICAgW1RpbWVfbnMuT2ZkYXkudG9fc3RyaW5nXSBwcm92aWRlcyBwcmVjaXNpb24gaW4gbmFub3NlY29uZHMsIHdoaWNoIGlzIHRvbyBtdWNoLiAqKVxuICAgIGxldCB0b19zdHJpbmcgPSBUaW1lX25zLk9mZGF5LnRvX21pbGxpc2Vjb25kX3N0cmluZ1xuICBlbmRcblxuICBsZXQgem9uZWQgem9uZSA6IChtb2R1bGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gVGltZV9ucy50KSA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFRpbWVfbnMudFxuXG4gICAgICAoKiBGb3JtYXQgZnJvbSB0aGUgYnJvd3NlcjogeXl5eS1NTS1kZFRoaDptbSAqKVxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgbGV0IHBhcnRzID0gU3RyaW5nLnNwbGl0X29uX2NoYXJzIHMgfm9uOlsgJ1QnOyAnOicgXSBpblxuICAgICAgICBsZXQgZGF0ZSA9IExpc3QubnRoX2V4biBwYXJ0cyAwIHw+IERhdGUub2Zfc3RyaW5nIGluXG4gICAgICAgIGxldCBociA9IExpc3QubnRoX2V4biBwYXJ0cyAxIHw+IEludC5vZl9zdHJpbmcgaW5cbiAgICAgICAgbGV0IG1pbiA9IExpc3QubnRoX2V4biBwYXJ0cyAyIHw+IEludC5vZl9zdHJpbmcgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gVGltZV9ucy5PZmRheS5jcmVhdGUgfmhyIH5taW4gKCkgaW5cbiAgICAgICAgVGltZV9ucy5vZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgIGxldCBzID0gVGltZV9ucy50b19zdHJpbmdfaXNvODYwMV9iYXNpYyB+em9uZSB0IGluXG4gICAgICAgICgqIFRoZSBicm93c2VyIGV4cGVjdCBhIHl5eXktTU0tZGRUaGg6bW0gZm9ybWF0IGFuZCBpdCBhbGxvd3NcbiAgICAgICAgICAgdHJhaWxpbmcgXCI6c3NcIiBvciBcIjpzcy5TU1NcIi5cblxuICAgICAgICAgICB0b19zdHJpbmdfaXNvODYwMV9iYXNpYyBmb3JtYXQ6IDIwMTktMDEtMzBUMDE6MDA6MDAuMDAwMDAwMDAwKzAxOjAwXG5cbiAgICAgICAgICAgZGVzaXJlZCBmb3JtYXQgYWZ0ZXIgY3V0dGluZzogICAyMDE5LTAxLTMwVDAxOjAwOjAwXG4gICAgICAgICopXG4gICAgICAgIFN0cmluZy5sc3BsaXQyX2V4biB+b246Jy4nIHMgfD4gVHVwbGUyLmdldDFcbiAgICAgIDs7XG4gICAgZW5kKVxuICA7O1xuZW5kXG5cbmxldCBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQgYXR0cnMgPSBpZiBkaXNhYmxlZCB0aGVuIEF0dHIuZGlzYWJsZWQgOjogYXR0cnMgZWxzZSBhdHRyc1xubGV0IGFkZF9hdHRycyBhdHRycycgYXR0cnMgPSBhdHRycyBAIGF0dHJzJyB8PiBBdHRycy5tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXNcblxubGV0IG1lcmdlID0gZnVuY3Rpb25cbiAgfCBNZXJnZV9iZWhhdmlvci5NZXJnZSAtPiBBdHRyLm1hbnlcbiAgfCBMZWdhY3lfZG9udF9tZXJnZSAtPiBBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuOztcblxubGV0IHN0cnVjdHVyYWxfbGlzdFxuICAgICAgPyhvcmllbnRhdGlvbiA9IGBWZXJ0aWNhbClcbiAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgIGF0dHJzXG4gICAgICBjaGlsZHJlblxuICA9XG4gIGxldCBsYXlvdXRfc3R5bGUgPVxuICAgIG1hdGNoIG9yaWVudGF0aW9uIHdpdGhcbiAgICB8IGBWZXJ0aWNhbCAtPiBDc3NfZ2VuLihkaXNwbGF5IGBCbG9jaylcbiAgICB8IGBIb3Jpem9udGFsIC0+IENzc19nZW4uKGRpc3BsYXkgYElubGluZV9ibG9jaylcbiAgaW5cbiAgTm9kZS51bFxuICAgIH5hdHRyczpcbiAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgIChbIEF0dHIuc3R5bGVcbiAgICAgICAgICAgICAgIENzc19nZW4uKGNyZWF0ZSB+ZmllbGQ6XCJsaXN0LXN0eWxlXCIgfnZhbHVlOlwibm9uZVwiIEA+IG1hcmdpbl9sZWZ0IChgUHggMCkpXG4gICAgICAgICAgIF1cbiAgICAgICAgICAgfD4gYWRkX2F0dHJzIGF0dHJzKVxuICAgICAgXVxuICAgIChMaXN0Lm1hcCBjaGlsZHJlbiB+ZjooZnVuIGNoaWxkIC0+XG4gICAgICAgTm9kZS5saSB+YXR0cnM6WyBBdHRyLnN0eWxlIGxheW91dF9zdHlsZSBdIFsgY2hpbGQgXSkpXG47O1xuXG5tb2R1bGUgVmFsdWVfbm9ybWFsaXppbmdfaG9vayA9IHN0cnVjdFxuICBtb2R1bGUgVW5zYWZlID0gSnNfb2Zfb2NhbWwuSnMuVW5zYWZlXG4gIG9wZW4gSnNfb2Zfb2NhbWxcbiAgb3BlbiBKc19vZl9vY2FtbC5Eb21faHRtbFxuXG4gIGxldCBpc19hY3RpdmUgZWxlbWVudCA9XG4gICAgbGV0IGRvY3VtZW50X2FjdGl2ZV9lbGVtZW50ID0gVW5zYWZlLmdldCBkb2N1bWVudCAoSnMuc3RyaW5nIFwiYWN0aXZlRWxlbWVudFwiKSBpblxuICAgIHBoeXNfZXF1YWwgZWxlbWVudCBkb2N1bWVudF9hY3RpdmVfZWxlbWVudFxuICA7O1xuXG4gIGxldCB2YWx1ZV9wcm9wZXJ0eSA9IEpzLnN0cmluZyBcInZhbHVlXCJcbiAgbGV0IGdldF92YWx1ZSBlbGVtZW50IDogJ2EgSnMudCA9IFVuc2FmZS5nZXQgZWxlbWVudCB2YWx1ZV9wcm9wZXJ0eVxuICBsZXQgc2V0X3ZhbHVlIGVsZW1lbnQgdmFsdWUgPSBVbnNhZmUuc2V0IGVsZW1lbnQgdmFsdWVfcHJvcGVydHkgdmFsdWVcblxuICBsZXQgaW5zdGFsbF9ldmVudF9oYW5kbGVyIGVsZW1lbnQgfmYgPVxuICAgICgqIFRoaXMgZXZlbnQgaGFuZGxlciBub3JtYWxpemVzIHRoZSB2YWx1ZSBvbiB0aGUgaW5wdXQgZWxlbWVudCBvbiB0aGUgW2NoYW5nZV0gZXZlbnQuXG4gICAgICAgRm9yIGEgdGV4dCBlbnRyeSwgdGhpcyBtZWFucyB3aGVuIHRoZSB1c2VyIHByZXNzZXMgZW50ZXIsIGFuZCB3aGVuIHRoZSB1c2VyIGJsdXJzXG4gICAgICAgdGhlIGVsZW1lbnQuIFdoeSBkb24ndCB3ZSBzaW1wbHkgW3RvX3N0cmluZ10gdGhlIHZhbHVlIGluIHRoZSBtb2RlbD8gQmVjYXVzZSBmb3JcbiAgICAgICBzb21lIGlucHV0IGVsZW1lbnRzLCB5b3UgY2FuIGhhdmUgYSBjaGFuZ2UgZXZlbnQgdGhhdCBmaXJlcyBhZnRlciB0aGUgdmFsdWUgY2hhbmdlc1xuICAgICAgIGJ1dCBiZWZvcmUgW0luY3JfZG9tXSBjYW4gdXBkYXRlIHRoZSBtb2RlbC4gRm9yIGV4YW1wbGUsIHRoaXMgaGFwcGVucyB3aGVuIHlvdVxuICAgICAgIHByZXNzIHRoZSB1cCBhcnJvdyBvbiBhIG51bWJlciBpbnB1dC4gVGhpcyBsZWFkcyB0byBhIGJ1ZyB3aGVyZSB0aGUgdmFsdWUgaW4gdGhlXG4gICAgICAgbW9kZWwgc3dhcHMgYmFjayBhbmQgZm9ydGggd2l0aCB0aGUgdmFsdWUgaW4gdGhlIGVsZW1lbnQuICopXG4gICAgbGV0IGNoYW5nZV9oYW5kbGVyIF8gPVxuICAgICAgbGV0IHZhbHVlID0gSnMudG9fc3RyaW5nIChnZXRfdmFsdWUgZWxlbWVudCkgaW5cbiAgICAgIE9wdGlvbi5pdGVyIChmIHZhbHVlKSB+ZjooZnVuIG5vcm1hbGl6ZWQgLT5cbiAgICAgICAgc2V0X3ZhbHVlIGVsZW1lbnQgKEpzLnN0cmluZyBub3JtYWxpemVkKSk7XG4gICAgICBKcy5fdHJ1ZVxuICAgIGluXG4gICAgbGV0IGNoYW5nZV9oYW5kbGVyID0gRG9tLmhhbmRsZXIgY2hhbmdlX2hhbmRsZXIgaW5cbiAgICBhZGRFdmVudExpc3RlbmVyIGVsZW1lbnQgRXZlbnQuY2hhbmdlIGNoYW5nZV9oYW5kbGVyIEpzLl9mYWxzZVxuICA7O1xuXG4gIG1vZHVsZSBNID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB7IG11dGFibGUgZXZlbnRfaWQgOiBldmVudF9saXN0ZW5lcl9pZCB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgdmFsdWUgOiBzdHJpbmdcbiAgICAgICAgOyBmIDogc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgICAgICAgfVxuXG4gICAgICBsZXQgc2V4cF9vZl90IHsgdmFsdWU7IF8gfSA9IFNleHAuQXRvbSB2YWx1ZVxuICAgICAgbGV0IGNvbWJpbmUgX2xlZnQgcmlnaHQgPSByaWdodFxuICAgIGVuZFxuXG4gICAgbGV0IGluaXQgeyBJbnB1dC52YWx1ZTsgZiB9IGVsZW1lbnQgPVxuICAgICAgaWYgbm90IChpc19hY3RpdmUgZWxlbWVudCkgdGhlbiBzZXRfdmFsdWUgZWxlbWVudCAoSnMuc3RyaW5nIHZhbHVlKTtcbiAgICAgIGxldCBldmVudF9pZCA9IGluc3RhbGxfZXZlbnRfaGFuZGxlciBlbGVtZW50IH5mIGluXG4gICAgICB7IFN0YXRlLmV2ZW50X2lkIH1cbiAgICA7O1xuXG4gICAgbGV0IG9uX21vdW50IF9pbnB1dCBfc3RhdGUgX2VsZW1lbnQgPSAoKVxuXG4gICAgbGV0IGRlc3Ryb3kgX2lucHV0IHsgU3RhdGUuZXZlbnRfaWQgfSBfZWxlbWVudCA9IHJlbW92ZUV2ZW50TGlzdGVuZXIgZXZlbnRfaWRcbiAgICBbQEBvY2FtbC53YXJuaW5nXG4gICAgICAgXCItNjhcIl1cbiAgICA7O1xuXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0IH5uZXdfaW5wdXQgc3RhdGUgZWxlbWVudCA9XG4gICAgICBkZXN0cm95IG9sZF9pbnB1dCBzdGF0ZSBlbGVtZW50O1xuICAgICAgbGV0IHsgU3RhdGUuZXZlbnRfaWQgfSA9IGluaXQgbmV3X2lucHV0IGVsZW1lbnQgaW5cbiAgICAgIHN0YXRlLlN0YXRlLmV2ZW50X2lkIDwtIGV2ZW50X2lkXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBBdHRyLkhvb2tzLk1ha2UgKE0pXG5cbiAgKCogW2NyZWF0ZSB2YWx1ZSB+Zl0gd2lsbCBzZXQgdGhlIFwidmFsdWVcIiBwcm9wZXJ0eSB0byBbdmFsdWVdIGlmIHRoZSBlbGVtZW50IGlzIG5vdFxuICAgICBmb2N1c2VkIGFuZCBvbiBlYWNoIGNoYW5nZSwgcnVuIHRoZSBjdXJyZW50IHZhbHVlIHRocm91Z2ggW2ZdIHRvIHJlLXNldCBpdC4gQWdhaW4sXG4gICAgIHRoaXMgb25seSBoYXBwZW5zIGlmIHRoZSBlbGVtZW50IGlzIG5vdCBmb2N1c2VkLiBJZiBbZl0gcmV0dXJucyBbTm9uZV0sIG5vIGNoYW5nZVxuICAgICB0YWtlcyBwbGFjZS4gKilcbiAgbGV0IGNyZWF0ZSB2YWx1ZSB+ZiA9IEF0dHIuY3JlYXRlX2hvb2sgXCJ2YWx1ZTpub3JtYWxpemVkXCIgKGNyZWF0ZSB7IHZhbHVlOyBmIH0pXG5lbmRcblxubW9kdWxlIERyb3Bkb3duID0gc3RydWN0XG4gIGxldCBpbXBsXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhleHRyYV9vcHRpb25fYXR0cnMgPSBGbi5jb25zdCBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+ZXF1YWxcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH50b19zdHJpbmdcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBOb2RlLnNlbGVjdFxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChbIEF0dHIuY2xhc3NfIFwid2lkZ2V0LWRyb3Bkb3duXCJcbiAgICAgICAgICAgICA7IEF0dHIub25fY2hhbmdlIChmdW4gXyB2YWx1ZSAtPlxuICAgICAgICAgICAgICAgICBvbl9jaGFuZ2UgKEludC5vZl9zdHJpbmcgdmFsdWUgfD4gTGlzdC5udGhfZXhuIHZhbHVlcykpXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgKExpc3QubWFwaSB2YWx1ZXMgfmY6KGZ1biBpbmRleCB2YWx1ZSAtPlxuICAgICAgICAgTm9kZS5vcHRpb25cbiAgICAgICAgICAgfmF0dHJzOlxuICAgICAgICAgICAgIChbIEF0dHIudmFsdWUgKEludC50b19zdHJpbmcgaW5kZXgpXG4gICAgICAgICAgICAgIDsgQXR0ci5ib29sX3Byb3BlcnR5IFwic2VsZWN0ZWRcIiAoZXF1YWwgdmFsdWUgc2VsZWN0ZWQpXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgQCBleHRyYV9vcHRpb25fYXR0cnMgdmFsdWUpXG4gICAgICAgICAgIFsgTm9kZS50ZXh0ICh0b19zdHJpbmcgdmFsdWUpIF0pKVxuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIHZhbHVlc1xuICAgICAgfmVxdWFsOk0uZXF1YWxcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cblxuICBsZXQgb2ZfdmFsdWVzX29wdFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICA/KHBsYWNlaG9sZGVyID0gXCJcIilcbiAgICAgICAgKG1vZHVsZSBNIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgbGV0IHZhbHVlcyA9IE5vbmUgOjogTGlzdC5tYXAgdmFsdWVzIH5mOk9wdGlvbi5zb21lIGluXG4gICAgbGV0IHRvX3N0cmluZyA9IE9wdGlvbi52YWx1ZV9tYXAgfmRlZmF1bHQ6cGxhY2Vob2xkZXIgfmY6TS50b19zdHJpbmcgaW5cbiAgICBsZXQgZXh0cmFfb3B0aW9uX2F0dHJzID1cbiAgICAgIE9wdGlvbi5tYXAgZXh0cmFfb3B0aW9uX2F0dHJzIH5mOihmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIHZhbHVlIC0+IGYgdmFsdWUpXG4gICAgaW5cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgdmFsdWVzXG4gICAgICB+ZXF1YWw6WyVlcXVhbDogTS50IG9wdGlvbl1cbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1cbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICBNLmFsbFxuICAgICAgfmVxdWFsOk0uZXF1YWxcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1fb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgID8ocGxhY2Vob2xkZXIgPSBcIlwiKVxuICAgICAgICAobW9kdWxlIE0gOiBFbnVtIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgbGV0IHZhbHVlcyA9IE5vbmUgOjogTGlzdC5tYXAgTS5hbGwgfmY6T3B0aW9uLnNvbWUgaW5cbiAgICBsZXQgdG9fc3RyaW5nID0gT3B0aW9uLnZhbHVlX21hcCB+ZGVmYXVsdDpwbGFjZWhvbGRlciB+ZjpNLnRvX3N0cmluZyBpblxuICAgIGxldCBleHRyYV9vcHRpb25fYXR0cnMgPVxuICAgICAgT3B0aW9uLm1hcCBleHRyYV9vcHRpb25fYXR0cnMgfmY6KGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICB8IFNvbWUgdmFsdWUgLT4gZiB2YWx1ZSlcbiAgICBpblxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICB2YWx1ZXNcbiAgICAgIH5lcXVhbDpbJWVxdWFsOiBNLnQgb3B0aW9uXVxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2VsZWN0YWJsZV9zdHlsZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmF0aXZlXG4gICAgfCBCdXR0b25fbGlrZSBvZiB7IGV4dHJhX2F0dHJzIDogY2hlY2tlZDpib29sIC0+IEF0dHIudCBsaXN0IH1cblxuICBsZXQgYmFyZWJvbmVzX2J1dHRvbl9saWtlID1cbiAgICBCdXR0b25fbGlrZVxuICAgICAgeyBleHRyYV9hdHRycyA9XG4gICAgICAgICAgKGZ1biB+Y2hlY2tlZCAtPlxuICAgICAgICAgICAgIGlmIGNoZWNrZWRcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBbIEF0dHIuc3R5bGVcbiAgICAgICAgICAgICAgICAgICBDc3NfZ2VuLihcbiAgICAgICAgICAgICAgICAgICAgIGJvcmRlciB+d2lkdGg6KGBQeCAxKSB+Y29sb3I6KGBIZXggXCIjRDBEMEQwXCIpIH5zdHlsZTpgU29saWQgKClcbiAgICAgICAgICAgICAgICAgICAgIEA+IGJhY2tncm91bmRfY29sb3IgKGBIZXggXCIjNDA0MDQwXCIpXG4gICAgICAgICAgICAgICAgICAgICBAPiBjb2xvciAoYEhleCBcIiNGN0Y3RjdcIikpXG4gICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgWyBBdHRyLnN0eWxlXG4gICAgICAgICAgICAgICAgICAgQ3NzX2dlbi4oXG4gICAgICAgICAgICAgICAgICAgICBib3JkZXIgfndpZHRoOihgUHggMSkgfmNvbG9yOihgSGV4IFwiI0QwRDBEMFwiKSB+c3R5bGU6YFNvbGlkICgpXG4gICAgICAgICAgICAgICAgICAgICBAPiBiYWNrZ3JvdW5kX2NvbG9yIChgSGV4IFwiI0VGRUZFRlwiKSlcbiAgICAgICAgICAgICAgIF0pXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGhpZGVfbmF0aXZlX2lucHV0cyA9XG4gICAgQ3NzX2dlbi4oY3JlYXRlIH5maWVsZDpcImFwcGVhcmFuY2VcIiB+dmFsdWU6XCJub25lXCIgQD4gdW5pZm9ybV9tYXJnaW4gKGBQeCAwKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2hlY2tib3ggPSBzdHJ1Y3RcbiAgbGV0IGltcGxcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5sYWJlbFxuICAgICAgICB+b25fdG9nZ2xlXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS5sYWJlbFxuICAgICAgfmF0dHJzOlsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKSBleHRyYV9hdHRycyBdXG4gICAgICBbIE5vZGUuaW5wdXRcbiAgICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiY2hlY2tib3hcIlxuICAgICAgICAgICAgIDsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl90b2dnbGUpXG4gICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJjaGVja2VkXCIgaXNfY2hlY2tlZFxuICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQpXG4gICAgICAgICAgKClcbiAgICAgIDsgTm9kZS50ZXh0IGxhYmVsXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IHNpbXBsZVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfmxhYmVsXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS5kaXZcbiAgICAgIH5hdHRyczpbIEF0dHIuY2xhc3NfIFwiY2hlY2tib3gtY29udGFpbmVyXCIgXVxuICAgICAgWyBpbXBsID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgfmlzX2NoZWNrZWQgfmxhYmVsIH5vbl90b2dnbGUgfm1lcmdlX2JlaGF2aW9yICgpIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2hlY2tsaXN0ID0gc3RydWN0XG4gIGxldCBpbXBsXG4gICAgICAgID8oc3R5bGUgPSBTZWxlY3RhYmxlX3N0eWxlLk5hdGl2ZSlcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID9sYXlvdXRcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgICA9XG4gICAgbGV0IGlucHV0X2F0dHJzLCBsYWJlbF9hdHRycyA9XG4gICAgICBtYXRjaCBzdHlsZSB3aXRoXG4gICAgICB8IE5hdGl2ZSAtPiBbXSwgZnVuIH5jaGVja2VkOl8gLT4gW11cbiAgICAgIHwgQnV0dG9uX2xpa2UgeyBleHRyYV9hdHRycyB9IC0+XG4gICAgICAgIFsgQXR0ci5zdHlsZSBTZWxlY3RhYmxlX3N0eWxlLmhpZGVfbmF0aXZlX2lucHV0cyBdLCBleHRyYV9hdHRyc1xuICAgIGluXG4gICAgc3RydWN0dXJhbF9saXN0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgICAgID9vcmllbnRhdGlvbjpsYXlvdXRcbiAgICAgIChbIEF0dHIuY2xhc3NlcyBbIFwid2lkZ2V0LWNoZWNrbGlzdFwiOyBcImNoZWNrYm94LWNvbnRhaW5lclwiIF0gXVxuICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgIChMaXN0Lm1hcCB2YWx1ZXMgfmY6KGZ1biBpdGVtIC0+XG4gICAgICAgICBOb2RlLmxhYmVsXG4gICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgICAgICAgKGV4dHJhX2F0dHJzIEAgbGFiZWxfYXR0cnMgfmNoZWNrZWQ6KGlzX2NoZWNrZWQgaXRlbSkpXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICBbIE5vZGUuaW5wdXRcbiAgICAgICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl90b2dnbGUgaXRlbSlcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5ib29sX3Byb3BlcnR5IFwiY2hlY2tlZFwiIChpc19jaGVja2VkIGl0ZW0pXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICBAIGlucHV0X2F0dHJzXG4gICAgICAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAoKVxuICAgICAgICAgICA7IE5vZGUudGV4dCAodG9fc3RyaW5nIGl0ZW0pXG4gICAgICAgICAgIF0pKVxuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP3N0eWxlXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP2xheW91dFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IERpc3BsYXkgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/c3R5bGVcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICA/bGF5b3V0XG4gICAgICB2YWx1ZXNcbiAgICAgIH5pc19jaGVja2VkXG4gICAgICB+b25fdG9nZ2xlXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgb2ZfZW51bVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/c3R5bGVcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW0gd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+b25fdG9nZ2xlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9zdHlsZVxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIE0uYWxsXG4gICAgICB+aXNfY2hlY2tlZFxuICAgICAgfm9uX3RvZ2dsZVxuICAgICAgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5lbmRcblxubW9kdWxlIE11bHRpX3NlbGVjdCA9IHN0cnVjdFxuICBtb2R1bGUgUmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBOb19hY3Rpb25cbiAgICAgIHwgQ2xlYXJfYWxsXG4gICAgICB8IFNlbGVjdF9hbGxcbiAgZW5kXG5cbiAgbGV0IGltcGxcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgID8ocmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IgPSBSZXBlYXRlZF9jbGlja19iZWhhdmlvci5Ob19hY3Rpb24pXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/c2l6ZVxuICAgICAgICAobW9kdWxlIE0gOiBTZXQgd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgID1cbiAgICBsZXQgb3BlbiBKc19vZl9vY2FtbCBpblxuICAgIGxldCBzaXplID0gT3B0aW9uLnZhbHVlIHNpemUgfmRlZmF1bHQ6KExpc3QubGVuZ3RoIHZhbHVlcykgaW5cbiAgICBsZXQgYXR0cnMgPVxuICAgICAgWyBBdHRyLmNyZWF0ZSBcIm11bHRpcGxlXCIgXCJcIlxuICAgICAgOyBBdHRyLmNyZWF0ZSBcInNpemVcIiAoSW50LnRvX3N0cmluZyBzaXplKVxuICAgICAgOyBBdHRyLm9uX2NoYW5nZSAoZnVuIGV2dCAoXyA6IHN0cmluZykgLT5cbiAgICAgICAgICBsZXQgdGFyZ2V0ID1cbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIEpzLk9wdC50b19vcHRpb24gKEpzLk9wdC5iaW5kIGV2dCMjLnRhcmdldCBEb21faHRtbC5Db2VyY2VUby5zZWxlY3QpXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgdGFyZ2V0IC0+IHRhcmdldFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgICAgXCJNdWx0aV9zZWxlY3QgW29uX2NoYW5nZV0gZXZlbnQgZmlyZWQgd2l0aCBhIG1pc3NpbmcgdGFyZ2V0IG9yIHRhcmdldCBcXFxuICAgICAgICAgICAgICAgICB0aGF0IHdhcyBub3QgYSBzZWxlY3QgZWxlbWVudC5cIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGNvbGxlY3Rpb25fdG9fbGlzdCBjb2xsZWN0aW9uID1cbiAgICAgICAgICAgIExpc3QuaW5pdCBjb2xsZWN0aW9uIyMubGVuZ3RoIH5mOihmdW4gaSAtPlxuICAgICAgICAgICAgICBKcy5PcHQuZ2V0IChjb2xsZWN0aW9uIyNpdGVtIGkpIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvcHRpb25zID0gY29sbGVjdGlvbl90b19saXN0IHRhcmdldCMjLm9wdGlvbnMgaW5cbiAgICAgICAgICBsZXQgc2VsZWN0ZWRfdmFsdWVzID1cbiAgICAgICAgICAgIExpc3QuZmlsdGVyX21hcCAoTGlzdC56aXBfZXhuIHZhbHVlcyBvcHRpb25zKSB+ZjooZnVuICh2YWx1ZSwgb3B0aW9uKSAtPlxuICAgICAgICAgICAgICBPcHRpb24uc29tZV9pZiAoSnMudG9fYm9vbCBvcHRpb24jIy5zZWxlY3RlZCkgdmFsdWUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBvbl9jaGFuZ2UgKFNldC5vZl9saXN0IChtb2R1bGUgTSkgc2VsZWN0ZWRfdmFsdWVzKSlcbiAgICAgIF1cbiAgICAgIEAgZXh0cmFfYXR0cnNcbiAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgIGluXG4gICAgbGV0IG9wdGlvbnMgPVxuICAgICAgTGlzdC5tYXAgdmFsdWVzIH5mOihmdW4gdmFsdWUgLT5cbiAgICAgICAgbGV0IGlzX3NlbGVjdGVkID0gU2V0Lm1lbSBzZWxlY3RlZCB2YWx1ZSBpblxuICAgICAgICBOb2RlLm9wdGlvblxuICAgICAgICAgICgqIFtBdHRyLmJvb2xfcHJvcGVydHldIGtlZXBzIHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW9uIGluIHN5bmMgYnkgc2V0dGluZyB0aGUgSlNcbiAgICAgICAgICAgICBwcm9wZXJ0eS4gW0F0dHIuc2VsZWN0ZWRdIG1vZGlmaWVzIHRoZSBET00gYXR0cmlidXRlIHNvIHRoYXQgc2VsZWN0ZWQgb3B0aW9uc1xuICAgICAgICAgICAgIGNhbiBiZSBzdHlsZWQgd2l0aCBDU1MuIFtBdHRyLnNlbGVjdGVkXSBhbG9uZSBkb2VzIG5vdCB1cGRhdGUgdGhlIHN0YXRlXG4gICAgICAgICAgICAgcHJvcGVybHkgaWYgdGhlIG1vZGVsIGNoYW5nZXMsIHNvIGJvdGggYXJlIG5lZWRlZC4gKilcbiAgICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgICAoWyBTb21lIChBdHRyLmJvb2xfcHJvcGVydHkgXCJzZWxlY3RlZFwiIGlzX3NlbGVjdGVkKVxuICAgICAgICAgICAgIDsgU29tZVxuICAgICAgICAgICAgICAgICAoQXR0ci5vbl9jbGljayAoZnVuIGV2dCAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgd2FzX3JlcGVhdGVkX2NsaWNrID1cbiAgICAgICAgICAgICAgICAgICAgICAobm90IChKcy50b19ib29sIGV2dCMjLmN0cmxLZXkpKVxuICAgICAgICAgICAgICAgICAgICAgICYmIFNldC5lcXVhbCBzZWxlY3RlZCAoU2V0LnNpbmdsZXRvbiAobW9kdWxlIE0pIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB3YXNfcmVwZWF0ZWRfY2xpY2ssIHJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBmYWxzZSwgXyB8IHRydWUsIE5vX2FjdGlvbiAtPiBFZmZlY3QuSWdub3JlXG4gICAgICAgICAgICAgICAgICAgIHwgdHJ1ZSwgQ2xlYXJfYWxsIC0+IG9uX2NoYW5nZSAoU2V0LmVtcHR5IChtb2R1bGUgTSkpXG4gICAgICAgICAgICAgICAgICAgIHwgdHJ1ZSwgU2VsZWN0X2FsbCAtPiBvbl9jaGFuZ2UgKFNldC5vZl9saXN0IChtb2R1bGUgTSkgdmFsdWVzKSkpXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IExpc3QuZmlsdGVyX29wdClcbiAgICAgICAgICBbIE5vZGUudGV4dCAoTS50b19zdHJpbmcgdmFsdWUpIF0pXG4gICAgaW5cbiAgICBOb2RlLnNlbGVjdCB+YXR0cnM6WyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpIGF0dHJzIF0gb3B0aW9uc1xuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zaXplXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5MZWdhY3lfZG9udF9tZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogU2V0IHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9yZXBlYXRlZF9jbGlja19iZWhhdmlvclxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c2l6ZVxuICAgICAgKG1vZHVsZSBNKVxuICAgICAgdmFsdWVzXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH5vbl9jaGFuZ2VcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBvZl9lbnVtXG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/c2l6ZVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW1fc2V0IHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zaXplXG4gICAgICAobW9kdWxlIE0pXG4gICAgICBNLmFsbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcbmVuZFxuXG5tb2R1bGUgRW50cnkgPSBzdHJ1Y3RcbiAgbW9kdWxlIENhbGxfb25faW5wdXRfd2hlbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IFRleHRfY2hhbmdlZFxuICAgICAgfCBFbnRlcl9rZXlfcHJlc3NlZF9vcl9mb2N1c19sb3N0XG5cbiAgICBsZXQgbGlzdGVuZXIgPSBmdW5jdGlvblxuICAgICAgfCBUZXh0X2NoYW5nZWQgLT4gQXR0ci5vbl9pbnB1dFxuICAgICAgfCBFbnRlcl9rZXlfcHJlc3NlZF9vcl9mb2N1c19sb3N0IC0+IEF0dHIub25fY2hhbmdlXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG5vcm1hbGl6ZSAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMpIHMgPVxuICAgIG1hdGNoIE0udG9fc3RyaW5nIChNLm9mX3N0cmluZyBzKSB3aXRoXG4gICAgfCBleGNlcHRpb24gXyAtPiBTb21lIFwiXCJcbiAgICB8IHYgLT4gU29tZSB2XG4gIDs7XG5cbiAgbGV0IG1heWJlX29uX3JldHVybiBvbl9yZXR1cm4gYXR0cnMgPVxuICAgIG1hdGNoIG9uX3JldHVybiB3aXRoXG4gICAgfCBOb25lIC0+IGF0dHJzXG4gICAgfCBTb21lIG9uX3JldHVybiAtPlxuICAgICAgQXR0ci5vbl9rZXlkb3duIChmdW4gZXYgLT5cbiAgICAgICAgaWYgZXYjIy5rZXlDb2RlID0gMTMgdGhlbiBvbl9yZXR1cm4gKCkgZWxzZSBFZmZlY3QuSWdub3JlKVxuICAgICAgOjogYXR0cnNcbiAgOztcblxuICBsZXQgaW5wdXRfbm9kZVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhwbGFjZWhvbGRlciA9IFwiXCIpXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgYXR0cnNcbiAgICA9XG4gICAgTm9kZS5pbnB1dFxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChhdHRyc1xuICAgICAgICAgICAgIHw+IGFkZF9hdHRyc1xuICAgICAgICAgICAgICAgICAgWyBBdHRyLnBsYWNlaG9sZGVyIHBsYWNlaG9sZGVyOyBBdHRyLmNyZWF0ZSBcInNwZWxsY2hlY2tcIiBcImZhbHNlXCIgXVxuICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgKClcbiAgOztcblxuICBsZXQgcmF3XG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID9vbl9yZXR1cm5cbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIFsgQXR0ci5zdHJpbmdfcHJvcGVydHkgXCJ2YWx1ZVwiIHZhbHVlOyBBdHRyLm9uX2lucHV0IChmdW4gX2V2IC0+IG9uX2lucHV0KSBdXG4gICAgfD4gbWF5YmVfb25fcmV0dXJuIG9uX3JldHVyblxuICAgIHw+IGlucHV0X25vZGUgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhzaG91bGRfbm9ybWFsaXplID0gdHJ1ZSlcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dHlwZV9hdHRyc1xuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIGxldCB2YWx1ZSA9XG4gICAgICBsZXQgdmFsdWUgPSBPcHRpb24udmFsdWVfbWFwIH5mOk0udG9fc3RyaW5nIHZhbHVlIH5kZWZhdWx0OlwiXCIgaW5cbiAgICAgIGlmIHNob3VsZF9ub3JtYWxpemVcbiAgICAgIHRoZW4gVmFsdWVfbm9ybWFsaXppbmdfaG9vay5jcmVhdGUgdmFsdWUgfmY6KG5vcm1hbGl6ZSAobW9kdWxlIE0pKVxuICAgICAgZWxzZSBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSB2YWx1ZSB+ZjooY29uc3QgTm9uZSlcbiAgICBpblxuICAgIFsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiAtPiBmdW5jdGlvblxuICAgICAgICB8IFwiXCIgLT4gb25faW5wdXQgTm9uZVxuICAgICAgICB8IHMgLT4gb25faW5wdXQgKE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IE0ub2Zfc3RyaW5nIHMpKSlcbiAgICA7IHZhbHVlXG4gICAgXVxuICAgIHw+IGFkZF9hdHRycyB0eXBlX2F0dHJzXG4gICAgfD4gaW5wdXRfbm9kZSA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkID9wbGFjZWhvbGRlciB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nYWJsZVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBNKVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwidGV4dFwiIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgdmFsaWRhdGVkXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgP29uX3JldHVyblxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgbGV0IChtb2R1bGUgVikgPSBWYWxpZGF0ZWQubGlmdCAobW9kdWxlIE0pIGluXG4gICAgbGV0IHZhbHVlX2F0dHIgPVxuICAgICAgbWF0Y2ggKHZhbHVlIDogVi50KSB3aXRoXG4gICAgICB8IEluaXRpYWwgLT4gQXR0ci5zdHJpbmdfcHJvcGVydHkgXCJ2YWx1ZVwiIFwiXCJcbiAgICAgIHwgXyAtPiBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSAoVi50b19zdHJpbmcgdmFsdWUpIH5mOihub3JtYWxpemUgKG1vZHVsZSBWKSlcbiAgICBpblxuICAgIFsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiBzIC0+XG4gICAgICAgIG9uX2lucHV0IChWLm9mX3N0cmluZyBzKSlcbiAgICA7IHZhbHVlX2F0dHJcbiAgICA7IEF0dHIudHlwZV8gXCJ0ZXh0XCJcbiAgICBdXG4gICAgfD4gbWF5YmVfb25fcmV0dXJuIG9uX3JldHVyblxuICAgIHw+IG1heWJlX2ludmFsaWQgdmFsdWVcbiAgICB8PiBpbnB1dF9ub2RlID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCB0ZXh0XG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIG9mX3N0cmluZ2FibGVcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgU3RyaW5nKVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBwYXNzd29yZFxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBTdHJpbmcpXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJwYXNzd29yZFwiIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgbnVtYmVyXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfnN0ZXBcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJudW1iZXJcIjsgQXR0ci5jcmVhdGVfZmxvYXQgXCJzdGVwXCIgc3RlcCBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IHJhbmdlXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfnN0ZXBcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJyYW5nZVwiOyBBdHRyLmNyZWF0ZV9mbG9hdCBcInN0ZXBcIiBzdGVwIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgdGltZVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBUaW1lX2NvbXBhdC5PZmRheSlcbiAgICAgIH5zaG91bGRfbm9ybWFsaXplOmZhbHNlXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJ0aW1lXCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBkYXRlXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIERhdGUpXG4gICAgICB+c2hvdWxkX25vcm1hbGl6ZTpmYWxzZVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwiZGF0ZVwiIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgZGF0ZXRpbWVfbG9jYWxcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/dXRjX29mZnNldFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IGhvdXJzID1cbiAgICAgICgqIEluIHRlc3RzLCB3ZSB1c2UgVVRDIGFzIHRoZSBsb2NhbCB0aW1lem9uZSAoaS5lLiBvZmZzZXQgMCkuIFRoaXMgcHJldmVudHMgY2hhbmdlc1xuICAgICAgICAgYmV0d2VlbiB0ZXN0IG91dHB1dCBhcm91bmQgZGF5bGlnaHQgc2F2aW5ncyB0aW1lLCBhbmQgaWYgW3V0Y19vZmZzZXRdIGlzbid0XG4gICAgICAgICBzdXBwbGllZCwgdGhlbiBjYWxsZXJzIHNob3VsZCBiZSBpbmRpZmZlcmVudCB0byB3aGF0IG9mZnNldCBnZXRzIHVzZWQgaGVyZS4gKilcbiAgICAgIG1hdGNoIENvcmUuYW1fcnVubmluZ190ZXN0IHx8IFBweF9pbmxpbmVfdGVzdF9saWIuYW1fcnVubmluZyB3aXRoXG4gICAgICB8IHRydWUgLT4gMFxuICAgICAgfCBmYWxzZSAtPlxuICAgICAgICBPcHRpb24udmFsdWVfbWFwXG4gICAgICAgICAgdXRjX29mZnNldFxuICAgICAgICAgICgqIGdldFRpbWV6b25lT2Zmc2V0IHJldHVybnMgdGhlIHRpbWUgem9uZSBkaWZmZXJlbmNlLCBpbiBtaW51dGVzLCBmcm9tIGN1cnJlbnRcbiAgICAgICAgICAgICBsb2NhbGUgdG8gVVRDLiBVdGMgb2Zmc2V0IGlzIHRoZSBkaWZmZXJlbmNlIGZyb20gVVRDIHRvIGN1cnJlbnQgbG9jYWxlIHdoaWNoXG4gICAgICAgICAgICAgaXMgd2hlcmUgdGhlIG1pbnVzIGNvbWVzIGZyb20uXG5cbiAgICAgICAgICAgICBUaGUgbWludXRlcyBoYXZlIHRvIGJlIGNvbnZlcnRlZCB0byBob3VycyBzaW5jZSB0aGF0IGlzIHRoZSBmb3JtYXRcbiAgICAgICAgICAgICBUaW1lLlpvbmUub2ZfdXRjX29mZnNldCBleHBlY3RzIGZvciB0aGUgdXRjX29mZnNldC4gKilcbiAgICAgICAgICB+ZGVmYXVsdDooKG5ldyVqcyBKc19vZl9vY2FtbC5Kcy5kYXRlX25vdykjI2dldFRpbWV6b25lT2Zmc2V0IC8gLTYwKVxuICAgICAgICAgIH5mOihmdW4gdXRjX29mZnNldCAtPiBUaW1lX25zLlNwYW4udG9faHIgdXRjX29mZnNldCB8PiBGbG9hdC50b19pbnQpXG4gICAgaW5cbiAgICBsZXQgKG1vZHVsZSBab25lZF90aW1lKSA9IFRpbWVfY29tcGF0LnpvbmVkIChUaW1lX2Zsb2F0LlpvbmUub2ZfdXRjX29mZnNldCB+aG91cnMpIGluXG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgWm9uZWRfdGltZSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcImRhdGV0aW1lLWxvY2FsXCIgXVxuICAgICAgfnNob3VsZF9ub3JtYWxpemU6ZmFsc2VcbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgdGV4dF9hcmVhXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhjYWxsX29uX2lucHV0X3doZW4gPSBDYWxsX29uX2lucHV0X3doZW4uVGV4dF9jaGFuZ2VkKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID8ocGxhY2Vob2xkZXIgPSBcIlwiKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS50ZXh0YXJlYVxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChbIEF0dHIucGxhY2Vob2xkZXIgcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICA7IENhbGxfb25faW5wdXRfd2hlbi5saXN0ZW5lciBjYWxsX29uX2lucHV0X3doZW4gKGZ1biBfZXYgdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgb25faW5wdXQgdmFsdWUpXG4gICAgICAgICAgICAgOyBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSB2YWx1ZSB+ZjpPcHRpb24ucmV0dXJuXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgW11cbiAgOztcblxuICAoKiBBY2NvcmRpbmcgdG9cbiAgICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0L2NvbG9yI1ZhbHVlIHRoZVxuICAgICB2YWx1ZSBtdXN0IGJlIHNldCBpbiBoZXggZm9ybWF0IGFuZCB3aWxsIGFsd2F5cyBjb21lcyBiYWNrIGluIGhleCBmb3JtYXQuICopXG4gIGxldCBjb2xvcl9waWNrZXJcbiAgICAgICAgPyhleHRyYV9hdHRyID0gQXR0ci5lbXB0eSlcbiAgICAgICAgPyhjYWxsX29uX2lucHV0X3doZW4gPSBDYWxsX29uX2lucHV0X3doZW4uVGV4dF9jaGFuZ2VkKVxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCAoYEhleCB2YWx1ZV8pID0gdmFsdWUgaW5cbiAgICBbIEF0dHIuKHR5cGVfIFwiY29sb3JcIiBAIHZhbHVlX3Byb3AgdmFsdWVfIEAgZXh0cmFfYXR0cilcbiAgICA7IENhbGxfb25faW5wdXRfd2hlbi5saXN0ZW5lciBjYWxsX29uX2lucHV0X3doZW4gKGZ1biBfZXYgcyAtPiBvbl9pbnB1dCAoYEhleCBzKSlcbiAgICBdXG4gICAgfD4gaW5wdXRfbm9kZSA/ZGlzYWJsZWQgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5lbmRcblxubW9kdWxlIEJ1dHRvbiA9IHN0cnVjdFxuICBsZXQgd2l0aF92YWxpZGF0aW9uXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB0ZXh0XG4gICAgICAgIH52YWxpZGF0aW9uXG4gICAgICAgIH5vbl9jbGlja1xuICAgID1cbiAgICBtYXRjaCB2YWxpZGF0aW9uIHdpdGhcbiAgICB8IE9rIHJlc3VsdCAtPlxuICAgICAgTm9kZS5idXR0b25cbiAgICAgICAgfmF0dHJzOlxuICAgICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgICAoWyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrIHJlc3VsdCk7IEF0dHIudHlwZV8gXCJidXR0b25cIiBdXG4gICAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAgICAgXVxuICAgICAgICBbIE5vZGUudGV4dCB0ZXh0IF1cbiAgICB8IEVycm9yIHJlYXNvbiAtPlxuICAgICAgTm9kZS5idXR0b25cbiAgICAgICAgfmF0dHJzOlxuICAgICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgICAoWyBBdHRyLmRpc2FibGVkXG4gICAgICAgICAgICAgICA7IEF0dHIudHlwZV8gXCJidXR0b25cIlxuICAgICAgICAgICAgICAgOyBBdHRyLmNyZWF0ZSBcInRvb2x0aXBcIiByZWFzb25cbiAgICAgICAgICAgICAgIDsgQXR0ci5jcmVhdGUgXCJ0b29sdGlwLXBvc2l0aW9uXCIgXCJ0b3BcIlxuICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICAgIF1cbiAgICAgICAgWyBOb2RlLnRleHQgdGV4dCBdXG4gIDs7XG5cbiAgbGV0IHNpbXBsZVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB0ZXh0XG4gICAgICAgIH5vbl9jbGlja1xuICAgID1cbiAgICBOb2RlLmJ1dHRvblxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJidXR0b25cIjsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl9jbGljayAoKSkgXVxuICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgWyBOb2RlLnRleHQgdGV4dCBdXG4gIDs7XG5lbmRcblxubW9kdWxlIFJhZGlvX2J1dHRvbnMgPSBzdHJ1Y3RcbiAgbGV0IGltcGxcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID8oc3R5bGUgOiBTZWxlY3RhYmxlX3N0eWxlLnQgPSBOYXRpdmUpXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfm9yaWVudGF0aW9uXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH5vbl9jbGlja1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgICAgICB+ZXF1YWxcbiAgICAgICAgdmFsdWVzXG4gICAgPVxuICAgIGxldCBpbnB1dF9hdHRycywgbGFiZWxfYXR0cnMgPVxuICAgICAgbWF0Y2ggc3R5bGUgd2l0aFxuICAgICAgfCBOYXRpdmUgLT4gW10sIGZ1biB+Y2hlY2tlZDpfIC0+IFtdXG4gICAgICB8IEJ1dHRvbl9saWtlIHsgZXh0cmFfYXR0cnMgfSAtPlxuICAgICAgICBbIEF0dHIuc3R5bGUgU2VsZWN0YWJsZV9zdHlsZS5oaWRlX25hdGl2ZV9pbnB1dHMgXSwgZXh0cmFfYXR0cnNcbiAgICBpblxuICAgIHN0cnVjdHVyYWxfbGlzdFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gICAgICB+b3JpZW50YXRpb25cbiAgICAgIChbIEF0dHIuY2xhc3NlcyBbIFwid2lkZ2V0LXJhZGlvLWJ1dHRvbnNcIjsgXCJyYWRpby1idXR0b24tY29udGFpbmVyXCIgXSBdXG4gICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgKExpc3QubWFwIHZhbHVlcyB+ZjooZnVuIGl0ZW0gLT5cbiAgICAgICAgIGxldCBjaGVja2VkID0gT3B0aW9uLnZhbHVlX21hcCBzZWxlY3RlZCB+ZGVmYXVsdDpmYWxzZSB+ZjooZXF1YWwgaXRlbSkgaW5cbiAgICAgICAgIE5vZGUubGFiZWxcbiAgICAgICAgICAgfmF0dHJzOlsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKSAobGFiZWxfYXR0cnMgfmNoZWNrZWQpIF1cbiAgICAgICAgICAgWyBOb2RlLmlucHV0XG4gICAgICAgICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICA7IEF0dHIubmFtZSBuYW1lXG4gICAgICAgICAgICAgICAgICA7IEF0dHIuY2xhc3NlcyBbIFwicmFkaW8tYnV0dG9uXCIgXVxuICAgICAgICAgICAgICAgICAgOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrIGl0ZW0pXG4gICAgICAgICAgICAgICAgICA7IEF0dHIuYm9vbF9wcm9wZXJ0eSBcImNoZWNrZWRcIiBjaGVja2VkXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICBAIGlucHV0X2F0dHJzXG4gICAgICAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAoKVxuICAgICAgICAgICA7IE5vZGUudGV4dCAodG9fc3RyaW5nIGl0ZW0pXG4gICAgICAgICAgIF0pKVxuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/c3R5bGVcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIEUgOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH5vbl9jbGlja1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgdmFsdWVzXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c3R5bGVcbiAgICAgIH5vcmllbnRhdGlvbjpgVmVydGljYWxcbiAgICAgIH5uYW1lXG4gICAgICB+b25fY2xpY2tcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpFLnRvX3N0cmluZ1xuICAgICAgfmVxdWFsOkUuZXF1YWxcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgICAgdmFsdWVzXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc19ob3Jpem9udGFsXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3N0eWxlXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBFIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+bmFtZVxuICAgICAgICB+b25fY2xpY2tcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIHZhbHVlc1xuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3N0eWxlXG4gICAgICB+b3JpZW50YXRpb246YEhvcml6b250YWxcbiAgICAgIH5uYW1lXG4gICAgICB+b25fY2xpY2tcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpFLnRvX3N0cmluZ1xuICAgICAgfmVxdWFsOkUuZXF1YWxcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgICAgdmFsdWVzXG4gIDs7XG5lbmRcblxubW9kdWxlIEZpbGVfc2VsZWN0ID0gc3RydWN0XG4gIG1vZHVsZSBKcyA9IEpzX29mX29jYW1sLkpzXG5cbiAgbGV0IGFjY2VwdF9hdHRycyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IEF0dHIuZW1wdHlcbiAgICB8IFNvbWUgYWNjZXB0cyAtPlxuICAgICAgQXR0ci5jcmVhdGVcbiAgICAgICAgXCJhY2NlcHRcIlxuICAgICAgICAoTGlzdC5tYXAgYWNjZXB0cyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgfCBgRXh0ZW5zaW9uIHMgLT4gaWYgU3RyaW5nLmlzX3ByZWZpeCBzIH5wcmVmaXg6XCIuXCIgdGhlbiBzIGVsc2UgXCIuXCIgXiBzXG4gICAgICAgICAgIHwgYE1pbWV0eXBlIHMgLT4gcylcbiAgICAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIilcbiAgOztcblxuICBsZXQgbGlzdFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID9hY2NlcHRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS5pbnB1dFxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJmaWxlXCJcbiAgICAgICAgICAgICA7IGFjY2VwdF9hdHRycyBhY2NlcHRcbiAgICAgICAgICAgICA7IEF0dHIuY3JlYXRlIFwibXVsdGlwbGVcIiBcIlwiXG4gICAgICAgICAgICAgOyBBdHRyLm9uX2ZpbGVfaW5wdXQgKGZ1biBfZXYgZmlsZV9saXN0IC0+XG4gICAgICAgICAgICAgICAgIGxldCBmaWxlcyA9XG4gICAgICAgICAgICAgICAgICAgTGlzdC5pbml0IGZpbGVfbGlzdCMjLmxlbmd0aCB+ZjooZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGZpbGVfbGlzdCMjaXRlbSBpXG4gICAgICAgICAgICAgICAgICAgICB8PiBKcy5PcHQudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICB8PiBPcHRpb24udmFsdWVfZXhuIH5tZXNzYWdlOlslc3RyaW5nIFwiY291bGRuJ3QgZ2V0IGZpbGUgJXtpI0ludH1cIl0pXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIG9uX2lucHV0IGZpbGVzKVxuICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAgIF1cbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IHNpbmdsZVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID9hY2NlcHRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS5pbnB1dFxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJmaWxlXCJcbiAgICAgICAgICAgICA7IGFjY2VwdF9hdHRycyBhY2NlcHRcbiAgICAgICAgICAgICA7IEF0dHIub25fZmlsZV9pbnB1dCAoZnVuIF9ldiBmaWxlX2xpc3QgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGZpbGUgPSBmaWxlX2xpc3QjI2l0ZW0gMCB8PiBKcy5PcHQudG9fb3B0aW9uIGluXG4gICAgICAgICAgICAgICAgIG9uX2lucHV0IGZpbGUpXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgKClcbiAgOztcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAoQykgSmVhbi1DaHJpc3RvcGhlIEZpbGxpYXRyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIFRoaXMgc29mdHdhcmUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAgICAqKVxuKCogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAqKVxuKCogIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgICAgICAgICAgICAqKVxuKCogIGRlc2NyaWJlZCBpbiBmaWxlIExJQ0VOU0UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAgICAqKVxuKCogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAqKVxuKCogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKnMgTWFwcyBvZiBpbnRlZ2VycyBpbXBsZW1lbnRlZCBhcyBQYXRyaWNpYSB0cmVlcywgZm9sbG93aW5nIENocmlzXG4gICAgT2thc2FraSBhbmQgQW5kcmV3IEdpbGwncyBwYXBlciB7XFxlbSBGYXN0IE1lcmdlYWJsZSBJbnRlZ2VyIE1hcHN9XG4gICAgKHtcXHR0XFxzbWFsbCBodHRwOi8vd3d3LmNzLmNvbHVtYmlhLmVkdS9cXH57fWNkby9wYXBlcnMuaHRtbFxcI21sOThtYXBzfSkuXG4gICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIG1vZHVsZSBbUHRzZXRdIHdoaWNoIGlzIGFsc28gYmFzZWQgb24gdGhlXG4gICAgc2FtZSBkYXRhLXN0cnVjdHVyZS4gKilcblxudHlwZSBrZXkgPSBpbnRcblxudHlwZSAnYSB0ID1cbiAgfCBFbXB0eVxuICB8IExlYWYgb2YgaW50ICogJ2FcbiAgfCBCcmFuY2ggb2YgaW50ICogaW50ICogJ2EgdCAqICdhIHRcblxubGV0IGVtcHR5ID0gRW1wdHlcblxubGV0IGlzX2VtcHR5IHQgPSB0ID0gRW1wdHlcblxubGV0IHplcm9fYml0IGsgbSA9IChrIGxhbmQgbSkgPT0gMFxuXG5sZXQgcmVjIG1lbSBrID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBmYWxzZVxuICB8IExlYWYgKGosXykgLT4gayA9PSBqXG4gIHwgQnJhbmNoIChfLCBtLCBsLCByKSAtPiBtZW0gayAoaWYgemVyb19iaXQgayBtIHRoZW4gbCBlbHNlIHIpXG5cbmxldCByZWMgZmluZCBrID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGsgPT0gaiB0aGVuIHggZWxzZSByYWlzZSBOb3RfZm91bmRcbiAgfCBCcmFuY2ggKF8sIG0sIGwsIHIpIC0+IGZpbmQgayAoaWYgemVyb19iaXQgayBtIHRoZW4gbCBlbHNlIHIpXG5cbmxldCBmaW5kX29wdCBrIG0gPSB0cnkgU29tZSAoZmluZCBrIG0pIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuKCogTm90ZTogZmluZF9maXJzdC9sYXN0IGhhdmUgdG8gbG9vayBpbiBib3RoIHN1YnRyZWVzXG4gICBhcyB0aGVzZSBhcmUgbGl0dGxlLWVuZGlhbiBQYXRyaWNpYSB0cmVlcyAqKVxubGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiBTb21lIChqLHgpIGVsc2UgTm9uZVxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2ZpcnN0X29wdCBmIGwsIGZpbmRfZmlyc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT5cbiAgICAgICAgaWYgbGsgPCByayB0aGVuIFNvbWUgKGxrLGx2KSBlbHNlIFNvbWUgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IFNvbWUgdlxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG5cbmxldCBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gKGoseCkgZWxzZSByYWlzZSBOb3RfZm91bmRcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9maXJzdF9vcHQgZiBsLCBmaW5kX2ZpcnN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+IGlmIGxrIDwgcmsgdGhlbiAobGssbHYpIGVsc2UgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiBTb21lIChqLHgpIGVsc2UgTm9uZVxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2xhc3Rfb3B0IGYgbCwgZmluZF9sYXN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+XG4gICAgICAgIGlmIGxrID4gcmsgdGhlbiBTb21lIChsayxsdikgZWxzZSBTb21lIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiBTb21lIHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuXG5sZXQgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gKGoseCkgZWxzZSByYWlzZSBOb3RfZm91bmRcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9sYXN0X29wdCBmIGwsIGZpbmRfbGFzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPiBpZiBsayA+IHJrIHRoZW4gKGxrLGx2KSBlbHNlIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiB2XG4gICAgfCBOb25lLCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgbG93ZXN0X2JpdCB4ID0geCBsYW5kICgteClcblxubGV0IGJyYW5jaGluZ19iaXQgcDAgcDEgPSBsb3dlc3RfYml0IChwMCBseG9yIHAxKVxuXG5sZXQgbWFzayBwIG0gPSBwIGxhbmQgKG0tMSlcblxubGV0IGpvaW4gKHAwLHQwLHAxLHQxKSA9XG4gIGxldCBtID0gYnJhbmNoaW5nX2JpdCBwMCBwMSBpblxuICBpZiB6ZXJvX2JpdCBwMCBtIHRoZW5cbiAgICBCcmFuY2ggKG1hc2sgcDAgbSwgbSwgdDAsIHQxKVxuICBlbHNlXG4gICAgQnJhbmNoIChtYXNrIHAwIG0sIG0sIHQxLCB0MClcblxubGV0IG1hdGNoX3ByZWZpeCBrIHAgbSA9IChtYXNrIGsgbSkgPT0gcFxuXG5sZXQgYWRkIGsgeCB0ID1cbiAgbGV0IHJlYyBpbnMgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTGVhZiAoayx4KVxuICAgIHwgTGVhZiAoaixfKSBhcyB0IC0+XG4gICAgICBpZiBqID09IGsgdGhlbiBMZWFmIChrLHgpIGVsc2Ugam9pbiAoaywgTGVhZiAoayx4KSwgaiwgdClcbiAgICB8IEJyYW5jaCAocCxtLHQwLHQxKSBhcyB0IC0+XG4gICAgICBpZiBtYXRjaF9wcmVmaXggayBwIG0gdGhlblxuXHRpZiB6ZXJvX2JpdCBrIG0gdGhlblxuXHQgIEJyYW5jaCAocCwgbSwgaW5zIHQwLCB0MSlcblx0ZWxzZVxuXHQgIEJyYW5jaCAocCwgbSwgdDAsIGlucyB0MSlcbiAgICAgIGVsc2Vcblx0am9pbiAoaywgTGVhZiAoayx4KSwgcCwgdClcbiAgaW5cbiAgaW5zIHRcblxubGV0IHNpbmdsZXRvbiBrIHYgPVxuICBhZGQgayB2IGVtcHR5XG5cbmxldCBicmFuY2ggPSBmdW5jdGlvblxuICB8IChfLF8sRW1wdHksdCkgLT4gdFxuICB8IChfLF8sdCxFbXB0eSkgLT4gdFxuICB8IChwLG0sdDAsdDEpICAgLT4gQnJhbmNoIChwLG0sdDAsdDEpXG5cbmxldCByZW1vdmUgayB0ID1cbiAgbGV0IHJlYyBybXYgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKGosXykgYXMgdCAtPiBpZiBrID09IGogdGhlbiBFbXB0eSBlbHNlIHRcbiAgICB8IEJyYW5jaCAocCxtLHQwLHQxKSBhcyB0IC0+XG4gICAgICBpZiBtYXRjaF9wcmVmaXggayBwIG0gdGhlblxuXHRpZiB6ZXJvX2JpdCBrIG0gdGhlblxuXHQgIGJyYW5jaCAocCwgbSwgcm12IHQwLCB0MSlcblx0ZWxzZVxuXHQgIGJyYW5jaCAocCwgbSwgdDAsIHJtdiB0MSlcbiAgICAgIGVsc2Vcblx0dFxuICBpblxuICBybXYgdFxuXG5sZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwXG4gIHwgTGVhZiBfIC0+IDFcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gY2FyZGluYWwgdDAgKyBjYXJkaW5hbCB0MVxuXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBMZWFmIChrLHgpIC0+IGYgayB4XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGl0ZXIgZiB0MDsgaXRlciBmIHQxXG5cbmxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoayx4KSAtPiBMZWFmIChrLCBmIHgpXG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IEJyYW5jaCAocCwgbSwgbWFwIGYgdDAsIG1hcCBmIHQxKVxuXG5sZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLHgpIC0+IExlYWYgKGssIGYgayB4KVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBCcmFuY2ggKHAsIG0sIG1hcGkgZiB0MCwgbWFwaSBmIHQxKVxuXG5sZXQgcmVjIGZvbGQgZiBzIGFjY3UgPSBtYXRjaCBzIHdpdGhcbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgTGVhZiAoayx4KSAtPiBmIGsgeCBhY2N1XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGZvbGQgZiB0MCAoZm9sZCBmIHQxIGFjY3UpXG5cbmxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiB0cnVlXG4gIHwgTGVhZiAoaywgdikgIC0+IHAgayB2XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGZvcl9hbGwgcCB0MCAmJiBmb3JfYWxsIHAgdDFcblxubGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gZmFsc2VcbiAgfCBMZWFmIChrLCB2KSAtPiBwIGsgdlxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBleGlzdHMgcCB0MCB8fCBleGlzdHMgcCB0MVxuXG5sZXQgcmVjIGZpbHRlciBwciA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLCB2KSBhcyB0IC0+IGlmIHByIGsgdiB0aGVuIHQgZWxzZSBFbXB0eVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBicmFuY2ggKHAsIG0sIGZpbHRlciBwciB0MCwgZmlsdGVyIHByIHQxKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgcHIgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoaywgdikgLT4gKG1hdGNoIHByIGsgdiB3aXRoIFNvbWUgdicgLT4gTGVhZiAoaywgdicpIHwgTm9uZSAtPiBFbXB0eSlcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gYnJhbmNoIChwLCBtLCBmaWx0ZXJfbWFwIHByIHQwLCBmaWx0ZXJfbWFwIHByIHQxKVxuXG5sZXQgcGFydGl0aW9uIHAgcyA9XG4gIGxldCByZWMgcGFydCAodCxmIGFzIGFjYykgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgfCBMZWFmIChrLCB2KSAtPiBpZiBwIGsgdiB0aGVuIChhZGQgayB2IHQsIGYpIGVsc2UgKHQsIGFkZCBrIHYgZilcbiAgICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBwYXJ0IChwYXJ0IGFjYyB0MCkgdDFcbiAgaW5cbiAgcGFydCAoRW1wdHksIEVtcHR5KSBzXG5cbmxldCByZWMgY2hvb3NlID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChrLCB2KSAtPiAoaywgdilcbiAgfCBCcmFuY2ggKF8sIF8sIHQwLCBfKSAtPiBjaG9vc2UgdDAgICAoKiB3ZSBrbm93IHRoYXQgW3QwXSBpcyBub24tZW1wdHkgKilcblxubGV0IHJlYyBjaG9vc2Vfb3B0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaywgdikgLT4gU29tZSAoaywgdilcbiAgfCBCcmFuY2ggKF8sIF8sIHQwLCBfKSAtPiBjaG9vc2Vfb3B0IHQwICAgKCogd2Uga25vdyB0aGF0IFt0MF0gaXMgbm9uLWVtcHR5ICopXG5cbmxldCBzcGxpdCB4IG0gPVxuICBsZXQgY29sbCBrIHYgKGwsIGIsIHIpID1cbiAgICBpZiBrIDwgeCB0aGVuIGFkZCBrIHYgbCwgYiwgclxuICAgIGVsc2UgaWYgayA+IHggdGhlbiBsLCBiLCBhZGQgayB2IHJcbiAgICBlbHNlIGwsIFNvbWUgdiwgclxuICBpblxuICBmb2xkIGNvbGwgbSAoZW1wdHksIE5vbmUsIGVtcHR5KVxuXG5sZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChrLCB2KSAtPiAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbGV0IChrcywgXykgYXMgYnMgPSBtaW5fYmluZGluZyBzIGluXG4gICAgbGV0IChrdCwgXykgYXMgYnQgPSBtaW5fYmluZGluZyB0IGluXG4gICAgaWYga3MgPCBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IHJlYyBtaW5fYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChrLCB2KSAtPiBTb21lIChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBtYXRjaCAobWluX2JpbmRpbmdfb3B0IHMsIG1pbl9iaW5kaW5nX29wdCB0KSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IE5vbmUsIGJ0IC0+IGJ0XG4gICAgfCBicywgTm9uZSAtPiBic1xuICAgIHwgKFNvbWUgKGtzLCBfKSBhcyBicyksIChTb21lIChrdCwgXykgYXMgYnQpIC0+XG4gICAgICBpZiBrcyA8IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgcmVjIG1heF9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChrLCB2KSAtPiAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbGV0IChrcywgXykgYXMgYnMgPSBtYXhfYmluZGluZyBzIGluXG4gICAgbGV0IChrdCwgXykgYXMgYnQgPSBtYXhfYmluZGluZyB0IGluXG4gICAgaWYga3MgPiBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IHJlYyBtYXhfYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChrLCB2KSAtPiBTb21lIChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBtYXRjaCBtYXhfYmluZGluZ19vcHQgcywgbWF4X2JpbmRpbmdfb3B0IHQgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCBOb25lLCBidCAtPiBidFxuICAgIHwgYnMsIE5vbmUgLT4gYnNcbiAgICB8IChTb21lIChrcywgXykgYXMgYnMpLCAoU29tZSAoa3QsIF8pIGFzIGJ0KSAtPlxuICAgICAgaWYga3MgPiBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IGJpbmRpbmdzIG0gPVxuICBmb2xkIChmdW4gayB2IGFjYyAtPiAoaywgdikgOjogYWNjKSBtIFtdXG5cbigqIHdlIG9yZGVyIGNvbnN0cnVjdG9ycyBhcyBFbXB0eSA8IExlYWYgPCBCcmFuY2ggKilcbmxldCBjb21wYXJlIGNtcCB0MSB0MiA9XG4gIGxldCByZWMgY29tcGFyZV9hdXggdDEgdDIgPSBtYXRjaCB0MSx0MiB3aXRoXG4gICAgfCBFbXB0eSwgRW1wdHkgLT4gMFxuICAgIHwgRW1wdHksIF8gLT4gLTFcbiAgICB8IF8sIEVtcHR5IC0+IDFcbiAgICB8IExlYWYgKGsxLHgxKSwgTGVhZiAoazIseDIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgazEgazIgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZSBjbXAgeDEgeDJcbiAgICB8IExlYWYgXywgQnJhbmNoIF8gLT4gLTFcbiAgICB8IEJyYW5jaCBfLCBMZWFmIF8gLT4gMVxuICAgIHwgQnJhbmNoIChwMSxtMSxsMSxyMSksIEJyYW5jaCAocDIsbTIsbDIscjIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgcDEgcDIgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuXHRsZXQgYyA9IGNvbXBhcmUgbTEgbTIgaW5cblx0aWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2F1eCBsMSBsMiBpblxuICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgY29tcGFyZV9hdXggcjEgcjJcbiAgaW5cbiAgY29tcGFyZV9hdXggdDEgdDJcblxubGV0IGVxdWFsIGVxIHQxIHQyID1cbiAgbGV0IHJlYyBlcXVhbF9hdXggdDEgdDIgPSBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgKGsxLHgxKSwgTGVhZiAoazIseDIpIC0+IGsxID0gazIgJiYgZXEgeDEgeDJcbiAgICB8IEJyYW5jaCAocDEsbTEsbDEscjEpLCBCcmFuY2ggKHAyLG0yLGwyLHIyKSAtPlxuICAgICAgcDEgPSBwMiAmJiBtMSA9IG0yICYmIGVxdWFsX2F1eCBsMSBsMiAmJiBlcXVhbF9hdXggcjEgcjJcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgZXF1YWxfYXV4IHQxIHQyXG5cbmxldCBtZXJnZSBmIG0xIG0yID1cbiAgbGV0IGFkZCBtIGsgPSBmdW5jdGlvbiBOb25lIC0+IG0gfCBTb21lIHYgLT4gYWRkIGsgdiBtIGluXG4gICgqIGZpcnN0IGNvbnNpZGVyIGFsbCBiaW5kaW5ncyBpbiBtMSAqKVxuICBsZXQgbSA9IGZvbGRcbiAgICAgIChmdW4gazEgdjEgbSAtPiBhZGQgbSBrMSAoZiBrMSAoU29tZSB2MSkgKGZpbmRfb3B0IGsxIG0yKSkpIG0xIGVtcHR5IGluXG4gICgqIHRoZW4gYmluZGluZ3MgaW4gbTIgdGhhdCBhcmUgbm90IGluIG0xICopXG4gIGZvbGQgKGZ1biBrMiB2MiBtIC0+IGlmIG1lbSBrMiBtMSB0aGVuIG0gZWxzZSBhZGQgbSBrMiAoZiBrMiBOb25lIChTb21lIHYyKSkpXG4gICAgbTIgbVxuXG5sZXQgdXBkYXRlIHggZiBtID1cbiAgbWF0Y2ggZiAoZmluZF9vcHQgeCBtKSB3aXRoXG4gIHwgTm9uZSAtPiByZW1vdmUgeCBtXG4gIHwgU29tZSB6IC0+IGFkZCB4IHogbVxuXG5sZXQgdW5zaWduZWRfbHQgbiBtID0gbiA+PSAwICYmIChtIDwgMCB8fCBuIDwgbSlcblxubGV0IHJlYyB1bmlvbiBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSwgdCAgLT4gdFxuICB8IHQsIEVtcHR5ICAtPiB0XG4gIHwgTGVhZiAoayx2MSksIHQgLT5cbiAgICAgIHVwZGF0ZSBrIChmdW5jdGlvbiBOb25lIC0+IFNvbWUgdjEgfCBTb21lIHYyIC0+IGYgayB2MSB2MikgdFxuICB8IHQsIExlYWYgKGssdjIpIC0+XG4gICAgICB1cGRhdGUgayAoZnVuY3Rpb24gTm9uZSAtPiBTb21lIHYyIHwgU29tZSB2MSAtPiBmIGsgdjEgdjIpIHRcbiAgfCAoQnJhbmNoIChwLG0sczAsczEpIGFzIHMpLCAoQnJhbmNoIChxLG4sdDAsdDEpIGFzIHQpIC0+XG4gICAgICBpZiBtID09IG4gJiYgbWF0Y2hfcHJlZml4IHEgcCBtIHRoZW5cblx0KCogVGhlIHRyZWVzIGhhdmUgdGhlIHNhbWUgcHJlZml4LiBNZXJnZSB0aGUgc3VidHJlZXMuICopXG5cdGJyYW5jaCAocCwgbSwgdW5pb24gZiAoczAsdDApLCB1bmlvbiBmIChzMSx0MSkpXG4gICAgICBlbHNlIGlmIHVuc2lnbmVkX2x0IG0gbiAmJiBtYXRjaF9wcmVmaXggcSBwIG0gdGhlblxuXHQoKiBbcV0gY29udGFpbnMgW3BdLiBNZXJnZSBbdF0gd2l0aCBhIHN1YnRyZWUgb2YgW3NdLiAqKVxuXHRpZiB6ZXJvX2JpdCBxIG0gdGhlblxuXHQgIGJyYW5jaCAocCwgbSwgdW5pb24gZiAoczAsdCksIHMxKVxuICAgICAgICBlbHNlXG5cdCAgYnJhbmNoIChwLCBtLCBzMCwgdW5pb24gZiAoczEsdCkpXG4gICAgICBlbHNlIGlmIHVuc2lnbmVkX2x0IG4gbSAmJiBtYXRjaF9wcmVmaXggcCBxIG4gdGhlblxuXHQoKiBbcF0gY29udGFpbnMgW3FdLiBNZXJnZSBbc10gd2l0aCBhIHN1YnRyZWUgb2YgW3RdLiAqKVxuXHRpZiB6ZXJvX2JpdCBwIG4gdGhlblxuXHQgIGJyYW5jaCAocSwgbiwgdW5pb24gZiAocyx0MCksIHQxKVxuXHRlbHNlXG5cdCAgYnJhbmNoIChxLCBuLCB0MCwgdW5pb24gZiAocyx0MSkpXG4gICAgICBlbHNlXG5cdCgqIFRoZSBwcmVmaXhlcyBkaXNhZ3JlZS4gKilcblx0am9pbiAocCwgcywgcSwgdClcblxubGV0IHVuaW9uIGYgcyB0ID0gdW5pb24gZiAocyx0KVxuXG5sZXQgdG9fc2VxIG0gPVxuICBsZXQgcmVjIHByZXBlbmRfc2VxIG0gcyA9IG1hdGNoIG0gd2l0aFxuICAgIHwgRW1wdHkgLT4gc1xuICAgIHwgTGVhZiAoaywgdikgLT4gZnVuICgpIC0+IFNlcS5Db25zKChrLHYpLCBzKVxuICAgIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPiBwcmVwZW5kX3NlcSBsIChwcmVwZW5kX3NlcSByIHMpXG4gIGluXG4gIHByZXBlbmRfc2VxIG0gU2VxLmVtcHR5XG5cbmxldCB0b19zZXFfZnJvbSBrIG0gPVxuICBsZXQgcmVjIHByZXBlbmRfc2VxIG0gcyA9IG1hdGNoIG0gd2l0aFxuICAgIHwgRW1wdHkgLT4gc1xuICAgIHwgTGVhZiAoa2V5LCB2KSAtPiBpZiBrZXkgPj0gayB0aGVuIGZ1biAoKSAtPiBTZXEuQ29ucygoa2V5LHYpLCBzKSBlbHNlIHNcbiAgICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT4gcHJlcGVuZF9zZXEgbCAocHJlcGVuZF9zZXEgciBzKVxuICBpblxuICBwcmVwZW5kX3NlcSBtIFNlcS5lbXB0eVxuXG5sZXQgYWRkX3NlcSBzIG0gPVxuICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoaywgdikgLT4gYWRkIGsgdiBtKSBtIHNcblxubGV0IG9mX3NlcSBzID1cbiAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssIHYpIC0+IGFkZCBrIHYgbSkgZW1wdHkgc1xuIiwibGV0IHV0Zjhfb2ZfY29kZSBidWYgeCA9XG4gIGxldCBhZGQgPSBCdWZmZXIuYWRkX2NoYXIgaW5cblxuICAoKiBTdHJhaWdodCA8PSBkb2Vzbid0IHdvcmsgd2l0aCBzaWduZWQgMzEtYml0IGludHMgKilcbiAgbGV0IG1heGJpdHMgbiB4ID0geCBsc3IgbiA9IDAgaW5cblxuICBpZiBtYXhiaXRzIDcgeCB0aGVuICgqIDcgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociB4KVxuICBlbHNlIGlmIG1heGJpdHMgMTEgeCB0aGVuIChcbiAgICAoKiA1ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDAxMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMTYgeCB0aGVuIChcbiAgICAoKiA0ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTEwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMDAxMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMjEgeCB0aGVuIChcbiAgICAoKiAzICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDAwMDExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMjYgeCB0aGVuIChcbiAgICAoKiAyICsgNiArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTExMDAwIGxvciAoKHggbHNyIDI0KSBsYW5kIDBiMDAwMDAwMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIChcbiAgICBhc3NlcnQgKG1heGJpdHMgMzEgeCk7XG4gICAgKCogMSArIDYgKyA2ICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTExMDAgbG9yICgoeCBsc3IgMzApIGxhbmQgMGIwMDAwMDAwMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAyNCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcblxubGV0IGNvZGVfb2Zfc3Vycm9nYXRlX3BhaXIgaSBqID1cbiAgbGV0IGhpZ2gxMCA9IGkgLSAweEQ4MDAgaW5cbiAgbGV0IGxvdzEwID0gaiAtIDB4REMwMCBpblxuICAweDEwMDAwICsgKChoaWdoMTAgbHNsIDEwKSBsb3IgbG93MTApXG5cbmxldCB1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIGJ1ZiBpIGogPVxuICB1dGY4X29mX2NvZGUgYnVmIChjb2RlX29mX3N1cnJvZ2F0ZV9wYWlyIGkgailcbiIsImxldCB2ZXJzaW9uID0gXCIyLjIuMlwiXG5cbmV4Y2VwdGlvbiBKc29uX2Vycm9yIG9mIHN0cmluZ1xuXG5sZXQganNvbl9lcnJvciBzID0gcmFpc2UgKEpzb25fZXJyb3IgcylcblxuZXhjZXB0aW9uIEVuZF9vZl9hcnJheVxuZXhjZXB0aW9uIEVuZF9vZl9vYmplY3RcbmV4Y2VwdGlvbiBFbmRfb2ZfdHVwbGVcbmV4Y2VwdGlvbiBFbmRfb2ZfaW5wdXRcblxudHlwZSBsZXhlcl9zdGF0ZSA9IHtcbiAgYnVmIDogQnVmZmVyLnQ7ICgqIEJ1ZmZlciB1c2VkIHRvIGFjY3VtdWxhdGUgc3Vic3RyaW5ncyAqKVxuICBtdXRhYmxlIGxudW0gOiBpbnQ7ICgqIEN1cnJlbnQgbGluZSBudW1iZXIgKHN0YXJ0aW5nIGZyb20gMSkgKilcbiAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgICAoKiBBYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBjdXJyZW50IGxpbmVcbiAgICAgICAgIChzdGFydGluZyBmcm9tIDApICopXG4gIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uOyAoKiBOYW1lIGRlc2NyaWJpbmcgdGhlIGlucHV0IGZpbGUgKilcbn1cblxubW9kdWxlIExleGVyX3N0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IGxleGVyX3N0YXRlID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuZW5kXG5cbmxldCBpbml0X2xleGVyID9idWYgP2ZuYW1lID8obG51bSA9IDEpICgpID1cbiAgbGV0IGJ1ZiA9IG1hdGNoIGJ1ZiB3aXRoIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAyNTYgfCBTb21lIGJ1ZiAtPiBidWYgaW5cbiAgeyBidWY7IGxudW07IGJvbCA9IDA7IGZuYW1lIH1cbiIsImxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanVuayBidWYgbiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyBidWYgbiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanVua19yZWMgYnVmIG4gbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyIFwibGliL2xleGVyX3V0aWxzLm1sbFwiXG4gICAgICAgICggKCkgKVxuIyA5OCBcImxpYi9sZXhlcl91dGlscy5tbFwiXG5cbiAgfCAxIC0+XG4jIDMgXCJsaWIvbGV4ZXJfdXRpbHMubWxsXCJcbiAgICAgIChcbiAgICAgaWYgbiA8PSAwIHRoZW4gKClcbiAgICAgZWxzZSBiZWdpblxuICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgKExleGluZy5sZXhlbWVfY2hhciBsZXhidWYgMCk7XG4gICAgICAgcmVhZF9qdW5rIGJ1ZiAobiAtIDEpIGxleGJ1ZlxuICAgICBlbmRcbiAgICAgKVxuIyAxMDkgXCJsaWIvbGV4ZXJfdXRpbHMubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2p1bmtfcmVjIGJ1ZiBuIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDExIFwibGliL2xleGVyX3V0aWxzLm1sbFwiXG4gXG5sZXQgcmVhZF9qdW5rX3dpdGhvdXRfcG9zaXRpb25zIGJ1ZiBuIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gIGxldCBsZXhfYWJzX3BvcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyBpblxuICBsZXQgbGV4X3N0YXJ0X3BvcyA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gIHJlYWRfanVuayBidWYgbiBsZXhidWY7XG4gIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIGxleF9zdGFydF9wb3MgKyAxO1xuICBsZXhidWYubGV4X2Fic19wb3MgPC0gbGV4X2Fic19wb3NcblxuIyAxMjUgXCJsaWIvbGV4ZXJfdXRpbHMubWxcIlxuIiwiXG4oKiogezMgVHlwZSBvZiB0aGUgSlNPTiB0cmVlfSAqKVxuXG50eXBlIHQgPVxuICAgIFtcbiAgICB8IGBOdWxsXG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgfCBgSW50IG9mIGludFxuICAgIHwgYEZsb2F0IG9mIGZsb2F0XG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX2Zsb2F0IG9iIGZcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcblxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9zdGRfZmxvYXQgb2IgZlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG5cbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cblxubGV0IHRvX2J1ZmZlciA/KHN1ZiA9IFwiXCIpID8oc3RkID0gZmFsc2UpIG9iIHggPVxuICBpZiBzdGQgdGhlblxuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgZWxzZVxuICAgIHdyaXRlX2pzb24gb2IgeDtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3VmXG5cbmxldCB0b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlwiKSA/c3RkIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgdG9fY2hhbm5lbCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvYyB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX291dHB1dCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvdXQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICAoKiB0aGlzIHJlcXVpcmVzIGFuIGludCBhbmQgbmV2ZXIgdXNlcyBpdC4gVGhpcyBpcyBkb25lIHRvIHByZXNlcnZlXG4gICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgdG8gbm90IGJyZWFrIHRoZSBzaWduYXR1ciBidXQgY2FuIHNhZmVseVxuICAgICBiZSBjaGFuZ2VkIHRvIHJlcXVpcmUgdW5pdCBpbiBhIGZ1dHVyZSBjb21wYXRpYmlsaXR5LWJyZWFraW5nXG4gICAgIHJlbGVhc2UgKilcbiAgbGV0IF8gOiBpbnQgPSBvdXQjb3V0cHV0IChCdWZmZXIuY29udGVudHMgb2IpIDAgKEJ1ZmZlci5sZW5ndGggb2IpIGluXG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgeCAtPiB4XG5cbm1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICB8IGBJbnQgeCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2ZfaW50IHgpXG4gICAgfCBgRmxvYXQgeCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgc3RkIHRoZW4gc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgICBlbHNlIGpzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgaW5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYFN0cmluZyBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcblxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbmVuZFxuXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEludCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBGbG9hdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUZcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFN0cmluZyB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICB8IGBJbnQgYSwgYEludCBiIC0+IGEgPSBiXG4gICAgfCBgRmxvYXQgYSwgYEZsb2F0IGIgLT4gYSA9IGJcbiAgICB8IGBTdHJpbmcgYSwgYFN0cmluZyBiIC0+IGEgPSBiXG4gICAgfCBgQXNzb2MgeHMsIGBBc3NvYyB5cyAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5cyA9IGZ1biAoa2V5LCBfKSAoa2V5JywgXykgLT4gU3RyaW5nLmNvbXBhcmUga2V5IGtleScgaW5cbiAgICAgIGxldCB4cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHhzIGluXG4gICAgICBsZXQgeXMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB5cyBpblxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgKGZ1biAoa2V5LCB2YWx1ZSkgKGtleScsIHZhbHVlJykgLT5cbiAgICAgICAgbWF0Y2gga2V5ID0ga2V5JyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+IGVxdWFsIHZhbHVlIHZhbHVlJykgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IF8gLT4gZmFsc2VcblxubGV0IHByZXR0eV9wcmludCA/c3RkIG91dCB4ID0gUHJldHR5LnBwID9zdGQgb3V0IHhcbmxldCBwcmV0dHlfdG9fc3RyaW5nID9zdGQgeCA9IFByZXR0eS50b19zdHJpbmcgP3N0ZCB4XG5sZXQgcHJldHR5X3RvX2NoYW5uZWwgP3N0ZCBvYyB4ID0gUHJldHR5LnRvX2NoYW5uZWwgP3N0ZCBvYyB4XG5cbiMgMSBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIG1vZHVsZSBMZXhpbmcgPVxuICAgICgqXG4gICAgICBXZSBvdmVycmlkZSBMZXhpbmcuZW5naW5lIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IHBvc2l0aW9uXG4gICAgICByZWNvcmQgZWFjaCB0aW1lIGEgcnVsZSBpcyBtYXRjaGVkLlxuICAgICAgVGhpcyByZWR1Y2VzIHRvdGFsIHBhcnNpbmcgdGltZSBieSBhYm91dCAzMSUuXG4gICAgKilcbiAgc3RydWN0XG4gICAgaW5jbHVkZSBMZXhpbmdcblxuICAgIGV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcblxuICAgIGxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gICAgICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICAgICAgKCpcbiAgICAgIGlmIHJlc3VsdCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgICAgIGVuZDtcbiAgICAgICopXG4gICAgICByZXN1bHRcbiAgZW5kXG5cbiAgKCogc2VlIGRlc2NyaXB0aW9uIGluIGNvbW1vbi5tbGkgKilcbiAgdHlwZSBsZXhlcl9zdGF0ZSA9IENvbW1vbi5MZXhlcl9zdGF0ZS50ID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBkZWMgYyA9XG4gICAgQ2hhci5jb2RlIGMgLSA0OFxuXG4gIGxldCBoZXggYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICcwJy4uJzknIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcbiAgICAgIHwgJ2EnLi4nZicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyArIDEwXG4gICAgICB8ICdBJy4uJ0YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyAxMFxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIGxldCBjdXN0b21fZXJyb3IgZGVzY3IgdiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBvZmZzID0gbGV4YnVmLmxleF9hYnNfcG9zIC0gMSBpblxuICAgIGxldCBib2wgPSB2LmJvbCBpblxuICAgIGxldCBwb3MxID0gb2ZmcyArIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIC0gYm9sIC0gMSBpblxuICAgIGxldCBwb3MyID0gbWF4IHBvczEgKG9mZnMgKyBsZXhidWYubGV4X2N1cnJfcG9zIC0gYm9sKSBpblxuICAgIGxldCBmaWxlX2xpbmUgPVxuICAgICAgbWF0Y2ggdi5mbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBcIkxpbmVcIlxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgUHJpbnRmLnNwcmludGYgXCJGaWxlICVzLCBsaW5lXCIgc1xuICAgIGluXG4gICAgbGV0IGJ5dGVzID1cbiAgICAgIGlmIHBvczEgPSBwb3MyIHRoZW5cbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCJieXRlICVpXCIgKHBvczErMSlcbiAgICAgIGVsc2VcbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCJieXRlcyAlaS0laVwiIChwb3MxKzEpIChwb3MyKzEpXG4gICAgaW5cbiAgICBsZXQgbXNnID0gUHJpbnRmLnNwcmludGYgXCIlcyAlaSwgJXM6XFxuJXNcIiBmaWxlX2xpbmUgdi5sbnVtIGJ5dGVzIGRlc2NyIGluXG4gICAgQ29tbW9uLmpzb25fZXJyb3IgbXNnXG5cblxuICBsZXQgbGV4ZXJfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJyVzJ1wiIGRlc2NyIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikpXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBsb25nX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQganVuayA9IExleGluZy5sZXhlbWUgbGV4YnVmIGluXG4gICAgbGV0IGJ1Zl9zaXplID0gMzIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBidWZfc2l6ZSBpblxuICAgIGxldCAoKSA9IExleGVyX3V0aWxzLnJlYWRfanVua193aXRob3V0X3Bvc2l0aW9ucyBidWYgYnVmX3NpemUgbGV4YnVmIGluXG4gICAgbGV0IGV4dHJhX2p1bmsgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAnJXMlcydcIiBkZXNjciBqdW5rIGV4dHJhX2p1bmspXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBtaW4xMCA9IG1pbl9pbnQgLyAxMCAtIChpZiBtaW5faW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcbiAgbGV0IG1heDEwID0gbWF4X2ludCAvIDEwICsgKGlmIG1heF9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuXG4gIGV4Y2VwdGlvbiBJbnRfb3ZlcmZsb3dcblxuICBsZXQgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPj0gbWF4MTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuICsgZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIHRyeSBgSW50IChleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWYpXG4gICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmXG5cbiAgbGV0IGV4dHJhY3RfbmVnYXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSAgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgMSBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPD0gbWluMTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuIC0gZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPiAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIHRyeSBgSW50IChleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWYpXG4gICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmXG5cbiAgbGV0IG5ld2xpbmUgdiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIHYubG51bSA8LSB2LmxudW0gKyAxO1xuICAgIHYuYm9sIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3NcblxuICBsZXQgYWRkX2xleGVtZSBidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgQnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbiAgbGV0IG1hcF9sZXhlbWUgZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBmIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlbikgMCBsZW5cblxuICB0eXBlIHZhcmlhbnRfa2luZCA9IFsgYEVkZ3lfYnJhY2tldCB8IGBTcXVhcmVfYnJhY2tldCB8IGBEb3VibGVfcXVvdGUgXVxuXG4jIDE1NCBcImxpYi9yZWFkLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIzNlxcMjU1XFwyMzdcXDI1NVxcMDAzXFwwMDBcXDIzOVxcMjU1XFwwMTZcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNDlcXDI1NVxcMDg1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NFxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDI1M1xcMjU1XFwwMTFcXDAwMFxcMjUyXFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjUxXFwyNTVcXDAyMVxcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDIyXFwwMDBcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIyXFwwMDBcXDAxMlxcMDAwXFwwMDhcXDAwMFxcMjUwXFwyNTVcXFxuICAgIFxcMTE5XFwwMDBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTYxXFwwMDBcXDE3MVxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDIwOVxcMDAwXFxcbiAgICBcXDI0MFxcMjU1XFwwMTFcXDAwMFxcMDM4XFwwMDBcXDI1MlxcMjU1XFwwNjVcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMTBcXDAwMFxcXG4gICAgXFwyNTJcXDI1NVxcMTYzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjM0XFwwMDBcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMDQ4XFwwMDFcXFxuICAgIFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDEyNlxcMDAxXFxcbiAgICBcXDE0OVxcMDAxXFwyNDlcXDI1NVxcMDM5XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDM4XFwwMDBcXDE4N1xcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNDhcXDAwMVxcMDE1XFwwMDJcXDI1NVxcMjU1XFwyMjBcXDAwMFxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMDM5XFwwMDJcXFxuICAgIFxcMTA5XFwwMDJcXDAxNFxcMDAxXFwwODhcXDAwMlxcMTY0XFwwMDJcXDE4N1xcMDAyXFwyMjVcXDAwMlxcMDEzXFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDFcXFxuICAgIFxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDFcXDAwNVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwwMjNcXDAwMFxcMjU0XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDBcXDA0OFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAxXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDEzN1xcMDAwXFwxMDRcXDAwMFxcMDg5XFwwMDBcXDA4OFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDBcXDEzN1xcMDAwXFwxNzdcXDAwMFxcMjU0XFwyNTVcXDE4M1xcMDAwXFwxNjhcXDAwMFxcMTY2XFwwMDBcXFxuICAgIFxcMTgzXFwwMDBcXDAwMlxcMDAwXFwyNTNcXDI1NVxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxODdcXDAwMFxcMDA0XFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDA1M1xcMDAyXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwxMDNcXDAwMVxcMjU1XFwyNTVcXDI0OFxcMDAyXFwyNTRcXDI1NVxcXG4gICAgXFwwMDZcXDAwM1xcMDMwXFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDUwXFwwMDNcXFxuICAgIFxcMDc0XFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwM1xcMDg0XFwwMDNcXDEwOFxcMDAzXFxcbiAgICBcXDI0OVxcMjU1XFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI0NFxcMDAwXFwxMjBcXDAwM1xcMTQyXFwwMDNcXDE3OVxcMDAwXFwxOTRcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDE5MFxcMDAwXFwxODhcXDAwMFxcMTg3XFwwMDBcXDE5M1xcMDAwXFwxODNcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDE5MVxcMDAwXFwyMDFcXDAwMFxcMjAwXFwwMDBcXDE5NlxcMDAwXFwyMDNcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwxNTdcXDAwM1xcMDk1XFwwMDNcXDE3NFxcMDAzXFwxOTZcXDAwM1xcMjA2XFwwMDNcXDIxNlxcMDAzXFwyMjhcXDAwM1xcXG4gICAgXFwyMzlcXDAwM1xcMDYwXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMDg3XFwwMDRcXDI1NVxcMjU1XFwxNDVcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjFcXDAwNFxcMjU1XFwyNTVcXDIyOVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE4XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMTFcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODlcXDAwMFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDk1XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzNcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjIyXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDVcXDIzN1xcMjU1XFwyMzhcXDI1NVxcMDEwXFwwMDBcXDI0MFxcMjU1XFwwNDRcXDAwMVxcXG4gICAgXFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMDYxXFwwMDFcXDAwMlxcMDA0XFwyNDlcXDI1NVxcMDQ1XFwwMDVcXFxuICAgIFxcMjA5XFwwMDBcXDIyOFxcMDAwXFwyMTFcXDAwMFxcMjMyXFwwMDBcXDIyNVxcMDAwXFwyMjNcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIzNVxcMDAwXFwyMzRcXDAwMFxcMDA4XFwwMDFcXDI1NFxcMjU1XFwwMDRcXDAwMVxcMDIzXFwwMDFcXDI1M1xcMjU1XFwwNTRcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMDMxXFwwMDFcXDAyOVxcMDAxXFwwMzJcXDAwMVxcMDM5XFwwMDFcXDA0OVxcMDAxXFwwNDVcXDAwMVxcMjUxXFwyNTVcXFxuICAgIFxcMDU3XFwwMDFcXDA4MlxcMDAxXFwwODBcXDAwMVxcMDc4XFwwMDFcXDA4NFxcMDAxXFwwNzRcXDAwMVxcMDg2XFwwMDFcXDI1MFxcMjU1XFxcbiAgICBcXDExMFxcMDA1XFwwMTJcXDAwNFxcMTIzXFwwMDVcXDE1NVxcMDA1XFwxNjVcXDAwNVxcMTc3XFwwMDVcXDE4N1xcMDA1XFwxOTdcXDAwNVxcXG4gICAgXFwyNDFcXDI1NVxcMTk5XFwwMDFcXDA3N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDE1NFxcMDAyXFwyMjJcXDAwNVxcMjA5XFwwMDVcXFxuICAgIFxcMTU1XFwwMDJcXDIzOVxcMDA1XFwwNTNcXDAwNlxcMDc2XFwwMDZcXDExNFxcMDA2XFwwMTZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTUyXFwwMDZcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjI3XFwwMDZcXDI1NVxcMjU1XFwwODVcXDAwN1xcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAxMVxcMDAwXFwyNDdcXDI1NVxcMDc2XFwwMDJcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzFcXDAwMlxcMjQzXFwwMDVcXDA1MVxcMDA3XFwxMDBcXDAwMVxcMTE1XFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMThcXDAwMVxcMTU0XFwwMDFcXDE3MVxcMDAxXFwyNTVcXDI1NVxcMTczXFwwMDFcXDE3NlxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg3XFwwMDFcXDI1M1xcMDAxXFwyMzBcXDAwMVxcMjMwXFwwMDFcXDIzNFxcMDAxXFwyNDdcXDAwMVxcMjM3XFwwMDFcXFxuICAgIFxcMjM0XFwwMDFcXDAwOVxcMDAyXFwwMTlcXDAwMlxcMDE5XFwwMDJcXDAxNVxcMDAyXFwwMjFcXDAwMlxcMDExXFwwMDJcXDAwN1xcMDAyXFxcbiAgICBcXDE0MlxcMDA2XFwxNTJcXDAwNlxcMTE2XFwwMDdcXDE3MFxcMDA3XFwxODBcXDAwN1xcMTkwXFwwMDdcXDIwMFxcMDA3XFwyMTBcXDAwN1xcXG4gICAgXFwyNDhcXDI1NVxcMTIwXFwwMDJcXDE2N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDIxNlxcMDAyXFwwODJcXDAwN1xcMjIwXFwwMDdcXFxuICAgIFxcMjM2XFwwMDJcXDI0NFxcMDA3XFwwNThcXDAwOFxcMDgxXFwwMDhcXDExOVxcMDA4XFwwNzZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTU3XFwwMDhcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjMyXFwwMDhcXDI1NVxcMjU1XFwxMzVcXDAwMlxcXG4gICAgXFwxMjBcXDAwMlxcMjUzXFwyNTVcXDEwMFxcMDAyXFwyNTRcXDI1NVxcMTgyXFwwMDJcXDI1NVxcMjU1XFwwMTFcXDAwMlxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMlxcMjU1XFwyNTVcXDE3OFxcMDAyXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDE4M1xcMDAyXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIxXFwwMDJcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA5N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDEzOFxcMDAwXFwwMDBcXDAwMFxcMTQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTg3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxN1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTIxXFwwMDFcXDEyNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxNDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTkzXFwwMDFcXDE5N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjIwXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIzM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0MFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMTcwXFwwMDBcXDEzNFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxNFxcMDAxXFwwMTNcXDAwMFxcMDQ5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDA1NlxcMDAwXFwxMThcXDAwMFxcMDA2XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDFcXDEzN1xcMDAwXFwwMDBcXDAwMlxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMTM4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMTRcXDAwMFxcMTEwXFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAzMFxcMDAwXFwwNDhcXDAwMFxcMDA4XFwwMDBcXDExNFxcMDAwXFwyMDlcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAxXFxcbiAgICBcXDAxM1xcMDAxXFwwMjlcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxN1xcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDIzXFwwMDBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAzNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDIwXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMzdcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA2MVxcMDAwXFwwODVcXDAwMFxcMDQ4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA2N1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODZcXDAwMFxcMTQzXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMTQ0XFwwMDBcXFxuICAgIFxcMTQ1XFwwMDBcXDE0NlxcMDAwXFwwNTVcXDAwMFxcMTQ4XFwwMDBcXDA1NVxcMDAwXFwxNDlcXDAwMFxcMDQ4XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwxNTBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMFxcMTYxXFwwMDBcXDA2NlxcMDAwXFwxNThcXDAwMFxcMDUzXFwwMDBcXDE1OVxcMDAwXFwwNTNcXDAwMFxcMTYwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDE2NVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NlxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwxMTZcXDAwMFxcXG4gICAgXFwxMzJcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMjhcXDAwMFxcMTM5XFwwMDBcXDEzNFxcMDAwXFwxNjRcXDAwMFxcMDkzXFwwMDBcXFxuICAgIFxcMTcxXFwwMDBcXDA3N1xcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzJcXDAwMFxcMTEyXFwwMDBcXDE3M1xcMDAwXFxcbiAgICBcXDE3NFxcMDAwXFwyMTBcXDAwMFxcMjI2XFwwMDBcXDIwOFxcMDAwXFwyMTFcXDAwMFxcMjEyXFwwMDBcXDA1OVxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwxMzRcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE2XFwwMDBcXDIxOFxcMDAwXFwxNDFcXDAwMFxcMjE5XFwwMDBcXFxuICAgIFxcMDkzXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTIzXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMjI0XFwwMDBcXDEzNlxcMDAwXFxcbiAgICBcXDA5NVxcMDAwXFwyMjVcXDAwMFxcMDM1XFwwMDFcXDA2NVxcMDAxXFwyMzRcXDAwMFxcMTU1XFwwMDBcXDAwNVxcMDAxXFwwOTdcXDAwMVxcXG4gICAgXFwyNTBcXDAwMFxcMjU1XFwyNTVcXDI1NFxcMDAwXFwwNTdcXDAwMVxcMDYxXFwwMDFcXDA5NVxcMDAxXFwwNzdcXDAwMFxcMDQ0XFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA4OFxcMDAxXFwwMDlcXDAwMVxcMDI5XFwwMDFcXDA3NlxcMDAwXFwxMjRcXDAwMFxcMDMzXFwwMDFcXDAxOFxcMDAxXFxcbiAgICBcXDA3NVxcMDAwXFwwOThcXDAwMFxcMDE5XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDg3XFwwMDFcXDEyMFxcMDAxXFwwODlcXDAwMVxcXG4gICAgXFwwNzRcXDAwMFxcMjI1XFwwMDBcXDA1M1xcMDAxXFwxMjFcXDAwMVxcMDczXFwwMDBcXDA5MFxcMDAxXFwwNzJcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk4XFwwMDBcXDExM1xcMDAxXFwxMjJcXDAwMFxcMDkxXFwwMDFcXDA2NFxcMDAwXFwwMDRcXDAwMVxcXG4gICAgXFwwOTNcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwxNTZcXDAwMFxcMTEyXFwwMDFcXDA5NFxcMDAxXFwwOTZcXDAwMVxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwxMDBcXDAwMVxcMTU3XFwwMDBcXFxuICAgIFxcMTAxXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDE4M1xcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMDI0XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDEwMlxcMDAxXFwxMDNcXDAwMVxcMTA1XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxMDZcXDAwMVxcMTA3XFwwMDFcXDA0OFxcMDAxXFwwNDBcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxMTBcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwxMTFcXDAwMVxcXG4gICAgXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDE3MVxcMDAxXFwwMzFcXDAwMVxcMTcwXFwwMDFcXDAyM1xcMDAxXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA5MlxcMDAwXFwxNjhcXDAwMVxcMDYzXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMjQ4XFwwMDBcXDE2NVxcMDAxXFwyNTJcXDAwMFxcXG4gICAgXFwxNjJcXDAwMVxcMDU5XFwwMDFcXDA2OVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDAzOVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDE2M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwxMjBcXDAwMFxcMDAyXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMTY2XFwwMDFcXDA1NVxcMDAxXFwxNTNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDdcXDAwMVxcMTY3XFwwMDFcXDE2NFxcMDAxXFwxNjlcXDAwMVxcMDE2XFwwMDFcXDE2NFxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA1MVxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDEzN1xcMDAxXFwxNjRcXDAwMVxcMTcyXFwwMDFcXDE4NVxcMDAxXFwxMzZcXDAwMVxcMTczXFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDE3NFxcMDAxXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNDZcXDAwMVxcXG4gICAgXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDE4MFxcMDAwXFwxNjRcXDAwMVxcMTg0XFwwMDFcXDE4MVxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDEyNFxcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDE5MlxcMDAxXFwxNzhcXDAwMVxcXG4gICAgXFwwMjFcXDAwMVxcMTc5XFwwMDFcXDA5N1xcMDAwXFwxOTNcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTgzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDIxNlxcMDAxXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDE4NFxcMDAxXFwyMTZcXDAwMVxcMjA5XFwwMDFcXDA5N1xcMDAwXFxcbiAgICBcXDIyM1xcMDAxXFwwOTdcXDAwMFxcMjA4XFwwMDFcXDIzMFxcMDAxXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDIxOVxcMDAxXFwwMzdcXDAwMVxcXG4gICAgXFwyMTZcXDAwMVxcMjE3XFwwMDFcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMTZcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMjE4XFwwMDFcXDI1MFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMjRcXDAwMVxcMTI0XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMjFcXDAwMVxcMDAwXFwwMDBcXDI1M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5NlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyMzVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjQxXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDAwMVxcMjQyXFwwMDFcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI0NlxcMDAxXFwxMjlcXDAwMVxcMTI5XFwwMDFcXFxuICAgIFxcMjI4XFwwMDFcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDAwXFwwMDBcXDE5OFxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMjM0XFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMVxcMTc3XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDIwMVxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAwXFwyMDZcXDAwMVxcMTIzXFwwMDFcXDE4OVxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTg5XFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTk1XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNDhcXDAwMVxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMjAyXFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjI2XFwwMDBcXDE5NVxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMjFcXDAwMVxcMjM5XFwwMDFcXFxuICAgIFxcMjU0XFwwMDFcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMjQ0XFwwMDFcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg2XFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTEzXFwwMDFcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwMDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDIzOFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAxXFwwNzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzFcXDAwMVxcMDc2XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDFcXDExOVxcMDAxXFwwMDBcXDAwMFxcMTE5XFwwMDFcXDAwMFxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE3XFwwMDFcXDAwMFxcMDAwXFwwNzVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTg1XFwwMDFcXDAwMFxcMDAwXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE5MVxcMDAxXFwxNDJcXDAwMVxcMTkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDZcXDAwMVxcMTQ3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMTUzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3N1xcMDAxXFwxNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTU2XFwwMDFcXDAwMFxcMDAwXFwxNDhcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDE1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTg3XFwwMDFcXDAwMFxcMDAwXFwxNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAxXFwwMDBcXDAwMFxcMTg5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE5OVxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMTRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjVcXDAwMFxcMTM4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwM1xcMDAwXFwxNjlcXDAwMFxcMTM0XFwwMDBcXDE3NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTI1XFwwMDBcXDEyOVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyMzZcXDAwMVxcMTM2XFwwMDBcXDI1NVxcMDAxXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDAxMFxcMDAwXFwxMzZcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwxMDdcXDAwMFxcMTAyXFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDI5XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDIwOFxcMDAwXFwyMzNcXDAwMFxcMjU1XFwwMDBcXFxuICAgIFxcMDEyXFwwMDFcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDYwXFwwMDBcXDAxMVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyNFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMjJcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDMzXFwwMDBcXDAxOFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMTlcXDAwMFxcMDM1XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NVxcMDAwXFwwNDZcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NVxcMDAwXFwxNDBcXDAwMFxcMDYwXFwwMDBcXDAxM1xcMDAwXFwxNDNcXDAwMFxcXG4gICAgXFwxNDRcXDAwMFxcMTQ1XFwwMDBcXDA0OFxcMDAwXFwxNDdcXDAwMFxcMDQ4XFwwMDBcXDE0OFxcMDAwXFwwMzlcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNjVcXDAwMFxcMDM5XFwwMDBcXDE0OVxcMDAwXFxcbiAgICBcXDE1MFxcMDAwXFwxNTZcXDAwMFxcMDYzXFwwMDBcXDE1N1xcMDAwXFwwNTFcXDAwMFxcMTU4XFwwMDBcXDA1MVxcMDAwXFwxNTlcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMTU1XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTU1XFwwMDBcXDA5MVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2OFxcMDAwXFwxMDJcXDAwMFxcMTA3XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDEzMVxcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMTMzXFwwMDBcXDE2M1xcMDAwXFwwOTRcXDAwMFxcXG4gICAgXFwxNjVcXDAwMFxcMDY4XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE3MVxcMDAwXFwxMTFcXDAwMFxcMTcyXFwwMDBcXFxuICAgIFxcMTczXFwwMDBcXDIwNlxcMDAwXFwyMDNcXDAwMFxcMjA3XFwwMDBcXDIxMFxcMDAwXFwyMTFcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDEzM1xcMDAwXFwyMTJcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE3XFwwMDBcXDE0MFxcMDAwXFwyMThcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMTlcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMTMzXFwwMDBcXFxuICAgIFxcMDkxXFwwMDBcXDIwM1xcMDAwXFwwMzRcXDAwMVxcMDYyXFwwMDFcXDIzM1xcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAxXFxcbiAgICBcXDI0N1xcMDAwXFwwNjBcXDAwMFxcMjUxXFwwMDBcXDA1NFxcMDAxXFwwNThcXDAwMVxcMDgxXFwwMDFcXDA2OFxcMDAwXFwwNDFcXDAwMVxcXG4gICAgXFwwODJcXDAwMVxcMDgzXFwwMDFcXDAwNlxcMDAxXFwwMjZcXDAwMVxcMDY4XFwwMDBcXDExOVxcMDAwXFwwMzBcXDAwMVxcMDE1XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDA5NFxcMDAwXFwwMTVcXDAwMVxcMDg0XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDcxXFwwMDFcXDA4OFxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwyMDNcXDAwMFxcMDUwXFwwMDFcXDA3MVxcMDAxXFwwNjhcXDAwMFxcMDg5XFwwMDFcXDA2OFxcMDAwXFwwNjhcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwOTdcXDAwMFxcMDc2XFwwMDFcXDExOVxcMDAwXFwwOTBcXDAwMVxcMDYzXFwwMDBcXDAwMVxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDE1MlxcMDAwXFwwNzZcXDAwMVxcMDkzXFwwMDFcXDA5NVxcMDAxXFwwOTdcXDAwMVxcMDk4XFwwMDFcXDA0NVxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OVxcMDAxXFwxNTJcXDAwMFxcXG4gICAgXFwxMDBcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwwMjBcXDAwMVxcMDc2XFwwMDFcXDA2NVxcMDAwXFwwMjBcXDAwMVxcMTAxXFwwMDFcXDEwMlxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDEwNVxcMDAxXFwxMDZcXDAwMVxcMDQ1XFwwMDFcXDAzNlxcMDAxXFwxMDdcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDExMFxcMDAxXFxcbiAgICBcXDAyNlxcMDAxXFwxMjFcXDAwMVxcMTU3XFwwMDFcXDAzMFxcMDAxXFwxNThcXDAwMVxcMDIwXFwwMDFcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDE1OVxcMDAxXFwwNjJcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwyNDdcXDAwMFxcMTYwXFwwMDFcXDI1MVxcMDAwXFxcbiAgICBcXDE2MVxcMDAxXFwwNThcXDAwMVxcMDY4XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA5NFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDM2XFwwMDFcXDA0MVxcMDAxXFwwOTdcXDAwMFxcMTYyXFwwMDFcXFxuICAgIFxcMTYzXFwwMDFcXDExOVxcMDAwXFwwMDFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwxNjVcXDAwMVxcMDU0XFwwMDFcXDE1MlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwNlxcMDAxXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMTVcXDAwMVxcMTY5XFwwMDFcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDUwXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTMzXFwwMDFcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTU0XFwwMDFcXDEzM1xcMDAxXFwxNzJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTczXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA0NVxcMDAxXFxcbiAgICBcXDE3NFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAxXFwxNTRcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTIyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMTQ4XFwwMDFcXDE3N1xcMDAxXFxcbiAgICBcXDAyMFxcMDAxXFwxNzhcXDAwMVxcMDk4XFwwMDBcXDE0OFxcMDAxXFwxNzlcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcXG4gICAgXFwxODNcXDAwMVxcMjE2XFwwMDFcXDE5M1xcMDAxXFwwOTVcXDAwMFxcMTU0XFwwMDFcXDIxNlxcMDAxXFwyMDVcXDAwMVxcMDk4XFwwMDBcXFxuICAgIFxcMjIyXFwwMDFcXDA5NVxcMDAwXFwyMDVcXDAwMVxcMjI5XFwwMDFcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMjE4XFwwMDFcXDAzNlxcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwyMTVcXDAwMVxcMjU1XFwyNTVcXDIxOFxcMDAxXFwyMTVcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMTZcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDIxNVxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMjJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk4XFwwMDBcXDI1NVxcMjU1XFwyMTVcXDAwMVxcMjQ3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOThcXDAwMFxcMjU1XFwyNTVcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMDk4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIyMFxcMDAxXFwyNTVcXDI1NVxcMjUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5OFxcMDAwXFwxMjFcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMDk4XFwwMDBcXDA5OFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDI1MVxcMDAxXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjQzXFwwMDFcXDEyNVxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDI1NVxcMjU1XFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyMzFcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwxNzZcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMjU1XFwyNTVcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTg1XFwwMDBcXDIwNVxcMDAxXFwxMjJcXDAwMVxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFxcbiAgICBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTJcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkzXFwwMDFcXDI0N1xcMDAxXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOTlcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwxOTlcXDAwMFxcMTI1XFwwMDFcXDEyOFxcMDAxXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcXG4gICAgXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwyMDRcXDAwMFxcMTk0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDBcXDIyMFxcMDAxXFwyMzhcXDAwMVxcXG4gICAgXFwyNTFcXDAwMVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyNDNcXDAwMVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjRcXDAwMVxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMTk3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDIyOFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFxcbiAgICBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFxcbiAgICBcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDE5OVxcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjM3XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwxMTJcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExNVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTVcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXFxuICAgIFxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXFxuICAgIFxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcXG4gICAgXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMjU1XFwyNTVcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDEyNlxcMDAxXFwxMjlcXDAwMVxcMTI2XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyOVxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTg0XFwwMDFcXDEzOFxcMDAxXFwxODRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXFxuICAgIFxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTU2XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwxODZcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTk4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDFcXDI1NVxcMjU1XFwxODdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTg2XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxNzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgdHJ1ZSApXG4jIDEwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDE3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCBmYWxzZSApXG4jIDEwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDE3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgTnVsbCApXG4jIDEwMjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDE3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmFuXG4gICAgICAgICAgICAgICAgKVxuIyAxMDM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAxODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IGluZmluaXR5XG4gICAgICAgICAgICAgICAgKVxuIyAxMDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgIClcbiMgMTA1NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgMTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgYFN0cmluZyAoZmluaXNoX3N0cmluZyB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICApXG4jIDEwNjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDIwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiApXG4jIDEwNzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDIwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiApXG4jIDEwNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgKGZsb2F0X29mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgICAgICAgICAgICApXG4jIDEwODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyAyMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYEFzc29jIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExMTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyAyMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICBgTGlzdCAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTIgLT5cbiMgMjUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDExNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMyAtPlxuIyAyNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMTE3MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE0IC0+XG4jIDI4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE3OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE1IC0+XG4jIDI4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNiAtPlxuIyAyODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNyAtPlxuIyAyODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOCAtPlxuIyAyODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMTk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTkgLT5cbiMgMjkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMTIwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiA1OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBCdWZmZXIuY29udGVudHMgdi5idWYgKVxuIyAxMjE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAyOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTIyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMjk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAyOTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTIzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIDYzXG5hbmQgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggbGV0IGIgPSB2LmJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICBmIChCdWZmZXIuY29udGVudHMgYikgMCAoQnVmZmVyLmxlbmd0aCBiKSApXG4jIDEyNDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDEyNTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxMjU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTI2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiA2OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIGNcbiMgMTI3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgYyApXG4jIDEyNzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxiJyApXG4jIDEyODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFwwMTInIClcbiMgMTI4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nIClcbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHInIClcbiMgMTI5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgMzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHQnIClcbiMgMTMwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbmxldFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIGFcbiMgMTMxMCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcbiMgMTMxNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyAxMzIwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTMyNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpIGluXG4jIDMyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeCA+PSAweEQ4MDAgJiYgeCA8PSAweERCRkYgdGhlblxuICAgICAgICAgICAgIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBDb2RlYy51dGY4X29mX2NvZGUgdi5idWYgeFxuXG4gICAgICAgICApXG4jIDEzMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDMyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZVwiIHYgbGV4YnVmIClcbiMgMTM0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgODJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIGFcbiMgMTM2MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuIyAxMzY1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgMTM3MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTM3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDUpIGluXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB5ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeSA+PSAweERDMDAgJiYgeSA8PSAweERGRkYgdGhlblxuICAgICAgICAgICAgIENvZGVjLnV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgdi5idWYgeCB5XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCBsb3cgc3Vycm9nYXRlIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIlxuICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgIClcbiMgMTM4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIk1pc3NpbmcgZXNjYXBlIHNlcXVlbmNlIHJlcHJlc2VudGluZyBsb3cgc3Vycm9nYXRlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIiB2IGxleGJ1ZiApXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMzk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgOTFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAobGVuKzEpIGluXG4gICAgICAgICAgIEJ5dGVzLnNldCBzIDAgJ1wiJztcbiAgICAgICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBzIDEgbGVuO1xuICAgICAgICAgICBCeXRlcy50b19zdHJpbmcgc1xuICAgICAgICAgKVxuIyAxNDE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMTQyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgMTAyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9IHJlYWRfanNvbiB2IGxleGJ1ZiBpblxuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmO1xuICAgICAgICAgICBTb21lIHggKVxuIyAxNDQwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBOb25lIClcbiMgMTQ0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2x0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIDEwN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAxNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgMTExXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTQ4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb21tYSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiAxMTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTUxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE1MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgMTE5XG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYEVkZ3lfYnJhY2tldCApXG4jIDE1MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBgRG91YmxlX3F1b3RlIClcbiMgMTUzOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBTcXVhcmVfYnJhY2tldCApXG4jIDE1NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnLCAnXFxcIicgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTU0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiAxMjVcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTU2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAxNTcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG4jIDE1NzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcbiMgMTU4MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2VvZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiAxMzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNTkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTU5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiAxMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYxMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAxNjMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgMTQwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCAoKSApXG4jIDE2NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdudWxsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE2NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE2NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbF9pZl9wb3NzaWJsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIDE0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2NjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjY5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Jvb2wgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiAxNTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2ODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2ODYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY5MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAndHJ1ZScgb3IgJ2ZhbHNlJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTcwNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIDE3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3MjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnRlZ2VyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE3NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50ZWdlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQ1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDMyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIDE4NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDMyLm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTc2OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQzMi5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50MzIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTc4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQzMiBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3OTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc5NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50NjQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgMTkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQ3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50NjQub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxODExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDY0Lm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQ2NCBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxODI5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0OTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDY0IGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTgzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxODM5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udW1iZXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIDE5OVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5hbiApXG4jIDE4NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBpbmZpbml0eSApXG4jIDE4NTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuZWdfaW5maW5pdHkgKVxuIyAxODYxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmxvYXRfb2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikgKVxuIyAxODY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA1MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBmbG9hdCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMuICopXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5hTlwiIC0+IG5hblxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJJbmZpbml0eVwiIC0+IGluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBcIi1JbmZpbml0eVwiIC0+IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYSBudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgKVxuIyAxODg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA1MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIG51bWJlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE4OTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDUyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTg5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgMjMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDE5MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1xcXCInIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTkxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgMjM3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTkzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyA1MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIHNcbiMgMTk0MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA1MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcyApXG4jIDE5NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfaWRlbnQgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgMjQyXG5hbmQgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTk2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIG1hcF9sZXhlbWUgZiBsZXhidWYgKVxuIyAxOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTk3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc2VxdWVuY2UgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMDA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1NjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjAxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgMjUxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjA0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgMjU1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAyMDY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgMjU3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDgzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDIwODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDU5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjA5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjYyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjEzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMTM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2MjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIxNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgMjY2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTU5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIDI2OFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjE3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIxODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgMjcxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIyMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjIxNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIDI3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMjI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIyMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiAyODJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIyODYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI5MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sY3VybCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiAyODZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjMwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2ODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIDI5MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAyMzMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgMjkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjM0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMjM1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjM1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIDI5N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzNzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjM4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV90dXBsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIDMwMVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmYWxzZSApXG4jIDIzOTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCB0cnVlIClcbiMgMjQwMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQwNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNzA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiAzMDZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDIzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0MjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQzMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ycGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgMzEwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiAzMTRcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcmJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiAzMThcbmFuZCBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIDMyMlxuYW5kIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDczNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDczNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDc0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNTQxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyA3NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjU0NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjU1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNTc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgNzY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI1OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA3ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjYxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEyIC0+XG4jIDgwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyNjMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTMgLT5cbiMgODE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTQgLT5cbiMgODE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE1IC0+XG4jIDgxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE2IC0+XG4jIDgxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE3IC0+XG4jIDgxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI2NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOCAtPlxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAyNjYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiAzNzhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDI2NzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAyNjc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjY4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiAzODlcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmIClcbiMgMjY5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAyNzAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI3MDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNzEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiAzOTRcbmFuZCBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI3MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI3MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDg0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNzM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI3NDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgMzk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuIyAyNzUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNzU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd7JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI3ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDg4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI4MDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyODI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA5MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjg0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgOTMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyA5MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg2MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgOTM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgOTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjg3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDkzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDI4NzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDQ1MFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcIic7XG4gICAgICAgICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmXG4gICAgICAgICApXG4jIDI4OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAyODk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjkwMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiA0NjFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonO1xuICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfZ3QgdiBsZXhidWYgKVxuIyAyOTE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcbiMgMjkyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyOTI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjkzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgNDY2XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjk0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcbiMgMjk0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTYzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI5NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjk1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgNDcxXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTY3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5ODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA5ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMzAwMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIDQ3OFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nO1xuICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAzMDE0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5ODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMDE5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiA0ODBcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzAzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7IHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMzAzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzA0MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMDQ2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgNDg1XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMzA1OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzA2MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgNDg3XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMwNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDMwODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMDg1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMDkwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiA0OTJcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJztcbiAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAzMTA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzEwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgNDk0XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMxMjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDMxMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgNDk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonIClcbiMgMzE0OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzE1MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzE1OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgNTAzXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuIyAzMTcwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzE4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgNTA3XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiKi9cIiApXG4jIDMxOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG4jIDMxOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG4jIDMyMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcbiMgMzIwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBsZXQgXyA9IChyZWFkX2pzb24gOiBsZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+IHQpXG5cbiAgbGV0IHJlYWRfdCA9IHJlYWRfanNvblxuXG4gIGxldCByZWFkX2ludDggdiBsZXhidWYgPVxuICAgIGxldCBuID0gcmVhZF9pbnQgdiBsZXhidWYgaW5cbiAgICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW5cbiAgICAgIGxleGVyX2Vycm9yIFwiSW50OCBvdmVyZmxvd1wiIHYgbGV4YnVmXG4gICAgZWxzZVxuICAgICAgY2hhcl9vZl9pbnQgblxuXG4gIGxldCByZWFkX2xpc3QgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBMaXN0LnJldiAocmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYpXG5cbiAgbGV0IGFycmF5X29mX3Jldl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICBbXSAtPiBbfCB8XVxuICAgICAgfCB4IDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICAgIHIgOj0gTGlzdC50bCAhclxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgYVxuXG4gIGxldCByZWFkX2FycmF5IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgbGV0IGwgPSByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiBpblxuICAgIGFycmF5X29mX3Jldl9saXN0IGxcblxuICAoKiBSZWFkIGEgSlNPTiBvYmplY3QsIHJlYWRpbmcgdGhlIGtleXMgaW50byBPQ2FtbCBzdHJpbmdzXG4gICAgIChwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKilcbiAgbGV0IHJlYWRfZmllbGRzIHJlYWRfZmllbGQgaW5pdF9hY2MgdiA9XG4gICAgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9pZGVudCByZWFkX2ZpZWxkIGluaXRfYWNjIHZcblxuICBsZXQgZmluaXNoIHYgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgIGlmIG5vdCAocmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBsb25nX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZTpcIiB2IGxleGJ1ZlxuXG4gIGxldCBpbml0X2xleGVyID0gQ29tbW9uLmluaXRfbGV4ZXJcblxuICBsZXQgZnJvbV9sZXhidWYgdiA/KHN0cmVhbSA9IGZhbHNlKSBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG5cbiAgICBsZXQgeCA9XG4gICAgICBpZiByZWFkX2VvZiBsZXhidWYgdGhlblxuICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX2lucHV0XG4gICAgICBlbHNlXG4gICAgICAgIHJlYWRfanNvbiB2IGxleGJ1ZlxuICAgIGluXG5cbiAgICBpZiBub3Qgc3RyZWFtIHRoZW5cbiAgICAgIGZpbmlzaCB2IGxleGJ1ZjtcblxuICAgIHhcblxuXG4gIGxldCBmcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyBpblxuICAgICAgY2xvc2VfaW4gaWM7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICAgIHJhaXNlIGVcblxuICBleGNlcHRpb24gRmluYWxseSBvZiBleG4gKiBleG5cblxuICBsZXQgc2VxX2Zyb21fbGV4YnVmIHYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIGxleGJ1ZiA9XG4gICAgbGV0IHN0cmVhbSA9IFNvbWUgdHJ1ZSBpblxuICAgIGxldCByZWMgZiAoKSA9XG4gICAgICB0cnkgU2VxLkNvbnMgKGZyb21fbGV4YnVmIHYgP3N0cmVhbSBsZXhidWYsIGYpXG4gICAgICB3aXRoXG4gICAgICAgICAgQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgZmluICgpO1xuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICAgICh0cnkgZmluICgpIHdpdGggZmluX2UgLT4gcmFpc2UgKEZpbmFsbHkgKGUsIGZpbl9lKSkpO1xuICAgICAgICAgICAgcmFpc2UgZVxuICAgIGluXG4gICAgZlxuXG4gIGxldCBzZXFfZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4gIGxldCBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgP2ZpbiBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IH5maW4gbGV4YnVmXG5cbiAgdHlwZSBqc29uX2xpbmUgPSBbIGBKc29uIG9mIHQgfCBgRXhuIG9mIGV4biBdXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9jaGFubmVsXG4gICAgICA/YnVmID8oZmluID0gZnVuICgpIC0+ICgpKSA/Zm5hbWUgP2xudW06KGxudW0wID0gMSkgaWMgPVxuICAgIGxldCBidWYgPVxuICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgKEJ1ZmZlci5jcmVhdGUgMjU2KVxuICAgICAgICB8IFNvbWUgXyAtPiBidWZcbiAgICBpblxuICAgIGxldCByZWMgZiBsbnVtID0gZnVuICgpIC0+XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxpbmUgPSBpbnB1dF9saW5lIGljIGluXG4gICAgICAgIFNlcS5Db25zIChgSnNvbiAoZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgfmxudW0gbGluZSksIGYgKGxudW0gKyAxKSlcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfZmlsZSAtPiBmaW4gKCk7IFNlcS5OaWxcbiAgICAgICAgfCBlIC0+IFNlcS5Db25zIChgRXhuIGUsIGYgKGxudW0gKyAxKSlcbiAgICBpblxuICAgIGYgbG51bTBcblxuICBsZXQgbGluZXNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGluZXNlcV9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluID9mbmFtZSA/bG51bSBpY1xuXG4gIGxldCBwcmV0dGlmeSA/c3RkIHMgPVxuICAgIHByZXR0eV90b19zdHJpbmcgP3N0ZCAoZnJvbV9zdHJpbmcgcylcblxuICBsZXQgY29tcGFjdCA/c3RkOl8gcyA9XG4gICAgdG9fc3RyaW5nIChmcm9tX3N0cmluZyBzKVxuXG4jIDMzNzUgXCJsaWIvcmVhZC5tbFwiXG5cbm1vZHVsZSBVdGlsID0gc3RydWN0XG5leGNlcHRpb24gVHlwZV9lcnJvciBvZiBzdHJpbmcgKiB0XG5cbmxldCB0eXBlb2YgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBfIC0+IFwib2JqZWN0XCJcbiAgfCBgQm9vbCBfIC0+IFwiYm9vbFwiXG4gIHwgYEZsb2F0IF8gLT4gXCJmbG9hdFwiXG4gIHwgYEludCBfIC0+IFwiaW50XCJcbiAgfCBgTGlzdCBfIC0+IFwiYXJyYXlcIlxuICB8IGBOdWxsIC0+IFwibnVsbFwiXG4gIHwgYFN0cmluZyBfIC0+IFwic3RyaW5nXCJcbiAgfCBgSW50bGl0IF8gLT4gXCJpbnRsaXRcIlxuICB8IGBGbG9hdGxpdCBfIC0+IFwiZmxvYXRsaXRcIlxuICB8IGBUdXBsZSBfIC0+IFwidHVwbGVcIlxuICB8IGBWYXJpYW50IF8gLT4gXCJ2YXJpYW50XCJcblxubGV0IHR5cGVyciBtc2cganMgPSByYWlzZSAoVHlwZV9lcnJvciAobXNnIF4gdHlwZW9mIGpzLCBqcykpXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nICogdFxuXG5sZXQgYXNzb2MgbmFtZSBvYmogPSB0cnkgTGlzdC5hc3NvYyBuYW1lIG9iaiB3aXRoIE5vdF9mb3VuZCAtPiBgTnVsbFxuXG5sZXQgbWVtYmVyIG5hbWUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gYXNzb2MgbmFtZSBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IG1lbWJlciAnXCIgXiBuYW1lIF4gXCInIG9mIG5vbi1vYmplY3QgdHlwZSBcIikganNcblxubGV0IHJlYyBwYXRoIGwgb2JqID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gU29tZSBvYmpcbiAgfCBrZXkgOjogbCAtPiAoXG4gICAgICBtYXRjaCBvYmogd2l0aFxuICAgICAgfCBgQXNzb2MgYXNzb2MgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Mga2V5IGFzc29jIHdpdGhcbiAgICAgICAgICB8IG9iaiAtPiBwYXRoIGwgb2JqXG4gICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IGluZGV4IGkgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMganMgLT5cbiAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICBsZXQgd3JhcHBlZF9pbmRleCA9IGlmIGkgPCAwIHRoZW4gbGVuICsgaSBlbHNlIGkgaW5cbiAgICAgIGlmIHdyYXBwZWRfaW5kZXggPCAwIHx8IHdyYXBwZWRfaW5kZXggPj0gbGVuIHRoZW5cbiAgICAgICAgcmFpc2UgKFVuZGVmaW5lZCAoXCJJbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG91dCBvZiBib3VuZHNcIiwganMpKVxuICAgICAgZWxzZSBMaXN0Lm50aCBsIHdyYXBwZWRfaW5kZXhcbiAgfCBqcyAtPlxuICAgICAgdHlwZXJyIChcIkNhbid0IGdldCBpbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG9mIG5vbi1hcnJheSB0eXBlIFwiKSBqc1xuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gYExpc3QgKExpc3QubWFwIGYgbClcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBtYXAgZnVuY3Rpb24gb3ZlciBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgdG9fYXNzb2MgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gb2JqXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgb2JqZWN0LCBnb3QgXCIganNcblxubGV0IHRvX29wdGlvbiBmID0gZnVuY3Rpb24gYE51bGwgLT4gTm9uZSB8IHggLT4gU29tZSAoZiB4KVxubGV0IHRvX2Jvb2wgPSBmdW5jdGlvbiBgQm9vbCBiIC0+IGIgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sLCBnb3QgXCIganNcblxubGV0IHRvX2Jvb2xfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+IFNvbWUgYlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gZmxvYXQgaVxuICB8IGBGbG9hdCBmIC0+IGZcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IFNvbWUgKGZsb2F0IGkpXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgfCBgRmxvYXQgZiAtPiBmXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXRfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBpXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50LCBnb3QgXCIganNcblxubGV0IHRvX2ludF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBTb21lIGlcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIGBMaXN0IGwgLT4gbCB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGFycmF5LCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBzIC0+IHNcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcsIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBzIC0+IFNvbWUgc1xuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCBjb252ZXJ0X2VhY2ggZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBmIGxcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBjb252ZXJ0IGVhY2ggZWxlbWVudCBvZiBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgcmVjIHJldl9maWx0ZXJfbWFwIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmV2X2ZpbHRlcl9tYXAgZiBhY2MgdGxcbiAgICAgIHwgU29tZSB5IC0+IHJldl9maWx0ZXJfbWFwIGYgKHkgOjogYWNjKSB0bClcblxubGV0IGZpbHRlcl9tYXAgZiBsID0gTGlzdC5yZXYgKHJldl9maWx0ZXJfbWFwIGYgW10gbClcblxubGV0IHJlYyByZXZfZmxhdHRlbiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBMaXN0IGwyIC0+IHJldl9mbGF0dGVuIChMaXN0LnJldl9hcHBlbmQgbDIgYWNjKSB0bFxuICAgICAgfCBfIC0+IHJldl9mbGF0dGVuIGFjYyB0bClcblxubGV0IGZsYXR0ZW4gbCA9IExpc3QucmV2IChyZXZfZmxhdHRlbiBbXSBsKVxuXG5sZXQgZmlsdGVyX2luZGV4IGkgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgbCAtPiAoIHRyeSBTb21lIChMaXN0Lm50aCBsIGkpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfbGlzdCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYExpc3QgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcblxubGV0IGZpbHRlcl9tZW1iZXIgayBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgQXNzb2MgbCAtPiAoIHRyeSBTb21lIChMaXN0LmFzc29jIGsgbCkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9hc3NvYyBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEFzc29jIGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2Jvb2wgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBCb29sIHggLT4gU29tZSB4IHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2ludCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgICBmdW5jdGlvblxuICAgICAgfCAgYEludCB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICApIGxcblxubGV0IGZpbHRlcl9mbG9hdCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfbnVtYmVyIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBgSW50IHggLT4gU29tZSAoZmxvYXQgeClcbiAgICAgIHwgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9zdHJpbmcgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIGBTdHJpbmcgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQga2V5cyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChrZXksIF8pIC0+IGtleSlcblxubGV0IHZhbHVlcyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChfLCB2YWx1ZSkgLT4gdmFsdWUpXG5cbmxldCBjb21iaW5lIChmaXJzdCA6IHQpIChzZWNvbmQgOiB0KSA9XG4gIG1hdGNoIChmaXJzdCwgc2Vjb25kKSB3aXRoXG4gIHwgYEFzc29jIGEsIGBBc3NvYyBiIC0+IChgQXNzb2MgKGEgQCBiKSA6IHQpXG4gIHwgYSwgYiAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkV4cGVjdGVkIHR3byBvYmplY3RzLCBjaGVjayBpbnB1dHNcIilcbmVuZFxuXG4iLCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICB8IGBJbnRsaXQgb2Ygc3RyaW5nXG4gICAgfCBgRmxvYXRsaXQgb2Ygc3RyaW5nXG4gICAgfCBgU3RyaW5nbGl0IG9mIHN0cmluZ1xuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICB8IGBUdXBsZSBvZiB0IGxpc3RcbiAgICB8IGBWYXJpYW50IG9mIChzdHJpbmcgKiB0IG9wdGlvbilcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV90dXBsZSBvYiBsXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfdmFyaWFudCBvYiBzIG9cblxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcoJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJyknXG5cbmFuZCB3cml0ZV92YXJpYW50IG9iIHMgbyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPCc7XG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICAobWF0Y2ggbyB3aXRoXG4gICAgICAgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgICAgIHdyaXRlX2pzb24gb2IgeFxuICApO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJz4nXG5cbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX3N0ZF9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX3N0ZF9saXN0IG9iIGxcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3N0ZF90dXBsZSBvYiBsXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvID1cbiAgbWF0Y2ggbyB3aXRoXG4gICAgICBOb25lIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgICAgICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICAgIHdyaXRlX3N0ZF9qc29uIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gICgqIHRoaXMgcmVxdWlyZXMgYW4gaW50IGFuZCBuZXZlciB1c2VzIGl0LiBUaGlzIGlzIGRvbmUgdG8gcHJlc2VydmVcbiAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB0byBub3QgYnJlYWsgdGhlIHNpZ25hdHVyIGJ1dCBjYW4gc2FmZWx5XG4gICAgIGJlIGNoYW5nZWQgdG8gcmVxdWlyZSB1bml0IGluIGEgZnV0dXJlIGNvbXBhdGliaWxpdHktYnJlYWtpbmdcbiAgICAgcmVsZWFzZSAqKVxuICBsZXQgXyA6IGludCA9IG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYikgaW5cbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCBgVHVwbGUgbCAtPlxuICAgICAgYFR1cGxlIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgYXMgeCAtPlxuICAgICAgbGV0IHYnID0gc29ydCB2IGluXG4gICAgICBpZiB2ID09IHYnIHRoZW4geFxuICAgICAgZWxzZVxuICAgICAgICBgVmFyaWFudCAoaywgU29tZSB2JylcbiAgfCB4IC0+IHhcblxubW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuKCpcbiAgIFByZXR0eS1wcmludCBKU09OIGRhdGEgaW4gYW4gYXR0ZW1wdCB0byBtYXhpbWl6ZSByZWFkYWJpbGl0eS5cblxuICAgMS4gV2hhdCBmaXRzIG9uIG9uZSBsaW5lIHN0YXlzIG9uIG9uZSBsaW5lLlxuICAgMi4gV2hhdCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSBnZXRzIHByaW50ZWQgbW9yZSB2ZXJ0aWNhbGx5IHNvIGFzIHRvIG5vdFxuICAgICAgZXhjZWVkIGEgcmVhc29uYWJsZSBwYWdlIHdpZHRoLCBpZiBwb3NzaWJsZS5cblxuICAgQXJyYXlzIGNvbnRhaW5pbmcgb25seSBzaW1wbGUgZWxlbWVudHMgKFwiYXRvbXNcIikgYXJlIHByZXR0eS1wcmludGVkIHdpdGhcbiAgIGVuZC1vZi1saW5lIHdyYXBwaW5nIGxpa2Ugb3JkaW5hcnkgdGV4dDpcblxuICAgICBbXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLFxuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIlxuICAgICBdXG5cbiAgIE90aGVyIGFycmF5cyBhcmUgcHJpbnRlZCBlaXRoZXIgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZXkgZml0IG9uIGEgc2luZ2xlIGxpbmU6XG5cbiAgICAgWyB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9IF1cblxuICAgb3JcblxuICAgICBbXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9XG4gICAgIF1cbiopXG5cbmxldCBwcF9saXN0IHNlcCBwcHggb3V0IGwgPVxuICBsZXQgcHBfc2VwIG91dCAoKSA9IEZvcm1hdC5mcHJpbnRmIG91dCBcIiVzQCBcIiBzZXAgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcHggb3V0IGxcblxubGV0IGlzX2F0b20gKHg6IFs+IHRdKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBOdWxsXG4gIHwgYEJvb2wgX1xuICB8IGBJbnQgX1xuICB8IGBGbG9hdCBfXG4gIHwgYFN0cmluZyBfXG4gIHwgYEludGxpdCBfXG4gIHwgYEZsb2F0bGl0IF9cbiAgfCBgU3RyaW5nbGl0IF9cbiAgfCBgTGlzdCBbXVxuICB8IGBBc3NvYyBbXVxuICB8IGBUdXBsZSBbXVxuICB8IGBWYXJpYW50IChfLCBOb25lKSAtPiB0cnVlXG4gIHwgYExpc3QgX1xuICB8IGBBc3NvYyBfXG4gIHwgYFR1cGxlIF9cbiAgfCBgVmFyaWFudCAoXywgU29tZSBfKSAtPiBmYWxzZVxuXG5sZXQgaXNfYXRvbV9saXN0IGwgPVxuICBMaXN0LmZvcl9hbGwgaXNfYXRvbSBsXG5cbigqXG4gICBpbnNpZGVfYm94OiBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBhbHJlYWR5IHdpdGhpbiBhIGJveCB0aGF0IGltcG9zZXNcbiAgIGEgY2VydGFpbiBzdHlsZSBhbmQgd2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBmb3JcbiAgIHByaW50aW5nIGZpZWxkIHZhbHVlcyBsaWtlIHRoaXM6XG5cbiAgICAgZm9vOiBbXG4gICAgICAgYmFyXG4gICAgIF1cblxuICAgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGVsc2UgbGlrZVxuXG4gICAgIGZvbzpcbiAgICAgICBbXG4gICAgICAgICBiYXJcbiAgICAgICBdXG4qKVxubGV0IHJlYyBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIChvdXQ6Rm9ybWF0LmZvcm1hdHRlcikgKHg6dCkgOiB1bml0ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIm51bGxcIlxuICAgIHwgYEJvb2wgeCAtPiBGb3JtYXQucHBfcHJpbnRfYm9vbCBvdXQgeFxuICAgIHwgYEludGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgVHVwbGUgbCAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaWYgbCA9IFtdIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiKClcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxob3YyPlwiO1xuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiKEAsJWFAOzwwIC0yPilcIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgICAgICAgKVxuICAgIHwgYFZhcmlhbnQgKHMsIE5vbmUpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZ2xpdCBzIGluXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgcmVwcmVzZW50YXRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjwlcz5cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG5cbiAgICB8IGBWYXJpYW50IChzLCBTb21lIHgpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZ2xpdCBzIGluXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IFsgcmVwcmVzZW50YXRpb247IHggXSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBvcCA9IGpzb25fc3RyaW5nX29mX3N0cmluZyBzIGluXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPEBbPGh2Mj4lczogJWFAXT5cIiBvcCAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBJbnRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgRmxvYXRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBTdHJpbmdsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmdsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFR1cGxlIHR1cCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBUdXBsZSAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIGUgLT5cbiAgICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgICBwcCBmbXQgZTtcbiAgICAgICAgICAgdHJ1ZSkgZmFsc2UgdHVwKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBWYXJpYW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBuYW1lO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgIChtYXRjaCB2YWx1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25lXCJcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKFNvbWUgXCI7XG4gICAgICAgIHBwIGZtdCB4O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIilcIik7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICAgIHwgYEludGxpdCBhLCBgSW50bGl0IGIgLT4gYSA9IGJcbiAgICB8IGBGbG9hdGxpdCBhLCBgRmxvYXRsaXQgYiAtPiBhID0gYlxuICAgIHwgYFN0cmluZ2xpdCBhLCBgU3RyaW5nbGl0IGIgLT4gYSA9IGJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYFR1cGxlIHhzLCBgVHVwbGUgeXNcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSksIGBWYXJpYW50IChuYW1lJywgdmFsdWUnKSAtPlxuICAgICAgKG1hdGNoIG5hbWUgPSBuYW1lJyB3aXRoXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUsIHZhbHVlJyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8IF8gLT4gZmFsc2VcblxubGV0IHByZXR0eV9wcmludCA/c3RkIG91dCB4ID0gUHJldHR5LnBwID9zdGQgb3V0IHhcbmxldCBwcmV0dHlfdG9fc3RyaW5nID9zdGQgeCA9IFByZXR0eS50b19zdHJpbmcgP3N0ZCB4XG5sZXQgcHJldHR5X3RvX2NoYW5uZWwgP3N0ZCBvYyB4ID0gUHJldHR5LnRvX2NoYW5uZWwgP3N0ZCBvYyB4XG5cbiMgMSBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIG1vZHVsZSBMZXhpbmcgPVxuICAgICgqXG4gICAgICBXZSBvdmVycmlkZSBMZXhpbmcuZW5naW5lIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IHBvc2l0aW9uXG4gICAgICByZWNvcmQgZWFjaCB0aW1lIGEgcnVsZSBpcyBtYXRjaGVkLlxuICAgICAgVGhpcyByZWR1Y2VzIHRvdGFsIHBhcnNpbmcgdGltZSBieSBhYm91dCAzMSUuXG4gICAgKilcbiAgc3RydWN0XG4gICAgaW5jbHVkZSBMZXhpbmdcblxuICAgIGV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcblxuICAgIGxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gICAgICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICAgICAgKCpcbiAgICAgIGlmIHJlc3VsdCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgICAgIGVuZDtcbiAgICAgICopXG4gICAgICByZXN1bHRcbiAgZW5kXG5cbiAgKCogc2VlIGRlc2NyaXB0aW9uIGluIGNvbW1vbi5tbGkgKilcbiAgdHlwZSBsZXhlcl9zdGF0ZSA9IENvbW1vbi5MZXhlcl9zdGF0ZS50ID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBkZWMgYyA9XG4gICAgQ2hhci5jb2RlIGMgLSA0OFxuXG4gIGxldCBoZXggYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICcwJy4uJzknIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcbiAgICAgIHwgJ2EnLi4nZicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyArIDEwXG4gICAgICB8ICdBJy4uJ0YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyAxMFxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIGxldCBjdXN0b21fZXJyb3IgZGVzY3IgdiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBvZmZzID0gbGV4YnVmLmxleF9hYnNfcG9zIC0gMSBpblxuICAgIGxldCBib2wgPSB2LmJvbCBpblxuICAgIGxldCBwb3MxID0gb2ZmcyArIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIC0gYm9sIC0gMSBpblxuICAgIGxldCBwb3MyID0gbWF4IHBvczEgKG9mZnMgKyBsZXhidWYubGV4X2N1cnJfcG9zIC0gYm9sKSBpblxuICAgIGxldCBmaWxlX2xpbmUgPVxuICAgICAgbWF0Y2ggdi5mbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBcIkxpbmVcIlxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgUHJpbnRmLnNwcmludGYgXCJGaWxlICVzLCBsaW5lXCIgc1xuICAgIGluXG4gICAgbGV0IGJ5dGVzID1cbiAgICAgIGlmIHBvczEgPSBwb3MyIHRoZW5cbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCJieXRlICVpXCIgKHBvczErMSlcbiAgICAgIGVsc2VcbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCJieXRlcyAlaS0laVwiIChwb3MxKzEpIChwb3MyKzEpXG4gICAgaW5cbiAgICBsZXQgbXNnID0gUHJpbnRmLnNwcmludGYgXCIlcyAlaSwgJXM6XFxuJXNcIiBmaWxlX2xpbmUgdi5sbnVtIGJ5dGVzIGRlc2NyIGluXG4gICAgQ29tbW9uLmpzb25fZXJyb3IgbXNnXG5cblxuICBsZXQgbGV4ZXJfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJyVzJ1wiIGRlc2NyIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikpXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBsb25nX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQganVuayA9IExleGluZy5sZXhlbWUgbGV4YnVmIGluXG4gICAgbGV0IGJ1Zl9zaXplID0gMzIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBidWZfc2l6ZSBpblxuICAgIGxldCAoKSA9IExleGVyX3V0aWxzLnJlYWRfanVua193aXRob3V0X3Bvc2l0aW9ucyBidWYgYnVmX3NpemUgbGV4YnVmIGluXG4gICAgbGV0IGV4dHJhX2p1bmsgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAnJXMlcydcIiBkZXNjciBqdW5rIGV4dHJhX2p1bmspXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBtaW4xMCA9IG1pbl9pbnQgLyAxMCAtIChpZiBtaW5faW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcbiAgbGV0IG1heDEwID0gbWF4X2ludCAvIDEwICsgKGlmIG1heF9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuXG4gIGV4Y2VwdGlvbiBJbnRfb3ZlcmZsb3dcblxuICBsZXQgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPj0gbWF4MTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuICsgZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgICAgYEludGxpdCAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG5cbiAgbGV0IGV4dHJhY3RfbmVnYXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSAgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgMSBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPD0gbWluMTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuIC0gZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPiAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgICAgYEludGxpdCAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG5cbiAgbGV0IG5ld2xpbmUgdiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIHYubG51bSA8LSB2LmxudW0gKyAxO1xuICAgIHYuYm9sIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3NcblxuICBsZXQgYWRkX2xleGVtZSBidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgQnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbiAgbGV0IG1hcF9sZXhlbWUgZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBmIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlbikgMCBsZW5cblxuICB0eXBlIHZhcmlhbnRfa2luZCA9IFsgYEVkZ3lfYnJhY2tldCB8IGBTcXVhcmVfYnJhY2tldCB8IGBEb3VibGVfcXVvdGUgXVxuXG4jIDE1NCBcImxpYi9yZWFkLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIzNlxcMjU1XFwyMzdcXDI1NVxcMDAzXFwwMDBcXDIzOVxcMjU1XFwwMTZcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNDlcXDI1NVxcMDg1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NFxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDI1M1xcMjU1XFwwMTFcXDAwMFxcMjUyXFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjUxXFwyNTVcXDAyMVxcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDIyXFwwMDBcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIyXFwwMDBcXDAxMlxcMDAwXFwwMDhcXDAwMFxcMjUwXFwyNTVcXFxuICAgIFxcMTE5XFwwMDBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTYxXFwwMDBcXDE3MVxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDIwOVxcMDAwXFxcbiAgICBcXDI0MFxcMjU1XFwwMTFcXDAwMFxcMDM4XFwwMDBcXDI1MlxcMjU1XFwwNjVcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMTBcXDAwMFxcXG4gICAgXFwyNTJcXDI1NVxcMTYzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjM0XFwwMDBcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMDQ4XFwwMDFcXFxuICAgIFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDEyNlxcMDAxXFxcbiAgICBcXDE0OVxcMDAxXFwyNDlcXDI1NVxcMDM5XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDM4XFwwMDBcXDE4N1xcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNDhcXDAwMVxcMDE1XFwwMDJcXDI1NVxcMjU1XFwyMjBcXDAwMFxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMDM5XFwwMDJcXFxuICAgIFxcMTA5XFwwMDJcXDAxNFxcMDAxXFwwODhcXDAwMlxcMTY0XFwwMDJcXDE4N1xcMDAyXFwyMjVcXDAwMlxcMDEzXFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDFcXFxuICAgIFxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDFcXDAwNVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwwMjNcXDAwMFxcMjU0XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDBcXDA0OFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAxXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDEzN1xcMDAwXFwxMDRcXDAwMFxcMDg5XFwwMDBcXDA4OFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDBcXDEzN1xcMDAwXFwxNzdcXDAwMFxcMjU0XFwyNTVcXDE4M1xcMDAwXFwxNjhcXDAwMFxcMTY2XFwwMDBcXFxuICAgIFxcMTgzXFwwMDBcXDAwMlxcMDAwXFwyNTNcXDI1NVxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxODdcXDAwMFxcMDA0XFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDA1M1xcMDAyXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwxMDNcXDAwMVxcMjU1XFwyNTVcXDI0OFxcMDAyXFwyNTRcXDI1NVxcXG4gICAgXFwwMDZcXDAwM1xcMDMwXFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDUwXFwwMDNcXFxuICAgIFxcMDc0XFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwM1xcMDg0XFwwMDNcXDEwOFxcMDAzXFxcbiAgICBcXDI0OVxcMjU1XFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI0NFxcMDAwXFwxMjBcXDAwM1xcMTQyXFwwMDNcXDE3OVxcMDAwXFwxOTRcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDE5MFxcMDAwXFwxODhcXDAwMFxcMTg3XFwwMDBcXDE5M1xcMDAwXFwxODNcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDE5MVxcMDAwXFwyMDFcXDAwMFxcMjAwXFwwMDBcXDE5NlxcMDAwXFwyMDNcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwxNTdcXDAwM1xcMDk1XFwwMDNcXDE3NFxcMDAzXFwxOTZcXDAwM1xcMjA2XFwwMDNcXDIxNlxcMDAzXFwyMjhcXDAwM1xcXG4gICAgXFwyMzlcXDAwM1xcMDYwXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMDg3XFwwMDRcXDI1NVxcMjU1XFwxNDVcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjFcXDAwNFxcMjU1XFwyNTVcXDIyOVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE4XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMTFcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODlcXDAwMFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDk1XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzNcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjIyXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDVcXDIzN1xcMjU1XFwyMzhcXDI1NVxcMDEwXFwwMDBcXDI0MFxcMjU1XFwwNDRcXDAwMVxcXG4gICAgXFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMDYxXFwwMDFcXDAwMlxcMDA0XFwyNDlcXDI1NVxcMDQ1XFwwMDVcXFxuICAgIFxcMjA5XFwwMDBcXDIyOFxcMDAwXFwyMTFcXDAwMFxcMjMyXFwwMDBcXDIyNVxcMDAwXFwyMjNcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIzNVxcMDAwXFwyMzRcXDAwMFxcMDA4XFwwMDFcXDI1NFxcMjU1XFwwMDRcXDAwMVxcMDIzXFwwMDFcXDI1M1xcMjU1XFwwNTRcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMDMxXFwwMDFcXDAyOVxcMDAxXFwwMzJcXDAwMVxcMDM5XFwwMDFcXDA0OVxcMDAxXFwwNDVcXDAwMVxcMjUxXFwyNTVcXFxuICAgIFxcMDU3XFwwMDFcXDA4MlxcMDAxXFwwODBcXDAwMVxcMDc4XFwwMDFcXDA4NFxcMDAxXFwwNzRcXDAwMVxcMDg2XFwwMDFcXDI1MFxcMjU1XFxcbiAgICBcXDExMFxcMDA1XFwwMTJcXDAwNFxcMTIzXFwwMDVcXDE1NVxcMDA1XFwxNjVcXDAwNVxcMTc3XFwwMDVcXDE4N1xcMDA1XFwxOTdcXDAwNVxcXG4gICAgXFwyNDFcXDI1NVxcMTk5XFwwMDFcXDA3N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDE1NFxcMDAyXFwyMjJcXDAwNVxcMjA5XFwwMDVcXFxuICAgIFxcMTU1XFwwMDJcXDIzOVxcMDA1XFwwNTNcXDAwNlxcMDc2XFwwMDZcXDExNFxcMDA2XFwwMTZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTUyXFwwMDZcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjI3XFwwMDZcXDI1NVxcMjU1XFwwODVcXDAwN1xcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAxMVxcMDAwXFwyNDdcXDI1NVxcMDc2XFwwMDJcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzFcXDAwMlxcMjQzXFwwMDVcXDA1MVxcMDA3XFwxMDBcXDAwMVxcMTE1XFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMThcXDAwMVxcMTU0XFwwMDFcXDE3MVxcMDAxXFwyNTVcXDI1NVxcMTczXFwwMDFcXDE3NlxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg3XFwwMDFcXDI1M1xcMDAxXFwyMzBcXDAwMVxcMjMwXFwwMDFcXDIzNFxcMDAxXFwyNDdcXDAwMVxcMjM3XFwwMDFcXFxuICAgIFxcMjM0XFwwMDFcXDAwOVxcMDAyXFwwMTlcXDAwMlxcMDE5XFwwMDJcXDAxNVxcMDAyXFwwMjFcXDAwMlxcMDExXFwwMDJcXDAwN1xcMDAyXFxcbiAgICBcXDE0MlxcMDA2XFwxNTJcXDAwNlxcMTE2XFwwMDdcXDE3MFxcMDA3XFwxODBcXDAwN1xcMTkwXFwwMDdcXDIwMFxcMDA3XFwyMTBcXDAwN1xcXG4gICAgXFwyNDhcXDI1NVxcMTIwXFwwMDJcXDE2N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDIxNlxcMDAyXFwwODJcXDAwN1xcMjIwXFwwMDdcXFxuICAgIFxcMjM2XFwwMDJcXDI0NFxcMDA3XFwwNThcXDAwOFxcMDgxXFwwMDhcXDExOVxcMDA4XFwwNzZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTU3XFwwMDhcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjMyXFwwMDhcXDI1NVxcMjU1XFwxMzVcXDAwMlxcXG4gICAgXFwxMjBcXDAwMlxcMjUzXFwyNTVcXDEwMFxcMDAyXFwyNTRcXDI1NVxcMTgyXFwwMDJcXDI1NVxcMjU1XFwwMTFcXDAwMlxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMlxcMjU1XFwyNTVcXDE3OFxcMDAyXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDE4M1xcMDAyXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIxXFwwMDJcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA5N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDEzOFxcMDAwXFwwMDBcXDAwMFxcMTQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTg3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxN1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTIxXFwwMDFcXDEyNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxNDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTkzXFwwMDFcXDE5N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjIwXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIzM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0MFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMTcwXFwwMDBcXDEzNFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxNFxcMDAxXFwwMTNcXDAwMFxcMDQ5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDA1NlxcMDAwXFwxMThcXDAwMFxcMDA2XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDFcXDEzN1xcMDAwXFwwMDBcXDAwMlxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMTM4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMTRcXDAwMFxcMTEwXFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAzMFxcMDAwXFwwNDhcXDAwMFxcMDA4XFwwMDBcXDExNFxcMDAwXFwyMDlcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAxXFxcbiAgICBcXDAxM1xcMDAxXFwwMjlcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxN1xcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDIzXFwwMDBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAzNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDIwXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMzdcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA2MVxcMDAwXFwwODVcXDAwMFxcMDQ4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA2N1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODZcXDAwMFxcMTQzXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMTQ0XFwwMDBcXFxuICAgIFxcMTQ1XFwwMDBcXDE0NlxcMDAwXFwwNTVcXDAwMFxcMTQ4XFwwMDBcXDA1NVxcMDAwXFwxNDlcXDAwMFxcMDQ4XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwxNTBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMFxcMTYxXFwwMDBcXDA2NlxcMDAwXFwxNThcXDAwMFxcMDUzXFwwMDBcXDE1OVxcMDAwXFwwNTNcXDAwMFxcMTYwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDE2NVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NlxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwxMTZcXDAwMFxcXG4gICAgXFwxMzJcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMjhcXDAwMFxcMTM5XFwwMDBcXDEzNFxcMDAwXFwxNjRcXDAwMFxcMDkzXFwwMDBcXFxuICAgIFxcMTcxXFwwMDBcXDA3N1xcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzJcXDAwMFxcMTEyXFwwMDBcXDE3M1xcMDAwXFxcbiAgICBcXDE3NFxcMDAwXFwyMTBcXDAwMFxcMjI2XFwwMDBcXDIwOFxcMDAwXFwyMTFcXDAwMFxcMjEyXFwwMDBcXDA1OVxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwxMzRcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE2XFwwMDBcXDIxOFxcMDAwXFwxNDFcXDAwMFxcMjE5XFwwMDBcXFxuICAgIFxcMDkzXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTIzXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMjI0XFwwMDBcXDEzNlxcMDAwXFxcbiAgICBcXDA5NVxcMDAwXFwyMjVcXDAwMFxcMDM1XFwwMDFcXDA2NVxcMDAxXFwyMzRcXDAwMFxcMTU1XFwwMDBcXDAwNVxcMDAxXFwwOTdcXDAwMVxcXG4gICAgXFwyNTBcXDAwMFxcMjU1XFwyNTVcXDI1NFxcMDAwXFwwNTdcXDAwMVxcMDYxXFwwMDFcXDA5NVxcMDAxXFwwNzdcXDAwMFxcMDQ0XFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA4OFxcMDAxXFwwMDlcXDAwMVxcMDI5XFwwMDFcXDA3NlxcMDAwXFwxMjRcXDAwMFxcMDMzXFwwMDFcXDAxOFxcMDAxXFxcbiAgICBcXDA3NVxcMDAwXFwwOThcXDAwMFxcMDE5XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDg3XFwwMDFcXDEyMFxcMDAxXFwwODlcXDAwMVxcXG4gICAgXFwwNzRcXDAwMFxcMjI1XFwwMDBcXDA1M1xcMDAxXFwxMjFcXDAwMVxcMDczXFwwMDBcXDA5MFxcMDAxXFwwNzJcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk4XFwwMDBcXDExM1xcMDAxXFwxMjJcXDAwMFxcMDkxXFwwMDFcXDA2NFxcMDAwXFwwMDRcXDAwMVxcXG4gICAgXFwwOTNcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwxNTZcXDAwMFxcMTEyXFwwMDFcXDA5NFxcMDAxXFwwOTZcXDAwMVxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwxMDBcXDAwMVxcMTU3XFwwMDBcXFxuICAgIFxcMTAxXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDE4M1xcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMDI0XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDEwMlxcMDAxXFwxMDNcXDAwMVxcMTA1XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxMDZcXDAwMVxcMTA3XFwwMDFcXDA0OFxcMDAxXFwwNDBcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxMTBcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwxMTFcXDAwMVxcXG4gICAgXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDE3MVxcMDAxXFwwMzFcXDAwMVxcMTcwXFwwMDFcXDAyM1xcMDAxXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA5MlxcMDAwXFwxNjhcXDAwMVxcMDYzXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMjQ4XFwwMDBcXDE2NVxcMDAxXFwyNTJcXDAwMFxcXG4gICAgXFwxNjJcXDAwMVxcMDU5XFwwMDFcXDA2OVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDAzOVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDE2M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwxMjBcXDAwMFxcMDAyXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMTY2XFwwMDFcXDA1NVxcMDAxXFwxNTNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDdcXDAwMVxcMTY3XFwwMDFcXDE2NFxcMDAxXFwxNjlcXDAwMVxcMDE2XFwwMDFcXDE2NFxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA1MVxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDEzN1xcMDAxXFwxNjRcXDAwMVxcMTcyXFwwMDFcXDE4NVxcMDAxXFwxMzZcXDAwMVxcMTczXFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDE3NFxcMDAxXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNDZcXDAwMVxcXG4gICAgXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDE4MFxcMDAwXFwxNjRcXDAwMVxcMTg0XFwwMDFcXDE4MVxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDEyNFxcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDE5MlxcMDAxXFwxNzhcXDAwMVxcXG4gICAgXFwwMjFcXDAwMVxcMTc5XFwwMDFcXDA5N1xcMDAwXFwxOTNcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTgzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDIxNlxcMDAxXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDE4NFxcMDAxXFwyMTZcXDAwMVxcMjA5XFwwMDFcXDA5N1xcMDAwXFxcbiAgICBcXDIyM1xcMDAxXFwwOTdcXDAwMFxcMjA4XFwwMDFcXDIzMFxcMDAxXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDIxOVxcMDAxXFwwMzdcXDAwMVxcXG4gICAgXFwyMTZcXDAwMVxcMjE3XFwwMDFcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMTZcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMjE4XFwwMDFcXDI1MFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMjRcXDAwMVxcMTI0XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMjFcXDAwMVxcMDAwXFwwMDBcXDI1M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5NlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyMzVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjQxXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDAwMVxcMjQyXFwwMDFcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI0NlxcMDAxXFwxMjlcXDAwMVxcMTI5XFwwMDFcXFxuICAgIFxcMjI4XFwwMDFcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDAwXFwwMDBcXDE5OFxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMjM0XFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMVxcMTc3XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDIwMVxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAwXFwyMDZcXDAwMVxcMTIzXFwwMDFcXDE4OVxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTg5XFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTk1XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNDhcXDAwMVxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMjAyXFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjI2XFwwMDBcXDE5NVxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMjFcXDAwMVxcMjM5XFwwMDFcXFxuICAgIFxcMjU0XFwwMDFcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMjQ0XFwwMDFcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg2XFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTEzXFwwMDFcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwMDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDIzOFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAxXFwwNzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzFcXDAwMVxcMDc2XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDFcXDExOVxcMDAxXFwwMDBcXDAwMFxcMTE5XFwwMDFcXDAwMFxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE3XFwwMDFcXDAwMFxcMDAwXFwwNzVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTg1XFwwMDFcXDAwMFxcMDAwXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE5MVxcMDAxXFwxNDJcXDAwMVxcMTkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDZcXDAwMVxcMTQ3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMTUzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3N1xcMDAxXFwxNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTU2XFwwMDFcXDAwMFxcMDAwXFwxNDhcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDE1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTg3XFwwMDFcXDAwMFxcMDAwXFwxNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAxXFwwMDBcXDAwMFxcMTg5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE5OVxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMTRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjVcXDAwMFxcMTM4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwM1xcMDAwXFwxNjlcXDAwMFxcMTM0XFwwMDBcXDE3NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTI1XFwwMDBcXDEyOVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyMzZcXDAwMVxcMTM2XFwwMDBcXDI1NVxcMDAxXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDAxMFxcMDAwXFwxMzZcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwxMDdcXDAwMFxcMTAyXFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDI5XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDIwOFxcMDAwXFwyMzNcXDAwMFxcMjU1XFwwMDBcXFxuICAgIFxcMDEyXFwwMDFcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDYwXFwwMDBcXDAxMVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyNFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMjJcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDMzXFwwMDBcXDAxOFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMTlcXDAwMFxcMDM1XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NVxcMDAwXFwwNDZcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NVxcMDAwXFwxNDBcXDAwMFxcMDYwXFwwMDBcXDAxM1xcMDAwXFwxNDNcXDAwMFxcXG4gICAgXFwxNDRcXDAwMFxcMTQ1XFwwMDBcXDA0OFxcMDAwXFwxNDdcXDAwMFxcMDQ4XFwwMDBcXDE0OFxcMDAwXFwwMzlcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNjVcXDAwMFxcMDM5XFwwMDBcXDE0OVxcMDAwXFxcbiAgICBcXDE1MFxcMDAwXFwxNTZcXDAwMFxcMDYzXFwwMDBcXDE1N1xcMDAwXFwwNTFcXDAwMFxcMTU4XFwwMDBcXDA1MVxcMDAwXFwxNTlcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMTU1XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTU1XFwwMDBcXDA5MVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2OFxcMDAwXFwxMDJcXDAwMFxcMTA3XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDEzMVxcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMTMzXFwwMDBcXDE2M1xcMDAwXFwwOTRcXDAwMFxcXG4gICAgXFwxNjVcXDAwMFxcMDY4XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE3MVxcMDAwXFwxMTFcXDAwMFxcMTcyXFwwMDBcXFxuICAgIFxcMTczXFwwMDBcXDIwNlxcMDAwXFwyMDNcXDAwMFxcMjA3XFwwMDBcXDIxMFxcMDAwXFwyMTFcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDEzM1xcMDAwXFwyMTJcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE3XFwwMDBcXDE0MFxcMDAwXFwyMThcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMTlcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMTMzXFwwMDBcXFxuICAgIFxcMDkxXFwwMDBcXDIwM1xcMDAwXFwwMzRcXDAwMVxcMDYyXFwwMDFcXDIzM1xcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAxXFxcbiAgICBcXDI0N1xcMDAwXFwwNjBcXDAwMFxcMjUxXFwwMDBcXDA1NFxcMDAxXFwwNThcXDAwMVxcMDgxXFwwMDFcXDA2OFxcMDAwXFwwNDFcXDAwMVxcXG4gICAgXFwwODJcXDAwMVxcMDgzXFwwMDFcXDAwNlxcMDAxXFwwMjZcXDAwMVxcMDY4XFwwMDBcXDExOVxcMDAwXFwwMzBcXDAwMVxcMDE1XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDA5NFxcMDAwXFwwMTVcXDAwMVxcMDg0XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDcxXFwwMDFcXDA4OFxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwyMDNcXDAwMFxcMDUwXFwwMDFcXDA3MVxcMDAxXFwwNjhcXDAwMFxcMDg5XFwwMDFcXDA2OFxcMDAwXFwwNjhcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwOTdcXDAwMFxcMDc2XFwwMDFcXDExOVxcMDAwXFwwOTBcXDAwMVxcMDYzXFwwMDBcXDAwMVxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDE1MlxcMDAwXFwwNzZcXDAwMVxcMDkzXFwwMDFcXDA5NVxcMDAxXFwwOTdcXDAwMVxcMDk4XFwwMDFcXDA0NVxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OVxcMDAxXFwxNTJcXDAwMFxcXG4gICAgXFwxMDBcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwwMjBcXDAwMVxcMDc2XFwwMDFcXDA2NVxcMDAwXFwwMjBcXDAwMVxcMTAxXFwwMDFcXDEwMlxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDEwNVxcMDAxXFwxMDZcXDAwMVxcMDQ1XFwwMDFcXDAzNlxcMDAxXFwxMDdcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDExMFxcMDAxXFxcbiAgICBcXDAyNlxcMDAxXFwxMjFcXDAwMVxcMTU3XFwwMDFcXDAzMFxcMDAxXFwxNThcXDAwMVxcMDIwXFwwMDFcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDE1OVxcMDAxXFwwNjJcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwyNDdcXDAwMFxcMTYwXFwwMDFcXDI1MVxcMDAwXFxcbiAgICBcXDE2MVxcMDAxXFwwNThcXDAwMVxcMDY4XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA5NFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDM2XFwwMDFcXDA0MVxcMDAxXFwwOTdcXDAwMFxcMTYyXFwwMDFcXFxuICAgIFxcMTYzXFwwMDFcXDExOVxcMDAwXFwwMDFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwxNjVcXDAwMVxcMDU0XFwwMDFcXDE1MlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwNlxcMDAxXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMTVcXDAwMVxcMTY5XFwwMDFcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDUwXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTMzXFwwMDFcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTU0XFwwMDFcXDEzM1xcMDAxXFwxNzJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTczXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA0NVxcMDAxXFxcbiAgICBcXDE3NFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAxXFwxNTRcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTIyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMTQ4XFwwMDFcXDE3N1xcMDAxXFxcbiAgICBcXDAyMFxcMDAxXFwxNzhcXDAwMVxcMDk4XFwwMDBcXDE0OFxcMDAxXFwxNzlcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcXG4gICAgXFwxODNcXDAwMVxcMjE2XFwwMDFcXDE5M1xcMDAxXFwwOTVcXDAwMFxcMTU0XFwwMDFcXDIxNlxcMDAxXFwyMDVcXDAwMVxcMDk4XFwwMDBcXFxuICAgIFxcMjIyXFwwMDFcXDA5NVxcMDAwXFwyMDVcXDAwMVxcMjI5XFwwMDFcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMjE4XFwwMDFcXDAzNlxcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwyMTVcXDAwMVxcMjU1XFwyNTVcXDIxOFxcMDAxXFwyMTVcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMTZcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDIxNVxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMjJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk4XFwwMDBcXDI1NVxcMjU1XFwyMTVcXDAwMVxcMjQ3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOThcXDAwMFxcMjU1XFwyNTVcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMDk4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIyMFxcMDAxXFwyNTVcXDI1NVxcMjUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5OFxcMDAwXFwxMjFcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMDk4XFwwMDBcXDA5OFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDI1MVxcMDAxXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjQzXFwwMDFcXDEyNVxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDI1NVxcMjU1XFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyMzFcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwxNzZcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMjU1XFwyNTVcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTg1XFwwMDBcXDIwNVxcMDAxXFwxMjJcXDAwMVxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFxcbiAgICBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTJcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkzXFwwMDFcXDI0N1xcMDAxXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOTlcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwxOTlcXDAwMFxcMTI1XFwwMDFcXDEyOFxcMDAxXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcXG4gICAgXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwyMDRcXDAwMFxcMTk0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDBcXDIyMFxcMDAxXFwyMzhcXDAwMVxcXG4gICAgXFwyNTFcXDAwMVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyNDNcXDAwMVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjRcXDAwMVxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMTk3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDIyOFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFxcbiAgICBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFxcbiAgICBcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDE5OVxcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjM3XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwxMTJcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExNVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTVcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXFxuICAgIFxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXFxuICAgIFxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcXG4gICAgXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMjU1XFwyNTVcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDEyNlxcMDAxXFwxMjlcXDAwMVxcMTI2XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyOVxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTg0XFwwMDFcXDEzOFxcMDAxXFwxODRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXFxuICAgIFxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTU2XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwxODZcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTk4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDFcXDI1NVxcMjU1XFwxODdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTg2XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxNzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgdHJ1ZSApXG4jIDEwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDE3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCBmYWxzZSApXG4jIDEwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDE3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgTnVsbCApXG4jIDEwMjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDE3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgXCJOYU5cIlxuICAgICAgICAgICAgICAgIClcbiMgMTAzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMTgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCBcIkluZmluaXR5XCJcbiAgICAgICAgICAgICAgICApXG4jIDEwNDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgXCItSW5maW5pdHlcIlxuICAgICAgICAgICAgICAgIClcbiMgMTA1NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgMTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBTdHJpbmdsaXQgKGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgKVxuIyAxMDY4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyAyMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgKVxuIyAxMDczIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyAyMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgKVxuIyAxMDc4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyAyMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0bGl0IChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgKVxuIyAxMDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgMjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBBc3NvYyAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgMjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgYExpc3QgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTEzNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEyIC0+XG4jIDI1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGBUdXBsZSAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTU5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTMgLT5cbiMgMjc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBjb25zID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGBWYXJpYW50IChjb25zLCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTczIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTQgLT5cbiMgMjg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTc4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTUgLT5cbiMgMjg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE4MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE2IC0+XG4jIDI4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE3IC0+XG4jIDI4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE4IC0+XG4jIDI4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDExOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOSAtPlxuIyAyOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAxMjAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIDU4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDI5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jb250ZW50cyB2LmJ1ZiApXG4jIDEyMTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDI5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxMjIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAyOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDEyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDI5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMjMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX3N0cmluZyB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgNjNcbmFuZCBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBsZXQgYiA9IHYuYnVmIGluXG4gICAgICAgICAgICAgICAgICAgIGYgKEJ1ZmZlci5jb250ZW50cyBiKSAwIChCdWZmZXIubGVuZ3RoIGIpIClcbiMgMTI0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTI1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDEyNTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDMwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMjYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIDY4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgY1xuIyAxMjc1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cbiMgMzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiBjIClcbiMgMTI3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXGInIClcbiMgMTI4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXDAxMicgKVxuIyAxMjg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbicgKVxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAzMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xccicgKVxuIyAxMjk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyAzMTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcdCcgKVxuIyAxMzA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxubGV0XG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgYVxuIyAxMzEwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuIyAxMzE1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDEzMjAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuIyAxMzI1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNCkgaW5cbiMgMzIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB4ID49IDB4RDgwMCAmJiB4IDw9IDB4REJGRiB0aGVuXG4gICAgICAgICAgICAgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWZcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIENvZGVjLnV0Zjhfb2ZfY29kZSB2LmJ1ZiB4XG5cbiAgICAgICAgIClcbiMgMTMzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgMzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlXCIgdiBsZXhidWYgKVxuIyAxMzQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTM0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiA4MlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgYVxuIyAxMzYwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiXG4jIDEzNjUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyAxMzcwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNClcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuIyAxMzc1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNSkgaW5cbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHkgPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB5ID49IDB4REMwMCAmJiB5IDw9IDB4REZGRiB0aGVuXG4gICAgICAgICAgICAgQ29kZWMudXRmOF9vZl9zdXJyb2dhdGVfcGFpciB2LmJ1ZiB4IHlcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGxvdyBzdXJyb2dhdGUgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiXG4gICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgKVxuIyAxMzg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiTWlzc2luZyBlc2NhcGUgc2VxdWVuY2UgcmVwcmVzZW50aW5nIGxvdyBzdXJyb2dhdGUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiIHYgbGV4YnVmIClcbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEzOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA5MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgICAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIChsZW4rMSkgaW5cbiAgICAgICAgICAgQnl0ZXMuc2V0IHMgMCAnXCInO1xuICAgICAgICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIHMgMSBsZW47XG4gICAgICAgICAgIEJ5dGVzLnRvX3N0cmluZyBzXG4gICAgICAgICApXG4jIDE0MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAxNDIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMDJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID0gcmVhZF9qc29uIHYgbGV4YnVmIGluXG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWY7XG4gICAgICAgICAgIFNvbWUgeCApXG4jIDE0NDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIE5vbmUgKVxuIyAxNDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgMTA3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM2OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDE0NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiAxMTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbW1hIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIDExNVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE1MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTUyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMTlcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgRWRneV9icmFja2V0IClcbiMgMTUzMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGBEb3VibGVfcXVvdGUgKVxuIyAxNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYFNxdWFyZV9icmFja2V0IClcbiMgMTU0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcsICdcXFwiJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAzODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE1NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDEyNVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNTY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzOTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG4jIDE1NzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcbiMgMTU3NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAxNTgxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZW9mIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIDEzMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE1OTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNTk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIDEzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjEwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDE2MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiAxNDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoICgpIClcbiMgMTY0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ251bGwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTY0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTY1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsX2lmX3Bvc3NpYmxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgMTQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY2NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYm9vbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIDE1MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY4MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY4NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjkxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd0cnVlJyBvciAnZmFsc2UnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTcwMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzA2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgMTc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTcyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludGVnZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTc0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnRlZ2VyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTc1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50MzIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgMTg1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQ1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50MzIub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzY5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDMyLm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQzMiBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxNzg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDMyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTc5MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzk3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQ2NCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiAxOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQ2NC5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE4MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQ4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50NjQub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDY0IGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE4MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50NjQgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxODM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE4MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bWJlciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgMTk5XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmFuIClcbiMgMTg1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGluZmluaXR5IClcbiMgMTg1NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5lZ19pbmZpbml0eSApXG4jIDE4NjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDUwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmbG9hdF9vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKSApXG4jIDE4NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDUwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGZsb2F0IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3Jlcy4gKilcbiAgICAgICAgICAgICAgICAgICAgZmxvYXRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiTmFOXCIgLT4gbmFuXG4gICAgICAgICAgICAgICAgICAgICAgfCBcIkluZmluaXR5XCIgLT4gaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IFwiLUluZmluaXR5XCIgLT4gbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYSBudW1iZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhIG51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICApXG4jIDE4ODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDUyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgbnVtYmVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTg5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgNTIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxODk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiAyMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTkxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXFxcIicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiAyMzdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxOTM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxubGV0XG4jIDUzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgc1xuIyAxOTQwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDUzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBzIClcbiMgMTk0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDUzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTk1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9pZGVudCB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiAyNDJcbmFuZCBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxOTY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbWFwX2xleGVtZSBmIGxleGJ1ZiApXG4jIDE5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5ODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zZXF1ZW5jZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIwMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU2MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjAxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiAyNTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU2NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMDQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjA1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiAyNTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1ODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDIwNjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIwNzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiAyNTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIwODMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMjA4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjA5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGUgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNjJcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgICAgIClcbiMgMjEzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMTM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2MjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIxNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgMjY2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTU5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIDI2OFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjE3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIxODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgMjcxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIyMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjIxNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIDI3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMjI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIyMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiAyODJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIyODYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI5MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sY3VybCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiAyODZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjMwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2ODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIDI5MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAyMzMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgMjkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjM0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMjM1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjM1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIDI5N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzNzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjM4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV90dXBsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIDMwMVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmYWxzZSApXG4jIDIzOTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCB0cnVlIClcbiMgMjQwMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQwNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNzA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiAzMDZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDIzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0MjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQzMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ycGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgMzEwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiAzMTRcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcmJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiAzMThcbmFuZCBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIDMyMlxuYW5kIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDczNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDczNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDc0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNTQxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyA3NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjU0NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjU1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNTc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgNzY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI1OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA3ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI2MTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMiAtPlxuIyA4MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjYzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEzIC0+XG4jIDgxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjYzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE0IC0+XG4jIDgxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNSAtPlxuIyA4MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNiAtPlxuIyA4MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNyAtPlxuIyA4MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNjU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTggLT5cbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMjY2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgMzc4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAyNjc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMjY3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI2ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgMzg5XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZiApXG4jIDI2OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMjcwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNzA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjcxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgMzk0XG5hbmQgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNzI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNzMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjczNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNzQwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIDM5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcbiMgMjc1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjc1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAneyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNzg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4ODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdbJztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyODAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcoJztcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyODI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA5MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzwnO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjg0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgOTMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyA5MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg2MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgOTM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgOTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjg3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDkzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDI4NzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDQ1MFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcIic7XG4gICAgICAgICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmXG4gICAgICAgICApXG4jIDI4OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAyODk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjkwMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiA0NjFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonO1xuICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfZ3QgdiBsZXhidWYgKVxuIyAyOTE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcbiMgMjkyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyOTI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjkzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgNDY2XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjk0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcbiMgMjk0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTYzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI5NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjk1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgNDcxXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTY3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5ODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA5ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMzAwMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIDQ3OFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nO1xuICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAzMDE0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5ODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMDE5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiA0ODBcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzAzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7IHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMzAzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzA0MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMDQ2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgNDg1XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMzA1OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzA2MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgNDg3XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMwNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDMwODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMDg1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMDkwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiA0OTJcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJztcbiAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAzMTA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzEwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgNDk0XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMxMjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDMxMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgNDk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonIClcbiMgMzE0OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzE1MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzE1OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgNTAzXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuIyAzMTcwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzE4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgNTA3XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiKi9cIiApXG4jIDMxOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG4jIDMxOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG4jIDMyMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcbiMgMzIwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBsZXQgXyA9IChyZWFkX2pzb24gOiBsZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+IHQpXG5cbiAgbGV0IHJlYWRfdCA9IHJlYWRfanNvblxuXG4gIGxldCByZWFkX2ludDggdiBsZXhidWYgPVxuICAgIGxldCBuID0gcmVhZF9pbnQgdiBsZXhidWYgaW5cbiAgICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW5cbiAgICAgIGxleGVyX2Vycm9yIFwiSW50OCBvdmVyZmxvd1wiIHYgbGV4YnVmXG4gICAgZWxzZVxuICAgICAgY2hhcl9vZl9pbnQgblxuXG4gIGxldCByZWFkX2xpc3QgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBMaXN0LnJldiAocmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYpXG5cbiAgbGV0IGFycmF5X29mX3Jldl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICBbXSAtPiBbfCB8XVxuICAgICAgfCB4IDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICAgIHIgOj0gTGlzdC50bCAhclxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgYVxuXG4gIGxldCByZWFkX2FycmF5IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgbGV0IGwgPSByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiBpblxuICAgIGFycmF5X29mX3Jldl9saXN0IGxcblxuICAoKiBSZWFkIGEgSlNPTiBvYmplY3QsIHJlYWRpbmcgdGhlIGtleXMgaW50byBPQ2FtbCBzdHJpbmdzXG4gICAgIChwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKilcbiAgbGV0IHJlYWRfZmllbGRzIHJlYWRfZmllbGQgaW5pdF9hY2MgdiA9XG4gICAgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9pZGVudCByZWFkX2ZpZWxkIGluaXRfYWNjIHZcblxuICBsZXQgZmluaXNoIHYgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgIGlmIG5vdCAocmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBsb25nX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZTpcIiB2IGxleGJ1ZlxuXG4gIGxldCBpbml0X2xleGVyID0gQ29tbW9uLmluaXRfbGV4ZXJcblxuICBsZXQgZnJvbV9sZXhidWYgdiA/KHN0cmVhbSA9IGZhbHNlKSBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG5cbiAgICBsZXQgeCA9XG4gICAgICBpZiByZWFkX2VvZiBsZXhidWYgdGhlblxuICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX2lucHV0XG4gICAgICBlbHNlXG4gICAgICAgIHJlYWRfanNvbiB2IGxleGJ1ZlxuICAgIGluXG5cbiAgICBpZiBub3Qgc3RyZWFtIHRoZW5cbiAgICAgIGZpbmlzaCB2IGxleGJ1ZjtcblxuICAgIHhcblxuXG4gIGxldCBmcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyBpblxuICAgICAgY2xvc2VfaW4gaWM7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICAgIHJhaXNlIGVcblxuICBleGNlcHRpb24gRmluYWxseSBvZiBleG4gKiBleG5cblxuICBsZXQgc2VxX2Zyb21fbGV4YnVmIHYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIGxleGJ1ZiA9XG4gICAgbGV0IHN0cmVhbSA9IFNvbWUgdHJ1ZSBpblxuICAgIGxldCByZWMgZiAoKSA9XG4gICAgICB0cnkgU2VxLkNvbnMgKGZyb21fbGV4YnVmIHYgP3N0cmVhbSBsZXhidWYsIGYpXG4gICAgICB3aXRoXG4gICAgICAgICAgQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgZmluICgpO1xuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICAgICh0cnkgZmluICgpIHdpdGggZmluX2UgLT4gcmFpc2UgKEZpbmFsbHkgKGUsIGZpbl9lKSkpO1xuICAgICAgICAgICAgcmFpc2UgZVxuICAgIGluXG4gICAgZlxuXG4gIGxldCBzZXFfZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4gIGxldCBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgP2ZpbiBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IH5maW4gbGV4YnVmXG5cbiAgdHlwZSBqc29uX2xpbmUgPSBbIGBKc29uIG9mIHQgfCBgRXhuIG9mIGV4biBdXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9jaGFubmVsXG4gICAgICA/YnVmID8oZmluID0gZnVuICgpIC0+ICgpKSA/Zm5hbWUgP2xudW06KGxudW0wID0gMSkgaWMgPVxuICAgIGxldCBidWYgPVxuICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgKEJ1ZmZlci5jcmVhdGUgMjU2KVxuICAgICAgICB8IFNvbWUgXyAtPiBidWZcbiAgICBpblxuICAgIGxldCByZWMgZiBsbnVtID0gZnVuICgpIC0+XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxpbmUgPSBpbnB1dF9saW5lIGljIGluXG4gICAgICAgIFNlcS5Db25zIChgSnNvbiAoZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgfmxudW0gbGluZSksIGYgKGxudW0gKyAxKSlcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfZmlsZSAtPiBmaW4gKCk7IFNlcS5OaWxcbiAgICAgICAgfCBlIC0+IFNlcS5Db25zIChgRXhuIGUsIGYgKGxudW0gKyAxKSlcbiAgICBpblxuICAgIGYgbG51bTBcblxuICBsZXQgbGluZXNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGluZXNlcV9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluID9mbmFtZSA/bG51bSBpY1xuXG4gIGxldCBwcmV0dGlmeSA/c3RkIHMgPVxuICAgIHByZXR0eV90b19zdHJpbmcgP3N0ZCAoZnJvbV9zdHJpbmcgcylcblxuICBsZXQgY29tcGFjdCA/c3RkOl8gcyA9XG4gICAgdG9fc3RyaW5nIChmcm9tX3N0cmluZyBzKVxuXG4jIDMzNzUgXCJsaWIvcmVhZC5tbFwiXG5cbm1vZHVsZSBVdGlsID0gc3RydWN0XG5leGNlcHRpb24gVHlwZV9lcnJvciBvZiBzdHJpbmcgKiB0XG5cbmxldCB0eXBlb2YgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBfIC0+IFwib2JqZWN0XCJcbiAgfCBgQm9vbCBfIC0+IFwiYm9vbFwiXG4gIHwgYEZsb2F0IF8gLT4gXCJmbG9hdFwiXG4gIHwgYExpc3QgXyAtPiBcImFycmF5XCJcbiAgfCBgTnVsbCAtPiBcIm51bGxcIlxuICB8IGBTdHJpbmcgXyAtPiBcInN0cmluZ1wiXG4gIHwgYEludGxpdCBfIC0+IFwiaW50bGl0XCJcbiAgfCBgRmxvYXRsaXQgXyAtPiBcImZsb2F0bGl0XCJcbiAgfCBgU3RyaW5nbGl0IF8gLT4gXCJzdHJpbmdsaXRcIlxuICB8IGBUdXBsZSBfIC0+IFwidHVwbGVcIlxuICB8IGBWYXJpYW50IF8gLT4gXCJ2YXJpYW50XCJcblxubGV0IHR5cGVyciBtc2cganMgPSByYWlzZSAoVHlwZV9lcnJvciAobXNnIF4gdHlwZW9mIGpzLCBqcykpXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nICogdFxuXG5sZXQgYXNzb2MgbmFtZSBvYmogPSB0cnkgTGlzdC5hc3NvYyBuYW1lIG9iaiB3aXRoIE5vdF9mb3VuZCAtPiBgTnVsbFxuXG5sZXQgbWVtYmVyIG5hbWUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gYXNzb2MgbmFtZSBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IG1lbWJlciAnXCIgXiBuYW1lIF4gXCInIG9mIG5vbi1vYmplY3QgdHlwZSBcIikganNcblxubGV0IHJlYyBwYXRoIGwgb2JqID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gU29tZSBvYmpcbiAgfCBrZXkgOjogbCAtPiAoXG4gICAgICBtYXRjaCBvYmogd2l0aFxuICAgICAgfCBgQXNzb2MgYXNzb2MgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Mga2V5IGFzc29jIHdpdGhcbiAgICAgICAgICB8IG9iaiAtPiBwYXRoIGwgb2JqXG4gICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IGluZGV4IGkgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMganMgLT5cbiAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICBsZXQgd3JhcHBlZF9pbmRleCA9IGlmIGkgPCAwIHRoZW4gbGVuICsgaSBlbHNlIGkgaW5cbiAgICAgIGlmIHdyYXBwZWRfaW5kZXggPCAwIHx8IHdyYXBwZWRfaW5kZXggPj0gbGVuIHRoZW5cbiAgICAgICAgcmFpc2UgKFVuZGVmaW5lZCAoXCJJbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG91dCBvZiBib3VuZHNcIiwganMpKVxuICAgICAgZWxzZSBMaXN0Lm50aCBsIHdyYXBwZWRfaW5kZXhcbiAgfCBqcyAtPlxuICAgICAgdHlwZXJyIChcIkNhbid0IGdldCBpbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG9mIG5vbi1hcnJheSB0eXBlIFwiKSBqc1xuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gYExpc3QgKExpc3QubWFwIGYgbClcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBtYXAgZnVuY3Rpb24gb3ZlciBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgdG9fYXNzb2MgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gb2JqXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgb2JqZWN0LCBnb3QgXCIganNcblxubGV0IHRvX29wdGlvbiBmID0gZnVuY3Rpb24gYE51bGwgLT4gTm9uZSB8IHggLT4gU29tZSAoZiB4KVxubGV0IHRvX2Jvb2wgPSBmdW5jdGlvbiBgQm9vbCBiIC0+IGIgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sLCBnb3QgXCIganNcblxubGV0IHRvX2Jvb2xfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+IFNvbWUgYlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyID0gZnVuY3Rpb25cbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50LCBnb3QgXCIganNcblxubGV0IHRvX2ludF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19saXN0ID0gZnVuY3Rpb24gYExpc3QgbCAtPiBsIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYXJyYXksIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcsIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZyBvciBudWxsLCBnb3QgXCIganNcblxubGV0IGNvbnZlcnRfZWFjaCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGYgbFxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IGNvbnZlcnQgZWFjaCBlbGVtZW50IG9mIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCByZWMgcmV2X2ZpbHRlcl9tYXAgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXZfZmlsdGVyX21hcCBmIGFjYyB0bFxuICAgICAgfCBTb21lIHkgLT4gcmV2X2ZpbHRlcl9tYXAgZiAoeSA6OiBhY2MpIHRsKVxuXG5sZXQgZmlsdGVyX21hcCBmIGwgPSBMaXN0LnJldiAocmV2X2ZpbHRlcl9tYXAgZiBbXSBsKVxuXG5sZXQgcmVjIHJldl9mbGF0dGVuIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYExpc3QgbDIgLT4gcmV2X2ZsYXR0ZW4gKExpc3QucmV2X2FwcGVuZCBsMiBhY2MpIHRsXG4gICAgICB8IF8gLT4gcmV2X2ZsYXR0ZW4gYWNjIHRsKVxuXG5sZXQgZmxhdHRlbiBsID0gTGlzdC5yZXYgKHJldl9mbGF0dGVuIFtdIGwpXG5cbmxldCBmaWx0ZXJfaW5kZXggaSBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgTGlzdCBsIC0+ICggdHJ5IFNvbWUgKExpc3QubnRoIGwgaSkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9saXN0IGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgTGlzdCBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxuXG5sZXQgZmlsdGVyX21lbWJlciBrIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBBc3NvYyBsIC0+ICggdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBsKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2Fzc29jIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQXNzb2MgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfYm9vbCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEJvb2wgeCAtPiBTb21lIHggfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfaW50IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgbFxuXG5sZXQgZmlsdGVyX2Zsb2F0IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfbnVtYmVyIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBrZXlzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKGtleSwgXykgLT4ga2V5KVxuXG5sZXQgdmFsdWVzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKF8sIHZhbHVlKSAtPiB2YWx1ZSlcblxubGV0IGNvbWJpbmUgKGZpcnN0IDogdCkgKHNlY29uZCA6IHQpID1cbiAgbWF0Y2ggKGZpcnN0LCBzZWNvbmQpIHdpdGhcbiAgfCBgQXNzb2MgYSwgYEFzc29jIGIgLT4gKGBBc3NvYyAoYSBAIGIpIDogdClcbiAgfCBhLCBiIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRXhwZWN0ZWQgdHdvIG9iamVjdHMsIGNoZWNrIGlucHV0c1wiKVxuZW5kXG5cbiIsIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIHwgYEludCBvZiBpbnRcbiAgICB8IGBJbnRsaXQgb2Ygc3RyaW5nXG4gICAgfCBgRmxvYXQgb2YgZmxvYXRcbiAgICB8IGBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIHwgYFR1cGxlIG9mIHQgbGlzdFxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgb3B0aW9uKVxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuXG5sZXQgcmVjIHRvX2Jhc2ljIDogdCAtPiBCYXNpYy50ID0gZnVuY3Rpb25cbiAgfCAoYE51bGwgfCBgQm9vbCBfIHwgYEludCBfIHwgYEZsb2F0IF8gfCBgU3RyaW5nIF8pIGFzIHggLT4geFxuICB8IGBJbnRsaXQgcyAtPiBgU3RyaW5nIHNcbiAgfCBgTGlzdCBsIHwgYFR1cGxlIGwgLT4gYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgdG9fYmFzaWMgbCkpXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGBBc3NvYyAoTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgdG9fYmFzaWMgdikpIGwpKVxuICB8IGBWYXJpYW50IChrLCBOb25lKSAtPiBgU3RyaW5nIGtcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSAtPiBgTGlzdCBbIGBTdHJpbmcgazsgdG9fYmFzaWMgdiBdXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfZmxvYXQgb2IgZlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfdHVwbGUgb2IgbFxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKCc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcpJ1xuXG5hbmQgd3JpdGVfdmFyaWFudCBvYiBzIG8gPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJzwnO1xuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgKG1hdGNoIG8gd2l0aFxuICAgICAgIE5vbmUgLT4gKClcbiAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICAgICB3cml0ZV9qc29uIG9iIHhcbiAgKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc+J1xuXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfc3RkX2Zsb2F0IG9iIGZcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfc3RkX3R1cGxlIG9iIGxcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG9cblxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG8gPVxuICBtYXRjaCBvIHdpdGhcbiAgICAgIE5vbmUgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICAgICAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgICAgd3JpdGVfc3RkX2pzb24gb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgKCogdGhpcyByZXF1aXJlcyBhbiBpbnQgYW5kIG5ldmVyIHVzZXMgaXQuIFRoaXMgaXMgZG9uZSB0byBwcmVzZXJ2ZVxuICAgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIG5vdCBicmVhayB0aGUgc2lnbmF0dXIgYnV0IGNhbiBzYWZlbHlcbiAgICAgYmUgY2hhbmdlZCB0byByZXF1aXJlIHVuaXQgaW4gYSBmdXR1cmUgY29tcGF0aWJpbGl0eS1icmVha2luZ1xuICAgICByZWxlYXNlICopXG4gIGxldCBfIDogaW50ID0gb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKSBpblxuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX2ZpbGUgP2xlbiA/c3RkID8oc3VmID0gXCJcXG5cIikgZmlsZSB4ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICB0b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHg7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbmxldCBzZXFfdG9fYnVmZmVyID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYiBzdCA9XG4gIFNlcS5pdGVyICh0b19idWZmZXIgfnN1ZiA/c3RkIG9iKSBzdFxuXG5sZXQgc2VxX3RvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgc3QgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICBzZXFfdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBzdDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCBzZXFfdG9fY2hhbm5lbCA/YnVmID8obGVuPTIwOTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYyBzZXEgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIFNlcS5pdGVyIChmdW4ganNvbiAtPlxuICAgIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IganNvbjtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICkgc2VxXG5cbmxldCBzZXFfdG9fZmlsZSA/bGVuID8oc3VmID0gXCJcXG5cIikgP3N0ZCBmaWxlIHN0ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyBzdDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxuXG5sZXQgcmVjIHNvcnQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHNvcnQgdikpIGwpIGluXG4gICAgICBgQXNzb2MgKExpc3Quc3RhYmxlX3NvcnQgKGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikgbClcbiAgfCBgTGlzdCBsIC0+XG4gICAgICBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IGBUdXBsZSBsIC0+XG4gICAgICBgVHVwbGUgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSBhcyB4IC0+XG4gICAgICBsZXQgdicgPSBzb3J0IHYgaW5cbiAgICAgIGlmIHYgPT0gdicgdGhlbiB4XG4gICAgICBlbHNlXG4gICAgICAgIGBWYXJpYW50IChrLCBTb21lIHYnKVxuICB8IHggLT4geFxuXG5tb2R1bGUgUHJldHR5ID0gc3RydWN0XG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgfCBgSW50IHggLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX2ludCB4KVxuICAgIHwgYEZsb2F0IHggLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIHN0ZCB0aGVuIHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgICAgZWxzZSBqc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG4gICAgfCBgSW50bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYExpc3QgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJbXVwiXG4gICAgfCBgTGlzdCBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIGlmIGlzX2F0b21fbGlzdCBsIHRoZW5cbiAgICAgICAgKCogdXNlIGxpbmUgd3JhcHBpbmcgbGlrZSB3ZSB3b3VsZCBkbyBmb3IgYSBwYXJhZ3JhcGggb2YgdGV4dCAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGhvdj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGxcbiAgICAgIGVsc2VcbiAgICAgICAgKCogcHJpbnQgdGhlIGVsZW1lbnRzIGhvcml6b250YWxseSBpZiB0aGV5IGZpdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgb3RoZXJ3aXNlIHByaW50IHRoZW0gaW4gYSBjb2x1bW4gKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxodj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgQXNzb2MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJ7fVwiXG4gICAgfCBgQXNzb2MgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJ7QDs8MSAwPiVhQDs8MSAtMj59XCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdF9maWVsZCBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYFR1cGxlIGwgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgbClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGlmIGwgPSBbXSB0aGVuXG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIigpXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aG92Mj5cIjtcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIihALCVhQDs8MCAtMj4pXCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgICAgICAgIClcbiAgICB8IGBWYXJpYW50IChzLCBOb25lKSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmcgcyBpblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IHJlcHJlc2VudGF0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8JXM+XCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuXG4gICAgfCBgVmFyaWFudCAocywgU29tZSB4KSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmcgcyBpblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBbIHJlcHJlc2VudGF0aW9uOyB4IF0pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgb3AgPSBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjxAWzxodjI+JXM6ICVhQF0+XCIgb3AgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5hbmQgZm9ybWF0X2ZpZWxkIHN0ZCBvdXQgKG5hbWUsIHgpID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVzOiAlYUBdXCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBuYW1lKSAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmxldCBwcCA/KHN0ZCA9IGZhbHNlKSBvdXQgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lYUBdXCIgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgKHggOj4gdClcblxubGV0IHRvX3N0cmluZyA/c3RkIHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChwcCA/c3RkKSB4XG5cbmxldCB0b19jaGFubmVsID9zdGQgb2MgeCA9XG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhQD9cIiAocHAgP3N0ZCkgeFxuZW5kXG5cbmxldCByZWMgcHAgZm10ID1cbiAgZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcImBOdWxsXCJcbiAgfCBgQm9vbCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEJvb2wgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlQlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgSW50IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJWRcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEludGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBGbG9hdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUZcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFN0cmluZyB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgVHVwbGUgdHVwIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFR1cGxlIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgZSAtPlxuICAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgIHBwIGZtdCBlO1xuICAgICAgICAgICB0cnVlKSBmYWxzZSB0dXApO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFZhcmlhbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIG5hbWU7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgKG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbmVcIlxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIoU29tZSBcIjtcbiAgICAgICAgcHAgZm10IHg7XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKVwiKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuXG5sZXQgc2hvdyB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcCB4XG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgYE51bGwsIGBOdWxsIC0+IHRydWVcbiAgfCBgQm9vbCBhLCBgQm9vbCBiIC0+IGEgPSBiXG4gIHwgYEludCBhLCBgSW50IGIgLT4gYSA9IGJcbiAgICB8IGBJbnRsaXQgYSwgYEludGxpdCBiIC0+IGEgPSBiXG4gICAgfCBgRmxvYXQgYSwgYEZsb2F0IGIgLT4gYSA9IGJcbiAgICB8IGBTdHJpbmcgYSwgYFN0cmluZyBiIC0+IGEgPSBiXG4gICAgfCBgQXNzb2MgeHMsIGBBc3NvYyB5cyAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5cyA9IGZ1biAoa2V5LCBfKSAoa2V5JywgXykgLT4gU3RyaW5nLmNvbXBhcmUga2V5IGtleScgaW5cbiAgICAgIGxldCB4cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHhzIGluXG4gICAgICBsZXQgeXMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB5cyBpblxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgKGZ1biAoa2V5LCB2YWx1ZSkgKGtleScsIHZhbHVlJykgLT5cbiAgICAgICAgbWF0Y2gga2V5ID0ga2V5JyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+IGVxdWFsIHZhbHVlIHZhbHVlJykgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBUdXBsZSB4cywgYFR1cGxlIHlzXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpLCBgVmFyaWFudCAobmFtZScsIHZhbHVlJykgLT5cbiAgICAgIChtYXRjaCBuYW1lID0gbmFtZScgd2l0aFxuICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIG1hdGNoIHZhbHVlLCB2YWx1ZScgd2l0aFxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IGVxdWFsIHggeVxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBfIC0+IGZhbHNlXG5cbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBtb2R1bGUgTGV4aW5nID1cbiAgICAoKlxuICAgICAgV2Ugb3ZlcnJpZGUgTGV4aW5nLmVuZ2luZSBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBhIG5ldyBwb3NpdGlvblxuICAgICAgcmVjb3JkIGVhY2ggdGltZSBhIHJ1bGUgaXMgbWF0Y2hlZC5cbiAgICAgIFRoaXMgcmVkdWNlcyB0b3RhbCBwYXJzaW5nIHRpbWUgYnkgYWJvdXQgMzElLlxuICAgICopXG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTGV4aW5nXG5cbiAgICBleHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5cbiAgICBsZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICAgICAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgICAgICgqXG4gICAgICBpZiByZXN1bHQgPj0gMCB0aGVuIGJlZ2luXG4gICAgICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICAgICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gICAgICBlbmQ7XG4gICAgICAqKVxuICAgICAgcmVzdWx0XG4gIGVuZFxuXG4gICgqIHNlZSBkZXNjcmlwdGlvbiBpbiBjb21tb24ubWxpICopXG4gIHR5cGUgbGV4ZXJfc3RhdGUgPSBDb21tb24uTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiRmlsZSAlcywgbGluZVwiIHNcbiAgICBpblxuICAgIGxldCBieXRlcyA9XG4gICAgICBpZiBwb3MxID0gcG9zMiB0aGVuXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZSAlaVwiIChwb3MxKzEpXG4gICAgICBlbHNlXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IFByaW50Zi5zcHJpbnRmIFwiJXMgJWksICVzOlxcbiVzXCIgZmlsZV9saW5lIHYubG51bSBieXRlcyBkZXNjciBpblxuICAgIENvbW1vbi5qc29uX2Vycm9yIG1zZ1xuXG5cbiAgbGV0IGxleGVyX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbG9uZ19lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IGp1bmsgPSBMZXhpbmcubGV4ZW1lIGxleGJ1ZiBpblxuICAgIGxldCBidWZfc2l6ZSA9IDMyIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgYnVmX3NpemUgaW5cbiAgICBsZXQgKCkgPSBMZXhlcl91dGlscy5yZWFkX2p1bmtfd2l0aG91dF9wb3NpdGlvbnMgYnVmIGJ1Zl9zaXplIGxleGJ1ZiBpblxuICAgIGxldCBleHRyYV9qdW5rID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJyVzJXMnXCIgZGVzY3IganVuayBleHRyYV9qdW5rKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbWluMTAgPSBtaW5faW50IC8gMTAgLSAoaWYgbWluX2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG4gIGxldCBtYXgxMCA9IG1heF9pbnQgLyAxMCArIChpZiBtYXhfaW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcblxuICBleGNlcHRpb24gSW50X292ZXJmbG93XG5cbiAgbGV0IGV4dHJhY3RfcG9zaXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuID49IG1heDEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiArIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuIDwgMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgYEludGxpdCAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG5cbiAgbGV0IGV4dHJhY3RfbmVnYXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSAgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgMSBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPD0gbWluMTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuIC0gZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPiAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIHRyeSBgSW50IChleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWYpXG4gICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICBgSW50bGl0IChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcblxuICBsZXQgbmV3bGluZSB2IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgdi5sbnVtIDwtIHYubG51bSArIDE7XG4gICAgdi5ib2wgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgbGV4YnVmLmxleF9jdXJyX3Bvc1xuXG4gIGxldCBhZGRfbGV4ZW1lIGJ1ZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBCdWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxuICBsZXQgbWFwX2xleGVtZSBmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGYgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuKSAwIGxlblxuXG4gIHR5cGUgdmFyaWFudF9raW5kID0gWyBgRWRneV9icmFja2V0IHwgYFNxdWFyZV9icmFja2V0IHwgYERvdWJsZV9xdW90ZSBdXG5cbiMgMTU0IFwibGliL3JlYWQubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjM2XFwyNTVcXDIzN1xcMjU1XFwwMDNcXDAwMFxcMjM5XFwyNTVcXDAxNlxcMDAwXFwyNDJcXDI1NVxcMjQzXFwyNTVcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMDBcXDAwMFxcMDMxXFwwMDBcXDI0OVxcMjU1XFwwODVcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU0XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMjUzXFwyNTVcXDAxMVxcMDAwXFwyNTJcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwyNTFcXDI1NVxcMDIxXFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMjJcXDAwMFxcMDIwXFwwMDBcXDAxNlxcMDAwXFwwMjJcXDAwMFxcMDEyXFwwMDBcXDAwOFxcMDAwXFwyNTBcXDI1NVxcXG4gICAgXFwxMTlcXDAwMFxcMTI5XFwwMDBcXDEzOVxcMDAwXFwxNjFcXDAwMFxcMTcxXFwwMDBcXDE4MVxcMDAwXFwxOTNcXDAwMFxcMjA5XFwwMDBcXFxuICAgIFxcMjQwXFwyNTVcXDAxMVxcMDAwXFwwMzhcXDAwMFxcMjUyXFwyNTVcXDA2NVxcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDExMFxcMDAwXFxcbiAgICBcXDI1MlxcMjU1XFwxNjNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzRcXDAwMFxcMjQ3XFwyNTVcXDI0OFxcMjU1XFwwNDhcXDAwMVxcXG4gICAgXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMTI2XFwwMDFcXFxuICAgIFxcMTQ5XFwwMDFcXDI0OVxcMjU1XFwwMzlcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzhcXDAwMFxcMTg3XFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI0OFxcMDAxXFwwMTVcXDAwMlxcMjU1XFwyNTVcXDIyMFxcMDAwXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwwMzlcXDAwMlxcXG4gICAgXFwxMDlcXDAwMlxcMDE0XFwwMDFcXDA4OFxcMDAyXFwxNjRcXDAwMlxcMTg3XFwwMDJcXDIyNVxcMDAyXFwwMTNcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMVxcXG4gICAgXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMVxcMDA1XFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDAyM1xcMDAwXFwyNTRcXDI1NVxcMDIwXFwwMDBcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwNDJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwNTNcXDAwMFxcMDQ4XFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDFcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMTM3XFwwMDBcXDEwNFxcMDAwXFwwODlcXDAwMFxcMDg4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMFxcMTM3XFwwMDBcXDE3N1xcMDAwXFwyNTRcXDI1NVxcMTgzXFwwMDBcXDE2OFxcMDAwXFwxNjZcXDAwMFxcXG4gICAgXFwxODNcXDAwMFxcMDAyXFwwMDBcXDI1M1xcMjU1XFwxNzdcXDAwMFxcMTcyXFwwMDBcXDE4N1xcMDAwXFwwMDRcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMDUzXFwwMDJcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDEwM1xcMDAxXFwyNTVcXDI1NVxcMjQ4XFwwMDJcXDI1NFxcMjU1XFxcbiAgICBcXDAwNlxcMDAzXFwwMzBcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAzXFwwNTBcXDAwM1xcXG4gICAgXFwwNzRcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAzXFwwODRcXDAwM1xcMTA4XFwwMDNcXFxuICAgIFxcMjQ5XFwyNTVcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjQ0XFwwMDBcXDEyMFxcMDAzXFwxNDJcXDAwM1xcMTc5XFwwMDBcXDE5NFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMTkwXFwwMDBcXDE4OFxcMDAwXFwxODdcXDAwMFxcMTkzXFwwMDBcXDE4M1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwyNTRcXDI1NVxcMTkxXFwwMDBcXDIwMVxcMDAwXFwyMDBcXDAwMFxcMTk2XFwwMDBcXDIwM1xcMDAwXFwxOTNcXDAwMFxcMTg5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDE1N1xcMDAzXFwwOTVcXDAwM1xcMTc0XFwwMDNcXDE5NlxcMDAzXFwyMDZcXDAwM1xcMjE2XFwwMDNcXDIyOFxcMDAzXFxcbiAgICBcXDIzOVxcMDAzXFwwNjBcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwwODdcXDAwNFxcMjU1XFwyNTVcXDE0NVxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyMVxcMDA0XFwyNTVcXDI1NVxcMjI5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMxXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMThcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM4XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMFxcMDAxXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjA4XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIxMVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4OVxcMDAwXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwOTVcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzM1xcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMjJcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwNVxcMjM3XFwyNTVcXDIzOFxcMjU1XFwwMTBcXDAwMFxcMjQwXFwyNTVcXDA0NFxcMDAxXFxcbiAgICBcXDI0M1xcMjU1XFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDI0NlxcMjU1XFwwNjFcXDAwMVxcMDAyXFwwMDRcXDI0OVxcMjU1XFwwNDVcXDAwNVxcXG4gICAgXFwyMDlcXDAwMFxcMjI4XFwwMDBcXDIxMVxcMDAwXFwyMzJcXDAwMFxcMjI1XFwwMDBcXDIyM1xcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjM1XFwwMDBcXDIzNFxcMDAwXFwwMDhcXDAwMVxcMjU0XFwyNTVcXDAwNFxcMDAxXFwwMjNcXDAwMVxcMjUzXFwyNTVcXDA1NFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwwMzFcXDAwMVxcMDI5XFwwMDFcXDAzMlxcMDAxXFwwMzlcXDAwMVxcMDQ5XFwwMDFcXDA0NVxcMDAxXFwyNTFcXDI1NVxcXG4gICAgXFwwNTdcXDAwMVxcMDgyXFwwMDFcXDA4MFxcMDAxXFwwNzhcXDAwMVxcMDg0XFwwMDFcXDA3NFxcMDAxXFwwODZcXDAwMVxcMjUwXFwyNTVcXFxuICAgIFxcMTEwXFwwMDVcXDAxMlxcMDA0XFwxMjNcXDAwNVxcMTU1XFwwMDVcXDE2NVxcMDA1XFwxNzdcXDAwNVxcMTg3XFwwMDVcXDE5N1xcMDA1XFxcbiAgICBcXDI0MVxcMjU1XFwxOTlcXDAwMVxcMDc3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMTU0XFwwMDJcXDIyMlxcMDA1XFwyMDlcXDAwNVxcXG4gICAgXFwxNTVcXDAwMlxcMjM5XFwwMDVcXDA1M1xcMDA2XFwwNzZcXDAwNlxcMTE0XFwwMDZcXDAxNlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTJcXDAwNlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjdcXDAwNlxcMjU1XFwyNTVcXDA4NVxcMDA3XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDExXFwwMDBcXDI0N1xcMjU1XFwwNzZcXDAwMlxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzMVxcMDAyXFwyNDNcXDAwNVxcMDUxXFwwMDdcXDEwMFxcMDAxXFwxMTVcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDExOFxcMDAxXFwxNTRcXDAwMVxcMTcxXFwwMDFcXDI1NVxcMjU1XFwxNzNcXDAwMVxcMTc2XFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODdcXDAwMVxcMjUzXFwwMDFcXDIzMFxcMDAxXFwyMzBcXDAwMVxcMjM0XFwwMDFcXDI0N1xcMDAxXFwyMzdcXDAwMVxcXG4gICAgXFwyMzRcXDAwMVxcMDA5XFwwMDJcXDAxOVxcMDAyXFwwMTlcXDAwMlxcMDE1XFwwMDJcXDAyMVxcMDAyXFwwMTFcXDAwMlxcMDA3XFwwMDJcXFxuICAgIFxcMTQyXFwwMDZcXDE1MlxcMDA2XFwxMTZcXDAwN1xcMTcwXFwwMDdcXDE4MFxcMDA3XFwxOTBcXDAwN1xcMjAwXFwwMDdcXDIxMFxcMDA3XFxcbiAgICBcXDI0OFxcMjU1XFwxMjBcXDAwMlxcMTY3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjE2XFwwMDJcXDA4MlxcMDA3XFwyMjBcXDAwN1xcXG4gICAgXFwyMzZcXDAwMlxcMjQ0XFwwMDdcXDA1OFxcMDA4XFwwODFcXDAwOFxcMTE5XFwwMDhcXDA3NlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTdcXDAwOFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMzJcXDAwOFxcMjU1XFwyNTVcXDEzNVxcMDAyXFxcbiAgICBcXDEyMFxcMDAyXFwyNTNcXDI1NVxcMTAwXFwwMDJcXDI1NFxcMjU1XFwxODJcXDAwMlxcMjU1XFwyNTVcXDAxMVxcMDAyXFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0NlxcMDAyXFwyNTVcXDI1NVxcMTc4XFwwMDJcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMTgzXFwwMDJcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAyXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjFcXDAwMlxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTM4XFwwMDBcXDAwMFxcMDAwXFwxNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxODdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDM4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxMjFcXDAwMVxcMTI1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDE0NFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTNcXDAwMVxcMTk3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwN1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjMzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjdcXDAwMFxcMTM5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAwM1xcMDAwXFwxNzBcXDAwMFxcMTM0XFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDExXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDE0XFwwMDFcXDAxM1xcMDAwXFwwNDlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDU2XFwwMDBcXDExOFxcMDAwXFwwMDZcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMVxcMTM3XFwwMDBcXDAwMFxcMDAyXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwxMzhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDAxNFxcMDAwXFwxMTBcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDE1XFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDMwXFwwMDBcXDA0OFxcMDAwXFwwMDhcXDAwMFxcMTE0XFwwMDBcXDIwOVxcMDAwXFwyMzZcXDAwMFxcMDAwXFwwMDFcXFxuICAgIFxcMDEzXFwwMDFcXDAyOVxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDE3XFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyNVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNVxcMDAwXFwwMjNcXDAwMFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDM0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMjBcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDQxXFwwMDBcXDAzN1xcMDAwXFwwNDhcXDAwMFxcMDA5XFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDdcXDAwMFxcMDYxXFwwMDBcXDA4NVxcMDAwXFwwNDhcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDY3XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NlxcMDAwXFwxNDNcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwxNDRcXDAwMFxcXG4gICAgXFwxNDVcXDAwMFxcMTQ2XFwwMDBcXDA1NVxcMDAwXFwxNDhcXDAwMFxcMDU1XFwwMDBcXDE0OVxcMDAwXFwwNDhcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDE1MFxcMDAwXFxcbiAgICBcXDE1MVxcMDAwXFwxNjFcXDAwMFxcMDY2XFwwMDBcXDE1OFxcMDAwXFwwNTNcXDAwMFxcMTU5XFwwMDBcXDA1M1xcMDAwXFwxNjBcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMTY1XFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MlxcMDAwXFwxNjNcXDAwMFxcMTY2XFwwMDBcXDA5M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwxMDNcXDAwMFxcMTA4XFwwMDBcXDExNlxcMDAwXFxcbiAgICBcXDEzMlxcMDAwXFwxMzRcXDAwMFxcMTM1XFwwMDBcXDEyOFxcMDAwXFwxMzlcXDAwMFxcMTM0XFwwMDBcXDE2NFxcMDAwXFwwOTNcXDAwMFxcXG4gICAgXFwxNzFcXDAwMFxcMDc3XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE3MlxcMDAwXFwxMTJcXDAwMFxcMTczXFwwMDBcXFxuICAgIFxcMTc0XFwwMDBcXDIxMFxcMDAwXFwyMjZcXDAwMFxcMjA4XFwwMDBcXDIxMVxcMDAwXFwyMTJcXDAwMFxcMDU5XFwwMDBcXDA4M1xcMDAwXFxcbiAgICBcXDEzNFxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTZcXDAwMFxcMjE4XFwwMDBcXDE0MVxcMDAwXFwyMTlcXDAwMFxcXG4gICAgXFwwOTNcXDAwMFxcMjIwXFwwMDBcXDIyMVxcMDAwXFwxMjNcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwyMjRcXDAwMFxcMTM2XFwwMDBcXFxuICAgIFxcMDk1XFwwMDBcXDIyNVxcMDAwXFwwMzVcXDAwMVxcMDY1XFwwMDFcXDIzNFxcMDAwXFwxNTVcXDAwMFxcMDA1XFwwMDFcXDA5N1xcMDAxXFxcbiAgICBcXDI1MFxcMDAwXFwyNTVcXDI1NVxcMjU0XFwwMDBcXDA1N1xcMDAxXFwwNjFcXDAwMVxcMDk1XFwwMDFcXDA3N1xcMDAwXFwwNDRcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDg4XFwwMDFcXDAwOVxcMDAxXFwwMjlcXDAwMVxcMDc2XFwwMDBcXDEyNFxcMDAwXFwwMzNcXDAwMVxcMDE4XFwwMDFcXFxuICAgIFxcMDc1XFwwMDBcXDA5OFxcMDAwXFwwMTlcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwODdcXDAwMVxcMTIwXFwwMDFcXDA4OVxcMDAxXFxcbiAgICBcXDA3NFxcMDAwXFwyMjVcXDAwMFxcMDUzXFwwMDFcXDEyMVxcMDAxXFwwNzNcXDAwMFxcMDkwXFwwMDFcXDA3MlxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOThcXDAwMFxcMTEzXFwwMDFcXDEyMlxcMDAwXFwwOTFcXDAwMVxcMDY0XFwwMDBcXDAwNFxcMDAxXFxcbiAgICBcXDA5M1xcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDE1NlxcMDAwXFwxMTJcXDAwMVxcMDk0XFwwMDFcXDA5NlxcMDAxXFwwOThcXDAwMVxcMDk5XFwwMDFcXDA0OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDEwMFxcMDAxXFwxNTdcXDAwMFxcXG4gICAgXFwxMDFcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMTgzXFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwwMjRcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMTAyXFwwMDFcXDEwM1xcMDAxXFwxMDVcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDEwNlxcMDAxXFwxMDdcXDAwMVxcMDQ4XFwwMDFcXDA0MFxcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDExMFxcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDExMVxcMDAxXFxcbiAgICBcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMTcxXFwwMDFcXDAzMVxcMDAxXFwxNzBcXDAwMVxcMDIzXFwwMDFcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDkyXFwwMDBcXDE2OFxcMDAxXFwwNjNcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwyNDhcXDAwMFxcMTY1XFwwMDFcXDI1MlxcMDAwXFxcbiAgICBcXDE2MlxcMDAxXFwwNTlcXDAwMVxcMDY5XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDI1NVxcMjU1XFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDM5XFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMTYzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDEyMFxcMDAwXFwwMDJcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwxNjZcXDAwMVxcMDU1XFwwMDFcXDE1M1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAwN1xcMDAxXFwxNjdcXDAwMVxcMTY0XFwwMDFcXDE2OVxcMDAxXFwwMTZcXDAwMVxcMTY0XFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDUxXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTM3XFwwMDFcXDE2NFxcMDAxXFwxNzJcXDAwMVxcMTg1XFwwMDFcXDEzNlxcMDAxXFwxNzNcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMTc0XFwwMDFcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA0NlxcMDAxXFxcbiAgICBcXDE3NVxcMDAxXFwxNzZcXDAwMVxcMTgwXFwwMDBcXDE2NFxcMDAxXFwxODRcXDAwMVxcMTgxXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTI0XFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMTkyXFwwMDFcXDE3OFxcMDAxXFxcbiAgICBcXDAyMVxcMDAxXFwxNzlcXDAwMVxcMDk3XFwwMDBcXDE5M1xcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFwxODNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMjE2XFwwMDFcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMTg0XFwwMDFcXDIxNlxcMDAxXFwyMDlcXDAwMVxcMDk3XFwwMDBcXFxuICAgIFxcMjIzXFwwMDFcXDA5N1xcMDAwXFwyMDhcXDAwMVxcMjMwXFwwMDFcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjE5XFwwMDFcXDAzN1xcMDAxXFxcbiAgICBcXDIxNlxcMDAxXFwyMTdcXDAwMVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIxNlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwyMThcXDAwMVxcMjUwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEyNFxcMDAxXFwxMjRcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIyMVxcMDAxXFwwMDBcXDAwMFxcMjUzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDIzNVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyNDFcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMDAxXFwyNDJcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjQ2XFwwMDFcXDEyOVxcMDAxXFwxMjlcXDAwMVxcXG4gICAgXFwyMjhcXDAwMVxcMDAwXFwwMDBcXDE5NlxcMDAxXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwMDBcXDAwMFxcMTk4XFwwMDFcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAxXFwyMzRcXDAwMVxcXG4gICAgXFwxMzRcXDAwMVxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMVxcMDAxXFwxNzdcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODhcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMjAxXFwwMDFcXDIyN1xcMDAxXFwwMDBcXDAwMFxcMTkxXFwwMDBcXDIwNlxcMDAxXFwxMjNcXDAwMVxcMTg5XFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxODlcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTVcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI0OFxcMDAxXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwyMDJcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMjZcXDAwMFxcMTk1XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDIyMVxcMDAxXFwyMzlcXDAwMVxcXG4gICAgXFwyNTRcXDAwMVxcMDAwXFwwMDBcXDIwN1xcMDAwXFwyNDRcXDAwMVxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMDNcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMVxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIzMFxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODZcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTNcXDAwMVxcMDAwXFwwMDBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDAwMFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDIwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMjQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjM4XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA0XFwwMDFcXDA3M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMVxcMDAwXFwwMDBcXDA3MVxcMDAxXFwwNzZcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwODBcXDAwMVxcMTE5XFwwMDFcXDAwMFxcMDAwXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDA4MVxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTdcXDAwMVxcMDAwXFwwMDBcXDA3NVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxODVcXDAwMVxcMDAwXFwwMDBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyN1xcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyN1xcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTkxXFwwMDFcXDE0MlxcMDAxXFwxOTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0NlxcMDAxXFwxNDdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwxNTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc3XFwwMDFcXDE1MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNTZcXDAwMVxcMDAwXFwwMDBcXDE0OFxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTQ5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTM5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OFxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxODdcXDAwMVxcMDAwXFwwMDBcXDE2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTlcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE2MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg5XFwwMDFcXDAwMFxcMDAwXFwxODlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTk5XFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIxNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjExXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDU3XFwwMDBcXDI1NVxcMjU1XFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAzXFwwMDBcXDE2OVxcMDAwXFwxMzRcXDAwMFxcMTc0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTJcXDAwMVxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFwxMjVcXDAwMFxcMTI5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDIzNlxcMDAxXFwxMzZcXDAwMFxcMjU1XFwwMDFcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDEwXFwwMDBcXDEzNlxcMDAwXFwxMDJcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDAwXFwwMDBcXDEwN1xcMDAwXFwxMDJcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMjlcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMjA4XFwwMDBcXDIzM1xcMDAwXFwyNTVcXDAwMFxcXG4gICAgXFwwMTJcXDAwMVxcMDE1XFwwMDBcXDAxN1xcMDAwXFwwNjBcXDAwMFxcMDExXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDI0XFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDM0XFwwMDBcXDAyMlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAxNFxcMDAwXFxcbiAgICBcXDAyN1xcMDAwXFwwMzNcXDAwMFxcMDE4XFwwMDBcXDAyM1xcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAxOVxcMDAwXFwwMzVcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDM2XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ1XFwwMDBcXDA0NlxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXDAxMVxcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFxcbiAgICBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg1XFwwMDBcXDE0MFxcMDAwXFwwNjBcXDAwMFxcMDEzXFwwMDBcXDE0M1xcMDAwXFxcbiAgICBcXDE0NFxcMDAwXFwxNDVcXDAwMFxcMDQ4XFwwMDBcXDE0N1xcMDAwXFwwNDhcXDAwMFxcMTQ4XFwwMDBcXDAzOVxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA2NVxcMDAwXFwwMzlcXDAwMFxcMTQ5XFwwMDBcXFxuICAgIFxcMTUwXFwwMDBcXDE1NlxcMDAwXFwwNjNcXDAwMFxcMTU3XFwwMDBcXDA1MVxcMDAwXFwxNThcXDAwMFxcMDUxXFwwMDBcXDE1OVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFxcbiAgICBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwxNTVcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYxXFwwMDBcXDE2MlxcMDAwXFwxNTVcXDAwMFxcMDkxXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTdcXDAwMFxcMDY4XFwwMDBcXDEwMlxcMDAwXFwxMDdcXDAwMFxcMTE1XFwwMDBcXFxuICAgIFxcMTMxXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMTI1XFwwMDBcXDEzOFxcMDAwXFwxMzNcXDAwMFxcMTYzXFwwMDBcXDA5NFxcMDAwXFxcbiAgICBcXDE2NVxcMDAwXFwwNjhcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTcxXFwwMDBcXDExMVxcMDAwXFwxNzJcXDAwMFxcXG4gICAgXFwxNzNcXDAwMFxcMjA2XFwwMDBcXDIwM1xcMDAwXFwyMDdcXDAwMFxcMjEwXFwwMDBcXDIxMVxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMTMzXFwwMDBcXDIxMlxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTdcXDAwMFxcMTQwXFwwMDBcXDIxOFxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwyMTlcXDAwMFxcMjIwXFwwMDBcXDExOVxcMDAwXFwyMjFcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwxMzNcXDAwMFxcXG4gICAgXFwwOTFcXDAwMFxcMjAzXFwwMDBcXDAzNFxcMDAxXFwwNjJcXDAwMVxcMjMzXFwwMDBcXDE1MlxcMDAwXFwwMDFcXDAwMVxcMDgwXFwwMDFcXFxuICAgIFxcMjQ3XFwwMDBcXDA2MFxcMDAwXFwyNTFcXDAwMFxcMDU0XFwwMDFcXDA1OFxcMDAxXFwwODFcXDAwMVxcMDY4XFwwMDBcXDA0MVxcMDAxXFxcbiAgICBcXDA4MlxcMDAxXFwwODNcXDAwMVxcMDA2XFwwMDFcXDAyNlxcMDAxXFwwNjhcXDAwMFxcMTE5XFwwMDBcXDAzMFxcMDAxXFwwMTVcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMDk0XFwwMDBcXDAxNVxcMDAxXFwwODRcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwNzFcXDAwMVxcMDg4XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDIwM1xcMDAwXFwwNTBcXDAwMVxcMDcxXFwwMDFcXDA2OFxcMDAwXFwwODlcXDAwMVxcMDY4XFwwMDBcXDA2OFxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA5N1xcMDAwXFwwNzZcXDAwMVxcMTE5XFwwMDBcXDA5MFxcMDAxXFwwNjNcXDAwMFxcMDAxXFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMTUyXFwwMDBcXDA3NlxcMDAxXFwwOTNcXDAwMVxcMDk1XFwwMDFcXDA5N1xcMDAxXFwwOThcXDAwMVxcMDQ1XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk5XFwwMDFcXDE1MlxcMDAwXFxcbiAgICBcXDEwMFxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDAyMFxcMDAxXFwwNzZcXDAwMVxcMDY1XFwwMDBcXDAyMFxcMDAxXFwxMDFcXDAwMVxcMTAyXFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMTA1XFwwMDFcXDEwNlxcMDAxXFwwNDVcXDAwMVxcMDM2XFwwMDFcXDEwN1xcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMTEwXFwwMDFcXFxuICAgIFxcMDI2XFwwMDFcXDEyMVxcMDAxXFwxNTdcXDAwMVxcMDMwXFwwMDFcXDE1OFxcMDAxXFwwMjBcXDAwMVxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwOTFcXDAwMFxcMTU5XFwwMDFcXDA2MlxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDI0N1xcMDAwXFwxNjBcXDAwMVxcMjUxXFwwMDBcXFxuICAgIFxcMTYxXFwwMDFcXDA1OFxcMDAxXFwwNjhcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDk0XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMzZcXDAwMVxcMDQxXFwwMDFcXDA5N1xcMDAwXFwxNjJcXDAwMVxcXG4gICAgXFwxNjNcXDAwMVxcMTE5XFwwMDBcXDAwMVxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDE2NVxcMDAxXFwwNTRcXDAwMVxcMTUyXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDA2XFwwMDFcXDE2NlxcMDAxXFwxNjdcXDAwMVxcMTY4XFwwMDFcXDAxNVxcMDAxXFwxNjlcXDAwMVxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNTBcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxMzNcXDAwMVxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNTRcXDAwMVxcMTMzXFwwMDFcXDE3MlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzNcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDQ1XFwwMDFcXFxuICAgIFxcMTc0XFwwMDFcXDE3NVxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDFcXDE1NFxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxMjJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwxNDhcXDAwMVxcMTc3XFwwMDFcXFxuICAgIFxcMDIwXFwwMDFcXDE3OFxcMDAxXFwwOThcXDAwMFxcMTQ4XFwwMDFcXDE3OVxcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFxcbiAgICBcXDE4M1xcMDAxXFwyMTZcXDAwMVxcMTkzXFwwMDFcXDA5NVxcMDAwXFwxNTRcXDAwMVxcMjE2XFwwMDFcXDIwNVxcMDAxXFwwOThcXDAwMFxcXG4gICAgXFwyMjJcXDAwMVxcMDk1XFwwMDBcXDIwNVxcMDAxXFwyMjlcXDAwMVxcMjU1XFwyNTVcXDA5NVxcMDAwXFwyMThcXDAwMVxcMDM2XFwwMDFcXFxuICAgIFxcMjE1XFwwMDFcXDIxNVxcMDAxXFwyNTVcXDI1NVxcMjE4XFwwMDFcXDIxNVxcMDAxXFwwOTVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIxNlxcMDAxXFwwOTVcXDAwMFxcMjU1XFwyNTVcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMjE1XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEyMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOThcXDAwMFxcMjU1XFwyNTVcXDIxNVxcMDAxXFwyNDdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMTI1XFwwMDFcXDEyOFxcMDAxXFwwOThcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjIwXFwwMDFcXDI1NVxcMjU1XFwyNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk4XFwwMDBcXDEyMVxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxOTRcXDAwMVxcMDk4XFwwMDBcXDI1NVxcMjU1XFwwOThcXDAwMFxcMDk4XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIzOFxcMDAxXFwyNTVcXDI1NVxcMjUxXFwwMDFcXDIzOFxcMDAxXFwyNTVcXDI1NVxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNDNcXDAwMVxcMTI1XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTk3XFwwMDFcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI1NVxcMjU1XFwxOTRcXDAwMVxcMjU1XFwyNTVcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDIzMVxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk3XFwwMDFcXDE3NlxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwyNTVcXDI1NVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxODVcXDAwMFxcMjA1XFwwMDFcXDEyMlxcMDAxXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXFxuICAgIFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTNcXDAwMVxcMjQ3XFwwMDFcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OVxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDE5OVxcMDAwXFwxMjVcXDAwMVxcMTI4XFwwMDFcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFxcbiAgICBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDIwNFxcMDAwXFwxOTRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjIwXFwwMDFcXDIzOFxcMDAxXFxcbiAgICBcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMTk5XFwwMDBcXDI0M1xcMDAxXFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNFxcMDAxXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwxOTdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjI4XFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXFxuICAgIFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NVxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXFxuICAgIFxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTkyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMTk5XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyMzdcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTE1XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNVxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcXG4gICAgXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcXG4gICAgXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFxcbiAgICBcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMTI2XFwwMDFcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI5XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxODRcXDAwMVxcMTM4XFwwMDFcXDE4NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcXG4gICAgXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNTZcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDE4NlxcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxOThcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMVxcMjU1XFwyNTVcXDE4N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxODZcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcXG4gICAgXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyMDFcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcmVhZF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCB0cnVlIClcbiMgMTAxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIGZhbHNlIClcbiMgMTAxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBOdWxsIClcbiMgMTAyMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBuYW5cbiAgICAgICAgICAgICAgICApXG4jIDEwMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDE4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgaW5maW5pdHlcbiAgICAgICAgICAgICAgICApXG4jIDEwNDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgKVxuIyAxMDU2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyAxOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICBgU3RyaW5nIChmaW5pc2hfc3RyaW5nIHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgIClcbiMgMTA2OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgMjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmIClcbiMgMTA3MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgMjA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmIClcbiMgMTA3OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCAoZmxvYXRfb2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikpXG4gICAgICAgICAgICAgICAgIClcbiMgMTA4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDIxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICBgQXNzb2MgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTExNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDIzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBMaXN0IChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMiAtPlxuIyAyNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBgVHVwbGUgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTE1OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEzIC0+XG4jIDI3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgY29ucyA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBgVmFyaWFudCAoY29ucywgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgIClcbiMgMTE3MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE0IC0+XG4jIDI4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE3OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE1IC0+XG4jIDI4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNiAtPlxuIyAyODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNyAtPlxuIyAyODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOCAtPlxuIyAyODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMTk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTkgLT5cbiMgMjkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMTIwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiA1OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBCdWZmZXIuY29udGVudHMgdi5idWYgKVxuIyAxMjE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAyOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTIyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMjk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAyOTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTIzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIDYzXG5hbmQgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggbGV0IGIgPSB2LmJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICBmIChCdWZmZXIuY29udGVudHMgYikgMCAoQnVmZmVyLmxlbmd0aCBiKSApXG4jIDEyNDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDEyNTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxMjU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTI2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiA2OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIGNcbiMgMTI3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgYyApXG4jIDEyNzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxiJyApXG4jIDEyODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFwwMTInIClcbiMgMTI4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nIClcbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHInIClcbiMgMTI5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgMzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHQnIClcbiMgMTMwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbmxldFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIGFcbiMgMTMxMCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcbiMgMTMxNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyAxMzIwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTMyNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpIGluXG4jIDMyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeCA+PSAweEQ4MDAgJiYgeCA8PSAweERCRkYgdGhlblxuICAgICAgICAgICAgIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBDb2RlYy51dGY4X29mX2NvZGUgdi5idWYgeFxuXG4gICAgICAgICApXG4jIDEzMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDMyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZVwiIHYgbGV4YnVmIClcbiMgMTM0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgODJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIGFcbiMgMTM2MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuIyAxMzY1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgMTM3MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTM3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDUpIGluXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB5ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeSA+PSAweERDMDAgJiYgeSA8PSAweERGRkYgdGhlblxuICAgICAgICAgICAgIENvZGVjLnV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgdi5idWYgeCB5XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCBsb3cgc3Vycm9nYXRlIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIlxuICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgIClcbiMgMTM4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIk1pc3NpbmcgZXNjYXBlIHNlcXVlbmNlIHJlcHJlc2VudGluZyBsb3cgc3Vycm9nYXRlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIiB2IGxleGJ1ZiApXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMzk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgOTFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAobGVuKzEpIGluXG4gICAgICAgICAgIEJ5dGVzLnNldCBzIDAgJ1wiJztcbiAgICAgICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBzIDEgbGVuO1xuICAgICAgICAgICBCeXRlcy50b19zdHJpbmcgc1xuICAgICAgICAgKVxuIyAxNDE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMTQyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgMTAyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9IHJlYWRfanNvbiB2IGxleGJ1ZiBpblxuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmO1xuICAgICAgICAgICBTb21lIHggKVxuIyAxNDQwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBOb25lIClcbiMgMTQ0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2x0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIDEwN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAxNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgMTExXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTQ4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb21tYSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiAxMTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTUxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE1MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgMTE5XG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYEVkZ3lfYnJhY2tldCApXG4jIDE1MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBgRG91YmxlX3F1b3RlIClcbiMgMTUzOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBTcXVhcmVfYnJhY2tldCApXG4jIDE1NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnLCAnXFxcIicgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTU0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiAxMjVcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTU2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAxNTcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG4jIDE1NzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcbiMgMTU4MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2VvZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiAxMzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNTkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTU5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiAxMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYxMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAxNjMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgMTQwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCAoKSApXG4jIDE2NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdudWxsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE2NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE2NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbF9pZl9wb3NzaWJsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIDE0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2NjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjY5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Jvb2wgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiAxNTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2ODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2ODYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY5MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAndHJ1ZScgb3IgJ2ZhbHNlJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTcwNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIDE3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3MjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnRlZ2VyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE3NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50ZWdlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQ1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDMyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIDE4NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDMyLm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTc2OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQzMi5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50MzIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTc4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQzMiBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3OTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc5NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50NjQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgMTkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQ3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50NjQub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxODExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDY0Lm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQ2NCBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxODI5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0OTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDY0IGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTgzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxODM5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udW1iZXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIDE5OVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5hbiApXG4jIDE4NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBpbmZpbml0eSApXG4jIDE4NTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuZWdfaW5maW5pdHkgKVxuIyAxODYxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmxvYXRfb2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikgKVxuIyAxODY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA1MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBmbG9hdCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMuICopXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5hTlwiIC0+IG5hblxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJJbmZpbml0eVwiIC0+IGluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBcIi1JbmZpbml0eVwiIC0+IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYSBudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgKVxuIyAxODg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA1MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIG51bWJlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE4OTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDUyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTg5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgMjMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDE5MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1xcXCInIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTkxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgMjM3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTkzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyA1MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIHNcbiMgMTk0MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA1MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcyApXG4jIDE5NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfaWRlbnQgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgMjQyXG5hbmQgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTk2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIG1hcF9sZXhlbWUgZiBsZXhidWYgKVxuIyAxOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTk3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc2VxdWVuY2UgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMDA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1NjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjAxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgMjUxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjA0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgMjU1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAyMDY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgMjU3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDgzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDIwODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDU5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjA5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjYyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgICAgICApXG4jIDIxMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjEzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMTQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIDI2NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjE1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE1OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiAyNjhcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIxNzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDI3MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiAyNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjIyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgMjgyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMjg2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyOTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGN1cmwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgMjg2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjMxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiAyOTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMjMzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjMzNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDI5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDIzNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzNTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjM2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiAyOTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjM3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdHVwbGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiAzMDFcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmFsc2UgKVxuIyAyMzk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggdHJ1ZSApXG4jIDI0MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDcwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9scGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgMzA2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQyMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDI4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcnBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIDMxMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgMzE0XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgMzE4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiAzMjJcbmFuZCBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA3NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjU0MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgNzQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjU3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDc2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNTk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgNzgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNjE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTIgLT5cbiMgODAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI2MzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMyAtPlxuIyA4MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2MzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNCAtPlxuIyA4MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTUgLT5cbiMgODE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTYgLT5cbiMgODE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTcgLT5cbiMgODE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjY1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE4IC0+XG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDI2NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDM3OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMjY3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDI2NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDgyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNjg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDM4OVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWYgKVxuIyAyNjk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDI3MDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjcwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI3MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIDM5NFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjcyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjczMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI3MzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjc0MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiAzOTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG4jIDI3NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI3NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ3snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjc4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnWyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjgwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKCc7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjgyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgOTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc8JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI4NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDkzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgOTMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDkzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDkzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI4NzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA5MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAyODc2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA0NTBcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXCInO1xuICAgICAgICAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZlxuICAgICAgICAgKVxuIyAyODkwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMjg5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgNDYxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JztcbiAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX2d0IHYgbGV4YnVmIClcbiMgMjkxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG4jIDI5MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjkyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIDQ2NlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI5NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG4jIDI5NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk2MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyOTUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIDQ3MVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5ODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgOTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDMwMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiA0NzhcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JztcbiAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMzAxNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzAxOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgNDgwXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMwMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nOyByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDMwMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMwNDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA0NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIDQ4NVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDMwNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMwNjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDQ4N1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMDc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAzMDgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzA4NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA5MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgNDkyXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7XG4gICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMzEwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMxMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDQ5NFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAzMTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzEzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzEzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIDQ5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JyApXG4jIDMxNDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIDUwM1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcbiMgMzE3MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDUwN1xuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIiovXCIgKVxuIyAzMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAzMTk3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAzMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG4jIDMyMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiBcbiAgbGV0IF8gPSAocmVhZF9qc29uIDogbGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0KVxuXG4gIGxldCByZWFkX3QgPSByZWFkX2pzb25cblxuICBsZXQgcmVhZF9pbnQ4IHYgbGV4YnVmID1cbiAgICBsZXQgbiA9IHJlYWRfaW50IHYgbGV4YnVmIGluXG4gICAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuXG4gICAgICBsZXhlcl9lcnJvciBcIkludDggb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuICAgIGVsc2VcbiAgICAgIGNoYXJfb2ZfaW50IG5cblxuICBsZXQgcmVhZF9saXN0IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgTGlzdC5yZXYgKHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmKVxuXG4gIGxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgW10gLT4gW3wgfF1cbiAgICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICAgIGEuKGkpIDwtIExpc3QuaGQgIXI7XG4gICAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGFcblxuICBsZXQgcmVhZF9hcnJheSByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIGxldCBsID0gcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgaW5cbiAgICBhcnJheV9vZl9yZXZfbGlzdCBsXG5cbiAgKCogUmVhZCBhIEpTT04gb2JqZWN0LCByZWFkaW5nIHRoZSBrZXlzIGludG8gT0NhbWwgc3RyaW5nc1xuICAgICAocHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpICopXG4gIGxldCByZWFkX2ZpZWxkcyByZWFkX2ZpZWxkIGluaXRfYWNjIHYgPVxuICAgIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfaWRlbnQgcmVhZF9maWVsZCBpbml0X2FjYyB2XG5cbiAgbGV0IGZpbmlzaCB2IGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICBpZiBub3QgKHJlYWRfZW9mIGxleGJ1ZikgdGhlblxuICAgICAgbG9uZ19lcnJvciBcIkp1bmsgYWZ0ZXIgZW5kIG9mIEpTT04gdmFsdWU6XCIgdiBsZXhidWZcblxuICBsZXQgaW5pdF9sZXhlciA9IENvbW1vbi5pbml0X2xleGVyXG5cbiAgbGV0IGZyb21fbGV4YnVmIHYgPyhzdHJlYW0gPSBmYWxzZSkgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuXG4gICAgbGV0IHggPVxuICAgICAgaWYgcmVhZF9lb2YgbGV4YnVmIHRoZW5cbiAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkX2pzb24gdiBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggdiBsZXhidWY7XG5cbiAgICB4XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIHRyeVxuICAgICAgbGV0IHggPSBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgaW5cbiAgICAgIGNsb3NlX2luIGljO1xuICAgICAgeFxuICAgIHdpdGggZSAtPlxuICAgICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgICByYWlzZSBlXG5cbiAgZXhjZXB0aW9uIEZpbmFsbHkgb2YgZXhuICogZXhuXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiB2ID8oZmluID0gZnVuICgpIC0+ICgpKSBsZXhidWYgPVxuICAgIGxldCBzdHJlYW0gPSBTb21lIHRydWUgaW5cbiAgICBsZXQgcmVjIGYgKCkgPVxuICAgICAgdHJ5IFNlcS5Db25zIChmcm9tX2xleGJ1ZiB2ID9zdHJlYW0gbGV4YnVmLCBmKVxuICAgICAgd2l0aFxuICAgICAgICAgIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgICAgICAgIGZpbiAoKTtcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgICAodHJ5IGZpbiAoKSB3aXRoIGZpbl9lIC0+IHJhaXNlIChGaW5hbGx5IChlLCBmaW5fZSkpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgIGZcblxuICBsZXQgc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2ID9maW4gbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiB+ZmluIGxleGJ1ZlxuXG4gIHR5cGUganNvbl9saW5lID0gWyBgSnNvbiBvZiB0IHwgYEV4biBvZiBleG4gXVxuXG4gIGxldCBsaW5lc2VxX2Zyb21fY2hhbm5lbFxuICAgICAgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lID9sbnVtOihsbnVtMCA9IDEpIGljID1cbiAgICBsZXQgYnVmID1cbiAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIChCdWZmZXIuY3JlYXRlIDI1NilcbiAgICAgICAgfCBTb21lIF8gLT4gYnVmXG4gICAgaW5cbiAgICBsZXQgcmVjIGYgbG51bSA9IGZ1biAoKSAtPlxuICAgICAgdHJ5XG4gICAgICAgIGxldCBsaW5lID0gaW5wdXRfbGluZSBpYyBpblxuICAgICAgICBTZXEuQ29ucyAoYEpzb24gKGZyb21fc3RyaW5nID9idWYgP2ZuYW1lIH5sbnVtIGxpbmUpLCBmIChsbnVtICsgMSkpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2ZpbGUgLT4gZmluICgpOyBTZXEuTmlsXG4gICAgICAgIHwgZSAtPiBTZXEuQ29ucyAoYEV4biBlLCBmIChsbnVtICsgMSkpXG4gICAgaW5cbiAgICBmIGxudW0wXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxpbmVzZXFfZnJvbV9jaGFubmVsID9idWYgfmZpbiA/Zm5hbWUgP2xudW0gaWNcblxuICBsZXQgcHJldHRpZnkgP3N0ZCBzID1cbiAgICBwcmV0dHlfdG9fc3RyaW5nID9zdGQgKGZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IGNvbXBhY3QgP3N0ZDpfIHMgPVxuICAgIHRvX3N0cmluZyAoZnJvbV9zdHJpbmcgcylcblxuIyAzMzc1IFwibGliL3JlYWQubWxcIlxuXG5tb2R1bGUgVXRpbCA9IHN0cnVjdFxuZXhjZXB0aW9uIFR5cGVfZXJyb3Igb2Ygc3RyaW5nICogdFxuXG5sZXQgdHlwZW9mID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgXyAtPiBcIm9iamVjdFwiXG4gIHwgYEJvb2wgXyAtPiBcImJvb2xcIlxuICB8IGBGbG9hdCBfIC0+IFwiZmxvYXRcIlxuICB8IGBJbnQgXyAtPiBcImludFwiXG4gIHwgYExpc3QgXyAtPiBcImFycmF5XCJcbiAgfCBgTnVsbCAtPiBcIm51bGxcIlxuICB8IGBTdHJpbmcgXyAtPiBcInN0cmluZ1wiXG4gIHwgYEludGxpdCBfIC0+IFwiaW50bGl0XCJcbiAgfCBgRmxvYXRsaXQgXyAtPiBcImZsb2F0bGl0XCJcbiAgfCBgVHVwbGUgXyAtPiBcInR1cGxlXCJcbiAgfCBgVmFyaWFudCBfIC0+IFwidmFyaWFudFwiXG5cbmxldCB0eXBlcnIgbXNnIGpzID0gcmFpc2UgKFR5cGVfZXJyb3IgKG1zZyBeIHR5cGVvZiBqcywganMpKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZyAqIHRcblxubGV0IGFzc29jIG5hbWUgb2JqID0gdHJ5IExpc3QuYXNzb2MgbmFtZSBvYmogd2l0aCBOb3RfZm91bmQgLT4gYE51bGxcblxubGV0IG1lbWJlciBuYW1lID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IGFzc29jIG5hbWUgb2JqXG4gIHwganMgLT4gdHlwZXJyIChcIkNhbid0IGdldCBtZW1iZXIgJ1wiIF4gbmFtZSBeIFwiJyBvZiBub24tb2JqZWN0IHR5cGUgXCIpIGpzXG5cbmxldCByZWMgcGF0aCBsIG9iaiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFNvbWUgb2JqXG4gIHwga2V5IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggb2JqIHdpdGhcbiAgICAgIHwgYEFzc29jIGFzc29jIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jIGtleSBhc3NvYyB3aXRoXG4gICAgICAgICAgfCBvYmogLT4gcGF0aCBsIG9ialxuICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbmRleCBpID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIGpzIC0+XG4gICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgbGV0IHdyYXBwZWRfaW5kZXggPSBpZiBpIDwgMCB0aGVuIGxlbiArIGkgZWxzZSBpIGluXG4gICAgICBpZiB3cmFwcGVkX2luZGV4IDwgMCB8fCB3cmFwcGVkX2luZGV4ID49IGxlbiB0aGVuXG4gICAgICAgIHJhaXNlIChVbmRlZmluZWQgKFwiSW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvdXQgb2YgYm91bmRzXCIsIGpzKSlcbiAgICAgIGVsc2UgTGlzdC5udGggbCB3cmFwcGVkX2luZGV4XG4gIHwganMgLT5cbiAgICAgIHR5cGVyciAoXCJDYW4ndCBnZXQgaW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvZiBub24tYXJyYXkgdHlwZSBcIikganNcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IGBMaXN0IChMaXN0Lm1hcCBmIGwpXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgbWFwIGZ1bmN0aW9uIG92ZXIgbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHRvX2Fzc29jID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IG9ialxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG9iamVjdCwgZ290IFwiIGpzXG5cbmxldCB0b19vcHRpb24gZiA9IGZ1bmN0aW9uIGBOdWxsIC0+IE5vbmUgfCB4IC0+IFNvbWUgKGYgeClcbmxldCB0b19ib29sID0gZnVuY3Rpb24gYEJvb2wgYiAtPiBiIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCwgZ290IFwiIGpzXG5cbmxldCB0b19ib29sX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPiBTb21lIGJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlciA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IGZsb2F0IGlcbiAgfCBgRmxvYXQgZiAtPiBmXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlcl9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBTb21lIChmbG9hdCBpKVxuICB8IGBGbG9hdCBmIC0+IFNvbWUgZlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIHwgYEZsb2F0IGYgLT4gZlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0LCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0X29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gaVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnRfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gU29tZSBpXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBgTGlzdCBsIC0+IGwgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBhcnJheSwgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyAtPiBzXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyAtPiBTb21lIHNcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgY29udmVydF9lYWNoIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgZiBsXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgY29udmVydCBlYWNoIGVsZW1lbnQgb2Ygbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHJlYyByZXZfZmlsdGVyX21hcCBmIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+IHJldl9maWx0ZXJfbWFwIGYgYWNjIHRsXG4gICAgICB8IFNvbWUgeSAtPiByZXZfZmlsdGVyX21hcCBmICh5IDo6IGFjYykgdGwpXG5cbmxldCBmaWx0ZXJfbWFwIGYgbCA9IExpc3QucmV2IChyZXZfZmlsdGVyX21hcCBmIFtdIGwpXG5cbmxldCByZWMgcmV2X2ZsYXR0ZW4gYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgTGlzdCBsMiAtPiByZXZfZmxhdHRlbiAoTGlzdC5yZXZfYXBwZW5kIGwyIGFjYykgdGxcbiAgICAgIHwgXyAtPiByZXZfZmxhdHRlbiBhY2MgdGwpXG5cbmxldCBmbGF0dGVuIGwgPSBMaXN0LnJldiAocmV2X2ZsYXR0ZW4gW10gbClcblxubGV0IGZpbHRlcl9pbmRleCBpIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBMaXN0IGwgLT4gKCB0cnkgU29tZSAoTGlzdC5udGggbCBpKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2xpc3QgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBMaXN0IGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5cbmxldCBmaWx0ZXJfbWVtYmVyIGsgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYEFzc29jIGwgLT4gKCB0cnkgU29tZSAoTGlzdC5hc3NvYyBrIGwpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfYXNzb2MgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBBc3NvYyBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9ib29sIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQm9vbCB4IC0+IFNvbWUgeCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9pbnQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgIGBJbnQgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKSBsXG5cbmxldCBmaWx0ZXJfZmxvYXQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICBgRmxvYXQgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX251bWJlciBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgICAgYEludCB4IC0+IFNvbWUgKGZsb2F0IHgpXG4gICAgICB8IGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBgU3RyaW5nIHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGtleXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoa2V5LCBfKSAtPiBrZXkpXG5cbmxldCB2YWx1ZXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoXywgdmFsdWUpIC0+IHZhbHVlKVxuXG5sZXQgY29tYmluZSAoZmlyc3QgOiB0KSAoc2Vjb25kIDogdCkgPVxuICBtYXRjaCAoZmlyc3QsIHNlY29uZCkgd2l0aFxuICB8IGBBc3NvYyBhLCBgQXNzb2MgYiAtPiAoYEFzc29jIChhIEAgYikgOiB0KVxuICB8IGEsIGIgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJFeHBlY3RlZCB0d28gb2JqZWN0cywgY2hlY2sgaW5wdXRzXCIpXG5lbmRcblxuIiwiXG4oKiogezMgVHlwZSBvZiB0aGUgSlNPTiB0cmVlfSAqKVxuXG50eXBlIHQgPVxuICAgIFtcbiAgICB8IGBOdWxsXG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgfCBgSW50IG9mIGludFxuICAgIHwgYEludGxpdCBvZiBzdHJpbmdcbiAgICB8IGBGbG9hdCBvZiBmbG9hdFxuICAgIHwgYEZsb2F0bGl0IG9mIHN0cmluZ1xuICAgIHwgYFN0cmluZyBvZiBzdHJpbmdcbiAgICB8IGBTdHJpbmdsaXQgb2Ygc3RyaW5nXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIHwgYFR1cGxlIG9mIHQgbGlzdFxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgb3B0aW9uKVxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGYgaW5cbiAgbGV0IHMgPVxuICAgIG1hdGNoIHNpZ25pZmljYW50X2ZpZ3VyZXMgd2l0aFxuICAgICAgICAxIC0+IHNwcmludGYgXCIlLjFnXCIgeFxuICAgICAgfCAyIC0+IHNwcmludGYgXCIlLjJnXCIgeFxuICAgICAgfCAzIC0+IHNwcmludGYgXCIlLjNnXCIgeFxuICAgICAgfCA0IC0+IHNwcmludGYgXCIlLjRnXCIgeFxuICAgICAgfCA1IC0+IHNwcmludGYgXCIlLjVnXCIgeFxuICAgICAgfCA2IC0+IHNwcmludGYgXCIlLjZnXCIgeFxuICAgICAgfCA3IC0+IHNwcmludGYgXCIlLjdnXCIgeFxuICAgICAgfCA4IC0+IHNwcmludGYgXCIlLjhnXCIgeFxuICAgICAgfCA5IC0+IHNwcmludGYgXCIlLjlnXCIgeFxuICAgICAgfCAxMCAtPiBzcHJpbnRmIFwiJS4xMGdcIiB4XG4gICAgICB8IDExIC0+IHNwcmludGYgXCIlLjExZ1wiIHhcbiAgICAgIHwgMTIgLT4gc3ByaW50ZiBcIiUuMTJnXCIgeFxuICAgICAgfCAxMyAtPiBzcHJpbnRmIFwiJS4xM2dcIiB4XG4gICAgICB8IDE0IC0+IHNwcmludGYgXCIlLjE0Z1wiIHhcbiAgICAgIHwgMTUgLT4gc3ByaW50ZiBcIiUuMTVnXCIgeFxuICAgICAgfCAxNiAtPiBzcHJpbnRmIFwiJS4xNmdcIiB4XG4gICAgICB8IF8gLT4gc3ByaW50ZiBcIiUuMTdnXCIgeFxuICBpblxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBqc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfc3RkX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX2Zsb2F0IG9iIGZcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV90dXBsZSBvYiBsXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfdmFyaWFudCBvYiBzIG9cblxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcoJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJyknXG5cbmFuZCB3cml0ZV92YXJpYW50IG9iIHMgbyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPCc7XG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICAobWF0Y2ggbyB3aXRoXG4gICAgICAgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgICAgIHdyaXRlX2pzb24gb2IgeFxuICApO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJz4nXG5cbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9zdGRfZmxvYXQgb2IgZlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfc3RkX3R1cGxlIG9iIGxcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG9cblxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG8gPVxuICBtYXRjaCBvIHdpdGhcbiAgICAgIE5vbmUgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICAgICAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgICAgd3JpdGVfc3RkX2pzb24gb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgKCogdGhpcyByZXF1aXJlcyBhbiBpbnQgYW5kIG5ldmVyIHVzZXMgaXQuIFRoaXMgaXMgZG9uZSB0byBwcmVzZXJ2ZVxuICAgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIG5vdCBicmVhayB0aGUgc2lnbmF0dXIgYnV0IGNhbiBzYWZlbHlcbiAgICAgYmUgY2hhbmdlZCB0byByZXF1aXJlIHVuaXQgaW4gYSBmdXR1cmUgY29tcGF0aWJpbGl0eS1icmVha2luZ1xuICAgICByZWxlYXNlICopXG4gIGxldCBfIDogaW50ID0gb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKSBpblxuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX2ZpbGUgP2xlbiA/c3RkID8oc3VmID0gXCJcXG5cIikgZmlsZSB4ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICB0b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHg7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbmxldCBzZXFfdG9fYnVmZmVyID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYiBzdCA9XG4gIFNlcS5pdGVyICh0b19idWZmZXIgfnN1ZiA/c3RkIG9iKSBzdFxuXG5sZXQgc2VxX3RvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgc3QgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICBzZXFfdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBzdDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCBzZXFfdG9fY2hhbm5lbCA/YnVmID8obGVuPTIwOTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYyBzZXEgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIFNlcS5pdGVyIChmdW4ganNvbiAtPlxuICAgIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IganNvbjtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICkgc2VxXG5cbmxldCBzZXFfdG9fZmlsZSA/bGVuID8oc3VmID0gXCJcXG5cIikgP3N0ZCBmaWxlIHN0ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyBzdDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxuXG5sZXQgcmVjIHNvcnQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHNvcnQgdikpIGwpIGluXG4gICAgICBgQXNzb2MgKExpc3Quc3RhYmxlX3NvcnQgKGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikgbClcbiAgfCBgTGlzdCBsIC0+XG4gICAgICBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IGBUdXBsZSBsIC0+XG4gICAgICBgVHVwbGUgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSBhcyB4IC0+XG4gICAgICBsZXQgdicgPSBzb3J0IHYgaW5cbiAgICAgIGlmIHYgPT0gdicgdGhlbiB4XG4gICAgICBlbHNlXG4gICAgICAgIGBWYXJpYW50IChrLCBTb21lIHYnKVxuICB8IHggLT4geFxuXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEludCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBJbnRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgRmxvYXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVGXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBGbG9hdGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFN0cmluZyB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBTdHJpbmdsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmdsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFR1cGxlIHR1cCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBUdXBsZSAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIGUgLT5cbiAgICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgICBwcCBmbXQgZTtcbiAgICAgICAgICAgdHJ1ZSkgZmFsc2UgdHVwKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBWYXJpYW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBuYW1lO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgIChtYXRjaCB2YWx1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25lXCJcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKFNvbWUgXCI7XG4gICAgICAgIHBwIGZtdCB4O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIilcIik7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICB8IGBJbnQgYSwgYEludCBiIC0+IGEgPSBiXG4gICAgfCBgSW50bGl0IGEsIGBJbnRsaXQgYiAtPiBhID0gYlxuICAgIHwgYEZsb2F0IGEsIGBGbG9hdCBiIC0+IGEgPSBiXG4gICAgfCBgRmxvYXRsaXQgYSwgYEZsb2F0bGl0IGIgLT4gYSA9IGJcbiAgICB8IGBTdHJpbmcgYSwgYFN0cmluZyBiIC0+IGEgPSBiXG4gICAgfCBgU3RyaW5nbGl0IGEsIGBTdHJpbmdsaXQgYiAtPiBhID0gYlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgVHVwbGUgeHMsIGBUdXBsZSB5c1xuICAgIHwgYExpc3QgeHMsIGBMaXN0IHlzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiBlcXVhbCB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSwgYFZhcmlhbnQgKG5hbWUnLCB2YWx1ZScpIC0+XG4gICAgICAobWF0Y2ggbmFtZSA9IG5hbWUnIHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBtYXRjaCB2YWx1ZSwgdmFsdWUnIHdpdGhcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgXyAtPiBmYWxzZVxuXG5tb2R1bGUgUHJldHR5ID0gc3RydWN0XG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgfCBgSW50IHggLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX2ludCB4KVxuICAgIHwgYEZsb2F0IHggLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIHN0ZCB0aGVuIHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgICAgZWxzZSBqc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG4gICAgfCBgSW50bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYEZsb2F0bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBUdXBsZSBsIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpZiBsID0gW10gdGhlblxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCIoKVwiXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGhvdjI+XCI7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCIoQCwlYUA7PDAgLTI+KVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICAgICAgICApXG4gICAgfCBgVmFyaWFudCAocywgTm9uZSkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCByZXByZXNlbnRhdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPCVzPlwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcblxuICAgIHwgYFZhcmlhbnQgKHMsIFNvbWUgeCkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgWyByZXByZXNlbnRhdGlvbjsgeCBdKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG9wID0ganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8QFs8aHYyPiVzOiAlYUBdPlwiIG9wIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbmVuZFxuXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIiwib3BlbiBTdGRMYWJlbHNcbm9wZW4gTW9yZUxhYmVsc1xub3BlbiEgWW9qc29uXG5cbnR5cGUgdCA9IFlvanNvbi5TYWZlLnRcblxubGV0IHlvanNvbl9vZl91bml0ICgpIDogdCA9IGBOdWxsXG5sZXQgeW9qc29uX29mX2Jvb2wgYiA6IHQgPSBgQm9vbCBiXG5sZXQgeW9qc29uX29mX3N0cmluZyBzdHIgOiB0ID0gYFN0cmluZyBzdHJcbmxldCB5b2pzb25fb2ZfYnl0ZXMgYnl0ZXMgOiB0ID0gYFN0cmluZyAoQnl0ZXMudG9fc3RyaW5nIGJ5dGVzKVxubGV0IHlvanNvbl9vZl9jaGFyIGMgOiB0ID0gYFN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKVxubGV0IHlvanNvbl9vZl9pbnQgbiA6IHQgPSBgSW50IG5cbmxldCB5b2pzb25fb2ZfZmxvYXQgbiA6IHQgPSBgRmxvYXQgblxubGV0IHlvanNvbl9vZl9pbnQzMiAobiA6IEludDMyLnQpIDogdCA9IGBJbnRsaXQgKEludDMyLnRvX3N0cmluZyBuKVxubGV0IHlvanNvbl9vZl9pbnQ2NCAobiA6IEludDY0LnQpIDogdCA9IGBJbnRsaXQgKEludDY0LnRvX3N0cmluZyBuKVxubGV0IHlvanNvbl9vZl9uYXRpdmVpbnQgbiA6IHQgPSBgSW50bGl0IChOYXRpdmVpbnQudG9fc3RyaW5nIG4pXG5sZXQgeW9qc29uX29mX3JlZiB5b2pzb25fb2ZfX2EgcmYgPSB5b2pzb25fb2ZfX2EgIXJmXG5sZXQgeW9qc29uX29mX2xhenlfdCB5b2pzb25fb2ZfX2EgbHYgPSB5b2pzb25fb2ZfX2EgKExhenkuZm9yY2UgbHYpXG5cbmxldCB5b2pzb25fb2Zfb3B0aW9uIHlvanNvbl9vZl9fYSA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+IHlvanNvbl9vZl9fYSB4XG4gIHwgTm9uZSAtPiBgTnVsbFxuOztcblxubGV0IHlvanNvbl9vZl9wYWlyIHlvanNvbl9vZl9fYSB5b2pzb25fb2ZfX2IgKGEsIGIpID1cbiAgYExpc3QgWyB5b2pzb25fb2ZfX2EgYTsgeW9qc29uX29mX19iIGIgXVxuOztcblxubGV0IHlvanNvbl9vZl90cmlwbGUgeW9qc29uX29mX19hIHlvanNvbl9vZl9fYiB5b2pzb25fb2ZfX2MgKGEsIGIsIGMpID1cbiAgYExpc3QgWyB5b2pzb25fb2ZfX2EgYTsgeW9qc29uX29mX19iIGI7IHlvanNvbl9vZl9fYyBjIF1cbjs7XG5cbigqIExpc3QucmV2IChMaXN0LnJldl9tYXAgLi4uKSBpcyB0YWlsIHJlY3Vyc2l2ZSwgdGhlIE9DYW1sIHN0YW5kYXJkXG4gICBsaWJyYXJ5IExpc3QubWFwIGlzIE5PVC4gKilcbmxldCB5b2pzb25fb2ZfbGlzdCB5b2pzb25fb2ZfX2EgbHN0ID0gYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgfmY6eW9qc29uX29mX19hIGxzdCkpXG5cbmxldCB5b2pzb25fb2ZfYXJyYXkgeW9qc29uX29mX19hIGFyID1cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBBcnJheS5sZW5ndGggYXIgLSAxIGRvd250byAwIGRvXG4gICAgbHN0X3JlZiA6PSB5b2pzb25fb2ZfX2EgYXIuKGkpIDo6ICFsc3RfcmVmXG4gIGRvbmU7XG4gIGBMaXN0ICFsc3RfcmVmXG47O1xuXG5sZXQgeW9qc29uX29mX2hhc2h0YmwgeW9qc29uX29mX2tleSB5b2pzb25fb2ZfdmFsIGh0YmwgPVxuICBsZXQgY29sbCB+a2V5OmsgfmRhdGE6diBhY2MgPSBgTGlzdCBbIHlvanNvbl9vZl9rZXkgazsgeW9qc29uX29mX3ZhbCB2IF0gOjogYWNjIGluXG4gIGBMaXN0IChIYXNodGJsLmZvbGQgaHRibCB+aW5pdDpbXSB+Zjpjb2xsKVxuOztcblxubGV0IHlvanNvbl9vZl9vcGFxdWUgXyA9IGBTdHJpbmcgXCI8b3BhcXVlPlwiXG5sZXQgeW9qc29uX29mX2Z1biBfID0gYFN0cmluZyBcIjxmdW4+XCJcblxuZXhjZXB0aW9uIE9mX3lvanNvbl9lcnJvciBvZiBleG4gKiB0XG5cbmxldCByZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzID0gcmVmIHRydWVcbmxldCBvZl95b2pzb25fZXJyb3JfZXhuIGV4YyB5b2pzb24gPSByYWlzZSAoT2ZfeW9qc29uX2Vycm9yIChleGMsIHlvanNvbikpXG5sZXQgb2ZfeW9qc29uX2Vycm9yIHdoYXQgeW9qc29uID0gcmFpc2UgKE9mX3lvanNvbl9lcnJvciAoRmFpbHVyZSB3aGF0LCB5b2pzb24pKVxuXG5sZXQgdW5pdF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTnVsbCAtPiAoKVxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwidW5pdF9vZl95b2pzb246IGBOdWxsIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGJvb2xfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEJvb2wgdiAtPiB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJib29sX29mX3lvanNvbjogdHJ1ZS9mYWxzZSBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBzdHJpbmdfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYFN0cmluZyBzdHIgLT4gc3RyXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJzdHJpbmdfb2ZfeW9qc29uOiBzdHJpbmcgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgYnl0ZXNfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYFN0cmluZyBzdHIgLT4gQnl0ZXMub2Zfc3RyaW5nIHN0clxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiYnl0ZXNfb2ZfeW9qc29uOiBzdHJpbmcgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgY2hhcl9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgU3RyaW5nIHN0ciAtPlxuICAgIGlmIFN0cmluZy5sZW5ndGggc3RyIDw+IDFcbiAgICB0aGVuIG9mX3lvanNvbl9lcnJvciBcImNoYXJfb2ZfeW9qc29uOiBzdHJpbmcgbXVzdCBjb250YWluIG9uZSBjaGFyYWN0ZXIgb25seVwiIHlvanNvbjtcbiAgICBzdHIuWzBdXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJjaGFyX29mX3lvanNvbjogc3RyaW5nIG9mIHNpemUgb25lIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGludF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgSW50IHYgLT4gdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaW50X29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBmbG9hdF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgRmxvYXQgdiAtPiB2XG4gIHwgYEludCBpIC0+IGZsb2F0X29mX2ludCBpXG4gIHwgYEludGxpdCBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0clxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiZmxvYXRfb2ZfeW9qc29uOiBmbG9hdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBpbnQzMl9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgSW50bGl0IHN0ciAtPiBJbnQzMi5vZl9zdHJpbmcgc3RyXG4gIHwgYEludCB2IC0+IEludDMyLm9mX2ludCB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJpbnQzMl9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaW50NjRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludGxpdCBzdHIgLT4gSW50NjQub2Zfc3RyaW5nIHN0clxuICB8IGBJbnQgdiAtPiBJbnQ2NC5vZl9pbnQgdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaW50NjRfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IG5hdGl2ZWludF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgSW50bGl0IHN0ciAtPiBOYXRpdmVpbnQub2Zfc3RyaW5nIHN0clxuICB8IGBJbnQgdiAtPiBOYXRpdmVpbnQub2ZfaW50IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcIm5hdGl2ZWludF9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgcmVmX29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID0gcmVmIChhX19vZl95b2pzb24geW9qc29uKVxubGV0IGxhenlfdF9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9IExhenkuZnJvbV92YWwgKGFfX29mX3lvanNvbiB5b2pzb24pXG5cbmxldCBvcHRpb25fb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBlbCAtPiBTb21lIChhX19vZl95b2pzb24gZWwpXG47O1xuXG5sZXQgcGFpcl9vZl95b2pzb24gYV9fb2ZfeW9qc29uIGJfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IFsgYV95b2pzb247IGJfeW9qc29uIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3lvanNvbiBhX3lvanNvbiBpblxuICAgIGxldCBiID0gYl9fb2ZfeW9qc29uIGJfeW9qc29uIGluXG4gICAgYSwgYlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwicGFpcl9vZl95b2pzb246IGludmFsaWQgZm9ybWF0XCIgeW9qc29uXG47O1xuXG5sZXQgdHJpcGxlX29mX3lvanNvbiBhX19vZl95b2pzb24gYl9fb2ZfeW9qc29uIGNfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IFsgYV95b2pzb247IGJfeW9qc29uOyBjX3lvanNvbiBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl95b2pzb24gYV95b2pzb24gaW5cbiAgICBsZXQgYiA9IGJfX29mX3lvanNvbiBiX3lvanNvbiBpblxuICAgIGxldCBjID0gY19fb2ZfeW9qc29uIGNfeW9qc29uIGluXG4gICAgYSwgYiwgY1xuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwidHJpcGxlX29mX3lvanNvbjogaW52YWxpZCBmb3JtYXRcIiB5b2pzb25cbjs7XG5cbmxldCBsaXN0X29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBsc3QgLT5cbiAgICBsZXQgcmV2X2xzdCA9IExpc3QucmV2X21hcCBsc3QgfmY6YV9fb2ZfeW9qc29uIGluXG4gICAgTGlzdC5yZXYgcmV2X2xzdFxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwibGlzdF9vZl95b2pzb246IGxpc3QgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgYXJyYXlfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IFtdIC0+IFt8fF1cbiAgfCBgTGlzdCAoaCA6OiB0KSAtPlxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCB0ICsgMSBpblxuICAgIGxldCByZXMgPSBBcnJheS5tYWtlIGxlbiAoYV9fb2ZfeW9qc29uIGgpIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXNcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIHJlcy4oaSkgPC0gYV9fb2ZfeW9qc29uIGg7XG4gICAgICAgIGxvb3AgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBsb29wIDEgdFxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiYXJyYXlfb2ZfeW9qc29uOiBsaXN0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGhhc2h0Ymxfb2ZfeW9qc29uIGtleV9vZl95b2pzb24gdmFsX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IGxzdCAtPlxuICAgIGxldCBodGJsID0gSGFzaHRibC5jcmVhdGUgMCBpblxuICAgIGxldCBhY3QgPSBmdW5jdGlvblxuICAgICAgfCBgTGlzdCBbIGtfeW9qc29uOyB2X3lvanNvbiBdIC0+XG4gICAgICAgIEhhc2h0YmwuYWRkIGh0YmwgfmtleTooa2V5X29mX3lvanNvbiBrX3lvanNvbikgfmRhdGE6KHZhbF9vZl95b2pzb24gdl95b2pzb24pXG4gICAgICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaGFzaHRibF9vZl95b2pzb246IHR1cGxlIGxpc3QgbmVlZGVkXCIgeW9qc29uXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgbHN0IH5mOmFjdDtcbiAgICBodGJsXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJoYXNodGJsX29mX3lvanNvbjogbGlzdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBvcGFxdWVfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciBcIm9wYXF1ZV9vZl95b2pzb246IGNhbm5vdCBjb252ZXJ0IG9wYXF1ZSB2YWx1ZXNcIiB5b2pzb25cbjs7XG5cbmxldCBmdW5fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciBcImZ1bl9vZl95b2pzb246IGNhbm5vdCBjb252ZXJ0IGZ1bmN0aW9uIHZhbHVlc1wiIHlvanNvblxuOztcblxubW9kdWxlIFByaW1pdGl2ZXMgPSBzdHJ1Y3RcbiAgbGV0IHlvanNvbl9vZl9hcnJheSA9IHlvanNvbl9vZl9hcnJheVxuICBsZXQgYXJyYXlfb2ZfeW9qc29uID0gYXJyYXlfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfYm9vbCA9IHlvanNvbl9vZl9ib29sXG4gIGxldCBib29sX29mX3lvanNvbiA9IGJvb2xfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfY2hhciA9IHlvanNvbl9vZl9jaGFyXG4gIGxldCBjaGFyX29mX3lvanNvbiA9IGNoYXJfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfZmxvYXQgPSB5b2pzb25fb2ZfZmxvYXRcbiAgbGV0IGZsb2F0X29mX3lvanNvbiA9IGZsb2F0X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2ludCA9IHlvanNvbl9vZl9pbnRcbiAgbGV0IGludF9vZl95b2pzb24gPSBpbnRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfaW50MzIgPSB5b2pzb25fb2ZfaW50MzJcbiAgbGV0IGludDMyX29mX3lvanNvbiA9IGludDMyX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2ludDY0ID0geW9qc29uX29mX2ludDY0XG4gIGxldCBpbnQ2NF9vZl95b2pzb24gPSBpbnQ2NF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9saXN0ID0geW9qc29uX29mX2xpc3RcbiAgbGV0IGxpc3Rfb2ZfeW9qc29uID0gbGlzdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9uYXRpdmVpbnQgPSB5b2pzb25fb2ZfbmF0aXZlaW50XG4gIGxldCBuYXRpdmVpbnRfb2ZfeW9qc29uID0gbmF0aXZlaW50X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX29wdGlvbiA9IHlvanNvbl9vZl9vcHRpb25cbiAgbGV0IG9wdGlvbl9vZl95b2pzb24gPSBvcHRpb25fb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfcmVmID0geW9qc29uX29mX3JlZlxuICBsZXQgcmVmX29mX3lvanNvbiA9IHJlZl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9zdHJpbmcgPSB5b2pzb25fb2Zfc3RyaW5nXG4gIGxldCBzdHJpbmdfb2ZfeW9qc29uID0gc3RyaW5nX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2J5dGVzID0geW9qc29uX29mX2J5dGVzXG4gIGxldCBieXRlc19vZl95b2pzb24gPSBieXRlc19vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl91bml0ID0geW9qc29uX29mX3VuaXRcbiAgbGV0IHVuaXRfb2ZfeW9qc29uID0gdW5pdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9sYXp5X3QgPSB5b2pzb25fb2ZfbGF6eV90XG4gIGxldCBsYXp5X3Rfb2ZfeW9qc29uID0gbGF6eV90X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2hhc2h0YmwgPSB5b2pzb25fb2ZfaGFzaHRibFxuICBsZXQgaGFzaHRibF9vZl95b2pzb24gPSBoYXNodGJsX29mX3lvanNvblxuZW5kXG4iLCIoKiBDb252X2Vycm9yOiBNb2R1bGUgZm9yIEhhbmRsaW5nIEVycm9ycyBkdXJpbmcgQXV0b21hdGVkIFlvanNvblxuICAgQ29udmVyc2lvbnMgKilcblxub3BlbiEgU3RkTGFiZWxzXG5vcGVuIFlvanNvbl9jb252XG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgdHVwbGVzICopXG5cbmxldCB0dXBsZV9vZl9zaXplX25fZXhwZWN0ZWQgbG9jIG4geW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiB0dXBsZSBvZiBzaXplICVkIGV4cGVjdGVkXCIgbG9jIG4pIHlvanNvblxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgc3VtIHR5cGVzICopXG5cbmxldCBzdGFnX25vX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB0aGlzIGNvbnN0cnVjdG9yIGRvZXMgbm90IHRha2UgYXJndW1lbnRzXCIpIHlvanNvblxuOztcblxubGV0IHN0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgdGFnIHlvanNvbiA9XG4gIGxldCBtc2cgPVxuICAgIHNwcmludGYgXCIlc19vZl95b2pzb246IHN1bSB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCIgbG9jIHRhZ1xuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHN0YWdfdGFrZXNfYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHRoaXMgY29uc3RydWN0b3IgcmVxdWlyZXMgYXJndW1lbnRzXCIpIHlvanNvblxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhIG5lc3RlZCBsaXN0XCIpIHlvanNvblxuOztcblxubGV0IGVtcHR5X2xpc3RfaW52YWxpZF9zdW0gbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGFuIGVtcHR5IGxpc3RcIikgeW9qc29uXG47O1xuXG5sZXQgdW5leHBlY3RlZF9zdGFnIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdW5leHBlY3RlZCB2YXJpYW50IGNvbnN0cnVjdG9yXCIpIHlvanNvblxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcmVjb3JkcyAqKVxuXG5sZXQgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdCB+bG9jIHJldl9mbGRfbmFtZXMgeW9qc29uID1cbiAgbGV0IGZsZF9uYW1lc19zdHIgPSBTdHJpbmcuY29uY2F0IChMaXN0LnJldiByZXZfZmxkX25hbWVzKSB+c2VwOlwiIFwiIGluXG4gIGxldCBtc2cgPSBzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiAlczogJXNcIiBsb2Mgd2hhdCBmbGRfbmFtZXNfc3RyIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgeW9qc29uID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImR1cGxpY2F0ZSBmaWVsZHNcIiB+bG9jIHJldl9mbGRfbmFtZXMgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX2V4dHJhX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb24gPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZXh0cmEgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHlvanNvblxuOztcblxubGV0IHJlYyByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIGZpZWxkcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgZmllbGRzKSB+c2VwOlwiIFwiXG4gIHwgKHRydWUsIGZpZWxkKSA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgKGZpZWxkIDo6IGZpZWxkcykgcmVzdFxuICB8IF8gOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIGZpZWxkcyByZXN0XG47O1xuXG5sZXQgcmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyBsb2MgeW9qc29uIGxzdCA9XG4gIGxldCB1bmRlZmluZWQgPSByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIFtdIGxzdCBpblxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiB0aGUgZm9sbG93aW5nIHJlY29yZCBlbGVtZW50cyB3ZXJlIHVuZGVmaW5lZDogJXNcIiBsb2MgdW5kZWZpbmVkXG4gIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGxvYyB5b2pzb24gPVxuICBsZXQgbXNnID0gbG9jIF4gXCJfb2ZfeW9qc29uOiBsaXN0IGluc3RlYWQgb2YgYXRvbSBmb3IgcmVjb3JkIGV4cGVjdGVkXCIgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCByZWNvcmRfcG9seV9maWVsZF92YWx1ZSBsb2MgeW9qc29uID1cbiAgbGV0IG1zZyA9XG4gICAgbG9jXG4gICAgXiBcIl9vZl95b2pzb246IGNhbm5vdCBjb252ZXJ0IHZhbHVlcyBvZiB0eXBlcyByZXN1bHRpbmcgZnJvbSBwb2x5bW9ycGhpYyByZWNvcmQgXFxcbiAgICAgICBmaWVsZHNcIlxuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcG9seW1vcnBoaWMgdmFyaWFudHMgKilcblxuZXhjZXB0aW9uIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX3ZhcmlhbnRfbWF0Y2ggKCkgPSByYWlzZSBOb192YXJpYW50X21hdGNoXG5cbmxldCBub19tYXRjaGluZ192YXJpYW50X2ZvdW5kIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogbm8gbWF0Y2hpbmcgdmFyaWFudCBmb3VuZFwiKSB5b2pzb25cbjs7XG5cbmxldCBwdGFnX25vX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBwb2x5bW9ycGhpYyB2YXJpYW50IGRvZXMgbm90IHRha2UgYXJndW1lbnRzXCIpIHlvanNvblxuOztcblxubGV0IHB0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgY25zdHIgeW9qc29uID1cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZlxuICAgICAgXCIlc19vZl95b2pzb246IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiXG4gICAgICBsb2NcbiAgICAgIGNuc3RyXG4gIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcHRhZ190YWtlc19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgdGFrZXMgYW4gYXJndW1lbnRcIikgeW9qc29uXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yXG4gICAgKGxvYyBeIFwiX29mX3lvanNvbjogYSBuZXN0ZWQgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIilcbiAgICB5b2pzb25cbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvclxuICAgIChsb2MgXiBcIl9vZl95b2pzb246IHRoZSBlbXB0eSBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKVxuICAgIHlvanNvblxuOztcblxubGV0IGVtcHR5X3R5cGUgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB0cnlpbmcgdG8gY29udmVydCBhbiBlbXB0eSB0eXBlXCIpIHlvanNvblxuOztcbiIsIm1vZHVsZSBZb2pzb25fY29udl9lcnJvciA9IFlvanNvbl9jb252X2Vycm9yXG5tb2R1bGUgWW9qc29uX2NvbnYgPSBZb2pzb25fY29udlxubW9kdWxlIFlvanNvbmFibGUgPSBZb2pzb25hYmxlX2ludGZcbm1vZHVsZSBZb2pzb24gPSBZb2pzb25cblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBvcHRpb24gPVxuICAgIHwgTm9uZVxuICAgIHwgU29tZSBvZiAnYVxuZW5kXG5cbmV4dGVybmFsIGlnbm9yZSA6IF8gLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5leHRlcm5hbCBwb2x5X2VxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxubGV0ICggISApIDogJ2EgcmVmIC0+ICdhID0gZnVuIHggLT4gIXhcbiIsIiMgMSBcInBweF9kZXJpdmluZ19ydW50aW1lLmNwcG8ubWxcIlxudHlwZSBub25yZWMgaW50ID0gaW50XG50eXBlIG5vbnJlYyBjaGFyID0gY2hhclxudHlwZSBub25yZWMgc3RyaW5nID0gc3RyaW5nXG50eXBlIG5vbnJlYyBmbG9hdCA9IGZsb2F0XG50eXBlIG5vbnJlYyBib29sID0gYm9vbFxudHlwZSBub25yZWMgdW5pdCA9IHVuaXRcbnR5cGUgbm9ucmVjIGV4biA9IGV4blxudHlwZSBub25yZWMgJ2EgYXJyYXkgPSAnYSBhcnJheVxudHlwZSBub25yZWMgJ2EgbGlzdCA9ICdhIGxpc3RcbnR5cGUgbm9ucmVjICdhIG9wdGlvbiA9ICdhIG9wdGlvblxudHlwZSBub25yZWMgbmF0aXZlaW50ID0gbmF0aXZlaW50XG50eXBlIG5vbnJlYyBpbnQzMiA9IGludDMyXG50eXBlIG5vbnJlYyBpbnQ2NCA9IGludDY0XG50eXBlIG5vbnJlYyAnYSBsYXp5X3QgPSAnYSBsYXp5X3RcbnR5cGUgbm9ucmVjIGJ5dGVzID0gYnl0ZXNcblxuIyAxOCBcInBweF9kZXJpdmluZ19ydW50aW1lLmNwcG8ubWxcIlxuKCogV2UgcmVxdWlyZSA0LjA4IHdoaWxlIDQuMDcgYWxyZWFkeSBoYXMgYSBTdGRsaWIgbW9kdWxlLlxuICAgSW4gNC4wNywgdGhlIHR5cGUgZXF1YWxpdGllcyBvbiBTdGRsaWIuUGVydmFzaXZlc1xuICAgYXJlIG5vdCBzdHJvbmcgZW5vdWdoIGZvciB0aGUgJ2luY2x1ZGUgU3RkbGliJ1xuICAgYmVsb3cgdG8gc2F0aXNmeSB0aGUgc2lnbmF0dXJlIGNvbnN0cmFpbnRzIG9uXG4gICBQcHhfZGVyaXZpbmdfcnVudGltZS5QZXJ2YXNpdmVzLiAqKVxubW9kdWxlIFN0ZGxpYiA9IFN0ZGxpYlxuXG5pbmNsdWRlIFN0ZGxpYlxuXG5tb2R1bGUgUmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHJlc3VsdCA9XG4gICAgfCBPayBvZiAnYVxuICAgIHwgRXJyb3Igb2YgJ2JcblxuICB0eXBlICgnYSwgJ2IpIHJlc3VsdCA9ICgnYSwgJ2IpIHQgPVxuICAgIHwgT2sgb2YgJ2FcbiAgICB8IEVycm9yIG9mICdiXG5lbmRcbiIsIlxudHlwZSB0ID0gaW50XG5sZXQgZXF1YWwgKHggOiBpbnQpICh5IDogaW50KSA9IHggPSB5XG5sZXQgY29tcGFyZSAoeCA6IGludCkgKHkgOiBpbnQpID0gY29tcGFyZSB4IHlcbmxldCB0b19pbnQgeCA9IHhcbmxldCBwcCA9IEZvcm1hdC5wcF9wcmludF9pbnRcblxubGV0IGludGVyc2VjdCB4IHkgPSB4IGxhbmQgeSA8PiAwXG5sZXQgKCsrKSB4IHkgPSB4IGxvciB5XG5cbmxldCBkdW1teSA9IC0xXG5sZXQgaW5leGlzdGFudCA9IDFcbmxldCBsZXR0ZXIgPSAyXG5sZXQgbm90X2xldHRlciA9IDRcbmxldCBuZXdsaW5lID0gOFxubGV0IGxhc3RuZXdsaW5lID0gMTZcbmxldCBzZWFyY2hfYm91bmRhcnkgPSAzMlxuXG5sZXQgZnJvbV9jaGFyID0gZnVuY3Rpb25cbiAgKCogU2hvdWxkIG1hdGNoIFtjd29yZF0gZGVmaW5pdGlvbiAqKVxuICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgfCAnMCcuLic5JyB8ICdfJyB8ICdcXDE3MCcgfCAnXFwxODEnIHwgJ1xcMTg2J1xuICB8ICdcXDE5MicuLidcXDIxNCcgfCAnXFwyMTYnLi4nXFwyNDYnIHwgJ1xcMjQ4Jy4uJ1xcMjU1JyAtPlxuICAgIGxldHRlclxuICB8ICdcXG4nIC0+XG4gICAgbm90X2xldHRlciArKyBuZXdsaW5lXG4gIHwgXyAtPlxuICAgIG5vdF9sZXR0ZXJcbiIsIigqKiBWZXJ5IHNtYWxsIHRvb2xpbmcgZm9yIGZvcm1hdCBwcmludGVycy4gKilcblxuaW5jbHVkZSBGb3JtYXRcblxudHlwZSAnYSB0ID0gRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0XG5cbmxldCBsaXN0ID0gcHBfcHJpbnRfbGlzdFxubGV0IHN0ciA9IHBwX3ByaW50X3N0cmluZ1xubGV0IHNleHAgZm10IHMgcHAgeCA9IGZwcmludGYgZm10IFwiQFs8Mz4oJXNAICVhKUBdXCIgcyBwcCB4XG5sZXQgcGFpciBwcDEgcHAyIGZtdCAodjEsdjIpID1cbiAgcHAxIGZtdCB2MTsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDsgcHAyIGZtdCB2MlxubGV0IHRyaXBsZSBwcDEgcHAyIHBwMyBmbXQgKHYxLCB2MiwgdjMpID1cbiAgcHAxIGZtdCB2MTsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDtcbiAgcHAyIGZtdCB2MjsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDtcbiAgcHAzIGZtdCB2M1xubGV0IGludCA9IHBwX3ByaW50X2ludFxubGV0IG9wdGludCBmbXQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGkgLT4gZnByaW50ZiBmbXQgXCJAICVkXCIgaVxuXG5sZXQgcXVvdGUgZm10IHMgPSBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJXNcXFwiXCIgc1xuXG5sZXQgcHBfb2xpc3QgcHBfZWxlbSBmbXQgPVxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwzPltAICVhQCBdQF1cIlxuICAgIChwcF9wcmludF9saXN0XG4gICAgICAgfnBwX3NlcDooZnVuIGZtdCAoKSAtPiBmcHJpbnRmIGZtdCBcIjtAIFwiKVxuICAgICAgIHBwX2VsZW0pXG5cbmxldCBwcF9zdHJfbGlzdCA9IHBwX29saXN0IHF1b3RlXG5cbmxldCB0b190b19zdHJpbmcgcHAgeCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBwcCBmbXQgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbnR5cGUgYyA9IGludFxudHlwZSB0ID0gKGMgKiBjKSBsaXN0XG5cbmxldCByZWMgdW5pb24gbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBsXG4gIHwgW10sIF8gLT4gbCdcbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiArIDEgPCBjMScgdGhlblxuICAgICAgKGMxLCBjMik6OnVuaW9uIHIgbCdcbiAgICBlbHNlIGlmIGMyJyArIDEgPCBjMSB0aGVuXG4gICAgICAoYzEnLCBjMicpOjp1bmlvbiBsIHInXG4gICAgZWxzZSBpZiBjMiA8IGMyJyB0aGVuXG4gICAgICB1bmlvbiByICgobWluIGMxIGMxJywgYzInKTo6cicpXG4gICAgZWxzZVxuICAgICAgdW5pb24gKChtaW4gYzEgYzEnLCBjMik6OnIpIHInXG5cbmxldCByZWMgaW50ZXIgbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBbXVxuICB8IFtdLCBfIC0+IFtdXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgPCBjMScgdGhlblxuICAgICAgaW50ZXIgciBsJ1xuICAgIGVsc2UgaWYgYzInIDwgYzEgdGhlblxuICAgICAgaW50ZXIgbCByJ1xuICAgIGVsc2UgaWYgYzIgPCBjMicgdGhlblxuICAgICAgKG1heCBjMSBjMScsIGMyKTo6aW50ZXIgciBsJ1xuICAgIGVsc2VcbiAgICAgIChtYXggYzEgYzEnLCBjMicpOjppbnRlciBsIHInXG5cbmxldCByZWMgZGlmZiBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IGxcbiAgfCBbXSwgXyAtPiBbXVxuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyIDwgYzEnIHRoZW5cbiAgICAgIChjMSwgYzIpOjpkaWZmIHIgbCdcbiAgICBlbHNlIGlmIGMyJyA8IGMxIHRoZW5cbiAgICAgIGRpZmYgbCByJ1xuICAgIGVsc2VcbiAgICAgIGxldCByJycgPSBpZiBjMicgPCBjMiB0aGVuIChjMicgKyAxLCBjMikgOjogciBlbHNlIHIgaW5cbiAgICAgIGlmIGMxIDwgYzEnIHRoZW5cbiAgICAgICAgKGMxLCBjMScgLSAxKTo6ZGlmZiByJycgcidcbiAgICAgIGVsc2VcbiAgICAgICAgZGlmZiByJycgcidcblxubGV0IHNpbmdsZSBjID0gW2MsIGNdXG5cbmxldCBhZGQgYyBsID0gdW5pb24gKHNpbmdsZSBjKSBsXG5cbmxldCBzZXEgYyBjJyA9IGlmIGMgPD0gYycgdGhlbiBbYywgYyddIGVsc2UgW2MnLCBjXVxuXG5sZXQgcmVjIG9mZnNldCBvIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgICAgICAgIC0+IFtdXG4gIHwgKGMxLCBjMikgOjogciAtPiAoYzEgKyBvLCBjMiArIG8pIDo6IG9mZnNldCBvIHJcblxubGV0IGVtcHR5ID0gW11cblxubGV0IHJlYyBtZW0gKGMgOiBpbnQpIHMgPVxuICBtYXRjaCBzIHdpdGhcbiAgICBbXSAgICAgICAgICAgICAgLT4gZmFsc2VcbiAgfCAoYzEsIGMyKSA6OiByZW0gLT4gaWYgYyA8PSBjMiB0aGVuIGMgPj0gYzEgZWxzZSBtZW0gYyByZW1cblxuKCoqKiopXG5cbnR5cGUgaGFzaCA9IGludFxuXG5sZXQgcmVjIGhhc2hfcmVjID0gZnVuY3Rpb25cbiAgfCBbXSAgICAgICAgLT4gMFxuICB8IChpLCBqKTo6ciAtPiBpICsgMTMgKiBqICsgMjU3ICogaGFzaF9yZWMgclxubGV0IGhhc2ggbCA9IChoYXNoX3JlYyBsKSBsYW5kIDB4M0ZGRkZGRkZcblxuKCoqKiopXG5cbmxldCBwcmludF9vbmUgY2ggKGMxLCBjMikgPVxuICBpZiBjMSA9IGMyIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkXCIgYzFcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWQtJWRcIiBjMSBjMlxuXG5sZXQgcHAgPSBGbXQubGlzdCBwcmludF9vbmVcblxubGV0IHJlYyBpdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8ICh4LCB5KTo6eHMgLT5cbiAgICBmIHggeTtcbiAgICBpdGVyIHhzICB+ZlxuXG5sZXQgb25lX2NoYXIgPSBmdW5jdGlvblxuICB8IFtpLCBqXSB3aGVuIGkgPSBqIC0+IFNvbWUgaVxuICB8IF8gLT4gTm9uZVxuXG5cbm1vZHVsZSBDU2V0TWFwID0gTWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IGludCAqIChpbnQgKiBpbnQpIGxpc3RcbiAgICBsZXQgY29tcGFyZSAoaSwgdSkgKGosIHYpID1cbiAgICAgIGxldCBjID0gY29tcGFyZSBpIGogaW5cbiAgICAgIGlmIGMgPD4gMFxuICAgICAgdGhlbiBjXG4gICAgICBlbHNlIGNvbXBhcmUgdSB2XG4gIGVuZClcblxubGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZF9yaWdodCBmIHQgaW5pdFxuXG5sZXQgY3NpbmdsZSBjID0gc2luZ2xlIChDaGFyLmNvZGUgYylcblxubGV0IGNhbnkgPSBbMCwgMjU1XVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCByZWMgcHJlcGVuZCBzIHggbCA9XG4gIG1hdGNoIHMsIGwgd2l0aFxuICB8IFtdLCBfIC0+IGxcbiAgfCBfciwgW10gLT4gW11cbiAgfCAoX2MsIGMnKSA6OiByLCAoW2QsIF9kJ10sIF94JykgOjogX3InIHdoZW4gYycgPCBkIC0+IHByZXBlbmQgciB4IGxcbiAgfCAoYywgYycpIDo6IHIsIChbZCwgZCddLCB4JykgOjogcicgLT5cbiAgICBpZiBjIDw9IGQgdGhlbiBiZWdpblxuICAgICAgaWYgYycgPCBkJ1xuICAgICAgdGhlbiAoW2QsIGMnXSwgeCBAIHgnKSA6OiBwcmVwZW5kIHIgeCAoKFtjJyArIDEsIGQnXSwgeCcpIDo6IHInKVxuICAgICAgZWxzZSAoW2QsIGQnXSwgeCBAIHgnKSA6OiBwcmVwZW5kIHMgeCByJ1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBjID4gZCdcbiAgICAgIHRoZW4gKFtkLCBkJ10sIHgnKSA6OiBwcmVwZW5kIHMgeCByJ1xuICAgICAgZWxzZSAoW2QsIGMgLSAxXSwgeCcpIDo6IHByZXBlbmQgcyB4ICgoW2MsIGQnXSwgeCcpIDo6IHInKVxuICAgIGVuZFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBwaWNrID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBpbnZhbGlkX2FyZyBcIlJlX2NzZXQucGlja1wiXG4gIHwgKHgsIF8pOjpfIC0+IHhcbiIsIlxubW9kdWxlIFBtYXJrID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuICBsZXQgZXF1YWwgKHggOiBpbnQpICh5IDogaW50KSA9IHggPSB5XG4gIGxldCBjb21wYXJlICh4IDogaW50KSAoeSA6IGludCkgPSBjb21wYXJlIHggeVxuICBsZXQgciA9IHJlZiAwXG4gIGxldCBnZW4gKCkgPSBpbmNyIHIgOyAhclxuXG4gIGxldCBwcCA9IEZvcm1hdC5wcF9wcmludF9pbnRcbmVuZFxuXG5pbmNsdWRlIFBtYXJrXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2UoUG1hcmspXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG50eXBlIHNlbSA9IFsgYExvbmdlc3QgfCBgU2hvcnRlc3QgfCBgRmlyc3QgXVxuXG50eXBlIHJlcF9raW5kID0gWyBgR3JlZWR5IHwgYE5vbl9ncmVlZHkgXVxuXG50eXBlIG1hcmsgPSBpbnRcbnR5cGUgaWR4ID0gaW50XG5cbnR5cGUgZXhwciA9IHsgaWQgOiBpbnQ7IGRlZiA6IGRlZiB9XG5cbmFuZCBkZWYgPVxuICAgIENzdCBvZiBDc2V0LnRcbiAgfCBBbHQgb2YgZXhwciBsaXN0XG4gIHwgU2VxIG9mIHNlbSAqIGV4cHIgKiBleHByXG4gIHwgRXBzXG4gIHwgUmVwIG9mIHJlcF9raW5kICogc2VtICogZXhwclxuICB8IE1hcmsgb2YgaW50XG4gIHwgRXJhc2Ugb2YgaW50ICogaW50XG4gIHwgQmVmb3JlIG9mIENhdGVnb3J5LnRcbiAgfCBBZnRlciBvZiBDYXRlZ29yeS50XG4gIHwgUG1hcmsgb2YgUG1hcmsudFxuXG5sZXQgaGFzaF9jb21iaW5lIGggYWNjdSA9IGFjY3UgKiA2NTU5OSArIGhcblxubW9kdWxlIE1hcmtzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtYXJrcyA6IChpbnQgKiBpbnQpIGxpc3RcbiAgICA7IHBtYXJrcyA6IFBtYXJrLlNldC50IH1cblxuICBsZXQgZW1wdHkgPSB7IG1hcmtzID0gW10gOyBwbWFya3MgPSBQbWFyay5TZXQuZW1wdHkgfVxuXG4gIGxldCByZWMgbWVyZ2VfbWFya3Nfb2Zmc2V0IG9sZCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgb2xkXG4gICAgfCAoaSwgdikgOjogcmVtIC0+XG4gICAgICBsZXQgbncnID0gbWVyZ2VfbWFya3Nfb2Zmc2V0IChMaXN0LnJlbW92ZV9hc3NxIGkgb2xkKSByZW0gaW5cbiAgICAgIGlmIHYgPSAtMiB0aGVuXG4gICAgICAgIG53J1xuICAgICAgZWxzZVxuICAgICAgICAoaSwgdikgOjogbncnXG5cbiAgbGV0IG1lcmdlIG9sZCBudyA9XG4gICAgeyBtYXJrcyA9IG1lcmdlX21hcmtzX29mZnNldCBvbGQubWFya3MgbncubWFya3NcbiAgICA7IHBtYXJrcyA9IFBtYXJrLlNldC51bmlvbiBvbGQucG1hcmtzIG53LnBtYXJrcyB9XG5cbiAgbGV0IHJlYyBoYXNoX21hcmtzX29mZnNldCBsIGFjY3UgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgW10gICAgICAgICAgLT4gYWNjdVxuICAgIHwgKGEsIGkpIDo6IHIgLT4gaGFzaF9tYXJrc19vZmZzZXQgciAoaGFzaF9jb21iaW5lIGEgKGhhc2hfY29tYmluZSBpIGFjY3UpKVxuXG4gIGxldCBoYXNoIG0gYWNjdSA9XG4gICAgaGFzaF9tYXJrc19vZmZzZXQgbS5tYXJrcyAoaGFzaF9jb21iaW5lIChIYXNodGJsLmhhc2ggbS5wbWFya3MpIGFjY3UpXG5cbiAgbGV0IHJlYyBtYXJrc19zZXRfaWR4IGlkeCA9IGZ1bmN0aW9uXG4gICAgfCAoYSwgLTEpIDo6IHJlbSAtPlxuICAgICAgKGEsIGlkeCkgOjogbWFya3Nfc2V0X2lkeCBpZHggcmVtXG4gICAgfCBtYXJrcyAtPlxuICAgICAgbWFya3NcblxuICBsZXQgbWFya3Nfc2V0X2lkeCBtYXJrcyBpZHggPVxuICAgIHsgbWFya3Mgd2l0aCBtYXJrcyA9IG1hcmtzX3NldF9pZHggaWR4IG1hcmtzLm1hcmtzIH1cblxuICBsZXQgcHBfbWFya3MgY2ggdCA9XG4gICAgbWF0Y2ggdC5tYXJrcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgKClcbiAgICB8IChhLCBpKSA6OiByIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkLSVkXCIgYSBpO1xuICAgICAgTGlzdC5pdGVyIChmdW4gKGEsIGkpIC0+IEZvcm1hdC5mcHJpbnRmIGNoIFwiICVkLSVkXCIgYSBpKSByXG5lbmRcblxuKCoqKiopXG5cbmxldCBwcF9zZW0gY2ggayA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgY2hcbiAgICAobWF0Y2ggayB3aXRoXG4gICAgICAgYFNob3J0ZXN0IC0+IFwic2hvcnRcIlxuICAgICB8IGBMb25nZXN0ICAtPiBcImxvbmdcIlxuICAgICB8IGBGaXJzdCAgICAtPiBcImZpcnN0XCIpXG5cblxubGV0IHBwX3JlcF9raW5kIGZtdCA9IGZ1bmN0aW9uXG4gIHwgYEdyZWVkeSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIkdyZWVkeVwiXG4gIHwgYE5vbl9ncmVlZHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25fZ3JlZWR5XCJcblxubGV0IHJlYyBwcCBjaCBlID1cbiAgbGV0IG9wZW4gRm10IGluXG4gIG1hdGNoIGUuZGVmIHdpdGhcbiAgICBDc3QgbCAtPlxuICAgIHNleHAgY2ggXCJjc3RcIiBDc2V0LnBwIGw7XG4gIHwgQWx0IGwgLT5cbiAgICBzZXhwIGNoIFwiYWx0XCIgKGxpc3QgcHApIGxcbiAgfCBTZXEgKGssIGUsIGUnKSAtPlxuICAgIHNleHAgY2ggXCJzZXFcIiAodHJpcGxlIHBwX3NlbSBwcCBwcCkgKGssIGUsIGUnKVxuICB8IEVwcyAtPlxuICAgIHN0ciBjaCBcImVwc1wiXG4gIHwgUmVwIChfcmssIGssIGUpIC0+XG4gICAgc2V4cCBjaCBcInJlcFwiIChwYWlyIHBwX3NlbSBwcCkgKGssIGUpXG4gIHwgTWFyayBpIC0+XG4gICAgc2V4cCBjaCBcIm1hcmtcIiBpbnQgaVxuICB8IFBtYXJrIGkgLT5cbiAgICBzZXhwIGNoIFwicG1hcmtcIiBpbnQgKGkgOj4gaW50KVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIHNleHAgY2ggXCJlcmFzZVwiIChwYWlyIGludCBpbnQpIChiLCBlKVxuICB8IEJlZm9yZSBjIC0+XG4gICAgc2V4cCBjaCBcImJlZm9yZVwiIENhdGVnb3J5LnBwIGNcbiAgfCBBZnRlciBjIC0+XG4gICAgc2V4cCBjaCBcImFmdGVyXCIgQ2F0ZWdvcnkucHAgY1xuXG5cbigqKioqKVxuXG5sZXQgcmVjIGZpcnN0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgTm9uZVxuICB8IHggOjogciAtPlxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICBOb25lICAgICAgICAgIC0+IGZpcnN0IGYgclxuICAgIHwgU29tZSBfIGFzIHJlcyAtPiByZXNcblxuKCoqKiopXG5cbnR5cGUgaWRzID0gaW50IHJlZlxubGV0IGNyZWF0ZV9pZHMgKCkgPSByZWYgMFxuXG5sZXQgZXBzX2V4cHIgPSB7IGlkID0gMDsgZGVmID0gRXBzIH1cblxubGV0IG1rX2V4cHIgaWRzIGRlZiA9XG4gIGluY3IgaWRzO1xuICB7IGlkID0gIWlkczsgZGVmID0gZGVmIH1cblxubGV0IGVtcHR5IGlkcyA9IG1rX2V4cHIgaWRzIChBbHQgW10pXG5cbmxldCBjc3QgaWRzIHMgPVxuICBpZiBDc2V0LmlzX2VtcHR5IHNcbiAgdGhlbiBlbXB0eSBpZHNcbiAgZWxzZSBta19leHByIGlkcyAoQ3N0IHMpXG5cbmxldCBhbHQgaWRzID0gZnVuY3Rpb25cbiAgfCBbXSAgLT4gZW1wdHkgaWRzXG4gIHwgW2NdIC0+IGNcbiAgfCBsICAgLT4gbWtfZXhwciBpZHMgKEFsdCBsKVxuXG5sZXQgc2VxIGlkcyBraW5kIHggeSA9XG4gIG1hdGNoIHguZGVmLCB5LmRlZiB3aXRoXG4gICAgQWx0IFtdLCBfICAgICAgICAgICAgICAgICAtPiB4XG4gIHwgXywgQWx0IFtdICAgICAgICAgICAgICAgICAtPiB5XG4gIHwgRXBzLCBfICAgICAgICAgICAgICAgICAgICAtPiB5XG4gIHwgXywgRXBzIHdoZW4ga2luZCA9IGBGaXJzdCAtPiB4XG4gIHwgXyAgICAgICAgICAgICAgICAgICAgICAgICAtPiBta19leHByIGlkcyAoU2VxIChraW5kLCB4LCB5KSlcblxubGV0IGlzX2VwcyBleHByID1cbiAgbWF0Y2ggZXhwci5kZWYgd2l0aFxuICB8IEVwcyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgZXBzIGlkcyA9IG1rX2V4cHIgaWRzIEVwc1xuXG5sZXQgcmVwIGlkcyBraW5kIHNlbSB4ID0gbWtfZXhwciBpZHMgKFJlcCAoa2luZCwgc2VtLCB4KSlcblxubGV0IG1hcmsgaWRzIG0gPSBta19leHByIGlkcyAoTWFyayBtKVxuXG5sZXQgcG1hcmsgaWRzIGkgPSBta19leHByIGlkcyAoUG1hcmsgaSlcblxubGV0IGVyYXNlIGlkcyBtIG0nID0gbWtfZXhwciBpZHMgKEVyYXNlIChtLCBtJykpXG5cbmxldCBiZWZvcmUgaWRzIGMgPSBta19leHByIGlkcyAoQmVmb3JlIGMpXG5cbmxldCBhZnRlciBpZHMgYyA9IG1rX2V4cHIgaWRzIChBZnRlciBjKVxuXG4oKioqKilcblxubGV0IHJlYyByZW5hbWUgaWRzIHggPVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gICAgQ3N0IF8gfCBFcHMgfCBNYXJrIF8gfCBQbWFyayBfIHwgRXJhc2UgXyB8IEJlZm9yZSBfIHwgQWZ0ZXIgXyAtPlxuICAgIG1rX2V4cHIgaWRzIHguZGVmXG4gIHwgQWx0IGwgLT5cbiAgICBta19leHByIGlkcyAoQWx0IChMaXN0Lm1hcCAocmVuYW1lIGlkcykgbCkpXG4gIHwgU2VxIChrLCB5LCB6KSAtPlxuICAgIG1rX2V4cHIgaWRzIChTZXEgKGssIHJlbmFtZSBpZHMgeSwgcmVuYW1lIGlkcyB6KSlcbiAgfCBSZXAgKGcsIGssIHkpIC0+XG4gICAgbWtfZXhwciBpZHMgKFJlcCAoZywgaywgcmVuYW1lIGlkcyB5KSlcblxuKCoqKiopXG5cbnR5cGUgaGFzaCA9IGludFxudHlwZSBtYXJrX2luZm9zID0gaW50IGFycmF5XG50eXBlIHN0YXR1cyA9IEZhaWxlZCB8IE1hdGNoIG9mIG1hcmtfaW5mb3MgKiBQbWFyay5TZXQudCB8IFJ1bm5pbmdcblxubW9kdWxlIEUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFRTZXEgb2YgdCBsaXN0ICogZXhwciAqIHNlbVxuICAgIHwgVEV4cCBvZiBNYXJrcy50ICogZXhwclxuICAgIHwgVE1hdGNoIG9mIE1hcmtzLnRcblxuICBsZXQgcmVjIGVxdWFsIGwxIGwyID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIFtdIC0+XG4gICAgICB0cnVlXG4gICAgfCBUU2VxIChsMScsIGUxLCBfKSA6OiByMSwgVFNlcSAobDInLCBlMiwgXykgOjogcjIgLT5cbiAgICAgIGUxLmlkID0gZTIuaWQgJiYgZXF1YWwgbDEnIGwyJyAmJiBlcXVhbCByMSByMlxuICAgIHwgVEV4cCAobWFya3MxLCBlMSkgOjogcjEsIFRFeHAgKG1hcmtzMiwgZTIpIDo6IHIyIC0+XG4gICAgICBlMS5pZCA9IGUyLmlkICYmIG1hcmtzMSA9IG1hcmtzMiAmJiBlcXVhbCByMSByMlxuICAgIHwgVE1hdGNoIG1hcmtzMSA6OiByMSwgVE1hdGNoIG1hcmtzMiA6OiByMiAtPlxuICAgICAgbWFya3MxID0gbWFya3MyICYmIGVxdWFsIHIxIHIyXG4gICAgfCBfIC0+XG4gICAgICBmYWxzZVxuXG4gIGxldCByZWMgaGFzaCBsIGFjY3UgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGFjY3VcbiAgICB8IFRTZXEgKGwnLCBlLCBfKSA6OiByIC0+XG4gICAgICBoYXNoIHIgKGhhc2hfY29tYmluZSAweDE3MmExYmNlIChoYXNoX2NvbWJpbmUgZS5pZCAoaGFzaCBsJyBhY2N1KSkpXG4gICAgfCBURXhwIChtYXJrcywgZSkgOjogciAtPlxuICAgICAgaGFzaCByXG4gICAgICAgIChoYXNoX2NvbWJpbmUgMHgyYjRjMGQ3NyAoaGFzaF9jb21iaW5lIGUuaWQgKE1hcmtzLmhhc2ggbWFya3MgYWNjdSkpKVxuICAgIHwgVE1hdGNoIG1hcmtzIDo6IHIgLT5cbiAgICAgIGhhc2ggciAoaGFzaF9jb21iaW5lIDB4MWMyMDVhZDUgKE1hcmtzLmhhc2ggbWFya3MgYWNjdSkpXG5cbiAgbGV0IHRleHAgbWFya3MgeCA9IFRFeHAgKG1hcmtzLCB4KVxuXG4gIGxldCB0c2VxIGtpbmQgeCB5IHJlbSA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IHJlbVxuICAgIHwgW1RFeHAgKG1hcmtzLCB7ZGVmID0gRXBzIDsgX30pXSAtPiBURXhwIChtYXJrcywgeSkgOjogcmVtXG4gICAgfCBfICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IFRTZXEgKHgsIHksIGtpbmQpIDo6IHJlbVxuXG4gIGxldCByZWMgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeSA9XG4gICAgbWF0Y2ggZSB3aXRoXG4gICAgfCBUTWF0Y2ggbWFya3MgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oTWF0Y2hAICVhKUBdXCIgTWFya3MucHBfbWFya3MgbWFya3NcbiAgICB8IFRTZXEgKGwnLCB4LCBfa2luZCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oU2VxQCBcIjtcbiAgICAgIHByaW50X3N0YXRlX2xzdCBjaCBsJyB4O1xuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAICVhKUBdXCIgcHAgeFxuICAgIHwgVEV4cCAobWFya3MsIHtkZWYgPSBFcHM7IF99KSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihFeHBAICVkQCAoJWEpQCAoZXBzKSlAXVwiIHkuaWQgTWFya3MucHBfbWFya3MgbWFya3NcbiAgICB8IFRFeHAgKG1hcmtzLCB4KSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihFeHBAICVkQCAoJWEpQCAlYSlAXVwiIHguaWQgTWFya3MucHBfbWFya3MgbWFya3MgcHAgeFxuXG4gIGFuZCBwcmludF9zdGF0ZV9sc3QgY2ggbCB5ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIigpXCJcbiAgICB8IGUgOjogcmVtIC0+XG4gICAgICBwcmludF9zdGF0ZV9yZWMgY2ggZSB5O1xuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gZSAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkAgfCBcIjtcbiAgICAgICAgICAgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeSlcbiAgICAgICAgcmVtXG5cbiAgbGV0IHBwIGNoIHQgPSBwcmludF9zdGF0ZV9sc3QgY2ggW3RdIHsgaWQgPSAwOyBkZWYgPSBFcHMgfVxuZW5kXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgaWR4OiBpZHhcbiAgICA7IGNhdGVnb3J5OiBDYXRlZ29yeS50XG4gICAgOyBkZXNjOiBFLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBzdGF0dXM6IHN0YXR1cyBvcHRpb25cbiAgICA7IGhhc2g6IGhhc2ggfVxuXG4gIGxldCBkdW1teSA9XG4gICAgeyBpZHggPSAtMVxuICAgIDsgY2F0ZWdvcnkgPSBDYXRlZ29yeS5kdW1teVxuICAgIDsgZGVzYyA9IFtdXG4gICAgOyBzdGF0dXMgPSBOb25lXG4gICAgOyBoYXNoID0gLTEgfVxuXG4gIGxldCBoYXNoIGlkeCBjYXQgZGVzYyA9XG4gICAgRS5oYXNoIGRlc2MgKGhhc2hfY29tYmluZSBpZHggKGhhc2hfY29tYmluZSAoQ2F0ZWdvcnkudG9faW50IGNhdCkgMCkpIGxhbmQgMHgzRkZGRkZGRlxuXG4gIGxldCBtayBpZHggY2F0IGRlc2MgPVxuICAgIHsgaWR4XG4gICAgOyBjYXRlZ29yeSA9IGNhdFxuICAgIDsgZGVzY1xuICAgIDsgc3RhdHVzID0gTm9uZVxuICAgIDsgaGFzaCA9IGhhc2ggaWR4IGNhdCBkZXNjfVxuXG4gIGxldCBjcmVhdGUgY2F0IGUgPSBtayAwIGNhdCBbRS5URXhwIChNYXJrcy5lbXB0eSwgZSldXG5cbiAgbGV0IGVxdWFsIHggeSA9XG4gICAgKHguaGFzaCA6IGludCkgPSB5Lmhhc2ggJiYgKHguaWR4IDogaW50KSA9IHkuaWR4ICYmXG4gICAgQ2F0ZWdvcnkuZXF1YWwgeC5jYXRlZ29yeSB5LmNhdGVnb3J5ICYmIEUuZXF1YWwgeC5kZXNjIHkuZGVzY1xuXG4gIGxldCBjb21wYXJlIHggeSA9XG4gICAgbGV0IGMgPSBjb21wYXJlICh4Lmhhc2ggOiBpbnQpIHkuaGFzaCBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgbGV0IGMgPSBDYXRlZ29yeS5jb21wYXJlIHguY2F0ZWdvcnkgeS5jYXRlZ29yeSBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgIGNvbXBhcmUgeC5kZXNjIHkuZGVzY1xuXG4gIHR5cGUgdCcgPSB0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZShcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHQnXG4gICAgICBsZXQgZXF1YWwgPSBlcXVhbFxuICAgICAgbGV0IGhhc2ggdCA9IHQuaGFzaFxuICAgIGVuZClcbmVuZFxuXG4oKioqKiBGaW5kIGEgZnJlZSBpbmRleCAqKioqKVxuXG50eXBlIHdvcmtpbmdfYXJlYSA9IGJvb2wgYXJyYXkgcmVmXG5cbmxldCBjcmVhdGVfd29ya2luZ19hcmVhICgpID0gcmVmIFt8IGZhbHNlIHxdXG5cbmxldCBpbmRleF9jb3VudCB3ID0gQXJyYXkubGVuZ3RoICF3XG5cbmxldCByZXNldF90YWJsZSBhID0gQXJyYXkuZmlsbCBhIDAgKEFycmF5Lmxlbmd0aCBhKSBmYWxzZVxuXG5sZXQgcmVjIG1hcmtfdXNlZF9pbmRpY2VzIHRibCA9XG4gIExpc3QuaXRlciAoZnVuY3Rpb25cbiAgICAgIHwgRS5UU2VxIChsLCBfLCBfKSAtPiBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgbFxuICAgICAgfCBFLlRFeHAgKG1hcmtzLCBfKVxuICAgICAgfCBFLlRNYXRjaCBtYXJrcyAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biAoXywgaSkgLT4gaWYgaSA+PSAwIHRoZW4gdGJsLihpKSA8LSB0cnVlKVxuICAgICAgICAgIG1hcmtzLk1hcmtzLm1hcmtzKVxuXG5sZXQgcmVjIGZpbmRfZnJlZSB0YmwgaWR4IGxlbiA9XG4gIGlmIGlkeCA9IGxlbiB8fCBub3QgdGJsLihpZHgpIHRoZW4gaWR4IGVsc2UgZmluZF9mcmVlIHRibCAoaWR4ICsgMSkgbGVuXG5cbmxldCBmcmVlX2luZGV4IHRibF9yZWYgbCA9XG4gIGxldCB0YmwgPSAhdGJsX3JlZiBpblxuICByZXNldF90YWJsZSB0Ymw7XG4gIG1hcmtfdXNlZF9pbmRpY2VzIHRibCBsO1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHRibCBpblxuICBsZXQgaWR4ID0gZmluZF9mcmVlIHRibCAwIGxlbiBpblxuICBpZiBpZHggPSBsZW4gdGhlbiB0YmxfcmVmIDo9IEFycmF5Lm1ha2UgKDIgKiBsZW4pIGZhbHNlO1xuICBpZHhcblxuKCoqKiogQ29tcHV0YXRpb24gb2YgdGhlIG5leHQgc3RhdGUgKioqKilcblxubGV0IHJlbW92ZV9tYXRjaGVzID0gTGlzdC5maWx0ZXIgKGZ1bmN0aW9uIEUuVE1hdGNoIF8gLT4gZmFsc2UgfCBfIC0+IHRydWUpXG5cbmxldCByZWMgc3BsaXRfYXRfbWF0Y2hfcmVjIGwnID0gZnVuY3Rpb25cbiAgfCBbXSAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IEUuVE1hdGNoIF8gOjogciAtPiAoTGlzdC5yZXYgbCcsIHJlbW92ZV9tYXRjaGVzIHIpXG4gIHwgeCA6OiByICAgICAgICAtPiBzcGxpdF9hdF9tYXRjaF9yZWMgKHggOjogbCcpIHJcblxubGV0IHNwbGl0X2F0X21hdGNoIGwgPSBzcGxpdF9hdF9tYXRjaF9yZWMgW10gbFxuXG5sZXQgcmVjIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgbCB5ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT5cbiAgICAoW10sIHByZXYpXG4gIHwgRS5UTWF0Y2ggXyBhcyB4IDo6IF8gLT4gKCogVHJ1bmNhdGUgYWZ0ZXIgZmlyc3QgbWF0Y2ggKilcbiAgICAoW3hdLCBwcmV2KVxuICB8IEUuVFNlcSAobCcsIHgsIGtpbmQpIDo6IHIgLT5cbiAgICBsZXQgKGwnJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiBsJyB4IGluXG4gICAgbGV0IChyJywgcHJldicnKSA9IHJlbW92ZV9kdXBsaWNhdGVzIHByZXYnIHIgeSBpblxuICAgIChFLnRzZXEga2luZCBsJycgeCByJywgcHJldicnKVxuICB8IEUuVEV4cCAoX21hcmtzLCB7ZGVmID0gRXBzOyBffSkgYXMgZSA6OiByIC0+XG4gICAgaWYgTGlzdC5tZW1xIHkuaWQgcHJldiB0aGVuXG4gICAgICByZW1vdmVfZHVwbGljYXRlcyBwcmV2IHIgeVxuICAgIGVsc2VcbiAgICAgIGxldCAocicsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzICh5LmlkIDo6IHByZXYpIHIgeSBpblxuICAgICAgKGUgOjogcicsIHByZXYnKVxuICB8IEUuVEV4cCAoX21hcmtzLCB4KSBhcyBlIDo6IHIgLT5cbiAgICBpZiBMaXN0Lm1lbXEgeC5pZCBwcmV2IHRoZW5cbiAgICAgIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgciB5XG4gICAgZWxzZVxuICAgICAgbGV0IChyJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgKHguaWQgOjogcHJldikgciB5IGluXG4gICAgICAoZSA6OiByJywgcHJldicpXG5cbmxldCByZWMgc2V0X2lkeCBpZHggPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgW11cbiAgfCBFLlRNYXRjaCBtYXJrcyA6OiByIC0+XG4gICAgRS5UTWF0Y2ggKE1hcmtzLm1hcmtzX3NldF9pZHggbWFya3MgaWR4KSA6OiBzZXRfaWR4IGlkeCByXG4gIHwgRS5UU2VxIChsJywgeCwga2luZCkgOjogciAtPlxuICAgIEUuVFNlcSAoc2V0X2lkeCBpZHggbCcsIHgsIGtpbmQpIDo6IHNldF9pZHggaWR4IHJcbiAgfCBFLlRFeHAgKG1hcmtzLCB4KSA6OiByIC0+XG4gICAgRS5URXhwICgoTWFya3MubWFya3Nfc2V0X2lkeCBtYXJrcyBpZHgpLCB4KSA6OiBzZXRfaWR4IGlkeCByXG5cbmxldCBmaWx0ZXJfbWFya3MgYiBlIG1hcmtzID1cbiAge21hcmtzIHdpdGggTWFya3MubWFya3MgPSBMaXN0LmZpbHRlciAoZnVuIChpLCBfKSAtPiBpIDwgYiB8fCBpID4gZSkgbWFya3MuTWFya3MubWFya3MgfVxuXG5sZXQgcmVjIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHggcmVtID1cbiAgKCpGb3JtYXQuZXByaW50ZiBcIiVkQC5cIiB4LmlkOyopXG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgICBDc3QgcyAtPlxuICAgIGlmIENzZXQubWVtIGMgcyB0aGVuIEUudGV4cCBtYXJrcyBlcHNfZXhwciA6OiByZW0gZWxzZSByZW1cbiAgfCBBbHQgbCAtPlxuICAgIGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtXG4gIHwgU2VxIChraW5kLCB5LCB6KSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeScgeiByZW1cbiAgfCBSZXAgKHJlcF9raW5kLCBraW5kLCB5KSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBsZXQgKHknJywgbWFya3MnKSA9XG4gICAgICBtYXRjaFxuICAgICAgICBmaXJzdFxuICAgICAgICAgIChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKSB5J1xuICAgICAgd2l0aFxuICAgICAgICBOb25lICAgICAgICAtPiAoeScsIG1hcmtzKVxuICAgICAgfCBTb21lIG1hcmtzJyAtPiAocmVtb3ZlX21hdGNoZXMgeScsIG1hcmtzJylcbiAgICBpblxuICAgIGJlZ2luIG1hdGNoIHJlcF9raW5kIHdpdGhcbiAgICAgICAgYEdyZWVkeSAgICAgLT4gRS50c2VxIGtpbmQgeScnIHggKEUuVE1hdGNoIG1hcmtzJyA6OiByZW0pXG4gICAgICB8IGBOb25fZ3JlZWR5IC0+IEUuVE1hdGNoIG1hcmtzIDo6IEUudHNlcSBraW5kIHknJyB4IHJlbVxuICAgIGVuZFxuICB8IEVwcyAtPlxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IE1hcmsgaSAtPlxuICAgIGxldCBtYXJrcyA9IHsgbWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IChpLCAtMSkgOjogTGlzdC5yZW1vdmVfYXNzcSBpIG1hcmtzLk1hcmtzLm1hcmtzIH0gaW5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBQbWFyayBpIC0+XG4gICAgbGV0IG1hcmtzID0geyBtYXJrcyB3aXRoIE1hcmtzLnBtYXJrcyA9IFBtYXJrLlNldC5hZGQgaSBtYXJrcy5NYXJrcy5wbWFya3MgfSBpblxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIEUuVE1hdGNoIChmaWx0ZXJfbWFya3MgYiBlIG1hcmtzKSA6OiByZW1cbiAgfCBCZWZvcmUgY2F0JycgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgbmV4dF9jYXQgY2F0JycgdGhlbiBFLlRNYXRjaCBtYXJrcyA6OiByZW0gZWxzZSByZW1cbiAgfCBBZnRlciBjYXQnJyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBwcmV2X2NhdCBjYXQnJyB0aGVuIEUuVE1hdGNoIG1hcmtzIDo6IHJlbSBlbHNlIHJlbVxuXG5hbmQgZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+XG4gICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeVxuICAgICAgKGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHIgcmVtKVxuXG5hbmQgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHkgeiByZW0gPVxuICBtYXRjaFxuICAgIGZpcnN0IChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKSB5XG4gIHdpdGhcbiAgICBOb25lIC0+XG4gICAgRS50c2VxIGtpbmQgeSB6IHJlbVxuICB8IFNvbWUgbWFya3MgLT5cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgIGBMb25nZXN0IC0+XG4gICAgICBFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgelxuICAgICAgICAoZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeiByZW0pXG4gICAgfCBgU2hvcnRlc3QgLT5cbiAgICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHpcbiAgICAgICAgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IHJlbSlcbiAgICB8IGBGaXJzdCAtPlxuICAgICAgbGV0ICh5JywgeScnKSA9IHNwbGl0X2F0X21hdGNoIHkgaW5cbiAgICAgIEUudHNlcSBraW5kIHknIHpcbiAgICAgICAgKGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHogKEUudHNlcSBraW5kIHknJyB6IHJlbSkpXG5cbmxldCByZWMgZGVsdGFfMyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeCByZW0gPVxuICBtYXRjaCB4IHdpdGhcbiAgICBFLlRTZXEgKHksIHosIGtpbmQpIC0+XG4gICAgbGV0IHknID0gZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5JyB6IHJlbVxuICB8IEUuVEV4cCAobWFya3MsIGUpIC0+XG4gICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgZSByZW1cbiAgfCBFLlRNYXRjaCBfIC0+XG4gICAgeCA6OiByZW1cblxuYW5kIGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPlxuICAgIGRlbHRhXzMgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHlcbiAgICAgIChkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCByIHJlbSlcblxubGV0IGRlbHRhIHRibF9yZWYgbmV4dF9jYXQgY2hhciBzdCA9XG4gIGxldCBwcmV2X2NhdCA9IHN0LlN0YXRlLmNhdGVnb3J5IGluXG4gIGxldCAoZXhwcicsIF8pID1cbiAgICByZW1vdmVfZHVwbGljYXRlcyBbXVxuICAgICAgKGRlbHRhXzQgY2hhciB+bmV4dF9jYXQgfnByZXZfY2F0IHN0LlN0YXRlLmRlc2MgW10pXG4gICAgICBlcHNfZXhwciBpblxuICBsZXQgaWR4ID0gZnJlZV9pbmRleCB0YmxfcmVmIGV4cHInIGluXG4gIGxldCBleHByJycgPSBzZXRfaWR4IGlkeCBleHByJyBpblxuICBTdGF0ZS5tayBpZHggbmV4dF9jYXQgZXhwcicnXG5cbigqKioqKVxuXG5sZXQgcmVjIHJlZF90ciA9IGZ1bmN0aW9uXG4gIHwgW10gfCBbX10gYXMgbCAtPlxuICAgIGxcbiAgfCAoKHMxLCBzdDEpIGFzIHRyMSkgOjogKChzMiwgc3QyKSBhcyB0cjIpIDo6IHJlbSAtPlxuICAgIGlmIFN0YXRlLmVxdWFsIHN0MSBzdDIgdGhlblxuICAgICAgcmVkX3RyICgoQ3NldC51bmlvbiBzMSBzMiwgc3QxKSA6OiByZW0pXG4gICAgZWxzZVxuICAgICAgdHIxIDo6IHJlZF90ciAodHIyIDo6IHJlbSlcblxubGV0IHNpbXBsX3RyIGwgPVxuICBMaXN0LnNvcnRcbiAgICAoZnVuIChzMSwgXykgKHMyLCBfKSAtPiBjb21wYXJlIHMxIHMyKVxuICAgIChyZWRfdHIgKExpc3Quc29ydCAoZnVuIChfLCBzdDEpIChfLCBzdDIpIC0+IFN0YXRlLmNvbXBhcmUgc3QxIHN0MikgbCkpXG5cbigqKioqKVxuXG5sZXQgcHJlcGVuZF9kZXJpdiA9IExpc3QuZm9sZF9yaWdodCAoZnVuIChzLCB4KSBsIC0+IENzZXQucHJlcGVuZCBzIHggbClcblxubGV0IHJlYyByZXN0cmljdCBzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChzJywgeCcpIDo6IHJlbSAtPlxuICAgIGxldCBzJycgPSBDc2V0LmludGVyIHMgcycgaW5cbiAgICBpZiBDc2V0LmlzX2VtcHR5IHMnJ1xuICAgIHRoZW4gcmVzdHJpY3QgcyByZW1cbiAgICBlbHNlIChzJycsIHgnKSA6OiByZXN0cmljdCBzIHJlbVxuXG5sZXQgcmVjIHJlbW92ZV9tYXJrcyBiIGUgcmVtID1cbiAgaWYgYiA+IGUgdGhlbiByZW0gZWxzZSByZW1vdmVfbWFya3MgYiAoZSAtIDEpICgoZSwgLTIpIDo6IHJlbSlcblxubGV0IHJlYyBwcmVwZW5kX21hcmtzX2V4cHIgbSA9IGZ1bmN0aW9uXG4gIHwgRS5UU2VxIChsLCBlJywgcykgLT4gRS5UU2VxIChwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0gbCwgZScsIHMpXG4gIHwgRS5URXhwIChtJywgZScpICAgLT4gRS5URXhwIChNYXJrcy5tZXJnZSBtIG0nLCBlJylcbiAgfCBFLlRNYXRjaCBtJyAgICAgICAtPiBFLlRNYXRjaCAoTWFya3MubWVyZ2UgbSBtJylcblxuYW5kIHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSBsID1cbiAgTGlzdC5tYXAgKHByZXBlbmRfbWFya3NfZXhwciBtKSBsXG5cbmxldCBwcmVwZW5kX21hcmtzIG0gPVxuICBMaXN0Lm1hcCAoZnVuIChzLCB4KSAtPiAocywgcHJlcGVuZF9tYXJrc19leHByX2xzdCBtIHgpKVxuXG5sZXQgcmVjIGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHggcmVtID1cbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICB8IENzdCBzIC0+XG4gICAgQ3NldC5wcmVwZW5kIHMgW0UudGV4cCBtYXJrcyBlcHNfZXhwcl0gcmVtXG4gIHwgQWx0IGwgLT5cbiAgICBkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBsIHJlbVxuICB8IFNlcSAoa2luZCwgeSwgeikgLT5cbiAgICBsZXQgeScgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHknIHogcmVtXG4gIHwgUmVwIChyZXBfa2luZCwga2luZCwgeSkgLT5cbiAgICBsZXQgeScgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB6KSByZW0gLT5cbiAgICAgICAgIGxldCAoeicsIG1hcmtzJykgPVxuICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgIGZpcnN0XG4gICAgICAgICAgICAgICAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSlcbiAgICAgICAgICAgICAgIHpcbiAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIE5vbmUgICAgICAgIC0+ICh6LCBtYXJrcylcbiAgICAgICAgICAgfCBTb21lIG1hcmtzJyAtPiAocmVtb3ZlX21hdGNoZXMgeiwgbWFya3MnKVxuICAgICAgICAgaW5cbiAgICAgICAgIENzZXQucHJlcGVuZCBzXG4gICAgICAgICAgIChtYXRjaCByZXBfa2luZCB3aXRoXG4gICAgICAgICAgICAgIGBHcmVlZHkgICAgIC0+IEUudHNlcSBraW5kIHonIHggW0UuVE1hdGNoIG1hcmtzJ11cbiAgICAgICAgICAgIHwgYE5vbl9ncmVlZHkgLT4gRS5UTWF0Y2ggbWFya3MgOjogRS50c2VxIGtpbmQgeicgeCBbXSlcbiAgICAgICAgICAgcmVtKVxuICAgICAgeScgcmVtXG4gIHwgRXBzIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IE1hcmsgaSAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKChpLCAtMSkgOjogTGlzdC5yZW1vdmVfYXNzcSBpIG1hcmtzLk1hcmtzLm1hcmtzKX1dIHJlbVxuICB8IFBtYXJrIF8gLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFyc1xuICAgICAgW0UuVE1hdGNoIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKHJlbW92ZV9tYXJrcyBiIGUgKGZpbHRlcl9tYXJrcyBiIGUgbWFya3MpLk1hcmtzLm1hcmtzKX1dIHJlbVxuICB8IEJlZm9yZSBjYXQnIC0+XG4gICAgQ3NldC5wcmVwZW5kIChMaXN0LmFzc3EgY2F0JyBjYXRlZ29yaWVzKSBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IEFmdGVyIGNhdCcgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgY2F0IGNhdCcgdGhlbiBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtIGVsc2UgcmVtXG5cbmFuZCBkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT4gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeVxuICAgICAgICAgICAgICAgIChkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCByIHJlbSlcblxuYW5kIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5IHogcmVtID1cbiAgaWZcbiAgICBMaXN0LmV4aXN0c1xuICAgICAgKGZ1biAoX3MsIHhsKSAtPlxuICAgICAgICAgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIEUuVE1hdGNoIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIHhsKVxuICAgICAgeVxuICB0aGVuXG4gICAgbGV0IHonID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBNYXJrcy5lbXB0eSBjYXQgeiBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeSkgcmVtIC0+XG4gICAgICAgICBtYXRjaFxuICAgICAgICAgICBmaXJzdCAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSlcbiAgICAgICAgICAgICB5XG4gICAgICAgICB3aXRoXG4gICAgICAgICAgIE5vbmUgLT5cbiAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHkgeiBbXSkgcmVtXG4gICAgICAgICB8IFNvbWUgbWFya3MgLT5cbiAgICAgICAgICAgbGV0IHonJyA9IHByZXBlbmRfbWFya3MgbWFya3MgeicgaW5cbiAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgICAgYExvbmdlc3QgLT5cbiAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogW10pIChcbiAgICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSByZW0pXG4gICAgICAgICAgIHwgYFNob3J0ZXN0IC0+XG4gICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIChcbiAgICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiBbXSkgcmVtKVxuICAgICAgICAgICB8IGBGaXJzdCAtPlxuICAgICAgICAgICAgIGxldCAoeScsIHknJykgPSBzcGxpdF9hdF9tYXRjaCB5IGluXG4gICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHknIHogW10pIChcbiAgICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSAoXG4gICAgICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5JycgeiBbXSkgcmVtKSkpXG4gICAgICB5IHJlbVxuICBlbHNlXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB4bCkgcmVtIC0+IENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB4bCB6IFtdKSByZW0pIHkgcmVtXG5cbmxldCByZWMgZGVyaXZfMyBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeCByZW0gPVxuICBtYXRjaCB4IHdpdGhcbiAgICBFLlRTZXEgKHksIHosIGtpbmQpIC0+XG4gICAgbGV0IHknID0gZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5JyB6IHJlbVxuICB8IEUuVEV4cCAobWFya3MsIGUpIC0+XG4gICAgZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgZSByZW1cbiAgfCBFLlRNYXRjaCBfIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbeF0gcmVtXG5cbmFuZCBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT4gZGVyaXZfMyBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeVxuICAgICAgICAgICAgICAgIChkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCByIHJlbSlcblxubGV0IGRlcml2IHRibF9yZWYgYWxsX2NoYXJzIGNhdGVnb3JpZXMgc3QgPVxuICBsZXQgZGVyID0gZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBzdC5TdGF0ZS5jYXRlZ29yeSBzdC5TdGF0ZS5kZXNjXG4gICAgICBbKGFsbF9jaGFycywgW10pXSBpblxuICBzaW1wbF90ciAoXG4gICAgTGlzdC5mb2xkX3JpZ2h0IChmdW4gKHMsIGV4cHIpIHJlbSAtPlxuICAgICAgICBsZXQgKGV4cHInLCBfKSA9IHJlbW92ZV9kdXBsaWNhdGVzIFtdIGV4cHIgZXBzX2V4cHIgaW5cbigqXG5Gb3JtYXQuZXByaW50ZiBcIkBbPDM+QFslYUBdOiAlYSAvICVhQF1ALlwiIENzZXQucHJpbnQgcyBwcmludF9zdGF0ZSBleHByIHByaW50X3N0YXRlIGV4cHInO1xuKilcbiAgICAgICAgbGV0IGlkeCA9IGZyZWVfaW5kZXggdGJsX3JlZiBleHByJyBpblxuICAgICAgICBsZXQgZXhwcicnID0gc2V0X2lkeCBpZHggZXhwcicgaW5cbiAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IChmdW4gKGNhdCcsIHMnKSByZW0gLT5cbiAgICAgICAgICAgIGxldCBzJycgPSBDc2V0LmludGVyIHMgcycgaW5cbiAgICAgICAgICAgIGlmIENzZXQuaXNfZW1wdHkgcycnXG4gICAgICAgICAgICB0aGVuIHJlbVxuICAgICAgICAgICAgZWxzZSAocycnLCBTdGF0ZS5tayBpZHggY2F0JyBleHByJycpIDo6IHJlbSlcbiAgICAgICAgICBjYXRlZ29yaWVzIHJlbSkgZGVyIFtdKVxuXG4oKioqKilcblxubGV0IGZsYXR0ZW5fbWF0Y2ggbSA9XG4gIGxldCBtYSA9IExpc3QuZm9sZF9sZWZ0IChmdW4gbWEgKGksIF8pIC0+IG1heCBtYSBpKSAoLTEpIG0gaW5cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgKG1hICsgMSkgKC0xKSBpblxuICBMaXN0Lml0ZXIgKGZ1biAoaSwgdikgLT4gcmVzLihpKSA8LSB2KSBtO1xuICByZXNcblxubGV0IHN0YXR1cyBzID1cbiAgbWF0Y2ggcy5TdGF0ZS5zdGF0dXMgd2l0aFxuICAgIFNvbWUgc3QgLT5cbiAgICBzdFxuICB8IE5vbmUgLT5cbiAgICBsZXQgc3QgPVxuICAgICAgbWF0Y2ggcy5TdGF0ZS5kZXNjIHdpdGhcbiAgICAgICAgW10gICAgICAgICAgICAgIC0+IEZhaWxlZFxuICAgICAgfCBFLlRNYXRjaCBtIDo6IF8gLT4gTWF0Y2ggKGZsYXR0ZW5fbWF0Y2ggbS5NYXJrcy5tYXJrcywgbS5NYXJrcy5wbWFya3MpXG4gICAgICB8IF8gICAgICAgICAgICAgICAtPiBSdW5uaW5nXG4gICAgaW5cbiAgICBzLlN0YXRlLnN0YXR1cyA8LSBTb21lIHN0O1xuICAgIHN0XG4iLCIoKiBJbiByZWFsaXR5LCB0aGlzIGNhbiByZWFsbHkgYmUgcmVwcmVzZW50ZWQgYXMgYSBib29sIGFycmF5LlxuXG4gICBUaGUgcmVwcmVzZW50YXRpb24gaXMgYmVzdCB0aG91Z2h0IG9mIGFzIGEgbGlzdCBvZiBhbGwgY2hhcnMgYWxvbmcgd2l0aCBhXG4gICBmbGFnOlxuXG4gICAoYSwgMCksIChiLCAxKSwgKGMsIDApLCAoZCwgMCksIC4uLlxuXG4gICBjaGFyYWN0ZXJzIGJlbG9uZ2luZyB0byB0aGUgc2FtZSBjb2xvciBhcmUgcmVwcmVzZW50ZWQgYnkgc2VxdW5jZXMgb2ZcbiAgIGNoYXJhY3RlcnMgd2l0aCB0aGUgZmxhZyBzZXQgdG8gMC5cbiopXG5cbnR5cGUgdCA9IEJ5dGVzLnRcblxubGV0IG1ha2UgKCkgPSBCeXRlcy5tYWtlIDI1NyAnXFwwMDAnXG5cbmxldCBmbGF0dGVuIGNtID1cbiAgbGV0IGMgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGxldCBjb2xvcl9yZXByID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBsZXQgdiA9IHJlZiAwIGluXG4gIEJ5dGVzLnNldCBjIDAgJ1xcMDAwJztcbiAgQnl0ZXMuc2V0IGNvbG9yX3JlcHIgMCAnXFwwMDAnO1xuICBmb3IgaSA9IDEgdG8gMjU1IGRvXG4gICAgaWYgQnl0ZXMuZ2V0IGNtIGkgPD4gJ1xcMDAwJyB0aGVuIGluY3IgdjtcbiAgICBCeXRlcy5zZXQgYyBpIChDaGFyLmNociAhdik7XG4gICAgQnl0ZXMuc2V0IGNvbG9yX3JlcHIgIXYgKENoYXIuY2hyIGkpXG4gIGRvbmU7XG4gIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGMsIEJ5dGVzLnN1Yl9zdHJpbmcgY29sb3JfcmVwciAwICghdiArIDEpLCAhdiArIDEpXG5cbigqIG1hcmsgYWxsIHRoZSBlbmRwb2ludHMgb2YgdGhlIGludGVydmFscyBvZiB0aGUgY2hhciBzZXQgd2l0aCB0aGUgMSBieXRlICopXG5sZXQgc3BsaXQgcyBjbSA9XG4gIENzZXQuaXRlciBzIH5mOihmdW4gaSBqIC0+XG4gICAgICBCeXRlcy5zZXQgY20gaSAnXFwwMDEnO1xuICAgICAgQnl0ZXMuc2V0IGNtIChqICsgMSkgJ1xcMDAxJztcbiAgICApXG4iLCIoKiBSZXN1bHQgb2YgYSBzdWNjZXNzZnVsIG1hdGNoLiAqKVxudHlwZSB0ID1cbiAgeyBzIDogc3RyaW5nXG4gIDsgbWFya3MgOiBBdXRvbWF0YS5tYXJrX2luZm9zXG4gIDsgcG1hcmtzIDogUG1hcmsuU2V0LnRcbiAgOyBncG9zIDogaW50IGFycmF5XG4gIDsgZ2NvdW50IDogaW50XG4gIH1cblxubGV0IG9mZnNldCB0IGkgPVxuICBpZiAyICogaSArIDEgPj0gQXJyYXkubGVuZ3RoIHQubWFya3MgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICBpZiBtMSA9IC0xIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gIChwMSwgcDIpXG5cbmxldCBnZXQgdCBpID1cbiAgbGV0IChwMSwgcDIpID0gb2Zmc2V0IHQgaSBpblxuICBTdHJpbmcuc3ViIHQucyBwMSAocDIgLSBwMSlcblxubGV0IHN0YXJ0IHN1YnMgaSA9IGZzdCAob2Zmc2V0IHN1YnMgaSlcblxubGV0IHN0b3Agc3VicyBpID0gc25kIChvZmZzZXQgc3VicyBpKVxuXG5sZXQgdGVzdCB0IGkgPVxuICBpZiAyICogaSA+PSBBcnJheS5sZW5ndGggdC5tYXJrcyB0aGVuXG4gICAgZmFsc2VcbiAgZWxzZVxuICAgIGxldCBpZHggPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZHggPD4gLTFcblxubGV0IGdldF9vcHQgdCBpID1cbiAgaWYgdGVzdCB0IGlcbiAgdGhlbiBTb21lIChnZXQgdCBpKVxuICBlbHNlIE5vbmVcblxubGV0IGR1bW15X29mZnNldCA9ICgtMSwgLTEpXG5cbmxldCBhbGxfb2Zmc2V0IHQgPVxuICBsZXQgcmVzID0gQXJyYXkubWFrZSB0Lmdjb3VudCBkdW1teV9vZmZzZXQgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0Lm1hcmtzIC8gMiAtIDEgZG9cbiAgICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZiBtMSA8PiAtMSB0aGVuIGJlZ2luXG4gICAgICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICAgICAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAgICAgcmVzLihpKSA8LSAocDEsIHAyKVxuICAgIGVuZFxuICBkb25lO1xuICByZXNcblxubGV0IGR1bW15X3N0cmluZyA9IFwiXCJcblxubGV0IGFsbCB0ID1cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgdC5nY291bnQgZHVtbXlfc3RyaW5nIGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC5tYXJrcyAvIDIgLSAxIGRvXG4gICAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWYgbTEgPD4gLTEgdGhlbiBiZWdpblxuICAgICAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgICAgIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgICAgIHJlcy4oaSkgPC0gU3RyaW5nLnN1YiB0LnMgcDEgKHAyIC0gcDEpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgcHAgZm10IHQgPVxuICBsZXQgbWF0Y2hlcyA9XG4gICAgbGV0IG9mZnNldHMgPSBhbGxfb2Zmc2V0IHQgaW5cbiAgICBsZXQgc3RycyA9IGFsbCB0IGluXG4gICAgQXJyYXkudG9fbGlzdCAoXG4gICAgICBBcnJheS5pbml0IChBcnJheS5sZW5ndGggc3RycykgKGZ1biBpIC0+IHN0cnMuKGkpLCBvZmZzZXRzLihpKSlcbiAgICApIGluXG4gIGxldCBvcGVuIEZtdCBpblxuICBsZXQgcHBfbWF0Y2ggZm10IChzdHIsIChzdGFydCwgc3RvcCkpID1cbiAgICBmcHJpbnRmIGZtdCBcIkBbKCVzICglZCAlZCkpQF1cIiBzdHIgc3RhcnQgc3RvcCBpblxuICBzZXhwIGZtdCBcIkdyb3VwXCIgKGxpc3QgcHBfbWF0Y2gpIG1hdGNoZXNcblxubGV0IG5iX2dyb3VwcyB0ID0gdC5nY291bnRcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbmxldCByZWMgaXRlciBuIGYgdiA9IGlmIG4gPSAwIHRoZW4gdiBlbHNlIGl0ZXIgKG4gLSAxKSBmIChmIHYpXG5cbigqKioqKVxuXG5sZXQgdW5rbm93biA9IC0yXG5sZXQgYnJlYWsgPSAtM1xuXG50eXBlIG1hdGNoX2luZm8gPVxuICB8IE1hdGNoIG9mIEdyb3VwLnRcbiAgfCBGYWlsZWRcbiAgfCBSdW5uaW5nIG9mIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSA6IGludCB9XG5cbnR5cGUgc3RhdGUgPVxuICB7IGlkeCA6IGludDtcbiAgICAoKiBJbmRleCBvZiB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgcG9zaXRpb24gdGFibGUuXG4gICAgICAgTm90IHlldCBjb21wdXRlZCB0cmFuc2l0aW9ucyBwb2ludCB0byBhIGR1bW15IHN0YXRlIHdoZXJlXG4gICAgICAgW2lkeF0gaXMgc2V0IHRvIFt1bmtub3duXTtcbiAgICAgICBJZiBbaWR4XSBpcyBzZXQgdG8gW2JyZWFrXSBmb3Igc3RhdGVzIHRoYXQgZWl0aGVyIGFsd2F5c1xuICAgICAgIHN1Y2NlZWQgb3IgYWx3YXlzIGZhaWwuICopXG4gICAgcmVhbF9pZHggOiBpbnQ7XG4gICAgKCogVGhlIHJlYWwgaW5kZXgsIGluIGNhc2UgW2lkeF0gaXMgc2V0IHRvIFticmVha10gKilcbiAgICBuZXh0IDogc3RhdGUgYXJyYXk7XG4gICAgKCogVHJhbnNpdGlvbiB0YWJsZSwgaW5kZXhlZCBieSBjb2xvciAqKVxuICAgIG11dGFibGUgZmluYWwgOlxuICAgICAgKENhdGVnb3J5LnQgKlxuICAgICAgIChBdXRvbWF0YS5pZHggKiBBdXRvbWF0YS5zdGF0dXMpKSBsaXN0O1xuICAgICgqIE1hcHBpbmcgZnJvbSB0aGUgY2F0ZWdvcnkgb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvXG4gICAgICAgLSB0aGUgaW5kZXggd2hlcmUgdGhlIG5leHQgcG9zaXRpb24gc2hvdWxkIGJlIHNhdmVkXG4gICAgICAgLSBwb3NzaWJseSwgdGhlIGxpc3Qgb2YgbWFya3MgKGFuZCB0aGUgY29ycmVzcG9uZGluZyBpbmRpY2VzKVxuICAgICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgYmVzdCBtYXRjaCAqKVxuICAgIGRlc2MgOiBBdXRvbWF0YS5TdGF0ZS50XG4gICAgKCogRGVzY3JpcHRpb24gb2YgdGhpcyBzdGF0ZSBvZiB0aGUgYXV0b21hdGEgKikgfVxuXG4oKiBBdXRvbWF0YSAoY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uKSAqKVxudHlwZSByZSA9XG4gIHsgaW5pdGlhbCA6IEF1dG9tYXRhLmV4cHI7XG4gICAgKCogVGhlIHdob2xlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKVxuICAgIG11dGFibGUgaW5pdGlhbF9zdGF0ZXMgOiAoQ2F0ZWdvcnkudCAqIHN0YXRlKSBsaXN0O1xuICAgICgqIEluaXRpYWwgc3RhdGVzLCBpbmRleGVkIGJ5IGluaXRpYWwgY2F0ZWdvcnkgKilcbiAgICBjb2xvcnMgOiBzdHJpbmc7XG4gICAgKCogQ29sb3IgdGFibGUgKilcbiAgICBjb2xvcl9yZXByIDogc3RyaW5nO1xuICAgICgqIFRhYmxlIGZyb20gY29sb3JzIHRvIG9uZSBjaGFyYWN0ZXIgb2YgdGhpcyBjb2xvciAqKVxuICAgIG5jb2xvciA6IGludDtcbiAgICAoKiBOdW1iZXIgb2YgY29sb3JzLiAqKVxuICAgIGxubCA6IGludDtcbiAgICAoKiBDb2xvciBvZiB0aGUgbGFzdCBuZXdsaW5lLiAtMSBpZiB1bm5lY2Vzc2FyeSAqKVxuICAgIHRibCA6IEF1dG9tYXRhLndvcmtpbmdfYXJlYTtcbiAgICAoKiBUZW1wb3JhcnkgdGFibGUgdXNlZCB0byBjb21wdXRlIHRoZSBmaXJzdCBhdmFpbGFibGUgaW5kZXhcbiAgICAgICB3aGVuIGNvbXB1dGluZyBhIG5ldyBzdGF0ZSAqKVxuICAgIHN0YXRlcyA6IHN0YXRlIEF1dG9tYXRhLlN0YXRlLlRhYmxlLnQ7XG4gICAgKCogU3RhdGVzIG9mIHRoZSBkZXRlcm1pbmlzdGljIGF1dG9tYXRhICopXG4gICAgZ3JvdXBfbmFtZXMgOiAoc3RyaW5nICogaW50KSBsaXN0O1xuICAgICgqIE5hbWVkIGdyb3VwcyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uICopXG4gICAgZ3JvdXBfY291bnQgOiBpbnRcbiAgICAoKiBOdW1iZXIgb2YgZ3JvdXBzIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gKikgfVxuXG5sZXQgcHBfcmUgY2ggcmUgPSBBdXRvbWF0YS5wcCBjaCByZS5pbml0aWFsXG5cbmxldCBwcmludF9yZSA9IHBwX3JlXG5cbmxldCBncm91cF9jb3VudCByZSA9IHJlLmdyb3VwX2NvdW50XG5cbmxldCBncm91cF9uYW1lcyByZSA9IHJlLmdyb3VwX25hbWVzXG5cbigqIEluZm9ybWF0aW9uIHVzZWQgZHVyaW5nIG1hdGNoaW5nICopXG50eXBlIGluZm8gPVxuICB7IHJlIDogcmU7XG4gICAgKCogVGhlIGF1dG9tYXRhICopXG4gICAgY29sb3JzIDogc3RyaW5nO1xuICAgICgqIENvbG9yIHRhYmxlIChbeC5jb2xvcnMgPSB4LnJlLmNvbG9yc10pXG4gICAgICAgU2hvcnRjdXQgdXNlZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyAqKVxuICAgIG11dGFibGUgcG9zaXRpb25zIDogaW50IGFycmF5O1xuICAgICgqIEFycmF5IG9mIG1hcmsgcG9zaXRpb25zXG4gICAgICAgVGhlIG1hcmsgYXJlIG9mZiBieSBvbmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKilcbiAgICBwb3MgOiBpbnQ7XG4gICAgKCogUG9zaXRpb24gd2hlcmUgdGhlIG1hdGNoIGlzIHN0YXJ0ZWQgKilcbiAgICBsYXN0IDogaW50XG4gICAgKCogUG9zaXRpb24gd2hlcmUgdGhlIG1hdGNoIHNob3VsZCBzdG9wICopIH1cblxuXG4oKioqKilcblxubGV0IGNhdGVnb3J5IHJlIH5jb2xvciA9XG4gIGlmIGNvbG9yID0gLTEgdGhlblxuICAgIENhdGVnb3J5LmluZXhpc3RhbnRcbiAgICAoKiBTcGVjaWFsIGNhdGVnb3J5IGZvciB0aGUgbGFzdCBuZXdsaW5lICopXG4gIGVsc2UgaWYgY29sb3IgPSByZS5sbmwgdGhlblxuICAgIENhdGVnb3J5LihsYXN0bmV3bGluZSArKyBuZXdsaW5lICsrIG5vdF9sZXR0ZXIpXG4gIGVsc2VcbiAgICBDYXRlZ29yeS5mcm9tX2NoYXIgKHJlLmNvbG9yX3JlcHIuW2NvbG9yXSlcblxuKCoqKiopXG5cbmxldCBkdW1teV9uZXh0ID0gW3x8XVxuXG5sZXQgdW5rbm93bl9zdGF0ZSA9XG4gIHsgaWR4ID0gdW5rbm93bjsgcmVhbF9pZHggPSAwO1xuICAgIG5leHQgPSBkdW1teV9uZXh0OyBmaW5hbCA9IFtdO1xuICAgIGRlc2MgPSBBdXRvbWF0YS5TdGF0ZS5kdW1teSB9XG5cbmxldCBta19zdGF0ZSBuY29sIGRlc2MgPVxuICBsZXQgYnJlYWtfc3RhdGUgPVxuICAgIG1hdGNoIEF1dG9tYXRhLnN0YXR1cyBkZXNjIHdpdGhcbiAgICB8IEF1dG9tYXRhLlJ1bm5pbmcgLT4gZmFsc2VcbiAgICB8IEF1dG9tYXRhLkZhaWxlZFxuICAgIHwgQXV0b21hdGEuTWF0Y2ggXyAtPiB0cnVlXG4gIGluXG4gIHsgaWR4ID0gaWYgYnJlYWtfc3RhdGUgdGhlbiBicmVhayBlbHNlIGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4O1xuICAgIHJlYWxfaWR4ID0gZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHg7XG4gICAgbmV4dCA9IGlmIGJyZWFrX3N0YXRlIHRoZW4gZHVtbXlfbmV4dCBlbHNlIEFycmF5Lm1ha2UgbmNvbCB1bmtub3duX3N0YXRlO1xuICAgIGZpbmFsID0gW107XG4gICAgZGVzYyB9XG5cbmxldCBmaW5kX3N0YXRlIHJlIGRlc2MgPVxuICB0cnlcbiAgICBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5maW5kIHJlLnN0YXRlcyBkZXNjXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0ID0gbWtfc3RhdGUgcmUubmNvbG9yIGRlc2MgaW5cbiAgICBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5hZGQgcmUuc3RhdGVzIGRlc2Mgc3Q7XG4gICAgc3RcblxuKCoqKiogTWF0Y2ggd2l0aCBtYXJrcyAqKioqKVxuXG5sZXQgZGVsdGEgaW5mbyBjYXQgfmNvbG9yIHN0ID1cbiAgbGV0IGRlc2MgPSBBdXRvbWF0YS5kZWx0YSBpbmZvLnJlLnRibCBjYXQgY29sb3Igc3QuZGVzYyBpblxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGluZm8ucG9zaXRpb25zIGluXG4gIGlmIGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4ID0gbGVuICYmIGxlbiA+IDAgdGhlbiBiZWdpblxuICAgIGxldCBwb3MgPSBpbmZvLnBvc2l0aW9ucyBpblxuICAgIGluZm8ucG9zaXRpb25zIDwtIEFycmF5Lm1ha2UgKDIgKiBsZW4pIDA7XG4gICAgQXJyYXkuYmxpdCBwb3MgMCBpbmZvLnBvc2l0aW9ucyAwIGxlblxuICBlbmQ7XG4gIGRlc2NcblxubGV0IHZhbGlkYXRlIGluZm8gKHM6c3RyaW5nKSB+cG9zIHN0ID1cbiAgbGV0IGNvbG9yID0gQ2hhci5jb2RlIChpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICBsZXQgY2F0ID0gY2F0ZWdvcnkgaW5mby5yZSB+Y29sb3IgaW5cbiAgbGV0IGRlc2MnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yIHN0IGluXG4gIGxldCBzdCcgPSBmaW5kX3N0YXRlIGluZm8ucmUgZGVzYycgaW5cbiAgc3QubmV4dC4oY29sb3IpIDwtIHN0J1xuXG5sZXQgcmVjIGxvb3AgaW5mbyBzIH5wb3Mgc3QgPVxuICBpZiBwb3MgPCBpbmZvLmxhc3QgdGhlblxuICAgIGxldCBzdCcgPSBzdC5uZXh0LihDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgICBsZXQgaWR4ID0gc3QnLmlkeCBpblxuICAgIGlmIGlkeCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucG9zaXRpb25zLihpZHgpIDwtIHBvcztcbiAgICAgIGxvb3AgaW5mbyBzIH5wb3M6KHBvcyArIDEpIHN0J1xuICAgIGVuZCBlbHNlIGlmIGlkeCA9IGJyZWFrIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucG9zaXRpb25zLihzdCcucmVhbF9pZHgpIDwtIHBvcztcbiAgICAgIHN0J1xuICAgIGVuZCBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICAgIHZhbGlkYXRlIGluZm8gcyB+cG9zIHN0O1xuICAgICAgbG9vcCBpbmZvIHMgfnBvcyBzdFxuICAgIGVuZFxuICBlbHNlXG4gICAgc3RcblxubGV0IHJlYyBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3Qgc3QgPVxuICBpZiBwb3MgPCBsYXN0IHRoZW5cbiAgICBsZXQgc3QnID0gc3QubmV4dC4oQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gICAgaWYgc3QnLmlkeCA+PSAwIHRoZW5cbiAgICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvczoocG9zICsgMSkgfmxhc3Qgc3QnXG4gICAgZWxzZSBpZiBzdCcuaWR4ID0gYnJlYWsgdGhlblxuICAgICAgc3QnXG4gICAgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgICB2YWxpZGF0ZSBpbmZvIHMgfnBvcyBzdDtcbiAgICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBzdFxuICAgIGVuZFxuICBlbHNlXG4gICAgc3RcblxubGV0IGZpbmFsIGluZm8gc3QgY2F0ID1cbiAgdHJ5XG4gICAgTGlzdC5hc3NxIGNhdCBzdC5maW5hbFxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCcgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3I6KC0xKSBzdCBpblxuICAgIGxldCByZXMgPSAoc3QnLkF1dG9tYXRhLlN0YXRlLmlkeCwgQXV0b21hdGEuc3RhdHVzIHN0JykgaW5cbiAgICBzdC5maW5hbCA8LSAoY2F0LCByZXMpIDo6IHN0LmZpbmFsO1xuICAgIHJlc1xuXG5sZXQgZmluZF9pbml0aWFsX3N0YXRlIHJlIGNhdCA9XG4gIHRyeVxuICAgIExpc3QuYXNzcSBjYXQgcmUuaW5pdGlhbF9zdGF0ZXNcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QgPSBmaW5kX3N0YXRlIHJlIChBdXRvbWF0YS5TdGF0ZS5jcmVhdGUgY2F0IHJlLmluaXRpYWwpIGluXG4gICAgcmUuaW5pdGlhbF9zdGF0ZXMgPC0gKGNhdCwgc3QpIDo6IHJlLmluaXRpYWxfc3RhdGVzO1xuICAgIHN0XG5cbmxldCBnZXRfY29sb3IgcmUgKHM6c3RyaW5nKSBwb3MgPVxuICBpZiBwb3MgPCAwIHRoZW5cbiAgICAtMVxuICBlbHNlXG4gICAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBpZiBwb3MgPj0gc2xlbiB0aGVuXG4gICAgICAtMVxuICAgIGVsc2UgaWYgcG9zID0gc2xlbiAtIDEgJiYgcmUubG5sIDw+IC0xICYmIHMuW3Bvc10gPSAnXFxuJyB0aGVuXG4gICAgICAoKiBTcGVjaWFsIGNhc2UgZm9yIHRoZSBsYXN0IG5ld2xpbmUgKilcbiAgICAgIHJlLmxubFxuICAgIGVsc2VcbiAgICAgIENoYXIuY29kZSByZS5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXVxuXG5sZXQgcmVjIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zIHN0IH5ncm91cHMgPVxuICBsZXQgc3QnID0gc3QubmV4dC4oaW5mby5yZS5sbmwpIGluXG4gIGlmIHN0Jy5pZHggPj0gMCB0aGVuIGJlZ2luXG4gICAgaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKHN0Jy5pZHgpIDwtIHBvcztcbiAgICBzdCdcbiAgZW5kIGVsc2UgaWYgc3QnLmlkeCA9IGJyZWFrIHRoZW4gYmVnaW5cbiAgICBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oc3QnLnJlYWxfaWR4KSA8LSBwb3M7XG4gICAgc3QnXG4gIGVuZCBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICBsZXQgY29sb3IgPSBpbmZvLnJlLmxubCBpblxuICAgIGxldCByZWFsX2MgPSBDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSAnXFxuJ10gaW5cbiAgICBsZXQgY2F0ID0gY2F0ZWdvcnkgaW5mby5yZSB+Y29sb3IgaW5cbiAgICBsZXQgZGVzYycgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3I6cmVhbF9jIHN0IGluXG4gICAgbGV0IHN0JyA9IGZpbmRfc3RhdGUgaW5mby5yZSBkZXNjJyBpblxuICAgIHN0Lm5leHQuKGNvbG9yKSA8LSBzdCc7XG4gICAgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3Mgc3Qgfmdyb3Vwc1xuICBlbmRcblxubGV0IHJlYyBzY2FuX3N0ciBpbmZvIChzOnN0cmluZykgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzID1cbiAgbGV0IHBvcyA9IGluZm8ucG9zIGluXG4gIGxldCBsYXN0ID0gaW5mby5sYXN0IGluXG4gIGlmIChsYXN0ID0gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAmJiBpbmZvLnJlLmxubCA8PiAtMVxuICAgICAgJiYgbGFzdCA+IHBvc1xuICAgICAgJiYgU3RyaW5nLmdldCBzIChsYXN0IC0gMSkgPSAnXFxuJylcbiAgdGhlbiBiZWdpblxuICAgIGxldCBpbmZvID0geyBpbmZvIHdpdGggbGFzdCA9IGxhc3QgLSAxIH0gaW5cbiAgICBsZXQgc3QgPSBzY2FuX3N0ciBpbmZvIHMgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzIGluXG4gICAgaWYgc3QuaWR4ID0gYnJlYWsgdGhlblxuICAgICAgc3RcbiAgICBlbHNlXG4gICAgICBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvczoobGFzdCAtIDEpIHN0IH5ncm91cHNcbiAgZW5kIGVsc2UgaWYgZ3JvdXBzIHRoZW5cbiAgICBsb29wIGluZm8gcyB+cG9zIGluaXRpYWxfc3RhdGVcbiAgZWxzZVxuICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBpbml0aWFsX3N0YXRlXG5cbigqIFRoaXMgZnVuY3Rpb24gYWRkcyBhIGZpbmFsIGJvdW5kYXJ5IGNoZWNrIG9uIHRoZSBpbnB1dC5cbiAgIFRoaXMgaXMgdXNlZnVsIHRvIGluZGljYXRlIHRoYXQgdGhlIG91dHB1dCBmYWlsZWQgYmVjYXVzZVxuICAgb2YgaW5zdWZmaWNpZW50IGlucHV0LCBvciB0byB2ZXJpZnkgdGhhdCB0aGUgb3V0cHV0IGFjdHVhbGx5XG4gICBtYXRjaGVzIGZvciByZWdleCB0aGF0IGhhdmUgYm91bmRhcnkgY29uZGl0aW9ucyB3aXRoIHJlc3BlY3RcbiAgIHRvIHRoZSBpbnB1dCBzdHJpbmcuXG4gKilcbmxldCBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzID1cbiAgbGV0IGZpbmFsX2NhdCA9XG4gICAgaWYgbGFzdCA9IHNsZW4gdGhlblxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBpbmV4aXN0YW50KVxuICAgIGVsc2VcbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgY2F0ZWdvcnkgcmUgfmNvbG9yOihnZXRfY29sb3IgcmUgcyBsYXN0KSlcbiAgaW5cbiAgbGV0IChpZHgsIHJlcykgPSBmaW5hbCBpbmZvIHN0IGZpbmFsX2NhdCBpblxuICAobWF0Y2ggZ3JvdXBzLCByZXMgd2l0aFxuICB8IHRydWUsIE1hdGNoIF8gLT4gaW5mby5wb3NpdGlvbnMuKGlkeCkgPC0gbGFzdFxuICB8IF8gLT4gKCkpO1xuICByZXNcblxubGV0IG1hdGNoX3N0ciB+Z3JvdXBzIH5wYXJ0aWFsIHJlIHMgfnBvcyB+bGVuID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGxhc3QgPSBpZiBsZW4gPSAtMSB0aGVuIHNsZW4gZWxzZSBwb3MgKyBsZW4gaW5cbiAgbGV0IGluZm8gPVxuICAgIHsgcmUgOyBjb2xvcnMgPSByZS5jb2xvcnM7IHBvcyA7IGxhc3RcbiAgICA7IHBvc2l0aW9ucyA9XG4gICAgICAgIGlmIGdyb3VwcyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IG4gPSBBdXRvbWF0YS5pbmRleF9jb3VudCByZS50YmwgKyAxIGluXG4gICAgICAgICAgaWYgbiA8PSAxMCB0aGVuXG4gICAgICAgICAgICBbfDA7MDswOzA7MDswOzA7MDswOzB8XVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEFycmF5Lm1ha2UgbiAwXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgW3x8XSB9XG4gIGluXG4gIGxldCBpbml0aWFsX2NhdCA9XG4gICAgaWYgcG9zID0gMCB0aGVuXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGluZXhpc3RhbnQpXG4gICAgZWxzZVxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeVxuICAgICAgICAgICAgICAgICsrIGNhdGVnb3J5IHJlIH5jb2xvcjooZ2V0X2NvbG9yIHJlIHMgKHBvcyAtIDEpKSlcbiAgaW5cbiAgbGV0IGluaXRpYWxfc3RhdGUgPSBmaW5kX2luaXRpYWxfc3RhdGUgcmUgaW5pdGlhbF9jYXQgaW5cbiAgbGV0IHN0ID0gc2Nhbl9zdHIgaW5mbyBzIGluaXRpYWxfc3RhdGUgfmdyb3VwcyBpblxuICBsZXQgcmVzID1cbiAgICBpZiBzdC5pZHggPSBicmVhayB8fCAocGFydGlhbCAmJiBub3QgZ3JvdXBzKSB0aGVuXG4gICAgICBBdXRvbWF0YS5zdGF0dXMgc3QuZGVzY1xuICAgIGVsc2UgaWYgcGFydGlhbCAmJiBncm91cHMgdGhlblxuICAgICAgbWF0Y2ggQXV0b21hdGEuc3RhdHVzIHN0LmRlc2Mgd2l0aFxuICAgICAgfCBNYXRjaCBfIHwgRmFpbGVkIGFzIHN0YXR1cyAtPiBzdGF0dXNcbiAgICAgIHwgUnVubmluZyAtPlxuICAgICAgICAoKiBUaGlzIGNvdWxkIGJlIGJlY2F1c2UgaXQncyBzdGlsbCBub3QgZnVsbHkgbWF0Y2hlZCwgb3IgaXRcbiAgICAgICAgICAgY291bGQgYmUgdGhhdCBiZWNhdXNlIHdlIG5lZWQgdG8gcnVuIHNwZWNpYWwgZW5kIG9mIGlucHV0XG4gICAgICAgICAgIGNoZWNrcy4gKilcbiAgICAgICAgKG1hdGNoIGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHMgd2l0aFxuICAgICAgICAgfCBNYXRjaCBfIGFzIHN0YXR1cyAtPiBzdGF0dXNcbiAgICAgICAgIHwgRmFpbGVkIHwgUnVubmluZyAtPlxuICAgICAgICAgICAoKiBBIGZhaWx1cmUgaGVyZSBqdXN0IG1lYW5zIHRoYXQgd2UgbmVlZCBtb3JlIGRhdGEsIGkuZS5cbiAgICAgICAgICAgICAgaXQncyBhIHBhcnRpYWwgbWF0Y2guICopXG4gICAgICAgICAgIFJ1bm5pbmcpXG4gICAgZWxzZSBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzXG4gIGluXG4gIG1hdGNoIHJlcyB3aXRoXG4gICAgQXV0b21hdGEuTWF0Y2ggKG1hcmtzLCBwbWFya3MpIC0+XG4gICAgTWF0Y2ggeyBzIDsgbWFya3M7IHBtYXJrcyA7IGdwb3MgPSBpbmZvLnBvc2l0aW9uczsgZ2NvdW50ID0gcmUuZ3JvdXBfY291bnR9XG4gIHwgQXV0b21hdGEuRmFpbGVkIC0+IEZhaWxlZFxuICB8IEF1dG9tYXRhLlJ1bm5pbmcgLT5cbiAgICBsZXQgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSA9IGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLigwKSBlbHNlIDAgaW5cbiAgICBSdW5uaW5nIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSB9XG5cbmxldCBta19yZSB+aW5pdGlhbCB+Y29sb3JzIH5jb2xvcl9yZXByIH5uY29sb3IgfmxubCB+Z3JvdXBfbmFtZXMgfmdyb3VwX2NvdW50ID1cbiAgeyBpbml0aWFsIDtcbiAgICBpbml0aWFsX3N0YXRlcyA9IFtdO1xuICAgIGNvbG9ycztcbiAgICBjb2xvcl9yZXByO1xuICAgIG5jb2xvcjtcbiAgICBsbmw7XG4gICAgdGJsID0gQXV0b21hdGEuY3JlYXRlX3dvcmtpbmdfYXJlYSAoKTtcbiAgICBzdGF0ZXMgPSBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5jcmVhdGUgOTc7XG4gICAgZ3JvdXBfbmFtZXM7XG4gICAgZ3JvdXBfY291bnQgfVxuXG4oKioqKiBDaGFyYWN0ZXIgc2V0cyAqKioqKVxuXG5sZXQgY3NlcSBjIGMnID0gQ3NldC5zZXEgKENoYXIuY29kZSBjKSAoQ2hhci5jb2RlIGMnKVxubGV0IGNhZGQgYyBzID0gQ3NldC5hZGQgKENoYXIuY29kZSBjKSBzXG5cbmxldCB0cmFuc19zZXQgY2FjaGUgY20gcyA9XG4gIG1hdGNoIENzZXQub25lX2NoYXIgcyB3aXRoXG4gIHwgU29tZSBpIC0+IENzZXQuY3NpbmdsZSBjbS5baV1cbiAgfCBOb25lIC0+XG4gICAgbGV0IHYgPSAoQ3NldC5oYXNoX3JlYyBzLCBzKSBpblxuICAgIHRyeVxuICAgICAgQ3NldC5DU2V0TWFwLmZpbmQgdiAhY2FjaGVcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IGwgPVxuICAgICAgICBDc2V0LmZvbGRfcmlnaHRcbiAgICAgICAgICBzXG4gICAgICAgICAgfmY6KGZ1biAoaSwgaikgbCAtPiBDc2V0LnVuaW9uIChjc2VxIGNtLltpXSBjbS5bal0pIGwpXG4gICAgICAgICAgfmluaXQ6Q3NldC5lbXB0eVxuICAgICAgaW5cbiAgICAgIGNhY2hlIDo9IENzZXQuQ1NldE1hcC5hZGQgdiBsICFjYWNoZTtcbiAgICAgIGxcblxuKCoqKiopXG5cbnR5cGUgcmVnZXhwID1cbiAgICBTZXQgb2YgQ3NldC50XG4gIHwgU2VxdWVuY2Ugb2YgcmVnZXhwIGxpc3RcbiAgfCBBbHRlcm5hdGl2ZSBvZiByZWdleHAgbGlzdFxuICB8IFJlcGVhdCBvZiByZWdleHAgKiBpbnQgKiBpbnQgb3B0aW9uXG4gIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgfCBTZW0gb2YgQXV0b21hdGEuc2VtICogcmVnZXhwXG4gIHwgU2VtX2dyZWVkeSBvZiBBdXRvbWF0YS5yZXBfa2luZCAqIHJlZ2V4cFxuICB8IEdyb3VwIG9mIHN0cmluZyBvcHRpb24gKiByZWdleHAgfCBOb19ncm91cCBvZiByZWdleHAgfCBOZXN0IG9mIHJlZ2V4cFxuICB8IENhc2Ugb2YgcmVnZXhwIHwgTm9fY2FzZSBvZiByZWdleHBcbiAgfCBJbnRlcnNlY3Rpb24gb2YgcmVnZXhwIGxpc3RcbiAgfCBDb21wbGVtZW50IG9mIHJlZ2V4cCBsaXN0XG4gIHwgRGlmZmVyZW5jZSBvZiByZWdleHAgKiByZWdleHBcbiAgfCBQbWFyayBvZiBQbWFyay50ICogcmVnZXhwXG5cbm1vZHVsZSBWaWV3ID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlZ2V4cCA9XG4gICAgICBTZXQgb2YgQ3NldC50XG4gICAgfCBTZXF1ZW5jZSBvZiByZWdleHAgbGlzdFxuICAgIHwgQWx0ZXJuYXRpdmUgb2YgcmVnZXhwIGxpc3RcbiAgICB8IFJlcGVhdCBvZiByZWdleHAgKiBpbnQgKiBpbnQgb3B0aW9uXG4gICAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gICAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gICAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICAgIHwgU2VtIG9mIEF1dG9tYXRhLnNlbSAqIHJlZ2V4cFxuICAgIHwgU2VtX2dyZWVkeSBvZiBBdXRvbWF0YS5yZXBfa2luZCAqIHJlZ2V4cFxuICAgIHwgR3JvdXAgb2Ygc3RyaW5nIG9wdGlvbiAqIHJlZ2V4cCB8IE5vX2dyb3VwIG9mIHJlZ2V4cCB8IE5lc3Qgb2YgcmVnZXhwXG4gICAgfCBDYXNlIG9mIHJlZ2V4cCB8IE5vX2Nhc2Ugb2YgcmVnZXhwXG4gICAgfCBJbnRlcnNlY3Rpb24gb2YgcmVnZXhwIGxpc3RcbiAgICB8IENvbXBsZW1lbnQgb2YgcmVnZXhwIGxpc3RcbiAgICB8IERpZmZlcmVuY2Ugb2YgcmVnZXhwICogcmVnZXhwXG4gICAgfCBQbWFyayBvZiBQbWFyay50ICogcmVnZXhwXG5cbiAgbGV0IHZpZXcgdCA9IHRcbmVuZFxuXG5sZXQgcmVjIHBwIGZtdCB0ID1cbiAgbGV0IG9wZW4gRm10IGluXG4gIGxldCB2YXIgcyByZSA9IHNleHAgZm10IHMgcHAgcmUgaW5cbiAgbGV0IHNlcSBzIHJlbCA9IHNleHAgZm10IHMgKGxpc3QgcHApIHJlbCBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXQgcyAtPiAgc2V4cCBmbXQgXCJTZXRcIiBDc2V0LnBwIHNcbiAgfCBTZXF1ZW5jZSBzcSAtPiBzZXEgXCJTZXF1ZW5jZVwiIHNxXG4gIHwgQWx0ZXJuYXRpdmUgYWx0IC0+IHNlcSBcIkFsdGVybmF0aXZlXCIgYWx0XG4gIHwgUmVwZWF0IChyZSwgc3RhcnQsIHN0b3ApIC0+XG4gICAgbGV0IHBwJyBmbXQgKCkgPSBmcHJpbnRmIGZtdCBcIiVhQCAlZCVhXCIgcHAgcmUgICBzdGFydCAgIG9wdGludCBzdG9wIGluXG4gICAgc2V4cCBmbXQgXCJSZXBlYXRcIiBwcCcgKClcbiAgfCBCZWdfb2ZfbGluZSAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2ZfbGluZVwiXG4gIHwgRW5kX29mX2xpbmUgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX2xpbmVcIlxuICB8IEJlZ19vZl93b3JkICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl93b3JkXCJcbiAgfCBFbmRfb2Zfd29yZCAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2Zfd29yZFwiXG4gIHwgTm90X2JvdW5kICAgICAgICAtPiBzdHIgZm10IFwiTm90X2JvdW5kXCJcbiAgfCBCZWdfb2Zfc3RyICAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2Zfc3RyXCJcbiAgfCBFbmRfb2Zfc3RyICAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2Zfc3RyXCJcbiAgfCBMYXN0X2VuZF9vZl9saW5lIC0+IHN0ciBmbXQgXCJMYXN0X2VuZF9vZl9saW5lXCJcbiAgfCBTdGFydCAgICAgICAgICAgIC0+IHN0ciBmbXQgXCJTdGFydFwiXG4gIHwgU3RvcCAgICAgICAgICAgICAtPiBzdHIgZm10IFwiU3RvcFwiXG4gIHwgU2VtIChzZW0sIHJlKSAgICAtPlxuICAgIHNleHAgZm10IFwiU2VtXCIgKHBhaXIgQXV0b21hdGEucHBfc2VtIHBwKSAoc2VtLCByZSlcbiAgfCBTZW1fZ3JlZWR5IChrLCByZSkgLT5cbiAgICBzZXhwIGZtdCBcIlNlbV9ncmVlZHlcIiAocGFpciBBdXRvbWF0YS5wcF9yZXBfa2luZCBwcCkgKGssIHJlKVxuICB8IEdyb3VwIChOb25lLCBjKSAgIC0+IHZhciBcIkdyb3VwXCIgY1xuICB8IEdyb3VwIChTb21lIG4sIGMpIC0+IHNleHAgZm10IFwiTmFtZWRfZ3JvdXBcIiAocGFpciBzdHIgcHApIChuLCBjKVxuICB8IE5vX2dyb3VwIGMgICAgIC0+IHZhciBcIk5vX2dyb3VwXCIgY1xuICB8IE5lc3QgYyAgICAgICAgIC0+IHZhciBcIk5lc3RcIiBjXG4gIHwgQ2FzZSBjICAgICAgICAgLT4gdmFyIFwiQ2FzZVwiIGNcbiAgfCBOb19jYXNlIGMgICAgICAtPiB2YXIgXCJOb19jYXNlXCIgY1xuICB8IEludGVyc2VjdGlvbiBjIC0+IHNlcSBcIkludGVyc2VjdGlvblwiIGNcbiAgfCBDb21wbGVtZW50IGMgICAtPiBzZXEgXCJDb21wbGVtZW50XCIgY1xuICB8IERpZmZlcmVuY2UgKGEsIGIpIC0+IHNleHAgZm10IFwiRGlmZmVyZW5jZVwiIChwYWlyIHBwIHBwKSAoYSwgYilcbiAgfCBQbWFyayAobSwgcikgICAgICAtPiBzZXhwIGZtdCBcIlBtYXJrXCIgKHBhaXIgUG1hcmsucHAgcHApIChtLCByKVxuXG5sZXQgcmVjIGlzX2NoYXJzZXQgPSBmdW5jdGlvblxuICB8IFNldCBfIC0+XG4gICAgdHJ1ZVxuICB8IEFsdGVybmF0aXZlIGwgfCBJbnRlcnNlY3Rpb24gbCB8IENvbXBsZW1lbnQgbCAtPlxuICAgIExpc3QuZm9yX2FsbCBpc19jaGFyc2V0IGxcbiAgfCBEaWZmZXJlbmNlIChyLCByJykgLT5cbiAgICBpc19jaGFyc2V0IHIgJiYgaXNfY2hhcnNldCByJ1xuICB8IFNlbSAoXywgcikgfCBTZW1fZ3JlZWR5IChfLCByKVxuICB8IE5vX2dyb3VwIHIgfCBDYXNlIHIgfCBOb19jYXNlIHIgLT5cbiAgICBpc19jaGFyc2V0IHJcbiAgfCBTZXF1ZW5jZSBfIHwgUmVwZWF0IF8gfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gIHwgTm90X2JvdW5kIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICB8IEdyb3VwIF8gfCBOZXN0IF8gfCBQbWFyayAoXyxfKS0+XG4gICAgZmFsc2VcblxuKCpYWFggVXNlIGEgYmV0dGVyIGFsZ29yaXRobSBhbGxvd2luZyBub24tY29udGlndW91cyByZWdpb25zPyAqKVxuXG5sZXQgY3VwcGVyID1cbiAgQ3NldC51bmlvbiAoY3NlcSAnQScgJ1onKVxuICAgIChDc2V0LnVuaW9uIChjc2VxICdcXDE5MicgJ1xcMjE0JykgKGNzZXEgJ1xcMjE2JyAnXFwyMjInKSlcbmxldCBjbG93ZXIgPSBDc2V0Lm9mZnNldCAzMiBjdXBwZXJcbmxldCBjYWxwaGEgPVxuICBMaXN0LmZvbGRfcmlnaHQgY2FkZCBbJ1xcMTcwJzsgJ1xcMTgxJzsgJ1xcMTg2JzsgJ1xcMjIzJzsgJ1xcMjU1J11cbiAgICAoQ3NldC51bmlvbiBjbG93ZXIgY3VwcGVyKVxubGV0IGNkaWdpdCA9IGNzZXEgJzAnICc5J1xubGV0IGNhbG51bSA9IENzZXQudW5pb24gY2FscGhhIGNkaWdpdFxubGV0IGN3b3JkID0gY2FkZCAnXycgY2FsbnVtXG5cbmxldCBjb2xvcml6ZSBjIHJlZ2V4cCA9XG4gIGxldCBsbmwgPSByZWYgZmFsc2UgaW5cbiAgbGV0IHJlYyBjb2xvcml6ZSByZWdleHAgPVxuICAgIG1hdGNoIHJlZ2V4cCB3aXRoXG4gICAgICBTZXQgcyAgICAgICAgICAgICAgICAgICAgIC0+IENvbG9yX21hcC5zcGxpdCBzIGNcbiAgICB8IFNlcXVlbmNlIGwgICAgICAgICAgICAgICAgLT4gTGlzdC5pdGVyIGNvbG9yaXplIGxcbiAgICB8IEFsdGVybmF0aXZlIGwgICAgICAgICAgICAgLT4gTGlzdC5pdGVyIGNvbG9yaXplIGxcbiAgICB8IFJlcGVhdCAociwgXywgXykgICAgICAgICAgLT4gY29sb3JpemUgclxuICAgIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSAtPiBDb2xvcl9tYXAuc3BsaXQgKENzZXQuY3NpbmdsZSAnXFxuJykgY1xuICAgIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZFxuICAgIHwgTm90X2JvdW5kICAgICAgICAgICAgICAgICAtPiBDb2xvcl9tYXAuc3BsaXQgY3dvcmQgY1xuICAgIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgICB8IFN0YXJ0IHwgU3RvcCAgICAgICAgICAgICAgLT4gKClcbiAgICB8IExhc3RfZW5kX29mX2xpbmUgICAgICAgICAgLT4gbG5sIDo9IHRydWVcbiAgICB8IFNlbSAoXywgcilcbiAgICB8IFNlbV9ncmVlZHkgKF8sIHIpXG4gICAgfCBHcm91cCAoXywgcikgfCBOb19ncm91cCByXG4gICAgfCBOZXN0IHIgfCBQbWFyayAoXyxyKSAgICAgLT4gY29sb3JpemUgclxuICAgIHwgQ2FzZSBfIHwgTm9fY2FzZSBfXG4gICAgfCBJbnRlcnNlY3Rpb24gX1xuICAgIHwgQ29tcGxlbWVudCBfXG4gICAgfCBEaWZmZXJlbmNlIF8gICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICBjb2xvcml6ZSByZWdleHA7XG4gICFsbmxcblxuKCoqKiogQ29tcGlsYXRpb24gKioqKilcblxubGV0IHJlYyBlcXVhbCB4MSB4MiA9XG4gIG1hdGNoIHgxLCB4MiB3aXRoXG4gICAgU2V0IHMxLCBTZXQgczIgLT5cbiAgICBzMSA9IHMyXG4gIHwgU2VxdWVuY2UgbDEsIFNlcXVlbmNlIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IEFsdGVybmF0aXZlIGwxLCBBbHRlcm5hdGl2ZSBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBSZXBlYXQgKHgxJywgaTEsIGoxKSwgUmVwZWF0ICh4MicsIGkyLCBqMikgLT5cbiAgICBpMSA9IGkyICYmIGoxID0gajIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IEJlZ19vZl9saW5lLCBCZWdfb2ZfbGluZVxuICB8IEVuZF9vZl9saW5lLCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkLCBCZWdfb2Zfd29yZFxuICB8IEVuZF9vZl93b3JkLCBFbmRfb2Zfd29yZFxuICB8IE5vdF9ib3VuZCwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciwgQmVnX29mX3N0clxuICB8IEVuZF9vZl9zdHIsIEVuZF9vZl9zdHJcbiAgfCBMYXN0X2VuZF9vZl9saW5lLCBMYXN0X2VuZF9vZl9saW5lXG4gIHwgU3RhcnQsIFN0YXJ0XG4gIHwgU3RvcCwgU3RvcCAtPlxuICAgIHRydWVcbiAgfCBTZW0gKHNlbTEsIHgxJyksIFNlbSAoc2VtMiwgeDInKSAtPlxuICAgIHNlbTEgPSBzZW0yICYmIGVxdWFsIHgxJyB4MidcbiAgfCBTZW1fZ3JlZWR5IChrMSwgeDEnKSwgU2VtX2dyZWVkeSAoazIsIHgyJykgLT5cbiAgICBrMSA9IGsyICYmIGVxdWFsIHgxJyB4MidcbiAgfCBHcm91cCBfLCBHcm91cCBfIC0+ICgqIERvIG5vdCBtZXJnZSBncm91cHMhICopXG4gICAgZmFsc2VcbiAgfCBOb19ncm91cCB4MScsIE5vX2dyb3VwIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBOZXN0IHgxJywgTmVzdCB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgQ2FzZSB4MScsIENhc2UgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IE5vX2Nhc2UgeDEnLCBOb19jYXNlIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBJbnRlcnNlY3Rpb24gbDEsIEludGVyc2VjdGlvbiBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBDb21wbGVtZW50IGwxLCBDb21wbGVtZW50IGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IERpZmZlcmVuY2UgKHgxJywgeDEnJyksIERpZmZlcmVuY2UgKHgyJywgeDInJykgLT5cbiAgICBlcXVhbCB4MScgeDInICYmIGVxdWFsIHgxJycgeDInJ1xuICB8IFBtYXJrIChtMSwgcjEpLCBQbWFyayAobTIsIHIyKSAtPlxuICAgIFBtYXJrLmVxdWFsIG0xIG0yICYmIGVxdWFsIHIxIHIyXG4gIHwgXyAtPlxuICAgIGZhbHNlXG5cbmFuZCBlcV9saXN0IGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICBbXSwgW10gLT5cbiAgICB0cnVlXG4gIHwgeDEgOjogcjEsIHgyIDo6IHIyIC0+XG4gICAgZXF1YWwgeDEgeDIgJiYgZXFfbGlzdCByMSByMlxuICB8IF8gLT5cbiAgICBmYWxzZVxuXG5sZXQgc2VxdWVuY2UgPSBmdW5jdGlvblxuICB8IFt4XSAtPiB4XG4gIHwgbCAgIC0+IFNlcXVlbmNlIGxcblxubGV0IHJlYyBtZXJnZV9zZXF1ZW5jZXMgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgW11cbiAgfCBBbHRlcm5hdGl2ZSBsJyA6OiByIC0+XG4gICAgbWVyZ2Vfc2VxdWVuY2VzIChsJyBAIHIpXG4gIHwgU2VxdWVuY2UgKHggOjogeSkgOjogciAtPlxuICAgIGJlZ2luIG1hdGNoIG1lcmdlX3NlcXVlbmNlcyByIHdpdGhcbiAgICAgICAgU2VxdWVuY2UgKHgnIDo6IHknKSA6OiByJyB3aGVuIGVxdWFsIHggeCcgLT5cbiAgICAgICAgU2VxdWVuY2UgW3g7IEFsdGVybmF0aXZlIFtzZXF1ZW5jZSB5OyBzZXF1ZW5jZSB5J11dIDo6IHInXG4gICAgICB8IHInIC0+XG4gICAgICAgIFNlcXVlbmNlICh4IDo6IHkpIDo6IHInXG4gICAgZW5kXG4gIHwgeCA6OiByIC0+XG4gICAgeCA6OiBtZXJnZV9zZXF1ZW5jZXMgclxuXG5tb2R1bGUgQSA9IEF1dG9tYXRhXG5cbmxldCBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IgPVxuICBtYXRjaCBraW5kLCBraW5kJyB3aXRoXG4gICAgYEZpcnN0LCBgRmlyc3QgLT4gY3JcbiAgfCBgRmlyc3QsIGsgICAgICAgLT4gQS5zZXEgaWRzIGsgY3IgKEEuZXBzIGlkcylcbiAgfCAgXyAgICAgICAgICAgICAgIC0+IGNyXG5cbigqIFhYWCBzaG91bGQgcHJvYmFibHkgY29tcHV0ZSBhIGNhdGVnb3J5IG1hc2sgKilcbmxldCByZWMgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+XG4gICAgKEEuY3N0IGlkcyAodHJhbnNfc2V0IGNhY2hlIGMgcyksIGtpbmQpXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgICh0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyBsLCBraW5kKVxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBiZWdpbiBtYXRjaCBtZXJnZV9zZXF1ZW5jZXMgbCB3aXRoXG4gICAgICAgIFtyJ10gLT5cbiAgICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgICAoZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyLCBraW5kKVxuICAgICAgfCBtZXJnZWRfc2VxdWVuY2VzIC0+XG4gICAgICAgIChBLmFsdCBpZHNcbiAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgIChmdW4gcicgLT5cbiAgICAgICAgICAgICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeVxuICAgICAgICAgICAgICAgICAgICAgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgICAgICAgICAgICAgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyKVxuICAgICAgICAgICAgICBtZXJnZWRfc2VxdWVuY2VzKSxcbiAgICAgICAgIGtpbmQpXG4gICAgZW5kXG4gIHwgUmVwZWF0IChyJywgaSwgaikgLT5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICBsZXQgcmVtID1cbiAgICAgIG1hdGNoIGogd2l0aFxuICAgICAgICBOb25lIC0+XG4gICAgICAgIEEucmVwIGlkcyBncmVlZHkga2luZCcgY3JcbiAgICAgIHwgU29tZSBqIC0+XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBtYXRjaCBncmVlZHkgd2l0aFxuICAgICAgICAgICAgYEdyZWVkeSAtPlxuICAgICAgICAgICAgZnVuIHJlbSAtPlxuICAgICAgICAgICAgICBBLmFsdCBpZHNcbiAgICAgICAgICAgICAgICBbQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbTsgQS5lcHMgaWRzXVxuICAgICAgICAgIHwgYE5vbl9ncmVlZHkgLT5cbiAgICAgICAgICAgIGZ1biByZW0gLT5cbiAgICAgICAgICAgICAgQS5hbHQgaWRzXG4gICAgICAgICAgICAgICAgW0EuZXBzIGlkczsgQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbV1cbiAgICAgICAgaW5cbiAgICAgICAgaXRlciAoaiAtIGkpIGYgKEEuZXBzIGlkcylcbiAgICBpblxuICAgIChpdGVyIGkgKGZ1biByZW0gLT4gQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbSkgcmVtLCBraW5kKVxuICB8IEJlZ19vZl9saW5lIC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5ld2xpbmUpLCBraW5kKVxuICB8IEVuZF9vZl9saW5lIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBuZXdsaW5lKSwga2luZClcbiAgfCBCZWdfb2Zfd29yZCAtPlxuICAgIChBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKVxuICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkubGV0dGVyKSxcbiAgICAga2luZClcbiAgfCBFbmRfb2Zfd29yZCAtPlxuICAgIChBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmxldHRlcilcbiAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKSxcbiAgICAga2luZClcbiAgfCBOb3RfYm91bmQgLT5cbiAgICAoQS5hbHQgaWRzIFtBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgICAgICAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkubGV0dGVyKVxuICAgICAgICAgICAgICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5sZXR0ZXIpO1xuICAgICAgICAgICAgICAgIEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAgICAgICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSlcbiAgICAgICAgICAgICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXSxcbiAgICAga2luZClcbiAgfCBCZWdfb2Zfc3RyIC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmluZXhpc3RhbnQsIGtpbmQpXG4gIHwgRW5kX29mX3N0ciAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuaW5leGlzdGFudCwga2luZClcbiAgfCBMYXN0X2VuZF9vZl9saW5lIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBsYXN0bmV3bGluZSksIGtpbmQpXG4gIHwgU3RhcnQgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuc2VhcmNoX2JvdW5kYXJ5LCBraW5kKVxuICB8IFN0b3AgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LnNlYXJjaF9ib3VuZGFyeSwga2luZClcbiAgfCBTZW0gKGtpbmQnLCByJykgLT5cbiAgICBsZXQgKGNyLCBraW5kJycpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCcgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIChlbmZvcmNlX2tpbmQgaWRzIGtpbmQnIGtpbmQnJyBjcixcbiAgICAga2luZCcpXG4gIHwgU2VtX2dyZWVkeSAoZ3JlZWR5JywgcicpIC0+XG4gICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHknIHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gIHwgR3JvdXAgKG4sIHInKSAtPlxuICAgIGlmIGlnbl9ncm91cCB0aGVuXG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICAgIGVsc2VcbiAgICAgIGxldCBwID0gIXBvcyBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICAgIHwgU29tZSBuYW1lIC0+IG5hbWVzIDo9IChuYW1lLCBwIC8gMikgOjogIW5hbWVzXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgaW5cbiAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5tYXJrIGlkcyBwKSAoXG4gICAgICAgICAgQS5zZXEgaWRzIGBGaXJzdCBjciAoQS5tYXJrIGlkcyAocCArIDEpKSksXG4gICAgICAga2luZCcpXG4gIHwgTm9fZ3JvdXAgcicgLT5cbiAgICB0cmFuc2xhdGUgaWRzIGtpbmQgdHJ1ZSBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgfCBOZXN0IHInIC0+XG4gICAgbGV0IGIgPSAhcG9zIGluXG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gICAgaW5cbiAgICBsZXQgZSA9ICFwb3MgLSAxIGluXG4gICAgaWYgZSA8IGIgdGhlblxuICAgICAgKGNyLCBraW5kJylcbiAgICBlbHNlXG4gICAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5lcmFzZSBpZHMgYiBlKSBjciwga2luZCcpXG4gIHwgRGlmZmVyZW5jZSBfIHwgQ29tcGxlbWVudCBfIHwgSW50ZXJzZWN0aW9uIF8gfCBOb19jYXNlIF8gfCBDYXNlIF8gLT5cbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBQbWFyayAoaSwgcicpIC0+XG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEucG1hcmsgaWRzIGkpIGNyLCBraW5kJylcblxuYW5kIHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIEEuZXBzIGlkc1xuICB8IFtyXSAtPlxuICAgIGxldCAoY3InLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgciBpblxuICAgIGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjcidcbiAgfCByIDo6IHJlbSAtPlxuICAgIGxldCAoY3InLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgciBpblxuICAgIGxldCBjcicnID1cbiAgICAgIHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHJlbSBpblxuICAgIGlmIEEuaXNfZXBzIGNyJycgdGhlblxuICAgICAgY3InXG4gICAgZWxzZSBpZiBBLmlzX2VwcyBjcicgdGhlblxuICAgICAgY3InJ1xuICAgIGVsc2VcbiAgICAgIEEuc2VxIGlkcyBraW5kJyBjcicgY3InJ1xuXG4oKioqKiBDYXNlICoqKiopXG5cbmxldCBjYXNlX2luc2VucyBzID1cbiAgQ3NldC51bmlvbiBzIChDc2V0LnVuaW9uIChDc2V0Lm9mZnNldCAzMiAoQ3NldC5pbnRlciBzIGN1cHBlcikpXG4gICAgICAgICAgICAgICAgICAoQ3NldC5vZmZzZXQgKC0zMikgKENzZXQuaW50ZXIgcyBjbG93ZXIpKSlcblxubGV0IGFzX3NldCA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT4gc1xuICB8IF8gICAgIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBYWFggU2hvdWxkIHNwbGl0IGFsdGVybmF0aXZlcyBpbnRvICgxKSBjaGFyc2V0cyBhbmQgKDIpIG1vcmVcbiAgIGNvbXBsZXggcmVndWxhciBleHByZXNzaW9uczsgYWx0ZXJuYXRpdmUgc2hvdWxkIHRoZXJlZm9yZSBwcm9iYWJseVxuICAgYmUgZmxhdHRlbiBoZXJlICopXG5sZXQgcmVjIGhhbmRsZV9jYXNlIGlnbl9jYXNlID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPlxuICAgIFNldCAoaWYgaWduX2Nhc2UgdGhlbiBjYXNlX2luc2VucyBzIGVsc2UgcylcbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgU2VxdWVuY2UgKExpc3QubWFwIChoYW5kbGVfY2FzZSBpZ25fY2FzZSkgbClcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGhhbmRsZV9jYXNlIGlnbl9jYXNlKSBsIGluXG4gICAgaWYgaXNfY2hhcnNldCAoQWx0ZXJuYXRpdmUgbCcpIHRoZW5cbiAgICAgIFNldCAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC51bmlvbiBzIChhc19zZXQgcikpIENzZXQuZW1wdHkgbCcpXG4gICAgZWxzZVxuICAgICAgQWx0ZXJuYXRpdmUgbCdcbiAgfCBSZXBlYXQgKHIsIGksIGopIC0+XG4gICAgUmVwZWF0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByLCBpLCBqKVxuICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHIgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wIGFzIHIgLT5cbiAgICByXG4gIHwgU2VtIChrLCByKSAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBTZW0gKGssIHInKVxuICB8IFNlbV9ncmVlZHkgKGssIHIpIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIFNlbV9ncmVlZHkgKGssIHInKVxuICB8IEdyb3VwIChuLCByKSAtPlxuICAgIEdyb3VwIChuLCBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKVxuICB8IE5vX2dyb3VwIHIgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgTm9fZ3JvdXAgcidcbiAgfCBOZXN0IHIgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgTmVzdCByJ1xuICB8IENhc2UgciAtPlxuICAgIGhhbmRsZV9jYXNlIGZhbHNlIHJcbiAgfCBOb19jYXNlIHIgLT5cbiAgICBoYW5kbGVfY2FzZSB0cnVlIHJcbiAgfCBJbnRlcnNlY3Rpb24gbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChmdW4gciAtPiBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSBsIGluXG4gICAgU2V0IChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LmludGVyIHMgKGFzX3NldCByKSkgQ3NldC5jYW55IGwnKVxuICB8IENvbXBsZW1lbnQgbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChmdW4gciAtPiBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSBsIGluXG4gICAgU2V0IChDc2V0LmRpZmYgQ3NldC5jYW55XG4gICAgICAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LnVuaW9uIHMgKGFzX3NldCByKSlcbiAgICAgICAgICAgICAgQ3NldC5lbXB0eSBsJykpXG4gIHwgRGlmZmVyZW5jZSAociwgcicpIC0+XG4gICAgU2V0IChDc2V0LmludGVyIChhc19zZXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpKVxuICAgICAgICAgICAoQ3NldC5kaWZmIENzZXQuY2FueSAoYXNfc2V0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByJykpKSlcbiAgfCBQbWFyayAoaSxyKSAtPiBQbWFyayAoaSxoYW5kbGVfY2FzZSBpZ25fY2FzZSByKVxuXG4oKioqKilcblxubGV0IGNvbXBpbGVfMSByZWdleHAgPVxuICBsZXQgcmVnZXhwID0gaGFuZGxlX2Nhc2UgZmFsc2UgcmVnZXhwIGluXG4gIGxldCBjID0gQ29sb3JfbWFwLm1ha2UgKCkgaW5cbiAgbGV0IG5lZWRfbG5sID0gY29sb3JpemUgYyByZWdleHAgaW5cbiAgbGV0IChjb2xvcnMsIGNvbG9yX3JlcHIsIG5jb2xvcikgPSBDb2xvcl9tYXAuZmxhdHRlbiBjIGluXG4gIGxldCBsbmwgPSBpZiBuZWVkX2xubCB0aGVuIG5jb2xvciBlbHNlIC0xIGluXG4gIGxldCBuY29sb3IgPSBpZiBuZWVkX2xubCB0aGVuIG5jb2xvciArIDEgZWxzZSBuY29sb3IgaW5cbiAgbGV0IGlkcyA9IEEuY3JlYXRlX2lkcyAoKSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgbGV0IG5hbWVzID0gcmVmIFtdIGluXG4gIGxldCAociwga2luZCkgPVxuICAgIHRyYW5zbGF0ZSBpZHNcbiAgICAgIGBGaXJzdCBmYWxzZSBmYWxzZSBgR3JlZWR5IHBvcyBuYW1lcyAocmVmIENzZXQuQ1NldE1hcC5lbXB0eSkgY29sb3JzIHJlZ2V4cCBpblxuICBsZXQgciA9IGVuZm9yY2Vfa2luZCBpZHMgYEZpcnN0IGtpbmQgciBpblxuICAoKkZvcm1hdC5lcHJpbnRmIFwiPCVkICVkPkAuXCIgIWlkcyBuY29sOyopXG4gIG1rX3JlIH5pbml0aWFsOnIgfmNvbG9ycyB+Y29sb3JfcmVwciB+bmNvbG9yIH5sbmwgfmdyb3VwX25hbWVzOihMaXN0LnJldiAhbmFtZXMpIH5ncm91cF9jb3VudDooIXBvcyAvIDIpXG5cbigqKioqKVxuXG5sZXQgcmVjIGFuY2hvcmVkID0gZnVuY3Rpb25cbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgTGlzdC5leGlzdHMgYW5jaG9yZWQgbFxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBMaXN0LmZvcl9hbGwgYW5jaG9yZWQgbFxuICB8IFJlcGVhdCAociwgaSwgXykgLT5cbiAgICBpID4gMCAmJiBhbmNob3JlZCByXG4gIHwgU2V0IF8gfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZFxuICB8IE5vdF9ib3VuZCB8IEVuZF9vZl9zdHIgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RvcFxuICB8IEludGVyc2VjdGlvbiBfIHwgQ29tcGxlbWVudCBfIHwgRGlmZmVyZW5jZSBfIC0+XG4gICAgZmFsc2VcbiAgfCBCZWdfb2Zfc3RyIHwgU3RhcnQgLT5cbiAgICB0cnVlXG4gIHwgU2VtIChfLCByKSB8IFNlbV9ncmVlZHkgKF8sIHIpIHwgR3JvdXAgKF8sIHIpIHwgTm9fZ3JvdXAgciB8IE5lc3QgclxuICB8IENhc2UgciB8IE5vX2Nhc2UgciB8IFBtYXJrIChfLCByKSAtPlxuICAgIGFuY2hvcmVkIHJcblxuKCoqKiopXG5cbnR5cGUgdCA9IHJlZ2V4cFxuXG5sZXQgc3RyIHMgPVxuICBsZXQgbCA9IHJlZiBbXSBpblxuICBmb3IgaSA9IFN0cmluZy5sZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBsIDo9IFNldCAoQ3NldC5jc2luZ2xlIHMuW2ldKSA6OiAhbFxuICBkb25lO1xuICBTZXF1ZW5jZSAhbFxubGV0IGNoYXIgYyA9IFNldCAoQ3NldC5jc2luZ2xlIGMpXG5cbmxldCBhbHQgPSBmdW5jdGlvblxuICB8IFtyXSAtPiByXG4gIHwgbCAgIC0+IEFsdGVybmF0aXZlIGxcbmxldCBzZXEgPSBmdW5jdGlvblxuICB8IFtyXSAtPiByXG4gIHwgbCAgIC0+IFNlcXVlbmNlIGxcblxubGV0IGVtcHR5ID0gYWx0IFtdXG5sZXQgZXBzaWxvbiA9IHNlcSBbXVxubGV0IHJlcG4gciBpIGogPVxuICBpZiBpIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwblwiO1xuICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICB8IFNvbWUgaiB3aGVuIGogPCBpIC0+IGludmFsaWRfYXJnIFwiUmUucmVwblwiXG4gICAgfCBfIC0+ICgpXG4gIGVuZDtcbiAgUmVwZWF0IChyLCBpLCBqKVxubGV0IHJlcCByID0gcmVwbiByIDAgTm9uZVxubGV0IHJlcDEgciA9IHJlcG4gciAxIE5vbmVcbmxldCBvcHQgciA9IHJlcG4gciAwIChTb21lIDEpXG5sZXQgYm9sID0gQmVnX29mX2xpbmVcbmxldCBlb2wgPSBFbmRfb2ZfbGluZVxubGV0IGJvdyA9IEJlZ19vZl93b3JkXG5sZXQgZW93ID0gRW5kX29mX3dvcmRcbmxldCB3b3JkIHIgPSBzZXEgW2JvdzsgcjsgZW93XVxubGV0IG5vdF9ib3VuZGFyeSA9IE5vdF9ib3VuZFxubGV0IGJvcyA9IEJlZ19vZl9zdHJcbmxldCBlb3MgPSBFbmRfb2Zfc3RyXG5sZXQgd2hvbGVfc3RyaW5nIHIgPSBzZXEgW2JvczsgcjsgZW9zXVxubGV0IGxlb2wgPSBMYXN0X2VuZF9vZl9saW5lXG5sZXQgc3RhcnQgPSBTdGFydFxubGV0IHN0b3AgPSBTdG9wXG5sZXQgbG9uZ2VzdCByID0gU2VtIChgTG9uZ2VzdCwgcilcbmxldCBzaG9ydGVzdCByID0gU2VtIChgU2hvcnRlc3QsIHIpXG5sZXQgZmlyc3QgciA9IFNlbSAoYEZpcnN0LCByKVxubGV0IGdyZWVkeSByID0gU2VtX2dyZWVkeSAoYEdyZWVkeSwgcilcbmxldCBub25fZ3JlZWR5IHIgPSBTZW1fZ3JlZWR5IChgTm9uX2dyZWVkeSwgcilcbmxldCBncm91cCA/bmFtZSByID0gR3JvdXAgKG5hbWUsIHIpXG5sZXQgbm9fZ3JvdXAgciA9IE5vX2dyb3VwIHJcbmxldCBuZXN0IHIgPSBOZXN0IHJcbmxldCBtYXJrIHIgPSBsZXQgaSA9IFBtYXJrLmdlbiAoKSBpbiAoaSxQbWFyayAoaSxyKSlcblxubGV0IHNldCBzdHIgPVxuICBsZXQgcyA9IHJlZiBDc2V0LmVtcHR5IGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgZG9cbiAgICBzIDo9IENzZXQudW5pb24gKENzZXQuY3NpbmdsZSBzdHIuW2ldKSAhc1xuICBkb25lO1xuICBTZXQgIXNcblxubGV0IHJnIGMgYycgPSBTZXQgKGNzZXEgYyBjJylcblxubGV0IGludGVyIGwgPVxuICBsZXQgciA9IEludGVyc2VjdGlvbiBsIGluXG4gIGlmIGlzX2NoYXJzZXQgciB0aGVuXG4gICAgclxuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5pbnRlclwiXG5cbmxldCBjb21wbCBsID1cbiAgbGV0IHIgPSBDb21wbGVtZW50IGwgaW5cbiAgaWYgaXNfY2hhcnNldCByIHRoZW5cbiAgICByXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmNvbXBsXCJcblxubGV0IGRpZmYgciByJyA9XG4gIGxldCByJycgPSBEaWZmZXJlbmNlIChyLCByJykgaW5cbiAgaWYgaXNfY2hhcnNldCByJycgdGhlblxuICAgIHInJ1xuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5kaWZmXCJcblxubGV0IGFueSA9IFNldCBDc2V0LmNhbnlcbmxldCBub3RubCA9IFNldCAoQ3NldC5kaWZmIENzZXQuY2FueSAoQ3NldC5jc2luZ2xlICdcXG4nKSlcblxubGV0IGxvd2VyID0gYWx0IFtyZyAnYScgJ3onOyBjaGFyICdcXDE4MSc7IHJnICdcXDIyMycgJ1xcMjQ2JzsgcmcgJ1xcMjQ4JyAnXFwyNTUnXVxubGV0IHVwcGVyID0gYWx0IFtyZyAnQScgJ1onOyByZyAnXFwxOTInICdcXDIxNCc7IHJnICdcXDIxNicgJ1xcMjIyJ11cbmxldCBhbHBoYSA9IGFsdCBbbG93ZXI7IHVwcGVyOyBjaGFyICdcXDE3MCc7IGNoYXIgJ1xcMTg2J11cbmxldCBkaWdpdCA9IHJnICcwJyAnOSdcbmxldCBhbG51bSA9IGFsdCBbYWxwaGE7IGRpZ2l0XVxubGV0IHdvcmRjID0gYWx0IFthbG51bTsgY2hhciAnXyddXG5sZXQgYXNjaWkgPSByZyAnXFwwMDAnICdcXDEyNydcbmxldCBibGFuayA9IHNldCBcIlxcdCBcIlxubGV0IGNudHJsID0gYWx0IFtyZyAnXFwwMDAnICdcXDAzMSc7IHJnICdcXDEyNycgJ1xcMTU5J11cbmxldCBncmFwaCA9IGFsdCBbcmcgJ1xcMDMzJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDI1NSddXG5sZXQgcHJpbnQgPSBhbHQgW3JnICdcXDAzMicgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwyNTUnXVxubGV0IHB1bmN0ID1cbiAgYWx0IFtyZyAnXFwwMzMnICdcXDA0Nyc7IHJnICdcXDA1OCcgJ1xcMDY0JzsgcmcgJ1xcMDkxJyAnXFwwOTYnO1xuICAgICAgIHJnICdcXDEyMycgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwxNjknOyByZyAnXFwxNzEnICdcXDE4MCc7XG4gICAgICAgcmcgJ1xcMTgyJyAnXFwxODUnOyByZyAnXFwxODcnICdcXDE5MSc7IGNoYXIgJ1xcMjE1JzsgY2hhciAnXFwyNDcnXVxubGV0IHNwYWNlID0gYWx0IFtjaGFyICcgJzsgcmcgJ1xcMDA5JyAnXFwwMTMnXVxubGV0IHhkaWdpdCA9IGFsdCBbZGlnaXQ7IHJnICdhJyAnZic7IHJnICdBJyAnRiddXG5cbmxldCBjYXNlIHIgPSBDYXNlIHJcbmxldCBub19jYXNlIHIgPSBOb19jYXNlIHJcblxuKCoqKiopXG5cbmxldCBjb21waWxlIHIgPVxuICBjb21waWxlXzEgKFxuICAgIGlmIGFuY2hvcmVkIHIgdGhlblxuICAgICAgZ3JvdXAgclxuICAgIGVsc2VcbiAgICAgIHNlcSBbc2hvcnRlc3QgKHJlcCBhbnkpOyBncm91cCByXVxuICApXG5cbmxldCBleGVjX2ludGVybmFsIG5hbWUgPyhwb3M9MCkgPyhsZW4gPSAtMSkgfnBhcnRpYWwgfmdyb3VwcyByZSBzID1cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAtMSB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIG5hbWU7XG4gIG1hdGNoX3N0ciB+Z3JvdXBzIH5wYXJ0aWFsIHJlIHMgfnBvcyB+bGVuXG5cbmxldCBleGVjID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCBcIlJlLmV4ZWNcIiA/cG9zID9sZW4gfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgd2l0aFxuICAgIE1hdGNoIHN1YnN0ciAtPiBzdWJzdHJcbiAgfCBfICAgICAgICAgICAgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBleGVjX29wdCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgXCJSZS5leGVjX29wdFwiID9wb3MgP2xlbiB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2VcbiAgICAgICAgICByZSBzIHdpdGhcbiAgICBNYXRjaCBzdWJzdHIgLT4gU29tZSBzdWJzdHJcbiAgfCBfICAgICAgICAgICAgLT4gTm9uZVxuXG5sZXQgZXhlY3AgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6ZmFsc2UgfnBhcnRpYWw6ZmFsc2UgXCJSZS5leGVjcFwiID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBfc3Vic3RyIC0+IHRydWVcbiAgfCBfICAgICAgICAgICAgIC0+IGZhbHNlXG5cbmxldCBleGVjX3BhcnRpYWwgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6ZmFsc2UgfnBhcnRpYWw6dHJ1ZSBcIlJlLmV4ZWNfcGFydGlhbFwiXG4gICAgICAgICAgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIF8gLT4gYEZ1bGxcbiAgfCBSdW5uaW5nIF8gLT4gYFBhcnRpYWxcbiAgfCBGYWlsZWQgIC0+IGBNaXNtYXRjaFxuXG5sZXQgZXhlY19wYXJ0aWFsX2RldGFpbGVkID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6dHJ1ZSBcIlJlLmV4ZWNfcGFydGlhbF9kZXRhaWxlZFwiXG4gICAgICAgICAgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIGdyb3VwIC0+IGBGdWxsIGdyb3VwXG4gIHwgUnVubmluZyB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgfSAtPiBgUGFydGlhbCBub19tYXRjaF9zdGFydHNfYmVmb3JlXG4gIHwgRmFpbGVkICAtPiBgTWlzbWF0Y2hcblxubW9kdWxlIE1hcmsgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBQbWFyay50XG5cbiAgbGV0IHRlc3QgKGcgOiBHcm91cC50KSBwID1cbiAgICBQbWFyay5TZXQubWVtIHAgZy5wbWFya3NcblxuICBsZXQgYWxsIChnIDogR3JvdXAudCkgPSBnLnBtYXJrc1xuXG4gIG1vZHVsZSBTZXQgPSBQbWFyay5TZXRcblxuICBsZXQgZXF1YWwgPSBQbWFyay5lcXVhbFxuXG4gIGxldCBjb21wYXJlID0gUG1hcmsuY29tcGFyZVxuXG5lbmRcblxudHlwZSBzcGxpdF90b2tlbiA9XG4gIFsgYFRleHQgb2Ygc3RyaW5nXG4gIHwgYERlbGltIG9mIEdyb3VwLnRcbiAgXVxuXG5tb2R1bGUgUnNlcSA9IHN0cnVjdFxuICBsZXQgYWxsID8ocG9zPTApID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLmFsbFwiO1xuICAgICgqIGluZGV4IG9mIHRoZSBmaXJzdCBwb3NpdGlvbiB3ZSBkbyBub3QgY29uc2lkZXIuXG4gICAgICAgIXBvcyA8IGxpbWl0IGlzIGFuIGludmFyaWFudCAqKVxuICAgIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLmFsbFwiO1xuICAgICAgICBwb3MrbFxuICAgIGluXG4gICAgKCogaXRlcmF0ZSBvbiBtYXRjaGVzLiBXaGVuIGEgbWF0Y2ggaXMgZm91bmQsIHNlYXJjaCBmb3IgdGhlIG5leHRcbiAgICAgICBvbmUganVzdCBhZnRlciBpdHMgZW5kICopXG4gICAgbGV0IHJlYyBhdXggcG9zICgpID1cbiAgICAgIGlmIHBvcyA+PSBsaW1pdFxuICAgICAgdGhlbiBTZXEuTmlsICgqIG5vIG1vcmUgbWF0Y2hlcyAqKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHNcbiAgICAgICAgICAgICAgICB+cG9zIH5sZW46KGxpbWl0IC0gcG9zKSB3aXRoXG4gICAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAgIGxldCBwb3MgPSBpZiBwMT1wMiB0aGVuIHAyKzEgZWxzZSBwMiBpblxuICAgICAgICAgIFNlcS5Db25zIChzdWJzdHIsIGF1eCBwb3MpXG4gICAgICAgIHwgUnVubmluZyBfXG4gICAgICAgIHwgRmFpbGVkIC0+IFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCBwb3NcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGFsbCA/cG9zID9sZW4gcmUgc1xuICAgIHw+IFNlcS5tYXAgKGZ1biBzdWIgLT4gR3JvdXAuZ2V0IHN1YiAwKVxuXG4gIGxldCBzcGxpdF9mdWxsID8ocG9zPTApID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnNwbGl0XCI7XG4gICAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUuc3BsaXRcIjtcbiAgICAgICAgcG9zK2xcbiAgICBpblxuICAgICgqIGk6IHN0YXJ0IG9mIGRlbGltaXRlZCBzdHJpbmdcbiAgICAgICBwb3M6IGZpcnN0IHBvc2l0aW9uIGFmdGVyIGxhc3QgbWF0Y2ggb2YgW3JlXVxuICAgICAgIGxpbWl0OiBmaXJzdCBpbmRleCB3ZSBpZ25vcmUgKCFwb3MgPCBsaW1pdCBpcyBhbiBpbnZhcmlhbnQpICopXG4gICAgbGV0IHBvczAgPSBwb3MgaW5cbiAgICBsZXQgcmVjIGF1eCBzdGF0ZSBpIHBvcyAoKSA9IG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgIHwgYElkbGUgd2hlbiBwb3MgPj0gbGltaXQgLT5cbiAgICAgICAgaWYgaSA8IGxpbWl0IHRoZW4gKFxuICAgICAgICAgIGxldCBzdWIgPSBTdHJpbmcuc3ViIHMgaSAobGltaXQgLSBpKSBpblxuICAgICAgICAgIFNlcS5Db25zIChgVGV4dCBzdWIsIGF1eCBzdGF0ZSAoaSsxKSBwb3MpXG4gICAgICAgICkgZWxzZSBTZXEuTmlsXG4gICAgICB8IGBJZGxlIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB+cG9zXG4gICAgICAgICAgICAgICAgICAgICAgfmxlbjoobGltaXQgLSBwb3MpIHdpdGhcbiAgICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICAgbGV0IHBvcyA9IGlmIHAxPXAyIHRoZW4gcDIrMSBlbHNlIHAyIGluXG4gICAgICAgICAgbGV0IG9sZF9pID0gaSBpblxuICAgICAgICAgIGxldCBpID0gcDIgaW5cbiAgICAgICAgICBpZiBwMSA+IHBvczAgdGhlbiAoXG4gICAgICAgICAgICAoKiBzdHJpbmcgZG9lcyBub3Qgc3RhcnQgYnkgYSBkZWxpbWl0ZXIgKilcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gU3RyaW5nLnN1YiBzIG9sZF9pIChwMSAtIG9sZF9pKSBpblxuICAgICAgICAgICAgbGV0IHN0YXRlID0gYFlpZWxkIChgRGVsaW0gc3Vic3RyKSBpblxuICAgICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHRleHQsIGF1eCBzdGF0ZSBpIHBvcylcbiAgICAgICAgICApIGVsc2UgU2VxLkNvbnMgKGBEZWxpbSBzdWJzdHIsIGF1eCBzdGF0ZSBpIHBvcylcbiAgICAgICAgfCBSdW5uaW5nIF8gLT4gU2VxLk5pbFxuICAgICAgICB8IEZhaWxlZCAtPlxuICAgICAgICAgIGlmIGkgPCBsaW1pdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHRleHQgPSBTdHJpbmcuc3ViIHMgaSAobGltaXQgLSBpKSBpblxuICAgICAgICAgICAgKCogeWllbGQgbGFzdCBzdHJpbmcgKilcbiAgICAgICAgICAgIFNlcS5Db25zIChgVGV4dCB0ZXh0LCBhdXggc3RhdGUgbGltaXQgcG9zKVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICBlbmRcbiAgICAgIHwgYFlpZWxkIHggLT5cbiAgICAgICAgU2VxLkNvbnMgKHgsIGF1eCBgSWRsZSBpIHBvcylcbiAgICBpblxuICAgIGF1eCBgSWRsZSBwb3MgcG9zXG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgbGV0IHNlcSA9IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgaW5cbiAgICBsZXQgcmVjIGZpbHRlciBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBTZXEuTmlsXG4gICAgICB8IFNlcS5Db25zIChgRGVsaW0gXywgdGwpIC0+IGZpbHRlciB0bCAoKVxuICAgICAgfCBTZXEuQ29ucyAoYFRleHQgcyx0bCkgLT4gU2VxLkNvbnMgKHMsIGZpbHRlciB0bClcbiAgICBpbiBmaWx0ZXIgc2VxXG5lbmRcblxubW9kdWxlIFJsaXN0ID0gc3RydWN0XG4gIGxldCBsaXN0X29mX3NlcSAoczonYSBTZXEudCkgOiAnYSBsaXN0ID1cbiAgICBTZXEuZm9sZF9sZWZ0IChmdW4gbCB4IC0+IHggOjogbCkgW10gcyB8PiBMaXN0LnJldlxuXG4gIGxldCBhbGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLmFsbCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzID0gUnNlcS5tYXRjaGVzID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLnNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLnNwbGl0ID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5lbmRcblxubW9kdWxlIEdlbiA9IHN0cnVjdFxuICB0eXBlICdhIGdlbiA9IHVuaXQgLT4gJ2Egb3B0aW9uXG4gIGxldCBnZW5fb2Zfc2VxIChzOidhIFNlcS50KSA6ICdhIGdlbiA9XG4gICAgbGV0IHIgPSByZWYgcyBpblxuICAgIGZ1biAoKSAtPiBtYXRjaCAhciAoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gTm9uZVxuICAgICAgfCBTZXEuQ29ucyAoeCwgdGwpIC0+XG4gICAgICAgIHIgOj0gdGw7XG4gICAgICAgIFNvbWUgeFxuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA6IF8gZ2VuID1cbiAgICBSc2VxLnNwbGl0ID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyA6IF8gZ2VuID1cbiAgICBSc2VxLnNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBhbGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLmFsbCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLm1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuZW5kXG5cbmxldCByZXBsYWNlID8ocG9zPTApID9sZW4gPyhhbGw9dHJ1ZSkgcmUgfmYgcyA9XG4gIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcGxhY2VcIjtcbiAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgfCBTb21lIGwgLT5cbiAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwbGFjZVwiO1xuICAgICAgcG9zK2xcbiAgaW5cbiAgKCogYnVmZmVyIGludG8gd2hpY2ggd2Ugd3JpdGUgdGhlIHJlc3VsdCAqKVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICAoKiBpdGVyYXRlIG9uIG1hdGNoZWQgc3Vic3RyaW5ncy4gKilcbiAgbGV0IHJlYyBpdGVyIHBvcyA9XG4gICAgaWYgcG9zIDwgbGltaXRcbiAgICB0aGVuXG4gICAgICBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgfnBvcyB+bGVuOihsaW1pdC1wb3MpIHdpdGhcbiAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgKCogYWRkIHN0cmluZyBiZXR3ZWVuIHByZXZpb3VzIG1hdGNoIGFuZCBjdXJyZW50IG1hdGNoICopXG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHBvcyAocDEtcG9zKTtcbiAgICAgICAgKCogd2hhdCBzaG91bGQgd2UgcmVwbGFjZSB0aGUgbWF0Y2hlZCBncm91cCB3aXRoPyAqKVxuICAgICAgICBsZXQgcmVwbGFjaW5nID0gZiBzdWJzdHIgaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHJlcGxhY2luZztcbiAgICAgICAgaWYgYWxsIHRoZW5cbiAgICAgICAgICAoKiBpZiB3ZSBtYXRjaGVkIGEgbm9uLWNoYXIgZS5nLiBeIHdlIG11c3QgbWFudWFsbHkgYWR2YW5jZSBieSAxICopXG4gICAgICAgICAgaXRlciAoXG4gICAgICAgICAgICBpZiBwMT1wMiB0aGVuIChcbiAgICAgICAgICAgICAgKCogYSBub24gY2hhciBjb3VsZCBiZSBwYXN0IHRoZSBlbmQgb2Ygc3RyaW5nLiBlLmcuICQgKilcbiAgICAgICAgICAgICAgaWYgcDIgPCBsaW1pdCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBidWYgcy5bcDJdO1xuICAgICAgICAgICAgICBwMisxXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgcDIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwMiAobGltaXQtcDIpXG4gICAgICB8IFJ1bm5pbmcgXyAtPiAoKVxuICAgICAgfCBGYWlsZWQgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcG9zIChsaW1pdC1wb3MpXG4gIGluXG4gIGl0ZXIgcG9zO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCByZXBsYWNlX3N0cmluZyA/cG9zID9sZW4gP2FsbCByZSB+YnkgcyA9XG4gIHJlcGxhY2UgP3BvcyA/bGVuID9hbGwgcmUgcyB+ZjooZnVuIF8gLT4gYnkpXG5cbmxldCB3aXRuZXNzIHQgPVxuICBsZXQgcmVjIHdpdG5lc3MgPSBmdW5jdGlvblxuICAgIHwgU2V0IGMgLT4gU3RyaW5nLm1ha2UgMSAoQ2hhci5jaHIgKENzZXQucGljayBjKSlcbiAgICB8IFNlcXVlbmNlIHhzIC0+IFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5tYXAgd2l0bmVzcyB4cylcbiAgICB8IEFsdGVybmF0aXZlICh4IDo6IF8pIC0+IHdpdG5lc3MgeFxuICAgIHwgQWx0ZXJuYXRpdmUgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBSZXBlYXQgKHIsIGZyb20sIF90bykgLT5cbiAgICAgIGxldCB3ID0gd2l0bmVzcyByIGluXG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggdyAqIGZyb20pIGluXG4gICAgICBmb3IgX2k9MSB0byBmcm9tIGRvXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgd1xuICAgICAgZG9uZTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgfCBOb19jYXNlIHIgLT4gd2l0bmVzcyByXG4gICAgfCBJbnRlcnNlY3Rpb24gX1xuICAgIHwgQ29tcGxlbWVudCBfXG4gICAgfCBEaWZmZXJlbmNlIChfLCBfKSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IEdyb3VwIChfLCByKVxuICAgIHwgTm9fZ3JvdXAgclxuICAgIHwgTmVzdCByXG4gICAgfCBTZW0gKF8sIHIpXG4gICAgfCBQbWFyayAoXywgcilcbiAgICB8IENhc2UgclxuICAgIHwgU2VtX2dyZWVkeSAoXywgcikgLT4gd2l0bmVzcyByXG4gICAgfCBCZWdfb2ZfbGluZVxuICAgIHwgRW5kX29mX2xpbmVcbiAgICB8IEJlZ19vZl93b3JkXG4gICAgfCBFbmRfb2Zfd29yZFxuICAgIHwgTm90X2JvdW5kXG4gICAgfCBCZWdfb2Zfc3RyXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lXG4gICAgfCBTdGFydFxuICAgIHwgU3RvcFxuICAgIHwgRW5kX29mX3N0ciAtPiBcIlwiIGluXG4gIHdpdG5lc3MgKGhhbmRsZV9jYXNlIGZhbHNlIHQpXG5cbm1vZHVsZSBTZXEgPSBSc2VxXG5tb2R1bGUgTGlzdCA9IFJsaXN0XG5tb2R1bGUgR3JvdXAgPSBHcm91cFxuXG4oKiogezIgRGVwcmVjYXRlZCBmdW5jdGlvbnN9ICopXG5cbmxldCBzcGxpdF9mdWxsX3NlcSA9IFNlcS5zcGxpdF9mdWxsXG5sZXQgc3BsaXRfc2VxID0gU2VxLnNwbGl0XG5sZXQgbWF0Y2hlc19zZXEgPSBTZXEubWF0Y2hlc1xubGV0IGFsbF9zZXEgPSBTZXEuYWxsXG5cbnR5cGUgJ2EgZ2VuICAgICAgICA9ICdhIEdlbi5nZW5cbmxldCBhbGxfZ2VuICAgICAgICA9IEdlbi5hbGxcbmxldCBtYXRjaGVzX2dlbiAgICA9IEdlbi5tYXRjaGVzXG5sZXQgc3BsaXRfZ2VuICAgICAgPSBHZW4uc3BsaXRcbmxldCBzcGxpdF9mdWxsX2dlbiA9IEdlbi5zcGxpdF9mdWxsXG5cblxudHlwZSBzdWJzdHJpbmdzID0gR3JvdXAudFxuXG5sZXQgZ2V0ID0gR3JvdXAuZ2V0XG5sZXQgZ2V0X29mcyA9IEdyb3VwLm9mZnNldFxubGV0IGdldF9hbGwgPSBHcm91cC5hbGxcbmxldCBnZXRfYWxsX29mcyA9IEdyb3VwLmFsbF9vZmZzZXRcbmxldCB0ZXN0ID0gR3JvdXAudGVzdFxuXG50eXBlIG1hcmtpZCA9IE1hcmsudFxuXG5sZXQgbWFya2VkID0gTWFyay50ZXN0XG5sZXQgbWFya19zZXQgPSBNYXJrLmFsbFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCpcbkluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmV2aW91cyBjaGFyYWN0ZXI6XG4tIGRvZXMgbm90IGV4aXN0c1xuLSBpcyBhIGxldHRlclxuLSBpcyBub3QgYSBsZXR0ZXJcbi0gaXMgYSBuZXdsaW5lXG4tIGlzIGxhc3QgbmV3bGluZVxuXG5CZWdpbm5pbmcgb2Ygd29yZDpcbi0gcHJldmlvdXMgaXMgbm90IGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG4tIGN1cnJlbnQgaXMgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIHdvcmQ6XG4tIHByZXZpb3VzIGlzIGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG4tIGN1cnJlbnQgaXMgbm90IGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG5cbkJlZ2lubmluZyBvZiBsaW5lOlxuLSBwcmV2aW91cyBpcyBhIG5ld2xpbmUgb3IgZG9lcyBub3QgZXhpc3RcblxuQmVnaW5uaW5nIG9mIGJ1ZmZlcjpcbi0gcHJldmlvdXMgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIGJ1ZmZlclxuLSBjdXJyZW50IGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiBsaW5lXG4tIGN1cnJlbnQgaXMgYSBuZXdsaW5lIG9yIGRvZXMgbm90IGV4aXN0XG4qKVxuXG4oKlxuUmVwOiBlID0gVCxlIHwgKClcbiAgLSBzZW1hbnRpY3Mgb2YgdGhlIGNvbW1hIChzaG9ydGVzdC9sb25nZXN0L2ZpcnN0KVxuICAtIHNlbWFudGljcyBvZiB0aGUgdW5pb24gKGdyZWVkeS9ub24tZ3JlZWR5KVxuXG5Cb3VuZGVkIHJlcGV0aXRpb25cbiAgYXswLDN9ID0gKGEsKGEsYT8pPyk/XG4qKVxuXG50eXBlIGdyb3VwcyA9IEdyb3VwLnRcblxuaW5jbHVkZSBSbGlzdFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwYXJzZSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgdGVzdDIgYyBjJyA9ICFpICsgMSA8IGwgJiYgcy5bIWldID0gYyAmJiBzLlshaSArIDFdID0gYycgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgYWNjZXB0MiBjIGMnID0gbGV0IHIgPSB0ZXN0MiBjIGMnIGluIGlmIHIgdGhlbiBpIDo9ICFpICsgMjsgciBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdDIgJ1xcXFwnICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0MiAnXFxcXCcgJ3wnIHx8IHRlc3QyICdcXFxcJyAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBSZS5yZXAgciBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIFJlLnJlcDEgciBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIFJlLm9wdCByIGVsc2VcbiAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIFJlLm5vdG5sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBSZS5ib2xcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIFJlLmVvbFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIChicmFja2V0IFtdKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQyICdcXFxcJyAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIFJlLmdyb3VwIHJcbiAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnYCcgdGhlblxuICAgICAgICBSZS5ib3NcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdcXCcnIHRoZW5cbiAgICAgICAgUmUuZW9zXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPScgdGhlblxuICAgICAgICBSZS5zdGFydFxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ2InIHRoZW5cbiAgICAgICAgUmUuYWx0IFtSZS5ib3c7IFJlLmVvd11cbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdCJyB0aGVuXG4gICAgICAgIFJlLm5vdF9ib3VuZGFyeVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJzwnIHRoZW5cbiAgICAgICAgUmUuYm93XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPicgdGhlblxuICAgICAgICBSZS5lb3dcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICd3JyB0aGVuXG4gICAgICAgIFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ1cnIHRoZW5cbiAgICAgICAgUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ1snIHwgJ10nIHwgJy4nIHwgJ14nIHwgJyQnIHwgJ1xcXFwnIGFzIGMgLT5cbiAgICAgICAgICAgIFJlLmNoYXIgY1xuICAgICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgZW5kXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICBjICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBnZXQgKClcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbmxldCByZSA/KGNhc2UgPSB0cnVlKSBzID0gbGV0IHIgPSBwYXJzZSBzIGluIGlmIGNhc2UgdGhlbiByIGVsc2UgUmUubm9fY2FzZSByXG5cbmxldCBjb21waWxlID0gUmUuY29tcGlsZVxubGV0IGNvbXBpbGVfcGF0ID8oY2FzZSA9IHRydWUpIHMgPSBjb21waWxlIChyZSB+Y2FzZSBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqKVxuKCogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqKVxuKCogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAqKVxuKCogIGxpbmtpbmcgZXhjZXB0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2RpZmllZCBieSBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnIgZm9yIGludGVncmF0aW9uIGluIFJFICopXG5cbigqICRJZDogcmVfc3RyLm1sLHYgMS4zIDIwMDIvMDcvMDMgMTU6NDc6NTQgdm91aWxsb24gRXhwICQgKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG50eXBlIHJlZ2V4cCA9XG4gIHsgcmU6IFJlLnRcbiAgOyBtdGNoOiBSZS5yZSBMYXp5LnRcbiAgOyBzcmNoOiBSZS5yZSBMYXp5LnQgfVxuXG5sZXQgY29tcGlsZV9yZWdleHAgcyBjID1cbiAgbGV0IHJlID0gRW1hY3MucmUgfmNhc2U6KG5vdCBjKSBzIGluXG4gIHsgcmVcbiAgOyBtdGNoID0gbGF6eSAoUmUuY29tcGlsZSAoUmUuc2VxIFtSZS5zdGFydDsgcmVdKSlcbiAgOyBzcmNoID0gbGF6eSAoUmUuY29tcGlsZSByZSkgfVxuXG5sZXQgc3RhdGUgPSByZWYgTm9uZVxuXG5sZXQgc3RyaW5nX21hdGNoIHJlIHMgcCA9XG4gIHRyeVxuICAgIHN0YXRlIDo9IFNvbWUgKFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHMpO1xuICAgIHRydWVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIGZhbHNlXG5cbmxldCBzdHJpbmdfcGFydGlhbF9tYXRjaCByZSBzIHAgPVxuICBtYXRjaFxuICAgIFJlLmV4ZWNfcGFydGlhbCB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgc1xuICB3aXRoXG4gICAgYEZ1bGwgICAgIC0+IHN0cmluZ19tYXRjaCByZSBzIHBcbiAgfCBgUGFydGlhbCAgLT4gdHJ1ZVxuICB8IGBNaXNtYXRjaCAtPiBmYWxzZVxuXG5sZXQgc2VhcmNoX2ZvcndhcmQgcmUgcyBwID1cbiAgdHJ5XG4gICAgbGV0IHJlcyA9IFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLnNyY2gpIHMgaW5cbiAgICBzdGF0ZSA6PSBTb21lIHJlcztcbiAgICBmc3QgKFJlLkdyb3VwLm9mZnNldCByZXMgMClcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgcmVjIHNlYXJjaF9iYWNrd2FyZCByZSBzIHAgPVxuICB0cnlcbiAgICBsZXQgcmVzID0gUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgcyBpblxuICAgIHN0YXRlIDo9IFNvbWUgcmVzO1xuICAgIHBcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIGlmIHAgPSAwIHRoZW5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2VcbiAgICAgIHNlYXJjaF9iYWNrd2FyZCByZSBzIChwIC0gMSlcblxubGV0IHZhbGlkX2dyb3VwIG4gPVxuICBuID49IDAgJiYgbiA8IDEwICYmIChcbiAgICBtYXRjaCAhc3RhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBtIC0+IG4gPCBSZS5Hcm91cC5uYl9ncm91cHMgbVxuICApXG5cbmxldCBvZmZzZXRfZ3JvdXAgaSA9XG4gIG1hdGNoICFzdGF0ZSB3aXRoXG4gIHwgU29tZSBtIC0+IFJlLkdyb3VwLm9mZnNldCBtIGlcbiAgfCBOb25lICAgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBncm91cF9sZW4gaSA9XG4gIHRyeVxuICAgIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgaSBpblxuICAgIGUgLSBiXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgMFxuXG5sZXQgcmVjIHJlcGxfbGVuZ3RoIHJlcGwgcCBxIGxlbiA9XG4gIGlmIHAgPCBsZW4gdGhlbiBiZWdpblxuICAgIGlmIHJlcGwuW3BdIDw+ICdcXFxcJyB0aGVuXG4gICAgICByZXBsX2xlbmd0aCByZXBsIChwICsgMSkgKHEgKyAxKSBsZW5cbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgcCA9IHAgKyAxIGluXG4gICAgICBpZiBwID0gbGVuIHRoZW4gZmFpbHdpdGggXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIjtcbiAgICAgIGxldCBxID1cbiAgICAgICAgbWF0Y2ggcmVwbC5bcF0gd2l0aFxuICAgICAgICB8ICdcXFxcJyAtPiBxICsgMVxuICAgICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBxICsgZ3JvdXBfbGVuIChDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCcpXG4gICAgICAgIHwgXyAtPiBxICsgMiBpblxuICAgICAgcmVwbF9sZW5ndGggcmVwbCAocCArIDEpIHEgbGVuXG4gICAgZW5kXG4gIGVuZCBlbHNlXG4gICAgcVxuXG5sZXQgcmVjIHJlcGxhY2Ugb3JpZyByZXBsIHAgcmVzIHEgbGVuID1cbiAgaWYgcCA8IGxlbiB0aGVuIGJlZ2luXG4gICAgbGV0IGMgPSByZXBsLltwXSBpblxuICAgIGlmIGMgPD4gJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIEJ5dGVzLnNldCByZXMgcSBjO1xuICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAxKSByZXMgKHEgKyAxKSBsZW5cbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgbWF0Y2ggcmVwbC5bcCArIDFdIHdpdGhcbiAgICAgICAgJ1xcXFwnIC0+XG4gICAgICAgIEJ5dGVzLnNldCByZXMgcSAnXFxcXCc7XG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgMSkgbGVuXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIChDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgICAgICBsZXQgZCA9IGUgLSBiIGluXG4gICAgICAgICAgICBpZiBkID4gMCB0aGVuIFN0cmluZy5ibGl0IG9yaWcgYiByZXMgcSBkO1xuICAgICAgICAgICAgZFxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAwXG4gICAgICAgIGluXG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgZCkgbGVuXG4gICAgICB8IGMgLT5cbiAgICAgICAgQnl0ZXMuc2V0IHJlcyBxICdcXFxcJztcbiAgICAgICAgQnl0ZXMuc2V0IHJlcyAocSArIDEpIGM7XG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgMikgbGVuXG4gICAgZW5kXG4gIGVuZFxuXG5sZXQgcmVwbGFjZW1lbnRfdGV4dCByZXBsIG9yaWcgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCByZXBsIGluXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgKHJlcGxfbGVuZ3RoIHJlcGwgMCAwIGxlbikgaW5cbiAgcmVwbGFjZSBvcmlnIHJlcGwgMCByZXMgMCAoU3RyaW5nLmxlbmd0aCByZXBsKTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxubGV0IHF1b3RlIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlICgyICogbGVuKSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICdbJyB8ICddJyB8ICcqJyB8ICcuJyB8ICdcXFxcJyB8ICc/JyB8ICcrJyB8ICdeJyB8ICckJyBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICAgIHwgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgZG9uZTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgc3RyaW5nX2JlZm9yZSBzIG4gPSBTdHJpbmcuc3ViIHMgMCBuXG5cbmxldCBzdHJpbmdfYWZ0ZXIgcyBuID0gU3RyaW5nLnN1YiBzIG4gKFN0cmluZy5sZW5ndGggcyAtIG4pXG5cbmxldCBmaXJzdF9jaGFycyBzIG4gPSBTdHJpbmcuc3ViIHMgMCBuXG5cbmxldCBsYXN0X2NoYXJzIHMgbiA9IFN0cmluZy5zdWIgcyAoU3RyaW5nLmxlbmd0aCBzIC0gbikgblxuXG5sZXQgcmVnZXhwIGUgPSBjb21waWxlX3JlZ2V4cCBlIGZhbHNlXG5cbmxldCByZWdleHBfY2FzZV9mb2xkIGUgPSBjb21waWxlX3JlZ2V4cCBlIHRydWVcblxubGV0IHJlZ2V4cF9zdHJpbmcgcyA9IGNvbXBpbGVfcmVnZXhwIChxdW90ZSBzKSBmYWxzZVxuXG5sZXQgcmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQgcyA9IGNvbXBpbGVfcmVnZXhwIChxdW90ZSBzKSB0cnVlXG5cbmxldCBncm91cF9iZWdpbm5pbmcgbiA9XG4gIGlmIG5vdCAodmFsaWRfZ3JvdXAgbikgdGhlbiBpbnZhbGlkX2FyZyBcIlN0ci5ncm91cF9iZWdpbm5pbmdcIjtcbiAgbGV0IHBvcyA9IGZzdCAob2Zmc2V0X2dyb3VwIG4pIGluXG4gIGlmIHBvcyA9IC0xIHRoZW5cbiAgICByYWlzZSBOb3RfZm91bmRcbiAgZWxzZVxuICAgIHBvc1xuXG5sZXQgZ3JvdXBfZW5kIG4gPVxuICBpZiBub3QgKHZhbGlkX2dyb3VwIG4pIHRoZW4gaW52YWxpZF9hcmcgXCJTdHIuZ3JvdXBfZW5kXCI7XG4gIGxldCBwb3MgPSBzbmQgKG9mZnNldF9ncm91cCBuKSBpblxuICBpZiBwb3MgPSAtMSB0aGVuXG4gICAgcmFpc2UgTm90X2ZvdW5kXG4gIGVsc2VcbiAgICBwb3NcblxubGV0IG1hdGNoZWRfZ3JvdXAgbiB0eHQgPVxuICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIG4gaW5cbiAgU3RyaW5nLnN1YiB0eHQgYiAoZSAtIGIpXG5cbmxldCByZXBsYWNlX21hdGNoZWQgcmVwbCBtYXRjaGVkID0gcmVwbGFjZW1lbnRfdGV4dCByZXBsIG1hdGNoZWRcblxubGV0IG1hdGNoX2JlZ2lubmluZyAoKSA9IGdyb3VwX2JlZ2lubmluZyAwXG5hbmQgbWF0Y2hfZW5kICgpID0gZ3JvdXBfZW5kIDBcbmFuZCBtYXRjaGVkX3N0cmluZyB0eHQgPSBtYXRjaGVkX2dyb3VwIDAgdHh0XG5cbmxldCBzdWJzdGl0dXRlX2ZpcnN0IGV4cHIgcmVwbF9mdW4gdGV4dCA9XG4gIHRyeVxuICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZCBleHByIHRleHQgMCBpblxuICAgIFN0cmluZy5jb25jYXQgXCJcIiBbc3RyaW5nX2JlZm9yZSB0ZXh0IHBvcztcbiAgICAgICAgICAgICAgICAgICAgICByZXBsX2Z1biB0ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19hZnRlciB0ZXh0IChtYXRjaF9lbmQgKCkpXVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHRleHRcblxubGV0IGdsb2JhbF9zdWJzdGl0dXRlIGV4cHIgcmVwbF9mdW4gdGV4dCA9XG4gIGxldCByZWMgcmVwbGFjZSBhY2N1IHN0YXJ0IGxhc3Rfd2FzX2VtcHR5ID1cbiAgICBsZXQgc3RhcnRwb3MgPSBpZiBsYXN0X3dhc19lbXB0eSB0aGVuIHN0YXJ0ICsgMSBlbHNlIHN0YXJ0IGluXG4gICAgaWYgc3RhcnRwb3MgPiBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgbWF0Y2ggc2VhcmNoX2ZvcndhcmQgZXhwciB0ZXh0IHN0YXJ0cG9zIHdpdGhcbiAgICAgIHwgcG9zIC0+XG4gICAgICAgIGxldCBlbmRfcG9zID0gbWF0Y2hfZW5kICgpIGluXG4gICAgICAgIGxldCByZXBsX3RleHQgPSByZXBsX2Z1biB0ZXh0IGluXG4gICAgICAgIHJlcGxhY2UgKHJlcGxfdGV4dCA6OiBTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkgOjogYWNjdSlcbiAgICAgICAgICBlbmRfcG9zIChlbmRfcG9zID0gcG9zKVxuICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICBpblxuICBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IChyZXBsYWNlIFtdIDAgZmFsc2UpKVxuXG5sZXQgZ2xvYmFsX3JlcGxhY2UgZXhwciByZXBsIHRleHQgPVxuICBnbG9iYWxfc3Vic3RpdHV0ZSBleHByIChyZXBsYWNlbWVudF90ZXh0IHJlcGwpIHRleHRcbmFuZCByZXBsYWNlX2ZpcnN0IGV4cHIgcmVwbCB0ZXh0ID1cbiAgc3Vic3RpdHV0ZV9maXJzdCBleHByIChyZXBsYWNlbWVudF90ZXh0IHJlcGwpIHRleHRcblxubGV0IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIHJlIHMgcCA9XG4gIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZCByZSBzIHAgaW5cbiAgaWYgbWF0Y2hfZW5kICgpID4gcCB0aGVuXG4gICAgcG9zXG4gIGVsc2UgaWYgcCA8IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgc2VhcmNoX2ZvcndhcmQgcmUgcyAocCArIDEpXG4gIGVsc2VcbiAgICByYWlzZSBOb3RfZm91bmRcblxubGV0IGJvdW5kZWRfc3BsaXQgZXhwciB0ZXh0IG51bSA9XG4gIGxldCBzdGFydCA9XG4gICAgaWYgc3RyaW5nX21hdGNoIGV4cHIgdGV4dCAwIHRoZW4gbWF0Y2hfZW5kICgpIGVsc2UgMCBpblxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPj0gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIHNwbGl0ICgoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpKSA6OiBhY2N1KVxuICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBMaXN0LnJldiAoc3BsaXQgW10gc3RhcnQgbnVtKVxuXG5sZXQgc3BsaXQgZXhwciB0ZXh0ID0gYm91bmRlZF9zcGxpdCBleHByIHRleHQgMFxuXG5sZXQgYm91bmRlZF9zcGxpdF9kZWxpbSBleHByIHRleHQgbnVtID1cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID4gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIHNwbGl0IChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkgOjogYWNjdSlcbiAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgaWYgdGV4dCA9IFwiXCIgdGhlblxuICAgIFtdXG4gIGVsc2VcbiAgICBMaXN0LnJldiAoc3BsaXQgW10gMCBudW0pXG5cbmxldCBzcGxpdF9kZWxpbSBleHByIHRleHQgPSBib3VuZGVkX3NwbGl0X2RlbGltIGV4cHIgdGV4dCAwXG5cbnR5cGUgc3BsaXRfcmVzdWx0ID0gVGV4dCBvZiBzdHJpbmcgfCBEZWxpbSBvZiBzdHJpbmdcblxubGV0IGJvdW5kZWRfZnVsbF9zcGxpdCBleHByIHRleHQgbnVtID1cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID49IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICBUZXh0IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIGxldCBzID0gbWF0Y2hlZF9zdHJpbmcgdGV4dCBpblxuICAgICAgICBpZiBwb3MgPiBzdGFydCB0aGVuXG4gICAgICAgICAgc3BsaXQgKERlbGltIChzKSA6OlxuICAgICAgICAgICAgICAgICBUZXh0IChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcyAtIHN0YXJ0KSkgOjpcbiAgICAgICAgICAgICAgICAgYWNjdSlcbiAgICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHNwbGl0IChEZWxpbSAocykgOjogYWNjdSlcbiAgICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIFRleHQgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIExpc3QucmV2IChzcGxpdCBbXSAwIG51bSlcblxubGV0IGZ1bGxfc3BsaXQgZXhwciB0ZXh0ID0gYm91bmRlZF9mdWxsX3NwbGl0IGV4cHIgdGV4dCAwXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuXG50eXBlIGVuY2xvc2VkID1cbiAgfCBDaGFyIG9mIGNoYXJcbiAgfCBSYW5nZSBvZiBjaGFyICogY2hhclxuXG50eXBlIHBpZWNlID1cbiAgfCBFeGFjdGx5IG9mIGNoYXJcbiAgfCBBbnlfb2Ygb2YgZW5jbG9zZWQgbGlzdFxuICB8IEFueV9idXQgb2YgZW5jbG9zZWQgbGlzdFxuICB8IE9uZVxuICB8IE1hbnlcbiAgfCBNYW55TWFueVxuXG50eXBlIHQgPSBwaWVjZSBsaXN0XG5cbmxldCBvZl9zdHJpbmcgfmRvdWJsZV9hc3RlcmlzayBzIDogdCA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgcmVhZCBjID1cbiAgICBsZXQgciA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gICAgaWYgciB0aGVuIGluY3IgaTtcbiAgICByXG4gIGluXG5cbiAgKCoqXG4gICBbcmVhZF9haGVhZCBwYXR0ZXJuXSB3aWxsIGF0dGVtcHQgdG8gcmVhZCBbcGF0dGVybl0gYW5kIHdpbGwgcmV0dXJuIFt0cnVlXSBpZiBpdCB3YXMgc3VjY2Vzc2Z1bC5cbiAgIElmIGl0IGZhaWxzLCBpdCB3aWxsIHJldHVybiBbZmFsc2VdIGFuZCBub3QgaW5jcmVtZW50IHRoZSByZWFkIGluZGV4LlxuICAqKVxuICBsZXQgcmVhZF9haGVhZCBwYXR0ZXJuID1cbiAgICBsZXQgcGF0dGVybl9sZW4gPSBTdHJpbmcubGVuZ3RoIHBhdHRlcm4gaW5cbiAgICAoKiBpZiB0aGUgcGF0dGVybiB3ZSBhcmUgbG9va2luZyBmb3IgZXhlZWRzIHRoZSByZW1haW5pbmcgbGVuZ3RoIG9mIHMsIHJldHVybiBmYWxzZSBpbW1lZGlhdGVseSAqKVxuICAgIGlmICFpICsgcGF0dGVybl9sZW4gPj0gbCB0aGVuXG4gICAgICBmYWxzZVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBmb3IgaiA9IDAgdG8gcGF0dGVybl9sZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IGZvdW5kID0gbm90IChlb3MgKCkpICYmIHMuWyFpICsgal0gPSBwYXR0ZXJuLltqXSBpblxuICAgICAgICAgIGlmIG5vdCBmb3VuZCB0aGVuIHJhaXNlX25vdHJhY2UgRXhpdDtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaSA6PSAhaSArIHBhdHRlcm5fbGVuO1xuICAgICAgICB0cnVlXG4gICAgICB3aXRoIHwgRXhpdCAgLT4gZmFsc2VcbiAgaW5cblxuICBsZXQgY2hhciAoKSA9XG4gICAgaWdub3JlIChyZWFkICdcXFxcJyA6IGJvb2wpO1xuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCByID0gcy5bIWldIGluXG4gICAgaW5jciBpO1xuICAgIHJcbiAgaW5cblxuICBsZXQgZW5jbG9zZWQgKCkgOiBlbmNsb3NlZCBsaXN0ID1cbiAgICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgICAoKiBUaGlzIHJldHVybnMgdGhlIGxpc3QgaW4gcmV2ZXJzZSBvcmRlciwgYnV0IG9yZGVyIGlzbid0IGltcG9ydGFudCBhbnl3YXkgKilcbiAgICAgIGlmIHMgPD4gW10gJiYgcmVhZCAnXSdcbiAgICAgIHRoZW4gc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgICAgaWYgbm90IChyZWFkICctJylcbiAgICAgICAgdGhlbiBsb29wIChDaGFyIGMgOjogcylcbiAgICAgICAgZWxzZSBpZiByZWFkICddJ1xuICAgICAgICB0aGVuIENoYXIgYyA6OiBDaGFyICctJyA6OiBzXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgbG9vcCAoUmFuZ2UgKGMsIGMnKSA6OiBzKVxuICAgIGluXG4gICAgbG9vcCBbXVxuICBpblxuXG4gIGxldCBwaWVjZSAoKSA9XG4gICAgaWYgZG91YmxlX2FzdGVyaXNrICYmIHJlYWRfYWhlYWQgXCIvKipcIiAmJiBub3QgKGVvcyAoKSlcbiAgICB0aGVuIE1hbnlNYW55XG4gICAgZWxzZSBpZiByZWFkICcqJ1xuICAgIHRoZW4gaWYgZG91YmxlX2FzdGVyaXNrICYmIHJlYWQgJyonXG4gICAgICB0aGVuIE1hbnlNYW55XG4gICAgICBlbHNlIE1hbnlcbiAgICBlbHNlIGlmIHJlYWQgJz8nXG4gICAgdGhlbiBPbmVcbiAgICBlbHNlIGlmIG5vdCAocmVhZCAnWycpXG4gICAgdGhlbiBFeGFjdGx5IChjaGFyICgpKVxuICAgIGVsc2UgaWYgcmVhZCAnXicgfHwgcmVhZCAnISdcbiAgICB0aGVuIEFueV9idXQgKGVuY2xvc2VkICgpKVxuICAgIGVsc2UgQW55X29mIChlbmNsb3NlZCAoKSlcbiAgaW5cblxuICBsZXQgcmVjIGxvb3AgcGllY2VzID1cbiAgICBpZiBlb3MgKClcbiAgICB0aGVuIExpc3QucmV2IHBpZWNlc1xuICAgIGVsc2UgbG9vcCAocGllY2UgKCkgOjogcGllY2VzKVxuICBpblxuXG4gIGxvb3AgW11cblxubGV0IG11bCBsIGwnID1cbiAgTGlzdC5mbGF0dGVuIChMaXN0Lm1hcCAoZnVuIHMgLT4gTGlzdC5tYXAgKGZ1biBzJyAtPiBzIF4gcycpIGwnKSBsKVxuXG5sZXQgZXhwbG9kZSBzdHIgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZWMgZXhwbCBpbm5lciBzIGkgYWNjIGJlZyA9XG4gICAgaWYgaSA+PSBsIHRoZW4gYmVnaW5cbiAgICAgIGlmIGlubmVyIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSwgaSlcbiAgICBlbmQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICB8ICdcXFxcJyAtPiBleHBsIGlubmVyIHMgKGkgKyAyKSBhY2MgYmVnXG4gICAgICB8ICd7JyAtPlxuICAgICAgICBsZXQgKHQsIGknKSA9IGV4cGwgdHJ1ZSAoaSArIDEpIChpICsgMSkgW10gW1wiXCJdIGluXG4gICAgICAgIGV4cGwgaW5uZXIgaScgaScgYWNjXG4gICAgICAgICAgKG11bCBiZWcgKG11bCBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSB0KSlcbiAgICAgIHwgJywnIHdoZW4gaW5uZXIgLT5cbiAgICAgICAgZXhwbCBpbm5lciAoaSArIDEpIChpICsgMSlcbiAgICAgICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSBAIGFjYykgW1wiXCJdXG4gICAgICB8ICd9JyB3aGVuIGlubmVyIC0+XG4gICAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIEAgYWNjLCBpICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBleHBsIGlubmVyIHMgKGkgKyAxKSBhY2MgYmVnXG4gIGluXG4gIExpc3QucmV2IChmc3QgKGV4cGwgZmFsc2UgMCAwIFtdIFtcIlwiXSkpXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVfcGllY2VzICAgICAgICAgICAgICAgIDogUmUudCBsaXN0OyAgKCogbGFzdCBwaWVjZSBhdCBoZWFkIG9mIGxpc3QuICopXG4gICAgcmVtYWluaW5nICAgICAgICAgICAgICAgIDogcGllY2UgbGlzdDsgKCogbGFzdCBwaWVjZSBhdCB0YWlsIG9mIGxpc3QuICopXG4gICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiAgIDogYm9vbDsgICAgICAgKCogdHJ1ZSBhdCBzdGFydCBvZiBwYXR0ZXJuICopXG4gICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50IDogYm9vbDsgICAgICAgKCogdHJ1ZSBhdCBzdGFydCBvZiBwYXR0ZXJuIG9yIGltbWVkaWF0ZWx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgJy8nICopXG4gICAgcGF0aG5hbWUgICAgICAgICAgICAgICAgIDogYm9vbDtcbiAgICBtYXRjaF9iYWNrc2xhc2hlcyAgICAgICAgOiBib29sO1xuICAgIHBlcmlvZCAgICAgICAgICAgICAgICAgICA6IGJvb2w7XG4gIH1cblxuICBsZXQgY3JlYXRlIH5wZXJpb2QgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyByZW1haW5pbmcgPVxuICAgIHtcbiAgICAgIHJlX3BpZWNlcyA9IFtdO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiA9IHRydWU7XG4gICAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgPSB0cnVlO1xuICAgICAgcGF0aG5hbWU7XG4gICAgICBtYXRjaF9iYWNrc2xhc2hlcztcbiAgICAgIHBlcmlvZDtcbiAgICAgIHJlbWFpbmluZztcbiAgICB9XG5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCB0ID1cbiAgICB0LnBlcmlvZCAmJiAoXG4gICAgICB0LmFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gfHxcbiAgICAgICh0LmFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCAmJiB0LnBhdGhuYW1lKVxuICAgIClcblxuICBsZXQgZXhwbGljaXRfc2xhc2ggdCA9IHQucGF0aG5hbWVcblxuICBsZXQgc2xhc2hlcyB0ID1cbiAgICBpZiB0Lm1hdGNoX2JhY2tzbGFzaGVzIHRoZW4gWycvJzsgJ1xcXFwnXSBlbHNlIFsnLyddXG5cbiAgbGV0IGFwcGVuZCA/KGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudD1mYWxzZSkgdCBwaWVjZSA9XG4gICAgeyB0IHdpdGhcbiAgICAgIHJlX3BpZWNlcyA9IHBpZWNlIDo6IHQucmVfcGllY2VzO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiA9IGZhbHNlO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50O1xuICAgIH1cblxuICBsZXQgdG9fcmUgdCA9IFJlLnNlcSAoTGlzdC5yZXYgdC5yZV9waWVjZXMpXG5cbiAgbGV0IG5leHQgdCA9XG4gICAgbWF0Y2ggdC5yZW1haW5pbmcgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgcGllY2UgOjogcmVtYWluaW5nIC0+IFNvbWUgKHBpZWNlLCB7IHQgd2l0aCByZW1haW5pbmcgfSlcbmVuZFxuXG5sZXQgb25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kID1cbiAgUmUuY29tcGwgKFxuICAgIExpc3QuY29uY2F0IFtcbiAgICAgIGlmIGV4cGxpY2l0X3NsYXNoICB0aGVuIExpc3QubWFwIFJlLmNoYXIgc2xhc2hlcyBlbHNlIFtdO1xuICAgICAgaWYgZXhwbGljaXRfcGVyaW9kIHRoZW4gW1JlLmNoYXIgJy4nXSBlbHNlIFtdO1xuICAgIF1cbiAgKVxuXG5sZXQgZW5jbG9zZWQgZW5jbG9zZWQgPVxuICBtYXRjaCBlbmNsb3NlZCB3aXRoXG4gIHwgQ2hhciBjIC0+IFJlLmNoYXIgY1xuICB8IFJhbmdlIChsb3csIGhpZ2gpIC0+IFJlLnJnIGxvdyBoaWdoXG5cbmxldCBlbmNsb3NlZF9zZXQgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Qga2luZCBzZXQgPVxuICBsZXQgc2V0ID0gTGlzdC5tYXAgZW5jbG9zZWQgc2V0IGluXG4gIGxldCBlbmNsb3N1cmUgPVxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgIHwgYEFueV9vZiAtPiBSZS5hbHQgc2V0XG4gICAgfCBgQW55X2J1dCAtPiBSZS5jb21wbCBzZXRcbiAgaW5cbiAgUmUuaW50ZXIgW2VuY2xvc3VyZTsgb25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kXVxuXG5sZXQgZXhhY3RseSBzdGF0ZSBjID1cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIGxldCBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgPSBMaXN0Lm1lbSBjIHNsYXNoZXMgaW5cbiAgbGV0IGNoYXJzID0gaWYgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50IHRoZW4gc2xhc2hlcyBlbHNlIFtjXSBpblxuICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLmFsdCAoTGlzdC5tYXAgUmUuY2hhciBjaGFycykpIH5hbV9hdF9zdGFydF9vZl9jb21wb25lbnRcblxubGV0IG1hbnlfbWFueSBzdGF0ZSA9XG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBzdGF0ZS5TdGF0ZS5wZXJpb2QgJiYgc3RhdGUuU3RhdGUucGF0aG5hbWUgaW5cbiAgbGV0IGZpcnN0X2V4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbGV0IG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kID1cbiAgICBSZS5zZXEgW1xuICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDtcbiAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgIF1cbiAgaW5cbiAgKCogV2UgbXVzdCBtYXRjaCBjb21wb25lbnRzIGluZGl2aWR1YWxseSB3aGVuIFtwZXJpb2RdIGZsYWcgaXMgc2V0LFxuICAgICBtYWtpbmcgc3VyZSB0byBub3QgbWF0Y2ggW1wiZm9vLy5iYXJcIl0uICopXG4gIFN0YXRlLmFwcGVuZCBzdGF0ZSAoXG4gICAgUmUuc2VxIFtcbiAgICAgIFJlLm9wdCAobWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2Q6Zmlyc3RfZXhwbGljaXRfcGVyaW9kKTtcbiAgICAgIFJlLnJlcCAoXG4gICAgICAgIFJlLnNlcSBbXG4gICAgICAgICAgUmUuYWx0IChMaXN0Lm1hcCBSZS5jaGFyIHNsYXNoZXMpO1xuICAgICAgICAgIFJlLm9wdCAobWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2QpO1xuICAgICAgICBdXG4gICAgICApO1xuICAgIF0pXG5cbmxldCBtYW55IChzdGF0ZSA6IFN0YXRlLnQpID1cbiAgbGV0IGV4cGxpY2l0X3NsYXNoID0gU3RhdGUuZXhwbGljaXRfc2xhc2ggc3RhdGUgaW5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgKCogV2hldGhlciB3ZSBtdXN0IGV4cGxpY2l0bHkgbWF0Y2ggcGVyaW9kIGRlcGVuZHMgb24gdGhlIHN1cnJvdW5kaW5nIGNoYXJhY3RlcnMsIGJ1dFxuICAgICBzbGFzaGVzIGFyZSBlYXN5IHRvIGV4cGxpY2l0IG1hdGNoLiBUaGlzIGNvbmRpdGlvbmFsIHNwbGl0cyBvdXQgc29tZSBzaW1wbGUgY2FzZXMuXG4gICopXG4gIGlmIG5vdCBleHBsaWNpdF9wZXJpb2QgdGhlbiBiZWdpblxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QpKVxuICBlbmQgZWxzZSBpZiBub3QgZXhwbGljaXRfc2xhc2ggdGhlbiBiZWdpblxuICAgICgqIEluIHRoaXMgc3RhdGUsIHdlIGV4cGxpY2l0bHkgbWF0Y2ggcGVyaW9kcyBvbmx5IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyAqKVxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUub3B0IChcbiAgICAgIFJlLnNlcSBbXG4gICAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDpmYWxzZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kO1xuICAgICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6ZmFsc2UgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgICBdXG4gICAgKSlcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBsZXQgbm90X2VtcHR5ID1cbiAgICAgIFJlLnNlcSBbXG4gICAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6dHJ1ZTtcbiAgICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgICBdXG4gICAgaW5cbiAgICAoKiBbbWF5YmVfZW1wdHldIGlzIHRoZSBkZWZhdWx0IHRyYW5zbGF0aW9uIG9mIE1hbnksIGV4Y2VwdCBpbiBzb21lIHNwZWNpYWwgY2FzZXMuXG4gICAgKilcbiAgICBsZXQgbWF5YmVfZW1wdHkgPSBSZS5vcHQgbm90X2VtcHR5IGluXG4gICAgbGV0IGVuY2xvc2VkX3NldCBzdGF0ZSBraW5kIHNldCA9XG4gICAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLmFsdCBbXG4gICAgICAgIGVuY2xvc2VkX3NldCBraW5kIHNldCB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOnRydWU7XG4gICAgICAgIFJlLnNlcSBbXG4gICAgICAgICAgbm90X2VtcHR5O1xuICAgICAgICAgICgqIFNpbmNlIFtub3RfZW1wdHldIG1hdGNoZWQsIHN1YnNlcXVlbnQgZG90cyBhcmUgbm90IGxlYWRpbmcuICopXG4gICAgICAgICAgZW5jbG9zZWRfc2V0IGtpbmQgc2V0IH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2U7XG4gICAgICAgIF07XG4gICAgICBdKVxuICAgIGluXG4gICAgbGV0IHJlYyBsb29rYWhlYWQgc3RhdGUgPVxuICAgICAgbWF0Y2ggU3RhdGUubmV4dCBzdGF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIG1heWJlX2VtcHR5XG4gICAgICAoKiBnbG9iICoqID09PSBnbG9iICogLiAqKVxuICAgICAgfCBTb21lIChNYW55LCBzdGF0ZSkgLT4gbG9va2FoZWFkIHN0YXRlXG4gICAgICB8IFNvbWUgKEV4YWN0bHkgYywgc3RhdGUpIC0+XG4gICAgICAgIGxldCBzdGF0ZSA9XG4gICAgICAgICAgU3RhdGUuYXBwZW5kIHN0YXRlXG4gICAgICAgICAgICAoaWYgYyA9ICcuJ1xuICAgICAgICAgICAgIHRoZW4gbm90X2VtcHR5XG4gICAgICAgICAgICAgZWxzZSBtYXliZV9lbXB0eSlcbiAgICAgICAgaW5cbiAgICAgICAgZXhhY3RseSBzdGF0ZSBjXG4gICAgICAoKiBnbG9iICo/ID09PSBnbG9iID8qICopXG4gICAgICB8IFNvbWUgKE9uZSwgc3RhdGUpIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSBub3RfZW1wdHlcbiAgICAgIHwgU29tZSAoQW55X29mIGVuY2xvc2VkLCBzdGF0ZSkgLT4gZW5jbG9zZWRfc2V0IHN0YXRlIGBBbnlfb2YgZW5jbG9zZWRcbiAgICAgIHwgU29tZSAoQW55X2J1dCBlbmNsb3NlZCwgc3RhdGUpIC0+IGVuY2xvc2VkX3NldCBzdGF0ZSBgQW55X2J1dCBlbmNsb3NlZFxuICAgICAgKCogKiB0aGVuICoqID09PSAqKiAqKVxuICAgICAgfCBTb21lIChNYW55TWFueSwgc3RhdGUpIC0+IG1hbnlfbWFueSBzdGF0ZVxuICAgIGluXG4gICAgbG9va2FoZWFkIHN0YXRlXG4gIGVuZFxuXG5sZXQgcGllY2Ugc3RhdGUgcGllY2UgPVxuICBsZXQgZXhwbGljaXRfc2xhc2ggPSBTdGF0ZS5leHBsaWNpdF9zbGFzaCBzdGF0ZSBpblxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBtYXRjaCBwaWVjZSB3aXRoXG4gIHwgT25lIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSAob25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kKVxuICB8IE1hbnkgLT4gbWFueSBzdGF0ZVxuICB8IEFueV9vZiBlbmNsb3NlZCAtPlxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoZW5jbG9zZWRfc2V0IGBBbnlfb2YgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgZW5jbG9zZWQpXG4gIHwgQW55X2J1dCBlbmNsb3NlZCAtPlxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoZW5jbG9zZWRfc2V0IGBBbnlfYnV0IH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGVuY2xvc2VkKVxuICB8IEV4YWN0bHkgYyAtPiBleGFjdGx5IHN0YXRlIGNcbiAgfCBNYW55TWFueSAtPiBtYW55X21hbnkgc3RhdGVcblxubGV0IGdsb2IgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIGdsb2IgPVxuICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgIG1hdGNoIFN0YXRlLm5leHQgc3RhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBTdGF0ZS50b19yZSBzdGF0ZVxuICAgIHwgU29tZSAocCwgc3RhdGUpIC0+IGxvb3AgKHBpZWNlIHN0YXRlIHApXG4gIGluXG4gIGxvb3AgKFN0YXRlLmNyZWF0ZSB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgZ2xvYilcblxubGV0IGdsb2JcbiAgICAgID8oYW5jaG9yZWQgPSBmYWxzZSlcbiAgICAgID8ocGF0aG5hbWUgPSB0cnVlKVxuICAgICAgPyhtYXRjaF9iYWNrc2xhc2hlcyA9IGZhbHNlKVxuICAgICAgPyhwZXJpb2QgPSB0cnVlKVxuICAgICAgPyhleHBhbmRfYnJhY2VzID0gZmFsc2UpXG4gICAgICA/KGRvdWJsZV9hc3RlcmlzayA9IHRydWUpXG4gICAgICBzXG4gID1cbiAgbGV0IHRvX3JlIHMgPVxuICAgIGxldCByZSA9IGdsb2IgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIChvZl9zdHJpbmcgfmRvdWJsZV9hc3RlcmlzayBzKSBpblxuICAgIGlmIGFuY2hvcmVkXG4gICAgdGhlbiBSZS53aG9sZV9zdHJpbmcgcmVcbiAgICBlbHNlIHJlXG4gIGluXG4gIGlmIGV4cGFuZF9icmFjZXNcbiAgdGhlbiBSZS5hbHQgKExpc3QubWFwIHRvX3JlIChleHBsb2RlIHMpKVxuICBlbHNlIHRvX3JlIHNcblxubGV0IGdsb2InID9hbmNob3JlZCBwZXJpb2QgcyA9IGdsb2IgP2FuY2hvcmVkIH5wZXJpb2Qgc1xuXG5sZXQgZ2xvYnggP2FuY2hvcmVkIHMgPSBnbG9iID9hbmNob3JlZCB+ZXhwYW5kX2JyYWNlczp0cnVlIHNcblxubGV0IGdsb2J4JyA/YW5jaG9yZWQgcGVyaW9kIHMgPSBnbG9iID9hbmNob3JlZCB+ZXhwYW5kX2JyYWNlczp0cnVlIH5wZXJpb2Qgc1xuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwb3NpeF9jbGFzc19vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwiYWxwaGFcIiAgLT4gUmUuYWxwaGFcbiAgfCBcImFsbnVtXCIgIC0+IFJlLmFsbnVtXG4gIHwgXCJhc2NpaVwiICAtPiBSZS5hc2NpaVxuICB8IFwiYmxhbmtcIiAgLT4gUmUuYmxhbmtcbiAgfCBcImNudHJsXCIgIC0+IFJlLmNudHJsXG4gIHwgXCJkaWdpdFwiICAtPiBSZS5kaWdpdFxuICB8IFwibG93ZXJcIiAgLT4gUmUubG93ZXJcbiAgfCBcInByaW50XCIgIC0+IFJlLnByaW50XG4gIHwgXCJzcGFjZVwiICAtPiBSZS5zcGFjZVxuICB8IFwidXBwZXJcIiAgLT4gUmUudXBwZXJcbiAgfCBcIndvcmRcIiAgIC0+IFJlLndvcmRjXG4gIHwgXCJwdW5jdFwiICAtPiBSZS5wdW5jdFxuICB8IFwiZ3JhcGhcIiAgLT4gUmUuZ3JhcGhcbiAgfCBcInhkaWdpdFwiIC0+IFJlLnhkaWdpdFxuICB8IGNsYXNzXyAgIC0+IGludmFsaWRfYXJnIChcIkludmFsaWQgcGNyZSBjbGFzczogXCIgXiBjbGFzc18pXG5cbmxldCBwb3NpeF9jbGFzc19zdHJpbmdzID1cbiAgWyBcImFscGhhXCIgOyBcImFsbnVtXCIgOyBcImFzY2lpXCJcbiAgOyBcImJsYW5rXCIgOyBcImNudHJsXCIgOyBcImRpZ2l0XCJcbiAgOyBcImxvd2VyXCIgOyBcInByaW50XCIgOyBcInNwYWNlXCJcbiAgOyBcInVwcGVyXCIgOyBcIndvcmRcIiAgOyBcInB1bmN0XCJcbiAgOyBcImdyYXBoXCIgOyBcInhkaWdpdFwiIF1cblxubGV0IHBhcnNlIG11bHRpbGluZSBkb2xsYXJfZW5kb25seSBkb3RhbGwgdW5ncmVlZHkgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgYWNjZXB0X3MgcycgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMnIGluXG4gICAgdHJ5XG4gICAgICBmb3IgaiA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICB0cnkgaWYgcycuW2pdIDw+IHMuWyFpICsgal0gdGhlbiByYWlzZSBFeGl0XG4gICAgICAgIHdpdGggXyAtPiByYWlzZSBFeGl0XG4gICAgICBkb25lO1xuICAgICAgaSA6PSAhaSArIGxlbjtcbiAgICAgIHRydWVcbiAgICB3aXRoIEV4aXQgLT4gZmFsc2UgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuICBsZXQgdW5nZXQgKCkgPSBkZWNyIGkgaW5cbiAgbGV0IGdyZWVkeV9tb2QgciA9XG4gICAgbGV0IGdyID0gYWNjZXB0ICc/JyBpblxuICAgIGxldCBnciA9IGlmIHVuZ3JlZWR5IHRoZW4gbm90IGdyIGVsc2UgZ3IgaW5cbiAgICBpZiBnciB0aGVuIFJlLm5vbl9ncmVlZHkgciBlbHNlIFJlLmdyZWVkeSByXG4gIGluXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QgJ3wnIHx8IHRlc3QgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gZ3JlZWR5X21vZCAoUmUucmVwIHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gZ3JlZWR5X21vZCAoUmUucmVwMSByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIGdyZWVkeV9tb2QgKFJlLm9wdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICd7JyB0aGVuXG4gICAgICBtYXRjaCBpbnRlZ2VyICgpIHdpdGhcbiAgICAgICAgU29tZSBpIC0+XG4gICAgICAgICAgbGV0IGogPSBpZiBhY2NlcHQgJywnIHRoZW4gaW50ZWdlciAoKSBlbHNlIFNvbWUgaSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICd9JykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICAgICAgICAgIFNvbWUgaiB3aGVuIGogPCBpIC0+IHJhaXNlIFBhcnNlX2Vycm9yIHwgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBncmVlZHlfbW9kIChSZS5yZXBuIHIgaSBqKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgdW5nZXQgKCk7IHJcbiAgICBlbHNlXG4gICAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIGlmIGRvdGFsbCB0aGVuIFJlLmFueSBlbHNlIFJlLm5vdG5sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz8nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICc6JyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgclxuICAgICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyMnIHRoZW4gYmVnaW5cbiAgICAgICAgICBjb21tZW50ICgpXG4gICAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnPCcgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZSAoKSBpblxuICAgICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIFJlLmdyb3VwIH5uYW1lIHJcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBSZS5ncm91cCByXG4gICAgICBlbmRcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgaWYgbXVsdGlsaW5lIHRoZW4gUmUuYm9sIGVsc2UgUmUuYm9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBpZiBtdWx0aWxpbmUgdGhlbiBSZS5lb2wgZWxzZSBpZiBkb2xsYXJfZW5kb25seSB0aGVuIFJlLmxlb2wgZWxzZSBSZS5lb3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5jb21wbCAoYnJhY2tldCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuKCogWFhYXG4gICAtIEJhY2stcmVmZXJlbmNlc1xuICAgLSBcXGN4IChjb250cm9sLXgpLCBcXGRkZFxuKilcbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJ3cnIC0+XG4gICAgICAgICAgUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICB8ICdXJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICB8ICdzJyAtPlxuICAgICAgICAgIFJlLnNwYWNlXG4gICAgICB8ICdTJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5zcGFjZV1cbiAgICAgIHwgJ2QnIC0+XG4gICAgICAgICAgUmUuZGlnaXRcbiAgICAgIHwgJ0QnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLmRpZ2l0XVxuICAgICAgfCAnYicgLT5cbiAgICAgICAgICBSZS5hbHQgW1JlLmJvdzsgUmUuZW93XVxuICAgICAgfCAnQicgLT5cbiAgICAgICAgICBSZS5ub3RfYm91bmRhcnlcbiAgICAgIHwgJ0EnIC0+XG4gICAgICAgICAgUmUuYm9zXG4gICAgICB8ICdaJyAtPlxuICAgICAgICAgIFJlLmxlb2xcbiAgICAgIHwgJ3onIC0+XG4gICAgICAgICAgUmUuZW9zXG4gICAgICB8ICdHJyAtPlxuICAgICAgICAgIFJlLnN0YXJ0XG4gICAgICB8ICdlJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xceDFiJ1xuICAgICAgfCAnZicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHgwYydcbiAgICAgIHwgJ24nIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFxuJ1xuICAgICAgfCAncicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHInXG4gICAgICB8ICd0JyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xcdCdcbiAgICAgIHwgJ3gnIC0+XG4gICAgICAgICAgbGV0IGMxID0gaGV4ZGlnaXQgKCkgaW5cbiAgICAgICAgICBsZXQgYzIgPSBoZXhkaWdpdCAoKSBpblxuICAgICAgICAgIGxldCBjb2RlID0gYzEgKiAxNiArIGMyIGluXG4gICAgICAgICAgUmUuY2hhciAoY2hhcl9vZl9pbnQgY29kZSlcbiAgICAgIHwgJ2EnLi4neicgfCAnQScuLidaJyAtPlxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICcwJy4uJzknIC0+XG4gICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgfCBjIC0+XG4gICAgICAgICAgUmUuY2hhciBjXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ3snIHwgJ1xcXFwnIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBoZXhkaWdpdCAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnXG4gICAgfCAnYScuLidmJyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCAnQScuLidGJyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICdBJyArIDEwXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBpbnRlZ2VyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBOb25lIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBpbnRlZ2VyJyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKVxuICAgIHwgICAgIF8gICAgICAgIC0+IHVuZ2V0ICgpOyBOb25lXG4gIGFuZCBpbnRlZ2VyJyBpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBTb21lIGkgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+XG4gICAgICAgIGxldCBpJyA9IDEwICogaSArIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgIGlmIGknIDwgaSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBpbnRlZ2VyJyBpJ1xuICAgIHwgXyAtPlxuICAgICAgICB1bmdldCAoKTsgU29tZSBpXG4gIGFuZCBuYW1lICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvciBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICgnXycgfCAnYScuLid6JyB8ICdBJy4uJ1onKSBhcyBjIC0+XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMzIgaW5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGM7XG4gICAgICBuYW1lJyBiXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBuYW1lJyBiID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvciBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICgnXycgfCAnYScuLid6JyB8ICdBJy4uJ1onIHwgJzAnLi4nOScpIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGM7XG4gICAgICBuYW1lJyBiXG4gICAgfCAnPicgLT4gQnVmZmVyLmNvbnRlbnRzIGJcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBtYXRjaCBjaGFyICgpIHdpdGhcbiAgICAgIHwgYENoYXIgYyAtPlxuICAgICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggY2hhciAoKSB3aXRoXG4gICAgICAgICAgICAgIGBDaGFyIGMnIC0+XG4gICAgICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgICAgIHwgYFNldCBzdCcgLT5cbiAgICAgICAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHN0JyA6OiBzKVxuICAgICAgICAgIGVuZFxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgICAgfCBgU2V0IHN0IC0+IGJyYWNrZXQgKHN0IDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgIGlmIGMgPSAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc9JyB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICBpZiBhY2NlcHQgJzonIHRoZW5cbiAgICAgICAgbGV0IGNvbXBsID0gYWNjZXB0ICdeJyBpblxuICAgICAgICBsZXQgY2xzID1cbiAgICAgICAgICB0cnkgTGlzdC5maW5kIGFjY2VwdF9zIHBvc2l4X2NsYXNzX3N0cmluZ3NcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSBQYXJzZV9lcnJvciBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdF9zIFwiOl1cIikgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IHJlID1cbiAgICAgICAgICBsZXQgcG9zaXhfY2xhc3MgPSBwb3NpeF9jbGFzc19vZl9zdHJpbmcgY2xzIGluXG4gICAgICAgICAgaWYgY29tcGwgdGhlbiBSZS5jb21wbCBbcG9zaXhfY2xhc3NdIGVsc2UgcG9zaXhfY2xhc3MgaW5cbiAgICAgICAgYFNldCAocmUpXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJy4nKSB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICddJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgYENoYXIgY1xuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYENoYXIgY1xuICAgIGVuZCBlbHNlIGlmIGMgPSAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBsZXQgYyA9IGdldCAoKSBpblxuKCogWFhYXG4gICBcXDEyNywgLi4uXG4qKVxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICdiJyAtPiBgQ2hhciAnXFwwMDgnXG4gICAgICB8ICduJyAtPiBgQ2hhciAnXFxuJyAoKlhYWCopXG4gICAgICB8ICdyJyAtPiBgQ2hhciAnXFxyJyAoKlhYWCopXG4gICAgICB8ICd0JyAtPiBgQ2hhciAnXFx0JyAoKlhYWCopXG4gICAgICB8ICd3JyAtPiBgU2V0IChSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ10pXG4gICAgICB8ICdXJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXSlcbiAgICAgIHwgJ3MnIC0+IGBTZXQgKFJlLnNwYWNlKVxuICAgICAgfCAnUycgLT4gYFNldCAoUmUuY29tcGwgW1JlLnNwYWNlXSlcbiAgICAgIHwgJ2QnIC0+IGBTZXQgKFJlLmRpZ2l0KVxuICAgICAgfCAnRCcgLT4gYFNldCAoUmUuY29tcGwgW1JlLmRpZ2l0XSlcbiAgICAgIHwgJ2EnLi4neicgfCAnQScuLidaJyAtPlxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICcwJy4uJzknIC0+XG4gICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgfCBfIC0+XG4gICAgICAgICAgYENoYXIgY1xuICAgIGVuZCBlbHNlXG4gICAgICBgQ2hhciBjXG4gIGFuZCBjb21tZW50ICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBpZiBhY2NlcHQgJyknIHRoZW4gUmUuZXBzaWxvbiBlbHNlIGJlZ2luIGluY3IgaTsgY29tbWVudCAoKSBlbmRcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbnR5cGUgb3B0ID1cbiAgWyBgVW5ncmVlZHkgfCBgRG90YWxsIHwgYERvbGxhcl9lbmRvbmx5XG4gIHwgYE11bHRpbGluZSB8IGBBbmNob3JlZCB8IGBDYXNlbGVzcyBdXG5cbmxldCByZSAgPyhvcHRzID0gW10pIHMgPVxuICBsZXQgciA9XG4gICAgcGFyc2VcbiAgICAgIChMaXN0Lm1lbXEgYE11bHRpbGluZSBvcHRzKSAoTGlzdC5tZW1xIGBEb2xsYXJfZW5kb25seSBvcHRzKVxuICAgICAgKExpc3QubWVtcSBgRG90YWxsIG9wdHMpIChMaXN0Lm1lbXEgYFVuZ3JlZWR5IG9wdHMpXG4gICAgICBzXG4gIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBBbmNob3JlZCBvcHRzIHRoZW4gUmUuc2VxIFtSZS5zdGFydDsgcl0gZWxzZSByIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBDYXNlbGVzcyBvcHRzIHRoZW4gUmUubm9fY2FzZSByIGVsc2UgciBpblxuICByXG5cbmxldCBjb21waWxlID0gUmUuY29tcGlsZVxubGV0IGNvbXBpbGVfcGF0ID8ob3B0cyA9IFtdKSBzID0gY29tcGlsZSAocmUgfm9wdHMgcylcbiIsIm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yID0gUGVybC5QYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgPSBQZXJsLk5vdF9zdXBwb3J0ZWRcblxudHlwZSByZWdleHAgPSBSZS5yZVxuXG50eXBlIGZsYWcgPSBbIGBDQVNFTEVTUyB8IGBNVUxUSUxJTkUgfCBgQU5DSE9SRUQgfCBgRE9UQUxMIF1cblxudHlwZSBzcGxpdF9yZXN1bHQgPVxuICB8IFRleHQgIG9mIHN0cmluZ1xuICB8IERlbGltIG9mIHN0cmluZ1xuICB8IEdyb3VwIG9mIGludCAqIHN0cmluZ1xuICB8IE5vR3JvdXBcblxudHlwZSBncm91cHMgPSBDb3JlLkdyb3VwLnRcblxubGV0IHJlID8oZmxhZ3MgPSBbXSkgcGF0ID1cbiAgbGV0IG9wdHMgPSBMaXN0Lm1hcCAoZnVuY3Rpb25cbiAgICB8IGBDQVNFTEVTUyAtPiBgQ2FzZWxlc3NcbiAgICB8IGBNVUxUSUxJTkUgLT4gYE11bHRpbGluZVxuICAgIHwgYEFOQ0hPUkVEIC0+IGBBbmNob3JlZFxuICAgIHwgYERPVEFMTCAtPiBgRG90YWxsXG4gICkgZmxhZ3MgaW5cbiAgUGVybC5yZSB+b3B0cyBwYXRcblxubGV0IHJlZ2V4cCA/ZmxhZ3MgcGF0ID0gUmUuY29tcGlsZSAocmUgP2ZsYWdzIHBhdClcblxubGV0IGV4dHJhY3QgfnJleCBzID1cbiAgUmUuR3JvdXAuYWxsIChSZS5leGVjIHJleCBzKVxuXG5sZXQgZXhlYyB+cmV4ID9wb3MgcyA9XG4gIFJlLmV4ZWMgcmV4ID9wb3Mgc1xuXG5sZXQgZ2V0X3N1YnN0cmluZyBzIGkgPVxuICBSZS5Hcm91cC5nZXQgcyBpXG5cbmxldCBuYW1lcyByZXggPVxuICBSZS5ncm91cF9uYW1lcyByZXhcbiAgfD4gTGlzdC5tYXAgZnN0XG4gIHw+IEFycmF5Lm9mX2xpc3RcblxubGV0IGdldF9uYW1lZF9zdWJzdHJpbmcgcmV4IG5hbWUgcyA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICB8IChuLCBpKSA6OiByZW0gd2hlbiBuID0gbmFtZSAtPlxuICAgICAgIGJlZ2luXG4gICAgICAgICB0cnkgZ2V0X3N1YnN0cmluZyBzIGlcbiAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGxvb3AgcmVtXG4gICAgICAgZW5kXG4gICAgfCBfIDo6IHJlbSAtPiBsb29wIHJlbVxuICBpblxuICBsb29wIChSZS5ncm91cF9uYW1lcyByZXgpXG5cbmxldCBnZXRfc3Vic3RyaW5nX29mcyBzIGkgPVxuICBSZS5Hcm91cC5vZmZzZXQgcyBpXG5cbmxldCBwbWF0Y2ggfnJleCBzID1cbiAgUmUuZXhlY3AgcmV4IHNcblxubGV0IHN1YnN0aXR1dGUgfnJleCB+c3Vic3Qgc3RyID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgbGV0IHJlYyBsb29wIHBvcyA9XG4gICAgaWYgcG9zID49IFN0cmluZy5sZW5ndGggc3RyIHRoZW5cbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgZWxzZSBpZiBSZS5leGVjcCB+cG9zIHJleCBzdHIgdGhlbiAoXG4gICAgICBsZXQgc3MgPSBSZS5leGVjIH5wb3MgcmV4IHN0ciBpblxuICAgICAgbGV0IHN0YXJ0LCBmaW4gPSBSZS5Hcm91cC5vZmZzZXQgc3MgMCBpblxuICAgICAgbGV0IHBhdCA9IFJlLkdyb3VwLmdldCBzcyAwIGluXG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBiIHN0ciBwb3MgKHN0YXJ0IC0gcG9zKTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN1YnN0IHBhdCk7XG4gICAgICBsb29wIGZpblxuICAgICkgZWxzZSAoXG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBiIHN0ciBwb3MgKFN0cmluZy5sZW5ndGggc3RyIC0gcG9zKTtcbiAgICAgIGxvb3AgKFN0cmluZy5sZW5ndGggc3RyKVxuICAgIClcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzcGxpdCB+cmV4IHN0ciA9XG4gIGxldCByZWMgbG9vcCBhY2N1IHBvcyA9XG4gICAgaWYgcG9zID49IFN0cmluZy5sZW5ndGggc3RyIHRoZW5cbiAgICAgIExpc3QucmV2IGFjY3VcbiAgICBlbHNlIGlmIFJlLmV4ZWNwIH5wb3MgcmV4IHN0ciB0aGVuIChcbiAgICAgIGxldCBzcyA9IFJlLmV4ZWMgfnBvcyByZXggc3RyIGluXG4gICAgICBsZXQgc3RhcnQsIGZpbiA9IFJlLkdyb3VwLm9mZnNldCBzcyAwIGluXG4gICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIHBvcyAoc3RhcnQgLSBwb3MpIGluXG4gICAgICBsb29wIChzIDo6IGFjY3UpIGZpblxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIHBvcyAoU3RyaW5nLmxlbmd0aCBzdHIgLSBwb3MpIGluXG4gICAgICBsb29wIChzIDo6IGFjY3UpIChTdHJpbmcubGVuZ3RoIHN0cilcbiAgICApIGluXG4gIGxvb3AgW10gMFxuXG4oKiBGcm9tIFBDUkUgKilcbmxldCBzdHJpbmdfdW5zYWZlX3N1YiBzIG9mcyBsZW4gPVxuICBsZXQgciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgQnl0ZXMudW5zYWZlX2JsaXQgcyBvZnMgciAwIGxlbjtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChsZW4gbHNsIDEpIGluXG4gIGxldCBwb3MgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgfCAnXFxcXCcgfCAnXicgfCAnJCcgfCAnLicgfCAnWycgfCAnfCdcbiAgICB8ICcoJyAgfCAnKScgfCAnPycgfCAnKicgfCAnKycgfCAneycgYXMgYyAtPlxuICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyAnXFxcXCc7XG4gICAgICBpbmNyIHBvcztcbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgYzsgaW5jciBwb3NcbiAgICB8IGMgLT4gQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyBjOyBpbmNyIHBvc1xuICBkb25lO1xuICBzdHJpbmdfdW5zYWZlX3N1YiBidWYgMCAhcG9zXG5cbmxldCBmdWxsX3NwbGl0ID8obWF4PTApIH5yZXggcyA9XG4gIGlmIFN0cmluZy5sZW5ndGggcyA9IDAgdGhlbiBbXVxuICBlbHNlIGlmIG1heCA9IDEgdGhlbiBbVGV4dCBzXVxuICBlbHNlXG4gICAgbGV0IHJlc3VsdHMgPSBSZS5zcGxpdF9mdWxsIHJleCBzIGluXG4gICAgbGV0IG1hdGNoZXMgPVxuICAgICAgTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYFRleHQgcyAtPiBbVGV4dCBzXVxuICAgICAgICB8IGBEZWxpbSBkIC0+XG4gICAgICAgICAgbGV0IG1hdGNoZXMgPSBSZS5Hcm91cC5hbGxfb2Zmc2V0IGQgaW5cbiAgICAgICAgICBsZXQgZGVsaW0gPSBSZS5Hcm91cC5nZXQgZCAwIGluXG4gICAgICAgICAgKERlbGltIGRlbGltKTo6KFxuICAgICAgICAgICAgbGV0IGwgPSByZWYgW10gaW5cbiAgICAgICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggbWF0Y2hlcyAtIDEgZG9cbiAgICAgICAgICAgICAgbCA6PVxuICAgICAgICAgICAgICAgIChpZiBtYXRjaGVzLihpKSA9ICgtMSwgLTEpXG4gICAgICAgICAgICAgICAgIHRoZW4gTm9Hcm91cFxuICAgICAgICAgICAgICAgICBlbHNlIEdyb3VwIChpLCBSZS5Hcm91cC5nZXQgZCBpKSlcbiAgICAgICAgICAgICAgICA6OighbClcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBMaXN0LnJldiAhbCkpIHJlc3VsdHMgaW5cbiAgICBMaXN0LmNvbmNhdCBtYXRjaGVzXG5cblxudHlwZSBzdWJzdHJpbmdzID0gR3JvdXAudFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxuKCpcbldoYXQgd2UgY291bGQgKHNob3VsZD8pIGRvOlxuLSBhKiA9PT4gbG9uZ2VzdCAoKHNob3J0ZXN0IChub19ncm91cCBhKSogKSwgYSB8ICgpKSAgKCEhISlcbi0gYWJjIHVuZGVyc3Rvb2QgYXMgKGFiKWNcbi0gXCIoKGE/KXxiKVwiIGFnYWluc3QgXCJhYlwiIHNob3VsZCBub3QgYmluZCB0aGUgZmlyc3Qgc3VicGF0dGVybiB0byBhbnl0aGluZ1xuXG5Ob3RlIHRoYXQgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGhhbmRsZSBcIigoKGFiKWMpZCllXCIgZWZmaWNpZW50bHlcbiopXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBhcnNlIG5ld2xpbmUgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG4gIGxldCB1bmdldCAoKSA9IGRlY3IgaSBpblxuXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QgJ3wnIHx8IHRlc3QgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gUmUucmVwIChSZS5uZXN0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gUmUucmVwMSAoUmUubmVzdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIFJlLm9wdCByIGVsc2VcbiAgICBpZiBhY2NlcHQgJ3snIHRoZW5cbiAgICAgIG1hdGNoIGludGVnZXIgKCkgd2l0aFxuICAgICAgICBTb21lIGkgLT5cbiAgICAgICAgICBsZXQgaiA9IGlmIGFjY2VwdCAnLCcgdGhlbiBpbnRlZ2VyICgpIGVsc2UgU29tZSBpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJ30nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgICAgICAgICAgU29tZSBqIHdoZW4gaiA8IGkgLT4gcmFpc2UgUGFyc2VfZXJyb3IgfCBfIC0+ICgpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIFJlLnJlcG4gKFJlLm5lc3QgcikgaSBqXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICB1bmdldCAoKTsgclxuICAgIGVsc2VcbiAgICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLm5vdG5sIGVsc2UgUmUuYW55XG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgUmUuZ3JvdXAgclxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUuYm9sIGVsc2UgUmUuYm9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUuZW9sIGVsc2UgUmUuZW9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuZGlmZiAoUmUuY29tcGwgKGJyYWNrZXQgW10pKSAoUmUuY2hhciAnXFxuJylcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICd8JyB8ICcoJyB8ICcpJyB8ICcqJyB8ICcrJyB8ICc/J1xuICAgICAgfCAnWycgfCAnLicgfCAnXicgfCAnJCcgfCAneycgfCAnXFxcXCcgYXMgYyAtPiBSZS5jaGFyIGNcbiAgICAgIHwgICAgICAgICAgICAgICAgIF8gICAgICAgICAgICAgICAgICAgICAgIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ3snIHwgJ1xcXFwnIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBpbnRlZ2VyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBOb25lIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBpbnRlZ2VyJyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKVxuICAgIHwgICAgIF8gICAgICAgIC0+IHVuZ2V0ICgpOyBOb25lXG4gIGFuZCBpbnRlZ2VyJyBpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBTb21lIGkgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+XG4gICAgICAgIGxldCBpJyA9IDEwICogaSArIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgIGlmIGknIDwgaSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBpbnRlZ2VyJyBpJ1xuICAgIHwgXyAtPlxuICAgICAgICB1bmdldCAoKTsgU29tZSBpXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICBpZiBjID0gJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPScgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnOicgdGhlbiBiZWdpblxuICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkICgqWFhYKilcbiAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJy4nKSB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICddJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgY1xuICAgICAgZW5kIGVsc2VcbiAgICAgICAgY1xuICAgIGVuZCBlbHNlXG4gICAgICBjXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG50eXBlIG9wdCA9IFtgSUNhc2UgfCBgTm9TdWIgfCBgTmV3bGluZV1cblxubGV0IHJlID8ob3B0cyA9IFtdKSBzID1cbiAgbGV0IHIgPSBwYXJzZSAoTGlzdC5tZW1xIGBOZXdsaW5lIG9wdHMpIHMgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYElDYXNlIG9wdHMgdGhlbiBSZS5ub19jYXNlIHIgZWxzZSByIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBOb1N1YiBvcHRzIHRoZW4gUmUubm9fZ3JvdXAgciBlbHNlIHIgaW5cbiAgclxuXG5sZXQgY29tcGlsZSByZSA9IFJlLmNvbXBpbGUgKFJlLmxvbmdlc3QgcmUpXG5sZXQgY29tcGlsZV9wYXQgPyhvcHRzID0gW10pIHMgPSBjb21waWxlIChyZSB+b3B0cyBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoaXMgbW9kdWxlIG9mZmVycyBhIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYmFzZWQgb24gZGlzam9pbnQgc2V0XG4gICBmb3Jlc3RzLCB3aXRoIHBhdGggY29tcHJlc3Npb24gYW5kIGxpbmtpbmcgYnkgcmFuay4gKilcblxub3BlbiBTdG9yZVxuXG5tb2R1bGUgTWFrZSAoUyA6IFNUT1JFKSA9IHN0cnVjdFxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBUaGUgcmFuayBvZiBhIHZlcnRleCBpcyB0aGUgbWF4aW11bSBsZW5ndGgsIGluIGVkZ2VzLCBvZiBhbiB1bmNvbXByZXNzZWQgcGF0aFxuICAgdGhhdCBsZWFkcyB0byB0aGlzIHZlcnRleC4gSW4gb3RoZXIgd29yZHMsIHRoZSByYW5rIG9mIFt4XSBpcyB0aGUgaGVpZ2h0IG9mXG4gICB0aGUgdHJlZSByb290ZWQgYXQgW3hdIHRoYXQgd291bGQgZXhpc3QgaWYgd2UgZGlkIG5vdCBwZXJmb3JtIHBhdGhcbiAgIGNvbXByZXNzaW9uLiAqKVxuXG50eXBlIHJhbmsgPVxuICBpbnRcblxuKCogVGhlIGNvbnRlbnQgb2YgYSB2ZXJ0ZXggaXMgYSBwb2ludGVyIHRvIGEgcGFyZW50IHZlcnRleCAoaWYgdGhlIHZlcnRleFxuICAgaGFzIGEgcGFyZW50KSBvciBhIHBhaXIgb2YgYSByYW5rIGFuZCBhIHVzZXIgdmFsdWUgKGlmIHRoZSB2ZXJ0ZXggaGFzIG5vXG4gICBwYXJlbnQsIGFuZCBpcyB0aHVzIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXggZm9yIHRoaXMgZXF1aXZhbGVuY2VcbiAgIGNsYXNzKS4gKilcblxuKCogSW4gdGhpcyB2ZXJzaW9uIHRoZSBjb2RlLCB0aGUgdHlwZSBbJ2EgY29udGVudF0gbXVzdCBub3QgbXV0YWJsZS4gSW5kZWVkLFxuICAgZXZlcnkgbXV0YXRpb24gbXVzdCBiZSBwZXJmb3JtZWQgdmlhIFtTLnNldF0uICopXG5cbnR5cGUgJ2EgY29udGVudCA9XG58IExpbmsgb2YgJ2EgcnJlZlxufCBSb290IG9mIHJhbmsgKiAnYVxuXG4oKiBUaGUgdHlwZSBbJ2EgcnJlZl0gcmVwcmVzZW50cyBhIHZlcnRleCBpbiB0aGUgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZS4gKilcblxuYW5kICdhIHJyZWYgPVxuICAnYSBjb250ZW50IFMucnJlZlxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBUaGUgdHlwZSBvZiBzdG9yZXMsIGFuZCB0aGUgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgbmV3IHN0b3JlLCBhcmUgdGhvc2VcbiAgIG9mIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIFtTXS4gKilcblxudHlwZSAnYSBzdG9yZSA9XG4gICdhIGNvbnRlbnQgUy5zdG9yZVxuXG5sZXQgbmV3X3N0b3JlIDogdW5pdCAtPiAnYSBzdG9yZSA9XG4gIFMubmV3X3N0b3JlXG5cbmxldCBjb3B5IDogJ2Egc3RvcmUgLT4gJ2Egc3RvcmUgPVxuICBTLmNvcHlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21ha2UgcyB2XSBjcmVhdGVzIGEgbmV3IHJvb3Qgb2YgcmFuayB6ZXJvLiAqKVxuXG5sZXQgbWFrZSAocyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6ICdhIHJyZWYgPVxuICBTLm1ha2UgcyAoUm9vdCAoMCwgdikpXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtmaW5kIHMgeF0gZmluZHMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBvZiB0aGUgZXF1aXZhbGVuY2UgY2xhc3Mgb2YgW3hdLlxuICAgSXQgZG9lcyBieSBmb2xsb3dpbmcgdGhlIHBhdGggZnJvbSBbeF0gdG8gdGhlIHJvb3QuIFBhdGggY29tcHJlc3Npb24gaXNcbiAgIHBlcmZvcm1lZCAob24gdGhlIHdheSBiYWNrKSBieSBtYWtpbmcgZXZlcnkgdmVydGV4IGFsb25nIHRoZSBwYXRoIGFcbiAgIGRpcmVjdCBjaGlsZCBvZiB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4LiBObyByYW5rIGlzIGFsdGVyZWQuICopXG5cbmxldCByZWMgZmluZCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgcnJlZiA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAoXywgXykgLT5cbiAgICAgIHhcbiAgfCBMaW5rIHkgLT5cbiAgICAgIGxldCB6ID0gZmluZCBzIHkgaW5cbiAgICAgIGlmIFMuZXEgcyB5IHogdGhlblxuICAgICAgICB6XG4gICAgICBlbHNlXG4gICAgICAgIGxldCBsaW5rX3RvX3ogPSBTLmdldCBzIHkgaW5cbiAgICAgICAgUy5zZXQgcyB4IGxpbmtfdG9fejtcbiAgICAgICAgelxuXG5sZXQgaXNfcmVwcmVzZW50YXRpdmUgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6IGJvb2wgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgXyAtPlxuICAgICAgdHJ1ZVxuICB8IExpbmsgXyAtPlxuICAgICAgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2VxIHMgeCB5XSBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHZlcnRpY2VzIFt4XSBhbmQgW3ldIGJlbG9uZyBpbiB0aGUgc2FtZVxuICAgZXF1aXZhbGVuY2UgY2xhc3MuIEl0IGRvZXMgc28gdmlhIHR3byBjYWxscyB0byBbZmluZF0gYW5kIGEgcGh5c2ljYWxcbiAgIGVxdWFsaXR5IHRlc3QuIEFzIGEgZmFzdCBwYXRoLCB3ZSBmaXJzdCB0ZXN0IHdoZXRoZXIgW3hdIGFuZCBbeV0gYXJlXG4gICBwaHlzaWNhbGx5IGVxdWFsLiAqKVxuXG5sZXQgZXEgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIFMuZXEgcyB4IHkgfHwgUy5lcSBzIChmaW5kIHMgeCkgKGZpbmQgcyB5KVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZ2V0XyBzIHhdIHJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBnZXRfIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSA9XG4gIGxldCB4ID0gZmluZCBzIHggaW5cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChfLCB2KSAtPlxuICAgICAgdlxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIFtnZXQgcyB4XSByZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG4oKiBCeSBub3QgY2FsbGluZyBbZmluZF0gaW1tZWRpYXRlbHksIHdlIG9wdGltaXplIHRoZSBjb21tb24gY2FzZXMgd2hlcmUgdGhlXG4gICBwYXRoIG91dCBvZiBbeF0gaGFzIGxlbmd0aCAwIG9yIDEsIGF0IHRoZSBleHBlbnNlIG9mIHRoZSBnZW5lcmFsIGNhc2UuXG4gICBUaHVzLCB3ZSBjYWxsIFtmaW5kXSBvbmx5IGlmIHBhdGggY29tcHJlc3Npb24gbXVzdCBiZSBwZXJmb3JtZWQuICopXG5cbmxldCBnZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChfLCB2KSAtPlxuICAgICAgdlxuICB8IExpbmsgeSAtPlxuICAgICAgbWF0Y2ggUy5nZXQgcyB5IHdpdGhcbiAgICAgIHwgUm9vdCAoXywgdikgLT5cbiAgICAgICAgICB2XG4gICAgICB8IExpbmsgXyAtPlxuICAgICAgICAgIGdldF8gcyB4XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtzZXRfIHMgeF0gdXBkYXRlcyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IHNldF8gKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICBsZXQgeCA9IGZpbmQgcyB4IGluXG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAociwgXykgLT5cbiAgICAgIFMuc2V0IHMgeCAoUm9vdCAociwgdikpXG4gIHwgTGluayBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuKCogW3NldCBzIHhdIHVwZGF0ZXMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbigqIEJ5IG5vdCBjYWxsaW5nIFtmaW5kXSBpbW1lZGlhdGVseSwgd2Ugb3B0aW1pemUgdGhlIGNvbW1vbiBjYXNlcyB3aGVyZSB0aGVcbiAgIHBhdGggb3V0IG9mIFt4XSBoYXMgbGVuZ3RoIDAgb3IgMSwgYXQgdGhlIGV4cGVuc2Ugb2YgdGhlIGdlbmVyYWwgY2FzZS5cbiAgIFRodXMsIHdlIGNhbGwgW2ZpbmRdIG9ubHkgaWYgcGF0aCBjb21wcmVzc2lvbiBtdXN0IGJlIHBlcmZvcm1lZC4gKilcblxubGV0IHNldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAociwgXykgLT5cbiAgICAgIFMuc2V0IHMgeCAoUm9vdCAociwgdikpXG4gIHwgTGluayB5IC0+XG4gICAgICBtYXRjaCBTLmdldCBzIHkgd2l0aFxuICAgICAgfCBSb290IChyLCBfKSAtPlxuICAgICAgICAgIFMuc2V0IHMgeSAoUm9vdCAociwgdikpXG4gICAgICB8IExpbmsgXyAtPlxuICAgICAgICAgIHNldF8gcyB4IHZcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW3VuaW9uIHMgeCB5XSBtZXJnZXMgdGhlIGVxdWl2YWxlbmNlIGNsYXNzZXMgb2YgW3hdIGFuZCBbeV0gYnkgaW5zdGFsbGluZyBhXG4gICBsaW5rIGZyb20gb25lIHJvb3QgdmVydGV4IHRvIHRoZSBvdGhlci4gKilcblxuKCogTGlua2luZyBpcyBieSByYW5rOiB0aGUgc21hbGxlci1yYW5rZWQgdmVydGV4IGlzIG1hZGUgdG8gcG9pbnQgdG8gdGhlXG4gICBsYXJnZXIuIElmIHRoZSB0d28gdmVydGljZXMgaGF2ZSB0aGUgc2FtZSByYW5rLCB0aGVuIGFuIGFyYml0cmFyeSBjaG9pY2VcbiAgIGlzIG1hZGUsIGFuZCB0aGUgcmFuayBvZiB0aGUgbmV3IHJvb3QgaXMgaW5jcmVtZW50ZWQgYnkgb25lLiAqKVxuXG5sZXQgdW5pb24gKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogJ2EgcnJlZiA9XG4gIGxldCB4ID0gZmluZCBzIHhcbiAgYW5kIHkgPSBmaW5kIHMgeSBpblxuICBpZiBTLmVxIHMgeCB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggUy5nZXQgcyB4LCBTLmdldCBzIHkgd2l0aFxuICAgIHwgUm9vdCAocngsIHZ4KSwgUm9vdCAocnksIF8pIC0+XG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeCAoTGluayB5KTsgeVxuICAgICAgICBlbmRcbiAgICAgICAgZWxzZSBpZiByeCA+IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7IHhcbiAgICAgICAgZW5kXG4gICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7XG4gICAgICAgICAgUy5zZXQgcyB4IChSb290IChyeCArIDEsIHZ4KSk7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttZXJnZV0gaXMgYW5hbG9nb3VzIHRvIFt1bmlvbl0sIGJ1dCBpbnZva2VzIGEgdXNlci1zcGVjaWZpZWQgZnVuY3Rpb24gW2ZdXG4gICB0byBjb21wdXRlIHRoZSBuZXcgdmFsdWUgW3ZdIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXF1aXZhbGVuY2UgY2xhc3MuICopXG5cbigqIFRoZSBmdW5jdGlvbiBbZl0gbXVzdCBub3QgYWZmZWN0IHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJ5IG1ha2luZ1xuICAgcmUtZW50cmFudCBjYWxscyB0byBbc2V0XSwgW3VuaW9uXSwgb3IgW21lcmdlXS4gVGhlcmUgYXJlIHR3byByZWFzb25zIGZvclxuICAgdGhpcy4gRmlyc3QsIFtmXSBtYXkgYmUgaW52b2tlZCBhdCBhIHRpbWUgd2hlbiB0aGUgaW52YXJpYW50IG9mIHRoZSBkYXRhXG4gICBzdHJ1Y3R1cmUgaXMgdGVtcG9yYXJpbHkgdmlvbGF0ZWQ6IGluIHRoZSB0aGlyZCBicmFuY2ggYmVsb3csIHRoZSByYW5rIG9mXG4gICBbeF0gaGFzIG5vdCB5ZXQgYmVlbiBpbmNyZWFzZWQgd2hlbiBbZl0gaXMgaW52b2tlZC4gU2Vjb25kLCBtb3JlIHNlcmlvdXNseSxcbiAgIGlmIFtmXSBjb3VsZCBjYWxsLCBzYXksIFt1bmlvbl0sIHRoZW4gdGhhdCBjb3VsZCBjaGFuZ2UgYSBbUm9vdF0gaW50byBhXG4gICBbTGlua10sIHNvIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IGNoYW5nZSBhIFtMaW5rXVxuICAgYmFjayBpbnRvIGEgW1Jvb3RdLCBzb21ldGhpbmcgdGhhdCBkb2VzIG5vdCBtYWtlIGFueSBzZW5zZS4gQWxzbywgaWYgW2ZdXG4gICBjb3VsZCBjYWxsIFtzZXRdLCB0aGVuIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IHVuZG9cbiAgIHRoZSBlZmZlY3Qgb2YgdGhpcyBbc2V0XSBvcGVyYXRpb247IHRoaXMgYWxzbyBkb2VzIG5vdCBtYWtlIHNlbnNlLiAqKVxuXG4oKiBUaGUgdGVzdHMgW2lmIHYgIT0gdnkgdGhlbiAuLi5dIGFuZCBbaWYgdiAhPSB2eCB0aGVuIC4uLl0gYXJlIGludGVuZGVkIHRvXG4gICBzYXZlIGFuIGFsbG9jYXRpb24gYW5kIGEgd3JpdGUgd2hlbiBwb3NzaWJsZS4gKilcblxuKCogV2UgaW52b2tlIFtmXSBiZWZvcmUgcGVyZm9ybWluZyBhbnkgdXBkYXRlLCBzbyB0aGF0IGlmIFtmXSBmYWlsc1xuICAgKGJ5IHJhaXNpbmcgYW4gZXhjZXB0aW9uKSwgdGhlIHN0YXRlIGlzIHVuYWZmZWN0ZWQuICopXG5cbmxldCBtZXJnZSBzIChmIDogJ2EgLT4gJ2EgLT4gJ2EpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6ICdhIHJyZWYgPVxuICBsZXQgeCA9IGZpbmQgcyB4XG4gIGFuZCB5ID0gZmluZCBzIHkgaW5cbiAgaWYgUy5lcSBzIHggeSB0aGVuIHggZWxzZVxuICAgIG1hdGNoIFMuZ2V0IHMgeCwgUy5nZXQgcyB5IHdpdGhcbiAgICB8IFJvb3QgKHJ4LCB2eCksIFJvb3QgKHJ5LCB2eSkgLT5cbiAgICAgICAgbGV0IHYgPSBmIHZ4IHZ5IGluXG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeCAoTGluayB5KTtcbiAgICAgICAgICBpZiB2ICE9IHZ5IHRoZW4gUy5zZXQgcyB5IChSb290IChyeSwgdikpO1xuICAgICAgICAgIHlcbiAgICAgICAgZW5kIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpO1xuICAgICAgICAgIGlmIHYgIT0gdnggdGhlbiBTLnNldCBzIHggKFJvb3QgKHJ4LCB2KSk7XG4gICAgICAgICAgeFxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTtcbiAgICAgICAgICBTLnNldCBzIHggKFJvb3QgKHJ4KzEsIHYpKTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhpcyBtb2R1bGUgb2ZmZXJzIGEgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBiYXNlZCBvbiBkaXNqb2ludCBzZXRcbiAgIGZvcmVzdHMsIHdpdGggcGF0aCBjb21wcmVzc2lvbiBhbmQgbGlua2luZyBieSByYW5rLiAqKVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBUaGUgcmFuayBvZiBhIHZlcnRleCBpcyB0aGUgbWF4aW11bSBsZW5ndGgsIGluIGVkZ2VzLCBvZiBhbiB1bmNvbXByZXNzZWQgcGF0aFxuICAgdGhhdCBsZWFkcyB0byB0aGlzIHZlcnRleC4gSW4gb3RoZXIgd29yZHMsIHRoZSByYW5rIG9mIFt4XSBpcyB0aGUgaGVpZ2h0IG9mXG4gICB0aGUgdHJlZSByb290ZWQgYXQgW3hdIHRoYXQgd291bGQgZXhpc3QgaWYgd2UgZGlkIG5vdCBwZXJmb3JtIHBhdGhcbiAgIGNvbXByZXNzaW9uLiAqKVxuXG50eXBlIHJhbmsgPVxuICBpbnRcblxuKCogVGhlIGNvbnRlbnQgb2YgYSB2ZXJ0ZXggaXMgYSBwb2ludGVyIHRvIGEgcGFyZW50IHZlcnRleCAoaWYgdGhlIHZlcnRleFxuICAgaGFzIGEgcGFyZW50KSBvciBhIHBhaXIgb2YgYSByYW5rIGFuZCBhIHVzZXIgdmFsdWUgKGlmIHRoZSB2ZXJ0ZXggaGFzIG5vXG4gICBwYXJlbnQsIGFuZCBpcyB0aHVzIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXggZm9yIHRoaXMgZXF1aXZhbGVuY2VcbiAgIGNsYXNzKS4gKilcblxuKCogV2UgbWFrZSB0aGUgdHlwZSBbJ2EgY29udGVudF0gbXV0YWJsZSwgYW5kIHdlIG1haW50YWluIHRoZSBwcm9wZXJ0eSB0aGF0XG4gICBldmVyeSB2ZXJ0ZXggdW5pcXVlbHkgb3ducyBpdHMgY29udGVudC4gVGhpcyBhbGxvd3MgdXMgdG8gdXBkYXRlIGEgY29udGVudFxuICAgaW4gcGxhY2UgaW5zdGVhZCBvZiBhbGxvY2F0aW5nIGEgbmV3IGNvbnRlbnQgYW5kIHVwZGF0aW5nIHRoZSB2ZXJ0ZXggd2l0aFxuICAgdGhpcyBuZXcgY29udGVudC5cblxuICAgV2Ugb2J0YWluIHRoZSBwcm9wZXJ0eSB0aGF0OlxuICAgLSBvbmx5IFttYWtlXSBhbGxvY2F0ZXMgYSBuZXcgdmVydGV4IChhIHJlZmVyZW5jZSBhbmQgYSBbUm9vdF0gY29udGVudCk7XG4gICAtIG9ubHkgW3VuaW9uXSBhbmQgW21lcmdlXSBhbGxvY2F0ZSBhIG5ldyBlZGdlIChhIFtMaW5rXSBjb250ZW50KS5cbiAgIFtmaW5kXSwgW2dldF0sIFtzZXRdLCBbZXFdIGFsbG9jYXRlIG5vIG1lbW9yeS4gKilcblxudHlwZSAnYSBjb250ZW50ID1cbnwgTGluayBvZiB7IG11dGFibGUgcGFyZW50IDogJ2EgZWxlbSB9XG58IFJvb3Qgb2YgeyBtdXRhYmxlIHJhbmsgOiByYW5rOyBtdXRhYmxlIHZhbHVlIDogJ2EgfVxuXG4oKiBUaGUgdHlwZSBbJ2EgZWxlbV0gcmVwcmVzZW50cyBhIHZlcnRleCBpbiB0aGUgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZS4gKilcblxuYW5kICdhIGVsZW0gPVxuICAnYSBjb250ZW50IHJlZlxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWFrZSB2XSBjcmVhdGVzIGEgbmV3IHJvb3Qgb2YgcmFuayB6ZXJvLiAqKVxuXG5sZXQgbWFrZSAodiA6ICdhKSA6ICdhIGVsZW0gPVxuICByZWYgKFJvb3QgeyByYW5rID0gMDsgdmFsdWUgPSB2IH0pXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtmaW5kIHhdIGZpbmRzIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXggb2YgdGhlIGVxdWl2YWxlbmNlIGNsYXNzIG9mIFt4XS5cbiAgIEl0IGRvZXMgc28gYnkgZm9sbG93aW5nIHRoZSBwYXRoIGZyb20gW3hdIHRvIHRoZSByb290LiBQYXRoIGNvbXByZXNzaW9uIGlzXG4gICBwZXJmb3JtZWQgKG9uIHRoZSB3YXkgYmFjaykgYnkgbWFraW5nIGV2ZXJ5IHZlcnRleCBhbG9uZyB0aGUgcGF0aCBhXG4gICBkaXJlY3QgY2hpbGQgb2YgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gTm8gcmFuayBpcyBhbHRlcmVkLiAqKVxuXG5sZXQgcmVjIGZpbmQgKHggOiAnYSBlbGVtKSA6ICdhIGVsZW0gPVxuICBtYXRjaCAheCB3aXRoXG4gIHwgUm9vdCBfIC0+XG4gICAgICB4XG4gIHwgTGluayAoeyBwYXJlbnQgPSB5IH0gYXMgbGluaykgLT5cbiAgICAgIGxldCB6ID0gZmluZCB5IGluXG4gICAgICBpZiB6ICE9IHkgdGhlblxuICAgICAgICBsaW5rLnBhcmVudCA8LSB6O1xuICAgICAgelxuXG5sZXQgaXNfcmVwcmVzZW50YXRpdmUgKHggOiAnYSBlbGVtKSA6IGJvb2wgPVxuICBtYXRjaCAheCB3aXRoXG4gIHwgUm9vdCBfIC0+XG4gICAgICB0cnVlXG4gIHwgTGluayBfIC0+XG4gICAgICBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZXEgeCB5XSBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHZlcnRpY2VzIFt4XSBhbmQgW3ldIGJlbG9uZyBpbiB0aGVcbiAgIHNhbWUgZXF1aXZhbGVuY2UgY2xhc3MuIEl0IGRvZXMgc28gdmlhIHR3byBjYWxscyB0byBbZmluZF0gYW5kIGFcbiAgIHBoeXNpY2FsIGVxdWFsaXR5IHRlc3QuIEFzIGEgZmFzdCBwYXRoLCB3ZSBmaXJzdCB0ZXN0IHdoZXRoZXIgW3hdXG4gICBhbmQgW3ldIGFyZSBwaHlzaWNhbGx5IGVxdWFsLiAqKVxuXG5sZXQgZXEgKHggOiAnYSBlbGVtKSAoeSA6ICdhIGVsZW0pIDogYm9vbCA9XG4gIHggPT0geSB8fCBmaW5kIHggPT0gZmluZCB5XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtnZXQgeF0gcmV0dXJucyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IGdldCAoeCA6ICdhIGVsZW0pIDogJ2EgPVxuICBsZXQgeCA9IGZpbmQgeCBpblxuICBtYXRjaCAheCB3aXRoXG4gIHwgUm9vdCB7IHZhbHVlID0gdjsgXyB9IC0+XG4gICAgICB2XG4gIHwgTGluayBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW3NldCB4XSB1cGRhdGVzIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgc2V0ICh4IDogJ2EgZWxlbSkgKHYgOiAnYSkgOiB1bml0ID1cbiAgbGV0IHggPSBmaW5kIHggaW5cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3Qgcm9vdCAtPlxuICAgICAgcm9vdC52YWx1ZSA8LSB2XG4gIHwgTGluayBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW3VuaW9uIHggeV0gbWVyZ2VzIHRoZSBlcXVpdmFsZW5jZSBjbGFzc2VzIG9mIFt4XSBhbmQgW3ldIGJ5IGluc3RhbGxpbmcgYVxuICAgbGluayBmcm9tIG9uZSByb290IHZlcnRleCB0byB0aGUgb3RoZXIuICopXG5cbigqIExpbmtpbmcgaXMgYnkgcmFuazogdGhlIHNtYWxsZXItcmFua2VkIHZlcnRleCBpcyBtYWRlIHRvIHBvaW50IHRvIHRoZVxuICAgbGFyZ2VyLiBJZiB0aGUgdHdvIHZlcnRpY2VzIGhhdmUgdGhlIHNhbWUgcmFuaywgdGhlbiBhbiBhcmJpdHJhcnkgY2hvaWNlXG4gICBpcyBtYWRlLCBhbmQgdGhlIHJhbmsgb2YgdGhlIG5ldyByb290IGlzIGluY3JlbWVudGVkIGJ5IG9uZS4gKilcblxubGV0IHVuaW9uICh4IDogJ2EgZWxlbSkgKHkgOiAnYSBlbGVtKSA6ICdhIGVsZW0gPVxuICBsZXQgeCA9IGZpbmQgeFxuICBhbmQgeSA9IGZpbmQgeSBpblxuICBpZiB4ID09IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCAheCwgIXkgd2l0aFxuICAgIHwgUm9vdCAoeyByYW5rID0gcng7IF8gfSBhcyByb290eCksIFJvb3QgeyByYW5rID0gcnk7IF8gfSAtPlxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICB4IDo9IExpbmsgeyBwYXJlbnQgPSB5IH07XG4gICAgICAgICAgeVxuICAgICAgICBlbmQgZWxzZSBpZiByeCA+IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4IH07XG4gICAgICAgICAgeFxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHh9O1xuICAgICAgICAgIHJvb3R4LnJhbmsgPC0gcnggKyAxO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWVyZ2VdIGlzIGFuYWxvZ291cyB0byBbdW5pb25dLCBidXQgaW52b2tlcyBhIHVzZXItc3BlY2lmaWVkIGZ1bmN0aW9uIFtmXVxuICAgdG8gY29tcHV0ZSB0aGUgbmV3IHZhbHVlIFt2XSBhc3NvY2lhdGVkIHdpdGggdGhlIGVxdWl2YWxlbmNlIGNsYXNzLiAqKVxuXG4oKiBUaGUgZnVuY3Rpb24gW2ZdIG11c3Qgbm90IGFmZmVjdCB0aGUgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBieSBtYWtpbmdcbiAgIHJlLWVudHJhbnQgY2FsbHMgdG8gW3NldF0sIFt1bmlvbl0sIG9yIFttZXJnZV0uIFRoZXJlIGFyZSB0d28gcmVhc29ucyBmb3JcbiAgIHRoaXMuIEZpcnN0LCBbZl0gbWF5IGJlIGludm9rZWQgYXQgYSB0aW1lIHdoZW4gdGhlIGludmFyaWFudCBvZiB0aGUgZGF0YVxuICAgc3RydWN0dXJlIGlzIHRlbXBvcmFyaWx5IHZpb2xhdGVkOiBpbiB0aGUgdGhpcmQgYnJhbmNoIGJlbG93LCB0aGUgcmFuayBvZlxuICAgW3hdIGhhcyBub3QgeWV0IGJlZW4gaW5jcmVhc2VkIHdoZW4gW2ZdIGlzIGludm9rZWQuIFNlY29uZCwgbW9yZSBzZXJpb3VzbHksXG4gICBpZiBbZl0gY291bGQgY2FsbCwgc2F5LCBbdW5pb25dLCB0aGVuIHRoYXQgY291bGQgY2hhbmdlIGEgW1Jvb3RdIGludG8gYVxuICAgW0xpbmtdLCBzbyB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCBjaGFuZ2UgYSBbTGlua11cbiAgIGJhY2sgaW50byBhIFtSb290XSwgc29tZXRoaW5nIHRoYXQgZG9lcyBub3QgbWFrZSBhbnkgc2Vuc2UuIEFsc28sIGlmIFtmXVxuICAgY291bGQgY2FsbCBbc2V0XSwgdGhlbiB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCB1bmRvXG4gICB0aGUgZWZmZWN0IG9mIHRoaXMgW3NldF0gb3BlcmF0aW9uOyB0aGlzIGFsc28gZG9lcyBub3QgbWFrZSBzZW5zZS4gKilcblxuKCogVGhlIHRlc3RzIFtpZiB2ICE9IHZ5IHRoZW4gLi4uXSBhbmQgW2lmIHYgIT0gdnggdGhlbiAuLi5dIGFyZSBpbnRlbmRlZCB0b1xuICAgc2F2ZSBhbiBhbGxvY2F0aW9uIGFuZCBhIHdyaXRlIHdoZW4gcG9zc2libGUuICopXG5cbigqIFdlIGludm9rZSBbZl0gYmVmb3JlIHBlcmZvcm1pbmcgYW55IHVwZGF0ZSwgc28gdGhhdCBpZiBbZl0gZmFpbHNcbiAgIChieSByYWlzaW5nIGFuIGV4Y2VwdGlvbiksIHRoZSBzdGF0ZSBpcyB1bmFmZmVjdGVkLiAqKVxuXG5sZXQgbWVyZ2UgKGYgOiAnYSAtPiAnYSAtPiAnYSkgKHggOiAnYSBlbGVtKSAoeSA6ICdhIGVsZW0pIDogJ2EgZWxlbSA9XG4gIGxldCB4ID0gZmluZCB4XG4gIGFuZCB5ID0gZmluZCB5IGluXG4gIGlmIHggPT0geSB0aGVuIHggZWxzZVxuICAgIG1hdGNoICF4LCAheSB3aXRoXG4gICAgfCBSb290ICh7IHJhbmsgPSByeDsgdmFsdWUgPSB2eCB9IGFzIHJvb3R4KSxcbiAgICAgIFJvb3QgKHsgcmFuayA9IHJ5OyB2YWx1ZSA9IHZ5IH0gYXMgcm9vdHkpIC0+XG4gICAgICAgIGxldCB2ID0gZiB2eCB2eSBpblxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICB4IDo9IExpbmsgeyBwYXJlbnQgPSB5IH07XG4gICAgICAgICAgaWYgdiAhPSB2eSB0aGVuIHJvb3R5LnZhbHVlIDwtIHY7XG4gICAgICAgICAgeVxuICAgICAgICBlbmQgZWxzZSBpZiByeCA+IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4IH07XG4gICAgICAgICAgaWYgdiAhPSB2eCB0aGVuIHJvb3R4LnZhbHVlIDwtIHY7XG4gICAgICAgICAgeFxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHggfTtcbiAgICAgICAgICByb290eC5yYW5rIDwtIHJ4ICsgMTtcbiAgICAgICAgICBpZiB2ICE9IHZ4IHRoZW4gcm9vdHgudmFsdWUgPC0gdjtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBJTlRNQVAgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHZhbCBlbXB0eTogJ2EgdFxuICB2YWwgZmluZDogaW50IC0+ICdhIHQgLT4gJ2FcbiAgdmFsIGFkZDogaW50IC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChJbnRNYXAgOiBJTlRNQVApID0gc3RydWN0XG5cbigqIEEgc3RvcmUgaXMgaW1wbGVtZW50ZWQgYXMgYSBwYWlyIG9mIGFuIGludGVnZXIgYWRkcmVzcyBhbmQgYSBtYXAgb2ZcbiAgIGludGVnZXIgYWRkcmVzc2VzIHRvIHZhbHVlcy4gV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHRoZVxuICAgZG9tYWluIG9mIHRoZSBtYXAgW2NvbnRlbnRdIGlzIHRoZSBzZW1pLW9wZW4gaW50ZXJ2YWwgb2YgemVyb1xuICAgKGluY2x1ZGVkKSB1cCB0byBbbGltaXRdIChleGNsdWRlZCkuICopXG5cbnR5cGUgJ2Egc3RvcmUgPSB7XG4gICgqIFRoZSBuZXh0IGF2YWlsYWJsZSBhZGRyZXNzLiAqKVxuICBtdXRhYmxlIGxpbWl0OiAgIGludDtcbiAgKCogVGhlIGNvbnRlbnQgb2YgdGhlIHN0b3JlLiAqKVxuICBtdXRhYmxlIGNvbnRlbnQ6ICdhIEludE1hcC50XG59XG5cbmxldCBuZXdfc3RvcmUgKCkgPSB7XG4gIGxpbWl0ID0gMDtcbiAgY29udGVudCA9IEludE1hcC5lbXB0eVxufVxuXG4oKiBCZWNhdXNlIGEgcGVyc2lzdGVudCBtYXAgaXMgdXNlZCwgY29weWluZyBhIHN0b3JlIGFtb3VudHMgdG8gY29weWluZ1xuICAgdGhlIG11dGFibGUgcmVjb3JkIGF0IHRoZSByb290LiAqKVxuXG5sZXQgY29weSBzID1cbiAgeyBsaW1pdCA9IHMubGltaXQ7IGNvbnRlbnQgPSBzLmNvbnRlbnQgfVxuXG4oKiBBIHJlZmVyZW5jZSBpcyBqdXN0IGFuIGludGVnZXIgYWRkcmVzcy4gKilcblxudHlwZSAnYSBycmVmID1cbiAgaW50XG5cbmxldCBtYWtlIHMgdiA9XG4gIGxldCB4ID0gcy5saW1pdCBpblxuICBzLmxpbWl0IDwtIHggKyAxO1xuICBzLmNvbnRlbnQgPC0gSW50TWFwLmFkZCB4IHYgcy5jb250ZW50O1xuICB4XG5cbigqIFtjaGVjayBzIHhdIGNoZWNrcyB0aGF0IHRoZSBhZGRyZXNzIFt4XSBpcyBpbiByYW5nZSBmb3IgdGhlIHN0b3JlIFtzXS4gSWZcbiAgIHRoaXMgZHluYW1pYyBjaGVjayBmYWlscywgdGhlbiB0aGUgdXNlciBpcyBjb25mdXNlZCBhbmQgaGFzIHBhc3NlZCB1cyBhblxuICAgYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAoSWYgdGhlIGNoZWNrIHN1Y2NlZWRzLFxuICAgdGhlIHVzZXIgbWF5IGJlIGNvbmZ1c2VkIHRvbyEgYnV0IHdlIGNhbm5vdCBkZXRlY3QgaXQuKSAqKVxuXG5leGNlcHRpb24gSW52YWxpZFJlZlxuXG5sZXQgY2hlY2sgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA9XG4gICgqIFdlIGRvIG5vdCBjaGVjayB0aGF0IFt4XSBpcyBub25uZWdhdGl2ZS4gQW4gb3ZlcmZsb3cgY2Fubm90IG9jY3VyLFxuICAgICBzaW5jZSB0aGF0IHdvdWxkIGltcGx5IHRoYXQgd2UgaGF2ZSBmaWxsZWQgdGhlIG1lbW9yeSB3aXRoIGEgaHVnZVxuICAgICBhcnJheS4gKilcbiAgIGlmIHggPj0gcy5saW1pdCB0aGVuXG4gICAgIHJhaXNlIEludmFsaWRSZWZcblxubGV0IGdldCBzIHggPVxuICAoKiBGYWlsdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIHdvdWxkIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgaGFzIHBhc3NlZCB1c1xuICAgICBhbiBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuICopXG4gIGNoZWNrIHMgeDtcbiAgSW50TWFwLmZpbmQgeCBzLmNvbnRlbnRcblxubGV0IHNldCBzIHggdiA9XG4gICgqIEZhaWx1cmUgb2YgdGhpcyBhc3NlcnRpb24gd291bGQgaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBoYXMgcGFzc2VkIHVzXG4gICAgIGFuIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKilcbiAgY2hlY2sgcyB4O1xuICBzLmNvbnRlbnQgPC0gSW50TWFwLmFkZCB4IHYgcy5jb250ZW50XG5cbmxldCBlcSBzICh4IDogaW50KSAoeSA6IGludCkgPVxuICAoKiBGYWlsdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIHdvdWxkIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgaGFzIHBhc3NlZCB1c1xuICAgICBhbiBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuICopXG4gIGNoZWNrIHMgeDtcbiAgY2hlY2sgcyB5O1xuICB4ID0geVxuXG5lbmRcblxuKCogSW5jbHVkZSB0aGUgbW9zdCBjb21tb24gaW5zdGFuY2Ugb2YgdGhlIGFib3ZlIGZ1bmN0b3IuICopXG5cbmluY2x1ZGUgTWFrZShNYXAuTWFrZShzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG4gIGxldCBjb21wYXJlID0gKC0pICgqIG9rIHNpbmNlIHRoZSBhcmd1bWVudHMgYXJlIG5vbm5lZ2F0aXZlIGludGVnZXJzICopXG5lbmQpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFdoZW4gT0NhbWwncyBidWlsdC1pbiBzdG9yZSBpcyB1c2VkLCBubyBleHBsaWNpdCBzdG9yZSBpcyBuZWVkZWQuICopXG5cbnR5cGUgJ2Egc3RvcmUgPVxuICB1bml0XG5cbmxldCBuZXdfc3RvcmUgKCkgPVxuICAoKVxuXG4oKiBDb3B5aW5nIGlzIG5vdCBzdXBwb3J0ZWQuICopXG5cbmxldCBjb3B5IF9zID1cbiAgYXNzZXJ0IGZhbHNlXG5cbigqIEEgcmVmZXJlbmNlIGlzIGEgcHJpbWl0aXZlIHJlZmVyZW5jZS4gKilcblxudHlwZSAnYSBycmVmID1cbiAgJ2EgcmVmXG5cbmxldCBtYWtlICgpIHYgPVxuICByZWYgdlxuXG5sZXQgZ2V0ICgpIHggPVxuICAheFxuXG5sZXQgc2V0ICgpIHggdiA9XG4gIHggOj0gdlxuXG5sZXQgZXEgKCkgeCB5ID1cbiAgeCA9PSB5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQSByZWZlcmVuY2UgY2VsbCByZWNvcmRzIGJvdGggaXRzIGN1cnJlbnQgKHBvc3NpYmx5IHVuY29tbWl0dGVkKSB2YWx1ZSBhbmRcbiAgIGl0cyBsYXN0IGNvbW1pdHRlZCB2YWx1ZS4gQSBjZWxsIGlzIGNvbnNpZGVyZWQgc3RhYmxlIHdoZW4gdGhlc2UgdHdvIHZhbHVlc1xuICAgYXJlIChwaHlzaWNhbGx5KSBlcXVhbCwgYW5kIHVuc3RhYmxlIG90aGVyd2lzZS4gKilcblxuKCogT25lIGNvdWxkIHBlcmhhcHMgZW5yaWNoIGVhY2ggY2VsbCB3aXRoIGEgcG9pbnRlciB0byBpdHMgc3RvcmUsIHNvIGFzIHRvXG4gICBlbnN1cmUgYXQgcnVudGltZSB0aGF0IHRoZSB1c2VyIGlzIG5vdCBjb25mdXNlZC4gKilcblxudHlwZSAnYSBycmVmID0ge1xuICAoKiBUaGUgY3VycmVudCAocG9zc2libHkgdW5jb21taXR0ZWQpIHZhbHVlLiAqKVxuICBtdXRhYmxlIGN1cnJlbnQ6ICdhO1xuICAoKiBUaGUgbGFzdCBjb21taXR0ZWQgdmFsdWUuICopXG4gIG11dGFibGUgY29tbWl0dGVkOiAnYVxufVxuXG4oKiBBIHRyYW5zYWN0aW9uIGNvbnRhaW5zIGEgc3RhY2sgb2YgYWxsIHVuc3RhYmxlIGNlbGxzIChhbmQgcG9zc2libHkgc29tZVxuICAgc3RhYmxlIGNlbGxzIHRvbywgYWx0aG91Z2ggdGhhdCBpcyB1bmxpa2VseSkuICopXG5cbnR5cGUgJ2EgdHJhbnNhY3Rpb24gPVxuICAnYSBycmVmIFN0YWNrLnRcblxuKCogQSBzdG9yZSBjb250YWlucyBhbiBvcHRpb25hbCB0cmFuc2FjdGlvbi4gVGhpcyBpbmRpY2F0ZXMgd2hldGhlciBhXG4gICB0cmFuc2FjdGlvbiBpcyBjdXJyZW50bHkgb25nb2luZy4gVHJhbnNhY3Rpb25zIGNhbm5vdCBiZSBuZXN0ZWQuICopXG5cbnR5cGUgJ2Egc3RvcmUgPVxuICB7IG11dGFibGUgdHJhbnNhY3Rpb246ICdhIHRyYW5zYWN0aW9uIG9wdGlvbiB9XG5cbmxldCBuZXdfc3RvcmUgKCkgOiAnYSBzdG9yZSA9XG4gIHsgdHJhbnNhY3Rpb24gPSBOb25lIH1cblxuKCogQ29weWluZyBpcyBub3Qgc3VwcG9ydGVkLiAqKVxuXG5sZXQgY29weSBfcyA9XG4gIGFzc2VydCBmYWxzZVxuXG5sZXQgbWFrZSAoX3MgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiAnYSBycmVmID1cbiAgeyBjdXJyZW50ID0gdjsgY29tbWl0dGVkID0gdiB9XG5cbmxldCBnZXQgKF9zIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSA9XG4gIHguY3VycmVudFxuXG5sZXQgc2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgKCogSWYgdGhlIG5ldyB2YWx1ZSBoYXBwZW5zIHRvIGJlIHRoZSBjdXJyZW50IHZhbHVlLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLiAqKVxuICBsZXQgY3VycmVudCA9IHguY3VycmVudCBpblxuICBpZiB2ID09IGN1cnJlbnQgdGhlblxuICAgICgpXG4gIGVsc2UgYmVnaW4gbWF0Y2ggcy50cmFuc2FjdGlvbiB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgKCogT3V0c2lkZSBvZiBhIHRyYW5zYWN0aW9uLCB0d28gbm9ybWFsIHdyaXRlIG9wZXJhdGlvbnMgYXJlIHBlcmZvcm1lZC5cbiAgICAgICAgIFRoZSBjZWxsIHJlbWFpbnMgc3RhYmxlLiBOb3RoaW5nIGlzIGxvZ2dlZC4gKilcbiAgICAgIHguY3VycmVudCA8LSB2O1xuICAgICAgeC5jb21taXR0ZWQgPC0gdlxuICB8IFNvbWUgc3RhY2sgLT5cbiAgICAgICgqIFdlIGFyZSB3aXRoaW4gYSB0cmFuc2FjdGlvbi4gKilcbiAgICAgICgqIElmIHRoaXMgY2VsbCB3YXMgc3RhYmxlIGFuZCBub3cgYmVjb21lcyB1bnN0YWJsZSwgdGhlbiBpdCBtdXN0IGJlXG4gICAgICAgICBpbnNlcnRlZCBpbnRvIHRoZSBzZXQgb2YgdW5zdGFibGUgY2VsbHMsIHdoaWNoIGlzIHJlY29yZGVkIGFzIHBhcnRcbiAgICAgICAgIG9mIHRoZSB0cmFuc2FjdGlvbi4gKilcbiAgICAgIGlmIGN1cnJlbnQgPT0geC5jb21taXR0ZWQgdGhlblxuICAgICAgICBTdGFjay5wdXNoIHggc3RhY2s7XG4gICAgICAoKiBUaGUgY2VsbCBtdXN0IHRoZW4gYmUgdXBkYXRlZC4gSWYgW3ZdIGhhcHBlbnMgdG8gYmUgZXF1YWwgdG9cbiAgICAgICAgIFtjb21taXR0ZWRdLCB0aGlzIGNvdWxkIG1ha2UgdGhlIGNlbGwgc3RhYmxlIGFnYWluLiBXZSBkbyBub3RcbiAgICAgICAgIGNoZWNrIGZvciB0aGlzIHVubGlrZWx5IHNpdHVhdGlvbi4gVGhpcyBtZWFucyB0aGF0IHRoZSBzZXQgb2ZcbiAgICAgICAgIHVuc3RhYmxlIGNlbGxzIGNvdWxkIGFjdHVhbGx5IGNvbnRhaW4gc3RhYmxlIGNlbGxzIHRvby4gKilcbiAgICAgIHguY3VycmVudCA8LSB2XG4gICAgZW5kXG5cbmxldCBlcSAoX3MgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIHggPT0geVxuXG5leGNlcHRpb24gTmVzdGVkVHJhbnNhY3Rpb25BdHRlbXB0XG5cbmxldCBjb21taXQgeCA9XG4gIHguY29tbWl0dGVkIDwtIHguY3VycmVudFxuXG5sZXQgcm9sbGJhY2sgeCA9XG4gIHguY3VycmVudCA8LSB4LmNvbW1pdHRlZFxuXG5sZXQgdGVudGF0aXZlbHkgKHMgOiAnYSBzdG9yZSkgKGYgOiB1bml0IC0+ICdiKSA6ICdiID1cbiAgbWF0Y2ggcy50cmFuc2FjdGlvbiB3aXRoXG4gIHwgU29tZSBfIC0+XG4gICAgICByYWlzZSBOZXN0ZWRUcmFuc2FjdGlvbkF0dGVtcHRcbiAgfCBOb25lIC0+XG4gICAgICBsZXQgc3RhY2sgPSBTdGFjay5jcmVhdGUoKSBpblxuICAgICAgcy50cmFuc2FjdGlvbiA8LSBTb21lIHN0YWNrO1xuICAgICAgdHJ5XG4gICAgICAgIGxldCBiID0gZigpIGluXG4gICAgICAgICgqIENvbW1pdCBldmVyeSB1bnN0YWJsZSBjZWxsLiAqKVxuICAgICAgICBTdGFjay5pdGVyIGNvbW1pdCBzdGFjaztcbiAgICAgICAgKCogQ2xvc2UgdGhlIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgICBzLnRyYW5zYWN0aW9uIDwtIE5vbmU7XG4gICAgICAgICgqIFJlcG9ydCB0aGUgb3V0Y29tZS4gKilcbiAgICAgICAgYlxuICAgICAgd2l0aCBlIC0+XG4gICAgICAgIGxldCBiID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UoKSBpblxuICAgICAgICAoKiBSb2xsIGJhY2sgZXZlcnkgdW5zdGFibGUgY2VsbC4gKilcbiAgICAgICAgU3RhY2suaXRlciByb2xsYmFjayBzdGFjaztcbiAgICAgICAgKCogQ2xvc2UgdGhlIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgICBzLnRyYW5zYWN0aW9uIDwtIE5vbmU7XG4gICAgICAgICgqIFJlcG9ydCB0aGUgb3V0Y29tZS4gKilcbiAgICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgZSBiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQSBzdG9yZSBpcyBpbXBsZW1lbnRlZCBhcyBhbiBleHRlbnNpYmxlIGFycmF5LCB0aGF0IGlzLCBhIHBhaXIgb2YgYW5cbiAgIGludGVnZXIgYWRkcmVzcyBhbmQgYW4gYXJyYXkuIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB0aGUgbGVuZ3RoIG9mXG4gICB0aGUgYXJyYXkgaXMgYXQgbGVhc3QgW2xpbWl0XS4gVGhlIGFyZWEgb2YgdGhlIGFycmF5IGF0IGluZGV4IFtsaW1pdF0gYW5kXG4gICBiZXlvbmQgaXMgY29uc2lkZXJlZCB1bmluaXRpYWxpemVkLiAqKVxuXG4oKiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhpcyBhcmVhIGlzIGZpbGxlZCB3aXRoIGFyYml0cmFyeSB2YWx1ZShzKVxuICAgcHJvdmlkZWQgYnkgdGhlIHVzZXIgaW4gY2FsbHMgdG8gW21ha2VdIG9yIFtzZXRdLiBUaGlzIGlzIG5vdCBpZGVhbCwgYXMgaXRcbiAgIGNhbiBjYXVzZSBhIG1lbW9yeSBsZWFrLiAqKVxuXG50eXBlICdhIHN0b3JlID0ge1xuICAoKiBUaGUgbG9naWNhbCBzaXplIG9mIHRoZSBhcnJheTsgYWxzbywgdGhlIG5leHQgYXZhaWxhYmxlIGFkZHJlc3MuICopXG4gIG11dGFibGUgbGltaXQ6ICAgaW50O1xuICAoKiBUaGUgYXJyYXksIHdob3NlIGxlbmd0aCBpcyBhdCBsZWFzdCBbbGltaXRdLiAqKVxuICBtdXRhYmxlIGNvbnRlbnQ6ICdhIGFycmF5XG59XG5cbigqIFRoZSBhcnJheSBpcyBjcmVhdGVkIHdpdGggYSBzaXplIGFuZCBsZW5ndGggb2YgemVyby4gV2UgaGF2ZSBubyBvdGhlclxuICAgY2hvaWNlLCBzaW5jZSB3ZSBkbyBub3QgaGF2ZSBhIHZhbHVlIG9mIHR5cGUgWydhXSBhdCBoYW5kLiAqKVxuXG5sZXQgbmV3X3N0b3JlICgpIDogJ2Egc3RvcmUgPSB7XG4gIGxpbWl0ID0gMDtcbiAgY29udGVudCA9IFt8fF1cbn1cblxuKCogQ29weWluZyBpcyBzdXBwb3J0ZWQsIGJ1dCBpcyBub3QgY2hlYXAuIFVzZSBhdCB5b3VyIG93biByaXNrLiAqKVxuXG5sZXQgY29weSAocyA6ICdhIHN0b3JlKSA6ICdhIHN0b3JlID1cbiAgeyBsaW1pdCA9IHMubGltaXQ7IGNvbnRlbnQgPSBBcnJheS5jb3B5IHMuY29udGVudCB9XG5cbigqIEEgcmVmZXJlbmNlIGlzIGFuIGluZGV4IGludG8gdGhlIGFycmF5LiAqKVxuXG50eXBlICdhIHJyZWYgPVxuICBpbnRcblxuKCogVGhlIGFycmF5IGp1bXBzIGZyb20gbGVuZ3RoIHplcm8gdG8gbGVuZ3RoIFtkZWZhdWx0X2luaXRpYWxfbGVuZ3RoXSBhcyBzb29uXG4gICBhcyBhIGNhbGwgdG8gW21ha2VdIGlzIG1hZGUuICopXG5cbmxldCBkZWZhdWx0X2luaXRpYWxfbGVuZ3RoID1cbiAgMjU2XG5cbigqIFtlbmxhcmdlIHMgdl0gaW5jcmVhc2VzIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IChpZiBuZWNlc3NhcnkpIHNvIGFzIHRvXG4gICBlbnN1cmUgdGhhdCBbcy5saW1pdF0gYmVjb21lcyBhIHZhbGlkIGluZGV4LiBUaGUgYXJndW1lbnQgW3ZdIGlzIHVzZWQgYXMgYVxuICAgZGVmYXVsdCB2YWx1ZSB0byBmaWxsIHRoZSB1bmluaXRpYWxpemVkIGFyZWEuICopXG5cbmxldCBlbmxhcmdlIChzIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogdW5pdCA9XG4gIGxldCBjb250ZW50ID0gcy5jb250ZW50IGluXG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggY29udGVudCBpblxuICBpZiBzLmxpbWl0ID0gbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBsZXQgbGVuZ3RoJyA9XG4gICAgICBpZiBsZW5ndGggPSAwIHRoZW5cbiAgICAgICAgZGVmYXVsdF9pbml0aWFsX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICAyICogbGVuZ3RoXG4gICAgaW5cbiAgICBhc3NlcnQgKHMubGltaXQgPCBsZW5ndGgnKTtcbiAgICBsZXQgY29udGVudCcgPSBBcnJheS5tYWtlIGxlbmd0aCcgdiBpblxuICAgIEFycmF5LmJsaXQgY29udGVudCAwIGNvbnRlbnQnIDAgbGVuZ3RoO1xuICAgIHMuY29udGVudCA8LSBjb250ZW50J1xuICBlbmRcblxuKCogTm90ZSB0aGF0IHdlIGNhbm5vdCB1c2UgW0FycmF5LnVuc2FmZV9zZXRdIGFuZCBbQXJyYXkudW5zYWZlX2dldF0gd2l0aG91dFxuICAgYW55IHByZWNhdXRpb25zLCBzaW5jZSB0aGUgT0NhbWwgdHlwZS1jaGVja2VyIGNhbm5vdCBndWFyYW50ZWUgdGhhdCB0aGVcbiAgIGluZGljZXMgYXJlIGluIHJhbmdlLiBBIGNvbmZ1c2VkIHVzZXIgY291bGQgcGFzcyByZWZlcmVuY2VzIGludG8gc29tZVxuICAgb3RoZXIgc3RvcmUuIFdlIGNob29zZSB0byBleHBsaWNpdGx5IGNoZWNrIHRoYXQgdGhlIGluZGV4IGlzIHdpdGhpbiB0aGVcbiAgIGxvZ2ljYWwgYm91bmRzIG9mIHRoZSBhcnJheSAtLSB0aGlzIGlzIGEgbW9yZSBwcmVjaXNlIGNoZWNrLiAqKVxuXG5leGNlcHRpb24gSW52YWxpZFJlZlxuXG5sZXQgY2hlY2sgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6IHVuaXQgPVxuICAoKiBXZSBkbyBub3QgY2hlY2sgdGhhdCBbeF0gaXMgbm9ubmVnYXRpdmUuIEFuIG92ZXJmbG93IGNhbm5vdCBvY2N1cixcbiAgICAgc2luY2UgdGhhdCB3b3VsZCBpbXBseSB0aGF0IHdlIGhhdmUgZmlsbGVkIHRoZSBtZW1vcnkgd2l0aCBhIGh1Z2VcbiAgICAgYXJyYXkuICopXG4gIGlmIHggPj0gcy5saW1pdCB0aGVuXG4gICAgcmFpc2UgSW52YWxpZFJlZlxuXG5sZXQgbWFrZSAocyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6ICdhIHJyZWYgPVxuICBlbmxhcmdlIHMgdjtcbiAgbGV0IHggPSBzLmxpbWl0IGluXG4gIHMubGltaXQgPC0geCArIDE7XG4gIEFycmF5LnVuc2FmZV9zZXQgcy5jb250ZW50IHggdjtcbiAgeFxuXG5sZXQgZ2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSA9XG4gIGNoZWNrIHMgeDtcbiAgQXJyYXkudW5zYWZlX2dldCBzLmNvbnRlbnQgeFxuXG5sZXQgc2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgY2hlY2sgcyB4O1xuICBBcnJheS51bnNhZmVfc2V0IHMuY29udGVudCB4IHZcblxubGV0IGVxICAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiBib29sID1cbiAgY2hlY2sgcyB4O1xuICBjaGVjayBzIHk7XG4gIHggPSB5XG4iLCJsZXQgbmJzcCA9IFwiXFx4QzJcXHhBMFwiOyAvLyBVVEYtOCBlbmNvZGluZyBmb3IgVSswMEEwIFwiTm8tYnJlYWsgc3BhY2VcIlxuXG4vLyBOT1RFOiAzMCUgZmFzdGVyIHRoYW4gQ2Ftb21pbGVcbmxldCBsZW5ndGggPSAoczogc3RyaW5nKTogaW50ID0+IHtcbiAgbGV0IHN0b3AgPSBTdHJpbmcubGVuZ3RoKHMpO1xuICBsZXQgcmVjIGRpc3RhbmNlX2F1eCA9IChzdGFydDogaW50LCBjb3VudDogaW50KSA9PlxuICAgIGlmIChzdGFydCArIGNvdW50ID49IHN0b3ApIHtcbiAgICAgIHN0b3AgLSBjb3VudDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG4gPSBDaGFyLmNvZGUoU3RyaW5nLnVuc2FmZV9nZXQocywgc3RhcnQgKyBjb3VudCkpO1xuICAgICAgaWYgKG4gPCAweDgwKSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50KTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZTApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAxKTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZjApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50ICsgMyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgZGlzdGFuY2VfYXV4KDAsIDApO1xufTtcbiIsIi8vIE1hcHMga2V5ZWQgYnkgYW4gZW5kIHBvc2l0aW9uXG4vLyBJbnZhcmllbnQ6IGtleXMgYXJlIGFzY2VuZGluZyBhbmQgdW5pcXVlXG50eXBlIGtleSA9IGludDtcbnR5cGUgdCgnYSkgPSBsaXN0KChrZXksICdhKSk7XG5sZXQgZW1wdHk6ICdhLiB0KCdhKSA9IFtdO1xubGV0IHNpbmdsZXRvbjogJ2EuIChrZXksICdhKSA9PiB0KCdhKSA9IChwb3MsIHgpID0+IFsocG9zLCB4KV07XG5sZXQgcmVjIHVuaW9uOiAnYS4gKCgnYSwgJ2EpID0+ICdhLCB0KCdhKSwgdCgnYSkpID0+IHQoJ2EpID1cbiAgKGYsIHQxLCB0MikgPT5cbiAgICBzd2l0Y2ggKHQxLCB0Mikge1xuICAgIHwgKFtdLCB0X290aGVyKSA9PiB0X290aGVyXG4gICAgfCAodF9vdGhlciwgW10pID0+IHRfb3RoZXJcbiAgICB8IChbKHAxLCB4MSksIC4uLnhzMV0sIFsocDIsIHgyKSwgLi4ueHMyXSkgPT5cbiAgICAgIGlmIChwMSA8IHAyKSB7XG4gICAgICAgIFsocDEsIHgxKSwgLi4udW5pb24oZiwgeHMxLCBbKHAyLCB4MiksIC4uLnhzMl0pXTtcbiAgICAgIH0gZWxzZSBpZiAocDEgPiBwMikge1xuICAgICAgICBbKHAyLCB4MiksIC4uLnVuaW9uKGYsIFsocDEsIHgxKSwgLi4ueHMxXSwgeHMyKV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbKHAxLCBmKHgxLCB4MikpLCAuLi51bmlvbihmLCB4czEsIHhzMildO1xuICAgICAgfVxuICAgIH07XG5sZXQgcmVjIG1hcDogJ2EgJ2IuICgnYSA9PiAnYiwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gWyhwb3MsIGYoeCkpLCAuLi5tYXAoZiwgcmVzdCldO1xubGV0IHJlYyBtYXBpOiAnYSAnYi4gKChrZXksICdhKSA9PiAnYiwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gWyhwb3MsIGYocG9zLCB4KSksIC4uLm1hcGkoZiwgcmVzdCldO1xubGV0IHJlYyBtYXBrOiAnYSAnYi4gKChrZXksICdhKSA9PiAoa2V5LCAnYiksIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIGYgPT5cbiAgICBmdW5cbiAgICB8IFtdID0+IFtdXG4gICAgfCBbKHBvcywgeCksIC4uLnJlc3RdID0+IFtmKHBvcywgeCksIC4uLm1hcGsoZiwgcmVzdCldO1xubGV0IHJlYyBmb2xkX2xlZnQ6ICdhICdiLiAoKGtleSwgJ2IsICdhKSA9PiAnYiwgJ2IsIHQoJ2EpKSA9PiAnYiA9XG4gIChmLCB6KSA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gelxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBmb2xkX2xlZnQoZiwgZihwb3MsIHosIHgpLCByZXN0KTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCA9IHtcbiAgcm93OiBpbnQsXG4gIGNvbDogaW50LFxufTtcblxubGV0IGNvbXBhcmUgPSAocG9zMSwgcG9zMikgPT5cbiAgaWYgKHBvczEucm93IDwgcG9zMi5yb3cpIHtcbiAgICAoLTEpO1xuICB9IGVsc2UgaWYgKHBvczEucm93ID4gcG9zMi5yb3cpIHtcbiAgICAxO1xuICB9IGVsc2Uge1xuICAgIEludC5jb21wYXJlKHBvczEuY29sLCBwb3MyLmNvbCk7XG4gIH07XG5cbmxldCB6ZXJvID0ge3JvdzogMCwgY29sOiAwfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8vIFRPRE86IHJlbmFtZSBBbm5vdCB0byBBbm4/XG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9XG4gIHwgVGV4dChzdHJpbmcpIC8vIEludmFyaWFudDogY29udGFpbnMgbm8gbmV3bGluZXMuIFRleHQoXCJcIikgaXMgaWRlbnRpdHkgZm9yIGBDYXRgXG4gIHwgQ2F0KHQoJ2Fubm90KSwgdCgnYW5ub3QpKSAvLyBBc3NvY2lhdGl2ZVxuICB8IExpbmVicmVha1xuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7IC8vIEFubm90YXRpb25zXG5cbmxldCBhbGlnbiA9IChsOiB0KCdhbm5vdCkpID0+IEFsaWduKGwpO1xubGV0IGFubm90ID0gKGFubm90OiAnYW5ub3QsIGw6IHQoJ2Fubm90KSkgPT4gQW5ub3QoYW5ub3QsIGwpO1xuXG5sZXQgcmVjIHJlbW92ZV9hbm5vdHMgPSAobGF5b3V0OiB0KCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge1xuICBzd2l0Y2ggKGxheW91dCkge1xuICB8IEFubm90KF8sIGwpID0+IHJlbW92ZV9hbm5vdHMobClcbiAgfCBUZXh0KHN0cmluZykgPT4gVGV4dChzdHJpbmcpXG4gIHwgQ2F0KGwxLCBsMikgPT4gQ2F0KHJlbW92ZV9hbm5vdHMobDEpLCByZW1vdmVfYW5ub3RzKGwyKSlcbiAgfCBMaW5lYnJlYWsgPT4gTGluZWJyZWFrXG4gIHwgQWxpZ24obCkgPT4gQWxpZ24ocmVtb3ZlX2Fubm90cyhsKSlcbiAgfTtcbn07XG5cbi8vIFRPRE8/XG4vL2xldCB0ZXh0ID0gKHN0cmluZykgPT4gdF9vZl9sYXlvdXQoVGV4dChzdHJpbmcpKTtcbi8vbGV0IGNhdCA9ICh0MSwgdDIpID0+IHRfb2ZfbGF5b3V0KENhdCh0MSwgdDIpKTtcbi8vbGV0IGxpbmVicmVhayA9IHRfb2ZfbGF5b3V0KGxpbmVicmVhayk7XG5cbi8vIFRPRE86IG1vdmUgdG8gb3duIG1vZHVsZVxudHlwZSB0ZXh0KCdhbm5vdCwgJ2ltcCwgJ3QpID0ge1xuICAvLyBUT0RPOiByZW5hbWUgYGltcGBcbiAgaW1wX29mX3N0cmluZzogc3RyaW5nID0+ICdpbXAsXG4gIGltcF9hcHBlbmQ6ICgnaW1wLCAnaW1wKSA9PiAnaW1wLFxuICBpbXBfbmV3bGluZTogaW50ID0+ICdpbXAsXG4gIGltcF9vZl9hbm5vdDogKCdhbm5vdCwgJ2ltcCkgPT4gJ2ltcCxcbiAgdF9vZl9pbXA6ICdpbXAgPT4gJ3QsXG59O1xuXG5sZXQgbWtfb2ZfbGF5b3V0OiAodGV4dCgnYW5ub3QsICdpbXAsICd0KSwgdCgnYW5ub3QpKSA9PiAndCA9XG4gICh0ZXh0LCBsYXlvdXQpID0+IHtcbiAgICBsZXQgY29sdW1uOiByZWYoaW50KSA9IHJlZigwKTtcbiAgICBsZXQgcmVjIGdvOiAoaW50LCB0KCdhbm5vdCkpID0+ICdpbXAgPVxuICAgICAgKGluZGVudCwgbGF5b3V0KSA9PiB7XG4gICAgICAgIHN3aXRjaCAobGF5b3V0KSB7XG4gICAgICAgIHwgVGV4dChzdHJpbmcpID0+XG4gICAgICAgICAgY29sdW1uIDo9IGNvbHVtbl4gKyBVbmljb2RlLmxlbmd0aChzdHJpbmcpO1xuICAgICAgICAgIHRleHQuaW1wX29mX3N0cmluZyhzdHJpbmcpO1xuICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgbGV0IGltcDEgPSBnbyhpbmRlbnQsIGwxKTtcbiAgICAgICAgICBsZXQgaW1wMiA9IGdvKGluZGVudCwgbDIpO1xuICAgICAgICAgIHRleHQuaW1wX2FwcGVuZChpbXAxLCBpbXAyKTtcbiAgICAgICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgICAgICAvLyBUT0RPOiBubyBpbmRlbnQgaWYgb24gZmluYWwgbGluZSBicmVha1xuICAgICAgICAgIGNvbHVtbiA6PSBpbmRlbnQ7XG4gICAgICAgICAgdGV4dC5pbXBfbmV3bGluZShpbmRlbnQpO1xuICAgICAgICB8IEFsaWduKGwpID0+IGdvKGNvbHVtbl4sIGwpXG4gICAgICAgIHwgQW5ub3QoYW5ub3QsIGwpID0+IHRleHQuaW1wX29mX2Fubm90KGFubm90LCBnbyhpbmRlbnQsIGwpKVxuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB0ZXh0LnRfb2ZfaW1wKGdvKDAsIGxheW91dCkpO1xuICB9O1xuXG5sZXQgc3RyaW5nX29mX2xheW91dDogJ2Fubm90LiB0KCdhbm5vdCkgPT4gc3RyaW5nID1cbiAgbGF5b3V0ID0+IHtcbiAgICBsZXQgcmVjb3JkOiAnYW5ub3QuIHRleHQoJ2Fubm90LCBzdHJpbmcsIHN0cmluZykgPSB7XG4gICAgICBpbXBfb2Zfc3RyaW5nOiBzdHJpbmcgPT4gc3RyaW5nLFxuICAgICAgaW1wX2FwcGVuZDogKHMxLCBzMikgPT4gczEgKysgczIsXG4gICAgICBpbXBfbmV3bGluZTogaW5kZW50ID0+IFwiXFxuXCIgKysgU3RyaW5nLm1ha2UoaW5kZW50LCAnICcpLFxuICAgICAgaW1wX29mX2Fubm90OiAoXywgaW1wKSA9PiBpbXAsXG4gICAgICB0X29mX2ltcDogaW1wID0+IGltcCxcbiAgICB9O1xuICAgIG1rX29mX2xheW91dChyZWNvcmQsIGxheW91dCk7XG4gIH07XG5cbmxldCBzdHJpbmdzX29mX2xheW91dDogJ2Fubm90LiB0KCdhbm5vdCkgPT4gbGlzdCgoaW50LCBzdHJpbmcpKSA9XG4gIGxheW91dCA9PiB7XG4gICAgbGV0IHJlY29yZDpcbiAgICAgICdhbm5vdC5cbiAgICAgIHRleHQoJ2Fubm90LCBsaXN0KChpbnQsIHN0cmluZykpLCBsaXN0KChpbnQsIHN0cmluZykpKVxuICAgICA9IHtcbiAgICAgIGltcF9vZl9zdHJpbmc6IHN0cmluZyA9PiBbKDAsIHN0cmluZyldLFxuICAgICAgaW1wX2FwcGVuZDogKHMxLCBzMikgPT4ge1xuICAgICAgICBzd2l0Y2ggKExpc3QucmV2KHMxKSwgczIpIHtcbiAgICAgICAgfCAoW10sIF8pID0+IHMyXG4gICAgICAgIHwgKF8sIFtdKSA9PiBzMVxuICAgICAgICB8IChcbiAgICAgICAgICAgIFsobGFzdF9pbmRlbnRfMSwgbGFzdF9zdHJpbmdfMSksIC4uLnJlc3QxXSxcbiAgICAgICAgICAgIFsoZmlyc3RfaW5kZW50XzIsIGZpcnN0X3N0cmluZ18yKSwgLi4ucmVzdDJdLFxuICAgICAgICAgICkgPT5cbiAgICAgICAgICBhc3NlcnQoZmlyc3RfaW5kZW50XzIgPT0gMCk7XG4gICAgICAgICAgTGlzdC5yZXYocmVzdDEpXG4gICAgICAgICAgQCBbKGxhc3RfaW5kZW50XzEsIGxhc3Rfc3RyaW5nXzEgKysgZmlyc3Rfc3RyaW5nXzIpLCAuLi5yZXN0Ml07XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgaW1wX25ld2xpbmU6IGluZGVudCA9PiBbKGluZGVudCwgXCJcIildLFxuICAgICAgaW1wX29mX2Fubm90OiAoXywgaW1wKSA9PiBpbXAsXG4gICAgICB0X29mX2ltcDogcyA9PiBzLFxuICAgIH07XG4gICAgbWtfb2ZfbGF5b3V0KHJlY29yZCwgbGF5b3V0KTtcbiAgfTtcbiIsImxldCBzcGxpdF9maXJzdCA9ICh4czogbGlzdCgnYSkpOiAoJ2EsIGxpc3QoJ2EpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gZmFpbHdpdGgoXCJlbXB0eSBsaXN0XCIpXG4gIHwgW2ZpcnN0LCAuLi50cmFpbGluZ10gPT4gKGZpcnN0LCB0cmFpbGluZylcbiAgfTtcblxubGV0IHNwbGl0X2xhc3Rfb3B0ID0gKHhzOiBsaXN0KCdhKSk6IG9wdGlvbigobGlzdCgnYSksICdhKSkgPT5cbiAgc3dpdGNoIChMaXN0LnJldih4cykpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW3ksIC4uLnlzXSA9PiBTb21lKChMaXN0LnJldih5cyksIHkpKVxuICB9O1xubGV0IHNwbGl0X2xhc3QgPSAoeHM6IGxpc3QoJ2EpKTogKGxpc3QoJ2EpLCAnYSkgPT5cbiAgc3dpdGNoIChzcGxpdF9sYXN0X29wdCh4cykpIHtcbiAgfCBOb25lID0+IGZhaWx3aXRoKFwiZW1wdHkgbGlzdFwiKVxuICB8IFNvbWUocikgPT4gclxuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSBib3ggPSB7XG4gIGhlaWdodDogaW50LFxuICB3aWR0aDogaW50LFxufTtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0KCdhbm5vdCkgPSB7XG4gIGxheW91dDogdCcoJ2Fubm90KSxcbiAgbWV0cmljczogbGlzdChib3gpLFxufVxuYW5kIHQnKCdhbm5vdCkgPVxuICB8IExpbmVicmVha1xuICB8IFRleHQoc3RyaW5nKVxuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBDYXQodCgnYW5ub3QpLCB0KCdhbm5vdCkpXG4gIHwgQW5ub3QoJ2Fubm90LCB0KCdhbm5vdCkpO1xuXG50eXBlIHdpdGhfb2Zmc2V0KCdhbm5vdCkgPSAoaW50LCB0KCdhbm5vdCkpO1xuXG5sZXQgaGVpZ2h0ID0gKG06IHQoXykpID0+XG4gIG0ubWV0cmljcyB8PiBMaXN0Lm1hcChib3ggPT4gYm94LmhlaWdodCkgfD4gTGlzdC5mb2xkX2xlZnQoKCspLCAwKTtcblxubGV0IHdpZHRoID0gKH5vZmZzZXQ9MCwgbTogdChfKSkgPT5cbiAgTGlzdC50bChtLm1ldHJpY3MpXG4gIHw+IExpc3QubWFwKGJveCA9PiBib3gud2lkdGgpXG4gIHw+IExpc3QuZm9sZF9sZWZ0KG1heCwgb2Zmc2V0ICsgTGlzdC5oZChtLm1ldHJpY3MpLndpZHRoKTtcblxubGV0IGZvbGQgPVxuICAgIChcbiAgICAgIH5saW5lYnJlYWs6ICdhY2MsXG4gICAgICB+dGV4dDogc3RyaW5nID0+ICdhY2MsXG4gICAgICB+YWxpZ246ICdhY2MgPT4gJ2FjYyxcbiAgICAgIH5jYXQ6ICgnYWNjLCAnYWNjKSA9PiAnYWNjLFxuICAgICAgfmFubm90OlxuICAgICAgICAgLy8gYWxsb3cgY2xpZW50IHRvIGNvbnRyb2wgcmVjdXJzaW9uIGJhc2VkIG9uIGFubm90YXRpb25cbiAgICAgICAgICh0KCdhbm5vdCkgPT4gJ2FjYywgJ2Fubm90LCB0KCdhbm5vdCkpID0+ICdhY2MsXG4gICAgICBtOiB0KCdhbm5vdCksXG4gICAgKVxuICAgIDogJ2FjYyA9PiB7XG4gIGxldCByZWMgZ28gPSAobTogdChfKSkgPT5cbiAgICBzd2l0Y2ggKG0ubGF5b3V0KSB7XG4gICAgfCBMaW5lYnJlYWsgPT4gbGluZWJyZWFrXG4gICAgfCBUZXh0KHMpID0+IHRleHQocylcbiAgICB8IEFsaWduKG0pID0+IGFsaWduKGdvKG0pKVxuICAgIHwgQ2F0KG0xLCBtMikgPT5cbiAgICAgIGxldCBhY2MxID0gZ28obTEpO1xuICAgICAgbGV0IGFjYzIgPSBnbyhtMik7XG4gICAgICBjYXQoYWNjMSwgYWNjMik7XG4gICAgfCBBbm5vdChhbm4sIG0pID0+IGFubm90KGdvLCBhbm4sIG0pXG4gICAgfTtcbiAgZ28obSk7XG59O1xuXG5sZXQgbmV4dF9wb3NpdGlvbiA9XG4gICAgKH5pbmRlbnQ6IGludCwge3JvdywgY29sfTogTWVhc3VyZWRQb3NpdGlvbi50LCBtOiB0KF8pKVxuICAgIDogTWVhc3VyZWRQb3NpdGlvbi50ID0+IHtcbiAgbGV0IHVwZGF0ZWRfcm93ID0gcm93ICsgaGVpZ2h0KG0pIC0gMTtcbiAgbGV0IHVwZGF0ZWRfY29sID0ge1xuICAgIGxldCAobGVhZGluZywgbGFzdCkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KG0ubWV0cmljcyk7XG4gICAgbGFzdC53aWR0aFxuICAgICsgKFxuICAgICAgc3dpdGNoIChsZWFkaW5nKSB7XG4gICAgICB8IFtdID0+IGNvbFxuICAgICAgfCBbXywgLi4uX10gPT4gaW5kZW50XG4gICAgICB9XG4gICAgKTtcbiAgfTtcbiAge3JvdzogdXBkYXRlZF9yb3csIGNvbDogdXBkYXRlZF9jb2x9O1xufTtcblxubGV0IHBvc19mb2xkID1cbiAgICAoXG4gICAgICB+bGluZWJyZWFrOiBNZWFzdXJlZFBvc2l0aW9uLnQgPT4gJ2FjYyxcbiAgICAgIH50ZXh0OiAoTWVhc3VyZWRQb3NpdGlvbi50LCBzdHJpbmcpID0+ICdhY2MsXG4gICAgICB+YWxpZ246IChNZWFzdXJlZFBvc2l0aW9uLnQsICdhY2MpID0+ICdhY2MsXG4gICAgICB+Y2F0OiAoTWVhc3VyZWRQb3NpdGlvbi50LCAnYWNjLCAnYWNjKSA9PiAnYWNjLFxuICAgICAgfmFubm90OlxuICAgICAgICAgLy8gbGV0IGNsaWVudCBjb250cm9sIHJlY3Vyc2lvbiBiYXNlZCBvbiBhbm5vdGF0aW9uXG4gICAgICAgICAoXG4gICAgICAgICAgIH5nbzogdCgnYW5ub3QpID0+ICdhY2MsXG4gICAgICAgICAgIH5pbmRlbnQ6IGludCxcbiAgICAgICAgICAgfnN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsXG4gICAgICAgICAgICdhbm5vdCxcbiAgICAgICAgICAgdCgnYW5ub3QpXG4gICAgICAgICApID0+XG4gICAgICAgICAnYWNjLFxuICAgICAgfmluZGVudD0wLFxuICAgICAgfnN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQ9TWVhc3VyZWRQb3NpdGlvbi56ZXJvLFxuICAgICAgbTogdCgnYW5ub3QpLFxuICAgIClcbiAgICA6ICdhY2MgPT4ge1xuICBsZXQgcmVjIGdvID0gKGluZGVudDogaW50LCBzdGFydDogTWVhc3VyZWRQb3NpdGlvbi50LCBtOiB0KF8pKSA9PlxuICAgIHN3aXRjaCAobS5sYXlvdXQpIHtcbiAgICB8IExpbmVicmVhayA9PiBsaW5lYnJlYWsoc3RhcnQpXG4gICAgfCBUZXh0KHMpID0+IHRleHQoc3RhcnQsIHMpXG4gICAgfCBBbGlnbihtKSA9PiBhbGlnbihzdGFydCwgZ28oc3RhcnQuY29sLCBzdGFydCwgbSkpXG4gICAgfCBDYXQobTEsIG0yKSA9PlxuICAgICAgbGV0IG1pZCA9IG5leHRfcG9zaXRpb24ofmluZGVudCwgc3RhcnQsIG0xKTtcbiAgICAgIGNhdChzdGFydCwgZ28oaW5kZW50LCBzdGFydCwgbTEpLCBnbyhpbmRlbnQsIG1pZCwgbTIpKTtcbiAgICB8IEFubm90KGFubiwgbSkgPT4gYW5ub3QofmdvPWdvKGluZGVudCwgc3RhcnQpLCB+aW5kZW50LCB+c3RhcnQsIGFubiwgbSlcbiAgICB9O1xuICBnbyhpbmRlbnQsIHN0YXJ0LCBtKTtcbn07XG5cbm1vZHVsZSBNYWtlID0gKE1lbW9UYmw6IE1lbW9UYmwuUykgPT4ge1xuICBsZXQgdGFibGU6IE1lbW9UYmwudChMYXlvdXQudCh1bml0KSwgdCh1bml0KSkgPSBNZW1vVGJsLm1rKCk7XG4gIGxldCByZWMgbWsgPSAobDogTGF5b3V0LnQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgc3dpdGNoIChNZW1vVGJsLmdldCh0YWJsZSwgT2JqLm1hZ2ljKGwpKSkge1xuICAgIHwgU29tZShtKSA9PiBPYmoubWFnaWMobSlcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCBtID1cbiAgICAgICAgc3dpdGNoIChsKSB7XG4gICAgICAgIHwgTGluZWJyZWFrID0+XG4gICAgICAgICAgbGV0IGJveCA9IHtoZWlnaHQ6IDEsIHdpZHRoOiAwfTtcbiAgICAgICAgICB7bWV0cmljczogW2JveCwgYm94XSwgbGF5b3V0OiBMaW5lYnJlYWt9O1xuICAgICAgICB8IFRleHQocykgPT4ge1xuICAgICAgICAgICAgbWV0cmljczogW3toZWlnaHQ6IDEsIHdpZHRoOiBVbmljb2RlLmxlbmd0aChzKX1dLFxuICAgICAgICAgICAgbGF5b3V0OiBUZXh0KHMpLFxuICAgICAgICAgIH1cbiAgICAgICAgfCBBbGlnbihsKSA9PlxuICAgICAgICAgIGxldCBtID0gbWsobCk7XG4gICAgICAgICAgbGV0IGJvdW5kaW5nX2JveCA9XG4gICAgICAgICAgICBtLm1ldHJpY3NcbiAgICAgICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgICAgICAoe2hlaWdodDogYmgsIHdpZHRoOiBid30sIHtoZWlnaHQsIHdpZHRofSkgPT5cbiAgICAgICAgICAgICAgICAgICB7aGVpZ2h0OiBiaCArIGhlaWdodCwgd2lkdGg6IG1heChidywgd2lkdGgpfSxcbiAgICAgICAgICAgICAgICAge2hlaWdodDogMCwgd2lkdGg6IDB9LFxuICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB7bWV0cmljczogW2JvdW5kaW5nX2JveF0sIGxheW91dDogQWxpZ24obSl9O1xuICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgbGV0IG0xID0gbWsobDEpO1xuICAgICAgICAgIGxldCBtMiA9IG1rKGwyKTtcbiAgICAgICAgICBsZXQgKGxlYWRpbmcsIGxhc3QpID0gTGlzdFV0aWwuc3BsaXRfbGFzdChtMS5tZXRyaWNzKTtcbiAgICAgICAgICBsZXQgKGZpcnN0LCB0cmFpbGluZykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdChtMi5tZXRyaWNzKTtcbiAgICAgICAgICBsZXQgbWlkX2JveCA9IHtcbiAgICAgICAgICAgIGhlaWdodDogbWF4KGxhc3QuaGVpZ2h0LCBmaXJzdC5oZWlnaHQpLFxuICAgICAgICAgICAgd2lkdGg6IGxhc3Qud2lkdGggKyBmaXJzdC53aWR0aCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHttZXRyaWNzOiBsZWFkaW5nIEAgW21pZF9ib3gsIC4uLnRyYWlsaW5nXSwgbGF5b3V0OiBDYXQobTEsIG0yKX07XG4gICAgICAgIHwgQW5ub3QoYW5ub3QsIGwpID0+XG4gICAgICAgICAgbGV0IG0gPSBtayhsKTtcbiAgICAgICAgICB7Li4ubSwgbGF5b3V0OiBBbm5vdChhbm5vdCwgbSl9O1xuICAgICAgICB9O1xuICAgICAgTWVtb1RibC5zZXQodGFibGUsIE9iai5tYWdpYyhsKSwgT2JqLm1hZ2ljKG0pKTtcbiAgICAgIG07XG4gICAgfTtcbiAgfTtcbn07XG4iLCJ0eXBlIHQgPSB7XG4gIC8vIFN1bSBvZiB0aGUgc3F1YXJlIG9mIGhvdyBtdWNoIGVhY2ggbGluZSBleHRlbmRzIGJleW9uZCBtYXggd2lkdGguICBVc3VhbGx5IHplcm8uXG4gIG92ZXJmbG93X2Nvc3Q6IGludCxcbiAgLy8gSGVpZ2h0IG1pbnVzIG9uZS4gIEEuay5hLiBudW1iZXIgb2YgbGluZSBicmVha3MuXG4gIGhlaWdodF9jb3N0OiBpbnQsXG59O1xuXG5sZXQgbWsgPSAofm92ZXJmbG93X2Nvc3Q6IGludCwgfmhlaWdodF9jb3N0OiBpbnQpOiB0ID0+IHtcbiAgb3ZlcmZsb3dfY29zdCxcbiAgaGVpZ2h0X2Nvc3QsXG59O1xuXG5sZXQgbWtfaGVpZ2h0ID0gKGhlaWdodF9jb3N0OiBpbnQpOiB0ID0+IG1rKH5vdmVyZmxvd19jb3N0PTAsIH5oZWlnaHRfY29zdCk7XG5cbmxldCBta19vdmVyZmxvdyA9IChvdmVyZmxvd19jb3N0OiBpbnQpOiB0ID0+XG4gIG1rKH5vdmVyZmxvd19jb3N0LCB+aGVpZ2h0X2Nvc3Q9MCk7XG5cbmxldCB6ZXJvOiB0ID0ge292ZXJmbG93X2Nvc3Q6IDAsIGhlaWdodF9jb3N0OiAwfTtcblxubGV0IGluZjogdCA9IHtvdmVyZmxvd19jb3N0OiBtYXhfaW50LCBoZWlnaHRfY29zdDogbWF4X2ludH07XG5cbmxldCBhZGQgPSAoYzE6IHQsIGMyOiB0KTogdCA9PiB7XG4gIG92ZXJmbG93X2Nvc3Q6IGMxLm92ZXJmbG93X2Nvc3QgKyBjMi5vdmVyZmxvd19jb3N0LFxuICBoZWlnaHRfY29zdDogYzEuaGVpZ2h0X2Nvc3QgKyBjMi5oZWlnaHRfY29zdCxcbn07XG5cbmxldCBlcSA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGMxLm92ZXJmbG93X2Nvc3QgPT09IGMyLm92ZXJmbG93X2Nvc3QgJiYgYzEuaGVpZ2h0X2Nvc3QgPT09IGMyLmhlaWdodF9jb3N0O1xuXG5sZXQgbHQgPSAoYzE6IHQsIGMyOiB0KTogYm9vbCA9PlxuICBpZiAoYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCkge1xuICAgIGMxLmhlaWdodF9jb3N0IDwgYzIuaGVpZ2h0X2Nvc3Q7XG4gIH0gZWxzZSB7XG4gICAgYzEub3ZlcmZsb3dfY29zdCA8IGMyLm92ZXJmbG93X2Nvc3Q7XG4gIH07XG5cbmxldCBsZXEgPSAoYzE6IHQsIGMyOiB0KTogYm9vbCA9PlxuICBpZiAoYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCkge1xuICAgIGMxLmhlaWdodF9jb3N0IDw9IGMyLmhlaWdodF9jb3N0O1xuICB9IGVsc2Uge1xuICAgIGMxLm92ZXJmbG93X2Nvc3QgPD0gYzIub3ZlcmZsb3dfY29zdDtcbiAgfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbm1vZHVsZSBXaWR0aFBvc0tleSA9IHtcbiAgdHlwZSB0ID0gKGludCwgaW50KTtcbiAgbGV0IGhhc2ggPSAoKHdpZHRoLCBwb3MpKSA9PiAyNTYgKiAyNTYgKiB3aWR0aCArIHBvcztcbiAgbGV0IGVxdWFsID0gKCh3MSwgcDEpLCAodzIsIHAyKSkgPT4gdzEgPT0gdzIgJiYgcDEgPT0gcDI7XG59O1xuXG5tb2R1bGUgTSA9IEhhc2h0YmwuTWFrZShXaWR0aFBvc0tleSk7XG5cbi8vIE5PVEU6IHBvcyBpcyByZWxhdGl2ZSB0byBtb3N0IHJlY2VudCBgQWxpZ25gXG50eXBlIG0nKCdhKSA9IFBvc01hcC50KChDb3N0LnQsICdhKSk7XG50eXBlIG0oJ2EpID0gKH53aWR0aDogaW50LCB+cG9zOiBpbnQpID0+IG0nKCdhKTtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0KCdhbm5vdCkgPSB7XG4gIG1lbTogW0BzZXhwLm9wYXF1ZV0gTS50KG0nKExheW91dC50KCdhbm5vdCkpKSxcbiAgZG9jOiB0JygnYW5ub3QpLFxufVxuW0BkZXJpdmluZyBzZXhwXVxuYW5kIHQnKCdhbm5vdCkgPVxuICB8IFRleHQoc3RyaW5nKSAvLyBUZXh0KFwiXCIpIGlzIGlkZW50aXR5IGZvciBgQ2F0YFxuICB8IENhdCh0KCdhbm5vdCksIHQoJ2Fubm90KSkgLy8gYXNzb2NpYXRpdmVcbiAgfCBMaW5lYnJlYWtcbiAgfCBBbGlnbih0KCdhbm5vdCkpXG4gIHwgQW5ub3QoJ2Fubm90LCB0KCdhbm5vdCkpIC8vIEFubm90YXRpb25zXG4gIHwgRmFpbCAvLyBpZGVudGl0eSBmb3IgYENob2ljZWBcbiAgfCBDaG9pY2UodCgnYW5ub3QpLCB0KCdhbm5vdCkpO1xuXG5sZXQgdF9vZl90JyA9ICh0JzogdCcoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7bWVtOiBNLmNyZWF0ZSgwKSwgZG9jOiB0J307XG5cbmxldCB0ZXh0ID0gKHM6IHN0cmluZykgPT4gdF9vZl90JyhUZXh0KHMpKTtcbmxldCBsaW5lYnJlYWsgPSAoKSA9PiB0X29mX3QnKExpbmVicmVhayk7XG5sZXQgYWxpZ24gPSBkb2MgPT4gdF9vZl90JyhBbGlnbihkb2MpKTtcbmxldCBhbm5vdCA9IChhbm5vdCwgZG9jKSA9PiB0X29mX3QnKEFubm90KGFubm90LCBkb2MpKTtcbmxldCBmYWlsID0gKCkgPT4gdF9vZl90JyhGYWlsKTtcblxubGV0IGVtcHR5ID0gKCkgPT4gdGV4dChcIlwiKTtcbmxldCBzcGFjZSA9ICgpID0+IHRleHQoVW5pY29kZS5uYnNwKTsgLy8gVE9ETzogcGFyYW0gdG8gaHNlcFxuXG5sZXQgaW5kZW50ID0gKCkgPT4gdGV4dChVbmljb2RlLm5ic3AgKysgVW5pY29kZS5uYnNwKTtcbmxldCBpbmRlbnRfYW5kX2FsaWduID0gZG9jID0+IHRfb2ZfdCcoQ2F0KGluZGVudCgpLCBhbGlnbihkb2MpKSk7XG5cbmxldCBoY2F0ID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2F0KHgsIHkpKTtcbmxldCBoY2F0czogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGVtcHR5KClcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdChoY2F0LCBkb2MsIGRvY3MpO1xuXG5sZXQgaHNlcCA9ICh4LCB5KSA9PiB0X29mX3QnKENhdCh4LCB0X29mX3QnKENhdChzcGFjZSgpLCB5KSkpKTtcbmxldCBoc2VwczogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGVtcHR5KClcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdChoc2VwLCBkb2MsIGRvY3MpO1xuXG5sZXQgdnNlcCA9ICh4LCB5KSA9PiB0X29mX3QnKENhdCh4LCB0X29mX3QnKENhdChsaW5lYnJlYWsoKSwgeSkpKSk7XG5sZXQgdnNlcHM6IGxpc3QodCgnYW5ub3QpKSA9PiB0KCdhbm5vdCkgPVxuICBmdW5cbiAgfCBbXSA9PiBmYWlsd2l0aChfX0xPQ19fICsrIFwiOiB2c2VwcyByZXF1aXJlcyBhIG5vbi1lbXB0eSBsaXN0XCIpXG4gIHwgW2RvY10gPT4gZG9jXG4gIHwgW2RvYywgLi4uZG9jc10gPT4gTGlzdC5mb2xkX2xlZnQodnNlcCwgZG9jLCBkb2NzKTtcblxubGV0IGNob2ljZSA9ICh4LCB5KSA9PiB0X29mX3QnKENob2ljZSh4LCB5KSk7XG5sZXQgY2hvaWNlczogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGZhaWwoKVxuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KGNob2ljZSwgZG9jLCBkb2NzKTtcblxubGV0IG1hcF90JzogJ2EgJ2IuICh0JygnYSkgPT4gdCcoJ2IpLCB0KCdhKSkgPT4gdCgnYikgPVxuICAoZiwgZCkgPT4gdF9vZl90JyhmKGQuZG9jKSk7XG5cbmxldCByZWMgbWFwX2Fubm90OiAnYSAnYi4gKCdhID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICAoZiwgZCkgPT5cbiAgICBkXG4gICAgfD4gbWFwX3QnKFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IChUZXh0KF8pIHwgTGluZWJyZWFrIHwgRmFpbCkgYXMgZCcgPT4gZCdcbiAgICAgICAgIHwgQW5ub3QoYW5ub3QsIGQpID0+IEFubm90KGYoYW5ub3QpLCBtYXBfYW5ub3QoZiwgZCkpXG4gICAgICAgICB8IEFsaWduKGQpID0+IEFsaWduKG1hcF9hbm5vdChmLCBkKSlcbiAgICAgICAgIHwgQ2F0KGQxLCBkMikgPT4gQ2F0KG1hcF9hbm5vdChmLCBkMSksIG1hcF9hbm5vdChmLCBkMikpXG4gICAgICAgICB8IENob2ljZShkMSwgZDIpID0+IENob2ljZShtYXBfYW5ub3QoZiwgZDEpLCBtYXBfYW5ub3QoZiwgZDIpKSxcbiAgICAgICApO1xuIiwiLy8gVE9ETzogY29tcHV0ZSBhY3R1YWwgbGF5b3V0IHNpemUgYW5kIHVzZSBpbnN0ZWFkIG9mIHRfb2ZfbGF5b3V0XG5sZXQgcmVjIGFsbDogJ2Fubm90LiBEb2MudCgnYW5ub3QpID0+IGxpc3QoTGF5b3V0LnQoJ2Fubm90KSkgPSB7XG4gIGRvYyA9PiB7XG4gICAgc3dpdGNoIChkb2MuZG9jKSB7XG4gICAgfCBUZXh0KHN0cmluZykgPT4gW0xheW91dC5UZXh0KHN0cmluZyldXG4gICAgfCBDYXQoZDEsIGQyKSA9PlxuICAgICAgbGV0IGxzMSA9IGFsbChkMSk7XG4gICAgICBsZXQgbHMyID0gYWxsKGQyKTtcbiAgICAgIExpc3QuY29uY2F0KFxuICAgICAgICBMaXN0Lm1hcChsMSA9PiBMaXN0Lm1hcChsMiA9PiBMYXlvdXQuQ2F0KGwxLCBsMiksIGxzMiksIGxzMSksXG4gICAgICApO1xuICAgIHwgTGluZWJyZWFrID0+IFtMYXlvdXQuTGluZWJyZWFrXVxuICAgIHwgQWxpZ24oZCkgPT4gTGlzdC5tYXAobCA9PiBMYXlvdXQuQWxpZ24obCksIGFsbChkKSlcbiAgICB8IEFubm90KGFubm90LCBkKSA9PiBMaXN0Lm1hcChsID0+IExheW91dC5Bbm5vdChhbm5vdCwgbCksIGFsbChkKSlcbiAgICB8IEZhaWwgPT4gW11cbiAgICB8IENob2ljZShkMSwgZDIpID0+IGFsbChkMSkgQCBhbGwoZDIpXG4gICAgfTtcbiAgfTtcbn07XG5cbi8vIE5vdGU6IFRoaXMgdW5pb24gaXMgbGVmdCBiaWFzZWRcbmxldCBtJ191bmlvbjogJ2EuIChEb2MubScoJ2EpLCBEb2MubScoJ2EpKSA9PiBEb2MubScoJ2EpID1cbiAgKHAxLCBwMikgPT4ge1xuICAgIGxldCBjb3N0X3VuaW9uID0gKChjb3N0MTogQ29zdC50LCBfKSBhcyB0MSwgKGNvc3QyOiBDb3N0LnQsIF8pIGFzIHQyKSA9PlxuICAgICAgaWYgKENvc3QubGVxKGNvc3QxLCBjb3N0MikpIHtcbiAgICAgICAgdDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0MjtcbiAgICAgIH07XG4gICAgUG9zTWFwLnVuaW9uKGNvc3RfdW5pb24sIHAxLCBwMik7XG4gIH07XG5cbmxldCByZWMgbGF5b3V0X29mX2RvYycgPSAoZG9jOiBEb2MudCh1bml0KSk6IERvYy5tKExheW91dC50KHVuaXQpKSA9PiB7XG4gIGxldCBnID0gKH53aWR0aDogaW50LCB+cG9zOiBpbnQpOiBEb2MubScoTGF5b3V0LnQodW5pdCkpID0+IHtcbiAgICAvLyBUT0RPOiBsaWZ0IHRoZSBzd2l0Y2goZG9jLmRvYykgb3V0c2lkZSB0aGUgbGFtYmRhXG4gICAgc3dpdGNoIChkb2MuZG9jKSB7XG4gICAgfCBUZXh0KHN0cmluZykgPT5cbiAgICAgIC8vIFRPRE86IGNhY2hlIHRleHQgbGVuZ3RoIGluIFRleHQ/XG4gICAgICBsZXQgcG9zJyA9IHBvcyArIFN0cmluZy5sZW5ndGgoc3RyaW5nKTsgLy9Vbmljb2RlLmxlbmd0aChzdHJpbmcpO1xuICAgICAgbGV0IGNvc3QgPVxuICAgICAgICBpZiAocG9zJyA8PSB3aWR0aCkge1xuICAgICAgICAgIENvc3QuemVybztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgb3ZlcmZsb3cgPSBwb3MnIC0gd2lkdGg7XG4gICAgICAgICAgLy8gb3ZlcmZsb3dfY29zdCA9IHN1bSBpIGZyb20gMSB0byBvdmVyZmxvd1xuICAgICAgICAgIGxldCBvdmVyZmxvd19jb3N0ID0gb3ZlcmZsb3cgKiAob3ZlcmZsb3cgKyAxKSAvIDI7XG4gICAgICAgICAgQ29zdC5ta19vdmVyZmxvdyhvdmVyZmxvd19jb3N0KTtcbiAgICAgICAgfTtcbiAgICAgIFBvc01hcC5zaW5nbGV0b24ocG9zJywgKGNvc3QsIExheW91dC5UZXh0KHN0cmluZykpKTtcbiAgICB8IENhdChkMSwgZDIpID0+XG4gICAgICBsZXQgbDEgPSBsYXlvdXRfb2ZfZG9jJyhkMSwgfndpZHRoLCB+cG9zKTtcbiAgICAgIFBvc01hcC5mb2xkX2xlZnQoXG4gICAgICAgIChwb3MsIHosIChjb3N0MSwgbGF5b3V0MSkpID0+IHtcbiAgICAgICAgICBsZXQgbDIgPSBsYXlvdXRfb2ZfZG9jJyhkMiwgfndpZHRoLCB+cG9zKTtcbiAgICAgICAgICBsZXQgbGF5b3V0cyA9XG4gICAgICAgICAgICBQb3NNYXAubWFwKFxuICAgICAgICAgICAgICAoKGNvc3QyLCBsYXlvdXQyKSkgPT5cbiAgICAgICAgICAgICAgICAoQ29zdC5hZGQoY29zdDEsIGNvc3QyKSwgTGF5b3V0LkNhdChsYXlvdXQxLCBsYXlvdXQyKSksXG4gICAgICAgICAgICAgIGwyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBtJ191bmlvbih6LCBsYXlvdXRzKTtcbiAgICAgICAgfSxcbiAgICAgICAgUG9zTWFwLmVtcHR5LFxuICAgICAgICBsMSxcbiAgICAgICk7XG4gICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgIFBvc01hcC5zaW5nbGV0b24oMCwgKENvc3QubWtfaGVpZ2h0KDEpLCBMYXlvdXQuTGluZWJyZWFrKSlcbiAgICB8IEFsaWduKGQpID0+XG4gICAgICBsZXQgbGF5b3V0ID0gbGF5b3V0X29mX2RvYycoZCwgfndpZHRoPXdpZHRoIC0gcG9zLCB+cG9zPTApO1xuICAgICAgUG9zTWFwLm1hcGsoXG4gICAgICAgIChwLCAoYywgbCkpID0+IChwICsgcG9zLCAoYywgTGF5b3V0LkFsaWduKGwpKSksXG4gICAgICAgIGxheW91dCxcbiAgICAgICk7XG4gICAgfCBBbm5vdChhbm5vdCwgZCkgPT5cbiAgICAgIGxldCBsYXlvdXQgPSBsYXlvdXRfb2ZfZG9jJyhkLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgUG9zTWFwLm1hcCgoKGMsIGwpKSA9PiAoYywgTGF5b3V0LkFubm90KGFubm90LCBsKSksIGxheW91dCk7XG4gICAgfCBGYWlsID0+IFBvc01hcC5lbXB0eVxuICAgIHwgQ2hvaWNlKGQxLCBkMikgPT5cbiAgICAgIGxldCBsMSA9IGxheW91dF9vZl9kb2MnKGQxLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgbGV0IGwyID0gbGF5b3V0X29mX2RvYycoZDIsIH53aWR0aCwgfnBvcyk7XG4gICAgICBtJ191bmlvbihsMSwgbDIpO1xuICAgIH07XG4gIH07XG4gIGxldCBoID0gKH53aWR0aDogaW50LCB+cG9zOiBpbnQpOiBEb2MubScoTGF5b3V0LnQodW5pdCkpID0+IHtcbiAgICBsZXQga2V5ID0gKHdpZHRoLCBwb3MpO1xuICAgIHN3aXRjaCAoRG9jLk0uZmluZF9vcHQoZG9jLm1lbSwga2V5KSkge1xuICAgIHwgU29tZSh2YWx1ZSkgPT4gdmFsdWVcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCB2YWx1ZSA9IGcofndpZHRoLCB+cG9zKTtcbiAgICAgIERvYy5NLmFkZChkb2MubWVtLCBrZXksIHZhbHVlKTtcbiAgICAgIHZhbHVlO1xuICAgIH07XG4gIH07XG4gIGg7XG59O1xuXG5sZXQgbGF5b3V0X29mX2RvYyA9XG4gICAgKGRvYzogRG9jLnQoJ2Fubm90KSwgfndpZHRoOiBpbnQsIH5wb3M6IGludCk6IG9wdGlvbihMYXlvdXQudCgnYW5ub3QpKSA9PiB7XG4gIGxldCByZWMgbWluaW11bSA9XG4gICAgICAgICAgKChwb3MsIChjb3N0LCB0KSk6IChpbnQsIChDb3N0LnQsIG9wdGlvbignYSkpKSlcbiAgICAgICAgICA6IChsaXN0KChpbnQsIChDb3N0LnQsICdhKSkpID0+IG9wdGlvbignYSkpID0+IHtcbiAgICBmdW5cbiAgICB8IFtdID0+IHRcbiAgICB8IFsoeF9wb3MsICh4X2Nvc3QsIHgpKSwgLi4ucmVzdF0gPT5cbiAgICAgIC8vIFByZWZlciBsb3dlc3QgY29zdCwgb3IgaWYgc2FtZSBjb3N0LCBwcmVmZXIgZW5kaW5nIGF0IGFuIGVhcmxpZXIgY29sdW1uXG4gICAgICAvLyAoQ29sdW1ucyBhcmUgdW5pcXVlIGJ5IGNvbnN0cnVjdGlvbiBvZiBQb3NNYXAuKVxuICAgICAgaWYgKENvc3QubHQoeF9jb3N0LCBjb3N0KSB8fCBDb3N0LmVxKHhfY29zdCwgY29zdCkgJiYgeF9wb3MgPCBwb3MpIHtcbiAgICAgICAgbWluaW11bSgoeF9wb3MsICh4X2Nvc3QsIFNvbWUoeCkpKSwgcmVzdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtaW5pbXVtKChwb3MsIChjb3N0LCB0KSksIHJlc3QpO1xuICAgICAgfTtcbiAgfTtcbiAgLy8gVE9ETzogdXNlIG9wdGlvbnMgaW5zdGVhZCBvZiBtYXhfaW50XG4gIC8vIGxldCBzdGFydF90aW1lID0gU3lzLnRpbWUoKTtcbiAgbGV0IGwgPVxuICAgIG1pbmltdW0oXG4gICAgICAobWF4X2ludCwgKENvc3QuaW5mLCBOb25lKSksXG4gICAgICBPYmoubWFnaWMobGF5b3V0X29mX2RvYycoT2JqLm1hZ2ljKGRvYyksIH53aWR0aCwgfnBvcykpLFxuICAgICk7XG4gIC8vIGxldCBlbmRfdGltZSA9IFN5cy50aW1lKCk7XG4gIC8qXG4gICBQcmludGYucHJpbnRmKFxuICAgICBcImxheW91dF9vZl9kb2M6ICVkIFxcdCVmXFxuXCIsXG4gICAgIC0xLCAvL2ZzdChMYXp5LmZvcmNlKG1lbW9fdGFibGUpKSMjLnNpemUsXG4gICAgIC8vTWVtb2l6ZS5XZWFrUG9seS5UYWJsZS5sZW5ndGgoZnN0KExhenkuZm9yY2UobWVtb190YWJsZSkpKSxcbiAgICAgMTAwMC4wICouIChlbmRfdGltZSAtLiBzdGFydF90aW1lKSxcbiAgICk7XG4gICAqL1xuICBsO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCgnYW5ub3QpID1cbiAgfCBUZXh0KHN0cmluZylcbiAgfCBIQm94KGxpc3QodCgnYW5ub3QpKSlcbiAgfCBWQm94KGxpc3QodCgnYW5ub3QpKSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7XG5cbm1vZHVsZSBNYWtlID0gKE1lbW9UYmw6IE1lbW9UYmwuUykgPT4ge1xuICBsZXQgaGVpZ2h0X3RibDogTWVtb1RibC50KHQodW5pdCksIGludCkgPSBNZW1vVGJsLm1rKCk7XG4gIGxldCByZWMgaGVpZ2h0ID0gKGJveDogdCgnYW5ub3QpKSA9PlxuICAgIHN3aXRjaCAoTWVtb1RibC5nZXQoaGVpZ2h0X3RibCwgT2JqLm1hZ2ljKGJveCkpKSB7XG4gICAgfCBTb21lKGgpID0+IGhcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCBoID1cbiAgICAgICAgc3dpdGNoIChib3gpIHtcbiAgICAgICAgfCBUZXh0KF8pID0+IDFcbiAgICAgICAgfCBBbm5vdChfLCBiKSA9PiBoZWlnaHQoYilcbiAgICAgICAgfCBIQm94KGJzKSA9PiBicyB8PiBMaXN0Lm1hcChoZWlnaHQpIHw+IExpc3QuZm9sZF9sZWZ0KG1heCwgMSkgLy8gTm90ZTogMSBpcyBIQm94KFtdKSBoZWlnaHRcbiAgICAgICAgfCBWQm94KGJzKSA9PiBicyB8PiBMaXN0Lm1hcChoZWlnaHQpIHw+IExpc3QuZm9sZF9sZWZ0KCgrKSwgMClcbiAgICAgICAgfTtcbiAgICAgIE1lbW9UYmwuc2V0KGhlaWdodF90YmwsIE9iai5tYWdpYyhib3gpLCBoKTtcbiAgICAgIGg7XG4gICAgfTtcblxuICAvLyBOb3RlOiBhbm5vdHMgYXJlIGluc2lkZS1vdXQgKGkuZS4gTGlzdC5oZChhbm5vdHMpIGlzIHRoZSBpbm5lci1tb3N0IGFubm90KVxuICBsZXQgcmVjIGFubm90ID0gKGFubm90czogbGlzdCgnYW5ub3QpLCBib3g6IHQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgc3dpdGNoIChhbm5vdHMpIHtcbiAgICB8IFtdID0+IGJveFxuICAgIHwgW2FubiwgLi4uYW5uc10gPT4gYW5ub3QoYW5ucywgQW5ub3QoYW5uLCBib3gpKVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyBhcHBlbmRfYm94ID1cbiAgICAgICAgICAofmFubm90czogbGlzdCgnYW5ub3QpPVtdLCBib3gxOiB0KCdhbm5vdCksIGJveDI6IHQoJ2Fubm90KSlcbiAgICAgICAgICA6IHQoJ2Fubm90KSA9PlxuICAgIGlmIChoZWlnaHQoYm94MSkgPD0gMSkge1xuICAgICAgSEJveChbYW5ub3QoYW5ub3RzLCBib3gxKSwgYm94Ml0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVjIGFwcGVuZF9sYXN0ID0gKGJzMTogbGlzdCh0KCdhbm5vdCkpKTogbGlzdCh0KCdhbm5vdCkpID0+IHtcbiAgICAgICAgc3dpdGNoIChiczEpIHtcbiAgICAgICAgfCBbXSA9PiBmYWlsd2l0aChcImltcG9zc2libGUgZHVlIHRvIGBib3hfaGVpZ2h0YCBndWFyZFwiKVxuICAgICAgICB8IFtiMV0gPT4gW2FwcGVuZF9ib3gofmFubm90cywgYjEsIGJveDIpXVxuICAgICAgICB8IFtiMSwgLi4uYnMxXSA9PiBbYW5ub3QoYW5ub3RzLCBiMSksIC4uLmFwcGVuZF9sYXN0KGJzMSldXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgc3dpdGNoIChib3gxKSB7XG4gICAgICB8IFRleHQoXykgPT4gZmFpbHdpdGgoXCJpbXBvc3NpYmxlIGR1ZSB0byBgYm94X2hlaWdodGAgZ3VhcmRcIilcbiAgICAgIHwgSEJveChiczEpID0+IEhCb3goYXBwZW5kX2xhc3QoYnMxKSlcbiAgICAgIHwgVkJveChiczEpID0+IFZCb3goYXBwZW5kX2xhc3QoYnMxKSlcbiAgICAgIHwgQW5ub3QoYW5ub3QsIGIpID0+IGFwcGVuZF9ib3gofmFubm90cz1bYW5ub3QsIC4uLmFubm90c10sIGIsIGJveDIpXG4gICAgICB9O1xuICAgIH07XG5cbiAgbGV0IGFwcGVuZF9oYm94ID0gKGJveGVzMTogbGlzdCh0KCdhbm5vdCkpLCBib3hlczI6IGxpc3QodCgnYW5ub3QpKSkgPT4ge1xuICAgIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQoYm94ZXMxKSkge1xuICAgIHwgTm9uZSA9PiBib3hlczJcbiAgICB8IFNvbWUoKGxlYWRpbmcsIGxhc3QpKSA9PiBsZWFkaW5nIEAgW2FwcGVuZF9ib3gobGFzdCwgSEJveChib3hlczIpKV1cbiAgICB9O1xuICB9O1xuXG4gIGxldCB0YWJsZTogTWVtb1RibC50KExheW91dC50KHVuaXQpLCB0KHVuaXQpKSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IG1rID0gKGw6IExheW91dC50KCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge1xuICAgIGxldCBtayA9IChib3hlczogbGlzdChsaXN0KHQoXykpKSkgPT5cbiAgICAgIFZCb3goTGlzdC5tYXAocm93ID0+IEhCb3gocm93KSwgYm94ZXMpKTtcbiAgICBsZXQgcmVjIGdvID0gKGw6IExheW91dC50KF8pKSA9PiB7XG4gICAgICBzd2l0Y2ggKE1lbW9UYmwuZ2V0KHRhYmxlLCBPYmoubWFnaWMobCkpKSB7XG4gICAgICB8IFNvbWUoYm94KSA9PiBPYmoubWFnaWMoYm94KVxuICAgICAgfCBOb25lID0+XG4gICAgICAgIGxldCBib3ggPVxuICAgICAgICAgIHN3aXRjaCAobCkge1xuICAgICAgICAgIHwgTGluZWJyZWFrID0+IFtbXSwgW11dXG4gICAgICAgICAgfCBUZXh0KHMpID0+IFtbVGV4dChzKV1dXG4gICAgICAgICAgfCBBbGlnbihsKSA9PiBbW21rKGdvKGwpKV1dXG4gICAgICAgICAgfCBBbm5vdChhbm4sIGwpID0+XG4gICAgICAgICAgICBnbyhsKSB8PiBMaXN0Lm1hcChyb3cgPT4gW0Fubm90KGFubiwgSEJveChyb3cpKV0pXG4gICAgICAgICAgfCBDYXQobDEsIGwyKSA9PlxuICAgICAgICAgICAgbGV0IChsZWFkaW5nLCBsYXN0KSA9IExpc3RVdGlsLnNwbGl0X2xhc3QoZ28obDEpKTtcbiAgICAgICAgICAgIGxldCAoZmlyc3QsIHRyYWlsaW5nKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGdvKGwyKSk7XG4gICAgICAgICAgICBsZWFkaW5nIEAgW2FwcGVuZF9oYm94KGxhc3QsIGZpcnN0KSwgLi4udHJhaWxpbmddO1xuICAgICAgICAgIH07XG4gICAgICAgIE1lbW9UYmwuc2V0KHRhYmxlLCBPYmoubWFnaWMobCksIE9iai5tYWdpYyhib3gpKTtcbiAgICAgICAgYm94O1xuICAgICAgfTtcbiAgICB9O1xuICAgIG1rKGdvKGwpKTtcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYuUHJpbWl0aXZlcztcblxuLypcbiAgVGhlc2UgYXJlIHRoZSBzeW50YXggdGVzdCBmdW5jdGlvbnMgdXNlZCBmb3IgdGhlIHN5bnRheCB2YWxpZGF0aW9uXG4gIHNlY3Rpb24gb2YgdGhlIGV4ZXJjaXNlcy4gVGhlIHN5bnRheCB0ZXN0cyBhcmUgZGVzaWduZWQgdG9cbiAgZW5zdXJlIHRoYXQgdGhlIHVzZXIgaW1wbGVtZW50YXRpb24gc2F0aXNmaWVzIGNlcnRhaW4gc3ludGF4IHByb3BlcnRpZXNcbiAgZS5nLiB0YWlsIHJlY3Vyc2l2ZSBmdW5jdGlvbiBvciB2YXJpYWJsZSB1c2FnZS5cbiAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN5bnRheF9yZXN1bHQgPSB7XG4gIHJlc3VsdHM6IGxpc3QoYm9vbCksXG4gIHBlcmNlbnRhZ2U6IGZsb2F0LFxufTtcblxubGV0IHJlYyBmaW5kX3Zhcl91cGF0ID0gKG5hbWU6IHN0cmluZywgdXBhdDogVGVybS5VUGF0LnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1cGF0LnRlcm0pIHtcbiAgfCBWYXIoeCkgPT4geCA9PSBuYW1lXG4gIHwgRW1wdHlIb2xlXG4gIHwgV2lsZFxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBCb29sKF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gZmFsc2VcbiAgfCBDb25zKHVwMSwgdXAyKSA9PiBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMSkgfHwgZmluZF92YXJfdXBhdChuYW1lLCB1cDIpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdXApID0+IHthY2MgfHwgZmluZF92YXJfdXBhdChuYW1lLCB1cCl9LCBmYWxzZSwgbClcbiAgfCBQYXJlbnModXApID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXApXG4gIHwgQXAodXAxLCB1cDIpID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAxKSB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMilcbiAgfCBUeXBlQW5uKHVwLCBfKSA9PiBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwKVxuICB9O1xufTtcblxuLypcbiAgSGVscGVyIGZ1bmN0aW9uIHVzZWQgaW4gdGhlIGZ1bmN0aW9uIGZpbmRfZm4gd2hpY2ggdGFrZXMgdGhlXG4gIHBhdHRlcm4gKHVwYXQpIGFuZCB0aGUgZGVmaW5pdGlvbiAoZGVmKSBvZiBhIGxldCBleHByZXNzaW9uIGFuZFxuICBjb2xsZWN0cyBmdW5jdGlvbnMgaW4gZGVmIHRoYXQgYXJlIGJvdW5kIHRvIHZhcmlhYmxlIG5hbWUgaW5cbiAgdXBhdC4gRXhhbXBsZTogZm9yIHRoZSBleHByZXNzaW9uIFwibGV0IChhLGIpID0gKGZ1biB4IC0+IHgrMSwgNDEpIGluXCJcbiAgaWYgbmFtZT1cImFcIiwgdGhlbiBsPVtmdW4geCAtPiB4KzFdXG4gKi9cbmxldCByZWMgZmluZF9pbl9sZXQgPVxuICAgICAgICAoXG4gICAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICAgIHVwYXQ6IFRlcm0uVVBhdC50LFxuICAgICAgICAgIGRlZjogVGVybS5VRXhwLnQsXG4gICAgICAgICAgbDogbGlzdChUZXJtLlVFeHAudCksXG4gICAgICAgIClcbiAgICAgICAgOiBsaXN0KFRlcm0uVUV4cC50KSA9PiB7XG4gIHN3aXRjaCAodXBhdC50ZXJtLCBkZWYudGVybSkge1xuICB8IChQYXJlbnModXApLCBQYXJlbnModWUpKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cCwgdWUsIGwpXG4gIHwgKFBhcmVucyh1cCksIF8pID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCBkZWYsIGwpXG4gIHwgKF8sIFBhcmVucyh1ZSkpID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwYXQsIHVlLCBsKVxuICB8IChUeXBlQW5uKHVwLCBfKSwgXykgPT4gZmluZF9pbl9sZXQobmFtZSwgdXAsIGRlZiwgbClcbiAgfCAoVmFyKHgpLCBGdW4oXykpID0+IHggPT0gbmFtZSA/IFtkZWYsIC4uLmxdIDogbFxuICB8IChUdXBsZShwbCksIFR1cGxlKHVsKSkgPT5cbiAgICBpZiAoTGlzdC5sZW5ndGgocGwpICE9IExpc3QubGVuZ3RoKHVsKSkge1xuICAgICAgbDtcbiAgICB9IGVsc2Uge1xuICAgICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgICAoYWNjLCB1cCwgdWUpID0+IHtmaW5kX2luX2xldChuYW1lLCB1cCwgdWUsIGFjYyl9LFxuICAgICAgICBsLFxuICAgICAgICBwbCxcbiAgICAgICAgdWwsXG4gICAgICApO1xuICAgIH1cbiAgfCAoVmFyKF8pLCBfKVxuICB8IChUdXBsZShfKSwgXylcbiAgfCAoXG4gICAgICBFbXB0eUhvbGUgfCBXaWxkIHwgVHJpdiB8IEludmFsaWQoXykgfCBNdWx0aUhvbGUoXykgfCBJbnQoXykgfCBGbG9hdChfKSB8XG4gICAgICBCb29sKF8pIHxcbiAgICAgIFN0cmluZyhfKSB8XG4gICAgICBMaXN0TGl0KF8pIHxcbiAgICAgIENvbnN0cnVjdG9yKF8pIHxcbiAgICAgIENvbnMoXywgXykgfFxuICAgICAgQXAoXywgXyksXG4gICAgICBfLFxuICAgICkgPT4gbFxuICB9O1xufTtcblxuLypcbiBGaW5kIGFueSBmdW5jdGlvbiBleHByZXNzaW9ucyBpbiB1ZXhwIHRoYXQgYXJlIGJvdW5kIHRvIHZhcmlhYmxlIG5hbWVcbiAqL1xubGV0IHJlYyBmaW5kX2ZuID1cbiAgICAgICAgKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQsIGw6IGxpc3QoVGVybS5VRXhwLnQpKVxuICAgICAgICA6IGxpc3QoVGVybS5VRXhwLnQpID0+IHtcbiAgc3dpdGNoICh1ZXhwLnRlcm0pIHtcbiAgfCBMZXQodXAsIGRlZiwgYm9keSkgPT5cbiAgICBsIHw+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCBkZWYpIHw+IGZpbmRfZm4obmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KHVsKVxuICB8IFR1cGxlKHVsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KChhY2MsIHUxKSA9PiB7ZmluZF9mbihuYW1lLCB1MSwgYWNjKX0sIGwsIHVsKVxuICB8IFR5cEZ1bihfLCBib2R5KVxuICB8IEZ1bihfLCBib2R5KSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgYm9keSlcbiAgfCBUeXBBcCh1MSwgXylcbiAgfCBQYXJlbnModTEpXG4gIHwgVW5PcChfLCB1MSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUxKVxuICB8IFRlc3QodTEpXG4gIHwgRmlsdGVyKF8sIF8sIHUxKSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgdTEpXG4gIHwgQXAodTEsIHUyKVxuICB8IFBpcGVsaW5lKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSB8PiBmaW5kX2ZuKG5hbWUsIHUyKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSB8PiBmaW5kX2ZuKG5hbWUsIHUyKSB8PiBmaW5kX2ZuKG5hbWUsIHUzKVxuICB8IERlZmVycmVkQXAoZm4sIGFyZ3MpID0+XG4gICAgbFxuICAgIHw+IGZpbmRfZm4obmFtZSwgZm4pXG4gICAgfD4gTGlzdC5mb2xkX2xlZnQoKGwsIHUpID0+IGZpbmRfZm4obmFtZSwgdSwgbCksIF8sIGFyZ3MpXG4gIHwgTWF0Y2godTEsIHVsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgKF8sIHVlKSkgPT4ge2ZpbmRfZm4obmFtZSwgdWUsIGFjYyl9LFxuICAgICAgbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSxcbiAgICAgIHVsLFxuICAgIClcbiAgfCBFbXB0eUhvbGVcbiAgfCBUcml2XG4gIHwgRGVmZXJyYWwoXylcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBWYXIoXykgPT4gbFxuICB9O1xufTtcblxuLypcbiBGaW5kcyB3aGV0aGVyIHZhcmlhYmxlIG5hbWUgaXMgZXZlciBtZW50aW9uZWQgaW4gdXBhdC5cbiAqL1xubGV0IHJlYyB2YXJfbWVudGlvbl91cGF0ID0gKG5hbWU6IHN0cmluZywgdXBhdDogVGVybS5VUGF0LnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1cGF0LnRlcm0pIHtcbiAgfCBWYXIoeCkgPT4geCA9PSBuYW1lXG4gIHwgRW1wdHlIb2xlXG4gIHwgV2lsZFxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBCb29sKF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gZmFsc2VcbiAgfCBDb25zKHVwMSwgdXAyKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAxKSB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMilcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVwKSA9PiB7YWNjIHx8IHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXApfSxcbiAgICAgIGZhbHNlLFxuICAgICAgbCxcbiAgICApXG4gIHwgUGFyZW5zKHVwKSA9PiB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKVxuICB8IEFwKHVwMSwgdXAyKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAxKSB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMilcbiAgfCBUeXBlQW5uKHVwLCBfKSA9PiB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKVxuICB9O1xufTtcblxuLypcbiBGaW5kcyB3aGV0aGVyIHZhcmlhYmxlIG5hbWUgaXMgZXZlciBtZW50aW9uZWQgaW4gdWV4cC5cbiAqL1xubGV0IHJlYyB2YXJfbWVudGlvbiA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgVmFyKHgpID0+IHggPT0gbmFtZVxuICB8IEVtcHR5SG9sZVxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBEZWZlcnJhbChfKSA9PiBmYWxzZVxuICB8IEZ1bihhcmdzLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgYXJncykgPyBmYWxzZSA6IHZhcl9tZW50aW9uKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdWUpID0+IHthY2MgfHwgdmFyX21lbnRpb24obmFtZSwgdWUpfSwgZmFsc2UsIGwpXG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApXG4gICAgICA/IGZhbHNlIDogdmFyX21lbnRpb24obmFtZSwgZGVmKSB8fCB2YXJfbWVudGlvbihuYW1lLCBib2R5KVxuICB8IFR5cEZ1bihfLCB1KVxuICB8IFR5cEFwKHUsIF8pXG4gIHwgVGVzdCh1KVxuICB8IFBhcmVucyh1KVxuICB8IFVuT3AoXywgdSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIF8sIHUpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUpXG4gIHwgQXAodTEsIHUyKVxuICB8IFBpcGVsaW5lKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTEpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUyKVxuICB8IERlZmVycmVkQXAodTEsIHVzKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCBMaXN0LmV4aXN0cyh2YXJfbWVudGlvbihuYW1lKSwgdXMpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCB1MSkgfHwgdmFyX21lbnRpb24obmFtZSwgdTIpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUzKVxuICB8IE1hdGNoKGcsIGwpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgZylcbiAgICB8fCBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgIChhY2MsIHBlKSA9PiB7XG4gICAgICAgICAgIGxldCAocCwgZSkgPSBwZTtcbiAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjIHx8IHZhcl9tZW50aW9uKG5hbWUsIGUpO1xuICAgICAgICAgfSxcbiAgICAgICAgIGZhbHNlLFxuICAgICAgICAgbCxcbiAgICAgICApXG4gIH07XG59O1xuXG4vKlxuIEZpbmRzIHdoZXRoZXIgdmFyaWFibGUgbmFtZSBpcyBhcHBsaWVkIG9uIGFub3RoZXIgZXhwcmVzc3Npb24uXG4gaS5lLiBBcChWYXIobmFtZSksIHUpIG9jY3VycyBhbnl3aGVyZSBpbiB0aGUgdWV4cC5cbiAqL1xubGV0IHJlYyB2YXJfYXBwbGllZCA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgVmFyKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgVHJpdlxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IERlZmVycmFsKF8pID0+IGZhbHNlXG4gIHwgRnVuKGFyZ3MsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdmFyX2FwcGxpZWQobmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfYXBwbGllZChuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcClcbiAgICAgID8gZmFsc2UgOiB2YXJfYXBwbGllZChuYW1lLCBkZWYpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIGJvZHkpXG4gIHwgVHlwRnVuKF8sIHUpXG4gIHwgVGVzdCh1KVxuICB8IFBhcmVucyh1KVxuICB8IFVuT3AoXywgdSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIF8sIHUpID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUpXG4gIHwgVHlwQXAodSwgXykgPT5cbiAgICBzd2l0Y2ggKHUudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiBmYWxzZVxuICAgIHwgXyA9PiB2YXJfYXBwbGllZChuYW1lLCB1KVxuICAgIH1cbiAgfCBBcCh1MSwgdTIpID0+XG4gICAgc3dpdGNoICh1MS50ZXJtKSB7XG4gICAgfCBWYXIoeCkgPT4geCA9PSBuYW1lID8gdHJ1ZSA6IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICAgIHwgXyA9PiB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpXG4gICAgfVxuICB8IERlZmVycmVkQXAodTEsIHVzKSA9PlxuICAgIHN3aXRjaCAodTEudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiBMaXN0LmV4aXN0cyh2YXJfYXBwbGllZChuYW1lKSwgdXMpXG4gICAgfCBfID0+IExpc3QuZXhpc3RzKHZhcl9hcHBsaWVkKG5hbWUpLCB1cylcbiAgICB9XG4gIHwgUGlwZWxpbmUodTEsIHUyKSA9PlxuICAgIHN3aXRjaCAodTIudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiB2YXJfYXBwbGllZChuYW1lLCB1MSlcbiAgICB8IF8gPT4gdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICAgIH1cbiAgfCBDb25zKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKSB8fCB2YXJfYXBwbGllZChuYW1lLCB1MylcbiAgfCBNYXRjaChnLCBsKSA9PlxuICAgIHZhcl9hcHBsaWVkKG5hbWUsIGcpXG4gICAgfHwgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAoYWNjLCBwZSkgPT4ge1xuICAgICAgICAgICBsZXQgKHAsIGUpID0gcGU7XG4gICAgICAgICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcCkgPyBmYWxzZSA6IGFjYyB8fCB2YXJfYXBwbGllZChuYW1lLCBlKTtcbiAgICAgICAgIH0sXG4gICAgICAgICBmYWxzZSxcbiAgICAgICAgIGwsXG4gICAgICAgKVxuICB9O1xufTtcblxuLypcbiBDaGVjayB3aGV0aGVyIGFsbCBmdW5jdGlvbnMgYm91bmQgdG8gdmFyaWFibGUgbmFtZSBhcmUgcmVjdXJzaXZlLlxuICovXG5sZXQgaXNfcmVjdXJzaXZlID0gKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQpOiBib29sID0+IHtcbiAgbGV0IGZuX2JvZGllcyA9IFtdIHw+IGZpbmRfZm4obmFtZSwgdWV4cCk7XG4gIGlmIChMaXN0Lmxlbmd0aChmbl9ib2RpZXMpID09IDApIHtcbiAgICBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVlKSA9PiB7YWNjICYmIHZhcl9tZW50aW9uKG5hbWUsIHVlKX0sXG4gICAgICB0cnVlLFxuICAgICAgZm5fYm9kaWVzLFxuICAgICk7XG4gIH07XG59O1xuXG4vKlxuIENoZWNrIGlmIHZhcmlhYmxlIG5hbWUgaXMgbm90IG1lbnRpb25lZCBhbnl3aGVyZSBvdXRzaWRlIG9mXG4gYSB0YWlsIHBvc2l0aW9uIGluIHVleHAuIE5vdGUgdGhhdCBpZiB0aGUgdmFyaWFibGUgaXMgbm90XG4gbWVudGlvbmVkIGFueXdoZXJlIGluIHRoZSBleHByZXNzaW9uLCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlLlxuICovXG5sZXQgcmVjIHRhaWxfY2hlY2sgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVleHAudGVybSkge1xuICB8IEVtcHR5SG9sZVxuICB8IFRyaXZcbiAgfCBEZWZlcnJhbChfKVxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IFZhcihfKSA9PiB0cnVlXG4gIHwgRnVuKGFyZ3MsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCBib2R5KVxuICB8IExldChwLCBkZWYsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSB8fCB2YXJfbWVudGlvbihuYW1lLCBkZWYpXG4gICAgICA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCBib2R5KVxuICB8IExpc3RMaXQobClcbiAgfCBUdXBsZShsKSA9PlxuICAgIC8vSWYgbCBoYXMgbm8gcmVjdXJzaXZlIGNhbGxzIHRoZW4gdHJ1ZVxuICAgICFMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfbWVudGlvbihuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBUZXN0KF8pID0+IGZhbHNlXG4gIHwgVHlBbGlhcyhfLCBfLCB1KVxuICB8IEZpbHRlcihfLCBfLCB1KVxuICB8IFR5cEZ1bihfLCB1KVxuICB8IFR5cEFwKHUsIF8pXG4gIHwgUGFyZW5zKHUpID0+IHRhaWxfY2hlY2sobmFtZSwgdSlcbiAgfCBVbk9wKF8sIHUpID0+ICF2YXJfbWVudGlvbihuYW1lLCB1KVxuICB8IEFwKHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTIpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIHUxKVxuICB8IERlZmVycmVkQXAoZm4sIGFyZ3MpID0+XG4gICAgdGFpbF9jaGVjayhcbiAgICAgIG5hbWUsXG4gICAgICB7aWRzOiBbXSwgdGVybTogQXAoZm4sIHtpZHM6IFtdLCB0ZXJtOiBUdXBsZShhcmdzKX0pfSxcbiAgICApXG4gIHwgUGlwZWxpbmUodTEsIHUyKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1MSkgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgdTIpXG4gIHwgU2VxKHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTEpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gISh2YXJfbWVudGlvbihuYW1lLCB1MSkgfHwgdmFyX21lbnRpb24obmFtZSwgdTIpKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgdTEpXG4gICAgICA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCB1MikgJiYgdGFpbF9jaGVjayhuYW1lLCB1MylcbiAgfCBNYXRjaChnLCBsKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIGcpXG4gICAgICA/IGZhbHNlXG4gICAgICA6IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgIChhY2MsIChwLCBlKSkgPT4ge1xuICAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjICYmIHRhaWxfY2hlY2sobmFtZSwgZSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICAgbCxcbiAgICAgICAgKVxuICB9O1xufTtcblxuLypcbiBDaGVjayB3aGV0aGVyIGFsbCBmdW5jdGlvbnMgYm91bmQgdG8gdmFyaWFibGUgbmFtZSBhcmUgdGFpbCByZWN1cnNpdmUuXG4gKi9cbmxldCBpc190YWlsX3JlY3Vyc2l2ZSA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIGxldCBmbl9ib2RpZXMgPSBbXSB8PiBmaW5kX2ZuKG5hbWUsIHVleHApO1xuICBpZiAoTGlzdC5sZW5ndGgoZm5fYm9kaWVzKSA9PSAwKSB7XG4gICAgZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCB1ZSkgPT4ge2FjYyAmJiB2YXJfbWVudGlvbihuYW1lLCB1ZSkgJiYgdGFpbF9jaGVjayhuYW1lLCB1ZSl9LFxuICAgICAgdHJ1ZSxcbiAgICAgIGZuX2JvZGllcyxcbiAgICApO1xuICB9O1xufTtcblxubGV0IGNoZWNrID1cbiAgICAodWV4cDogVGVybS5VRXhwLnQsIHByZWRpY2F0ZXM6IGxpc3QoVGVybS5VRXhwLnQgPT4gYm9vbCkpOiBzeW50YXhfcmVzdWx0ID0+IHtcbiAgbGV0IHJlc3VsdHMgPSBMaXN0Lm1hcChwcmVkID0+IHt1ZXhwIHw+IHByZWR9LCBwcmVkaWNhdGVzKTtcbiAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoKHByZWRpY2F0ZXMpO1xuICBsZXQgcGFzc2luZyA9IFV0aWwuTGlzdFV0aWwuY291bnRfcHJlZChyZXMgPT4gcmVzLCByZXN1bHRzKTtcblxuICB7XG4gICAgcmVzdWx0cyxcbiAgICBwZXJjZW50YWdlOlxuICAgICAgLy92YWN1b3VzbHkgcGFzc2VzIGlmIHRoZXJlIGFyZSBubyB0ZXN0c1xuICAgICAgbGVuZ3RoID09IDAgPyAxLiA6IGZsb2F0X29mX2ludChwYXNzaW5nKSAvLiBmbG9hdF9vZl9pbnQobGVuZ3RoKSxcbiAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcHJlZGljYXRlID1cbiAgfCBWYXJBcHBsaWVkKHN0cmluZylcbiAgfCBJc1JlY3Vyc2l2ZShzdHJpbmcpXG4gIHwgSXNOb3RSZWN1cnNpdmUoc3RyaW5nKVxuICB8IElzVGFpbFJlY3Vyc2l2ZShzdHJpbmcpO1xuXG5sZXQgcHJlZGljYXRlX2ZuID0gcHJlZGljYXRlID0+IHtcbiAgc3dpdGNoIChwcmVkaWNhdGUpIHtcbiAgfCBWYXJBcHBsaWVkKG5hbWUpID0+IHZhcl9hcHBsaWVkKG5hbWUpXG4gIHwgSXNSZWN1cnNpdmUobmFtZSkgPT4gaXNfcmVjdXJzaXZlKG5hbWUpXG4gIHwgSXNOb3RSZWN1cnNpdmUobmFtZSkgPT4gKHVleHAgPT4gIWlzX3JlY3Vyc2l2ZShuYW1lLCB1ZXhwKSlcbiAgfCBJc1RhaWxSZWN1cnNpdmUobmFtZSkgPT4gaXNfdGFpbF9yZWN1cnNpdmUobmFtZSlcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBIYXozbGNvcmU7XG5vcGVuIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYuUHJpbWl0aXZlcztcblxubW9kdWxlIHR5cGUgRXhlcmNpc2VFbnYgPSB7XG4gIHR5cGUgbm9kZTtcbiAgbGV0IGRlZmF1bHQ6IG5vZGU7XG4gIGxldCBvdXRwdXRfaGVhZGVyOiBzdHJpbmcgPT4gc3RyaW5nO1xufTtcblxubGV0IG91dHB1dF9oZWFkZXJfZ3JhZGluZyA9IF9tb2R1bGVfbmFtZSA9PlxuICBcIm1vZHVsZSBFeGVyY2lzZSA9IEdyYWRlUHJlbHVkZS5FeGVyY2lzZVxcblwiICsrIFwibGV0IHByb21wdCA9ICgpXFxuXCI7XG5cbm1vZHVsZSBGID0gKEV4ZXJjaXNlRW52OiBFeGVyY2lzZUVudikgPT4ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgd3JvbmdfaW1wbCgnY29kZSkgPSB7XG4gICAgaW1wbDogJ2NvZGUsXG4gICAgaGludDogc3RyaW5nLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaWRkZW5fdGVzdHMoJ2NvZGUpID0ge1xuICAgIHRlc3RzOiAnY29kZSxcbiAgICBoaW50czogbGlzdChzdHJpbmcpLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaW50ID0gc3RyaW5nO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzeW50YXhfdGVzdCA9IChoaW50LCBTeW50YXhUZXN0LnByZWRpY2F0ZSk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHN5bnRheF90ZXN0cyA9IGxpc3Qoc3ludGF4X3Rlc3QpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB5b3VyX3Rlc3RzKCdjb2RlKSA9IHtcbiAgICB0ZXN0czogJ2NvZGUsXG4gICAgcmVxdWlyZWQ6IGludCxcbiAgICBwcm92aWRlZDogaW50LFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb2ludF9kaXN0cmlidXRpb24gPSB7XG4gICAgdGVzdF92YWxpZGF0aW9uOiBpbnQsXG4gICAgbXV0YXRpb25fdGVzdGluZzogaW50LFxuICAgIGltcGxfZ3JhZGluZzogaW50LFxuICB9O1xuXG4gIGxldCB2YWxpZGF0ZV9wb2ludF9kaXN0cmlidXRpb24gPVxuICAgICAgKHt0ZXN0X3ZhbGlkYXRpb24sIG11dGF0aW9uX3Rlc3RpbmcsIGltcGxfZ3JhZGluZ306IHBvaW50X2Rpc3RyaWJ1dGlvbikgPT5cbiAgICB0ZXN0X3ZhbGlkYXRpb24gKyBtdXRhdGlvbl90ZXN0aW5nICsgaW1wbF9ncmFkaW5nID09IDEwMFxuICAgICAgPyAoKSA6IGZhaWx3aXRoKFwiSW52YWxpZCBwb2ludCBkaXN0cmlidXRpb24gaW4gZXhlcmNpc2UuXCIpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwKCdjb2RlKSA9IHtcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHZlcnNpb246IGludCxcbiAgICBtb2R1bGVfbmFtZTogc3RyaW5nLFxuICAgIHByb21wdDpcbiAgICAgIFtAcHJpbnRlciAoZm10LCBfKSA9PiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgXCJwcm9tcHRcIildIFtAb3BhcXVlXSBFeGVyY2lzZUVudi5ub2RlLFxuICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICBwcmVsdWRlOiAnY29kZSxcbiAgICBjb3JyZWN0X2ltcGw6ICdjb2RlLFxuICAgIHlvdXJfdGVzdHM6IHlvdXJfdGVzdHMoJ2NvZGUpLFxuICAgIHlvdXJfaW1wbDogJ2NvZGUsXG4gICAgaGlkZGVuX2J1Z3M6IGxpc3Qod3JvbmdfaW1wbCgnY29kZSkpLFxuICAgIGhpZGRlbl90ZXN0czogaGlkZGVuX3Rlc3RzKCdjb2RlKSxcbiAgICBzeW50YXhfdGVzdHMsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGtleSA9IChzdHJpbmcsIGludCk7XG5cbiAgbGV0IGtleV9vZiA9IHAgPT4ge1xuICAgIChwLnRpdGxlLCBwLnZlcnNpb24pO1xuICB9O1xuXG4gIGxldCBmaW5kX2tleV9vcHQgPSAoa2V5LCBzcGVjczogbGlzdChwKCdjb2RlKSkpID0+IHtcbiAgICBzcGVjcyB8PiBVdGlsLkxpc3RVdGlsLmZpbmRpX29wdChzcGVjID0+IGtleV9vZihzcGVjKSA9PSBrZXkpO1xuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb3MgPVxuICAgIHwgUHJlbHVkZVxuICAgIHwgQ29ycmVjdEltcGxcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb25cbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmdcbiAgICB8IFlvdXJJbXBsXG4gICAgfCBIaWRkZW5CdWdzKGludClcbiAgICB8IEhpZGRlblRlc3RzO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzcGVjID0gcChaaXBwZXIudCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRyYW5zaXRpb25hcnlfc3BlYyA9IHAoQ29kZVN0cmluZy50KTtcblxuICBsZXQgbWFwID0gKHA6IHAoJ2EpLCBmOiAnYSA9PiAnYik6IHAoJ2IpID0+IHtcbiAgICB7XG4gICAgICB0aXRsZTogcC50aXRsZSxcbiAgICAgIHZlcnNpb246IHAudmVyc2lvbixcbiAgICAgIG1vZHVsZV9uYW1lOiBwLm1vZHVsZV9uYW1lLFxuICAgICAgcHJvbXB0OiBwLnByb21wdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbjogcC5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICBwcmVsdWRlOiBmKHAucHJlbHVkZSksXG4gICAgICBjb3JyZWN0X2ltcGw6IGYocC5jb3JyZWN0X2ltcGwpLFxuICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICB0ZXN0czogZihwLnlvdXJfdGVzdHMudGVzdHMpLFxuICAgICAgICByZXF1aXJlZDogcC55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICBwcm92aWRlZDogcC55b3VyX3Rlc3RzLnByb3ZpZGVkLFxuICAgICAgfSxcbiAgICAgIHlvdXJfaW1wbDogZihwLnlvdXJfaW1wbCksXG4gICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgcC5oaWRkZW5fYnVnc1xuICAgICAgICB8PiBMaXN0Lm1hcCh3cm9uZ19pbXBsID0+IHtcbiAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICBpbXBsOiBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3Qod3JvbmdfaW1wbC5pbXBsKSxcbiAgICAgICAgICAgICAgIGhpbnQ6IHdyb25nX2ltcGwuaGludCxcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgIH0pLFxuICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QocC5oaWRkZW5fdGVzdHMudGVzdHMpLFxuICAgICAgICBoaW50czogcC5oaWRkZW5fdGVzdHMuaGludHMsXG4gICAgICB9LFxuICAgICAgc3ludGF4X3Rlc3RzOiBwLnN5bnRheF90ZXN0cyxcbiAgICB9O1xuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBlZHMgPSBwKEVkaXRvci50KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3RhdGUgPSB7XG4gICAgcG9zLFxuICAgIGVkcyxcbiAgfTtcblxuICBsZXQga2V5X29mX3N0YXRlID0gKHtlZHMsIF99KSA9PiBrZXlfb2YoZWRzKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyc2lzdGVudF9zdGF0ZSA9IChwb3MsIGxpc3QoKHBvcywgUGVyc2lzdGVudFppcHBlci50KSkpO1xuXG4gIGxldCBlZGl0b3Jfb2Zfc3RhdGU6IHN0YXRlID0+IEVkaXRvci50ID1cbiAgICAoe3BvcywgZWRzLCBffSkgPT5cbiAgICAgIHN3aXRjaCAocG9zKSB7XG4gICAgICB8IFByZWx1ZGUgPT4gZWRzLnByZWx1ZGVcbiAgICAgIHwgQ29ycmVjdEltcGwgPT4gZWRzLmNvcnJlY3RfaW1wbFxuICAgICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IGVkcy55b3VyX3Rlc3RzLnRlc3RzXG4gICAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gZWRzLnlvdXJfdGVzdHMudGVzdHNcbiAgICAgIHwgWW91ckltcGwgPT4gZWRzLnlvdXJfaW1wbFxuICAgICAgfCBIaWRkZW5CdWdzKGkpID0+IExpc3QubnRoKGVkcy5oaWRkZW5fYnVncywgaSkuaW1wbFxuICAgICAgfCBIaWRkZW5UZXN0cyA9PiBlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzXG4gICAgICB9O1xuXG4gIGxldCBwdXRfZWRpdG9yID0gKHtwb3MsIGVkcywgX30gYXMgc3RhdGU6IHN0YXRlLCBlZGl0b3I6IEVkaXRvci50KSA9PlxuICAgIHN3aXRjaCAocG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBwcmVsdWRlOiBlZGl0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBDb3JyZWN0SW1wbCA9PiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgY29ycmVjdF9pbXBsOiBlZGl0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgICAgICAuLi5lZHMueW91cl90ZXN0cyxcbiAgICAgICAgICAgIHRlc3RzOiBlZGl0b3IsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IFlvdXJJbXBsID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICB5b3VyX2ltcGw6IGVkaXRvcixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IEhpZGRlbkJ1Z3MobikgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICAgICAgVXRpbC5MaXN0VXRpbC5wdXRfbnRoKFxuICAgICAgICAgICAgICBuLFxuICAgICAgICAgICAgICB7Li4uTGlzdC5udGgoZWRzLmhpZGRlbl9idWdzLCBuKSwgaW1wbDogZWRpdG9yfSxcbiAgICAgICAgICAgICAgZWRzLmhpZGRlbl9idWdzLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IEhpZGRlblRlc3RzID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgICAgIC4uLmVkcy5oaWRkZW5fdGVzdHMsXG4gICAgICAgICAgICB0ZXN0czogZWRpdG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgZWRpdG9ycyA9ICh7ZWRzLCBffTogc3RhdGUpID0+XG4gICAgW1xuICAgICAgZWRzLnByZWx1ZGUsXG4gICAgICBlZHMuY29ycmVjdF9pbXBsLFxuICAgICAgZWRzLnlvdXJfdGVzdHMudGVzdHMsXG4gICAgICBlZHMueW91cl90ZXN0cy50ZXN0cyxcbiAgICAgIGVkcy55b3VyX2ltcGwsXG4gICAgXVxuICAgIEAgTGlzdC5tYXAod3JvbmdfaW1wbCA9PiB3cm9uZ19pbXBsLmltcGwsIGVkcy5oaWRkZW5fYnVncylcbiAgICBAIFtlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzXTtcblxuICBsZXQgZWRpdG9yX3Bvc2l0aW9ucyA9ICh7ZWRzLCBffTogc3RhdGUpID0+XG4gICAgW1ByZWx1ZGUsIENvcnJlY3RJbXBsLCBZb3VyVGVzdHNUZXN0aW5nLCBZb3VyVGVzdHNWYWxpZGF0aW9uLCBZb3VySW1wbF1cbiAgICBAIExpc3QubWFwaSgoaSwgXykgPT4gSGlkZGVuQnVncyhpKSwgZWRzLmhpZGRlbl9idWdzKVxuICAgIEAgW0hpZGRlblRlc3RzXTtcblxuICBsZXQgcG9zaXRpb25lZF9lZGl0b3JzID0gc3RhdGUgPT5cbiAgICBMaXN0LmNvbWJpbmUoZWRpdG9yX3Bvc2l0aW9ucyhzdGF0ZSksIGVkaXRvcnMoc3RhdGUpKTtcblxuICBsZXQgaWR4X29mX3BvcyA9IChwb3MsIHA6IHAoJ2NvZGUpKSA9PlxuICAgIHN3aXRjaCAocG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IDBcbiAgICB8IENvcnJlY3RJbXBsID0+IDFcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gMlxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiAzXG4gICAgfCBZb3VySW1wbCA9PiA0XG4gICAgfCBIaWRkZW5CdWdzKGkpID0+XG4gICAgICBpZiAoaSA8IExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIDUgKyBpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbHdpdGgoXCJpbnZhbGlkIGhpZGRlbiBidWcgaW5kZXhcIik7XG4gICAgICB9XG4gICAgfCBIaWRkZW5UZXN0cyA9PiA1ICsgTGlzdC5sZW5ndGgocC5oaWRkZW5fYnVncylcbiAgICB9O1xuXG4gIGxldCBwb3Nfb2ZfaWR4ID0gKHA6IHAoJ2NvZGUpLCBpZHg6IGludCkgPT5cbiAgICBzd2l0Y2ggKGlkeCkge1xuICAgIHwgMCA9PiBQcmVsdWRlXG4gICAgfCAxID0+IENvcnJlY3RJbXBsXG4gICAgfCAyID0+IFlvdXJUZXN0c1Rlc3RpbmdcbiAgICB8IDMgPT4gWW91clRlc3RzVmFsaWRhdGlvblxuICAgIHwgNCA9PiBZb3VySW1wbFxuICAgIHwgXyA9PlxuICAgICAgaWYgKGlkeCA8IDApIHtcbiAgICAgICAgZmFpbHdpdGgoXCJuZWdhdGl2ZSBpZHhcIik7XG4gICAgICB9IGVsc2UgaWYgKGlkeCA8IDUgKyBMaXN0Lmxlbmd0aChwLmhpZGRlbl9idWdzKSkge1xuICAgICAgICBIaWRkZW5CdWdzKGlkeCAtIDUpO1xuICAgICAgfSBlbHNlIGlmIChpZHggPT0gNSArIExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIEhpZGRlblRlc3RzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbHdpdGgoXCJlbGVtZW50IGlkeFwiKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gIGxldCBzd2l0Y2hfZWRpdG9yID0gKH5wb3MsIGluc3RydWN0b3JfbW9kZSwgfmV4ZXJjaXNlKSA9PlxuICAgIGlmICghaW5zdHJ1Y3Rvcl9tb2RlKSB7XG4gICAgICBzd2l0Y2ggKHBvcykge1xuICAgICAgfCBIaWRkZW5UZXN0c1xuICAgICAgfCBIaWRkZW5CdWdzKF8pID0+IGV4ZXJjaXNlXG4gICAgICB8IF8gPT4ge2VkczogZXhlcmNpc2UuZWRzLCBwb3N9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB7ZWRzOiBleGVyY2lzZS5lZHMsIHBvc307XG4gICAgfTtcblxuICBsZXQgemlwcGVyX29mX2NvZGUgPSBjb2RlID0+IHtcbiAgICBzd2l0Y2ggKFByaW50ZXIuemlwcGVyX29mX3N0cmluZyhjb2RlKSkge1xuICAgIHwgTm9uZSA9PiBmYWlsd2l0aChcIlRyYW5zaXRpb24gZmFpbGVkLlwiKVxuICAgIHwgU29tZSh6aXBwZXIpID0+IHppcHBlclxuICAgIH07XG4gIH07XG5cbiAgbGV0IHRyYW5zaXRpb246IHRyYW5zaXRpb25hcnlfc3BlYyA9PiBzcGVjID1cbiAgICAoXG4gICAgICB7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgcHJvbXB0LFxuICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgIHByZWx1ZGUsXG4gICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgICAgeW91cl90ZXN0cyxcbiAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICB9LFxuICAgICkgPT4ge1xuICAgICAgbGV0IHByZWx1ZGUgPSB6aXBwZXJfb2ZfY29kZShwcmVsdWRlKTtcbiAgICAgIGxldCBjb3JyZWN0X2ltcGwgPSB6aXBwZXJfb2ZfY29kZShjb3JyZWN0X2ltcGwpO1xuICAgICAgbGV0IHlvdXJfdGVzdHMgPSB7XG4gICAgICAgIGxldCB0ZXN0cyA9IHppcHBlcl9vZl9jb2RlKHlvdXJfdGVzdHMudGVzdHMpO1xuICAgICAgICB7dGVzdHMsIHJlcXVpcmVkOiB5b3VyX3Rlc3RzLnJlcXVpcmVkLCBwcm92aWRlZDogeW91cl90ZXN0cy5wcm92aWRlZH07XG4gICAgICB9O1xuICAgICAgbGV0IHlvdXJfaW1wbCA9IHppcHBlcl9vZl9jb2RlKHlvdXJfaW1wbCk7XG4gICAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAoYWNjLCB7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICAgIGxldCBpbXBsID0gemlwcGVyX29mX2NvZGUoaW1wbCk7XG4gICAgICAgICAgICBhY2MgQCBbe2ltcGwsIGhpbnR9XTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICApO1xuICAgICAgbGV0IGhpZGRlbl90ZXN0cyA9IHtcbiAgICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAgICAgICBsZXQgdGVzdHMgPSB6aXBwZXJfb2ZfY29kZSh0ZXN0cyk7XG4gICAgICAgIHt0ZXN0cywgaGludHN9O1xuICAgICAgfTtcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICBwcm9tcHQsXG4gICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgIH07XG4gICAgfTtcblxuICBsZXQgZWRzX29mX3NwZWMgPVxuICAgICAgKFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgICBwcm9tcHQsXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHByZWx1ZGUsXG4gICAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICAgIHlvdXJfdGVzdHMsXG4gICAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICAgIH0sXG4gICAgICAgIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICApXG4gICAgICA6IGVkcyA9PiB7XG4gICAgbGV0IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uID0gRWRpdG9yLmluaXQofnNldHRpbmdzKTtcbiAgICBsZXQgcHJlbHVkZSA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHByZWx1ZGUpO1xuICAgIGxldCBjb3JyZWN0X2ltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihjb3JyZWN0X2ltcGwpO1xuICAgIGxldCB5b3VyX3Rlc3RzID0ge1xuICAgICAgbGV0IHRlc3RzID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24oeW91cl90ZXN0cy50ZXN0cyk7XG4gICAgICB7dGVzdHMsIHJlcXVpcmVkOiB5b3VyX3Rlc3RzLnJlcXVpcmVkLCBwcm92aWRlZDogeW91cl90ZXN0cy5wcm92aWRlZH07XG4gICAgfTtcbiAgICBsZXQgeW91cl9pbXBsID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24oeW91cl9pbXBsKTtcbiAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgaGlkZGVuX2J1Z3NcbiAgICAgIHw+IExpc3QubWFwKCh7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICAgbGV0IGltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihpbXBsKTtcbiAgICAgICAgICAge2ltcGwsIGhpbnR9O1xuICAgICAgICAgfSk7XG4gICAgbGV0IGhpZGRlbl90ZXN0cyA9IHtcbiAgICAgIGxldCB7dGVzdHMsIGhpbnRzfSA9IGhpZGRlbl90ZXN0cztcbiAgICAgIGxldCB0ZXN0cyA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHRlc3RzKTtcbiAgICAgIHt0ZXN0cywgaGludHN9O1xuICAgIH07XG4gICAge1xuICAgICAgdGl0bGUsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgbW9kdWxlX25hbWUsXG4gICAgICBwcm9tcHQsXG4gICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICBwcmVsdWRlLFxuICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgeW91cl90ZXN0cyxcbiAgICAgIHlvdXJfaW1wbCxcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgc3ludGF4X3Rlc3RzLFxuICAgIH07XG4gIH07XG5cbiAgLy9cbiAgLy8gT2xkIHZlcnNpb24gb2YgYWJvdmUgdGhhdCBkaWQgc3RyaW5nLWJhc2VkIHBhcnNpbmcsIG1heSBiZSB1c2VmdWxcbiAgLy8gZm9yIHRyYW5zaXRpb25zIGJldHdlZW4gemlwcGVyIGRhdGEgc3RydWN0dXJlIHZlcnNpb25zIChUT0RPKVxuICAvL1xuICAvLyBsZXQgZWRpdG9yX29mX2NvZGUgPSAoaW5pdF9pZCwgY29kZSkgPT5cbiAgLy8gICBzd2l0Y2ggKEVkaXRvclV0aWwuZWRpdG9yX29mX2NvZGUoaW5pdF9pZCwgY29kZSkpIHtcbiAgLy8gICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJFeGVyY2lzZSBlcnJvcjogaW52YWxpZCBjb2RlXCIpXG4gIC8vICAgfCBTb21lKHgpID0+IHhcbiAgLy8gICB9O1xuICAvLyBsZXQgZWRzX29mX3NwZWM6IHNwZWMgPT4gZWRzID1cbiAgLy8gICAoXG4gIC8vICAgICB7XG4gIC8vXG4gIC8vICAgICAgIHRpdGxlLFxuICAvLyAgICAgICB2ZXJzaW9uLFxuICAvLyAgICAgICBwcm9tcHQsXG4gIC8vICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgLy8gICAgICAgcHJlbHVkZSxcbiAgLy8gICAgICAgY29ycmVjdF9pbXBsLFxuICAvLyAgICAgICB5b3VyX3Rlc3RzLFxuICAvLyAgICAgICB5b3VyX2ltcGwsXG4gIC8vICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICBoaWRkZW5fdGVzdHMsXG4gIC8vICAgICB9LFxuICAvLyAgICkgPT4ge1xuICAvLyAgICAgbGV0IGlkID0gbmV4dF9pZDtcbiAgLy8gICAgIGxldCAoaWQsIHByZWx1ZGUpID0gZWRpdG9yX29mX2NvZGUoaWQsIHByZWx1ZGUpO1xuICAvLyAgICAgbGV0IChpZCwgY29ycmVjdF9pbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCBjb3JyZWN0X2ltcGwpO1xuICAvLyAgICAgbGV0IChpZCwgeW91cl90ZXN0cykgPSB7XG4gIC8vICAgICAgIGxldCAoaWQsIHRlc3RzKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB5b3VyX3Rlc3RzLnRlc3RzKTtcbiAgLy8gICAgICAgKFxuICAvLyAgICAgICAgIGlkLFxuICAvLyAgICAgICAgIHtcbiAgLy8gICAgICAgICAgIHRlc3RzLFxuICAvLyAgICAgICAgICAgbnVtX3JlcXVpcmVkOiB5b3VyX3Rlc3RzLm51bV9yZXF1aXJlZCxcbiAgLy8gICAgICAgICAgIG1pbmltdW06IHlvdXJfdGVzdHMubWluaW11bSxcbiAgLy8gICAgICAgICB9LFxuICAvLyAgICAgICApO1xuICAvLyAgICAgfTtcbiAgLy8gICAgIGxldCAoaWQsIHlvdXJfaW1wbCkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgeW91cl9pbXBsKTtcbiAgLy8gICAgIGxldCAoaWQsIGhpZGRlbl9idWdzKSA9XG4gIC8vICAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAvLyAgICAgICAgICgoaWQsIGFjYyksIHtpbXBsLCBoaW50fSkgPT4ge1xuICAvLyAgICAgICAgICAgbGV0IChpZCwgaW1wbCkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgaW1wbCk7XG4gIC8vICAgICAgICAgICAoaWQsIGFjYyBAIFt7aW1wbCwgaGludH1dKTtcbiAgLy8gICAgICAgICB9LFxuICAvLyAgICAgICAgIChpZCwgW10pLFxuICAvLyAgICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICApO1xuICAvLyAgICAgbGV0IChpZCwgaGlkZGVuX3Rlc3RzKSA9IHtcbiAgLy8gICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAvLyAgICAgICBsZXQgKGlkLCB0ZXN0cykgPSBlZGl0b3Jfb2ZfY29kZShpZCwgdGVzdHMpO1xuICAvLyAgICAgICAoaWQsIHt0ZXN0cywgaGludHN9KTtcbiAgLy8gICAgIH07XG4gIC8vICAgICB7XG4gIC8vICAgICAgIG5leHRfaWQ6IGlkLFxuICAvLyAgICAgICB0aXRsZSxcbiAgLy8gICAgICAgdmVyc2lvbixcbiAgLy8gICAgICAgcHJvbXB0LFxuICAvLyAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gIC8vICAgICAgIHByZWx1ZGUsXG4gIC8vICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgLy8gICAgICAgeW91cl90ZXN0cyxcbiAgLy8gICAgICAgeW91cl9pbXBsLFxuICAvLyAgICAgICBoaWRkZW5fYnVncyxcbiAgLy8gICAgICAgaGlkZGVuX3Rlc3RzLFxuICAvLyAgICAgfTtcbiAgLy8gICB9O1xuXG4gIGxldCBzZXRfaW5zdHJ1Y3Rvcl9tb2RlID0gKHtlZHMsIF99IGFzIHN0YXRlOiBzdGF0ZSwgbmV3X21vZGU6IGJvb2wpID0+IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBlZHM6IHtcbiAgICAgIC4uLmVkcyxcbiAgICAgIHByZWx1ZGU6IEVkaXRvci5zZXRfcmVhZF9vbmx5KGVkcy5wcmVsdWRlLCAhbmV3X21vZGUpLFxuICAgIH0sXG4gIH07XG5cbiAgbGV0IHZpc2libGVfaW4gPSAocG9zLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgc3dpdGNoIChwb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4gaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgfCBDb3JyZWN0SW1wbCA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gdHJ1ZVxuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiBmYWxzZVxuICAgIHwgWW91ckltcGwgPT4gdHJ1ZVxuICAgIHwgSGlkZGVuQnVncyhfKSA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IEhpZGRlblRlc3RzID0+IGluc3RydWN0b3JfbW9kZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHN0YXRlX29mX3NwZWMgPVxuICAgICAgKHNwZWMsIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wsIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQpOiBzdGF0ZSA9PiB7XG4gICAgbGV0IGVkcyA9IGVkc19vZl9zcGVjKH5zZXR0aW5ncywgc3BlYyk7XG4gICAgc2V0X2luc3RydWN0b3JfbW9kZSh7cG9zOiBZb3VySW1wbCwgZWRzfSwgaW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgfTtcblxuICBsZXQgcGVyc2lzdGVudF9zdGF0ZV9vZl9zdGF0ZSA9XG4gICAgICAoe3BvcywgX30gYXMgc3RhdGU6IHN0YXRlLCB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sKSA9PiB7XG4gICAgbGV0IHppcHBlcnMgPVxuICAgICAgcG9zaXRpb25lZF9lZGl0b3JzKHN0YXRlKVxuICAgICAgfD4gTGlzdC5maWx0ZXIoKChwb3MsIF8pKSA9PiB2aXNpYmxlX2luKHBvcywgfmluc3RydWN0b3JfbW9kZSkpXG4gICAgICB8PiBMaXN0Lm1hcCgoKHBvcywgZWRpdG9yKSkgPT4ge1xuICAgICAgICAgICAocG9zLCBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QoRWRpdG9yLihlZGl0b3Iuc3RhdGUuemlwcGVyKSkpXG4gICAgICAgICB9KTtcbiAgICAocG9zLCB6aXBwZXJzKTtcbiAgfTtcblxuICBsZXQgdW5wZXJzaXN0X3N0YXRlID1cbiAgICAgIChcbiAgICAgICAgKHBvcywgcG9zaXRpb25lZF96aXBwZXJzKTogcGVyc2lzdGVudF9zdGF0ZSxcbiAgICAgICAgfnNwZWM6IHNwZWMsXG4gICAgICAgIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wsXG4gICAgICAgIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICApXG4gICAgICA6IHN0YXRlID0+IHtcbiAgICBsZXQgbG9va3VwID0gKHBvcywgZGVmYXVsdCkgPT5cbiAgICAgIGlmICh2aXNpYmxlX2luKHBvcywgfmluc3RydWN0b3JfbW9kZSkpIHtcbiAgICAgICAgbGV0IHBlcnNpc3RlZF96aXBwZXIgPSBMaXN0LmFzc29jKHBvcywgcG9zaXRpb25lZF96aXBwZXJzKTtcbiAgICAgICAgbGV0IHppcHBlciA9IFBlcnNpc3RlbnRaaXBwZXIudW5wZXJzaXN0KHBlcnNpc3RlZF96aXBwZXIpO1xuICAgICAgICBFZGl0b3IuaW5pdCh6aXBwZXIsIH5zZXR0aW5ncyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBFZGl0b3IuaW5pdChkZWZhdWx0LCB+c2V0dGluZ3MpO1xuICAgICAgfTtcbiAgICBsZXQgcHJlbHVkZSA9IGxvb2t1cChQcmVsdWRlLCBzcGVjLnByZWx1ZGUpO1xuICAgIGxldCBjb3JyZWN0X2ltcGwgPSBsb29rdXAoQ29ycmVjdEltcGwsIHNwZWMuY29ycmVjdF9pbXBsKTtcbiAgICBsZXQgeW91cl90ZXN0c190ZXN0cyA9IGxvb2t1cChZb3VyVGVzdHNWYWxpZGF0aW9uLCBzcGVjLnlvdXJfdGVzdHMudGVzdHMpO1xuICAgIGxldCB5b3VyX2ltcGwgPSBsb29rdXAoWW91ckltcGwsIHNwZWMueW91cl9pbXBsKTtcbiAgICBsZXQgKF8sIGhpZGRlbl9idWdzKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgKChpLCBoaWRkZW5fYnVnczogbGlzdCh3cm9uZ19pbXBsKEVkaXRvci50KSkpLCB7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICBsZXQgaW1wbCA9IGxvb2t1cChIaWRkZW5CdWdzKGkpLCBpbXBsKTtcbiAgICAgICAgICAoaSArIDEsIGhpZGRlbl9idWdzIEAgW3tpbXBsLCBoaW50fV0pO1xuICAgICAgICB9LFxuICAgICAgICAoMCwgW10pLFxuICAgICAgICBzcGVjLmhpZGRlbl9idWdzLFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlc3RzID0gbG9va3VwKEhpZGRlblRlc3RzLCBzcGVjLmhpZGRlbl90ZXN0cy50ZXN0cyk7XG5cbiAgICBzZXRfaW5zdHJ1Y3Rvcl9tb2RlKFxuICAgICAge1xuICAgICAgICBwb3MsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIHRpdGxlOiBzcGVjLnRpdGxlLFxuICAgICAgICAgIHZlcnNpb246IHNwZWMudmVyc2lvbixcbiAgICAgICAgICBtb2R1bGVfbmFtZTogc3BlYy5tb2R1bGVfbmFtZSxcbiAgICAgICAgICBwcm9tcHQ6IHNwZWMucHJvbXB0LFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbjogc3BlYy5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICAgICAgdGVzdHM6IHlvdXJfdGVzdHNfdGVzdHMsXG4gICAgICAgICAgICByZXF1aXJlZDogc3BlYy55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICAgICAgcHJvdmlkZWQ6IHNwZWMueW91cl90ZXN0cy5wcm92aWRlZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHlvdXJfaW1wbCxcbiAgICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgICAgIHRlc3RzOiBoaWRkZW5fdGVzdHNfdGVzdHMsXG4gICAgICAgICAgICBoaW50czogc3BlYy5oaWRkZW5fdGVzdHMuaGludHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzeW50YXhfdGVzdHM6IHNwZWMuc3ludGF4X3Rlc3RzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGluc3RydWN0b3JfbW9kZSxcbiAgICApO1xuICB9O1xuXG4gIC8vICMgU3RpdGNoaW5nXG5cbiAgdHlwZSBzdGl0Y2hlZCgnYSkgPSB7XG4gICAgdGVzdF92YWxpZGF0aW9uOiAnYSwgLy8gcHJlbHVkZSArIGNvcnJlY3RfaW1wbCArIHlvdXJfdGVzdHNcbiAgICB1c2VyX2ltcGw6ICdhLCAvLyBwcmVsdWRlICsgeW91cl9pbXBsXG4gICAgdXNlcl90ZXN0czogJ2EsIC8vIHByZWx1ZGUgKyB5b3VyX2ltcGwgKyB5b3VyX3Rlc3RzXG4gICAgcHJlbHVkZTogJ2EsIC8vIHByZWx1ZGVcbiAgICBpbnN0cnVjdG9yOiAnYSwgLy8gcHJlbHVkZSArIGNvcnJlY3RfaW1wbCArIGhpZGRlbl90ZXN0cy50ZXN0cyAvLyBUT0RPIG9ubHkgbmVlZHMgdG8gcnVuIGluIGluc3RydWN0b3IgbW9kZVxuICAgIGhpZGRlbl9idWdzOiBsaXN0KCdhKSwgLy8gcHJlbHVkZSArIGhpZGRlbl9idWdzW2ldLmltcGwgKyB5b3VyX3Rlc3RzLFxuICAgIGhpZGRlbl90ZXN0czogJ2EsXG4gIH07XG5cbiAgbGV0IHdyYXBfZmlsdGVyID0gKGFjdDogRmlsdGVyQWN0aW9uLmFjdGlvbiwgdGVybTogVGVybS5VRXhwLnQpOiBUZXJtLlVFeHAudCA9PlxuICAgIFRlcm1CYXNlLlVFeHAue1xuICAgICAgdGVybTpcbiAgICAgICAgVGVybUJhc2UuVUV4cC5GaWx0ZXIoXG4gICAgICAgICAgRmlsdGVyQWN0aW9uLihhY3QsIE9uZSksXG4gICAgICAgICAge3Rlcm06IENvbnN0cnVjdG9yKFwiJGVcIiksIGlkczogW0lkLm1rKCldfSxcbiAgICAgICAgICB0ZXJtLFxuICAgICAgICApLFxuICAgICAgaWRzOiBbSWQubWsoKV0sXG4gICAgfTtcblxuICBsZXQgdGVybV9vZiA9IChlZGl0b3I6IEVkaXRvci50KTogVGVybS5VRXhwLnQgPT5cbiAgICBNYWtlVGVybS5mcm9tX3ppcF9mb3Jfc2VtKGVkaXRvci5zdGF0ZS56aXBwZXIpIHw+IGZzdDtcblxuICBsZXQgc3RpdGNoMyA9IChlZDE6IEVkaXRvci50LCBlZDI6IEVkaXRvci50LCBlZDM6IEVkaXRvci50KSA9PlxuICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cChcbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cCh0ZXJtX29mKGVkMSksIHRlcm1fb2YoZWQyKSksXG4gICAgICB0ZXJtX29mKGVkMyksXG4gICAgKTtcblxuICBsZXQgc3RpdGNoX3Rlcm0gPSAoe2VkcywgX306IHN0YXRlKTogc3RpdGNoZWQoVGVybUJhc2UuVUV4cC50KSA9PiB7XG4gICAgbGV0IGluc3RydWN0b3IgPVxuICAgICAgc3RpdGNoMyhlZHMucHJlbHVkZSwgZWRzLmNvcnJlY3RfaW1wbCwgZWRzLmhpZGRlbl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHVzZXJfaW1wbF90ZXJtID0ge1xuICAgICAgbGV0IHlvdXJfaW1wbF90ZXJtID1cbiAgICAgICAgZWRzLnlvdXJfaW1wbCB8PiB0ZXJtX29mIHw+IHdyYXBfZmlsdGVyKEZpbHRlckFjdGlvbi5TdGVwKTtcbiAgICAgIGxldCBwcmVsdWRlX3Rlcm0gPVxuICAgICAgICBlZHMucHJlbHVkZSB8PiB0ZXJtX29mIHw+IHdyYXBfZmlsdGVyKEZpbHRlckFjdGlvbi5FdmFsKTtcbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cChwcmVsdWRlX3Rlcm0sIHlvdXJfaW1wbF90ZXJtKTtcbiAgICB9O1xuICAgIGxldCB0ZXN0X3ZhbGlkYXRpb25fdGVybSA9XG4gICAgICBzdGl0Y2gzKGVkcy5wcmVsdWRlLCBlZHMuY29ycmVjdF9pbXBsLCBlZHMueW91cl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHVzZXJfdGVzdHNfdGVybSA9XG4gICAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAodXNlcl9pbXBsX3Rlcm0sIHRlcm1fb2YoZWRzLnlvdXJfdGVzdHMudGVzdHMpKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlcm0gPVxuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHVzZXJfaW1wbF90ZXJtLCB0ZXJtX29mKGVkcy5oaWRkZW5fdGVzdHMudGVzdHMpKTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb246IHRlc3RfdmFsaWRhdGlvbl90ZXJtLFxuICAgICAgdXNlcl9pbXBsOiB1c2VyX2ltcGxfdGVybSxcbiAgICAgIHVzZXJfdGVzdHM6IHVzZXJfdGVzdHNfdGVybSxcbiAgICAgIC8vIGluc3RydWN0b3Igd29ya3MgaGVyZSBhcyBsb25nIGFzIHlvdSBkb24ndCBzaGFkb3cgYW55dGhpbmcgaW4gdGhlIHByZWx1ZGVcbiAgICAgIHByZWx1ZGU6IGluc3RydWN0b3IsXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICh0KTogVGVybUJhc2UuVUV4cC50ID0+XG4gICAgICAgICAgICBzdGl0Y2gzKGVkcy5wcmVsdWRlLCB0LmltcGwsIGVkcy55b3VyX3Rlc3RzLnRlc3RzKSxcbiAgICAgICAgICBlZHMuaGlkZGVuX2J1Z3MsXG4gICAgICAgICksXG4gICAgICBoaWRkZW5fdGVzdHM6IGhpZGRlbl90ZXN0c190ZXJtLFxuICAgIH07XG4gIH07XG4gIGxldCBzdGl0Y2hfdGVybSA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF90ZXJtKTtcblxuICB0eXBlIHN0aXRjaGVkX3N0YXRpY3MgPSBzdGl0Y2hlZChFZGl0b3IuQ2FjaGVkU3RhdGljcy50KTtcblxuICAvKiBNdWx0aXBsZSBzdGl0Y2hpbmdzIGFyZSBuZWVkZWQgZm9yIGVhY2ggZXhlcmNpc2VcbiAgICAgKHNlZSBjb21tZW50cyBpbiB0aGUgc3RpdGNoZWQgdHlwZSBhYm92ZSlcblxuICAgICBTdGl0Y2hpbmcgaXMgbmVjZXNzYXJ5IHRvIGNvbmNhdGVuYXRlIHRlcm1zXG4gICAgIGZyb20gZGlmZmVyZW50IGVkaXRvcnMsIHdoaWNoIGFyZSB0aGVuIHR5cGVjaGVja2VkLiAqL1xuICBsZXQgc3RpdGNoX3N0YXRpYyA9XG4gICAgICAoc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCB0OiBzdGl0Y2hlZChUZXJtQmFzZS5VRXhwLnQpKVxuICAgICAgOiBzdGl0Y2hlZF9zdGF0aWNzID0+IHtcbiAgICBsZXQgbWsgPSAodGVybTogVGVybUJhc2UuVUV4cC50KTogRWRpdG9yLkNhY2hlZFN0YXRpY3MudCA9PiB7XG4gICAgICAvL05PVEU6IHRoaXMgaXMgZXhwZW5zaXZlIGFuZCBfYWxtb3N0XyByZWR1bmRhbnQgdG8gdGhlIHN0YXRpY3MgaW4gRWRpdG9yXG4gICAgICBsZXQgaW5mb19tYXAgPSBTdGF0aWNzLm1rKHNldHRpbmdzLCBCdWlsdGlucy5jdHhfaW5pdCwgdGVybSk7XG4gICAgICB7dGVybSwgZXJyb3JfaWRzOiBTdGF0aWNzLk1hcC5lcnJvcl9pZHMoaW5mb19tYXApLCBpbmZvX21hcH07XG4gICAgfTtcbiAgICBsZXQgaW5zdHJ1Y3RvciA9IG1rKHQuaW5zdHJ1Y3Rvcik7XG4gICAge1xuICAgICAgdGVzdF92YWxpZGF0aW9uOiBtayh0LnRlc3RfdmFsaWRhdGlvbiksXG4gICAgICB1c2VyX2ltcGw6IG1rKHQudXNlcl9pbXBsKSxcbiAgICAgIHVzZXJfdGVzdHM6IG1rKHQudXNlcl90ZXN0cyksXG4gICAgICBwcmVsdWRlOiBpbnN0cnVjdG9yLCAvLyB3b3JrcyBhcyBsb25nIGFzIHlvdSBkb24ndCBzaGFkb3cgYW55dGhpbmcgaW4gdGhlIHByZWx1ZGVcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVnczogTGlzdC5tYXAobWssIHQuaGlkZGVuX2J1Z3MpLFxuICAgICAgaGlkZGVuX3Rlc3RzOiBtayh0LmhpZGRlbl90ZXN0cyksXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RpdGNoX3N0YXRpYyA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF9zdGF0aWMpO1xuXG4gIGxldCBwcmVsdWRlX2tleSA9IFwicHJlbHVkZVwiO1xuICBsZXQgdGVzdF92YWxpZGF0aW9uX2tleSA9IFwidGVzdF92YWxpZGF0aW9uXCI7XG4gIGxldCB1c2VyX2ltcGxfa2V5ID0gXCJ1c2VyX2ltcGxcIjtcbiAgbGV0IHVzZXJfdGVzdHNfa2V5ID0gXCJ1c2VyX3Rlc3RzXCI7XG4gIGxldCBpbnN0cnVjdG9yX2tleSA9IFwiaW5zdHJ1Y3RvclwiO1xuICBsZXQgaGlkZGVuX2J1Z3Nfa2V5ID0gbiA9PiBcImhpZGRlbl9idWdzX1wiICsrIHN0cmluZ19vZl9pbnQobik7XG4gIGxldCBoaWRkZW5fdGVzdHNfa2V5ID0gXCJoaWRkZW5fdGVzdHNcIjtcblxuICBsZXQga2V5X2Zvcl9zdGF0aWNzID0gKHN0YXRlOiBzdGF0ZSk6IHN0cmluZyA9PlxuICAgIHN3aXRjaCAoc3RhdGUucG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IHByZWx1ZGVfa2V5XG4gICAgfCBDb3JyZWN0SW1wbCA9PiBpbnN0cnVjdG9yX2tleVxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiB0ZXN0X3ZhbGlkYXRpb25fa2V5XG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IHVzZXJfdGVzdHNfa2V5XG4gICAgfCBZb3VySW1wbCA9PiB1c2VyX2ltcGxfa2V5XG4gICAgfCBIaWRkZW5CdWdzKGlkeCkgPT4gaGlkZGVuX2J1Z3Nfa2V5KGlkeClcbiAgICB8IEhpZGRlblRlc3RzID0+IGhpZGRlbl90ZXN0c19rZXlcbiAgICB9O1xuXG4gIGxldCBzcGxpY2VkX2VsYWJzID1cbiAgICAgIChzZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIHN0YXRlOiBzdGF0ZSlcbiAgICAgIDogbGlzdCgoTW9kZWxSZXN1bHRzLmtleSwgREhFeHAudCkpID0+IHtcbiAgICBsZXQge1xuICAgICAgdGVzdF92YWxpZGF0aW9uLFxuICAgICAgdXNlcl9pbXBsLFxuICAgICAgdXNlcl90ZXN0cyxcbiAgICAgIHByZWx1ZGU6IF8sXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICBoaWRkZW5fdGVzdHMsXG4gICAgfSA9XG4gICAgICBzdGl0Y2hfc3RhdGljKHNldHRpbmdzLCBzdGl0Y2hfdGVybShzdGF0ZSkpO1xuICAgIGxldCBlbGFiID0gKHM6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQpID0+XG4gICAgICBJbnRlcmZhY2UuZWxhYm9yYXRlKH5zZXR0aW5ncywgcy5pbmZvX21hcCwgcy50ZXJtKTtcbiAgICBbXG4gICAgICAodGVzdF92YWxpZGF0aW9uX2tleSwgZWxhYih0ZXN0X3ZhbGlkYXRpb24pKSxcbiAgICAgICh1c2VyX2ltcGxfa2V5LCBlbGFiKHVzZXJfaW1wbCkpLFxuICAgICAgKHVzZXJfdGVzdHNfa2V5LCBlbGFiKHVzZXJfdGVzdHMpKSxcbiAgICAgIChpbnN0cnVjdG9yX2tleSwgZWxhYihpbnN0cnVjdG9yKSksXG4gICAgICAoaGlkZGVuX3Rlc3RzX2tleSwgZWxhYihoaWRkZW5fdGVzdHMpKSxcbiAgICBdXG4gICAgQCAoXG4gICAgICBoaWRkZW5fYnVnc1xuICAgICAgfD4gTGlzdC5tYXBpKChuLCBoaWRkZW5fYnVnOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50KSA9PlxuICAgICAgICAgICAoaGlkZGVuX2J1Z3Nfa2V5KG4pLCBlbGFiKGhpZGRlbl9idWcpKVxuICAgICAgICAgKVxuICAgICk7XG4gIH07XG5cbiAgbW9kdWxlIER5bmFtaWNzSXRlbSA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBzdGF0aWNzOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50LFxuICAgICAgcmVzdWx0OiBNb2RlbFJlc3VsdC50LFxuICAgIH07XG4gICAgbGV0IGVtcHR5OiB0ID0ge3N0YXRpY3M6IEVkaXRvci5DYWNoZWRTdGF0aWNzLmVtcHR5LCByZXN1bHQ6IE5vRWxhYn07XG4gICAgbGV0IHN0YXRpY3Nfb25seSA9IChzdGF0aWNzOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50KTogdCA9PiB7XG4gICAgICBzdGF0aWNzLFxuICAgICAgcmVzdWx0OiBOb0VsYWIsXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RhdGljc19vZl9zdGljaGVkX2R5bmFtaWNzID1cbiAgICAgIChzdGF0ZTogc3RhdGUsIHM6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSk6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQgPT5cbiAgICBzd2l0Y2ggKHN0YXRlLnBvcykge1xuICAgIHwgUHJlbHVkZSA9PiBzLnByZWx1ZGUuc3RhdGljc1xuICAgIHwgQ29ycmVjdEltcGwgPT4gcy5pbnN0cnVjdG9yLnN0YXRpY3NcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gcy50ZXN0X3ZhbGlkYXRpb24uc3RhdGljc1xuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiBzLnVzZXJfdGVzdHMuc3RhdGljc1xuICAgIHwgWW91ckltcGwgPT4gcy51c2VyX2ltcGwuc3RhdGljc1xuICAgIHwgSGlkZGVuQnVncyhpZHgpID0+IExpc3QubnRoKHMuaGlkZGVuX2J1Z3MsIGlkeCkuc3RhdGljc1xuICAgIHwgSGlkZGVuVGVzdHMgPT4gcy5oaWRkZW5fdGVzdHMuc3RhdGljc1xuICAgIH07XG5cbiAgLyogR2l2ZW4gdGhlIGV2YWx1YXRpb24gcmVzdWx0cywgY29sbGVjdHMgdGhlXG4gICAgIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvciBwcm9kdWNpbmcgZHluYW1pY1xuICAgICBmZWVkYmFjayovXG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9XG4gICAgICAoXG4gICAgICAgIHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICByZXN1bHRzOiBvcHRpb24oTW9kZWxSZXN1bHRzLnQpLFxuICAgICAgKVxuICAgICAgOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkgPT4ge1xuICAgIGxldCB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgcHJlbHVkZSxcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9ID1cbiAgICAgIHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgbGV0IHJlc3VsdF9vZiA9IGtleSA9PlxuICAgICAgc3dpdGNoIChyZXN1bHRzKSB7XG4gICAgICB8IE5vbmUgPT4gTW9kZWxSZXN1bHQuTm9FbGFiXG4gICAgICB8IFNvbWUocmVzdWx0cykgPT5cbiAgICAgICAgTW9kZWxSZXN1bHRzLmxvb2t1cChyZXN1bHRzLCBrZXkpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1Nb2RlbFJlc3VsdC5Ob0VsYWIpXG4gICAgICB9O1xuXG4gICAgbGV0IHRlc3RfdmFsaWRhdGlvbiA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICBzdGF0aWNzOiB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgIHJlc3VsdDogcmVzdWx0X29mKHRlc3RfdmFsaWRhdGlvbl9rZXkpLFxuICAgICAgfTtcblxuICAgIGxldCB1c2VyX2ltcGwgPVxuICAgICAgRHluYW1pY3NJdGVtLntzdGF0aWNzOiB1c2VyX2ltcGwsIHJlc3VsdDogcmVzdWx0X29mKHVzZXJfaW1wbF9rZXkpfTtcblxuICAgIGxldCB1c2VyX3Rlc3RzID1cbiAgICAgIER5bmFtaWNzSXRlbS57c3RhdGljczogdXNlcl90ZXN0cywgcmVzdWx0OiByZXN1bHRfb2YodXNlcl90ZXN0c19rZXkpfTtcbiAgICBsZXQgcHJlbHVkZSA9IER5bmFtaWNzSXRlbS57c3RhdGljczogcHJlbHVkZSwgcmVzdWx0OiBOb0VsYWJ9O1xuICAgIGxldCBpbnN0cnVjdG9yID1cbiAgICAgIER5bmFtaWNzSXRlbS57c3RhdGljczogaW5zdHJ1Y3RvciwgcmVzdWx0OiByZXN1bHRfb2YoaW5zdHJ1Y3Rvcl9rZXkpfTtcbiAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgTGlzdC5tYXBpKFxuICAgICAgICAobiwgc3RhdGljczogRWRpdG9yLkNhY2hlZFN0YXRpY3MudCkgPT5cbiAgICAgICAgICBEeW5hbWljc0l0ZW0ue3N0YXRpY3MsIHJlc3VsdDogcmVzdWx0X29mKGhpZGRlbl9idWdzX2tleShuKSl9LFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICk7XG4gICAgbGV0IGhpZGRlbl90ZXN0cyA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICBzdGF0aWNzOiBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHJlc3VsdDogcmVzdWx0X29mKGhpZGRlbl90ZXN0c19rZXkpLFxuICAgICAgfTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9XG4gICAgICAoXG4gICAgICAgIHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICByZXN1bHRzOiBvcHRpb24oTW9kZWxSZXN1bHRzLnQpLFxuICAgICAgKVxuICAgICAgOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkgPT5cbiAgICBpZiAoc2V0dGluZ3Muc3RhdGljcyAmJiBzZXR0aW5ncy5keW5hbWljcykge1xuICAgICAgc3RpdGNoX2R5bmFtaWMoc2V0dGluZ3MsIHN0YXRlLCByZXN1bHRzKTtcbiAgICB9IGVsc2UgaWYgKHNldHRpbmdzLnN0YXRpY3MpIHtcbiAgICAgIGxldCB0ID0gc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICAgIHtcbiAgICAgICAgdGVzdF92YWxpZGF0aW9uOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudGVzdF92YWxpZGF0aW9uKSxcbiAgICAgICAgdXNlcl9pbXBsOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudXNlcl9pbXBsKSxcbiAgICAgICAgdXNlcl90ZXN0czogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LnVzZXJfdGVzdHMpLFxuICAgICAgICBpbnN0cnVjdG9yOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQuaW5zdHJ1Y3RvciksXG4gICAgICAgIHByZWx1ZGU6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5wcmVsdWRlKSxcbiAgICAgICAgaGlkZGVuX2J1Z3M6IExpc3QubWFwKER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHksIHQuaGlkZGVuX2J1Z3MpLFxuICAgICAgICBoaWRkZW5fdGVzdHM6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5oaWRkZW5fdGVzdHMpLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAge1xuICAgICAgICB0ZXN0X3ZhbGlkYXRpb246IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgdXNlcl9pbXBsOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIHVzZXJfdGVzdHM6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgaW5zdHJ1Y3RvcjogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICBwcmVsdWRlOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICAgIExpc3QuaW5pdChMaXN0Lmxlbmd0aChzdGF0ZS5lZHMuaGlkZGVuX2J1Z3MpLCBfID0+XG4gICAgICAgICAgICBEeW5hbWljc0l0ZW0uZW1wdHlcbiAgICAgICAgICApLFxuICAgICAgICBoaWRkZW5fdGVzdHM6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgIH07XG4gICAgfTtcbiAgbGV0IHN0aXRjaF9keW5hbWljID0gQ29yZS5NZW1vLmdlbmVyYWwoc3RpdGNoX2R5bmFtaWMpO1xuXG4gIC8vIE1vZHVsZSBFeHBvcnRcblxuICBsZXQgZWRpdG9yX3BwID0gKGZtdCwgZWRpdG9yOiBFZGl0b3IudCkgPT4ge1xuICAgIGxldCB6aXBwZXIgPSBlZGl0b3Iuc3RhdGUuemlwcGVyO1xuICAgIGxldCBzZXJpYWxpemF0aW9uID0gWmlwcGVyLnNob3coemlwcGVyKTtcbiAgICAvLyBsZXQgc3RyaW5nX2xpdGVyYWwgPSBcIlxcXCJcIiArKyBTdHJpbmcuZXNjYXBlZChzZXJpYWxpemF0aW9uKSArKyBcIlxcXCJcIjtcbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgc2VyaWFsaXphdGlvbik7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF9tb2R1bGUgPSAobW9kdWxlX25hbWUsIHtlZHMsIF99OiBzdGF0ZSkgPT4ge1xuICAgIGxldCBwcmVmaXggPVxuICAgICAgXCJsZXQgcHJvbXB0ID0gXCJcbiAgICAgICsrIG1vZHVsZV9uYW1lXG4gICAgICArKyBcIl9wcm9tcHQucHJvbXB0XFxuXCJcbiAgICAgICsrIFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcChlZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBwcmVmaXggKysgcmVjb3JkICsrIFwiXFxuXCI7XG4gICAgZGF0YTtcbiAgfTtcblxuICBsZXQgdHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAgPSAoZm10LCBlZGl0b3I6IEVkaXRvci50KSA9PiB7XG4gICAgbGV0IHppcHBlciA9IGVkaXRvci5zdGF0ZS56aXBwZXI7XG4gICAgbGV0IGNvZGUgPSBQcmludGVyLnRvX3N0cmluZ19iYXNpYyh6aXBwZXIpO1xuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcoZm10LCBcIlxcXCJcIiArKyBTdHJpbmcuZXNjYXBlZChjb2RlKSArKyBcIlxcXCJcIik7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF90cmFuc2l0aW9uYXJ5X21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IHByZWZpeCA9XG4gICAgICBcImxldCBwcm9tcHQgPSBcIlxuICAgICAgKysgbW9kdWxlX25hbWVcbiAgICAgICsrIFwiX3Byb21wdC5wcm9tcHRcXG5cIlxuICAgICAgKysgXCJsZXQgZXhlcmNpc2U6IEV4ZXJjaXNlLnNwZWMgPSBFeGVyY2lzZS50cmFuc2l0aW9uKFwiO1xuICAgIGxldCByZWNvcmQgPSBzaG93X3AodHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBwcmVmaXggKysgcmVjb3JkICsrIFwiKVxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF9ncmFkaW5nX21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IGhlYWRlciA9IG91dHB1dF9oZWFkZXJfZ3JhZGluZyhtb2R1bGVfbmFtZSk7XG4gICAgbGV0IHByZWZpeCA9IFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcChlZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBoZWFkZXIgKysgcHJlZml4ICsrIHJlY29yZCArKyBcIlxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IGJsYW5rX3NwZWMgPVxuICAgICAgKFxuICAgICAgICB+dGl0bGUsXG4gICAgICAgIH5tb2R1bGVfbmFtZSxcbiAgICAgICAgfnBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgfnJlcXVpcmVkX3Rlc3RzLFxuICAgICAgICB+cHJvdmlkZWRfdGVzdHMsXG4gICAgICAgIH5udW1fd3JvbmdfaW1wbHMsXG4gICAgICApID0+IHtcbiAgICBsZXQgcHJlbHVkZSA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IGNvcnJlY3RfaW1wbCA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IHlvdXJfdGVzdHNfdGVzdHMgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCB5b3VyX2ltcGwgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICBMaXN0LmluaXQoXG4gICAgICAgIG51bV93cm9uZ19pbXBscyxcbiAgICAgICAgaSA9PiB7XG4gICAgICAgICAgbGV0IHppcHBlciA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgICAgICAge2ltcGw6IHppcHBlciwgaGludDogXCJUT0RPOiBoaW50IFwiICsrIHN0cmluZ19vZl9pbnQoaSl9O1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlc3RzID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICB7XG4gICAgICB0aXRsZSxcbiAgICAgIHZlcnNpb246IDEsXG4gICAgICBtb2R1bGVfbmFtZSxcbiAgICAgIHByb21wdDogRXhlcmNpc2VFbnYuZGVmYXVsdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiB5b3VyX3Rlc3RzX3Rlc3RzLFxuICAgICAgICByZXF1aXJlZDogcmVxdWlyZWRfdGVzdHMsXG4gICAgICAgIHByb3ZpZGVkOiBwcm92aWRlZF90ZXN0cyxcbiAgICAgIH0sXG4gICAgICB5b3VyX2ltcGwsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0czoge1xuICAgICAgICB0ZXN0czogaGlkZGVuX3Rlc3RzX3Rlc3RzLFxuICAgICAgICBoaW50czogW10sXG4gICAgICB9LFxuICAgICAgc3ludGF4X3Rlc3RzOiBbXSxcbiAgICB9O1xuICB9O1xuXG4gIC8vIEZyb20gU3RvcmVcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgZXhlcmNpc2VfZXhwb3J0ID0ge1xuICAgIGN1cl9leGVyY2lzZToga2V5LFxuICAgIGV4ZXJjaXNlX2RhdGE6IGxpc3QoKGtleSwgcGVyc2lzdGVudF9zdGF0ZSkpLFxuICB9O1xuXG4gIGxldCBzZXJpYWxpemVfZXhlcmNpc2UgPSAoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgIHw+IHNleHBfb2ZfcGVyc2lzdGVudF9zdGF0ZVxuICAgIHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIH07XG5cbiAgbGV0IGRlc2VyaWFsaXplX2V4ZXJjaXNlID0gKGRhdGEsIH5zcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgZGF0YVxuICAgIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmdcbiAgICB8PiBwZXJzaXN0ZW50X3N0YXRlX29mX3NleHBcbiAgICB8PiB1bnBlcnNpc3Rfc3RhdGUofnNwZWMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICB9O1xuXG4gIGxldCBkZXNlcmlhbGl6ZV9leGVyY2lzZV9leHBvcnQgPSBkYXRhID0+IHtcbiAgICBkYXRhIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gZXhlcmNpc2VfZXhwb3J0X29mX3NleHA7XG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIFNleHBsaWIuU3RkO1xub3BlbiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LlByaW1pdGl2ZXM7XG5cbm1vZHVsZSBGID0gKEV4ZXJjaXNlRW52OiBFeGVyY2lzZS5FeGVyY2lzZUVudikgPT4ge1xuICBvcGVuIEV4ZXJjaXNlLkYoRXhlcmNpc2VFbnYpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwZXJjZW50YWdlID0gZmxvYXQ7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb2ludHMgPSBmbG9hdDtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHNjb3JlID0gKHBvaW50cywgcG9pbnRzKTtcblxuICBsZXQgc2NvcmVfb2ZfcGVyY2VudCA9IChwZXJjZW50LCBtYXhfcG9pbnRzKSA9PiB7XG4gICAgbGV0IG1heF9wb2ludHMgPSBmbG9hdF9vZl9pbnQobWF4X3BvaW50cyk7XG4gICAgKHBlcmNlbnQgKi4gbWF4X3BvaW50cywgbWF4X3BvaW50cyk7XG4gIH07XG5cbiAgbW9kdWxlIFRlc3RWYWxpZGF0aW9uUmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIHRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpLFxuICAgICAgcmVxdWlyZWQ6IGludCxcbiAgICAgIHByb3ZpZGVkOiBpbnQsXG4gICAgfTtcblxuICAgIGxldCBtayA9IChlZHM6IGVkcywgdGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpID0+IHtcbiAgICAgIHtcbiAgICAgICAgdGVzdF9yZXN1bHRzLFxuICAgICAgICByZXF1aXJlZDogZWRzLnlvdXJfdGVzdHMucmVxdWlyZWQsXG4gICAgICAgIHByb3ZpZGVkOiBlZHMueW91cl90ZXN0cy5wcm92aWRlZCxcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCk6IHBlcmNlbnRhZ2UgPT4ge1xuICAgICAgc3dpdGNoIChyZXBvcnQudGVzdF9yZXN1bHRzKSB7XG4gICAgICB8IE5vbmUgPT4gMC4wXG4gICAgICB8IFNvbWUodGVzdF9yZXN1bHRzKSA9PlxuICAgICAgICBsZXQgbnVtX3Rlc3RzID0gZmxvYXRfb2ZfaW50KHRlc3RfcmVzdWx0cy50b3RhbCk7XG4gICAgICAgIGxldCByZXF1aXJlZCA9IGZsb2F0X29mX2ludChyZXBvcnQucmVxdWlyZWQpO1xuICAgICAgICBsZXQgcHJvdmlkZWQgPSBmbG9hdF9vZl9pbnQocmVwb3J0LnByb3ZpZGVkKTtcbiAgICAgICAgbGV0IG51bV9wYXNzaW5nID0gZmxvYXRfb2ZfaW50KHRlc3RfcmVzdWx0cy5wYXNzaW5nKTtcblxuICAgICAgICByZXF1aXJlZCAtLiBwcm92aWRlZCA8PSAwLjAgfHwgbnVtX3Rlc3RzIDw9IDAuMFxuICAgICAgICAgID8gMC4wXG4gICAgICAgICAgOiBudW1fcGFzc2luZ1xuICAgICAgICAgICAgLy4gbnVtX3Rlc3RzXG4gICAgICAgICAgICAqLiAoXG4gICAgICAgICAgICAgIEZsb2F0Lm1heChcbiAgICAgICAgICAgICAgICAwLixcbiAgICAgICAgICAgICAgICBGbG9hdC5taW4obnVtX3Rlc3RzIC0uIHByb3ZpZGVkLCByZXF1aXJlZCAtLiBwcm92aWRlZCksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLy4gKHJlcXVpcmVkIC0uIHByb3ZpZGVkKVxuICAgICAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGxldCB0ZXN0X3N1bW1hcnlfc3RyID0gKHRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCkgPT4ge1xuICAgICAgVGVzdFJlc3VsdHMucmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgICAgICB+bj10ZXN0X3Jlc3VsdHMudG90YWwsXG4gICAgICAgIH5wPXRlc3RfcmVzdWx0cy5mYWlsaW5nLFxuICAgICAgICB+cT10ZXN0X3Jlc3VsdHMudW5maW5pc2hlZCxcbiAgICAgICAgfm5fc3RyPVwidGVzdFwiLFxuICAgICAgICB+bnNfc3RyPVwidGVzdHNcIixcbiAgICAgICAgfnBfc3RyPVwiZmFpbGluZ1wiLFxuICAgICAgICB+cV9zdHI9XCJpbmRldGVybWluYXRlXCIsXG4gICAgICAgIH5yX3N0cj1cInZhbGlkXCIsXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIE11dGF0aW9uVGVzdGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7cmVzdWx0czogbGlzdCgoVGVzdFN0YXR1cy50LCBzdHJpbmcpKX07XG5cbiAgICBsZXQgaGlkZGVuX2J1Z19zdGF0dXMgPVxuICAgICAgICAoXG4gICAgICAgICAgdGVzdF92YWxpZGF0aW9uX2RhdGE6IER5bmFtaWNzSXRlbS50LFxuICAgICAgICAgIGhpZGRlbl9idWdfZGF0YTogRHluYW1pY3NJdGVtLnQsXG4gICAgICAgIClcbiAgICAgICAgOiBUZXN0U3RhdHVzLnQgPT4ge1xuICAgICAgc3dpdGNoIChcbiAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHRlc3RfdmFsaWRhdGlvbl9kYXRhLnJlc3VsdCksXG4gICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhoaWRkZW5fYnVnX2RhdGEucmVzdWx0KSxcbiAgICAgICkge1xuICAgICAgfCAoTm9uZSwgXylcbiAgICAgIHwgKF8sIE5vbmUpID0+IEluZGV0XG4gICAgICB8IChTb21lKHRlc3RfdmFsaWRhdGlvbl9kYXRhKSwgU29tZShoaWRkZW5fYnVnX2RhdGEpKSA9PlxuICAgICAgICBsZXQgdmFsaWRhdGlvbl90ZXN0X21hcCA9IHRlc3RfdmFsaWRhdGlvbl9kYXRhLnRlc3RfbWFwO1xuICAgICAgICBsZXQgaGlkZGVuX2J1Z190ZXN0X21hcCA9IGhpZGRlbl9idWdfZGF0YS50ZXN0X21hcDtcblxuICAgICAgICBsZXQgZm91bmQgPVxuICAgICAgICAgIGhpZGRlbl9idWdfdGVzdF9tYXBcbiAgICAgICAgICB8PiBMaXN0LmZpbmRfb3B0KCgoaWQsIGluc3RhbmNlX3JlcG9ydHMpKSA9PiB7XG4gICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gVGVzdE1hcC5qb2ludF9zdGF0dXMoaW5zdGFuY2VfcmVwb3J0cyk7XG4gICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLlBhc3NcbiAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5JbmRldCA9PiBmYWxzZVxuICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkZhaWwgPT5cbiAgICAgICAgICAgICAgICAgbGV0IHZhbGlkYXRpb25fdGVzdF9yZXBvcnRzID1cbiAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uX3Rlc3RfbWFwIHw+IFRlc3RNYXAubG9va3VwKGlkKTtcbiAgICAgICAgICAgICAgICAgc3dpdGNoICh2YWxpZGF0aW9uX3Rlc3RfcmVwb3J0cykge1xuICAgICAgICAgICAgICAgICB8IE5vbmUgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgfCBTb21lKHJlcG9ydHMpID0+XG4gICAgICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IFRlc3RNYXAuam9pbnRfc3RhdHVzKHJlcG9ydHMpO1xuICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLlBhc3MgPT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5GYWlsXG4gICAgICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkluZGV0ID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgfSk7XG4gICAgICAgIHN3aXRjaCAoZm91bmQpIHtcbiAgICAgICAgfCBOb25lID0+IEZhaWxcbiAgICAgICAgfCBTb21lKF8pID0+IFBhc3NcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTsgLy8gZm9yIGVhY2ggaGlkZGVuIGJ1Z1xuICAgIC8vICAgaW4gdGhlIHRlc3QgcmVzdWx0cyBkYXRhLCBmaW5kIGEgdGVzdCBJRCB0aGF0IHBhc3NlcyB0ZXN0IHZhbGlkYXRpb24gYnV0IGZhaWxzIGFnYWluc3RcblxuICAgIGxldCBtayA9XG4gICAgICAgIChcbiAgICAgICAgICB+dGVzdF92YWxpZGF0aW9uOiBEeW5hbWljc0l0ZW0udCxcbiAgICAgICAgICB+aGlkZGVuX2J1Z3Nfc3RhdGU6IGxpc3Qod3JvbmdfaW1wbChFZGl0b3IudCkpLFxuICAgICAgICAgIH5oaWRkZW5fYnVnczogbGlzdChEeW5hbWljc0l0ZW0udCksXG4gICAgICAgIClcbiAgICAgICAgOiB0ID0+IHtcbiAgICAgIGxldCByZXN1bHRzID1cbiAgICAgICAgTGlzdC5tYXAoaGlkZGVuX2J1Z19zdGF0dXModGVzdF92YWxpZGF0aW9uKSwgaGlkZGVuX2J1Z3MpO1xuICAgICAgbGV0IGhpbnRzID1cbiAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgKHdyb25nX2ltcGw6IHdyb25nX2ltcGwoRWRpdG9yLnQpKSA9PiB3cm9uZ19pbXBsLmhpbnQsXG4gICAgICAgICAgaGlkZGVuX2J1Z3Nfc3RhdGUsXG4gICAgICAgICk7XG4gICAgICBsZXQgcmVzdWx0cyA9IExpc3QuY29tYmluZShyZXN1bHRzLCBoaW50cyk7XG4gICAgICB7cmVzdWx0czogcmVzdWx0c307XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCk6IHBlcmNlbnRhZ2UgPT4ge1xuICAgICAgbGV0IHJlc3VsdHMgPSByZXBvcnQucmVzdWx0cztcbiAgICAgIGxldCBudW1fd3JvbmdfaW1wbHMgPSBMaXN0Lmxlbmd0aChyZXN1bHRzKTtcbiAgICAgIGxldCBudW1fcGFzc2VkID1cbiAgICAgICAgcmVzdWx0c1xuICAgICAgICB8PiBMaXN0LmZpbmRfYWxsKCgoc3RhdHVzLCBfKSkgPT4gc3RhdHVzID09IFRlc3RTdGF0dXMuUGFzcylcbiAgICAgICAgfD4gTGlzdC5sZW5ndGg7XG4gICAgICBzd2l0Y2ggKG51bV93cm9uZ19pbXBscykge1xuICAgICAgfCAwID0+IDEuMFxuICAgICAgfCBfID0+IGZsb2F0X29mX2ludChudW1fcGFzc2VkKSAvLiBmbG9hdF9vZl9pbnQobnVtX3dyb25nX2ltcGxzKVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgLy8gVE9ETyBtb3ZlIHRvIHNlcGFyYXRlIG1vZHVsZVxuXG4gICAgbGV0IHN1bW1hcnlfc3RyID0gKH50b3RhbCwgfmZvdW5kKTogc3RyaW5nID0+IHtcbiAgICAgIFRlc3RSZXN1bHRzLnJlc3VsdF9zdW1tYXJ5X3N0cihcbiAgICAgICAgfm49dG90YWwsXG4gICAgICAgIH5wPWZvdW5kLFxuICAgICAgICB+cT0wLFxuICAgICAgICB+bl9zdHI9XCJidWdcIixcbiAgICAgICAgfm5zX3N0cj1cImJ1Z3NcIixcbiAgICAgICAgfnBfc3RyPVwiZXhwb3NlZFwiLFxuICAgICAgICB+cV9zdHI9XCJcIixcbiAgICAgICAgfnJfc3RyPVwidW5yZXZlYWxlZFwiLFxuICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBTeW50YXhSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgaGludGVkX3Jlc3VsdHM6IGxpc3QoKGJvb2wsIGhpbnQpKSxcbiAgICAgIHBlcmNlbnRhZ2UsXG4gICAgfTtcblxuICAgIGxldCBtayA9ICh+eW91cl9pbXBsOiBFZGl0b3IudCwgfnRlc3RzOiBzeW50YXhfdGVzdHMpOiB0ID0+IHtcbiAgICAgIGxldCB1c2VyX2ltcGxfdGVybSA9XG4gICAgICAgIE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oeW91cl9pbXBsLnN0YXRlLnppcHBlcikgfD4gZnN0O1xuXG4gICAgICBsZXQgcHJlZGljYXRlcyA9XG4gICAgICAgIExpc3QubWFwKCgoXywgcCkpID0+IFN5bnRheFRlc3QucHJlZGljYXRlX2ZuKHApLCB0ZXN0cyk7XG4gICAgICBsZXQgaGludHMgPSBMaXN0Lm1hcCgoKGgsIF8pKSA9PiBoLCB0ZXN0cyk7XG4gICAgICBsZXQgc3ludGF4X3Jlc3VsdHMgPSBTeW50YXhUZXN0LmNoZWNrKHVzZXJfaW1wbF90ZXJtLCBwcmVkaWNhdGVzKTtcblxuICAgICAge1xuICAgICAgICBoaW50ZWRfcmVzdWx0czpcbiAgICAgICAgICBMaXN0Lm1hcDIoKHIsIGgpID0+IChyLCBoKSwgc3ludGF4X3Jlc3VsdHMucmVzdWx0cywgaGludHMpLFxuICAgICAgICBwZXJjZW50YWdlOiBzeW50YXhfcmVzdWx0cy5wZXJjZW50YWdlLFxuICAgICAgfTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBJbXBsR3JhZGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBoaW50czogbGlzdChzdHJpbmcpLFxuICAgICAgdGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCksXG4gICAgICBoaW50ZWRfcmVzdWx0czogbGlzdCgoVGVzdFN0YXR1cy50LCBzdHJpbmcpKSxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKH5oaW50czogbGlzdChzdHJpbmcpLCB+dGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpOiB0ID0+IHtcbiAgICAgIGxldCBoaW50ZWRfcmVzdWx0cyA9XG4gICAgICAgIHN3aXRjaCAodGVzdF9yZXN1bHRzKSB7XG4gICAgICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+XG4gICAgICAgICAgbGV0IHN0YXR1c2VzID0gdGVzdF9yZXN1bHRzLnN0YXR1c2VzO1xuICAgICAgICAgIFV0aWwuTGlzdFV0aWwuemlwX2RlZmF1bHRzKFxuICAgICAgICAgICAgc3RhdHVzZXMsXG4gICAgICAgICAgICBoaW50cyxcbiAgICAgICAgICAgIEhhejNsY29yZS5UZXN0U3RhdHVzLkluZGV0LFxuICAgICAgICAgICAgXCJObyBoaW50IGF2YWlsYWJsZS5cIixcbiAgICAgICAgICApO1xuXG4gICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgIFV0aWwuTGlzdFV0aWwuemlwX2RlZmF1bHRzKFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBoaW50cyxcbiAgICAgICAgICAgIEhhejNsY29yZS5UZXN0U3RhdHVzLkluZGV0LFxuICAgICAgICAgICAgXCJFeGVyY2lzZSBjb25maWd1cmF0aW9uIGVycm9yOiBIaW50IHdpdGhvdXQgYSB0ZXN0LlwiLFxuICAgICAgICAgIClcbiAgICAgICAgfTtcbiAgICAgIHtoaW50cywgdGVzdF9yZXN1bHRzLCBoaW50ZWRfcmVzdWx0c307XG4gICAgfTtcblxuICAgIGxldCB0b3RhbCA9IChyZXBvcnQ6IHQpID0+IExpc3QubGVuZ3RoKHJlcG9ydC5oaW50ZWRfcmVzdWx0cyk7XG4gICAgbGV0IG51bV9wYXNzZWQgPSAocmVwb3J0OiB0KSA9PiB7XG4gICAgICByZXBvcnQuaGludGVkX3Jlc3VsdHNcbiAgICAgIHw+IExpc3QuZmluZF9hbGwoKChzdGF0dXMsIF8pKSA9PiBzdGF0dXMgPT0gVGVzdFN0YXR1cy5QYXNzKVxuICAgICAgfD4gTGlzdC5sZW5ndGg7XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCwgc3ludGF4X3JlcG9ydDogU3ludGF4UmVwb3J0LnQpOiBwZXJjZW50YWdlID0+IHtcbiAgICAgIHN5bnRheF9yZXBvcnQucGVyY2VudGFnZVxuICAgICAgKi4gKGZsb2F0X29mX2ludChudW1fcGFzc2VkKHJlcG9ydCkpIC8uIGZsb2F0X29mX2ludCh0b3RhbChyZXBvcnQpKSk7XG4gICAgfTtcblxuICAgIGxldCB0ZXN0X3N1bW1hcnlfc3RyID0gKHRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCkgPT4ge1xuICAgICAgVGVzdFJlc3VsdHMucmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgICAgICB+bj10ZXN0X3Jlc3VsdHMudG90YWwsXG4gICAgICAgIH5wPXRlc3RfcmVzdWx0cy5mYWlsaW5nLFxuICAgICAgICB+cT10ZXN0X3Jlc3VsdHMudW5maW5pc2hlZCxcbiAgICAgICAgfm5fc3RyPVwidGVzdFwiLFxuICAgICAgICB+bnNfc3RyPVwidGVzdHNcIixcbiAgICAgICAgfnBfc3RyPVwiZmFpbGluZ1wiLFxuICAgICAgICB+cV9zdHI9XCJpbmRldGVybWluYXRlXCIsXG4gICAgICAgIH5yX3N0cj1cInZhbGlkXCIsXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIEdyYWRpbmdSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgdGVzdF92YWxpZGF0aW9uX3JlcG9ydDogVGVzdFZhbGlkYXRpb25SZXBvcnQudCxcbiAgICAgIG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0OiBNdXRhdGlvblRlc3RpbmdSZXBvcnQudCxcbiAgICAgIHN5bnRheF9yZXBvcnQ6IFN5bnRheFJlcG9ydC50LFxuICAgICAgaW1wbF9ncmFkaW5nX3JlcG9ydDogSW1wbEdyYWRpbmdSZXBvcnQudCxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKGVkczogZWRzLCB+c3RpdGNoZWRfZHluYW1pY3M6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSkgPT4ge1xuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uOiBlZHMucG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgdGVzdF92YWxpZGF0aW9uX3JlcG9ydDpcbiAgICAgICAgVGVzdFZhbGlkYXRpb25SZXBvcnQubWsoXG4gICAgICAgICAgZWRzLFxuICAgICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhzdGl0Y2hlZF9keW5hbWljcy50ZXN0X3ZhbGlkYXRpb24ucmVzdWx0KSxcbiAgICAgICAgKSxcbiAgICAgIG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0OlxuICAgICAgICBNdXRhdGlvblRlc3RpbmdSZXBvcnQubWsoXG4gICAgICAgICAgfnRlc3RfdmFsaWRhdGlvbj1zdGl0Y2hlZF9keW5hbWljcy50ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgICAgfmhpZGRlbl9idWdzX3N0YXRlPWVkcy5oaWRkZW5fYnVncyxcbiAgICAgICAgICB+aGlkZGVuX2J1Z3M9c3RpdGNoZWRfZHluYW1pY3MuaGlkZGVuX2J1Z3MsXG4gICAgICAgICksXG4gICAgICBzeW50YXhfcmVwb3J0OlxuICAgICAgICBTeW50YXhSZXBvcnQubWsofnlvdXJfaW1wbD1lZHMueW91cl9pbXBsLCB+dGVzdHM9ZWRzLnN5bnRheF90ZXN0cyksXG4gICAgICBpbXBsX2dyYWRpbmdfcmVwb3J0OlxuICAgICAgICBJbXBsR3JhZGluZ1JlcG9ydC5tayhcbiAgICAgICAgICB+aGludHM9ZWRzLmhpZGRlbl90ZXN0cy5oaW50cyxcbiAgICAgICAgICB+dGVzdF9yZXN1bHRzPVxuICAgICAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHN0aXRjaGVkX2R5bmFtaWNzLmhpZGRlbl90ZXN0cy5yZXN1bHQpLFxuICAgICAgICApLFxuICAgIH07XG5cbiAgICBsZXQgb3ZlcmFsbF9zY29yZSA9XG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgICAgICB0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0LFxuICAgICAgICAgICAgbXV0YXRpb25fdGVzdGluZ19yZXBvcnQsXG4gICAgICAgICAgICBzeW50YXhfcmVwb3J0LFxuICAgICAgICAgICAgaW1wbF9ncmFkaW5nX3JlcG9ydCxcbiAgICAgICAgICAgIF8sXG4gICAgICAgICAgfTogdCxcbiAgICAgICAgKVxuICAgICAgICA6IHNjb3JlID0+IHtcbiAgICAgIGxldCAodHZfcG9pbnRzLCB0dl9tYXgpID1cbiAgICAgICAgc2NvcmVfb2ZfcGVyY2VudChcbiAgICAgICAgICBUZXN0VmFsaWRhdGlvblJlcG9ydC5wZXJjZW50YWdlKHRlc3RfdmFsaWRhdGlvbl9yZXBvcnQpLFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbi50ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgICk7XG4gICAgICBsZXQgKG10X3BvaW50cywgbXRfbWF4KSA9XG4gICAgICAgIHNjb3JlX29mX3BlcmNlbnQoXG4gICAgICAgICAgTXV0YXRpb25UZXN0aW5nUmVwb3J0LnBlcmNlbnRhZ2UobXV0YXRpb25fdGVzdGluZ19yZXBvcnQpLFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbi5tdXRhdGlvbl90ZXN0aW5nLFxuICAgICAgICApO1xuICAgICAgbGV0IChpZ19wb2ludHMsIGlnX21heCkgPVxuICAgICAgICBzY29yZV9vZl9wZXJjZW50KFxuICAgICAgICAgIEltcGxHcmFkaW5nUmVwb3J0LnBlcmNlbnRhZ2UoaW1wbF9ncmFkaW5nX3JlcG9ydCwgc3ludGF4X3JlcG9ydCksXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLmltcGxfZ3JhZGluZyxcbiAgICAgICAgKTtcbiAgICAgIGxldCB0b3RhbF9wb2ludHMgPSB0dl9wb2ludHMgKy4gbXRfcG9pbnRzICsuIGlnX3BvaW50cztcbiAgICAgIGxldCBtYXhfcG9pbnRzID0gdHZfbWF4ICsuIG10X21heCArLiBpZ19tYXg7XG4gICAgICAodG90YWxfcG9pbnRzLCBtYXhfcG9pbnRzKTtcbiAgICB9O1xuICB9O1xufTtcbiIsIm1vZHVsZSBFeGVyY2lzZUVudiA9IHtcbiAgdHlwZSBub2RlID0gdW5pdDtcbiAgbGV0IGRlZmF1bHQgPSAoKTtcbiAgbGV0IG91dHB1dF9oZWFkZXIgPSBFeGVyY2lzZS5vdXRwdXRfaGVhZGVyX2dyYWRpbmc7XG59O1xuXG5tb2R1bGUgRXhlcmNpc2UgPSBFeGVyY2lzZS5GKEV4ZXJjaXNlRW52KTtcblxubW9kdWxlIEdyYWRpbmcgPSBHcmFkaW5nLkYoRXhlcmNpc2VFbnYpO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMvMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgZGVidWcgPVxuICBsZXQgX0RFQlVHID1cbiAgICB0cnlcbiAgICAgIFNvbWUoU3lzLmdldGVudiBcIkRFQlVHXCIpXG4gICAgd2l0aCBfIC0+IE5vbmVcbiAgYW5kIF9PTURfREVCVUcgPVxuICAgIHRyeVxuICAgICAgU29tZShTeXMuZ2V0ZW52IFwiT01EX0RFQlVHXCIpXG4gICAgd2l0aCBfIC0+IE5vbmVcbiAgaW5cbiAgbWF0Y2ggX0RFQlVHLCBfT01EX0RFQlVHIHdpdGhcbiAgfCBfLCBTb21lIFwiZmFsc2VcIiAtPlxuICAgICBmYWxzZVxuICB8IFNvbWUgXywgTm9uZSAtPlxuICAgICBlcHJpbnRmIFwib21kOiBkZWJ1ZyBtb2RlIGFjdGl2YXRlZCBiZWNhdXNlIERFQlVHIGlzIHNldCwgXFxcbiAgICAgICAgICAgICAgeW91IGNhbiBkZWFjdGl2YXRlIHRoZSBtb2RlIGJ5IHVuc2V0dGluZyBERUJVRyBcXFxuICAgICAgICAgICAgICBvciBieSBzZXR0aW5nIE9NRF9ERUJVRyB0byB0aGUgc3RyaW5nIFxcXCJmYWxzZVxcXCIuXFxuJSFcIjtcbiAgICAgdHJ1ZVxuICB8IE5vbmUsIE5vbmUgLT5cbiAgICAgZmFsc2VcbiAgfCBfLCBTb21lIF8gLT5cbiAgICAgZXByaW50ZiBcIm9tZDogZGVidWcgbW9kZSBhY3RpdmF0ZWQgYmVjYXVzZSBPTURfREVCVUcgaXMgc2V0XG4gICAgICAgICAgICAgIHRvIGEgdmFsdWUgdGhhdCBpc24ndCB0aGUgc3RyaW5nIFxcXCJmYWxzZVxcXCIuXFxuJSFcIjtcbiAgICAgdHJ1ZVxuXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nXG5cbmxldCB3YXJuID8od2U9ZmFsc2UpIG1zZyA9XG4gIGlmIHdlIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgbXNnKVxuICBlbHNlXG4gICAgZXByaW50ZiBcIihPTUQpIFdhcm5pbmc6ICVzXFxuJSFcIiBtc2dcblxuXG5sZXQgdHJhY2tmaXggPVxuICB0cnlcbiAgICBpZ25vcmUoU3lzLmdldGVudiBcIk9NRF9GSVhcIik7XG4gICAgZXByaW50ZiBcIm9tZDogdHJhY2tpbmcgbW9kZSBhY3RpdmF0ZWQ6IHRva2VuIGxpc3QgYXJlIHZlcnkgb2Z0ZW4gY2hlY2tlZCwgXFxcbiAgICAgICAgICAgICBpdCBtaWdodCB0YWtlIGEgKnZlcnkqIGxvbmcgdGltZSBpZiB5b3VyIGlucHV0IGlzIGxhcmdlLlxcbiUhXCI7XG4gICAgdHJ1ZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGZhbHNlXG5cbmxldCBfID0gaWYgZGVidWcgdGhlbiBQcmludGV4Yy5yZWNvcmRfYmFja3RyYWNlIHRydWVcblxubGV0IHJhaXNlID1cbiAgaWYgZGVidWcgdGhlblxuICAgIChmdW4gZSAtPlxuICAgICAgIGVwcmludGYgXCIoT01EKSBFeGNlcHRpb24gcmFpc2VkOiAlc1xcbiUhXCIgKFByaW50ZXhjLnRvX3N0cmluZyBlKTtcbiAgICAgICByYWlzZSBlKVxuICBlbHNlXG4gICAgcmFpc2VcblxubW9kdWxlIFN0cmluZ1NldCA6IHNpZ1xuICBpbmNsdWRlIFNldC5TIHdpdGggdHlwZSBlbHQgPSBzdHJpbmdcbiAgdmFsIG9mX2xpc3QgOiBlbHQgbGlzdCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXQuTWFrZShTdHJpbmcpXG4gIGxldCBvZl9saXN0IGwgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIHIgZSAtPiBhZGQgZSByKSBlbXB0eSBsXG5lbmRcblxuXG50eXBlICdhIHNwbGl0ID0gJ2EgbGlzdCAtPiAnYSBzcGxpdF9hY3Rpb25cbmFuZCAnYSBzcGxpdF9hY3Rpb24gPVxuICB8IENvbnRpbnVlXG4gIHwgQ29udGludWVfd2l0aCBvZiAnYSBsaXN0ICogJ2EgbGlzdFxuICB8IFNwbGl0IG9mICdhIGxpc3QgKiAnYSBsaXN0XG5cblxubGV0IGZzcGxpdF9yZXYgPyhleGNsPShmdW4gXyAtPiBmYWxzZSkpIH4oZjonYSBzcGxpdCkgbFxuICAgIDogKCdhIGxpc3QgKiAnYSBsaXN0KSBvcHRpb24gPVxuICBsZXQgcmVjIGxvb3AgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGYgW10gd2l0aFxuICAgICAgICAgIHwgU3BsaXQobGVmdCwgcmlnaHQpIC0+ICAgICAgU29tZShsZWZ0QGFjY3UsIHJpZ2h0KVxuICAgICAgICAgIHwgQ29udGludWVfd2l0aChsZWZ0LCB0bCkgLT4gbG9vcCAobGVmdEBhY2N1KSB0bFxuICAgICAgICAgIHwgQ29udGludWUgLT4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICBlbmRcbiAgICB8IGU6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgZXhjbCBsIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2UgbWF0Y2ggZiBsIHdpdGhcbiAgICAgICAgICB8IFNwbGl0KGxlZnQsIHJpZ2h0KSAtPiAgICAgIFNvbWUobGVmdEBhY2N1LCByaWdodClcbiAgICAgICAgICB8IENvbnRpbnVlX3dpdGgobGVmdCwgdGwpIC0+IGxvb3AgKGxlZnRAYWNjdSkgdGxcbiAgICAgICAgICB8IENvbnRpbnVlIC0+ICAgICAgICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIHRsXG4gIGluIGxvb3AgW10gbFxuXG5sZXQgZnNwbGl0ID8oZXhjbD0oZnVuIF8gLT4gZmFsc2UpKSB+ZiBsID1cbiAgbWF0Y2ggZnNwbGl0X3JldiB+ZXhjbDpleGNsIH5mOmYgbCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUocmV2LCBsKSAtPiBTb21lKExpc3QucmV2IHJldiwgbClcblxubGV0IGlkX29mX3N0cmluZyBpZHMgcyA9XG4gIGxldCBuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBvdXQgPSBCdWZmZXIuY3JlYXRlIDAgaW5cbiAgKCogUHV0IFtzXSBpbnRvIFtiXSwgcmVwbGFjaW5nIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3aXRoIGRhc2hlcy4gKilcbiAgbGV0IHJlYyBsb29wIHN0YXJ0ZWQgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiAoKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG91dCBjIDtcbiAgICAgICAgbG9vcCB0cnVlIChpICsgMSlcbiAgICAgICgqIERvbid0IHdhbnQgdG8gc3RhcnQgd2l0aCBkYXNoZXMuICopXG4gICAgICB8IF8gd2hlbiBub3Qgc3RhcnRlZCAtPlxuICAgICAgICBsb29wIGZhbHNlIChpICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb3V0ICctJyA7XG4gICAgICAgIGxvb3AgZmFsc2UgKGkgKyAxKVxuICBpblxuICBsb29wIGZhbHNlIDAgO1xuICBsZXQgcycgPSBCdWZmZXIuY29udGVudHMgb3V0IGluXG4gIGlmIHMnID0gXCJcIiB0aGVuIFwiXCJcbiAgZWxzZVxuICAgICgqIEZpbmQgb3V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gW3MnXSB0aGF0IGlzbid0IGEgZGFzaC4gKilcbiAgICBsZXQgbGFzdF90cmFpbGluZyA9IFxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpIDwgMCB8fCBzJy5baV0gPD4gJy0nIHRoZW4gaVxuICAgICAgICBlbHNlIGxvb3AgKGkgLSAxKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKFN0cmluZy5sZW5ndGggcycgLSAxKVxuICAgIGluXG4gICAgKCogVHJpbSB0cmFpbGluZyBkYXNoZXMuICopXG4gICAgaWRzI21hbmdsZSBAQCBTdHJpbmcuc3ViIHMnIDAgKGxhc3RfdHJhaWxpbmcgKyAxKVxuXG4oKiBvbmx5IGNvbnZlcnQgd2hlbiBcIm5lY2Vzc2FyeVwiICopXG5sZXQgaHRtbGVudGl0aWVzID8obWQ9ZmFsc2UpIHMgPVxuICBsZXQgbW9kdWxlIEJyZWFrID0gc3RydWN0IGV4Y2VwdGlvbiBCcmVhayBlbmQgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICgpXG4gICAgZWxzZVxuICAgICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAoICcwJyAuLiAnOScgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyApIGFzIGMgLT4gQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgICB8ICdcIicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZxdW90O1wiXG4gICAgICAgIHwgJ1xcJycgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiYjMzk7XCJcbiAgICAgICAgfCAnJicgLT5cbiAgICAgICAgICAgIGlmIG1kIHRoZW5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG1hdGNoIHMuW2krMV0gd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnIycgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmZiBqID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzLltqXSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IGZmIChzdWNjIGopXG4gICAgICAgICAgICAgICAgICAgICAgfCAnOycgLT4gKClcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZmYgKGkrMilcbiAgICAgICAgICAgICAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmZiBqID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzLltqXSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPiBmZiAoc3VjYyBqKVxuICAgICAgICAgICAgICAgICAgICAgIHwgJzsnIC0+ICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIEJyZWFrLkJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGZmIChpKzIpXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJlwiXG4gICAgICAgICAgICAgICAgd2l0aCBfIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImYW1wO1wiXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmFtcDtcIlxuICAgICAgICB8ICc8JyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmx0O1wiXG4gICAgICAgIHwgJz4nIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImZ3Q7XCJcbiAgICAgICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIGluIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCBtaW5pbWFsaXplX2JsYW5rcyBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIGwgaW5cbiAgbGV0IHJlYyBsb29wIGYgaSA9XG4gICAgaWYgaSA9IGwgdGhlblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgLT5cbiAgICAgICAgbG9vcCB0cnVlIChzdWNjIGkpXG4gICAgICB8IGMgLT5cbiAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBmIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnICc7XG4gICAgICAgIGxvb3AgZmFsc2UgKHN1Y2MgaSlcbiAgaW4gbG9vcCBmYWxzZSAwXG5cbmxldCByZWMgZWF0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgZTo6dGwgYXMgbCAtPiBpZiBmIGUgdGhlbiBlYXQgZiB0bCBlbHNlIGxcblxuXG5sZXQgcmVjIGV4dHJhY3RfaHRtbF9hdHRyaWJ1dGVzIChodG1sOnN0cmluZykgPVxuICBsZXQgcmVjIGN1dF9vbl9jaGFyX2Zyb20gcyBpIGMgPVxuICAgIG1hdGNoIFN0cmluZy5pbmRleF9mcm9tIHMgaSBjIHdpdGhcbiAgICB8IDAgLT4gXCJcIiwgU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgfCBqIC0+IFN0cmluZy5zdWIgcyBpIChqLWkpLCBTdHJpbmcuc3ViIHMgKGorMSkgKFN0cmluZy5sZW5ndGggcyAtIChqKzEpKVxuICBpblxuICBsZXQgcmVtb3ZlX3ByZWZpeF9zcGFjZXMgcyA9IFxuICAgIGlmIHMgPSBcIlwiIHRoZW5cbiAgICAgIHMgXG4gICAgZWxzZSBpZiBzLlswXSA8PiAnICcgdGhlblxuICAgICAgc1xuICAgIGVsc2VcbiAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgU3RyaW5nLnN1YiBzIGkgKFN0cmluZy5sZW5ndGggcyAtIGkpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgfCAnICcgLT4gbG9vcCAoaSsxKVxuICAgICAgICAgIHwgXyAtPiBTdHJpbmcuc3ViIHMgaSAoU3RyaW5nLmxlbmd0aCBzIC0gaSlcbiAgICAgIGluIGxvb3AgMVxuICBpblxuICBsZXQgcmVtb3ZlX3N1ZmZpeF9zcGFjZXMgcyA9XG4gICAgaWYgcyA9IFwiXCIgdGhlblxuICAgICAgcyBcbiAgICBlbHNlIGlmIHMuW1N0cmluZy5sZW5ndGggcyAtIDFdIDw+ICcgJyB0aGVuXG4gICAgICBzXG4gICAgZWxzZVxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIC0+IGxvb3AgKGktMSlcbiAgICAgICAgfCBfIC0+IFN0cmluZy5zdWIgcyAwIChpKzEpXG4gICAgICBpbiBsb29wIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICBpblxuICBsZXQgcmVjIGxvb3AgcyByZXMgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICByZXNcbiAgICBlbHNlXG4gICAgICBtYXRjaFxuICAgICAgICB0cnlcbiAgICAgICAgICBTb21lICh0YWtlX2F0dHJpYnV0ZSBzIGkpXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcbiAgICAgIHdpdGhcbiAgICAgIHwgU29tZSAoKChfLF8pIGFzIGEpLCBuZXdfcykgLT5cbiAgICAgICAgbG9vcCBuZXdfcyAoYTo6cmVzKSAwXG4gICAgICB8IE5vbmUgLT4gcmVzXG4gIGFuZCB0YWtlX2F0dHJpYnV0ZSBzIGkgPVxuICAgICAgbGV0IG5hbWUsIGFmdGVyX2VxID0gY3V0X29uX2NoYXJfZnJvbSBzIGkgJz0nIGluXG4gICAgICBsZXQgbmFtZSA9IHJlbW92ZV9zdWZmaXhfc3BhY2VzIG5hbWUgaW5cbiAgICAgIGxldCBhZnRlcl9lcSA9IHJlbW92ZV9wcmVmaXhfc3BhY2VzIGFmdGVyX2VxIGluXG4gICAgICBsZXQgdmFsdWUsIHJlc3QgPSBjdXRfb25fY2hhcl9mcm9tIGFmdGVyX2VxIDEgYWZ0ZXJfZXEuWzBdIGluXG4gICAgICAobmFtZSx2YWx1ZSksIHJlbW92ZV9wcmVmaXhfc3BhY2VzIHJlc3RcbiAgaW5cbiAgaWYgKCogSGFzIGl0IGF0IGxlYXN0IG9uZSBhdHRyaWJ1dGU/ICopXG4gICAgdHJ5IFN0cmluZy5pbmRleCBodG1sICc+JyA8IFN0cmluZy5pbmRleCBodG1sICcgJ1xuICAgIHdpdGggTm90X2ZvdW5kIC0+IHRydWVcbiAgdGhlblxuICAgIFtdXG4gIGVsc2VcbiAgbWF0Y2ggaHRtbC5bMV0gd2l0aFxuICB8ICc8JyB8ICcgJyAtPlxuICAgIGV4dHJhY3RfaHRtbF9hdHRyaWJ1dGVzXG4gICAgICAocmVtb3ZlX3ByZWZpeF9zcGFjZXMgKFN0cmluZy5zdWIgaHRtbCAxIChTdHJpbmcubGVuZ3RoIGh0bWwgLSAxKSkpXG4gIHwgXyAtPlxuICAgIHRyeVxuICAgICAgbGV0IGh0bWwgPSBzbmQgKGN1dF9vbl9jaGFyX2Zyb20gaHRtbCAwICcgJykgaW5cbiAgICAgIGxvb3AgKFN0cmluZy5zdWIgaHRtbCAwIChTdHJpbmcuaW5kZXggaHRtbCAnPicpKSBbXSAwXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gW11cblxubGV0IHJlYyBleHRyYWN0X2lubmVyX2h0bWwgKGh0bWw6c3RyaW5nKSA9XG4gIGxldCByZWMgY3V0X29uX2NoYXJfZnJvbSBzIGkgYyA9XG4gICAgbWF0Y2ggU3RyaW5nLmluZGV4X2Zyb20gcyBpIGMgd2l0aFxuICAgIHwgMCAtPiBcIlwiLCBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICB8IGogLT4gU3RyaW5nLnN1YiBzIGkgKGotaSksIFN0cmluZy5zdWIgcyAoaisxKSAoU3RyaW5nLmxlbmd0aCBzIC0gKGorMSkpXG4gIGluXG4gIGxldCByZWMgcmN1dF9vbl9jaGFyX2Zyb20gcyBpIGMgPVxuICAgIG1hdGNoIFN0cmluZy5yaW5kZXhfZnJvbSBzIGkgYyB3aXRoXG4gICAgfCAwIC0+IFwiXCIsIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIHwgaiAtPiBTdHJpbmcuc3ViIHMgMCBqLCBTdHJpbmcuc3ViIHMgKGorMSkgKFN0cmluZy5sZW5ndGggcyAtIChqKzEpKVxuICBpblxuICBsZXQgXywgcCA9IGN1dF9vbl9jaGFyX2Zyb20gaHRtbCAwICc+JyBpblxuICBsZXQgciwgXyA9IHJjdXRfb25fY2hhcl9mcm9tIHAgKFN0cmluZy5sZW5ndGggcCAtIDEpICc8JyBpblxuICByXG5cblxubGV0IGh0bWxfdm9pZF9lbGVtZW50cyA9IFN0cmluZ1NldC5vZl9saXN0IFtcbiAgXCJpbWdcIjtcbiAgXCJpbnB1dFwiO1xuICBcImxpbmtcIjtcbiAgXCJtZXRhXCI7XG4gIFwiYnJcIjtcbiAgXCJoclwiO1xuICBcInNvdXJjZVwiO1xuICBcIndiclwiO1xuICBcInBhcmFtXCI7XG4gIFwiZW1iZWRcIjtcbiAgXCJiYXNlXCI7XG4gIFwiYXJlYVwiO1xuICBcImNvbFwiO1xuICBcInRyYWNrXCI7XG4gIFwia2V5Z2VuXCI7XG5dXG5cbmxldCAoIEAgKSBsMSBsMiA9XG4gIExpc3QucmV2X2FwcGVuZCAoTGlzdC5yZXYgbDEpIGwyXG4iLCJvcGVuIE9tZF91dGlsc1xub3BlbiBQcmludGZcblxuKCoqIHJlZmVyZW5jZXMsIGluc3RhbmNlcyBjcmVhdGVkIGluIFtPbWRfcGFyc2VyLm1haW5fcGFyc2VdIGFuZFxuICAgIGFjY2Vzc2VkIGluIHRoZSBbT21kX2JhY2tlbmRdIG1vZHVsZS4gKilcbm1vZHVsZSBSID0gTWFwLk1ha2UoU3RyaW5nKVxuY2xhc3MgcmVmX2NvbnRhaW5lciA6IG9iamVjdFxuICAgIHZhbCBtdXRhYmxlIGMgOiAoc3RyaW5nICogc3RyaW5nKSBSLnRcbiAgICBtZXRob2QgYWRkX3JlZiA6IFIua2V5IC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gdW5pdFxuICAgIG1ldGhvZCBnZXRfcmVmIDogUi5rZXkgLT4gKHN0cmluZyAqIHN0cmluZykgb3B0aW9uXG4gICAgbWV0aG9kIGdldF9hbGwgOiAoc3RyaW5nICogKHN0cmluZyAqIHN0cmluZykpIGxpc3RcbiAgZW5kID0gb2JqZWN0XG4gIHZhbCBtdXRhYmxlIGMgPSBSLmVtcHR5XG4gIHZhbCBtdXRhYmxlIGMyID0gUi5lbXB0eVxuXG4gIG1ldGhvZCBnZXRfYWxsID0gUi5iaW5kaW5ncyBjXG5cbiAgbWV0aG9kIGFkZF9yZWYgbmFtZSB0aXRsZSB1cmwgPVxuICAgIGMgPC0gUi5hZGQgbmFtZSAodXJsLCB0aXRsZSkgYztcbiAgICBsZXQgbG4gPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIG5hbWUgaW5cbiAgICBpZiBsbiA8PiBuYW1lIHRoZW4gYzIgPC0gUi5hZGQgbG4gKHVybCwgdGl0bGUpIGMyXG5cbiAgbWV0aG9kIGdldF9yZWYgbmFtZSA9XG4gICAgdHJ5XG4gICAgICBsZXQgKHVybCwgdGl0bGUpIGFzIHIgPVxuICAgICAgICB0cnkgUi5maW5kIG5hbWUgY1xuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIGxldCBsbiA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgbmFtZSBpblxuICAgICAgICAgIHRyeSBSLmZpbmQgbG4gY1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBSLmZpbmQgbG4gYzJcbiAgICAgIGluIFNvbWUgclxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBOb25lXG5lbmRcblxudHlwZSBlbGVtZW50ID1cbiAgfCBIMSBvZiB0XG4gIHwgSDIgb2YgdFxuICB8IEgzIG9mIHRcbiAgfCBINCBvZiB0XG4gIHwgSDUgb2YgdFxuICB8IEg2IG9mIHRcbiAgfCBQYXJhZ3JhcGggb2YgdFxuICB8IFRleHQgb2Ygc3RyaW5nXG4gIHwgRW1waCBvZiB0XG4gIHwgQm9sZCBvZiB0XG4gIHwgVWwgb2YgdCBsaXN0XG4gIHwgT2wgb2YgdCBsaXN0XG4gIHwgVWxwIG9mIHQgbGlzdFxuICB8IE9scCBvZiB0IGxpc3RcbiAgfCBDb2RlIG9mIG5hbWUgKiBzdHJpbmdcbiAgfCBDb2RlX2Jsb2NrIG9mIG5hbWUgKiBzdHJpbmdcbiAgfCBCclxuICB8IEhyXG4gIHwgTkxcbiAgfCBVcmwgb2YgaHJlZiAqIHQgKiB0aXRsZVxuICB8IFJlZiBvZiByZWZfY29udGFpbmVyICogbmFtZSAqIHN0cmluZyAqIGZhbGxiYWNrXG4gIHwgSW1nX3JlZiBvZiByZWZfY29udGFpbmVyICogbmFtZSAqIGFsdCAqIGZhbGxiYWNrXG4gIHwgSHRtbCBvZiBuYW1lICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiB0XG4gIHwgSHRtbF9ibG9jayBvZiBuYW1lICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiB0XG4gIHwgSHRtbF9jb21tZW50IG9mIHN0cmluZ1xuICB8IFJhdyBvZiBzdHJpbmdcbiAgfCBSYXdfYmxvY2sgb2Ygc3RyaW5nXG4gIHwgQmxvY2txdW90ZSBvZiB0XG4gIHwgSW1nIG9mIGFsdCAqIHNyYyAqIHRpdGxlXG4gIHwgWCBvZlxuICAgICAgPCBuYW1lIDogc3RyaW5nO1xuICAgICAgICB0b19odG1sIDogP2luZGVudDppbnQgLT4gKHQgLT4gc3RyaW5nKSAtPiB0IC0+IHN0cmluZyBvcHRpb247XG4gICAgICAgIHRvX3NleHByIDogKHQgLT4gc3RyaW5nKSAtPiB0IC0+IHN0cmluZyBvcHRpb247XG4gICAgICAgIHRvX3QgOiB0IC0+IHQgb3B0aW9uID5cbmFuZCBmYWxsYmFjayA9IDwgdG9fc3RyaW5nIDogc3RyaW5nIDsgdG9fdCA6IHQgPlxuYW5kIG5hbWUgPSBzdHJpbmdcbmFuZCBhbHQgPSBzdHJpbmdcbmFuZCBzcmMgPSBzdHJpbmdcbmFuZCBocmVmID0gc3RyaW5nXG5hbmQgdGl0bGUgPSBzdHJpbmdcbmFuZCB0ID0gZWxlbWVudCBsaXN0XG5cblxubGV0IHJlYyBsb29zZV9jb21wYXJlIHQxIHQyID0gbWF0Y2ggdDEsdDIgd2l0aFxuICB8IEgxIGUxOjp0bDEsIEgxIGUyOjp0bDJcbiAgfCBIMiBlMTo6dGwxLCBIMiBlMjo6dGwyXG4gIHwgSDMgZTE6OnRsMSwgSDMgZTI6OnRsMlxuICB8IEg0IGUxOjp0bDEsIEg0IGUyOjp0bDJcbiAgfCBINSBlMTo6dGwxLCBINSBlMjo6dGwyXG4gIHwgSDYgZTE6OnRsMSwgSDYgZTI6OnRsMlxuICB8IEVtcGggZTE6OnRsMSwgRW1waCBlMjo6dGwyXG4gIHwgQm9sZCBlMTo6dGwxLCBCb2xkIGUyOjp0bDJcbiAgfCBCbG9ja3F1b3RlIGUxOjp0bDEsIEJsb2NrcXVvdGUgZTI6OnRsMlxuICB8IFBhcmFncmFwaCBlMTo6dGwxLCBQYXJhZ3JhcGggZTI6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBsb29zZV9jb21wYXJlIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgVWwgZTE6OnRsMSwgVWwgZTI6OnRsMlxuICB8IE9sIGUxOjp0bDEsIE9sIGUyOjp0bDJcbiAgfCBVbHAgZTE6OnRsMSwgVWxwIGUyOjp0bDJcbiAgfCBPbHAgZTE6OnRsMSwgT2xwIGUyOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggbG9vc2VfY29tcGFyZV9saXN0cyBlMSBlMiB3aXRoXG4gICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IChDb2RlIF8gYXMgZTEpOjp0bDEsIChDb2RlIF8gYXMgZTIpOjp0bDJcbiAgfCAoQnIgYXMgZTEpOjp0bDEsIChCciBhcyBlMik6OnRsMlxuICB8IChIciBhcyBlMSk6OnRsMSwgKEhyIGFzIGUyKTo6dGwyXG4gIHwgKE5MIGFzIGUxKTo6dGwxLCAoTkwgYXMgZTIpOjp0bDJcbiAgfCAoSHRtbCBfIGFzIGUxKTo6dGwxLCAoSHRtbCBfIGFzIGUyKTo6dGwyXG4gIHwgKEh0bWxfYmxvY2sgXyBhcyBlMSk6OnRsMSwgKEh0bWxfYmxvY2sgXyBhcyBlMik6OnRsMlxuICB8IChSYXcgXyBhcyBlMSk6OnRsMSwgKFJhdyBfIGFzIGUyKTo6dGwyXG4gIHwgKFJhd19ibG9jayBfIGFzIGUxKTo6dGwxLCAoUmF3X2Jsb2NrIF8gYXMgZTIpOjp0bDJcbiAgfCAoSHRtbF9jb21tZW50IF8gYXMgZTEpOjp0bDEsIChIdG1sX2NvbW1lbnQgXyBhcyBlMik6OnRsMlxuICB8IChJbWcgXyBhcyBlMSk6OnRsMSwgKEltZyBfIGFzIGUyKTo6dGwyXG4gIHwgKFRleHQgXyBhcyBlMSk6OnRsMSwgKFRleHQgXyBhcyBlMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgQ29kZV9ibG9jayhsMSxjMSk6OnRsMSwgQ29kZV9ibG9jayhsMixjMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGwxIGwyLCBTdHJpbmcubGVuZ3RoIGMxIC0gU3RyaW5nLmxlbmd0aCBjMiB3aXRoXG4gICAgICAgICB8IDAsIDAgLT5cbiAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZSBjMSBjMiB3aXRoXG4gICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgMCwgMSAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIGMxIChjMl5cIlxcblwiKSB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCAwLCAtMSAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIChjMV5cIlxcblwiKSBjMiB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpLCBfIC0+IGlcbiAgICAgIClcblxuICB8IFVybCAoaHJlZjEsIHQxLCB0aXRsZTEpOjp0bDEsIFVybCAoaHJlZjIsIHQyLCB0aXRsZTIpOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSBocmVmMSBocmVmMiB3aXRoXG4gICAgICAgICB8IDAgLT4gKG1hdGNoIGxvb3NlX2NvbXBhcmUgdDEgdDIgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZSB0aXRsZTEgdGl0bGUyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgUmVmIChyZWZfY29udGFpbmVyMSwgbmFtZTEsIHgxLCBmYWxsYmFjazEpOjp0bDEsXG4gICAgICAgIFJlZiAocmVmX2NvbnRhaW5lcjIsIG5hbWUyLCB4MiwgZmFsbGJhY2syKTo6dGwyXG4gIHwgSW1nX3JlZiAocmVmX2NvbnRhaW5lcjEsIG5hbWUxLCB4MSwgZmFsbGJhY2sxKTo6dGwxLFxuICAgICAgICBJbWdfcmVmIChyZWZfY29udGFpbmVyMiwgbmFtZTIsIHgyLCBmYWxsYmFjazIpOjp0bDJcbiAgICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIChuYW1lMSwgeDEpIChuYW1lMiwgeDIpIHdpdGhcbiAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgIGxldCBjZmYgPVxuICAgICAgICAgICAgICAgaWYgZmFsbGJhY2sxI3RvX3N0cmluZyA9IGZhbGxiYWNrMiN0b19zdHJpbmcgdGhlblxuICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvb3NlX2NvbXBhcmUgKGZhbGxiYWNrMSN0b190KSAoZmFsbGJhY2syI3RvX3QpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGlmIGNmZiA9IDAgdGhlblxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgIGNvbXBhcmUgKHJlZl9jb250YWluZXIxI2dldF9hbGwpIChyZWZfY29udGFpbmVyMiNnZXRfYWxsKVxuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGNmZlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBYIGUxOjp0bDEsIFggZTI6OnRsMiAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgKGUxI25hbWUpIChlMiNuYW1lKSB3aXRoXG4gICAgICAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmUgKGUxI3RvX3QpIChlMiN0b190KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpIC0+IGkpXG4gIHwgWCBfOjpfLCBfIC0+IDFcbiAgfCBfLCBYIF86Ol8gLT4gLTFcbiAgfCBfIC0+IGNvbXBhcmUgdDEgdDJcblxuYW5kIGxvb3NlX2NvbXBhcmVfbGlzdHMgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIFtdIC0+IDBcbiAgICB8IGUxOjp0bDEsIGUyOjp0bDIgLT5cbiAgICAgICAgKG1hdGNoIGxvb3NlX2NvbXBhcmUgZTEgZTIgd2l0aFxuICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZV9saXN0cyB0bDEgdGwyXG4gICAgICAgICAgIHwgaSAtPiBpKVxuICAgIHwgXywgW10gLT4gMVxuICAgIHwgXyAtPiAtMVxuXG5cbnR5cGUgdG9rID0gKCogQ3MobikgbWVhbnMgKG4rMikgdGltZXMgQyAqKVxufCBBbXBlcnNhbmRcbnwgQW1wZXJzYW5kcyBvZiBpbnRcbnwgQXRcbnwgQXRzIG9mIGludFxufCBCYWNrcXVvdGVcbnwgQmFja3F1b3RlcyBvZiBpbnRcbnwgQmFja3NsYXNoXG58IEJhY2tzbGFzaHMgb2YgaW50XG58IEJhclxufCBCYXJzIG9mIGludFxufCBDYXJldFxufCBDYXJldHMgb2YgaW50XG58IENicmFjZVxufCBDYnJhY2VzIG9mIGludFxufCBDb2xvblxufCBDb2xvbnMgb2YgaW50XG58IENvbW1hXG58IENvbW1hcyBvZiBpbnRcbnwgQ3BhcmVudGhlc2lzXG58IENwYXJlbnRoZXNpc3Mgb2YgaW50XG58IENicmFja2V0XG58IENicmFja2V0cyBvZiBpbnRcbnwgRG9sbGFyXG58IERvbGxhcnMgb2YgaW50XG58IERvdFxufCBEb3RzIG9mIGludFxufCBEb3VibGVxdW90ZVxufCBEb3VibGVxdW90ZXMgb2YgaW50XG58IEV4Y2xhbWF0aW9uXG58IEV4Y2xhbWF0aW9ucyBvZiBpbnRcbnwgRXF1YWxcbnwgRXF1YWxzIG9mIGludFxufCBHcmVhdGVydGhhblxufCBHcmVhdGVydGhhbnMgb2YgaW50XG58IEhhc2hcbnwgSGFzaHMgb2YgaW50XG58IExlc3N0aGFuXG58IExlc3N0aGFucyBvZiBpbnRcbnwgTWludXNcbnwgTWludXNzIG9mIGludFxufCBOZXdsaW5lXG58IE5ld2xpbmVzIG9mIGludFxufCBOdW1iZXIgb2Ygc3RyaW5nXG58IE9icmFjZVxufCBPYnJhY2VzIG9mIGludFxufCBPcGFyZW50aGVzaXNcbnwgT3BhcmVudGhlc2lzcyBvZiBpbnRcbnwgT2JyYWNrZXRcbnwgT2JyYWNrZXRzIG9mIGludFxufCBQZXJjZW50XG58IFBlcmNlbnRzIG9mIGludFxufCBQbHVzXG58IFBsdXNzIG9mIGludFxufCBRdWVzdGlvblxufCBRdWVzdGlvbnMgb2YgaW50XG58IFF1b3RlXG58IFF1b3RlcyBvZiBpbnRcbnwgU2VtaWNvbG9uXG58IFNlbWljb2xvbnMgb2YgaW50XG58IFNsYXNoXG58IFNsYXNocyBvZiBpbnRcbnwgU3BhY2VcbnwgU3BhY2VzIG9mIGludFxufCBTdGFyXG58IFN0YXJzIG9mIGludFxufCBUYWJcbnwgVGFicyBvZiBpbnRcbnwgVGlsZGVcbnwgVGlsZGVzIG9mIGludFxufCBVbmRlcnNjb3JlXG58IFVuZGVyc2NvcmVzIG9mIGludFxufCBXb3JkIG9mIHN0cmluZ1xufCBUYWcgb2YgbmFtZSAqIGV4dGVuc2lvblxuXG5hbmQgZXh0ZW5zaW9uID0gPFxuICBwYXJzZXJfZXh0ZW5zaW9uIDpcbiAgICB0IC0+IHRvayBsaXN0IC0+IHRvayBsaXN0IC0+ICgodCAqIHRvayBsaXN0ICogdG9rIGxpc3QpIG9wdGlvbik7XG4gIHRvX3N0cmluZyA6IHN0cmluZ1xuPlxuXG50eXBlIGV4dGVuc2lvbnMgPSBleHRlbnNpb24gbGlzdFxuXG5sZXQgZW1wdHlfZXh0ZW5zaW9uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID0gTm9uZVxuICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuZW5kXG5cbmxldCByZWMgbm9ybWFsaXNlX21kIGwgPVxuICBpZiBkZWJ1ZyB0aGVuXG4gICAgZXByaW50ZiBcIihPTUQpIG5vcm1hbGlzZV9tZFxcbiUhXCI7XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO05MO05MO05MO11cbiAgICB8IFtOTDtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO11cbiAgICB8IFtOTDtOTF1cbiAgICB8IFtOTF0gLT4gW11cbiAgICB8IFtdIC0+IFtdXG4gICAgfCBOTDo6Tkw6Ok5MOjp0bCAtPiBsb29wIChOTDo6Tkw6OnRsKVxuICAgIHwgVGV4dCB0MTo6VGV4dCB0Mjo6dGwgLT4gbG9vcCAoVGV4dCh0MV50Mik6OnRsKVxuICAgIHwgTkw6OigoKFBhcmFncmFwaCBffEgxIF98SDIgX3xIMyBffEg0IF98SDUgX3xINiBfXG4gICAgICAgICAgICB8Q29kZV9ibG9jayBffE9sIF98VWwgX3xPbHAgX3xVbHAgXyk6Ol8pIGFzIHRsKSAtPiBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGhbVGV4dCBcIiBcIl06OnRsIC0+IGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaFtdOjp0bCAtPiBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGgocCk6OnRsIC0+IFBhcmFncmFwaChsb29wIHApOjpsb29wIHRsXG4gICAgfCBIMSB2Ojp0bCAtPiBIMShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBIMiB2Ojp0bCAtPiBIMihsb29wIHYpOjpsb29wIHRsXG4gICAgfCBIMyB2Ojp0bCAtPiBIMyhsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINCB2Ojp0bCAtPiBINChsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINSB2Ojp0bCAtPiBINShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINiB2Ojp0bCAtPiBINihsb29wIHYpOjpsb29wIHRsXG4gICAgfCBFbXBoIHY6OnRsIC0+IEVtcGgobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgQm9sZCB2Ojp0bCAtPiBCb2xkKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IFVsIHY6OnRsIC0+IFVsKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IE9sIHY6OnRsIC0+IE9sKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IFVscCB2Ojp0bCAtPiBVbHAoTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgT2xwIHY6OnRsIC0+IE9scChMaXN0Lm1hcCBsb29wIHYpOjpsb29wIHRsXG4gICAgfCBCbG9ja3F1b3RlIHY6OnRsIC0+IEJsb2NrcXVvdGUobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgVXJsKGhyZWYsdix0aXRsZSk6OnRsIC0+IFVybChocmVmLChsb29wIHYpLHRpdGxlKTo6bG9vcCB0bFxuICAgIHwgVGV4dCBfXG4gICAgfCBDb2RlIF9cbiAgICB8IENvZGVfYmxvY2sgX1xuICAgIHwgQnJcbiAgICB8IEhyXG4gICAgfCBOTFxuICAgIHwgUmVmIF9cbiAgICB8IEltZ19yZWYgX1xuICAgIHwgSHRtbCBfXG4gICAgfCBIdG1sX2Jsb2NrIF9cbiAgICB8IEh0bWxfY29tbWVudCBfXG4gICAgfCBSYXcgX1xuICAgIHwgUmF3X2Jsb2NrIF9cbiAgICB8IEltZyBfXG4gICAgfCBYIF8gYXMgdjo6dGwgLT4gdjo6bG9vcCB0bFxuICBpblxuICBsZXQgYSA9IGxvb3AgbCBpblxuICBsZXQgYiA9IGxvb3AgYSBpblxuICBpZiBhID0gYiB0aGVuXG4gICAgYVxuICBlbHNlXG4gICAgbm9ybWFsaXNlX21kIGJcblxuXG5cbmxldCBkdW1teV9YID1cbiAgWCAob2JqZWN0XG4gICAgbWV0aG9kIG5hbWUgPSBcImR1bW15XCJcbiAgICBtZXRob2QgdG9faHRtbCA/KGluZGVudD0wKSBfIF8gPSBOb25lXG4gICAgbWV0aG9kIHRvX3NleHByIF8gXyA9IE5vbmVcbiAgICBtZXRob2QgdG9fdCBfID0gTm9uZVxuICBlbmQpXG5cblxubGV0IHJlYyB2aXNpdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IFBhcmFncmFwaCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBQYXJhZ3JhcGgodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEgxIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIMSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDIgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEgyKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIMyB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIMyh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDQgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEg0KHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBINSB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDUodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEg2IHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBINih2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgRW1waCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gRW1waCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQm9sZCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQm9sZCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVWwgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gVWwoTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgT2wgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gT2woTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVWxwIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFVscChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBPbHAgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gT2xwKExpc3QubWFwICh2aXNpdCBmKSB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEJsb2NrcXVvdGUgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQmxvY2txdW90ZSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVXJsKGhyZWYsdix0aXRsZSkgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFVybChocmVmLHZpc2l0IGYgdix0aXRsZSk6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBUZXh0IHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBDb2RlIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBDb2RlX2Jsb2NrIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSZWYgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEltZ19yZWYgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWwgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWxfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWxfY29tbWVudCBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgUmF3IF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSYXdfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEltZyAgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFggIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBCciBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQnI6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIciBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSHI6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBOTCBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gTkw6OnZpc2l0IGYgdGxcbiAgICBlbmRcblxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgY29kZV9zdHlsaXN0ID0gbGFuZzpzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuXG5vcGVuIFByaW50Zlxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cbm9wZW4gT21kX3V0aWxzXG5cbmxldCBkZWZhdWx0X2xhbmd1YWdlID0gcmVmIFwiXCJcblxuXG5cbmxldCB0ZXh0X29mX21kIG1kID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgWCBfIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJsb2NrcXVvdGUgcSA6OiB0bCAtPlxuICAgICAgICBsb29wIHE7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBuYW1lKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIG5hbWUpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0KTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVGV4dCB0IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0KTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3IHQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB0O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXdfYmxvY2sgdCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB0O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgRW1waCBtZCA6OiB0bCAtPlxuICAgICAgICBsb29wIG1kO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCb2xkIG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IChVbCBsIHwgT2wgbCkgOjogdGwgLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gaXRlbSAtPiBsb29wIGl0ZW07IEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nKSBsO1xuICAgICAgICBsb29wIHRsXG4gICAgfCAoVWxwIGwgfCBPbHAgbCkgOjogdGwgLT5cbiAgICAgICAgTGlzdC5pdGVyIGxvb3AgbDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYyk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEhyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2NvbW1lbnQgcyA6OiB0bCAtPlxuICAgICAgICBsb29wIHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMSBtZCA6OiB0bFxuICAgIHwgSDIgbWQgOjogdGxcbiAgICB8IEgzIG1kIDo6IHRsXG4gICAgfCBINCBtZCA6OiB0bFxuICAgIHwgSDUgbWQgOjogdGxcbiAgICB8IEg2IG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE5MIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgICBsb29wIG1kO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCBkZWZhdWx0X2NvZGVfc3R5bGlzdCB+bGFuZyBjb2RlID0gY29kZVxuXG5sZXQgZmlsdGVyX3RleHRfb21kX3JldiBsID1cbiAgbGV0IHJlYyBsb29wIGIgciA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBpZiBiIHRoZW4gciBlbHNlIGxcbiAgICB8IChcIm1lZGlhOnR5cGVcIiwgU29tZSBcInRleHQvb21kXCIpOjp0bCAtPlxuICAgICAgbG9vcCB0cnVlIHIgdGxcbiAgICB8IGU6OnRsIC0+XG4gICAgICBsb29wIGIgKGU6OnIpIHRsXG4gIGluXG4gIGxvb3AgZmFsc2UgW10gbFxuXG5sZXQgcmVtb3ZlX2xpbmtzIDogdCAtPiB0ID1cbiAgT21kX3JlcHJlc2VudGF0aW9uLnZpc2l0XG4gICAgKGZ1biBlIC0+XG4gICAgIG1hdGNoIGUgd2l0aFxuICAgICAgfCBVcmwoXywgdCwgXykgLT4gU29tZSB0XG4gICAgICB8IF8gLT4gTm9uZVxuICAgIClcblxubGV0IHJlYyBodG1sX2FuZF9oZWFkZXJzX29mX21kXG4gICAgPyhyZW1vdmVfaGVhZGVyX2xpbmtzPWZhbHNlKVxuICAgID8ob3ZlcnJpZGU9KGZ1biAoZTplbGVtZW50KSAtPiAoTm9uZTpzdHJpbmcgb3B0aW9uKSkpXG4gICAgPyhwaW5kZW50PWZhbHNlKVxuICAgID8obmwyYnI9ZmFsc2UpXG4gICAgP2NzOihjb2RlX3N0eWxlPWRlZmF1bHRfY29kZV9zdHlsaXN0KVxuICAgIG1kXG4gID1cbiAgbGV0IGlkcyA9IG9iamVjdCh0aGlzKVxuICAgIHZhbCBtdXRhYmxlIGlkcyA9IFN0cmluZ1NldC5hZGQgXCJcIiBTdHJpbmdTZXQuZW1wdHlcbiAgICBtZXRob2QgbWFuZ2xlIGlkID1cbiAgICAgIGxldCByZWMgbSBpID1cbiAgICAgICAgaWYgU3RyaW5nU2V0Lm1lbSBpZCBpZHMgdGhlblxuICAgICAgICAgIGxldCBpZHggPSBpZiBpID4gMCB0aGVuIGlkXlwiX1wiXnN0cmluZ19vZl9pbnQgaSBlbHNlIGlkIGluXG4gICAgICAgICAgaWYgU3RyaW5nU2V0Lm1lbSBpZHggaWRzIHRoZW5cbiAgICAgICAgICAgIG0gKGkrMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoaWRzIDwtIFN0cmluZ1NldC5hZGQgaWR4IGlkcztcbiAgICAgICAgICAgICBpZHgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoaWRzIDwtIFN0cmluZ1NldC5hZGQgaWQgaWRzO1xuICAgICAgICAgICBpZClcbiAgICAgIGluIG0gMFxuICBlbmQgaW5cbiAgbGV0IGVtcHR5IHMgPVxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcbicgLT4gbG9vcCAoaSsxKVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgdHJ1ZVxuICAgIGluXG4gICAgbG9vcCAwXG4gIGluXG4gIGxldCByZW1vdmVfdHJhaWxpbmdfYmxhbmtzIHMgPVxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPCAwIHRoZW4gXCJcIlxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnfCdcXHQnfCdcXG4nIC0+XG4gICAgICAgICAgbG9vcCAocHJlZCBpKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIC0gMSB0aGVuXG4gICAgICAgICAgICBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU3RyaW5nLnN1YiBzIDAgKGkrMSlcbiAgICBpbiBsb29wIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IGhlYWRlcnMgPSByZWYgW10gaW5cbiAgbGV0IHJlYyBsb29wIGluZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBYIHggYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdCAtPiBsb29wIGluZGVudCB0XG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OmluZGVudFxuICAgICAgICAgICAgICAgKGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSkgbWRcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCbG9ja3F1b3RlIHEgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YmxvY2txdW90ZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBxO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2Jsb2NrcXVvdGU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBmYWxsYmFjaykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHJjI2dldF9yZWYgbmFtZSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUoaHJlZiwgdGl0bGUpIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50XG4gICAgICAgICAgICAgICAgKFVybChodG1sZW50aXRpZXMgfm1kOnRydWUgaHJlZixcbiAgICAgICAgICAgICAgICAgICAgIFtUZXh0KHRleHQpXSxcbiAgICAgICAgICAgICAgICAgICAgIGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSlcbiAgICAgICAgICAgICAgICAgOjp0bClcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBsb29wIGluZGVudCAoZmFsbGJhY2sjdG9fdCk7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgZmFsbGJhY2spIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCByYyNnZXRfcmVmIG5hbWUgd2l0aFxuICAgICAgICAgICAgfCBTb21lKHNyYywgdGl0bGUpIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50XG4gICAgICAgICAgICAgICAgKEltZyhodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0LFxuICAgICAgICAgICAgICAgICAgICAgaHRtbGVudGl0aWVzIH5tZDp0cnVlIHNyYyxcbiAgICAgICAgICAgICAgICAgICAgIGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSk6OnRsKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IChmYWxsYmFjayN0b190KTtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIHwgUGFyYWdyYXBoIFtdIDo6IHRsIC0+IGxvb3AgaW5kZW50IHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChsZXQgcyA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgICBpZiBlbXB0eSBzIHRoZW5cbiAgICAgICAgICAgICAoKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8cD5cIjtcbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHJlbW92ZV90cmFpbGluZ19ibGFua3Mgcyk7XG4gICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9wPlxcblwiO1xuICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aW1nIHNyYz0nXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHNyYyk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIicgYWx0PSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0KTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJyBcIjtcbiAgICAgICAgICBpZiB0aXRsZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgIChCdWZmZXIuYWRkX3N0cmluZyBiIFwiIHRpdGxlPSdcIjtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpO1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInIFwiKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBUZXh0IHQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIEJ1ZmZlci5hZGRfc3RyaW5nIGIgdDsgKilcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdCk7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgRW1waCBtZCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxlbT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBtZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9lbT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCb2xkIG1kIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPHN0cm9uZz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBtZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9zdHJvbmc+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKFVsIGx8T2wgbHxVbHAgbHxPbHAgbCBhcyBlKSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKG1hdGNoIGUgd2l0aFxuICAgICAgICAgICAgICB8IE9sIF98T2xwIF8gLT4gXCI8b2w+XCJcbiAgICAgICAgICAgICAgfCBfIC0+IFwiPHVsPlwiKTtcbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgZnVuIGxpIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxsaT5cIjtcbiAgICAgICAgICAgICAgICBsb29wIChpbmRlbnQrMikgbGk7XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvbGk+XCJcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGw7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAobWF0Y2ggZSB3aXRoXG4gICAgICAgICAgICAgIHwgT2wgX3xPbHAgXyAtPiBcIjwvb2w+XCJcbiAgICAgICAgICAgICAgfCBfIC0+IFwiPC91bD5cIik7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbGFuZyA9IFwiXCIgJiYgIWRlZmF1bHRfbGFuZ3VhZ2UgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8cHJlPjxjb2RlPlwiXG4gICAgICAgICAgZWxzZSBpZiBsYW5nID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8cHJlIGNsYXNzPSclcyc+PGNvZGUgY2xhc3M9JyVzJz5cIlxuICAgICAgICAgICAgICAhZGVmYXVsdF9sYW5ndWFnZSAhZGVmYXVsdF9sYW5ndWFnZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxwcmUgY2xhc3M9JyVzJz48Y29kZSBjbGFzcz0nJXMnPlwiIGxhbmcgbGFuZztcbiAgICAgICAgICBsZXQgbmV3X2MgPSBjb2RlX3N0eWxlIH5sYW5nOmxhbmcgYyBpblxuICAgICAgICAgIGlmIGMgPSBuZXdfYyB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBuZXdfYztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9jb2RlPjwvcHJlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IENvZGUobGFuZywgYykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGxhbmcgPSBcIlwiICYmICFkZWZhdWx0X2xhbmd1YWdlID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGNvZGU+XCJcbiAgICAgICAgICBlbHNlIGlmIGxhbmcgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxjb2RlIGNsYXNzPSclcyc+XCIgIWRlZmF1bHRfbGFuZ3VhZ2VcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8Y29kZSBjbGFzcz0nJXMnPlwiIGxhbmc7XG4gICAgICAgICAgbGV0IG5ld19jID0gY29kZV9zdHlsZSB+bGFuZzpsYW5nIGMgaW5cbiAgICAgICAgICBpZiBjID0gbmV3X2MgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDpmYWxzZSBjKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgbmV3X2M7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvY29kZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCciBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxici8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHIgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aHIvPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFJhdyBzIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmF3X2Jsb2NrIHMgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBbXSkgYXMgZSA6OiB0bFxuICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICBsZXQgYXR0cnMgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiIC8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgYXMgZSA6OiB0bCAtPlxuICAgICAgbGV0IGF0dHJzID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBib2R5O1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8LyVzPlwiIHRhZ25hbWU7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkgYXMgZSA6OiB0bCAtPlxuICAgICAgbGV0IGF0dHJzID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGJvZHkgPSBbXSAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIHRoZW5cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgLz5cIjtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICAgIClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCBib2R5O1xuICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgICAgKVxuICAgICAgZW5kXG4gICAgfCBIdG1sX2NvbW1lbnQgcyBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHMgPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgcyBpblxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YSBocmVmPSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgaHJlZik7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIidcIjtcbiAgICAgICAgICBpZiB0aXRsZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgdGl0bGU9J1wiO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJ1wiO1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2E+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgxIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgxIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgxIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDE+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgyIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgyIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgyIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDI+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgzIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgzIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgzIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDM+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg0IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg0IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg0IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDQ+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg1IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg1IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg1IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg2IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg2IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg2IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDY+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgTkwgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIG5sMmJyIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YnIgLz5cIlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBbXSAtPlxuICAgICAgKClcbiAgaW5cbiAgbG9vcCAwIG1kO1xuICBCdWZmZXIuY29udGVudHMgYiwgTGlzdC5yZXYgIWhlYWRlcnNcblxuYW5kIHN0cmluZ19vZl9hdHRycyBhdHRycyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIExpc3QuaXRlclxuICAgIChmdW5jdGlvblxuICAgICAgfCAoYSwgU29tZSB2KSAtPlxuICAgICAgICBpZiBub3QoU3RyaW5nLmNvbnRhaW5zIHYgJ1xcJycpIHRoZW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPSclcydcIiBhIHZcbiAgICAgICAgZWxzZSBpZiBub3QoU3RyaW5nLmNvbnRhaW5zIHYgJ1wiJykgdGhlblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9XFxcIiVzXFxcIlwiIGEgdlxuICAgICAgICBlbHNlXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICB8IGEsIE5vbmUgLT5cbiAgICAgICAgKCogaWYgaHRtbDQgdGhlbiAqKVxuICAgICAgICAoKiAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JyVzJ1wiIGEgYSAqKVxuICAgICAgICAoKiBlbHNlICopXG4gICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JydcIiBhICgqIEhUTUw1ICopXG4gICAgKVxuICAgIGF0dHJzO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5hbmQgaHRtbF9vZl9tZFxuICAgID8ob3ZlcnJpZGU9KGZ1biAoZTplbGVtZW50KSAtPiAoTm9uZTpzdHJpbmcgb3B0aW9uKSkpXG4gICAgPyhwaW5kZW50PWZhbHNlKVxuICAgID8obmwyYnI9ZmFsc2UpXG4gICAgP2NzXG4gICAgbWRcbiAgPVxuICBmc3QgKGh0bWxfYW5kX2hlYWRlcnNfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciA/Y3MgbWQpXG5hbmQgaGVhZGVyc19vZl9tZCA/cmVtb3ZlX2hlYWRlcl9saW5rcyBtZCA9XG4gIHNuZCAoaHRtbF9hbmRfaGVhZGVyc19vZl9tZCA/cmVtb3ZlX2hlYWRlcl9saW5rcyBtZClcblxuXG5sZXQgcmVjIHNleHByX29mX21kIG1kID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBYIHggOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIHgjdG9fdCBtZCB3aXRoXG4gICAgICAgICAgIHwgU29tZSB0IC0+XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihYXCI7XG4gICAgICAgICAgICAgbG9vcCB0O1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCJcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBtYXRjaCB4I3RvX3NleHByIHNleHByX29mX21kIG1kIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFhcIjtcbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIlxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OjAgaHRtbF9vZl9tZCBtZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihYXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoQmxvY2txdW90ZVwiO1xuICAgICAgICBsb29wIHE7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgXykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFJlZiAlUyAlUylcIiBuYW1lIHRleHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgXykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEltZ19yZWYgJVMgJVMpXCIgbmFtZSBhbHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFBhcmFncmFwaFwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSW1nICVTICVTICVTKVwiIGFsdCBzcmMgdGl0bGU7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVGV4dCAlU1wiIHQ7XG4gICAgICAgIGxldCByZWMgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIiAlU1wiIHQ7XG4gICAgICAgICAgICBmIHRsXG4gICAgICAgICAgfCB4IC0+IHhcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRsID0gZiB0bCBpblxuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEVtcGggbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihFbXBoXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCb2xkXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE9sIGwgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKE9sXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpOyBicHJpbnRmIGIgXCIpXCIpIGw7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVWwgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVWxcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7YnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE9scCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihPbHBcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7IGJwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVbHAgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVWxwXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpO2JwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihDb2RlICVTKVwiIGM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGVfYmxvY2sobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKENvZGVfYmxvY2sgJXMpXCIgYztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQnIgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCcilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHIgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIcilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3IHMgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFJhdyAlUylcIiBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXdfYmxvY2sgcyA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoUmF3X2Jsb2NrICVTKVwiIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihIdG1sICVzICVzIFwiIHRhZ25hbWUgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSHRtbF9ibG9jayAlcyAlcyBcIiB0YWduYW1lIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICBsb29wIGJvZHk7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9jb21tZW50IHMgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEh0bWxfY29tbWVudCAlUylcIiBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFVybCAlUyAlUyAlUylcIiBocmVmIChodG1sX29mX21kIHMpIHRpdGxlO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMSBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEgxXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgyIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDJcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDMgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIM1wiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBINCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEg0XCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEg1IG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDVcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihINlwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBOTCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKE5MKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICAgIGxvb3AgbWQ7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMgcyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICogMikgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnLicgYXMgYyAtPlxuICAgICAgICBpZiBpID4gMCAmJlxuICAgICAgICAgICBtYXRjaCBzLltpLTFdIHdpdGhcbiAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJyAnXG4gICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICctJyBhcyBjIC0+XG4gICAgICAgIGlmIChpID0gMCB8fCBtYXRjaCBzLltpLTFdIHdpdGggJyAnfCAnXFxuJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAmJiAoaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIChzLltpKzFdID0gJyAnfHxzLltpKzFdID0gJy0nKSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnKycgYXMgYyAtPlxuICAgICAgICBpZiAoaSA9IDAgfHwgbWF0Y2ggcy5baS0xXSB3aXRoICcgJ3wgJ1xcbicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgJiYgKGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJyAnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICchJyBhcyBjIC0+XG4gICAgICAgIGlmIGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJ1snIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJzwnIGFzIGMgLT5cbiAgICAgICAgaWYgaSA8PiBTdHJpbmcubGVuZ3RoIHMgLSAxICYmXG4gICAgICAgICAgICAgKG1hdGNoIHMuW2krMV0gd2l0aCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnPicgYXMgYyAtPlxuICAgICAgICBpZiBpID0gMCB8fFxuICAgICAgICAgICAgIChtYXRjaCBzLltpLTFdIHdpdGggJyAnIHwgJ1xcbicgLT4gZmFsc2UgfCBfIC0+IHRydWUpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJyMnIGFzIGMgLT5cbiAgICAgICAgIGlmIGkgPSAwIHx8IHMuW2ktMV0gPSAnXFxuJyB0aGVuXG4gICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJ1xcXFwnIHwgJ1snIHwgJ10nIHwgJygnIHwgJyknIHwgJ2AnIHwgJyonIGFzIGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgIGRvbmU7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IHJlYyBtYXJrZG93bl9vZl9tZCBtZCA9XG4gIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1hcmtkb3duX29mX21kKCVTKVxcbiUhXCIgKHNleHByX29mX21kIG1kKTtcbiAgbGV0IHF1b3RlID8oaW5kZW50PTApIHMgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IHJlYyBsb29wIG5sIGkgPVxuICAgICAgaWYgaSA8IGwgdGhlblxuICAgICAgICBiZWdpblxuICAgICAgICAgIGlmIG5sICYmIGkgPCBsIC0gMSB0aGVuXG4gICAgICAgICAgICAoZm9yIGkgPSAxIHRvIGluZGVudCBkb1xuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJyAnXG4gICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPiBcIik7XG4gICAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgbG9vcCB0cnVlIChzdWNjIGkpXG4gICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgICAgICAgbG9vcCBmYWxzZSAoc3VjYyBpKVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBpbiBsb29wIHRydWUgMFxuICBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IGFkZF9zcGFjZXMgbiA9IGZvciBpID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICcgJyBkb25lIGluXG4gIGxldCByZWZlcmVuY2VzID0gcmVmIE5vbmUgaW5cbiAgbGV0IHJlYyBsb29wID8oZnN0X3BfaW5fbGk9dHJ1ZSkgPyhpc19pbl9saXN0PWZhbHNlKSBsaXN0X2luZGVudCBsID1cbiAgICAoKiBbbGlzdF9pbmRlbnQ6IGludF0gaXMgdGhlIGluZGVudGF0aW9uIGxldmVsIGluIG51bWJlciBvZiBzcGFjZXMuICopXG4gICAgKCogW2lzX2luX2xpc3Q6IGJvb2xdIGlzIG5lY2Vzc2FyeSB0byBrbm93IGlmIHdlIGFyZSBpbnNpZGUgYSBwYXJhZ3JhcGhcbiAgICAgICB3aGljaCBpcyBpbnNpZGUgYSBsaXN0IGl0ZW0gYmVjYXVzZSB0aG9zZSBuZWVkIHRvIGJlIGluZGVudGVkISAqKVxuICAgIGxldCBsb29wID8oZnN0X3BfaW5fbGk9ZnN0X3BfaW5fbGkpID8oaXNfaW5fbGlzdD1pc19pbl9saXN0KSBsaXN0X2luZGVudCBsID1cbiAgICAgICAgbG9vcCB+ZnN0X3BfaW5fbGk6ZnN0X3BfaW5fbGkgfmlzX2luX2xpc3Q6aXNfaW5fbGlzdCBsaXN0X2luZGVudCBsXG4gICAgaW5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFggeCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHQgLT4gbG9vcCBsaXN0X2luZGVudCB0XG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OjAgaHRtbF9vZl9tZCBtZCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChxdW90ZSB+aW5kZW50Omxpc3RfaW5kZW50IChtYXJrZG93bl9vZl9tZCBxKSk7XG4gICAgICBpZiB0bCA8PiBbXSB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIGlmICFyZWZlcmVuY2VzID0gTm9uZSB0aGVuIHJlZmVyZW5jZXMgOj0gU29tZSByYztcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCAoUmF3KGZhbGxiYWNrI3RvX3N0cmluZyk6OnRsKVxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgaWYgIXJlZmVyZW5jZXMgPSBOb25lIHRoZW4gcmVmZXJlbmNlcyA6PSBTb21lIHJjO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IChSYXcoZmFsbGJhY2sjdG9fc3RyaW5nKTo6dGwpXG4gICAgfCBQYXJhZ3JhcGggW10gOjogdGwgLT4gbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUGFyYWdyYXBoIG1kIDo6IHRsIC0+XG4gICAgICBpZiBpc19pbl9saXN0IHRoZW5cbiAgICAgICAgaWYgZnN0X3BfaW5fbGkgdGhlblxuICAgICAgICAgIGFkZF9zcGFjZXMgKGxpc3RfaW5kZW50LTIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgbG9vcCB+ZnN0X3BfaW5fbGk6ZmFsc2UgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiXFxuXFxuXCI7XG4gICAgICBsb29wIH5mc3RfcF9pbl9saTpmYWxzZSBsaXN0X2luZGVudCB0bFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgOjogdGwgLT5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIhWyVzXSglcyBcXFwiJXNcXFwiKVwiIGFsdCBzcmMgdGl0bGU7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChlc2NhcGVfbWFya2Rvd25fY2hhcmFjdGVycyB0KTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEVtcGggbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIipcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgT2wgbCA6OiB0bCAtPlxuICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nIHRoZW5cbiAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsZXQgYyA9IHJlZiAwIGluICgqIGRvbid0IHVzZSBMaXN0Lml0ZXJpIGJlY2F1c2UgaXQncyBub3QgaW4gMy4xMiAqKVxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIGM7XG4gICAgICAgICAgICAgICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlZC4gXCIgIWM7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgaWYgbGlzdF9pbmRlbnQgPSAwIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVbCBsIDo6IHRsIC0+XG4gICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbicgdGhlblxuICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgICAgICAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIi0gXCI7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgaWYgbGlzdF9pbmRlbnQgPSAwIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBPbHAgbCA6OiB0bCAtPlxuICAgICAgbGV0IGMgPSByZWYgMCBpbiAoKiBkb24ndCB1c2UgTGlzdC5pdGVyaSBiZWNhdXNlIGl0J3Mgbm90IGluIDMuMTIgKilcbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nXG4gICAgICAgIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgIGluY3IgYztcbiAgICAgICAgYnByaW50ZiBiIFwiJWQuIFwiICFjO1xuICAgICAgICBsb29wIH5pc19pbl9saXN0OnRydWUgKGxpc3RfaW5kZW50KzQpIGxpO1xuICAgICAgICAgICAgICAgKCogUGFyYWdyYXBocyA9PiBObyBuZWVkIG9mICdcXG4nICopXG4gICAgICApIGw7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVbHAgbCA6OiB0bCAtPlxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbidcbiAgICAgICAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgYnByaW50ZiBiIFwiKyBcIjtcbiAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICgqIFBhcmFncmFwaHMgPT4gTm8gbmVlZCBvZiAnXFxuJyAqKVxuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgYmVnaW4gbWF0Y2ggdGwgd2l0aFxuICAgICAgfCAoSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfKTo6X1xuICAgICAgfCBOTDo6KEgxIF8gfCBIMiBfIHwgSDMgXyB8IEg0IF8gfCBINSBfIHwgSDYgXyk6Ol8gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbidcbiAgICAgIHwgXyAtPiAoKVxuICAgICAgZW5kO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQ29kZShfbGFuZywgYykgOjogdGwgLT4gKCogRklYTUUgKilcbiAgICAgIGxldCBuID0gKCogY29tcHV0ZSBob3cgbWFueSBiYWNrcXVvdGVzIHdlIG5lZWQgdG8gdXNlICopXG4gICAgICAgIGxldCBmaWx0ZXIgKG46aW50KSAoczppbnQgbGlzdCkgPVxuICAgICAgICAgIGlmIG4gPiAwICYmIG4gPCAxMCB0aGVuXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIGUgLT4gZSA8PiBuKSBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggYyBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyB4IGIgaSA9XG4gICAgICAgICAgaWYgaSA9IGwgdGhlblxuICAgICAgICAgICAgbWF0Y2ggZmlsdGVyIGIgcyB3aXRoXG4gICAgICAgICAgICB8IGhkOjpfIC0+IGhkXG4gICAgICAgICAgICB8IFtdIC0+IHgrMVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIGMuW2ldIHdpdGhcbiAgICAgICAgICAgIHwgJ2AnIC0+IGxvb3AgcyB4IChzdWNjIGIpIChzdWNjIGkpXG4gICAgICAgICAgICB8IF8gLT4gbG9vcCAoZmlsdGVyIGIgcykgKG1heCBiIHgpIDAgKHN1Y2MgaSlcbiAgICAgICAgaW5cbiAgICAgICAgICBsb29wIFsxOzI7Mzs0OzU7Njs3Ozg7OTsxMF0gMCAwIDBcbiAgICAgIGluXG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgICBpZiBjLlswXSA9ICdgJyB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICcgJztcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiBjO1xuICAgICAgICAgIGlmIGMuW1N0cmluZy5sZW5ndGggYyAtIDFdID0gJ2AnIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJyAnO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChTdHJpbmcubWFrZSBuICdgJyk7XG4gICAgICAgIGVuZDtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgbGV0IG4gPSAoKiBjb21wdXRlIGhvdyBtYW55IGJhY2txdW90ZXMgd2UgbmVlZCB0byB1c2UgKilcbiAgICAgICAgbGV0IGZpbHRlciBuIHMgPVxuICAgICAgICAgIGlmIG4gPiAwICYmIG4gPCAxMCB0aGVuXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIGUgLT4gZSA8PiBuKSBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggYyBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyBiIGkgPVxuICAgICAgICAgIGlmIGkgPSBsIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIGZpbHRlciBiIHMgd2l0aFxuICAgICAgICAgICAgICB8IGhkOjpfIC0+IGhkXG4gICAgICAgICAgICAgIHwgW10gLT4gMFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIGMuW2ldIHdpdGhcbiAgICAgICAgICAgIHwgJ2AnIC0+IGxvb3AgcyAoc3VjYyBiKSAoc3VjYyBpKVxuICAgICAgICAgICAgfCBfIC0+IGxvb3AgKGZpbHRlciBiIHMpIDAgKHN1Y2MgaSlcbiAgICAgICAgaW5cbiAgICAgICAgICBsb29wIFszOzQ7NTs2Ozc7ODs5OzEwXSAwIDBcbiAgICAgIGluXG4gICAgICBsZXQgb3V0cHV0X2luZGVudGVkX2Jsb2NrIG4gcyA9XG4gICAgICAgIGxldCByZWMgbG9vcCBwIGkgPVxuICAgICAgICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBwIHdpdGhcbiAgICAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiAoU3RyaW5nLm1ha2UgbiAnICcpO1xuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIHMuW2ldO1xuICAgICAgICAgICAgICAgIGxvb3Agcy5baV0gKHN1Y2MgaSlcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIHMuW2ldO1xuICAgICAgICAgICAgICAgIGxvb3Agcy5baV0gKHN1Y2MgaSlcbiAgICAgICAgaW4gbG9vcCAnXFxuJyAwXG4gICAgICBpblxuICAgICAgICBpZiBuID0gMCB0aGVuICAoKiBGSVhNRSAqKVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAoKiBjYXNlIHdoZXJlIHdlIGNhbid0IHVzZSBiYWNrcXVvdGVzICopXG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgICAgIG91dHB1dF9pbmRlbnRlZF9ibG9jayAoNCtsaXN0X2luZGVudCkgYztcbiAgICAgICAgICAgIGlmIHRsIDw+IFtdIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblxcblwiXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLm1ha2UgKGxpc3RfaW5kZW50KSAnICcpO1xuICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzJXNcXG5cIiAoU3RyaW5nLm1ha2UgbiAnYCcpXG4gICAgICAgICAgICAgIChpZiBsYW5nID0gXCJcIiB0aGVuICFkZWZhdWx0X2xhbmd1YWdlIGVsc2UgbGFuZyk7XG4gICAgICAgICAgICBvdXRwdXRfaW5kZW50ZWRfYmxvY2sgKGxpc3RfaW5kZW50KSBjO1xuICAgICAgICAgICAgaWYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJyB0aGVuXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLm1ha2UgKGxpc3RfaW5kZW50KSAnICcpO1xuICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXFxuXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgICBlbmQ7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEJyIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGJyIC8+XCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIciA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiogKiAqXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBSYXcgcyA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUmF3X2Jsb2NrIHMgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBbXSkgOjogdGxcbiAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiAvPlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgIGxldCBhID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYSk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgaWYgYSA9PSBhdHRycyB0aGVuXG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgYm9keVxuICAgICAgZWxzZVxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sX29mX21kIGJvZHkpO1xuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IChIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSk6OnRsIC0+XG4gICAgICBsZXQgbmVlZHNfbmV3bGluZXMgPVxuICAgICAgICBtYXRjaCB0bCB3aXRoXG4gICAgICAgIHwgTkwgOjogUGFyYWdyYXBoIHAgOjogX1xuICAgICAgICB8IFBhcmFncmFwaCBwIDo6IF8gLT4gcCA8PiBbXVxuICAgICAgICB8IChIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF9cbiAgICAgICAgICB8IFVsIF8gfCBPbCBfIHwgVWxwIF8gfCBPbHAgXyB8IENvZGUgKF8sIF8pIHwgQ29kZV9ibG9jayAoXywgXylcbiAgICAgICAgICB8IFRleHQgXyB8IEVtcGggXyB8IEJvbGQgXyB8IEJyIHxIciB8IFVybCAoXywgXywgXylcbiAgICAgICAgICB8IFJlZiAoXywgXywgXywgXykgfCBJbWdfcmVmIChfLCBfLCBfLCBfKVxuICAgICAgICAgIHwgSHRtbCAoXywgXywgXylcbiAgICAgICAgICB8IEJsb2NrcXVvdGUgXyB8IEltZyAoXywgXywgXykpIDo6IF8gLT4gdHJ1ZVxuICAgICAgICB8ICggSHRtbF9ibG9jayAoXywgXywgXykgfCBIdG1sX2NvbW1lbnQgX1xuICAgICAgICAgIHwgUmF3IF98UmF3X2Jsb2NrIF8pIDo6IF8tPiBmYWxzZVxuICAgICAgICB8IFggXyA6OiBfIC0+IGZhbHNlXG4gICAgICAgIHwgTkwgOjogXyAtPiBmYWxzZVxuICAgICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICBpblxuICAgICAgaWYgYm9keSA9IFtdICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgdGhlblxuICAgICAgICAoXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIC8+XCI7XG4gICAgICAgICAgaWYgbmVlZHNfbmV3bGluZXMgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXFxuXCI7XG4gICAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgICAgICApXG4gICAgICBlbHNlXG4gICAgICAgIChcbiAgICAgICAgICBsZXQgYSA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYSk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBpZiBhID09IGF0dHJzIHRoZW5cbiAgICAgICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgYm9keVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxfb2ZfbWQgYm9keSk7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgICAgICBpZiBuZWVkc19uZXdsaW5lcyB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cXG5cIjtcbiAgICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgICAgIClcbiAgICB8IEh0bWxfY29tbWVudCBzIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgIGlmIHRpdGxlID0gXCJcIiB0aGVuXG4gICAgICAgIGJwcmludGYgYiBcIlslc10oJXMpXCIgKG1hcmtkb3duX29mX21kIHMpIGhyZWZcbiAgICAgIGVsc2VcbiAgICAgICAgYnByaW50ZiBiIFwiWyVzXSglcyBcXFwiJXNcXFwiKVwiIChtYXJrZG93bl9vZl9tZCBzKSBocmVmIHRpdGxlO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDEgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEgyIG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDMgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDQgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEg1IG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgTkwgOjogdGwgLT5cbiAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA9IDFcbiAgICAgIHx8IChCdWZmZXIubGVuZ3RoIGIgPiAxICYmXG4gICAgICAgICAgbm90KEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPSAnXFxuJ1xuICAgICAgICAgICAgICAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDIpID0gJ1xcbicpKVxuICAgICAgdGhlblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgICBsb29wIDAgbWQ7XG4gICAgYmVnaW4gbWF0Y2ggIXJlZmVyZW5jZXMgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgciAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1biAobmFtZSwgKHVybCwgdGl0bGUpKSAtPlxuICAgICAgICAgICAgICAgaWYgdGl0bGUgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgYnByaW50ZiBiIFwiWyVzXTogJXMgXFxuXCIgbmFtZSB1cmxcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgYnByaW50ZiBiIFwiWyVzXTogJXMgXFxcIiVzXFxcIlxcblwiIG5hbWUgdXJsIHRpdGxlXG4gICAgICAgICAgICApXG4gICAgICAgICAgICByI2dldF9hbGxcbiAgICBlbmQ7XG4gICAgbGV0IHJlcyA9IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIG1hcmtkb3duX29mX21kKCVTKSA9PiAlU1xcbiUhXCJcbiAgICAgICAgKHNleHByX29mX21kIG1kKSByZXM7XG4gICAgcmVzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEltcGxlbWVudGF0aW9uIG5vdGVzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICAqIC0gVGhpcyBtb2R1bGUgc2hvdWxkIGRlcGVuZCBvbiBPQ2FtbCdzIHN0YW5kYXJkIGxpYnJhcnkgb25seSBhbmRcbiAgICogc2hvdWxkIGJlIGFzICdwdXJlIE9DYW1sJyAoaS5lLiBkZXBlbmQgYXMgbGVhc3QgYXMgcG9zc2libGUgb25cbiAgICogZXh0ZXJuYWwgdG9vbHMpIGFzIHBvc3NpYmxlLlxuXG4gICAqIC0gYHdoaWxlJyBsb29wcyBhcmUgc29tZXRpbWVzIHByZWZlcnJlZCB0byByZWN1cnNpb24gYmVjYXVzZSB0aGlzXG4gICAqIG1heSBiZSB1c2VkIG9uIHN5c3RlbXMgd2hlcmUgdGFpbCByZWN1cnNpb24gaXMgbm90IHdlbGxcbiAgICogc3VwcG9ydGVkLiAoSSB0cmllZCB0byB3cml0ZSBcIndoaWxlXCIgYXMgb2Z0ZW4gYXMgcG9zc2libGUsIGJ1dCBpdFxuICAgKiB0dXJuZWQgb3V0IHRoYXQgaXQgd2FzIHByZXR0eSBpbmNvbnZlbmllbnQsIHNvIEkgZG8gdXNlXG4gICAqIHJlY3Vyc2lvbi4gIFdoZW4gSSBoYXZlIHRpbWUsIEknbGwgZG8gc29tZSB0ZXN0cyBhbmQgc2VlIGlmIElcbiAgICogbmVlZCB0byBjb252ZXJ0IHJlY3Vyc2l2ZSBsb29wcyBpbnRvIGl0ZXJhdGl2ZSBsb29wcy4gU29ycnkgaWYgaXRcbiAgICogbWFrZXMgaXQgaGFyZGVyIHRvIHJlYWQuKVxuXG4qKVxuXG4oKiBjbGFzcyB0eXBlIHRhZyA9IG9iamVjdCBtZXRob2QgaXNfbWUgOiAnYS4gJ2EgLT4gYm9vbCBlbmQgKilcblxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cblxudHlwZSB0b2tlbiA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2tcbnR5cGUgdCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuXG5sZXQgc3RyaW5nX29mX3Rva2VuID0gZnVuY3Rpb25cbiAgfCBUYWcgKG5hbWUsIG8pIC0+XG4gICAgaWYgT21kX3V0aWxzLmRlYnVnIHRoZW4gXCJUQUcoXCJebmFtZV5cIilcIiBeIG8jdG9fc3RyaW5nIGVsc2UgbyN0b19zdHJpbmdcbiAgfCBBbXBlcnNhbmQgLT4gXCImXCJcbiAgfCBBbXBlcnNhbmRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnJidcbiAgfCBBdCAtPiBcIkBcIlxuICB8IEF0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ0AnXG4gIHwgQmFja3F1b3RlIC0+IFwiYFwiXG4gIHwgQmFja3F1b3RlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ2AnXG4gIHwgQmFja3NsYXNoIC0+IFwiXFxcXFwiXG4gIHwgQmFja3NsYXNocyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1xcXFwnXG4gIHwgQmFyIC0+IFwifFwiXG4gIHwgQmFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ3wnXG4gIHwgQ2FyZXQgLT4gXCJeXCJcbiAgfCBDYXJldHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdeJ1xuICB8IENicmFjZSAtPiBcIn1cIlxuICB8IENicmFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd9J1xuICB8IENvbG9uIC0+IFwiOlwiXG4gIHwgQ29sb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnOidcbiAgfCBDb21tYSAtPiBcIixcIlxuICB8IENvbW1hcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJywnXG4gIHwgQ3BhcmVudGhlc2lzIC0+IFwiKVwiXG4gIHwgQ3BhcmVudGhlc2lzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyknXG4gIHwgQ2JyYWNrZXQgLT4gXCJdXCJcbiAgfCBDYnJhY2tldHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICddJ1xuICB8IERvbGxhciAtPiBcIiRcIlxuICB8IERvbGxhcnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICckJ1xuICB8IERvdCAtPiBcIi5cIlxuICB8IERvdHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcuJ1xuICB8IERvdWJsZXF1b3RlIC0+IFwiXFxcIlwiXG4gIHwgRG91YmxlcXVvdGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXCInXG4gIHwgRXhjbGFtYXRpb24gLT4gXCIhXCJcbiAgfCBFeGNsYW1hdGlvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICchJ1xuICB8IEVxdWFsIC0+IFwiPVwiXG4gIHwgRXF1YWxzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPSdcbiAgfCBHcmVhdGVydGhhbiAtPiBcIj5cIlxuICB8IEdyZWF0ZXJ0aGFucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJz4nXG4gIHwgSGFzaCAtPiBcIiNcIlxuICB8IEhhc2hzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnIydcbiAgfCBMZXNzdGhhbiAtPiBcIjxcIlxuICB8IExlc3N0aGFucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJzwnXG4gIHwgTWludXMgLT4gXCItXCJcbiAgfCBNaW51c3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICctJ1xuICB8IE5ld2xpbmUgLT4gXCJcXG5cIlxuICB8IE5ld2xpbmVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXFxuJ1xuICB8IE51bWJlciBzIC0+IHNcbiAgfCBPYnJhY2UgLT4gXCJ7XCJcbiAgfCBPYnJhY2VzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAneydcbiAgfCBPcGFyZW50aGVzaXMgLT4gXCIoXCJcbiAgfCBPcGFyZW50aGVzaXNzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKCdcbiAgfCBPYnJhY2tldCAtPiBcIltcIlxuICB8IE9icmFja2V0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1snXG4gIHwgUGVyY2VudCAtPiBcIiVcIlxuICB8IFBlcmNlbnRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnJSdcbiAgfCBQbHVzIC0+IFwiK1wiXG4gIHwgUGx1c3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcrJ1xuICB8IFF1ZXN0aW9uIC0+IFwiP1wiXG4gIHwgUXVlc3Rpb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPydcbiAgfCBRdW90ZSAtPiBcIidcIlxuICB8IFF1b3RlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1xcJydcbiAgfCBTZW1pY29sb24gLT4gXCI7XCJcbiAgfCBTZW1pY29sb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnOydcbiAgfCBTbGFzaCAtPiBcIi9cIlxuICB8IFNsYXNocyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJy8nXG4gIHwgU3BhY2UgLT4gXCIgXCJcbiAgfCBTcGFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcgJ1xuICB8IFN0YXIgLT4gXCIqXCJcbiAgfCBTdGFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyonXG4gIHwgVGFiIC0+IFwiICAgIFwiXG4gIHwgVGFicyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKCgyK24pKjQpICcgJ1xuICB8IFRpbGRlIC0+IFwiflwiXG4gIHwgVGlsZGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnfidcbiAgfCBVbmRlcnNjb3JlIC0+IFwiX1wiXG4gIHwgVW5kZXJzY29yZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdfJ1xuICB8IFdvcmQgcyAtPiBzXG5cblxubGV0IHNpemVfYW5kX25ld2xpbmVzID0gZnVuY3Rpb25cbiAgfCBUYWcgXyAtPiAoMCwgMClcbiAgfCBBbXBlcnNhbmQgfCBBdCB8IEJhY2txdW90ZSB8IEJhY2tzbGFzaCB8IEJhciB8IENhcmV0IHwgQ2JyYWNlXG4gIHwgQ29sb24gfCBDb21tYSB8IENwYXJlbnRoZXNpcyB8IENicmFja2V0IHwgRG9sbGFyIHwgRG90XG4gIHwgRG91YmxlcXVvdGUgfCBFeGNsYW1hdGlvbiB8IEVxdWFsIHwgR3JlYXRlcnRoYW4gfCBIYXNoIHwgTGVzc3RoYW5cbiAgfCBNaW51cyB8IE9icmFjZSB8IE9wYXJlbnRoZXNpcyB8IE9icmFja2V0IHwgUGVyY2VudCB8IFBsdXNcbiAgfCBRdWVzdGlvbiB8IFF1b3RlIHwgU2VtaWNvbG9uIHwgU2xhc2ggfCBTcGFjZSB8IFN0YXIgfCBUYWJcbiAgfCBUaWxkZSB8IFVuZGVyc2NvcmUgLT4gKDEsIDApXG4gIHwgQW1wZXJzYW5kcyB4IHwgQXRzIHggfCBCYWNrcXVvdGVzIHggfCBCYWNrc2xhc2hzIHggfCBCYXJzIHggfCBDYXJldHMgeFxuICB8IENicmFjZXMgeCB8IENvbG9ucyB4IHwgQ29tbWFzIHggfCBDcGFyZW50aGVzaXNzIHggfCBDYnJhY2tldHMgeFxuICB8IERvbGxhcnMgeCB8IERvdHMgeFxuICB8IERvdWJsZXF1b3RlcyB4IHwgRXhjbGFtYXRpb25zIHggfCBFcXVhbHMgeCB8IEdyZWF0ZXJ0aGFucyB4IHwgSGFzaHMgeFxuICB8IExlc3N0aGFucyB4XG4gIHwgTWludXNzIHggfCBPYnJhY2VzIHggfCBPcGFyZW50aGVzaXNzIHggfCBPYnJhY2tldHMgeCB8IFBlcmNlbnRzIHggfCBQbHVzcyB4XG4gIHwgUXVlc3Rpb25zIHggfCBRdW90ZXMgeCB8IFNlbWljb2xvbnMgeCB8IFNsYXNocyB4IHwgU3BhY2VzIHggfCBTdGFycyB4XG4gIHwgVGFicyB4XG4gIHwgVGlsZGVzIHggfCBVbmRlcnNjb3JlcyB4IC0+ICgyK3gsIDApXG4gIHwgTmV3bGluZSAtPiAoMCwgMSlcbiAgfCBOZXdsaW5lcyB4IC0+ICgwLCAyK3gpXG4gIHwgTnVtYmVyIHMgfCBXb3JkIHMgLT4gKFN0cmluZy5sZW5ndGggcywgMClcblxubGV0IGxlbmd0aCB0ID1cbiAgbGV0IGMsIG5sID0gc2l6ZV9hbmRfbmV3bGluZXMgdCBpblxuICBjICsgbmxcblxubGV0IHNwbGl0X2ZpcnN0ID0gZnVuY3Rpb25cbiAgfCBBbXBlcnNhbmRzIG4gLT4gQW1wZXJzYW5kLCAoaWYgbiA+IDAgdGhlbiBBbXBlcnNhbmRzKG4tMSkgZWxzZSBBbXBlcnNhbmQpXG4gIHwgQXRzIG4gLT4gQXQsIChpZiBuID4gMCB0aGVuIEF0cyhuLTEpIGVsc2UgQXQpXG4gIHwgQmFja3F1b3RlcyBuIC0+IEJhY2txdW90ZSwgKGlmIG4gPiAwIHRoZW4gQmFja3F1b3RlcyhuLTEpIGVsc2UgQmFja3F1b3RlKVxuICB8IEJhY2tzbGFzaHMgbiAtPiBCYWNrc2xhc2gsIChpZiBuID4gMCB0aGVuIEJhY2tzbGFzaHMobi0xKSBlbHNlIEJhY2tzbGFzaClcbiAgfCBCYXJzIG4gLT4gQmFyLCAoaWYgbiA+IDAgdGhlbiBCYXJzKG4tMSkgZWxzZSBCYXIpXG4gIHwgQ2FyZXRzIG4gLT4gQ2FyZXQsIChpZiBuID4gMCB0aGVuIENhcmV0cyhuLTEpIGVsc2UgQ2FyZXQpXG4gIHwgQ2JyYWNlcyBuIC0+IENicmFjZSwgKGlmIG4gPiAwIHRoZW4gQ2JyYWNlcyhuLTEpIGVsc2UgQ2JyYWNlKVxuICB8IENvbG9ucyBuIC0+IENvbG9uLCAoaWYgbiA+IDAgdGhlbiBDb2xvbnMobi0xKSBlbHNlIENvbG9uKVxuICB8IENvbW1hcyBuIC0+IENvbW1hLCAoaWYgbiA+IDAgdGhlbiBDb21tYXMobi0xKSBlbHNlIENvbW1hKVxuICB8IENwYXJlbnRoZXNpc3MgbiAtPiBDcGFyZW50aGVzaXMsIChpZiBuID4gMCB0aGVuIENwYXJlbnRoZXNpc3Mobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQ3BhcmVudGhlc2lzKVxuICB8IENicmFja2V0cyBuIC0+IENicmFja2V0LCAoaWYgbiA+IDAgdGhlbiBDYnJhY2tldHMobi0xKSBlbHNlIENicmFja2V0KVxuICB8IERvbGxhcnMgbiAtPiBEb2xsYXIsIChpZiBuID4gMCB0aGVuIERvbGxhcnMobi0xKSBlbHNlIERvbGxhcilcbiAgfCBEb3RzIG4gLT4gRG90LCAoaWYgbiA+IDAgdGhlbiBEb3RzKG4tMSkgZWxzZSBEb3QpXG4gIHwgRG91YmxlcXVvdGVzIG4gLT4gRG91YmxlcXVvdGUsIChpZiBuID4gMCB0aGVuIERvdWJsZXF1b3RlcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRG91YmxlcXVvdGUpXG4gIHwgRXhjbGFtYXRpb25zIG4gLT4gRXhjbGFtYXRpb24sIChpZiBuID4gMCB0aGVuIEV4Y2xhbWF0aW9ucyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRXhjbGFtYXRpb24pXG4gIHwgRXF1YWxzIG4gLT4gRXF1YWwsIChpZiBuID4gMCB0aGVuIEVxdWFscyhuLTEpIGVsc2UgRXF1YWwpXG4gIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW4sIChpZiBuID4gMCB0aGVuIEdyZWF0ZXJ0aGFucyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgR3JlYXRlcnRoYW4pXG4gIHwgSGFzaHMgbiAtPiBIYXNoLCAoaWYgbiA+IDAgdGhlbiBIYXNocyhuLTEpIGVsc2UgSGFzaClcbiAgfCBMZXNzdGhhbnMgbiAtPiBMZXNzdGhhbiwgKGlmIG4gPiAwIHRoZW4gTGVzc3RoYW5zKG4tMSkgZWxzZSBMZXNzdGhhbilcbiAgfCBNaW51c3MgbiAtPiBNaW51cywgKGlmIG4gPiAwIHRoZW4gTWludXNzKG4tMSkgZWxzZSBNaW51cylcbiAgfCBOZXdsaW5lcyBuIC0+IE5ld2xpbmUsIChpZiBuID4gMCB0aGVuIE5ld2xpbmVzKG4tMSkgZWxzZSBOZXdsaW5lKVxuICB8IE9icmFjZXMgbiAtPiBPYnJhY2UsIChpZiBuID4gMCB0aGVuIE9icmFjZXMobi0xKSBlbHNlIE9icmFjZSlcbiAgfCBPcGFyZW50aGVzaXNzIG4gLT4gT3BhcmVudGhlc2lzLCAoaWYgbiA+IDAgdGhlbiBPcGFyZW50aGVzaXNzKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9wYXJlbnRoZXNpcylcbiAgfCBPYnJhY2tldHMgbiAtPiBPYnJhY2tldCwgKGlmIG4gPiAwIHRoZW4gT2JyYWNrZXRzKG4tMSkgZWxzZSBPYnJhY2tldClcbiAgfCBQZXJjZW50cyBuIC0+IFBlcmNlbnQsIChpZiBuID4gMCB0aGVuIFBlcmNlbnRzKG4tMSkgZWxzZSBQZXJjZW50KVxuICB8IFBsdXNzIG4gLT4gUGx1cywgKGlmIG4gPiAwIHRoZW4gUGx1c3Mobi0xKSBlbHNlIFBsdXMpXG4gIHwgUXVlc3Rpb25zIG4gLT4gUXVlc3Rpb24sIChpZiBuID4gMCB0aGVuIFF1ZXN0aW9ucyhuLTEpIGVsc2UgUXVlc3Rpb24pXG4gIHwgUXVvdGVzIG4gLT4gUXVvdGUsIChpZiBuID4gMCB0aGVuIFF1b3RlcyhuLTEpIGVsc2UgUXVvdGUpXG4gIHwgU2VtaWNvbG9ucyBuIC0+IFNlbWljb2xvbiwgKGlmIG4gPiAwIHRoZW4gU2VtaWNvbG9ucyhuLTEpIGVsc2UgU2VtaWNvbG9uKVxuICB8IFNsYXNocyBuIC0+IFNsYXNoLCAoaWYgbiA+IDAgdGhlbiBTbGFzaHMobi0xKSBlbHNlIFNsYXNoKVxuICB8IFNwYWNlcyBuIC0+IFNwYWNlLCAoaWYgbiA+IDAgdGhlbiBTcGFjZXMobi0xKSBlbHNlIFNwYWNlKVxuICB8IFN0YXJzIG4gLT4gU3RhciwgKGlmIG4gPiAwIHRoZW4gU3RhcnMobi0xKSBlbHNlIFN0YXIpXG4gIHwgVGFicyBuIC0+IFRhYiwgKGlmIG4gPiAwIHRoZW4gVGFicyhuLTEpIGVsc2UgVGFiKVxuICB8IFRpbGRlcyBuIC0+IFRpbGRlLCAoaWYgbiA+IDAgdGhlbiBUaWxkZXMobi0xKSBlbHNlIFRpbGRlKVxuICB8IFVuZGVyc2NvcmVzIG4gLT4gVW5kZXJzY29yZSwgKGlmIG4gPiAwIHRoZW4gVW5kZXJzY29yZXMobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVbmRlcnNjb3JlKVxuICB8IEFtcGVyc2FuZCB8IEF0IHwgQmFja3F1b3RlIHwgQmFja3NsYXNoIHwgQmFyIHwgQ2FyZXQgfCBDYnJhY2UgfCBDb2xvblxuICB8IENvbW1hIHwgQ3BhcmVudGhlc2lzIHwgQ2JyYWNrZXQgfCBEb2xsYXIgfCBEb3QgfCBEb3VibGVxdW90ZVxuICB8IEV4Y2xhbWF0aW9uIHwgRXF1YWwgfCBHcmVhdGVydGhhbiB8IEhhc2ggfCBMZXNzdGhhbiB8IE1pbnVzXG4gIHwgTmV3bGluZSB8IE51bWJlciBfIHwgT2JyYWNlIHwgT3BhcmVudGhlc2lzIHwgT2JyYWNrZXQgfCBQZXJjZW50XG4gIHwgUGx1cyB8IFF1ZXN0aW9uIHwgUXVvdGUgfCBTZW1pY29sb24gfCBTbGFzaCB8IFNwYWNlIHwgU3RhciB8IFRhYlxuICB8IFRpbGRlIHwgVW5kZXJzY29yZSB8IFRhZyBfIHwgV29yZCBfIC0+XG4gICAgIGludmFsaWRfYXJnIFwiT21kX2xleGVyLnNwbGl0X2ZpcnN0XCJcblxubW9kdWxlIHR5cGUgSW5wdXQgPVxuc2lnXG4gIHR5cGUgdFxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGdldCA6IHQgLT4gaW50IC0+IGNoYXJcbiAgdmFsIHN1YiA6IHQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IHN0cmluZ1xuZW5kXG5cbm1vZHVsZSBMZXgoSSA6IElucHV0KSA6XG5zaWdcbiAgdmFsIGxleCA6IEkudCAtPiB0XG5lbmQgPVxuc3RydWN0XG4gIGxldCBsZXggKHMgOiBJLnQpID1cbiAgICBsZXQgcmVzdWx0ID0gcmVmIFtdIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsID0gSS5sZW5ndGggcyBpblxuICAgIGxldCByY291bnQgYyA9XG4gICAgICAoKiBbcmNvdW50IGNdIHJldHVybnMgdGhlIG51bWJlciBvZiBpbW1lZGlhdGUgY29uc2VjdXRpdmVcbiAgICAgICAgIG9jY3VycmVuY2VzIG9mIFtjXS4gIEJ5IHNpZGUtZWZmZWN0LCBpdCBpbmNyZWFzZXMgdGhlIHJlZmVyZW5jZVxuICAgICAgICAgY291bnRlciBbaV0uICopXG4gICAgICBsZXQgcmVjIGxvb3AgciA9XG4gICAgICAgIGlmICFpID0gbCB0aGVuIHJcbiAgICAgICAgZWxzZSBpZiBJLmdldCBzICFpID0gYyB0aGVuIChpbmNyIGk7IGxvb3AgKHIrMSkpXG4gICAgICAgIGVsc2UgclxuICAgICAgaW5cbiAgICAgIGxvb3AgMVxuICAgIGluXG4gICAgbGV0IHdvcmQgKCkgPVxuICAgICAgbGV0IHN0YXJ0ID0gIWkgaW5cbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgaWYgIWkgPSBsIHRoZW5cbiAgICAgICAgICAgIFdvcmQoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBJLmdldCBzICFpIHdpdGhcbiAgICAgICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIHwgJyMnIHwgJyonIHwgJy0nIHwgJysnIHwgJ2AnIHwgJ1xcJydcbiAgICAgICAgICAgIHwgJ1wiJyB8ICdcXFxcJyB8ICdfJyB8ICdbJyB8ICddJyB8ICd7JyB8ICd9JyB8ICcoJyB8ICcpJyB8ICc6J1xuICAgICAgICAgICAgfCAnOycgfCAnPicgfCAnficgfCAnPCcgfCAnQCcgfCAnJicgfCAnfCcgfCAnXicgfCAnLicgfCAnLydcbiAgICAgICAgICAgIHwgJyQnIHwgJyUnIHwgJyEnIHwgJz8nIHwgJz0nIC0+XG4gICAgICAgICAgICAgICAgV29yZChJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgICAgICAgfCBjIC0+IGluY3IgaTsgbG9vcCgpXG4gICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGxvb3AoKVxuICAgIGluXG4gICAgbGV0IG1heWJlX251bWJlciAoKSA9XG4gICAgICBsZXQgc3RhcnQgPSAhaSBpblxuICAgICAgd2hpbGVcbiAgICAgICAgIWkgPCBsICYmXG4gICAgICAgIG1hdGNoIEkuZ2V0IHMgIWkgd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGRvXG4gICAgICAgIGluY3IgaVxuICAgICAgZG9uZTtcbiAgICAgIGlmICFpID0gbCB0aGVuXG4gICAgICAgIE51bWJlcihJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBJLmdldCBzICFpIHdpdGhcbiAgICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyB8ICcjJyB8ICcqJyB8ICctJyB8ICcrJyB8ICdgJyB8ICdcXCcnIHwgJ1wiJ1xuICAgICAgICAgIHwgJ1xcXFwnIHwgJ18nIHwgJ1snIHwgJ10nIHwgJ3snIHwgJ30nIHwgJygnIHwgJyknIHwgJzonIHwgJzsnIHwgJz4nXG4gICAgICAgICAgfCAnficgfCAnPCcgfCAnQCcgfCAnJicgfCAnfCcgfCAnXicgfCAnLicgfCAnLycgfCAnJCcgfCAnJScgfCAnISdcbiAgICAgICAgICB8ICc/JyB8ICc9JyAtPlxuICAgICAgICAgICAgICBOdW1iZXIoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaSA6PSBzdGFydDtcbiAgICAgICAgICAgICAgd29yZCgpXG4gICAgICAgIGVuZFxuICAgIGluXG5cbiAgICBsZXQgbl9vY2MgYyA9IGluY3IgaTsgcmNvdW50IGMgaW5cblxuICAgIHdoaWxlICFpIDwgbCBkb1xuICAgICAgbGV0IGMgPSBJLmdldCBzICFpIGluXG4gICAgICBsZXQgdyA9IG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcgJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU3BhY2UgZWxzZSBTcGFjZXMgKG4tMilcbiAgICAgICAgfCAnXFx0JyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTcGFjZXMoMikgZWxzZSBTcGFjZXMoNCpuLTIpXG4gICAgICAgIHwgJ1xcbicgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gTmV3bGluZSBlbHNlIE5ld2xpbmVzIChuLTIpXG4gICAgICAgIHwgJ1xccicgLT4gKCogZWxpbWluYXRpbmcgXFxyIGJ5IGNvbnZlcnRpbmcgYWxsIHN0eWxlcyB0byB1bml4IHN0eWxlICopXG4gICAgICAgICAgaW5jciBpO1xuICAgICAgICAgIGxldCByZWMgY291bnRfcm4geCA9XG4gICAgICAgICAgICBpZiAhaSA8IGwgJiYgSS5nZXQgcyAoIWkpID0gJ1xcbicgdGhlblxuICAgICAgICAgICAgICBpZiAhaSArIDEgPCBsICYmIEkuZ2V0IHMgKCFpKzEpID0gJ1xccicgdGhlblxuICAgICAgICAgICAgICAgIChpIDo9ICFpICsgMjsgY291bnRfcm4gKHgrMSkpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB4XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBybiA9IDEgKyBjb3VudF9ybiAwIGluXG4gICAgICAgICAgaWYgcm4gPSAxIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIG5fb2NjIGMgd2l0aFxuICAgICAgICAgICAgfCAxIC0+IE5ld2xpbmVcbiAgICAgICAgICAgIHwgeCAtPiBhc3NlcnQoeD49Mik7IE5ld2xpbmVzKHgtMilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoYXNzZXJ0KHJuPj0yKTtOZXdsaW5lcyhybi0yKSlcbiAgICAgICAgfCAnIycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEhhc2ggZWxzZSBIYXNocyAobi0yKVxuICAgICAgICB8ICcqJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU3RhciBlbHNlIFN0YXJzIChuLTIpXG4gICAgICAgIHwgJy0nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBNaW51cyBlbHNlIE1pbnVzcyAobi0yKVxuICAgICAgICB8ICcrJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUGx1cyBlbHNlIFBsdXNzIChuLTIpXG4gICAgICAgIHwgJ2AnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBCYWNrcXVvdGUgZWxzZSBCYWNrcXVvdGVzIChuLTIpXG4gICAgICAgIHwgJ1xcJycgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUXVvdGUgZWxzZSBRdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXCInICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb3VibGVxdW90ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBEb3VibGVxdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXFxcXCcgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQmFja3NsYXNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEJhY2tzbGFzaHMgKG4tMilcbiAgICAgICAgfCAnXycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFVuZGVyc2NvcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVW5kZXJzY29yZXMgKG4tMilcbiAgICAgICAgfCAnWycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9icmFja2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9icmFja2V0cyAobi0yKVxuICAgICAgICB8ICddJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2JyYWNrZXQgZWxzZSBDYnJhY2tldHMgKG4tMilcbiAgICAgICAgfCAneycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9icmFjZSBlbHNlIE9icmFjZXMgKG4tMilcbiAgICAgICAgfCAnfScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENicmFjZSBlbHNlIENicmFjZXMgKG4tMilcbiAgICAgICAgfCAnKCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9wYXJlbnRoZXNpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBPcGFyZW50aGVzaXNzIChuLTIpXG4gICAgICAgIHwgJyknICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDcGFyZW50aGVzaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQ3BhcmVudGhlc2lzcyAobi0yKVxuICAgICAgICB8ICc6JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ29sb24gZWxzZSBDb2xvbnMgKG4tMilcbiAgICAgICAgfCAnOycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNlbWljb2xvbiBlbHNlIFNlbWljb2xvbnMgKG4tMilcbiAgICAgICAgfCAnPicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEdyZWF0ZXJ0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEdyZWF0ZXJ0aGFucyAobi0yKVxuICAgICAgICB8ICd+JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gVGlsZGUgZWxzZSBUaWxkZXMgKG4tMilcbiAgICAgICAgfCAnPCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIExlc3N0aGFuIGVsc2UgTGVzc3RoYW5zIChuLTIpXG4gICAgICAgIHwgJ0AnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBBdCBlbHNlIEF0cyAobi0yKVxuICAgICAgICB8ICcmJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQW1wZXJzYW5kIGVsc2UgQW1wZXJzYW5kcyAobi0yKVxuICAgICAgICB8ICd8JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQmFyIGVsc2UgQmFycyAobi0yKVxuICAgICAgICB8ICdeJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2FyZXQgZWxzZSBDYXJldHMgKG4tMilcbiAgICAgICAgfCAnLCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENvbW1hIGVsc2UgQ29tbWFzIChuLTIpXG4gICAgICAgIHwgJy4nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb3QgZWxzZSBEb3RzIChuLTIpXG4gICAgICAgIHwgJy8nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTbGFzaCBlbHNlIFNsYXNocyAobi0yKVxuICAgICAgICB8ICckJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRG9sbGFyIGVsc2UgRG9sbGFycyAobi0yKVxuICAgICAgICB8ICclJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUGVyY2VudCBlbHNlIFBlcmNlbnRzIChuLTIpXG4gICAgICAgIHwgJz0nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBFcXVhbCBlbHNlIEVxdWFscyAobi0yKVxuICAgICAgICB8ICchJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRXhjbGFtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRXhjbGFtYXRpb25zIChuLTIpXG4gICAgICAgIHwgJz8nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBRdWVzdGlvbiBlbHNlIFF1ZXN0aW9ucyAobi0yKVxuICAgICAgICB8ICcwJyAuLiAnOScgLT4gbWF5YmVfbnVtYmVyKClcbiAgICAgICAgfCBjIC0+IHdvcmQoKSBpblxuICAgICAgcmVzdWx0IDo9IHcgOjogIXJlc3VsdFxuICAgIGRvbmU7XG4gICAgTGlzdC5yZXYgIXJlc3VsdFxuZW5kXG5cbm1vZHVsZSBMZXhfc3RyaW5nID0gTGV4KFN0cmluZ0xhYmVscylcbmxldCBsZXggPSBMZXhfc3RyaW5nLmxleFxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLFxuICAgICAgICAgICAgICAgICAgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsXG4gICAgICAgICAgICAgICAgICBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxubW9kdWxlIEJpZ2FycmF5X2lucHV0IDogSW5wdXQgd2l0aCB0eXBlIHQgPSBiaWdzdHJpbmcgPVxuc3RydWN0XG4gIG1vZHVsZSBCQSA9IEJpZ2FycmF5XG5cbiAgdHlwZSB0ID0gYmlnc3RyaW5nXG4gIGxldCBnZXQgPSBCQS5BcnJheTEuZ2V0XG4gIGxldCBsZW5ndGggPSBCQS5BcnJheTEuZGltXG4gIGxldCBzdWIgYXJyIH5wb3MgfmxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBwb3MgPCAwIHx8IHBvcyArIGxlbiA+IEJBLkFycmF5MS5kaW0gYXJyXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5X2lucHV0LnN1YlwiO1xuICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBCeXRlcy51bnNhZmVfc2V0IHMgaSAoQkEuQXJyYXkxLnVuc2FmZV9nZXQgYXJyIChpICsgcG9zKSlcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc1xuZW5kXG5tb2R1bGUgTGV4X2JpZ2FycmF5ID0gTGV4KEJpZ2FycmF5X2lucHV0KVxubGV0IGxleF9iaWdhcnJheSA9IExleF9iaWdhcnJheS5sZXhcblxubGV0IG1ha2Vfc3BhY2UgPSBmdW5jdGlvblxuICB8IDAgLT4gaW52YWxpZF9hcmcgXCJPbWRfbGV4ZXIubWFrZV9zcGFjZVwiXG4gIHwgMSAtPiBTcGFjZVxuICB8IG4gLT4gaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIk9tZF9sZXhlci5tYWtlX3NwYWNlXCIgZWxzZSBTcGFjZXMgKG4tMilcblxuXG4oKlxuKCoqIFtzdHJpbmdfb2ZfdGwgbF0gcmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGwuXG4gICAgW2VzdHJpbmdfb2ZfdGwgbF0gcmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbFxuICAgIChzYW1lIHNlbWFudGljcyBhcyBbU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90bCBsKV0pLiAqKVxubGV0IHN0cmluZ19vZl90bCwgZXN0cmluZ19vZl90bCA9XG4gIGxldCBnIGVzY2FwZWQgdGwgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA0MiBpblxuICAgIGxldCByZWMgbG9vcCA6ICdhIHQgbGlzdCAtPiB1bml0ID0gZnVuY3Rpb25cbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChpZiBlc2NhcGVkIHRoZW4gU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90IGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzdHJpbmdfb2ZfdCBlKTtcbiAgICAgICAgICBsb29wIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgKClcbiAgICBpblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIChsb29wIHRsOyBiKVxuICBpbiBnIGZhbHNlLCBnIHRydWVcbiopXG5cbmxldCBzdHJpbmdfb2ZfdG9rZW5zIHRsID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICBMaXN0Lml0ZXIgKGZ1biBlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl90b2tlbiBlKSkgdGw7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IGRlc3RyaW5nX29mX3Rva2VucyA/KGxpbWl0PW1heF9pbnQpIHRsID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgbGV0IHJlYyBsb29wIChpOmludCkgKHRsaXN0OnRvayBsaXN0KSA6IHVuaXQgPSBtYXRjaCB0bGlzdCB3aXRoXG4gICAgfCBlOjp0bCAtPlxuICAgICAgICBpZiBsaW1pdCA9IGkgdGhlblxuICAgICAgICAgIGxvb3AgaSBbXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKFN0cmluZy5lc2NhcGVkIChzdHJpbmdfb2ZfdG9rZW4gZSkpO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjo6XCI7XG4gICAgICAgICAgICBsb29wIChzdWNjIGkpIHRsXG4gICAgICAgICAgZW5kXG4gICAgfCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiW11cIlxuICBpblxuICAgIEJ1ZmZlci5jb250ZW50cyAobG9vcCAwIHRsOyBiKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMtMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgc2RlYnVnID0gdHJ1ZVxuXG5vcGVuIFByaW50Zlxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cbm9wZW4gT21kX3V0aWxzXG5tb2R1bGUgTCA9IE9tZF9sZXhlclxuXG50eXBlIHIgPSBPbWRfcmVwcmVzZW50YXRpb24udFxuKCoqIGFjY3VtdWxhdG9yIChiZXdhcmUsIHJldmVyc2VkIHRva2VucykgKilcblxuYW5kIHAgPSBPbWRfcmVwcmVzZW50YXRpb24udG9rIGxpc3RcbigqKiBjb250ZXh0IGluZm9ybWF0aW9uOiBwcmV2aW91cyBlbGVtZW50cyAqKVxuXG5hbmQgbCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuKCoqIHRva2VucyB0byBwYXJzZSAqKVxuXG5hbmQgbWFpbl9sb29wID1cbiAgP2h0bWw6Ym9vbCAtPlxuICByIC0+ICgqIGFjY3VtdWxhdG9yIChiZXdhcmUsIHJldmVyc2VkIHRva2VucykgKilcbiAgcCAtPiAoKiBpbmZvOiBwcmV2aW91cyBlbGVtZW50cyAqKVxuICBsIC0+ICgqIHRva2VucyB0byBwYXJzZSAqKVxuICBPbWRfcmVwcmVzZW50YXRpb24udCAoKiBmaW5hbCByZXN1bHQgKilcbigqKiBtb3N0IGltcG9ydGFudCBsb29wICopXG5cblxuKCoqIE4uQi4gUGxlYXNlIGRvIG5vdCB1c2UgdGFidWxhdGlvbnMgaW4geW91ciBNYXJrZG93biBmaWxlISAqKVxuXG5tb2R1bGUgdHlwZSBFbnYgPSBzaWdcbiAgdmFsIHJjOiBPbWRfcmVwcmVzZW50YXRpb24ucmVmX2NvbnRhaW5lclxuICB2YWwgZXh0ZW5zaW9ucyA6IE9tZF9yZXByZXNlbnRhdGlvbi5leHRlbnNpb25zXG4gIHZhbCBkZWZhdWx0X2xhbmcgOiBzdHJpbmdcbiAgdmFsIGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgOiBib29sXG4gIHZhbCBibGluZF9odG1sIDogYm9vbFxuICB2YWwgc3RyaWN0X2h0bWwgOiBib29sXG4gIHZhbCB3YXJuaW5nIDogYm9vbFxuICB2YWwgd2Fybl9lcnJvciA6IGJvb2xcbmVuZFxuXG5tb2R1bGUgVW5pdCA9IHN0cnVjdCBlbmRcblxubW9kdWxlIERlZmF1bHRfZW52IChVbml0OnNpZyBlbmQpIDogRW52ID0gc3RydWN0XG4gIGxldCByYyA9IG5ldyBPbWRfcmVwcmVzZW50YXRpb24ucmVmX2NvbnRhaW5lclxuICBsZXQgZXh0ZW5zaW9ucyA9IFtdXG4gIGxldCBkZWZhdWx0X2xhbmcgPSBcIlwiXG4gIGxldCBnaF91ZW1waF9vcl9ib2xkX3N0eWxlID0gdHJ1ZVxuICBsZXQgYmxpbmRfaHRtbCA9IGZhbHNlXG4gIGxldCBzdHJpY3RfaHRtbCA9IGZhbHNlXG4gIGxldCB3YXJuaW5nID0gZmFsc2VcbiAgbGV0IHdhcm5fZXJyb3IgPSBmYWxzZVxuZW5kXG5cbm1vZHVsZSBNYWtlIChFbnY6RW52KSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBFbnZcblxuICBsZXQgd2FybiA9IE9tZF91dGlscy53YXJuIH53ZTp3YXJuX2Vycm9yXG5cbiAgKCoqIHNldCBvZiBrbm93biBIVE1MIGNvZGVzICopXG4gIGxldCBodG1sY29kZXNfc2V0ID0gU3RyaW5nU2V0Lm9mX2xpc3QgKCogVGhpcyBsaXN0IHNob3VsZCBiZSBjaGVja2VkLi4uICopXG4gICAgICAoKiBsaXN0IGV4dHJhY3RlZCBmcm9tOiBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9jaGFyc2V0Lmh0bWwgKilcbiAgICAgIFsgXCJBRWxpZ1wiOyAgXCJBYWN1dGVcIjsgIFwiQWNpcmNcIjsgIFwiQWdyYXZlXCI7IFwiQWxwaGFcIjsgIFwiQXJpbmdcIjsgIFwiQXRpbGRlXCI7XG4gICAgICAgIFwiQXVtbFwiOyBcIkJldGFcIjsgIFwiQ2NlZGlsXCI7IFwiQ2hpXCI7IFwiRGFnZ2VyXCI7ICBcIkRlbHRhXCI7IFwiRVRIXCI7IFwiRWFjdXRlXCI7XG4gICAgICAgIFwiRWNpcmNcIjsgIFwiRWdyYXZlXCI7ICBcIkVwc2lsb25cIjsgICBcIkV0YVwiOyAgXCJFdW1sXCI7ICBcIkdhbW1hXCI7ICBcIklhY3V0ZVwiO1xuICAgICAgICBcIkljaXJjXCI7IFwiSWdyYXZlXCI7IFwiSW90YVwiOyAgXCJJdW1sXCI7IFwiS2FwcGFcIjsgXCJMYW1iZGFcIjsgXCJNdVwiOyBcIk50aWxkZVwiO1xuICAgICAgICBcIk51XCI7ICBcIk9FbGlnXCI7ICBcIk9hY3V0ZVwiOyAgIFwiT2NpcmNcIjsgIFwiT2dyYXZlXCI7ICBcIk9tZWdhXCI7ICBcIk9taWNyb25cIjtcbiAgICAgICAgXCJPc2xhc2hcIjsgIFwiT3RpbGRlXCI7ICBcIk91bWxcIjsgIFwiUGhpXCI7ICBcIlBpXCI7ICBcIlByaW1lXCI7ICBcIlBzaVwiOyAgXCJSaG9cIjtcbiAgICAgICAgXCJTY2Fyb25cIjsgIFwiU2lnbWFcIjsgICBcIlRIT1JOXCI7ICBcIlRhdVwiOyAgXCJUaGV0YVwiOyAgIFwiVWFjdXRlXCI7ICBcIlVjaXJjXCI7XG4gICAgICAgIFwiVWdyYXZlXCI7IFwiVXBzaWxvblwiOyBcIlV1bWxcIjsgXCJYaVwiOyBcIllhY3V0ZVwiOyBcIll1bWxcIjsgXCJaZXRhXCI7IFwiYWFjdXRlXCI7XG4gICAgICAgIFwiYWNpcmNcIjsgXCJhY3V0ZVwiOyBcImFlbGlnXCI7IFwiYWdyYXZlXCI7IFwiYWxlZnN5bVwiOyBcImFscGhhXCI7IFwiYW1wXCI7IFwiYW5kXCI7XG4gICAgICAgIFwiYW5nXCI7IFwiYXJpbmdcIjsgXCJhc3ltcFwiOyAgXCJhdGlsZGVcIjsgXCJhdW1sXCI7IFwiYmRxdW9cIjsgXCJiZXRhXCI7IFwiYnJ2YmFyXCI7XG4gICAgICAgIFwiYnVsbFwiOyAgXCJjYXBcIjsgIFwiY2NlZGlsXCI7IFwiY2VkaWxcIjsgIFwiY2VudFwiOyAgXCJjaGlcIjsgXCJjaXJjXCI7ICBcImNsdWJzXCI7XG4gICAgICAgIFwiY29uZ1wiOyAgXCJjb3B5XCI7IFwiY3JhcnJcIjsgXCJjdXBcIjsgIFwiY3VycmVuXCI7IFwiZEFyclwiOyAgXCJkYWdnZXJcIjsgXCJkYXJyXCI7XG4gICAgICAgIFwiZGVnXCI7ICBcImRlbHRhXCI7ICBcImRpYW1zXCI7ICAgXCJkaXZpZGVcIjsgIFwiZWFjdXRlXCI7ICBcImVjaXJjXCI7ICBcImVncmF2ZVwiO1xuICAgICAgICBcImVtcHR5XCI7ICBcImVtc3BcIjsgXCJlbnNwXCI7ICBcImVwc2lsb25cIjsgXCJlcXVpdlwiOyAgXCJldGFcIjsgIFwiZXRoXCI7IFwiZXVtbFwiO1xuICAgICAgICBcImV1cm9cIjsgIFwiZXhpc3RcIjsgIFwiZm5vZlwiOyAgXCJmb3JhbGxcIjsgIFwiZnJhYzEyXCI7ICBcImZyYWMxNFwiOyAgXCJmcmFjMzRcIjtcbiAgICAgICAgXCJmcmFzbFwiOyAgXCJnYW1tYVwiOyAgXCJnZVwiOyBcImd0XCI7ICBcImhBcnJcIjsgIFwiaGFyclwiOyBcImhlYXJ0c1wiOyAgXCJoZWxsaXBcIjtcbiAgICAgICAgXCJpYWN1dGVcIjsgXCJpY2lyY1wiOyBcImlleGNsXCI7IFwiaWdyYXZlXCI7IFwiaW1hZ2VcIjsgXCJpbmZpblwiOyBcImludFwiOyBcImlvdGFcIjtcbiAgICAgICAgXCJpcXVlc3RcIjsgXCJpc2luXCI7IFwiaXVtbFwiOyAgXCJrYXBwYVwiOyBcImxBcnJcIjsgXCJsYW1iZGFcIjsgXCJsYW5nXCI7IFwibGFxdW9cIjtcbiAgICAgICAgXCJsYXJyXCI7ICBcImxjZWlsXCI7ICBcImxkcXVvXCI7IFwibGVcIjsgIFwibGZsb29yXCI7ICBcImxvd2FzdFwiOyBcImxvelwiOyAgXCJscm1cIjtcbiAgICAgICAgXCJsc2FxdW9cIjsgXCJsc3F1b1wiOyBcImx0XCI7ICBcIm1hY3JcIjsgXCJtZGFzaFwiOyBcIm1pY3JvXCI7IFwibWlkZG90XCI7IFwibWludXNcIjtcbiAgICAgICAgXCJtdVwiOyBcIm5hYmxhXCI7ICBcIm5ic3BcIjsgXCJuZGFzaFwiOyAgXCJuZVwiOyBcIm5pXCI7IFwibm90XCI7ICBcIm5vdGluXCI7IFwibnN1YlwiO1xuICAgICAgICBcIm50aWxkZVwiOyAgXCJudVwiOyAgIFwib2FjdXRlXCI7ICBcIm9jaXJjXCI7ICBcIm9lbGlnXCI7ICAgXCJvZ3JhdmVcIjsgIFwib2xpbmVcIjtcbiAgICAgICAgXCJvbWVnYVwiOyBcIm9taWNyb25cIjsgXCJvcGx1c1wiOyBcIm9yXCI7IFwib3JkZlwiOyBcIm9yZG1cIjsgXCJvc2xhc2hcIjsgXCJvdGlsZGVcIjtcbiAgICAgICAgXCJvdGltZXNcIjsgIFwib3VtbFwiOyAgXCJwYXJhXCI7ICBcInBhcnRcIjsgIFwicGVybWlsXCI7IFwicGVycFwiOyAgXCJwaGlcIjsgIFwicGlcIjtcbiAgICAgICAgXCJwaXZcIjsgIFwicGx1c21uXCI7ICBcInBvdW5kXCI7IFwicHJpbWVcIjsgIFwicHJvZFwiOyAgXCJwcm9wXCI7IFwicHNpXCI7ICBcInF1b3RcIjtcbiAgICAgICAgXCJyQXJyXCI7ICBcInJhZGljXCI7IFwicmFuZ1wiOyBcInJhcXVvXCI7ICBcInJhcnJcIjsgXCJyY2VpbFwiOyAgXCJyZHF1b1wiOyBcInJlYWxcIjtcbiAgICAgICAgXCJyZWdcIjsgXCJyZmxvb3JcIjsgIFwicmhvXCI7IFwicmxtXCI7IFwicnNhcXVvXCI7ICBcInJzcXVvXCI7IFwic2JxdW9cIjsgXCJzY2Fyb25cIjtcbiAgICAgICAgXCJzZG90XCI7ICBcInNlY3RcIjsgIFwic2h5XCI7IFwic2lnbWFcIjsgIFwic2lnbWFmXCI7ICBcInNpbVwiOyBcInNwYWRlc1wiOyAgXCJzdWJcIjtcbiAgICAgICAgXCJzdWJlXCI7IFwic3VtXCI7IFwic3VwXCI7IFwic3VwMVwiOyAgXCJzdXAyXCI7IFwic3VwM1wiOyBcInN1cGVcIjsgXCJzemxpZ1wiOyBcInRhdVwiO1xuICAgICAgICBcInRoZXJlNFwiOyAgXCJ0aGV0YVwiOyBcInRoZXRhc3ltXCI7ICBcInRoaW5zcFwiOyBcInRob3JuXCI7ICBcInRpbGRlXCI7IFwidGltZXNcIjtcbiAgICAgICAgXCJ0cmFkZVwiOyBcInVBcnJcIjsgXCJ1YWN1dGVcIjsgIFwidWFyclwiOyBcInVjaXJjXCI7IFwidWdyYXZlXCI7IFwidW1sXCI7IFwidXBzaWhcIjtcbiAgICAgICAgXCJ1cHNpbG9uXCI7ICBcInV1bWxcIjsgXCJ3ZWllcnBcIjsgXCJ4aVwiOyAgXCJ5YWN1dGVcIjsgXCJ5ZW5cIjsgIFwieXVtbFwiOyBcInpldGFcIjtcbiAgICAgICAgXCJ6d2pcIjsgXCJ6d25qXCI7IF1cblxuXG4gICgqKiBzZXQgb2Yga25vd24gaW5saW5lIEhUTUwgdGFncyAqKVxuICBsZXQgaW5saW5lX2h0bWx0YWdzX3NldCA9XG4gICAgICAoU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgICAgICgqIGZyb20gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9IVE1ML0lubGluZV9lbGVtZW50cyAqKVxuICAgICAgICAgWyBcImJcIjtcImJpZ1wiO1wiaVwiO1wic21hbGxcIjtcInR0XCI7XG4gICAgICAgICAgIFwiYWJiclwiO1wiYWNyb255bVwiO1wiY2l0ZVwiO1wiY29kZVwiO1wiZGZuXCI7XCJlbVwiO1wia2JkXCI7XCJzdHJvbmdcIjtcInNhbXBcIjtcInZhclwiO1xuICAgICAgICAgICBcImFcIjtcImJkb1wiO1wiYnJcIjtcImltZ1wiO1wibWFwXCI7XCJvYmplY3RcIjtcInFcIjtcInNwYW5cIjtcInN1YlwiO1wic3VwXCI7XG4gICAgICAgICAgIFwiYnV0dG9uXCI7XCJpbnB1dFwiO1wibGFiZWxcIjtcInNlbGVjdFwiO1widGV4dGFyZWFcIjtdKVxuXG4gICgqKiBOLkIuIGl0IHNlZW1zIHRoYXQgdGhlcmUgaXMgbm8gY2xlYXIgZGlzdGluY3Rpb24gYmV0d2VlbiBpbmxpbmVcbiAgICAgIHRhZ3MgYW5kIGJsb2NrLWxldmVsIHRhZ3M6IGluIEhUTUw0IGl0IHdhcyBub3QgY2xlYXIsIGluIEhUTUw1XG4gICAgICBpdCdzIGV2ZW4gbW9yZSBjb21wbGljYXRlZC4gU28sIHRoZSBjaG9pY2UgKmhlcmUqIGlzIHRvIHNwZWNpZnlcbiAgICAgIGEgc2V0IG9mIHRhZ3MgY29uc2lkZXJlZCBhcyBcImlubGluZVwiLCBjZi4gW2lubGluZV9odG1sdGFnc19zZXRdLlxuICAgICAgU28gdGhlcmUgd2lsbCBiZSBpbmxpbmUgdGFncywgbm9uLWlubGluZSB0YWdzLCBhbmQgdW5rbm93blxuICAgICAgdGFncy4qKVxuXG4gICgqKiBzZXQgb2YgSFRNTCB0YWdzIHRoYXQgbWF5IGFwcGVhciBvdXQgb2YgYSBib2R5ICopXG4gIGxldCBub3RpbmJvZHl0YWdzID0gU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgIFtcbiAgICAgICAgXCJ0aXRsZVwiO1xuICAgICAgICBcImxpbmtcIjtcbiAgICAgICAgXCJtZXRhXCI7XG4gICAgICAgIFwic3R5bGVcIjtcbiAgICAgICAgXCJodG1sXCI7XG4gICAgICAgIFwiaGVhZFwiO1xuICAgICAgICBcImJvZHlcIjtcbiAgICAgIF1cblxuICAoKiogQWxsIGtub3duIEhUTUwgdGFncyAqKVxuICBsZXQgaHRtbHRhZ3Nfc2V0ID1cbiAgICBTdHJpbmdTZXQudW5pb24gbm90aW5ib2R5dGFnc1xuICAgICAgKFN0cmluZ1NldC51bmlvbiBpbmxpbmVfaHRtbHRhZ3Nfc2V0XG4gICAgICAgICAoU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgXCJhXCI7XCJhYmJyXCI7XCJhY3JvbnltXCI7XCJhZGRyZXNzXCI7XCJhcHBsZXRcIjtcImFyZWFcIjtcImFydGljbGVcIjtcImFzaWRlXCJcbiAgICAgICAgICAgICAgO1wiYXVkaW9cIjtcImJcIjtcImJhc2VcIjtcImJhc2Vmb250XCI7XCJiZGlcIjtcImJkb1wiO1wiYmlnXCI7XCJibG9ja3F1b3RlXCJcbiAgICAgICAgICAgICAgO1wiYnJcIjtcImJ1dHRvblwiO1wiY2FudmFzXCI7XCJjYXB0aW9uXCI7XCJjZW50ZXJcIjtcImNpdGVcIjtcImNvZGVcIjtcImNvbFwiXG4gICAgICAgICAgICAgIDtcImNvbGdyb3VwXCI7XCJjb21tYW5kXCI7XCJkYXRhbGlzdFwiO1wiZGRcIjtcImRlbFwiO1wiZGV0YWlsc1wiO1wiZGZuXCJcbiAgICAgICAgICAgICAgO1wiZGlhbG9nXCI7XCJkaXJcIjtcImRpdlwiO1wiZGxcIjtcImR0XCI7XCJlbVwiO1wiZW1iZWRcIjtcImZpZWxkc2V0XCJcbiAgICAgICAgICAgICAgO1wiZmlnY2FwdGlvblwiO1wiZmlndXJlXCI7XCJmb250XCI7XCJmb290ZXJcIjtcImZvcm1cIjtcImZyYW1lXCI7XCJmcmFtZXNldFwiXG4gICAgICAgICAgICAgIDtcImgyXCI7XCJoM1wiO1wiaDRcIjtcImg1XCI7XCJoNlwiXG4gICAgICAgICAgICAgIDtcImgxXCI7XCJoZWFkZXJcIjtcImhyXCI7XCJpXCI7XCJpZnJhbWVcIjtcImltZ1wiO1wiaW5wdXRcIjtcImluc1wiO1wia2JkXCJcbiAgICAgICAgICAgICAgO1wia2V5Z2VuXCI7XCJsYWJlbFwiO1wibGVnZW5kXCI7XCJsaVwiO1wibWFwXCI7XCJtYXJrXCI7XCJtZW51XCI7XCJtZXRlclwiO1wibmF2XCJcbiAgICAgICAgICAgICAgO1wibm9mcmFtZXNcIjtcIm5vc2NyaXB0XCI7XCJvYmplY3RcIjtcIm9sXCI7XCJvcHRncm91cFwiO1wib3B0aW9uXCI7XCJvdXRwdXRcIlxuICAgICAgICAgICAgICA7XCJwXCI7XCJwYXJhbVwiO1wicHJlXCI7XCJwcm9ncmVzc1wiO1wicVwiO1wicnBcIjtcInJ0XCI7XCJydWJ5XCI7XCJzXCI7XCJzYW1wXCJcbiAgICAgICAgICAgICAgO1wic2NyaXB0XCI7XCJzZWN0aW9uXCI7XCJzZWxlY3RcIjtcInNtYWxsXCI7XCJzb3VyY2VcIjtcInNwYW5cIjtcInN0cmlrZVwiXG4gICAgICAgICAgICAgIDtcInN0cm9uZ1wiO1wic3R5bGVcIjtcInN1YlwiO1wic3VtbWFyeVwiO1wic3VwXCI7XCJ0YWJsZVwiO1widGJvZHlcIjtcInRkXCJcbiAgICAgICAgICAgICAgO1widGV4dGFyZWFcIjtcInRmb290XCI7XCJ0aFwiO1widGhlYWRcIjtcInRpbWVcIjtcInRyXCI7XCJ0cmFja1wiO1widHRcIjtcInVcIlxuICAgICAgICAgICAgICA7XCJ1bFwiO1widmFyXCI7XCJ2aWRlb1wiO1wid2JyXCJcbiAgICAgICAgICAgIF0pKVxuXG5cbiAgKCoqIFRoaXMgZnVuY3Rpb25zIGZpeGVzIGJhZCBsZXhpbmcgdHJlZXMsIHdoaWNoIG1heSBiZSBidWlsdCB3aGVuXG4gICAgICBleHRyYWN0aW9uIGEgcG9ydGlvbiBvZiBhbm90aGVyIGxleGluZyB0cmVlLiAqKVxuICBsZXQgZml4IGwgPVxuICAgIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICgqIGNvZGUgdG8gZ2VuZXJhdGUgd2hhdCBmb2xsb3dzLi4uXG4gICAgICAgICBMaXN0Lml0ZXIgKGZ1biBlIC0+XG4gICAgICAgICBQcmludGYucHJpbnRmIFwiXG4gICAgICAgICB8ICVzOjolczo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgMVxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MgMDo6dGwpXG4gICAgICAgICB8ICVzcyBuOjolczo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgMlxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MobisxKTo6dGwpXG4gICAgICAgICB8ICVzOjolc3Mgbjo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgM1xcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MobisxKTo6dGwpXG4gICAgICAgICB8ICVzcyBhOjolc3MgYjo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgNFxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MoYStiKzIpOjp0bClcIlxuICAgICAgICAgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSlcbiAgICAgICAgIFtcIkFtcGVyc2FuZFwiOyBcIkF0XCI7IFwiQmFja3F1b3RlXCI7IFwiQmFja3NsYXNoXCI7IFwiQmFyXCI7IFwiQ2FyZXRcIjsgXCJDYnJhY2VcIjsgXCJDb2xvblwiOyBcIkNvbW1hXCI7IFwiQ3BhcmVudGhlc2lzXCI7IFwiQ2JyYWNrZXRcIjsgXCJEb2xsYXJcIjsgXCJEb3RcIjsgXCJEb3VibGVxdW90ZVwiOyBcIkV4Y2xhbWF0aW9uXCI7IFwiRXF1YWxcIjsgXCJHcmVhdGVydGhhblwiOyBcIkhhc2hcIjsgXCJMZXNzdGhhblwiOyBcIk1pbnVzXCI7IFwiTmV3bGluZVwiOyBcIk9icmFjZVwiOyBcIk9wYXJlbnRoZXNpc1wiOyBcIk9icmFja2V0XCI7IFwiUGVyY2VudFwiOyBcIlBsdXNcIjsgXCJRdWVzdGlvblwiOyBcIlF1b3RlXCI7IFwiU2VtaWNvbG9uXCI7IFwiU2xhc2hcIjsgXCJTcGFjZVwiOyBcIlN0YXJcIjsgXCJUYWJcIjsgXCJUaWxkZVwiOyBcIlVuZGVyc2NvcmVcIl07XG4gICAgICAgICBwcmludF9zdHJpbmcgXCJ8IHg6OnRsIC0+IGxvb3AgKHg6OmFjY3UpIHRsXFxufCBbXSAtPiBMaXN0LnJldiBhY2N1XFxuXCI7ICopXG4gICAgICB8IEFtcGVyc2FuZDo6QW1wZXJzYW5kOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMgMDo6dGwpXG4gICAgICB8IEFtcGVyc2FuZHMgbjo6QW1wZXJzYW5kOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMobisxKTo6dGwpXG4gICAgICB8IEFtcGVyc2FuZDo6QW1wZXJzYW5kcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMobisxKTo6dGwpXG4gICAgICB8IEFtcGVyc2FuZHMgYTo6QW1wZXJzYW5kcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMoYStiKzIpOjp0bClcbiAgICAgIHwgQXQ6OkF0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzIDA6OnRsKVxuICAgICAgfCBBdHMgbjo6QXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMobisxKTo6dGwpXG4gICAgICB8IEF0OjpBdHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQXQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEF0cyhuKzEpOjp0bClcbiAgICAgIHwgQXRzIGE6OkF0cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzKGErYisyKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMgMDo6dGwpXG4gICAgICB8IEJhY2txdW90ZXMgbjo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMobisxKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6QmFja3F1b3RlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMobisxKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZXMgYTo6QmFja3F1b3RlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMoYStiKzIpOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrc2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyAwOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyBuOjpCYWNrc2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrc2xhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyBhOjpCYWNrc2xhc2hzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBCYXI6OkJhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzIDA6OnRsKVxuICAgICAgfCBCYXJzIG46OkJhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKG4rMSk6OnRsKVxuICAgICAgfCBCYXI6OkJhcnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKG4rMSk6OnRsKVxuICAgICAgfCBCYXJzIGE6OkJhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKGErYisyKTo6dGwpXG4gICAgICB8IENhcmV0OjpDYXJldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyAwOjp0bClcbiAgICAgIHwgQ2FyZXRzIG46OkNhcmV0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYXJldDo6Q2FyZXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENhcmV0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYXJldHMobisxKTo6dGwpXG4gICAgICB8IENhcmV0cyBhOjpDYXJldHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyhhK2IrMik6OnRsKVxuICAgICAgfCBDYnJhY2U6OkNicmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzIDA6OnRsKVxuICAgICAgfCBDYnJhY2VzIG46OkNicmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2U6OkNicmFjZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2VzIGE6OkNicmFjZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKGErYisyKTo6dGwpXG4gICAgICB8IENvbG9uOjpDb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyAwOjp0bClcbiAgICAgIHwgQ29sb25zIG46OkNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBDb2xvbjo6Q29sb25zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbG9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb2xvbnMobisxKTo6dGwpXG4gICAgICB8IENvbG9ucyBhOjpDb2xvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyhhK2IrMik6OnRsKVxuICAgICAgfCBDb21tYTo6Q29tbWE6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMgMDo6dGwpXG4gICAgICB8IENvbW1hcyBuOjpDb21tYTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyhuKzEpOjp0bClcbiAgICAgIHwgQ29tbWE6OkNvbW1hcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb21tYSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29tbWFzKG4rMSk6OnRsKVxuICAgICAgfCBDb21tYXMgYTo6Q29tbWFzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMoYStiKzIpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzOjpDcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyAwOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyBuOjpDcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzOjpDcGFyZW50aGVzaXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyBhOjpDcGFyZW50aGVzaXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhhK2IrMik6OnRsKVxuICAgICAgfCBDYnJhY2tldDo6Q2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMgMDo6dGwpXG4gICAgICB8IENicmFja2V0cyBuOjpDYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgQ2JyYWNrZXQ6OkNicmFja2V0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2tldCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2tldHMgYTo6Q2JyYWNrZXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMoYStiKzIpOjp0bClcbiAgICAgIHwgRG9sbGFyOjpEb2xsYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyAwOjp0bClcbiAgICAgIHwgRG9sbGFycyBuOjpEb2xsYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhuKzEpOjp0bClcbiAgICAgIHwgRG9sbGFyOjpEb2xsYXJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhuKzEpOjp0bClcbiAgICAgIHwgRG9sbGFycyBhOjpEb2xsYXJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhhK2IrMik6OnRsKVxuICAgICAgfCBEb3Q6OkRvdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzIDA6OnRsKVxuICAgICAgfCBEb3RzIG46OkRvdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKG4rMSk6OnRsKVxuICAgICAgfCBEb3Q6OkRvdHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKG4rMSk6OnRsKVxuICAgICAgfCBEb3RzIGE6OkRvdHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKGErYisyKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlOjpEb3VibGVxdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyAwOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGVzIG46OkRvdWJsZXF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZTo6RG91YmxlcXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdWJsZXF1b3RlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3VibGVxdW90ZXMobisxKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlcyBhOjpEb3VibGVxdW90ZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbjo6RXhjbGFtYXRpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMgMDo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9ucyBuOjpFeGNsYW1hdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgRXhjbGFtYXRpb246OkV4Y2xhbWF0aW9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFeGNsYW1hdGlvbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXhjbGFtYXRpb25zKG4rMSk6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbnMgYTo6RXhjbGFtYXRpb25zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgRXF1YWw6OkVxdWFsOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzIDA6OnRsKVxuICAgICAgfCBFcXVhbHMgbjo6RXF1YWw6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMobisxKTo6dGwpXG4gICAgICB8IEVxdWFsOjpFcXVhbHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXF1YWwgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEVxdWFscyhuKzEpOjp0bClcbiAgICAgIHwgRXF1YWxzIGE6OkVxdWFscyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzKGErYisyKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFuOjpHcmVhdGVydGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyAwOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW5zIG46OkdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbjo6R3JlYXRlcnRoYW5zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEdyZWF0ZXJ0aGFuIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChHcmVhdGVydGhhbnMobisxKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFucyBhOjpHcmVhdGVydGhhbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyhhK2IrMik6OnRsKVxuICAgICAgfCBIYXNoOjpIYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyAwOjp0bClcbiAgICAgIHwgSGFzaHMgbjo6SGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgSGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoSGFzaHMobisxKTo6dGwpXG4gICAgICB8IEhhc2g6Okhhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBIYXNocyBhOjpIYXNocyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBMZXNzdGhhbjo6TGVzc3RoYW46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMgMDo6dGwpXG4gICAgICB8IExlc3N0aGFucyBuOjpMZXNzdGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyhuKzEpOjp0bClcbiAgICAgIHwgTGVzc3RoYW46Okxlc3N0aGFucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBMZXNzdGhhbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTGVzc3RoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBMZXNzdGhhbnMgYTo6TGVzc3RoYW5zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMoYStiKzIpOjp0bClcbiAgICAgIHwgTWludXM6Ok1pbnVzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzIDA6OnRsKVxuICAgICAgfCBNaW51c3Mgbjo6TWludXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MobisxKTo6dGwpXG4gICAgICB8IE1pbnVzOjpNaW51c3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTWludXMgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE1pbnVzcyhuKzEpOjp0bClcbiAgICAgIHwgTWludXNzIGE6Ok1pbnVzcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzKGErYisyKTo6dGwpXG4gICAgICB8IE5ld2xpbmU6Ok5ld2xpbmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzIDA6OnRsKVxuICAgICAgfCBOZXdsaW5lcyBuOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBOZXdsaW5lIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChOZXdsaW5lcyhuKzEpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6TmV3bGluZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMobisxKTo6dGwpXG4gICAgICB8IE5ld2xpbmVzIGE6Ok5ld2xpbmVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzKGErYisyKTo6dGwpXG4gICAgICB8IE9icmFjZTo6T2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMgMDo6dGwpXG4gICAgICB8IE9icmFjZXMgbjo6T2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMobisxKTo6dGwpXG4gICAgICB8IE9icmFjZTo6T2JyYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMobisxKTo6dGwpXG4gICAgICB8IE9icmFjZXMgYTo6T2JyYWNlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzOjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyAwOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyBuOjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzOjpPcGFyZW50aGVzaXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyBhOjpPcGFyZW50aGVzaXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhhK2IrMik6OnRsKVxuICAgICAgfCBPYnJhY2tldDo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMgMDo6dGwpXG4gICAgICB8IE9icmFja2V0cyBuOjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNrZXQ6Ok9icmFja2V0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2tldCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBPYnJhY2tldHMgYTo6T2JyYWNrZXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMoYStiKzIpOjp0bClcbiAgICAgIHwgUGVyY2VudDo6UGVyY2VudDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMgMDo6dGwpXG4gICAgICB8IFBlcmNlbnRzIG46OlBlcmNlbnQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBlcmNlbnQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBlcmNlbnRzKG4rMSk6OnRsKVxuICAgICAgfCBQZXJjZW50OjpQZXJjZW50cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyhuKzEpOjp0bClcbiAgICAgIHwgUGVyY2VudHMgYTo6UGVyY2VudHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMoYStiKzIpOjp0bClcbiAgICAgIHwgUGx1czo6UGx1czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MgMDo6dGwpXG4gICAgICB8IFBsdXNzIG46OlBsdXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBsdXMgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBsdXNzKG4rMSk6OnRsKVxuICAgICAgfCBQbHVzOjpQbHVzcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyhuKzEpOjp0bClcbiAgICAgIHwgUGx1c3MgYTo6UGx1c3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MoYStiKzIpOjp0bClcbiAgICAgIHwgUXVlc3Rpb246OlF1ZXN0aW9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zIDA6OnRsKVxuICAgICAgfCBRdWVzdGlvbnMgbjo6UXVlc3Rpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMobisxKTo6dGwpXG4gICAgICB8IFF1ZXN0aW9uOjpRdWVzdGlvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVlc3Rpb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1ZXN0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgUXVlc3Rpb25zIGE6OlF1ZXN0aW9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zKGErYisyKTo6dGwpXG4gICAgICB8IFF1b3RlOjpRdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyAwOjp0bClcbiAgICAgIHwgUXVvdGVzIG46OlF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBRdW90ZTo6UXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1b3RlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdW90ZXMobisxKTo6dGwpXG4gICAgICB8IFF1b3RlcyBhOjpRdW90ZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBTZW1pY29sb246OlNlbWljb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zIDA6OnRsKVxuICAgICAgfCBTZW1pY29sb25zIG46OlNlbWljb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBTZW1pY29sb246OlNlbWljb2xvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBTZW1pY29sb25zIGE6OlNlbWljb2xvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKGErYisyKTo6dGwpXG4gICAgICB8IFNsYXNoOjpTbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyAwOjp0bClcbiAgICAgIHwgU2xhc2hzIG46OlNsYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBTbGFzaDo6U2xhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNsYXNoIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTbGFzaHMobisxKTo6dGwpXG4gICAgICB8IFNsYXNocyBhOjpTbGFzaHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBTcGFjZTo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMgMDo6dGwpXG4gICAgICB8IFNwYWNlcyBuOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgU3BhY2U6OlNwYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTcGFjZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3BhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBTcGFjZXMgYTo6U3BhY2VzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgU3Rhcjo6U3Rhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMgMDo6dGwpXG4gICAgICB8IFN0YXJzIG46OlN0YXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFN0YXIgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFN0YXJzKG4rMSk6OnRsKVxuICAgICAgfCBTdGFyOjpTdGFycyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyhuKzEpOjp0bClcbiAgICAgIHwgU3RhcnMgYTo6U3RhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMoYStiKzIpOjp0bClcbiAgICAgIHwgVGFiOjpUYWI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyAwOjp0bClcbiAgICAgIHwgVGFicyBuOjpUYWI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhuKzEpOjp0bClcbiAgICAgIHwgVGFiOjpUYWJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhuKzEpOjp0bClcbiAgICAgIHwgVGFicyBhOjpUYWJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhhK2IrMik6OnRsKVxuICAgICAgfCBUaWxkZTo6VGlsZGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMgMDo6dGwpXG4gICAgICB8IFRpbGRlcyBuOjpUaWxkZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyhuKzEpOjp0bClcbiAgICAgIHwgVGlsZGU6OlRpbGRlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUaWxkZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGlsZGVzKG4rMSk6OnRsKVxuICAgICAgfCBUaWxkZXMgYTo6VGlsZGVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMoYStiKzIpOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZTo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMgMDo6dGwpXG4gICAgICB8IFVuZGVyc2NvcmVzIG46OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFVuZGVyc2NvcmUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFVuZGVyc2NvcmVzKG4rMSk6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyhuKzEpOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZXMgYTo6VW5kZXJzY29yZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMoYStiKzIpOjp0bCl8IHg6OnRsIC0+IGxvb3AgKHg6OmFjY3UpIHRsXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGFjY3VcbiAgICBpblxuICAgIGxvb3AgW10gbFxuXG5cbiAgKCogUmVtb3ZlIGFsbCBbTkxdIGFuZCBbQnJdIGF0IHRoZSBiZWdpbm5pbmcuICopXG4gIGxldCByZWMgcmVtb3ZlX2luaXRpYWxfbmV3bGluZXMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IChOTCB8IEJyKSA6OiB0bCAtPiByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyB0bFxuICAgIHwgbCAtPiBsXG5cblxuICAoKiogLSByZWNvZ25pemVzIHBhcmFncmFwaHNcbiAgICAgIC0gZ2x1ZXMgZm9sbG93aW5nIGJsb2NrcXVvdGVzICAqKVxuICBsZXQgbWFrZV9wYXJhZ3JhcGhzIG1kID1cbiAgICBsZXQgcmVjIGxvb3AgY3AgYWNjdSA9IGZ1bmN0aW9uICgqIGNwIG1lYW5zIGN1cnJlbnQgcGFyYWdyYXBoICopXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBhY2N1ID1cbiAgICAgICAgICBtYXRjaCBjcCB3aXRoXG4gICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGFjY3VcbiAgICAgICAgICB8IChOTHxCcik6OmNwIC0+IFBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3VcbiAgICAgICAgICB8IGNwIC0+IFBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3VcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgfCBCbG9ja3F1b3RlIGIxIDo6IEJsb2NrcXVvdGUgYjIgOjogdGwgLT5cbiAgICAgICAgbG9vcCBjcCBhY2N1IChCbG9ja3F1b3RlKGIxQGIyKTo6IHRsKVxuICAgICAgfCBCbG9ja3F1b3RlIGIgOjogdGwgLT5cbiAgICAgICAgbGV0IGUgPSBCbG9ja3F1b3RlKGxvb3AgW10gW10gYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoVWxwIGIpIDo6IHRsIC0+XG4gICAgICAgIGxldCBlID0gVWxwKExpc3QubWFwIChmdW4gbGkgLT4gbG9vcCBbXSBbXSBsaSkgYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoT2xwIGIpIDo6IHRsIC0+XG4gICAgICAgIGxldCBlID0gT2xwKExpc3QubWFwIChmdW4gbGkgLT4gbG9vcCBbXSBbXSBsaSkgYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCBIdG1sX2NvbW1lbnQgXyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICB8IFtdIC0+IGxvb3AgW10gKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgW10gKGU6Ok5MOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgKGU6OmNwKSBhY2N1IHRsKVxuICAgICAgfCAoUmF3X2Jsb2NrIF8gfCBIdG1sX2Jsb2NrIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjpjcEBhY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoQ29kZV9ibG9jayBfIHwgSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfXG4gICAgICAgIHwgT2wgXyB8IFVsIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCBUZXh0IFwiXFxuXCIgOjogXyB8IFBhcmFncmFwaCBfIDo6IF8gLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJPbWRfcGFyc2VyLm1ha2VfcGFyYWdyYXBoc1wiXG4gICAgICB8IChOTHxCcikgOjogKE5MfEJyKSA6OiB0bCAtPlxuICAgICAgICBsZXQgdGwgPSByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyB0bCBpblxuICAgICAgICBiZWdpbiBtYXRjaCBjcCB3aXRoXG4gICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgW10gKE5MOjpOTDo6YWNjdSkgdGxcbiAgICAgICAgICB8IF8gLT4gbG9vcCBbXSAoUGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGxcbiAgICAgICAgZW5kXG4gICAgICB8IFgoeCkgYXMgZSA6OiB0bCAtPlxuICAgICAgICAoKiBJZiB0aGUgZXh0ZW5zaW9uIHJldHVybnMgYSBibG9jayBhcyBmaXJzdCBlbGVtZW50LFxuICAgICAgICAgICB0aGVuIGNvbnNpZGVyIHRoZSBleHRlbnNpb24gYXMgYSBibG9jay4gSG93ZXZlclxuICAgICAgICAgICBkb24ndCB0YWtlIGl0cyBjb250ZW50cyBhcyBpdCBpcyB5ZXQsIHRoZSBjb250ZW50c1xuICAgICAgICAgICBvZiB0aGUgZXh0ZW5zaW9uIHNoYWxsIGJlIGNvbnNpZGVyZWQgZmluYWwgYXMgbGF0ZVxuICAgICAgICAgICBhcyBwb3NzaWJsZS4gKilcbiAgICAgICAgYmVnaW4gbWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6Y3ApIGFjY3UgdGxcbiAgICAgICAgICB8IFNvbWUodCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCAoIEgxIF9cbiAgICAgICAgICAgICAgfCBIMiBfXG4gICAgICAgICAgICAgIHwgSDMgX1xuICAgICAgICAgICAgICB8IEg0IF9cbiAgICAgICAgICAgICAgfCBINSAgX1xuICAgICAgICAgICAgICB8IEg2ICBfXG4gICAgICAgICAgICAgIHwgUGFyYWdyYXBoICBfXG4gICAgICAgICAgICAgIHwgVWwgX1xuICAgICAgICAgICAgICB8IE9sIF9cbiAgICAgICAgICAgICAgfCBVbHAgX1xuICAgICAgICAgICAgICB8IE9scCBfXG4gICAgICAgICAgICAgIHwgQ29kZV9ibG9jayBfXG4gICAgICAgICAgICAgIHwgSHJcbiAgICAgICAgICAgICAgfCBIdG1sX2Jsb2NrIF9cbiAgICAgICAgICAgICAgfCBSYXdfYmxvY2sgX1xuICAgICAgICAgICAgICB8IEJsb2NrcXVvdGUgX1xuICAgICAgICAgICAgICApIDo6IF9cbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPlxuICAgICAgICAgICAgICAgICBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgIGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKGU6OmNwKSBhY2N1IHRsXG4gICAgICAgIGVuZFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjpjcCkgYWNjdSB0bFxuICAgIGluXG4gICAgbGV0IHJlbW92ZV93aGl0ZV9jcnVtYnMgbCA9XG4gICAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgVGV4dCBcIiBcIiA6OiB0bFxuICAgICAgICB8IE5MOjp0bFxuICAgICAgICB8IEJyOjp0bFxuICAgICAgICAgIC0+XG4gICAgICAgICAgbG9vcCB0bFxuICAgICAgICB8IGwgLT4gbFxuICAgICAgaW5cbiAgICAgIExpc3QucmV2IChsb29wIChMaXN0LnJldiBsKSlcbiAgICBpblxuICAgIGxldCByZWMgY2xlYW5fcGFyYWdyYXBocyA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBjbGVhbl9wYXJhZ3JhcGhzXFxuXCI7XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBbXVxuICAgICAgfCBQYXJhZ3JhcGhbXTo6dGwgLT4gdGxcbiAgICAgIHwgUGFyYWdyYXBoKHApIDo6IHRsIC0+XG4gICAgICAgIFBhcmFncmFwaChjbGVhbl9wYXJhZ3JhcGhzXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmVfaW5pdGlhbF9uZXdsaW5lc1xuICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlX3doaXRlX2NydW1icyhub3JtYWxpc2VfbWQgcCkpKSlcbiAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBIMSB2IDo6IHRsIC0+IEgxKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEgyIHYgOjogdGwgLT4gSDIoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDMgdiA6OiB0bCAtPiBIMyhjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBINCB2IDo6IHRsIC0+IEg0KGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEg1IHYgOjogdGwgLT4gSDUoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDYgdiA6OiB0bCAtPiBINihjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBFbXBoIHYgOjogdGwgLT4gRW1waChjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEJvbGQgdiA6OiB0bCAtPiBCb2xkKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVWwgdiA6OiB0bCAtPiBVbChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBPbCB2IDo6IHRsIC0+IE9sKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFVscCB2IDo6IHRsIC0+IFVscChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgT2xwIHYgOjogdGwgLT4gT2xwKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBCbG9ja3F1b3RlIHYgOjogdGwgLT4gQmxvY2txdW90ZShjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFVybChocmVmLHYsdGl0bGUpIDo6IHRsIC0+IFVybChocmVmLChjbGVhbl9wYXJhZ3JhcGhzIHYpLHRpdGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFRleHQgX1xuICAgICAgfCBDb2RlIF9cbiAgICAgIHwgQ29kZV9ibG9jayBfXG4gICAgICB8IEJyXG4gICAgICB8IEhyXG4gICAgICB8IE5MXG4gICAgICB8IFJlZiBfXG4gICAgICB8IEltZ19yZWYgX1xuICAgICAgfCBSYXcgX1xuICAgICAgfCBSYXdfYmxvY2sgX1xuICAgICAgfCBIdG1sIF9cbiAgICAgIHwgSHRtbF9ibG9jayBfXG4gICAgICB8IEh0bWxfY29tbWVudCBfXG4gICAgICB8IEltZyBfXG4gICAgICB8IFggXyBhcyB2IDo6IHRsIC0+IHYgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgIGluXG4gICAgbGV0IHIgPSBjbGVhbl9wYXJhZ3JhcGhzKGxvb3AgW10gW10gbWQpXG4gICAgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBjbGVhbl9wYXJhZ3JhcGhzICVTIC0tPiAlU1xcbiUhXCJcbiAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kIG1kKVxuICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgcik7XG4gICAgclxuXG5cbiAgKCoqIFthc3NlcnRfd2VsbF9mb3JtZWRdIGlzIGEgZGV2ZWxvcGVyJ3MgZnVuY3Rpb24gdGhhdCBoZWxwcyB0b1xuICAgICAgdHJhY2sgYmFkbHkgY29uc3RydWN0ZWQgdG9rZW4gbGlzdHMuICBUaGlzIGZ1bmN0aW9uIGhhcyBhblxuICAgICAgZWZmZWN0IG9ubHkgaWYgW3RyYWNrZml4XSBpcyBbdHJ1ZV0uICAqKVxuICBsZXQgYXNzZXJ0X3dlbGxfZm9ybWVkIChsOnRvayBsaXN0KSA6IHVuaXQgPVxuICAgIGlmIHRyYWNrZml4IHRoZW5cbiAgICAgIGxldCByZWMgZXF1aXYgbDEgbDIgPSBtYXRjaCBsMSwgbDIgd2l0aFxuICAgICAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgICAgIHwgVGFnIF86OnRsMSwgVGFnIF86OnRsMi0+IGVxdWl2IHRsMSB0bDJcbiAgICAgICAgfCBlMTo6dGwxLCBlMjo6dGwyIC0+IGUxID0gZTIgJiYgZXF1aXYgdGwxIHRsMlxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBhc3NlcnQoZXF1aXYgKGZpeCBsKSBsKTtcbiAgICAgICgpXG5cbiAgKCoqIEdlbmVyYXRlIGZhbGxiYWNrIGZvciByZWZlcmVuY2VzLiAqKVxuICBsZXQgZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyBsID1cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmV4dHJhY3RfZmFsbGJhY2tcXG4lIVwiO1xuICAgIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjdVxuICAgICAgfCBlOjp0bCBhcyByIC0+XG4gICAgICAgIGlmIHIgPT0gcmVtYWlucyB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggZSwgcmVtYWlucyB3aXRoXG4gICAgICAgICAgfCBDYnJhY2tldHMgMCwgQ2JyYWNrZXQ6OnIgd2hlbiB0bCA9IHIgLT5cbiAgICAgICAgICAgIGxldCBhY2N1ID0gV29yZCBcIl1cIiA6OiBhY2N1IGluXG4gICAgICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICAgICAgfCBDYnJhY2tldHMgbiwgQ2JyYWNrZXRzIG06OnIgd2hlbiBtICsgMSA9IG4gJiYgdGwgPSByIC0+XG4gICAgICAgICAgICBsZXQgYWNjdSA9IFdvcmQgXCJdXCIgOjogYWNjdSBpblxuICAgICAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbG9vcCAoZTo6YWNjdSkgdGxcbiAgICBpblxuICAgIGxldCBhID0gbG9vcCBbXSBsIGluXG4gICAgb2JqZWN0XG4gICAgICBtZXRob2QgdG9fc3RyaW5nID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGFcbiAgICAgIG1ldGhvZCB0b190ID0gW1RleHQoTC5zdHJpbmdfb2ZfdG9rZW5zIGEpXVxuICAgIGVuZFxuXG5cbiAgbGV0IHVuaW5kZW50X3JldiBuIGxleGVtZXMgPVxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIENBTEw6IE9tZF9wYXJzZXIudW5pbmRlbnRfcmV2XFxuJSFcIjtcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgYWNjdSBjbCA9IGZ1bmN0aW9uXG4gICAgICB8IE5ld2xpbmVzIHg6OihTcGFjZXxTcGFjZXMgXyk6Ok5ld2xpbmVzIHk6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSBjbCAoTmV3bGluZXMoeCt5KzIpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZXMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygxK3gpOjp0bClcbiAgICAgIHwgTmV3bGluZXMgeDo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygxK3gpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygwKTo6dGwpXG5cbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgMCBhcyBubCk6OihTcGFjZXxTcGFjZXMgXyBhcyBzKTo6KFxuICAgICAgICAgIChOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfKVxuICAgICAgICB8ICgoU3RhcnxQbHVzfE1pbnVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6XylcbiAgICAgICAgICBhcyB0bCkgYXMgbCAtPlxuICAgICAgICBpZiBuID0gTC5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgbG9vcCAobmw6OmNsQGFjY3UpIFtdIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoY2xAYWNjdSksIGxcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgMCBhcyBubCk6OihTcGFjZXxTcGFjZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgbGV0IHggPSBMLmxlbmd0aCBzIC0gbiBpblxuICAgICAgICBsb29wIChubDo6Y2xAYWNjdSlcbiAgICAgICAgICAoaWYgeCA+IDAgdGhlbiBbTC5tYWtlX3NwYWNlIHhdIGVsc2UgW10pXG4gICAgICAgICAgdGxcbiAgICAgIHwgTmV3bGluZXMoXyk6Ol8gYXMgbCAtPlxuICAgICAgICAoY2xAYWNjdSksIGxcbiAgICAgIHwgTmV3bGluZTo6XyBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgKGU6OmNsKSB0bFxuICAgICAgfCBbXSBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgIGluXG4gICAgbWF0Y2ggbG9vcCBbXSBbXSBsZXhlbWVzIHdpdGhcbiAgICB8IFtdLCByaWdodCAtPiBbXSwgcmlnaHRcbiAgICB8IGwsIHJpZ2h0IC0+XG4gICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgIGwsIHJpZ2h0XG5cbiAgbGV0IHVuaW5kZW50IG4gbGV4ZW1lcyA9XG4gICAgbGV0IGZzdCwgc25kID0gdW5pbmRlbnRfcmV2IG4gbGV4ZW1lcyBpblxuICAgIExpc3QucmV2IGZzdCwgc25kXG5cbiAgbGV0IHJlYyBpc19ibGFuayA9IGZ1bmN0aW9uXG4gICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUgfCBOZXdsaW5lcyBfKSA6OiB0bCAtPlxuICAgICAgaXNfYmxhbmsgdGxcbiAgICB8IFtdIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICBsZXQgc2VtcGhfb3JfYm9sZCAobjppbnQpIChsOmwpID1cbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgYXNzZXJ0IChuPjAgJiYgbjw0KTtcbiAgICBtYXRjaFxuICAgICAgZnNwbGl0XG4gICAgICAgIH5leGNsOihmdW5jdGlvbiBOZXdsaW5lcyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlN0YXI6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7QmFja3NsYXNoXSx0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpTdGFycyAwOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO0JhY2tzbGFzaF0sU3Rhcjo6dGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6U3RhcnMgbjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3RhcjtCYWNrc2xhc2hdLFN0YXJzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjpTdGFyOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sU3Rhcjo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO3hdLHRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooU3RhcnMgMCBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3Rhcjt4XSxTdGFyOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFN0YXJzIG4gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7eF0sU3RhcnMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyBhcyB4KTo6KFN0YXJ8U3RhcnMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbczt4XSx0bClcbiAgICAgICAgICAgIHwgKFN0YXJ8U3RhcnMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgTC5sZW5ndGggcyA9IG4gdGhlblxuICAgICAgICAgICAgICAgIFNwbGl0KFtdLHRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgbFxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIE5vbmVcbiAgICB8IFNvbWUobGVmdCxyaWdodCkgLT5cbiAgICAgIGlmIGlzX2JsYW5rIGxlZnQgdGhlbiBOb25lIGVsc2UgU29tZShsZWZ0LHJpZ2h0KVxuXG4gIGxldCBzbV91ZW1waF9vcl9ib2xkIChuOmludCkgKGw6bCkgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBhc3NlcnQgKG4+MCAmJiBuPDQpO1xuICAgIG1hdGNoXG4gICAgICBmc3BsaXRcbiAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uIE5ld2xpbmVzIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLHRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIDA6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sdGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyAwIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgbiBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfIGFzIHgpOjooVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtzO3hdLHRsKVxuICAgICAgICAgICAgfCAoVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBMLmxlbmd0aCBzID0gbiB0aGVuXG4gICAgICAgICAgICAgICAgU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICBsXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTm9uZVxuICAgIHwgU29tZShsZWZ0LHJpZ2h0KSAtPlxuICAgICAgaWYgaXNfYmxhbmsgbGVmdCB0aGVuIE5vbmUgZWxzZSBTb21lKGxlZnQscmlnaHQpXG5cblxuICBsZXQgZ2hfdWVtcGhfb3JfYm9sZCAobjppbnQpIChsOmwpID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgYXNzZXJ0IChuPjAgJiYgbjw0KTtcbiAgICBtYXRjaFxuICAgICAgZnNwbGl0XG4gICAgICAgIH5leGNsOihmdW5jdGlvbiBOZXdsaW5lcyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSx0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyAwOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZXMgbjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLFVuZGVyc2NvcmVzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLHRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgMCBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFVuZGVyc2NvcmVzIG4gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyBhcyB4KTo6KFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbczt4XSx0bClcbiAgICAgICAgICAgIHwgKFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6KFdvcmQgX3xOdW1iZXIgXyBhcyB3KTo6IHRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3c7c10sdGwpXG4gICAgICAgICAgICB8IChVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIEwubGVuZ3RoIHMgPSBuIHRoZW5cbiAgICAgICAgICAgICAgICBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgIGxcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBOb25lXG4gICAgfCBTb21lKGxlZnQscmlnaHQpIC0+XG4gICAgICBpZiBpc19ibGFuayBsZWZ0IHRoZW4gTm9uZSBlbHNlIFNvbWUobGVmdCxyaWdodClcblxuXG4gIGxldCB1ZW1waF9vcl9ib2xkIG4gbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogRklYTUU6IHVzZSBycGwgY2FsbC9yZXR1cm4gY29udmVudGlvbiAqKVxuICAgIGlmIGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgdGhlblxuICAgICAgZ2hfdWVtcGhfb3JfYm9sZCBuIGxcbiAgICBlbHNlXG4gICAgICBzbV91ZW1waF9vcl9ib2xkIG4gbFxuXG4gIGxldCBlYXRfYmxhbmsgPVxuICAgIGVhdCAoZnVuY3Rpb24gfFNwYWNlfFNwYWNlcyBffE5ld2xpbmV8TmV3bGluZXMgXyAtPiB0cnVlfCBfIC0+IGZhbHNlKVxuXG5cbiAgKCogdXNlZCBieSB0YWdfX21heWJlX2gxIGFuZCB0YWdfX21heWJlX2gyICopXG4gIGxldCBzZXRleHRfdGl0bGUgbWFpbl9sb29wIChsOmwpIDogKE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdCAqIGwpIG9wdGlvbiA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYyBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gciBsID1cbiAgICAgICgqIElmIHRoZXJlJ3MgYSBiYWxhbmNlZCAoY29tcGxldGUpIGJhY2txdW90ZS1zdGFydGVkIGNvZGUgYmxvY2tcbiAgICAgICAgIHRoZW4gaXQgc2hvdWxkIGJlIFwiaWdub3JlZFwiLCBlbHNlIGl0IG1lYW5zIHRoZSBsaW5lIHRoYXRcbiAgICAgICAgIGZvbGxvd3MgaXMgcGFydCBvZiBhIGNvZGUgYmxvY2ssIHNvIGl0J3Mgbm90IGRlZmluaW5nIGFcbiAgICAgICAgIHNldGV4dC1zdHlsZSB0aXRsZS4gKilcbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpIGRldGVjdF9iYWxhbmNlZF9icXMgbj0lZCByPSVTIGw9JVNcXG4lIVwiXG4gICAgICAgICAgbiAoTC5zdHJpbmdfb2ZfdG9rZW5zIHIpIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgTm9uZVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICBOb25lXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgMDo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyB4Ojp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSAoQmFja3F1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGU6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyAwOjp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpiOjpyKSAoQmFja3F1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGVzIHg6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlIGFzIGIpOjp0bCB3aGVuIG4gPSAxIC0+XG4gICAgICAgIFNvbWUoTGlzdC5yZXYgKGI6OnIpLCB0bClcbiAgICAgIHwgKEJhY2txdW90ZXMgeCBhcyBiKTo6dGwgd2hlbiBuID0geCsyIC0+XG4gICAgICAgIFNvbWUoTGlzdC5yZXYgKGI6OnIpLCB0bClcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChlOjpyKSB0bFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIHIgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICBpZiByID0gW10gdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNvbWUoTGlzdC5yZXYgciwgW10pXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgdGxcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGU6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpiOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgMDo6dGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgMDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgeDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGRldGVjdF9iYWxhbmNlZF9icXMgMSBbXSB0bCB3aXRoXG4gICAgICAgICAgfCBTb21lKGJsLHRsKSAtPiBsb29wIChibEByKSB0bFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIGVuZFxuICAgICAgfCBCYWNrcXVvdGVzKHgpOjp0bCAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBkZXRlY3RfYmFsYW5jZWRfYnFzICh4KzIpIFtdIHRsIHdpdGhcbiAgICAgICAgICB8IFNvbWUoYmwsdGwpIC0+IGxvb3AgKGJsQHIpIHRsXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgZW5kXG4gICAgICB8IE5ld2xpbmU6OihFcXVhbHxFcXVhbHMgX3xNaW51c3xNaW51c3MgXyk6OnRsIC0+XG4gICAgICAgIGlmIHIgPSBbXSB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU29tZShMaXN0LnJldiByLCB0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLnNldGV4dF90aXRsZSBpcyB3cm9uZ2x5IHVzZWQhXFxuJSFcIjtcbiAgICAgICAgTm9uZVxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjpyKSB0bFxuICAgIGluXG4gICAgaWYgbWF0Y2ggbCB3aXRoXG4gICAgICB8IExlc3N0aGFuOjpXb3JkIF86Ol8gLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWFpbl9sb29wIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgKEh0bWxfYmxvY2sgXyB8IENvZGVfYmxvY2sgXyB8IFJhd19ibG9jayBfKTo6XyAtPlxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHJlc3VsdCA9IGxvb3AgW10gbCBpblxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgc2V0ZXh0X3RpdGxlIGw9JVMgcmVzdWx0PSVTLCVTXFxuJSFcIlxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbClcbiAgICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lICh4LHRsKSAtPiBMLnN0cmluZ19vZl90b2tlbnMgeClcbiAgICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lICh4LHRsKSAtPiBMLnN0cmluZ19vZl90b2tlbnMgdGwpO1xuICAgICAgcmVzdWx0XG5cbiAgbGV0IHRhZ19fbWF5YmVfaDEgKG1haW5fbG9vcDptYWluX2xvb3ApID1cbiAgICBUYWcoXCJ0YWdfX21heWJlX2gxXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID1cbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHNldGV4dF90aXRsZSBtYWluX2xvb3AgbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lKHRpdGxlLCB0bCkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IEgxKG1haW5fbG9vcCBbXSBbXSB0aXRsZSkgaW5cbiAgICAgICAgICAgICAgICAgIFNvbWUoKHRpdGxlOjpyKSwgW05ld2xpbmVdLCB0bClcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBXYXJuaW5nOiBPbWRfcGFyc2VyLnRhZ19fbWF5YmVfaDEgaXMgd3JvbmdseSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgKHA9JVMpIVxcblwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHApO1xuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICApXG5cbiAgbGV0IHRhZ19fbWF5YmVfaDIgKG1haW5fbG9vcDptYWluX2xvb3ApID1cbiAgICBUYWcoXCJ0YWdfX21heWJlX2gyXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID1cbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHNldGV4dF90aXRsZSBtYWluX2xvb3AgbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lKHRpdGxlLCB0bCkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IEgyKG1haW5fbG9vcCBbXSBbXSB0aXRsZSkgaW5cbiAgICAgICAgICAgICAgICAgIFNvbWUoKHRpdGxlOjpyKSwgW05ld2xpbmVdLCB0bClcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBXYXJuaW5nOiBPbWRfcGFyc2VyLnRhZ19fbWF5YmVfaDIgaXMgd3JvbmdseSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgKHA9JVMpIVxcblwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHApO1xuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICApXG5cbiAgbGV0IHRhZ19fbWQgbWQgPSAoKiBbbWRdIHNob3VsZCBiZSBpbiByZXZlcnNlICopXG4gICAgVGFnKFwidGFnX19tZFwiLFxuICAgICAgICBvYmplY3RcbiAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgbCA9IFNvbWUobWRAciwgW10sIGwpXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICAgKVxuXG4gICgqIExldCdzIHRhZyB0aGUgbGluZXMgdGhhdCAqbWlnaHQqIGJlIHRpdGxlcyB1c2luZyBzZXRleHQtc3R5bGUuXG4gICAgIFwibWlnaHRcIiBiZWNhdXNlIGlmIHRoZXkgYXJlLCBmb3IgaW5zdGFuY2UsIGluIGEgY29kZSBzZWN0aW9uLFxuICAgICB0aGVuIHRoZXkgYXJlIG5vdCB0aXRsZXMgYXQgYWxsLiAqKVxuICBsZXQgdGFnX3NldGV4dCBtYWluX2xvb3AgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgbGV0IHJlYyBsb29wIHBsIHJlcyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIHwgW05ld2xpbmV8TmV3bGluZXMgX10gLT5cbiAgICAgICAgcGxAcmVzXG4gICAgICB8IChOZXdsaW5lIGFzIGUxKTo6KEVxdWFsfEVxdWFscyBfIGFzIGUyKTo6dGwgLT4gKCogbWlnaHQgYmUgYSBIMS4gKilcbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0X3JldlxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBffEVxdWFsfEVxdWFscyBfKTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pXG4gICAgICAgICAgICAgICAgICB8IF86Ol8gYXMgbCAtPiBTcGxpdChbXSwgbCkpXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShybGVmdCwgKChbXXwoTmV3bGluZXxOZXdsaW5lcyBfKTo6XykgYXMgcmlnaHQpKSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAdGFnX19tYXliZV9oMSBtYWluX2xvb3A6OnJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsb29wIFtdIChlMjo6ZTE6OnBsQHJlcykgW11cbiAgICAgICAgZW5kXG4gICAgICB8IChOZXdsaW5lIGFzIGUxKTo6KE1pbnVzfE1pbnVzcyBfIGFzIGUyKTo6dGwgLT4gKCogbWlnaHQgYmUgYSBIMi4gKilcbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0X3JldlxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBffE1pbnVzfE1pbnVzcyBfKTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pXG4gICAgICAgICAgICAgICAgICB8IF86Ol8gYXMgbCAtPiBTcGxpdChbXSwgbCkpXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShybGVmdCwgKChbXXwoTmV3bGluZXxOZXdsaW5lcyBfKTo6XykgYXMgcmlnaHQpKSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAdGFnX19tYXliZV9oMiBtYWluX2xvb3A6OnJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsb29wIFtdIChlMjo6ZTE6OnBsQHJlcykgW11cbiAgICAgICAgZW5kXG4gICAgICB8IChOZXdsaW5lIHwgTmV3bGluZXMgXyBhcyBlMSk6OnRsIC0+XG4gICAgICAgIGxvb3AgW10gKGUxOjpwbEByZXMpIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OnBsKSByZXMgdGxcbiAgICBpblxuICAgIExpc3QucmV2IChsb29wIFtdIFtdIGxleGVtZXMpXG5cblxuICBsZXQgaHJfbSBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGxvb3AgbiA9IGZ1bmN0aW9uXG4gICAgICB8ICgoTmV3bGluZXMgX3xOZXdsaW5lKTo6dGwpIHwgKFtdIGFzIHRsKSAtPlxuICAgICAgICBpZiBuID49IDMgdGhlbiBTb21lIHRsIGVsc2UgTm9uZVxuICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBsb29wIG4gdGxcbiAgICAgIHwgTWludXM6OnRsIC0+XG4gICAgICAgIGxvb3AgKG4rMSkgdGxcbiAgICAgIHwgTWludXNzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgKHgrMituKSB0bFxuICAgICAgfCBfOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICBpbiBsb29wIDAgbFxuXG4gIGxldCBocl9zIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgbG9vcCBuID0gZnVuY3Rpb25cbiAgICAgIHwgKChOZXdsaW5lfE5ld2xpbmVzIF8pOjp0bCkgfCAoW10gYXMgdGwpIC0+XG4gICAgICAgIGlmIG4gPj0gMyB0aGVuIFNvbWUgdGwgZWxzZSBOb25lXG4gICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGxvb3AgbiB0bFxuICAgICAgfCBTdGFyOjp0bCAtPlxuICAgICAgICBsb29wIChuKzEpIHRsXG4gICAgICB8IFN0YXJzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgKHgrMituKSB0bFxuICAgICAgfCBfOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICBpbiBsb29wIDAgbFxuXG4gIGxldCBociBsID1cbiAgICBtYXRjaCBocl9tIGwgd2l0aFxuICAgIHwgTm9uZSAtPiBocl9zIGxcbiAgICB8IFNvbWUgXyBhcyB0bCAtPiB0bFxuXG4gICgqKiBbYmNvZGVdIHBhcnNlcyBjb2RlIHRoYXQncyBkZWxpbWl0ZWQgYnkgYmFja3F1b3RlKHMpICopXG4gIGxldCBiY29kZSA/KGRlZmF1bHRfbGFuZz1kZWZhdWx0X2xhbmcpIHIgcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgZSwgdGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCAtPiBlLCB0bFxuICAgICAgfCBfIC0+IGZhaWx3aXRoIFwiT21kX3BhcnNlci5iY29kZSBpcyB3cm9uZ2x5IGNhbGxlZFwiXG4gICAgaW5cbiAgICBsZXQgcmVjIGNvZGVfYmxvY2sgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIE5vbmVcbiAgICAgIHwgQmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiBlID0gQmFja3F1b3RlIHRoZW5cbiAgICAgICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmFjY3UgLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgY29kZV9ibG9jayAoQmFja3F1b3RlOjphY2N1KSB0bFxuICAgICAgfCAoQmFja3F1b3RlcyBuIGFzIGIpOjp0bCAtPlxuICAgICAgICBpZiBlID0gYiB0aGVuXG4gICAgICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjphY2N1IC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgU29tZShMaXN0LnJldiBhY2N1LCB0bClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNvZGVfYmxvY2sgKGI6OmFjY3UpIHRsXG4gICAgICB8IFRhZyhfLCBfKTo6dGwgLT5cbiAgICAgICAgY29kZV9ibG9jayBhY2N1IHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGNvZGVfYmxvY2sgKGU6OmFjY3UpIHRsXG4gICAgaW5cbiAgICBtYXRjaCBjb2RlX2Jsb2NrIFtdIHRsIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZShjYiwgbCkgLT5cbiAgICAgIGlmIExpc3QuZXhpc3RzIChmdW5jdGlvbiAoTmV3bGluZXxOZXdsaW5lcyBfKSAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgY2JcbiAgICAgICYmIChtYXRjaCBwIHdpdGggW118W05ld2xpbmV8TmV3bGluZXMgX10gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAmJiAobWF0Y2ggZSB3aXRoIEJhY2txdW90ZXMgbiB3aGVuIG4gPiAwIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgdGhlblxuICAgICAgICBtYXRjaCBjYiB3aXRoXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZSA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGwgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZXMgMCA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMoTmV3bGluZTo6dGwpIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGxhbmcsIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuICAgICAgICB8IFdvcmQgbGFuZyA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IE5ld2xpbmVzIG4gOjogdGxcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogTmV3bGluZXMgbiA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIChOZXdsaW5lcyhuLTEpOjp0bCkgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgTmV3bGluZSA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRsIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGNiIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjbGVhbl9iY29kZSBzID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AxIGkgPVxuICAgICAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuIDBcbiAgICAgICAgICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICAgICB8ICcgJyAtPiBsb29wMShpKzEpXG4gICAgICAgICAgICAgIHwgXyAtPiBpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AyIGkgPVxuICAgICAgICAgICAgaWYgaSA9IC0xIHRoZW4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAgICAgICBlbHNlIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAgICAgfCAnICcgLT4gbG9vcDIoaS0xKVxuICAgICAgICAgICAgICB8IF8gLT4gaSsxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBsb29wMSAwLCBsb29wMiAoU3RyaW5nLmxlbmd0aCBzIC0gMSkgd2l0aFxuICAgICAgICAgIHwgMCwgbiB3aGVuIG4gPSBTdHJpbmcubGVuZ3RoIHMgLSAxIC0+IHNcbiAgICAgICAgICB8IGksIG4gLT4gU3RyaW5nLnN1YiBzIGkgKG4taSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgY2IgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGYgXCIoT01EKSBjbGVhbl9iY29kZSAlUyA9PiAlU1xcbiUhXCIgY29kZSAoY2xlYW5fYmNvZGUgY29kZSk7XG4gICAgICAgIFNvbWUoQ29kZShkZWZhdWx0X2xhbmcsIGNsZWFuX2Jjb2RlIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuXG5cbiAgZXhjZXB0aW9uIE5MX2V4Y2VwdGlvblxuICBleGNlcHRpb24gUHJlbWF0dXJlX2VuZGluZ1xuXG4gICgqICEhRE8gTk9UIERFTEVURSBUSElTISFcbiAgICAgVGhlIHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgdGhlIGdlbmVyYXRlZCBwYXJ0IHRoYXQgZm9sbG93cyByaWdodCBhZnRlci5cbiAgICAgTGlzdC5pdGVyIChmdW4gKGEsYixjKSAtPlxuICAgICBwcmludF9lbmRsaW5lIChcImxldCByZWFkX3VudGlsX1wiXmFeXCIgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5iXlwiIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5iXlwicyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChcIl5iXlwiOjphY2N1KSBuIChcIl5iXlwiOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcIlxuICAgICAgXihpZiBjPD5cIlwiIHRoZW4gXCJcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5jXlwiIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5jXlwicyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChcIl5jXlwiOjphY2N1KSBuIChcIl5jXlwiOjp0bClcbiAgICAgIHwgXCJeY15cIiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IFwiXmNeXCJzIHggYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobit4KzIpIHRsXG4gICAgIFwiIGVsc2UgXCJcIileXG4gICAgIFwiICAgIHwgXCJeYl5cIiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgXCJeYl5cInMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgXCJeYl5cIjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKFwiXmJeXCI6OmFjY3UpIChuLTEpIChcIl5iXlwiOjp0bClcbiAgICAgIHwgXCJeYl5cInMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgXCJeYl5cInMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFwiXmJeXCI6OmFjY3UgLT4gXCJeYl5cInMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IFwiXmJeXCJzIHg6OmFjY3UgLT4gXCJeYl5cInMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBcIl5iXlwiOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChcIl5iXlwicyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXFxcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9cIl5hXlwiICVTIGJxPSViIG5vX25sPSViXFxcXG4lIVxcXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFxcXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfXCJeYV5cIiAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcXFxuJSFcXFwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblwiKSlcblxuICAgICBbIFwiZ3RcIiwgXCJHcmVhdGVydGhhblwiLCBcIkxlc3N0aGFuXCI7XG4gICAgIFwibHRcIiwgXCJMZXNzdGhhblwiLCBcIlwiO1xuICAgICBcImNwYXJlbnRoXCIsIFwiQ3BhcmVudGhlc2lzXCIsIFwiT3BhcmVudGhlc2lzXCI7XG4gICAgIFwib3BhcmVudGhcIiwgXCJPcGFyZW50aGVzaXNcIiwgXCJcIjtcbiAgICAgXCJkcVwiLCBcIkRvdWJsZXF1b3RlXCIsIFwiXCI7XG4gICAgIFwicVwiLCBcIlF1b3RlXCIsIFwiXCI7XG4gICAgIFwib2JyYWNrZXRcIiwgXCJPYnJhY2tldFwiLCBcIlwiO1xuICAgICBcImNicmFja2V0XCIsIFwiQ2JyYWNrZXRcIiwgXCJPYnJhY2tldFwiO1xuICAgICBcInNwYWNlXCIsIFwiU3BhY2VcIiwgXCJcIjtcbiAgICAgXVxuICAqKVxuXG4gICgqIGJlZ2luIGdlbmVyYXRlZCBwYXJ0ICopXG5cbmxldCByZWFkX3VudGlsX2d0ID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoR3JlYXRlcnRoYW4gYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKEdyZWF0ZXJ0aGFucyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChHcmVhdGVydGhhbjo6YWNjdSkgbiAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFuIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbnMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoTGVzc3RoYW46OmFjY3UpIG4gKExlc3N0aGFuOjp0bClcbiAgICAgIHwgTGVzc3RoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobisxKSB0bFxuICAgICAgfCBMZXNzdGhhbnMgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgICAgIHwgR3JlYXRlcnRoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IEdyZWF0ZXJ0aGFucyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBHcmVhdGVydGhhbjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEdyZWF0ZXJ0aGFuOjphY2N1KSAobi0xKSAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbnMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgR3JlYXRlcnRoYW5zKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBHcmVhdGVydGhhbjo6YWNjdSAtPiBHcmVhdGVydGhhbnMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyB4OjphY2N1IC0+IEdyZWF0ZXJ0aGFucyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IEdyZWF0ZXJ0aGFuOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChHcmVhdGVydGhhbnMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2d0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZ3QgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfbHQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoTGVzc3RoYW5zIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKExlc3N0aGFuOjphY2N1KSBuIChMZXNzdGhhbjo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgTGVzc3RoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IExlc3N0aGFucyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBMZXNzdGhhbjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKExlc3N0aGFuOjphY2N1KSAobi0xKSAoTGVzc3RoYW46OnRsKVxuICAgICAgfCBMZXNzdGhhbnMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgTGVzc3RoYW5zKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBMZXNzdGhhbjo6YWNjdSAtPiBMZXNzdGhhbnMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IExlc3N0aGFucyB4OjphY2N1IC0+IExlc3N0aGFucyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IExlc3N0aGFuOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChMZXNzdGhhbnMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2x0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfbHQgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfY3BhcmVudGggPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChDcGFyZW50aGVzaXMgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKENwYXJlbnRoZXNpc3MgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQ3BhcmVudGhlc2lzOjphY2N1KSBuIChDcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpcyBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPcGFyZW50aGVzaXM6OmFjY3UpIG4gKE9wYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IE9wYXJlbnRoZXNpcyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgICAgIHwgQ3BhcmVudGhlc2lzIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBDcGFyZW50aGVzaXNzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENwYXJlbnRoZXNpczo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKENwYXJlbnRoZXNpczo6YWNjdSkgKG4tMSkgKENwYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IENwYXJlbnRoZXNpc3MgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ3BhcmVudGhlc2lzcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgQ3BhcmVudGhlc2lzOjphY2N1IC0+IENwYXJlbnRoZXNpc3MoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IENwYXJlbnRoZXNpc3MgeDo6YWNjdSAtPiBDcGFyZW50aGVzaXNzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gQ3BhcmVudGhlc2lzOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChDcGFyZW50aGVzaXNzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jcGFyZW50aCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NwYXJlbnRoICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX29wYXJlbnRoID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXNzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9wYXJlbnRoZXNpczo6YWNjdSkgbiAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBPcGFyZW50aGVzaXMgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT3BhcmVudGhlc2lzOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoT3BhcmVudGhlc2lzOjphY2N1KSAobi0xKSAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPcGFyZW50aGVzaXNzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBPcGFyZW50aGVzaXM6OmFjY3UgLT4gT3BhcmVudGhlc2lzcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgT3BhcmVudGhlc2lzcyB4OjphY2N1IC0+IE9wYXJlbnRoZXNpc3MoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBPcGFyZW50aGVzaXM6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKE9wYXJlbnRoZXNpc3MoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29wYXJlbnRoICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfZHEgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChEb3VibGVxdW90ZSBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoRG91YmxlcXVvdGVzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKERvdWJsZXF1b3RlOjphY2N1KSBuIChEb3VibGVxdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgRG91YmxlcXVvdGUgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IERvdWJsZXF1b3RlcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBEb3VibGVxdW90ZTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKERvdWJsZXF1b3RlOjphY2N1KSAobi0xKSAoRG91YmxlcXVvdGU6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZXMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgRG91YmxlcXVvdGVzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBEb3VibGVxdW90ZTo6YWNjdSAtPiBEb3VibGVxdW90ZXMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyB4OjphY2N1IC0+IERvdWJsZXF1b3Rlcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IERvdWJsZXF1b3RlOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChEb3VibGVxdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2RxICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZHEgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfcSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFF1b3RlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChRdW90ZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoUXVvdGU6OmFjY3UpIG4gKFF1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBRdW90ZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgUXVvdGVzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFF1b3RlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoUXVvdGU6OmFjY3UpIChuLTEpIChRdW90ZTo6dGwpXG4gICAgICB8IFF1b3RlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBRdW90ZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFF1b3RlOjphY2N1IC0+IFF1b3RlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgUXVvdGVzIHg6OmFjY3UgLT4gUXVvdGVzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gUXVvdGU6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFF1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfcSAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX3EgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfb2JyYWNrZXQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSBuIChPYnJhY2tldDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgT2JyYWNrZXQgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IE9icmFja2V0cyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPYnJhY2tldDo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSAobi0xKSAoT2JyYWNrZXQ6OnRsKVxuICAgICAgfCBPYnJhY2tldHMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT2JyYWNrZXRzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBPYnJhY2tldDo6YWNjdSAtPiBPYnJhY2tldHMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IE9icmFja2V0cyB4OjphY2N1IC0+IE9icmFja2V0cyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IE9icmFja2V0OjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChPYnJhY2tldHMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29icmFja2V0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfY2JyYWNrZXQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChDYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoQ2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKENicmFja2V0OjphY2N1KSBuIChDYnJhY2tldDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXQgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9icmFja2V0cyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPYnJhY2tldDo6YWNjdSkgbiAoT2JyYWNrZXQ6OnRsKVxuICAgICAgfCBPYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IE9icmFja2V0cyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICAgICAgfCBDYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgQ2JyYWNrZXRzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENicmFja2V0Ojp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQ2JyYWNrZXQ6OmFjY3UpIChuLTEpIChDYnJhY2tldDo6dGwpXG4gICAgICB8IENicmFja2V0cyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBDYnJhY2tldHMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IENicmFja2V0OjphY2N1IC0+IENicmFja2V0cygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgQ2JyYWNrZXRzIHg6OmFjY3UgLT4gQ2JyYWNrZXRzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gQ2JyYWNrZXQ6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKENicmFja2V0cyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfY2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jYnJhY2tldCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9zcGFjZSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFNwYWNlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChTcGFjZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoU3BhY2U6OmFjY3UpIG4gKFNwYWNlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBTcGFjZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgU3BhY2VzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFNwYWNlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoU3BhY2U6OmFjY3UpIChuLTEpIChTcGFjZTo6dGwpXG4gICAgICB8IFNwYWNlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBTcGFjZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFNwYWNlOjphY2N1IC0+IFNwYWNlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgU3BhY2VzIHg6OmFjY3UgLT4gU3BhY2VzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gU3BhY2U6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFNwYWNlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfc3BhY2UgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9zcGFjZSAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuICAoKiAvZW5kIGdlbmVyYXRlZCBwYXJ0ICopXG5cbiAgbGV0IHJlYWRfdW50aWxfbmV3bGluZSBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID1cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8ICgoQmFja3NsYXNoIGFzIGEpKSA6OiAoKE5ld2xpbmUgYXMgYikpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGIgOjogYSA6OiBhY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmUgOjogQmFja3NsYXNoIDo6IGFjY3UpIG4gKE5ld2xpbmUgOjogdGwpXG4gICAgICB8ICgoQmFja3NsYXNocyAwIGFzIGUpKSA6OiB0bCAtPiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgIHwgKChCYWNrc2xhc2hzIHggYXMgZSkpIDo6IHRsIC0+XG4gICAgICAgIGlmICh4IG1vZCAyKSA9IDBcbiAgICAgICAgdGhlbiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgICAgZWxzZSBsb29wICgoQmFja3NsYXNocyAoeCAtIDEpKSA6OiBhY2N1KSBuIChCYWNrc2xhc2ggOjogdGwpXG4gICAgICB8ICgoTmV3bGluZSBhcyBlKSkgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlbiAoKExpc3QucmV2IGFjY3UpLCB0bCkgZWxzZSBsb29wIChlIDo6IGFjY3UpIChuIC0gMSkgdGxcbiAgICAgIHwgTmV3bGluZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMFxuICAgICAgICB0aGVuICgoTGlzdC5yZXYgYWNjdSksIChOZXdsaW5lIDo6IHRsKSlcbiAgICAgICAgZWxzZSBsb29wIChOZXdsaW5lIDo6IGFjY3UpIChuIC0gMSkgKE5ld2xpbmUgOjogdGwpXG4gICAgICB8IE5ld2xpbmVzIG4gOjogdGwgLT4gKChMaXN0LnJldiBhY2N1KSwgKChOZXdsaW5lcyAobiAtIDEpKSA6OiB0bCkpXG4gICAgICB8IGUgOjogdGwgLT4gbG9vcCAoZSA6OiBhY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICBpbiBsb29wIFtdIDAgbFxuXG4gICgqIEgxLCBIMiwgSDMsIC4uLiAqKVxuICBsZXQgcmVhZF90aXRsZSAobWFpbl9sb29wOm1haW5fbG9vcCkgbiByIF9wcmV2aW91cyBsZXhlbWVzID1cbiAgICBsZXQgdGl0bGUsIHJlc3QgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IEJhY2tzbGFzaDo6SGFzaDo6dGwgLT5cbiAgICAgICAgICBsb29wIChIYXNoOjpCYWNrc2xhc2g6OmFjY3UpIHRsXG4gICAgICAgIHwgQmFja3NsYXNocyhuKTo6SGFzaDo6dGwgd2hlbiBuIG1vZCAyID0gMSAtPlxuICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaHMobi0xKTo6YWNjdSkgdGxcbiAgICAgICAgfCBCYWNrc2xhc2g6Okhhc2hzKGgpOjp0bCAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHRsIHdpdGhcbiAgICAgICAgICAgIHwgW11cbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8TmV3bGluZXMgXyk6Ol9cbiAgICAgICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNoOjphY2N1KVxuICAgICAgICAgICAgICAgICgoaWYgaCA9IDAgdGhlbiBIYXNoIGVsc2UgSGFzaHMoaC0xKSk6OnRsKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2hzKGgpOjpCYWNrc2xhc2g6OmFjY3UpIHRsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgQmFja3NsYXNocyhuKTo6SGFzaHMoaCk6OnRsIHdoZW4gbiBtb2QgMiA9IDEgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCB0bCB3aXRoXG4gICAgICAgICAgICB8IFtdXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OihOZXdsaW5lfE5ld2xpbmVzIF8pOjpfXG4gICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaHMobik6OmFjY3UpXG4gICAgICAgICAgICAgICAgKChpZiBoID0gMCB0aGVuIEhhc2ggZWxzZSBIYXNocyhoLTEpKTo6dGwpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaHMoaCk6OkJhY2tzbGFzaHMobik6OmFjY3UpIHRsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgKEhhc2h8SGFzaHMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoSGFzaHxIYXNocyBfKSA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyBhcyBsKVxuICAgICAgICB8ICgoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfIGFzIGwpXG4gICAgICAgIHwgKFtdIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoSGFzaHxIYXNocyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKEhhc2h8SGFzaHMgXykgOjogKFNwYWNlfFNwYWNlcyBfKVxuICAgICAgICAgIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIDo6IChbXSBhcyBsKSAtPlxuICAgICAgICAgIG1haW5fbG9vcCBbXSBbXSAoTGlzdC5yZXYgYWNjdSksIGxcbiAgICAgICAgfCBbSGFzaHxIYXNocyBfXVxuICAgICAgICB8IFsoU3BhY2V8U3BhY2VzIF8pOyBIYXNofEhhc2hzIF9dXG4gICAgICAgIHwgWyhTcGFjZXxTcGFjZXMgXyk7IChIYXNofEhhc2hzIF8pOyAoU3BhY2V8U3BhY2VzIF8pXSAtPlxuICAgICAgICAgIG1haW5fbG9vcCBbXSBbXSAoTGlzdC5yZXYgYWNjdSksIFtdXG4gICAgICAgIHwgeDo6dGwgLT5cbiAgICAgICAgICBsb29wICh4OjphY2N1KSB0bFxuICAgICAgaW5cbiAgICAgIGxvb3AgW10gbGV4ZW1lc1xuICAgIGluXG4gICAgbWF0Y2ggbiB3aXRoXG4gICAgfCAxIC0+IFNvbWUoSDEgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgMiAtPiBTb21lKEgyIHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDMgLT4gU29tZShIMyB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCA0IC0+IFNvbWUoSDQgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgNSAtPiBTb21lKEg1IHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDYgLT4gU29tZShINiB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwIGwgPVxuICAgIG1hdGNoIGV4dGVuc2lvbnMgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgXyAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAoZnVuIGYgLT4gZiNwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsKVxuICAgICAgICAgIHwgU29tZShuciwgbnAsIG5sKSBhcyBlIC0+XG4gICAgICAgICAgICAoZnVuIGYgLT4gbWF0Y2ggZiNwYXJzZXJfZXh0ZW5zaW9uIG5yIG5wIG5sIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBlXG4gICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBrIC0+IGspXG4gICAgICAgIClcbiAgICAgICAgTm9uZVxuICAgICAgICBleHRlbnNpb25zXG5cbiAgKCogYmxvY2txdW90ZXMgKilcbiAgbGV0IGVtYWlsc3R5bGVfcXVvdGluZyAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsZXhlbWVzID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgYmxvY2sgY2wgPVxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OihOZXdsaW5lOjpfIGFzIHRsKSAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW10gdGxcbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OlNwYWNlOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW10gdGxcbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OlNwYWNlcyAwOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW1NwYWNlXSB0bFxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6U3BhY2VzIG46OnRsIC0+XG4gICAgICAgIGFzc2VydChuPjApO1xuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW1NwYWNlcyhuLTEpXSB0bFxuXG4gICAgICAoKiBtdWx0aSBwYXJhZ3JhcGggYmxvY2txdW90ZXMgd2l0aCBlbXB0eSBsaW5lcyAqKVxuICAgICAgfCBOZXdsaW5lcyAwOjpHcmVhdGVydGhhbjo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbXSB0bFxuICAgICAgfCBOZXdsaW5lcyAwOjpHcmVhdGVydGhhbjo6U3BhY2VzIDA6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbU3BhY2VdIHRsXG4gICAgICB8IE5ld2xpbmVzIDA6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgbjo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbU3BhY2VzKG4tMSldIHRsXG5cbiAgICAgIHwgKE5ld2xpbmVzIF86Ol8gYXMgbCkgfCAoW10gYXMgbCkgLT4gZml4KExpc3QucmV2KGNsQGJsb2NrKSksIGxcbiAgICAgIHwgZTo6dGwgLT4gbG9vcCBibG9jayAoZTo6Y2wpIHRsXG4gICAgaW5cbiAgICBtYXRjaCBsb29wIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6OmJsb2NrLCB0bCAtPlxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3RpbmcgJVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBibG9jayk7XG4gICAgICBTb21lKChCbG9ja3F1b3RlKG1haW5fbG9vcCBbXSBbXSBibG9jayk6OnIpLCBbTmV3bGluZV0sIHRsKVxuICAgIHwgXyAtPlxuICAgICAgTm9uZVxuXG5cbiAgKCogbWF5YmUgYSByZWZlcmVuY2UgKilcbiAgbGV0IG1heWJlX3JlZmVyZW5jZSAobWFpbl9sb29wOm1haW5fbG9vcCkgcmMgciBfcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIGtub3cgaXQncyBub3QgYSBsaW5rIGFsdGhvdWdoXG4gICAgICAgaXQgc3RhcnRlZCB3aXRoIGEgJ1snICopXG4gICAgKCogU28gaXQgY291bGQgYmUgYSByZWZlcmVuY2Ugb3IgYSBsaW5rIGRlZmluaXRpb24uICopXG4gICAgbGV0IHJlYyBtYXliZV9yZWYgbCA9XG4gICAgICBsZXQgdGV4dCwgcmVtYWlucyA9IHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCBpblxuICAgICAgKCogY2hlY2sgdGhhdCB0aGVyZSBpcyBubyBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgaWYgKHRyeSBpZ25vcmUocmVhZF91bnRpbF9vYnJhY2tldCB+YnE6dHJ1ZSB0ZXh0KTsgdHJ1ZVxuICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBmYWxzZSkgdGhlblxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nOyAoKiA8LS0gaWxsLXBsYWNlZCBvcGVuIGJyYWNrZXQgKilcbiAgICAgIGxldCBibGFuaywgcmVtYWlucyA9IHJlYWRfdW50aWxfb2JyYWNrZXQgfmJxOnRydWUgcmVtYWlucyBpblxuICAgICAgKCogY2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gdW53YW50ZWQgY2hhcmFjdGVycyBiZXR3ZWVuIENCIGFuZCBPQi4gKilcbiAgICAgIGlmIGVhdCAobGV0IGZsYWcgPSByZWYgdHJ1ZSBpblxuICAgICAgICAgICAgICBmdW5jdGlvbiAoKiBhbGxvdyBvbmx5IGEgc3BhY2UsIG11bHRpcGxlIHNwYWNlcywgb3IgYSBuZXdsaW5lICopXG4gICAgICAgICAgICAgIHwgTmV3bGluZSAtPiAhZmxhZyAmJiAoZmxhZyA6PSBmYWxzZTsgdHJ1ZSlcbiAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIC0+ICFmbGFnICYmIChmbGFnIDo9IGZhbHNlOyB0cnVlKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIGJsYW5rIDw+IFtdIHRoZW5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZyAoKiA8LS0gbm90IGEgcmVndWxhciByZWZlcmVuY2UgKilcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSByZW1haW5zIHdpdGhcbiAgICAgICAgfCBbXSwgcmVtYWlucyAtPlxuICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlbWFpbnMgKE9icmFja2V0OjpsKSBpblxuICAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyB0ZXh0IGluICgqIGltcGxpY2l0IGFuY2hvciAqKVxuICAgICAgICAgIFNvbWUoKChSZWYocmMsIGlkLCBpZCwgZmFsbGJhY2spKTo6ciksIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgICAgIHwgaWQsIHJlbWFpbnMgLT5cbiAgICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIChPYnJhY2tldDo6bCkgaW5cbiAgICAgICAgICBTb21lKCgoUmVmKHJjLCBMLnN0cmluZ19vZl90b2tlbnMgaWQsXG4gICAgICAgICAgICAgICAgICAgICBMLnN0cmluZ19vZl90b2tlbnMgdGV4dCwgZmFsbGJhY2spKTo6ciksXG4gICAgICAgICAgICAgICBbQ2JyYWNrZXRdLCByZW1haW5zKVxuICAgIGluXG4gICAgbGV0IHJlYyBtYXliZV9ub25yZWd1bGFyX3JlZiBsID1cbiAgICAgIGxldCB0ZXh0LCByZW1haW5zID0gcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIGluXG4gICAgICAoKiBjaGVjayB0aGF0IHRoZXJlIGlzIG5vIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBpZiAodHJ5IGlnbm9yZShyZWFkX3VudGlsX29icmFja2V0IH5icTp0cnVlIHRleHQpOyB0cnVlXG4gICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IGZhbHNlKSB0aGVuXG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmc7ICgqIDwtLSBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyAoT2JyYWNrZXQ6OmwpIGluXG4gICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgdGV4dCBpbiAoKiBpbXBsaWNpdCBhbmNob3IgKilcbiAgICAgIFNvbWUoKChSZWYocmMsIGlkLCBpZCwgZmFsbGJhY2spKTo6ciksIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgaW5cbiAgICBsZXQgcmVjIG1heWJlX2RlZiBsID1cbiAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCB3aXRoXG4gICAgICB8IF8sIFtdIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgIHwgaWQsIChDb2xvbjo6KFNwYWNlfFNwYWNlcyBfKTo6cmVtYWlucylcbiAgICAgIHwgaWQsIChDb2xvbjo6cmVtYWlucykgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF98TmV3bGluZXxOZXdsaW5lcyBfKTo6IF8gYXMgbCAtPiBTcGxpdChbXSwgbClcbiAgICAgICAgICAgICAgICAgIHwgZTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pKVxuICAgICAgICAgICAgICByZW1haW5zXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSB8IFNvbWUoW10sIF8pIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICB8IFNvbWUodXJsLCByZW1haW5zKSAtPlxuICAgICAgICAgICAgbGV0IHRpdGxlLCByZW1haW5zID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBlYXRcbiAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiB8IChTcGFjZXxTcGFjZXMgX3xOZXdsaW5lfE5ld2xpbmVzIF8pIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICByZW1haW5zXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMoMCk6OnRsIC0+IFtdLCB0bFxuICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjp0bCAtPiByZWFkX3VudGlsX2RxIH5icTp0cnVlIHRsXG4gICAgICAgICAgICAgIHwgUXVvdGVzKDApOjp0bCAtPiBbXSwgdGxcbiAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gcmVhZF91bnRpbF9xIH5icTp0cnVlIHRsXG4gICAgICAgICAgICAgIHwgT3BhcmVudGhlc2lzOjp0bC0+IHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgdGxcbiAgICAgICAgICAgICAgfCBsIC0+IFtdLCBsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHVybCA9XG4gICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggdXJsID4gMiAmJiB1cmwuWzBdID0gJzwnXG4gICAgICAgICAgICAgICAgICYmIHVybC5bU3RyaW5nLmxlbmd0aCB1cmwgLSAxXSA9ICc+JyB0aGVuXG4gICAgICAgICAgICAgICAgU3RyaW5nLnN1YiB1cmwgMSAoU3RyaW5nLmxlbmd0aCB1cmwgLSAyKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdXJsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcmMjYWRkX3JlZiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGlkKSAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlKSB1cmw7XG4gICAgICAgICAgICBTb21lKHIsIFtOZXdsaW5lXSwgcmVtYWlucylcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgIGluXG4gICAgdHJ5XG4gICAgICBtYXliZV9yZWYgbFxuICAgIHdpdGggfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICB0cnlcbiAgICAgICAgbWF5YmVfZGVmIGxcbiAgICAgIHdpdGhcbiAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICB0cnlcbiAgICAgICAgICBtYXliZV9ub25yZWd1bGFyX3JlZiBsXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICAgTm9uZVxuXG5cbiAgKCoqIG1heWJlIGEgbGluayAqKVxuICBsZXQgbWF5YmVfbGluayAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsID1cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAjIG1heWJlX2xpbmtcXG5cIjtcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVhZF91cmwgbmFtZSBsID1cbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpICMgbWF5YmVfbGluaz5yZWFkX3VybCAlU1xcblwiIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxfY3AsIHJfY3AgPVxuICAgICAgICAgIHJlYWRfdW50aWxfY3BhcmVudGggfm5vX25sOnRydWUgfmJxOmZhbHNlIGxcbiAgICAgICAgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBsX2NwPSVTIHJfY3A9JVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsX2NwKVxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcl9jcCk7XG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBsX2RxLCByX2RxID1cbiAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfm5vX25sOnRydWUgfmJxOmZhbHNlIGxcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gbF9kcT0lUyByX2RxPSVTXFxuJSFcIlxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsX2RxKVxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyByX2RxKTtcbiAgICAgICAgICAoKiBtYXliZSB0aXRsZSAqKVxuICAgICAgICAgIGlmIExpc3QubGVuZ3RoIGxfY3AgPiBMaXN0Lmxlbmd0aCBsX2RxIHRoZW4gKCogdGl0bGUgKilcbiAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gdGl0bGVcXG4lIVwiO1xuICAgICAgICAgICAgICBsZXQgdXJsID1cbiAgICAgICAgICAgICAgICBtYXRjaCBMaXN0LnJldiBsX2RxIHdpdGhcbiAgICAgICAgICAgICAgICB8IChOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bFxuICAgICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICAgICAgICAgICAgTC5zdHJpbmdfb2ZfdG9rZW5zIChMaXN0LnJldiB0bClcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIEwuc3RyaW5nX29mX3Rva2VucyBsX2RxXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSwgcmVzdCA9IHJlYWRfdW50aWxfZHEgfm5vX25sOmZhbHNlIH5icTpmYWxzZSByX2RxIGluXG4gICAgICAgICAgICAgIGxldCByZXN0ID0gc25kKHJlYWRfdW50aWxfY3BhcmVudGggcmVzdCkgaW5cbiAgICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICAgIFNvbWUoVXJsKHVybCwgbmFtZSwgdGl0bGUpIDo6IHIsIFtDcGFyZW50aGVzaXNdLCByZXN0KVxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSAoKiBubyB0aXRsZSAqKVxuICAgICAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICB3aXRoIE5MX2V4Y2VwdGlvbiB8IFByZW1hdHVyZV9lbmRpbmcgLT4gKCogbm8gdGl0bGUgKilcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBubyB0aXRsZVxcbiUhXCI7XG4gICAgICAgICAgICBsZXQgdXJsID0gbWF0Y2ggTGlzdC5yZXYgbF9jcCB3aXRoXG4gICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsXG4gICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bCAtPiBMaXN0LnJldiB0bFxuICAgICAgICAgICAgICB8IF8gLT4gbF9jcFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB0aXRsZSwgcmVzdCA9IFtdLCByX2NwIGluXG4gICAgICAgICAgICBsZXQgdXJsID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHVybCBpblxuICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICBTb21lKFVybCh1cmwsIG5hbWUsIHRpdGxlKSA6OiByLCBbQ3BhcmVudGhlc2lzXSwgcmVzdClcbiAgICAgICAgICBlbmRcbiAgICAgIHdpdGggTkxfZXhjZXB0aW9uIHwgUHJlbWF0dXJlX2VuZGluZyAtPlxuICAgICAgICBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVhZF9uYW1lIGwgPVxuICAgICAgKCogaXQncyBub3QgcmVhbGx5IHRoZSBcIm5hbWVcIiBvZiBhIFVSTCBidXQgd2hhdFxuICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhlIGlubmVyIEhUTUwgb2YgYW4gSFRNTCAnQScgdGFnICopXG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAjIG1heWJlX2xpbms+IHJlYWRfbmFtZVxcblwiO1xuICAgICAgdHJ5XG4gICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCB3aXRoXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpczo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChlYXRfYmxhbmsgdGwpXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpc3MgMDo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgICB8IG5hbWUsIChPcGFyZW50aGVzaXNzIG46OnRsKSAtPlxuICAgICAgICAgIHJlYWRfdXJsIChtYWluX2xvb3AgW10gW09icmFja2V0XSBuYW1lKSAoT3BhcmVudGhlc2lzcyhuLTEpOjp0bClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+IE5vbmVcbiAgICBpblxuICAgIHJlYWRfbmFtZSBsXG5cblxuICBsZXQgaGFzX3BhcmFncmFwaHMgbCA9XG4gICAgKCogSGFzIGF0IGxlYXN0IDIgY29uc2VjdXRpdmUgbmV3bGluZXMuICopXG4gICAgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIE5ld2xpbmVzIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGxcblxuICBsZXQgcGFyc2VfbGlzdCAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBpZiBkZWJ1ZyB0aGVuIGJlZ2luXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgcGFyc2VfbGlzdCByPSglcykgcD0oJXMpIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgXCJcIiAoKiAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgKExpc3QucmV2IHIpKSAqKVxuICAgICAgICBcIlwiICgqIChkZXN0cmluZ19vZl90bCBwKSAqKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgfmxpbWl0OjQwIGwpO1xuICAgIGVuZDtcbiAgICBsZXQgbW9kdWxlIFVPID0gc3RydWN0IHR5cGUgb3JkZXJlZCA9IE8gfCBVIGVuZCBpblxuICAgIGxldCBvcGVuIFVPIGluXG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIHBhcnNlX2xpc3Q6IGw9KCVzKVxcbiUhXCIgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgIGxldCBlbmRfb2ZfaXRlbSAoaW5kZW50OmludCkgbCA6IHRvayBzcGxpdF9hY3Rpb24gID0gbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIFNwbGl0KFtdLFtdKVxuICAgICAgfCBOZXdsaW5lcyAwIDo6ICgoU3BhY2VzIG4pIDo6IEdyZWF0ZXJ0aGFuIDo6IChTcGFjZSB8IFNwYWNlcyBfKSA6OiB0bFxuICAgICAgICAgICAgICAgICAgICAgICBhcyBzKSAtPlxuICAgICAgICBhc3NlcnQobj49MCk7XG4gICAgICAgIGlmIG4rMiA9IGluZGVudCs0IHRoZW4gKCogYmxvY2txdW90ZSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChuKzIpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisyKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZXMgMDo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2UgaWYgbisyID49IGluZGVudCs4IHRoZW4gKCogY29kZSBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCBOZXdsaW5lcyAwIDo6IChTcGFjZXMgbiA6OiB0bCBhcyBzKSAtPlxuICAgICAgICBhc3NlcnQobj49MCk7XG4gICAgICAgIGlmIG4rMiA+PSBpbmRlbnQrOCB0aGVuICgqIGNvZGUgaW5zaWRlIGl0ZW0gKilcbiAgICAgICAgICBtYXRjaCB1bmluZGVudCAoaW5kZW50KzQpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygwKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZTo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2UgaWYgbisyID49IGluZGVudCs0IHRoZW4gKCogbmV3IHBhcmFncmFwaCBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCAoTmV3bGluZXMgXykgOjogXyAtPiAoKiBuID4gMCAqKVxuICAgICAgICAoKiBFbmQgb2YgaXRlbSwgc3RvcCAqKVxuICAgICAgICBTcGxpdChbXSwgbClcbiAgICAgIHwgTmV3bGluZSA6OlxuICAgICAgICAoXG4gICAgICAgICAgKChTcGFjZXxTcGFjZXMgXykgOjogKFN0YXJ8TWludXN8UGx1cykgOjogKFNwYWNlfFNwYWNlcyBfKTo6IF8pXG4gICAgICAgIHwgKChTcGFjZXxTcGFjZXMgXykgOjogTnVtYmVyIF8gOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogXylcbiAgICAgICAgfCAoKFN0YXJ8TWludXN8UGx1cykgOjogKFNwYWNlfFNwYWNlcyBfKTo6IF8pXG4gICAgICAgIHwgKE51bWJlciBfIDo6IERvdCA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8pXG4gICAgICAgICAgYXMgdGwpIC0+XG4gICAgICAgIFNwbGl0KFtOZXdsaW5lXSwgdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIHwgU3BhY2VzIF8pIDo6IE5ld2xpbmUgOjogdGwgLT5cbiAgICAgICAgKCogQSBsaW5lIHdpdGggc3BhY2VzIHNob3VsZG4ndCBpbnRlcmZlcmUgaGVyZSxcbiAgICAgICAgICAgd2hpY2ggaXMgYWJvdXQgZXhhY3RseSAyIGNvbnNlY3V0aXZlIG5ld2xpbmVzLFxuICAgICAgICAgICBzbyB3ZSByZXdyaXRlIHRoZSBoZWFkIG9mIHRoZSBsZXhpbmcgc3RyZWFtLiAqKVxuICAgICAgICBDb250aW51ZV93aXRoKFtdLCBOZXdsaW5lcyAwIDo6IHRsKVxuICAgICAgfCBOZXdsaW5lIDo6IChTcGFjZSB8IFNwYWNlcyBfKSA6OiAoTmV3bGluZXMgXykgOjogXyAtPlxuICAgICAgICAoKiBBIGxpbmUgd2l0aCBzcGFjZXMgc2hvdWxkbid0IGludGVyZmVyZSBoZXJlLFxuICAgICAgICAgICB3aGljaCBpcyBhYm91dCBhdCBsZWFzdCAzIGNvbnNlY3V0aXZlIG5ld2xpbmVzLFxuICAgICAgICAgICBzbyB3ZSBzdG9wLiAqKVxuICAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlcyBfIGFzIHMpIDo6IHRsIC0+XG4gICAgICAgIENvbnRpbnVlX3dpdGhcbiAgICAgICAgICAoW3M7XG4gICAgICAgICAgICBUYWcoXCJwYXJzZV9saXN0L3JlbWVtYmVyIHNwYWNlc1wiLFxuICAgICAgICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwID1cbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gU3BhY2VzIF86OnRsIC0+IFNvbWUocixwLFNwYWNlOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgICBOZXdsaW5lXSxcbiAgICAgICAgICAgdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIGFzIHMpIDo6IHRsIC0+XG4gICAgICAgIENvbnRpbnVlX3dpdGhcbiAgICAgICAgICAoW3M7XG4gICAgICAgICAgICBUYWcoXCJwYXJzZV9saXN0L3JlbWVtYmVyIHNwYWNlXCIsXG4gICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgPVxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoU3BhY2V8U3BhY2VzIF8pOjp0bCAtPiBTb21lKHIscCxTcGFjZTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgICBOZXdsaW5lXSxcbiAgICAgICAgICAgdGwpXG4gICAgICB8IF86Ol8gLT5cbiAgICAgICAgQ29udGludWVcbiAgICBpblxuICAgIGxldCByZXZfdG9fdCBsID1cbiAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICAgKCogTmV3bGluZXMgYXQgdGhlIGVuZCBvZiBpdGVtcyBoYXZlIG5vIG1lYW5pbmcgKGV4Y2VwdCB0byBlbmQgdGhlXG4gICAgICAgICBpdGVtIHdoaWNoIGlzIGV4cHJlc3NlZCBieSB0aGUgY29uc3RydWN0b3IgYWxyZWFkeSkuICopXG4gICAgICBsZXQgbCA9IG1hdGNoIGwgd2l0aCAoTmV3bGluZSB8IE5ld2xpbmVzIF8pIDo6IHRsIC0+IHRsIHwgXyAtPiBsIGluXG4gICAgICBtYWluX2xvb3AgW10gW05ld2xpbmVdIChMaXN0LnJldiBsKVxuICAgIGluXG4gICAgbGV0IGFkZCAoc3VibGlzdDplbGVtZW50KSBpdGVtcyA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBhZGRcXG4lIVwiO1xuICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgKE8saW5kZW50cyxpdGVtKTo6dGwgLT5cbiAgICAgICAgKE8saW5kZW50cywoaXRlbUBbc3VibGlzdF0pKTo6dGxcbiAgICAgIHwgKFUsaW5kZW50cyxpdGVtKTo6dGwgLT5cbiAgICAgICAgKFUsaW5kZW50cywoaXRlbUBbc3VibGlzdF0pKTo6dGxcbiAgICBpblxuICAgIGxldCBtYWtlX3VwIH5wIGl0ZW1zIDogT21kX3JlcHJlc2VudGF0aW9uLmVsZW1lbnQgPVxuICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFrZV91cCBwPSViXFxuJSFcIiBwO1xuICAgICAgbGV0IGl0ZW1zID0gTGlzdC5yZXYgaXRlbXMgaW5cbiAgICAgIG1hdGNoIGl0ZW1zIHdpdGhcbiAgICAgIHwgKFUsXyxpdGVtKTo6XyAtPlxuICAgICAgICBpZiBwIHRoZW5cbiAgICAgICAgICBVbHAoTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgVWwoTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgfCAoTyxfLGl0ZW0pOjpfIC0+XG4gICAgICAgIGlmIHAgdGhlblxuICAgICAgICAgIE9scChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBPbChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGZhaWx3aXRoIFwibWFrZV91cCBjYWxsZWQgd2l0aCBbXVwiICgqIGFzc2VydCBmYWxzZSAqKVxuICAgIGluXG4gICAgbGV0IHJlYyBsaXN0X2l0ZW1zIH5wIGluZGVudHMgaXRlbXMgbCA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBsaXN0X2l0ZW1zOiBwPSViIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwIChMLmRlc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgKCogbm8gbW9yZSBsaXN0IGl0ZW1zICopXG4gICAgICB8IFtdIC0+XG4gICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgKCogbW9yZSBsaXN0IGl0ZW1zICopXG4gICAgICAoKiBuZXcgdW5vcmRlcmVkIGl0ZW1zICopXG4gICAgICB8IChTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDApIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKDIzNDYpIG5ld19pdGVtPSVTXFxuJSFcIlxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBuZXdfaXRlbSk7XG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFswXSAoKFUsWzBdLCByZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDA6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoVSxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgXzo6XyAtPlxuICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlOjooU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAxKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMV0gKChVLFsxXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICAgfCAxOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKFUsaW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgaSA+IDEgdGhlblxuICAgICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgICAgICBlbHNlICgqIGkgPCAxIDogbmV3IHN1YiBsaXN0KilcbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wICgxOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKFUsMTo6aW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSldIHJlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlcyBuOjooU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAobisyKSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBzcGFjZXNbXSBsPSglUylcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTsgKCogYe9lLi4uIGxpc3RlcyBtYWwgZm9ybellcyA/ISAqKVxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFtuKzJdICgoVSxbbisyXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzKCVkOjpfKSBuPSVkIGw9KCVTKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgIGkgbiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgICAgICAgICBpZiBpID0gbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBpdGVtcyA9IChVLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pIDo6IGl0ZW1zIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzIGl0ZW1zIHJlc3RcbiAgICAgICAgICAgICAgZWxzZSBpZiBpIDwgbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKChuKzIpOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKFUsKG4rMik6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXVxuICAgICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA+IG4gKyAyICopXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgKCogbmV3IG9yZGVyZWQgaXRlbXMgKilcbiAgICAgIHwgTnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAwKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBuZXdfaXRlbTtcbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgWzBdICgoTyxbMF0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCAwOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKE8saW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IF86Ol8gLT5cbiAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZTo6TnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAxKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMV0gKChPLFsxXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDE6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBpID4gMSB0aGVuXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA8IDEgOiBuZXcgc3ViIGxpc3QqKVxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKDE6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoTywxOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV0gcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cDpwIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZXMgbjo6TnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAobisyKSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzW10gbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pOyAoKiBh72UuLi4gbGlzdGVzIG1hbCBmb3Jt6WVzID8hICopXG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgW24rMl0gKChPLFtuKzJdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBzcGFjZXMoJWQ6Ol8pIG49JWQgbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgaSBuIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGlmIGkgPSBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgIGVsc2UgaWYgaSA8IG4gKyAyIHRoZW5cbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wXG4gICAgICAgICAgICAgICAgICAgICgobisyKTo6aW5kZW50cylcbiAgICAgICAgICAgICAgICAgICAgWyhPLChuKzIpOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV1cbiAgICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cDpwIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA+IG4gKyAyICopXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgKCogKilcbiAgICAgIHwgTmV3bGluZXMgMDo6KChTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OihOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OigoU3BhY2V8U3BhY2VzIF8pOjpTdGFyOjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OigoU3BhY2V8U3BhY2VzIF8pOjpOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICAgIC0+XG4gICAgICAgIGxpc3RfaXRlbXMgfnA6dHJ1ZSBpbmRlbnRzIGl0ZW1zIGxcbiAgICAgIHwgXyAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIGxldCByZWMgc3RyaW5nX29mX2l0ZW1zIGl0ZW1zID1cbiAgICAgICAgICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCAoTyxpbmRlbnQ6Ol8saXRlbSk6OnRsIC0+XG4gICAgICAgICAgICAgICAgIHNwcmludGYgXCIoTyxpPSVkLCVTKVwiIChpbmRlbnQpIChPbWRfYmFja2VuZC5odG1sX29mX21kIGl0ZW0pXG4gICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2l0ZW1zIHRsXG4gICAgICAgICAgICAgIHwgKFUsaW5kZW50OjpfLGl0ZW0pOjp0bCAtPlxuICAgICAgICAgICAgICAgICBzcHJpbnRmIFwiKFUsaT0lZCwlUylcIiAoaW5kZW50KSAoT21kX2JhY2tlbmQuaHRtbF9vZl9tZCBpdGVtKVxuICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pdGVtcyB0bFxuICAgICAgICAgICAgICB8IF8gLT4gXCIod2VpcmQpXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgTkFMSSBwYXJzZV9saXN0OiBsPSglUykgaXRlbXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbCkgKHN0cmluZ19vZl9pdGVtcyBpdGVtcylcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICgqIG5vdCBhIGxpc3QgaXRlbSAqKVxuICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICBpblxuICAgIG1hdGNoIGxpc3RfaXRlbXMgfnA6ZmFsc2UgW10gW10gbCB3aXRoXG4gICAgfCBycCwgbCAtPlxuICAgICAgcnA6OnIsIFtOZXdsaW5lXSwgbFxuXG5cblxuICBsZXQgaWNvZGUgPyhkZWZhdWx0X2xhbmc9ZGVmYXVsdF9sYW5nKSByIF9wIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIGluZGVudGVkIGNvZGU6IHJldHVybnMgKHIscCxsKSB3aGVyZSByIGlzIHRoZSByZXN1bHQsIHAgaXMgdGhlXG4gICAgICAgbGFzdCB0aGluZyByZWFkLCBsIGlzIHRoZSByZW1haW5zICopXG4gICAgbGV0IGR1bW15X3RhZyA9IFRhZyhcImR1bW15X3RhZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uID0gZnVuIHIgcCBsIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgaW5cbiAgICBsZXQgYWNjdSA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICBsZXQgcmVjIGxvb3AgcyB0bCA9IG1hdGNoIHMsIHRsIHdpdGhcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBwKSwgKFNwYWNlfFNwYWNlcygwfDEpKTo6XyAtPlxuICAgICAgICAoKiAxLCAyIG9yIDMgc3BhY2VzLiAqKVxuICAgICAgICAoKiAtPiBSZXR1cm4gd2hhdCdzIGJlZW4gZm91bmQgYXMgY29kZSBiZWNhdXNlIHdoYXQgZm9sbG93cyBpc24ndC4gKilcbiAgICAgICAgQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIEJ1ZmZlci5jb250ZW50cyBhY2N1KSA6OiByLCBbcF0sIHRsXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgcCksIFNwYWNlcyhuKTo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgICgqIEF0IGxlYXN0IDQgc3BhY2VzLCBpdCdzIHN0aWxsIGNvZGUuICopXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICBsb29wXG4gICAgICAgICAgKGlmIG4gPj0gNCB0aGVuIFNwYWNlcyhuLTQpIGVsc2UgaWYgbiA9IDMgdGhlbiBTcGFjZSBlbHNlIGR1bW15X3RhZylcbiAgICAgICAgICB0bFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIHApLCAobm90X3NwYWNlczo6XyBhcyB0bCkgLT4gKCogc3RvcCAqKVxuICAgICAgICBDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgQnVmZmVyLmNvbnRlbnRzIGFjY3UpIDo6IHIsIFtwXSwgdGxcbiAgICAgICgqIC0+IFJldHVybiB3aGF0J3MgYmVlbiBmb3VuZCBhcyBjb2RlIGJlY2F1c2UgaXQncyBubyBtb3JlIGNvZGUuICopXG4gICAgICB8IHAsIGU6OnRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICAoKiBodG1sIGVudGl0aWVzIGFyZSB0byBiZSBjb252ZXJ0ZWQgbGF0ZXIhICopXG4gICAgICAgIGxvb3AgZSB0bFxuICAgICAgfCBwLCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBhY2N1IChMLnN0cmluZ19vZl90b2tlbiBwKTtcbiAgICAgICAgQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIEJ1ZmZlci5jb250ZW50cyBhY2N1KTo6ciwgW3BdLCBbXVxuICAgIGluXG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBTcGFjZXMgbjo6dGwgLT5cbiAgICAgIGlmIG4gPj0gNCB0aGVuXG4gICAgICAgIFNvbWUobG9vcCAoU3BhY2VzKG4tNCkpIHRsKVxuICAgICAgZWxzZSBpZiBuID0gMyB0aGVuXG4gICAgICAgIFNvbWUobG9vcCBTcGFjZSB0bClcbiAgICAgIGVsc2UgU29tZShsb29wIGR1bW15X3RhZyB0bClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cblxuICAoKiBSZXR1cm5zIFsocixwLGwpXSB3aGVyZSBbcl0gaXMgdGhlIHJlc3VsdCwgW3BdIGlzIHRoZSBsYXN0IHRoaW5nXG4gICAgIHJlYWQsIGFuZCBbbF0gaXMgd2hhdCByZW1haW5zLiAqKVxuICBsZXQgc3BhY2VzX2F0X2JlZ2lubmluZ19vZl9saW5lIG1haW5fbG9vcCBkZWZhdWx0X2xhbmcgbiByIHByZXZpb3VzIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGFzc2VydCAobiA+IDApO1xuICAgIGlmIG4gPD0gMyB0aGVuIChcbiAgICAgIG1hdGNoIGxleGVtZXMgd2l0aFxuICAgICAgfCAoU3RhcnxNaW51c3xQbHVzKSA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8gLT5cbiAgICAgICAgKCogdW5vcmRlcmVkIGxpc3QgKilcbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSAoTC5tYWtlX3NwYWNlIG46OmxleGVtZXMpXG4gICAgICB8IChOdW1iZXIgXyk6OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgKCogb3JkZXJlZCBsaXN0ICopXG4gICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gKEwubWFrZV9zcGFjZSBuOjpsZXhlbWVzKVxuICAgICAgfCBbXVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfICAtPiAoKiBibGFuayBsaW5lLCBza2lwIHNwYWNlcyAqKVxuICAgICAgICByLCBwcmV2aW91cywgbGV4ZW1lc1xuICAgICAgfCAgXzo6XyAtPlxuICAgICAgICBUZXh0IChcIiBcIik6OnIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgKVxuICAgIGVsc2UgKCAoKiBuPj00LCBibGFuayBsaW5lIG9yIGluZGVudGVkIGNvZGUgKilcbiAgICAgIG1hdGNoIGxleGVtZXMgd2l0aFxuICAgICAgfCBbXSB8IChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gIC0+IHIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgICB8IF8gLT5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBpY29kZSB+ZGVmYXVsdF9sYW5nIHIgW05ld2xpbmVdIChMLm1ha2Vfc3BhY2UgbiA6OiBsZXhlbWVzKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gcixwLGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuaWNvZGUgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgKVxuXG4gIGxldCBzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW5lID8oaHRtbD1mYWxzZSkgbiByIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGFzc2VydCAobiA+IDApO1xuICAgIGlmIG4gPSAxIHRoZW5cbiAgICAgIChUZXh0IFwiIFwiOjpyKSwgW1NwYWNlXSwgbGV4ZW1lc1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbGV4ZW1lcyB3aXRoXG4gICAgICB8IE5ld2xpbmUgOjogdGwgd2hlbiBub3QgaHRtbCAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIoT01EKSAyIG9yIG1vcmUgc3BhY2VzIGJlZm9yZSBhIG5ld2xpbmUsIGVhdCB0aGUgbmV3bGluZVxcbiUhXCI7XG4gICAgICAgIEJyOjpyLCBbU3BhY2VzKG4tMildLCB0bFxuICAgICAgfCBOZXdsaW5lcyBrIDo6IHRsIHdoZW4gbm90IGh0bWwgLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgIFwiKE9NRCkgMiBvciBtb3JlIHNwYWNlcyBiZWZvcmUgYSBuZXdsaW5lLCBlYXQgMSBuZXdsaW5lXCI7XG4gICAgICAgIGxldCBuZXdsaW5lcyA9IGlmIGsgPSAwIHRoZW4gTmV3bGluZSBlbHNlIE5ld2xpbmVzKGstMSkgaW5cbiAgICAgICAgQnI6OnIsIFtTcGFjZXMobi0yKV0sIG5ld2xpbmVzIDo6IHRsXG4gICAgICB8IF8gLT5cbiAgICAgICAgYXNzZXJ0IChuPjEpO1xuICAgICAgICAoVGV4dCAoU3RyaW5nLm1ha2UgbiAnICcpOjpyKSwgW1NwYWNlcyhuLTIpXSwgbGV4ZW1lc1xuICAgIClcblxuXG4gIGxldCBtYXliZV9hdXRvZW1haWwgciBwIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgTGVzc3RoYW46OnRsIC0+XG4gICAgICBiZWdpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGZzcGxpdCB+ZXhjbDooZnVuY3Rpb24gKE5ld2xpbmV8TmV3bGluZXMgX3xTcGFjZXxTcGFjZXMgXykgOjogXy0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICB+ZjooZnVuY3Rpb24gQXQ6OnRsIC0+IFNwbGl0KFtdLHRsKSB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICB0bFxuICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZShsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBffFNwYWNlfFNwYWNlcyBfKSA6OiBfLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvbiBHcmVhdGVydGhhbjo6dGwgLT4gU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMDo6dGwgLT4gU3BsaXQoW10sR3JlYXRlcnRoYW46OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG46OnRsIC0+IFNwbGl0KFtdLEdyZWF0ZXJ0aGFucyhuLTEpOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgIHJpZ2h0XG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lKGRvbWFpbiwgdGwpIC0+XG4gICAgICAgICAgICBsZXQgZW1haWwgPSBMLnN0cmluZ19vZl90b2tlbnMgbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgXiBcIkBcIiBeIEwuc3RyaW5nX29mX3Rva2VucyBkb21haW4gaW5cbiAgICAgICAgICAgIFNvbWUoVXJsKFwibWFpbHRvOlwiXmVtYWlsLFtUZXh0IGVtYWlsXSxcIlwiKTo6cixbR3JlYXRlcnRoYW5dLHRsKVxuICAgICAgZW5kXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiT21kX3BhcnNlci5tYXliZV9hdXRvZW1haWw6IHdyb25nIHVzZSBvZiB0aGUgZnVuY3Rpb24uXCJcblxuICBsZXQgaXNfaGV4IHMgPVxuICAgIFN0cmluZy5sZW5ndGggcyA+IDFcbiAgICAmJiAocy5bMF0gPSAnWCcgfHwgcy5bMF0gPSAneCcpXG4gICAgJiYgKGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgIGkgPSBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgIHx8XG4gICAgICAgICAobWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIC0+XG4gICAgICAgICAgICBsb29wIChzdWNjIGkpXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICBpbiBsb29wIDEpXG5cbiAgbGV0IG1lZGlhdHlwZXRleHRvbWQgOiBzdHJpbmcgbGlzdCByZWYgPSByZWYgW11cblxuICBsZXQgZmlsdGVyX3RleHRfb21kX3JldiBsID1cbiAgICBsZXQgcmVjIGxvb3AgYiByID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gaWYgYiB0aGVuIHIgZWxzZSBsXG4gICAgICB8IChcIm1lZGlhOnR5cGVcIiwgU29tZSBcInRleHQvb21kXCIpOjp0bCAtPlxuICAgICAgICBsb29wIHRydWUgciB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIGIgKGU6OnIpIHRsXG4gICAgaW5cbiAgICBsb29wIGZhbHNlIFtdIGxcblxuICBleGNlcHRpb24gT3JwaGFuX2Nsb3Npbmcgb2Ygc3RyaW5nICogbCAqIGxcblxuICBsZXQgcmVjIG1haW5faW1wbF9yZXYgfmh0bWwgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAoKiBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYWluX2ltcGxfcmV2IGh0bWw9JWJcXG4lIVwiIGh0bWw7ICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIG1haW5faW1wbF9yZXYgaHRtbD0lYiByPSVzIHA9KCVzKSBsPSglcylcXG4lIVwiXG4gICAgICAgIGh0bWxcbiAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kIChMaXN0LnJldiByKSlcbiAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHByZXZpb3VzKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgbGV4ZW1lcyk7XG4gICAgbWF0Y2ggcHJldmlvdXMsIGxleGVtZXMgd2l0aFxuICAgICgqIG5vIG1vcmUgdG8gcHJvY2VzcyAqKVxuICAgIHwgXywgW10gLT5cbiAgICAgICgqIHJldHVybiB0aGUgcmVzdWx0ICgvIVxcIGl0IGhhcyB0byBiZSByZXZlcnNlZCBhcyBzb21lIHBvaW50KSAqKVxuICAgICAgclxuXG4gICAgKCogVGFnOiB0YWcgc3lzdGVtICRcXGN1cCQgaGlnaC1wcmlvcml0eSBleHRlbnNpb24gbWVjaGFuaXNtICopXG4gICAgfCBfLCBUYWcoX25hbWUsIGUpIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBlI3BhcnNlcl9leHRlbnNpb24gciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHByZXZpb3VzIHRsXG4gICAgICBlbmRcblxuICAgICgqIEhUTUwgY29tbWVudHMgKilcbiAgICB8IF8sIChMZXNzdGhhbiBhcyB0KTo6KEV4Y2xhbWF0aW9uOjpNaW51c3MgMDo6YyBhcyB0bCkgLT5cbiAgICAgIGJlZ2luXG4gICAgICAgIGxldCBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IChNaW51c3MgXyBhcyBtKTo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bCAtPlxuICAgICAgICAgICAgU3BsaXQoW2c7bV0sIHRsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZnNwbGl0IH5mOmYgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgICB8IFNvbWUgKGNvbW1lbnRzLCBuZXdfdGwpIC0+XG4gICAgICAgICAgbGV0IHIgPSBIdG1sX2NvbW1lbnQoTC5zdHJpbmdfb2ZfdG9rZW5zIGNvbW1lbnRzKSA6OiByIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIFtOZXdsaW5lXSBuZXdfdGxcbiAgICAgIGVuZFxuXG4gICAgKCogZW1haWwtc3R5bGUgcXVvdGluZyAvIGJsb2NrcXVvdGUgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIEdyZWF0ZXJ0aGFuOjooU3BhY2V8U3BhY2VzIF8pOjpfIC0+XG4gICAgICBiZWdpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGVtYWlsc3R5bGVfcXVvdGluZyBtYWluX2xvb3AgciBwcmV2aW91cyAoTmV3bGluZTo6bGV4ZW1lcylcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFNvbWUocixwLGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuZW1haWxzdHlsZV9xdW90aW5nIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZW5kXG5cbiAgICAoKiBlbWFpbC1zdHlsZSBxdW90aW5nLCB3aXRoIGxpbmVzIHN0YXJ0aW5nIHdpdGggc3BhY2VzISAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKFNwYWNlfFNwYWNlcygwfDEpIGFzIHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBHcmVhdGVydGhhbiA6OiAoU3BhY2V8U3BhY2VzIF8pOjpfIC0+XG4gICAgICAoKiBJdCdzIDEsIDIgb3IgMyBzcGFjZXMsIG5vdCBtb3JlIGJlY2F1c2UgaXQgd291bGRuJ3QgbWVhblxuICAgICAgICAgcXVvdGluZyBhbnltb3JlIGJ1dCBjb2RlLiAqKVxuICAgICAgYmVnaW5cbiAgICAgICAgbGV0IG5ld19yLCBwLCByZXN0ID1cbiAgICAgICAgICBsZXQgZm9vLCByZXN0ID1cbiAgICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChMLmxlbmd0aCBzKSAoTmV3bGluZTo6bGV4ZW1lcykgd2l0aFxuICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6Zm9vLCByZXN0IC0+IGZvbywgcmVzdFxuICAgICAgICAgICAgfCByZXMgLT4gcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZW1haWxzdHlsZV9xdW90aW5nIG1haW5fbG9vcCBbXSBwcmV2aW91cyAoTmV3bGluZTo6Zm9vKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNvbWUobmV3X3IsIHAsIFtdKSAtPiBuZXdfciwgcCwgcmVzdFxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3Rpbmcgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChuZXdfckByKSBbTmV3bGluZV0gcmVzdFxuICAgICAgZW5kXG5cbiAgICAoKiBtaW51cyAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSxcbiAgICAgIChNaW51c3xNaW51c3MgXyBhcyB0KSA6OiAoKFNwYWNlfFNwYWNlcyBfKTo6XyBhcyB0bCkgLT5cbiAgICAgICgqIG1heWJlIGhyICopXG4gICAgICBiZWdpbiBtYXRjaCBocl9tIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKCogbm8gaHIsIHNvIGl0IGNvdWxkIGJlIGEgbGlzdCAqKVxuICAgICAgICAgIGJlZ2luIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBNaW51cyAtPiAoKiBpdCdzIGEgbGlzdCAqKVxuICAgICAgICAgICAgICBsZXQgbWQsIG5ld19wLCBuZXdfbCA9XG4gICAgICAgICAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgbWQgbmV3X3AgbmV3X2xcbiAgICAgICAgICAgIHwgXyAtPiAoKiBub3QgYSBsaXN0ICopXG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSBsIC0+ICgqIGhyICopXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICBlbmRcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIChNaW51c3xNaW51c3MgXyBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGhyX20gbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKiBubyBociwgYW5kIGl0J3Mgbm90IGEgbGlzdCBlaXRoZXJcbiAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgaXQncyBub3QgZm9sbG93ZWQgYnkgc3BhY2VzICopXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSBsIC0+ICgqIGhyICopXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICBlbmRcblxuICAgICgqIGhhc2hlcyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLFxuICAgICAgKEhhc2hzIG4gYXMgdCkgOjogKChTcGFjZXxTcGFjZXMgXykgOjogdHRsIGFzIHRsKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLFxuICAgICAgKEhhc2hzIG4gYXMgdCkgOjogKHR0bCBhcyB0bCkgLT4gKCogaGFzaCB0aXRsZXMgKilcbiAgICAgIGlmIG4gPD0gNCB0aGVuXG4gICAgICAgIG1hdGNoIHJlYWRfdGl0bGUgbWFpbl9sb29wIChuKzIpIHIgcHJldmlvdXMgdHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIucmVhZF90aXRsZSBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIEhhc2ggOjogKFNwYWNlfFNwYWNlcyBfKSA6OiB0bFxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBIYXNoIDo6IHRsIC0+ICgqIGhhc2ggdGl0bGVzICopXG4gICAgICBiZWdpbiBtYXRjaCByZWFkX3RpdGxlIG1haW5fbG9vcCAxIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5yZWFkX3RpdGxlIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZW5kXG4gICAgfCBfLCAoSGFzaHxIYXNocyBfIGFzIHQpIDo6IHRsIC0+ICgqIGhhc2ggLS0gbm8gdGl0bGUgKilcbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG4gICAgKCogc3BhY2VzIGFmdGVyIGEgbmV3bGluZTogY291bGQgbGVhZCB0byBociAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKChTcGFjZXxTcGFjZXMgXykgYXMgc3ApIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBociB0bCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIE5vIFtIcl0sIGJ1dCBtYXliZSBbVWxdLCBbT2xdLCBjb2RlLC4uLiAqKVxuICAgICAgICAgIGxldCBuID0gTC5sZW5ndGggc3AgaW5cbiAgICAgICAgICBsZXQgciwgcCwgbCA9XG4gICAgICAgICAgIHNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSBtYWluX2xvb3AgZGVmYXVsdF9sYW5nIG4gciBwcmV2aW91cyB0bCBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBTb21lIHRsIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSB0bFxuICAgICAgZW5kXG5cbiAgICAoKiBzcGFjZXMgYW55d2hlcmUgKilcbiAgICB8IF8sICgoU3BhY2V8U3BhY2VzIF8pIGFzIHQpIDo6IHRsIC0+XG4gICAgICAoKiB0b28gbWFueSBjYXNlcyB0byBiZSBoYW5kbGVkIGhlcmUgKilcbiAgICAgIGxldCBuID0gTC5sZW5ndGggdCBpblxuICAgICAgbGV0IHIsIHAsIGwgPSBzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW5lIH5odG1sIG4gciB0bCBpblxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuXG4gICAgKCogdW5kZXJzY29yZXMgKilcbiAgICB8IF8sIChVbmRlcnNjb3JlIGFzIHQpIDo6IHRsIC0+ICgqIG9uZSBcIm9ycGhhblwiIHVuZGVyc2NvcmUsIG9yIGVtcGggKilcbiAgICAgIChtYXRjaCB1ZW1waF9vcl9ib2xkIDEgdGwgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICApXG4gICAgfCBfLCAoVW5kZXJzY29yZXMoKDB8MSkgYXMgbikgYXMgdCkgOjogdGwgLT5cbiAgICAgICgqIDIgb3IgMyBcIm9ycGhhblwiIHVuZGVyc2NvcmVzLCBvciBlbXBoL2JvbGQgKilcbiAgICAgIChtYXRjaCB1ZW1waF9vcl9ib2xkIChuKzIpIHRsIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICBpZiBuID0gMCB0aGVuICgqIDEgdW5kZXJzY29yZSAqKVxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgICAgZWxzZSAoKiAyIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgoW0JvbGQobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KV0pIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgIClcblxuICAgICgqIGVudW1lcmF0ZWQgbGlzdHMgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIChOdW1iZXIgXykgOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogdGwgLT5cbiAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICBpblxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuXG4gICAgKCogcGx1cyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBQbHVzIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgIGluXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG5cbiAgICAoKiBzdGFycyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBTdGFyIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgKCogbWF5YmUgaHIgb3IgbmV3IGxpc3QgKilcbiAgICAgIGJlZ2luIG1hdGNoIGhyX3MgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gbGV4ZW1lc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuICAgICAgZW5kXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIFN0YXJzIF8gOjogXyB3aGVuIGhyX3MgbGV4ZW1lcyA8PiBOb25lIC0+XG4gICAgICAoKiBociAqKVxuICAgICAgKG1hdGNoIGhyX3MgbGV4ZW1lcyB3aXRoXG4gICAgICAgfCBTb21lIGwgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBtYXliZSBociAqKVxuICAgICAgYmVnaW4gbWF0Y2ggaHJfcyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHNlbXBoX29yX2JvbGQgMSB0bCB3aXRoXG4gICAgICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgZW5kXG4gICAgICAgICAgKVxuICAgICAgZW5kXG4gICAgfCBfLCAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBvbmUgXCJvcnBoYW5cIiBzdGFyLCBvciBlbXBoIC8vIGNhbid0IGJlIGhyICopXG4gICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAxIHRsIHdpdGhcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuICAgIHwgXywgKFN0YXJzKCgwfDEpIGFzIG4pIGFzIHQpIDo6IHRsIC0+XG4gICAgICAoKiAyIG9yIDMgXCJvcnBoYW5cIiBzdGFycywgb3IgZW1waC9ib2xkICopXG4gICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAobisyKSB0bCB3aXRoXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChbQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpXSkgOjogcikgW3RdIG5ld190bFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG5cbiAgICAoKiBiYWNrc2xhc2hlcyAqKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChOZXdsaW5lIGFzIHQpIDo6IHRsIC0+ICgqIFxcXFxuICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCciA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+ICgqIFxcXFxuXFxuXFxuXFxuLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCciA6OiByKSBbQmFja3NsYXNoOyBOZXdsaW5lXSAoTmV3bGluZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBOZXdsaW5lcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxcXG5cXG5cXG5cXG4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJyIDo6IHIpIFtCYWNrc2xhc2g7IE5ld2xpbmVdXG4gICAgICAgIChOZXdsaW5lcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQmFja3F1b3RlIGFzIHQpIDo6IHRsIC0+ICgqIFxcYCAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJgXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEJhY2txdW90ZXMgMCA6OiB0bCAtPiAoKiBcXGBgYGAuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiYFwiKSA6OiByKSBbQmFja3NsYXNoOyBCYWNrcXVvdGVdIChCYWNrcXVvdGUgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQmFja3F1b3RlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxgYGBgLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcImBcIikgOjogcikgW0JhY2tzbGFzaDsgQmFja3F1b3RlXVxuICAgICAgICAoQmFja3F1b3RlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBcXCogKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKlwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBTdGFycyAwIDo6IHRsIC0+ICgqIFxcKioqKi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIqXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFN0YXJdIChTdGFyIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFN0YXJzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCoqKiouLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKlwiKSA6OiByKSBbQmFja3NsYXNoOyBTdGFyXSAoU3RhcnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKFVuZGVyc2NvcmUgYXMgdCkgOjogdGwgLT4gKCogXFxfICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl9cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogVW5kZXJzY29yZXMgMCA6OiB0bCAtPiAoKiBcXF9fXy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJfXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFVuZGVyc2NvcmVdIChVbmRlcnNjb3JlIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFVuZGVyc2NvcmVzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXF9fXy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJfXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFVuZGVyc2NvcmVdXG4gICAgICAgIChVbmRlcnNjb3JlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoT2JyYWNlIGFzIHQpIDo6IHRsIC0+ICgqIFxceyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFjZXMgMCA6OiB0bCAtPiAoKiBcXHt7ey4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFjZV0gKE9icmFjZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2VzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXHt7ey4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFjZV0gKE9icmFjZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKENicmFjZSBhcyB0KSA6OiB0bCAtPiAoKiBcXH0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2VzIDAgOjogdGwgLT4gKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2VdIChDYnJhY2UgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2VdIChDYnJhY2VzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyB0KSA6OiB0bCAtPiAoKiBcXFsgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiW1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2tldHMgMCA6OiB0bCAtPiAoKiBcXFtbWy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFja2V0XSAoT2JyYWNrZXQgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT2JyYWNrZXRzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXFtbWy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFja2V0XSAoT2JyYWNrZXRzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChDYnJhY2tldCBhcyB0KSA6OiB0bCAtPiAoKiBcXH0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiXVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2tldHMgMCA6OiB0bCAtPiAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFja2V0XSAoQ2JyYWNrZXQgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNrZXRzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFja2V0XSAoQ2JyYWNrZXRzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXMgYXMgdCkgOjogdGwgLT4gKCogXFwoICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+ICgqIFxcKCgoLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW0JhY2tzbGFzaDsgT3BhcmVudGhlc2lzXSAoT3BhcmVudGhlc2lzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9wYXJlbnRoZXNpc3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKCgoLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW0JhY2tzbGFzaDsgT3BhcmVudGhlc2lzXVxuICAgICAgICAoT3BhcmVudGhlc2lzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQ3BhcmVudGhlc2lzIGFzIHQpIDo6IHRsIC0+ICgqIFxcKSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IENwYXJlbnRoZXNpc3MgMCA6OiB0bCAtPiAoKiBcXCkpKS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENwYXJlbnRoZXNpc11cbiAgICAgICAgKENwYXJlbnRoZXNpcyA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDcGFyZW50aGVzaXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCkpKS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENwYXJlbnRoZXNpc11cbiAgICAgICAgKENwYXJlbnRoZXNpc3MgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKFBsdXMgYXMgdCkgOjogdGwgLT4gKCogXFwrICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIitcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogUGx1c3MgMCA6OiB0bCAtPiAoKiBcXCsrKy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIrXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFBsdXNdIChQbHVzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFBsdXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCsrKy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIrXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFBsdXNdIChQbHVzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoTWludXMgYXMgdCkgOjogdGwgLT4gKCogXFwtICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi1cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTWludXNzIDAgOjogdGwgLT4gKCogXFwtLS0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbQmFja3NsYXNoOyBNaW51c10gKE1pbnVzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE1pbnVzcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwtLS0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbQmFja3NsYXNoOyBNaW51c10gKE1pbnVzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoRG90IGFzIHQpIDo6IHRsIC0+ICgqIFxcLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIuXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IERvdHMgMCA6OiB0bCAtPiAoKiBcXC4uLi4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLlwiKSA6OiByKSBbQmFja3NsYXNoOyBEb3RdIChEb3QgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRG90cyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwuLi4uLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi5cIikgOjogcikgW0JhY2tzbGFzaDsgRG90XSAoRG90cyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoRXhjbGFtYXRpb24gYXMgdCkgOjogdGwgLT4gKCogXFwhICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiFcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRXhjbGFtYXRpb25zIDAgOjogdGwgLT4gKCogXFwhISEuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbQmFja3NsYXNoOyBFeGNsYW1hdGlvbl0gKEV4Y2xhbWF0aW9uIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IEV4Y2xhbWF0aW9ucyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwhISEuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbQmFja3NsYXNoOyBFeGNsYW1hdGlvbl1cbiAgICAgICAgKEV4Y2xhbWF0aW9ucyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoSGFzaCBhcyB0KSA6OiB0bCAtPiAoKiBcXCMgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiI1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBIYXNocyAwIDo6IHRsIC0+ICgqIFxcIyMjLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiNcIikgOjogcikgW0JhY2tzbGFzaDsgSGFzaF0gKEhhc2ggOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogSGFzaHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcIyMjLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiNcIikgOjogcikgW0JhY2tzbGFzaDsgSGFzaF0gKEhhc2hzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChHcmVhdGVydGhhbiBhcyB0KSA6OiB0bCAtPiAoKiBcXD4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPlwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBHcmVhdGVydGhhbnMgMCA6OiB0bCAtPiAoKiBcXD4+Pi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFtCYWNrc2xhc2g7IEdyZWF0ZXJ0aGFuXSAoR3JlYXRlcnRoYW4gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogR3JlYXRlcnRoYW5zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXD4+Pi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFtCYWNrc2xhc2g7IEdyZWF0ZXJ0aGFuXVxuICAgICAgICAoR3JlYXRlcnRoYW5zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChMZXNzdGhhbiBhcyB0KSA6OiB0bCAtPiAoKiBcXDwgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPFwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBMZXNzdGhhbnMgMCA6OiB0bCAtPiAoKiBcXDw8PC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFtCYWNrc2xhc2g7IExlc3N0aGFuXSAoTGVzc3RoYW4gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTGVzc3RoYW5zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXDw8PC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFtCYWNrc2xhc2g7IExlc3N0aGFuXVxuICAgICAgICAoTGVzc3RoYW5zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgKEJhY2tzbGFzaHMgMCBhcyB0KSA6OiB0bCAtPiAoKiBcXFxcXFxcXC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJcXFxcXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgKEJhY2tzbGFzaHMgbiBhcyB0KSA6OiB0bCAtPiAoKiBcXFxcXFxcXC4uLiAqKVxuICAgICAgaWYgbiBtb2QgMiA9IDAgdGhlblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KFN0cmluZy5tYWtlICgobisyKS8yKSAnXFxcXCcpIDo6IHIpIFt0XSB0bFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KFN0cmluZy5tYWtlICgobisyKS8yKSAnXFxcXCcpIDo6IHIpIFt0XSAoQmFja3NsYXNoIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoOjpbXSAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCBcIlxcXFxcIiA6OiByKSBbXSBbXVxuICAgIHwgXywgQmFja3NsYXNoOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCBcIlxcXFxcIiA6OiByKSBbQmFja3NsYXNoXSB0bFxuXG4gICAgKCogPCAqKVxuICAgIHwgXywgKExlc3N0aGFufExlc3N0aGFucyBfIGFzIHQpXG4gICAgICAgICA6OiAoV29yZChcImh0dHBcInxcImh0dHBzXCJ8XCJmdHBcInxcImZ0cHNcInxcInNzaFwifFwiYWZwXCJ8XCJpbWFwXCIpIGFzIHcpXG4gICAgICAgICA6OiBDb2xvbjo6U2xhc2hzKG4pOjp0bCAtPlxuICAgICAgKCogXCJzZW1pLWF1dG9tYXRpY1wiIFVSTHMgKilcbiAgICAgIGxldCByZWMgcmVhZF91cmwgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6OnRsIC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgICB8IEdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICAgIGxldCB1cmwgPVxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VuIHcpIF4gXCI6Ly9cIlxuICAgICAgICAgICAgXiAoaWYgbiA9IDAgdGhlbiBcIlwiIGVsc2UgU3RyaW5nLm1ha2UgKG4tMSkgJy8nKVxuICAgICAgICAgICAgXiBMLnN0cmluZ19vZl90b2tlbnMgKExpc3QucmV2IGFjY3UpXG4gICAgICAgICAgaW4gU29tZSh1cmwsIHRsKVxuICAgICAgICB8IHg6OnRsIC0+XG4gICAgICAgICAgcmVhZF91cmwgKHg6OmFjY3UpIHRsXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBOb25lXG4gICAgICBpblxuICAgICAgYmVnaW4gbWF0Y2ggcmVhZF91cmwgW10gdGwgd2l0aFxuICAgICAgICB8IFNvbWUodXJsLCBuZXdfdGwpIC0+XG4gICAgICAgICAgbGV0IHIgPSBcbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgMCAtPiBUZXh0IFwiPFwiIDo6IHJcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG4gLT4gVGV4dChTdHJpbmcubWFrZSAobisxKSAnPCcpIDo6IHJcbiAgICAgICAgICAgIHwgXyAtPiByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChVcmwodXJsLFtUZXh0IHVybF0sXCJcIik6OnIpIFtdIG5ld190bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG5cbiAgICAoKiBXb3JkKHcpICopXG4gICAgfCBfLCBXb3JkIHc6OnRsIC0+XG4gICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCB3IDo6IHIpIFtXb3JkIHddIHRsXG5cbiAgICAoKiBuZXdsaW5lIGF0IHRoZSBlbmQgKilcbiAgICB8IF8sIFtOZXdsaW5lXSAtPlxuICAgICAgTkw6OnJcblxuICAgICgqIG5hbWVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoV29yZCB3OjooKFNlbWljb2xvbnxTZW1pY29sb25zIF8pIGFzIHMpOjp0bCkgYXMgdGwyKSAtPlxuICAgICAgaWYgU3RyaW5nU2V0Lm1lbSB3IGh0bWxjb2Rlc19zZXQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gdGxcbiAgICAgICAgICB8IFNlbWljb2xvbnMgMCAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbjo6dGwpXG4gICAgICAgICAgfCBTZW1pY29sb25zIG4gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuICAgICgqIGRpZ2l0LWNvZGVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoSGFzaDo6TnVtYmVyIHc6OigoU2VtaWNvbG9ufFNlbWljb2xvbnMgXykgYXMgcyk6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgYXMgdGwyKSAtPlxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB3IDw9IDQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIHRsXG4gICAgICAgICAgfCBTZW1pY29sb25zIDAgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9uOjp0bClcbiAgICAgICAgICB8IFNlbWljb2xvbnMgbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuICAgICgqIG1heWJlIGhleCBkaWdpdC1jb2RlZCBodG1sIGVudGl0eSAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjooKEhhc2g6OldvcmQgdzo6KChTZW1pY29sb258U2VtaWNvbG9ucyBfKSBhcyBzKTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICBhcyB0bDIpIHdoZW4gaXNfaGV4IHcgLT5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdyA8PSA0IHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgfCBTZW1pY29sb24gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSB0bFxuICAgICAgICAgIHwgU2VtaWNvbG9ucyAwIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbjo6dGwpXG4gICAgICAgICAgfCBTZW1pY29sb25zIG4gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9ucyhuLTEpOjp0bClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gdGwyXG5cblxuICAgICgqIEFtcGVyc2FuZCAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtBbXBlcnNhbmRdIHRsXG5cbiAgICAoKiAyIEFtcGVyc2FuZHMgKilcbiAgICB8IF8sIEFtcGVyc2FuZHMoMCk6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gKEFtcGVyc2FuZDo6dGwpXG5cbiAgICAoKiBTZXZlcmFsIEFtcGVyc2FuZHMgKG1vcmUgdGhhbiAyKSAqKVxuICAgIHwgXywgQW1wZXJzYW5kcyhuKTo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSAoQW1wZXJzYW5kcyhuLTEpOjp0bClcblxuICAgICgqIGJhY2txdW90ZXMgKilcbiAgICB8IF8sIChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggYmNvZGUgfmRlZmF1bHRfbGFuZyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogSFRNTCAqKVxuICAgICgqIDxici8+IGFuZCA8aHIvPiB3aXRoIG9yIHdpdGhvdXQgc3BhY2UocykgKilcbiAgICB8IF8sIChMZXNzdGhhbjo6V29yZChcImJyXCJ8XCJoclwiIGFzIHcpOjpTbGFzaFxuICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bClcbiAgICB8IF8sIChMZXNzdGhhbjo6V29yZChcImJyXCJ8XCJoclwiIGFzIHcpOjooU3BhY2V8U3BhY2VzIF8pOjpTbGFzaFxuICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGcgd2l0aFxuICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiPFwiXndeXCIgLz5cIik6OnIpIFtHcmVhdGVydGhhbl0gKEdyZWF0ZXJ0aGFuOjp0bClcbiAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIjxcIl53XlwiIC8+XCIpOjpyKSBbR3JlYXRlcnRoYW5dXG4gICAgICAgICAgICAoR3JlYXRlcnRoYW5zKG4tMSk6OnRsKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCI8XCJed15cIiAvPlwiKTo6cikgW0dyZWF0ZXJ0aGFuXSB0bFxuICAgICAgZW5kXG5cbiAgICAoKiBhd2FpdGVkIG9ycGhhbiBodG1sIGNsb3NpbmcgdGFnICopXG4gICAgfCBfLCBMZXNzdGhhbjo6U2xhc2g6OldvcmQodyk6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dGxcbiAgICAgIHdoZW4gIW1lZGlhdHlwZXRleHRvbWQgPD4gW10gLT5cbiAgICAgIHJhaXNlIChPcnBoYW5fY2xvc2luZyh3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+IEdyZWF0ZXJ0aGFuOjp0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpOjp0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdGwpKSlcblxuICAgICgqIGJsb2NrIGh0bWwgKilcbiAgICB8IChbXSB8IFtOZXdsaW5lfE5ld2xpbmVzIF98VGFnKFwiSFRNTEJMT0NLXCIsIF8pXSksXG4gICAgICAoTGVzc3RoYW4gYXMgdClcbiAgICAgIDo6KChXb3JkKHRhZ25hbWV0b3ApIGFzIHcpXG4gICAgICAgICA6OigoU3BhY2V8U3BhY2VzIF98R3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pXG4gICAgICAgICAgICA6Ol8gYXMgaHRtbF9zdHVmZikgYXMgdGx4KSAtPlxuICAgICAgaWYgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGlubGluZV9odG1sdGFnc19zZXQgdGhlblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgW1dvcmQgXCJcIl0gbGV4ZW1lc1xuICAgICAgZWxzZSBpZiBub3QgKGJsaW5kX2h0bWwgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGh0bWx0YWdzX3NldCkgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGx4XG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIGxldCByZWFkX2h0bWwoKSA9XG4gICAgICAgICAgbGV0IG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgICB8IEF3YWl0aW5nIG9mIHN0cmluZ1xuICAgICAgICAgICAgICB8IE9wZW4gb2Ygc3RyaW5nXG4gICAgICAgICAgICB0eXBlIGludGVybSA9XG4gICAgICAgICAgICAgIHwgSFRNTCBvZiBzdHJpbmcgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIGludGVybSBsaXN0XG4gICAgICAgICAgICAgIHwgRlRPS0VOUyBvZiBMLnRcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIG9mIEwudFxuICAgICAgICAgICAgICB8IE1EIG9mIE9tZF9yZXByZXNlbnRhdGlvbi50XG4gICAgICAgICAgICBsZXQgcmVjIG1kX29mX2ludGVybV9saXN0IGh0bWwgbCA9XG4gICAgICAgICAgICAgIGxldCBtZF9vZl9pbnRlcm1fbGlzdCA/KGh0bWw9aHRtbCkgbCA9XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgaHRtbCBsXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgICAgICAgIHwgSFRNTCh0LCBhLCBjKTo6dGwgLT5cbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBsZXQgZl9hID0gZmlsdGVyX3RleHRfb21kX3JldiBhIGluXG4gICAgICAgICAgICAgICAgICBpZiBmX2EgIT0gYSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIEh0bWxfYmxvY2tcbiAgICAgICAgICAgICAgICAgICAgICAodCxcbiAgICAgICAgICAgICAgICAgICAgICAgZl9hLFxuICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3BhcmFncmFwaHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAobWRfb2ZfaW50ZXJtX2xpc3Qgfmh0bWw6ZmFsc2UgKExpc3QucmV2IGMpKSlcbiAgICAgICAgICAgICAgICAgICAgOjogbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgSHRtbF9ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICh0LCBmX2EsIG1kX29mX2ludGVybV9saXN0IH5odG1sOnRydWUgKExpc3QucmV2IGMpKVxuICAgICAgICAgICAgICAgICAgICA6OiBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBNRCBtZDo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZEBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IFJUT0tFTlMgdDE6OkZUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKEZUT0tFTlMoTGlzdC5yZXZfYXBwZW5kIHQxIHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgUlRPS0VOUyB0MTo6UlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdFxuICAgICAgICAgICAgICAgICAgKEZUT0tFTlMoTGlzdC5yZXZfYXBwZW5kIHQxIChMaXN0LnJldiB0MikpOjp0bClcbiAgICAgICAgICAgICAgfCBGVE9LRU5TIHQxOjpGVE9LRU5TIHQyOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IChGVE9LRU5TKHQxQHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgRlRPS0VOUyB0IDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgaWYgaHRtbCB0aGVuXG4gICAgICAgICAgICAgICAgICBSYXcoTC5zdHJpbmdfb2ZfdG9rZW5zIHQpIDo6IG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWFpbl9sb29wIH5odG1sIFtdIFtXb3JkIFwiXCJdIHRcbiAgICAgICAgICAgICAgICAgIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIHQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoRlRPS0VOUyhMaXN0LnJldiB0KSA6OiB0bClcbiAgICAgICAgICAgIGxldCBtZF9vZl9pbnRlcm1fbGlzdCBsID0gbWRfb2ZfaW50ZXJtX2xpc3QgdHJ1ZSBsXG4gICAgICAgICAgICBsZXQgc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMgPVxuICAgICAgICAgICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICAgICAgICAgICAgTGlzdC5pdGVyIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCBPcGVuIHQgLT4gYnByaW50ZiBiIFwie0IvT3BlbiAlc31cIiB0XG4gICAgICAgICAgICAgICAgICB8IEF3YWl0aW5nIHQgLT4gYnByaW50ZiBiIFwie0IvQXdhaXRpbmcgJXN9XCIgdFxuICAgICAgICAgICAgICAgICkgdGFnc3RhdHVzO1xuICAgICAgICAgICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgICAgICAgIGVuZCBpblxuICAgICAgICAgIGxldCBhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkgPVxuICAgICAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICAgICB8IFQuUlRPS0VOUyByIDo6IGJvZHkgLT4gVC5SVE9LRU5TKHg6OnIpOjpib2R5XG4gICAgICAgICAgICB8IF8gLT4gVC5SVE9LRU5TW3hdIDo6IGJvZHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWMgbG9vcCAoYm9keTpULmludGVybSBsaXN0KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zID1cbiAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzMzMgQkhUTUwgbG9vcCBib2R5PSVTIHRhZ3N0YXR1cz0lUyAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQoVC5tZF9vZl9pbnRlcm1fbGlzdCBib2R5KSlcbiAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cylcbiAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyB3aGVuIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQwMSBCSFRNTCBOb3QgZW5vdWdoIHRvIHJlYWRcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQwOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgIChpZiBuID0gMCB0aGVuIExlc3N0aGFuIGVsc2UgTGVzc3RoYW5zKG4tMSkpXG4gICAgICAgICAgICAgICAgICAgICAgIGJvZHkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyAoTGVzc3RoYW46OnRva2VucylcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBzZWxmLWNsb3NpbmcgdGFncyAqKVxuICAgICAgICAgICAgfCBTbGFzaDo6R3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyh0YWduYW1lKSA6OiB0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCBbVC5IVE1MKHRhZ25hbWUsIGF0dHJzLCBbXSldIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0MTkgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgIFNsYXNoXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgICBHcmVhdGVydGhhblxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSB0YWcgb3BlbmVyICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjpTbGFzaDo6KFdvcmQodGFnbmFtZSkgYXMgdylcbiAgICAgICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyB3aGVuIHQgPSB0YWduYW1lIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzc1IEJIVE1MIHByb3Blcmx5IGNsb3NpbmcgJVNcXG4lIVwiIHQ7XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW4gOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzc5IEJIVE1MIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDFcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5SVE9LRU5TW2c7dztTbGFzaDtMZXNzdGhhbl06OmJvZHkpXG4gICAgICAgICAgICAgICAgICAgIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzgzIEJIVE1MIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDJcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgaWYgIW1lZGlhdHlwZXRleHRvbWQgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgIChPcnBoYW5fY2xvc2luZyh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyZWF0ZXJ0aGFuOjp0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JlYXRlcnRoYW5zKG4tMSk6OnRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpKVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgQkhUTUwgd3JvbmdseSBjbG9zaW5nICVTIDNcXG4lIVwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogdGFnICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjooV29yZCh0YWduYW1lKSBhcyB3b3JkKTo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICBibGluZF9odG1sXG4gICAgICAgICAgICAgICAgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWx0YWdzX3NldFxuICAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0ODkgQkhUTUwgPFdvcmQoJXMpLi4uXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuKHQpIDo6IF9cbiAgICAgICAgICAgICAgICAgIHdoZW4gdCA8PiB0YWduYW1lICYmIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGF0dHJzIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQ5NiBCSFRNTCB0YWcgJVMgYnV0IGF0dHJzIDw+IFtdXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0MjEgQkhUTUwgdGFnICVTLCB0YWdzdGF0dXM9JVMsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycz1bXSwgdG9rZW5zPSVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBbXSBbXSAoVC5Bd2FpdGluZyB0YWduYW1lOjp0YWdzdGF0dXMpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0ODkgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGIsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0MzMgQkhUTUwgdGFnc3RhdHVzPSVTIHRva2Vucz0lU1xcbiUhXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKGJAYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBlbmQgb2Ygb3BlbmluZyB0YWcgKilcbiAgICAgICAgICAgIHwgR3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IHRhZ3N0YXR1cyAtPlxuICAgICAgICAgICAgICAgICAgaWYgTGlzdC5tZW0gKFwibWVkaWE6dHlwZVwiLCBTb21lIFwidGV4dC9vbWRcIikgYXR0cnMgdGhlblxuICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgbWVkaWF0eXBldGV4dG9tZCA6PSB0IDo6ICFtZWRpYXR5cGV0ZXh0b21kO1xuICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlKG1haW5faW1wbF9yZXYgfmh0bWwgW10gW10gdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1MjQgQkhUTUwgY2xvc2luZyB0YWcgbm90IGZvdW5kIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluICVTXFxuJSFcIiAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDbG9zaW5nIHRhZyBgJXMnIG5vdCBmb3VuZCBmb3IgdGV4dC9vbWQgem9uZS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhdHlwZXRleHRvbWQgOj0gTGlzdC50bCAhbWVkaWF0eXBldGV4dG9tZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoIE9ycGhhbl9jbG9zaW5nKHRhZ25hbWUsIGRlbGltaXRlciwgYWZ0ZXIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmVmb3JlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmIHIgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGVzc3RoYW5zIG4gYXMgZSA6OiB0bCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZGVsaW1pdGVyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMZXNzdGhhbjo6XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIExlc3N0aGFuOjp0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgbiA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhbjo6clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhbnMobi0xKTo6cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIChlOjpyKSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0bCA9PSBkZWxpbWl0ZXIgfHwgdGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGU6OnIpIHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGU6OnRsIGFzIGwgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGwgPT0gZGVsaW1pdGVyIHx8IGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiByXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIHRsID09IGRlbGltaXRlciB8fCB0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IChlOjpyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIChlOjpyKSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gTGlzdC5yZXYgclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBmIFtdIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1NTIgQkhUTUwgdG9rZW5zPSVzIGRlbGltaXRlcj0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcj0lcyBiZWZvcmU9JXMgKHRhZ25hbWU9dCk9JWJcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGRlbGltaXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBhZnRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBiZWZvcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnbmFtZSA9IHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoICFtZWRpYXR5cGV0ZXh0b21kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogdGwgLT4gbWVkaWF0eXBldGV4dG9tZCA6PSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRhZ25hbWUgPSB0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtULkhUTUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtULk1EXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWluX2ltcGwgfmh0bWwgW10gW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZ19zZXRleHQgbWFpbl9sb29wIGJlZm9yZSkpXSldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNTcxIEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGxvb3AgYm9keSBbXSAoVC5PcGVuIHQ6OnRhZ3N0YXR1cykgdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1MTkgQkhUTUwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bGRuJ3QgZmluZCBhbiBjbG9zaW5nIHRhZyBmb3IgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYm9keSwgbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0OTggQkhUTUwgRm91bmQgYSBjbG9zaW5nIHRhZyAlc1xcbiUhXCIgdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIFtULkhUTUwodCwgYXR0cnMsIGJvZHkpXSBbXSB0YWdzdGF0dXMgbFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKFtULkhUTUwodCwgYXR0cnMsIGJvZHkpXSwgbClcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIFwiKE9NRCkgMzU5MSBCSFRNTCBTb21lIGA+YCBpc24ndCBmb3IgYW4gb3BlbmluZyB0YWdcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgR3JlYXRlcnRoYW4gYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1NDIgQkhUTUwgdGFnc3RhdHVzPVtdXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG5cbiAgICAgICAgICAgICgqIG1heWJlIGF0dHJpYnV0ZSAqKVxuICAgICAgICAgICAgfCAoQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KTo6dG9rZW5zXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICAgICAgOjooQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KVxuICAgICAgICAgICAgICA6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZSBBdHRyaWJ1dGVfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IEVtcHR5IG9mIG5hbWUgfCBOYW1lZCBvZiBuYW1lIHwgVm9pZFxuICAgICAgICAgICAgICAgICAgYW5kIG5hbWUgPSBzdHJpbmdcbiAgICAgICAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3BlbiBBdHRyaWJ1dGVfdmFsdWUgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVjIGV4dHJhY3RfYXR0cmlidXRlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUpIDo6IHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCAoR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pIDo6IF8gYXMgdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IEVxdWFsIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBOYW1lZChMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgQ29sb24gfCBDb2xvbnMgXyB8IFVuZGVyc2NvcmUgfCBVbmRlcnNjb3JlcyBfIHwgV29yZCBfXG4gICAgICAgICAgICAgICAgICB8IE51bWJlciBfIHwgTWludXMgfCBNaW51c3MgXyB8IERvdCB8IERvdHMgXyBhcyB0IDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0X2F0dHJpYnV0ZSAodDo6YWNjdSkgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IHRva2VucyAtPiBWb2lkLCB0b2tlbnNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGV4dHJhY3RfYXR0cmlidXRlIFt0XSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgIHwgRW1wdHkgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAoKiBhdHRyaWJ1dGUgd2l0aCBubyBleHBsaWNpdCB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzYyOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIE5vbmUpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgTmFtZWQgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjYxIEJIVE1MIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGUgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2NjggQkhUTUwgbm9uIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZzcGxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzY1NCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2OTAgQkhUTUwgZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY5OCBCSFRNTCBub24gZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjp0bCAtPiBTcGxpdChbXSwgdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjIyIEJIVE1MICVzPSVTICVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFZvaWQsIF8gLT4gTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgfCB4Ojp0b2tlbnMgYXMgZGd0c1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjIwIEJIVE1MIGdlbmVyYWwgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgZGd0cyk7XG4gICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCAoTmV3bGluZSB8IFNwYWNlIHwgU3BhY2VzIF8pIDo6IHRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM3MzcgQkhUTUwgc3BhY2VzXFxuJSFcIjtcbiAgICAgICAgICAgICAgICBsb29wIGJvZHkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgKE5ld2xpbmVzIF8gYXMgeCkgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzgyNyBCSFRNTCBuZXdsaW5lc1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgd2FybiBcInRoZXJlIGFyZSBlbXB0eSBsaW5lcyBpbiB3aGF0IG1heSBiZSBhbiBIVE1MIGJsb2NrXCI7XG4gICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzc0MiBCSFRNTCBmYWxsYmFjayB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zPSVzIGFuZCB0YWdzdGF0dXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBbXSAtPiBcIk5vbmVcIlxuICAgICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gXCJBd2FpdGluZ1wiXG4gICAgICAgICAgICAgICAgICAgfCBULk9wZW4gXyA6OiBfIC0+IFwiT3BlbiAoY2FuJ3QgYmUpXCIpO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIHJlYWQgYW4gb3BlbiBIVE1MIHRhZyAoJXMpLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIHwgVC5PcGVuIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byBmaW5kIHRoZSBjbG9zaW5nIEhUTUwgdGFnIGZvciAlcywgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQwOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICBtYXRjaCBsb29wIFtdIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgU29tZShULm1kX29mX2ludGVybV9saXN0IGgsIHJlc3QpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcmVhZF9odG1sKCkgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoaEByKSBbVGFnKFwiSFRNTEJMT0NLXCIsIGVtcHR5X2V4dGVuc2lvbildIHJlc3RcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdCBpblxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCh0ZXh0IF4gdGFnbmFtZXRvcCk6OnIpIFt3XSBodG1sX3N0dWZmXG4gICAgICAgIGVuZFxuICAgICgqIC8gZW5kIG9mIGJsb2NrIEhUTUwuICopXG5cblxuICAgICgqIGlubGluZSBIVE1MICopXG4gICAgfCBfLFxuICAgICAgKExlc3N0aGFuIGFzIHQpXG4gICAgICA6OigoV29yZCh0YWduYW1ldG9wKSBhcyB3KVxuICAgICAgICAgOjooKFNwYWNlfFNwYWNlcyBffEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKVxuICAgICAgICAgICAgOjpfIGFzIGh0bWxfc3R1ZmYpIGFzIHRseCkgLT5cbiAgICAgIGlmIChzdHJpY3RfaHRtbCAmJiBub3QoU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGlubGluZV9odG1sdGFnc19zZXQpKVxuICAgICAgfHwgbm90KGJsaW5kX2h0bWwgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGh0bWx0YWdzX3NldClcbiAgICAgIHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRseFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBsZXQgcmVhZF9odG1sKCkgPVxuICAgICAgICAgIGxldCBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgICAgfCBBd2FpdGluZyBvZiBzdHJpbmdcbiAgICAgICAgICAgICAgfCBPcGVuIG9mIHN0cmluZ1xuICAgICAgICAgICAgdHlwZSBpbnRlcm0gPVxuICAgICAgICAgICAgICB8IEhUTUwgb2Ygc3RyaW5nICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiBpbnRlcm0gbGlzdFxuICAgICAgICAgICAgICB8IFRPS0VOUyBvZiBMLnRcbiAgICAgICAgICAgICAgfCBNRCBvZiBPbWRfcmVwcmVzZW50YXRpb24udFxuICAgICAgICAgICAgbGV0IHJlYyBtZF9vZl9pbnRlcm1fbGlzdCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgICAgICAgfCBIVE1MKHQsIGEsIGMpOjp0bCAtPlxuICAgICAgICAgICAgICAgIEh0bWwodCwgYSwgbWRfb2ZfaW50ZXJtX2xpc3QoTGlzdC5yZXYgYykpOjptZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IE1EIG1kOjp0bCAtPiBtZCBAIG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgVE9LRU5TIHQxOjpUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKFRPS0VOUyh0MUB0Mik6OnRsKVxuICAgICAgICAgICAgICB8IFRPS0VOUyB0IDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgbWFpbl9pbXBsIH5odG1sIFtdIFtXb3JkIFwiXCJdICh0KVxuICAgICAgICAgICAgICAgIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgIGxldCBzdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyA9XG4gICAgICAgICAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgICAgICAgICAgICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IE9wZW4gdCAtPiBicHJpbnRmIGIgXCJ7SS9PcGVuICVzfVwiIHRcbiAgICAgICAgICAgICAgICAgIHwgQXdhaXRpbmcgdCAtPiBicHJpbnRmIGIgXCJ7SS9Bd2FpdGluZyAlc31cIiB0XG4gICAgICAgICAgICAgICAgKSB0YWdzdGF0dXM7XG4gICAgICAgICAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgICAgICAgZW5kIGluXG4gICAgICAgICAgbGV0IGFkZF90b2tlbl90b19ib2R5IHggYm9keSA9XG4gICAgICAgICAgICBULlRPS0VOU1t4XTo6Ym9keVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIChib2R5OlQuaW50ZXJtIGxpc3QpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnMgPVxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzcxOCBsb29wIHRhZ3N0YXR1cz0oJXMpICVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICgqIGVwcmludGYgXCIoT01EKSAzNzE4IGxvb3AgdGFnc3RhdHVzPSglcykgYm9keT0oJXMpICVzXFxuJSFcIiAqKVxuICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgICgqIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZChULm1kX29mX2ludGVybV9saXN0IGJvZHkpKSAqKVxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgbWF0Y2ggdG9rZW5zIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4odCk6Ol8gd2hlbiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE5vdCBlbm91Z2ggdG8gcmVhZCBmb3IgaW5saW5lIEhUTUxcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgKGlmIG4gPSAwIHRoZW4gTGVzc3RoYW4gZWxzZSBMZXNzdGhhbnMobi0xKSlcbiAgICAgICAgICAgICAgICAgICAgICAgYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIChMZXNzdGhhbjo6dG9rZW5zKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHNlbGYtY2xvc2luZyB0YWdzICopXG4gICAgICAgICAgICB8IFNsYXNoOjpHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nKHRhZ25hbWUpOjp0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCBbVC5IVE1MKHRhZ25hbWUsIGF0dHJzLCBbXSldIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0dyZWF0ZXJ0aGFuO1NsYXNoXTo6Ym9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIG11bHRpcGxlIG5ld2xpbmVzIGFyZSBub3QgdG8gYmUgc2VlbiBpbiBpbmxpbmUgSFRNTCAqKVxuICAgICAgICAgICAgfCBOZXdsaW5lcyBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgTXVsdGlwbGUgbGluZXMgaW4gaW5saW5lIEhUTUxcXG4lIVwiO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IF8gLT4gd2FybiBcIm11bHRpcGxlIG5ld2xpbmVzIGluIGlubGluZSBIVE1MXCI7IE5vbmUpXG4gICAgICAgICAgICAoKiBtYXliZSBjb2RlICopXG4gICAgICAgICAgICB8IChCYWNrcXVvdGUgfCBCYWNrcXVvdGVzIF8gYXMgYik6OnRsIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogbm8gY29kZVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogbm9uZVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gXyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBsZXQncyB0cnlcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYmNvZGUgW10gW1NwYWNlXSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKCgoQ29kZSBfOjpfKSBhcyBjKSwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1lZFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5NRCBjOjpib2R5KSBbXSB0YWdzdGF0dXMgbFxuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogZmFpbGVkXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tiXTo6Ym9keSkgW10gdGFnc3RhdHVzIHRsXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSB0YWcgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OlNsYXNoOjooV29yZCh0YWduYW1lKSBhcyB3KVxuICAgICAgICAgICAgICA6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIHdoZW4gdCA9IHRhZ25hbWUgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxMzYgcHJvcGVybHkgY2xvc2luZyAlUyB0b2tlbnM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW4gOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTQ0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDFcXG4lIVwiIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW2c7dztTbGFzaDtMZXNzdGhhbl06OmJvZHkpIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTQ5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDJcXG4lIVwiIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTU0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyBub3RoaW5nIHdpdGggJVMgM1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHRhZyAqKVxuICAgICAgICAgICAgfCBMZXNzdGhhbjo6KFdvcmQodGFnbmFtZSkgYXMgd29yZCk6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgYmxpbmRfaHRtbFxuICAgICAgICAgICAgICAgIHx8IChzdHJpY3RfaHRtbCAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaW5saW5lX2h0bWx0YWdzX3NldClcbiAgICAgICAgICAgICAgICB8fCAobm90IHN0cmljdF9odG1sICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sdGFnc19zZXQpXG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDwlcy4uLlxcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuT3Blbih0KSA6OiBfXG4gICAgICAgICAgICAgICAgICB3aGVuIHQgPD4gdGFnbmFtZSAmJiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM3OTYgdGFnICVzLCBhdHRycz1bXVxcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBsb29wIFtdIFtdIChULkF3YWl0aW5nIHRhZ25hbWU6OnRhZ3N0YXR1cykgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbd29yZDtMZXNzdGhhbl06OmJvZHkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYix0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKGJAYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBlbmQgb2Ygb3BlbmluZyB0YWcgKilcbiAgICAgICAgICAgIHwgR3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxODUgZW5kIG9mIG9wZW5pbmcgdGFnIHRva2Vucz0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IHRhZ3N0YXR1cyBhcyB0cyAtPlxuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbG9vcCBib2R5IFtdIChULk9wZW4gdDo6dGFnc3RhdHVzKSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE4NiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bGRuJ3QgZmluZCBhbiBjbG9zaW5nIHRhZyBmb3IgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHQ7XG4gICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYiwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSA0MTkyIEZvdW5kIGEgY2xvc2luZyB0YWcgJXMgdHM9JXMgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vucz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgU29tZShULkhUTUwodCwgYXR0cnMsIGIpOjpib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBOb3RlOiB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSB2YWx1ZSBvZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHJzXSBoZXJlIGJlY2F1c2UgaW4gd2UgaGF2ZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFnc3RhdHVzXSBtYXRjaGVzIFtULk9wZW4gXyA6OiBfXSBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXJlJ3MgYSBjb3JyZXNwb25kaW5nIGZpbHRlciB0aGF0IHdpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2UgY2FyZSBvZiBhdHRycyB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpdC4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgKFQuSFRNTCh0LCBhdHRycywgYik6OmJvZHkpIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSBUdXJucyBvdXQgYW4gYD5gIGlzbid0IGZvciBhbiBvcGVuaW5nIHRhZ1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tHcmVhdGVydGhhbl06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MjAyIHRhZ3N0YXR1cz1bXVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICAoKiBtYXliZSBhdHRyaWJ1dGUgKilcbiAgICAgICAgICAgIHwgKENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdCk6OnRva2Vuc1xuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgICAgIDo6KENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdClcbiAgICAgICAgICAgICAgOjp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGxldCBtb2R1bGUgQXR0cmlidXRlX3ZhbHVlID0gc3RydWN0XG4gICAgICAgICAgICAgICAgICB0eXBlIHQgPSBFbXB0eSBvZiBuYW1lIHwgTmFtZWQgb2YgbmFtZSB8IFZvaWRcbiAgICAgICAgICAgICAgICAgIGFuZCBuYW1lID0gc3RyaW5nXG4gICAgICAgICAgICAgICAgZW5kIGluXG4gICAgICAgICAgICAgICAgbGV0IG9wZW4gQXR0cmlidXRlX3ZhbHVlIGluXG4gICAgICAgICAgICAgICAgbGV0IHJlYyBleHRyYWN0X2F0dHJpYnV0ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlIHwgU3BhY2VzIF8gfCBOZXdsaW5lKSA6OiB0b2tlbnMtPlxuICAgICAgICAgICAgICAgICAgICBFbXB0eShMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgKEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKSA6OiBfIGFzIHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCBFcXVhbCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgTmFtZWQoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IENvbG9uIHwgQ29sb25zIF8gfCBVbmRlcnNjb3JlIHwgVW5kZXJzY29yZXMgXyB8IFdvcmQgX1xuICAgICAgICAgICAgICAgICAgfCBOdW1iZXIgXyB8IE1pbnVzIHwgTWludXNzIF8gfCBEb3QgfCBEb3RzIF8gYXMgdCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdF9hdHRyaWJ1dGUgKHQ6OmFjY3UpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCB0b2tlbnMgLT4gVm9pZCwgdG9rZW5zXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBleHRyYWN0X2F0dHJpYnV0ZSBbdF0gdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICB8IEVtcHR5IGF0dHJpYnV0ZW5hbWUsIHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgKCogYXR0cmlidXRlIHdpdGggbm8gZXhwbGljaXQgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIE5vbmUpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgTmFtZWQgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgfCBRdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBub24gZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgMCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICgzOTU3KSAlcz0lUyAlc1xcbiUhXCIgYXR0cmlidXRlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFZvaWQsIF8gLT4gTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6Ong6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tCYWNrc2xhc2g7eF06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgIHwgQmFja3NsYXNocyhuKTo6eDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgJiYgbiBtb2QgMiA9IDEgLT5cbiAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbQmFja3NsYXNocyhuKTt4XTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuXG4gICAgICAgICAgICB8IHg6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoNDE2MSkgZ2VuZXJhbCAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyAoeDo6dG9rZW5zKSk7XG4gICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbeF06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IChOZXdsaW5lIHwgU3BhY2UgfCBTcGFjZXMgXykgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgKDQyODkpIHNwYWNlc1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgbG9vcCBib2R5IGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoNDI5NCkgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjayB3aXRoIHRva2Vucz0lcyBhbmQgdGFnc3RhdHVzPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKTtcbiAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byByZWFkIGFuIG9wZW4gSFRNTCB0YWcgKCVzKSwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICB8IFQuT3BlbiB0YWcgOjogXyAtPlxuICAgICAgICAgICAgICAgICB3YXJuIChzcHJpbnRmIFwiZXhwZWN0ZWQgdG8gZmluZCB0aGUgY2xvc2luZyBIVE1MIHRhZyBmb3IgJXMsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBmb3VuZCBub3RoaW5nXCIgdGFnKTtcbiAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICBpbiBtYXRjaCBsb29wIFtdIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgU29tZShodG1sLCByZXN0KSAtPlxuICAgICAgICAgICAgU29tZShULm1kX29mX2ludGVybV9saXN0IGh0bWwsIHJlc3QpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcmVhZF9odG1sKCkgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoaEByKSBbR3JlYXRlcnRoYW5dIHJlc3RcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdCBpblxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCh0ZXh0IF4gdGFnbmFtZXRvcCk6OnIpIFt3XSBodG1sX3N0dWZmXG4gICAgICAgIGVuZFxuICAgICgqIC8gZW5kIG9mIGlubGluZSBIVE1MLiAqKVxuXG4gICAgKCogPCA6IGVtYWlscyAqKVxuICAgIHwgXywgKExlc3N0aGFuIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfYXV0b2VtYWlsIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogbGluZSBicmVha3MgKilcbiAgICB8IF8sIE5ld2xpbmU6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChOTDo6cikgW05ld2xpbmVdIHRsXG4gICAgfCBfLCBOZXdsaW5lcyBfOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoTkw6Ok5MOjpyKSBbTmV3bGluZV0gdGxcblxuICAgICgqIFsgKilcbiAgICB8IF8sIChPYnJhY2tldCBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2xpbmsgbWFpbl9sb29wIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBtYXRjaCBtYXliZV9yZWZlcmVuY2UgbWFpbl9sb29wIHJjIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogaW1nICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb258RXhjbGFtYXRpb25zIF8gYXMgdClcbiAgICAgICAgIDo6T2JyYWNrZXQ6OkNicmFja2V0OjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAoKiBpbWFnZSBpbnNlcnRpb24gd2l0aCBubyBcImFsdFwiICopXG4gICAgICAoKiAhW10oL3BhdGgvdG8vaW1nLmpwZykgKilcbiAgICAgICh0cnlcbiAgICAgICAgIGJlZ2luXG4gICAgICAgICAgIGxldCBiLCB0bCA9IHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgfm5vX25sOmZhbHNlIHRsIGluXG4gICAgICAgICAgICgqIG5ldyBsaW5lcyB0aGVyZSBhcmUgYWxsb3dlZCAqKVxuICAgICAgICAgICBsZXQgciAoKiB1cGRhdGVkIHJlc3VsdCAqKSA9IG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgIHwgRXhjbGFtYXRpb25zIDAgLT4gVGV4dCBcIiFcIiA6OiByXG4gICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgbiAtPiBUZXh0KFN0cmluZy5tYWtlIChuKzEpICchJykgOjogclxuICAgICAgICAgICAgIHwgXyAtPiByIGluXG4gICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgdHJ5IFNvbWUocmVhZF91bnRpbF9zcGFjZSB+YnE6ZmFsc2Ugfm5vX25sOnRydWUgYilcbiAgICAgICAgICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgLT4gTm9uZVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgIHwgU29tZSh1cmwsIHRscykgLT5cbiAgICAgICAgICAgICBsZXQgdGl0bGUsIHNob3VsZF9iZV9lbXB0eV9saXN0ID1cbiAgICAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfmJxOnRydWUgKHNuZCAocmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSB0bHMpKSBpblxuICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKFwiXCIsIHVybCwgdGl0bGUpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHRsXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgYiBpblxuICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZyhcIlwiLCB1cmwsIFwiXCIpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHRsXG4gICAgICAgICBlbmRcbiAgICAgICB3aXRoXG4gICAgICAgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG4gICAgKCogaW1nIHJlZiAqKVxuICAgIHwgXywgKEV4Y2xhbWF0aW9uIGFzIHQpXG4gICAgICAgICA6Ok9icmFja2V0OjpDYnJhY2tldDo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAoKiByZWYgaW1hZ2UgaW5zZXJ0aW9uIHdpdGggbm8gXCJhbHRcIiAqKVxuICAgICAgKCogIVtdW3JlZl0gKilcbiAgICAgICh0cnlcbiAgICAgICAgIGxldCBpZCwgdGwgPSByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIH5ub19ubDp0cnVlIHRsIGluXG4gICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCB0bCBsZXhlbWVzIGluXG4gICAgICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgaWQgaW5cbiAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZ19yZWYocmMsIGlkLCBcIlwiLCBmYWxsYmFjaykgOjogcikgW0NicmFja2V0XSB0bFxuICAgICAgIHdpdGggTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuXG4gICAgKCogaW1nICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb258RXhjbGFtYXRpb25zIF8gYXMgdCk6Ok9icmFja2V0Ojp0bCAtPlxuICAgICAgKCogaW1hZ2UgaW5zZXJ0aW9uIHdpdGggXCJhbHRcIiAqKVxuICAgICAgKCogIVtBbHQgdGV4dF0oL3BhdGgvdG8vaW1nLmpwZyBcIk9wdGlvbmFsIHRpdGxlXCIpICopXG4gICAgICAodHJ5XG4gICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIHRsIHdpdGhcbiAgICAgICAgIHwgYWx0LCBPcGFyZW50aGVzaXM6Om50bCAtPlxuICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgICAgIGxldCBwYXRoX3RpdGxlLCByZXN0ID1cbiAgICAgICAgICAgICAgICByZWFkX3VudGlsX2NwYXJlbnRoIH5icTp0cnVlIH5ub19ubDpmYWxzZSBudGwgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGgsIHRpdGxlID1cbiAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfc3BhY2UgfmJxOnRydWUgfm5vX25sOnRydWUgcGF0aF90aXRsZVxuICAgICAgICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBwYXRoX3RpdGxlLCBbXSBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUsIG5vdGhpbmcgPVxuICAgICAgICAgICAgICAgIGlmIHRpdGxlIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfmJxOnRydWUgKHNuZChyZWFkX3VudGlsX2RxIH5icTp0cnVlIHRpdGxlKSlcbiAgICAgICAgICAgICAgICBlbHNlIFtdLCBbXSBpblxuICAgICAgICAgICAgICBpZiBub3RoaW5nIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb247ICgqIGNhdWdodCByaWdodCBiZWxvdyAqKVxuICAgICAgICAgICAgICBsZXQgciA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgMCAtPiBUZXh0IFwiIVwiIDo6IHJcbiAgICAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyBuIC0+IFRleHQoU3RyaW5nLm1ha2UgKG4rMSkgJyEnKSA6OiByXG4gICAgICAgICAgICAgICAgfCBfIC0+IHIgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGggPSBMLnN0cmluZ19vZl90b2tlbnMgcGF0aCBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKGFsdCwgcGF0aCwgdGl0bGUpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHJlc3RcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTkxfZXhjZXB0aW9uXG4gICAgICAgICAgICAoKiBpZiBOTF9leGNlcHRpb24gd2FzIHJhaXNlZCwgdGhlbiBmYWxsIGJhY2sgdG8gXCJ0ZXh0XCIgKilcbiAgICAgICAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICApXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OldvcmQoaWQpOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OihTcGFjZXxTcGFjZXMgXyk6OldvcmQoaWQpOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OihTcGFjZXxTcGFjZXMgXyk6OldvcmQoaWQpOjooU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgICAgICAgOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OldvcmQoaWQpOjooU3BhY2V8U3BhY2VzIF8pOjpDYnJhY2tldDo6bnRsIC0+XG4gICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIG50bCBsZXhlbWVzIGluXG4gICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZ19yZWYocmMsIGlkLCBhbHQsIGZhbGxiYWNrKTo6cikgW0NicmFja2V0XSBudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6KChOZXdsaW5lfFNwYWNlfFNwYWNlcyBffFdvcmQgX3xOdW1iZXIgXyk6Ol9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIG50bCkgLT5cbiAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIH5ub19ubDpmYWxzZSBudGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdLCByZXN0IC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICAgICAgfCBpZCwgcmVzdCAtPlxuICAgICAgICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlc3QgbGV4ZW1lcyBpblxuICAgICAgICAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyBpZCBpblxuICAgICAgICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nX3JlZihyYywgaWQsIGFsdCwgZmFsbGJhY2spOjpyKVxuICAgICAgICAgICAgICAgICAgW0NicmFja2V0XVxuICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICAgICAgICB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgIClcbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICBlbmRcbiAgICAgICB3aXRoXG4gICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuICAgIHwgXyxcbiAgICAgIChBdHxCYXJ8Q2FyZXR8Q2JyYWNlfENvbG9ufENvbW1hfENwYXJlbnRoZXNpc3xDYnJhY2tldHxEb2xsYXJcbiAgICAgIHxEb3R8RG91YmxlcXVvdGV8RXhjbGFtYXRpb258RXF1YWx8TWludXN8T2JyYWNlfE9wYXJlbnRoZXNpc1xuICAgICAgfFBlcmNlbnR8UGx1c3xRdWVzdGlvbnxRdW90ZXxTZW1pY29sb258U2xhc2h8VGFifFRpbGRlXG4gICAgICB8R3JlYXRlcnRoYW4gYXMgdCk6OnRsXG4gICAgICAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG4gICAgfCBfLCAoTnVtYmVyIF8gIGFzIHQpOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG4gICAgfCBfLCAoQXRzIF8gfCBCYXJzIF8gfCBDYXJldHMgXyB8IENicmFjZXMgXyB8IENicmFja2V0cyBfIHwgQ29sb25zIF9cbiAgICAgICAgIHwgQ29tbWFzIF8gfCBDcGFyZW50aGVzaXNzIF8gfCBEb2xsYXJzIF8gfCBEb3RzIF8gfCBEb3VibGVxdW90ZXMgX1xuICAgICAgICAgfCBFcXVhbHMgXyB8IEV4Y2xhbWF0aW9ucyBfIHwgR3JlYXRlcnRoYW5zIF8gfCBMZXNzdGhhbnMgX1xuICAgICAgICAgfCBNaW51c3MgXyB8IE9icmFjZXMgXyB8IE9icmFja2V0cyBfIHwgT3BhcmVudGhlc2lzcyBfXG4gICAgICAgICB8IFBlcmNlbnRzIF8gfCBQbHVzcyBfIHwgUXVlc3Rpb25zIF8gfCBRdW90ZXMgXyB8IFNlbWljb2xvbnMgX1xuICAgICAgICAgfCBTbGFzaHMgXyB8IFN0YXJzIF8gfCBUYWJzIF8gfCBUaWxkZXMgXyB8IFVuZGVyc2NvcmVzIF8gYXMgdGspXG4gICAgICAgICA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHRrMCwgdGtzID0gTC5zcGxpdF9maXJzdCB0ayBpblxuICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdGswIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCB0ZXh0IDo6IHIpIFt0azBdICh0a3MgOjogdGwpXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG5cbiAgYW5kIG1haW5faW1wbCB+aHRtbCAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICgqIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1haW5faW1wbCBodG1sPSViXFxuJSFcIiBodG1sOyAqKVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIExpc3QucmV2IChtYWluX2xvb3BfcmV2IH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lcylcblxuICBhbmQgbWFpbl9sb29wID8oaHRtbD1mYWxzZSkgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAgIG1haW5faW1wbCB+aHRtbCByIHByZXZpb3VzIGxleGVtZXNcblxuICBhbmQgbWFpbl9sb29wX3JldiA/KGh0bWw9ZmFsc2UpIChyOnIpIChwcmV2aW91czpwKSAobGV4ZW1lczpsKSA9XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lc1xuXG5cbiAgbGV0IG1haW5fcGFyc2UgbGV4ZW1lcyA9XG4gICAgbWFpbl9sb29wIFtdIFtdICh0YWdfc2V0ZXh0IG1haW5fbG9vcCBsZXhlbWVzKVxuXG4gIGxldCBwYXJzZSBsZXhlbWVzID1cbiAgICBtYWluX3BhcnNlIGxleGVtZXNcblxuZW5kXG5cbmxldCBkZWZhdWx0X3BhcnNlID8oZXh0ZW5zaW9ucz1bXSkgPyhkZWZhdWx0X2xhbmc9XCJcIikgbGV4ZW1lcyA9XG4gIGxldCBlID0gZXh0ZW5zaW9ucyBhbmQgZCA9IGRlZmF1bHRfbGFuZyBpblxuICBsZXQgbW9kdWxlIEUgPSBEZWZhdWx0X2VudihVbml0KSBpblxuICBsZXQgbW9kdWxlIE0gPVxuICAgIE1ha2Uoc3RydWN0XG4gICAgICBpbmNsdWRlIEVcbiAgICAgIGxldCBleHRlbnNpb25zID0gZVxuICAgICAgbGV0IGRlZmF1bHRfbGFuZyA9IGRcbiAgICBlbmQpXG4gIGluXG4gIE0ubWFpbl9wYXJzZSBsZXhlbWVzXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFlvdSBzaG91bGQgZWl0aGVyIHVzZSB0aGlzIG1vZHVsZSBvciBPbWRfbGV4ZXIsIG5vdCBib3RoLlxuICAgIFRoaXMgbW9kdWxlIGluY2x1ZGVzIE9tZF9sZXhlci5cbiopXG5cbmluY2x1ZGUgT21kX2xleGVyXG5cbmxldCBsZXhfZnJvbV9pbmNoYW5uZWwgaWMgPVxuICAoKiBNYWludGVuYW5jZS1lYXNpbmVzcy1kcml2ZW4gaW1wbGVtZW50YXRpb24uICopXG4gIGxldCBpY19jb250ZW50ID1cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIChpbnB1dF9jaGFyIGljKVxuICAgICAgICBkb25lO1xuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gIGxleCBpY19jb250ZW50XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBPTUQ6IE1hcmtkb3duIHRvb2wgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlOiAgSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgaHRtbCA9IGh0bWxfbm9kZSBsaXN0XG5cbmFuZCBodG1sX25vZGUgPVxuICB8IE5vZGUgb2Ygbm9kZW5hbWUgKiBhdHRyaWJ1dGVzICogaHRtbFxuICB8IERhdGEgb2Ygc3RyaW5nXG4gIHwgUmF3ZGF0YSBvZiBzdHJpbmdcbiAgfCBDb21tZW50IG9mIHN0cmluZ1xuXG5hbmQgbm9kZW5hbWUgPSBzdHJpbmdcblxuYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5hbmQgYXR0cmlidXRlID0gc3RyaW5nICogc3RyaW5nIG9wdGlvblxuXG5sZXQgdG9fc3RyaW5nIGh0bWwgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcHAgZiA9IFByaW50Zi5icHJpbnRmIGIgZiBpblxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgTm9kZShub2RlbmFtZSwgYXR0cmlidXRlcywgaHRtbCkgLT5cbiAgICAgIHBwIFwiPCVzXCIgbm9kZW5hbWU7XG4gICAgICBwcGEgYXR0cmlidXRlcztcbiAgICAgIHBwIFwiPlwiO1xuICAgICAgTGlzdC5pdGVyIGxvb3AgaHRtbDtcbiAgICAgIHBwIFwiPC8lcz5cIiBub2RlbmFtZVxuICAgIHwgRGF0YSBzIC0+IHBwIFwiJXNcIiBzXG4gICAgfCBSYXdkYXRhIHMgLT4gcHAgXCIlc1wiIHNcbiAgICB8IENvbW1lbnQgYyAtPiBwcCBcIjwhLS0gJXMgLS0+XCIgY1xuICBhbmQgcHBhIGF0dHJzID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IChhLCBTb21lIHYpIC0+XG4gICAgICAgICAgaWYgbm90IChTdHJpbmcuY29udGFpbnMgdiAnXFwnJykgdGhlblxuICAgICAgICAgICAgcHAgXCIgJXM9JyVzJ1wiIGEgdlxuICAgICAgICAgIGVsc2UgaWYgbm90IChTdHJpbmcuY29udGFpbnMgdiAnXCInKSB0aGVuXG4gICAgICAgICAgICBwcCBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBwcCBcIiAlcz1cXFwiXCIgYTtcbiAgICAgICAgICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggdiAtIDEgZG9cbiAgICAgICAgICAgICAgICBtYXRjaCB2LltpXSB3aXRoXG4gICAgICAgICAgICAgICAgfCAnXCInIC0+IHBwIFwiJnF1b3Q7XCJcbiAgICAgICAgICAgICAgICB8IGMgICAgLT4gcHAgXCIlY1wiIGNcbiAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgcHAgXCJcXFwiXCJcbiAgICAgICAgICAgIClcbiAgICAgICAgfCBhLCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJ1wiIGEgKCogSFRNTDUgKilcbiAgICApXG4gICAgYXR0cnNcbiAgaW5cbiAgTGlzdC5pdGVyIGxvb3AgaHRtbDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmluY2x1ZGUgT21kX3JlcHJlc2VudGF0aW9uXG5pbmNsdWRlIE9tZF9iYWNrZW5kXG5cbmxldCBvZl9pbnB1dCBsZXggP2V4dGVuc2lvbnM6ZSA/ZGVmYXVsdF9sYW5nOmQgcyA9XG4gIGxldCBtb2R1bGUgRSA9IE9tZF9wYXJzZXIuRGVmYXVsdF9lbnYoc3RydWN0IGVuZCkgaW5cbiAgbGV0IG1vZHVsZSBQYXJzZXIgPSBPbWRfcGFyc2VyLk1ha2UoXG4gICAgc3RydWN0XG4gICAgICBpbmNsdWRlIEVcbiAgICAgIGxldCBleHRlbnNpb25zID0gbWF0Y2ggZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBFLmV4dGVuc2lvbnNcbiAgICAgIGxldCBkZWZhdWx0X2xhbmcgPSBtYXRjaCBkIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEUuZGVmYXVsdF9sYW5nXG4gICAgZW5kXG4gICkgaW5cbiAgbGV0IG1kID1cbiAgICBQYXJzZXIucGFyc2UgKGxleCBzKVxuICBpblxuICBQYXJzZXIubWFrZV9wYXJhZ3JhcGhzIG1kXG5cbmxldCBvZl9zdHJpbmcgPSBvZl9pbnB1dCBPbWRfbGV4ZXIubGV4XG5sZXQgb2ZfYmlnYXJyYXkgPSBvZl9pbnB1dCBPbWRfbGV4ZXIubGV4X2JpZ2FycmF5XG5cbmxldCB0b19odG1sIDpcbiAgP292ZXJyaWRlOihPbWRfcmVwcmVzZW50YXRpb24uZWxlbWVudCAtPiBzdHJpbmcgb3B0aW9uKSAtPlxuICA/cGluZGVudDpib29sIC0+XG4gID9ubDJicjpib29sIC0+XG4gID9jczpjb2RlX3N0eWxpc3QgLT5cbiAgdCAtPlxuICBzdHJpbmdcbiAgPVxuICBodG1sX29mX21kXG5cbmxldCB0b190ZXh0IDogdCAtPiBzdHJpbmcgPSB0ZXh0X29mX21kXG5cbmxldCB0b19tYXJrZG93biA6IHQgLT4gc3RyaW5nID0gbWFya2Rvd25fb2ZfbWRcblxubGV0IGh0bWxfb2Zfc3RyaW5nIChodG1sOnN0cmluZykgOiBzdHJpbmcgPVxuICBodG1sX29mX21kIChPbWRfcGFyc2VyLmRlZmF1bHRfcGFyc2UgKE9tZF9sZXhlci5sZXggaHRtbCkpXG5cblxubGV0IHJlYyBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgPSBmdW5jdGlvblxuICB8IENvZGUoXCJcIiwgY29kZSkgOjogdGwgLT4gQ29kZShsYW5nLCBjb2RlKSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBDb2RlX2Jsb2NrKFwiXCIsIGNvZGUpIDo6IHRsIC0+IENvZGVfYmxvY2sobGFuZywgY29kZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICAoKiBSZWN1cnNlIG9uIGFsbCBlbGVtZW50cyBldmVuIHRob3VnaCBjb2RlIChibG9ja3MpIGFyZSBub3QgYWxsb3dlZFxuICAgICBldmVyeXdoZXJlLiAqKVxuICB8IEgxIHQgOjogdGwgLT4gSDEoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEgyIHQgOjogdGwgLT4gSDIoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEgzIHQgOjogdGwgLT4gSDMoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg0IHQgOjogdGwgLT4gSDQoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg1IHQgOjogdGwgLT4gSDUoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg2IHQgOjogdGwgLT4gSDYoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFBhcmFncmFwaCB0IDo6IHRsIC0+IFBhcmFncmFwaChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdClcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEVtcGggdCA6OiB0bCAtPiBFbXBoKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBCb2xkIHQgOjogdGwgLT4gQm9sZChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgVWwgdCA6OiB0bCAtPiBVbChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBPbCB0IDo6IHRsIC0+IE9sKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFVscCB0IDo6IHRsIC0+IFVscChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgT2xwIHQgOjogdGwgLT4gT2xwKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBVcmwoaHJlZiwgdCwgdGl0bGUpIDo6IHRsIC0+IFVybChocmVmLCBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCwgdGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEJsb2NrcXVvdGUgdCA6OiB0bCAtPiBCbG9ja3F1b3RlKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICAoKiBFbGVtZW50cyB0aGF0IGRvIG5vdCBjb250YWluIE1hcmtkb3duLiAqKVxuICB8IChUZXh0IF98Q29kZSBffENvZGVfYmxvY2sgX3xCcnxIcnxOTHxSZWYgX3xJbWdfcmVmIF98UmF3IF98UmF3X2Jsb2NrIF9cbiAgICB8SHRtbCBffEh0bWxfYmxvY2sgX3xIdG1sX2NvbW1lbnQgX3xJbWcgX3xYIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgZSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBbXSAtPiBbXVxuXG5cbigqIFRhYmxlIG9mIGNvbnRlbnRzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEdpdmVuIGEgbGlzdCBvZiBoZWFkZXJzIOKAlCBpbiB0aGUgb3JkZXIgb2YgdGhlIGRvY3VtZW50IOKAlCBnbyB0byB0aGVcbiAgIHJlcXVlc3RlZCBzdWJzZWN0aW9uLiAgV2UgZmlyc3Qgc2VlayBmb3IgdGhlIFtudW1iZXJddGggaGVhZGVyIGF0XG4gICBbbGV2ZWxdLiAgKilcbmxldCByZWMgZmluZF9zdGFydCBoZWFkZXJzIGxldmVsIG51bWJlciBzdWJzZWN0aW9ucyA9XG4gIG1hdGNoIGhlYWRlcnMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgKEgxIF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgMSBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChIMiBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDIgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDMgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciAzIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEg0IF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgNCBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChINSBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDUgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDYgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciA2IGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgXyA6OiBfIC0+IGFzc2VydCBmYWxzZVxuXG5hbmQgZGVhbF93aXRoX2hlYWRlciBoX2xldmVsIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zID1cbiAgaWYgaF9sZXZlbCA+IGxldmVsIHRoZW4gKCogU2tpcCwgcmlnaHQgW2xldmVsXS1oZWFkZXIgbm90IHlldCByZWFjaGVkLiAqKVxuICAgIGlmIG51bWJlciA9IDAgdGhlblxuICAgICAgKCogQXNzdW1lIGVtcHR5IHNlY3Rpb24gYXQgW2xldmVsXSwgZG8gbm90IGNvbnN1bWUgdG9rZW4uICopXG4gICAgICAobWF0Y2ggc3Vic2VjdGlvbnMgd2l0aFxuICAgICAgIHwgW10gLT4gaGVhZGVycyAoKiBubyBzdWJzZWN0aW9uIHRvIGZpbmQgKilcbiAgICAgICB8IG4gOjogc3Vic2VjdGlvbnMgLT4gZmluZF9zdGFydCBoZWFkZXJzIChsZXZlbCArIDEpIG4gc3Vic2VjdGlvbnMpXG4gICAgZWxzZSBmaW5kX3N0YXJ0IHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICBlbHNlIGlmIGhfbGV2ZWwgPSBsZXZlbCB0aGVuIChcbiAgICAoKiBBdCBwcm9wZXIgW2xldmVsXS4gIEhhdmUgd2UgcmVhY2hlZCB0aGUgW251bWJlcl0gb25lPyAqKVxuICAgIGlmIG51bWJlciA8PSAxIHRoZW4gKFxuICAgICAgbWF0Y2ggc3Vic2VjdGlvbnMgd2l0aFxuICAgICAgfCBbXSAtPiB0bCAoKiBubyBzdWJzZWN0aW9uIHRvIGZpbmQgKilcbiAgICAgIHwgbiA6OiBzdWJzZWN0aW9ucyAtPiBmaW5kX3N0YXJ0IHRsIChsZXZlbCArIDEpIG4gc3Vic2VjdGlvbnNcbiAgICApXG4gICAgZWxzZSBmaW5kX3N0YXJ0IHRsIGxldmVsIChudW1iZXIgLSAxKSBzdWJzZWN0aW9uc1xuICApXG4gIGVsc2UgKCogaF9sZXZlbCA8IGxldmVsICopXG4gICAgW10gKCogU291Z2h0IFtsZXZlbF0gaGFzIG5vdCBiZWVuIGZvdW5kIGluIHRoZSBjdXJyZW50IHNlY3Rpb24gKilcblxuKCogQXNzdW1lIHdlIGFyZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGhlYWRlcnMgd2UgYXJlIGludGVyZXN0ZWQgaW4uXG4gICBSZXR1cm4gdGhlIGxpc3Qgb2YgVE9DIGVudHJpZXMgZm9yIFttaW5fbGV2ZWxdIGFuZCB0aGUgW2hlYWRlcnNdXG4gICBub3QgdXNlZCBmb3IgdGhlIFRPQyBlbnRyaWVzLiAqKVxubGV0IHJlYyBtYWtlX3RvYyAoaGVhZGVyczooZWxlbWVudCpzdHJpbmcqc3RyaW5nKWxpc3QpIH5taW5fbGV2ZWwgfm1heF9sZXZlbCA9XG4gIGlmIG1pbl9sZXZlbCA+IG1heF9sZXZlbCB0aGVuIFtdLCBoZWFkZXJzXG4gIGVsc2UgKFxuICAgIG1hdGNoIGhlYWRlcnMgd2l0aFxuICAgIHwgW10gLT4gW10sIFtdXG4gICAgfCAoSDEgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDEgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChIMiB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgMiB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEgzIHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyAzIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDQgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDQgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChINSB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgNSB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEg2IHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyA2IHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCBfIDo6IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIClcbmFuZCB0b2NfZW50cnkgaGVhZGVycyBoX2xldmVsIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsID1cbiAgaWYgaF9sZXZlbCA+IG1heF9sZXZlbCB0aGVuICgqIHRvbyBkZWVwLCBza2lwICopXG4gICAgbWFrZV90b2MgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gIGVsc2UgaWYgaF9sZXZlbCA8IG1pbl9sZXZlbCB0aGVuXG4gICAgKCogc2VjdGlvbiB3ZSB3YW50ZWQgdGhlIFRPQyBmb3IgaXMgZmluaXNoZWQsIGRvIG5vdCBjb21zdW1lIHRoZSB0b2tlbiAqKVxuICAgIFtdLCBoZWFkZXJzXG4gIGVsc2UgaWYgaF9sZXZlbCA9IG1pbl9sZXZlbCB0aGVuIChcbiAgICBsZXQgc3ViX3RvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsOihtaW5fbGV2ZWwgKyAxKSB+bWF4X2xldmVsIGluXG4gICAgbGV0IHRvY19lbnRyeSA9IG1hdGNoIHN1Yl90b2Mgd2l0aFxuICAgICAgfCBbXSAtPiBbVXJsKFwiI1wiIF4gaWQsIHQsIFwiXCIpOyBOTF1cbiAgICAgIHwgXyAtPiBbVXJsKFwiI1wiIF4gaWQsIHQsIFwiXCIpOyBOTDsgVWwgc3ViX3RvYzsgTkxdIGluXG4gICAgbGV0IHRvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWwgaW5cbiAgICB0b2NfZW50cnkgOjogdG9jLCB0bFxuICApIGVsc2UgKCogaF9sZXZlbCA+IG1pbl9sZXZlbCAqKVxuICAgIGxldCBzdWJfdG9jLCB0bCA9IG1ha2VfdG9jIGhlYWRlcnMgfm1pbl9sZXZlbDoobWluX2xldmVsICsgMSkgfm1heF9sZXZlbCBpblxuICAgIGxldCB0b2MsIHRsID0gbWFrZV90b2MgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsIGluXG4gICAgW1VsIHN1Yl90b2NdIDo6IHRvYywgdGxcblxubGV0IHRvYyA/KHN0YXJ0PVtdKSA/KGRlcHRoPTIpIG1kID1cbiAgaWYgZGVwdGggPCAxIHRoZW4gaW52YWxpZF9hcmcgXCJPbWQudG9jOiB+ZGVwdGggbXVzdCBiZSA+PSAxXCI7XG4gIGxldCBoZWFkZXJzID0gT21kX2JhY2tlbmQuaGVhZGVyc19vZl9tZCB+cmVtb3ZlX2hlYWRlcl9saW5rczp0cnVlIG1kIGluXG4gIGxldCBoZWFkZXJzID0gbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgW10gLT4gaGVhZGVyc1xuICAgIHwgbnVtYmVyIDo6IHN1YnNlY3Rpb25zIC0+XG4gICAgICAgaWYgbnVtYmVyIDwgMCB0aGVuIGludmFsaWRfYXJnKFwiT21kLnRvYzogbGV2ZWwgMSBzdGFydCBtdXN0IGJlID49IDBcIik7XG4gICAgICAgZmluZF9zdGFydCBoZWFkZXJzIDEgbnVtYmVyIHN1YnNlY3Rpb25zIGluXG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBzdGFydCBpblxuICBsZXQgdG9jLCBfID0gbWFrZV90b2MgaGVhZGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgfm1pbl9sZXZlbDoobGVuICsgMSkgfm1heF9sZXZlbDoobGVuICsgZGVwdGgpIGluXG4gIG1hdGNoIHRvYyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBfIC0+IFtVbCh0b2MpXVxuXG5sZXQgYWRkX3RvYyA/c3RhcnQgP2RlcHRoID90aXRsZSBtZCA9XG4gIGxldCB0b2MgPSB0b2MgP3N0YXJ0ID9kZXB0aCBtZCBpblxuICAoKiBSZXBsYWNlIFwiKlRhYmxlIG9mIGNvbnRlbnRzKlwiIHdpdGggdGhlIGFjdHVhbCBUT0MuICopXG4gIHRvY1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJtYWluLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIkRlZmF1bHRMb2NhbGUiLCJkZWZhdWx0U3RyZnRpbWUiLCJTdHJmdGltZSIsImlzQ29tbW9uSlMiLCJtb2R1bGUiLCJuYW1lc3BhY2UiLCJhZGFwdGVkU3RyZnRpbWUiLCJkZXByZWNhdGVkU3RyZnRpbWUiLCJqb29fZ2xvYmFsX29iamVjdCIsInRoaXMiLCJldmFsIiwiX3JlcXVpcmUiLCJfZGVwcmVjYXRpb25XYXJuaW5ncyIsImRlcHJlY2F0aW9uV2FybmluZyIsIm5hbWUiLCJpbnN0ZWFkIiwiY29uc29sZSIsImRlcHJlY2F0ZWRTdHJmdGltZVRaIiwiZGVwcmVjYXRlZFN0cmZ0aW1lVVRDIiwiZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkIiwiYWRhcHRGb3J3YXJkcyIsImZuIiwiZm10IiwiZCIsImxvY2FsZSIsInVuZGVmaW5lZCIsInN0cmZ0aW1lIiwidGltZXpvbmUiLCJudWxsIiwidXRjU3RyZnRpbWUiLCJEYXRlIiwiY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJ1c2VVdGNUaW1lem9uZSIsIl9sb2NhbGUiLCJfY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJfdXNlVXRjQmFzZWREYXRlIiwiX2NhY2hlZERhdGVUaW1lc3RhbXAiLCJfY2FjaGVkRGF0ZSIsIl9zdHJmdGltZSIsImZvcm1hdCIsImRhdGUiLCJ0aW1lc3RhbXAiLCJjdXJyZW50VGltZXN0YW1wIiwiZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IiLCJfcHJvY2Vzc0Zvcm1hdCIsInJlc3VsdFN0cmluZyIsInBhZGRpbmciLCJpc0luU2NvcGUiLCJsZW5ndGgiLCJleHRlbmRlZFRaIiwiaSIsImN1cnJlbnRDaGFyQ29kZSIsInBhZFRpbGwyIiwiTWF0aCIsImhvdXJzMTIiLCJwYWRUaWxsMyIsIndlZWtOdW1iZXIiLCJ0elN0cmluZyIsInkiLCJkYXkiLCJTdHJpbmciLCJvcmRpbmFsIiwib2ZmIiwic2lnbiIsInNlcCIsImhvdXJzIiwibWlucyIsInVzZVV0Y0Jhc2VkRGF0ZSIsInRpbWV6b25lVHlwZSIsInBhcnNlSW50IiwibWludXRlcyIsIm51bWJlclRvUGFkIiwicGFkZGluZ0NoYXIiLCJob3VyIiwiZmlyc3RXZWVrZGF5Iiwid2Vla2RheSIsImZpcnN0RGF5T2ZZZWFyVXRjIiwiZGF0ZVV0YyIsInlkYXkiLCJ3ZWVrTnVtIiwibnVtYmVyIiwiaWkiLCJmIiwiZXhwb3J0cyIsImRlZmluZSIsImciLCJ3aW5kb3ciLCJnbG9iYWwiLCJzZWxmIiwiZSIsInQiLCJuIiwiciIsInMiLCJvIiwidSIsImEiLCJyZXF1aXJlIiwiRXJyb3IiLCJsIiwiY3JlYXRlRWxlbWVudCIsImRpZmYiLCJ1bmRlZiIsIm5hdGl2ZVNwbGl0IiwiY29tcGxpYW50RXhlY05wY2ciLCJzdHIiLCJzZXBhcmF0b3IiLCJsaW1pdCIsIk9iamVjdCIsIm91dHB1dCIsImZsYWdzIiwibGFzdExhc3RJbmRleCIsIlJlZ0V4cCIsInNlcGFyYXRvcjIiLCJtYXRjaCIsImxhc3RJbmRleCIsImxhc3RMZW5ndGgiLCJhcmd1bWVudHMiLCJBcnJheSIsIk9uZVZlcnNpb25Db25zdHJhaW50IiwiTVlfVkVSU0lPTiIsImhhc2hLZXkiLCJFdlN0b3JlIiwiZWxlbSIsImhhc2giLCJyb290IiwiSW5kaXZpZHVhbCIsImtleSIsInZhbHVlIiwiT25lVmVyc2lvbiIsIm1vZHVsZU5hbWUiLCJ2ZXJzaW9uIiwiZGVmYXVsdFZhbHVlIiwiZW5mb3JjZUtleSIsInZlcnNpb25WYWx1ZSIsInRvcExldmVsIiwibWluRG9jIiwiZG9jdW1lbnQiLCJkb2NjeSIsImRvbVdhbGsiLCJDb21tZW50IiwiRE9NVGV4dCIsIkRPTUVsZW1lbnQiLCJEb2N1bWVudEZyYWdtZW50IiwiRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJEb2N1bWVudCIsInByb3RvIiwidGFnTmFtZSIsIm5zIiwiZmFtaWx5IiwiZGF0YSIsImlkIiwicmVzdWx0Iiwibm9kZSIsIm93bmVyIiwic2VyaWFsaXplTm9kZSIsImh0bWxucyIsImNoaWxkIiwibmVlZGxlIiwiaW5kZXgiLCJwcmVmaXgiLCJsb2NhbE5hbWUiLCJjb2xvblBvc2l0aW9uIiwiYXR0cmlidXRlcyIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiZWxlbXMiLCJub2RlQ2xhc3NOYW1lIiwibm9kZUNsYXNzZXMiLCJpdGVtIiwiZWxlbWVudCIsImN1cnJlbnQiLCJsZWZ0IiwicmlnaHQiLCJ0eXBlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJsaXN0ZW5lciIsImV2IiwibGlzdGVuZXJzIiwibGlzdCIsInNsaWNlIiwiaXRlcmF0aXZlbHlXYWxrIiwibm9kZXMiLCJjYiIsInJldCIsInZvaWRFbGVtZW50cyIsImVzY2FwZVRleHQiLCJzZXJpYWxpemVFbGVtZW50Iiwic3RyaW5ncyIsInRhZ25hbWUiLCJwcm9wZXJ0aWVzIiwiZGF0YXNldGlmeSIsImlzUHJvcGVydHkiLCJzdHlsaWZ5Iiwic3R5bGVzIiwiYXR0ciIsImMiLCJkcyIsInByb3BzIiwic3RyaW5naWZ5IiwidHVwbGUiLCJlc2NhcGVBdHRyaWJ1dGVWYWx1ZSIsImF0dHJpYnV0ZSIsInByb3AiLCJ4IiwibmF0aXZlSXNBcnJheSIsInRvU3RyaW5nIiwiaXNBcnJheSIsIm9iaiIsInBhdGNoIiwiaXNPYmplY3QiLCJpc0hvb2siLCJhcHBseVByb3BlcnRpZXMiLCJwcmV2aW91cyIsInByb3BOYW1lIiwicHJvcFZhbHVlIiwicmVtb3ZlUHJvcGVydHkiLCJwYXRjaE9iamVjdCIsInByZXZpb3VzVmFsdWUiLCJhdHRyTmFtZSIsImF0dHJWYWx1ZSIsImdldFByb3RvdHlwZSIsInJlcGxhY2VyIiwiayIsImlzVk5vZGUiLCJpc1ZUZXh0IiwiaXNXaWRnZXQiLCJoYW5kbGVUaHVuayIsInZub2RlIiwib3B0cyIsImRvYyIsIndhcm4iLCJjaGlsZHJlbiIsImNoaWxkTm9kZSIsIm5vQ2hpbGQiLCJkb21JbmRleCIsInJvb3ROb2RlIiwidHJlZSIsImluZGljZXMiLCJhc2NlbmRpbmciLCJyZWN1cnNlIiwicm9vdEluZGV4IiwiaW5kZXhJblJhbmdlIiwidkNoaWxkcmVuIiwiY2hpbGROb2RlcyIsInZDaGlsZCIsIm5leHRJbmRleCIsIm1pbkluZGV4IiwibWF4SW5kZXgiLCJjdXJyZW50SW5kZXgiLCJjdXJyZW50SXRlbSIsImIiLCJWUGF0Y2giLCJ1cGRhdGVXaWRnZXQiLCJhcHBseVBhdGNoIiwidnBhdGNoIiwiZG9tTm9kZSIsInJlbmRlck9wdGlvbnMiLCJ2Tm9kZSIsInJlbW92ZU5vZGUiLCJpbnNlcnROb2RlIiwic3RyaW5nUGF0Y2giLCJ3aWRnZXRQYXRjaCIsInZOb2RlUGF0Y2giLCJyZW9yZGVyQ2hpbGRyZW4iLCJyZXBsYWNlUm9vdCIsInBhcmVudE5vZGUiLCJkZXN0cm95V2lkZ2V0IiwibmV3Tm9kZSIsImxlZnRWTm9kZSIsInZUZXh0Iiwid2lkZ2V0IiwidXBkYXRpbmciLCJ3IiwibW92ZXMiLCJrZXlNYXAiLCJyZW1vdmUiLCJpbnNlcnQiLCJqIiwib2xkUm9vdCIsIm5ld1Jvb3QiLCJyZW5kZXIiLCJwYXRjaE9wIiwicGF0Y2hlcyIsInBhdGNoUmVjdXJzaXZlIiwicGF0Y2hJbmRpY2VzIiwib3duZXJEb2N1bWVudCIsIm5vZGVJbmRleCIsInBhdGNoTGlzdCIsIk51bWJlciIsIkF0dHJpYnV0ZUhvb2siLCJwcmV2IiwibmV4dCIsIkV2SG9vayIsInByb3BlcnR5TmFtZSIsImVzIiwiU29mdFNldEhvb2siLCJWTm9kZSIsIlZUZXh0IiwiaXNWVGh1bmsiLCJwYXJzZVRhZyIsInNvZnRTZXRIb29rIiwiZXZIb29rIiwiaCIsInRhZyIsImlzQ2hpbGRyZW4iLCJ0cmFuc2Zvcm1Qcm9wZXJ0aWVzIiwiYWRkQ2hpbGQiLCJpc0NoaWxkIiwiVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50IiwiZXJyIiwiZXJyb3JTdHJpbmciLCJKU09OIiwic3BsaXQiLCJjbGFzc0lkU3BsaXQiLCJub3RDbGFzc0lkIiwibm9JZCIsInRhZ1BhcnRzIiwicGFydCIsIkRFRkFVTFRfTkFNRVNQQUNFIiwiRVZfTkFNRVNQQUNFIiwiWExJTktfTkFNRVNQQUNFIiwiWE1MX05BTUVTUEFDRSIsIlNWR19QUk9QRVJUSUVTIiwiU1ZHQXR0cmlidXRlTmFtZXNwYWNlIiwiYXR0cmlidXRlSG9vayIsIlNWR19OQU1FU1BBQ0UiLCJzdmciLCJpc1RodW5rIiwicmVuZGVyZWRBIiwicmVuZGVyZWRCIiwicmVuZGVyVGh1bmsiLCJ0aHVuayIsInJlbmRlcmVkVGh1bmsiLCJob29rIiwiaXNWaXJ0dWFsTm9kZSIsImlzVmlydHVhbFRleHQiLCJpc1ZIb29rIiwiVmlydHVhbE5vZGUiLCJub1Byb3BlcnRpZXMiLCJub0NoaWxkcmVuIiwiY291bnQiLCJkZXNjZW5kYW50cyIsImhhc1dpZGdldHMiLCJoYXNUaHVua3MiLCJkZXNjZW5kYW50SG9va3MiLCJob29rcyIsInByb3BlcnR5IiwiVmlydHVhbFBhdGNoIiwiVmlydHVhbFRleHQiLCJ0ZXh0IiwiZGlmZlByb3BzIiwiYUtleSIsImFWYWx1ZSIsImJWYWx1ZSIsIm9iamVjdERpZmYiLCJiS2V5Iiwid2FsayIsImFwcGx5IiwiYXBwbHlDbGVhciIsInRodW5rcyIsImNsZWFyU3RhdGUiLCJhcHBlbmRQYXRjaCIsInByb3BzUGF0Y2giLCJkaWZmQ2hpbGRyZW4iLCJhQ2hpbGRyZW4iLCJvcmRlcmVkU2V0IiwicmVvcmRlciIsImJDaGlsZHJlbiIsImFMZW4iLCJiTGVuIiwibGVuIiwibGVmdE5vZGUiLCJyaWdodE5vZGUiLCJ1bmhvb2siLCJkZXN0cm95V2lkZ2V0cyIsInRodW5rUGF0Y2giLCJoYXNQYXRjaGVzIiwidW5kZWZpbmVkS2V5cyIsImJDaGlsZEluZGV4Iiwia2V5SW5kZXgiLCJiS2V5cyIsImJGcmVlIiwiYUNoaWxkSW5kZXgiLCJhS2V5cyIsImFGcmVlIiwibmV3Q2hpbGRyZW4iLCJmcmVlSW5kZXgiLCJmcmVlQ291bnQiLCJkZWxldGVkSXRlbXMiLCJhSXRlbSIsIml0ZW1JbmRleCIsImxhc3RGcmVlSW5kZXgiLCJuZXdJdGVtIiwic2ltdWxhdGUiLCJzaW11bGF0ZUluZGV4IiwicmVtb3ZlcyIsImluc2VydHMiLCJzaW11bGF0ZUl0ZW0iLCJ3YW50ZWRJdGVtIiwiYXJyIiwia2V5cyIsImZyZWUiLCJ2ZG9tIiwiVmRvbVRodW5rIiwiYXJncyIsIkdlbmVyaWNIb29rIiwiaW5pdCIsInVwZGF0ZSIsImRlc3Ryb3kiLCJleHRyYSIsImhvb2tfc3RhdGVfa2V5IiwiU3ltYm9sIiwic3RhdGUiLCJmcm9tIiwidG8iLCJCYXNlX2FtX3Rlc3RpbmciLCJCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4biIsIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIiwiY2FtbF9pc19jb250aW51YXRpb25fdGFnIiwiY2FtbF9tdWwiLCJjYW1sX2hhc2hfbWl4X2ludCIsImNhbWxfaGFzaF9taXhfanNieXRlcyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50NjRfb2Zmc2V0IiwiY2FtbF9yYWlzZV9jb25zdGFudCIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsIm9mZnNldCIsIm1vZHVsdXMiLCJkaXZpc29yIiwicXVvdGllbnQiLCJxIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwiZXhwIiwicjMiLCJyMiIsInIxIiwiY2FtbF9pbnQ2NF9sbzMyIiwidiIsImNhbWxfaW50NjRfaGkzMiIsImNhbWxfaGFzaF9taXhfaW50NjQiLCJjYW1sX2hhc2hfbWl4X2Zsb2F0IiwidjAiLCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIiwiY2FtbF9oYXNoX21peF9zdHJpbmciLCJjYW1sX2hhc2hfbWl4X2J5dGVzX2FyciIsImNhbWxfc3RyX3JlcGVhdCIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMiLCJqc29vX2lzX2FzY2lpIiwiY2FtbF91dGYxNl9vZl91dGY4IiwiYzEiLCJjMiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImNvbnRlbnQiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IiwiZmxvYXQzMmEiLCJGbG9hdDMyQXJyYXkiLCJpbnQzMmEiLCJJbnQzMkFycmF5IiwiY2FtbF9pbnQ2NF90b19ieXRlcyIsImNhbWxfYmFfc2VyaWFsaXplIiwid3JpdGVyIiwiYmEiLCJzeiIsImNvbXBsZXgiLCJqc29vX3N5c19nZXRlbnYiLCJwcm9jZXNzIiwiZ2xvYmFsVGhpcyIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfcmFpc2Vfd2l0aF9hcmciLCJhcmciLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQiLCJraW5kIiwiY2FtbF9iYV9jcmVhdGVfYnVmZmVyIiwic2l6ZSIsInZpZXciLCJGbG9hdDY0QXJyYXkiLCJJbnQ4QXJyYXkiLCJVaW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsInJlcyIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2FycmF5X2JvdW5kX2Vycm9yIiwiY2FtbF9iYV9jdXN0b21fbmFtZSIsIk1sX0JpZ2FycmF5IiwibGF5b3V0IiwiYnVmZmVyIiwib2ZzIiwiaW0iLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX2JhX2Rlc2VyaWFsaXplIiwicmVhZGVyIiwibnVtX2RpbXMiLCJzaXplX2RpbSIsInNpemVfZGltX2hpIiwic2l6ZV9kaW1fbG8iLCJzaXh0eSIsImludDY0IiwiY2FtbF9iYV9jb21wYXJlIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJjYW1sX2ludDMyX3VubWFyc2hhbCIsImNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCIsImNhbWxfaW50NjRfdW5tYXJzaGFsIiwiY2FtbF9pbnQ2NF9tYXJzaGFsIiwic2l6ZXMiLCJjYW1sX2ludDY0X2NvbXBhcmUiLCJjYW1sX2ludDY0X2hhc2giLCJjYW1sX2N1c3RvbV9vcHMiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9pc19tbF9zdHJpbmciLCJjYW1sX2lzX21sX2J5dGVzIiwiY2FtbF9oYXNoIiwic2VlZCIsInF1ZXVlIiwicmQiLCJ3ciIsIm51bSIsImhoIiwiQmFzZV9oYXNoX2RvdWJsZSIsIkJhc2VfaGFzaF9zdHJpbmciLCJCYXNlX2ludF9tYXRoX2ludDMyX2NseiIsIkJhc2VfaW50X21hdGhfaW50MzJfY3R6IiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCIsImNhbWxfaW50NjRfaXNfemVybyIsImNhbWxfaW50NjRfdG9faW50MzIiLCJCYXNlX2ludF9tYXRoX2ludDY0X2NseiIsImNhbWxfaW50NjRfYW5kIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsIkJhc2VfaW50X21hdGhfaW50NjRfY3R6IiwiaXNfemVybyIsImxhbmQiLCJzbWFsbF9pbnQ2NCIsImNhbWxfaW50NjRfbXVsIiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YiIsImJhc2UiLCJleHBvbmVudCIsIm9uZSIsIm11bCIsIkJhc2VfaW50X21hdGhfaW50X2NseiIsIkJhc2VfaW50X21hdGhfaW50X2N0eiIsIkJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50IiwiQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHoiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHoiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmciLCJCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZSIsImNhbWxfY3JlYXRlX2J5dGVzIiwiQmFzZV91bnNhZmVfY3JlYXRlX2xvY2FsX2J5dGVzIiwidl9sZW4iLCJjYW1sX3N0cmluZ19vZl9hcnJheSIsImNhbWxfYmFfZ2V0XzEiLCJpMCIsIkJpZ1N0cmluZ1JlYWRlciIsImJzIiwiY2FtbF91dGY4X29mX3V0ZjE2IiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJwYXRoIiwiZXJybm8iLCJ2YXJpYW50IiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkiLCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiTWxGYWtlRmQiLCJmaWxlIiwiTWxGYWtlRGV2aWNlIiwiY29tcCIsIm5hbWVfc2xhc2giLCJtb2RlIiwicmFpc2VfdW5peCIsInBhcmVudCIsInNlZW4iLCJtIiwiZW50cnkiLCJvayIsImJ5dGVzIiwiTWxGYWtlRmRfb3V0IiwiZmQiLCJzcmMiLCJNbE11dGV4IiwiTWxOYXQiLCJjYW1sX21sX3N0cmluZ19sZW5ndGgiLCJjYW1sX3N0cmluZ191bnNhZmVfZ2V0IiwiY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmciLCJjYW1sX2J5dGVzX2JvdW5kX2Vycm9yIiwiY2FtbF9ieXRlc191bnNhZmVfc2V0IiwiY2FtbF9ieXRlc19zZXQiLCJNbE5vZGVGZCIsImJ1Zl9vZmZzZXQiLCJyZWFkIiwiTWxOb2RlRGV2aWNlIiwiY29uc3RzIiwiaXNDaGFyYWN0ZXJEZXZpY2UiLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJNbE9iamVjdFRhYmxlIiwiTmFpdmVMb29rdXAiLCJvYmpzIiwiTWxTdHJpbmdSZWFkZXIiLCJVSW50OEFycmF5UmVhZGVyIiwiaW5jcl9uYXQiLCJuYXQiLCJjYXJyeV9pbiIsImNhcnJ5IiwiYWRkX25hdCIsIm5hdDEiLCJvZnMxIiwibGVuMSIsIm5hdDIiLCJvZnMyIiwibGVuMiIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfYmFfY3JlYXRlIiwiZGltc19tbCIsImJpZ3N0cmluZ19hbGxvYyIsIl8iLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzIiwiYmExIiwicG9zMSIsImJ5dGVzMiIsInBvczIiLCJiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YiIsInNyY19wb3MiLCJkc3QiLCJkc3RfcG9zIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYSIsInN0cjEiLCJiYTIiLCJiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhIiwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImJpZ3N0cmluZ19ibGl0X3N0dWIiLCJiaWdzdHJpbmdfZGVzdHJveV9zdHViIiwidl9ic3RyIiwiYmlnc3RyaW5nX2ZpbmQiLCJjaHIiLCJiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQiLCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIiLCJ2X3MxIiwidl9zMV9wb3MiLCJ2X3MyIiwidl9zMl9wb3MiLCJiaWdzdHJpbmdfbWVtY21wX3N0dWIiLCJiaWdzdHJpbmdfbWVtbWVtX2J5dGVjb2RlIiwiaGF5c3RhY2siLCJoYXlzdGFja19wb3MiLCJoYXlzdGFja19sZW4iLCJuZWVkbGVfcG9zIiwibmVlZGxlX2xlbiIsImxpbSIsIm1hdGNoZXMiLCJjYW1sX2JhX3NldF8xIiwiYmlnc3RyaW5nX21lbXNldF9zdHViIiwiYmlnc3RyaW5nIiwidl9wb3MiLCJ2X2NoYXIiLCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIiwiYWIiLCJ0YSIsImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSIsImJpZ3N0cmluZ19yZWFsbG9jIiwibmV3X2RhdGEiLCJuZXdfYmlnc3RyaW5nIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImJpZ3N0cmluZ190b190eXBlZF9hcnJheSIsImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyIsInNyY19vZmYiLCJkc3Rfb2ZmIiwiYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmciLCJiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzIiwiYmlnc3RyaW5nYWZfbWVtY2hyIiwiYmFfb2ZmIiwiY2FtbF9pbnRfY29tcGFyZSIsImJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmciLCJiYTFfb2ZmIiwiYmEyX29mZiIsImJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmciLCJzdHJfb2ZmIiwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YiIsImNhbWxfY2hlY2tfYm91bmQiLCJhcnJheSIsImNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nIiwiYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YiIsImJpbl9wcm90X2JsaXRfYnVmX3N0dWIiLCJiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViIiwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YiIsImZsb2F0NjQiLCJmbG9hdDY0X3VpbnQ4IiwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIiLCJibGFrZTJiIiwiQURENjRBQSIsIm8wIiwibzEiLCJBREQ2NEFDIiwiYjAiLCJiMSIsIkIyQl9HRVQzMiIsIkIyQl9HIiwiaXgiLCJpeSIsIngwIiwieDEiLCJ5MCIsInkxIiwieG9yMCIsInhvcjEiLCJCTEFLRTJCX0lWMzIiLCJVaW50MzJBcnJheSIsIlNJR01BOCIsIlNJR01BODIiLCJibGFrZTJiQ29tcHJlc3MiLCJjdHgiLCJsYXN0IiwicGFyYW1ldGVyQmxvY2siLCJibGFrZTJiSW5pdCIsIm91dGxlbiIsImJsYWtlMmJVcGRhdGUiLCJpbnB1dCIsImJsYWtlMmJGaW5hbCIsIm91dCIsImJsaXRfbmF0IiwiY2FtbF9NRDVUcmFuc2Zvcm0iLCJhZGQiLCJ4eCIsImZmIiwiZ2ciLCJjYW1sX01ENUZpbmFsIiwiaW5fYnVmIiwiY2FtbF9NRDVJbml0IiwiQXJyYXlCdWZmZXIiLCJiMzIiLCJiOCIsImNhbWxfTUQ1VXBkYXRlIiwiaW5wdXRfbGVuIiwiaW5wdXRfcG9zIiwibWlzc2luZyIsImNhbWxfYWNvc2hfZmxvYXQiLCJjYW1sX2NhbGxfZ2VuIiwiYXJnc0xlbiIsIm5hcmdzIiwiZXh0cmFfYXJncyIsImNhbWxfYWxsb2NfZHVtbXlfaW5maXgiLCJjYW1sX2FsbG9jX3N0YWNrIiwiaHYiLCJoeCIsImhmIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJwIiwiYXJnczIiLCJjYW1sX2FycmF5X2FwcGVuZCIsImExIiwiYTIiLCJsMSIsImwyIiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9hcnJheV9jb25jYXQiLCJjYW1sX2FycmF5X2ZpbGwiLCJjYW1sX2FycmF5X2dldCIsImNhbWxfYXJyYXlfb2ZfYnl0ZXMiLCJjYW1sX2FycmF5X29mX3N0cmluZyIsImNhbWxfYXJyYXlfc2V0IiwibmV3dmFsIiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2FzaW5oX2Zsb2F0IiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfYXRvbWljX2NhcyIsInJlZiIsImNhbWxfYXRvbWljX2V4Y2hhbmdlIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkIiwiY2FtbF9hdG9taWNfbG9hZCIsImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkIiwiY2FtbF9iYV9ibGl0IiwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0IiwibmV3X2RpbXMiLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfYmFfZGltXzMiLCJjYW1sX2JhX2ZpbGwiLCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX2dldF8zIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfYmFfaW5pdCIsImNhbWxfYmFfa2luZCIsImNhbWxfYmFfbGF5b3V0IiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfcmVzaGFwZSIsInZpbmQiLCJuZXdfZGltIiwiY2FtbF9iYV9zZXRfMiIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9iYV9zbGljZSIsIm51bV9pbmRzIiwic3ViX2RpbXMiLCJjYW1sX2JhX3N1YiIsImNoYW5nZWRfZGltIiwiY2FtbF9iYV90b190eXBlZF9hcnJheSIsImNhbWxfYmFfdWludDhfZ2V0MTYiLCJiMiIsImNhbWxfYmFfdWludDhfZ2V0MzIiLCJiMyIsImI0IiwiY2FtbF9iYV91aW50OF9nZXQ2NCIsImI1IiwiYjYiLCJiNyIsImNhbWxfYmFfdWludDhfc2V0MTYiLCJjYW1sX2JhX3VpbnQ4X3NldDMyIiwiY2FtbF9iYV91aW50OF9zZXQ2NCIsImNhbWxfYmFja3RyYWNlX3N0YXR1cyIsIl91bml0IiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9ibGFrZTJfY3JlYXRlIiwiaGFzaGxlbiIsImNhbWxfYmxha2UyX2ZpbmFsIiwiY2FtbF9ibGFrZTJfdXBkYXRlIiwiY2FtbF9ibGFrZTJfc3RyaW5nIiwiY2FtbF9ibGl0X3N0cmluZyIsImNhbWxfYnN3YXAxNiIsImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIiwiY2FtbF9idWlsZF9zeW1ib2xzIiwic3ltYiIsImNhbWxfYnl0ZXNfY29tcGFyZSIsImNhbWxfYnl0ZXNfZXF1YWwiLCJjYW1sX2J5dGVzX2dldDE2IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJjYW1sX2J5dGVzX2xlc3NlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2J5dGVzX25vdGVxdWFsIiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImNhbWxfYnl0ZXNfc2V0MTYiLCJpMTYiLCJjYW1sX2J5dGVzX3NldDMyIiwiaTMyIiwiY2FtbF9ieXRlc19zZXQ2NCIsImk2NCIsImNhbWxfY2FsbGJhY2siLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9tbF9jaGFubmVsX2dldCIsImNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yIiwiY2hhbmlkIiwiY2hhbiIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20iLCJjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20iLCJjdXN0b20iLCJzd2FwIiwiY2FtbF9jb21wYXJlX3ZhbF90YWciLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfY29tcGFyZSIsImNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4YyIsImNvbnQiLCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjIiwiaHZhbCIsImhleG4iLCJoZWZmIiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9jb3B5c2lnbl9mbG9hdCIsImNhbWxfY29zaF9mbG9hdCIsImZzX25vZGVfc3VwcG9ydGVkIiwibWFrZV9wYXRoX2lzX2Fic29sdXRlIiwicG9zaXgiLCJ3aW4zMiIsInNwbGl0RGV2aWNlUmUiLCJkZXZpY2UiLCJpc1VuYyIsIkJvb2xlYW4iLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsImNhbWxfY3VycmVudF9kaXIiLCJjYW1sX21ha2VfcGF0aCIsImNvbXAwIiwibmNvbXAiLCJjYW1sX2dldF9yb290IiwiY2FtbF9yb290IiwianNvb19tb3VudF9wb2ludCIsInJlc29sdmVfZnNfZGV2aWNlIiwiY2FtbF9jcmVhdGVfZmlsZSIsImNhbWxfY3JlYXRlX3N0cmluZyIsImNhbWxfY3NlbF92YWx1ZSIsInZfY29uZCIsInZfdHJ1ZSIsInZfZmFsc2UiLCJjYW1sX2N1c3RvbV9ldmVudF9pbmRleCIsInpzdGRfZGVjb21wcmVzcyIsInU4IiwidTE2IiwidTMyIiwic2xjIiwiZmlsbCIsImNwdyIsImVjIiwiaW5kIiwibnQiLCJyYiIsInJ6ZmgiLCJkYXQiLCJuMyIsImZsZyIsInNzIiwiY2MiLCJkZiIsImZjZiIsImJ0IiwiZGIiLCJkaSIsImZzYiIsImZzcyIsIndzIiwid2IiLCJtc2IiLCJ2YWwiLCJiaXRzIiwicmZzZSIsIm1hbCIsInRwb3MiLCJhbCIsInByb2JzIiwic3ltIiwiaHQiLCJmcmVxIiwiZHN0YXRlIiwibnN0YXRlIiwiYmIxIiwic3ltcyIsIm5iaXRzIiwiY2J0IiwibXNrIiwibXNrMWZiIiwibXN2Iiwic3ZhbCIsInJidCIsInN5bXBvcyIsInNzdGVwIiwic21hc2siLCJzZiIsIm5iIiwicmh1Iiwid2MiLCJoYiIsImh3IiwicmMiLCJyaSIsIl9hIiwiZWJ0IiwiZmR0IiwiZXBvcyIsImxiIiwic3QxIiwic3QyIiwiYnRyMSIsImJ0cjIiLCJmcG9zIiwiYnl0ZSIsIndlcyIsInd0IiwibWIiLCJ0cyIsInJlbSIsImhidWYiLCJwdiIsImRsbHQiLCJkbWx0IiwiZG9jdCIsImIyYmwiLCJibCIsImxsYiIsImxsYmwiLCJtbGIiLCJtbGJsIiwiZGh1IiwiaHUiLCJlYiIsInN0IiwiYnRyIiwiZGh1NCIsInN6MSIsInN6MiIsInN6MyIsInJ6YiIsImJ0eXBlIiwibGJ0IiwibHNzIiwibGNzIiwiczQiLCJzcGwiLCJodWQiLCJzY20iLCJkdHMiLCJtZCIsInJidWYiLCJfYiIsIm1sdCIsIm9jdCIsImxsdCIsInNwb3MiLCJvdWJ0IiwibHN0Iiwib3N0IiwibXN0IiwibGxjIiwibGJ0ciIsIm1sYyIsIm1idHIiLCJvZmMiLCJvYnRyIiwib2ZwIiwibWwiLCJsbCIsImlkeCIsInN0aW4iLCJjY3QiLCJidWZzIiwib2wiLCJjaGsiLCJibGsiLCJjYW1sX2RlY29tcHJlc3NfaW5wdXQiLCJjYW1sX2RpdiIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19jb21wYXJlX2FuZF9zZXQiLCJjYW1sX2RvbWFpbl9kbHNfZ2V0IiwidW5pdCIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX2RvbWFpbl9pZCIsImNhbWxfbWxfbXV0ZXhfdW5sb2NrIiwiY2FtbF9kb21haW5fbGF0ZXN0X2lkeCIsImNhbWxfZG9tYWluX3NwYXduIiwidGVybV9zeW5jIiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF9lcGhlX2tleV9vZmZzZXQiLCJjYW1sX2VwaGVfdW5zZXRfZGF0YSIsImNhbWxfZXBoZV9zZXRfZGF0YSIsImNhbWxfZXBoZV9ibGl0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9rZXkiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJ3ZWFrIiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJjYW1sX2VwaGVfZ2V0X2RhdGEiLCJjYW1sX29ial9kdXAiLCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSIsImNhbWxfZXBoZV9nZXRfa2V5IiwiY2FtbF9lcGhlX2dldF9rZXlfY29weSIsInoiLCJjYW1sX2VwaGVfc2V0X2tleSIsImNhbWxfZXBoZV91bnNldF9rZXkiLCJjYW1sX2VxdWFsIiwiY2FtbF9lcmZfZmxvYXQiLCJhMyIsImE0IiwiYTUiLCJjYW1sX2VyZmNfZmxvYXQiLCJjYW1sX2V2ZW50bG9nX3BhdXNlIiwiY2FtbF9ldmVudGxvZ19yZXN1bWUiLCJjYW1sX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZXhwbTFfZmxvYXQiLCJjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uIiwiY2FtbF9mb3JtYXRfZXhjZXB0aW9uIiwiYnVja2V0Iiwic3RhcnQiLCJjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImhhbmRsZXIiLCJhdF9leGl0IiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9maW5hbF9yZWdpc3RlciIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNhbWxfZmluYWxfcmVsZWFzZSIsImNhbWxfZmluaXNoX2Zvcm1hdHRpbmciLCJyYXdidWZmZXIiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9mbWFfZmxvYXQiLCJTUExJVCIsIk1JTl9WQUxVRSIsIkVQU0lMT04iLCJDIiwiQSIsIkIiLCJtdWx0aXBseSIsImF0IiwiYWhpIiwiYWxvIiwiYmhpIiwiYmxvIiwiYWRqdXN0Iiwic2NhbGUiLCJ4cyIsInlzIiwienMiLCJ4eSIsImZzIiwiY2FtbF9wYXJzZV9mb3JtYXQiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX2Zvcm1hdF9pbnQiLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9mcmV4cF9mbG9hdCIsIm5lZyIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJ0bXAiLCJjYW1sX2djX2NvbXBhY3Rpb24iLCJjYW1sX2djX2NvdW50ZXJzIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9nY19nZXQiLCJjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQiLCJjYW1sX2djX21ham9yIiwiY2FtbF9nY19tYWpvcl9zbGljZSIsIndvcmsiLCJjYW1sX2djX21pbm9yIiwiY2FtbF9nY19taW5vcl93b3JkcyIsImNhbWxfZ2NfcXVpY2tfc3RhdCIsImNhbWxfZ2Nfc2V0IiwiX2NvbnRyb2wiLCJjYW1sX2djX3N0YXQiLCJjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrIiwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2siLCJjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIiwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UiLCJjYW1sX2dldF9nbG9iYWxfZGF0YSIsImNhbWxfZ2V0X21ham9yX2J1Y2tldCIsImNhbWxfZ2V0X21ham9yX2NyZWRpdCIsImNhbWxfZ2V0X21pbm9yX2ZyZWUiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfZ3JfYXJjX2F1eCIsImN4IiwiY3kiLCJyeSIsInJ4Iiwicm90IiwieFBvcyIsInlQb3MiLCJ4UG9zX3ByZXYiLCJ5UG9zX3ByZXYiLCJzcGFjZSIsImRlbHRhIiwiY2FtbF9ncl9zdGF0ZSIsImNhbWxfZ3Jfc3RhdGVfZ2V0IiwiY2FtbF9ncl9ibGl0X2ltYWdlIiwiaW0yIiwiY2FtbF9ncl9jbGVhcl9ncmFwaCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZ3JfY3JlYXRlX2ltYWdlIiwiY2FtbF9ncl9jdXJyZW50X3giLCJjYW1sX2dyX2N1cnJlbnRfeSIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9ncl9kcmF3X3N0ciIsImR4IiwiY2FtbF9ncl9kcmF3X2NoYXIiLCJjYW1sX2dyX2RyYXdfaW1hZ2UiLCJjYW52YXMiLCJpbWFnZSIsImNhbWxfZ3JfZHJhd19yZWN0IiwiY2FtbF9ncl9kcmF3X3N0cmluZyIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2dyX2ZpbGxfcG9seSIsImFyIiwiY2FtbF9ncl9maWxsX3JlY3QiLCJjYW1sX2dyX2xpbmV0byIsImNhbWxfZ3JfbWFrZV9pbWFnZSIsImNhbWxfZ3JfbW92ZXRvIiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9ncl9zZXRfbGluZV93aWR0aCIsImNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSIsImNhbWxfZ3Jfc2V0X2ZvbnQiLCJjYW1sX2dyX3NldF9jb2xvciIsImNvbG9yIiwiY29udmVydCIsImNfc3RyIiwiY2FtbF9ncl9yZXNpemVfd2luZG93IiwiY2FtbF9ncl9zdGF0ZV9pbml0IiwiY2FtbF9ncl9zdGF0ZV9zZXQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNvbnRleHQiLCJjYW1sX2dyX29wZW5fZ3JhcGgiLCJpbmZvIiwiZ2V0Iiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJ0aXRsZSIsImJvZHkiLCJjYW1sX2dyX29wZW5fc3Vid2luZG93IiwiY2FtbF9ncl9wbG90IiwiY2FtbF9ncl9wb2ludF9jb2xvciIsImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSIsImNhbWxfZ3Jfc2lnaW9faGFuZGxlciIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX2dyX3NpemVfeSIsImNhbWxfZ3Jfc3luY2hyb25pemUiLCJjYW1sX2dyX3RleHRfc2l6ZSIsInR4dCIsImNhbWxfZ3Jfd2FpdF9ldmVudCIsIl9ldmwiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ncmVhdGVydGhhbiIsImNhbWxfaGFzaF9taXhfYmlnc3RyaW5nIiwibnVtX2RpZ2l0c19uYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQiLCJzdHlsZSIsImV4cF9zaWduIiwic2lnbl9zdHIiLCJjc3QiLCJ4X3N0ciIsImNhbWxfaHlwb3RfZmxvYXQiLCJjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUiLCJjYW1sX3JlZmlsbCIsInN0cl9hIiwibnJlYWQiLCJjYW1sX3JhaXNlX2VuZF9vZl9maWxlIiwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSIsInJlYWR2bHEiLCJvdmVyZmxvdyIsIm43IiwiaGVhZGVyX2xlbiIsImRhdGFfbGVuIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIm1hZ2ljIiwiY29tcHJlc3NlZCIsInVuY29tcHJlc3NlZF9kYXRhX2xlbiIsIm51bV9vYmplY3RzIiwiX3NpemVfMzIiLCJfc2l6ZV82NCIsImludGVybl9vYmpfdGFibGUiLCJvYmpfY291bnRlciIsImludGVybl9yZWMiLCJoZWFkZXIiLCJvcHMiLCJleHBlY3RlZF9zaXplIiwib2xkX3BvcyIsImNhbWxfc3RyaW5nX29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZSIsImJsb2NrIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwIiwiY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9pbnQ2NF9ic3dhcCIsImNhbWxfaW50NjRfZGl2IiwiY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSIsImNhbWxfaW50NjRfbmVnIiwiY2FtbF9pbnQ2NF9mb3JtYXQiLCJ3YmFzZSIsImN2dGJsIiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfaW50NjRfeG9yIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9pc19qcyIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9qc19jYWxsIiwiY2FtbF9qc19kZWxldGUiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImNhbWxfanNfZXhwciIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9qc19mcm9tX2Zsb2F0IiwiY2FtbF9qc19mcm9tX3N0cmluZyIsImNhbWxfanNfZnVuX2NhbGwiLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc19nZXQiLCJjYW1sX2pzX2dldF9jb25zb2xlIiwiY2FtbF9qc19odG1sX2VudGl0aWVzIiwiZW50aXR5IiwidGVtcCIsImNhbWxfanNfcmVnZXhwcyIsImNhbWxfanNfaHRtbF9lc2NhcGUiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2pzX21ldGhfY2FsbCIsImNhbWxfanNfbmV3IiwiRiIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9qc19vbl9pZSIsInVhIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjYW1sX2pzX3NldCIsImNhbWxfanNfc3RyaWN0X2VxdWFscyIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwiY2FtbF9qc190b19mbG9hdCIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX2pzX3RvX3N0cmluZyIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9qc192YXIiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJGdW5jdGlvbiIsImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiYXJpdHkiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyIsImNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImNhbWxfb2JqX3RhZyIsImNhbWxfbGF6eV9yZWFkX3Jlc3VsdCIsImNhbWxfb2JqX3VwZGF0ZV90YWciLCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eSIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2xlc3NlcXVhbCIsImNhbWxfbGVzc3RoYW4iLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsImJhY2t0cmsiLCJjYW1sX2xpc3RfbW91bnRfcG9pbnQiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX2xvZzEwX2Zsb2F0IiwiY2FtbF9sb2cxcF9mbG9hdCIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfbmV3X3N0cmluZyIsImNhbWxfbHhtX25leHQiLCJzaGlmdF9sIiwic2hpZnRfciIsIm9yIiwieG9yIiwicm90bCIsInNldCIsIk0iLCJkYWJhIiwicTAiLCJxMSIsImNhbWxfbWFrZV9mbG9hdF92ZWN0IiwiY2FtbF9tYWtlX3ZlY3QiLCJjYW1sX21ha2VfbG9jYWxfdmVjdCIsInZfZWx0IiwiY2FtbF9tYXJzaGFsX2NvbnN0YW50cyIsImNhbWxfbWF5YmVfcHJpbnRfc3RhdHMiLCJjYW1sX21kNV9ieXRlcyIsImNhbWxfbWxfaW5wdXRfYmxvY2siLCJhdmFpbCIsImNhbWxfbWQ1X2NoYW4iLCJ0b3JlYWQiLCJjYW1sX21kNV9zdHJpbmciLCJjYW1sX21lbXByb2ZfZGlzY2FyZCIsImNhbWxfbWVtcHJvZl9zZXQiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfbWxfY2hhbm5lbF9yZWRpcmVjdCIsImNhcHR1cmVkIiwiaW50byIsInRvX3Jlc3RvcmUiLCJuZXdfIiwiY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmUiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZSIsImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0IiwiY2FtbF9zeXNfZmRzIiwiY2FtbF9zeXNfY2xvc2UiLCJjYW1sX21sX2ZsdXNoIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwiY2FtbF9tbF9jb25kaXRpb25fbmV3IiwiY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsIiwiY2FtbF9tbF9jb25kaXRpb25fd2FpdCIsIm11dGV4dCIsImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMiLCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfbWxfZG9tYWluX3NldF9uYW1lIiwiX25hbWUiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX21sX2lucHV0X2JpZ2FycmF5IiwiY2FtbF9tbF9pbnB1dF9jaGFyIiwiY2FtbF9tbF9pbnB1dF9pbnQiLCJjYW1sX21sX2lucHV0X3NjYW5fbGluZSIsInByZXZfbWF4IiwiY2FtbF9tbF9pc19iaW5hcnlfbW9kZSIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX21sX211dGV4X2xvY2siLCJjYW1sX21sX211dGV4X25ldyIsImNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2siLCJjYW1sX3N5c19vcGVuX2Zvcl9ub2RlIiwiZmQyIiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzIiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0IiwiYnVmZmVyZWQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyIsImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QiLCJjYW1sX21sX291dHB1dF90YSIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX291dHB1dF9iaWdhcnJheSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX3Bvc19pbiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9tbF9wb3NfaW5fNjQiLCJjYW1sX3Bvc19vdXQiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX21sX3Bvc19vdXRfNjQiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX2FyZV9hY3RpdmUiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlIiwiY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0IiwiY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQiLCJjYW1sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW5fNjQiLCJjYW1sX3NlZWtfb3V0IiwiY2FtbF9tbF9zZWVrX291dCIsImNhbWxfbWxfc2Vla19vdXRfNjQiLCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSIsImNhbWxfbWxfc2V0X2J1ZmZlcmVkIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQiLCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbCIsImNhbWxfbW9kIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9tb3VudF9hdXRvbG9hZCIsImNhbWxfbGV4X3J1bl9tZW0iLCJtZW0iLCJjdXJyX3BvcyIsImNhbWxfbGV4X3J1bl90YWciLCJjYW1sX25ld19sZXhfZW5naW5lIiwibGV4X21lbSIsImxleF9iYXNlX2NvZGUiLCJsZXhfYmFja3Rya19jb2RlIiwibGV4X2RlZmF1bHRfY29kZSIsImxleF90cmFuc19jb2RlIiwibGV4X2NoZWNrX2NvZGUiLCJsZXhfY29kZSIsInBjX29mZiIsInBzdGF0ZSIsImJhc2VfY29kZSIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiY2FtbF9ub3RlcXVhbCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX29ial9ibG9jayIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfb2JqX2lzX3NoYXJlZCIsImNhbWxfb2JqX21ha2VfZm9yd2FyZCIsImNhbWxfb2JqX3Jhd19maWVsZCIsImNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9vYmpfdHJ1bmNhdGUiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfb2pzX25ld19hcnIiLCJjYW1sX291dF9jaGFubmVsX3Bvc19mZCIsImNhbWxfb3V0cHV0X3ZhbCIsIldyaXRlciIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsIm1lbW8iLCJleGlzdGluZ19vZmZzZXQiLCJleHRlcm5fcmVjIiwic3pfMzJfNjQiLCJoZWFkZXJfcG9zIiwidHlwZV9vZl92IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIiLCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJjbWQiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0Iiwic2hpZnRfcmVjb3ZlciIsInJlZHVjZSIsIlJFQURfVE9LRU4iLCJSQUlTRV9QQVJTRV9FUlJPUiIsIkdST1dfU1RBQ0tTXzEiLCJHUk9XX1NUQUNLU18yIiwiQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04iLCJDQUxMX0VSUk9SX0ZVTkNUSU9OIiwiZW52X3Nfc3RhY2siLCJlbnZfdl9zdGFjayIsImVudl9zeW1iX3N0YXJ0X3N0YWNrIiwiZW52X3N5bWJfZW5kX3N0YWNrIiwiZW52X3N0YWNrc2l6ZSIsImVudl9zdGFja2Jhc2UiLCJlbnZfY3Vycl9jaGFyIiwiZW52X2x2YWwiLCJlbnZfc3ltYl9zdGFydCIsImVudl9zeW1iX2VuZCIsImVudl9hc3AiLCJlbnZfcnVsZV9sZW4iLCJlbnZfcnVsZV9udW1iZXIiLCJlbnZfc3AiLCJlbnZfc3RhdGUiLCJlbnZfZXJyZmxhZyIsInRibF90cmFuc2xfY29uc3QiLCJ0YmxfdHJhbnNsX2Jsb2NrIiwidGJsX2xocyIsInRibF9sZW4iLCJ0YmxfZGVmcmVkIiwidGJsX2Rnb3RvIiwidGJsX3NpbmRleCIsInRibF9yaW5kZXgiLCJ0YmxfZ2luZGV4IiwidGJsX3RhYmxlc2l6ZSIsInRibF90YWJsZSIsInRibF9jaGVjayIsInRibF9uYW1lc19jb25zdCIsInRibF9uYW1lc19ibG9jayIsImxvZyIsInRva2VuX25hbWUiLCJuYW1lcyIsInByaW50X3Rva2VuIiwidG9rIiwidG9rZW4iLCJuMSIsIm4yIiwic3RhdGUxIiwic3AiLCJlcnJmbGFnIiwiYXNwIiwiY2FtbF9wdXJlX2pzX2V4cHIiLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCIsImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZSIsImNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIiwiX2NoYW5uZWwiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiY2FtbF9yb3VuZF9mbG9hdCIsImNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvciIsImNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IiLCJjdXJzb3IiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbCIsImNhbGxiYWNrcyIsImNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlciIsImV2ZW50X25hbWUiLCJldmVudF90YWciLCJldmVudF90eXBlIiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfcnVudGltZV92YXJpYW50IiwiY2FtbF9zZXRfb29faWQiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJvbGRmbGFnIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfc2lnbmJpdF9mbG9hdCIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfc3BhY2V0aW1lX2VuYWJsZWQiLCJjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSIsImNhbWxfc3RyX2luaXRpYWxpemUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2NvbmNhdCIsImNhbWxfc3RyaW5nX2VxdWFsIiwiY2FtbF9zdHJpbmdfZ2V0IiwiY2FtbF9zdHJpbmdfZ2V0MTYiLCJjYW1sX3N0cmluZ19nZXQzMiIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9zdHJpbmdfbGVzc2VxdWFsIiwiY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9zdHJpbmdfc2V0MzIiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9zeXNfY29uc3RfaW50X3NpemUiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCIsIm9zX3R5cGUiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXgiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJjYW1sX3N5c19leGVjdXRhYmxlX25hbWUiLCJjYW1sX3N5c19leGl0IiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX3N5c19nZXRlbnYiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUiLCJjYW1sX3N5c19pc2F0dHkiLCJfY2hhbiIsImNhbWxfc3lzX21rZGlyIiwicGVybSIsImNhbWxfc3lzX21vZGlmeV9hcmd2IiwiY2FtbF9zeXNfcmFuZG9tX3NlZWQiLCJub3ciLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfc3lzX3JlbW92ZSIsImNhbWxfc3lzX3JlbmFtZSIsIm9fcm9vdCIsIm5fcm9vdCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQiLCJjaGlsZF9wcm9jZXNzIiwiY2FtbF9pbml0aWFsX3RpbWUiLCJjYW1sX3N5c190aW1lIiwiY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuIiwiY2FtbF9zeXNfdW5zYWZlX2dldGVudiIsImNhbWxfdGFuaF9mbG9hdCIsImNhbWxfdG9fanNfc3RyaW5nIiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfdW5peF9jbG9zZWRpciIsImRpcl9oYW5kbGUiLCJjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3JlYWRkaXIiLCJjYW1sX3VuaXhfZmluZGZpcnN0IiwicGF0aF9qcyIsImZpcnN0X2VudHJ5IiwiY2FtbF91bml4X2ZpbmRuZXh0IiwiY2FtbF91bml4X2dldHB3dWlkIiwiY2FtbF91bml4X2dldHRpbWVvZmRheSIsImNhbWxfdW5peF9nZXR1aWQiLCJjYW1sX3VuaXhfZ210aW1lIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJjYW1sX3VuaXhfaGFzX3N5bWxpbmsiLCJjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyIsImNhbWxfdW5peF9pc2F0dHkiLCJmaWxlRGVzY3JpcHRvciIsInR0eSIsImNhbWxfdW5peF9sb2NhbHRpbWUiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9sc3RhdCIsImNhbWxfdW5peF9sc3RhdF82NCIsImNhbWxfdW5peF9ta2RpciIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfdW5peF9yZWFkbGluayIsImNhbWxfdW5peF9yZXdpbmRkaXIiLCJuZXdfZGlyX2hhbmRsZSIsImNhbWxfdW5peF9ybWRpciIsImNhbWxfdW5peF9zdGFydHVwIiwiY2FtbF91bml4X3N0YXQiLCJjYW1sX3VuaXhfc3RhdF82NCIsImNhbWxfdW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsImNhbWxfdW5peF90aW1lIiwiY2FtbF91bml4X3VubGluayIsImNhbWxfdW5tb3VudCIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF93ZWFrX3NldCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX3hkZ19kZWZhdWx0cyIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF96c3RkX2luaXRpYWxpemUiLCJjb21wYXJlX2RpZ2l0c19uYXQiLCJjb21wYXJlX25hdCIsImNvbXBhcmVfbmF0X3JlYWwiLCJjb21wbGVtZW50X25hdCIsImNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXQiLCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCIsImNvcmVfZ2NfY29tcGFjdGlvbnMiLCJjb3JlX2djX2hlYXBfY2h1bmtzIiwiY29yZV9nY19oZWFwX3dvcmRzIiwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyIsImNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3JkcyIsImNvcmVfZ2NfbWFqb3Jfd29yZHMiLCJjb3JlX2djX21pbm9yX2NvbGxlY3Rpb25zIiwiY29yZV9nY19taW5vcl93b3JkcyIsImNvcmVfZ2NfcHJvbW90ZWRfd29yZHMiLCJjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrcyIsImNvcmVfZ2NfdG9wX2hlYXBfd29yZHMiLCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9jayIsImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmciLCJyZXMyIiwiY29yZV9tZDVfZmQiLCJpYyIsImNvcmVfdGltZV9uc19mb3JtYXQiLCJ0aW1lIiwiZm9ybWF0anMiLCJqc3RyaW5nIiwiY3JlYXRlX25hdCIsImRlY3JfbmF0IiwiYm9ycm93IiwiZGVzZXJpYWxpemVfbmF0IiwiZGl2X2hlbHBlciIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJ3cmFwIiwic2hpZnRfcmlnaHRfbmF0Iiwic2V0X3RvX3plcm9fbmF0IiwibmF0X29mX2FycmF5IiwibXVsdF9kaWdpdF9uYXQiLCJuYXQzIiwib2ZzMyIsIngyIiwieDMiLCJzdWJfbmF0IiwiZGl2X25hdCIsInF1byIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIiLCJleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0IiwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3QiLCJ2c3Rkb3V0IiwidnN0ZGVyciIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdCIsInZvdXRwdXQiLCJzZXJpYWxpemVfbmF0IiwiaW5pdGlhbGl6ZV9uYXQiLCJpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmciLCJpc19kaWdpdF9pbnQiLCJpc19kaWdpdF9vZGQiLCJpc19kaWdpdF96ZXJvIiwianNfcGVyZm9ybWFuY2UiLCJwZXJmX2hvb2tzIiwiX2UiLCJqc19wcm9mX2NsZWFyX21hcmtzIiwianNfcHJvZl9jbGVhcl9tZWFzdXJlcyIsImpzX3Byb2ZfbWFyayIsImpzX3Byb2ZfbWVhc3VyZSIsImVuZCIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwianNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCIsImxhbmRfZGlnaXRfbmF0IiwibGVuZ3RoX25hdCIsImxvcl9kaWdpdF9uYXQiLCJseG9yX2RpZ2l0X25hdCIsIm11bHRfbmF0IiwibGVuMyIsIm50aF9kaWdpdF9uYXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInJlX21hdGNoIiwicmVfd29yZF9sZXR0ZXJzIiwib3Bjb2RlcyIsImlzX3dvcmRfbGV0dGVyIiwiaW5fYml0c2V0IiwicmVfbWF0Y2hfaW1wbCIsInBhcnRpYWwiLCJwcm9nIiwiY3Bvb2wiLCJub3JtdGFibGUiLCJudW1ncm91cHMiLCJudW1yZWdpc3RlcnMiLCJzdGFydGNoYXJzIiwicGMiLCJxdWl0IiwiZ3JvdXBzIiwicmVfcmVnaXN0ZXIiLCJiYWNrdHJhY2siLCJwdXNoIiwiYWNjZXB0IiwicHJlZml4X21hdGNoIiwib3AiLCJzYXJnIiwidWFyZyIsImdyb3VwIiwicmVfcGFydGlhbF9tYXRjaCIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsInJlX3NlYXJjaF9iYWNrd2FyZCIsInJlX3NlYXJjaF9mb3J3YXJkIiwicmVfc3RyaW5nX21hdGNoIiwic2V0X2RpZ2l0X25hdCIsImRpZ2l0Iiwic2V0X2RpZ2l0X25hdF9uYXRpdmUiLCJzcXVhcmVfbmF0IiwibXNfdG9fbmFubyIsInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybyIsIm1zIiwibXNfaTYzIiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsImZhaWx3aXRoIiwicyIsImludmFsaWRfYXJnIiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0Iiwic3ltYm9sX2NvbmNhdCIsImNoYXJfb2ZfaW50IiwibiIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJzMSIsImwiLCJpIiwiaSQwIiwic3RyaW5nX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInN5bWJvbCIsImwxIiwibDIiLCJoMSIsImgyIiwidGwiLCJoMyIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwib3Blbl9vdXRfZ2VuIiwibW9kZSIsInBlcm0iLCJuYW1lIiwiYyIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwiZmx1c2hfYWxsIiwiYSIsIm91dHB1dF9ieXRlcyIsIm9jIiwib3V0cHV0X3N0cmluZyIsIm91dHB1dCIsIm9mcyIsImxlbiIsIm91dHB1dF9zdWJzdHJpbmciLCJvdXRwdXRfdmFsdWUiLCJjaGFuIiwidiIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsIm9wZW5faW5fZ2VuIiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwiaW5wdXQiLCJpYyIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJvZnMkMCIsImxlbiQwIiwiciIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsInBvcyQwIiwiaGQiLCJhY2N1IiwiYmVnIiwiYWNjdSQwIiwicmVzIiwiY2xvc2VfaW5fbm9lcnIiLCJwcmludF9jaGFyIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2VuZGxpbmUiLCJwcmludF9uZXdsaW5lIiwicHJlcnJfY2hhciIsInByZXJyX3N0cmluZyIsInByZXJyX2J5dGVzIiwicHJlcnJfaW50IiwicHJlcnJfZmxvYXQiLCJwcmVycl9lbmRsaW5lIiwicHJlcnJfbmV3bGluZSIsInJlYWRfbGluZSIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9mbG9hdCIsInJlYWRfZmxvYXRfb3B0Iiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCQwIiwic3RyMiIsInN0cjEiLCJzMiIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJmX3lldF90b19ydW4kMCIsIm9sZF9leGl0JDAiLCJuZXdfZXhpdCIsInN1Y2Nlc3MiLCJkb19kb21haW5fbG9jYWxfYXRfZXhpdCIsImRvX2F0X2V4aXQiLCJleGl0IiwicmV0Y29kZSIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjEiLCJ2MiIsInYxJDAiLCJ2MiQwIiwiY29tcGFyZSIsIm9jYW1sX3ZlcnNpb24iLCJvY2FtbF9yZWxlYXNlIiwiZXhlY3V0YWJsZV9uYW1lIiwib3NfdHlwZSIsImJhY2tlbmRfdHlwZSIsInVuaXgiLCJ3aW4zMiIsImN5Z3dpbiIsIm1heF9hcnJheV9sZW5ndGgiLCJtYXhfZmxvYXRhcnJheV9sZW5ndGgiLCJtYXhfc3RyaW5nX2xlbmd0aCIsImdldGVudl9vcHQiLCJpbnRlcmFjdGl2ZSIsInNldF9zaWduYWwiLCJzaWdfbnVtIiwic2lnX2JlaCIsImNhdGNoX2JyZWFrIiwib24iLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsIm1ha2UiLCJ1aWQiLCJBIiwicHJvdmFibHlfZXF1YWwiLCJCIiwic2V0IiwiaW5jciIsImRlY3IiLCJmb3JjZV9nZW5fbGF6eV9ibG9jayIsIm9ubHlfdmFsIiwiYmxrIiwiY2xvc3VyZSQwIiwicmVzdWx0JDAiLCJjbG9zdXJlIiwicmVzdWx0IiwiZSQwIiwiZm9yY2VfbGF6eV9ibG9jayIsImZvcmNlX2dlbiIsImx6diIsInQiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwibWFwX3ZhbCIsImVtcHR5IiwicmV0dXJuJDAiLCJjb25zIiwibmV4dCIsImFwcGVuZCIsInNlcTEiLCJzZXEyIiwic2VxIiwiZmlsdGVyX21hcCIsInNlcSQwIiwiZmlsdGVyIiwiY29uY2F0IiwiZmxhdF9tYXAiLCJmb2xkX2xlZnQiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiaXRlciIsInVuZm9sZCIsInUiLCJ1JDAiLCJpc19lbXB0eSIsInhzIiwidW5jb25zIiwieHMkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX2luZGV4IiwiZmluZF9tYXAiLCJmaW5kX21hcGkiLCJpdGVyMiIsInlzIiwieXMkMCIsInlzJDEiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXEiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJ4eXMkMCIsIm1hcF9zbmQiLCJ1bnppcCIsImZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCIsImZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAiLCJ6IiwicGFydGl0aW9uX21hcCIsInBhcnRpdGlvbiIsInBlZWwiLCJ4c3MiLCJ0cmFuc3Bvc2UiLCJ0YWlscyIsImhlYWRzIiwicmVtYWluZGVycyIsInhzcyQwIiwidGFpbHMkMCIsImhlYWRzJDAiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQiLCJiaW5kIiwiam9pbiIsIm5vbmUiLCJpc19ub25lIiwiaXNfc29tZSIsIm8wIiwidjAiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsImdldF9vayIsImdldF9lcnJvciIsIm1hcF9lcnJvciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwicjAiLCJyMSIsImUwIiwidG9fb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19zdHJpbmciLCJzZWVkZWRfaGFzaCIsInNlZWQiLCJoYXNoIiwiZXNjYXBlZCIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImMxIiwiYzIiLCJlcnJfbm9fcHJlZCIsImVycl9ub19zdWNjIiwibG9fYm91bmQiLCJoaV9ib3VuZCIsInN1Y2MiLCJwcmVkIiwiaXNfdmFsaWQiLCJvZl9pbnQiLCJpc19jaGFyIiwib2ZfY2hhciIsInRvX2NoYXIiLCJ1bnNhZmVfdG9fY2hhciIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsInV0Zl9kZWNvZGVfaW52YWxpZCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwibCQwIiwibnRoIiwibCQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwibGFzdCIsImkkMSIsInIyIiwiZmxhdHRlbiIsImExIiwicjEkMCIsImEyIiwicmV2X21hcCIsImZvbGRfcmlnaHQiLCJiMiIsImIxIiwiYjEkMCIsInJldl9tYXAyIiwiZm9sZF9yaWdodDIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmRfb3B0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJ4JDAiLCJ5ZXMiLCJubyIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwidDEiLCJzdGFibGVfc29ydCIsInNvcnQiLCJ4MiIsIngxIiwidGwkMSIsIngzIiwieDIkMCIsIngxJDAiLCJuMSIsIm4yIiwicmV2X3NvcnQiLCJ0bCQwIiwic29ydF91bmlxIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiY29tcGFyZV9sZW5ndGhzIiwiY29tcGFyZV9sZW5ndGhfd2l0aCIsImF1eCIsInRhaWwiLCJvZl9zZXEiLCJzZXEkMSIsImxvZ25vdCIsImNvcHkiLCJvZl9zdHJpbmciLCJzdWIiLCJzdWJfc3RyaW5nIiwiZXh0ZW5kIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwiZmlsbCIsImJsaXQiLCJvZnMxIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwic2VwIiwic2VwbGVuIiwiZHN0IiwicG9zIiwiaGQkMCIsImNhdCIsImlzX3NwYWNlIiwidHJpbSIsInVuc2FmZV9lc2NhcGUiLCJiJDAiLCJhcHBseTEiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImluZGV4X3JlYyIsImxpbSIsImluZGV4IiwiaW5kZXhfcmVjX29wdCIsImluZGV4X29wdCIsImluZGV4X2Zyb20iLCJpbmRleF9mcm9tX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXgiLCJyaW5kZXhfZnJvbSIsInJpbmRleF9yZWNfb3B0IiwicmluZGV4X29wdCIsInJpbmRleF9mcm9tX29wdCIsImNvbnRhaW5zX2Zyb20iLCJjb250YWlucyIsInJjb250YWluc19mcm9tIiwic3BsaXRfb25fY2hhciIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsInNldF91aW50OCIsInNldF91aW50MTZfbmUiLCJkZWNfaW52YWxpZCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwidXRmXzhfdWNoYXJfNCIsImIzIiwiZ2V0X3V0Zl84X3VjaGFyIiwiYjEkNCIsImIyJDMiLCJpJDQiLCJiMSQyIiwiaSQ1IiwiYjIkMSIsImkkNiIsImIzJDEiLCJpJDEwIiwiaSQxMSIsImkkMTIiLCJpJDciLCJiMSQxIiwiaSQ4IiwiYjIkMCIsImkkOSIsImIzJDAiLCJpJDEzIiwiYjEkNSIsImkkMTQiLCJiMiQ0IiwiaSQyIiwiYjEkMyIsImkkMyIsImIyJDIiLCJpJDE1Iiwic2V0X3V0Zl84X3VjaGFyIiwibGFzdCQxIiwibGFzdCQwIiwiaXNfdmFsaWRfdXRmXzgiLCJsYXN0JDMiLCJsYXN0JDIiLCJsYXN0JDQiLCJsYXN0JDUiLCJnZXRfdXRmXzE2YmVfdWNoYXIiLCJoaSIsImxvIiwic2V0X3V0Zl8xNmJlX3VjaGFyIiwidSQxIiwiaXNfdmFsaWRfdXRmXzE2YmUiLCJnZXRfdXRmXzE2bGVfdWNoYXIiLCJzZXRfdXRmXzE2bGVfdWNoYXIiLCJpc192YWxpZF91dGZfMTZsZSIsImJ0cyIsImJvcyIsIm9mX2J5dGVzIiwidG9fYnl0ZXMiLCJnIiwidG9fYnVmZmVyIiwiYnVmZiIsImZsYWdzIiwiZGF0YV9zaXplIiwidG90YWxfc2l6ZSIsImZyb21fYnl0ZXMiLCJmcm9tX3N0cmluZyIsIm1ha2VfbWF0cml4Iiwic3giLCJzeSIsImluaXRfbWF0cml4Iiwicm93IiwibWFwX2lucGxhY2UiLCJtYXBpX2lucGxhY2UiLCJsYSIsImxiIiwicmVzJDAiLCJsaXN0X2xlbmd0aCIsIm9mX2xpc3QiLCJpbnB1dF9hcnJheSIsImVsdCIsIm91dHB1dF9hcnJheSIsImVsdCQwIiwiYWNjJDIiLCJhMCIsImJpIiwiYWkiLCJuYSIsIm5iIiwibWF4c29uIiwiaTMxIiwiZSQxIiwiaiQwIiwiZmF0aGVyIiwic3JjMW9mcyIsInNyYzFsZW4iLCJzcmMyIiwic3JjMm9mcyIsInNyYzJsZW4iLCJkc3RvZnMiLCJzcmMxciIsInNyYzJyIiwiczIkMSIsInMxJDEiLCJpMSIsImkyIiwiaTIkMCIsImQkMCIsInMyJDAiLCJpMSQwIiwiZCQxIiwiczEkMCIsImlzb3J0dG8iLCJzcmNvZnMiLCJzb3J0dG8iLCJzaHVmZmxlIiwicmFuZCIsInNpZ25hbGluZ19uYW4iLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsImVwc2lsb24iLCJvZl9zdHJpbmdfb3B0IiwiaXNfaW50ZWdlciIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsImhsZW4iLCJzcmMiLCJzb2ZzIiwiZG9mcyIsImgiLCJtZW1faWVlZSIsIm1hcF90b19hcnJheSIsIm1hcF9mcm9tX2FycmF5IiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsIm1pbl9pbnQiLCJtYXhfaW50IiwibWF4X2ludCQwIiwidW5zaWduZWRfdG9faW50IiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9sdCIsInVuc2lnbmVkX2RpdiIsInEiLCJ1bnNpZ25lZF9yZW0iLCJzaXplIiwiZHVtbXlfcG9zIiwiemVyb19wb3MiLCJlbmdpbmUiLCJ0YmwiLCJzdGF0ZSIsIm5ld19lbmdpbmUiLCJmcm9tX2Z1bmN0aW9uIiwicmVhZF9mdW4iLCJ3aXRoX3Bvc2l0aW9ucyIsImF1eF9idWZmZXIiLCJsZXhidWYiLCJyZWFkIiwibmV3bGVuIiwibmV3YnVmIiwiZnJvbV9jaGFubmVsIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJleG4kMCIsImV4biIsImN1cnJfY2hhciIsInRvayIsInBlZWtfdmFsIiwic3ltYm9sX3N0YXJ0X3BvcyIsInN0IiwiZW4iLCJzeW1ib2xfZW5kX3BvcyIsInJoc19zdGFydF9wb3MiLCJyaHNfZW5kX3BvcyIsInN5bWJvbF9zdGFydCIsInN5bWJvbF9lbmQiLCJyaHNfc3RhcnQiLCJyaHNfZW5kIiwiaXNfY3VycmVudF9sb29rYWhlYWQiLCJwYXJzZV9lcnJvciIsImhlaWdodCIsImhsIiwiaCQwIiwiaHIiLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYiLCJscmwiLCJyciIsInJ2IiwicmwiLCJybHIiLCJybHYiLCJybGwiLCJhZGQiLCJzaW5nbGV0b24iLCJhZGRfbWluX2VsZW1lbnQiLCJhZGRfbWF4X2VsZW1lbnQiLCJyaCIsImxoIiwibWluX2VsdCIsIm1pbl9lbHRfb3B0IiwibWF4X2VsdCIsIm1heF9lbHRfb3B0IiwicmVtb3ZlX21pbl9lbHQiLCJyJDAiLCJwcmVzIiwicHJlcyQwIiwicmVtb3ZlIiwidW5pb24iLCJyMiQwIiwiaW50ZXIiLCJzcGxpdF9iaXMiLCJkaXNqb2ludCIsImNvbnNfZW51bSIsImUyJDIiLCJlMSQyIiwiZTIkMCIsImUxJDAiLCJlMiQxIiwiZTEkMSIsInN1YnNldCIsInB2IiwibGYiLCJsdCIsInJmIiwicnQiLCJjYXJkaW5hbCIsImVsZW1lbnRzX2F1eCIsImVsZW1lbnRzIiwiZmluZF9maXJzdCIsInYwJDEiLCJ2MCQwIiwiZmluZF9maXJzdF9vcHQiLCJmaW5kX2xhc3QiLCJmaW5kX2xhc3Rfb3B0IiwidHJ5X2pvaW4iLCJ2JDEiLCJ4MCIsImwkMyIsImwkNCIsIngwJDAiLCJsJDUiLCJ4MCQxIiwibmwiLCJtaWQiLCJsJDIiLCJ4NCIsImFkZF9zZXEiLCJzZXFfb2ZfZW51bSIsInNub2NfZW51bSIsInJldl9zZXFfb2ZfZW51bSIsInRvX3Jldl9zZXEiLCJ0b19zZXFfZnJvbSIsImxvdyIsImxkIiwibHJkIiwicmQiLCJybGQiLCJkYXRhIiwiZDAkMSIsImQwIiwiZDAkMCIsIm1pbl9iaW5kaW5nIiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJyZW1vdmVfbWluX2JpbmRpbmciLCJ1cGRhdGUiLCJkYXRhJDAiLCJhZGRfdG9fbGlzdCIsIm0kMCIsImFkZF9taW5fYmluZGluZyIsImsiLCJhZGRfbWF4X2JpbmRpbmciLCJjb25jYXRfb3Jfam9pbiIsImQxIiwiZDIiLCJkMiQwIiwiZDEkMCIsImQyJDEiLCJkMSQxIiwicHZkIiwiZnZkIiwibTEiLCJtMiIsImJpbmRpbmdzX2F1eCIsImJpbmRpbmdzIiwiYnMiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlX29wdCIsImNlbGwkMCIsInFfcmVzIiwicHJldiIsInByZXYkMCIsInRyYW5zZmVyIiwicTEiLCJxMiIsImNvbnRlbnRzIiwiYnVmZmVyIiwicmVzZXQiLCJpbm5lciIsInJlc2l6ZSIsIm1vcmUiLCJvbGRfcG9zIiwib2xkX2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsInVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCIsInVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXgiLCJhZGRfdXRmXzhfdWNoYXIiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJhZGRfdXRmXzE2bGVfdWNoYXIiLCJhZGRfc3Vic3RyaW5nIiwib2Zmc2V0IiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJhZGRfY2hhbm5lbCIsInRvX3JlYWQkMSIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQwIiwib3BlbmluZyIsImxpbSQwIiwic3RvcCQwIiwiayQyIiwiY2xvc2luZyIsInN0b3AiLCJrJDAiLCJrJDEiLCJuZXh0X2kiLCJpZGVudCIsInRydW5jYXRlIiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJwcm90ZWN0IiwicmVsZWFzZSIsImFjcXVpcmUiLCJ0cnlfYWNxdWlyZSIsInJldCIsImdldF92YWx1ZSIsIm1ha2UkMCIsInJlbGVhc2UkMCIsImFjcXVpcmUkMCIsInRyeV9hY3F1aXJlJDAiLCJjcHVfcmVsYXgiLCJjcmVhdGVfZGxzIiwia2V5X2NvdW50ZXIiLCJwYXJlbnRfa2V5cyIsIm5ld19rZXkiLCJzcGxpdF9mcm9tX3BhcmVudCIsImluaXRfb3JwaGFuIiwiaWR4Iiwia2kiLCJtYXliZV9ncm93Iiwic3oiLCJuZXdfc3oiLCJuZXdfc3QiLCJvbGR2YWwiLCJuZXdfb2JqIiwic3QkMCIsImN1cnZhbCIsInVwZGF0ZWRfb2JqIiwiZ2V0X2lkIiwiZG9tYWluIiwic2VsZiIsImlzX21haW5fZG9tYWluIiwiZmlyc3RfZG9tYWluX3NwYXduZWQiLCJmaXJzdF9zcGF3bl9mdW5jdGlvbiIsImJlZm9yZV9maXJzdF9zcGF3biIsIm9sZF9mIiwibmV3X2YiLCJhdF9leGl0X2tleSIsInNwYXduIiwicGsiLCJ0ZXJtX3N5bmMiLCJib2R5IiwibG9vcCIsImV4IiwicmVjb21tZW5kZWRfZG9tYWluX2NvdW50Iiwic3ViX2Zvcm1hdCIsImZvcm1hdHRpbmdfbGl0IiwiY3JlYXRlX2NoYXJfc2V0IiwiYWRkX2luX2NoYXJfc2V0Iiwic3RyX2luZCIsIm1hc2siLCJmcmVlemVfY2hhcl9zZXQiLCJyZXZfY2hhcl9zZXQiLCJjaGFyX3NldCQwIiwiaXNfaW5fY2hhcl9zZXQiLCJwYWRfb2ZfcGFkX29wdCIsInBhZF9vcHQiLCJ3aWR0aCIsInBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCIsImZtdCIsInBhZF9vcHQkMCIsInBhZF9vcHQkMSIsInBhZF9vcHQkMiIsInBhZF9vcHQkMyIsInBhZF9vcHQkNCIsInByZWNfb3B0IiwicGFkX29wdCQ1IiwibmRlYyIsInBhZF9vcHQkNiIsInBhZF9vcHQkNyIsInBhZF9vcHQkOCIsImRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwib3ZlcmhlYWQiLCJtaW5fbGVuIiwibmV3X3N0ciIsImJ1ZmZlcl9hZGRfY2hhciIsImJ1ZmZlcl9hZGRfc3RyaW5nIiwic3RyX2xlbiIsImJ1ZmZlcl9jb250ZW50cyIsImNoYXJfb2ZfaWNvbnYiLCJjaGFyX29mX2Zjb252IiwiY0YiLCJicHJpbnRfcGFkdHkiLCJwYWR0eSIsImJwcmludF9pZ25vcmVkX2ZsYWciLCJpZ25fZmxhZyIsImJwcmludF9wYWRfb3B0IiwiYnByaW50X3BhZGRpbmciLCJwYWR0eSQwIiwiYnByaW50X3ByZWNpc2lvbiIsImJwcmludF9pY29udl9mbGFnIiwiYnByaW50X2FsdGludF9mbXQiLCJicHJpbnRfZmNvbnZfZmxhZyIsInN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCIsInN0ciQwIiwiYnByaW50X2NoYXJfbGl0ZXJhbCIsImJwcmludF9zdHJpbmdfbGl0ZXJhbCIsImJwcmludF9mbXR0eSIsImZtdHR5JDEiLCJmbXR0eSQyIiwiZm10dHkkMyIsImZtdHR5JDQiLCJmbXR0eSQ1IiwiZm10dHkkNiIsImZtdHR5JDciLCJmbXR0eSQ4IiwiZm10dHkkOSIsInN1Yl9mbXR0eSIsImZtdHR5JDEwIiwic3ViX2ZtdHR5JDAiLCJmbXR0eSQxMSIsImZtdHR5JDEyIiwiZm10dHkkMTMiLCJmbXR0eSQxNCIsImZtdHR5JDE1IiwiaW50X29mX2N1c3RvbV9hcml0eSIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwiZm10JDAiLCJpZ25fZmxhZyQwIiwic3RyJDEiLCJzZXQkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJmbXR0eV9yZWxfZGV0IiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJ0cmFucyIsImpkIiwiZGoiLCJnYSIsImFnIiwiZGUkOSIsImVkJDkiLCJhZiQ5IiwiZmEkOSIsImRlJDEwIiwiZWQkMTAiLCJhZiQxMCIsImZhJDEwIiwiZGUkMTEiLCJlZCQxMSIsImFmJDExIiwiZmEkMTEiLCJkZSQxMiIsImVkJDEyIiwiYWYkMTIiLCJmYSQxMiIsImRlJDEzIiwiZWQkMTMiLCJhZiQxMyIsImZhJDEzIiwicmVzdDEiLCJyZXN0MiIsInJlc3QxJDAiLCJyZXN0MiQwIiwicmVzdDEkMSIsInJlc3QyJDEiLCJyZXN0MSQyIiwicmVzdDIkMiIsInJlc3QxJDMiLCJyZXN0MiQzIiwicmVzdDEkNCIsInJlc3QyJDQiLCJyZXN0MSQ1IiwicmVzdDIkNSIsInJlc3QxJDYiLCJyZXN0MiQ2IiwicmVzdDEkNyIsInR5MSQwIiwicmVzdDIkNyIsInR5MiQwIiwicmVzdDEkOCIsInR5MTIiLCJ0eTExIiwicmVzdDIkOCIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsInJlc3QxJDkiLCJyZXN0MiQ5IiwicmVzdDEkMTAiLCJyZXN0MiQxMCIsInJlc3QxJDExIiwicmVzdDIkMTEiLCJyZXN0MSQxMiIsInJlc3QyJDEyIiwicmVzdDEkMTMiLCJyZXN0MiQxMyIsImZtdHR5X29mX2ZtdCIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJ0eV9yZXN0IiwicHJlY190eSIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsInR5X3Jlc3QkMCIsInByZWNfdHkkMCIsInR5X3Jlc3QkMSIsInByZWNfdHkkMSIsInR5X3Jlc3QkMiIsInByZWNfdHkkMiIsInR5X3Jlc3QkMyIsInByZWNfdHkkMyIsInR5JDAiLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5X29mX2N1c3RvbSIsImFyaXR5JDAiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJmbXR0eV9yZXN0JDAiLCJmbXRfcmVzdCQwIiwiZm10X3Jlc3QkMSIsImZtdHR5X3Jlc3QkMSIsImZtdCQyIiwiZm10X3Jlc3QkMiIsImZtdHR5X3Jlc3QkMiIsImZtdCQzIiwiZm10X3Jlc3QkMyIsImZtdHR5X3Jlc3QkMyIsImZtdCQ0IiwiZm10X3Jlc3QkNCIsImZtdHR5X3Jlc3QkNCIsImZtdCQ1IiwiZm10X3Jlc3QkNSIsImZtdHR5X3Jlc3QkNSIsInByZWMkNCIsImZtdCQ2IiwiZm10X3Jlc3QkNiIsInByZWMkNSIsInBhZCQ5IiwicGFkJDEwIiwiZm10dHlfcmVzdCQ2IiwicHJlYyQ2IiwiZm10JDciLCJmbXRfcmVzdCQ3IiwicHJlYyQ3IiwicGFkJDExIiwicGFkJDEyIiwiZm10dHlfcmVzdCQ3IiwicHJlYyQ4IiwiZm10JDgiLCJmbXRfcmVzdCQ4IiwicGFkJDEzIiwicGFkJDE0IiwiZm10dHlfcmVzdCQ4IiwiZm10JDkiLCJmbXRfcmVzdCQ5IiwiZm10JDEwIiwiZm10X3Jlc3QkMTAiLCJmbXQkMTEiLCJmbXRfcmVzdCQxMSIsImZtdCQxMiIsImZtdHR5X3Jlc3QkOSIsImZtdF9yZXN0JDEyIiwiZm10JDEzIiwiZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eTEiLCJmbXRfcmVzdCQxMyIsInN1Yl9mbXR0eSQxIiwiZm10JDE0IiwiZm10dHlfcmVzdCQxMSIsImZtdF9yZXN0JDE0IiwiZm10JDE1IiwiZm10dHlfcmVzdCQxMiIsImZtdF9yZXN0JDE1IiwiZm10JDE2IiwiZm10X3Jlc3QkMTYiLCJmbXR0eSQxNiIsImZtdCQxNyIsImZtdF9yZXN0JDE3IiwiZm10dHkzIiwiZm10MyIsImZtdDEkMCIsImZtdHR5MiQwIiwiZm10MiQwIiwiZm10dHkzJDAiLCJmbXQzJDAiLCJmbXR0eV9yZXN0JDEzIiwiZm10X3Jlc3QkMTgiLCJmbXR0eSQxNyIsImZtdCQxOCIsImZtdHR5X3Jlc3QkMTQiLCJmbXRfcmVzdCQxOSIsImZtdHR5JDE4IiwiZm10JDE5IiwiZm10dHlfcmVzdCQxNSIsImZtdF9yZXN0JDIwIiwiZm10dHkkMTkiLCJmbXQkMjAiLCJ0eXBlX2lnbm9yZWRfcGFyYW1fb25lIiwic3ViX2ZtdHR5JDIiLCJzdWJfZm10dHkkMyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsImZtdHR5JDIxIiwiZm10JDIyIiwic3ViX2ZtdHR5JDQiLCJmbXR0eV9yZXN0JDE2IiwiZm10dHkkMjAiLCJmbXQkMjEiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkNSIsInN1Yl9mbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDE0Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTYiLCJzdWIyX2ZtdHR5JDEiLCJzdWIxX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTciLCJzdWIyX2ZtdHR5JDIiLCJzdWIxX2ZtdHR5JDAiLCJzdWJfZm10dHlfcmVzdCQxOCIsInN1Yl9mbXR0eV9yZXN0JDE5Iiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJzdWJfZm10dHlfcmVzdCQyMSIsInN1Yl9mbXR0eV9yZXN0JDIyIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJzdWJfZm10dHlfcmVzdCQyNCIsInN1Yl9mbXR0eV9yZXN0JDI1Iiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImthY2MiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwieCQxIiwieCQyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwieCQ3IiwieCQ4IiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJ4JDkiLCJ4JDEwIiwieCQxMSIsIngkMTIiLCJ4JDEzIiwieCQxNCIsIngkMTUiLCJ4JDE2Iiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJ4JDE3IiwicmVzdCQyNiIsIngkMTgiLCJyZXN0JDI3IiwieCQxOSIsInJlc3QkMjgiLCJyZXN0JDI5IiwiZm5fb2ZfY3VzdG9tX2FyaXR5JDAiLCJmbl9vZl9jdXN0b21fYXJpdHkiLCJvdXRwdXRfYWNjIiwicCQzIiwicCQ0IiwicCQ1IiwicCQyIiwiYnVmcHV0X2FjYyIsInN0cnB1dF9hY2MiLCJmYWlsd2l0aF9tZXNzYWdlIiwib3Blbl9ib3hfb2Zfc3RyaW5nIiwiaW52YWxpZF9ib3giLCJwYXJzZV9zcGFjZXMiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInBhcnNlIiwibGl0X3N0YXJ0IiwiZW5kX2luZCIsImFkZF9saXRlcmFsIiwic3RyX2luZCQxIiwic3RyX2luZCQyIiwicGFyc2VfZmxhZ3MiLCJzdHJfaW5kJDAiLCJwYXJzZV90YWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kXzEiLCJwYXJzZV9pbnRlZ2VyIiwic3RyX2luZF8yIiwic3RyX2luZF8zIiwiZm9ybWF0dGluZ19saXQkMCIsIm5leHRfaW5kIiwic3RyX2luZF80Iiwic3RyX2luZF81Iiwic3RyX2luZCQ0Iiwic3RyX2luZF8xJDAiLCJzdHJfaW5kXzIkMCIsInN0cl9pbmRfMyQwIiwicyQxIiwiZm9ybWF0dGluZ19saXQkMSIsIm5leHRfaW5kJDAiLCJwY3RfaW5kIiwibWludXMiLCJwbHVzIiwic3BhY2UiLCJzZXRfZmxhZyIsInN0cl9pbmQkNSIsInNwYWNlJDAiLCJoYXNoJDAiLCJwbHVzJDAiLCJtaW51cyQwIiwiemVybyQwIiwiaW5jb21wYXRpYmxlX2ZsYWciLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJwYXJzZV9jb252IiwicGFkcHJlYyIsInBsdXNfdXNlZCIsImhhc2hfdXNlZCIsInNwYWNlX3VzZWQiLCJpZ25fdXNlZCIsInBhZF91c2VkIiwicHJlY191c2VkIiwiZ2V0X3BsdXMiLCJnZXRfaGFzaCIsImdldF9zcGFjZSIsImdldF9pZ24iLCJnZXRfcGFkIiwiZ2V0X3ByZWMiLCJnZXRfcGFkcHJlYyIsImdldF9pbnRfcGFkIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJmbXRfcmVzdCQyNSIsInN1Yl9lbmQkMCIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImNvbXB1dGVfaW50X2NvbnYiLCJpZ25vcmVkJDgiLCJzcGFjZSQxIiwiaGFzaCQxIiwicGx1cyQyIiwia2luZCIsImlnbm9yZWQkNCIsImlnbm9yZWQiLCJpZ25vcmVkJDAiLCJpZ25vcmVkJDEiLCJwbHVzJDEiLCJpZ24kMCIsImlzX29wZW5fdGFnIiwiaW5kIiwic3ViX3N0ciIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImYkMCIsImludmFsaWRfc3RhdGVfZGVzY3JpcHRpb24iLCJuZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIiwibmVnYXRpdmVfY2FwYWNpdHlfcmVxdWVzdGVkIiwibWlzc2luZ19lbGVtZW50IiwidW5leHBlY3RlZF9lbXB0eV9lbGVtZW50IiwiY2hlY2tfc2FtZV9sZW5ndGgiLCJsZW5ndGhfYSIsImNoZWNrX3ZhbGlkX2xlbmd0aCIsImFyciIsImNhcGFjaXR5IiwidW5zYWZlX2dldCIsImdldF9sYXN0IiwicG9wX2xhc3QiLCJwb3BfbGFzdF9vcHQiLCJyZW1vdmVfbGFzdCIsImVuc3VyZV9jYXBhY2l0eSIsImNhcGFjaXR5X3JlcXVlc3QiLCJjdXJfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJuZXdfYXJyIiwiZW5zdXJlX2V4dHJhX2NhcGFjaXR5IiwiZXh0cmFfY2FwYWNpdHlfcmVxdWVzdCIsImZpdF9jYXBhY2l0eSIsInNldF9jYXBhY2l0eSIsImFkZF9sYXN0X2lmX3Jvb20iLCJlbGVtIiwiYWRkX2xhc3QiLCJhcHBlbmRfbGlzdCIsImxpIiwibGkkMCIsImFwcGVuZF9pdGVyIiwiYXBwZW5kX3NlcSIsImFwcGVuZF9hcnJheV9pZl9yb29tIiwibGVuZ3RoX2IiLCJhcHBlbmRfYXJyYXkiLCJhcHBlbmRfaWZfcm9vbSIsImFycl9hIiwiYXJyX2IiLCJpdGVyJDAiLCJvZl9hcnJheSIsInRvX2FycmF5IiwidG9fc2VxX3JlZW50cmFudCIsInRvX3NlcV9yZXYiLCJ0b19zZXFfcmV2X3JlZW50cmFudCIsImFzc29jMyIsInkyIiwieTEiLCJtYWtlX3N5bWxpc3QiLCJoZWxwX2FjdGlvbiIsImFkZF9oZWxwIiwic3BlY2xpc3QiLCJhZGQxIiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJjdXJyZW50IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwib3B0IiwiZm9sbG93JDAiLCJrZXl3b3JkIiwiZm9sbG93JDIiLCJub19hcmciLCJnZXRfYXJnIiwiY29uc3VtZV9hcmciLCJ0cmVhdF9hY3Rpb24iLCJub19hcmckMCIsImdldF9hcmckMCIsImNvbnN1bWVfYXJnJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJhcmckMSIsInIkMiIsImFyZyQyIiwiZiQzIiwiYXJnJDMiLCJyJDMiLCJhcmckNCIsInNwZWNzIiwidHJlYXRfYWN0aW9uJDAiLCJmJDQiLCJhcmckNSIsImYkNSIsImYkNiIsImYkNyIsImFyZyQ2IiwibmV3YXJnIiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMiLCJwYXJzZV9hcmd2X2R5bmFtaWMiLCJjdXJyZW50JDAiLCJwYXJzZV9hcmd2IiwibXNnJDAiLCJtc2ckMSIsInBhcnNlX2R5bmFtaWMiLCJwYXJzZV9leHBhbmQiLCJzZWNvbmRfd29yZCIsIm1heF9hcmdfbGVuIiwiY3VyIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsInNlZW4iLCJhbGlnbiIsImxpbWl0IiwiY29tcGxldGVkIiwia3NkIiwiY3V0Y29sJDAiLCJzcGFjZXMkMCIsInNwZWMkMCIsImN1dGNvbCIsImt3ZF9sZW4iLCJzcGFjZXMiLCJyZWFkX2F1eCIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsIndvcmQkMCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJsb2NmbXQiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwic3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvIiwiY29uc3RydWN0b3IiLCJmaWVsZHNfb3B0IiwiY29uc3RydWN0b3IkMCIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsInByaW50IiwiZmN0IiwiY2F0Y2gkMCIsInJhd19iYWNrdHJhY2VfZW50cmllcyIsImJ0IiwiY29udmVydF9yYXdfYmFja3RyYWNlIiwiZm9ybWF0X2JhY2t0cmFjZV9zbG90IiwiaW5mbyIsImlzX3JhaXNlIiwibGluZXMiLCJwcmludF9yYXdfYmFja3RyYWNlIiwib3V0Y2hhbiIsInJhd19iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJwcmludF9iYWNrdHJhY2UiLCJyYXdfYmFja3RyYWNlX3RvX3N0cmluZyIsImJhY2t0cmFjZV9zbG90X2lzX3JhaXNlIiwicGFyYW0iLCJiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUiLCJiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiIsImJhY2t0cmFjZV9zbG90X2RlZm5hbWUiLCJiYWNrdHJhY2Vfc2xvdHMiLCJiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IiwiZW50cnkiLCJyYXdfYmFja3RyYWNlX2xlbmd0aCIsImdldF9iYWNrdHJhY2UiLCJyZWdpc3Rlcl9wcmludGVyIiwiZm4iLCJvbGRfcHJpbnRlcnMiLCJuZXdfcHJpbnRlcnMiLCJleG5fc2xvdCIsImV4bl9zbG90X2lkIiwiZXhuX3Nsb3RfbmFtZSIsImVycm9ycyIsImRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbiIsInN0YXR1cyIsInVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwic2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwiZW1wdHlfYmFja3RyYWNlIiwiaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImRlYnVnZ2VyX2luX3VzZSIsImV4biQxIiwicmF3X2JhY2t0cmFjZSQwIiwiY29uc3QkMCIsImNvbXBvc2UiLCJmbGlwIiwibmVnYXRlIiwiZmluYWxseSQwIiwid29yayIsImZpbmFsbHlfbm9fZXhuIiwid29ya19leG4kMCIsIndvcmtfZXhuIiwid29ya19idCIsImV2ZW50bG9nX3BhdXNlIiwiZXZlbnRsb2dfcmVzdW1lIiwicHJpbnRfc3RhdCIsImFsbG9jYXRlZF9ieXRlcyIsIm1hIiwicHJvIiwibWkiLCJkZWxldGVfYWxhcm0iLCJjcmVhdGVfYWxhcm0iLCJudWxsX3RyYWNrZXIiLCJzYW1wbGluZ19yYXRlIiwidHJhY2tlciIsImNhbGxzdGFja19zaXplIiwib3Blbl9iaW4iLCJvcGVuX3RleHQiLCJvcGVuX2dlbiIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiaW5wdXRfYnl0ZSIsImlucHV0X2JpZ2FycmF5IiwicmVhbGx5X2lucHV0X2JpZ2FycmF5IiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQyIiwiYnVmJDAiLCJidWYkMSIsInJlbSIsImlucHV0X2xpbmVzIiwiZm9sZF9saW5lcyIsInNldF9iaW5hcnlfbW9kZSIsImZsdXNoIiwib3V0cHV0X2NoYXIiLCJvdXRwdXRfYnl0ZSIsIm91dHB1dF9iaWdhcnJheSIsImhleF9vZl9zdHJpbmciLCJjaGFyX2hleCIsInN0cmluZ19vZl9oZXgiLCJkaWdpdCIsImhhc2hfbGVuZ3RoIiwic3RyaW5nIiwiYnl0ZXMiLCJzdWJzdHJpbmciLCJzdWJieXRlcyIsImNoYW5uZWwiLCJ0b3JlYWQiLCJidWZfc2l6ZSIsImN0eCIsInRvcmVhZCQwIiwidG9yZWFkJDEiLCJmaWxlbmFtZSIsImRpZ2VzdCIsInRvX2hleCIsIm9mX2hleCIsImtpbmRfc2l6ZV9pbl9ieXRlcyIsImNsb29wIiwiY29sIiwiZmxvb3AiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQwIiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDAiLCJiYSIsImNyZWF0ZSQxIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDEiLCJvZl9hcnJheSQwIiwiY3JlYXRlJDIiLCJkaW0zIiwic2l6ZV9pbl9ieXRlcyQzIiwic2xpY2VfbGVmdF8xIiwic2xpY2VfcmlnaHRfMSIsInNsaWNlX2xlZnRfMiIsInNsaWNlX3JpZ2h0XzIiLCJpbml0JDIiLCJvZl9hcnJheSQxIiwiYXJyYXkwX29mX2dlbmFycmF5IiwiYXJyYXkxX29mX2dlbmFycmF5IiwiYXJyYXkyX29mX2dlbmFycmF5IiwiYXJyYXkzX29mX2dlbmFycmF5IiwicmVzaGFwZV8wIiwicmVzaGFwZV8xIiwicmVzaGFwZV8yIiwicmVzaGFwZV8zIiwic2VyaWFsaXphdGlvbl9wcmVmaXgiLCJpMyIsImk0IiwiaTMkMCIsImk0JDAiLCJtayIsInNlcmlhbGl6YXRpb25fcHJlZml4X2xlbiIsInRvX2JpbmFyeV9zdHJpbmciLCJvZl9iaW5hcnlfc3RyaW5nIiwicmVpbml0IiwibWFrZV9zZWxmX2luaXQiLCJtYXhfaW50MzEiLCJtYXhfaW50MzIiLCJiaXRzIiwiaW50X2F1eCIsImludCQwIiwiYm91bmQiLCJmdWxsX2ludCIsImludF9pbl9yYW5nZV9hdXgiLCJuYml0cyIsInNwYW4iLCJpbnRfaW5fcmFuZ2UiLCJiaXRzMzIiLCJpbnQzMmF1eCIsImludDMyIiwiaW50MzJfaW5fcmFuZ2UiLCJiaXRzNjQiLCJpbnQ2NGF1eCIsImludDY0IiwiaW50NjRfaW5fcmFuZ2UiLCJuYXRpdmViaXRzIiwibmF0aXZlaW50IiwibmF0aXZlaW50X2luX3JhbmdlIiwiZmxvYXQkMCIsImJvb2wiLCJta19kZWZhdWx0IiwicmFuZG9tX2tleSIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludF9pbl9yYW5nZSQwIiwiaW50MzIkMCIsImludDMyX2luX3JhbmdlJDAiLCJuYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9pbl9yYW5nZSQwIiwiaW50NjQkMCIsImludDY0X2luX3JhbmdlJDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0Iiwic2VsZl9pbml0Iiwic3BsaXQkMCIsImdldF9zdGF0ZSIsInNldF9zdGF0ZSIsIm9uZ29pbmdfdHJhdmVyc2FsIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJpc19yYW5kb21pemVkIiwicHJuZ19rZXkiLCJwb3dlcl8yX2Fib3ZlIiwicmFuZG9tIiwiY29weV9idWNrZXRsaXN0Iiwia2V5JDAiLCJuZXh0JDAiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwibmlkeCIsIm1hdGNoJDAiLCJvc2l6ZSIsIm9sZF90cmF2IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0YmxfZGF0YSIsImJ1Y2siLCJidWNrJDAiLCJidWNrJDEiLCJ0b19zZXFfa2V5cyIsInRvX3NlcV92YWx1ZXMiLCJrZXlfaW5kZXgiLCJidWNrZXQiLCJrMSIsIm5leHQxIiwiazIiLCJuZXh0MiIsImszIiwiZDMiLCJuZXh0MyIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImhhc2hfcGFyYW0iLCJyZWJ1aWxkIiwiZ2V0X2NvcHkiLCJhciIsImVtcHR5YnVja2V0IiwiZ2V0X2luZGV4Iiwic3okMCIsInN6JDEiLCJjb3VudF9idWNrZXQiLCJjb3VudCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJidWNrZXQkMCIsImhhc2hlcyIsIm5ld3N6IiwibmV3YnVja2V0JDAiLCJuZXdoYXNoZXMiLCJoYnVja2V0IiwicHJldl9sZW4iLCJsaXZlIiwiaiQyIiwibmV3YnVja2V0Iiwib2xkbGVuIiwibmV3dCIsIm9iIiwib2kiLCJvaCIsIm9pJDAiLCJuaSIsImZpbmRfYXV4IiwiZm91bmQiLCJub3Rmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJ1bmtub3duIiwicHBfZW5xdWV1ZSIsInRva2VuIiwicHBfaW5maW5pdHkiLCJwcF9vdXRwdXRfc3RyaW5nIiwicHBfb3V0cHV0X25ld2xpbmUiLCJmb3JtYXRfcHBfdGV4dCIsInRleHQiLCJmb3JtYXRfc3RyaW5nIiwiYnJlYWtfbmV3X2xpbmUiLCJyZWFsX2luZGVudCIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsInNpemUkMCIsInRhYnMiLCJhZGRfdGFiIiwibHMiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSQwIiwib2ZmJDAiLCJpbnNlcnRpb25fcG9pbnQiLCJ0YWJzJDAiLCJmaXJzdCIsImhlYWQiLCJ0YWIiLCJvZmYkMSIsImluc2VydGlvbl9wb2ludCQwIiwid2lkdGgkMiIsImJveF90eXBlJDEiLCJ0Ym94IiwidGFnX25hbWUkMCIsIm1hcmtlciQwIiwiYWR2YW5jZV9sZWZ0IiwicGVuZGluZ19jb3VudCIsImVucXVldWVfYWR2YW5jZSIsImVucXVldWVfc3RyaW5nX2FzIiwiaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIiwic3RhY2siLCJxdWV1ZV9lbGVtIiwic2V0X3NpemUiLCJsZWZ0X3RvdGFsIiwic2Nhbl9wdXNoIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfc2V0X3ByaW50X3RhZ3MiLCJwcF9zZXRfbWFya190YWdzIiwicHBfZ2V0X3ByaW50X3RhZ3MiLCJwcF9nZXRfbWFya190YWdzIiwicHBfc2V0X3RhZ3MiLCJwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwY3QiLCJwb3QiLCJtY3QiLCJtb3QiLCJwcF9yaW5pdCIsInBwX2ZsdXNoX3F1ZXVlIiwiZW5kX3dpdGhfbmV3bGluZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfcHJpbnRfbm90aGluZyIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2JsYW5rcyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwicHBfbWFyZ2luIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJzdGRidWZfa2V5Iiwic3RyX2Zvcm1hdHRlcl9rZXkiLCJidWZmZXJlZF9vdXRfc3RyaW5nIiwiYnVmZmVyZWRfb3V0X2ZsdXNoIiwic3RkX2J1Zl9rZXkiLCJlcnJfYnVmX2tleSIsInN0ZF9mb3JtYXR0ZXJfa2V5IiwiZXJyX2Zvcm1hdHRlcl9rZXkiLCJnZXRfc3RkX2Zvcm1hdHRlciIsImdldF9lcnJfZm9ybWF0dGVyIiwiZ2V0X3N0cl9mb3JtYXR0ZXIiLCJnZXRfc3RkYnVmIiwiZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciIsImZsdXNoX3N0cl9mb3JtYXR0ZXIiLCJtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIiLCJvdXRwdXQkMCIsImZsdXNoJDAiLCJzeW5jaHJvbml6ZWRfZm9ybWF0dGVyX29mX291dF8iLCJtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwic29iIiwiZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiaXRlbXMiLCJhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0iLCJpdGVtIiwiZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9iIiwib3Blbl9oYm94Iiwib3Blbl92Ym94Iiwib3Blbl9odmJveCIsIm9wZW5faG92Ym94Iiwib3Blbl9ib3giLCJjbG9zZV9ib3giLCJvcGVuX3N0YWciLCJjbG9zZV9zdGFnIiwicHJpbnRfYXMiLCJwcmludF9ib29sIiwicHJpbnRfYnJlYWsiLCJwcmludF9jdXQiLCJwcmludF9zcGFjZSIsImZvcmNlX25ld2xpbmUiLCJwcmludF9mbHVzaCIsInByaW50X2lmX25ld2xpbmUiLCJvcGVuX3Rib3giLCJjbG9zZV90Ym94IiwicHJpbnRfdGJyZWFrIiwic2V0X3RhYiIsInByaW50X3RhYiIsInNldF9tYXJnaW4iLCJnZXRfbWFyZ2luIiwic2V0X21heF9pbmRlbnQiLCJnZXRfbWF4X2luZGVudCIsInNldF9nZW9tZXRyeSIsInNhZmVfc2V0X2dlb21ldHJ5IiwiZ2V0X2dlb21ldHJ5IiwidXBkYXRlX2dlb21ldHJ5Iiwic2V0X21heF9ib3hlcyIsImdldF9tYXhfYm94ZXMiLCJvdmVyX21heF9ib3hlcyIsInNldF9lbGxpcHNpc190ZXh0IiwiZ2V0X2VsbGlwc2lzX3RleHQiLCJzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIiwic2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJzZXRfcHJpbnRfdGFncyIsImdldF9wcmludF90YWdzIiwic2V0X21hcmtfdGFncyIsImdldF9tYXJrX3RhZ3MiLCJzZXRfdGFncyIsInBwX3ByaW50X2l0ZXIiLCJwcF92IiwicHBfc2VwIiwiaXNfZmlyc3QiLCJwcF92JDAiLCJwcF9wcmludF9saXN0IiwicHBfcHJpbnRfYXJyYXkiLCJwcF9wcmludF9zZXEiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0IiwiYnR5IiwicCQ2IiwicCQ3Iiwic2l6ZSQxIiwicCQ4Iiwia2RwcmludGYiLCJkcHJpbnRmIiwia2FzcHJpbnRmIiwiYXNwcmludGYiLCJmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzIiwiZnMiLCJmcyQwIiwibnVsbF9jaGFyIiwibmV4dF9jaGFyIiwiaWIiLCJwZWVrX2NoYXIiLCJjaGVja2VkX3BlZWtfY2hhciIsImVuZF9vZl9pbnB1dCIsImJlZ2lubmluZ19vZl9pbnB1dCIsIm5hbWVfb2ZfaW5wdXQiLCJjaGFyX2NvdW50IiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiaW5hbWUiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJvcGVuX2luX2ZpbGUiLCJjbG9zZV9pbiIsImljJDAiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja19jaGFyIiwiY2hlY2tfdGhpc19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwiY29udiIsInRva2VuX2Zsb2F0Iiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIiLCJzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyIsInNjYW5fZGlnaXRfcGx1cyIsImJhc2lzIiwiZGlnaXRwIiwid2lkdGgkMyIsImlzX2JpbmFyeV9kaWdpdCIsImlzX29jdGFsX2RpZ2l0IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5fc2lnbiIsInNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbCIsInNjYW5faW50X2NvbnZlcnNpb24iLCJzY2FuX2ZyYWN0aW9uYWxfcGFydCIsInNjYW5fZXhwb25lbnRfcGFydCIsInNjYW5fZmxvYXQiLCJwcmVjaXNpb24iLCJwcmVjaXNpb24kMCIsImNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIiwibG93ZXJjYXNlIiwic2Nhbl9oZXhfZmxvYXQiLCJ3aWR0aCQ0Iiwid2lkdGgkNSIsIndpZHRoJDYiLCJ3aWR0aCQxMCIsIndpZHRoJDciLCJ3aWR0aCQ4Iiwid2lkdGgkOSIsInNjYW5fY2FtbF9mbG9hdF9yZXN0Iiwid2lkdGhfcHJlY2lzaW9uIiwiZnJhY193aWR0aCIsInNjYW5fY2FtbF9mbG9hdCIsInNjYW5fc3RyaW5nIiwic3RwIiwiaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciIsImNoZWNrX25leHRfY2hhciIsInNjYW5fYmFja3NsYXNoX2NoYXIiLCJjMCIsImdldF9kaWdpdCQwIiwiYzEkMCIsImMyJDAiLCJnZXRfZGlnaXQiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsImZpbmRfc3RvcCIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsIndpZHRoX29mX3BhZF9vcHQiLCJzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IiwiZm10aW5nIiwidGFrZV9mb3JtYXRfcmVhZGVycyQwIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyQwIiwicmVhZGVyIiwibmV3X2siLCJyZWFkZXJzX3Jlc3QiLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyIsIm1ha2Vfc2NhbmYiLCJyZWFkZXJzIiwic2NhbiQwIiwic3RyX3Jlc3QiLCJwYWRfcHJlY19zY2FuZiIsInNjYW4kMSIsInNjYW4kMiIsInNjYW4kMyIsInNjYW4kNCIsImNvbnYkMCIsInNjYW4kNSIsImNvbnYkMSIsInNjYW4kNiIsImNvbnYkMiIsInNjYW4kNyIsInNjYW4kOCIsImZtdGluZ19saXQkMCIsInN0cCQwIiwicyQyIiwic3RyX3Jlc3QkMCIsImFyZ19yZXN0Iiwia3NjYW5mX2dlbiIsImVmIiwiYXJncyQxIiwiZXhjJDAiLCJleGMiLCJhcmdzJDAiLCJrc2NhbmYiLCJrc2NhbmZfb3B0IiwiYnNjYW5mIiwiYnNjYW5mX29wdCIsImtzc2NhbmYiLCJzc2NhbmYiLCJzc2NhbmZfb3B0Iiwic2NhbmYiLCJzY2FuZl9vcHQiLCJic2NhbmZfZm9ybWF0IiwiZm9ybWF0Iiwic3NjYW5mX2Zvcm1hdCIsImZvcm1hdF9mcm9tX3N0cmluZyIsInVuZXNjYXBlZCIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicHVibGljX21ldGhvZF9sYWJlbCIsInRhZyIsImNvbXBhcmUkMCIsImNvbXBhcmUkMSIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZml0X3NpemUiLCJuZXdfdGFibGUiLCJwdWJfbGFiZWxzIiwibWV0aG9kcyIsImFycmF5IiwibmV3X3NpemUiLCJvbGRfc2l6ZSIsIm5ld19idWNrIiwibWV0aG9kX2NvdW50IiwiaW5zdF92YXJfY291bnQiLCJuZXdfbWV0aG9kIiwidGFibGUiLCJnZXRfbWV0aG9kX2xhYmVsIiwibGFiZWwiLCJnZXRfbWV0aG9kX2xhYmVscyIsIm5hbWVzIiwic2V0X21ldGhvZCIsImVsZW1lbnQiLCJnZXRfbWV0aG9kIiwibmFycm93IiwidmFycyIsInZpcnRfbWV0aHMiLCJjb25jcl9tZXRocyIsInZhcnMkMCIsInZpcnRfbWV0aHMkMCIsImNvbmNyX21ldGhzJDAiLCJ2aXJ0X21ldGhfbGFicyIsImNvbmNyX21ldGhfbGFicyIsImxhYiIsInR2YXJzIiwiYnlfbmFtZSIsImJ5X2xhYmVsIiwibWV0IiwiaG0iLCJ3aWRlbiIsInNhdmVkX3ZhcnMiLCJzYXZlZF9oaWRkZW5fbWV0aHMiLCJuZXdfdmFyaWFibGUiLCJuZXdfbWV0aG9kc192YXJpYWJsZXMiLCJtZXRocyIsInZhbHMiLCJtZXRocyQwIiwibm1ldGhzIiwibnZhbHMiLCJnZXRfdmFyaWFibGUiLCJnZXRfdmFyaWFibGVzIiwiYWRkX2luaXRpYWxpemVyIiwiY3JlYXRlX3RhYmxlIiwicHVibGljX21ldGhvZHMiLCJ0YWdzIiwiaW5pdF9jbGFzcyIsImluaGVyaXRzIiwiY2xhIiwic3VwZXIkMCIsIm5tIiwibWFrZV9jbGFzcyIsInB1Yl9tZXRocyIsImNsYXNzX2luaXQiLCJlbnZfaW5pdCIsIm1ha2VfY2xhc3Nfc3RvcmUiLCJpbml0X3RhYmxlIiwiZHVtbXlfY2xhc3MiLCJsb2MiLCJ1bmRlZiIsImNyZWF0ZV9vYmplY3QiLCJvYmoiLCJjcmVhdGVfb2JqZWN0X29wdCIsIm9ial8wIiwiaXRlcl9mIiwicnVuX2luaXRpYWxpemVycyIsImluaXRzIiwicnVuX2luaXRpYWxpemVyc19vcHQiLCJjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGkiLCJnZXRfZGF0YSIsImJ1aWxkX3BhdGgiLCJrZXlzIiwibG9va3VwX3RhYmxlcyIsInJvb3QiLCJyb290X2RhdGEiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwidGFibGVzX2RhdGEiLCJuZXdfY2FjaGUiLCJzZXRfbWV0aG9kcyIsImNsbyIsIngkMjAiLCJjbG8kMCIsIm4kMzgiLCJlJDEwIiwibiQzNyIsIm4kMzYiLCJuJDIiLCJuJDM1IiwiZiQyMCIsIm4kMyIsImYkMTkiLCJuJDM0IiwibiQ0IiwiZiQxOCIsImUkOSIsIm4kMzMiLCJuJDUiLCJmJDE3IiwibiQzMiIsImYkMTYiLCJ5JDAiLCJuJDYiLCJmJDE1IiwibiQzMSIsIm4kNyIsImYkMTQiLCJlJDgiLCJuJDMwIiwibiQ4IiwiZiQxMyIsIm4kMjkiLCJuJDkiLCJmJDEyIiwibiQyOCIsImYkOCIsImUkMiIsIm4kMTAiLCJmJDExIiwiZSQ3IiwibiQyNyIsImYkOSIsIm4kMTEiLCJmJDEwIiwibiQyNiIsIm4kMTIiLCJuJDI1IiwibiQxMyIsIm4kMjQiLCJtJDEyIiwibiQxNCIsImUkMyIsIm4kMjMiLCJlJDYiLCJtJDExIiwibiQxNSIsIm0kMSIsIm4kMjIiLCJtJDEwIiwibSQyIiwibSQ5IiwibSQzIiwibiQxNiIsIm0kOCIsIm4kMjEiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ3IiwiZSQ1IiwibiQyMCIsIm0kNSIsIm4kMTgiLCJtJDYiLCJuJDE5IiwiaW5pdF9tb2RfYmxvY2siLCJjb21wcyQwIiwibW9kdSIsInNoYXBlIiwiZm4kMCIsImNvbXBzIiwiaW5pdF9tb2QiLCJ1cGRhdGVfbW9kX2Jsb2NrIiwiY2wiLCJ1cGRhdGVfbW9kIiwicHJuZyIsImhrZXkiLCJjbGVhbiIsImRvX2J1Y2tldCIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJmaW5kX2luX2J1Y2tldCIsImJ1Y2tldF9sZW5ndGhfYWxpdmUiLCJzdGF0c19hbGl2ZSIsInNldF9kYXRhIiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJ0ZXN0X2tleSIsInQkMCIsImdldF9rZXkxIiwic2V0X2tleTEiLCJnZXRfa2V5MiIsInNldF9rZXkyIiwiZ2V0X2RhdGEkMCIsInNldF9kYXRhJDAiLCJtYWtlJDEiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsImVxdWFsJDAiLCJzZWVkZWRfaGFzaCQwIiwibWFrZSQyIiwiYWRkJDAiLCJ0ZXN0X2tleXMiLCJyZW1vdmUkMCIsImZpbmQkMCIsImxlbmd0aCQwIiwiY2xlYXIkMCIsImxlbmd0aCQxIiwiZ2V0X2tleSQwIiwic2V0X2tleSQwIiwiZ2V0X2RhdGEkMSIsInNldF9kYXRhJDEiLCJtYWtlJDMiLCJxdWVyeSQxIiwibWFrZSQ0IiwiYWRkJDEiLCJ0ZXN0X2tleXMkMCIsInJlbW92ZSQxIiwiZmluZCQxIiwibGVuZ3RoJDIiLCJjbGVhciQxIiwibnVsbCQwIiwiY3VycmVudF9kaXJfbmFtZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZXF1b3RlIiwibnVsbCQxIiwiY3VycmVudF9kaXJfbmFtZSQwIiwicGFyZW50X2Rpcl9uYW1lJDAiLCJkaXJfc2VwJDAiLCJudWxsJDIiLCJjdXJyZW50X2Rpcl9uYW1lJDEiLCJwYXJlbnRfZGlyX25hbWUkMSIsImRpcl9zZXAkMSIsImdlbmVyaWNfYmFzZW5hbWUiLCJpc19kaXJfc2VwIiwiZ2VuZXJpY19kaXJuYW1lIiwiaXNfcmVsYXRpdmUiLCJpc19pbXBsaWNpdCIsImNoZWNrX3N1ZmZpeCIsInN1ZmYiLCJjaG9wX3N1ZmZpeF9vcHQiLCJsZW5fZiIsInRlbXBfZGlyX25hbWUiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQwIiwibG9vcCQwIiwibG9vcF9icyIsImFkZF9icyIsInF1b3RlX2NtZF9maWxlbmFtZSIsInF1b3RlX2NvbW1hbmQkMCIsImRyaXZlX2FuZF9wYXRoIiwiZGlybmFtZSQwIiwicGF0aCIsImRyaXZlIiwiZGlyIiwiYmFzZW5hbWUkMCIsImJhc2VuYW1lJDEiLCJkaXJuYW1lJDEiLCJudWxsJDMiLCJjdXJyZW50X2Rpcl9uYW1lJDIiLCJwYXJlbnRfZGlyX25hbWUkMiIsImRpcl9zZXAkMiIsImlzX2Rpcl9zZXAkMSIsImlzX3JlbGF0aXZlJDEiLCJpc19pbXBsaWNpdCQxIiwiY2hlY2tfc3VmZml4JDEiLCJjaG9wX3N1ZmZpeF9vcHQkMSIsInRlbXBfZGlyX25hbWUkMSIsInF1b3RlJDEiLCJxdW90ZV9jb21tYW5kJDEiLCJiYXNlbmFtZSQyIiwiZGlybmFtZSQyIiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiaTAiLCJleHRlbnNpb24iLCJjaG9wX2V4dGVuc2lvbiIsInJlbW92ZV9leHRlbnNpb24iLCJ0ZW1wX2ZpbGVfbmFtZSIsInRlbXBfZGlyIiwicmFuZG9tX3N0YXRlIiwicm5kIiwiY3VycmVudF90ZW1wX2Rpcl9uYW1lIiwic2V0X3RlbXBfZGlyX25hbWUiLCJnZXRfdGVtcF9kaXJfbmFtZSIsInRlbXBfZmlsZSIsIm9wZW5fdGVtcF9maWxlIiwicGVybXMiLCJuZWciLCJjb25qIiwibXVsIiwiZGl2IiwiaW52Iiwibm9ybTIiLCJub3JtIiwicG9sYXIiLCJzcXJ0IiwicSQwIiwidyQwIiwiZXhwIiwibG9nIiwicG93IiwicHJpbnRlciIsImNvbnRpbnVlJDAiLCJkaXNjb250aW51ZSIsImRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIiwibWF0Y2hfd2l0aCIsImNvbXAiLCJoYW5kbGVyIiwiZWZmYyIsImVmZiIsImxhc3RfZmliZXIiLCJ0cnlfd2l0aCIsImZpYmVyIiwiY29udGludWVfZ2VuIiwicmVzdW1lX2Z1biIsImNvbnRpbnVlX3dpdGgiLCJkaXNjb250aW51ZV93aXRoIiwiZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UkMCIsInNleHBfb2ZfdCIsInQiLCJ0X29mX3NleHAiLCJjb21wYXJlIiwiYSQwIiwiYiQwIiwiYSQxIiwiYiQxIiwiYSQyIiwiYiQyIiwiYSIsImIiLCJ5cyIsInkiLCJ4cyIsIngiLCJyZXMiLCJlcXVhbCIsImRlZmF1bHRfaW5kZW50IiwibXVzdF9lc2NhcGUiLCJzdHIiLCJsZW4iLCJpeCQxIiwiaXgiLCJuZXh0IiwibmV4dCQwIiwiaXgkMCIsImVzY2FwZWQiLCJzIiwibiIsImkkMCIsInMkMCIsImkiLCJjIiwiZXNjX3N0ciIsImVzdHIiLCJlbGVuIiwiaW5kZXhfb2ZfbmV3bGluZSIsInN0YXJ0IiwibWFjaF9tYXliZV9lc2Nfc3RyIiwicHBfaHVtX2luZGVudCIsImluZGVudCIsInBwZiIsImluZGV4IiwiaW5kZXgkMCIsIm5leHRfbmV3bGluZSIsImVuZF9wb3MiLCJlbmRfcG9zJDAiLCJuZXh0X2xpbmUiLCJuZXdsaW5lX2luZGV4IiwiaW5kZXgkMSIsImgiLCJ0JDAiLCJoJDAiLCJwcF9tYWNoX2ludGVybmFsIiwibWF5X25lZWRfc3BhY2UiLCJzdHIkMCIsIm5ld19tYXlfbmVlZF9zcGFjZSIsIm5ld19tYXlfbmVlZF9zcGFjZSQwIiwibWF5X25lZWRfc3BhY2UkMCIsIm1heV9uZWVkX3NwYWNlJDEiLCJtYXlfbmVlZF9zcGFjZSQyIiwicHBfaHVtIiwic2V4cCIsInBwX21hY2giLCJzaXplX2xvb3AiLCJhY2MiLCJ2IiwibHN0Iiwic2l6ZSIsInRvX2J1ZmZlcl9odW0iLCJidWYiLCJ0b19idWZmZXJfbWFjaCIsImxvb3AiLCJ0b19idWZmZXJfZ2VuIiwiYWRkX2NoYXIiLCJhZGRfc3RyaW5nIiwiYnVmZmVyIiwidG9fc3RyaW5nX2h1bSIsInRvX3N0cmluZ19tYWNoIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJtZXNzYWdlIiwibmFtZSIsImZpZWxkcyIsImNvbnZfZmllbGRzIiwicmVzdCIsImZzZXhwIiwiZm5hbWUiLCJkb2NfY29tbWVudF90YWciLCJ0eXBlX25hbWVfdGFnIiwiYXNzb2NfdGFnIiwiYXNzb2Nfa2V5X3RhZyIsImFzc29jX3ZhbHVlX3RhZyIsImNvbXBsZXRpb25fc3VnZ2VzdGVkIiwiY29lcmNlIiwidGFnIiwicGFyYW0iLCJrZXkiLCJ2YWx1ZSIsInVuaXRfc2V4cF9ncmFtbWFyIiwic2V4cF90X3NleHBfZ3JhbW1hciIsImVtcHR5X3NleHBfZ3JhbW1hciIsInNleHBfZ3JhbW1hcl93aXRoX3RhZ3MiLCJncmFtbWFyIiwidGFncyIsInNleHBfZ3JhbW1hcl93aXRoX3RhZ19saXN0IiwicmVmX3NleHBfZ3JhbW1hciIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibGlzdF9zZXhwX2dyYW1tYXIiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCIsInJlYWRfb2xkX29wdGlvbl9mb3JtYXQiLCJ3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCIsImxpc3RfbWFwIiwiZiIsImwiLCJzZXhwX29mX3VuaXQiLCJzZXhwX29mX2Jvb2wiLCJzZXhwX29mX3N0cmluZyIsInNleHBfb2ZfYnl0ZXMiLCJieXRlcyIsInNleHBfb2ZfY2hhciIsInNleHBfb2ZfaW50Iiwic2V4cF9vZl9mbG9hdCIsInNleHBfb2ZfaW50MzIiLCJzZXhwX29mX2ludDY0Iiwic2V4cF9vZl9uYXRpdmVpbnQiLCJzZXhwX29mX3JlZiIsInNleHBfb2ZfYSIsInJmIiwic2V4cF9vZl9sYXp5X3QiLCJsdiIsInNleHBfb2Zfb3B0aW9uIiwic2V4cF9vZl9wYWlyIiwic2V4cF9vZl9iIiwic2V4cF9vZl90cmlwbGUiLCJzZXhwX29mX2MiLCJzZXhwX29mX2xpc3QiLCJzZXhwX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwic2V4cF9vZl9oYXNodGJsIiwic2V4cF9vZl9rZXkiLCJzZXhwX29mX3ZhbCIsImh0YmwiLCJjb2xsIiwiayIsInNleHBfb2Zfb3BhcXVlIiwic2V4cF9vZl9mdW4iLCJoYXNoIiwidGhlX2V4bl90YWJsZSIsImFkZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsInNleHBfb2ZfZXhuIiwicHJpbnRleGMiLCJmaW5kX2F1dG8iLCJmb3JfcHJpbnRleGMiLCJleG4iLCJzZXhwX29mX2V4bl9vcHQiLCJleG5fdG9fc3RyaW5nIiwiZSIsInByaW50ZXhjX3ByZWZlcl9zZXhwIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZXhjIiwib2Zfc2V4cF9lcnJvciIsIndoYXQiLCJ1bml0X29mX3NleHAiLCJib29sX29mX3NleHAiLCJzdHJpbmdfb2Zfc2V4cCIsImJ5dGVzX29mX3NleHAiLCJjaGFyX29mX3NleHAiLCJpbnRfb2Zfc2V4cCIsImV4YyQwIiwiZmxvYXRfb2Zfc2V4cCIsImludDMyX29mX3NleHAiLCJpbnQ2NF9vZl9zZXhwIiwibmF0aXZlaW50X29mX3NleHAiLCJyZWZfb2Zfc2V4cCIsImFfb2Zfc2V4cCIsImxhenlfdF9vZl9zZXhwIiwib3B0aW9uX29mX3NleHAiLCJlbCQwIiwiZWwiLCJwYWlyX29mX3NleHAiLCJiX29mX3NleHAiLCJiX3NleHAiLCJhX3NleHAiLCJ0cmlwbGVfb2Zfc2V4cCIsImNfb2Zfc2V4cCIsImNfc2V4cCIsImxpc3Rfb2Zfc2V4cCIsInJldl9sc3QiLCJhcnJheV9vZl9zZXhwIiwiaGFzaHRibF9vZl9zZXhwIiwia2V5X29mX3NleHAiLCJ2YWxfb2Zfc2V4cCIsImFjdCIsInZfc2V4cCIsImtfc2V4cCIsIm9wYXF1ZV9vZl9zZXhwIiwiZnVuX29mX3NleHAiLCJnZXRfZmxjX2Vycm9yIiwiY2hyIiwibGluZSIsImZpbGUiLCJoYW5kbGVyIiwiYXJnIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQiLCJyZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJhYnNlbnQiLCJjb21iaW5lIiwicGFyc2VfdmFsdWVfbWFsZm9ybWVkIiwibWFsZm9ybWVkIiwic3RhdGUiLCJwb3MiLCJwYXJzZV92YWx1ZXMiLCJtYWxmb3JtZWQkMCIsIm90aGVyIiwiY29udiIsImtpbmQiLCJzZXhwJDUiLCJkZWZhdWx0JDAiLCJzZXhwJDQiLCJzZXhwJDAiLCJzZXhwJDEiLCJzZXhwJDIiLCJzZXhwJDMiLCJwYXJzZV9zcGluZV9tYWxmb3JtZWQiLCJleHRyYSIsInNlZW4iLCJzZXhwcyIsInBhcnNlX3NwaW5lX3Nsb3ciLCJzZXhwcyQwIiwic2V4cHMkMiIsInNleHBzJDEiLCJwYXJzZV9yZWNvcmRfc2xvdyIsInVuc2VlbiIsInBhcnNlX3NwaW5lX2Zhc3QiLCJvdGhlcnMiLCJhcmdzIiwiYXRvbSIsInJlY29yZF9vZl9zZXhwcyIsImNhbGxlciIsImNvbnRleHQkMCIsImluZGV4X29mX2ZpZWxkIiwiYWxsb3dfZXh0cmFfZmllbGRzIiwiY3JlYXRlIiwiYWxsb3dfZXh0cmFfZmllbGRzJDAiLCJuYW1lcyIsIm5hbWVzJDAiLCJuYW1lcyQxIiwibWF5YmVfY29udGV4dCIsImNvbnRleHQiLCJyZWNvcmRfb2Zfc2V4cCIsImdsb2JhbGl6ZV9ib29sIiwiYiIsImdsb2JhbGl6ZV9jaGFyIiwiYyIsImdsb2JhbGl6ZV91bml0IiwidSIsImdsb2JhbGl6ZV9hcnJheSIsImEiLCJnbG9iYWxpemVfbGlzdCIsImYiLCJ4cyIsIngiLCJnbG9iYWxpemVfb3B0aW9uIiwiZ2xvYmFsaXplX3Jlc3VsdCIsImdsb2JhbGl6ZV9hIiwiZ2xvYmFsaXplX2IiLCJ0IiwiZ2xvYmFsaXplX3JlZiIsInIiLCJkZXNjZW5kaW5nIiwieSIsIm1heCIsIm1pbiIsIm1heF9pbnQiLCJtaW5faW50IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0IiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImJvb2xfb2Zfc3RyaW5nX29wdCIsImJvb2xfb2Zfc3RyaW5nIiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludF9vcHQiLCJyZWFkX2ludCIsInJlYWRfZmxvYXRfb3B0IiwicmVhZF9mbG9hdCIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwib3Blbl9vdXRfZ2VuIiwiZmx1c2giLCJmbHVzaF9hbGwiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXQiLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X2J5dGUiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF92YWx1ZSIsInNlZWtfb3V0IiwicG9zX291dCIsIm91dF9jaGFubmVsX2xlbmd0aCIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsInNldF9iaW5hcnlfbW9kZV9vdXQiLCJvcGVuX2luIiwib3Blbl9pbl9iaW4iLCJvcGVuX2luX2dlbiIsImlucHV0X2NoYXIiLCJpbnB1dF9saW5lIiwiaW5wdXQiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfYnl0ZSIsImlucHV0X2JpbmFyeV9pbnQiLCJpbnB1dF92YWx1ZSIsInNlZWtfaW4iLCJwb3NfaW4iLCJpbl9jaGFubmVsX2xlbmd0aCIsImNsb3NlX2luIiwiY2xvc2VfaW5fbm9lcnIiLCJzZXRfYmluYXJ5X21vZGVfaW4iLCJzdHJpbmdfb2ZfZm9ybWF0Iiwic3ltYm9sIiwiZXhpdCIsImF0X2V4aXQiLCJ2YWxpZF9mbG9hdF9sZXhlbSIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJkb19hdF9leGl0IiwiZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQiLCJib29sX3RvX2ludCIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJzeW1ib2wkNCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJzeW1ib2wkMTEiLCJhc2NlbmRpbmciLCJtYXgkMCIsIm1pbiQwIiwiYXNjZW5kaW5nJDAiLCJkZXNjZW5kaW5nJDAiLCJtYXgkMSIsIm1pbiQxIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2Iiwic3ltYm9sJDE3IiwiYXNjZW5kaW5nJDEiLCJkZXNjZW5kaW5nJDEiLCJjb21wYXJlIiwiZXF1YWwiLCJtYXgkMiIsIm1pbiQyIiwiYXNjZW5kaW5nJDIiLCJkZXNjZW5kaW5nJDIiLCJtYXgkMyIsIm1pbiQzIiwic3ltYm9sJDE4Iiwic3ltYm9sJDE5Iiwic3ltYm9sJDIwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwic3ltYm9sJDIzIiwiYXNjZW5kaW5nJDMiLCJkZXNjZW5kaW5nJDMiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwibWF4JDQiLCJtaW4kNCIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsInN5bWJvbCQyOSIsImFzY2VuZGluZyQ0IiwiZGVzY2VuZGluZyQ0IiwiY29tcGFyZSQxIiwiZXF1YWwkMSIsIm1heCQ1IiwibWluJDUiLCJzeW1ib2wkMzAiLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJhc2NlbmRpbmckNSIsImRlc2NlbmRpbmckNSIsImNvbXBhcmUkMiIsImVxdWFsJDIiLCJtYXgkNiIsIm1pbiQ2IiwiaSIsInN5bWJvbCQzNiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsImFzY2VuZGluZyQ2IiwiZGVzY2VuZGluZyQ2IiwiY29tcGFyZSQzIiwiZXF1YWwkMyIsIm1heCQ3IiwibWluJDciLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJzeW1ib2wkNDciLCJhc2NlbmRpbmckNyIsImRlc2NlbmRpbmckNyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJtYXgkOCIsIm1pbiQ4Iiwic3ltYm9sJDQ4Iiwic3ltYm9sJDQ5Iiwic3ltYm9sJDUwIiwic3ltYm9sJDUxIiwic3ltYm9sJDUyIiwic3ltYm9sJDUzIiwiYXNjZW5kaW5nJDgiLCJkZXNjZW5kaW5nJDgiLCJjb21wYXJlJDUiLCJlcXVhbCQ1IiwibWF4JDkiLCJtaW4kOSIsInN5bWJvbCQ1NCIsInN5bWJvbCQ1NSIsInN5bWJvbCQ1NiIsInN5bWJvbCQ1NyIsInN5bWJvbCQ1OCIsInN5bWJvbCQ1OSIsImFzY2VuZGluZyQ5IiwiZGVzY2VuZGluZyQ5IiwiY29tcGFyZSQ2IiwiZXF1YWwkNiIsIm1heCQxMCIsIm1pbiQxMCIsInN5bWJvbCQ2MCIsInN5bWJvbF9jb25jYXQkMCIsInN5bWJvbCQ2MSIsInN5bWJvbCQ2MiIsImFzciIsImxhbmQiLCJsbm90JDAiLCJsb3IiLCJsc2wiLCJsc3IiLCJseG9yIiwibW9kIiwiYWJzJDAiLCJmYWlsd2l0aCQwIiwiZnN0IiwiaW52YWxpZF9hcmckMCIsInNuZCIsInBoeXNfZXF1YWwiLCJmbG9hdF9vZl9zdHJpbmciLCJhbV90ZXN0aW5nIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwib2Zfc3RyaW5nX29wdCIsInRvX2Zsb2F0Iiwib2ZfZmxvYXQiLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJzdWNjIiwicHJlZCIsImZhaWx3aXRoZiIsImZtdCIsInMiLCJpbnZhbGlkX2FyZ2YiLCJiYWNrZW5kX3R5cGUiLCJpbnRlcmFjdGl2ZSIsIm9zX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJ3b3JkX3NpemVfaW5fYml0cyIsImludF9zaXplX2luX2JpdHMiLCJiaWdfZW5kaWFuIiwibWF4X3N0cmluZ19sZW5ndGgiLCJtYXhfYXJyYXlfbGVuZ3RoIiwicnVudGltZV92YXJpYW50IiwicnVudGltZV9wYXJhbWV0ZXJzIiwiYXJndiIsImdldF9hcmd2Iiwib2NhbWxfdmVyc2lvbiIsImVuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwicnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiZ2V0ZW52X2V4biIsInZhciQwIiwiZ2V0ZW52IiwibWF4X2xlbmd0aCIsImNyZWF0ZSIsImxlbiIsImNyZWF0ZV9sb2NhbCIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiYXBwZW5kIiwiYmxpdCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiaW5pdCIsInJlcyIsIm1ha2VfbWF0cml4Iiwib2ZfbGlzdCIsInN1YiIsInRvX2xpc3QiLCJmb2xkIiwiZm9sZF9yaWdodCIsIml0ZXIiLCJpdGVyaSIsIm1hcCIsIm1hcGkiLCJzdGFibGVfc29ydCIsInN3YXAiLCJqIiwiZWx0X2kiLCJlbHRfaiIsImVzY2FwZWQiLCJsb3dlcmNhc2UiLCJ0b19pbnQiLCJ1bnNhZmVfb2ZfaW50IiwidXBwZXJjYXNlIiwiaW50X2lzX29rIiwib2ZfaW50Iiwib2ZfaW50X2V4biIsInQxIiwidDIiLCJoZF9leG4iLCJsZW5ndGgiLCJyZXZfYXBwZW5kIiwidGxfZXhuIiwidW56aXAiLCJleGlzdHMiLCJ0JDAiLCJleGlzdHMyX29rIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwibDIkMSIsImEyIiwibDEkMSIsImExIiwiaW5pdCQwIiwibCIsImluaXQkMSIsImZvbGQyX29rIiwiZm9yX2FsbCIsImZvcl9hbGwyX29rIiwiaXRlcjJfb2siLCJub250YWlsX21hcCIsIm5vbnRhaWxfbWFwaSIsInBhcnRpdGlvbiIsInJldl9tYXAiLCJsJDAiLCJhY2N1IiwicmV2X21hcDJfb2siLCJhY2N1JDAiLCJzb3J0IiwicmV2IiwicmVzdCIsImZvbGRfcmlnaHQyX29rIiwiaGFzaF9mb2xkX3VuaXQiLCJoYXNoX2ZvbGRfaW50IiwiaGFzaF9mb2xkX2ludDY0IiwiaGFzaF9mb2xkX2Zsb2F0IiwiaGFzaF9mb2xkX3N0cmluZyIsImFzX2ludCIsImhhc2hfZm9sZF9pbnQzMiIsImhhc2hfZm9sZF9jaGFyIiwiaGFzaF9mb2xkX2Jvb2wiLCJoYXNoX2ZvbGRfbmF0aXZlaW50IiwiaGFzaF9mb2xkX29wdGlvbiIsImhhc2hfZm9sZF9lbGVtIiwiaGFzaF9mb2xkX2xpc3QiLCJzJDEiLCJsaXN0JDEiLCJzJDIiLCJsaXN0IiwibGlzdCQwIiwicyQwIiwiaGFzaF9mb2xkX2xhenlfdCIsImhhc2hfZm9sZF9yZWZfZnJvemVuIiwiaGFzaF9mb2xkX2FycmF5X2Zyb3plbiIsImFycmF5IiwiZSIsImkkMCIsImhhc2hfbmF0aXZlaW50IiwiaGFzaF9pbnQ2NCIsImhhc2hfaW50MzIiLCJoYXNoX2NoYXIiLCJoYXNoX2ludCIsImhhc2hfYm9vbCIsImhhc2hfc3RyaW5nIiwiaGFzaF9mbG9hdCIsImhhc2hfdW5pdCIsInNlZWQiLCJvZl9mb2xkIiwiaGFzaF9mb2xkX3QiLCJydW4iLCJmb2xkZXIiLCJjb21wYXJlX3N0YXRlIiwic3RhdGVfdG9fc3RyaW5nIiwic3RhdGUiLCJ0JDEiLCJ0JDIiLCJ0JDMiLCJ0JDQiLCJ0JDUiLCJjb21wYXJlX2Fic3RyYWN0IiwidHlwZV9uYW1lIiwiZXF1YWxfYWJzdHJhY3QiLCJjb21wYXJlX2Jvb2wiLCJjb21wYXJlX2NoYXIiLCJjb21wYXJlX2Zsb2F0IiwiY29tcGFyZV9pbnQiLCJjb21wYXJlX2ludDMyIiwiY29tcGFyZV9pbnQ2NCIsImNvbXBhcmVfbmF0aXZlaW50IiwiY29tcGFyZV9zdHJpbmciLCJjb21wYXJlX3VuaXQiLCJjb21wYXJlX2FycmF5IiwiY29tcGFyZV9lbHQiLCJsZW5fYSIsImxlbl9iIiwicmV0IiwiY29tcGFyZV9saXN0IiwiYSQwIiwiYiQwIiwieXMiLCJjb21wYXJlX29wdGlvbiIsImNvbXBhcmVfcmVmIiwiZXF1YWxfYm9vbCIsImVxdWFsX2NoYXIiLCJlcXVhbF9pbnQiLCJlcXVhbF9pbnQzMiIsImVxdWFsX2ludDY0IiwiZXF1YWxfbmF0aXZlaW50IiwiZXF1YWxfc3RyaW5nIiwiZXF1YWxfdW5pdCIsImVxdWFsX2Zsb2F0IiwiZXF1YWxfYXJyYXkiLCJlcXVhbF9lbHQiLCJlcXVhbF9saXN0IiwiZXF1YWxfb3B0aW9uIiwiZXF1YWxfcmVmIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJhXzAwNSIsImJfMDA2IiwiaHN2IiwiYXJnIiwiYTAiLCJoc3YkMCIsImEwJDAiLCJoc3YkMSIsImhhc2giLCJmdW5jIiwidF9zZXhwX2dyYW1tYXIiLCJpbnZhcmlhbnQiLCJzZXhwX29mX3QiLCJudW1fYml0cyIsIndvcmRfc2l6ZSIsImFsbCIsInJlZ2lzdGVyIiwicCIsInBwIiwibW9kdWxlX25hbWUiLCJmb3JtYXR0ZXIiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwiY3JlYXRlX3MiLCJzZXhwIiwicmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwiZXhuIiwic3RyIiwiZXhuJDAiLCJidCIsInJlcmFpc2VmIiwiZXhjIiwiZm9ybWF0IiwidG9fc3RyaW5nX21hY2giLCJzZXhwX29mX3QkMCIsInByb3RlY3R4IiwiZmluYWxseSQwIiwiZmluYWxfZXhuJDAiLCJmaW5hbF9leG4iLCJwcm90ZWN0IiwiZG9lc19yYWlzZSIsInBwZiIsInByaW50X3dpdGhfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9hdXgiLCJleGMkMCIsImhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCIsImhhbmRsZV91bmNhdWdodCIsIm11c3RfZXhpdCIsImV4aXQkMCIsInJlcmFpc2VfdW5jYXVnaHQiLCJyYWlzZV93aXRob3V0X2JhY2t0cmFjZSIsImluaXRpYWxpemVfbW9kdWxlIiwiY2xlYXJfYmFja3RyYWNlIiwid2l0aF9yZXR1cm4iLCJpc19hbGl2ZSIsInJldHVybiQwIiwid2l0aF9yZXR1cm5fb3B0aW9uIiwicHJlcGVuZCIsInBhcmFtIiwiY29uc3QkMCIsIm5vbiIsImZvcmV2ZXIiLCJlJDAiLCJjb21wb3NlIiwiZyIsImZsaXAiLCJhcHBseV9uX3RpbWVzIiwibiIsIm4kMCIsIngkMCIsIngkMSIsIm4kMSIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCIsImJpbmQiLCJqb2luIiwiaWdub3JlX20iLCJhbGxfdW5pdCIsIm1hcF92aWFfYmluZCIsIm1hIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDEiLCJzeW1ib2xfbWFwJDEiLCJib3RoIiwibG9vcCIsInZzIiwidHMiLCJ2IiwidG9fbW9uYWQiLCJvZl9tb25hZCIsImRlcml2ZWRfbWFwIiwibWFwMiIsInRhIiwidGIiLCJtYXAzIiwidGMiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwidGYiLCJmYWIiLCJtYXAkMCIsImFwcGx5IiwibWYiLCJteCIsInR4IiwiY3VzdG9tX21hcCIsInJldHVybiQxIiwiYXBwbHkkMCIsIm1ha2UiLCJjb21wYXJhdG9yIiwiZXJyb3Jfc291cmNlXzAxMSIsImNtcF9mIiwiY21wX3MiLCJoYXNoX2ZvbGRfZiIsImhhc2hfZm9sZF9zIiwidF9vZl9zZXhwIiwib2ZfZl8wMDciLCJvZl9zXzAwOCIsInNleHBfMDEzIiwidGFnXzAxNCIsInNleHBfYXJnc18wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwic2V4cF9hcmdzXzAxNSIsImFyZzBfMDE2IiwicmVzMF8wMTciLCJvZl9mXzAyNSIsIm9mX3NfMDI2IiwiYXJnMF8wMjciLCJyZXMwXzAyOCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJmX3NleHBfZ3JhbW1hciIsInNfc2V4cF9ncmFtbWFyIiwib3BhcXVlX2lkZW50aXR5IiwibmFtZSIsImdldCIsImZzZXQiLCJzZXR0ZXIiLCJ1cGRhdGVyIiwiZmllbGQiLCJzeW1ib2xfY29uY2F0IiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInVuc2FmZV9ibGl0Iiwic3BsaXRfb25fY2hhciIsInNlcCIsImhzdiQyIiwicG9zX2NudW1fMDEwIiwicG9zX2JvbF8wMDgiLCJwb3NfbG51bV8wMDYiLCJwb3NfZm5hbWVfMDA0IiwiYXJnXzAxMSIsImJuZHNfMDAzIiwiYXJnXzAwOSIsImJuZHNfMDAzJDAiLCJhcmdfMDA3IiwiYm5kc18wMDMkMSIsImFyZ18wMDUiLCJibmRzXzAwMyQyIiwiaGFzaF9mb2xkX3QkMCIsImhhc2gkMCIsIm1ha2VfbG9jYXRpb25fc3RyaW5nIiwicG9zX2ZuYW1lIiwicG9zX2xudW0iLCJwb3NfY251bSIsInBvc19ib2wiLCJpc19lbXB0eSIsInBhcnRpdGlvbl9tYXAiLCJmc3QkMCIsInkkMCIsInNuZCQwIiwiZXJyb3Jfc291cmNlXzAwNSIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJzZXhwXzAwNyIsInRhZ18wMDgiLCJzZXhwX2FyZ3NfMDA5IiwiYXJnMF8wMTAiLCJyZXMwXzAxMSIsInNleHBfYXJnc18wMTQiLCJhcmcwXzAxNSIsInJlczBfMDE2Iiwib2ZfYV8wMTkiLCJvZl9iXzAyMCIsImFyZzBfMDIzIiwicmVzMF8wMjQiLCJhX3NleHBfZ3JhbW1hciIsImJfc2V4cF9ncmFtbWFyIiwiY21wX2EiLCJjbXBfYiIsImFfMDI3IiwiYl8wMjgiLCJhXzAyOSIsImJfMDMwIiwiYV8wMzEiLCJiXzAzMiIsImFfMDMzIiwiYl8wMzQiLCJhXzAzNSIsImJfMDM2IiwiYV8wMzciLCJiXzAzOCIsImhhc2hfZm9sZF9hIiwiaGFzaF9mb2xkX2IiLCJnbG9iYWxpemUiLCJjaGVja19vayIsImNoZWNrX2Vycm9yIiwib2siLCJlcnJvciIsImZhaWwiLCJmYWlsZiIsIm1hcF9lcnJvciIsImJpbmQkMSIsIm1hcCQxIiwicmV0dXJuJDIiLCJpc19vayIsImlzX2Vycm9yIiwib2Zfb3B0aW9uIiwib3B0IiwiaXRlcl9lcnJvciIsInRvX2VpdGhlciIsIm9mX2VpdGhlciIsIm9rX2lmX3RydWUiLCJib29sIiwidHJ5X3dpdGgiLCJva19leG4iLCJva19vcl9mYWlsd2l0aCIsImNvbWJpbmUiLCJlcnIiLCJvazEiLCJvazIiLCJlcnIxIiwiZXJyMiIsImNvbWJpbmVfZXJyb3JzIiwiZXJycyIsImNvbWJpbmVfZXJyb3JzX3VuaXQiLCJjb3VudCIsInN1bSIsIk0iLCJmb2xkX3Jlc3VsdCIsImFjYyIsIml0ZW0iLCJmb2xkX3VudGlsIiwiZmluaXNoIiwibWluX2VsdCIsImVsdCIsIm1heF9lbHQiLCJtZW0iLCJmaW5kX21hcCIsImZpbmQiLCJ0b19hcnJheSIsIml0ZXIkMCIsIml0ZXIkMSIsImxlbmd0aCQwIiwibGVuZ3RoJDEiLCJpc19lbXB0eSQwIiwibWVtJDAiLCJzdW0kMCIsIm0iLCJjb3VudCQwIiwiZXhpc3RzJDAiLCJmb3JfYWxsJDAiLCJmaW5kX21hcCQwIiwiZmluZCQwIiwidG9fbGlzdCQwIiwidG9fYXJyYXkkMCIsIm1pbl9lbHQkMCIsIm1heF9lbHQkMCIsImZvbGRfcmVzdWx0JDAiLCJmb2xkX3VudGlsJDAiLCJvZl9hcnJheSIsImNvbmNhdF9vZl9hcnJheSIsImNvbmNhdF9tYXAiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyIiwiZWl0aGVyIiwicGFydGl0aW9uX3RmIiwiZm9sZCQwIiwib2ZfbGlzdCQwIiwib2ZfYXJyYXkkMCIsImNvbmNhdCQwIiwiZm9sZGkiLCJhY2MkMCIsImNvdW50aSIsImV4aXN0c2kiLCJmb3JfYWxsaSIsImZpbmRfbWFwaSIsImZpbmRpIiwiaXRlcmkkMCIsIml0ZXJpJDEiLCJmb2xkaSQwIiwiZm9sZGkkMSIsImNvdW50aSQwIiwiZXhpc3RzaSQwIiwiZm9yX2FsbGkkMCIsImZpbmRfbWFwaSQwIiwiZmluZGkkMCIsImRlcml2ZWRfaW5pdCIsImRlcml2ZWRfaW5pdCQwIiwiZGVyaXZlZF9jb25jYXRfbWFwaSIsImNvbmNhdF9tYXBpIiwiY29uY2F0X21hcGkkMCIsImZpbHRlcl9tYXBpIiwiZmlsdGVyaSIsImNvbXBhcmVfYSIsImVxdWFsX2EiLCJwZWVrIiwic2V4cF9vZl9hIiwic2xvd19jaGVja19wb3NfbGVuX2V4biIsInBvcyIsInRvdGFsX2xlbmd0aCIsImNoZWNrX3Bvc19sZW5fZXhuIiwic3RvcCIsImdldF9wb3NfbGVuX2V4biIsImxlbiQwIiwib2Zfc3RhdGUiLCJhc3NpZ24iLCJkc3QiLCJzcmMiLCJkc3QkMCIsInNyYyQwIiwibWFrZV9kZWZhdWx0IiwiZGVmYXVsdCQwIiwic3BsaXRfZnJvbV9wYXJlbnQiLCJnZXRfc3RhdGUiLCJyYW5kb21fa2V5IiwiZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIiwiYWxsb3dfaW5fdGVzdHMiLCJiaXRzIiwiaW50JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiY2hhciQwIiwiYXNjaWkiLCJtYWtlX3NlbGZfaW5pdCIsImludF9vbl82NGJpdHMiLCJib3VuZCIsImludF9vbl8zMmJpdHMiLCJpbnQkMSIsImJpdHMkMCIsImZ1bGxfcmFuZ2VfaW50NjQiLCJmdWxsX3JhbmdlX2ludDMyIiwiZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzIiwiZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzIiwiZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzJDAiLCJmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHMiLCJmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHMiLCJmdWxsX3JhbmdlX25hdGl2ZWludCIsInJhaXNlX2Nyb3NzZWRfYm91bmRzIiwibG93ZXJfYm91bmQiLCJ1cHBlcl9ib3VuZCIsInN0cmluZ19vZl9ib3VuZCIsImludF9pbmNsIiwibG8iLCJoaSIsImRpZmYiLCJpbnQzMl9pbmNsIiwibmF0aXZlaW50X2luY2wiLCJpbnQ2NF9pbmNsIiwiZmxvYXQkMCIsInNjYWxlIiwicjEiLCJyMiIsInJlc3VsdCIsImZsb2F0X3JhbmdlIiwiZGVmYXVsdCQxIiwiYml0cyQxIiwiaW50JDIiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsImludF9pbmNsJDAiLCJpbnQzMl9pbmNsJDAiLCJuYXRpdmVpbnRfaW5jbCQwIiwiaW50NjRfaW5jbCQwIiwiZmxvYXRfcmFuZ2UkMCIsImJvb2wkMCIsImNoYXIkMSIsImFzY2lpJDAiLCJmdWxsX2luaXQiLCJzZWxmX2luaXQiLCJzZXRfc3RhdGUiLCJwZXJtdXRlIiwicmFuZG9tX3N0YXRlIiwibnVtX3N3YXBzIiwidGhpc19pIiwicmFuZG9tX2kiLCJzZXhwXzAwNiIsImVycm9yX3NvdXJjZV8wMzIiLCJmb2xkX2xlZnQiLCJhXzAxMCIsImJfMDExIiwiYV8wMTIiLCJiXzAxMyIsIm9mX2FfMDE0IiwicmFuZ2UiLCJzdHJpZGUiLCJzdGFydF9pIiwic3RvcF9pIiwic3RhcnQiLCJuZXh0X2kiLCJvcmRlciIsInJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbSIsImluaXRpYWxfc3RyaWRlX29yZGVyIiwic3RhcnRfaSQwIiwiYWNjdW0iLCJpX3RvX3N0b3Bfb3JkZXIiLCJuZXh0X2kkMCIsImFjY3VtJDAiLCJyYW5nZSQwIiwiaGQiLCJ0bCIsIm50aCIsIm50aF9leG4iLCJ1bm9yZGVyZWRfYXBwZW5kIiwib2ZfbGlzdHMiLCJzaGFyZWRfbGVuZ3RoIiwic2hhcmVkX2xlbmd0aCQwIiwiY2hlY2tfbGVuZ3RoMl9leG4iLCJ0YWlsX29mX2IiLCJ0YWlsX29mX2EiLCJjaGVja19sZW5ndGgyIiwib2ZfbGlzdHMkMCIsImwzIiwiYyQwIiwiY2hlY2tfbGVuZ3RoM19leG4iLCJ0YWlsX29mX2MiLCJuMSIsIm4yIiwibjMiLCJjaGVja19sZW5ndGgzIiwiaXRlcjIiLCJpdGVyMl9leG4iLCJyZXZfbWFwMiIsInJldl9tYXAyX2V4biIsImZvbGQyIiwiZm9sZDJfZXhuIiwiZm9sZF9yaWdodDIiLCJmb2xkX3JpZ2h0Ml9leG4iLCJmb3JfYWxsMiIsImZvcl9hbGwyX2V4biIsImV4aXN0czIiLCJleGlzdHMyX2V4biIsImJzIiwicmV2X2ZpbHRlciIsIm5vdF9mb3VuZCIsImZpbmRfbWFwX2V4biIsIm5vdF9mb3VuZCQwIiwiZmluZF9leG4iLCJub3RfZm91bmQkMSIsImZpbmRpX2V4biIsIm5vdF9mb3VuZCQyIiwiZmluZF9tYXBpX2V4biIsIm1heF9ub25fdGFpbGNhbGwiLCJjb3VudF9hcHBlbmQiLCJ4MSIsIngyIiwieDMiLCJ4NCIsIng1IiwiY291bnRfbWFwIiwiY3RyIiwieDEkMCIsImYxJDMiLCJ4MiQwIiwiZjEkMiIsImYyJDIiLCJ4MyQwIiwiZjEkMSIsImYyJDEiLCJmMyQxIiwieDQkMCIsImYxJDAiLCJmMiQwIiwiZjMkMCIsImY0JDAiLCJ4NSQwIiwiZjEiLCJmMiIsImYzIiwiZjQiLCJmNSIsImJzJDAiLCJ4cyQwIiwieDgiLCJ4NyIsIng2IiwieDAiLCJ5MCQwIiwieTEkMCIsInkyJDAiLCJ5MyQwIiwieTQkMCIsInk1JDAiLCJ5NiQwIiwieTckMCIsInk4JDAiLCJ5OCIsInk3IiwieTYiLCJ5NSIsInk0IiwieTMiLCJ5MiIsInkxIiwieTAiLCJmb2xkaW5nX21hcCIsIm5ld19hY2MiLCJmb2xkX21hcCIsIm1hcDJfb2siLCJtYXAyX2V4biIsInJldl9tYXAzX29rIiwibDMkMCIsImFjIiwibDMkMSIsImFjJDAiLCJyZXZfbWFwMyIsInJldl9tYXAzX2V4biIsIm1hcDNfb2siLCJtYXAzX2V4biIsInJldl9tYXBfYXBwZW5kIiwiaCIsImxpc3QkMiIsInVuemlwMyIsInoiLCJ6aXBfZXhuIiwiemlwIiwicmV2X21hcGkiLCJmb2xkaW5nX21hcGkiLCJmb2xkX21hcGkiLCJyZWR1Y2UiLCJyZWR1Y2VfZXhuIiwicmVkdWNlX2JhbGFuY2VkIiwic3RlcF9hY2N1bSIsIm51bSIsIm51bSQwIiwiYWNjJDEiLCJudW0kMSIsInJlZHVjZV9iYWxhbmNlZF9leG4iLCJncm91cGkiLCJicmVhayQwIiwiZ3JvdXBzIiwiY3VycmVudF9ncm91cCIsImdyb3VwIiwic29ydF9hbmRfZ3JvdXAiLCJjb250IiwibWVyZ2UiLCJoMiIsImgxIiwibWFwMiQwIiwibWFwMyQwIiwibGFzdF9leG4iLCJsYXN0IiwiaXNfcHJlZml4IiwicHJlZml4IiwicHJlZml4JDAiLCJwcmVmaXgkMSIsImhkJDAiLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsImExJDAiLCJyZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyIsIndoaWNoX3RvX2tlZXAiLCJ0bCQwIiwidG9fa2VlcCQyIiwidG9fa2VlcCIsInRvX2tlZXAkMCIsInRvX2tlZXAkMSIsImRlZHVwX2FuZF9zb3J0Iiwic29ydGVkIiwiZmluZF9hX2R1cCIsImhkMiIsImhkMSIsImNvbnRhaW5zX2R1cCIsImxzdCIsImZpbmRfYWxsX2R1cHMiLCJzb3J0ZWQkMiIsInByZXYkMSIsInNvcnRlZCQwIiwicHJldiIsImFscmVhZHlfcmVjb3JkZWQiLCJzb3J0ZWQkMSIsInByZXYkMCIsImFsbF9lcXVhbCIsImlkeCIsInJldl9maWx0ZXJfbWFwIiwicmV2X2ZpbHRlcl9tYXBpIiwiaSQxIiwiZmlsdGVyX29wdCIsInBhcnRpdGlvbjNfbWFwIiwidHJkIiwidHJkJDAiLCJ5JDEiLCJmJDAiLCJwYXJ0aXRpb25fcmVzdWx0IiwidF9vZl9zZXhwJDAiLCJvZl9hXzAyNCIsIm9mX2JfMDI1IiwieF8wMzMiLCJzZXhwXzAzMSIsImFyZzFfMDI4IiwicmVzMF8wMjkiLCJyZXMxXzAzMCIsInNleHBfb2ZfdCQxIiwib2ZfYV8wMzQiLCJvZl9iXzAzNSIsInhfMDQwIiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJ0X3NleHBfZ3JhbW1hciQwIiwicGFpcl9vZl9ncm91cCIsImsiLCJncm91cCQwIiwiYWxpc3QiLCJzb3J0X2FuZF9ncm91cCQwIiwia2V5Iiwia2V5JDAiLCJub3RfZm91bmQkMyIsImZpbmRfZXhuJDAiLCJ2YWx1ZSIsInJlbW92ZSIsImFkZCIsImludmVyc2UiLCJtYXAkMiIsImVsIiwic3BsaXRfbiIsInRfb3JpZyIsInRha2UiLCJkcm9wIiwiY2h1bmtzX29mIiwibCQxIiwic3VibGlzdCIsInNwbGl0X3doaWxlIiwidGFrZV93aGlsZSIsImRyb3Bfd2hpbGUiLCJkcm9wX2xhc3QiLCJkcm9wX2xhc3RfZXhuIiwiY2FydGVzaWFuX3Byb2R1Y3QiLCJsaXN0MSIsImxpc3QyIiwiY29uY2F0X25vX29yZGVyIiwiY29ucyIsImlzX3NvcnRlZCIsImlzX3NvcnRlZF9zdHJpY3RseSIsImFyciIsInJhbmRvbV9lbGVtZW50X2V4biIsInJhbmRvbV9lbGVtZW50IiwiY21wIiwiZXF1YWxfbG9jYWwiLCJ0MSQwIiwidDIkMCIsInQyJDEiLCJ0MSQxIiwidHJhbnNwb3NlIiwicm93cyQwIiwicm93cyIsImNvbHVtbnMiLCJkb19yZXYiLCJjb2x1bW5fYWNjIiwidHJpbW1lZF9yb3dzIiwiZm91bmRfZW1wdHkiLCJ0cmltbWVkIiwiY29sdW1uX2FjYyQwIiwiY29sdW1uIiwiZG9fcmV2JDAiLCJjb2x1bW5zJDAiLCJhcmcwXzA0MSIsInJlczBfMDQyIiwidHJhbnNwb3NlX2V4biIsImludGVyc3BlcnNlIiwiaXNfc3VmZml4Iiwic3VmZml4IiwibGlzdF9sZW4iLCJzdWZmaXhfbGVuIiwicmVzMF8wMDIiLCJhcmcwXzAwMyIsInJlczBfMDA0IiwicmVzMF8wMDYiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYXJnMl8wMTEiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsInJlczJfMDE0IiwiYXJnMV8wMTYiLCJyZXMxXzAxOCIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInJlczFfMDIzIiwicmVzMl8wMjQiLCJhcmcxXzAyNiIsImFyZzBfMDI1IiwicmVzMF8wMjciLCJyZXMxXzAyOCIsImFyZzFfMDMwIiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInRvX3N0cmluZ3NfaHVtIiwic3RyaW5nIiwic2V4cCQwIiwic2V4cCQxIiwidGFnIiwidGFnJDAiLCJzZXhwJDIiLCJ0YWckMSIsImJvZHkiLCJ0cnVuY19hZnRlciIsInRzJDAiLCJ0cyQxIiwiYWMkMSIsInRvX3NleHBzX2h1bSIsInN0cmluZyQwIiwiaGVyZSIsImhlcmUkMCIsInRvX3NleHBfaHVtIiwic2V4cHMiLCJ0b19tZXNzYWdlIiwiaW5mbyIsIm9mX21lc3NhZ2UiLCJ0b19zdHJpbmdfaHVtIiwibWVzc2FnZSIsInRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCIsIm9mX2xhenkiLCJvZl9sYXp5X3NleHAiLCJvZl9sYXp5X3QiLCJsYXp5X3QiLCJjcmVhdGVmIiwib2ZfdGh1bmsiLCJzdHJpY3QiLCJzZXhwX29mX3giLCJ0YWdfc19sYXp5IiwidGFnX3MiLCJ0YWdfYXJnIiwidG9fZXhuIiwib2ZfZXhuIiwiYmFja3RyYWNlJDAiLCJiYWNrdHJhY2UkMSIsImJhY2t0cmFjZSQyIiwicmFpc2UiLCJyYWlzZV9zIiwidG9faW5mbyIsIm9mX2luZm8iLCJjaGVja19maWVsZCIsImFfMDA3IiwiYl8wMDgiLCJvZl9hXzAxMyIsInhfMDE1Iiwib2ZfYV8wMTYiLCJ4XzAxNyIsImludmFyaWFudF9hIiwiZTEiLCJlMiIsInRyeV93aXRoX2pvaW4iLCJvZl9leG5fcmVzdWx0IiwiZXJyb3JfcyIsImVycm9yX3N0cmluZyIsImVycm9yZiIsInVuaW1wbGVtZW50ZWQiLCJjb21iaW5lX2ludGVybmFsIiwib25fb2siLCJvbl9lcnJvciIsImlnbm9yZV91bml0X2xpc3QiLCJlcnJvcl9vZl9saXN0X2lmX25lY2Vzc2FyeSIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX29rIiwiZmluZF9tYXBfb2siLCJlcnJvcl9zb3VyY2VfMDAzIiwic2V4cF8wMDQiLCJnZXEiLCJsZXEiLCJiZXR3ZWVuIiwibG93IiwiaGlnaCIsImNsYW1wX3VuY2hlY2tlZCIsImNsYW1wX2V4biIsImNsYW1wIiwibGV4aWNvZ3JhcGhpYyIsImNtcHMiLCJjbXBzJDAiLCJsaWZ0IiwicmV2ZXJzZSIsImNvbXBhcmVfcmV2ZXJzZWQiLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwic2lnbiIsImhhc2hfcGFyYW0iLCJwb2x5Iiwib2Zfa2V5IiwiS2V5IiwidG9fa2V5IiwiaGFzaF9wYXJhbSQwIiwicG9seSQwIiwib2Zfa2V5JDAiLCJ0b19rZXkkMCIsImhhc2hhYmxlIiwiZ2V0X3Bvc19sZW4iLCJmaW5kX2ZpcnN0X3NhdGlzZnlpbmciLCJwb3MkMCIsImhpJDAiLCJsbyQxIiwibWlkIiwibG8kMiIsImxvJDAiLCJmaW5kX2xhc3Rfc2F0aXNmeWluZyIsImJpbmFyeV9zZWFyY2giLCJob3ciLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsInNlZ21lbnRfb2YiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJhbGwkMCIsImJsaXRfc3RyaW5nIiwic3JjX3BvcyIsImRzdF9wb3MiLCJibGl0byIsInNyY19sZW4iLCJzdWJvIiwiY3JlYXRlX2xpa2UiLCJ1bnNhZmVfYmxpdCQwIiwiaXNfZmlyc3QiLCJpc19zZWNvbmQiLCJ2YWx1ZV9tYXAiLCJmaXJzdCIsInNlY29uZCIsImVxMSIsImVxMiIsIm90aGVyIiwiZm9jdXMiLCJjb21iaW5lX2FsbCIsIm1hdGNoJDAiLCJtYXRjaCIsImNvbWJpbmVfYWxsX3VuaXQiLCJ0b19vcHRpb24iLCJmb2N1cyQwIiwiY29tYmluZSQwIiwiYmluZCQwIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJvIiwiY2FsbCIsInZhbHVlX2V4biIsImVycm9yJDAiLCJtJDAiLCJtJDEiLCJ2YWx1ZV9vcl90aHVuayIsInNvbWUiLCJmaXJzdF9zb21lIiwic29tZV9pZiIsImNvbmQiLCJlcnJvcl9zb3VyY2VfMDI3Iiwib2Zfc18wMDIiLCJzdGF0ZV8wMDQiLCJzdGF0ZV8wMDkiLCJ2YWx1ZV8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsIm5leHRfc3RlcCIsImRlbGF5ZWRfZm9sZF9zdGVwIiwibmV4dCIsInVuZm9sZF9zdGVwIiwidW5mb2xkIiwidW5mb2xkX3dpdGgiLCJzZWVkJDAiLCJzZWVkJDEiLCJ1bmZvbGRfd2l0aF9hbmRfZmluaXNoIiwicnVubmluZ19zdGVwIiwiaW5uZXJfZmluaXNoZWQiLCJmaW5pc2hpbmdfc3RlcCIsInN0YXRlJDAiLCJzdGF0ZSQxIiwic3RhdGUkMiIsImlubmVyX3N0YXRlIiwic3RhdGUkMyIsImlubmVyX3N0YXRlJDAiLCJpbm5lcl9zdGF0ZSQxIiwic3RhdGUkNCIsInN0YXRlJDUiLCJzZWVkJDIiLCJ2JDAiLCJ0b19saXN0X3JldiIsInN0YXJ0X3YiLCJzdG9wX3YiLCJzdGVwIiwidF9sYXp5IiwibCQyIiwic29tZV9iIiwiZW1wdHkiLCJuZXh0JDAiLCJzJDMiLCJhXzAxMyIsImJfMDE0IiwiYV8wMTUiLCJiXzAxNiIsImFfMDE3IiwiYl8wMTgiLCJhXzAyMSIsImFfMDE5IiwiYl8wMjIiLCJiXzAyMCIsImEwJDEiLCJoc3YkMyIsIm9mX2FfMDIzIiwib2ZfYl8wMjQiLCJzZXhwXzAyOSIsInRhZ18wMzAiLCJzZXhwX2FyZ3NfMDM2IiwiYXJnMF8wMzciLCJzZXhwX2FyZ3NfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsInNleHBfYXJnc18wNDEiLCJhcmcxXzA0MyIsImFyZzBfMDQyIiwicmVzMF8wNDQiLCJyZXMxXzA0NSIsIm9mX2FfMDQ4Iiwib2ZfYl8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzFfMDU1IiwiYXJnMF8wNTQiLCJyZXMwXzA1NiIsInJlczFfMDU3IiwibWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIiwibmV4dDIiLCJzMiIsIm5leHQxIiwiczEiLCJzMiQwIiwiczIkMSIsInMxJDAiLCJzMiQyIiwiczEkMSIsInMyJDMiLCJjb21wYXJpc29uIiwibWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIiwibWVyZ2Vfc29ydGVkIiwidGxfZWFnZXJseV9leG4iLCJsaWZ0X2lkZW50aXR5IiwiY2h1bmtzX2V4biIsInppcF9mdWxsIiwiYm91bmRlZF9sZW5ndGgiLCJhdF9tb3N0IiwibGVuZ3RoX2lzX2JvdW5kZWRfYnkiLCJjdXIiLCJjdXIkMCIsImxhc3RfZWx0IiwibGFzdF9lbHQkMCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnRfcmlnaHRfd2l0aF9saXN0IiwicyQ1IiwiYSQxIiwicyQ0IiwicmVwZWF0IiwiY3ljbGVfbGlzdF9leG4iLCJzYSIsInNiIiwic2luZ2xldG9uIiwiZGVsYXllZF9mb2xkIiwib3B0aW9uIiwiZm9sZF9tIiwiaXRlcl9tIiwiZm9yY2VfZWFnZXJseSIsIm1lbW9pemUiLCJkcm9wX2VhZ2VybHkiLCJkcm9wX3doaWxlX29wdGlvbiIsInYyIiwidjEiLCJyb3VuZF9yb2JpbiIsImRvbmVfc3RhY2siLCJ0b2RvX3N0YWNrIiwidG9kb19zdGFjayQwIiwiaW50ZXJsZWF2ZSIsImludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0Iiwib2Zfc2VxIiwic2VxIiwidG9fc2VxIiwieWllbGQkMCIsIm9mX3NlcXVlbmNlIiwic2VxdWVuY2UiLCJ0aHVuayIsImFfb2Zfc2V4cCIsImJfb2Zfc2V4cCIsInNleHBfb2ZfYiIsImNfb2Zfc2V4cCIsInNleHBfb2ZfYyIsInNldCIsInRtcCIsImxlZnQiLCJyaWdodCIsImZpbmFsX3BvcyIsImlfbmV4dCIsImhlYXBpZnkiLCJyb290Iiwicm9vdCQwIiwicmVsYXRpdmVfcm9vdCIsImxlZnRfY2hpbGQiLCJyaWdodF9jaGlsZCIsImxhcmdlc3QiLCJsYXJnZXN0JDAiLCJzb3J0JDAiLCJmaXZlX2VsZW1lbnRfc29ydCIsIm0xIiwibTIiLCJtMyIsIm00IiwibTUiLCJjb21wYXJlX2FuZF9zd2FwIiwiaW50cm9fc29ydCIsIm1heF9kZXB0aCIsIm1heF9kZXB0aCQwIiwibGVmdCQwIiwibWF4X2RlcHRoJDEiLCJzaXh0aCIsIm0yX3ZhbCIsIm0zX3ZhbCIsIm00X3ZhbCIsIm1pZGRsZV9zb3J0ZWQiLCJwaXZvdDIiLCJwaXZvdDEiLCJwJDEiLCJyJDIiLCJwdiIsInIkMCIsInIkMSIsInAkMCIsImxlZnQkMSIsInNvcnQkMSIsInNvcnQkMiIsImVsdF9pX21pbnVzXzEiLCJtZXJnZWQiLCJhMV9pbmRleCIsImEyX2luZGV4IiwidXNlX2ExIiwiY29weV9tYXRyaXgiLCJyZXZfaW5wbGFjZSIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kaV9pbnRlcm5hbCIsImlmX2ZvdW5kIiwiaWZfbm90X2ZvdW5kIiwiZm91bmQiLCJ2YWx1ZV9mb3VuZCIsInJlczEiLCJyZXMyIiwic29ydGVkX2NvcHkiLCJwYXJ0aXRpb25fbWFwaSIsImZpcnN0cyIsInNlY29uZHMiLCJwYXJ0aXRpb25pX3RmIiwidG9fc2VxdWVuY2VfbXV0YWJsZSIsInRvX3NlcXVlbmNlIiwiaTEiLCJpMiIsInR0Iiwid2lkdGgiLCJkZXB0aCIsImQiLCJ3IiwidHQkMCIsImdldCQwIiwiemVyb19vYmoiLCJjcmVhdGVfemVybyIsInVuc2FmZV9nZXQiLCJ1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkiLCJvYmoiLCJzZXRfd2l0aF9jYW1sX21vZGlmeSIsInVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbiIsIm9sZF9vYmoiLCJ1bnNhZmVfc2V0IiwidW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlIiwidW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfIiwidW5zYWZlX3NldF9pbnQiLCJ1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciIsImkkMiIsInVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCIsImNyZWF0ZV9vYmpfYXJyYXkiLCJncmFtbWFyIiwiY2VpbCIsImZsb29yIiwibW9kX2Zsb2F0IiwibW9kZiIsIm1heF9maW5pdGVfdmFsdWUiLCJjbGFzc2lmeV9mbG9hdCIsImFic19mbG9hdCIsImlzX2ludGVnZXIiLCJmcmV4cCIsImxkZXhwIiwiaXNfbmFuIiwidG9faW50NjRfcHJlc2VydmVfb3JkZXIiLCJ0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlcl9leG4iLCJvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlciIsIm9uZV91bHAiLCJkaXIiLCJ1cHBlcl9ib3VuZF9mb3JfaW50IiwiZXhwIiwiaXNfeF9taW51c19vbmVfZXhhY3QiLCJsb3dlcl9ib3VuZF9mb3JfaW50IiwibWluX2ludF9hc19mbG9hdCIsImJveCIsImlzX2xvd2VyY2FzZSIsImlzX3VwcGVyY2FzZSIsImlzX3ByaW50IiwiaXNfd2hpdGVzcGFjZSIsImlzX2RpZ2l0IiwiaXNfYWxwaGEiLCJpc19hbHBoYW51bSIsImdldF9kaWdpdF91bnNhZmUiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0X2xvd2VyIiwiaXNfaGV4X2RpZ2l0X3VwcGVyIiwiZ2V0X2hleF9kaWdpdF9leG4iLCJnZXRfaGV4X2RpZ2l0IiwidF9vZl9zZXhwJDEiLCJjMSIsImMyIiwiaGFzaF9mb2xkX3QkMSIsImhhc2gkMSIsInRyX2NyZWF0ZV9tYXAiLCJ0YXJnZXQiLCJyZXBsYWNlbWVudCIsInRyX21hcCIsImkkMyIsImluZGV4JDAiLCJsYXN0X3JlcGxhY2VtZW50IiwiaW5kZXgiLCJmaXJzdF90YXJnZXQiLCJzdGFnZSIsInVuc3RhZ2UiLCJ1bnNhZmVfc3ViIiwiY29udGFpbnMiLCJwb3MkMSIsImVuZCIsImluZGV4X2Zyb21fZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXhfZnJvbV9leG5faW50ZXJuYWwiLCJyaW5kZXhfZXhuX2ludGVybmFsIiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tX2V4biIsInJpbmRleCIsImluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbSIsImNhc2Vfc2Vuc2l0aXZlIiwicGF0dGVybiIsImttcF9pbnRlcm5hbF9sb29wIiwibWF0Y2hlZF9jaGFycyIsIm5leHRfdGV4dF9jaGFyIiwia21wX2FycmF5IiwiY2hhcl9lcXVhbCIsIm1hdGNoZWRfY2hhcnMkMCIsImdldF9jaGFyX2VxdWFsIiwiaW5kZXhfaW50ZXJuYWwiLCJ0ZXh0IiwibWF0Y2hlcyIsImluJDAiLCJpbmRleF9leG4kMCIsImluZGV4X2FsbCIsIm1heV9vdmVybGFwIiwicmVwbGFjZV9maXJzdCIsIndpdGgkMCIsImxlbl9zIiwibGVuX3QiLCJsZW5fd2l0aCIsInJlcGxhY2VfYWxsIiwibnVtX21hdGNoZXMiLCJuZXh0X2RzdF9wb3MiLCJuZXh0X3NyY19wb3MiLCJzcGxpdF9vbiIsInBhdHRlcm5fbGVuIiwia21wX2FycmF5XzAxMiIsImNhc2Vfc2Vuc2l0aXZlXzAxMCIsInBhdHRlcm5fMDA4IiwiYXJnXzAxMyIsImJuZHNfMDA3IiwiYm5kc18wMDckMCIsImJuZHNfMDA3JDEiLCJyZXByZXNlbnRhdGlvbiIsInN1YnN0cl9pbmRleF9nZW4iLCJzdWJzdHJfaW5kZXhfZXhuX2dlbiIsInN1YnN0cl9pbmRleF9hbGxfZ2VuIiwic3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIiwic3Vic3RyX3JlcGxhY2VfYWxsX2dlbiIsImlzX3N1YnN0cmluZ19nZW4iLCJzdWJzdHJpbmciLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0X2dlbiIsInN0cl9wb3MkMSIsInN0cl9sZW4iLCJzdWJfbGVuIiwic3RyX3BvcyIsInN1Yl9wb3MiLCJzdWJfcG9zJDAiLCJzdHJfcG9zJDAiLCJpc19zdWZmaXhfZ2VuIiwic3RyaW5nX2xlbiIsImlzX3ByZWZpeF9nZW4iLCJwcmVmaXhfbGVuIiwic2V4cF9vZl90JDIiLCJzdHJpbmcxIiwic3RyaW5nMiIsImxlbjIiLCJsZW4xIiwic3Vic3RyX2luZGV4JDAiLCJzdWJzdHJfaW5kZXhfZXhuJDAiLCJzdWJzdHJfaW5kZXhfYWxsJDAiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCQwIiwic3Vic3RyX3JlcGxhY2VfYWxsJDAiLCJpc19zdWJzdHJpbmckMCIsImlzX3N1YnN0cmluZ19hdCIsImxzcGxpdDJfZXhuIiwibGluZSIsImRlbGltIiwibm90X2ZvdW5kJDQiLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJvbiIsInJzcGxpdDIiLCJjaGFyX2xpc3RfbWVtIiwic3BsaXRfZ2VuIiwiaXNfZGVsaW0iLCJsYXN0X3BvcyIsImxhc3RfcG9zJDEiLCJsYXN0X3BvcyQwIiwicG9zMSIsInN1Yl9zdHIiLCJzcGxpdCIsInNwbGl0X29uX2NoYXJzIiwiY2hhcnMiLCJiYWNrX3VwX2F0X25ld2xpbmUiLCJlb2wiLCJzcGxpdF9saW5lcyIsImlzX3N1ZmZpeCQwIiwiaXNfcHJlZml4JDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsIndyYXBfc3ViX24iLCJkcm9wX3ByZWZpeCIsImRyb3Bfc3VmZml4IiwibGZpbmRpIiwicmZpbmRpIiwibGFzdF9ub25fZHJvcCIsInJzdHJpcCIsImZpcnN0X25vbl9kcm9wIiwibHN0cmlwIiwic3RyaXAiLCJ0ciIsInRyX211bHRpIiwiY29uY2F0X2FycmF5IiwiYXIiLCJjb25jYXRfbGluZXMiLCJsaW5lcyQzIiwiY3JsZiIsIm5ld2xpbmVfbGVuIiwibGluZXMiLCJsaW5lcyQwIiwiYnVmIiwibGluZXMkMSIsIndyaXR0ZW4iLCJsaW5lcyQyIiwibGluZSQwIiwib3V0Iiwib3V0X3BvcyIsIm91dCQwIiwiY2hvcF9wcmVmaXgiLCJjaG9wX3ByZWZpeF9pZl9leGlzdHMiLCJjaG9wX3ByZWZpeF9leG4iLCJjaG9wX3N1ZmZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3Bfc3VmZml4X2V4biIsInNob3J0ZXIiLCJzaG9ydGVzdCIsInBvc19mcm9tX2xlZnQiLCJwb3NfZnJvbV9yaWdodCIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCIsImdldF9wb3MiLCJtYXhfbGVuIiwibGVuX3NvX2ZhciIsImxlbl9zb19mYXIkMCIsImxlbl9zb19mYXIkMSIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGgiLCJjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCIsImZpcnN0JDAiLCJtYXhfbGVuJDAiLCJtYXhfbGVuJDEiLCJjb21tb25fZ2VuZXJpY19sZW5ndGgiLCJjb21tb25fZ2VuZXJpYzIiLCJjb21tb25fZ2VuZXJpYyIsImNvbW1vbl9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeDIiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXhfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeF9sZW5ndGgiLCJjb21tb25fcHJlZml4Ml9sZW5ndGgiLCJjb21tb25fc3VmZml4Ml9sZW5ndGgiLCJvZl9jaGFyIiwib2ZfY2hhcl9saXN0IiwicGFkX3JpZ2h0IiwicGFkX2xlZnQiLCJsb2NhbF9jb3B5X3ByZWZpeCIsImJ1ZmZlcl9sZW4iLCJsb2NhbF9jb3B5X3RvX3N0cmluZyIsInNyY19wb3MkMCIsImRzdF9wb3MkMCIsInBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZSIsImZzdF9wb3MkMCIsInNuZF9wb3MkMCIsImZzdHMiLCJzbmRzIiwiYyQxIiwic25kX3BvcyQxIiwiZnN0X3BvcyQxIiwiYyQyIiwic25kX3BvcyQyIiwic3JjX3BvcyQxIiwiZnN0X3BvcyIsInNuZF9wb3MiLCJjMSQxIiwiZWl0aGVyJDEiLCJjMiQxIiwiYzIkMiIsImMxJDAiLCJlaXRoZXIkMCIsImMyJDAiLCJwb3MkMiIsImJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aCIsImVzY2FwZXdvcnRoeV9tYXAiLCJlc2NhcGVfY2hhciIsImVzY2FwZXdvcnRoeV9tYXAkMCIsInZhbHMiLCJjX3RvIiwiY19mcm9tIiwiayQwIiwiZXNjYXBlX2dlbiIsImVzY2FwZXdvcnRoeSIsInRvX2VzY2FwZV9sZW4iLCJ0b19lc2NhcGUiLCJsYXN0X2lkeCIsImxhc3RfZHN0X3BvcyIsImxhc3RfaWR4JDAiLCJsYXN0X2RzdF9wb3MkMCIsInRvX2VzY2FwZSQwIiwiZXNjYXBlZF9jaGFyIiwibGFzdF9pZHgkMSIsImxhc3RfZHN0X3BvcyQxIiwiZXNjYXBlX2dlbl9leG4iLCJlc2NhcGUiLCJ1bmVzY2FwZV9nZW4iLCJzdGF0dXMiLCJ0b191bmVzY2FwZSIsInN0YXR1cyQwIiwidG9fdW5lc2NhcGUkMCIsInVuZXNjYXBlX2dlbl9leG4iLCJ1bmVzY2FwZSIsInByZWNlZGluZ19lc2NhcGVfY2hhcnMiLCJjbnQiLCJjbnQkMCIsInVwZGF0ZV9lc2NhcGVfc3RhdHVzIiwiZXNjYXBlX3N0YXR1cyIsIm9kZCIsImNoZWNrX2JvdW5kIiwiZnVuY3Rpb25fbmFtZSIsImlzX2NoYXJfZXNjYXBpbmciLCJpc19jaGFyX2VzY2FwZWQiLCJpc19jaGFyX2xpdGVyYWwiLCJpbmRleF9mcm9tJDAiLCJzdGF0dXMkMSIsImluZGV4X2Zyb21fZXhuJDAiLCJpbmRleCQxIiwiaW5kZXhfZXhuJDEiLCJyaW5kZXhfZnJvbSQwIiwiZXNjYXBlX2NoYXJzIiwicmluZGV4X2Zyb21fZXhuJDAiLCJyaW5kZXgkMCIsInJpbmRleF9leG4kMCIsInNwbGl0X2dlbiQwIiwic3BsaXQkMCIsInNwbGl0X29uX2NoYXJzJDAiLCJzcGxpdF9hdCIsImxzcGxpdDIkMCIsInJzcGxpdDIkMCIsImxzcGxpdDJfZXhuJDAiLCJyc3BsaXQyX2V4biQwIiwibGFzdF9ub25fZHJvcF9saXRlcmFsIiwiZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCIsInJzdHJpcF9saXRlcmFsIiwibHN0cmlwX2xpdGVyYWwiLCJzdHJpcF9saXRlcmFsIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsIm1hcGkkMCIsIm9jYW1sX2xleF90YWJsZXMiLCJwYXJzZV9oZXgiLCJsZXhidWYiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsImNvbnZlcnRfZmFpbHVyZSIsIm51bV9iaXRzX2ludCIsIm51bV9iaXRzX25hdGl2ZWludCIsIm51bV9iaXRzX2ludDMyIiwibnVtX2JpdHNfaW50NjQiLCJtaW5faW50MzIiLCJtYXhfaW50MzIiLCJtaW5faW50NjQiLCJtYXhfaW50NjQiLCJtaW5fbmF0aXZlaW50IiwibWF4X25hdGl2ZWludCIsImludDY0X3RvX3N0cmluZyIsIm5hdGl2ZWludF90b19zdHJpbmciLCJpbnQzMl90b19pbnRfdHJ1bmMiLCJpbnRfdG9faW50MzJfdHJ1bmMiLCJpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiIsImludF90b19pbnQzMiIsImludDMyX3RvX2ludCIsImludF90b19pbnQzMl9leG4iLCJpbnQzMl90b19pbnRfZXhuIiwiaW50X3RvX2ludDY0IiwiaW50NjRfdG9faW50X3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQiLCJpbnQ2NF90b19pbnQiLCJpbnQ2NF90b19pbnRfZXhuIiwiaW50X3RvX25hdGl2ZWludCIsIm5hdGl2ZWludF90b19pbnRfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50IiwibmF0aXZlaW50X3RvX2ludF9leG4iLCJpbnQzMl90b19pbnQ2NCIsImludDY0X3RvX2ludDMyX3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzIiwiaW50NjRfdG9faW50MzIiLCJpbnQ2NF90b19pbnQzMl9leG4iLCJpbnQzMl90b19uYXRpdmVpbnQiLCJuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50MzIiLCJuYXRpdmVpbnRfdG9faW50MzJfZXhuIiwiaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIiwibmF0aXZlaW50X3RvX2ludDY0IiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpIiwiaW50NjRfdG9fbmF0aXZlaW50IiwiaW50NjRfdG9fbmF0aXZlaW50X2V4biIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NiIsImludDY0X2ZpdF9vbl9pbnQ2M19leG4iLCJpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IiwiZGVsaW1pdGVyIiwiY2hhcnNfcGVyX2RlbGltaXRlciIsImlucHV0X2xlbmd0aCIsImhhc19zaWduIiwibnVtX2RpZ2l0cyIsIm51bV9kZWxpbWl0ZXJzIiwib3V0cHV0X2xlbmd0aCIsImlucHV0X3BvcyIsIm91dHB1dF9wb3MiLCJudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyIiwiZmlyc3RfZGlnaXRfcG9zIiwiaW5zZXJ0X2RlbGltaXRlciIsImluc2VydF91bmRlcnNjb3JlcyIsInNleHBfb2ZfaW50X3N0eWxlIiwiZGVsaW1pdGVyJDAiLCJtYWtlX3N1ZmZpeCIsInRvX3N0cmluZyQwIiwiaW52YWxpZCIsIm9mX3N0cmluZ193aXRoX2RlbGltaXRlciIsImxleCIsImJvZHkkMCIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2M19vbl9pbiIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2NF92YWx1ZSIsImludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsIm92ZXJmbG93X2JvdW5kX21heF9pbnRfdmFsdWUiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50MzJfdmFsdWUiLCJpbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsIiwiaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwibmVnYXRpdmVfZXhwb25lbnQiLCJvdmVyZmxvdyIsImludF9wb3ciLCJiYXNlIiwiZXhwb25lbnQiLCJpbnQ2NF9wb3ciLCJpbnQ2M19wb3dfb25faW50NjQiLCJydmFsIiwib25lIiwicm91bmRfZG93biIsIm1vZHVsdXMiLCJyb3VuZF91cCIsInJlbWFpbmRlciIsInJvdW5kX3Rvd2FyZHNfemVybyIsInRvX211bHRpcGxlX29mIiwicm91bmRfbmVhcmVzdCIsIm1vZHVsdXNfbWludXNfcmVtYWluZGVyIiwicm91bmQiLCJoMDEiLCJtYXNrIiwiaW50NjRfcG9wY291bnQiLCJ4JDIiLCJpbnQzMl9wb3Bjb3VudCIsIm5hdGl2ZWludF9wb3Bjb3VudCIsIm1vZHVsZV9uYW1lJDAiLCJvZl9zdHJpbmckMCIsImZsb2F0X2xvd2VyX2JvdW5kIiwiZmxvYXRfdXBwZXJfYm91bmQiLCJvZl9mbG9hdF91bmNoZWNrZWQiLCJ6ZXJvIiwiZnVuYyQwIiwibmVnIiwib2Zfc3RyaW5nJDEiLCJvZl9pbnQzMiIsIm9mX2ludDMyX2V4biIsInRvX2ludDMyIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjQiLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnQiLCJhYnMiLCJyZW0iLCJpbmNyIiwiZGVjciIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwiLCJzaGlmdF9sZWZ0IiwiYml0X25vdCIsImJpdF9vciIsImJpdF9hbmQiLCJiaXRfeG9yIiwicG93Iiwibm9uX3Bvc2l0aXZlX2FyZ3VtZW50IiwiY2VpbF9wb3cyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwiZmxvb3JfcG93MiIsImlzX3BvdzIiLCJmbG9vcl9sb2cyIiwiY2VpbF9sb2cyIiwicG9wY291bnQiLCJsbm90Iiwic3VjY19leG4iLCJtc2ciLCJwcmVkX2V4biIsIm9mX3NjYWxhciIsIm9mX3NjYWxhcl9leG4iLCJ0b19zY2FsYXIiLCJ0b19jaGFyIiwidG9fY2hhcl9leG4iLCJ1dGY4X2J5dGVfbGVuZ3RoIiwidWNoYXIiLCJjb2RlcG9pbnQiLCJzb21lX3QiLCJzeW0iLCJ0cmFucyIsImNvbnYiLCJkZXR1cGxlMiIsInR1cGxlMiIsIndpdG5lc3MiLCJ2XzAwNSIsInRvX3NleHAiLCJ1aWQiLCJzYW1lX3dpdG5lc3MiLCJzYW1lIiwic2FtZV93aXRuZXNzX2V4biIsIm5vbmVfc3Vic3RpdHV0ZSIsIm5vbmUiLCJ2YWx1ZV91bnNhZmUiLCJvZl9zZXhwYWJsZSIsInRvX3NleHBhYmxlIiwieF8wMDMiLCJvZl9hXzAwNCIsInhfMDA1IiwiaW5pdF9zb21lIiwiZ2V0X3NvbWVfZXhuIiwiaXNfbm9uZSQwIiwiaXNfc29tZSQwIiwic2V0X3NvbWUiLCJzZXRfbm9uZSIsInVuc2FmZV9nZXRfc29tZV9leG4iLCJ1bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSIsInVuc2FmZV9pc19zb21lIiwidW5zYWZlX3NldF9zb21lIiwidW5zYWZlX3NldF9ub25lIiwiY2xlYXIiLCJlbGVtIiwibWFwX3NvbWUiLCJvZl9hcnJheV9zb21lIiwiY2FwYWNpdHkiLCJlbHRzIiwibGVuZ3RoXzAwMyIsImVsdHNfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJyZXNpemUiLCJzaXplIiwic2V0X2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5JDAiLCJwdXNoIiwicG9wX25vbmVtcHR5IiwicG9wX2Vycm9yIiwicG9wIiwicG9wX2V4biIsInRvcF9ub25lbXB0eSIsInRvcF9lcnJvciIsInRvcCIsInRvcF9leG4iLCJ1bnRpbF9lbXB0eSIsInRfcmVzdWx0IiwiZmlsdGVyX2lucGxhY2UiLCJ3cml0ZV9pbmRleCIsInJlYWRfaW5kZXgiLCJoYXNoX292ZXJyaWRlIiwib2ZfcG9zIiwib2Zfc2lnbiIsInRvX3NpZ25fZXhuIiwidG9faW50X2V4biIsImVycm9yX3NvdXJjZV8wMDYiLCJpbnRlcnZhbF9jb21wYXJpc29uX3NleHBfZ3JhbW0iLCJhbGxfb2ZfYSIsImVudW1lcmF0ZV8wMDIiLCJlbnVtZXJhdGVfMDAxIiwiYWNjJDIiLCJvZl9hXzAwMyIsInNleHBfMDA4IiwidGFnXzAwOSIsInNleHBfYXJnc18wMTAiLCJhcmcwXzAxMSIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJhcmcwXzAyMiIsInJlczBfMDIzIiwiaW50ZXJ2YWxfY29tcGFyaXNvbl9vZl9zZXhwIiwic2V4cF8wMjgiLCJzZXhwX29mX2ludGVydmFsX2NvbXBhcmlzb24iLCJjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24iLCJoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImluY2wiLCJleGNsIiwiaXNfbG93ZXJfYm91bmQiLCJpc191cHBlcl9ib3VuZCIsImJvdW5kc19jcm9zc2VkIiwibG93ZXIiLCJ1cHBlciIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY29tcGFyZV90b19pbnRlcnZhbF9leG4iLCJpbnRlcnZhbF9jb250YWluc19leG4iLCJlcnJvcl9zb3VyY2VfMDU3IiwicmlnaHRfMDA0IiwibGVmdF8wMDMiLCJyaWdodF8wMDgiLCJsZWZ0XzAwNyIsIm9mX2FfMDA5Iiwidl8wMTAiLCJjbXBfayIsImNtcF92IiwiYV8wMTEiLCJiXzAxMiIsInRfMDE0IiwidF8wMTMiLCJ0XzAxNiIsInRfMDE1IiwicmlnaHRfMDE4IiwibGVmdF8wMTciLCJyaWdodF8wMjIiLCJsZWZ0XzAyMSIsInRfMDI0IiwidF8wMjMiLCJ0XzAyNiIsInRfMDI1IiwicmlnaHRfMDIwIiwibGVmdF8wMTkiLCJ0XzAzMCIsInRfMDI5IiwidF8wMzIiLCJ0XzAzMSIsInJpZ2h0XzAzNCIsImxlZnRfMDMzIiwicmlnaHRfMDM4IiwibGVmdF8wMzciLCJ0XzA0MCIsInRfMDM5IiwidF8wNDIiLCJ0XzA0MSIsInJpZ2h0XzAzNiIsImxlZnRfMDM1Iiwib2Zfa18wNDMiLCJvZl92XzA0NCIsInNleHBfMDcxIiwiYXJnMV8wNjgiLCJhcmcwXzA2NyIsInJlczBfMDY5IiwiYXRvbV8wNDciLCJzZXhwX2FyZ3NfMDUwIiwiYXRvbV8wNDckMCIsImFyZzBfMDU4IiwiYXJnMV8wNTMiLCJyZXMwXzA1NCIsInJlczFfMDU1IiwicmVzMF8wNTkiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwiYXJnMF8wNjQiLCJyZXMwXzA2NSIsInJlczFfMDcwIiwib2Zfa18wNzIiLCJvZl92XzA3MyIsImFyZzFfMDgyIiwiYXJnMF8wODEiLCJyZXMwXzA4MyIsInZfMDc0IiwicmVzMV8wODQiLCJ2XzA3NiIsImFyZzFfMDc4IiwiYXJnMF8wNzciLCJyZXMwXzA3OSIsInJlczFfMDgwIiwidl8wNzUiLCJrX3NleHBfZ3JhbW1hciIsInZfc2V4cF9ncmFtbWFyIiwiY21wX2xlZnQiLCJjbXBfcmlnaHQiLCJhXzA4NSIsImJfMDg2IiwicmlnaHRfMDkyIiwibGVmdF8wOTEiLCJ0XzA5NCIsInRfMDkzIiwidF8wOTYiLCJ0XzA5NSIsInJpZ2h0XzA4OCIsImxlZnRfMDg3IiwicmlnaHRfMDkwIiwibGVmdF8wODkiLCJhXzA5NyIsImJfMDk4IiwicmlnaHRfMTA0IiwibGVmdF8xMDMiLCJ0XzEwNiIsInRfMTA1IiwidF8xMDgiLCJ0XzEwNyIsInJpZ2h0XzEwMCIsImxlZnRfMDk5IiwicmlnaHRfMTAyIiwibGVmdF8xMDEiLCJvZl9sZWZ0XzEwOSIsIm9mX3JpZ2h0XzExMCIsInZfMTEzIiwiYXJnMV8xMTUiLCJhcmcwXzExNCIsInJlczBfMTE2IiwicmVzMV8xMTciLCJ2XzExMSIsInZfMTEyIiwic2V4cF9vZl90JDMiLCJoZWlnaHQiLCJpbl9yYW5nZSIsImhsIiwiaHIiLCJsb3dlciQxIiwiaW52YXJpYW50cyIsImgkMSIsImgkMCIsInNsIiwic3IiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2siLCJrbCIsImskMSIsImtsJDAiLCJrJDIiLCJrciIsImxlZnRfbGVuZ3RoIiwicmlnaHRfbGVuZ3RoIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCIsImFycmF5X2xlbmd0aCIsIm9mX3NvcnRlZF9hcnJheSIsImluY3JlYXNpbmciLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYkMCIsImxybCIsImxydiIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiQwIiwicmxsIiwicmx2IiwiYXV4IiwiYWRkX21pbiIsImFkZF9tYXgiLCJsaCIsImx2JDAiLCJyaCIsInJ2JDAiLCJtaW5fZWx0X2V4biIsImZvbGRfdW50aWxfaGVscGVyIiwidmFsdWUkMCIsIm1heF9lbHRfZXhuIiwicmVtb3ZlX21pbl9lbHQiLCJtYXliZV9lbHQiLCJtYXliZV9lbHQkMCIsInNwbGl0X2xlX2d0Iiwic3BsaXRfbHRfZ2UiLCJlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW8iLCJyZW1vdmVfaW5kZXgiLCJsX3NpemUiLCJ1bmlvbiIsInYxJDAiLCJ2MiQwIiwicjIkMCIsInIxJDAiLCJ1bmlvbl9saXN0IiwidG9fdHJlZSIsImludGVyIiwib3RoZXJfc2V0IiwiZSQxIiwiY29uc19yaWdodCIsIm9mX3NldCIsImVudW0kMCIsInRyZWUiLCJzeW1tZXRyaWNfZGlmZiIsImVsdCQwIiwiZW51bTEiLCJ0cmVlMSIsImVudW0yIiwidHJlZTIiLCJjb21wYXJlX3Jlc3VsdCIsIm5leHRfc3RhdGUiLCJncmVhdGVyX29yX2VxdWFsX3RvIiwibGVzc19vcl9lcXVhbF90byIsImluY2x1c2l2ZV9ib3VuZCIsInNpZGUiLCJtYXliZSIsInYkMSIsInYkMiIsInYkMyIsInYkNCIsImUkMiIsIm1lcmdlX3RvX3NlcXVlbmNlIiwiZTIkMiIsImUxJDIiLCJlMiQwIiwiZTEkMCIsImUyJDEiLCJlMSQxIiwidDIkMiIsInQxJDIiLCJpc19zdWJzZXQiLCJhcmVfZGlzam9pbnQiLCJhY2N1JDEiLCJmaWx0Iiwia2VlcF92IiwibF9mIiwibF90Iiwia2VlcF92X3QiLCJyX2YiLCJyX3QiLCJtayIsImVsZW1lbnRzX2F1eCIsImVsZW1lbnRzIiwiY2hvb3NlIiwiY2hvb3NlX2V4biIsInBvc19yZWYiLCJncm91cF9ieSIsImVxdWl2Iiwic2V0JDAiLCJlcXVpdl9jbGFzc2VzIiwibm90X2VxdWl2X3giLCJlcXVpdl94IiwiZXF1aXZfY2xhc3NlcyQwIiwic3RhYmxlX2RlZHVwX2xpc3QiLCJsZWZ0b3ZlcnMiLCJhbHJlYWR5X3NlZW4iLCJhbHJlYWR5X3NlZW4kMCIsImxlZnRvdmVycyQwIiwidF9vZl9zZXhwX2RpcmVjdCIsImVsdF9sc3QiLCJlbF9zZXhwIiwiaXNfc3Vic2V0JDAiLCJzdWJzZXQiLCJzdXBlcnNldCIsInNleHBfb2ZfZWx0IiwiaW52YWxpZF9lbGVtZW50cyIsImludmFsaWRfZWxlbWVudHNfc2V4cCIsImxpa2UiLCJsaWtlX21heWJlX25vX29wIiwib2xkX3QiLCJvbGRfdHJlZSIsImNvbXBhcmF0b3JfcyIsImludmFyaWFudHMkMCIsImVsZW1lbnRzJDAiLCJtaW5fZWx0X2V4biQwIiwibWF4X2VsdF9leG4kMCIsImNob29zZSQwIiwiY2hvb3NlX2V4biQwIiwiZm9sZF9yaWdodCQwIiwiaXRlcjIkMCIsImZpbHRlciQwIiwiYWRkJDAiLCJyZW1vdmUkMCIsInVuaW9uJDAiLCJpbnRlciQwIiwiZGlmZiQwIiwic3ltbWV0cmljX2RpZmYkMCIsImNvbXBhcmVfZGlyZWN0IiwiaXNfc3Vic2V0JDEiLCJvZiIsImFyZV9kaXNqb2ludCQwIiwidG9fbmFtZWRfdHJlZSIsIm5hbWVkIiwiaXNfc3Vic2V0JDIiLCJwYXJ0aXRpb25fdGYkMCIsInRyZWVfZiIsInRyZWVfdCIsInNwbGl0X2xlX2d0JDAiLCJzcGxpdF9sdF9nZSQwIiwiZ3JvdXBfYnkkMCIsIm50aCQwIiwicmVtb3ZlX2luZGV4JDAiLCJ0b19zZXF1ZW5jZSQwIiwiYmluYXJ5X3NlYXJjaCQwIiwiYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQkMCIsIm1lcmdlX3RvX3NlcXVlbmNlJDAiLCJoYXNoX2ZvbGRfZGlyZWN0IiwidF9vZl9zZXhwX2RpcmVjdCQwIiwiaW52YXJpYW50cyQxIiwiaXNfZW1wdHkkMSIsImVsZW1lbnRzJDEiLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2V4biQxIiwibWF4X2VsdCQxIiwibWF4X2VsdF9leG4kMSIsImNob29zZSQxIiwiY2hvb3NlX2V4biQxIiwidG9fYXJyYXkkMSIsIml0ZXIkMiIsImV4aXN0cyQxIiwiZm9yX2FsbCQxIiwiY291bnQkMSIsInN1bSQxIiwiZmluZCQxIiwiZmluZF9leG4kMSIsImZpbmRfbWFwJDEiLCJmb2xkJDEiLCJmb2xkX3VudGlsJDEiLCJmb2xkX3JpZ2h0JDEiLCJmaWx0ZXIkMSIsImZpbHRlcl9tYXAkMCIsInBhcnRpdGlvbl90ZiQxIiwiaXRlcjIkMSIsIm1lbSQxIiwiYWRkJDEiLCJyZW1vdmUkMSIsInVuaW9uJDEiLCJpbnRlciQxIiwiZGlmZiQxIiwic3ltbWV0cmljX2RpZmYkMSIsImNvbXBhcmVfZGlyZWN0JDAiLCJpc19zdWJzZXQkMyIsImFyZV9kaXNqb2ludCQxIiwib2Zfc2VxdWVuY2UkMCIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMCIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJ1bmlvbl9saXN0JDAiLCJzdGFibGVfZGVkdXBfbGlzdCQwIiwiZ3JvdXBfYnkkMSIsInNwbGl0JDEiLCJzcGxpdF9sZV9ndCQxIiwic3BsaXRfbHRfZ2UkMSIsIm50aCQxIiwicmVtb3ZlX2luZGV4JDEiLCJvZl90cmVlIiwidG9fc2VxdWVuY2UkMSIsImJpbmFyeV9zZWFyY2gkMSIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDEiLCJtZXJnZV90b19zZXF1ZW5jZSQxIiwiaXNfc3Vic2V0JDQiLCJ0b190cmVlJDAiLCJvZl90cmVlJDAiLCJ0X29mX3NleHBfZGlyZWN0JDEiLCJlbXB0eSQwIiwic2luZ2xldG9uJDAiLCJ1bmlvbl9saXN0JDEiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDEiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMSIsIm9mX3NvcnRlZF9hcnJheSQxIiwib2ZfbGlzdCQxIiwib2Zfc2VxdWVuY2UkMSIsIm9mX2FycmF5JDEiLCJzdGFibGVfZGVkdXBfbGlzdCQxIiwiZmlsdGVyX21hcCQxIiwiZW1wdHkkMSIsInNpbmdsZXRvbiQxIiwidW5pb25fbGlzdCQyIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9zb3J0ZWRfYXJyYXkkMiIsIm9mX2xpc3QkMiIsIm9mX3NlcXVlbmNlJDIiLCJvZl9hcnJheSQyIiwic3RhYmxlX2RlZHVwX2xpc3QkMiIsImZpbHRlcl9tYXAkMiIsIm9mX3RyZWUkMSIsInNleHBfb2ZfbV90IiwiRWx0IiwibV90X29mX3NleHAiLCJtX3Rfc2V4cF9ncmFtbWFyIiwiY29tcGFyZV9tX3QiLCJlcXVhbF9tX3QiLCJoYXNoX2ZvbGRfbV90IiwiaGFzaF9tX3QiLCJjb21wYXJhdG9yJDAiLCJlbXB0eSQyIiwic2luZ2xldG9uJDIiLCJ1bmlvbl9saXN0JDMiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDMiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMyIsIm9mX3NvcnRlZF9hcnJheSQzIiwib2ZfbGlzdCQzIiwib2Zfc2VxdWVuY2UkMyIsIm9mX2FycmF5JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl90cmVlJDIiLCJ0b190cmVlJDEiLCJyZXBsYWNlIiwic2V0X3RlbXBvcmFyaWx5IiwicmVzdG9yZV90byIsInNldHMiLCJzbmFwc2hvdCIsInNldHNfdGVtcG9yYXJpbHkiLCJhbmRfdmFsdWVzIiwiaW5jX251bV9tdXRhdGlvbnMiLCJlbHRzX2luZGV4IiwiY2hlY2tfaW5kZXhfZXhuIiwiZW5zdXJlX25vX211dGF0aW9uIiwibnVtX211dGF0aW9ucyIsIm51bV9tdXRhdGlvbnNfMDAzIiwiZnJvbnRfMDA1IiwibWFza18wMDciLCJsZW5ndGhfMDA5IiwiZWx0c18wMTEiLCJhcmdfMDEyIiwiYm5kc18wMDIkMSIsImJuZHNfMDAyJDIiLCJibmRzXzAwMiQzIiwibXV0MiIsIm11dDEiLCJmcm9udCIsImNhcGFjaXR5JDAiLCJjYXBhY2l0eSQxIiwiYmxpdF90b19hcnJheSIsImZyb250X2xlbiIsInJlc3RfbGVuIiwic2V0X2NhcGFjaXR5X2ludGVybmFsIiwiZGVzaXJlZF9jYXBhY2l0eSIsImVucXVldWUiLCJkZXF1ZXVlX25vbmVtcHR5IiwiZGVxdWV1ZV9leG4iLCJkZXF1ZXVlIiwiZGVxdWV1ZV9hbmRfaWdub3JlX2V4biIsImZyb250X25vbmVtcHR5IiwibGFzdF9ub25lbXB0eSIsInBlZWtfZXhuIiwiYmxpdF90cmFuc2ZlciIsImxlbiQxIiwiZHN0X3N0YXJ0Iiwic3JjX2kiLCJkc3RfaSIsImVucXVldWVfYWxsIiwiZmlsdGVyaV9pbnBsYWNlIiwidW5yZWFjaGFibGVfY29kZSIsInplcm8kMCIsIm1pbnVzX29uZSIsInplcm8kMSIsInRvX2ludF90cnVuYyIsInRvX2ludDMyX3RydW5jIiwib2ZfaW50NjRfdHJ1bmMiLCJuYW1lJDAiLCJvZl9jb250aW51ZV9vcl9zdG9wIiwidG9fY29udGludWVfb3Jfc3RvcCIsImxlZnRfdmFsdWUiLCJyaWdodF92YWx1ZSIsInZhbHVlcyIsImxlZnRfZGVmYXVsdCIsInJpZ2h0X2RlZmF1bHQiLCJyaWdodCQwIiwiY29tcGFyZV9rZXkiLCJ2bCIsInZsJDAiLCJ2ciIsImswIiwiazEiLCJsZCIsImxyZCIsImxyZCQwIiwicmQiLCJybGQiLCJybGQkMCIsInJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQiLCJzZXhwX29mX2tleSIsImZpbmRfYW5kX2FkZF9vcl9zZXQiLCJkYXRhIiwiYWRkX29yX3NldCIsInRyZWUkMCIsInRyZWUkMSIsImxlbmd0aCQyIiwidHJlZSQyIiwiZCQwIiwidHJlZSQzIiwibGVuZ3RoJDMiLCJ0cmVlJDQiLCJsZW5ndGgkNCIsInRyZWUkNSIsInNldF9taW4iLCJzZXRfbWF4IiwiYWRkX2V4biIsImFkZF9leG5faW50ZXJuYWwiLCJzaW5nbGV0b25fdG9fdHJlZV9leG4iLCJjb2xsYXBzZSIsImdvIiwiYWRkX3VuY2hlY2tlZCIsImdvJDAiLCJ0b190cmVlX3VuY2hlY2tlZCIsIm1heF9rZXkiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIiwiYnVpbGRlciIsInByZXZfa2V5Iiwiam9pbiQwIiwibGQkMCIsImxrJDAiLCJyayIsInJkJDAiLCJyayQwIiwibGsiLCJjbXAkMCIsIm1heWJlJDAiLCJzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkiLCJpbnRvIiwiYm91bmRhcnlfb3B0Iiwic3BsaXRfcmFuZ2UiLCJtaWRfYW5kX3JpZ2h0IiwibGIkMSIsImxiJDIiLCJtaWRfYW5kX3JpZ2h0JDAiLCJsYiIsImxiJDAiLCJtaWQkMCIsImFkZF9tdWx0aSIsImRhdGEkMCIsImZpbmRfbXVsdGkiLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsIm1pbl91cHBlciIsIm1heF9sb3dlciIsInVwcGVyX3BhcnRfd2l0aG91dF9taW4iLCJnbyQxIiwiY19taW4iLCJjX21heCIsImluaXQkMiIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlIiwicmFuZ2VfdG9fYWxpc3QiLCJjb25jYXRfdW5jaGVja2VkIiwiY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCIsInJlbW92ZV9sb29wIiwiY2hhbmdlIiwiY2hhbmdlX2NvcmUiLCJkJDEiLCJsZW5ndGgkNSIsImxlbmd0aCQ2IiwidHJlZSQ2IiwidXBkYXRlIiwidXBkYXRlX2NvcmUiLCJyZW1vdmVfbXVsdGkiLCJub25fZW1wdHlfdGFpbCIsIml0ZXJfa2V5cyIsIml0ZXJpX3VudGlsX2xvb3AiLCJpdGVyaV91bnRpbCIsImZvbGRfdW50aWxfbG9vcCIsImZpbmFsJDEiLCJmaW5hbCQwIiwibmV3X2RhdGEiLCJuZXdfZGF0YSQwIiwibmV3X2RhdGEkMSIsImtlZXBfZGF0YSIsImZpbHRlcl9rZXlzIiwia2VlcF9kYXRhX3QiLCJzdGVwX2RlZXBlcl9leG4iLCJkcm9wX3BoeXNfZXF1YWxfcHJlZml4IiwiYWNjMSIsImFjYzIiLCJ0cmVlMSQwIiwiYWNjMSQwIiwidHJlZTIkMCIsImFjYzIkMCIsImFjYzEkMSIsInRyZWUxJDEiLCJhY2MyJDEiLCJ0cmVlMiQxIiwiYWNjMiQyIiwidHJlZTIkMiIsImFjYzEkMiIsInRyZWUxJDIiLCJjdXJyIiwiazIiLCJuZXh0JDEiLCJkYXRhX2VxdWFsIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiZCQyIiwiY29tcGFyZV9kYXRhIiwiZDIiLCJkMSIsImZvbGQyJDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwiZGVsdGEiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwicmlnaHQkMSIsImVudW0yJDAiLCJlbnVtMSQwIiwia2V5cyIsIm9mX2ZvbGRhYmxlIiwiZm9sZGFibGUiLCJwcmV2X2RhdGEiLCJvZl9mb2xkYWJsZV9mb2xkIiwib2ZfZm9sZGFibGVfcmVkdWNlIiwib2ZfZm9sZGFibGUkMCIsIm9mX2ZvbGRhYmxlX29yX2Vycm9yIiwib2ZfZm9sZGFibGVfZXhuIiwib2ZfZm9sZGFibGVfbXVsdGkiLCJvZl9hbGlzdF9mb2xkIiwib2ZfYWxpc3RfcmVkdWNlIiwib2ZfYWxpc3QiLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X2V4biIsIm9mX2FsaXN0X211bHRpIiwiZm9sZCQyIiwib2Zfc2VxdWVuY2VfZm9sZCIsIm9mX3NlcXVlbmNlX3JlZHVjZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9saXN0X3dpdGhfa2V5IiwiZ2V0X2tleSIsIm5ld19sZW5ndGgiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIiwib2ZfbGlzdF93aXRoX2tleV9leG4iLCJvZl9saXN0X3dpdGhfa2V5X211bHRpIiwidG9fYWxpc3QiLCJrZXlfb3JkZXIiLCJtZXJnZV9sYXJnZV9maXJzdCIsImxlbmd0aF9sYXJnZSIsInRfbGFyZ2UiLCJ0X3NtYWxsIiwibWVyZ2Vfc2tld2VkIiwibGVuZ3RoMSIsImxlbmd0aDIiLCJyZXBhY2thZ2UiLCJtYXJrZXIiLCJjbG9zZXN0X2tleSIsImZvdW5kX21hcmtlciIsImZvdW5kX2tleSIsImZvdW5kX3ZhbHVlIiwiZm91bmRfdmFsdWUkMCIsImZvdW5kX2tleSQwIiwicmFuayIsIm51bV90b19zZWFyY2giLCJwYWlyIiwicGFpciQwIiwiYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmQiLCJtYXliZV9ib3VuZCIsImlmX2V4Y2x1c2l2ZSIsImlmX2luY2x1c2l2ZSIsImZpbmRfYm91bmQiLCJib3VuZCQwIiwiYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIiwibG93ZXJfYm91bmQkMCIsInVwcGVyX2JvdW5kJDAiLCJvZl9pdGVyaSIsIm9mX2l0ZXJpX2V4biIsImtleV9vZl9zZXhwIiwidmFsdWVfb2Zfc2V4cCIsImFsaXN0X3NleHBzIiwiZm91bmRfZmlyc3RfayIsImsyX3NleHAiLCJzZXhwX29mX3ZhbHVlIiwiZXJyb3JzIiwib2tzIiwibWFwX2tleXMiLCJtYXBfa2V5c19leG4iLCJ0cmFuc3Bvc2Vfa2V5cyIsIm91dGVyX2NvbXBhcmF0b3IiLCJpbm5lcl9jb21wYXJhdG9yIiwib3V0ZXJfdCIsIm91dGVyX2tleSIsImlubmVyX3QiLCJpbm5lcl9rZXkiLCJhY2NfbGVuIiwiZWx0X2xlbiIsInRyZWVfZmlsdGVyX21hcGkiLCJyX2xlbiIsImxfbGVuIiwid2l0aF9zYW1lX2xlbmd0aCIsIm9mX2xpa2VfdHJlZSIsIm9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCIsImFkZF9leG4kMCIsImFkZF9tdWx0aSQwIiwicmVtb3ZlX211bHRpJDAiLCJmaW5kX211bHRpJDAiLCJjaGFuZ2UkMCIsInVwZGF0ZSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaV91bnRpbCQwIiwiZm9sZCQzIiwiZm9sZDIkMSIsImZpbHRlcl9rZXlzJDAiLCJmaWx0ZXJpJDAiLCJmaWx0ZXJfbWFwaSQwIiwib2ZfbGlrZV90cmVlMiIsIm9mX2xpa2VfdHJlZTJfbWF5YmVfbm9fb3AiLCJwYXJ0aXRpb25fbWFwaSQwIiwicGFydGl0aW9uX21hcCQwIiwicGFydGl0aW9uaV90ZiQwIiwiY29tYmluZV9lcnJvcnMkMCIsImtleXMkMCIsInRvX2FsaXN0JDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDAiLCJtZXJnZSQwIiwibWVyZ2Vfc2tld2VkJDAiLCJib3RoX2xlbiIsInNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSQwIiwic3VicmFuZ2UiLCJoX2wiLCJoX3IiLCJvdXRlcl9qb2luZWRfaGVpZ2h0IiwibWlkX2xlbmd0aCIsImFwcGVuZCQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMCIsInJhbmdlX3RvX2FsaXN0JDAiLCJjbG9zZXN0X2tleSQwIiwicmFuayQwIiwic2V4cF9vZl9rIiwic2V4cF9vZl92IiwiaGFzaF9mb2xkX2tleSIsImhhc2hfZm9sZF9kYXRhIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSIsIm5ld190cmVlIiwibmV3X3RyZWVfd2l0aF9sZW5ndGgiLCJvZl9hbGlzdCQwIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMCIsIm9mX2FsaXN0X2V4biQwIiwib2ZfYWxpc3RfbXVsdGkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwicmVxdWlyZWRfYnlfaW50ZiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDAiLCJvZl9zZXF1ZW5jZV9leG4kMCIsIm9mX3NlcXVlbmNlX211bHRpJDAiLCJvZl9zZXF1ZW5jZV9mb2xkJDAiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMCIsIm9mX2xpc3Rfd2l0aF9rZXkkMCIsIm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IkMCIsIm9mX2xpc3Rfd2l0aF9rZXlfZXhuJDAiLCJvZl9saXN0X3dpdGhfa2V5X211bHRpJDAiLCJzZXQkMSIsImFkZF9leG4kMSIsImFkZF9tdWx0aSQxIiwicmVtb3ZlX211bHRpJDEiLCJmaW5kX211bHRpJDEiLCJjaGFuZ2UkMSIsInVwZGF0ZSQxIiwiaXRlcl9rZXlzJDEiLCJpdGVyaV91bnRpbCQxIiwibWFwaSQxIiwiZm9sZCQ0IiwiZm9sZDIkMiIsImZpbHRlcl9rZXlzJDEiLCJmaWx0ZXJpJDEiLCJmaWx0ZXJfbWFwaSQxIiwicGFydGl0aW9uX21hcGkkMSIsInBhcnRpdGlvbl9tYXAkMSIsInBhcnRpdGlvbmlfdGYkMSIsImNvbWJpbmVfZXJyb3JzJDEiLCJrZXlzJDEiLCJkYXRhJDEiLCJ0b19hbGlzdCQxIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQxIiwibWVyZ2UkMSIsIm1lcmdlX3NrZXdlZCQxIiwiZm9yX2FsbGkkMSIsImV4aXN0c2kkMSIsImNvdW50aSQxIiwiYXBwZW5kJDEiLCJzdWJyYW5nZSQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMSIsInJhbmdlX3RvX2FsaXN0JDEiLCJjbG9zZXN0X2tleSQxIiwibnRoJDIiLCJudGhfZXhuJDAiLCJyYW5rJDEiLCJrX29mX3NleHAiLCJ2X29mX3NleHAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJtYXBfa2V5cyQwIiwiZHVwIiwibWFwX2tleXNfZXhuJDAiLCJ0cmFuc3Bvc2Vfa2V5cyQwIiwiYWRkX2V4biQyIiwib2ZfdHJlZTAiLCJvZl9hbGlzdCQxIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMSIsIm9mX2FsaXN0X2V4biQxIiwib2ZfYWxpc3RfbXVsdGkkMSIsIm9mX2FsaXN0X2ZvbGQkMSIsIm9mX2FsaXN0X3JlZHVjZSQxIiwib2ZfaXRlcmkkMSIsInRyZWVfbGVuZ3RoIiwib2ZfaXRlcmlfZXhuJDEiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJvZl9saXN0X3dpdGhfa2V5JDEiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDEiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQxIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwidHJhbnNwb3NlX2tleXMkMSIsIm9mX3RyZWUkMyIsIm9mX2FsaXN0JDIiLCJvZl9hbGlzdF9vcl9lcnJvciQyIiwib2ZfYWxpc3RfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9pdGVyaSQyIiwib2ZfaXRlcmlfZXhuJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQyIiwib2Zfc2VxdWVuY2VfZXhuJDIiLCJvZl9zZXF1ZW5jZV9tdWx0aSQyIiwib2Zfc2VxdWVuY2VfZm9sZCQyIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDIiLCJvZl9saXN0X3dpdGhfa2V5JDIiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDIiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQyIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwidHJhbnNwb3NlX2tleXMkMiIsIksiLCJ2X2dyYW1tYXIiLCJjb21wYXJlX3YiLCJlcXVhbF92IiwiaGFzaF9mb2xkX3YiLCJvZl90cmVlJDQiLCJlbXB0eSQzIiwib2ZfYWxpc3QkMyIsIm9mX2FsaXN0X29yX2Vycm9yJDMiLCJvZl9hbGlzdF9leG4kMyIsIm9mX2FsaXN0X211bHRpJDMiLCJvZl9hbGlzdF9mb2xkJDMiLCJvZl9hbGlzdF9yZWR1Y2UkMyIsIm9mX2l0ZXJpJDMiLCJvZl9pdGVyaV9leG4kMyIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMyIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDMiLCJvZl9zZXF1ZW5jZV9leG4kMyIsIm9mX3NlcXVlbmNlX211bHRpJDMiLCJvZl9zZXF1ZW5jZV9mb2xkJDMiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMyIsIm9mX2xpc3Rfd2l0aF9rZXkkMyIsIm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IkMyIsIm9mX2xpc3Rfd2l0aF9rZXlfZXhuJDMiLCJvZl9saXN0X3dpdGhfa2V5X211bHRpJDMiLCJtYXBfa2V5cyQzIiwibWFwX2tleXNfZXhuJDMiLCJ0cmFuc3Bvc2Vfa2V5cyQzIiwidHJhbnNmZXIiLCJjYW1sX2l0ZXIiLCJjYW1sX2ZvbGQiLCJxIiwicSQwIiwiZmxvYXRfb2ZfYml0cyIsImJpdHNfb2ZfZmxvYXQiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJ0b19uYXRpdmVpbnRfZXhuIiwid3JhcF9leG4iLCJ1bndyYXAiLCJjbHoiLCJjdHoiLCJpbnZhbGlkX3N0ciIsIm9mX3N0cmluZ19yYXciLCJzaWduZWRuZXNzIiwicG9zX3N0ciIsImludDYzIiwib25lJDAiLCJvZl9uYXRpdmVpbnRfdHJ1bmMiLCJ0b19uYXRpdmVpbnRfdHJ1bmMiLCJ0b19zdHJpbmckMSIsIm9mX2ludF90cnVuYyIsInJlcHIiLCJyZXByJDAiLCJpbmNsdWRlIiwib2ZfZmxvYXQkMCIsInRvX2Zsb2F0JDAiLCJvZl9pbnRfZXhuJDAiLCJ0b19pbnRfZXhuJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwib2Zfc3RyaW5nX29wdCQwIiwidG9fc3RyaW5nX2h1bSQwIiwibWludXNfb25lJDAiLCJyZW0kMCIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJzdWNjJDAiLCJwcmVkJDAiLCJwb3ckMCIsImJpdF9hbmQkMCIsImJpdF9vciQwIiwiYml0X3hvciQwIiwiYml0X25vdCQwIiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJkZWNyJDAiLCJpbmNyJDAiLCJvZl9pbnQzMl9leG4kMCIsInRvX2ludDMyX2V4biQwIiwib2ZfaW50NjRfZXhuJDAiLCJ0b19pbnQ2NCQwIiwib2ZfbmF0aXZlaW50X2V4biQwIiwidG9fbmF0aXZlaW50X2V4biQwIiwibnVtX2JpdHMkMCIsIm1heF92YWx1ZSQwIiwibWluX3ZhbHVlJDAiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDAiLCJjZWlsX3BvdzIkMCIsImZsb29yX3BvdzIkMCIsImNlaWxfbG9nMiQwIiwiaXNfcG93MiQwIiwiY2x6JDAiLCJjdHokMCIsIm9mX2ludCQwIiwidG9faW50JDAiLCJ0b19pbnRfdHJ1bmMkMCIsInRvX2ludDMyJDAiLCJvZl9pbnQ2NCQwIiwib2ZfbmF0aXZlaW50JDAiLCJ0b19uYXRpdmVpbnQkMCIsInRvX25hdGl2ZWludF90cnVuYyQwIiwib2ZfZmxvYXRfdW5jaGVja2VkJDAiLCJyZXByJDEiLCJic3dhcDMyJDAiLCJic3dhcDQ4JDAiLCJwb3NfZGlmZiIsIm5lZ2F0aXZlX29uZSIsImRpdl93b3VsZF9vdmVyZmxvdyIsInByb2R1Y3QiLCJhYnMkMSIsIm5lZyQwIiwicmFuZG9tX29mX2ludCIsInJhbmRvbV9vZl9pbnQ2NCIsInJhbmRvbV9vZl9pbnQkMCIsInJhbmRvbV9pbmNsX29mX2ludCIsInJhbmRvbV9pbmNsX29mX2ludDY0IiwicmFuZG9tX2luY2wiLCJpbnYiLCJsZWZ0X2tleSIsInJpZ2h0X2tleSIsInVwZGF0ZV9oZWlnaHQiLCJvbGRfaGVpZ2h0IiwibmV3X2hlaWdodCIsImJhbGFuY2UiLCJyb290X25vZGUiLCJsZWZ0X25vZGUiLCJyaWdodF9ub2RlIiwibGVmdF9ub2RlX2xlZnQiLCJsZWZ0X25vZGVfcmlnaHQiLCJscl9sZWZ0IiwibHJfcmlnaHQiLCJyaWdodF9ub2RlX2xlZnQiLCJyaWdodF9ub2RlX3JpZ2h0IiwicmxfbGVmdCIsInJsX3JpZ2h0Iiwic2V0X2xlZnQiLCJub2RlIiwic2V0X3JpZ2h0IiwiYWRkZWQiLCJmaW5kaV9hbmRfY2FsbF9pbXBsIiwiYXJnMSIsImFyZzIiLCJjYWxsX2lmX2ZvdW5kIiwiY2FsbF9pZl9ub3RfZm91bmQiLCJmaW5kX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQwIiwiY2FsbF9pZl9ub3RfZm91bmQkMCIsImZpbmRpX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQxIiwiY2FsbF9pZl9ub3RfZm91bmQkMSIsImZpbmRfYW5kX2NhbGwxIiwiY2FsbF9pZl9mb3VuZCQyIiwiY2FsbF9pZl9ub3RfZm91bmQkMiIsImZpbmRpX2FuZF9jYWxsMSIsImNhbGxfaWZfZm91bmQkMyIsImNhbGxfaWZfbm90X2ZvdW5kJDMiLCJmaW5kX2FuZF9jYWxsMiIsImNhbGxfaWZfZm91bmQkNCIsImNhbGxfaWZfbm90X2ZvdW5kJDQiLCJmaW5kaV9hbmRfY2FsbDIiLCJpZl9mb3VuZCQwIiwiaWZfbm90X2ZvdW5kJDAiLCJyZW1vdmVkIiwia2V5JDQiLCJkYXRhJDQiLCJya2V5IiwicmRhdGEiLCJrZXkkMSIsInJrZXkkMCIsInJkYXRhJDAiLCJsa2V5JDAiLCJsZGF0YSQwIiwia2V5JDMiLCJkYXRhJDMiLCJya2V5JDEiLCJyZGF0YSQxIiwibGtleSIsImxkYXRhIiwia2V5JDIiLCJkYXRhJDIiLCJtYXBpX2lucGxhY2UiLCJlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCIsIndpdGhvdXRfbXV0YXRpbmciLCJtYXhfdGFibGVfbGVuZ3RoIiwiZ3Jvd3RoX2FsbG93ZWQiLCJzaXplJDAiLCJzaXplJDEiLCJzbG90IiwiYWRkX3dvcmtlciIsIm5ld19yb290IiwibWF5YmVfcmVzaXplX3RhYmxlIiwic2hvdWxkX2dyb3ciLCJuZXdfYXJyYXlfbGVuZ3RoIiwibmV3X3RhYmxlIiwib2xkX3RhYmxlIiwic2V4cF9vZl9rZXkkMCIsImFkZGVkX29yX3JlbW92ZWQiLCJidWNrZXQiLCJjaG9vc2Vfbm9uZW1wdHkiLCJ0YWJsZSIsImF2bHRyZWUiLCJjaG9vc2VfcmFuZG9tbHlfbm9uZW1wdHkiLCJzdGFydF9pZHgiLCJjaG9vc2VfcmFuZG9tbHkiLCJjaG9vc2VfcmFuZG9tbHlfZXhuIiwiaW52YXJpYW50X2tleSIsImludmFyaWFudF9kYXRhIiwicmVhbF9sZW4iLCJuZXdfdCIsInQwIiwiZmluZF9vcl9hZGQiLCJpZCIsImZpbmRpX29yX2FkZCIsImZpbmRfYW5kX3JlbW92ZSIsInVwZGF0ZV9hbmRfcmV0dXJuIiwiaW5jcl9ieSIsInJlbW92ZV9pZl96ZXJvIiwiYnkiLCJjcmVhdGVfbWFwcGVkIiwiZ2V0X2RhdGEiLCJkdXBlcyIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsInNleHBfb2ZfZGF0YSIsImRfb2Zfc2V4cCIsImtfZ3JhbW1hciIsInJvdyIsIm9sZCIsImNyZWF0ZV93aXRoX2tleSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJtYXliZV9zZXQiLCJ0X2xlZnQiLCJ0X3JpZ2h0IiwibWVyZ2VfaW50byIsImRzdF9kYXRhJDAiLCJhY3Rpb24iLCJkc3RfZGF0YSIsInRvX3JlbW92ZSIsImZpbHRlcl9rZXlzX2lucGxhY2UiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwibWFwX3Jlc3VsdHMiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJzaW1pbGFyIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJjcmVhdGVfbWFwcGVkJDAiLCJjcmVhdGVfd2l0aF9rZXkkMCIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQwIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQwIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDEiLCJjcmVhdGVfbWFwcGVkJDEiLCJjcmVhdGVfd2l0aF9rZXkkMSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQxIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQxIiwiZ3JvdXAkMSIsImhhc2hhYmxlX3MiLCJwb2x5X2hhc2hhYmxlIiwic3RyaWN0X2FkZCIsInN0cmljdF9hZGRfZXhuIiwic3RyaWN0X3JlbW92ZSIsInN0cmljdF9yZW1vdmVfZXhuIiwic2V4cF9vZl9lIiwibGFyZ2VyIiwic21hbGxlciIsIm9mX2hhc2h0Ymxfa2V5cyIsImhhc2h0YmwiLCJ0b19oYXNodGJsIiwiZV9vZl9zZXhwIiwiZXJyb3Jfc291cmNlXzAwNyIsIm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUiLCJtaW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlIiwib2ZfaW50NjMiLCJpcm91bmRfbGJvdW5kIiwiaXJvdW5kX3Vib3VuZCIsImlyb3VuZF91cCIsImlyb3VuZF91cF9leG4iLCJpcm91bmRfZG93biIsImlyb3VuZF9kb3duX2V4biIsImlyb3VuZF90b3dhcmRzX3plcm8iLCJpcm91bmRfdG93YXJkc196ZXJvX2V4biIsInJvdW5kX25lYXJlc3RfbGIiLCJyb3VuZF9uZWFyZXN0X3ViIiwib25lX3VscF9sZXNzX3RoYW5faGFsZiIsImFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IiwiaXJvdW5kX25lYXJlc3RfMzIiLCJpcm91bmRfbmVhcmVzdF82NCIsInBpIiwic3FydF9waSIsInNxcnRfMnBpIiwiZXVsZXIiLCJpcm91bmRfbmVhcmVzdF82NCQwIiwiaXJvdW5kX25lYXJlc3RfZXhuXzMyIiwiaXJvdW5kX25lYXJlc3RfZXhuXzY0IiwiaXJvdW5kX25lYXJlc3RfZXhuIiwiaXJvdW5kX2V4biIsImlyb3VuZCIsImlzX2luZiIsImlzX2Zpbml0ZSIsIm1pbl9pbmFuIiwibWF4X2luYW4iLCJzcXVhcmUiLCJmcmFjdGlvbmFsIiwiaW50ZWdyYWwiLCJyb3VuZF9uZWFyZXN0X2lubGluZSIsInJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuIiwiY2VpbF9vcl9zdWNjIiwiZGlmZl9mbG9vciIsImRpZmZfY2VpbCIsImludDYzX3JvdW5kX2xib3VuZCIsImludDYzX3JvdW5kX3Vib3VuZCIsImludDYzX3JvdW5kX3VwX2V4biIsImludDYzX3JvdW5kX2Rvd25fZXhuIiwiaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hIiwiaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hIiwiaW50NjNfcm91bmRfbmVhcmVzdF9leG4iLCJjbGFzc2lmeSIsInN0cmlwX3plcm8iLCJkZWNpbWFscyIsImV4cGxpY2l0X3BsdXMiLCJ0b19wYWRkZWRfY29tcGFjdF9zdHJpbmdfY3VzdG8iLCJraWxvIiwibWVnYSIsImdpZ2EiLCJ0ZXJhIiwicGV0YSIsIm1hZyIsIm51bWVyYXRvciIsImRlbm9taW5hdG9yIiwiaGlnaGVyIiwiZGlmZl9yaWdodCIsImRpZmZfbGVmdCIsInBldGEkMCIsInRvX3BhZGRlZF9jb21wYWN0X3N0cmluZyIsInJvdW5kX2dlbiIsInNkIiwiZGQiLCJkZCQwIiwic2QkMCIsImRkJDEiLCJzZCQxIiwiYWJzX2RkIiwicm91bmRfc2lnbmlmaWNhbnQiLCJzaWduaWZpY2FudF9kaWdpdHMiLCJyb3VuZF9kZWNpbWFsIiwiZGVjaW1hbF9kaWdpdHMiLCJzaWduX2V4biIsInNpZ25fb3JfbmFuIiwiaWVlZV9uZWdhdGl2ZSIsIm1hbnRpc3NhX2JpdHMiLCJleHBvbmVudF9tYXNrNjQiLCJleHBvbmVudF9tYXNrIiwibWFudGlzc2FfbWFzayIsIm1hbnRpc3NhX21hc2s2NCIsImllZWVfZXhwb25lbnQiLCJpZWVlX21hbnRpc3NhIiwiY3JlYXRlX2llZWVfZXhuIiwibmVnYXRpdmUiLCJtYW50aXNzYSIsInNpZ25fYml0cyIsImV4cHRfYml0cyIsIm1hbnRfYml0cyIsImNyZWF0ZV9pZWVlIiwic3BlY2lhbGl6ZWRfaGFzaCIsImFkZF9zdWJzdHJpbmciLCJhZGRfc3ViYnl0ZXMiLCJjYW1sX2J1ZmZlcl9sZW5ndGgiLCJjYW1sX2J1ZmZlcl9ibGl0IiwiZWxpZGVkX21lc3NhZ2UiLCJlbGlkZSIsImF0X21vc3RfbnVtX2ZyYW1lcyIsInRvX3N0cmluZ19saXN0Iiwic2V0X3JlY29yZGluZyIsImFtX3JlY29yZGluZyIsIm1vc3RfcmVjZW50IiwibW9zdF9yZWNlbnRfZm9yX2V4biIsIndpdGhfcmVjb3JkaW5nIiwic2F2ZWQiLCJvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmEiLCJhcnJheV9vZl9zZXhwIiwic2V4cF9vZl9hcnJheSIsImFycmF5X3NleHBfZ3JhbW1hciIsImJvb2xfb2Zfc2V4cCIsInNleHBfb2ZfYm9vbCIsImJvb2xfc2V4cF9ncmFtbWFyIiwiY2hhcl9vZl9zZXhwIiwic2V4cF9vZl9jaGFyIiwiY2hhcl9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2V4biIsImdsb2JhbGl6ZV9mbG9hdCIsImZ1bmMkMSIsImZsb2F0X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX2ludCIsImZ1bmMkMiIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX2ludDMyIiwiZnVuYyQzIiwiaW50MzJfb2Zfc2V4cCIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJnbG9iYWxpemVfaW50NjQiLCJmdW5jJDQiLCJpbnQ2NF9vZl9zZXhwIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X3NleHBfZ3JhbW1hciIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX25hdGl2ZWludCIsImZ1bmMkNSIsIm5hdGl2ZWludF9vZl9zZXhwIiwic2V4cF9vZl9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIiwib3B0aW9uX29mX3NleHAiLCJzZXhwX29mX29wdGlvbiIsIm9wdGlvbl9zZXhwX2dyYW1tYXIiLCJyZWZfb2Zfc2V4cCIsInNleHBfb2ZfcmVmIiwicmVmX3NleHBfZ3JhbW1hciIsImdsb2JhbGl6ZV9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2Zfc3RyaW5nIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsImNvbXBhcmVfYnl0ZXMiLCJlcXVhbF9ieXRlcyIsImdsb2JhbGl6ZV9ieXRlcyIsImJ5dGVzX29mX3NleHAiLCJzZXhwX29mX2J5dGVzIiwiYnl0ZXNfc2V4cF9ncmFtbWFyIiwiZnVuYyQ2IiwidW5pdF9vZl9zZXhwIiwic2V4cF9vZl91bml0IiwidW5pdF9zZXhwX2dyYW1tYXIiLCJmYWlsd2l0aCIsImludmFsaWRfYXJnIiwiY29tcGFyZV9hcnJheSQwIiwiZXF1YWxfYXJyYXkkMCIsImdsb2JhbGl6ZV9hcnJheSQwIiwiYXJyYXlfb2Zfc2V4cCQwIiwic2V4cF9vZl9hcnJheSQwIiwiYXJyYXlfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2Jvb2wkMCIsImVxdWFsX2Jvb2wkMCIsImdsb2JhbGl6ZV9ib29sJDAiLCJoYXNoX2ZvbGRfYm9vbCQwIiwiaGFzaF9ib29sJDAiLCJib29sX29mX3NleHAkMCIsInNleHBfb2ZfYm9vbCQwIiwiYm9vbF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfY2hhciQwIiwiZXF1YWxfY2hhciQwIiwiZ2xvYmFsaXplX2NoYXIkMCIsImhhc2hfZm9sZF9jaGFyJDAiLCJoYXNoX2NoYXIkMCIsImNoYXJfb2Zfc2V4cCQwIiwic2V4cF9vZl9jaGFyJDAiLCJjaGFyX3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl9leG4kMCIsImNvbXBhcmVfZmxvYXQkMCIsImVxdWFsX2Zsb2F0JDAiLCJnbG9iYWxpemVfZmxvYXQkMCIsImhhc2hfZm9sZF9mbG9hdCQwIiwiaGFzaF9mbG9hdCQwIiwiZmxvYXRfb2Zfc2V4cCQwIiwic2V4cF9vZl9mbG9hdCQwIiwiZmxvYXRfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludCQwIiwiZXF1YWxfaW50JDAiLCJnbG9iYWxpemVfaW50JDAiLCJoYXNoX2ZvbGRfaW50JDAiLCJoYXNoX2ludCQwIiwiaW50X29mX3NleHAkMCIsInNleHBfb2ZfaW50JDAiLCJpbnRfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludDMyJDAiLCJlcXVhbF9pbnQzMiQwIiwiZ2xvYmFsaXplX2ludDMyJDAiLCJoYXNoX2ZvbGRfaW50MzIkMCIsImhhc2hfaW50MzIkMCIsImludDMyX29mX3NleHAkMCIsInNleHBfb2ZfaW50MzIkMCIsImludDMyX3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQ2NCQwIiwiZXF1YWxfaW50NjQkMCIsImdsb2JhbGl6ZV9pbnQ2NCQwIiwiaGFzaF9mb2xkX2ludDY0JDAiLCJoYXNoX2ludDY0JDAiLCJpbnQ2NF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludDY0JDAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbGlzdCQwIiwiZXF1YWxfbGlzdCQwIiwiZ2xvYmFsaXplX2xpc3QkMCIsImhhc2hfZm9sZF9saXN0JDAiLCJsaXN0X29mX3NleHAkMCIsInNleHBfb2ZfbGlzdCQwIiwibGlzdF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbmF0aXZlaW50JDAiLCJlcXVhbF9uYXRpdmVpbnQkMCIsImdsb2JhbGl6ZV9uYXRpdmVpbnQkMCIsImhhc2hfZm9sZF9uYXRpdmVpbnQkMCIsImhhc2hfbmF0aXZlaW50JDAiLCJuYXRpdmVpbnRfb2Zfc2V4cCQwIiwic2V4cF9vZl9uYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfb3B0aW9uJDAiLCJlcXVhbF9vcHRpb24kMCIsImdsb2JhbGl6ZV9vcHRpb24kMCIsImhhc2hfZm9sZF9vcHRpb24kMCIsIm9wdGlvbl9vZl9zZXhwJDAiLCJzZXhwX29mX29wdGlvbiQwIiwib3B0aW9uX3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9yZWYkMCIsImVxdWFsX3JlZiQwIiwiZ2xvYmFsaXplX3JlZiQwIiwicmVmX29mX3NleHAkMCIsInNleHBfb2ZfcmVmJDAiLCJyZWZfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX3N0cmluZyQwIiwiZXF1YWxfc3RyaW5nJDAiLCJnbG9iYWxpemVfc3RyaW5nJDAiLCJoYXNoX2ZvbGRfc3RyaW5nJDAiLCJoYXNoX3N0cmluZyQwIiwic3RyaW5nX29mX3NleHAkMCIsInNleHBfb2Zfc3RyaW5nJDAiLCJzdHJpbmdfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2J5dGVzJDAiLCJlcXVhbF9ieXRlcyQwIiwiZ2xvYmFsaXplX2J5dGVzJDAiLCJieXRlc19vZl9zZXhwJDAiLCJzZXhwX29mX2J5dGVzJDAiLCJieXRlc19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfdW5pdCQwIiwiZXF1YWxfdW5pdCQwIiwiZ2xvYmFsaXplX3VuaXQkMCIsImhhc2hfZm9sZF91bml0JDAiLCJoYXNoX3VuaXQkMCIsInVuaXRfb2Zfc2V4cCQwIiwic2V4cF9vZl91bml0JDAiLCJ1bml0X3NleHBfZ3JhbW1hciQwIiwicmFpc2VfcyQwIiwidG9fc3RyaW5nIiwibWFwIiwiZiIsIm8iLCJ2Iiwic2V0X2lucHV0X25hbWUiLCJuYW1lIiwic2V0X2lucHV0X2xleGJ1ZiIsImxleGJ1Zl9vcHQiLCJ2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCIsIngiLCJpc193ZWxsX2Zvcm1lZCIsImVycm9yIiwic3RyaW5nX29mX2xvY2F0aW9uX21zZyIsIm1zZyIsIm1haW5fbXNnIiwibWFpbiIsImxvYyIsInN1Yl9tc2dzIiwic3ViIiwiZXJyIiwic3ViJDAiLCJhY2MiLCJ0YWlsIiwic3ViJDEiLCJvZl9leG4iLCJleG4iLCJlIiwic2V0X21haW5fbXNnIiwidHh0IiwicHBmIiwibWFrZSIsIm1rIiwic2V0X21haW5fbG9jIiwicmFpc2VfZXJyb3JmJDAiLCJwYXJzZSIsInMiLCJhc3RfaW1wbF9tYWdpY19udW1iZXIiLCJhc3RfaW50Zl9tYWdpY19udW1iZXIiLCJyaWdodCIsImZtdCIsImZtdCQwIiwiZm10JDEiLCJwcmVmaXhfc3ltYm9scyIsImluZml4X3N5bWJvbHMiLCJzcGVjaWFsX2luZml4X3N0cmluZ3MiLCJyZXNldF9jdHh0IiwidmFsdWUiLCJ0IiwiZGVmYXVsdCQwIiwiZml4aXR5X29mX3N0cmluZyIsImZpcnN0X2lzIiwiYyIsInN0ciIsImxhc3RfaXMiLCJuZWVkc19wYXJlbnMiLCJmaXgiLCJuZWVkc19zcGFjZXMiLCJzdHJpbmdfbG9jIiwicHJvdGVjdF9pZGVudCIsImZvcm1hdCIsIm92ZXJyaWRlIiwidmlld19leHByIiwiZXhwIiwiZXhwJDAiLCJleHAkMSIsImUxIiwiYWNjJDAiLCJiIiwibHMiLCJpc19zaW1wbGVfY29uc3RydWN0IiwicHAiLCJ1bmRlcl9zZW1pIiwiY3R4dCIsImxpc3QiLCJzZXAiLCJmaXJzdCIsImxhc3QiLCJmdSIsInhzIiwiZmlyc3QkMCIsIngkMCIsImxhc3QkMCIsIngkMSIsInNlcCQwIiwieCQzIiwieCQyIiwieHMkMCIsIm9wdGlvbiIsImEiLCJwYXJlbiIsInByaW50X2xvbmdpZGVudCIsImxvbmdwcmVmaXgiLCJzJDAiLCJ5IiwibG9uZ2lkZW50X2xvYyIsImNvbnN0YW50IiwiaSIsIm0iLCJpJDAiLCJpJDEiLCJkZWxpbSIsImkkMiIsIm0kMCIsIm11dGFibGVfZmxhZyIsInZpcnR1YWxfZmxhZyIsInJlY19mbGFnIiwicmYiLCJub25yZWNfZmxhZyIsImRpcmVjdGlvbl9mbGFnIiwicHJpdmF0ZV9mbGFnIiwiY29uc3RhbnRfc3RyaW5nIiwidHl2YXIiLCJ0eXZhcl9sb2MiLCJzdHJpbmdfcXVvdCIsImNsYXNzX3BhcmFtc19kZWYiLCJsIiwidHlwZV9wYXJhbSIsInR5cGVfd2l0aF9sYWJlbCIsImxhYmVsIiwiY29yZV90eXBlMSIsImNvcmVfdHlwZSIsImF0dHJpYnV0ZXMiLCJjdDIiLCJjdDEiLCJjdCIsInNsIiwiY3QkMCIsImN0JDEiLCJsJDAiLCJsaSIsImwkMSIsImNvcmVfZmllbGRfdHlwZSIsImZpZWxkX3ZhciIsImwkMiIsImxpJDAiLCJsb3ciLCJjbG9zZWQiLCJsJDMiLCJmaXJzdF9pc19pbmhlcml0IiwidHlwZV92YXJpYW50X2hlbHBlciIsImN0bCIsImNzdHJzIiwibGlkIiwiYXV4IiwiZXh0ZW5zaW9uIiwicGF0dGVybiQxIiwicGF0dGVybiIsInAiLCJwMiIsInAxIiwib3JwYXRzIiwicGF0dGVybjEiLCJwYXR0ZXJuMSQwIiwicGF0dGVybl9saXN0X2hlbHBlciIsInBhdDIiLCJwYXQxIiwic2ltcGxlX3BhdHRlcm4iLCJzaW1wbGVfcGF0dGVybiQwIiwicG8iLCJ2bCIsImMyIiwiYzEiLCJsb25naWRlbnRfeF9wYXR0ZXJuIiwicCQwIiwicCQxIiwicCQyIiwid2l0aF9wYXJlbiIsImxhYmVsX2V4cCIsIm9wdCIsInJlc3QiLCJ0eHQkMCIsIm8kMCIsInN1Z2FyX2V4cHIiLCJhcmdzIiwiaWQiLCJsYWIiLCJwcmludF9pbmRleG9wIiwicGF0aF9wcmVmaXgiLCJhc3NpZ24iLCJsZWZ0IiwicHJpbnRfaW5kZXgiLCJpbmRpY2VzIiwicmVtX2FyZ3MiLCJwcmludF9wYXRoIiwic2ltcGxlX2V4cHIiLCJlJDAiLCJwYXRoIiwiZnVuYyIsIm90aGVyX2FyZ3MiLCJhJDAiLCJhc3NpZ24kMCIsInJlc3QkMCIsInJlc3QkMSIsInJlc3QkMiIsImluZGV4ZXMiLCJyZXN0JDMiLCJpMyIsImkyIiwiaTEiLCJyZXN0JDQiLCJpMiQwIiwiaTEkMCIsInJlc3QkNSIsImkxJDEiLCJtdWx0aV9pbmRpY2VzIiwibiIsImtpbmQiLCJyaWdodCQwIiwibGVmdCQwIiwibCQ1IiwiZSQ3IiwiYXJnMSIsImFyZzIiLCJsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0iLCJzJDEiLCJzJDIiLCJleHByZXNzaW9uMiIsImVvJDAiLCJlbyQxIiwibCQ2IiwiZTIkMSIsImUxJDEiLCJsaSQxIiwiZSQ4IiwicyQzIiwibCQ3Iiwic3RyaW5nX3hfZXhwcmVzc2lvbiIsImUkOSIsImUkMTAiLCJlJDExIiwiZSQxMiIsImNhc2VfbGlzdCIsImUwIiwiZSQxIiwibCQ0IiwiZSQyIiwiZSQzIiwibWUiLCJtb2R1bGVfZXhwciIsImUkNCIsImNkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZSQ1IiwiZSQ2IiwiYm9keSIsImFuZHMiLCJsZXQkMCIsImJpbmRpbmdfb3AiLCJlbyIsImUyIiwiZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIiwiZTIkMCIsImUxJDAiLCJsc3QiLCJiaW5kaW5ncyIsImNzIiwiY2xhc3Nfc3RydWN0dXJlIiwiZXhwcmVzc2lvbjIkMCIsInNpbXBsZV9leHByJDAiLCJsb25naWRlbnRfeF9leHByZXNzaW9uIiwiZTMiLCJkZiIsImV4cHJlc3Npb24iLCJjdG8xIiwicGF5bG9hZCIsIml0ZW1fYXR0cmlidXRlcyIsImZsb2F0aW5nX2F0dHJpYnV0ZSIsInZhbHVlX2Rlc2NyaXB0aW9uIiwiaXRlbV9leHRlbnNpb24iLCJleGNlcHRpb25fZGVjbGFyYXRpb24iLCJjbGFzc190eXBlX2ZpZWxkIiwiY2xhc3NfdHlwZSIsInZmIiwibWYiLCJ2ZiQwIiwicGYiLCJjbGFzc19zaWduYXR1cmUiLCJjbCIsImNvIiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImt3ZCIsImNsYXNzX2ZpZWxkIiwic28iLCJjZSIsIm92ZiIsImNsYXNzX2V4cHIiLCJvdmYkMCIsIm92ZiQxIiwiYmluZCIsImJpbmRpbmciLCJjZSQwIiwiY2UkMSIsIm1vZHVsZV90eXBlJDEiLCJtb2R1bGVfdHlwZSIsIm10MiQwIiwibXQyIiwibXQxIiwibW9kdWxlX3R5cGUxIiwibXQiLCJ0ZCIsImxzJDAiLCJ0eXBlX2RlY2xhcmF0aW9uIiwibGkyIiwibXR5IiwibXR5JDAiLCJsaSQyIiwidGQkMCIsImxzJDEiLCJsaSQzIiwibHMkMiIsImxpMiQwIiwibGkkNCIsIm1vZHVsZV90eXBlMSQwIiwic2lnbmF0dXJlX2l0ZW0iLCJzaWduYXR1cmUiLCJ2ZCIsImludHJvIiwidHlwZV9kZWZfbGlzdCIsInRlIiwidHlwZV9leHRlbnNpb24iLCJlZCIsInBtZCIsImFsaWFzIiwicG1zIiwiZGVjbHMiLCJ0bCIsInBtZCQwIiwiYXR0cnMiLCJtZCIsImF0dHJzJDAiLCJtZCQwIiwib2QiLCJpbmNsIiwiY2xhc3NfZGVzY3JpcHRpb24iLCJzdHJ1Y3R1cmVfaXRlbSIsIm1lJDAiLCJtZTIiLCJtZTEiLCJtdCQwIiwibWUkMSIsInN0cnVjdHVyZSIsInBwX3ByaW50X3BleHBfZnVuY3Rpb24iLCJ0eXZhcnNfc3RyIiwidHl2YXJzIiwicGF0JDAiLCJ0eXAiLCJwYXQiLCJydCIsImFyZ3NfdHl2YXJzIiwiZ2FkdF9wYXR0ZXJuIiwidHl2YXJzJDAiLCJnYWR0X2V4cCIsImVfY3QiLCJ2YXJfbmFtZXMkMCIsInB0X2N0IiwicHRfdHl2YXJzIiwiY2hlY2tfdmFyaWFibGUiLCJ2YXJfbmFtZXMiLCJsb29wIiwiZGVzYyIsImNvcmVfdHlwZSQwIiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsInN0cmluZyIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJhcmciLCJmaWVsZCIsInByZl9kZXNjIiwicG9mX2Rlc2MiLCJ0JDAiLCJldHkiLCJ0eXZhcnMkMSIsInR5IiwiYmluZGluZyQwIiwibWF0Y2giLCJwdmFyIiwiZXZhciIsInJmJDAiLCJmJDAiLCJhcmdfb3B0IiwibWUkMiIsInBtYiIsImV4cHIiLCJsMiQwIiwibDIiLCJjbGFzc19jb25zdHJhaW50IiwiY2xhc3NfZGVjbGFyYXRpb24iLCJjbCQzIiwiY2wkMCIsImNsJDIiLCJjbCQxIiwiY29uc3RyIiwiZXhwb3J0ZWQiLCJ0eXBlX2RlY2wiLCJlcSIsInJlY29yZF9kZWNsYXJhdGlvbiIsImxibHMiLCJ0eXBlX3JlY29yZF9maWVsZCIsInBsZCIsInByaXYiLCJtYW5pZmVzdCIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uJDAiLCJwY2QiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInJlcHIiLCJ2YXJpYW50cyIsImNvbnN0cmFpbnRzIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yJDAiLCJyZXMiLCJ2YXJzIiwibmFtZSQwIiwicHBfdmFycyIsInZzIiwiciIsInBjX3JocyIsInBjX2d1YXJkIiwicGNfbGhzIiwic2ltcGxlX25hbWUiLCJsYmwiLCJkaXJlY3RpdmVfYXJndW1lbnQiLCJ0b3BsZXZlbF9waHJhc2UiLCJwZGlyX25hbWUiLCJwZGlyX2FyZyIsInN0cmluZ19vZl9leHByZXNzaW9uIiwic3RyaW5nX29mX3N0cnVjdHVyZSIsInRvcF9waHJhc2UiLCJwYXR0ZXJuJDAiLCJzaWduYXR1cmUkMCIsInN0cnVjdHVyZSQwIiwiY2xhc3NfZXhwciQwIiwiY2xhc3NfZmllbGQkMCIsImNsYXNzX3R5cGUkMCIsImNsYXNzX3NpZ25hdHVyZSQwIiwiY2xhc3NfdHlwZV9maWVsZCQwIiwibW9kdWxlX2V4cHIkMCIsIm1vZHVsZV90eXBlJDAiLCJzaWduYXR1cmVfaXRlbSQwIiwic3RydWN0dXJlX2l0ZW0kMCIsInR5cGVfZGVjbGFyYXRpb24kMCIsIm1pZ3JhdGlvbl9lcnJvciIsIm1pc3NpbmdfZmVhdHVyZSIsIm1rX2dob3N0X2F0dHIiLCJjb25jYXRfbGlzdF9saXQiLCJhcmdfZXhwciIsImhkIiwibWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGgiLCJoaWRkZW4iLCJ2aXNpYmxlIiwibWlncmF0aW9uX2F0dHIiLCJleHByJDAiLCJtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyIsImZpZWxkcyIsImxpZGVudF9sb2MiLCJtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQiLCJzdHJpIiwibmV3X2ZpZWxkcyIsIm5ld19leHByIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJ4MCIsImNvcHlfc3RydWN0dXJlIiwieDAkMCIsImNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIiwicGRpcl9sb2MiLCJjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCIsImNvcHlfbG9jIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsImNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MiLCJ4MSIsIngwJDEiLCJjb3B5X0xvbmdpZGVudF90IiwieDAkMiIsImNvcHlfZXhwcmVzc2lvbiIsInBleHBfYXR0cmlidXRlcyIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9sb2MiLCJwZXhwX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZXMiLCJjb3B5X2xvY2F0aW9uX3N0YWNrIiwiY29weV9leHByZXNzaW9uX2Rlc2MiLCJjb3B5X2NvbnN0YW50IiwieDIiLCJjb3B5X3ZhbHVlX2JpbmRpbmciLCJjb3B5X3JlY19mbGFnIiwidGNvbnN0cmFpbnQiLCJwYXJhbXMiLCJhdHRyIiwiZXhwciQzIiwiY2FzZXMiLCJjb3B5X2Nhc2UiLCJjb3B5X2NvcmVfdHlwZSIsImMxJDAiLCJleHByJDEiLCJleHByJDIiLCJwYXJhbSIsInBwYXJhbV9sb2MiLCJleHAwIiwiY29weV9wYXR0ZXJuIiwiY29weV9hcmdfbGFiZWwiLCJwZXhwX2Rlc2MkMCIsIngxJDAiLCJ4MSQxIiwieDAkMyIsIngxJDIiLCJ4MCQ0IiwieDAkNSIsIngxJDMiLCJ4MCQ2IiwieDEkNCIsIngwJDciLCJ4MSQ1IiwieDAkOCIsIngxJDYiLCJ4MCQ5IiwieDIkMCIsIngxJDciLCJ4MCQxMCIsIngwJDExIiwieDIkMSIsIngxJDgiLCJ4MCQxMiIsIngxJDkiLCJ4MCQxMyIsIngxJDEwIiwieDAkMTQiLCJ4NCIsIngzIiwieDIkMiIsIngxJDExIiwieDAkMTUiLCJjb3B5X2RpcmVjdGlvbl9mbGFnIiwieDEkMTIiLCJ4MCQxNiIsIngyJDMiLCJ4MSQxMyIsIngwJDE3IiwieDEkMTQiLCJ4MCQxOCIsImNvcHlfbGFiZWwiLCJ4MCQxOSIsIngxJDE1IiwieDAkMjAiLCJ4MCQyMSIsIngyJDQiLCJ4MSQxNiIsIngwJDIyIiwiY29weV9tb2R1bGVfZXhwciIsIngxJDE3IiwieDAkMjMiLCJjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciIsIngwJDI0IiwieDAkMjUiLCJ4MSQxOCIsIngwJDI2IiwieDAkMjciLCJjb3B5X2NsYXNzX3N0cnVjdHVyZSIsIngxJDE5IiwieDAkMjgiLCJ4MCQyOSIsIngxJDIwIiwieDAkMzAiLCJjb3B5X29wZW5faW5mb3MiLCJ4MCQzMSIsImNvcHlfbGV0b3AiLCJ4MCQzMiIsImNvcHlfZXh0ZW5zaW9uIiwiY29weV9iaW5kaW5nX29wIiwicGJvcF9sb2MiLCJwYm9wX2V4cCIsInBib3BfcGF0IiwicGJvcF9vcCIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9jb25zdHJhaW50IiwicHZiX2V4cHIiLCJwdmJfcGF0IiwiY29weV92YWx1ZV9jb25zdHJhaW50IiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2xvYyIsInBwYXRfZGVzYyIsImNvcHlfcGF0dGVybl9kZXNjIiwiY29weV9jbG9zZWRfZmxhZyIsImxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyIsImNvZXJjaW9uIiwiZ3JvdW5kIiwicHR5cF9hdHRyaWJ1dGVzIiwicHR5cF9sb2Nfc3RhY2siLCJwdHlwX2xvYyIsInB0eXBfZGVzYyIsImNvcHlfY29yZV90eXBlX2Rlc2MiLCJjb3B5X2xvY2F0aW9uIiwiY29weV9vYmplY3RfZmllbGQiLCJjb3B5X3Jvd19maWVsZCIsImNvcHlfcGFja2FnZV90eXBlIiwicHJmX2F0dHJpYnV0ZXMiLCJwcmZfbG9jIiwiY29weV9yb3dfZmllbGRfZGVzYyIsInBvZl9hdHRyaWJ1dGVzIiwicG9mX2xvYyIsImNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZSIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiY29weV9wYXlsb2FkIiwiY29weV9zaWduYXR1cmUiLCJjb3B5X3N0cnVjdHVyZV9pdGVtIiwicHN0cl9sb2MiLCJwc3RyX2Rlc2MiLCJjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MiLCJjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIiwiY29weV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV90eXBlX2V4dGVuc2lvbiIsImNvcHlfdHlwZV9leGNlcHRpb24iLCJjb3B5X21vZHVsZV9iaW5kaW5nIiwiY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfY2xhc3NfZGVjbGFyYXRpb24iLCJjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X2luY2x1ZGVfaW5mb3MiLCJjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24iLCJjb3B5X2NsYXNzX2luZm9zIiwiY29weV9jbGFzc19leHByIiwicGNsX2F0dHJpYnV0ZXMiLCJwY2xfbG9jIiwicGNsX2Rlc2MiLCJjb3B5X2NsYXNzX2V4cHJfZGVzYyIsImNvcHlfY2xhc3NfdHlwZSIsImNvcHlfb3Blbl9kZXNjcmlwdGlvbiIsInBjc3RyX2ZpZWxkcyIsInBjc3RyX3NlbGYiLCJjb3B5X2NsYXNzX2ZpZWxkIiwicGNmX2F0dHJpYnV0ZXMiLCJwY2ZfbG9jIiwicGNmX2Rlc2MiLCJjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MiLCJjb3B5X292ZXJyaWRlX2ZsYWciLCJjb3B5X2NsYXNzX2ZpZWxkX2tpbmQiLCJjb3B5X211dGFibGVfZmxhZyIsImNvcHlfcHJpdmF0ZV9mbGFnIiwiY29weV9vcGVuX2RlY2xhcmF0aW9uIiwicG1iX2xvYyIsInBtYl9hdHRyaWJ1dGVzIiwicG1iX2V4cHIiLCJwbWJfbmFtZSIsInBtb2RfYXR0cmlidXRlcyIsInBtb2RfbG9jIiwicG1vZF9kZXNjIiwiY29weV9tb2R1bGVfZXhwcl9kZXNjIiwiY29weV9mdW5jdG9yX3BhcmFtZXRlciIsImNvcHlfbW9kdWxlX3R5cGUiLCJwbXR5X2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfZGVzYyIsImNvcHlfbW9kdWxlX3R5cGVfZGVzYyIsImNvcHlfd2l0aF9jb25zdHJhaW50IiwiY29weV9zaWduYXR1cmVfaXRlbSIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwiY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIiwiY29weV9tb2R1bGVfZGVjbGFyYXRpb24iLCJjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24iLCJjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJjb3B5X2NsYXNzX3R5cGVfZGVzYyIsImNvcHlfY2xhc3Nfc2lnbmF0dXJlIiwicGNzaWdfZmllbGRzIiwicGNzaWdfc2VsZiIsImNvcHlfY2xhc3NfdHlwZV9maWVsZCIsInBjdGZfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9kZXNjIiwiY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MiLCJjb3B5X3ZpcnR1YWxfZmxhZyIsIngzJDAiLCJmMCIsInBjaV9hdHRyaWJ1dGVzIiwicGNpX2xvYyIsInBjaV9leHByIiwicGNpX25hbWUiLCJwY2lfcGFyYW1zIiwicGNpX3ZpcnQiLCJjb3B5X2luamVjdGl2aXR5IiwiY29weV92YXJpYW5jZSIsImNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwb3Blbl9hdHRyaWJ1dGVzIiwicG9wZW5fbG9jIiwicG9wZW5fb3ZlcnJpZGUiLCJwb3Blbl9leHByIiwicG10ZF9sb2MiLCJwbXRkX2F0dHJpYnV0ZXMiLCJwbXRkX3R5cGUiLCJwbXRkX25hbWUiLCJwbXNfbG9jIiwicG1zX2F0dHJpYnV0ZXMiLCJwbXNfbWFuaWZlc3QiLCJwbXNfbmFtZSIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwdHlleG5fYXR0cmlidXRlcyIsInB0eWV4bl9sb2MiLCJwdHlleG5fY29uc3RydWN0b3IiLCJwdHlleHRfYXR0cmlidXRlcyIsInB0eWV4dF9sb2MiLCJwdHlleHRfcHJpdmF0ZSIsInB0eWV4dF9jb25zdHJ1Y3RvcnMiLCJwdHlleHRfcGFyYW1zIiwicHR5ZXh0X3BhdGgiLCJwZXh0X2F0dHJpYnV0ZXMiLCJwZXh0X2xvYyIsInBleHRfa2luZCIsInBleHRfbmFtZSIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbiIsImNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIiwicHR5cGVfbG9jIiwicHR5cGVfYXR0cmlidXRlcyIsInB0eXBlX21hbmlmZXN0IiwicHR5cGVfcHJpdmF0ZSIsInB0eXBlX2tpbmQiLCJwdHlwZV9jc3RycyIsInB0eXBlX3BhcmFtcyIsInB0eXBlX25hbWUiLCJjb3B5X3R5cGVfa2luZCIsImNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24iLCJjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIiwicGNkX2F0dHJpYnV0ZXMiLCJwY2RfbG9jIiwicGNkX3JlcyIsInBjZF9hcmdzIiwicGNkX3ZhcnMiLCJwY2RfbmFtZSIsInBsZF9hdHRyaWJ1dGVzIiwicGxkX2xvYyIsInBsZF90eXBlIiwicGxkX211dGFibGUiLCJwbGRfbmFtZSIsInB2YWxfbG9jIiwicHZhbF9hdHRyaWJ1dGVzIiwicHZhbF9wcmltIiwicHZhbF90eXBlIiwicHZhbF9uYW1lIiwiZXh0cmFjdF9hdHRyIiwicSIsIm90aGVyX2F0dHJzIiwib3B0X2RlZmF1bHQiLCJhcmdfbGFiZWwiLCJ0YWtlX2JvZHkiLCJhcmdfbGFiZWwkMSIsIm9wdF9kZWZhdWx0JDEiLCJwYXQkMSIsInBwYXJhbV9kZXNjIiwiYWNjJDEiLCJhcmdfbGlzdCIsImMyJDAiLCJ0eXBlX2NvbnN0cmFpbnQiLCJvcHRfZGVmYXVsdCQwIiwiYXJnX2xhYmVsJDAiLCJ4MCQzMyIsIngyJDUiLCJ4MSQyMSIsIngwJDM0IiwibWVyZ2VfbG9jIiwiZ2hvc3RfbG9jIiwiZ2hvc3RfY29uc3RyYWludCIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJjb25zdHJhaW5fcGF0IiwidHlwJDAiLCJjb2VyY2lvbiQwIiwicHR5cF9sb2MkMCIsInR5cCQzIiwicHZiX3BhdCQzIiwiZ3JvdW5kJDAiLCJwZXhwX2xvYyQwIiwicHZiX2V4cHIkMyIsInB2Yl9leHByJDEiLCJwdmJfcGF0JDEiLCJ0eXAkMiIsInR5cCQxIiwidHlwX3BvbHkiLCJwdmJfcGF0JDIiLCJwdmJfZXhwciQyIiwidmFyJDAiLCJsb2MkMCIsImVtcHR5X3N0cnVjdCIsImxvY19naG9zdCIsImxvY19lbmQiLCJsb2Nfc3RhcnQiLCJjb3B5X3Bvc2l0aW9uIiwicG9zX2NudW0iLCJwb3NfYm9sIiwicG9zX2xudW0iLCJwb3NfZm5hbWUiLCJyZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIiwidHlfZXh0IiwicnQkMCIsInZhbHVlX3BhdHRlcm4iLCJ2YWx1ZV9leHAiLCJpbm5lcl9lIiwiZXh0ZXJuX2N0IiwiZXh0ZXJuX2N0JDAiLCJwdF90eXZhcnMkMCIsIndpdGhfY29uc3RyYWludCIsInR5X3ZhcnMiLCJwdmJfY29uc3RyYWludCQwIiwiY29lcmNlIiwiZ3IiLCJwdmJfY29uc3RyYWludCQxIiwiaXNfdW5pdCIsImNvcHlfZXhwciIsImNvcHlfY2FzZXMiLCJjb3B5X3BhdCIsImNvcHlfdHlwIiwibWFwX29wdGlvbiIsImNvcHlfb3B0aW9uIiwiY29weV9ib29sIiwiY29weV9sb25naWRlbnQiLCJ4MF9sb2MiLCJ4MiQ2IiwiYXQiLCJhdGF0IiwicG9wZW5fbGlkIiwid3JhcCIsImN0eSIsImxvYyQxIiwibm9sb2MiLCJmcm9tX2xvYyIsInBvcyIsImluamVjdF9wcmVkZWZfb3B0aW9uIiwiZCIsImlkZW50IiwidHlwZV9kZWNsYXJhdGlvbnMiLCJyZWNmbGFnIiwidHlwZXMiLCJleHRyYWN0X3ByZWRlZl9vcHRpb24iLCJpc19ub25yZWMiLCJ0eXBlcyQwIiwiaXNfa2V5d29yZCIsImluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaSIsInRvX3N0cmluZyIsIm1hcCIsImYiLCJvIiwidiIsImRlZmF1bHRfbG9jIiwic2V0X3JlZiIsInIiLCJ3aXRoX2RlZmF1bHRfbG9jIiwibCIsInJlZiIsImJhY2t1cCIsIngiLCJlJDAiLCJlIiwiaW50ZWdlciIsInN1ZmZpeCIsImkiLCJpbnQkMCIsImkkMCIsImludDMyIiwic3VmZml4JDAiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJjaGFyJDAiLCJjIiwic3RyaW5nIiwicXVvdGF0aW9uX2RlbGltaXRlciIsInMiLCJsb2MiLCJtayIsIm5hbWUiLCJwYXlsb2FkIiwibWskMCIsImQiLCJhdHRycyIsImF0dHIiLCJhIiwiYW55IiwidmFyJDAiLCJhcnJvdyIsImIiLCJ0dXBsZSIsImNvbnN0ciIsIm9iamVjdCIsImNsYXNzJDAiLCJhbGlhcyIsInZhcmlhbnQiLCJwb2x5IiwicGFja2FnZSQwIiwiZXh0ZW5zaW9uIiwiZm9yY2VfcG9seSIsInQiLCJ2YXJpZnlfY29uc3RydWN0b3JzIiwidmFyX25hbWVzIiwiY2hlY2tfdmFyaWFibGUiLCJ2bCIsInZhcl9uYW1lcyQwIiwibG9vcCIsImRlc2MiLCJjb3JlX3R5cGUiLCJjb3JlX3R5cGUkMCIsImxhYmVsIiwibHN0IiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJ0eXAiLCJuIiwiYXJnIiwicyQwIiwiZmllbGQiLCJwcmZfZGVzYyIsInBvZl9kZXNjIiwidCQwIiwibWskMSIsImF0dHIkMCIsImFueSQwIiwidmFyJDEiLCJhbGlhcyQwIiwiY29uc3RhbnQiLCJpbnRlcnZhbCIsInR1cGxlJDAiLCJjb25zdHJ1Y3QiLCJ2YXJpYW50JDAiLCJyZWNvcmQiLCJhcnJheSIsIm9yIiwiY29uc3RyYWludCIsInR5cGUiLCJsYXp5IiwidW5wYWNrIiwib3BlbiIsImV4Y2VwdGlvbiIsImV4dGVuc2lvbiQwIiwibWskMiIsImF0dHIkMSIsImlkZW50IiwiY29uc3RhbnQkMCIsImxldCQwIiwiZnVuIiwiZnVuY3Rpb24kMCIsImFwcGx5IiwidHJ5JDAiLCJ0dXBsZSQxIiwiY29uc3RydWN0JDAiLCJ2YXJpYW50JDEiLCJyZWNvcmQkMCIsInNldGZpZWxkIiwiYXJyYXkkMCIsImlmdGhlbmVsc2UiLCJzZXF1ZW5jZSIsIndoaWxlJDAiLCJmb3IkMCIsImNvbnN0cmFpbnQkMCIsImNvZXJjZSIsInNlbmQiLCJuZXckMCIsInNldGluc3R2YXIiLCJvdmVycmlkZSIsImxldG1vZHVsZSIsImxldGV4Y2VwdGlvbiIsImFzc2VydCIsImxhenkkMCIsInBvbHkkMCIsIm9iamVjdCQwIiwibmV3dHlwZSIsInBhY2siLCJvcGVuJDAiLCJsZXRvcCIsImFuZHMiLCJib2R5IiwiZXh0ZW5zaW9uJDEiLCJ1bnJlYWNoYWJsZSIsImNhc2UkMCIsImxocyIsImd1YXJkIiwicmhzIiwiYmluZGluZ19vcCIsIm9wIiwicGF0IiwiZXhwIiwibWskMyIsImF0dHIkMiIsImlkZW50JDAiLCJhbGlhcyQxIiwic2lnbmF0dXJlIiwiZnVuY3RvciIsIndpdGgkMCIsInR5cGVvZiQwIiwiZXh0ZW5zaW9uJDIiLCJtayQ0IiwiYXR0ciQzIiwiaWRlbnQkMSIsInN0cnVjdHVyZSIsImZ1bmN0b3IkMCIsImFwcGx5JDAiLCJtMSIsIm0yIiwiY29uc3RyYWludCQxIiwibSIsIm10eSIsInVucGFjayQwIiwiZXh0ZW5zaW9uJDMiLCJtayQ1IiwidmFsdWUiLCJ0eXBlJDAiLCJyZWNfZmxhZyIsInR5cGVfc3Vic3QiLCJ0eXBlX2V4dGVuc2lvbiIsImV4Y2VwdGlvbiQwIiwibW9kdWxlIiwibW9kX3N1YnN0IiwicmVjX21vZHVsZSIsIm1vZHR5cGUiLCJvcGVuJDEiLCJpbmNsdWRlIiwiY2xhc3MkMSIsImNsYXNzX3R5cGUiLCJleHRlbnNpb24kNCIsImF0dHJpYnV0ZSIsIm1rJDYiLCJldmFsJDAiLCJ2YWx1ZSQwIiwicHJpbWl0aXZlIiwidHlwZSQxIiwidHlwZV9leHRlbnNpb24kMCIsImV4Y2VwdGlvbiQxIiwibW9kdWxlJDAiLCJyZWNfbW9kdWxlJDAiLCJtb2R0eXBlJDAiLCJvcGVuJDIiLCJjbGFzcyQyIiwiY2xhc3NfdHlwZSQwIiwiaW5jbHVkZSQwIiwiZXh0ZW5zaW9uJDUiLCJhdHRyaWJ1dGUkMCIsIm1rJDciLCJhdHRyJDQiLCJjb25zdHIkMCIsInN0cnVjdHVyZSQwIiwiZnVuJDAiLCJhcHBseSQxIiwibGV0JDEiLCJjb25zdHJhaW50JDIiLCJleHRlbnNpb24kNiIsIm9wZW4kMyIsIm1rJDgiLCJhdHRyJDUiLCJjb25zdHIkMSIsInNpZ25hdHVyZSQwIiwiYXJyb3ckMCIsImV4dGVuc2lvbiQ3Iiwib3BlbiQ0IiwibWskOSIsImluaGVyaXQiLCJ2YWwiLCJtZXRob2QiLCJjb25zdHJhaW50JDMiLCJleHRlbnNpb24kOCIsImF0dHJpYnV0ZSQxIiwiYXR0ciQ2IiwibWskMTAiLCJpbmhlcml0JDAiLCJ2YWwkMCIsIm1ldGhvZCQwIiwiY29uc3RyYWludCQ0IiwiaW5pdGlhbGl6ZXIiLCJleHRlbnNpb24kOSIsImF0dHJpYnV0ZSQyIiwidmlydHVhbCIsImN0IiwiY29uY3JldGUiLCJhdHRyJDciLCJtayQxMSIsInByaW0iLCJtayQxMiIsIm1rJDEzIiwic3luIiwibWskMTQiLCJtayQxNSIsImV4cHIiLCJtayQxNiIsIm1rJDE3IiwibWV4cHIiLCJtayQxOCIsIm1rJDE5IiwidmlydCIsInBhcmFtcyIsIm1rJDIwIiwibWFuaWZlc3QiLCJjc3RycyIsImtpbmQiLCJwcml2IiwiY29uc3RydWN0b3IiLCJyZXMiLCJ2YXJzIiwiYXJncyIsImZpZWxkJDAiLCJtdXQiLCJtayQyMSIsInBhdGgiLCJjb25zdHJ1Y3RvcnMiLCJta19leGNlcHRpb24iLCJjb25zdHJ1Y3RvciQwIiwiZGVjbCIsInJlYmluZCIsImxpZCIsIm1rJDIyIiwic2VsZiIsImZpZWxkcyIsIm1rJDIzIiwibWskMjQiLCJ0YWciLCJjb25zdCQwIiwidHlzIiwiaW5oZXJpdCQxIiwidHkiLCJtayQyNSIsInRhZyQwIiwiaW5oZXJpdCQyIiwic3RyaW5nX3ZlcnNpb24iLCJzdHJpbmdfdmVyc2lvbiQwIiwic3RyaW5nX3ZlcnNpb24kMSIsInN0cmluZ192ZXJzaW9uJDIiLCJzdHJpbmdfdmVyc2lvbiQzIiwic3RyaW5nX3ZlcnNpb24kNCIsInN0cmluZ192ZXJzaW9uJDUiLCJzdHJpbmdfdmVyc2lvbiQ2Iiwic3RyaW5nX3ZlcnNpb24kNyIsInN0cmluZ192ZXJzaW9uJDgiLCJzdHJpbmdfdmVyc2lvbiQ5Iiwic3RyaW5nX3ZlcnNpb24kMTAiLCJzdHJpbmdfdmVyc2lvbiQxMSIsInN0cmluZ192ZXJzaW9uJDEyIiwic3RyaW5nX3ZlcnNpb24kMTMiLCJzdHJpbmdfdmVyc2lvbiQxNCIsIm1pZ3JhdGlvbl9pbmZvIiwiaWQiLCJtaWdyYXRpb25faWRlbnRpdHkiLCJjb21wb3NlIiwiZyIsIm1pZ3JhdGlvbl9mdW5jdGlvbnMiLCJpc191bmRlZmluZWQiLCJpbW1lZGlhdGVfbWlncmF0aW9uIiwiQSIsImRpcmVjdGlvbiIsInZlcnNpb24iLCJ0byIsImZ1bnMiLCJCIiwibSQxIiwiVG8iLCJhYiIsInRvMiIsImJjIiwibSQwIiwiY29weV9zdHJ1Y3R1cmVfaXRlbSIsImNvcHlfc2lnbmF0dXJlX2l0ZW0iLCJjb3B5X21vZHVsZV90eXBlIiwiY29weV9tb2R1bGVfZXhwciIsImNvcHlfY2xhc3NfdHlwZV9maWVsZCIsImNvcHlfY2xhc3Nfc2lnbmF0dXJlIiwiY29weV9jbGFzc190eXBlIiwiY29weV9jbGFzc19maWVsZCIsImNvcHlfY2xhc3NfZXhwciIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiY29weV90eXBlX2V4dGVuc2lvbiIsImNvcHlfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfY2FzZSIsImNvcHlfcGF0dGVybiIsImNvcHlfZXhwcmVzc2lvbiIsImNvcHlfY29yZV90eXBlIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJjb3B5X3NpZ25hdHVyZSIsImNvcHlfc3RydWN0dXJlIiwibWlncmF0aW9uX2luZm8kMCIsInZlcnNpb24kMCIsIm1pZ3JhdGlvbl9pbmZvJDEiLCJ2ZXJzaW9uJDEiLCJtaWdyYXRpb25faW5mbyQyIiwidmVyc2lvbiQyIiwibWlncmF0aW9uX2luZm8kMyIsInZlcnNpb24kMyIsIm1pZ3JhdGlvbl9pbmZvJDQiLCJ2ZXJzaW9uJDQiLCJtaWdyYXRpb25faW5mbyQ1IiwidmVyc2lvbiQ1IiwibWlncmF0aW9uX2luZm8kNiIsInZlcnNpb24kNiIsIm1pZ3JhdGlvbl9pbmZvJDciLCJ2ZXJzaW9uJDciLCJtaWdyYXRpb25faW5mbyQ4IiwidmVyc2lvbiQ4IiwibWlncmF0aW9uX2luZm8kOSIsInZlcnNpb24kOSIsIm1pZ3JhdGlvbl9pbmZvJDEwIiwidmVyc2lvbiQxMCIsIm1pZ3JhdGlvbl9pbmZvJDExIiwidmVyc2lvbiQxMSIsIm1pZ3JhdGlvbl9pbmZvJDEyIiwidmVyc2lvbiQxMiIsIm1pZ3JhdGlvbl9pbmZvJDEzIiwidmVyc2lvbiQxMyIsIm1pZ3JhdGlvbl9pbmZvJDE0IiwidmVyc2lvbiQxNCIsImFsbF92ZXJzaW9ucyIsImZyb21fbWFnaWMiLCJtYWdpYyIsImFsbF92ZXJzaW9uc190b3BfZG93biIsInRhaWwiLCJWZXJzaW9uIiwib2Zfb2NhbWwiLCJub2RlIiwieSIsInRvX29jYW1sIiwib2Zfb2NhbWxfbWFwcGVyIiwiaXRlbSIsImN0eHQiLCJ0b19vY2FtbF9tYXBwZXIiLCJpbXBsZW1lbnRhdGlvbiIsImxleGJ1ZiIsImludGVyZmFjZSQwIiwidG9wbGV2ZWxfcGhyYXNlIiwidXNlX2ZpbGUiLCJleHByZXNzaW9uIiwicGF0dGVybiIsImRlZmF1bHRfcHJpbnRfd2FybmluZyIsImFib3V0X2l0ZV9icmFuY2hfcmVmIiwiY2FyZV9hYm91dF9pdGVfYnJhbmNoIiwiYWJvdXRfaXRlX2JyYW5jaCIsInNlbGZfMSIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwicG9zX2ZuYW1lIiwicG9zX2ZuYW1lJDAiLCJwb3NfbG51bSQwIiwicG9zX2JvbCQwIiwicG9zX2NudW0kMCIsImxvY19naG9zdCIsImxvY19lbmQiLCJsb2Nfc3RhcnQiLCJsb2Nfc3RhcnQkMCIsImxvY19lbmQkMCIsImxvY19naG9zdCQwIiwidHh0IiwidHh0JDAiLCJsb2MkMCIsImEkMCIsImEkMSIsImEkMiIsImIkMCIsImIkMSIsImEkMyIsImEkNCIsImIkMiIsImMkMCIsImIkMyIsImEkNSIsImEkNiIsImIkNCIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiYXR0cl9uYW1lJDAiLCJhdHRyX3BheWxvYWQkMCIsImF0dHJfbG9jJDAiLCJwdHlwX2F0dHJpYnV0ZXMiLCJwdHlwX2xvY19zdGFjayIsInB0eXBfbG9jIiwicHR5cF9kZXNjIiwicHR5cF9kZXNjJDAiLCJwdHlwX2xvYyQwIiwicHR5cF9sb2Nfc3RhY2skMCIsInB0eXBfYXR0cmlidXRlcyQwIiwiYSQ3IiwiYSQ4IiwiYiQ1IiwiYSQ5IiwiYSQxMCIsImIkNiIsImIkNyIsImEkMTEiLCJhJDEyIiwiYiQ4IiwiYyQxIiwiYiQ5IiwiYSQxMyIsImEkMTQiLCJiJDEwIiwiYyQyIiwiYiQxMSIsImEkMTUiLCJhJDE2IiwiYiQxMiIsImEkMTciLCJhJDE4IiwiYSQxOSIsImEkMjAiLCJwcmZfYXR0cmlidXRlcyIsInByZl9sb2MiLCJwcmZfZGVzYyQwIiwicHJmX2xvYyQwIiwicHJmX2F0dHJpYnV0ZXMkMCIsInBvZl9hdHRyaWJ1dGVzIiwicG9mX2xvYyIsInBvZl9kZXNjJDAiLCJwb2ZfbG9jJDAiLCJwb2ZfYXR0cmlidXRlcyQwIiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2xvYyIsInBwYXRfZGVzYyIsInBwYXRfZGVzYyQwIiwicHBhdF9sb2MkMCIsInBwYXRfbG9jX3N0YWNrJDAiLCJwcGF0X2F0dHJpYnV0ZXMkMCIsImEkMjEiLCJhJDIyIiwiYSQyMyIsImEkMjQiLCJhJDI1IiwiYSQyNiIsImEkMjciLCJhJDI4IiwiYSQyOSIsImEkMzAiLCJiJDEzIiwiYSQzMSIsImEkMzIiLCJiJDE0IiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsInBleHBfZGVzYyQwIiwicGV4cF9sb2MkMCIsInBleHBfbG9jX3N0YWNrJDAiLCJwZXhwX2F0dHJpYnV0ZXMkMCIsImQkMCIsImIkMTUiLCJiJDE2IiwiYyQzIiwiYiQxNyIsImIkMTgiLCJjJDQiLCJjJDUiLCJiJDE5IiwiYiQyMCIsImMkNiIsImIkMjEiLCJiJDIyIiwiYiQyMyIsImEkMzMiLCJhJDM0IiwiYiQyNCIsImQkMSIsImMkNyIsImIkMjUiLCJhJDM1IiwiYSQzNiIsImIkMjYiLCJjJDgiLCJkJDIiLCJiJDI3IiwiYSQzNyIsImEkMzgiLCJiJDI4IiwiYyQ5IiwiYiQyOSIsImEkMzkiLCJhJDQwIiwiYiQzMCIsImMkMTAiLCJiJDMxIiwiYSQ0MSIsImEkNDIiLCJiJDMyIiwiYSQ0MyIsImEkNDQiLCJiJDMzIiwiYSQ0NSIsImEkNDYiLCJiJDM0IiwiYSQ0NyIsImEkNDgiLCJjJDExIiwiYiQzNSIsImEkNDkiLCJhJDUwIiwiYiQzNiIsImMkMTIiLCJiJDM3IiwiYSQ1MSIsImEkNTIiLCJiJDM4IiwiYSQ1MyIsImEkNTQiLCJhJDU1IiwiYSQ1NiIsImIkMzkiLCJhJDU3IiwiYSQ1OCIsImIkNDAiLCJhJDU5IiwiYSQ2MCIsImIkNDEiLCJhJDYxIiwiYSQ2MiIsImIkNDIiLCJhJDYzIiwiYSQ2NCIsImIkNDMiLCJhJDY1IiwiYSQ2NiIsImIkNDQiLCJhJDY3IiwiYSQ2OCIsImEkNjkiLCJhJDcwIiwicGNfcmhzIiwicGNfZ3VhcmQiLCJwY19saHMiLCJwY19saHMkMCIsInBjX2d1YXJkJDAiLCJwY19yaHMkMCIsImFuZHMkMCIsImJvZHkkMCIsInBib3BfbG9jIiwicGJvcF9leHAiLCJwYm9wX3BhdCIsInBib3Bfb3AiLCJwYm9wX29wJDAiLCJwYm9wX3BhdCQwIiwicGJvcF9leHAkMCIsInBib3BfbG9jJDAiLCJwdmFsX2xvYyIsInB2YWxfYXR0cmlidXRlcyIsInB2YWxfcHJpbSIsInB2YWxfdHlwZSIsInB2YWxfbmFtZSIsInB2YWxfbmFtZSQwIiwicHZhbF90eXBlJDAiLCJwdmFsX3ByaW0kMCIsInB2YWxfYXR0cmlidXRlcyQwIiwicHZhbF9sb2MkMCIsInB0eXBlX2xvYyIsInB0eXBlX2F0dHJpYnV0ZXMiLCJwdHlwZV9tYW5pZmVzdCIsInB0eXBlX3ByaXZhdGUiLCJwdHlwZV9raW5kIiwicHR5cGVfY3N0cnMiLCJwdHlwZV9wYXJhbXMiLCJwdHlwZV9uYW1lIiwicHR5cGVfbmFtZSQwIiwicHR5cGVfcGFyYW1zJDAiLCJwdHlwZV9jc3RycyQwIiwicHR5cGVfa2luZCQwIiwicHR5cGVfcHJpdmF0ZSQwIiwicHR5cGVfbWFuaWZlc3QkMCIsInB0eXBlX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMiLCJwbGRfbG9jIiwicGxkX3R5cGUiLCJwbGRfbXV0YWJsZSIsInBsZF9uYW1lIiwicGxkX25hbWUkMCIsInBsZF9tdXRhYmxlJDAiLCJwbGRfdHlwZSQwIiwicGxkX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMkMCIsInBjZF9hdHRyaWJ1dGVzIiwicGNkX2xvYyIsInBjZF9yZXMiLCJwY2RfYXJncyIsInBjZF92YXJzIiwicGNkX25hbWUiLCJwY2RfbmFtZSQwIiwicGNkX3ZhcnMkMCIsInBjZF9hcmdzJDAiLCJwY2RfcmVzJDAiLCJwY2RfbG9jJDAiLCJwY2RfYXR0cmlidXRlcyQwIiwicHR5ZXh0X2F0dHJpYnV0ZXMiLCJwdHlleHRfbG9jIiwicHR5ZXh0X3ByaXZhdGUiLCJwdHlleHRfY29uc3RydWN0b3JzIiwicHR5ZXh0X3BhcmFtcyIsInB0eWV4dF9wYXRoIiwicHR5ZXh0X3BhdGgkMCIsInB0eWV4dF9wYXJhbXMkMCIsInB0eWV4dF9jb25zdHJ1Y3RvcnMkMCIsInB0eWV4dF9wcml2YXRlJDAiLCJwdHlleHRfbG9jJDAiLCJwdHlleHRfYXR0cmlidXRlcyQwIiwicGV4dF9hdHRyaWJ1dGVzIiwicGV4dF9sb2MiLCJwZXh0X2tpbmQiLCJwZXh0X25hbWUiLCJwZXh0X25hbWUkMCIsInBleHRfa2luZCQwIiwicGV4dF9sb2MkMCIsInBleHRfYXR0cmlidXRlcyQwIiwicHR5ZXhuX2F0dHJpYnV0ZXMiLCJwdHlleG5fbG9jIiwicHR5ZXhuX2NvbnN0cnVjdG9yIiwicHR5ZXhuX2NvbnN0cnVjdG9yJDAiLCJwdHlleG5fbG9jJDAiLCJwdHlleG5fYXR0cmlidXRlcyQwIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJwY3R5X2Rlc2MkMCIsInBjdHlfbG9jJDAiLCJwY3R5X2F0dHJpYnV0ZXMkMCIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJwY3NpZ19zZWxmJDAiLCJwY3NpZ19maWVsZHMkMCIsInBjdGZfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9kZXNjIiwicGN0Zl9kZXNjJDAiLCJwY3RmX2xvYyQwIiwicGN0Zl9hdHRyaWJ1dGVzJDAiLCJwY2lfYXR0cmlidXRlcyIsInBjaV9sb2MiLCJwY2lfZXhwciIsInBjaV9uYW1lIiwicGNpX3BhcmFtcyIsInBjaV92aXJ0IiwicGNpX3ZpcnQkMCIsInBjaV9wYXJhbXMkMCIsInBjaV9uYW1lJDAiLCJwY2lfZXhwciQwIiwicGNpX2xvYyQwIiwicGNpX2F0dHJpYnV0ZXMkMCIsInBjbF9hdHRyaWJ1dGVzIiwicGNsX2xvYyIsInBjbF9kZXNjIiwicGNsX2Rlc2MkMCIsInBjbF9sb2MkMCIsInBjbF9hdHRyaWJ1dGVzJDAiLCJwY3N0cl9maWVsZHMiLCJwY3N0cl9zZWxmIiwicGNzdHJfc2VsZiQwIiwicGNzdHJfZmllbGRzJDAiLCJwY2ZfYXR0cmlidXRlcyIsInBjZl9sb2MiLCJwY2ZfZGVzYyIsInBjZl9kZXNjJDAiLCJwY2ZfbG9jJDAiLCJwY2ZfYXR0cmlidXRlcyQwIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJwbXR5X2Rlc2MkMCIsInBtdHlfbG9jJDAiLCJwbXR5X2F0dHJpYnV0ZXMkMCIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwicHNpZ19kZXNjJDAiLCJwc2lnX2xvYyQwIiwicG1kX2xvYyIsInBtZF9hdHRyaWJ1dGVzIiwicG1kX3R5cGUiLCJwbWRfbmFtZSIsInBtZF9uYW1lJDAiLCJwbWRfdHlwZSQwIiwicG1kX2F0dHJpYnV0ZXMkMCIsInBtZF9sb2MkMCIsInBtc19sb2MiLCJwbXNfYXR0cmlidXRlcyIsInBtc19tYW5pZmVzdCIsInBtc19uYW1lIiwicG1zX25hbWUkMCIsInBtc19tYW5pZmVzdCQwIiwicG1zX2F0dHJpYnV0ZXMkMCIsInBtc19sb2MkMCIsInBtdGRfbG9jIiwicG10ZF9hdHRyaWJ1dGVzIiwicG10ZF90eXBlIiwicG10ZF9uYW1lIiwicG10ZF9uYW1lJDAiLCJwbXRkX3R5cGUkMCIsInBtdGRfYXR0cmlidXRlcyQwIiwicG10ZF9sb2MkMCIsInBvcGVuX2F0dHJpYnV0ZXMiLCJwb3Blbl9sb2MiLCJwb3Blbl9vdmVycmlkZSIsInBvcGVuX2V4cHIiLCJwb3Blbl9leHByJDAiLCJwb3Blbl9vdmVycmlkZSQwIiwicG9wZW5fbG9jJDAiLCJwb3Blbl9hdHRyaWJ1dGVzJDAiLCJwaW5jbF9hdHRyaWJ1dGVzIiwicGluY2xfbG9jIiwicGluY2xfbW9kIiwicGluY2xfbW9kJDAiLCJwaW5jbF9sb2MkMCIsInBpbmNsX2F0dHJpYnV0ZXMkMCIsInBtb2RfYXR0cmlidXRlcyIsInBtb2RfbG9jIiwicG1vZF9kZXNjIiwicG1vZF9kZXNjJDAiLCJwbW9kX2xvYyQwIiwicG1vZF9hdHRyaWJ1dGVzJDAiLCJwc3RyX2xvYyIsInBzdHJfZGVzYyIsInBzdHJfZGVzYyQwIiwicHN0cl9sb2MkMCIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9leHByIiwicHZiX3BhdCIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwicG1iX2xvYyIsInBtYl9hdHRyaWJ1dGVzIiwicG1iX2V4cHIiLCJwbWJfbmFtZSIsInBtYl9uYW1lJDAiLCJwbWJfZXhwciQwIiwicG1iX2F0dHJpYnV0ZXMkMCIsInBtYl9sb2MkMCIsInBkaXJfbG9jIiwicGRpcl9hcmciLCJwZGlyX25hbWUiLCJwZGlyX25hbWUkMCIsInBkaXJfYXJnJDAiLCJwZGlyX2xvYyQwIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsInBkaXJhX2Rlc2MkMCIsInBkaXJhX2xvYyQwIiwic2VsZl8yIiwic2VsZl8zIiwiYWNjIiwiYWNjJDAiLCJhY2MkMSIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsImFjYyQ1IiwiYWNjJDYiLCJhY2MkNyIsImFjYyQ4IiwiYWNjJDkiLCJhY2MkMTAiLCJhY2MkMTEiLCJhY2MkMTIiLCJhY2MkMTMiLCJhY2MkMTQiLCJhY2MkMTUiLCJhY2MkMTYiLCJhY2MkMTciLCJhY2MkMTgiLCJhY2MkMTkiLCJhY2MkMjAiLCJhY2MkMjEiLCJhY2MkMjIiLCJhY2MkMjMiLCJhY2MkMjQiLCJhY2MkMjUiLCJhY2MkMjYiLCJhY2MkMjciLCJhY2MkMjgiLCJhY2MkMjkiLCJhY2MkMzAiLCJhY2MkMzEiLCJhY2MkMzIiLCJhY2MkMzMiLCJhY2MkMzQiLCJhY2MkMzUiLCJhY2MkMzYiLCJhY2MkMzciLCJhY2MkMzgiLCJhY2MkMzkiLCJhY2MkNDAiLCJhY2MkNDEiLCJhY2MkNDIiLCJhY2MkNDMiLCJhY2MkNDQiLCJhY2MkNDUiLCJhY2MkNDYiLCJhY2MkNDciLCJhY2MkNDgiLCJhY2MkNDkiLCJhY2MkNTAiLCJhY2MkNTEiLCJhY2MkNTIiLCJhY2MkNTMiLCJhY2MkNTQiLCJhY2MkNTUiLCJzZWxmXzQiLCJhY2MkNTYiLCJhY2MkNTciLCJhY2MkNTgiLCJhY2MkNTkiLCJhY2MkNjAiLCJhY2MkNjEiLCJhY2MkNjIiLCJhY2MkNjMiLCJhY2MkNjQiLCJhY2MkNjUiLCJhY2MkNjYiLCJhY2MkNjciLCJhY2MkNjgiLCJzZWxmXzUiLCJjdHgiLCJzZWxmXzYiLCJzZWxmXzciLCJ0b19leHRlbnNpb24iLCJlcnJvciIsInN1Yl9tc2dzIiwibWFpbl9tc2ciLCJta19zdHJpbmdfY29uc3RhbnQiLCJleHRlbnNpb25fb2Zfc3ViX21zZyIsInN1Yl9tc2ciLCJyZWdpc3Rlcl9lcnJvcl9vZl9leG4iLCJtZXNzYWdlIiwic2V0X21lc3NhZ2UiLCJtYWtlIiwic3ViIiwic3ViJDAiLCJ1cGRhdGVfbG9jIiwiZ2V0X2xvY2F0aW9uIiwib2ZfZXhuIiwicmFpc2UiLCJwcmludCIsImRpZmZfY29tbWFuZCIsImZpbGUxIiwiZmlsZTIiLCJleHRyYV9wYXRkaWZmX2FyZ3MiLCJ1c2VfY29sb3IiLCJleGVjIiwiY21kIiwiY21kJDAiLCJuIiwicyIsImFyZ3MiLCJlcnJfY29kZSIsImFsbCIsInJlZ2lzdGVyIiwibmFtZSIsImRlcml2ZXIiLCJsb29rdXAiLCJkcnYiLCJkZXJpdmVycyIsImFjYyIsIngiLCJzZWxmXzEiLCJmIiwieCQwIiwic2VsZl8yIiwiYWNjIiwic2VsZl8zIiwibG9vcCIsImwiLCJsJDAiLCJhY2MkMCIsImwkMSIsImFjYyQxIiwiYSIsInIiLCJpIiwic2VsZl80IiwieCQxIiwibGVuIiwiYSQwIiwic2VsZl81IiwiY3R4Iiwic2VsZl82Iiwic2VsZl83IiwicmVzIiwicmVzX2hlYWQiLCJyZXNfdGFpbCIsImZsYWdzJDAiLCJmbGFncyIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJtaW4iLCJtYXgiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsIm1pbiQwIiwibWF4JDAiLCJ0b19zdHJpbmciLCJjb21wYXJlJDEiLCJlcXVhbCQxIiwic3ltYm9sJDExIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2IiwibWluJDEiLCJtYXgkMSIsInN1Yl9zdHJpbmciLCJ0IiwicG9zIiwibGVuIiwiYmxpdF9zdHJpbmciLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNvbXBhcmUkMyIsImVxdWFsJDMiLCJzeW1ib2wkMTciLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJtaW4kMiIsIm1heCQyIiwicHJvdGVjdHgiLCJ4IiwiZiIsImZpbmFsbHkkMCIsInkiLCJleG4kMCIsImV4biIsInRvX3N0cmluZyQxIiwiY29tcGFyZSQ0IiwiZXF1YWwkNCIsInN5bWJvbCQyMyIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsIm1pbiQzIiwibWF4JDMiLCJpZCIsInNldCIsImtleSIsImRhdGEiLCJhZGQiLCJhZGRfZXhuIiwiZmluZF9vcHQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsImRhdGEkMCIsImFkZF9hbGlzdCIsImFsaXN0IiwiYWxpc3QkMCIsImFsaXN0JDEiLCJvZl9hbGlzdCIsInNpemUiLCJzaXplJDAiLCJzaXplJDEiLCJlcnJvciIsIm9mX2FsaXN0X2V4biIsImNyZWF0ZSQwIiwiZmlsZSIsImJpbmFyeSIsIndpdGhfZmlsZSIsImZpbGVuYW1lIiwiaW5wdXRfYWxsIiwiYnVmIiwiY2hhciQwIiwicmVhZF9hbGwiLCJtYXhfaW50IiwidG9fc3RyaW5nJDIiLCJjb21wYXJlJDUiLCJlcXVhbCQ1Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwic3ltYm9sJDMxIiwic3ltYm9sJDMyIiwic3ltYm9sJDMzIiwic3ltYm9sJDM0IiwibWluJDQiLCJtYXgkNCIsInJldl9tYXBpIiwibGlzdCIsImxpc3QkMCIsImkiLCJhY2MiLCJ0YWlsIiwiaGVhZCIsImFjYyQwIiwiaSQwIiwiZm9sZF9yaWdodDIiLCJsaXN0MSIsImxpc3QyIiwiaW5pdCIsIm1hcCQwIiwibWFwaSQwIiwiZm9sZF9yaWdodCQwIiwiYXBwZW5kIiwiY29uY2F0JDAiLCJyZXZfY29tYmluZSIsImNvbWJpbmUiLCJzcGxpdCIsInlzIiwieHMiLCJtYXAyIiwicGFydGl0aW9uX21hcCIsInAiLCJsIiwibGVmdCIsInJpZ2h0IiwibCQwIiwidiIsInYkMCIsImluaXQkMCIsInBvcyQwIiwiaXNfZW1wdHkiLCJyZXZfZmlsdGVyX29wdCIsIm9wdGlvbiIsImZpbHRlcl9vcHQiLCJmaWx0ZXJfbWFwIiwiY29uY2F0X21hcCIsImZpbmRfbWFwIiwic29tZSIsImZpbmRfbWFwX2V4biIsImxhc3QiLCJyZXN0Iiwic3BsaXRfd2hpbGUiLCJmaW5kX2FfZHVwIiwic2V0JDEiLCJzZXQkMCIsImFzc29jX29wdCIsIml0ZXIkMiIsImlzX3NvbWUiLCJpdGVyJDMiLCJtYXAkMSIsInZhbHVlIiwidG9fbGlzdCIsImJpbmQiLCJhIiwiZSIsIm1hcCQyIiwibWFwX2Vycm9yIiwic3ltYm9sX2JpbmQiLCJzeW1ib2xfbWFwIiwiaGFuZGxlX2Vycm9yIiwic3ltYm9sJDM1IiwicTIiLCJ0MiIsInExIiwidDEiLCJoZCQwIiwidG9fbGlzdCQwIiwicSIsIm1hcCQzIiwiY3JlYXRlJDEiLCJmYWlsX2lmX2V4aXN0cyIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsIndpdGhfZmlsZSQwIiwid3JpdGVfYWxsIiwiaXNfZW1wdHkkMCIsInByZWZpeCIsInN1ZmZpeCIsImRyb3BfcHJlZml4IiwiZHJvcF9zdWZmaXgiLCJpc19wcmVmaXgiLCJpc19zdWZmaXgiLCJzdWZmaXhfb2Zmc2V0IiwicG9zJDEiLCJleGlzdHMkMSIsImZvcl9hbGwkMSIsImluZGV4X29wdCQwIiwicmluZGV4X29wdCQwIiwiaW5kZXhfZnJvbV9vcHQkMCIsInJpbmRleF9mcm9tX29wdCQwIiwibHNwbGl0MiIsIm9uIiwiY2FwaXRhbGl6ZV9hc2NpaSQwIiwibG93ZXJjYXNlX2FzY2lpJDEiLCJ1bmNhcGl0YWxpemVfYXNjaWkkMCIsInNwbGl0X29uX2NoYXIkMCIsInNlcCIsImNvbXBhcmUkNyIsImVxdWFsJDciLCJzeW1ib2wkMzYiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJtaW4kNSIsIm1heCQ1IiwiZmluZF9vcHQkMSIsInN5bWJvbCQ0MiIsIm91dHB1dCIsIm9jIiwiYnl0ZXMiLCJvdXRwdXRfc3Vic3RyaW5nIiwic3RyaW5nIiwiaW5fZmlsZSIsIm5hbWUiLCJsb2MiLCJzZXRfZmlsZW5hbWUiLCJmbiIsImxvY19zdGFydCIsImxvY19lbmQiLCJub25lIiwiaW5pdCIsImxleGJ1ZiIsImZuYW1lIiwicmFpc2VfZXJyb3JmIiwiZm10IiwicmVwb3J0X2V4Y2VwdGlvbiIsIm9mX2xleGJ1ZiIsInByaW50IiwicHBmIiwidCIsImNvbXBhcmVfcG9zIiwicDEiLCJwMiIsImNvbHVtbiIsInAiLCJuIiwibWluX3BvcyIsIm1heF9wb3MiLCJjb21wYXJlIiwibG9jMSIsImxvYzIiLCJjcmVhdGVmIiwic3RyIiwiZXJyb3JfZXh0ZW5zaW9uZiIsImUiLCJmYWlsIiwiZXhwZWN0ZWQiLCJhdHRyaWJ1dGUiLCJwYXlsb2FkIiwiYmluZGluZ19vcCIsIm9wIiwicGF0IiwiZXhwIiwiY2FzZSQwIiwibGhzIiwiZ3VhcmQiLCJyaHMiLCJwY2xfY29uc3RyIiwieDAiLCJ4MSIsInBjbF9zdHJ1Y3R1cmUiLCJwY2xfZnVuIiwieDIiLCJ4MyIsInBjbF9hcHBseSIsInBjbF9sZXQiLCJwY2xfY29uc3RyYWludCIsInBjbF9leHRlbnNpb24iLCJwY2xfb3BlbiIsInBjZl9pbmhlcml0IiwicGNmX3ZhbCIsInBjZl9tZXRob2QiLCJwY2ZfY29uc3RyYWludCIsInBjZl9pbml0aWFsaXplciIsInBjZl9hdHRyaWJ1dGUiLCJwY2ZfZXh0ZW5zaW9uIiwiY2xhc3NfaW5mb3MiLCJ2aXJ0IiwicGFyYW1zIiwiZXhwciIsImNsYXNzX3NpZ25hdHVyZSIsInNlbGYiLCJmaWVsZHMiLCJjbGFzc19zdHJ1Y3R1cmUiLCJwY3R5X2NvbnN0ciIsInBjdHlfc2lnbmF0dXJlIiwicGN0eV9hcnJvdyIsInBjdHlfZXh0ZW5zaW9uIiwicGN0eV9vcGVuIiwicGN0Zl9pbmhlcml0IiwicGN0Zl92YWwiLCJwY3RmX21ldGhvZCIsInBjdGZfY29uc3RyYWludCIsInBjdGZfYXR0cmlidXRlIiwicGN0Zl9leHRlbnNpb24iLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInZhcnMiLCJhcmdzIiwicmVzIiwicHR5cF9hbnkiLCJwdHlwX3ZhciIsInB0eXBfYXJyb3ciLCJwdHlwX3R1cGxlIiwicHR5cF9jb25zdHIiLCJwdHlwX29iamVjdCIsInB0eXBfY2xhc3MiLCJwdHlwX2FsaWFzIiwicHR5cF92YXJpYW50IiwicHR5cF9wb2x5IiwicHR5cF9wYWNrYWdlIiwicHR5cF9leHRlbnNpb24iLCJwZGlyX3N0cmluZyIsInBkaXJfaW50IiwicGRpcl9pZGVudCIsInBkaXJfYm9vbCIsInBleHBfaWRlbnQiLCJwZXhwX2NvbnN0YW50IiwicGV4cF9sZXQiLCJwZXhwX2Z1bmN0aW9uIiwicGV4cF9mdW4iLCJwZXhwX2FwcGx5IiwicGV4cF9tYXRjaCIsInBleHBfdHJ5IiwicGV4cF90dXBsZSIsInBleHBfY29uc3RydWN0IiwicGV4cF92YXJpYW50IiwicGV4cF9yZWNvcmQiLCJwZXhwX2ZpZWxkIiwicGV4cF9zZXRmaWVsZCIsInBleHBfYXJyYXkiLCJwZXhwX2lmdGhlbmVsc2UiLCJwZXhwX3NlcXVlbmNlIiwicGV4cF93aGlsZSIsInBleHBfZm9yIiwieDQiLCJwZXhwX2NvbnN0cmFpbnQiLCJwZXhwX2NvZXJjZSIsInBleHBfc2VuZCIsInBleHBfbmV3IiwicGV4cF9zZXRpbnN0dmFyIiwicGV4cF9vdmVycmlkZSIsInBleHBfbGV0bW9kdWxlIiwicGV4cF9sZXRleGNlcHRpb24iLCJwZXhwX2Fzc2VydCIsInBleHBfbGF6eSIsInBleHBfcG9seSIsInBleHBfb2JqZWN0IiwicGV4cF9uZXd0eXBlIiwicGV4cF9wYWNrIiwicGV4cF9vcGVuIiwicGV4cF9sZXRvcCIsInBleHBfZXh0ZW5zaW9uIiwicGV4cF91bnJlYWNoYWJsZSIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImtpbmQiLCJpbmNsdWRlX2luZm9zIiwibW9kIiwibGFiZWxfZGVjbGFyYXRpb24iLCJtdXRhYmxlIiwidHlwZSIsImxldG9wIiwibGV0JDAiLCJhbmRzIiwiYm9keSIsImxvY2F0aW9uIiwic3RhcnQiLCJlbmQiLCJnaG9zdCIsIm1vZHVsZV9iaW5kaW5nIiwibW9kdWxlX2RlY2xhcmF0aW9uIiwicG1vZF9pZGVudCIsInBtb2Rfc3RydWN0dXJlIiwicG1vZF9mdW5jdG9yIiwicG1vZF9hcHBseSIsInBtb2RfY29uc3RyYWludCIsInBtb2RfdW5wYWNrIiwicG1vZF9leHRlbnNpb24iLCJtb2R1bGVfc3Vic3RpdHV0aW9uIiwibWFuaWZlc3QiLCJwbXR5X2lkZW50IiwicG10eV9zaWduYXR1cmUiLCJwbXR5X2Z1bmN0b3IiLCJwbXR5X3dpdGgiLCJwbXR5X3R5cGVvZiIsInBtdHlfZXh0ZW5zaW9uIiwicG10eV9hbGlhcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwib3RhZyIsIm9pbmhlcml0Iiwib3Blbl9pbmZvcyIsIm92ZXJyaWRlIiwicHBhdF9hbnkiLCJwcGF0X3ZhciIsInBwYXRfYWxpYXMiLCJwcGF0X2NvbnN0YW50IiwicHBhdF9pbnRlcnZhbCIsInBwYXRfdHVwbGUiLCJwcGF0X2NvbnN0cnVjdCIsInBwYXRfdmFyaWFudCIsInBwYXRfcmVjb3JkIiwicHBhdF9hcnJheSIsInBwYXRfb3IiLCJwcGF0X2NvbnN0cmFpbnQiLCJwcGF0X3R5cGUiLCJwcGF0X2xhenkiLCJwcGF0X3VucGFjayIsInBwYXRfZXhjZXB0aW9uIiwicHBhdF9leHRlbnNpb24iLCJwcGF0X29wZW4iLCJwb3NpdGlvbiIsImxudW0iLCJib2wiLCJjbnVtIiwicnRhZyIsInJpbmhlcml0IiwicHNpZ192YWx1ZSIsInBzaWdfdHlwZSIsInBzaWdfdHlwZXN1YnN0IiwicHNpZ190eXBleHQiLCJwc2lnX2V4Y2VwdGlvbiIsInBzaWdfbW9kdWxlIiwicHNpZ19tb2RzdWJzdCIsInBzaWdfcmVjbW9kdWxlIiwicHNpZ19tb2R0eXBlIiwicHNpZ19tb2R0eXBlc3Vic3QiLCJwc2lnX29wZW4iLCJwc2lnX2luY2x1ZGUiLCJwc2lnX2NsYXNzIiwicHNpZ19jbGFzc190eXBlIiwicHNpZ19hdHRyaWJ1dGUiLCJwc2lnX2V4dGVuc2lvbiIsInBzdHJfZXZhbCIsInBzdHJfdmFsdWUiLCJwc3RyX3ByaW1pdGl2ZSIsInBzdHJfdHlwZSIsInBzdHJfdHlwZXh0IiwicHN0cl9leGNlcHRpb24iLCJwc3RyX21vZHVsZSIsInBzdHJfcmVjbW9kdWxlIiwicHN0cl9tb2R0eXBlIiwicHN0cl9vcGVuIiwicHN0cl9jbGFzcyIsInBzdHJfY2xhc3NfdHlwZSIsInBzdHJfaW5jbHVkZSIsInBzdHJfYXR0cmlidXRlIiwicHN0cl9leHRlbnNpb24iLCJ0b3BsZXZlbF9kaXJlY3RpdmUiLCJhcmciLCJ0eXBlX2RlY2xhcmF0aW9uIiwiY3N0cnMiLCJwcml2YXRlJDAiLCJ0eXBlX2V4Y2VwdGlvbiIsImNvbnN0cnVjdG9yIiwidHlwZV9leHRlbnNpb24iLCJwYXRoIiwiY29uc3RydWN0b3JzIiwidmFsdWVfYmluZGluZyIsInZhbHVlX2Rlc2NyaXB0aW9uIiwicHJpbSIsInR4dCIsIm1ha2UiLCJtYXAiLCJmIiwiaXNfbm9ybWFsX2lkZW50X2NoYXIiLCJzaG9ydF9uYW1lIiwic3RyaW5nIiwicyIsImIiLCJhIiwiYiQwIiwiYSQwIiwic2V4cF9vZl90IiwiZmxhdHRlbl9leG4iLCJsaWQkMCIsImFjY3UiLCJzJDAiLCJsaWQiLCJsYXN0X2V4biIsInVuZmxhdHRlbiIsImwiLCJhY2MiLCJwYXJzZSIsImludmFsaWQiLCJvcGVuX3BhciIsImNsb3NlX3BhciIsInIiLCJsJDAiLCJncm91cCIsImJlZm9yZSIsImwkMSIsInMkMSIsIngiLCJtayIsIm1hcF9saWRlbnQiLCJsaWRlbnQiLCJ4JDAiLCJwcGF0X2NvbnN0cnVjdCQwIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb24kMCIsInBzdHJfdmFsdWVfbGlzdCIsInJlY19mbGFnIiwidmJzIiwibm9ucmVjX3R5cGVfZGVjbGFyYXRpb24iLCJlaW50IiwiZWNoYXIiLCJlc3RyaW5nIiwiZWZsb2F0IiwiZWludDMyIiwiZWludDY0IiwiZW5hdGl2ZWludCIsInBpbnQiLCJwY2hhciIsInBzdHJpbmciLCJwZmxvYXQiLCJwaW50MzIiLCJwaW50NjQiLCJwbmF0aXZlaW50IiwiZWJvb2wiLCJwYm9vbCIsImV2YXIiLCJ2IiwicHZhciIsImV1bml0IiwicHVuaXQiLCJwZXhwX3R1cGxlJDAiLCJwcGF0X3R1cGxlJDAiLCJwdHlwX3R1cGxlJDAiLCJwZXhwX3R1cGxlX29wdCIsInBwYXRfdHVwbGVfb3B0IiwicHR5cF9wb2x5JDAiLCJ0eSIsInBleHBfYXBwbHkkMCIsImVsIiwiZSQwIiwiZWFwcGx5IiwiZWFic3RyYWN0IiwicHMiLCJlc2VxdWVuY2UiLCJ0bCIsImhkIiwicGNvbnN0cnVjdCIsImNkIiwiZWNvbnN0cnVjdCIsImVsaXN0IiwicGxpc3QiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXQiLCJpZGVudCIsIm4kMCIsInR5cGVfY29uc3RyX2NvbnYiLCJhcHBseV9sb2MiLCJsb25naWRlbnQiLCJsb2MkMCIsIm1vZHVsZV9wYXRoIiwic3VmZml4X24iLCJmdW5jdG9yIiwiZnVuY3Rvcl9hcmdzIiwicmVzdCIsImZ1bmN0b3IkMCIsImZ1bmN0b3JfcGF0aCIsImlkZW50JDAiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiIsImdhdGhlcl9hcmdzIiwiYXJncyQwIiwiYm9keSQwIiwiZXRhX3JlZHVjZSIsImV4cHIkMCIsInN1YnBhdCIsImxhYmVsIiwiYWNjJDAiLCJuYW1lJDAiLCJhY2MkMSIsImZfaWRlbnQiLCJwYXJhbV9sYWJlbCIsImFyZ19sYWJlbCIsInBhcmFtJDAiLCJ0eSQwIiwidHlfb3B0IiwiZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSIsImV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbiIsIm5vbnJlY190eXBlX2RlY2xhcmF0aW9uJDAiLCJwZXhwX3R1cGxlX29wdCQwIiwicHBhdF90dXBsZV9vcHQkMCIsImVpbnQkMCIsImVjaGFyJDAiLCJlc3RyaW5nJDAiLCJlZmxvYXQkMCIsImVpbnQzMiQwIiwiZWludDY0JDAiLCJlbmF0aXZlaW50JDAiLCJlYm9vbCQwIiwiZXZhciQwIiwicGludCQwIiwicGNoYXIkMCIsInBzdHJpbmckMCIsInBmbG9hdCQwIiwicGludDMyJDAiLCJwaW50NjQkMCIsInBuYXRpdmVpbnQkMCIsInBib29sJDAiLCJwdmFyJDAiLCJldW5pdCQwIiwicHVuaXQkMCIsImVhcHBseSQwIiwiZWFic3RyYWN0JDAiLCJlc2VxdWVuY2UkMCIsImVsaXN0JDAiLCJwbGlzdCQwIiwidHlwZV9jb25zdHJfY29udiQwIiwidW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYkMCIsImdldCIsInNraXAiLCJza2lwJDAiLCJzdGFjayIsImxlbiIsInBvcyIsInBvcyQwIiwibGV2ZW5zaHRlaW5fZGlzdGFuY2UiLCJjdXRvZmYiLCJtIiwiZCIsImkkMCIsImokMCIsImxpbmVfbWluIiwiaiIsImkiLCJ2YWx1ZSIsImRpc3RhbmNlIiwic3BlbGxjaGVjayIsIm5hbWVzIiwic3VnZ2VzdGlvbnMiLCJyZWdpc3RlcmVkX25hbWUiLCJuYW1lc19hdF9iZXN0X2Rpc3RhbmNlIiwiYmVzdF9kaXN0YW5jZSIsImRpc3QiLCJyZXZfcmVzdCIsImxhc3QiLCJmb2xkX2RvdF9zdWZmaXhlcyIsImNvbGxhcHNlX2FmdGVyX2F0IiwicGFydHMiLCJwYXJ0IiwicGFydHMkMSIsInBhcnRzJDAiLCJkb3Rfc3VmZml4ZXMiLCJzcGxpdF9wYXRoIiwiaSQyIiwiaSQ0IiwiaSQzIiwiaSQxIiwibWF0Y2hlcyIsIm1hdGNoZWQiLCJzcGxpdF9vdXRlcl9uYW1lc3BhY2UiLCJiZWZvcmVfZG90IiwiYWZ0ZXJfZG90IiwiY3JlYXRlX3NldCIsImZ1bGx5X3F1YWxpZmllZF9uYW1lcyIsImF0dHJpYnV0ZXMiLCJleHRlbnNpb25zIiwiaXNfYWxsb3dsaXN0ZWQiLCJnZXRfYXR0cmlidXRlX2xpc3QiLCJnZXRfZXh0ZW5zaW9uX2xpc3QiLCJjcmVhdGVfcmVzZXJ2ZWQiLCJ0YmwiLCJyZXNlcnZlIiwibnMkMCIsIm5zIiwidGJsJDAiLCJyZXN0X25zIiwib3V0ZXJfbnMiLCJyZXN0X3RibCIsImlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMiLCJpZ25vcmVfY2hlY2tzIiwiY3JlYXRlIiwiY3VycmVudF9maWxlIiwic3RyaW5nX29mX2NvbnRleHQiLCJnZXRfYWxsX2Zvcl9jb250ZXh0IiwiY29udGV4dCIsImNoZWNrX2NvbGxpc2lvbnNfbG9jYWwiLCJjYWxsZXIiLCJhbGxfZm9yX2NvbnRleHQiLCJkZWNsYXJlZF9hdCIsImNvbnRleHQkMCIsImNoZWNrX2NvbGxpc2lvbnMiLCJyZWdpc3RlciIsImtpbmQkMSIsImxpc3QiLCJraW5kJDAiLCJhbGwiLCJ0JDAiLCJhbGxvd2xpc3QiLCJrZXkiLCJvdGhlcl9jb250ZXh0cyIsImN0eCIsImFsbF9mcm9tX2NvbnRleHQiLCJwcF90ZXh0IiwiY3VycmVudF9jb250ZXh0IiwiYV9vcl9hbiIsInkiLCJjIiwicmV2X290aGVycyIsIm90aGVycyIsIm1zZyIsInJhaXNlX2Vycm9yZiQwIiwiY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24iLCJ0ZCIsImNob3AiLCJvcl9tb3JlIiwidGFyZ2V0IiwiY250IiwiZ2VuX3N5bWJvbCIsInByZWZpeCIsInByZWZpeCQwIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMiLCJuYW1lX3BhcmFtIiwidmFyaWFuY2UiLCJ0cCIsInB0eXBfZGVzYyIsIm8iLCJlcnJvcnMiLCJwdHlwZV9wYXJhbXMiLCJxIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZCIsImVyciIsImNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhciIsInRkJDAiLCJyZXN1bHRfdHlwZSIsInN0cmluZ19vZl9jb3JlX3R5cGUiLCJjdCIsImJ1ZiIsImdldF90eXBlX3BhcmFtX25hbWVfcmVzIiwiZ2V0X3R5cGVfcGFyYW1fbmFtZSIsInNlbGZfMSIsImN0eXBlIiwiaWQiLCJ0ZHMiLCJyZWFsbHlfcmVjdXJzaXZlIiwieCQxIiwibG9jX29mX25hbWVfYW5kX3BheWxvYWQiLCJsb2Nfb2ZfcGF5bG9hZCIsImF0dHJfcGF5bG9hZCIsImF0dHJfbmFtZSIsImxvY19vZl9hdHRyaWJ1dGUiLCJsb2Nfb2ZfZXh0ZW5zaW9uIiwiY3VycnlfYXBwbGljYXRpb25zIiwib3JpZ19mb3J3YXJkX2FyZ3MiLCJsb29wIiwicmV2X2Zyb250X2FyZ3MiLCJsYXN0X2FyZyIsImF0dHIiLCJhdHRyaWJ1dGVzX2Vycm9ycyIsInNlbGZfMiIsImNvbGxlY3RfYXR0cmlidXRlc19lcnJvcnMiLCJhc3NlcnRfbm9fYXR0cmlidXRlcyIsInNlbGZfMyIsImFzc2VydF9ub19hdHRyaWJ1dGVzX2luIiwiYXR0cmlidXRlX29mX3dhcm5pbmciLCJpc19wb2x5bW9ycGhpY192YXJpYW50Iiwic2lnIiwidHlwJDAiLCJ0eXAiLCJta19uYW1lZF9zaWciLCJzZ19uYW1lIiwiaGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQiLCJhcml0eSIsIm10eSIsImZvcl9zdWJzdCIsImV4bl90b19sb2NfZXJyb3IiLCJleG4iLCJlcnJvciIsInJldHVybiQwIiwic3ltYm9sX2JpbmQiLCJlcnJvcnMxIiwiZXJyb3JzMiIsInN5bWJvbF9tYXAiLCJvZl9yZXN1bHQiLCJyZXN1bHQiLCJkZWZhdWx0JDAiLCJjb21iaW5lX2Vycm9ycyIsIm5vbGFiZWwiLCJrIiwibGFiZWxsZWQiLCJmMCIsImskMCIsIm9wdGlvbmFsIiwiayQxIiwiayQyIiwicGNsX2xvYyIsImYyIiwiZjEiLCJwY2xfYXR0cmlidXRlcyIsImYzIiwiayQzIiwicGNmX2xvYyIsInBjZl9hdHRyaWJ1dGVzIiwiY2ZrX3ZpcnR1YWwiLCJjZmtfY29uY3JldGUiLCJjbGFzc19pbmZvc19hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfYXR0cmlidXRlcyIsImNsb3NlZCIsIm9wZW4iLCJwY29uc3RfaW50ZWdlciIsInBjb25zdF9jaGFyIiwicGNvbnN0X3N0cmluZyIsInBjb25zdF9mbG9hdCIsInBjc3RyX3R1cGxlIiwicGNzdHJfcmVjb3JkIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmliIiwicHR5cF9sb2MiLCJwdHlwX2F0dHJpYnV0ZXMiLCJ1cHRvIiwiZG93bnRvIiwicGRpcmFfbG9jIiwicGV4cF9sb2MiLCJwZXhwX2F0dHJpYnV0ZXMiLCJmNCIsImskNCIsImV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dCIsInBleHRfZGVjbCIsInBleHRfcmViaW5kIiwidW5pdCIsIm5hbWVkIiwiaW5jbHVkZV9pbmZvc19hdHRyaWJ1dGVzIiwiaW5qZWN0aXZlIiwibm9pbmplY3Rpdml0eSIsImxhYmVsX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMiLCJsZG90IiwibGFwcGx5IiwibW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyIsIm1vZHVsZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2F0dHJpYnV0ZXMiLCJtb2R1bGVfc3Vic3RpdHV0aW9uX2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfYXR0cmlidXRlcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uX2F0dHJpYiIsImltbXV0YWJsZSIsInBvZl9sb2MiLCJwb2ZfYXR0cmlidXRlcyIsIm9wZW5faW5mb3NfYXR0cmlidXRlcyIsImZyZXNoIiwicHBhdF9sb2MiLCJwcGF0X2F0dHJpYnV0ZXMiLCJwc3RyIiwicHNpZyIsInB0eXAiLCJwcGF0IiwicHVibGljJDAiLCJub25yZWN1cnNpdmUiLCJyZWN1cnNpdmUiLCJwcmZfbG9jIiwicHJmX2F0dHJpYnV0ZXMiLCJwc2lnX2xvYyIsInBzdHJfbG9jIiwicHRvcF9kZWYiLCJwdG9wX2RpciIsInR5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyIsImskNSIsInR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMiLCJ0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIiwicHR5cGVfYWJzdHJhY3QiLCJwdHlwZV92YXJpYW50IiwicHR5cGVfcmVjb3JkIiwicHR5cGVfb3BlbiIsInZhbHVlX2JpbmRpbmdfYXR0cmlidXRlcyIsInZhbHVlX2Rlc2NyaXB0aW9uX2F0dHJpYnV0ZXMiLCJjb3ZhcmlhbnQiLCJjb250cmF2YXJpYW50Iiwibm92YXJpYW5jZSIsInZpcnR1YWwiLCJjb25jcmV0ZSIsInB3aXRoX3R5cGUiLCJwd2l0aF9tb2R1bGUiLCJwd2l0aF9tb2R0eXBlIiwicHdpdGhfbW9kdHlwZXN1YnN0IiwicHdpdGhfdHlwZXN1YnN0IiwicHdpdGhfbW9kc3Vic3QiLCJyZXN0b3JlX2NvbnRleHQiLCJiYWNrdXAiLCJpbmNyX21hdGNoZWQiLCJwYXJzZV9yZXMiLCJvbl9lcnJvciIsImYkMCIsInIkMCIsInBhcnNlX3JlcyQwIiwicGFyc2UkMCIsInN5bWJvbCIsInN5bWJvbCQwIiwiZHJvcCIsImFzIiwiY3N0IiwidG9fc3RyaW5nIiwiZXF1YWwiLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiYm9vbCIsImJvb2wkMCIsImZ1bmMiLCJmYWxzZSQwIiwidHJ1ZSQwIiwibmlsIiwic3ltYm9sJDEiLCJzb21lIiwicGFpciIsInRyaXBsZSIsImFsdCIsImUxJDAiLCJlMSIsIm0xIiwiZTIkMCIsImUyIiwibTIiLCJtYXAkMCIsIm1hcF9yZXN1bHQiLCJtYXAwIiwibWFwMSIsIm1hcDIiLCJtYXAwJDAiLCJtYXAxJDAiLCJtYXAyJDAiLCJtYXBfdmFsdWUiLCJtYXBfdmFsdWUkMCIsImFsdF9vcHRpb24iLCJtYW55IiwiYXV4IiwieHMiLCJwYWNrMCIsInBhY2syIiwicGFjazMiLCJ6IiwiY29uc3RfaW50IiwiY29uc3RfaW50MzIiLCJjb25zdF9pbnQ2NCIsImNvbnN0X25hdGl2ZWludCIsInNpbmdsZV9leHByX3BheWxvYWQiLCJub19sYWJlbCIsImV4dGVuc2lvbiIsIm5leHQiLCJleHByJDEiLCJvZl9mdW5jIiwidG9fZnVuYyIsInBvbHlfZXF1YWwiLCJnZXRfcHN0cl9ldmFsIiwic3QiLCJnZXRfcHN0cl9leHRlbnNpb24iLCJnZXRfcHNpZ19leHRlbnNpb24iLCJnZXRfYXR0cmlidXRlcyIsInNldF9hdHRyaWJ1dGVzIiwiYXR0cnMiLCJnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX24iLCJhJDEiLCJhJDIiLCJkdW1teV9leHQiLCJyZWdpc3RyYXIiLCJkZWNsYXJlX3dpdGhfYWxsX2FyZ3MiLCJwYXR0ZXJuIiwiZGVjbGFyZSIsImRlY2xhcmVfd2l0aF9uYW1lX2xvYyIsIm5hbWVfbG9jIiwiZGVjbGFyZV93aXRoX2F0dHJfbG9jIiwiYXR0cl9sb2MiLCJkZWNsYXJlX2ZsYWciLCJwYXlsb2FkX3BhdHRlcm4iLCJjb250aW51YXRpb24iLCJub3JtYWxpemUiLCJoYXNoIiwibm90X3NlZW4iLCJtYXJrX2FzX3NlZW4iLCJleHBsaWNpdGx5X2Ryb3AiLCJnZXRfaW50ZXJuYWwiLCJhdHRyaWJ1dGVzJDEiLCJsb25nZXN0X21hdGNoIiwiYXR0cmlidXRlcyQwIiwibGVuJDAiLCJsb25nZXN0X21hdGNoJDAiLCJsb25nZXN0X21hdGNoJDEiLCJjb252ZXJ0IiwiZG9fbWFya19hc19zZWVuIiwicGF0dGVybiQwIiwiZ2V0X3JlcyIsImhhc19mbGFnX3JlcyIsImhhc19mbGFnIiwiY29uc3VtZV9yZXMiLCJhdHRycyQwIiwiYXR0ciQwIiwiY29uc3VtZSIsInJlbW92ZV9zZWVuX3JlcyIsInBhY2tlZHMiLCJyZW1vdmVfc2VlbiIsInBhdHRlcm5fcmVzIiwiZGVjbGFyZSQwIiwiY29udmVydF9yZXMiLCJ0cyIsImNvbnZlcnQkMCIsImNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyIsIm5vZGUiLCJjb2xsZWN0ZWRfZXJyb3JzIiwiY2xvc2VkX2ZsYWciLCJlcnJvcnMkMCIsImZpZWxkcyQwIiwiaXRlbSIsIml0ZW0kMCIsIml0ZW0kMSIsImVycm9yczIkMCIsIml0ZW0kMiIsImNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJybyIsInJhaXNlX2lmX25vbl9lbXB0eSIsImNoZWNrX3VudXNlZCIsInJlc2V0X2NoZWNrcyIsInNlbGZfNCIsImNvbGxlY3QiLCJjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMiLCJjaGVja19hbGxfc2VlbiIsInJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4iLCJ0YWJsZSIsInNlbGZfNSIsImNvcHlfb2Zfbm90X3NlZW4iLCJjb3B5IiwiZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIiwiZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIiwic2ciLCJ0b3BfbGV2ZWwiLCJmaWxlX3BhdGgiLCJtYWluX21vZHVsZV9uYW1lIiwiZW5jbG9zaW5nX21vZHVsZSIsImVuY2xvc2luZ192YWx1ZSIsInN1Ym1vZHVsZV9wYXRoIiwibG9jYXRlZCIsImZ1bGx5X3F1YWxpZmllZF9wYXRoIiwidmFsdWUkMCIsImVudGVyX2V4cHIiLCJlbnRlcl9tb2R1bGUiLCJtb2R1bGVfbmFtZSIsImVudGVyX3ZhbHVlIiwidmFsdWVfbmFtZSIsInRvX3N0cmluZ19wYXRoIiwid2l0aF9zdHJpbmdfcGF0aCIsInRvb2xfbmFtZSIsImlucHV0X25hbWUiLCJjb2RlX3BhdGgiLCJleHRlbnNpb25fcG9pbnRfbG9jIiwiYmFzZSIsImNvZGVfcGF0aCQwIiwiaW5wdXRfbmFtZSQwIiwidG9vbF9uYW1lJDAiLCJ3aXRoX2xvY19hbmRfcGF0aCIsImN0eHQiLCJtYWtlJDAiLCJkZXJpdmVkX2l0ZW1fbG9jIiwiaW5saW5lIiwiY29kZV9wYXRoJDEiLCJpbnB1dF9uYW1lJDEiLCJ0b29sX25hbWUkMSIsIndpdGhfbG9jX2FuZF9wYXRoJDAiLCJlbnRlciIsImVudGVyX29wdCIsIm5hbWVfb3B0IiwibWIiLCJtZCIsIm10ZCIsInZhcl9uYW1lc19vZiIsImVjX2VudGVyX21vZHVsZV9vcHQiLCJkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyIsImRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiIsImRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyIsImRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpbyIsImRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYSIsImRvX25vdF9lbnRlcl9sZXRfbW9kdWxlIiwidGFnIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2Rlc2MiLCJ3aXRoX3ZhbHVlIiwiY3R4dCQwIiwibW9kdWxlX2V4cHIiLCJuYW1lX2Vycm9ycyIsIndpdGhfbGV0X21vZHVsZSIsIm1vZHVsZV9leHByX2Vycm9ycyIsIm1vZHVsZV9leHByJDAiLCJib2R5X2Vycm9ycyIsImRlc2NfZXJyb3JzJDAiLCJwZXhwX2Rlc2MkMSIsImRlc2NfZXJyb3JzIiwicGV4cF9kZXNjJDAiLCJsb2NfZXJyb3JzIiwicGV4cF9sb2MkMCIsImxvY19zdGFja19lcnJvcnMiLCJwZXhwX2xvY19zdGFjayQwIiwicGV4cF9hdHRyaWJ1dGVzJDAiLCJtZSIsIndpdGhfbW9kdWxlX2V4cHIiLCJ3aXRoX21vZHVsZV9iaW5kaW5nIiwid2l0aF9tb2R1bGVfZGVjbGFyYXRpb24iLCJ3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwidmQiLCJ3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uIiwidmIiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfZXhwciIsInB2Yl9wYXQiLCJ2YXJfbmFtZSIsImluX2JpbmRpbmdfY3R4dCIsInBhdF9lcnJvcnMiLCJwdmJfcGF0JDAiLCJleHByX2Vycm9ycyIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwic2V4cCIsInNleHBfb2YiLCJvY2FtbF9sZXhfdGFibGVzIiwic2tpcF9oYXNoX2JhbmciLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIndpdGhfb3V0cHV0IiwiYmluYXJ5IiwiZm4kMCIsIm9mX2ZpbGVuYW1lIiwiZGVzY3JpYmUiLCJtYXBfd2l0aF9jb250ZXh0IiwiZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24iLCJtYWdpY19sZW5ndGgiLCJzZXRfaW5wdXRfbGV4YnVmIiwiaWMiLCJzb3VyY2UiLCJmcm9tX2NoYW5uZWwiLCJjaCIsImlucHV0X2tpbmQiLCJoYW5kbGVfbm9uX2JpbmFyeSIsInByZWZpeF9yZWFkX2Zyb21fc291cmNlIiwiaW5wdXRfdmVyc2lvbiIsImFsbF9zb3VyY2UiLCJhc3QiLCJleG4kMCIsIklucHV0X3ZlcnNpb24iLCJhc3QkMCIsIklucHV0X3ZlcnNpb24kMCIsImFzdCQxIiwiYXN0JDIiLCJyZWFkIiwiaW5wdXRfc291cmNlIiwid3JpdGUiLCJvYyIsImFkZF9wcHhfY29udGV4dCIsInNnJDAiLCJzdCQwIiwicmVhZF9iaW5hcnkiLCJzaWduYXR1cmUiLCJzdHJ1Y3R1cmUiLCJnZXRfYXN0IiwiZ2V0X2lucHV0X25hbWUiLCJydW5fcHJlcHJvY2Vzc29yIiwicHAiLCJpbnB1dCIsIm91dHB1dCIsImNvbW1hbmQiLCJlbmRfbWFya2VyX3NpZyIsImVuZF9tYXJrZXJfc3RyIiwiZXh0cmFjdF9wcmVmaXgiLCJyZW1vdmVfbG9jIiwicmVtb3ZlX2xvYyQwIiwicHJldiQwIiwicHJldiQxIiwiZGlmZl9hc3RzIiwiZ2VuZXJhdGVkIiwicm91bmRfdHJpcCIsIndpdGhfdGVtcF9maWxlIiwiZm4xIiwiZm4yIiwib3V0IiwiZHVtcCIsImNtZCIsIm9rIiwiY21kJDAiLCJwYXJzZV9zdHJpbmciLCJtYXRjaF9sb29wIiwiZW5kX3BvcyIsIm1pc21hdGNoX2hhbmRsZXIiLCJleHBlY3RlZCQwIiwic291cmNlJDAiLCJsb2MkMSIsInNvdXJjZSQxIiwiZXhwZWN0ZWQkMSIsInkkMCIsImRvX21hdGNoIiwiZ2V0X2xvYyIsImFwcGx5IiwidG9fc2V4cCIsImdldF9sb2MkMCIsInBwJDAiLCJ0b19zZXhwJDAiLCJtYXRjaF9zdHJ1Y3R1cmVfcmVzIiwibWF0Y2hfc3RydWN0dXJlIiwibWF0Y2hfc2lnbmF0dXJlX3JlcyIsIm1hdGNoX3NpZ25hdHVyZSIsImRlc2MiLCJlcSIsImdldF9leHRlbnNpb24iLCJ0eXBlX2RlY2wiLCJlJDEiLCJlJDIiLCJhJDMiLCJlJDMiLCJhJDQiLCJlJDQiLCJhJDUiLCJlJDUiLCJhJDYiLCJlJDYiLCJhJDciLCJlJDciLCJhJDgiLCJlJDgiLCJhJDkiLCJlJDkiLCJ2aXJ0dWFsX3BheWxvYWQiLCJtZXJnZV9hdHRyaWJ1dGVzX3JlcyIsInEkMCIsInQkMSIsInEkMSIsInQkMiIsIm1lcmdlX2F0dHJpYnV0ZXMiLCJ3aXRoX2FyZyIsImZpbmQiLCJleHQiLCJhcmckMCIsInNoaWZ0IiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnIiwicGF0dCIsImNvbnZlcnRfcmVzJDAiLCJmb3VuZCIsImNvbnZlcnRfaW5saW5lX3JlcyIsImNvbnZlcnRfaW5saW5lIiwiY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIiwiZmlsdGVyX2J5X2NvbnRleHQiLCJleHBhbmRlcnMiLCJleHBhbmRlcnMkMCIsImV4cGFuZGVycyQxIiwidW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciIsImNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lciIsImVycm9yX2xpc3RfdG9fZXhjZXB0aW9uIiwiZGVjbGFyZV9pbmxpbmUiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmckMCIsImRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmciLCJkZWNsYXJlJDEiLCJkZWNsYXJlX2lubGluZSQwIiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnJDEiLCJkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnJDAiLCJkZWNsYXJlX3BweF9pbXBvcnQiLCJleHBhbmQiLCJzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCIsImF0dHJfbmFtZSQwIiwic3BsaXRfbm9ybWFsX2FuZF9leHBlY3QkMCIsImZpbHRlciIsImZpZWxkIiwiZmllbGQkMCIsInNwZWNpYWxfZnVuY3Rpb24iLCJjb25zdGFudCIsInN1ZmZpeCIsImF0dHJfc3RyX3R5cGVfZGVjbCIsImF0dHJfc2lnX3R5cGVfZGVjbCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIiwiYXR0cl9zdHJfdHlwZV9leHQiLCJhdHRyX3NpZ190eXBlX2V4dCIsImF0dHJfc3RyX2V4Y2VwdGlvbiIsImF0dHJfc2lnX2V4Y2VwdGlvbiIsImF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3QiLCJhdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0IiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdCIsImF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3QiLCJub3AiLCJyZXBsYWNlIiwiaW5zZXJ0X2FmdGVyIiwiZXhuX3RvX2V4dGVuc2lvbiIsImV4bl90b19lcnJvcl9leHRlbnNpb24iLCJvcmlnaW5hbF9ub2RlIiwicHR5cGVfbWFuaWZlc3QiLCJleG5fdG9fc3RyaSIsImV4bl90b19zaWdpIiwibWFwX25vZGVfcmVjIiwic3VwZXJfY2FsbCIsImJhc2VfY3R4dCIsImVtYmVkX2Vycm9ycyIsImNvbnZlcnRlZCIsIm1hcF9ub2RlcyIsImhvb2siLCJpbl9nZW5lcmF0ZWRfY29kZSIsImdlbmVyYXRlZF9jb2RlIiwiY29kZSIsImdldF9ncm91cCIsImF0dHIyIiwidmFscyIsInZhbHMkMCIsInJldl9jb25jYXQiLCJzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIiwic29ydF9hdHRyX2lubGluZSIsImNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpYyIsIm5vcCQwIiwid2l0aF9jb250ZXh0Iiwib3B0aW9uIiwiZXhwYW5kZWQiLCJleHBhbmRfY29uc3RhbnQiLCJ0ZXh0IiwiYyQwIiwiZXhuJDEiLCJpZCQwIiwiZ2VuZXJhdGVkX2NvZGUkMCIsImV4biQyIiwiZnVuYyQwIiwibGFiIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJ3aXRoX2V4dHJhX2l0ZW1zIiwiZXh0cmFfaXRlbXMiLCJleHBlY3RfaXRlbXMiLCJyZXN0JDAiLCJyZXBsIiwiaXRlbXMiLCJleHBhbmRlZF9pdGVtIiwiZXhwX3RkcyIsImV4cF9yZiIsInJmIiwiZXhwX3RlIiwidGUiLCJleHBfZWMiLCJlYyIsImV4cF9tdGQiLCJvcHQiLCJzdGgiLCJzdGgkMCIsInJ1bGVzIiwic3BlY2lhbF9mdW5jdGlvbnMiLCJzcGVjaWFsX2Z1bmN0aW9ucyQwIiwiY29uc3RhbnRzIiwiY2xhc3NfZXhwciIsImNsYXNzX2ZpZWxkIiwiY2xhc3NfdHlwZSIsImNsYXNzX3R5cGVfZmllbGQiLCJjb3JlX3R5cGUiLCJleHByZXNzaW9uIiwibW9kdWxlX3R5cGUiLCJzaWduYXR1cmVfaXRlbSIsInN0cnVjdHVyZV9pdGVtIiwicHB4X2ltcG9ydCIsImF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9kZWNscyIsImF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9kZWNscyIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHNfZXhwIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMiLCJhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9leHRzIiwiYXR0cl9zaWdfdHlwZV9leHRzX2V4cGVjdCIsImF0dHJfc2lnX3R5cGVfZXh0cyIsImF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9ucyIsImF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zaWdfZXhjZXB0aW9ucyIsIm1hcF9ub2RlIiwibWFwX25vZGVzJDAiLCJoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUiLCJleHBhbmRlZF9pdGVtcyIsImNvbnZlcnRfZXhuIiwiZzEiLCJnMiIsInZhbHVlcyIsImVycm9yX2l0ZW0iLCJnZW5lcmF0ZWRfY29kZV9iZWdpbiIsImdlbmVyYXRlZF9jb2RlX2VuZCIsInBhcmVuIiwic3RvcCIsIm1ha2VfdGV4dCIsImJsb2NrIiwicHJpbnRlciIsImlkeCIsImNvdW50X25ld2xpbmVzIiwic2tpcF9ibGFua19lb2wiLCJjb250ZW50cyIsImNudW0kMSIsImNudW0kMCIsInJlY29uY2lsZSIsInN0eWxlciIsInJlcGxzJDMiLCJpbnB1dF9maWxlbmFtZSIsInJlcGxzIiwicmVwbHMkMiIsInJlcGwkMCIsInByZXYiLCJyZXBscyQwIiwicmVwbHMkMSIsInJlcGxzJDQiLCJvdXRwdXRfbmFtZSIsImNvcHlfaW5wdXQiLCJ1cF90byIsImxpbmUiLCJsYXN0X2lzX3RleHQiLCJpc190ZXh0IiwibGluZSQwIiwibGluZSQxIiwibG9vcCQwIiwibGluZSQyIiwibG9vcF9jb25zZWN1dGl2ZV9yZXBscyQwIiwibGFzdF9pc190ZXh0JDAiLCJlbmRfY29uc2VjdXRpdmVfcmVwbHMiLCJwb3MkMSIsImxhc3RfaXNfdGV4dCQxIiwicG9zJDIiLCJsb29wX2NvbnNlY3V0aXZlX3JlcGxzIiwidG1wX2ZuIiwic2FuaXRpemUiLCJiaW5kaW5ncyIsIkFzdCIsInF1b3RlIiwicXVvdGVkX2V4cHIkMCIsImJpbmRpbmdfZXhwciQwIiwiYmluZGluZ19leHByIiwicXVvdGVkX2V4cHIiLCJiaW5kaW5nIiwibWtfYXR0cl9ub2xvYyIsImhpZGVfYXR0cmlidXRlIiwiZm9jdXNfYXR0cmlidXRlIiwiaGlkZV9wYXR0ZXJuIiwiZm9jdXNfcGF0dGVybiIsImhpZGVfZXhwcmVzc2lvbiIsImZvY3VzX2V4cHJlc3Npb24iLCJlbXB0eSIsInJhbmdlcyIsIm5vZGVfbG9jIiwibm9kZV9uYW1lIiwieF9sb2MiLCJ4X25hbWUiLCJwMiQwIiwicDEkMCIsImluc2VydCIsImFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IiwiZmlsZSIsInNhbWVfZmlsZV9zb19mYXIiLCJzaG91bGRfaWdub3JlIiwib3JpZ19mbmFtZSIsImV4dHJhY3RfY29uc3RyYWludCIsImRvX2NoZWNrIiwiY2hpbGRyZW5zX2xvY3MiLCJzaWJsaW5nc19sb2NzIiwibWF4X3BvcyQwIiwibWluX3BvcyQwIiwiY2hpbGRfbG9jIiwiY2hpbGRfbmFtZSIsImwyIiwibDEiLCJ5cyIsInlzJDAiLCJ4cyQwIiwiZW5mb3JjZV9pbnZhcmlhbnRzIiwic2libGluZ3MiLCJjdGUiLCJjdHAiLCJvdXRtb3N0X2xvYyIsImluaXRpYWxfcmVzJDAiLCJyZXMkMSIsImluaXRpYWxfcmVzIiwicmVzJDAiLCJjaGlsZHNfbG9jcyIsImF0dHJzX2xvY3MiLCJzaWJsaW5nc19sb2MiLCJ0ZGVjbCIsImV4cHJfbyIsImxhYmVscyIsImFjYyQyIiwib3BuIiwiZV9sb2MiLCJjZSIsIm9kIiwiYWNjJDMiLCJhY2MkNCIsImV4ZV9uYW1lIiwiYWRkX2FyZyIsInNwZWMiLCJkb2MiLCJsb2NfZm5hbWUiLCJwZXJmb3JtX2NoZWNrcyIsInBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMiLCJwZXJmb3JtX2xvY2F0aW9uc19jaGVjayIsImRlYnVnX2F0dHJpYnV0ZV9kcm9wIiwiYXBwbHlfbGlzdCIsInByZXByb2Nlc3NvciIsIm5vX21lcmdlIiwicmVxdWVzdF9wcmludF9wYXNzZXMiLCJyZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyIsInVzZV9jb2xvciIsImRpZmZfY29tbWFuZCIsInByZXR0eSIsIm91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSIsImNvcnJlY3RlZF9zdWZmaXgiLCJnZXRfZGVmYXVsdF9wYXRoIiwiZm5hbWUkMCIsImdldF9kZWZhdWx0X3BhdGhfc3RyIiwiZ2V0X2RlZmF1bHRfcGF0aF9zaWciLCJvZl9zdHJpbmciLCJnaXZlbl90aHJvdWdoX2NsaSIsInNldCIsImhhbmRsZXJzIiwiYWRkX2hhbmRsZXIiLCJhZGRfc2ltcGxlX2hhbmRsZXIiLCJhY2tub3dsZWRnZV9jb29raWVzIiwicG9zdF9oYW5kbGVycyIsImFkZF9wb3N0X2hhbmRsZXIiLCJjYWxsX3Bvc3RfaGFuZGxlcnMiLCJ0cmFuc2Zvcm1hdGlvbiIsInRyYW5zZm9ybWF0aW9uJDAiLCJoYXNfbmFtZSIsInByaW50X2NhbGxlcl9pZCIsImNhbGxlcl9pZCIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIiwiZW5jbG9zZV9pbXBsIiwiZW5jbG9zZV9pbnRmIiwiaW1wbCIsImludGYiLCJsaW50X2ltcGwiLCJsaW50X2ludGYiLCJwcmVwcm9jZXNzX2ltcGwiLCJwcmVwcm9jZXNzX2ludGYiLCJpbnN0cnVtZW50IiwiYWxpYXNlcyIsInJ1bGVzJDAiLCJpbXBsJDAiLCJpbnRmJDAiLCJwcmVwcm9jZXNzX2ltcGwkMCIsInByZXByb2Nlc3NfaW50ZiQwIiwiY3QkMCIsImxvY19vZl9saXN0IiwibCQyIiwiZmlyc3QiLCJtZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyIsImV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIiwiZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIiwid2hvbGVfbG9jIiwiZm9vdGVyIiwiaGVhZGVyIiwibG9jX2hlYWRlciIsImxvY19mb290ZXIiLCJtYXBfaW1wbCIsInN0X3dpdGhfYXR0cnMiLCJtYXBfaW50ZiIsInNnX3dpdGhfYXR0cnMiLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ18iLCJhZGRfY3R4dF9hcmciLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiQwIiwibGludF9pbXBsJDAiLCJsaW50X2ludGYkMCIsImVuY2xvc2VfaW1wbCQwIiwiZW5jbG9zZV9pbnRmJDAiLCJyZWdpc3Rlcl9jb2RlX3RyYW5zZm9ybWF0aW9uIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfJDAiLCJnZXRfd2hvbGVfYXN0X3Bhc3NlcyIsImN0cyIsImFmdF9pIiwiYmVmX2kiLCJyZWR1Y2VkX3QiLCJpbnN0ciIsInRyYW5zZiIsInRyYW5zZiQwIiwidHJhbnNmb3JtcyIsImFmdGVyX2luc3RycyIsImJlZm9yZV9pbnN0cnMiLCJwcmVwcm9jZXNzIiwibGludGVycyIsImdldF9lbmNsb3NlcnMiLCJpbXBsX2VuY2xvc2VycyIsImludGZfZW5jbG9zZXJzIiwibWVyZ2VfZW5jbG9zZXIiLCJlbmNsb3NlcnMiLCJmb290ZXJzIiwiaGVhZGVycyIsImhlYWRlcnMkMCIsImZvb3RlcnMkMCIsImFwcGx5X3RyYW5zZm9ybXMiLCJsaW50X2ZpZWxkIiwiZHJvcHBlZF9zb19mYXIiLCJsaW50X2Vycm9ycyIsIm9sZF9kcm9wcGVkIiwibGludF9lcnJvcnMkMCIsImVycm9ycyQxIiwibW9yZV9lcnJvcnMiLCJuZXdfZHJvcHBlZCIsInByaW50X2RpZmYiLCJ3aGF0IiwiZGlmZiIsImRyb3BwZWQiLCJlcnJvcl90b19leHRlbnNpb24iLCJleHQkMCIsInNvcnRfZXJyb3JzX2J5X2xvYyIsImVycm9yJDAiLCJtYXBfc3RydWN0dXJlX2dlbiIsIndpdGhfZXJyb3JzIiwic29ydGVkIiwic3QkMSIsInVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyIsInVudXNlZF9leHRlbnNpb25fZXJyb3JzIiwibm90X3NlZW5fZXJyb3JzIiwibWFwX3NpZ25hdHVyZV9nZW4iLCJzZyQxIiwibWFwX3NpZ25hdHVyZSIsInZlcnNpb25lZF9lcnJvcmYiLCJpbnB1dF9maWxlX25hbWUiLCJyZW1vdmVfbm9fZXJyb3IiLCJuZXdfZm4iLCJvbGRfZm4iLCJyZWxvY2F0ZV9tYXBwZXIiLCJzZXRfaW5wdXRfbmFtZSIsImV4dHJhY3RfY29va2llcyIsInByZWZpeCQxIiwicHJlZml4JDIiLCJjb3JyZWN0aW9ucyIsImFkZF90b19saXN0IiwicmVnaXN0ZXJfY29ycmVjdGlvbiIsInByb2Nlc3NfZmlsZV9ob29rcyIsInJlZ2lzdGVyX3Byb2Nlc3NfZmlsZV9ob29rIiwiYWxsJDAiLCJwcm9jZXNzX2FzdCIsIm91dHB1dF9tb2RlIiwic2V0X2lucHV0Iiwic2V0X2tpbmQiLCJzZXRfb3V0cHV0X21vZGUiLCJtb2RlIiwibWF0Y2giLCJhcmdfb2Zfb3V0cHV0X21vZGUiLCJwYXJzZV9hcHBseV9saXN0IiwibWFzayIsImhhbmRsZV9hcHBseSIsImhhbmRsZV9kb250X2FwcGx5IiwiaW50ZXJwcmV0X21hc2siLCJzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSIsImlzX2NhbmRpZGF0ZSIsIm5hbWVzJDAiLCJpc19zZWxlY3RlZCIsInNldF9jb29raWUiLCJzaGFyZWRfYXJncyIsImFzX3BwIiwic3RhbmRhbG9uZV9hcmdzIiwiZ2V0X2FyZ3MiLCJzdGFuZGFsb25lX2FyZ3MkMCIsInN0YW5kYWxvbmVfbWFpbiIsInVzYWdlIiwicmVsb2NhdGUiLCJvdXRwdXQkMCIsImVtYmVkX2Vycm9ycyQwIiwib3V0cHV0X21vZGUkMCIsInJlcGxhY2VtZW50cyIsImhvb2skMCIsImV4cGVjdF9taXNtYXRjaF9oYW5kbGVyJDAiLCJhc3RfaW5wdXRfbmFtZSIsImFzdF9raW5kIiwiZmFsbF9iYWNrX3ZlcnNpb24iLCJ1bmtub3duX21hZ2ljIiwiZmFsbF9iYWNrX3ZlcnNpb24kMCIsInRtcGZpbGUiLCJmYWlsZWRfY29tbWFuZCIsInByZXByb2Nlc3NlZF9hbmRfbG9hZGVkIiwiaW5wdXRfZm5hbWUiLCJpbnB1dF92ZXJzaW9uJDAiLCJpbnB1dF92ZXJzaW9uJDEiLCJpbnB1dF92ZXJzaW9uJDIiLCJtZXRhZGF0YSIsImlucHV0X2NvbnRlbnRzIiwidGVzdCIsIm1hZ2ljX251bWJlciIsImNvcnJlY3RlZCIsImNvcnJlY3Rpb25zJDAiLCJtaXNtYXRjaGVzX2ZvdW5kIiwibnVsbF9hc3QiLCJwYXJzZV9pbnB1dCIsInBhc3NlZF9pbl9hcmdzIiwidmFsaWRfYXJncyIsImluY29ycmVjdF9pbnB1dF9tc2ciLCJtc2ckMCIsInJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiIsImZsYWdzX2FuZF9wcm9nX25hbWUiLCJpbnB1dF9mbiIsIm91dHB1dF9mbiIsInByb2dfbmFtZV9hbmRfZmxhZ3MiLCJhc3QkNCIsImFzdCQzIiwic3RhbmRhbG9uZSIsImFyZ3YiLCJydW5fYXNfcHB4X3Jld3JpdGVyIiwicHJldHR5JDAiLCJlbmFibGVfY2hlY2tzIiwiZW5hYmxlX2xvY2F0aW9uX2NoZWNrIiwiZGlzYWJsZV9sb2NhdGlvbl9jaGVjayIsIm1hcF9zdHJ1Y3R1cmUiLCJ2YXIkMCIsInZhcnNfb2YiLCJpZ24iLCJhZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzIiwibXMiLCJmcCIsImJpbmRzX21vZHVsZV9uYW1lcyIsIndhcm5pbmdzIiwiZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpIiwia2VlcF93MzJfaW1wbCIsImtlZXBfdzMyX2ludGYiLCJrZWVwX3czMl9zcGVjIiwiY29udl93MzJfc3BlYyIsImtlZXBfdzMyX2ltcGwkMCIsImtlZXBfdzYwX2ltcGwiLCJrZWVwX3c2MF9pbnRmIiwia2VlcF93NjBfc3BlYyIsImFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsImZsYWciLCJzeW1ib2wkNCIsImlnbm9yZSIsImdlbiIsImRlcHMiLCJ1bnVzZWRfY29kZV93YXJuaW5ncyIsImFyZ19uYW1lcyIsIm1ha2Vfbm9hcmciLCJtYWtlX25vYXJnJDAiLCJhcHBseSQwIiwiYXBwbHlfYWxsIiwiZW50cnkiLCJnZW5lcmF0b3JzIiwiZXh0X3RvX2l0ZW0iLCJlbXB0eV9sYWJlbF9lcnJvciIsImR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciIsImFjY2VwdGVkX2FyZ3MiLCJwYXJhbSIsInVuYWNjZXB0ZWRfYXJndW1lbnQiLCJzcGVsbGNoZWNrX21zZyIsImxlcnIiLCJsZXJyJDAiLCJzdHJfdHlwZV9kZWNsIiwic3RyX3R5cGVfZXh0Iiwic3RyX2V4Y2VwdGlvbiIsInN0cl9tb2R1bGVfdHlwZV9kZWNsIiwic2lnX3R5cGVfZGVjbCIsInNpZ190eXBlX2V4dCIsInNpZ19leGNlcHRpb24iLCJzaWdfbW9kdWxlX3R5cGVfZGVjbCIsInJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIiwiY29sbGVjdGVkIiwiZHJ2IiwiYWxpYXMiLCJyZXNvbHZlX2ludGVybmFsIiwiZyIsIm5vdF9zdXBwb3J0ZWQiLCJyZXNvbHZlX2FsbCIsImRlcml2ZXJzIiwiZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIiwiZGVyaXZlcnNfYW5kX2FyZ3MiLCJzZWVuIiwibmFtZWRfZ2VuZXJhdG9ycyIsImxfZXJyIiwiYWN0dWFsX2Rlcml2ZXJfbmFtZSIsImR1cF9lcnJvciIsImRlcCIsImRlcF9uYW1lIiwiZGVwX2Vycm9ycyIsImFkZCIsImFjdHVhbF9kZXJpdmVyIiwiZXh0ZW5zaW9uJDAiLCJhZGRfYWxpYXMiLCJzZXQkMCIsInBhcnNlX2FyZ3VtZW50cyIsIm1rX2Rlcml2aW5nX2F0dHIiLCJnZW5lcmF0b3JfbmFtZSIsImdlbmVyYXRvciIsImRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIiwid2FybmluZyIsImlubGluZV9kb2NfYXR0ciIsIndyYXBfc3RyIiwiaGlkZSIsInVudXNlZF9jb2RlX3dhcm5pbmdzJDAiLCJ3YXJuaW5ncyQwIiwid2FybmluZ3MkMiIsIndhcm5pbmdzJDEiLCJ3cmFwIiwicGluY2xfYXR0cmlidXRlcyIsIndyYXBfc2lnIiwibWVyZ2VfZ2VuZXJhdG9ycyIsIm1lcmdlX2Rlcml2ZWQiLCJsaXN0cyIsImRlcml2ZWQiLCJvdGhlciIsImV4cGFuZF9zdHJfdHlwZV9kZWNscyIsImxfZXJyJDAiLCJleHBhbmRfc2lnX3R5cGVfZGVjbHMiLCJleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJnZW5lcmF0b3JzJDAiLCJleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJleHBhbmRfc3RyX2V4Y2VwdGlvbiIsImV4cGFuZF9zaWdfZXhjZXB0aW9uIiwiZXhwYW5kX3N0cl90eXBlX2V4dCIsImV4cGFuZF9zaWdfdHlwZV9leHQiLCJleHBhbmRfc2lnIiwiZXhwYW5kX3N0ciIsInJ1bGVfc3RyIiwicnVsZV9zaWciLCJydWxlX3N0cl9leHBlY3QiLCJydWxlX3NpZ19leHBlY3QiLCJkZXJpdmluZ19hdHRyIiwiZGVyaXZpbmdfYXR0cl9leHBlY3QiLCJydWxlc190eXBlX2RlY2wiLCJydWxlc190eXBlX2V4dCIsInJ1bGVzX2V4Y2VwdGlvbiIsInJ1bGVzX21vZHVsZV90eXBlX2RlY2wiLCJtYW5nbGUiLCJhZmZpeCIsImZpeHBvaW50IiwicCQwIiwibWFuZ2xlX3R5cGVfZGVjbCIsIm1hbmdsZV9saWQiLCJkZWZhdWx0JDAiLCJ4IiwiZHJvcF9kZWZhdWx0IiwiZHJvcF9kZWZhdWx0X2VxdWFsIiwiZHJvcF9kZWZhdWx0X2NvbXBhcmUiLCJkcm9wX2RlZmF1bHRfeW9qc29uIiwiZHJvcF9pZiIsIm9wYXF1ZSIsIm9wdGlvbiIsImFsbG93X2V4dHJhX2ZpZWxkc190ZCIsImFsbG93X2V4dHJhX2ZpZWxkc19jZCIsInlvanNvbl9rZXkiLCJ5b2pzb25fdmFyaWFudF9uYW1lIiwieW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtIiwiaW52YWxpZF9hdHRyaWJ1dGUiLCJsb2MiLCJhdHRyIiwiZGVzY3JpcHRpb24iLCJmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIiwiZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCIsImNkcyIsImNkIiwiZ2V0X2F0dHJpYnV0ZSIsImxkIiwiZiIsImNyZWF0ZSIsImdldHRlcnMiLCJjb21tb25fZ2V0dGVycyIsInR5IiwiYXR0cmlidXRlcyIsInYiLCJjcmVhdGUkMCIsImNyZWF0ZSQxIiwiZSIsImxhYmVsIiwibmFtZV9vdmVycmlkZSIsIm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidCIsIm5hbWUiLCJwcmVmaXgiLCJzeW1ib2wiLCJsaHMiLCJyaHMiLCJwZXhwX21hdGNoIiwiZXhwciIsImNhc2VzIiwicGNfcmhzIiwicGNfbGhzIiwiaWRlbnQiLCJpZGVudCQwIiwidW5yb2xsIiwibWFwX3RtcF92YXJzIiwidHMiLCJ2YXJzIiwiaSIsImJpbmRpbmdzIiwidmFyJDAiLCJpZGVudGl0eSIsImFkZF91bml2ZXJzYWxseV9ib3VuZCIsIm5hbWUkMCIsIm1hcCIsInNlbGZfMSIsImVycm9yIiwiYWRkX3R5cGV2YXJzIiwiYXV4IiwidHBfbmFtZSIsInRwX2luX3JldHVybl90eXBlIiwiZGF0YSIsInNlbGZfMiIsInJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvciIsInJpZ2lkX3R5cGVfdmFyIiwidHlwZV9uYW1lIiwic2VsZl80IiwiYWNjIiwieCQwIiwidHZhcnMiLCJjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIiwidGQiLCJ0eXAiLCJ0cHMiLCJmdW5jX25hbWUiLCJib2R5IiwiaGFzX3ZhcnMiLCJwYXQiLCJ2YXJzJDAiLCJ0eHQiLCJwYXQkMCIsInVzZV9yaWdpZF92YXJpYWJsZXMiLCJzZWxmXzMiLCJkZXNjIiwicyIsInB0eXBfZGVzYyIsImJvZHkkMCIsInRwIiwicmVhbGx5X3JlY3Vyc2l2ZSIsInJlY19mbGFnIiwidGRzIiwic2VsZl81IiwiY3R5cGUiLCJ0eXBlX29mX3lvanNvbl9vZiIsIm1rX3R5cGUiLCJzaWdfdHlwZV9kZWNsIiwidHlwZV9vZl9vZl95b2pzb24iLCJta190eXBlJDAiLCJzaWdfdHlwZV9kZWNsJDAiLCJ3aXRoX3BvbHkiLCJvZl95b2pzb25fdHlwZSIsIm9mX3lvanNvbl9pdGVtIiwieW9qc29uX29mX3R5cGVfY29uc3RyIiwiaWQiLCJhcmdzIiwieW9qc29uX29mX3R5cGUiLCJ0eXBldmFyX2hhbmRsaW5nIiwidHlwJDAiLCJsb2MkMCIsInBhcm0iLCJyZW5hbWluZyIsInZhbHVlIiwicGFybSQwIiwidHlwJDEiLCJmcHMiLCJldmFycyIsInB2YXJzIiwiaW5fZXhwciIsImV4cHIkMCIsInJvd19maWVsZHMiLCJpdGVtIiwicm93IiwiY2FsbCIsImNuc3RyIiwibGFiZWwkMCIsImNuc3RyX2V4cHIiLCJ5b2pzb25fb2ZfYXJncyIsInBhdHRzIiwicGF0dCQwIiwicGF0dCIsInBvbHlfdHAiLCJwYXJtcyIsImxvYyQxIiwicmVuYW1pbmckMCIsIm1rX2JpbmRpbmciLCJiaW5kaW5ncyQwIiwicmVuYW1pbmckMSIsImZ1bl9leHByIiwibWF0Y2hpbmdzIiwibWtfcmVjX3BhdHQiLCJwIiwieW9qc29uX29mX3JlY29yZF9maWVsZCIsInlvanNvbl9vZiIsImlzX2VtcHR5X2V4cHIiLCJrZXkiLCJleHAiLCJjbnZfZXhwciIsInlvanNvbl9vZiQwIiwiY252X2V4cHIkMCIsInZfbmFtZSIsImlzX2VtcHR5X2V4cHIkMCIsImlzX2VtcHR5X2V4cHIkMSIsImRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZSIsInR5cGVzX2JlaW5nX2RlZmluZWQiLCJ3aHkiLCJzZWxmXzYiLCJpdGVyIiwiZGlzYWxsb3dfdmFyaWFibGVzIiwiZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIiwidHlwZXNfYmVpbmdfZGVmaW5lZCQwIiwic2VsZl83IiwiaXRlciQwIiwieW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpIiwiZmxkcyIsIndyYXBfZXhwciIsImNvbGwiLCJ0ZXN0Iiwidm5hbWUiLCJibmRzIiwidGVzdCQwIiwidHAkMCIsInRwJDIiLCJwYXR0JDEiLCJ2bmFtZSQwIiwiaG93IiwidHAkMSIsImlzX2VtcHR5IiwieW9qc29uX2V4cHIiLCJpbml0X2V4cHIiLCJ5b2pzb25fb2ZfdGRzIiwicmVjX2ZsYWckMCIsInRkJDAiLCJ0cHMkMCIsInBhcmFtcyIsImNvbnN0cl9saWQiLCJjb25zdHJfbmFtZSIsImxkcyIsImNuc3RyX2V4cHIkMCIsInBjZF9hcmdzIiwiaXNfcHJpdmF0ZV9hbGlhcyIsInR5X3NyYyIsIm1hbmlmZXN0IiwibWFuaWZlc3QkMCIsInR5X2RzdCIsImNvZXJjaW9uIiwiZnVuX2V4cHIkMCIsIm1hdGNoaW5ncyQwIiwiYm9keSQxIiwieW9qc29uX2ZpZWxkc19vZl90ZCIsInlvanNvbl9maWVsZHNfb2ZfdGRzIiwiaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IiwibWF0Y2hfbGFzdCIsIm1hdGNoZXMiLCJta192YXJpYW50X290aGVyX21hdGNoZXMiLCJyZXZfZWxzIiwiY29sbF9zdHJ1Y3RzIiwiZXhjX25vX3ZhcmlhbnRfbWF0Y2giLCJmdWxsX3R5cGUiLCJpbnRlcm5hbCIsIm4iLCJhcmdzJDAiLCJhcmciLCJzJDAiLCJmdWxsX3R5cGUkMCIsImZ1bGxfdHlwZSQxIiwiaXNfY29udGFpbmVkIiwiZnVsbF90eXBlJDIiLCJ0b3BfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF90YWciLCJyZXN0IiwiaW5oIiwibG9vcCIsImgiLCJyZnRhZ19tYXRjaGVzIiwiaW5oJDAiLCJoYW5kbGVfdmFyaWFudF9pbmgiLCJvdGhlcl9tYXRjaGVzIiwiZnVuY19leHByIiwiYXBwIiwibWF0Y2hfZXhjIiwibmV3X290aGVyX21hdGNoZXMiLCJta19jbnN0cl9hcmdzX21hdGNoIiwiaXNfdmFyaWFudCIsImNuc3RyX2xhYmVsIiwidmFyX2V4cHIiLCJ2YXJzX2V4cHIiLCJnb29kX2FyZ19tYXRjaCIsInJvd19maWVsZF9saXN0Iiwicm93X2ZpZWxkIiwic2luaHMiLCJhaW5ocyIsInN0cnVjdHMiLCJhdG9tcyIsImlpbmgiLCJ0cGwiLCJyZXZfc3RydWN0c19pbmhzIiwicmV2X2F0b21zX2luaHMiLCJyZXZfc3RydWN0cyIsInJldl9hdG9tcyIsImhhc19zdHJ1Y3RzX3JlZiIsImNvbGwkMCIsIm5ld19tYXRjaCIsIm90aGVyX21hdGNoZXMkMCIsIm1hdGNoX2xhc3QkMCIsIm1hdGNoX3N0cnVjdHNfaW5ocyIsImhhc19zdHJ1Y3RzIiwibWF0Y2hfc3RydWN0IiwibWF5YmVfeW9qc29uX2FyZ3NfcGF0dCIsIm1hdGNoX2F0b21zX2luaHMiLCJta19leHRyYWN0X2ZpZWxkcyIsImFsbG93X2V4dHJhX2ZpZWxkcyIsImhhbmRsZV9leHRyYSIsImluaXRzIiwibW9yZV9mbGRzIiwibm0iLCJpbml0cyQwIiwidW5yb2xsZWQiLCJta19jbnZfZmllbGRzIiwiaGFzX3BvbHkiLCJtY19maWVsZHNfd2l0aF9hcmdzIiwiZXhwcl9yZWZfaW5pdHMiLCJmaWVsZF9yZWZzIiwiaW5pdCIsImhhc19ub25vcHRfZmllbGRzIiwiYWNjJDAiLCJnb29kX3BhdHRzIiwiYmlfbHN0IiwicmVzX3RwbHMiLCJmbGQiLCJuZXdfZ29vZF9wYXR0cyIsIm5ld19iaV9sc3QiLCJuZXdfZ29vZF9wYXR0cyQwIiwibmV3X2JpX2xzdCQwIiwiYWNjJDEiLCJnb29kX3BhdHRzJDAiLCJiaV9sc3QkMCIsInJlc190cGxzJDAiLCJjbnZ0IiwibWF0Y2hfZ29vZF9leHBycyIsIm1hdGNoX2dvb2RfZXhwciQwIiwibWF0Y2hfZ29vZF9leHByIiwiY252dCQwIiwicmVzX3BhdHQiLCJyZXNfZXhwciIsImxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qcyIsImNudl9maWVsZHMiLCJwYXRzIiwicmVjb3JkX2RlZiIsInRkX29mX3lvanNvbiIsInBvbHkiLCJwYXRoIiwiaXNfcHJpdmF0ZSIsImNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvbiIsImFsdHMkMCIsImFsdHMiLCJjbnN0cl9uYW1lIiwiZmllbGRzIiwibGJscyIsImV4dGVybmFsX25hbWUiLCJpbnRlcm5hbF9uYW1lIiwiYXJnX2V4cHJzIiwiYXJnX3BhdHRzIiwiZnVsbF90eXBlX25hbWUiLCJiaW5kX3RwX2xvY19pbiIsImludGVybmFsX2Z1bl9ib2R5Iiwibm9fdmFyaWFudF9tYXRjaF9tYyIsImludGVybmFsX2V4cHIiLCJpbnRlcm5hbF9jYWxsIiwidHJ5X3dpdGgiLCJib2R5X2JlbG93X2xhbWJkYXMiLCJuZWVkX3RwX2xvYyIsImJvZHlfd2l0aF9sYW1iZGFzIiwiZXh0ZXJuYWxfZnVuX2JvZHkiLCJpbnRlcm5hbF9iaW5kaW5ncyIsImV4dGVybmFsX2JpbmRpbmciLCJ0ZHNfb2ZfeW9qc29uIiwic2luZ2xldG9uIiwiZXh0ZXJuYWxzIiwiaW50ZXJuYWxzIiwidHlwZV9leHRlbnNpb24iLCJjb3JlX3R5cGUiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiY29yZV90eXBlJDAiLCJjdHlwIiwiZnAiLCJzaWdfdHlwZV9kZWNsJDEiLCJkZWNscyIsImluY2x1ZGVfaW5mb3MiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9rZXlzIiwiYXJyYXlfY29uc3RydWN0b3IiLCJhcnJheV9nZXQiLCJhcnJheV9zZXQiLCJhcnJheV9tYXAiLCJpZHgiLCJhcnJheV9tYXBpIiwic3RyX2FycmF5IiwibWF0Y2hfcmVzdWx0IiwiZGF0ZV9jb25zdHIiLCJtYXRoIiwiZXJyb3JfY29uc3RyIiwiZXhuX3dpdGhfanNfYmFja3RyYWNlIiwibmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInRvX3N0cmluZyIsInJhaXNlX2pzX2Vycm9yIiwiZSIsInN0cmluZ19vZl9lcnJvciIsIkpTT04iLCJkZWNvZGVVUkkiLCJzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZW5jb2RlVVJJIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwidW5lc2NhcGUiLCJpc05hTiIsImkiLCJwYXJzZUludCIsInMkMCIsInBhcnNlRmxvYXQiLCJleHBvcnRfanMiLCJmaWVsZCIsImV4cG9ydCQwIiwiZXhwb3J0X2FsbCIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJ0MSIsImFjYyQwIiwiaSQwIiwiaGFzIiwidCIsIm1hc2siLCJhZGQiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwicmVwbGFjZUNoaWxkIiwiaW5zZXJ0QmVmb3JlIiwibm9kZVR5cGUiLCJ0MTMiLCJjYXN0IiwidDE0IiwiZWxlbWVudCIsInRleHQiLCJhdHRyIiwibm9faGFuZGxlciIsImhhbmRsZXIiLCJyZXMiLCJmdWxsX2hhbmRsZXIiLCJ0aGlzJDAiLCJpbnZva2VfaGFuZGxlciIsImV2ZW50IiwiZXZlbnRUYXJnZXQiLCJtYWtlIiwiYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwidDQ0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInR5cCIsImgiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwieCQxIiwiYXJyYXlCdWZmZXIiLCJpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJhIiwidiIsInVuc2FmZV9nZXQiLCJkYXRhVmlldyIsIm9mX2FycmF5QnVmZmVyIiwidWludDgiLCJvZl9hcnJheUJ1ZmZlciQwIiwiZmlsdGVyX21hcCIsInEiLCJ2JDAiLCJibG9iX3JhdyIsImNvbnRlbnRUeXBlIiwiZW5kaW5ncyIsIm9wdGlvbnMiLCJibG9iX2Zyb21fc3RyaW5nIiwiYmxvYl9mcm9tX2FueSIsImwiLCJsJDAiLCJhJDAiLCJiIiwiZmlsZW5hbWUiLCJuYW1lJDAiLCJkb2NfY29uc3RyIiwiZG9jdW1lbnQiLCJibG9iIiwic3RyaW5nIiwibG9hZHN0YXJ0IiwicHJvZ3Jlc3MiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsImxvYWRlbmQiLCJmaWxlUmVhZGVyIiwibmFtZSQ1NiIsIm5hbWUkNTUiLCJuYW1lJDU0IiwibmFtZSQ1MyIsIm5hbWUkNTIiLCJuYW1lJDUxIiwibmFtZSQ1MCIsIm5hbWUkNDkiLCJuYW1lJDQ4IiwibmFtZSQ0NyIsIm5hbWUkNDYiLCJuYW1lJDQ1IiwibmFtZSQ0NCIsIm5hbWUkNDMiLCJuYW1lJDQyIiwibmFtZSQ0MSIsIm5hbWUkNDAiLCJuYW1lJDM5IiwibmFtZSQzOCIsIm5hbWUkMzciLCJuYW1lJDM2IiwibmFtZSQzNSIsIm5hbWUkMzQiLCJuYW1lJDMzIiwibmFtZSQzMiIsIm5hbWUkMzEiLCJuYW1lJDMwIiwibmFtZSQyOSIsIm5hbWUkMjgiLCJuYW1lJDI3IiwibmFtZSQyNiIsIm5hbWUkMjUiLCJuYW1lJDI0IiwibmFtZSQyMyIsIm5hbWUkMjIiLCJuYW1lJDIxIiwibmFtZSQyMCIsIm5hbWUkMTkiLCJuYW1lJDE4IiwibmFtZSQxNyIsIm5hbWUkMTYiLCJuYW1lJDE1IiwibmFtZSQxNCIsIm5hbWUkMTMiLCJuYW1lJDEyIiwibmFtZSQxMSIsIm5hbWUkMTAiLCJuYW1lJDkiLCJuYW1lJDgiLCJuYW1lJDciLCJuYW1lJDYiLCJuYW1lJDUiLCJuYW1lJDQiLCJuYW1lJDMiLCJuYW1lJDIiLCJuYW1lJDEiLCJvbklFIiwiY2FuY2VsIiwiY2xpY2siLCJjbG9zZSIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm8iLCJ3aW5kb3ciLCJnZXRFbGVtZW50QnlJZCIsInBub2RlIiwiZ2V0RWxlbWVudEJ5SWRfZXhuIiwiZ2V0RWxlbWVudEJ5SWRfb3B0IiwiZ2V0RWxlbWVudEJ5SWRfY29lcmNlIiwiY3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZG9jIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaWFsb2ciLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwIiwicHJlIiwic2NyaXB0Iiwic2VsZWN0JDAiLCJzdHlsZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRleHRhcmVhIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidGl0bGUiLCJ0ciIsInVsIiwiYXVkaW8iLCJ2aWRlbyIsInVuc2FmZUNvZXJjZUV2ZW50IiwiY29uc3RyIiwiZXYiLCJtb3VzZUV2ZW50Iiwia2V5Ym9hcmRFdmVudCIsIndoZWVsRXZlbnQiLCJtb3VzZVNjcm9sbEV2ZW50IiwicG9wU3RhdGVFdmVudCIsIm1lc3NhZ2VFdmVudCIsImV2ZW50UmVsYXRlZFRhcmdldCIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiQwIiwiZWxlbWVudENsaWVudFBvc2l0aW9uIiwiZ2V0RG9jdW1lbnRTY3JvbGwiLCJidXR0b25QcmVzc2VkIiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoIiwiZHgiLCJkeSIsImFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIiwidHJ5X2NvZGUiLCJ0cnlfa2V5X2NvZGVfbm9ybWFsIiwibWFrZV91bmlkZW50aWZpZWQiLCJvZl9ldmVudCIsInZhbHVlIiwidmFsdWUkMyIsInZhbHVlJDIiLCJ2YWx1ZSQxIiwidmFsdWUkMCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwicmVxIiwiYyIsImNhbGxiYWNrIiwibm93IiwibGFzdCIsImR0IiwiaGFzUHVzaFN0YXRlIiwiaGFzUGxhY2Vob2xkZXIiLCJoYXNSZXF1aXJlZCIsIm92ZXJmbG93X2xpbWl0Iiwic2V0VGltZW91dCIsImxvb3AiLCJyZW1haW4iLCJzdGVwIiwiY2IiLCJjbGVhclRpbWVvdXQiLCJqc19hcnJheV9vZl9jb2xsZWN0aW9uIiwiZm9ybURhdGEiLCJmb3JtRGF0YV9mb3JtIiwiaGF2ZV9jb250ZW50IiwiZ2V0X2VsZW1lbnRfY29udGVudCIsImZpbGUiLCJmb3JtX2VsZW1lbnRzIiwiaSQxIiwidDMxIiwiYXBwZW5kIiwiZm9ybV9jb250ZW50cyIsImZvcm1fZWx0IiwibGlzdCIsImVtcHR5X2Zvcm1fY29udGVudHMiLCJwb3N0X2Zvcm1fY29udGVudHMiLCJjb250ZW50cyIsImdldF9mb3JtX2NvbnRlbnRzIiwicmVhZHlzdGF0ZWNoYW5nZSIsInRpbWVvdXQiLCJjcmVhdGUiLCJpbXBvcnRfc2NyaXB0cyIsInNjcmlwdHMiLCJzZXRfb25tZXNzYWdlIiwianNfaGFuZGxlciIsInBvc3RfbWVzc2FnZSIsIndlYlNvY2tldCIsImlzX3N1cHBvcnRlZCIsImRlZmF1bHRDb250ZXh0QXR0cmlidXRlcyIsIndlYmdsY29udGV4dGxvc3QiLCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiLCJnZXRDb250ZXh0IiwiY3R4IiwiZ2V0Q29udGV4dFdpdGhBdHRyaWJ1dGVzIiwicmVnZXhwIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF93aXRoX2ZsYWciLCJibHVudF9zdHJfYXJyYXlfZ2V0Iiwic3RyaW5nX21hdGNoIiwic2VhcmNoIiwicmVzX3ByZSIsIm1hdGNoZWRfc3RyaW5nIiwiciIsIm1hdGNoZWRfZ3JvdXAiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImxpc3Rfb2ZfanNfYXJyYXkiLCJpZHgkMSIsImFjY3UiLCJpZHgkMCIsImFjY3UkMCIsInNwbGl0IiwiYm91bmRlZF9zcGxpdCIsInF1b3RlIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiaW50ZXJydXB0IiwicGx1c19yZSIsInVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIiwidDE2IiwidXJsZGVjb2RlIiwidXJsZW5jb2RlIiwid2l0aF9wbHVzIiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsIm4iLCJkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyIsImxlbiIsInQzIiwiZGVjb2RlX2FyZ3VtZW50cyIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwYXRoX3N0ciIsInNzbCIsInVybCIsInVybF9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfdXJsIiwiZnJhZyIsImFyZ3MiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJmcmFnJDAiLCJhcmdzJDAiLCJwYXRoJDAiLCJwb3J0JDAiLCJob3N0JDAiLCJmcmFnJDEiLCJhcmdzJDEiLCJwYXRoJDEiLCJkZWZhdWx0X2h0dHBfcG9ydCIsImRlZmF1bHRfaHR0cHNfcG9ydCIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJvYnNlcnZlIiwiYm94IiwiZW50cnlfdHlwZXMiLCJlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0IiwiY2hpbGRfbGlzdCIsImF0dHJpYnV0ZXMiLCJjaGFyYWN0ZXJfZGF0YSIsInN1YnRyZWUiLCJhdHRyaWJ1dGVfb2xkX3ZhbHVlIiwiY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIiwiYXR0cmlidXRlX2ZpbHRlciIsInJlbW92ZSIsImZpbmQiLCJrZXlzIiwicmV2aXZlciIsInVuc2FmZV9pbnB1dCIsIm1sSW50NjRfY29uc3RyIiwib3V0cHV0X3Jldml2ZXIiLCJvdXRwdXQiLCJzdHJpbmdfb2ZfbmFtZSIsIm5hbWVfb2Zfc3RyaW5nIiwicmdiX29mX25hbWUiLCJyZ2IiLCJoc2wiLCJzdHJpbmdfb2ZfdCIsImIkMCIsImckMCIsInIkMCIsImIkMSIsImckMSIsInIkMSIsImIkMiIsImckMiIsInIkMiIsImEkMSIsImgkMCIsImhleF9vZl9yZ2IiLCJibHVlIiwiZ3JlZW4iLCJyZWQiLCJpbl9yYW5nZSIsImpzX3Rfb2ZfanNfc3RyaW5nIiwidDEyIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwiY3JlYXRlQWx0R2x5cGgiLCJjcmVhdGVBbHRHbHlwaERlZiIsImNyZWF0ZUFsdEdseXBoSXRlbSIsImNyZWF0ZUFuaW1hdGUiLCJjcmVhdGVBbmltYXRlQ29sb3IiLCJjcmVhdGVBbmltYXRlTW90aW9uIiwiY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSIsImNyZWF0ZUNpcmNsZSIsImNyZWF0ZUNsaXBQYXRoIiwiY3JlYXRlQ3Vyc29yIiwiY3JlYXRlRGVmcyIsImNyZWF0ZURlc2MiLCJjcmVhdGVFbGxpcHNlIiwiY3JlYXRlRmlsdGVyIiwiY3JlYXRlRm9udCIsImNyZWF0ZUZvbnRGYWNlIiwiY3JlYXRlRm9udEZhY2VGb3JtYXQiLCJjcmVhdGVGb250RmFjZU5hbWUiLCJjcmVhdGVGb250RmFjZVNyYyIsImNyZWF0ZUZvbnRGYWNlVXJpIiwiY3JlYXRlRm9yZWlnbk9iamVjdCIsImNyZWF0ZUciLCJjcmVhdGVHbHlwaCIsImNyZWF0ZUdseXBoUmVmIiwiY3JlYXRlaGtlcm4iLCJjcmVhdGVJbWFnZSIsImNyZWF0ZUxpbmVFbGVtZW50IiwiY3JlYXRlTGluZWFyRWxlbWVudCIsImNyZWF0ZU1hc2siLCJjcmVhdGVNZXRhRGF0YSIsImNyZWF0ZU1pc3NpbmdHbHlwaCIsImNyZWF0ZU1QYXRoIiwiY3JlYXRlUGF0aCIsImNyZWF0ZVBhdHRlcm4iLCJjcmVhdGVQb2x5Z29uIiwiY3JlYXRlUG9seWxpbmUiLCJjcmVhdGVSYWRpYWxncmFkaWVudCIsImNyZWF0ZVJlY3QiLCJjcmVhdGVTZXQiLCJjcmVhdGVTdG9wIiwiY3JlYXRlU3ZnIiwiY3JlYXRlU3dpdGNoIiwiY3JlYXRlU3ltYm9sIiwiY3JlYXRlVGV4dEVsZW1lbnQiLCJjcmVhdGVUZXh0cGF0aCIsImNyZWF0ZVRyZWYiLCJjcmVhdGVUc3BhbiIsImNyZWF0ZVVzZSIsImNyZWF0ZVZpZXciLCJjcmVhdGV2a2VybiIsInN2Z19lbGVtZW50IiwidDgiLCJhbHRHbHlwaCIsImFsdEdseXBoRGVmIiwiYWx0R2x5cGhJdGVtIiwiYW5pbWF0ZSIsImFuaW1hdGVDb2xvciIsImFuaW1hdGVNb3Rpb24iLCJhbmltYXRlVHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcFBhdGgiLCJjdXJzb3IiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJmaWx0ZXIiLCJmb250IiwiZm9udEZhY2UiLCJmb250RmFjZUZvcm1hdCIsImZvbnRGYWNlTmFtZSIsImZvbnRGYWNlU3JjIiwiZm9udEZhY2VVcmkiLCJmb3JlaWduT2JqZWN0IiwiZ2x5cGgiLCJnbHlwaFJlZiIsImhrZXJuIiwiaW1hZ2UiLCJsaW5lRWxlbWVudCIsImxpbmVhckVsZW1lbnQiLCJtZXRhRGF0YSIsIm1pc3NpbmdHbHlwaCIsIm1QYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbGdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJzdmciLCJzd2l0Y2gkMCIsInN5bWJvbCIsInRleHRFbGVtZW50IiwidGV4dHBhdGgiLCJ0cmVmIiwidHNwYW4iLCJ1c2UiLCJ2aWV3Iiwidmtlcm4iLCJ3aXRoQ3JlZGVudGlhbHMiLCJldmVudFNvdXJjZSIsImV2ZW50U291cmNlX29wdGlvbnMiLCJjb25zb2xlIiwiZW1wdHlfcG9zaXRpb25fb3B0aW9ucyIsImdlb2xvY2F0aW9uIiwiZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wIiwiaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlIiwib2JqZWN0X29wdGlvbnMiLCJvcHRpb25zJDAiLCJvcHRpb25zJDEiLCJvcHRpb25zJDIiLCJpbnRsIiwiY29sbGF0b3JfY29uc3RyIiwiZGF0ZVRpbWVGb3JtYXRfY29uc3RyIiwibnVtYmVyRm9ybWF0X2NvbnN0ciIsInBsdXJhbFJ1bGVzX2NvbnN0ciIsInRvX2FycmF5ZiIsImYiLCJhIiwib2ZfYXJyYXlmIiwidG9fbGlzdCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdGYiLCJvZl9saXN0ZiIsIm9wdGRlZiIsIngiLCJ0b19vcHRkZWYiLCJ4JDAiLCJ1bm9wdGRlZl9mIiwiZGVmIiwidW5vcHRkZWYiLCJjb252ZGVmIiwidG9fb3B0Iiwib3B0IiwiY29udm9wdCIsImpzX2xvZyIsImxvZ19zdHIiLCJzIiwibG9nIiwiZm10IiwiZXJyb3Jfb2Zfc3RyaW5nIiwiY2F0Y2hfZXhuIiwiZXhuIiwiZSIsIm51bGwkMSIsInVuZGVmaW5lZCQxIiwiaXNfbm9uZSIsIm1hcCIsIm5vbmUiLCJiaW5kIiwidGVzdCIsIml0ZXIiLCJjYXNlJDAiLCJnIiwiZ2V0Iiwib3B0aW9uIiwidG9fb3B0aW9uIiwiYW9wdCIsInRvX2FvcHQiLCJjaG9vc2VfY2FzZV9vcHQiLCJ0IiwiaCIsImNob29zZV9jYXNlIiwiYXNzaWduIiwiYXNzaWduX2xpc3QiLCJyZW1vdmVfdW5kZWZpbmVkIiwibyIsImsiLCJjcmVhdGUiLCJhZGQiLCJ2IiwiYWRkX2xpc3QiLCJhZGRfbGlzdGYiLCJtYWtlIiwibWFrZWYiLCJyZW1vdmUiLCJmaW5kIiwia2V5cyIsIml0ZW1zIiwiaXRlbXNmIiwibGVuZ3RoIiwibWVyZ2UiLCJwcm9taXNlIiwianRoZW4wIiwiZXJyb3IiLCJleG4kMCIsImVmIiwiZXJyb3IkMCIsImp0aGVuIiwianRoZW4wX29wdCIsInByb20iLCJqdGhlbl9vcHQiLCJydGhlbiIsImxvZzIiLCJsb2czIiwibG9nX3N0cjIiLCJzMSIsInMyIiwibG9nX3N0cjMiLCJzMyIsImRlYnVnIiwiZGVidWcyIiwiZGVidWczIiwiZGVidWdfc3RyIiwiZGVidWdfc3RyMiIsImRlYnVnX3N0cjMiLCJ3YXJuIiwid2FybjIiLCJ3YXJuMyIsIndhcm5fc3RyIiwid2Fybl9zdHIyIiwid2Fybl9zdHIzIiwiZXJyb3IyIiwiZXJyb3IzIiwiZXJyb3Jfc3RyIiwiZXJyb3Jfc3RyMiIsImVycm9yX3N0cjMiLCJiaWdJbnQiLCJvZl9zdHJpbmciLCJvZl9pbnQiLCJpIiwib2ZfaW50NjQiLCJvZl9uYXRpdmUiLCJvZl9mbG9hdCIsInRvX2xvY2FsZV9zdHJpbmciLCJvcHRpb25zIiwidG9fc3RyaW5nIiwic2V0SW5uZXJIdG1sIiwic2V0VGV4dCIsImFkZENsYXNzIiwiYWRkQ2xhc3NlcyIsImVsdCIsInJlbW92ZUNsYXNzIiwiY29udGFpbnNDbGFzcyIsInNldEF0dHJpYnV0ZSIsImtleSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlIiwic2V0Q1NTIiwic3R5bGVzIiwic3R5bGVzJDAiLCJhZGRDU1MiLCJvbGRfc3R5bGVzIiwic3R5bGVzJDEiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGRyZW4iLCJwYXJlbnQiLCJjaGlsZHJlbiIsInJlbW92ZUNoaWxkaSIsImNoaWxkIiwicmVtb3ZlQ2hpbGRyZW4iLCJyZXBsYWNlQ2hpbGRyZW4iLCJieV9pZCIsImFkZExpc3RlbmVyIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwiZXYiLCJjYXB0dXJlJDAiLCJvbmNlJDAiLCJwYXNzaXZlJDAiLCJ0ZXh0IiwiY2xhc3NlcyIsImxpc3RlbiIsImF0dHIiLCJidXR0b24iLCJkaXYiLCJzcGFuIiwiZm9ybSIsInNlbGVjdCIsImlucHV0IiwiaWZyYW1lIiwibGFiZWwiLCJ1bCIsImxpIiwiaW1nIiwic2NyaXB0IiwidGFibGUiLCJ0ciIsInRoIiwidGQiLCJlbmNhcHNlIiwic3RyaW5nc190b19hcnJheSIsInN0cmluZ3NfdG9fb2JqZWN0Iiwic3RyX29mX21vZGUiLCJzdHJfb2ZfZGlyZWN0aW9uIiwiaURCS2V5UmFuZ2UiLCJpbmRleGVkREIiLCJyZXN1bHQiLCJ3cmFwIiwiZXJyb3IiLCJjYWxsYmFjayIsInIiLCJmIiwiZSIsImV4biQwIiwiZXhuIiwid3JhcGYiLCJnIiwiZGJfdXBncmFkZV9ldmVudCIsIm9wZW5EQiIsInVwZ3JhZGUiLCJ2ZXJzaW9uIiwibmFtZSIsInUiLCJ2IiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNyZWF0ZV9kYl9vcHRpb25zIiwiYXV0b19pbmNyZW1lbnQiLCJrZXlfcGF0aCIsImNyZWF0ZV9zdG9yZSIsIm9wdGlvbnMiLCJnZXRfc3RvcmUiLCJtb2RlIiwiY3JlYXRlIiwic3RvcmUiLCJhZGQiLCJrZXkiLCJ4IiwicHV0IiwicmFuZ2UiLCJvbG93ZXIiLCJvdXBwZXIiLCJsb3dlciIsInVwcGVyIiwidXBwZXIkMSIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY291bnQiLCJrIiwiZ2V0Iiwib2ZfanMiLCJqcyIsImpzJDAiLCJnZXRfYWxsIiwiZ2V0X2tleSIsImdldF9hbGxfa2V5cyIsImRlbGV0ZSQwIiwiaXRlciIsImRpcmVjdGlvbiIsImMiLCJmb2xkIiwic3RhcnQiLCJhY2MiLCJjYWxsYmFjayQwIiwiaXRlcl9rZXlzIiwiZm9sZF9rZXlzIiwiY2xlYXIiLCJjcmVhdGVfaW5kZXhfb3B0aW9ucyIsImxvY2FsZSIsIm11bHRpX2VudHJ5IiwidW5pcXVlIiwiY3JlYXRlX2luZGV4IiwiZGVsZXRlX2luZGV4IiwiZ2V0X2luZGV4IiwidG9fanMiLCJ0b19qcyQwIiwib2ZfanMkMCIsInRvX2pzJDEiLCJvZl9qcyQxIiwiZmxhZ3MiLCJlcXVhbCIsInQxIiwidDIiLCJzZWVrIiwicG9zIiwibGVuZ3RoIiwic3RkaW4iLCJjcmVhdGUiLCJmaWxlIiwiYmluYXJ5IiwiZmxhZ3MkMCIsImNsb3NlIiwid2l0aF9maWxlIiwiZiIsIm1heV9lb2YiLCJpbnB1dCIsInQiLCJidWYiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfZXhuIiwiaW5wdXRfYnl0ZSIsImlucHV0X2NoYXIiLCJpbnB1dF9iaW5hcnlfaW50IiwidW5zYWZlX2lucHV0X3ZhbHVlIiwiaW5wdXRfYnVmZmVyIiwic2V0X2JpbmFyeV9tb2RlIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImJ1ZmZlciIsInRyaW0iLCJmaXhfd2luX2VvbCIsImxpbmUiLCJpbnB1dF9saW5lIiwiaW5wdXRfbGluZV9leG4iLCJmb2xkX2xpbmVzIiwiaW5pdCIsImFjIiwiYWMkMCIsImlucHV0X2xpbmVzIiwibGluZXMiLCJpdGVyX2xpbmVzIiwicmVhZF9saW5lcyIsImZuYW1lIiwicmVhZF9hbGwiLCJzdGRvdXQiLCJzdGRlcnIiLCJzZXhwX29mX3QiLCJhcHBlbmQiLCJmYWlsX2lmX2V4aXN0cyIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsImZsdXNoIiwiY2xvc2Vfbm9fZXJyIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfYnVmZmVyIiwib3V0cHV0X3ZhbHVlIiwibmV3bGluZSIsIm91dHB1dF9saW5lcyIsInByaW50ZiIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludF9zdHJpbmciLCJwcmludF9lbmRsaW5lIiwicHJlcnJfZW5kbGluZSIsInByaW50X3MiLCJtYWNoIiwic2V4cCIsImVwcmludF9zIiwid3JpdGVfbGluZXMiLCJ3cml0ZV9hbGwiLCJkYXRhIiwidF9zZXhwX2dyYW1tYXIiLCJleG5fc2V4cF9zdHlsZSIsIm1lc3NhZ2UiLCJwb3MiLCJ4XzAwNSIsInRhZyIsImJvZHkiLCJzIiwibWVzc2FnZSQwIiwic2V4cCIsInRlc3RfcHJlZCIsInNleHBpZmllciIsImhlcmUiLCJwcmVkaWNhdGUiLCJ0Iiwicl9kaWZmIiwic2V0X2RpZmZfZnVuY3Rpb24iLCJmIiwidGVzdF9yZXN1bHRfb3JfZXEiLCJjb21wYXJhdG9yIiwiZXF1YWwiLCJleHBlY3QkMCIsImdvdCQwIiwicGFzcyIsImdvdCIsImV4cGVjdCIsImRpZmYiLCJmcm9tIiwidG8iLCJ0ZXN0X2VxIiwidDEiLCJ0MiIsInQyJDAiLCJ0MSQwIiwidGVzdF9yZXN1bHQiLCJudWxsJDAiLCJyIiwibGlibmFtZV9yZWYiLCJzZXQiLCJzdHIiLCJ1bnNldCIsInQiLCJwb3BfZXhuIiwiY29tcGFyZSIsInQxIiwidDIiLCJnZXRfbW9kdWxlX25hbWVfb3B0IiwibGVuIiwiaSIsImkkMCIsIndpdGhfdGVzdF9zcGVjIiwidGVzdF9zcGVjIiwidiIsImFkZF9lbnZpcm9ubWVudF92YXIiLCJsaWJzX3RvX2VudHJpZXMiLCJsb29rdXBfcmV2X2xpYiIsImxpYm5hbWUiLCJsb29rdXBfbGliIiwiZm9yY2VfZHJvcCIsImdldF9tb2RlIiwiYWRkX2JlbmNoIiwibmFtZSIsImNvZGUiLCJmaWxlbmFtZSIsInR5cGVfY29udl9wYXRoIiwibGluZSIsInN0YXJ0cG9zIiwiZW5kcG9zIiwibXMiLCJlbnRyeSIsImFkZF9iZW5jaF9tb2R1bGUiLCJmIiwiZXgkMCIsImV4IiwiZW1wdHkiLCJtYWtlIiwicyIsImNvbXBhcmUiLCJ0b19iaW5hcnkiLCJvZl9iaW5hcnlfZXhuIiwidG9faGV4Iiwib2ZfaGV4X2V4biIsInN0cmluZyIsImJ5dGVzIiwic3ViYnl0ZXMiLCJwb3MiLCJsZW4iLCJlcnJvcl9zb3VyY2VfMTk0IiwiZXJyb3Jfc291cmNlXzI2MyIsImVycm9yX3NvdXJjZV8yNzUiLCJlcnJvcl9zb3VyY2VfMzE3IiwiZXJyb3Jfc291cmNlXzQxNCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsImVxdWFsIiwidF9vZl9zZXhwJDAiLCJzZXhwX29mX3QkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJjb21wYXJlIiwiZXF1YWwkMCIsImV2YWxfZmFpbCIsImxvYyIsImZtdCIsInMiLCJjdXN0b21fcHJpbnRmXzAwMSIsImVxdWFsX29wdGlvbiIsImEiLCJiIiwieSIsIngiLCJjb21wYXJlJDAiLCJjbXBfYSIsImFfMDAyIiwiYl8wMDMiLCJhXzAwNCIsImJfMDA1IiwidF8wMDciLCJ0XzAwNiIsInRfMDA5IiwidF8wMDgiLCJuIiwic2V4cF9vZl90JDEiLCJvZl9hXzAxOSIsInNvcnRlZF8wMjEiLCJhcmdfMDIyIiwiYXJnMV8wMjQiLCJhcmcwXzAyMyIsInJlczBfMDI1IiwicmVzMV8wMjYiLCJibmRzXzAyMCIsImNyZWF0ZSIsImVxIiwieHMkMSIsInNvcnRlZCIsInMyIiwiczEiLCJ4cyQwIiwibGFzdF92YWx1ZSQxIiwibGFzdF9rZXkkMSIsImFjYyIsImxhc3Rfa2V5IiwibGFzdF92YWx1ZSIsInhzIiwibGFzdF92YWx1ZSQwIiwibGFzdF9rZXkkMCIsInNvcnRlZCQwIiwiZXhwb3NlIiwidCIsIm1hcCIsImYiLCJ2IiwiayIsInRvX21kNSIsIm9mX21kNSIsInNleHBfb2ZfdCQyIiwidF9vZl9zZXhwJDEiLCJ1dWlkIiwidSIsImludCQwIiwicGFpciIsImxpc3QiLCJsIiwiY29uc3RydWN0b3IiLCJzZXhwX29mX3QkMyIsIm9mX2FfMDk2IiwiYXJnMV8wOTgiLCJhcmcwXzA5NyIsInJlczBfMDk5IiwicmVzMV8xMDAiLCJhcmcxXzEwMiIsImFyZzBfMTAxIiwicmVzMF8xMDMiLCJyZXMxXzEwNCIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJhcmcwXzExMSIsInJlczBfMTEyIiwiYXJnMV8xMDgiLCJhcmcwXzEwNyIsInJlczBfMTA5IiwicmVzMV8xMTAiLCJhcmcwXzExNyIsInJlczBfMTE4IiwiYXJnMV8xMTQiLCJhcmcwXzExMyIsInJlczBfMTE1IiwicmVzMV8xMTYiLCJhcmcwXzExOSIsInJlczBfMTIwIiwiYXJnMV8xMjIiLCJhcmcwXzEyMSIsInJlczBfMTIzIiwicmVzMV8xMjQiLCJhcmcxXzEyNiIsImFyZzBfMTI1IiwicmVzMF8xMjciLCJyZXMxXzEyOCIsImFyZzBfMTI5IiwicmVzMF8xMzAiLCJjb21wYXJlJDIiLCJhXzEzMiIsImJfMTMzIiwiYV8xMzQiLCJiXzEzNyIsImJfMTM1IiwiYV8xMzYiLCJhXzE0MCIsImFfMTM4IiwiYl8xNDEiLCJiXzEzOSIsIm4kMCIsImFfMTQyIiwiYl8xNDMiLCJhXzE0NCIsImJfMTQ1IiwiYV8xNDYiLCJiXzE0NyIsImFfMTQ4IiwiYl8xNDkiLCJhXzE1MCIsImJfMTUxIiwidF8xNTMiLCJ0XzE1MiIsInRfMTU1IiwidF8xNTQiLCJhXzE1NiIsImJfMTU3IiwiYV8xNTgiLCJiXzE1OSIsInRfMTYxIiwidF8xNjAiLCJ0XzE2MyIsInRfMTYyIiwiYV8xNjQiLCJiXzE2NSIsImFfMTY2IiwiYl8xNjciLCJhXzE2OCIsImJfMTY5IiwiYV8xNzAiLCJiXzE3MSIsImFfMTc0IiwiYV8xNzIiLCJiXzE3NSIsImJfMTczIiwibiQxIiwiYV8xNzYiLCJiXzE3NyIsImFfMTgwIiwiYV8xNzgiLCJiXzE4MSIsImJfMTc5IiwibiQyIiwiYV8xODIiLCJiXzE4MyIsImFfMTg0IiwiYl8xODUiLCJtYXAkMCIsIngkMCIsImwkMCIsImwkMSIsIngkMSIsImwkMiIsInQkMCIsInRvX3N0cmluZyQxIiwiZGlnZXN0X2xheWVyIiwidSQwIiwidGFibGUiLCJsJDMiLCJsJDQiLCJ0b19kaWdlc3QiLCJ0b19kaWdlc3QkMCIsIngkMiIsImVxdWFsJDEiLCJvcGFxdWUiLCJjcmVhdGUkMCIsImRlc2MiLCJ2YXIkMCIsImFwcGx5IiwiZGVmIiwicmVjdXJzZSIsInRpZCIsImdldF9wb2x5X3ZhcmlhbnQiLCJhbm5vdGF0ZSIsImJhc2V0eXBlIiwidHVwbGUiLCJwb2x5X3ZhcmlhbnQiLCJ2YXIkMSIsImFwcGx5JDAiLCJyZWN1cnNlJDAiLCJkZWZpbmUiLCJyZWNvcmQiLCJ2YXJpYW50IiwiY3JlYXRlJDEiLCJlIiwiY29tcGFyZV90MCIsImFfMTg2IiwiYl8xODciLCJiXzE4OSIsImFfMTg4IiwiYV8xOTAiLCJiXzE5MSIsInNleHBfb2ZfdDAiLCJhcmcwXzIwMSIsInJlczBfMjAyIiwiZXF1YWxfdDAiLCJ2YXIkMiIsImFwcGx5JDEiLCJkIiwicmVjdXJzZSQxIiwiciIsImdldF9wb2x5X3ZhcmlhbnQkMCIsImNjIiwidGFiIiwib3BhcXVlJDAiLCJ0b19kaWdlc3QkMSIsInRvX2RpZ2VzdCQyIiwiYW5ub3RhdGUkMCIsImJhc2V0eXBlJDAiLCJ0dXBsZSQwIiwicG9seV92YXJpYW50JDAiLCJ2YXIkMyIsInJlY3Vyc2UkMiIsImFwcGx5JDIiLCJkZWZpbmUkMCIsInJlY29yZCQwIiwidmFyaWFudCQwIiwiY3JlYXRlJDIiLCJleHAiLCJ0b19zdHJpbmdfaHVtIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkNCIsIm9mX3N0cmluZyQxIiwidG9fc3RyaW5nJDIiLCJzeW1ib2wiLCJjb21wYXJlJDMiLCJlcXVhbCQyIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkNSIsIm9mX3N0cmluZyQyIiwidG9fc3RyaW5nJDMiLCJjb21wYXJhdG9yIiwiZXF1YWwkMyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ2IiwiY3JlYXRlJDMiLCJ0cmlwcyIsImdpZCIsIm1lbWJlcnMiLCJ2cyIsImxvb2t1cCIsImciLCJjdXN0b21fcHJpbnRmXzM0NSIsInNjaGVtZSIsImVxdWFsJDUiLCJhXzM0NiIsImJfMzQ3IiwiYV8zNDYkMCIsImJfMzQ3JDAiLCJhXzM0OCIsImJfMzUxIiwiYl8zNDkiLCJhXzM1MCIsImFfMzU0IiwiYV8zNTIiLCJiXzM1NSIsImJfMzUzIiwiYV8zNTYiLCJiXzM1NyIsImFfMzU4IiwiYl8zNTkiLCJhXzM2MCIsImJfMzYxIiwidF8zNjMiLCJ0XzM2MiIsInRfMzY1IiwidF8zNjQiLCJhXzM2NiIsImJfMzY3IiwiYV8zNjgiLCJiXzM2OSIsInRfMzcxIiwidF8zNzAiLCJ0XzM3MyIsInRfMzcyIiwiYV8zNzQiLCJiXzM3NSIsImFfMzc2IiwiYl8zNzciLCJhXzM3OCIsImJfMzc5IiwiYV8zODAiLCJiXzM4MSIsInRfMzgzIiwidF8zODIiLCJ0XzM4NSIsInRfMzg0IiwiYV8zODYiLCJiXzM4NyIsInJpZ2h0XzIzOCIsImxlZnRfMjM3IiwidF8yNDAiLCJ0XzIzOSIsInRfMjQyIiwidF8yNDEiLCJhXzI0MyIsImJfMjQ0IiwicmlnaHRfMjQ2IiwibGVmdF8yNDUiLCJ0XzI0OCIsInRfMjQ3IiwidF8yNTAiLCJ0XzI0OSIsImFfMzkwIiwiYl8zOTEiLCJ0XzM5MyIsInRfMzkyIiwidF8zOTUiLCJ0XzM5NCIsImFfMzk4IiwiYV8zOTYiLCJiXzM5OSIsImJfMzk3IiwiYV80MDAiLCJiXzQwMSIsImFfNDA2IiwiYV80MDQiLCJhXzMwMSIsImJfNDA3IiwiYl80MDUiLCJiXzQwMyIsImFfMzAzIiwiYl8zMDQiLCJ0XzMwNiIsInRfMzA1IiwidF8zMDgiLCJ0XzMwNyIsInRfMzEwIiwidF8zMDkiLCJ0XzMxMiIsInRfMzExIiwiYV8zMTMiLCJiXzMxNCIsImFfNDEwIiwiYl80MTEiLCJ0X29mX3NleHAkNSIsInNleHBfNDE2IiwidGFnXzQxNyIsInNleHBfYXJnc180MTgiLCJhcmcxXzQyMCIsImFyZzBfNDE5IiwicmVzMF80MjEiLCJyZXMxXzQyMiIsInNleHBfYXJnc180MjUiLCJhcmcxXzQyNyIsImFyZzBfNDI2IiwicmVzMF80MjgiLCJyZXMxXzQyOSIsInNleHBfYXJnc180NTciLCJhcmcwXzQ2MyIsImFyZzFfNDU5IiwiYXJnMF80NTgiLCJyZXMwXzQ2MCIsInJlczFfNDYxIiwic2V4cF8yNTUiLCJhdG9tXzI1MyIsInNleHBfYXJnc18yNTYiLCJhdG9tXzI1MyQwIiwiYXJnMF8yNjQiLCJhcmcxXzI1OSIsImFyZzBfMjU4IiwicmVzMF8yNjAiLCJyZXMxXzI2MSIsInJlczBfMjY1IiwiYXJnMF8yNzIiLCJhcmcxXzI2OCIsImFyZzBfMjY3IiwicmVzMF8yNjkiLCJyZXMxXzI3MCIsInJlczBfMjczIiwicmVzMF80NjQiLCJzZXhwX2FyZ3NfNDc3IiwiYXJnMV80NzkiLCJhcmcwXzQ3OCIsInJlczBfNDgwIiwicmVzMV80ODEiLCJzZXhwX2FyZ3NfNDMyIiwiYXJnMF80MzgiLCJyZXMwXzQzOSIsInNleHBfNDM3IiwiYXJnMV80MzQiLCJhcmcwXzQzMyIsInJlczBfNDM1IiwicmVzMV80MzYiLCJzZXhwX2FyZ3NfNDg0IiwiYXJnMl80ODciLCJhcmcxXzQ4NiIsImFyZzBfNDg1Iiwic2V4cF8zMjciLCJhcmcxXzMyNCIsImFyZzBfMzIzIiwicmVzMF8zMjUiLCJhcmcxXzMxOSIsImFyZzBfMzE4IiwicmVzMF8zMjAiLCJyZXMxXzMyMSIsInJlczFfMzI2IiwicmVzMF80ODgiLCJyZXMxXzQ4OSIsInJlczJfNDkwIiwic2V4cF9hcmdzXzQ1MiIsImFyZzBfNDUzIiwicmVzMF80NTQiLCJzZXhwX2FyZ3NfNDY3IiwiYXJnMF80NzMiLCJhcmcxXzQ2OSIsImFyZzBfNDY4IiwicmVzMF80NzAiLCJyZXMxXzQ3MSIsInJlczBfNDc0Iiwic2V4cF9hcmdzXzQ0MiIsImFyZzBfNDQ4IiwicmVzMF80NDkiLCJzZXhwXzQ0NyIsImFyZzFfNDQ0IiwiYXJnMF80NDMiLCJyZXMwXzQ0NSIsInJlczFfNDQ2Iiwic2V4cF9vZl90JDciLCJhcmcxXzQ5MiIsImFyZzBfNDkxIiwicmVzMF80OTMiLCJyZXMxXzQ5NCIsImFyZzFfNDk2IiwiYXJnMF80OTUiLCJyZXMwXzQ5NyIsInJlczFfNDk4IiwiYXJnMF81MDMiLCJyZXMwXzUwNCIsImFyZzFfNTAwIiwiYXJnMF80OTkiLCJyZXMwXzUwMSIsInJlczFfNTAyIiwiYXJnMF81MDkiLCJyZXMwXzUxMCIsImFyZzFfNTA2IiwiYXJnMF81MDUiLCJyZXMwXzUwNyIsInJlczFfNTA4IiwiYXJnMF81MTEiLCJyZXMwXzUxMiIsImFyZzBfNTE3IiwiYXJnMV81MTQiLCJhcmcwXzUxMyIsInJlczBfNTE1IiwicmVzMV81MTYiLCJ2XzI3NyIsImFyZzFfMjc5IiwiYXJnMF8yNzgiLCJyZXMwXzI4MCIsInJlczFfMjgxIiwidl8yODIiLCJhcmcxXzI4NCIsImFyZzBfMjgzIiwicmVzMF8yODUiLCJyZXMxXzI4NiIsInJlczBfNTE4IiwiYXJnMF81MjMiLCJhcmcxXzUyMCIsImFyZzBfNTE5IiwicmVzMF81MjEiLCJyZXMxXzUyMiIsInJlczBfNTI0IiwiYXJnMV81MjYiLCJhcmcwXzUyNSIsInJlczBfNTI3IiwicmVzMV81MjgiLCJhcmcyXzUzMSIsImFyZzFfNTMwIiwiYXJnMF81MjkiLCJtZW1iZXJzXzMzNSIsImxvY18zMzMiLCJnaWRfMzMxIiwiYXJnXzMzNiIsImFyZzFfMzQyIiwiYXJnMF8zNDEiLCJyZXMwXzM0MyIsImFyZzFfMzM4IiwiYXJnMF8zMzciLCJyZXMwXzMzOSIsInJlczFfMzQwIiwicmVzMV8zNDQiLCJibmRzXzMzMCIsImFyZ18zMzQiLCJibmRzXzMzMCQwIiwiYXJnXzMzMiIsImJuZHNfMzMwJDEiLCJyZXMwXzUzMiIsInJlczFfNTMzIiwicmVzMl81MzQiLCJhbm5vdGF0ZSQxIiwidjAiLCJ2MSIsImJhc2V0eXBlJDEiLCJyZWNvcmQkMSIsInZhcmlhbnQkMSIsInR1cGxlJDEiLCJyZWNfYXBwIiwidG9wX2FwcCIsInYyIiwiY29uc3RyIiwiaW5oZXJpdCIsInZhciQ0IiwicG9seV92YXJpYW50JDEiLCJpc19jeWNsaWNfMCIsInZpYV9WUiIsImdyb3VwIiwic2V0IiwidmlzaXRlZCIsInRyYXYiLCJ0cyIsImNzIiwidHMkMCIsInRyYXZfdGlkIiwiYm9keSIsInJlcyIsImlzX2N5Y2xpYyIsImlzX2N5Y2xpY193aXRoX25vX2ludGVydmVuaW5nXyIsImxvb2t1cCQwIiwiYV81MzUiLCJiXzUzNiIsInRfNTM4IiwidF81MzciLCJ0XzU0MCIsInRfNTM5IiwiYXJnMV81NDIiLCJhcmcwXzU0MSIsInJlczBfNTQzIiwicmVzMV81NDQiLCJmaW5kIiwiZW1wdHkiLCJleHRlbmQiLCJyZXR1cm4kMCIsInRlbnYiLCJiaW5kIiwiZGVwdGgiLCJsb29rX2VudiIsImtleSIsInJlc3VsdCIsImV4dGVuZF9uZXdfdGlkIiwiZGVmX3QiLCJ2YWx1ZSIsInRlbnYkMCIsImV4ZWMiLCJzeW1ib2xfYmluZCIsInJldHVybiQxIiwic2VxdWVuY2VfZGVmaW5pbmciLCJsb29wIiwiYWNjX3lzIiwidmVudiIsInMkMCIsImV2YWxfbGlzdCIsImJpbmRzIiwiYWx0cyIsInlzIiwieHNzIiwiZXZhbF9wb2x5X2NvbnN0ciIsInZpZCIsImxvYyQwIiwiY3VzdG9tX3ByaW50Zl81NDUiLCJhcmdzIiwiZXZhbF9hcHAiLCJhcmdzJDAiLCJ0aWQkMCIsImluX2dyb3VwIiwiYyIsImV2YWxfZGVmaW5pdGlvbiIsImZvcm1hbHMiLCJpIiwicmVjb3JkX29yX25vcm1hbF92YXJpYW50IiwiY3ljbGljIiwiY3ljbGljX25vX1ZSIiwiZXZhbCQwIiwiZXZhbF90b19kaWdlc3QiLCJldmFsX3RvX2RpZ2VzdF9zdHJpbmciLCJkZWNvbnN0cnVjdF90dXBsZV9leG4iLCJzdGFibGVfd2l0bmVzc19hcnJheSIsInN0YWJsZV93aXRuZXNzX2xhenlfdCIsInN0YWJsZV93aXRuZXNzX2xpc3QiLCJzdGFibGVfd2l0bmVzc19vcHRpb24iLCJzdGFibGVfd2l0bmVzc19yZWYiLCJvZl9zZXJpYWxpemFibGUiLCJsb2MkMiIsImxvYyQxIiwibG9jJDAiLCJsb2MiLCJzZXhwX29mX3BvcyIsInRvX3N0cmluZyIsIm1heF9sZW4iLCJsZW4iLCJsb2MkMyIsImxvYyQ0IiwiYXJnMF8wMDEiLCJyYWlzZV9yZWFkX2Vycm9yIiwiZXJyIiwicG9zIiwicmFpc2VfdmFyaWFudF93cm9uZ190eXBlIiwibmFtZSIsInJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIiwiYXJyYXlfYm91bmRfZXJyb3IiLCJjcmVhdGVfYnVmIiwibiIsImJ1Zl9sZW4iLCJhc3NlcnRfcG9zIiwiY2hlY2tfcG9zIiwiYnVmIiwic2FmZV9nZXRfcG9zIiwicG9zX3JlZiIsImNoZWNrX25leHQiLCJuZXh0IiwiZ2V0X29wdF9wb3MiLCJ2YXIkMCIsImJsaXRfYnVmIiwic3JjX3BvcyIsInNyYyIsImRzdF9wb3MiLCJkc3QiLCJzcmNfcG9zJDAiLCJkc3RfcG9zJDAiLCJibGl0X3N0cmluZ19idWYiLCJzdHIiLCJibGl0X2J5dGVzX2J1ZiIsImJsaXRfYnVmX2J5dGVzIiwiY29weV9odGJsX2xpc3QiLCJodGJsIiwicmVzdCIsInYiLCJrIiwic3ltYm9sIiwib2ZfaW50IiwiYXJjaF9zaXh0eWZvdXIiLCJhcmNoX2JpZ19lbmRpYW4iLCJ1bnNhZmVfc2V0MTZiZSIsIngiLCJ1bnNhZmVfc2V0MzJiZSIsInVuc2FmZV9zZXQ2NGJlIiwidW5zYWZlX3NldDE2bGUiLCJ1bnNhZmVfc2V0MzJsZSIsInVuc2FmZV9zZXQ2NGxlIiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVfYm9vbCIsImIiLCJhbGxfYmluX3dyaXRlX3NtYWxsX2ludCIsImFsbF9iaW5fd3JpdGVfaW50MTYiLCJhbGxfYmluX3dyaXRlX2ludDMyIiwiYWxsX2Jpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9jaGFyIiwiYyIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVfbmF0MCIsIm5hdDAiLCJiaW5fd3JpdGVfc3RyaW5nIiwibmV3X3BvcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlX2VsIiwiciIsImJpbl93cml0ZV9sYXp5IiwibHYiLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlX3BhaXIiLCJiaW5fd3JpdGVfYSIsImJpbl93cml0ZV9iIiwiYSIsImJpbl93cml0ZV90cmlwbGUiLCJiaW5fd3JpdGVfYyIsIm5leHQxIiwibmV4dDIiLCJiaW5fd3JpdGVfbGlzdCIsImxzdCQxIiwiZWxzX3BvcyQwIiwiZWxzX3BvcyIsImxzdCIsImxzdCQwIiwiaGQiLCJuZXdfZWxzX3BvcyIsImJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW4iLCJsZW5ndGgiLCJibGl0IiwicG9zJDAiLCJzaXplIiwiYmluX3dyaXRlX2Zsb2F0YXJyYXkiLCJiaW5fd3JpdGVfYXJyYXkiLCJhciIsImVsc19wb3NfcmVmIiwiaSIsImJpbl93cml0ZV9oYXNodGJsIiwiYmluX3dyaXRlX2tleSIsImJpbl93cml0ZV92YWwiLCJwbGVuIiwiY250X3JlZiIsImNvbGxfaHRibCIsInJlc19wb3MiLCJiaW5fd3JpdGVfZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVfZmxvYXQ2NF92ZWMiLCJiaW5fd3JpdGVfZmxvYXQzMl9tYXQiLCJtIiwibGVuMSIsImxlbjIiLCJwb3MkMSIsImJpbl93cml0ZV9mbG9hdDY0X21hdCIsImJpbl93cml0ZV9iaWdzdHJpbmciLCJzIiwiYmluX3dyaXRlX3ZhcmlhbnRfaW50IiwiYmluX3dyaXRlX2ludF84Yml0IiwiYmluX3dyaXRlX2ludF8xNmJpdCIsImJpbl93cml0ZV9pbnRfMzJiaXQiLCJiaW5fd3JpdGVfaW50XzY0Yml0IiwiYmluX3dyaXRlX2ludDY0X2JpdHMiLCJiaW5fd3JpdGVfbmV0d29yazE2X2ludCIsImJpbl93cml0ZV9uZXR3b3JrMzJfaW50IiwiYmluX3dyaXRlX25ldHdvcmszMl9pbnQzMiIsImJpbl93cml0ZV9uZXR3b3JrNjRfaW50IiwiYmluX3dyaXRlX25ldHdvcms2NF9pbnQ2NCIsImJpbl93cml0ZV9tZDUiLCJ4JDAiLCJhJDAiLCJiJDAiLCJkIiwibWF4X2ludF9pbnQzMiIsIm1pbl9pbnRfaW50MzIiLCJtYXhfaW50X2ludDY0IiwibWluX2ludF9pbnQ2NCIsInNhZmVfaW50X29mX2ludDMyIiwic2FmZV9pbnRfb2ZfaW50NjQiLCJzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCIsInVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMyYmUiLCJ1bnNhZmVfZ2V0NjRiZSIsInVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMybGUiLCJ1bnNhZmVfZ2V0NjRsZSIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF9ib29sIiwic2FmZV9iaW5fcmVhZF9uZWdfaW50OCIsInNhZmVfYmluX3JlYWRfaW50MTYiLCJtYXNrXzMyYml0Iiwic2FmZV9iaW5fcmVhZF9uYXQwXzMyIiwiYmluX3JlYWRfbmF0MCIsImNoIiwibmV4dCQwIiwibiQwIiwiYmluX3JlYWRfYnl0ZXMiLCJzdGFydF9wb3MiLCJiaW5fcmVhZF9zdHJpbmciLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfaW50IiwibiQxIiwibiQyIiwiYmluX3JlYWRfZmxvYXQiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfbmF0aXZlaW50IiwiYmluX3JlYWRfcmVmIiwiYmluX3JlYWRfZWwiLCJlbCIsImJpbl9yZWFkX2xhenkiLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9wYWlyIiwiYmluX3JlYWRfYSIsImJpbl9yZWFkX2IiLCJiaW5fcmVhZF90cmlwbGUiLCJiaW5fcmVhZF9jIiwiYmluX3JlYWRfbl9yZXZfbGlzdCIsImFjYyIsImFjYyQwIiwiYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4iLCJyZXZfbHN0IiwiYmluX3JlYWRfbGlzdCIsImR1bW15X2Zsb2F0X2J1ZiIsIm1heF9mbG9hdF9hcnJheV9sZW5ndGgiLCJiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4iLCJjcmVhdGUiLCJhcnIiLCJiaW5fcmVhZF9mbG9hdGFycmF5IiwiYmluX3JlYWRfYXJyYXkiLCJlbCQxIiwibWF5YmVfZmxvYXQiLCJlbCQwIiwiZmlyc3QiLCJyZXMiLCJiaW5fcmVhZF9oYXNodGJsIiwiYmluX3JlYWRfa2V5IiwiYmluX3JlYWRfdmFsIiwicmVhZF9rdl9wYWlyIiwiZWxzIiwiYmluX3JlYWRfZmxvYXQzMl92ZWMiLCJ2ZWMiLCJiaW5fcmVhZF9mbG9hdDY0X3ZlYyIsImJpbl9yZWFkX2Zsb2F0MzJfbWF0IiwibWF0IiwiYmluX3JlYWRfZmxvYXQ2NF9tYXQiLCJiaW5fcmVhZF9iaWdzdHJpbmciLCJiaW5fcmVhZF92YXJpYW50X2ludCIsImJpbl9yZWFkX2ludF84Yml0IiwiYmluX3JlYWRfaW50XzE2Yml0IiwiYmluX3JlYWRfaW50XzMyYml0IiwiYmluX3JlYWRfaW50XzY0Yml0IiwiYmluX3JlYWRfaW50NjRfYml0cyIsImJpbl9yZWFkX25ldHdvcmsxNl9pbnQiLCJiaW5fcmVhZF9uZXR3b3JrMzJfaW50IiwiYmluX3JlYWRfbmV0d29yazMyX2ludDMyIiwiYmluX3JlYWRfbmV0d29yazY0X2ludCIsImJpbl9yZWFkX25ldHdvcms2NF9pbnQ2NCIsImJpbl9yZWFkX21kNSIsImJpbl9zaGFwZV91bml0IiwiYmluX3NoYXBlX2Jvb2wiLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NoYXBlX2J5dGVzIiwiYmluX3NoYXBlX2NoYXIiLCJiaW5fc2hhcGVfZmxvYXQiLCJiaW5fc2hhcGVfaW50IiwiYmluX3NoYXBlX2ludDMyIiwiYmluX3NoYXBlX2ludDYzIiwiYmluX3NoYXBlX2ludDY0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaGFwZV9uYXQwIiwiYmluX3NoYXBlX2RpZ2VzdCIsImJpbl9zaGFwZV9mbG9hdDMyX3ZlYyIsImJpbl9zaGFwZV9mbG9hdDY0X3ZlYyIsImJpbl9zaGFwZV92ZWMiLCJiaW5fc2hhcGVfZmxvYXQzMl9tYXQiLCJiaW5fc2hhcGVfZmxvYXQ2NF9tYXQiLCJiaW5fc2hhcGVfbWF0IiwiYmluX3NoYXBlX2JpZ3N0cmluZyIsImJpbl9zaGFwZV9mbG9hdGFycmF5IiwiYmluX3NoYXBlX3ZhcmlhbnRfaW50IiwiYmluX3NoYXBlX2ludF84Yml0IiwiYmluX3NoYXBlX2ludF8xNmJpdCIsImJpbl9zaGFwZV9pbnRfMzJiaXQiLCJiaW5fc2hhcGVfaW50XzY0Yml0IiwiYmluX3NoYXBlX2ludDY0X2JpdHMiLCJiaW5fc2hhcGVfbmV0d29yazE2X2ludCIsImJpbl9zaGFwZV9uZXR3b3JrMzJfaW50IiwiYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaGFwZV9uZXR3b3JrNjRfaW50IiwiYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NCIsImJpbl9zaGFwZV9yZWYiLCJiaW5fc2hhcGVfb3B0aW9uIiwiYmluX3NoYXBlX2xpc3QiLCJiaW5fc2hhcGVfYXJyYXkiLCJiaW5fc2hhcGVfaGFzaHRibCIsInkiLCJiaW5fc2hhcGVfbGF6eSIsImJpbl9zaGFwZV9wYWlyIiwiYmluX3NoYXBlX3RyaXBsZSIsInoiLCJiaW5fc2l6ZV91bml0IiwiYmluX3NpemVfYm9vbCIsImJpbl9zaXplX2NoYXIiLCJiaW5fc2l6ZV9tZDUiLCJiaW5fc2l6ZV9pbnRfbmF0MCIsImJpbl9zaXplX2ludF9uZWdhdGl2ZSIsImJpbl9zaXplX2ludCIsImJpbl9zaXplX2Zsb2F0IiwiYmluX3NpemVfdmFyaWFudF9pbnQiLCJiaW5fc2l6ZV9pbnRfOGJpdCIsImJpbl9zaXplX2ludF8xNmJpdCIsImJpbl9zaXplX2ludF8zMmJpdCIsImJpbl9zaXplX2ludF82NGJpdCIsImJpbl9zaXplX2ludDY0X2JpdHMiLCJiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IiwiYmluX3NpemVfbmV0d29yazMyX2ludCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaXplX25ldHdvcms2NF9pbnQiLCJiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQiLCJiaW5fc2l6ZV9pbnQkMCIsImJpbl9zaXplX25hdDAiLCJiaW5fc2l6ZV9wYWlyIiwiYmluX3NpemVfdHJpcGxlIiwiYmluX3NpemVfbWF0IiwiYmluX3NpemVfdW5pdCQwIiwiYmluX3NpemVfYm9vbCQwIiwiYmluX3NpemVfY2hhciQwIiwiYmluX3NpemVfaW50JDEiLCJiaW5fc2l6ZV9uYXQwJDAiLCJiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMiLCJzaXplX2xlbiIsImJpbl9zaXplX3N0cmluZyIsImJpbl9zaXplX2J5dGVzIiwiYmluX3NpemVfbWQ1JDEiLCJiaW5fc2l6ZV9mbG9hdCQwIiwiZiIsImJpbl9zaXplX2ludDMyIiwiYmluX3NpemVfaW50NjQiLCJiaW5fc2l6ZV9tZDUkMCIsImJpbl9zaXplX3JlZiIsImJpbl9zaXplX2xhenlfdCIsImJpbl9zaXplX29wdGlvbiIsImJpbl9zaXplX2ludDMyJDAiLCJiaW5fc2l6ZV9pbnQ2NCQwIiwiYmluX3NpemVfbmF0aXZlaW50IiwiYmluX3NpemVfcmVmJDAiLCJiaW5fc2l6ZV9lbCIsImJpbl9zaXplX2xhenlfdCQwIiwiYmluX3NpemVfb3B0aW9uJDAiLCJiaW5fc2l6ZV9wYWlyJDAiLCJiaW5fc2l6ZV9hIiwiYmluX3NpemVfYiIsImJpbl9zaXplX3RyaXBsZSQwIiwiYmluX3NpemVfYyIsImJpbl9zaXplX2xpc3QiLCJzaXplX2FjYyIsImxlbl9hY2MiLCJsZW5fYWNjJDAiLCJzaXplX2FjYyQwIiwiYmluX3NpemVfZmxvYXRhcnJheSIsImJpbl9zaXplX2FycmF5IiwibGVuJDAiLCJ0b3RhbF9sZW4iLCJ0b3RhbF9sZW5fcmVmIiwiYmluX3NpemVfaGFzaHRibCIsImJpbl9zaXplX2tleSIsImJpbl9zaXplX3ZhbCIsImJpbl9zaXplX2dlbl92ZWMiLCJtdWx0aXBsaWVyIiwiYmluX3NpemVfZmxvYXQzMl92ZWMiLCJiaW5fc2l6ZV9mbG9hdDY0X3ZlYyIsImJpbl9zaXplX2dlbl9tYXQiLCJkaW0xIiwiZGltMiIsImJpbl9zaXplX2Zsb2F0MzJfbWF0IiwiYmluX3NpemVfZmxvYXQ2NF9tYXQiLCJiaW5fc2l6ZV9iaWdzdHJpbmciLCJiaW5fc2l6ZV92YXJpYW50X2ludCQwIiwiYmluX3NpemVfaW50XzhiaXQkMCIsImJpbl9zaXplX2ludF8xNmJpdCQwIiwiYmluX3NpemVfaW50XzMyYml0JDAiLCJiaW5fc2l6ZV9pbnRfNjRiaXQkMCIsImJpbl9zaXplX2ludDY0X2JpdHMkMCIsImJpbl9zaXplX25ldHdvcmsxNl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludCQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludDY0JDAiLCJ2YXJpYW50X3dyb25nX3R5cGUiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkZXJfYm9vbCIsImJpbl9ib29sIiwiYmluX3dyaXRlcl9zdHJpbmciLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkZXJfY2hhciIsImJpbl9jaGFyIiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZGVyX2ludCIsImJpbl9pbnQiLCJiaW5fd3JpdGVyX2Zsb2F0IiwiYmluX3JlYWRlcl9mbG9hdCIsImJpbl9mbG9hdCIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkZXJfbmF0aXZlaW50IiwiYmluX25hdGl2ZWludCIsImJpbl93cml0ZXJfbmF0MCIsImJpbl9yZWFkZXJfbmF0MCIsImJpbl9uYXQwIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fd3JpdGVyX2VsIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVhZGVyX2VsIiwieDEiLCJiaW5fcmVmIiwiYmluX2VsIiwiYmluX3dyaXRlcl9sYXp5IiwiYmluX3JlYWRlcl9sYXp5IiwiYmluX2xhenkiLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImJpbl93cml0ZXJfcGFpciIsImJpbl93cml0ZXJfZWwxIiwiYmluX3dyaXRlcl9lbDIiLCJiaW5fcmVhZGVyX3BhaXIiLCJiaW5fcmVhZGVyX2VsMSIsImJpbl9yZWFkZXJfZWwyIiwiYmluX3BhaXIiLCJiaW5fZWwxIiwiYmluX2VsMiIsIngyIiwiYmluX3dyaXRlcl90cmlwbGUiLCJiaW5fd3JpdGVyX2VsMyIsImJpbl9yZWFkZXJfdHJpcGxlIiwiYmluX3JlYWRlcl9lbDMiLCJiaW5fdHJpcGxlIiwiYmluX2VsMyIsIngzIiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRlcl9saXN0IiwiYmluX2xpc3QiLCJiaW5fd3JpdGVyX2FycmF5IiwiYmluX3JlYWRlcl9hcnJheSIsImJpbl9hcnJheSIsImJpbl93cml0ZXJfaGFzaHRibCIsImJpbl9yZWFkZXJfaGFzaHRibCIsImJpbl9oYXNodGJsIiwiYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyIsImJpbl9yZWFkZXJfZmxvYXQzMl92ZWMiLCJiaW5fZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyIsImJpbl9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZXJfdmVjIiwiYmluX3JlYWRlcl92ZWMiLCJiaW5fdmVjIiwiYmluX3dyaXRlcl9mbG9hdDMyX21hdCIsImJpbl9yZWFkZXJfZmxvYXQzMl9tYXQiLCJiaW5fZmxvYXQzMl9tYXQiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0IiwiYmluX3JlYWRlcl9mbG9hdDY0X21hdCIsImJpbl9mbG9hdDY0X21hdCIsImJpbl93cml0ZXJfbWF0IiwiYmluX3JlYWRlcl9tYXQiLCJiaW5fbWF0IiwiYmluX3dyaXRlcl9iaWdzdHJpbmciLCJiaW5fcmVhZGVyX2JpZ3N0cmluZyIsImJpbl9iaWdzdHJpbmciLCJiaW5fd3JpdGVyX2Zsb2F0YXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0YXJyYXkiLCJiaW5fZmxvYXRhcnJheSIsImJpbl93cml0ZXJfdmFyaWFudF9pbnQiLCJiaW5fcmVhZGVyX3ZhcmlhbnRfaW50IiwiYmluX3ZhcmlhbnRfaW50IiwiYmluX3dyaXRlcl9pbnRfOGJpdCIsImJpbl9yZWFkZXJfaW50XzhiaXQiLCJiaW5faW50XzhiaXQiLCJiaW5fd3JpdGVyX2ludF8xNmJpdCIsImJpbl9yZWFkZXJfaW50XzE2Yml0IiwiYmluX2ludF8xNmJpdCIsImJpbl93cml0ZXJfaW50XzMyYml0IiwiYmluX3JlYWRlcl9pbnRfMzJiaXQiLCJiaW5faW50XzMyYml0IiwiYmluX3dyaXRlcl9pbnRfNjRiaXQiLCJiaW5fcmVhZGVyX2ludF82NGJpdCIsImJpbl9pbnRfNjRiaXQiLCJiaW5fd3JpdGVyX2ludDY0X2JpdHMiLCJiaW5fcmVhZGVyX2ludDY0X2JpdHMiLCJiaW5faW50NjRfYml0cyIsImJpbl93cml0ZXJfbmV0d29yazE2X2ludCIsImJpbl9yZWFkZXJfbmV0d29yazE2X2ludCIsImJpbl9uZXR3b3JrMTZfaW50IiwiYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50IiwiYmluX25ldHdvcmszMl9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMiIsImJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyIiwiYmluX25ldHdvcmszMl9pbnQzMiIsImJpbl93cml0ZXJfbmV0d29yazY0X2ludCIsImJpbl9yZWFkZXJfbmV0d29yazY0X2ludCIsImJpbl9uZXR3b3JrNjRfaW50IiwiYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjQiLCJiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NCIsImJpbl9uZXR3b3JrNjRfaW50NjQiLCJjbnZfd3JpdGVyIiwiY252IiwidHBfY2xhc3MiLCJjbnZfcmVhZGVyIiwidnRhZyIsImZvcl9zaGFwZSIsImZvcl93cml0ZXIiLCJmb3JfcmVhZGVyIiwic2l6ZV9oZWFkZXJfbGVuZ3RoIiwiYmluX3dyaXRlX3NpemVfaGVhZGVyIiwiYmluX3JlYWRfc2l6ZV9oZWFkZXIiLCJiaW5fZHVtcCIsIndyaXRlciIsImhlYWRlciIsInBvc19sZW4iLCJ0b3RfbGVuIiwicG9zX2xlbiQwIiwiYnVmJDAiLCJidWYkMSIsImJpbl9yZWFkX3N0cmVhbSIsIm1heF9zaXplIiwicmVhZCIsInJlYWRlciIsIm1heF9zaXplJDAiLCJtc2ciLCJiaW5fd3JpdGVyX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsIm1heWJlX2Fubm90YXRlX3NoYXBlIiwibWF5YmVfdXVpZCIsInNoYXBlIiwidXVpZCIsImJpbl9zaGFwZV90IiwiYmluX3NpemVfdCIsInQiLCJiaW5fd3JpdGVfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fc2l6ZV90JDAiLCJiaW5fd3JpdGVfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaGFwZV9lbCIsImJpbl93cml0ZXIiLCJiaW5fcmVhZGVyIiwidHlwZV9jbGFzcyIsImJpbl9zaGFwZV9lbDEiLCJiaW5fc2hhcGVfZWwyIiwiYmluX3NpemVfZWwxIiwiYmluX3NpemVfZWwyIiwiYmluX3dyaXRlX2VsMSIsImJpbl93cml0ZV9lbDIiLCJiaW5fcmVhZF9lbDEiLCJiaW5fcmVhZF9lbDIiLCJiaW5fd3JpdGVyMSIsImJpbl93cml0ZXIyIiwiYmluX3JlYWRlcjEiLCJiaW5fcmVhZGVyMiIsInR5cGVfY2xhc3MxIiwidHlwZV9jbGFzczIiLCJiaW5fc2hhcGVfZWwzIiwiYmluX3NpemVfZWwzIiwiYmluX3dyaXRlX2VsMyIsImJpbl9yZWFkX2VsMyIsImJpbl93cml0ZXIzIiwiYmluX3JlYWRlcjMiLCJ0eXBlX2NsYXNzMyIsIm1heWJlX2NhbGxlcl9pZGVudGl0eSIsIndpdGhfbW9kdWxlX25hbWUiLCJtb2R1bGVfbmFtZSIsImZ1bmN0aW9uX25hbWUiLCJtb2R1bGVfbmFtZSQwIiwic2l6ZV9yZWYiLCJpZHgiLCJyZXN1bHQiLCJ0MSIsInQyIiwidDMiLCJiaW5fcmVhZF91bml0JDAiLCJ2aW50IiwiYmluX3JlYWRfYm9vbCQwIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZF9ieXRlcyQwIiwiYmluX3JlYWRfY2hhciQwIiwiYmluX3JlYWRfaW50JDAiLCJiaW5fcmVhZF9mbG9hdCQwIiwiYmluX3JlYWRfZmxvYXRhcnJheSQwIiwiYmluX3JlYWRfaW50MzIkMCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZF9uYXRpdmVpbnQkMCIsImJpbl9yZWFkX3JlZiQwIiwiYmluX2xhenlfdCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fcmVhZGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRfbGF6eSQwIiwiYmluX3JlYWRfb3B0aW9uJDAiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZF9hcnJheSQwIiwiYmluX3JlYWRfaGFzaHRibCQwIiwiZyIsImJpbl9yZWFkX2JpZ3N0cmluZyQwIiwiYmluX3dyaXRlX21hdCIsImJpbl9yZWFkX21hdCIsImJpbl9yZWFkX21hdCQwIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQkMCIsImJpbl9yZWFkX2Zsb2F0NjRfbWF0JDAiLCJiaW5fd3JpdGVfdmVjIiwiYmluX3JlYWRfdmVjIiwiYmluX3JlYWRfdmVjJDAiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyQwIiwiYmluX3JlYWRfZmxvYXQ2NF92ZWMkMCIsInZkaWdlc3QiLCJzdGFibGVfd2l0bmVzcyIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJzZXhwX29mX3QiLCJvZl9hXzAwMyIsInN0YXJ0X2EiLCJlbmRfYSIsIndyaXR0ZW4iLCJleHBlY3RlZF9zaXplIiwib2ZfYmluYWJsZSIsInRvX2JpbmFibGUiLCJiaW5fc2hhcGVfdCQxIiwiYmluX3NpemVfdCQxIiwiYmluX3dyaXRlX3QkMSIsImJpbl9yZWFkX3QkMyIsImJpbl9yZWFkX3QkNCIsInRvX29wYXF1ZSIsImJsb2IiLCJvZl9vcGFxdWVfZXhuIiwiY29tcGFyZSQwIiwic2V4cF9vZl90JDAiLCJiaW5fc2l6ZV90JDMiLCJiaW5fd3JpdGVfdCQzIiwic3RyaW5nX29mX2JpZ3N0cmluZyIsImJpbl9yZWFkX3QkNyIsImJpbl9yZWFkX3QkOCIsInRvX29wYXF1ZSQwIiwiYmluX3dyaXRlcl92Iiwib2Zfb3BhcXVlX2V4biQwIiwiYmluX3JlYWRlcl92IiwiZXJyb3IiLCJjb21wYXJlJDEiLCJzZXhwX29mX3QkMSIsImJpbl9zaXplX3QkNSIsImJpbl9yZWFkX3QkMTEiLCJiaW5fcmVhZF90JDEyIiwiYmluX3JlYWRlcl90JDIiLCJwcmVfdGVzdF9ob29rIiwibmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCIsInQiLCJpbml0aWFsIiwiYW1fcnVubmluZ19lbnZfdmFyIiwidG9fc3RyaW5nIiwiY29tYmluZSIsInQxIiwidDIiLCJjb21iaW5lX2FsbCIsInRzIiwidGVzdF9tb2R1bGVzX3JhbiIsInRlc3RfbW9kdWxlc19mYWlsZWQiLCJ0ZXN0c19yYW4iLCJ0ZXN0c19mYWlsZWQiLCJkeW5hbWljX2xpYiIsImFjdGlvbiIsImZvcmNlX2Ryb3AiLCJnZXQiLCJjdXJyZW50IiwiZm91bmRfdGVzdCIsImlzX2N1cnJlbnQiLCJwIiwiY3VycmVudCQwIiwiY3VycmVudF90YWdzIiwidCIsIm0iLCJ2ZXJib3NlIiwic3RyaWN0Iiwic2hvd19jb3VudHMiLCJsaXN0X3Rlc3RfbmFtZXMiLCJkZWxheWVkX2Vycm9ycyIsInN0b3Bfb25fZXJyb3IiLCJsb2ciLCJ0aW1lX3NlYyIsInVzZV9jb2xvciIsImluX3BsYWNlIiwiZGlmZl9jb21tYW5kIiwic291cmNlX3RyZWVfcm9vdCIsImRpZmZfcGF0aF9wcmVmaXgiLCJkaXNwbGF5ZWRfZGVzY3IiLCJkZXNjciIsImZpbGVuYW1lIiwibGluZSIsInN0YXJ0X3BvcyIsImVuZF9wb3MiLCJkZXNjciQwIiwibmFtZSIsInJlc3QiLCJsaWIiLCJ0ZXN0cyIsImxpc3RfcGFydGl0aW9ucyIsInBhcnRpdGlvbiIsInRhZ19wcmVkaWNhdGUiLCJuYW1lX2ZpbHRlciIsIm1zZyQxIiwiZiIsImFub24iLCJsIiwiaSIsInRhZyIsInMiLCJzdHIiLCJmaWxlIiwiaW5kZXgiLCJpbmRleCQwIiwiZmlsZW5hbWUkMCIsImluZGV4X3N0cmluZyIsImluZGV4JDEiLCJhcmd2IiwibXNnIiwibXNnJDAiLCJ2IiwiYW1fdGVzdF9ydW5uZXIiLCJhbV9ydW5uaW5nIiwidGVzdGluZyIsIndhbGxfdGltZV9jbG9ja19ucyIsIndoZXJlX3RvX2N1dF9iYWNrdHJhY2UiLCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV8iLCJiZWZvcmVfbnMiLCJyZXMiLCJleG4kMCIsImV4biIsInNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlIiwic2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUiLCJzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyIiwicHJpbnRfZGVsYXllZF9lcnJvcnMiLCJkZWxheWVkX2Vycm9ycyQwIiwibWVzc2FnZSIsImVwcmludGZfb3JfZGVsYXkiLCJmbXQiLCJhZGRfaG9va3MiLCJDIiwiaHVtX2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInRlc3RfaW5uZXIiLCJjb25maWciLCJ0YWdzIiwiZGVmX2ZpbGVuYW1lIiwiZGVmX2xpbmVfbnVtYmVyIiwiYm9vbF9vZl9mIiwid2hhdF90b19kbyIsIndoaWNoX3RhZ3MiLCJvbmx5X3Rlc3RfbG9jYXRpb24iLCJsaWJuYW1lIiwiZiQwIiwiY29tcGxldGVfdGFncyIsInVzZWQiLCJsaW5lX251bWJlcl9vcHQiLCJwb3NpdGlvbl9zdGFydCIsImVuZF9vZl9kZWZfZmlsZW5hbWUiLCJsaW5lX251bWJlciIsImZvdW5kIiwicmVxIiwiZHJvcHBlZCIsImRlc2NyJDEiLCJzdWJzdHJpbmciLCJzaG91bGRfcnVuIiwiZGVzY3IkMiIsImNoIiwicmVzdWx0JDAiLCJjYW1sX3JhbmRvbV9zdGF0ZSIsImJhc2VfcmFuZG9tX3N0YXRlIiwicmVzdWx0IiwiYmFja3RyYWNlJDAiLCJleG5fc3RyIiwic2VwIiwic2V0X2xpYl9hbmRfcGFydGl0aW9uIiwic3RhdGljX2xpYiIsIndoaWNoX3Rlc3RzIiwicmVxdWlyZXNfcGFydGl0aW9uIiwidW5zZXRfbGliIiwidGVzdCIsImIiLCJ0ZXN0X3VuaXQiLCJ0ZXN0X21vZHVsZSIsInBhcnRpYWxfdGFncyIsInByZXYiLCJ4IiwiZSQwIiwiZSIsInN1bW1hcml6ZSIsImsiLCJhY2MiLCJjb3VudCIsImNvdW50X3Rlc3RfbW9kdWxlcyIsInVudXNlZF90ZXN0cyIsImVycm9ycyIsInVzZV9jb2xvciQwIiwiaW5fcGxhY2UkMCIsImRpZmZfY29tbWFuZCQwIiwiZGlmZl9wYXRoX3ByZWZpeCQwIiwic291cmNlX3RyZWVfcm9vdCQwIiwiZXZhbHVhdG9ycyIsImFkZF9ldmFsdWF0b3IiLCJleGl0IiwiYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhIiwidmFsdWUiLCJhbV9yZWNvcmRpbmdfdmFsdWUiLCJhbV9yZWNvcmRpbmciLCJ0b19uYW5vc2Vjb25kcyIsInQiLCJvZl9uYW5vc2Vjb25kcyIsIm9mX3N0cmluZyIsInN0cmluZyIsInRvX3N0cmluZyIsIm5hbm9zIiwidG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IiwibGlzdCIsImZvcm1hdCIsImNyZWF0ZSIsIm5lc3RlZF90aW1lciIsInJlY29yZF9zdGFydCIsImRlc2NyaXB0aW9uIiwicmVjb3JkX3VudGlsIiwidW50aWwiLCJzdGFydCIsImdjX3N0YXRzX2FmdGVyIiwiZ2Nfc3RhdHNfYmVmb3JlIiwicnVudGltZSIsImdjX2V2ZW50cyIsIm5lc3RlZCQwIiwibmVzdGVkX3RpbWluZ19ldmVudHMiLCJ0aW1pbmdfZXZlbnQiLCJuZXN0ZWQiLCJkZWZpbml0aW9uX3RpbWVyIiwibW9kdWxlX3RpbWVyIiwicmVjb3JkX3N0YXJ0JDAiLCJtb2R1bGVfbmFtZSIsInJlY29yZF91bnRpbCQwIiwicmVjb3JkX2RlZmluaXRpb25fc3RhcnQiLCJsb2MiLCJyZWNvcmRfZGVmaW5pdGlvbl91bnRpbCIsInRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyIsImluZGVudCIsIkZvcm1hdCIsImR1cmF0aW9uX3N0cmluZ3MiLCJwcmVmaXgiLCJsaXN0JDAiLCJkdXJhdGlvbl9zdHJpbmciLCJsaW5lIiwiY29tcGFjdGlvbnMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwidG9fbGlzdCIsImNvdW50Iiwic3RyaW5ncyIsImxlZnRfY29sdW1uX3dpZHRoIiwid2lkdGgiLCJsZWZ0IiwicmlnaHQiLCJpIiwiZmFrZV90aW1pbmdfZXZlbnRzIiwiaiIsInRpbWluZ19ldmVudHMkMCIsIm5vdGlmeV9vZl9vdmVycmlkaW5nIiwib3ZlcnJpZGUiLCJ0aW1pbmdfZXZlbnRzIiwiaW5kZXgiLCJuZXN0ZWRfdGltaW5nX2V2ZW50IiwiY29udiIsIngiLCJsaWZ0IiwiY29tcGFyZSIsImEiLCJiIiwiZXF1YWwiLCJ1aWQiLCJuZXh0IiwibmFtZSIsImNvZGUiLCJoYXNoIiwic3RhdGljJDAiLCJjb21wYXJlJDAiLCJrMSIsImsyIiwiY21wIiwiYiQwIiwiYSQwIiwieXMiLCJ5IiwieHMiLCJuIiwiZXF1YWwkMCIsImhhc2gkMCIsInN0YXRpYyQxIiwia2V5IiwidCIsInVpZCQwIiwibmFtZSQwIiwiY3JlYXRlIiwic2FtZSIsIm5tMSIsIm5tMiIsInNhbWVfd2l0bmVzcyIsInNhbWVfd2l0bmVzc19leG4iLCJpbnQkMCIsIm1lbSIsInRhYmxlIiwic2V0IiwiZGF0YSIsImZpbmQiLCJkYXRhJDAiLCJmYWlsIiwidWlkX2EiLCJ1aWRfYiIsIm1zZyIsInQkMCIsIndpdG5lc3MiLCJ0eXBlbmFtZV9vZl90IiwiYyIsImQiLCJlIiwibGFiZWwiLCJhcml0eSIsImFyZ3NfbGFiZWxzIiwiaW5kZXgiLCJvY2FtbF9yZXByIiwidHlpZCIsInRyYXZlcnNlIiwiaW50ZXJuYWxfdXNlX29ubHkiLCJsZW5ndGgiLCJ0YWciLCJpc19wb2x5bW9ycGhpYyIsInZhbHVlIiwiZm9sZCIsImluaXQiLCJmIiwiaW50ZXJuYWxfdXNlX29ubHkkMCIsImxhYmVsJDAiLCJpbmRleCQwIiwiZ2V0IiwiaXNfbXV0YWJsZSIsInR5aWQkMCIsInRyYXZlcnNlJDAiLCJpbnRlcm5hbF91c2Vfb25seSQxIiwidHlwZW5hbWVfb2ZfdCQwIiwibGVuZ3RoJDAiLCJmaWVsZCIsImhhc19kb3VibGVfYXJyYXlfdGFnIiwiY3JlYXRlJDAiLCJmb2xkJDAiLCJpbnRlcm5hbF91c2Vfb25seSQyIiwibmFtZSQxIiwibmFtZSQyIiwibmFtZSQzIiwibmFtZSQ0IiwibmFtZSQ1IiwibmFtZSQ2IiwibmFtZSQ3IiwibmFtZSQ4IiwibmFtZSQ5IiwibmFtZSQxMCIsIm5hbWUkMTEiLCJuYW1lJDEyIiwibmFtZSQxMyIsIm5hbWUkMTQiLCJuYW1lJDE1IiwibmFtZSQxNiIsIm5hbWUkMTciLCJuYW1lJDE4IiwibmFtZSQxOSIsInR5cGVuYW1lX29mX2ludCIsInR5cGVuYW1lX29mX2ludDMyIiwidHlwZW5hbWVfb2ZfaW50NjQiLCJ0eXBlbmFtZV9vZl9uYXRpdmVpbnQiLCJ0eXBlbmFtZV9vZl9jaGFyIiwidHlwZW5hbWVfb2ZfZmxvYXQiLCJ0eXBlbmFtZV9vZl9zdHJpbmciLCJ0eXBlbmFtZV9vZl9ieXRlcyIsInR5cGVuYW1lX29mX2Jvb2wiLCJ0eXBlbmFtZV9vZl91bml0IiwidHlwZW5hbWVfb2Zfb3B0aW9uIiwidHlwZW5hbWVfb2ZfbGlzdCIsInR5cGVuYW1lX29mX2FycmF5IiwidHlwZW5hbWVfb2ZfbGF6eV90IiwidHlwZW5hbWVfb2ZfcmVmIiwidHlwZW5hbWVfb2ZfZnVuY3Rpb24iLCJ0eXBlbmFtZV9vZl90dXBsZTAiLCJ0eXBlbmFtZV9vZl90dXBsZTIiLCJ0eXBlbmFtZV9vZl90dXBsZTMiLCJ0eXBlbmFtZV9vZl90dXBsZTQiLCJ0eXBlbmFtZV9vZl90dXBsZTUiLCJyZXAiLCJyZXAkMCIsInJlcCQxIiwicmVwJDIiLCJyZXAkMyIsInJlcCQ0IiwibmFtZSQyMCIsImFyaXR5JDAiLCJjJDAiLCJiJDEiLCJhJDEiLCJkJDAiLCJjJDEiLCJiJDIiLCJhJDIiLCJ0eXBlbmFtZV9vZl90JDEiLCJybmciLCJkb20iLCJyZXAkNSIsInJlcCQ2IiwidDEiLCJ0MiIsInQxJDAiLCJ0MiQwIiwicjEiLCJyMiQwIiwicjEkMCIsInIyJDEiLCJ4JDAiLCJyMSQxIiwicjIkMiIsIngkMSIsInIxJDIiLCJyMiQzIiwieCQyIiwicjEkMyIsInIyJDQiLCJ4JDMiLCJybmcxIiwiZG9tMSIsInJuZzIiLCJkb20yIiwidDEkMSIsInQyJDIiLCJiMiIsImEyIiwiYjEiLCJhMSIsImMyIiwiYjIkMCIsImEyJDAiLCJjMSIsImIxJDAiLCJhMSQwIiwiZDIiLCJjMiQwIiwiYjIkMSIsImEyJDEiLCJkMSIsImMxJDAiLCJiMSQxIiwiYTEkMSIsImUyIiwiZDIkMCIsImMyJDEiLCJiMiQyIiwiYTIkMiIsImUxIiwiZDEkMCIsImMxJDEiLCJiMSQyIiwiYTEkMiIsInIxJDQiLCJyMiQ1IiwicjEkNSIsInIyJDYiLCJuYW1lMSIsInIyJDciLCJuYW1lMiIsInIxJDciLCJ4JDQiLCJ0MSQzIiwidDIkMyIsInQyJDQiLCJyMSQ2IiwidDEkMiIsInIyIiwidDIkMSIsInByb29mIiwiaGVhZCIsInQkMSIsInR5cGVyZXBfb2ZfaW50IiwidHlwZXJlcF9vZl9pbnQ2NCIsInR5cGVyZXBfb2Zfb3B0aW9uIiwidHlwZXJlcF9vZl9saXN0IiwidHlwZXJlcF9vZl9hcnJheSIsInR5cGVyZXBfb2ZfbGF6eV90IiwidHlwZXJlcF9vZl9yZWYiLCJ0eXBlcmVwX29mX2Z1bmN0aW9uIiwidHlwZXJlcF9vZl90dXBsZTIiLCJ0eXBlcmVwX29mX3R1cGxlMyIsInR5cGVyZXBfb2ZfdHVwbGU0IiwidHlwZXJlcF9vZl90dXBsZTUiLCJ0eXBlcmVwX29mX2ludDMyIiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9ib29sIiwidHlwZXJlcF9vZl91bml0IiwidHlwZXJlcF9vZl90dXBsZTAiLCJ2YWx1ZV90dXBsZTAiLCJ0eXBlbmFtZV9vZl9pbnQ2MyIsInR5cGVyZXBfb2ZfaW50NjMiLCJyZXByX29mX3BvbHlfdmFyaWFudCIsInZhcmlhbnQiLCJzaXplIiwicmVwciIsImhhc2hfdmFyaWFudCIsInMiLCJhY2N1IiwiaSIsImRvdWJsZV9hcnJheV92YWx1ZSIsImRvdWJsZSQwIiwic2ltcGxlIiwibWFwX3ZhcmlhbnQiLCJtYXAiLCJ0eXBlbmFtZSIsInBvbHltb3JwaGljIiwidGFncyIsInRhZyQwIiwiZmN0IiwiayIsImF0YWciLCJidGFnIiwibWFwX3JlY29yZCIsInJlY29yZCIsImZpZWxkcyIsImZpZWxkJDAiLCJnZXQkMCIsImFmaWVsZCIsImJmaWVsZCIsInBhdGgiLCJyIiwiaW5wdXQiLCJnZXRfd2lwX2NvbXB1dGF0aW9uIiwic2hhcmVkIiwiY2xvcyIsInNldF9maW5hbF9jb21wdXRhdGlvbiIsImNvbXB1dGF0aW9uIiwiY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UiLCJzaGFyZSIsInJlcXVpcmVkIiwidGFibGUkMCIsImNoZWNrX2RlcGVuZGVuY2llcyIsImltcGxlbWVudHMkMCIsIm1lc3NhZ2UiLCJyZXBsYWNlJDAiLCJtZW0kMCIsInRhYmxlMCIsInRhYmxlMSIsInRhYmxlMiIsInRhYmxlMyIsInRhYmxlNCIsInRhYmxlNSIsImlzX3JlZ2lzdGVyZWQiLCJpZGVudCIsInVuaXQiLCJyZWdpc3RlcjAiLCJjb21wdXRlIiwicmVnaXN0ZXIxIiwicmVnaXN0ZXIyIiwicmVnaXN0ZXIzIiwicmVnaXN0ZXI0IiwicmVnaXN0ZXI1IiwicmVnaXN0ZXIiLCJ0eXBlcmVwX29mX2EiLCJvZl90eXBlcmVwIiwiY29udGV4dCIsIm1lbW9fdGFibGUiLCJyZXAkMTEiLCJyZXAkMTIiLCJyZXAkMTMiLCJyZXAkMTQiLCJyZXAkMTUiLCJ0dXBsZSIsInJhIiwicmIiLCJyYSQwIiwicmIkMCIsInJjIiwicmEkMSIsInJiJDEiLCJyYyQwIiwicmQiLCJyYSQyIiwicmIkMiIsInJjJDEiLCJyZCQwIiwicmUiLCJjb250ZW50IiwibmFtZWQiLCJjdXN0b20iLCJjdXN0b20kMCIsImN1c3RvbSQxIiwicmVwJDciLCJjdXN0b20kMiIsImN1c3RvbSQzIiwicmVwJDgiLCJjdXN0b20kNCIsImN1c3RvbSQ1IiwicmVwJDkiLCJ0eXBlbmFtZV9vZl90JDIiLCJjdXN0b20kNiIsImN1c3RvbSQ3IiwicmVwJDEwIiwidHlwZW5hbWVfb2ZfdCQzIiwiY3VzdG9tJDgiLCJjdXN0b20kOSIsInN0cmluZyIsImNvbnRlbnQkMCIsInNoYXJlZCQwIiwiY29tcHV0YXRpb24kMCIsInR5cGVuYW1lX29mX25hbWVkIiwib2ZfcDEiLCJvZl9wMiIsIm9mX3AzIiwib2ZfcDQiLCJvZl9wNSIsInR5cGVyZXBfb2ZfdCIsImVycm9yX3NvdXJjZV8wMDIiLCJoYXNoX2ZvbGRfdCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJjb21wYXJlIiwibWluIiwibWF4IiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsImJldHdlZW4iLCJjbGFtcF9leG4iLCJjbGFtcCIsImNvbXBhcmF0b3IiLCJwcCIsImhhc2hhYmxlIiwiZXF1YWwiLCJyZWxhdGl2ZV90byIsImRpciIsInQiLCJ2IiwiZXhuJDAiLCJleG4iLCJkaXJfb3JfZXJyb3IiLCJpbml0aWFsX2RpciIsInRfb2Zfc2V4cCQwIiwieF8wMDMiLCJlbmRfcG9zIiwic3RhcnRfcG9zIiwibGluZV9zdGFydCIsImxpbmVfbnVtYmVyIiwiZmlsZW5hbWUiLCJzZXhwX29mX3QkMCIsImVuZF9wb3NfMDEzIiwic3RhcnRfcG9zXzAxMSIsImxpbmVfc3RhcnRfMDA5IiwibGluZV9udW1iZXJfMDA3IiwiZmlsZW5hbWVfMDA1IiwiYXJnXzAxNCIsImJuZHNfMDA0IiwiYXJnXzAxMiIsImJuZHNfMDA0JDAiLCJhcmdfMDEwIiwiYm5kc18wMDQkMSIsImFyZ18wMDgiLCJibmRzXzAwNCQyIiwiYXJnXzAwNiIsImJuZHNfMDA0JDMiLCJjb21wYXJlJDAiLCJhXzAxNSIsImJfMDE2IiwibiIsIm4kMCIsIm4kMSIsIm4kMiIsImJlZ2lubmluZ19vZl9maWxlIiwib2Zfc291cmNlX2NvZGVfcG9zaXRpb24iLCJwb3MiLCJzZXhwX29mX3QkMSIsImNvbXBhcmUkMiIsInRvX3N0cmluZyQwIiwib2Zfc3RyaW5nJDAiLCJzIiwiaSIsIm9mX2FfMDAxIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJjbXBfYSIsImFfMDA3IiwiYl8wMDgiLCJhXzAwOSIsImJfMDEwIiwiYV8wMTEiLCJiXzAxMiIsImFfMDEzIiwiYl8wMTQiLCJhXzAxNyIsImJfMDE4IiwibWFwX3ByZXR0eSIsImYiLCJ4Iiwib2ZfYV8wMTkiLCJib2R5X2xvY2F0aW9uXzAyNyIsImV4dGlkX2xvY2F0aW9uXzAyNSIsImJvZHlfMDIzIiwidGFnXzAyMSIsImFyZ18wMjgiLCJibmRzXzAyMCIsImFyZ18wMjYiLCJibmRzXzAyMCQwIiwiYXJnXzAyNCIsImJuZHNfMDIwJDEiLCJhcmdfMDIyIiwiYm5kc18wMjAkMiIsImFfMDI5IiwiYl8wMzAiLCJlcXVhbCQwIiwiYV8wMzUiLCJiXzAzNiIsInhfMDQxIiwiY29tcGFyZSQxIiwiYV8wNDIiLCJiXzA0MyIsIm1hcF9wcmV0dHkkMCIsImVxdWFsIiwiY29tbWVudF9wcmVmaXgiLCJtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGEiLCJ0Iiwib2NhbWxfbGV4X3RhYmxlcyIsImxleGJ1ZiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsInRlc3RzX3J1biIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmIiwieCIsImUkMCIsImUiLCJjdXJyZW50Iiwic2V0IiwiYWJzb2x1dGVfZmlsZW5hbWUiLCJ1bnNldCIsImdldF9wb3NpdGlvbiIsInJlbGF0aXZlX2ZpbGVuYW1lIiwidCIsIndpdGhfaWMiLCJmbmFtZSIsImljIiwiY3VycmVudF90ZXN0IiwiYW1fcnVubmluZ19leHBlY3RfdGVzdCIsImdldF9jdXJyZW50Iiwic2F2ZV9hbmRfcmV0dXJuX291dHB1dF93aXRob3V0IiwibG9jYXRpb24iLCJwb3MiLCJwcmV2X3BvcyIsInByZXZfcG9zJDAiLCJsZW4iLCJmbHVzaCIsInNhdmVfYW5kX3JldHVybl9vdXRwdXQiLCJpbnN0YW5jZSIsInRlc3RzX3J1biQwIiwiZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIiwicyIsImdldF9vdXRwdXRzX2FuZF9jbGVhbnVwIiwibGFzdF9vZnMiLCJuZXh0X29mcyIsImxvYyIsImFjYyIsIm9mcyIsIm91dHB1dHMiLCJ0cmFpbGluZ19vdXRwdXQiLCJzYXZlX291dHB1dCIsInRyYWlsaW5nIiwiYmxvY2tzIiwicnVuIiwiZmlsZV9kaWdlc3QiLCJkZWZpbmVkX2luIiwiZGVzY3JpcHRpb24iLCJ0YWdzIiwiZXhwZWN0YXRpb25zIiwidW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIiwiaW5saW5lX3Rlc3RfY29uZmlnIiwiZm4iLCJyZWdpc3RlcmluZ190ZXN0c19mb3IiLCJmaWxlbmFtZSIsImNoYW4iLCJ1bmNhdWdodF9leG4iLCJzYXZlZF9vdXRwdXQiLCJleG4kMCIsImV4biIsImJ0IiwicmV0dXJuJDAiLCJ4Iiwic2FuaXRpemUiLCJzIiwicnVuIiwiZiIsImJlZ2lubmluZ19vZl9maWxlIiwic2V4cF9vZl9wb3MiLCJvZmZzZXRfMDA2IiwiY29sXzAwNCIsImxpbmVfMDAyIiwiYXJnXzAwNyIsImJuZHNfMDAxIiwiYXJnXzAwNSIsImJuZHNfMDAxJDAiLCJhcmdfMDAzIiwiYm5kc18wMDEkMSIsImNvbXBhcmVfcG9zIiwic2hpZnRfcG9zIiwicG9zIiwiY29scyIsInNleHBfb2ZfcmFuZ2UiLCJlbmRfcG9zXzAxMSIsInN0YXJ0X3Bvc18wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsImNvbXBhcmVfcmFuZ2UiLCJtYWtlX3JhbmdlX2luY2wiLCJzdGFydF9wb3MiLCJsYXN0X3BvcyIsIm1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMiLCJ0Iiwid29yZF9ieXRlcyIsIm4iLCJjaHVua193b3JkcyIsImNyZWF0ZSIsImluaXRpYWxfcG9zIiwicmVzZXQiLCJhZGRfdWludDE2IiwiYWRkX2JpdHMiLCJudW1fYml0cyIsImludF9idWYiLCJudW1fYml0cyQwIiwibnVtX2JpdHMkMSIsImNvbnRlbnRzIiwicmV2X2NodW5rcyIsImNodW5rX3BvcyIsImV4dHJhX2JpdHMiLCJhZGRfZ2VuIiwib2Zmc2V0IiwiaW5zdHIiLCJpbnN0cl9iaXRzIiwibiQwIiwiYWRkIiwiYWRkX3R3aWNlIiwiYWRkX25ld2xpbmUiLCJjcmVhdGUkMCIsInAiLCJjaHVua3MiLCJjaHVuayIsIm5vX21vcmUiLCJuZXh0X2luc3RydWN0aW9uX2JpdHMiLCJ2IiwiYWRkZWRfYml0cyIsImFkdmFuY2UiLCJza2lwIiwib2Zmc2V0X3NoaWZ0Iiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzIiwic2tpcCQwIiwib2Zmc2V0X3NoaWZ0JDAiLCJvZmZzZXRfc2hpZnRfbnVtX2JpdHMkMCIsInNraXAkMSIsIm9mZnNldF9zaGlmdCQxIiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzJDEiLCJvZmZzZXRfc2hpZnQkMiIsIm9mZnNldCQwIiwic2tpcCQyIiwiYWR2YW5jZV9leG4iLCJmaW5kIiwiYSIsImIiLCJpdGVyIiwic3ViX3NleHBfY291bnQiLCJzZXhwIiwibCIsImFjYyIsIngiLCJsb29wIiwic3ViIiwiaW5kZXgiLCJpbmRleCQwIiwibG9vcF9saXN0Iiwic2V4cHMiLCJmaW5hbGl6ZSIsImZpbmRfc3ViX3NleHBfcGh5cyIsImZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzIiwidG9fbGlzdCIsImFjYyQwIiwidG9fYXJyYXkiLCJjb21wYXJlIiwidDEiLCJ0MiIsInNleHBfb2ZfdCIsInVuZXNjYXBlZF8wMDYiLCJhdG9tXzAwNCIsImxvY18wMDIiLCJlbGVtZW50c18wMTEiLCJsb2NfMDA5Iiwic2V4cF9vZl90X29yX2NvbW1lbnQiLCJhcmcwXzAxMyIsInJlczBfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfY29tbWVudCIsImNvbW1lbnRfMDIwIiwibG9jXzAxOCIsImFyZ18wMjEiLCJibmRzXzAxNyIsImFyZ18wMTkiLCJibmRzXzAxNyQwIiwic2V4cF8wMjciLCJjb21tZW50c18wMjUiLCJoYXNoX3NlbWlfcG9zXzAyMyIsImFyZ18wMjgiLCJibmRzXzAyMiIsImFyZ18wMjYiLCJibmRzXzAyMiQwIiwiYXJnXzAyNCIsImJuZHNfMDIyJDEiLCJjb21wYXJlX3Rfb3JfY29tbWVudCIsImNvbXBhcmVfY29tbWVudCIsImZvcmdldF90JDAiLCJrIiwiYXRvbSIsImVsZW1lbnRzIiwieHMiLCJmb3JnZXRfdG9jcyQwIiwiZm9yZ2V0X3QiLCJ0b2NzIiwidG9jcyQwIiwidG9jIiwiZm9yZ2V0X3RvY3MiLCJmb3JnZXRfdG9jJDAiLCJmb3JnZXRfdG9jIiwieSIsInRfb3JfY29tbWVudCIsInRfb3JfY29tbWVudHMiLCJnZXRfbWFueSIsInN0YWNrJDAiLCJzdGFjayIsImdldF9zaW5nbGUiLCJnZXRfbWFueSQwIiwiaW5pdGlhbF9zdGF0ZSIsImVycm9yX3N0YXRlIiwibW9kZSIsImtpbmQiLCJwb3NpdGlvbnMiLCJhdG9tX2J1ZmZlciIsInN0YXRlIiwibGluZSIsImNvbHVtbiIsInBvc2l0aW9uIiwiY29udGV4dCIsImhhc191bmNsb3NlZF9wYXJlbiIsInNldF9lcnJvcl9zdGF0ZSIsImF1dG9tYXRvbl9zdGF0ZSIsIm1lc3NhZ2UiLCJvbGRfcGFyc2VyX2V4biIsInJlcG9ydCIsInBwZiIsImZpbGVuYW1lIiwibXNnIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInJhaXNlIiwicmVhc29uIiwiYXRfZW9mIiwicmFpc2VfZXJyb3IiLCJjdXJyZW50X3BvcyIsImRlbHRhIiwic2V0X2F1dG9tYXRvbl9zdGF0ZSIsImFkdmFuY2VfZW9sIiwibmV3bGluZV9vZmZzZXQiLCJibG9ja19jb21tZW50X2RlcHRoIiwiYWRkX3Rva2VuX2NoYXIiLCJjaGFyJDAiLCJhZGRfYXRvbV9jaGFyIiwiYyIsImFkZF9xdW90ZWRfYXRvbV9jaGFyIiwiaXNfaWdub3JpbmciLCJpc19ub3RfaWdub3JpbmciLCJjaGVja19uZXdfc2V4cF9hbGxvd2VkIiwiaXNfc2luZ2xlIiwiYWRkX3BvcyIsImFkZF9maXJzdF9jaGFyIiwiZXBzX2FkZF9maXJzdF9jaGFyX2hhc2giLCJzdGFydF9xdW90ZWRfc3RyaW5nIiwiYWRkX2VzY2FwZWQiLCJjJDAiLCJlcHNfYWRkX2VzY2FwZWRfY3IiLCJoZXhfdmFsIiwiYWRkX2RlY19lc2NhcGVfY2hhciIsImFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciIsInZhbHVlIiwiY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoIiwiYWRkX2hleF9lc2NhcGVfY2hhciIsImFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciIsIm9wZW5pbmciLCJkb19yZXNldF9wb3NpdGlvbnMiLCJ0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQiLCJmIiwic2F2ZWRfb2Zmc2V0Iiwic2F2ZWRfZnVsbF9zZXhwcyIsImUkMCIsImUiLCJpc190b3BfbGV2ZWwiLCJjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCIsInNleHBfYWRkZWQiLCJpbm5lcl9jb21tZW50X2RlcHRoIiwiaXNfY29tbWVudCIsInRsIiwibWFrZV9saXN0IiwiYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IiwiY29tbWVudCIsImFkZF9zZXhwX3RvX3N0YWNrX2NzdCIsInJldl9jb21tZW50cyIsImhhc2hfc2VtaV9wb3MiLCJjbG9zaW5nIiwic3RhY2skMSIsInN0YWNrJDIiLCJlbmRfcG9zIiwibWFrZV9sb2MiLCJhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyIsImxlbiIsImVwc19wdXNoX2F0b20iLCJzdHIiLCJsb2MiLCJwdXNoX3F1b3RlZF9hdG9tIiwiYnVmIiwicyIsInN0YXJ0X3NleHBfY29tbWVudCIsInN0YXJ0X2Jsb2NrX2NvbW1lbnQiLCJlbmRfYmxvY2tfY29tbWVudCIsInN0YXJ0X2xpbmVfY29tbWVudCIsImVuZF9saW5lX2NvbW1lbnQiLCJlcHNfZW9pX2NoZWNrIiwidG9fc3RyaW5nIiwidHJfMDBfZiIsInRyXzAxX2YiLCJ0cl8wMl9mIiwidHJfMDNfZiIsInRyXzA0X2YiLCJ0cl8wNV9mIiwidHJfMDZfZiIsInRyXzA3X2YiLCJ0cl8wOF9mIiwidHJfMDlfZiIsInRyXzEwX2YiLCJ0cl8xMV9mIiwidHJfMTJfZiIsInRyXzEzX2YiLCJ0cl8xNF9mIiwidHJfMTVfZiIsInRyXzE2X2YiLCJ0cl8xN19mIiwidHJfMThfZiIsInRyXzE5X2YiLCJ0cl8yMF9mIiwidHJfMjFfZiIsInRyXzIyX2YiLCJ0cl8yM19mIiwidHJfMjRfZiIsInRyXzI1X2YiLCJ0cl8yNl9mIiwidHJfMjdfZiIsInRyXzI4X2YiLCJ0cl8yOV9mIiwidHJfMzBfZiIsInRyXzMxX2YiLCJ0cl8zMl9mIiwidHJfMzNfZiIsInRyXzM0X2YiLCJ0cl8zNV9mIiwidHJfMzZfZiIsInRyXzM3X2YiLCJ0cl8zOF9mIiwidHJfMzlfZiIsInRyXzQwX2YiLCJ0cl80MV9mIiwidHJfNDJfZiIsInRyXzQzX2YiLCJ0cl80NF9mIiwidHJfNDVfZiIsInRyXzQ2X2YiLCJ0cl80N19mIiwidHJfNDhfZiIsInRyXzQ5X2YiLCJ0cl81MF9mIiwidHJfNTFfZiIsInRyXzUyX2YiLCJ0cl81M19mIiwidHJfNTRfZiIsInRyXzU1X2YiLCJ0cl81Nl9mIiwidHJfNTdfZiIsInRyXzU4X2YiLCJ0cl81OV9mIiwidHJfNjBfZiIsInRyXzYxX2YiLCJ0cl82Ml9mIiwidHJfNjNfZiIsInRyXzY0X2YiLCJ0cl82NV9mIiwidHJfNjZfZiIsInRyXzY3X2YiLCJ0cl82OF9mIiwidHJfNjlfZiIsInRyXzcwX2YiLCJ0cl83MV9mIiwidHJfNzJfZiIsInRyXzczX2YiLCJ0cl83NF9mIiwidHJfNzVfZiIsInRyXzc2X2YiLCJ0cl83N19mIiwidHJfNzhfZiIsInRyX2VvaV8wMF9mIiwidHJfZW9pXzAxX2YiLCJ0cl9lb2lfMDJfZiIsInRyX2VvaV8wM19mIiwidHJfZW9pXzA0X2YiLCJ0cl9lb2lfMDVfZiIsInRyX2VvaV8wNl9mIiwidHJfZW9pXzA3X2YiLCJ0cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zX2VvaSIsIm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIiwiZmVlZCIsImlkeCIsImZlZWRfZW9pIiwib2xkX3BhcnNlcl9jb250X3N0YXRlIiwiZmVlZF9zdWJzdHJpbmdfdW5zYWZlIiwiaSIsInN0b3AiLCJpJDAiLCJpJDEiLCJmZWVkX3N1YmJ5dGVzX3Vuc2FmZSIsImZlZWRfc3Vic3RyaW5nIiwic3RyX2xlbiIsImZlZWRfc3ViYnl0ZXMiLCJmZWVkX3N0cmluZyIsImZlZWRfYnl0ZXMiLCJvZl9zdWJzdHJpbmciLCJsb2NhdGlvbl8wMDYiLCJzdWJfc2V4cF8wMDQiLCJ1c2VyX2V4bl8wMDIiLCJ1c2VyX2V4biIsInN1Yl9zZXhwIiwibG9jYXRpb24iLCJzdGFydCIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJhcmcwXzAwMyIsInJlczBfMDA0Iiwia2luZF90b19zdGFjayIsIm1ha2UiLCJtYWtlX3ZhbHVlIiwicGFyc2Vfc3RyaW5nX2V4biIsInBhcnNlX3N0cmluZyIsIm1ha2VfZWFnZXIiLCJsaW5lJDAiLCJjb2x1bW4kMCIsInBvc2l0aW9uJDAiLCJub19zZXhwX2lzX2Vycm9yIiwiZ290X3NleHAiLCJwYXJzZWRfdmFsdWUiLCJ1cGRhdGVfbGV4YnVmIiwibGV4YnVmIiwicGFyc2VfZ2VuIiwiZXhuJDAiLCJleG4iLCJzZXRfbm9fc2V4cF9pc19lcnJvciIsIm1hdGNoIiwicGFyc2UiLCJwYXJzZV9vcHQiLCJyZXJhaXNlIiwiY29udl9leG4iLCJjb252IiwieCQwIiwiY29udl9jb21iaW5lIiwicmVzdWx0IiwiciIsImMkMSIsImFuZF9nZXRfcG9zaXRpb25zIiwiZ2V0X3NleHAiLCJhbmRfcG9zaXRpb25zIiwianVzdF9nZXRfcG9zaXRpb25zIiwianVzdF9wb3NpdGlvbnMiLCJjJDIiLCJhcHBseV9mIiwiYXBwbHlfZiQwIiwiZmluZCQwIiwiYXBwbHlfZiQxIiwiZmluZCQxIiwiemVybyIsIm9yaWdpbiIsInNleHBfb2ZfdCIsImNvbCIsInJvdyIsImFkZCIsInQxIiwidDIiLCJzdWIiLCJnZXEiLCJjMiIsInIyIiwiYzEiLCJyMSIsIm9mX2xleGluZyIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwibWFwIiwidCIsImYiLCJvZl9wb3MiLCJvZl9saXN0Iiwib2ZfYSIsInhzIiwib2ZfdCIsInYzJDAiLCJ2MiQwIiwidjEkMCIsIm9mX3Rfb3JfY29tbWVudCIsInYzIiwidjIiLCJ2MSIsIngiLCJjIiwib2ZfY29tbWVudCIsInNleHBfb2ZfY29tbWVudCIsInNleHBfb2ZfdF9vcl9jb21tZW50IiwicmVsIiwib3V0ZXJfcCIsInAiLCJhdXhfdCIsInNvcHQiLCJzIiwicG9zIiwiZW5kX3BvcyIsInRvY3MiLCJzdGFydF9wb3MiLCJ0b2MiLCJhdXhfdG9jIiwiYXV4X2MiLCJ0eHQiLCJjcyIsInBvcyQwIiwicmVsYXRpdml6ZSIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5YWN0IiwiY2FtbF9wYXJzZXJfZW52IiwiXzIiLCJfMSIsInl5dGFibGVzIiwic2V4cCIsImxleGZ1biIsImxleGJ1ZiIsInNleHBfb3B0Iiwic2V4cHMiLCJyZXZfc2V4cHMiLCJzZXhwc19hYnMiLCJvY2FtbF9sZXhfdGFibGVzIiwiYnVmIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJzY2FuX3N0cmluZyIsImxvY3MiLCJsb2NzJDAiLCJvY2FtbF9sZXhfc3RhdGUkMSIsIm9jYW1sX2xleF9zdGF0ZSQyIiwibG9jcyQxIiwibG9jcyQyIiwic3RhcnQiLCJnZW5fbG9hZF9zZXhwX2xvYyIsInVuaXQiLCJvZl9pbnRfc3R5bGUiLCJvZl9mbG9hdF9zdHlsZSIsInRvX3N0cmluZyIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsInBwIiwicHBfbWFjaCIsInBwX2h1bV9pbmRlbnQiLCJwcF9odW0iLCJkZWZhdWx0X2luZGVudCIsIm1lc3NhZ2UiLCJjb21wYXJlIiwiZXF1YWwiLCJ0X3NleHBfZ3JhbW1hciIsIndpdGhfbmV3X2J1ZmZlciIsIm9jIiwib3V0cHV0X2h1bSIsIm91dHB1dF9odW1faW5kZW50IiwiaW5kZW50Iiwib3V0cHV0X21hY2giLCJwcm5nIiwidGVtcF9maWxlX25hbWUiLCJwcmVmaXgiLCJzdWZmaXgiLCJ2IiwicmFuZF9zdGF0ZSIsInJldCIsInJuZCIsIm9wZW5fdGVtcF9maWxlIiwicGVybSIsImNvdW50ZXIiLCJuYW1lIiwiZSQwIiwiZSIsImNvdW50ZXIkMCIsInNhdmVfb2Zfb3V0cHV0Iiwib3V0cHV0X2Z1bmN0aW9uIiwiZmlsZSIsInRtcF9uYW1lIiwib3V0cHV0X3NleHBfbmwiLCJkb19vdXRwdXQiLCJzYXZlX2h1bSIsInNhdmVfbWFjaCIsIm91dHB1dF9zZXhwc19ubCIsInNhdmVfc2V4cHNfaHVtIiwic2F2ZV9zZXhwc19tYWNoIiwic2Nhbl9zZXhwIiwic2Nhbl9zZXhwX29wdCIsInNjYW5fc2V4cHMiLCJzY2FuX3Jldl9zZXhwcyIsImdldF9tYWluX2J1ZiIsImJ1ZiQwIiwiYnVmJDEiLCJzY2FuX2ZvbGRfc2V4cHMiLCJpbml0IiwibWFpbiIsImFjYyIsImFjYyQwIiwic2Nhbl9pdGVyX3NleHBzIiwic2Nhbl9zZXhwc19jb252IiwiY29sbCIsInNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlIiwiY29udGFpbmluZ19zZXhwIiwibG9jYXRpb24iLCJpbnZhbGlkX3NleHAiLCJleG4iLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJnZXRfc2V4cCIsImdldF9yYW5nZSIsInJhbmdlIiwic2V4cF9vZl9jb252Iiwic2V4cF9vZl9hIiwiYSIsImZpbmRfc2V4cCIsImFubm90X3NleHAiLCJsb29wIiwic3ViX3NleHAiLCJhbm5vdHMiLCJyZXMiLCJleG4kMCIsImludmFsaWRfc2V4cCQwIiwiY3JlYXRlIiwidGV4dF9saW5lIiwidGV4dF9jaGFyIiwiYnVmX3BvcyIsImdsb2JhbF9vZmZzZXQiLCJmYWlsIiwibXNnIiwid2l0aF9idWZfcG9zIiwicGUiLCJwcG9zIiwiYW5ub3RhdGVfc2V4cCIsIml0ZXIiLCJzdGFydF9wb3MkMCIsImFubm90IiwiZW5kX3BvcyQwIiwicmFpc2VfZm91bmQiLCJzdGF0ZSIsInJhaXNlX2ZvdW5kJDAiLCJwb3NpdGlvbnMiLCJwYXJzZV9wb3Nfb2Zfc3RhdGUiLCJydW5fZmVlZF9sb29wIiwic3RhY2siLCJsZW4iLCJzdHIiLCJzdHJfbGVuIiwicG9zX2xlbiIsIm1heF9wb3MiLCJwcmV2aW91c19vZmZzZXQiLCJzdGFjayQwIiwicmVzdWx0Iiwib2Zmc2V0IiwibmV4dF9wb3MiLCJlcnIiLCJwYXJzZV9zdGF0ZSIsInBhcnNlX2Vycm9yIiwidXNlZF9yZWYiLCJwYXJzZV9mdW4iLCJjb250X3N0YXRlIiwicGFyc2UiLCJwYXJzZV9wb3MiLCJsZW4kMCIsInJhaXNlX2ZvdW5kJDEiLCJsZW5ndGgiLCJ1bnNhZmVfZmVlZF9sb29wIiwic3RhY2skMSIsInBvcyQxIiwicGFyc2Vfc3RyIiwicmFpc2VfZm91bmQkMiIsImxlbmd0aCQwIiwidW5zYWZlX2ZlZWRfbG9vcCQwIiwicGFyc2Vfc3RyX2Fubm90IiwicmFpc2VfZm91bmQkMyIsImxlbmd0aCQxIiwidW5zYWZlX2ZlZWRfbG9vcCQxIiwicGFyc2VfYmlnc3RyaW5nIiwicmFpc2VfZm91bmQkNCIsImxlbmd0aCQyIiwidW5zYWZlX2ZlZWRfbG9vcCQyIiwicGFyc2VfYmlnc3RyaW5nX2Fubm90IiwibWtfdGhpc19wYXJzZSIsIm15X3BhcnNlIiwicGFyc2VfcG9zJDAiLCJwYXJzZV9wb3MkMSIsImZlZWRfZW5kX29mX2lucHV0IiwidGhpc19wYXJzZSIsIndzX2J1ZiIsImdlbl9pbnB1dF9zZXhwIiwiaWMiLCJ0aGlzX3BhcnNlJDEiLCJzZXhwJDAiLCJ0aGlzX3BhcnNlJDAiLCJpbnB1dF9zZXhwIiwiZ2VuX2lucHV0X3Jldl9zZXhwcyIsInJldl9zZXhwc19yZWYiLCJidWZfbGVuIiwibGVuJDIiLCJ0aGlzX3BhcnNlJDIiLCJuX3BhcnNlZCIsIm5ld19sZW4iLCJsZW4kMSIsImlucHV0X3Jldl9zZXhwcyIsImlucHV0X3NleHBzIiwib2Zfc3RyaW5nX2JpZ3N0cmluZyIsImxvYyIsImdldF9sZW4iLCJnZXRfc3ViIiwiY29udF9zdGF0ZV9zdHIiLCJvZl9zdHJpbmciLCJvZl9zdHJpbmdfbWFueSIsImdldF9ic3RyX3N1Yl9zdHIiLCJic3RyIiwiaSIsImJzdHJfd3NfYnVmIiwib2ZfYmlnc3RyaW5nIiwiZ2VuX2xvYWRfcmV2X3NleHBzIiwiZXhjJDAiLCJleGMiLCJsb2FkX3Jldl9zZXhwcyIsImxvYWRfc2V4cHMiLCJnZW5fbG9hZF9zZXhwIiwic3RyaWN0IiwidGhpc19wYXJzZSQ0Iiwic2V4cCQxIiwidGhpc19wYXJzZSQzIiwiY29udF9zdGF0ZSQwIiwibG9hZF9zZXhwIiwiZ2V0X3NleHAkMCIsImdldF9yYW5nZSQwIiwic2V4cF9vZl9jb252JDAiLCJmaW5kX3NleHAkMCIsImlucHV0X3Jldl9zZXhwcyQwIiwiaW5wdXRfc2V4cCQwIiwiaW5wdXRfc2V4cHMkMCIsIm9mX3N0cmluZyQwIiwib2ZfYmlnc3RyaW5nJDAiLCJsb2FkX3Jldl9zZXhwcyQwIiwibG9hZF9zZXhwcyQwIiwibG9hZF9zZXhwJDAiLCJjb252IiwiYmFkX3NleHAiLCJiYWRfYW5ub3Rfc2V4cCIsImdldF9jb252X2V4biIsImxpbmUiLCJsb2FkX3NleHBfY29udiIsInN0cmljdCQwIiwicmFpc2VfY29udl9leG4iLCJsb2FkX3NleHBfY29udl9leG4iLCJsb2FkX3NleHBzX2NvbnYiLCJyZXZfYW5ub3Rfc2V4cHMiLCJsb2FkX3NleHBzX2NvbnZfZXhuIiwiZ2VuX29mX3N0cmluZ19jb252IiwiYW5ub3Rfb2Zfc3RyaW5nIiwib2Zfc3RyaW5nX2NvbnYiLCJvZl9iaWdzdHJpbmdfY29udiIsIm9zY2UiLCJnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2ZfYmlnc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJpc191bml0Iiwic2VhcmNoX3BoeXNpY2FsIiwiY29udGFpbmVkIiwibHN0IiwiaCIsInN1YnN0X2ZvdW5kIiwic3Vic3QiLCJmb3VuZCIsInQkMCIsInNleHBfb2ZfcG9zIiwicmV0dXJuJDAiLCJwdXRjIiwic3QiLCJiaW5kIiwibSIsInJ1biIsImVtaXRfY2hhciIsImVtaXRfc3RyaW5nIiwibiIsImVtaXRfY2hhcnMiLCJhZHZhbmNlIiwiYW5jaG9yIiwiZGVsdGEiLCJ1bmVzY2FwZWRfYXRvbSIsImxpbmVfY29tbWVudCIsIm5ld19wb3MiLCJwcmV2X3VuZXNjYXBlZCIsImltbWVkX2FmdGVyIiwicHJldl91bmVzY2FwZWQkMCIsInByZXZfdW5lc2NhcGVkJDEiLCJuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d28iLCJuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudCIsIm5lZWRfdG9fcmVwb3NpdGlvbiIsIm5ld19yb3ciLCJyb3dfZGVsdGEiLCJuZXdfcG9zJDAiLCJyb3dfZGVsdGEkMCIsIm4kMCIsInJlbmRlcl90IiwiZW5kX2RlbHRhIiwic3RhcnRfZGVsdGEiLCJjaGlsZF9hbmNob3IiLCJyZW5kZXJfdG9jIiwiZm10X3RleHQiLCJ0ZXh0IiwidGV4dCQwIiwiZm10X3RleHQkMCIsInVuZXNjYXBlZCIsInJlbmRlcl9jIiwiZGVsdGEkMCIsInJlbmRlciIsImFzZXhwIiwiZm9yZ2V0X3QkMCIsImsiLCJmb3JnZXRfdG9jcyQwIiwiZm9yZ2V0X3QiLCJ0b2NzJDAiLCJmb3JnZXRfdG9jcyIsImZvcmdldF90b2MkMCIsImZvcmdldF90b2MiLCJ5IiwidF9vcl9jb21tZW50IiwidF9vcl9jb21tZW50cyIsIm91dHB1dCIsInNhdmUiLCJzYXZlX3NleHBzIiwidmVjX3NleHBfZ3JhbW1hciIsIm1hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0X3ZlYyIsInZlYyIsImxzdF9yZWYiLCJzZXhwX29mX2JpZ3N0cmluZyIsInNleHBfb2ZfZmxvYXQzMl92ZWMiLCJzZXhwX29mX2Zsb2F0NjRfdmVjIiwic2V4cF9vZl92ZWMiLCJzZXhwX29mX2Zsb2F0X21hdCIsIm1hdCIsInNleHBfb2ZfZmxvYXQzMl9tYXQiLCJzZXhwX29mX2Zsb2F0NjRfbWF0Iiwic2V4cF9vZl9tYXQiLCJiaWdzdHJpbmdfb2Zfc2V4cCIsImZsb2F0X3ZlY19vZl9zZXhwIiwiZW1wdHlfZmxvYXRfdmVjIiwiY3JlYXRlX2Zsb2F0X3ZlYyIsImNyZWF0ZV9mbG9hdDMyX3ZlYyIsImNyZWF0ZV9mbG9hdDY0X3ZlYyIsImVtcHR5X2Zsb2F0MzJfdmVjIiwiZW1wdHlfZmxvYXQ2NF92ZWMiLCJmbG9hdDMyX3ZlY19vZl9zZXhwIiwiZmxvYXQ2NF92ZWNfb2Zfc2V4cCIsInZlY19vZl9zZXhwIiwiY2hlY2tfdG9vX211Y2hfZGF0YSIsImRhdGEiLCJmbG9hdF9tYXRfb2Zfc2V4cCIsImNyZWF0ZV9mbG9hdF9tYXQiLCJzbiIsInNtIiwiZGF0YSQwIiwiZGF0YSQxIiwiY29sJDAiLCJjcmVhdGVfZmxvYXQzMl9tYXQiLCJjcmVhdGVfZmxvYXQ2NF9tYXQiLCJmbG9hdDMyX21hdF9vZl9zZXhwIiwiZmxvYXQ2NF9tYXRfb2Zfc2V4cCIsIm1hdF9vZl9zZXhwIiwic3RyaW5nX29mX29mX3NleHBfb2YiLCJ0b19zZXhwIiwib2Zfc3RyaW5nX29mX29mX3NleHAiLCJvZl9zZXhwIiwidF9vZl9zZXhwIiwidF9vZl9zZXhwJDAiLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfdW5pdCIsInVuaXRfb2Zfc2V4cCIsInVuaXRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9ib29sIiwiYm9vbF9vZl9zZXhwIiwiYm9vbF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX3N0cmluZyIsInN0cmluZ19vZl9zZXhwIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfY2hhciIsImNoYXJfb2Zfc2V4cCIsImNoYXJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9pbnQiLCJpbnRfb2Zfc2V4cCIsImludF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc2V4cCIsImZsb2F0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9vZl9zZXhwIiwiaW50MzJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X29mX3NleHAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9vZl9zZXhwIiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfcmVmIiwicmVmX29mX3NleHAiLCJyZWZfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9sYXp5X3QiLCJsYXp5X3Rfb2Zfc2V4cCIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfbGlzdCIsImxpc3Rfb2Zfc2V4cCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9hcnJheSIsImFycmF5X29mX3NleHAiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2V4biIsImV4bl9zZXhwX2dyYW1tYXIiLCJjb2VyY2UiLCJ0YWciLCJkb2NfY29tbWVudF90YWciLCJ0eXBlX25hbWVfdGFnIiwiYXNzb2NfdGFnIiwiYXNzb2Nfa2V5X3RhZyIsImFzc29jX3ZhbHVlX3RhZyIsImNvbXBsZXRpb25fc3VnZ2VzdGVkIiwicmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0IiwiaWxsZWdhbF9hdG9tIiwiZXh0cmFjdF9wb3NfbHN0IiwiaXgiLCJzZXhwX3N0ciIsImV4dHJhY3RfcG9zIiwiZWwiLCJleHRyYWN0X21hdGNoIiwiYXJnX2l4IiwiYXJncyIsIm1heWJlX3giLCJleHRyYWN0X3JlYyIsImtleSIsInJlc3QiLCJpZCIsInN1YnN0X29wdGlvbiIsInN1cF9zdWJzdCIsInN1YnN0X3BhdGgiLCJzdWJfZWwiLCJzdWJfc3Vic3QiLCJyZWNfc3Vic3QiLCJpbXBsb2RlIiwiZmFpbF9wYXJzZSIsImRvdF9peCIsImRvdF9peDEiLCJzdHJfYWNjIiwiYyQwIiwicGF0aF9lbCIsIml4JDAiLCJhY2MkMSIsIml4JDEiLCJzdHJfYWNjJDAiLCJpeDEiLCJpeCQyIiwic3RyX2FjYyQxIiwiaXgkNiIsImluZGV4X2FjYyIsIml4JDMiLCJtYXRjaCIsImluZGV4X2FjYyQxIiwibmV3X2luZGV4X2FjYyIsIml4JDQiLCJpeCQ1IiwiaW5kZXhfYWNjJDIiLCJpbmRleF9hY2MkMCIsInBhdGhfZWwkMCIsImRvdF9peCQwIiwiYWNjJDIiLCJnZXRfc3Vic3QiLCJwYXRoIiwicGF0aCQwIiwicGF0aCQxIiwic3RyJDAiLCJnZXQiLCJyZXBsYWNlIiwic3Vic3RfZnVuIiwicmVwbGFjZV9ub19wYXRoIiwicmVnaXN0ZXIiLCJleGNfbmFtZSIsInJlZ2lzdGVyMSIsIm1ha2VfZXhjIiwic2V4cF9vZl9hcmcxIiwicmVwciIsInNleHAxIiwicmVnaXN0ZXIyIiwic2V4cF9vZl9hcmcyIiwic2V4cDIiLCJyZWdpc3RlcjMiLCJzZXhwX29mX2FyZzMiLCJzZXhwMyIsInJlZ2lzdGVyNCIsInNleHBfb2ZfYXJnNCIsInNleHA0IiwicmVnaXN0ZXI1Iiwic2V4cF9vZl9hcmc1Iiwic2V4cDUiLCJyZWdpc3RlcjYiLCJzZXhwX29mX2FyZzYiLCJzZXhwNiIsInJlZ2lzdGVyNyIsInNleHBfb2ZfYXJnNyIsInNleHA3IiwicmVnaXN0ZXI4Iiwic2V4cF9vZl9hcmc4Iiwic2V4cDgiLCJyZWdpc3RlcjkiLCJzZXhwX29mX2FyZzkiLCJzZXhwOSIsInJlZ2lzdGVyMTAiLCJzZXhwX29mX2FyZzEwIiwic2V4cDEwIiwiaW50NjQkMCIsImdvbGRlbl9nYW1tYSIsInBvcGNvdW50Iiwib2ZfaW50Iiwic2VlZCIsImNvcHkiLCJvZGRfZ2FtbWEiLCJtaXhfYml0cyIsInoiLCJuIiwibWl4NjQiLCJ6JDAiLCJ6JDEiLCJuZXh0X3NlZWQiLCJ0IiwibmV4dCIsIm9mX3NlZWRfYW5kX2dhbW1hIiwiZ2FtbWEiLCJzZWVkJDAiLCJyYW5kb21faW50NjQiLCJyYW5kb21fc3RhdGUiLCJjcmVhdGUiLCJzcGxpdCIsIm5leHRfaW50NjQiLCJwZXJ0dXJiIiwic2FsdCIsImJvb2wiLCJzdGF0ZSIsIngiLCJpbnQ2NCIsImxvIiwiaGkiLCJyZW1haW5kZXJfbWF4aW11bSIsImRyYXckMCIsInJlbWFpbmRlciIsImRyYXdfbWF4aW11bSIsImRyYXciLCJpbnQkMCIsImxvJDAiLCJoaSQwIiwiaW50MzIiLCJuYXRpdmVpbnQiLCJpbnQ2MyIsImRvdWJsZV91bHAiLCJ1bml0X2Zsb2F0X2Zyb21faW50NjQiLCJ1bml0X2Zsb2F0IiwiZmxvYXQkMCIsInJhbmdlIiwibWlkIiwiZiIsImJpdHNfdG9fcmVwcmVzZW50IiwidCQwIiwibG9nX3VuaWZvcm0iLCJtaW5fYml0cyIsIm1heF9iaXRzIiwiYml0cyIsInRfc2V4cF9ncmFtbWFyIiwib2ZfZmxvYXQiLCJ0b19mbG9hdCIsIm9mX2ludF9leG4iLCJ0b19pbnRfZXhuIiwiaGFzaF9mb2xkX3QiLCJoYXNoIiwidF9vZl9zZXhwIiwic2V4cF9vZl90Iiwib2Zfc3RyaW5nIiwidG9fc3RyaW5nIiwiZXF1YWwiLCJjb21wYXJlIiwibWluIiwibWF4IiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsImJldHdlZW4iLCJjbGFtcF9leG4iLCJjbGFtcCIsImNvbXBhcmF0b3IiLCJwcCIsImhhc2hhYmxlIiwiaXNfcG9zaXRpdmUiLCJpc19ub25fbmVnYXRpdmUiLCJpc19uZWdhdGl2ZSIsImlzX25vbl9wb3NpdGl2ZSIsInNpZ24iLCJpbnZhcmlhbnQiLCJvZl9zdHJpbmdfb3B0IiwidG9fc3RyaW5nX2h1bSIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQiLCJzaGlmdF9yaWdodCIsImRlY3IiLCJpbmNyIiwib2ZfaW50MzJfZXhuIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjRfZXhuIiwidG9faW50NjQiLCJvZl9uYXRpdmVpbnRfZXhuIiwidG9fbmF0aXZlaW50X2V4biIsIm9mX2Zsb2F0X3VuY2hlY2tlZCIsIm51bV9iaXRzIiwibWF4X3ZhbHVlIiwibWluX3ZhbHVlIiwic2hpZnRfcmlnaHRfbG9naWNhbCIsImNlaWxfcG93MiIsImZsb29yX3BvdzIiLCJjZWlsX2xvZzIiLCJmbG9vcl9sb2cyIiwiaXNfcG93MiIsImNseiIsImN0eiIsInN5bWJvbCIsImxub3QiLCJhYnMiLCJ6ZXJvIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX2Zsb2F0JDIiLCJ0b19mbG9hdCQyIiwib2ZfaW50X2V4biQyIiwidG9faW50X2V4biQyIiwiaGFzaF9mb2xkX3QkMiIsImhhc2gkMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJvZl9zdHJpbmckMiIsInRvX3N0cmluZyQyIiwiZXF1YWwkMiIsImNvbXBhcmUkMiIsIm1pbiQyIiwibWF4JDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsImJldHdlZW4kMiIsImNsYW1wX2V4biQyIiwiY2xhbXAkMiIsImNvbXBhcmF0b3IkMiIsInBwJDIiLCJoYXNoYWJsZSQyIiwiaXNfcG9zaXRpdmUkMiIsImlzX25vbl9uZWdhdGl2ZSQyIiwiaXNfbmVnYXRpdmUkMiIsImlzX25vbl9wb3NpdGl2ZSQyIiwic2lnbiQyIiwiaW52YXJpYW50JDIiLCJvZl9zdHJpbmdfb3B0JDIiLCJ0b19zdHJpbmdfaHVtJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwicmVtJDIiLCJyb3VuZCQyIiwicm91bmRfdG93YXJkc196ZXJvJDIiLCJyb3VuZF9kb3duJDIiLCJyb3VuZF91cCQyIiwicm91bmRfbmVhcmVzdCQyIiwic3VjYyQyIiwicHJlZCQyIiwicG93JDIiLCJiaXRfYW5kJDIiLCJiaXRfb3IkMiIsImJpdF94b3IkMiIsImJpdF9ub3QkMiIsInBvcGNvdW50JDMiLCJzaGlmdF9sZWZ0JDIiLCJzaGlmdF9yaWdodCQyIiwiZGVjciQyIiwiaW5jciQyIiwib2ZfaW50MzJfZXhuJDIiLCJ0b19pbnQzMl9leG4kMiIsIm9mX2ludDY0X2V4biQyIiwidG9faW50NjQkMiIsIm9mX25hdGl2ZWludF9leG4kMiIsInRvX25hdGl2ZWludF9leG4kMiIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQyIiwibnVtX2JpdHMkMiIsIm1heF92YWx1ZSQyIiwibWluX3ZhbHVlJDIiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDIiLCJjZWlsX3BvdzIkMiIsImZsb29yX3BvdzIkMiIsImNlaWxfbG9nMiQyIiwiZmxvb3JfbG9nMiQyIiwiaXNfcG93MiQyIiwiY2x6JDIiLCJjdHokMiIsInN5bWJvbCQzMyIsImxub3QkMiIsImFicyQyIiwiemVybyQyIiwic3ltYm9sJDM0Iiwic3ltYm9sJDM1Iiwic3ltYm9sJDM2IiwiaW50JDEiLCJpbnQzMiQwIiwiaW50NjMkMCIsImludDY0JDEiLCJuYXRpdmVpbnQkMCIsIm9mZnNldCIsIml0ZXJpIiwidCIsImYiLCJpIiwiaW5pdCIsImtpbmQiLCJsYXlvdXQiLCJkaW0iLCJmb2xkIiwiaW5pdCQwIiwidG9fYXJyYXkiLCJzZXhwX29mX3QiLCJzZXhwX29mX2VsdCIsInNleHBfb2ZfcGFjayIsInNleHBfb2ZfbGF5b3V0IiwieF8wMDEiLCJoYXNoX2ZvbGQiLCJoYXNoX2ZvbGRfZWx0Iiwic3RhdGUiLCJzdGF0ZSQwIiwiaXRlcmkkMCIsImoiLCJkaW0xIiwiZGltMiIsImZvbGQkMCIsImVsdCIsInRvX2FycmF5JDAiLCJzZXhwX29mX3QkMCIsInhfMDAyIiwiaGFzaF9mb2xkJDAiLCJzdGF0ZSQxIiwiY3JlYXRlIiwib2JzZXJ2ZSIsIngiLCJzaXplIiwiaGFzaCIsIm9wYXF1ZSIsImdlbmVyYXRlIiwicmFuZG9tIiwiZm4iLCJkb20iLCJybmciLCJyYW5kb20kMCIsIndpdGhfc2l6ZSIsInBlcnR1cmIiLCJzYWx0IiwiZmlsdGVyX21hcCIsImxvb3AiLCJzaXplJDAiLCJ5Iiwic2l6ZSQxIiwiZmlsdGVyIiwicmV0dXJuJDAiLCJtYXAiLCJhcHBseSIsInRmIiwidHgiLCJiaW5kIiwiYWxsIiwibGlzdCIsImFsbF91bml0IiwibWFwJDAiLCJib3RoIiwibWFwMiIsIm1hcDMiLCJtYXAkMSIsImlnbm9yZV9tIiwiam9pbiIsIm9mX2xpc3QiLCJhcnJheSIsImhpIiwibG8iLCJpbmRleCIsInVuaW9uIiwib2Zfd2VpZ2h0ZWRfbGlzdCIsImFsaXN0IiwidmFsdWVzIiwid2VpZ2h0cyIsInZhbHVlX2FycmF5Iiwic3VtIiwiYWNjIiwid2VpZ2h0IiwiY3VtdWxhdGl2ZSIsImNob2ljZSIsIndlaWdodGVkX3VuaW9uIiwib2ZfbGF6eSIsImxhenlfdCIsImZpeGVkX3BvaW50Iiwib2ZfZ2VuZXJhdG9yIiwid2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIiwibm9ucmVjX2xpc3QiLCJzZWxmIiwicmVjX2xpc3QiLCJ3IiwibiIsIm5vbnJlY19nZW4iLCJyZWNfZ2VuIiwicmVjdXJzaXZlX3VuaW9uIiwid2VpZ2h0ZWQiLCJzaXplcyIsIm1pbl9sZW5ndGgiLCJtYXhfbGVuZ3RoIiwidXBwZXJfYm91bmQiLCJtYXhfbGVuZ3RoJDAiLCJsZW4iLCJyZW1haW5pbmciLCJtYXhfaW5kZXgiLCJ1bml0IiwiYm9vbCIsIm9wdGlvbiIsInZhbHVlX3QiLCJlaXRoZXIiLCJmc3RfdCIsInNuZF90IiwicmVzdWx0Iiwib2tfdCIsImVycl90Iiwib2siLCJlcnIiLCJsaXN0X2dlbmVyaWMiLCJlbHRfZ2VuIiwibGlzdF9ub25fZW1wdHkiLCJsaXN0X3dpdGhfbGVuZ3RoIiwibGVuZ3RoIiwibGlzdF9maWx0ZXJlZCIsImVsdHMiLCJlbHRzJDAiLCJsZW5ndGhfb2ZfaW5wdXQiLCJsZW5ndGhfb2Zfb3V0cHV0IiwiaW5kaWNlcyIsImxpc3RfcGVybXV0YXRpb25zIiwicmVmIiwiY2hhcl91bmlmb3JtX2luY2x1c2l2ZSIsImNoYXJfdXBwZXJjYXNlIiwiY2hhcl9sb3dlcmNhc2UiLCJjaGFyX2RpZ2l0IiwiY2hhcl9wcmludF91bmlmb3JtIiwiY2hhcl91bmlmb3JtIiwiY2hhcl9hbHBoYSIsImNoYXJfYWxwaGFudW0iLCJjaGFyX3doaXRlc3BhY2UiLCJjaGFyX3ByaW50IiwiY2hhciQwIiwic21hbGxfaW50IiwiYWxsb3dfemVybyIsImxvd2VyX2JvdW5kIiwid2VpZ2h0ZWRfbG93Iiwid2VpZ2h0ZWRfaGlnaCIsInNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50Iiwic21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50IiwiZ2VvbWV0cmljIiwicCIsImRlbm9taW5hdG9yIiwidW5pZm9ybSIsImV4cG9uZW50aWFsIiwiZmxvYXQkMCIsImludCQwIiwiaW50JDEiLCJ1bmlmb3JtX2luY2x1c2l2ZSIsImxvZ191bmlmb3JtX2luY2x1c2l2ZSIsIm5vbl91bmlmb3JtIiwiaW5jbHVzaXZlIiwibG9nX2luY2x1c2l2ZSIsInVuaWZvcm1fYWxsIiwibGV0X3N5bnRheF8wMDQiLCJtYWduaXR1ZGUiLCJuZWdhdGl2ZSIsImxvZ191bmlmb3JtIiwiaW50X3VuaWZvcm0iLCJpbnRfaW5jbHVzaXZlIiwiaW50X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2xvZ19pbmNsdXNpdmUiLCJpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2dlb21ldHJpYyIsInVuaWZvcm0kMCIsImxvZ191bmlmb3JtJDAiLCJpbnQzMiIsImludDMyX3VuaWZvcm0iLCJpbnQzMl9pbmNsdXNpdmUiLCJpbnQzMl91bmlmb3JtX2luY2x1c2l2ZSIsImludDMyX2xvZ19pbmNsdXNpdmUiLCJpbnQzMl9sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJpbnQzMl9nZW9tZXRyaWMiLCJ1bmlmb3JtJDEiLCJsb2dfdW5pZm9ybSQxIiwiaW50NjMiLCJpbnQ2M191bmlmb3JtIiwiaW50NjNfaW5jbHVzaXZlIiwiaW50NjNfdW5pZm9ybV9pbmNsdXNpdmUiLCJpbnQ2M19sb2dfaW5jbHVzaXZlIiwiaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50NjNfZ2VvbWV0cmljIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX2Zsb2F0JDIiLCJ0b19mbG9hdCQyIiwib2ZfaW50X2V4biQyIiwidG9faW50X2V4biQyIiwiaGFzaF9mb2xkX3QkMiIsImhhc2gkMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJvZl9zdHJpbmckMiIsInRvX3N0cmluZyQyIiwiZXF1YWwkMiIsImNvbXBhcmUkMiIsIm1pbiQyIiwibWF4JDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsImJldHdlZW4kMiIsImNsYW1wX2V4biQyIiwiY2xhbXAkMiIsImNvbXBhcmF0b3IkMiIsInBwJDIiLCJoYXNoYWJsZSQyIiwiaXNfcG9zaXRpdmUkMiIsImlzX25vbl9uZWdhdGl2ZSQyIiwiaXNfbmVnYXRpdmUkMiIsImlzX25vbl9wb3NpdGl2ZSQyIiwic2lnbiQyIiwiaW52YXJpYW50JDIiLCJvZl9zdHJpbmdfb3B0JDIiLCJ0b19zdHJpbmdfaHVtJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwicmVtJDIiLCJyb3VuZCQyIiwicm91bmRfdG93YXJkc196ZXJvJDIiLCJyb3VuZF9kb3duJDIiLCJyb3VuZF91cCQyIiwicm91bmRfbmVhcmVzdCQyIiwic3VjYyQyIiwicHJlZCQyIiwicG93JDIiLCJiaXRfYW5kJDIiLCJiaXRfb3IkMiIsImJpdF94b3IkMiIsImJpdF9ub3QkMiIsInBvcGNvdW50JDIiLCJzaGlmdF9sZWZ0JDIiLCJzaGlmdF9yaWdodCQyIiwiZGVjciQyIiwiaW5jciQyIiwib2ZfaW50MzJfZXhuJDIiLCJ0b19pbnQzMl9leG4kMiIsIm9mX2ludDY0X2V4biQyIiwidG9faW50NjQkMiIsIm9mX25hdGl2ZWludF9leG4kMiIsInRvX25hdGl2ZWludF9leG4kMiIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQyIiwibnVtX2JpdHMkMiIsIm1heF92YWx1ZSQyIiwibWluX3ZhbHVlJDIiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDIiLCJjZWlsX3BvdzIkMiIsImZsb29yX3BvdzIkMiIsImNlaWxfbG9nMiQyIiwiZmxvb3JfbG9nMiQyIiwiaXNfcG93MiQyIiwiY2x6JDIiLCJjdHokMiIsInN5bWJvbCQzNiIsImxub3QkMiIsImFicyQyIiwiemVybyQyIiwic3ltYm9sJDM3Iiwic3ltYm9sJDM4Iiwic3ltYm9sJDM5IiwidW5pZm9ybSQyIiwibG9nX3VuaWZvcm0kMiIsImludDY0IiwiaW50NjRfdW5pZm9ybSIsImludDY0X2luY2x1c2l2ZSIsImludDY0X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50NjRfbG9nX2luY2x1c2l2ZSIsImludDY0X2xvZ191bmlmb3JtX2luY2x1c2l2ZSIsImludDY0X2dlb21ldHJpYyIsInVuaWZvcm0kMyIsImxvZ191bmlmb3JtJDMiLCJuYXRpdmVpbnQiLCJuYXRpdmVpbnRfdW5pZm9ybSIsIm5hdGl2ZWludF9pbmNsdXNpdmUiLCJuYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmUiLCJuYXRpdmVpbnRfbG9nX2luY2x1c2l2ZSIsIm5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdiIsIm5hdGl2ZWludF9nZW9tZXRyaWMiLCJmbG9hdF96ZXJvX2V4cG9uZW50IiwiZmxvYXRfemVyb19tYW50aXNzYSIsImZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdiIsImZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCIsImZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EiLCJmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1IiwiZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCIsImZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQiLCJmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfaW5mX2V4cG9uZW50IiwiZmxvYXRfaW5mX21hbnRpc3NhIiwiZmxvYXRfbmFuX2V4cG9uZW50IiwiZmxvYXRfbWluX25hbl9tYW50aXNzYSIsImZsb2F0X25vcm1hbF9tYW50aXNzYSIsIm51bV9iaXRzIiwiYml0cyIsImZsb2F0X2V4cG9uZW50IiwiZmxvYXRfemVybyIsImxldF9zeW50YXhfMDEyIiwibGV0X3N5bnRheF8wMTMiLCJmbG9hdF9zdWJub3JtYWwiLCJtYW50aXNzYSIsImV4cG9uZW50IiwiZmxvYXRfbm9ybWFsIiwiZmxvYXRfaW5maW5pdGUiLCJsZXRfc3ludGF4XzAyMSIsImxldF9zeW50YXhfMDIyIiwiZmxvYXRfbmFuIiwiZmxvYXRfb2ZfY2xhc3MiLCJjIiwiZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyIsImZsb2F0X2Zpbml0ZSIsImZsb2F0X3dpdGhvdXRfbmFuIiwiZmxvYXRfZmluaXRlX25vbl96ZXJvIiwiZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUiLCJmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSIsImZsb2F0X3Bvc2l0aXZlX29yX3plcm8iLCJmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvIiwiZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUiLCJsb3dlcl9pbmNsdXNpdmUiLCJ1cHBlcl9pbmNsdXNpdmUiLCJmbG9hdF9pbmNsdXNpdmUiLCJzdHJpbmdfd2l0aF9sZW5ndGhfb2YiLCJjaGFyX2dlbiIsInN0cmluZ19vZiIsInN0cmluZ19ub25fZW1wdHlfb2YiLCJzdHJpbmciLCJzdHJpbmdfbm9uX2VtcHR5Iiwic3RyaW5nX3dpdGhfbGVuZ3RoIiwiZWRpdF9pbnNlcnQiLCJwb3MiLCJzdHIiLCJlZGl0Iiwibl90aW1lcyIsInN0cmluZ19saWtlIiwiYnl0ZXMiLCJzZXhwX29mIiwiYXRvbSIsInNleHAiLCJtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIiwiY29tcGFyYXRvciIsImtleV9nZW4iLCJkYXRhX2dlbiIsImtleXMiLCJrZXlzJDAiLCJkYXRhIiwic2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciIsIm1hcF90X20iLCJtIiwic2V0X3RfbSIsImJpZ2FycmF5MSIsImJpZ3N0cmluZyIsImZsb2F0MzJfdmVjIiwiZmxvYXQ2NF92ZWMiLCJiaWdhcnJheTJfZGltIiwibWF4X3RvdGFsX3NpemUiLCJhIiwibWF4X2IiLCJiX3dlaWdodGVkX2xvdyIsImIiLCJiaWdhcnJheTIiLCJmbG9hdDMyX21hdCIsImZsb2F0NjRfbWF0IiwiY292ZXJhZ2UiLCJDbXAiLCJzYW1wbGUiLCJjb3VudHMiLCJ2YWx1ZSIsInByZXYiLCJtb25pdG9yIiwiYXRvbWljIiwic2hyaW5rIiwiZl9pbnZlcnNlIiwib2Zfc2hyaW5rZXIiLCJzbmQiLCJmc3QiLCJzcmMiLCJ0b19za2lwIiwidG9fc2tpcCQwIiwiaSQwIiwiciIsImRpbTIkMCIsInYiLCJkaW0xJDAiLCJzaHJpbmskMCIsImZpZWxkIiwiZGltcyIsInNraXAiLCJlbHRfdCIsImxpc3RfdCIsInRhaWwiLCJoZWFkIiwic2hyaW5rZXIiLCJsIiwic2hyaW5rX2xpc3QiLCJzaHJpbmtfdHJlZSIsImtleV90IiwiZGF0YV90IiwidHJlZSIsImRyb3Bfa2V5cyIsImsiLCJrZXkiLCJ0cmVlJDAiLCJzbWFsbGVyX2tleSIsInNocmlua19rZXlzIiwic21hbGxlcl9kYXRhIiwic2hyaW5rX2RhdGEiLCJkcm9wX2VsdHMiLCJzbWFsbGVyX2VsdCIsInNocmlua19lbHRzIiwibWFwX3QiLCJzZXRfdCIsIm5hbWVzIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInNocmlua19jb3VudCIsInRlc3RfY291bnQiLCJzZWVkIiwic2l6ZXMkMCIsInNocmlua19jb3VudCQwIiwidGVzdF9jb3VudCQwIiwic2VlZCQwIiwibWFrZV9jcmVhdG9yIiwic2VlZF9mdW4iLCJ0ZXN0X2NvdW50X2Z1biIsInNocmlua19jb3VudF9mdW4iLCJzaXplc19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJzZWVkX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJ0ZXN0X2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJzaHJpbmtfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInNpemVzX2dlbiIsIml0ZXIiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwic2l6ZXNfMDEwIiwic2hyaW5rX2NvdW50XzAwOCIsInRlc3RfY291bnRfMDA2Iiwic2VlZF8wMDQiLCJzdWZmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsImJuZHNfMDAzIiwic3VmZml4JDAiLCJhcmdfMDExIiwiYm5kc18wMDMkMCIsImFyZ18wMDkiLCJibmRzXzAwMyQxIiwiYXJnXzAwNyIsImJuZHNfMDAzJDIiLCJhcmdfMDA1IiwiYm5kc18wMDMkMyIsImRlZmF1bHRfY29uZmlnIiwibGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlIiwid2l0aF9zYW1wbGUiLCJnZW5lcmF0b3IiLCJjb25maWciLCJleGFtcGxlcyIsIm51bWJlcl9vZl9zaXplX3ZhbHVlcyIsInJlbWFpbmluZ19zaXplcyIsInNlcXVlbmNlIiwiaW5wdXQiLCJlcnJvciIsImVycm9yJDEiLCJpbnB1dCQwIiwic2hyaW5rX2NvdW50JDEiLCJhbHRlcm5hdGVzJDIiLCJhbHRlcm5hdGVzIiwiYWx0ZXJuYXRlcyQwIiwiYWx0ZXJuYXRlIiwiZXJyb3IkMCIsImFsdGVybmF0ZXMkMSIsInJ1biIsIk0iLCJmJDAiLCJ3aXRoX3NhbXBsZV9leG4iLCJydW5fZXhuIiwidGVzdGFibGUiLCJ1bm1hcCIsIm9mX2hhc2hfZm9sZCIsIndyYXAiLCJoYXNoJDAiLCJoYXNoJDEiLCJtYXBfdHJlZSIsImtleV9vYnMiLCJkYXRhX29icyIsInNldF90cmVlIiwiZWx0X29icyIsImhhbmRsZXJzIiwia2V5IiwiaW5wIiwiY2FsbGJhY2siLCJ2YWx1ZSIsImluamVjdCIsInYiLCJjYWxsZWQiLCJjYWxsYmFjayQwIiwiYSIsImhhbmRsZSIsInMiLCJwcmludF9zIiwiTmV2ZXIiLCJyZXR1cm4kMCIsImJpbmQiLCJ0IiwiZiIsIm9mX2Z1biIsImxhenkiLCJtYXAiLCJldmFsJDAiLCJ0JDAiLCJ0JDEiLCJsIiwiZiQwIiwidCQyIiwiY2FsbGJhY2skMSIsImYkMSIsInQkMyIsImNhbGxiYWNrJDIiLCJoYW5kbGUkMCIsImhhbmRsZSQxIiwib25fcmVzcG9uc2UiLCJvZl9zeW5jX2Z1biIsIm1ha2UiLCJyZXF1ZXN0IiwicmVzcG9uZF90byIsInJlc3BvbnNlIiwibWFrZSQwIiwiZXZhbHVhdG9yIiwiY3JlYXRlIiwidXBvbiIsImhhbmRsZXIiLCJtYXRjaCIsIngiLCJmaWxsX2lmX2VtcHR5IiwicGVlayIsImhhbmRsZSQyIiwib2Zfc3Zhcl9mdW4iLCJjcmVhdGUkMCIsInF1ZXJpZXNfcGVuZGluZ19yZXNwb25zZSIsInF1ZXJ5IiwibWF5YmVfcmVzcG9uZCIsInJlc3AiLCJvZl9xdWVyeV9yZXNwb25zZV90cmFja2VyIiwicXJ0IiwibW9kX25hbWUiLCJtb2RfbmFtZSQwIiwibW9kX25hbWUkMSIsIm1vZF9uYW1lJDIiLCJtb2RfbmFtZSQzIiwibW9kX25hbWUkNCIsIm1vZF9uYW1lJDUiLCJtb2RfbmFtZSQ2IiwibW9kX25hbWUkNyIsIm1vZF9uYW1lJDgiLCJtb2RfbmFtZSQ5IiwibWF4X3ZhbHVlJDEyIiwibW9kX25hbWUkMTAiLCJyYWlzZV9jYW5ub3RfcmVwciIsInRvX3N0cmluZyIsIngiLCJ0cnVuY191bnNpZ25lZCIsImNvbnYiLCJsb2dhbmQiLCJtYXNrIiwiZXhuX3Vuc2lnbmVkIiwiZXF1YWwiLCJ5IiwidHJ1bmNfc2lnbmVkIiwic2hpZnRfbGVmdCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnQiLCJleG5fc2lnbmVkIiwiaWRlbnRpdHlfaWZfcG9zaXRpdmUiLCJncmVhdGVyX2VxdWFsIiwiemVybyIsIm9mX3NleHBfZXJyb3IiLCJ3aGF0Iiwic2V4cCIsInRvX2ludDMyIiwidG9faW50NjQiLCJjb21wYXJlIiwiaGFzaF9mb2xkX3QiLCJmdW5jIiwiaGFzaCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsInR5cGVuYW1lX29mX3QiLCJtaW5fdmFsdWUiLCJtYXhfdmFsdWUiLCJ0cnVuYyIsIm9mX2Jhc2VfaW50X3RydW5jIiwib2ZfYmFzZV9pbnRfZXhuIiwidG9fYmFzZV9pbnQiLCJvZl9pbnQxNl90cnVuYyIsIm9mX2ludDE2X2V4biIsIm9mX2ludDMyX3RydW5jIiwieCQwIiwib2ZfaW50MzJfZXhuIiwib2ZfaW50NjNfdHJ1bmMiLCJvZl9pbnQ2M19leG4iLCJvZl9pbnQ2NF90cnVuYyIsIm9mX2ludDY0X2V4biIsIm9mX3VpbnQ4X3dyYXAiLCJvZl91aW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsImNvbXBhcmUkMSIsImhhc2hfZm9sZF90JDAiLCJmdW5jJDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwidHlwZXJlcF9vZl90JDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJ6ZXJvJDAiLCJtaW5fdmFsdWUkMCIsIm1heF92YWx1ZSQwIiwibG9nYW5kNjQiLCJtYXNrNjQiLCJlcXVhbCQwIiwiZXF1YWw2NCIsInRvX3N0cmluZyQwIiwidG9fc3RyaW5nNjQiLCJ0cnVuYyQwIiwiZXhuIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMCIsIm9mX2Jhc2VfaW50X2V4biQwIiwidG9fYmFzZV9pbnQkMCIsIm9mX3VpbnQxNl90cnVuYyIsIm9mX3VpbnQxNl9leG4iLCJvZl91aW50MzJfdHJ1bmMiLCJvZl91aW50MzJfZXhuIiwib2ZfdWludDYzX3RydW5jIiwib2ZfdWludDYzX2V4biIsIm9mX3VpbnQ2NF90cnVuYyIsIm9mX3VpbnQ2NF9leG4iLCJvZl9pbnQ4X3dyYXAiLCJvZl9pbnQ4X2V4biIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDAiLCJxdWlja2NoZWNrX29ic2VydmVyJDAiLCJxdWlja2NoZWNrX3Nocmlua2VyJDAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJzeW1ib2wkMjUiLCJzeW1ib2wkMjYiLCJzeW1ib2wkMjciLCJzeW1ib2wkMjgiLCJzeW1ib2wkMjkiLCJzeW1ib2wkMzAiLCJjb21wYXJlJDMiLCJoYXNoX2ZvbGRfdCQxIiwiZnVuYyQxIiwiaGFzaCQxIiwidF9vZl9zZXhwJDEiLCJzZXhwX29mX3QkMSIsInR5cGVyZXBfb2ZfdCQxIiwidHlwZW5hbWVfb2ZfdCQxIiwiemVybyQxIiwibWluX3ZhbHVlJDEiLCJtYXhfdmFsdWUkMSIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJzaGlmdCQwIiwidG9fc3RyaW5nJDEiLCJ0cnVuYyQxIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50X2V4biQxIiwidG9fYmFzZV9pbnQkMSIsIm9mX2ludDgiLCJvZl9pbnQzMl90cnVuYyQwIiwib2ZfaW50MzJfZXhuJDAiLCJvZl9pbnQ2M190cnVuYyQwIiwib2ZfaW50NjNfZXhuJDAiLCJvZl9pbnQ2NF90cnVuYyQwIiwib2ZfaW50NjRfZXhuJDAiLCJvZl91aW50MTZfd3JhcCIsIm9mX3VpbnQxNl9leG4kMCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJxdWlja2NoZWNrX29ic2VydmVyJDEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJjb21wYXJlJDUiLCJoYXNoX2ZvbGRfdCQyIiwiZnVuYyQyIiwiaGFzaCQyIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkMiIsInR5cGVyZXBfb2ZfdCQyIiwidHlwZW5hbWVfb2ZfdCQyIiwiemVybyQyIiwibWluX3ZhbHVlJDIiLCJtYXhfdmFsdWUkMiIsImNvbnYkMCIsImxvZ2FuZCQwIiwibG9nYW5kNjQkMCIsIm1hc2skMCIsIm1hc2s2NCQwIiwiZXF1YWwkMiIsImVxdWFsNjQkMCIsInRvX3N0cmluZyQyIiwidG9fc3RyaW5nNjQkMCIsInRydW5jJDIiLCJleG4kMCIsIm9mX2Jhc2VfaW50X3RydW5jJDIiLCJvZl9iYXNlX2ludF9leG4kMiIsInRvX2Jhc2VfaW50JDIiLCJvZl91aW50OCIsIm9mX3VpbnQzMl90cnVuYyQwIiwib2ZfdWludDMyX2V4biQwIiwib2ZfdWludDYzX3RydW5jJDAiLCJvZl91aW50NjNfZXhuJDAiLCJvZl91aW50NjRfdHJ1bmMkMCIsIm9mX3VpbnQ2NF9leG4kMCIsIm9mX2ludDE2X3dyYXAiLCJvZl9pbnQxNl9leG4kMCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDIiLCJxdWlja2NoZWNrX29ic2VydmVyJDIiLCJxdWlja2NoZWNrX3Nocmlua2VyJDIiLCJzeW1ib2wkNTMiLCJzeW1ib2wkNTQiLCJzeW1ib2wkNTUiLCJzeW1ib2wkNTYiLCJzeW1ib2wkNTciLCJzeW1ib2wkNTgiLCJzeW1ib2wkNTkiLCJzeW1ib2wkNjAiLCJzeW1ib2wkNjEiLCJzeW1ib2wkNjIiLCJjb21wYXJlJDciLCJoYXNoX2ZvbGRfdCQzIiwiZnVuYyQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkMyIsInR5cGVyZXBfb2ZfdCQzIiwidHlwZW5hbWVfb2ZfdCQzIiwiemVybyQzIiwibWluX3ZhbHVlJDMiLCJtYXhfdmFsdWUkMyIsInNoaWZ0X2xlZnQkMSIsInNoaWZ0X3JpZ2h0JDEiLCJzaGlmdCQxIiwidG9fc3RyaW5nJDMiLCJ0cnVuYyQzIiwib2ZfYmFzZV9pbnQzMiIsInRvX2Jhc2VfaW50MzIiLCJvZl9pbnQ4JDAiLCJvZl9pbnQxNiIsIm9mX2ludDYzX3RydW5jJDEiLCJvZl9pbnQ2M19leG4kMSIsIm9mX2ludDY0X3RydW5jJDEiLCJvZl9pbnQ2NF9leG4kMSIsIm9mX3VpbnQzMl93cmFwIiwib2ZfdWludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMyIsInN5bWJvbCQ2OSIsInN5bWJvbCQ3MCIsInN5bWJvbCQ3MSIsInN5bWJvbCQ3MiIsInN5bWJvbCQ3MyIsInN5bWJvbCQ3NCIsInN5bWJvbCQ3NSIsInN5bWJvbCQ3NiIsInN5bWJvbCQ3NyIsInN5bWJvbCQ3OCIsImNvbXBhcmUkOSIsImhhc2hfZm9sZF90JDQiLCJmdW5jJDQiLCJoYXNoJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ0IiwidHlwZXJlcF9vZl90JDQiLCJ0eXBlbmFtZV9vZl90JDQiLCJ6ZXJvJDQiLCJtaW5fdmFsdWUkNCIsIm1heF92YWx1ZSQ0IiwiY29udiQxIiwibG9nYW5kJDEiLCJsb2dhbmQ2NCQxIiwibWFzayQxIiwibWFzazY0JDEiLCJlcXVhbCQ0IiwiZXF1YWw2NCQxIiwidG9fc3RyaW5nJDQiLCJ0b19zdHJpbmc2NCQxIiwidHJ1bmMkNCIsImV4biQxIiwib2ZfYmFzZV9pbnQzMl90cnVuYyIsIm9mX2Jhc2VfaW50MzJfZXhuIiwidG9fYmFzZV9pbnQzMl90cnVuYyIsInRvX2Jhc2VfaW50MzJfZXhuIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyIsIm9mX2Jhc2VfaW50NjRfZXhuIiwidG9fYmFzZV9pbnQ2NCIsIm9mX2Jhc2VfaW50X2V4biQzIiwidG9fYmFzZV9pbnRfZXhuIiwib2ZfdWludDgkMCIsIm9mX3VpbnQxNiIsIm9mX3VpbnQ2M190cnVuYyQxIiwib2ZfdWludDYzX2V4biQxIiwib2ZfdWludDY0X3RydW5jJDEiLCJvZl91aW50NjRfZXhuJDEiLCJvZl9pbnQzMl93cmFwIiwib2ZfaW50MzJfZXhuJDEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ0IiwicXVpY2tjaGVja19vYnNlcnZlciQ0IiwicXVpY2tjaGVja19zaHJpbmtlciQ0Iiwic3ltYm9sJDg1Iiwic3ltYm9sJDg2Iiwic3ltYm9sJDg3Iiwic3ltYm9sJDg4Iiwic3ltYm9sJDg5Iiwic3ltYm9sJDkwIiwic3ltYm9sJDkxIiwic3ltYm9sJDkyIiwic3ltYm9sJDkzIiwic3ltYm9sJDk0IiwiY29tcGFyZSQxMSIsImhhc2hfZm9sZF90JDUiLCJmdW5jJDUiLCJoYXNoJDUiLCJ0X29mX3NleHAkNSIsInNleHBfb2ZfdCQ1IiwicXVpY2tjaGVja19nZW5lcmF0b3IkNSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkNSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkNSIsInR5cGVyZXBfb2ZfdCQ1IiwidHlwZW5hbWVfb2ZfdCQ1IiwiemVybyQ1IiwibWluX3ZhbHVlJDUiLCJtYXhfdmFsdWUkNSIsInRvX3N0cmluZyQ1Iiwib2ZfYmFzZV9pbnQzMiQwIiwidG9fYmFzZV9pbnQzMiQwIiwib2ZfaW50OCQxIiwib2ZfaW50MTYkMCIsIm9mX2ludDYzX3RydW5jJDIiLCJvZl9pbnQ2M19leG4kMiIsIm9mX2ludDY0X3RydW5jJDIiLCJvZl9pbnQ2NF9leG4kMiIsIm9mX3VpbnQzMl93cmFwJDAiLCJvZl91aW50MzJfZXhuJDIiLCJzeW1ib2wkMTAxIiwic3ltYm9sJDEwMiIsInN5bWJvbCQxMDMiLCJzeW1ib2wkMTA0Iiwic3ltYm9sJDEwNSIsInN5bWJvbCQxMDYiLCJzeW1ib2wkMTA3Iiwic3ltYm9sJDEwOCIsInN5bWJvbCQxMDkiLCJzeW1ib2wkMTEwIiwiaGFzaF9mb2xkX3QkNiIsImZ1bmMkNiIsImhhc2gkNiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDYiLCJxdWlja2NoZWNrX29ic2VydmVyJDYiLCJxdWlja2NoZWNrX3Nocmlua2VyJDYiLCJjb21wYXJlJDEzIiwidHlwZXJlcF9vZl90JDYiLCJ0eXBlbmFtZV9vZl90JDYiLCJ6ZXJvJDYiLCJtaW5fdmFsdWUkNiIsImdyZWF0ZXJfZXF1YWwkMCIsInRvX3N0cmluZyQ2Iiwib2ZfYmFzZV9pbnQzMl90cnVuYyQwIiwib2ZfYmFzZV9pbnQzMl9leG4kMCIsInRvX2Jhc2VfaW50MzJfdHJ1bmMkMCIsInRvX2Jhc2VfaW50MzJfZXhuJDAiLCJvZl9iYXNlX2ludDY0X3RydW5jJDAiLCJvZl9iYXNlX2ludDY0X2V4biQwIiwidG9fYmFzZV9pbnQ2NCQwIiwib2ZfYmFzZV9pbnRfZXhuJDQiLCJ0b19iYXNlX2ludF9leG4kMCIsIm9mX3VpbnQ4JDEiLCJvZl91aW50MTYkMCIsIm9mX3VpbnQ2M190cnVuYyQyIiwib2ZfdWludDYzX2V4biQyIiwib2ZfdWludDY0X3RydW5jJDIiLCJvZl91aW50NjRfZXhuJDIiLCJvZl9pbnQzMl93cmFwJDAiLCJvZl9pbnQzMl9leG4kMiIsInNleHBfb2ZfdCQ2IiwidF9vZl9zZXhwJDYiLCJzIiwic3ltYm9sJDExMSIsInN5bWJvbCQxMTIiLCJzeW1ib2wkMTEzIiwic3ltYm9sJDExNCIsInN5bWJvbCQxMTUiLCJzeW1ib2wkMTE2Iiwic3ltYm9sJDExNyIsInN5bWJvbCQxMTgiLCJzeW1ib2wkMTE5Iiwic3ltYm9sJDEyMCIsInNpZ25lZCIsIm51bV9iaXRzIiwibnVtX2J5dGVzIiwic2lnbmVkJDAiLCJudW1fYml0cyQwIiwibnVtX2J5dGVzJDAiLCJzaWduZWQkMSIsIm51bV9iaXRzJDEiLCJudW1fYnl0ZXMkMSIsInNpZ25lZCQyIiwibnVtX2JpdHMkMiIsIm51bV9ieXRlcyQyIiwic2lnbmVkJDMiLCJudW1fYml0cyQzIiwibnVtX2J5dGVzJDMiLCJzaWduZWQkNCIsIm51bV9iaXRzJDQiLCJudW1fYnl0ZXMkNCIsInNpZ25lZCQ1IiwibnVtX2JpdHMkNSIsIm51bV9ieXRlcyQ1IiwibWF4X3ZhbHVlJDYiLCJzaWduZWQkNiIsIm51bV9iaXRzJDYiLCJudW1fYnl0ZXMkNiIsImltcGwiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ3IiwicXVpY2tjaGVja19vYnNlcnZlciQ3IiwicXVpY2tjaGVja19zaHJpbmtlciQ3IiwidF9vZl9zZXhwJDciLCJzZXhwX29mX3QkNyIsInR5cGVyZXBfb2ZfdCQ3IiwidHlwZW5hbWVfb2ZfdCQ3Iiwic2lnbmVkJDciLCJudW1fYml0cyQ3IiwibnVtX2J5dGVzJDciLCJ6ZXJvJDciLCJtaW5fdmFsdWUkNyIsIm1heF92YWx1ZSQ3IiwiaGFzaF9mb2xkX3QkNyIsImhhc2gkNyIsInN5bWJvbCQxMjciLCJzeW1ib2wkMTI4Iiwic3ltYm9sJDEyOSIsInN5bWJvbCQxMzAiLCJzeW1ib2wkMTMxIiwic3ltYm9sJDEzMiIsImVxdWFsJDciLCJjb21wYXJlJDE1IiwibWluJDciLCJtYXgkNyIsIm9mX2Jhc2VfaW50MzIkMSIsInRvX2Jhc2VfaW50MzIkMSIsIm9mX2ludDgkMiIsIm9mX2ludDE2JDEiLCJvZl9pbnQ2M190cnVuYyQzIiwib2ZfaW50NjNfZXhuJDMiLCJvZl9pbnQ2NF90cnVuYyQzIiwib2ZfaW50NjRfZXhuJDMiLCJvZl91aW50MzJfd3JhcCQxIiwib2ZfdWludDMyX2V4biQzIiwicXVpY2tjaGVja19nZW5lcmF0b3IkOCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOCIsInRfb2Zfc2V4cCQ4Iiwic2V4cF9vZl90JDgiLCJ0eXBlcmVwX29mX3QkOCIsInR5cGVuYW1lX29mX3QkOCIsInNpZ25lZCQ4IiwibnVtX2JpdHMkOCIsIm51bV9ieXRlcyQ4IiwiemVybyQ4IiwibWluX3ZhbHVlJDgiLCJtYXhfdmFsdWUkOCIsImhhc2hfZm9sZF90JDgiLCJoYXNoJDgiLCJzeW1ib2wkMTMzIiwic3ltYm9sJDEzNCIsInN5bWJvbCQxMzUiLCJzeW1ib2wkMTM2Iiwic3ltYm9sJDEzNyIsInN5bWJvbCQxMzgiLCJlcXVhbCQ4IiwiY29tcGFyZSQxNiIsIm1pbiQ4IiwibWF4JDgiLCJvZl9iYXNlX2ludDMyX3RydW5jJDEiLCJvZl9iYXNlX2ludDMyX2V4biQxIiwidG9fYmFzZV9pbnQzMl90cnVuYyQxIiwidG9fYmFzZV9pbnQzMl9leG4kMSIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50NjRfZXhuJDEiLCJ0b19iYXNlX2ludDY0JDEiLCJvZl9iYXNlX2ludF9leG4kNSIsInRvX2Jhc2VfaW50X2V4biQxIiwib2ZfdWludDgkMiIsIm9mX3VpbnQxNiQxIiwib2ZfdWludDYzX3RydW5jJDMiLCJvZl91aW50NjNfZXhuJDMiLCJvZl91aW50NjRfdHJ1bmMkMyIsIm9mX3VpbnQ2NF9leG4kMyIsIm9mX2ludDMyX3dyYXAkMSIsIm9mX2ludDMyX2V4biQzIiwiY29tcGFyZSQxNyIsImhhc2hfZm9sZF90JDkiLCJmdW5jJDciLCJoYXNoJDkiLCJ0X29mX3NleHAkOSIsInNleHBfb2ZfdCQ5IiwicXVpY2tjaGVja19nZW5lcmF0b3IkOSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOSIsInR5cGVyZXBfb2ZfdCQ5IiwidHlwZW5hbWVfb2ZfdCQ5IiwiemVybyQ5IiwibWluX3ZhbHVlJDkiLCJtYXhfdmFsdWUkOSIsImdyZWF0ZXJfZXF1YWwkMSIsInRvX3N0cmluZyQ3Iiwib2ZfaW50OCQzIiwib2ZfaW50MTYkMiIsIm9mX2ludDMyIiwib2ZfaW50NjRfdHJ1bmMkNCIsIm9mX2ludDY0X2V4biQ0Iiwib2ZfdWludDYzX3dyYXAiLCJvZl91aW50NjNfZXhuJDQiLCJzeW1ib2wkMTQ1Iiwic3ltYm9sJDE0NiIsInN5bWJvbCQxNDciLCJzeW1ib2wkMTQ4Iiwic3ltYm9sJDE0OSIsInN5bWJvbCQxNTAiLCJzeW1ib2wkMTUxIiwic3ltYm9sJDE1MiIsInN5bWJvbCQxNTMiLCJzeW1ib2wkMTU0IiwiaGFzaF9mb2xkX3QkMTAiLCJmdW5jJDgiLCJoYXNoJDEwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTAiLCJxdWlja2NoZWNrX29ic2VydmVyJDEwIiwicXVpY2tjaGVja19zaHJpbmtlciQxMCIsImNvbXBhcmUkMTkiLCJ0eXBlcmVwX29mX3QkMTAiLCJ0eXBlbmFtZV9vZl90JDEwIiwiemVybyQxMCIsIm1pbl92YWx1ZSQxMCIsIm1heF92YWx1ZSQxMCIsImdyZWF0ZXJfZXF1YWwkMiIsInRvX3N0cmluZyQ4Iiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQyIiwib2ZfYmFzZV9pbnQ2NF9leG4kMiIsInRvX2Jhc2VfaW50NjQkMiIsIm9mX3VpbnQ4JDMiLCJvZl91aW50MTYkMiIsIm9mX3VpbnQzMiIsIm9mX3VpbnQ2NF90cnVuYyQ0Iiwib2ZfdWludDY0X2V4biQ0Iiwib2ZfaW50NjNfd3JhcCIsIm9mX2ludDYzX2V4biQ0Iiwic2V4cF9vZl90JDEwIiwidF9vZl9zZXhwJDEwIiwic3ltYm9sJDE1NSIsInN5bWJvbCQxNTYiLCJzeW1ib2wkMTU3Iiwic3ltYm9sJDE1OCIsInN5bWJvbCQxNTkiLCJzeW1ib2wkMTYwIiwic3ltYm9sJDE2MSIsInN5bWJvbCQxNjIiLCJzeW1ib2wkMTYzIiwic3ltYm9sJDE2NCIsImNvbXBhcmUkMjEiLCJoYXNoX2ZvbGRfdCQxMSIsImZ1bmMkOSIsImhhc2gkMTEiLCJ0X29mX3NleHAkMTEiLCJzZXhwX29mX3QkMTEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQxMSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMTEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDExIiwidHlwZXJlcF9vZl90JDExIiwidHlwZW5hbWVfb2ZfdCQxMSIsInplcm8kMTEiLCJtaW5fdmFsdWUkMTEiLCJtYXhfdmFsdWUkMTEiLCJncmVhdGVyX2VxdWFsJDMiLCJ0b19zdHJpbmckOSIsIm9mX2ludDgkNCIsIm9mX2ludDE2JDMiLCJvZl9pbnQzMiQwIiwib2ZfaW50NjMiLCJvZl91aW50NjRfd3JhcCIsIm9mX3VpbnQ2NF9leG4kNSIsInN5bWJvbCQxNzciLCJzeW1ib2wkMTc4Iiwic3ltYm9sJDE3OSIsInN5bWJvbCQxODAiLCJzeW1ib2wkMTgxIiwic3ltYm9sJDE4MiIsInN5bWJvbCQxODMiLCJzeW1ib2wkMTg0Iiwic3ltYm9sJDE4NSIsInN5bWJvbCQxODYiLCJoYXNoX2ZvbGRfdCQxMiIsImZ1bmMkMTAiLCJoYXNoJDEyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEyIiwicXVpY2tjaGVja19zaHJpbmtlciQxMiIsImNvbXBhcmUkMjMiLCJ0eXBlcmVwX29mX3QkMTIiLCJ0eXBlbmFtZV9vZl90JDEyIiwiemVybyQxMiIsIm1pbl92YWx1ZSQxMiIsImdyZWF0ZXJfZXF1YWwkNCIsInRvX3N0cmluZyQxMCIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMyIsIm9mX2Jhc2VfaW50NjRfZXhuJDMiLCJ0b19iYXNlX2ludDY0X3RydW5jIiwidG9fYmFzZV9pbnQ2NF9leG4iLCJvZl91aW50OCQ0Iiwib2ZfdWludDE2JDMiLCJvZl91aW50MzIkMCIsIm9mX3VpbnQ2MyIsIm9mX2ludDY0X3dyYXAiLCJvZl9pbnQ2NF9leG4kNSIsInNleHBfb2ZfdCQxMiIsInRfb2Zfc2V4cCQxMiIsInN5bWJvbCQxODciLCJzeW1ib2wkMTg4Iiwic3ltYm9sJDE4OSIsInN5bWJvbCQxOTAiLCJzeW1ib2wkMTkxIiwic3ltYm9sJDE5MiIsInN5bWJvbCQxOTMiLCJzeW1ib2wkMTk0Iiwic3ltYm9sJDE5NSIsInN5bWJvbCQxOTYiLCJnZXRfaW50OCIsInQiLCJwb3MiLCJnZXRfdWludDgiLCJnZXRfaW50MTZfbGUiLCJnZXRfaW50MTZfYmUiLCJnZXRfdWludDE2X2xlIiwiZ2V0X3VpbnQxNl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQzMl9iZSIsImdldF91aW50MzJfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwiZ2V0X3VpbnQ2NF9sZSIsImdldF91aW50NjRfYmUiLCJzZXRfdWludDgiLCJzZXRfaW50OCIsInNldF91aW50MTZfbGUiLCJzZXRfdWludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDE2X2JlIiwic2V0X2ludDMyX2xlIiwieCQxIiwic2V0X2ludDMyX2JlIiwic2V0X3VpbnQzMl9sZSIsInNldF91aW50MzJfYmUiLCJzZXRfaW50NjRfbGUiLCJzZXRfaW50NjRfYmUiLCJzZXRfdWludDY0X2xlIiwic2V0X3VpbnQ2NF9iZSIsImdldF9pbnQ4JDAiLCJnZXRfdWludDgkMCIsImdldF9pbnQxNl9sZSQwIiwiZ2V0X2ludDE2X2JlJDAiLCJnZXRfdWludDE2X2xlJDAiLCJnZXRfdWludDE2X2JlJDAiLCJnZXRfaW50MzJfbGUkMCIsImdldF9pbnQzMl9iZSQwIiwiZ2V0X3VpbnQzMl9sZSQwIiwiZ2V0X3VpbnQzMl9iZSQwIiwiZ2V0X2ludDY0X2xlJDAiLCJnZXRfaW50NjRfYmUkMCIsImdldF91aW50NjRfbGUkMCIsImdldF91aW50NjRfYmUkMCIsInNldF9pbnQ4JDAiLCJzZXRfdWludDgkMCIsInNldF9pbnQxNl9sZSQwIiwic2V0X2ludDE2X2JlJDAiLCJzZXRfdWludDE2X2xlJDAiLCJzZXRfdWludDE2X2JlJDAiLCJzZXRfaW50MzJfbGUkMCIsInNldF9pbnQzMl9iZSQwIiwic2V0X3VpbnQzMl9sZSQwIiwic2V0X3VpbnQzMl9iZSQwIiwic2V0X2ludDY0X2xlJDAiLCJzZXRfaW50NjRfYmUkMCIsInNldF91aW50NjRfbGUkMCIsInNldF91aW50NjRfYmUkMCIsImdldF9pbnQ4JDEiLCJnZXRfdWludDgkMSIsImdldF9pbnQxNl9sZSQxIiwiZ2V0X2ludDE2X2JlJDEiLCJnZXRfdWludDE2X2xlJDEiLCJnZXRfdWludDE2X2JlJDEiLCJnZXRfaW50MzJfbGUkMSIsImdldF9pbnQzMl9iZSQxIiwiZ2V0X3VpbnQzMl9sZSQxIiwiZ2V0X3VpbnQzMl9iZSQxIiwiZ2V0X2ludDY0X2xlJDEiLCJnZXRfaW50NjRfYmUkMSIsImdldF91aW50NjRfbGUkMSIsImdldF91aW50NjRfYmUkMSIsImdldF9pbnQ4JDIiLCJnZXRfdWludDgkMiIsImdldF9pbnQxNl9sZSQyIiwiZ2V0X2ludDE2X2JlJDIiLCJnZXRfdWludDE2X2xlJDIiLCJnZXRfdWludDE2X2JlJDIiLCJnZXRfaW50MzJfbGUkMiIsImdldF9pbnQzMl9iZSQyIiwiZ2V0X3VpbnQzMl9sZSQyIiwiZ2V0X3VpbnQzMl9iZSQyIiwiZ2V0X2ludDY0X2xlJDIiLCJnZXRfaW50NjRfYmUkMiIsImdldF91aW50NjRfbGUkMiIsImdldF91aW50NjRfYmUkMiIsImxvYyQwIiwibG9jIiwic3ByaW50ZiIsImFyY2hfc2l4dHlmb3VyIiwiYXJjaF9iaWdfZW5kaWFuIiwibm90X29uXzMyYml0IiwiY3JlYXRlIiwibWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIiwic2l6ZSIsIm1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyQwIiwibGVuZ3RoIiwiaW5pdCIsIm4iLCJmIiwidCIsImkiLCJjaGVja19hcmdzIiwicG9zIiwibGVuIiwiYnN0ciIsImJzdHJfbGVuJDAiLCJic3RyX2xlbiIsImdldF9vcHRfbGVuIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsImxlbmd0aCQwIiwidW5zYWZlX2JsaXQiLCJsZW5ndGgkMSIsIm9mX3N0cmluZyIsIm9mX2J5dGVzIiwidG9fc3RyaW5nIiwidG9fYnl0ZXMiLCJzZXhwX29mX3RfZnJvemVuIiwidF9mcm96ZW5fb2Zfc2V4cCIsInNleHAiLCJzdHIiLCJjb3B5IiwiYXBwZW5kIiwic3JjIiwiZHN0IiwiZHN0X3Bvc19yZWYiLCJkc3RfcG9zIiwiY29uY2F0Iiwic2VwIiwibGlzdCIsInRhaWwiLCJoZWFkIiwiaGVhZF9sZW4iLCJzZXBfbGVuIiwidGFpbF9jb3VudCIsInNlcCQwIiwibWVtc2V0IiwiYyIsIm1lbWNtcCIsInQxIiwicG9zMSIsInQyIiwicG9zMiIsIm1lbWNtcF9ieXRlcyIsImJ5dGVzIiwiY29tcGFyZV90X2Zyb3plbiIsImxlbjEiLCJsZW4yIiwiaGFzaF9mb2xkX3RfZnJvemVuIiwiaGFzaCIsImhhc2hfdF9mcm96ZW4iLCJ4IiwiZXF1YWwiLCJmaW5kIiwiY2hyIiwibGVuJDAiLCJyZXMiLCJtZW1tZW0iLCJoYXlzdGFjayIsIm5lZWRsZSIsImhheXN0YWNrX2xlbiIsIm5lZWRsZV9sZW4iLCJoYXlzdGFja19wb3MiLCJuZWVkbGVfcG9zIiwiaGF5c3RhY2tfbGVuJDAiLCJuZWVkbGVfbGVuJDAiLCJnZXRfMTYiLCJnZXRfMzIiLCJnZXRfNjQiLCJzZXRfMTZfdHJ1bmMiLCJ2Iiwic2V0XzMyIiwic2V0XzY0Iiwic2lnbl9leHRlbmRfMTYiLCJ1IiwiY2hlY2tfdmFsaWRfdWludDE2IiwiY2hlY2tfdmFsaWRfaW50MTYiLCJjaGVja192YWxpZF9pbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQ2NCIsInVuc2FmZV9yZWFkX2ludDE2IiwidW5zYWZlX3JlYWRfaW50MTZfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQxNiIsInVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIiwicmVhZF9pbnQxNiIsInJlYWRfaW50MTZfc3dhcCIsIndyaXRlX2ludDE2X2V4biIsIndyaXRlX2ludDE2X3N3YXBfZXhuIiwidW5zYWZlX3JlYWRfdWludDE2IiwidW5zYWZlX3JlYWRfdWludDE2X3N3YXAiLCJ1bnNhZmVfd3JpdGVfdWludDE2IiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIiwicmVhZF91aW50MTYiLCJyZWFkX3VpbnQxNl9zd2FwIiwid3JpdGVfdWludDE2X2V4biIsIndyaXRlX3VpbnQxNl9zd2FwX2V4biIsInVuc2FmZV9yZWFkX2ludDMyX2ludCIsInVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIiwidW5zYWZlX3JlYWRfaW50MzIiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDMyIiwidW5zYWZlX3dyaXRlX2ludDMyX3N3YXAiLCJ1bnNhZmVfd3JpdGVfaW50MzJfaW50IiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMl9pbnQiLCJyZWFkX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMiIsInJlYWRfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyX2ludF9leG4iLCJ3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4iLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnQiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9yZWFkX2ludDY0IiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQ2NCIsInVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDY0X2ludCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjRfaW50IiwicmVhZF9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjQiLCJyZWFkX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NF9pbnQiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfcmVhZF9pbnQxNl9zd2FwJDAiLCJ1bnNhZmVfZ2V0X3VpbnQxNl9iZSIsInVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwJDAiLCJnZXRfaW50MTZfYmUiLCJyZWFkX2ludDE2X3N3YXAkMCIsImdldF91aW50MTZfYmUiLCJyZWFkX3VpbnQxNl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3dyaXRlX2ludDE2X3N3YXAkMCIsInVuc2FmZV9zZXRfdWludDE2X2JlIiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwJDAiLCJzZXRfaW50MTZfYmVfZXhuIiwid3JpdGVfaW50MTZfc3dhcF9leG4kMCIsInNldF91aW50MTZfYmVfZXhuIiwid3JpdGVfdWludDE2X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCQwIiwiZ2V0X2ludDMyX3RfYmUiLCJyZWFkX2ludDMyX3N3YXAkMCIsInNldF9pbnQzMl90X2JlIiwid3JpdGVfaW50MzJfc3dhcCQwIiwidW5zYWZlX3JlYWRfaW50MzJfaW50JDAiLCJ1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwJDAiLCJyZWFkX2ludDMyX2ludCQwIiwicmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwid3JpdGVfaW50MzJfaW50X2V4biQwIiwid3JpdGVfaW50MzJfaW50X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlX3RydW5jIiwidW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnQkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwiZ2V0X2ludDY0X2JlX3RydW5jIiwicmVhZF9pbnQ2NF9pbnRfc3dhcCQwIiwid3JpdGVfaW50NjRfaW50JDAiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwidW5zYWZlX2dldF9pbnQ2NF90X2JlIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCQwIiwidW5zYWZlX3NldF9pbnQ2NF90X2JlIiwidW5zYWZlX3dyaXRlX2ludDY0X3N3YXAkMCIsInVuc2FmZV9yZWFkX2ludDY0X2xvY2FsIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCIsInJlYWRfaW50NjRfbG9jYWwiLCJyZWFkX2ludDY0X3N3YXBfbG9jYWwiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9sb2NhbCQwIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCQwIiwicmVhZF9pbnQ2NF9sb2NhbCQwIiwiZ2V0X2ludDY0X3RfbGUiLCJnZXRfaW50NjRfdF9iZSIsInJlYWRfaW50NjRfc3dhcCQwIiwic2V0X2ludDY0X3RfYmUiLCJzZXRfaW50NjRfdF9sZSIsImludDY0X2NvbnZfZXJyb3IiLCJ1aW50NjRfY29udl9lcnJvciIsImludDY0X3RvX2ludF9leG4iLCJ1aW50NjRfdG9faW50X2V4biIsInVuc2FmZV9nZXRfaW50NjRfYmVfZXhuIiwidW5zYWZlX2dldF9pbnQ2NF9sZV9leG4iLCJnZXRfaW50NjRfYmVfZXhuIiwiZ2V0X2ludDY0X2xlX2V4biIsInVuc2FmZV9nZXRfdWludDY0X2JlX2V4biIsInVuc2FmZV9nZXRfdWludDY0X2xlX2V4biIsImdldF91aW50NjRfYmVfZXhuIiwiZ2V0X3VpbnQ2NF9sZV9leG4iLCJzZXRfdWludDY0X2JlX2V4biIsInNldF91aW50NjRfbGVfZXhuIiwidW5zYWZlX3NldF91aW50OCIsInVuc2FmZV9zZXRfaW50OCIsIm4kMCIsInVuc2FmZV9nZXRfdWludDgiLCJ1bnNhZmVfZ2V0X2ludDgiLCJzZXRfdWludDhfZXhuIiwic2V0X2ludDhfZXhuIiwiZ2V0X3VpbnQ4IiwiZ2V0X2ludDgiLCJ1aW50MzJfb2ZfaW50MzJfdCIsInVuc2FmZV9zZXRfdWludDMyX2xlIiwidW5zYWZlX3NldF91aW50MzJfYmUiLCJ1bnNhZmVfZ2V0X3VpbnQzMl9sZSIsInVuc2FmZV9nZXRfdWludDMyX2JlIiwic2V0X3VpbnQzMl9sZV9leG4iLCJzZXRfdWludDMyX2JlX2V4biIsImdldF91aW50MzJfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X3VpbnQ4JDAiLCJzZXRfdWludDgiLCJnZXRfdWludDE2X25lIiwic2V0X3VpbnQxNl9uZSIsImdldF9pbnQzMl9uZSIsInNldF9pbnQzMl9uZSIsImdldF9pbnQ2NF9uZSIsInNldF9pbnQ2NF9uZSIsImdldF91aW50OCQyIiwic2V0X3VpbnQ4JDEiLCJnZXRfdWludDE2X25lJDAiLCJzZXRfdWludDE2X25lJDAiLCJnZXRfaW50MzJfbmUkMCIsInNldF9pbnQzMl9uZSQwIiwiZ2V0X2ludDY0X25lJDAiLCJzZXRfaW50NjRfbmUkMCIsImVsdDEiLCJlbHQyIiwiZXF1YWwiLCJvZl9ib29sIiwibGVuZ3RoIiwiY3JlYXRlX2Jvb2wiLCJnZXQiLCJzZXQiLCJvdmVybGFwcGluZ19zcmNfZHN0IiwibGVuZ3RoJDAiLCJnZXQkMCIsInNldCQwIiwiY3JlYXRlX2Jvb2wkMCIsInJvb3QiLCJjb21wYXJhdG9yIiwiY2xhbXAiLCJjbGFtcF9leG4iLCJiZXR3ZWVuIiwiZGVzY2VuZGluZyIsImFzY2VuZGluZyIsIm1heCIsIm1pbiIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJ0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfdCIsInRfb2Zfc2V4cCIsImhhc2giLCJoYXNoX2ZvbGRfdCIsImNoZWNrX3N1ZmZpeCIsImNob3BfZXh0ZW5zaW9uIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3N1ZmZpeF9vcHQiLCJjdXJyZW50X2Rpcl9uYW1lIiwiaXNfaW1wbGljaXQiLCJpc19yZWxhdGl2ZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZSIsInRlbXBfZGlyX25hbWUiLCJkaXJuYW1lIiwiYmFzZW5hbWUiLCJpc19hYnNvbHV0ZSIsInAiLCJjb25jYXQiLCJwMSIsInAyIiwicyQxIiwicyQyIiwicyIsInMkMCIsInRvX2Fic29sdXRlX2V4biIsInJlbGF0aXZlX3RvIiwic3BsaXQiLCJpc19wb3NpeF9wYXRobmFtZV9jb21wb25lbnQiLCJzcGxpdF9leHRlbnNpb24iLCJmbiIsImZuJDAiLCJwYXRoIiwiZm4kMSIsImRpciIsImV4dCIsImJhc2VfZm4iLCJleHQkMCIsImZuJDIiLCJkaXIkMCIsImZuJDMiLCJwYXJ0cyIsImZpbGVuYW1lIiwiYWNjIiwiZmlsZW5hbWUkMCIsImZpbGVuYW1lJDEiLCJhY2MkMCIsIm9mX3BhcnRzIiwicmVzdCIsIm9mX2Fic29sdXRlX2V4biIsImEiLCJiIiwiYV9wYXJ0cyIsImJfcGFydHMiLCJhX3N1ZmZpeCIsImJfc3VmZml4IiwidDIiLCJoMiIsInQxIiwiaDEiLCJnb191cCIsInJlbHBhdGgiLCJzZXhwX29mX3QiLCJzZXhwX29mX3R5cGVfaWQiLCJ0eXBlX2lkIiwieF8wMDMiLCJ0eXBlX2lkMSIsInR5cGVfaWQyIiwibmFtZV9vZl9rZXkiLCJrZXkiLCJ1aWRfb2Zfa2V5Iiwic2V4cF9vZl90JDAiLCJzZXhwX29mX2EiLCJkYXRhIiwidHlwZV9pZF9uYW1lIiwidHlwZV9pZF91aWQiLCJjb21wYXJlIiwidDEiLCJ0MiIsImMiLCJ0b19hbGlzdCIsInQiLCJzZXhwX29mX3QkMSIsInhfMDA4IiwicGFja2VkIiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJpbnZhcmlhbnQiLCJ4XzAwOSIsInNldCIsIm1lbV9ieV9pZCIsImlkIiwibWVtIiwicmVtb3ZlX2J5X2lkIiwicmVtb3ZlIiwiZW1wdHkiLCJzaW5nbGV0b24iLCJpc19lbXB0eSIsImZpbmQiLCJ2YWx1ZSIsImtleSQwIiwiZmluZF9leG4iLCJhZGQiLCJhZGRfZXhuIiwidCQwIiwiY2hhbmdlX2V4biIsInVwZGF0ZSIsImNoYW5nZSIsIm9yaWciLCJuZXh0IiwiZiIsIm9mX2FsaXN0X2V4biIsInAiLCJvZl9hXzAxMSIsIm9mX2FfMDEyIiwieF8wMTMiLCJ4XzAxNCIsIm9mX2FfMDE3IiwidHlwZV9lcXVhbCIsImNyZWF0ZSIsImRlZmF1bHQkMCIsIm5hbWUiLCJzZXhwX29mIiwiZmluZCQwIiwic2V0JDAiLCJjaGFuZ2UkMCIsImNyZWF0ZSQwIiwiaW5pdCIsImlkJDAiLCJmaW5kJDEiLCJzZXQkMSIsImNoYW5nZSQxIiwiYWRkJDAiLCJhY2MiLCJjcmVhdGUkMSIsInhzIiwieCIsImlkJDEiLCJtZXJnZSIsImYkMCIsIm1lcmdlX3Jlc3VsdCIsInJpZ2h0X2RhdGEiLCJyaWdodF9rZXkiLCJsZWZ0X2RhdGEiLCJsZWZ0X2tleSIsImRhdGEkMCIsImVwcmludGYiLCJwcmludGYiLCJwcmludF9zIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfZW5kbGluZSIsInByZXJyX2VuZGxpbmUiLCJzcHJpbnRmIiwiZmFpbHdpdGhmIiwia3NwcmludGYiLCJhbGwiLCJjb21wYXJlIiwic2V4cF9vZl90IiwidG9fc3RyaW5nIiwidCIsImZsYWdfbmFtZSIsImVycm9yX3NvdXJjZV8wMjIiLCJlcnJvcl9zb3VyY2VfMDY3IiwiZXJyb3Jfc291cmNlXzA4OCIsImVycm9yX3NvdXJjZV8xMDQiLCJlcnJvcl9zb3VyY2VfMTE4IiwiZXJyb3Jfc291cmNlXzE0NSIsImVycm9yX3NvdXJjZV8xNzgiLCJlcnJvcl9zb3VyY2VfMjA2IiwiZXJyb3Jfc291cmNlXzIyMiIsImVycm9yX3NvdXJjZV8yMzYiLCJlcnJvcl9zb3VyY2VfMjYxIiwiZXJyb3Jfc291cmNlXzI5MCIsImVycm9yX3NvdXJjZV8zMjIiLCJlcnJvcl9zb3VyY2VfMzQ3IiwiZXJyb3Jfc291cmNlXzM3MiIsImVycm9yX3NvdXJjZV80MTEiLCJlcnJvcl9zb3VyY2VfNDU2IiwiZW51bWVyYXRlXzQ3NCIsImVudW1lcmF0ZV80NzUiLCJuYW1lcyIsIm1heWJlX21pc3NpbmdfcHJlZml4IiwibWF5YmVfbWlzc2luZ19zdWZmaXgiLCJtYXliZV9tb3JlX3N1ZmZpeCIsIm5hbWVzJDAiLCJlcnJvcl9zb3VyY2VfNDk5IiwiaW5kZW50YXRpb24iLCJzcGFjaW5nX2RvdCIsIm5hbWVzJDEiLCJlcnJvcl9zb3VyY2VfNTE3IiwibmFtZXMkMiIsImVycm9yX3NvdXJjZV81NDYiLCJuYW1lcyQzIiwiZXJyb3Jfc291cmNlXzU3NCIsImVycm9yX3NvdXJjZV82MDMiLCJ0X29mX3NleHAiLCJjb21wYXJlJDAiLCJhXzAwNiIsImJfMDA3IiwiYV8wMDYkMCIsImJfMDA3JDAiLCJhXzAwOCIsImJfMDA5IiwiYV8wMTAiLCJiXzAxMSIsImFfMDEyIiwiYl8wMTMiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsImFfMDE4IiwiYl8wMTkiLCJ0X29mX3NleHAkMCIsInNleHBfMDI0IiwidGFnXzAyNSIsInNleHBfYXJnc18wNDYiLCJhcmcwXzA0NyIsInJlczBfMDQ4Iiwic2V4cF9hcmdzXzA0MSIsImFyZzBfMDQyIiwicmVzMF8wNDMiLCJzZXhwX2FyZ3NfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsInNleHBfYXJnc18wMzYiLCJhcmcwXzAzNyIsInJlczBfMDM4Iiwic2V4cF9hcmdzXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQ5IiwicmVzMF8wNTAiLCJhcmcwXzA1MSIsInJlczBfMDUyIiwiYXJnMF8wNTMiLCJyZXMwXzA1NCIsImFyZzBfMDU1IiwicmVzMF8wNTYiLCJhcmcwXzA1NyIsInJlczBfMDU4Iiwic3RhYmxlX3dpdG5lc3MiLCJpbnZhcmlhbnQiLCJ0JDAiLCJ0JDEiLCJ0cyIsInRfb2Zfc2V4cCQxIiwic2V4cCIsInVzYWdlIiwidXNhZ2UkMCIsInVzYWdlJDEiLCJjb21wYXJlJDEiLCJhXzA1OSIsImJfMDYwIiwiYV8wNjEiLCJiXzA2MiIsImFfMDYzIiwiYl8wNjQiLCJ0X29mX3NleHAkMiIsInNleHBfMDY5IiwidGFnXzA3MCIsInNleHBfYXJnc18wNzEiLCJhcmcwXzA3MiIsInJlczBfMDczIiwic2V4cF9hcmdzXzA3NiIsImFyZzBfMDc3IiwicmVzMF8wNzgiLCJzZXhwX29mX3QkMSIsImFyZzBfMDc5IiwicmVzMF8wODAiLCJhcmcwXzA4MSIsInJlczBfMDgyIiwic3RhYmxlX3dpdG5lc3MkMCIsImNvbXBhcmUkMiIsImFfMDgzIiwiYl8wODQiLCJuIiwibiQwIiwiYV8wODUiLCJiXzA4NiIsInRfb2Zfc2V4cCQzIiwieF8wODkiLCJhbGlhc2VzIiwiZG9jIiwibmFtZSIsInNleHBfb2ZfdCQyIiwiYWxpYXNlc18wOTUiLCJkb2NfMDkzIiwibmFtZV8wOTEiLCJhcmdfMDk2IiwiYm5kc18wOTAiLCJhcmdfMDk0IiwiYm5kc18wOTAkMCIsImFyZ18wOTIiLCJibmRzXzA5MCQxIiwic3RhYmxlX3dpdG5lc3MkMSIsImNvbXBhcmUkMyIsImFfMDk3IiwiYl8wOTgiLCJhXzA5OSIsImJfMTAwIiwibiQxIiwiYV8xMDEiLCJiXzEwMiIsInRfb2Zfc2V4cCQ0IiwieF8xMDUiLCJmbGFncyIsImFub25zIiwicmVhZG1lIiwic3VtbWFyeSIsInNleHBfb2ZfdCQzIiwiZmxhZ3NfMTE1IiwiYW5vbnNfMTEzIiwicmVhZG1lXzEwOSIsInN1bW1hcnlfMTA3IiwiYXJnXzExNiIsImJuZHNfMTA2IiwiYXJnXzExNCIsImJuZHNfMTA2JDAiLCJ2XzExMCIsImFyZ18xMTIiLCJibmRfMTExIiwiYm5kc18xMDYkMSIsImFyZ18xMDgiLCJibmRzXzEwNiQyIiwic3RhYmxlX3dpdG5lc3MkMiIsInRfb2Zfc2V4cCQ1IiwieF8xMTkiLCJzZXhwX29mX3QkNCIsImZsYWdzXzEyOSIsInVzYWdlXzEyNyIsInJlYWRtZV8xMjMiLCJzdW1tYXJ5XzEyMSIsImFyZ18xMzAiLCJibmRzXzEyMCIsImFyZ18xMjgiLCJibmRzXzEyMCQwIiwidl8xMjQiLCJhcmdfMTI2IiwiYm5kXzEyNSIsImJuZHNfMTIwJDEiLCJhcmdfMTIyIiwiYm5kc18xMjAkMiIsInN0YWJsZV93aXRuZXNzJDMiLCJ0b19sYXRlc3QiLCJvZl9sYXRlc3QiLCJncmFtbWFyIiwiZ3JvdXAiLCJjb21wYXJlJDQiLCJjbXBfYSIsImFfMTMxIiwiYl8xMzIiLCJhXzEzMyIsImJfMTM0IiwiYV8xMzUiLCJiXzEzNiIsImFfMTM3IiwiYl8xMzgiLCJ0XzE0MCIsInRfMTM5IiwidF8xNDIiLCJ0XzE0MSIsInRfb2Zfc2V4cCQ2Iiwib2ZfYV8xNDMiLCJ4XzE1MSIsInNleHBfMTUwIiwiYXJnMV8xNDciLCJhcmcwXzE0NiIsInJlczBfMTQ4IiwicmVzMV8xNDkiLCJzdWJjb21tYW5kcyIsInNleHBfb2ZfdCQ1Iiwib2ZfYV8xNTIiLCJzdWJjb21tYW5kc18xNjAiLCJyZWFkbWVfMTU2Iiwic3VtbWFyeV8xNTQiLCJhcmdfMTYxIiwiYXJnMV8xNjMiLCJhcmcwXzE2MiIsInJlczBfMTY0IiwicmVzMV8xNjUiLCJibmRzXzE1MyIsInZfMTU3IiwiYXJnXzE1OSIsImJuZF8xNTgiLCJibmRzXzE1MyQwIiwiYXJnXzE1NSIsImJuZHNfMTUzJDEiLCJzdGFibGVfd2l0bmVzcyQ0IiwiYV9zdGFibGVfd2l0bmVzcyIsIm1hcCIsImYiLCJ0X29mX3NleHAkNyIsIm9mX2FfMTc2IiwieF8xODQiLCJzZXhwXzE4MyIsImFyZzFfMTgwIiwiYXJnMF8xNzkiLCJyZXMwXzE4MSIsInJlczFfMTgyIiwic2V4cF9vZl90JDYiLCJvZl9hXzE4NSIsInN1YmNvbW1hbmRzXzE5MyIsInJlYWRtZV8xODkiLCJzdW1tYXJ5XzE4NyIsImFyZ18xOTQiLCJhcmcxXzE5NiIsImFyZzBfMTk1IiwicmVzMF8xOTciLCJyZXMxXzE5OCIsImJuZHNfMTg2Iiwidl8xOTAiLCJhcmdfMTkyIiwiYm5kXzE5MSIsImJuZHNfMTg2JDAiLCJhcmdfMTg4IiwiYm5kc18xODYkMSIsIm1hcCQwIiwidG9fbGF0ZXN0JDAiLCJvZl9sYXRlc3QkMCIsImFic19wYXRoIiwiZGlyIiwicGF0aCIsImNvbXBhcmUkNSIsImFfMTk5IiwiYl8yMDAiLCJhXzIwMSIsImJfMjAyIiwibiQyIiwiYV8yMDMiLCJiXzIwNCIsInRfb2Zfc2V4cCQ4IiwieF8yMDciLCJjaGlsZF9zdWJjb21tYW5kIiwicGF0aF90b19leGUiLCJ3b3JraW5nX2RpciIsInNleHBfb2ZfdCQ3IiwiY2hpbGRfc3ViY29tbWFuZF8yMTkiLCJwYXRoX3RvX2V4ZV8yMTciLCJ3b3JraW5nX2Rpcl8yMTUiLCJyZWFkbWVfMjExIiwic3VtbWFyeV8yMDkiLCJhcmdfMjIwIiwiYm5kc18yMDgiLCJhcmdfMjE4IiwiYm5kc18yMDgkMCIsImFyZ18yMTYiLCJibmRzXzIwOCQxIiwidl8yMTIiLCJhcmdfMjE0IiwiYm5kXzIxMyIsImJuZHNfMjA4JDIiLCJhcmdfMjEwIiwiYm5kc18yMDgkMyIsInN0YWJsZV93aXRuZXNzJDUiLCJ0b19sYXRlc3QkMSIsIm9mX2xhdGVzdCQxIiwidF9vZl9zZXhwJDkiLCJ4XzIyMyIsInNleHBfb2ZfdCQ4IiwicGF0aF90b19leGVfMjMzIiwid29ya2luZ19kaXJfMjMxIiwicmVhZG1lXzIyNyIsInN1bW1hcnlfMjI1IiwiYXJnXzIzNCIsImJuZHNfMjI0IiwiYXJnXzIzMiIsImJuZHNfMjI0JDAiLCJ2XzIyOCIsImFyZ18yMzAiLCJibmRfMjI5IiwiYm5kc18yMjQkMSIsImFyZ18yMjYiLCJibmRzXzIyNCQyIiwic3RhYmxlX3dpdG5lc3MkNiIsInRvX3YzIiwib2ZfdjMiLCJ0b19sYXRlc3QkMiIsIm9mX2xhdGVzdCQyIiwidF9vZl9zZXhwJDEwIiwieF8yMzciLCJzZXhwX29mX3QkOSIsInBhdGhfdG9fZXhlXzI0NSIsInJlYWRtZV8yNDEiLCJzdW1tYXJ5XzIzOSIsImFyZ18yNDYiLCJibmRzXzIzOCIsInZfMjQyIiwiYXJnXzI0NCIsImJuZF8yNDMiLCJibmRzXzIzOCQwIiwiYXJnXzI0MCIsImJuZHNfMjM4JDEiLCJzdGFibGVfd2l0bmVzcyQ3IiwidG9fdjIiLCJvZl92MiIsInRvX2xhdGVzdCQzIiwib2ZfbGF0ZXN0JDMiLCJjb21wYXJlJDYiLCJhXzI0NyIsImJfMjQ4IiwiYV8yNDckMCIsImJfMjQ4JDAiLCJhXzI0OSIsImJfMjUwIiwiYV8yNTEiLCJiXzI1MiIsImFfMjUzIiwiYl8yNTQiLCJhXzI1NyIsImFfMjU1IiwiYl8yNTgiLCJiXzI1NiIsInRfb2Zfc2V4cCQxMSIsInNleHBfMjYzIiwidGFnXzI2NCIsInNleHBfYXJnc18yNzAiLCJhcmcwXzI3MSIsInJlczBfMjcyIiwic2V4cF9hcmdzXzI3NSIsImFyZzFfMjc3IiwiYXJnMF8yNzYiLCJyZXMwXzI3OCIsInJlczFfMjc5Iiwic2V4cF9hcmdzXzI2NSIsImFyZzBfMjY2IiwicmVzMF8yNjciLCJzZXhwX29mX3QkMTAiLCJhcmcwXzI4MCIsInJlczBfMjgxIiwiYXJnMF8yODIiLCJyZXMwXzI4MyIsImFyZzFfMjg1IiwiYXJnMF8yODQiLCJyZXMwXzI4NiIsInJlczFfMjg3Iiwic3RhYmxlX3dpdG5lc3MkOCIsInRfb2Zfc2V4cCQxMiIsInNleHBfMjkyIiwidGFnXzI5MyIsInNleHBfYXJnc18zMDkiLCJhcmcwXzMxMCIsInJlczBfMzExIiwic2V4cF9hcmdzXzI5OSIsImFyZzBfMzAwIiwicmVzMF8zMDEiLCJzZXhwX2FyZ3NfMzA0IiwiYXJnMF8zMDUiLCJyZXMwXzMwNiIsInNleHBfYXJnc18yOTQiLCJhcmcwXzI5NSIsInJlczBfMjk2Iiwic2V4cF9vZl90JDExIiwiYXJnMF8zMTIiLCJyZXMwXzMxMyIsImFyZzBfMzE0IiwicmVzMF8zMTUiLCJhcmcwXzMxNiIsInJlczBfMzE3IiwiYXJnMF8zMTgiLCJyZXMwXzMxOSIsInRfb2Zfc2V4cCQxMyIsInNleHBfMzI0IiwidGFnXzMyNSIsInNleHBfYXJnc18zMzEiLCJhcmcwXzMzMiIsInJlczBfMzMzIiwic2V4cF9hcmdzXzMzNiIsImFyZzBfMzM3IiwicmVzMF8zMzgiLCJzZXhwX2FyZ3NfMzI2IiwiYXJnMF8zMjciLCJyZXMwXzMyOCIsInNleHBfb2ZfdCQxMiIsImFyZzBfMzM5IiwicmVzMF8zNDAiLCJhcmcwXzM0MSIsInJlczBfMzQyIiwiYXJnMF8zNDMiLCJyZXMwXzM0NCIsInRvX2xhdGVzdCQ0IiwiYiIsImciLCJlIiwib2ZfbGF0ZXN0JDQiLCJ0aHVuayIsInRfb2Zfc2V4cCQxNCIsInNleHBfMzQ5IiwidGFnXzM1MCIsInNleHBfYXJnc18zNTYiLCJhcmcwXzM1NyIsInJlczBfMzU4Iiwic2V4cF9hcmdzXzM2MSIsImFyZzBfMzYyIiwicmVzMF8zNjMiLCJzZXhwX2FyZ3NfMzUxIiwiYXJnMF8zNTIiLCJyZXMwXzM1MyIsInNleHBfb2ZfdCQxMyIsImFyZzBfMzY0IiwicmVzMF8zNjUiLCJhcmcwXzM2NiIsInJlczBfMzY3IiwiYXJnMF8zNjgiLCJyZXMwXzM2OSIsInRvX2xhdGVzdCQ1Iiwib2ZfbGF0ZXN0JDUiLCJ0X29mX3NleHAkMTUiLCJzZXhwXzM3NCIsInRhZ18zNzUiLCJzZXhwX2FyZ3NfMzg2IiwiYXJnMF8zODciLCJyZXMwXzM4OCIsInNleHBfYXJnc18zODEiLCJhcmcwXzM4MiIsInJlczBfMzgzIiwic2V4cF9hcmdzXzM3NiIsImFyZzBfMzc3IiwicmVzMF8zNzgiLCJzZXhwX29mX3QkMTQiLCJhcmcwXzM4OSIsInJlczBfMzkwIiwiYXJnMF8zOTEiLCJyZXMwXzM5MiIsImFyZzBfMzkzIiwicmVzMF8zOTQiLCJ2MSIsInYwIiwidjIiLCJ2MyIsInYxJDAiLCJ2MiQwIiwidjMkMCIsIm9mX3ZlcnNpb25lZCIsImNvbXBhcmUkNyIsImFfMzk1IiwiYl8zOTYiLCJhXzM5NSQwIiwiYl8zOTYkMCIsImFfMzk3IiwiYl8zOTgiLCJhXzM5OSIsImJfNDAwIiwiYV80MDEiLCJiXzQwMiIsImFfNDAzIiwiYl80MDQiLCJhXzQwNSIsImJfNDA2IiwiYV80MDciLCJiXzQwOCIsInRfb2Zfc2V4cCQxNiIsInNleHBfNDEzIiwidGFnXzQxNCIsInNleHBfYXJnc180MzUiLCJhcmcwXzQzNiIsInJlczBfNDM3Iiwic2V4cF9hcmdzXzQzMCIsImFyZzBfNDMxIiwicmVzMF80MzIiLCJzZXhwX2FyZ3NfNDIwIiwiYXJnMF80MjEiLCJyZXMwXzQyMiIsInNleHBfYXJnc180MjUiLCJhcmcwXzQyNiIsInJlczBfNDI3Iiwic2V4cF9hcmdzXzQxNSIsImFyZzBfNDE2IiwicmVzMF80MTciLCJzZXhwX29mX3QkMTUiLCJhcmcwXzQzOCIsInJlczBfNDM5IiwiYXJnMF80NDAiLCJyZXMwXzQ0MSIsImFyZzBfNDQyIiwicmVzMF80NDMiLCJhcmcwXzQ0NCIsInJlczBfNDQ1IiwiYXJnMF80NDYiLCJyZXMwXzQ0NyIsImNvbXBhcmUkOCIsImFfNDQ4IiwiYl80NDkiLCJhXzQ1MCIsImJfNDUxIiwiYV80NTIiLCJiXzQ1MyIsInRfb2Zfc2V4cCQxNyIsInNleHBfNDU4IiwidGFnXzQ1OSIsInNleHBfYXJnc180NjAiLCJhcmcwXzQ2MSIsInJlczBfNDYyIiwic2V4cF9hcmdzXzQ2NSIsImFyZzBfNDY2IiwicmVzMF80NjciLCJzZXhwX29mX3QkMTYiLCJhcmcwXzQ2OCIsInJlczBfNDY5IiwiYXJnMF80NzAiLCJyZXMwXzQ3MSIsImNvbXBhcmUkOSIsImFfNDcyIiwiYl80NzMiLCJhY2MiLCJlbnVtZXJhdGVfNDc4IiwiZW51bWVyYXRlXzQ3OSIsImVudW1lcmF0ZV80NzciLCJlbnVtZXJhdGVfNDgwIiwiZW51bWVyYXRlXzQ3NiIsImFjYyQwIiwiZW51bWVyYXRlXzQ4MCQwIiwiYXRfbW9zdF9vbmNlIiwiciIsImF0X2xlYXN0X29uY2UiLCJhdF9tb3N0X29uY2UkMCIsInYiLCJhdF9sZWFzdF9vbmNlJDAiLCJtYWtlX2NyZWF0b3IiLCJhdF9sZWFzdF9vbmNlX2Z1biIsImF0X21vc3Rfb25jZV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJhdF9sZWFzdF9vbmNlX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJhdF9tb3N0X29uY2VfZ2VuIiwiY3JlYXRlIiwibWFwJDEiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJzZXhwX29mX3QkMTciLCJhdF9tb3N0X29uY2VfNDg0IiwiYXRfbGVhc3Rfb25jZV80ODIiLCJhcmdfNDg1IiwiYm5kc180ODEiLCJhcmdfNDgzIiwiYm5kc180ODEkMCIsInRvX2hlbHBfc3RyaW5nIiwiZGVzY3JpcHRpb24iLCJvZl9oZWxwX3N0cmluZyIsIm5hbWUkMCIsIm5hbWUkMSIsIm5hbWUkMiIsIm5hbWUkMyIsInhfNDg2IiwicyIsImZsYWdfbmFtZSQwIiwieF80ODciLCJjb21wYXJlJDEwIiwiYV80OTQiLCJiXzQ5NSIsImFfNDk2IiwiYl80OTciLCJhbGlhc2VzJDAiLCJkb2MkMCIsIm1ha2VfY3JlYXRvciQwIiwibmFtZV9mdW4iLCJkb2NfZnVuIiwiYWxpYXNlc19mdW4iLCJuYW1lX2dlbiIsImRvY19nZW4iLCJjb21waWxlX2FjYyQyIiwiYWxpYXNlc19nZW4iLCJjcmVhdGUkMCIsIm1hcCQzIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkNCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInRfb2Zfc2V4cCQxOCIsInhfNTAwIiwic2V4cF9vZl90JDE4IiwiYWxpYXNlc181MDYiLCJkb2NfNTA0IiwibmFtZV81MDIiLCJhcmdfNTA3IiwiYm5kc181MDEiLCJhcmdfNTA1IiwiYm5kc181MDEkMCIsImFyZ181MDMiLCJibmRzXzUwMSQxIiwicGFyc2VfbmFtZSIsIm51bV9vY2N1cnJlbmNlcyIsInJlcXVpcmVzX2FyZyIsImhlbHBfc2NyZWVuX2NvbXBhcmUiLCJhIiwic29ydCIsIndvcmRfd3JhcF9hbmRfc3RyaXAiLCJ0ZXh0Iiwid2lkdGgiLCJjaHVua3MiLCJ3b3JkcyIsIndvcmQiLCJsaW5lIiwibGluZXMiLCJsaW5lX2FuZF93b3JkIiwic3BhY2VzX3N0cmluZyIsInBhZF9zcGFjZXNfdG9fc3VmZml4IiwieCIsInNsYWNrIiwiaW5kZW50X2FuZF9uZXdsaW5lIiwiZG90X2luZGVudGF0aW9uX29mZnNldCIsImxoc19wYWQiLCJmbGFnIiwiZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyIsImRvY3VtZW50YXRpb24iLCJmbGFnX3dpZHRoIiwiZmxhZ19vbl9pdHNfb3duX2xpbmUiLCJ3cmFwcGVkX2RvY3VtZW50YXRpb24iLCJkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIiwiZG9jX3dyYXBwZWRfZmlyc3RfbGluZSIsIndyYXBwZWRfZG9jX2xpbmVzIiwicHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfIiwidG9fc3RyaW5nJDAiLCJsb29rdXBfZXhwYW5kIiwiYWxpc3QiLCJwcmVmaXgiLCJrZXlfdHlwZSIsImlzX2Rhc2giLCJhbGlzdCQwIiwiZGF0YSIsImtleSIsIm1hdGNoZXMiLCJjdXN0b21fcHJpbnRmXzUwOCIsImRhdGEkMCIsImtleSQwIiwibWF0Y2hpbmdfa2V5cyIsImN1c3RvbV9wcmludGZfNTA5IiwiY29tcGFyZSQxMSIsImFfNTEwIiwiYl81MTEiLCJhXzUxMiIsImJfNTEzIiwiYV81MTQiLCJiXzUxNSIsImZsYWdzJDAiLCJhbm9ucyQwIiwicmVhZG1lJDAiLCJzdW1tYXJ5JDAiLCJtYWtlX2NyZWF0b3IkMSIsInN1bW1hcnlfZnVuIiwicmVhZG1lX2Z1biIsImFub25zX2Z1biIsImZsYWdzX2Z1biIsInN1bW1hcnlfZ2VuIiwicmVhZG1lX2dlbiIsImFub25zX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJmbGFnc19nZW4iLCJjcmVhdGUkMSIsIm1hcCQ1IiwiaXRlciQzIiwiZm9sZCQzIiwibWFwX3BvbHkkMSIsImZvcl9hbGwkMyIsImV4aXN0cyQzIiwidG9fbGlzdCQzIiwiaXRlciQ0IiwiZm9sZCQ0IiwiZm9yX2FsbCQ0IiwiZXhpc3RzJDQiLCJ0b19saXN0JDQiLCJtYXAkNiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMSIsInRfb2Zfc2V4cCQxOSIsInhfNTE4Iiwic2V4cF9vZl90JDE5IiwiZmxhZ3NfNTI4IiwiYW5vbnNfNTI2IiwicmVhZG1lXzUyMiIsInN1bW1hcnlfNTIwIiwiYXJnXzUyOSIsImJuZHNfNTE5IiwiYXJnXzUyNyIsImJuZHNfNTE5JDAiLCJ2XzUyMyIsImFyZ181MjUiLCJibmRfNTI0IiwiYm5kc181MTkkMSIsImFyZ181MjEiLCJibmRzXzUxOSQyIiwiZmluZF9mbGFnIiwiZmxhZ19pbmZvIiwiY2hvaWNlcyIsImdldF91c2FnZSIsImNvbXBhcmUkMTIiLCJhXzUzMiIsImJfNTMzIiwiYV81MzQiLCJiXzUzNSIsImFfNTM2IiwiYl81MzciLCJhXzUzOCIsImJfNTM5IiwidF81NDEiLCJ0XzU0MCIsInRfNTQzIiwidF81NDIiLCJyZWFkbWUkMSIsInN1bW1hcnkkMSIsInN1YmNvbW1hbmRzJDAiLCJyZWFkbWUkMiIsInN1bW1hcnkkMiIsIm1ha2VfY3JlYXRvciQyIiwic3ViY29tbWFuZHNfZnVuIiwic3ViY29tbWFuZHNfZ2VuIiwiY3JlYXRlJDIiLCJtYXAkNyIsIml0ZXIkNSIsImZvbGQkNSIsIm1hcF9wb2x5JDIiLCJmb3JfYWxsJDUiLCJleGlzdHMkNSIsInRvX2xpc3QkNSIsIml0ZXIkNiIsImZvbGQkNiIsImZvcl9hbGwkNiIsImV4aXN0cyQ2IiwidG9fbGlzdCQ2IiwibWFwJDgiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDIiLCJ0X29mX3NleHAkMjAiLCJvZl9hXzU0NCIsInhfNTUyIiwic2V4cF81NTEiLCJhcmcxXzU0OCIsImFyZzBfNTQ3IiwicmVzMF81NDkiLCJyZXMxXzU1MCIsInNleHBfb2ZfdCQyMCIsIm9mX2FfNTUzIiwic3ViY29tbWFuZHNfNTYxIiwicmVhZG1lXzU1NyIsInN1bW1hcnlfNTU1IiwiYXJnMV81NjQiLCJhcmcwXzU2MyIsInJlczBfNTY1IiwicmVzMV81NjYiLCJhcmdfNTYyIiwiYm5kc181NTQiLCJ2XzU1OCIsImFyZ181NjAiLCJibmRfNTU5IiwiYm5kc181NTQkMCIsImFyZ181NTYiLCJibmRzXzU1NCQxIiwiZmluZF9zdWJjb21tYW5kIiwiY29tcGFyZSQxMyIsImFfNTY3IiwiYl81NjgiLCJhXzU2OSIsImJfNTcwIiwiYV81NzEiLCJiXzU3MiIsInJlYWRtZSQzIiwic3VtbWFyeSQzIiwiY2hpbGRfc3ViY29tbWFuZCQwIiwicGF0aF90b19leGUkMCIsIndvcmtpbmdfZGlyJDAiLCJyZWFkbWUkNCIsInN1bW1hcnkkNCIsIm1ha2VfY3JlYXRvciQzIiwid29ya2luZ19kaXJfZnVuIiwicGF0aF90b19leGVfZnVuIiwiY2hpbGRfc3ViY29tbWFuZF9mdW4iLCJ3b3JraW5nX2Rpcl9nZW4iLCJwYXRoX3RvX2V4ZV9nZW4iLCJjb21waWxlX2FjYyQ0IiwiY2hpbGRfc3ViY29tbWFuZF9nZW4iLCJjcmVhdGUkMyIsIm1hcCQ5IiwiaXRlciQ3IiwiZm9sZCQ3IiwibWFwX3BvbHkkMyIsImZvcl9hbGwkNyIsImV4aXN0cyQ3IiwidG9fbGlzdCQ3IiwiaXRlciQ4IiwiZm9sZCQ4IiwiZm9yX2FsbCQ4IiwiZXhpc3RzJDgiLCJ0b19saXN0JDgiLCJtYXAkMTAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDMiLCJ0X29mX3NleHAkMjEiLCJ4XzU3NSIsInNleHBfb2ZfdCQyMSIsImNoaWxkX3N1YmNvbW1hbmRfNTg3IiwicGF0aF90b19leGVfNTg1Iiwid29ya2luZ19kaXJfNTgzIiwicmVhZG1lXzU3OSIsInN1bW1hcnlfNTc3IiwiYXJnXzU4OCIsImJuZHNfNTc2IiwiYXJnXzU4NiIsImJuZHNfNTc2JDAiLCJhcmdfNTg0IiwiYm5kc181NzYkMSIsInZfNTgwIiwiYXJnXzU4MiIsImJuZF81ODEiLCJibmRzXzU3NiQyIiwiYXJnXzU3OCIsImJuZHNfNTc2JDMiLCJjb21wYXJlJDE0IiwiYV81ODkiLCJiXzU5MCIsImFfNTg5JDAiLCJiXzU5MCQwIiwiYV81OTEiLCJiXzU5MiIsImFfNTkzIiwiYl81OTQiLCJhXzU5NSIsImJfNTk2IiwiYV81OTkiLCJhXzU5NyIsImJfNjAwIiwiYl81OTgiLCJ0X29mX3NleHAkMjIiLCJzZXhwXzYwNSIsInRhZ182MDYiLCJzZXhwX2FyZ3NfNjEyIiwiYXJnMF82MTMiLCJyZXMwXzYxNCIsInNleHBfYXJnc182MTciLCJhcmcxXzYxOSIsImFyZzBfNjE4IiwicmVzMF82MjAiLCJyZXMxXzYyMSIsInNleHBfYXJnc182MDciLCJhcmcwXzYwOCIsInJlczBfNjA5Iiwic2V4cF9vZl90JDIyIiwiYXJnMF82MjIiLCJyZXMwXzYyMyIsImFyZzBfNjI0IiwicmVzMF82MjUiLCJhcmcxXzYyNyIsImFyZzBfNjI2IiwicmVzMF82MjgiLCJyZXMxXzYyOSIsImV4cGFuZGVkX3N1YmNvbW1hbmRzIiwiZXhwYW5kIiwic2V4cF9vZl90JDIzIiwiYXJnMF82MzAiLCJyZXMwXzYzMSIsImFyZzBfNjMyIiwicmVzMF82MzMiLCJhcmcwXzYzNCIsInJlczBfNjM1IiwiYXJnMF82MzYiLCJyZXMwXzYzNyIsImV4dHJhY3Rpb25fdmFyIiwiaSIsInN1cHBvcnRlZCIsInN1cHBvcnRlZF92ZXJzaW9ucyIsInRvX3ZlcnNpb25lZCIsImxhdGVzdCIsInZlcnNpb25fdG9fdXNlIiwiZnVsbHlfZm9yY2VkIiwiZ2V0X3N1bW1hcnkiLCJ2ZXJzaW9uX2xpc3QiLCJlbnVtZXJhdGVfMDA4IiwiZW51bWVyYXRlXzAwOSIsImFueSIsImV4YWN0bHlfb25jZSIsInJhaXNlX2luc3RlYWRfb2ZfZXhpdCIsInN0YXR1c18wMDIiLCJhcmdfMDAzIiwiZXhpdCIsInN0YXR1cyIsInVucGFyYWdyYXBocyIsInhzIiwiZGllIiwiZm10IiwibXNnIiwia2V5X2NyZWF0ZSIsIm11bHRpX2FkZCIsInNldF93aXRoX2RlZmF1bHQiLCJhcHBseSIsImVycl8xIiwiaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhIiwicmV0dXJuX25vX2FyZyIsInJldHVybl93aXRoX2FyZyIsImVycm9yIiwiaGFzX2FyZyIsImVyciIsInJlc3VsdCIsInJ1bl9hbmRfZXhpdCIsImVudiIsInBhcnQiLCJjb21wbGV0aW9ucyIsImV4dHJhX2RvYyIsInBhcnNlIiwiY29tcGxldGUiLCJvZl9zdHJpbmciLCJvZl9sYXp5Iiwic3RyIiwiZXh0cmFfZG9jJDAiLCJzdHJpbmciLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJzZXhwX2NvbnYiLCJvZl9zZXhwIiwib2ZfYWxpc3RfZXhuIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyQwIiwibGlzdF92YWx1ZXNfaW5faGVscCQwIiwiYXV0b19jb21wbGV0ZSIsImNhc2Vfc2Vuc2l0aXZlIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyIsImxpc3RfdmFsdWVzX2luX2hlbHAiLCJtYWtlIiwiY21wIiwiayIsImR1cGxpY2F0ZV9rZXlzIiwiUyIsInVuaXZfbWFwIiwic3VmZml4IiwidmFsdWVzIiwiYXJnIiwidiQwIiwidmFsaWRfYXJndW1lbnRzX2V4dHJhIiwiY29tcGxldGUkMCIsIm9mX21hcCIsImVudW1lcmF0ZWQiLCJFIiwiZW51bWVyYXRlZF9zZXhwYWJsZSIsImJvb2wiLCJjb21tYV9zZXBhcmF0ZWQiLCJhbGxvd19lbXB0eSIsInN0cmlwX3doaXRlc3BhY2UiLCJ1bmlxdWVfdmFsdWVzIiwic3RyaXAiLCJjb21wbGV0ZV9lbHQiLCJ0bCIsImhkIiwicHJlZml4ZXMiLCJzZWVuX2FscmVhZHkiLCJpc19hbGxvd2VkIiwiY2hvaWNlIiwiY2hvaWNlcyQwIiwic3RyaW5nJDAiLCJlbnVtZXJhdGVfMDEyIiwiZW51bWVyYXRlXzAxMyIsImVudW1lcmF0ZV8wMTEiLCJlbnVtZXJhdGVfMDE0IiwiZW51bWVyYXRlXzAxMCIsImVudW1lcmF0ZV8wMTQkMCIsInBhcnNlJDAiLCJhY3Rpb24iLCJhcmdfZG9jIiwiZG9jJDEiLCJhcmdfZG9jJDAiLCJjb25jYXQiLCJ3cmFwX2lmX29wdGlvbmFsIiwiaGVscCIsImFsaWduIiwiYV8wMjAiLCJiXzAyMSIsImFyZ19mbGFnIiwiYXJnX3R5cGUiLCJyZWFkIiwid3JpdGUiLCJ1cGRhdGUiLCJhcmckMCIsImVudiQwIiwibWFwX2ZsYWciLCJpbnB1dCIsIndyaXRlX29wdGlvbiIsInJlcXVpcmVkX3ZhbHVlIiwiZGVmYXVsdCQwIiwicmVxdWlyZWQiLCJvcHRpb25hbF93aXRoX2RlZmF1bHQiLCJvcHRpb25hbCIsInZhbHVlIiwibm9fYXJnX2dlbmVyYWwiLCJpc19yZXF1aXJlZCIsImtleV92YWx1ZSIsImRlcHJlY2F0ZWRfaG9vayIsImFjdGlvbiQwIiwibm9fYXJnIiwibm9fYXJnX3JlcXVpcmVkIiwibm9fYXJnX3JlZ2lzdGVyIiwibm9fYXJnX3NvbWUiLCJsaXN0ZWQiLCJ4XzAyMiIsInZhbHVlX2xpc3QiLCJsaXN0Iiwib25lX29yX21vcmVfYXNfcGFpciIsInhfMDIzIiwicmVzdCIsImZpcnN0IiwicSIsIm9uZV9vcl9tb3JlX2FzX2xpc3QiLCJlc2NhcGVfZ2VuZXJhbCIsInhfMDI0IiwiY21kX2xpbmUiLCJub19hcmdfYWJvcnQiLCJlc2NhcGUiLCJlc2NhcGVfd2l0aF9hdXRvY29tcGxldGUiLCJub19hcmckMCIsImhvb2siLCJlc2NhcGUkMCIsImVtcHR5JDAiLCJhcHBlbmQiLCJzdWJjb21tYW5kIiwicGFydHMiLCJwYXJ0c19leGVfYmFzZW5hbWUiLCJsZW5ndGgiLCJyZXBsYWNlX2ZpcnN0IiwiZnJvbSIsInRvIiwicGFydHMkMiIsInBhcnRzJDAiLCJwYXJ0cyQxIiwidG9fc3RyaW5nX2RvdHMiLCJsYXN0IiwiaXNfZW1wdHkiLCJpc19maXhlZF9hcml0eSIsIm90aGVycyIsInMkMCIsInplcm8iLCJjb25jYXQkMCIsImNkciIsImNhciIsInQyIiwidDEiLCJjZHIkMCIsImNhciQwIiwicGFyc2VfbW9yZSIsImZvcl9jb21wbGV0aW9uIiwidXBkYXRlX2VudiIsInBhcnNlciIsInBhY2tfZm9yX2NvbXBsZXRpb24iLCJwcyIsInN5bWJvbCQwIiwidF9sZWZ0IiwidF9yaWdodCIsImZfb3V0Y29tZSIsInhfb3V0Y29tZSIsIm1vcmUiLCJ0ciIsInRlc3QiLCJtb3JlJDAiLCJ0ZXN0JDAiLCJyZXR1cm4kMSIsInN5bWJvbF9tYXAiLCJmcm9tX2VudiIsInN5bWJvbF9tYXAkMCIsInN5bWJvbCQxIiwicmV0dXJuJDIiLCJyZXR1cm5fd2l0aF9hcmckMCIsIm9uZSIsImFub24iLCJzZXF1ZW5jZSIsImxvb3AiLCJjb25zdW1lIiwicGFja2VkIiwidCQyIiwidXBkYXRlX2VudiQwIiwicGFyc2VfZmxhZ3MiLCJwYXJzZXIkMCIsInQkMyIsImExIiwiYTIiLCJ0MyIsImEzIiwidDQiLCJhNCIsIm5vcm1hbGl6ZSIsInN0cmxlbiIsInNwZWNpYWxfY2hhcnMiLCJoYXNfc3BlY2lhbF9jaGFycyIsInN5bWJvbCQyIiwibWFwX2Fub25zIiwibWF5YmUiLCJtYXliZV93aXRoX2RlZmF1bHQiLCJzZXF1ZW5jZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCIsImFkX2hvYyIsInVzYWdlX2FyZyIsImFfMDI1IiwiYl8wMjYiLCJhXzAyNSQwIiwiYl8wMjYkMCIsImFfMDI5IiwiYV8wMjciLCJiXzAzMCIsImJfMDI4IiwiYV8wMzEiLCJiXzAzMiIsIm9mX2xpc3QiLCJhcmdzIiwieCQwIiwiZW5kc19pbl9jb21wbGV0ZSIsImV4dGVuZCIsInBhdGhfbGlzdCIsIm5vcm1hbGl6ZSQwIiwiZmxhZ19vcl9zdWJjb21tYW5kIiwiYyIsImN1c3RvbV9wcmludGZfMDMzIiwiY3VzdG9tX3ByaW50Zl8wMzQiLCJzdWJjb21tYW5kX2NtcF9mc3QiLCJzaGFwZSIsInBhdGhfa2V5IiwiYXJnc19rZXkiLCJoZWxwX2tleSIsInJ1bl9leG4iLCJleG4iLCJ2ZXJib3NlX29uX3BhcnNlX2Vycm9yIiwiZXhuX3N0ciIsInZlcmJvc2UiLCJlcnJvcl9tc2ciLCJydW4iLCJ3aGVuX3BhcnNpbmdfc3VjY2VlZHMiLCJjbWRsaW5lIiwiaGVscF90ZXh0Iiwib25fZmFpbHVyZSIsInBhcnNlciQxIiwiZW52JDEiLCJjbWRsaW5lJDAiLCJhcmdzJDAiLCJhcmckMSIsImFyZ19pc19mbGFnIiwiY21kbGluZSQxIiwibmFtZV9tYXRjaGluZyIsImFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIiwiYWxpYXMiLCJzMiIsInMxIiwiZmxhZyQwIiwiZmxhZyQxIiwiZiQxIiwiaW5mbyIsImNvbXBsZXRpbmciLCJjb21wIiwiZiQyIiwiZSQwIiwiY29tcCQwIiwiZiQzIiwiYXJnX2xpc3QiLCJjbWRsaW5lJDIiLCJlbnYkMiIsInBhcnNlX2ZsYWdzMiIsImVudiQzIiwicGFyc2VfZmxhZ3MkMCIsInBhcnQkMCIsIm1haW4iLCJmJDAiLCJ0JDQiLCJ0JDUiLCJ0JDYiLCJ0JDciLCJ3cmFwX3ZhbHVlIiwiYXBwbHkkMSIsImVtcHR5X3NwZWMiLCJtYXBfb3V0Y29tZSIsImxvb2t1cCIsImhlbHAkMCIsImludCQxIiwiY2hhciQxIiwiZmxvYXQkMSIsImJvb2wkMCIsInNleHAkMCIsInNleHBfY29udiQwIiwic3BlYyIsIm91dGNvbWUiLCJlc2NhcGVfYW5vbiIsImZpbmFsX2Fub24iLCJmdWxsX2ZsYWdfcmVxdWlyZWQiLCJtb2RlIiwiY2hlY2tfYXZhaWxhYmxlIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwic2V4cF9vZl9kZWZhdWx0IiwiZGVmYXVsdF9zZXhwIiwiY3VzdG9tX3ByaW50Zl8wMzUiLCJyZXR1cm4kMyIsIm9wdGlvbmFsX3RvX3JlcXVpcmVkIiwiYm90aCIsImFyZ19uYW1lcyIsImZsYWdfbmFtZXMiLCJhbm9uX25hbWVzIiwiYV8wMzYiLCJiXzAzNyIsImFfMDM4IiwiYl8wMzkiLCJhXzA0MCIsImJfMDQxIiwieF8wNDIiLCJjcmVhdGVfZXhuIiwicmVxdWlyZWRfYXJncyIsIm5hbWVzX3dpdGhfY29tbWFzIiwieF8wNDMiLCJsaXN0X3RvX3N0cmluZyIsImNob29zZV9vbmVfbm9uX29wdGlvbmFsIiwiaWZfbm90aGluZ19jaG9zZW4iLCJuZXdfYmVoYXZpb3IiLCJuYW1lX29mX3RoZV9ncm91cCIsImZsYWdfaW50ZXJuYWwiLCJleGNlcHQiLCJsIiwidHMkMCIsImFyZ19jb3VudGVyIiwibW9yZV90aGFuX29uZV9lcnJvciIsInBhc3NlZCIsImN1c3RvbV9wcmludGZfMDQ0IiwiZXJyb3JfbGlzdCIsInN1Y2Nlc3NfbGlzdCIsInZhbHVlJDAiLCJjdXN0b21fcHJpbnRmXzA0NSIsImNob29zZV9vbmUiLCJjaG9vc2Vfb25lX25vbl9vcHRpb25hbCQwIiwibHN0IiwiYW5kX2FyZ19uYW1lcyIsImFuZF9hcmdfbmFtZSIsInBhcnNlJDEiLCJwYXJhbXMiLCJzeW1ib2wkNiIsImYxIiwiZjIiLCJzeW1ib2wkNyIsInAyIiwic3ltYm9sJDgiLCJzdGVwIiwiY29uc3QkMCIsIndyYXAiLCJvZl9wYXJhbSIsInAiLCJ0b19wYXJhbSIsIm0iLCJzdHJpbmckMSIsImludCQyIiwiY2hhciQyIiwiZmxvYXQkMiIsImJvb2wkMSIsInNleHAkMSIsInNleHBfY29udiQxIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJnZW4iLCJmbGFnX3R5cGUiLCJjYWxsIiwic2V0Iiwic2V0X2Jvb2wiLCJyJDAiLCJyJDEiLCJyJDIiLCJyJDMiLCJmJDQiLCJzeW1zIiwic3ltIiwiZiQ1Iiwic2hhcGUkMCIsInN1YmNvbW1hbmRfdG9fc2hhcGUiLCJjb21wX2N3b3JkIiwic2hhcGUkMSIsInNleHBhYmxlX3NoYXBlIiwiYmFzZSIsImV4ZWMiLCJleHRlbmRfZXhuIiwibWVtIiwiYWRkIiwiZXh0ZW5kX2FsaXN0X2V4biIsInRleHRfc3VtbWFyeSIsImJhc2ljIiwiZmxhZ3MkMSIsImJhc2UkMCIsImJhc2ljX3NwZWMiLCJzdWJzX2tleSIsImxhenlfZ3JvdXAiLCJwcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyIiwiYm9keSIsInAkMCIsInAkMSIsInAkMiIsIm9mX2xhenkkMCIsInByb3h5X29mX3NleHBhYmxlIiwic2V4cGFibGUiLCJwYXRoX3RvX3N1YmNvbW1hbmQiLCJraW5kIiwia2luZF9vZl9zZXhwYWJsZSIsInBhdGhfdG9fc3ViY29tbWFuZCQwIiwicHJveHkiLCJwcmludF92ZXJzaW9uIiwidmVyc2lvbiIsInByaW50X2J1aWxkX2luZm8iLCJidWlsZF9pbmZvIiwiY29tbWFuZCIsInZlcnNpb25fZmxhZyIsImJ1aWxkX2luZm9fZmxhZyIsImFkZCQwIiwidW52ZXJzaW9uZWQiLCJiYXNlJDEiLCJub3JtYWxpemVfdmVyc2lvbl9saW5lcyIsImRlZmF1bHRfdmVyc2lvbiIsImRlZmF1bHRfYnVpbGRfaW5mbyIsInJlcHJpbnRfYnVpbGRfaW5mbyIsInRvX3NleHAiLCJ4JDEiLCJwYXRoJDAiLCJnZXRfZmxhZ19uYW1lcyIsImhlbHBfcmVjdXJzaXZlIiwiY21kIiwid2l0aF9mbGFncyIsImV4cGFuZF9kb3RzIiwiaGVscF9yZWN1cnNpdmVfcmVjIiwiY21kJDAiLCJuZXdfcyIsImJhc2VfaGVscCIsImRpc3BsYXlfaGVscF9mbGFncyIsImgiLCJwYXRoJDEiLCJiYXNpYyQwIiwicGFyYW0iLCJiYXNpY19vcl9lcnJvciIsIndvcmRfd3JhcCIsInRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSIsImdldHBpZCIsImNsb3NlIiwiaW5fY2hhbm5lbF9vZl9kZXNjciIsIndhaXQiLCJnZXRlbnZfYW5kX2NsZWFyIiwidmFyJDAiLCJvZl9leHRlcm5hbCIsImhlbHBfc2V4cCIsInByb2ciLCJjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHIiLCJlbnZfdmFyIiwiYXJndjAiLCJwcm9nX3NlYXJjaF9wYXRoIiwibGlzdCQwIiwibGlzdCQxIiwicHJvY2Vzc19pbmZvIiwic3RhcnRfcmVhZGluZyIsImRlc2NyIiwib3V0cHV0IiwidGhyZWFkIiwib3V0cHV0JDAiLCJmaW5pc2hfc3Rkb3V0IiwiZmluaXNoX3N0ZGVyciIsInN0ZGVyciIsInN0ZG91dCIsImV4biQwIiwic2hhcGVfb2ZfcHJveHkiLCJzaGFwZV9vZl9wcm94eV9raW5kIiwic2hhcGVfb2ZfZXhlIiwic2hhcGUkMiIsImdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IiwiZm9ybWF0X2xpc3QiLCJoZWxwX2Zvcl9zaGFwZSIsInJlY3Vyc2l2ZSIsInN0cmluZ19vZl9wYXRoIiwiZm10JDAiLCJmaWx0ZXJlZF9zdWJjb21tYW5kcyIsImxvb3AkMCIsImFkZF9oZWxwX3N1YmNvbW1hbmRzIiwiY21kX29wdCIsInN1YnMiLCJwb3NzaWJseV9leHBhbmRlZF9uYW1lIiwicGF0aCQyIiwicGF0aCQzIiwibWF5YmVfYXBwbHlfZXh0ZW5kIiwiZXh0ZW5kJDAiLCJkaXNwYXRjaCIsIm1heWJlX25ld19jb21wX2N3b3JkIiwiY29tcGxldGVfc3ViY29tbWFuZHMiLCJhcmdzJDEiLCJkaWVfc2hvd2luZ19oZWxwIiwiYXJncyQyIiwibWF5YmVfbmV3X2NvbXBfY3dvcmQkMCIsIm1heWJlX25ld19jb21wX2N3b3JkJDEiLCJyZXNvbHZlIiwic3ViIiwic3VicyQwIiwiYm9keSQwIiwidG9fb3V0cHV0IiwicmVzdF9vZl9yZXN0IiwiZmlyc3Rfb2ZfcmVzdCIsImFyZ3MkMyIsIm5ld192YWx1ZSQwIiwibmV3X3ZhbHVlIiwicnVuJDAiLCJhcmd2IiwiYnVpbGRfaW5mbyQwIiwidmVyc2lvbiQwIiwic3VwcG9ydGVkX3ZlcnNpb25zJDAiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMSIsInBhdGhfdG9fc3ViY29tbWFuZCQyIiwiZm5hbWUiLCJhcmd2XzAiLCJjb21wX2N3b3JkJDAiLCJkZXByZWNhdGVkX3J1biIsImlzX2hlbHAiLCJpc19oZWxwX3JlYyIsImlzX2hlbHBfcmVjX2ZsYWdzIiwiaXNfZXhwYW5kX2RvdHMiLCJwYXRoX3N0cmluZ3MiLCJhcmdzJDQiLCJzZXhwX29mX3QiLCJvZl9hXzAwMSIsImNyZWF0ZSIsInYiLCJjcmVhdGVfZXhuIiwidmFsdWUiLCJ0IiwiYnl0ZXNfcGVyX3dvcmQiLCJieXRlcyIsInBhc3MiLCJmYWlscyIsIm1lc3NhZ2UiLCJhIiwic2V4cF9vZl9hIiwiZmFpbCIsImZhaWxmIiwiZm9ybWF0IiwiZmFpbF9zIiwic2V4cCIsImNvbWJpbmUiLCJ0MSIsInQyIiwib2ZfbGlzdCIsIm5hbWUiLCJ0IiwiZXJyb3IiLCJwYXRoIiwibmFtZV9saXN0IiwibiIsImwiLCJmYWlsX2ZuIiwicGFzc19ib29sIiwicGFzc191bml0IiwicHJvdGVjdCIsImYiLCJ2IiwiZXhuJDAiLCJleG4iLCJ0cnlfd2l0aCIsInBhdGhfc3RyaW5nIiwiZXJyb3JzIiwicmVzdWx0IiwieF8wMDUiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsIm1heWJlX3JhaXNlIiwidmFsaWRfb3JfZXJyb3IiLCJjaGVjayIsIngiLCJmaWVsZF9kaXJlY3QiLCJmbGQiLCJyZWNvcmQiLCJmaWVsZCIsImZpZWxkX2ZvbGRlciIsImFjYyIsImZpZWxkX2RpcmVjdF9mb2xkZXIiLCJhbGwiLCJjaGVja3MiLCJjaGVja3MkMCIsImVycnMiLCJjaGVja3MkMSIsImVyciIsImVycnMkMCIsIm9mX3Jlc3VsdCIsIm9mX2Vycm9yIiwiYm9vbHRlc3QiLCJpZl9mYWxzZSIsInBhaXIiLCJmc3QiLCJzbmQiLCJzbmRfdmFsdWUiLCJmc3RfdmFsdWUiLCJsaXN0X2luZGV4ZWQiLCJsaXN0IiwiaSIsImVsIiwiZXh0cmFjdF9uYW1lIiwiYWxpc3QiLCJsaXN0JDAiLCJrZXkiLCJmaXJzdF9mYWlsdXJlIiwib2ZfZXJyb3Jfb3B0IiwiYm91bmRlZCIsImxvd2VyIiwidXBwZXIiLCJjb21wYXJlIiwiaW5jbCIsImV4Y2wiLCJpbmNsJDAiLCJleGNsJDAiLCJzeW1ib2wiLCJuYW1lIiwic2V4cF9vZl9iaWdzdHJpbmciLCJiaWdzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2ZfbWF0IiwibWF0X29mX3NleHAiLCJzZXhwX29mX3ZlYyIsInZlY19vZl9zZXhwIiwic2V4cF9vZl9vcGFxdWUiLCJvcGFxdWVfb2Zfc2V4cCIsInNleHBfb2ZfcGFpciIsInBhaXJfb2Zfc2V4cCIsIm9mX3NleHBfZXJyb3IiLCJvZl9zZXhwX2Vycm9yX2V4biIsImdyb3VwIiwiYmluX3NoYXBlX3NleHBfb3BhcXVlIiwiYSIsImJpbl9zaXplX3NleHBfb3BhcXVlIiwic2l6ZV9vZl9hIiwiYmluX3dyaXRlX3NleHBfb3BhcXVlIiwid3JpdGVfYSIsImJpbl93cml0ZXJfc2V4cF9vcGFxdWUiLCJiaW5fd3JpdGVyX2EiLCJ2IiwiYmluX3JlYWRfc2V4cF9vcGFxdWUiLCJvZl9hIiwiYnVmIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF9zZXhwX29wYXF1ZSQwIiwiYmluX3JlYWRlcl9zZXhwX29wYXF1ZSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fc2V4cF9vcGFxdWUiLCJiaW5fYSIsImNvbXBhcmVfc2V4cF9vcGFxdWUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJoYXNoX2ZvbGRfc2V4cF9vcGFxdWUiLCJoYXNoX2ZvbGRfYSIsImhzdiIsImFyZyIsInR5cGVuYW1lX29mX3NleHBfb3BhcXVlIiwidHlwZXJlcF9vZl9zZXhwX29wYXF1ZSIsIm5hbWVfb2Zfc2V4cF9vcGFxdWUiLCJ0eXBlbmFtZV9vZl90dXBsZTUiLCJ0eXBlbmFtZV9vZl90dXBsZTQiLCJ0eXBlbmFtZV9vZl90dXBsZTMiLCJ0eXBlbmFtZV9vZl90dXBsZTIiLCJ0eXBlbmFtZV9vZl90dXBsZTAiLCJ0eXBlbmFtZV9vZl9mdW5jdGlvbiIsInR5cGVuYW1lX29mX3JlZiIsInR5cGVuYW1lX29mX2xhenlfdCIsInR5cGVuYW1lX29mX2FycmF5IiwidHlwZW5hbWVfb2ZfbGlzdCIsInR5cGVuYW1lX29mX29wdGlvbiIsInR5cGVuYW1lX29mX3VuaXQiLCJ0eXBlbmFtZV9vZl9ib29sIiwidHlwZW5hbWVfb2ZfYnl0ZXMiLCJ0eXBlbmFtZV9vZl9zdHJpbmciLCJ0eXBlbmFtZV9vZl9mbG9hdCIsInR5cGVuYW1lX29mX2NoYXIiLCJ0eXBlbmFtZV9vZl9pbnQ2MyIsInR5cGVuYW1lX29mX25hdGl2ZWludCIsInR5cGVuYW1lX29mX2ludDY0IiwidHlwZW5hbWVfb2ZfaW50MzIiLCJ0eXBlbmFtZV9vZl9pbnQiLCJ0eXBlcmVwX29mX3R1cGxlNSIsInR5cGVyZXBfb2ZfdHVwbGU0IiwidHlwZXJlcF9vZl90dXBsZTMiLCJ0eXBlcmVwX29mX3R1cGxlMiIsInR5cGVyZXBfb2ZfdHVwbGUwIiwidHlwZXJlcF9vZl9mdW5jdGlvbiIsInR5cGVyZXBfb2ZfcmVmIiwidHlwZXJlcF9vZl9sYXp5X3QiLCJ0eXBlcmVwX29mX2FycmF5IiwidHlwZXJlcF9vZl9saXN0IiwidHlwZXJlcF9vZl9vcHRpb24iLCJ2YWx1ZV90dXBsZTAiLCJ0eXBlcmVwX29mX3VuaXQiLCJ0eXBlcmVwX29mX2Jvb2wiLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9jaGFyIiwidHlwZXJlcF9vZl9pbnQ2MyIsInR5cGVyZXBfb2ZfbmF0aXZlaW50IiwidHlwZXJlcF9vZl9pbnQ2NCIsInR5cGVyZXBfb2ZfaW50MzIiLCJ0eXBlcmVwX29mX2ludCIsIndpdGhfcmV0dXJuIiwiYW1fcnVubmluZ190ZXN0IiwidF9vZl9zZXhwIiwic2V4cCIsInMiLCJleG4kMCIsImV4biIsInNleHBfb2ZfdCIsInQiLCJhX29mX3NleHAiLCJzZXhwX29mX2EiLCJiX29mX3NleHAiLCJzZXhwX29mX2IiLCJjX29mX3NleHAiLCJzZXhwX29mX2MiLCJ0X3NleHBfZ3JhbW1hciIsIm9mX3N0cmluZyIsIngiLCJ0b19zdHJpbmciLCJ0b19iaW5hYmxlIiwib2ZfYmluYWJsZSIsImNhbGxlcl9pZGVudGl0eSIsImJpbl9zaGFwZV90IiwiYmluX3NpemVfdCIsInYxIiwidjEkMCIsImJpbl93cml0ZV90IiwicG9zIiwicG9zJDAiLCJwb3MkMSIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJhcmdfMSIsImFyZ18xJDAiLCJ4JDAiLCJvZl9iaWdzdHJpbmciLCJtIiwiYmlnc3RyaW5nIiwiYmlnc3RyaW5nX2xlbmd0aCIsInRvX2JpZ3N0cmluZyIsInByZWZpeF93aXRoX2xlbmd0aCIsInRfbGVuZ3RoIiwiZXByaW50ZiIsImZwcmludGYiLCJrZnByaW50ZiIsInByaW50ZiIsImV4aXRmIiwiZm10IiwiY29sbGVjdF90b19zdHJpbmciLCJmIiwiZG9uZSIsIm91dHB1dCIsImVyciQzIiwiZXJyJDIiLCJlcnIkMSIsImVyciQwIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNCIsImVycm9yX3NvdXJjZV8wMDkiLCJuYW1lJDAiLCJlcnJvcl9zb3VyY2VfMDE4IiwiZXJyb3Jfc291cmNlXzAyMCIsIm5hbWUkMSIsImVycm9yX3NvdXJjZV8wMzMiLCJlcnJvcl9zb3VyY2VfMDM1IiwibmFtZSQyIiwiZXJyb3Jfc291cmNlXzA1MSIsImVycm9yX3NvdXJjZV8wNTMiLCJuYW1lJDMiLCJlcnJvcl9zb3VyY2VfMDY0IiwibmFtZSQ0IiwiZXJyb3Jfc291cmNlXzA4MiIsImVycm9yX3NvdXJjZV8wODQiLCJuYW1lJDUiLCJiaW5fd3JpdGVyX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsImNvbXBhcmUiLCJoYXNoX2ZvbGRfdCIsImhhc2giLCJ4XzAwNSIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wMDYiLCJiXzAwNyIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInhfMDEwIiwic2V4cF9vZl90JDAiLCJncm91cCQxIiwiYmluX3NoYXBlX3QkMSIsImJpbl9zaXplX3QkMSIsImJpbl93cml0ZV90JDEiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl9yZWFkX3QkMyIsImJpbl9yZWFkX3QkNCIsImJpbl9yZWFkZXJfdCQxIiwiYmluX3QkMSIsImNvbXBhcmUkMSIsImFfMDExIiwiYl8wMTIiLCJoYXNoX2ZvbGRfdCQxIiwiaGFzaCQxIiwidF9vZl9zZXhwJDEiLCJzZXhwXzAxNiIsImF0b21fMDE0IiwiYXRvbV8wMTQkMCIsInRfb2Zfc2V4cCQyIiwic2V4cF8wMTkiLCJzZXhwX29mX3QkMSIsImdyb3VwJDIiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImJpbl93cml0ZV90JDIiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMDIxIiwiYl8wMjIiLCJyaWdodF8wMjQiLCJsZWZ0XzAyMyIsImhhc2hfZm9sZF90JDIiLCJoc3YkMCIsImhhc2gkMiIsInRfb2Zfc2V4cCQzIiwic2V4cF8wMjgiLCJhdG9tXzAyNiIsInNleHBfYXJnc18wMjkiLCJhdG9tXzAyNiQwIiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsInRfb2Zfc2V4cCQ0Iiwic2V4cF8wMzQiLCJzZXhwX29mX3QkMiIsInZfMDM2IiwiZ3JvdXAkMyIsImJpbl9zaGFwZV90JDMiLCJiaW5fc2l6ZV90JDMiLCJiaW5fd3JpdGVfdCQzIiwiYmluX3dyaXRlcl90JDMiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsImJpbl90JDMiLCJjb21wYXJlJDMiLCJhXzAzNyIsImJfMDM4IiwicmlnaHRfMDQyIiwibGVmdF8wNDEiLCJoYXNoX2ZvbGRfdCQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDUiLCJzZXhwXzA1MiIsImF0b21fMDQ0Iiwic2V4cF9hcmdzXzA0NyIsImF0b21fMDQ0JDAiLCJhcmcwXzA0OSIsInJlczBfMDUwIiwic2V4cF9vZl90JDMiLCJ2XzA1NSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfdCQ0IiwiYmluX3NpemVfdCQ0IiwiYmluX3dyaXRlX3QkNCIsImJpbl93cml0ZXJfdCQ0IiwiYmluX3JlYWRfdCQ5IiwiYmluX3JlYWRfdCQxMCIsImJpbl9yZWFkZXJfdCQ0IiwiYmluX3QkNCIsImNvbXBhcmUkNCIsImFfMDU2IiwiYl8wNTciLCJoYXNoX2ZvbGRfdCQ0IiwiaGFzaCQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzA2MyIsInNleHBfb2ZfdCQ0Iiwidl8wNjUiLCJncm91cCQ1IiwiYmluX3JlYWRfdCQxMSIsImZhaWx3aXRoZiIsImFfMDg4IiwiYl8wODkiLCJhXzA5MCIsImJfMDkxIiwieF8wOTMiLCJ4XzA5NCIsInN0YWJsZV93aXRuZXNzIiwiZ2xvYmFsaXplIiwiZ3JvdXAkNiIsImJpbl9zaGFwZV9ub2JvZHkiLCJiaW5fc2l6ZV9ub2JvZHkiLCJiaW5fd3JpdGVfbm9ib2R5IiwiYmluX3dyaXRlcl9ub2JvZHkiLCJiaW5fcmVhZF9ub2JvZHkiLCJiaW5fcmVhZF9ub2JvZHkkMCIsImJpbl9yZWFkZXJfbm9ib2R5IiwiYmluX25vYm9keSIsImNvbXBhcmVfbm9ib2R5IiwiaGFzaF9mb2xkX25vYm9keSIsImZ1bmMiLCJoYXNoX25vYm9keSIsIm5vYm9keV9vZl9zZXhwIiwic2V4cF9vZl9ub2JvZHkiLCJzdGFibGVfd2l0bmVzc19ub2JvZHkiLCJncm91cCQ3IiwiYmluX3NoYXBlX21lIiwiYmluX3NpemVfbWUiLCJiaW5fd3JpdGVfbWUiLCJiaW5fd3JpdGVyX21lIiwiYmluX3JlYWRfbWUiLCJiaW5fcmVhZF9tZSQwIiwiYmluX3JlYWRlcl9tZSIsImJpbl9tZSIsImNvbXBhcmVfbWUiLCJoYXNoX2ZvbGRfbWUiLCJmdW5jJDAiLCJoYXNoX21lIiwibWVfb2Zfc2V4cCIsInNleHBfb2ZfbWUiLCJzdGFibGVfd2l0bmVzc19tZSIsImdyb3VwJDgiLCJiaW5fc2hhcGVfdCQ1IiwiYmluX3NpemVfdCQ1IiwiYmluX3dyaXRlX3QkNSIsImJpbl93cml0ZXJfdCQ1IiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkX3QkMTMiLCJiaW5fcmVhZGVyX3QkNSIsImJpbl90JDUiLCJjb21wYXJlJDUiLCJhXzEwMSIsImJfMTAyIiwiYV8xMDMiLCJiXzEwNCIsInJpZ2h0XzA3MiIsImxlZnRfMDcxIiwiaGFzaF9mb2xkX3Blcm1zIiwicGVybXNfb2Zfc2V4cCIsIm9mX2FfMTA3IiwieF8xMDkiLCJzZXhwXzA3NCIsImF0b21fMDc1Iiwic2V4cF9hcmdzXzA3OCIsImF0b21fMDc1JDAiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwic2V4cF9vZl9wZXJtcyIsIm9mX2FfMTEwIiwieF8xMTEiLCJ2XzA4NyIsImdsb2JhbGl6ZV9wZXJtcyIsImdyb3VwJDkiLCJiaW5fc2hhcGVfcmVhZCIsImJpbl9zaXplX3JlYWQiLCJiaW5fd3JpdGVfcmVhZCIsImJpbl93cml0ZXJfcmVhZCIsImJpbl9yZWFkX3JlYWQiLCJiaW5fcmVhZF9yZWFkJDAiLCJiaW5fcmVhZGVyX3JlYWQiLCJiaW5fcmVhZCIsImNvbXBhcmVfcmVhZCIsImdsb2JhbGl6ZV9yZWFkIiwiaGFzaF9mb2xkX3JlYWQiLCJmdW5jJDEiLCJoYXNoX3JlYWQiLCJyZWFkX29mX3NleHAiLCJzZXhwX29mX3JlYWQiLCJzdGFibGVfd2l0bmVzc19yZWFkIiwiY29tcGFyZV93cml0ZSIsImhhc2hfZm9sZF93cml0ZSIsImZ1bmMkMiIsImhhc2hfd3JpdGUiLCJnbG9iYWxpemVfd3JpdGUiLCJ3cml0ZV9vZl9zZXhwIiwic2V4cF9vZl93cml0ZSIsInN0YWJsZV93aXRuZXNzX3dyaXRlIiwiZ3JvdXAkMTAiLCJiaW5fc2hhcGVfaW1tdXRhYmxlIiwiYmluX3NpemVfaW1tdXRhYmxlIiwiYmluX3dyaXRlX2ltbXV0YWJsZSIsImJpbl93cml0ZXJfaW1tdXRhYmxlIiwiYmluX3JlYWRfaW1tdXRhYmxlIiwiYmluX3JlYWRfaW1tdXRhYmxlJDAiLCJiaW5fcmVhZGVyX2ltbXV0YWJsZSIsImJpbl9pbW11dGFibGUiLCJjb21wYXJlX2ltbXV0YWJsZSIsImdsb2JhbGl6ZV9pbW11dGFibGUiLCJoYXNoX2ZvbGRfaW1tdXRhYmxlIiwiZnVuYyQzIiwiaGFzaF9pbW11dGFibGUiLCJpbW11dGFibGVfb2Zfc2V4cCIsInNleHBfb2ZfaW1tdXRhYmxlIiwic3RhYmxlX3dpdG5lc3NfaW1tdXRhYmxlIiwiZ3JvdXAkMTEiLCJiaW5fc2hhcGVfcmVhZF93cml0ZSIsImJpbl9zaXplX3JlYWRfd3JpdGUiLCJiaW5fd3JpdGVfcmVhZF93cml0ZSIsImJpbl93cml0ZXJfcmVhZF93cml0ZSIsImJpbl9yZWFkX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF9yZWFkX3dyaXRlJDAiLCJiaW5fcmVhZGVyX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF93cml0ZSIsImNvbXBhcmVfcmVhZF93cml0ZSIsImdsb2JhbGl6ZV9yZWFkX3dyaXRlIiwiaGFzaF9mb2xkX3JlYWRfd3JpdGUiLCJmdW5jJDQiLCJoYXNoX3JlYWRfd3JpdGUiLCJyZWFkX3dyaXRlX29mX3NleHAiLCJzZXhwX29mX3JlYWRfd3JpdGUiLCJzdGFibGVfd2l0bmVzc19yZWFkX3dyaXRlIiwiZ3JvdXAkMTIiLCJiaW5fc2hhcGVfcGVybXMiLCJiaW5fc2l6ZV9wZXJtcyIsImJpbl93cml0ZV9wZXJtcyIsImJpbl93cml0ZXJfcGVybXMiLCJiaW5fcmVhZF9wZXJtcyIsImJpbl9yZWFkX3Blcm1zJDAiLCJiaW5fcmVhZGVyX3Blcm1zIiwiYmluX3Blcm1zIiwiY29tcGFyZV9wZXJtcyIsImFfMTI4IiwiYl8xMjkiLCJhXzEzMCIsImJfMTMxIiwic3RhYmxlX3dpdG5lc3NfcGVybXMiLCJhX3N0YWJsZV93aXRuZXNzIiwibWFrZSIsImVycm9yX3NvdXJjZV8wMTEiLCJzaXplX29mX2YiLCJzaXplX29mX3MiLCJ3cml0ZV9mIiwid3JpdGVfcyIsImJpbl93cml0ZXJfZiIsImJpbl93cml0ZXJfcyIsIm9mX2YiLCJvZl9zIiwiYmluX3JlYWRlcl9mIiwiYmluX3JlYWRlcl9zIiwiYmluX2YiLCJiaW5fcyIsImNtcF9mIiwiY21wX3MiLCJhXzAwMyIsImJfMDA0IiwiYV8wMDUiLCJiXzAwNiIsIm9mX2ZfMDA3Iiwib2Zfc18wMDgiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3Iiwib2ZfZl8wMjUiLCJvZl9zXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJhcmcwXzAyOSIsInJlczBfMDMwIiwidHlwZW5hbWVfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsIm5hbWVfb2ZfdCIsInYwIiwidGFnMCIsInRhZzEiLCJ0eXBlbmFtZSIsInRhZ3MiLCJ2YWx1ZSIsInYwJDAiLCJmX3N0YWJsZV93aXRuZXNzIiwic19zdGFibGVfd2l0bmVzcyIsIm1hcCIsImYxIiwiZjIiLCJ4MSIsIngyIiwiY21wX2IiLCJhXzAzNiIsImJfMDM3IiwiYV8wMzgiLCJiXzAzOSIsImFfMDQwIiwiYl8wNDEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwibmFtZXMiLCJ2NCIsInYzIiwidjIiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwicG9zJDIiLCJ2X3Bvc19mbmFtZSIsInZfcG9zX2xudW0iLCJ2X3Bvc19ib2wiLCJ2X3Bvc19jbnVtIiwibiIsIm4kMCIsIm4kMSIsInBvc19jbnVtIiwiciIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInBvc19jbnVtJDAiLCJwb3NfYm9sJDAiLCJwb3NfbG51bSQwIiwicG9zX2ZuYW1lJDAiLCJtYWtlX2NyZWF0b3IiLCJwb3NfZm5hbWVfZnVuIiwicG9zX2xudW1fZnVuIiwicG9zX2JvbF9mdW4iLCJwb3NfY251bV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJwb3NfZm5hbWVfZ2VuIiwiY29tcGlsZV9hY2MkMSIsInBvc19sbnVtX2dlbiIsImNvbXBpbGVfYWNjJDIiLCJwb3NfYm9sX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJwb3NfY251bV9nZW4iLCJhY2MiLCJjcmVhdGUiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJoc3YkMSIsImhzdiQyIiwicG9zX2NudW1fMDEzIiwicG9zX2JvbF8wMTEiLCJwb3NfbG51bV8wMDkiLCJwb3NfZm5hbWVfMDA3IiwiYXJnXzAxNCIsImJuZHNfMDA2IiwiYXJnXzAxMiIsImJuZHNfMDA2JDAiLCJhcmdfMDEwIiwiYm5kc18wMDYkMSIsImFyZ18wMDgiLCJibmRzXzAwNiQyIiwiYTAiLCJhMCQwIiwic3RhYmxlX3dpdG5lc3MkMCIsInN0YWJsZV93aXRuZXNzX2NoZWNrc19mb3JfdCIsInYxJDEiLCJ2MSQyIiwidjEkMyIsInYyJDAiLCJ2MSQ0IiwidjMkMCIsInYyJDEiLCJ2MSQ1Iiwic2l6ZSQyIiwic2l6ZSQzIiwidjIkMiIsInYxJDYiLCJzaXplJDQiLCJ2MiQzIiwidjEkNyIsInNpemUkNSIsInBvcyQzIiwicG9zJDQiLCJwb3MkNSIsInBvcyQ2IiwicG9zJDciLCJwb3MkOCIsInBvcyQ5IiwicG9zJDEwIiwicG9zJDExIiwicG9zJDEyIiwicG9zJDEzIiwicG9zJDE0IiwicG9zJDE1IiwicG9zJDE2IiwiYXJnXzEkMSIsImFyZ18xJDIiLCJhcmdfMSQzIiwiYXJnXzIiLCJhcmdfMyIsImFyZ18xJDQiLCJhcmdfMiQwIiwiYXJnXzEkNSIsImFyZ18yJDEiLCJhcmdfMyQwIiwiYXJnXzEkNiIsImFyZ18yJDIiLCJhcmdfMSQ3IiwiYXJnXzIkMyIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsImFyZzBfMDE1IiwicmVzMF8wMTYiLCJhcmcyXzAxOSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAyMCIsInJlczFfMDIxIiwicmVzMl8wMjIiLCJhcmcxXzAyNCIsImFyZzBfMDIzIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsImFyZzJfMDI5IiwiYXJnMV8wMjgiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwiYXJnMV8wMzQiLCJhcmcwXzAzMyIsInJlczBfMDM1IiwicmVzMV8wMzYiLCJhcmcxXzAzOCIsImFyZzBfMDM3IiwicmVzMF8wMzkiLCJyZXMxXzA0MCIsInN0YWJsZV93aXRuZXNzJDEiLCJzdGFibGVfd2l0bmVzc19jaGVja3NfZm9yX3QkMCIsInN0YWJsZV93aXRuZXNzJDIiLCJzdGFibGVfd2l0bmVzc19jaGVja3NfZm9yX3QkMSIsInRvX2luZm8iLCJvZl9pbmZvIiwic2V4cF9vZl90JDUiLCJ0X3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl90JDYiLCJ0X3NleHBfZ3JhbW1hciQxIiwic3RhYmxlX3dpdG5lc3MkMyIsInRvX3NleHBhYmxlIiwib2Zfc2V4cGFibGUiLCJzdGFibGVfd2l0bmVzcyQ0IiwiYmluX3NoYXBlX3QkNiIsImJpbl9zaXplX3QkNiIsImJpbl93cml0ZV90JDYiLCJmYWlsd2l0aHMiLCJzdHJpY3QiLCJoZXJlIiwibWVzc2FnZSIsImZhaWx3aXRocCIsInRlc3RzIiwiYiIsInNpemVfb2ZfYiIsIndyaXRlX2IiLCJiaW5fd3JpdGVyX2IiLCJvZl9iIiwiYmluX3JlYWRlcl9iIiwiYmluX2IiLCJvZl9hXzAxNCIsIm9mX2JfMDE1Iiwic2V4cF8wMjAiLCJ0YWdfMDIxIiwic2V4cF9hcmdzXzAyMiIsInJlczBfMDI0Iiwic2V4cF9hcmdzXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvZl9hXzAzMiIsIm9mX2JfMDMzIiwiYXJnMF8wMzQiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYl9zdGFibGVfd2l0bmVzcyIsInhfMDQ3IiwieF8wNDgiLCJlcXVhbCIsInhfMDQ5IiwieF8wNTAiLCJhXzA0MiIsImJfMDQzIiwiYV8wNDQiLCJiXzA0NSIsInJ1biIsInNhbml0aXplIiwidXBvbl91bnJlbGVhc2FibGVfaXNzdWUiLCJvZl9hXzAwNyIsInhfMDA5Iiwib2ZfYV8wMTAiLCJ4XzAxMSIsImFfMDEyIiwiYl8wMTMiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsIm9mX2FfMDE4IiwieF8wMjAiLCJvZl9hXzAyMSIsInhfMDIyIiwibWFwJDEiLCJ2X3N0YXRlIiwidl92YWx1ZSIsInZfc3RhdGUkMCIsIm1lcmdlX2FsbCIsIkhlYXAiLCJub3RfeWV0X2luX2hlYXAiLCJoZWFwIiwiaGVhcCQwIiwic2VxJDIiLCJlbHQkMCIsIm5vdF95ZXRfaW5faGVhcCQwIiwic2VxIiwic2VxJDAiLCJzZXEkMSIsImVsdCIsImRlZmF1bHRfc2VlZCIsImRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDIiLCJnZW5lcmF0b3JfMDEyIiwiZ2VuZXJhdG9yXzAxMyIsInNpemVfMDE2IiwicmFuZG9tXzAxNyIsInNpemVfMDE0IiwicmFuZG9tXzAxNSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDIiLCJvYnNlcnZlcl8wMDUiLCJvYnNlcnZlcl8wMDYiLCJ4XzAwNyIsInNpemVfMDA4IiwiaGFzaF8wMDkiLCJoYXNoXzAwOSQwIiwiaGFzaF8wMDkkMSIsImhhc2hfMDA5JDIiLCJoYXNoXzAwOSQzIiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50MiIsInNocmlua2VyXzAwMSIsInNocmlua2VyXzAwMiIsInhfMDA0IiwieF8wMDMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MyIsImdlbmVyYXRvcl8wMzMiLCJnZW5lcmF0b3JfMDM0IiwiZ2VuZXJhdG9yXzAzNSIsInNpemVfMDQwIiwicmFuZG9tXzA0MSIsInNpemVfMDM4IiwicmFuZG9tXzAzOSIsInNpemVfMDM2IiwicmFuZG9tXzAzNyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDMiLCJvYnNlcnZlcl8wMjQiLCJvYnNlcnZlcl8wMjUiLCJvYnNlcnZlcl8wMjYiLCJ4XzAyNyIsInNpemVfMDI4IiwiaGFzaF8wMjkiLCJ4XzAzMCIsImhhc2hfMDI5JDAiLCJoYXNoXzAyOSQxIiwieF8wMzEiLCJoYXNoXzAyOSQyIiwiaGFzaF8wMjkkMyIsInhfMDMyIiwiaGFzaF8wMjkkNCIsImhhc2hfMDI5JDUiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQzIiwic2hyaW5rZXJfMDE4Iiwic2hyaW5rZXJfMDE5Iiwic2hyaW5rZXJfMDIwIiwieF8wMjEiLCJ4XzAyMyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ0IiwiZ2VuZXJhdG9yXzA2MSIsImdlbmVyYXRvcl8wNjIiLCJnZW5lcmF0b3JfMDYzIiwiZ2VuZXJhdG9yXzA2NCIsInNpemVfMDcxIiwicmFuZG9tXzA3MiIsInNpemVfMDY5IiwicmFuZG9tXzA3MCIsInNpemVfMDY3IiwicmFuZG9tXzA2OCIsInNpemVfMDY1IiwicmFuZG9tXzA2NiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDQiLCJvYnNlcnZlcl8wNTAiLCJvYnNlcnZlcl8wNTEiLCJvYnNlcnZlcl8wNTIiLCJvYnNlcnZlcl8wNTMiLCJ4XzA1NCIsInNpemVfMDU1IiwiaGFzaF8wNTYiLCJ4XzA1NyIsImhhc2hfMDU2JDAiLCJoYXNoXzA1NiQxIiwieF8wNTgiLCJoYXNoXzA1NiQyIiwiaGFzaF8wNTYkMyIsInhfMDU5IiwiaGFzaF8wNTYkNCIsImhhc2hfMDU2JDUiLCJ4XzA2MCIsImhhc2hfMDU2JDYiLCJoYXNoXzA1NiQ3IiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NCIsInNocmlua2VyXzA0MiIsInNocmlua2VyXzA0MyIsInNocmlua2VyXzA0NCIsInNocmlua2VyXzA0NSIsInhfMDQ2IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDUiLCJnZW5lcmF0b3JfMDk2IiwiZ2VuZXJhdG9yXzA5NyIsImdlbmVyYXRvcl8wOTgiLCJnZW5lcmF0b3JfMDk5IiwiZ2VuZXJhdG9yXzEwMCIsInNpemVfMTA5IiwicmFuZG9tXzExMCIsInNpemVfMTA3IiwicmFuZG9tXzEwOCIsInNpemVfMTA1IiwicmFuZG9tXzEwNiIsInNpemVfMTAzIiwicmFuZG9tXzEwNCIsInNpemVfMTAxIiwicmFuZG9tXzEwMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDUiLCJvYnNlcnZlcl8wODMiLCJvYnNlcnZlcl8wODQiLCJvYnNlcnZlcl8wODUiLCJvYnNlcnZlcl8wODYiLCJvYnNlcnZlcl8wODciLCJ4XzA4OCIsInNpemVfMDg5IiwiaGFzaF8wOTAiLCJ4XzA5MSIsImhhc2hfMDkwJDAiLCJoYXNoXzA5MCQxIiwieF8wOTIiLCJoYXNoXzA5MCQyIiwiaGFzaF8wOTAkMyIsImhhc2hfMDkwJDQiLCJoYXNoXzA5MCQ1IiwiaGFzaF8wOTAkNiIsImhhc2hfMDkwJDciLCJ4XzA5NSIsImhhc2hfMDkwJDgiLCJoYXNoXzA5MCQ5IiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NSIsInNocmlua2VyXzA3MyIsInNocmlua2VyXzA3NCIsInNocmlua2VyXzA3NSIsInNocmlua2VyXzA3NiIsInNocmlua2VyXzA3NyIsInhfMDc4IiwieF8wNzkiLCJ4XzA4MCIsInhfMDgxIiwieF8wODIiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NiIsImdlbmVyYXRvcl8xMzgiLCJnZW5lcmF0b3JfMTM5IiwiZ2VuZXJhdG9yXzE0MCIsImdlbmVyYXRvcl8xNDEiLCJnZW5lcmF0b3JfMTQyIiwiZ2VuZXJhdG9yXzE0MyIsInNpemVfMTU0IiwicmFuZG9tXzE1NSIsInNpemVfMTUyIiwicmFuZG9tXzE1MyIsInNpemVfMTUwIiwicmFuZG9tXzE1MSIsInNpemVfMTQ4IiwicmFuZG9tXzE0OSIsInNpemVfMTQ2IiwicmFuZG9tXzE0NyIsInNpemVfMTQ0IiwicmFuZG9tXzE0NSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDYiLCJvYnNlcnZlcl8xMjMiLCJvYnNlcnZlcl8xMjQiLCJvYnNlcnZlcl8xMjUiLCJvYnNlcnZlcl8xMjYiLCJvYnNlcnZlcl8xMjciLCJvYnNlcnZlcl8xMjgiLCJ4XzEyOSIsInNpemVfMTMwIiwiaGFzaF8xMzEiLCJ4XzEzMiIsImhhc2hfMTMxJDAiLCJoYXNoXzEzMSQxIiwieF8xMzMiLCJoYXNoXzEzMSQyIiwiaGFzaF8xMzEkMyIsInhfMTM0IiwiaGFzaF8xMzEkNCIsImhhc2hfMTMxJDUiLCJ4XzEzNSIsImhhc2hfMTMxJDYiLCJoYXNoXzEzMSQ3IiwieF8xMzYiLCJoYXNoXzEzMSQ4IiwiaGFzaF8xMzEkOSIsInhfMTM3IiwiaGFzaF8xMzEkMTAiLCJoYXNoXzEzMSQxMSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDYiLCJzaHJpbmtlcl8xMTEiLCJzaHJpbmtlcl8xMTIiLCJzaHJpbmtlcl8xMTMiLCJzaHJpbmtlcl8xMTQiLCJzaHJpbmtlcl8xMTUiLCJzaHJpbmtlcl8xMTYiLCJ4XzExNyIsInhfMTE4IiwieF8xMTkiLCJ4XzEyMCIsInhfMTIxIiwieF8xMjIiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTIiLCJnZW5lcmF0b3JfMTY2IiwiZ2VuZXJhdG9yXzE2NyIsInNpemVfMTY4IiwicmFuZG9tXzE2OSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUyIiwib2JzZXJ2ZXJfMTYwIiwib2JzZXJ2ZXJfMTYxIiwic2l6ZV8xNjQiLCJoYXNoXzE2NSIsInhfMTYzIiwieF8xNjIiLCJoYXNoXzE2NSQwIiwiaGFzaF8xNjUkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUyIiwic2hyaW5rZXJfMTU2Iiwic2hyaW5rZXJfMTU3IiwieF8xNTkiLCJ4XzE1OCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMyIsImdlbmVyYXRvcl8xODQiLCJnZW5lcmF0b3JfMTg1IiwiZ2VuZXJhdG9yXzE4NiIsInNpemVfMTg3IiwicmFuZG9tXzE4OCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUzIiwib2JzZXJ2ZXJfMTc2Iiwib2JzZXJ2ZXJfMTc3Iiwib2JzZXJ2ZXJfMTc4Iiwic2l6ZV8xODIiLCJoYXNoXzE4MyIsInhfMTgxIiwieF8xODAiLCJ4XzE3OSIsImhhc2hfMTgzJDAiLCJoYXNoXzE4MyQxIiwiaGFzaF8xODMkMiIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUzIiwic2hyaW5rZXJfMTcwIiwic2hyaW5rZXJfMTcxIiwic2hyaW5rZXJfMTcyIiwieF8xNzUiLCJ4XzE3NCIsInhfMTczIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU0IiwiZ2VuZXJhdG9yXzIwNyIsImdlbmVyYXRvcl8yMDgiLCJnZW5lcmF0b3JfMjA5IiwiZ2VuZXJhdG9yXzIxMCIsInNpemVfMjExIiwicmFuZG9tXzIxMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU0Iiwib2JzZXJ2ZXJfMTk3Iiwib2JzZXJ2ZXJfMTk4Iiwib2JzZXJ2ZXJfMTk5Iiwib2JzZXJ2ZXJfMjAwIiwic2l6ZV8yMDUiLCJoYXNoXzIwNiIsInhfMjA0IiwieF8yMDMiLCJ4XzIwMiIsInhfMjAxIiwiaGFzaF8yMDYkMCIsImhhc2hfMjA2JDEiLCJoYXNoXzIwNiQyIiwiaGFzaF8yMDYkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU0Iiwic2hyaW5rZXJfMTg5Iiwic2hyaW5rZXJfMTkwIiwic2hyaW5rZXJfMTkxIiwic2hyaW5rZXJfMTkyIiwieF8xOTYiLCJ4XzE5NSIsInhfMTk0IiwieF8xOTMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTUiLCJnZW5lcmF0b3JfMjM1IiwiZ2VuZXJhdG9yXzIzNiIsImdlbmVyYXRvcl8yMzciLCJnZW5lcmF0b3JfMjM4IiwiZ2VuZXJhdG9yXzIzOSIsInNpemVfMjQwIiwicmFuZG9tXzI0MSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU1Iiwib2JzZXJ2ZXJfMjIzIiwib2JzZXJ2ZXJfMjI0Iiwib2JzZXJ2ZXJfMjI1Iiwib2JzZXJ2ZXJfMjI2Iiwib2JzZXJ2ZXJfMjI3Iiwic2l6ZV8yMzMiLCJoYXNoXzIzNCIsInhfMjMyIiwieF8yMzEiLCJ4XzIzMCIsInhfMjI5IiwieF8yMjgiLCJoYXNoXzIzNCQwIiwiaGFzaF8yMzQkMSIsImhhc2hfMjM0JDIiLCJoYXNoXzIzNCQzIiwiaGFzaF8yMzQkNCIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU1Iiwic2hyaW5rZXJfMjEzIiwic2hyaW5rZXJfMjE0Iiwic2hyaW5rZXJfMjE1Iiwic2hyaW5rZXJfMjE2Iiwic2hyaW5rZXJfMjE3IiwieF8yMjIiLCJ4XzIyMSIsInhfMjIwIiwieF8yMTkiLCJ4XzIxOCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNiIsImdlbmVyYXRvcl8yNjgiLCJnZW5lcmF0b3JfMjY5IiwiZ2VuZXJhdG9yXzI3MCIsImdlbmVyYXRvcl8yNzEiLCJnZW5lcmF0b3JfMjcyIiwiZ2VuZXJhdG9yXzI3MyIsInNpemVfMjc0IiwicmFuZG9tXzI3NSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU2Iiwib2JzZXJ2ZXJfMjU0Iiwib2JzZXJ2ZXJfMjU1Iiwib2JzZXJ2ZXJfMjU2Iiwib2JzZXJ2ZXJfMjU3Iiwib2JzZXJ2ZXJfMjU4Iiwib2JzZXJ2ZXJfMjU5Iiwic2l6ZV8yNjYiLCJoYXNoXzI2NyIsInhfMjY1IiwieF8yNjQiLCJ4XzI2MyIsInhfMjYyIiwieF8yNjEiLCJ4XzI2MCIsImhhc2hfMjY3JDAiLCJoYXNoXzI2NyQxIiwiaGFzaF8yNjckMiIsImhhc2hfMjY3JDMiLCJoYXNoXzI2NyQ0IiwiaGFzaF8yNjckNSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU2Iiwic2hyaW5rZXJfMjQyIiwic2hyaW5rZXJfMjQzIiwic2hyaW5rZXJfMjQ0Iiwic2hyaW5rZXJfMjQ1Iiwic2hyaW5rZXJfMjQ2Iiwic2hyaW5rZXJfMjQ3IiwieF8yNTMiLCJ4XzI1MiIsInhfMjUxIiwieF8yNTAiLCJ4XzI0OSIsInhfMjQ4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm4yIiwib2JzZXJ2ZXJfMjgyIiwib2JzZXJ2ZXJfMjgzIiwiZ2VuZXJhdG9yXzI4NCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuMyIsIm9ic2VydmVyXzI5MyIsIm9ic2VydmVyXzI5NCIsIm9ic2VydmVyXzI5NSIsImdlbmVyYXRvcl8yOTYiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjQiLCJvYnNlcnZlcl8zMDciLCJvYnNlcnZlcl8zMDgiLCJvYnNlcnZlcl8zMDkiLCJvYnNlcnZlcl8zMTAiLCJnZW5lcmF0b3JfMzExIiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm41Iiwib2JzZXJ2ZXJfMzI0Iiwib2JzZXJ2ZXJfMzI1Iiwib2JzZXJ2ZXJfMzI2Iiwib2JzZXJ2ZXJfMzI3Iiwib2JzZXJ2ZXJfMzI4IiwiZ2VuZXJhdG9yXzMyOSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNiIsIm9ic2VydmVyXzM0NCIsIm9ic2VydmVyXzM0NSIsIm9ic2VydmVyXzM0NiIsIm9ic2VydmVyXzM0NyIsIm9ic2VydmVyXzM0OCIsIm9ic2VydmVyXzM0OSIsImdlbmVyYXRvcl8zNTAiLCJvZl9oYXNoIiwiTSIsIm9mX3ByZWRpY2F0ZSIsInNpbmdsZXRvbiIsImRvdWJsZXRvbiIsImVudW0kMCIsIm9mX2xpc3QiLCJsaXN0IiwieSIsImkiLCJvZl9mdW4iLCJjb21wYXJpc29uIiwiZXEiLCJsdCIsImd0IiwiYyIsInJldHVybiQwIiwic21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQiLCJzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQiLCJzaW5nbGV0b24kMCIsImRvdWJsZXRvbiQwIiwicmFuZG9tIiwib2ZfZnVuJDAiLCJvZl9zZXF1ZW5jZSIsInAiLCJrIiwiZ2VvbWV0cmljIiwibGlzdF93aXRoX2xlbmd0aCIsImxlbmd0aCIsImNvbXBhcmVfZm4iLCJkb20iLCJnZXRfaW5kZXgiLCJiXzM1MiIsImFfMzUxIiwiZXF1YWxfZm4iLCJjbXAiLCJlbXB0eSIsIm5vbmRldGVybWluaXN0aWNfc3RhdGUiLCJyYW5kb21fc3RhdGVfb2Zfc2VlZCIsInNlZWQiLCJzdHIiLCJtYWtlX3NlZWQiLCJzdHJpbmciLCJtYWtlX3Nocmlua19jb3VudCIsIm1ha2VfY29uZmlnIiwic2l6ZXMiLCJ0cmlhbHMiLCJzaHJpbmtfYXR0ZW1wdHMiLCJtYWtlX3Rlc3RfbSIsImdlbiIsInNocmlua2VyIiwic2V4cF9vZiIsInJhbmRvbV92YWx1ZSIsInJhbmRvbV9zZXF1ZW5jZSIsImNvbmZpZyIsInNlcXVlbmNlIiwidGVzdCIsImV4YW1wbGVzIiwidGVzdF9tIiwidGVzdF9vcl9lcnJvciIsInRlc3RfZGlzdGluY3RfdmFsdWVzIiwiZGlzdGluY3RfdmFsdWVzIiwic2V4cF9vZiQwIiwic2V0Iiwic2V0JDAiLCJhY3R1YWxfY291bnQiLCJzZXhwX29mX2VsdCIsInhfMzUzIiwidmFsdWVzIiwibWF0Y2giLCJyZXMiLCJoIiwidGVzdF9jYW5fZ2VuZXJhdGUiLCJzZXhwX29mX3ZhbHVlIiwieF8zNTQiLCJkZWZhdWx0X3RyaWFsX2NvdW50IiwiZGVmYXVsdF9zaXplcyIsImdlbmVyYXRlX2EiLCJvYnNlcnZlX2EiLCJzaHJpbmtfYSIsIm5vcm1hbGl6ZSIsImxlbmd0aF9mdW4iLCJzbGljZSIsInN1Yl9mdW4iLCJzdGFydCIsInN0b3AiLCJzdG9wJDAiLCJsZW4iLCJnZW5lcmF0b3JfMDAzIiwib2JzZXJ2ZXJfMDAyIiwiYmluYXJ5X3NlYXJjaCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIiwib2ZfYXJyYXkiLCJhcHBlbmQiLCJmaWx0ZXIiLCJmaWx0ZXJfbWFwIiwiY29uY2F0X21hcCIsInBhcnRpdGlvbl90ZiIsInBhcnRpdGlvbl9tYXAiLCJtZW0iLCJpc19lbXB0eSIsImZvbGRfcmVzdWx0IiwiZm9sZF91bnRpbCIsImNvdW50Iiwic3VtIiwiZmluZCIsImZpbmRfbWFwIiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImZvbGRpIiwiaXRlcmkiLCJleGlzdHNpIiwiZm9yX2FsbGkiLCJjb3VudGkiLCJmaW5kaSIsImZpbmRfbWFwaSIsIm1hcGkiLCJmaWx0ZXJpIiwiZmlsdGVyX21hcGkiLCJjb25jYXRfbWFwaSIsImNyZWF0ZV9sb2NhbCIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwibWFrZV9tYXRyaXgiLCJjb3B5X21hdHJpeCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiYmxpdCIsImJsaXRvIiwidW5zYWZlX2JsaXQiLCJzdWIiLCJzdWJvIiwiZm9sZGluZ19tYXAiLCJmb2xkaW5nX21hcGkiLCJmb2xkX21hcCIsImZvbGRfbWFwaSIsImZvbGRfcmlnaHQiLCJzb3J0Iiwic3RhYmxlX3NvcnQiLCJpc19zb3J0ZWQiLCJpc19zb3J0ZWRfc3RyaWN0bHkiLCJtZXJnZSIsInBhcnRpdGlvbmlfdGYiLCJjYXJ0ZXNpYW5fcHJvZHVjdCIsInRyYW5zcG9zZSIsInRyYW5zcG9zZV9leG4iLCJmaWx0ZXJfb3B0IiwiaXRlcjJfZXhuIiwibWFwMl9leG4iLCJmb2xkMl9leG4iLCJmb3JfYWxsMl9leG4iLCJleGlzdHMyX2V4biIsInN3YXAiLCJyZXZfaW5wbGFjZSIsInJldiIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kX2V4biIsImZpbmRfbWFwX2V4biIsImZpbmRpX2V4biIsImZpbmRfbWFwaV9leG4iLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsInJlZHVjZSIsInJlZHVjZV9leG4iLCJwZXJtdXRlIiwicmFuZG9tX2VsZW1lbnQiLCJyYW5kb21fZWxlbWVudF9leG4iLCJ6aXAiLCJ6aXBfZXhuIiwidW56aXAiLCJzb3J0ZWRfY29weSIsImxhc3QiLCJ0b19zZXF1ZW5jZSIsInRvX3NlcXVlbmNlX211dGFibGUiLCJuZ2V0IiwibnNldCIsImdldCIsImNvbXBhcmVfdCIsImFfMDA0IiwiYl8wMDUiLCJjcmVhdGUkMCIsImVxdWFsJDAiLCJvZl9ib29sIiwiY29tcGFyZV90JDAiLCJhXzAxMyIsImJfMDE0IiwieF8wMTYiLCJ4XzAxNyIsImNyZWF0ZSQxIiwiZXF1YWwkMSIsIm9mX2Jvb2wkMCIsInBlcm1zIiwic2l6ZV9vZl9wZXJtcyIsIndyaXRlX3Blcm1zIiwib2ZfcGVybXMiLCJjbXBfcGVybXMiLCJhXzAxOCIsImJfMDE5IiwiYV8wMjAiLCJiXzAyMSIsIm9mX2FfMDIyIiwib2ZfcGVybXNfMDIzIiwieF8wMjUiLCJvZl9hXzAyNiIsIm9mX3Blcm1zXzAyNyIsInhfMDI4IiwiYV8wMjkiLCJiXzAzMCIsIm9mX3Blcm1zXzAzMSIsIm9mX3Blcm1zXzAzMyIsImFfMDM0IiwiYl8wMzUiLCJvZl9wZXJtc18wMzYiLCJvZl9wZXJtc18wMzgiLCJ0b19hcnJheV9pZCIsIm9mX2FycmF5X2lkIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJtYXhfbGVuZ3RoIiwiY29tcGFyZV9hIiwiY29tcGFyZV9iIiwidF8wMDYiLCJ0XzAwNSIsInRfMDA4IiwidF8wMDciLCJnZW5fbm9uX2VtcHR5IiwiZ2VuX3dpdGhfbGVuZ3RoIiwiZ2VuX2ZpbHRlcmVkIiwiZ2VuX3Blcm11dGF0aW9ucyIsIm1vZHVsZV9uYW1lJDAiLCJtb2R1bGVfbmFtZSIsImhhc2hhYmxlX3MiLCJmaW5kX211bHRpIiwicmVtb3ZlX211bHRpIiwiYWRkX211bHRpIiwiZGVjciIsImluY3IiLCJ0b19hbGlzdCIsInNpbWlsYXIiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwiZmlsdGVyX21hcF9pbnBsYWNlIiwibWFwaV9pbnBsYWNlIiwiZmlsdGVyaV9pbnBsYWNlIiwiZmlsdGVyX2lucGxhY2UiLCJmaWx0ZXJfa2V5c19pbnBsYWNlIiwiZGF0YSIsImtleXMiLCJtZXJnZV9pbnRvIiwiZmluZF9hbmRfcmVtb3ZlIiwiZmluZGlfYW5kX2NhbGwyIiwiZmluZGlfYW5kX2NhbGwxIiwiZmluZGlfYW5kX2NhbGwiLCJmaW5kX2FuZF9jYWxsMiIsImZpbmRfYW5kX2NhbGwxIiwiZmluZF9hbmRfY2FsbCIsImZpbmRpX29yX2FkZCIsImZpbmRfb3JfYWRkIiwicGFydGl0aW9uX21hcGkiLCJmaWx0ZXJfa2V5cyIsInVwZGF0ZV9hbmRfcmV0dXJuIiwidXBkYXRlIiwiY2hhbmdlIiwiYWRkX2V4biIsImFkZCIsImNob29zZV9yYW5kb21seV9leG4iLCJjaG9vc2VfcmFuZG9tbHkiLCJjaG9vc2VfZXhuIiwiY2hvb3NlIiwicmVtb3ZlIiwiaXRlcl9rZXlzIiwiY2xlYXIiLCJzZXhwX29mX2tleSIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IiLCJjcmVhdGVfd2l0aF9rZXkiLCJjcmVhdGVfbWFwcGVkIiwib2ZfYWxpc3RfbXVsdGkiLCJvZl9hbGlzdF9leG4iLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsIm9mX2FsaXN0IiwiaGFzaF9wYXJhbSIsInZhbGlkYXRlIiwiZ3Jvd3RoX2FsbG93ZWQiLCJoYXNoYWJsZSIsIm9mX2FsaXN0JDAiLCJsIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJvZl9hbGlzdF9vcl9lcnJvciQwIiwib2ZfYWxpc3RfZXhuJDAiLCJvZl9hbGlzdF9tdWx0aSQwIiwiY3JlYXRlX21hcHBlZCQwIiwiZ2V0X2tleSIsImdldF9kYXRhIiwiY3JlYXRlX3dpdGhfa2V5JDAiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMCIsImNyZWF0ZV93aXRoX2tleV9leG4kMCIsImNvbWJpbmUiLCJiaW5fc2hhcGVfZWwiLCJiaW5fc2l6ZV9lbCIsImJpbl93cml0ZV9lbCIsImJpbl9yZWFkX2VsIiwiaXRlciQxIiwia2V5IiwibmV4dCIsImludmFyaWFudF9rZXkiLCJzZXhwX29mX3YiLCJ2X29mX3NleHAiLCJkYXRhX3N0YWJsZV93aXRuZXNzIiwiZXF1YWxfbV90IiwibV90X3NleHBfZ3JhbW1hciIsIm1fdF9vZl9zZXhwIiwic2V4cF9vZl9tX3QiLCJvZl9hbGlzdF9vcHRpb24iLCJhbGlzdCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fdCIsIktleSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2RhdGEiLCJzaXplXzAwNCIsInJhbmRvbV8wMDUiLCJxdWlja2NoZWNrX29ic2VydmVyX21fdCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfZGF0YSIsInhfMDA2IiwicXVpY2tjaGVja19zaHJpbmtlcl9tX3QiLCJxdWlja2NoZWNrX3Nocmlua2VyX2RhdGEiLCJoYXNoYWJsZSQwIiwib2ZfbGlzdCQwIiwiZXJyb3Jfc291cmNlXzAzMSIsInNpemVfb2ZfayIsInNpemVfb2ZfdiIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJ3cml0ZV9rIiwid3JpdGVfdiIsImJpbl93cml0ZXJfayIsImJpbl93cml0ZXJfdiIsIm9mX2siLCJvZl92IiwiYmluX3JlYWRlcl9rIiwiYmluX3JlYWRlcl92IiwiYmluX2siLCJiaW5fdiIsImNtcF9rIiwiY21wX3YiLCJ0XzAwNCIsInRfMDAzIiwicmlnaHRfMDA4IiwibGVmdF8wMDciLCJyaWdodF8wMTIiLCJsZWZ0XzAxMSIsInRfMDE0IiwidF8wMTMiLCJ0XzAxNiIsInRfMDE1IiwicmlnaHRfMDEwIiwibGVmdF8wMDkiLCJvZl9rXzAxNyIsIm9mX3ZfMDE4Iiwic2V4cF8wNDUiLCJhcmcxXzA0MiIsImFyZzBfMDQxIiwicmVzMF8wNDMiLCJhdG9tXzAyMSIsInNleHBfYXJnc18wMjQiLCJhdG9tXzAyMSQwIiwiYXJnMF8wMzIiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMV8wMjkiLCJyZXMwXzAzMyIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJhcmcwXzAzOCIsInJlczFfMDQ0Iiwib2Zfa18wNDYiLCJvZl92XzA0NyIsImFyZzFfMDU2IiwiYXJnMF8wNTUiLCJyZXMwXzA1NyIsInZfMDQ4IiwicmVzMV8wNTgiLCJ2XzA1MCIsImFyZzFfMDUyIiwiYXJnMF8wNTEiLCJyZXMwXzA1MyIsInJlczFfMDU0Iiwidl8wNDkiLCJrX3N0YWJsZV93aXRuZXNzIiwidl9zdGFibGVfd2l0bmVzcyIsImRpZmYiLCJrJDAiLCJkaWZmJDAiLCJ2JDAiLCJtYXBfZGF0YSIsImxlZnQiLCJyaWdodCIsImdlbl90cmVlIiwiY29tcGFyYXRvciIsImtfZ2VuIiwidl9nZW4iLCJvYnNfdHJlZSIsImtfb2JzIiwidl9vYnMiLCJzaHJfdHJlZSIsImtfc2hyIiwidl9zaHIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQwIiwiaGFzaF9mb2xkX2RpcmVjdCIsIm9mX2hhc2h0YmxfZXhuIiwiaGFzaHRibCIsInRyZWVfb2ZfaGFzaHRibF9leG4iLCJrZXlfc2V0Iiwia2V5X3NldF9vZl90cmVlIiwib2Zfa2V5X3NldCIsInRyZWVfb2Zfa2V5X3NldCIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UiLCJ0b190cmVlJDAiLCJyYW5rIiwibnRoX2V4biIsIm50aCIsImNsb3Nlc3Rfa2V5IiwicmFuZ2VfdG9fYWxpc3QiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSIsInN1YnJhbmdlIiwic3BsaXRfbHRfZ2UiLCJzcGxpdF9sZV9ndCIsInNwbGl0IiwibWF4X2VsdF9leG4iLCJtaW5fZWx0X2V4biIsImZvbGRfc3ltbWV0cmljX2RpZmYiLCJzeW1tZXRyaWNfZGlmZiIsIm1lcmdlX3NrZXdlZCIsImtleXMkMCIsImNvbXBhcmVfZGlyZWN0IiwiY29tYmluZV9lcnJvcnMiLCJmb2xkMiIsIml0ZXIyIiwiaXRlcmlfdW50aWwiLCJpbnZhcmlhbnRzIiwidmFsaWRhdGVpIiwicXVpY2tjaGVja19vYnNlcnZlciQwIiwicXVpY2tjaGVja19zaHJpbmtlciQwIiwia2V5X3NldCQwIiwia2V5X3NldCQxIiwiY29tcGFyYXRvcl9zIiwiaW52YXJpYW50cyQwIiwiZW1wdHkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDAiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMCIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlJDAiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQwIiwib2Zfc2VxdWVuY2VfZXhuJDAiLCJvZl9zZXF1ZW5jZV9tdWx0aSQwIiwib2Zfc2VxdWVuY2VfZm9sZCQwIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDAiLCJvZl9saXN0X3dpdGhfa2V5JDAiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDAiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQwIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQwIiwiaXNfZW1wdHkkMCIsImxlbmd0aCQwIiwiYWRkJDAiLCJhZGRfZXhuJDAiLCJhZGRfbXVsdGkkMCIsInJlbW92ZV9tdWx0aSQwIiwiZmluZF9tdWx0aSQwIiwiY2hhbmdlJDAiLCJ1cGRhdGUkMCIsImZpbmQkMCIsImZpbmRfZXhuJDAiLCJyZW1vdmUkMCIsIm1lbSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaSQwIiwiaXRlcmlfdW50aWwkMCIsIml0ZXIyJDAiLCJtYXBpJDAiLCJtYXBfa2V5cyQwIiwibWFwX2tleXNfZXhuJDAiLCJmb2xkX3VudGlsJDAiLCJmb2xkX3JpZ2h0JDAiLCJmb2xkMiQwIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlciQwIiwiZmlsdGVyaSQwIiwiZmlsdGVyX21hcCQwIiwiZmlsdGVyX21hcGkkMCIsInBhcnRpdGlvbl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwJDAiLCJwYXJ0aXRpb25pX3RmJDAiLCJwYXJ0aXRpb25fdGYkMCIsImNvbWJpbmVfZXJyb3JzJDAiLCJjb21wYXJlX2RpcmVjdCQwIiwia2V5cyQxIiwiZGF0YSQwIiwidG9fYWxpc3QkMCIsIm1lcmdlJDAiLCJzeW1tZXRyaWNfZGlmZiQwIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQwIiwibWluX2VsdCQwIiwibWluX2VsdF9leG4kMCIsIm1heF9lbHQkMCIsIm1heF9lbHRfZXhuJDAiLCJ0cmFuc3Bvc2Vfa2V5cyQwIiwiZm9yX2FsbGkkMCIsImV4aXN0c2kkMCIsImNvdW50JDAiLCJjb3VudGkkMCIsInNwbGl0JDAiLCJzcGxpdF9sZV9ndCQwIiwic3BsaXRfbHRfZ2UkMCIsImFwcGVuZCQwIiwic3VicmFuZ2UkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsIm50aCQwIiwibnRoX2V4biQwIiwicmFuayQwIiwidG9fc2VxdWVuY2UkMCIsImJpbmFyeV9zZWFyY2gkMCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJ2YWxpZGF0ZSQwIiwidmFsaWRhdGVpJDAiLCJvZl90cmVlJDAiLCJ0b190cmVlJDEiLCJmaW5kX29yX2Vycm9yIiwiY29tcGFyYXRvciQwIiwibWVyZ2Vfc2tld2VkJDAiLCJvZl9oYXNodGJsX2V4biQwIiwidHJlZSIsImFycmF5Iiwia19vZl9zZXhwIiwib2Zfa2V5X3NldCQwIiwiZ2VuX2siLCJnZW5fdiIsIm9mX3RyZWUiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwib2Zfc29ydGVkX2FycmF5Iiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9zZXF1ZW5jZV9mb2xkIiwib2Zfc2VxdWVuY2VfcmVkdWNlIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2xpc3Rfd2l0aF9rZXkiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIiwib2ZfbGlzdF93aXRoX2tleV9leG4iLCJvZl9saXN0X3dpdGhfa2V5X211bHRpIiwib2ZfaXRlcmkiLCJvZl9pdGVyaV9leG4iLCJ0b190cmVlIiwiZGF0YV9lcXVhbCIsImxvd2VyX3BhcnQiLCJ1cHBlcl9wYXJ0IiwibG93ZXJfYm91bmQiLCJ1cHBlcl9ib3VuZCIsIm1pbiIsIm1heCIsIm9yZGVyIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiaG93Iiwic2VnbWVudF9vZiIsIm1hcF9rZXlzIiwibWFwX2tleXNfZXhuIiwidHJhbnNwb3NlX2tleXMiLCJpbml0X2Zvcl9iaW5fcHJvdCIsImVtcHR5JDEiLCJzaW5nbGV0b24kMSIsIm1hcF9rZXlzJDEiLCJtYXBfa2V5c19leG4kMSIsInRyYW5zcG9zZV9rZXlzJDEiLCJvZl9zb3J0ZWRfYXJyYXkkMSIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMSIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQxIiwib2ZfYWxpc3QkMSIsIm9mX2FsaXN0X29yX2Vycm9yJDEiLCJvZl9hbGlzdF9leG4kMSIsIm9mX2FsaXN0X211bHRpJDEiLCJvZl9hbGlzdF9mb2xkJDEiLCJvZl9hbGlzdF9yZWR1Y2UkMSIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMSIsIm9mX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJvZl9saXN0X3dpdGhfa2V5JDEiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDEiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQxIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQxIiwib2ZfaXRlcmkkMSIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfdHJlZSQxIiwib2ZfaGFzaHRibF9leG4kMSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJjbXB2IiwidDEiLCJ0MiIsInNleHBfb2ZfayIsImtfZ3JhbW1hciIsInZfZ3JhbW1hciIsImVtcHR5JDIiLCJvZl90cmVlJDIiLCJzaW5nbGV0b24kMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX3NvcnRlZF9hcnJheSQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZSQyIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMiIsIm9mX3NlcXVlbmNlX2V4biQyIiwib2Zfc2VxdWVuY2VfbXVsdGkkMiIsIm9mX3NlcXVlbmNlX2ZvbGQkMiIsIm9mX3NlcXVlbmNlX3JlZHVjZSQyIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2hhc2h0YmxfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9saXN0X3dpdGhfa2V5JDIiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDIiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQyIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQyIiwib2ZfaXRlcmkkMiIsIm9mX2l0ZXJpX2V4biQyIiwib2Zfa2V5X3NldCQxIiwidG9fdHJlZSQyIiwiaW52YXJpYW50cyQxIiwiaXNfZW1wdHkkMSIsImxlbmd0aCQxIiwic2V0JDEiLCJhZGQkMSIsImFkZF9leG4kMSIsImFkZF9tdWx0aSQxIiwicmVtb3ZlX211bHRpJDEiLCJmaW5kX211bHRpJDEiLCJjaGFuZ2UkMSIsInVwZGF0ZSQxIiwiZmluZF9leG4kMSIsImZpbmQkMSIsInJlbW92ZSQxIiwibWVtJDEiLCJpdGVyX2tleXMkMSIsIml0ZXIkMiIsIml0ZXJpJDEiLCJpdGVyaV91bnRpbCQxIiwiaXRlcjIkMSIsIm1hcCQyIiwibWFwaSQxIiwiZm9sZCQxIiwiZm9sZF91bnRpbCQxIiwiZm9sZF9yaWdodCQxIiwiZm9sZDIkMSIsImZpbHRlcl9rZXlzJDEiLCJmaWx0ZXIkMSIsImZpbHRlcmkkMSIsImZpbHRlcl9tYXAkMSIsImZpbHRlcl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwaSQxIiwicGFydGl0aW9uX21hcCQxIiwicGFydGl0aW9uaV90ZiQxIiwicGFydGl0aW9uX3RmJDEiLCJjb21iaW5lX2Vycm9ycyQxIiwiY29tcGFyZV9kaXJlY3QkMSIsImtleXMkMiIsImRhdGEkMSIsInRvX2FsaXN0JDEiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGVpJDEiLCJzeW1tZXRyaWNfZGlmZiQxIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQxIiwibWVyZ2UkMSIsIm1lcmdlX3NrZXdlZCQxIiwibWluX2VsdCQxIiwibWluX2VsdF9leG4kMSIsIm1heF9lbHQkMSIsIm1heF9lbHRfZXhuJDEiLCJmb3JfYWxsJDEiLCJmb3JfYWxsaSQxIiwiZXhpc3RzJDEiLCJleGlzdHNpJDEiLCJjb3VudCQxIiwiY291bnRpJDEiLCJzcGxpdCQxIiwic3BsaXRfbGVfZ3QkMSIsInNwbGl0X2x0X2dlJDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDEiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMSIsIm50aF9leG4kMSIsInJhbmskMSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSQxIiwia2V5X3NldCQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwidHJhbnNwb3NlX2tleXMkMiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEiLCJoYXNoX2ZvbGRfZGF0YSIsInN0YXRlIiwiYmluX3NoYXBlX21fdCIsImJpbl9zaXplX21fdCIsImJpbl93cml0ZV9tX3QiLCJiaW5fcmVhZF9tX3QiLCJiaW5fcmVhZF9tX3QkMCIsInZfZ2VuZXJhdG9yIiwidl9vYnNlcnZlciIsInZfc2hyaW5rZXIiLCJoYXNoX2ZvbGRfbV90IiwiY29tcGFyZV9tX3QiLCJzdGFibGVfd2l0bmVzc19tX3QiLCJ2YWxpZGF0ZSQyIiwidmFsaWRhdGVpJDIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQzIiwicXVpY2tjaGVja19vYnNlcnZlciQyIiwicXVpY2tjaGVja19zaHJpbmtlciQyIiwiZXJyb3Jfc291cmNlXzAxNiIsImVycm9yX3NvdXJjZV8wNjYiLCJhXzAwNyIsImJfMDA4IiwiYV8wMDkiLCJiXzAxMCIsIm9mX2FfMDEzIiwic2V4cF8wMTgiLCJ0YWdfMDE5Iiwic2V4cF9hcmdzXzAyNSIsInJlczBfMDI3Iiwib2ZfYV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwieCQxIiwiYV8wNDEiLCJiXzA0MiIsImFfMDQzIiwiYl8wNDQiLCJhXzA0NSIsImJfMDQ2IiwiZ2VuZXJhdG9yXzA1NiIsInNpemVfMDYxIiwicmFuZG9tXzA2MiIsInNpemVfMDU5IiwicmFuZG9tXzA2MCIsInNpemVfMDU3IiwicmFuZG9tXzA1OCIsInhfMDUxIiwic2l6ZV8wNTIiLCJoYXNoXzA1MyIsImhhc2hfMDUzJDAiLCJoYXNoXzA1MyQxIiwiaGFzaF8wNTMkMiIsInhfMDU1IiwiaGFzaF8wNTMkMyIsImhhc2hfMDUzJDQiLCJzaHJpbmtlcl8wNDciLCJvZl9hXzA2MyIsInNleHBfMDY4IiwidGFnXzA2OSIsInNleHBfYXJnc18wNzAiLCJhcmcwXzA3MSIsInJlczBfMDcyIiwic2V4cF9hcmdzXzA3NSIsImFyZzBfMDc2IiwicmVzMF8wNzciLCJvZl9hXzA3OSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJjb21wYXJlX29uZV9zaWRlZCIsInNpZGUiLCJhMSIsImEyIiwiYTIkMCIsImExJDAiLCJhMiQxIiwiYyQwIiwiYTIkMiIsImFfMDg1IiwiYl8wODYiLCJhXzA4NyIsImJfMDg4IiwiZXF1YWwkMiIsImFfMDg5IiwiYl8wOTAiLCJhXzA5MSIsImJfMDkyIiwiZWx0X2dlbiIsImVsdF9vYnMiLCJlbHRfc2hyIiwiZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvIiwidG9fbWFwIiwib2ZfbWFwX2tleXMiLCJvZl9oYXNoX3NldCIsImhzZXQiLCJvZl9oYXNodGJsX2tleXMiLCJ1bmlvbiQwIiwidW5pb25fbGlzdCQwIiwiaW50ZXIkMCIsInN1bSQwIiwiZmluZF9tYXAkMCIsInJlbW92ZV9pbmRleCQwIiwiaXNfc3Vic2V0JDAiLCJhcmVfZGlzam9pbnQkMCIsIm9mX2FycmF5JDAiLCJ0b19hcnJheSQwIiwic3RhYmxlX2RlZHVwX2xpc3QkMCIsImZvbGRfcmVzdWx0JDAiLCJlbGVtZW50cyQwIiwiY2hvb3NlJDAiLCJjaG9vc2VfZXhuJDAiLCJncm91cF9ieSQwIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsInN0YWJsZV9kZWR1cF9saXN0JDEiLCJvZl9hcnJheSQxIiwib2ZfbGlzdCQxIiwidW5pb25fbGlzdCQxIiwib2ZfbWFwX2tleXMkMCIsIm9mX2hhc2hfc2V0JDAiLCJvZl9oYXNodGJsX2tleXMkMCIsInRvX21hcCQwIiwib2ZfbWFwX2tleXMkMSIsIm9mX2hhc2hfc2V0JDEiLCJvZl9oYXNodGJsX2tleXMkMSIsImUiLCJ1bmlvbl9saXN0Iiwic3RhYmxlX2RlZHVwX2xpc3QiLCJ4cyIsInVuaW9uX2xpc3QkMiIsIm9mX2xpc3QkMiIsIm9mX2FycmF5JDIiLCJzdGFibGVfZGVkdXBfbGlzdCQyIiwiZmlsdGVyX21hcCQyIiwib2ZfaGFzaF9zZXQkMiIsIm9mX2hhc2h0Ymxfa2V5cyQyIiwib2ZfbWFwX2tleXMkMiIsImVsdF9ncmFtbWFyIiwiZW1wdHkkMyIsInNpbmdsZXRvbiQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl9saXN0JDMiLCJvZl9zZXF1ZW5jZSQzIiwib2ZfaGFzaF9zZXQkMyIsIm9mX2hhc2h0Ymxfa2V5cyQzIiwib2ZfYXJyYXkkMyIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMyIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQzIiwib2Zfc29ydGVkX2FycmF5JDMiLCJ1bmlvbl9saXN0JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwib2ZfdHJlZSQzIiwib2ZfbWFwX2tleXMkMyIsImVsdF9vZl9zZXhwIiwiZ3JhbW1hciIsIkVsdCIsImhhc2hfbV90IiwidmFsaWRhdGVfYm91bmQiLCJ2YWxpZGF0ZV9sYm91bmQiLCJ2YWxpZGF0ZV91Ym91bmQiLCJleGNsX3plcm8iLCJpbmNsX3plcm8iLCJ2YWxpZGF0ZV9wb3NpdGl2ZSIsInZhbGlkYXRlX25vbl9uZWdhdGl2ZSIsInZhbGlkYXRlX25lZ2F0aXZlIiwidmFsaWRhdGVfbm9uX3Bvc2l0aXZlIiwidCQwIiwic3RhYmxlX2RlZHVwX3N0YWdlZCIsInppcF93aXRoX3JlbWFpbmRlciIsInhzJDEiLCJ5cyQxIiwieXMiLCJ5cyQwIiwieHMkMCIsImFjYyQwIiwiYXJnMF8wMDEiLCJleG5faWZfZHVwIiwidG9fc2V4cCIsImNvbnRleHQiLCJkdXAiLCJhX3NleHBfZ3JhbW1hciIsImFfMDEwIiwiYl8wMTEiLCJub25lIiwic29tZSIsInVuc2FmZV92YWx1ZSIsImRlcHRoIiwidCQxIiwiZGVwdGgkMCIsInJlcHJlc2VudGF0aXZlIiwiaW5uZXIkMSIsImlubmVyX25vZGUkMSIsInIkMCIsImlubmVyJDAiLCJpbm5lcl9ub2RlIiwiaW5uZXIiLCJkZXNjZW5kYW50cyIsImlubmVyX25vZGUkMCIsImRlc2NlbmRhbnRzJDAiLCJyb290Iiwic2FtZV9jbGFzcyIsInVuaW9uIiwicjEiLCJ0MSQwIiwicjIiLCJ0MiQwIiwibjEiLCJuMiIsImlzX2NvbXByZXNzZWQiLCJwaHlzX2VxdWFsIiwidW5pb25fZmluZF9nZXRfY2hlY2tfbm9fcGVuZGluIiwiY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIiwiaW5jcl9sZW5ndGgiLCJpbmNyX3BlbmRpbmdfaXRlcnMiLCJkZWNyX3BlbmRpbmdfaXRlcnMiLCJ3aXRoX2l0ZXJhdGlvbl8ybCIsIndpdGhfaXRlcmF0aW9uXzMiLCJ3aXRoX2l0ZXJhdGlvbl80IiwiZCIsInByZXYiLCJjcmVhdGVfYXV4IiwiaGVhZGVyIiwiaXNfc2luZ2xldG9uIiwidW5zYWZlX3NwbGl0X29yX3NwbGljZSIsInVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIiLCJ1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSIsImNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZSIsInNwbGl0X29yX3NwbGljZV9iZWZvcmUiLCJpbnNlcnRfYmVmb3JlIiwibm9kZSIsImluc2VydF9hZnRlciIsImR1bW15X2hlYWRlciIsInVubGluayIsImhlYWQiLCJuZXh0X2VsdCIsInByZXZfZWx0IiwiZmlyc3QiLCJhcnIiLCJpJDAiLCJuZXdfZmlyc3QiLCJuZXh0JDAiLCJmb2xkX2VsdCIsImZvbGRpX2VsdCIsImZvbGRfZWx0XzEiLCJmb2xkaV9lbHRfMSIsIml0ZXJfZWx0IiwiaXRlcmlfZWx0IiwiZmluZF9lbHQiLCJmaW5kaV9lbHQiLCJ1bmNoZWNrZWRfaXRlciIsImZpcnN0JDAiLCJmb2xkX3JpZ2h0X2VsdCIsInRsIiwiY29tcGFyZV9lbHQiLCJlbHQxIiwiZWx0MiIsImVsdDEkMCIsImVsdDIkMCIsImNvbXBhcmVfcmVzdWx0IiwibmV4dDEiLCJuZXh0MiIsInRyYW5zZmVyIiwic3JjIiwiZHN0Iiwic3JjX2hlYWQiLCJkc3RfaGVhZCIsInJlbW92ZV9saXN0IiwidG9fcmVtb3ZlIiwiZWx0cyIsImZpcnN0X2VsdCIsImxhc3RfZWx0IiwiZmlyc3RfZXhuIiwibGFzdF9leG4iLCJpc19maXJzdCIsImlzX2xhc3QiLCJtZW1fZWx0IiwicHJldiQwIiwiaW5zZXJ0X2FmdGVyJDAiLCJpbnNlcnRfYmVmb3JlJDAiLCJuZXdfZWx0IiwiaW5zZXJ0X2VtcHR5IiwiaW5zZXJ0X2xhc3QiLCJpbnNlcnRfZmlyc3QiLCJyZW1vdmVfbGFzdCIsInJlbW92ZV9maXJzdCIsInNlY29uZCIsIm5ld190IiwidmFsdWUkMCIsIm1vdmVfYmVmb3JlIiwiYW5jaG9yIiwiYWZ0ZXJfZWx0IiwibW92ZV90b19mcm9udCIsIm1vdmVfYWZ0ZXIiLCJtb3ZlX3RvX2JhY2siLCJhXzAxNSIsImJfMDE2Iiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJzdWJzdF9mb3VuZCIsInNlYXJjaF9waHlzaWNhbCIsImlzX3VuaXQiLCJ1bml0IiwidG9fYnVmZmVyX2dlbiIsInRvX2J1ZmZlciIsInRvX2J1ZmZlcl9tYWNoIiwidG9fYnVmZmVyX2h1bSIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsIm9mX2JpZ3N0cmluZ19jb252X2V4biIsIm9mX2JpZ3N0cmluZ19jb252Iiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJvZl9zdHJpbmdfY29udiIsIm9mX3N0cmluZ19tYW55IiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsInNhdmVfc2V4cHMiLCJzYXZlX3NleHBzX21hY2giLCJzYXZlX3NleHBzX2h1bSIsInNhdmUiLCJzYXZlX21hY2giLCJzYXZlX2h1bSIsIm91dHB1dF9tYWNoIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJvdXRwdXRfaHVtIiwibG9hZF9zZXhwc19jb252X2V4biIsImxvYWRfc2V4cHNfY29udiIsImxvYWRfc2V4cF9jb252X2V4biIsImxvYWRfc2V4cF9jb252IiwibG9hZF9yZXZfc2V4cHMiLCJsb2FkX3NleHBzIiwibG9hZF9zZXhwIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJpbnB1dF9zZXhwIiwicGFyc2VfYmlnc3RyaW5nIiwicGFyc2UiLCJzY2FuX3NleHBzX2NvbnYiLCJzY2FuX2ZvbGRfc2V4cHMiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9yZXZfc2V4cHMiLCJzY2FuX3NleHBzIiwic2Nhbl9zZXhwIiwiZGVmYXVsdF9pbmRlbnQiLCJhXzAxNyIsImJfMDE4IiwiYV8wMTkiLCJiXzAyMCIsInRfMDI0IiwidF8wMjMiLCJ0XzAyNiIsInRfMDI1IiwiZTEiLCJlMCIsInNleHAkMCIsInZfdGV4dCIsIm9mX3RleHQiLCJ2YWx1ZV9vZl9zZXhwIiwidGV4dCIsImZpbGVuYW1lIiwiYW5ub3RhdGVkIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX3ZhbHVlIiwiYmluX3NoYXBlX25vX3JhaXNlIiwiYmluX3NpemVfbm9fcmFpc2UiLCJiaW5fd3JpdGVfbm9fcmFpc2UiLCJiaW5fd3JpdGVyX25vX3JhaXNlIiwiYmluX3JlYWRfbm9fcmFpc2UiLCJiaW5fcmVhZF9ub19yYWlzZSQwIiwiYmluX3JlYWRlcl9ub19yYWlzZSIsImJpbl9ub19yYWlzZSIsIm5vX3JhaXNlX29mX3NleHAiLCJvZl9hXzAyNyIsInNleHBfb2Zfbm9fcmFpc2UiLCJvZl9zZXhwX2FsbG93X2V4dHJhX2ZpZWxkc19yZWMiLCJvZl9zZXhwIiwic2V4cF9vZl9kYXRhIiwiYXJnMV8wMDIiLCJyZXMwXzAwMyIsInJlczFfMDA0Iiwia3YiLCJyZWFkIiwiZW5zdXJlX2Nhbl9tb2RpZnkiLCJsb29rdXAiLCJsb29rdXBfZXhuIiwiZW5xdWV1ZV91bmNoZWNrZWQiLCJiYWNrX29yX2Zyb250IiwiY29udGVudHMiLCJlbnF1ZXVlIiwiZW5xdWV1ZV9iYWNrIiwiZW5xdWV1ZV9mcm9udCIsImVucXVldWVfZXhuIiwiZW5xdWV1ZV9iYWNrX2V4biIsImVucXVldWVfZnJvbnRfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2JhY2tfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2JhY2siLCJsb29rdXBfYW5kX21vdmVfdG9fZnJvbnRfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250IiwiZGVxdWV1ZV93aXRoX2tleSIsIm1heWJlX2t2IiwiZGVxdWV1ZV93aXRoX2tleV9leG4iLCJkZXF1ZXVlX2JhY2tfd2l0aF9rZXkiLCJkZXF1ZXVlX2JhY2tfd2l0aF9rZXlfZXhuIiwiZGVxdWV1ZV9mcm9udF93aXRoX2tleSIsImRlcXVldWVfZnJvbnRfd2l0aF9rZXlfZXhuIiwiZGVxdWV1ZSIsImRlcXVldWVfYmFjayIsImRlcXVldWVfZnJvbnQiLCJsYXN0X3dpdGhfa2V5IiwiZmlyc3Rfd2l0aF9rZXkiLCJkZXF1ZXVlX2V4biIsImRlcXVldWVfYmFja19leG4iLCJkZXF1ZXVlX2Zyb250X2V4biIsImFjIiwiZmluaXNoIiwiZGVxdWV1ZV9hbGwiLCJyZW1vdmVfZXhuIiwibG9va3VwX2FuZF9yZW1vdmUiLCJyZXBsYWNlIiwicmVwbGFjZV9vcl9lbnF1ZXVlIiwicmVwbGFjZV9vcl9lbnF1ZXVlX2Zyb250IiwicmVwbGFjZV9vcl9lbnF1ZXVlX2JhY2siLCJyZXBsYWNlX2V4biIsImRyb3AiLCJkcm9wX2JhY2siLCJkcm9wX2Zyb250IiwiY29waWVkIiwib2ZfZGF0YV8wMDgiLCJkZWZhdWx0X21heF9saW5lcyIsImJ5dGVzX3Blcl9saW5lIiwiaGV4X29mX3BvcyIsImhleF9vZl9jaGFyIiwidW50aWwiLCJvZmZzZXQiLCJoZXhfb2ZfbGluZSIsInByaW50YWJsZV9zdHJpbmciLCJjaGFyJDAiLCJsaW5lIiwibGluZV9pbmRleCIsIm1heF9saW5lcyIsImxlbiQwIiwibWF4X2xpbmVzJDAiLCJtYXhfbGluZXMkMSIsIm1heF9saW5lcyQyIiwidW5hYnJpZGdlZF9saW5lcyIsInNraXBfZnJvbSIsInNraXBfdG8iLCJ4XzAwMSIsInByaW50YWJsZSIsInhfMDAyIiwidW5zYWZlX3N1YiIsInN5bWJvbF9jb25jYXQiLCJlc2NhcGVkIiwiY29udGFpbnMiLCJ1cHBlcmNhc2UiLCJsb3dlcmNhc2UiLCJjYXBpdGFsaXplIiwidW5jYXBpdGFsaXplIiwiaW5kZXgiLCJpbmRleF9leG4iLCJpbmRleF9mcm9tIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXgiLCJyaW5kZXhfZXhuIiwicmluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbV9leG4iLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0IiwidG9fbGlzdF9yZXYiLCJpc19zdWZmaXgiLCJpc19wcmVmaXgiLCJsc3BsaXQyX2V4biIsInJzcGxpdDJfZXhuIiwibHNwbGl0MiIsInJzcGxpdDIiLCJzcGxpdF9vbl9jaGFycyIsInNwbGl0X2xpbmVzIiwibGZpbmRpIiwicmZpbmRpIiwibHN0cmlwIiwicnN0cmlwIiwic3RyaXAiLCJ0ciIsInRyX211bHRpIiwiY2hvcF9zdWZmaXhfZXhuIiwiY2hvcF9wcmVmaXhfZXhuIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3ByZWZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3BfcHJlZml4X2lmX2V4aXN0cyIsInN1ZmZpeCIsInByZWZpeCIsImRyb3Bfc3VmZml4IiwiZHJvcF9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeCIsImNvbW1vbl9zdWZmaXhfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeF9sZW5ndGgiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXgyIiwiY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeDJfbGVuZ3RoIiwiY29uY2F0X2FycmF5IiwiY29uY2F0X2xpbmVzIiwib2ZfY2hhciIsIm9mX2NoYXJfbGlzdCIsInBhZF9sZWZ0IiwicGFkX3JpZ2h0IiwiaXNfc3VmZml4JDAiLCJpc19wcmVmaXgkMCIsImlzX3N1YnN0cmluZyQwIiwiaXNfc3Vic3RyaW5nX2F0JDAiLCJzdWJzdHJfaW5kZXgkMCIsInN1YnN0cl9pbmRleF9leG4kMCIsInN1YnN0cl9pbmRleF9hbGwkMCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0JDAiLCJzdWJzdHJfcmVwbGFjZV9hbGwkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwibWluJDAiLCJtYXgkMCIsImFzY2VuZGluZyQwIiwiZGVzY2VuZGluZyQwIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY29tcGFyYXRvciQyIiwiZ2VuX25vbmVtcHR5IiwiZ2VuX25vbmVtcHR5JDAiLCJjaGFycyIsInRha2Vfd2hpbGUiLCJydGFrZV93aGlsZSIsInRvX2ludCIsImNsYW1wIiwiY2xhbXBfZXhuIiwiYmV0d2VlbiIsImRlc2NlbmRpbmciLCJhc2NlbmRpbmciLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiYWxsIiwidGFibGUiLCJzdHJpbmdzIiwiYm9vbCIsInJhaXNlX2ludmFsaWQiLCJpbnB1dCIsImV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUiLCJvZl9zdHJpbmdfaHVtIiwiY2hhcl9nZW4iLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJnZXRfaGV4X2RpZ2l0X2V4biIsImdldF9oZXhfZGlnaXQiLCJpc19oZXhfZGlnaXRfdXBwZXIiLCJpc19oZXhfZGlnaXRfbG93ZXIiLCJpc19oZXhfZGlnaXQiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfd2hpdGVzcGFjZSIsImlzX3ByaW50IiwiaXNfYWxwaGFudW0iLCJpc19hbHBoYSIsImlzX3VwcGVyY2FzZSIsImlzX2xvd2VyY2FzZSIsImlzX2RpZ2l0IiwidW5zYWZlX29mX2ludCIsIm9mX2ludF9leG4iLCJvZl9pbnQiLCJnZW5fZGlnaXQiLCJnZW5fbG93ZXJjYXNlIiwiZ2VuX3VwcGVyY2FzZSIsImdlbl9hbHBoYSIsImdlbl9hbHBoYW51bSIsImdlbl9wcmludCIsImdlbl93aGl0ZXNwYWNlIiwiZ2VuX3VuaWZvcm1faW5jbHVzaXZlIiwiZXJyb3Jfc291cmNlXzAwMyIsInNleHBfMDA0IiwidGFnMiIsInZhbGlkYXRlX29yZGluYXJ5Iiwicm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIiwicm9idXN0bHlfY29tcGFyZSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsInN5bWJvbCQxNSIsInN5bWJvbCQxNiIsInN5bWJvbCQxNyIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsInN5bWJvbCQzNSIsInN5bWJvbCQzNiIsInJvYnVzdGx5X2NvbXBhcmUkMCIsInJvYnVzdF9zaWduIiwidG9fc3RyaW5nXzEyIiwiZ2VuX3VuaWZvcm1fZXhjbCIsImdlbl9pbmNsIiwiZ2VuX3dpdGhvdXRfbmFuIiwiZ2VuX2Zpbml0ZSIsImdlbl9wb3NpdGl2ZSIsImdlbl9uZWdhdGl2ZSIsImdlbl96ZXJvIiwiZ2VuX25hbiIsImdlbl9zdWJub3JtYWwiLCJnZW5fbm9ybWFsIiwiZ2VuX2luZmluaXRlIiwib2ZfZmxvYXQiLCJ0b19mbG9hdCIsInRvX2ludF9leG4iLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwib2Zfc3RyaW5nX29wdCIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMl9leG4iLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnRfZXhuIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwibnVtX2JpdHMiLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwiY2VpbF9wb3cyIiwiZmxvb3JfcG93MiIsImNlaWxfbG9nMiIsImZsb29yX2xvZzIiLCJpc19wb3cyIiwiY2x6IiwiY3R6IiwibG5vdCIsImFicyIsInplcm8iLCJtYXhfdmFsdWVfMzBfYml0cyIsIm9mX2ludDMyIiwidG9faW50MzIiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZWludCIsInRvX25hdGl2ZWludCIsInNpZ24iLCJ0b19zdHJpbmdfaHVtJDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJuYW1lX29mX3QkMCIsInR5cGVyZXBfb2ZfdCQwIiwiZ2VuX3VuaWZvcm1faW5jbCIsImdlbl9sb2dfaW5jbCIsImdlbl9sb2dfdW5pZm9ybV9pbmNsIiwiYml0c19vZl9mbG9hdCIsImZsb2F0X29mX2JpdHMiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJiaW5hYmxlIiwiYmluX25hbWUiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAiLCJiaW5kIiwiam9pbiIsImlnbm9yZV9tIiwiYWxsX3VuaXQiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwicGVlayIsInVucmVhY2hhYmxlX2NvZGUiLCJ0cF9sb2MiLCJzZXhwX29mX25ldmVyX3JldHVybnMiLCJuZXZlcl9yZXR1cm5zIiwib2ZfYV8wMDQiLCJvZl9wZXJtc18wMDUiLCJvZl9hXzAwOCIsIm9mX3Blcm1zXzAwOSIsInJlYWRfb25seSIsIm9mX3JlZiIsInRvX3JlZiIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwiZnN0MyIsInNuZDMiLCJ0cmQzIiwieiIsImJwcmludGYiLCJjb25zdCQwIiwiZXJyb3IiLCJlcnJvcl9zIiwiZm9yY2UiLCJpbnZhbGlkX2FyZ2YiLCJpZnByaW50ZiIsImlzX25vbmUiLCJpc19zb21lIiwia3NwcmludGYiLCJva19leG4iLCJwcmludF9zIiwiZXByaW50X3MiLCJwcm90ZWN0IiwicHJvdGVjdHgiLCJyYWlzZV9zIiwic3ltYm9sJDExIiwic3ByaW50ZiIsInN0YWdlIiwidW5zdGFnZSIsIndpdGhfcmV0dXJuX29wdGlvbiIsImJpbl9zaGFwZV9hcnJheSIsImJpbl9zaXplX2FycmF5IiwiYmluX3dyaXRlX2FycmF5IiwiYmluX3dyaXRlcl9hcnJheSIsImJpbl9yZWFkX2FycmF5IiwiYmluX3JlYWRfYXJyYXkkMCIsImJpbl9yZWFkZXJfYXJyYXkiLCJiaW5fYXJyYXkiLCJjb21wYXJlX2FycmF5IiwiZXF1YWxfYXJyYXkiLCJnbG9iYWxpemVfYXJyYXkiLCJhcnJheV9vZl9zZXhwIiwic2V4cF9vZl9hcnJheSIsImFycmF5X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfYXJyYXkiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaXplX2Jvb2wiLCJiaW5fd3JpdGVfYm9vbCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkX2Jvb2wiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZGVyX2Jvb2wiLCJiaW5fYm9vbCIsImNvbXBhcmVfYm9vbCIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9ib29sIiwiZXF1YWxfYm9vbCIsImdsb2JhbGl6ZV9ib29sIiwiYm9vbF9vZl9zZXhwIiwic2V4cF9vZl9ib29sIiwiYm9vbF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2Jvb2wiLCJiaW5fc2hhcGVfY2hhciIsImJpbl9zaXplX2NoYXIiLCJiaW5fd3JpdGVfY2hhciIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkX2NoYXIiLCJiaW5fcmVhZF9jaGFyJDAiLCJiaW5fcmVhZGVyX2NoYXIiLCJiaW5fY2hhciIsImNvbXBhcmVfY2hhciIsImhhc2hfZm9sZF9jaGFyIiwiaGFzaF9jaGFyIiwiZXF1YWxfY2hhciIsImdsb2JhbGl6ZV9jaGFyIiwiY2hhcl9vZl9zZXhwIiwic2V4cF9vZl9jaGFyIiwiY2hhcl9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2NoYXIiLCJiaW5fc2hhcGVfZmxvYXQiLCJiaW5fc2l6ZV9mbG9hdCIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZXJfZmxvYXQiLCJiaW5fcmVhZF9mbG9hdCIsImJpbl9yZWFkX2Zsb2F0JDAiLCJiaW5fcmVhZGVyX2Zsb2F0IiwiYmluX2Zsb2F0IiwiY29tcGFyZV9mbG9hdCIsImhhc2hfZm9sZF9mbG9hdCIsImhhc2hfZmxvYXQiLCJlcXVhbF9mbG9hdCIsImdsb2JhbGl6ZV9mbG9hdCIsImZsb2F0X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9mbG9hdCIsImJpbl9zaGFwZV9pbnQiLCJiaW5fc2l6ZV9pbnQiLCJiaW5fd3JpdGVfaW50IiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZF9pbnQiLCJiaW5fcmVhZF9pbnQkMCIsImJpbl9yZWFkZXJfaW50IiwiYmluX2ludCIsImNvbXBhcmVfaW50IiwiaGFzaF9mb2xkX2ludCIsImhhc2hfaW50IiwiZXF1YWxfaW50IiwiZ2xvYmFsaXplX2ludCIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQiLCJiaW5fc2hhcGVfaW50MzIiLCJiaW5fc2l6ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDMyJDAiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiY29tcGFyZV9pbnQzMiIsImhhc2hfZm9sZF9pbnQzMiIsImhhc2hfaW50MzIiLCJlcXVhbF9pbnQzMiIsImdsb2JhbGl6ZV9pbnQzMiIsImludDMyX29mX3NleHAiLCJzZXhwX29mX2ludDMyIiwiaW50MzJfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQzMiIsImJpbl9zaGFwZV9pbnQ2NCIsImJpbl9zaXplX2ludDY0IiwiYmluX3dyaXRlX2ludDY0IiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfaW50NjQkMCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJjb21wYXJlX2ludDY0IiwiaGFzaF9mb2xkX2ludDY0IiwiaGFzaF9pbnQ2NCIsImVxdWFsX2ludDY0IiwiZ2xvYmFsaXplX2ludDY0IiwiaW50NjRfb2Zfc2V4cCIsInNleHBfb2ZfaW50NjQiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2ludDY0IiwiYmluX3NoYXBlX2xhenlfdCIsImJpbl9zaXplX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRlcl9sYXp5X3QiLCJiaW5fbGF6eV90IiwiY29tcGFyZV9sYXp5X3QiLCJhXzA1NCIsImJfMDU1IiwiaGFzaF9mb2xkX2xhenlfdCIsImxhenlfdF9vZl9zZXhwIiwic2V4cF9vZl9sYXp5X3QiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9sYXp5X3QiLCJiaW5fc2hhcGVfbGlzdCIsImJpbl9zaXplX2xpc3QiLCJiaW5fd3JpdGVfbGlzdCIsImJpbl93cml0ZXJfbGlzdCIsImJpbl9yZWFkX2xpc3QiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZGVyX2xpc3QiLCJiaW5fbGlzdCIsImNvbXBhcmVfbGlzdCIsImFfMDYzIiwiYl8wNjQiLCJhXzA2NSIsImJfMDY2IiwiaGFzaF9mb2xkX2xpc3QiLCJlcXVhbF9saXN0IiwiYV8wNjciLCJiXzA2OCIsImFfMDY5IiwiYl8wNzAiLCJnbG9iYWxpemVfbGlzdCIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9saXN0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaXplX25hdGl2ZWludCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCQwIiwiYmluX3JlYWRlcl9uYXRpdmVpbnQiLCJiaW5fbmF0aXZlaW50IiwiY29tcGFyZV9uYXRpdmVpbnQiLCJlcXVhbF9uYXRpdmVpbnQiLCJnbG9iYWxpemVfbmF0aXZlaW50IiwiaGFzaF9mb2xkX25hdGl2ZWludCIsImZ1bmMkNSIsImhhc2hfbmF0aXZlaW50IiwibmF0aXZlaW50X29mX3NleHAiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX25hdGl2ZWludCIsImJpbl9zaGFwZV9vcHRpb24iLCJiaW5fc2l6ZV9vcHRpb24iLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlcl9vcHRpb24iLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9vcHRpb24kMCIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImNvbXBhcmVfb3B0aW9uIiwiYV8wODYiLCJiXzA4NyIsImVxdWFsX29wdGlvbiIsImFfMDkyIiwiYl8wOTMiLCJnbG9iYWxpemVfb3B0aW9uIiwiaGFzaF9mb2xkX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9vcHRpb24iLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3dyaXRlX3N0cmluZyIsImJpbl93cml0ZXJfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJjb21wYXJlX3N0cmluZyIsImVxdWFsX3N0cmluZyIsImdsb2JhbGl6ZV9zdHJpbmciLCJoYXNoX2ZvbGRfc3RyaW5nIiwiZnVuYyQ2IiwiaGFzaF9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2Zfc3RyaW5nIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsIm5hbWVfb2Zfc3RyaW5nIiwiYmluX3NoYXBlX2J5dGVzIiwiYmluX3NpemVfYnl0ZXMiLCJiaW5fd3JpdGVfYnl0ZXMiLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRfYnl0ZXMiLCJiaW5fcmVhZF9ieXRlcyQwIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImNvbXBhcmVfYnl0ZXMiLCJlcXVhbF9ieXRlcyIsImdsb2JhbGl6ZV9ieXRlcyIsImJ5dGVzX29mX3NleHAiLCJzZXhwX29mX2J5dGVzIiwiYnl0ZXNfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9ieXRlcyIsImJpbl9zaGFwZV9yZWYiLCJiaW5fc2l6ZV9yZWYiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fcmVhZF9yZWYiLCJiaW5fcmVhZF9yZWYkMCIsImJpbl9yZWFkZXJfcmVmIiwiYmluX3JlZiIsImNvbXBhcmVfcmVmIiwiYV8xMTUiLCJiXzExNiIsImFfMTE3IiwiYl8xMTgiLCJlcXVhbF9yZWYiLCJhXzExOSIsImJfMTIwIiwiYV8xMjEiLCJiXzEyMiIsImdsb2JhbGl6ZV9yZWYiLCJyZWZfb2Zfc2V4cCIsInNleHBfb2ZfcmVmIiwicmVmX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfcmVmIiwiZ3JvdXAkMTMiLCJiaW5fc2hhcGVfdW5pdCIsImJpbl9zaXplX3VuaXQiLCJiaW5fd3JpdGVfdW5pdCIsImJpbl93cml0ZXJfdW5pdCIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF91bml0JDAiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImNvbXBhcmVfdW5pdCIsImVxdWFsX3VuaXQiLCJnbG9iYWxpemVfdW5pdCIsImhhc2hfZm9sZF91bml0IiwiZnVuYyQ3IiwiaGFzaF91bml0IiwidW5pdF9vZl9zZXhwIiwic2V4cF9vZl91bml0IiwidW5pdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX3VuaXQiLCJncm91cCQxNCIsInNleHBfb2ZfZXhuIiwib2ZfcmVwciIsInRvX3JlcHIiLCJraWIiLCJtaWIiLCJnaWIiLCJuX2FicyIsImJ5dGVzX2ludF9leG4iLCJiaW5fc2l6ZV90X2Zyb3plbiIsImJpbl93cml0ZV90X2Zyb3plbiIsImJpbl9yZWFkX3RfZnJvemVuIiwiYmluX3JlYWRfdF9mcm96ZW4kMCIsImJpbl9zaGFwZV90X2Zyb3plbiIsImJpbl93cml0ZXJfdF9mcm96ZW4iLCJiaW5fcmVhZGVyX3RfZnJvemVuIiwiYmluX3RfZnJvemVuIiwic3RhYmxlX3dpdG5lc3NfdF9mcm96ZW4iLCJtYXhfbWVtX3dhaXRpbmdfZ2MiLCJtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMiLCJzdWJfc2hhcmVkIiwiYnN0ciIsInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMiLCJyZWFkZXIiLCJsaW1pdCIsImludmFsaWRfZGF0YSIsImJpbl9yZWFkZXIiLCJyZXN1bHQiLCJleHBlY3RlZF9wb3MiLCJlbGVtZW50X2xlbmd0aCIsInJlYWRfYmluX3Byb3QiLCJ3cml0ZV9iaW5fcHJvdF9rbm93bl9zaXplIiwid3JpdGUiLCJkYXRhX2xlbiIsInRvdGFsX2xlbiIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInZfMDA1IiwicmVzMF8wMTEiLCJ2XzAwNiIsInJlczFfMDEyIiwidl8wMDciLCJyZXMyXzAxMyIsInBvc19hZnRlcl9zaXplX2hlYWRlciIsInBvc19hZnRlcl9kYXRhIiwiYXJnNF8wMjMiLCJhcmczXzAyMiIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInZfMDE0Iiwidl8wMTUiLCJyZXMxXzAyNSIsInZfMDE2IiwicmVzMl8wMjYiLCJ2XzAxNyIsInJlczNfMDI3Iiwidl8wMTgiLCJyZXM0XzAyOCIsIndyaXRlX2Jpbl9wcm90Iiwid3JpdGVyIiwibGFzdF9ub25tYXRjaF9wbHVzX29uZSIsIm1pbl9wb3MiLCJnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwicGFkZGluZyIsImRhdGFfZW5kIiwiZ2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZ19sIiwic2V0X3BhZGRlZF9maXhlZF9zdHJpbmdfZmFpbGVkIiwiaGVhZF9vcl90YWlsIiwic2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyIsInNsZW4iLCJmaXJzdF9ub25tYXRjaCIsIm1heF9wb3MiLCJzZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwiZ2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyIsImRhdGFfYmVnaW4iLCJnZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nX2wiLCJ0b19ieXRlcyIsIm9mX2J5dGVzIiwiYnl0ZXMiLCJ0b19oZXgiLCJvZl9oZXhfZXhuIiwib2ZfYmluYXJ5X2V4biIsImFjY3VtIiwidG9fYmluYWJsZSQwIiwiZGlnZXN0X3N0cmluZyIsImRpZ2VzdF9ieXRlcyIsImRpZ2VzdF9maWxlX2Jsb2NraW5nIiwicGF0aCIsImRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdSIsImNoYW5uZWwiLCJvdXRwdXRfYmxvY2tpbmciLCJvYyIsImlucHV0X2Jsb2NraW5nIiwiaWMiLCJkaWdlc3Rfc3ViYnl0ZXMiLCJzdWJieXRlcyIsImRpZ2VzdF9iaW5fcHJvdCIsInVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIiwiZGlnZXN0X3N1YmJpZ3N0cmluZyIsImRpZ2VzdF9iaWdzdHJpbmciLCJlcnJvcl9zb3VyY2VfMDE0IiwiZXJyb3Jfc291cmNlXzAyMiIsImVycm9yX3NvdXJjZV8wMzAiLCJiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiIsInRvX2V4dGVybmFsIiwib2ZfZXh0ZXJuYWwiLCJ2X3V0Y19vZmZzZXRfaW5fc2Vjb25kcyIsInZfaXNfZHN0Iiwidl9hYmJydiIsImFiYnJ2IiwiaXNfZHN0IiwidXRjX29mZnNldF9pbl9zZWNvbmRzIiwiYWJicnZfMDExIiwiaXNfZHN0XzAwOSIsInV0Y19vZmZzZXRfaW5fc2Vjb25kc18wMDciLCJ2X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInZfc2Vjb25kcyIsInhfMDE1Iiwic2Vjb25kcyIsInRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInNlY29uZHNfMDE5IiwidGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXzAxIiwiYXJnXzAyMCIsImJuZHNfMDE2IiwiYXJnXzAxOCIsImJuZHNfMDE2JDAiLCJ2X3N0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV8iLCJ2X25ld19yZWdpbWUiLCJuZXdfcmVnaW1lIiwic3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2VwIiwibmV3X3JlZ2ltZV8wMjciLCJhcmdfMDI4IiwiYm5kc18wMjQiLCJhcmdfMDI2IiwiYm5kc18wMjQkMCIsInY1IiwidjciLCJ2NiIsInZfbmFtZSIsInZfb3JpZ2luYWxfZmlsZW5hbWUiLCJ2X2RpZ2VzdCIsInZfdHJhbnNpdGlvbnMiLCJ2X2xhc3RfcmVnaW1lX2luZGV4Iiwidl9kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSIsInZfbGVhcF9zZWNvbmRzIiwibGVhcF9zZWNvbmRzIiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUiLCJsYXN0X3JlZ2ltZV9pbmRleCIsInRyYW5zaXRpb25zIiwiZGlnZXN0Iiwib3JpZ2luYWxfZmlsZW5hbWUiLCJ0cmFuc2l0aW9uc18wMzkiLCJkaWdlc3RfMDM3Iiwib3JpZ2luYWxfZmlsZW5hbWVfMDM1IiwibmFtZV8wMzMiLCJsYXN0X3JlZ2ltZV9pbmRleF8wNDEiLCJsZWFwX3NlY29uZHNfMDQ1IiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVfMDQzIiwiYXJnXzA0NiIsImJuZHNfMDMyIiwiYXJnXzA0NCIsImJuZHNfMDMyJDAiLCJhcmdfMDQyIiwiYm5kc18wMzIkMSIsImFyZ18wNDAiLCJibmRzXzAzMiQyIiwiYXJnXzAzOCIsImJuZHNfMDMyJDMiLCJhcmdfMDM2IiwiYm5kc18wMzIkNCIsImFyZ18wMzQiLCJibmRzXzAzMiQ1Iiwiem9uZSIsImJvb2xfb2ZfaW50IiwibG9uZyQwIiwiaW50MzJfb2ZfY2hhciIsImNociIsImlucHV0X2xvbmdfYXNfaW50MzIiLCJzYjEiLCJzYjIiLCJzYjMiLCJzYjQiLCJpbnB1dF9sb25nX2FzX2ludCIsImlucHV0X2xvbmdfYXNfaW50NjMiLCJpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMiLCJpbnQ2M19vZl9jaGFyIiwic2hpZnQiLCJiaXRzIiwibG9uZ19sb25nIiwicmVzdWx0JDAiLCJyZXN1bHQkMSIsInJlc3VsdCQyIiwicmVzdWx0JDMiLCJyZXN1bHQkNCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJpbnB1dF9saXN0IiwibHN0IiwibHN0JDAiLCJpbnB1dF9hcnJheSIsImlucHV0X3JlZ2ltZSIsImFiYnJ2X2luZGV4IiwiaW5wdXRfdHpfZmlsZV9nZW4iLCJpbnB1dF90cmFuc2l0aW9uIiwiaW5wdXRfbGVhcF9zZWNvbmQiLCJ1dGNfbG9jYWxfY291bnQiLCJzdGRfd2FsbF9jb3VudCIsImxlYXBfY291bnQiLCJ0cmFuc2l0aW9uX2NvdW50IiwidHlwZV9jb3VudCIsImFiYnJ2X2NoYXJfY291bnQiLCJ0cmFuc2l0aW9uX3RpbWVzIiwidHJhbnNpdGlvbl9pbmRpY2VzIiwicmVnaW1lcyIsInJhd19hYmJydnMiLCJpbmRleGVkX2FiYnJ2cyIsImFiYnJ2cyIsIm5leHRfaW5kZXgiLCJhYmJydnMkMCIsInJlZ2ltZXMkMCIsInJhd190cmFuc2l0aW9ucyIsInRpbWUiLCJyZWdpbWUiLCJyZXN0IiwibHR0IiwiaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIiwicmVhZF9oZWFkZXIiLCJtYWdpYyIsImJhZF92ZXJzaW9uIiwidmVyc2lvbiIsImlucHV0X3R6X2ZpbGVfdjEiLCJpbnB1dF90el9maWxlIiwiem9uZW5hbWUiLCJtYWtlX3pvbmUiLCJyZWFzb24iLCJvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUiLCJvZl91dGNfb2Zmc2V0IiwibGlrZWx5X21hY2hpbmVfem9uZXMiLCJ1dGMiLCJyZXNldF90cmFuc2l0aW9uX2NhY2hlIiwiZ2V0X3JlZ2ltZV9leG4iLCJlZmZlY3RpdmVfc3RhcnRfdGltZSIsIm1vZGUiLCJpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWMiLCJpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWMiLCJiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHMiLCJ0cmFuc2l0aW9uIiwiaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCIsImluZGV4JDAiLCJpbmRleCQxIiwiaW5kZXgkMiIsImluZGV4JDMiLCJpbmRleCQ0Iiwib2ZfaW50NjNfc2Vjb25kcyIsInRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leCIsIm9mX3NwYW5fc2luY2VfZXBvY2giLCJ0b19zcGFuX3NpbmNlX2Vwb2NoIiwib2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2giLCJ0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCIsImluZGV4X29mX2RhdGVfYW5kX29mZGF5IiwiaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQiLCJpbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCIsImluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leCIsImluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leCIsImluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50XyIsImFmdGVyIiwiYmVmb3JlIiwiaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfIiwiaW5kZXhfYWJicmV2aWF0aW9uX2V4biIsImluZGV4X29mZnNldF9mcm9tX3V0Y19leG4iLCJyYXciLCJ2YWxpZGF0aW9uX2ZhaWxlZCIsImFyZzJfMDAzIiwicmVzMF8wMDQiLCJyZXMxXzAwNSIsInJlczJfMDA2IiwiY3JlYXRlX2V4biIsImNyZWF0ZV9zdGFibGVfd2l0bmVzcyIsInJhd19zdGFibGVfd2l0bmVzcyIsInR5cGVfZXF1YWwiLCJyYWNlX2ZyZWVfY3JlYXRlX2xvb3AiLCJjZWxsIiwibmV3X3giLCJjdXJyZW50IiwidHlwZW5hbWUkMSIsImFsbG93ZWRfaW50cyIsImFsbG93ZWRfaW50cyQwIiwidHlwZW5hbWUkMCIsImltbWVkaWFjeSIsIm5ldmVyX3dpdGhfbmFtZSIsIm5ldmVyIiwidW5rbm93biIsIm9wdGlvbiIsImxpc3QkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwicmVmIiwidHVwbGUyIiwidHVwbGUzIiwidHVwbGU0IiwidHVwbGU1IiwiZnVuY3Rpb24kMCIsImludCQwIiwicmVmJDAiLCJhcnJheSQwIiwidHVwbGUyJDAiLCJ0dXBsZTMkMCIsInR1cGxlNCQwIiwidHVwbGU1JDAiLCJmdW5jdGlvbiQxIiwib3B0aW9uJDAiLCJsYXp5X3QiLCJwb3NzaWJseV91bmJveGVkIiwiY2hpbGRfdHlwZSIsInRoZV9vbmx5X2ZpZWxkIiwidmFyaWFudCIsInRhZyIsIm1vcmUiLCJubyIsIm1vcmVfYXJnX2xpc3QiLCJvbmVfYXJnX2xpc3QiLCJub19hcmdfbGlzdCIsIm5vX2FyZ19jb3VudCIsImhhc2hfc2V0IiwiZ2V0X3dpcF9jb21wdXRhdGlvbiIsImNvbXAiLCJzZXRfZmluYWxfY29tcHV0YXRpb24iLCJzaGFyZSIsIm9mX3R5cGVyZXAiLCJ0eXBlcmVwIiwid2l0bmVzcyIsInR5cGVyZXAxIiwidHlwZXJlcDIiLCJpMSIsImkyIiwicmEiLCJybiIsIndpdG5lc3MkMCIsImludF9pc192YWx1ZSIsImludF9hc192YWx1ZSIsImludF9hc192YWx1ZV9leG4iLCJ2YWx1ZV9hc19pbnRfZXhuIiwidmFsdWVfYXNfaW50IiwidmFsdWVfaXNfaW50Iiwib2ZfdHlwZXJlcCQwIiwib2ZfdHlwZXJlcF9leG4iLCJ2YWx1ZV9hc19pbnQkMCIsIm9mX3R5cGVyZXAkMSIsIm9mX3R5cGVyZXBfZXhuJDAiLCJvZl90eXBlcmVwJDIiLCJvZl90eXBlcmVwX2V4biQxIiwiZGVzdCIsImVycm9yX3NvdXJjZV8wNjMiLCJlcnJvcl9zb3VyY2VfMDQ2Iiwib2ZfYV8wMDEiLCJvZl9iXzAwMiIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJvZl9iXzAxMSIsImFyZzFfMDEzIiwiYXJnMF8wMTIiLCJyZXMxXzAxNSIsImN1cnJ5IiwidW5jdXJyeSIsIm1hcF9mc3QiLCJtYXBfc25kIiwibWFwX2JvdGgiLCJtYXAyIiwieTIiLCJ5MSIsImNtcDEiLCJjbXAyIiwieSQwIiwiZXExIiwiZXEyIiwib2ZfYV8wMTkiLCJvZl9iXzAyMCIsIm9mX2NfMDIxIiwic2V4cF8wMjkiLCJhcmcyXzAyNSIsInJlczBfMDI2IiwicmVzMV8wMjciLCJyZXMyXzAyOCIsIm9mX2FfMDMxIiwib2ZfYl8wMzIiLCJvZl9jXzAzMyIsImFyZzJfMDM2IiwiYXJnMV8wMzUiLCJyZXMxXzAzOCIsInJlczJfMDM5Iiwib2ZfYyIsImN1cnJ5JDAiLCJ1bmN1cnJ5JDAiLCJtYXBfZnN0JDAiLCJtYXBfc25kJDAiLCJtYXBfdHJkIiwibWFwX2FsbCIsImYzIiwibWFwMiQwIiwiejIiLCJ6MSIsImdldDMiLCJjbXAzIiwieiQwIiwiYzEiLCJjMiIsImVxMyIsImFyZzFfMDQ4IiwiYXJnMF8wNDciLCJyZXMwXzA0OSIsInJlczFfMDUwIiwiYV8wNTEiLCJiXzA1MiIsInRfMDU0IiwidF8wNTMiLCJ0XzA1NiIsInRfMDU1Iiwic2V4cF8wNjIiLCJhcmcxXzA1OSIsImFyZzBfMDU4IiwicmVzMF8wNjAiLCJyZXMxXzA2MSIsImFyZzFfMDY1IiwiYXJnMF8wNjQiLCJyZXMwXzA2NiIsInJlczFfMDY3IiwiczIiLCJzMSIsInMyJDAiLCJzMSQwIiwid2Vla2RheXMiLCJ3ZWVrZW5kcyIsInNpemVfMDE4IiwicmFuZG9tXzAxOSIsInNpemVfMDEyIiwicmFuZG9tXzAxMyIsInNpemVfMDEwIiwicmFuZG9tXzAxMSIsInJhbmRvbV8wMDkiLCJzaXplXzAwNiIsInJhbmRvbV8wMDciLCJoYXNoXzAwNSIsImhhc2hfMDA1JDAiLCJoYXNoXzAwNSQxIiwiaGFzaF8wMDUkMiIsImhhc2hfMDA1JDMiLCJoYXNoXzAwNSQ0IiwiaGFzaF8wMDUkNSIsImhhc2hfMDA1JDYiLCJ0YWczIiwidGFnNCIsInRhZzUiLCJ0YWc2IiwidG9fc3RyaW5nX2xvbmciLCJhdG9tIiwidW5zdWdnZXN0ZWQiLCJpbnRfY2xhdXNlIiwic2hvcnRfY2xhdXNlIiwibG9uZ19jbGF1c2UiLCJpc29fODYwMV93ZWVrZGF5X251bWJlciIsIm51bV9kYXlzX2luX3dlZWsiLCJudW1fZGF5cyIsImZyb20iLCJ0byIsImlzX3N1bl9vcl9zYXQiLCJpbnQ2M190d28iLCJpbnQ2M190ZW4iLCJpbnQ2M190d2VudHkiLCJpbnQ2M19iaWxsaW9uIiwibWF4X2JpbGxpb25zIiwiZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIiwiZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSIsIm1heF9pbnQ2M193aXRoIiwiZGlnaXRzIiwiYmlsbGlvbnMiLCJkaWdpdF9vZl9jaGFyIiwid3JpdGVfMV9kaWdpdF9pbnQiLCJyZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyIsInRlbnMiLCJvbmVzIiwid3JpdGVfMl9kaWdpdF9pbnQiLCJ3cml0ZV8zX2RpZ2l0X2ludCIsIndyaXRlXzRfZGlnaXRfaW50Iiwid3JpdGVfNV9kaWdpdF9pbnQiLCJ3cml0ZV82X2RpZ2l0X2ludCIsIndyaXRlXzdfZGlnaXRfaW50Iiwid3JpdGVfOF9kaWdpdF9pbnQiLCJ3cml0ZV85X2RpZ2l0X2ludCIsInJlYWRfMV9kaWdpdF9pbnQiLCJyZWFkXzJfZGlnaXRfaW50IiwicmVhZF8zX2RpZ2l0X2ludCIsInJlYWRfNF9kaWdpdF9pbnQiLCJyZWFkXzVfZGlnaXRfaW50IiwicmVhZF82X2RpZ2l0X2ludCIsInJlYWRfN19kaWdpdF9pbnQiLCJyZWFkXzhfZGlnaXRfaW50IiwicmVhZF85X2RpZ2l0X2ludCIsInJhaXNlX2ludDYzX292ZXJmbG93IiwicmVhZF9pbnQ2MyIsImRpZ2l0c19vZl9iaWxsaW9ucyIsInJlbWFpbmRlciIsImRpdmlkZV9hbmRfcm91bmRfdXAiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsIm1pbl9zY2FsZSIsIm1heF9zY2FsZSIsImNoZWNrX2RpZ2l0cyIsImNoZWNrX3BvcyIsImNoZWNrX3dyaXRlIiwid3JpdGVfMV9kaWdpdF9pbnQkMCIsIndyaXRlXzJfZGlnaXRfaW50JDAiLCJ3cml0ZV8zX2RpZ2l0X2ludCQwIiwid3JpdGVfNF9kaWdpdF9pbnQkMCIsIndyaXRlXzVfZGlnaXRfaW50JDAiLCJ3cml0ZV82X2RpZ2l0X2ludCQwIiwid3JpdGVfN19kaWdpdF9pbnQkMCIsIndyaXRlXzhfZGlnaXRfaW50JDAiLCJ3cml0ZV85X2RpZ2l0X2ludCQwIiwid3JpdGVfaW50NjMiLCJkaWdpdHMkMCIsImludDYzJDAiLCJjdXN0b21fcHJpbnRmXzAwNCIsImN1c3RvbV9wcmludGZfMDAzIiwiaW50NjMiLCJjaGVja19yZWFkIiwicmVhZF8xX2RpZ2l0X2ludCQwIiwicmVhZF8yX2RpZ2l0X2ludCQwIiwicmVhZF8zX2RpZ2l0X2ludCQwIiwicmVhZF80X2RpZ2l0X2ludCQwIiwicmVhZF81X2RpZ2l0X2ludCQwIiwicmVhZF82X2RpZ2l0X2ludCQwIiwicmVhZF83X2RpZ2l0X2ludCQwIiwicmVhZF84X2RpZ2l0X2ludCQwIiwicmVhZF85X2RpZ2l0X2ludCQwIiwicmVhZF9pbnQ2MyQwIiwicmVhZF9pbnQ2M19kZWNpbWFsIiwiZGVjaW1hbHMiLCJzY2FsZSQwIiwicm91bmRfZXhhY3QiLCJhbGxvd191bmRlcnNjb3JlIiwicm91bmRfYXQkMCIsInNjYWxlIiwiZGl2aXNvciIsInJvdW5kX2F0IiwiZGlnaXQiLCJpbmNyZW1lbnQiLCJkZXNjcmlwdGlvbnMiLCJzaXplXzAzNCIsInJhbmRvbV8wMzUiLCJzaXplXzAzMiIsInJhbmRvbV8wMzMiLCJzaXplXzAzMCIsInJhbmRvbV8wMzEiLCJyYW5kb21fMDI5Iiwic2l6ZV8wMjYiLCJyYW5kb21fMDI3Iiwic2l6ZV8wMjQiLCJyYW5kb21fMDI1Iiwic2l6ZV8wMjIiLCJyYW5kb21fMDIzIiwic2l6ZV8wMjAiLCJyYW5kb21fMDIxIiwiaGFzaF8wMTEiLCJoYXNoXzAxMSQwIiwiaGFzaF8wMTEkMSIsImhhc2hfMDExJDIiLCJoYXNoXzAxMSQzIiwiaGFzaF8wMTEkNCIsImhhc2hfMDExJDUiLCJoYXNoXzAxMSQ2IiwiaGFzaF8wMTEkNyIsImhhc2hfMDExJDgiLCJoYXNoXzAxMSQ5IiwiaGFzaF8wMTEkMTAiLCJoYXNoXzAxMSQxMSIsImphbiIsImZlYiIsIm1hciIsImFwciIsIm1heSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9jdCIsIm5vdiIsImRlYyIsImlzX2phbiIsImlzX2ZlYiIsImlzX21hciIsImlzX2FwciIsImlzX21heSIsImlzX2p1biIsImlzX2p1bCIsImlzX2F1ZyIsImlzX3NlcCIsImlzX29jdCIsImlzX25vdiIsImlzX2RlYyIsImphbl92YWwiLCJmZWJfdmFsIiwibWFyX3ZhbCIsImFwcl92YWwiLCJtYXlfdmFsIiwianVuX3ZhbCIsImp1bF92YWwiLCJhdWdfdmFsIiwic2VwX3ZhbCIsIm9jdF92YWwiLCJub3ZfdmFsIiwiZGVjX3ZhbCIsImphbiQwIiwiZmViJDAiLCJtYXIkMCIsImFwciQwIiwibWF5JDAiLCJqdW4kMCIsImp1bCQwIiwiYXVnJDAiLCJzZXAkMCIsIm9jdCQwIiwibm92JDAiLCJkZWMkMCIsImphbl9mdW4iLCJmZWJfZnVuIiwibWFyX2Z1biIsImFwcl9mdW4iLCJtYXlfZnVuIiwianVuX2Z1biIsImp1bF9mdW4iLCJhdWdfZnVuIiwic2VwX2Z1biIsIm9jdF9mdW4iLCJub3ZfZnVuIiwiZGVjX2Z1biIsIm1ha2VfbWF0Y2hlciIsImphbl9nZW4iLCJmZWJfZ2VuIiwibWFyX2dlbiIsImFwcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwibWF5X2dlbiIsImNvbXBpbGVfYWNjJDUiLCJqdW5fZ2VuIiwiY29tcGlsZV9hY2MkNiIsImp1bF9nZW4iLCJjb21waWxlX2FjYyQ3IiwiYXVnX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJzZXBfZ2VuIiwiY29tcGlsZV9hY2MkOSIsIm9jdF9nZW4iLCJjb21waWxlX2FjYyQxMCIsIm5vdl9nZW4iLCJjb21waWxlX2FjYyQxMSIsImRlY19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsIm51bV9tb250aHMiLCJhbGxfc3RyaW5ncyIsImFsbF9zdHJpbmdzJDAiLCJlcnJvcl9zb3VyY2VfMDA3IiwiaXNfbGVhcF95ZWFyIiwieWVhciIsImNyZWF0ZTAiLCJtb250aCIsImRheSIsIm9mX2ludF91bmNoZWNrZWQiLCJkYXlzX2luX21vbnRoIiwiaW52YWxpZCIsIm1zZyIsImN1c3RvbV9wcmludGZfMDA1IiwiZGF5c19pbl9tb250aCQwIiwiaW52YWxpZF92YWx1ZV9mb3JfaW50ZXJuYWxfdXNlIiwidG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQiLCJ0b19zdHJpbmdfaXNvODYwMV9iYXNpYyIsInRvX3N0cmluZ19hbWVyaWNhbiIsInBhcnNlX3llYXI0IiwicGFyc2VfbW9udGgiLCJwYXJzZV9kYXkiLCJvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyIsImVuc3VyZSIsIm1vbnRoX251bSIsIm1vbnRoX2FicnYiLCJkJDAiLCJtJDAiLCJ5ZWFyJDAiLCJ4XzAwOCIsInNvbWVfaXNfcmVwcmVzZW50YWJsZSIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsIm9wdCIsInZhbHVlX2V4biIsImRlZmF1bHQkMCIsIm9mX2ludF9leG4kMCIsInRvX2ludCQwIiwidW5peF9lcG9jaCIsIm9mX3llYXIiLCJvZl9kYXRlIiwiZGF0ZSIsImNfMTBfMDAwIiwiY18xNF83ODAiLCJjXzNfNjUyXzQyNSIsInRvX2RhdGUiLCJkYXlzIiwiZGRkIiwiZGRkJDAiLCJ5JDEiLCJtaSIsInkkMiIsInVuaXhfZXBvY2gkMCIsImFkZF9kYXlzIiwiYWRkX2RheXMkMCIsImFkZF9tb250aHMiLCJ0b3RhbF9tb250aHMiLCJtJDEiLCJkJDEiLCJhZGRfeWVhcnMiLCJkYXlfb2Zfd2VlayIsIm5vbl9sZWFwX3llYXJfdGFibGUiLCJsZWFwX3llYXJfdGFibGUiLCJvcmRpbmFsX2RhdGUiLCJsYXN0X3dlZWtfb2ZfeWVhciIsImZpcnN0X29mX3llYXIiLCJpcyIsImNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIiwib3JkaW5hbCIsIndlZWtkYXkiLCJ3ZWVrIiwid2Vla19udW1iZXJfYW5kX3llYXIiLCJ3ZWVrX251bWJlciIsImlzX3dlZWtlbmQiLCJpc193ZWVrZGF5IiwiaXNfYnVzaW5lc3NfZGF5IiwiaXNfaG9saWRheSIsImRpZmZfd2Vla2VuZF9kYXlzIiwiZDEiLCJkMiIsIm51bV9zYXRzdW5fY3Jvc3NpbmdzIiwiZGlmZl93ZWVrZGF5cyIsImFkZF9kYXlzX3NraXBwaW5nIiwic2tpcCIsInN0ZXAiLCJrJDEiLCJ0X25leHQiLCJmaXJzdF9kYXlfc2F0aXNmeWluZyIsImNvbmRpdGlvbiIsIm5leHRfZGF5X3NhdGlzZnlpbmciLCJuZXh0X2RheSIsImZvbGxvd2luZ193ZWVrZGF5IiwicHJldmlvdXNfd2Vla2RheSIsInJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSIsInJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkiLCJyb3VuZF9mb3J3YXJkX3RvX2J1c2luZXNzX2RheSIsInJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSIsImFkZF93ZWVrZGF5cyIsImFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIiwiYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIiwiYWRkX2J1c2luZXNzX2RheXMiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3IiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19iYWMiLCJkYXRlc19iZXR3ZWVuIiwibCQwIiwid2Vla2RheXNfYmV0d2VlbiIsImFsbF9kYXRlcyIsImZpcnN0X2RhdGUiLCJmaXJzdF93ZWVrZGF5IiwiZGF0ZV9hbmRfd2Vla2RheXMiLCJidXNpbmVzc19kYXRlc19iZXR3ZWVuIiwiZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIiLCJkb3ciLCJkb3ckMCIsInRwbHVzMSIsImN1ciIsInN1ZmZpeGVzIiwiYW1fc3VmZml4ZXMiLCJwbV9zdWZmaXhlcyIsImZpbmRfc3VmZml4Iiwic3VmZml4ZXMkMCIsInN1ZmZpeGVzJDEiLCJoYXNfY29sb24iLCJkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3AiLCJpbnZhbGlkX3N0cmluZyIsImFtIiwiYW1fb3JfcG0iLCJleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyIsImhyIiwiaHIkMSIsImV4cGVjdF9zZWNvbmRzIiwic3Vic2VjX25vbnplcm8iLCJzdWJzZWNfbGVuIiwic3Vic2VjX3BvcyIsInNlYyIsInNlYyQxIiwibm9uemVybyIsInN1YnNlY19ub256ZXJvJDAiLCJzdWJzZWNfbGVuJDEiLCJzdWJzZWNfcG9zJDAiLCJzZWMkMiIsImhyJDAiLCJzZWMkMCIsInN1YnNlY19sZW4kMCIsInBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQiLCJtYXRjaCQxIiwidmVyaWZ5IiwiZSQwIiwic2hpZnRfZGVjaW1hbF9wb2ludCIsImJ5IiwicyQwIiwicyQxIiwibm90X3plcm8iLCJ1bmRlcnNjb3JlIiwidW5kZXJzY29yZSQwIiwiZSQxIiwiZXhwIiwiZXhwJDAiLCJuZWciLCJzaWduZWQiLCJzJDMiLCJkJDIiLCJzdWYiLCJwcmVmIiwicyQ0IiwiYnkkMCIsImJ5JDEiLCJzJDUiLCJzJDYiLCJieSQyIiwicyQ3IiwicyQyIiwiZmxvYXRfdG9fc3RyaW5nIiwieF9hYnMiLCJ0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlIiwicmVhbGx5X29mX3N0cmluZyIsImZsb2F0X29mX3N0cmluZyIsInN0ciQwIiwic3RyJDEiLCJzdHIkMiIsIm9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiIsIm9mX211bHQiLCJ0b19tdWx0Iiwib2ZfcGVyY2VudGFnZSIsInRvX3BlcmNlbnRhZ2UiLCJvZl9icCIsInRvX2JwIiwib2ZfYnBfaW50IiwidG9fYnBfaW50Iiwic2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCIsIm9mX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYSIsInRvX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYSIsIm9mX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSIsInRvX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSIsInJvdW5kX3NpZ25pZmljYW50Iiwic2lnbmlmaWNhbnRfZGlnaXRzIiwicm91bmRfZGVjaW1hbF9tdWx0IiwiZGVjaW1hbF9kaWdpdHMiLCJyb3VuZF9kZWNpbWFsX3BlcmNlbnRhZ2UiLCJyb3VuZF9kZWNpbWFsX2JwIiwiYXJnMF8wMTAiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxOCIsInJlczBfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJleHBvbmVudCIsInByZWNpc2lvbiIsImV4cG9uZW50X0UiLCJkZWNpbWFsIiwiY29tcGFjdCIsImNvbXBhY3RfRSIsImhleCIsImhleF9FIiwiZm9ybWF0X2Zsb2F0IiwicHJlY2lzaW9uJDAiLCJwcmVjaXNpb24kMSIsInByZWNpc2lvbiQyIiwicHJlY2lzaW9uJDMiLCJwcmVjaXNpb24kNCIsInByZWNpc2lvbiQ1IiwiZm9ybWF0IiwidG9fc3RyaW5nJDEiLCJiaW5fc2hhcGVfdCQ3IiwidW5jaGVja2VkX3ZhbHVlIiwiYXBwbHlfd2l0aF9ub25lX2FzX25hbiIsIm9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSIsInRvX211bHRfd2l0aF9ub25lX2FzX25hbiIsImJpbl9zaGFwZV90JDgiLCJiaW5fc2hhcGVfdCQ5IiwiYmluX3NoYXBlX3QkMTAiLCJiaW5fd3JpdGVyX3QkNiIsImJpbl9yZWFkZXJfdCQ2IiwiYmluX3QkNiIsInR5cGVuYW1lX29mX3QkMSIsIm5hbWVfb2ZfdCQxIiwidHlwZXJlcF9vZl90JDEiLCJiaW5fc2hhcGVfdCQxMSIsImJpbl9zaGFwZV90JDEyIiwiaXNfemVybyIsImFwcGx5IiwiaXNfbmFuIiwiaXNfaW5mIiwic2lnbl9leG4iLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYkMCIsInRfb2Zfc2V4cF9hbGxvd19uYW5fYW5kX2luZiIsImZvcm1hdCQwIiwidG9fc3RyaW5nJDIiLCJiaW5fc2hhcGVfdCQxMyIsInRvX3N0cmluZyQzIiwiYmluX3NoYXBlX3QkMTQiLCJiaW5fd3JpdGVyX3QkNyIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3QkNyIsInRvX3N0cmluZyQ0Iiwic2V4cF9vZl90JDciLCJyYW5kb21pemUiLCJzcGFuIiwicmFuZG9tX3N0YXRlIiwicGVyY2VudCIsIm11bHQiLCJmYWN0b3IiLCJmb3JtYXRfZGVjaW1hbCIsInRlbnRocyIsInVuaXRzIiwic2hvcnRfc3RyaW5nIiwibXMiLCJ1cyIsIm5zIiwic3VmZml4JDYiLCJuJDIiLCJuJDMiLCJuJDQiLCJuc18wMTkiLCJ1c18wMTciLCJtc18wMTUiLCJzZWNfMDEzIiwibWluXzAxMSIsImhyXzAwOSIsInNpZ25fMDA3IiwiYXJnXzAxNiIsImJuZHNfMDA2JDMiLCJibmRzXzAwNiQ0IiwiYm5kc18wMDYkNSIsIm1hZ25pdHVkZSIsIm5hbm9zZWNvbmQiLCJtaWNyb3NlY29uZCIsIm1pbGxpc2Vjb25kIiwibWludXRlIiwiaG91ciIsInRvX3BhcnRzIiwiaW50ZWdyYWwiLCJmcmFjdGlvbmFsIiwibmFub3NlY29uZHMiLCJuYW5vc2Vjb25kcyQwIiwic2Vjb25kcyQwIiwibWludXRlcyIsIm1pY3Jvc2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsInRvX25zIiwidG9fdXMiLCJ0b19tcyIsInRvX3NlYyIsInRvX21pbiIsInRvX2hyIiwidG9fZGF5Iiwib2ZfbnMiLCJvZl91cyIsIm9mX21zIiwib2Zfc2VjIiwib2ZfaW50MzJfc2Vjb25kcyIsIm9mX21pbiIsIm9mX2hyIiwib2ZfZGF5Iiwib2ZfaW50X25zIiwib2ZfaW50X3VzIiwib2ZfaW50X21zIiwib2ZfaW50X3NlYyIsIm9mX2ludF9taW4iLCJvZl9pbnRfaHIiLCJvZl9pbnRfZGF5IiwiZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSIsInVuaXRfb2ZfdGltZSIsInNjYWxlX2J5X3VuaXRfb2ZfdGltZSIsImRheSQwIiwieCQyIiwidG9fc2hvcnRfc3RyaW5nIiwidF9vZl9zZXhwX3YxX3YyIiwiaXNfdjIiLCJzZXhwX29mX3RfdjFfdjIiLCJhYnNfdCIsInRvX3VuaXRfb2ZfdGltZSIsIm9mX3VuaXRfb2ZfdGltZSIsInN1ZmZpeF9vZl91bml0X29mX3RpbWUiLCJwYXJzZV9zdWZmaXgiLCJ1bml0X29mX3RpbWVfbGlzdCQxIiwidW5pdF9vZl90aW1lX2xpc3QiLCJ1bml0X29mX3RpbWVfbGlzdCQwIiwic3RhdGVfaXNfZmluYWwiLCJuZWdhdGl2ZSIsIm1hZ25pdHVkZSQwIiwidG9rZW4iLCJzdGF0ZSQwIiwic3VmZml4X2luZGV4IiwidW50aWxfaW5kZXgiLCJmbG9hdF9zdHJpbmciLCJtYWduaXR1ZGUkMSIsInN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaSIsInN1bV90IiwidG9fZmxvYXRfc3RyaW5nIiwiZml4dXBfdW5pdF9vZl90aW1lIiwic3VtX3QkMCIsInJlbV90IiwiZml4dXBfbWFnbml0dWRlIiwidG9faW50X3N0cmluZ19hbmRfc3VtIiwidW5pdF9zcGFuIiwibmV3X3N1bV90IiwibmV3X3JlbV90IiwibmV4dF9tYWduaXR1ZGUiLCJuZXh0X3N1bV90IiwibmV4dF9yZW1fdCIsIm1hZ25pdHVkZSQyIiwibmV3X3N1bV90JDAiLCJ1bml0X29mX3RpbWUkMCIsIm1hZ25pdHVkZV9zdHJpbmciLCJkYXlfc3RyaW5nIiwiaG91cl9zdHJpbmciLCJzdW1fdCQxIiwibWludXRlX3N0cmluZyIsIm9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaSIsImhhbGZfdWxwIiwib3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpIiwibnVtYmVyX29mX2RpZ2l0cyIsImRlbGltaXRlciIsImFsaWduX2RlY2ltYWwiLCJmbG9hdCQxIiwic3VmZml4JDciLCJsbyIsImhpIiwibWlsbGVuaXVtIiwidG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJpc192YWxpZCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuYyIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biIsImN1c3RvbV9wcmludGZfMDAxIiwic3RhcnRfb2ZfZGF5Iiwic3RhcnRfb2ZfbmV4dF9kYXkiLCJjYW5kaWRhdGUiLCJhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5IiwibnMkMCIsInVzJDAiLCJtcyQwIiwidG9fc3RyaW5nX2dlbiIsImRyb3BfbXMiLCJkcm9wX3VzIiwidHJpbSIsIm1vZCIsImRyb3BfdXMkMCIsImZsb2F0X3NlYyIsImRvbnRfcHJpbnRfdXMiLCJkb250X3ByaW50X21zIiwiZG9udF9wcmludF9zIiwidG9fc3RyaW5nX3RyaW1tZWQiLCJ0b19zZWNfc3RyaW5nIiwidG9fbWlsbGlzZWNvbmRfc3RyaW5nIiwic21hbGxfZGlmZiIsIm9mZGF5MSIsIm9mZGF5MiIsIm9mZGF5MSQwIiwib2ZkYXkyJDAiLCJjcmVhdGVfZnJvbV9wYXJzZWQiLCJzdWJzZWMiLCJvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCIsImVwb2NoIiwiaXNfZWFybGllciIsImlzX2xhdGVyIiwib2Zfc3Bhbl9pbl9zZWNvbmRzIiwic3Bhbl9pbl9zZWNvbmRzIiwib2ZfdGltZV9pbl9zZWNvbmRzIiwidGltZV9pbl9zZWNvbmRzIiwicmVsYXRpdmUiLCJhYmJyZXZpYXRpb24iLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IiwicHJldl9jbG9ja19zaGlmdCIsIm5leHRfY2xvY2tfc2hpZnQiLCJkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW0iLCJvZmZzZXRfZnJvbV91dGMiLCJhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGEiLCJhYnNfZGlmZiIsIm9mX2RhdGVfb2ZkYXkiLCJvZmRheSIsIm9mX2RhdGVfb2ZkYXlfcHJlY2lzZSIsInByb3Bvc2VkX3RpbWUiLCJzaGlmdF9hbW91bnQiLCJzaGlmdF9zdGFydCIsInNoaWZ0X2JhY2t3YXJkcyIsImRhdGVfY2FjaGUiLCJyZXNldF9kYXRlX2NhY2hlIiwic2V0X2RhdGVfY2FjaGUiLCJyZWwiLCJlZmZlY3RpdmVfZGF5X3N0YXJ0IiwiZWZmZWN0aXZlX2RheV91bnRpbCIsImNhY2hlX3N0YXJ0X2luY2wiLCJjYWNoZV91bnRpbF9leGNsIiwiZW5kX29mX2RheSIsInRvX29mZGF5IiwidG9fZGF0ZV9vZmRheSIsInRvX2RhdGVfb2ZkYXlfcHJlY2lzZSIsImNsb2NrX3NoaWZ0X2FmdGVyIiwiY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0IiwiYW1vdW50Iiwib2ZkYXkkMCIsImFtYmlndWl0eSIsImFtb3VudCQwIiwic3RhcnQkMCIsImNvbnZlcnQiLCJmcm9tX3R6IiwidG9fdHoiLCJzdGFydF90aW1lIiwidXRjX29mZnNldCQwIiwidXRjX2Vwb2NoIiwib2Zmc2V0X3N0cmluZyIsInV0Y19vZmZzZXQiLCJpc191dGMiLCJ0b19zdHJpbmdfYWJzX3BhcnRzIiwib2Zmc2V0X3N0cmluZyQwIiwidG9fc3RyaW5nX2Fic190cmltbWVkIiwidG9fc3RyaW5nX2FicyIsInRvX3N0cmluZ191dGMiLCJ0b19zZWNfc3RyaW5nX3dpdGhfem9uZSIsInRvX2ZpbGVuYW1lX3N0cmluZyIsIm9mX2ZpbGVuYW1lX3N0cmluZyIsImRhdGUkMCIsIm9mZGF5JDEiLCJvZl9sb2NhbGl6ZWRfc3RyaW5nIiwib2NjdXJyZW5jZSIsImJlZm9yZV9vcl9hZnRlciIsImZpcnN0X2d1ZXNzX2RhdGUiLCJmaXJzdF9ndWVzcyIsImVuc3VyZV9jb2xvbl9pbl9vZmZzZXQiLCJvZmZzZXRfbGVuZ3RoIiwib2Zfc3RyaW5nX2dlbiIsImRlZmF1bHRfem9uZSIsImZpbmRfem9uZSIsIm9mZGF5JDMiLCJkYXRlJDEiLCJ0eiIsIm9mZGF5JDIiLCJvZmRheV90b19zZWMiLCJvZCIsInR6JDAiLCJ1dGNfb2Zmc2V0JDEiLCJ1dGNfdCIsIm9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQiLCJ6b25lX25hbWUiLCJ0b19hYnNvbHV0ZSIsIm9mX2Fic29sdXRlIiwiYWJzb2x1dGUiLCJzZWNfcGVyX2RheSIsInRvX2RheXNfZnJvbV9lcG9jaCIsInNlY19zaW5jZV9lcG9jaCIsImdtdGltZV9sb3dlcl9ib3VuZCIsImRheXNfZnJvbV9lcG9jaF9hcHByb3giLCJvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2hfaW5fc2VjIiwiZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2giLCJuZXh0X211bHRpcGxlX2ludGVybmFsIiwiY2FuX2VxdWFsX2FmdGVyIiwiYmFzZSIsImludGVydmFsIiwiYmFzZV90b19hZnRlciIsIm5leHRfbXVsdGlwbGUiLCJwcmV2X211bHRpcGxlIiwiY2FuX2VxdWFsX2JlZm9yZSIsIm5vdyIsImZsb2F0X25zIiwib2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUiLCJvZl90aW1lIiwidG9kYXkiLCJzdWZmaXgkNSIsImFyY2hfc2l4dHlmb3VyIiwibWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmciLCJtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyIsIm1hZyIsIm9mX3BhcnRzIiwib2ZfaW50NjNfbnMiLCJvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXMiLCJ0b19pbnQ2M19ucyIsInRvX2ludF91cyIsInRvX2ludF9tcyIsInRvX2ludF9zZWMiLCJ0b19pbnRfbnMiLCJ1Iiwic2NhbGVfaW50NjMiLCJzY2FsZV9pbnQiLCJkaXYiLCJ0b19wcm9wb3J0aW9uYWxfZmxvYXQiLCJ0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9pbnQ2M19leG4iLCJ0b19pbnQ2MyIsIm9mX2ludDYzX2V4biQwIiwidG9faW50NjMkMCIsIm51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUiLCJzcGFuX3BhcnRfbWFnbml0dWRlIiwid3JpdGVfY2hhciIsIndyaXRlXzJfY2hhcnMiLCJjaGFyMSIsImNoYXIyIiwid3JpdGVfZGlnaXRzIiwid3JpdGVfaWZfbm9uX2VtcHR5IiwibmFub3Nfb2ZfbWlsbGlzZWNvbmQiLCJuYW5vc19vZl9taWNyb3NlY29uZCIsImludDYzXzYwIiwiaW50NjNfMjQiLCJob3VycyIsImRpZ2l0c19vZl9kIiwiZGlnaXRzX29mX2giLCJkaWdpdHNfb2ZfbSIsImRlY2ltYWxfdW5pdCIsImRlY2ltYWxfdW5pdF9pbnRlZ2VyIiwiZGVjaW1hbF91bml0X2JpbGxpb250aHMiLCJkaWdpdHNfb2ZfZGVjaW1hbF91bml0IiwiZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0Iiwic2lnbl9sZW4iLCJkX2xlbiIsImhfbGVuIiwibV9sZW4iLCJkaWdpdHNfbGVuIiwiZGVjaW1hbHNfbGVuIiwiZGVjaW1hbF91bml0X2xlbiIsInN0cmluZ19sZW5ndGgiLCJpbnQ2M18xMCIsIm1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3ciLCJhZGRfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fZmFjdG9yX29mIiwibWluX2RheXNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyIsIm1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93IiwibWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmIiwibmVnX25zIiwicm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmciLCJoYXNfZGlnaXQiLCJlbmRfb2ZfZGlnaXRzIiwibmVnX2ludGVnZXIiLCJkZWNpbWFsX3BvcyIsImVuZF9vZl9kZWNpbWFscyIsImVuZF9wb3MiLCJtaW5fd2l0aG91dF91bmRlcmZsb3ciLCJuZWdfaW50ZWdlcl9ucyIsImZyYWN0aW9uX3BvcyIsIm5lZ19uYW5vc19vZl9wYXJ0IiwiZGVjaW1hbF9ucyIsInNleHBfb2Zfc3BhbiIsInNwYW5fb2Zfc2V4cCIsImZsb2F0JDIiLCJzaW5jZV91bml4X2Vwb2NoIiwiaGFsZl9taWNyb3NlY29uZCIsInRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taSIsIm1pbl9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfciIsIm1heF9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfciIsIm9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taSIsIm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlIiwibWF4X3ZhbHVlX3JlcHJlc2VudGFibGUiLCJvZl9pbnQ2M19leG4kMSIsInRvX2ludDYzJDEiLCJmYWlsIiwib2ZfaW50NjNfZXhuJDIiLCJ0b19pbnQ2MyQyIiwiY29tcGFyZSQ2IiwiYXJnX3R5cGUiLCJpc19pbnZhbGlkIiwib2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0Iiwic3ViX2V4biIsInRvX3N0cmluZ193aXRoX3VuaXQiLCJzaXh0eSIsInRob3VzYW5kIiwidW5pdCQwIiwibnVtX2RpZ2l0cyIsInRvX21pY3Jvc2Vjb25kX3N0cmluZyIsImV2ZXJ5Iiwic3RhcnQkMSIsInRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIiwib2ZfaW50NjNfbnNfc2luY2VfZXBvY2giLCJvdmVyZmxvdyIsImFkZF9vdmVyZmxvd2VkIiwic3ViX292ZXJmbG93ZWQiLCJhZGRfc2F0dXJhdGluZyIsInN1Yl9zYXR1cmF0aW5nIiwidG9faW50X25zX3NpbmNlX2Vwb2NoIiwib2ZfaW50X25zX3NpbmNlX2Vwb2NoIiwidG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IiwidG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluIiwibWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluIiwib2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0Iiwib2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwidG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vIiwibnNfc2luY2VfZXBvY2giLCJuc19wZXJfZGF5IiwiYXBwcm94X2RheXNfZnJvbV9lcG9jaCIsIm5zX3NpbmNlX3N0YXJ0X29mX2RheSIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5Iiwib2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vIiwic3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoIiwic3Bhbl9zaW5jZV9lcG9jaCIsInR3b19kaWdpdF9vZl9zdHJpbmciLCJuc19vZl8xMDBfbXMiLCJuc19vZl8xMF9tcyIsIm5zX29mXzFfbXMiLCJuc19vZl8xMDBfdXMiLCJuc19vZl8xMF91cyIsIm5zX29mXzFfdXMiLCJuc19vZl8xMDBfbnMiLCJuc19vZl8xMF9ucyIsIm5zX29mXzFfbnMiLCJzZWNvbmRzX3NwYW4iLCJzdWJfc2Vjb25kX3NwYW4iLCJvZmRheV9zdHJpbmdfd2l0aF96b25lIiwiZGF0ZV9zdHJpbmciLCJvZmRheV9zdHJpbmciLCJwcmVmaXhfbGVuIiwic3VmZml4X2xlbiIsInNlY29uZHNfc3RyaW5nIiwic3ViX3NlY29uZF9zdHJpbmciLCJzX3N0cmluZyIsIm1fc3RyaW5nIiwiaF9zdHJpbmciLCJtdWx0aXBsaWVyIiwiZGF5c19mcm9tX2Vwb2NoJDAiLCJkYXlzX2Zyb21fZXBvY2hfaW5fbnMiLCJhdHRlbXB0Iiwic3Bhbl9vZl9kdXJhdGlvbiIsInRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCIsImR1cmF0aW9ucyIsInNwYW5zIiwic3RyaW5nX2J5dGVzIiwic3JjX3BvcyIsInNyY19sZW4iLCJkc3RfcG9zIiwic3JjX3BvcyQwIiwiYnl0ZXNfYnl0ZXMiLCJzdHJpbmdfYmlnc3RyaW5nIiwiYnl0ZXNfYmlnc3RyaW5nIiwiYmlnc3RyaW5nX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19zdHJpbmciLCJiaWdzdHJpbmdfYnl0ZXMiLCJzaXplXzAwOSIsInJhbmRvbV8wMTAiLCJzaXplXzAwNyIsImhhc2hfMDA4IiwiaGFzaF8wMDgkMCIsImhhc2hfMDA4JDEiLCJoYXNoXzAwOCQyIiwiYmFzZV9sZW4iLCJnZXRfbm9fYm91bmRzX2NoZWNrIiwiZm9sZGkkMCIsIndyYXBfc3ViX24iLCJvbl9lcnJvciIsImJsaXRfdG8iLCJibGl0X3RvX3N0cmluZyIsImJsaXRfdG9fYnl0ZXMiLCJibGl0X3RvX2JpZ3N0cmluZyIsImJsaXRfYmFzZSIsImJsaXRfZnJvbSIsImJsaXRfZnJvbV9zdHJpbmciLCJibGl0X2Zyb21fYmlnc3RyaW5nIiwib2ZfYmFzZSIsImNvbmNhdF9nZW4iLCJjcmVhdGVfZHN0IiwiYmxpdF9kc3QiLCJ0cyIsImNvbmNhdF9zdHJpbmciLCJjb25jYXRfYmlnc3RyaW5nIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UiLCJjaGVjayIsInV1aWQiLCJnbG9iYWxpemUkMCIsImNoZWNrX2Zvcl93aGl0ZXNwYWNlJDAiLCJjaGVjayQwIiwicHAkMCIsImdsb2JhbGl6ZSQxIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UkMSIsImNoZWNrJDEiLCJwcCQxIiwib2Zfc3RyaW5nJDEiLCJnbG9iYWxpemUkMiIsInR5cGVuYW1lX29mX3QkMiIsInR5cGVyZXBfb2ZfdCQyIiwiY2hlY2skMiIsInBwJDIiLCJvZl9zdHJpbmckMiIsImluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIiwiYXJnX3R5cGUkMCIsInNleHBfYXNfc3RyaW5nIiwiYXJnMV8wMDMiLCJhcmcwXzAwMiIsInZfMDAxIiwicmVzMV8wMTEiLCJzZXJpYWxpemVkX3NleHAiLCJhcmcxXzAxNSIsInZfMDEyIiwidl8wMTMiLCJyZXMxXzAxNyIsImV4cGVjdGVkX2Jpbl9pbyIsImJpbmFibGVfbSIsInNlcmlhbGl6ZWRfYmluX2lvIiwiYXJnMl8wMjIiLCJhcmcxXzAyMSIsInJlczFfMDI0Iiwidl8wMTkiLCJyZXMyXzAyNSIsImFyZzFfMDI5Iiwidl8wMjYiLCJ2XzAyNyIsInNleHBzIiwic2V4cHMkMCIsInNlcmlhbGl6ZWRfZWxlbWVudHMiLCJzZXhwcyQxIiwic29ydGVkX3NleHBzIiwic29ydGVkX3NlcmlhbGl6ZWQiLCJ2XzAzMiIsInZfMDMzIiwicmVzMV8wMzciLCJzZXhwX3Blcm11dGF0aW9ucyIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJ2XzAzOCIsInJlczBfMDQyIiwidl8wMzkiLCJyZXMxXzA0MyIsImlzX2NvbmNhdGVuYXRpb24iLCJsb29wIiwicmV2X3NraXBwZWQiLCJzdHJpbmdzJDAiLCJjb250aW51ZSQwIiwic3RyaW5nJDAiLCJiaW5faW9fZWxlbWVudHMiLCJiaW5faW9faGVhZGVyIiwic2VyaWFsaXplZCIsImVsZW1lbnRzX3N0cmluZyIsInNlcmlhbGl6YXRpb25fbWF0Y2hlcyIsImFyZzFfMDUxIiwiYXJnMF8wNTAiLCJ2XzA0NCIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0NyIsInJlczFfMDQ4IiwicmVzMF8wNTIiLCJyZXMxXzA1MyIsInBlcm11dGF0YXRpb25zIiwiZWxlbWVudHMiLCJhcmcxXzA1NyIsImFyZzBfMDU2Iiwidl8wNTQiLCJyZXMwXzA1OCIsInJlczFfMDU5IiwiYmxhbmciLCJjbXBfYSQwIiwiYV8wMDEkMCIsImJfMDAyJDAiLCJjbXBfYSQ1IiwiY21wX2EkMSIsImNtcF9hJDIiLCJjbXBfYSQzIiwiYV8wMjciLCJhXzAyNSIsImFfMDIzIiwiYl8wMjgiLCJiXzAyNiIsImJfMDI0IiwiYV8wMzEiLCJiXzAzMiIsImNtcF9hJDQiLCJhXzAzMyIsImJfMDM0IiwiYV8wMzUiLCJiXzAzNiIsImFfMDM3JDAiLCJiXzAzOCQwIiwiYV8wMzkiLCJiXzA0MCIsImFfMDQ5IiwiYV8wNDciLCJiXzA1MCIsImJfMDQ4IiwiYV8wNTMiLCJiXzA1NCIsImFfMDU1IiwiYl8wNTYiLCJhXzA1NyIsImJfMDU4IiwiYV8wNjEiLCJhXzA1OSIsImJfMDYyIiwiYl8wNjAiLCJhXzA3MSIsImJfMDcyIiwiYXJnJDAiLCJhcmckMSIsImFyZyQyIiwiaHN2JDMiLCJoc3YkNCIsImFyZyQzIiwiaHN2JDUiLCJhcmckNCIsImEwJDEiLCJoc3YkNiIsImhzdiQ3IiwiaHN2JDgiLCJhMCQyIiwiaHN2JDkiLCJ2MCQxIiwidjAkMiIsInYwJDMiLCJzdWJ0ZXJtcyIsInQzIiwidDEkMSIsImNvbnRhaW5zX25vX2NvbnN0YW50cyIsInRydWUkMCIsImZhbHNlJDAiLCJub3QiLCJhbmRhbHNvIiwib3RoZXIiLCJ0MWIiLCJ0MWEiLCJvcmVsc2UiLCJpZiQwIiwib2ZfYV8wNzMiLCJhcmcxXzA3NSIsImFyZzBfMDc0IiwicmVzMF8wNzYiLCJyZXMxXzA3NyIsImFyZzFfMDc5IiwiYXJnMF8wNzgiLCJyZXMwXzA4MCIsInJlczFfMDgxIiwiYXJnMl8wODYiLCJhcmcxXzA4NSIsImFyZzBfMDg0IiwicmVzMF8wODciLCJyZXMxXzA4OCIsInJlczJfMDg5IiwiYXJnMF8wOTAiLCJyZXMwXzA5MSIsImdhdGhlcl9jb25qdW5jdHMiLCJ0cyQxIiwidHMkMCIsImdhdGhlcl9kaXNqdW5jdHMiLCJhbmQiLCJvciIsImF1eCIsImJhc2Vfb2Zfc2V4cCIsImt3Iiwia3ckMCIsImRlZm5zIiwiYmFzZV9ncmFtbWFyIiwiY29uc3RhbnQiLCJjb25zdGFudF92YWx1ZSIsInRzJDIiLCJ0cyQzIiwidHMkNCIsInQyJDEiLCJ0MSQyIiwidHMkNSIsImxvb3AkMCIsInBlbmRpbmciLCJwZW5kaW5nJDAiLCJwZW5kaW5nJDIiLCJwZW5kaW5nJDEiLCJvdGhlciQwIiwib3RoZXIkMSIsImV2YWwkMCIsImJhc2VfZXZhbCIsInNwZWNpYWxpemUiLCJldmFsX3NldCIsInNldF9vZl9iYXNlIiwiYiQwIiwiYiQxIiwiYSQwIiwiYSQxIiwiYiQyIiwiYSQyIiwiY29uZCIsImNvbmQkMCIsImEkMyIsImV2YWwkMSIsImFfZ2VuZXJhdG9yIiwic2VsZiIsImFfc2hyaW5rZXIiLCJiaW5vcCIsIm9wZXJhdG9yIiwicmlnaHQkMCIsImxlZnQkMCIsImVsc2UkMCIsInRoZW4iLCJpZiQxIiwiYV9vYnNlcnZlciIsIm9mX2J5dGVzX2ludDYzIiwiYnl0ZXNfaW50NjMiLCJpc2NhbGUiLCJieXRlc19pbnQ2NCIsImJ5dGVzX2Zsb2F0Iiwib2ZfYnl0ZXNfaW50Iiwib2ZfYnl0ZXNfaW50NjRfZXhuIiwib2ZfYnl0ZXNfZmxvYXRfZXhuIiwia2lsb2J5dGUiLCJtZWdhYnl0ZSIsImdpZ2FieXRlIiwidGVyYWJ5dGUiLCJwZXRhYnl0ZSIsImV4YWJ5dGUiLCJ3b3JkIiwia2lsb2J5dGVzIiwibWVnYWJ5dGVzIiwiZ2lnYWJ5dGVzIiwidGVyYWJ5dGVzIiwicGV0YWJ5dGVzIiwiZXhhYnl0ZXMiLCJ3b3Jkc19pbnRfZXhuIiwid29yZHNfZmxvYXQiLCJvZl9raWxvYnl0ZXMiLCJvZl9tZWdhYnl0ZXMiLCJvZl9naWdhYnl0ZXMiLCJvZl90ZXJhYnl0ZXMiLCJvZl9wZXRhYnl0ZXMiLCJvZl9leGFieXRlcyIsIm9mX3dvcmRzX2ludCIsIm9mX3dvcmRzX2Zsb2F0X2V4biIsImJhc2Vfc3RyIiwiZXh0X2NoYXIiLCJsYXJnZXN0X21lYXN1cmUiLCJ0X2FicyIsIm5vX21hdGNoIiwidmFsX3NleHAiLCJ1bml0X25hbWUiLCJ0JDUiLCJ0JDQiLCJ0JDMiLCJ0JDIiLCJjdXN0b21fcHJpbnRmXzAwNiIsImN1c3RvbV9wcmludGZfMDA3IiwiY3VzdG9tX3ByaW50Zl8wMDgiLCJjdXN0b21fcHJpbnRmXzAwOSIsImN1c3RvbV9wcmludGZfMDEwIiwiY3VzdG9tX3ByaW50Zl8wMTEiLCJ0b19zdHJpbmdfc2hvcnQiLCJ0b191bml0c19zdHIiLCJ0b191bml0IiwiZXh0IiwiZl9hYnMiLCJjdXN0b21fcHJpbnRmXzAxNCIsImN1c3RvbV9wcmludGZfMDE1IiwiY3VzdG9tX3ByaW50Zl8wMTYiLCJjdXN0b21fcHJpbnRmXzAxNyIsImN1c3RvbV9wcmludGZfMDE4IiwiY3VzdG9tX3ByaW50Zl8wMTkiLCJjdXN0b21fcHJpbnRmXzAyMCIsImN1c3RvbV9wcmludGZfMDIxIiwiY3VzdG9tX3ByaW50Zl8wMjIiLCJjdXN0b21fcHJpbnRmXzAyMyIsImN1c3RvbV9wcmludGZfMDI0IiwiY3VzdG9tX3ByaW50Zl8wMjUiLCJjdXN0b21fcHJpbnRmXzAyNiIsIm5fZnJvbnQiLCJuX2JhY2siLCJmcm9udCIsImJhY2siLCJyZXZfYmFjayIsImZyb250JDAiLCJyZXZfZnJvbnQiLCJiYWNrJDAiLCJyYWlzZV9mcm9udF9pbnZhcmlhbnQiLCJyYWlzZV9iYWNrX2ludmFyaWFudCIsInBlZWtfZnJvbnRfZXhuIiwicGVla19iYWNrX2V4biIsImRyb3BfZnJvbnRfZXhuIiwiZHJvcF9iYWNrX2V4biIsIm9wdGlvbmFsIiwicGVla19mcm9udCIsInBlZWtfYmFjayIsInBlZWtfZXhuIiwiZHJvcF9leG4iLCJpbml0JDAiLCJzb21lX3giLCJzb21lX3kiLCJ0b19saXN0JDEiLCJ0b19saXN0JDIiLCJ0b19saXN0JDMiLCJzdW0kMSIsImZpbmRfbWFwJDEiLCJ0b19hcnJheSQxIiwiZm9sZF9yZXN1bHQkMSIsImJ1aWxkIiwiZXJyb3Jfc291cmNlXzA1NCIsImVycm9yX3NvdXJjZV8wOTYiLCJuYW1lcyQwIiwidjE2IiwidjE1IiwidjE0IiwidjEzIiwidjEyIiwidjExIiwidjEwIiwidjkiLCJ2OCIsInNpemUkNiIsInNpemUkNyIsInNpemUkOCIsInNpemUkOSIsInNpemUkMTAiLCJzaXplJDExIiwic2l6ZSQxMiIsInNpemUkMTMiLCJ2X21pbm9yX3dvcmRzIiwidl9wcm9tb3RlZF93b3JkcyIsInZfbWFqb3Jfd29yZHMiLCJ2X21pbm9yX2NvbGxlY3Rpb25zIiwidl9tYWpvcl9jb2xsZWN0aW9ucyIsInZfaGVhcF93b3JkcyIsInZfaGVhcF9jaHVua3MiLCJ2X2xpdmVfd29yZHMiLCJ2X2xpdmVfYmxvY2tzIiwidl9mcmVlX3dvcmRzIiwidl9mcmVlX2Jsb2NrcyIsInZfbGFyZ2VzdF9mcmVlIiwidl9mcmFnbWVudHMiLCJ2X2NvbXBhY3Rpb25zIiwidl90b3BfaGVhcF93b3JkcyIsInZfc3RhY2tfc2l6ZSIsIm4kNSIsIm4kNiIsIm4kNyIsIm4kOCIsIm4kOSIsIm4kMTAiLCJuJDExIiwibiQxMiIsIm4kMTMiLCJoc3YkMTAiLCJoc3YkMTEiLCJoc3YkMTIiLCJoc3YkMTMiLCJoc3YkMTQiLCJzdGFja19zaXplIiwidG9wX2hlYXBfd29yZHMiLCJjb21wYWN0aW9ucyIsImZyYWdtZW50cyIsImxhcmdlc3RfZnJlZSIsImZyZWVfYmxvY2tzIiwiZnJlZV93b3JkcyIsImxpdmVfYmxvY2tzIiwibGl2ZV93b3JkcyIsImhlYXBfY2h1bmtzIiwiaGVhcF93b3JkcyIsIm1ham9yX2NvbGxlY3Rpb25zIiwibWlub3JfY29sbGVjdGlvbnMiLCJtYWpvcl93b3JkcyIsInByb21vdGVkX3dvcmRzIiwibWlub3Jfd29yZHMiLCJzdGFja19zaXplXzA0NyIsInRvcF9oZWFwX3dvcmRzXzA0NSIsImNvbXBhY3Rpb25zXzA0MyIsImZyYWdtZW50c18wNDEiLCJsYXJnZXN0X2ZyZWVfMDM5IiwiZnJlZV9ibG9ja3NfMDM3IiwiZnJlZV93b3Jkc18wMzUiLCJsaXZlX2Jsb2Nrc18wMzMiLCJsaXZlX3dvcmRzXzAzMSIsImhlYXBfY2h1bmtzXzAyOSIsImhlYXBfd29yZHNfMDI3IiwibWFqb3JfY29sbGVjdGlvbnNfMDI1IiwibWlub3JfY29sbGVjdGlvbnNfMDIzIiwibWFqb3Jfd29yZHNfMDIxIiwicHJvbW90ZWRfd29yZHNfMDE5IiwibWlub3Jfd29yZHNfMDE3IiwiYXJnXzA0OCIsImJuZHNfMDE2JDEiLCJibmRzXzAxNiQyIiwiYm5kc18wMTYkMyIsImJuZHNfMDE2JDQiLCJibmRzXzAxNiQ1IiwiYm5kc18wMTYkNiIsImFyZ18wMzIiLCJibmRzXzAxNiQ3IiwiYXJnXzAzMCIsImJuZHNfMDE2JDgiLCJibmRzXzAxNiQ5IiwiYm5kc18wMTYkMTAiLCJhcmdfMDI0IiwiYm5kc18wMTYkMTEiLCJhcmdfMDIyIiwiYm5kc18wMTYkMTIiLCJibmRzXzAxNiQxMyIsImJuZHNfMDE2JDE0IiwidjE3Iiwic2l6ZSQxNCIsInZfZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwibiQxNCIsImhzdiQxNSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18wODkiLCJzdGFja19zaXplXzA4NyIsInRvcF9oZWFwX3dvcmRzXzA4NSIsImNvbXBhY3Rpb25zXzA4MyIsImZyYWdtZW50c18wODEiLCJsYXJnZXN0X2ZyZWVfMDc5IiwiZnJlZV9ibG9ja3NfMDc3IiwiZnJlZV93b3Jkc18wNzUiLCJsaXZlX2Jsb2Nrc18wNzMiLCJsaXZlX3dvcmRzXzA3MSIsImhlYXBfY2h1bmtzXzA2OSIsImhlYXBfd29yZHNfMDY3IiwibWFqb3JfY29sbGVjdGlvbnNfMDY1IiwibWlub3JfY29sbGVjdGlvbnNfMDYzIiwibWFqb3Jfd29yZHNfMDYxIiwicHJvbW90ZWRfd29yZHNfMDU5IiwibWlub3Jfd29yZHNfMDU3IiwiYXJnXzA5MCIsImJuZHNfMDU2IiwiYXJnXzA4OCIsImJuZHNfMDU2JDAiLCJhcmdfMDg2IiwiYm5kc18wNTYkMSIsImFyZ18wODQiLCJibmRzXzA1NiQyIiwiYXJnXzA4MiIsImJuZHNfMDU2JDMiLCJhcmdfMDgwIiwiYm5kc18wNTYkNCIsImFyZ18wNzgiLCJibmRzXzA1NiQ1IiwiYXJnXzA3NiIsImJuZHNfMDU2JDYiLCJhcmdfMDc0IiwiYm5kc18wNTYkNyIsImFyZ18wNzIiLCJibmRzXzA1NiQ4IiwiYXJnXzA3MCIsImJuZHNfMDU2JDkiLCJhcmdfMDY4IiwiYm5kc18wNTYkMTAiLCJhcmdfMDY2IiwiYm5kc18wNTYkMTEiLCJhcmdfMDY0IiwiYm5kc18wNTYkMTIiLCJhcmdfMDYyIiwiYm5kc18wNTYkMTMiLCJhcmdfMDYwIiwiYm5kc18wNTYkMTQiLCJhcmdfMDU4IiwiYm5kc18wNTYkMTUiLCJ2X21pbm9yX2hlYXBfc2l6ZSIsInZfbWFqb3JfaGVhcF9pbmNyZW1lbnQiLCJ2X3NwYWNlX292ZXJoZWFkIiwidl92ZXJib3NlIiwidl9tYXhfb3ZlcmhlYWQiLCJ2X3N0YWNrX2xpbWl0Iiwidl9hbGxvY2F0aW9uX3BvbGljeSIsInZfd2luZG93X3NpemUiLCJ2X2N1c3RvbV9tYWpvcl9yYXRpbyIsInZfY3VzdG9tX21pbm9yX3JhdGlvIiwidl9jdXN0b21fbWlub3JfbWF4X3NpemUiLCJhXzA5MyIsImJfMDk0IiwieF8wOTciLCJjdXN0b21fbWlub3JfbWF4X3NpemUiLCJjdXN0b21fbWlub3JfcmF0aW8iLCJjdXN0b21fbWFqb3JfcmF0aW8iLCJ3aW5kb3dfc2l6ZSIsImFsbG9jYXRpb25fcG9saWN5Iiwic3RhY2tfbGltaXQiLCJtYXhfb3ZlcmhlYWQiLCJ2ZXJib3NlIiwic3BhY2Vfb3ZlcmhlYWQiLCJtYWpvcl9oZWFwX2luY3JlbWVudCIsIm1pbm9yX2hlYXBfc2l6ZSIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8xMTkiLCJjdXN0b21fbWlub3JfcmF0aW9fMTE3IiwiY3VzdG9tX21ham9yX3JhdGlvXzExNSIsIndpbmRvd19zaXplXzExMyIsImFsbG9jYXRpb25fcG9saWN5XzExMSIsInN0YWNrX2xpbWl0XzEwOSIsIm1heF9vdmVyaGVhZF8xMDciLCJ2ZXJib3NlXzEwNSIsInNwYWNlX292ZXJoZWFkXzEwMyIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzEwMSIsIm1pbm9yX2hlYXBfc2l6ZV8wOTkiLCJhcmdfMTIwIiwiYm5kc18wOTgiLCJhcmdfMTE4IiwiYm5kc18wOTgkMCIsImFyZ18xMTYiLCJibmRzXzA5OCQxIiwiYXJnXzExNCIsImJuZHNfMDk4JDIiLCJhcmdfMTEyIiwiYm5kc18wOTgkMyIsImFyZ18xMTAiLCJibmRzXzA5OCQ0IiwiYXJnXzEwOCIsImJuZHNfMDk4JDUiLCJhcmdfMTA2IiwiYm5kc18wOTgkNiIsImFyZ18xMDQiLCJibmRzXzA5OCQ3IiwiYXJnXzEwMiIsImJuZHNfMDk4JDgiLCJhcmdfMTAwIiwiYm5kc18wOTgkOSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18xNTYiLCJzdGFja19zaXplXzE1NCIsInRvcF9oZWFwX3dvcmRzXzE1MiIsImNvbXBhY3Rpb25zXzE1MCIsImZyYWdtZW50c18xNDgiLCJsYXJnZXN0X2ZyZWVfMTQ2IiwiZnJlZV9ibG9ja3NfMTQ0IiwiZnJlZV93b3Jkc18xNDIiLCJsaXZlX2Jsb2Nrc18xNDAiLCJsaXZlX3dvcmRzXzEzOCIsImhlYXBfY2h1bmtzXzEzNiIsImhlYXBfd29yZHNfMTM0IiwibWFqb3JfY29sbGVjdGlvbnNfMTMyIiwibWlub3JfY29sbGVjdGlvbnNfMTMwIiwibWFqb3Jfd29yZHNfMTI4IiwicHJvbW90ZWRfd29yZHNfMTI2IiwibWlub3Jfd29yZHNfMTI0IiwiYXJnXzE1NyIsImJuZHNfMTIzIiwiYXJnXzE1NSIsImJuZHNfMTIzJDAiLCJhcmdfMTUzIiwiYm5kc18xMjMkMSIsImFyZ18xNTEiLCJibmRzXzEyMyQyIiwiYXJnXzE0OSIsImJuZHNfMTIzJDMiLCJhcmdfMTQ3IiwiYm5kc18xMjMkNCIsImFyZ18xNDUiLCJibmRzXzEyMyQ1IiwiYXJnXzE0MyIsImJuZHNfMTIzJDYiLCJhcmdfMTQxIiwiYm5kc18xMjMkNyIsImFyZ18xMzkiLCJibmRzXzEyMyQ4IiwiYXJnXzEzNyIsImJuZHNfMTIzJDkiLCJhcmdfMTM1IiwiYm5kc18xMjMkMTAiLCJhcmdfMTMzIiwiYm5kc18xMjMkMTEiLCJhcmdfMTMxIiwiYm5kc18xMjMkMTIiLCJhcmdfMTI5IiwiYm5kc18xMjMkMTMiLCJhcmdfMTI3IiwiYm5kc18xMjMkMTQiLCJhcmdfMTI1IiwiYm5kc18xMjMkMTUiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMkMCIsInN0YWNrX3NpemUkMCIsInRvcF9oZWFwX3dvcmRzJDAiLCJjb21wYWN0aW9ucyQwIiwiZnJhZ21lbnRzJDAiLCJsYXJnZXN0X2ZyZWUkMCIsImZyZWVfYmxvY2tzJDAiLCJmcmVlX3dvcmRzJDAiLCJsaXZlX2Jsb2NrcyQwIiwibGl2ZV93b3JkcyQwIiwiaGVhcF9jaHVua3MkMCIsImhlYXBfd29yZHMkMCIsIm1ham9yX2NvbGxlY3Rpb25zJDAiLCJtaW5vcl9jb2xsZWN0aW9ucyQwIiwibWFqb3Jfd29yZHMkMCIsInByb21vdGVkX3dvcmRzJDAiLCJtaW5vcl93b3JkcyQwIiwibWlub3Jfd29yZHNfZnVuIiwicHJvbW90ZWRfd29yZHNfZnVuIiwibWFqb3Jfd29yZHNfZnVuIiwibWlub3JfY29sbGVjdGlvbnNfZnVuIiwibWFqb3JfY29sbGVjdGlvbnNfZnVuIiwiaGVhcF93b3Jkc19mdW4iLCJoZWFwX2NodW5rc19mdW4iLCJsaXZlX3dvcmRzX2Z1biIsImxpdmVfYmxvY2tzX2Z1biIsImZyZWVfd29yZHNfZnVuIiwiZnJlZV9ibG9ja3NfZnVuIiwibGFyZ2VzdF9mcmVlX2Z1biIsImZyYWdtZW50c19mdW4iLCJjb21wYWN0aW9uc19mdW4iLCJ0b3BfaGVhcF93b3Jkc19mdW4iLCJzdGFja19zaXplX2Z1biIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc19mdW4iLCJtaW5vcl93b3Jkc19nZW4iLCJwcm9tb3RlZF93b3Jkc19nZW4iLCJtYWpvcl93b3Jkc19nZW4iLCJtaW5vcl9jb2xsZWN0aW9uc19nZW4iLCJtYWpvcl9jb2xsZWN0aW9uc19nZW4iLCJoZWFwX3dvcmRzX2dlbiIsImhlYXBfY2h1bmtzX2dlbiIsImxpdmVfd29yZHNfZ2VuIiwibGl2ZV9ibG9ja3NfZ2VuIiwiZnJlZV93b3Jkc19nZW4iLCJmcmVlX2Jsb2Nrc19nZW4iLCJsYXJnZXN0X2ZyZWVfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJmcmFnbWVudHNfZ2VuIiwiY29tcGlsZV9hY2MkMTMiLCJjb21wYWN0aW9uc19nZW4iLCJjb21waWxlX2FjYyQxNCIsInRvcF9oZWFwX3dvcmRzX2dlbiIsImNvbXBpbGVfYWNjJDE1Iiwic3RhY2tfc2l6ZV9nZW4iLCJjb21waWxlX2FjYyQxNiIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc19nZW4iLCJmbG9hdF9mIiwiaW50X2YiLCJhXzE1OCIsImJfMTU5IiwiY3VzdG9tX21pbm9yX21heF9zaXplXzE4MSIsImN1c3RvbV9taW5vcl9yYXRpb18xNzkiLCJjdXN0b21fbWFqb3JfcmF0aW9fMTc3Iiwid2luZG93X3NpemVfMTc1IiwiYWxsb2NhdGlvbl9wb2xpY3lfMTczIiwic3RhY2tfbGltaXRfMTcxIiwibWF4X292ZXJoZWFkXzE2OSIsInZlcmJvc2VfMTY3Iiwic3BhY2Vfb3ZlcmhlYWRfMTY1IiwibWFqb3JfaGVhcF9pbmNyZW1lbnRfMTYzIiwibWlub3JfaGVhcF9zaXplXzE2MSIsImFyZ18xODIiLCJibmRzXzE2MCIsImFyZ18xODAiLCJibmRzXzE2MCQwIiwiYXJnXzE3OCIsImJuZHNfMTYwJDEiLCJhcmdfMTc2IiwiYm5kc18xNjAkMiIsImFyZ18xNzQiLCJibmRzXzE2MCQzIiwiYXJnXzE3MiIsImJuZHNfMTYwJDQiLCJhcmdfMTcwIiwiYm5kc18xNjAkNSIsImFyZ18xNjgiLCJibmRzXzE2MCQ2IiwiYXJnXzE2NiIsImJuZHNfMTYwJDciLCJhcmdfMTY0IiwiYm5kc18xNjAkOCIsImFyZ18xNjIiLCJibmRzXzE2MCQ5IiwiY3VzdG9tX21pbm9yX21heF9zaXplJDAiLCJjdXN0b21fbWlub3JfcmF0aW8kMCIsImN1c3RvbV9tYWpvcl9yYXRpbyQwIiwid2luZG93X3NpemUkMCIsImFsbG9jYXRpb25fcG9saWN5JDAiLCJzdGFja19saW1pdCQwIiwibWF4X292ZXJoZWFkJDAiLCJ2ZXJib3NlJDAiLCJzcGFjZV9vdmVyaGVhZCQwIiwibWFqb3JfaGVhcF9pbmNyZW1lbnQkMCIsIm1pbm9yX2hlYXBfc2l6ZSQwIiwibWFrZV9jcmVhdG9yJDAiLCJtaW5vcl9oZWFwX3NpemVfZnVuIiwibWFqb3JfaGVhcF9pbmNyZW1lbnRfZnVuIiwic3BhY2Vfb3ZlcmhlYWRfZnVuIiwidmVyYm9zZV9mdW4iLCJtYXhfb3ZlcmhlYWRfZnVuIiwic3RhY2tfbGltaXRfZnVuIiwiYWxsb2NhdGlvbl9wb2xpY3lfZnVuIiwid2luZG93X3NpemVfZnVuIiwiY3VzdG9tX21ham9yX3JhdGlvX2Z1biIsImN1c3RvbV9taW5vcl9yYXRpb19mdW4iLCJjdXN0b21fbWlub3JfbWF4X3NpemVfZnVuIiwibWlub3JfaGVhcF9zaXplX2dlbiIsIm1ham9yX2hlYXBfaW5jcmVtZW50X2dlbiIsInNwYWNlX292ZXJoZWFkX2dlbiIsInZlcmJvc2VfZ2VuIiwibWF4X292ZXJoZWFkX2dlbiIsInN0YWNrX2xpbWl0X2dlbiIsImFsbG9jYXRpb25fcG9saWN5X2dlbiIsIndpbmRvd19zaXplX2dlbiIsImN1c3RvbV9tYWpvcl9yYXRpb19nZW4iLCJjdXN0b21fbWlub3JfcmF0aW9fZ2VuIiwiY3VzdG9tX21pbm9yX21heF9zaXplX2dlbiIsIm1hcF9wb2x5JDAiLCJmb2xkJDIiLCJmb3JfYWxsJDIiLCJleGlzdHMkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsImNvbXBhcmUkNyIsImVxdWFsJDUiLCJ0dW5lIiwibG9nZ2VyIiwib2xkX2NvbnRyb2xfcGFyYW1zIiwiZmllbGQiLCJvbGRfdmFsdWUiLCJuZXdfdmFsdWUiLCJuZXdfY29udHJvbF9wYXJhbXMiLCJkaXNhYmxlX2NvbXBhY3Rpb24iLCJwb2xpY3kiLCJzdGF0X3NpemVfbGF6eSIsInN0YXRfc2l6ZSIsImtlZXBfYWxpdmUiLCJvIiwiaXNfemVyb19hbGxvYyIsIm1pbm9yX3dvcmRzX2JlZm9yZSIsIm1ham9yX3dvcmRzX2JlZm9yZSIsIm1pbm9yX3dvcmRzX2FmdGVyIiwibWFqb3Jfd29yZHNfYWZ0ZXIiLCJtYWpvcl93b3Jkc19hbGxvY2F0ZWQiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWQiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWRfMTkwIiwibWFqb3Jfd29yZHNfYWxsb2NhdGVkXzE4OCIsImFyZ18xOTEiLCJibmRzXzE4NyIsImFyZ18xODkiLCJibmRzXzE4NyQwIiwibWVhc3VyZV9hbGxvY2F0aW9uIiwiYmFja3RyYWNlXzE5NyIsImlzX21ham9yXzE5NSIsInNpemVfaW5fd29yZHNfMTkzIiwiYXJnXzE5OCIsImJuZHNfMTkyIiwiYXJnXzE5NiIsImJuZHNfMTkyJDAiLCJhcmdfMTk0IiwiYm5kc18xOTIkMSIsIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIiwibG9nIiwibWFqb3JfYWxsb2NzIiwibWlub3JfYWxsb2NzIiwib25fYWxsb2MiLCJpc19tYWpvciIsImluZm8iLCJiYWNrdHJhY2UiLCJiYWNrdHJhY2UkMCIsImluZm8kMCIsInRyYWNrZXIiLCJhZGRfZmluYWxpemVyIiwiYWRkX2ZpbmFsaXplcl9leG4iLCJhZGRfZmluYWxpemVyX2xhc3QiLCJhZGRfZmluYWxpemVyX2xhc3RfZXhuIiwiZmluYWxpemVfcmVsZWFzZSIsInNleHBfb2ZfdCQ4IiwiZXhwZWN0IiwiZXhwZWN0JDAiLCJzZXhwXzAwNiIsImhhc2hfMDIxIiwieF8wMTkiLCJ4XzAxOCIsImhhc2hfMDIxJDAiLCJoYXNoXzAyMSQxIiwidG9fc2VyaWFsaXphYmxlIiwicG9ydCIsImhvc3QiLCJvZl9zZXJpYWxpemFibGUiLCJwb3J0JDAiLCJnb3QiLCJhXzAyNCIsImJfMDI1IiwiZ290JDAiLCJhXzAyNiIsImJfMDI3IiwiYV8wMjgiLCJiXzAyOSIsInR1cGxlIiwidHlwZV9pZCIsInRvX3N0YWJsZV9mb3JtYXQiLCJvZl9zdGFibGVfZm9ybWF0Iiwib2ZfcXVpY2tjaGVja2FibGUiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAwOCIsIm9mX2NhbWxfaW50IiwidG9fY2FtbF9pbnQiLCJzeXNfYmVoYXZpb3Jfb2Zfc2V4cCIsImF0b21fMDAyIiwiYXRvbV8wMDIkMCIsInN5c19iZWhhdmlvcl9vZl9zZXhwJDAiLCJzZXhwXzAwNyIsInNleHBfb2Zfc3lzX2JlaGF2aW9yIiwiYWJydCIsImFscm0iLCJidXMiLCJjaGxkIiwiY29udCIsImZwZSIsImh1cCIsImlsbCIsImtpbGwiLCJwaXBlIiwicG9sbCIsInByb2YiLCJxdWl0Iiwic2VndiIsInN5cyIsInRlcm0iLCJ0cmFwIiwidHN0cCIsInR0aW4iLCJ0dG91IiwidXJnIiwidXNyMSIsInVzcjIiLCJ2dGFscm0iLCJ4Y3B1IiwieGZzeiIsImtub3duIiwibmFtZV9hbmRfdmVyc2lvbl9ieV90IiwidF9ieV9uYW1lIiwiYmVoYXZpb3JfYnlfdCIsInN0YWJsZV92ZXJzaW9uIiwiYmVoYXZpb3IiLCJ0b19zdHJpbmdfd2l0aF92ZXJzaW9uIiwicmVxdWVzdGVkX3ZlcnNpb24iLCJuZWVkZWRfdmVyc2lvbiIsInNuIiwiZGVmYXVsdF9zeXNfYmVoYXZpb3IiLCJzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIiwic2lnbmFsIiwiZiQwIiwiaGFuZGxlIiwiaGFuZGxlX2RlZmF1bHQiLCJpZ25vcmUiLCJvZl9hXzAwOSIsIm9mX2FfMDEyIiwieF8wMTMiLCJvZl9mb3JtYXQiLCJ0b19mb3JtYXQiLCJzZXRfYXQiLCJzZXRfaW50ZXJuYWwiLCJzZXRfaWZfbm9uZSIsInNldF9leG4iLCJnZXRfZXhuIiwicHJpbnQiLCJjYXRjaCQwIiwicHJpbnRfYmFja3RyYWNlIiwiZ2V0X2JhY2t0cmFjZSIsInJlY29yZF9iYWNrdHJhY2UiLCJiYWNrdHJhY2Vfc3RhdHVzIiwiY2FwdHVyZSIsImdlbmVyYWwiLCJoYXNoYWJsZSQxIiwiY2FjaGVfc2l6ZV9ib3VuZCIsImNhY2hlIiwicmVhbGx5X2NhbGxfZiIsIm1heF9jYWNoZV9zaXplIiwiY2FjaGUkMCIsInJlY3Vyc2l2ZSIsImZfb25lc3RlcCIsIm1lbW9pemVkIiwib2ZfY29tcGFyYWJsZSIsInYkMSIsImluaXRpYWxfbGVuZ3RoIiwibmV2ZXJfc2hyaW5rIiwibmV2ZXJfc2hyaW5rJDAiLCJpbml0aWFsX2xlbmd0aCQwIiwiYXJyX2xlbmd0aCIsImFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90XyIsImFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZSIsImFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbSIsImFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcCIsImNoZWNrZWQiLCJhcHBhcmVudF9mcm9udF9pbmRleCIsImFwcGFyZW50X2JhY2tfaW5kZXgiLCJkaXIiLCJhcHBhcmVudF9mcm9udCIsImFwcGFyZW50X2JhY2siLCJhY3R1YWxfZnJvbnQiLCJhY3R1YWxfYmFjayIsImFwcGFyZW50X2kiLCJyZWFsX2kiLCJzdG9wX3BvcyIsImFwcGFyZW50X2kkMCIsInJlYWxfaSQwIiwicmVhbF9pJDEiLCJhcHBhcmVudF9pJDEiLCJhY2MkMSIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsIml0ZXJpX2ludGVybmFsIiwibmV3X2FyciIsIm9sZF9hcnIiLCJicmVha19wb3MiLCJtYXliZV9zaHJpbmtfdW5kZXJseWluZyIsImdyb3dfdW5kZXJseWluZyIsInBlZWtfZnJvbnRfbm9uZW1wdHkiLCJwZWVrX2JhY2tfbm9uZW1wdHkiLCJkZXF1ZXVlX2Zyb250X25vbmVtcHR5IiwiZGVxdWV1ZV9iYWNrX25vbmVtcHR5IiwiZHJvcF9nZW4iLCJhc3NlcnRfbm90X2VtcHR5IiwidHJ1ZV9pbmRleF9leG4iLCJpX2Zyb21femVybyIsInRydWVfaSIsImdldF9vcHQiLCJiYWNrX2luZGV4X2V4biIsImZyb250X2luZGV4X2V4biIsImdldCQwIiwidW50cmFuc2xhdGVkX2kiLCJlcHJpbnQiLCJlcHJpbnRzIiwiY2hlY2tfaW52YXJpYW50Iiwic2hvd19tZXNzYWdlcyIsImRlYnVnIiwic2V4cF9vZl9hcmciLCJzZXhwX29mX3Jlc3VsdCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwicmVzdWx0X29yX2V4biIsImFyZzFfMDEwIiwic2hvdWxkX3ByaW50X2JhY2t0cmFjZSIsImFtX2ludGVybmFsIiwibWVzc2FnZSQwIiwiYW1mIiwiYW1zIiwidW5peF9xdW90ZSIsInF1b3RlIiwiY29uY2F0X3F1b3RlZCIsInNwbGl0X2NvbW1hbmQiLCJzb3J0X2FuZF9hbGlnbiIsImFkZF91bml0IiwidW50aWxfZW1wdHkiLCJic3RyXzAwMiIsInBvc18wMDQiLCJsZW5fMDA2IiwiaW5pdF8wMDgiLCJhcmdfMDA5IiwiYm5kc18wMDEiLCJhcmdfMDA3IiwiYm5kc18wMDEkMCIsImFyZ18wMDUiLCJibmRzXzAwMSQxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDIiLCJyZXNpemUiLCJtaW5fbGVuIiwibmV3X2xlbiIsIm5ld19idWYiLCJpbnRlcm5hbCIsImNvbnRlbnRzX2J5dGVzIiwiYmlnX2NvbnRlbnRzIiwidm9sYXRpbGVfY29udGVudHMiLCJhZGRfY2hhciIsInJlc2V0IiwiYWRkX3N1YnN0cmluZyIsIm5ld19wb3MiLCJhZGRfc3ViYnl0ZXMiLCJhZGRfYmlnc3RyaW5nIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJidWZfZHN0IiwiYnVmX3NyYyIsImFkZF9iaW5fcHJvdCIsImFkZF9zdWJzdGl0dXRlIiwibGltIiwic3Vic3QiLCJwcmV2aW91cyIsImkkNCIsInByZXZpb3VzJDAiLCJpJDUiLCJwcmV2aW91cyQxIiwiaSQ2Iiwib3BlbmluZyIsImxpbSQxIiwiaSQyIiwiaSQzIiwibmV3X3N0YXJ0IiwiayQyIiwiY2xvc2luZyIsImxpbSQwIiwiaSQxIiwibmV4dF9pIiwiaWRlbnQiLCJpJDciLCJpJDgiLCJpJDkiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwiYnByaW50ZiQwIiwiZXJyb3Jfc291cmNlXzAxNyIsInZfaW5kZXgiLCJ2X21pbl9pbmRleCIsInZfbWF4X2luZGV4IiwiYXJnNV8wMDkiLCJhcmc0XzAwOCIsImFyZzNfMDA3IiwiYXJnMl8wMDYiLCJyZXMyXzAxMiIsInJlczNfMDEzIiwicmVzNF8wMTQiLCJyZXM1XzAxNSIsImFyZzVfMDIzIiwiYXJnNF8wMjIiLCJhcmczXzAyMSIsImFyZzJfMDIwIiwiYXJnMV8wMTkiLCJyZXM1XzAyOSIsIm9mIiwibGFiZWwiLCJjcmVhdGVfYWxsIiwibWF4X2luZGV4IiwibWluX2luZGV4IiwiemVyb19iYXNlZF9pbmRleCIsIm51bV9pbmRleGVzIiwiaG9zdF9hbmRfcG9ydCIsInBhcnNlJDAiLCJtYXBfYW5vbnMiLCJ0NCIsIm1heWJlX3dpdGhfZGVmYXVsdCIsIm1heWJlIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciIsIm1hcF9mbGFnIiwiZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlIiwiZXNjYXBlIiwibm9fYXJnX2Fib3J0Iiwibm9fYXJnX3JlcXVpcmVkIiwibm9fYXJnX3NvbWUiLCJub19hcmdfcmVnaXN0ZXIiLCJub19hcmciLCJvbmVfb3JfbW9yZV9hc19saXN0Iiwib25lX29yX21vcmVfYXNfcGFpciIsImxpc3RlZCIsIm9wdGlvbmFsX3dpdGhfZGVmYXVsdCIsInJlcXVpcmVkIiwib3B0aW9uYWxfdG9fcmVxdWlyZWQiLCJhcmdfbmFtZXMiLCJhbmRfYXJnX25hbWUiLCJhbmRfYXJnX25hbWVzIiwiY2hvb3NlX29uZV9ub25fb3B0aW9uYWwiLCJjaG9vc2Vfb25lIiwiZXNjYXBlX2Fub24iLCJhbm9uIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwiZmxhZyIsImhlbHAiLCJtYXAzIiwiYm90aCIsInBlcmNlbnQkMCIsImhvc3RfYW5kX3BvcnQkMCIsIm9mX3BhcmFtIiwidG9fcGFyYW0iLCJtYXBfYW5vbnMkMCIsInQ0JDAiLCJ0MyQwIiwibWF5YmVfd2l0aF9kZWZhdWx0JDAiLCJtYXliZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QkMCIsIm5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyJDAiLCJzZXF1ZW5jZSQwIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJtYXBfZmxhZyQwIiwiZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlJDAiLCJlc2NhcGUkMCIsIm5vX2FyZ19hYm9ydCQwIiwibm9fYXJnX3JlcXVpcmVkJDAiLCJub19hcmdfc29tZSQwIiwibm9fYXJnX3JlZ2lzdGVyJDAiLCJub19hcmckMCIsIm9uZV9vcl9tb3JlX2FzX2xpc3QkMCIsIm9uZV9vcl9tb3JlX2FzX3BhaXIkMCIsImxpc3RlZCQwIiwib3B0aW9uYWxfd2l0aF9kZWZhdWx0JDAiLCJvcHRpb25hbCQwIiwicmVxdWlyZWQkMCIsIndyYXAiLCJwYWlyIiwiYXJnX25hbWVzJDAiLCJhbmRfYXJnX25hbWUkMCIsImFuZF9hcmdfbmFtZXMkMCIsImNob29zZV9vbmVfbm9uX29wdGlvbmFsJDAiLCJjaG9vc2Vfb25lJDAiLCJlc2NhcGVfYW5vbiQwIiwiYW5vbiQwIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jJDAiLCJmbGFnJDAiLCJwYXRoJDAiLCJoZWxwJDAiLCJhbGxfdW5pdCQwIiwiYWxsJDAiLCJtYXAzJDAiLCJhcHBseSQwIiwic3ltYm9sX21hcCQwIiwiYm90aCQwIiwicmV0dXJuJDEiLCJwZXJjZW50JDEiLCJob3N0X2FuZF9wb3J0JDEiLCJkb2VzX3JhaXNlIiwidl9kb2MiLCJ2X2FsaWFzZXMiLCJ2X3N1bW1hcnkiLCJ2X3JlYWRtZSIsInZfYW5vbnMiLCJ2X2ZsYWdzIiwiYmluX3NoYXBlX2EiLCJ2X3N1YmNvbW1hbmRzIiwidl93b3JraW5nX2RpciIsInZfcGF0aF90b19leGUiLCJ2X2NoaWxkX3N1YmNvbW1hbmQiLCJlcnJvcl9zb3VyY2VfMDAzIiwidF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX3QiLCJlcXVhbCIsInhfMDA3IiwieF8wMDgiLCJzb3VyY2UiLCJ0IiwibmV4dF9wb3MiLCJpc19uZXh0X2VvZiIsIm5leHRfY2hhciIsInJlc2V0IiwicGFyYW0iLCJjb25zdW1lXzEiLCJvbmVfY2hhcl90b2tlbiIsInRvayIsImVycm9yIiwiYWNjZXB0IiwiZiIsImFjY2VwdF9jaGFyIiwiY2giLCJhY2NlcHRfc3RyaW5nIiwic3RyIiwicG9zIiwic3RyX2xlbiIsImV4cGVjdCIsImV4cGVjdF9jaGFyIiwibWFueSIsIm1hbnkxIiwicGx1c19vcl9taW51cyIsIm5tc3RhcnQiLCJubWNoYXIiLCJpZGVudCIsImlkZW50X29yX2Z1bmN0aW9uIiwiaXNfd2hpdGVzcGFjZSIsInN0YXJ0X2lkZW50IiwicHJlZml4IiwiY3VyIiwiYiIsIm5ld19vZmYiLCJxdW90ZSIsIm0iLCJjIiwibWFyayIsIm5leHQiLCJjcmVhdGUiLCJzIiwic2xpY2UiLCJjdXJyZW50IiwiY3VycmVudF90ZXh0IiwibGVuIiwidGVzdCIsImFjYyIsInN0YXJ0IiwiYWNjJDAiLCJ4XzAxNyIsImFyZzJfMDEzIiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJyZXMyXzAxNiIsInZhbHVlIiwiY3QiLCJza2lwX3doaXRlX3NwYWNlIiwiZXhwZWN0ZWQiLCJnb3QiLCJhbnkiLCJyZXMiLCJleHBlY3RfYW55IiwidmFsdWUwIiwiZXhwZWN0X3ZhbHVlIiwiZGVjbGFyYXRpb24iLCJpZGVudF9sZW4iLCJpZGVudF9zdGFydCIsInZhbHVlX3N0YXJ0IiwibmV4dF90b2tlbl9zdGFydCIsImV4cGVjdF9kZWNsYXJhdGlvbiIsImZpZWxkIiwiZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QiLCJhZGQiLCJrdiIsInYiLCJrIiwicGFyc2UiLCJwYXJzZXJfZiIsInZhbGlkYXRlX3ZhbHVlIiwicGFyc2VfZGVjbGFyYXRpb25fbGlzdCIsInRlc3RfcGFyc2VyIiwicCIsInNleHBfb2ZfYXJnIiwiciIsImN1c3RvbV9wcmludGZfMDAyIiwieF8wMDMiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsImFyZzFfMDA5IiwiYXJnMF8wMDgiLCJyZXMwXzAxMCIsInJlczFfMDExIiwieF8wMTYiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwidiQzIiwidiQ0IiwidiQ1IiwidiQwIiwidiQxIiwidiQyIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDI5IiwiZXJyb3Jfc291cmNlXzAzMyIsImVycm9yX3NvdXJjZV8wNDkiLCJlcnJvcl9zb3VyY2VfMDcyIiwiZXJyb3Jfc291cmNlXzA4NiIsImVycm9yX3NvdXJjZV8xMTkiLCJlcnJvcl9zb3VyY2VfMTUxIiwiZXJyb3Jfc291cmNlXzE5OSIsImVycm9yX3NvdXJjZV8yMDEiLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwieF8wMTMiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsImNvbXBhcmUiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsInRfMDE5IiwidF8wMTgiLCJ0XzAyMSIsInRfMDIwIiwibiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJiaW5fc2l6ZV90IiwidjIiLCJ2MSIsInNpemUiLCJiaW5fd3JpdGVfdCIsImJ1ZiIsInBvcyQwIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRfdCIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwIiwic2V4cF8wMjUiLCJhdG9tXzAyMyIsImF0b21fMDIzJDAiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwJDAiLCJzZXhwXzAyOCIsInNleHBfb2ZfY3NzX2dsb2JhbF92YWx1ZXMiLCJncm91cCQwIiwiYmluX3NoYXBlX2Nzc19nbG9iYWxfdmFsdWVzIiwiY29tcGFyZV9jc3NfZ2xvYmFsX3ZhbHVlcyIsImFfMDMwIiwiYl8wMzEiLCJmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCIsImRpZ2l0cyIsImYycyIsInRfb2Zfc2V4cCQwIiwieF8wMzQiLCJhIiwiZyIsInNleHBfb2ZfdCQwIiwiYV8wNDIiLCJiXzA0MCIsImdfMDM4Iiwicl8wMzYiLCJhcmdfMDQzIiwiYm5kc18wMzUiLCJhcmdfMDQxIiwiYm5kc18wMzUkMCIsImFyZ18wMzkiLCJibmRzXzAzNSQxIiwiYXJnXzAzNyIsImJuZHNfMDM1JDIiLCJncm91cCQxIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsInY0IiwidjMiLCJzaXplJDAiLCJzaXplJDEiLCJiaW5fd3JpdGVfdCQwIiwicG9zJDEiLCJwb3MkMiIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwidl9yIiwidl9nIiwidl9iIiwidl9hIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wNDQiLCJiXzA0NSIsIm4kMCIsIm4kMSIsImFfMDQ2IiwiYl8wNDciLCJ0X29mX3NleHAkMSIsInhfMDUwIiwibCIsImgiLCJzZXhwX29mX3QkMSIsImFfMDU4IiwibF8wNTYiLCJzXzA1NCIsImhfMDUyIiwiYXJnXzA1OSIsImJuZHNfMDUxIiwiYXJnXzA1NyIsImJuZHNfMDUxJDAiLCJhcmdfMDU1IiwiYm5kc18wNTEkMSIsImFyZ18wNTMiLCJibmRzXzA1MSQyIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJiaW5fd3JpdGVfdCQxIiwiYmluX3dyaXRlcl90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJ2X2giLCJ2X3MiLCJ2X2wiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl90JDEiLCJjb21wYXJlJDEiLCJhXzA2MCIsImJfMDYxIiwiYV8wNjIiLCJiXzA2MyIsImNyZWF0ZSQwIiwidF9vZl9zZXhwJDIiLCJzZXhwXzA2NyIsImF0b21fMDY1Iiwic2V4cF9hcmdzXzA2OCIsImF0b21fMDY1JDAiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwiYXJnMF8wNzQiLCJyZXMwXzA3NSIsImFyZzBfMDc3IiwicmVzMF8wNzgiLCJhcmcwXzA3MCIsInJlczBfMDcxIiwiYXJnMF8wODMiLCJyZXMwXzA4NCIsInRfb2Zfc2V4cCQzIiwic2V4cF8wODUiLCJzZXhwX29mX3QkMiIsInZfMDkyIiwidl8wOTEiLCJ2XzA4NyIsInZfMDg5Iiwidl8wODgiLCJ2XzA5MCIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJhcmdzJDIiLCJzaXplX2FyZ3MkMiIsImFyZ3MkMyIsInNpemVfYXJncyQzIiwiYmluX3dyaXRlX3QkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMDkzIiwiYl8wOTQiLCJyaWdodF8xMDQiLCJsZWZ0XzEwMyIsInJpZ2h0XzA5NiIsImxlZnRfMDk1IiwicmlnaHRfMTAwIiwibGVmdF8wOTkiLCJyaWdodF8wOTgiLCJsZWZ0XzA5NyIsInJpZ2h0XzEwMiIsImxlZnRfMTAxIiwidG9fc3RyaW5nX2NzcyIsInZhciQwIiwibmFtZSIsImhleCIsImEkMCIsInAkMCIsImdyb3VwJDQiLCJ0X29mX3NleHAkNCIsInNleHBfMTE0IiwiYXRvbV8xMTIiLCJzZXhwX2FyZ3NfMTE1IiwiYXRvbV8xMTIkMCIsImFyZzBfMTI3IiwicmVzMF8xMjgiLCJhcmcwXzEyNCIsInJlczBfMTI1IiwiYXJnMF8xNDgiLCJyZXMwXzE0OSIsImFyZzBfMTQyIiwicmVzMF8xNDMiLCJhcmcwXzEyMSIsInJlczBfMTIyIiwiYXJnMF8xMTciLCJyZXMwXzExOCIsImFyZzBfMTQ1IiwicmVzMF8xNDYiLCJhcmcwXzEzOSIsInJlczBfMTQwIiwiYXJnMF8xMzYiLCJyZXMwXzEzNyIsImFyZzBfMTMzIiwicmVzMF8xMzQiLCJhcmcwXzEzMCIsInJlczBfMTMxIiwidF9vZl9zZXhwJDUiLCJzZXhwXzE1MCIsInNleHBfb2ZfdCQzIiwidl8xNjMiLCJ2XzE2MSIsInZfMTU5Iiwidl8xNTYiLCJ2XzE1NCIsInZfMTUyIiwidl8xNjIiLCJ2XzE2MCIsInZfMTU4Iiwidl8xNTUiLCJ2XzE1MyIsInZfMTU3IiwiZ3JvdXAkNSIsImJpbl9zaGFwZV90JDMiLCJjb21wYXJlJDMiLCJhXzE2NCIsImJfMTY1IiwicmlnaHRfMTc1IiwibGVmdF8xNzQiLCJyaWdodF8xNzEiLCJsZWZ0XzE3MCIsInJpZ2h0XzE2NyIsImxlZnRfMTY2IiwicmlnaHRfMTg3IiwibGVmdF8xODYiLCJyaWdodF8xODUiLCJsZWZ0XzE4NCIsInJpZ2h0XzE4MSIsImxlZnRfMTgwIiwicmlnaHRfMTgzIiwibGVmdF8xODIiLCJyaWdodF8xNzkiLCJsZWZ0XzE3OCIsInJpZ2h0XzE3MyIsImxlZnRfMTcyIiwicmlnaHRfMTY5IiwibGVmdF8xNjgiLCJyaWdodF8xNzciLCJsZWZ0XzE3NiIsInRvX3N0cmluZ19jc3MkMCIsImkiLCJmJDAiLCJmJDEiLCJwJDEiLCJpJDAiLCJwJDIiLCJwZXJjZW50MTAwIiwiZ3JvdXAkNiIsImNvbXBhcmUkNCIsImFfMTkwIiwiYl8xOTEiLCJ0X29mX3NleHAkNiIsInNleHBfMTk3IiwiYXRvbV8xOTUiLCJhdG9tXzE5NSQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzIwMCIsInNleHBfb2ZfdCQ0Iiwidl8yMDIiLCJ0b19zdHJpbmdfY3NzJDEiLCJ2YWx1ZV9tYXAiLCJvIiwiY29tYmluZSIsInQxIiwidDIiLCJjb25jYXQiLCJ0b19zdHJpbmdfbGlzdCIsInRvX3N0cmluZ19jc3MkMiIsIm9mX3N0cmluZ19jc3NfZXhuIiwiY3JlYXRlX3JhdyIsInNob3VsZF92YWxpZGF0ZSIsImNyZWF0ZSQxIiwiZW1wdHkiLCJpc19lbXB0eSIsImNyZWF0ZV9wbGFjZW1lbnQiLCJsZW5ndGgiLCJsZWZ0IiwidG9wIiwiYm90dG9tIiwicmlnaHQiLCJwb3NpdGlvbiIsInRwIiwiYnQiLCJsdCIsInJ0IiwiY29udmVydCIsIm9wdF9sIiwiYm94X3NpemluZyIsImRpc3BsYXkiLCJ2aXNpYmlsaXR5IiwibWFrZV9vdmVyZmxvdyIsIm92ZXJmbG93Iiwib3ZlcmZsb3dfeCIsIm92ZXJmbG93X3kiLCJ6X2luZGV4Iiwib3BhY2l0eSIsImNyZWF0ZV9sZW5ndGhfZmllbGQiLCJ3aGl0ZV9zcGFjZSIsImZvbnRfc2l6ZSIsImZvbnRfZmFtaWx5IiwiZm9udF9zdHlsZSIsImZvbnRfd2VpZ2h0IiwiYm9sZCIsImZvbnRfdmFyaWFudCIsImZvbnQiLCJmYW1pbHkiLCJzdHlsZSIsIndlaWdodCIsInZhcmlhbnQiLCJjcmVhdGVfd2l0aF9jb2xvciIsImNvbG9yIiwiYmFja2dyb3VuZF9jb2xvciIsImZpbGwiLCJzdG9wc190b19zdHJpbmciLCJzdG9wcyIsInBjdCIsImJhY2tncm91bmRfaW1hZ2UiLCJzcGVjIiwidXJsIiwic3RvcHMkMCIsImRpcmVjdGlvbiIsImNyZWF0ZV9hbGlnbm1lbnQiLCJ0ZXh0X2FsaWduIiwiaG9yaXpvbnRhbF9hbGlnbiIsInZlcnRpY2FsX2FsaWduIiwiZmxvYXQkMCIsImxpbmVfaGVpZ2h0Iiwid2lkdGgiLCJtaW5fd2lkdGgiLCJtYXhfd2lkdGgiLCJoZWlnaHQiLCJtaW5faGVpZ2h0IiwibWF4X2hlaWdodCIsInBhZGRpbmdfdG9wIiwicGFkZGluZ19ib3R0b20iLCJwYWRkaW5nX2xlZnQiLCJwYWRkaW5nX3JpZ2h0IiwicGFkZGluZyIsInVuaWZvcm1fcGFkZGluZyIsIm1hcmdpbl90b3AiLCJtYXJnaW5fYm90dG9tIiwibWFyZ2luX2xlZnQiLCJtYXJnaW5fcmlnaHQiLCJtYXJnaW4iLCJ1bmlmb3JtX21hcmdpbiIsInJvd19nYXAiLCJjb2x1bW5fZ2FwIiwiY29uY2F0MnYiLCJjb25jYXQzdiIsImJvcmRlcl92YWx1ZSIsInN0eWxlJDAiLCJ3aWR0aCQwIiwiY29sb3IkMCIsImNyZWF0ZV9ib3JkZXIiLCJzaWRlIiwiYm9yZGVyX3RvcCIsImJvcmRlcl9ib3R0b20iLCJib3JkZXJfbGVmdCIsImJvcmRlcl9yaWdodCIsImJvcmRlciIsIm91dGxpbmUiLCJib3JkZXJfY29sbGFwc2UiLCJib3JkZXJfc3BhY2luZyIsImJvcmRlcl9yYWRpdXMiLCJ0ZXh0X2RlY29yYXRpb24iLCJsaW5lIiwibGluZSQwIiwiaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyIsImZsZXhfY29udGFpbmVyIiwiYWxpZ25faXRlbXMiLCJhbGlnbl9jb250ZW50IiwianVzdGlmeV9jb250ZW50IiwicmciLCJjZyIsImlubGluZSIsIndyYXAiLCJkaXJlY3Rpb24kMCIsIndyYXAkMCIsImFsaWduX2l0ZW1zJDAiLCJhbGlnbl9jb250ZW50JDAiLCJhJDEiLCJqdXN0aWZ5X2NvbnRlbnQkMCIsInJvd19nYXAkMCIsImNvbHVtbl9nYXAkMCIsImZsZXhfaXRlbSIsIm9yZGVyIiwiZ3JvdyIsImJhc2lzIiwic2hyaW5rIiwib3JkZXIkMCIsImJhc2lzJDAiLCJmbGV4IiwiYWxpZ25fc2VsZiIsInJlc2l6ZSIsInZhbHVlJDAiLCJhbmltYXRpb24iLCJkdXJhdGlvbiIsImRlbGF5IiwiZmlsbF9tb2RlIiwiaXRlcl9jb3VudCIsInRpbWluZ19mdW5jdGlvbiIsInNwYW5fdG9fc3RyaW5nIiwiZCIsImZpbGxfbW9kZSQwIiwidXNlcl9zZWxlY3QiLCJjc3MiLCJzMiIsIngiLCJ0b19qc19zdHJpbmciLCJ0b19qc19zdHJpbmdfZml4ZWQiLCJ0b19qc19zdHJpbmdfcHJlY2lzaW9uIiwidG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIiwidG9fc3RyaW5nIiwidG9fc3RyaW5nX2ZpeGVkIiwidG9fc3RyaW5nX3ByZWNpc2lvbiIsInRvX3N0cmluZ19leHBvbmVudGlhbCIsInByaW50IiwiZiIsInZpc2liaWxpdHlfaGFuZGxlcnMiLCJzZXF1ZW5jZV9hc19zaWJsaW5nIiwibGVmdCIsInVubGVzc19zdG9wcGVkIiwiY29udGFpbnNfc3RvcCIsImVzIiwiY3VycmVudF9kb21fZXZlbnQiLCJoYW5kbGVfbm9uX2RvbV9ldmVudF9leG4iLCJoYW5kbGUiLCJkb21fZXZlbnQiLCJldmVudCIsIm9sZCIsInNleHBfb2ZfdCIsInZhbHVlIiwidHlwZV9pZCIsImdlbmVyaWNfaG9vayIsInBhY2siLCJpZCIsImRlc3Ryb3kiLCJ1cGRhdGUiLCJpbml0IiwiaW5wdXRfaWQiLCJpbnB1dCIsImEiLCJpbml0JDAiLCJhJDAiLCJ1cGRhdGUkMCIsImRlc3Ryb3kkMCIsImdlbmVyaWNfaG9vayQwIiwiZXh0cmEiLCJjb21iaW5lIiwicmlnaHQiLCJpbnB1dF9hbmRfc3RhdGVfaWQiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImVsZW1lbnQiLCJzdGF0ZSIsImFuaW1hdGlvbl9pZCIsIm9sZF9pbnB1dCIsImNyZWF0ZSIsImNvbWJpbmVfaW5wdXRzIiwic2V0IiwiZ2V0IiwiZGVsZXRlJDAiLCJzZXRfcHJvcF9hc2NpaSIsInQiLCJuYW1lIiwiZ2V0X3Byb3BfYXNjaWkiLCJoYXNfcHJvcGVydHkiLCJzZXRfcHJvcGVydHkiLCJoYXNfYXR0cmlidXRlIiwic2V0X2F0dHJpYnV0ZSIsInRvX2RvbSIsIm5vZGUiLCJ0YWciLCJhdHRycyIsImNoaWxkcmVuIiwia2V5Iiwia2V5JDAiLCJzdmciLCJ0ZXh0IiwicyIsInBhdGNoIiwiY3JlYXRlJDAiLCJwcmV2aW91cyIsImN1cnJlbnQiLCJpc19lbXB0eSIsImZfaWQiLCJpZF9zZXhwIiwiY3JlYXRlJDEiLCJ2ZG9tX2Zvcl90ZXN0aW5nIiwiZWx0IiwiZG9tX25vZGUiLCJzMCIsInByZXZfc3RhdGUiLCJkb21fbm9kZSQwIiwibmFtZSQyIiwibmFtZSQxIiwibmFtZSQwIiwiZW1wdHkiLCJyaGFuZGxlciIsInhfMDAyIiwibGhhbmRsZXIiLCJ4XzAwMSIsImNyZWF0ZV9mbG9hdCIsInByb3BlcnR5Iiwic3RyaW5nX3Byb3BlcnR5IiwiYm9vbF9wcm9wZXJ0eSIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzIiwiY3JlYXRlX2hvb2siLCJob29rIiwibWFueSIsIm1hbnlfd2l0aG91dF9tZXJnZSIsImNvbWJpbmUkMCIsIndhcm5pbmdfY291bnQiLCJ3YXJuX3MiLCJxdW90YSIsIndhcm5pbmdfY291bnQkMCIsInJlc2V0X3dhcm5pbmdfY291bnQiLCJjb21iaW5pbmdfbWFwX2FkZCIsIm1hcCIsImV4aXN0aW5nX3ZhbHVlIiwiZW1wdHlfbWVyZ2UiLCJzdHlsZSIsImNzcyIsImNsYXNzJDAiLCJjbGFzc25hbWUiLCJjbGFzc2VzIiwiY2xhc3NlcyQwIiwiY2xhc3NuYW1lcyIsImhyZWYiLCJyIiwibGFiZWwiLCJ0YXJnZXQiLCJjaGVja2VkIiwic2VsZWN0ZWQiLCJoaWRkZW4iLCJyZWFkb25seSIsImRpc2FibGVkIiwicGxhY2Vob2xkZXIiLCJ4IiwiYXV0b2ZvY3VzIiwiZm9yJDAiLCJ0eXBlIiwidmFsdWVfcHJvcCIsInRhYmluZGV4IiwidGl0bGUiLCJhbHQiLCJzcmMiLCJvcGVuIiwic3RhcnQiLCJtaW4iLCJtYXgiLCJtaW5fZGF0ZSIsIm1heF9kYXRlIiwibWluX2RhdGVfdGltZSIsIm1heF9kYXRlX3RpbWUiLCJjb2xzcGFuIiwicm93c3BhbiIsImRyYWdnYWJsZSIsImIiLCJmb2N1cyIsIm1vdXNlIiwia2V5Ym9hcmQiLCJzdWJtaXQiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJjbGlwYm9hcmQiLCJkcmFnIiwicG9pbnRlciIsImFuaW1hdGlvbiIsIm9uIiwiaGFuZGxlciIsIm9uX2ZvY3VzIiwib25fYmx1ciIsIm9uX2NsaWNrIiwib25fY29udGV4dG1lbnUiLCJvbl9kb3VibGVfY2xpY2siLCJvbl9kcmFnIiwib25fZHJhZ3N0YXJ0Iiwib25fZHJhZ2VuZCIsIm9uX2RyYWdlbnRlciIsIm9uX2RyYWdsZWF2ZSIsIm9uX2RyYWdvdmVyIiwib25fZHJvcCIsIm9uX21vdXNlbW92ZSIsIm9uX21vdXNldXAiLCJvbl9tb3VzZWRvd24iLCJvbl9tb3VzZWVudGVyIiwib25fbW91c2VsZWF2ZSIsIm9uX21vdXNlb3ZlciIsIm9uX21vdXNlb3V0Iiwib25fa2V5dXAiLCJvbl9rZXlwcmVzcyIsIm9uX2tleWRvd24iLCJvbl9zY3JvbGwiLCJvbl9sb2FkIiwib25fc3VibWl0Iiwib25fcG9pbnRlcmRvd24iLCJvbl9wb2ludGVydXAiLCJvbl9tb3VzZXdoZWVsIiwib25fd2hlZWwiLCJvbl9jb3B5Iiwib25fY3V0Iiwib25fcGFzdGUiLCJvbl9yZXNldCIsIm9uX2FuaW1hdGlvbmVuZCIsImNvbnN0X2lnbm9yZSIsInJ1bl9jb2VyY2lvbiIsImNvZXJjaW9uIiwicHJldiIsIm9uX2lucHV0X2V2ZW50Iiwib25fY2hhbmdlIiwib25faW5wdXQiLCJ0b19yYXciLCJhdHRyIiwiYXR0cnNfb2JqIiwidGFrZV9zZWNvbmRfc3R5bGVzIiwiZmlyc3QiLCJzZWNvbmQiLCJ0YWtlX3NlY29uZF9jbGFzc2VzIiwiZmlyc3QkMCIsImFfMDAzIiwiYl8wMDQiLCJzZWNvbmQkMCIsImFfMDA1IiwiYl8wMDYiLCJ0YWtlX3NlY29uZF9oYW5kbGVyIiwidGFrZV9zZWNvbmRfaG9vayIsIm1lcmdlIiwiY29tYmluZV9ob29rIiwiY29tYmluZV9oYW5kbGVyIiwiY29tYmluZV9zdHlsZXMiLCJjb21iaW5lX2NsYXNzZXMiLCJhY2MiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzJDAiLCJuZXdfc3R5bGVzIiwibmV3X2NsYXNzZXMiLCJzdWJfbWVyZ2UiLCJtYXBfY2xhc3NlcyIsIm1hcF9zdHlsZXMiLCJhdHRycyQwIiwic3ViX21lcmdlJDAiLCJhdHRycyQxIiwic3ViX21lcmdlJDEiLCJtZXJnZSQwIiwiZSIsInByb3BzIiwib2JqIiwidiIsImsiLCJvbl9maWxlX2lucHV0IiwiZmlsZXMiLCJjb21iaW5lJDEiLCJvbl9tb3VudCIsIm1hcF9zdHlsZSIsImFkZF9jbGFzcyIsImMiLCJjcyIsImFkZF9zdHlsZSIsInNzIiwibWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIiwic2V4cF9vZl90JDAiLCJ4XzAxMyIsImFyZzFfMDEwIiwiYXJnMF8wMDkiLCJyZXMwXzAxMSIsInJlczFfMDEyIiwiY29tYmluZSQyIiwib25fbW91bnQkMCIsIm5ld19pbnB1dCIsImFfMDE2IiwiYl8wMTciLCJ0XzAxOSIsInRfMDE4IiwidF8wMjEiLCJ0XzAyMCIsImNzc192YXJzX25vX2tlYmFicyIsImFsaXN0IiwiY3NzX3ZhciIsImZpbHRlcl9ieV9raW5kIiwiY29udGFpbnNfbmFtZSIsImxvb2tpbmdfZm9yIiwiaGFzX2JlZW5fdXNlZCIsImFmdGVyIiwiZyIsImV2IiwibmV3X3N0YXRlIiwiZXZlbnRfa2luZCIsImV2ZW50X2tpbmQkMCIsImV2ZW50X2tpbmQkMSIsImV2ZW50X2tpbmQkMiIsImV2ZW50X2tpbmQkMyIsImV2ZW50X2tpbmQkNCIsImV2ZW50X2tpbmQkNSIsIm1vdXNldXAiLCJtb3VzZW1vdmUiLCJjbGljayIsImNvbnRleHRtZW51Iiwia2V5ZG93biIsImJlZm9yZXVubG9hZCIsImYkMCIsInZpc2liaWxpdHljaGFuZ2UiLCJtb3VzZXVwX3R5cGVfaWQiLCJtb3VzZW1vdmVfdHlwZV9pZCIsImtleWRvd25fdHlwZV9pZCIsImNsaWNrX3R5cGVfaWQiLCJjb250ZXh0bWVudV90eXBlX2lkIiwidmlzaWJpbGl0eWNoYW5nZV90eXBlX2lkIiwiYmVmb3JldW5sb2FkX3R5cGVfaWQiLCJ2ZG9tX3RodW5rIiwiYXJnIiwia2V5JDEiLCJyZXMxXzAwOSIsIndpdGhfa2V5IiwibWFwX2F0dHJzIiwicmF3X2F0dHJzIiwiYWRkX2NsYXNzZXMiLCJ0X3RvX2pzIiwidyIsInRfdG9fanNfbGF6eSIsImtpbmQiLCJvdGhlciIsImxhenkiLCJlbGVtZW50X2V4cGVydCIsIndpZGdldCIsInZkb21fZm9yX3Rlc3RpbmckMCIsImNyZWF0ZV9jaGlsZGxlc3MiLCJjcmVhdGVfc3ZnIiwidGV4dGYiLCJmb3JtYXQiLCJ3aWRnZXRfb2ZfbW9kdWxlIiwibSIsImFyZzBfMDA2Iiwic3RhdGVfMDA0IiwiaW5wdXRfMDAyIiwiYXJnXzAwNSIsImJuZHNfMDAxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDAiLCJyZXMwXzAwOCIsInByZXZfaW5wdXQiLCJlbGVtZW50JDAiLCJzdGF0ZSQwIiwiaSIsIndpZGdldCQwIiwiY29udGVudCIsIm92ZXJyaWRlX3Zkb21fZm9yX3Rlc3RpbmciLCJwcmV2X2F0dHIiLCJwcmV2X3RhZyIsInByZXZfY29udGVudCIsImlubmVyX2h0bWxfc3ZnIiwiaW5uZXJfaHRtbCIsImFiYnIiLCJib2R5IiwiYnV0dG9uIiwiY29kZSIsImRhdGFsaXN0IiwiZGV0YWlscyIsImRpdiIsIm1haW4iLCJmaWVsZHNldCIsImxlZ2VuZCIsImZvb3RlciIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWRlciIsImh0bWwiLCJpbWciLCJpbnB1dF9kZXByZWNhdGVkIiwidGV4dGFyZWEiLCJzZWxlY3QiLCJvcHRncm91cCIsIm9wdGlvbiIsImxpIiwicCIsInByZSIsInNlY3Rpb24iLCJzcGFuIiwic3Ryb25nIiwiZW0iLCJibG9ja3F1b3RlIiwic3VtbWFyeSIsImlmcmFtZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRoIiwidGhlYWQiLCJ0ciIsInVsIiwib2wiLCJiciIsImhyIiwiZGwiLCJkdCIsImRkIiwic2V4cF9mb3JfZGVidWdnaW5nIiwiaW5kZW50Iiwic2V4cCIsImFwcGx5IiwiY3JlYXRlJDIiLCJjcmVhdGVfc3ZnJDAiLCJoZXJlIiwiZXJyb3Jfc291cmNlXzAwNCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInZhbGlkYXRlIiwidCIsImVxdWFsIiwidDEiLCJ0MiIsInRfb2Zfc2V4cCQxIiwic2V4cF8wMDYiLCJ0YWdfMDA3Iiwic2V4cF9hcmdzXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJzZXhwX29mX3QkMSIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJ0MSIsInQyIiwidDMiLCJ0NCIsInQ1IiwidDYiLCJ0NyIsInQ4IiwidDkiLCJ0MTAiLCJ0MTEiLCJ0MTIiLCJ0MTMiLCJ0MTQiLCJzZXhwX29mX3QiLCJ2XzAwNiIsInNsb3RzX3Blcl90dXBsZV8wMDIiLCJhcmdfMDAzIiwiYm5kc18wMDEiLCJzZXhwX29mX3QkMCIsIm9mX3R1cGxlXzAwNyIsIm9mX3ZhcmlhbnRfMDA4Iiwic2xvdHNfcGVyX3R1cGxlIiwibiIsInNleHBfb2ZfdDEiLCJvZl9hMF8wMDkiLCJzZXhwX29mX3QyIiwib2ZfYTBfMDEwIiwib2ZfYTFfMDExIiwic2V4cF9vZl90MyIsIm9mX2EwXzAxMiIsIm9mX2ExXzAxMyIsIm9mX2EyXzAxNCIsInNleHBfb2ZfdDQiLCJvZl9hMF8wMTUiLCJvZl9hMV8wMTYiLCJvZl9hMl8wMTciLCJvZl9hM18wMTgiLCJzZXhwX29mX3Q1Iiwib2ZfYTBfMDE5Iiwib2ZfYTFfMDIwIiwib2ZfYTJfMDIxIiwib2ZfYTNfMDIyIiwib2ZfYTRfMDIzIiwic2V4cF9vZl90NiIsIm9mX2EwXzAyNCIsIm9mX2ExXzAyNSIsIm9mX2EyXzAyNiIsIm9mX2EzXzAyNyIsIm9mX2E0XzAyOCIsIm9mX2E1XzAyOSIsInNleHBfb2ZfdDciLCJvZl9hMF8wMzAiLCJvZl9hMV8wMzEiLCJvZl9hMl8wMzIiLCJvZl9hM18wMzMiLCJvZl9hNF8wMzQiLCJvZl9hNV8wMzUiLCJvZl9hNl8wMzYiLCJzZXhwX29mX3Q4Iiwib2ZfYTBfMDM3Iiwib2ZfYTFfMDM4Iiwib2ZfYTJfMDM5Iiwib2ZfYTNfMDQwIiwib2ZfYTRfMDQxIiwib2ZfYTVfMDQyIiwib2ZfYTZfMDQzIiwib2ZfYTdfMDQ0Iiwic2V4cF9vZl90OSIsIm9mX2EwXzA0NSIsIm9mX2ExXzA0NiIsIm9mX2EyXzA0NyIsIm9mX2EzXzA0OCIsIm9mX2E0XzA0OSIsIm9mX2E1XzA1MCIsIm9mX2E2XzA1MSIsIm9mX2E3XzA1MiIsIm9mX2E4XzA1MyIsInNleHBfb2ZfdDEwIiwib2ZfYTBfMDU0Iiwib2ZfYTFfMDU1Iiwib2ZfYTJfMDU2Iiwib2ZfYTNfMDU3Iiwib2ZfYTRfMDU4Iiwib2ZfYTVfMDU5Iiwib2ZfYTZfMDYwIiwib2ZfYTdfMDYxIiwib2ZfYThfMDYyIiwib2ZfYTlfMDYzIiwic2V4cF9vZl90MTEiLCJvZl9hMF8wNjQiLCJvZl9hMV8wNjUiLCJvZl9hMl8wNjYiLCJvZl9hM18wNjciLCJvZl9hNF8wNjgiLCJvZl9hNV8wNjkiLCJvZl9hNl8wNzAiLCJvZl9hN18wNzEiLCJvZl9hOF8wNzIiLCJvZl9hOV8wNzMiLCJvZl9hMTBfMDc0Iiwic2V4cF9vZl90MTIiLCJvZl9hMF8wNzUiLCJvZl9hMV8wNzYiLCJvZl9hMl8wNzciLCJvZl9hM18wNzgiLCJvZl9hNF8wNzkiLCJvZl9hNV8wODAiLCJvZl9hNl8wODEiLCJvZl9hN18wODIiLCJvZl9hOF8wODMiLCJvZl9hOV8wODQiLCJvZl9hMTBfMDg1Iiwib2ZfYTExXzA4NiIsInNleHBfb2ZfdDEzIiwib2ZfYTBfMDg3Iiwib2ZfYTFfMDg4Iiwib2ZfYTJfMDg5Iiwib2ZfYTNfMDkwIiwib2ZfYTRfMDkxIiwib2ZfYTVfMDkyIiwib2ZfYTZfMDkzIiwib2ZfYTdfMDk0Iiwib2ZfYThfMDk1Iiwib2ZfYTlfMDk2Iiwib2ZfYTEwXzA5NyIsIm9mX2ExMV8wOTgiLCJvZl9hMTJfMDk5Iiwic2V4cF9vZl90MTQiLCJvZl9hMF8xMDAiLCJvZl9hMV8xMDEiLCJvZl9hMl8xMDIiLCJvZl9hM18xMDMiLCJvZl9hNF8xMDQiLCJvZl9hNV8xMDUiLCJvZl9hNl8xMDYiLCJvZl9hN18xMDciLCJvZl9hOF8xMDgiLCJvZl9hOV8xMDkiLCJvZl9hMTBfMTEwIiwib2ZfYTExXzExMSIsIm9mX2ExMl8xMTIiLCJvZl9hMTNfMTEzIiwibmFtZSQxIiwicHJlZml4IiwibmFtZSQwIiwibmFtZSIsImZhaWx3aXRocyIsImFyY2hfc2l4dHlmb3VyIiwibnVtX2JpdHMiLCJtYXhfdmFsdWUiLCJ0b19zdHJpbmciLCJzcHJpbnRmIiwiY29uY2F0IiwibCIsIm9mX3Nsb3RzXzAwNyIsIm9mX2FfMDA4IiwiZXF1YWwiLCJtYXhfc2xvdCIsImFycmF5X2luZGV4X251bV9iaXRzIiwibWFza2VkX3R1cGxlX2lkX251bV9iaXRzIiwibWF4X2FycmF5X2xlbmd0aCIsIm9mX2ludCIsImkiLCJleGFtcGxlcyIsInR1cGxlX2lkX21hc2siLCJ0eXBlbmFtZV9vZl90IiwidHlwZXJlcF9vZl90Iiwib2Zfc2xvdHMiLCJuYW1lX29mX3QiLCJzZXhwX29mX3QkMSIsInQiLCJwaHlzX2VxdWFsIiwicGh5c19jb21wYXJlIiwibnVsbCQwIiwiaXNfbnVsbCIsImNyZWF0ZSIsImhlYWRlcl9pbmRleCIsInR1cGxlX2lkIiwiaGVhZGVyX2luZGV4X21hc2siLCJpbnZhcmlhbnQiLCJzbG90X2luZGV4Iiwic2xvdCIsImZpcnN0X3Nsb3RfaW5kZXgiLCJ0b19pbnQ2MyIsIm9mX2ludDYzIiwibnVsbCQxIiwiaXNfbnVsbCQwIiwiaXNfZnJlZSIsImlzX3VzZWQiLCJ0dXBsZV9pZCQwIiwibWV0YWRhdGFfaW5kZXgiLCJzdGFydF9vZl90dXBsZXNfaW5kZXgiLCJtYXhfY2FwYWNpdHkiLCJkdW1teSIsInIiLCJmaXJzdF9mcmVlIiwic2V0X2ZpcnN0X2ZyZWUiLCJ2IiwibmV4dF9pZCIsInNldF9uZXh0X2lkIiwibGVuZ3RoIiwic2V0X2xlbmd0aCIsImNhcGFjaXR5IiwiZHVtbXkkMCIsImZpcnN0X2ZyZWUkMCIsIm5leHRfaWQkMCIsImxlbmd0aCQwIiwiY2FwYWNpdHkkMCIsInNsb3RzX3Blcl90dXBsZSQwIiwiaW5pdCIsImFycmF5X2luZGljZXNfcGVyX3R1cGxlIiwiYXJyYXlfbGVuZ3RoIiwidHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCIsInR1cGxlX251bSIsInR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IiwibWV0YWRhdGEiLCJsZW5ndGgkMSIsInNleHBfb2ZfdCQzIiwic2V4cF9vZl90eSIsImNhcGFjaXR5XzAxOCIsInNsb3RzX3Blcl90dXBsZV8wMTYiLCJsZW5ndGhfMDIwIiwibmV4dF9pZF8wMjIiLCJmaXJzdF9mcmVlXzAyNCIsImR1bW15XzAyNiIsImFyZ18wMjciLCJibmRzXzAxNSIsImFyZ18wMjUiLCJibmRzXzAxNSQwIiwiYXJnXzAyMyIsImJuZHNfMDE1JDEiLCJhcmdfMDIxIiwiYm5kc18wMTUkMiIsImFyZ18wMTkiLCJibmRzXzAxNSQzIiwiYXJnXzAxNyIsImJuZHNfMDE1JDQiLCJ1bnNhZmVfaGVhZGVyIiwidW5zYWZlX3NldF9oZWFkZXIiLCJoZWFkZXIiLCJoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIiwidW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSIsInBvaW50ZXIiLCJ0JDAiLCJwb2ludGVyX2lzX3ZhbGlkIiwiaWRfb2ZfcG9pbnRlciIsImlzX3ZhbGlkX2hlYWRlcl9pbmRleCIsIm1ldGFkYXRhJDAiLCJwb2ludGVyX29mX2lkX2V4biIsInQkMSIsImlkIiwic2hvdWxkX2VxdWFsIiwieF8wMDkiLCJleG4kMCIsImV4biIsImFyZzFfMDExIiwiYXJnMF8wMTAiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwiYXJnMl8wMzAiLCJhcmcxXzAyOSIsImFyZzBfMDI4IiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInJlczJfMDMzIiwiaW52YXJpYW50JDAiLCJpbnZhcmlhbnRfYSIsImZyZWUiLCJoZWFkZXJfaW5kZXgkMCIsInR1cGxlX251bSQwIiwiZmlyc3Rfc2xvdCIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNiIsInJlczFfMDM3IiwiY2FwYWNpdHkkMSIsImlzX2Z1bGwiLCJ1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCIsIm5leHRfZnJlZV9oZWFkZXJfaW5kZXgiLCJzZXRfbWV0YWRhdGEiLCJjcmVhdGVfYXJyYXkiLCJ1bnNhZmVfaW5pdF9yYW5nZSIsImxvIiwiaGkiLCJjcmVhdGVfd2l0aF9kdW1teSIsInNsb3RzIiwibWF4X2NhcGFjaXR5JDAiLCJhcmcxXzA0MCIsImFyZzBfMDM5IiwicmVzMF8wNDEiLCJ2XzAzOCIsInJlczFfMDQyIiwiY3JlYXRlJDAiLCJncm93Iiwib2xkX2NhcGFjaXR5IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInZfMDAxIiwicmVzMF8wMDUiLCJ2XzAwMiIsInJlczFfMDA2IiwibWV0YWRhdGEkMiIsIm1ldGFkYXRhJDEiLCJtYWxsb2MiLCJ4XzA0MyIsInVuc2FmZV9mcmVlIiwicG9zIiwiYXJnMV8wNDUiLCJhcmcwXzA0NCIsInJlczBfMDQ2IiwicmVzMV8wNDciLCJuZXcxIiwiYTAiLCJvZmZzZXQiLCJuZXcyIiwiYTEiLCJuZXczIiwiYTIiLCJuZXc0IiwiYTMiLCJuZXc1IiwiYTQiLCJuZXc2IiwiYTUiLCJuZXc3IiwiYTYiLCJuZXc4IiwiYTciLCJuZXc5IiwiYTgiLCJuZXcxMCIsImE5IiwibmV3MTEiLCJhMTAiLCJuZXcxMiIsImExMSIsIm5ldzEzIiwiYTEyIiwibmV3MTQiLCJhMTMiLCJnZXQiLCJwIiwidW5zYWZlX2dldCIsInNldCIsIngiLCJ1bnNhZmVfc2V0IiwiZ2V0X3R1cGxlIiwibGVuIiwiY3JlYXRlJDEiLCJjaGVja19pbnZhcmlhbnQiLCJzaG93X21lc3NhZ2VzIiwiZGVidWciLCJ0cyIsImFyZyIsInNleHBfb2ZfYXJnIiwic2V4cF9vZl9yZXN1bHQiLCJmIiwicmVzdWx0X29yX2V4biIsInhfMDQ4IiwiYXJnMV8wNTIiLCJhcmcwXzA1MSIsInJlczBfMDUzIiwicmVzMV8wNTQiLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJyZXMxXzA1OCIsInhfMDU5IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJiaW5fd3JpdGVfdCIsImJpbl93cml0ZXJfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsInRfb2Zfc2V4cCIsInhfMDYzIiwieF8wNjQiLCJ4XzA2NSIsInhfMDY2IiwieF8wNjciLCJ2XzA2OCIsInhfMDY5IiwieF8wNzAiLCJ4XzA3MSIsInhfMDcyIiwiZGVidWdfbmV3IiwieF8wNzMiLCJ4XzA3NCIsImRlYnVnX2dldCIsInhfMDc1IiwiZGVidWdfc2V0IiwiYSIsInhfMDc2Iiwib2Zfc2xvdHNfMDc3IiwiaXNfdmFsaWRfMDc5IiwicG9pbnRlcl8wODEiLCJhcmdfMDgyIiwiYm5kc18wNzgiLCJhcmdfMDgwIiwiYm5kc18wNzgkMCIsImZpZWxkMCIsImZpZWxkMSIsInR5cGVuYW1lIiwiaGFzX2RvdWJsZV9hcnJheV90YWciLCJmaWVsZHMiLCJpc192YWxpZCIsImZvbGxvdyIsInhfMDgzIiwiaW52YWxpZGF0ZSIsInBvcyQ5IiwicG9zJDgiLCJwb3MkNyIsInBvcyQ2IiwiYXJnXzA4NyIsInBvcyQ1IiwicG9zJDQiLCJwb3MkMyIsInBvcyQyIiwicG9zJDEiLCJwb3MkMCIsInBvcyIsImVycm9yX3NvdXJjZV8wMTkiLCJtYXhfdGltZSIsIm1pbl90aW1lIiwibWF4X251bV9iaXRzIiwibWluX3ZhbHVlIiwiaW52YXJpYW50IiwidCIsIm9mX2ludCIsImkiLCJzeW1ib2wkMiIsInQxIiwidDIiLCJzeW1ib2wkMyIsInBvdzIiLCJzZXhwX29mX3QkMCIsInhfMDA3IiwibnVtX2JpdHNfaW50ZXJuYWwiLCJudW1fYml0cyIsImludmFyaWFudCQwIiwibnVtX2tleV9iaXRzIiwidF9vZl9zZXhwJDAiLCJ4XzAwNiIsImNyZWF0ZV9leG4iLCJ4XzAwOCIsImV4dGVuZF90b19tYXhfbnVtX2JpdHMiLCJiaXRzIiwiaW50cyIsImxldmVsX2JpdHNfZGVmYXVsdCIsImNvbXBhcmUiLCJlcXVhbCQwIiwieF8wMTIiLCJ4XzAxMyIsInRvX3NleHBhYmxlIiwic2V4cF9vZl90JDEiLCJhYm91dF9vbmVfbWljcm9zZWNvbmQiLCJtdWwiLCJkaXYiLCJvZl9zcGFuX2Zsb29yX3BvdzJfbnMiLCJzcGFuIiwibGV2ZWxfYml0cyIsInIiLCJsZXZlbF9iaXRzJDAiLCJ2IiwidF9vZl9zZXhwJDIiLCJ4XzAyMSIsImNhcGFjaXR5IiwiYWxhcm1fcHJlY2lzaW9uIiwic2V4cF9vZl90JDMiLCJjYXBhY2l0eV8wMjciLCJsZXZlbF9iaXRzXzAyNSIsImFsYXJtX3ByZWNpc2lvbl8wMjMiLCJibmRzXzAyMiIsInZfMDI4IiwiYXJnXzAzMCIsImJuZF8wMjkiLCJibmRzXzAyMiQwIiwiYXJnXzAyNiIsImJuZHNfMDIyJDEiLCJhcmdfMDI0IiwiYm5kc18wMjIkMiIsIm1heF9udW1fbGV2ZWxfYml0cyIsImludmFyaWFudCQxIiwibGV2ZWxfYml0c19mdW4iLCJjcmVhdGUiLCJsb29wIiwicmVtYWluaW5nIiwidCQwIiwiYiIsIm1pY3Jvc2Vjb25kX3ByZWNpc2lvbiIsImR1cmF0aW9ucyIsIm51bV9iaXRzX2FjY3VtIiwibGV2ZWxfbnVtX2JpdHMiLCJudW1fYml0c19hY2N1bSQwIiwiZHVyYXRpb24iLCJjb21wYXJlJDAiLCJzZXhwX29mX3QkNCIsImNyZWF0ZSQwIiwiY3JlYXRlJDEiLCJiaXRzX3Blcl9zbG90IiwidG9faW50NjMiLCJvZl9pbnQ2MyIsInNjYWxlX2ludCIsInNleHBfb2ZfdCQ3Iiwib2ZfaW50NjMkMCIsInRvX2ludDYzJDAiLCJhZGQiLCJhZGRfY2xhbXBfdG9fbWF4Iiwic3ViIiwiZGlmZiIsInNleHBfb2ZfcG9vbF9zbG90cyIsIm9mX2FfMDMzIiwieF8wMzQiLCJzZXhwX29mX3QkOCIsIm9mX2FfMDM1IiwieF8wMzYiLCJudWxsJDAiLCJudWxsJDEiLCJpc19udWxsIiwiZnJlZSIsImtleSIsInAiLCJhdCIsInZhbHVlIiwibGV2ZWxfaW5kZXgiLCJwcmV2Iiwic2V0X3ByZXYiLCJ4IiwibmV4dCIsInNldF9uZXh0IiwiaXNfdmFsaWQiLCJncm93IiwiaXNfZnVsbCIsIm9mX2V4dGVybmFsX2V4biIsInBvb2wiLCJsaW5rIiwiaXRlciIsImZpcnN0IiwiZiIsImN1cnJlbnQiLCJjb250aW51ZSQwIiwibmV4dCQwIiwic2xvdHMiLCJtYXhfYWxsb3dlZF9rZXkiLCJzZXRfbWF4X2FsbG93ZWRfa2V5IiwibWluX2FsbG93ZWRfa2V5Iiwic2V0X21pbl9hbGxvd2VkX2tleSIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkiLCJtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIiwia2V5c19wZXJfc2xvdCIsInNsb3RzX21hc2siLCJpbmRleCIsInNsb3RzJDAiLCJtYXhfYWxsb3dlZF9rZXkkMCIsIm1pbl9hbGxvd2VkX2tleSQwIiwibGVuZ3RoJDAiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkkMCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2skMCIsImtleXNfcGVyX3Nsb3QkMCIsImJpdHNfcGVyX3Nsb3QkMCIsInNsb3RzX21hc2skMCIsImJpdHMkMCIsImluZGV4JDAiLCJzZXhwX29mX3QkOSIsIm9mX2FfMDQ0IiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XzA1OCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfMDU2Iiwia2V5c19wZXJfc2xvdF8wNTQiLCJiaXRzX3Blcl9zbG90XzA1MiIsInNsb3RzX21hc2tfMDUwIiwiYml0c18wNDgiLCJpbmRleF8wNDYiLCJsZW5ndGhfMDYwIiwibWluX2FsbG93ZWRfa2V5XzA2MiIsIm1heF9hbGxvd2VkX2tleV8wNjQiLCJzbG90c18wNjYiLCJhcmdfMDY3IiwiYm5kc18wNDUiLCJhcmdfMDY1IiwiYm5kc18wNDUkMCIsImFyZ18wNjMiLCJibmRzXzA0NSQxIiwiYXJnXzA2MSIsImJuZHNfMDQ1JDIiLCJhcmdfMDU5IiwiYm5kc18wNDUkMyIsImFyZ18wNTciLCJibmRzXzA0NSQ0IiwiYXJnXzA1NSIsImJuZHNfMDQ1JDUiLCJhcmdfMDUzIiwiYm5kc18wNDUkNiIsImFyZ18wNTEiLCJibmRzXzA0NSQ3IiwiYXJnXzA0OSIsImJuZHNfMDQ1JDgiLCJhcmdfMDQ3IiwiYm5kc18wNDUkOSIsInNsb3QiLCJuZXh0X3Nsb3QiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCIsImNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkiLCJsZXZlbHMiLCJlbHRfa2V5X2xvd2VyX2JvdW5kIiwic2V0X2VsdF9rZXlfbG93ZXJfYm91bmQiLCJtaW5fZWx0Iiwic2V0X21pbl9lbHQiLCJzZXRfcG9vbCIsImxlbmd0aCQxIiwic2V0X2xlbmd0aCQwIiwibGV2ZWxzJDAiLCJlbHRfa2V5X2xvd2VyX2JvdW5kJDAiLCJtaW5fZWx0JDAiLCJwb29sJDAiLCJsZW5ndGgkMiIsImlzX2VtcHR5IiwibnVtX2xldmVscyIsIm1pbl9hbGxvd2VkX2tleSQxIiwibWF4X2FsbG93ZWRfa2V5JDEiLCJpbnRlcm5hbF9pdGVyIiwibGV2ZWwiLCJzbG90X2luZGV4IiwiZWx0IiwiY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rIiwibWluX2VsdCQxIiwibWluX2VsdF9hbHJlYWR5X2ZvdW5kIiwibWluX2tleV9hbHJlYWR5X2ZvdW5kIiwibnVtX2xldmVscyQwIiwic2xvdF9taW5fa2V5Iiwic2xvdCQwIiwiY3VycmVudF9rZXkiLCJhZGRfZWx0IiwieF8xMTQiLCJ0b19hZGQiLCJrZXkkMCIsImVsdHNfMDk0IiwibWF4X2FsbG93ZWRfa2V5XzA5MiIsIm1pbl9hbGxvd2VkX2tleV8wOTAiLCJhcmdfMDk1Iiwia2V5XzA4NCIsImJuZHNfMDgzIiwiYXJnXzA4NSIsImJuZHNfMDgzJDAiLCJibmRzXzA4OSIsImFyZ18wOTMiLCJibmRzXzA4OSQwIiwiYXJnXzA5MSIsImJuZHNfMDg5JDEiLCJyJDAiLCJsZXZlbF9pbmRleCQwIiwicHJldiQwIiwiaW50ZXJuYWxfYWRkX2VsdCIsImVuc3VyZV92YWxpZF9rZXkiLCJpbnRlcm5hbF9hZGQiLCJpbnRlcm5hbF9yZW1vdmUiLCJtaW5faW50ZXJ2YWxfbnVtIiwicHJpb3JpdHlfcXVldWUiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwic2V0X21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Iiwic2V0X25vd19pbnRlcnZhbF9udW1fc3RhcnQiLCJub3ciLCJzZXRfbm93IiwibWF4X2ludGVydmFsX251bSIsInN0YXJ0IiwiY29uZmlnIiwicHJpb3JpdHlfcXVldWUkMCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUkMCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnQkMCIsIm5vdyQwIiwibWF4X2ludGVydmFsX251bSQwIiwic3RhcnQkMCIsImNvbmZpZyQwIiwic2V4cF9vZl90X25vdyIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXQkMCIsInR3IiwidmFsdWUkMCIsImludGVydmFsX251bSIsIml0ZXIkMCIsImNvbXBhcmUkMyIsInNleHBfb2ZfdCQxMCIsInNleHBfb2ZfYSIsIm1heF9pbnRlcnZhbF9udW1fMTQ2Iiwic3RhcnRfMTQ0IiwiY29uZmlnXzE0MiIsIm5vd18xNDgiLCJhbGFybSIsImFsYXJtc18xNTAiLCJhcmdfMTUxIiwidmFsdWVfMTM4IiwiYXRfMTM2IiwiYXJnXzEzOSIsImJuZHNfMTM1IiwiYXJnXzEzNyIsImJuZHNfMTM1JDAiLCJibmRzXzE0MSIsImFyZ18xNDkiLCJibmRzXzE0MSQwIiwiYXJnXzE0NyIsImJuZHNfMTQxJDEiLCJhcmdfMTQ1IiwiYm5kc18xNDEkMiIsImFyZ18xNDMiLCJibmRzXzE0MSQzIiwibGVuZ3RoJDMiLCJpc19lbXB0eSQwIiwicG9vbCQxIiwiaW50ZXJ2YWxfbnVtX2ludGVybmFsIiwidGltZSIsImludGVydmFsX251bV91bmNoZWNrZWQiLCJpbnRlcnZhbF9udW0kMCIsImludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQiLCJpbnRlcnZhbF9udW1fc3RhcnQiLCJuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIiwibmV4dF9hbGFybV9maXJlc19hdCIsIm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIiwieF8xNTMiLCJjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtIiwibWF4X2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtIiwiaW50ZXJ2YWxfc3RhcnQiLCJpbnZhcmlhbnQkMiIsImludmFyaWFudF9hIiwieF8xNTUiLCJjaGVjayIsInByaW9yaXR5X3F1ZXVlX2Z1biIsInhfMTA5Iiwib2ZfYV8wNjgiLCJsZW5ndGhfMDcwIiwicG9vbF8wNzIiLCJtaW5fZWx0XzA3NCIsImVsdF9rZXlfbG93ZXJfYm91bmRfMDc2IiwibGV2ZWxzXzA3OCIsImFyZ18wNzkiLCJibmRzXzA2OSIsImFyZ18wNzciLCJibmRzXzA2OSQwIiwiYXJnXzA3NSIsImJuZHNfMDY5JDEiLCJhcmdfMDczIiwiYm5kc18wNjkkMiIsImFyZ18wNzEiLCJibmRzXzA2OSQzIiwibGV2ZWxzX2Z1biIsInhfMDk4Iiwic2xvdHNfZnVuIiwieF8wNDEiLCJuIiwibWF4X2FsbG93ZWRfa2V5X2Z1biIsImV4cGVjdCIsImNvbXBhcmF0b3IiLCJhXzEwNyIsImJfMTA4IiwibWluX2FsbG93ZWRfa2V5X2Z1biIsImdvdCIsInNleHBpZmllciIsImFfMTA1IiwiYl8xMDYiLCJsZW5ndGhfZnVuIiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5X2Z1biIsImV0YSIsImFfMTAzIiwiYl8xMDQiLCJtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrX2Z1biIsImtleXNfcGVyX3Nsb3RfZnVuIiwiYV8xMDEiLCJiXzEwMiIsImJpdHNfcGVyX3Nsb3RfZnVuIiwiZXhwZWN0JDAiLCJzbG90c19tYXNrX2Z1biIsImFfMDk5IiwiYl8xMDAiLCJiaXRzX2Z1biIsImluZGV4X2Z1biIsInByZXZfbGV2ZWwiLCJnb3QkMCIsImFfMTEwIiwiYl8xMTEiLCJjb21wYXJhdG9yJDAiLCJhXzExMiIsImJfMTEzIiwiZWx0X2tleV9sb3dlcl9ib3VuZF9mdW4iLCJtaW5fZWx0X2Z1biIsInBvb2xfZnVuIiwibWF4X2FsbG93ZWRfYWxhcm1fdGltZV9mdW4iLCJhXzE2MiIsImJfMTYzIiwibm93X2ludGVydmFsX251bV9zdGFydF9mdW4iLCJhXzE2MCIsImJfMTYxIiwibm93X2Z1biIsIm1heF9pbnRlcnZhbF9udW1fZnVuIiwiYV8xNTYiLCJiXzE1NyIsInNleHBpZmllciQwIiwiYV8xNTgiLCJiXzE1OSIsInN0YXJ0X2Z1biIsImNvbmZpZ19mdW4iLCJkZWJ1ZyIsImFkdmFuY2VfY2xvY2siLCJ0byIsImhhbmRsZV9yZW1vdmVkIiwidF9taW5fYWxsb3dlZF9rZXkiLCJ0JDEiLCJyZXN1bHQiLCJtaW5fYWxsb3dlZF9rZXlfYmVmb3JlIiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkkMCIsImRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5JDAiLCJjcmVhdGUkMiIsImNhcGFjaXR5JDAiLCJtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwiYWRkX2F0X2ludGVydmFsX251bSIsImVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0iLCJhZGQkMCIsInJlbW92ZSIsImNsZWFyIiwiZnJlZV9lbHQiLCJtZW0iLCJyZXNjaGVkdWxlX2dlbiIsInJlc2NoZWR1bGUiLCJyZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSIsIm1pbl9hbGFybV9pbnRlcnZhbF9udW0iLCJtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biIsInhfMTY0IiwibWF4X2FsYXJtX3RpbWVfaW5fbGlzdCIsIndpdGhfa2V5IiwibWF4X2FsYXJtX3RpbWUiLCJtaW5fYWxhcm1fdGltZV9pbl9saXN0IiwibWluX2FsYXJtX3RpbWUiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwkMCIsInhfMTY1IiwibWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsJDAiLCJ4XzE2NiIsImZpcmVfcGFzdF9hbGFybXMiLCJoYW5kbGVfZmlyZWQiLCJsZXZlbF9iaXRzJDAiLCJoZXJlIiwiaGVyZSQwIiwiaGVyZSQxIiwiaGVyZSQyIiwiaGVyZSQzIiwiaGVyZSQ0IiwiZXJyb3Jfc291cmNlXzAwMyIsImVycm9yX3NvdXJjZV8wMDYiLCJlcnJvcl9zb3VyY2VfMDE1IiwiZXJyb3Jfc291cmNlXzAyOCIsImxpc3QiLCJlcnJvcl9zb3VyY2VfMDM2IiwibGlzdCQwIiwiZXJyb3Jfc291cmNlXzAzOSIsImVtcHR5IiwiZW52aXJvbm1lbnRfdmFyaWFibGUiLCJzZWMiLCJjb25jYXQiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlJDAiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGUkMiIsImRlZmF1bHQkMCIsImVxdWFsIiwidDEiLCJ0MiIsInZhbGlkYXRlJDMiLCJ2YWxpZGF0ZSQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzAwNCIsInNleHBfb2ZfdCQ2Iiwid2F0Y2hfb2Zfc2V4cCIsInhfMDA3IiwiaG93X3RvX2R1bXAiLCJkdW1wX2lmX2RlbGF5ZWRfYnkiLCJzZXhwX29mX3dhdGNoIiwiaG93X3RvX2R1bXBfMDExIiwiZHVtcF9pZl9kZWxheWVkX2J5XzAwOSIsImFyZ18wMTIiLCJibmRzXzAwOCIsImFyZ18wMTAiLCJibmRzXzAwOCQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzAxNyIsInRhZ18wMTgiLCJzZXhwX2FyZ3NfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsInNleHBfb2ZfdCQ3IiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsInRfb2Zfc2V4cCQ4Iiwic2V4cF8wMjkiLCJzZXhwX29mX3QkOCIsImVxdWFsJDAiLCJ4XzAzMCIsInhfMDMxIiwidF9vZl9zZXhwJDkiLCJzZXhwXzAzNyIsInNleHBfb2ZfdCQ5IiwidF9vZl9zZXhwJDEwIiwic2V4cF9vZl90JDEwIiwidGltaW5nX3doZWVsX2NvbmZpZyIsInIiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkiLCJyZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yIiwicmVjb3JkX2JhY2t0cmFjZXMiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dCIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyIsIm1heF9udW1fdGhyZWFkcyIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2NycyIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0IiwiZmlsZV9kZXNjcl93YXRjaGVyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkiLCJkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHIiLCJjaGVja19pbnZhcmlhbnRzIiwiYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfIiwidGltaW5nX3doZWVsX2NvbmZpZyQwIiwidiIsInRocmVhZF9wb29sX2NwdV9hZmZpbml0eSQwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciQwIiwicmVjb3JkX2JhY2t0cmFjZXMkMCIsInByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciQwIiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXQkMCIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyQwIiwibWF4X251bV90aHJlYWRzJDAiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMkMCIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0JDAiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMCIsImVwb2xsX21heF9yZWFkeV9ldmVudHMkMCIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkkMCIsImRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RociQwIiwiY2hlY2tfaW52YXJpYW50cyQwIiwiYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfJDAiLCJzZXhwX29mX3QkMTEiLCJ0aW1pbmdfd2hlZWxfY29uZmlnXzEwMiIsInRocmVhZF9wb29sX2NwdV9hZmZpbml0eV8wOTgiLCJyZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXzAiLCJyZWNvcmRfYmFja3RyYWNlc18wOTAiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDg2IiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXRfMDgyIiwibWF4X251bV90aHJlYWRzXzA3NCIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2Nyc18wNzAiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dF8wNjYiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDYyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNTgiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5XzA1NCIsImNoZWNrX2ludmFyaWFudHNfMDQ2IiwiYm5kc18wNDEiLCJ2XzEwMyIsImFyZ18xMDUiLCJibmRfMTA0IiwiYm5kc18wNDEkMCIsInZfMDk5IiwiYXJnXzEwMSIsImJuZF8xMDAiLCJibmRzXzA0MSQxIiwidl8wOTUiLCJhcmdfMDk3IiwiYm5kXzA5NiIsImJuZHNfMDQxJDIiLCJ2XzA5MSIsImFyZ18wOTMiLCJibmRfMDkyIiwiYm5kc18wNDEkMyIsInZfMDg3IiwiYXJnXzA4OSIsImJuZF8wODgiLCJibmRzXzA0MSQ0Iiwidl8wODMiLCJhcmdfMDg1IiwiYm5kXzA4NCIsImJuZHNfMDQxJDUiLCJ2XzA3OSIsImFyZ18wODEiLCJibmRfMDgwIiwiYm5kc18wNDEkNiIsInZfMDc1IiwiYXJnXzA3NyIsImJuZF8wNzYiLCJibmRzXzA0MSQ3Iiwidl8wNzEiLCJhcmdfMDczIiwiYm5kXzA3MiIsImJuZHNfMDQxJDgiLCJ2XzA2NyIsImFyZ18wNjkiLCJibmRfMDY4IiwiYm5kc18wNDEkOSIsInZfMDYzIiwiYXJnXzA2NSIsImJuZF8wNjQiLCJibmRzXzA0MSQxMCIsInZfMDU5IiwiYXJnXzA2MSIsImJuZF8wNjAiLCJibmRzXzA0MSQxMSIsInZfMDU1IiwiYXJnXzA1NyIsImJuZF8wNTYiLCJibmRzXzA0MSQxMiIsInZfMDUxIiwiYXJnXzA1MyIsImJuZF8wNTIiLCJibmRzXzA0MSQxMyIsInZfMDQ3IiwiYXJnXzA0OSIsImJuZF8wNDgiLCJibmRzXzA0MSQxNCIsInZfMDQzIiwiYXJnXzA0NSIsImJuZF8wNDQiLCJibmRzXzA0MSQxNSIsImNyZWF0ZSQwIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnX2ZvIiwid29yZF9zaXplIiwibGV2ZWxfYml0cyQxIiwiYWxhcm1fcHJlY2lzaW9uIiwiYWxhcm1fcHJlY2lzaW9uJDAiLCJkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWciLCJkZWZhdWx0JDEiLCJleGFtcGxlIiwidXNhZ2UiLCJmaWVsZCIsInRvX3NleHAiLCJkZXNjcmlwdGlvbiIsImFjIiwiZCIsImZpZWxkcyIsInhfMTA2IiwibmFtZTIiLCJuYW1lMSIsIm5hbWUiLCJzdHJpbmciLCJ4XzA0MCIsInQiLCJ0JDAiLCJleG4iLCJ0JDEiLCJ0JDIiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IkMSIsInRhZyIsImwiLCJhbGwiLCJkZWJ1ZyIsImNsb2NrIiwiZmQiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMSIsImZpbmFsaXplcnMiLCJpbnRlcnJ1cHRvciIsIm1vbml0b3IiLCJtb25pdG9yX3NlbmRfZXhuIiwicGFyYWxsZWwiLCJyZWFkZXIiLCJzY2hlZHVsZXIiLCJzaHV0ZG93biIsInRocmVhZF9wb29sIiwidGhyZWFkX3NhZmUiLCJ3cml0ZXIiLCJzeW1ib2wiLCJhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja18kMSIsImNoZWNrX2ludmFyaWFudHMkMSIsImRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RociQxIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyQxIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5JDEiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMiIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0JDEiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMkMSIsIm1heF9udW1fdGhyZWFkcyQxIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDEiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dCQxIiwicmVjb3JkX2JhY2t0cmFjZXMkMSIsInJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IkMSIsInRpbWluZ193aGVlbF9jb25maWckMSIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkkMSIsInQkMyIsInRhc2tfaWQiLCJub25lIiwiY3JlYXRlIiwiaXNfbm9uZSIsIngiLCJpc19zb21lIiwiZ2V0X3NvbWVfZXhuIiwiZ2V0IiwidCIsInVuc2FmZV9nZXQiLCJzZXRfc29tZSIsInYiLCJzZXRfbm9uZSIsInNldCIsInYkMCIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInhfMDAxIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ4XzAwMiIsImVtcHR5IiwiaXNfZW1wdHkiLCJlcXVhbCIsImR1bW15X2lkIiwiY2hpbGQiLCJ0IiwicG9vbCIsInNpYmxpbmciLCJwcmV2IiwiaWQiLCJzZXRfY2hpbGQiLCJ2Iiwic2V0X3NpYmxpbmciLCJzZXRfcHJldiIsInZhbHVlX2V4biIsImFsbG9jYXRlIiwidmFsdWUiLCJmcmVlIiwiZGlzY29ubmVjdF9zaWJsaW5nIiwic2libGluZyQwIiwiZGlzY29ubmVjdF9jaGlsZCIsImNoaWxkJDAiLCJkZXRhY2giLCJwcmV2JDAiLCJyZWxhdGlvbl90b19wcmV2IiwiY3JlYXRlIiwiY2FwYWNpdHkiLCJpbnZhcmlhbnQiLCJ0b192aXNpdCQyIiwidG9fdmlzaXQiLCJ0b192aXNpdCQwIiwibWF5YmVfcGFyZW50X3ZhbHVlIiwiZXhwZWN0ZWRfcHJldiIsIm5vZGUiLCJ0aGlzX3ZhbHVlIiwidGhpc192YWx1ZSQwIiwicGFyZW50X3ZhbHVlIiwidG9fdmlzaXQkMSIsImNyZWF0ZSQwIiwiY21wIiwibWluX3NpemUiLCJjb3B5IiwicG9vbCQwIiwic3RhcnQiLCJudW1fb2ZfYWxsb2NhdGVkX25vZGVzIiwiY29weV9ub2RlIiwibmV3X25vZGUiLCJuZXdfc3RhcnQiLCJyZXN0Iiwibm9kZV90b19jb3B5Iiwic2xvdCIsIm5vZGVfdG9fdXBkYXRlIiwibWVyZ2UiLCJyb290MSIsInJvb3QyIiwiYWRkX2NoaWxkIiwibmV3X2NoaWxkIiwiY3VycmVudF9jaGlsZCIsInYxIiwidjIiLCJ0b3BfZXhuIiwidG9wIiwiYWRkX25vZGUiLCJ0JDEiLCJ0JDAiLCJhZGQiLCJtYXhfc3RhY2tfZGVwdGgiLCJsb29wIiwiZGVwdGgiLCJoZWFkJDAiLCJuZXh0MSQwIiwibmV4dDIkMCIsImFjYyIsImhlYWQiLCJuZXh0MSIsIm5leHQyIiwiYWNjJDAiLCJoIiwieHMiLCJoZWFwIiwicmVtb3ZlX25vbl9lbXB0eSIsIm1lcmdlZF9jaGlsZHJlbiIsIm5ld19yb290IiwicmVtb3ZlX3RvcCIsImNsZWFyIiwibm9kZSQwIiwicG9wX2V4biIsInIiLCJwb3AiLCJwb3BfaWYiLCJmIiwiZm9sZCIsImluaXQiLCJpdGVyIiwibGVuZ3RoIiwiaXRlciQwIiwibGVuZ3RoJDAiLCJpc19lbXB0eSQwIiwibWVtIiwiZXhpc3RzIiwiZm9yX2FsbCIsImNvdW50Iiwic3VtIiwiZmluZCIsImZpbmRfbWFwIiwidG9fbGlzdCIsInRvX2FycmF5IiwibWluX2VsdCIsIm1heF9lbHQiLCJmb2xkX3Jlc3VsdCIsImZvbGRfdW50aWwiLCJvZl9hcnJheSIsImFyciIsIm9mX2xpc3QiLCJsIiwic2V4cF9vZl90IiwiaXNfbm9kZV92YWxpZCIsInZhbHVlX2V4biQwIiwic2V4cF9vZl90JDAiLCJzZXhwX29mX2EiLCJ4XzAwMSIsInJlbW92ZSIsInRva2VuIiwiYWRkX3JlbW92YWJsZSIsInVwZGF0ZSIsImZpbmRfZWx0Iiwibm9kZXMkMiIsIm5vZGVzIiwibm9kZXMkMCIsIm5vZGVzJDEiLCJ1cGRhdGUkMCIsImVsdCIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF90Iiwib2ZfYSIsImJ1ZiIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwidnRhZyIsImJpbl90IiwiYmluX2EiLCJjb21wYXJlIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwiZXF1YWwiLCJhXzAwMyIsImJfMDA0IiwidF9vZl9zZXhwIiwib2ZfYV8wMDUiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJncm91cCQwIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsImJpbl93cml0ZV90JDAiLCJwb3MiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDA4IiwiYl8wMDkiLCJlcXVhbCQwIiwiYV8wMTIiLCJiXzAxMyIsImFtX3J1bm5pbmdfdGVzdCIsIm5vbmUiLCJzb21lIiwieCIsInVuc2FmZV92YWx1ZSIsImlzX25vbmUiLCJ0IiwiaXNfc29tZSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwidmFsdWVfZXhuIiwidG9fb3B0aW9uIiwib2Zfb3B0aW9uIiwiYSIsInNleHBfb2ZfdCIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwibmV4dF8wMDUiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsImNyZWF0ZSIsInVudXNlZF9lbHRzIiwiciIsInNldF91bnVzZWRfZWx0cyIsInYiLCJiYWNrIiwic2V0X2JhY2siLCJmcm9udCIsInNldF9mcm9udCIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJ1bnVzZWRfZWx0cyQwIiwiYmFjayQwIiwiZnJvbnQkMCIsImxlbmd0aCQwIiwic2V4cF9vZl90JDAiLCJvZl9hXzAwNyIsImxlbmd0aF8wMDkiLCJmcm9udF8wMTEiLCJiYWNrXzAxMyIsInVudXNlZF9lbHRzXzAxNSIsImFyZ18wMTYiLCJibmRzXzAwOCIsImFyZ18wMTQiLCJibmRzXzAwOCQwIiwiYXJnXzAxMiIsImJuZHNfMDA4JDEiLCJhcmdfMDEwIiwiYm5kc18wMDgkMiIsImludmFyaWFudCIsImludmFyaWFudF9hIiwidCIsInhfMDE3IiwiY2hlY2siLCJmIiwidW51c2VkX2VsdHNfZnVuIiwiZWx0IiwiYmFja19mdW4iLCJmcm9udF9mdW4iLCJpIiwibGVuZ3RoX2Z1biIsImNyZWF0ZSQwIiwiZW5xdWV1ZSIsImEiLCJuZXdfYmFjayIsImRlcXVldWVfZXhuIiwieF8wMTgiLCJjbGVhcl9pbnRlcm5hbF9wb29sIiwiYWZ0ZXIiLCJ0Iiwic3BhbiIsInJlc3VsdCIsImxvZyIsImFyZzJfMDAzIiwiYXJnM18wMDQiLCJzZXhwX29mX2EiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDUiLCJyZXMxXzAwNiIsInJlczJfMDA3IiwicmVzM18wMDgiLCJsb2dfc3RyaW5nIiwibWVzc2FnZSIsImNvbmNhdCIsImVwcmludCIsImVwcmludF9zIiwiZXByaW50cyIsInByaW50X3MiLCJzZXhwIiwic2VjIiwiYWxsIiwic2V4cF9vZl90IiwidG9fcmVwciIsIm9mX3JlcHIiLCJuYW1lcyIsImRlYnVnIiwiZm9yd2FyZGluZyIsInIiLCJzZXRfZm9yd2FyZGluZyIsInYiLCJoYXNfc2Vlbl9lcnJvciIsInNldF9oYXNfc2Vlbl9lcnJvciIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzIiwic2V0X3RhaWxzX2Zvcl9hbGxfZXJyb3JzIiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMiLCJzZXRfaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMiLCJuZXh0X2Vycm9yIiwic2V0X25leHRfZXJyb3IiLCJpZCIsImhlcmUiLCJuYW1lIiwiZm9yd2FyZGluZyQwIiwiaGFzX3NlZW5fZXJyb3IkMCIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzJDAiLCJoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyQwIiwibmV4dF9lcnJvciQwIiwiaWQkMCIsImhlcmUkMCIsIm5hbWUkMCIsIm1ha2VfY3JlYXRvciIsIm5hbWVfZnVuIiwiaGVyZV9mdW4iLCJpZF9mdW4iLCJuZXh0X2Vycm9yX2Z1biIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzX2Z1biIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzX2Z1biIsImhhc19zZWVuX2Vycm9yX2Z1biIsImZvcndhcmRpbmdfZnVuIiwiY29tcGlsZV9hY2MiLCJjb21waWxlX2FjYyQwIiwibmFtZV9nZW4iLCJjb21waWxlX2FjYyQxIiwiaGVyZV9nZW4iLCJjb21waWxlX2FjYyQyIiwiaWRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsIm5leHRfZXJyb3JfZ2VuIiwiY29tcGlsZV9hY2MkNCIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzX2dlbiIsImNvbXBpbGVfYWNjJDUiLCJ0YWlsc19mb3JfYWxsX2Vycm9yc19nZW4iLCJjb21waWxlX2FjYyQ2IiwiaGFzX3NlZW5fZXJyb3JfZ2VuIiwiY29tcGlsZV9hY2MkNyIsImZvcndhcmRpbmdfZ2VuIiwiYWNjIiwiY3JlYXRlIiwibWFwIiwiaXRlciIsImZvbGQiLCJpbml0IiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwicmVjb3JkJDAiLCJkZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9ucyIsInQkMSIsImFjIiwiYWMkMCIsInQkMCIsInhfMDAxIiwibmV4dF9pZCIsImNyZWF0ZV93aXRoX3BhcmVudCIsImluZm8iLCJwYXJlbnQiLCJpIiwicyIsInMkMCIsInhfMDAyIiwicGFyZW50JDAiLCJtYWluIiwiYmFja3RyYWNlX2hpc3RvcnkiLCJsb2NhbF9zdG9yYWdlIiwicHJpb3JpdHkiLCJtb25pdG9yIiwiYmFja3RyYWNlX2hpc3RvcnkkMCIsImxvY2FsX3N0b3JhZ2UkMCIsInByaW9yaXR5JDAiLCJtb25pdG9yJDAiLCJtb25pdG9yX2Z1biIsInByaW9yaXR5X2Z1biIsImxvY2FsX3N0b3JhZ2VfZnVuIiwiYmFja3RyYWNlX2hpc3RvcnlfZnVuIiwibW9uaXRvcl9nZW4iLCJwcmlvcml0eV9nZW4iLCJsb2NhbF9zdG9yYWdlX2dlbiIsImJhY2t0cmFjZV9oaXN0b3J5X2dlbiIsImJhY2t0cmFjZV9oaXN0b3J5XzAwOCIsImxvY2FsX3N0b3JhZ2VfMDA2IiwicHJpb3JpdHlfMDA0IiwibW9uaXRvcl8wMDIiLCJhcmdfMDA5IiwiYm5kc18wMDEiLCJhcmdfMDA3IiwiYm5kc18wMDEkMCIsImFyZ18wMDUiLCJibmRzXzAwMSQxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDIiLCJpbnZhcmlhbnQiLCJjcmVhdGVfbGlrZSIsImZpbmRfbG9jYWwiLCJrZXkiLCJ3aXRoX2xvY2FsIiwiZGF0YSIsInJlY29yZF9iYWNrdHJhY2UiLCJkdW1teV9lIiwiZHVtbXlfZiIsImR1bW15X2EiLCJzZXhwX29mX3Nsb3RzIiwib2ZfZXZlbnQiLCJldmVudCIsIm9mX2pvYiIsImpvYiIsImlzX2V2ZW50IiwiaXNfam9iIiwia2luZCIsInByb2plY3QiLCJqb2Jfb3JfZXZlbnQiLCJldmVudHMiLCJzZXRfZXhlY3V0aW9uX2NvbnRleHQiLCJleGVjdXRpb25fY29udGV4dCIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJmcm9udCIsInNldF9mcm9udCIsIm1hc2siLCJzZXRfbWFzayIsImpvYnMiLCJzZXRfam9icyIsImpvYnNfbGVmdF90aGlzX2N5Y2xlIiwic2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIiwibnVtX2pvYnNfcnVuIiwic2V0X251bV9qb2JzX3J1biIsImxlbmd0aCQwIiwiZnJvbnQkMCIsIm1hc2skMCIsImpvYnMkMCIsImpvYnNfbGVmdF90aGlzX2N5Y2xlJDAiLCJudW1fam9ic19ydW4kMCIsIm51bV9qb2JzX3J1bl8wMDIiLCJqb2JzX2xlZnRfdGhpc19jeWNsZV8wMDQiLCJqb2JzXzAwNiIsIm1hc2tfMDA4IiwiZnJvbnRfMDEwIiwibGVuZ3RoXzAxMiIsImJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlXzAxNCIsImFyZ18wMTUiLCJhcmdfMDEzIiwiYXJnXzAxMSIsImJuZHNfMDAxJDMiLCJibmRzXzAwMSQ0IiwiYm5kc18wMDEkNSIsIm9mZnNldCIsImNhcGFjaXR5IiwiY2hlY2siLCJmIiwibGVuZ3RoX2Z1biIsImZyb250X2Z1biIsIm1hc2tfZnVuIiwiam9ic19mdW4iLCJqb2JzX2xlZnRfdGhpc19jeWNsZV9mdW4iLCJudW1fam9ic19ydW5fZnVuIiwiY3JlYXRlX2FycmF5IiwiYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUiLCJjbGVhciIsInNldCIsImEiLCJvZmZzZXQkMCIsImVucXVldWUiLCJvbGRfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJvbGRfam9icyIsIm9sZF9mcm9udCIsImxlbjEiLCJsZW4yIiwibmV3X2pvYnMiLCJzZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUkMCIsIm4iLCJjYW5fcnVuX2Ffam9iIiwicnVuX2pvYiIsInNjaGVkdWxlciIsInJ1bl9leHRlcm5hbF9qb2JzIiwiZXh0ZXJuYWxfam9icyIsInJ1bl9qb2JzIiwidGhpc19qb2IiLCJleG4kMCIsImV4biIsImJhY2t0cmFjZSIsInBvcyQzIiwicG9zJDIiLCJwb3MkMSIsInBvcyQwIiwicG9zIiwibmFtZXMkMCIsImlzX251bGwiLCJkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWciLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic2V4cF9vZl90JDEiLCJ0cmFuc2l0aW9uX2lzX2FsbG93ZWQiLCJmcm9tIiwidG8iLCJzZXhwX29mX2V2ZW50IiwiYXQiLCJpbnRlcnZhbCIsInN0YXR1cyIsIm1hdGNoIiwibm9uZSIsInNvbWUiLCJpc19ub25lIiwiaXNfc29tZSIsImZpcnN0X3NvbWUiLCJ0MSIsInQyIiwidW5zYWZlX3ZhbHVlIiwic2V4cF9vZl90JDIiLCJwcHhfb3B0aW9uYWxfZV8wIiwidmFsdWUkMCIsImRlZmF1bHQkMCIsInZhbHVlX2V4biIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsInNldF9zdGF0dXMiLCJwcmV2X2ZpcmVkIiwic2V0X3ByZXZfZmlyZWQiLCJuZXh0X2ZpcmVkIiwic2V0X25leHRfZmlyZWQiLCJzZXRfaW50ZXJ2YWwiLCJjYWxsYmFjayIsImF0JDAiLCJzZXRfYXQiLCJhbGFybSIsInNldF9hbGFybSIsInN0YXR1cyQwIiwicHJldl9maXJlZCQwIiwibmV4dF9maXJlZCQwIiwiaW50ZXJ2YWwkMCIsImV4ZWN1dGlvbl9jb250ZXh0JDAiLCJjYWxsYmFjayQwIiwiYXQkMSIsImFsYXJtJDAiLCJhbGFybV9mdW4iLCJhdF9mdW4iLCJjYWxsYmFja19mdW4iLCJleGVjdXRpb25fY29udGV4dF9mdW4iLCJpbnRlcnZhbF9mdW4iLCJuZXh0X2ZpcmVkX2Z1biIsInByZXZfZmlyZWRfZnVuIiwic3RhdHVzX2Z1biIsImFsYXJtX2dlbiIsImF0X2dlbiIsImNhbGxiYWNrX2dlbiIsImV4ZWN1dGlvbl9jb250ZXh0X2dlbiIsImludGVydmFsX2dlbiIsIm5leHRfZmlyZWRfZ2VuIiwicHJldl9maXJlZF9nZW4iLCJzdGF0dXNfZ2VuIiwiZ290Iiwic2V4cGlmaWVyIiwiY29tcGFyYXRvciIsImFfMDEzIiwiYl8wMTQiLCJhXzAwOSIsImJfMDEwIiwiZXhwZWN0IiwiYV8wMDUiLCJiXzAwNiIsInNldF9zdGF0dXMkMCIsInNldF9zdGF0dXNfaWYiLCJpcyIsInNleHBfb2ZfdCQzIiwiayIsImlzX3dhbGxfY2xvY2siLCJoYW5kbGVfZmlyZWQiLCJtb3N0X3JlY2VudGx5X2ZpcmVkIiwic2V0X21vc3RfcmVjZW50bHlfZmlyZWQiLCJmaXJlZF9ldmVudHMiLCJzZXRfZmlyZWRfZXZlbnRzIiwiYW1fYWR2YW5jaW5nIiwic2V0X2FtX2FkdmFuY2luZyIsImFkdmFuY2VfZXJyb3JzIiwic2V0X2FkdmFuY2VfZXJyb3JzIiwic2NoZWR1bGVyJDAiLCJpc193YWxsX2Nsb2NrJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm1vc3RfcmVjZW50bHlfZmlyZWQkMCIsImZpcmVkX2V2ZW50cyQwIiwiZXZlbnRzJDAiLCJhbV9hZHZhbmNpbmckMCIsImFkdmFuY2VfZXJyb3JzJDAiLCJtYWtlX2NyZWF0b3IkMCIsImFkdmFuY2VfZXJyb3JzX2Z1biIsImFtX2FkdmFuY2luZ19mdW4iLCJldmVudHNfZnVuIiwiZmlyZWRfZXZlbnRzX2Z1biIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImlzX3dhbGxfY2xvY2tfZnVuIiwic2NoZWR1bGVyX2Z1biIsImFkdmFuY2VfZXJyb3JzX2dlbiIsImFtX2FkdmFuY2luZ19nZW4iLCJldmVudHNfZ2VuIiwiZmlyZWRfZXZlbnRzX2dlbiIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZ2VuIiwiaGFuZGxlX2ZpcmVkX2dlbiIsImlzX3dhbGxfY2xvY2tfZ2VuIiwiY29tcGlsZV9hY2MkOCIsInNjaGVkdWxlcl9nZW4iLCJjcmVhdGUkMCIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQ0Iiwibm93IiwiYWxsX2V2ZW50cyIsImF0MiIsImF0MSIsInRpbWluZ193aGVlbF9ub3ciLCJpc19pbl9maXJlZF9ldmVudHMiLCJ0YXJnZXRfZXZlbnQiLCJjdXJyZW50JDEiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiaW52YXJpYW50X3dpdGhfam9icyIsImpvYl9pbnZhcmlhbnQiLCJ4XzAxNiIsInBweF9vcHRpb25hbF9lXzAkMCIsImFfMDE3IiwiYl8wMTgiLCJnb3QkMCIsInNleHBpZmllciQwIiwiY29tcGFyYXRvciQwIiwiYV8wMTkiLCJiXzAyMCIsImludmFyaWFudCQwIiwic2V4cF9vZl90JDUiLCJ4XzAyMSIsImludmFyaWFudCQxIiwiaW52YXJpYW50X3dpdGhfam9icyQwIiwic2V4cF9vZl90JDYiLCJ4XzAyMiIsImlkJDEiLCJpc193YWxsX2Nsb2NrJDEiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwicmVhZF9vbmx5IiwiZmlyZSIsImNvbnRpbnVlJDAiLCJuZXh0JDAiLCJjb250aW51ZSQxIiwicHB4X29wdGlvbmFsX2VfMCQxIiwibmV4dCIsInBweF9vcHRpb25hbF9lXzAkMiIsInByZXYiLCJhbGFybV9wcmVjaXNpb24iLCJuZXh0X2FsYXJtX2ZpcmVzX2F0IiwibmV4dF9hbGFybV9ydW5zX2F0Iiwibm93JDAiLCJ0aW1pbmdfd2hlZWxfbm93JDAiLCJzY2hlZHVsZSIsInJlbW92ZV9mcm9tX2ZpcmVkIiwibmV3X3N0YXR1cyIsInNleHBfb2ZfZXZlbnQkMCIsInN0YXR1cyQxIiwicHJldl9maXJlZCQxIiwic2V0X3ByZXZfZmlyZWQkMCIsIm5leHRfZmlyZWQkMSIsInNldF9uZXh0X2ZpcmVkJDAiLCJpbnRlcnZhbCQxIiwic2V0X2ludGVydmFsJDAiLCJleGVjdXRpb25fY29udGV4dCQxIiwiY2FsbGJhY2skMSIsInNldF9hdCQwIiwiYWxhcm0kMSIsInNldF9hbGFybSQwIiwic2V4cF9vZl90JDciLCJpbnZhcmlhbnQkMiIsInNldF9zdGF0dXMkMSIsInNldF9zdGF0dXNfaWYkMCIsInNjaGVkdWxlZF9hdCIsImNyZWF0ZV9pbnRlcm5hbCIsImFkZCQwIiwiY3JlYXRlX2FuZF9hZGQiLCJhdCQyIiwiYWZ0ZXIkMCIsInJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wciIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXRfaW50ZXJ2YWxzIiwic2V4cF9vZl90JDgiLCJhYm9ydCIsImFib3J0X2lmX3Bvc3NpYmxlIiwiYWJvcnRfZXhuIiwicmVhc29uIiwiY3JlYXRlJDEiLCJpc19zY2hlZHVsZWQiLCJzY2hlZHVsZV9hdF9pbnRlcm5hbCIsInNjaGVkdWxlX2F0Iiwic2NoZWR1bGVfYWZ0ZXIiLCJzY2hlZHVsZV9hdF9pbnRlcnZhbHMiLCJyZXNjaGVkdWxlX2F0IiwicmVzY2hlZHVsZV9hZnRlciIsInJ1bl9hZnRlciIsInJ1bl9hdCIsInJ1bl9hdF9pbnRlcnZhbHMiLCJydW5fZmlyZWRfZXZlbnRzIiwic2VuZF9leG4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0Iiwic2VuZF9leG4kMCIsImFueV9maXJlZF9ldmVudHNfdG9fcnVuIiwiYWR2YW5jZV9jbG9jayIsImZpcmVfcGFzdF9hbGFybXMiLCJhZHZhbmNlX2ludGVybmFsIiwicHJlcGFyZV90b19hZHZhbmNlIiwiZmluaXNoX2FkdmFuY2luZyIsImVycm9ycyIsImFkdmFuY2VfYnlfYWxhcm1zIiwibWluX2FsYXJtX3RpbWUiLCJhZHZhbmNlX2J5X2FsYXJtc19ieSIsImJ5IiwiYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfIiwiYWR2YW5jZV9kaXJlY3RseSIsImFkdmFuY2VfZGlyZWN0bHlfYnkiLCJkdXJhdGlvbl9vZiIsInN0YXJ0IiwiZHVyYXRpb24iLCJtYXhfYWxhcm1fdGltZV9pbl9taW5fdGltaW5nX3ciLCJoYXNfZXZlbnRzX3RvX3J1biIsImNyZWF0ZV93aXRoX2NlbGwiLCJjZWxsIiwiY3JlYXRlX2Z1bGwiLCJleGVjIiwiZXhlYyQwIiwiZXhlY19mdW4iLCJleGVjX2dlbiIsInNleHBfb2ZfdCQwIiwiZXhlY3V0aW9uX2NvbnRleHRfMDAyIiwicmVjb3JkX2JhY2t0cmFjZXMiLCJzZXRfcmVjb3JkX2JhY2t0cmFjZXMiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8iLCJzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV8iLCJjaGVja19pbnZhcmlhbnRzIiwic2V0X2NoZWNrX2ludmFyaWFudHMiLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiIsInNldF95aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiIsInlpZWxkJDAiLCJzZXRfeWllbGQiLCJldmVudF9hZGRlZF9ob29rIiwic2V0X2V2ZW50X2FkZGVkX2hvb2siLCJqb2JfcXVldWVkX2hvb2siLCJzZXRfam9iX3F1ZXVlZF9ob29rIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2siLCJzZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2giLCJ0aW1lX3NvdXJjZSIsInNldF90aW1lX3NvdXJjZSIsInRvdGFsX2N5Y2xlX3RpbWUiLCJzZXRfdG90YWxfY3ljbGVfdGltZSIsImxhc3RfY3ljbGVfbnVtX2pvYnMiLCJzZXRfbGFzdF9jeWNsZV9udW1fam9icyIsImxhc3RfY3ljbGVfdGltZSIsInNldF9sYXN0X2N5Y2xlX3RpbWUiLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZCIsInNldF9ydW5fZXZlcnlfY3ljbGVfZW5kIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0Iiwic2V0X3J1bl9ldmVyeV9jeWNsZV9zdGFydCIsImluX2N5Y2xlIiwic2V0X2luX2N5Y2xlIiwiY3ljbGVfc3RhcnQiLCJzZXRfY3ljbGVfc3RhcnQiLCJjeWNsZV9jb3VudCIsInNldF9jeWNsZV9jb3VudCIsInVuY2F1Z2h0X2V4bl91bndyYXBwZWQiLCJzZXRfdW5jYXVnaHRfZXhuIiwic2V0X2N1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQiLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0Iiwic2V0X21haW5fZXhlY3V0aW9uX2NvbnRleHQiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIiwibG93X3ByaW9yaXR5X2pvYnMiLCJub3JtYWxfcHJpb3JpdHlfam9icyIsImpvYl9wb29sIiwic2V0X2pvYl9wb29sIiwiY2hlY2tfYWNjZXNzIiwic2V0X2NoZWNrX2FjY2VzcyIsInJlY29yZF9iYWNrdHJhY2VzJDAiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMCIsImNoZWNrX2ludmFyaWFudHMkMCIsInlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluJDAiLCJ5aWVsZCQxIiwiZXZlbnRfYWRkZWRfaG9vayQwIiwiam9iX3F1ZXVlZF9ob29rJDAiLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayQwIiwiZXh0ZXJuYWxfam9icyQwIiwidGltZV9zb3VyY2UkMCIsInRvdGFsX2N5Y2xlX3RpbWUkMCIsImxhc3RfY3ljbGVfbnVtX2pvYnMkMCIsImxhc3RfY3ljbGVfdGltZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZCQwIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlJDAiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnQkMCIsImluX2N5Y2xlJDAiLCJjeWNsZV9zdGFydCQwIiwiY3ljbGVfY291bnQkMCIsInVuY2F1Z2h0X2V4biIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQkMCIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHQkMCIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMkMCIsImxvd19wcmlvcml0eV9qb2JzJDAiLCJub3JtYWxfcHJpb3JpdHlfam9icyQwIiwiam9iX3Bvb2wkMCIsImNoZWNrX2FjY2VzcyQwIiwiY2hlY2tfYWNjZXNzX2Z1biIsImpvYl9wb29sX2Z1biIsIm5vcm1hbF9wcmlvcml0eV9qb2JzX2Z1biIsImxvd19wcmlvcml0eV9qb2JzX2Z1biIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnNfZnVuIiwibWFpbl9leGVjdXRpb25fY29udGV4dF9mdW4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0X2Z1biIsInVuY2F1Z2h0X2V4bl9mdW4iLCJjeWNsZV9jb3VudF9mdW4iLCJjeWNsZV9zdGFydF9mdW4iLCJpbl9jeWNsZV9mdW4iLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlX2Z1IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9mdW4iLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlX2Z1biIsImxhc3RfY3ljbGVfdGltZV9mdW4iLCJsYXN0X2N5Y2xlX251bV9qb2JzX2Z1biIsInRvdGFsX2N5Y2xlX3RpbWVfZnVuIiwidGltZV9zb3VyY2VfZnVuIiwiZXh0ZXJuYWxfam9ic19mdW4iLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va18iLCJqb2JfcXVldWVkX2hvb2tfZnVuIiwiZXZlbnRfYWRkZWRfaG9va19mdW4iLCJ5aWVsZF9mdW4iLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbl9mdW4iLCJjaGVja19pbnZhcmlhbnRzX2Z1biIsInJlY29yZF9iYWNrdHJhY2VzX2Z1biIsImNoZWNrX2FjY2Vzc19nZW4iLCJqb2JfcG9vbF9nZW4iLCJub3JtYWxfcHJpb3JpdHlfam9ic19nZW4iLCJsb3dfcHJpb3JpdHlfam9ic19nZW4iLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzX2dlbiIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfZ2VuIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF9nZW4iLCJ1bmNhdWdodF9leG5fZ2VuIiwiY3ljbGVfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkOSIsImN5Y2xlX3N0YXJ0X2dlbiIsImNvbXBpbGVfYWNjJDEwIiwiaW5fY3ljbGVfZ2VuIiwiY29tcGlsZV9hY2MkMTEiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGVfZ2UiLCJjb21waWxlX2FjYyQxMyIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlX2dlbiIsImNvbXBpbGVfYWNjJDE1IiwibGFzdF9jeWNsZV90aW1lX2dlbiIsImNvbXBpbGVfYWNjJDE2IiwibGFzdF9jeWNsZV9udW1fam9ic19nZW4iLCJjb21waWxlX2FjYyQxNyIsInRvdGFsX2N5Y2xlX3RpbWVfZ2VuIiwiY29tcGlsZV9hY2MkMTgiLCJ0aW1lX3NvdXJjZV9nZW4iLCJjb21waWxlX2FjYyQxOSIsImV4dGVybmFsX2pvYnNfZ2VuIiwiY29tcGlsZV9hY2MkMjAiLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va18kMCIsImNvbXBpbGVfYWNjJDIxIiwiam9iX3F1ZXVlZF9ob29rX2dlbiIsImNvbXBpbGVfYWNjJDIyIiwiZXZlbnRfYWRkZWRfaG9va19nZW4iLCJjb21waWxlX2FjYyQyMyIsInlpZWxkX2dlbiIsImNvbXBpbGVfYWNjJDI0IiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fZ2VuIiwiY29tcGlsZV9hY2MkMjUiLCJjaGVja19pbnZhcmlhbnRzX2dlbiIsImNvbXBpbGVfYWNjJDI2IiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDEiLCJjb21waWxlX2FjYyQyNyIsInJlY29yZF9iYWNrdHJhY2VzX2dlbiIsImNyZWF0ZSQyIiwiY2hlY2tfYWNjZXNzXzAwNyIsImpvYl9wb29sXzAwOSIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnNfMDE1IiwibG93X3ByaW9yaXR5X2pvYnNfMDEzIiwibm9ybWFsX3ByaW9yaXR5X2pvYnNfMDExIiwibWFpbl9leGVjdXRpb25fY29udGV4dF8wMTciLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XzAxOSIsInVuY2F1Z2h0X2V4bl8wMjEiLCJjeWNsZV9jb3VudF8wMjciLCJjeWNsZV9zdGFydF8wMjkiLCJpbl9jeWNsZV8wMzEiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfMDMzIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlXzAzIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF8wMzciLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlXzAzOSIsImxhc3RfY3ljbGVfdGltZV8wNDEiLCJsYXN0X2N5Y2xlX251bV9qb2JzXzA0MyIsInRvdGFsX2N5Y2xlX3RpbWVfMDQ1IiwidGltZV9zb3VyY2VfMDQ3IiwiZXh0ZXJuYWxfam9ic18wNDkiLCJqb2JfcXVldWVkX2hvb2tfMDUzIiwiZXZlbnRfYWRkZWRfaG9va18wNTUiLCJ5aWVsZF8wNTciLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbl8wNTkiLCJjaGVja19pbnZhcmlhbnRzXzA2MSIsInJlY29yZF9iYWNrdHJhY2VzXzA2NSIsImFyZ18wNjYiLCJibmRzXzAwNiIsImFyZ18wNjQiLCJibmRzXzAwNiQwIiwiYXJnXzA2MiIsImJuZHNfMDA2JDEiLCJhcmdfMDYwIiwiYm5kc18wMDYkMiIsImFyZ18wNTgiLCJibmRzXzAwNiQzIiwiYXJnXzA1NiIsImJuZHNfMDA2JDQiLCJhcmdfMDU0IiwiYm5kc18wMDYkNSIsImFyZ18wNTIiLCJibmRzXzAwNiQ2IiwiYXJnXzA1MCIsImJuZHNfMDA2JDciLCJhcmdfMDQ4IiwiYm5kc18wMDYkOCIsImFyZ18wNDYiLCJibmRzXzAwNiQ5IiwiYXJnXzA0NCIsImJuZHNfMDA2JDEwIiwiYXJnXzA0MiIsImJuZHNfMDA2JDExIiwiYXJnXzA0MCIsImJuZHNfMDA2JDEyIiwiYXJnXzAzOCIsImJuZHNfMDA2JDEzIiwiYXJnXzAzNiIsImJuZHNfMDA2JDE0IiwiYXJnXzAzNCIsImJuZHNfMDA2JDE1IiwiYXJnXzAzMiIsImJuZHNfMDA2JDE2IiwiYXJnXzAzMCIsImJuZHNfMDA2JDE3IiwiYXJnXzAyOCIsImJuZHNfMDA2JDE4IiwiYXJnXzAyMiIsImFyZzFfMDI0IiwiYXJnMF8wMjMiLCJyZXMwXzAyNSIsInJlczFfMDI2IiwiYm5kc18wMDYkMTkiLCJhcmdfMDIwIiwiYm5kc18wMDYkMjAiLCJhcmdfMDE4IiwiYm5kc18wMDYkMjEiLCJhcmdfMDE2IiwiYm5kc18wMDYkMjIiLCJhcmdfMDE0IiwiYm5kc18wMDYkMjMiLCJhcmdfMDEyIiwiYm5kc18wMDYkMjQiLCJhcmdfMDEwIiwiYm5kc18wMDYkMjUiLCJhcmdfMDA4IiwiYm5kc18wMDYkMjYiLCJ1bmNhdWdodF9leG4kMCIsImFyZzFfMDY4IiwiYXJnMF8wNjciLCJyZXMwXzA2OSIsInJlczFfMDcwIiwibnVtX3BlbmRpbmdfam9icyIsImxhc3RfY3ljbGVfbnVtX2pvYnMkMSIsInVub3JkZXJlZF9pc19zdWJsaXN0IiwiZXF1YWwiLCJzbWFsbCIsImxhcmdlIiwibGFyZ2UkMCIsIngiLCJsJDAiLCJ5IiwibCIsImNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IiwidGFibGUiLCJhcnJheSIsImZpZWxkIiwicSIsImZyZWVfam9iIiwiam9iX3F1ZXVlIiwiZiQwIiwiZW5xdWV1ZV9qb2IiLCJjcmVhdGUkMyIsImlzX2RlYWQiLCJzZXRfY2hlY2tfYWNjZXNzJDAiLCJiYWNrdHJhY2Vfb2ZfZmlyc3Rfam9iIiwidF9yZWYiLCJjaGVja19hY2Nlc3MkMSIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQkMSIsIndpdGhfZXhlY3V0aW9uX2NvbnRleHQxIiwidG1wX2NvbnRleHQiLCJvbGRfY29udGV4dCIsIndpdGhfZXhlY3V0aW9uX2NvbnRleHQiLCJjcmVhdGVfam9iIiwiZ290X3VuY2F1Z2h0X2V4biIsImFyZzFfMDcyIiwiYXJnMF8wNzEiLCJyZXMwXzA3MyIsInJlczFfMDc0Iiwic3RhcnRfY3ljbGUiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5IiwiZSIsImUkMCIsInN0YWJpbGl6ZSIsImNyZWF0ZV90aW1lX3NvdXJjZSIsInRpbWluZ193aGVlbF9jb25maWciLCJ3YWxsX2Nsb2NrIiwic2V0X3ByZXYiLCJwYXJhbSIsInNldF9uZXh0IiwicnVuIiwiY3JlYXRlMiIsInJ1bjEiLCJleGVjdXRpb25fY29udGV4dDEiLCJydW4yIiwiZXhlY3V0aW9uX2NvbnRleHQyIiwic2NoZWR1bGVfam9icyIsImFkZCIsIm9mX2xpc3QiLCJmaXJzdCIsImwkMSIsImwkMiIsInJ1biQwIiwicHJldiQwIiwiYWNjJDAiLCJjZWxsX29mX2hhbmRsZXIiLCJpbmRpciIsInNxdWFzaCIsInQkMyIsInQkNCIsImluZGlyJDEiLCJ0JDUiLCJpbmRpciQwIiwidCQyIiwiYV9pbnZhcmlhbnQiLCJoYW5kbGVyIiwicGVlayIsInZhbHVlIiwiaWZfZW1wdHlfdGhlbl9mYWlsd2l0aCIsImlzX2VtcHR5IiwiaXNfZnVsbCIsImZpbGwiLCJyZW1vdmVfaGFuZGxlciIsIngkMCIsImFkZF9oYW5kbGVyIiwiaGFuZGxlciQxIiwiaGFuZGxlciQyIiwicnVuJDEiLCJoYW5kbGVyJDAiLCJoYXNfaGFuZGxlcnMiLCJ1cG9uIiwidXBvbiQwIiwiY29ubmVjdCIsImJpbmRfcmVzdWx0IiwiYmluZF9yaHMiLCJiaW5kX3Jlc3VsdCQwIiwiaXZhciIsImJpbmRfcmhzX2NvbnRlbnRzIiwiaXZhciQwIiwibGFzdDEiLCJsYXN0MiIsImhhbmRsZXIxIiwiZXhlY3V0aW9uX2NvbnRleHQyJDAiLCJydW4yJDAiLCJoYW5kbGVyMSQwIiwidiQwIiwib2ZfaXZhciIsImludmFyaWFudF9hIiwicmV0dXJuJDAiLCJpc19kZXRlcm1pbmVkIiwiYmluZCIsImgiLCJyZWFkIiwiZmlsbF9pZl9lbXB0eSIsInRvX2JpbmFibGUiLCJvZl9iaW5hYmxlIiwic2V4cF9vZl9ob3ciLCJ2XzAwMSIsIm5ldmVyIiwicmV0dXJuJDEiLCJyZXR1cm4kMiIsInJldHVybiQzIiwidW5pdCIsImJvdGgkMCIsImExIiwiYTIiLCJkb25fdF93YWl0X2ZvciIsImYyIiwiZjEiLCJwcm9jZXNzIiwicmVzdCIsImNob2ljZSIsImVuYWJsZWQiLCJjaG9pY2VzIiwidW5yZWdpc3RlcnMiLCJyZWFkeSIsImNob29zZV9yZXN1bHQiLCJjaG9pY2VzJDAiLCJjaG9pY2VzJDEiLCJnZW5lcmljX2Nob29zZSIsInVucmVnaXN0ZXJzJDAiLCJjaG9vc2UyIiwiZmEiLCJiIiwiZmIiLCJhX2hhbmRsZXIiLCJiX2hhbmRsZXIiLCJhdiIsImNob29zZSIsImFueV9mIiwidHMiLCJhbnkiLCJhbnlfdW5pdCIsImZvciQwIiwiZG8kMCIsImxvb3AiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwiZm9yZXZlciIsInhzIiwic2VxbWFwIiwiYnMiLCJkcyIsImFsbF91bml0IiwiZCIsIm9rIiwib2ZfYV8wMDUiLCJ4XzAwNiIsImFyZzBfMDAyIiwicmVzMF8wMDMiLCJ4XzAwNyIsImNvbGxlY3QiLCJpc19jbG9zZWQiLCJmaWxsX2V4biIsImNsb3NlX2V4biIsImNsb3NlX2lmX29wZW4iLCJleHRlbmQiLCJkZWZlcnJlZDAiLCJkZWZlcnJlZDEiLCJpbXBvcnQwIiwiZXJyb3IiLCJkZXRhY2giLCJkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIiwiaGFuZGxlcl9zdGF0ZV9yZWYiLCJydW5fZiIsImJhZ19lbHQiLCJpbm5lcl9leG4kMCIsImlubmVyX2V4biIsImRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSIsInRhaWwiLCJnZXRfbmV4dF9lcnJvciIsImRldGFjaF9hbmRfZ2V0X25leHRfZXJyb3IiLCJleHRyYWN0X2V4biIsImNvbHVtbiIsIm1vbml0b3IkMSIsIm5hbWUkMSIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlJDEiLCJyZXN0JDAiLCJyZXN0JDEiLCJ0MyIsInJlc3QkMiIsInJlc3QkMyIsInRyYWNlcyIsInJlc3QkNCIsInQxJDAiLCJyZXN0JDUiLCJ0MiQwIiwicmVzdCQ2IiwidDIkMSIsImJhY2t0cmFjZSQyIiwibGlzdF9pZl9ub3RfZW1wdHkiLCJtYXRjaCQyIiwibWF0Y2gkMyIsImV4dHJhY3RfZXhuJDAiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwiYXJnMV8wMDgiLCJhcmcwXzAwNyIsInJlczBfMDA5IiwicmVzMV8wMTAiLCJ3aXRoaW5fY29udGV4dCIsImNvbnRleHQiLCJ3aXRoaW5fZ2VuIiwid2l0aGluIiwid2l0aGluX3YiLCJ3aXRoaW4kMCIsInNjaGVkdWxlX3dpdGhfZGF0YSIsIndvcmsiLCJ1cG9uX3dvcmtfZmlsbF9pIiwic2NoZWR1bGUkMCIsInByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0IiwicHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQkMCIsImNhbGxfYW5kX2ZpbGwiLCJzdHJlYW1faXRlciIsInN0cmVhbSIsImV4bnMiLCJmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm8iLCJyZXN1bHRfZmlsbGVyIiwiaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IiwidHJ5X3dpdGhfbG9nX2V4biIsInRyeV93aXRoIiwiZG9fZXh0cmFjdF9leG4iLCJoYW5kbGVfZXhuIiwicmVzIiwidHJ5X3dpdGhfb3JfZXJyb3IiLCJ0cnlfd2l0aF9qb2luX29yX2Vycm9yIiwicHJvdGVjdCIsImZpbmFsbHkkMCIsImZyIiwiciQwIiwiZmluYWxseV9leG4iLCJoYW5kbGVfZXJyb3JzIiwiY2F0Y2hfc3RyZWFtIiwiY2F0Y2gkMCIsImNhdGNoX2Vycm9yIiwiZGVwdGgiLCJuJDAiLCJmaXJzdF9leG4iLCJsb29wJDAiLCJsb29wX25leHQiLCJsb29wX25leHQkMCIsImNsb3NlZCIsInVuZm9sZCIsImNvcHlfdG9fdGFpbCIsImFwcGVuZCIsImZpbHRlcl9kZXByZWNhdGVkIiwiZmlsdGVyX21hcF9kZXByZWNhdGVkIiwiZmlyc3RfbiIsImF2YWlsYWJsZV9ub3ciLCJzcGxpdCIsInN0b3AiLCJyZWFzb25fZm9yX3N0b3BwaW5nIiwicHJlZml4IiwiZmluaXNoIiwibyIsImZpbmQiLCJmb3VuZCIsInVuZ3JvdXAiLCJpbnRlcmxlYXZlIiwibnVtX29wZW4iLCJjbG9zZSIsIm91dGVyX2Nsb3NlZCIsInRha2VfdW50aWwiLCJ6IiwiaXRlcl9kdXJhYmx5IiwiaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmQiLCJpdGVyX2R1cmFibHkkMCIsIm9mX2Z1biIsInNldF9pdmFyIiwiaGFzX2FueV93YWl0ZXJzIiwic2V0X2hhc19hbnlfd2FpdGVycyIsImhhc19hbnlfd2FpdGVycyQwIiwicmVwciIsIm9mX2FfMDAxIiwiaGFzX2FueV93YWl0ZXJzXzAwMyIsIml2YXJfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJpdmFyX2Z1biIsImhhc19hbnlfd2FpdGVyc19mdW4iLCJicm9hZGNhc3QiLCJ3YWl0IiwiaGFzX2FueV93YWl0ZXJzJDEiLCJ4XzAwMyIsImJpbmRfdW5pdCIsIndhaXRfZm9yIiwicnVuX3F1ZXVlZF9hbGFybXMiLCJ3YWxrX2FsYXJtcyIsIm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCIsImFkdmFuY2VfdG8iLCJuZXh0X2FsYXJtX2ZpcmVzX2F0JDAiLCJxdWV1ZWRfYWxhcm1zX3JhbiIsInNwYW5fdG9fdGltZSIsInJ1bl9hdF9pbnRlcm5hbCIsInRpbWUiLCJyZW1vdmVfYWxhcm0iLCJvZl9hXzAwNyIsIm9mX2hfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJzZXRfc2NoZWR1bGVkX2F0IiwibnVtX2ZpcmVzX3RvX3NraXAiLCJzZXRfbnVtX2ZpcmVzX3RvX3NraXAiLCJmaXJlZCIsInNjaGVkdWxlZF9hdCQwIiwibnVtX2ZpcmVzX3RvX3NraXAkMCIsImZpcmVkJDAiLCJvZl9hXzAxNSIsIm9mX2hfMDE2IiwiYWxhcm1fMDE4IiwiZmlyZWRfMDIyIiwibnVtX2ZpcmVzX3RvX3NraXBfMDI0Iiwic2NoZWR1bGVkX2F0XzAyNiIsInRpbWVfc291cmNlXzAyOCIsImFyZ18wMjkiLCJibmRzXzAxNyIsImFyZ18wMjciLCJibmRzXzAxNyQwIiwiYXJnXzAyNSIsImJuZHNfMDE3JDEiLCJhcmdfMDIzIiwiYm5kc18wMTckMiIsImFyZ18wMjEiLCJibmRzXzAxNyQzIiwiYXJnXzAxOSIsImJuZHNfMDE3JDQiLCJzZXhwX29mX3RfdW5pdCIsInhfMDMwIiwiZmlyZWQkMSIsImludmFyaWFudF9oIiwieF8wMzEiLCJzY2hlZHVsZWRfYXRfZnVuIiwiYV8wMzIiLCJiXzAzMyIsIm51bV9maXJlc190b19za2lwX2Z1biIsImZpcmVkX2Z1biIsIm9mX2FfMDM0Iiwib2ZfaF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsImFyZzBfMDQwIiwicmVzMF8wNDEiLCJvZl9hXzA0NCIsIm9mX2hfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsImFyZzBfMDQ4IiwicmVzMF8wNDkiLCJ4XzA1MiIsImEkMCIsIm9mX2FfMDUzIiwib2ZfaF8wNTQiLCJhcmcwXzA1NSIsInJlczBfMDU2IiwiYXJnMF8wNTciLCJyZXMwXzA1OCIsImFyZzFfMDYyIiwiYXJnMF8wNjEiLCJyZXMwXzA2MyIsInJlczFfMDY0IiwiaXNfaW5fdGltaW5nX3doZWVsIiwiYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlIiwicnVuX2F0JDAiLCJydW5fYWZ0ZXIkMCIsImF0X3RpbWVzIiwibmV4dF90aW1lIiwiYXRfdmFyeWluZ19pbnRlcnZhbHMiLCJjb21wdXRlX3NwYW4iLCJzdGFydCQwIiwicnVuX3JlcGVhdGVkbHkiLCJjb250aW51ZV9vbl9lcnJvciIsInN0b3AkMCIsInN0b3AkMSIsImNvbnRpbnVlX3RyeV93aXRoIiwiY29udGludWVfZiIsImJhc2UiLCJvcl9lcnJvciIsImV2ZXJ5IiwiZXZlcnkkMCIsInN0YXJ0JDEiLCJydW5fYXRfaW50ZXJ2YWxzJDAiLCJ3aXRoX3RpbWVvdXQiLCJ0aW1lb3V0Iiwib2Zfc3luY2hyb25vdXMiLCJ0b19zeW5jaHJvbm91cyIsImFkdmFuY2VfZGlyZWN0bHlfaWZfcXVpZXNjZW50IiwiaXNfcXVlc2NlbnQiLCJ3aGVlbCIsIm5leHRfYWxhcm0iLCJoYXNfdXBjb21pbmdfZXZlbnQiLCJuZXh0X3VwY29taW5nX2V2ZW50IiwibmV4dF91cGNvbWluZ19ldmVudF9leG4iLCJldmVudF9wcmVjaXNpb24iLCJhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayIsImhhbmRsZSIsImFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayIsInJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayIsImFyciIsImciLCJpZHgiLCJhcnIkMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCIsIm1hcF9jeWNsZV90aW1lcyIsImxvbmdfY3ljbGVzIiwiYXRfbGVhc3QiLCJjeWNsZV9udW1fam9icyIsImludCQwIiwidGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qIiwiY3JlYXRlX2FsYXJtIiwiYWRkX2ZpbmFsaXplciIsImhlYXBfYmxvY2siLCJmaW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCIsInJ1bl9jeWNsZSIsIm51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSIsImN5Y2xlX3RpbWUiLCJyZXMxXzAwNCIsInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haSIsIm1ha2VfYXN5bmNfdW51c2FibGUiLCJyZXNldF9pbl9mb3JrZWRfcHJvY2VzcyIsIm1heV9yZXR1cm5faW1tZWRpYXRlbHkiLCJ5aWVsZF9ldmVyeSIsImNvdW50X3VudGlsX3lpZWxkIiwidGhpc19jeWNsZV90aW1lIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyIsInlpZWxkX3RoZW5fcnVuIiwid29ya2VyIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQwIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQxIiwiYnQiLCJlbnF1ZXVlJDAiLCJxdWV1ZSIsInJ1bm5pbmciLCJleGVjX2N0eCIsInNlbWFwaG9yZSIsImFwcGx5IiwidF9mIiwiZGYiLCJkdiIsIm1heF9jb25jdXJyZW50X2pvYnMiLCJ3YWl0ZXIiLCJhYm9ydGVkIiwicGFyZW50X21vbml0b3IiLCJlcnIiLCJvZl90aHVuayIsInRodW5rIiwic3ltYm9sJDEiLCJkMSIsImQyIiwib2ZfYV8wMDIiLCJyZXMwXzAwNCIsImxlbmd0aF8wMDYiLCJibmRzXzAwNSIsImxpc3QiLCJjcmVhdGVfY291bnRlciIsInB1c2giLCJwb3BfZXhuIiwic2V4cF9vZl9vdXRjb21lIiwidl8wMDIiLCJ2XzAwMyIsImNsZWFuZWQiLCJudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIiwic2V0X251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQiLCJjYXBhY2l0eV9hdmFpbGFibGUiLCJzZXRfY2FwYWNpdHlfYXZhaWxhYmxlIiwibnVtX2pvYnNfcnVubmluZyIsInNldF9udW1fam9ic19ydW5uaW5nIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIiwiY2xlYW5lZCQwIiwibnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCQwIiwiY2FwYWNpdHlfYXZhaWxhYmxlJDAiLCJudW1fam9ic19ydW5uaW5nJDAiLCJqb2JzX3dhaXRpbmdfdG9fc3RhcnQkMCIsImpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSQwIiwibWF4X2NvbmN1cnJlbnRfam9icyQwIiwib2ZfYV8wMTEiLCJqb2JzX3dhaXRpbmdfdG9fc3RhcnRfMDE5Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlXzAxNyIsIm1heF9jb25jdXJyZW50X2pvYnNfMDE1IiwiY29udGludWVfb25fZXJyb3JfMDEzIiwibnVtX2pvYnNfcnVubmluZ18wMjEiLCJjYXBhY2l0eV9hdmFpbGFibGVfMDIzIiwiaXNfZGVhZF8wMjUiLCJjbGVhbnNfMDI3IiwibnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF8wMjkiLCJjbGVhbmVkXzAzMSIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJhcmdfMDI2IiwiYm5kc18wMTIkMiIsImFyZ18wMjQiLCJibmRzXzAxMiQzIiwiYm5kc18wMTIkNCIsIm91dGNvbWVfMDA5Iiwic3RhcnRfMDA2Iiwidl8wMDgiLCJibmRzXzAwNSQwIiwiYm5kc18wMTIkNSIsImJuZHNfMDEyJDYiLCJibmRzXzAxMiQ3IiwiYm5kc18wMTIkOCIsInhfMDMzIiwib2Zfa2luZF8wMzUiLCJ4XzAzNiIsIm51bV9qb2JzX3dhaXRpbmdfdG9fc3RhcnQiLCJjbGVhbl9yZXNvdXJjZSIsImtpbGwiLCJhdF9raWxsIiwiY2xlYW5lZCQxIiwic3RhcnRfam9iIiwiam9iX3Jlc291cmNlIiwiam9iX3Jlc291cmNlcyIsImNyZWF0ZV93aXRoIiwib3V0Y29tZSIsImludGVybmFsX2pvYiIsImhhbmRsZV9lbnF1ZXVlX3Jlc3VsdCIsImVucXVldWVfZXhjbHVzaXZlIiwiZG9uZSIsImZfcGxhY2Vob2xkZXIiLCJzbG90IiwibW9uYWRfc2VxdWVuY2VfaG93IiwiaG93IiwibW9uYWRfc2VxdWVuY2VfaG93MiIsInByaW9yX2pvYnNfZG9uZSIsImFsbF9kdW1teV9qb2JzX3J1bm5pbmciLCJkdW1teV9qb2JzX3J1bm5pbmciLCJjYXBhY2l0eV9hdmFpbGFibGUkMSIsInRocmVhZF9zYWZlX2VucXVldWVfam9iIiwiY3ljbGVfc3RhcnRfbnMiLCJjeWNsZV90aW1lc19ucyIsImN5Y2xlX3RpbWVzIiwiZXZlbnRfcHJlY2lzaW9uX25zIiwiYm9vbCIsImFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rJDAiLCJhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2skMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyQwIiwicmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4JDAiLCJ3aXRoX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJ3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSQwIiwiY29tcGFyZSIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsInJpZ2h0XzAwNCIsImxlZnRfMDAzIiwidl8wMDYiLCJmb2xkaSIsInNlcW1hcGkiLCJpdGVyaSIsIm1hcGkiLCJmaWx0ZXJpIiwiYm9vbHMiLCJmaWx0ZXJfbWFwaSIsImNvbmNhdF9tYXBpIiwiZmluZF9tYXBpIiwiYXV4IiwiZmluZGkiLCJlbHQiLCJleGlzdHNpIiwiZm9yX2FsbGkiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyIiwiY29uY2F0X21hcCIsImZpbmRfbWFwIiwiam9iX2NvdW50IiwiZ2VuX2NvbXB1dGF0aW9uIiwieXMiLCJ0bCIsImhkIiwiY2hhbmdlIiwib3B0IiwidXBkYXRlIiwiaXRlcl9rZXlzIiwiYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIiLCJhbGlzdCIsImZvbGRfcmlnaHQiLCJhbGlzdF9pbl9kZWNyZWFzaW5nX2tleV9vcmRlciIsImNvbXB1dGF0aW9uIiwiam9iX21hcCIsInNlcXVlbmNlIiwiZmlsdGVyX2tleXMiLCJtZXJnZSIsInJlcmFpc2UiLCJnZW5lcmFsIiwiaGFzaGFibGUiLCJnZW5lcmFsJDAiLCJyZWN1cnNpdmUiLCJmX29uZXN0ZXAiLCJtZW1vaXplZCIsImNvbWJpbmUiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJtYXBfZXJyb3IiLCJpZ25vcmVfbSIsImpvaW4iLCJzeW1ib2xfYmluZCIsImUxIiwiZTIiLCJzeW1ib2xfYmluZCQwIiwic3ltYm9sX21hcCQwIiwib2tfZXhuIiwib2ZfZXhuIiwib2ZfZXhuX3Jlc3VsdCIsIm1zZyIsInNleHBfb2YiLCJlcnJvcl9zIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidGFnIiwidGFnX3MiLCJ0YWdfc19sYXp5IiwidGFnX2FyZyIsInVuaW1wbGVtZW50ZWQiLCJjb21iaW5lX2Vycm9ycyIsImNvbWJpbmVfZXJyb3JzX3VuaXQiLCJmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIiwiZmluZF9tYXBfb2siLCJjdXJyZW50X2Vycm9yIiwiZXJyb3JzJDAiLCJva191bml0IiwidHJ5X3dpdGgkMCIsInRyeV93aXRoX2pvaW4iLCJzdGF0ZSQwIiwiZm9sZF9tYXBpIiwibWFwaV9mIiwiZm9sZF9mIiwidGhyb3R0bGUiLCJjIiwiYyQxIiwiYyQwIiwiaSQwIiwiYWNjdW0iLCJtYXliZV92Iiwic2hvd19kZWJ1Z19tZXNzYWdlcyIsImNoZWNrX2ludmFyaWFudCIsInhfMDA0IiwidmFsdWVzX3JlYWQiLCJzZXRfdmFsdWVzX3JlYWQiLCJ2YWx1ZXNfcmVhZCQwIiwicGlwZV9pZF8wMDkiLCJ2YWx1ZXNfcmVhZF8wMTEiLCJibmRzXzAwOCIsInZfMDEzIiwiYm5kc18wMDgkMCIsImJuZHNfMDA4JDEiLCJ2YWx1ZXNfc2VudF9kb3duc3RyZWFtIiwidmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1Iiwid2hlbl9zZW50X2Rvd25zdHJlYW0iLCJjb25zdW1lciIsIndhbnRzIiwiY29uc3VtZXIkMCIsIndhbnRzJDAiLCJvZl9hXzAyOSIsImNvbnN1bWVyXzAzMyIsIndhbnRzXzAzMSIsImJuZHNfMDMwIiwiYXJnMF8wMTgiLCJyZXMwXzAxOSIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJ2XzAyMCIsImFyZzFfMDI1IiwiYXJnMF8wMjQiLCJyZXMwXzAyNiIsInJlczFfMDI3Iiwidl8wMjMiLCJibmRzXzAzMCQwIiwiZmlsbF93aXRoX2VvZiIsImkkMSIsImZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQiLCJyZWFkeV8wMzkiLCJmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkXzAzNyIsImJuZHNfMDM2IiwiYm5kc18wMzYkMCIsImNvbnN1bWVycyIsInNldF9jb25zdW1lcnMiLCJibG9ja2VkX3JlYWRzIiwiYmxvY2tlZF9mbHVzaGVzIiwicHVzaGJhY2siLCJzZXRfcHVzaGJhY2siLCJyZXNlcnZlZF9zcGFjZSIsInNldF9yZXNlcnZlZF9zcGFjZSIsInNpemVfYnVkZ2V0Iiwic2V0X3NpemVfYnVkZ2V0IiwiY29uc3VtZXJzJDAiLCJibG9ja2VkX3JlYWRzJDAiLCJibG9ja2VkX2ZsdXNoZXMkMCIsInB1c2hiYWNrJDAiLCJyZXNlcnZlZF9zcGFjZSQwIiwic2l6ZV9idWRnZXQkMCIsInNleHBfb2ZfcGlwZSIsIm9mX2FfMDQxIiwib2ZfcGhhbnRvbV8wNDIiLCJpZF8wNDQiLCJpbmZvXzA0NiIsImJ1ZmZlcl8wNTAiLCJzaXplX2J1ZGdldF8wNTIiLCJyZXNlcnZlZF9zcGFjZV8wNTQiLCJwdXNoYmFja18wNTYiLCJudW1fdmFsdWVzX3JlYWRfMDU4IiwicmVhZF9jbG9zZWRfMDY2IiwiY2xvc2VkXzA2NCIsImJsb2NrZWRfcmVhZHNfMDYyIiwiYmxvY2tlZF9mbHVzaGVzXzA2MCIsImNvbnN1bWVyc18wNjgiLCJ1cHN0cmVhbV9mbHVzaGVkc18wNzAiLCJhcmdfMDcxIiwiYm5kc18wNDMiLCJhcmdfMDY5IiwiYm5kc18wNDMkMCIsImFyZ18wNjciLCJibmRzXzA0MyQxIiwiYXJnXzA2NSIsImJuZHNfMDQzJDIiLCJhcmdfMDYzIiwiYm5kc18wNDMkMyIsImFyZ18wNjEiLCJibmRzXzA0MyQ0IiwiYXJnXzA1OSIsImJuZHNfMDQzJDUiLCJhcmdfMDU3IiwiYm5kc18wNDMkNiIsImFyZ18wNTUiLCJibmRzXzA0MyQ3IiwiYXJnXzA1MyIsImJuZHNfMDQzJDgiLCJhcmdfMDUxIiwiYm5kc18wNDMkOSIsInZfMDQ3IiwiYXJnXzA0OSIsImJuZF8wNDgiLCJibmRzXzA0MyQxMCIsImFyZ18wNDUiLCJibmRzXzA0MyQxMSIsImVmZmVjdGl2ZV9zaXplX2J1ZGdldCIsImhhc2giLCJpc19yZWFkX2Nsb3NlZCIsInB1c2hiYWNrJDEiLCJ1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIiwiZGVsdGEiLCJ4XzA3NSIsInhfMDM1IiwiaSQyIiwic2V4cF9vZl9waGFudG9tIiwib2ZfYV8wNzYiLCJ4XzA3NyIsInNleHBfb2ZfcGhhbnRvbSQwIiwib2ZfYV8wNzgiLCJ4XzA3OSIsImlkX3JlZiIsImluaXRpYWxfYnVmZmVyIiwidmFsaWRhdGVfc2l6ZV9idWRnZXQiLCJ1cGRhdGVfcHVzaGJhY2siLCJ4XzA4MCIsImNsb3NlX3JlYWQiLCJ4XzA4MSIsImZsdXNoIiwiY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjIiwidyIsImNyZWF0ZV9yZWFkZXIiLCJjbG9zZV9vbl9leGNlcHRpb24iLCJjcmVhdGVfd3JpdGVyIiwidmFsdWVzX3dlcmVfcmVhZCIsImZsdXNoJDAiLCJmbHVzaF9yZXN1bHQiLCJjb25zdW1lX29uZSIsImNvbnN1bWUiLCJtYXhfcXVldWVfbGVuZ3RoIiwicmVzdWx0JDAiLCJzZXRfc2l6ZV9idWRnZXQkMCIsInJlc2VydmVfc3BhY2UiLCJkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSIsInN0YXJ0X3dyaXRlIiwieF8wODMiLCJzaXplIiwieF8wODIiLCJmaW5pc2hfd3JpdGUiLCJibG9ja2VkX3JlYWQiLCJpdmFyJDEiLCJ0cmFuc2Zlcl9pbl93aXRob3V0X3B1c2hiYWNrIiwidHJhbnNmZXJfaW4iLCJ3cml0ZSIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2siLCJ3cml0ZSQwIiwid3JpdGVfd2hlbl9yZWFkeSIsIndyaXRlX2lmX29wZW4iLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrX2lmX29wZW4iLCJlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyIsInhfMDg1Iiwic3RhcnRfcmVhZCIsImxhYmVsIiwieF8wODYiLCJnZW5fcmVhZF9ub3ciLCJnZXRfbWF4X3F1ZXVlX2xlbmd0aCIsIm1heF9xdWV1ZV9sZW5ndGgkMCIsInJlYWRfbm93IiwicmVhZF9ub3ckMCIsInJlYWQkMCIsInJlYWRfZXhuIiwidmFsdWVzX2F2YWlsYWJsZSIsInJlYWRfY2hvaWNlIiwicmVhZF9jaG9pY2Vfc2luZ2xlX2NvbnN1bWVyX2V4IiwicmVhZF9leGFjdGx5IiwibnVtX3ZhbHVlcyIsImFscmVhZHlfcmVhZCIsImRvd25zdHJlYW1fZmx1c2hlZCIsInVwc3RyZWFtX2ZsdXNoZWQiLCJhZGRfY29uc3VtZXIiLCJwaXBlX2lkIiwiY29uc3VtZXIkMSIsInVwc3RyZWFtIiwiZG93bnN0cmVhbSIsInVwc3RyZWFtX2ZsdXNoZWQkMCIsImFyZzBfMDg3IiwicmVzMF8wODgiLCJmb2xkX2dlbiIsImZsdXNoZWQiLCJmb2xkX3dpdGhvdXRfcHVzaGJhY2siLCJ3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciIsIml0ZXJfd2l0aG91dF9wdXNoYmFjayIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IiLCJtYXhfaXRlcmF0aW9uc19wZXJfam9iJDAiLCJtYXhfaXRlcmF0aW9uc19wZXJfam9iJDEiLCJyZW1haW5pbmciLCJyZW1haW5pbmckMCIsImRyYWluIiwiZHJhaW5fYW5kX2NvdW50Iiwic3VtIiwicmVhZF9hbGwiLCJpbnB1dCIsInRvX3N0cmVhbV9kZXByZWNhdGVkIiwib2Zfc3RyZWFtX2RlcHJlY2F0ZWQiLCJ0cmFuc2ZlciIsIm5leHRfZGVmZXJyZWQiLCJjaGVja19jbG9zZWRfbG9vcF9uZXh0IiwidHJhbnNmZXJfZ2VuIiwib3V0cHV0IiwibGluayIsInVubGluayIsImlucHV0X2F2YWlsYWJsZV9vcl9vdXRwdXRfY2xvcyIsIm91dHB1dF9jbG9zZWQiLCJ0cmFuc2ZlciQwIiwidHJhbnNmZXJfaWQiLCJtYXBfZ2VuIiwiY29uY2F0X21hcF9saXN0IiwiZmlsdGVyX21hcCQwIiwiZm9sZGluZ19maWx0ZXJfbWFwIiwiZm9sZGluZ19maWx0ZXJfbWFwJDAiLCJmb2xkaW5nX21hcCIsImFjY3VtJDAiLCJvZl9xdWV1ZV9pbnRlcm5hbCIsIm9mX3F1ZXVlIiwiZW1wdHkiLCJzaW5nbGV0b24iLCJ3cml0ZXIiLCJyZWFkZXIiLCJvZl9zZXF1ZW5jZSIsInNlcXVlbmNlJDEiLCJzZXF1ZW5jZSQwIiwidG9fc2VxdWVuY2UiLCJpbnRlcmxlYXZlX3BpcGUiLCJpbnB1dHMiLCJvdXRwdXRfd3JpdGVyIiwibnVtX3BpcGVzX3JlbWFpbmluZyIsImRlY3JfbnVtX3BpcGVzX3JlbWFpbmluZyIsImhlYXAiLCJoYW5kbGVfcmVhZCIsImVvZl9vcl9vayIsInBvcF9oZWFwX2FuZF9sb29wIiwiaW5pdGlhbF9wdXNoIiwiY29uY2F0X3BpcGUiLCJmb3JrIiwicHVzaGJhY2tfdXNlcyIsIndyaXRlcjAiLCJyZWFkZXIwIiwid3JpdGVyMSIsInJlYWRlcjEiLCJzb21lX3JlYWRlcl93YXNfY2xvc2VkIiwic29tZV9yZWFkZXJfd2FzX2Nsb3NlZCQwIiwic3RpbGxfb3BlbiIsImZpbHRlcl9vcGVuIiwic3RpbGxfb3BlbiQwIiwic2V0X2luZm8iLCJ2YWx1ZV9hdmFpbGFibGUiLCJzZXRfdmFsdWVfYXZhaWxhYmxlIiwidGFrZW4iLCJjdXJyZW50X3ZhbHVlIiwidmFsdWVfYXZhaWxhYmxlJDAiLCJ0YWtlbiQwIiwiY3VycmVudF92YWx1ZSQwIiwidmFsdWVfYXZhaWxhYmxlJDEiLCJ4XzAxMCIsInRha2VuXzAwNiIsImN1cnJlbnRfdmFsdWVfMDA0IiwidmFsdWVfYXZhaWxhYmxlXzAwOCIsImJuZHNfMDAzIiwiYm5kc18wMDMkMCIsImJuZHNfMDAzJDEiLCJ2YWx1ZV9hdmFpbGFibGVfZnVuIiwiYV8wMTEiLCJiXzAxMiIsInRha2VuX2Z1biIsImN1cnJlbnRfdmFsdWVfZnVuIiwicGVla19leG4iLCJ4XzAxMyIsIm9mX2FfMDE0IiwieF8wMTUiLCJvZl9hXzAxNiIsInhfMDE3Iiwid3JpdGVfb25seSIsInRha2Vfbm9uZW1wdHkiLCJ0YWtlX25vd19leG4iLCJ0YWtlX25vdyIsInRha2UiLCJ1cGRhdGVfZXhuIiwidGFrZW4kMSIsInB1dCIsInBpcGVfd2hlbl9yZWFkeSIsInJlc3RfZXhuIiwiY3JlYXRlX29yX2Vycm9yIiwid2FpdF9leG4iLCJmb3JjZSIsImZvcmNlX2V4biIsImJpbmQkMSIsImlzX2ZvcmNlZCIsIndhaXRzXzAwMyIsInNpZ25hbCIsImRlbGV0ZSQwIiwiY2hlY2tfZmllbGQkMCIsIndhaXRfZm9yX3ByZXZpb3VzIiwic3ltYm9sIiwic3ltYm9sJDAiLCJzZXhwX29mX3QiLCJyZXR1cm4kMCIsImJpbmQiLCJ0IiwiZiIsIm1hcCIsInNleHBfb2ZfdCQwIiwiY3JlYXRlIiwiZG9uX3Rfd2FpdF9mb3IiLCJpbnZhcmlhbnQiLCJpc19kZXRlcm1pbmVkIiwibmV2ZXIiLCJwZWVrIiwidW5pdCIsInZhbHVlX2V4biIsInVwb24iLCJib3RoIiwidDEiLCJ0MiIsInJlc3VsdCIsImExIiwiYTIiLCJvayIsImlnbm9yZV9tIiwiYW55IiwidHMiLCJ4IiwiYW55X3VuaXQiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwibG9vcCIsImZvbGRpIiwiaW5pdCIsImkiLCJiIiwieHMiLCJmb2xkIiwiYSIsInNlcW1hcGkiLCJicyIsImFsbCQwIiwiZHMiLCJhbGxfdW5pdCIsImQiLCJpdGVyaSIsImhvdyIsIm1hcGkiLCJmaWx0ZXJpIiwiYm9vbHMiLCJhYyIsImZpbHRlcl9tYXBpIiwiY29uY2F0X21hcGkiLCJmaW5kX21hcGkiLCJ0bCIsImhkIiwic29tZSIsImZpbmRpIiwiZWx0IiwiZmluZCIsImV4aXN0c2kiLCJmb3JfYWxsaSIsIml0ZXIiLCJtYXAkMSIsImZpbHRlciIsImZpbHRlcl9tYXAiLCJjb25jYXRfbWFwIiwiZmluZF9tYXAiLCJleGlzdHMiLCJmb3JfYWxsIiwibiIsImFsbF91bml0JDAiLCJjb21iaW5lIiwiZXJyIiwiZXJyb3IiLCJyIiwiZmFpbCIsImZhaWxmIiwiZm9ybWF0IiwibWFwX2Vycm9yIiwiam9pbiIsInN5bWJvbF9iaW5kIiwiYXBwbHkiLCJlMSIsImUyIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsIm9rX2V4biIsIm9mX2V4biIsImJhY2t0cmFjZSIsImV4biIsIm9mX2V4bl9yZXN1bHQiLCJtc2ciLCJ2Iiwic2V4cF9vZiIsImVycm9yX3MiLCJzZXhwIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidGFnIiwidGFnX3MiLCJ0YWdfc19sYXp5IiwidGFnX2FyZyIsIm1lc3NhZ2UiLCJzZXhwX29mX2EiLCJ1bmltcGxlbWVudGVkIiwiY29tYmluZV9lcnJvcnMiLCJsIiwiY29tYmluZV9lcnJvcnNfdW5pdCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX21hcF9vayIsImVycm9ycyIsImN1cnJlbnRfZXJyb3IiLCJlcnJvcnMkMCIsIm9rX3VuaXQiLCJ0cnlfd2l0aCIsImV4dHJhY3RfZXhuIiwicnVuJDAiLCJyZXN0IiwiaGVyZSIsIm5hbWUiLCJydW4iLCJ0cnlfd2l0aF9qb2luIiwibGlzdCIsImFjYyIsInN0YXRlJDAiLCJ1cG9uJDEiLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwicG9zJDAiLCJwb3MiLCJhbGwiLCJzZXhwX29mX3QiLCJzZXhwX29mX3QkMCIsImNhbGxiYWNrIiwiciIsImNhbGxiYWNrJDAiLCJ2Iiwic2V4cF9vZl90JDEiLCJleHRyYWN0X2V4biIsInN1YnNjcmliZXJzX2luZGV4Iiwic3Vic2NyaWJlZF9mcm9tIiwib25fY2FsbGJhY2tfcmFpc2UiLCJtYXRjaCQxIiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJ2JDAiLCJyZXMiLCJoIiwiY2FsbGJhY2tzIiwic2V0X2NhbGxiYWNrcyIsInN1YnNjcmliZXJzIiwic2V0X3N1YnNjcmliZXJzIiwibnVtX3N1YnNjcmliZXJzIiwic2V0X251bV9zdWJzY3JpYmVycyIsImNhbGxiYWNrX2FyaXR5IiwiY2FsbGJhY2tzJDAiLCJzdWJzY3JpYmVycyQwIiwibnVtX3N1YnNjcmliZXJzJDAiLCJzZXhwX29mX2J1cyIsIm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93ciIsImNyZWF0ZWRfZnJvbSIsIm5hbWUiLCJzdGF0ZSIsIndyaXRlX2V2ZXJfY2FsbGVkIiwiaSIsIm1hdGNoIiwicmVhZF9vbmx5IiwidCIsImludmFyaWFudCIsImludmFyaWFudF9hIiwieF8wMTEiLCJjaGVjayIsImYiLCJjYWxsYmFja3NfZnVuIiwic3Vic2NyaWJlcnNfZnVuIiwic3Vic2NyaWJlciIsInN1YnNjcmliZXIkMCIsInhfMDA1IiwiY2FsbGJhY2tfZnVuIiwibnVtX3N1YnNjcmliZXJzX2Z1biIsImlzX2Nsb3NlZCIsInNleHBfb2ZfdCQyIiwib2ZfY2FsbGJhY2tfMDEyIiwieF8wMTMiLCJpbnZhcmlhbnQkMCIsInNleHBfb2ZfdCQzIiwib2ZfY2FsbGJhY2tfMDE0IiwieF8wMTUiLCJpbnZhcmlhbnQkMSIsInN0YXJ0X3dyaXRlX2ZhaWxpbmciLCJ4XzAxNiIsInhfMDE3IiwiY2FwYWNpdHkiLCJtYXliZV9zaHJpbmtfY2FwYWNpdHkiLCJkZXNpcmVkX2NhcGFjaXR5IiwiY29weV9hbmRfc2hyaW5rIiwiYXJyYXkiLCJuZXdfYXJyYXkiLCJhZGRfc3Vic2NyaWJlciIsImF0X3N1YnNjcmliZXJzX2luZGV4IiwicmVtb3ZlX3N1YnNjcmliZXIiLCJ1bnN1YnNjcmliZV9hc3N1bWluZ192YWxpZF9zdWIiLCJzdWJzY3JpYmVyX2luZGV4IiwibGFzdF9zdWJzY3JpYmVyX2luZGV4IiwibGFzdF9zdWJzY3JpYmVyIiwidW5zdWJzY3JpYmUiLCJ0byIsInVuc3Vic2NyaWJlX2FsbCIsIm9uX2Nsb3NlIiwiZmluaXNoX3dyaXRlIiwiY2xvc2UiLCJjYWxsX29uX2NhbGxiYWNrX3JhaXNlIiwiZXJyb3IiLCJleG4kMCIsImV4biIsImNhbGxiYWNrX3JhaXNlZCIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlIiwidW5zYWZlX2dldF9jYWxsYmFjayIsImEiLCJ3cml0ZSIsImExIiwibGVuIiwibGFzdF92YWx1ZSIsIndyaXRlX2xvY2FsIiwid3JpdGUyIiwiYTIiLCJ3cml0ZTMiLCJhMyIsIndyaXRlNCIsImE0Iiwid3JpdGU1IiwiYXJnMSIsImFyZzIiLCJhcmczIiwiYXJnNCIsImFyZzUiLCJjcmVhdGVfZXhuIiwiY2FuX3N1YnNjcmliZSIsInN1YnNjcmliZV9leG4iLCJ4XzAxOSIsImJ1c19pZCQwIiwiYnVzX2lkIiwiY2FwYWNpdHkkMCIsIm5ld19jYXBhY2l0eSIsImNvcHlfYW5kX2RvdWJsZSIsImFyZzEkMCIsImFyZzEkMSIsImFyZzIkMCIsImFyZzEkMiIsImFyZzIkMSIsImFyZzMkMCIsImFyZzEkMyIsImFyZzIkMiIsImFyZzMkMSIsImFyZzQkMCIsIml0ZXJfZXhuIiwieF8wMjAiLCJzZXhwX29mX3QkNCIsImZvbGRfZXhuIiwiZm9sZF9hcml0eSIsImluaXQiLCJ4XzAzMCIsImE1IiwiYXNzZXJ0X25vX2FsbG9jYXRpb24iLCJidXNfciIsInN0YXJ0aW5nX21pbm9yX3dvcmRzIiwic3RhcnRpbmdfbWFqb3Jfd29yZHMiLCJlbmRpbmdfbWlub3Jfd29yZHMiLCJlbmRpbmdfbWFqb3Jfd29yZHMiLCJnb3QiLCJzZXhwaWZpZXIiLCJjb21wYXJhdG9yIiwiYV8wMzEiLCJiXzAzMiIsImdvdCQwIiwic2V4cGlmaWVyJDAiLCJjb21wYXJhdG9yJDAiLCJhXzAzMyIsImJfMDM0IiwiY3JlYXRlIiwiYXJpdHkiLCJidXMxIiwiYnVzMiIsImJ1czMiLCJidXM0IiwiYnVzNSIsImR1bW15X3NyY19wb3NfdGhhdF9zaG93c191cF9pbiIsInNleHBfb2ZfdCIsInNleHBfb2ZfdCQwIiwib2ZfYWRkcmVzc18wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImFyZzBfMDA2IiwicmVzMF8wMDciLCJsb2dfbGV2ZWwiLCJoYW5kbGVfZXZlbnQiLCJ0IiwiZXZlbnQiLCJlIiwiY29ubiIsIm9uX2V2ZW50IiwiYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0IiwiY3VycmVudF9jb25uZWN0aW9uIiwiY2xvc2VfZmluaXNoZWQkMCIsImlzX2Nsb3NlZCQwIiwiY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0Iiwic2V4cF9vZl90JDEiLCJwYXJhbSIsImNvbm5fMDIzIiwibmV4dF9jb25uZWN0X3Jlc3VsdF8wMjYiLCJkb25fdF9yZWNvbm5lY3RfMDM2IiwiY2xvc2VfZmluaXNoZWRfMDM0IiwiY2xvc2Vfc3RhcnRlZF8wMzIiLCJldmVudF9idXNfMDMwIiwiZXZlbnRfaGFuZGxlcl8wMjgiLCJhcmdfMDQxIiwiYm5kc18wMTYiLCJhcmdfMDM5IiwiYm5kc18wMTYkMCIsImFyZ18wMzciLCJibmRzXzAxNiQxIiwiYXJnXzAzNSIsImJuZHNfMDE2JDIiLCJhcmdfMDMzIiwiYm5kc18wMTYkMyIsImFyZ18wMzEiLCJibmRzXzAxNiQ0Iiwic2VydmVyX25hbWVfMDExIiwiYXJnXzAxNCIsImJuZHNfMDEwIiwiYXJnXzAxMiIsImJuZHNfMDEwJDAiLCJhcmdfMDI5IiwiYm5kc18wMTYkNSIsImFyZ18wMjciLCJibmRzXzAxNiQ2IiwiYXJnXzAyNCIsImJuZHNfMDE2JDciLCJhcmdfMDIyIiwiYm5kc18wMTYkOCIsImFyZ18wMjAiLCJibmRzXzAxNiQ5IiwiYXJnXzAxOCIsImJuZHNfMDE2JDEwIiwiY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25fIiwiY2xvc2VfZmluaXNoZWQkMSIsImlzX2Nsb3NlZCQxIiwiZXZlbnRfYnVzIiwiY2xvc2UkMCIsImNvbm5fb3B0Iiwic2VydmVyX25hbWUiLCJjdXJyZW50X2Nvbm5lY3Rpb24kMCIsImNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCQwIiwieCIsImNvbm5lY3RlZCIsImxvb3AiLCJkIiwiY3JlYXRlIiwib25fZXZlbnQkMCIsInJldHJ5X2RlbGF5JDAiLCJyYW5kb21fc3RhdGUkMSIsInRpbWVfc291cmNlJDAiLCJjb25uZWN0IiwiYWRkcmVzcyIsImdldF9hZGRyZXNzIiwicmFuZG9tX3N0YXRlIiwidGltZV9zb3VyY2UiLCJldmVudF9oYW5kbGVyIiwiZGVmYXVsdF9yZXRyeV9kZWxheSIsIm5vbl9yYW5kb21pemVkX2RlbGF5IiwicmV0cnlfZGVsYXlfc3BhbiIsInJhbmRvbV9zdGF0ZSQwIiwic3BhbiIsInNwYW4kMCIsImRpc3RhbmNlIiwid2FpdCIsInJldHJ5X2RlbGF5IiwicHJldmlvdXNfYWRkcmVzcyIsInByZXZpb3VzX2Vycm9yIiwiYWRkciIsInByZXZpb3VzX2FkZHJlc3MkMCIsInNhbWVfYXNfcHJldmlvdXNfYWRkcmVzcyIsInJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmciLCJjb25uZWN0X3Jlc3VsdCIsImVyciIsInByZXZpb3VzX2VyciIsInRvX3NleHAiLCJzYW1lX2FzX3ByZXZpb3VzX2Vycm9yIiwiYWxsIiwiZXJyb3Jfc291cmNlXzAwNSIsInJldGlyZWRfa3JiX3dvcmQiLCJjb21wYXJlIiwidF9vZl9zZXhwIiwic2V4cF8wMDYiLCJzZXhwX29mX3QiLCJncm91cCIsIm1hZ2ljX3dvcmQiLCJnZW5fbWFnaWNfbnVtYmVyIiwid29yZCIsImFjYyIsImMiLCJtYWdpY19udW1iZXIiLCJ0IiwicCIsImJ5X21hZ2ljX251bWJlciIsImFsbF9tYWdpY19udW1iZXJzX2luY2x1ZGluZ19yZSIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwicG9zIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJpbl9yZWFkX2VsIiwicG9zX3JlZiIsImV4biQwIiwiZXhuIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwiYmluX3QiLCJiaW5fYSIsIm9mX2xpc3RfZXhuIiwibCIsImxlbiIsInRfb2ZfYSIsInNleHAiLCJtYXhfc3VwcG9ydGVkX3ZlcnNpb24iLCJvdXRzaWRlX21heF9zdXBwb3J0ZWRfdmVyc2lvbl8iLCJudW0iLCJjb250ZXh0IiwidmludCIsInhfMDAyIiwieF8wMDMiLCJrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzIiwiY3JlYXRlX2V4biIsInByb3RvY29sIiwic3VwcG9ydGVkX3ZlcnNpb25zIiwiYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIiwicHJvdG9jb2xfbWFnaWNfbnVtYmVyIiwicmF3X3ZlcnNpb25fbGlzdCIsImdldF9wcm90b2NvbCIsInZlcnNpb25zIiwicHJvdG9jb2xzIiwibmVnb3RpYXRlIiwiYWxsb3dfbGVnYWN5X3BlZXIiLCJ1cyIsInBlZXIiLCJ1c192ZXJzaW9ucyIsInVzX3Byb3RvY29sIiwicGVlcl92ZXJzaW9ucyIsInBlZXJfcHJvdG9jb2wiLCJ2ZXJzaW9uIiwieCIsIm1hdGNoZXNfbWFnaWNfcHJlZml4IiwiY29udGFpbnNfbWFnaWNfcHJlZml4IiwiZiIsImFueV9tYWdpY19wcmVmaXgiLCJncm91cCQwIiwiYmluX3NpemVfdCQwIiwiYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRlcl90JDAiLCJhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGUkMCIsImJvdW5kZWRfbGlzdF9iaW5fc2l6ZSIsImJpbl9zaGFwZV90IiwiYmluX3QiLCJiaW5fc2l6ZV90IiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYnVmIiwicG9zX3JlZiIsInZuYXQwIiwib2ZfaW50X2V4biIsIm9mX3dyaXRlciIsIndyaXRlIiwic2l6ZSIsIndyaXRlJDAiLCJwb3MiLCJhIiwibGVuIiwicG9zJDAiLCJzaXplJDAiLCJvZl90eXBlX2NsYXNzIiwiYmluX2EiLCJ0ZXN0IiwicyIsImJpZ3N0cmluZyIsImJpZ3N0cmluZ192ZXJzaW9uIiwid3JpdGVyX3dpdGhfbGVuZ3RoIiwid2l0aF9sZW5ndGhfdmVyc2lvbiIsInBvdyIsIngiLCJkZXNjcmlwdGlvbnMiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZ3JvdXAiLCJ2MiIsInYxIiwidmludCIsInZfbmFtZSIsInZfdmVyc2lvbiIsImVxdWFsIiwiYV8wMDEiLCJiXzAwMiIsImNvbXBhcmUiLCJhXzAwMyIsImJfMDA0IiwibiIsImhhc2hfZm9sZF90IiwiaHN2IiwiYXJnIiwiaHN2JDAiLCJoYXNoIiwidF9vZl9zZXhwIiwieF8wMDciLCJ2ZXJzaW9uIiwibmFtZSIsInNleHBfb2ZfdCIsInZlcnNpb25fMDExIiwibmFtZV8wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsInN1bW1hcml6ZSIsInRzIiwic3VtbWFyeSIsImJpbmQiLCJ0IiwiZiIsImJpbmRfZGVmZXJyZWQiLCJtYXBfZGVmZXJyZWQiLCJsaWZ0X2RlZmVycmVkIiwiZXJyJDAiLCJlcnIiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZ3JvdXAkMCIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2MSQwIiwidjEkMSIsInYxJDIiLCJhcmdzIiwic2l6ZV9hcmdzIiwidjEkMyIsImJpbl93cml0ZV90JDAiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsInBvcyQ1IiwicG9zJDYiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImFyZ18yIiwiYXJnXzEkNCIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJhcmcwXzAwOCIsInJlczBfMDA5Iiwic2V4cF9hcmdzXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJzZXhwX2FyZ3NfMDIyIiwiYXJnMV8wMzMiLCJhcmcwXzAzMiIsInJlczBfMDM0IiwiYXRvbV8wMjQiLCJzZXhwX2FyZ3NfMDI3IiwiYXRvbV8wMjQkMCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJyZXMxXzAzNSIsInNleHBfYXJnc18wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwic2V4cF9hcmdzXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJhcmcwXzA0MyIsInJlczBfMDQ0IiwiYXJnMF8wNDUiLCJyZXMwXzA0NiIsImFyZzFfMDQ5IiwiYXJnMF8wNDgiLCJyZXMwXzA1MCIsInZfMDQ3IiwicmVzMV8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYV8wNTQiLCJiXzA1NSIsImFfMDU2IiwiYl8wNTciLCJhXzA1OCIsImJfMDU5IiwiYV8wNjAiLCJiXzA2MSIsImFfMDY0IiwiYV8wNjIiLCJiXzA2NSIsImJfMDYzIiwicmlnaHRfMDY3IiwibGVmdF8wNjYiLCJhXzA2OCIsImJfMDY5IiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QkMSIsIndyaXRlX2EiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl93cml0ZXJfYSIsImJpbl9yZWFkX3QkMyIsIm9mX2EiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCQxIiwic2V4cF9vZl90JDEiLCJvZl9hXzA3MCIsInhfMDcxIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgiLCJ2NCIsInYzIiwic2l6ZSQxIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDAiLCJ2X3RhZyIsInZfaWQiLCJ2X2RhdGEiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCIsImJpbl9uZWVkc19sZW5ndGgiLCJzZXhwX29mX25lZWRzX2xlbmd0aCIsIm9mX2FfMDcyIiwiZGF0YV8wODAiLCJpZF8wNzgiLCJ2ZXJzaW9uXzA3NiIsInRhZ18wNzQiLCJhcmdfMDgxIiwiYm5kc18wNzMiLCJhcmdfMDc5IiwiYm5kc18wNzMkMCIsImFyZ18wNzciLCJibmRzXzA3MyQxIiwiYXJnXzA3NSIsImJuZHNfMDczJDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMCIsInY1Iiwic2l6ZSQyIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQwIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQxIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDIiLCJ2X21ldGFkYXRhIiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9uZWVkc19sZW5ndGgkMCIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDAiLCJvZl9hXzA4MiIsImRhdGFfMDkyIiwibWV0YWRhdGFfMDkwIiwiaWRfMDg4IiwidmVyc2lvbl8wODYiLCJ0YWdfMDg0IiwiYXJnXzA5MyIsImJuZHNfMDgzIiwiYXJnXzA5MSIsImJuZHNfMDgzJDAiLCJhcmdfMDg5IiwiYm5kc18wODMkMSIsImFyZ18wODciLCJibmRzXzA4MyQyIiwiYXJnXzA4NSIsImJuZHNfMDgzJDMiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsInRvX3YxIiwiZGF0YSIsImlkIiwidGFnIiwib2ZfdjEiLCJtZXRhZGF0YSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMSIsImJpbl9uZWVkc19sZW5ndGgkMSIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDEiLCJvZl9hXzA5NCIsImRhdGFfMDk4IiwiaWRfMDk2IiwiYXJnXzA5OSIsImJuZHNfMDk1IiwiYXJnXzA5NyIsImJuZHNfMDk1JDAiLCJiaW5fcmVhZF90JDkiLCJiaW5fcmVhZF90JDEwIiwiYmluX3JlYWRlcl90JDQiLCJncm91cCQ1IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQyIiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDUiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkNiIsImJpbl9yZWFkZXJfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fbmVlZHNfbGVuZ3RoJDIiLCJiaW5fcmVhZF90JDExIiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkZXJfdCQ1IiwiYmluX3JlYWRfbmF0MF90IiwiYmluX3JlYWRfbmF0MF90JDAiLCJiaW5fcmVhZGVyX25hdDBfdCIsImJpbl9zaXplX25hdDBfdCIsImJpbl93cml0ZV9uYXQwX3QiLCJiaW5fd3JpdGVyX25hdDBfdCIsImdyb3VwJDYiLCJiaW5fc2hhcGVfdCQyIiwicmVzcG9uc2UiLCJlcnJvciIsImJpbl9zaXplX3QkMiIsInNpemVfb2ZfcmVzcG9uc2UiLCJzaXplX29mX2Vycm9yIiwiYmluX3dyaXRlX3QkMiIsIndyaXRlX3Jlc3BvbnNlIiwid3JpdGVfZXJyb3IiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl93cml0ZXJfcmVzcG9uc2UiLCJiaW5fd3JpdGVyX2Vycm9yIiwiYmluX3JlYWRfdCQxMyIsIm9mX3Jlc3BvbnNlIiwib2ZfZXJyb3IiLCJiaW5fcmVhZF90JDE0Iiwidl91bnVzZWRfcXVlcnlfaWQiLCJ2X2luaXRpYWwiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl9yZWFkZXJfcmVzcG9uc2UiLCJiaW5fcmVhZGVyX2Vycm9yIiwiYmluX3QkMiIsImJpbl9yZXNwb25zZSIsImJpbl9lcnJvciIsInNleHBfb2ZfdCQyIiwib2ZfcmVzcG9uc2VfMTAwIiwib2ZfZXJyb3JfMTAxIiwiaW5pdGlhbF8xMDUiLCJ1bnVzZWRfcXVlcnlfaWRfMTAzIiwiYXJnXzEwNiIsImJuZHNfMTAyIiwiYXJnXzEwNCIsImJuZHNfMTAyJDAiLCJncm91cCQ3IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQzIiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQzIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDciLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkOCIsImJpbl9yZWFkZXJfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fbmVlZHNfbGVuZ3RoJDMiLCJiaW5fcmVhZF90JDE1IiwiYmluX3JlYWRfdCQxNiIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3JlYWRfbmF0MF90JDEiLCJiaW5fcmVhZF9uYXQwX3QkMiIsImJpbl9yZWFkZXJfbmF0MF90JDAiLCJiaW5fc2l6ZV9uYXQwX3QkMCIsImJpbl93cml0ZV9uYXQwX3QkMCIsImJpbl93cml0ZXJfbmF0MF90JDAiLCJncm91cCQ4IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQ0IiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDQiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDQiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDkiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMTAiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQ0IiwiYmluX25lZWRzX2xlbmd0aCQ0Iiwic2V4cF9vZl9uZWVkc19sZW5ndGgkMiIsIm9mX2FfMTA3IiwiYXJnMF8xMDgiLCJyZXMwXzEwOSIsImFyZzBfMTEwIiwicmVzMF8xMTEiLCJhcmcwXzExMiIsInJlczBfMTEzIiwiYmluX3JlYWRfdCQxNyIsImJpbl9yZWFkX3QkMTgiLCJiaW5fcmVhZGVyX3QkOCIsImJpbl9yZWFkX25hdDBfdCQzIiwiYmluX3JlYWRfbmF0MF90JDQiLCJiaW5fcmVhZGVyX25hdDBfdCQxIiwiYmluX3NpemVfbmF0MF90JDEiLCJiaW5fd3JpdGVfbmF0MF90JDEiLCJiaW5fd3JpdGVyX25hdDBfdCQxIiwicXVlcnlfaWQiLCJ2MV9xdWVyeSIsInYxX3N0ciIsInYyX3N0ciIsImNhbGxlcl9pZGVudGl0eSIsInYyJDAiLCJ2X3F1ZXJ5Iiwidl9yZXNwb25zZSIsInZfbXNnIiwidl9xdWVyeSQwIiwidl9pbml0aWFsX3Jlc3BvbnNlIiwidl91cGRhdGVfcmVzcG9uc2UiLCJ2X2Vycm9yIiwidF9vZl9zZXhwJDAiLCJzZXhwc18wMTAiLCJ1cGRhdGVfcmVzcG9uc2UiLCJpbml0aWFsX3Jlc3BvbnNlIiwicXVlcnkiLCJzZXhwc18wMDYiLCJzZXhwc18wMDgiLCJtc2ciLCJyZXNwb25zZV8wMTQiLCJxdWVyeV8wMTIiLCJhcmdfMDE1IiwiYm5kc18wMTEiLCJhcmdfMDEzIiwiYm5kc18wMTEkMCIsIm1zZ18wMTciLCJhcmdfMDE4IiwiYm5kc18wMTYiLCJlcnJvcl8wMjYiLCJ1cGRhdGVfcmVzcG9uc2VfMDI0IiwiaW5pdGlhbF9yZXNwb25zZV8wMjIiLCJxdWVyeV8wMjAiLCJhcmdfMDI3IiwiYm5kc18wMTkiLCJhcmdfMDI1IiwiYm5kc18wMTkkMCIsImFyZ18wMjMiLCJibmRzXzAxOSQxIiwiYXJnXzAyMSIsImJuZHNfMDE5JDIiLCJyZXNwb25zZV8wMzEiLCJxdWVyeV8wMjkiLCJhcmdfMDMyIiwiYm5kc18wMjgiLCJhcmdfMDMwIiwiYm5kc18wMjgkMCIsIm1zZ18wMzQiLCJhcmdfMDM1IiwiYm5kc18wMzMiLCJlcnJvcl8wNDMiLCJ1cGRhdGVfcmVzcG9uc2VfMDQxIiwiaW5pdGlhbF9yZXNwb25zZV8wMzkiLCJxdWVyeV8wMzciLCJhcmdfMDQ0IiwiYm5kc18wMzYiLCJhcmdfMDQyIiwiYm5kc18wMzYkMCIsImFyZ18wNDAiLCJibmRzXzAzNiQxIiwiYXJnXzAzOCIsImJuZHNfMDM2JDIiLCJzZXhwX29mX21lc3NhZ2VfdG9vX2JpZyIsIm1heF9tZXNzYWdlX3NpemVfMDA0Iiwic2l6ZV8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsIm9mX2FfMDA2IiwiYXJnMF8wMDciLCJyZXMwXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJ1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIiwidW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCIsInBheWxvYWRfbGVuIiwicGFjayIsIm0iLCJNIiwiY2xvc2UiLCJpc19jbG9zZWQiLCJieXRlc19yZWFkIiwicmVhZF9mb3JldmVyIiwib25fbWVzc2FnZSIsIm9uX2VuZF9vZl9iYXRjaCIsInJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3QiLCJiaW5fcmVhZGVyIiwicGFjayQwIiwiY2xvc2UkMCIsImlzX2Nsb3NlZCQwIiwibW9uaXRvciIsImJ5dGVzX3RvX3dyaXRlIiwiYnl0ZXNfd3JpdHRlbiIsImZsdXNoZWQiLCJyZWFkeV90b193cml0ZSIsInNlbmRfYmluX3Byb3QiLCJiaW5fd3JpdGVyIiwic2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIiwic2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vIiwic3RvcHBlZCIsImNhbl9zZW5kIiwidHJhbnNmZXIiLCJwaXBlIiwibWF4X251bV92YWx1ZXNfcGVyX3JlYWQiLCJjb25zdW1lciIsImVuZF9vZl9waXBlIiwiaXZhciIsIml0ZXIiLCJxIiwid3JpdGVyXzAwNiIsInJlYWRlcl8wMDQiLCJhcmdfMDA3IiwiYm5kc18wMDMiLCJibmRzXzAwMyQwIiwiY2xvc2UkMSIsImNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuXyIsImNhbGxiYWNrXzAwMiIsImNsb3NlX2Nvbm5lY3Rpb24iLCJjb250aW51ZSQwIiwiaGFuZGxlX2V4biIsImNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciIsImV4biIsImNhbGxiYWNrIiwid3JpdGVyXzAwNCIsInF1ZXJ5X2lkXzAwMiIsInJlc3BvbmRlZF8wMDYiLCJibmRzXzAwMSQxIiwiY3JlYXRlIiwid3JpdGVyIiwibGlmdCIsImltcGwiLCJiaW5fbXNnIiwiaW1wbCQwIiwic3RhdGUiLCJzdHIiLCJhdXRob3JpemVkX3N0YXRlIiwiaW1wbCQxIiwiaW1wbCQyIiwiYmluX3F1ZXJ5IiwiaW1wbCQzIiwiaW1wbCQ0IiwiaW1wbCQ1IiwiaW1wbCQ2IiwicmVzcCIsImltcGwkNyIsImltcGwkOCIsImJpbl91cGRhdGVfd3JpdGVyIiwiYmluX2luaXRfd3JpdGVyIiwiYmluX3F1ZXJ5X3JlYWRlciIsImltcGwkOSIsImltcGwkMTAiLCJpbXBsJDExIiwidyIsIm9mX2Nvbm5lY3Rpb25fc3RhdGVfMDE0Iiwib25fZXhjZXB0aW9uXzAyNCIsInNoYXBlc18wMjIiLCJmXzAyMCIsInZlcnNpb25fMDE4IiwidGFnXzAxNiIsImJuZHNfMDE1IiwiYm5kc18wMTUkMCIsImJuZHNfMDE1JDEiLCJhcmdfMDE5IiwiYm5kc18wMTUkMiIsImFyZ18wMTciLCJibmRzXzAxNSQzIiwiZGVzY3JpcHRpb24iLCJzaGFwZXMiLCJsaWZ0JDAiLCJiIiwid2l0aF9hdXRob3JpemF0aW9uIiwibGlmdF9kZWZlcnJlZCQwIiwidXBkYXRlX29uX2V4Y2VwdGlvbiIsInJhaXNlIiwiY29ubmVjdGlvbl9kZXNjcmlwdGlvbiIsImdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiIsInRvX2Vycm9yIiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIiwicnBjX3ZlcnNpb24iLCJycGNfbmFtZSIsInJwY19lcnJvciIsImNsb3NlX3JlYXNvbiIsImxvY2FsX3N0b3JhZ2Vfa2V5IiwiZ2V0Iiwid2l0aF9tZXRhZGF0YSIsInNleHBfb2ZfbG9jYXRlZF9lcnJvciIsImV4bl8wMDQiLCJsb2NhdGlvbl8wMDIiLCJ1bmNhdWdodF9leG4iLCJsb2NhdGlvbiIsImJpbl9pb19leG4iLCJ0cnlfd2l0aCIsIm9uX2JhY2tncm91bmRfZXhjZXB0aW9uIiwicnVuIiwicmVzdCIsImpvaW4iLCJ4JDAiLCJvcl9lcnJvciIsInJwY19kZXNjcmlwdGlvbiIsImJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nIiwiYWRkX2xlbiIsImluaXRfcG9zIiwiYWRkX2xlbiQwIiwiYWRkX2xlbiQxIiwiZSQwIiwiZSIsInN5bWJvbCIsInNleHBfb2Zfc3RyZWFtaW5nX3Jlc3BvbnNlIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJ4XzAzMyIsIm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc18wMTMiLCJ3cml0ZXJfMDExIiwiaW1wbGVtZW50YXRpb25zXzAwOSIsInN0b3BwZWRfMDE1IiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXzAyMSIsImNvbm5lY3Rpb25fZGVzY3JpcHRpb25fMDE5IiwibGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIiwicGFja2VkX3NlbGZfMDI5IiwiYXJnXzAyNCIsImFyZzFfMDI2IiwiYXJnMF8wMjUiLCJyZXMwXzAyNyIsInJlczFfMDI4IiwiYXJnXzAyMiIsImJuZHNfMDA4JDEiLCJhcmdfMDIwIiwiYm5kc18wMDgkMiIsImJuZHNfMDA4JDMiLCJhcmdfMDE2IiwiYm5kc18wMDgkNCIsImFyZ18wMTQiLCJibmRzXzAwOCQ1IiwiYm5kc18wMDgkNiIsImJuZHNfMDA4JDciLCJoYW5kbGVfc2VuZF9yZXN1bHQiLCJyZXN1bHQiLCJzZXhwIiwieF8wMzQiLCJ3cml0ZV9tZXNzYWdlIiwiYmluX3dyaXRlcl9kYXRhIiwiYmluX3dyaXRlX3ZvaWQiLCJidWZmZXIiLCJzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXMiLCJiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCIsInN0cl9sZW4iLCJuZXh0IiwiYmluX3NpemVfbmF0MF9oZWFkZXIiLCJoZWFkZXJfcHJlZml4IiwiZGF0YV9sZW4iLCJzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiIsInN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbiIsImJpbl93cml0ZV9uYXQwX2hlYWRlciIsImJpbl93cml0ZXJfbmF0MF9oZWFkZXIiLCJiaW5fc2l6ZV9tZXNzYWdlIiwiYmluX3dyaXRlX21lc3NhZ2UiLCJiaW5fd3JpdGVyX21lc3NhZ2UiLCJiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZyIsImJpbl93cml0ZV9tZXNzYWdlX2FzX3N0cmluZyIsImJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmciLCJwcmVwX3dyaXRlIiwiY2xvc2VkIiwiaW5zdGFuY2UiLCJ3cml0ZV9lb2YiLCJ3cml0ZV9tZXNzYWdlJDAiLCJjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW4iLCJncm91cHMiLCJlbGVtZW50X2luX2dyb3VwIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2skMCIsInQkMCIsIm1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvbiIsIm9uX2V4Y2VwdGlvbiIsImF1dGhvcml6YXRpb25fZmFpbHVyZV9yZXN1bHQiLCJycGNfa2luZCIsImFwcGx5X2ltcGxlbWVudGF0aW9uIiwiaW1wbGVtZW50YXRpb24iLCJyZWFkX2J1ZmZlciIsInJlYWRfYnVmZmVyX3Bvc19yZWYiLCJmJDMiLCJiaW5fcXVlcnlfcmVhZGVyJDAiLCJxdWVyeV9jb250ZW50cyIsImV4biQwIiwiZiQ0IiwibGVuJDAiLCJyZXN1bHRfbW9kZSIsImYkNSIsImJpbl9yZXNwb25zZV93cml0ZXIiLCJiaW5fcXVlcnlfcmVhZGVyJDEiLCJxdWVyeV9jb250ZW50cyQwIiwib3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsIiwiZGF0YSQwIiwiZGF0YSQxIiwiZXhuJDEiLCJiYWNrdHJhY2UiLCJyZXN1bHRfbW9kZSQwIiwiZiQ2IiwicmVzcG9uZGVyIiwiZCIsImNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IiwicmVzdWx0JDAiLCJjaGVja19yZXNwb25kZWQiLCJkJDAiLCJyIiwic3RyZWFtaW5nX3JwYyIsInN0cmVhbV9xdWVyeSIsImxlbiQxIiwic3RyZWFtX3dyaXRlciIsImltcGxfd2l0aF9zdGF0ZSIsImYkMiIsIndyaXRlciQwIiwicnVuX2ltcGwiLCJzcGxpdF9vayIsImhhbmRsZV9vayIsImVycm9yJDAiLCJvayIsImluaXRpYWwiLCJmJDAiLCJwaXBlX3IiLCJmJDEiLCJmbHVzaCIsInByb2R1Y2Vyc19mbHVzaGVkIiwiYWNjIiwic3RvcCIsImhhbmRsZV9xdWVyeSIsIm9uX3Vua25vd25fcnBjIiwiaW1wbGVtZW50YXRpb25zIiwibGFzdF9kZXNjIiwiaW1wbGVtZW50YXRpb24kMCIsImltcGxlbWVudGF0aW9uJDEiLCJvbl9leGNlcHRpb24kMCIsImltcGxlbWVudGF0aW9uJDIiLCJpX3MiLCJkdXBzIiwiaSIsImluc3RhbnRpYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsInVucGFja2VkIiwiY3JlYXRlX2V4biIsIm51bGwkMCIsImFkZF9leG4iLCJkZXNjIiwiYWRkIiwiaW1wbGVtZW50YXRpb25zJDAiLCJvbl91bmtub3duX3JwYyQwIiwiY2FsbCIsImV4cGVydCIsImNhbm5vdF9zZW5kIiwieF8wMzkiLCJtYXJrX3Jlc3BvbmRlZCIsInNjaGVkdWxlIiwiaGVhZGVyIiwiaGFuZGxlX3NlbmRfcmVzdWx0JDAiLCJ3cml0ZV9iaWdzdHJpbmciLCJ3cml0ZV9iaW5fcHJvdCIsImVycm9yX3NvdXJjZV8wMzgiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInN1cHBvcnRlZF92ZXJzaW9ucyIsImRlZmF1bHRfaGFuZHNoYWtlX2hlYWRlciIsInF1ZXJ5X21lc3NhZ2UiLCJzZW5kX2V2ZXJ5IiwidGltZW91dCIsInNlbmRfZXZlcnlfMDQzIiwidGltZW91dF8wNDEiLCJibmRzXzA0MCIsImJuZHNfMDQwJDAiLCJ2X3RpbWVvdXQiLCJ2X3NlbmRfZXZlcnkiLCJjcmVhdGUkMCIsInNleHBfb2ZfdCQzIiwiaGVhcnRiZWF0X2NvbmZpZ18wNTMiLCJkZXNjcmlwdGlvbl8wNTEiLCJoZWFydGJlYXRfY2FsbGJhY2tzXzA1NSIsImxhc3Rfc2Vlbl9hbGl2ZV8wNTciLCJuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb25fMDciLCJoZWFydGJlYXRfZXZlbnRfMDc1IiwidGltZV9zb3VyY2VfMDczIiwiaW1wbGVtZW50YXRpb25zX2luc3RhbmNlXzA3MSIsImNsb3NlX2ZpbmlzaGVkXzA2OSIsImNsb3NlX3N0YXJ0ZWRfMDY3Iiwib3Blbl9xdWVyaWVzXzA2NSIsIndyaXRlcl8wNjMiLCJyZWFkZXJfMDYxIiwibWF4X21ldGFkYXRhX3NpemVfMDU5IiwiYXJnXzA3OCIsImJuZHNfMDUwIiwiYXJnXzA3NiIsImJuZHNfMDUwJDAiLCJhcmdfMDc0IiwiYm5kc18wNTAkMSIsImFyZ18wNzIiLCJibmRzXzA1MCQyIiwiYXJnXzA3MCIsImJuZHNfMDUwJDMiLCJhcmdfMDY4IiwiYm5kc18wNTAkNCIsImFyZ18wNjYiLCJibmRzXzA1MCQ1Iiwid3JpdGVyXzAzNSIsIm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbl8wMyIsImFyZ18wMzYiLCJibmRzXzAzMiIsImFyZ18wMzQiLCJibmRzXzAzMiQwIiwiYXJnXzA2NCIsImJuZHNfMDUwJDYiLCJhcmdfMDYyIiwiYm5kc18wNTAkNyIsImFyZ18wNjAiLCJibmRzXzA1MCQ4IiwiYXJnXzA1OCIsImJuZHNfMDUwJDkiLCJhcmdfMDU2IiwiYm5kc18wNTAkMTAiLCJ0aW1lb3V0XzA0NiIsInNlbmRfZXZlcnlfMDQ4IiwiYXJnXzA0OSIsImJuZHNfMDQ1IiwiYXJnXzA0NyIsImJuZHNfMDQ1JDAiLCJhcmdfMDU0IiwiYm5kc18wNTAkMTEiLCJhcmdfMDUyIiwiYm5kc18wNTAkMTIiLCJzZXhwX29mX3RfaHVtX3dyaXRlciIsInhfMDc5IiwiZGlzcGF0Y2giLCJyZXNwb25zZV9oYW5kbGVyIiwiYmluX3dyaXRlcl9xdWVyeSIsInF1ZXJ5JDAiLCJtZXNzYWdlIiwibWFrZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJkaXNwYXRjaF9iaWdzdHJpbmciLCJzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJvbl9jbG9zZSIsInJlYXNvbiIsImNsb3NlX2ZpbmlzaGVkIiwiYWRkX2hlYXJ0YmVhdF9jYWxsYmFjayIsInJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IiwibGFzdF9zZWVuX2FsaXZlIiwic3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lIiwiZXZlbnQiLCJmbHVzaGVkJDAiLCJmbHVzaGVkJDEiLCJkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0IiwiY2xlYW51cCIsImR1bW15X2J1ZmZlciIsImR1bW15X3JlZiIsImNvbnRhaW5zX21hZ2ljX3ByZWZpeCIsImhhbmRzaGFrZV9oZWFkZXJfb3ZlcnJpZGVfa2V5IiwiY3JlYXRlJDEiLCJoYW5kc2hha2VfdGltZW91dCIsImhlYXJ0YmVhdF9jb25maWciLCJtYXhfbWV0YWRhdGFfc2l6ZSIsInRpbWVfc291cmNlIiwicmVhZGVyIiwid3JpdGVyX21vbml0b3JfZXhucyIsIm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiIsImhlYXJ0YmVhdF9mcm9tX25vd19vbiIsInNpbmNlX2xhc3RfaGVhcnRiZWF0IiwiY3VzdG9tX3ByaW50Zl8wODIiLCJuYXQwX21zZyIsInJlcyIsIndhaXQiLCJyZW1vdmFsX2NpcmN1bXN0YW5jZXMiLCJ3YWl0JDAiLCJxdWVyeSQxIiwiaW5zdGFuY2UkMCIsInBlZXIiLCJ3aXRoX2Nsb3NlIiwidHJhbnNwb3J0IiwiZGlzcGF0Y2hfcXVlcmllcyIsIm9uX2hhbmRzaGFrZV9lcnJvciIsImhhbmRsZV9oYW5kc2hha2VfZXJyb3IiLCJzZXJ2ZXJfd2l0aF9jbG9zZSIsIm9uX2hhbmRzaGFrZV9lcnJvciQwIiwid2l0aF9hc3luY19leGVjdXRpb25fY29udGV4dCIsImNvbnRleHQiLCJlcnJvcl9zb3VyY2VfMDA5IiwiZXJyb3Jfc291cmNlXzAyNCIsInN5bWJvbCQwIiwiZGlzcGF0Y2hfcmF3IiwiY29ubiIsImRpc3BhdGNoX3JhdyQwIiwicmVzcG9uc2VfaXZhciIsInF1ZXJ5X3R5cGVfaWQiLCJyZXNwb25zZV90eXBlX2lkIiwiaW1wbGVtZW50IiwiaW1wbGVtZW50JDAiLCJyZXNwb25zZSQwIiwicnBjX3Jlc3VsdF90b19vcl9lcnJvciIsImRpc3BhdGNoJDAiLCJkaXNwYXRjaF9leG4iLCJtYWtlX2Rpc3BhdGNoIiwiZG9fZGlzcGF0Y2giLCJycGNfdGFnIiwiaGFuZGxlX3Jlc3BvbnNlIiwiaGFuZGxlX2Vycm9yIiwieF8wMDIiLCJkaXNwYXRjaCQxIiwic2NoZWR1bGVfZGlzcGF0Y2giLCJkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIiwiYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiIsImltcGxlbWVudCQxIiwiaW1wbGVtZW50JDIiLCJpbXBsZW1lbnRfZm9yX3RhZ19hbmRfdmVyc2lvbiIsImltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uJDAiLCJ2ZXJzaW9uJDAiLCJuYW1lJDAiLCJtc2dfdHlwZV9pZCIsInNoYXBlcyQwIiwiZGVzY3JpcHRpb24kMCIsImltcGxlbWVudCQzIiwiZGlzcGF0Y2gkMiIsInJwY19yZXN1bHRfdG9fb3JfZXJyb3IkMCIsImRpc3BhdGNoJDMiLCJkaXNwYXRjaF9leG4kMCIsImltcGxlbWVudCQ0IiwiZGlzcGF0Y2gkNCIsInNjaGVkdWxlX2Rpc3BhdGNoJDAiLCJhXzAwNSIsImJfMDA2Iiwic2V4cF8wMTEiLCJ0YWdfMDEyIiwic2V4cF9hcmdzXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3IiwiY29tcGFyZSQwIiwiYV8wMTgiLCJiXzAxOSIsImFfMDIwIiwiYl8wMjEiLCJzZXhwXzAyNiIsInRhZ18wMjciLCJzZXhwX2FyZ3NfMDI4IiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsImNsaWVudF9wdXNoZXNfYmFjayIsImJpbl9pbml0aWFsX3Jlc3BvbnNlIiwiYmluX3VwZGF0ZV9yZXNwb25zZSIsImFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIiwiYWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZSIsImNsaWVudF9wdXNoZXNfYmFjayQwIiwiaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkIiwidXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWQiLCJlcnJvcl9yZXNwb25zZV90eXBlX2lkIiwibWFrZV9pbml0aWFsX21lc3NhZ2UiLCJpbXBsZW1lbnRfZ2VuIiwiaW1wbGVtZW50JDUiLCJjIiwiaW1wbGVtZW50X2RpcmVjdCIsImFib3J0IiwicmVhZF9lcnJvciIsImhhbmRsZXIiLCJjb3JlX2VyciIsImRpc3BhdGNoX2dlbiIsIm1ha2VfdXBkYXRlX2hhbmRsZXIiLCJpbml0aWFsX3N0YXRlIiwiaW5pdGlhbF9oYW5kbGVyIiwiZXJyJDEiLCJpbml0aWFsX21zZyIsImluaXRpYWwkMCIsImV4dHJhIiwiaGFuZGxlciQwIiwiYmluX3JlYWRlcl91cGRhdGUiLCJlcnIkNCIsImVyciQzIiwiZXJyJDIiLCJkaXNwYXRjaCQ1IiwicGlwZV93IiwiaW5pdCIsInBpcGVfbWV0YWRhdGEiLCJjcmVhdGUkMiIsImJpbl9xdWVyeSQwIiwiYmluX3Jlc3BvbnNlJDAiLCJpbXBsZW1lbnQkNiIsImNyZWF0ZSQzIiwiaW5pdGlhbF9zaXplIiwiY3JlYXRlJDQiLCJidWZmZXIkMCIsImxlbmd0aCIsIm9uZSIsIm9uZSQwIiwid3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAiLCJncm91cF9lbGVtZW50X2luX3dyaXRlciIsInJlbW92ZSIsInRvX2xpc3QiLCJmbHVzaGVkX29yX2Nsb3NlZCIsImRpcmVjdF9zdHJlYW1fd3JpdGVyIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayQxIiwid3JpdGUkMSIsImltcGxlbWVudF9kaXJlY3QkMCIsImRpc3BhdGNoJDYiLCJkaXNwYXRjaF9leG4kMSIsInBpcGVfYW5kX2lkIiwiZGlzcGF0Y2hfaXRlciIsIm5hbWUkMSIsInZlcnNpb24kMSIsImRlc2NyaXB0aW9uJDEiLCJxdWVyeV90eXBlX2lkJDAiLCJlcnJvcl90eXBlX2lkIiwicmVzcG9uc2VfdHlwZV9pZCQwIiwiY3JlYXRlJDUiLCJiaW5fc3RhdGUiLCJiaW5fdXBkYXRlIiwiYmluX3F1ZXJ5JDEiLCJiaW5fZXJyb3IkMCIsImRpc3BhdGNoJDciLCJ1cGRhdGVfciIsIm5hbWUkMiIsInZlcnNpb24kMiIsImRlc2NyaXB0aW9uJDIiLCJxdWVyeV90eXBlX2lkJDEiLCJzdGF0ZV90eXBlX2lkIiwidXBkYXRlX3R5cGVfaWQiLCJlcnJvcl90eXBlX2lkJDAiLCJkZXNjcmlwdGlvbiQzIiwicnBjIiwicnBjJDAiLCJycGMkMSIsInJwYyQyIiwidGhlX3JwYyIsIm5vdF90aGVfcnBjIiwicnBjX25hbWUkMCIsImlucHV0IiwiY29udmVydCIsImZhaWxlZF9jb252ZXJzaW9uIiwiYXJnM18wMDYiLCJhcmcyXzAwNSIsImFyZzFfMDA0IiwiYXJnMF8wMDMiLCJyZXMwXzAwNyIsInZfMDAxIiwicmVzMV8wMDgiLCJ2XzAwMiIsInJlczJfMDA5IiwicmVzM18wMTAiLCJtdWx0aXBsZV9yZWdpc3RyYXRpb25zIiwiYXJnMV8wMTQiLCJ2XzAxMSIsInZfMDEyIiwicmVzMV8wMTYiLCJhZGFwdGVyIiwiYWRhcHRlcnMiLCJhcmcxXzAyMiIsImFyZzBfMDIxIiwicmVzMV8wMjQiLCJhZGFwdGVycyQwIiwiYWRkX3JwY192ZXJzaW9uIiwib2xkX3JwYyIsInVwZ3JhZGUiLCJkb3duZ3JhZGUiLCJhZGFwdCIsImZuIiwiYWRhcHRlZCIsIm9sZF9xdWVyeSIsImFkZF9ycGNfdmVyc2lvbl93aXRoX2ZhaWx1cmUiLCJ1cGdyYWRlX29yX2Vycm9yIiwiZG93bmdyYWRlX29yX2Vycm9yIiwidmFsdWUiLCJhZGRfdmVyc2lvbiIsImFkZF92ZXJzaW9uX3dpdGhfZmFpbHVyZSIsInJlZ2lzdHJ5IiwiaW1wbGVtZW50X211bHRpIiwibG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvIiwibG9nX3ZlcnNpb24iLCJycGNzIiwidmVyc2lvbnMiLCJxJDAiLCJyJDAiLCJpbXBsZW1lbnRfbXVsdGlfZ2VuIiwiaW1wbGVtZW50X2RpcmVjdF9tdWx0aSIsIndyYXBwZWRfbW9kZWxfb2ZfcXVlcnkiLCJ3cmFwcGVkX2Vycm9yX29mX21vZGVsIiwiY29udmVydF9lbHQiLCJjb252ZXJ0X3BpcGUiLCJtb2RlbF9zdGF0ZSIsInN0YXRlJDAiLCJiaW5fc2hhcGVfcXVlcnkiLCJiaW5fc2l6ZV9xdWVyeSIsImJpbl93cml0ZV9xdWVyeSIsImJpbl9yZWFkX3F1ZXJ5IiwiYmluX3JlYWRfcXVlcnkkMCIsImJpbl9yZWFkZXJfcXVlcnkiLCJiaW5fc2hhcGVfc3RhdGUiLCJiaW5fc2l6ZV9zdGF0ZSIsImJpbl93cml0ZV9zdGF0ZSIsImJpbl93cml0ZXJfc3RhdGUiLCJiaW5fcmVhZF9zdGF0ZSIsImJpbl9yZWFkX3N0YXRlJDAiLCJiaW5fcmVhZGVyX3N0YXRlIiwiYmluX3NoYXBlX3VwZGF0ZSIsImJpbl9zaXplX3VwZGF0ZSIsImJpbl93cml0ZV91cGRhdGUiLCJiaW5fd3JpdGVyX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSQwIiwiYmluX3NoYXBlX2Vycm9yIiwiYmluX3NpemVfZXJyb3IiLCJiaW5fd3JpdGVfZXJyb3IiLCJiaW5fcmVhZF9lcnJvciIsImJpbl9yZWFkX2Vycm9yJDAiLCJtb2RlbF9vZl9xdWVyeSIsInN0YXRlX29mX21vZGVsIiwiZXJyb3Jfb2ZfbW9kZWwiLCJ1cGRhdGVfb2ZfbW9kZWwiLCJiaW5fc2hhcGVfcmVzcG9uc2UiLCJiaW5fc2l6ZV9yZXNwb25zZSIsImJpbl93cml0ZV9yZXNwb25zZSIsImJpbl9yZWFkX3Jlc3BvbnNlIiwiYmluX3JlYWRfcmVzcG9uc2UkMCIsInJlc3BvbnNlX29mX21vZGVsIiwiYWRkJDAiLCJpbXBscyIsIm1lbnUiLCJtZW51X2ltcGxzIiwic3VwcG9ydGVkX3JwY3MiLCJvZl9lbnRyaWVzIiwiZW50cmllcyIsImF1eF9yZXF1ZXN0IiwicmVxdWVzdCIsInJlcXVlc3QkMCIsImltcGxlbWVudF9tdWx0aSQwIiwiYmluX3NoYXBlX3F1ZXJ5JDAiLCJiaW5fc2l6ZV9xdWVyeSQwIiwiYmluX3dyaXRlX3F1ZXJ5JDAiLCJiaW5fd3JpdGVyX3F1ZXJ5JDAiLCJiaW5fcmVhZF9xdWVyeSQxIiwiYmluX3JlYWRfcXVlcnkkMiIsImJpbl9yZWFkZXJfcXVlcnkkMCIsImJpbl9zaGFwZV9yZXNwb25zZSQwIiwiYmluX3NpemVfcmVzcG9uc2UkMCIsImJpbl93cml0ZV9yZXNwb25zZSQwIiwiYmluX3dyaXRlcl9yZXNwb25zZSQwIiwiYmluX3JlYWRfcmVzcG9uc2UkMSIsImJpbl9yZWFkX3Jlc3BvbnNlJDIiLCJiaW5fcmVhZGVyX3Jlc3BvbnNlJDAiLCJtb2RlbF9vZl9xdWVyeSQwIiwicmVzcG9uc2Vfb2ZfbW9kZWwkMCIsImFkZCQxIiwic2hhcGVfbWVudSIsInNoYXBlX21lbnVfaW1wbHMiLCJyZXF1ZXN0JDEiLCJjb25uZWN0aW9uIiwiY3JlYXRlX2RpcmVjdGx5IiwibW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb24iLCJjYWxsZXJfdmVyc2lvbnMiLCJjYWxsZWVfdmVyc2lvbnMiLCJjYWxsZWVfbWVudSIsIndpdGhfc3BlY2lmaWNfdmVyc2lvbiIsImRpc3BhdGNoZXIiLCJhcmcxXzAxOCIsImFyZzBfMDE3IiwicmVzMV8wMjAiLCJ3aXRoX3ZlcnNpb25fbWVudSIsImRpc3BhdGNoX211bHRpIiwiY29ubl93aXRoX21lbnUiLCJtcSIsInF1ZXJ5X29mX21vZGVsIiwibW9kZWxfb2ZfcmVzcG9uc2UiLCJkaXNwYXRjaF9pdGVyX211bHRpIiwiYWJvcnRfbXVsdGkiLCJ3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIiwiY29udmVydF9yZXN1bHQiLCJjb252ZXJ0X29rIiwidSIsInJzIiwibW9kZWxfb2Zfc3RhdGUiLCJtb2RlbF9vZl9lcnJvciIsIm1vZGVsX29mX3VwZGF0ZSIsImNhbGxlZV9tb2RlbF9vZl9xdWVyeSIsInJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbCIsInF1ZXJ5X29mX2NhbGxlcl9tb2RlbCIsImNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSIsImVycm9yX29mX2NhbGxlZV9tb2RlbCIsImJpbl9zaGFwZV9lcnJvciQwIiwiYmluX3NpemVfZXJyb3IkMCIsImJpbl93cml0ZV9lcnJvciQwIiwiYmluX3dyaXRlcl9lcnJvciQwIiwiYmluX3JlYWRfZXJyb3IkMSIsImJpbl9yZWFkX2Vycm9yJDIiLCJiaW5fcmVhZGVyX2Vycm9yJDAiLCJjYWxsZXJfbW9kZWxfb2ZfZXJyb3IiLCJzdGF0ZV9vZl9jYWxsZWVfbW9kZWwiLCJ1cGRhdGVfb2ZfY2FsbGVlX21vZGVsIiwiYmluX3NoYXBlX3N0YXRlJDAiLCJiaW5fc2l6ZV9zdGF0ZSQwIiwiYmluX3dyaXRlX3N0YXRlJDAiLCJiaW5fd3JpdGVyX3N0YXRlJDAiLCJiaW5fcmVhZF9zdGF0ZSQxIiwiYmluX3JlYWRfc3RhdGUkMiIsImJpbl9yZWFkZXJfc3RhdGUkMCIsImJpbl9zdGF0ZSQwIiwiYmluX3NoYXBlX3VwZGF0ZSQwIiwiYmluX3NpemVfdXBkYXRlJDAiLCJiaW5fd3JpdGVfdXBkYXRlJDAiLCJiaW5fd3JpdGVyX3VwZGF0ZSQwIiwiYmluX3JlYWRfdXBkYXRlJDEiLCJiaW5fcmVhZF91cGRhdGUkMiIsImJpbl9yZWFkZXJfdXBkYXRlJDAiLCJiaW5fdXBkYXRlJDAiLCJjYWxsZXJfbW9kZWxfb2Zfc3RhdGUiLCJjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIiwiYmluX3NoYXBlX21zZyIsImJpbl9zaXplX21zZyIsImJpbl93cml0ZV9tc2ciLCJiaW5fd3JpdGVyX21zZyIsImJpbl9yZWFkX21zZyIsImJpbl9yZWFkX21zZyQwIiwiYmluX3JlYWRlcl9tc2ciLCJjYWxsZWVfbW9kZWxfb2ZfbXNnIiwiYmluX3NoYXBlX21zZyQwIiwiYmluX3NpemVfbXNnJDAiLCJiaW5fd3JpdGVfbXNnJDAiLCJiaW5fd3JpdGVyX21zZyQwIiwiYmluX3JlYWRfbXNnJDEiLCJiaW5fcmVhZF9tc2ckMiIsImJpbl9yZWFkZXJfbXNnJDAiLCJiaW5fbXNnJDAiLCJtc2dfb2ZfY2FsbGVyX21vZGVsIiwicGlwZV9yZWFkIiwieF8wMDkiLCJvZl9hXzAwMSIsImJ1ZmZlcl8wMDUiLCJwaXBlXzAwMyIsImJ5dGVzX3JlYWRfMDA3IiwiYXJnXzAwOCIsImJuZHNfMDAyIiwiYXJnXzAwNiIsImJuZHNfMDAyJDAiLCJhcmdfMDA0IiwiYm5kc18wMDIkMSIsInByb2Nlc3NfcXVldWUkMCIsIm5lZWQiLCJxdWV1ZSIsImJ1ZmZfbGVuIiwicHJvY2Vzc19kYXRhJDAiLCJwcm9jZXNzX3F1ZXVlIiwic2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSQwIiwidG90YWxfbGVuIiwiY29udGludWVfb3Jfd2FpdCIsImxlbmd0aCQwIiwic2V0X2J1ZmZlciIsInByb2Nlc3NfZGF0YSIsInNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUiLCJ3YWl0X2Zvcl9yZWFkIiwiZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSIsIm9mX2JpZ3N0cmluZyIsInhfMDE5Iiwib2ZfYV8wMTEiLCJtb25pdG9yXzAxNSIsInBpcGVfMDEzIiwiYnl0ZXNfd3JpdHRlbl8wMTciLCJibmRzXzAxMiIsImJuZHNfMDEyJDAiLCJibmRzXzAxMiQxIiwiaW5jcl9ieXRlc193cml0dGVuIiwibnVtX2J5dGVzIiwicGF5bG9hZF9zaXplIiwiZGF0YV9zaXplIiwiZHN0X3BvcyIsImFkZF90b19iaWdidWZmZXIiLCJ0b19iaWdzdHJpbmciLCJhZGRfdG9fYmlnYnVmZmVyJDAiLCJ0b19iaWdzdHJpbmckMCIsIm9mX2JpZ3N0cmluZyQwIiwia2luZCIsInJlYWRlciQwIiwiZGVmYXVsdF9tZXNzYWdlIiwiY3JlYXRlX21lc3NhZ2VfYnVmIiwibWVzc2FnZV9sZW4iLCJvbl9tZXNzYWdlX2NvdW50IiwiZ290Iiwic2V4cGlmaWVyIiwiY29tcGFyYXRvciIsIm9uX2VuZF9vZl9iYXRjaF9jb3VudCIsInJ1bl90ZXN0IiwidmVyaWZ5Iiwib25fbWVzc2FnZSQwIiwib25fZW5kX29mX2JhdGNoJDAiLCJtZXNzYWdlX2NvdW50IiwiYmF0Y2hfY291bnQiLCJhXzAyMiIsImJfMDIzIiwiZ290JDAiLCJzZXhwaWZpZXIkMCIsImNvbXBhcmF0b3IkMCIsImFfMDI0IiwiYl8wMjUiLCJ3cml0ZV8xX21zZ18xX2NodW5rIiwid3JpdGVfMV9tc2dfM19jaHVuayIsIm1zZ19sZW4iLCJzcGxpdF9hdCIsInBhcnQxIiwicGFydDIiLCJ3cml0ZV8yX21zZ18xX2NodW5rIiwib25lX21zZyIsInR3b19tc2ciLCJ3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWUiLCJudW0iLCJzdG9wX2FmdGVyX29uX21lc3NhZ2UiLCJhXzAyNiIsImJfMDI3IiwiYV8wMzAiLCJiXzAzMSIsIm9uZV9tZXNzYWdlIiwidHdvX21lc3NhZ2VzIiwib25lX21lc3NhZ2VfcDEiLCJvbmVfbWVzc2FnZV9wMiIsInJwY19jb25uZWN0aW9uIiwiY2xvc2VfZmluaXNoZWQkMCIsInN0cmluZ19hZnRlciIsInMiLCJuIiwicXVvdGUiLCJsZW4iLCJidWYiLCJpIiwiYyIsIm9mX2NoYXIiLCJmdWxsX3NwbGl0Iiwic3RyIiwib24iLCJzZXAiLCJsb29wIiwiYWNjIiwib2Zmc2V0IiwiaW5kZXgiLCJ0b2tlbiIsInNwbGl0IiwibWF4IiwibWF4JDAiLCJ0b2tlbnMiLCJsb29wJDAiLCJ0cmltX2xlZnRfc3ViIiwibGFzdF9jaGFyIiwiY2hhcnMiLCJmaW5hbCQwIiwibGFzdF9jaGFyJDAiLCJpJDAiLCJsYXN0X2NoYXIkMSIsIm5ld19sZW4iLCJzcGxpdF90cmltX2xlZnQiLCJ0cmltIiwidHJpbV9sZWZ0Iiwibm9uX3NwYWNlIiwiZmluZF9mcm9tIiwicGF0dGVybiIsInN0YXJ0Iiwic3RhcnQkMCIsInJlcGxhY2VfYWxsIiwid2l0aCQwIiwicGxlbiIsInNsZW4iLCJqIiwicmVwbGFjZV9hbGxfYXNzb2MiLCJ0YmwiLCJmb3VuZCIsImZvdW5kJDAiLCJmIiwieHMkMCIsIngkMSIsIngiLCJmeCIsInhzIiwieCQwIiwiZngkMCIsImUiLCJqJDEiLCJ3aXRoJDIiLCJwYXR0ZXJuJDEiLCJyIiwid2l0aCQxIiwicGF0dGVybiQwIiwiaiQwIiwib2ZfbGlzdCIsImwiLCJ0b19saXN0IiwiaSQxIiwiYWNjJDAiLCJvZl9hcnJheSIsImEiLCJieXRlcyIsInRvX2FycmF5IiwiY3V0Iiwic2VwX21heCIsInNfbWF4IiwiayIsImxlZnRfZW5kIiwicmlnaHRfc3RhcnQiLCJyY3V0Iiwic2VwX3N0YXJ0IiwiY2hvcF9wcmVmaXgiLCJwcmVmaXgiLCJwcmVmaXhfbCIsInN0cmluZ19sIiwiZHJvcCIsInRha2UiLCJjcmVhdGUiLCJzaXplIiwiZW1wdHkiLCJsZW5ndGgiLCJzdWIiLCJpbnZhbGlkX2JvdW5kcyIsIm9wIiwiYnVmZmVyX2xlbiIsIm9mZiIsImxlbiIsIm1lc3NhZ2UiLCJpbnZhbGlkX2JvdW5kc19ibGl0Iiwic3JjX2xlbiIsInNyY19vZmYiLCJkc3RfbGVuIiwiZHN0X29mZiIsImludmFsaWRfYm91bmRzX21lbWNtcCIsImJ1ZjFfbGVuIiwiYnVmMV9vZmYiLCJidWYyX2xlbiIsImJ1ZjJfb2ZmIiwiY29weSIsInQiLCJkc3QiLCJzdWJzdHJpbmciLCJiIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwicyIsImJsaXQiLCJzcmMiLCJibGl0X2Zyb21fc3RyaW5nIiwiYmxpdF9mcm9tX2J5dGVzIiwiYmxpdF90b19ieXRlcyIsIm1lbWNtcCIsImJ1ZjEiLCJidWYyIiwibWVtY21wX3N0cmluZyIsIm1lbWNociIsImJ1ZiIsImJ1Zl9vZmYiLCJjaHIiLCJidWZfbGVuIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzE2IiwiYnMiLCJpIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzY0IiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQiLCJ4Iiwic2V0X2ludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDMyX2JlIiwic2V0X2ludDMyX2xlIiwic2V0X2ludDY0X2JlIiwic2V0X2ludDY0X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwJDAiLCJnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSIsImdldF9pbnQzMl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQ2NF9iZSIsImdldF9pbnQ2NF9sZSIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCIsInVuc2FmZV9zZXRfaW50MTZfYmUiLCJ1bnNhZmVfc2V0X2ludDE2X2xlIiwidW5zYWZlX3NldF9pbnQzMl9iZSIsInVuc2FmZV9zZXRfaW50MzJfbGUiLCJ1bnNhZmVfc2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF9pbnQ2NF9sZSIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfZ2V0X2ludDE2X2xlIiwidW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkIiwidW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX2JlIiwidW5zYWZlX2dldF9pbnQzMl9sZSIsInVuc2FmZV9nZXRfaW50NjRfYmUiLCJ1bnNhZmVfZ2V0X2ludDY0X2xlIiwic3RhdGVfdG9fb3B0aW9uIiwieCIsInYiLCJmYWlsX3RvX3N0cmluZyIsIm1hcmtzIiwiZXJyIiwic3RhdGVfdG9fcmVzdWx0IiwiY3JlYXRlIiwiYnVmZmVyIiwib2ZmIiwibGVuIiwiY29tbWl0dGVkX2J5dGVzIiwibGVuZ3RoIiwidCIsImNsaWVudF9jb21taXR0ZWRfYnl0ZXMiLCJwYXJzZXJfY29tbWl0dGVkX2J5dGVzIiwiYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQiLCJwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMiLCJpbnZhcmlhbnQiLCJvZmZzZXRfaW5fYnVmZmVyIiwicG9zIiwiYXBwbHkiLCJmIiwidW5zYWZlX2dldF9jaGFyIiwidW5zYWZlX2dldF9pbnQxNl9sZSIsInVuc2FmZV9nZXRfaW50MzJfbGUiLCJ1bnNhZmVfZ2V0X2ludDY0X2xlIiwidW5zYWZlX2dldF9pbnQxNl9iZSIsInVuc2FmZV9nZXRfaW50MzJfYmUiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlIiwiY291bnRfd2hpbGUiLCJpIiwibGltaXQiLCJjb21taXQiLCJmYWlsX2siLCJpbnB1dCIsIm1zZyIsInN1Y2NlZWRfayIsInRvX2V4cG9ydGVkX3N0YXRlIiwiY29udGludWUkMCIsImNvbW1pdHRlZCIsImJzIiwibW9yZSIsIngkMCIsInMiLCJzbCIsImkkMCIsInBhcnNlIiwicCIsInBhcnNlX2JpZ3N0cmluZyIsImlucHV0JDAiLCJyZXR1cm4kMCIsImZhaWwiLCJzdWNjIiwic3ltYm9sX2JpbmQiLCJzdWNjJDAiLCJzeW1ib2xfbWFwIiwic3ltYm9sIiwibSIsInN5bWJvbCQwIiwic3VjYzAiLCJpbnB1dDAiLCJwb3MwIiwibW9yZTAiLCJzdWNjMSIsImlucHV0MSIsInBvczEiLCJtb3JlMSIsImxpZnQiLCJsaWZ0MiIsIm0xIiwibTIiLCJzdWNjMiIsImlucHV0MiIsInBvczIiLCJtb3JlMiIsImxpZnQzIiwibTMiLCJzdWNjMyIsImlucHV0MyIsInBvczMiLCJtb3JlMyIsImxpZnQ0IiwibTQiLCJzdWNjNCIsImlucHV0NCIsInBvczQiLCJtb3JlNCIsInN5bWJvbCQxIiwiYSIsImIiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwibWFyayIsImZhaWwkMCIsInN5bWJvbCQ0IiwicSIsInBvcyQwIiwibW9yZSQwIiwicmV0dXJuJDEiLCJzeW1ib2xfYmluZCQwIiwic3ltYm9sX21hcCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsImxpZnQyJDAiLCJsaWZ0MyQwIiwibGlmdDQkMCIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJvZl9iaWdzdHJpbmciLCJidWYiLCJ3cml0YWJsZV9zcGFjZSIsImVuc3VyZSIsInRvX2NvcHkiLCJvbGRfbGVuIiwibmV3X2xlbiIsInNwYWNlIiwibmV3X2J1ZiIsIndyaXRlX3BvcyIsImZlZWRfc3RyaW5nIiwic3RyIiwiZmVlZF9iaWdzdHJpbmciLCJmZWVkX2lucHV0Iiwic2hpZnQiLCJuIiwiZm9yX3JlYWRpbmciLCJ1bmNvbnN1bWVkIiwib2ZfdW5jb25zdW1lZCIsImZyb21fdW5idWZmZXJlZF9zdGF0ZSIsImJ1ZmZlcmluZyIsImNvbnN1bWVkIiwiY29uc3VtZWQkMCIsInVuY29uc3VtZWQkMCIsInBhcnNlJDAiLCJpbml0aWFsX2J1ZmZlcl9zaXplIiwiZmVlZCIsInN0YXRlIiwiayIsImJ1ZmZlcmluZyQwIiwic3RhdGVfdG9fb3B0aW9uJDAiLCJzdGF0ZV90b19yZXN1bHQkMCIsInN0YXRlX3RvX3VuY29uc3VtZWQiLCJwcm9tcHQiLCJkZW1hbmRfaW5wdXQiLCJlbnN1cmVfc3VzcGVuZGVkIiwiZ28iLCJ1bnNhZmVfYXBwbHkiLCJhdF9lbmRfb2ZfaW5wdXQiLCJlbmRfb2ZfaW5wdXQiLCJhZHZhbmNlIiwiYXZhaWxhYmxlIiwidW5zYWZlX2xvb2thaGVhZCIsInBlZWtfY2hhciIsInBlZWtfY2hhcl9mYWlsIiwic2F0aXNmeSIsImMiLCJjaGFyJDAiLCJub3RfY2hhciIsImMkMCIsImFueV9jaGFyIiwiaW50OCIsInAkMCIsImFueV91aW50OCIsInAkMSIsImFueV9pbnQ4Iiwic2tpcCIsImluaXQiLCJ3aXRoX2J1ZmZlciIsImlucHV0X2xlbiIsImluaXQkMCIsImNvdW50X3doaWxlMSIsInN1Y2MkMSIsImZhaWwkMSIsInN0cmluZyIsImYkMCIsImUiLCJzdHJpbmckMCIsInN0cmluZ19jaSIsInNraXBfd2hpbGUiLCJ0YWtlIiwibiQwIiwidGFrZV9iaWdzdHJpbmciLCJ0YWtlX2JpZ3N0cmluZ193aGlsZSIsInRha2VfYmlnc3RyaW5nX3doaWxlMSIsInRha2VfYmlnc3RyaW5nX3RpbGwiLCJwZWVrX3N0cmluZyIsInRha2Vfd2hpbGUiLCJ0YWtlX3doaWxlMSIsInRha2VfdGlsbCIsImNob2ljZSIsInBzIiwiZmFpbHVyZV9tc2ciLCJmaXhfZGlyZWN0IiwiciIsImZpeF9sYXp5IiwibWF4X3N0ZXBzIiwic3RlcHMiLCJmaXgiLCJvcHRpb24iLCJjb25zIiwieHMiLCJsaXN0IiwicHMkMCIsImNvdW50IiwibG9vcCIsIm1hbnkiLCJtYW55MSIsIm1hbnlfdGlsbCIsInNlcF9ieTEiLCJzZXBfYnkiLCJza2lwX21hbnkiLCJza2lwX21hbnkxIiwiZW5kX29mX2xpbmUiLCJzY2FuIiwic3RhdGUkMCIsInBhcnNlciIsInNjYW4kMCIsInNjYW5fc3RhdGUiLCJzY2FuX3N0cmluZyIsImNvbnN1bWVfd2l0aCIsImNvbnN1bWVkX2JpZ3N0cmluZyIsImJvdGgiLCJtYXAiLCJiaW5kIiwibWFwMiIsIm1hcDMiLCJtYXA0IiwiZCIsImludDE2IiwiaW50MzIiLCJpbnQ2NCIsImFueV91aW50MTYiLCJhbnlfaW50MTYiLCJhbnlfaW50MzIiLCJhbnlfaW50NjQiLCJhbnlfZmxvYXQiLCJhbnlfZG91YmxlIiwiaW50MTYkMCIsImludDMyJDAiLCJpbnQ2NCQwIiwiYW55X3VpbnQxNiQwIiwiYW55X2ludDE2JDAiLCJhbnlfaW50MzIkMCIsImFueV9pbnQ2NCQwIiwiYW55X2Zsb2F0JDAiLCJhbnlfZG91YmxlJDAiLCJ0YWtlJDAiLCJwZWVrIiwidGFrZV93aGlsZSQwIiwiY2hlY2siLCJ0YWtlX3doaWxlMSQwIiwidGFrZV90aWxsJDAiLCJwYXJzZV9iaWdzdHJpbmckMCIsImNvbnN1bWUiLCJwYXJzZV9zdHJpbmciLCJ4IiwieCQwIiwiY3N0JDE1IiwiY3N0JDEzIiwiY3N0JDEyIiwiY3N0JDAiLCJpdGVyX2NvbmNhdCIsImZuIiwic2VwIiwiYnVmIiwibGFzdCIsInJlc3QiLCJjb21wYXJlX29wdCIsImMiLCJ0JDAiLCJ0IiwiYSIsImIiLCJjb21wYXJlX2xpc3QiLCJmIiwidCQyIiwidCQxIiwieHMiLCJ5cyIsInkiLCJzdWJfZGVsaW1zIiwiaSIsInNhZmVfY2hhcnMiLCJwY2hhciIsInNhZmVfY2hhcnNfZm9yX3NjaGVtZSIsInNhZmVfY2hhcnNfZm9yX3BhdGgiLCJzYWZlX2NoYXJzX2Zvcl9xdWVyeSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIiwic2FmZV9jaGFyc19mb3JfdXNlcmluZm8iLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQiLCJ1bnNhZmUiLCJzYWZlIiwiY29tcG9uZW50Iiwic2FmZV9jaGFycyQwIiwiaSQwIiwiYyQwIiwibm9ybWFsaXplX2hvc3QiLCJoc28iLCJjYW5vbmljYWxpemVfcG9ydCIsInBvcnQiLCJjYW5vbmljYWxpemVfcGF0aCIsInBhdGgiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMCIsIm5vcm1hbGl6ZV9ob3N0JDAiLCJocyIsImNhbm9uaWNhbGl6ZV9wb3J0JDAiLCJjYW5vbmljYWxpemVfcGF0aCQwIiwic2FmZV9jaGFyc19mb3JfY29tcG9uZW50JDEiLCJub3JtYWxpemVfaG9zdCQxIiwiY2Fub25pY2FsaXplX3BhdGgkMSIsImNhbm9uaWNhbGl6ZV9wb3J0JDEiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMiIsImNhbm9uaWNhbGl6ZV9wb3J0JDIiLCJjYW5vbmljYWxpemVfcGF0aCQyIiwibm9ybWFsaXplX2hvc3QkMiIsImhzJDAiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMyIsIm5vcm1hbGl6ZV9ob3N0JDMiLCJjYW5vbmljYWxpemVfcG9ydCQzIiwiY2Fub25pY2FsaXplX3BhdGgkMyIsIm1vZHVsZV9vZl9zY2hlbWUiLCJzIiwiZW5jb2RlIiwic2NoZW1lIiwibGVuIiwic3RhcnQiLCJjdXIiLCJjdXIkMCIsImN1ciQxIiwic3RhcnQkMCIsImludF9vZl9oZXhfY2hhciIsImRlY29kZSIsImhpZ2hiaXRzIiwibG93Yml0cyIsInN0YXJ0X2F0IiwicGN0X2VuY29kZSIsInBjdF9lbmNvZGVyIiwidXNlcmluZm8iLCJob3N0IiwicXVlcnlfa2V5IiwicXVlcnlfdmFsdWUiLCJmcmFnbWVudCIsInBjdF9kZWNvZGUiLCJjb21wYXJlIiwicCIsInUiLCJwJDAiLCJ1JDAiLCJ1c2VyaW5mb19vZl9lbmNvZGVkIiwidXMiLCJ4JDEiLCJlbmNvZGVkX29mX3VzZXJpbmZvIiwicG8iLCJwYXRoX29mX2VuY29kZWQiLCJwcyIsInRva2wiLCJyZW1vdmVfZG90X3NlZ21lbnRzIiwicmV2cCIsImFzY2Vuc2lvbiIsIm91dHAiLCJyJDMiLCJyJDEiLCJyJDAiLCJyJDIiLCJyIiwibHN0IiwiaCIsImFjYyIsImVuY29kZWRfb2ZfcGF0aCIsInRvayIsInNlZyIsInF1ZXJ5X29mX2VuY29kZWQiLCJxcyIsImVscyIsInBsdXNfdG9fc3BhY2UiLCJzJDAiLCJlbCIsImsiLCJ0bCIsInYiLCJsIiwibCQwIiwibiIsInRsJDAiLCJuJDAiLCJ0bCQxIiwiZW5jb2RlZF9vZl9xdWVyeSIsInBjdF9lbmNvZGVyJDAiLCJvZl9yYXciLCJsYXp5X3F1ZXJ5Iiwia3YiLCJlbmNvZGVkX29mX3F1ZXJ5JDAiLCJlbXB0eSIsImNvbXBhcmVfZGVjb2RlZCIsImNvbXBhcmVfaG9zdCIsImgxIiwiaDIiLCJpcDIiLCJpcDEiLCJpcDIkMCIsImlwMSQwIiwiaDIkMCIsImgxJDAiLCJjb21wYXJlJDAiLCJjJDIiLCJjJDMiLCJjJDQiLCJrdmwkMCIsImt2bCIsInJhdyIsInJhdyQwIiwiYyQxIiwidmwiLCJ2bCQwIiwiayQwIiwiZXF1YWwiLCJ1bmNhc3Rfb3B0Iiwibm9ybWFsaXplIiwic2NoZW0iLCJpbml0IiwiaG9zdCQwIiwiaG9zdCQxIiwidG9fc3RyaW5nIiwidXJpIiwiYWRkX3BjdF9zdHJpbmciLCJmaXJzdF9zZWdtZW50IiwieCQyIiwicSIsImdldF9kZWNvZGVkX29wdCIsIndpdGhfc2NoZW1lIiwiaCQwIiwiaG9zdF93aXRoX2RlZmF1bHQiLCJkZWZhdWx0JDAiLCJ3aXRoX3VzZXJpbmZvIiwidXNlcmluZm8kMCIsInVzZXIiLCJwYXNzd29yZCIsInBhc3MiLCJ3aXRoX3Bhc3N3b3JkIiwicmVzdWx0Iiwid2l0aF9wb3J0Iiwid2l0aF9wYXRoIiwicGF0aCQwIiwid2l0aF9mcmFnbWVudCIsImZyYWciLCJxdWVyeSIsInZlcmJhdGltX3F1ZXJ5IiwiZ2V0X3F1ZXJ5X3BhcmFtIiwiZ2V0X3F1ZXJ5X3BhcmFtJDAiLCJ3aXRoX3F1ZXJ5IiwicV9zIiwid2l0aF9xdWVyeSQwIiwiYWRkX3F1ZXJ5X3BhcmFtIiwiYWRkX3F1ZXJ5X3BhcmFtJDAiLCJhZGRfcXVlcnlfcGFyYW1zIiwiYWRkX3F1ZXJ5X3BhcmFtcyQwIiwicmVtb3ZlX3F1ZXJ5X3BhcmFtIiwicGF0aF9hbmRfcXVlcnkiLCJtYXRjaCIsInNjaGVtZSQwIiwicmVzb2x2ZSIsImJhc2UiLCJzY2hlbWUkMSIsInNjaGVtJDAiLCJwYXRoX3N0ciIsInJlbHBhdGgiLCJicGF0aCIsImJob3N0IiwicmJwYXRoIiwiY2Fub25pY2FsaXplIiwidXJpJDAiLCJwcCIsInBwZiIsInBwX2h1bSIsInN0cmluZ19vZl9jaGFyIiwic3RyaW5nX29mX2NoYXJfbGlzdCIsImNoYXJzIiwiaXNfZGlnaXQiLCJoZXhfZGlnaXQiLCJoZXhhZGVjaW1hbCIsImNfZG90IiwiY19hdCIsImNfY29sb24iLCJkZWNfb2N0ZXQiLCJudW0iLCJpcHY0X2FkZHJlc3MiLCJ0aHJlZSIsIm9uZSIsImFmdGVyX2RvdWJsZV9jb2xvbiIsImRvdWJsZV9jb2xvbiIsImNvdW50IiwiZmlsbGVyX2xlbmd0aCIsInBhcnQiLCJoZXhfcGFydCIsInNwbGl0X3dpdGgiLCJ0cyIsInpzIiwiZm9ybWF0X2FkZHIiLCJzZWdtZW50cyIsInNlZ21lbnQiLCJiZWZvcmVfZG91YmxlX2NvbG9uIiwiYmVmb3JlIiwicmVzIiwiaXB2NiIsImlwdjZfYWRkcmVzcyIsInBjdF9lbmNvZGVkIiwicGN0IiwiZGlnaXRzIiwic3ViX2RlbGltcyQwIiwidW5yZXNlcnZlZCIsInJlZ19uYW1lIiwicG9ydCQwIiwiZGVjb2RlZCIsImF1dGhvcml0eSIsInF1ZXJ5JDAiLCJmcmFnbWVudCQwIiwidXJpX3JlZmVyZW5jZSIsInVyaV9yZWZlcmVuY2UkMCIsImRlY29kZV9ob3N0IiwicGFyc2VkIiwicGFyc2VkJDAiLCJtYWtlIiwicGF0aCQxIiwid2l0aF9ob3N0Iiwid2l0aF91cmkiLCJ3aXRoJDAiLCJvIiwib2Zfc3RyaW5nIiwibGV0JDAiLCJ0b191cmkiLCJvZl91cmkiLCJ1bnN1cHBvcnRlZF9zY2hlbWUiLCJvZl9zdHJpbmckMCIsImVycm9yIiwidG9fc3RyaW5nJDAiLCJtYWtlJDAiLCJob3N0JDIiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAxOCIsImRlZmF1bHRfMDM0IiwiZXJyb3Jfc291cmNlXzAyNyIsImRlZmF1bHRfMDYyIiwiY29tcG9uZW50X29mX3NleHAiLCJzZXhwXzAxNyIsImF0b21fMDAyIiwic2V4cF9hcmdzXzAwNSIsImF0b21fMDAyJDAiLCJhcmcwXzAxNSIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInJlczBfMDExIiwicmVzMV8wMTIiLCJyZXMyXzAxMyIsInJlczBfMDE2Iiwic2V4cF9vZl9jb21wb25lbnQiLCJ2XzAxOSIsImFyZzJfMDIyIiwiYXJnMV8wMjEiLCJhcmcwXzAyMCIsInJlczBfMDIzIiwicmVzMV8wMjQiLCJyZXMyXzAyNSIsImRlZmF1bHRfMDI4IiwiZGVmYXVsdF8wMzUiLCJkZWZhdWx0XzAzNiIsImRlZmF1bHRfMDM3IiwiZGVmYXVsdF8wMzgiLCJkZWZhdWx0XzA0MiIsImRlZmF1bHRfMDQ3IiwiZGVmYXVsdF8wNTIiLCJkZWZhdWx0XzA1NyIsImRlZmF1bHRfMDc1IiwidF9vZl9zZXhwIiwieF8wMzkiLCJzZXhwXzAzMyIsImFyZzFfMDMwIiwiYXJnMF8wMjkiLCJyZXMwXzAzMSIsInJlczFfMDMyIiwidCIsImZyYWdtZW50IiwicXVlcnkiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJ1c2VyaW5mbyIsInNjaGVtZSIsInNleHBfb2ZfdCIsImZyYWdtZW50XzA3NiIsInF1ZXJ5XzA2NyIsInBhdGhfMDYzIiwicG9ydF8wNTgiLCJob3N0XzA1MyIsInVzZXJpbmZvXzA0OCIsInNjaGVtZV8wNDMiLCJibmRzXzA0MCIsImFyZ18wNzgiLCJibmRzXzA0MCQwIiwiYm5kXzA3NyIsImJuZHNfMDQwJDEiLCJhcmdfMDczIiwiYXJnMV8wNjkiLCJhcmcwXzA2OCIsInJlczBfMDcwIiwicmVzMV8wNzEiLCJibmRfMDcyIiwiYXJnXzA2NSIsImJuZHNfMDQwJDIiLCJibmRfMDY0IiwiYXJnXzA2MCIsImJuZHNfMDQwJDMiLCJibmRfMDU5IiwiYXJnXzA1NSIsImJuZHNfMDQwJDQiLCJibmRfMDU0IiwiYXJnXzA1MCIsImJuZHNfMDQwJDUiLCJibmRfMDQ5IiwiYXJnXzA0NSIsImJuZHNfMDQwJDYiLCJibmRfMDQ0IiwiY29tcGFyZSIsImEiLCJiIiwiZXF1YWwiLCJpc192YWxpZF9maWVsZF9uYW1lIiwic2VlbiIsIm5hbWUiLCJhbnlfb2Zfc2V4cCIsInMiLCJsaXN0JDAiLCJ2JDAiLCJuYW1lJDEiLCJzZWVuJDIiLCJyZXZfYWNjIiwibGlzdCIsInJlc3QiLCJyZXZfYWNjJDAiLCJzZWVuJDAiLCJyZXN0JDAiLCJ2IiwibmFtZSQwIiwicmV2X2FjYyQxIiwic2VlbiQxIiwibCIsImxvZ19zIiwic2V4cCIsImxvZ19zX2FzX3N0cmluZyIsInNleHBfb2ZfdCIsImZpZWxkMl8wMTYiLCJmaWVsZDFfMDE0IiwiYXJnXzAxNyIsImJuZHNfMDEzIiwic29tZV9uYW1lXzAwNSIsImFyZ18wMDYiLCJibmRzXzAwNCIsImFyZ18wMTUiLCJibmRzXzAxMyQwIiwidG9fc3RyaW5nIiwic2V4cF93aXRoX2R1cGxpY2F0ZV9rZXlzIiwieF8wMjIiLCJpIiwiYXJnMV8wMTkiLCJhcmcwXzAxOCIsInJlczBfMDIwIiwicmVzMV8wMjEiLCJjb21wYXJlX2Nsb3NlX2V2ZW50X2NvZGUiLCJzZXhwX29mX2Nsb3NlX2V2ZW50X2NvZGUiLCJhbGxfb2ZfY2xvc2VfZXZlbnRfY29kZSIsImNvbXBhcmUiLCJhXzAwNCIsImJfMDA1IiwiYV8wMDYiLCJiXzAwNyIsImFfMDA4IiwiYl8wMDkiLCJhY2MiLCJsJDAiLCJlbnVtZXJhdGVfMDExIiwiYWNjJDAiLCJsJDEiLCJhY2MkMSIsImwkMiIsImVudW1lcmF0ZV8wMTAiLCJhY2MkMiIsImFsbCIsIm9mX2ludCIsImNvZGUiLCJ0b19pbnQiLCJjb2RlJDAiLCJ4XzAzMSIsInhfMDMwIiwibm9ybWFsX2Nsb3N1cmUiLCJjbGllbnQiLCJoZWFydGJlYXRfY29uZmlnIiwiZGVzY3JpcHRpb24iLCJpbXBsZW1lbnRhdGlvbnMiLCJ1cmkiLCJzY2hlbWUiLCJwb3J0IiwicG9ydCQwIiwiaG9zdCIsIm1hdGNoJDEiLCJyZXMiLCJoIiwiZGVzY3JpcHRpb24kMCIsImZyb21fc2VydmVyX3ciLCJmcm9tX3NlcnZlcl9yIiwidG9fc2VydmVyX3ciLCJ0b19zZXJ2ZXJfciIsImVycm9yIiwidHJhbnNwb3J0IiwiY3JlYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsImNvbm5lY3Rpb24iLCJleG4iLCJpbXBsZW1lbnRhdGlvbnMkMCIsImV4biQxIiwiZXhuJDAiLCJjb25uZWN0ZWRfaXZhciIsImNsZWFudXAiLCJyZWFzb24iLCJyZWFzb24kMCIsImNsb3NlIiwib25jbG9zZSIsImNsb3NlX2V2ZW50Iiwid2hhdF9oYXBwZW5lZCIsImN1c3RvbV9wcmludGZfMDM0IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvbm1lc3NhZ2UiLCJkYXRhIiwiY29ubmVjdGVkIiwiY29ubmVjdGVkX2RlZmVycmVkIiwiY2xlYW51cF93aGVuX2FfcGlwZV9pc19jbG9zZWQiLCJjbGllbnRfZXhuIiwiY3JlYXRlX2Zyb21fdXJpIiwiZXF1YWwkMCIsImFfMDAxIiwiYl8wMDIiLCJhXzAwMyIsImJfMDA0Iiwic2V4cF9vZl90JDEiLCJ4XzAwNyIsImNyZWF0ZV9mcm9tX3VyaV9vcHRpb24iLCJtZXRob2Rfc3RyaW5nJDAiLCJyZXF1ZXN0Iiwib25fcHJvZ3Jlc3MiLCJvbl91cGxvYWRfcHJvZ3Jlc3MiLCJ1cmwiLCJyZXNwb25zZV90eXBlIiwibWV0aG9kX3dpdGhfYXJncyIsImhlYWRlcnMiLCJhcmdzIiwibWV0aG9kX3N0cmluZyQxIiwidXJsJDAiLCJ2YWx1ZSIsInJlc3BvbnNlIiwiZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IiLCJjb250ZW50IiwiZ2V0X2hlYWRlciIsImJvZHkiLCJib2R5JDAiLCJnZXQiLCJhcmd1bWVudHMkMCIsInJlc3AiLCJwb3N0IiwicmVhZHlfc3RhdGVfY2hhbmdlIiwiY29tcGxldGUiLCJzbGVlcCIsImQiLCJ5aWVsZCQwIiwiZXh0cmFjdF9qc19lcnJvciIsIm1zZyIsImpzX2Vycm9yIiwibWVzc2FnZXMiLCJqc19lcnJvciQwIiwicHJldHR5X3ByaW50X2V4Y2VwdGlvbiIsImVyciIsImNsYXNzaWZpY2F0aW9uIiwiZXJyJDIiLCJlcnIkMCIsImV4biQyIiwiaGQiLCJtZXNzYWdlIiwic3RhdGUiLCJ0aW1lb3V0cyIsInJ1bl9hZnRlciIsImYiLCJtcyIsImxvb3AiLCJ0IiwibmV4dF93YWtldXAiLCJuZXh0Iiwibm93IiwiZF9tcyQwIiwiZF9tcyIsImF0IiwicnVuX3RpbWVvdXQiLCJydW4iLCJpbml0aWFsaXplZF9yZWYiLCJpbml0aWFsaXphdGlvbiIsImluaXQiLCJpbml0aWFsaXplZCIsImpzX3N0cmluZ19jb21wYXJlIiwicmVhZHlzdGF0ZWNoYW5nZV9ldiIsImFkZF9ldmVudCIsInRhcmdldCIsImV2dCIsImhhbmRsZXIiLCJkb2N1bWVudF9sb2FkZWQiLCJsb2FkZWQiLCJsZWZ0X2NoaWxkX2luZGV4IiwicGFyZW50X2luZGV4IiwibnVtX2JyYW5jaGVzIiwidCIsImluZGV4X2lzX2xlYWYiLCJpIiwibGVhZl9pbmRleCIsIm9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbiIsInJvdGF0ZWRfaW5kZXgiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwiZGF0YSIsImkkMCIsImEiLCJsZWZ0X2NoaWxkX2luZGV4JDAiLCJyaWdodCIsImxlZnRfaXNfbm9uZSIsInJpZ2h0X2lzX25vbmUiLCJjcmVhdGVfZXhuIiwibnVtX2xlYXZlcyIsInJlZHVjZSIsIm51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCIsInZhbGlkYXRlX2luZGV4IiwibGVuZ3RoIiwic2V0X2V4biIsImNoaWxkX2luZGV4IiwicGFyZW50IiwiZ2V0X2V4biIsInhfMDAyIiwiY29tcHV0ZV9leG4iLCJzZXhwX29mX3QiLCJzdGVwcyIsInIiLCJpbml0Iiwic2V4cF9vZl90JDAiLCJvZl9hXzAwMSIsInN0ZXBzXzAwNSIsImluaXRfMDAzIiwiYXJnXzAwNiIsImFyZzFfMDA4IiwiYXJnMF8wMDciLCJyZXMwXzAwOSIsInJlczFfMDEwIiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsImludmFyaWFudCIsImludmFyaWFudF9hIiwidmFsdWUiLCJ0JDAiLCJhdCIsInN0ZXBzJDEiLCJpbml0JDEiLCJzdGVwcyQwIiwiaW5pdCQwIiwidCIsImNvbnN0YW50IiwiY3JlYXRlX2V4biIsInRpbWUyIiwidGltZTEiLCJ4XzAxMSIsImNyZWF0ZV9mcm9tX3NlcXVlbmNlIiwiY3JlYXRlIiwibGVuIiwibGVuZ3RoIiwidCIsInNldCIsInNldF9leG4iLCJpIiwieCIsImdldCIsImlzX3NvbWUiLCJpc19ub25lIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpdGVyIiwiZiIsInYiLCJpdGVyaSIsImJsaXQiLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNyZWF0ZSIsImluZGV4IiwiZ2V0IiwidCIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInhfMDAxIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJzZXQiLCJibG9jayIsInNleHBfb2ZfdCIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJrZXlzX3dpdGhfdW51c2VkX2RhdGFfMDA2IiwiZW50cnlfYnlfa2V5XzAwNCIsImFyZ18wMDkiLCJibmRzXzAwMyIsImFyZ18wMDciLCJibmRzXzAwMyQwIiwiYXJnXzAwNSIsImJuZHNfMDAzJDEiLCJjcmVhdGUiLCJncm93dGhfYWxsb3dlZCIsInNpemUiLCJoYXNoYWJsZSIsImNyZWF0ZSQwIiwibSIsInNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSIsInQiLCJ0aHJlYWRfc2FmZV9mIiwicmVtb3ZlIiwia2V5IiwicmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VuIiwiZW50cnkiLCJnZXRfZW50cnkiLCJtZW0iLCJrZXlfaXNfdXNpbmdfc3BhY2UiLCJzZXRfZGF0YSIsImRhdGEiLCJjbGVhbnVwIiwicmVwbGFjZSIsImFkZF9leG4iLCJ4XzAxMCIsImZpbmQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsInYiLCJzZXhwX29mX3QiLCJjb25jYXQiLCJ0YWciLCJhcmcwXzAwMSIsImFyZzFfMDAyIiwic2V4cF9vZl9hIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsInJlYWxsb2MiLCJ0IiwibGVuIiwiYSIsIm5ld190IiwicmVhbGxvYyQwIiwicmVzMF8wMDUiLCJyZXMwXzAwNyIsImludmFyaWFudCIsInhfMDA5IiwiY3JlYXRlIiwiZiIsIm9mX2NvbXBhcmUiLCJvZl9lcXVhbCIsInBvbHlfZXF1YWwiLCJzaG91bGRfY3V0b2ZmIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiZiQwIiwiZiQxIiwiZXF1YWwiLCJ0MSIsInQyIiwiZjEiLCJmMiIsImYxJDAiLCJmMiQwIiwiZjEkMSIsImYyJDEiLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJ4XzAwNSIsInNleHBfb2ZfZG90IiwiYXR0cmlidXRlc18wMDkiLCJsYWJlbF8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsInNleHBfb2ZfdCQwIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJuZXdfMDE4IiwicHJpb3JfMDE2IiwiYXJnXzAxOSIsImJuZHNfMDE1IiwiYXJnXzAxNyIsImJuZHNfMDE1JDAiLCJpbmZvIiwiYXBwZW5kIiwicHJpb3IiLCJuZXckMCIsImRvdCIsImxhYmVsIiwiYXR0cmlidXRlcyIsImxhYmVsJDAiLCJ0b19kb3QiLCJpIiwicHJpb3IkMCIsIm5ldyQxIiwibGVmdCIsInJpZ2h0IiwiZXNjYXBlX2RvdF9zdHJpbmciLCJzIiwiZXNjYXBlX3JlY29yZF9sYWJlbCIsImMiLCJ0b19zdHJpbmciLCJuYW1lIiwiY29scyIsInYiLCJrIiwiYXR0cmlidXRlcyQwIiwiciIsIm5leHQiLCJub25lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJhZGQxIiwiY21wX2EiLCJhXzAwNyIsImFfMDA1IiwiYl8wMDgiLCJiXzAwNiIsIm4iLCJvZl9hXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwicmVzMV8wMTUiLCJvZl9hXzAxNyIsInByZXZpb3VzX3VwZGF0ZV9raW5kXzAyMSIsImNyZWF0ZWRfYXRfMDIzIiwiYXJnXzAyNCIsImJuZHNfMDE4IiwiYXJnXzAyMiIsImJuZHNfMDE4JDAiLCJhcmdfMDIwIiwiYm5kc18wMTgkMSIsImNyZWF0ZWRfYXQiLCJyZWFsbHlfcnVuIiwibm9kZV91cGRhdGUiLCJydW4iLCJub3ciLCJiYWNrdHJhY2VfMDA0IiwiZXhuXzAwMiIsImFyZ18wMDUiLCJibmRzXzAwMSIsImFyZ18wMDMiLCJibmRzXzAwMSQwIiwiZXhuIiwicmVyYWlzZV93aXRoX21lc3NhZ2UiLCJtc2ciLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwic2V4cF9vZl9ub2RlIiwieF8wMDMiLCJpc192YWxpZCIsImlzX25lY2Vzc2FyeSIsInR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIiwiYmluZCIsInhfMDA0Iiwid2F0Y2giLCJzZXRfYXQiLCJzZXRfc2V0X2F0IiwidmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIiwic2V0X3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphIiwidmFsdWUiLCJzZXRfdmFsdWUiLCJ3YXRjaCQwIiwic2V0X2F0JDAiLCJ2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsInZhbHVlJDAiLCJzZXhwX29mX3ZhciIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwic2V0X2F0XzAwNyIsIndhdGNoXzAwOSIsImJuZHNfMDAyIiwiYm5kc18wMDIkMCIsImFyZ18wMDYiLCJibmRzXzAwMiQxIiwiYXJnXzAwNCIsImJuZHNfMDAyJDIiLCJpbnZhcmlhbnRfYSIsInhfMDExIiwiY2hlY2siLCJ3YXRjaF9mdW4iLCJ0JDAiLCJzZXRfYXRfZnVuIiwidmFsdWVfZnVuIiwiaW5jcl9zdGF0ZSIsInBhcmFtIiwicmVzMF8wMTUiLCJsYXRlc3RfdmFsdWUiLCJwb3MiLCJyZXMwXzAwNCIsInJlczBfMDA2IiwibnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvIiwic2V0X251bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsIiwiZm9sZF92YWx1ZSIsInNldF9mb2xkX3ZhbHVlIiwiY2hpbGRyZW4iLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIiwiaW5pdCIsIm1haW4iLCJudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY28kMCIsImZvbGRfdmFsdWUkMCIsImNoaWxkcmVuJDAiLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzJDAiLCJpbml0JDAiLCJtYWluJDAiLCJvZl9hY2NfMDEwIiwiY2hpbGRyZW5fMDIyIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc18wIiwiaW5pdF8wMTQiLCJtYWluXzAxMiIsImZvbGRfdmFsdWVfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDExIiwiYXJnXzAyNSIsImJuZHNfMDExJDAiLCJhcmdfMDIzIiwiYm5kc18wMTEkMSIsImFyZ18wMjEiLCJibmRzXzAxMSQyIiwiYm5kc18wMTEkMyIsImJuZHNfMDExJDQiLCJhcmdfMDE1IiwiYm5kc18wMTEkNSIsImFyZ18wMTMiLCJibmRzXzAxMSQ2IiwiaW52YXJpYW50X2FjYyIsInhfMDI4IiwiZm9sZF92YWx1ZV9mdW4iLCJnb3QiLCJleHBlY3QiLCJzZXhwaWZpZXIiLCJjb21wYXJhdG9yIiwiYV8wMjkiLCJiXzAzMCIsImNoaWxkcmVuX2Z1biIsImNoaWxkIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc19mIiwiaW5pdF9mdW4iLCJtYWluX2Z1biIsInVwZGF0ZSQwIiwiZl9pbnZlcnNlIiwidXBkYXRlIiwiY29tcHV0ZSIsInJlc3VsdCIsImZvcmNlX2Z1bGxfY29tcHV0ZSIsImNoaWxkX2NoYW5nZWQiLCJ4XzAzMSIsImNoaWxkX2luZGV4Iiwib2xkX3ZhbHVlX29wdCIsImNoaWxkX2F0X2luZGV4IiwieF8wMDEiLCJudWxsJDAiLCJhbGFybV92YWx1ZSIsInNldF9hbGFybV92YWx1ZSIsImFsYXJtIiwic2V0X2FsYXJtIiwiYWxhcm1fdmFsdWUkMCIsImFsYXJtJDAiLCJtYWluXzAwMyIsImNoaWxkXzAwNSIsImV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fYyIsInZhbHVlXzAwOSIsInVwY29taW5nX3N0ZXBzXzAxMSIsImFsYXJtXzAxNyIsImFsYXJtX3ZhbHVlXzAxOSIsImNsb2NrXzAyMSIsImFyZ18wMTgiLCJhcmdfMDEyIiwiYXJnMV8wMTQiLCJyZXMxXzAxNiIsImJuZHNfMDAyJDMiLCJibmRzXzAwMiQ0IiwiYm5kc18wMDIkNSIsImJuZHNfMDAyJDYiLCJ4XzAyMyIsImFsYXJtX3ZhbHVlX2Z1biIsImFsYXJtX2Z1biIsImFkdmFuY2UiLCJ0byIsInN0ZXBzJDAiLCJhMSQwIiwiYTEiLCJzdGVwcyIsInN0ZXBzMiIsImEyIiwic3RlcF9hdCIsIm9mX2FjY18wMDIiLCJjaGlsZHJlbl8wMDgiLCJpbml0XzAwNCIsImFyZ18wMDkiLCJibmRzXzAwMyIsImFyZ18wMDciLCJibmRzXzAwMyQwIiwiYm5kc18wMDMkMSIsInhfMDEwIiwiYXRfMDA0IiwibWFpbl8wMDIiLCJhbGFybV8wMDYiLCJjbG9ja18wMDgiLCJibmRzXzAwMSQxIiwiYm5kc18wMDEkMiIsImludGVydmFsIiwiaW50ZXJ2YWwkMCIsImludGVydmFsXzAwNiIsImJhc2VfMDA0IiwiYWxhcm1fMDA4IiwiY2xvY2tfMDEwIiwiYXJnXzAxMSIsImJuZHNfMDAxJDMiLCJpbnRlcnZhbF9mdW4iLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJzZXRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwicmhzX3Njb3BlIiwic2V0X3Joc19zY29wZSIsImxoc19jaGFuZ2UiLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMkMCIsInJoc19zY29wZSQwIiwibGhzX2NoYW5nZSQwIiwib2ZfYl8wMDIiLCJtYWluXzAwNCIsImxoc19jaGFuZ2VfMDEwIiwibGhzXzAwOCIsInJoc18wMTIiLCJyaHNfc2NvcGVfMDE0IiwiYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXzAxNiIsImJuZHNfMDAzJDIiLCJibmRzXzAwMyQzIiwiYm5kc18wMDMkNCIsImJuZHNfMDAzJDUiLCJpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwibWF0Y2giLCJpbnZhcmlhbnRfYiIsInhfMDE4IiwiYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzX2Z1biIsIm5vZGUiLCJyaHNfc2NvcGVfZnVuIiwibGhzX2NoYW5nZV9mdW4iLCJwb3MkMCIsInBvcyQxIiwic2V4cF9vZl9lZGdlIiwiY2hpbGRfMDAzIiwiaW5kZXhfMDA3Iiwic2V4cF9vZl9wYWNrZWRfZWRnZSIsInJlczBfMDEwIiwib2ZfYV8wMTEiLCJjaGlsZHJlbl8wMTciLCJudW1fY2hpbGRyZW5fMDE5IiwiZm9yY2Vfc3RhbGVfMDIxIiwibnVtX2ludmFsaWRfY2hpbGRyZW5fMDIzIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3NfMDI1IiwiYXJnXzAyNiIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJibmRzXzAxMiQyIiwiYm5kc18wMTIkMyIsImFyZ18wMTYiLCJibmRzXzAxMiQ0IiwiYXJnXzAxNCIsImJuZHNfMDEyJDUiLCJudW1fY2hpbGRyZW4iLCJ1b3B0IiwiYV8wMjciLCJiXzAyOCIsImludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaCIsIm51bV9pbnZhbGlkX2NoaWxkcmVuIiwic2V4cGlmaWVyJDAiLCJjb21wYXJhdG9yJDAiLCJjb3VudF9pbnZhbGlkX2NoaWxkcmVuIiwiYV8wMzEiLCJiXzAzMiIsIm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIiwibWFrZV9zdGFsZSIsImluY3JfaW52YWxpZF9jaGlsZHJlbiIsImRlY3JfaW52YWxpZF9jaGlsZHJlbiIsImFkZF9jaGlsZF9lZGdlIiwicGFja2VkX2VkZ2UiLCJuZXdfbWF4IiwibmV3X2NoaWxkX2luZGV4Iiwic3dhcF9jaGlsZHJlbiIsImNoaWxkX2luZGV4MSIsImNoaWxkX2luZGV4MiIsImVkZ2UxIiwibGFzdF9jaGlsZF9lZGdlX2V4biIsImxhc3RfaW5kZXgiLCJyZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biIsInBhY2tlZF9lZGdlX29wdCIsImJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3MiLCJvYnNlcnZhYmlsaXR5X2NoYW5nZSIsImlzX25vd19vYnNlcnZhYmxlIiwicnVuX2VkZ2VfY2FsbGJhY2siLCJpc190b3AiLCJoZWlnaHQiLCJhZGRfbm9kZSIsImN1cnJlbnRfYnJhbmNoIiwic2V0X2N1cnJlbnRfYnJhbmNoIiwidGVzdF9jaGFuZ2UiLCJjdXJyZW50X2JyYW5jaCQwIiwidGVzdF9jaGFuZ2UkMCIsInRlc3RfY2hhbmdlXzAwNyIsInRlc3RfMDA1IiwiY3VycmVudF9icmFuY2hfMDA5IiwiZWxzZV8wMTMiLCJ0aGVuXzAxMSIsInhfMDE1IiwiY3VycmVudF9icmFuY2hfZnVuIiwidGVzdF9jaGFuZ2VfZnVuIiwibGhzX2NoYW5nZV8wMDciLCJsaHNfMDA1IiwicmhzXzAwOSIsImJlZm9yZSIsImJlZm9yZSQwIiwiY2xvY2tfMDExIiwidmFsdWVfYXRfMDA5IiwiYmVmb3JlXzAwNyIsImF0XzAwNSIsInhfMDEzIiwiYmVmb3JlX2Z1biIsImFyZzBfMDAyIiwiYXJnMF8wMDQiLCJhcmcwXzAwNiIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMl8wNDAiLCJhcmcxXzAzOSIsInJlczBfMDQxIiwicmVzMV8wNDIiLCJyZXMyXzA0MyIsImFyZzNfMDQ3IiwiYXJnMl8wNDYiLCJhcmcxXzA0NSIsInJlczBfMDQ4IiwicmVzMV8wNDkiLCJyZXMyXzA1MCIsInJlczNfMDUxIiwiYXJnNF8wNTYiLCJhcmczXzA1NSIsImFyZzJfMDU0IiwiYXJnMV8wNTMiLCJyZXMwXzA1NyIsInJlczFfMDU4IiwicmVzMl8wNTkiLCJyZXMzXzA2MCIsInJlczRfMDYxIiwiYXJnNV8wNjciLCJhcmc0XzA2NiIsImFyZzNfMDY1IiwiYXJnMl8wNjQiLCJhcmcxXzA2MyIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMyXzA3MCIsInJlczNfMDcxIiwicmVzNF8wNzIiLCJyZXM1XzA3MyIsImFyZzZfMDgwIiwiYXJnNV8wNzkiLCJhcmc0XzA3OCIsImFyZzNfMDc3IiwiYXJnMl8wNzYiLCJhcmcxXzA3NSIsInJlczBfMDgxIiwicmVzMV8wODIiLCJyZXMyXzA4MyIsInJlczNfMDg0IiwicmVzNF8wODUiLCJyZXM1XzA4NiIsInJlczZfMDg3IiwiYXJnN18wOTUiLCJhcmc2XzA5NCIsImFyZzVfMDkzIiwiYXJnNF8wOTIiLCJhcmczXzA5MSIsImFyZzJfMDkwIiwiYXJnMV8wODkiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwicmVzMl8wOTgiLCJyZXMzXzA5OSIsInJlczRfMTAwIiwicmVzNV8xMDEiLCJyZXM2XzEwMiIsInJlczdfMTAzIiwiYXJnOF8xMTIiLCJhcmc3XzExMSIsImFyZzZfMTEwIiwiYXJnNV8xMDkiLCJhcmc0XzEwOCIsImFyZzNfMTA3IiwiYXJnMl8xMDYiLCJhcmcxXzEwNSIsInJlczBfMTEzIiwicmVzMV8xMTQiLCJyZXMyXzExNSIsInJlczNfMTE2IiwicmVzNF8xMTciLCJyZXM1XzExOCIsInJlczZfMTE5IiwicmVzN18xMjAiLCJyZXM4XzEyMSIsImFyZzlfMTMxIiwiYXJnOF8xMzAiLCJhcmc3XzEyOSIsImFyZzZfMTI4IiwiYXJnNV8xMjciLCJhcmc0XzEyNiIsImFyZzNfMTI1IiwiYXJnMl8xMjQiLCJhcmcxXzEyMyIsInJlczBfMTMyIiwicmVzMV8xMzMiLCJyZXMyXzEzNCIsInJlczNfMTM1IiwicmVzNF8xMzYiLCJyZXM1XzEzNyIsInJlczZfMTM4IiwicmVzN18xMzkiLCJyZXM4XzE0MCIsInJlczlfMTQxIiwiYXJnMTBfMTUyIiwiYXJnOV8xNTEiLCJhcmc4XzE1MCIsImFyZzdfMTQ5IiwiYXJnNl8xNDgiLCJhcmc1XzE0NyIsImFyZzRfMTQ2IiwiYXJnM18xNDUiLCJhcmcyXzE0NCIsImFyZzFfMTQzIiwicmVzMF8xNTMiLCJyZXMxXzE1NCIsInJlczJfMTU1IiwicmVzM18xNTYiLCJyZXM0XzE1NyIsInJlczVfMTU4IiwicmVzNl8xNTkiLCJyZXM3XzE2MCIsInJlczhfMTYxIiwicmVzOV8xNjIiLCJyZXMxMF8xNjMiLCJhcmcxMV8xNzUiLCJhcmcxMF8xNzQiLCJhcmc5XzE3MyIsImFyZzhfMTcyIiwiYXJnN18xNzEiLCJhcmc2XzE3MCIsImFyZzVfMTY5IiwiYXJnNF8xNjgiLCJhcmczXzE2NyIsImFyZzJfMTY2IiwiYXJnMV8xNjUiLCJyZXMwXzE3NiIsInJlczFfMTc3IiwicmVzMl8xNzgiLCJyZXMzXzE3OSIsInJlczRfMTgwIiwicmVzNV8xODEiLCJyZXM2XzE4MiIsInJlczdfMTgzIiwicmVzOF8xODQiLCJyZXM5XzE4NSIsInJlczEwXzE4NiIsInJlczExXzE4NyIsImFyZzEyXzIwMCIsImFyZzExXzE5OSIsImFyZzEwXzE5OCIsImFyZzlfMTk3IiwiYXJnOF8xOTYiLCJhcmc3XzE5NSIsImFyZzZfMTk0IiwiYXJnNV8xOTMiLCJhcmc0XzE5MiIsImFyZzNfMTkxIiwiYXJnMl8xOTAiLCJhcmcxXzE4OSIsInJlczBfMjAxIiwicmVzMV8yMDIiLCJyZXMyXzIwMyIsInJlczNfMjA0IiwicmVzNF8yMDUiLCJyZXM1XzIwNiIsInJlczZfMjA3IiwicmVzN18yMDgiLCJyZXM4XzIwOSIsInJlczlfMjEwIiwicmVzMTBfMjExIiwicmVzMTFfMjEyIiwicmVzMTJfMjEzIiwiYXJnMTNfMjI3IiwiYXJnMTJfMjI2IiwiYXJnMTFfMjI1IiwiYXJnMTBfMjI0IiwiYXJnOV8yMjMiLCJhcmc4XzIyMiIsImFyZzdfMjIxIiwiYXJnNl8yMjAiLCJhcmc1XzIxOSIsImFyZzRfMjE4IiwiYXJnM18yMTciLCJhcmcyXzIxNiIsImFyZzFfMjE1IiwicmVzMF8yMjgiLCJyZXMxXzIyOSIsInJlczJfMjMwIiwicmVzM18yMzEiLCJyZXM0XzIzMiIsInJlczVfMjMzIiwicmVzNl8yMzQiLCJyZXM3XzIzNSIsInJlczhfMjM2IiwicmVzOV8yMzciLCJyZXMxMF8yMzgiLCJyZXMxMV8yMzkiLCJyZXMxMl8yNDAiLCJyZXMxM18yNDEiLCJhcmcxNF8yNTYiLCJhcmcxM18yNTUiLCJhcmcxMl8yNTQiLCJhcmcxMV8yNTMiLCJhcmcxMF8yNTIiLCJhcmc5XzI1MSIsImFyZzhfMjUwIiwiYXJnN18yNDkiLCJhcmc2XzI0OCIsImFyZzVfMjQ3IiwiYXJnNF8yNDYiLCJhcmczXzI0NSIsImFyZzJfMjQ0IiwiYXJnMV8yNDMiLCJyZXMwXzI1NyIsInJlczFfMjU4IiwicmVzMl8yNTkiLCJyZXMzXzI2MCIsInJlczRfMjYxIiwicmVzNV8yNjIiLCJyZXM2XzI2MyIsInJlczdfMjY0IiwicmVzOF8yNjUiLCJyZXM5XzI2NiIsInJlczEwXzI2NyIsInJlczExXzI2OCIsInJlczEyXzI2OSIsInJlczEzXzI3MCIsInJlczE0XzI3MSIsImFyZzE1XzI4NyIsImFyZzE0XzI4NiIsImFyZzEzXzI4NSIsImFyZzEyXzI4NCIsImFyZzExXzI4MyIsImFyZzEwXzI4MiIsImFyZzlfMjgxIiwiYXJnOF8yODAiLCJhcmc3XzI3OSIsImFyZzZfMjc4IiwiYXJnNV8yNzciLCJhcmc0XzI3NiIsImFyZzNfMjc1IiwiYXJnMl8yNzQiLCJhcmcxXzI3MyIsInJlczBfMjg4IiwicmVzMV8yODkiLCJyZXMyXzI5MCIsInJlczNfMjkxIiwicmVzNF8yOTIiLCJyZXM1XzI5MyIsInJlczZfMjk0IiwicmVzN18yOTUiLCJyZXM4XzI5NiIsInJlczlfMjk3IiwicmVzMTBfMjk4IiwicmVzMTFfMjk5IiwicmVzMTJfMzAwIiwicmVzMTNfMzAxIiwicmVzMTRfMzAyIiwicmVzMTVfMzAzIiwiYXJyYXlfZm9sZCIsImF0IiwiYXRfaW50ZXJ2YWxzIiwiYmluZCQwIiwiZSIsImZyZWV6ZSIsImlmX3RoZW5fZWxzZSIsImlmX3RoZW5fZWxzZSQwIiwiam9pbiIsImpvaW4kMCIsInNuYXBzaG90Iiwic3RlcF9mdW5jdGlvbl9ub2RlIiwidW5vcmRlcmVkX2FycmF5X2ZvbGQiLCJ2YXIkMCIsImluaXRpYWxfbnVtX2NoaWxkcmVuIiwiaXRlcmlfY2hpbGRyZW4iLCJyaHMiLCJpJDAiLCJ0ZXN0IiwibGhzIiwicmhzJDAiLCJub2RlMCIsImNoaWxkJDAiLCJjaGlsZHJlbiQxIiwiaSQxIiwibm9kZTEiLCJub2RlMCQwIiwibm9kZTIiLCJub2RlMSQwIiwibm9kZTAkMSIsIm5vZGUzIiwibm9kZTIkMCIsIm5vZGUxJDEiLCJub2RlMCQyIiwibm9kZTQiLCJub2RlMyQwIiwibm9kZTIkMSIsIm5vZGUxJDIiLCJub2RlMCQzIiwibm9kZTUiLCJub2RlNCQwIiwibm9kZTMkMSIsIm5vZGUyJDIiLCJub2RlMSQzIiwibm9kZTAkNCIsIm5vZGU2Iiwibm9kZTUkMCIsIm5vZGU0JDEiLCJub2RlMyQyIiwibm9kZTIkMyIsIm5vZGUxJDQiLCJub2RlMCQ1Iiwibm9kZTciLCJub2RlNiQwIiwibm9kZTUkMSIsIm5vZGU0JDIiLCJub2RlMyQzIiwibm9kZTIkNCIsIm5vZGUxJDUiLCJub2RlMCQ2Iiwibm9kZTgiLCJub2RlNyQwIiwibm9kZTYkMSIsIm5vZGU1JDIiLCJub2RlNCQzIiwibm9kZTMkNCIsIm5vZGUyJDUiLCJub2RlMSQ2Iiwibm9kZTAkNyIsIm5vZGU5Iiwibm9kZTgkMCIsIm5vZGU3JDEiLCJub2RlNiQyIiwibm9kZTUkMyIsIm5vZGU0JDQiLCJub2RlMyQ1Iiwibm9kZTIkNiIsIm5vZGUxJDciLCJub2RlMCQ4Iiwibm9kZTEwIiwibm9kZTkkMCIsIm5vZGU4JDEiLCJub2RlNyQyIiwibm9kZTYkMyIsIm5vZGU1JDQiLCJub2RlNCQ1Iiwibm9kZTMkNiIsIm5vZGUyJDciLCJub2RlMSQ4Iiwibm9kZTAkOSIsIm5vZGUxMSIsIm5vZGUxMCQwIiwibm9kZTkkMSIsIm5vZGU4JDIiLCJub2RlNyQzIiwibm9kZTYkNCIsIm5vZGU1JDUiLCJub2RlNCQ2Iiwibm9kZTMkNyIsIm5vZGUyJDgiLCJub2RlMSQ5Iiwibm9kZTAkMTAiLCJub2RlMTIiLCJub2RlMTEkMCIsIm5vZGUxMCQxIiwibm9kZTkkMiIsIm5vZGU4JDMiLCJub2RlNyQ0Iiwibm9kZTYkNSIsIm5vZGU1JDYiLCJub2RlNCQ3Iiwibm9kZTMkOCIsIm5vZGUyJDkiLCJub2RlMSQxMCIsIm5vZGUwJDExIiwibm9kZTEzIiwibm9kZTEyJDAiLCJub2RlMTEkMSIsIm5vZGUxMCQyIiwibm9kZTkkMyIsIm5vZGU4JDQiLCJub2RlNyQ1Iiwibm9kZTYkNiIsIm5vZGU1JDciLCJub2RlNCQ4Iiwibm9kZTMkOSIsIm5vZGUyJDEwIiwibm9kZTEkMTEiLCJub2RlMCQxMiIsIm5vZGUxNCIsIm5vZGUxMyQwIiwibm9kZTEyJDEiLCJub2RlMTEkMiIsIm5vZGUxMCQzIiwibm9kZTkkNCIsIm5vZGU4JDUiLCJub2RlNyQ2Iiwibm9kZTYkNyIsIm5vZGU1JDgiLCJub2RlNCQ5Iiwibm9kZTMkMTAiLCJub2RlMiQxMSIsIm5vZGUxJDEyIiwibm9kZTAkMTMiLCJzbG93X2dldF9jaGlsZCIsImluZGV4IiwiYXJnMV8zMDYiLCJhcmcwXzMwNSIsInJlczBfMzA3IiwicmVzMV8zMDgiLCJwb3MkNCIsInBvcyQzIiwicG9zJDIiLCJteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW4iLCJzZXRfbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2EiLCJteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW4iLCJzZXRfbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2EiLCJvYnNlcnZlcnMiLCJzZXRfb2JzZXJ2ZXJzIiwic2V0X29sZF92YWx1ZV9vcHQiLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAiLCJzZXRfbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWEiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCIsInNldF9oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaCIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCIsInByZXZfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfcHJldl9pbl9yZWNvbXB1dGVfaGVhcCIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCIsInNldF9oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfaGVpZ2h0IiwibmV4dF9ub2RlX2luX3NhbWVfc2NvcGUiLCJzZXRfbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUiLCJjcmVhdGVkX2luIiwic2V0X2NyZWF0ZWRfaW4iLCJwYXJlbnQwIiwic2V0X3BhcmVudDAiLCJwYXJlbnQxX2FuZF9iZXlvbmQiLCJzZXRfcGFyZW50MV9hbmRfYmV5b25kIiwibnVtX3BhcmVudHMiLCJzZXRfbnVtX3BhcmVudHMiLCJudW1fb25fdXBkYXRlX2hhbmRsZXJzIiwic2V0X251bV9vbl91cGRhdGVfaGFuZGxlcnMiLCJjaGFuZ2VkX2F0Iiwic2V0X2NoYW5nZWRfYXQiLCJjdXRvZmYiLCJzZXRfY3V0b2ZmIiwia2luZCIsInNldF9raW5kIiwidmFsdWVfb3B0Iiwic2V0X3ZhbHVlX29wdCIsInJlY29tcHV0ZWRfYXQiLCJzZXRfcmVjb21wdXRlZF9hdCIsImlkIiwibXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luJDAiLCJteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW4kMCIsIm9ic2VydmVycyQwIiwib2xkX3ZhbHVlX29wdCQwIiwibmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwJDAiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCQwIiwibmV4dF9pbl9yZWNvbXB1dGVfaGVhcCQwIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcCQwIiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwJDAiLCJoZWlnaHQkMCIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlJDAiLCJjcmVhdGVkX2luJDAiLCJwYXJlbnQwJDAiLCJwYXJlbnQxX2FuZF9iZXlvbmQkMCIsIm51bV9wYXJlbnRzJDAiLCJudW1fb25fdXBkYXRlX2hhbmRsZXJzJDAiLCJjaGFuZ2VkX2F0JDAiLCJjdXRvZmYkMCIsImtpbmQkMCIsInZhbHVlX29wdCQwIiwicmVjb21wdXRlZF9hdCQwIiwiaWQkMCIsInN0YXRlXzAwNSIsImlkXzAwMyIsInJlY29tcHV0ZWRfYXRfMDA3IiwidmFsdWVfb3B0XzAwOSIsImtpbmRfMDExIiwiY3V0b2ZmXzAxMyIsImNoYW5nZWRfYXRfMDE1IiwibnVtX29uX3VwZGF0ZV9oYW5kbGVyc18wMTciLCJudW1fcGFyZW50c18wMTkiLCJwYXJlbnQxX2FuZF9iZXlvbmRfMDIxIiwicGFyZW50MF8wMjMiLCJjcmVhdGVkX2luXzAyNSIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXzAyNyIsImhlaWdodF8wMjkiLCJoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBfMDMxIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcF8wMzMiLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwXzAzNSIsImhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXyIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF8wMyIsIm9sZF92YWx1ZV9vcHRfMDQxIiwib2JzZXJ2ZXJzXzA0MyIsImlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aSIsIm9uX3VwZGF0ZV9oYW5kbGVyc18wNDciLCJmb3JjZV9uZWNlc3NhcnlfMDUzIiwidXNlcl9pbmZvXzA1NSIsImNyZWF0aW9uX2JhY2t0cmFjZV8wNTciLCJhcmdfMDU4IiwiYXJnXzA1NiIsImFyZ18wNTQiLCJhcmdfMDUyIiwiYXJnXzA1MCIsImFyZ18wNDgiLCJhcmdfMDQ2IiwiYXJnXzA0NCIsImFyZ18wNDIiLCJibmRzXzAwMiQ3IiwiYXJnXzA0MCIsImJuZHNfMDAyJDgiLCJhcmdfMDM4IiwiYm5kc18wMDIkOSIsImFyZ18wMzYiLCJibmRzXzAwMiQxMCIsImFyZ18wMzQiLCJibmRzXzAwMiQxMSIsImFyZ18wMzIiLCJibmRzXzAwMiQxMiIsImFyZ18wMzAiLCJibmRzXzAwMiQxMyIsImFyZ18wMjgiLCJibmRzXzAwMiQxNCIsImJuZHNfMDAyJDE1IiwiYm5kc18wMDIkMTYiLCJibmRzXzAwMiQxNyIsImJuZHNfMDAyJDE4IiwiYm5kc18wMDIkMTkiLCJibmRzXzAwMiQyMCIsImJuZHNfMDAyJDIxIiwiYm5kc18wMDIkMjIiLCJibmRzXzAwMiQyMyIsImJuZHNfMDAyJDI0IiwiYm5kc18wMDIkMjUiLCJibmRzXzAwMiQyNiIsInNhbWUiLCJ1c2VyX2luZm8iLCJvdGhlciIsInNldF91c2VyX2luZm8iLCJhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IiwiYXR0cnMiLCJlZGdlX2lzX3N0YWxlIiwicGFyZW50IiwiaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpIiwiaXNfc3RhbGUiLCJmb3JjZV9zdGFsZSIsImZvcmNlX3N0YWxlJDAiLCJuZWVkc190b19iZV9jb21wdXRlZCIsImlzX2luX3JlY29tcHV0ZV9oZWFwIiwiaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCIsImdldF9wYXJlbnQiLCJpdGVyaV9wYXJlbnRzIiwiaGFzX2NoaWxkIiwiaGFzIiwiaGFzX3BhcmVudCIsInBhcmVudCQwIiwic2hvdWxkX2JlX2ludmFsaWRhdGVkIiwibGhzJDAiLCJmb2xkX29ic2VydmVycyIsImFjIiwib2JzZXJ2ZXIiLCJ4XzA1OSIsInQxJDAiLCJhXzA2MCIsImJfMDYxIiwiYV8wNzAiLCJiXzA3MSIsInBhcmVudF9pbmRleCIsIngiLCJhXzA2OCIsImJfMDY5Iiwib2JzZXJ2ZXJzX2Z1biIsInN0YXRlIiwib2JzZXJ2aW5nIiwib2xkX3ZhbHVlX29wdF9mdW4iLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBfZnUiLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwX2Z1biIsInByZXZfaW5fcmVjb21wdXRlX2hlYXBfZnVuIiwicHJldiIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF9mdW4iLCJoZWlnaHRfZnVuIiwibmV4dF9ub2RlX2luX3NhbWVfc2NvcGVfZnVuIiwiY3JlYXRlZF9pbl9mdW4iLCJwYXJlbnQwX2Z1biIsImFfMDY2IiwiYl8wNjciLCJwYXJlbnQxX2FuZF9iZXlvbmRfZnVuIiwiYV8wNjQiLCJiXzA2NSIsIm51bV9wYXJlbnRzX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVycyIsIm51bV9vbl91cGRhdGVfaGFuZGxlcnNfZnVuIiwiZXRhIiwiYV8wNjIiLCJiXzA2MyIsImNoYW5nZWRfYXRfZnVuIiwiY3V0b2ZmX2Z1biIsImtpbmRfZnVuIiwidmFsdWVfb3B0X2Z1biIsInJlY29tcHV0ZWRfYXRfZnVuIiwiaWRfZnVuIiwidW5zYWZlX3ZhbHVlIiwidmFsdWVfZXhuIiwieF8wNzIiLCJnZXRfY3V0b2ZmIiwic2V0X2N1dG9mZiQwIiwiaXNfY29uc3QiLCJvbl91cGRhdGUiLCJvbl91cGRhdGVfaGFuZGxlciIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnMiLCJyZXN0JDAiLCJvbl91cGRhdGVfaGFuZGxlciQwIiwiciQwIiwiciQxIiwicmVzdCIsInNldF9raW5kJDAiLCJtYXhfbnVtX3BhcmVudHMiLCJzZXRfcGFyZW50IiwibGluayIsImFkZF9wYXJlbnQiLCJuZXdfbWF4X251bV9wYXJlbnRzIiwibWF4X251bV9jaGlsZHJlbiIsIm5ld19tYXhfbnVtX2NoaWxkcmVuIiwicmVtb3ZlX3BhcmVudCIsImxhc3RfcGFyZW50X2luZGV4Iiwic3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZCIsImNoaWxkMSIsImNoaWxkMiIsInQyJDAiLCJpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxIiwiaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMiIsInhfMDczIiwiaW52YXJpYW50JDAiLCJpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIiwidHMiLCJzZWVuIiwiaXRlcl9kZXNjZW5kYW50cyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXokMCIsInNhdmVfZG90Iiwib3V0Iiwibm9kZV9uYW1lIiwiYmluZF9lZGdlcyIsImRlZmF1bHQkMCIsImZyb20iLCJzYXZlX2RvdF90b19maWxlIiwiZmlsZSIsImZvbGQiLCJwYWNrZWRfbm9kZSIsIml0ZXIiLCJsZW5ndGgiLCJ4XzA3NCIsIm5vZGVzX2J5X2hlaWdodCIsInNldF9ub2Rlc19ieV9oZWlnaHQiLCJoZWlnaHRfbG93ZXJfYm91bmQiLCJzZXRfaGVpZ2h0X2xvd2VyX2JvdW5kIiwic2V0X2xlbmd0aCIsIm5vZGVzX2J5X2hlaWdodCQwIiwiaGVpZ2h0X2xvd2VyX2JvdW5kJDAiLCJsZW5ndGgkMCIsImxlbmd0aF8wMDMiLCJoZWlnaHRfbG93ZXJfYm91bmRfMDA1Iiwibm9kZXNfYnlfaGVpZ2h0XzAwNyIsIm1heF9ub25lbXB0eV9pbmRleCIsImwiLCJtYXhfaGVpZ2h0X2FsbG93ZWQiLCJub2Rlc19ieV9oZWlnaHRfZnVuIiwiaGVpZ2h0X2xvd2VyX2JvdW5kX2Z1biIsImxlbmd0aF9mdW4iLCJhY3R1YWxfbGVuZ3RoIiwiYV8wMDkiLCJiXzAxMCIsImNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQiLCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkIiwic3JjIiwiZHN0Iiwic2V0X3ByZXYiLCJ1bmxpbmsiLCJhZGQiLCJyZW1vdmUiLCJ4XzAxMiIsImluY3JlYXNlX2hlaWdodCIsIm1pbl9oZWlnaHQiLCJyZW1vdmVfbWluIiwibm9kZSQwIiwibm9kZXMiLCJtYXhfaGVpZ2h0X3NlZW4iLCJzZXRfbWF4X2hlaWdodF9zZWVuIiwibWF4X2hlaWdodF9zZWVuJDAiLCJtYXhfaGVpZ2h0X3NlZW5fMDA3Iiwibm9kZXNfYnlfaGVpZ2h0XzAwOSIsImlzX2VtcHR5IiwibWF4X2hlaWdodF9zZWVuX2Z1biIsImNyZWF0ZSQwIiwidl8wMTEiLCJhcmcxXzAxOSIsInZfMDE2IiwicmVzMF8wMjAiLCJ2XzAxNyIsInJlczFfMDIxIiwiZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCIsIm9yaWdpbmFsX2NoaWxkIiwib3JpZ2luYWxfcGFyZW50IiwiYXJnMV8wMjUiLCJ2XzAyMiIsInJlczBfMDI2Iiwidl8wMjMiLCJyZXMxXzAyNyIsImFkanVzdF9oZWlnaHRzIiwicmVjb21wdXRlX2hlYXAiLCJub2RlX29uX3JocyIsImFjdGlvbiIsImFjdGlvbiQwIiwiYWN0aW9uXzAxMCIsIm5leHRfZmlyZWRfMDEyIiwiYm5kc18wMDkiLCJyZXMwXzAwMiIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYm5kc18wMDkkMCIsImFjdGlvbl9mdW4iLCJuZXh0X2luX2FsbCIsInNldF9wcmV2X2luX2FsbCIsIm5leHRfaW5fb2JzZXJ2aW5nIiwic2V0X25leHRfaW5fb2JzZXJ2aW5nIiwicHJldl9pbl9vYnNlcnZpbmciLCJzZXRfcHJldl9pbl9vYnNlcnZpbmciLCJuZXh0X2luX2FsbCQwIiwic2V0X25leHRfaW5fYWxsIiwicHJldl9pbl9hbGwiLCJzZXRfcHJldl9pbl9hbGwkMCIsInNldF9vbl91cGRhdGVfaGFuZGxlcnMiLCJuZXh0X2luX29ic2VydmluZyQwIiwicHJldl9pbl9vYnNlcnZpbmckMCIsIm5leHRfaW5fYWxsJDEiLCJwcmV2X2luX2FsbCQwIiwib25fdXBkYXRlX2hhbmRsZXJzJDAiLCJvYnNlcnZpbmckMCIsInNleHBfb2ZfaW50ZXJuYWxfb2JzZXJ2ZXIiLCJvZl9hXzAwMiIsInN0YXRlXzAwNCIsIm9ic2VydmluZ18wMDYiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDA4IiwicHJldl9pbl9hbGxfMDEwIiwibmV4dF9pbl9hbGxfMDEyIiwicHJldl9pbl9vYnNlcnZpbmdfMDE0IiwibmV4dF9pbl9vYnNlcnZpbmdfMDE2IiwidXNlX2lzX2FsbG93ZWQiLCJ4XzAyMCIsIm5leHRfaW5fb2JzZXJ2aW5nX2Z1biIsInByZXZfaW5fb2JzZXJ2aW5nX2Z1biIsIm5leHRfaW5fYWxsX2Z1biIsInByZXZfaW5fYWxsX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvYnNlcnZpbmdfZnVuIiwieF8wMjIiLCJ4XzAyMSIsIm9uX3VwZGF0ZV9leG4iLCJ4XzAyNCIsInByZXYkMCIsIm5leHQkMCIsInhfMDI1IiwieF8wMDIiLCJuYW1lcyIsIm5hbWVzJDAiLCJuYW1lcyQxIiwiZXJyb3Jfc291cmNlXzA3OSIsInNleHBfb2Zfc3RhdHVzIiwiYXJnMV8wMDQiLCJyZXMxXzAwNiIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiIsInNldF9leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdSIsImN1cnJlbnRseV9ydW5uaW5nX25vZGUiLCJzZXRfY3VycmVudGx5X3J1bm5pbmdfbm9kZSIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiQwIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZSQwIiwibWFrZV9jcmVhdG9yIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW4kMSIsImFjYyIsIm1hcCIsIm1hcF9wb2x5IiwicmVjb3JkIiwiZm9yX2FsbCIsImV4aXN0cyIsInRvX2xpc3QiLCJpdGVyJDAiLCJmb2xkJDAiLCJmb3JfYWxsJDAiLCJleGlzdHMkMCIsInRvX2xpc3QkMCIsIm1hcCQwIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyIsInJlY29yZCQwIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZV8wMDgiLCJibmRzXzAwNyIsImJuZHNfMDA3JDAiLCJzZXhwX29mX3QkMSIsIm51bV92YXJfc2V0cyIsInNldF9udW1fdmFyX3NldHMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8iLCJzZXRfbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMCIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlYyQwIiwibnVtX25vZGVzX3JlY29tcHV0ZWQiLCJzZXRfbnVtX25vZGVzX3JlY29tcHV0ZWQiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWQiLCJzZXRfbnVtX25vZGVzX2ludmFsaWRhdGVkIiwibnVtX25vZGVzX2NyZWF0ZWQiLCJzZXRfbnVtX25vZGVzX2NyZWF0ZWQiLCJudW1fbm9kZXNfY2hhbmdlZCIsInNldF9udW1fbm9kZXNfY2hhbmdlZCIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkiLCJzZXRfbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2EiLCJudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSIsInNldF9udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UiLCJzZXRfa2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmEiLCJ3ZWFrX2hhc2h0YmxzIiwib25seV9pbl9kZWJ1ZyIsInNldF9vbmx5X2luX2RlYnVnIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24iLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24iLCJkaXNhbGxvd2VkX29ic2VydmVycyIsIm5ld19vYnNlcnZlcnMiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzIiwiYWxsX29ic2VydmVycyIsInNldF9hbGxfb2JzZXJ2ZXJzIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnMiLCJzZXRfbnVtX2FjdGl2ZV9vYnNlcnZlcnMiLCJwcm9wYWdhdGVfaW52YWxpZGl0eSIsImFkanVzdF9oZWlnaHRzX2hlYXAiLCJjdXJyZW50X3Njb3BlIiwic2V0X2N1cnJlbnRfc2NvcGUiLCJzdGFiaWxpemF0aW9uX251bSIsInNldF9zdGFiaWxpemF0aW9uX251bSIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCIsInN0YXR1cyIsInNldF9zdGF0dXMiLCJudW1fdmFyX3NldHMkMCIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQxIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDIiLCJudW1fbm9kZXNfcmVjb21wdXRlZCQwIiwibnVtX25vZGVzX2ludmFsaWRhdGVkJDAiLCJudW1fbm9kZXNfY3JlYXRlZCQwIiwibnVtX25vZGVzX2NoYW5nZWQkMCIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkkMCIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5JDAiLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlJDAiLCJ3ZWFrX2hhc2h0YmxzJDAiLCJvbmx5X2luX2RlYnVnJDAiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzJDAiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiQwIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uJDAiLCJkaXNhbGxvd2VkX29ic2VydmVycyQwIiwibmV3X29ic2VydmVycyQwIiwiZmluYWxpemVkX29ic2VydmVycyQwIiwiYWxsX29ic2VydmVycyQwIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnMkMCIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5JDAiLCJhZGp1c3RfaGVpZ2h0c19oZWFwJDAiLCJyZWNvbXB1dGVfaGVhcCQwIiwiY3VycmVudF9zY29wZSQwIiwic3RhYmlsaXphdGlvbl9udW0kMCIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCQwIiwic3RhdHVzJDAiLCJtYWtlX2NyZWF0b3IkMCIsInN0YXR1c19mdW4iLCJzdGFiaWxpemF0aW9uX251bV9mdW4iLCJjdXJyZW50X3Njb3BlX2Z1biIsInJlY29tcHV0ZV9oZWFwX2Z1biIsImFkanVzdF9oZWlnaHRzX2hlYXBfZnVuIiwicHJvcGFnYXRlX2ludmFsaWRpdHlfZnVuIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnNfZnVuIiwiYWxsX29ic2VydmVyc19mdW4iLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzX2Z1biIsIm5ld19vYnNlcnZlcnNfZnVuIiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfZnVuIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uX2Z1biIsImhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uX2Z1biIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfZnVuIiwib25seV9pbl9kZWJ1Z19mdW4iLCJ3ZWFrX2hhc2h0YmxzX2Z1biIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2VfZiIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5X2Z1biIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnlfZiIsIm51bV9ub2Rlc19jaGFuZ2VkX2Z1biIsIm51bV9ub2Rlc19jcmVhdGVkX2Z1biIsIm51bV9ub2Rlc19pbnZhbGlkYXRlZF9mdW4iLCJudW1fbm9kZXNfcmVjb21wdXRlZF9mdW4iLCJudW1fdmFyX3NldHNfZnVuIiwic3RhdHVzX2dlbiIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCQxIiwiY29tcGlsZV9hY2MkMiIsInN0YWJpbGl6YXRpb25fbnVtX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJjdXJyZW50X3Njb3BlX2dlbiIsImNvbXBpbGVfYWNjJDQiLCJyZWNvbXB1dGVfaGVhcF9nZW4iLCJjb21waWxlX2FjYyQ1IiwiYWRqdXN0X2hlaWdodHNfaGVhcF9nZW4iLCJjb21waWxlX2FjYyQ2IiwicHJvcGFnYXRlX2ludmFsaWRpdHlfZ2VuIiwiY29tcGlsZV9hY2MkNyIsIm51bV9hY3RpdmVfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJhbGxfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDkiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDEwIiwibmV3X29ic2VydmVyc19nZW4iLCJjb21waWxlX2FjYyQxMSIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDEyIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uX2dlbiIsImNvbXBpbGVfYWNjJDEzIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzX2dlbiIsImNvbXBpbGVfYWNjJDE1Iiwib25seV9pbl9kZWJ1Z19nZW4iLCJjb21waWxlX2FjYyQxNiIsIndlYWtfaGFzaHRibHNfZ2VuIiwiY29tcGlsZV9hY2MkMTciLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlX2ciLCJjb21waWxlX2FjYyQxOCIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5X2dlbiIsImNvbXBpbGVfYWNjJDE5IiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV9nIiwiY29tcGlsZV9hY2MkMjAiLCJudW1fbm9kZXNfY2hhbmdlZF9nZW4iLCJjb21waWxlX2FjYyQyMSIsIm51bV9ub2Rlc19jcmVhdGVkX2dlbiIsImNvbXBpbGVfYWNjJDIyIiwibnVtX25vZGVzX2ludmFsaWRhdGVkX2dlbiIsImNvbXBpbGVfYWNjJDIzIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjQiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMyIsImNvbXBpbGVfYWNjJDI1IiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDQiLCJjb21waWxlX2FjYyQyNiIsIm51bV92YXJfc2V0c19nZW4iLCJjcmVhdGUkMSIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQyIiwic3RhdHVzXzAxNSIsInN0YWJpbGl6YXRpb25fbnVtXzAxOSIsImN1cnJlbnRfc2NvcGVfMDIxIiwicHJvcGFnYXRlX2ludmFsaWRpdHlfMDI3IiwiYWRqdXN0X2hlaWdodHNfaGVhcF8wMjUiLCJyZWNvbXB1dGVfaGVhcF8wMjMiLCJudW1fYWN0aXZlX29ic2VydmVyc18wMjkiLCJhbGxfb2JzZXJ2ZXJzXzAzMSIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfMDQzIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fMDQxIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXzAzOSIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzXzAzNyIsIm5ld19vYnNlcnZlcnNfMDM1IiwiZmluYWxpemVkX29ic2VydmVyc18wMzMiLCJvbmx5X2luX2RlYnVnXzA0NSIsIndlYWtfaGFzaHRibHNfMDQ3Iiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZV8wIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfMDUxIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV8wIiwibnVtX25vZGVzX2NoYW5nZWRfMDU1IiwibnVtX25vZGVzX2NyZWF0ZWRfMDU3IiwibnVtX25vZGVzX2ludmFsaWRhdGVkXzA1OSIsIm51bV9ub2Rlc19yZWNvbXB1dGVkXzA2MSIsIm51bV92YXJfc2V0c18wNjciLCJhcmdfMDY4IiwiYm5kc18wMTQiLCJhcmdfMDY2IiwiYm5kc18wMTQkMCIsImFyZ18wNjQiLCJibmRzXzAxNCQxIiwiYXJnXzA2MiIsImJuZHNfMDE0JDIiLCJhcmdfMDYwIiwiYm5kc18wMTQkMyIsImJuZHNfMDE0JDQiLCJibmRzXzAxNCQ1IiwiYm5kc18wMTQkNiIsImJuZHNfMDE0JDciLCJibmRzXzAxNCQ4IiwiYm5kc18wMTQkOSIsImJuZHNfMDE0JDEwIiwiYm5kc18wMTQkMTEiLCJibmRzXzAxNCQxMiIsImJuZHNfMDE0JDEzIiwiYm5kc18wMTQkMTQiLCJibmRzXzAxNCQxNSIsImJuZHNfMDE0JDE2IiwiYm5kc18wMTQkMTciLCJibmRzXzAxNCQxOCIsImJuZHNfMDE0JDE5IiwiYm5kc18wMTQkMjAiLCJibmRzXzAxNCQyMSIsImJuZHNfMDE0JDIyIiwiYm5kc18wMTQkMjMiLCJibmRzXzAxNCQyNCIsImJuZHNfMDE0JDI1IiwiZmlyZWRfYWxhcm1fdmFsdWVzIiwic2V0X2ZpcmVkX2FsYXJtX3ZhbHVlcyIsImhhbmRsZV9maXJlZCIsInRpbWluZ193aGVlbCIsImZpcmVkX2FsYXJtX3ZhbHVlcyQwIiwiaGFuZGxlX2ZpcmVkJDAiLCJub3ckMCIsInRpbWluZ193aGVlbCQwIiwibWFrZV9jcmVhdG9yJDEiLCJ0aW1pbmdfd2hlZWxfZnVuIiwibm93X2Z1biIsImhhbmRsZV9maXJlZF9mdW4iLCJmaXJlZF9hbGFybV92YWx1ZXNfZnVuIiwidGltaW5nX3doZWVsX2dlbiIsIm5vd19nZW4iLCJoYW5kbGVfZmlyZWRfZ2VuIiwiZmlyZWRfYWxhcm1fdmFsdWVzX2dlbiIsImNyZWF0ZSQyIiwibWFwJDMiLCJpdGVyJDMiLCJmb2xkJDMiLCJtYXBfcG9seSQxIiwiZm9yX2FsbCQzIiwiZXhpc3RzJDMiLCJ0b19saXN0JDMiLCJpdGVyJDQiLCJmb2xkJDQiLCJmb3JfYWxsJDQiLCJleGlzdHMkNCIsInRvX2xpc3QkNCIsIm1hcCQ0Iiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyQxIiwic2V4cF9vZl90JDMiLCJub3dfMDcyIiwidGltaW5nX3doZWVsXzA3MCIsImZpcmVkX2FsYXJtX3ZhbHVlc18wNzYiLCJhcmdfMDc3IiwiYm5kc18wNjkiLCJhcmdfMDc1IiwiYm5kc18wNjkkMCIsImFyZ18wNzMiLCJibmRzXzA2OSQxIiwiYXJnXzA3MSIsImJuZHNfMDY5JDIiLCJpbnZhcmlhbnQkMSIsIm5vdyQxIiwiY2xvY2siLCJ0aW1pbmdfd2hlZWxfbGVuZ3RoIiwibnVtX3N0YWJpbGl6ZXMiLCJpdGVyX29ic2VydmVycyIsImRpcmVjdGx5X29ic2VydmVkIiwiaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyIsInRfb2Zfc2V4cCIsInhfMDg1Iiwic2V4cF8wODQiLCJhcmcxXzA4MSIsImFyZzBfMDgwIiwicmVzMF8wODIiLCJyZXMxXzA4MyIsInBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhciIsInNleHBfb2ZfdCQ0IiwibWF4X251bV9wYXJlbnRzXzA4NyIsImFyZ18wOTAiLCJhcmcxXzA5MiIsImFyZzBfMDkxIiwicmVzMF8wOTMiLCJyZXMxXzA5NCIsImJuZHNfMDg2IiwiYXJnXzA4OCIsImJuZHNfMDg2JDAiLCJzdGF0cyIsIm51bV9uZWNlc3Nhcnlfbm9kZXMiLCJtYXhfbnVtX3BhcmVudHMkMCIsIm51bV9ub2Rlc19ieV9udW1fcGFyZW50cyIsIm51bV9ub2RlcyIsImFtX3N0YWJpbGl6aW5nIiwicmFpc2VkX2V4biIsImludmFyaWFudCQyIiwiaW50ZXJuYWxfb2JzZXJ2ZXIiLCJ4XzA5NSIsInBhY2tlZCIsImVuc3VyZV9ub3Rfc3RhYmlsaXppbmciLCJhbGxvd19pbl91cGRhdGVfaGFuZGxlciIsImJhY2t0cmFjZSQwIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24kMSIsInJlbW92ZV9jaGlsZHJlbiIsInJlbW92ZV9jaGlsZCIsImNoZWNrX2lmX3VubmVjZXNzYXJ5IiwiYmVjYW1lX3VubmVjZXNzYXJ5IiwicCIsInUiLCJyZW1vdmVfYWxhcm0iLCJpbnZhbGlkYXRlX25vZGUiLCJpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmgiLCJyZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwiZmlyc3Rfbm9kZV9vbl9yaHMiLCJuZXdfc2NvcGUiLCJwcm9wYWdhdGVfaW52YWxpZGl0eSQxIiwiZXhwZXJ0IiwiYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oIiwid2FzX25lY2Vzc2FyeSIsInhfMDk2IiwiYmVjYW1lX25lY2Vzc2FyeSIsInJ1bl93aXRoX3Njb3BlIiwic2NvcGUiLCJzYXZlZCIsImV4biQwIiwid2l0aGluX3Njb3BlIiwiY2hhbmdlX2NoaWxkIiwib2xkX2NoaWxkIiwibmV3X2NoaWxkIiwib2xkX2NoaWxkJDAiLCJhZGRfYWxhcm0iLCJyZWNvbXB1dGUiLCJtYXliZV9jaGFuZ2VfdmFsdWUiLCJvbGRfcmhzIiwib2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3JocyIsImNvcHlfY2hpbGQiLCJvbmx5X2ZyZWV6ZV93aGVuIiwiZWxzZSQwIiwidGhlbiIsImRlc2lyZWRfYnJhbmNoIiwibWFpbiQxIiwib2xkX3JocyQwIiwicmhzJDEiLCJyaHMkMiIsIm4xIiwiY2xvY2skMCIsImF0JDAiLCJjbG9jayQxIiwiY2hpbGQkMSIsInN0ZXBfZnVuY3Rpb24iLCJzdGVwX2Z1bmN0aW9uX3ZhbHVlIiwiYXQkMSIsIm4yIiwibjEkMCIsIm4zIiwibjIkMCIsIm4xJDEiLCJmJDIiLCJuNCIsIm4zJDAiLCJuMiQxIiwibjEkMiIsImYkMyIsIm41IiwibjQkMCIsIm4zJDEiLCJuMiQyIiwibjEkMyIsImYkNCIsIm42IiwibjUkMCIsIm40JDEiLCJuMyQyIiwibjIkMyIsIm4xJDQiLCJmJDUiLCJuNyIsIm42JDAiLCJuNSQxIiwibjQkMiIsIm4zJDMiLCJuMiQ0IiwibjEkNSIsImYkNiIsIm44IiwibjckMCIsIm42JDEiLCJuNSQyIiwibjQkMyIsIm4zJDQiLCJuMiQ1IiwibjEkNiIsImYkNyIsIm45IiwibjgkMCIsIm43JDEiLCJuNiQyIiwibjUkMyIsIm40JDQiLCJuMyQ1IiwibjIkNiIsIm4xJDciLCJmJDgiLCJuMTAiLCJuOSQwIiwibjgkMSIsIm43JDIiLCJuNiQzIiwibjUkNCIsIm40JDUiLCJuMyQ2IiwibjIkNyIsIm4xJDgiLCJmJDkiLCJuMTEiLCJuMTAkMCIsIm45JDEiLCJuOCQyIiwibjckMyIsIm42JDQiLCJuNSQ1IiwibjQkNiIsIm4zJDciLCJuMiQ4IiwibjEkOSIsImYkMTAiLCJuMTIiLCJuMTEkMCIsIm4xMCQxIiwibjkkMiIsIm44JDMiLCJuNyQ0IiwibjYkNSIsIm41JDYiLCJuNCQ3IiwibjMkOCIsIm4yJDkiLCJuMSQxMCIsImYkMTEiLCJuMTMiLCJuMTIkMCIsIm4xMSQxIiwibjEwJDIiLCJuOSQzIiwibjgkNCIsIm43JDUiLCJuNiQ2IiwibjUkNyIsIm40JDgiLCJuMyQ5IiwibjIkMTAiLCJuMSQxMSIsImYkMTIiLCJuMTQiLCJuMTMkMCIsIm4xMiQxIiwibjExJDIiLCJuMTAkMyIsIm45JDQiLCJuOCQ1IiwibjckNiIsIm42JDciLCJuNSQ4IiwibjQkOSIsIm4zJDEwIiwibjIkMTEiLCJuMSQxMiIsImYkMTMiLCJuMTUiLCJuMTQkMCIsIm4xMyQxIiwibjEyJDIiLCJuMTEkMyIsIm4xMCQ0IiwibjkkNSIsIm44JDYiLCJuNyQ3IiwibjYkOCIsIm41JDkiLCJuNCQxMCIsIm4zJDExIiwibjIkMTIiLCJuMSQxMyIsImYkMTQiLCJjaGlsZF9pbmRleCQwIiwidSQwIiwiY2FuX3JlY29tcHV0ZV9ub3ciLCJiIiwiaiIsInJlY29tcHV0ZV9maXJzdF9ub2RlX3RoYXRfaXNfbiIsInhfMDk3IiwidW5saW5rX2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSIsImRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMiLCJvYnNlcnZlcl9maW5hbGl6ZXIiLCJjcmVhdGVfb2JzZXJ2ZXIiLCJzaG91bGRfZmluYWxpemUiLCJhZGRfbmV3X29ic2VydmVycyIsIm9sZF9hbGxfb2JzZXJ2ZXJzIiwib2xkX29ic2VydmVycyIsIm9ic2VydmVyX3ZhbHVlX2V4biIsInhfMDk4Iiwib2JzZXJ2ZXJfdmFsdWUiLCJub2RlX29uX3VwZGF0ZSIsIm9ic2VydmVyX29uX3VwZGF0ZV9leG4iLCJzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyIsInNldF92YXIiLCJyZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMiLCJ3ZWFrX2hhc2h0YmwiLCJzdGFiaWxpemVfc3RhcnQiLCJzdGFiaWxpemVfZW5kIiwibWF0Y2gkMCIsIm5vZGVfdXBkYXRlJDAiLCJyYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiIsInJhaXNlZCIsInN0YWJpbGl6ZSIsInNleHBfb2ZfdCQ1IiwiZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIiwiY3JlYXRlX25vZGVfaW4iLCJjcmVhdGVfbm9kZSIsImNyZWF0ZV9ub2RlX3RvcCIsImNyZWF0ZV92YXIiLCJ1c2VfY3VycmVudF9zY29wZSIsImNvbnN0JDAiLCJtYXAkNSIsIm1hcDIiLCJib3RoIiwibWFwMyIsIm1hcDQiLCJtYXA1IiwibWFwNiIsIm1hcDciLCJtYXA4IiwibWFwOSIsIm1hcDEwIiwibWFwMTEiLCJtYXAxMiIsIm1hcDEzIiwibWFwMTQiLCJtYXAxNSIsInByZXNlcnZlX2N1dG9mZiIsImlucHV0Iiwib3V0cHV0IiwiZGVwZW5kX29uIiwibmVjZXNzYXJ5X2lmX2FsaXZlIiwiYmluZDIiLCJ2MSIsInYyIiwiYmluZDMiLCJ2MyIsImJpbmQ0IiwidjQiLCJpZiQwIiwibGF6eV9mcm9tX2Z1biIsImRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpeiIsIm1lbW9pemVfZnVuX2J5X2tleSIsImhhc2hhYmxlIiwicHJvamVjdF9rZXkiLCJpbml0aWFsX3NpemUiLCJ0YWJsZSIsImtleSIsImIkMCIsImFsbCIsIm9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCIsIm51bV9pbnZhbGlkIiwiYWNjdW0iLCJ4JDAiLCJmX2ludmVyc2UkMCIsImF0X2xlYXN0X2tfb2YiLCJib29sX3RvX2ludCIsIm51bV90cnVlIiwiZXhpc3RzJDUiLCJmb3JfYWxsJDUiLCJzdW0iLCJ6ZXJvIiwic3ViIiwib3B0X3N1bSIsInN1bV9pbnQiLCJzdW1fZmxvYXQiLCJzZXRfZnJlZXplIiwidGltZSIsImFmdGVyIiwic3BhbiIsIm5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IiwiYmFzZSIsInZhbHVlX2F0IiwiaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiIsImFkdmFuY2VfY2xvY2siLCJtYWluJDIiLCJjcmVhdGVfY2xvY2siLCJ0aW1pbmdfd2hlZWxfY29uZmlnIiwic3RhcnQiLCJjcmVhdGUkMyIsIkNvbmZpZyIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5IiwiZXhwZXJ0X2tpbmRfb2Zfbm9kZSIsInhfMDk5IiwiY3JlYXRlJDQiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biIsImN1cnJlbnQiLCJhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV8iLCJ4XzEwMSIsInhfMTAwIiwiYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfJDAiLCJ4XzEwMyIsInhfMTAyIiwibWFrZV9zdGFsZSQwIiwiZV9vcHQiLCJpbnZhbGlkYXRlIiwiYWRkX2RlcGVuZGVuY3kiLCJkZXAiLCJyZW1vdmVfZGVwZW5kZW5jeSIsImVkZ2UiLCJlZGdlX2luZGV4IiwibGFzdF9lZGdlIiwibGFzdF9lZGdlX2luZGV4Iiwib25fY2hhbmdlIiwicmVkdWNlIiwicmVkdWNlciIsImxldmVsX2JpdHMiLCJjcmVhdGVfaW50ZXJuYWwiLCJkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCIsInNleHBfb2Zfc3RhdGVfd2l0bmVzcyIsIndpdGhpbiIsInBhY2siLCJyZXR1cm4kMCIsIm1hcDIkMCIsIm1hcDMkMCIsIm1hcDQkMCIsIm1hcDUkMCIsIm1hcDYkMCIsIm1hcDckMCIsIm1hcDgkMCIsIm1hcDkkMCIsIm1hcDEwJDAiLCJtYXAxMSQwIiwibWFwMTIkMCIsIm1hcDEzJDAiLCJtYXAxNCQwIiwibWFwMTUkMCIsImJpbmQyJDAiLCJiaW5kMyQwIiwiYmluZDQkMCIsInN5bWJvbF9tYXAiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDAiLCJsYXp5X2Zyb21fZnVuJDAiLCJtZW1vaXplX2Z1biIsImFycmF5X2ZvbGQkMCIsInJlZHVjZV9iYWxhbmNlZCIsInJlcGxhY2UiLCJ4XzAxNyIsImRpc2FsbG93X2Z1dHVyZV91c2UkMCIsImluY3Jfc3RhdGUkMSIsImFsYXJtX3ByZWNpc2lvbiIsImRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyIsInN0YXJ0JDAiLCJhbGFybV9wcmVjaXNpb24kMCIsIndhdGNoX25vdyIsImFkdmFuY2VfY2xvY2tfYnkiLCJmcmVlemUkMCIsIndoZW4iLCJkZXBlbmRfb24kMCIsInN0YWJpbGl6ZSQwIiwiYW1fc3RhYmlsaXppbmckMCIsIm9mX2FfMDE4IiwiYXJnMF8wMTkiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwibm9kZV92YWx1ZSIsInNleHBfb2ZfdCQ2IiwiYm90aCQwIiwieDEiLCJ4MiIsIm1hcDIkMSIsIm1hcDMkMSIsIm1hcDQkMSIsIm1hcDUkMSIsIm1hcDYkMSIsIm1hcDckMSIsIm1hcDgkMSIsIm1hcDkkMSIsIm1hcDEwJDEiLCJtYXAxMSQxIiwibWFwMTIkMSIsIm1hcDEzJDEiLCJtYXAxNCQxIiwibWFwMTUkMSIsImJpbmQyJDEiLCJiaW5kMyQxIiwiYmluZDQkMSIsIndlYWtfbWVtb2l6ZV9mdW4iLCJkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUkMCIsImNvbnN0JDEiLCJyZXR1cm4kMSIsImFsbCQwIiwibWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJtZW1vaXplX2Z1biQwIiwicmVkdWNlX2JhbGFuY2VkJDAiLCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCQwIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkJDAiLCJzdW0kMCIsIm9wdF9zdW0kMCIsInN1bV9pbnQkMCIsInN1bV9mbG9hdCQwIiwic2F2ZV9kb3QkMCIsInNhdmVfZG90X3RvX2ZpbGUkMCIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJ3ZWFrX21lbW9pemVfZnVuJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQ1Iiwic2V4cF9vZl90JDkiLCJpbnZhcmlhbnQkNiIsInNleHBfb2ZfdCQxMSIsInNleHBfb2ZfdCQxMiIsImludmFyaWFudCQ3Iiwib25fdXBkYXRlX2V4biQwIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQxIiwidmFsdWUkMSIsInNleHBfb2ZfdCQxMyIsImludmFyaWFudCQ4Iiwic2V4cF9vZl90JDE0Iiwic2V4cF9vZl90JDE1IiwiZGVidWciLCJub19pbnN0cnVtZW50YXRpb24iLCJmIiwid2l0aF9vbGQiLCJpbnN0cnVtZW50YXRpb24iLCJpIiwib2xkIiwiYSIsImIiLCJjdXRvZmYiLCJtYXAiLCJkYXRhX2VxdWFsIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiY3VyIiwib2xkJDAiLCJhY2MiLCJjaGFuZ2UiLCJrZXkiLCJuZXckMCIsInVub3JkZXJlZF9mb2xkIiwidXBkYXRlIiwic3BlY2lhbGl6ZWRfaW5pdGlhbCIsImluaXQiLCJhZGQiLCJyZW1vdmUiLCJmaW5hbGl6ZSIsInJldmVydF90b19pbml0X3doZW5fZW1wdHkiLCJkZWZhdWx0JDAiLCJvbGRfZGF0YSIsIm5ld19kYXRhIiwidXBkYXRlJDAiLCJuZXdfaW4iLCJvbGRfb3V0Iiwib2xkX2luIiwiaW5pdCQwIiwibmV3JDEiLCJpbml0aWFsIiwidW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHMiLCJpbmNyX21hcCIsInVwZGF0ZSQxIiwib3V0ZXJfa2V5IiwiaW5uZXJfa2V5Iiwib2xkX2lubmVyX21hcCIsIm5ld19pbm5lcl9tYXAiLCJkaWZmIiwiZGF0YV9yZW1vdmVkIiwiZGF0YV9hZGRlZCIsImlubmVyX21hcCIsImRhdGEiLCJ3aXRoX2NvbXBhcmF0b3IiLCJnZXRfY29tcGFyYXRvciIsIngiLCJ3aXRoX2NvbXBhcmF0b3IkMCIsIm9mX3NldCIsInNldCIsImNvbXBhcmF0b3IiLCJvbGRfaW5wdXQiLCJvbGRfb3V0cHV0IiwibmV3X2lucHV0IiwibmV3X291dHB1dCIsIm91dHB1dCIsImsiLCJrJDAiLCJnZW5lcmljX21hcGkiLCJ3aXRuZXNzIiwiaW5wdXQiLCJyZXMiLCJvdXRwdXRfZGF0YSIsIm1hcGkiLCJmaWx0ZXJfbWFwaSIsImZpbHRlcl9tYXAiLCJ3aXRoX29sZDIiLCJpMSIsImkyIiwiYTEiLCJhMiIsInVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmEiLCJleHRyYSIsImV4dHJhX2NoYW5nZWQiLCJleHRyYV9lcXVhbCIsIm5ld19leHRyYSIsIm9sZF9leHRyYSIsImFjYyQwIiwibWFwaV9jb3VudCIsIm5ld19rZXkiLCJuIiwicHJldl9rZXkiLCJtYXBfY291bnQiLCJtaW5faGVscGVyIiwibWluIiwibWF4X2hlbHBlciIsIm1heCIsImJvdW5kc19oZWxwZXIiLCJtYXBpX21pbiIsIm1hcGlfbWF4IiwibWFwaV9ib3VuZHMiLCJtYXBfbWluIiwibWFwX21heCIsIm1pbl92YWx1ZSIsIm1heF92YWx1ZSIsIm1hcF9ib3VuZHMiLCJ2YWx1ZV9ib3VuZHMiLCJtZXJnZV9zaGFyZWRfaW1wbCIsIm5ld19sZWZ0X21hcCIsIm5ld19yaWdodF9tYXAiLCJkYXRhX2VxdWFsX2xlZnQiLCJkYXRhX2VxdWFsX3JpZ2h0Iiwib2xkX3JpZ2h0X21hcCIsIm9sZF9sZWZ0X21hcCIsIm9sZF9sZWZ0X21hcCQwIiwibGVmdF9kaWZmIiwicmlnaHRfZGlmZiIsInJpZ2h0X2tleSIsImxlZnRfa2V5IiwiZGlmZl9lbGVtZW50Iiwia2V5JDAiLCJuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCIsIm1lcmdlIiwibGVmdF9tYXAiLCJyaWdodF9tYXAiLCJyaWdodF9kYXRhX29wdCQwIiwibGVmdF9kYXRhX29wdCIsInJpZ2h0X2RpZmYkMCIsImxlZnRfZGlmZiQwIiwicmlnaHRfZGF0YV9vcHQkMiIsImxlZnRfZGF0YV9vcHQkMCIsInkiLCJvdXRwdXRfZGF0YV9vcHQiLCJ5JDAiLCJtZXJnZV9ib3RoX3NvbWUiLCJvdXRfZXF1YWwiLCJlbXB0eSIsImxlZnRfYW5kX3JpZ2h0X2RhdGFfb3B0IiwibGVmdF9kYXRhIiwicmlnaHRfZGF0YSIsInByZXZfb3V0IiwicHJldl9vdXQkMCIsImdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3IiLCJsaHMiLCJpbmNyZW1lbnRhbF9zdGF0ZSIsImVtcHR5X21hcCIsInByZXZfbWFwIiwicHJldl9ub2RlcyIsInJlc3VsdCIsIm9uX2lubmVyX2NoYW5nZSIsIm9wdCIsImxoc19jaGFuZ2UiLCJuZXdfbm9kZXMiLCJub2RlcyIsImNoYW5nZWQiLCJkZXAiLCJub2RlIiwibm9kZXMkMCIsIm5vZGUkMCIsIm5vZGUkMSIsImMiLCJ1c2VyX2Z1bmN0aW9uX2RlcCIsImZpbHRlcl9tYXBpJDAiLCJtYXBpJDAiLCJtYXAkMCIsImZpbHRlcl9tYXAkMCIsIm1lcmdlJDAiLCJtYXAxIiwibWFwMiIsInVuemlwX21hcGkiLCJsZWZ0X3Jlc3VsdF9lcXVhbCIsInJpZ2h0X3Jlc3VsdF9lcXVhbCIsInBhaXIiLCJkYXRhX2VxdWFsJDAiLCJsZWZ0X3Jlc3VsdF9lcXVhbCQwIiwicmlnaHRfcmVzdWx0X2VxdWFsJDAiLCJsZWZ0X2FjYyIsImxlZnRfcmVzdWx0IiwicmlnaHRfYWNjIiwicmlnaHRfcmVzdWx0IiwiaW5wdXRfY2hhbmdlIiwibGVmdCQwIiwibCIsInJpZ2h0JDAiLCJyIiwicmlnaHQiLCJsZWZ0IiwicHJldiIsInByZXZfYiIsInByZXZfYSIsIm5ld19iIiwibmV3X2EiLCJlbGVtZW50IiwidW56aXAiLCJ1bnppcF9tYXBpJDAiLCJyaWdodF9kZXAiLCJsZWZ0X2RlcCIsInJpZ2h0X2luY3IiLCJsZWZ0X2luY3IiLCJsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwIiwicmlnaHRfdXNlcl9mdW5jdGlvbl9kZXAiLCJrZXlzIiwicGFydGl0aW9uX21hcGkiLCJzZWNvbmQiLCJmaXJzdCIsImRhdGEkMCIsImRhdGEkMSIsInBhcnRpdGlvbl9tYXBpJDAiLCJmbGF0dGVuIiwic3RhdGUiLCJpbmNyIiwiam9pbiIsIm1hcF9pbmNyIiwicmVzdWx0X21hcCIsIm9sZF9tYXBfb2ZfaW5jcnMiLCJjdXJyZW50X2RlcGVuZGVuY2llcyIsImFkZF9zdWJub2RlIiwiZGF0YV9ub2RlIiwibmV3X2RlcCIsInJlbW92ZV9zdWJub2RlIiwibWFwX29mX2luY3JzIiwibmV3X2RlcGVuZGVuY3lfbWFwIiwiZGF0YV9ub2RlJDAiLCJzZXBhcmF0ZSIsImlucHV0X21hcCIsIm91dHB1dF9tYXBfbm9kZSIsIm1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwXyIsImlucHV0X21hcF9jaGFuZ2VkIiwiZGVwZW5kZW5jeSIsInByZXZfaW5wdXRfbWFwIiwib3V0cHV0X21hcCIsImV4cGVydF9ub2RlcyIsIm9sZF9ub2RlIiwic3VicmFuZ2UiLCJyYW5nZSIsImNvbXBhcmUiLCJlcXVhbCIsIm1heWJlX2JvdW5kX2VxdWFsIiwiYV8wMDgiLCJiXzAwOSIsImFfMDEwIiwiYl8wMTEiLCJhXzAxMiIsImJfMDEzIiwicmFuZ2VfaXNfZW1wdHkiLCJtaW4kMCIsIm1heCQwIiwibWF4JDEiLCJtaW4kMSIsInJhbmdlX2luY2x1ZGVzIiwicmFuZ2UkMCIsImZyb21fc2NyYXRjaCIsIm9sZF9yYW5nZSIsIm9sZF9taW4iLCJvbGRfbWFwIiwib2xkX21heCIsIm9sZF9yZXMiLCJvbGRfbWF4JDAiLCJwYXJhbSIsImFwcGx5X2RpZmZfaW5faW50ZXJzZWN0aW9uIiwib3V0c2lkZSIsIm91dHNpZGUkMCIsIm91dHNpZGVfY3V0b2ZmIiwid2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlIiwid2l0aG91dF9rZXlzX291dF9vZl9yYW5nZSIsIm1hcF9hcHBlbmRfZXhuIiwibG93ZXJfcGFydCIsInVwcGVyX3BhcnQiLCJvbGRfbWluJDAiLCJvbGRfbWluJDEiLCJvbGRfbWF4JDEiLCJ3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSIsInJla2V5Iiwib3V0ZXJfY29tcGFyYXRvciIsImFkZHMiLCJvdXRwdXQkMCIsIm5ld19lbnRyeSIsImluZGV4X2J5aSIsImluZGV4IiwiaW5uZXJfY29tcGFyYXRvciIsIm91dGVyX21hcCIsImlubmVyX21hcCQwIiwiaW5kZXhfYnkiLCJpc19rbm93biIsInRvX29wdGlvbiIsImZpbmRfa2V5X3JhbmdlX2xpbmVhciIsImZyb20iLCJ0byIsImxlbiIsImJlZ2luX2tleSIsImVuZF9rZXkiLCJmaW5kX2tleXMiLCJmb2xkIiwic3RhcnRfcG9zIiwiYWR2YW5jZV9wb3MiLCJwb3MiLCJiZWdpbl9rZXkkMCIsImVuZF9rZXkkMCIsImZpbmRfb2Zmc2V0IiwiY2hhbmdlZF9rZXkiLCJyYW5rIiwiY29tcGFyZV9rZXkiLCJzYW1lX2tleSIsInByb2Nlc3MiLCJuZXdfbWFwIiwib2xkX3JhbmsiLCJvbGRfa2V5Iiwib2xkX3JhbmskMCIsImRpZmZfa2V5Iiwib2xkX3JhbmskMSIsIm9sZCQxIiwidXBwZXJfYm91bmQiLCJsb3dlcl9ib3VuZCIsInVwcGVyX2JvdW5kJDAiLCJsb3dlcl9ib3VuZCQwIiwic3VicmFuZ2UkMCIsInN1YnJhbmdlX2J5X3JhbmsiLCJmaW5kX2tleV9yYW5nZSIsImVuZF9rZXlfb3B0JDAiLCJvbGRfdG8iLCJvbGRfZnJvbSIsInJhbmdlX29mZnNldF9iZWdpbiIsInJhbmdlX29mZnNldF9lbmQiLCJhZGp1c3RfYW5kX29mZnNldCIsImJ5JDEiLCJrZXkkMSIsImJ5JDIiLCJieSIsImNsb3Nlc3RfZGlyIiwiYnkkMCIsIm9mZnNldF9lbmQiLCJvZmZzZXRfYmVnaW4iLCJtYXBfb2Zmc2V0X2VuZCIsIm1hcF9vZmZzZXRfYmVnaW4iLCJlbmRfa2V5X29wdCQyIiwiYmVnaW5fa2V5X29wdCIsIm1hcF9vZmZzZXRfYmVnaW4kMCIsImVuZF9rZXlfb3B0IiwiYmVnaW5fa2V5X29wdCQwIiwic3ltYm9sIiwiYm91bmQiLCJyZXR1cm4kMCIsImtleV9yYW5nZSIsInBhdHRlcm5fc3ludGF4XzAxNCIsImxiIiwicGF0dGVybl9zeW50YXhfMDE1IiwidSIsInBhdHRlcm5fc3ludGF4XzAxNiIsInViIiwicGF0dGVybl9zeW50YXhfMDE3IiwibGV0X3N5bnRheF8wMjIiLCJsJDAiLCJwYXR0ZXJuX3N5bnRheF8wMTgiLCJsYiQwIiwicGF0dGVybl9zeW50YXhfMDE5IiwibGV0X3N5bnRheF8wMjYiLCJ1JDAiLCJwYXR0ZXJuX3N5bnRheF8wMjAiLCJ1YiQwIiwicGF0dGVybl9zeW50YXhfMDIxIiwibGV0X3N5bnRheF8wMjkiLCJ0cmFuc3Bvc2UiLCJrMl9jb21wYXJhdG9yIiwibSIsImsxX2NvbXBhcmF0b3IiLCJrMSIsImsyIiwidmFsdWUiLCJhY2NfaW5uZXIiLCJhY2NfaW5uZXIkMCIsImNvbGxhcHNlX2J5IiwibWVyZ2Vfa2V5cyIsImNvbGxhcHNlIiwiaW5uZXJfY29tcGFyYXRvciQwIiwiZXhwYW5kIiwiY291bnRpIiwiY291bnQiLCJleGlzdHNpIiwiZXhpc3RzIiwic3VtIiwiR3JvdXAiLCJ2IiwiZm9yX2FsbGkiLCJmb3JfYWxsIiwidW5vcmRlcmVkX2ZvbGQkMCIsInVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzJDAiLCJjcmVhdGUiLCJzZWxmIiwidXBkYXRlcl9ub2RlIiwic2VsZiQwIiwiY2hhbmdlZF92YWx1ZSIsImVudHJpZXMiLCJlbnRyeSIsImZpbmQiLCJ0IiwiaXNfbm93X29ic2VydmFibGUiLCJlbnRyeSQwIiwiY3VycmVudF9lbnRyaWVzIiwiaXNfbGlua2VkIiwib3RoZXJfZW50cmllcyIsIm90aGVyX2VudHJ5IiwibmV3X2VudHJpZXMiLCJzZXhwX29mX3QiLCJzZXhwX29mX2tleSIsInNleHBfb2ZfdmFsdWUiLCJpbmZvX3Blcl9rZXkiLCJhY3R1YWxfdmFsdWUiLCJlbnRyaWVzJDAiLCJhY3R1YWxfdmFsdWUkMCIsIngkMCIsIm1hdGNoJDAiLCJzYXZlZF92YWx1ZSIsIm1hdGNoJDIiLCJtYXRjaCQzIiwidiQwIiwibWF0Y2gkNCIsInYkMSIsIm1hdGNoJDUiLCJ2JDIiLCJmbGF0dGVuJDAiLCJoYXNodGJsX3NpemUiLCJzZXR1cF9nZW5lcmF0b3IiLCJoYXNoYWJsZSIsImNvbXB1dGVfb3V0cHV0IiwibWFrZV9pbnB1dF9ub2RlIiwibmVjZXNzYXJ5X2RlcGVuZGVuY2llcyIsIm1ha2Vfa2V5X3N0YWxlIiwia2V5IiwiaW5wdXRfbm9kZSIsImlucHV0X2RlcCIsIm91dHB1dF9ub2RlIiwiaXNfbm93X29ic2VydmFibGUiLCJsIiwibCQwIiwib3V0cHV0X25vZGUkMCIsInVwZGF0ZV9vbmUiLCJpbnB1dCIsInNlbGVjdGVkIiwibWFrZV9zdGFsZSIsImlucCIsInNlbGVjdF9vbmUiLCJIIiwia2V5JDAiLCJzZWxlY3Rfb25lJDAiLCJoIiwic2VsZWN0X29uZV92YWx1ZSIsImRlZmF1bHQkMCIsImRhdGEiLCJzZWxlY3Rfb25lX3ZhbHVlJDAiLCJzZWxlY3RfbWFueV92YWx1ZXMiLCJzZWxlY3RfbWFueSIsIm9sZF9zZXQiLCJtYXJrIiwibmFtZSIsIm1lYXN1cmUiLCJzdGFydCIsImVuZCIsInJlY29yZCIsImYiLCJiZWZvcmVfbmFtZSIsImFmdGVyX25hbWUiLCJyZXMiLCJjbGVhcl9tYXJrcyIsImNsZWFyX21lYXN1cmVzIiwiY3JlYXRlIiwiZmlsZW5hbWUiLCJtaW1ldHlwZSIsImNvbnRlbnRzIiwic2V4cF9vZl90IiwidCIsInRyaWdnZXIiLCJjb250ZW50c19iaWdzdHIiLCJjcmVhdGUkMCIsImdldF9kb3dubG9hZCIsImJ1dHRvbl90ZXh0IiwiZW5hYmxlZCIsIm9uX2NsaWNrIiwiZXh0cmFfYXR0cnMiLCJ0cmlnZ2VyX2Nzdl9kb3dubG9hZCIsImV2IiwiZW5hYmxlZF9kaXNhYmxlZCIsImF0dHJzIiwiY2xvY2siLCJleHRyYSIsInIiLCJvbl9kaXNwbGF5IiwidmlldyIsInVwZGF0ZV92aXNpYmlsaXR5IiwiYXBwbHlfYWN0aW9uIiwiY3JlYXRlX3dpdGhfZXh0cmEiLCJtb2RlbCIsImFwcGx5X2FjdGlvbiQwIiwidXBkYXRlX3Zpc2liaWxpdHkkMCIsIm9uX2Rpc3BsYXkkMCIsImNyZWF0ZSIsImVycm9yX3NvdXJjZV8wMDMiLCJuYW1lcyIsImVycm9yX3NvdXJjZV8wMTkiLCJkZXNjcmlwdGlvbnMiLCJ0X29mX3NleHAiLCJvZl9hXzAwMSIsInhfMDA0IiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwidG9wIiwic2V4cF9vZl90Iiwib2ZfYV8wMDUiLCJyaWdodF8wMTMiLCJib3R0b21fMDExIiwibGVmdF8wMDkiLCJ0b3BfMDA3IiwiYXJnXzAxNCIsImJuZHNfMDA2IiwiYXJnXzAxMiIsImJuZHNfMDA2JDAiLCJhcmdfMDEwIiwiYm5kc18wMDYkMSIsImFyZ18wMDgiLCJibmRzXzAwNiQyIiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImEiLCJiaW5fc2l6ZV90Iiwic2l6ZV9vZl9hIiwidjQiLCJ2MyIsInYyIiwidjEiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwicG9zIiwicG9zJDAiLCJwb3MkMSIsInBvcyQyIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJ2X3RvcCIsInZfbGVmdCIsInZfYm90dG9tIiwidl9yaWdodCIsImJpbl9yZWFkZXJfdCIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCIsImJpbl9hIiwiY29tcGFyZSIsImNtcF9hIiwiYV8wMTUiLCJiXzAxNiIsIm4iLCJuJDAiLCJuJDEiLCJyaWdodCQwIiwiYm90dG9tJDAiLCJsZWZ0JDAiLCJ0b3AkMCIsIm1ha2VfY3JlYXRvciIsInRvcF9mdW4iLCJsZWZ0X2Z1biIsImJvdHRvbV9mdW4iLCJyaWdodF9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJ0b3BfZ2VuIiwiY29tcGlsZV9hY2MkMSIsImxlZnRfZ2VuIiwiY29tcGlsZV9hY2MkMiIsImJvdHRvbV9nZW4iLCJjb21waWxlX2FjYyQzIiwicmlnaHRfZ2VuIiwiYWNjIiwibWFwIiwiaXRlciIsImZvbGQiLCJpbml0IiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwibWFwJDEiLCJ0IiwiZiIsImludF9oZWlnaHQiLCJpbnRfd2lkdGgiLCJmbG9hdF9oZWlnaHQiLCJmbG9hdF93aWR0aCIsInJvdW5kX2Zsb2F0X3JlY3QiLCJyb3VuZCIsInJvd3Nfb3JfY29sdW1uc19vZl9zZXhwIiwic2V4cF8wMjAiLCJzZXhwX29mX3Jvd3Nfb3JfY29sdW1ucyIsImdyb3VwJDAiLCJiaW5fc2hhcGVfcm93c19vcl9jb2x1bW5zIiwiYmluX3NpemVfcm93c19vcl9jb2x1bW5zIiwiYmluX3dyaXRlX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl93cml0ZXJfcm93c19vcl9jb2x1bW5zIiwiYmluX3JlYWRfcm93c19vcl9jb2x1bW5zIiwiYmluX3JlYWRfcm93c19vcl9jb2x1bW5zJDAiLCJiaW5fcmVhZGVyX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yb3dzX29yX2NvbHVtbnMiLCJyb3dzIiwiY29sdW1ucyIsImlzX3Jvd3MiLCJpc19jb2x1bW5zIiwicm93c192YWwiLCJjb2x1bW5zX3ZhbCIsInJvd3MkMCIsImNvbHVtbnMkMCIsImZvbGQkMSIsInJvd3NfZnVuIiwiY29sdW1uc19mdW4iLCJpdGVyJDEiLCJtYXAkMiIsIm1ha2VfbWF0Y2hlciIsInJvd3NfZ2VuIiwiY29sdW1uc19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsImNvbXBhcmVfcm93c19vcl9jb2x1bW5zIiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiZWxlbWVudF9pc19pbl92aWV3cG9ydCIsInNjcm9sbCIsImlkIiwidmlld3BvcnRfcmVjdF9vZl9lbGVtZW50Iiwidmlld3BvcnRfcmVjdCIsImNsaWVudF9yZWN0X29mX2VsZW1lbnQiLCJib3VuZGluZ19yZWN0IiwiY2xpZW50X3JlY3QiLCJmaW5kX3Zpc2libGVfcmFuZ2UiLCJsZW5ndGgiLCJudGhfZWxlbWVudF9pZCIsImxheW91dCIsImVsZW1lbnRfc2VhcmNoIiwic2VhcmNoX2J5IiwibW9kZSIsIngiLCJudGhfZWxlbWVudCIsImVsdCIsImZpcnN0IiwibGFzdCIsImdldCIsImlzX2FzY2VuZGluZyIsImxlbmd0aCQwIiwidmlld3BvcnRfcmVjdCQwIiwidGFyZ2V0IiwidGFyZ2V0JDAiLCJzZWFyY2hfYnkkMCIsImdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIiLCJnZXRfc2Nyb2xsX2NvbnRhaW5lciIsImVsIiwiZmlsZW5hbWUiLCJwcmludF9lcnJvcmYiLCJmbXQiLCJzIiwicmVxdWVzdF9hbmltYXRpb25fZnJhbWUiLCJjYWxsYmFjayIsImN1cnJlbnRfY29udGV4dCIsInJlcXVlc3RfaWRzIiwiY2FsbGJhY2skMCIsImFuaW1hdGlvbl9mcmFtZV9pZCIsInNldF90aW1lb3V0X2lkIiwiYXNfZm9jdXNhYmxlIiwibWFya19kaXJ0eSIsImlzX2RpcnR5IiwieF8wMDIiLCJ4XzAwMyIsImFfMDA0IiwiYl8wMDUiLCJhXzAwNiIsImJfMDA3Iiwic2V0X2xvZ2dpbmdfZmlsdGVyIiwibG9nZ2luZ19maWx0ZXIiLCJnbG9iYWxfaXNfaW5pdGlhbGl6ZWQiLCJhcHBfc3RhdGVzIiwic2luZ2xlX2xpbmVfc3RyaW5nX2xpc3QiLCJzdHJpbmdzIiwic3RyIiwibXVsdGlfbGluZV9zdHJpbmdfbGlzdCIsImdldF90YWdfbmFtZSIsIm5vZGUiLCJub2RlJDAiLCJlIiwibm9kZSQxIiwic3RhcnRfYm9uc2FpIiwiYmluZF90b19lbGVtZW50X3dpdGhfaWQiLCJpbml0aWFsX21vZGVsIiwiQXBwIiwiZGVidWciLCJzdG9wIiwibmFtZWRfbG9nZ2luZ19maWx0ZXJzIiwibW9kZWxfdiIsIm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YiLCJtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSIsImN1dG9mZiIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsImFjdGlvbl9xdWV1ZSIsImhhbmRsZSIsImFjdGlvbiIsInZpc2liaWxpdHkiLCJ2aWV3cG9ydF9jaGFuZ2VkIiwib2JzIiwiZmV0Y2giLCJuYW1lZF9sb2dnaW5nX2ZpbHRlcnMkMCIsImZpbHRlcl9uYW1lcyIsImFwcF9pbml0X21lc3NhZ2UiLCJ3aXRoX2FwcF9pZF9vcHQiLCJ1cGRhdGVfc3RhdGUiLCJhcHBfaWRfb3B0IiwiYXBwX2lkX29wdCQwIiwiYXBwX2lkIiwic3RhdGUiLCJ1cGRhdGVfbG9nZ2luZ19maWx0ZXIiLCJ1cGRhdGVfc2hvdWxkX3Byb2ZpbGUiLCJzaG91bGRfcHJvZmlsZSIsInVwZGF0ZV9zaG91bGRfZGVidWciLCJzaG91bGRfZGVidWciLCJibGFuZ19zdHIiLCJibGFuZ19zdHIkMCIsImFwcF9zdGF0ZSIsImJsYW5nIiwiaW52YWxpZF9uYW1lcyIsIm5hbWUiLCJmaWx0ZXIiLCJmaWx0ZXIkMCIsImFjdGlvbl9zZXhwIiwiY29udGVudHMiLCJsb2ciLCJodG1sIiwiaHRtbF9kb20iLCJwYXJlbnQiLCJjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQiLCJldmVudF9uYW1lIiwid2hlcmUiLCJwcmV2X2h0bWwiLCJwcmV2X2VsdCIsInJlZm9jdXNfcm9vdF9lbGVtZW50IiwiZWxlbWVudCIsInRpbWVyX3N0YXJ0IiwicHJvZmlsZSIsInRpbWVyX3N0b3AiLCJiZWZvcmUiLCJhZnRlciIsInJlbGF0ZWRfdGFyZ2V0Iiwic2FmZV9maWx0ZXIiLCJzaG91bGRfbG9nIiwiZXJyIiwiY3VzdG9tX3ByaW50Zl8wMTAiLCJuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUiLCJjdXN0b21fcHJpbnRmXzAxMiIsInBlcmZvcm1fdXBkYXRlIiwibm93IiwibmV3X21vZGVsIiwic2hvdWxkX2xvZ19hY3Rpb24iLCJuZXdfbW9kZWwkMCIsInJvb3QiLCJhZGRfbmV3X2F0dHJzIiwiYXR0cnMiLCJwYXRjaCIsIm9sZF90YWdfbmFtZSIsIm5ld190YWdfbmFtZSIsInRhZ3NfdGhlX3NhbWUiLCJzdGFydCIsImFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIiwib2xkX21vZGVsIiwiaW5qZWN0IiwiY29tcG9uZW50Iiwic2NoZWR1bGVfZXZlbnQiLCJzY2hlZHVsZV9hY3Rpb24iLCJlcnJvcl9zb3VyY2VfMDE0IiwiaW52YXJpYW50IiwidCIsIm9mX3N0cmluZyIsInMiLCJ0b19zdHJpbmciLCJlcXVhbCIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsImFfMDA1IiwiYl8wMDYiLCJhXzAwOSIsImJfMDEwIiwidXBkYXRlX29mX3NleHAiLCJvZl9hXzAxMSIsInNleHBfMDE2Iiwic2V4cHNfMDE3IiwidmFsdWUiLCJpbnB1dCIsInNleHBzXzAxOSIsImVycm9yIiwibGFzdF92YWxpZCIsInNleHBfb2ZfdXBkYXRlIiwib2ZfYV8wMjEiLCJ2YWx1ZV8wMjUiLCJpbnB1dF8wMjMiLCJhcmdfMDI2IiwiYm5kc18wMjIiLCJhcmdfMDI0IiwiYm5kc18wMjIkMCIsImVycm9yXzAzMiIsImxhc3RfdmFsaWRfMDMwIiwiaW5wdXRfMDI4IiwiYXJnXzAzMyIsImJuZHNfMDI3IiwiYXJnXzAzMSIsImJuZHNfMDI3JDAiLCJhcmdfMDI5IiwiYm5kc18wMjckMSIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsInYyIiwidjEiLCJzaXplIiwidjMiLCJ2MiQwIiwidjEkMCIsInNpemUkMCIsInNpemUkMSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJ1ZiIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QiLCJiaW5fd3JpdGVyX2EiLCJ2IiwiYmluX3JlYWRfdCIsIm9mX2EiLCJwb3NfcmVmIiwidmludCIsImJpbl9yZWFkX3QkMCIsInZfaW5wdXQiLCJ2X3ZhbHVlIiwidl9pbnB1dCQwIiwidl9sYXN0X3ZhbGlkIiwidl9lcnJvciIsImJpbl9yZWFkZXJfdCIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCIsImJpbl9hIiwiY29tcGFyZSIsImFfMDM1IiwiYl8wMzYiLCJuIiwiYV8wMzkiLCJiXzA0MCIsIm4kMCIsIm4kMSIsImFfMDQzIiwiYl8wNDQiLCJlcXVhbF91cGRhdGUiLCJhXzA0NSIsImJfMDQ2IiwiYV8wNDciLCJiXzA0OCIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdXBkYXRlIiwiYmluX3NpemVfdXBkYXRlIiwiYmluX3dyaXRlX3VwZGF0ZSIsImJpbl93cml0ZXJfdXBkYXRlIiwiYmluX3JlYWRfdXBkYXRlIiwiYmluX3JlYWRfdXBkYXRlJDAiLCJiaW5fcmVhZGVyX3VwZGF0ZSIsImJpbl91cGRhdGUiLCJjb21wYXJlX3VwZGF0ZSIsImFfMDU0IiwiYl8wNTUiLCJhXzA1NiIsImJfMDU3IiwibGlmdCIsIk0iLCJpbnB1dCQxIiwiaW5wdXQkMCIsImV4biQwIiwiZXhuIiwicmV0dXJuJDAiLCJnZXRfY3VycmVudCIsImdldF9sYXN0IiwiZ2V0X2Vycm9yIiwiaXNfaW5pdGlhbF9lbXB0eSIsInVwZGF0ZSIsIm9sZCIsIm5ldyQwIiwib2xkJDAiLCJlcnJvciQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsIm1heWJlX2Rpc2FibGVkIiwiZGlzYWJsZWQiLCJhdHRycyIsImFkZF9hdHRycyIsImF0dHJzJDAiLCJtZXJnZSIsInN0cnVjdHVyYWxfbGlzdCIsImNoaWxkcmVuIiwib3JpZW50YXRpb24iLCJtZXJnZV9iZWhhdmlvciIsImxheW91dF9zdHlsZSIsImNoaWxkIiwic2V4cF9vZl90IiwiY29tYmluZSIsImxlZnQiLCJyaWdodCIsImluaXQiLCJlbGVtZW50IiwiZiIsImRvY3VtZW50X2FjdGl2ZV9lbGVtZW50IiwidmFsdWUkMCIsImNoYW5nZV9oYW5kbGVyIiwibm9ybWFsaXplZCIsImNoYW5nZV9oYW5kbGVyJDAiLCJldmVudF9pZCIsIm9uX21vdW50Iiwic3RhdGUiLCJkZXN0cm95IiwidXBkYXRlJDAiLCJvbGRfaW5wdXQiLCJuZXdfaW5wdXQiLCJjcmVhdGUiLCJpbXBsIiwidmFsdWVzIiwic2VsZWN0ZWQiLCJvbl9jaGFuZ2UiLCJleHRyYV9hdHRycyIsImV4dHJhX29wdGlvbl9hdHRycyIsImluZGV4Iiwib2ZfdmFsdWVzIiwib2ZfdmFsdWVzX29wdCIsInBsYWNlaG9sZGVyIiwidmFsdWVzJDAiLCJleHRyYV9vcHRpb25fYXR0cnMkMCIsImFfMDU4IiwiYl8wNTkiLCJhXzA2MCIsImJfMDYxIiwib2ZfZW51bSIsIm9mX2VudW1fb3B0IiwiYV8wNjIiLCJiXzA2MyIsImFfMDY0IiwiYl8wNjUiLCJiYXJlYm9uZXNfYnV0dG9uX2xpa2UiLCJjaGVja2VkIiwiaGlkZV9uYXRpdmVfaW5wdXRzIiwic2ltcGxlIiwiZXh0cmFfYXR0cnMkMCIsImRpc2FibGVkJDAiLCJpc19jaGVja2VkIiwibGFiZWwiLCJvbl90b2dnbGUiLCJldiIsImltcGwkMCIsImxheW91dCIsInN0eWxlIiwibGFiZWxfYXR0cnMiLCJpbnB1dF9hdHRycyIsImxhYmVsX2F0dHJzJDAiLCJpdGVtIiwib2ZfdmFsdWVzJDAiLCJvZl9lbnVtJDAiLCJpbXBsJDEiLCJyZXBlYXRlZF9jbGlja19iZWhhdmlvciIsInRhcmdldCIsIm9wdGlvbnMiLCJzZWxlY3RlZF92YWx1ZXMiLCJpc19zZWxlY3RlZCIsIndhc19yZXBlYXRlZF9jbGljayIsIm9mX3ZhbHVlcyQxIiwib2ZfZW51bSQxIiwibGlzdGVuZXIiLCJub3JtYWxpemUiLCJtYXliZV9vbl9yZXR1cm4iLCJvbl9yZXR1cm4iLCJvbl9yZXR1cm4kMCIsImlucHV0X25vZGUiLCJyYXciLCJvbl9pbnB1dCIsInN0cmluZ2FibGVfaW5wdXRfb3B0IiwidHlwZV9hdHRycyIsImNhbGxfb25faW5wdXRfd2hlbiIsInNob3VsZF9ub3JtYWxpemUiLCJ2YWx1ZSQxIiwib2Zfc3RyaW5nYWJsZSIsInZhbGlkYXRlZCIsIlYiLCJ2YWx1ZV9hdHRyIiwidGV4dCIsInBhc3N3b3JkIiwibnVtYmVyIiwic3RlcCIsInJhbmdlIiwidGltZSIsImRhdGUiLCJkYXRldGltZV9sb2NhbCIsInV0Y19vZmZzZXQiLCJob3VycyIsInpvbmUiLCJwYXJ0cyIsImhyIiwibWluIiwib2ZkYXkiLCJab25lZF90aW1lIiwidGV4dF9hcmVhIiwiY29sb3JfcGlja2VyIiwiZXh0cmFfYXR0ciIsIndpdGhfdmFsaWRhdGlvbiIsInZhbGlkYXRpb24iLCJvbl9jbGljayIsInJlc3VsdCIsInJlYXNvbiIsInNpbXBsZSQwIiwiaW1wbCQyIiwibmFtZSIsIm9mX3ZhbHVlcyQyIiwiRSIsIm9mX3ZhbHVlc19ob3Jpem9udGFsIiwiYWNjZXB0X2F0dHJzIiwiYWNjZXB0cyIsInMkMCIsImxpc3QiLCJhY2NlcHQiLCJmaWxlcyIsInNpbmdsZSIsImZpbGUiLCJlbXB0eSIsImlzX2VtcHR5IiwidCIsInplcm9fYml0IiwiayIsIm0iLCJtZW0iLCJqIiwiciIsImwiLCJsJDAiLCJmaW5kIiwieCIsImZpbmRfb3B0IiwiZmluZF9maXJzdF9vcHQiLCJmIiwicnYiLCJyayIsImx2IiwibGsiLCJ2JDAiLCJmaW5kX2ZpcnN0IiwiZmluZF9sYXN0X29wdCIsImZpbmRfbGFzdCIsIm1hc2siLCJwIiwiam9pbiIsInQxIiwicDEiLCJ0MCIsInAwIiwibWF0Y2hfcHJlZml4IiwiYWRkIiwiaW5zIiwic2luZ2xldG9uIiwidiIsImJyYW5jaCIsInQkMCIsInJlbW92ZSIsInJtdiIsImNhcmRpbmFsIiwiaXRlciIsIm1hcCIsIm1hcGkiLCJmb2xkIiwicyIsImFjY3UiLCJzJDAiLCJhY2N1JDAiLCJhY2N1JDEiLCJmb3JfYWxsIiwiZXhpc3RzIiwiZmlsdGVyIiwicHIiLCJmaWx0ZXJfbWFwIiwicGFydGl0aW9uIiwicGFydCIsImFjYyQwIiwiY2hvb3NlIiwiY2hvb3NlX29wdCIsInNwbGl0IiwiY29sbCIsImIiLCJtaW5fYmluZGluZyIsImJzIiwia3MiLCJidCIsImt0IiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJiaW5kaW5ncyIsImFjYyIsImNvbXBhcmUiLCJjbXAiLCJ0MiIsImNvbXBhcmVfYXV4IiwidDEkMCIsInQyJDAiLCJ4MSIsImsxIiwieDIiLCJrMiIsImMiLCJyMSIsImwxIiwibTEiLCJyMiIsImwyIiwibTIiLCJwMiIsImMkMCIsImMkMSIsImMkMiIsImVxdWFsIiwiZXEiLCJlcXVhbF9hdXgiLCJtZXJnZSIsImFkZCQwIiwidjEiLCJ2MiIsInVwZGF0ZSIsInoiLCJ1bnNpZ25lZF9sdCIsIm4iLCJ0JDIiLCJzMSIsInMwIiwiayQwIiwicSIsInQkMSIsInVuaW9uIiwidG9fc2VxIiwicHJlcGVuZF9zZXEiLCJtJDAiLCJzJDEiLCJ0b19zZXFfZnJvbSIsImtleSIsImFkZF9zZXEiLCJvZl9zZXEiLCJ1dGY4X29mX2NvZGUiLCJidWYiLCJ4IiwiYWRkIiwibWF4Yml0cyIsIm4iLCJ1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIiwiaSIsImoiLCJoaWdoMTAiLCJsb3cxMCIsInZlcnNpb24iLCJqc29uX2Vycm9yIiwicyIsImluaXRfbGV4ZXIiLCJmbmFtZSIsImxudW0iLCJidWYkMCIsImJ1ZiQxIiwib2NhbWxfbGV4X3RhYmxlcyIsInJlYWRfanVuayQwIiwibGV4YnVmIiwib2NhbWxfbGV4X3JlYWRfanVua19yZWMkMCIsInJlYWRfanVuayIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyIsImhleCIsIndyaXRlX3NwZWNpYWwiLCJzcmMiLCJzdGFydCIsInN0b3AiLCJvYiIsInN0ciIsIndyaXRlX3N0cmluZyIsImMiLCJleGMkMCIsImV4YyIsImpzb25fc3RyaW5nX29mX3N0cmluZyIsIndyaXRlX251bGwiLCJ3cml0ZV9ib29sIiwid3JpdGVfZGlnaXRzIiwiZCIsIndyaXRlX2ludCIsImZsb2F0X25lZWRzX3BlcmlvZCIsIndyaXRlX2Zsb2F0IiwiczEiLCJ3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyIsInNpZ25pZmljYW50X2ZpZ3VyZXMiLCJzcHJpbnRmIiwid3JpdGVfZmxvYXRfcHJlYyIsIndyaXRlX3N0ZF9mbG9hdCIsIndyaXRlX3N0ZF9mbG9hdF9wcmVjIiwiaXRlcjIiLCJmX2VsdCIsImZfc2VwIiwibCQwIiwieSQwIiwibCIsInkiLCJ3cml0ZV9qc29uIiwid3JpdGVfYXNzb2MiLCJ3cml0ZV9saXN0IiwiYiIsImYiLCJ3cml0ZV9zdGRfanNvbiIsInRvX2J1ZmZlciIsInN1ZiIsInN0ZCIsInRvX3N0cmluZyIsImxlbiIsIm9iJDAiLCJ0b19jaGFubmVsIiwib2MiLCJ0b19vdXRwdXQiLCJvdXQiLCJ0b19maWxlIiwiZmlsZSIsImUkMCIsImUiLCJzZXFfdG9fYnVmZmVyIiwic3QiLCJzZXFfdG9fc3RyaW5nIiwic2VxX3RvX2NoYW5uZWwiLCJzZXEiLCJqc29uIiwic2VxX3RvX2ZpbGUiLCJzb3J0IiwidiIsImsiLCJsJDEiLCJhIiwicHBfbGlzdCIsInNlcCIsInBweCIsInBwX3NlcCIsImlzX2F0b20iLCJmb3JtYXQiLCJpbnNpZGVfYm94IiwieCQyIiwicyQwIiwieCQwIiwieCQxIiwibmFtZSIsInBwIiwidG9fc3RyaW5nJDAiLCJwcCQwIiwiZm10IiwieHMiLCJ2YWx1ZSIsImtleSIsInhzJDAiLCJzaG93IiwiZXF1YWwiLCJiJDAiLCJhJDAiLCJ5cyIsInJlc3VsdCIsInlzJDAiLCJjb21wYXJlX2tleXMiLCJrZXkkMCIsInhzJDEiLCJ5cyQxIiwicmVzdWx0JDAiLCJ2YWx1ZSQwIiwiYiQxIiwiYSQxIiwiYiQyIiwiYSQyIiwiYiQzIiwiYSQzIiwicHJldHR5X3ByaW50IiwicHJldHR5X3RvX3N0cmluZyIsInByZXR0eV90b19jaGFubmVsIiwid3JpdGVfaW50bGl0Iiwid3JpdGVfZmxvYXRsaXQiLCJ3cml0ZV9zdHJpbmdsaXQiLCJ3cml0ZV90dXBsZSIsIm8iLCJ3cml0ZV92YXJpYW50IiwicyQxIiwicyQyIiwid3JpdGVfc3RkX3R1cGxlIiwid3JpdGVfc3RkX3ZhcmlhbnQiLCJ2JDAiLCJsJDIiLCJ4JDMiLCJvcCIsInJlcHJlc2VudGF0aW9uIiwieCQ0IiwicmVwcmVzZW50YXRpb24kMCIsInR1cCIsImIkNCIsImEkNCIsIm5hbWUkMCIsInRvX2Jhc2ljIiwieCQ2IiwieCQ1IiwiYiQ1IiwiYSQ1IiwicyQzIiwiYiQ2IiwiYSQ2IiwiYiQ3IiwiYSQ3IiwicyQ0IiwieW9qc29uX29mX3VuaXQiLCJ5b2pzb25fb2ZfYm9vbCIsImIiLCJ5b2pzb25fb2Zfc3RyaW5nIiwic3RyIiwieW9qc29uX29mX2J5dGVzIiwiYnl0ZXMiLCJ5b2pzb25fb2ZfY2hhciIsImMiLCJ5b2pzb25fb2ZfaW50IiwibiIsInlvanNvbl9vZl9mbG9hdCIsInlvanNvbl9vZl9pbnQzMiIsInlvanNvbl9vZl9pbnQ2NCIsInlvanNvbl9vZl9uYXRpdmVpbnQiLCJ5b2pzb25fb2ZfcmVmIiwieW9qc29uX29mX2EiLCJyZiIsInlvanNvbl9vZl9sYXp5X3QiLCJsdiIsInlvanNvbl9vZl9vcHRpb24iLCJ4IiwieW9qc29uX29mX3BhaXIiLCJ5b2pzb25fb2ZfYiIsImEiLCJ5b2pzb25fb2ZfdHJpcGxlIiwieW9qc29uX29mX2MiLCJ5b2pzb25fb2ZfbGlzdCIsImxzdCIsInlvanNvbl9vZl9hcnJheSIsImFyIiwibHN0X3JlZiIsImkiLCJ5b2pzb25fb2ZfaGFzaHRibCIsInlvanNvbl9vZl9rZXkiLCJ5b2pzb25fb2ZfdmFsIiwiaHRibCIsImNvbGwiLCJrIiwidiIsImFjYyIsInlvanNvbl9vZl9vcGFxdWUiLCJ5b2pzb25fb2ZfZnVuIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3lvanNvbl9lcnJvcl9leG4iLCJleGMiLCJ5b2pzb24iLCJvZl95b2pzb25fZXJyb3IiLCJ3aGF0IiwidW5pdF9vZl95b2pzb24iLCJib29sX29mX3lvanNvbiIsInN0cmluZ19vZl95b2pzb24iLCJieXRlc19vZl95b2pzb24iLCJjaGFyX29mX3lvanNvbiIsImludF9vZl95b2pzb24iLCJmbG9hdF9vZl95b2pzb24iLCJpbnQzMl9vZl95b2pzb24iLCJpbnQ2NF9vZl95b2pzb24iLCJuYXRpdmVpbnRfb2ZfeW9qc29uIiwicmVmX29mX3lvanNvbiIsImFfb2ZfeW9qc29uIiwibGF6eV90X29mX3lvanNvbiIsIm9wdGlvbl9vZl95b2pzb24iLCJwYWlyX29mX3lvanNvbiIsImJfb2ZfeW9qc29uIiwiYl95b2pzb24iLCJhX3lvanNvbiIsInRyaXBsZV9vZl95b2pzb24iLCJjX29mX3lvanNvbiIsImNfeW9qc29uIiwibGlzdF9vZl95b2pzb24iLCJyZXZfbHN0IiwiYXJyYXlfb2ZfeW9qc29uIiwidCIsImgiLCJsZW4iLCJyZXMiLCJ0JDAiLCJoJDAiLCJoYXNodGJsX29mX3lvanNvbiIsImtleV9vZl95b2pzb24iLCJ2YWxfb2ZfeW9qc29uIiwiYWN0Iiwidl95b2pzb24iLCJrX3lvanNvbiIsIm9wYXF1ZV9vZl95b2pzb24iLCJmdW5fb2ZfeW9qc29uIiwic3ByaW50ZiIsInR1cGxlX29mX3NpemVfbl9leHBlY3RlZCIsImxvYyIsInN0YWdfbm9fYXJncyIsInN0YWdfaW5jb3JyZWN0X25fYXJncyIsInRhZyIsIm1zZyIsInN0YWdfdGFrZXNfYXJncyIsIm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIiwiZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSIsInVuZXhwZWN0ZWRfc3RhZyIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsInJlc3QiLCJmaWVsZCIsInJlc3QkMCIsInJlY29yZF91bmRlZmluZWRfZWxlbWVudHMiLCJ1bmRlZmluZWQkMCIsInJlY29yZF9saXN0X2luc3RlYWRfYXRvbSIsInJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlIiwibm9fdmFyaWFudF9tYXRjaCIsIm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmQiLCJwdGFnX25vX2FyZ3MiLCJwdGFnX2luY29ycmVjdF9uX2FyZ3MiLCJjbnN0ciIsInB0YWdfdGFrZXNfYXJncyIsIm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIiLCJlbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXIiLCJlbXB0eV90eXBlIiwic3ltYm9sIiwiZXF1YWwiLCJ4IiwieSIsImNvbXBhcmUiLCJ0b19pbnQiLCJwcCIsImludGVyc2VjdCIsInN5bWJvbCIsImxldHRlciIsIm5vdF9sZXR0ZXIiLCJmcm9tX2NoYXIiLCJzZXhwIiwiZm10IiwicyIsInBhaXIiLCJwcDEiLCJwcDIiLCJ2MiIsInYxIiwidHJpcGxlIiwicHAzIiwidjMiLCJvcHRpbnQiLCJpIiwicXVvdGUiLCJwcF9vbGlzdCIsInBwX2VsZW0iLCJwcF9zdHJfbGlzdCIsInRvX3RvX3N0cmluZyIsImIiLCJjYW55IiwidW5pb24iLCJsJDAiLCJsIiwibCQyIiwibCQxIiwiciIsImMyIiwiYzEiLCJyJDAiLCJjMiQwIiwiYzEkMCIsImwkMyIsImwkNCIsImludGVyIiwiZGlmZiIsInIkMSIsInNpbmdsZSIsImMiLCJhZGQiLCJzZXEiLCJjJDAiLCJvZmZzZXQiLCJvIiwibWVtIiwicyQwIiwicmVtIiwiaGFzaF9yZWMiLCJqIiwiaGFzaCIsInByaW50X29uZSIsImNoIiwiaXRlciIsInQiLCJmIiwidCQwIiwieHMiLCJvbmVfY2hhciIsInYiLCJ1IiwiZm9sZF9yaWdodCIsImluaXQiLCJjc2luZ2xlIiwiaXNfZW1wdHkiLCJwcmVwZW5kIiwieCQwIiwiZCIsImQkMCIsInBpY2siLCJnZW4iLCJlcHNfZXhwciIsImhhc2hfY29tYmluZSIsImgiLCJhY2N1IiwiZW1wdHkiLCJtZXJnZV9tYXJrc19vZmZzZXQiLCJvbGQiLCJudyIsIm1lcmdlIiwibSIsImFjY3UkMSIsImFjY3UkMiIsImEiLCJhY2N1JDAiLCJpZHgiLCJtYXJrcyIsIm1hcmtzX3NldF9pZHgiLCJwcF9tYXJrcyIsInBwX3NlbSIsImsiLCJwcF9yZXBfa2luZCIsImUiLCJlJDAiLCJlJDEiLCJlJDIiLCJrJDAiLCJlJDMiLCJpJDAiLCJmaXJzdCIsInJlcyIsImNyZWF0ZV9pZHMiLCJta19leHByIiwiaWRzIiwiZGVmIiwiZW1wdHkkMCIsImNzdCIsImFsdCIsImtpbmQiLCJpc19lcHMiLCJleHByIiwiZXBzIiwicmVwIiwic2VtIiwibWFyayIsInBtYXJrIiwiZXJhc2UiLCJtJDAiLCJiZWZvcmUiLCJhZnRlciIsInJlbmFtZSIsInoiLCJ5JDAiLCJnIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwicjEiLCJlMSIsImwxJDEiLCJyMiIsImUyIiwibDIkMSIsInIxJDAiLCJlMSQwIiwibWFya3MxIiwicjIkMCIsImUyJDAiLCJtYXJrczIiLCJyMSQxIiwibWFya3MxJDAiLCJyMiQxIiwibWFya3MyJDAiLCJoYXNoJDAiLCJtYXJrcyQwIiwiYWNjdSQzIiwidHNlcSIsInByaW50X3N0YXRlX3JlYyIsInByaW50X3N0YXRlX2xzdCIsInBwJDAiLCJkdW1teSIsIm1rIiwiY2F0IiwiZGVzYyIsImNyZWF0ZSIsImVxdWFsJDAiLCJoYXNoJDEiLCJjcmVhdGVfd29ya2luZ19hcmVhIiwiaW5kZXhfY291bnQiLCJ3IiwibWFya191c2VkX2luZGljZXMiLCJ0YmwiLCJmcmVlX2luZGV4IiwidGJsX3JlZiIsImxlbiIsImlkeCQwIiwicmVtb3ZlX21hdGNoZXMiLCJzcGxpdF9hdF9tYXRjaCIsInJlbW92ZV9kdXBsaWNhdGVzIiwicHJldiIsInByZXYkMCIsInByZXYkMSIsInByZXYkMiIsInIkMiIsInIkMyIsIngkMSIsInByZXYkMyIsInIkNCIsInNldF9pZHgiLCJmaWx0ZXJfbWFya3MiLCJkZWx0YV8xJDAiLCJuZXh0X2NhdCIsInByZXZfY2F0IiwiZGVsdGFfMiQwIiwiZGVsdGFfMSIsImRlbHRhX3NlcSQwIiwieSQxIiwia2luZCQwIiwicmVwX2tpbmQiLCJ5JDIiLCJtYXJrcyQxIiwieSQzIiwibWFya3MkMiIsImNhdCQwIiwibWFya3MkMyIsImRlbHRhXzIiLCJkZWx0YV9zZXEiLCJkZWx0YV80IiwicmVtJDAiLCJkZWx0YSIsImNoYXIkMCIsInN0IiwiZXhwciQwIiwicmVkX3RyIiwidHIyIiwic3QyIiwiczIiLCJ0cjEiLCJzdDEiLCJzMSIsInByZXBlbmRfZGVyaXYiLCJyZXN0cmljdCIsInMkMSIsInByZXBlbmRfbWFya3NfZXhwcl9sc3QiLCJtJDEiLCJkZXJpdl8xJDAiLCJhbGxfY2hhcnMiLCJjYXRlZ29yaWVzIiwicmVtJDEiLCJkZXJpdl8yJDAiLCJkZXJpdl8xIiwiZGVyaXZfc2VxIiwieiQwIiwicmVtJDIiLCJjYXQkMSIsImRlcml2XzIiLCJ4bCIsInokMSIsImRlcml2XzQiLCJkZXJpdiIsImRlciIsImV4cHIkMSIsInN0YXR1cyIsIm1hIiwic3QkMCIsIm1ha2UiLCJmbGF0dGVuIiwiY20iLCJjb2xvcl9yZXByIiwic3BsaXQiLCJkdW1teV9vZmZzZXQiLCJtMSIsInAxIiwicDIiLCJnZXQiLCJzdGFydCIsInN1YnMiLCJzdG9wIiwidGVzdCIsImdldF9vcHQiLCJhbGxfb2Zmc2V0IiwiYWxsIiwib2Zmc2V0cyIsInN0cnMiLCJtYXRjaGVzIiwicHBfbWF0Y2giLCJzdHIiLCJuYl9ncm91cHMiLCJuIiwibiQwIiwidiQwIiwidiQxIiwibiQxIiwicHBfcmUiLCJyZSIsImdyb3VwX2NvdW50IiwiZ3JvdXBfbmFtZXMiLCJjYXRlZ29yeSIsImNvbG9yIiwiZHVtbXlfbmV4dCIsInVua25vd25fc3RhdGUiLCJicmVhayQwIiwiZmluZF9zdGF0ZSIsIm5jb2wiLCJicmVha19zdGF0ZSIsImluZm8iLCJwb3MiLCJ2YWxpZGF0ZSIsImdldF9jb2xvciIsInNsZW4iLCJzY2FuX3N0ciIsImluaXRpYWxfc3RhdGUiLCJncm91cHMiLCJwb3MkMyIsImxhc3QiLCJpbmZvJDAiLCJzdCQ1IiwicG9zJDQiLCJzdCQzIiwicmVhbF9jIiwic3QkNCIsInBvcyQwIiwicG9zJDEiLCJzdCQxIiwic3QkMiIsInBvcyQyIiwiZmluYWxfYm91bmRhcnlfY2hlY2siLCJmaW5hbF9jYXQiLCJyZXMkMCIsIm1hdGNoX3N0ciIsInBhcnRpYWwiLCJpbml0aWFsX2NhdCIsInN0YXR1cyQwIiwicG1hcmtzIiwibm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSIsImNzZXEiLCJjYWRkIiwidmlldyIsInZhciQwIiwicmVsIiwic3EiLCJyZSQwIiwicmUkMSIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImlzX2NoYXJzZXQiLCJjdXBwZXIiLCJjbG93ZXIiLCJjYWxwaGEiLCJjZGlnaXQiLCJjYWxudW0iLCJjd29yZCIsIngxIiwieDIiLCJ4MSQwIiwieDIkMCIsImVxX2xpc3QiLCJqMiIsImkyIiwieDIkMSIsImoxIiwiaTEiLCJ4MSQxIiwieDIkMiIsInNlbTIiLCJ4MSQyIiwic2VtMSIsIngyJDMiLCJrMiIsIngxJDMiLCJrMSIsIngyJDQiLCJ4MSQ0IiwieDIkNSIsIngxJDUiLCJ4MiQ2IiwieDEkNiIsIngyJDciLCJ4MSQ3IiwibDIkMiIsImwxJDIiLCJ4MiQ4IiwieDIkOSIsIngxJDgiLCJ4MSQ5IiwibTIiLCJzZXF1ZW5jZSIsIm1lcmdlX3NlcXVlbmNlcyIsImVuZm9yY2Vfa2luZCIsImNyIiwidHJhbnNsYXRlIiwiaWduX2Nhc2UiLCJuYW1lcyIsImNhY2hlIiwiaWduX2dyb3VwJDAiLCJncmVlZHkkMCIsInRyYW5zX3NlcSIsIm1lcmdlZF9zZXF1ZW5jZXMiLCJraW5kJDEiLCJjciQwIiwiaiQwIiwia2luZCQyIiwia2luZCQzIiwiY3IkMSIsImdyZWVkeSQxIiwicCIsIm5hbWUiLCJraW5kJDQiLCJjciQyIiwiciQ1Iiwia2luZCQ1IiwiY3IkMyIsInIkNiIsImkkMSIsImtpbmQkNiIsImNyJDQiLCJpZ25fZ3JvdXAiLCJncmVlZHkiLCJhc19zZXQiLCJoYW5kbGVfY2FzZSIsImlnbl9jYXNlJDAiLCJyJDciLCJyJDgiLCJyJDkiLCJyJDEwIiwiciQxMSIsInIkMTIiLCJsJDUiLCJyJDEzIiwiciQxNCIsInIkMTUiLCJhbmNob3JlZCIsImVwc2lsb24iLCJyZXBuIiwicmVwMSIsIm9wdCIsImJvdyIsImVvdyIsIndvcmQiLCJib3MiLCJlb3MiLCJ3aG9sZV9zdHJpbmciLCJsb25nZXN0Iiwic2hvcnRlc3QiLCJub25fZ3JlZWR5IiwiZ3JvdXAiLCJub19ncm91cCIsIm5lc3QiLCJzZXQiLCJyZyIsImNvbXBsIiwiYW55Iiwibm90bmwiLCJsb3dlciIsInVwcGVyIiwiYWxwaGEiLCJkaWdpdCIsImFsbnVtIiwid29yZGMiLCJhc2NpaSIsImJsYW5rIiwiY250cmwiLCJncmFwaCIsInByaW50IiwicHVuY3QiLCJzcGFjZSIsInhkaWdpdCIsImNhc2UkMCIsIm5vX2Nhc2UiLCJjb21waWxlIiwicmVnZXhwJDAiLCJyZWdleHAiLCJsbmwiLCJjb2xvcml6ZSIsInJlZ2V4cCQxIiwicmVnZXhwJDIiLCJuZWVkX2xubCIsIm5jb2xvciIsImNvbG9ycyIsImxubCQwIiwibmNvbG9yJDAiLCJpbml0aWFsIiwiZXhlY19pbnRlcm5hbCIsImV4ZWMiLCJzdWJzdHIiLCJleGVjX29wdCIsImV4ZWNwIiwiZXhlY19wYXJ0aWFsIiwiZXhlY19wYXJ0aWFsX2RldGFpbGVkIiwibWFya2VkIiwibWFya19zZXQiLCJhbGxfc2VxIiwibGltaXQiLCJhdXgiLCJtYXRjaGVzX3NlcSIsInN1YiIsInNwbGl0X2Z1bGxfc2VxIiwic3RhdGUiLCJvbGRfaSIsInRleHQiLCJ0ZXh0JDAiLCJzdGF0ZSQwIiwic3BsaXRfc2VxIiwiZmlsdGVyIiwic2VxJDAiLCJ0bCIsInNlcSQxIiwibGlzdF9vZl9zZXEiLCJzcGxpdF9mdWxsIiwiZ2VuX29mX3NlcSIsInNwbGl0X2dlbiIsInNwbGl0X2Z1bGxfZ2VuIiwiYWxsX2dlbiIsIm1hdGNoZXNfZ2VuIiwicmVwbGFjZSIsImJ1ZiIsInJlcGxhY2luZyIsInJlcGxhY2Vfc3RyaW5nIiwiYnkiLCJ3aXRuZXNzIiwiZnJvbSIsImdldF9vZnMiLCJnZXRfYWxsIiwiZ2V0X2FsbF9vZnMiLCJ0ZXN0MiIsImFjY2VwdCIsImFjY2VwdDIiLCJsZWZ0IiwiYnJhbmNoIiwibGVmdCQwIiwibGVmdCQxIiwiYnJhY2tldCIsInMkMiIsImNvbXBpbGVfcGF0IiwiY29tcGlsZV9yZWdleHAiLCJzdHJpbmdfbWF0Y2giLCJzdHJpbmdfcGFydGlhbF9tYXRjaCIsInNlYXJjaF9mb3J3YXJkIiwic2VhcmNoX2JhY2t3YXJkIiwicCQwIiwicCQxIiwidmFsaWRfZ3JvdXAiLCJvZmZzZXRfZ3JvdXAiLCJyZXBsYWNlbWVudF90ZXh0IiwicmVwbCIsIm9yaWciLCJxIiwicSQwIiwicSQxIiwicCQyIiwibGVuJDAiLCJwJDMiLCJxJDIiLCJxJDMiLCJwJDQiLCJiJDAiLCJxJDUiLCJwJDYiLCJxJDQiLCJwJDUiLCJxJDYiLCJwJDciLCJzdHJpbmdfYmVmb3JlIiwic3RyaW5nX2FmdGVyIiwiZmlyc3RfY2hhcnMiLCJsYXN0X2NoYXJzIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImdyb3VwX2JlZ2lubmluZyIsImdyb3VwX2VuZCIsIm1hdGNoZWRfZ3JvdXAiLCJ0eHQiLCJyZXBsYWNlX21hdGNoZWQiLCJtYXRjaGVkIiwibWF0Y2hfYmVnaW5uaW5nIiwibWF0Y2hfZW5kIiwibWF0Y2hlZF9zdHJpbmciLCJzdWJzdGl0dXRlX2ZpcnN0IiwicmVwbF9mdW4iLCJnbG9iYWxfc3Vic3RpdHV0ZSIsImxhc3Rfd2FzX2VtcHR5Iiwic3RhcnRwb3MiLCJlbmRfcG9zIiwicmVwbF90ZXh0IiwibGFzdF93YXNfZW1wdHkkMCIsImdsb2JhbF9yZXBsYWNlIiwicmVwbGFjZV9maXJzdCIsInNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIiwiYm91bmRlZF9zcGxpdCIsIm51bSIsImJvdW5kZWRfc3BsaXRfZGVsaW0iLCJzcGxpdF9kZWxpbSIsImJvdW5kZWRfZnVsbF9zcGxpdCIsImZ1bGxfc3BsaXQiLCJiZWciLCJtdWwiLCJleHBsaWNpdF9wZXJpb2QiLCJzbGFzaGVzIiwiYXBwZW5kIiwicGllY2UiLCJhbV9hdF9zdGFydF9vZl9jb21wb25lbnQiLCJuZXh0IiwicmVtYWluaW5nIiwib25lIiwiZXhwbGljaXRfc2xhc2giLCJlbmNsb3NlZCIsImhpZ2giLCJsb3ciLCJlbmNsb3NlZF9zZXQiLCJzZXQkMCIsImVuY2xvc3VyZSIsImV4YWN0bHkiLCJzbGFzaGVzJDAiLCJjaGFycyIsIm1hbnlfbWFueSIsImV4cGxpY2l0X3BlcmlvZCQwIiwiZmlyc3RfZXhwbGljaXRfcGVyaW9kIiwibWF0Y2hfY29tcG9uZW50IiwiZ2xvYiIsInBhdGhuYW1lIiwibWF0Y2hfYmFja3NsYXNoZXMiLCJwZXJpb2QiLCJleHBhbmRfYnJhY2VzIiwiZG91YmxlX2FzdGVyaXNrIiwidG9fcmUiLCJyZWFkIiwicGllY2VzIiwiZm91bmQiLCJwaWVjZXMkMCIsInN0YXRlJDgiLCJzdGF0ZSQ5IiwiZXhwbGljaXRfcGVyaW9kJDEiLCJzbGFzaGVzJDEiLCJzdGF0ZSQxMCIsImV4cGxpY2l0X3NsYXNoJDAiLCJub3RfZW1wdHkiLCJtYXliZV9lbXB0eSIsIm5vdF9lbXB0eSQxIiwiZW5jbG9zZWRfc2V0JDAiLCJzdGF0ZSQyIiwic3RhdGUkNCIsIm5vdF9lbXB0eSQwIiwic3RhdGUkNSIsInN0YXRlJDYiLCJlbmNsb3NlZCQwIiwic3RhdGUkNyIsImVuY2xvc2VkJDEiLCJzdGF0ZSQzIiwic3RhdGUkMSIsImVuY2xvc2VkJDIiLCJlbmNsb3NlZCQzIiwiZXhwbCIsImlubmVyIiwiYWNjIiwiYmVnJDAiLCJhY2MkMCIsImJlZyQxIiwiYWNjJDEiLCJpJDMiLCJiZWckMiIsImkkNCIsImkkMiIsImdsb2IkMCIsImdsb2J4IiwiZ2xvYngkMCIsInBvc2l4X2NsYXNzX3N0cmluZ3MiLCJvcHRzIiwidW5ncmVlZHkiLCJkb3RhbGwiLCJkb2xsYXJfZW5kb25seSIsIm11bHRpbGluZSIsImFjY2VwdF9zIiwidW5nZXQiLCJncmVlZHlfbW9kIiwiZ3IiLCJnciQwIiwiYXRvbSIsImludGVnZXIiLCJoZXhkaWdpdCIsImNvZGUiLCJzJDMiLCJzJDQiLCJjbGFzcyQwIiwicG9zaXhfY2xhc3MiLCJwYXQiLCJmbGFncyIsImV4dHJhY3QiLCJyZXgiLCJnZXRfc3Vic3RyaW5nIiwiZ2V0X25hbWVkX3N1YnN0cmluZyIsImdldF9zdWJzdHJpbmdfb2ZzIiwicG1hdGNoIiwic3Vic3RpdHV0ZSIsInN1YnN0Iiwic3MiLCJmaW4iLCJtYXgiLCJyZXN1bHRzIiwiZGVsaW0iLCJuZXdsaW5lIiwibmV3X3N0b3JlIiwiY29weSIsIm1ha2UiLCJzIiwidiIsImZpbmQiLCJ4IiwieSIsInoiLCJsaW5rX3RvX3oiLCJpc19yZXByZXNlbnRhdGl2ZSIsImVxIiwiZ2V0IiwieCQwIiwidiQxIiwidiQwIiwic2V0IiwiciQxIiwiciQwIiwiciIsInVuaW9uIiwieSQwIiwidngiLCJyeCIsInJ5IiwibWVyZ2UiLCJmIiwidnkiLCJsaW5rIiwibWF0Y2giLCJyb290eCIsInJvb3R5IiwiY2hlY2siLCJjb21wYXJlIiwiY3VycmVudCIsInN0YWNrIiwiY29tbWl0Iiwicm9sbGJhY2siLCJ0ZW50YXRpdmVseSIsImIkMCIsImUkMCIsImUiLCJiIiwiZGVmYXVsdF9pbml0aWFsX2xlbmd0aCIsImNvbnRlbnQiLCJsZW5ndGgiLCJsZW5ndGgkMCIsImNvbnRlbnQkMCIsIm5ic3AiLCJsZW5ndGgiLCJzIiwic3RvcCIsInN0YXJ0IiwiY291bnQiLCJuIiwiY291bnQkMCIsInN0YXJ0JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwic3RhcnQkMyIsInNpbmdsZXRvbiIsInBvcyIsIngiLCJ1bmlvbiIsImYiLCJ0MSIsInQyIiwieHMyIiwieDIiLCJwMiIsInhzMSIsIngxIiwicDEiLCJtYXAiLCJyZXN0IiwibWFwaSIsIm1hcGsiLCJmb2xkX2xlZnQiLCJ6JDAiLCJlcnJvcl9zb3VyY2VfMDAyIiwiemVybyIsInRfb2Zfc2V4cCIsInhfMDAzIiwiY29sIiwicm93Iiwic2V4cF9vZl90IiwiY29sXzAwNyIsInJvd18wMDUiLCJhcmdfMDA4IiwiYm5kc18wMDQiLCJhcmdfMDA2IiwiYm5kc18wMDQkMCIsImNvbXBhcmUiLCJwb3MxIiwicG9zMiIsImVycm9yX3NvdXJjZV8wMDQiLCJvZl9hbm5vdF8wMDEiLCJzZXhwXzAwNiIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMjUiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInNleHBfYXJnc18wMTMiLCJhcmcxXzAxNSIsImFyZzBfMDE0IiwicmVzMF8wMTYiLCJyZXMxXzAxNyIsInNleHBfYXJnc18wMDgiLCJhcmcwXzAwOSIsInJlczBfMDEwIiwib2ZfYW5ub3RfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNiIsInJlczFfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJyZXMwXzA0MiIsInJlczFfMDQzIiwiYWxpZ24iLCJsIiwiYW5ub3QiLCJyZW1vdmVfYW5ub3RzIiwibGF5b3V0IiwibGF5b3V0JDAiLCJzdHJpbmciLCJsMiIsImwxIiwibGF5b3V0JDEiLCJta19vZl9sYXlvdXQiLCJ0ZXh0IiwiY29sdW1uIiwiZ28iLCJpbmRlbnQiLCJpbmRlbnQkMCIsImltcDEiLCJpbXAyIiwiaW5kZW50JDEiLCJzdHJpbmdfb2ZfbGF5b3V0IiwicmVjb3JkIiwiczEiLCJzMiIsImltcCIsInN0cmluZ3Nfb2ZfbGF5b3V0IiwicmVzdDIiLCJmaXJzdF9zdHJpbmdfMiIsImZpcnN0X2luZGVudF8yIiwicmVzdDEiLCJsYXN0X3N0cmluZ18xIiwibGFzdF9pbmRlbnRfMSIsInNwbGl0X2ZpcnN0IiwieHMiLCJ0cmFpbGluZyIsImZpcnN0Iiwic3BsaXRfbGFzdF9vcHQiLCJ5cyIsInkiLCJzcGxpdF9sYXN0IiwiciIsImJveCIsImVycm9yX3NvdXJjZV8wMTEiLCJlcnJvcl9zb3VyY2VfMDE2IiwiYm94X29mX3NleHAiLCJ3aWR0aCIsImhlaWdodCIsInNleHBfb2ZfYm94Iiwid2lkdGhfMDA3IiwiaGVpZ2h0XzAwNSIsIm9mX2Fubm90XzAwOSIsInhfMDEyIiwidF9vZl9zZXhwJDAiLCJtZXRyaWNzIiwib2ZfYW5ub3RfMDEzIiwic2V4cF8wMTgiLCJ0YWdfMDE5IiwicmVzMF8wMjciLCJzZXhwX2FyZ3NfMDM3IiwiYXJnMV8wMzkiLCJyZXMwXzA0MCIsInJlczFfMDQxIiwic2V4cF9hcmdzXzAzMCIsImFyZzFfMDMyIiwiYXJnMF8wMzEiLCJyZXMxXzAzNCIsIm9mX2Fubm90XzA0MyIsIm1ldHJpY3NfMDQ3IiwibGF5b3V0XzA0NSIsImFyZ18wNDgiLCJibmRzXzA0NCIsImFyZ18wNDYiLCJzZXhwX29mX3QkMCIsImJuZHNfMDQ0JDAiLCJvZl9hbm5vdF8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzFfMDU1IiwiYXJnMF8wNTQiLCJyZXMwXzA1NiIsInJlczFfMDU3IiwiYXJnMV8wNTkiLCJhcmcwXzA1OCIsInJlczBfMDYwIiwicmVzMV8wNjEiLCJtIiwib2Zmc2V0IiwiZm9sZCIsImxpbmVicmVhayIsImNhdCIsIm0kMCIsIm0yIiwibTEiLCJhY2MxIiwiYWNjMiIsIm0kMSIsImFubiIsIm5leHRfcG9zaXRpb24iLCJ1cGRhdGVkX3JvdyIsImxhc3QiLCJsZWFkaW5nIiwidXBkYXRlZF9jb2wiLCJwb3NfZm9sZCIsIm1pZCIsInRhYmxlIiwibWsiLCJtaWRfYm94IiwibCQwIiwiYm91bmRpbmdfYm94IiwiYnciLCJiaCIsImwkMSIsIm0kMiIsIm92ZXJmbG93X2Nvc3QiLCJoZWlnaHRfY29zdCIsIm1rX2hlaWdodCIsIm1rX292ZXJmbG93IiwiaW5mIiwiYWRkIiwiYzEiLCJjMiIsImVxIiwibHQiLCJsZXEiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZXJyb3Jfc291cmNlXzAwOCIsImVycm9yX3NvdXJjZV8wNjgiLCJlcnJvcl9zb3VyY2VfMDczIiwiaGFzaCIsImVxdWFsIiwidzIiLCJ3MSIsIm9mX2Fubm90XzA2NiIsInhfMDY5IiwiZG9jIiwibWVtIiwib2ZfYW5ub3RfMDcwIiwic2V4cF8wNzUiLCJ0YWdfMDc2Iiwic2V4cF9hcmdzXzA4OSIsImFyZzBfMDkwIiwicmVzMF8wOTEiLCJzZXhwX2FyZ3NfMDk0IiwiYXJnMV8wOTYiLCJhcmcwXzA5NSIsInJlczBfMDk3IiwicmVzMV8wOTgiLCJzZXhwX2FyZ3NfMDgyIiwiYXJnMV8wODQiLCJhcmcwXzA4MyIsInJlczBfMDg1IiwicmVzMV8wODYiLCJzZXhwX2FyZ3NfMTAxIiwiYXJnMV8xMDMiLCJhcmcwXzEwMiIsInJlczBfMTA0IiwicmVzMV8xMDUiLCJzZXhwX2FyZ3NfMDc3IiwiYXJnMF8wNzgiLCJyZXMwXzA3OSIsIm9mX2Fubm90XzEwNyIsImRvY18xMTEiLCJtZW1fMTA5IiwiYXJnXzExMiIsImJuZHNfMTA4IiwiYXJnXzExMCIsImJuZHNfMTA4JDAiLCJvZl9hbm5vdF8xMTMiLCJhcmcwXzExNCIsInJlczBfMTE1IiwiYXJnMV8xMTciLCJhcmcwXzExNiIsInJlczBfMTE4IiwicmVzMV8xMTkiLCJhcmcwXzEyMCIsInJlczBfMTIxIiwiYXJnMV8xMjMiLCJhcmcwXzEyMiIsInJlczBfMTI0IiwicmVzMV8xMjUiLCJhcmcxXzEyNyIsImFyZzBfMTI2IiwicmVzMF8xMjgiLCJyZXMxXzEyOSIsInRfb2ZfdCIsInQiLCJmYWlsIiwiZW1wdHkiLCJzcGFjZSIsImluZGVudF9hbmRfYWxpZ24iLCJoY2F0IiwiaGNhdHMiLCJkb2NzIiwiaHNlcCIsImhzZXBzIiwidnNlcCIsInZzZXBzIiwiY2hvaWNlIiwiY2hvaWNlcyIsIm1hcF90IiwiZCIsIm1hcF9hbm5vdCIsImQyIiwiZDEiLCJkJDAiLCJkJDEiLCJkMiQwIiwiZDEkMCIsImFsbCIsImxzMSIsImxzMiIsIm1fdW5pb24iLCJjb3N0X3VuaW9uIiwiY29zdDIiLCJjb3N0MSIsImxheW91dF9vZl9kb2MiLCJoIiwicG9zJDAiLCJrZXkiLCJ2YWx1ZSIsInZhbHVlJDAiLCJjb3N0Iiwib3ZlcmZsb3ciLCJ6IiwibGF5b3V0MSIsImxheW91dHMiLCJsYXlvdXQyIiwicCIsImMiLCJsMSQwIiwibGF5b3V0X29mX2RvYyQwIiwieF9jb3N0IiwieF9wb3MiLCJzZXhwX2FyZ3NfMDE4IiwiYXJnMF8wMTkiLCJyZXMwXzAyMCIsInJlczBfMDE1Iiwic2V4cF9hcmdzXzAyMyIsImFyZzFfMDI1IiwiYXJnMF8wMjQiLCJyZXMwXzAyNiIsInJlczFfMDI3Iiwib2ZfYW5ub3RfMDI5IiwiYXJnMF8wMzAiLCJyZXMwXzAzMSIsInJlczBfMDM1IiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJoZWlnaHRfdGJsIiwiaCQwIiwiYnMiLCJicyQwIiwiYiIsImFubm90cyIsImFubm90cyQwIiwiYm94JDAiLCJhbm5vdHMkMSIsImJveCQxIiwiYXBwZW5kX2JveCIsImJveDIiLCJib3gxJDAiLCJhcHBlbmRfbGFzdCIsImJzMSIsImIxIiwiYnMxJDAiLCJhcHBlbmRfbGFzdCQwIiwiYm94MSQxIiwiYW5ub3QkMCIsImJveGVzIiwiYm94ZXMxIiwibGVhZGluZyQwIiwiYm94ZXMyIiwiZXJyb3Jfc291cmNlXzAwMiIsInRwX2xvYyIsImVycm9yX3NvdXJjZV8wMTEiLCJ0cF9sb2MkMCIsImZtdCIsIngiLCJ4JDAiLCJzZXAiLCJzeW50YXhfcmVzdWx0X29mX3NleHAiLCJ4XzAwMyIsInBlcmNlbnRhZ2UiLCJyZXN1bHRzIiwic2V4cF9vZl9zeW50YXhfcmVzdWx0IiwicGVyY2VudGFnZV8wMDciLCJyZXN1bHRzXzAwNSIsImFyZ18wMDgiLCJibmRzXzAwNCIsImFyZ18wMDYiLCJibmRzXzAwNCQwIiwic3ludGF4X3Jlc3VsdF9vZl95b2pzb24iLCJ5b2pzb24iLCJmaWVsZF95b2pzb25zIiwicmVzdWx0c19maWVsZCIsInBlcmNlbnRhZ2VfZmllbGQiLCJkdXBsaWNhdGVzIiwiZXh0cmEiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwicGVyY2VudGFnZV92YWx1ZSIsInJlc3VsdHNfdmFsdWUiLCJ5b2pzb25fb2Zfc3ludGF4X3Jlc3VsdCIsInZfcGVyY2VudGFnZSIsInZfcmVzdWx0cyIsImFyZyIsImJuZHMiLCJhcmckMCIsImJuZHMkMCIsImZpbmRfdmFyX3VwYXQiLCJuYW1lIiwidXBhdCIsInVwYXQkMCIsInVwYXQkMSIsInVwMSIsInVwYXQkMiIsInVwYXQkMyIsInVwMSQwIiwidXBhdCQ0IiwibCIsImFjYyIsInVwIiwiZmluZF9pbl9sZXQiLCJkZWYiLCJkZWYkMCIsInBsIiwidWwiLCJ1ZSIsImRlZiQyIiwiZGVmJDEiLCJmaW5kX2ZuIiwidWV4cCIsInVleHAkMCIsImwkMCIsImJvZHkkMCIsImwkMSIsImFyZ3MiLCJmbiIsInUiLCJ1ZXhwJDMiLCJ1MiIsInUxJDAiLCJsJDIiLCJ1ZXhwJDEiLCJ1ZXhwJDIiLCJ1MSIsInVsJDAiLCJ1MSQxIiwiYm9keSIsImwkMyIsInZhcl9tZW50aW9uX3VwYXQiLCJ2YXJfbWVudGlvbiIsInAiLCJ1cyIsImciLCJwZSIsImUiLCJ2YXJfYXBwbGllZCIsIngkMSIsInVleHAkNCIsInVleHAkNSIsIngkMiIsInVleHAkNiIsInVleHAkNyIsInUxJDIiLCJpc19yZWN1cnNpdmUiLCJmbl9ib2RpZXMiLCJ0YWlsX2NoZWNrIiwiYXJncyQwIiwidTIkMCIsInUyJDEiLCJpc190YWlsX3JlY3Vyc2l2ZSIsImNoZWNrIiwicHJlZGljYXRlcyIsInByZWQiLCJsZW5ndGgiLCJwYXNzaW5nIiwicmVzIiwicHJlZGljYXRlX29mX3NleHAiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDE1IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsInNleHBfYXJnc18wMzAiLCJhcmcwXzAzMSIsInJlczBfMDMyIiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJzZXhwX2FyZ3NfMDI1IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsInNleHBfb2ZfcHJlZGljYXRlIiwiYXJnMF8wMzMiLCJyZXMwXzAzNCIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJhcmcwXzAzNyIsInJlczBfMDM4IiwiYXJnMF8wMzkiLCJyZXMwXzA0MCIsInByZWRpY2F0ZV9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wcmVkaWNhdGUiLCJwcmVkaWNhdGVfZm4iLCJwcmVkaWNhdGUiLCJuYW1lJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJwcmVmaXgiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZXJyb3Jfc291cmNlXzAxMyIsImVycm9yX3NvdXJjZV8wMjgiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wMzgiLCJ0cF9sb2MkMiIsImVycm9yX3NvdXJjZV8wNDkiLCJ0cF9sb2MkMyIsImVycm9yX3NvdXJjZV8wNjAiLCJ0cF9sb2MkNCIsImVycm9yX3NvdXJjZV8wOTQiLCJ0cF9sb2MkNSIsImVycm9yX3NvdXJjZV8xMDEiLCJ0cF9sb2MkNiIsImVycm9yX3NvdXJjZV8xMjAiLCJ0cF9sb2MkNyIsImVycm9yX3NvdXJjZV8xMzMiLCJ0cF9sb2MkOCIsInByZWx1ZGVfa2V5IiwidGVzdF92YWxpZGF0aW9uX2tleSIsInVzZXJfaW1wbF9rZXkiLCJ1c2VyX3Rlc3RzX2tleSIsImluc3RydWN0b3Jfa2V5IiwiaGlkZGVuX3Rlc3RzX2tleSIsImVycm9yX3NvdXJjZV8xNDgiLCJ0cF9sb2MkOSIsIm91dHB1dF9oZWFkZXJfZ3JhZGluZyIsIm1vZHVsZV9uYW1lIiwid3JvbmdfaW1wbF9vZl9zZXhwIiwib2ZfY29kZV8wMDEiLCJ4XzAwNCIsImhpbnQiLCJpbXBsIiwic2V4cF9vZl93cm9uZ19pbXBsIiwib2ZfY29kZV8wMDUiLCJoaW50XzAwOSIsImltcGxfMDA3IiwiYXJnXzAxMCIsImJuZHNfMDA2IiwiYm5kc18wMDYkMCIsIndyb25nX2ltcGxfb2ZfeW9qc29uIiwib2ZfY29kZSIsImltcGxfZmllbGQiLCJoaW50X2ZpZWxkIiwiaGludF92YWx1ZSIsImltcGxfdmFsdWUiLCJ5b2pzb25fb2Zfd3JvbmdfaW1wbCIsInZfaGludCIsInZfaW1wbCIsImhpZGRlbl90ZXN0c19vZl9zZXhwIiwib2ZfY29kZV8wMTEiLCJ4XzAxNCIsImhpbnRzIiwidGVzdHMiLCJzZXhwX29mX2hpZGRlbl90ZXN0cyIsIm9mX2NvZGVfMDE1IiwiaGludHNfMDE5IiwidGVzdHNfMDE3IiwiYXJnXzAyMCIsImJuZHNfMDE2IiwiYXJnXzAxOCIsImJuZHNfMDE2JDAiLCJoaWRkZW5fdGVzdHNfb2ZfeW9qc29uIiwidGVzdHNfZmllbGQiLCJoaW50c19maWVsZCIsImhpbnRzX3ZhbHVlIiwidGVzdHNfdmFsdWUiLCJ5b2pzb25fb2ZfaGlkZGVuX3Rlc3RzIiwidl9oaW50cyIsInZfdGVzdHMiLCJoaW50X29mX3NleHAiLCJzZXhwX29mX2hpbnQiLCJoaW50X29mX3lvanNvbiIsInlvanNvbl9vZl9oaW50Iiwic3ludGF4X3Rlc3Rfb2Zfc2V4cCIsInNleHBfMDI3IiwiYXJnMV8wMjQiLCJhcmcwXzAyMyIsInJlczBfMDI1IiwicmVzMV8wMjYiLCJzZXhwX29mX3N5bnRheF90ZXN0IiwiYXJnMV8wMzAiLCJhcmcwXzAyOSIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJzeW50YXhfdGVzdF9vZl95b2pzb24iLCJ2MSIsInYxJDAiLCJ5b2pzb25fb2Zfc3ludGF4X3Rlc3QiLCJzeW50YXhfdGVzdHNfb2Zfc2V4cCIsInhfMDM0Iiwic2V4cF9vZl9zeW50YXhfdGVzdHMiLCJ4XzAzNSIsInN5bnRheF90ZXN0c19vZl95b2pzb24iLCJ0IiwieW9qc29uX29mX3N5bnRheF90ZXN0cyIsInYiLCJ5b3VyX3Rlc3RzX29mX3NleHAiLCJvZl9jb2RlXzAzNiIsInhfMDM5IiwicHJvdmlkZWQiLCJyZXF1aXJlZCIsInNleHBfb2ZfeW91cl90ZXN0cyIsIm9mX2NvZGVfMDQwIiwicHJvdmlkZWRfMDQ2IiwicmVxdWlyZWRfMDQ0IiwidGVzdHNfMDQyIiwiYXJnXzA0NyIsImJuZHNfMDQxIiwiYXJnXzA0NSIsImJuZHNfMDQxJDAiLCJhcmdfMDQzIiwiYm5kc18wNDEkMSIsInlvdXJfdGVzdHNfb2ZfeW9qc29uIiwicmVxdWlyZWRfZmllbGQiLCJwcm92aWRlZF9maWVsZCIsImZ2YWx1ZSQxIiwicHJvdmlkZWRfdmFsdWUiLCJyZXF1aXJlZF92YWx1ZSIsInlvanNvbl9vZl95b3VyX3Rlc3RzIiwidl9wcm92aWRlZCIsInZfcmVxdWlyZWQiLCJhcmckMSIsImJuZHMkMSIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl9zZXhwIiwieF8wNTAiLCJpbXBsX2dyYWRpbmciLCJtdXRhdGlvbl90ZXN0aW5nIiwidGVzdF92YWxpZGF0aW9uIiwic2V4cF9vZl9wb2ludF9kaXN0cmlidXRpb24iLCJpbXBsX2dyYWRpbmdfMDU2IiwibXV0YXRpb25fdGVzdGluZ18wNTQiLCJ0ZXN0X3ZhbGlkYXRpb25fMDUyIiwiYXJnXzA1NyIsImJuZHNfMDUxIiwiYXJnXzA1NSIsImJuZHNfMDUxJDAiLCJhcmdfMDUzIiwiYm5kc18wNTEkMSIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl95b2pzb24iLCJ0ZXN0X3ZhbGlkYXRpb25fZmllbGQiLCJtdXRhdGlvbl90ZXN0aW5nX2ZpZWxkIiwiaW1wbF9ncmFkaW5nX2ZpZWxkIiwiaW1wbF9ncmFkaW5nX3ZhbHVlIiwibXV0YXRpb25fdGVzdGluZ192YWx1ZSIsInRlc3RfdmFsaWRhdGlvbl92YWx1ZSIsInlvanNvbl9vZl9wb2ludF9kaXN0cmlidXRpb24iLCJ2X2ltcGxfZ3JhZGluZyIsInZfbXV0YXRpb25fdGVzdGluZyIsInZfdGVzdF92YWxpZGF0aW9uIiwidmFsaWRhdGVfcG9pbnRfZGlzdHJpYnV0aW9uIiwicF9vZl9zZXhwIiwib2ZfY29kZV8wNTgiLCJ4XzA2MSIsInN5bnRheF90ZXN0cyIsImhpZGRlbl90ZXN0cyIsImhpZGRlbl9idWdzIiwieW91cl9pbXBsIiwieW91cl90ZXN0cyIsImNvcnJlY3RfaW1wbCIsInByZWx1ZGUiLCJwb2ludF9kaXN0cmlidXRpb24iLCJwcm9tcHQiLCJ2ZXJzaW9uIiwidGl0bGUiLCJzZXhwX29mX3AiLCJvZl9jb2RlXzA2MiIsInN5bnRheF90ZXN0c18wODYiLCJoaWRkZW5fdGVzdHNfMDg0IiwiaGlkZGVuX2J1Z3NfMDgyIiwieW91cl9pbXBsXzA4MCIsInlvdXJfdGVzdHNfMDc4IiwiY29ycmVjdF9pbXBsXzA3NiIsInByZWx1ZGVfMDc0IiwicG9pbnRfZGlzdHJpYnV0aW9uXzA3MiIsInByb21wdF8wNzAiLCJtb2R1bGVfbmFtZV8wNjgiLCJ2ZXJzaW9uXzA2NiIsInRpdGxlXzA2NCIsImFyZ18wODciLCJibmRzXzA2MyIsImFyZ18wODUiLCJibmRzXzA2MyQwIiwiYXJnXzA4MyIsImJuZHNfMDYzJDEiLCJhcmdfMDgxIiwiYm5kc18wNjMkMiIsImFyZ18wNzkiLCJibmRzXzA2MyQzIiwiYXJnXzA3NyIsImJuZHNfMDYzJDQiLCJhcmdfMDc1IiwiYm5kc18wNjMkNSIsImFyZ18wNzMiLCJibmRzXzA2MyQ2IiwiYXJnXzA3MSIsImJuZHNfMDYzJDciLCJhcmdfMDY5IiwiYm5kc18wNjMkOCIsImFyZ18wNjciLCJibmRzXzA2MyQ5IiwiYXJnXzA2NSIsImJuZHNfMDYzJDEwIiwicF9vZl95b2pzb24iLCJ0aXRsZV9maWVsZCIsInZlcnNpb25fZmllbGQiLCJtb2R1bGVfbmFtZV9maWVsZCIsInByb21wdF9maWVsZCIsInBvaW50X2Rpc3RyaWJ1dGlvbl9maWVsZCIsInByZWx1ZGVfZmllbGQiLCJjb3JyZWN0X2ltcGxfZmllbGQiLCJ5b3VyX3Rlc3RzX2ZpZWxkIiwieW91cl9pbXBsX2ZpZWxkIiwiaGlkZGVuX2J1Z3NfZmllbGQiLCJoaWRkZW5fdGVzdHNfZmllbGQiLCJzeW50YXhfdGVzdHNfZmllbGQiLCJmdmFsdWUkMiIsImZ2YWx1ZSQzIiwiZnZhbHVlJDQiLCJmdmFsdWUkNSIsImZ2YWx1ZSQ2IiwiZnZhbHVlJDciLCJmdmFsdWUkOCIsImZ2YWx1ZSQ5IiwiZnZhbHVlJDEwIiwic3ludGF4X3Rlc3RzX3ZhbHVlIiwiaGlkZGVuX3Rlc3RzX3ZhbHVlIiwiaGlkZGVuX2J1Z3NfdmFsdWUiLCJ5b3VyX2ltcGxfdmFsdWUiLCJ5b3VyX3Rlc3RzX3ZhbHVlIiwiY29ycmVjdF9pbXBsX3ZhbHVlIiwicHJlbHVkZV92YWx1ZSIsInBvaW50X2Rpc3RyaWJ1dGlvbl92YWx1ZSIsInByb21wdF92YWx1ZSIsIm1vZHVsZV9uYW1lX3ZhbHVlIiwidmVyc2lvbl92YWx1ZSIsInRpdGxlX3ZhbHVlIiwieW9qc29uX29mX3AiLCJ2X3N5bnRheF90ZXN0cyIsInZfaGlkZGVuX3Rlc3RzIiwidl9oaWRkZW5fYnVncyIsInZfeW91cl9pbXBsIiwidl95b3VyX3Rlc3RzIiwidl9jb3JyZWN0X2ltcGwiLCJ2X3ByZWx1ZGUiLCJ2X3BvaW50X2Rpc3RyaWJ1dGlvbiIsInZfcHJvbXB0Iiwidl9tb2R1bGVfbmFtZSIsInZfdmVyc2lvbiIsInZfdGl0bGUiLCJhcmckMiIsImJuZHMkMiIsImFyZyQzIiwiYm5kcyQzIiwiYXJnJDQiLCJibmRzJDQiLCJhcmckNSIsImJuZHMkNSIsImFyZyQ2IiwiYm5kcyQ2IiwiYXJnJDciLCJibmRzJDciLCJhcmckOCIsImJuZHMkOCIsImFyZyQ5IiwiYm5kcyQ5IiwiYXJnJDEwIiwiYm5kcyQxMCIsImtleV9vZl9zZXhwIiwic2V4cF8wOTMiLCJhcmcxXzA5MCIsImFyZzBfMDg5IiwicmVzMF8wOTEiLCJyZXMxXzA5MiIsInNleHBfb2Zfa2V5IiwiYXJnMV8wOTYiLCJhcmcwXzA5NSIsInJlczBfMDk3IiwicmVzMV8wOTgiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsImtleV9vZiIsImZpbmRfa2V5X29wdCIsImtleSIsInNwZWNzIiwic3BlYyIsInBvc19vZl9zZXhwIiwic2V4cF8xMDMiLCJ0YWdfMTA0Iiwic2V4cF9hcmdzXzEwNSIsImFyZzBfMTA2IiwicmVzMF8xMDciLCJzZXhwX29mX3BvcyIsImFyZzBfMTA4IiwicmVzMF8xMDkiLCJwb3Nfb2ZfeW9qc29uIiwieW9qc29uX29mX3BvcyIsInNwZWNfb2Zfc2V4cCIsInhfMTExIiwic2V4cF9vZl9zcGVjIiwieF8xMTIiLCJzcGVjX29mX3lvanNvbiIsInlvanNvbl9vZl9zcGVjIiwidHJhbnNpdGlvbmFyeV9zcGVjX29mX3NleHAiLCJ4XzExNCIsInNleHBfb2ZfdHJhbnNpdGlvbmFyeV9zcGVjIiwieF8xMTUiLCJ0cmFuc2l0aW9uYXJ5X3NwZWNfb2ZfeW9qc29uIiwieW9qc29uX29mX3RyYW5zaXRpb25hcnlfc3BlYyIsIm1hcCIsImYiLCJ3cm9uZ19pbXBsIiwiZWRzX29mX3NleHAiLCJ4XzExNyIsInNleHBfb2ZfZWRzIiwieF8xMTgiLCJlZHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2VkcyIsInN0YXRlX29mX3NleHAiLCJ4XzEyMSIsImVkcyIsInBvcyIsInNleHBfb2Zfc3RhdGUiLCJlZHNfMTI1IiwicG9zXzEyMyIsImFyZ18xMjYiLCJibmRzXzEyMiIsImFyZ18xMjQiLCJibmRzXzEyMiQwIiwic3RhdGVfb2ZfeW9qc29uIiwicG9zX2ZpZWxkIiwiZWRzX2ZpZWxkIiwiZWRzX3ZhbHVlIiwicG9zX3ZhbHVlIiwieW9qc29uX29mX3N0YXRlIiwidl9lZHMiLCJ2X3BvcyIsImtleV9vZl9zdGF0ZSIsImExIiwicGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwIiwic2V4cF8xMzgiLCJhcmcxXzEzNSIsImFyZzBfMTM0IiwicmVzMF8xMzYiLCJyZXMxXzEzNyIsInNleHBfMTMyIiwiYXJnMV8xMjkiLCJhcmcwXzEyOCIsInJlczBfMTMwIiwicmVzMV8xMzEiLCJzZXhwX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJhcmcxXzE0NCIsImFyZzBfMTQzIiwicmVzMF8xNDUiLCJyZXMxXzE0NiIsImFyZzFfMTQwIiwiYXJnMF8xMzkiLCJyZXMwXzE0MSIsInJlczFfMTQyIiwicGVyc2lzdGVudF9zdGF0ZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcGVyc2lzdGVudF9zdGF0ZSIsImVkaXRvcl9vZl9zdGF0ZSIsImkiLCJwdXRfZWRpdG9yIiwic3RhdGUiLCJlZGl0b3IiLCJuIiwiZWRpdG9ycyIsImVkaXRvcl9wb3NpdGlvbnMiLCJwb3NpdGlvbmVkX2VkaXRvcnMiLCJpZHhfb2ZfcG9zIiwicG9zX29mX2lkeCIsImlkeCIsInN3aXRjaF9lZGl0b3IiLCJpbnN0cnVjdG9yX21vZGUiLCJleGVyY2lzZSIsInppcHBlcl9vZl9jb2RlIiwiY29kZSIsInppcHBlciIsInRyYW5zaXRpb24iLCJwcmVsdWRlJDAiLCJjb3JyZWN0X2ltcGwkMCIsInlvdXJfdGVzdHMkMCIsInlvdXJfaW1wbCQwIiwiaGlkZGVuX2J1Z3MkMCIsImltcGwkMCIsInRlc3RzJDAiLCJ0ZXN0cyQxIiwiaGlkZGVuX3Rlc3RzJDAiLCJlZHNfb2Zfc3BlYyIsInNldHRpbmdzIiwic2V0X2luc3RydWN0b3JfbW9kZSIsIm5ld19tb2RlIiwidmlzaWJsZV9pbiIsInN0YXRlX29mX3NwZWMiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlIiwiemlwcGVycyIsInVucGVyc2lzdF9zdGF0ZSIsInBvc2l0aW9uZWRfemlwcGVycyIsImxvb2t1cCIsImRlZmF1bHQkMCIsInBlcnNpc3RlZF96aXBwZXIiLCJ5b3VyX3Rlc3RzX3Rlc3RzIiwiaGlkZGVuX3Rlc3RzX3Rlc3RzIiwid3JhcF9maWx0ZXIiLCJhY3QiLCJ0ZXJtIiwidGVybV9vZiIsInN0aXRjaDMiLCJlZDEiLCJlZDIiLCJlZDMiLCJzdGl0Y2hfdGVybSIsImluc3RydWN0b3IiLCJ5b3VyX2ltcGxfdGVybSIsInByZWx1ZGVfdGVybSIsInVzZXJfaW1wbF90ZXJtIiwidGVzdF92YWxpZGF0aW9uX3Rlcm0iLCJ1c2VyX3Rlc3RzX3Rlcm0iLCJoaWRkZW5fdGVzdHNfdGVybSIsInN0aXRjaF90ZXJtJDAiLCJzdGl0Y2hfc3RhdGljIiwibWsiLCJpbmZvX21hcCIsInN0aXRjaF9zdGF0aWMkMCIsImhpZGRlbl9idWdzX2tleSIsImtleV9mb3Jfc3RhdGljcyIsInNwbGljZWRfZWxhYnMiLCJ1c2VyX3Rlc3RzIiwidXNlcl9pbXBsIiwiZWxhYiIsInMiLCJoaWRkZW5fYnVnIiwiZW1wdHkiLCJzdGF0aWNzX29ubHkiLCJzdGF0aWNzIiwic3RhdGljc19vZl9zdGljaGVkX2R5bmFtaWNzIiwic3RpdGNoX2R5bmFtaWMiLCJyZXN1bHRfb2YiLCJyZXN1bHRzJDAiLCJ0ZXN0X3ZhbGlkYXRpb24kMCIsInVzZXJfaW1wbCQwIiwidXNlcl90ZXN0cyQwIiwiaW5zdHJ1Y3RvciQwIiwic3RpdGNoX2R5bmFtaWMkMCIsImVkaXRvcl9wcCIsInNlcmlhbGl6YXRpb24iLCJleHBvcnRfbW9kdWxlIiwicmVjb3JkIiwiZGF0YSIsInRyYW5zaXRpb25hcnlfZWRpdG9yX3BwIiwiZXhwb3J0X3RyYW5zaXRpb25hcnlfbW9kdWxlIiwiZXhwb3J0X2dyYWRpbmdfbW9kdWxlIiwiaGVhZGVyIiwiYmxhbmtfc3BlYyIsInJlcXVpcmVkX3Rlc3RzIiwicHJvdmlkZWRfdGVzdHMiLCJudW1fd3JvbmdfaW1wbHMiLCJleGVyY2lzZV9leHBvcnRfb2Zfc2V4cCIsInhfMTU0Iiwic2V4cF8xNTMiLCJhcmcxXzE1MCIsImFyZzBfMTQ5IiwicmVzMF8xNTEiLCJyZXMxXzE1MiIsImV4ZXJjaXNlX2RhdGEiLCJjdXJfZXhlcmNpc2UiLCJzZXhwX29mX2V4ZXJjaXNlX2V4cG9ydCIsImV4ZXJjaXNlX2RhdGFfMTU4IiwiY3VyX2V4ZXJjaXNlXzE1NiIsImFyZ18xNTkiLCJhcmcxXzE2MSIsImFyZzBfMTYwIiwicmVzMF8xNjIiLCJyZXMxXzE2MyIsImJuZHNfMTU1IiwiYXJnXzE1NyIsImJuZHNfMTU1JDAiLCJleGVyY2lzZV9leHBvcnRfb2ZfeW9qc29uIiwiY3VyX2V4ZXJjaXNlX2ZpZWxkIiwiZXhlcmNpc2VfZGF0YV9maWVsZCIsImV4ZXJjaXNlX2RhdGFfdmFsdWUiLCJjdXJfZXhlcmNpc2VfdmFsdWUiLCJ5b2pzb25fb2ZfZXhlcmNpc2VfZXhwb3J0Iiwidl9leGVyY2lzZV9kYXRhIiwidl9jdXJfZXhlcmNpc2UiLCJzZXJpYWxpemVfZXhlcmNpc2UiLCJkZXNlcmlhbGl6ZV9leGVyY2lzZSIsImRlc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCIsImVycm9yX3NvdXJjZV8wMDkiLCJwZXJjZW50YWdlX29mX3NleHAiLCJzZXhwX29mX3BlcmNlbnRhZ2UiLCJwZXJjZW50YWdlX29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJjZW50YWdlIiwicG9pbnRzX29mX3NleHAiLCJzZXhwX29mX3BvaW50cyIsInBvaW50c19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9pbnRzIiwic2NvcmVfb2Zfc2V4cCIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJzZXhwX29mX3Njb3JlIiwiYXJnMV8wMTEiLCJhcmcwXzAxMCIsInJlczBfMDEyIiwicmVzMV8wMTMiLCJzY29yZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc2NvcmUiLCJzY29yZV9vZl9wZXJjZW50IiwicGVyY2VudCIsIm1heF9wb2ludHMiLCJ0ZXN0X3Jlc3VsdHMiLCJyZXBvcnQiLCJudW1fdGVzdHMiLCJudW1fcGFzc2luZyIsInRlc3Rfc3VtbWFyeV9zdHIiLCJoaWRkZW5fYnVnX3N0YXR1cyIsInRlc3RfdmFsaWRhdGlvbl9kYXRhIiwiaGlkZGVuX2J1Z19kYXRhIiwiaGlkZGVuX2J1Z19kYXRhJDAiLCJ0ZXN0X3ZhbGlkYXRpb25fZGF0YSQwIiwidmFsaWRhdGlvbl90ZXN0X21hcCIsImhpZGRlbl9idWdfdGVzdF9tYXAiLCJmb3VuZCIsImluc3RhbmNlX3JlcG9ydHMiLCJpZCIsInN0YXR1cyIsInZhbGlkYXRpb25fdGVzdF9yZXBvcnRzIiwicmVwb3J0cyIsInN0YXR1cyQwIiwibWskMCIsImhpZGRlbl9idWdzX3N0YXRlIiwicGVyY2VudGFnZSQwIiwibnVtX3Bhc3NlZCIsInN1bW1hcnlfc3RyIiwidG90YWwiLCJtayQxIiwiaCIsInN5bnRheF9yZXN1bHRzIiwiciIsIm1rJDIiLCJ0ZXN0X3Jlc3VsdHMkMCIsInN0YXR1c2VzIiwiaGludGVkX3Jlc3VsdHMiLCJwZXJjZW50YWdlJDEiLCJzeW50YXhfcmVwb3J0IiwidGVzdF9zdW1tYXJ5X3N0ciQwIiwibWskMyIsInN0aXRjaGVkX2R5bmFtaWNzIiwib3ZlcmFsbF9zY29yZSIsImltcGxfZ3JhZGluZ19yZXBvcnQiLCJtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCIsInRlc3RfdmFsaWRhdGlvbl9yZXBvcnQiLCJ0dl9tYXgiLCJ0dl9wb2ludHMiLCJtdF9tYXgiLCJtdF9wb2ludHMiLCJpZ19tYXgiLCJpZ19wb2ludHMiLCJ0b3RhbF9wb2ludHMiLCJvdXRwdXRfaGVhZGVyIiwiREVCVUciLCJPTURfREVCVUciLCJkZWJ1ZyIsIndhcm4iLCJtc2ciLCJ3ZSIsInRyYWNrZml4IiwicmFpc2UiLCJlIiwib2ZfbGlzdCIsImwiLCJyIiwiZnNwbGl0X3JldiIsImYiLCJleGNsIiwiYWNjdSIsImwkMCIsInRsIiwicmlnaHQiLCJsZWZ0JDAiLCJ0bCQwIiwibGVmdCIsInJpZ2h0JDAiLCJsZWZ0JDIiLCJ0bCQxIiwibGVmdCQxIiwiZnNwbGl0IiwicmV2IiwiaWRfb2Zfc3RyaW5nIiwiaWRzIiwicyIsIm4iLCJvdXQiLCJzdGFydGVkIiwiaSIsImMiLCJpJDIiLCJpJDAiLCJpJDEiLCJzJDAiLCJpJDQiLCJsYXN0X3RyYWlsaW5nIiwiaSQzIiwiaHRtbGVudGl0aWVzIiwibWQiLCJiIiwiaiQxIiwiaiIsImokMCIsImokNCIsImokMiIsImokMyIsIm1pbmltYWxpemVfYmxhbmtzIiwiZiQwIiwiZWF0IiwiZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXMiLCJodG1sIiwiaHRtbCQwIiwiY3V0X29uX2NoYXJfZnJvbSIsInJlbW92ZV9wcmVmaXhfc3BhY2VzIiwiaHRtbCQyIiwicmVzIiwiYWZ0ZXJfZXEiLCJuYW1lIiwibmFtZSQwIiwiYWZ0ZXJfZXEkMCIsInJlc3QiLCJ2YWx1ZSIsIm5ld19zIiwiYSIsInJlcyQwIiwiaHRtbCQxIiwiZXh0cmFjdF9pbm5lcl9odG1sIiwicCIsImh0bWxfdm9pZF9lbGVtZW50cyIsInN5bWJvbCIsImwxIiwibDIiLCJzZWxmXzEiLCJ0aXRsZSIsInVybCIsImxuIiwibG9vc2VfY29tcGFyZSIsInQxIiwidDIiLCJ0MSQwIiwidDIkMCIsImUxIiwidGwyJDAiLCJlMiQwIiwidGwxJDAiLCJlMSQwIiwidGwyIiwiZTIiLCJ0bDEiLCJ0bDIkMSIsImUyJDEiLCJ0bDEkMSIsImUxJDEiLCJ0bDEkMiIsImMxIiwidGwyJDIiLCJjMiIsImkkNSIsInRsMSQzIiwidGl0bGUxIiwidDEkMSIsImhyZWYxIiwidGwyJDMiLCJ0aXRsZTIiLCJ0MiQxIiwiaHJlZjIiLCJpJDYiLCJpJDciLCJpJDgiLCJ0bDIkNCIsImZhbGxiYWNrMiIsIngyIiwibmFtZTIiLCJyZWZfY29udGFpbmVyMiIsInRsMSQ0IiwiZmFsbGJhY2sxIiwieDEiLCJuYW1lMSIsInJlZl9jb250YWluZXIxIiwiZTEkMiIsInRsMiQ1IiwiZTIkMiIsInRsMSQ1IiwiaSQxMSIsImkkMTIiLCJpJDkiLCJjZmYiLCJpJDEwIiwibDEkMCIsImwyJDAiLCJ0bDIkNiIsImUyJDMiLCJ0bDEkNiIsImUxJDMiLCJpJDEzIiwic2VsZl8yIiwiZW1wdHlfZXh0ZW5zaW9uIiwibm9ybWFsaXNlX21kIiwibG9vcCIsInYiLCJ0bCQyIiwidiQwIiwibG9vcCQwIiwidGwkMyIsInYkMSIsInRsJDQiLCJ2JDIiLCJ0bCQ1IiwidiQzIiwidGwkNiIsInYkNCIsInRsJDciLCJ2JDUiLCJ0bCQxMCIsInRsJDkiLCJ0bCQ4IiwidGwkMTEiLCJ0bCQxMiIsInYkNiIsInRsJDEzIiwidiQ3IiwidGwkMTQiLCJ2JDgiLCJ0bCQxNSIsInYkOSIsInRsJDE2IiwidiQxMCIsInRsJDE3IiwidiQxMSIsInRsJDE4IiwidiQxMiIsImhyZWYiLCJ0bCQxOSIsInYkMTMiLCJzZWxmXzMiLCJ2aXNpdCIsImwkMSIsImwkMiIsImwkMyIsImwkNCIsImwkNSIsImwkNiIsImwkNyIsImwkOCIsImwkOSIsImwkMTAiLCJsJDExIiwibCQxMiIsImwkMTMiLCJsJDE0IiwibCQxNSIsImwkMTYiLCJsJDE3IiwibCQxOCIsImwkMTkiLCJ0bCQyMCIsImwkMjAiLCJ0bCQyMSIsImwkMjEiLCJ0bCQyMiIsImwkMjIiLCJ0bCQyMyIsImwkMjMiLCJ0bCQyNCIsImwkMjQiLCJ0bCQyNSIsImwkMjUiLCJ0bCQyNiIsImwkMjYiLCJ0bCQyNyIsImwkMjciLCJ0bCQyOCIsImwkMjgiLCJkZWZhdWx0X2xhbmd1YWdlIiwidGV4dF9vZl9tZCIsIm1kJDAiLCJ0IiwibWQkMSIsIm1kJDIiLCJjJDAiLCJib2R5IiwiYm9keSQwIiwidCQwIiwidCQxIiwicSIsImFsdCIsIml0ZW0iLCJkZWZhdWx0X2NvZGVfc3R5bGlzdCIsImxhbmciLCJjb2RlIiwiZmlsdGVyX3RleHRfb21kX3JldiIsInJlbW92ZV9saW5rcyIsImh0bWxfYW5kX2hlYWRlcnNfb2ZfbWQiLCJyZW1vdmVfaGVhZGVyX2xpbmtzIiwib3ZlcnJpZGUiLCJwaW5kZW50IiwibmwyYnIiLCJjb2RlX3N0eWxlIiwiaWQiLCJpZHgiLCJoZWFkZXJzIiwiaW5kZW50IiwicyQxIiwiZSQwIiwiZSQxIiwicyQyIiwiaWgiLCJodG1sX29mX21kIiwibWQkMyIsIm1kJDQiLCJlJDIiLCJtZCQ1IiwiZSQzIiwicyQzIiwiaWgkMCIsImlkJDAiLCJtZCQ2IiwibWQkNyIsImUkNCIsIm1kJDgiLCJlJDUiLCJzJDQiLCJpaCQxIiwiaWQkMSIsIm1kJDkiLCJtZCQxMCIsImUkNiIsIm1kJDExIiwiZSQ3IiwicyQ1IiwiaWgkMiIsImlkJDIiLCJtZCQxMiIsIm1kJDEzIiwiZSQ4IiwibWQkMTQiLCJlJDkiLCJzJDYiLCJpaCQzIiwiaWQkMyIsIm1kJDE1IiwibWQkMTYiLCJlJDEwIiwibWQkMTciLCJlJDExIiwicyQ3IiwiaWgkNCIsImlkJDQiLCJtZCQxOCIsInMkOCIsInMkOSIsInMkMTAiLCJtZCQxOSIsInMkMTEiLCJtZCQyMCIsInMkMTIiLCJzJDE0IiwibmV3X2MiLCJsYW5nJDAiLCJzJDE1IiwibmV3X2MkMCIsInMkMTYiLCJzJDE3IiwicyQxOCIsImZhbGxiYWNrIiwidGV4dCIsInJjIiwicyQxOSIsInRpdGxlJDAiLCJocmVmJDAiLCJmYWxsYmFjayQwIiwicmMkMCIsInMkMjAiLCJ0aXRsZSQxIiwic3JjIiwidGFnbmFtZSIsImF0dHJzJDEiLCJhdHRycyQyIiwicyQyMiIsInN0cmluZ19vZl9hdHRycyIsImF0dHJzIiwiYXR0cnMkMCIsInMkMjEiLCJhdHRycyQzIiwidGFnbmFtZSQwIiwiYXR0cnMkNCIsInMkMjMiLCJzJDI0IiwicyQyNSIsInMkMjYiLCJzJDI3IiwicyQyOCIsInMkMjkiLCJzJDMwIiwidGl0bGUkMiIsInNyYyQwIiwiYWx0JDAiLCJzJDMxIiwieCIsInMkMzIiLCJzJDMzIiwicyQxMyIsImxpIiwiY3MiLCJoZWFkZXJzX29mX21kIiwic2V4cHJfb2ZfbWQiLCJ0bCQyOSIsInRsJDMwIiwiZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMiLCJtYXJrZG93bl9vZl9tZCIsImFkZF9zcGFjZXMiLCJyZWZlcmVuY2VzIiwibGlzdF9pbmRlbnQiLCJmc3RfcF9pbl9saSIsImlzX2luX2xpc3QiLCJmc3RfcF9pbl9saSQwIiwiaXNfaW5fbGlzdCQwIiwiYyQxIiwiYyQyIiwiZmlsdGVyIiwiYiQxIiwiYiQyIiwieCQwIiwiaGQiLCJjJDMiLCJmaWx0ZXIkMCIsImIkMyIsImIkNCIsImhkJDAiLCJuJDAiLCJvdXRwdXRfaW5kZW50ZWRfYmxvY2siLCJwJDAiLCJwJDEiLCJuZWVkc19uZXdsaW5lcyIsImEkMCIsImIkMCIsIm5sIiwieCQxIiwic3RyaW5nX29mX3Rva2VuIiwibiQxIiwibiQyIiwibiQzIiwibiQ0IiwibiQ1IiwibiQ2IiwibiQ3IiwibiQ4IiwibiQ5IiwibiQxMCIsIm4kMTEiLCJuJDEyIiwibiQxMyIsIm4kMTQiLCJuJDE1IiwibiQxNiIsIm4kMTciLCJuJDE4IiwibiQxOSIsIm4kMjAiLCJuJDIxIiwibiQyMiIsIm4kMjMiLCJuJDI0IiwibiQyNSIsIm4kMjYiLCJuJDI3IiwibiQyOCIsIm4kMjkiLCJuJDMwIiwibiQzMSIsIm4kMzIiLCJuJDMzIiwibyIsImxlbmd0aCIsInNwbGl0X2ZpcnN0IiwibGV4IiwicmVzdWx0Iiwid29yZCIsInN0YXJ0Iiwibl9vY2MiLCJyJDAiLCJybiIsInciLCJnZXQiLCJsZW5ndGgkMCIsInN1YiIsImFyciIsInBvcyIsImxlbiIsImxleF9iaWdhcnJheSIsIm1ha2Vfc3BhY2UiLCJzdHJpbmdfb2ZfdG9rZW5zIiwiZGVzdHJpbmdfb2ZfdG9rZW5zIiwidGxpc3QiLCJsaW1pdCIsInRsaXN0JDAiLCJ0bGlzdCQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQxMSIsInByZXZpb3VzJDEwIiwicHJldmlvdXMkMTMiLCJwcmV2aW91cyQxMiIsInByZXZpb3VzJDE1IiwicHJldmlvdXMkMTQiLCJwcmV2aW91cyQxNyIsInByZXZpb3VzJDE2IiwicHJldmlvdXMkMTkiLCJwcmV2aW91cyQxOCIsInByZXZpb3VzJDIxIiwicHJldmlvdXMkMjAiLCJwcmV2aW91cyQyMyIsInByZXZpb3VzJDIyIiwicHJldmlvdXMkMjUiLCJwcmV2aW91cyQyNCIsInByZXZpb3VzJDI3IiwicHJldmlvdXMkMjYiLCJwcmV2aW91cyQyOSIsInByZXZpb3VzJDI4IiwicHJldmlvdXMkMzEiLCJwcmV2aW91cyQzMCIsInByZXZpb3VzJDMzIiwicHJldmlvdXMkMzIiLCJwcmV2aW91cyQzNSIsInByZXZpb3VzJDM0IiwicHJldmlvdXMkMzciLCJwcmV2aW91cyQzNiIsInByZXZpb3VzJDM5IiwicHJldmlvdXMkMzgiLCJwcmV2aW91cyQ0MSIsInByZXZpb3VzJDQwIiwicHJldmlvdXMkNDMiLCJwcmV2aW91cyQ0MiIsInByZXZpb3VzJDkiLCJwcmV2aW91cyQ0NCIsInByZXZpb3VzJDQ4IiwicHJldmlvdXMkNDkiLCJwcmV2aW91cyQ3IiwicHJldmlvdXMkNiIsInByZXZpb3VzJDgiLCJwcmV2aW91cyQ1IiwicHJldmlvdXMkNCIsInByZXZpb3VzJDMiLCJwcmV2aW91cyQyIiwicHJldmlvdXMkMCIsInByZXZpb3VzJDEiLCJwcmV2aW91cyQ0NyIsInByZXZpb3VzJDQ2IiwicHJldmlvdXMkNDUiLCJpbmRlbnRzJDEiLCJpbmRlbnRzJDAiLCJpbmRlbnRzJDIiLCJpbmRlbnRzIiwiZGVmYXVsdF9sYW5nIiwiZXh0ZW5zaW9ucyIsImdoX3VlbXBoX29yX2JvbGRfc3R5bGUiLCJibGluZF9odG1sIiwic3RyaWN0X2h0bWwiLCJ3YXJuX2Vycm9yIiwiaHRtbGNvZGVzX3NldCIsImlubGluZV9odG1sdGFnc19zZXQiLCJub3RpbmJvZHl0YWdzIiwiaHRtbHRhZ3Nfc2V0IiwiZml4IiwiYWNjdSQwIiwidGwkMzEiLCJ0bCQzMiIsInRsJDMzIiwidGwkMzQiLCJ0bCQzNSIsInRsJDM2IiwidGwkMzciLCJ0bCQzOCIsInRsJDM5IiwidGwkNDAiLCJ0bCQ0MSIsInRsJDQyIiwidGwkNDMiLCJ0bCQ0NCIsInRsJDQ1IiwidGwkNDYiLCJ0bCQ0NyIsInRsJDQ4IiwidGwkNDkiLCJ0bCQ1MCIsInRsJDUxIiwidGwkNTIiLCJ0bCQ1MyIsInRsJDU0IiwidGwkNTUiLCJ0bCQ1NiIsInRsJDU3IiwidGwkNTgiLCJ0bCQ1OSIsInRsJDYwIiwidGwkNjEiLCJ0bCQ2MiIsInRsJDYzIiwidGwkNjQiLCJ0bCQ2NSIsInRsJDY2IiwidGwkNjciLCJ0bCQ2OCIsInRsJDY5IiwibiQzNCIsInRsJDcwIiwidGwkNzEiLCJuJDM1IiwidGwkNzIiLCJ0bCQ3MyIsIm4kMzYiLCJ0bCQ3NCIsInRsJDc1IiwibiQzNyIsInRsJDc2IiwidGwkNzciLCJuJDM4IiwidGwkNzgiLCJ0bCQ3OSIsIm4kMzkiLCJ0bCQ4MCIsInRsJDgxIiwibiQ0MCIsInRsJDgyIiwidGwkODMiLCJiJDUiLCJuJDQxIiwidGwkODQiLCJ0bCQ4NSIsImIkNiIsIm4kNDIiLCJ0bCQ4NiIsInRsJDg3IiwiYiQ3IiwibiQ0MyIsInRsJDg4IiwidGwkODkiLCJiJDgiLCJuJDQ0IiwidGwkOTAiLCJ0bCQ5MSIsImIkOSIsIm4kNDUiLCJ0bCQ5MiIsInRsJDkzIiwiYiQxMCIsIm4kNDYiLCJ0bCQ5NCIsInRsJDk1IiwiYiQxMSIsIm4kNDciLCJ0bCQ5NiIsInRsJDk3IiwiYiQxMiIsIm4kNDgiLCJ0bCQ5OCIsInRsJDk5IiwiYiQxMyIsIm4kNDkiLCJ0bCQxMDAiLCJ0bCQxMDEiLCJiJDE0IiwibiQ1MCIsInRsJDEwMiIsInRsJDEwMyIsImIkMTUiLCJuJDUxIiwidGwkMTA0IiwidGwkMTA1IiwiYiQxNiIsIm4kNTIiLCJ0bCQxMDYiLCJ0bCQxMDciLCJiJDE3IiwibiQ1MyIsInRsJDEwOCIsInRsJDEwOSIsImIkMTgiLCJuJDU0IiwidGwkMTEwIiwidGwkMTExIiwiYiQxOSIsIm4kNTUiLCJ0bCQxMTIiLCJ0bCQxMTMiLCJiJDIwIiwibiQ1NiIsInRsJDExNCIsInRsJDExNSIsImIkMjEiLCJuJDU3IiwidGwkMTE2IiwidGwkMTE3IiwiYiQyMiIsIm4kNTgiLCJ0bCQxMTgiLCJ0bCQxMTkiLCJiJDIzIiwibiQ1OSIsInRsJDEyMCIsInRsJDEyMSIsImIkMjQiLCJuJDYwIiwidGwkMTIyIiwidGwkMTIzIiwiYiQyNSIsIm4kNjEiLCJ0bCQxMjQiLCJ0bCQxMjUiLCJiJDI2IiwibiQ2MiIsInRsJDEyNiIsInRsJDEyNyIsImIkMjciLCJuJDYzIiwidGwkMTI4IiwidGwkMTI5IiwiYiQyOCIsIm4kNjQiLCJ0bCQxMzAiLCJ0bCQxMzEiLCJiJDI5IiwibiQ2NSIsInRsJDEzMiIsInRsJDEzMyIsImIkMzAiLCJuJDY2IiwidGwkMTM0IiwidGwkMTM1IiwiYiQzMSIsIm4kNjciLCJ0bCQxMzYiLCJ0bCQxMzciLCJiJDMyIiwibiQ2OCIsInRsJDEzOCIsInRsJDEzOSIsImIkMzMiLCJyZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyIsIm1ha2VfcGFyYWdyYXBocyIsImNwJDAiLCJjcCQ1IiwiYWNjdSQxNyIsImIxIiwiYjIiLCJjbGVhbl9wYXJhZ3JhcGhzIiwiYXNzZXJ0X3dlbGxfZm9ybWVkIiwiZXh0cmFjdF9mYWxsYmFjayIsIm1haW5fbG9vcCIsInJlbWFpbnMiLCJyJDEiLCJhY2N1JDIiLCJyJDIiLCJtIiwiYWNjdSQzIiwidW5pbmRlbnRfcmV2IiwibGV4ZW1lcyIsImNsJDAiLCJ5IiwidW5pbmRlbnQiLCJzbmQiLCJmc3QiLCJpc19ibGFuayIsInNlbXBoX29yX2JvbGQiLCJzbV91ZW1waF9vcl9ib2xkIiwiZ2hfdWVtcGhfb3JfYm9sZCIsInVlbXBoX29yX2JvbGQiLCJlYXRfYmxhbmsiLCJzZXRleHRfdGl0bGUiLCJkZXRlY3RfYmFsYW5jZWRfYnFzIiwiciQzIiwiciQ0IiwiciQ1IiwiciQ2IiwiciQ3IiwiYmwiLCJibCQwIiwidGFnX21heWJlX2gxIiwidGFnX21heWJlX2gyIiwidGFnX21kIiwic2VsZl80IiwidGFnX3NldGV4dCIsInBsJDAiLCJybGVmdCQwIiwicmlnaHQkMSIsInJpZ2h0JDIiLCJybGVmdCIsImhyX20iLCJocl9zIiwiaHIiLCJiY29kZSIsImRlZmF1bHRfbGFuZyQwIiwiYWNjdSQxIiwiY2IiLCJjb2RlJDAiLCJjb2RlJDIiLCJjb2RlJDMiLCJjb2RlJDEiLCJjbGVhbl9iY29kZSIsImNvZGUkNCIsInJlYWRfdW50aWxfZ3QiLCJicSIsIm5vX25sIiwiYWNjdSQxOSIsImFjY3UkMjAiLCJ4JDIiLCJyZWFkX3VudGlsX2x0IiwiYWNjdSQxNiIsInJlYWRfdW50aWxfY3BhcmVudGgiLCJyZWFkX3VudGlsX29wYXJlbnRoIiwicmVhZF91bnRpbF9kcSIsInJlYWRfdW50aWxfcSIsInJlYWRfdW50aWxfb2JyYWNrZXQiLCJyZWFkX3VudGlsX2NicmFja2V0IiwicmVhZF91bnRpbF9zcGFjZSIsInJlYWRfdW50aWxfbmV3bGluZSIsInJlYWRfdGl0bGUiLCJoIiwiaCQwIiwibWF5YmVfZXh0ZW5zaW9uIiwibnAiLCJuciIsImsiLCJlbWFpbHN0eWxlX3F1b3RpbmciLCJibG9jayQwIiwiY2wkMiIsImJsb2NrIiwibWF5YmVfcmVmZXJlbmNlIiwibWF5YmVfZGVmIiwicmVtYWlucyQwIiwicmVtYWlucyQxIiwicmVtYWlucyQyIiwidXJsJDAiLCJ1cmwkMSIsImJsYW5rIiwiZmxhZyIsInJlbWFpbnMkMyIsInRleHQkMCIsImZhbGxiYWNrJDEiLCJtYXliZV9saW5rIiwicmVhZF91cmwiLCJyX2NwIiwibF9jcCIsInJfZHEiLCJsX2RxIiwicmVzdCQwIiwiaGFzX3BhcmFncmFwaHMiLCJwYXJzZV9saXN0IiwiZW5kX29mX2l0ZW0iLCJzZWxmXzYiLCJzZWxmXzUiLCJibG9jayQ1IiwicmVzdCQ2IiwiYmxvY2skNiIsInJlc3QkNyIsImJsb2NrJDciLCJyZXN0JDUiLCJibG9jayQ4IiwicmVzdCQ5IiwiYmxvY2skOSIsInJlc3QkMTAiLCJibG9jayQxMCIsInJlc3QkOCIsInJlc3QkMSIsImJsb2NrJDEiLCJibG9jayQyIiwicmVzdCQzIiwiYmxvY2skMyIsInJlc3QkNCIsImJsb2NrJDQiLCJyZXN0JDIiLCJyZXZfdG9fdCIsImFkZCIsInN1Ymxpc3QiLCJpdGVtcyIsIml0ZW0kMCIsIm1ha2VfdXAiLCJpdGVtcyQwIiwibGlzdF9pdGVtcyIsImluZGVudHMkMyIsImluZGVudHMkNCIsIm5ld19pdGVtJDAiLCJwJDIiLCJpdGVtcyQ1IiwiaXRlbXMkMyIsIml0ZW1zJDQiLCJuZXdfaXRlbSQxIiwicCQzIiwiaXRlbXMkOCIsIml0ZW1zJDYiLCJzdWJsaXN0JDAiLCJpdGVtcyQ3IiwibmV3X2l0ZW0iLCJpdGVtcyQxIiwiaXRlbXMkMiIsIm5ld19pdGVtJDIiLCJwJDQiLCJpdGVtcyQ5IiwiaXRlbXMkMTAiLCJuZXdfaXRlbSQzIiwicCQ1IiwiaXRlbXMkMTEiLCJzdWJsaXN0JDEiLCJpdGVtcyQxMiIsIml0ZW1zJDEzIiwiaW5kZW50cyQ1IiwibmV3X2l0ZW0kNCIsInAkNiIsIml0ZW1zJDE0Iiwic3VibGlzdCQyIiwiaXRlbXMkMTUiLCJpdGVtcyQxNiIsImluZGVudHMkNiIsInN0cmluZ19vZl9pdGVtcyIsImluZGVudCQwIiwicnAiLCJpY29kZSIsInNlbGZfNyIsImR1bW15X3RhZyIsInNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSIsInNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbiIsIm5ld2xpbmVzIiwibWF5YmVfYXV0b2VtYWlsIiwiZG9tYWluIiwiZW1haWwiLCJpc19oZXgiLCJtZWRpYXR5cGV0ZXh0b21kIiwibWFpbl9pbXBsX3JldiIsInByZXZpb3VzJDUwIiwicHJldmlvdXMkNTEiLCJsZXhlbWVzJDAiLCJsZXhlbWVzJDEiLCJsZXhlbWVzJDIiLCJwcmV2aW91cyQ1MiIsImxleGVtZXMkMyIsInByZXZpb3VzJDUzIiwibGV4ZW1lcyQ0IiwicHJldmlvdXMkNTQiLCJ3JDAiLCJsZXhlbWVzJDUiLCJwcmV2aW91cyQ1NSIsImxleGVtZXMkNiIsInByZXZpb3VzJDU2IiwiciQ4IiwibGV4ZW1lcyQ3IiwicHJldmlvdXMkNTciLCJyJDkiLCJ3JDEiLCJsZXhlbWVzJDgiLCJyJDEzIiwicHJldmlvdXMkNTgiLCJyJDEwIiwibGV4ZW1lcyQ5IiwicHJldmlvdXMkNTkiLCJyJDExIiwibGV4ZW1lcyQxMCIsInByZXZpb3VzJDYwIiwiciQxMiIsImxleGVtZXMkNjEiLCJyJDExNiIsInQkMyIsImxleGVtZXMkNjIiLCJwcmV2aW91cyQxMDciLCJyJDY1IiwibGV4ZW1lcyQ2MyIsInByZXZpb3VzJDEwOCIsInIkNjYiLCJsZXhlbWVzJDY0IiwicHJldmlvdXMkMTA5IiwiciQ2NyIsImxleGVtZXMkNjUiLCJwcmV2aW91cyQxMTAiLCJyJDY4IiwibGV4ZW1lcyQ2NiIsInByZXZpb3VzJDExMSIsInIkNjkiLCJsZXhlbWVzJDY3IiwicHJldmlvdXMkMTEyIiwiciQ3MCIsImxleGVtZXMkNjgiLCJwcmV2aW91cyQxMTMiLCJyJDcxIiwibGV4ZW1lcyQ2OSIsInByZXZpb3VzJDExNCIsInIkNzIiLCJsZXhlbWVzJDcwIiwicHJldmlvdXMkMTE1IiwiciQ3MyIsImxleGVtZXMkNzEiLCJwcmV2aW91cyQxMTYiLCJyJDc0IiwibGV4ZW1lcyQ3MiIsInByZXZpb3VzJDExNyIsInIkNzUiLCJsZXhlbWVzJDczIiwicHJldmlvdXMkMTE4IiwiciQ3NiIsImxleGVtZXMkNzQiLCJwcmV2aW91cyQxMTkiLCJyJDc3IiwibGV4ZW1lcyQ3NSIsInByZXZpb3VzJDEyMCIsInIkNzgiLCJsZXhlbWVzJDc2IiwicHJldmlvdXMkMTIxIiwiciQ3OSIsImxleGVtZXMkNzciLCJwcmV2aW91cyQxMjIiLCJyJDgwIiwibGV4ZW1lcyQ3OCIsInByZXZpb3VzJDEyMyIsInIkODEiLCJsZXhlbWVzJDc5IiwiciQ4MiIsImxleGVtZXMkODAiLCJyJDgzIiwibGV4ZW1lcyQ4MSIsInIkODQiLCJsZXhlbWVzJDgyIiwiciQ4NSIsImxleGVtZXMkODMiLCJyJDg2IiwibGV4ZW1lcyQ4NCIsInIkODciLCJsZXhlbWVzJDg1IiwiciQ4OCIsImxleGVtZXMkODYiLCJyJDg5IiwibGV4ZW1lcyQ4NyIsInIkOTAiLCJsZXhlbWVzJDg4IiwiciQ5MSIsImxleGVtZXMkODkiLCJyJDkyIiwibGV4ZW1lcyQ5MCIsInIkOTMiLCJsZXhlbWVzJDkxIiwiciQ5NCIsImxleGVtZXMkOTIiLCJyJDk1IiwibGV4ZW1lcyQ5MyIsInIkOTYiLCJsZXhlbWVzJDk0IiwiciQ5NyIsImxleGVtZXMkOTUiLCJyJDk4IiwibGV4ZW1lcyQ5NiIsInIkOTkiLCJsZXhlbWVzJDk3IiwiciQxMDAiLCJsZXhlbWVzJDk4IiwiciQxMDEiLCJsZXhlbWVzJDk5IiwiciQxMDIiLCJsZXhlbWVzJDEwMCIsInIkMTAzIiwibGV4ZW1lcyQxMDEiLCJyJDEwNCIsImxleGVtZXMkMTAyIiwiciQxMDUiLCJsZXhlbWVzJDEwMyIsInIkMTA2IiwibGV4ZW1lcyQxMDQiLCJyJDEwNyIsImxleGVtZXMkMTA1IiwiciQxMDgiLCJsZXhlbWVzJDEwNiIsInIkMTA5IiwibGV4ZW1lcyQxMDciLCJyJDExMCIsImxleGVtZXMkMTA4IiwiciQxMTEiLCJsZXhlbWVzJDEwOSIsInIkMTEyIiwibGV4ZW1lcyQxMTAiLCJyJDExMyIsImxleGVtZXMkMTExIiwiciQxMTQiLCJsZXhlbWVzJDExMiIsInIkMTE1IiwiciQ2NCIsImxleGVtZXMkMTEzIiwibGV4ZW1lcyQxMTQiLCJwcmV2aW91cyQxMjQiLCJyJDExNyIsInByZXZpb3VzJDEyNSIsInIkMTE4IiwibGV4ZW1lcyQxMTkiLCJnIiwibGV4ZW1lcyQxMjMiLCJjb21tZW50cyIsInIkMTMyIiwibGV4ZW1lcyQxMjQiLCJwcmV2aW91cyQxMzIiLCJyJDEzMyIsInByZXZpb3VzJDEzMyIsInIkMTM0IiwidyQ1IiwidyQ2IiwibGV4ZW1lcyQxMjUiLCJnJDAiLCJsZXhlbWVzJDEyNiIsInIkMTM2IiwibGV4ZW1lcyQxMjciLCJyJDEzNyIsInIkMTM1IiwibGV4ZW1lcyQxMjgiLCJyJDEzOCIsImxleGVtZXMkMTI5IiwibGV4ZW1lcyQxMzAiLCJwcmV2aW91cyQxMzQiLCJyJDEzOSIsImxleGVtZXMkMTMxIiwicHJldmlvdXMkMTM1IiwiciQxNDAiLCJsZXhlbWVzJDEzMiIsInByZXZpb3VzJDEzNiIsInIkMTQxIiwicHJldmlvdXMkMTM3IiwiciQxNDIiLCJsZXhlbWVzJDEzMyIsImxleGVtZXMkMTM0IiwieCQzIiwicHJldmlvdXMkMTM4IiwiciQxNDMiLCJtYWluX2ltcGwiLCJsZXhlbWVzJDEzNSIsInByZXZpb3VzJDEzOSIsInIkMTQ0IiwicHJldmlvdXMkMTQwIiwiciQxNDUiLCJsZXhlbWVzJDEzNiIsInIkMTQ2IiwibGV4ZW1lcyQxMzciLCJyJDE0NyIsImxleGVtZXMkMTM4IiwicHJldmlvdXMkMTQxIiwiciQxNDgiLCJsZXhlbWVzJDEzOSIsInByZXZpb3VzJDE0MiIsInIkMTQ5IiwibGV4ZW1lcyQxNDAiLCJwcmV2aW91cyQxNDMiLCJyJDE1MCIsImxleGVtZXMkMTQxIiwiciQxNTEiLCJsZXhlbWVzJDE0MiIsImxleGVtZXMkMTQzIiwieCQ0IiwicHJldmlvdXMkMTQ0IiwiciQxNTIiLCJwcmV2aW91cyQxNDUiLCJyJDE1MyIsImxleGVtZXMkMTQ0IiwicHJldmlvdXMkMTQ2IiwiciQxNTQiLCJwcmV2aW91cyQxNDciLCJyJDE1NSIsImxleGVtZXMkMTQ1IiwidyQ3IiwicHJldmlvdXMkMTQ4IiwiciQxNTYiLCJsZXhlbWVzJDE0NiIsImxleGVtZXMkMTQ3IiwicHJldmlvdXMkMTQ5IiwiciQxNTciLCJsZXhlbWVzJDU4IiwibGV4ZW1lcyQ1OSIsInByZXZpb3VzJDEwNCIsInIkNjEiLCJsZXhlbWVzJDYwIiwicHJldmlvdXMkMTA1IiwiciQ2MiIsInByZXZpb3VzJDEwNiIsInIkNjMiLCJ3JDQiLCJsZXhlbWVzJDEyMCIsInVybCQyIiwibGV4ZW1lcyQxMjIiLCJwcmV2aW91cyQxMzAiLCJyJDEzMCIsInByZXZpb3VzJDEzMSIsInIkMTMxIiwibGV4ZW1lcyQxMjEiLCJ1cmwkMyIsInIkMTI4IiwiciQxMjkiLCJsZXhlbWVzJDExNSIsImxleGVtZXMkMTE2IiwiciQxMjEiLCJ0bHMiLCJsZXhlbWVzJDExNyIsInByZXZpb3VzJDEyNiIsInIkMTE5IiwicHJldmlvdXMkMTI3IiwiciQxMjAiLCJudGwkMCIsIm50bCQxIiwiYWx0JDIiLCJhbHQkMSIsInIkMTI3IiwibnRsIiwicGF0aF90aXRsZSIsInBhdGgiLCJub3RoaW5nIiwiciQxMjUiLCJwYXRoJDAiLCJ0aXRsZSQzIiwiciQxMjQiLCJyJDEyNiIsImxleGVtZXMkMTE4IiwicHJldmlvdXMkMTI4IiwiciQxMjIiLCJwcmV2aW91cyQxMjkiLCJyJDEyMyIsInNwIiwibGV4ZW1lcyQzNyIsInByZXZpb3VzJDg4IiwiciQ0MyIsImxleGVtZXMkMzgiLCJwcmV2aW91cyQ4OSIsInIkNDQiLCJsZXhlbWVzJDQ1IiwicHJldmlvdXMkOTUiLCJsZXhlbWVzJDQ3IiwibGV4ZW1lcyQ1MSIsInIkNTYiLCJsZXhlbWVzJDUyIiwicHJldmlvdXMkOTkiLCJsZXhlbWVzJDQ4IiwiciQ1MiIsImxleGVtZXMkNDkiLCJwcmV2aW91cyQ5NiIsInIkNTMiLCJsZXhlbWVzJDUwIiwicHJldmlvdXMkOTciLCJyJDU0IiwicHJldmlvdXMkOTgiLCJyJDU1IiwibGV4ZW1lcyQ1MyIsInR0bCIsImxleGVtZXMkNTQiLCJwcmV2aW91cyQxMDAiLCJyJDU3IiwicHJldmlvdXMkMTAxIiwiciQ1OCIsImxleGVtZXMkNTUiLCJwcmV2aW91cyQxMDIiLCJyJDU5IiwibGV4ZW1lcyQ1NiIsInByZXZpb3VzJDEwMyIsImxleGVtZXMkNTciLCJyJDYwIiwibGV4ZW1lcyQzOSIsImxleGVtZXMkNDIiLCJyJDQ4IiwibGV4ZW1lcyQ0MyIsInByZXZpb3VzJDkyIiwibGV4ZW1lcyQ0NCIsInByZXZpb3VzJDkzIiwiciQ0OSIsInByZXZpb3VzJDk0IiwiciQ1MCIsImxleGVtZXMkNDAiLCJyJDQ1IiwibGV4ZW1lcyQ0MSIsInByZXZpb3VzJDkwIiwiciQ0NiIsInByZXZpb3VzJDkxIiwiciQ0NyIsImZvbyQxIiwibGV4ZW1lcyQ0NiIsImZvbyQwIiwiZm9vIiwibmV3X3IiLCJyJDUxIiwibGV4ZW1lcyQzNSIsInIkNDEiLCJsZXhlbWVzJDM2IiwicHJldmlvdXMkODciLCJyJDQyIiwidGsiLCJsZXhlbWVzJDMwIiwibGV4ZW1lcyQzMSIsInByZXZpb3VzJDgxIiwiciQzNSIsInByZXZpb3VzJDgyIiwiciQzNiIsImxleGVtZXMkMzIiLCJsZXhlbWVzJDMzIiwicHJldmlvdXMkODMiLCJyJDM3IiwicHJldmlvdXMkODQiLCJyJDM4IiwibGV4ZW1lcyQzNCIsInByZXZpb3VzJDg1IiwiciQzOSIsInByZXZpb3VzJDg2IiwiciQ0MCIsImxleGVtZXMkMjgiLCJwcmV2aW91cyQ3OSIsInIkMzMiLCJ0a3MiLCJ0azAiLCJ0ZXh0JDEiLCJsZXhlbWVzJDI5IiwicHJldmlvdXMkODAiLCJyJDM0IiwibGV4ZW1lcyQyNSIsImxleGVtZXMkMjYiLCJwcmV2aW91cyQ3NiIsInIkMzAiLCJsZXhlbWVzJDI3IiwicHJldmlvdXMkNzciLCJyJDMxIiwicHJldmlvdXMkNzgiLCJyJDMyIiwibGV4ZW1lcyQyMCIsImxleGVtZXMkMjEiLCJwcmV2aW91cyQ3MSIsInIkMjUiLCJwcmV2aW91cyQ3MiIsInIkMjYiLCJsZXhlbWVzJDIyIiwibGV4ZW1lcyQyMyIsInByZXZpb3VzJDczIiwiciQyNyIsInByZXZpb3VzJDc0IiwiciQyOCIsImxleGVtZXMkMjQiLCJwcmV2aW91cyQ3NSIsInIkMjkiLCJsZXhlbWVzJDExIiwidyQyIiwiaHRtbF9zdHVmZiIsInRhZ25hbWV0b3AiLCJtZF9vZl9pbnRlcm1fbGlzdCIsIm1kX29mX2ludGVybV9saXN0JDAiLCJzdHJpbmdfb2ZfdGFnc3RhdHVzIiwidGFnc3RhdHVzIiwidG9rZW5zIiwiYm9keSQxIiwidGFnc3RhdHVzJDAiLCJ0b2tlbnMkMCIsInN0cmluZ19vZl90YWdzdGF0dXMkMCIsInQkNSIsInRva2VucyQ1IiwiYm9keSQ1IiwidG9rZW5zJDE5IiwiYm9keSQ3IiwidGFnc3RhdHVzJDEiLCJ0b2tlbnMkMjAiLCJib2R5JDYiLCJ0b2tlbnMkMjEiLCJ0JDIiLCJib2R5JDgiLCJ0b2tlbnMkMjIiLCJ0b2tlbnMkMjMiLCJ0JDQiLCJ0b2tlbnMkMjQiLCJib2R5JDkiLCJ0b2tlbnMkMjUiLCJ0YWdzdGF0dXMkMiIsInRhZ25hbWUkMSIsImJvZHkkMTAiLCJib2R5JDExIiwidG9rZW5zJDI2IiwiYm9keSQxMiIsInRva2VucyQyNyIsInRva2VucyQyOCIsInRva2VucyQ2IiwidG9rZW5zJDciLCJ0b2tlbnMkOCIsInRva2VucyQxMCIsInRva2VucyQ5IiwidG9rZW5zJDExIiwiYXR0cmlidXRlbmFtZSIsInRva2VucyQxMiIsImF0dHJpYnV0ZW5hbWUkMCIsInRva2VucyQxMyIsInRva2VucyQxNCIsImF0X3ZhbCIsInRva2VucyQxNSIsInRva2VucyQxNiIsImF0X3ZhbCQwIiwidG9rZW5zJDE3IiwidG9rZW5zJDE4IiwiYXR0cnMkNSIsInRva2VucyQzIiwidG9rZW5zJDQiLCJib2R5JDQiLCJib2R5JDMiLCJ0b2tlbnMkMSIsInRva2VucyQyIiwidGFnIiwidGFnJDAiLCJib2R5JDIiLCJsZXhlbWVzJDE1IiwiciQxNyIsInByZXZpb3VzJDY0IiwiciQxOCIsImxleGVtZXMkMTYiLCJwcmV2aW91cyQ2NSIsInIkMTkiLCJwcmV2aW91cyQ2NiIsInIkMjAiLCJsZXhlbWVzJDE3IiwidyQzIiwiaHRtbF9zdHVmZiQwIiwidGFnbmFtZXRvcCQwIiwibGV4ZW1lcyQxOSIsInByZXZpb3VzJDY5IiwiciQyMyIsInByZXZpb3VzJDcwIiwiciQyNCIsImZfYSIsImFkZF90b2tlbl90b19ib2R5IiwidCQ2IiwiYWRkX3Rva2VuX3RvX2JvZHkkMCIsImRlbGltaXRlciIsImJlZm9yZSIsInRhZ25hbWUkMiIsImxleGVtZXMkMTgiLCJoJDEiLCJwcmV2aW91cyQ2NyIsInIkMjEiLCJwcmV2aW91cyQ2OCIsInIkMjIiLCJsZXhlbWVzJDEyIiwibGV4ZW1lcyQxMyIsInByZXZpb3VzJDYxIiwiciQxNCIsImxleGVtZXMkMTQiLCJwcmV2aW91cyQ2MiIsInIkMTUiLCJwcmV2aW91cyQ2MyIsInIkMTYiLCJtYWluX2xvb3BfcmV2IiwibWFpbl9wYXJzZSIsInBhcnNlIiwiZGVmYXVsdF9wYXJzZSIsImQiLCJ3YXJuaW5nIiwibGV4X2Zyb21faW5jaGFubmVsIiwiaWMiLCJpY19jb250ZW50IiwidG9fc3RyaW5nIiwicHAiLCJhdHRyaWJ1dGVzIiwibm9kZW5hbWUiLCJvZl9pbnB1dCIsIm9mX3N0cmluZyIsIm9mX2JpZ2FycmF5Iiwic2V0X2RlZmF1bHRfbGFuZyIsInQkNyIsInQkOCIsInQkOSIsInQkMTAiLCJ0JDExIiwidCQxMiIsInQkMTMiLCJmaW5kX3N0YXJ0JDAiLCJsZXZlbCIsIm51bWJlciIsInN1YnNlY3Rpb25zIiwiZGVhbF93aXRoX2hlYWRlciIsImZpbmRfc3RhcnQiLCJoX2xldmVsIiwic3Vic2VjdGlvbnMkMCIsInN1YnNlY3Rpb25zJDEiLCJtYWtlX3RvYyQwIiwibWluX2xldmVsIiwibWF4X2xldmVsIiwidG9jX2VudHJ5IiwibWFrZV90b2MiLCJzdWJfdG9jIiwidG9jIiwic3ViX3RvYyQwIiwidG9jJDAiLCJkZXB0aCIsImhlYWRlcnMkMCJdLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0cmZ0aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL3ZpcnR1YWxkb20uY29tcGlsZWQuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdGh1bmsuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vaG9va3MuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK29iai5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvYnVpbHRpbi8raWVlZV83NTQuanMiLCIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rZmFpbC5qcyIsIi9idWlsdGluLytzdGRsaWIuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytiaWdhcnJheS5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYXNlX2ludGVybmFsaGFzaF90eXBlcy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3VuaXguanMiLCIvYnVpbHRpbi8rZnMuanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytzeW5jLmpzIiwiL2J1aWx0aW4vK25hdC5qcyIsIi9idWlsdGluLytmc19ub2RlLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2VfYmlnc3RyaW5nL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaWdzdHJpbmdhZi9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3QvcnVudGltZS5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9idWlsdGluLytibGFrZTIuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK2VmZmVjdC5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rcnVudGltZV9ldmVudHMuanMiLCIvYnVpbHRpbi8renN0ZC5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3BhcnNpbmcuanMiLCIvYnVpbHRpbi8rc3RyLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGVhcF9ibG9jay9ydW50aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2phdmFzY3JpcHRfcHJvZmlsaW5nL3J1bnRpbWUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdGltZV9ub3cvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VpdGhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zeXMubWwuaW4iLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3R5cGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYXRvbWljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbExhenkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9ib29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYnl0ZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbWFyc2hhbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGV4aW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3BhcnNpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zdGFjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbXV0ZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2VtYXBob3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2RvbWFpbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2R5bmFycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9wcmludGV4Yy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvaW5fY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9vdXRfY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9kaWdlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYmlnYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2hhc2h0YmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvd2Vhay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2NhbmYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FsbGJhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FtbGludGVybmFsTW9kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VwaGVtZXJvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIwL3NleHBfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnZfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYjAvc2V4cF9jb252X2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIwL3NleHBfY29udl9yZWNvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9nbG9iYWxpemUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9wb2x5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ltcG9ydDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbnQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc3lzMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NoYXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbGlzdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9oYXNoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHB4X2NvbXBhcmVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHB4X2hhc2hfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3dvcmRfc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3ByZXR0eV9wcmludGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZXhuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvd2l0aF9yZXR1cm4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9mbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL21vbmFkX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9tb25hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FwcGxpY2F0aXZlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29tcGFyYXRvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2VpdGhlcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9maWVsZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0cmluZzAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9saXN0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NvbnRhaW5lcl9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29udGFpbmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW5kZXhlZF9jb250YWluZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9yYW5kb21fcmVwci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5X3Blcm11dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbnZhcmlhbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NpZ24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2hhc2hhYmxlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pZGVudGlmaWFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS91bml0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2JpbmFyeV9zZWFyY2gubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iaW5hcnlfc2VhcmNoYWJsZV9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvYmluYXJ5X3NlYXJjaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ieXRlczAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ibGl0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2VxdWVuY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zZXhwYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb2JqX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvdW5pZm9ybV9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2Zsb2F0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ieXRlc190ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0YWdlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaGV4X2xleGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50X2NvbnZlcnNpb25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcG93X292ZXJmbG93X2JvdW5kcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludF9tYXRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcG9wY291bnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zaWduLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3B0aW9uX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NpZ25fb3JfbmFuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWF5YmVfYm91bmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9tYXBfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ub3RoaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbGlua2VkX3F1ZXVlMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2xpbmtlZF9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50NjNfZW11bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludDMyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50NjMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9oYXNodGJsX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9hdmx0cmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYWNrdHJhY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvc3RkbGliMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbG9uZ2lkZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL3BwcmludGFzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF81MDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNTAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDJfNTAxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDFfNTAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAxXzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzUwMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDE0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxNF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxM180MTQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTNfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTJfNDEzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEyXzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDExXzQxMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMV80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMF80MTEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTBfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDlfNDEwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA5XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA4XzQwOS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwN180MDgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDdfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDZfNDA3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA2XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA1XzQwNi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNV80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNF80MDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDRfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDNfNDA0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAzXzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAyXzQwMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2tleXdvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC9zdGRsaWIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvYXN0X2hlbHBlcl9saXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvdmVyc2lvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC93YXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvYXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvbG9jYXRpb25fZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwtY29tcGlsZXItbGlicy9zaGFkb3cvb2NhbWxfc2hhZG93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9wcmludF9kaWZmL3BweGxpYl9wcmludF9kaWZmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9kZXJpdmVycy9wcHhfZGVyaXZlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3RyYXZlcnNlX2J1aWx0aW5zL3BweGxpYl90cmF2ZXJzZV9idWlsdGlucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc3RkcHB4L3N0ZHBweC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXJfZ2VuZXJhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9sb2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2xvbmdpZGVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2NhbGxlcl9pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc3BlbGxjaGVjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RfcGF0dGVybl9nZW5lcmF0ZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hdHRyaWJ1dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2NvZGVfcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvZXhwYW5zaW9uX2NvbnRleHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF90cmF2ZXJzZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc2tpcF9oYXNoX2JhbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9jb2RlX21hdGNoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2V4dGVuc2lvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvY29udGV4dF9mcmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9yZWNvbmNpbGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3F1b3Rlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbWVybGluX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2xvY2F0aW9uX2NoZWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9kcml2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2lnbm9yZV91bnVzZWRfd2FybmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvZGVyaXZpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2V4cGFuc2lvbl9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9wcHhsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL2F0dHJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF95b2pzb25fY29udi9leHBhbmRlci9sYWJlbF93aXRoX25hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL3BweF95b2pzb25fY29udl9leHBhbmRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC1jb21waWxlci9ydW50aW1lL2pzb29fcnVudGltZV9fLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzX29mX29jYW1sX18ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2RvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC90eXBlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2RvbV9odG1sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2Zvcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwveG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvd29ya2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL3dlYlNvY2tldHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvd2ViR0wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcmVnZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL3VybC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9zeXNfanMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcmVzaXplT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcGVyZm9ybWFuY2VPYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9tdXRhdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvanNvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9jU1MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvZG9tX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9kb21fc3ZnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2V2ZW50U291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2ZpcmVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvZ2VvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW50ZXJzZWN0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW50bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi90YWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9wcm9taXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2V6anNfbWluL2xvZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9iaWdJbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvZXpqc19taW4vZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2V6anNfaWRiL2V6anNfaWRiLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3N0ZGlvL2luX2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc3RkaW8vb3V0X2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3NleHBfY29udi9ydW50aW1lLWxpYi9wcHhfc2V4cF9jb252X2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZW51bWVyYXRlL3J1bnRpbWUtbGliL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9hc3NlcnQvcnVudGltZS1saWIvcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfYmVuY2gvcnVudGltZS1saWIvYmVuY2htYXJrX2FjY3VtdWxhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWQ1L21kNV9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2hhcGUvYmluX3NoYXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3N0YWJsZV93aXRuZXNzL3N0YWJsZV93aXRuZXNzL3N0YWJsZV93aXRuZXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC9uYXQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L3dyaXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L3JlYWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC90eXBlX2NsYXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3QvdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC9ibG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9pbmxpbmVfdGVzdC9jb25maWcvaW5saW5lX3Rlc3RfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3RpbWVfbm93L3RpbWVfbm93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9pbmxpbmVfdGVzdC9ydW50aW1lLWxpYi9wcHhfaW5saW5lX3Rlc3RfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9tb2R1bGVfdGltZXIvcnVudGltZS9wcHhfbW9kdWxlX3RpbWVyX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC92YXJpYW50X2FuZF9yZWNvcmRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi90eXBlcmVwL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi90eXBlcmVwL3R5cGVyZXBfb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZV9nZW5lcmljX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC90eXBlX2dlbmVyaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC9tYWtlX3R5cGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZV9hYnN0cmFjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbW1vbi9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0YXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0X3Rlc3RfY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29sbGVjdG9yL2V4cGVjdF90ZXN0X2NvbGxlY3Rvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbmZpZy9leHBlY3RfdGVzdF9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wb3NpdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9jc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhdGVfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL3BhcnNlX2Vycm9yX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wYXJzZV9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9hY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9vbGRfcGFyc2VyX2NvbnRfc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fdGFibGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvYXV0b21hdG9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvb2Zfc2V4cF9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvcGFyc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL3NyY19wb3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi90eXBlX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvbGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi9wcmVfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL3NleHBfd2l0aF9sYXlvdXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvc2V4cF9ncmFtbWFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL2V4bl9tYWdpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zcGxpdHRhYmxlX3JhbmRvbS9zcGxpdHRhYmxlX3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQ2NC5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL2JpZ2FycmF5X2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlX3F1aWNrY2hlY2svZ2VuZXJhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlX3F1aWNrY2hlY2svc2hyaW5rZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9iYXNlX3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdWlfZWZmZWN0L3VpX2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbF9wYXRjaGVzL2pzX29mX29jYW1sX3BhdGNoZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW50X3JlcHIvaW50X3JlcHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9iaWdzdHJpbmcvYmFzZV9iaWdzdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JsaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JpbmFyeV9zZWFyY2hhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZmlsZW5hbWVfYmFzZS9maWxlbmFtZV9iYXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pdl9tYXAvdW5pdl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmQvZW52X3Zhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmQvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kL2NvbW1hbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oZWFwX2Jsb2NrL2hlYXBfYmxvY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS92YWxpZGF0ZS92YWxpZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NleHBhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYmluYWJsZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9wZXJtcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbXBhcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9laXRoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdGFibGVfbW9kdWxlX3R5cGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaW5mby5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX3VuaXRfdGVzdF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9xdWlja2NoZWNrYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL29yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2xpc3QwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYXliZV9ib3VuZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS91bmlvbl9maW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZG91Ymx5X2xpbmtlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oYXNoX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGFzaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oZXhkdW1wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaWRlbnRpZmlhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX2NvbXBhcmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdHJpbmcubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY2hhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NpZ24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaW50MzIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludDYzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX2ludDYzYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbm90aGluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL25ldmVyX3JldHVybnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3JlZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVfdW5pdHMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYmlnc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29yZV9iaW5fcHJvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS96b25lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdmFsaWRhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pdF9vZl90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pcXVlX2lkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdHlwZV9pbW1lZGlhY3kubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90dXBsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RheV9vZl93ZWVrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGlnaXRfc3RyaW5nX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tb250aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RhdGUwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb2ZkYXlfaGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0YWJsZV9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2Zsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3BlcmNlbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zcGFuX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zcGFuX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb2ZkYXlfZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdGltZV9mbG9hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90aW1lX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NwYW5fbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vZmRheV9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYWtlX3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0cmluZ19pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0YWJsZV91bml0X3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9ibGFuZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVfdW5pdHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9mZGVxdWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ZxdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2djLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaG9zdF9hbmRfcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL21ha2Vfc3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcGlkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zaWduYWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zaWduX29yX25hbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NldF9vbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcHJpbnRleGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcHRpb25fYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9sYXp5Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL25vX3BvbHltb3JwaGljX2NvbXBhcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbGlua2VkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGVyaXZpbmdfaGFzaC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RlcXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb3JlX3N5cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JhZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ2J1ZmZlcl9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVzLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JvdW5kZWRfaW5kZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29yZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmRfc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vY3NzX2dlbi9jc3NfdG9rZW5pemVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2Nzc19nZW4vY3NzX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9jc3NfZ2VuL2Nzc19nZW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vZG9tX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9ob29rcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9qc19tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vcmF3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2F0dHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vZ2xvYmFsX2xpc3RlbmVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS90aHVuay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL3Zkb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdmlydHVhbF9kb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5L3RocmVhZF9wb29sX2NwdV9hZmZpbml0eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC90dXBsZV9wb29sL3R1cGxlX3R5cGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdHVwbGVfcG9vbC90dXBsZV9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3RpbWluZ193aGVlbC90aW1pbmdfd2hlZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2NvbmZpZy9hc3luY19rZXJuZWxfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL21vcHRpb24vbW9wdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC9wYWlyaW5nX2hlYXAvcGFpcmluZ19oZWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3NleHBfaGlkZGVuX2luX3Rlc3Qvc2V4cF9oaWRkZW5faW5fdGVzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC91b3B0L3VvcHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3NhZmVfcXVldWUvdGhyZWFkX3NhZmVfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlYnVnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3ByaW9yaXR5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbW9uaXRvcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2V4ZWN1dGlvbl9jb250ZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9leHRlcm5hbF9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9vcl9ldmVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvc2NoZWR1bGVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvam9iX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9zeW5jaHJvbm91c190aW1lX3NvdXJjZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlcjEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL21vbmFkX3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3N0ZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvaXZhcl9maWxsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3RhaWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL21vbml0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYnZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2N5Y2xlX2hvb2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvdGhyb3R0bGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9zdGFja19vcl9jb3VudGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC90aHJvdHRsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2tlcm5lbF9zY2hlZHVsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvcGlwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbXZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbGF6eV9kZWZlcnJlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfY29uZGl0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19nYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfaW52YXJpYW50X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2ludmFyaWFudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfa2VybmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9lYWdlcl9kZWZlcnJlZC9lYWdlcl9kZWZlcnJlZDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2VhZ2VyX2RlZmVycmVkL2VhZ2VyX2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZWFnZXJfZGVmZXJyZWQvZWFnZXJfZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2VhZ2VyX2RlZmVycmVkL2VhZ2VyX2RlZmVycmVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL2J1cy9idXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3BlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9rbm93bl9wcm90b2NvbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9saXN0X3dpdGhfbWF4X2xlbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL25hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC93cml0ZXJfd2l0aF9sZW5ndGgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9kZXNjcmlwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL29yX25vdF9hdXRob3JpemVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcHJvdG9jb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9ycGNfc2hhcGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdHJhbnNwb3J0X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC90cmFuc3BvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbl90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL29uX2V4Y2VwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL2ltcGxlbWVudGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX21ldGFkYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdmVyc2lvbmVkX3JwYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL3BpcGVfdHJhbnNwb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvYXN5bmNfcnBjX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zdHJpbmdleHQvc3RyaW5nZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2JpZ3N0cmluZ2FmL2JpZ3N0cmluZ2FmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL2V4cG9ydGVkX3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL2lucHV0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hbmdzdHJvbS9idWZmZXJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYW5nc3Ryb20vYW5nc3Ryb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdXJpL3VyaS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91cmktc2V4cC91cmlfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19qcy9kZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19qcy9ycGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfanMvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2pzL2h0dHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfanMvYXN5bmNfanMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2pzL2FzeW5jX2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL2JhbGFuY2VkX3JlZHVjZXIvYmFsYW5jZWRfcmVkdWNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9pbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uL2luY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvd2Vha19hcnJheS93ZWFrX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3dlYWtfcG9pbnRlci93ZWFrX3BvaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvd2Vha19oYXNodGJsL3dlYWtfaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9iZWZvcmVfb3JfYWZ0ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2N1dG9mZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9kb3RfdXNlcl9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL25vZGVfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RhYmlsaXphdGlvbl9udW0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvb25fdXBkYXRlX2hhbmRsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvcmFpc2VkX2V4bi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC92YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvdW5vcmRlcmVkX2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYWxhcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RlcF9mdW5jdGlvbl9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYXRfaW50ZXJ2YWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2JpbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL3Njb3BlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2ZyZWV6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9pZl90aGVuX2Vsc2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvam9pbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9zbmFwc2hvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9raW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL25vZGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvcmVjb21wdXRlX2hlYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYWRqdXN0X2hlaWdodHNfaGVhcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9hbGFybV92YWx1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW50ZXJuYWxfb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9yZWR1Y2VfYmFsYW5jZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW5jcmVtZW50YWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYWJzdHJhY3RfYWxnZWJyYS9hYnN0cmFjdF9hbGdlYnJhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfbWFwL2luY3JfbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9tYXAvaW5jcl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9zZWxlY3QvaW5jcl9zZWxlY3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vamF2YXNjcmlwdF9wcm9maWxpbmcvamF2YXNjcmlwdF9wcm9maWxpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vdmRvbV9maWxlX2Rvd25sb2FkL3Zkb21fZmlsZV9kb3dubG9hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyX2RvbS91aV9pbmNyL3VpX2luY3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vY29tcG9uZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2FwcF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2pzX21pc2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vc3RhcnRfYXBwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2lucHV0X3dpZGdldHMvdmRvbV9pbnB1dF93aWRnZXRzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3B0bWFwL3B0bWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3lvanNvbi9jb2RlYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3lvanNvbi9sZXhlcl91dGlscy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vYmFzaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIveW9qc29uL3Jhdy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vc2FmZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfeW9qc29uX2NvbnZfbGliL3lvanNvbl9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF95b2pzb25fY29udl9saWIveW9qc29uX2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252X2xpYi9wcHhfeW9qc29uX2NvbnZfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9kZXJpdmluZy9ydW50aW1lL3BweF9kZXJpdmluZ19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2NhdGVnb3J5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2ZtdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9jc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3BtYXJrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2F1dG9tYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2NvbG9yX21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9ncm91cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9jb3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2VtYWNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3N0ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9nbG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3BlcmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcmUvcGNyZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9wb3NpeC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91bmlvbkZpbmQvVW5pb25GaW5kT3ZlclN0b3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3VuaW9uRmluZC9VbmlvbkZpbmRCYXNpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91bmlvbkZpbmQvU3RvcmVNYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdW5pb25GaW5kL1N0b3JlUmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3VuaW9uRmluZC9TdG9yZVRyYW5zYWN0aW9uYWxSZWYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdW5pb25GaW5kL1N0b3JlVmVjdG9yLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvVW5pY29kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L1Bvc01hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkUG9zaXRpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MYXlvdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MaXN0VXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkTGF5b3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQ29zdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0RvYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0xheW91dE9mRG9jLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQm94LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9TeW50YXhUZXN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9FeGVyY2lzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGluZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGVQcmVsdWRlLnJlIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29tZC9vbWRfdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb21kL29tZF9yZXByZXNlbnRhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX2JhY2tlbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb21kL29tZF9sZXhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX2xleGVyX2ZzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29tZC9vbWRfaHRtbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0ZF9leGl0Lm1sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QSxDOztHOzs7UTtTOzs7RztJO0k7STtHO0U7Ozs7R0FXQyxDQUFDO01BRUU7T0FBSUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJBQyxzQkFBc0JDLFNBQVNGO09BQy9CRyxvQkFBb0JDO09BQ3BCQztNQUdKLEdBQUlGLFdBQVk7T0FDWkUsWUFBWUQsaUJBQWlCRTtP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O09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDOzs7O09BNkpFMnRHO09BQ0FDO09BRUFDO09BU0FDO09BSUFDO09BSUFDO09BV0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BT0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BSUFDO09BR0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUFDO09BU0FDO09BVUFDO09BSUFDO09BSUFDO09BV0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BRUNDO09BU0RDO09BSUFDO09BSUFDO09BU0FDO09BVUFDO09BSUFDO09BSUFDO09BVUFDO09BQ0FDO09BRUFDO09BT0FDO09BSUFDO09BSUFDO09BU0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BSURDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBDRDFzRztPQVlBd1k7T0FDQUU7T0FPQTlYO09BQ0FFO09BQ0E2ckc7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTtJLE07SSxNO0ksc0I7SSxNO0ksTTtJLE07SSxvQjs7Ozs7Ozs7Ozs7SSxVO0ksVTtJLFU7SSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSSxNOzs7OztJO0ssSSxNOzs7Ozs7Ozs7Rzs7STs7OztJOzs7Szs7Ozs7Ozs7Ozs7O0ksaUIsc0I7SSxxQixzQjtJLHNCLHNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7eUIsTzs7eUIsTzs7eUIsTzs7Ozs7O0ssTzs7STtJO0ksTztHOztJO0s7SyxRO2dCOztJOzs7OzJCO21DOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTyw0QyxnQjtHOztJLFU7STtLO2U7OztpQjs7O21CO21CO0k7STtJLE87Rzs7SSxVOztLO0s7O08sVztNLEksSSwyQjs7Ozs7O1k7WTtXOzZCO1MsTztRO1MsTTtTOzs7O1k7O1k7O1k7O1EsTzs7O3NDLE87TTtNOzs7STtJO0c7O0k7Ozs7SztJLE87OztJLEksZ0I7OzsyQixPOzs7STtLLGlCO0s7Tzs7Ozs7SztLOzs7OztNOzs7Ozs7STtHOzs7SyxZOztLO0k7SSxVO0ksTyxXO0c7O0k7O0ssbUI7Szs0Qzs7SyxNO0k7SSxZO0ksSSxVOzs7OztLOztJO0c7O0ksWTs7Ozs7O3dDOztLO007UTtrQjs7O0ksZ0I7STs7Tzs7Ozs7SSxXOzs7SSxVO0ksTzs7MkI7O0c7O0ksVTtJLE87OzJCOztHOztJO2dCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssTztJLE87OztjLE07YTs7O0c7NkIsTyxtQzs7OytDLE87b0QsTztJLEksYTs7Szs7TSxVO0ssSTs7TTs7TyxZO007O00sTTs7Szs7SyxNOztJLEksdUI7O0s7O00sYztLOztLLE07Ozs7SSxTO0k7O0ksTTtHOztJLE87OztjOzs7YTs7RztHO0k7O087O3lCLGtCLG9COztJO0ksTzs0Qyx3QjtHOztJLFM7SSw0QjtJLFc7Rzs7STs7aUI7Szs7O00sYTs7OztHOztJLFk7SSxrQyxNO0k7OztJO0k7OztPOzs7OztRLE87TyxXOzs7Ozs7cUI7Szs7Rzs7STtHOztJLFk7O0ksTzs7O0k7SyxNOzttQjtJOztLOzs7STtHOztJO0k7OztnQjtLLGdDLEk7SyxZOzs7O0c7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7OztxQjtLOztHOztJO0k7Z0IsVzs7O00sTTtLOzs7TSxJO007Ozs7O0c7O0k7STs7OztPOzs7Ozs7OzttQjtLLE07O0c7O0k7STtlLFc7O2lCO0ssOEI7Ozs7Rzs7STtJO21CLFc7O00sTTtLLDRCLHFCOzs7OztHOztJO0ssTTtJO0ssYzs7OztJO3lCLE87d0IsTztLO007Ozs7TTs7Ozs7Rzs7STtJOzs7Z0I7SyxrQyxPO0ssVzs7OztHOztJO0k7OztNLEc7Tzs7Ozs7OztLO2E7Ozs7Rzs7SSxRLE87O0ksTztHO0c7STs7O0k7O0s7O0k7aUI7SyxHLHFDO0s7OztHOztJO0k7aUI7SyxLLDRCO0s7OztHOztJO0s7OztTOzs7WSxZOztZO1c7O0s7Ozs7NEI7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7O00sVyxjO007Ozs7O0c7NEIsTyxzQzs7SSxLO0ssRyw0QjtLLE07OztJO2lCLE07Szs7O00sVztLLEcsZ0M7OztHOztJO0s7SztNO08sTztPLE07TSxlO007TztPLE87Ozs7STs7STtpQixNO0s7OztNLG9CO0ssRyxnQzs7O0c7OztJLEksUTtJO2lCLE07Szs7O00sVztNLFk7SyxHLGlDO0ssRyxnQzs7O0c7O0k7SztNLE87TSxjO0s7Ozs7Z0M7OztHOztJLDBDO0s7O1E7SyxPOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7O0ksVTtJOzs7TztPLE87TTs7STtHOztJLFc7STtLLFE7SyxZO0s7O0c7O0ksSSxPO0k7Z0I7SztNLE87TSxJO0ssWSxNO0s7Ozs7Rzs7STtLLEk7SyxPO0k7SyxRO0ssWSxPO0s7O0c7O0k7O0ssTztLLFc7SztPOzs7SSxJLFU7OztLO0s7SyxNOztJO0ksSSxrRDs7O0s7SyxNOzs7O0ksYztJO2lDLE8sZ0M7aUMsNkI7NkIsTyx1QjtHO29CLHdDOztJO0c7O0ksb0I7Rzs7SSxZO0c7O0k7Ozs7Ozs7Ozs7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLE87SyxTOztJLGM7SSxXO0ksTztHOztJLDhDO0ssTzttQixzQjtJLE87Rzs7STsrQjtHOztJOytCO0c7O0k7O0c7O0k7K0I7Rzs7SSxHLGtCO0ksSTtJO2dDOzs7Ozs7Yzs7Ozs7O087USxZOzs7Ozs7OztHOztJLGM7Ozs7O0s7O007Ozs7Szs7Ozs7TyxxQjs7Ozs7Ozs7TTs7O0k7Rzs7SSxRO0ksVztJLE87Rzs7STtLLFU7SyxXO0k7SztNLE07TSxhOzs7TTtRO3VCOztLOzs7OzRCOzs7Rzs7STtJO3lDOztNLE07SyxXO1EsMEM7OztHOztJO0k7SyxJOzs7O007TztTOzs7OztPLE87TSxPOztLO00sUztzQjtNOzs7O0c7O0k7STt1QztLLFc7Ozs7Ozs7TTs7Ozs7Tzs7UyxXO1EsVzs7Ozs7UTs7Ozs7TTtPO08sWTs7Ozs7Szs7O0c7dUIsd0IsUzs7SSxZO2dCOzs7O0c7MEM7MEM7MEM7MEM7MEM7MEM7MEM7O0k7SyxNO0s7Tzs7Ozs7SSxXO0c7O0k7Ozs7OztRLFc7O1EsVztnQixXOztJO0c7Ryx5Qjs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztLLGtCO0ssTzs7SSxvQjtJLE87Rzs7STs7TTtPLE87Yzs7Ozs7OztJLFc7SSxPO0c7RztJO0k7Ozs7Ozs7STs4QixxQjswQiw0Qjs7STs7Ozs7Ozs7dUIsTTs7STtHOztJOztJO0ksTztHOztJO0c7O0k7SyxZOzs7Szs7O1M7VTtXOztVOzs7O2lDLE87Ozs7O1M7VTtXOztVOzs7O2lDLE87Ozs7OztJO0k7STtHO0c7STtJOzs7O0c7STs7TyxJLEksTzs7Ozs7O087TztRO1M7UyxjOzs7Tzs7TztlOztHOztJOztLO0s7Ozs7Ozs7STtHOztJOzs7SyxPO0ssVztrQixxQztJO1M7STtJOzs7O007TTs7Ozs7STs7OztNO007Ozs7O0k7Ozs7TTtPLE87TyxPOzs7O1E7UyxPO2dCO1M7UztTO1M7Ozs7O1M7Uzs7Uzs7b0I7UyxPOzs7O1UsVzthO1csVztXLEc7WTthO2E7YTs7Ozs7c0I7Ozs7Ozs7UTtROzs7OztNOzs7OztJOzs7Rzs7STs7Ozs7STs7Tzs7MEIsTyxzQzs7SSxPOzs7ZTsyQjtlLHFCOzs7Ozs7Ozs7OztHOztJO0ksYztrQjtJLEk7STtLLE87STtJOztLLE87SSxPOzs7Ozs7Ozs7RztHOztJO0ssSTs7Szs7OztnQjtPLFc7Tzs7TTs7Ozs7SSxPO0c7O0k7O0ssTTs7O0k7OztNLFE7O087TyxJOzs7Ozs7Ozs7Tzs7USxlOzs7Ozs7Ozs7TztPLEk7Ozs7O007Ozs7UTs7O1U7UTs7Ozs7Ozs7OztLLE87O0c7O0k7O0s7Tzs7O1U7VSxPLGdDO1M7OztLLFc7Ozs7OztPO1E7Ozs7Ozs7Ozs7STtJOzs7TztnQztxRDtPLE87Ozs7Ozs7O007O0ksTzs7O0k7SSxPO0c7O0ksWTtnQixPOztJO0ksTztHO0csSSxpQjs7STs7O0ssSSxrQjs7Ozs7O0ssWTs7Ozs7OEI7OztHOztJLGdCO0k7Z0I7O0ksTzs7O2MsZTtjOzs7O2UsTztlLE87YyxXO2E7OztHOztJLFk7STtHOztJOztPOztnQyxPLHFDOztJLE87RztHO0k7STtNOzt1QixpQjs7SSxNO0k7TTs7dUIsaUI7O0ksTTtJLFk7O0k7Ozs7Ozt5QjtxQztxQztxQztxQzs7OztxQzs7c0M7c0M7c0M7c0M7Ozs7O007O0s7O0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Ozs7O0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Rzs7STtJO0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Syx1QjtLLE87O0kseUI7SSxPO0c7RyxJOztJOzs7Ozs7STs7Tzs7SSxPO0c7O0k7SztNO1E7OztTO1U7VSxPO1MsTzs7O1E7SyxPOzs7O0k7SyxhO0s7TztLO2dCOztJLEksYztnQjtJO0c7O0ksYTtJLEk7Ozs7O0ksYTtHOztJLHlDO0ksTzs7O0k7OztROztROztROztROztROztROztRO2dCOzs7O0ssRyx1QztLO007TSxNO007UTs7Ozs7SyxPOzs7SSxHLHlDO0k7SztLLFE7SztPOzs7OztJLE87Rzs7STtJO0s7O1E7VTtLOzs7SyxNOztHOztJO0s7Ozs7TTtNO007TTtLLE87O0k7Ozs7OztLO0s7SSxPO0c7OztJLEc7SztJOzs7O0k7NkM7STs7SyxPO0s7eUI7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7O00sSTtLLGlCOzs7O0ssTzs7O0s7OztNLE07TSxVO0ssTzs7O0s7Ozs7O00sTTtLOzs7O0ssTzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssTzs7O2U7ZSxPO2M7OztJOztLLE87OztlO3VDOzs7ZSxPOzs7OzttQjs7Ozs7Ozs7OzswQjtlLE87Yzs7O0k7O0ssTzs7O2U7OzRCO2U7Yzs7O0k7Z0MsMkI7OztNOzs7USxXOzs7Ozs7TTtLO0ssTztJOztLLEksVSx3Qjs7OzRCOzs7STs7SyxVO0s7Yzs7O2lCO2lCLFc7Z0I7O0k7OztNLE87OztnQixPOztlOztLO0ssTztJOzs7SyxPOztzQyxPLDZCOzs7STs7SyxVO0ssTywwQztJOztLLE87OztlLE8sbUI7Yzs7O0k7O0ssTzs7Z0MsTyx5Qjs7O0k7O0ssTzs7O2U7O2dCLEksWTs7Ozs7MkI7OzswQjs7ZSxPO2M7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzt1QixPLCtDOztTLE87UTs7O1UsTzs7O29CLE87bUI7O1M7UyxPO1E7O1MsTztROztTOztvQixPO1MsYyxNO1MsTzs7bUMsTyx3Qjs7O1E7O1MsVTtTLGU7UTtRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7O21CO2tCOzs7UTs7UyxRO1M7OztZO1ksTztXOztTO1E7MkIsaUQ7O1MsUSxtQjtTO3FDLE8sMkI7UztROztTO1UsSSxVLDRCOzs7O1csUTtXO1c7VztROztTO1MsYztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OzswQixpQjswQixPLHlDO29CLFM7d0IsdUI7Ozs7Ozs7Ozs7Ozs7OztJO0k7SSxPO0c7eUIsTyw4QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLDBCO0ksTztHO3NCLFM7RztJOzs7Ozs7SSw4QjtJLE87RztHO0k7TSx1QjtJO007UTs7Ozs7Ozs7STtXO2M7O0ksTztHO3dCLFM7Ozs7NEIsTyx5QztzQixPLGtDOzBCLHNCO0c7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4Qix5Qzs7UztROztTOzs7VSxNO1M7UTs7UztROztTO1E7O1MsVTtTO1E7UTs7OztTO1UsTTtVO1k7YzsrQzs7VTtZOzs7ZTtnQjswQjs7Ozs7O2dCLEksWTs7O2lCLE07O2dCOztlLGE7OztpQixNOzs7OztnQjs7bUI7Z0IsSSxZOzs7aUIsTTs7O2dCOzttQjs7Ozs7Z0IsSSxjOzs7aUIsTTs7O2dCOztlLE07Yzs7Ozs7UTs7UyxJOzs7OztVOztXLE07VyxNO1U7VSxPOztTO1E7O1MsSTs7Ozs7O1U7O1M7UTs7UztVLGM7VTs7Ozs7OzBDO1U7VyxjO1c7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0k7Ozs7OzRCLDBCOztJO0ssTzs7O2U7O3lCOzs7Ozs7Yzs7SSxNO0c7O3lCLE8seUI7SSxjO0k7SyxNOztJO0c7O0k7STtLLE07O0k7Rzs7STs7Tzs7O1U7O1csZ0I7OztVO1M7OztJO0c7O0k7SyxNOztJOzs7Tzs7O007O0ksTzs7O2M7O2dDLGlDOzs7O2E7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7SSxzQjtJLGU7SSxxQjtvQixZO3FCLFk7c0IsWTs7SSxPO2tCOztHOztJLFc7O0ssTzttQjs7STtJLE87Rzs7STtLO007TSxNOzs7Ozs7OztJLGlCO0c7RztJLGU7SSxjOztJLE07RztHO0k7Ozs7OztJLG1CO0ssTTtJO0k7STtJOzs7OztHOztJO0c7O0ksVTtJLE87Rzs7SSxVO0ksVztHOztJLE87OztjO2UsSztlLFc7O3lCOzt3Qjs7eUI7O3dCOzthOztHOztJOzs7SztzQzs7O0s7c0M7STtJOzs7Rzs7SSxtQjtLLE07STtLO087O3FCLDRCOztLO087O3FCLDRCOztpQjs7O2lCOzs7Ozs7YztjOztHOztJLG1CO0ssTTs7SyxlO00sTztLLGM7O2U7O0k7STs7O08sUztPO08sWTtPO007Ozs7O0c7aUMsZ0M7O0ksbUI7SyxNO0k7Ozs7Z0I7Ozs7Z0I7O0c7O0ksTztHO0c7SSxTO0k7TTs7O1M7Ozs7bUI7K0IsbUI7O1E7Ozs7Rzs7Ozs7Ozs7OztLLFc7O007TTtLO0s7Szs7SSxZO2dCLE07O0k7OztJO0ssYztLOzs7OztNLFc7OztHOztJLG1CO0ssTTtJOzs7Ozs7O00sSSw4Qjs7Szs7Ozs7TSxPOzs7Rzs7SSxtQjtLLE07STs7Ozs7OztZOzs7TTtPOztRLFU7Ozs7Ozs7O2tCOzs7Szs7Ozs7SyxlO0s7YTs7O0c7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7SSxzQjtJLFU7SSxPO0c7O0k7RztHO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7O0k7RztHOztJOzs7Ozs7Ozs7O0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtJO0k7STtJO0k7O0k7Szs7OztLOztlOzs7SyxVO2M7OztJO0s7Ozs7Szs7ZTs7O0ssVTtjOzs7STtJO0k7STtJO0k7STtJO0k7STtJOzs7O0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7OztJO0k7O0ksRzs7SSxNO0c7O0ksVTtJO0s7TTtROzt3Qjs7TTs7Ozs7OztHO0c7STtJO0k7STs7O1E7OztPOztROztXOztXO21COztPOzs7STtJOzs7UTs7O087dUIsMEM7OztJO3lCLE8sc0M7O0k7O087O087O087O087ZTs7Rzs7STs7Ozs7Ozs7Ozs7O0c7O0k7O087O087O087O087ZTs7Rzt1QyxTO3FDLDJCOztJO0s7TztTOzs7WTs7YTthO1k7OztLLE0sVztJLE8sVztHOztJO0ksTztHOztJLFksTztJO0ksTztHOztJO0ssTTtLLFU7STtLOzs7UztVO1UsUTs7OztvQjs7UztRO00sSztLO007O087TyxROzs7OztXOzs7Ozs7O0c7Rzs7STt5Qzs7Z0I7SSxxQjtJO0c7Rzs7STtHOztJO0s7Tzs7dUI7O0s7OztHO0csSSxtQjs7STs7O0c7O0ksTzs7O2M7YztlO3VCO2U7ZTtlLFU7ZTs7Ozs7OzZCOztnQjs7O2E7O0c7O0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0s7SztJLFc7RztHOzBCLFEsNEI7O0k7Ozs7O0c7NEIsTyxvQztHO0k7STs7Ozs7O0k7OztHOztJOztLO0s7Ozs7SyxJLFU7Ozs7TTtPLGE7Ozs7OztLOzs7O0s7TSxlO007Ozs7SSxPOzs7O2U7ZTtnQjtnQjs7ZSxPOzs7OztjOzs7OztJOytDLE8saUI7Rzs7STtLLE87STs7SztLLE87STs7SyxPO0k7STtHO2tDLHVDO0c7STtLO0ssWTtLLFE7SyxlOztLLGtCO0ksTztHO0c7STs7OztJLEksK0I7O2dDO0ssb0I7SyxXOztHOzs7SztNOzs7d0I7TTtLLE87STs7Szs7TTtROzs7OztPLHFCO087Ozs7OztLO0k7STtHOztJO0s7Tzs7MkIseUI7OztLO087OztVOztTOzs7OztLLEksZ0I7Szs7O1EsbUI7OztPOzs7O1E7O0k7SSxPOzs7Yzs7Ozs7O2U7Ozs7O2UsUTs7O2U7O2M7YTs7Rzs7SSxjOzs7Ozs7STtLO0s7OztLOzs7Syx3QixrQixzQjtLO2E7OztnQjs7OztnRDs7OzhDO2dCO2dCOzt1QztlOzs7STtJOzs7OzswQzs7O0ksVztJOztLOzs7UTtRLE87OztpQiw2QjtPOztLLE87O0k7STtLOztNLGUsaUI7TTs7VyxpQjtXO0s7O0ksYTs7O0s7OztROztTO1E7UyxnQztRO087O0ssTzs7STs7Szs7OztNO1E7VTs7O2E7WTs7TSxROzs7SyxHLHdDLFM7TSxVO007O0ssVTtLLE87NkM7O0ksTzs0QztHO0c7STtNO3VDO0ksTTtJO007Ozs7Ozs7O0k7TTt1Qzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7SSxJLEksTTs7Ozs7O0ksd0M7SztJO0c7O0ksVztJO0c7O0k7aUI7Rzs7STtpQjtHOztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0s7SztLOztJLFU7O0ssTTtJO0c7aUMsa0IsUzs7STtLO087c0MsNEI7SyxTO0ssSTs7O0s7Ozs7SztNLFE7OztLOzttQixPLHlDOztLO0s7O3VCLE8sbUM7SyxPOztJO0c7O0k7SztPO3NDLDRCO0s7Tzs7cUIsTyw4Qjs7STtHOztJLFk7O0ksTztHOzs7Ozs7TTtPO1E7VTs7O087TztRLE07USxNOzs7Ozs7Ozs7Ozs7TTs4Qjs7Ozs7O0k7SyxNO0ssTTtLLE07SyxNO0ssTTtLLGlDO0ssTTtLLE07OztLOzs7OzhCOzs7Ozs7Ozs7UTs7OztJOzs7Uzs7Ozs7Ozs7Ozs7OztJO0ssUTtLO00sWTtNLGE7TztNO08sVTtPOzs7Z0IsMkI7O0k7OztJO0kscUI7SSxvQjs7SztLLGU7OztLLE07STtJO2E7O0c7O0ksTzs7Ozs7Yzs7Ozs7O21CO3FCOzs7d0IsSzt5Qjt3Qjt5Qjt5QjsyQjs7Ozs7eUIsTTt5QixVO3dCO3lCLFU7eUI7Ozs7K0M7Ozt1Qjs7O2U7Z0I7OztvQjtzQjs7O3lCOzt3QzswQjs7NkI7Ozs7OzBCLE87OytDLHlCOzs7eUI7d0I7O2dCLGtDO2dCLE07O2tCOzs7O2U7Z0I7Z0IsTTtnQixNO2dCLGlDO2dCLE07Ozs7Ozs7Ozs7Ozs7bUIsTTs7Ozs7a0I7Ozs7Ozs7Ozs7O2M7YTtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7RztnQyxvQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSTtHOzs7TTtNLE87OztnQixPO2U7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCLE8sb0M7O0k7O0ssTTs7O08sdUIsNkM7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7STs7O1E7UTs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7MEIsa0I7dUIseUI7O0k7O0s7TTs7OztJO0c7O0k7O0s7TTs7OztJO0c7O0k7STtJLEksUSxrQixlOzs7SztLLE07O0c7O0k7SSw0QjtHOztJO0s7TTs7OztnQjs7O0k7Ozs7Ozs7O0c7O0k7O0ssWTs7TSxNOztLO00sUTtNLFU7OztPO1E7MkIsb0IsMEI7TyxrQixPOztPOzs7Ozs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOzs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOztLLE07O0k7cUI7O0s7Szs7TyxZOzs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztPLFM7OztPLE07O00sUztNO00sa0IsTzs7TTs7STtJO0c7O0ksSSx5QjtJO0c7O0k7SyxRO0ssUzs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLO00sZ0MsSztNOzs7O007TSxPOzs4Qjs7O0s7Ozs7TSxPOzs7O087Tzs7Ozs7O0k7O0s7TSxNOztLO0s7TTtNOzJDO2Msb0M7TztRO2dDOzs7O0s7O007TTs7USxPO08sWTs7Ozs7Ozs7UztVO1UsbUI7Ozs7Ozs7VSxJO1U7VyxPOzs7VTs7Ozs7O1ksSTtZO2EsTzs7O1k7OztZLEk7WTthLE87OztZOzs7Tzs7Szs4Qjs7TSxvQztNLFc7OztRLEk7OztTO3lCOzttQjtzQjtVO1c7OztzQjs7Ozs7O1E7OztTO1E7UyxPOztROzs7O087UTtRLGU7TztRLE87O087O007SztLO0s7SztNOztTLE87O1MsTztpQixPOzs7SztNLHNCLFc7TTs7Szs7OztPOztNOztLO007UTs7O007SywwQjtLOztNO0s7TTs7Uzs7O1ksVztZLE87Vzs7O00sMEI7SztLO007UTs7OEIsc0IsVzs7TTtROzs7Ozs7VyxPOzs7cUI7OztnQzs7Z0M7Ozs7OztzQixPOzs7cUI7c0IsWTs7cUIsTzs7O1U7O0s7STtJOzs7O0s7Ozs7OztLO007UTtNLFU7TTs7OztPOzs7Ozs7Ozs7O1U7Ozs7Ozs7OztVOzs7Ozs7O0k7O0k7RztHO0c7O0c7O29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7USxPOztROztROztROztROztROztROztROztRO2dCOzs7Ozt3QjtPLFc7TyxPOzs7O1EsTTs7UTtTLE87UyxPO1EsTzs7Tzs7USxPO08sTzs7OztRLE07Ozs7USxPOzs7Ozs7O08sVztPLE87Ozs7aUI7OztPOztRLE87TyxPOzs7O1EsTTs7OztRLE87Ozs7Ozs7TyxXO08sTzs7Tzs7USxPO1EsTztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OzJCOztPOztRLE87TyxPOzs7TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VTs7YTtVLE87OztPOzs7O1E7USxPO1EsTztPOztVLE87O1UsTzs7O1UsTzs7Ozs7O1E7O1MsTztTLE87USxPOzs7USxNO087USxPO1EsTztRLE87USxPO08sTzs7OztROzs7O1M7Vzs7UyxPO1MsTztTLE87USxPOzs7O1EsTTtPOztRO1U7USxPO1EsTztPLE87O087O1EsTztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OztPLE87OztPLE87O087O1EsTztRLGE7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7OztPLGtCO08sTzs7O08sTzs7O08sTzs7O08sTzs7Tzs7USxTO087USxNOzs7UTtTLFM7UyxPO1MsTzs0Qjs7UTtTLE87UyxPOzRCO08sTzs7Ozs7Ozs7TyxPOztPLHFCLE87TyxPOzt5QixPOztPOztRLE87TyxPOzs7TyxPOztPLHFCLE87TyxPOztPLHFCLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VSxXO1UsTzs7O08sa0IsTztPLE87O0c7RztJOzs7OztJLG1CO0k7STtLO0s7SztLO087O3lCLG1EOzs7O0s7Ozs7a0M7Ozs7Z0I7O0k7Rzs7STs7Ozs7O2dCOzs7a0I7Ozs7Ozs7O1E7OztJO0ksYzs7Ozs7Ozs7Ozs7OztJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytCLHlCOztJOzs7SSxNO0c7O0k7OztPOzs7OztPO1E7O1MsTztnQjs7O08sTzs7Ozs7OztpQixPOzs7Ozs7Ozs7Z0I7O007O0k7OztLLEksSSwrQjs7O087USxPO1EsTztRLE87Tzs7O08sYyxPO087O0s7bUIsTzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7K0IsTyxrQztROztTOztTOzs7UztVLFE7OztVLE07UztVLE07O1M7UTs7UyxJLHlDOzs7O1csTzs7O1E7O1MsSSx5Qzs7OztXLE07OztROztTLE87UTs7UyxVO1MsTzs7O21CO29COzJCO3FCO29COzs7OzBDOzs7a0I7OztROztTLE87OzttQjtvQjsyQjtxQixNO29COzs7OztxQixPOzs7a0I7OztROztTO1M7OztZO2EsVTs7O1c7O1MsTzs7O21CO29CLEs7b0I7O2tCOztROzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VSxTO1UsVztVLEk7VTtZLDJDO1U7VTtVOzs7O1csbUI7cUI7Vzs7Ozs7Uzs7VTtZOzs7O2U7ZSxPOzs7eUIsSSxJLE07Ozs7O2tDOzt5Qjt3Qjs7O2M7O1UsUztVLFE7VTs7VTtvQjtVO1U7VTs7VTs7O1M7UywwQjs7O2tCLFE7O1M7OztVLGE7Uzs7O1ksTzs7O3NCOztzQjtxQjs7Vzs7UztVLFc7VSxhO1U7O1U7b0I7VTs7VTtVO1UsTztTO1M7Ozs7Vzs7WTs7O1c7Ozs7O1M7O1UsOEI7VSxrQjtTOzs7WTs7Ozs7WTthO2E7WTthOzs7Z0I7Z0IsTztlOzs7WTtXOztTOztZO1MsTzs7O21CO29CLE07Ozs7b0I7OztvQjs7NkI7OztnQzsrQjs7OzttQjtvQjs7b0I7b0I7c0I7OzttQjtrQjs7UTs7UztTLE87a0Q7UTs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUM7OztLLE07Ozs7USxrRDtRLE87Tzs7d0IsUzt3QixTOztvQixjOzBCLE8sNEM7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixTOzBCLFM7c0IsYzs7SSxPO0c7Ozs7Ozs7O3NCOzJCOzJCOzs7Ozs7Ozs7OzsyQjsyQjsyQjs7MkI7MkI7MkI7c0I7O3NCO3NCO3NCOzs7Ozs7Ozs7Ozs7OztLLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7OzZCOytCOytCOytCOytCOytCOzs7Ozs7OztFOzs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksOEI7OztPOztRO1U7Ozs7YSxRO2EsTztZO1EsTTtPLE87OztPLE87OzJCLE87O0c7RztJOzs7O0k7Ozs7SyxNOzRCOzs7OztROzs7O0k7SywwQiwwQjtLLE87O0c7O0k7STsyQjtLLFE7VztLOzs7Rzs7STt5QixPLDhCO0c7O0ksVTtJO0k7Rzs7SSxPLHVCO0c7NkIsd0I7OztJO2M7Yzs7OztJO2M7Yzs7O0ksSSw2QixROztLLE07K0I7O0k7Rzs7O0k7YztjOzs7STs7O0c7O0ksWTtnQixNOztJO0c7O0k7STtHOzs7STs7Ozs7Ozs7O0s7O0k7Rzs7O0s7O0k7STtHOzs7OzswQiw0Qjt5QixPLHVDOzs7Ozs7OztLOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O2M7YzthOztHOztJO0k7SyxVO0ssVTtLLFU7SyxVO0ssVzs7Ozs7Ozs7Ozs7Ozs7TTtNO087TyxVOzs7Ozs7Ozs7OztPLE07OEI7O00sSTs7Ozs7OzswQztTOzs7Ozs7O007TztPO087TztPO3lCO087OztVO1c7Vzs7OztXO1k7WTtZO1k7OztVO1M7TyxnQjtPOzs7WSxZOztZO1c7OztPOzs7Ozs7UTs7UTtROzs7Vzs7WTs7WSxTO1k7VztVO29COzs7TTtPOztVO1c7VztzQjs7VTs7Tzs7VTtXO1c7VSxPOztNOzs7O087TztRO1EsNEI7TztPO1E7USxVO087USxNO08sVTs7Ozs7Ozs7Ozs7USxNO2dEOztPOztRO1E7UTtPOztRLE07TztROzs7WSx5Qjs7UTs7UTtTOzs7O1MsTTs7O2lEOzs7O087UTs7O1k7d0I7Ozs7Vzs7WTtZOztZOztZOztZOztXOzs7Ozs7VTtRLGE7UTs7UTs7Ozs7UztTO1M7OztZO2E7OzthOzs7YTtlOzBCO2E7O1k7VztxQjs7O087Ozs7Ozs7O1k7Ozs7a0I7a0I7aUI7O3dCOztZO29COztzQjtpQztXOzs4QjtPOzs7VyxPOzs7cUI7cUI7b0I7OztPOzs7OztNO007TztPLEk7Ozs7Ozs7Ozs7TyxVOzs7Ozs7Ozs7O1E7UztTO1M7UztTO1M7UztRLEc7OztTO1U7Z0M7VTtTOzs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztVO1U7OzthOztjO2M7OztjO2M7O2M7Ozs7O2M7Ozs7O2E7Ozs7Ozs7O1k7VSxXO1M7OztVO1c7Ozs7O2M7Yzs7Ozs7Ozs7YTt3Qjs7UTs7OztVLE07Uzs7VTs7VztXO1c7OztjOztlOztlOztlO2M7YTs7cUI7Ozs7OztRO1M7O1k7d0I7WTs7OzthO2U7OztZLFc7O1M7O1k7WSxPOztROztPLE07MkM7O00sTTsyQzs7O0ksTTtHOztJO0s7TSxLO007UTs7MEIsTywyQjswQixhOzs7OzRCOzs7Szs7STtHOzs7SSxPOzs7O0ksTzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7O0k7OzsyQjs7eUIsTTs7O08sSSxROzs7O1EsTTs7O087O0c7O0k7dUI7O0k7Rzs7STs7O3lCOzt5QixNO2lDOztHO3NCLG1COzZCLG1COzZCLG1CO3VCLGM7O0k7OzsyQjs7eUIsTTs7O08sSSxVOzs7O1EsTTs7Ozs7O0c7O0k7STtpQjs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O087O087O087ZTs7Rzs7SSxrQztJO0k7SSxPOzs7Ozs7d0IsTyxtQzt3QixPLG1DOztJOztPOztPOztPO2U7O0c7Ozs7Ozs7OytCLDRDOztTLE87OzsrQix5QjtROztTLE87OzsrQix5QjtROztTO1E7O1M7UTs7UztROzBCLHVCOztTO1M7UztTO1E7O1M7Ozs7bUI7bUI7a0I7UTs7UztVO1U7O1U7Ozs7VyxzQjs7OzthOzs7Ozs7Ozs7YTtjOzs7OztlOzs7Ozs7O2E7Ozs7O1c7Ozs7Ozs7VSxNOzs7O3FDO1U7O1csTTs7VTs7Ozs7OztVOzs7O1E7OztVOzs7b0I7Ozs4QjsrQjsrQixNOytCOzhCOzs7Ozt1Qzs7NkI7bUI7Uzs7VTs7O29COzs7OEI7K0I7K0IsTTsrQjs4Qjs7Ozs7dUM7OzZCO21CO1M7OztXLE87Ozs7cUI7OzsrQjsrQjt1Qzs7OEI7b0I7VTtVO1csa0QsYztXO1c7MEQsYztXO1c7YTs7OztnQixPOzs7OzBCLE87Ozs7b0MsWTs7O3FDOzs7b0M7bUM7eUI7ZTtXO1c7VTtXOzthOzs7Ozs7O2M7Z0I7OzthOzs7Ozs7VztVO1U7bUI7O29COzs7OztxQixRO29CO21CO1M7O1Usd0I7Ozs7O3NCO1U7Uzs7VTs7O1c7YTs7VzthOzs7OztXOztjOzs7Ozs7VTs7VTtXO1k7WTtZOztZOzs7O2Esa0I7Ozs7O2U7OztrQjs7Ozs7O2lCO2U7Ozs7O2E7Ozs7OztnRTs7Vzs7O2UsTzs7Ozt5QixPOzs7O21DO29DOzs7a0M7d0I7YztZO1k7WTtZOzs7O2E7Ozs7ZTtlOzs7OzthOzs7Ozs7O1M7Uzs7OztzQjs7Ozs7O2tCLFU7a0I7aUI7OztrQjtrQjtpQjs7Ozs7O2tCO21CLFE7Ozs7a0I7aUI7OztrQjtrQjtpQjs7Ozs7O2tCO21CLFE7OzttQjtrQjtpQjs7O2tCO2tCO2lCOzs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87OytCLDRCOztHOztJOzs7Ozs7O0k7SyxVO0s7SyxPOzs0QixPLHNDOzs7STtJOzs7OztPLE87OztPLE87OztJLE87Rzs7SSxPO0c7Ozs7Ozs7OztRLEk7Ozs7a0IsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0I7OzttQjs7a0I7aUI7O2tCOzBDOzswQztrQixZOzs7Ozs7OztpQzs7Ozs7a0I7aUI7O2tCO21CO21COzttQixNO21CLE07bUIsVTs7Ozs7OzttQjs7c0I7O3VCO3VCLE07Ozs7MEI7OzswQzs7OztzQjs7dUIsTTt1Qjs7OzswQjs7OzBDOzs7Ozs7c0I7Ozt1QixLO3VCLEs7dUI7eUI7Ozt1Qjs7OzBCOzs7MEM7Ozs7bUIsVzs7OztxQjs7Ozs7Ozs7O21COzs7OztzQixvQjs7O3NCOztzQjs7Ozt1QixLO3VCLEs7dUI7dUIsUTs7Ozs7O3lCOzs7Ozs7OzswQixVOzBCLFU7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7O2tCO2tCLE87aUI7Ozs7OztFOzs7Ozs7O0c7Ozs7SSx3Qjs7Z0MsTyxzQzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzt1QixPLG9CO3lCLHNDO2dDLDJDOztJLFc7SSxXO0c7O0ksVztJLFc7Rzs7SSxXO0ksVztHOztJLFc7SSxXO0c7O0k7Rzs0QixxQjt5QixzQjtHO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCLCtCOztJOzs7Rzs7STtLOzs7Vzs7O0c7O0k7Rzs7SSxZO2dCOztJLE87Rzs7SSxZO2dCLE87STs7SyxVOztrQjtjO0c7O0k7SztNLE87TSxjO0s7STtJLFk7Z0I7STs7SyxVO2tCO0ksYztnQjtJLE07Rzs7SSxHO0s7TSxPO1k7OztJO0k7SztLO007TyxPO08sTTtNLGU7TTtPO1E7USxPOztPO08sTzs7OztJO0k7Rzs7STtHOztJO0ksTztHOztJO0k7Szs7Ozs7SztJO0ssaUM7STs7SyxhO0ssTztJO0k7Ozs7Ozs7Ozs7STtLO0s7O0k7STtLO0s7O0s7Szs7O0s7Szs7Ozs7STtLO0s7Szs7SSxPO0c7O0ksTzs7OztlLE87Yzs7OztHOztJLE87OztjOzs7ZSxPO2UsYztjO2E7O0c7O0k7Szs7a0IsTTtLLEk7Ozs7aUI7Tzs7Ozs7SyxXOzBCLE07SztLO0s7SztLLHVDOzs7O2tCOztPO1M7O3lCLG1DOztROztPO1M7O3lCLG1DOztRO08sUTtPOztPOzs7OztLO0s7SyxXO0s7Ozs7NEI7OztHOztJO0k7SztLO0s7SyxJOztLO00sVztNOzs7OztJO0k7O00sWTs7O087b0I7O087OztNOzs7O0c7OztJLE87K0MscUI7OztJOzs7Szs7SztNO007OztJO0c7O0k7Ozs7Ozs7Ozs7OztLOzs7OztpQjtLO0ssVztLO007TTtROzs7Vzs7WTtXO1U7O007UTs7O1c7Ozs7Ozs7VyxPOzs7VTs7TSxPO007UTtVOzs7YTthLG1CLDJCO2E7YSxPO1k7O007UTs7O1c7Ozs7O1c7O2E7O1k7OztZLE07OzZCOztXO1U7Ozs7O007SztNLE07SyxXOzs7O007TyxPO08sTzt5QjttQjs7Ozs7Ozs7Ozs7OztRO1M7UyxxQix1Qjs7O1ksVztpQztZLFE7WTtZO1c7Ozs7OzsyQyxxQjtPO1E7Uzs0Qiw0Qjs7O1ksc0I7WSxRO1k7WTtXOzs7Ozs7OztLO007UTtVOzs7YTs7O3FDO2M7Z0I7OzttQjs7Ozs7OzttQjtxQixnQztvQjttQjtxQixnQztvQjttQjtrQjs7Ozs7O2E7WTs7TTtROzs7Vzs7Ozs7VyxXOzt3QjtXOztZO1c7VTs7Ozs7Ozs7Ozs7VTs7O2E7YTtZOzs7Ozs7Szs7UTtVOzs7YTs7Ozs7YTs7cUI7O1k7O0s7Ozs7Ozs7O1E7UTs7USx5RDs7Ozs7Ozs7O2E7OztnQjtnQixPO2U7O1c7VTtXOztXLFM7WTs7WTs7Ozs7YTs7O2dCO2dCLE87ZTs7VztVOzs7OztROzs7OztNOztTOzs7WTs7OzthO2U7OztrQjtpQjs7WTtXOztNLFc7OztLLE87STtJLE87O0c7RztJLE87Rzs7STtJO0ksb0I7O0s7Szs7O08sTzs7TSxVO08sSTs7Ozs7O0k7STs7Ozs7Ozs7O0k7OztLLE87O0ssTzs7O0ssTzs7SyxPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHO0c7STtLLE87Ozt5QixPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ryw2QztHO0csNEMsd0I7RztJLE87OztjLFc7YyxPO2E7O0c7RztJOzs7SyxPO0ssTztJLE87O0c7STs7RztHLDhDLHdCO0c7STs7Ozs7Ozs7Ozs7OztLO0s7TTtROzswQixvQixXOztNO007UTtLO0ssTztJO0ksOEMsUztJO0s7O2U7O0k7STs7Ozs7Ozs7O0c7O0ksZ0M7Ozs7Szs7STtHOztJOzs7RztHOztJLGM7SSxPO0c7bUMsa0M7OztJLE87OzRCOzs7O0k7Ozs7YyxPO2E7Ozs7SSx1QyxPLHVCOzs7STtpQjtHOztJLFk7a0M7Ozs7Ozs7STtLLHFCLE8sd0M7STtJO0ssTztLO0s7Tzs7O1U7VTtTOztJO0c7OEIsb0M7RztHO0k7O0c7O0ksTztHO0c7O0k7Z0I7O0k7Rzs7STtHOzhCLG9DO0c7RztJOztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJO2dCOztJO0c7O0k7Rzs7O0k7OztJO0c7O0k7SyxNOzs7SyxNOzs7SyxPO0s7Tzs7Ozs7Ozs7Ozs7Ozs7O0s7OztROzs7STtHOztJO0ssTTs7SyxNOztLLE07SztPOzs7Ozs7Ozs7OztLOzs7UTs7O0k7RztHO3FDLGtDOzs7Ozs7SSxvQzs7STtpQjtLLG1DLFE7cUM7OztHO0c7O00sNEI7O007YzsyQjtLOztJO0k7SyxJOzs7TTs7Ozs7O2UsTTs7bUM7O0s7O0c7RztHOztNLHVCOztNO0s7OztJLE87OztjLE07O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OzJCLFk7dUIsWTtzQixZO3dCLE8saUM7Ozs7Ozs7Ozs7Ozs7O0ksZTs7O0ssSSxjOzs7Ozs7O2U7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJOztvQjtLLFEsTzs7Ozs7STtHOztJO2M7SSxJLHFCLE07SSxPO0c7O0k7O0s7SztJLGtCO0k7OzZCLFk7d0IsWTt5QixZO3dCLE8sc0M7O0k7STtHOztJLGdCLE07STtHOztJLGdCLG1CLE07STtHO21CLCtCO21CLCtCO21CLCtCO21CLGtDO21CLCtCO29CLGdDO3FCLGlDOzZCLHlDOzZCLHdDOztJO0ssUzs7SyxNO0k7Rzs7SSx5QjtJLE87Rzs7SSxhO0ksTztHO3NCLE8sZ0Q7O0k7SyxXO0ssYTtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7OzswQjs7USxvQzs7OztnQixPOztHOztJOzt5Qjs7MkI7ZSxPOztHOztJO0s7TSxNO007TSxVO0s7Ozs7O007Yzs7Ozs7Ozs7Rzs7SSxROztJO1k7OEMsaUI7Rzs7STtnQjs7STtHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7O0k7Ozs7O0ksVTtJLFU7SSxVO0ksTzs7O2M7O2lCLE87O2lCOztxQzs7YTs7RztpQywrQixVO3lCLGlEOytCLGE7OEIsYTtHOztJOztLO0s7SztJO0c7O0k7Ozs7Ozs7OztJOzs7Ozs7TztRO2tCOzs7Ozs7STtHOztJOzs7TTtNLE87OztJO0c7Rzs7STs7SztLO0s7STtHOztJO0s7Tzs7eUIsZ0M7O0ssTTtJLE87Rzs7STtJO2lCOzswRDs7OztHOztJOztpQixPOzs7Ozs7Ozs7TTs7Ozs7Rzs7SSxPOzswQiwrQzs7RztHLGdCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLLFU7SztLOzs7OzJCOzs7RztHLGlCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7RyxxQjs7STtpQjtHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHNCOztJOztjOztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7Ryx1Qjs7STs7Yzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJLHdCO0ksd0I7Rzs7STtLLEs7SyxLO0k7O2E7YTs7Rzs7SSx3QjtJLHdCO0c7O0k7SyxLO0ssSztJOzthO2E7O0c7O0ksYztJLHNCO0c7O0ksYztJLHNCO0c7O0ksZ0I7Rzs7SSxnQjtHOztJLGdCO0c7O0ksVTtJLDJCO0c7O0ksZ0I7Rzs7SSxxQjtHOztJLFk7SSwyQjtHOztJLDBCO0c7O0ksMkI7Rzs7SSwwQjtHOztJLDJCO0c7O0ksNEM7STs7OztJOzthO2E7Ozs7STtJO0c7O0k7O2E7YTs7Rzs7O0k7STtJOzs7STtJO0k7RztrQyx3QjsrQix3QjtvQywwQjs7SSwyQjtHOzRCLHFCO2lDLDBCOztJLDJCO0c7OEM7Rzs2QztHO3NDLCtCO3VDLGdDOztJO0k7STtJO0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Rzs7OztJO0k7cUMsa0IsUzs7SSxNO0c7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOztJLE87RzsrQixzQjs7SSxVO0k7Rzs7STs7SyxNO0s7STs7O0k7O0ssTTtLO0k7OztJOztLLE07SztJOzsrQixzQjtzQixjOzs7STs7OztJOztHOzs7STs7O0ksVztJO0c7bUMsMkI7aUMsZ0M7dUMsc0M7aUMsZ0M7cUMsbUM7cUMsbUM7c0MsbUM7b0MsbUM7O0k7RzttQyxtQzs7STtHO3FDLGlDOztJO0c7O0k7a0Q7STtHOztJO0ssVztLO00sTTtLO0k7STs7Tyx3QyxZOztLOzs7Ozs7O1M7Ozs7Uzs7OztVOzs7Ozs7cUI7Ozs7Ozs7O1csRzs7OztpQzs7Ozs7Ozs7cUI7Ozs7OztrQzs7OztTOzs7Ozs7Ozs7O2E7Ozs7OztTOzt1QiwrQzs7Ozs7Ozs7Ozs7OztjOzs7aUI7aUI7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOztLOzs7Ozs7bUM7OztLO0k7O0s7Ozs7O0s7STtJO0c7OztJOzs7SSxXO0k7RztxQywyQjtpQyxnQztzQyxtQztvQyxnQzt1QyxtQzttQyxnQzt3QyxtQzt3QyxtQztxQyxtQztpQyxnQztpQyxtQzt5QyxvQztnQyxpQztnQyxpQztrQyxpQztxQyxvQztxQyxpQzt1QyxpQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztJLFc7STtHO2lDLGdDO3NDLGdDO3VDLHNDOzRDO0c7b0MsbUM7b0MsbUM7bUMsZ0M7MEMsbUM7d0MsbUM7dUMsb0M7b0Msb0M7O0k7RzttQyxpQzs0QztHO3VDLG9DO3NDLG9DOztJO0c7MkM7Rzs7STtHO21DLG9DO2lDLGlDO3lDLG9DO29DLGlDOztJO0c7MkM7RztrQyxpQztrQyxpQztxQyxvQztvQyxpQztzQyxvQztnQyxpQztxQyxvQzs7STtHO3VDLGlDOzJDLDJCO29DLDRCOzBDLDhCOzs7STs7O0ksVztJO0c7bUMsZ0M7bUMsZ0M7cUMsZ0M7c0MsbUM7cUMsbUM7b0MsZ0M7dUMsZ0M7Rzs7Ozs7Ozs7Ozs7Ozs7STs7O0ksVztJO0c7bUMsZ0M7cUMsZ0M7NkM7Rzt3QyxxQzt1QyxpQzs2QztHO29DLGdDO3VDLGdDO0c7Ozs7Ozs7Ozs7Ozs7OztJOzswQix5QjtxQyxtQzsrQix5QjttQyx5QjtnQyx5QjsyQix5Qjs4Qix5QjsrQix5Qjs0Qix5QjtrQyx5QjsyQiwwQjs0QiwwQjs0QiwwQjsrQiwwQjs7O0k7OzhCLDBCOztJOztPOztzQixPLDhDOztJLE87OztjLFc7YyxxQjthOztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7K0IsNEI7OEIseUI7cUMsbUM7cUMseUI7Z0MseUI7NkIseUI7aUMseUI7OEIseUI7MkIseUI7NEIsMEI7aUMsMEI7OEIsMEI7OztJOztnQywwQjs7STs7Tzs7c0IsTyw4Qzs7SSxPOzs7YyxXO2MsdUI7YTs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztJLFc7STtHO3VDLG1DO3VDLGdDOztJO0c7c0MsbUM7dUMsc0M7MkM7Rzt1QyxnQztxQyxtQztHOzs7Ozs7Ozs7Ozs7Ozs7STs7O0ksVztJO0c7dUMsbUM7dUMsZ0M7O0k7Rzt1QyxnQztxQyxtQztHOzs7Ozs7OztJLG1COzttQyxtQzs7STtHOztJO0c7O0k7Rzt1QyxtQztnQywrQjs7STs7Tzs7c0IsTyw4Qzs7SSxPOzs7YyxXO2MsdUI7YTs7Rzs7SSxXO0k7Rzs7Ozs7O0ksbUI7OztJO0c7O0k7Rzs7STtHOztJO0c7dUMsb0M7dUMsb0M7Z0MsZ0M7O0k7O087O3NCLE8sOEM7O0ksTzs7O2MsVztjLHVCO2E7O0c7d0IsZTsyQixpQjs7SSxXO0k7Rzs7Ozs7OztJLDRCOztHOztJOzs7OztLLE87SSxzQjs7Rzs7STs7Ozs7SyxPO0ksc0I7O0c7O0k7Ozs7O0ssTztJLHNCOztHOztJOzs7OztLLE87SSx1Qjs7Rzs7Ozs7OztJLGdDOztHOzs7Ozs7SSx1Qjs7Rzs7STs7Ozs7SyxNO0k7Ozs7WTs7O0c7O0k7Ozs7Ozs7SyxNO0k7Ozs7OztZOztHLEk7O0k7Ozs7Ozs7OztLLE07STs7Ozs7OztZOzs7Ozs7Ozs7O0k7Ozs7OztZOzs7Ozs7OztJLGdDOztHLEk7Ozs7Ozs7O0k7Ozs7OztZOzs7Ozs7O0ksNkI7OztJOzs7OztLLE07SSw0Qjs7O0k7Ozs7Ozs7SyxNO0k7Ozs7WTs7O0k7Ozs7O0ssTTtJLGdDOztHO2dDLHlCO0c7Z0MseUI7Rzs7O0k7OztJO0c7K0IsOEI7Rzs7O0k7OztJO0c7K0IsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DLG1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7aUQsTztpRCxPOzs7STtJLE87OztJLFk7O0ksTzs7OztJLE87Ozs7STtJOztLLHNCLE87SyxPOzs7SSxPOzs7O0k7STs7O0ssTzs7O0ksTzs7OztJO0k7Ozs7O1E7USxPOztRLG1CLE87USxPOzs7UTtRLFc7USxPOzs7USxPOztnQzs7OztRO1EsVztRLE87O3lCLE87OztRLE87O2dDOzs7MkIsTzs7O1E7UTtTLE87UyxzQjtRLE87O2dDOzs7O1E7USxPOzt5QixPOztJOzs7Ozs7Ozs7OztJO0ksVztJOztxQjs7STtLLEs7SyxLO0ssSztJOzs7O087TztPLE87OztJO0ksUztJO0ksTzs7O0k7O0ssa0IsTztLLE87O0ksb0IsTztJLE87OztJO0ssa0IsTztLLE87O0ksb0IsTztJLE87Ozs7Ozs7OztJO0ksVztJO0ksVztJOztxQjs7STtJLE87Ozs7Ozs7STtJO0ksTzs7Ozs7Ozs7STs7O0s7dUM7SztLLFM7O2dDO0k7SSxPOzs7O0k7STs7OztPO08sVTtPLE87O3dCLE87OztPO08sTzs7MEIsTzs7O087TyxPOzs7OztJO0k7Ozt5QixPOzsyQixPOzs2QixPOzs7TztPLE87O3dCLE87a0MsTzs7Ozs7STtJLFU7SSxPOzs7SSxZOztJO0ksTzs7OztJO0k7Ozt3Qjs7eUIsTzs7O087TyxPOzs7TztPLFU7TyxPOzt5QixPOzt3QixPO2tDOzs7O0k7OztPO08sTzs7O087Tzs7O087TyxPOzs7TztPLE87OztPO08sTzs7O087Tzs7Ozs7STs7O3lCLE87Ozs7Ozt5QixPOzt5QixPOzt3QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzs7TztPLE87a0MsTzs7SSxVO0ksTzs7OztJO0k7Ozt3Qjs7MEIsTzs7O087TyxPOzs7TztPLE87OzJCLE87OztPO08sTzs7d0IsTztrQyxPOzs7OztJOzs7O087TyxPOztPLG1CLE07TyxPOzt5QixPOztPLGlCLE07TyxPOzt5QixPOzt5QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzswQixPOzs7TztPLE87Ozs7O0k7STtpQzs7O3dCOztPOztPLGtDLE07TztPLE87OztPOzs7O1U7OztXLFM7VyxPOzs7VTs7Ozs7OztTOzs7O1MsUztTOzs7MEMsTzs7TztPO08sTzs7O087TyxVO08sTzsrQzs7O087TyxPOzs7TztPLE87O08sa0IsTTtPLE87OztPO08sZ0I7O3lCLGdCOztPOzs7USxNO1Esb0I7Tzs7dUI7O08sZ0I7OztPO087OztPO087TyxPOztPLG9CLE07TyxPOzs7TztPO08sZ0I7OztPO08sTzs7O087TyxPOzs7TztPO087TyxPOzs7TztPLE87OztPO08sUztPLE87OzBCLE87OzRCOzs7TztPLE87O087O1EsTTtRLG9CO08sTzs7OEI7Ozs7TztPO08sTzs7O087TyxPOzsyQixPOzsyQixPOzs7TztPLGdCOzswQixPOzsyQixPOzsyQixPOzs7TztPLE87Ozs7Ozs7TztPLFU7TztPLE87a0MsTzs7Ozs7Ozs7O0k7STtJO0ksTzs7OztJO0k7aUM7Ozt3Qjs7O087Tzs7Tzs7Tzs7TyxrQixNO08sTzs7O087aUI7O087d0M7TyxPOzswQixnQjs7Tzs7USxNO1Esb0I7TyxPOzs4Qjs7O08sb0IsTTtPLE87OztPO08sTzs7O087TyxPOzswQjs7MEIsTzs7MEI7OzBCLE87O3dCLE87OztPO08sTzs7Ozs7STtJOzs7O087TyxVO08sTzs7d0IsTzs7O08sUztPO08sTzs7O087TyxVO08sTzsrQzs7TyxtQyxNO087TyxPOzs7TztPLE87O3dCLE87OztPO08sTzs7OztJLHFDLE87O0ksTzs7OztJO0k7Ozt5QixPOzs7TztPOzs7TztPOzs7TztPLE87O3dCLE87O3dCLE87a0MsTzs7Ozs7STtJLFU7SSxPOzs7Ozs7Ozs7SyxNO0ksMEM7STtJO0k7SSxPOztHO0k7OztRO1E7O087O1EsVTtRLE87Tzs7O1E7UTtRLFM7USxPO087O1EsVTtRLE87Tzs7USxVO1EscUI7Tzs7USxVO1EscUI7Tzs7Ozs7OztRLFU7USxxQjtPOzs7UTs7Ozs7OztRO1E7O3dCOztRO1EsUztRO1EsTztPOzJCLDRDOzs7UTtRO1EsTztPOzs7UTs7OztRO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7OztRO1E7UTtRLE87TzsyQixTOztROzs7OztRO1E7UTtRLE87Tzs7UTs7Ozs7UTtRO1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7O1E7Ozs7O1E7USxTO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7O1E7UTtRLE87Tzs7O1E7OzZCLE87OytCLE87OytCLE87OztXO1csZ0I7O087O1EsVTtRLE87Tzs7O1EsVTtRLE87Tzs7O1E7O1EsUzs7Tzs7UTs7UyxPOzs7USxPO087Ozs7Ozs7OztROzs7Ozs7UTtRO1E7OztXOztZOzs0Qjs7WSxPOztXOzs7WSxNO1c7VyxPO1U7O1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7O0ksTztHOztJLFE7O0c7O0k7SyxPO0ssTztLLFM7SSxPOzs7YyxPO2E7O0c7RyxzQjtHOzs7TSxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksNEM7Ozs7UTtpQjs7Ozs7SSxXO0k7Yzs7Rzs7STs7Ozs7Ozs7Ozt1Qjs7UTs7Ozs7STtHOztJO2dCOztJO0c7O0ksSTs7O0ssTzs7Ozs7O2dCLE07Ozs7Ozs7Tzs7O1E7VTs7Ozs7Yzs7dUIsTztzQjs7Ozs7Yzs7dUIsTztzQjs7Ozs7Ozs7Ozs7Ozs7OztpQjs7MEIsTzt5Qjs7Ozs7O2E7O3NCLE87cUI7Ozs7TyxPOzs7Ozs7Ozs7SSxPO0c7O0ksdUI7STs7Ozs7Ozs7O00sVztNOzs7Ozs7STs7O0k7SztLO0k7Rzs7SSxPO0c7O0ksTzs7O2M7YzthOztHOztJLE87OztjO2M7YTs7Rzs7STtLO0s7OztTO1MsTztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7O0k7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7OztJO0c7O0ksZ0I7SSxVO0ksTztHOztJO0s7SSwwQztJO2dCOztJO0c7O0ksVTtJLE87OztjOztlOztnQzs7ZTtjO2MsTzthOzs7Rzs7STtJLE87OztjO2MsTzthOztHOztJLEksOEI7SSxPOzs7YyxjO3dCO2M7YyxPOzthOztHOztJO0k7bUI7O0s7TTs7OztHOztJO2dCO0k7O0s7SyxNO0ksTztHOztJO0s7SztJO0s7O007TSxNO0ssTzs7STtHOztJOzs7O007OztJO0c7OEIseUM7O0k7Ozs7TTs7O0k7RzsrQiwwQzs7SSxPO0c7Ozs7SztLOztNOztLO007TyxNO08sTTtPLE07TTs7Ozs7O007O0k7STtLO0s7TTtLO007Szs7Ozs7Ozs7Ozs7OztVO1UsSSxVLDRCOzs7Ozs7Vzs7Ozs7O007Ozs7Ozs7Ozs7Ozs7OztLLFU7Ozs7Ozs7Ozs7Ozs7UztTLE87Ozs7O0s7Szt3RTs7O0ksVztJO0s7TSxNO007SztLLFU7SztLOzs7O0s7SyxNOztHOztJLE87OztjO2E7O0c7O0ksTzs7O2MsTzs7O3dCOzs7eUI7eUI7O3VCOzthOztHOztJO0c7O0k7Rzs2QiwyQzsrQiw2QzsrQix5Qzs2Qix1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssaUM7OztJO0c7O0k7STttQjtnQjtLLG9COzs7O0c7O0k7STtnQjs7SyxTLHVCOzs7Rzs7SSxTOztJO0c7O0ksaUI7Rzs7STs7Ozs7Ozs7Z0I7OztHOztJOzs7Ozs7OztnQjs7SSxPO0c7O0k7SyxhOztNLFk7bUI7bUI7TSxPO0s7SyxPLG9DO0c7O0k7O00sWTtNLE87SztLLE8sNEI7Rzs7STs2QixzQixhOzZCLHVCLGM7NkIscUIsWTs7Rzs7STsyQyxnQzs7RztHO0k7STtJO0k7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7O0ssTTs7Syx3QixPO0ssTzs7STs7O0ssTztLLE87SSxPO0c7O0k7O0ssTTs7STtHOztJO0k7OzthLFk7YTthO1k7Rzs7STtJOzs7YTtjLFM7OzthO2E7WTtHOztJOzs7Szs7O0k7SyxXO0s7Ozs7K0I7Ozs7O0ksTzs0Qyx3QjtHOztJO0ssSTtLLEk7Ozs7STtnQixPO0ssSSxpQixJLDhCOzs7Ozs7O007TTs7Ozs7O0ssMEI7Ozs7O0c7O0k7bUM7STtLLE87SyxPO0ssTztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0ssSTs7STtnQixPO0ssSSxpQixJO0s7bUIsTTtNOzs7TztRLE07OztPOzs7dUIsTTtNO087UztXO08sTztNOzs7Ozs7TTs7Ozs7Rzs7STtJO0c7O0k7SyxJO0ssTztLLE87STtJLGE7STtHOztJOzs7Rzs7Ozs7Ozs7O0ksUyxPO0k7O0s7OztJLE87O29CLGMsNkI7O0ksVSxNO0ksa0I7OztLOztPLGM7Tzs7Ozs7Ozs7O0c7c0IsYyxtQjs7STtJOzs7RztzQixZO3NCLGtEOztJOztLO087OztVOztXOzs7Ozs7Ozs7Ozs7O1UsTztTOzs7STs7TSxNO0s7OztNLEk7TTtNOzs7O08sSSx3Qzs7OztTOzs7Vzs7Uzs7Ozs7Tzs7Ozs7SyxjOzs7SyxNO0k7Ozs7SyxNO0s7Szs7Ozs7TSxJLFk7Ozs7Ozs7O1M7Ozs7O1E7Ozs7O00sdUI7TTs7Ozs7SSxjO0c7O0k7OztrQjs7STtHOztJLGdDOzs7O1E7Ozs7OzJCOztROzs7Ozs2Qjs7UTs7OztRLHFCOzs7Ozs7SyxNO0ksbUI7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O0c7O0k7SyxNO0ksc0I7Ozs7O08sTTtNOzs7Ozs7SyxJO0s7Z0I7TTtNLEc7O087UTs7Ozs7Ozs7STtJLFc7STs7O087O007O0ksSSxlLHNCO0k7OztPOzs7UTs7Ozs7Ozs7O1k7Ozs7YyxNOzthO2EsSyxrQzs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7OztROzs7TTs7STtHOzs7O0s7OztNOztLLE07O0ksTTs7O0k7OztLLFc7Ozs7STs7SztLO087Ozs7VTs7O1U7UztLOztLLE07STtLO0s7SztPOzs7O1U7Vzs7WTs7WTs7O2E7Ozs7WTs7Ozs7UztJO0c7a0Q7O0k7O0s7SztJOzs7SSxXO0ksTztHOzs7O0s7Szs7SSxNOzs7STtLLE8scUI7SSxNO0c7Ozs7SztLO0s7O0ksTTs7O0ksWTtJO0ksVztHOztJLFc7SSxtQztHOzs7STs0Qjs0Qjs7O0csSSxtQjt1QixXO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1UsUTs7Uzs7VSxPOztTOztVO1c7O1ksTztZLE87VyxPOzs7Ozs7Ozs7O2tCO1U7Uzs7VSxRO1U7Ozs7VztXO1U7Uzs7VSxLLHlCO2tCOztVO1M7O1UsUTtVLEksWTs7OzhCOzs7VTtXLFU7VztVO1M7O1UsUTtVO1U7Uzs7VTs7O1U7VTtTOztVOztXO1k7YTs7OztjLE87YTs7WTtZOztVLE87Uzs7VTtVO1c7OztjOzs7Yzs7OztlLE87Ozs7Ozt5QixHLDhCO2tDOzs7OzBCOzt5QixNOzs7O3lCLFE7Ozs7Ozt5QiwyQjt5QixxQjsyQzt5Qjt5Qjs7O2MsTTs7VSxPO1M7O1U7VztZLFE7WTs7VyxnQztTOztVO1U7O1c7WSxNO1c7O2M7ZSxTO2UsZTtlOzs7Ozt1Qzs7YztlO2U7Ozs7O1M7O1UsMEI7VTs7OztTOztVO1U7Ozs7ZTtnQixTO2dCLGU7Ozs7d0MsTzs7O2U7Ozs7VyxPOztTOztVOzs7Ozs7VyxNOzs7O1c7WTs7ZTtnQixTO2dCLGE7Ozs7dUMsTzs7O2U7Ozs7VyxPOztTOztVO1U7Ozs7MEM7O2U7Ozs7ZTs7VyxNOztTOztVO1c7VyxlOztTOztVOzs7cUM7bUI7bUI7O1M7NkIsNEI7O1UsbUI7Ozs7Uzs7VTs7VztZLE87bUI7OztVO1M7O1U7Uzs7O1U7OztVLE87Ozt1QyxTO2lDLFM7O1M7O1U7Uzs7VSxtQjs7Uzs7VSxLO1csTztVLEc7VyxNO1U7VyxRO1csVTtVO1M7b0MsZ0I7O1U7VTt5QjtXO3VCO1csc0I7Ozs7Uzs7VTtzQjs7VTtTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7VTs7WTtZOzs7OzRCOztZO1k7Ozs7O1M7O1Usb0IsVztVLE87Uzs7Ozs7OztVO1csUTtXLFU7OztXO1c7VyxPOztVO1M7O1U7O1M7O1UsbUMsTztVO1U7VSxpQjs7OzJDLGtDO3lDLGlDOztVO1UsWTs7Vzs7WSxPO1ksTztXO1c7VyxXO1csTzs7VTs7Uzs7VTtVOztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTtrQztrQzs7OztVO1csTTs7VTtvQjtvQjtTOztVO1UsRyxXO1c7VSxNO1M7O1UsRyxXO1c7VSxNO1M7O1U7VTtTOztVO1U7Uzs7VTs7OzhCOztXOzs7K0I7O1U7UztvRCx5Qjs7Ozs7Ozs7VTs7O1U7VztXO1c7VTtTOztVO1UsTztTOztVO1UsTztTOzhCLHVDOztVO1c7VztVLE87Uzs7VTtXLE07O1M7O1U7VTtTOztVLEksYztVO1M7O1U7Ozs7OztVO1M7O1U7VTt5QjtXLEksUzs7OztTOztVO1U7Ozs7b0IsTyxjO21COztTOztVO1U7Ozs7b0I7OzhCLGM7bUI7O1M7O1UsTztTO29DLHVCO2dDLHVCOztVO1c7O1k7O1csTzs7Ozs7O3FCO3FCO29COzs7OztVOztXOztXLFE7c0I7VTs7VztVO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLFM7OztVO1U7dUI7VyxJLFM7Ozs7Uzs7VTtVLE07UztzQyx5QixTO3FDLHlCLFM7O1U7VTtvQjtvQjtTO2lDLDJCOztVOztXOztZOzs7VyxlLE87O1csTzs7O3NCLE87VSxNO1M7O1Usa0I7VTtTOztVO1M7O1Usa0I7VTtVLE07Uzs7O1U7VTtTOztVO1U7Vzs7cUI7Ozs7OztvRSxTO3dELCtCO2dELFM7O29COztVOztTOzs7VTtvQjs7Uzs7VTtvQjtVOztXO1UsTztTOztVO29CO1U7O1c7VSxPO1M7O1U7b0I7VTs7Vzs7VztVLE87Uzs7VSxlO1M7O1UsZTtTOztVO29COztTO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7STtJLE87Rzs7STtJLE87Rzs0QixPLHNDOzRCLE8sdUM7NkIsZ0M7O0ksaUIsNkI7STtHOztJO0c7Z0MseUM7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7MEIsOEI7O0k7SSxPO0c7O0k7Rzs7SSwwQzs7O0ksTztHOztJOzs7Ozs7Ozs7O087Ozs7Ozs7Tzs7OztJOzRCOztHOztJOzs7Ozs7Ozs7Ozs7O0s7O0k7NEI7O0c7O0k7SSxPO0c7O0k7Rzs7STtHOztJO0s7TTs7O087OztPO087TTs7SztLLGdDO0c7O0k7SztNOzs7Tzs7O087TztNOztLO0ssZ0M7RzsrQixnQzs7SSwrQjs7STtHOztJO0c7O0ksWTs7STs7O0ksWTs7STs7O0ksTTtHOztJO0s7SztJLE07Rzs7STtJLE07Rzs7STtJLE07Rzs7STs7O3dCO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7USxNOzs7O0k7Rzs7SSxxQjs7Ozs7Ozs7Ozs7O2dCOztnQjs7O007OztJO0c7RztJOzs7Ozs7SSxzQixtQixvQjs7Rzs7STs7O0s7SztLOzs7SztPOzs7Ozs7STs7OztJOzs7STs7Szs7STtHO0c7STs7Ozs7STs7Ozs7O0s7SyxROzs7SyxLO0k7Ozs7SSxXO0k7OztJLEk7STtHOztJO0ksVztHOztJO0k7Rzt5QixpQzs7STs7NEIsVyw4QjtJLE87Rzs7SSxtQyxjO0ksTztHOztJO0ksTztHOztJOztLO087O2dDLHNDOzs7STs7Ozs7O2U7Rzs7STtLOzs7SyxPO0s7SSxVOzs7Rzs7STtLOzs7SyxPO0s7SSxVOztJO0c7O0kscUM7Yzs7STs7O0kscUM7YztJOztLO0s7SSxPOzs7STs7Ozs7O0ssUztLO0k7OztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLLE87SyxPO0ksTzs0Qyx3QjtHOztJO0s7TSxhO00sYztNLE87TSxPO00sTztLLE87O0k7SyxPO0ssZ0I7SyxPO0ssTztJLE87Rzs7STtHOztJO0c7O0k7Rzs7STs7OztjLFc7YyxPOztxQyx3Qjs7YTs7Rzs7STtLLE87SyxPO0k7Rzs7STs7Ozs7SztxQztJOzs7Ozs7WTs7Ozs7STthO0k7Rzs7STtJO0c7OztJOztHOztJLHlCOztJOzs7SSxrQjtJOztLO087Yzs7Z0I7OztLOztNO007TTtxQjs7O0k7O087OztVOzs7VztVO1M7OztJO0c7O0k7SyxNO0k7O0ssbUI7SyxxQzt1Qjt1Qjt1Qjs7TSxNOztNLE07OztNLE07O0s7STtJOzs7MkI7Ozs7USwwQztRLGtCOzs7O0k7RztxQyw2Qjs7STtHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOzs7d0I7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjttQzs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7UztTLFE7UztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7OztTO1M7UTtPOztROztTOzs7OztTO1MsSTtRO087O1E7Ozs7Ozs7OztTLE87UyxPO1M7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtRO087O1E7O1M7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7O1MsTztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7O2E7OztTLE07UTtTLE87UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsSztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTLE87Uzs7O2lCOzs7UTs7O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7O1M7UyxPO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7UztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOztTLE87Uzs7O2lCOzs7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7OztTO1MsTztTO1E7OztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTLEs7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1E7UTtTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UyxLO1M7UTs7O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1MsSztTO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7Ozs7OztROzs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7OztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Uzs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7UztRO087O1E7O1M7Ozs7O1M7O1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7UztROzs7UTs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTLE07UztRO087O1E7Ozs7Ozs7OztTO1MsTTtTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7O1M7Uzs7Uyw0QjtROzs7O1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UyxTO1M7UztTO1E7OztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1MsUztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1MsTztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLE87UztTO1c7O1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsTztTO1M7Vzs7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UTtRO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7Ozs7O1MsSztTO1M7Uzs7UTtTO1U7Ozs7UTs7O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7OztTO1M7Vzs7Ozs7Ozs7OztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztXLHlDLGM7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztROzs7UTs7Ozs7OztTO1M7Uzs7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLE87UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UyxPO1M7UztTO1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLE87UztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEs7UztTO1M7UTtPOztROztTOzs7OztTLEs7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7O2E7O1M7UyxPO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1MsTztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7Uzs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7OztROzs7UTs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO1MsTTtROztTO1c7O3lCLHdCOztROzs7UTs7Uzs7Ozs7UztTOzs7UztRO087O1E7O1M7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7OztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7UyxLO1M7UTs7O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7OztTLEs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UyxPO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTOzs7UyxPO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7Uzs7O1k7Ozs7Ozs7Ozs7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7UTtPOztROztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTOzs7UztTLE87UztTO1c7Ozs7Ozs7O1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7O1M7UyxtQjs7O2M7UyxXO1M7UztXOztROzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7O1M7UztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7UTs7O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7O1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztROzs7O1E7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1MsUTtTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztROzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UTtPOztROztTOzs7OztTOztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1M7O1M7UztTO1E7Ozs7Ozs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UyxPO1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1MsTztTO1c7Ozs7Ozs7Ozs7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTLE87UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UyxRO1MsTztTLE87UztXOzs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UyxPO1M7UyxPO1M7Vzs7Ozs7Ozs7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UyxLO1E7UTtTO1MsSTtTO1E7OztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsTztTLE87UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsTztTLE87UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1MsSTtTO1E7OztROztTOzs7Ozs7O1M7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7O1E7UTtTO1MsSTtTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTOztTO1E7OztROzs7Ozs7Ozs7UyxJO1E7Tzs7UTs7Ozs7Ozs7Ozs7UyxJO1E7OztROzs7Ozs7Ozs7UztTO1MsTztTLEk7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsbUI7OztjO1MsTztTLFE7UztTO1c7Uzs7UztROzs7UTs7Ozs7Ozs7OztTO1M7UyxPO1M7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxtQjs7O2M7UyxPO1MsUTtTO1M7VztTO1E7OztROztTOzs7Ozs7O1M7UztTLE87UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UyxPO1MsUTtTO1M7VztTO1E7OztROztTOzs7OztTO1M7UyxPO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7O1M7UztTOzs7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7Ozs7OztTO1M7Uzs7O1M7UztROzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UTs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTOztTO1M7O1E7USxNO087O1E7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7Vzs7O2M7YzthOzs7UyxPO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTs7O1E7Ozs7Ozs7Ozs7OztTO1E7UTtTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1c7OztjO2M7YTs7O1MsTztTO1E7OztROztTOzs7Ozs7OztTO1M7UTs7O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7OztTLGU7UztTO1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1E7OztROztTOzs7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7Tzs7UTs7Ozs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTs7O1E7O1M7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtRO087O1E7Ozs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7OztROztTOzs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTtPOztROzs7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzs7O1M7UztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztRO1E7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7UTtTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7UTtTO1M7UztROzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztROzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7UyxPO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7Ozs7Ozs7O1E7OztROztTO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1M7UTs7Ozs7O087O1E7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7UztROzs7UTs7Uzs7Ozs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTLE87UztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTO1MsSTtRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7O1M7Uzs7OztTO1U7OztRLEksdUI7UTtPOztROztTOzs7Ozs7Ozs7UztTOzs7O1M7VTs7O1EsSSx1QjtRO087O1E7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztVOzs7USxJLHVCO1E7OztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7OztTO1U7Ozs7UTtTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTO1E7OztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UztTLE87UyxXO1M7Vzs7Ozs7Ozs7OztTO2U7UTs7O1E7O1M7Ozs7O1MsUTtTO1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLHlCO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOztTOzs7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7O1M7OztRO1MsTTtRO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1E7UTtTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1MsTztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7Uzs7UyxRO1E7Tzs7UTs7Uzs7Ozs7O1M7O1MsUTtRO087O1E7O1M7Ozs7OztTOztTO1E7Tzs7UTs7Uzs7Ozs7O1M7O1M7UTtPOztROztTOzs7Ozs7O1M7O1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTOztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1MsaUI7O1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTLFc7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UyxLO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7Uzs7UztROzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UyxLO1MsSztTO1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Uzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7Uzs7Uzs7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7Uzs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UztTO1MsSztTLEs7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1MsSztTLEs7UztTOzs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTOzs7O1M7UTtRO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UyxPO1MsVztTO1c7O1M7ZTtROzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UyxLO1MsSztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTLEs7UztTO1MsSztRO1E7UyxPO1M7UTs7O1E7O1M7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7OzthOztTLE87UztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLGdCO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Uzs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1E7UTtTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxPO1M7UyxRO1M7Vzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTLFE7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztTLE87UztXOztTO1M7UztROzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7UztTLEk7UTs7O1E7O1M7Ozs7Ozs7O1M7UztTO1MsTztTLFE7UztTLEk7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1M7O1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1MsTztTO1M7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UTtPOztROztTOzs7Ozs7UTtPOzRCLE0sMkM7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UyxNO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UztTOzs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEs7UyxLO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTLEs7UztTO1M7UyxLO1MsTztTO1E7OztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTOzs7WTs7Ozs7Ozs7Ozs7O1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7d0QsTztHOztJLE87Rzs7SSxPO0c7dUQsTztHOztJLE87Rzs7SSxPO0c7O0ksTztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOztJLE87Rzs7STtHOztJLE87Rzs7SSxPO0c7O0ksb0I7Rzs7STtJLGM7STtJLE87RztHLEkscUM7OEIsMEM7Rzs2Qix1QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7SztLOzs7Ozs7STs7O0k7STs7OzBCO0ksYzs7O0k7STtHOztJLGdCOztJO0ksSSxVLDZCO0k7STtHOztJLE07MEI7Rzs7SSxNO0c7O0k7Ozs7TSxVOzs7Ozs7Ozs7O08sTTs7O08sTTs7TTs7Ozs7O0c7O0k7Ozs7Uzs7Uzs7Uzs7O3NCO0k7Rzs7SSxnQjtJLE07OEI7Rzs7STsyQixPO0k7O3FDO0c7O0k7MkIsTztJOztxQztHOztJO0ksTztHOztJLE87Rzs7STtJO0c7O0k7STs7Ozs7OztHO0c7STtJOzs7SSxXO0ksTzs7RztHO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztHOztJO0c7Rzs7O00sdUI7Ozs7bUI7O1E7UyxVO2dCOzs7O1U7O1csTztrQjs7Ozs7OzthOzs7Ozs7O2dCLGtCOztnQixPO2U7Ozs7Ozs7YTs7Ozs7OztnQixvQjs7Z0IsTztlOzs7cUI7O1U7O1csZTtrQjs7Ozs7a0I7Ozs7O2tCOzs7Ozs7O2E7Ozs7Ozs7Z0Isb0I7O2dCLE87ZTs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxhO0k7STtLLE87O0k7RzswQjs7STtJO0s7O1E7Ozs7Ozs7VTs7VTs7VTs7VTs7YTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVOztVLG1CO1U7Ozs7UyxTO3FDO1M7UztVLE87O1M7O1MsZ0M7O1M7VSxPOztTOztTOztTOztTOztTOztZOztTOztTOztZOztTO1M7O1M7O1k7O1M7Uzs7Uzs7Uzs7WTs7Uzs7Uzs7WTs7UztTOztTOztZOztTO1M7O1M7O1k7O1M7O1M7bUI7UztVLFc7VTs7OztpQzs7OztTO21CO1M7Uzs7UzttQjtTOztTO21CO1M7Uzs7UztnQjtTOztTO1U7WTs7VSxRO1M7O1M7a0I7Uzs7UztVO1k7O1UsVTtTOztTOztZO1M7O1M7VTs7O1M7O1M7VTtZOztVOzs2Qjs7O1M7O1M7VTtZOztVLFc7VTs7NkI7OztVO1M7O1M7VTtVO1k7O1U7VSxVO1UsYTtVOzs2Qjs7O1U7Uzs7UztVO1k7O1UsYTtVOzs2Qjs7O1U7Uzs7UztVO1U7WTs7VTtVLFU7VSxhO1U7OzZCOzs7VTtTOztTLGdDOztTLFE7Uzs7UyxVO1M7O1M7O1M7O1M7O1M7O1k7O1M7O1M7O1M7VTs7O1M7O1M7VTs7Ozt3Qjs0Qjs7UztVO1k7O1U7OztlLGE7ZTtjOzs7O1M7OztVLFc7VTs7UztVOzs7Uzs7Uzs7WTs7UztVLFc7VSxZOztTLHlCOztTLFk7Uzs7OztTOztTO1Msc0I7Uzt1Qjs7VTs7VTtXOztjOzs7Ozs7Vzs7O1U7VztXO1csTTtXO1c7VyxVO1c7VyxZOzs7VyxJLGU7Ozs7Ozs7a0I7Ozs7Vzs7O1U7Ozs7b0M7Ozs7Uzs7Uzs7Uzs7Uzs7Uzs7Uzs7UztpQjs7O0s7OztHOztJO2tCOztLO007O1M7OztNOzs7Ozs7bUM7UTs7Ozs7UyxNOzs7UyxPOzs7O1E7Ozs4QjtROzs7WTs7Ozs7O1csd0I7O1ksTTtXOztZLE87WSxROztXOzs7Ozs7O1E7OztROztTO1MsUTs4QjtROzs7WTs7Ozs7O1csNEI7O1ksTTtXOztZLE87WSxVOztXOzs7Ozs7O1E7UTtROzs7UTs7UTs7Vzs7UTtRO1E7UTs7O1E7O1E7O1E7O1E7O1E7Ozs7UyxNO1E7O1MsTztTLFU7O1E7O1E7Z0I7UTtROzs7UTtnQjs7O0c7O0k7a0I7O0s7TTs7Uzs7O007Ozs7Ozs7UTtTO1MsSzs7UztTLFE7UTtRO1M7UztTOzs7O1EsUTtROzs7UTs7UTs7UTs7O1E7UyxNO1MsTTtTOzs7Ozs7UztVO1U7WTtlO3NDO1E7Uzs7Uzs7OztTLFU7Uzs7UTs7O1E7Z0I7UTtROzs7NkI7O1EsVTtROzs7Rzs7STs7SztNOztTOzs7TTs7Ozs7USxTO1E7UTs7OzZCOztROztXOztRO1E7OztRLFE7UTs7O0c7O0k7STtLOztROzs7OztTOztTO2lCOztLOzs7Rzs7STtjOztJLE87Rzs7SSxlOztLO0s7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7VTtXLE07VyxNO1csVTtVO1UsRzs7Ozs7Ozs7OzsrQjs7Ozs7Ozs7Ozs7Ozs7OzswQjs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7TSxjOzs7OztTLFU7UztTLFU7Uzs7O1MsVTtTO1M7Ozs7OztTLFU7UztTO1UsTTtVLE07UztTO1UsTTtVLE07UztTLFU7Uzs7O1MsVTtTO1M7VSxNO1UsTTtTO1MsVTtTO1MsVTtTO1M7OztNOztJO0k7Rzs7STs7OztjOztJLE87Rzs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7OztHOzs7Ozs7O0c7Ozs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjtJLEc7SztJLFc7SSxHO0s7SSxXO0ksRztLO0ksVSx1Qjs7Ozs7eUI7OzBCOzsyQjs7UztVLE87aUI7Ozs7Ozs7Ozs7Ozs7OztJLFM7Ozs7O3dCOzswQjs7MkI7O1M7VSxPOzs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLO0ssYztJO0c7O0k7SztLOztVOzs7Ozs7STtHOztJOzs7Ozs7STs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7TTtPO08sVztPLFc7TyxPOzs7OztJO0c7O0k7STtHOztJOztPOzs7SSxPO0c7c0MsZ0M7NEIsMkI7O0k7Ozs7OzBCOzsyQjs4Qjs2Qjs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1ksbUM7Ozs7Ozs7Ozs7MEI7Ozs7d0I7OztPOzs7bUI7O0k7Rzs7STs7Ozs7O0s7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix5Qzs7STs7O2E7aUMsTztJOzs7O00sTTs7b0Isd0IsTzs7SztLOzs7Rzs7STs7SSxROztJO0k7SSxPO0c7O0k7STtlOztjO2M7YztjO2M7Rzs7STs7eUI7OztPOzs7bUI7Ozs7Ozs7bUI7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7TyxPOzs7OztJLE87Rzs7STs7OztROzs7OzZCLE8sdUI7Ozs7Tzs7Ozs7aUI7aUIsTztnQjs7OzsyQixPOzs7cUIsTzs7TyxPOzs7O1E7Ozs7NkIsTyx1Qjs7OztPOzs7OztpQjtpQixPO2dCOzs7OzttQyxlO21DLG1COzRCLFksMkI7K0IsZ0IsdUI7O0ksZSx5Qjs7bUMsbUI7a0MsTywwQjs7SSwyQztLLE87SSxPO2M7Yzs7O2dCO0c7O0k7SSxPO0c7OEIsd0I7O0ksTztHOztJLFE7SSwwQjtRO0ksTzs7Ozs7Yzs7Ozs7O0ksOEI7STs7SyxPOzs7Ozs7bUM7Ozs7SSxPOzs7Ozs7a0M7Ozs7STtJOztNLE87Ozs7b0M7O29DOzs7Ozs7O1MsTzs7Ozs7bUI7Ozt1Qzs7OztTLE87Ozs7dUM7Ozs7Ozs7O1UsTzs7Ozs7b0IsUTs7b0IsTzs7Ozs7OEI7OzttQjs7d0M7Ozs7Ozs7SyxPOzs7O21DOzs7Rzs7SSxlOztrQyxPOzs7eUI7Ozs7USw0QjtROztPLE87Ozs7O2lCOzs7OztPLE87Ozs7O2lCLFE7O2tCOzs7O2dEOzs7O2lCLE87Ozs7K0M7O2dCOzs7Ozs7Ozs7O1c7OztZLE87Ozs7OzswQzs7MEM7Ozs7VyxPOzs7O3lDOztVOzs7VzsyQiwwQjs7Ozs7TyxPOzs7OztpQjs7Ozs7O087OztRLDRCO08sTzs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7OztXOzs7WSxPOzs7Ozs7c0IsTzs7OztzQixRO3NCO3VCOzswQjtzQixPOzs7OztnQzs7O3FCOzswQzs7OztXO1U7TyxPOzs7OztpQix3Qjs7aUI7a0I7Ozs7Ozs7O2lCLE87Z0I7OztpQjs7OzttQixPOzs7Ozs2Qjs7Ozs7aUI7Z0I7Ozs7Ozs7Ozs7VyxPOzs7Ozs7eUM7OztPLFksTzs7TyxPOzs7Ozs7O2lCOzs7OztPLE87Ozs7OztxQzs7O3lCOztPOzs7O3FDOzs7O0c7O0k7SyxPOzs7O21DOzttQzs7Ozs7SyxPOzs7O21DOzs7Ozs7Ozs7O0s7Ozs7O00sZ0M7Ozs7OztJOzs7TSw0QjtNOztLLE87Ozs7O2U7Ozs7O0k7SyxPOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7OztxQzs7Ozs7OztLOzs7SztNLE87O0s7Ozs7Ozs7Ozs7Ozs7O1M7VSxPOztTOzs7USxHO1MsTztpQixPOzs7O1MsTzs7Ozs7OzttQjs7OzttQjs7Ozs7USxPOzs7Ozs7O2tCOzs7Ozs7O1MsTzs7Ozs7OzttQjs7Ozs7O0k7SyxPOztJO0c7O0k7OztJO0s7TSxPOztLOzs7a0MsTzs7OzhCOzt5QixPOzs7TyxPOzs7O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7Ozs7Ozs7dUIsTzs7Ozs7O1EsTzs7Ozs7Ozs7O1csaUM7Ozs7Ozs7YSxhLE87Ozs7VyxPOzs7Ozs7eUM7OztPOztRLE87Ozs7O2tCOzs7Ozs7TyxPOzs7OztpQjs7Ozs7OztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7O08sTzs7OztxQzs7cUM7OzswQixPOzs7TyxPOzs7O3FDOzs7O3FCLE87O08sTzs7O08sTzs7OztxQzs7O3lCOztPLG9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRLDRCOzs7TyxPOzs7Ozs7O2lCOzs7O0k7Ozs7a0M7OztHOztJOzs7O0k7SyxPOzs7O21DOztJO0ssZ0I7Ozs7O00sZSxPOzs7SyxPOzs7Ozs7bUM7OztJLGlCOzs7OztLO2UsTzs7SyxPOzs7Ozs7bUM7Ozs7SyxPOzs7Ozs7bUM7OztJLE87Ozs7OztrQzs7a0M7Ozs7SSxlOzs7Ozs7OztNOztROzswQiw2Qzs7O007Ozs7Ozs7Ozs7Ozs7VyxZOztXLE87O1U7O3FEO1k7Ozs7bUM7Ozs7OztlOzs7O21DOztZOzs7O21DO1c7Ozs7a0M7Ozs7OztjOzs7O1c7O1U7O087UywyQzs7Ozs7Ozs7Vzs7OztrQzs7Vzs7Ozs7Ozs7OztZOzs7YTthO1k7Ozs7Ozs7Ozs7Ozs7K0M7Ozs7Ozs7Ozs7Ozs7OzhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUQ7Ozs7Ozs7Ozs7Ozs7OzsrQzs7Ozs7OztZOzs7Ozs7Ozs7OztTO1U7VyxnQjtXOzs7OztZOzs7O1U7VztXLEk7Vzs7Z0I7Z0I7Ozs7Ozs7WSxNOzs7Ozs7O1U7c0I7VyxTOzs7cUM7cUM7VTs7Ozs7Ozs7Ozs7Ozs7TTs7O0k7OztJOztLOzs7SSxPOzs7O2tDOztrQzs7Rzs7STs7SyxPOzs7O21DOzs7O0ksMEI7STtJLE87Ozs7O2M7OztrQzs7Rzs7O0k7SSwwQjtRO0k7Ozs7TTs7O0ssTzs7UTtJLE87Ozs7O2M7Ozs7Yzs7OztrQzs7Rzs7STs7TSxPOzs7O29DOztvQzs7O21DLE87Ozs7O1M7OztVO29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7OztlLE87Ozs7O3lCOzs7Ozt5Qjs7Ozs7OztZOztlOztZOzs7VyxPOzs7O3lDOzs7cUI7Ozs7Ozs7O1ksRzs7Ozs7Ozs7Ozs7OztpQjs7Ozs7Ozs7OztXOzs7O2EsTzs7Ozs7MkM7Ozs7O1k7O2U7O1k7OztXLE87Ozs7eUM7OztxQjs7Ozs7UyxPOzs7OzttQjttQjtvQjs7dUI7bUIsTzs7OztpRDs7OzZCOzs7a0I7Ozs7OztTO1M7OztXLE87Ozs7Ozt5Qzs7Ozs7VTs7Ozt3Qzs7OztTLE07Ozs7O1MsTzs7Ozs7O3VDOzs7O1MsTzs7Ozt1Qzs7Ozt1Qzs7OztTLE87OztTLE87Ozs7Ozt1Qzs7Ozs7Ozs7YSxPOzs7Ozs7MkM7Ozs7O1MsTzs7Ozs7bUI7Ozs7OztTLE87Ozs7dUM7Ozs7UyxPOzs7O3VDOzs7OztVLE87Ozs7d0M7OztTLE87Ozs7dUM7O3VDOzs7OEI7Ozs7Ozs7O1M7Ozs7dUM7Ozs7Ozs7OztVOzs7O3dDOzs7Ozs7Ozs7O1U7VyxPOzs7OztxQjs7b0I7Ozs7VyxPOzs7OztxQjs7OztxQjs7OztVOztXO1c7a0M7OztVLE87Ozs7O29COzs7OztVLE87Ozs7d0M7O3dDOzs7O1UsTzs7Ozt3Qzs7d0M7Ozs7VSxPOzs7O21COztvQjs7O3dDOzs7O1UsTzs7Ozs7b0I7Ozt3Qzs7OztVLE87Ozs7Ozt3Qzs7OztVLE87Ozs7O3dDOzt3Qzs7Ozs7Ozs7Vyw0QjtXOztVLE87Ozs7d0M7OztvQjs7O3dDOzs7OztXOzs7O3lDOzs7Ozs7YTs7OztjO2M7cUM7YSxPOzs7Ozs7Ozs7dUIsUztzQzt1QixPOzs7O3FEOztzQjs7Ozs7Ozs7Ozs7OztlLG9DOzs7Ozs7YTtjLE07YztjLDRCO2M7O2EsTzs7Ozs7dUI7Ozs7Ozs7TSxPOzs7O29DOztvQzs7Ozs7OztPLE87Ozs7O2lCOzs7O007TyxPOztNOzs7Rzs0Qjs7STs7Ozs7O1MsTzs7Ozt1Qzs7Ozs7O1MsTzs7Ozt1Qzs7Ozs7SztNLE87O0s7O0ksa0IsTzs7STtHOztJOzs7STtLLGtCLE87O0s7Ozs7OzsyQjs7MEI7Ozs7Uyw0QjtTOztRLE87Ozs7O2tCOzs7O1E7Uzs7O3FDLE87cUMsTzs7O21DLE87b0MsTzs7Ozs7OztZO1ksNEI7WTs7VyxPOzs7OztxQjs7Ozs7O1c7OztTLE07Ozs7OztTLE87Ozs7Ozs7OztZLGlDOzs7OzthLEc7YyxPOzs7WSxPOzs7Ozs7MEM7Ozs7O1MsNEI7O1EsTzs7Ozs7a0I7Ozs7a0I7Ozs7Ozs7UztTLDRCO1M7O1EsTzs7Ozs7a0I7Ozs7O1EsTzs7OztzQzs7c0M7OztROzs7Ozs7UyxrQztRLE87Ozs7c0M7Ozs7Ozs7Ozs7OztRLE87Ozs7c0M7O3NDOzs7UTs7OztTLDRCO1EsTzs7OztzQzs7O2tCOzs7c0M7Ozs7USxPOzs7O3NDOzs7STs7OztrQzs7O0c7O0k7OztJLE87OztjLE87Ozs7OzRDOzs7O0c7O0ksTzs7O2MsTzs7Ozs7NEM7Ozs7Rzs7SSxPOzs7OztrQzs7Rzs7SSxPOzs7O2tDOzs7Yzs7O2MsTzs7Ozs7d0I7OzthOztHOzs7SSxPOzs7OztrQzs7Ozs7SSxPOzs7OztrQzs7OztJLE87Ozs7O2M7OztrQzs7Rzs7STs7OztPLE87Ozs7cUM7OztpQjs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7cUM7OztpQjs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7O2lCOzs7O3lCOzs7Tzs7O0c7O0k7Ozs7TyxPOzs7OztpQixRO2lCO2tCOztxQjtpQixPOzs7OzsyQjs7O2dCOzs7O3FDOzs7Ozs7O1E7K0I7UTs7Tzs7Ozs7VSx5QztVLE87Ozs7d0M7O1M7OztVOzs7Ozs7TyxPOzs7OztpQjs7O3FDOzs7O087Ozs7TyxPOzs7Ozs7O3FDOzs7Rzs7O0s7SyxPOzs7Ozs7O21DOzs7O21DOzttQzs7STtJLFE7O2U7O0k7Szs7UTtJLE87Ozs7O2M7Ozs7Yzs7O0c7O0k7OztPLGtEO08sTzs7Ozs7cUM7OztpQixTOztpQixPO2dCOzs7aUI7Ozs7Ozs7USxPOzs7Ozs7OztzQzs7O2tCOzs7O08sd0M7TyxPOzs7Ozs7Ozs7cUM7OztpQjs7Ozs7OztRLE87Ozs7Ozs7O3NDOzs7a0I7Ozs7Tzs7Ozs7Vzs7OztVO1E7TyxPOzs7Ozs7OztpQjs7Ozs7OzttQixPOzs7Ozs7aUQ7O2lEOzs7O2tCOzs7Z0I7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7O2lCOzs7OztPLE87Ozs7cUM7OztpQjs7Ozt5Qjs7O087OztHOzs7SSwwQjtRO0ksTzs7Ozs7Yzs7Ozs7MEI7Ozs7Z0Q7OzBCOzs7O2dEOzthOzs7Yzs7Ozs7STtLLE87Ozs7bUM7O21DOzs7Ozs7TyxPOzs7OztpQjs7aUI7a0I7O3FCO2lCLE87Ozs7OzJCOzs7Z0I7Ozs7OzBCOzs7TyxPOzs7O3FDOztxQzs7Ozs7O1E7O1c7O1E7OztPLE87Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7OztPLE87Ozs7cUM7O3FDOzs7MkI7OztPLE87Ozs7Ozs7cUM7OztHOztJO0k7O00sTzs7OztvQzs7b0M7Ozs7Ozs7O1MsTzs7Ozt1Qzs7O1EsaUQ7O1MsTzs7Ozt1Qzs7dUM7OztRLE87Ozs7O3NDOztzQzs7Ozs7OztVOzthOzs7Z0IsTzs7Ozs4Qzs7Ozs7MEI7Ozs7O2dCLE87Ozs7Z0IsTzs7Ozs7OzhDOzs7O2dCLE87Ozs7Ozs4Qzs7OztnQixPOzs7OzhDOzs7OzswQjs7Ozs7Z0IsTzs7OztVOztTLE87Ozs7dUM7OzttQjs7Ozs7OztRO1MsTzs7UTs7O0c7O0k7OztJOzs7OzJCLE87Ozs7Uyw0QjtTOzs7USxPOzs7OztrQjs7Ozs7USxPOzs7O3NDOzs7MEI7OztRLE87O1E7Ozs7c0M7Ozs7O0k7SyxPOztJO0c7O0k7OztJOzs7O2tDOzs7Rzs7STs7OztPLE87Ozs7Ozs7O2lCOzs7O2lCOzs7OztPOzsyQjs7MEI7OzBCOzs7O1EscUI7USxPOzs7O2lCOzs7O2tCOzs7O08sSTtPLE87Ozs7Z0I7cUM7OztpQjs7Ozs7TyxPOzs7Ozs7OztpQjs7Ozs7OztRLFU7O1E7O1M7Ozs7VztnQzs7Z0M7Ozs7O1M7Ozs7VztnQzs7Z0M7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7aUIsUzs7aUI7aUIsTzs7OzsrQzs7Z0I7OztpQjs7Ozs7Ozs7O087USxNOztPLE87Ozs7O3FDOzs7aUI7Ozs7TyxtQjtPLE87Ozs7Ozs7O2lCOzs7OztPLE87Ozs7cUM7OztpQjs7Ozs7Ozs7O1csTzs7Ozs7Ozs7cUI7Ozs7O3lDOzs7cUI7Ozs7TyxVOztvQjs7O1E7O1c7O1E7O08sTzs7Ozs7aUI7Ozs7aUI7Ozs7MkI7O3lCOzs7TztPOztHOztJO0ssTzs7OzttQzs7bUM7Ozs7OzBCLE87Ozs7USw0QjtROztPLE87Ozs7O2lCOzs7Ozs7O1EsTzs7OztpQjtzQzs7c0M7Ozs7TyxPOzs7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzttQzs7Rzs7STs7OztrQzs7O0c7O0k7Ozs7Ozs7UyxPOzs7O3VDOzs7bUI7Ozs7O087OztPO087OztPO087Ozs7O1E7UTtRO1E7O087Tzs7Ozs7O0s7TSxPOzs7O29DOzs7Ozs7O1M7OztTLE87Ozs7Ozs7OztLLE87Ozs7bUM7O0k7Ozs7OztPOztRLE8sd0MsWTs7OztPLE87Ozs7cUM7OztpQjs7O3FDOztxQzs7OztNLE87Ozs7b0M7O29DOztvQzs7Ozs7O00sTzs7OztvQzs7b0M7O29DOztvQzs7OztLLE87Ozs7bUM7O21DOzttQzs7Ozs7OztLLE87Ozs7bUM7Ozs7O0ksTzs7OztrQzs7a0M7Ozs7OztLLE87Ozs7Ozs7bUM7O21DOztJO0ksUTs7ZTs7SSwwQjtRO0ksTzs7OztrQzs7O2M7Ozs7O0k7Ozs7Ozs7Ozs7TSxpQixPOzs7OztJLE87Ozs7O2tDOztrQzs7Rzs7STs7OztPLE87Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOzs7O08sTzs7Ozs7OztpQjs7OztpQjs7Ozs7O1EsTTs7Tzs7MEI7OzBCOzs7TyxPOzs7O2dCOztpQjs7OztrQjs7Ozs7bUI7O29COzs7O3NCOzJDOzs7O29COzs7OztpQjs7OzttQixPOzs7O2lEOztpRDs7O2lCLE87Ozs7K0M7O2dCOzs7aUI7Ozs7Ozs7Ozs7WSxxQztZLE87Ozs7cUI7MEM7OzBDOzs7c0I7Ozs7VyxJO1csTzs7OztvQjt5Qzs7O3FCOzs7O087USxNOzs7Ozs7OztRLE87Ozs7aUI7c0M7O3NDOzs7a0I7Ozs7a0IsTzsyRDtpQjs7OztPLE87Ozs7Z0I7cUM7OztpQjs7OztpQixPOzBEO2dCOzs7Ozs7OztPLE87Ozs7OztpQixTOztpQjtpQixPOzs7OytDOztnQjs7O2lCOzs7O08sbUI7TyxPOzs7OztxQzs7O2lCOzs7Ozs7OztXLE87Ozs7eUM7O1U7OztXLDhCOzs7Ozs7Ozs7YTs7Ozs7Yzs7Ozs7O1csSSxPOzs7Ozs7Ozs7O1csMEI7ZTtXLE87Ozs7Ozs7O3FCOzs7Ozs7cUI7Ozs7cUI7Ozt5Qzs7O3FCOzs7O08sVTs7b0I7OztROztXOztROztPLE87Ozs7O2lCOzs7O2lCOzs7OzJCOzs7TyxPOzs7O3FDOzs7aUI7Ozs7eUI7OztPO087O0c7OztJLDBCOzs7Ozs7Ozs7SSxPOzs7SSxRO0ksMEI7SSxPOzs7OztjOzs7Ozs7O0s7Ozs7O0ssTzs7Ozs7OzttQzs7Ozs7bUM7O21DOztJO0ksUSxNOztlOztJLDBCO1E7SSxPOzs7O2tDOzs7Yzs7Ozs7O0ssTzs7Ozs7Ozs7bUM7O21DOztJOztJLE87Ozs7O2M7OztHOztxQixrQix3Qjs7SztpQjs7O2U7Ozs7O3FDOztlOzs7O3FDOztJOztLO0s7O0k7O3VCLHdCLHdCO0s7OytCOzs7Ozs7VSxhLE87O1UsTzs7Ozs7b0I7Ozs7UztNLE87OztLLE87Ozs7Ozs7ZTs7O0k7O0ssTzs7O2U7ZSxPOzs7OzZDOzs2Qzs7Yzs7STtJLE87Rzs7O0ssTzs7Ozs7ZTs7O0k7O0ksTzs7Ozs7YyxRO2MsMEI7YyxPOzs7Ozt3Qjs7O2E7Ozs7Ozs7Yzs7OztrQzs7Rzs7Ozs7Ozs7OztLLFM7O0ssTzs7Ozs7ZTs7O0k7STtLLE87Ozs7OztlOztnQixPOzs7OzswQjs7Ozs7dUI7ZSwwQjttQjtlLE87Ozs7O3lCOzs7Yzs7bUM7OztJLE87Ozs7Ozs7O2M7O2UsTzs7Ozs7eUI7Ozs2Qzs7Ozs7YywwQjtrQjtjLE87Ozs7O3dCOzs7NEM7O2E7O2tDOzs7O0k7OztLOzs7SSxPOzs7Ozs7O2tDOztHOzs7Ozs7O007SywwQjtLO0ssTzs7OzttQzs7O2U7OzttQzs7O0k7Rzs7SSxnQzs7Ozs7Ozs7Ozs7OztJLDBCO0k7O0ssTztlO2U7Ozs7OztxQzs7OztJLE87YztjOzs7Ozs7b0M7Ozs7STs7O3lCLE87OztxQixPOztPLE87OzBCLE87OztPLE8sd0I7O0c7O0k7OztNOzZCO007OztLLE87Ozs7O2U7Ozs7O2dCLE87O0ksTztHOztJLE87Ozs7a0M7O0c7O0k7STtJO0ksTztHOztJO0k7STtJLE87Rzs7STtJO0k7SSxPO0c7RyxpQztHLCtCO0csaUM7RyxpQztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RywrQjtHLCtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STs7SSxZOztJO0c7O0k7SyxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7O0c7O0k7O3NFO0k7Rzs7STtLO0s7SyxVO0s7Szs7Szs7Ozs7Ozs7TztPO08sTTs7Ozs7O08sVTtPLG9DO08sTTs7TTtPO08sTTs7Ozs7Rzs7Ryw2QjtHO0csMEI7RztHLDhCO0c7Ryx1QjtHO0csd0I7RztHLHlCO0c7RyxzQjtHO0csMEI7RztHLDBCO0c7Ryx3QjtHO0csd0I7RztHLDJCO0c7RyxtQztHO0csaUM7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHLHlCO0c7OztNLDhCOzs7O1M7Ozs7OztVOzs7Yzs7OztZOzs7Ozs7O1k7Ozs7Ozs7WTs7Ozs7OztZOzs7Ozs7Ozs7OztTOzs7O1UsTTs7WTs7Ozs7O2dCOzs7Ozs7Z0I7OztTOzs7VTs7YTs7Z0IsTzs7Z0IsTzs7Z0IsTzs7Z0IsTzs7O2dCLE87OztZO2dCOzs7Ozs7WTs7O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O0c7O0kscUI7SSxJO0k7Ozs7MkI7OzJCOzs7a0I7Rzs7STs7cUIsTzs7O08sTzs7OztPLE87Ozs7Ozs7OztHOztJLE87Rzs7STs7Ozs7Ozs7Rzs7STtHOztJLGlCLE87O0c7O0ksWSxPOztJLE87OztJOzs7TyxPOztxQixPOzs7O1EsTzs7TyxPOzs7O08sTzs7O0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSxPO0c7O0ksTztHOztJLDhCOzs7SyxPOzs7SSxPOzs7SSxPOzs7Yzs7YTs7Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7MEIsTzs7O1E7UTtROzs7Ozs7UTtROzs7UTtROzs7UTtRO1EsTzs7O2tCOzs7bUI7bUI7bUI7OztrQjtrQjtpQjs7OztRO1E7OztROzs7Ozs7UTtRO2tCOztROztRLDRCOzs7O1E7Ozs7OztRO1E7OztROzs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztROzs7Ozs7USxPOzs7USxPOzs7O1E7UTs7O1E7aUI7O1E7O1E7UTtTLE87O1E7OztRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7OztRO1E7UTtTLE87O1E7OztRO1E7OzRCOzs7USxPOzs0Qjs7Ozs7OztRO1E7UyxPOztROzs7UTs7Ozs7Rzs7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztRLE87OztRO1E7Ozs7OztRO1E7OztTOzs7O1U7VTs7OztVO1U7VTs7OztTOzs7UztTO1M7OztROzs7Ozs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTs7O1E7UTs7O1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtRO1E7Ozs7OztRO1E7UTtTLE87O1E7OztRO1E7UTtRO1MsTzs7UTs7O1E7Ozs7OztRLE87OztROzs7Ozs7UTtROzs7UTtROzs7Ozs7UTtROzs7Ozs7UTs7Ozs7O1E7Ozs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7OztRO1E7UyxPOztROzs7UTtROzs7Ozs7Ozs7O1E7UTtROzs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7O0s7SztLO0s7OztJLE87OztJO0k7STtJOztHOzs7STs7O0k7STtJO0k7STtJO0k7STtJO0ksZ0I7O21CLDJCOzs7SztLOzs7O0s7Szs7O0k7STs7Rzs7STtJOztHOztJO0ksTzs7O2M7YztjO2E7O0c7O0k7O3lCOzsyQjs7O087USxPOztPOzs7OztRO1E7O1E7UyxPOztROztPO1EsTzs7Tzs7OztJOzs7STtJO0ksSTtJO0k7STtJO0k7OztHOztJO0k7STtJO0k7STtHOztJO0k7STtJLEk7STtJO0ksZ0I7OztLO0ssTzs7O0k7Z0I7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7UTs7OztRO1E7UTs7Ozs7O1E7UTs7O1E7Ozs7Ozs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOzs7Ozs7O087Tzs7Rzs7STtJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTtROzs7Ozs7UTtRO1E7OztRO1E7Ozs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7Ozs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087Ozs7Ozs7TztPO087Ozs7Ozs7TztPO087OztPO087Tzs7O087Tzs7eUI7Ozs7Ozs7TztPOztHOztJOztLO0s7OztJO0k7OztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztRO1E7Ozs7O1M7Uzs7Ozs7O1M7Ozs7Ozs7UTtRO1E7OztRO1E7UyxPOztROzs7Ozs7O1E7UTtTLE87O1E7OztRLE87OztHOztJOzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087O087OztPO087OztPO087Tzs7O087TztPOzs7Tzs7Ozs7O087OztPO087Tzs7O087Tzs7O087Tzs7eUI7Ozs7Ozs7O087TztPOztHOztJLFk7O0k7OztJOzs7TztPOzs7TyxPOzs7Ozs7OztPO087OztPO087OztPO087OztPLE87Ozs7Ozs7Rzs7STtJOztLO0s7SyxJLG1COzs7O1EsTzs7O1E7UTs7Ozs7UztTOzs7O2tDOzs7OztRO1E7Ozs7OztROzs7Ozs7UTtRO1E7UyxPOztROzs7UTtRO1MsTzs7UTs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STs7aUMsdUM7O0k7STtJLEksaUI7Ozs7TztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087O3lCOzs7Ozs7OztPO087Tzs7Rzs7STtJOztHOztJO0k7O0c7OztJO0k7STs7Ozs7Ozs7OztJO0k7O0s7STtJO0k7OztJLHFDOztJOzs7Ozs7Ozs7STtJO0k7STtJOzs7O0k7STs7OztJO0k7OztLO0s7O0k7OztJO0k7STs7STs7O087USxPO087Tzs7VTtPOztRO1E7UTs7Ozs7UTtROzs7Tzs7OztHOztJO0k7STs7Rzs7O0k7STs7OztJO0k7Ozs7STtJO0k7OztJOztLOzs7O00sTzs7SztLO0s7OztJO0k7RztnQyx1QzttQyx1Qzs7STs7O0s7Szs7Ozs7OztJO21COzs7OzZCLE87OztxQixPOztPLE87OztPLE87O08sb0IsTztPLE87O0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFc7Ozs7SSxjOzs7SSxnQyxPO0ksVzs7O0ksWTs7SSxXOzs7O0ksZ0I7OztJLGU7STs7OztLLFE7SSxPO0c7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOzs7TyxPOztPOzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLE87USxPO1E7TyxPOzs7Tzs7O1E7VTs7O2E7Ozs7YyxNO2MsUTthO2M7OztlLE87Ozs7OzBCO2EsTzs7O08sTzs7Tzs7O1EsTztRLE87UTtPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRO1U7OzthOzs7O2MsTTtjLFE7YTtjOzs7O2UsTztlLE87Ozs4QzthLE87OztPLE87OztPOzs7USxPO1E7VTs0QztPLE87OztPOzs7O1EsTztRLHNCO1E7VTs7MkI7O1E7TyxPOzs7Tzs7O1EsTztRO08sTzs7O08saUIsTztPLE87Ozs7STs7Ozs7Ozs7O0ssTTtLLFE7SztLLGU7SyxXO0ssSztLLEs7SyxLO0s7O1E7OztXOzs7O1ksTztZLE87VyxXOzs7SyxPO0s7O1E7O3lCOztJLE87Ozs7Ozs7Ozs7Ozs7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJO0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0ssTztLO0ssTztLOztROzt5Qjs7SSxPOzs7Ozs7Ozs7OztJOzs7O0ssTTtLLFE7SyxPO0ksTzs7O0k7Ozs7O0ssTTtLLFE7O0s7Ozs7TSxlO007OztTOzJDOzs7OztJO0ksTzs7OztJOzs7O0ssUTtLLFU7STs7Tzs7O1EsTztRLE87UTtPLE87OztPLGlCLE87TyxPOztPOzs7O1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7OztJOzs7O0ssUTtLLFU7STs7TyxrQixPO08sTzs7Tzs7Ozs7O1EsTztRO08sTzs7O087Ozs7OztRLE87UTtPLE87Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztLLE87SSxPOzs7SSxZO0ksaUMsTztJOzs7STs7OztLLFE7SyxVO0k7O08saUI7TyxPOztPLGtCLE87TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7O1EsTztRLE87USxPO08sTzs7O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUI7TyxPOzs7O0k7O08sa0MsTztPOztPLHVDO087O087OztRLE87Tzs7Tzs7O1EsTztPOztPOzs7USxPO087O08sb0M7Tzs7OztJOzs7SyxRO0k7O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O087OztRLFU7USxPO08sTzs7OztJOzs7O0ssUTtLLFU7STs7TyxpQjtPLE87O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPOzs7USxPO1EsTztPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPLG1CLE87TyxPOzs7O0k7OztLLFE7STs7Tzs7O1EsVTtRLE87TyxPOztPOzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7TyxrQixPO08sTzs7TyxrQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7Tzs7O1EsVTtRLE87TyxPOzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7TyxtQixPO08sTzs7Tzs7OztRLE87USxPO1EsTztPLE87Ozs7O29DOztROzs7O1MsVTtTLFE7UyxlOztPO1E7OzthOztjLFc7O2EsNEIsTzthLG1COzs7UTtVOzs7YTs7O2MsUTthO2M7Ozs7ZSxPO3lDOzs7YTs7O08sTzs7O087OztRLE87UTtVOzRDO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7O1EsZTtRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsZTtRLE87USxzQjtRO1U7OzJCOztPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRLE87UTtRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087Ozs7USxlO1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7Ozs7O1EsTztRLE87USxPO1EsTztPLE87Ozs7Ozs7Ozs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7OztRLE87USxlO1EsTztPLE87OztPOzs7UTtRLE87TyxPOzs7TyxxQjtPLE87O087OztRLE87UTtPLE87OztPOztRLE87USxzQjtRO1U7OzJCOztPLE87O087Ozs7USxPO1EsTztRO08sTzs7O087OztRLE87USxPO08sTzs7O08sb0IsTztPLE87O08sb0IsTztPLE87O087OztRLGU7USxPO08sTzs7O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7OztRLE87USxPO1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7OztJOzs7OztLO0ssTTtLLE07SyxNO0ksTzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7Tzs7O1E7USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7UTs7O2E7OztjLE87YTtxQjs7c0M7OztZOztRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsTztRLHNCO1E7VTs7MkI7O08sTzs7O087O1EsTztRLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPLG1CO08sTzs7TyxtQixPO08sTzs7TyxtQjtPLE87O08sbUIsTztPLE87O08saUIsTztPLE87O087OztRLE87UTtPLE87Ozs7O0k7Ozs7SyxRO0ssVTtJOztPOzs7USxPO1EsTztRO08sTzs7O08saUIsTztPLE87O087Ozs7O1EsTztRLE87USxlO08sTzs7Ozs7Ozs7O087OztRLE87UTtVOzRDO1EsTztPLE87OztPOzs7O1EsTztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7Ozs7STs7SyxXOzs7SSxjOzs7STs7OztLLFE7SyxVO0k7O087Ozs7USw4QjtRLE87TyxPOzs7Tzs7Ozs7UTtRO08sTzs7O087Ozs7O1E7UTtPLE87OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0s7SyxPO0s7O1E7MEM7SSxPOzs7Ozs7Ozs7OztHO0k7OztRO1MsTztTLE87UTtPOztRLFc7USxPO087OztROzs7O1MsTztTLGU7USxXO087O1EsVztRLE87Tzs7USxXO1Esc0I7Tzs7USxXO1Esc0I7Tzs7Ozs7OztRLFc7USxzQjtPOzs7O1E7Ozs7Ozs7UztTLGU7UztTOztZOzs2Qjs7UyxXO1MsVztRLE87O087O1EsVztRO087OztROzs7UyxPO1E7Tzs7O1E7Ozs7UyxPO1MsVztTLFc7USxPO087O1E7Ozs7UyxPO1MsVztTLFc7USxPO087O1E7Ozs7OztTLE87UztTLFc7UyxXO1EsTzs7Ozs7Ozs7TzsyQixTOztROzs7OztTLE87UztTLFc7UyxXO1EsTztPOztROzs7OztTLE87UztTLFc7UyxXO1EsTztPOztROzs7OztTO1M7UyxXO1MsVztRLE87Tzs7OztROzs7OztTO1MsZTtTLFc7UyxXO1EsTztPOztROzs7OztTLE87UyxXO1MsVztRLE87O087O1E7Ozs7O1M7UyxXO1MsVztRLE87O087OztROzs2QixXOzs7VyxXOzs7VyxXOztXOzs7WSxlO1csVzs7Tzs7USxXO1EsTztPOzs7USxXO1EsTztPOzs7UTtTLE87O1MsZTtRO087O1E7O1MsVzs7O1EsVztPOzs7Ozs7O1E7Ozs7Ozs7UztVOzs7VyxPO1U7a0I7O21DOzs7O1M7OztVLE87VSxPO1MsVztRO1E7UyxPO1MsTztTLE87UyxXO1MsVztRLE87O087O1E7Ozs7OztTLE87UztTLFc7UyxXO1EsTzs7Tzs7Ozs7Ozs7Ozs7SyxNOztJO0ssTztJO0k7SztPOzs7VTs7VztXLE87VyxlO1UsTzs7Ozs7Uzs7O0s7SyxPO0ssZTtJOzs7STtLLE87SyxlO0ksTzs7RztHOztJO0ssZTtLOzs7OzRCOzs7Rzs7SSxhOztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3QjtzQixtQzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTztHOztJO0s7Ozs7TSxXO00sVztNO0ssTzs7STtJLE87Rzs7STs7O2dCO0ssVztJLE87OztxQixTO0k7Ozt3QjtTO0k7Rzs7STtLO0ssTztLLGU7STtHOztJO0ssUTs7OztLOztLOztLOztLOztLOztLOztLOztLOzs7O0s7O007TTthOztLO007YTtJOztLOztLOzt3Qjt3Qjs7O0s7O0s7O0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztROzs7OztJLE87Rzs7SSxPOzs7YzttQzs7O2U7Ozs7Ozs7Z0I7O2UsTztjOztlOzs7Ozs7Ozs7aUI7OztnQjs7ZSxPO2M7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7OztpQjs7O2tCO2lCLFc7Ozs7ZSxPOzs7Ozs7Ozs7OztnQixnQyxPO2dCLFc7O2UsTzs7Ozs7O2dCOzs7OztnQjs7Ozs7Ozs7O2dCOzs7OztnQjs7Ozs7Z0I7Ozs7O2dCO2dCLGE7Ozs7O2dCO21DLFM7aUI7O29DOzs7aUI7OztvQjtvQixPO21COzs7Ozs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQjs7Ozs7O2dCOzs7OztnQjs7Ozs7Z0I7aUI7O29CO3FCLE07b0I7b0IsTzttQjtpQjs7bUM7bUM7Ozs7Z0IsTzs7O2dCOzs7OztjO2E7O0c7O0k7SztPOzs7VTt1RDtVO1M7O0s7SSxPO0c7O0ksWTtnQixNOzs7Szs7STtHOzs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO007TyxXO08sTTs7OztNOztPOzs7SyxJLG1DO0ssVztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7TTtPLFc7TyxNOzs7O007O087OztLLEksbUM7SyxXO0k7STtLLEs7SztPLDJCOztLLFU7O0ssVTtLO0s7TSxRO00sSztLO0s7SztLLE87STtJOzs7OztpQjs7Z0I7Rzs7STs7Ozs7O08sYztPOzs7O0k7OztJOzs7Ozs7TyxjO087Ozs7STs7O0k7SSxXO0c7O0k7SSxXO0c7O0ksa0QsYztHOztJO0ssa0M7SztNOzs7VTtXO1ksTTtZLE0sbUI7Vzs7O1c7O1k7bUMsTSxvQztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TztPO087OztNO2dCOztLOzs7Szs7TSxNO0s7SyxPOztHO0csOEMsbUI7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7STs7Ozs7Ozs7OztJO0s7SyxRO2dCOzsrQzs7O0ssTTs7SSxNOztHOztJO0c7O0k7O0ssTzs7O0ksTzs7Rzs7O00sdUI7O00sVztLOzs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7Ozs7OztLO2U7O0ssTzs7Rzs7Ozs7Ozs7Ozs7STtJLGlCOztLLE87STtHOztJO0ksaUI7Ozs7OztRLE87OztRLE87OztrQjtrQjtpQjs7O0k7Rzs7STs7Ozs7Ozs7O1EsSztROzs7OztLOztJLGtCOzs7Ozs7USxPOzsyQjs7OztrQjs7O29CO29CO21COztrQjs7STtHOztJOzs7Ozs7Ozs7USxLO1E7Ozs7O0s7O0ksa0I7Ozs7OztRLE87Ozs7UTs7Vzs7NkIsaUM7O1E7a0I7Ozs7USxPOzs7O1EsTzs7OztrQjs7O29CO29CO21COztrQjs7Ozs7Ozs7OztLOztJO0c7O0k7O3VCOztJO0c7O0k7SSxpQjs7OzBCOzs7USxPOzs7STtHOztJOzt1Qjs7STtHO0c7SSxPO0c7O0k7a0I7O0k7Rzs7STs7dUI7O0k7Rzs7STtJLGlCOzs7b0IsTzs7OztRLE87OztJO0c7O0k7SSxpQjs7OztRLE87Ozs7USxPOzs7STtHOztJOzs7Ozs7O2dCO0c7O0k7Ozs7Ozs7Z0I7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixPLHVDOzBCLE8sdUM7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7STtJOztJO0ksVztHO3lCLGtDOztJOzs7SztPOzZDO0ksVzs7OztJLE87OztjO2MsTzthOzs7OztJLFEsTTtJOzs7SyxROzs7SSxJLGlDOzs7MkI7OztHOztJOzt1QixPOzs7TyxPO2UsTTs7RztHOztJO0s7O0c7Ozs7Ozs7O1EsSSxJOzs7O29COztROztRLHNDOzs7Ozs7UTs7Ozs7OztJLEk7Ozs7SztLOzs7STtJLE87Rzs7STt1Qjs7STtHO3FDLCtCOztJO2lEO0ksVTtJLE07Rzs7STtJOzttQzs7O1E7OztROzs7OztRLE87OytCOzs7O1E7USxPOzsrQjs7OztRLE87OztrQjtrQjs7bUI7OztrQjtpQjs7OztRO1EsTzs7K0I7Ozs7OztRLE87OztrQjtrQjs7bUIsTzs7MEM7Ozs7a0I7aUI7Ozs7OztRO1E7O1c7OEMsa0IsUztRLE87OytCOzs7UTs7O1M7Ozs7a0M7OztHOztJLFk7O0ksTzs7O0k7O0ssTzs2Qzs7O0ksTzswQywwQjs7O0k7OztPO087TztNOztJO0k7Ozs7SyxPOzs7ZTtlLE87O3NDOzs7Ozs7SSxPOzsyQiw0Qjs7Rzs7STs7O0s7SyxPOzhDOzs7STtHOztJO0ksTzs7MkI7O0c7O0k7RztHOztJO0k7O21DOzs7UTs7Ozs7USxPO2dEOzs7UTtrQjs7USxrQixPOztROzsyQjs7O1EsTzs7O2tCO2tCO2tCO2lCOzs7O1EsTztnRDs7O1E7Ozs7O1E7UTs7MkI7Ozs7O1EsTzs7O2tCO21COztpQjs7Ozs7MEI7O1Esb0M7Ozs7Z0I7OztHO3lCOztJO0k7O0c7O0k7STs7bUM7OzswQjs7UTs7UTs7OztTOzs7OztROzs7O1MsTzs7Ozs7VTs7OztVO1U7OzsrQzs7Ozs7OztRO1EsTzs7aUMsa0IseUI7Ozs7UTtROzs7UTtROzs7USxPOzsrQjs7OztRO1E7OytCOzs7UTs7O1c7VztXO1U7O1E7OztRO1E7OztRO1E7Ozs7O1EsTzs7K0I7Ozs7UTtRO1E7OztROzs7OztROzs7OztRO1E7Ozs7O1E7UTs7O1E7UTtROzs7OzJCOzs7OztRLE87O2lDLGtCLHlCOzs7UTs7OztTO1M7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7O1E7UTs7UTs7OztTO1EsTzs7K0I7Ozs7OztRO1MsTzs7UTs7USxxQzs7Ozs7UTs7Ozs7Uzs7UTs7Vzs7Z0M7Ozs7Ozs7Ozs7Ozs7Ozs7OztXLG1COzs7Ozs7O2E7OztXOzs7O1E7OztHOzhCOztJO3VCOztJO0k7Rzs7SSxPOzs7Yzs7OztlO2M7Yzs7O0c7O0k7SztPOzt5Qiw2Qjs7O0s7O0ssdUM7O0s7dUM7SztJOzs7SztLLE87O0k7STtHOztJOztHOztJO0k7Ozs7MEI7OzBCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7OztRO1EsTzs7O2tCOzt3Qzs7eUM7O3lDOzsyQzs7O3FCOzsyQzs7aUI7Ozs7UTtTLE87O1E7OzBCO29DOzs7Rzs7STs7O0k7STtJLEksZ0M7Ozs7OzBDO0s7Szs7Rzs7STs7O3lCOzs0Qjs7eUI7ZSxzQjs7RztrQywrQixTOztJLE87OztHOztJLGlDOzs7MEIscUI7Ozs7OzswQiw0Qjs7NEIsOEI7O087O1E7OztXO3VCOztXLE87VTtRO087O087O1E7USxRO1EsTTtPLFc7O087O1E7VTs7O2E7eUI7O2EsTztZOztRLE87USxNO087O3VCLGlDOztPOzswQjs7Tzs7UTs7O087TztRLFE7USxNO08sVzs7O087O3VCOztPOzs7Tzs7eUI7O087O087O3lCLHFCOztPLGtCO3lDO087O0k7O29COztJOzs7SSxJO0k7SSxPO0c7O0ksSTtJO0ksTztHOztJOzs7eUI7O3lCO2UsMkI7O0c7O0k7STs7OzswQjs7MEIsd0I7OztROztTOzs7OztpQjs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O1E7UyxPOztRO29DOzs7Rzs7STs7O0k7STs7Ozs7UTtRLE87OytCOzs7O1E7USxPOzs7Ozs7eUM7OzJDOzs2Qzs7O3FCO3FCOztxQjsrQzs7Ozs7O1E7Ozs7MEI7O1Esb0M7Ozs7O0c7NkM7Rzs7STtLOzs7STtJO0c7O0ksTzs7Ozs7Rzs7SSxpQzs7O3lCLGlCOztPLG1DO087OzBCLHFCOzs7Tzs7dUI7O087OzBCLDRCOzs0Qiw4Qjs7Tzs7UTs7O1c7dUI7O1csTztVO1E7Tzs7Tzs7UTtVOzs7YTt5Qjs7YSxPO1k7O1EsTztRLE07Tzs7cUIsbUM7O087O08sb0I7eUM7Tzs7MEI7OztPOzt3Qjs7Tzs7O087O3lCOztPOztPOztROzs7MEIsbUI7TztRLFE7USxNO08sVzs7TzttQyx1Qjs7OztJO0k7RztzQyw4QixTOzhDO0c7O0ksbUI7O0k7OztJO0k7Ozs7O1E7USxPOzsrQjs7O1E7Ozs7UztRLE87OytCOzs7O1E7UTs7Ozs7O1E7USxPOztpQyxrQix5Qjs7O1E7Ozs7Uzs7Ozs7O1E7UTs7MEI7O1EsbUM7Ozs7O0c7O0k7Ozs7OzJCOzs7Ozs7Ozs7Ozs7O1E7UTs7NEI7O1E7b0M7O0s7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7SSxjOzs7O0k7STtHOztJO0k7Rzs2QixrQiw4QjtpQyxjO3dCLHFCLFk7O0k7O0ssTzs7O0k7STtHOztJOzs4QixPOzs4Qjs7Tzs7O1EsTTtRLE07TyxPOztHOztJLHdDO0k7OztLLE07SyxNO0ksTztHOzhCLDhCOztJOzs7Ozs7Ozs7Ozs7Szs7STtHOztJOzs7Ozs7Ozs7O1M7Ozs7O0s7OztHOztJOztPOzs2Qjs7O0c7RztJOzs7Ozs7Ozs7O0k7OztHOzBCLDRCOzZCLDhCOztJO0s7Ozs7O2dDO1EsTzs7UTs7OztTLG1COzs0QjtRLE87OztRLE87Ozs7Ozs0QjtRLE87TTtHO3NDLHVCOzJCLHVCOzs7Ozs7Ozs7O0k7OztJO0c7O0k7Ozs7O007O3FCOztPLDJDO087OztLLE07OzJCOzs7Szs7b0I7O007Ozs7OztPO007OztJLE07Rzs7SSxZO0k7Ozs7Ozs7SyxJO0k7Ozs7Ozs7O0ksWSxPOzs7O0s7OztJO0c7O0ksUTtJOzs7Ozs7O0ssSTtJOztNOzs7Szs7OztrQzthO2E7O0k7aUIsTTs7K0I7Ozs7Ozs7bUIsTTtLOzs7Ozs7TSxJO0s7TTs7O21CLE07O087Ozs7Ozs7Ozs7bUIsTTtLOzs7OztNLEk7SyxZOzs7Ozs7SSxZO0ksa0I7STtHOzs7O21CO0s7Ozs7O00sSTtLLFkseUI7Ozs7OztJO0k7aUI7Szs7Ozs7TSxJO0s7O007OztlOztrQjs7Z0Msa0M7ZSxPOzs7Ozs7Rzs7Ozs7TTs7OztPLFM7Tzs7Ozs7O29COzs7Ozs7O0k7eUIsaUM7Rzs7SSxRO0ksYztJLE87Rzs7STs7YztjLHFCO2E7Ozs7Rzs7OzttQjs7SztLOzs7OztJO0k7Szs7TSxPOzs7SztLLDRCO0c7O0k7Ozs7dUI7O1EsaUI7Ozs7O1csbUI7OzttQjs7Ozs7Ozs7OzJCLE87bUI7Ozs7Ozs7Ozs7Vzs7OztLOztJO0c7O0k7SSxPO0c7O0k7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7OztVLE87Ozs7O1U7Ozs7O1c7VSxVOzs7Ozs7OztVOzs7OztXO1UsVTs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7OztVLGlCOzs7Ozs7Ozs7O0c7O0k7STt1Qjs7Ozs7Ozs7O1MsTzs7Ozs7O1ksa0M7WSxpQjs7Ozs7Ozs7WSxvQztZLGM7Ozs7Ozs7Ozs7Ozs7O1ksa0M7WSxjOzs7Ozs7TTs7Szs7Rzs7STs7YTs7SSxPO0c7Ozs7OztRLHFCLE07USxPOztRLHNDO2dCOzs7Ozs7Z0MscUM7O0k7STs7OzZCLE87O1E7OztTO1M7USxPOzs7RzswQixTOztJLE8sMEI7Rzs7Ozs7Ozs2QixvQjs7OztROzs7UztTLE07UyxNO1M7USxPOzs7O1M7Ozs7Ozs7SztLLEc7TTtPLE07YTs7Z0I7SztLLE87Ozs7Ozs7OzZCLE87Ozs7O1EsTzs7Ozs7O0ssTzs7OztJO0k7Ozs2Qjs7USxNOzs7Rzs7STs7OzsyQjs7OztROzs7Ozs7Szs7OztHOztJO0s7Szs7OzBCOztTLDhCOzs7Ozs7STtJO0c7O0k7STs7Ozs7OEIsTzs7Ozs7Ozs7Ozs7OztLOztHO3FDLDBCO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHlDO0k7Rzs7SSw2QztJO0c7O0ksNEM7STtHOztJO0c7O0k7Rzs7STs7WTs7Ozs7Rzs7STtLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO3lCO0k7SztNLE07TTs7OztZLE07Ozs7O0ssTTtJO0k7Szs7O0s7O0k7STtLO00sTTtNOzs7O1ksTTtJOzs7Ozs7Ozs7STs7Ozs7OztHOztJOzs7O007Ozs7OztPO007Ozs7TTs7OzsrQzs7O0k7TSx3Qyx1QjtLO0ksTTtHOztJO0s7SyxNO0s7SyxNO0s7O0s7Ozs7O0s7OztTOzs7OztJO0k7SztLLE07SyxhO0s7STtHOzJCLG9DO3lCLFk7O0k7Ozs7Ozs7OztLOztJO0c7O0k7Ozs2QyxVOztpRCxVO3dELFU7OztnQzs7STtHOztJO0s7SztLLG1COztHOztJOztPLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O0c7Rzs7O00sdUI7O00sVztLOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7OztJOzs7OztJOzs7Ozs7NEI7Ozs7OztnQjs7STtHOztJO0ssUTtLLFU7O0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQixPLGtDOztJO0ssTzs7O3lCLE87OztPLE87OztPLE87Ozs7SSxVO0k7RztHOzs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7OzBCLHFCOzZCLFMsZ0M7O0ksTztLLFU7Szs7SSxXO0c7O0ksTztLLFU7Szs7SSxXO0c7Ozs7Ozs7Ozs7OztJLGdEO0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJLHlCO0k7RztHO0k7Ozs2Qzs2QzswQixvQjtzQixXLDhCO3FCLFcsOEI7dUIsVyw4QjtzQixXLDhCO3VCLFcsOEI7NEIsVyw4Qjs7SSxXO0c7d0IsVyw4QjsyQixXLDhCOztJOzs7SyxNO0ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Tzs7OztVO1M7OztLO00sVTtNLE87O0s7O1Esa0IsTTtRLE87OztROzs7Uzs7WTs7O2M7OztlOzs7Yzs7O1k7VztTOzs7Uzs7WSxtQjtZO2EsTztZO1ksTzs7Ozs7O1c7USxPOzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7WSxPOzs7c0IsTzs7cUI7VztRLE87a0I7a0I7Ozs7Ozs7Ozs7USxPOzs7O1E7UyxPOzs7USxPOzs7Ozs7Ozs7Ozs7USxPOzt5QixPOzs7O2M7YztHOztJO0k7OztLOztHOztJOztLLFE7STs7RyxnQzsyQixpQztrQyxxQzswQiw2QjswQiwyQjtzQiwyQjtzQiwwQjs7STtrQzt1Qjs7SSxJLFUsa0M7OzsyQjs7O0c7NkIsZ0M7O0k7OztLOztJO0c7Rzs7O0s7Szs7OzhCLE87O1M7OztVO1M7O1Msc0M7Uzs7O1M7O1U7Ozs7O0k7STtHOztJO3VDOzs7Rzs7STtHOztnQyxPLHFDOztJLEksaUI7SSxPO0c7O0ksSSxrQjtJLE87Rzs7STtJLE87Rzs7SSxJLGlCO0ksTztHOztJO0ksTztHOztJLEksbUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLGtCO0ksTztHOztJO0ksTztHOztJLEksbUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLHdCO0ksTztHOztJO0ksTztHOztJLEksa0M7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLG9CO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSx1QjtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLHlCO29CLFk7MEIseUI7O0k7O087O087O087O087O087O087ZTs7RzswQixlOzBCLGU7MkIsZ0M7dUIseUI7dUIsbUM7NEIseUI7O0k7SSxzQjtHO0c7OztJO0k7Ozs7Ozs7Ozs7STtJO0c7O0ksSSxnQjtJO0c7O0k7SSxJLGtCO0k7OztLLEksa0I7SSxJLGtCO0k7OztLLEksa0I7SSxJLGtCOzs7OztJO0s7SztLO0s7STs7O0ssSSxrQjtJLEksa0I7STs7O0ssSSxrQjtJLE87OztjO2M7YTs7Ozs7Ozs7O0c7MEIsa0Q7eUIscUIsMkI7O0ksSSxpQjtJO0c7O0k7SSxPO0c7eUIseUI7O0ksc0IsaUIsa0I7O0c7O0k7SSxPO0c7d0IscUQ7O0k7O08sTzs7TyxPO2UsTzs7OztJO0ssTztJO0ksVTtJLE87Rzs7STtJLE87Rzs7STtnQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7VSxNO1U7Ozs7STtHOztJOzs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0k7Rzs7STtJO21COzs7Ozs7Uzs7Ozs7UTs7OztTOzs7OztROzs7OztHO3FDLG1CLFU7RyxZLHlDOztJOzs7O0c7O0k7STs7Ozs7Ozs7Szs7Rzs7STs7RztpQyxjOzs7Ozs7Ozs7Ozs7OzZCLGM7Ozs7Ozs7Ozs7Uzs7Ozs7OztLOztLOzs7Ozs7Ozs7O1Esc0M7Ozt3Qjs7STs7O0k7Ozs7O1Esc0M7Ozs0Qjs7STtHO3dCLGtCO3lCLGtCO3lCLGtCO3NCLGtCO2dEO0c7NEIsb0I7O0ksSztLLE07OztHOzhCLHFCOzhCLHFCO3VCLFU7MEIsVTs7STs7OztLLEk7O0c7O0k7SSxPO0c7MEQ7Rzs7STs7SyxzQjtLLE87OztHOztJO0k7Szs7O0s7O0c7MEIsa0M7NEIsa0M7MkIsa0M7MEIsa0M7O0k7STs7Szs7O00saUI7OztLOztLOztHOztJLEksZ0M7STtHOztJLEksMEI7STtHOztJOzs7Ozs7OztPOzs7USxNOzs7O00sVzs7Ozs7MEI7Ozs7O2tDO3lDOztJO0c7O0k7STs7O3VDOzs7O0ssTzs7Rzs0QixnQjs7STs7OztJO0c7O0ksWTs7STtHOztJO0k7Rzs7SSxXO0k7SSxPOzBDLDBCO0c7O0ksMEIsTztpQyxPO0k7Ozs7O0s7OztJLE87RztHLGE7O0k7O0k7RztnQyxzQzs7STs7MkM7OytDOzs4Qzs7OEM7Ozs7Ozs7Ozs7O0c7RztJLGdCOzs7Ozs7O0k7O0c7O0ksSSxtQjtzQjtJOztJOzs7Ozs7Szs7Ozs7SztLOztJO0c7O0ksSTs7Rzs7SSxJOztvQztJO0c7O0ksSTs7b0M7STtHOztJOzs7Rzs0QixnRDs7STtJOzs7bUQ7Ozs7SyxPOztHOztJO0k7O00sTzs7O007Tzs7Ozs7OztHOztJO0k7O00sTzs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0c7NEIsd0I7O0k7O0k7Rzs7SSw0Qzs7O2U7O0k7Ozs7O08sTTtNOzs7Ozs7SyxvQzs7Szs7Ozs7O0ksd0I7a0M7O0k7Ozs7dUM7O0k7Ozs7TSxxQjs7Ozs7O0ksTzs7O2M7Ozs7Ozs7OztnQzs7O2M7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE8sYztHOztJLE8sYztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHLHFCO0cscUI7RywyQjs7SSxPOzs0QjtHOztJLFc7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLDBCO3VCLDBCOzRCLDBCOztJLE87OzRCO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxPOzs0QjtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QixXLHlDOztJOztHOztJLGtDLE87SSxXOzs7STtJLE87O2U7Ozs7Rzs7STtJLE87Rzs7SSxXO0ksTzthOzs7Z0I7OztpQixPO2dCLE8sa0I7ZTs7RztHO0k7OztRLE07TztJOzs7Ozs7Ozs7OzsyQixPLDJDO21DLDJCOztJLE87Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7STtrRDtJO0c7O0k7MkU7STtHOztJOzs7Ozs7dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087O007O0s7O0k7Rzs7SSxRO1U7SSxJLEssNEIsUTs7OzswQjs7UTs7O1EsTTs7STtHOzBCLE8sbUM7O0k7Rzs7SSxXO0ksVztJLFc7SSxPOzs7YyxrQixROzhEO2M7YTs7Rzs7SSxJLHdEOzs7O00sVzs7TTs7Ozs7OztHOztJLFk7Ozs7O1E7UyxjO3lDOzs7Ozs7O1k7O1ksTTs7Ozs7O1Esc0IsTzs7O0k7Rzs7SSxZOzs7OztRO1MsYzs7Uzs7OzRCLE87O0k7Rzs7STs7Rzs7STs7Ozs7VTs7STtHOztJLFk7Ozs7OztRLGdCLG1COzs7NEI7OztJO0c7O0k7Z0I7SSxtQixVOzs7SztNLFk7TSxPOzs7STtHOztJO0ssTztLO087OztVLG1CLFE7Ozs7WSxPOzs7NEMsTzs7VTtTOzs7SyxPO0ssUTs7Ozs7Ozs7USxNOztJO0ssTztLO087OztVO1UsTztTOztrQjs7STtHOztJLG1DLE8saUI7Rzs7SSxZO2tDOzs7Tzs7TyxvQyxTO08sTzs7eUIsTzs7MkIsTzs7O2tCLE87TyxvQixXO08sTzs7Tzs7O1EsVztPLE87O08sb0I7TyxPLHdCOztPOztPOzs7USxXO08sTzs7O08sTzs7O2lCO2lCLE87Z0I7OztlLE07O0c7O0kseUMsTyxpQjtHOzs7O3FDOzs7TTtNOzs7Ozs7O0k7O0ssTzs7O0ksTzswQyxPLG9COzs7STs7SyxXOzs7STtZOzs7ZTs7OztnQixPO2U7Yzs7OztJLDhCOzs7Tzs7O08sTzs7NEIsTyxvQjs7OztPLE87OztpQjtpQixPO2dCOzs7OztJLFc7SSxPO0c7O0k7OzBCLE87OzBCLE87OzRCLE87OzBCLE87OzJCLE87OzBCLE87bUMsTzs7OztJO0c7O0ksa0IsTztJO0ksa0IsTztJOztHOztJO0ksa0IsTztJOztJLHlCO0ksa0IsTztJLE87RzswQztHOztJLG1CLE87SSxPO0c7O0ksaUIsTTtJO0k7SSxrQixPO0k7O0c7O0ksa0IsTTtJO0k7O0c7O0ksWTs7SSxPOzs7STs7MEIsTzs7O087TyxPO2lDLE87Ozs7STs7O087TyxVO087TyxPOzs7TztPO087OztVO1UsTztTOztPLE87OztpQjtpQixPO2dCOzs7O087TyxPOzs7O0ksMkI7Rzs7SSxlO0ksWTs7Ozs7OztRLG9CLE07USxPOzs7a0I7a0IsTztpQjs7Ozs7OztLLE87O0k7Rzt1QixTOztJO0ssUTs7Ozs7SztPOzs7VSxpQyxROzs7O1c7O1ksTTtrQjs7Vzs7OztZO1k7WSxPO2tCO1U7Uzs7STs7Ozs7MkI7OztJO0ksTztHOzs7OztrQzs7Ozs7UTs7Ozs7UyxNLHFDO1MsTTtRLGM7O3lCLFc7OztRLGdCOzs7a0IsVztROzs7O1MsdUI7USxXOztROzs7OztTLE07UyxNO1EsZ0I7O1Esb0IsTzs7Ozs7USxNOztRLE07O1E7O1E7OztTLFE7USxZOzs7UTs7Z0I7OzttQjttQixjO2tCOzs7Ozs7SSxXOztJLE87Rzs7SSxJLGdCLE07STs7O087TyxPO007O0k7RztHOzs7O3FDOzs7OztNLFUsNkI7Ozs7Ozs7RyxXOztJO3NDLHNCOzs7Rzs7STs7O0c7O0ksNEI7Ozs7SyxNOzs7SSxHLG1DOztJO0c7O0k7OzsyQjs7O0c7Rzs7SSxZOzs7O0ksZ0Q7STtHOztJLDhCOztJO0c7O0ksOEI7OztLLE87OztJLE87Rzs7STs7aUI7O0s7TTswQztLOzs7O0c7O0k7STs7Ozs7K0I7OztHOztJO0k7OztROztROzs7Rzs7STtJO3dCOzs7O0c7O0k7STs7Ozs7UTs7OztHOztJLGlCOztJO0c7MkIsdUM7K0IsdUM7O0ksTzs7c0Msb0I7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7O2M7YyxZO2E7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7c0Msb0I7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7O2M7YyxZO2E7OztHOztJLEksVTs7OztNLE07Ozs7STtHOztJLEksVTs7OztNLE07Ozs7STtHOztJLHVCO0c7O0ksVztJLE87Rzs7SSx3Qjs7Rzs7SSxJLDJCO0k7Rzs7STtLO0s7STtHOztJO0k7RztpQyxxQzs7STtJLGE7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFU7O0c7bUMsdUI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtJOztHOztJO0k7STs7eUIsa0Isc0I7O0ksTzs7Z0Msa0Isc0I7O0c7O0ksTztHOztJLFk7c0U7SSxNO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztJLEksVyx5Qjs7OzJCLE87OztHOztJO2M7O2dCO2dCO2M7OztJOzs7TyxPOzs7Ozs7Ozs7O087TztPO21DOzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0k7Ozs7Szs7TyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sUzs7Ozs7Ozs7O0k7Rzs7STtjO2M7O2dCO2dCO0c7O0ksYzs7cUI7SSxTO1k7OztLO00sSzs7YTs7Vzs7O0k7Z0IsTztLLFk7Ozs7TTs7Szs7O0c7O0ksVTtJO21CO0c7O0k7Ozs7SyxPOztJO0c7OztLOzs7Ozs7O29COzs7Ozs7O3NCOzs7b0I7Ozs7Ozs7Ozs7Ozs7O1UsTzs7Ozs7Ozs7Ozs7UyxPOzs7Szs7O0s7Ozs7Ozs7Ozs7Ozs7UywwQzs7O1MsMEM7OztTLDBDOzs7VTtVO1UsTzs7OztLOzs7SztNLE07Ozs7USxPOzs7OztrQjs7Ozs7USxPOzswQzs7O1EsbUI7USxPOzs7USxPOzs7USxPOzs7USxPOzs7USxPOzs7USxPOzs7OztrQjs7OzsyQixPOztROztTO1M7Ozs7eUI7Ozs7Ozs2QjthOzs7Ozs7O2dCOzs7Ozs7O1EsTzs7OztzQzs7OztRO1M7O1UsVzs7O2U7O1M7VTs7VSxjOztXLG9CLFU7Ozs7OztVO1c7WTs7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthOzs7Ozs7OztZLFE7O1ksK0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2UsVzs7O2U7O2tCOzs7ZSxXOzs7O2M7Ozs7O3VCOztXOzs7Vzs7Ozt3QjtTOzs7OztVLE87Ozs7MkIsTzs7O1EsTzs7Ozs7a0I7Ozs7OztTLE87Ozs7SyxPOzs7O21DOzs7O0s7Szs7Ozs0Qjs7Z0M7Z0I7Ozs7Ozs7STtJO0c7RztJOzs7Ozs7bUI7O3NCLE87O0s7Szs7OztxQixPLHlDO3dCLE8sNEM7RyxnQztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0kscUI7SSxPO0c7cUIsTyx5QztHLDZCOztJLDRCOzs7SyxPOzs7SSxPO0c7O0k7Ozs7USxPOzs7Ozs7c0M7Ozs7USxPOzs7Ozs7Ozs7STs7O0k7O0s7SztLO0s7SztLO0ssTzs7STs7O0k7O0ssTzs7Ozs7ZTs7OztJOzs7STs7OztRLE87Ozs7Ozs7Ozs7UTtRO1E7USxPOzs7USxPOzs7OztrQjs7OzswQjs7dUIsTzs7MEM7O1E7Ozs7Uzs7WTs7O2MsTzs7WTs7OztZOzthOzs7dUIsTztzQjs7Ozs7WTs7OztRLE87Ozs7Ozs7Ozs7O1E7UTtROzs7Vzs7OztXLE87O1U7O1EsTzs7O1EsTzs7Ozs7UTtRO1E7UTtRLE87O0k7OztJLE87Ozs7Ozs7MkI7O2U7ZTs7Ozs7Rzs7Ozs7d0I7Ozs7TSxPOzs7Ozs7OztnQjs7Ozs7Szs7a0I7Ozs7Ozs7SztlOzs7aUI7aUI7STtJLE87Ozs7Ozs7O2M7Ozs7Ozs7bUI7O3NCLE87O0s7SztLOzs7OztJLFU7O0s7SztLO0s7SztLLE87OztJO0ksTzs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0c7STtJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Yzs7Ozs7Ozs7OztLO0ksMEI7Ozs7Ozs7OztJLE87OztJLFU7dUIsTywwQztJLE87Ozs7O2M7Ozs7O0k7Ozs7Ozs7VyxVOztXLE87Ozs7O3FCOzs7O08sTzs7OztPLE87Ozs7Ozs7Ozs7O087OztROztXLFk7O1csTzs7O3dCLE8sMEM7TyxPOzs7Ozs7O2lCOzs7Ozs7STs7O08sTzs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7O0c7STs7STs7O1EsTztPOztJOzt1QixPLCtDOztJOzs7USxPO087O0k7OztRLE87Tzs7STs7O1EsTztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dEO0c7O0k7OztNLG9DOzs7OztLLGE7SyxPOzs7Ozs7Ozs7Rzs7O0ssWSxPO0s7OztNLE87SyxPOzs7O0ssNEI7Ozs7OztPLE87Ozs7Ozs7Ozs7SztNLFE7OztLOzs7Ozs7Uzs7O1U7Ozs7Ozs7TTtPLE87TztTOztNLE87Ozs7STtHOztJLG1DOzs7TyxPOzs7Ozs7OztPLE87OztPO2lCOztpQjs7O08sTzs7OztJLFk7O21CLE87Ozs7Szs7O007OztLOzs7Ozs7UTs7O1M7Ozs7OztNO08sTztPO00sTzs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0k7SyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Ozs7O1E7USxPOzs7Tzs7O1c7Ozs7Ozs7O2dCLE87ZTs7Ozs7aUI7Ozs7Ozs7c0I7Ozs7Ozs7VyxPOzs7OztxQjs7Ozs7VTtROztPLE87Ozs7Ozs7Ozs7O1EsTzs7TyxPOzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Tzs7O1csTzs7O3FCO3FCLE87Ozs7Ozs7O29COztVOzs7Vzs7O1ksTzs7Ozs7Ozs7O1ksTztXOzs7Ozs7cUI7Ozs7O1U7UTs7Vzs7WSxPOztXOzs7O1c7Ozs7Ozs7O1U7UTs7Ozs7O087UTs7VyxtQjs7UTs7Vzs7Yzs7YyxPO3NCLE87O1U7UTs7VyxlO1U7OztXOzs7Ozs7OztjLE87Ozs7Ozs7Ozs7Ozs7a0I7bUIsTzs7bUIsTztrQjtrQixPOzs7Ozs0Qjs7O2lCO2MsTzs7Ozs7Ozs7O2MsTzs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O087OztROztXLFk7O1c7VyxPOzs7cUIsTztvQjs7O08sTzs7Ozs7Ozs7Ozs7O2lCLE87OzsyQixPOzBCO2dCOzs7OztJOzs7OztJOztlOzs7Ozs7aUI7Ozs7ZTs7STtjOzs7Ozs7Z0I7Ozs7OztjOzs7Ozs7O0c7OztLOzs7O00sTzs7Ozs7Z0I7Ozs7O3dCLE8sMEM7Ozs0Qjs7Ozs7O21DOzs7O0k7dUIsTywwQztJO0k7Szs7O0ksTzs7Ozs7Ozs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOzs7Szs7O007OztLOzs7Ozs7O1E7OztTOzs7Ozs7TTtPLE87TztNOzs7Z0I7Ozs7OztJOztLOzs7O0s7OztjOzs7O0k7OztPLE87Ozs7Ozs7Ozs7O2lCOzs7OztRLE87NkIsTzs7USxPO08sWTs7USxPOztPLE87OztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0k7STtZOzs7OztHOytCLG9DOztJO0k7WTs7Ozs7Rzs7STs7OztLLE87STtHO2lDLHNDOztJLDhCLE87STtHO21DLHdDOzBCLHNDO2dDLDZDOztJO2dDO2tDO0k7RztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCLG1COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7OztnQjs7Ozs7O0ssTztJO0c7O0ksSSxXLHNDOzs7Ozs7Uzs7dUM7O1MsZ0M7UztpQixPOzs7O0c7O0ksSSxVOzs7Ozs7Uzs7dUM7aUIsTzs7OztxQixPOztJO0c7O0ksSSxVOzs7Ozs7UTs7O1E7O1EsTzs7O1EsVTs7Ozs7Ozs4Qjs7UTs7OztLLE07O0k7Rzs7SSxJLFU7Ozs0Qjs7OztHO0c7SSxTOzs7Ozs7OztvQyx5Qjs7STs7Rzs7STs7Ozs7OztJO0c7O0ksVztJO0s7OztRLHVDOztZLGtDOzs7OzRCOzs7USxrQiwyQjs7OztTO1UsTztpQjtRO1E7O0k7SyxLO0ssVzs0Qjs7OztLLEksTyxrQztJOzs7O00sWTs7OztROzs7O1M7Vzs7OzthOzs7OztNLE07Ozs7O1M7OztVO1k7OzZCOzs7O1UsSSxVOzs7Ozs7Ozs7Ozs7Ozs7ZTs7O2tCOzs7cUIsTzs7b0I7Ozs7bUI7c0I7b0IsTTs7bUIsVzs7OzsyQzs7dUI7O3dCLE87d0IsTTt1Qjt1QixJLE8sNEI7MEI7d0IsTTs7dUIsWTs7O3dCOzs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7OzswQzs7MEIsTTs7Ozs7d0IsWTs7Ozs7MEIsSzsyQjs0QixVOzs7Ozs7OEI7Ozs7Ozs7d0I7Ozs7K0I7O3VCO3VCOzttQjtvQixPO29CLEk7bUI7bUIsYTttQjttQjtrQjtrQjtpQjs7Ozs7O1M7OztVO1U7OztVOzs7VztZO2M7OytCOzs7Ozs7Ozs7OztTLFM7Ozs7OztTOztVLE87VSxROzs7VTs7OztZOzs7Ozs7Ozs7Vzs7WSxPO1c7OztZO2EsTzthLGM7Ozs7OztZOzs7Ozs7Ozs7ZSxVOzZCOzs7Ozs7WSxNOzs7O1U7VTtXO2E7OzhCOzs7OztXLFU7O1c7Ozs7WTs7Ozt1Qjs7Ozs7Ozs7Uzs7O1U7WTs7O2U7ZTtjOzs7Ozs7O1E7Ozt5Qjs7O0k7STtHOztJLE87O2tDLGlDO0c7O0k7O0s7SztLO0k7Rzs7STs7SzthOzs4Qjs7OztJO1k7OzZCOzs7O0k7Ozs7SztLOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs7NkI7Ozs7Ozs7Ozs7WTs7O2U7O2dCO2dCO2dCO2tCOzttQzs7Z0I7ZTs7Ozs7O0k7WTs7NkI7Ozs7Ozs7Ozs7Ozs7OztHOztJLE87OztjO2E7Rzs7STs7Tzs7OztRO1E7VTs7MkI7O1E7Tzs7Tzs7UTtVOzs7YTthO1k7O1E7VTs7O2E7YTtZOztRO087O087Ozs7UTtPOzs7O0k7O0s7Szs7Ozs7OztJLEksOEI7STtZOzs2Qjs7Ozs7Ozs7O0c7O0ksTzs7O2M7YTtHOztJOztLO0s7O0s7SztLO0k7WTs7NkI7Ozs7Ozs7OztHOztJLE87OztjO2E7Rzs7SSxPOztrQywrQjtHOztJOztLO0s7O0k7Rzs7SSxPOzs7YzthO0c7O0k7O0s7OztLO087O3dCOztLO0s7Tzs7d0I7O0k7Rzs7SSxPOzs7YzthO0c7O0ksTzs7O2MsVTtjLE87YTs7O0c7O0k7STtHOztJO0s7SztLO0k7Rzs7STtJO0c7O0k7O3lCOzswQixXOzs7O1E7Ozs7UztROzs7TzttQzs7Rzs7STs7O08sSSxVOzs7Ozs7WTs7c0M7b0IsTzs7OztPOzswQjs7Ozs7UTs7OztROzs7O1MsTztTO1E7O087OztRO087bUM7Ozs7STs7eUI7OzBCOzs7Tzs7Ozs7OztPO21DOztHOztJLGdCO0k7Rzs7SSxrQixzQjtJO1k7OzRCOzs7OztHOztJLGU7STtHOztJLFk7OztLLE87Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksTztHOztJO2E7Rzs7STs7SyxPOzs7STtHOztJOzs7O0s7Ozs7Ozs7O1c7WSxNO1ksTTtXLE87VTs7Ozs7O1MsVTtTLE87UTs7Ozs7OztROzs7OztTLE87Uzs7Ozs7UTs7Ozs7O1MsTztTO1M7Ozs7OztROzs7Ozs7UyxPO1M7Ozs7O1E7Ozs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7O1MsTztTO1M7Ozs7OztROzs7Ozs7UyxRO1M7Uzs7Ozs7O1E7Ozs7OztTLFE7UztTOzs7Ozs7SSxPOzs7YztzQjs7O3lCOzs7O2E7OztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Tzs7O087OztPOztHOztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Ozs7OztPOzs7Tzs7O087O0c7O0k7OztPOzs7Tzs7O087Ozs7Ozs7O087OztPOzs7Tzs7O087O0c7O0k7Rzs7SSxvQjt3QjtJOzs7Ozs7O0s7O3VCO0s7O3VCO0k7OztlOztnQjs7O2UsTzs7O3lCOzBCOzRCOzs0Qzs7MEI7eUI7d0I7Ozs7Ozs7O0c7O0ksTzs7O2M7YTtHOzZCLE8sdUM7O0ksTztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTTtLLE0sVztJLE87Rzs7STtLLE07SyxNLFc7SSxPO0c7O0k7SyxNO0ssTSxXO0ksTztHOztJO0ssTTtLLE0sVztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7RztJLFM7O0k7O0c7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJLFc7SSxZO0ksYTtJLGE7SSxZO0ksWTtJLFc7O0ksTztHOztJLE87Rzs7SSxPO0c7RztJLGlCO0ksYTtJLGE7O0ksTztHO0c7SSxjO0k7TTtJLGtCO0k7STtJO0k7STtJO0k7STtJO0k7STtJOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0ksVTtJO0c7RztJO0k7STtJO0k7STtJOzs7Ozs7Ozs7OztJO0s7OztNLE07TTs7Ozs7Ozs7Ozs7Ozs7OztLLE87OztLOzRDLFc7TSxRO00sTTs7O007Ozs7Uzs7Ozs7Ozs7Ozs7O0ssTzs7O0s7TSxNO00sTTtNLFU7SyxPOzs7O0k7SSwwQix1QjtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O2E7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlO2U7Yzs7Ozs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SztPO0s7Tzs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SyxNO0ssTTtLO087SSxPOzs7O2dCOzs7Ozs7RztJO007O3FCLFcsK0I7O0ksbUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4Qjs7SztLO00sVTtNLFU7TSxZOzs7O21COzs7VTtVLGM7b0I7VTtXLE07VyxVO2dGO1UsVzs7OztNLE87O0k7STtJOzs7O0ksTztHOztJOzs7OztZLHdDLFk7STtLOztNLDRCO007TSxNO3FCOzs7STtHOztJO0s7OztJLHlDO0k7O0ssOEI7SyxjO0ssUTtLLE07OztLLE07Szs7Ozs7OztROzs7Ozs7Ozs7STs7OztHOztJOzs7OztJO0s7Ozs7Ozs7Ozs7O0s7Ozs7O0ssTTtJO1k7Ozs7Ozs7Ozs7Ozs7O0c7RztJLE87STs7STs7Ozs7O0k7O2lCLE07Ozs7TSxHLGlDOzs7Ozs7O1U7Ozs7OztLOztHOztJOztLOzs7TTtNO007Szs7O1E7USxPOzs7Tzs7Ozs7UyxZOzs7Ozs7Ozs7O1M7Ozs7Ozs7VyxNOzs7Ozs7Ozs7OztVO1c7O1c7Ozs7UztVLFk7VTtVOzs7Ozs7Ozs7Ozs7OztVOzs7Ozs7YTs7Ozs7Ozs7OztTOztLOztJO0c7O0k7O0s7OztNO007TTtRO1U7OztTLFk7Uzs7O1U7Ozs7O1U7O2E7Ozs7Ozs7Ozs7O1M7UztTOztLOztJO0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFE7OztLLE87SyxRO0k7Rzs7SSxTO0k7SztlO0s7TTtNO007O0s7Szs7TSxNO0ssRztNLE07Szs7UTs7O0ssTTs7Ozs7OztNO00sTTs7SztLLE07O0c7O0k7STtJO0k7SyxNO0s7STtJO0k7Rzs7STs7Tyx5QixNO08sTzs7Tzs7O1EsTTtPLE87OztPLDJCLE07TyxPOzs7Rzs7O00sdUI7O00sVztLOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJOzt1QixNLGdEO0c7STs7O1E7O1M7VTtXLE07VyxNOzs7Ozs7OztTO1U7OzttQjs7O1UseUI7O1E7TztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE07SztLO0ksVztHOztJOzs7Ozs7STs7O0k7O0k7Rzs7STs7SztPOztnQyxzQzs7O0ssTTtJLE87Ozs7d0I7Ozs7OztLOzs7OztJLEksVTs7OzJCOzs7Yzs7STs7O0k7OztLLFc7O0s7SyxPOztJLE87RztnQyxrQjs2QywrQjs7STtLLE07SztPOzs7eUIsTyxpQjtJO0k7Rzs7O0ksTzs7O2MsVTs7YyxPO2E7Ozs7O0k7Ozs7SztLO0s7SztJLHNCO0k7OztPLDhCOzs7O007OztLLEk7Ozs7O007OztJO0k7Rzs7STtJLHVCLE07SSxJLFU7Ozs7NkIsTTtLLFk7OztNO007TyxLO087TTs7O007SyxNOztjLE07OztLLE07STtHOztJO0ssVTtLLFc7STtJO0ssTTtLO0ssSztJO0k7Rzs7STtHOztJOztLLFU7O0s7SyxVO0s7TSxPOzs7Z0I7aUI7aUI7aUI7Ozs7O2tCO2tCLE87OztrQjs7bUI7cUI7bUI7a0IsTzs7Ozs7aUI7O29COzs7Ozs7cUIsTTs7dUI7Ozs7Ozs7Ozs7O29CLE07Ozs7Ozt1Qjs7aUI7aUIsTzs7ZTs7Ozs7STtHOztJO0ksSSxXOzs7O00sTTs7O0ksVyxNOztJO0c7O0k7OztLLE07SSxPOzs7O0ksTzs7OztJLE87Ozs7SSxPOzs7STs7Ozs7SyxRO0s7STtHOztJO0ksTzs7O2lDLE8sK0I7O2M7Ozs7ZTtpQjs7Ozs7b0IsTzttQjtlOzs7Ozs7Ozs7ZTtjOzs7OztjOzs7aUI7OztnQjs7YztjO2E7Rzs7STtLOztROzs7Ozs7UyxNO1EsTzs7Ozs7Ozs7Ozs7UTs7Ozs7UyxNO1MsTTtRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7O007RztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087SSxxQjtJLG9CO0ksc0I7Ozs7OztJOzs7Ozs7Ozs7RztzQyxvQjs7STs7OztzQztJO0c7RztJLG9CO0ksYzs7SSw4Qjs7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7O3lDLFc7OzJCLFk7OztPLFk7OztPLFk7OztPLFk7OztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O2lCLE07Ozs7RzsyQixTOztJOztLOzs7OztNO007OztNLEksYTs7Ozs7OztNO087Uzs7O1k7Ozs7O2lCLFcsTzs7aUIsTztnQjs7O1k7Vzs7Z0I7Ozs7OztJO0ssTztLO087O3lCLHFCLDBCOztJLE87RztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O29DLE07OztPLE87Ozs7O0c7Ozs7SztNO08sVTs7O087TTs7Ozs7O29DLE07O087OztROzs7TyxjOzs7Ozs7O007TztRO1UsaUI7UTs7Ozs7UyxJOzs7O1U7Ozs7Uzs7O087Ozs7Ozs7Ozs7STs7Ozs7SztNO087UyxpQjtPOzs7Ozs7Ozs7OztLOzs7TTs7UTs7O1c7VyxjO1U7O0k7SyxPO0s7Tzs7O1U7VTtTOztJLE87Rzs7STtLLE87SztPO1M7OzJCLG1CLGU7OztLO21DOzs7TSxPOzs7K0I7Ozs7SztJO0ksTztHOztJO0k7O0s7TTtROzs7VyxPLGM7VTs7O007bUM7Ozs7TTs7UztXOzs7YyxPO3VEO2E7Ozs7Ozs7Ozs7OztVO1UsTyw4QjtTOzs7Ozs7Rzs7STtJOztLOzswQixPLHNDOzs7bUM7Ozs7TTs7O1M7VSxhO1UsMkI7UyxPLGM7UTs7Ozs7Ozs7OztVO1UsTyw0QjtTOzs7OztHOztJO0k7SztNO1E7O21DLG9COzs7TTs7Ozs7O0ksTzs7O2MsSSx1QixjOzs7c0M7OzthOztHO0c7STs7Ozs7Ozs7Ozs7STs7dUIsTSxnRDt3QyxpQzs7STs7Ozs7Ozs7RztHO0k7OztRLE07Tzs7STs7O1EsTTtPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztLO00sTzs7STs7Ozs7Ozs7Ozs7OztHO2lDLG1DOztJLFc7Rzs7STtrRDtJO0c7O0k7SztLO0ssTzs7Ozs7STtLO007UTs7bUMsb0I7OztNOzs7Ozs7STtLO087OztVLEk7Ozs7O1k7Ozs7OztVLFc7YyxxQixjOzs7a0M7OztTOztLLE87SztJLE87Rzs2QixTOzRCLGdCOzZCLGdCO0c7STs7O1EsTTtPOztJOzs7USxNO087O0k7OztRLE07Tzs7STs7O1EsTTtPOzs7d0IsaUQ7O0k7SyxtQixPO0ssTzs7O0ksTzs7RztJOztpQyx1QjtnQyxpQztxQix1Qzs7SSxXO0ksaUI7Rzs7SSxPO0s7SSxpQjs7Ozs7TTtPOztRLGdDOzs7Ozs7Ozs7OztJOzs7Ozs7STs7Ozs7Ozs7Ozs7OztHOztJOzs7WTs7Rzs7STs7SztLO0s7SyxLO0s7SztPOzs7VSw4Qjs7VTtTOzs7SyxPO0s7SyxjO0ssTztLLGtCO0ssWTtLLE07STtLOztNLFc7Yzs7O0k7Ozs7Ozs7Ozs7O0k7OztHLGdDO0c7SSxpQjs7Ozs7SSxPO0c7O0k7Rzs7SSxPO0c7O0k7STtLO0c7O0ksTzs7Rzs7SSxPO0c7O0ksTztHOztJO0k7STtJO0k7STtHOztJO0k7STtJO0c7O0k7STtJO0c7O0ksWTs7OztJLE87O0c7O0k7dUI7O0k7Rzs7STtxQjtJLEksVyw2Qzs7OztLLEksUSxrQzs7Ozs7O29COzs7Ozs7SyxZO0s7Szs7Rzs7STs7USxJOzs7Syx3Qjs7OztLLHFCO3VCLE07O0k7Rzs7STs7eUI7O08sOEI7TyxPOztPOzs7UTtRLE07TyxPOztlLE07O0c7O0k7dUIsTTs7STtHOztJO3VCLE07O0k7Rzs7STs7TyxrQixtQzs7Tzs7O1E7USxTO087O087OztRO1E7TyxPO2UsTTs7Rzs7STtLO0ssTTtJLE87Rzs7STs7TyxrQjswQixNOztPOztPLDhCO08sTztlLE07O0c7Ozs7SyxNO0k7O0ssTztLO08sMkM7Szs7O0s7Szs7SSxNOzs7SSxJLFc7Ozs7Ozs0Qjs7UTs7O1M7USxPOztRLE07OztRO1M7O1U7VTs7VTs7VzthOzs4QiwrQjs7VTs7UyxNOzs7Ozs7Vzs7O1k7WSxRO1ksTzs7VyxNO21CLE07O1E7OztJO0kscUI7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STtJLE87Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7RztrQyxxQztrQyxxQzs0QyxnQztzQyw2Qjs4QixpQztxQyxpQzs7STs7eUI7O08sOEI7TyxtQjtlLE07O0c7O0k7O0s7OztJO0c7O0ksTztHOztJO0c7O0k7Rzs7STs7TyxrQiwrQjtxQixNOztPOztPOzs7UTtnQjtPO29CLE07USxxQztvQzs7OztlLE07O0c7O0k7O087O1EsTzs7OztPOzs7UTtRLFU7O2UsTTs7Rzs7SSxPOzs7Yzs7aUI7O2tCLE07O2lCOztpQjs7Ozs7aUI7aUIsTzs7aUIsSTs7O2tCOzt1QjttQixXO21CLE87Ozs7O2tCLFc7a0IsTzs7O2tCLE07OztpQjs7aUI7O2lCOztpQjt5Qjs7OztHOztJLFksTzs7STs7RztJLG1COzs7OzBDLGtDO3dDLDJCOztJLFc7STs7O007O08sTztrQjs7Ozs7Ozs7OztHOztJOzs7TyxVLDJCO087O08sOEI7Ozs7O087OztRO1E7O1E7TztlLE07Ozs7STs7O00sc0I7OztPO1EsTztRLE87TztRO1MsTztvQjs7O2dCOzs7Ozs7O0s7Ozs7OztNOztxQzs7Ozs7TTs7OztHOztJLEksK0M7Ozs7O00sTTs7Szs7Rzs7STs7Tzs7Tyw4Qjs7O08sTTs7Tzs7O1E7OztHOztJO0k7Szs7O00sSTs7Ozs7Ozs7Ozs7Szs7Rzs7STs7TyxrQjtPLE87O087OztRO1EsUztPLE87O08sZ0M7TztlLE07O0c7O0k7Rzs7SSxJLDZCOzs7O0s7O1UsaUM7O0s7O0ksTTtHOztJLEksNkI7Z0IsTTs7STtHOztJO2dCLE07O0k7Rzs7STtJLE87Rzs7STtJOzs7O1EsSSxtQyxjOzs7Z0M7Ozs7UTs7O0c7O0ksVztJO0ssbUI7Szs7TTs7Ozs7O0s7TTtPLE87TyxPOzs7Ozs7TTtPLEs7TyxPO007OztLO0s7STtJLEksZ0I7STtLOzs7Ozs7Ozs7Ozs7c0I7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksaUI7O0k7O0ssRztNLFc7TSxLLHlEOzs7STtLO0s7Ozs7NEI7OztHOztJO0ksd0MsTyxpQjtJLFc7O0k7Rzs7O0s7SyxPO0k7STtLLG9DLHVCOzs7TyxZOzs7OztPLFk7Tzs0Qjs7Tzs7d0IsaUQ7O08sTzs7O2lCO2dCOztNOzs7SztLOzs7ZTtlO2dCO2lCLFU7aUI7bUI7NEI7O2dCOztlLG1COztlO2M7O0c7O0k7Ozs7Rzs7SSxPOzs7K0IsTyxxQzs7Rzs7SSxrQzt1Qjs7STtLO00sTztNLEk7TSwwQjtLOzs7OzRCOzs7OztJOztPOztRO1EsK0I7TyxPOzs7aUI7aUIsK0Q7aUI7Z0I7OztPOzs7UTsrQixnQjtRO1U7OzthOzs7TyxPO2U7O0c7OzBCLGdCOzs7Ozs7eUM7OztPOzs7UTtRO1U7OzthOzs7ZTs7OztJLE8sMkM7Rzs7STs7O087UTtROzs7OytCOzs7OztPO1E7UTs7OzsrQjs7OztrQjs7TyxPOztHOztJLEksSSxPOzs7Ozs7SSxPO0c7O0k7O0ssTztJLE87RzsyRCxPO0c7dUQsTztHOztJLGUsTzs7O0ssTTs7SSxPO0c7O0k7Ozs7Ozs7Szs7O087O087O1E7Ozs7Ozs7Ozs7USxLOzs7Ozs7Ozs7Vzs7O1ksaUI7WTs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztXOzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7O1ksbUI7WTtjO1k7Ozs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztPO1Esb0I7UTtROzs7VztXO1csTztVO087OztVO1U7O2E7OztjLFM7Yzs7OzswQjs7Ozs7YTtjLE87YyxZO2M7YztjLE87b0I7OzthOzs7YyxhO2MsTzthOzs7Ozs7Ozs7aUI7O2tCLE87a0I7b0I7c0Q7aUI7OztvQjs7bUI7Ozs7O2lCOztrQjtvQjtrQjtvQjtzRDtpQjs7O29CO3FCLFk7cUI7OzttQjs7OzthO2MsTztjLFk7YztjO2MsTztvQjthOztjO2dDOzs7Yzs7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7OztjLFE7YyxRO2M7YyxPO2MsWTtjO2M7K0I7OzthOzs7O2MsVztjLE87YTs7O2UsTTs7O3dCOzs7O2E7YyxTO2MsTztjLFE7Yzs7Ozs7Ozs7OztjO2M7YyxPO29COzs7OzthOzs7YyxXO2M7Z0I7YyxPO2MsVTtjO2M7YyxPO29COzs7O2E7OztjLFM7YztjLE87YyxVO2M7YztjLE87b0I7OzthOzs7YyxTO2MsTztjLFU7YztjO2MsTztvQjs7O1M7O087O087OztRLGM7USxPO1EsTztRLE87USxPOztROzs7UyxPOzZCOzs7TzttQzs7OztJOztLLFc7SztNO08sTztjOzs7Ozs7STtLLFc7SyxHLHdDO0s7SztrRCxzQjtLO0s7Ozs7cUI7OEI7OztNLE87OztnQjs7Z0IsVztnQixPO2U7Ozs7OztHOztJOztLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLGdEOzs7O2lCLDBCO087Ozs7Ozs7Ozs7Rzs7STtJLGlCO0k7STs7O087TTs7STtLOzs7Szs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtJO0s7Ozs7bUIsZTs7SSxJLHFCOzs7Ozs7OztROztTLFM7UztXOzs7YztjOzs7OztpQjs7O2lDOzs7aUI7a0I7bUIsVTttQjttQjttQjttQjttQjttQixXOzttQjttQjs7Ozs7c0I7Ozs7Ozs7Ozs7OzttQjttQjs7OzttQzs0Qzs7O29CLE87Ozs4Qjs7Ozs7Ozs7Ozs7Ozs7OzhCLE87Ozt3Qzs7a0Q7O3VDOzs2Qjs7Ozs7Ozs7OztnQjtjOytCO2M7Ozs7Ozs7Ozs7ZTtjOzs7Ozs7Ozs7Ozs7O2E7Ozs7OztZOzhDOzs7O1E7O1M7VztTO1c7OztjO2M7Ozs7O2lCOzs7aUM7OztpQjtrQjttQixVO21CO21CO21CO21CO21CO3lCOzttQjttQjs7OztvQzttQjtvQjtvQix1Qjs7O29CLE87Ozs4Qjs4QixPOzs7d0M7O2tEOzt1Qzs7NkI7Ozs7Ozs7Ozs7Z0I7YztjO2M7ZSxZOzs7Ozs7Ozs7OztlO2M7Ozs7Ozs7Ozs7Ozs7YTs7O1M7O1k7OEM7Ozs7O0k7STtJOzs7Szs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJOztLLE87SztJO0k7STs7Ozs7Tzs7O3VCOzs7TztROztTLGU7UztTO1MsVzs7UztTOzs7OzBCO1MsTzs7O21CO21CLE87Ozs2Qjs7dUM7Ozs0Qjs7a0I7Ozs7OztPO007STs7O0s7Ozs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJLHVDO0k7OztPO007O0k7STtLLFM7Szs7O0s7STtLO00sTzs7OztJOzs7Ozs7O0s7STs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtLO00sTzs7OztJOzs7Ozs7SztJOzs7Ozs7Ozs7Ozs7Ozs7STtJO0s7OztLOzs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7STtLOzs7Szs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSSxRLCtDOzs7O0ssSSxzQjs7Ozs7O2tCOzs7Ozs7SztNO00sVztNLE07TSxPO00sTztNLE87SztLO00sWTtNLFE7TSxPO007Ozs7Ozs7Ozs7SztLOztHOzs7O0k7OztLO0ssTztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SztLO0k7Rzs7STtJO0c7O0k7SztLO0k7Rzs7Ozs7SztvQyxlOzs7bUMsZTs7OztJO0ssTztLO0s7SztJOzs7STtLO0ssUTtLOzs7STtHOztJO0ksNEI7Rzs7SSxZO0k7Rzs7STtLO0s7STtHOztJO0k7Rzs7STtHOztJO0k7Rzs7SSxvQixPO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxJLFEsK0I7SSxPO0c7O0k7SyxLO0s7SzswQztJO0c7O0k7SyxLO0ssZ0M7STtHOztJO0ssSztLO0ssUTtLO0k7Rzs7SSxTO0k7OztHOztJO0ssSztLLFE7Syw2QjtJO0c7O0k7SyxLO0s7SyxvQztJO0c7O0k7SyxLO0ssK0I7STtHOztJO0c7Ozs7O0ssVzs7Ozs7O1Msa0I7Uzs7VSxRO1MsVztRO0s7O1E7OztTLG1COzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7O1E7Ozs7UyxxQjs7Ozs7Ozs7O1E7OztTLHFCOzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7Ozs7Ozs7O0k7SyxPO0s7OztJO0c7O0k7Szs7O0k7RzsrRTtHOzs7O0s7O0c7RztJOztHO0c7STs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7O0c7STs7O0k7STtHOztJO0ssSzs7O0s7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SyxLOzs7Szs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSTs7OzRCOzs7cUI7O3VCOzs7Szs7Ozs0QixPLGlCLHFCOzs7SztJOztLOzs7OzRCLE8saUIscUI7OztLO0k7STtLO3lCLHlCO0ssMkIsd0I7Syx5QiwwQjtLLHdCLHlCO0ssMkIseUI7SywwQiwwQjtLLDBCLHlCO0ssMEIsMEI7STs7Ozs7Ozs7Ozs7Ozs7Rzs7O0s7TSxNOzBCOztLLEcsOEI7SyxNO0k7SSxJOzs7NEI7Ozs7Szs7O00sRzs7TyxXOzs7SyxNO0k7O0s7OztNLEc7O08sVzs7O0ssTTtJO0k7Ozs7SztLO0s7SztLO0s7SztJOzs7Ozs7Ozs7Ozs7OztHOztJLHFCOztLLE07STtHOztJOzs7O0s7O2U7ZTtLLGM7SyxpQjtLLGlCOzs7O0s7TTs7O1M7O3NDOztRO0s7TTs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLEc7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOztpQjs7Ozs7OztXOzs7Ozs7UTtLOztJOzs7STtLO087SyxLO0s7O0ssTTs7STtHOztJLEcsZ0Q7SSxjO0ksTztHOztJO0ssTztLLE87SztPLFc7SSxPO0c7O0k7STtJO0ssTztLLE87SyxPO0s7Tzs7UztLLFc7Szs7STtJO0c7O0k7MkIsVztHOzsrQiw0QztJO0c7Rzs7O0k7TTs7Ozs7VTs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEk7Ozs0Qjs7O0k7Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxPO0c7O0ksVztJLFc7STtLO00sTzs7Ozs7OzhCOztJLE87Ozs7NkIsTywwQjtHOztJLGtCO0ksTTtHOztJLFU7O0k7SSxPOzs7YztlOzs7b0I7ZSxPO2UsTztjLE87YTs7Rzs7SSxVOztJO0ksVztJLE87Rzs7SSxVOztJO0ksVztJLE87Rzs7SSxVO0ksVztJLE87Rzs7SSxVO0ksb0I7OztLLEksVzs7Ozs7O0s7O0ksVztJLE87Rzs7SSxVOzs7O0ssSSxXOzs7Ozs7Szs7SSxXO0ksTztHOztJOzs7TSxZOzs7Tzs7O1EsSSxXOzs7Ozs7UTs7Tzs7Tzs7Ozs7TSxNOzs7O0k7Rzs7SSxVO0ksYztJOzs7SztNLFc7Ozs7Ozs7Szs7O0c7O0k7Rzs7STs7O1MsSTs7O007TyxJLFc7Ozs7Ozs7Ozs7Ozs7STtLLGtCOztLOzs7Ozs7Szs7SSxJOzs7O007OztJO0k7Rzs7STs7Yzs7O2dCOztpQjtpQixPO2dCO2dCO2U7OztHOztJOztPOztROzs7Tzs7Tzs7O1E7OztPOztPO1E7Ozs7UTtVOztPOztHOztJO0s7OztLOzs7O007O0s7OztrQjs7STtHOztJOzs7Szs7O007OztNOzs7O0k7SztPOzs7VTtVO1M7O0s7Ozs7O0s7Ozs7OztPLHVCOzs7Ozs7Ozs7Ozs7Ozs7OztZO007Ozs7Ozs7Ozs7O0s7STs7O2lCLE87OztNOzs7Tzs7Ozs7TTs7Szs7OztNOzs7OztNO1E7Ozs7Ozs7TTs7Ozs7Rzs7STs7Tzs7UTs7O1EsTztPOztPOzs7UTs7O1EsTztPOztPO1E7Ozs7UTtPOztHOztJO0s7OztJLEksVTs7OztNOzs7STtJO0k7Rzs7STs7O08sSTs7OztTOzs7Ozs7UTtROztPLHVCOzs7O1c7O1c7bUI7O087Ozs7UTtPOztPOzs7UTs7O08sSSxZOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7Ozs7OztPOzs7O087OztROzs7TyxJLFU7Ozs7Ozs7TztPOzs7O08sTTs7O0k7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksVTs7OztTOzs7TztPO087O08sTTs7Rzs7STtLOzs7SSxpQjtHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxhOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxjOzs7O1M7OztPO087Tzs7TyxNOztHOztJOztPLGdCOztpQjs7O21COztvQjtvQixPO21CO21CO2tCOzs7Ozs7Ozs7O1EsSSxhOzs7Ozs7O1MsTzs7OztvQjttQjttQjtrQjs7O087O08sTTs7Rzs7STs7SyxNOztJO0k7Rzs7STs7O087Ozs7UTs7Ozs7USxJLFk7Ozs7Ozs7UyxPOzs7O29CO21CO21CO2tCOzs7Tzs7TyxNOztHOztJOztLLE07O0k7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFc7SSxtQjtJOztLLFE7O0ssTzs7STtZLDBDLGlCO0ksTyxXO0c7c0Msa0M7cUMsa0M7dUMsa0M7d0Msa0M7c0Msa0M7dUMsa0M7Ozs7Ozs7UTtPOzs7Tzs7TztROzs7Tzs7Ozs7STs7OztJLGlCO0k7Ozs7STs7OztJOzs7O0k7Ozs7STs7OztJOzs7O0ksSTs7Ozs7OztPOzs7OztJOzs7O0ksc0I7Ozs7SSxJOzs7NEI7Ozs7O0ssTzs7OztnQjtlO2U7Yzs7O0k7Ozs7SSxJOzs7Ozs7O087Ozs7O0k7Ozs7SSxzQjs7OztJLEk7Ozs0Qjs7Ozs7SyxPOzs7O2dCO2U7ZTtjOzs7STs7OztJLEk7Ozs0Qjs7Ozs7Ozs7O1M7O1M7aUI7O0s7O0ksb0IsZTs7O0s7Szs7STs7O0ksSTs7OztLLGE7SyxJOzs7NkI7OztLOztJO0c7O0ksSSx5Qjs7OzRCOzs7STtHOztJLHVDLGM7Rzs7SSwwQyxjO0c7O0ksMEMsYztHOztJLDBDLGM7Rzs7SSwwQyxjO0c7O0k7Szs7O2U7ZSxPO2M7Yzs7STs7Szs7O0s7eUI7SSxvQixPO0ksTzs7O2MsTyw0QjthOzs7Rzs7STtLOzs7TTswQjtLLG9CLE87SyxPOzs7ZSxZOztlLE87Yzs7OztJLFk7NEIsTyx5Qjs7STtLO007UTs7O1cscUIsTztVOzs7TTtnQjtLOzs7O007UTtVOzsyQix3Qzs7Ozs7O0c7O0k7Szs7O2U7ZTtnQjs7bUI7NEI7Z0Isb0IsSztnQixPOztlLG1CO2U7O2dCLE87ZSxPO2M7OztJOztLOzs7Szt5Qjs7SSxPOzs7YyxTO2MsTzthOzs7Rzs7O0ssZ0I7O0ssTztJO3NCLGE7dUIsYztJO0s7Rzs7NEIsTywyQjtzQixhO3VCLGM7STtLO0c7O3NCLGE7dUIsYztJO0s7Rzs7a0MsTyxpQztzQixhO3VCLGM7STtLO0c7O0k7SztLLE8sdUI7STtzQixhO3VCLGM7STtLO0c7O21DLE8sa0M7c0IsYTt1QixjO0k7SztHOzs7SyxPO0k7c0IsYTt1QixjO0k7SztHOztJOzs7OztVO1U7b0I7OztzQjsyQjs7d0I7O1M7OztJO0s7SztNLEcsd0M7O087OztRLE87TyxHO1E7UyxPO1MsUTs7Ozs7O007MkIsZ0M7O0k7STs7O0s7Ozs7OztLO087OztVLEksSztVLFc7Uzs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxPO0c7RztJLFc7SSxtQjs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJLGM7STs7Ozs7Ozs7Ozs7OztHO0c7STs7O1EsTTtPOztJOzs7USxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssVztLLE87STtJOzs7TyxPOytDLHFCOzs7TyxPOytDLDRCO2U7O0c7O0ksTzs7OztjLFc7YyxPO2E7Rzs7STsrQyxzQjs7Rzs7STsrQyxzQjs7Rzs7STs4QyxzQjs7OztHOztJLDZDLHlCOztHOztJLHVDLHlCOztHOztJOytDLHNCOztHOztJOytDLHNCOztHOztJOytDLHNCOztHOztJOztlOztnQjtlO2M7O0c7O0k7SyxPOzs7Tzs7O1EsTztPO087a0I7cUM7TyxPOzs7Tzs7USxPO087Tzs7Tzs7USxPO087Tzs7Tzs7USxPO087Tzs7Tzs7USxPO087TyxJOzs7O1M7OztPLFc7TyxPOzs7Ozs7OztPOztRLE87TztPLEk7Ozs7Uzs7O08sVztPLE87Ozs7Ozs7O087O1EsTztPO08sSTs7OztTOzs7TyxXO08sTzs7Ozs7Ozs7Tzs7USxPO087Tzs7O087Tzs7O087Tzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O087O1EsTztPLE87O087O1EsTztPLE87Ozs7TztRO1EsTztRLE87TyxPOzs7OztJOzs7TztPLEc7USxXO1E7OztRO1MsTzs7UyxPO1E7OztPO1EsTztRLE87TyxPOzs7Ozs7Ozs7O08sTzs7O087OztHOzs7TSx1QjtNOztPO087Uzs7WTtNLFc7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7aUMscUI7O0k7YztjOztrQyxtQjs7SSxJLE0scUIsVztJO0c7eUIsdUI7O0k7Ozs7OytCOzs7OztJO0c7O0ksWTtJO2lCOztlLE87SyxtQixJO1c7OztHOztJLE87OztjOztpQzs7Ozs7a0IsbUI7Ozs7Yzs7O0c7cUQ7Rzs7STs7dUI7Ozs7Ozs7Vzs7O1c7Ozs7Ozs7O1M7OztROzs7O3FDOztJOzswQixPLHlDOztJO0ssTTtJO0c7O0k7SyxNO0k7Rzs7STtLLE07STtHOzBDOztJO0ssTTtJO0c7O0ksTzs7K0M7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STtHOztJLDhCOzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TyxrQztPOzs7O2tDLHFDOztJOzs7MEIsTzs7NkIsTzs7O1EsTzs7NEIsTzs7O1EsTzs7O2tCO2tCLE87aUI7Ozs7USxPOzs0QixPOzs0QixPOzs0QixPOzs7UTtRLE87O0k7OztJOzs7O1EsVzs7eUIsVzs7O1EsbUI7Ozs7O1MsbUI7Ozs7O1E7Z0I7OzttQjttQixtQjtrQjs7Ozs7USxXOzt5QixXOztzQixXOzt3QixZOztRLHlDLE07USxZOztJO0c7O0k7STs2QixrQztHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7O0s7OztTLEcscUIsTTtTO1E7Ozs7O3VCOzs7STtHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7STs7Ozs7O1MsTzs7O1M7UyxPOzs7O0s7OEIsK0I7O0c7O0k7STtLOztJO0k7O0c7O0ksTzs7NkIsbUIsVTs7Rzs7STtJLE87Rzs7STtHOztJO0k7Szs7STtJOzttQixxQzs7O0c7O0k7SSxPO0c7O0k7RzsrQixPLHFDOztJOzs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7O1E7O1E7Ozs7O1M7UTtTOzs7Ozs7VTs7Ozs7Ozs7Uzs7OzsrQjs7OztJOzs7eUIseUI7STtHOzs7STtLOzsrQixXOzs7bUI7SztJO0k7SztJOztLOzs7OzZCOztTOzs7VTs7O1U7OztVOztpQztTOztzQzs7Ozs7O0s7STtJO0c7O0k7STs7d0I7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Szs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7dUIsdUI7O0kscUM7O0k7Rzs7SSxZOzs7Ozs7Ozs7Ozs7Ozs7O08sTTs7ZSxNOzs7OztJO0c7O0k7Ozs7Ozs7O2U7O0k7Rzs7STtLLGtCO0ssbUI7STs7OztLO007O3FCO08sTTs7TTs7OztPOztNOzs7O08sTTtNLEs7TTs7Ozs7TSxJO007TztxQjtPOzs7O1E7O1E7Ozs7O087Ozs7SSxpQjtJO0c7bUIsTyxvQzs7STtJLE87Rzs7STtJLE87Rzs7STs7STtLO2lCO0s7Ozs7TTs7OztLOzs7OztVLFU7VSxPO1M7TTtNOzs7TyxVOztNOztTOzs7O0s7Ozs7STs7Ozs7O0ssTTtLLFE7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztJLFM7STtHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztHOztJLHFCO0k7OztrQjtHOztJOztxQixPOzs7TyxPOzs7O08sTzs7Ozs7Ozs7O0c7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZLE87O0ksTzs7O0k7STs7OztRLE87Ozs7O1EsTzs7Ozs7Ozs7Ozs7OztLLE87O0c7O0ksTztHOztJOztxQixPOztxQixPOzs7O1EsTzs7TyxPOzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7SSxlO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSw4Qjs7O0ssTzs7O0ksTzs7O0ksTzs7O2M7O2E7O0c7O0k7STs7Rzs7STtJLE87OztjO2M7YyxPO2E7O0c7O0k7STs7SztLO0ssSSxtQjttQzs7OzBCLE87OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTs7O1E7UTtRLE87OztrQjtrQjs7bUI7bUI7bUI7OztrQjtrQjtpQjs7OztRO1E7OztROzs7Ozs7UTtRO2tCOztROztRLDRCOzs7O1E7OztXLE87OztxQixPO29CO1U7Ozs7Ozs7UTtROzs7UTs7Ozs7Rzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjs7TTtNOztNOzs7O1M7VTs7O2E7YTthOzs7YTthOzs7YTthOztTO1M7Ozs7O21DOzs7O1EsTzs7O1E7Ozs7OztRLE87OztRO1E7OztRO1E7a0I7O1E7UTs7OztTO1c7OztjOztlLE87ZSxPO2MsTzthOztTLE87UTtROzs7UTtROzs7UTtROzs7UTtROzs0Qjs7NEI7OzRCOzs7UTtROzs7OztHOztJOzs7TztPO087OztPO087TztPOzs7TztPO087OztPO087O0c7O0k7STs7SztLO0ssSSxtQjs7TTs7TTs7O1M7UztROzs7O21DOzs7O1EsTzs7O1EsTzs7O1E7O1E7OztXOzs7Ozs7Ozs7UTtROzs7Ozs7OztTOztTO1M7O3VCLGdEOztTOzs7UTs7Ozs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7OztRO1E7UTtROztTOztTOztTOzs7OytCOztZO1k7OztTOztRO1E7OztVOztVOzs7OztZOzs7O1k7Ozs7WTs7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtROzs7Ozs7Ozs7Vzs7Ozs7O1c7Ozs7OztXOzs7Ozs7O1EsTzs7O1EsTzs7O1E7Ozs7OztRO1E7OztRO1E7Ozs7OztRO1E7Ozs7OzRCOzs7UTs7Ozs7O1E7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1E7UTtTLE87O1E7OztRLE87OztRO1E7UTs7Ozs7Rzs7STs7O0k7STtJO0k7O0c7O0k7STs7Rzs7STtJOzs7O0s7Szs7O0k7STtJO0c7OztJOzs7STtJO0k7STtJO0k7STtJO0k7SSxnQjs7bUIsMkI7OztLO0s7Ozs7SztLOzs7STtJOztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SyxPOzs7STtnQjtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7O1E7UTtROzs7UTtRO1E7Ozs7OztROzs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7OztPOztPOzs7Ozs7OztPOzs7Ozs7O087OztPO087Tzs7eUI7O0c7O0k7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTs7O1E7UTtROzs7Ozs7UTtRO1E7OztROztROzs7Vzs7OztROzs7Ozs7OztTO1M7Uzs7Ozs7OztROzs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7eUI7O0c7O0k7O0s7Szs7O0k7STs7O0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7Ozs7Uzs7Ozs7OztRO1E7UTs7O1E7UTtTLE87O1E7OztRLE87OztHOztJOzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPO087OztPOztPOzs7TztPO087OztPO087OztPO087O3lCOztHOztJO0k7STs7Rzs7STtJO0k7O0c7O0ksWTs7STs7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7O2tDOzs7OztRO1E7Ozs7OztROzs7Ozs7OztTO1M7UztVLE87O1M7Ozs7Ozs7UTtRO1MsTzs7UTs7O0c7O0k7OztJO0k7SSxJLGlCOzs7O087TztPOzs7TztPOzs7aUI7Ozs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7O2dCOztrQyxtQixVOzs7O087Tzs7OztnQjs7a0MsbUIsVTs7OztPO087Tzs7eUI7O0c7OztJOzs7OztPO087O3VCLE87OztPO087OztPO087OztPLE87OztPO087Ozs7O0k7STtJOzs7Ozs7Ozs7O0k7STs7SztJO0k7STs7O0kscUM7O0k7Ozs7Ozs7OztJO0k7STtJO0k7Ozs7STtJOzs7O0k7STs7O0s7Szs7O0k7SyxPOztJOzs7STs7O0k7O2MseUI7O0s7STtJOztHOzs7STtJOzs7O0k7STtZOztJOzs7O0k7STs7O0k7O0s7Ozs7TSxPOztLO0s7Szs7O0k7STtHO2dDLDBDO21DLDBDOzs7STs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7O0k7O08sTTs7TyxNO2UsTTs7RzswQyxrQztpQywwQztHOzs7eUIsb0I7NkIsaUM7O0ksTTtHOztJLE07RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7OztNLHNCOztNO08sTztNO007TyxhO08sVztNO2M7O0s7RztJO0k7STtJOztJO0k7SSxnQjtJLGU7SSxlO0ksYztxQyx3Qjs7STs7O0c7O0k7Ozs7O0c7O0k7SyxROzs7cUI7Ozs7Rzs7STs7Rzs0QixPLHdDOztJO0k7STtvQyxPLHNCO0k7Rzs7SSwrQztHOztJO0ksSTtJO0k7Rzs7SSwrQztHOztJO0c7O0k7Rzs7STtJO0k7STtHOztJLHFDO0c7O0k7OztJO0k7b0MsTyxzQjtJO0c7O0k7OztJO0c7O0k7O0c7O0k7O0k7RztxQywrQjtHOztJOztLO00sTztNOzt5Qzs7OztJO0c7O0k7O0c7O0ksSSxxQyxJO0k7STtHO0csSTs7STtLO0k7Rzt3QixPLDhDOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7MkIsa0M7aUMscUM7RztrRTtHOztJOzs7O0k7RzsrQix3QjtHO0k7Ozs7Ozs7OztJLHVDOztJO0c7O0ksa0IsTzs7SSxPO0c7bUMsOEI7O0k7Yzs7Rzs7SSxXO1c7Rzs7SSxXO0ksUztzQjtJO0ksTztHOztJLG1COztJO0c7O0ksK0I7STtHOztJOzs7O00sTzs7O0ksTztHOztJLGtCOztJO0c7O0k7O0c7O0k7STs7O1E7OztnQjs7Rzs7STtrRDtJO0c7O0ksWTsyRTtJLE07Rzs7STs7O0s7TSxZOzs7TTs7Ozs7Tzs7Ozs7STtZOzs7ZTtlLE87Yzs7O0c7O0ksTzs7O2M7YyxPO2E7Rzs7STs7OztNO08sTztPLE87TyxPO00sVzs7O007O08sTztPLE87TyxPO00sVzs7Ozs7Ozs7Ozs7Ozs7SyxHO007Ozs7YTtNOzs7OztNOzs7O087Ozs7O0c7O0k7STtLLFk7Ozs7Ozs7O0s7O0c7O0ksSSx1QixROzs0QztJO0c7O0ksSSx1QixRO29EO0k7Rzs7SSxjOzs7O1E7OztRO1MsWTs7OzthLE87Ozs7O1MsTTs7O0ksTztHOztJLFk7Ozs7UTs7MkIsTzs7SSxPO0c7Rzs7TTs7O1M7UyxPO1E7O0k7OztNLEs7Tzs7OztNLEs7Tzs7SztNLFE7TSxROzs7Ozs7Szs7TyxXO08sVzs7O08sVztPLFc7Ozs7Ozs7Ozs7O00sRztPOzs7OztjO087Ozs7Vzs7O0k7Rzs7SSxZO0k7Ozs7SztLLFE7a0M7O0s7Szs7STs7Rzs7O0s7SztNLEssNkI7TSxZOzs7O1U7Ozs7OztZLEksVTs7Ozs7Ozs7Ozs7O2U7Ozs7OztXLE87O3lDOzs7Ozs7OztVLG9DOzs7Ozs7OztVOzthOztvQzs7O1UsRyw0QjtVLFc7Ozs7OztNLE87O29DOzs7O0k7STtHOztJO0s7SyxLLDJDO0k7STtHOztJO2dCOztJLE07Rzs7STtLOzs7Ozs7O1M7d0MseUI7Ozs7Uzs7O1k7WSxXOzs7YSxPOzs7WSxPOztpQyx5Qjs7Vzs7Ozt3QztLO0s7Szs7Ozs7O0s7Szs7Rzs7STtLO2tCO0s7SztLOzs7Ozs7SztLOztHO0c7STs7O0k7STtJO0s7OztROztRLEksNEI7Ozs7O1MsTTs7O087O0s7SztLO0s7Ozs7OztLO0s7Szs7RzsrQixPLG9DOztJO0ssUTs7OztJO0ksWTs7OztLOzs7SSxPO0c7NkIsdUIsc0I7O0ksSSxROztROzs7O00sWTs7OztNO00sTzs7Ozs7OztHOztJO0k7Rzs7STtJO0ssWTs7TSxZOzs7OztVO1U7Ozs7O1U7VSxPOzs7VTs7VSxPOzs7VTs7Ozs7VTtVLE87OztvQjtvQjttQjs7O007O0s7O0c7Rzs7OztRLE07Tzs7STtJO0ssSSxJLE87Ozs7OztLOzs7O3NCO0ssNkIsTztLLEcsK0I7Szs7O0c7O0k7STtLO00sYTtNLE87SyxXO2dCLDZCO0ssWTs7Ozs7b0I7VSxJLFc7OztzQzs7Ozs7Ozs7O29CO1U7VSxHLCtCO1UsVzs7Ozs7O0ssTzt3Qzs7Rzs7SSxXO0k7SztLLFc7Szs7Ozs7O0s7SyxNOztHOztJLFc7O1EsbUM7Szs7O00sTzs7OEI7Ozs7Ozs7Rzs7SSxJLG9DOzs7OztLOztHOztJO0ssbUI7Z0I7Z0IsMkI7SyxZOzs7OztvQjtVO1csVztXO1c7Vzs7OztzQzs7OztVLEksSSxPOzs7Ozs7YztpRCxvQjs7VTs7OztjOzs7aUI7a0IsTztrQjttQztpQjtnQjs7O1U7O1ksTTtXLFc7VztXO1c7Ozs7OztXO1csTzs7bUM7Ozs7Ozs7OztxQjtXOzs7Ozs7O3dDO1U7OztTLG9CLFU7Ozs7cUI7VyxlO1c7Ozs7UztTLE87O2lDOzs7O29CO1U7VSxHLCtCO1U7Ozs7O0s7SyxPOzs2Qjs7O0c7O0ksbUI7ZTtJLFc7SSxJLHdCOzs7O0s7Szs7Rzs7SSxJLDhCOzs7OztLOztHOztJO0k7Syx1Qjs7OztPO1EsTztRLGM7Ozs7Ozs7O00sSTs7OztLLGlCO0ssVztLO0ssWTs7Ozt5Qjs7Ozs7Ozs7d0I7OztVO1csTTtXLE87Ozs7Ozs7Ozs7O2E7Z0Qsb0I7OztTO1c7OzRCOztVOzs7OzthLE87Ozt1QixPOztpQzs7OztzQjs7O1k7UyxtQjtTLEksVzs7O3FDOzs7Ozs7O1MsTzs7O21COztrQjs7O0ssTzs7O2U7Ozs7Rzs7STtJLHVCO0c7O0k7SSxXO0k7Rzs7Ozs7OztROzs7OztRO1E7UTs7O1c7VyxPO1U7O1EsTzs7O2tCO2tCLE87aUI7Ozs7UTs7Ozs7STtHOztJO0c7K0IsMEI7O0ksSSxRLDZCOztLLFk7OzttQjs7O0s7TSxROzs7Szs7O3FCO0s7SztLLE87d0M7STs7Szs7Ozs7bUI7O007TSxjLE87TTs7dUI7O00sWTs7Tzs7USxPO1EsSztRLE87UTs7cUI7Ozs7OztLO0k7STs7STs7cUI7O0ksTzs7O2M7ZTtlLE87O2E7O0c7O0k7NEI7Rzs7STtLLFk7Z0I7Ozs7Ozs7SztLO0s7SyxPOzs2Qjs7O0c7O0ksZTtJO0ksbUI7STtLLFk7O007O08sTztPLE87TSxHLHlDOztLO007TyxRO08sVzs7Ozs7YztZOzs2Qjs7O007Ozs7O00sZTtNO00sTzs7OEI7OztJO0k7OztPLFc7TztNOztJO0s7TSxXO007Ozs7OztNO0c7O0k7SyxXO0ssVztLO1E7TSxNO0s7SyxPO0k7SSxJLFMsSTs7Ozs7O0k7STtHO0c7STs7Ozs7Ozs7OztJLG9CO0ksVztzRTtJLFk7NEM7Ozs7O00sTTtLOzs7O00sTztNO1E7Ozs7OzRCLE87SSxnQjtJOzs7Ozs7Uzs7O1U7Ozs7Ozs7Ozs7O2MsRzs7Ozs7Ozs7Ozs7Ozs7OztXLEs7Ozs7Ozs7Ozs7cUI7Ozs7OztTOzs7Ozs7O1M7O1UsTztVLFE7OztVOzs7O1k7Ozs7O1U7VztXLE87Ozs7OztZOzs7Ozs7Ozs7Ozs7WSxNOzs7O1UsYzs7Ozs7WSxLO2E7YyxVOzs7Ozs7Z0I7Ozs7Ozs7Ozs7OzthOztjOztpQixrQixRO2lFO2lCOztjLFM7YTtlLGtDO2MsVztjO2dCO3FCO2U7Z0I7Z0IsTzt3Qjs7Ozs7Ozs7Ozs7VTt5Qjs7Ozs7a0I7O0k7STs7O0k7Ozs7SSxPOzs7YzthO0c7O0k7O0k7O0k7Rzs7SSxPOzs7YyxPOzttQyxtQzs7YTtHOzs7Szs7OztrQjtNO0ssTztJOztLLEksNkI7Ozs2Qjs7O0s7STtJLFk7STtHOzs7Ozs7Ozs7OztLO007OztJLFc7STs7Ozs7Ozs7Ozs7Ozs7WTs7O0ksTzs7O2M7Yzs7Ozs7bUI7O29CO29CO29CLFE7Ozs7Ozs7Ozs7b0IsVztvQjs7O21CO29CLFM7b0I7b0I7c0I7OzttQjttQjtvQjtvQjttQixLO29CLE07O21CO21CO2tCOzs7Ozs7aUM7YztlLFE7ZTs7O2U7aUI7O2tDOztjO2E7Rzs7SSxPOzs7YztlO2lCOzsrQiw0Qzs7ZTtjO2E7Rzs7SSw4Qjs7O3lCOzs7TztlOzs7a0I7Ozs7bUIsTztrQjtpQjs7Ozs7TztlOzs7a0I7Ozs7bUIsTzttQixPO2tCO2lCOzs7Ozs7SSxPOzs7Yzs7Ozs7Ozs7Ozs7O2U7aUI7O2tDOzs7OztlOzs7b0I7Ozs7OztjO3NCOzt1Qzs7Ozs7Ozs7Ozs7Ozs7O2E7Rzs7STs7STs7STtHOzs7Szs7UTs7Ozs7O1M7Vzs7NEI7O1M7UTs7UTs7UztXOzs7YztjO2E7O1M7Vzs7O2M7YzthOztTO1E7O1E7Ozs7UztROzs7SSxPOzs7Yzs7O2U7aUI7O2tDOztlO2M7YTtHOzs7SyxZOzs7TTs7SyxNO0k7STtLLE87SyxVO0ssTztJO0ksSSw2Qjs7Szs7O1E7USxPO087OztJOztLOztVO00sZ0I7TSxJLFcsdUM7Ozs7TyxrQjtPO08sVzs7Ozs7O1k7Ozs7O2E7YTs2Qjs7O1k7O2EsTzthLE87WTs7O3FCOzs7WTthOzs7O2E7YTtjO2UsTztlLGtCOzs7YTs7YztnQjs7aUM7Ozs7Ozs7Ozs7Ozs7VzswQzs7TztPOzs7SztRLG9DO0ssZ0I7SztLO0k7STtJOztzQixPLHFCOztJO0c7OztJLE87OztjOzthOzs7SSxPOzs7YyxZOzs7Ozs7Ozs7Ozs7ZTtnQjs7OztjO2M7YTtHO0c7STs7O1EsTTtPOzs7SSxXO087SyxNOzs7STs7O0s7TSxpQixROztPOzs7UTtPOzs7MEIsTyxzQzs7O00sTTs7dUMsTzs7O0k7Szs7OztJO0k7SztLLFc7Szs7Szs7Ozs7O0s7SyxNOztHOzs7OztJO0s7Szs7Ozs7TSxNOzs7O0c7STs7OztJLFk7OztZO007OztLO00sUTtNLFE7TTtNLFU7OztNOzhCO087TyxJOzs7OztPOzs7Ozs7O0ssdUM7SyxJLFU7Ozs7TSxhO00sRztPLE07TSxPOzs7SztNO087Ozs7Ozs7O0s7TSxPO00sVTtLO0s7Szs7SSxNOzs7STtHOztJLEksbUM7Ozs7O0ssTTs7Rzs7SSxXO0ksSSx3QixjOzs7Z0MsNkI7O0s7SztLOztHOztJLFk7O0s7SSxNO0c7O0ksVztJLEkscUM7Ozs7SztLO0ssTTs7Rzs7SSxXO0ksSSxpRDs7O2dDOzs7Rzs7SSxJLHNEOzs7K0I7OztLOztHOztJLEksc0Q7OztnQzs7O0c7Ozs7STtJO0ssWTs7Ozs7UyxJLFc7OztpQzs7O1MsSyw2QjtTLEk7OztxQzs7O1M7OztTOzs7OztTOzs7UyxNOztLOztHOztJO0c7O0ksWTs7SztJLE07Rzs7SSxXO0ksSSx5Qzs7OztLO0ssTTs7Rzs7SSxJLDBEOzs7O2dDOzs7Rzs7STtLLEksSTs7Ozs7OztXOztZO2E7O2E7Ozs7d0M7OztXOzs7O0ksWTs7Ozs7OztPLEc7USxXO1EsTzs7Ozs7STtHOztJO0s7YTs7TSxPO0s7Ozs7NEI7OztHOztJO0ssSSxPLDZCO0s7VSxnQyxJOzs7Ozs7OztLO007Ozs7Ozs0Qjs7O0c7Rzs7SSxHO0ssTTtJLFk7Ozs7O1EsOEM7UTtTLEc7VSxNO1M7VSxZO1U7WTs7O2U7OztTOzs7OztTO1U7VztXO1U7Ozs7O1csTTs7Ozs7O1E7O0ksMEI7SyxnQjtLLE87OztlOzs7O0k7RztHLEk7d0IsdUI7O0k7SztLO0s7STs7O2E7Tzs0QiwwQjs7Ozs7SztLLE07O0c7O0ksSSxxQjs7O3dCOzs7Rzs7SSxJLDRCLGM7Ozt3Qjs7O0c7O0k7SyxPO0ssVzs7SyxZOzs7OztTLEc7VSxNO1Msc0Q7UyxvQjtTO1U7Ozs7Ozs7OztVOzs7Ozs7VSxJLEksTzs7Ozs7O1UsTzs7O29CLDZCO29CO21COzs7Ozs7UyxhOztLOztNLEksZ0I7TSxPOzs7Z0I7Ozs7Ozs7O0k7Rzs7Ozs7TSxNO0s7Ozs7O007O1MsTzs7O21CO21CLE87a0I7O1E7TTtNOzs7Ozs7USxHLGdDOzs7Ozs7UTtRLE87Ozs7O0ssTTs7OztJLEksK0M7Ozs7TTs7O0c7O0ksaUM7O0ssVztLLFc7SyxHO007TTtPLE87O007O0s7TTtPLFU7TyxXOztPLHVCLE87b0I7Ozs7O007Ozs7O21CO007TyxPOztNOztJOztLOzs7SyxZOzs7Ozt3Qjs7UztVO1csSztXO2E7OztnQjs7O3NCOzBCOztlOzs7VTs7Ozs7OztvQjs7b0M7Ozs7O1MsZTs7O1M7OztVLFU7UztVLE87O1M7O0ssTzt3QztJOztLOztJLE87O2lDLGlDOzs2QixrQzs7O0ksSSw0QixjOzs7NEI7OztHOztJLEksNEIsYzs7OzRCOzs7Rzs7SSxJLDBCOzs7OztLOztHO0c7O007OztTO1MsTztROztJOzs7Szs7OzttQjs7UyxPOzs7b0I7b0IsTzttQjs7bUI7OztNLEk7ZTtJOztLO0s7TSxHLDJDO21CO00sWTs7Ozs7eUI7O1U7VztZLEs7WTtjOzs7aUIsZTs7Z0I7OztXOzs7OztZLE87Ozs7VSxXO1U7OztVO1k7OzBCLE8sb0M7O1c7Ozs7TSxPOztJO0k7Rzs7STs7SztPOzs7VTtVLE87Uzs7O0k7TTs7b0IsTywyQzs7SztJO007O29CLE8sMkM7O0s7STtLO08sd0Msc0I7SztPLHdDLHNCOztJLE87O2lDLHdDOzs2QixPLHNCO0c7O0k7SztLOzs7Ozs7Szs7RztHO0k7Ozs7Ozs7STtLO087O3dCOztLO087O3dCOztJLE87OztjO2U7aUI7OztvQixZOzs7d0I7c0I7c0I7c0I7OztvQjs7O2U7ZSxPO2UsTztlLE87ZSxXO2M7YTtHOztJLEk7STtHOztJO0k7c0M7O007OztPLE87TSxTOzs7VSx1Qjs7RztpQyx3Qzs7SSxPO2lDO0c7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJLE87Rzs7STtZOzs2Qjs7Rzs7SSxXO0c7OztLO00sTztNLGU7b0I7SyxXO0ssRztNLE07SyxPO0k7SSxJLGUsMkIsYzs7OztLO0s7O0c7O0k7O0s7Z0M7OztLO007TTtNOztNLFE7OztNO00sSTtLO0s7STtJOztLLEcsMEM7a0I7SyxZOzs7O1M7O1UsUTtVOzs7Uzs7Ozs7O2dCO1UsSztXO1ksSTtZLFU7O1k7O2EsVTthOzs7YTthLE87YSxPO2EsTTthLE87WTs7YTs7O1csTTs7VSxTOztTLE87O0ssTztJO0k7Rzs7STs7SyxJLFc7Ozs7Ozs7O0k7Rzs7SSxJLDZCOztHOztJO0s7TSxPO00sTztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7NEI7OztHOztJLFk7OztLO007TyxtQjtPO007Ozs7OztNOzs7STtHOzs7O0ssRyxtQztLO00sUTtNLFU7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQixHLGlDOzs7Ozs7Ozs7OztNOztLLEksbUM7SyxHLG1DO0ssZTtnQjtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7OzJDOzs7Ozs7Ozs7Ozs7Ozs7O3VCO21CO3VCLCtCOzs7O2tCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7O2tCO21CO29CLFM7b0IsUztvQixPOzs7b0I7OztxQjtzQixPO3NCLGM7cUI7OztzQixXO3NCOzs7Ozs7Ozs7bUI7b0I7cUI7c0IsTztzQixPO3NCLE87Ozs7Ozs7Ozt3QjsyRCxTOztvQjtxQixPOzt1Qjs7OzBCOzBCO3lCOzs7OztvQjtxQixNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEI7Ozs7Ozs7Ozs7OzhCLEs7OEI7Ozs7Ozs7Ozs7Ozs7Ozs7OEI7OzhCOzs7Ozs7Ozs7Ozs7Ozs7b0M7Ozs7O2tDLE07Ozs7Ozs7OztvQzs7Ozs7Ozs7b0M7Ozs7a0MsTTs7aUMsVztpQyxHO2tDLE07Ozs7Ozs7K0IsTTs7Ozs7c0I7Ozs7cUIsTTs7OzttQjs7OzswQzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzttQixPO21CO3NDOzs7O21COztzQixrQixRO3NFO3NCOzttQixPO21COzRCO2tCOzs7bUI7b0IsTztvQjs2QjtrQixTLE07a0IsTzs7OzRCOzs7NkIsUTs2QixVOzs7Ozs7Ozs7Ozs7Ozs7OzttQzs7OztrQyxPOzswRDs7Ozs7Ozs7Ozs7Ozs7O2tDLE87OzBEOzs7Ozs7Ozs7Ozs7Ozs7OzZCLE07OzRCOzJCOzs7Ozs7OztpQjtrQjtrQjs7Ozs7bUIsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21COzs7Ozs7Ozs7O3lCOzttQjs7Ozs7b0IsTTs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Uzs7Ozs7USxxQzs7Tzs7OztROzs7Ozs7Ozs7TTtPO1EsTztRO1E7TyxTLE07Tzs7Ozs4Qjs7OztLLE07Ozs7SSxXO087SyxNO0ksTzs7a0M7OztHOztJO0s7Szs7SyxNO0k7Szs7O0s7OztLOzs7O0s7Tzs7O1U7dUI7UztJO0ksVztJO0s7TTttQjs7Ozs7O0ssVztLO007TztvQjs7OzthLE07SSxPOzs7Yzs7Ozs7ZSxPO2UsTzs7O2U7Ozs7Ozs7ZSxNOztjO2E7O0c7OztLO0s7Ozs7UTtRLFc7VztRLE07OztxQjtNLE07O0k7STtHOztJLFc7Rzs7SSxJLG9COzs7K0I7OztHOztJO0k7SyxXO0ssVztLLFk7O0s7SyxPO0k7STtJOztHOztJO0k7SztJLEkscUI7STs7Szs7c0I7O0ssSTs7Ozs7OztJLFc7STtLO0s7SyxPO0ssa0I7SSxJLFc7Ozs7TSxNOzs7STtLLGM7Szs7O0ksZ0I7SSxPO0c7O0ksVztJLFM7STtLO0s7SSxPO0c7RztJOzs7USxNO087O0k7OztRLE07TztJOzs7OztJO0s7OzBCOzs7UTs7O1E7TTtHOztJOztLLE07SyxROztLO0s7a0I7Ozs7TyxHO1EsVztROzs7TSxzQjtNLEksVTs7Ozs7Ozs7Ozs7Ozs7O1E7UyxTOzs7Ozs7VTs7Ozs7Ozs7OzRCLE07Ozs7UTs7O00sTTs7STtJLEksOEI7Ozs0QixNOzs7OztJO0s7SztLLE8sMkM7STs7TSwyQzs7OztLO087VTs7SyxNOztJO0c7RztJOzs7Ozs7Ozs7OztJLEs7SyxNO0k7STtJLEk7OztLLG9EOzs7STtLLGtCO0ssYTs7Ozs7O0s7O0k7STtHOztJO0ksSTs7O0s7TTtNO007TTs7Ozs7Ozs7SSxPO0c7O0ksMkI7STtJOztLLEksUSwwQixVOzs7Ozs7Ozs7Vzs7O1k7OztXO1c7Ozs7Ozs7Ozs7Z0I7Z0I7Ozs7O2lCO21COzs7OztrQixXO2tCO2tCLG9CO2tCOzs7O2dCO2dCLEs7Z0I7Ozs7Ozs7Ozs7OztjO2MsVztjO2Msb0I7Yzs7Ozs7Ozs7UTtROzs7O007O0s7Szs7Ozs7O0s7Szs7Rzs7SSwyQjtJO0ssSSxRLDBCLFU7Ozs7Ozs7Ozs7Ozs7TztTOzs7Ozs7Ozs7USxXO1E7USxvQjtROzs7TyxJLHFCOztROztROztNOztLLE07Ozs7Z0M7OztHOztJO0k7STtJO0s7SztLLE87SyxPO0ssSztLLE87SyxPO0ssUTtJO0k7STtJO0ksK0I7Ozs7Ozs7TSxZOzs7Ozs7TSxjOzs7Ozs7Ozs7OztJO0ssSSxzQzs7Ozs7TSwwQjs7STtHOztJO0ssTTtLO0ssSztLLFc7Ozs7SztNOztTOzs7OztZOzs7Ozs7Ozs7WTtZLE87Ozs7Ozs7TTs7STs7TTs7TTtNOztTLGdDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7O2tCO2tCO3NCLCtCOzs7OztnQjtnQjtnQjtpQixVO2lCLFU7OytCOzs7aUI7O2lCOzs7Ozs7Ozs7OztpQzs7Ozs7Ozs7Ozs7YyxHOzs7Ozs7O2dCOztrQjs7a0I7a0I7OztpQjtrQjtrQjs7b0I7O3FDOzttQjtvQjtxQjtxQixPO3FCLE87cUIsTzs7Ozs7Ozs7O3VCOzBELFM7O21CLFc7bUI7OztzQjtzQixNOzt1QixXO3VCLEksOEI7Ozs7O3dCO3dCO3dCOztzQjs7OztxQjs7Ozs7O2lCOzs7O2dCOzs7Ozs7Yzs7ZTtlO2M7ZTtnQjtnQjs7OztlLFc7eUI7Ozs7ZTtlOzs7O2E7OztjO2M7Yzs7Ozs7Ozs7Ozs7Ozs7Z0I7Z0IsYzs7Ozs7OzttQixxQixVOzs7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0I7aUIsVztpQixJOzs7OztrQjtrQjtrQjtrQjttQjttQjs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7OztpQjs7Ozs7Ozs7d0M7Ozs7Ozs7Ozs7Ozs7O2dCO2lCO2tCLE87a0IsTztpQjs7d0M7Ozs7Ozs7Ozs7OztpRDtpQixXO2lCOzs7b0I7b0I7bUI7Ozs7Ozs7Ozs7O1U7Ozs7OztXO1c7Vzs7Ozs7Ozs7UTtRO1E7UTtRO1E7Ozs7O1EsSztTO3NCO1MsWTs7O1E7Uzs7Uzs7Uzs7Ozs7aUQ7O3FEO007Ozs7TSxZOzs7O087TztPO08sSSxtQixJOzs7Ozs7TztPO2tCOzs7O0s7Ozs7OztLO0s7Ozs7SSxXO08sMEM7SSxPOztrQzs7O0c7O0k7Szs7O0s7OztLOzs7O0ssSztLLEs7OztLLFE7STtLLFk7O00sTztLO0k7STtLLFE7SyxVOzs7Ozs7Ozs7OztVO1csTztxQjs7Ozs7USxTOzs7Ozs7Ozs7O2dCOzs7Ozs7O0k7SztxQztLLE07SyxNO0s7O0k7SyxVO0ssaUI7Szs7O1E7Ozs7OztRO1E7Ozs7O1UsVztVO1Usb0I7O1M7Uzs7Ozs7O1M7eUI7O087O0s7Ozs7SztLO0ssTTs7OztJLEksUSwwQixVOzs7dUIsTzs7OztVLE87O1U7Ozs7SSxNO0c7O0k7SyxROzs7OztLLFU7Ozs7O0ksNkI7STtLOzs7Ozs7O0s7TSxPO00sSztLOzs7USxrQixPO1EsTztPOztLOzs7UTtRO1MsVztTLE07OEI7Ozs7Z0M7OztPOzs7STtLLFM7SyxTO0k7O007TyxPO2M7Ozs7OztLO00sTztNLE87TSxPO2E7STtLLFE7SztJO0ssTzs7O2U7OztnQixROzs7NkI7c0M7O2M7O0k7STtLLE87OztlOzRCO2M7O0k7STtLLEksa0I7O007TztPOzs7WTs7O2M7Ozs0QjtxQzs7YTs7Ozs7Ozs7SSxTOzs7OztNO007O29DLG1COzs7Ozs7O007TTs7b0MsbUI7Ozs7Ozs7O0s7O21DO00sUTs7Ozs7TyxlO1E7Ozs7UTs7O1k7OEM7UTs7Ozs7OztxQjtNLFM7O0s7TSxLO007OztNO08sTztPLE87TTs7SyxLO007TyxXO08sSztPLE87TTtNLG9CO00sTzs7SyxHLGlDO0ssTztlOztJO0k7SyxNO0ssTTtLOztJO0s7SztLOzs7UTtRO1M7O1M7Ozs7OztTOztPOztLLEc7TSxTO00sRztPO1EsTztRLE87Tzs7O0s7Ozs7SztLO0ssTTs7OztJO0s7Ozs7UyxZLE87UyxvQjtTOztNO007Ozs7OzttQjtLO00sUTtNLFU7O3NDOztPOztnQyxPLDhCO007Ozs7Ozs7Ozs7OzJDOzs7O1U7OztvQixRO29CO29CLFc7b0I7b0Isb0I7b0I7cUI7O3dCOzt5Qzs7cUI7Ozs7cUI7cUIsTTs7bUI7Ozs7OzsyQjs7O1U7O21DLE8sOEI7Ozs7OztTOztrQyxPLDhCOzs7OztTLEcsK0I7UyxJO1M7VSxXO2E7VyxRO1c7VztXLE87O3lDOzs7OztTOzs7Ozs7Ozs7O3lCO2tDOzs7OztVLGM7OztXLFc7Ozs7Yzs7OztpQixPOzt5Qzs7Z0I7Ozs7Ozs7O1M7UztVOzthLE87Ozt1QixXO3VCLFc7c0I7WTtVLFE7VSxRO1U7VTtZOzs2Qjs7OztVO1k7OzZCOzs7Ozs7VTs7O1ksc0IsTztZOzs2Qjs7Ozs7OztVOzs7OzthO2EsTzs7O3VCLHlCO3VCLDJCO3NCO1k7UztTO1M7VSxPO1UsTztTO1MsTzs7OztVOzttQyxPLDhCOzs7Ozs7VTs7O29CLFE7b0I7b0IsVztvQjtvQixvQjtvQjtxQjs7d0I7O3VDLDJCOztxQjs7OztxQjtxQixNOzttQjs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OztNOztLOzs7O0ksVztJLEksZ0M7Ozs7O0s7SyxNOzs7Rzs7STtJO0ssZ0I7SztLLDBDO0k7STtHOztJLEcsK0I7SSxJLFEsMEIsVTs7SztNO0ssSSxxQjtLO007TSx5QjtNLG9CO007TTtNOzs7Ozs7TTtNLE07Ozs7Ozs7STtHOzt1QyxrQzs7STtJO0c7aUMscUM7O0k7Rzs7STtLO0s7STtJO0c7Rzs7Ozs7SztNO007TSxJO0s7STtJLEk7Ozs7NkM7SyxNOzs7Ozs7O0ksWTs7OztRO1Msd0I7Ozs7UTtROzs7O2E7UyxrQzs7UyxNOzs7UTs7SSxNO0c7Rzs7OztJO0k7Ozs7UztVO1U7VSxLO1M7UTtLLEk7Ozs7TTs7TyxROztNLE07Ozs7Ozs7O0ssWTs7OztTO1UsVTtVOzs7UztTOzs7UyxjLDRCOzs7O0ssTTs7Rzs7O0s7TTtNLEs7TTtLO0k7SSxJOzs7O0s7O00sUTtNLFE7O0ssTTs7Ozs7Ozs7SSxZOzs7O1E7UyxVO1MsVTtTOzs7UTtROzswQjs7SSxNO0c7RztJOzs7O0ksSSw2QixROztLO00sTTtjLE07SyxJLFEsNkI7Szs7OztPO1EsVTtRO1E7Ozs7UTtTLFM7Uzs7O087ZTtPO087OztPOztROztPO1EsVTtROzs7O1EsUTtPO2UsTTs7Rzs7SSxJLG9CO0k7Rzs7STtLOzs7STs7O0c7RztJOzs7Ozs7UyxZOzs7O00sSTs7OztRLE07Ozs7TSxJOzs7OztPLE07Ozs7Ozs7O0s7O007Yzs7VTs7O1UsTTs7Ozs7Ozs7OztLO0ssSTs7Ozs7TSxNOzs7O0k7ZTs7OztHOzs7O0k7OztLLEksVTs7Ozs7OztLOzs7O007Szs7OztPLE07OztNLEk7Ozs7O08sTTs7Ozs7O0ksYTs7O0c7RztJOzs7Ozs7Ozs7Ozs7SSwyQjtJLEk7Ozs7Ozs7Ozs7UTs7O1MsUTtTO1EsTTs7Ozs7SyxNOzs7STs7O087Tzs7USxTO1MsTTs7Ozs7TyxJOzs7OztRLHNCO1EsTTs7O087TTs7SSxPOzs7YztjO2U7Ozs7OztlLHNCO2UsTTs7O2M7YTs7Rzs7STtLO0s7OztLO087OztVOzs7Ozs7O1U7VztVLEksVTs7OztrQjs7YztlO2lCO2U7Ozs7O2M7ZSxVO2U7Ozs7Ozs7OztXOztVOzs7O1csUTs7VztZLFU7WTs7Ozs7VTtTOzs7Ozs7OztJO0c7O0k7Szs7SSxPOzs7YztxQjs7d0I7YTs7Rzs7STtLO0s7O0k7SyxJLDZCLFE7bUM7OztRO1MsUTtTLE87UTtROzs7USxxQjs7Ozs7USxNOzs7Rzs7STtJOzs0QixtQiw0Qjs7STs7Tzs7O1U7VTtTOztJOzs7TztPO007Ozs7Rzs7O0ssUztxQjtRO00sTTtLLFc7SyxjO0k7SSxJLFc7Ozs7SztLOztJO0k7Rzs7SSxZO0k7OztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7VTtXLG1CO1csb0I7VztzQjs7Ozs7Ozs7VyxLOzs7Ozs7TSxJLDZCO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7YTtjLG1CO2Msb0I7eUI7Ozs7Ozs7Ozs7Ozs7O21CO2U7O3NCLCtCOzs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7ZSxVOzs7O2UsVTs7Ozs7YyxHOzs7ZTtnQixPO2dCO2dCLDBCO2dCOzs7OztnQjtpQjs7Ozs7OEI7OzswQjs7O2lCO2U7Z0IsTTtnQixVOzs7Ozs7OztrQjs7OztpQixHOztrQjttQjs7c0I7bUIsTTtrQixtQjtrQixvQjtrQjs7Ozs7Ozs7a0I7OztpQjs7O2dCOztlO2dCO2lCO21COzs7c0I7b0M7c0I7dUIsUTt1QixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MkI7NEI7NEI7Ozs7Ozs7NEI7Ozs7Ozt1RTs7eUI7O3dCOzs7Ozs7OzJCLE87Ozs7OzsyQjs0Qjs2Qjs2Qjs7Z0M7OzttQztrQzs7NkI7Ozs7Ozs7NkI7Ozs7eUI7Ozt3Qjt5QixlOzs7bUM7MEIsVzswQjswQixXOzZCOzs7OEI7OztpQzs7Ozs7Ozs7OEI7OztpQztnQzs7Ozs7Ozs7Ozt5Qjs7Ozs7Ozt5Qjs7O29DLE87O3NCO3FCOzs7Ozs7Z0I7Z0IsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE87Z0I7Ozs7cUI7OztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Szs7OztJLFc7TywwQztJLE87OztjOzs7O0c7O0k7Szs7O0s7OztLOzs7O0ksK0I7STs7Ozs7TSx3QjtJLE87OztjOzs7Ozs7ZSxRO2UsVTs7Ozs7a0M7Ozs7O3FCLE07Ozs7Ozs7ZSxNOztjO2U7ZTs7Ozs7OztlOytCOzthOztHOztJO0k7Rzs7STs7SSxJLG1DOztJO0ksTzs7aUMsdUM7OztjO2U7OztpQztlOzs7Ozs7OztlO2UsTTs7O2E7Rzs7SSxJOzs7NkI7OztJO0c7O0k7STtLLFc7SyxXO0ssWTs7OztTO1UsVzs7OzBCOzs7O1M7O1UsVTs7OztVLE87VSxrQjs7VTtXLE87VyxPO1csUztXLFE7VyxPO1csTztVOztTO3FDO1MsZTtvQjtTLFc7Ozs7SyxPOzs2Qjs7O0c7O0k7STtJOztHOztJO0ksTzs7O2M7YyxPOzs7OzBCO3dCO2E7O0c7O0ksSSxPLDBCO0k7SSxJOzs7OztLO0ssTTs7O0ssTztJOzs7Ozs7SSxNOzs7O2E7O0c7O0ksSTs7O3FDOzs7STtHOztJOztJOztJO0c7O0ksTzs7O2U7OztnQixTO2dCLFM7b0M7d0M7ZTtjOzs7Ozs7YztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7Ozs7Ozs7O1csSzs7Ozs7O007TztPO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUI7ZTs7c0IsK0I7Ozs7Yzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2MsSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlO2dCO2lCLDhCO2lCLFU7Ozs7Ozs7YztlLE87ZSwyQjs7OztlLE87aUI7ZSxXO2U7O3FCOztnQjsyQjtjO3VCO2M7dUI7cUI7ZSxXO2U7Ozs7O2lCOzs7OztpQjs7OztrQztvQjtxQixRO3FCLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QjswQjswQjs7Ozs7OzswQjs7Ozs7O3FFOzt1Qjs7Ozs7Ozs7Ozs7OzsyQjs0Qjs0Qjs2QixPOzsrQjtrQzs7O29DOzs7O21DOzs7cUM7OztrQzs7O3FDO29DOzs0Qjs7Ozs7Ozs0Qjs7Ozs7Ozs7O3lDOzs7O3VCOzs7O3FCOztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7OztjO2U7Z0IsTztnQjs7OztxQjs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7Ozs7SSxXO08sMEM7SSxPOzs7Yzs7OztHOzs7O0s7TTs7O007OztNLE87TTtnQjtLLGE7SztNO00sVTs7SztNOzs7O0s7b0M7O00sTzs7O2dCOzs7Ozs7aUIsTztpQixPOzs7O2lCOztvQjs7OztpQjs7O2dCO2lCO2lCOzs7Ozs7O2lCO2lDOztlOzs7Szs7OztJO0ksVztJLE87O2lDLE8sNEI7OztjO2E7Rzs7STtHOztJO0k7Szs7O2tCO0s7Ozs7OztLLE07OztHOztJLEk7Ozs4Qjs7O0k7Rzs7STtJO0s7TSxXO00sYzs7Ozs7TSxJOzs7a0MsTTs7Ozs7O0s7O0c7RztJOzs7Ozs7Ozs7O0k7SztPOzs7VTtVLEksVTs7O2tDOzs7O1U7Z0M7O3dCOzJCO1U7Uzs7O0s7Tzs7O1U7VSxHLDBDOztVO1M7OztLO087OztVO1UsSSxVOzs7a0M7Ozs7NkI7MkI7VTtTOzs7SSxPOzs7YztjLGlCO2U7YzthOzs7Rzs7STs7Ozs7Ozs7VTs7Ozs7Ozs7O2E7OztnQjtnQixJLFU7Ozs7a0IsTTs7Ozs7Z0IsSTs7Ozs7O2lCLE07Ozs7Ozs7O2dCO2U7O2E7OztnQjtnQixJLFU7Ozs7a0IsTTs7Ozs7Z0IsSTs7Ozs7O2lCLE07Ozs7Ozs7O2dCO2U7Ozs7Ozs7Ozs7Ozs7YSxHO2M7YyxJOzs7Ozs7ZSxNOzs7Ozs7Ozs7OztjOzs7OztPLE07OztNOztLOzs7Ozs7OztNLE07Ozs7Ozs7STs7SyxRO0ssUTtLO0ksVzs7O0k7O0ssTzs7STs7SyxhO0ssVTtLLFU7SztLO0s7SztJO0k7OztLLEk7Ozs7OztNOzs7Ozs7O0k7Ozs7STtLLFE7SyxRO0s7SSxXO0k7SztNO00sYTtNO007TTtNO0s7SztLO00sSztNLEs7O00sTTtLOzs7USxJLG9EOzs7Ozs7UyxNOzs7Ozs7Ozs7OztPOzs7SztNOzs7UztTLEksVTs7OztXLE07Ozs7UyxJOzs7Ozs7VSxNOzs7Ozs7Ozs7OztTO1E7O007OztTO1MsSSxVOzs7O1csTTs7OztTLEk7Ozs7OztVLE07Ozs7Ozs7Ozs7O1M7UTs7Ozs7Ozs7SztNO1E7NkMsMEI7TSxPO007O3FCO0s7Ozs7OztLOzs7RztJOzs7Ozs7Ozs0Qix5Qzs7STs7aUM7O0s7O0k7Rzs7SSxPOzs7YztjO2E7OztHOztJO0k7ZTs7aUU7Ozs7Rzs7SSxPO0c7O0ksSSxVLDZCOztLLE07SSxtQixVOzs7OztNLEcsNkI7OztJLE07Rzs7STtJLE87Rzs7SSxZOztjLHNCOztLOzs7O2tCO087UTtTLE87UyxNOztRO1E7Ozs7K0I7Ozs7Tzs7OztRLEs7TywyQjtPO1E7UTs7O1E7OztRO087O08sc0IsTztPLDZCO087UTtRO1U7OzthOzs7UTtPOzs7O29CO3NEOzs7OztPOzs7OztROzs7Ozs7O1E7UyxjO1M7OztVO1c7OztVO1c7Ozs7Ozs7WSxNOzs7VSxjOzs7OztZLEc7YTtlOztnQzs7YyxNO2E7YTtjO2Msa0I7YztjOzs7c0I7Ozs7Ozs7YSxLO2MsTTs7O2M7OzthO2EsSTs7OztlLE07OzthO2E7Ozs7VSxNOztTLE07Ozs7O1M7VTs7O1M7OztPLHFCLE87Tyw2QjtPO087USxJLE87O1M7UztVO1c7Vzs7Ozs7OztRO1M7Vzs7O2M7ZSxROzs7Yzs7Ozs7OzthOzs7UztTOzs7OztnQjtrRDs7O1E7Ozs7K0I7Ozs7TyxxQixPO087UTtTOztTO1M7OztROztPOztPOzs7O1E7OztROzs7UTtPOzs7O08sb0IsTztPLGlDO1E7Uzs7UztTLDhCO1M7Vzs7O2MsOEIsUTs7Ozs7cUM7O2U7O2dCOzs7Ozs7OzJCOzs7MEI7O2U7O2MsTTthOztTOzhCO1M7UztXOzZDO1MsUTtROztPOztPOzs7UTs7O087OztPLE07ZTs7OztJOztJO0c7RztJLFc7Ozs7OztJO0ssVTtLO0ksTTs7O2E7O0c7Ozs7SyxHLG1DO0ssRyxvRDtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCO2tCOzs7dUIsK0I7Ozs7aUI7a0I7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztrQixPO29CO2tCO2lCLE87OzsyQjs7MEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQixHLGlDOzs7Ozs7Ozs7Ozs7Ozs7aUIsc0I7aUIsRztrQjtrQixHO21COzs7O2lCO2tCOzs7a0I7OztrQjs7OztpQixTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7dUI7c0M7Ozs7aUI7OztrQjs7bUI7Ozs7Ozt1QjtzQzs7O2lCLE87OzsyQjsyQjs7MEI7Ozs7Ozs7Ozs7Ozs7OztpQjtrQjttQixVOzs7O21CLFU7Ozs7bUI7Ozs7bUI7bUI7bUIsVTttQixXOzs7Ozs7Ozs7Ozt5QixHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO3lCOzs7Ozs7OzsyQjs7OzhCOzs7K0IsUTsrQixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lDOzs7OzsrQjs7OEIsTTs2Qjs7Ozs7Ozs7Ozs7O3dCOzs7MkI7Ozs0QixROzRCLFU7eUQ7Ozs7Ozs7Ozs7OytCOzs7Ozs7Ozs7Ozs7Ozs4Qjs7Ozs7Ozs7NkI7OzJCLE07MEI7Ozs7OzttQixNOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCO2tCOzs7Ozs7Ozs7O3dCO3VCO2tCOzs7OzttQjs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7a0I7bUI7O29DO21COzs7Ozt1Qjs7O21CO3FCOzs7d0Isa0M7d0I7O2dDOzs7dUI7Ozs7bUI7b0IsYTs7O3FCO3NCOzs7eUI7eUI7d0I7Ozs7Ozs7O3FCO3VCO3NCO2lDOzs7O29CO29CLE07OzhCOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7OztROzs7O1E7Uzs7Ozs7Ozs7TztROzs7Ozs7Ozs7USxHO1M7VTtXLE87VyxPO1c7YTs7O2dCOzs7aUIsUTs7O2dCOzs7Ozs7aUI7O2dCOztpQixPO2lCLE87aUIsTztnQjs7O3lCOzs7O2U7Ozs7VTs7Ozs7Vzs7OztPO1EsSSxROzs7Ozs7Ozs7OztrQjs7Ozs7Ozs7Ozs7O087USxXO1EsSSw4QixJOzs7OztTOzs7UTtTOzs7Ozs7O0s7Ozs7STs7STtJO0k7SyxXO0ssTzs7O2U7Ozs7O2UsSSw0Qzs7OztpQjt1Qzs7O2M7b0I7Rzs7SSxJLFEsMkIsTzs7OztROztROzs7OztTO1EsTzs7UTs7O1EsTTs7SSxPO0c7O0ksSSxRLDJCLE87Ozs7UTs7O1M7USxPOztROztTLFE7Ozs7OztTLE87UyxPO1MsTztTLFc7USxPOzs7UTs7SSxPO0c7O0ksWTs7STtHOzs7OztLLEcseUM7SztNLFk7TSxROzs7O1M7WTtVLHNCOzs7UztVO1k7O21DOzs7OztVO1M7VTs7Ozs7O1U7Ozs7cUM7Ozs7O2tCOzs7Ozs7Ozs7Uzs7Ozs7Uzs7VTtZOzttQzs7Ozs7UyxHLDRCO1M7VSxPO1U7Ozs7O0ssTzs7bUM7Ozs7OztJO0k7Rzs7STtJLE87Rzs7STtHO0c7OztLOztJLE87Rzs7STs7SztPOzs7VTs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7O1M7OztVOzs7Ozs7OztROzs7Vzs7Ozs7SSxPO0c7O0ksZTtlO2lCO0ksUzs7O0ssSyw2QjtNLGM7Ozs7UTs7OztTO1c7c0M7UTs7OztNLE07O0ssWTs7Ozs7UyxrQzs7Ozs7VyxrQjtZOztZLGM7O2E7Ozs7O3dCOzs7OztXOztTLFk7O1U7Vzs7O1csTztXLE87VTs7OztTOztVLFU7Ozs7OztVO1k7OztlOzs7Z0IsUTs7Ozs7Ozs7bUI7Ozs7b0I7c0I7Ozt5QixPOzs7b0M7bUM7Ozs7d0I7OztvQixPO3NCO29CO3FCLE87NEI7Ozs7Ozs7Ozs7ZTtjOztVO1k7OztlOzRCO2M7O1U7WTs7O2U7ZSxPO2M7O1U7Z0I7Uzs7OztJLE87OzRCOztHOztJO0c7RztJLGM7SSxrQjs7STtJLE87Rzs7SSx1QyxRO2tFO0ksSSxXLDJDOzs7O0ssSSxPLDJCLE87SztLO00sVzs7Ozs7OztXO1ksYzs7O2EsTTs7O1k7O2E7OztnQjs7O21COzs7Ozs7Ozs7O1k7YTtjLE87YyxJOzs7OztjOzs7Ozs7YyxNOzs7Ozs7O1csa0M7OztZLEc7Ozs7Ozs7OztrQjs7O3FCOzs7Ozs7Ozs7O1csbUIsTztXO1ksVTtZO1ksSTs7Ozs7WTtZO2EsVzthOztrQjs7O2E7ZTs7Z0M7Ozs7O2EsVTs7Ozs7YyxHOzhCOzs7Ozs7Ozs7Ozs7VyxHO1k7YTthLFU7OzthLE07Ozs7Ozs7Z0I7Ozt5Qjs7Ozs7Ozs7VTs7OzJCOzs7Ozs7TTtNLE07O0s7Szs7OztJO0s7SztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7O0k7Szs7TTtROzt5Qjs7OztNOztPOzswQjs7Ozs7Ozs7Ozs7OztNO087O1E7Ozs7Ozs7UTtRO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztPLEc7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7SyxNOzs7O0k7SyxZOzs7O087O1EsSztRO1EsVTs7Ozs7TyxNOztNOztPO1M7OzBCOzs7OztLOztNO1E7O3lCOzs7TTtROzt5Qjs7SztLOzs7Ozs7Ozs7OztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7USxLO1M7Ozs7VTtTOztpQjs7O29COzs7Ozs7OztROztTO1c7OztjO2M7YTs7UztXOzs7YztjO2E7O1M7UTs7O1E7Ozs7UztROzs7O0ksRztLLE07Ozs7Ozs7Ozs7O0k7O0s7O0s7O1E7O3lCOzs7Ozs7Ozs7STtJO0c7O0ksRztLLE07STs7Ozs7Szs7Szs7Szs7UTs7eUI7Ozs7Ozs7OztJO0k7Rzs7SSxTO0ksRywwQztJLEksOEIsUTs7SyxvQixPO0s7OztRLG1CLFE7Ozs7Ozs7VyxPOzttQzs7Ozs7UTtPOztLLE87OzZCOzs7SSxPOzs0Qjs7Rzs7STtJLE87OzRCOztHOztJO0s7SztLLFE7SyxVOzs7OztLLE87O0k7Rzs7O0ksWTs7Ozs7UTtTLEksWSw2QjtTOzs7O2dDOzs7OztRLEc7UyxXO1M7O1c7OztjLGtCLFE7Ozs7Ozs7ZTs7YzthOztVOztROztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLGM7cUIsWTtHLEksK0I7O0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7SSxXO0ksTztHOztJLHVCO0c7RztJOzs7UTtRLHNCOztRO1Esc0I7O1E7USxzQjs7UTtRLHNCOztRO1Esc0I7O0ksdUIsTSwwQztHOztJO0k7Ozs7Ozs7cUM7O3FDOztxQzs7cUM7O3FDOzs7Ozs7OztLO0s7Ozs7NEI7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtnQjtJOztLLG1DOztLOztHOztJLHFDLE87Ozs7Ozs7Ozs7Rzs7SSxXO0ksTztHO3lCLCtDOztJO0k7STtLLE87SztPO1MsMkM7SSxPLFc7Rzs7SSwwQiw0QztJO0s7SyxROzs7STtLO0k7SyxPO0k7STtLLE87STtJO0s7Tyx3Qyx1QjtLLG9CO0ssVTtJOzs7Tzs7UTtRO1E7TztPO007O0ksTzs7O2MsWTs7O2UsTzs7Ozs7Ozs7OztjO2U7aUI7bUQ7ZSxPO2MsTzs7Ozs7Ozs7Ozs7O0c7O0ksVztHO0c7c0IseUI7RztJO0k7OztJO0ssa0IsTztLLE87STtJO2U7SSxPO0c7O0k7Ozs7TTs7TyxPO2M7OztLO00sVztNLE87O0s7TTs7Uzs7WSxPOztZLE87O1ksTzs7WSxPOztZLE87b0I7O1E7TTtNLE87TSxROzs7TSxHOzs7TztRO3lDOztVOzZDOzs7Ozs7d0M7SyxjOztpQjs7TTtPO2tCO08sVztjO0s7TSxZO007TTs7ZTs7OztNO2E7OztRLEk7Ozs7Ozs7O1M7Ozs7O0ssTzs7SSxXO0ksTztHOztJLEksMEIsTztJLE87Rzs7STtJLE87RztHO0ksZTs7Ozs7Ozs7STtJOzRCO0ssVSxnQztNO0s7OztHOztJOztPOztRLE87UTtxQjtPOztRO1U7Ozs7O1EsTztRLHFCO08sSSxZOzs7K0I7Ozs7Tzs7O1MsSSxVOzs7Ozs7Ozs7VSx1QixPO1U7Ozs7OztROzs7NkM7O08sc0M7Tzs7O087O0c7bUQ7Rzs7OztLO0k7STtJOzs2Qjs7Ozs7Ozs7VTs7O1csTztVO2M7Ozs7Ozs7cUI7Ozs7OztPLFMsVzs7Tzs7Tzs7O1E7UTtPOzs7TyxZOztPOzs7O0k7Ozs7Rzs7STtJLE87Rzs7SSxPO0c7O0k7O0s7Tzs7d0I7O0ssTztJLE87Rzs7Ozs7Ozs7Ozs7O0ksc0IsaUIsa0I7O0c7O0ksWSxPOztJLE87Ozs7Ozs7YyxPOzs7d0IsTzt1Qjs7YTs7RztJOzs7O0k7STtxQzs7O007Ozs7O0c7O0ksWSxPOztJLE87OztJLDhCO3lDOztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7SyxJLEs7Ozs7TSxHO007Ozs7O0ssTzs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksc0I7Rzs7O0s7SyxPOztJO0ksc0I7Rzs7STtLLE87Ozs7TyxPOztPOzs7OztRLE87UTtPLE87Ozs7Ozs7Ozs7OztPLE87O087Ozs7UTtPLE87Ozs7Ozs7O3FDOzs7O08sTzs7Ozs7OztpQjs0QixPOztpQixPOztnQjs7O2M7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7USxVOzs7Ozs7OztXO1csTztVO08sTzs7Ozs7cUM7Ozs7Ozs7Ozs7OztpQixhLE87O2lCLE87O2dCOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7SSxZLE87Ozs7ZTtlOzs7SyxPOzs7SSxPOzs7SSxPOzs7YyxZLE87O2MsTzthOztjLE87YTs7YyxPOzs7Ozs7Ozs7d0IsUSxPOzt3QixPOzt1QjthOztHOztJOztJOzs7O0c7OztJLGdEO0k7Rzs7SSxjOytCOzs7SyxXOztJLGdCLE87SSxPO0c7RztJO0k7STtJO0k7Ozs7Ozs7SSxRLE07O0ksTztHOzs7STtLO00sUTs7O00sVTs7OztPOzs7USxPOzs7UTtVO2E7Ozs7UTtTLFc7UyxHOzs7Ozt3QjtZOzthOzs7YyxXOzs7Ozs7Ozs7VTtXO1k7Yzs7K0I7O1k7Ozs7OztzQzs7WTs7YSxPO3dCOzs7Ozs7Ozs7Ozs7O0s7Ozs7NEIsVzs7Ozs7STtJOzs7UTs7UyxTO1MsSTs7O1MseUI7OztROzs7O1E7OztTOzs7UTs7Ozs7O0ssSTtLOztHOztJO0ssWTtLLE87STtjOztHOztJO0k7Ozs7O3dCOzs7Szs7UTs7O1c7O1k7Ozs7O1c7WTthLEk7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O1U7Ozs7O0k7Rzs7STtJLE87O2lDLGdDOzs7Rzs7STtjLG1DOztHOztJO0k7Ozs2QixXOzs7O1Esd0M7UTs7Ozs7O0s7O0c7O0ksK0I7dUI7STtLOzs7O0ssUTtLOzsyQzs7YyxNOztNOzs7Uzs7VSxvQjtVLEcsa0Q7O1M7O1UsSTtVLE87VSxPOzs7VTs7OztZOzs7OzJCLDRDO2E7YTtlOzs7a0I7a0IsTztpQjs7WTs7O2E7YztjO2dCOzs4QixPLCtCOzthO2M7ZSxPO3NCOzs7Ozs7Ozs7Ozs7Uzs7UTs7O0k7Ozs7Ozs7Ozs7Ozs7O007TyxXOztRLDJDOzs7OztLLEksSTs7Ozs7O0s7O0c7O0ksTzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksVztJO2lDOzs7STtHOztJLGlCOztJLFc7SSxPOzs7YyxrQixROztlOzs7Z0IsTztlOztpQzs7Ozs7O2M7YTs7Rzs7SSxZOzs7O1E7Ozs7UztRLE87O1Esa0M7O1Msb0IsTztTLE87O3FCO1EsTzs7O2tCOzs7Z0M7Z0M7aUI7Ozs7aUIsNEI7USxPOztRLG9CLFU7OztTLHNCLE87O1EsTzs7SSxPO0c7Rzs7SSxlO0k7O0ssTztnQjswQjt3Qjs7RztHO0k7STtJO0k7STtJO0k7STs7O0k7SyxNO0s7SyxXO2U7Ozs7Ozs7Ozs7Ozs7OzthLE87Ozs7OztROztJO0c7O0k7STtLLEksVzs7OzZCOzs7OztHOztJLFc7STs7O0s7O1E7OztXO1c7VTs7Szs7OztJO0c7O0k7SyxXO0s7SyxpQzs7Rzs7SSxjO0k7SztNLE87TSxPO0s7Szs7Tzt3QjtNOzs7Rzs7STtJLEksVyw4Qzs7OztLO00sVztNOzs7Ozs7Ozs7Ozs7OztZOzthOztnQixPOzs7MEI7MEI7eUI7O2U7WTs7O2E7OztpQixXO2lCLE87Z0I7YztnQjt3Qyw4Qjs7Ozs7OztrQjs7TTtNOzs7Rzs7SSxZOztLOzs7UTtRLFc7Tzs7O0c7O0ksNEI7OztJLE87Ozs7ZTs7O2M7OztHOztJO0k7RztHO0k7STtJO0k7O0k7SyxXOzs7Rzs7STtHOztJO0s7OztHOzBCLGtDOztJLFc7SSx3QjtJOzs7Rzs7STtJLHNCO0c7O0ksWTs7OzswQjs7OztROztJO0c7O0k7STtLO0ssRztNO0s7TSxNO007TTs7Ozs7Uzs7Ozs7O1MsRztVO1MsWTs7Ozs7O3lCOzs2Qzs7Ozs7UztTO2lDOzs7Szs2Qjs7RzsyQiw2Qjs2QixtQixzQjs7STs7Ozs7Rzs7STs7Ozs7STs7O0c7MkIsVSwrQjs7STtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtNO1c7SztNLDZCO007O3lCO0s7OztLLEksTSw4Qjs7OztTO1U7VSwwQjtTOzs7OztVLDBCOzs7UyxHO1UsYzs7Ozs7OzthLEc7Ozs7Ozs7Ozs7OztTOzs2Qjs7Uzs7O1U7OztVOztVLDRCO1M7UztTOzs7Uzs7UyxPOztTOztTOztVLFU7Ozs7VTs7ZTs7O2lCOzhCO2dCOzs7VTtZOzs7ZSxrQixROytEO2U7Yzs7VSxPO1UsYztTOztVO1c7WTs7O1k7WTtZOzRCO3FDOzs7Ozs7aUI7bUQ7Vzs7O1M7VTtZOzs7ZTs7O2dCLFE7NkM7Ozs7Ozs7aUI7Ozs7Ozs7aUI7OztlOzs7VTs7OztlO2lEO1M7O1M7Ozt3Qjs7UyxnQjtTO1UsUTtVO1M7UztVO1k7OzZCOztVO1M7O1M7O1M7OztVO1k7OztlOzs7Z0I7Z0IsTztlLFc7Yzs7Uzs7SztJO0ksRzs7TTs7dUI7O0ksWTs7Ozs7O1Esc0I7UTs7O0k7SywrQjtLO0s7Ozt5QjtLOztJO0c7O0ksTzs7NEI7O0c7O0k7SztNLFU7OztNO1E7OztXO3dCO1U7OztNO1E7OztXO1csTztVOztNOzs7Szs7O2dCLE87STs7O0s7Szs7O0ksWTtJLE07Rzs7STtLOzs7OztNO007OztLOztJLGM7Ozs7Ozs7OzsrQjs7STs7O0k7SSxPO0c7d0MsMEI7O0k7STtHOztJO0k7STtHOztJO0k7RzswQywwQjs7STtJO0c7O0k7Szs7O0s7SztJLE87Rzs7STtJO0c7O0ksTzs7O2MsSSxPLDRCO3FDO2M7YzthOzs7Rzs7STs7Tzs7O1UsVztVLE87d0I7O1M7OztJLE87Rzs7STs7SyxPOzs7SSxPOzBDLDBCO0c7O0ksSTtJLFc7Rzs7SSxxQzs7SSxlO0c7O0k7SyxPOztLO087O3dCOztLO0k7Rzs7STs7K0Isc0M7O0c7O0ksSSxpQzs7SyxtQixPO0s7OztRLFcsVztRO1M7VSxPO2lCOzs7USxjO087OztJO0k7STs7cUI7Ozs7Syx1QixVOzs7O08sc0IsVTs7Ozs7OztVLEc7VztZLFc7bUI7Ozs7Ozs7Ozs7OztLOzs7OztJOzs7Ozs7UTt1QywwQjs7OztROzs7Vzs7VTs7O0k7Rzs7STtLOzs7O0ssa0I7O0s7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs0QywyQjs7O0k7SztPOzs7VSxhO1Usc0I7VSxXO1U7VyxXO1c7Ozs7O2M7ZSxPO3NCOzs7Ozs7Ozs7Ozs7OztVO1csVTs7O1c7O1U7Uzs7O0s7Tzs7O1U7OztXOztVO1M7OztLLE87Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7OztpQjs7O1E7Ozs7O1M7OztjOzs7OztJOzs7OztZOzs7Rzs7STs7Rzs7STtJLE87Rzs7STtJO0k7Rzs7STtJO0k7SSxPO0c7O0k7STtJO0c7O0k7SSxPO0c7cUQsd0I7Rzs7SSxJLHVCO0ksTztHOztJO0ksTztHOztJOztLO087O3dCOztLO0k7Rzs7STtJO0k7STs7Rzs7STtLLFU7Szs7Szs7c0I7O0ssTzs7O2U7bUY7ZTtjOztJO0k7O0ssTztLOzs7SztJOzs7Ozs7O0k7Rzs7STtJO0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJO0k7STtLLE87Szs7O0ksTzs7Ozs7O0c7O0k7SyxPO0s7SztLOzs7OytCOzs7OztJO0c7O0k7SSxPO0c7O0ksWTs7O0s7O0k7Rzs7O0k7Ozs7Ozs7UTs7O1MsTTtTO1M7UTs7VTthO1MsVztTLEs7VSxPOzs7OztRLHVCO1EsRztTOzs7UTs7Z0MsbUIsd0I7Ozs7O1E7Ozs7Ozs7OztROzs7O1MsTTtTO1M7UTs7VTthOzs7OztZLE07OztTO1M7Ozs7O1E7O1M7Uzs7UztTO1c7OztjO2M7YTs7O1M7Vzs7O2M7YzthOzs7UyxhO1M7Vzs7O2M7Yzs7Ozs7OzthOzs7UztXOzs7YztjO2E7OztTLGM7UztXOzs7Yzs7Ozs7ZTs7O2U7YyxhOztjO2E7OztRLG9COzs7OztTLDBCOzs7USxHO1MsWTs7Ozs7OztZLEc7Ozs7Ozs7Ozs7OztROzs7O0k7STtJO0ksTztHOztJO0ssYztLOzs7Szs7STtHO0c7O007OztTO1U7VTtZO2U7O1M7UTs7STtJO0k7STtJLGU7STtJOztxQjs7SSx5QjtJOztLO0s7SyxPO0ssTztJLHFCO0c7O0k7SSxPO0c7O0k7STtJO0k7SSxlO0k7STs7cUI7O0k7STtLLE87SztPOzs7VTs7Uzs7O0s7Tzs7O1U7O1M7OztLO0s7SyxPO0ssTztLLE87SztJO0c7O0k7SSxPO0c7O0k7O0s7SztLO0s7SSxpQjtJLFc7Ozs7Ozs7Ozs7STtJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztpQixjO2tCLFc7a0IsTzs7aUI7Z0I7Z0IsTzs7OEI7O0c7O0ksVztJLE87Rzs7Ozs7eUI7O08sbUI7Tzs7Ozs7O1M7O1UsUTs7cUI7O1MsSSxzQixXOzs7O3VDLFM7Tzs7UTs7UTs7Z0M7TzttQzs7OztJOzJCLFc7O2M7YyxPOzs7d0I7d0IsTztpRTt1Qjs7YTs7Rzs7STtLLE87SyxhOztLOztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1U7WTs7O2U7OytDOztlO2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNO0s7SztNLFE7TTs7TTs7Tzs7O007O087Uzs7O1k7OzthOzs7WTtXOztPOzs7O1ksTztXOzthOztLO0s7STtJO0ksTztHOztJOzs7OztJLFc7Rzs7SSxJLHdCO0ksVztHOztJLFksc0I7OztLOzs7TTtNLE87SyxPOztJOztLO0ssTztJLE87OztJLFM7O3NCLGtEO0k7O0ssTztLLHNCO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7O0ssdUI7SyxXO0ssVzs7STtLO087Ozs7Ozs7OztJO0k7O0ssTzs7OztlLG9COzs7O0k7SSxPLFc7Rzs7SSxPO0c7O0k7SSxPO0c7O0k7STtLO0ssTztLO0k7SztNLFk7TSxPO0s7Szs7SSxPO0c7O0ksVztJOzs7SyxJLFEsMkIsVTs7OztNOzs7OztPOzs7Tzs7Ozs7Tzs7Ozt1Qjs7Ozs7O08sRztRO1M7UztTLE87UyxPOztrQjs7OztNOzs7O0k7Rzs7O0k7STtJO0s7Szs7STtJO0s7aUM7SztLO0ksTzs7O0k7O0ssTzs7STs7O0ssTztLLE87SSxPOzs7STs7Tzs7d0I7SSxPO0c7OztJLEcsK0I7STtJOzs7STs7SyxPOztJOzs7SyxPO0ssTztJLE87OztJLFk7O2dCOztJLE87Ozs7Ozs7OztrQzs7Ozs7Ozs7Ozs7SSxLLGtDLDhCLCtDLFU7STs7O0k7O3lCOzs7NEM7OztJO0c7OztLLE87O1E7O29COztLO0k7SSxTOztJLGdCO0c7O0k7OEI7Rzs7OzttQjs7OztNOzs7TTs7Ozs7O0c7STtNOzs7O1UsTztTOzs7O0ksWTs7Szs7TSxVOzs7Ozs7SyxlO0s7TSxPO00sTztNLFc7TSxPO0ssTzs7STtHOztJOzs7SztJO3NDO0k7OztJLFc7SSxPO0c7O0ksTztHO0c7SSxhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFE7OztLLE87O0k7Rzs7SSxXO0ksSSxzQyxJOzs7Ozs7STtJO0c7O0ksWSxPOztJLE87OztJO0k7STs7SyxPOztLLE87Ozs7Ozs7Ozs7Rzs7STs7Tzs7OztROztRLFE7USxVOzs7UTtTOztrQixPOztpQjs7OztRO1M7O2tCLE87O2lCOztPOzs7O1EsVzs7OztVLFc7O1U7OztXO2E7K0M7VTtrQjs7Ozs7Ozs7OytDOzs7OztpQjtnQzs7O1c7VztZLE87O2M7Ozs7Vzs7WTtjOzs7aUI7aUI7aUIsTzswQjs7Z0I7O2M7O1U7a0I7OztVOzs7O1csTztVO2tCOzs7Ozs7Ozs7O1Usa0IsTztVO2tCOzs7Ozs7Ozs7OztRLFc7OztRO2dCOzs7Ozs7Ozs7TyxXOzs7Ozs7UTtRO1MsTztlOzs7Ozs7Ozs7Ozs7O2lDOzs7Z0M7OztVLG1CLE87VSxXOzs7VTtVLFc7VSxXOztVLG1CLE87VSxXOzs7VTtVLFc7VTtrQjs7Ozs7Ozs7OztPOzs7TztPO08sYzs7Ozs7Vzs7b0I7b0I7b0I7b0I7cUIsTztxQixPO29CLE87O21COztPLDBCOzs7O0ksTzs7OytCLHdDO0c7O0ksVTs7SSxPO0c7O0ksWTs7O0ssSSxXOzs7O00sVztNLE87O2lCO0ssYzs7TSxXO00sTzs7Szs7STtHOzs7OztnRSxTO0k7Ozs7YztjO2U7aUI7OztvQjtvQjttQjs7O2U7aUI7OztvQjs7O3FCLE87b0IsVzttQjs7OEI7YztlOzs7b0I7b0I7bUI7O2U7YztlLE07O2M7O2U7Z0I7Ozs7Ozs7b0I7Ozt1Qjs7O3dCLFE7Ozs7O3dDLG1COzt1Qjs7Ozs7ZTtnQixPO2dCLE87O2dCOztpQjttQjs7b0M7OzttQjs7Ozs7Ozs7OztnRDtlO2dCLE87Z0Isc0I7Ozs7Ozs7O2U7ZTs7Ozs7O3NDOzs7a0I7O2dCO2dCOztlOztrQjs7O3FCO3FCLEksVzs7OzZDOzs7cUIsWTttRDtxQjs7c0IsTztzQixTO3NCO3FCLE87b0I7OztlOzs7a0IsaUI7OzttQjs7O29CLE87b0IsTztvQixPO29CO3NCOzs7OzBCLE87eUI7O21CLE87Ozs7Ozs7Ozs7O2tCOzttQixPO2tCLE87Ozs7Ozs7O2lCOztlOzs7Ozs7OztlLE07O2E7Ozs7STtLOzs7Ozs7O0s7O0k7Szs7O2tCO0k7Szs7O0k7O0s7OztJOzs7STtJO0c7O0k7STs7TTs7O08sYTtPLE87TyxPO08sTyxXO08sTzs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O0ssTTs7Rzs7SSxZOztJOzs7STs7O0ksbUI7eUI7STtZOzs2Qjs7Rzs7SSxxQjtJO1k7OzZCOztHOzs7STs7OztjO2M7ZTs7O21CO2U7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2lCOzs7Ozs7Ozs7OztlLE87YztlOzttQjs7O2MsTzs7Ozs7d0I7Ozs7Ozs7Ozs7c0M7O2E7OztJOzs7O2M7YztjO2UsTTs7ZTs7a0I7O2UsTzs7Ozs7Ozs7Ozs7YyxpQjtjLE87Ozs7Ozs7Ozs7YTtHOztHLDhCO0csaUM7O0k7Rzs7STs7NkIsK0M7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksVTtJOzs7Rzs7STt5Qjs7Rzs7STtLLE87OztPLE87OztPLE87Ozs7Ozs7aUIsVTtpQixPO2dCOztpQixPO2dCOzs7TyxPOzs7OztpQixPOzs7Ozs7Ozs7Z0I7OztPLE87Ozs7Ozs7aUIsVTtpQixPO2dCOztpQixPO2dCOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPLE87Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7OztJLFk7OztLLE87OztlLE87Ozs7MkM7O2M7O0k7SSxPOzs7O2dDOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7SSxJLDRCLDhCOzs7OzRCOzs7Rzs7SSxpQjtJLGdCO0ksTztHOztJLE87Rzs7STs7O087O1EsTztRO08sVzs7Ozs7Ozs7VSxZO1U7Ozs7Ozs7O1U7VyxPO1csVTtVOzs7Ozs7OztJO0c7Ozs7Z0I7Ozs7O1E7Ozs7O1MscUIsTztTLEs7Ozs7Ozs7Ozs7Ozs7O1M7O1Usa0I7VSxZO1U7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1E7O1E7Ozs7Ozs7Uzs7d0M7UyxRO1E7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7NEI7Ozs7O1EsWTtROzs7OztROzs7UTs7Ozs7STtxQjtrQjs7STtHOzs7O0k7NkM7SSxPO0c7O0k7OzRDO0ksTztHOztJOztPOzt3Qjs7O087ZTs7Rzs7SSxTOzs7Szs7Ozs7OztNOzs7TTtLOzs7OztJO0c7O0k7STs7O1Esa0IsUTtvQjs7USxJLGdCOzs7O1UsTTs7Ozs7O1E7O1MsUTtTLFU7OztTOztZOzs2Qjs7UTs7Ozs7Uzs7Ozs7OztTO1U7b0I7VTtVO1M7OztROztRLG9CLFU7c0I7O1EsSSxrQjs7OztVLE07OztROzs7O0c7O0k7Rzs7STs7Ozs7Ozs7OztPOzs7Z0I7Ozs7Ozs7O087O2U7Ozs7O08saUI7O087Ozs7OztROzs7Tzs7O087UTs7Ozs7Uzs7OzthOzs4Qjs7Ozs7O1E7Ozs7O2UsTTtROzs7O08saUI7OztPLGlCOzs7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZO0ksSSxnQjs7OzJCOzs7aUM7STtLLE07SyxVO0ssTTtLLFM7SyxRO0ksSTs7OzRCOzs7SSxnQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxpQjs7STtZOzs7ZTs7Ozs7OztrQjs7O3dDOzs7Ozs7Ozs7Ozs7OztrQjs7Ozs7eUM7Ozs7OzswQjs7OztHOztJOzs7Tzs7MEI7O087ZTs7Rzs7STtJO2dCOzs7O1E7OztTO1Esa0I7O1E7Ozs7O1M7O2E7O1MsK0I7USxPOztROzs7O1MsUTs7Ozs7OztHOztJLFM7STs7O087OzBCOztPO2U7O0c7O0k7STtnQjs7OztRLG9DOztROztROzs7OztTO1EsVTtRLFk7Ozs7OztROzs7O0c7cUMsdUM7Ozs7Ozs7UTtTLFk7cUIsTTtTLG9CO1M7Ozs7O1UsTTs7Ozs7USxPO2lCOzs7b0I7Ozs7Ozs7Ozs7Ozs7OytDOzs7O3FCLE07O29COzs7OztnQjs7OztJLEksZSxhOzs7MkI7OztHOztJO0ksa0I7SSxPO0c7O0k7STs7Ozs7UTs7O1M7UztTLE07UztTLE07USxPOzs7Rzs7STtJO0ssSSxjLHVDOzs7Ozs7Uyw2QjtTLEcsK0I7Uzs7OztTLG1DO1MsRyxpQztTOzs7aUI7OztHOztJOzs7STtLO00sbUM7Ozs7Ozs7O0ksTztHOztJO0s7SyxROzs7Ozs7OztPO1EsUTtRO1U7Ozs7Ozs7O0c7O0ksUzs7Ozs7Ozs7Ozs7Ozs7OztTLEc7Ozs7Ozs7Ozs7OztPOzs7WTtPOzs7OztPOzs7aUI7O3dCOztHOzs7SyxJLDZCLGE7Ozs0Qjs7O0k7O0k7Rzs7STtLO007TTtNOzs7UyxvQjtvQjs7UTs7O1M7Ozs7OzthLE87Ozt1QixtQjt1Qjs7d0I7d0IsbUI7a0M7O3NCOzs7OzJCOzs7O1M7UTs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO007UTs7O1c7VyxPO1U7OztNLDBCLE8sbUM7TSw4QixXOztLOzs7Szs7TTtPO1EsSztRO087Ozs7NkI7Ozs7Z0I7O0s7STs7STtHOzs7SyxZOztNO08sUTs7O21COztLLE87STtJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O0k7SSxZOzs7Ozs7Ozs7OztJO0ksTztHOztJO0ssVTtLOzs7Ozs7Ozs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7O1U7VSxTO1UsUTs7O1csTTtVLE07Ozs7Ozs7Ozs7Ozs7VSxHO1c7WTtZLE07a0I7Ozs7UyxNOztTOzs7VTs7WTs7O2U7Z0IsTTtnQixNO2UsTztjOzs7OztTOztVO2dCOzs7Uzs7O1U7Z0I7OztTOzs7O1U7Z0I7OztTOzs7O1U7Z0I7O0s7Szs7Rzs7SSxPO0c7O0ksa0IsTTtJLE87O0c7OztNLHVCOztNLFc7Szs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLEk7Ozs7O0ssTTs7SSxJOzs7Ozs7UztPLEc7OztRLEc7UyxHOzs7Ozs7O1U7OzthLE07Ozs7OztZLE07O1csSztXOzs7Ozs7Ozs7Ozs7Ozs7b0I7O00sTTs7SztLOzs7SyxNO0k7Rzs7SSxZOztLO00sTztNLFU7O3dDO0s7O0k7Rzt1Qyw0Qjs7STtHOztJLDhCOzZCLGlCLGtCOztHOzt1QixPLHlDO0k7Z0M7OztLLE87Ozs7Ozs0QixPLHlDOzRCLE8seUM7OztxQixPLHlDO0k7Szs7UTs7UTs7UTtnQjs7STtLOztNOztNO00sTztLLE87O0ksa0IsTztJLE87Rzs7SSxPOzs7Ozs7MkIsTyx5QzsyQixPLHlDO0c7O0k7Ozs7USxPOzs7Ozs7Ozs7O087Ozs7USxPO1EsTztPLE87Ozs7Ozs7Ozs7O2lCOztrQjs7aUI7O2tCO2tCO2tCLE87aUIsTzs7OztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O08sVztPLE87Ozs7Ozs7Ozs7O08sVztPLE87Ozs7Ozs7Ozs7O0c7O0ksd0IsTyx5QztJLCtCLFM7O0s7O00sTztLLE87O0k7SztPO0ssTztJLE87Rzs7cUIsTyx5QztJLDRCO0k7OzJCOzs7Tzs7O087O1E7UTtRLE87TyxPOztPOztRO1E7USxPO08sTzs7Rzs7STs7OztRLE87Ozs7Ozs7Ozs7Tzs7OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7aUI7Ozs7O08sTzs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7Ozs7Rzs7cUIsTyx5QztJLFU7STs7Ozs7SyxPO0ssYztJLE87Ozs7Ozs7Yzs7OztHOzt1QixPLHlDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Tzs7OztROztXOztjOztjOztjO3NCOztVO1E7UTtRLE87TyxPO2dCOzs7Ozs7O087Tzs7NkI7O087OzJCLE8seUM7UTs7VyxPO1U7TztROztXOzs7WTs7VyxPOztXLHFCLE87VyxPOztrQyxPOzs7Vzs7TyxXO08sTzs7O087O1EsTztpQjs7O087OztPOztROzs7TyxvQjtPLE87Z0I7Ozs7OztPOzs7TyxzQjtPLE87OztPOztRLFU7TztpQjtpQjs7Rzs7STs7Szs7STtLLE07SyxNO0ksSTs7Ozs7Szs7STtHOztJOzs7OztJOzs7Tzs7Ozs7USxPO08sRyx3QztPLFc7Tzs7K0Q7TztRO1E7Ozs7Ozs7OzBCO0s7O0c7RztJOzs7Ozs7Ozs7O0ksZTs7STs7O0k7O087O087O087Ozs7RzttQixtQzs7STtLOzs7Ozs7TSxRO00sUTtLOzs7TTs7SztpQjs7Szs7SSxPOzs7OztHOzs7STs7dUI7SyxzQixPO1EsNkM7SztNO08sTztPLE87TTs7Ozs7O007O0s7OztzQjtJOztLOzs7O0ksTztpRCxvQjtHOzs7STs7Ozs7O2U7O0ksSTs7Ozs7Szs7STs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0MsVTs7STs7Tzs7Tzs7Tzs7OztHOztJO0ssUTtLLFE7SyxVO0ssVTs7Ozs7O1Msa0I7VTtXLFU7OztxQjtVOztZOztXLE07VTtXLFU7OztVOzs7Ozs7VztZO2M7OztpQjtpQjtnQjs7WSxVOzs7VztZO2EsTzthLE87WTs7Ozs7Ozs7Ozs7Ozt5Qjs7VTs7Ozs7OztTLGtCO1UsZTtVLEs7VyxNO1U7VyxPO1csTztXLFE7Ozs7VyxjO1csYzs7O1c7VyxjOzs7Ozs7Ozs7Ozs7O1c7O2M7OztpQixrQixRO2lFO2lCO2dCOztXOzs7O1c7O1k7O2E7Ozs7OztjLFU7YyxVOzs7Ozs7Ozs7OztnQixXO21CO2lCO2tCLFE7a0IsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7aUI7OztrQjtrQjs7Ozs7Ozs7Ozs7O2M7O2dCOzs7aUI7aUI7Ozs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7Ozs7Ozs7Ozs7O3lCOztVOzs7Ozs7OztNLGM7Ozs7Ozs7O3NDOzs7OztzQzs7Ozs7Ozs7OztJOztNOztNO08sTztPLE87TTs7Ozs7OztLOztJO0c7OztJOzs7Ozs7Ozs4Qjs7Ozs7Ozs7Ozs7O1U7O2dDOzs7Vzs7WSxRO1ksVTs7OztlLHFCLE87ZSxHOzs7ZSxzQixPO2UsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7TTs7TyxROzs7TyxJOzs7Ozs7Ozs7USxJOzs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7Ozs7Ozs7SSxnQjs7Ozs7Ozs7Ozs7Ozs7VTtXO1k7O2UsVztlLE87Yzs7Vzt3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLE07Ozs7Ozs7Ozs7O1c7WTs7Ozs7Ozs7OztVO1c7WTs7ZSxXO2UsTztjOztXO3dCOztVOzs7VyxPO1csTzs7O2dCOzs7a0I7bUIsTzttQixPO2tCO21CLFc7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7a0I7aUI7Ozs7VTs7O1c7WSxrQixtQztZOztlOzs7Ozs7Z0IsUTtnQixRO2U7Ozs7Ozs7Z0I7O2U7Ozs7MkI7O2U7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNOzs7SSxnQjtJO0ssTztLO0k7SyxjOzs7Ozs7Ozs7SSxnQjtJOzs7Ozs7SSxvQjtJO0s7OztLLE87SSxPOzs7ZTtlO2dCOztlO2U7Z0IsUTs7O2dCLFU7Ozs7O2dCLEksc0I7O2dCLG1COzs7OzswQjtlO2dCLFU7Ozs7Z0IsVTs7OztnQjtlO2dCLEksb0I7OztlO2M7Ozs7Ozs7STs7Szs7STtLLE07SyxNO0s7SztJLEk7Ozs7O0s7O0k7Ozs7SSxzQjs7MEI7STtHOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksTzs7NkIsUzs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QixPLDRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7O0ksTzs2QztHOztJOzs7SyxNO0k7SSxPOzs7STtJO0k7STs7c0IsbUIsTyw2Qjs7O0c7O0k7STtJO0k7SSxnQixNO0ksTztHOztJOzs7OztJO0k7STtJO0ksTztHOztJOzs7OztJO0k7STtJO0k7Rzs7O0k7STtJLE87OztJO0ksd0I7Rzs7STtJLHdCO0c7OztJO0k7Ozs7TztPLE87OztPLE87OzRCLE87OztPLE87OzZCLE87OzhCLE87OzZCLE87O08sMEIsTTtPLE87OzRCLE87OzZCLE87OztPLE87OztpQjtpQixPO2dCOzs7O08sTzs7O2lCO2lCO2lCLE87Z0I7Ozs7TywwQjt1QyxPOzs7O0k7STtJO0k7O0c7Ozs7Ozs7STtJO0k7STtJLE87OztJO0ssa0IsTTtLLE87OztJLE87OzJCOzs7O0k7OztLLE87OztlO2U7ZTtlO2U7OytCOztlO2UsZ0IsTTtlLE87Ozs7O0ksTzs7MkI7Ozs7STtJO0k7STtJOzs7TztPO087TyxPO007O0k7SSxnQixNO0k7SSxPOzs7YztjLE87YTs7Rzs7SSxxQixNO0ksTzs7O0k7STtJO0k7O3NCLGtCLE8sNEI7O0ksZ0IsTTtJLE87Rzs7Ozs7O0k7STtJLE87OztJOzs7OztJO0k7STtJOzs7SztzQztLO0ssVTtLLE87OztJO0c7Ozs7Ozs7O0k7STtJO0k7Ozs7TztPO2lDOzs7eUIsTzs7MEI7OztVO1UsTzs7OztxQzs7OzRCOzs7TztPOztPOztPLHFCLE07TyxPOzs7TztPLFU7TztPLE87OztpQjtpQjs7aUM7O2lCLE87Z0I7OztPLHNCLE07TyxPOzs7TyxPOzs7aUI7aUI7aUIsTztnQjs7O08sdUIsTTtPLE87OzhCLE87OzhCLE87OzhCLE87OztPO08sTzs7OztJOzsyQixPOztPLHNDLE07TztPLE87O08sb0IsTTtPLE87ZTs7Ozs7Ozs7OztJO0k7STs7O087TztPLE87TTs7STtxQzs7OzhCOztPOzs7TztPLE87OztPOzs7VTs7OztXLE87OztVO1UsTzs7Ozs7USxPOztPOzs7OztRLE07TztPO087eUM7TyxPOzs7TztPLE87OztpQixrQixNO2lCLE87Z0I7Ozs7TztPLFU7TyxPOzs7TztPLFU7TyxPOztPLDBCLE07TyxPOzs7TztPLFU7TyxPOztPLHdCLE07TyxPOzs7Tzs7O1U7NkI7O1U7VSxPO1M7O08sVTtPLE87OztPO08sTzs7O087TztPLE87O08sMEIsTTtPLE87OztPO087TyxVO08sTzs7O087TyxPOzs7TztPLE87OztPO087TyxPOztnQyxPOztnQzs7NEI7OztPO08sTzs7O08sTzs7O2lCO2lCO2lCLE87Z0I7Ozs7TztPO08sTzs7O087TyxPOztnQyxPOztnQyxPOzs2QixPOztrQyxPOzs7TztPLFU7TztPLE87O2dDOzs7TztPLE87Ozs7O0k7OztPO087TyxPO007O0k7Ozs7STtJO0ksTzs7OztJO0ksVTtJLE87Ozs7STtJOzs7NEIsTzs7O08sTzs7K0IsTzs7NkIsTzs7OEIsTzs7NEIsTzs7OEIsTzs7TywwQixNO08sTzs7OEIsTzs7OEIsTzs7NkIsTzs7O08sMEI7O08sMEIsTTtPLE87O08sMEIsTTtPLE87ZTs7OztJO0ksd0I7Rzs7SSxZOztJO0ksTzs7Ozs7Ozs7STtJO0k7Ozs4Qjs7NkIsTzs7O087TyxPOzs7TztPLE87OztpQjtpQjtpQixPO2dCOzs7Z0MsTzt3Qzs7OztJOzs0QixPOzsyQjs7MkIsTzs7OEIsTzs7NkI7cUMsTzs7Ozs7Ozs7O0k7STs7O0ksTzs7Ozs7Ozs7STtJO0k7SSxPOzs7SSw4Qjs7OztPOzs7VTtVLE87Uzs7TyxPOzs7aUI7aUIsTztnQjs7OztPO08sTzs7O087TyxPOzs7TztPLE87Ozs7Ozs7OztJO0k7STs7OzhCOzs2QixPOzs7TztPLE87OztPO087TyxPOztrQyxPOzs7OztRO1E7USxPOzs7TztPLE87c0MsTzs7Ozs7Ozs7O0k7STtJO0k7SSxPOzs7Ozs7OztJO0k7STs7OztPO08sVTtPLE87OytCLE87OztPO087OztVO1UsTztTOztPLE87OztPO08sTzs7O2lCLGtCLE07aUIsTztnQjs7Ozs7Ozs7TztPOzs7VTtVLE87Uzs7TyxPOzs7TztPLFU7TyxPOzs7TztPLE87Ozs7Ozs7OztJO0k7STs7OztPO08sVTtPLE87O2dDLE87OztPO08sTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STtJOzs7NkIsTzs7a0MsTzs7a0MsTzs7O087TyxPO3VDLE87Ozs7Ozs7OztJO0k7STtzQzs7O087OztPO08sTzs7Tyx5QixNO08sTzs7O087TyxVO08sTzs7TywyQixNO08sTzs7O087TyxVO08sTzs7OEIsTzs7TywyQixNO08sTzs7Z0MsTzs7Z0MsTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STtJOzs7SztLLFU7SyxPOzs7SSxPOzs7O0k7STs7O0s7SyxPOzs7SSxPOzs7STs7SyxPOzs7SSxPOzs7O0k7STs7OzRCLE87OztPO087OztPO087OztPO08sTzs7NkIsTztzQyxPOzs7O0kscUIsTTtJLE87Ozs7STtJLFU7STtJLE87Ozs7Ozs7O0k7STtJO0k7SSxPOzs0QixTO3lDLFM7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7a0IsUzs7SSxnQyxPO0ksVzs7O0k7Ozs7SyxPO0ssTztJLFc7Ozs7SSxnQjs7NkIsUzs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NEIsTyw0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE87SyxPO0k7OztJLE87NkM7Rzs7STs7OztLLE87SyxPO0ksVzs7O0k7SyxPO0ssTzs7O0ssTzs7OztLOztLLE87SztPOzt3Qjs7STs7Ozs7Ozs7Ozs7O0c7O0k7SyxVO0s7SztLLE87SyxXO0ssaUI7STtHOztJO0ssUztLO0ssVTtLLGdCO0k7Rzs7STtLLFM7SztLO0ssZ0I7STtHOztJO0ssVztLLGtCOztJLFc7Rzs7SSx3QjtHOztJLHdCO0c7O0k7Ozs7SyxZO0ssWTtJOztPOzs7USxPO3lCOzs7Tzs7O1EsUTs7Ozs7OzZDOzs7Tzs7O1EsVTs7Ozs7OzhDOzs7K0M7Ozs4Qzs7O087O1EsTzt5Qjs7OzZDOzs7OEM7Ozs7O1EsTzs7O1c7OzRCOzs7O087O1EsTztRLHNCOzs7Vzs7NEI7Ozs7Ozs2Qzs7Ozs7MEI7O0k7OztJO0ssVTtLO0ssVztLLGlCO0k7Rzs7STtLLFM7SztLLFU7SyxnQjtJO0c7O0k7SyxrQixPO0ssVzs7O0k7WTs7NkI7Ozs7STs7O0s7YTs7O2dCO2lCLFM7aUI7aUI7bUI7O29DOztpQjtpQjtpQixPO2lCLFM7aUIsZ0I7Z0I7Ozs7Ozs7Ozs7Ozs7STtZOzs2Qjs7OztJO0ssVTtLO0s7SyxPO0ssTztLLE87SztPOzt3Qjs7SyxXO0s7SyxPO0ssZTtLO0ssTztLO087O3dCOztLLGlCO0k7Ozs7Ozs7Ozs7O0c7O0ksMEMsTztJLHFCOzs7STtLLFk7SztLO0ssTztLO087O3dCOztLO0ssTztLLHFCO0ssbUI7STs7Ozs7Ozs7Rzs7STtLLFk7SyxvQjtLLG1CO0k7Rzs7STtLLFU7SztLOztLOzs7O00sTztNLE87TTs7O1M7MkM7Ozs7Ozs7O0kscUI7STtHOztJO0ssVTtLLFU7SztLLE87STtLLDBCOzs7dUIsVzs7cUM7O1E7Ozs7UyxPO1E7OztJO0s7Tzs7d0I7O0s7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7VTt5Qjs7O1M7O1UsTzt5Qjs7O1M7Ozs7O1U7WTs7O2U7OztnQixPO2U7dUI7O3dDOzs7Yzs7VSxPO1UsTzs7OztTOzs7O1UsTzs4Qjs7O1M7OztVLE87VSxzQjs7O2E7OzhCOzs7OztTOztVLE87eUI7Ozs0Qzs7O1M7O1UsTztxQjs7OzZDOzs7Uzs7OztVLE87MEI7Ozs7O0kscUI7STtHOztJOzt1QixXOztPOzs7USxPO1EsTztPLFc7O08sZ0IsTztPLFc7ZTs7Ozt3QixxQjtJO0ssVTtLO0ssTztLO087O3dCOztLLFU7Szs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7UyxROzs7NEM7OztROzs7UztXOzs7Ozs7OzhCOztlOzs7Z0IsUTtnQixTOztjLGE7Yzs7Ozs0Qzs7Uzs7Ozs7OztVLFE7VSxPO1UsVTtVO1k7OzZCOztVLGU7Ozs7OztROzs7UyxPO1MsTztTO1c7OzRCOzt3Qjs7O1E7Ozs7UyxPO1MsTzt3Qjs7O1E7OztTLE87UyxPO3dCOzs7UTs7UyxPO3dCOzs7UTs7OztTLE87UyxPOzs7O1E7OztTLE87MkI7OztROzs7O1M7Vzs7O2M7OztlOztjOzs7ZSxPO2M7YTs7UyxPOzs7OztZOzs7UTs7OztTO3lCOzs7UTs7Ozs7UyxPO1M7eUI7OztROztTLE87eUI7OztROzs7O1MsTztTLE87UyxPO3lCOzs7UTs7O1MsTzt5Qjs7O1E7OztTLE87eUI7OztROzs7Ozs7O1MsTztTLE87OzJCOzs7Ozs7eUI7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1MsTzs7OztROzs7UyxPO1Msc0I7Ozs7WTs7NkI7Ozs7UTs7Ozs7O1MsTztTLE87Ozs7UTs7O1MsTzt5Qjs7Ozs7O3lCOzs7MEM7Ozs7Ozt5Qjs7Ozs7eUI7OztROzs7Ozs7UyxPO1MsTztTLE87OztZOzs7Ozs7Ozs7Ozs7O1E7OztTLE87eUI7O0kscUI7STtHOztJO0s7SztLLE87SSxvQjtJOztPOzt3Qjs7STtHOztJO0ssVTtLO0ssTztJO0c7O0k7SyxnQjtLO0ssTztLLFk7STtHOztJO0ssVTtLLFU7Szs7O3dDOztPOzs7USxVOzs7Ozs7OztpQjs7Ozt5Qzs7MEM7OzswQzs7OzBDOzs7Tzs7USxPO3VCOzs7MEM7OzswQzs7OzBDOzs7OzsyQzs7O087O1EsTzt3Qjs7O087O1EsTzt3Qjs7OzRDOztJO0c7O0ksd0I7Rzs7SSxZO0k7Ozs7SyxPO0k7OztJO0ssVTtLLFU7Szs7Ozs7Ozs7O3lDOztPOzs7USxPOzs7O087OztRLE87USxzQjtRO1U7OzJCOzt1Qjs7OzRDOzs7Ozs7OztJLHFCO0k7Rzs7STs7NEIsVzs7O087OzJCLFc7OzhCLFc7OztPOzs2QixXOzs7O0k7SyxPO0ssTztLLE87OztJO3NDOzs7Ozs7Rzs7STtLLE87SyxPO0ssTzs7O0ksVztHOztJLDhCOzs7Tzs7O1E7VTs7O2E7YSxjO1k7O1E7VTs7O2E7YSxrQjtZOztPOztPLGtDLE07TyxXOztPOztRLE07USxNO087O087Ozs7USxPO08sVzs7OztJO0ssVTtLLFU7Szs7Ozs7Ozs7O3lDOztPOzs7USxNOzs7O087Ozs7USxNO1EsTTt1Qjs7Ozs7dUI7Ozs7O1E7OztTLE07UyxVO21COztROztTLE07bUI7Ozs7Ozs7dUI7O0kscUI7STtHOztJO0ssUztLO0ssVTtLLGdCO0k7Rzs7STtLLFM7SyxTO0s7OztPOzs7O1EsTTtRLE07Ozs7MkM7OztPOzs7Ozs7USxNO1EsTTtRO1U7OzBCOzs2Qjs7O087OztRLE07USxNO1E7VTs7MEI7O3NCOzs7Tzs7Ozs7USxVOzs7USxNO1EsTTs7Ozs7Vzs7MkI7Ozs7O087Ozs7OztRLE07USxNO3NCOzs7Tzs7O1EsTTtzQjs7SSxvQjtJO0c7O0k7SyxZO0ssWTtLOzs7Tzs7OztRLE07USxNOzs7OzRDOzs7Tzs7OztRLE07Z0M7OztPOzs7USxNO3lCOztJLHVCO0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7SSxJLFUsZ0M7Ozt5Qzs7Ozs7Ozs7eUM7Ozs7Ozs7Ozs4Qzs7O087Ozs7USxNOzJCOzs7MkM7O0kscUI7STtHOztJO0ssVztLLFc7Szs7Ozs7O1M7Ozs7VSxNO2lDOzs7Uzs7VSxNOzBCOzs7Uzs7OztVLE07VSxNOzs7O1M7OztVLE07MEI7OztTOzs7O1UsTTtVLE07Ozs7Ozs7MEI7OztTOzs7O1UsTTs7Z0I7Ozs7Ozs4Qjs7OzBDOzs7Uzs7OztVLE07Ozs7OztJLHNCO0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7SSxJLFMsZ0M7O0s7Ozs7TSxNO00sTTs7O3NDO0ksb0I7STtHOztJLEksUyxnQzs7Szs7O00sTTs7O3dDO0ksb0I7STtHOztJOztLLFc7OztJLGdCOzs7SSxJLFMsZ0M7Ozs7Ozs7OzsyQjs7O087Ozs7OztROzs7O087Ozs7UTs7OztPOzs7USxNO3NCOzs7eUM7OzswQzs7SSxvQjtJO0c7O0ksMEMsTTtJLHFCOzs7STs7OztLLE07SyxNO0ssTTtJLFc7OztJO0ssUztLLFM7SyxVO0ssZ0I7SztJO0c7d0IsUztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksTztHOztJOztzQjs7c0I7O3NCOztzQjs7c0I7Z0M7O0c7RztJO0k7Ozs7Ozs7Ozs7OztJOzs7OztHOztJOzs7O0c7O0k7O0c7O0k7STtHOztJLEc7SyxPO0k7SSxVO0k7STtJO0k7STtJOztHOztJO0k7O0c7O0k7WTs7STtHOztJOztLO007TTtROzt5QixpQzs7Ozs7O0s7Ozs7TTs7Ozs7O0s7OztROzs7Ozs7O1csRztZO1k7O1c7Ozs7Ozs7O1c7VztXOzs7VyxHO1k7WTs7Vzs7WTtZO1k7Ozs7WTtZO1k7WTtZOzs7O1k7WTtZO1k7WTs7VztXO21COztRLEc7UztTOztROzs7Ozs7O1M7OztRO1E7Ozs7O1csTztVO1E7USxRO1E7UTtROzs7O0s7STtJOztLOzs7Szs7O0c7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPOzs7O08sTzs7O08sTzs7Ozs7Ozs7OztPLE87OzttQixPOztPLE87O0c7OzJCLDRCOztLO00sWTtNOzs7OztNLFU7TTtNOztJOztLOzs7TSxNO0s7STs7Syx3QjtLOzhDO0k7OztLOzs7O0ssOEIsc0I7Syx3Qiw2Qjs7TTtNOzs7USwyQjs7OztPOztLOztNOztLO3FCOzttQzs7OztRLEksVTs7OztTLEksVTs7O2dDOzs7UyxPOzs7O2tCO1Esa0I7OztROzs7UztROztROzs7UztTOztTOzs7O1U7VTs7Ozs7Uzs7UTtROztROztTO1c7OzJCOztROzs0Qjs7UTs7O1M7aUMsa0M7Uzs7O1MsSSxXOzs7Z0M7OztTOztROztRLDBCLFU7c0I7O1E7a0M7Ozs7Szt3QztJOztLLGlCO0s7STs7O007TTtLO0ssNkI7Szs7eUI7O1Esa0M7UTs7dUM7OztRLFc7OzRCOzs7UTs7eUI7bUM7O0k7STs7SztPO3VDOztLO087dUM7O0s7TTtNO007Ozs7Ozs7O0k7O0s7Szs7b0M7OztTOztTOztTOztTOzs7O2lCOzs7STs7Szs7Ozs7O087O1E7Tzs7a0I7O3NCO0s7STs7SztNO007TTs7Ozs7OztNO0s7OztJO0k7O21DLFM7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJOzt5QixPOzsyQixPOzt5QixPOzt5QixPOzswQixPOzsyQixPOzsyQixPO21DLE87Ozs7STs7Tzs7eUIsTzs7MkIsTzs7O08sTzs7OEI7Ozs7TyxPOzs4Qjs7Ozs7O0k7SSxJOzs7Ozs7O0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7MEIsTyxtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7eUIsVzs7MkIsVzs7eUIsVzs7O08scUI7OzBCLFc7OzJCLFc7OzJCLFc7OzJCLFc7O0c7RzswQixPLCtCOztJLFM7SSxPOztpQyxPLDJCOzs7YztjOzs7ZTtnQixNOztlLFk7ZTtnQjtnQjtpQixJOzs7Ozs7OztjO2E7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHO0csSSxzQjt5QixnRDs7STs7RzttQyxzQjsrQiw2Qjs7STtLLE07Szs7Rzs7STs7SyxVO0s7Ozs7O1E7Ozt5Qjs7O1EsaUI7O1M7VTtVOzthLDJCO2E7YyxJLGlCOzs7cUM7Ozs7OzsyRDs7YyxhOzs7Ozs7O1k7VTs7YSxZOzs7Yzs7YTtZOzs7Ozs7Yzs7OztjOztlLEs7Yzs7YTs7YzthLE87O3FDLDhCOzs7OzthOzs7YzthLE87O3FDLDhCOzs7O1M7Ozs7O2E7Ozs7YzthO2EsTztZOzs7OzthO2E7O2M7O2EsTztZOzs7OzthO2E7O2M7O2EsTztZOzs7OzthOzs7Yzs7O2lCOzs7O2lCOzs7O2lCOzs7b0I7OztvQixxQzs7Ozs7O29COzs7O3VCOzBCO3FCO3FCOztvQjttQjs7Ozs7aUI7OztpQjs7O2tCO2lCOzs7aUI7OztrQjtpQjs7OztpQjs7O29COzs7cUI7b0I7bUI7Ozs7O2lCOzs7OztpQjs7O2EsTztZOzs7Ozs7OzthO2E7O2M7O2EsTztZOzthO2E7OztnQjs7OztnQjs7OzttQjs7OztzQjs4Qjs7Ozs7OztnQjs7O2EsTztZOzs7O2E7OztjOzs7aUI7Ozs7aUI7OztvQjs7O3FCOzs7O3dCOzJCOzs7Ozs7OztvQjttQjs7OzthOzs7Z0I7Z0I7aUI7OztvQjs7O29COztnQjtlOzthLE87WTs7Ozs7YTs7Ozs7YTthLE87WTs7O2E7Ozs7Ozs7O2dCOzs7Ozs7aUI7Ozs7Ozs7OztnQjs7O2EsTztZOzs7YTs7Ozs7Ozs7Z0I7Ozs7OztpQjs7Ozs7YSxPO1k7O2E7OztjOzs7aUI7Ozs7aUI7Ozs7Ozs7aUI7Ozs7aUI7OzthLE87WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUM7Ozs7O21DOzs7Ozs7bUI7Ozs7OzttQjs7OztRLHNCO1E7UyxPO1E7UTtROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOztpQzs7ZTs7Z0IsZTtlLE87O3dDLG9CLG9COzs7ZTs7Z0IsTTtnQixVOzs7aUM7O2lDOztpQzs7aUM7O2lDOztpQzs7a0M7O21DO3lDOztXOztRO1M7VztTLE07UyxNOzs7Yzs7UyxNO1MsTTtTLE07O1MsTTs7Uzs7WTs7Ozs7Ozs7Ozs7Ozs7OztRO1EsTztPOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7OztNLFU7TTs7O0ssTztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLG1CLE8sOEI7Rzs7STtJLE8sd0MsZTtHOztJLE87OztjO2M7ZTs7Z0I7Ozs7YzthOztHOztJLFU7SSxPO0c7O0k7STtLO0ssTztJOztLO0s7SyxPO0k7O0s7Ozs7O1M7O1UsWTtVLG9CO1M7VTtXLE87Vzs7Ozs7Ozs7O1M7Ozs7O1U7Ozs7VTs7Ozs7Uzs7Ozs7O2E7OztZOzs7Ozs0Qjs7MkI7O1M7OztVO1UsTTtTOzs7SztLLE87STs7SyxjO0s7SyxPO0k7O0ssa0I7Ozs7Ozs7O1k7VztRO1M7MkMscUI7Ozs7UTs7OzRCO1E7O3dCOzs7O0s7SyxPO0k7SSxnQyxxQztJO0s7SztrQjs7TTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7b0M7OztJO0k7OztPO08sTzs7O087OztVOzs2QixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPO3VDLE87Ozs7TyxPO2U7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztVOztJO0c7O0k7STs7OzZCLFc7Ozs7USxzQztROzs7Ozs7Szs7Rzs7O0ksZ0I7OztJLFk7Ozs7Ozs7Tzs7O1E7OztPOzs7OztLLFk7SztLO0k7STtJO0c7O0k7O3lCLFc7O3lCOzt1RDs7eUI7OzJCLFc7OzJCLFc7OztPLFc7O0c7O0k7STtHOztJLFc7SSxPO0c7O0ksbUIsTztJLE87Rzs7STtLLE07SyxROzs7Rzs7STtLLE07SyxRO0ssTztJLE87O0c7O0ksSSxNLG1DOzs7Ozs7bUI7OztPOzs7USxPOzZCOzs7cUM7O087OztRLE87K0I7Ozt3Qzs7O3NDOztxQzs7Tzs7USxPO21COzs7c0M7O3FDOzs7Ozs7Vzs7O2M7YyxPO2E7Ozs7Ozs7O1c7OztjO2MsTzthOzs7O3dDOzs7O0ksTztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOzs7SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztLLFc7Szs7UTs7O1c7Ozs7WSxPO1ksTztXLFc7VTs7Szs7UTs7eUI7O0ksTzs7Ozs7Ozs7Ozs7O0c7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7Rzs7STtLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztJLE87Ozs7Ozs7OztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOzs7Ozs7OztHOztJO0ssUTtLO0ssTztLLE87SztLO0s7O1E7O3lCOztJLE87O0c7O0k7SyxRO0ssTztJLE87Rzs7STtLLE07SyxRO0s7O0s7Ozs7TSxPO00sTzs7OztJO0ksTzs7Rzs7STtLLE07SyxRO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7OztZLE87OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yyx3Qjs7Ozs7Ozs7Ozs7VyxHOzs7O3NCOzs7Ozs7O1M7O1UsTztxQjs7OztTO1U7Ozs7VzthOzs7Z0I7Z0IsVztlOzsrQjs7O1M7O1c7WSxPO1ksTzt1Qjs7MkM7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Uzs7O1UsTzs0Qjs7Ozs7Ozs7YTs7O2dCOzs7aUIsTztnQjtlOzs7OztTOztVLE87cUI7Ozt1Qzs7b0M7O3lDOzs7Uzs7O1UsTztxQjs7OztJLE87Rzs7STs7OztLLE87SyxPO0ssTztJLFc7OztJO0ssTTtLLFE7SyxPO0ssTztJLE87O0c7O0k7SyxNO0ssUTtLOzs7Ozs7Ozs7O1E7Ozs7UyxPO1MsTzs4Qjs7Ozs7Ozs7dUI7O1M7Ozs7O1UsTztVLFU7Ozs7Ozs7Ozs7OEI7OztjOzs7ZSxPO2UsTzs4Qjs7Ozs7Ozs7Ozs7OztRO1M7Vzs7O2M7Ozs7ZTs7O2dCOzs7YztlLFE7ZSxPO2UsZ0I7ZTtpQjs7K0IseUI7O2U7YzthOzs7OztROzs7UztXOzs7YztjLFc7O2Msc0I7YTs7O29COzs7UTs7O1MsTztTLE87b0I7OztROzs7UyxPO1MsTztvQjs7O1E7O1MsTztvQjs7OztROztVO1csTztXLE87c0I7O3dDOzs7Ozs7OztROzs7UyxPOzJCOzs7UTs7O1M7Vzs7O2M7aUM7O2Msb0I7YTs7O1MsTzs7OztZOzs7UTs7O1M7cUI7OztROzs7O1MsTztTO3FCOzs7UTs7UyxPO3FCOzs7UTs7OztTLE87UyxPO1MsTztxQjs7O1E7OztTLE87cUI7OztROzs7UyxPO3FCOzs7UTs7Ozs7O1MsTztTLE87MkI7Ozs7UTs7OzttQjs7O1c7O1ksTzttQjs7O1c7O1ksTzttQjs7d0I7Ozs7O1E7OztTLE87Ozs7UTs7O1MsTzs7Ozs7Ozs7WTs7O2U7OztnQixPO2U7Yzs7OztROzs7O1MsTzs2Qjs7O1E7OztTLE87cUI7OzswQzs7OzJDOzs7dUM7Ozs7cUI7OztROzs7O1M7UztrQzs7O1MsUTtTLE87UyxTO1MsUzs7OztROztTO1MsTzs7Ozs7cUI7OztROzs7UyxPO3FCOztJLFc7SSxPOzs7Yzs7OztlLFE7ZSxVO2M7Ozs7b0M7OztpQjs7O2tCLE87a0IsTzs7K0I7OztpQjs7a0IsTztvQzs7Ozs7OEI7O2MsTzs7Ozs7Rzs7STs7SyxXO0ssVztLO0k7Rzs7STs7Tzs7O1U7VSxjO1M7O0k7Rzs7STtLLE07SyxRO0s7O0ssTztLLE87SSxPOztHOztJLGtCLE87SSxPO0c7O0ksSSxNLG1DOzs7b0M7O087OztRLE87NkI7OztPOztRLE87bUI7Ozt3Qzs7O3NDOztxQzs7cUM7O087O1EsTzttQjs7O3NDOzt3Qzs7O3NDOzt3Qzs7O087O1EsTztvQjs7O087O1EsTztvQjs7OztJLE87Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7STtLLE07SyxRO0s7SztJLE87O0c7O0k7SyxNO0ssUTtLLE87SSxPO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7STtLLE07SyxRO0ssTztLO0s7O1E7O3lCOztJLE87Ozs7Ozs7Ozs7Rzs7STtJLHNCO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZOztJLGlCOzs7STtLLE07SyxRO0s7Ozs7O3FDOztPOzs7USxPOzs7O087OztRLE87USxPO21COzs7d0M7Ozs7SSxPO0c7OztJOztPLG9CLE07Tzs7TyxvQjtPOztPLG1CLFE7Tzs7TyxzQixNO087O08sc0I7Tzs7TyxxQixRO087Ozs7STtLLE07SyxRO0s7OztLLE87Ozs7Ozs7cUM7O087OztRLE07Ozs7Tzs7O1EsTTttQjs7OzBDOzs7OztRLE07Tzs7USxNO21COzs4Qzs7SSxPO0c7O0k7SyxNO0ssUTtLOzs7TyxNOzt3Qzs7O087Ozs7USxNOzZCOzs7Tzs7O1E7VTs7O2E7YSxXOzthLHNCO1k7OzttQjs7O087Ozs7USxNO1EsTTs2Qjs7Ozs7OztTOzs7VSxNO1UsTTs7Ozs7O1MsTTtROztTLE07bUI7Ozs7O087OztRLE07bUI7O0ksTztHOztJO0ssTTtLLFE7Szs7O087OztRLE07USxNOzs7O3NDOztPOzs7O1EsTTswQjs7O087OztRLE07bUI7O0ksTztHOztJOztLLE07SyxNO0ksVztHOztJO0ssTTtLLFE7Szs7O3FDOztPOzs7Ozs7USxNO3VCOzs7Tzs7Ozs7O1EsTTs7a0I7OztPOzs7O1EsTTt1Qjs7OztJLE87Rzs7STtLLE07SyxRO0s7Ozs7Ozs7O1E7Ozs7UyxNOzJCOzs7UTs7UyxNO29COzs7UTs7O1MsTTtTLE07Ozs7UTs7O1MsTTtvQjs7O1E7OztTLE07UyxNOzs7Ozs7O29COzs7UTs7OztTLE07b0I7OztROzs7UztXOzt5QixPLGtDOzs0Qjs7O3dDOzs7Ozs7Z0M7O0ksTztHOztJOztLLE07SyxNOzs7STs7Ozs7TSxtQzs7OztLLFc7O0c7O0k7Ozs7SyxNO0ssUTtJO0s7Ozs7TSxNOzhCOztxQztJLE87OztJOzs7O0ssTTtLLFE7STs7Ozt3Qjs7dUM7SSxPOzs7STs7Ozs7Ozs7Ozs7Ozs7O3lDOzs7OztLO3lEO0s7O0k7Rzs7STtLLE07SyxRO0s7OztPOzs7O1E7VTs7d0IsTyxrQzs7d0I7Ozs7Ozs7cUM7Ozs7O3dDOzs7Ozs7Ozt3Qzs7UTs7O1M7O3lDOzs7O087OztRLE07dUI7OztPOztRO21COzs7O0ksTztHOzZCLFM7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7SSxPOzs7O0ksTzs7OztJLE87Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCLG9COztJOztPOztPOztPO2U7O0c7aUMsMEI7O0k7SSxXO0k7SyxVO0ssTztLO087O2dCOztJO0c7O0ksSSxROzs7NEI7OztJO0c7O0k7Ozs7VztXOzs7OzRCOzs7STtHOztJOztPOztPOztPOztPOztPOztPOztPO2U7O0c7aUMsVyxpQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7TyxpQztPOztPLHFDO087O087OztRLE87UTtPOztPLHFDO087O08scUM7Tzs7TyxxQztPOztPLHFDO087O0c7O0k7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJLE87Ozs7Ozs7MkI7OzhCLE87O2U7ZTs7Ozs7Rzs7cUIsTyx5QztJLDBCO0k7OztPLE87OztpQjs7OztpQjs7Ozs7TyxPOztPOzs7O1E7O08sTzs7O08sTzs7Rzs7O0ksTzs7O0k7Ozs7SyxPO0ksTzs7OztJLFc7SSxTO0k7SyxPO0ssTztLLE87SSxPO0c7O0k7Ozs7USxnQjtvQixXOzs7OztRLFc7O1Esa0M7Ozs7O1Esa0I7O1MsVzs7OztHOztJLE87K0MscUI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7b0I7SSxvQixTO0k7Rzs7Ozs7Ozs7OztVO1csTztXO3dCOzs7OztTOztVLE87VSxPO1UsTztTLEcsaUM7UztVO1U7Ozs7Ozs7Uzs7Ozs7WTs7YTs7OzRCOztZOztZOzs7Ozs7OztZOzs7YTs7Ozs7O2EsVTs7Ozs7Ozs7O2E7YyxXOzs7YyxjOzs7WTs7Ozs7Ozs7Ozs7Ozs7OztxQjtlOzs7Ozs7Ozs7OztvQjtjOzs7Ozs7OztlOztnQjs7O2dCOzs7Z0I7Ozs7ZTs7Ozs7O2E7O1k7YTs7O2E7OzthOzs7O1k7Ozs7Ozs7O1UsRyxnQztVLFc7VTs7O1c7WSxPO1ksTztZLE87bUI7VTs7UyxJLFc7Ozs7Ozs7WTs7Ozs7UztzRDtTOztVOzs7Ozs7Ozs7Ozs7d0I7O1M7OztPOztRLE87USxPO1E7OzJCO087UTtRO087OztLO007TTtNO0s7Ozs7STs7TTs7Ozs7TyxTO087Ozs7OztNO087OztNOzs7c0I7STtHOztJOzs7TSxXO0ssb0IsTztLLFc7O2dCO0k7O0ssUTtLLE87SSxXO0c7OztJOztLLDRDOztJLGE7STtHOztJO0ssTztLLFU7O087OztXOzs7WTs7VztXO1U7Ozs7Ozs7Ozs7OztLOzs7O1E7Ozs7O007Tzs7O08sTTs7Ozs7Ozs7STtLO087OztVOzs7a0I7VztVO1M7Ozs7Ozs7Ozs7O0s7OztNOzs7Ozs7O08sRzs7Ozs7WTs7Ozs7Ozs7Ozs7SyxJLFU7Ozs7Ozs7Ozs7Szs7d0I7O3dCOzt3Qjs7OztLOzs7OztJO0ssTztLOzs7Ozs7Ozs7OztLOzs7Ozs7O2tCOzs7TTs7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7TTtNOzs7STs7Ozs7SSxhO0k7Ozs7OztLOzs7Ozs7O1M7UywwQjtTLFU7UztVO1csTztXO2lCOzs7Ozs7Ozs7UztVO1k7OzhCLHFCOztVOzs7Ozs7UztVLGM7Ozs7Ozs7Ozs7Uzs7OztVOzs7VTtVLGM7Ozs7Ozs7Ozs7Uzs7OztVO1UsTztVO1k7Ozs7Ozs7UztVO1U7WTs7Ozs7Ozs7OztTOzs7Ozs7VSxPO1UsZTtVLE87Uzs7Ozs7Ozs7UztTLDBCO1M7Ozs7Ozs7Ozs7Ozs7Ozs7VTtXLFk7O2E7Ozs7VTs7VzthO1c7Ozs7Ozs7OzthLE07Ozs7ZTs7NkIsdUI7Ozs7Ozs7Ozs7OztTO1U7Ozs7Ozs7Ozs7Uzs7OztVLE87Uzs7Ozs7Ozs7UztVLFU7VTs7Ozs7Ozs7Ozs7Ozs7VTs7Vzs7OztTOzs7O1M7VTtZO1U7Ozs7Ozs7Ozs7Uzs7OztVLFU7VSxXOzs7VTtZO1U7Ozs7Ozs7Ozs7Uzs7OztVLFE7VSxTOztVO1U7WTs7Ozs7Ozs7SyxNOzs7STtLOztNOzs7O0k7Ozs7STtLOzs7Ozs7Ozs7Ozs7O0ssTztLLE87OztJO1k7Ozs7Ozs7STtJOzs7SztNOztJOzs7Ozs7Tzs7O0s7Ozs7Ozs7OztLOzs7OzBDOztJO0c7O0k7STs7Ozs7Ozs7SyxzQjtLOztHO0c7STtJOztJO0s7Szs7O0ksTzthLDRDOztHOztJO3VCOztJO0c7Ozs7Ozs7Ozs7O0k7Ozs7SztpQixNOztLOzs7TTtNLE07Szs7STtLLFE7SyxTO0s7SSxNOztHOzs7O0k7O0s7OztTOzs7Ozs7O3lDO0ksd0I7SSxNO0c7RyxJOztJLFk7O0k7Rzs7STs7Tzs7Tzs7Tzs7O1E7UTs7O1M7OztVLE87VSxPO1MsTzs7OzBCO087ZTs7Rzs7SSw4Qix5Qjs7Rzs7STtJO0s7O007OztNOztPLE87Ozs7Ozs7a0I7O0k7Rzs7STtJOzs7Ozs7O1U7Ozs7VyxRO1c7Ozs7VTs7Ozs7UTs7OztTOzs7Ozs7Ozs7VTs7O1csTTtXLE07VTs7OztLOztHOzs7STtLO007O0s7STtJOztLLFM7SyxTO0s7SztJLE87O0c7STs7Ozs7OztJOztPOztPOztPOzs7UTtRO3FDLFk7Ozs7Uzs7O1UsTTtVLE07UyxHLHdDOztrQjs7TztlOztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7O1k7Yzs7O2lCO2tCLFE7a0IsUTtpQixPO2dCOztZLFE7Vzs7Ozs7O1M7OztVLFE7VSxRO1U7VSxNO1UsTTtTOzs7Ozs7Ozs7OztLOztJO0ssTTtLLE07STtHOztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7O0s7O0k7O0ssUztLLFc7SztLO0ksTztHOztJOzs7Szs7O0ksTTtHOztJOzZDOztJLE07Rzs7STs7OzZDOztJLE07Rzs7STs7dUI7OztLLE07O0ksTTs7Rzs7O0k7Ozs7O007OztLO00sTTs7O2dEOztJLE07Rzs7STs7SyxNOzs7STtHOztJO3VCOztJLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7TTs7O087Ozs7cUI7OztRLE07Tzs7O1EsbUI7Ozs7OztJLE07Rzs7SSxZLE87Ozs7O08sTzs7OztPLE87Ozs7Ozs7OztPLG9DO08sTzs7O08sc0M7TyxPOzs7OztJO0ssTztJOzs7STs7OztRLGdDO1EsTzs7O1Esb0M7USxPOzs7SSxPOzs7SSxZOztnQjs7SSxPO0c7O0ksYztJO007eUMsOEI7SztNO00sTztLLE87O0ksVztJLE87Rzs7SSxjO0k7TTt5Qyw4QjtLO007TSxPO0ssTzs7SSxXO0ksTztHOztJLDhCOzs7TyxzQzs7Ozs7Ozs7OzsyQjs7Ozs7OztPOzs7UTs7YTs7Ozs7ZSxNOztHOztJOzs7OzttQjs7O007OztPOztZOzs7Ozs7SyxvQjs7Ozs7O0k7Ozs7O21CLE07O0ssRztvQjs7Ozs7Ozs7OztJO0ksTztHOztJOzs7SyxPOztLLE87SSxPOzs7O0k7SztpQixNOzs7Ozs7Ozs7Szs7Ozs7VTtXLFE7VztXO1c7YTs7Ozs7Ozs7OztVOzs7O1U7OztXOztXLE07VTs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7VyxxQzs7Ozs7Ozs7OztXLG9DOzs7Ozs7Ozs7UyxlLFU7dUIsTTs7Ozs7TSxNOzs7Ozs0QixPOzs7O0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPOztjO0c7OztJO0k7OztJLFc7SSxPO0c7O0ksTztHO2lDLG1COztJOzs7OztLOztJO0c7O0k7Z0I7O0k7Rzs7SSxxQyxPOztJLE87OztJO2dCLE87O0ksK0M7STs7OztLO0ksTztHOztJO2dCLE87O0k7Rzs7STtnQixPOzs7Szs7O007TSxPO0ssTzs7Ozs7O00sTzs7STtHOztJOztLOztNOztNO0ssTzs7OztPO087O1E7O087Ozs7UTtPLE87O08sTztlLE87O0c7O0k7Ozs7UTtROztRLE87Z0IsTzs7O0kscUIsTyxnQztHOztJO3dDO0k7Rzs7O0s7OztNLE87TSxNO007TSxPO0ssTzs7Ozs7Ozs7O0k7SztPLDJDO0ssUyxXO0ksTztHOzs7Szs7UTs7Ozs7SztJO0k7Rzs7STtLLGE7Ozs7TTs7Ozs7OzthOzs7OztLOzttQjs7bUI7OztLO0k7O0s7Szs7Ozs7Ozs7O1E7Ozs7Uzs7OztROzs7O1M7OztLO0k7SSxPO0c7O0k7SSxPO0c7O0k7OztRLE87O1EsTTs7SSxPO0c7O0k7OztLO0s7Tzs7Ozt5QixtRDs7SyxnQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Szs7O007UTs7OzswQixPLDRDO0s7YTs7Ozs7aUI7OztLOztNOzs7O0k7O0s7SSxPOzs4Qix5Qzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0s7Ozs7Ozs7bUI7TTtPO08sSTs7Ozs7Ozs7O0k7YztzQztHOztJLFE7STtLLE87SztPOzs7MEIsTyxzQjtJLE87Rzs7STs7Tzs7UTtROztRLE87USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Tzs7UTtROztRO1U7Ozs7OztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOztRO1E7O1E7VTs7Ozs7O1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O087O1E7O1EsTztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7O1EsSztRLEs7UTtRLE87TyxPOzs7Ozs7Ozs7OztHOztJO0ssUTs7OztLLE87SyxPO0ksTzs7Ozs7Ozs7Yzs7O0c7O0k7OztLLE87O0ssTztJLE87Ozs7STs7O0ssTzs7SyxPO0ksTzs7OztJOzs7Ozs7OztHOztJO0ssTztJLGlCLE87SSxXO0c7OztJOzs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7OztLO0s7STtLLE87Ozs7STs7Rzs7STs7Ozs7STs7TyxxQjttQjs7TyxXOzs7Tzs7Ozs7UTs7O087USxPOzs7O087OztPOztRLE87USxVO087OztPO1EsTzs7OztPOzs7Ozs7STs7Ozs7Ozs7OztlOztLLGU7O0s7STtJO0s7SztLLE87SztLOztJLE87OztJLE87Ozs7O2M7O2U7ZTtnQixVOzs7Z0I7O2dCLE87Z0IsTztnQixPO2UsTzs7O2UsTTs7Yzs7O2lCOztpQjs7a0I7Ozs7O3VCOzs7d0IsTzs7d0IsTzt1QixPOzs7O2tCO2tCOzs7OztxQixNOzs7b0I7Ozs7bUQ7Ozs7b0I7O3FCLGU7b0I7Ozs7Ozs7O29COztxQixlO29COzs7Ozs7OztvQjs7Ozs7Ozs7OztpQjs7Ozs7Ozs7YTtHOztJOztPLG9CO08sTzs7NkI7O08sZ0MsaUI7TyxPOzs7Ozs7a0I7a0I7O087O1E7UTtRO08sTzs7Ozs7K0I7O0c7O0k7O08sc0I7TyxPOzs2Qjs7TyxnQzs7Ozs7O1U7O1c7MEI7Ozs7MEM7O087TyxPOzs7Z0Q7Tzs7UTtRO1E7TyxPOzs7OzsrQjs7Rzs7O0k7SSxPOzs7OztjOztpQjs7a0I7b0I7Ozs7Ozs7Ozs7Ozs7OztvQjs7cUI7cUI7Ozs7OEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOzs7a0I7NkI7OztpQixtQjs7a0IsTTs7Ozs2Qjs7YyxhOzJCLHNCOztlLE87Ozt5QyxPLHNCOzs7YztjO2E7OztJLE87OztjO2U7O2dCO2dCLFc7ZSxXOzs4Qzs7Ozs7OztjO3NCOzs7Ozt5Qjs7O29DO3lCOzs7Ozs7NkIsaUI7NkIsTzs7Ozs0Qix1Qzs7OztxQzs0Qjs2Qjs2Qjs2QjsrQjs7Ozs7Z0Q7NEIsTzs7Ozt5Qjs7NEI7OzhDLGlDOzt5QjswQjs7OzhCOytCLE87OytCOztnQyxPOytCLE87OzhCOzsrQixPOzhCLE87OzZCOzJCOzs4QixlOzs4Qjs2QjsyQjsyQjsyQjsyQixNOzBCLE87Ozs7Ozs7Ozs7MEI7OzJCLE87MEIsTzs7O3lCLE87d0I7YTtHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0k7SSxPO0c7RztJO0k7STs7O0k7TTs7d0Isa0IseUI7OztJLE07RztHO0k7Ozs7Ozs7STs7O0c7O0k7Rzs7STtLLE07O0s7O0c7O0ksNEIsSztJLE87OztjOzs7YTs7Rzs7SSxPOzs7YyxxQjthOztHOztJLE87OztjLFk7OztrQjtnQjtnQjs7O2M7YTs7O0c7O0k7TTs7d0Isa0IsTyw0Qjs7STs7TztTOzs7WTs7O2EsSTthLFE7OztnQjtjO2M7OztZLE07O1c7O0k7Szs7TTtRLDJDO0s7O0ksTztHOztJO0k7TTs7O1MsWTs7O1UsTzs7UyxNO1E7O0k7Rzs7O0k7Ozs7OztJO0s7TSxJO007O1MsTztRO1k7Ozs7Ozs7SyxXO0ssTzs7Rzs7STtLLE07O0s7O0c7O0ksZTtJO0ssTTs7Ozs7SSxTO0k7STtHOztJLGlEO0k7OztPOzs7OztPO1EsSSxJLDZCLE87USxJLG1DLEk7b0I7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCO1U7VztZOztlOzs2QjtjO1k7YztXLE07Ozs7O3dCOzs7VSxTOztVOzs7Ozs7TztNOzs7STtLLE87OztlO2UsSSxXLG9DOzs7Ozs7O2dCLE07OztjO29COztHO0k7OztRLE07Tzs7STs7O1EsTTtPOztJOzs7USxNO087Ozs7aUMscUM7O0ksUTs7STtLLEksSTs7Ozs7Ozs7OztLLFM7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtLO0sscUI7O0c7O0ksTzs7Ozs7YyxtQjs7ZTtlOzs7ZSxNOzs7ZSxnQjtlLE07OztjO2UsTTtjO2M7YzthO0c7RztJOzs7USxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7OztjO2E7Ozs7O0s7STtJOzs7O00sTTtLO0s7Ozs7OztRLGdCO1EsTTs7TyxJLEk7Ozs7UTtROzs7Tzs7Tzs7OztRO1E7UTtRO1U7YTs7USxPO087OztPLE87USxNO087UTtVOzswQjs7UTs7VywyQyxlO1EsTztPOztPOzs7USxVOzs7OztROzs7OzthLDRDLFM7Ozs7OztPO1U7USxXO1EsTTs7O087UTtVOzswQjs7USxTO1E7Ozs7O2dCOzs7O08sVztPOzs7VTtVO1csVztXOzs7OztXLGtCLFE7VyxNOzs7Uzs7O087UTtVLDJDLGU7USxTO087O087OztRLFk7OztXO1ksVztZLEs7YSxJOzs7O2UsTTs7OztZOzs7OzthLE87OztVOzs7Ozs7Ozs7WTthOztjO2MsUTs7Ozs7O2E7YyxJO2MsVTs7Ozs7O2tCLE07Ozs7O2lCLHFCLFU7Ozs7Ozs7a0IsRzttQixNOzs7a0I7bUIsYzs7Ozs7O29CLE07OzttQjs7Ozs7O2EsTTs7O1k7OzthO2U7Ozs7O2tCOzs7OzsyQjtpQjthO1k7OztXOztRLGdCO1E7VTs7K0IsMEI7OztRLG1DO1E7VTs7O2E7YSxPO1k7OztPLG1DOztPOzs7USxVOzs7UTtRO1U7USxXO1EsTTs7O087UTtVOzswQjs7USxPO1EsVTs7O1EsTztPOzs7VTtVLEksVyx3Qzs7OztXLGtCLFE7VyxNOzs7Uzs7O087UTtVLDJDLGU7USxPO1EsVTs7a0M7UTtROztPLE07OztPO1E7UztTO1EsSTs7OztTLGtCLFE7UyxNOzs7Ozs7OztRO1M7Vzs7O2M7YztjO2MsSTs7Ozs7ZSxrQixRO2UsTTs7O2M7YTs7YztjLE87YTs7O1MsTTtTLEs7UyxVOzs7Ozs7YTs7Ozs7O2E7Ozs7Ozs7Tzs7Tzs7OztRO1E7O1c7WTtZO2tCO1csTztVO1EsVTs7O1csUTtXO1k7YSxROzs7WTthLE07O1ksSSxvQjtZLEc7OzthLEksSSxPOzs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTtRO1E7UTtVOzs7YTs7YztjOzs7O2U7O2dCO2dCO2dCLFU7Ozs7Ozs7Ozs7OztlOzZCOztlO2dCLE87Z0IsVTs7Ozs7O29CLE07Ozs7OzttQixHO29CLFM7b0I7Ozt1Qjs7O3dCOzt5QixLOzBCLFk7O3FEOzs7MEIsTTs7Ozs7O3VCO3NCOzs7Ozs7O2UsTTs7Ozs7Yzs7aUI7Ozs7O29CLE87Ozs4Qjs7O21COzs7ZTs7Z0IsSztpQjtrQjtvQjtxRCxjO3NCOzs7OzsyQjs7O2dCLE07OztvQzs7d0I7O2M7OzthOzs7UTtVOztrQyxpQjs7O1EsVztPOztROzs7VyxlOztZLE07O1c7VTs7O087Ozs7VyxPOztVO1E7UTtVO2E7OztPLEksNEIsTztPOztPOzs7USxTLHdDLFk7UTtVOzs7NkIsb0IsNEI7O2E7K0IsOEM7YTs7MEI7YTs7Z0I7O2tDLG1DOzthO1k7OztRO1E7UTtVOzt3QixPLCtCOztRLE87UTtPO087O087Ozs7UTtRO1U7OzthO2EsRztjLE07O2EsTztZOztRLE07UTs7NEIsTyx3QztRO1U7OzthO2E7WTs7UTs7O2E7O1EsUztROzs7Vzs7O2M7YzthOztRLFE7Tzs7Tzs7O1EsVTs7O1E7Tzs7O08sTTtrQzs7OztJLFc7SSxXO0ksWTs7Szs7TSxVOzs7OztNLE87SyxXO0s7TTtROzs7Vyx3QixROzs7WSxjOztXO1U7O007O1M7SztLLE87O0ksTztHOzJDO0c7O0k7SSxPO0c7O0k7STs7SztJO0k7STtHOztJOztJO0s7Tzs7OztVO1U7VTtTO0s7STtJOzs7O0ssTztLLE87STtHOztJO0k7SztPOzs7MEIsb0IsNEI7O1U7VTtVO1U7Uzs7O0ksZ0I7Rzs7STs7Szs7O00sUyx3QyxZO007UTs7OzJCLG9CLDRCOztXO1c7WTtZO1c7VTs7O0s7Szs7SSxPOzs7O2M7YzthO0c7O0ksTztHOztJOztlO2U7Ozs7TyxPOzs7Ozs7OztpQixPO2dCOztPLGtCLE07TyxPOztPOzs7O1EsTTtPLE87OztPLHVCLE07TyxPOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPLE87Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7Tzs7USxNOzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOzs7UTs7VyxPO1U7TyxPOzs7OztpQjtpQjtrQixPO2tCLE87aUIsTzs7Ozs7Ozs7OztnQjs7TyxxQixPO087TyxZOzs7OztTLE87Ozs7bUIsVztrQjs7O087O087OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOzs7USxPO087TyxHO1E7ZTtROztRLFc7UTs7TyxPOztPLG9CLE87TyxPOzs7TyxPOzs7OztpQjtrQixPO2tCLE87aUIsTzs7Ozs7Ozs7OztnQjs7O08sTzs7Ozs7aUIsWSxPO2lCOztrQixPO2lCLE87Z0I7OztPLHFCLE87TyxPOzs7Rzs7O007O087ZTs7OztvQzs7O3FDOztNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkIsa0M7O0k7O3FCLE87O3VCLE87O3FCLE87O3FCLE87O3VCLE87O3VCLE87K0IsTzs7Rzs7STs7Szs7O007O0s7TSxPO0s7O1EsTzs7USxPOztRLE87Ozs7O0ssTzs7O08sb0IsTztPLE87OztPLE87OztPLG9CO08sTzs7O08sTzs7OztxQzs7Ozs7OztRLE87OztPOzs7O1E7Ozs7O1MsTzs7Ozs7Ozs7Ozs7USxPOzs7OztzQzs7OztRLE87Ozs7O3NDOztPO1E7VTs7d0IsbUM7O1EsTztPLE87Ozs7OztxQzs7OztxQixPOztPLE87O087O1E7VTs7NEIsK0M7O08sbUIsTzs7Ozs7O1csZTs7cUI7O1U7TyxPOzs7Ozs7Ozs7TyxPOzs7O3FDOzs7O08sTzs7O08sTzs7O08sTztlLE87O0c7O0k7Ozs7Ozs7TztRLE87Ozs7STtHOztJOzs7Ozs7O087USxPOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SyxPOztJO0c7O0k7OztLLE87OztJO0c7O0ksWTs7bUI7O0ksTzs7Ozs7OztnQzs7OztJLFk7Ozs7SyxPOzs7Ozs7Ozs7OztJLE87Ozs7SSxPO0c7O0k7STs7O08sTztNOztJLE87Rzs7STtXO0ksTztHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7STs7c0IsaUQ7O0ksTyw0QyxhO0c7O0k7SyxNOztJO0c7OztJLFc7O0c7STtJO0k7STs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0k7Ozs7O087O08sd0I7Ozs7O0s7O0c7O0k7Ozs7Ozs7Ozs7MkI7Ozs7Tzs7UTtVOzs0QixvQixXOztRO1U7OzRCLG9CLFc7Ozs7OzswQjs7Ozs7Ozs7Ozs7Ozs7OztVO1csTTtXLFE7bUY7VSxNO1M7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozt5Qjs7Tzs7eUIsTzs7K0I7aUM7O0c7O3NCLHlDO0k7Ozs7OztROztTOzs7Ozs7OztROztTO1c7OztjO2M7YTs7Ozs7UTs7OztTOzs7OztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxrQjs7Ozs7Ozs7SSxtQjs7O0k7RztHOzs7Ozs7O0ksTTtJO21COztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7Ozs7Ozs7WTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7SztJO0k7Szs7UTs7O1c7a0Q7VztVOzs7Ozs0Qjs7O0ksTzs7NEI7O0c7O0ksTzs7NkIsd0IsWTs7Rzs7SSxXO2lCO0c7O0k7OztLOztJO0c7O0k7Ozs7O1EsTzs7Ozs7O1EsZSxPO1EsTywyQjs7OztJLE87Rzs7STtJOzs7Ozs7USxJLHVCOzs7Ozs7USxJLG9COzs7Ozs7USxJLG9COzs7Ozs7OztPLEksdUI7Ozs7Ozs7OztPLFc7TyxXOztNOzs7TztPOzs7Ozs7Rzs7O0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7OztpQjs7O2tCLE87aUI7Ozs7Ozs7Ozs7Ozs7O2lCLG1DO2lCLFc7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQjs7a0I7OztpQjs7Ozs7Ozs7Ozs7Ozs7aUI7O2tCLE87a0IsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1MsZ0M7UyxTOzs7Ozs7USxrQztRLFM7Ozs7O007O0k7MEI7O0s7OztPLGtCLE87O087OzttQjtLO0k7O0s7Szs7O1E7Ozs7O1M7USxXOzs7Ozs7c0I7TTs7STtJOzswQiwyQztHOzs7O0k7Ozs7Ozs7OztJO0s7O087O1U7SyxPO0ssUTt5RTtJLE07Rzs7STs7Ozs7Ozs7Ozs7O1csTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7OztxRDs7Ozs7Ozs7Ozs7O2lCOzs7OEM7O0k7Rzs7STtrRDtpRDtJLE87Rzs7STs7Ozs7Ozs7OztrQyxPOztrQyxPOzs7O3lDLE87O087O007Ozs7OztROztROztTLE07UztRLE87OztrQjtrQjttQjs7c0I7Ozt5Qjs7d0I7Ozs7Ozs7OztrQjtpQjs7O0k7Rzs7SSxZLGtDOzs7Ozs7O2tCO00sNEM7Ozs7Ozs7VTs7VztXO2E7OztnQixPOztzQywrQjs7OztlOzs7Vzs7Ozs7O2tCOztNOzs7STtHOztJLFM7WSxPO0k7Ozs7Szs7O0k7Rzs7STs7OztROztTOzs7UTs7UTs7OztTOzs7UTs7Ozs7VSxNOzs7OztROztROzs7Uzs7Ozs7UTs7O21COzs7c0I7c0I7O2dDOztzQjtxQjs7Ozs7Ozs7UTs7Uzs7O1M7UTs7Z0IsTzs7UTs7Z0IsTzs7STtHOzJCLDRCO3lDLDRCOzs7SztLO007TyxPO08sTzs7Tzs7OztROzs7OztNLE87O2U7Ozs7OztJO0k7Rzs7SSxZOzs7SyxNOztJLDhCLDBCO0k7Rzs7O0s7SztvQjs7Ozs7Ozs7TTtPO087ZTs7Ozs7O0k7STtHOzs7SyxVO0s7STs7SyxZOztLOzs7OztLLE87OztlO2U7Yzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7OztNO0s7TTs7Ozs7Szs7OztJO0ssWTtLO087SztPO1M7OztZO1ksa0I7Vzs7STtHO0c7STs7STtNOzs7UyxtQjtTLHVDOztVO1csTTs7eUIsVzs7VTtTOztxQixXOztTO1E7Ozs7O0ksVTtJLHVCOzs7Ozs7O3VEOztTLE87Ozt5Qjs7O1M7O1U7WTs7O2Usa0I7bUY7ZSxNO2M7O1UsTTtTLGdCO1UsVztVLE87OztvQjs7O3FCLFE7Ozs7cUIsTzs7b0I7bUI7OztTLFc7UyxXO1MsVztTLE87OzttQjs7O2lDOzs7NkI7a0I7Ozs7O007OztNLE07O0k7Rzs7STs7Ozs7O0ssTztJO2dCOzs7Ozs7Rzs7STtLLE07O21CO0ksbUI7STtHOztJLFk7O0s7TTtPLE87TyxVOzs7Tzs7cUIsbUI7Ozs7O007Ozs7OztNLGM7Ozs7VTs7VzthOzs7Z0IsVztlOztVOzs7VTtnQjs7O2EseUMsYTs7VTtVLE87O2tDOzs7TTs7O0k7Rzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0s7O0ssUTs7Ozs7O08scUIsVTs7cUI7Ozs7bUI7O0k7SyxpQjtLO087OztVLFc7Uzs7SztPOzt5Qiw4Qjs7OztJLE87Rzs7STs7O21EO0s7TTs7Ozs7Ozs7TTtROzs7Vzs2RTtXLE87VTs7TTtNLFM7SyxnQixNO0s7Yzs7K0I7OztJO0c7O0k7SztPOzt5QixrQixPLHVCOzs7STtLLEs7O00sZ0I7O0ssVTs7O0c7O0k7STs7Ozs7Ozs7Ozs7OztVLG9COzs7Ozs7VTttQjs7cUMsa0IsUzs7Ozs7VSxrQztVLFM7Ozs7Ozs7O087Ozs7O0s7O0c7O0k7STttQjtLLHNDO0ssVzs7O0c7O0k7STtpQjtnQjtLOzs7TSxPO00sTzs7TTtNLHdDO007TztPOzs7TTtPLE87OztpQjs7O2tCOzRCO2lCO2lCLHdCO2dCOzs7Ozs7OztPOzs7O1E7TyxTO087Ozs7OztRLG9COztPO1E7UTtRLFU7OztPLGlEO087UTtRO1EsTztROzs7Ozs7Rzs7SSxVO2E7STs7O0ssTztLLE87O0s7Syx3QztLO007OztTO1MsTztnRCxrQjtRO007Ozs7Ozs7O1M7O1k7OztlO2UscUI7ZTtnQjtnQjs7eUI7Z0IsTTtlLE87O3VDOztjOztTLE87UTtLLDJCOzs7TTtPO087TSxPOztLOzs7O0s7Ozs7TTtNO0ssTzs7OztLLG9COztJO0s7SyxVOzs7SztJLGlEO0k7SztLO0ssTztLOzs7SyxPO0ksTzs7NEI7O0c7O0k7STt3QyxVO0s7OztNLE87TSxPOztNOzs7VTs7OztZOzs7VTtTOztNOzs7OztNOzs7O087TSxTO007Ozs7TTtPO08sVTs7O087TyxPO087Ozs7O0c7O0k7SyxXO0ssTzs7O2U7ZTtJOzs7SyxPO0ksTzthOzs7Z0I7aUI7O2tCO2lCLE87O3dDLHFCOzs7Z0I7OztnQixPOzs7MEIsVzswQixPO3lCOztlOztHOztJO0ksd0M7STtLO0s7OztLOzs7O1M7Ozs7VztZLE07Vyx1Qjs7O2EsTTs7Ozs7WTthO29COzs7Ozs7O1UsVzs7UztTOzs7Vyx1Qjs7Ozs7O2dCO2lCOzs7aUI7Ozt5Qjs7Ozs7O2U7O2dCO2UsRzs7Ozs7Ozs7Ozt3Qjs7OEQ7O3dCLE07O3VCO21DLG1COztzQzs7Ozs7a0I7bUI7cUI7Ozt3QixrQjs7OzhEOzt3QixNOzt1Qjs7bUIsTzs7Ozs7Ozs7eUM7a0I7Ozs7Ozs7bUI7O29COztzQixNO3FCLFM7cUIsSzs7OztvQixJOzs7Ozs7Ozs7Ozs7Ozs7Ozt3Qjs7OzswQixPOzs7d0IsTTs7dUI7O3dCO3dCO29DO3VCOztzQzs7Ozs7Ozs7O3dCOzs7OzBCLE87Ozt3QixNOzt1QjttQyxlLDRCOzttQyxjOzs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7ZTs7O2dCO2tCOzs7cUIsa0I7eUY7cUIsTTs7b0I7Ozs7bUI7bUI7a0I7Z0IsTTtnQixPO2dCO2tCOzs7cUI7cUIsRyx3QztxQixZO21EOzs7c0I7OztxQjtvQjs7Ozs7Ozs7bUI7OztzQjtxQjs7Ozs7ZSxHOzs7O2dCO2lCLEs7aUIsWTs7Ozs7Ozs7ZTtnQjtrQjs7O3FCLGtCO3lGO3FCLE07O29COzs7ZTtnQixLO2dCOzs7Ozs7bUM7Ozs7Ozs7Ozs7NkIsTzs7O1MsTzs7aUMsc0I7O1E7TTtROzsrQix1Qjs7TSxPO00sTztLLE87Yzs7O2lCLFk7Ozs7O2lCLHFCO2lCO2tCO2tCOzs7O3VCO2tCLE07aUIsTzs7eUM7O2dCOzs7STtLO0ssTztJLE87OzJCLHNCOztHOztJO0ksTzthOzs7Z0IsMEM7Z0IsTTtlOztHOzs7O2lCO29CO0s7Syx3QztLO007TTs7Ozs7Ozs7VSxZO1U7OztXO1c7VztVO1M7O007Tzs7TztPOzs7UTtTLE87Ozs7OztRLHlDOzs7UywyQixNOztjO1U7VyxROzs7Ozs7VzthOzs7Z0I7Ozs7aUIsUTs7Ozs0QjtnQjtlOzs7OztXO1c7O1c7O3lCLDBCO1ksVztZLE87Vzs7Ozs7Ozs7Tzs7Ozs7Ozs7O3lCLHFCOztJOztLLE07O0k7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHOztJLE87Rzs7SSxZO0kscUM7O0ssTTs7STtLO0k7STs7RzsyQix5Qzs7O0ssWTtLOzs7TTs7TSxPO0ssZTs7O0c7O0k7STs7OztPO087aUI7Ozs7TSxJLFU7O08sVzs7USxNO087OztRLEksd0MsaUI7USxPLDJDLGlCO2U7Ozs7O1UsNEMsUztNLE87OztnQixpQzs7Ozs7aUI7Ozs7Ozs7OztrQixNOzs7aUI7OztrQjtrQjtrQjtrQjtrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Z0M7Ozs7Ozs7OztvQixXOzsrQjs7O2tCOztpQjs7Z0IsTTtlOzs7OztLOzs7TSxPO00sTzs7TTtROzs7Vzs7WSxNO1c7O1ksTztZLE87NEQ7VztVOztPO1E7USxNOzs7OztPLEkseUI7Ozs7Ozs7OztRLEkseUI7Ozs7O087UTtRLFE7Ozs7Ozs7USxzQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTtROzs7YSxXO2E7WTs7Ozs7Ozs7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7Ozs7Yzs7O2UsTztjOzs7Ozs7Ozs7Ozs7Ozs7O2dCLG9DO2dCLFc7Ozs7Ozs7Ozs7Ozs7O2U7Ozs7VTs7Ozs7Ozs7Yzs7ZTs7O2M7Ozs7Ozs7Ozs7Yzs7ZSxPO2UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztHOztJO0k7O007Ozs7O087TSxXOzs7OztLOztHOzs7OztvQjs7O007UTt3QyxPLHdCOztXOzs7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsZ0M7Ozs7Ozs7Ozs7Ozs7OztnQixtQjtnQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEs7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7OztnQixlOzs7Ozs7Ozs7Ozs7Ozs7Z0I7Ozs7b0IsUzs2Qjs7Ozs7Ozs7Ozs7OztxQjs7cUI7b0I7b0I7bUI7aUI7Z0I7Ozs7Ozs7Ozs7Ozs7O2dCLHFCLE87bUI7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7O2dCLG9CO2dCOzs7Ozs7Ozs7UTs7Ozs7O1E7UyxPOztROztPOzs7O087USxPOztPOzs7SyxNOztHO3NCOztJO0s7SztNOzs7Ozs7Tzs7Ozs7Ozs7Szs7Ozs7SyxrQixPOztLOztHOztJO0s7Ozs7O007Szs7STtHOztJOztNO3FDLDZCO0k7Rzs7STtLLFk7O0s7STtJO0s7Tzs7O1U7OztXLFE7OztXO1U7Uzs7Ozs7STtJO0c7O0k7STttQjs7OztNOzs7OztHOztJO0k7bUI7Ozs7TTs7Ozs7Rzs7SSxZOztJLE87OztJO0k7Ozs7Ozs7Ozs7OztVOztXO1csTztVOzs7VyxXO1c7OztZO2EsTzthLGU7O1U7VSxPOzs7Ozs7VSxPOzs7b0I7b0I7bUI7Ozs7OztVOzs7Vzs7Ozs7Ozs7O08sTzs7Ozs7Szs7Rzs7STtLLE87SztlLHlDLGE7SSxXOzs7aUI7Szs7Ozs7O007Szs7TTtPLE87Ozs7VzthOzs7O087Tzs0Qjs7Ozs7Ozs7Ozs7OzsrQjs7O087OztRO1E7OztTO1U7WTs7O2UsMEM7ZSxNO2M7O1U7VTs7O1UsSztXOzs7Ozs7Ozs7OztnQjs7OztROztzQixPLGtDOzs7Ozs7Ozs7TSxNOzs7O1U7O0c7NkIsMEI7O0ksYztJO0s7Szs7Ozs7Ozs7OztXOzs7Ozs7Ozs7Ozs7VyxPOzs7cUI7Ozs7O29COzs7VyxvQztXLFc7Ozs7O1c7OztRLE8sd0MsZTs7Ozs7TTs7STtJO0c7O0ksSSw2Qjs7Szs7TSx5QjtNLG1CLFc7TSxROzs7TSxHO087UTtTLE07UyxNO1E7UTtTO1E7VTs7O2E7Ozs7Yzs7YTtZOztTO1EsSSxPOzs7Tzs7Ozs7Ozs7SyxZO007Ozs7O21CO0k7Szs7UTs7eUIsdUM7Ozs7O007OztTOztxQztZLDBCO1MsZTtTLE87UTs7OztJO0c7O0ksWTs7Ozs7TTs7Ozs7Tzs7OztVO1U7VyxXOzs7O2E7Ozs7Yzs7Ozs7O2E7OztjO2dCOzs7Ozs7YTs7OztjO2dCOzs7Ozs7VztZO1k7Yzs7O1c7O1M7TTs7Ozs7O007Ozs7TyxnQywrQjtNOzs7O0ksTTtHOztJOzs7TSxXOzs7Ozs7STtHOztJLGlCOzs7OztLO00sbUQ7OztTOzs7VSxNOzs7UyxZLE07UyxNO1E7SztNLG1COzs7O3NDOzs7SyxROzs7Ozs0Qjs7K0I7SzthOzs7SSw0Qiw4QjtJLEcsc0Q7STtJLG9DO0k7Szs7TSxlOzs7SyxXOztJO0s7Szs7O0s7TywyQztLOztLO087SSxPO0c7O0ksVTtJOzs7O1M7dUI7UyxzQjtTO1U7O1cscUIsTztXLE87OztxQixTOztvQjs7O1UsTztTO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7VSxNO1UsTztVLE07Z0I7VTs7O2U7O2dDLHNCOzs7O1c7O1ksWTtrQjtZO2EsTzthLE0sVzthO1k7Ozs7UztRO0s7Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7SztPOzs7VTtVLE87Uzs7O0k7SztNO1E7OztXO1csZTtVOzs7TTtROzs7VztXLE87Ozs7O3FCLE87b0I7VTs7OztLO00sTTtNO1E7OztXOzs7O1ksVztXLE87VTs7O0ssRzs7O0k7OztPO08sTztNOzs7STtHOztJLFUsNEMsUztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7SSxJLFcsMEM7Ozs7OztHOzs7SztLO007TSxHLDBDO00sYTttQjs7TTtPLDhCO08sUTs7Ozs7VSxxQjs7Ozs7O1UsTzs7O1UsZTtVO1c7WSxPO1k7Yzs7O2lCOzBCO2dCOzs7Vzs7Ozs7O1csTzs7bUM7Ozs7Ozs7Ozs7OztVLE07Ozs7VSxXO1U7OzthLGtCLFE7OztlOztnQixJO2UsTzs7dUM7Ozs7Ozs7OzthO1k7O1UsVzs7Ozs7OztVOztXLEk7VSxPOzs7b0I7b0I7bUI7OztNOztJO0k7Rzs7STtLLE07SyxNO0ksTztHO0csZ0I7O0k7OztLLG9CO0s7Tzs7O1U7Ozs7Vzt5QjtVO1M7O0s7SztJOzs7Tzs7OztPO007OztLOzs7USxLO1M7UyxLO1U7Vzs7O2M7YztlLEcsNEM7NEI7ZTtlLEcsbUM7ZSxZOzs7O21CLE07OzttQjtvQixVO29COzs7Ozs7O29CLFc7b0IsRztxQixNOzs7OztlLE87O2E7VTtXO1c7Vzs7OztpQzs7Ozs7UTtPOzs7Syx3QjtLOzs7UTtRO1E7UztTLFE7OztTLEs7UyxNO1E7Ozs7OztTLE07Ozs7Ozs7Tzs7O0s7TSxPO00sTTtNO1E7OztXLFU7VyxXO1U7O0s7TTtNOzs7UztTLEcsMkI7Ozs7O2U7UztROzs7TTtPOzs7VSxHLDBDO1UsZ0I7O1U7VztXLE87VzthOzs7Z0IsTzswQjs7ZTs7O1U7VTtXLFE7OztXLFU7Ozs7Vzs7O1U7VyxNO1csVTt3QixPOzs7Ozs7Ozs7VTtVLE07Ozs7OztTO007O3dCLG1CLG1COzs7O0ksTzs7O2M7OztlO2U7ZSxZOzs7ZSxlOzs7YztlO2UsTTtjLGM7Ozs7O3FCO2UsTzs7YzthOzs7O0c7SSxZLHlDLGtCOzs7OztJLHFDLE87O0ksTzs7O2M7YzthOztHOzs7Ozs7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxnQyxROztLOztNLE07TSxNO0s7OztRO1E7UyxNO1EsaUM7O1M7VSxPO1UsUTs7OztXO1ksTTtZLE07a0I7Ozs7Ozs7OztRLFEsTTtRO087Ozs7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzs7STs7SztPO3dDLHFCO0ssYTs7Ozs7TSxPOzs7Z0I7Ozs7aUI7aUI7Z0I7ZTs7Ozs7STs7Ozs7O1M7O1U7WTs7O2U7ZTtjOzs7O3dDOzs7O1M7VzswQywwQjtVO1c7YTs0Qyx3QjtXLE07Ozt5Qzs7VTtXLE07VzthOzs7Z0IsVTtnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7VzthOzs7O2dCOzs7O1csVTs7VyxNO1U7OztXLE07aUI7Ozs7Ozs7SSwyQjtJLE87OztJLEksc0M7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7SyxVO0s7O2U7RztHO0ksTztHO0c7SSxPOzhDLG9CO0c7RyxpQyx1QztHO0k7Ozs7Ozs7Ozs7Ozs7OztHOztJO0ssSTtlO3dCO0k7Ozs7O0c7RztJOzs7Ozs7Ozs7Ozs7STs7O0k7O087d0M7SSxPO0c7cUMsb0M7O0ksZTtJLE87Rzs7STtLO087OztVOzs7Ozs7VTs7O1M7Ozs7O0s7TztJLE87OztjOzs7O2U7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJO0k7a0I7SztNLE87TSxROzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxjOzs7Ozs7TztRO1EsTzs7Ozs7TTs7Szs7Rzs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7STs7O0k7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7USxPOzs4QixPLGlDOzs7OztLLGM7bUI7O0ssTzs7STtHOztHLGdDLGdCO0cseUIsUztHLG1DLCtCO0c7STs7Ozs7Ozs7Ozs7Ozs7O0c7RztJO0ssa0I7SyxRO3VCOztJLE07RztHOztJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJOzs7NEIsOEM7Rzs7STtNOztnQyxXLDhCOzs7O0k7STtLLFk7bUM7d0I7SyxzQzs7OztHOztJLFU7SSxPO2E7OztnQixZOzs7aUIsaUI7O2dCLE07ZTs7RztHOztJOzs7Ozs7STs7STtHOztJLE87OztjLEksbUI7YyxXO2E7OztHOzs7Ozs7O0k7OztJLEksVSxtQzs7Ozs7O0c7OztLO0s7TSxJLDZCLFU7O087O1EsTTtxQjs7O007Ozs7OztVO1UsTztTO00sRztPOzs4QixPLHFDO1E7TyxPOztNO08sTTtPLFE7O087TztPLFU7Ozs7Ozs7Ozs7Ozs7O1ksTTs7WSxNOzs7Ozs7Ozs7O1k7O2EsaUI7WSxPOztZOzs7YSxPOzs7O2dCOzs7Ozs7bUI7Ozs7b0I7Ozs7Ozs7Ozs7Z0IsTzs7O2EsTTtZLE87Ozs7Ozs7O08sWTs7Ozs7Ozs7Ozs7OztZLHlDOzs7Ozs7Ozs7Ozs7YTtjOzs7a0IsbUIsUTs7OztvQixPOzs7b0Q7O2tCOztlLE07ZSxRO2UsUTtlLFU7Ozs7Ozs7Ozs7Ozs7dUM7Ozs7O1ksTTs7Ozs7Ozs7VyxPO1U7TyxPOzs7O0k7STtHOztJLE8sNEMsUztHOzs7O0s7TSxJLFUseUM7Ozs2Qjs7O0s7SztNLE87SztLLFk7O007O08sa0I7TztNOztLO0ssTzs7K0I7Ozs7O2U7O0k7SztPOzs7O0ssaUI7O0s7TSxNO00sWTs7TSxNO0s7STtJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7VSx1QixVOztVLE07Ozs7Ozs7Ozs7Ozs7Ozs7aUI7bUQsUzs7O0ssOEI7OztJLDhCOztHOztJLGU7SSxJLGdDOzs7MEI7OztHOztJO0ssTTtLLE07O0c7RyxrQyxnQjtHLHlCLHVCO0csbUMsK0I7RztJOzs7Ozs7Ozs7Ozs7Ozs7RztHLHFDLFM7Rzs7SSxPO0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOztLO00sTTtNLE87TSxVOzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7OztPLGM7cUI7O087O007O0s7O0k7Rzs7STtJLE87Rzs7STs7O0s7O0k7Rzs7STs7O0ssTzs7STtHOztJOztPOztPOzs7Ozs7O0c7O0k7SSxvQjtHOytCLDBDOztJO0ksd0M7SSxZOzs7OztRLEcsb0M7USxHLG9DO1E7O1U7OztXOzs7WTs7O2E7OztjO21CO1M7VSxVOzs7Ozs7VTs7OztnQzs7O1E7OztROzs7OztRLE07O0k7Rzs7SSxJLDJCLEk7Ozs7K0I7Ozs7Ozs7Ozs7TyxHOzs7Vzs7Ozs7bUI7Ozs7YSxvQzs7STtHOzRCLHVDO29DLHVDOztJOzs7Ozs7O08sRztRLEksVSw2Qzs7OzsrQjs7Ozs7O0k7Rzs7STs7Ozs7Ozs7UTs7O1M7UTs7Ozs7STtHOztJO0ksZ0Isb0M7SSxZOzs7SyxHLG9DO0ssRyxvQztLLEcsb0M7SyxHLG9DOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7O0s7O0k7Rzs7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxPOzs7OztjLE87YTtHOzs7STs7Ozs7OztNOzs7UztrQixNOztROzs7O0s7TSxPO2U7O0ksWTtJLGE7Ozs7Ozs7OzsyQjs7OztJOzs7O0ssTztLLE87O0s7O1E7OzBCLE8sMkI7Ozs7Ozs7Ozs7Ozs7OztJOzs7STtrQjs7Ozs7O007Ozs7Ozs7Ozs7Ozs7O1E7O087Ozs7Ozs7O0c7O0k7O0ssTTtJOztLLEs7SyxVOzs7OztRLHFCLEk7ZTtTLE07Ozs7UTs7UyxVOzs7OztTLFc7UTtRLEc7UyxNOzs7OztLLE87O0ksTTtHOzs7O0ssSSxlLHVDOzs7O08sTTs7OztJLE87Rzs7STtLLE07STtJOzs7TztPLEc7USxNO3VCOztNOzs7Ozs7Ozs7SyxPOzs7OztlO2dCLFE7Z0IsTTtnQixPO2dCLE87ZTt1Qjs7Ozs7OztjOztJO0ssUztLO087OztVLG1CLFE7Ozs7OztVO1M7O0k7Rzs7STtLOztNLE87TSxNO0s7aUIsd0MsWTs7O0k7O0s7OztJOzs7O0k7O0ssTzs7O2U7O2dCO2tCOzs7O3FCO3FCO3NCO3dCO3VELFk7c0IsYztzQjtzQjs7OztzQjt3QjtzQjtzQixVOzs7c0IsRzt1Qjs7cUI7c0IsTztzQixZO3NCLGdCO3FCLE07O29COztxQjs7OztxQjtxQjtxQjtxQixzQixPLDhCO3FCO3FCO29COzs7OztlO2M7O0k7Szs7O0k7RztHO0k7TTs7O1M7UyxPO1E7O0k7TTs7O1M7Uzs7OztTO1UsaUI7VSxPO1MsTyxXO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Z0I7O0ksTztHOztJO0k7SyxHLDRDO2tCO0ssWTs7Ozs7UyxJLFc7Ozs7VyxNOzs7UztVLE87VSxPO1MsSTs7Ozs7VSxNOzs7UyxPOzs7bUI7Ozs7Ozs7aUI7Ozs7SyxPOzs7ZTs7OztHOztJLE87OztjOzs7ZSxTOzs7O2dCLE07O2U7Z0I7OzthOztHOzs7Ozs7OztNLG1CLFU7OztPO1E7UyxTO1MsTzs7Vzs7O1MsSTs7Ozs7OztTO1UsTztVLE87VSxPOztZOzs7OztTLE07Ozs7Ozs7UyxNOzs7O00sTTs7O0k7Ozs7O0s7SztNLEs7O1EsVztRLEc7OztTLGdCO3NCOzs7Ozs7O3FCOzs7Z0I7TyxjOzs7Ozs7WTs7YTsyQjs7Ozs7Ozs7O08sVztPO1EsWTtRLFU7O1E7OztTLGE7UTs7Uzs7MEI7OztRLEksVzs7Ozs7O21COzs7cUI7Ozs7O1E7Ozs7OztPLE87OztpQjs7Ozs7TyxNOzs7OztROzs7UyxVOzs7O3FDOzs7Ozs7OzswQjs7Ozs7O3dCOzs7OztnQjtnQjtNLE07O0k7O0s7STtJLFc7STtLOzs7TTtROzs7eUI7O0s7Ozs7OEIsTzs7O0c7O0k7SztLO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxPOzs7O2dDO21CO1E7O0ssTztJLE87Rzs7SSxrQjtJOztLO0s7TSxlO2lCO21CO00sWTs7Ozs7VSxHO2tCO1ksVztZLE07Ozs7cUM7Ozs7O1c7WSxPO1k7eUI7O1k7YTtjLFU7OztjLFU7OzthO2MsVztjOzs7Ozs7O2MsTTs7O2E7Ozs7Ozs7Ozs7Ozs7VSxPOzs7b0I7Ozs7Ozs7O2tCOzs7O00sTzs7O2dCOzs7O0k7O0s7SztJO0ksTzs7O2M7ZSxROzs7OztjOzs7aUI7OztjO2E7O0c7O0k7Ozs7Ozs7SztLO00sTztNLE87TSxPO0ssSyxpQztLO007TSxPO00sTztLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7Ozs7OztLLHFCLE87OztJO0c7O0ksTzs7O2M7YzthOzs7O0c7O0k7STtLLGM7SztPOzs7VTs7VztXLE87VyxhO1c7VztVOzs7Ozs7Ozs7Uzs7SyxlO0ssUTtLO087OztVO1csTztXLE87VSxXO1M7O0s7Tzs7O1U7O1c7YTs7O2dCOzs7OztXO1csYzs7OztZLEksZSxLO1k7Ozs7ZTs7Ozs7O2UsVztlO2UsTztjO1k7O1c7Ozs7O1csTzs7Ozs7cUI7cUIsTzs7OzsrQjsrQjtnQztnQztrQzs7b0Qsb0IsYzs7Z0M7a0M7OztxQzs7OztzQyxPO3FDOzZDOzs7b0M7O2dDLFU7Z0MsUTsrQjs7aUMsTTs7Ozs7Ozs7Z0M7OztvQyxNOzttQztpQzs7O2tDOztrQzs7O2lDOzs7bUM7Ozs7OztpRDs7O3FDOzs7Ozs7O3NDO3NEOzs7cUM7Ozs7O2tDOzs7O2lDOzs7bUM7bUQ7OztrQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7a0M7b0M7a0M7b0M7Ozs7Ozs7Ozs7Ozs7Ozs7a0M7O21ELDZCOzs7O2lDOztnQztnQzs7O21DO21DLEc7b0MsTTs7O29DOztrQzs7Z0M7aUM7aUM7bUM7O2tELE8sa0M7OzBDO2lDLE07O2dDO2lDOztvQyxPOzs7Ozs4QzsrQyxPOytDOzs7Ozs7Ozs7Ozs7OytDOzs7K0MsTzsrQyxPOytDOzs7Ozs7Ozs7OytDOzs4Qzs2QzttQztpQztpQyxPO2lDLFU7Ozs7Ozs7Z0M7O2lDOzs7aUM7OztzQzs7O3lDOzswQyxRO3FEO3lDLG1CLFU7OzswQyxPOzt5Qzt3Qzs7OztpQztpQzs7Ozs7Z0M7O2lDO2lDLE07Ozs7OytCO2dDLFE7Ozs7Z0MsTztnQyxPO2dDOzs7Ozs7Ozs7Ozs7Ozs7OytCOzs7a0M7Ozs7bUM7bUM7a0M7bUMsVzttQzs7Ozs7OzttQyxNOzs7aUM7OytCO2dDO2lDO2tDLE87a0MsVztrQyxVOzs7OztrQyxNOzs7OztnQzs7K0I7Z0M7Ozs7Ozs7Ozs7Ozs7Z0M7O2dEOztnQzs7aUMsTzs2Qzs7Z0M7O2lDLE87NkM7K0I7OEI7b0I7O1U7VyxPO1c7YTs7VzthOzs7Z0I7Z0I7ZTs7VyxROzs7O1U7VyxTO1csVTtVOzs7YTs7OztjLE87Ozt3Qjt5QjswQixPOzBCOzRCOzs7O3lCOzs7OzswQixPOzs7O3VCOzs7O2EsTzs7O3VCO3VCO3dCO3lCLE87eUI7MkI7Ozs7d0I7Ozs7O3lCLE87Ozs7c0I7O1k7O1U7VTs7a0I7b0Q7Uzs7Ozs7O0s7Tzs7Z0MsbUIseUI7OztLO087OztVOzs7OztJOzs7Tzs7O1E7USxNO3lCO087UTtVOzs0QixPLDRCOztRO1EsTztPOzs7OztnQjs7O007OztLLG1COztLLE87STtJOzs7TztPOzs7Z0I7Ozs7TTs7STs7O08sdUM7Tzs7O2dCOzs7O007O0k7OztPOztRO1EsUTttQjs7TyxNOztNOzs7STs7O08sdUI7Tzs7O1U7VTtTOzs7Ozs7OztXLGtCOzs7WTs7O1csTTs7VyxvQjs7WTs7YTs7Z0IsTztlO2E7ZTtZOzs7ZTtlO2dCO2lCLE87aUIsUTs7Ozs7aUIsTTs7Ozs7OztnQjs7OztrQjs7O3FCO29COzs7Ozs7Ozs7O2tCOzs7O2dCLE07Ozs7Z0I7O2U7Yzs7OztXLE07OztxQjtPLHFCOztRLE07O087Ozs7STtLO007UTs7O1c7VztVOzs7TTtRLFc7TSxPLFc7TSxVLFc7Ozs7OztNLE07Ozs7TSxNOzs7OztLLE07O0k7STs7OztPOzs7O0k7O087OztVO1U7Ozs7Ozs7Ozs7O1M7OztJO0c7O0ksSSxLOzs7O007O087TyxTO08sVTs7OztPO1EsUztRLE07USxpQjs7OztPO1EsUTs7O00sSTs7Ozs7TyxNOzs7O087USxPO1EsTztPOzs7VSxXLG1CO1U7VztZLE87bUI7OztVLGM7Uzs7O007TyxpQjtPLG1CO087O1U7O087O1U7O2E7TyxNOzs7TyxNOzs7Tyx1Qjs7OztTOztVLFU7Ozs7OztXOztZLFM7WSxPO2M7WSxNO1csc0IsTztXOzs7Ozs7Ozs7VyxNOzs7UyxNOzs7O087UTs7Ozs7O00sTTs7Szs7OztNOzs7Ozs7Ozs7OztJO0ssTztLLE87Szs7Ozs7Ozs7OztLO0s7Ozs7OztvQzs7Ozs7O0ksWTtJOzs7O0ksTzs7Ozs7Yzs7Ozs7Ozs7YTtHOzJCLCtCOztJLE87Ozs7O2M7O2UsUTs7OztlLE07Ozs7ZTtnQjs7bUI7O3FDLGlDOzs7Ozs7Ozs7ZSxNOzs7YztlO2lCOzs7b0I7cUIsUTs7O29CO21COztlLE87Ozs7ZTtnQixPO2dCO2tCOzs7c0I7Ozs7O3VCO3VCOzs7Ozs7cUI7Ozs7O2M7O2UsTTs7O2M7ZSxRO2U7aUI7Ozs7cUI7cUI7cUIsTzs7OytCOytCOzs4Qjs7b0I7O29CO29CO3FCO3FCO3VCOzt5QyxvQixjOztxQixPO3FCLE87b0I7b0I7OztxQjt1Qjs7OzBCOzs7O29CO21COzs7Yzs7O2lCLG9CLFE7NkI7O2lCLE07O2dCOztjOzs7aUI7aUI7a0I7O3FCOzs7Ozs7a0I7Ozs7Ozs7a0IsTTs7O2dCOztjO2U7aUI7OztvQjs7O3FCO29CLE87O21COzs7ZSxVOzs7ZTs7Ozs7Ozs7O2M7YTtHOztJO0ssUTtLO087Ozs7VztXOztVOztVO1U7O1M7OztLLFU7OztLLE07OztJO0s7SyxTO0k7Rzs7STtLO087Ozs7eUIsbUM7Ozs7STtHOztJO0ssUTtLLFU7OztvQzs7Ozs7d0I7O007O3VCOzs7SSxNO0c7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7VSxPOztTLE07O1E7Ozs7Ozs7Ozs7STtJO2tCO0k7O0ssTztLLFE7Ozs7TTs7bUM7Ozs7TSxHO00sRztNLEc7TSxHOzs7OztLLE07OztJO0c7O0k7STtLOztNLFU7TTs7Ozs7Ozs7Ozs7O1csTTs7O1U7OztXO1c7OztVOzs7Ozs7Ozs7OztNOztLLE07O0c7O0ksTzs7Ozs7YyxJLE0sMEM7O2U7Ozs7O2U7Z0I7Ozs7O2dCO2tCOzs7O2dCO2lCO2lCO21DOzs7O2dCLE07Ozs7Ozs7OztlO2dCLE07O2U7OzttQixXO21CO29CLFk7Ozs7c0I7O3VCLFM7MkM7Ozs7OztvQjs7OzsyQzs7O2tCO2dCO2tCO2U7OztrQixnQjtrQixPO2lCOzs7ZTtnQixPO2dCLE87Ozs7ZSxLO2dCLE07O2U7Z0IsTztnQixPOzs7YztlO2lCOzttQyxlOzs7Ozs7ZTs7Ozs7Ozs7O2M7YTtHOzs7STtJLE87O2dDLGdDOztjO2M7ZTtlO2U7aUI7O21DLG9CLGM7O2UsUTtlO2lCOzs7b0I7Ozs7cUIsTTtxQixRO29CO21COztlOzs7ZTs7Z0IsTTs7Ozs7Ozs7OztjO2UsYTs7YztlOzs7a0I7a0I7bUIsVzttQjs7Ozs7OzttQixNOzs7aUI7OztjOzs7aUI7aUI7a0IsVztrQjs7Ozs7OztrQixNOzs7Z0I7O2Msd0I7Ozs7O2U7Ozs7Yzs7Ozs7OztlOzs7Ozs7OztjO2UsTztlLE87OztlOzs7Ozs7OztrQjs7Ozs7Ozs7Yzs7O2lCO2dCOztjLGM7OztlLE07OztjO2U7ZSxXO2M7ZTs7a0I7Ozs7Ozs7Ozs7OztlLE07OztjOztpQjtjO2U7O2tCOzs7Ozs7O2UsTTs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7OztHOztJO0ssTztLLE87Szs7SyxxQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLFc7SztLLFc7STtJLE87Ozs7Yzs7OztlLE87ZSxPO2M7Ozs7Ozs7Ozs7Ozs7OzthO0c7O0ksWTtJLE87OztjOztlOzs4QjtjLFc7YTs7Rzs7NEIsTyxzQztJO0k7STtHOztJO0s7TTtROzs7VyxXO1csTztVOztNLE07TSxXO0s7SztNLE87TSxPO0s7Szs7Ozs0Qjs7O0c7O0k7Ozs7Ozs7YztlLE87ZTtlLE87YyxPOzthO0c7O0ksc0M7O0ksTyx3QyxZO0c7O0k7SztLO29COzs7Ozs7Ozs7Ozs7OztNOztJO0k7Rzs7SSxPOzs7YztjLE87O2E7O0c7O0k7SztNOzs7TyxPO08sTztNLE87O0s7OztNLE87TSxPO0ssTzs7STtLLE87STtJLE87YTs7O0c7O0ksTztHOztJOzs7USxPOztRLE87Ozs7Ozs7USxPOztRLE87O1EsTzs7USxPOzs7Ozs7Ozs7USxPOztRLE87Ozs7OztPLE87OztPLE87O087Ozs7UTtPLE87Z0I7O2lCO2lCO2lCLE87Ozs7Ozs7O2dCOztPOzs7O1E7TyxPO2dCOztpQjtpQjtpQixPOzs7Ozs7OztnQjs7OztROztTO1c7Ozs7OztTLE87USxPOzs7Ozs7Ozs7OztPLFc7TyxPOzs7Ozs7Ozs7O087Tzs7Ozs7O3VCLE8sMEM7dUIsTywwQztPLE87OztPO087Ozs7Ozt1QixPLDBDO3VCLE8sMEM7TyxPOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7O087Ozs7O1E7UTs7VyxPO1U7TztPO087USxPO1EsTztRLE87TyxPOzs7Ozs7Ozs7OztpQiw2Qiw4QjtpQixPOzsyQjs7MkI7Z0I7OztPOzs7Ozs7O1k7Ozs7Z0I7Ozs7cUMsUzs7eUMsVztlO2EsUTs7Ozs7O2lCOztrQixVOzs7aUIsRyxpQztpQjs7OzttQyxrQixTOzs7b0I7b0IsTzttQjs7O2lCLG9CLE87aUIsRyxtQztpQjs7O21COztvQixrQixROzs7OytEOztzQixPOzs7cUQ7O29CLE87bUI7OztvQjs7cUIsTztvQixPO21COzs7YTs7Ozs7OztXOzs7O3lCLFk7OztjLFc7YyxPO2E7Ozs7Vzs7Ozs7YztjLE87YTs7O2M7Ozs7Ozs7O2E7OztPLE87OztPLE87Ozs7Ozs7O08sdUIsTztPLE87Ozs7Ozs7OztPOzs7O1E7VTs7Ozs7O1EsTztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7aUIsVztpQixPO2dCOztpQixPO2dCOztPOzs7O1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7TyxzQixPO08sTzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7O087Ozs7UTs7Vzs7OztZO1c7O3VCO3VCOzt1Qjs7O087USxnQixPO1E7Ozs7Ozs7Ozs7O1E7Ozs7VztXO1ksTztZLE87Vzs7Ozs7Ozs7OztXO1csVztXOzs7Ozs7Ozs7O1c7VyxXO1c7Ozs7Ozs7Ozs7VyxXO1c7Ozs7Ozs7Ozs7O1csVztXOzs7Ozs7Ozs7OztXLFc7Vzs7Ozs7Ozs7Ozs7Z0M7TyxJLHFCO08sTzs7TyxvQixPO08sTzs7O087TztPOzs7O3FCLFM7O3lCLGE7TyxPOzs7aUI7O2lCOzs7Ozs7Ozs7Ozs7O08scUI7TyxPOzs7TztpQjs7Ozs7Ozs7aUI7Ozs7Ozs7OztPOztROztXLFksTztXLG9CLE87VyxPOztPLE87Ozs7Ozs7Ozs7TyxPOztPOztROztXLE87VTtRLE87USxPO08sTzs7OztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozt1Qjs7O0k7RztxQyx3Qjs7STtJOzttQzs7OzZCOzs7O1E7OztZOzthLG1CO2EsTzs7WTtXO1M7Vzs7Ozs7UTs7O2lGLGU7O1EsTzs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UTs7OztTOzs7O1U7VSxROzs7Ozs7OztRLG9CLFU7OztpQzs7O1E7OztRO1MsTzs7O1E7Ozs7Ozs7OztROzs7OztRO2dCOzs7O0c7O0k7OztJLG1COztJLEksVywrQjs7OzRCOzs7OztJO0k7Ozs7NkI7O1E7O1E7O1E7O1E7OztRO1M7O1k7O1k7O1ksTzs7WSxPOzs7Ozs7UTtTLE87O1E7OztHOztJOzs4Qjs7STs7Tzs7Tzs7Tzs7TztlOztHOztJOztHOztJOzs7O29CLGdCOztvQixnQjs7Ozs7O0k7RztHO0k7O0ksVTs7SSxJLFcsNEI7Ozs0Qjs7O0c7OztJLE87OztjLEkscUI7YyxPO2E7OztHOztJLE87Rzs7SSxPLGlDO0c7O0ksTzs7O2M7YzthOztHOzs7SSxPOzsrQixPLDBCOzs7Rzs7SSxtQjtHOztJLE87Rzs7STs7SSxPO0c7O0ksTzs7aUMsbUIsd0I7OztHOztJO2E7NEMsd0I7RzsyQixhOztJO0ssTywrQztHOztJO2tDOzs7MkI7O087O087Ozs7UTtPO1E7O087OztROztXO2tEOztXO1U7OztXOzhCOztXO1U7USxXO1EsVzs7Ozs7O1M7Vzs7K0IsMEI7O2lDO087UTtRLDBCO087UTtRLHFDOzs7Ozs7Ozs7OztRLGU7OztPOztROzs7OzBCOzs7YTs7O2M7OzthOzs7Ozs7Ozs7UTs7O1E7OztpQzs7OztpQzs7UTtPLHNCOzs7TztRO1M7VzswQyx1QjtTLFE7OztTLE87UztRLHVDOztPOzs7USwwQix1QjtROzs7OEI7TyxzQjs7O08sNkI7O08seUM7Ozs7Ozs7Ozs7O1E7Ozs7a0M7O08sc0I7OztPLDZCOzs7OztRO1M7Ozs7Ozs7O2lDOztROzs7O2MsTzs7O3dCO3dCOzs7O3dCO3VCOzs7Ozs7TyxzQjs7MkI7Ozs7OztRO08sc0I7O087O1EsVTs7TzsrQjs7Ozs7Ozs7Ozs4QjtRO08sc0I7Ozs7OztRO08sc0I7Ozs7OztRO08sc0I7Ozs7Ozs7O1E7TyxzQjs7NEI7TyxzQjs7NkI7Ozs7OztRO08sc0I7Ozs7OztRO08sc0I7O087OztRLDRDOztvQztRO08sc0I7O087Ozs7UTtRO087UTs7TywwQztPLG1CLE87OzJCOztPLG9CLFU7Ozs7OztPOztnQzs7O08sa0IsTzs7Tzs7Ozs7O1E7c0M7UTs7aUM7O08sc0I7OzZCOztPLG1DO087UTs7Rzs0Qjs7SSxzQztJLHFCO0c7O0k7SSxxQjtHOztJOzs7MEI7OzJCOzs2Qjs7Tzs7eUI7ZTs7Rzs7SSxpQjs7STtHOztJOzs7MkI7OztPO1EsTzs7O2tCOzs7cUIsa0I7cUI7OztxQjs7cUI7O3FCOztxQjs7c0I7d0I7OzBDLG1CLFU7O3NCO3FCOztxQjs7c0IsTTtxQjs7Ozs7O3FCOztxQjs7c0I7d0I7OzsyQjsyQjswQjs7c0I7d0I7eUQ7Ozs7eUI7MEI7OzJCOzJCOzs7O3lCOztzQjtxQjs7d0M7O3FCOztzQixpRDtzQixZOzs7O3lCOztzQjtxQjs7cUI7Ozs7c0IsZTtzQjtxQjs2Qjs7aUI7Ozs7eUI7Ozs7OztRO08scUI7OzJCOzs7OzswQixpQzs7O087c0M7OztXOzs7O2lDLDRCOzs7O21COzs7Ozs7TztRLE87O087O0c7eUI7O0k7STs7OztRLHNCOzswQjs7Ozs7O1M7USxxQjs7O0c7O0k7O0s7O00sTTtNO007TTs7OztLO007OztJO0c7O0k7OztLO0ssWTtLO0k7Rzs7STtJOzs7OzRCOzsyQjs7UTs7O1M7VywwQztTO1EsbUI7Ozs7Ozs7O1kscUI7OztvQztTO1EscUI7O1E7Ozs7UztRO1M7Ozs7OztHOztJO3VCOztJO0c7O0k7SztPLHlDLGE7SztJO0s7OztTOzs7VTtVO1U7OztVOztTO1UsZTtVO1M7O00sTTtNLFE7Ozs7Szs7TTs7O1U7OztxQjtTO08sUTtNLEc7Ozs7Ozs7O1M7OztVO1M7OztJO0c7O0k7Ozs7O0s7OzZCOztJO0ssMEI7Syx3QztHOztJO0s7SyxNO0s7TztTLHlDLHFCOztLLFEsVztJO0c7O0k7STs7bUM7OztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7USxvQztRLFE7Ozs7Rzs7STtnRDs7STtLO007Ozs7OztZOzs7ZTtlO2M7Ozs7Ozs7SztNOztJO0c7OztLO0s7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7OztJOztHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3Qzs4QiwyQztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7RztJO0k7O0k7OztRLE07Tzs7STs7O1EsTTtPOztJOzs7USxNO087O0k7OztRLE07Tzs7STs7O1EsTTtPOzs7Ozs7cUIsc0MsWTtxQix5QyxZO3lDLDRCOzZCLHdCOztJOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPO2UsTzs7Rzs7STs7OztRLEksbUIsOEI7OzttQzs7Ozs7Ozs7WSxJLG1CLDhCOzs7dUM7Ozs7O1ksSSxtQiw4Qjs7O3VDOzs7Ozs7USxJLG1CLDhCOzs7bUM7OztPOzsyQjs7O087OzttQjs7Tzs7Rzs7STt5Qzs7SSxNO0c7O0ksTztHOztJO0c7O0ksWTtJLGlCO0c7O0k7SyxRO0s7O0s7STtpQjs7OztHOztJO0ssTztLLFE7Ozs7O00sRyx1Qzs7O0ksTTtHOztJLE8sMkI7Rzs7STtJLE87Rzs7STs0Qzs7Ozs7TTs7O0k7Rzs7STs0Qzs7O3FDO2tEOztJO0c7O0k7Ozs7aUM7O0c7O0ksSSxXLDZDOzs7OztNLE07Ozs7O0ssTTs7O0c7O0ksSSxXLHNDOzs7OztNLE07Ozs7SyxNOzs7RztHO0ksa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7VztZO0s7Ozs7OztNLE07Ozs7O0ssTTs7O0c7O0k7STtHOztJO0s7Szs7Ozs7Ozs7OztPLE07Ozs7OztHOztJLE87Ozs7ZTs2RDtlO2M7O0c7O0ksTzs7OztlOztnQjs7OztpQixPO2lCLFE7Ozs7aUI7a0IsSTtrQixVO2lEOzs7O21CLHFCO29CLFc7b0IsTzs7Ozs7OztvQixLO3FCLFc7cUI7O3NCLE07OztxQixPOzs2Qzs7Ozs7a0IsbUI7bUIsVzttQixPOzs7aUI7O2dCLE07O2U7Yzs7Rzs7STs7OztJO0c7Ozs7OztJOzs7O0k7TTs7O1Msc0I7UyxPO1E7O0ssTTs7Ozs7O08sTTtpQjs7O007OztPLE87TyxPO087OytCOzs7Ozs7OztjO0k7SyxPO0ssUzs7STs7O0ksTzs7O2MsK0IsTztjLE87dUI7YTs7Rzs7STs7Ozs7Rzs7STs7Ozs7Ozs7Ozs7VTtXLE87O1U7O1U7O1c7YTs7OEI7O1UsTzs7Ozs7Ozs7Ozs7OztVO1U7VzthOzs4Qjs7VyxVOzs7VyxPO1U7OzthOzs7Yzs7YSxzQjtZOzs7VTs7VTs7O1c7YTs7OEI7O1csb0I7VyxPO1csVztVLE87O1U7O1csTztXLE07O1U7VyxPO1c7YTs7O2dCO2dCO2U7Ozs7YztlLFE7OztjOzs7O2UsVztlO2dCLGM7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE07OztnQjtlOzs7Ozs7YztlLFU7OztjO2M7YTtVO1U7OztVO1c7O1ksVTs7OztZLE87WSxXO1csTzs7VSxJLGdDO1U7VTs7Ozs7OztNLFM7TyxPO007TztPO1M7OzsyQixPLDZCO08sTztPLE87TTtNOzs7Ozs7O0k7OztJO0s7Tzs7eUIsTywyQjs7SyxLO0ssZ0I7STtJO0c7Ozs7Ozs7Ozs7STtLO00sTztNLE87TSxPO00sTztNLEs7Szs7O0s7Ozs7OztLOztJO0k7SztPOzs7VSxvQjs7Vzs7OztZO1ksVTs7OztZOztZO2M7OztpQjtrQixPO2tCO29COzs7O2lCO2lCO2dCOztZO2M7Ozs7a0I7a0IsTztpQjtnQyxPLHNDOzs7OztXO1ksTTtZLE07VztZLE07Ozs7YSxXO2E7YTtjLE87YyxVOzthLE07OztZOzs7O1k7YTtlLHdDLFk7YTtlOzs7a0IsWTs7Ozs7b0IsRztxQixPOzs7a0IsTTs7aUI7Ozs7YSxNOzs7VztZOzs7Ozs7O1c7WSxVOzs7WTs7Ozs7O1c7VTs7O1M7Ozs7O0s7OztLOztNOzs7UztTO1M7UztVLE87VSxjO1U7b0I7Uzs7WTs7UztTLE07UTs7Ozs7Ozs7STtHOzs7SSxPOzs7YztlLFE7OztjO2U7Ozs7O2lCOzs7Ozs7OztpQixNOzs7Ozs7O2M7YTs7Rzs7STtLLFM7SyxnQjtJO3dCO0k7Rzs7STtLLEs7SyxPO0kseUM7STtHOztJO2lDO0ssc0I7STtLLE87STtJO0ssZTtLLGdCO0k7Szt5QjtJLFc7SSw4QjtHOztJO0k7SyxJLEksVzs7Ozs7O0s7OztPLG1CLFU7O08sTTs7O0ssVTtLLEcsK0I7OztHOztJLEksaUM7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7SSxZO3NFO0ksTTtHOzs7Syw0QjtJOztLO00sUztNO3dCLE07O0s7TTs7Uzs7O1k7WSxPO1c7Ozs7OztNOztTOzsyQixtQixPLHdCOztNLE07Ozs7Ozs7O0s7SztJOzs7O29CLE87TSxzQyxPO00sRzs7Vzs7OztLO007TTtROzswQixvQiwwQjs7TTs7K0I7OzsrQjtLLE87Ozs7O2U7ZSxPO2M7STs7SyxrQixNOzs7TSxvQjtNOztLLE87STs7SyxHO007TTtPO08sWTs7Tzs7bUI7TyxPOzs7O0k7O0s7TSxPO00sTztNLFc7SyxPO0k7O0ssVztLLFc7SztNO1E7Ozs7MEIsTywrQjtNLHdCO0ssTztJOztLOzt1RDs7SyxnQjtLLE87STs7Syx3Qzs7SyxPO0k7Ozs7OztLOzs7Ozs7OztPLEk7Ozs7USxJOzs7O1M7aUI7VTtVO1k7OztlOztnQjtnQjtlO2M7O1MsTTs7O1EsRywwQjswQjs7Ozs7Tzs7O1M7O1UsVTs7OztXLE07VTs7O1c7VTtXOztXOzs7VTs7O1M7Ozs7OztNLGM7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O08sTTs7OztLLEc7TTtLOztJOzs7SSxJLFcsa0I7Ozs7OztLLE07OztHOzBCLGM7MEIsYzs7SSxPO0c7O0k7Ozs7Szs7STtHOzs7Ozs7SSxPOzs7YyxPO3lDLE8sMEI7YTs7O2MsTyxjO2E7O0c7OztJO0s7Tzs7O1U7VSxPO1M7O0s7SztLO0s7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxPO0k7O0ssWTtLOztPLG9CLE87Tzs7dUIsTywrQzs7TyxXO08sTzs7O08sb0I7Tzs7Ozs7Z0I7Tzs7TSxhO21CO00sZTs7O0s7Ozs7Ozs7OztJO0k7SztPOzs7VTs7Uzs7SztPOzs7VTs2Qjs7VTtTOztLO087OztVOztXOztVLHNDOzs7Ozs7Ozs7Ozs7VTtTOzs7O0s7O0ssVTs7TTs7OztPO1M7OztZO1k7Vzs7TyxPO08seUM7TyxPO007UTs7eUI7O08sZ0I7Tzs7O087OztVO1UsTztTOzs7OztLLFc7Szs7STs7Tzs7O1U7O1M7O0ksTztHOzZCLGU7NkIsZTs7SSxRO1U7YyxnRDtJO0s7NEM7O0k7SSxPO0c7NEIsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7Ozs7O1MsTzs7O21CO21CO2tCOzs7UyxrQztTLFM7Ozs7Ozs7O1MsTzs7O1M7Ozs7Ozs7Ozs7O0s7O0c7O0ksSSxXLHVDOzs7O0s7O00sZ0I7SyxNO3NDOzs7Rzs7SSxrQjtHOztJLHdCO0c7O0ksTzs7Ozs7Yzs7YTtHOzs7OztLO007O0k7O0ssVztLO0s7STs7SztnQjs7STtvQiw4QjtJOzs7Szs7Ozs7ZTs7Ozs7O087O1EsTztROzs7Tzs7Tzs7O1E7O1E7VTs7OzRCLG1DO1E7Ozs7Tzs7Ozs7Ozs7O087O1E7UTs7Tzs7Ozs7Ozs7Uzs7O1U7VTs7YTtjLE87YTtjLFk7YyxPO2EsTztZOztVO1M7OztPLE07OztPLE87USxNO087UTs7UTtVOzs7Ozs7OztROztRLFcsd0MsWTtPO3FDOztPOzs7UTs7O1M7VTtVO1MsTTs7Ozs7Ozs7O087USxhOzs7Ozs7UTs7Ozs7Ozs7O1E7O1EsOEI7USxNOzs7Ozs7Ozs7Ozs7Ozs7UyxNOzs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7O3VCOzs7Ozs7Vyx1Qjs7Ozs7Ozs7Ozs7Ozs7TyxHO1E7b0I7OztTOzs7O1U7USxXO1EsTTs7O087UTs7Ozs7Ozs7Ozs7Ozs7VztXOzs7Ozs7OztnQjs7OztnQixNOzs7WTs7VTs7UTtROzs7VztXO1U7OztPOztRO1U7Ozs7Ozs7O1E7O087Ozs7O2lCOzs7OztPO1EsTTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7TztRLE07Tzs7O1M7UyxNOzs7d0I7OztROzs7UyxjO1M7OztPOzs7Vzs7OztZOzs7Vzs7O1E7O1E7Ozs7O2E7Ozs7Ozs7Ozs7OztROztTO1MsVTs7O1ksc0I7WTthLE07OztZO1k7O1E7Ozt1QjtRO1MsSSxpRDs7Ozs7Ozs7Vzs7Ozs7O1U7VyxPO1csSTtVOzs7Ozs7Tzs7Ozs7O21COzs7O087O1E7UTtVOzt3QixzQzs7UTs7Tzs7Ozs7aUI7Ozs7Tzs7O1E7UTtRO1E7VTs7Ozs7YzthO2E7YyxXO2MsUTtjLFE7YztjO2E7WTs7Ozs7UTtRO1EsWTtPOzs7VTtVO1M7O087OztVO1U7Uzs7Tzs7UTtROzs7VztXO1k7OztnQixPOzt5QyxzQixhOztlO1k7Ozs7Ozs7Ozs7YyxLO2U7Z0IsTztnQjtrQjtxQjs7O2UsTTs7OztjO2UsVztlO2U7Ozs7Ozs7ZSxNOzs7Yzs7OzsrQjtZLE07OztVO1E7O1EsTzs7OztPO1EsTztROztPOzs7OztpQjs7Ozs7Ozs7O1M7Ozs7O1UsUTs7OztTOzRCOztTLGM7O1U7Ozs7YTs7OztpQixPO2dCOztXOzs7VTs7Ozs7Ozs7O1MsTTs7OztPOzs7UTtVOzs7O2M7YyxPO2E7NEIsTyxzQzs7Ozs7TyxXO087MkI7TztRO1E7Tzs7OztTOzs7Ozs7Ozs7Ozs7O087O087OztRLFU7OztRO1U7OzRCLE8sNEI7O1EsTztRLE87USxVOzs7USxHO1M7VSxPO1U7WTs7O2U7Ozs7O2dCLFE7Ozs7aUI7O2tCLE07aUI7Ozs7Z0IsVTtnQjs7ZTtjOzs7OztVLFc7VTs7O2EsTztZO1Usb0I7VSxPO1U7VSxtQjtVO1k7OztlO2U7Yzs7UztVLE07O1M7OztVO1k7OztlO2M7OztVOzs7Ozs7Ozs7Ozs7O08sTTs7O087O1E7UTtROztPOzs7OztpQjs7OztPOztRLEk7UTs7UTs7Ozs7Ozs7Tzs7UTtROzs7Tzs7Ozs7Ozs7O087OztRO1E7b0I7TyxNOzs7TyxNO2tDOztPOzs7USxXOzs7TztPO1E7O1EsVzs7USxNOztPO087Ozs7Ozs7Ozs7SSxPOzs7YztjLE87YTtHOztJLE87OztjOzs7Ozs7O2U7YyxPOzs7Ozs7YTs7O0c7O0k7OztJLE87OztjOzs7OztjLE87Ozt3Qjt5QjsyQjt5QjsyQjt5QixPO3lCLFE7Ozs7eUI7d0IsTzs7dUI7YTs7O0c7O0k7SztHOztJO0s7SyxLO0ssa0I7SyxXO0s7STtLO0s7O0ksd0MsTyxpQjtJLEc7Syx1QztJO0s7Tzs7O1U7Ozs7Ozs7OztVLGtCLHFDO1U7VyxLO1csTztXLFU7VzthOzs7Ozs7VzthOzs7Ozs7VTtTOzs7Ozs7STtHOztJO0ssaUI7SyxTO0s7SyxLO0ssa0I7SyxXO0s7SSx3QyxPLGlCO0k7RztHO0k7STs7Ozs7OztJO0ksVztHOztJOztHOztJO0k7Ozs7TSxJLDBDOzs7Ozs7Ozs7SyxPOztHOzs7O0s7TTs7SSxJOzs7Syx5Qjs7SSxnQyxPLGtDO0k7Ozs7Ozs7STs7Ozs0Qjs7UTs7UyxPO1M7UztTLE87UTtRLE87OztRLE87UyxNO1E7Uzs7UyxVO1E7O2tCLGdDO2tCOzs7aUI7OztrQjs7O3NCLHdDLFk7a0Isa0I7aUI7O1E7Ozs7Uzs7O1MsTTtRO1M7Ozs7O1E7O2tCLGdDO2tCOzs7aUI7aUI7O2tCOztpQjs7UTs7OztTOzs7Ozs7O1k7Vzs7O1MsNEMsbUI7O1E7O1E7OztTLFk7OztZOzs7O2E7OztZOzs7O3NCLE87cUI7O1E7OztrQyxzQzs7UTs7UztROztrQjtrQjs7O2lCOzs4QiwwQjs7UTs7UztRO3VDLDBCOztROzs7O1M7Ozs7YTthO1k7WTtXO1EsZTtROzs7WTthLE07WTtZO2E7OzsrQyxTOzs7O3lDO3VDOzs7WTtXO1Msc0I7UyxzQjs7O1M7Ozs7O2EsTTs7Ozs7Ozs7Ozs7O1U7VyxNO1U7Ozs7O1U7Ozs7USxPOzt3Qix3QjtxQjt5QixxQztJLGM7a0IsTTs7O3NCOzs7Szs7STtLLE07STs7Tzs7O1U7Ozs7Ozs7Uzs7O0k7OztJOztLLE87SztLO0k7SztNO007Ozs7Ozs7c0IsUztLO0s7Szs7Ozs7O0s7Szs7Ozs2Qjs7O0k7SSxPOzs7Yzs7Ozs7Ozs2QjtJLE87OztjOzs7ZTtnQixNOzs7YzthOzs7RztJOzs7d0MsZ0M7O0k7bUM7O0c7O0k7SyxPO0ssUTtLLE87STs7O087TztPLE87TTs7STtJO0ksTztHOztJO0k7Ozs7Ozs7O1U7OztXO2E7OzRCLDhCOztVLFc7Ozs7Ozs7O1ksa0I7WSxXO1k7O2U7aUQ7WSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVLHNDO1U7b0I7OztzQjs7Ozt1QjtzQjt1Qjt3Qjt3Qjs7Ozs2Qjs7OztpQztnRjtpQztnQzs7Ozs7c0I7cUI7Ozs7O1UsTzs7O1UsTzs7O1U7VyxPOztVOztVOzs7VzthOzs7Z0I7Z0Isd0I7OztlOztVLFc7Ozs7Ozs7Ozs7O1UsdUM7VSxXOzs7Ozs7Ozs7cUI7Ozs7Ozs7O1U7Ozs7VztXO2E7OztnQjs7O21COzs7b0Q7O21CO21COzttQjs7bUI7O3VDOzJCOztlOztVO1c7WTtjOzs7aUI7aUI7OztnQjs7O1k7Ozs7OztVO1csTzs7VTs7Ozs7Ozs7O087TyxXOzs7O007O0s7O0c7O0k7OztJO0k7Ozs7O1EsTzs7O2tCOzs7O3FCLE87OzJDLDhCOzs7O3FCLE87OzhDLGlDOzs7Ozs7OztxQixPOzs7K0I7K0I7OEI7OztxQjs7cUI7Ozs7NkI7O2tCO2lCOzs7Ozs7UTtTLE87O1E7OztRO2dCOzs7Rzs7STs7O0ksWTs7STtLLE87O0k7Rzs7STs7K0IsOEI7O0ksVTtJLE87OztjOzs7OztlLFE7O2UsTTs7O2M7YTs7Rzs7SSxPOzs7YyxlOztlLE07O2M7YTs7Rzs7STs7Ozs7TTs7O0k7Rzs7STtJOzs7OztTOzs7VTtZOzJCO2U7VTtVO1MsTzs7Uzs7VTs7YTs7OEI7O1MsTzs7Uzs7O1UsVTs7O1U7WTtVLE87Uzs7WTs7NkI7O1MsTzs7OztLLE87O0c7O0k7Szs7TTtLLEksOEM7Ozs7O00sTTs7Ozs7Ozs7MEI7STtJLEksZ0Q7Ozs7O0ssTTs7O0c7O0k7STtLLHFCOzs7Ozs7O1M7Ozs7Ozs7O1M7O1U7O2E7OzhCOztTLE87Ozs7OztTLGtDO1M7O1M7Ozs7VTtTOztLLE87O0c7O0k7Ozs7OztPOzs7UTtRLGM7ZTs7a0I7Ozt3Qjs7Szs7O3lCLE87STs7Ozs7Szs7Ozs7Ozs7Yzs7OztLOztNLHVCO007Ozs7OztJLE87Rzs7STtJLE87Ozs7O2M7ZSxTO2UsRztnQixXO2UsWTs7Z0I7OztpQjtpQixZOzs7Ozs7ZSxXO2UsVzs7OztHOzs7STtJO0k7STtLLE07SztPOzs7VSxZOztXOzs7aUI7WSxVOzs7VztXOztVLE07Uzs7OztLLFU7OztLO2U7STtLLGM7SyxXO0ssa0I7SSxNO0c7OztLO0s7TSxPO00sSztLO007O1M7OztTLEcsb0M7Ozs7Ozs7O087Tzs7Ozs7Ozs7Ozs7OztLOztROzswQixpQzs7O0ssTztJOztLO00sTztNLEs7Szs7Ozs7Ozs7OztXO2E7OytCLGlDOztZOzs7Ozs7OztlLE87O3dDLHNCLG9COzs7O2U7ZSxPOzt3QyxzQixvQjs7Ozs7O2U7Ozs7Ozs7Ozs7Ozs7ZSxPOzs7Ozs7Vzs7O007O0s7STtJO0ssTztLLEs7SSwwQztJO0c7O0k7SztLO007Ozs7VTs7O2E7MkQ7YTtZOztpQjs7b0M7Ozs7O1M7O1Msa0M7UyxXOzs7aUI7OztJO0k7Rzs7O0ssVztLLFc7UTtNLE07SztLLE87STtJLEksVywyQixjOzs7O0s7Szs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7SyxHLG9CLE07Ozs7Ozs2QixPOzs7OzZCLE87OztTLE87O2tDLGtCLGU7Ozs4QixPOzs7UztTLGtCLE87O1M7Ozs7Ozs7Ozs7TSxrQixPOztNOztLO0k7cUI7SSxJOzs7d0I7OztJO0c7O0k7O2M7OytDO2M7YTs7Rzs7STs7Yzs0RDtjO2E7O0c7O0k7O2M7NkQ7YzthOztHOztJO0k7Ozs0Qzs7OztHOzs7O21CLE87SyxzQzs7Ozs0Qjs7OEI7Ozs7OztJOzthLHdDLFk7Rzs7STtJO0s7Szs7Ozs7Ozs7OztPLE07Ozs7OztHOztJO0k7Ozs7Ozs7VSx3QztVLFc7Ozs7Ozs7Ozs7Ozs7OztTOztLOztHOztJLFk7Ozs7SyxnQyxVOzs7Ozs7TSxjOzs7O08sc0MsTztPO1EsVztRO1MsVztTO1UsVztVO1csVztXLFMsTzs7Ozs7Ozs7Ozs7Ozs7Tzs7TTs7Szs7STtHOztJLGtCLE87O0ksSSxXLGtCOzs7Ozs7Ozs7TztPO08sTTs7Ozs7RzswQztHOztJLHlCOztHOzs7SSxTOzs7Szs7O007TTtLLE87Ozs7O0s7OztNO00sUztNLE07SyxPOzs0Qjs7OztJLHNCO2tEO0ksb0I7SSxPOzs7SSw4Qjs7Ozs7Ozs7O1E7O1MsVztTLEk7O1M7Z0I7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7OztJOzs7SSxTO0k7Rzs7STtLLHVCO0s7Tzs7Ozs7VTtTO0k7STtHOztJOztLOztLO0s7O0s7OztRLFc7UTtPO0s7STtJOztLOzZCOztJOztPOztROzs7UTs7Ozs7O1k7O2EsVzt5QjthOzthLE07Ozs7OztZOzthLFc7c0I7Ozs7OztPO087Ozs7O2lCOzs7Ozs7USxJLDBDO1E7O087O1E7UTtRLFM7UTs7ZTs7USxVOzs7OztTLEc7Ozs7O21COzs7bUI7Ozs7Ozs7Tzs7UTs7Ozs7a0I7Ozs7TztPO1E7MEMsbUM7OztZO1k7Ozs7Ozs7WTtXO1MsdUIsNEI7Uzt1QixrQixtQzttQyxrQztpQyx3Qjs7O1k7WTtXOzs7WTs7ZTs7ZTt1Qjs7Vzs7O1k7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7dUI7O1c7OztZOztlOztlO3VCOztXOzs7WTthLGtCO2E7O1k7WTtXOzs7WTthOzs7O2U7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O2U7OztlOzs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7OztlOzs7ZTs7O2U7OztXOzs7WSw0Qjs7O2E7OztZO1c7OztZOzs7OztZO1c7OztZO2E7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7ZTs7Ozs7Ozs7ZTs7Ozs7OztlOzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7ZSxNOztXOzs7Vzs7Uzs7Ozs7OztRLE07OztPO087Ozs7Ozs7OztVO1c7WTs7OztXOzs7Ozs7MEI7Ozs7Ozs7OztPOzs7UTs7O2lCO1E7VTs7MEIsbUM7O1EsYztRO1U7Ozs7YTtjO2UsUTs7OzthO2M7Ozs7Ozs7Ozs7O2M7Yzs7Ozs7OztjOzs7aUI7aUI7aUI7a0IsaUI7a0I7a0IsWTtpQjs7Z0I7O2E7WTs7YTthLG1DO1k7OztPOzs7Ozs7Ozs7Tzs7OztRO1E7Ozs7Ozs7O087O29COztTO1U7VSxPO1UsYztpQjtROztXOzs7YyxJLGlCLE87YyxPO2E7OztRLEk7Ozs7Uzs7VTtVLGtCO1U7UyxNOzs7O087Ozs7aUI7OztvQjtvQjttQjs7Ozs7OztPO1EsTTtPOzs7Vzs7WTtjOzs7OztpQjtrQixTO2tCLEcsc0M7a0IsWTs7O21CLEk7Ozs7cUIsTTs7OzttQixhOzs7OztrQjs7O1csTzs7O3FCO3NCO3dCOzswQyxnQzs7c0IsSztxQjtvQjs7VTtRO1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztXO1c7WTs7Ozs7Ozs7Ozs7Ozs7O1U7VztZOzs7Ozs7Ozs7O087UTs7VyxPOzs7cUI7cUIsTzs7b0I7OztVO1E7UTs7O1c7Ozs7O1ksVztZLEs7Ozs7O2U7Z0IsSztnQixLO2dCLE87Z0IsZTs7d0I7ZTtnQix3QjtnQixPO2U7Ozs7OztvQjtnQixvQzs7Ozs7Ozs7Ozs7Z0I7Z0IsRztpQjs0QztnQjtlO1k7Ozs7Ozs7NEI7Ozs7O1c7WTs7Z0I7Ozs7O1ksVTs7O2E7Yzs7O2M7YTtjLE07OztZLE07OztXO1k7YztnQjs7O21COzhCOzttQjtrQjs7O1k7WSxPO1k7OztlOzs7O1csTTs7O1E7Tzs7O1E7Uzs7O1M7O1M7VTtZOzswQixXLHlCOztVLE87VSxPOztVOzthOzsrQix5Qzs7VTtXOztjOzZDLHVCO1c7WTthO2U7O2dDOzthLFc7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7TztRO1E7VTs7OzthOzs7ZSxzQjtlOztpQixXO2lCO2lCLEk7Ozs7Ozs7Ozs7ZTtnQjtpQixPO2lCLFU7OztpQjtnQjtnQjs7OzthOztjLFk7Ozs7Ozs7Ozs7a0I7bUI7cUI7Ozs7Ozs7bUIsTzttQjtxQjs7O3dCO21DOzt3QixrQjt1Qjs7bUI7bUIsWTtrQjtpQjtjLGdCO2M7ZSxXO2UsUTtlLE87ZSxVOzs7Ozs7Ozs7Ozs7O2UsRztnQixTOztnQjs7O29COzs7Ozs7Ozs4Qzs7bUI7aUIsTztpQixXOzs7Ozs7Ozs7O29CLG1CO3FCO3FCO3NCO3NCOzs7eUY7O29CO3FCLG1EO21COzs7b0I7OztvQjtxQjtxQjttQyxzQzttQjs7OztrQixNOzs7Ozs7Ozs0Qjs7OzttQjs7cUI7Ozt3Qjt3QixpQjt1Qjs7O3NCOzs7eUI7d0I7O29CO3FCOzs7Ozs7a0IsTTs7O2lCO2tCOzs7OztpQixjOzs7Ozs7OztrQixhOzs7aUM7a0I7bUIsZ0I7bUI7O2tCO21COzs7Ozs7O21CLGU7Ozs7bUI7Ozs7Ozs7O2dCOzs7Ozs7OztjOztZOzs7Tzs7Tzs7O1E7VTs7OzRCOzRCLGdDO1E7Ozs7TztTOzt1Qiw0Qzs7UTs7Tzs7Ozs7aUI7Ozs7Tzs7O1E7Ozs7O087OztPLE87USxNO087UTtVOzs0QixPLDJCOztRLFc7Ozs7VTt1QztTO087UTtVOzsrQiw2Qzs7O1E7UTtjLHdDLFk7Tzt1Qzs7O087OztPOzs7UTtRLGU7TztRO1MsTztTLFU7UyxPO1MsVTs7Ozs7Ozs7Uzs7OztVLE87VSxVO1UsTztVLFU7Ozs7Ozs7OztZOzthO2E7O1k7Ozs7UyxNOztRLE07Ozs7O1E7O1M7Vzs7NEI7O1M7VywyQyxjO1MsTztTLGtCO1MsTTtTO1E7Ozs7O2tCOzs7Ozs7TztRLE07O1E7O1M7Vzs7NkIsMEM7Ozs7O087OztTO1MsTTs7Ozs7Ozs7O087UTs7Uzs7O1U7VSxNOzs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7OzRDOzs7UTs7UyxPO1M7Vzs7OztjLFc7YyxPO2E7Ozs7Tzs7O1E7O1c7O1E7UTs7Ozs7YTs7Ozs7OztVLFc7VTs2QjtTOztPOzs7Ozs7VSxNOzs7Ozs7TztjO1E7O1csTzs7O3FCOztvQjs7VTtPO1E7O1MsVzs7O1k7YSxROzs7WTtZLEk7Ozs7O2E7YyxVOzs7YTs7OztnQjttQztlO2E7OztZO1c7UyxvQjs7Ozs7O1E7UztXOzs7YyxJOzs7OztlO2dCO2tCOztvQyxvQixjOztnQjs7Z0IsTTtlOztnQjtrQjtpRCxZO2dCOzs7O2tDOztvQixLO3FCO29COzs7OztnQjtlLE07Ozs7YzthOzs7OztRLE07Ozs7Ozs7YTs7Z0I7TzttQjs7O1E7VTs7aUMsdUI7OztRO087Ozs7O2lCOzs7O087OztROzs7USxXOzs7TztPOzs7Tzs7OztROzs7O1E7a0M7UTs7Ozs7O087O1EsTTs7O087Ozs7O2lCOzs7O087O1EsTztRLGE7Ozs7VTt5QztTO087UTtVOzsyQiwrQzs7UTtPOzs7OztpQjs7OztPOzs7OztRO087UTs7UztTO1E7UTs7Ozs7Ozs7O087O1E7Tzs7Tzs7O1E7UTtPOztPOzs7O1E7UTs7OztpRzt5Qjs7TztPOztPOzs7Ozs7O1E7O1E7OztnQzs7O1MsTTtROztTLE87UyxPO1MsVzs7O3VDLGU7Ozs7OztPLEksaUQ7Tzs7Ozs7aUI7Ozs7Tzs7O1E7OztROztxQztRO1EsTztPOzs7Ozs7Ozs7Tzs7Ozs7UTs7Ozs7O087Ozs7Ozs7OztPOzs7UTtVOzs7YSxJOzs7Ozs7Ozs7Ozs7b0IsSSxTOzs7OztxQjs7d0I7O29ELHFCOzs7cUIsTTs7O29CO3FCLFE7Ozs7OztvQixJLFc7Ozs7OztxQjtzQixPO3NCLE87O3NCO3FCO3FCOzs7O29CO3FCLFE7Ozs7Ozs7Ozs7O21CLEksVzs7Ozs7b0I7O3VCOzttRCxxQjs7O29CLE07OzttQjtvQixRO29CLFc7Z0M7Ozs7OztjLEksVTs7Ozs7O2U7Z0I7aUIsTztpQixROzs7O2tCOzs4QjttQjs7O3NCLGE7Ozs7OztzQjs7Ozs7Ozs7Ozs7ZSxNOzs7YyxJOzthO1k7O2E7YSxPO1k7Ozs7USxXOzs7OztXO1ksTztZLE87WSxPO1c7Ozs7OztZLHNCOzs7O3FCOzs7cUI7dUI7Ozt1Qjs7Ozs7UTs7TyxNOztPOztRLFc7OztROztRLE07O08seUI7Tzs7Ozs7aUI7Ozs7Tzs7O1EsVzs7Ozs7TztRLE07O087USxRO1E7USxXO29CO1E7Tzs7Ozs7aUI7Ozs7O087OztVO1U7WTsyQyw4QjtXLE07O1U7Uzs7O087UTtTLFc7UyxPOzs7OztTLE07Ozs7O1E7Ozs7Ozs7O1k7YTtjLEs7YyxLO2MsTztjO2E7Ozs7OzthOztnQjs7NkMsc0I7OzthLE07Ozs7UyxTO1E7OztPLE07O087Ozs7USxLO1E7VTs7OztjO2MsTzthOzthO2M7Z0I7OzttQjtvQixROzs7bUI7bUI7O29CLFE7b0IsTztvQixTO29CLGE7b0I7OztvQjs7cUI7dUI7Ozs7Ozs7O21CO2tCOzs7OztjO2E7WTs7Ozs7Tzs7Ozs7Ozs7O087OztRLFc7OztRO087O087OztRO1E7Ozs7OzswQjs7O3lCOzs7Ozs7O087Ozs7Ozs7Ozs7OztROzs7Tzs7USxRO1EsYTs7OztVO3lDO1M7TyxJLGlEO087Ozs7O2lCOzs7O087OztRO1U7OzthLFk7YTs7YyxRO2MsTTthO1k7O2E7YSxPO1k7Ozs7Ozs7VyxXO1c7OEI7VTtPO1EsTztRLFc7Ozs7O1c7WTs7O1ksTztZO1c7Ozs7OztZOzs7ZTs7OztvQjtvQjs7bUI7O21CO29CO3NCOzs7eUIsTzt3Qjs7eUI7eUIsTzt3Qjs7O29CO21CO2tCOzs7O2EsTzs7O1k7YTs7O2EsTzs7Ozs7O1E7Ozs7Ozs7OztPLE07O087O1EsVzs7O087OztPOzs7UTs7Ozs7O2E7YTtZOzs7Tzs7Ozs7Ozs7O087O1EsTztRLE87USxXOzs7O1csTTs7Vyx5Qzs7WTs7YTthLE87b0I7OztvQjtXO1ksVzs7O1k7Vzs7Ozs7cUI7Ozs7TyxNOzs7Tzs7O1EsSztRLFc7OztRO087Tzs7Tzs7Ozs7UTtVOzs7YTs7Yzs7O2MsVTtjLFc7Ozs7O2E7O2M7OztlLEs7O2U7ZTtpQjs7Ozs7ZSxTOzs7OzthO2MsaUI7YztnQjs7YyxZO2MsWTtjO2M7Ozs7aUI7O2MsUTthLEk7Ozs7OztjLE07OzthOzs7Ozs7Ozs7Ozs7O1k7Ozs7Ozs7Ozs7Ozs7VztZO1c7Ozs7OztZO2M7OztpQjtrQjs7O2tCLFU7a0IsUztrQixVO2tCLFk7a0I7b0I7a0I7b0I7O2lCLEk7Ozs7OztrQixNOzs7aUI7OztnQjs7Ozs7Ozs7WTs7O1k7VztZO2EsTzthLE87WTs7Ozs7O1ksTTs7O1c7Vzs7UTs0Qjs7O1EsTztRLFE7UTs7Ozs7O1E7O1M7UztTO1M7UyxPO1E7O08sTTs7Ozs7O1EsTTttQzs7Ozs7Ozs7Ozs7OztXOztZLE87WTs7WSwwQjtZOzs7OztzQjs7OztXLE07Ozs7O08sTTs7OztJOzthO2E7WTs7YTsyQztZOzthOzs7NEQ7O2E7WTtHOzs7Ozs7STtLOztNO1E7OztXO1ksUTs7OztZLFU7Ozs7Vzs7O1U7Ozs7Ozs7O0s7TTtPLE87TyxPO08sVTtNO007TTs7Ozs7O00sTTs7SyxXO0s7YTs7OztJO0ssVTs7OztLLEs7SztPOzs7O1c7VyxPO1U7O1U7VyxROzs7VTtTOzs7O0s7SyxVOzs7Ozs7Ozs7TSxHLDRCLDBEOztLO2E7Z0I7TTtPO1EsTztlO087UTtRO1EsSTs7Ozs7UTs7Ozs7TTtPLGM7TztPOztnQjs7Ozs7OztPLE07OztLO00sVTs7O0s7SyxJOzs7O00sc0IsVztNLE07Ozs7O0k7OztJOztPOzsyQixxQzt5QixPLHdDO0k7Rzs7O0k7Szs7TTs7Ozs7WTs7Ozs7Ozs7Ozs7Ozs7SSxnQztJO0c7O0k7O087VTtVO0ksTzs7OztjO2UsTztlLFE7ZSxROzs7ZSxVOzs7ZSxPOztlLFc7ZSxHLDJDO2UsVztlO2UsWTs7Ozs7aUMsTzs7O2UsTztjO2MsVTtjO2M7YTtHOztJOztLLFE7OztLLFU7Ozs7c0M7Ozs7O0ksYzs7Ozs7Ozs7Ozs7Ozs7SyxNOztJOzs7STs7SyxNO0s7OztLOzs7Ozs7c0I7OztTOztVLFc7bUI7Ozs7OztJO0c7O0k7Ozs7O0s7SyxtQjtJLE87Ozs7YztlO2dCLE87Z0IsUTs7Ozs7OztlOzs7Ozs7Ozs7Ozs7OztlLE07Ozs7YyxHO2UsUztlO2dCO2dCOzs7OztpQixNOzs7Ozs7OztjO2E7O0c7Ozs7Ozs7Ozs7STs7Ozs7O0k7OztNO087O1E7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7UTs7O1k7YSxjOzs7Ozs7O1k7Vzs7WTs7Ozs7O1k7VzsyQixTO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Tzs7Ozs7Ozs7Ozs7Szs7OztLOzs7TTs7Ozs7O1c7WTs7Ozs7O2dCOzs7Ozs7OztXO1U7Ozs7Ozs7Szs7O1E7dUM7TztLOzs7Ozs7O0k7Ozs7O0s7Ozs7OztLLEs7TSxNO0ssaUI7SztNO007Ozs7O08sTTs7Ozs7OztPOztRO1E7O1U7Ozs7O0s7TTs7Ozs7O0k7Szs7Ozs7Ozs7OztVO1c7Ozs7Ozs7Ozs7Ozs7VztVO1M7Ozs7Szs7Ozs7Ozs7TSxPO00sVztLOzs7UTtxQztPO0ssVztLO007Tzs7O087Uzs7MEI7O087Ozs7SyxTOzs7O2tCOzs7TTtPO087OztLOzs7Ozs7Ozs7SSxNOzs7STtLO087O3lCLG9DOztLO0s7OztNO00sTTs7Ozs7Ozs7O0k7SyxTOzs7O0s7Ozs7Ozs7OztJO0c7O0k7Ozs7SztLLG1CO0s7Tzs7OztVO1c7YTs7OztnQjtpQjttQjs7OztzQjt1QixJOzs7c0I7cUI7Ozs7O2dCO2lCO2tCLE87a0IsTztpQjs7Ozs7OztpQixNOzs7Z0IsZTtnQjtlOzs7OztXO3dDO1k7O3lDO1c7OztXLE07O1UsTTs7Uzs7Ozs7STs7OztNLHlCO007O007OztPLE87Ozs7Ozs7Szs7SztNO007TztTOzs2QixPLG1DOzJCLDhCO087Uzs7OzthOztZOztZOzs7YSxPO2E7WSx1QjtZO1c7OztPLE87Tzs7Ozs7Ozs7USxNOztNLE07OztJOzs7OztLO007OztNO2dCOztLLE87OzZCOztJO0k7Ozs7UztVLEs7VSxROzs7O1Usd0IsTztVOztTO1E7SyxHO007TyxPOztTOzsrQixPLDRCOzs7Ozs7Ozs7STtLOztLO0s7O0k7Ozs7SztPOzt5Qiw4Qjs7Ozs7Ozs7Ozs7O087UTtTLE87UyxVOzs7Ozs7O1csSztXOztZLHNCO1k7Ozs7Ozs7OztPO1E7c0I7Ozt3Qjs7Ozs7STs7Ozs7O0ssTztLOztLO0s7Ozs7Ozs7Ozs7Yzs7OztJO0ssVztLLE87SyxVOzs7OztLOzs7OztzQjtLOzs7UztVLEs7VSxPO1UsTztVO1UsVTs7VTs7MEI7Ozs7Ozs7O1M7OzBCOzs7Ozs7O1E7TTs7O007O1M7OztZO1ksTztXOztLO2M7SztNOzs7Ozs7Ozs7OztNOzs7O1U7Ozs7OztNO007TTtNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE07OztJOzs7Szs7O007TztPO087TSxNOzs7Ozs7Ozs7STtLLFU7Ozs7O0s7Ozs7Ozs7OztJOzs7Ozs7O08sdUI7Ozs7Ozs7Ozs7O0k7TztLLFc7SyxNOzs7STs7d0I7SztPOzs7O1U7VzthOzs7O2dCO2lCLFE7OztpQjs7Z0I7ZTs7Z0I7Z0I7Z0I7OzswQjsyQixPOzs7MkIsTzswQjs7Ozs7eUI7ZTs7OztVO1M7Ozs7O0ssVTs7SyxNO0k7OztLOztLLDBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxNOzs7O0k7SyxPO0s7Tzs7O1U7VTtTOzs7O0s7Ozs7Ozs7OztLLE07O0ksTTs7O0k7O087dUMsOEI7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssSztLLE87STtLO00sTztNLGM7Ozs7Ozs7Ozs7Ozs7OzthOztLLGtCO0s7O3VCLDZDO0s7O0k7STtJO0c7Ozs7Ozs7Ozs7O0k7SztPOzt5QixrQixZOztLO087STtLOzs7UyxXO1MsVztTLFk7OztpQjtXLFc7Vzs7O2Msa0IsUTs7ZSxNO2M7YTs7O1UsTzs7UyxPO1E7SztNO007TSxJOzs7OztNOzs7Ozs7O0k7SztPO0s7TztLOzs7Ozs7O3NCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Ozs7OztJLGtCO0ksTzs7OztjO2UsTTtlO2U7ZTtpQjs7OztxQjtxQjtxQixPOzs7K0I7K0IsTzs7OEI7O29COztvQjtxQjtxQjt1Qjs7OzBCOzs7OzJCOzZCOzs7Z0M7aUM7bUM7Ozs7c0MsTzs7cUM7aUM7aUMsVztpQzs7aUM7Ozs7O2lDO2dDO2dDOzs7Ozs7Ozt3Qzs7Ozs0Qzt5SDs0QzsyQzs7K0I7O2dDO2dDLE87OytCOzBCOzBCOzs7Ozs7Ozs7OzsyQixPOzBCOzs7Ozs7Ozs7eUI7O3FCO3VCOzt5QywwQixpQjs7cUI7dUI7OzswQjswQjt5Qjs7Ozs7c0I7dUIsa0I7O2tDOzs7cUI7c0IsOEIsVzs7OztvQixhOztxQixPOzs7K0I7K0I7OEI7O29CO29CO29CLEc7cUI7O3dCOzt5Qzs7cUI7cUI7O29COztrQyxPLGlCOzs7cUIsVztvQjs7O3VCO3VCLE87NEQ7O3NCOztvQjs7Ozs7bUI7Ozs7O2UsVztlO2lCOzs7b0IsTzs7OzhCOzs7Ozs7OytCO2lEOytCOzttRCxlO21ELGU7OzsrQjs7OztrRDs7Ozs7OEIsTzs7Ozs7Ozs7NkI7O21CO2tDO2U7YztlO2dCLE87K0I7Ozs7ZTtnQjtrQjtnQjs7bUIsWTs7bUI7O2dCO2tCOzs7cUI7Ozs7O3NCO3NCLFE7OztzQixNOztxQixtQjtxQjtvQjs7Ozs7O2U7Z0I7a0I7OztxQjtxQjtvQjs7Ozs7YztlO2lCOztrQzs7ZTtpQjs7a0M7Ozs7O2UsTTs7Ozs7OztlOzs7a0I7OzttQjtrQixPOzJCOzs7OytCOztnQzs7OztpQztpQyxPOzs7O2tDOzs7cUM7OztzQztzQyxvQjs7b0M7O2lDOzttQzt3Qzs7Ozs7Z0Q7OztpQztrQzs7OztzQzs7a0MsTztrQyxRO2tDLE87OztrQyxPO2lDOzs7Ozs7Z0M7OytCOzhCOztpQjs7ZSxPOzs7Ozt5Qjt5Qjt3QjtjO2M7ZSxrQyx1Qjs7ZTs7O2U7ZTs7Yzs7O2M7eUM7YTs7OztJOzs7SztPOzs7VSxXO1M7O0k7OztlOztrQjs7O3FCO3FCO29COztlLE87Yzs7Ozs7Ozs7YztjOzs7Ozs7OztjOzs7O2M7Ozs7YTs7Rzs7O0ksTzs7Ozs7YztlOzs7O2U7Ozs7ZSxPO2UsUztjO2tDO2M7YTtHOzs7Ozs7Ozs7STtLLFE7SztPLDJDOztLO087Ozs7VztXOzs7YyxvQjtjLGM7YTs7O1c7VyxPOzs7cUI7cUI7O3FCLHlCO3FCOztvQjs7O1U7O1UsOEI7VTtXO2E7OztnQjtpQjttQjs7cUMsTyw0Qjs7aUI7aUIsa0I7aUIsVzs7OztpQixPOzs7OzsyQjs7OzBCOztnQjtpQjttQjtpQjs7O2lCOztnQjtpQjs7O29CLFk7Ozs7c0I7Ozs7O3VCLE87Ozs7OztvQjtvQjs7bUI7OztnQjs7O21CO21COzhCOzs7O2tCOztnQjtlOztnQjtnQjtnQixPOzt1QyxxQzs7ZTs7Ozs7O1c7VzthOzs7Z0I7OztpQixPO2dCO2U7O1U7eUMsTyxpQjs7O29ELGU7OzBELGU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVO1c7VzthOzs7Z0IsTzs7Ozs7MEI7MkIsTzsyQixPOzBCOzs7MkI7NEIsTzs0QixPOzJCOzs7Ozs7OzBCO3lCO2U7O1U7VyxxQjt5RDtXOzs7O1c7OztnQjs7YSxNOzs7O2U7OztrQixzQixPO2tCLE87OzRCO2lCOzs7Ozs7O1U7VztXO1c7YTs7O2dCLE87Ozs7OzBCLGlDOzBCOzJCOzJCOzJCLE87MEI7Ozs2Qjs4QixLOzhCLE87OEI7OEI7NkI7Ozs7NkM7c0Q7OzhCOztpQzs7aUM7O2tDLE87aUMsTztnQzs2QixPOzs7O3VDOzs7Ozs7O3VDLFc7dUM7Ozs7c0M7NEI7OzBCO3lCO2U7OztXO2E7OztnQjtnQjtnQjs7aUI7aUIsUTs7aUI7OztrQjtvQjs7O3VCO3NCOzt1Qjt1QixPO3NCOzs7a0I7b0I7Ozs7O3VCO3NCO2lCOztnQjs7bUI7Ozs7O3NCO3NCO3FCO2dCO2U7Ozs7OztXO1ksVTs7O1c7Ozs7NkIsTyx5Qzs7VTs7YTs7O2dCO2dCO2U7OztVOzs7YTthLE87Ozs7O3VCO3dCO3dCLFM7dUI7dUI7c0I7WTs7O1U7Ozs7O2tCOzs7cUI7Ozs7O3NCLE87cUI7b0I7O1M7Ozs7O0ssSTtLO087OztVO1U7Uzs7O0k7Szs7O1Esb0I7Ozs7WTs7K0M7O1EsTTtPOztJOzs7TztPO007O0k7STs7O0k7Szs7eUIsZTt5QixlOzs7Ozs7OztJO0c7O0k7Szs7O0k7Rzs7STtLO087Ozt5Qjs7VTtVO1M7Szs7Szs7TTthO0s7O0k7Rzs7SSxPOzs7O2MsTzthO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7YyxtQjs7YzthO0c7O0ksWTtJLG1CLFE7Ozs7Ozs7SztNO1E7O1c7OzthOzs7ZTtNOzs7UyxPOzs7TTs7O08sTztNLFc7O0s7O0k7OztJLFc7OztLLE87STtJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7OztJLE87Ozs7O2M7Ozs7Ozs7O2E7O0c7O0ksSztLLE87STtLLE87SyxPO0ksTztHOztJOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87Ozs7Ozs7O1EsTzs7USxPOzs7USxPOzs7USxPOztRLE87Ozs7Ozs7Ozs7Tzs7OztRLE87TyxPOzs7Ozs7Ozs7OztPOzs7Ozs7O2lCLFc7aUIsTztnQjs7aUIsTztnQjs7Tzs7O1E7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsVztpQixPOztnQjs7aUIsTztnQjs7O08sTzs7O08sTzs7Ozs7aUI7O2tCLE87aUI7Ozs7Ozs7O2lCO3lCO2lCLHVCO2dCOzs7Tzs7OztROzs7Ozs7Ozs7Ozs7OzthLG9CLFE7OzhCOzs7Ozs7Ozs7Tzs7Ozs7OztrQjs7O2lCLE87Z0I7O2lCLE87Z0I7O087OztRLE87UTtVOzs7YSxtQjs7YTtZOztPOzs7Ozs7Tzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7aUI7a0IsTztrQixPO2lCLE87O2dCOztPOzs7Ozs7USxVOztRLGM7Ozs7OzswQjs7Ozs7UTtTOztZO1c7Uzs7UztTO1M7O2tCOztTLFc7UyxNO1EsTzs7Ozs7Ozs7OztPLFc7TyxPOzs7Ozs7Ozs7Tzs7OztROztXO1ksTztXLFc7VyxPOztROzJCO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOztROztXLFc7VyxPO1U7UTs7VzttQjtXLE87VTtPLE87OztPLHNCLE87TyxPOzs7Ozs7Ozs7O08sTzs7Ozs7aUIsTzs7Ozs7MkI7MkIsRzs0QixXOzRCOzs7Ozs7Ozs7OzRCOzZCLE87Ozs2QixPOzZCLE87NEI7Ozs7Ozs7OytCOzs7Ozs7OzsyQjswQjtnQjs7O087Ozs7O1EsWTtRLFM7TyxPOzs7OztpQixPOzs7Ozs7OzJCLFc7MkIsTzs7Ozs7Ozs7MEI7OzJCLFc7MkIsTzs7Ozs7Ozs7MEI7OzJCLE87OzBCO2dCOzs7O08sTzs7O08sTzs7Ozs7aUIsVztpQjtpQjtnQjs7OztPLE87Ozs7O2lCLE87Ozs7OzJCOzs0QixPOzJCOzsrQzs7MkI7MEI7Z0I7Ozs7TyxPOzs7OztpQjtpQjtnQjs7O08sbUIsTztPLE87O08scUIsTztPLE87O087OztRLE87USxPO08sTzs7O087OztRLE87TyxPOzs7Ozs7Ozs7OztPLE87Ozs7O2lCO2lCO2dCOzs7O08sTzs7O08sTzs7Ozs7aUIsTzs7Z0I7Ozs7TyxPOzs7TyxPOzs7OztpQjs7Ozs7OztvQjtxQixXO3FCLE87cUIsTztvQixPOzttQjs7b0IsTzttQjs7MkI7Ozs7Ozs7Z0I7OztPOzs7USxPO08sTzs7Ozs7Ozs7aUI7OztPOzs7USxPO08sTzs7Ozs7Ozs7aUI7OztPOzs7OztROztXO1ksTzs7WSxXO1ksTzs7O1csVztXLE87Ozs7Ozs7TztRLDRCOzs7USxPO08sTzs7Ozs7Ozs7aUI7O3FDOzs7Ozs7Tzs7OztRLE87TyxPOzs7Ozs7Ozs7Ozs7TyxzQixPO08sTzs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7TyxxQixPO08sTzs7O087OzJCOzs7O2E7OzsyQjs7MkI7OzJCOzsyQjttQzs7TyxPOzs7Ozs7Ozs7TyxzQixPO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOzs7UTs7O1csTzs7USxPO1EsTztPLE87Ozs7Tzs7Ozs7OztpQixPOztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsTzs7Z0I7O2lCLE87Z0I7OztPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7O087OztROztXLFc7VyxPO1U7UTs7Vzs7O1k7WTtjO1csTzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7OztpQjs7O08sc0IsTztPLE87Ozs7SSxPOzs7OzZCLDJCO0c7Rzs7O007O087O3FDOztNO0s7Ozs7STsyQjtHO3NDLGtDOytCLDJCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOztJOzs7USxNO087SSxvQjs7Ozs7O0k7SyxPO0ssTztLLE87SSxXO0c7cUIsc0MsWTs7O0k7SyxROzs7O0ssTTs7Ozs7OztrQjtHOztJO0ksTztHOztJLFc7STtHOztJLFc7STtLLFE7SyxRO0ksdUI7SSxNOztHOztJO0k7OztNOzs7OztHOztJO0k7Ozs7O1E7O1E7Ozs7O1M7USxPOztHOztJO0ssTTs7O0ksTTs7Rzs7STs7SyxNOzs7O0ksTTs7Rzs7SSxJLDBEOzs7OztLOztHOzs7STtLO0s7Ozs7OztLOztHOztJLFk7O0ssTTs7SSxJLG1EOzs7Ozs7OztRLE07Ozs7UTs7O1E7OztHOztJO0ssTTtLO0ssUTtLO0ksSTs7Ozs7SyxNOztJO0c7O3FCLE8sa0M7STtLLFk7SztLLE87SyxNO0ksTzs7Ozs7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7Ozs7O2U7YztjOzs7aUI7OztrQixVOzs7aUIsRztrQixNOztpQjtrQixVOzs7a0IsTztpQjtpQixXO29CO2tCO21CLE87bUIsTztrQixNOzs7aUI7a0I7b0I7Ozt1Qjt3QixNO3dCO3VCLEksc0M7Ozs7Ozt3QixNOzs7c0I7OztrQjtpQjtpQjs7aUI7Ozs7O2tCLE87aUI7aUI7a0IsVztrQjtpQixJOzs7O21CLE07Ozs7aUI7O29COzs7Ozt1QixPOzs7O3NELDhCOztrQyxPOzs7OzJELGEsa0I7aUM7aUM7Ozs7b0M7OzhDOzhDOzhDOzhDOzZDOzs7Ozs7OztvQzs7OEM7K0MsTTsrQzs4Qzs4Qzs2Qzs7Ozs7Ozs7b0M7OzhDOytDLE07K0M7Ozs7K0M7O2dELGM7K0M7K0M7Z0QsTTtnRDtnRDs7O2lEOzs7b0QsSSxNLHFDO29ELEk7Ozs7OztxRCxNOzs7Ozs7bUQ7OytDOzs4QzsrQyxNOytDOzhDOzhDOzZDOzs7Ozs7b0M7OzhDOytDOzs7OEM7NkM7OztvQztvQzs7O29DLE07K0Q7Ozs7O3NCO2lCO2lCO2tCO2tCO2lCOztpQjs7OztrQixNO2tCO2tCO29CO3VCOztrQjtrQjtpQjs7O2lCLE07NEM7OztpQjs7O2tCLFU7OztrQjtpQjs7YTtHOztJO0k7SztLLE87STs7Ozs7Ozs7OztJO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksSSxVOzs7O00sTTs7O0k7OztLO0ssTztLLGlDO0ksTztHOzs7STs7O0s7SztLLE87SSxZO0k7SyxROzs7SztPOzs7VTs7OztXLE87VztXO1U7Uzs7Ozs7SSxJOzs7O00sTTs7OztJO0s7SztLO0s7SztLOzs7Ozs7Ozs7O0s7Tzs7Ozs7VSxPOzs7b0I7Ozs7Ozs7OztxQjtxQjtvQjtxQixPO29CO29COzs7Ozs7O3VCOztpQzs7O2lDO2lDO2lDO2tDLGM7a0MscUI7a0Msb0I7a0M7b0M7a0M7b0M7aUM7Ozs2RDs7O3lDO21DOztxRDttQzs7eUM7bUM7MEQ7bUM7Ozs7a0M7bUMsTzttQyxjO2tDO21DLE07OztpQztrQztvQztrQztvQztrQztvQzs7O3VDOzs7Ozt3Qzt3Qzt3QyxLO3dDO3dDLFM7dUM7c0M7Ozs7Ozs7a0M7b0M7Ozt1QyxzQjtzQzs7OztrQzs7bUM7bUM7Ozs7Ozs7OztpQztrQzs7Ozs7Ozs7O2tDO2lDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7d0I7O2tDOztxQzs7O3dDLE87dUM7cUQscUM7a0M7Ozs7dUMsVzs7Ozs7b0M7O3FDO3FDO3FDLEs7cUMsUzs7Ozs7Ozs7Ozs7Ozs7O2tDO21DOzs7Ozs7Ozs7bUM7a0M7Ozs7Ozs7OztpQzs7O3VCOztpQyxHO2tDLE07Ozs7Ozs7aUMsRzs7bUM7OztrQyxNOzs7Ozs7O2lDOztvQzs7O3VDLE87c0M7O2lDOzs7O3NDLFc7Ozs7O21DOztvQztvQztvQyxLO29DLFM7Ozs7Ozs7Ozs7Ozs7OztpQztrQzs7Ozs7Ozs7OztrQztrQztvQztrQztvQztpQzs7Ozs7Ozs7O2dDOzs7Ozs7Ozs7d0I7O2tDO21DLFE7bUMsTTttQztrQztrQzttQzttQztrQzs7Ozs7Ozs7O2lDOzs7dUI7O2lDLEc7a0MsTTs7O2lDLEc7O21DOzs7a0MsTTs7Ozs7Ozs7O3FDOztpQzs7O2tDO21DOztvQyxRO29DLE07Ozs0QztrQzs7O21DLGM7Ozs7O3VDO3dDLE87d0MsTzt1Qzt1QyxXO3VDOzs7dUM7OztnRDt3QyxNO3VDOzs7Ozs7bUMsTTs7Ozs7Ozs7bUMsTTs7Ozs7Ozs7a0M7bUM7bUMsZ0I7bUM7Ozs7Ozs7OzttQzttQztxQzttQztxQztrQzs7Ozs7Ozs7OztpQyxNOztnQzs7Ozs7O3VCOztpQztrQzs7O2tDO2tDO2lDOzs7Ozs7Ozs7Z0M7Ozt1Qjs7aUM7a0M7a0MsZ0I7a0M7a0M7aUM7Ozs7Ozs7OztnQzs7O3VCO3VCO3dCO3dCO3VCOzs7Ozs7Ozs7Ozt1QixNO2tEOzs7Ozs7UztLO0ssUzs7STtJO0k7O087OztVLFc7VSxPO1M7Ozt3QjtLLE07O0k7STs7SztPOzs7VTs7Ozs7Ozs7NEIsZTs0QixlO1c7VyxPO1c7Ozs7OztjO1UsTztTOzs7O087OztXO1c7O2M7Ozs7Ozs7O2U7aUI7OztvQjtvQjs7bUI7OztjO2U7O2dCO2tCOzs7cUI7cUIsTztvQjs7O2dCLEs7Z0Isb0IsZTtnQjtnQixPO2dCLDZCOztrQjs7OztjO2U7Ozs7O2M7Ozs7Ozs7O2U7Ozs7O2U7ZTs7OztjOzs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7ZTtlOzs7O2M7Ozs7OztlO2U7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7b0I7cUIsSztxQjtxQixPO3FCLFk7cUI7dUI7OzswQixPOzt5QjtxQjtxQjtvQjttQjs7O2M7Ozs7O2U7Ozs7Ozs7Ozs7aUI7Ozs7b0I7cUIsWTtxQjtxQjt1Qjs7cUIsWTtxQjt1Qjs7OzBCLE87eUI7cUI7b0I7bUI7OztjOzs7O2U7Ozs7VztVOzs7O0ssVztJOzs7OztJOzs7SSxPOzs7OztjOzthO0c7Ozs7O087OztRLFU7OztPLEc7USxNOztPO1E7VTs7MEIsTyw0Qzs7USxVOzs7USxTO1EsTztPO08sVztVO1E7UyxPO1MsTztRLE07OztPOzs7VTtVO1csVztXOzs7Ozs7VyxNOzs7Uzs7O087TztRO1E7Ozs7Tzs7Ozs7Ozs7Tzs7UTs7O087Ozs7UTs7OztTO1MsTztTLE87b0I7UyxPO1MsTztTLE87UyxrQjtTLE87UyxPO1MsYTtTLE87UyxPO1MsUztTO2U7UyxPO1MsTztTLE87UztXO1E7O087OztRO1U7OzthLE87O1k7O2E7YTs7YyxPOzthLE87WTs7Ozs7UTtVOzs7YTs7O2M7YyxLO2MsTzs7YyxXO2E7OztnQzs7Ozs7O1k7O1EsTztRLFE7UTtVOzs7Ozs7O1E7VTs7O2E7O1k7USxPO087Ozs7OztVOzs7Ozs7Ozs7Ozs7Ozs7TyxTO087OztRLGM7Tzs7Ozs7Ozs7O087USxNO087UTtVOzs7YTs7WTt5QixvQzs7Ozs7O1E7OztTLEc7O2M7O1E7UyxPO1MsTzs7Uzs7WTs7OEIseUM7O1M7VTs7YTs0Qyx1QjtVO1c7WTtjOzsrQjs7WSxXO1c7Ozs7Ozs7Ozs7Ozs7O29COzs7Ozs7Ozs7OztROzs7OztTO1M7VSxPO1UsVzs7Ozs7YTs7YyxtQjtlO2dCLEs7Z0IsTTtnQixNO3VCOzs7eUI7O2E7WTs7O2EsVztZOzs7O1csTTs7Ozs7OztxQjs7OztZOztjOzs7aUI7aUIsaUI7Z0I7Ozs7OztXLE07Ozs7OztVLGM7O1c7Ozs7O1k7MEI7VztZLGdCO1k7Ozs7Ozs7OztZO2M7aUI7Ozs7Ozs7OztTOztVOzs7Ozs7Ozs7O1E7UztXOzs7YztjO2E7OztTLFM7UTs7O087USxNOztPLE07OztPOzs7O1EsVTs7O1EsTztRO1U7OzthOzs7O2M7YyxLO2M7Z0I7OztrQyx1Qzs7YyxXO2M7OzJCOzs7Ozs7YztjLE87YyxPO2E7O3FCO1k7Ozs7O1E7O1Esb0I7Tzs7Ozs7Ozs7Tzs7O1E7VTs7OztjOzs7ZSxPO2M7YyxXO2MsTzthOzthO2M7Z0I7OzttQjs7OzttQjttQjtrQjtjO2dCOzs7bUI7bUI7bUI7a0I7YTtZOzs7USxROztRLE07O087UTs7OztRLE87USxPO087Tzs7Ozs7Ozs7O08sTTtrQzs7Tzs7O1E7UTtVOzs7O1U7UTs7Tzs7O0c7SSxNO0ksYTs7Ozs7STtJOzs7O1E7OztTO1c7YztjO1M7UztRLE87Ozs7O2dCLE87OztHOztJO3VCLE87STs7O0s7TztVO1U7SztLO0ksTztHOztJLEksaUI7Ozs7O3NCO007Ozs7O0k7SyxPO0ssSzs7SyxPO0ssTztLOzs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7SztPOzs7O1c7Ozs7WSxPO1c7VyxPO1U7O1U7OztXO1ksZTtZOzs7OzthLE07Ozs7VTtXLFk7VzthOzsrQixvQixjOztXO1U7OztXO1ksTTtZLE87Ozs7OztXLE07O1UsaUMsTztVO1M7Ozs7Ozs7SyxVOzs7SyxTO0ssTTtLLE87STtJO0ssVztLOzs7OztNLE07Ozs7O0ksUztJLEk7Ozs7SywyQjtLLE07O0ksVztJO0k7SyxVOzs7SyxPO0k7SyxXO0s7Ozs7O00sTTs7OztJLEk7Ozs7SyxrQjtLLE07OztJO0s7TSxPO007Szs7Ozs7O0ssTTs7O0k7SyxPO0ssZTtLOzs7Szs7O1E7Ozs7Ozs7Ozs7O0s7OztJOzJCO0ssUTtLLFE7SyxZO0ssVTs7O0s7Ozt3QjtLOztLLFU7Szs7O0ssTztLOzs7Ozs7O1E7Ozs7Ozs7OztLLE87SyxVOzs7STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7O0s7OztROzs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Ozs7Ozs7O0k7Ozs7STs7Ozs7Ozs7Ozs7Ozs7STtLLFE7SztPOzs7VTtXLE87VyxPO1csTztXLE87VTs7a0I7Ozs7Uzs7SztPOzs7O1U7VzthOzs7Z0I7Ozs7Ozs7O2lCLFE7aUI7Ozs7aUIsUTtpQjs7OztpQjttQjs7cUMsaUM7O2lCLGdCO2lCOzs7O2lCOzs7Ozs7Ozs7O2lCOztzQjs7aUI7bUI7Ozs7Ozs7Ozs7Ozs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXO2E7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCLE87Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7O3lCOzs7Ozs7VTtTOzs7SztPOzs7VTs7Ozs7Ozs7Ozs7OztXO1UsSTs7Ozs7VyxNOzs7VTtVO1U7VTtVO1U7VTtVLFc7VTtZOzs7ZSxrQjtlLE07O2M7O1U7VyxPO1csUTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTs7Vzs7OEIsTyx3Qzs7O2dCLE87ZTtVLE07Ozs7SyxRO0ksSSxjOzs7Ozs7SyxNOztJO0ssUTtLO087Ozs7Ozs7Ozs7VTtXO1ksTzttQjs7O1U7VyxPO1csTztXLE87VSxPOzs7O0s7Tzs7O1U7Ozs7Ozs7Ozs7OztXOzs7VyxrQjs7WTs7O2EsVTs7O2EsVTs7O2EsTztZO1ksSTs7Ozs7O2EsTTs7O21CO2EsTTs7OztXLE07O1U7Ozs7Ozs7Ozs7Ozs7O0k7RztHOztJO0k7SyxhO0s7O1M7Ozs7OztJO0k7Rzs7STtLLGE7SztJO0k7Rzs7STtLOzs7SztPO3VDLDZCO0ssVTs7O0k7STtHOztJO0c7O0k7Szs7O0k7WTs7O2U7Ozs7Ozs7O2M7OztHOztJO0k7O0s7O1M7Ozs7Ozs7O0k7SSxZO0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Ozs7UTtROzs7USxPOzs7a0I7cUM7O2tCO2lCOzs7OztROzs7OztpQjs7Ozs7Rzs7STtLLE87SyxPO0ssTztJO0c7O0k7Szs7Yzs7O0k7O3NCOztJO0c7O0k7O087O087ZTs7Rzs7SSxPOzs7OztjO2U7Z0IsTztnQixTO2UsTztjO2M7dUI7d0IsTzs7OzswQjswQjs7Ozs7Ozs2QixPOzRCOzs2QixPOzRCOzBCLE87OzswQixPOzs7Ozs7O29DLE87O21DOztvQyxPO21DOzswQjs7OzsyQixPOzBCLE87OzswQjs7MkIsTzswQixPOzswQixPOzswQjs7MkI7OzhCOytCLE87OEIsVzs4QixPOzs7MEIsTzs7OzBCOzsyQixPOzBCLE87Ozs7Ozs7OzBCOzsyQixPOzBCLE87OzBCOzsyQixPOzBCLE87Ozs7OzswQjs7MEI7MkIsTzsyQixPOzJCLE87MkIsTzsyQixPOzJCLE87MEIsTzs7Ozs7Ozs7Ozs7OzBCLE87Ozs7Ozs7b0MsVztvQyxPOzttQzs7b0MsTzttQzs7MEI7Ozs7MkI7MkI7Ozs7MkIsTzsyQjs2Qjs7MEIsTzs7Ozs7Ozs7OzswQjs7OzJCOzJCOzZCOzswQixPOzs7MEI7Ozs7MkIsTzswQixPOzs7Ozs7Ozs7OzBCLE87Ozs7Ozs7b0MsTzttQzs7b0MsTzttQzs7MEI7Ozs7MkIsTzswQjswQixXOzBCLE87Ozs7Ozs7Ozs7OzBCOzs7OzJCOzs4QixPOzs2QjsyQixPOzBCOzBCLFc7MEIsTzs7Ozs7Ozs7Ozs7OzBCLE87OzswQixPOzs7MEI7OzsyQjs7OEI7Ozs7K0I7OytCLG1COzhCOzhCOzhCOytCLE87OEI7OEI7K0IsTzsrQixPOzhCLE87Ozs7Ozs7Ozs7OzBCLE87Ozs7Ozs7Ozs7OzswQjswQjs7MkIsTzsyQjs2Qjs7OztpQyxPO2dDOzsyQixPOzJCLE87MEIsTzs7Ozs7Ozs7Ozs7MEI7OzJCLE87MEIsTzs7MEI7Ozs7MkIsTzsyQixPOzBCLE87Ozs7Ozs7b0MsTzs7Ozs7Ozs4QyxPOzZDOzs4QyxPOzZDO21DOzs7MEIsTzs7Ozs7OztvQyxPO21DOztvQyxPO21DOzs7Ozs7OzBCLE87Ozs7OzJCLE87OzswQixPOzs7OzBCLE87OzswQjs7MkI7MkIsTzswQixPOztzQjs7YTtHO0c7OztNOztPO2U7Ozs7c0M7OztxQzs7TTtLOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHO0c7STtJOzs7Ozs7Ozs7STs7d0Isc0I7O2lDOztPLE07OztPOztHOztJLFk7OzswQjs7O08sTTtlLE07O0c7O0ksWTs7OzBCOzs7TyxNOztPLE07O0c7O0k7SyxPO0s7Tzs2QztJLFM7STtJLE07Rzs7STs7SztNLFM7TSxPO0s7SyxVO0s7STtJO0ssTzs7O2UsVztlLE87Yzs7O0k7STtLLE87SyxROzs7Szs7O08sSztROzs7Ozs7OzJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksWTtJLE87O0c7O0k7SztPOzs7OztVO1M7OztLO0k7RztHO0k7OztRLE07Tzs7OztJOztPLDJDO0ksTzs7O2M7OztlLE87YyxPOzs7d0IsVzt3QixPOzt1Qjs7YTs7Rzs7STtLLFc7SztLLE07O0s7O00sbUI7TSxROzs7OztJO0ssWTtLLFM7SyxPO0ssTztLLFE7STs7O2M7OztJLFk7STtJLE87OztJO0k7OztROzs7OztRO1E7USxPOztRLE07O0c7O0k7SyxRO0ssVTs7OztLOzs7Ozs7O00sTztLLFc7O0s7OzttQjtNOzs7TyxPO00sVzs7Ozs7STtHOztJLEkseUI7STs7OztjOzs7Ozs7Ozs7Ozs7O2lCLE87O2M7OzthOzs7Ozs7Ozs7OztjLGlCLE87Yyx1QztjOztlOzs7Ozs7Ozs7Ozs7Ozs7bUIsTzs7OztjOzs7YTs7Ozs7O0c7OztLLFk7O007O08sTztPLFU7b0IsTztNOztPLE87Ozs7Ozs7Ozs7TSxNOztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7OztHOztJOzs7TTs7OztPOzs7TTs7O0k7Rzs7STtLOzs7Szs7O1M7O1U7Ozs7Ozs7Ozs7OztjLE87Ozs7c0I7OztXOzs7O1k7OztXOzs7O2E7Ozs7Ozs7O1k7Ozs7Ozs7OzthOzs7Ozs7OztZLE07Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7OzJCLFM7O0ksTztHOzs7Ozs7Ozs7Ozs7O0k7STttQjtLLHNDLFE7O00sVztNLFM7Ozs7Szs7Rzs7STs7Ozs7OztJLEksbUI7STtLO00sTzs7OztrQjs7OztPLEc7UTs7TSxxQjs7OztJOzs7OztNOztLO0s7Ozs7Ozs7Ozs7OztZOzs7Ozs7Z0I7bUI7YTtjLFE7YyxPO2MsTzs7O2MsTztjO2dCOzs7bUI7Ozs7Ozs7O21COzs7O29CLE87b0IsTzttQixPO2tCOztjOztpQjs7bUMsTywyQjs7Ozs7Ozs7Ozs7Ozs7O2MsTztjLFM7YztnQjtjLFk7YztnQjs7Ozs7Ozs7YztjOzs7O2E7Ozs7Ozs7O2E7Yzs7Ozs7Ozs7Ozs7Ozs7OztjO2M7Z0I7Ozs7YTs7Ozs7Ozs7Ozs7WSxHOzs7O2EsTTs7O1ksYztZOztZOzs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7UyxHO1U7VyxVO1c7YTs7Vzs7Vzs7OztXLFc7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxHO2M7ZSxZO2U7ZSxRO2U7ZSxVO2M7Yzs7Ozs7Ozs7YSxHO2M7ZSxZO2UsZ0I7Yzs7O2M7Ozs7OztTLEc7VTtXLFk7VztXOzs7OztXOzs7Ozs7VztZOzs7VTs7Ozs7Ozs7Ozs7Ozs7O1ksRzthO2MsWTtjOzs7Yzs7O2E7YztlLE87ZSxPO2U7Yzs7Ozs7YTs7OzthOzs7Ozs7O0s7OztLOztROzs7Vzs7OztNLE07OztLO0k7STtLO00sUTtNOzs7Szs7Ozs7TztROzs7USxVOztRLE07Tzs7O1E7O1EsTTs7Ozs7OztjOzs7O2dCO2tCOzs7cUI7b0I7O2lCO2tCOzs7Ozs7Ozs7O2lCLE07Ozs7O2MsTzthOzs7Ozs7Ozs7Ozs7Ozs7Yzs7O3dCOzsyQjs7NEMsd0M7Ozs7eUI7Ozs7Ozs7OzswQjsyQixjOzJCLFU7MkIsUTs7Ozs0Qjs7NkI7K0I7Ozs7NkIsTTs7Ozs7Ozs7Ozs7OzBCLE07Ozs7O3dCO3VCO2E7O087UTs7UyxvQixvQjs7Ozs7TztPLFc7Ozs7Ozs7Ozs7OztVO1csTTs7Ozs7Ozs7YTs7O2MsTztnQjthO2M7OztpQixrQjs7Ozs7O21CLGE7Ozs7O2lCLE07Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxJLGM7Ozs7YSxNOzs7Ozs7O2UsTztjOzs7VztZLE87O1c7WSxNOzs7OztlLE87Yzs7VTtXLE07VzthOztrQjs7O1U7O1csUTtXO2E7OztnQixPO2U7OztrQjs7O1U7O1cscUIsTyxvQztXLFE7VyxRO2tCOzs7Ozs7Ozs7Szs7SztLOzs7Ozs7SyxNOzs7OztJO0s7SztPOzs7VTs7OztVO1M7OztLLFE7SSxPO0c7Ozs7Ozs7Ozs7Ozs7OztJLFk7STs7O0ssTztLLE87SSxXO0c7O0ksWTtJOzs7SztLLE87SyxPO0ksVztHOztJLFk7SSxrQyxPO0ksSztLO0k7SSxXO0c7O0ksVztJOzs7SyxPO0ssTztJLFc7Rzs7STs7O087O1EsTztPOzsyQjs7OztROzs7UztTOztTOztVLE87VSxRO1UsVTs7Ozs7Ozs7OztPO087O08sOEM7Tzs7O1U7OzthO2E7OzthO2E7cUI7O1M7O087Ozs7YztPOzs7TyxNO2tDOztPOztRLFM7Tzs7Rzs7STtJO0c7O0k7STtpQjtLLHNDOzs7UTs7O1MsUTtTO1E7OztrQjtrQjtpQjs7Ozs7Ozs7UztVLFE7VTs7VSxPO1UsVTs7O1M7Ozs7O1E7O1MsVTtnQjs7O1c7Ozs7OztROztTLFU7UztXOzs7YyxPOzs7d0I7d0IsVzt1Qjs7YTs7UztXOzs7YztjLE87YTs7O1E7O2tCO2tCO2lCOzs7O1E7O1M7UyxVO1MsVTs7O1E7O1E7O1M7UyxVO29COzs7Ozs7Ozs7O1E7O1M7UztTLFU7UztTLFU7OztTO1EsTzs7O1E7O1MsVTs7O1M7Uzs7O2M7OzthOzs7USxPOzs7O0c7O0k7STtZOzs2Qjs7Ozs7Rzs7STtLO0ssTztLLE87SyxPO0ssTztLLE87SyxPO0k7O2E7Ozs7Ozs7O0c7O0k7Ozs7Tzs7Ozs7Ozs7eUI7Ozs7O3lCO3lCOzs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxRO2dCLE87OztLLE07OztJO0k7SSxPOzs7YztlOzs7Ozs7YTs7Rzs7STs7OztJO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7O0k7Ozs7STs7O0k7OzBCOzs0Qjs7NEI7OzRCOzs0Qjs7NEI7b0M7O0c7O0ksVztJLE87OztjO2UsTztlLE07ZTtpQjttRDtjLE87Ozt3Qjs7Ozs7d0I7dUI7Ozs7Rzs7STs7SztPOzs7VTtVLE87Uzs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROzs7Uzs7Ozs7SyxHLGlEOzs7O2E7TztRLG9CLGU7USxPO1E7VSx5QyxlO1E7OztPO08sVzs7d0I7O0s7TTtPO1EsTzs7Ozs7O087O1EsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7O0s7STtJLE87Rzs7SSxxQjtJO0c7b0QsTztHOztJO0k7STtHOztJO0k7STtHOztJLE87Ozs7O2MsbUI7OztpQjs7a0I7aUI7OztpQixvQjtpQjs7OztrQjs7O21COzs7bUI7O29CLFE7b0IsTztvQixPO29CO29CO3NCOzs7Ozs7Ozs7Ozs7OztpQjtpQjs7O2lCOzs7a0I7a0I7a0I7O2tCO29COzs7Ozs7Ozs7Ozs7OzBCOzs7MkIsVTs7Ozs7OzswQjs7OzJCOzs7OzswQjs7OzJCOzs7Ozs7Ozs7Ozs7MEI7OzsyQixVOzs7MkI7Ozs7dUI7d0I7Ozs7Ozt3QixVO3VCOzs7Ozs7a0IsVTtrQjtrQixPO2lCO29DOzs7Ozs7aUI7O2tCLFE7a0I7b0I7OztpQjs7O2lCLE07NEM7OztpQjs7a0I7a0IsTztpQjs7YTtHOztJO0s7Ozs7SyxPO0k7Rzs7SSxpQzs7SyxTO0ssZ0MsZTs7O1E7O1MsVTs7O1E7UTtTOzs7O1M7UTs7UTs7O1MsVTs7O1E7O3VCLDBDOztRO1M7Ozs7Uzs7OzhCLGdDOzs7UTs7Ozs7UTs7UyxVOzs7UTs7O1c7Ozs7Ozs7O1ksTTs7VztZLE07Vzs7WSxPO1ksUTtZO1c7VTs7UTtTOzs7O1E7Ozs7O1E7O1MsVTs7O1M7UTs7d0IsOEM7O1E7Uzs7OztTOzsrQixrQzs7O1E7Ozs7O1E7O1MsVTs7O1M7UTtRO1M7Ozs7UztROztROztTLFE7UztXOzs7OzZCLG1DOztTLE87UyxPO1M7OztTOztVLFc7OztTOzs7OztRO1M7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UyxVO1MsVzs7O1MsZ0I7UTtTO1UsTztVLE87Ozs7UTs7UztXOzs7Uyx1QjtRO1E7Uzs7OztROzs7Ozs7Ozs7OztROztTOzs7UztXOzs7YyxtQzswQjs7YzthOztROzs7VztXO1U7O1E7Uzs7OztTOzs7Yzs7OztlO2M7YTs7O1E7Ozs7b0I7O3NDLG1CLFU7Ozs7Ozs7O1E7O1M7Ozs7UTtRO1M7Ozs7UztROztROztTOzs7Uzs7UyxNO1E7O1M7UyxRO1M7Ozs7UTtRO1M7Ozs7UTs7Ozs7UTs7Uzs7O1M7Ozs7UTs7UTs7UztTO1c7Ozs7NkIsaUM7UztTLFU7UztTLFc7Ozs7O1E7O3lCOztRO1M7Uzs7OztTLE87UTs7Ozs7UTs7UyxXOzs7UTs7O1c7VztXOztVOztRO1M7Ozs7Uzs7O2M7Ozs7O2E7OztTLE87Uzs7OztlO2lELGdCOzs7O1E7O1E7O1MsVzs7O1E7OztXO1c7O1U7O1E7Uzs7OztTOzs7Yzs7O2E7OztTLE87Uzs7OztlO2lELGU7Ozs7UTs7O1E7USxpQzt1QjtRO1M7Ozs7UTs7Ozs7O1EsTTttQzs7OztJLDJCO0ksTzs7Ozs7YztlLG1COzs7O2U7ZTtjO2M7YTs7O0ksTzs7Ozs7Yzs7Ozs7ZSxPO2U7aUI7O2tDOztlLE87ZSxPO2U7O2tCO2tELFk7Ozs7ZSxRO2UsUTs7O2U7O2M7YTtHOzs7SyxPOzs7ZTtlLE87Ozs7eUI7eUIsTzs7d0I7O2M7OztJOztLLE87OztlOzs7O2dCO2tCOzs7O29DLHFDO2dCO2U7Yzs7O0k7STtLLE87OztlO2UsTzs7d0MsbUIsbUI7O2M7O0k7STtLLFE7SztPOzs7VSxvQixPO1UsTztTOztLO087OztVLE87Ozs7b0IsVztvQixPO21CO1M7OztLO087OztVO1csTztXLFM7Ozs7Vzs7Yzs2Qyw2Qjs7OztXO2E7OzRCLGUsa0M7O1U7Uzs7O0s7SztPO3NDLDhCO0s7STtJLEksK0I7STtJOztPOzs7VTs7Ozs7Vzs7O1c7O2M7aUQ7Ozs7Ozs7VzthO2dEO1U7Uzs7O0k7RztHO0k7OztJO0k7Ozs7MEI7Ozs7UztTOzs7Ozs7SyxNOztHOztJLEksc0M7Ozs2Qjs7O0c7Ozs7OztROztRLHFCLFE7USxPOzs7a0I7O3FCOztzQixPO3FCLE87OEI7aUUsdUI7Ozt3Qzs2Qjs7Ozs7Ozs7Uzs7Ozs7b0I7Ozs7Ozs7OztnQjs7OztJO0ksTzthOzs7Z0I7OztpQixTO2lCO2dCLE07O2U7O0c7O0ksTzs7O2M7O2lCOztrQixPO2lCLE87MEI7Ozs2Qjs4QixTOzhCOzZCLE07OzRCOzs7O2lCO3lCOzs7O0c7RztJO00sMEMsZTs7O0k7O0ssTzs7STtHOztJLGtCO0ksWTs7OztPLE07OztPO2U7OztrQjs7OztzQjs7Ozt1QixXO3NCLEc7dUI7d0IsVzt3QixLO3dCOzs7Ozs7Ozs7Ozs7Ozs7O3dCOzBCO3VCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7Ozs7O3NCOzt5Qjt5Qjt3Qzs7Ozs7OzRCLFE7NkI7Ozs7Ozt3Qjs7OztzQjtzQjs7Ozs7O3FCOztrQjtpQjs7ZSxNOztHOztJOzs7Ozs7Uzs7O1ksZ0MsTztZLFc7Vzs7SSxPO0c7OztLOztROzs7Vzt3QjtVOztLO0k7USxJLHVCOzs7OztxRDs7Ozs7OztLLEksVTs7Ozs7O2lDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0s7O1E7Ozs7OztLLE07OztJOzs7Rzs7STtnQjs7ZTtrQjs7STtHOzs7SSxPOzs7OztjOzthOzs7Ozs7Tzs7USxPO1E7USxnQjtRLFE7Ozs7dUI7Ozs7Ozs7O1MsVztTOzs7Ozs7O2M7Yzs7O1M7O1U7VztZLE87WSxROzs7Ozs7Ozs7Ozs7Ozs7Tzs7Tzs7UTs7Ozs7O1E7UTtRLE87Yzs7Ozs7OztROzs7UztTLFE7OztTOztVLE87VSxTO1U7VSxLO1UsVTtVO1k7Ozs7O1MsSTs7Ozs7Ozs7Ozs7Ozs7OztPO1E7OztRLE87Tzs7Ozs7Ozs7O087OztROzs7UTtROzs7OztPOzs7O087O1E7VTs7NEIsTyxvQzs7USxPO1EsVTs7OztXLE07Ozs7VzthOzs7Z0I7NkI7ZTs7WSxNOzs7Ozs7cUI7O29CO1c7WTtZLG9CO1c7WSxNO1c7Ozs7TyxNOzs7O08sTTtrQzs7OztPOzs7O1c7OztZOzs7WTtZOzs7Ozs7b0I7WTs7Ozs7Vzs7WTtZOzs7Ozs7O087UTs7O2dDO1c7O1E7O2E7O1E7OztPLE87OztpQjs7O2tCLGM7Ozs7O3FCLGdDOzs7O3VCLE07O3NCO3dCOzt5QixPO3dCOzs7OzsyQjs7cUI7c0IsTTs7cUIsVztxQjs7OztvQjs7Ozs7O3dCO3lCOzJCO3lCO3lCOzs7Ozt3QixNOzs7dUI7cUI7OzsrQjs7Ozs7O29CO3FCO3NCO3dCOzs7Ozs7Ozs7b0I7cUIsd0IsUTtxQjs7OytCOzs7O2lDOzs7O3NCOzt1QixRO3NCOztzQjt1Qjt3QixPOzs7Ozs7Ozt1Qjt1QixNOzs7Ozs7OztzQjt1Qjs7MEI7Ozs7Ozs7dUI7Ozs7dUI7Ozs7b0I7O29COzs7Ozs7OzRCOzs7b0IsTTs7O29CO3FCO3VCO3FCO3FCOzs7OztvQixNOzs7Ozs7Ozs7O0ksTzs7Ozs7Yzs7ZTs7Z0I7Ozs7Z0I7Z0I7ZTs7YztlOzs7ZSxRO2U7ZTtpQjs7Ozs7Ozs7Ozs7Yzs7O2lCOzs7YztlO2lCOzs7b0I7Ozt1Qjs7O3VCOzs7dUI7Ozs7Ozs7dUI7Ozt1Qjs7O3VCOzs7dUI7O21COztlO2M7YTtHOztJLGlDOzs7Szs7UTs7O1M7Vzs7Ozs2QixPLHVDO1E7O1E7OztTLFE7OztTLG9CO1MsTztTO1c7OztjOzs7OztjO2MsUztjOztzQjthOzs7OztROztnQjs7OztROztTLFU7OztRO1E7Z0I7UTs7Ozs7O1E7OztTLFU7Ozs7UTs7dUIsMEM7O1E7Uzs7O2dDLG9DOzs7UztXOzs7YztjLE87YTs7Ozs7Ozs7WTs7O2U7OztnQixjO2dCLFM7ZSxPO2M7Ozs7O1E7O1E7O1MsVTs7OztTO1M7Vzs7O2M7YyxPO2E7Ozs7UTs7O29DLGtDOzs7Ozs7UTs7UyxVOzs7O1M7UTtRO2dCO1E7Ozs7OztROzs7Ozs7UyxjO1MsVTtTO1c7Ozs7O2M7Ozs7Ozs7Ozs7OztjO2E7Ozs7UyxPO1MsUztTOzs7Ozs7UyxhO1E7OztTOztVO1k7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7d0I7OztROzs7Ozs7UTs7UztXOzs7Yzs7ZSxNOzs7Ozs7OztjO2E7O1M7OzthOzs7Z0I7Ozs7O2dCO2U7Ozs7UTs7O1c7VyxPOzs7cUI7OztVOztRO1M7Vzs7O2M7Ozs7Ozs7OztlO2lCOzs7OztvQjs7Ozs2Qjs7O21COzs7ZTtjO2E7OztTO1c7OztjOzs7Ozs7O2MsYTtjLG9CO2MsTzthOzs7Uzs7WSxZO1ksUztZLGtCLE87WSxPO1c7UztTLE07Ozs7O1E7UyxZO1M7O1M7O1k7OztlOzs7O2dCO2tCOzs7cUIsVztxQixlO29COztlO2M7OztTO1U7WTs7O2U7ZSxVO2U7Ozs7Z0I7Ozs7O2UsTzs7Yzs7O1U7WTs7O2U7ZSxVOztlLE87Yzs7Ozs7Ozs7O1E7OztZOzs7Ozs7Ozs7O2EsYTthOztZO2E7O2dCOzs7Ozs7Ozs7Ozs7OzthLE07OztZOzs7YTs7Ozs7OzthO1k7O1MsWTtTO1c7OztjO2MsTzs7b0MsK0I7O2E7O1M7Vzs7O2M7YyxPO2E7OztTOzs7YztjO2E7OztROztpQjs7bUMsbUIsVTs7Ozs7O1E7O1M7Ozs7UTtROztTLE07UTs7UTs7Uzs7Ozs7UTs7UTs7UyxXOzs7UztXOzs7YztjO2M7YztjOzs7O2UsUTs7O2UsUTtlLEk7OztjLE87YTs7O1M7OztjOzs7OzthOzs7UyxPO1E7O2lCOztpQyw2Qjs7Ozs7O1E7O1MsVzs7O1M7Vzs7O2M7YztjO2M7Ozs7ZSxRO2UsSTs7O2MsTzthOzs7Uzs7O2M7OzthOzs7UyxPO1E7O2lCOztnQyxnQzs7Ozs7O1E7O1M7UztXOzs7OztjO2E7OztTLFU7UztTO1c7Ozs7O1E7O3lCOztRO1E7OztRO3lDO3VCO1E7OztRLE07bUM7Ozs7STtLLFc7Szs7O00sdUI7TTs7Ozs7TTtLO0s7TTs7Ozs7Szs7YTs7O0k7SSwyQjs7SztNOzs7OztNO0s7Szs7OzthOztJO0ksMkI7OztJO0k7Rzs7RztJOzs7RztJOztHO0k7Ozs7OztHO0k7OztJLE87Rzs7STs7OEIsTzs7O087Ozs4Qjs7O21COzs7ZTs7Rzs7STtLO0s7O0s7O00sVTs7Ozs7O0ksVTtJO0k7Rzs7STtLOzsyQjs7O1E7O1EsTTtNO0c7O0k7SztPOzs7VSxPOzs7O29COztxQixRO29CO21CO1M7Ozs7Ozs7Ozs7Ozs7Ozs7O087UTtRLFU7OztRO1U7OzthOztnQjs7aUI7O2lCLE87aUIsVTtnQjs7Z0I7O2lCOztpQixPO2lCO21CO2dCO3dCOztZOzs7OztROztXOzs7YyxXOzs7Yzs7YyxNOztVOzs7O1c7OztjLFc7OztjOztjLE07O1U7OztNLEk7O0s7TTtROzs7VztXLEk7OzttQzs7O1csSSxXOzs7bUM7OzsyQjtXLFE7VztVOzs7Ozs7Ozs7O0k7OztPO087UTtTLE87UyxPO1E7Ozs7O1MsTTs7OztNOztJO0ssTztLLE87O0s7STtLO2lCOzs7Ozs7SyxNOzs7STs7O0k7Rzs7STtHOztJO0c7Ozs7Ozs7SztNOzs7OztLO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxRO0ssTztLLFc7SSxPO0c7O0ksaUI7STtLLFc7SztLO0k7STtJLE87Ozs7O2U7Z0IsTztnQixhO2U7Yzs7YztjOztlO2M7Ozs7Ozs7ZSxPO2UsSztlLE87ZSxVO2U7O2U7ZSxjO2U7Ozs7O2tCO21CLE87bUIsTztrQixPOzs7Ozs7aUI7ZTtlOztjLGtCO2MsNkI7ZTtnQixPO2dCLE87ZTtlO2dCO2tCOzs7Ozs7Ozs7OztlO2U7ZTtlLGM7O2dCO2lCLFM7aUIsTztpQixNO2lCO2dCOzs7ZTs7Ozs7O3FDOztlO2dCO2lCLE87Ozs7Ozs7Z0I7Z0IsTTs7O3lCOzs7OztjO2UsUztlO2lCOzs7Ozs7Ozs7OztjO2M7ZSxVO2U7YztjO2E7Rzs7SSxXO0ksTztHO3FDLHVDOztJO0c7O0k7O087OztVO1csVztXLE87VyxLO1csTztXLGtCOztXLE07O1UsVztTOztJO0k7SztPOzs7VTs7O1csUTtXLFE7VTtTOztLO087OztVO1UsTztTOzs7SztPOzs7VTs7O1csTztXLE87VyxPO1c7VTtTOztLLFM7SyxPO0ssVztLO087OztVOztXLEs7VyxPO1UsTztTOzs7SyxRLFc7SyxNO0ksRztZLHFCO007TSxNO3lCOztLO00sUzs7UTs7Ozs7Ozs7OztNLE87Szs7Szs7STtLO08sMkM7SyxPO0s7Tzs7O1U7VSxXO1M7OztLO00sTTtNO00sTztLOztJO0c7O0k7OztRLE87O1EsTzs7USxPOzs7Ozs7O1EsTzs7USxPOztRLE87Ozs7TyxvQixPO08sTzs7Tzs7USxPO08sTzs7TyxzQixPO08sTzs7TyxzQixPO08sTzs7TyxvQixPO08sTzs7Ozs7Ozs7OztPOzs7USxTO1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7USxTO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7OztPOzs7O1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7Ozs7Tzs7OztRLE87TyxPOzs7TztPO087O1EsTztRO1U7Ozs7YyxPO2E7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7TztPO087USxPO1E7VTtZOzs7O2dCLE87ZTs7O1EsTztROztXOzs7TyxPOzs7Ozs7Ozs7OztPLE87Ozs7TyxPOzs7TyxxQixPO08sTzs7TyxxQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7TyxrQixPO08sTzs7TyxvQixPO08sTzs7O08sTzs7Ozs7UTs7Ozs7Ozs7UztXO1MsVztTLHVCOztTLE87UztXOzs7UyxPOztTLE87UztXOzs7Ozs7Ozs7USxPOzs7Ozs7Ozs7OztPOzs7Ozs7USxxQjtRLFk7O1EsTzs7USxPO1E7VTs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O087O1E7USxPO08sTzs7Ozs7Ozs7OztPOzs7OztXLHlCLE87VyxPO1U7UTtRLE87TyxPOzs7Ozs7Ozs7Ozs7OztJLE87Ozs7NkIsMEI7RztHOzs7TTs7Tzs7cUM7O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksc0I7Rzs7Ozs7O0ssWTs7Ozs7Ozs7Ozs7TTtPLE07YTs7Ozs7OztJLGE7SSxxQixNO0ksTzs7O0k7STtHOztJLDhCO0c7O0ksOEI7Rzs7SSw4QjtHOztJOzs7OztJO0c7O0ksWTs7STtHOztJLE87Rzs7SSxZOztJO0c7O0ksWTs7STtHOzs7Ozs7Ozs7Ozs7OzsyQixxQjs7SSxVO0k7SztPOzs7VTtTOztLLE07SyxNO0ksTztHOztJLFk7O0ksRztLLE07STtLLGU7Szs7Ozs7O0k7Ozs7Ozs7Ozs7O0c7O0ksWTtJOztLO0s7STtHOytCLE8sbUM7O0k7SyxRO0ssUTs7O0k7OztlO0s7OztNLEk7SyxHLHFEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEOzs7O0c7O0ksTzs7O2MsTzthOzs7Rzs7STtJOzs7O1M7O1MsVTtTOzs7UTtLLFU7O2tCOztLO0s7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozt5Qzs7NkM7b0Q7Ozs7OztNLE87OztJO0c7O0k7Ozs7Ozs7Ozs7OztNOzs7OztJO0c7O0k7Ozs7Ozs7OztLOztJO0c7O0k7O2U7O21COzBCOztJO0c7eUIsbUI7RztJO0k7OzZCLDBDOztJO087SztJLE07Rzs7STtHO0c7STtJOzs7Ozs7Ozs7Ozs7OztJO0s7SztLLFc7O0s7Szs7d0IsTTs7Ozs7VSxNO1M7O1M7Ozs7O1U7Uzs7Ozs7OztXLEc7O1U7Ozs7O1c7VyxJO1U7Ozs7O3lCOztTOzs7O1U7VSxROzs7OztTOzs7OztVO1UsTTtTOzs7O3dCOztzQzs7Uzs7OztVO1U7WTs7O2U7ZTtjOzs7VTtZOzs7ZTtlO2M7O1U7Uzs7Uzs7OztVO1U7WTs7O2U7ZTtjOztTOzt3Qzs7UywyQztTOztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7UyxrQztTOzt5Qzs7Uzs7Ozs7VTtVO1M7OztTOzs7O1MsSSxXLGtDOzs7aUM7OztpQixNOzs7STs7SyxPOzhDO0k7O0ssWTs7Szs7SSxJLHNDOzs7NkI7OztHOztJLGtDLE87SSxXO0ksaUM7Rzs7Ozs7O08sTyxlOzs7Tyx3QixLO087O00sc0I7Ozs7O0k7Rzs7SSxZOztJLE87OztJOzs7TztPLE87OytCLE87Ozs7Ozs7TztPLE87OztpQjtpQixPO2dCOzs7Ozs7Ozs7O1U7VSxPOzs7OztPLE87OztPO087OztVO1UsTztTOztPOzs7VTtVLE87Uzs7Ozs7TztPOzt5QixvQixPLHNCOztPOzs4QixPOzs7TztPLE87OztPO08sTzs7O087TztPLE87OztPO08sTzs7O087TyxPOzs7TztPO08sTzs7eUIsTzs7O08sTzs7MkIsTzs7MkIsTztlOztJO0ksTzs7d0MsNkI7O0k7STs7Ozs7O1E7O1E7Ozs7UztXOzZDO1MsTztTO1EsTzs7Ozs7O1E7OztTO1c7OzZCLG9CLGdCOztTO1M7Vzs7NkIsbUIsVTs7UyxPO1EsTzs7O1E7O1E7OztTO1csMkM7UztXLDJDO1M7OztTO3NCO1EsNkI7USxPOztROzs7O1M7VywyQztTO1EsZ0I7USw4QjtRLE87OztROztROzs7O1M7UztXOzZDO1MsTztTO1MsTztRLE87O1E7Ozs7UztTO1MsTztRLE87O1E7Ozs7UztTO1M7UyxPO1EsTzs7UTs7O1M7UztRLE87O1E7OztTO1M7USxPOztROzs7OztTO1M7UyxRO1M7UyxPO1EsTzs7USx1QztRLE87O1E7Ozs7UztTO1E7aUI7Ozs7O3FDLE87O0s7TTtNLE87TTtLLE87O0c7O0ksTzs7O2M7YyxPO2E7OztHO0c7STs7Ozs7O29DLHdDOztJO0k7Ozs7Ozt5RDs7Ozs7Szs7Rzs7STs7Ozs7Ozs7Tzs7Ozs7UTs7Ozs7Tzs7SSxPOzs7STs7SyxPOzs7STs7O0ksSSxXOzs7O0s7TSxPO00sTztLLE87O0k7Rzs7STtHOztJO0c7a0Q7Rzs7STtHOztJO0ssTztLLE07SztJLEksVTs7OztLO00sTztNLE87SyxPOzs7STtHOztJOzttQixPO0ksb0IsTTtJOzs7O0k7SyxxQztLLGlCO0k7STtLLE87OztlOzs7OztnQjs7O2U7Yzs7O0k7O0s7OztRLEksVzs7OztTLEksVSxpQzs7O2dDOzs7O1E7OztRLEksVzs7OztTLEksVSxtQzs7O2dDOzs7O1E7O1E7O1E7Ozs7OztTO1E7O3lCOztROzs7Ozs7Uzs7O1M7UTs7UTs7Ozs7Uzs7O1M7UTs7UTs7O1M7Vzs7O2M7OztlOzs7YzthOzs7OztTO1E7Z0I7OzttQjttQjs7Ozs7O1E7O1E7Ozs7UztTO1c7OzRCOzs7UztXOzs0Qjs7UztROztROzs7OztTO1M7Vzs7OztjOzs7UTs7O1E7O1E7Ozs7OztTOzs7UztROztROzs7O1M7OztTO1E7O1E7Ozs7UztTO1E7O1Esa0M7UTs7USxrQztROztROzs7Ozs7Uzs7O1M7UztROzs7USxHO1MsTTtRLEksSSxPOzs7Ozs7UTs7UTs7Ozs7O1M7UztROztROzs7UztTO3dCLE8sc0M7UztXOzs7Yzs7OzswQixJOzs7a0Q7OzswQixPOzs7O2MsTzs7Ozt5QixJOzs7aUQ7Ozt5QixPOzthOzs7UztXOzt1QyxPLHdCOzs7UztROzs7USxJLEksTzs7Ozs7O1E7O0k7O0ssTzs2QztJOztLO007Ozs7O007SztJOzs7Szs7O0ssWTs7Szs7STswQixrQzsyQix3Qzs7O0k7Rzs7O0ssWTtLLE87STtJOztPLDBDLG1CO0k7RztHO0k7O21DLFc7Ozs7OztJOzs7Ozs7O0ssUztJOzs7STs7Tzs7Ozs7Ozs7USxNO087O2dCOzs7Ozs7OzBCOztPOzs7Ozs7USxNO08sc0I7O087Ozs7O1EsTTtPLHFCOztPLGtDLE07TztlOzs7a0I7a0I7aUI7Ozs7O08sYzs7Tzs7OztRLE07UTtVOzs7YTthLGM7WTs7O1E7VTs7O2E7YSxjO1k7O1E7TyxXOztPOzs7OztRLE07UTtVOzs7YTthLGM7WTs7TyxZOzs7TyxlOztPOzs7O1EsTTtPLFk7O087Ozs7USxNO08sWTs7Tzs7OztRLE07USxNO08sWTs7TyxrQyxNO08sWTs7TyxrQyxNO08sWTs7Tzs7Ozs7O1EsTTtRLE07TyxpQjs7dUMsaUI7O087Ozs7OztRLE07USxNO08saUI7O29DLFk7O3VDLGlCO2U7Ozs7b0IsTyxtQztJO0c7OztJOztLLEcscUM7O0k7OztJO0c7O0k7O087O087O087O087O087ZTs7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087O087O087O087O087O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJLDRDO2dEO0ksTztHO3NDLHVCOztJO3NCOzs7Ozs7OzswQjs7O21COzttQyxnQjs7Ozs7Ozs7OzBCOzs7Ozs7O0k7Rzt5Qiw2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7O3FCLE87Tzs7O1E7O1csTzs7O3FCLE87O29COztVO08sTzs7Ozs7Ozs7Ozs7cUIsTztPOzs7UTs7VyxPOzs7cUIsTztvQjs7VTtPLE87OztPLE87Ozs7STs7Tzs7Tzs7TztlOztHOztJOztPOztPO2U7O0c7O0k7OztROztRLE87Z0IsTzs7SSxtQjtJLE87OztJOzs7UTs7USxPO2dCLE87O0ksbUI7SSxPOzs7STs7O1E7O1E7Z0I7OztJO0c7O0k7O2tCOztrQjswQjs7SSxPO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtJLE87Rzs7STs7ZTtlOzs7O2lCO2lCOztxQixPOzs7TyxPOztHOztJOzs7O007UTs7eUI7O087OztPLGM7TztPOzs7VTtVLE87Uzs7TyxPOztNO00sTzs7O0k7Rzs7STs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7OztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTztnQixPOzs7Ozs7NkI7Ozs7Ozs7Ozs7Ozs2Qjs7NkI7OzZCOzs2Qjs7OEI7OzhCOzs7OztXOztXOztXOztXOztXO21COzs7O1E7OztROzs7USxPOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7USxPOzs7UTs7O1E7a0I7a0I7Ozs7O08sTzs7O08sTzs7Ozs7USxPOzs7O08sTzs7O087Ozs7UTtPLE87O087Ozs7UTtPOzs7Ozs7O08sTzs7Tzs7O1E7Tzs7Ozs7OztPLE87OztPLE87OztPOzs7Ozs7O08sTzs7O08sTzs7O08sTzs7TyxrQixPO08sTzs7O2lCO2lCOzs7aUI7aUI7OzJCOztPLG1CO08sTzs7O08sTzs7O08sTzs7NkI7Ozs7UTtRLE87O087TyxPOzs7O1E7USxPOztPO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOztPLG9CO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOzs0Qjs7NEI7O087OztRO1E7TyxPOzs0Qjs7NEI7OzRCOzs7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7O1E7Ozs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0ksUzthOzs7OztROztROztROzsyQjs7O087O087Ozs7Tzs7Tzs7YTtzQjtHOztJOzs7Z0I7Z0I7Ozs7STs7O1EsTzs7USxPOztRLE87Z0I7OztJLE87OztJOztPLE87O08sTztlOzs7Ozs7Ozt5QixPOzs7USxPOzswQjs7UTs7Uzs7WSxPOzs7c0IsTztxQjs7VztRLE87Ozs7Ozs7Ozs7Ozs7OzsyQjs7Ozs7O1E7OztTOztZO1ksTzs7O3NCOzt1Qjs7O3NCLE87Ozs7Ozs7O3FCOztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZLE87OztzQixPO3FCOztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZO1k7OztlOztnQjs7O2UsTztjOztZOzs7ZTs7Z0I7OztlLE87Yzs7O3dCOzs7YTs7O1ksTztXOztRLE87Ozs7Ozs7OztZO1k7OztlOztnQjs7O2UsVztlLE87Yzs7NEI7OzthOzs7WSxPO1c7USxPOzs7UTs7O1M7O1ksTzs7O3NCLE87cUI7O1c7USxPOzs7Ozs7OztRLE87Ozs7Ozs7O2tCLE87Ozs0Qjs0QixPOzsyQjs7aUI7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O1E7Ozs7O1M7O1ksTzs7O3NCLE87cUI7O1c7UztRLE87Ozs7Ozs7Ozs7OztRLGtDOzs7Ozs7Ozs7OztROzs7UyxPO1E7Ozs7Ozs7O1MsTztRLE87Ozs7Ozs7Ozs7Ozs7OztRLE87OztLO007O1M7OztZOztlOztlO3VCOzs7WTs7WSxNOztRO007Szs7Ozs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsTzs7TTtNOzs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7O0ksTzs7Ozs7Ozs7Ozs7SztNLE87OztnQjtnQixPOzs7Ozs7OztlOztLO0s7Szs7O1E7Ozs7UztRO1E7Tzs7SyxPO0k7SSxPOzs7Ozs7Ozs7Ozs7O3FEOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7TTs7O007Szs7TSxZO2tCOztNO087USxVOzs7OEI7Tzs7Ozs7TztlO087O0s7O007O1M7OzJCLG9CLFc7O00sTztLOztNO087Uzs7O1k7WTtXOztPLE87TTs7O1M7UztTOzRCOztTO1M7UTs7TTtLO21CO0s7OztrQztrQztJO0k7Ozs7O3NCOzs7aUMsWTs7Ozs7O1M7UztRO1E7O1M7OztROzs7Ozs7Ozs7Uzs7O1M7OztROztTOztVO1k7UyxjO1E7O1M7Ozs7VTtZOztVLEs7OztTOzs7OztVOztXOzs7O1c7Ozs7VSxHO1c7WTtjOztZO1k7Ozs7YTthO2E7Ozs7OztZO2E7O2lCOzs7Ozs7bUI7OztXO1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7VztZLE07WTtZOzs7O2E7YTthOzs7OztXO1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7VztZLE07WTtZOzs7O2E7YTthOzs7OztXO1cseUI7Ozs7YTs7YzthO2E7Ozs7Ozs7O3NCOztTOzs7aUI7OztRO1EsSSxJLHNDOztTLEksZTs7Ozs7OztZO1k7Ozs7Ozs7VyxHLHVCOzs7OztVLE87OztTOztVLFU7VTtXOzs7OztXO1c7O1U7VTtTO1M7O1U7Ozs7VTtVO1MsSSxXLHVDOzs7OztVO1csTTtVOztXO1c7Ozs7OztZOzthLEksdUIsTzthOzs7Ozs7Ozs7VTs7O1c7O1k7WTtZO1k7Ozs7YTtjOzs7YztjOzs7Ozs7O2E7YTthO2M7O2M7YTs7OzthOzs7Ozs7O1k7YTthO2E7YTthOzs7Ozs7OztnQjtpQjs7Ozs7Ozs7Ozs7O2lCOztpQjtnQjtnQjtnQjtpQjs7aUI7Z0I7Ozs7O2dCOzs7OztjOzs7Ozs7Ozs7Ozs7OztZO2E7YTthO2E7YTs7OztjO2U7Ozs7OztlOzs7Ozs7O2dCO2dCO2U7ZTtlO2dCOztnQjtlOzs7Ozs7Yzs7Ozs7Ozs7OztXLEksaUM7Vzs7Ozs7OztXOztZOzs7Ozs7OztZLEc7YTtjOzs7Ozs7Ozs7Ozs7Yzs7YzthO2E7YTtjOztjOzs7Ozs7O1k7YTs7O1c7WTs7Ozs7O1U7VTs7UTs7Uzs7O1U7OztVO1U7Ozs7Ozs7UztTO1MseUIsd0I7UztROztTO1Usb0I7VSxPO1MsTztROztTLFc7UyxPO1E7O1MsVztTLE87UTs7UyxrQztTO1UsTTs7VTtVLE87OztTO1U7VSxPOztTO1U7OztXOzs7Ozs7OztXO1k7YTthOzs7WTs7VztZO1k7OztXOztVOztvQyx1QztvQyxzQzs7OztZLEksb0I7WSxxQjs7VyxVO1csTzs7OztxQjtzQjtzQjtzQjtxQixxQjtvQjs7O3FDLHNDO3FDLHVDOzs7O1csSSxzQjtXLHNCOztVLFU7VSxPOzs7O29CO3FCO3FCO3FCO29COzZCO21COztTOztVOzs7Ozs7VTtVOzs7Ozs7O2E7YztjOztjLE07YSxPOzs7VztZO1k7O1ksTTtXLE87OztTO1U7VztXOzs7Ozs7O1M7VTtVOzs7Ozs7OztTOzs7VTtVLE07c0I7O29DO1M7O1UsZTtVLEk7UztVO1M7UyxJOzs7O1c7Ozs7Ozs7Ozs7Ozs7OzRCOzs7Ozs7ZTtnQjs7Ozs7O2dCOzs7Ozs7Ozs7OzhCOzs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7O2E7YztlOzs7OztjO2M7Yzs7YTs7Ozs7Vzs7Ozs7Uzs7VTtVO1UsSTtVLE07VTtVO1U7VTs7O1M7VTs7VztZOzs7O1c7c0I7Ozs7OztZOztZOzs7Ozs7O2dCO2U7OztXOzs7Vzs7Ozs7WSxNO1ksTTtZOzs7O2E7Yzs7OzthO2M7ZSxNOzs7Ozs7O2M7Yzs7Ozs7OztlO2U7Ozs7O2E7Ozs7O1c7WTtZLE87O1c7OztjO2M7YzthOzs7Ozs7ZTtnQixPO2U7c0I7ZSxPOzs7O3lCLE87d0I7Yzs7Vzs7VztXOzs7VSxJLG1COzs7O1M7O1k7OztlLE07YztTOzs7WTtZO1k7Vzs7UztTOzs7UztVLDJCLFM7VTtZOzs7ZTtnQjs7aUIsUTs7O2lCOzsrQixPLGMscUI7Z0IsTzs7O2U7Yzs7UztROztTO1UsTTtTO1UsWTtVOzs7UyxPO1E7O1M7VSxNO1M7VSxZO1U7OztVOztvQztTOzs7O2E7OzZCLHVCLFcsRTs7UyxPO1E7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtjO2M7Ozs7Ozs7Ozs7O0ksVyxPO0k7O0s7Tzs7O1U7VSxXO1M7O0k7OztPO087TztNOztJLE87Rzs7STs7O2dCLE87Ozs7Ozs7O0s7aUI7Ozs7Ozs7STtHOztJLFE7SSxPO0c7O0k7Rzs7O0ksVzs7O0ksTzs2QztHOzs7STs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7UTs7O1M7UTs7UTs7OztTO1M7USxPOzs7O2dCOztJO0c7RztJOztvQixPLGlDOztJLE87MkMsNEI7Rzs7SSxXO2EsTTtJOzs7Szs7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFM7SyxROzs7d0IsTyxrQztJLG1CLE0sd0M7c0IsMEI7SSxJOztvQjtxQztpQjs7Ozs7Ozs7O1MsYTs7UTs7Ozs7OzRCOztROzs7Ozs7OztROzs7OztTLHNCLE87UyxhOztROzs7OztTOzs7VTtVOzs7UTs7Ozs7Ozs7UTs7SSxPO0c7O0ksWTs7SSxPO0c7OztJLE87Ozs7Ozs7Ozs7SSxXO0k7Rzs7O0k7SyxNOztJOzs7O0k7SyxNOztJOzs7O0ksVyxNOztJOzs7O0ksVyxNOztJLGU7Ozs7Ozs7O3FCLGtCLGdDOzRCLHFCOztJLE87O0c7O0k7TztLLE87SSxXO0ksTztHOzBCLE8seUM7O0ksTzs7O2M7OztlOzs7YyxtQjs7O0c7MkIsTywwQzs7STtLO2lCLE87O0s7STtJLFk7O0s7SztvQjtNOzs7Ozs7TyxNO087Ozs7Ozs7Ozs7Ozs7Ozs7OztNO00sSTs7Ozs7OztNLGlCO007O0k7STtHOztJLE87OztjO2M7ZSxPOztjO2U7eUM7ZTs7Ozt3Qzs7O2E7O0c7O0ksVztJLE87Rzs7STtJOzs7Ozs7OzhCOztTOzs7VTs7Ozs7aUIsTzs7SyxXOztHOztJLE87OztjOztlOztjLE87YTs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOzs7SztLO29COzs0QjtNOzs7Tzs7VTtXLE07O1U7UztPLFE7OztVO1U7eUI7Vzs7Ozs7WSxNO1k7Ozs7OztjOztlO2UsTzs7Ozs7Ozs7O2E7YztjOzs7Ozs7Z0Isb0M7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCLE07OztlLE07Ozs7OzthO2EsTzs7Ozs7Ozs7Ozs7O1c7VyxJLGtCOzs7Ozs7O1csVztjO1k7VyxNOztTO29DLHdDOztNOzs7OztJO0k7Rzs7STthO2tDOztHOztJLFk7O0k7Rzs7SSxPOzs7OztjO3dCO3dCOzs7OzBCOzBCLE87O3lCOzs7YTs7Rzs7STtjO2M7Ozs7Z0I7Z0IsTztlOzs7Rzs7SSxVOztJLEcsa0I7SSxHLHFCO0ksSTtJOzs7SSxZOztJLEcsa0I7O0k7Ozs4QixxQjs4QiwrQzs7SSxXO2U7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJOzs7TSxxRDtNOzs7STtHOztJLE87OztjO2MsYzthOztHO0c7O0k7O3lCLGtCOztJO0k7Ozs7Ozs2Qzs7Szs7Rzs7STtnQyw0QixXO0ksVTtJOzs7YSxtQjs7O1k7Rzs7SSxZOztzQztJOzs7SyxXO21COzs7SyxPLFc7O0ksTztHOzs7SSxPOzs7Yzs7Ozs7ZSxRO2UsVTs7Ozs7Ozt3Qjs7Ozs7Yzs7O2U7Z0IsVzs7OzttQiw0QjtjO2E7Ozs7SSxvQjs7Ozs7Ozs7OztNOzs7VTs7OztTOzs7VTs7O1M7TztxQzs7OztROzs7O1M7MEI7Ozs7O21CO1E7O1M7UTs7Ozs7UTtTLFEsbUM7Uzs7UztROzs7Ozs7OztROzs7TTs7O0k7Rzs7STtJOztLOzs7TTtNOztLOztHOzs7Ozs7Ozs7Ozs7Ozs7SSxzQjs7Ozs7Ozs7UTs7O087Ozs7Ozs7OztZLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztJO0c7O0k7STs7Ozs7OztTLGtDO1MsUzs7OztpQjs7Szs7Rzs7STtJLHVDO0k7Rzs7SSxXO0k7Rzs7SSxROztJLGtCLHVCO0k7Szs7O0k7RzsyQixXLDZCOztJLG1DLFc7Ozs7STs7Tzs7O1U7VSxXO1M7O0ksTztHOzs7Ozs7Ozs7O087USxLO1EsUTtRLE07O1E7Uzs7Ozs7O1MsTztTOzs7OzttQjtPOzs7VyxZO1c7Ozs7Ozs7WTs7WTthLE07YTs7Ozs7Z0IsRyw0QjtpQjtnQixNO2U7YTs7YSxNO1k7O2E7Ozs7aUI7OztvQjtvQjttQjs7Ozs7YTtlOzs7a0Isb0IsTztrQixPO2lCOzs7YSxPO2E7ZTtpQjs7O29CO29CLE87bUI7O2E7ZTtpQjs7O29CO29CLGU7bUI7O2EsUzthLFc7YTtlOztnQzs7OztnQjtnQjtpQjs7O3FCLGU7b0I7a0I7Ozs7O21COzs7O21COzs7OztvQjs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7Ozs7Ozs7O3VCO3dCOzJDLE8sa0M7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrQjs7Z0Q7Ozs7Ozs7Ozs7Ozs7OzsrQjs7OztrQzs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7dUI7d0I7d0IsTzt3Qjs7OzJCOzBELGM7dUI7OztzQixHOzs7Ozt5QjswQixPOzBCOzBCOzs7Ozt5Qjs7Ozt1Qjs7Ozs7dUI7d0IsVzt3Qjt3Qjs7Ozs7OztpQjs7OztlO2E7YTtlO2lCOzs7b0I7b0I7bUI7O2E7O2E7OztZO29COzs7VztZOzs7Vzs7Ozs7Ozs7UTs7O1EscUI7USxXO087Ozs7O007Tzs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7WSxJO1ksTTs7Ozs7OztXO1k7b0I7dUI7O1k7WTs7Ozs7Vzs7Ozs7Ozs7Ozs7OztROztXOzs7Yzs7Ozs7ZSxNO2U7O2U7ZTs7YzthOztROzs7O1k7OztlO2UscUI7Yzs7Ozs7UTs7OztjOzs7Ozs7Ozs7Ozs7O087Ozs7OztJO0c7OztLOzs7Ozs7O087USxRO1EsSztPOzs7OztPOzs7a0M7UTs7Ozs7OztNO087Ozs7Ozs7Ozs7Ozs7O007O1EsTTtPLFU7Tzs7TTs7OztJOztLOzs7Ozs7Ozs7SyxTO0s7TTs7Ozs7O00sTztLOzs7OztJO0k7Rzs7SSxXLE07Ozs7OzswQjtNO087TztTOzs7WTtZO2EsTTtZLEk7OztXOztPLDJDLFc7Tzs7Ozs7TSxZO007OztVOztnQzs7YTtzQzs7UztPO1M7OztZOzs7YTtZLHNCO1c7OztPO087Uzs7O1k7WTtXOzs7TTs7O0k7Rzs7STtHOztJO0s7OztJO0c7O0ksWSxPO0k7OztLO0ssTztLO0k7OztJOztPOzt5QixrQixPLDJCOzs7Ozs7OztLLGE7Ozs7STtHOzs7Szs7Ozs7TTtNLE07TSxXO00sTzs7Szs7ZTs7Ozs7OztJLE87Rzs7O0s7Ozs7O00sTTtNLGtCOztLOzs7O0s7OztNO29COztnQjtJLFc7SSxpQjtHO2lDLFc7MEMsVzs7STs7O2MsYTthOzs7a0Y7YyxPOzs7OztHOztJO3lFO0ksTTtHOztJOzs7SyxPOztJLE07Rzs7STs7Rzs7STtrQzs7SyxNOztJO0c7RztJLGU7Ozs7Ozs7Ozs7STs7YTtjLFk7YyxNO2MsUTs7O2EsSSxVOzs7O2UsTzs7OzthLE87O0c7RztJOztJOzs7Ozs7Ozs7OztJOzs7Ozs7Ozs7OztJOztHOztJOztNO08sVTtPO087O087TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNLFE7TTtNLE07OztTO1E7TTs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxJLDhCOzs7Ozs7OztJO0c7O0ksVztJOzs7TztPO087TTs7SSxPO0c7O0k7OztLLE87O0ksTTtHOztJOzs7SyxPOztJLE07RztHO0k7VTtJO1U7Ozs7Ozs7Ozs7O0ksaUIsTztJLFM7SSwwQjtHOztJLFMsTTs7SSxXO0k7Szs7OztJO0c7O0ksVTs7SztNOzs7Ozs7Szs7O2U7Z0I7Z0I7ZTs7OztjOzs7Ozs7TSxNOzs7STs7O2MsTzs7O3dCO3dCOzs7Ozs7O3VCOzs7YTtHOztJO0s7OztlO2M7O0k7Ozs7ZTtjO3dDO2MsVTtjO2E7Rzs7SSx5QixTOztLO007O087OztPOzRCLFMsc0I7TTs7O0s7STtJO0c7O0ksWTtJOytCOzs7STtLO087OztVO1UsZ0I7Uzs7SyxPO0s7OztLLFM7STs7OztJOztPOzs7VTtVO1M7O0k7Rzs7STtJOzs7OztPLFM7UTtPOzs7OztLOztHOztJOztPOzs7VTtVLE87Uzs7STtHOztJLFk7O0k7Ozs7OztJLFksTzs7OztLOzs7Ozs7STs7O0k7SztLOzs7OztLLFE7TTtPOztXOzs7O087TztNOzs7Ozs0Qjs7Ozs7a0I7O0s7STtJLE87RzsrQix1Qjs7STtHOztJOzs7SztNLFc7OztJLFc7SSxPO0c7MEIsd0I7K0IsdUM7OEIsOEM7O0k7Rzs2QixXO3VDLCtCOztJO0ssVzs7Szs7OztNO087TztPO007TTs7Ozs7STtLLDRCLFc7O0s7Ozs7O087UTs7O087Ozs7c0IsYyxpQzs7TTs7Ozs7SSxJLFk7Ozs7TSxpQjs7TTs7Ozs7SSxPOztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7YztjLE87O3dCO2E7O0c7O0k7STtLOztNLFE7TTsyQixRLDhCLFM7Ozs7Ozs7Ozs7O1U7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtVOzs7OztXO1U7Vzs7Ozs7OztLO00sTTs7TTs7Ozs7TztPOzs7Ozs7Ozs7b0I7OztLO00sVTs7Ozs7d0I7VTs7Ozs7VyxZOztXOzs7Ozs7OztNLE07Ozs7Ozs7OztROzs7Ozs7Ozs7Ozs7Ozs7OztLOztlLGlDO0s7TSxNO0s7TTtpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLOzs7OztJLE87Rzs7SSxZLE87O21COzs7Ozs7OztJO0c7O0k7Z0I7STtnQjs7STtHOztJO0ssWTtLOzs7OztNOzs7SztNO0s7OzZCOzs7UTs7USxNOztJO0k7Szs7O0s7STtHOztJOzs7Rzs7OztJOztLOztJOztLO007OztNO1E7TTs7UyxZO1M7Ozs7O1U7OztTOzs7Ozs7UyxNO1E7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTTs7Ozs7Ozs7O007TyxNO087Uzs7O1k7OzthLE07WTtXOzs7Ozs7Szs7UTs7O1c7OztZLE07VztVOzs7Szs7STtLLFM7Ozs7OztLOztROzs7VztXO1U7Ozs7TSxNO0s7O00sbUMsbUI7TTs7UyxPOzs7Ozs7Ozs7UTtNLE87TSxPO00sWTtNO1E7TTtPO1M7O3lCLCtCOzs7OztNO087Ozs7Ozs7Ozs7TztRO1U7OzthO2EsTzs7O3VCO3VCLE87OzZDLE8sZ0M7O3NCOztZOzs7O087UTs7Ozs7YSwyQzs7Ozs7Ozs7O007TztTOzs7WTs7Ozs7YTthO2U7OztrQjtpQjs7O2E7O2EsVTs7YSxPOzt1Qjs7OztZO1k7WTtXOzs7OztPO1M7TTs7Ozs7Ozs7Ozs7OztNO087OztNOzs7OztTLGEsTzs7UyxPO1E7Ozs7Ozs7Ozs7O0k7SyxzQjtLOztTOzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7O1c7Ozs7Ozs7OztNOzs7Ozs7Ozs7TyxvQyxROzs2Qzs7O087UTtVOzs7YTthLGM7WTs7UTtVOzs7YTthLGM7WTs7USxPO1E7OztRLFM7Tzs7Ozs7O087UTtVOzs7YTthO1k7O1E7OztXOzs7YztjO2E7Ozs7Ozs7OztRO1MsSTs7O1ksa0I7d0I7O1ksSSxJLE87Ozs7Ozs7WSxPOztRO1E7USxJLGlCO1E7OztXOzs7O1U7OztTOztVO1k7OztlLG9COzJCOzs7YztVO1UsTzs7VSxPOzs7OztrQjs7Ozs7O0k7OztJLFE7STs7Ozs7OztHOztJOzs7Ozs7Ozs7UTs7UTs7O1E7UTtnQixPOztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztpQjtLOzs7Ozs7O007O0s7OztTLE87OzttQjs7O29COzs7bUIsSSxZOzs7NkM7OzttQjsrQjs7O1E7TSxPO00sTTtLLEksVTs7OztvQjtNOzs7Ozs7bUI7SyxZOzs7Ozs7OztNO007TywwQjtPO087Ozs7OztJO0s7SywwQjtLLE87SSxXO0c7O0k7SyxXO0s7Ozs7O08sbUI7Tzs7cUI7Ozs7O1E7Ozs7Ozs7O007TyxJLFU7Ozs7c0I7Ozs7O3FCO087UTs7OztPOzs7bUI7Ozs7O0k7aUIsTztJLEk7Z0IsTTs7STtHOzs7Ozs7NkIsTzs7UTs7O1Msc0M7UyxTOzs7Ozs7O1EsTzs7K0IsOEI7Ozs7USxPOzsrQiw4Qjs7O0s7Ozs7STs7OztRO2tCOzs7Ozs7Ozs7UztVOzs7O1c7VTs7Ozs7Ozs7Ozs7O1M7VTs7VztVOzs7Ozs7Tzs7OztRO1E7UTtPOzs7USxXOztPLE87O0ksTztHOztJO2dCLE87O0k7Rzs7O0k7STs7TSxPOzs7O0ssSSxZOzs7O007Ozs7Ozs7Ozs7OztrQjs7TTtNO087OztNOzs7O08sSSxVOzs7O1E7Ozs7OztPOzs7UTtROzs7Ozs7O0c7O0k7Ozs7O00sRztPO1E7Ozs7OzhCOzs7O007OztTLFc7UyxjO1E7TTs7OztJOzs7Ozs7Yzs7O0c7O0kscUI7OztLLE07STs7Ozs7Szs7Ozs7Ozs7Ozs7OztTLDBDOzs7OztrQjs7Ozs7Ozs7OztJOzs7SztLO087O3dCOztLO0s7OztJOzs7Ozs7Ozs7OztJOzs7O0s7OztVOzs7Ozs7Ozs7O1U7Ozs7WTtJOzs7STs7Ozs7Ozs7Ozs7OztVOzs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7O1EsTTs7O087O2lCOzs7Ozs7O087O1E7Ozs7Tzs7TyxpQjs7USxNO087OztRLFM7UTtROzs7Ozs7OztvQjs0Qzs7OEIsb0I7OEI7Ozs7Ozs7Ozs7Ozs7OztVOztvQjs7OztvQjs7OEIsb0I7Ozs7Ozt1Qzs7OEI7Ozs7Z0M7Ozs7OytCOytCOzhCO2lEOzs7Ozs7Ozs7OzhCOzZCOzs7Ozs7O29COzs7Ozs7O1U7O29COzs7OztvQjs7O3FCOzs7b0I7O3VCO3dCOzBCOzs7NkI7OzhCLE07Ozs2Qjs0Qjs7Ozs7Ozs7Ozs7O3VCO3dCOzBCOzs7NkI7OzhCLE07Ozs2Qjs0Qjs7Ozs7Ozt1Qjt3Qjt3QjswQjs7OzZCOzZCOzhCLE07Ozs2Qjs0Qjs7d0I7Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7VTs7O29CLFk7b0I7NEM7OzhCOzsrQjsrQixROzsrQjs7Ozs7OEI7OEI7Ozs7OytCLFc7K0IsTzs7OytCLE07Ozs4QixPOzs7Ozs7Ozs7Ozs7OztXLE07O1U7OztvQjtxQjs7b0I7NEM7OzhCOzsrQjsrQjs7OztnQzs7aUM7OztvQztvQztxQztxQyxNO3FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQzttQztnQzs7OzhCLE07Ozs7OzsrQjsrQixPOzs7K0IsTTs7OEI7OytCOzhCLE87Ozs7Ozs7Ozs7Ozs7VTs7b0I7Ozs7OztxQixZO3FCOzs7Ozs7O3NCOztzQjs7Ozt1Qjt1Qjt1QixPO3NCLFMsNkI7c0IsVTtzQjt1Qjs7aUM7Ozs7OztzQjs7dUI7OzBCLG9COzBCOztzQjs7Z0M7Ozs7Ozs7cUIsTTs7O29COzs7b0I7OztxQjtvQixHO3FCLFc7cUI7Ozt3QixrQixROzs7Ozs7O3dCO3VCOzs7Ozs7cUI7b0I7b0I7cUI7cUI7dUI7cUI7OztxQjs7Ozs7Ozs7Ozs7Ozs7b0I7cUI7Ozs7Ozs7Ozs7Ozs7O3VCOzs7Ozt1Qjs7Ozs7O3dCLE07dUI7Ozs7Ozs7Ozs7dUI7Ozs7dUI7Ozs7Ozs7Ozs7cUI7c0I7Ozs7Ozs7O3NCOzs7Ozs7b0I7Ozs7O1UsVztVOztvQjs7OztvQjs7OEIsb0I7OytCOztnQzs7O21DOzs7Ozs7O2tDOytCOzs4QixNOzs7a0Q7Ozs7Ozs7b0I7OztxQjs7O3FCLFM7cUI7OztxQjt1Qjs7Ozs7O29COzs7Ozs7Rzs7O0k7SyxROzs7Szs7O0k7Rzs7STtrRDtJO0c7d0IsTyx5Qzs7STs7O0ssTzs7OEIsMEM7OztJO0c7O0ksTztHOztJLFk7STs7OztPOzs7VTs7O1csTztVO1csVztXOzs7OztVO1M7O0s7STs7O0k7SztHOzs7O0s7SyxhO0s7SztJOztLO007TTs7O0ssd0I7SyxNOztJO0ssWTtLO2dCO0s7SSxJOzs7O00sTTs7OztJLHNCOzs7O0s7TSxPO00sTztNLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7O0k7SztLO0s7TzttQyxtQjtJOzs7Ozs7OztjOzthO0c7O0k7O0c7O0k7O0c7O0k7O0c7O0k7Ozs7O1E7OztROztzQzs7Ozs7O1E7Ozs7OztZLE87OztzQjtzQjtxQjs7VztTO1c7OzRCOztTOztTO1E7O1E7Ozs7O1M7Vzs7NEI7O1E7O2dCOzs7bUI7bUI7a0I7Ozs7O1Esd0M7UTs7USwyQztROztROzs7O1M7UTs7c0M7O21DOzs7O0s7O0ksTzs7O0k7aUM7Ozs7Ozs7OztLO007TSxTO00sWTtNO1E7OztXO1csZTtVOztNO1E7OzBCLG1CLFU7O007Ozs7WTs7Ozs7Ozs7Ozs7MkMsa0M7aUIsTzs7Ozs7Ozs7O2lCLE87Ozs7O1k7YSxVO2E7ZTs7OEIsZSwyQjs7WTs7O3FCOzs7VztXO1k7WSxjO1c7O1ksTzs7Vzs7WSxPOztXO2tCO1csdUIsVyxnQztXOzs7O2U7OztZOztXLE87Ozs7Ozs7SSxRO0k7Rzs7STtLLE87OztTOzs7O0s7Tzt1Qyx1Qjs7Ozs7Ozs7O2M7Ozs7NkI7O2E7Rzs7STtrQyxPO3VCLE07O0k7Rzs7STs7SztPOzs7VTtVO1M7OztJO1k7OztlOztnQixPOzs7OEI7Ozs7Z0I7aUIsTzsyQjs7Z0IsTTs7O2U7Yzs7OztHOztJOztPOzs7O1E7VTs7OzthOzs7Tzs7TyxNO2dDOztHOztJO0ssVzs7STtHOzs7SSxTOztJLE87OztJO0ssVztLO087O3lCLGtCLGM7O0s7SyxPO0s7SztLO08sbUMsaUI7Ozs7Ozs7Ozs7VTs7O1c7O2M7OytCOzs7O1c7OztXLE87VzthOzs7Z0IsbUIsTzs7Z0I7ZTs7VzthOzZDLHVCO1c7VzthOzs7Z0I7Z0I7ZTs7Vzs7O2dCO2lCOzs7O2tCOzs7O2lCOzsyQjs7Ozs7Ozs7Z0I7Ozs7Ozs7O1csTztVO2tCOztTO0ksTztHOzs7STs7OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STs7OztLOztJO0c7O0ksVTs7SSxpQjtHOzs7Ozs7Ozs7Ozs7O0k7O087O1EsUTtROztRO1E7VTs7UTtPOzs7O087O1EsWTtRLGtCO1E7VTs7O2E7Ozs7Yzs7Ozs7YTs7cUI7O1k7Ozs7OztRO1U7O3NDLFc7Ozs7Ozs7OztRO1U7UTtROzs7Vzs7Tzs7Ozs7Ozs7Tzs7O2tCOzsrQiwyQzs7O087OztrQjs7K0Isd0M7O087OztRO1U7OzthO2EsTztZOzs7Tzs7K0IsMkI7OztvRDs7O087Ozs7UTtRO1E7VTs7O2E7Ozs7O1E7Ozs7VTs7Ozs7OztXOzs7WTs7Ozs7Vzs7O1M7Ozs7O1M7Ozs7O08sTzs7Tzs7Ozs7UTtRO1U7OzthOzs7Tzs7O1MsTztROzs7Ozs7Uzs7O087O087O087Ozs7OztRO1E7VTs7O2E7YSxPO1k7OztROztPOzs7a0I7Ozt5Qjs7Tzs7Tzs7OztRO1E7OztZOztPOzs7a0I7OzsyQjs7Tzs7Tzs7OztRO1E7Tzs7O2tCOzs7dUI7O087OztPOzs2QixvQjs7O087OzhCLHNCOztJLE87Rzs7SSxXO0k7Ozs7O0s7SztJOzs7ZTs7O2M7O0k7RztHO0ksYTtJO007SSxjOzs7Ozs7STtLO087OztVO1UsTztTOzs7SztPOzs7VTtVO1c7Ozs7O1c7Vzs7OztlLGtCLFE7MkI7O2UsTzs7O3lCO3lCO3dCOzs7ZTs7ZTs7ZTs7ZTs7ZTs7OztnQixNO2dCLFE7Ozs7Ozs7ZTs7O2dCO2tCOzs7cUIsbUIsTTtxQixPO29COzs7Ozs7Ozs7Ozs7Ozs7b0IsZTs7O29CO3FCLGlCOzs7cUIsTztvQjs7b0I7O29CLGlCLFM7b0I7Ozs7Ozs7b0IsTzs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCOztlOztlLG1COzs7OztlOzs7O2U7Ozs7OztlOzs7ZTs7O2U7Ozs7ZTs7OztlOzs7O2U7O3VCOztVOztXLE87OztxQjs7b0I7OztVOztXLE87OztxQixPOzs7K0I7K0I7OzhCOzs7b0I7OztVO1U7OztXOzs7Ozs7Vzs7Yzs7MEMsVzs7OztXOzs7Ozs7O1c7Ozs7O1U7VyxTO1c7O1csTztVOzs7OztXO1c7O1U7Uzs7O0s7Tzs7O1U7OztXO1U7Uzs7O0s7O0s7TTtROzs7VztXO1U7Ozs7O0k7SztPOzs7VTtVO1M7OztLO087OztVOzs7Ozs7OztVOzs7O3NCOztVO1M7OztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksVTtJLFM7OztJOztLO00sSSxjLDJDOzs7OztPLFM7TztPOzs7STtHO0c7STtJO0k7STs7STtJO0k7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2Esa0M7YSxVOzs7Ozs7Ozs7TTs7Szs7Rzs7SSxzQjs7SyxtQjtLO00sUTtNO08sSSxlOzs7OztPOzs7O007Ozs7O007O007OztJO0c7O0k7Ozs7RztxQix3QjtHO0ksaUI7Ozs7OztJO0ssUTs7O0s7Tzs7K0IsbUM7OztJO0k7Rzs7STtLLE07O0ssTTs7SSxXOzs7O0s7O007Ozs7Ozs7Ozs7O007OztJO0s7aUQsMkI7OztJO0c7O0ksc0I7O0ssTTtJLHNCOztJLEksUTs7Ozs7Ozs7Ozs7OztJOzZCLHlCO0c7RztJO0k7STtJOzs7STtJO0c7O0k7OztnQjtnQjs7O2lDLE8saUI7Yzs7OztnQjs7O2dCO2lCLFE7OztpQjttQjs7O3NCOzs7Ozs7Ozs7cUI7OztnQjtlO0c7O0k7O3lDLFcscUI7O0k7Rzs7STs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STtJOztJLHVCO0k7Ozs7TTs7Ozs7Ozs7O0k7Rzs7STtLOzs7Ozs7USxPOzs7O0ssVztHOztJO0ssaUM7SztLLE8sb0Q7Rzs7STs7Ozs7O0s7O0k7Rzs7STs7Ozs7OztLLEksUTs7OytCOzs7Szs7STtHOztJOzs7OztNOzs7VTtTOzs7Ozs7Ozs7OztJLE87Rzs7O0s7TSxJO007UTtVO3lDLE87O00sTSxXO00sTSxXO0s7O0k7STt1Qjs7a0I7SSxxQixVO2tCOztJO0c7O0ksVzs7Ozs7OztJLEs7SztJOzZDO0k7STtHOztJLFc7Ozs7Ozs7STtHOztJO0k7Rzs7STtJO0c7O0k7ZTs7Ozs7OztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7MkIsTztJO0c7Ozs7Ozs7O0ksTzs7O0k7OztNO29EOzs7OztPOztNOzs7Ozs7Ozs7OztNO007TTs7O0k7Rzs7STs7O007MEI7c0I7TTs7Ozs7Ozs7Ozs7TTs7O0k7Rzs7STs7O007cUI7c0I7TTs7Ozs7Ozs7Ozs7TTtNO007OztJO0c7O0k7STtHOzs7SztNO007TTs7TSxtQjs7Ozs7Ozs7OztLO0k7STtHOztJO0k7Rzs7STtJLFc7STs7Ozs7O0s7O0s7Szs7O3dCO0k7Rzs7STtLO0s7Szs7Szs7TTtLO3NCO007O087Ozs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O2U7c0I7TTs7Ozs7Ozs7Ozs7TTtNO007Ozs7Ozs7Ozs7O007OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLGtCOztLO0k7Rzs7STtLO0k7RztHLHNCOztJO0c7O0ksTzs7d0Msc0I7OztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7STtNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxXO0s7Ozs7Ozs7MkI7O00sTTtLOztHOztJOzs7Ozs7TztRLFM7USxPO1EsTztROztpQjs7O087Ozs7Szs7STtHOztJOzs7Ozs7Ozs7Ozs2Qjs7Ozs2Qjs7Ozs4Qzs7Szs7STtHOztJLFk7O0s7Ozs7TSxVOzs7Ozs7Ozs7STtLO0s7Ozs7Ozs7WTs7OzthLE87YSxRO2E7ZTs7K0IseUI7O1k7OztZOzs7O2EsVTs7Ozt1Qjs7O1k7Ozs7Ozs7Ozs7OzttQjs7Ozs7O1k7Ozs7YSwrQjs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7Ozs7O1k7Ozs7O2EsVTs7OzJCO1k7Ozs7O1k7Ozs7O2EsVTs7OytCO1k7OztZLHVCLFU7Ozs7eUI7OztZOzs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztVLFM7O1M7O1c7OztZO3FCO1UsTzs7b0I7OztzQjs7O3dCOzs7MEI7Ozs0Qjs7OztTOzs7O0k7RztHO0ksYTtJLG9CO0ksbUI7SSxnQjtJO007STtNO0ksaUI7STtNO0k7TTtJLGdCO0k7TTtJO007SSxvQjtJO007STtNO0ksbUI7STtNO0k7TTtJLGU7STtNO0k7TTs7STs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7Rzs7STtLLE07SztLLFE7Ozs7SztPOztVOztJOztPOztPOztPO1EsVztRLE87TztRO1MsTzt1Qjs7O087O087Z0I7Tzs7Tzs7Ozs7Ozs7O08saUI7Tzs7RztHO0k7TTtJLFU7O0ksTztHOztJLE87Rzs7STs7Ozs7Ozs7O1M7OztVLE87OztVOzs7Ozs7Ozs7OztXLE07Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7Ozs7OztTOzs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxXOzs7OztTOzs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7cUI7Uzs7OztRLE87OzswQjs7Ozs7Ozs7VSxtQjtVOzs7Ozs7Ozs7Ozs7VyxHOzs7Ozs7VTs7Ozs7O1csTTs7OztTOzs7OzttQjs7UyxxQjtTOzs7O0ksTTt1QjtHOztJO0k7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7O0k7YSxNO0k7Rzs7STtLOztTO0s7O0k7SyxXO0s7SyxlO0k7STtLO0s7Tzs7eUIsbUIsZTs7SztJO2M7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOztJO0c7OztJOzs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOztLLE87OztJLE87O0c7OztNLHVCOztNLFc7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STs7O1EsTTtPOztJOzs7USxNO087SSx1Qjs7O0k7SztPOzs7OztVLFc7VSxPO1M7Szs7OztNOztPLE87Yzs7aUI7Ozs7Z0I7SSxJLE0sNkM7Ozs7O3VDOztLOzs7Ozs7SSxPO0c7RztJOzs7OztJLG1CLE07O0k7Rzs7STs7MEM7O0ksTztHOztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLO007TSxROzs7TTtLOzs7O2tCOztJLE87Rzs7STtLLE87SyxROzs7O0ssUTtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZO1ksTztJOzs7Szs7O0k7Rzs7STtJOzs7Ozs0QixPOzs7Uzs7OztLOztHOztJOzs7OztRLE87O1EsTzs7USxNOzJCOztJLE87Rzs7STtJO0ssTzs7STtHOztJOzs7STs7Ozs7OztJO0ssTzs7Ozs2Qjs7STtLLE87OztJO0c7O0k7Ozs7O0ssTTs7OztPO2dCOzs7Ozs7MkI7O087Ozs7UTtPOztPOzs7USxtQztROzs7OzthOzs7Ozs7Ozs7O2dCOztrQjs7b0MsaUM7Ozs7OztvQjs7Ozs7Ozs7YTs7WTs7Ozs7O1EsUztRO1U7Ozs7Ozs7O1E7VTs7O2E7YTt1Qjs7WTs7O08sTzs7Ozs7OztTOzs7OztVO1M7bUI7O1k7OzhCLDZDOztVO1c7OztXO2E7OztnQjs7aUIsTTs7O2dCO2U7O1c7Vzs7VyxPO1c7YTs7Ozs7Ozs7OztVLHFCO1U7VyxhO1csWTtXLGdCO1c7VTs7Ozs7Ozs7OztxQjs7Ozs7O087O1EsVztRLFU7USxjO1E7USxPO087Ozs7Ozs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OzhCO1c7WSxROzs7Vzs7YSxNO1k7O2E7O1k7Ozs7WTtZOzs7VztZLE07VyxVO1c7WTs7b0I7b0QsZTtXO1c7WSxXO1k7Yzs7Z0MsbUIsVTs7WTtjOzs7aUI7aUIsZTtnQjs7WSxPO1ksTztZLE87VztXO1k7Yzs7O2lDLHlDOzs7aUI7Z0I7WTtXOzs7OztRO1U7Ozs7USxrQjtRLFk7USxZOzs7VztZO2M7Z0Q7WSxLO1ksc0I7Vzs7OztvQjs7O1U7UTs7Ozs7O1U7VzthOzs7Z0IsVztnQixXO2U7O1c7YTs7K0IsbUIsZTs7VzthOzs7O1csTTtVO1c7O2E7Ozs7OztTO1U7WTs4QztVLFM7VSxJO1U7WTs7Ozs7O1M7VSxNO1M7VTs7WTs7O08sTzs7O2lCOzs7O2lCO2dCOzs7O087OztRLEs7UTtVOzt3Qiw2Qjs7UTtVOzsyQjs7USxPO087O087O1E7OztPO1E7MkI7UTs7Ozs7Uzs7O2lCOzs7O087OztROzs7Ozs7OztnQyxXOzs7WTthOzs7MEI7YTs7Ozs7Yzs7O3NCOzs7O1k7Ozs7YSxPO2EsUTtZOzs7OztzQjs7K0M7USxNOzs4QztPLE07O08sb0MsTTtPLFksVztPLHNCO087UTs7UyxzQjtROzs7OztRLFc7UTs7d0I7Ozs7Tzs7Ozs7OztROztRO1MsVTs7OztZLHdCOzs7O2E7Yzs7O2M7O2lCLE07OztpQjtrQixPOzs7O2E7YyxPOzs7WSxXO1k7Ozs7Ozs7UTtTLE07UTs7UztXO1MsTztROzs7Ozs7Ozs7O087USxVO1E7VTs7O2E7YTtjOztlLGU7Yzs7YTs7O2MsYTs7O2M7ZTs7O2U7O2tCLE07Ozs7O29DOzs7a0M7O2E7Ozs7c0I7O1k7O1EsTztRLFU7OztRO1U7OzZCLGdEOzs7O087c0IsTTtRLFc7UTtTOzs7O3VCOztTOzs7WSxNOzs7O29CLE07Ozs7Ozs7USxhO1E7Uzs7Ozs7O1M7OztZLE07Ozs7Ozs7WTs7YSxPOzs7Ozs7TywwQjs7Tzs7Tzs7O1E7UTs7O1MsVztTOzs7Ozs7Vzs7VztZLE87O1ksTztXOztPO1EsTzs7USxPO087O087Ozs7UTs7Ozs7Ozs7O1ksTTs7WTthLE87Ozs7UTtTLE87OztPO1EsTzs7Tzs7Tzs7USxPO1E7TztXO1MsTTs7O1MsSSxTOzs7O1c7WTs7OztlOzs7OztlOzs7OztTLFcsTTs7Ozt1Qjs7Ozs7O2E7O1E7Ozs7O1M7OztpQjs7Ozs7O1E7O1M7UztROztPOztRO087O087OztRO087O087OztRO087O087Ozs7OztRO1E7Tzs7Tzs7O1EsUTtPOztVOztXO1csVTs7O1c7Ozs7VTs7Vzs7OztVOzs7VyxPOzs7Tzs7Tzs7O1EsUTtRO087Ozs7cUI7Ozs7Ozs7O087OztRLFE7USxTO1EsUTtPOztPOzs7O1EsUTtRLFM7USxRO087O087OztRLFE7USxTO1EsTTtRO1U7OzthO2E7OztZOzs7Tzs7Ozs7O2lCOzs7Ozs7Ozs7OztTOzs7O1UsYTtVLGdCO1M7Ozs7UTs7OztTLFE7UztROzs7O2lCOzs7O087USxPOztPOztPOzs7UTtRO087Ozs7Ozs7UTs7OzBCO08sSSx3QztPOztPLG9CLFU7OztTO1UsTztVLE87VTtTOzs7OztRO1MsTzs7UTs7O1E7UyxPOztROzs7UTtTLE87UztROztPO1EsTztRO1EsZTtRO1U7Ozs7Ozs7O1EsTztPOztPOzs7UTtRLE87TyxPOzs7Ozs7OztPLE87O087Ozs7Ozs7OztXLFk7Vzs7O1ksVTtZLFc7Ozs7WTs7Z0I7Ozs7O1k7WTs7Ozs7Z0I7Ozs7WSxNO1k7VyxPOzs7Ozs7UTs7WTs7Ozs7UTtROzs7OzthLHdCO2E7Ozs7OztZOzs7Ozs7USxTO1E7VTs7Ozs7Ozs7Tzs7Ozs7OztrQjs7Ozs7Tzs7O1EsTztPLE87O08sbUM7O1E7UyxPOztROztPO1EsTTtRLE87UTs7VTs7O2M7Yzs7Ozs7Ozs7d0I7OzthOzs7O087Ozs7ZTs7Ozs7STs7O0k7STs7OztROzs7Z0I7OztHOztJLE87OzRCOztHOzs7SyxZO0s7STtJLFc7SSxPO0c7O0k7SSxZOztJOztHOzs7STs7OztJO0ksTzs7OzhCLDRDOzs7YzthOzs7Ozs7OztLOztROzs7OztTLE87UTs7O1EsMkI7Ozs7Ozs7OztTOzs7O2lCOzs7OztLO0k7Ozs7O087O2dCO2tEOzs7Tzs7O1E7UTs7Vzs7O2M7O2MsUzs7Yzs7VTtPO1M7OzJCLG9CLFc7Ozs7O087Ozs7OztjO2dEO1E7UTtVOzs7YTthO1k7O1E7VTs7O2E7YTtxQjs7c0M7OztZOztRLFM7UTs7Ozs7OztVOzs7Ozs7VyxPO2E7OztjOzs7Ozs7Ozs7Ozs7OztXOzs7TyxPOzs7aUI7aUI7Z0I7Ozs7TTs7OztPOzs7OztJOzs7YTs7O2dCOzs7aUIsTTtnQjt3Qjs7d0M7OztlOzs7O0k7OztpQjs7OzttQzs7Ozs7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1EsVTtXO1M7VTtXLE87VzthOzs7Z0I7Z0I7d0I7OztlOztVO1csTTtVOzs7VzthOzs2Qiw4Qzs7VzthOzs7Z0I7Z0IsTzs7OzBCLFU7MEIsTzt5Qjs7O2U7OztXO2E7OztnQixXO2U7O1c7YTs4QztXO2E7OytCLDRDOztXO2E7OztnQjtnQjtlOztXOzs7YztVOzs7OztXOzs7Ozs7Ozs7STtHOztJOzs7Ozs7Ozs7OztLO007OztPLE07O1M7OztZLG9CLE07WSxPO1c7Ozs7O0s7TTtROztzQiw2Qjs7TTtROzt3Qjs7TTtROztNOzs7O0k7SyxrQjtLO087OztVOzs7VztXO1c7O1c7O1ksTztZO2M7Ozs7Ozs7O1c7O1U7OztXOzs7VzthOzs7Ozs7OztVO1M7Ozs7O0ssTTtLLFU7O0s7OztNO1E7OztXOzs7WSxRO1k7Yzs7Ozs7Ozs7VztVOzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7NEM7Rzs7STs7Ozs7O0ksWTs7O0s7TSx5Qjs7STtHOzs7STtLO007UTs7O1csb0I7Ozs7a0M7O3dFOzs7VyxNO1U7Ozs7Uzs7Ozs7O1U7VSxRO1M7O007UTtLO00sTyxpRDs7O0ssWSxzQixZO0s7Ozs7Ozs7TTtNLFE7TTtLO007TSxPLHlEO0k7STs7O0k7SSxlO0c7O0k7YztjOztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7Ozs7O087USxPO1EsTztXO1EsVztRLE87Ozs7O0ksTztHOzs7STs7O0ksTztHO3lCLDRDOzRCLE8saUM7O0ksYyxXO0k7Ozs7USwwQyxnQjtJLE87Rzs7STs7Ozt5QjtJLGU7Rzs7SSxPOzs7Yzs7O2U7O2M7Ozs7aUM7O2E7OztHOzs7STs7Ozs7YTs7O2dCO2dCO2U7Ozs7O0k7Ozs7MkI7OzZCOztJLE87Rzs7O0k7STs7OztROztTLGE7Uzs7UTs7Ozs7O2tCOzs7Ozs7UTtTLE07UyxXO1E7Ozs7O21COztROztTLE07UyxxQjtTO1c7OztjOzs7O2U7OztpQjs7a0I7Ozs7Ozs7c0Msa0I7Ozs7aUI7Ozs7O2tCOzs7Ozs7O2lCOztjO2E7Ozs7OztTO1c7OztjO2M7O2E7OztRLEc7UztVOzs7Uzs7NEI7O1E7Ozs7O2dCOzs7UTs7Ozs7Ozs7b0I7Ozs7UTs7Ozs7Uzs7Ozs7YTs7Ozs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7OztROztnQjs7O1E7Ozs7O1M7Ozs7O2E7Ozs7OztROztnQjs7Ozs7Ozs7Rzs7SSxjOzs7O0s7OztpQjs7OztJOzs7Z0I7OztHOztJLFksTTs7SSxPOztxRDs7Ozs7Ozs7O1MsTTtROzs7OztTOztROzs7Ozs7Ozs7O1E7O1M7UztXOzs7Yzs7Ozs7ZTs7O2lCOzs7O2tCOztrQjs7Ozs7Ozt1Qjs7OzBCOzBCOzJCOzRCOzs7dUM7NEI7Ozs7OzJDOzsyQjs7OztrRDs7O3lCOzs7Ozs7Ozs7O2lCOztpQjs7OztrQjtpQjs7OztrQjs7bUIsVzttQjtxQjtrQzs7O21COzs4QjtvQjtxQixPO3FCLE07Ozs7Ozs7eUI7Ozs7Ozs7a0I7OzswQjs7a0I7OzswQjs7Ozs7aUI7O2tCOzs7cUI7a0M7aUI7Ozs7Z0M7Ozs7O2lCOztjO2E7Ozs7Ozs7Uzs7UztXOzttQyw2Qjs7O1MsTTtTLFE7Ozs7OzthOzs7Z0I7Z0I7Ozs7OzhCOzs7Ozs7Ozs7OztTLEksTSxnQzs7OztVO1c7OztnQjtrRDs7OztTO1UsTztVO1k7OztlO2U7ZTtjOzs7VTs7Ozs7Z0I7a0Q7O1UsTzs7Ozs7O3dCOzs7UTs7UTs7O1M7Ozs7O1MsUztROzs7O1E7OztTOzs7OztTLFM7UTs7UTs7Ozs7UztXOzs7YyxXO2E7O1MsZ0I7OztTOzs7UTs7Ozs7Ozs7OztROzs7Ozs7Ozs7UyxLO1UsTTtTO1UsTTtVLE07OztVO1k7OztlO2U7Ozs7OztjOzs7VTtZOzs7ZTtlOzs7Ozs7Yzs7O1U7VTs7VSwrQjtVLE87Uzs7Ozs7OzZCOzs7Ozs7WTs7Ozs7Ozs7OztXO1EsUztRO1M7Ozs7b0I7Ozs7UTs7Ozt1Qjs7Ozs7OztJOztLLHlDLG9CO0k7Ozs7Szs7O0k7OzthLEk7YTtxQjs7WTtHOztJO0k7Ozs7OztTO21CO1csTTs7Ozs7VyxNOzs7UTtTLFM7UyxXO1E7O1EsTTs7UTs7OztTOzs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7O1E7OztnQjs7O1E7Ozs7Uzs7OztROzs7Z0I7OztROztTOzs7OztROzs7O1ksRzthOzs7OztTLE07Ozs7O0c7O0k7O0s7Ozs7TTs7O0s7OzthOztJO0s7OztJO0c7O0k7STtLOztLO007O1M7OztZLFc7O1k7Ozs7YSxvQixLO2EsTzs7a0MsVyxnQzs7Ozs7Uzs7OztTLG9COzs7Ozs7Ozs7Ozs7OztnQixHO2lCOztnRDs7Ozs7Ozs7Ozs7OztnQixHO2lCOzs7Ozs7Ozs7YyxHO2U7Ozs7O1MsTTtROztLOzs7Ozs7OztXO1k7YTs7O2EsTzthLE87WSxXOztXO1ksSTtZO29COzs7Ozs7VSxJO1UsVzs7Ozs7Ozs7O1U7OztXOzs7Ozs7Ozs7bUIsRztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CO3FCO3dCO29COzs7OztlLE07OztVOzs7USxNOzs7OztTLEc7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsSzthLEk7YTtxQjs7Ozs7OztZLEc7YTs7Ozs7WTs7O2E7OztZO29COzs7Ozs7Ozs7YTs7O2M7OzthO3FCOzs7Ozs7O0ssSTtLLFc7O0c7O0k7SztNLGE7TSxTO007OztNOzs7Ozs7TyxNOzs7O0s7TTs7O007UTtLOzs7TTtPLE07TyxXO08sVztPLFE7TyxTOzs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEcsMkM7STtLLFc7SyxNO0ssTTtLLFM7SyxVOzs7SztLOzs7SyxvQjtLLE87Ozs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzsyQixtQjs7Ozs7Ozs7SztNLE87TSxPO007SztNOzs7O1MsTzs7O21CLFE7O2tCOzs7Ozs7OztTLE87OzttQjsyQjs7a0I7Ozs7UyxPOzs7bUI7MkI7O2tCOzs7O2lCOzs7K0I7Ozs7OzttQjs7OztTO2lCOztjOztLOztLO0s7TSxPO00sTzs7SztNO1E7TSxPO00sTztvQjtLO0ssTzs7O2U7ZTtlLE87Yzs7O0k7STtJLHlDLFc7O0s7Ozs7Ozs7Uzs7OztVLE07Uzs7O1U7VztvQjtTOzttQixNO1U7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxtQjtXOztVLE07Ozs7O1U7VyxPO1c7VzthOzs7Ozs7OztVOzs7Ozs7SyxNOztJO0s7SyxPO0ssUzs7Szs7Ozs7Ozs7STtJLEksVztJOzs7Szs7O00sVzs7OztJO0ssTztLLE87SztLO0s7Ozs7O0s7Ozs7O0s7TTtNLE07O007OztJO0s7SyxhO0s7Ozs7Ozs7Ozs7Ozs7STtLLE07STtLLFU7SyxNO0ssTTtLLGE7SyxhO0ssYTtLO087OztVLFc7VSxPLHlCO1M7O0ssTztLLFU7STs7O087USxTO1E7TztRLE07O087TTs7OztLO0s7Ozs7d0I7O0k7O0s7Szs7Ozs7Ozs7Ozs7O3NCOzs7Ozs7O0s7Ozs7WTs7Ozs7Ozs7OztNLEs7SztPOztzQixXLGlDOztNO087O3dCOztNOztPOzs7OztPOzs7O2E7Ozs7Ozs7Ozs7Ozs7OztLOzs7SztNOzs7O1M7OztLOztJO0ssUztLLFM7Ozs7OztJOzs7Ozs7VTswQyxlOzs7Ozs7Ozs7VzsyQyxlOztLLE07SztPOzs7VTtVO1M7OztLO0s7Ozs7d0I7O0k7STtLO087OztVLHFCLE87VSxPO1M7O0s7Tzs7O1U7VTtTOzs7SztJO0k7SztNO007Ozs7WTs7Ozs7OztLO007Ozs7TTttQjs7TTs7Ozs7O1M7OztLOztNOzs7OztVOzs7Ozs7Ozs7Ozs7STs7O0ssSTs7Ozs7Ozs7Ozs7OztJOzs7O0s7SztLOzs7Ozs7Ozs7YTs7O0k7OztJLE87Ozs7MkI7O0c7OztLO0s7STs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0c7OztNLHVCOztNLFc7Szs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7OEIsc0I7O0ksVzs7STtHOztJLFc7O0ksa0I7Rzs7SSxPOzs7YztlO2UsTTtjO2E7OztHOztJLDhCOzs7O08sTzs7Ozs7O2tCOzs7aUI7aUI7Ozs7cUI7Ozs7d0I7Ozs7aUI7Z0I7O087OztRLFE7UTtRO1E7Ozs7UTs7O1M7OztVLFU7VTtVO1U7Ozs7OztPLE87Ozs7O2lCOztrQjs7a0I7Ozs7Ozs7O3dCOzs7OztrQixPOztnQjs7Ozs7OztPLE87O087Ozs7USxNO08sTzs7OztnQyx1Qzs7Rzs7STtLLEs7SztPOzs7VTs7Ozs7OztVLEssa0M7VTtXLE87VyxPO1csZ0M7VyxTO1csTztVOztrQjs7Uzs7Ozs7dUM7Rzs7SSwyQjs7Ozs7Ozs7OztZOzs7YSxLO2E7ZTs7O2tCO2tCLGE7a0I7bUI7OztrQjtpQjs7YSxPO1k7b0I7Ozt1QjttRTt1Qjs7d0I7Ozt1QjtzQjs7Ozs7Ozs7Ozs7O1k7OzthO1k7Ozs7O2dDOzs7TTs7O0ksTztHO0c7O0k7OztLOzs7O0k7RztHO0ksVztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLO087OztVOzs7Ozs7ZSxZOzs7O2tCOztrQixNOzs7a0IsTTs7O2M7OztlO2U7MkI7Ozs7Ozs7Ozs7b0I7OztxQixPO3FCLFU7Ozs7O3FDOzs7d0IsSztxQzs7OztxQjs7b0I7b0IsTTs7OztvQixNOzs7Ozs7bUI7Ozs7b0IsUTs7Ozs7O21CLE07Ozs7O29COzs7cUI7O3lCO29COzs7O21COzs7b0IsUTs7Ozs7bUI7Ozs7b0IsUTs7Ozs7bUIscUI7bUIsVzs7OztjO1c7WTthOzthLFE7Ozs7d0I7YTs7Ozs7Ozs7d0I7Ozs7Ozs7Ozs7Ozs7VztZLFE7WTs7O1UsVztVO1M7O0s7Tzs7eUIsbUIsVTs7SyxLO0s7Tzs7eUIsb0IsVzs7SyxNO0s7Tzs7eUIscUIsWTs7SyxPO0s7Tzs7eUIsb0IsVzs7SyxNO0ssSztLO0ssUztLOztLOztNOzs7O1U7O1csTTtVLGtCOztXLE07O1U7Uzs7O007Tzs7Ozs7O1U7VSxNOzs7Ozs7O1M7Ozs7OztPLE07OztpQjs7OztLO007TSxJLDZCOzs7O1E7OztTOztVO1MsRztVOzs7O1E7Ozs7OztLOztNO007Ozs7Ozs7Ozs7Ozs7SztLO0k7SSxJLDZCOzs7O007O08sTTtrQjtNOzs7Ozs7O0s7Szs7Ozs7O1E7Ozs7OztTO1E7Ozs7OztrQjs7Ozs7Ozs7Ozs7Ozs7STs7SztLOzs7Ozs7UTs7Ozs7Tzs7Ozs7STs7SztLO29COzs7OztROzs7OztTO1E7OztrQjs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O0k7O087O3lCLG1CLGE7O0k7O1k7OztlOzs7Ozs7Z0I7a0I7OztlO2M7O0c7O0k7STtLO00sTTtNOzs7O1E7Ozs7aUI7OztROztRLE87Ozs7O2tCOzs7Ozs7a0I7bUI7O21COzs7b0IscUI7Ozs7Ozs7Ozs7Ozs7O21CLFk7Ozs7Ozs7OztxQjtzQixPOzs7OztrQzttQjs7c0I7OztvQixNO3VDO21COztvQjs7Ozs7Ozs7a0IsTzttQixNOztrQjttQjs7bUI7cUI7Ozt3Qjs7Ozs7O3lCLFU7eUI7eUI7eUI7d0I7dUI7Ozs7O2tCLE87Ozs7Ozs7O2lCOzs7UTs7OztTO1E7Ozs7UTs7O1E7OztTOzs7Ozs7UTttQzs7O0c7O0k7SyxvQjs7Szs7Ozs7Ozs7O0ksTzs7Ozs0Qjs7Rzs7O0k7Ozs7Ozs7OztPO1EsUztRLE87Ozs7O1cseUMsZTs7O087OztRLE87USxJO1E7O1c7OztVO1EsUTtROzs7Vzs7O2M7YztlOzs7OztnQixPO2UsTzs7YzthOzs7UTtVOzs7YTthLFc7WTs7USxVO1E7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Syx5Qzs7O1E7O1M7Ozs7USxnQjs7UTs7O1M7VztTLE87UyxhO1M7Ozs7O1EsVzs7O1E7Ozs7OztROztTO1c7NEMsYztTOzs7O2E7Ozs7Ozs7UTs7Ozs7UTs7O1M7Uzs7Ozs7UTs7Ozs7aUI7Ozs7Ozs7Uzs7O3VCOzs7Uzs7VTs7OztjOzs7K0I7O1U7WTs7Ozs7UztVOzs7O1M7VTs7Ozs7b0I7Ozs7Uzs7a0I7Ozs7Ozs7Ozs7UTs7UztXLHlDLGE7UyxlO1M7Ozs7O1M7Ozs7YyxTO2Msa0I7Yzt1QjthOzs7UTs7USxtQixPOztRO1MsUTtTLE07OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UTs7OztROztTOzs7Uzs7OzthOzs7Ozs7O1E7Z0I7OztROztTLFE7UztTLFE7OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UztRO29COzs7Ozs7OztJOztLOzs7Ozs7TyxVO29COzs7O0s7STtJOzs7SyxnQix5QztLLE87STtJO0ssTzs7SztPOzs7VSxrQjtTOzs7SyxPO0ssYTtJO0k7STtHOzs7STs7STtJO0ssWTtLLFM7SztPOzs7VTtTOzs7STs7O0k7OztLO0s7STs7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTO1M7Vzs0QyxjO1EsTzs7USxvQjtROzs7OztTOzs7OztROztTO1M7Vyx5QyxhO1EsTzs7OztROztTO1MsTztRLE87O1E7O1M7UztXOzs2QixtQixhOztRLE87Ozs7UTs7UztTLE87USxPOzs7O0c7O0k7STttQjtLLHlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEkseUI7UyxPOzs7Ozs7Ozs7USxtQjs2QjtRLHdCO1EsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEkseUI7UyxPOzs7Ozs7O0c7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTO1M7Vzs0QyxjO1EsTzs7USxvQjtROzs7Ozs7Ozs7Ozs7Ozs7OztVLEksd0I7VSxPOztTOzs7OztROztTO1M7Vyx5QyxhO1EsTzs7OztRLG1COztTOztVO1UsTztVLE87UyxPOztRLFc7USxPOztROztTO1M7Vzs7NkIsbUIsYTs7USxPOzs7Ozs7Ozs7Ozs7Ozs7OztTOztVO1U7VSxPO1UsTztTLE87O1EsSSx3QixPO1EsTzs7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7O0k7SyxZOzs7Ozs7Ozs7Ozs7O1EsbUM7UTs7Ozs7SyxNOzs7OztLO00sTztNLE87SyxPOztHOztJO0s7SyxNO0k7SztLO007Ozs7Ozs7UyxPOztTOzs7O1UsTTtTOztLO29FO0c7OztJOztJO0k7SyxZO0s7SztJOzs7b0I7TTs7O08sUTtPOzs7Ozs7Ozs7Szs7TSxVOzs7Ozs7Ozs7Ozs7OztVOzs7Vzs7Ozs7OztVOzs7OztXOzs7Ozs7O007OztPO08sVTtPLFE7Tzs7Ozs7Ozs7O2lCO0k7Ozs7O0s7Ozs7OztLOzs7O087O1MsTTtRLFc7USxPOzs0QyxXOzs7Ozs7O0sseUMsVzs7Ozs7O1EsTzs7Tyx5Qzs7O1U7O1c7VyxPO1U7a0I7OztVOzs7VyxNO1c7VzthOztXOzs7VTtrQjs7OztVOzs7Ozs7VTs7VzthOzhDLGM7VztXOztXOzs7VTtrQjs7O1U7OztXO1csTTtXLFE7Vzs7O1c7VTs7Ozs7bUI7Ozs7Ozs7Ozs7ZTs7O2dCLFE7OztnQjtnQjs7b0I7Ozs7O2dCO2dCOzs7Z0I7Z0I7Z0I7OzttQjttRCxlOztlOzs7Ozs7d0I7Ozs7Ozs7aUI7Ozs7a0IsUTs7O2tCO2tCOztzQjs7Ozs7a0I7a0I7a0I7OztrQjtrQjs2QjtpQjs7Ozs7OzBCOzs7Ozs7WTs7O2E7YTs7aUI7YTtlO2E7OzthOzs0Qjs7WTs7OztvQjs7Ozs7Vzs7Ozs7WTtZO2M7WTtZLE87Vzs7OztxQjs7Ozs7Ozs7VTs7VzthOzZDLGE7Vzs7O1U7OztvQjtxQjs7c0I7OzswQjs7O29CLE87bUI7Ozs7OztXOztZOztZLFE7WTtZLFE7WSxPO1k7OztlOzs7ZTs7O2dCO2dCO2U7Ozs7Ozs7WTtXOzttQjs7VSxXOztVO1csUTtXLE07VyxROzs7Yzs7O2M7OztlO2M7Ozs7Ozs7VztXO1U7Ozs7a0I7OztVOztXOzs7VztXLFE7Vzs7O1U7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztXOzs7WTtZO1k7MkI7WSxTOzs7ZTs7aUI7Ozs7O2tCO2tCOztpQzs7a0I7aUI7Ozs7eUI7Ozs7Ozs7Ozs7O2UsTTtjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxNOztZO2EsTzs7ZTtvRCxpQjs7Vzs7VTtXLFE7VztXLFE7Vzs7O2M7OztjOzs7ZTtlOzs4Qjs7Yzs7Ozs7Ozt1Qjs7O1c7VztVOzs7O2tCOzs7Ozs7O007TztRLFE7OztRO1E7Ozs7O087Ozs7O087USxPO1EsTztPLE87O0s7O00sTzs7OEI7O0s7O007TztRLFE7Ozs7OztXOzs7Ozs7O1MsTTs7O087Ozs7O1EsTTs7O0s7O00sTzs7b0M7OztLOzs7TTs7Ozs7O2lCOzs7Ozs7TTs7Ozs7TyxXO087TTs7Ozs7SztNLFU7O007SyxPO0k7SSxPOzs7STtLLE87SyxTO0k7Rzs7SSxzQzs7STtLLGU7SyxTO0s7Ozs7STs7RztJLGdCO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4QixPO3dCOztHOztJLEksVyw4Qzs7OzRCLE87OztHOztJO0k7Ozs7Ozs7Ozs7O0c7b0MscUM7O0k7STs7SSxPOzs7Yzs7aUI7OztxQjs7O3NCOzs7Ozs7Ozs7Ozs7O3lCOzswQixTOzBCLE07OzRCOzs7Ozt5Qjs7Ozt5Qjs7MEI7NEI7NkQsYzt5Qjs7eUI7MEIsTTs7Ozs7eUI7eUI7MEIsTTs7Ozs7Ozs7MkI7MkI7NEI7O2dDOzs7Ozs7Ozs7Ozs7Ozs7Ozt5Qjs7MEI7NEI7NEQsYTs7Ozs7K0IsUzs7K0I7d0M7Ozs7OEI7OzhCOzs7eUIsbUIsTzs7eUI7MEIsTTswQixNOzs7NkIsWTs2Qjs7OzhCOzZCOzs7OzswQjs7Ozs7eUI7OzBCOzs7eUI7eUI7MEIsTzs7NEI7Ozt5Qjs7MEIsUTswQjswQixROzs7NkIsWTs2Qjs7OzhCOzZCOzs7OzswQjs7Ozs7O2lDOztxQjtvQjs7ZSxNO2MsTzs7O3dCO3dCOzs7Ozs7Ozs7Ozs7Ozs7O3VCOzs7OztHOztJLFk7O0k7Rzs7STtnQjs7O00sTTtpQzs7STs7Ozs7Ozs7ZTs7Rzs7STs7OztROztJOzs7O0c7O0k7SyxVO0ssOEI7SyxZO0k7O0s7Ozs7Vzs7OztVOzs7SyxXOzs7SyxNO0k7O0s7OztROztLLE07Szs7O1U7Ozs7OztTOzs7SztJLFc7Rzs7STtLLGtCLE07SyxPOztJO0ssTztJO0k7SyxNO0ssTTtLLE07SSxPOztHOzs7STtLLE07OztLO00sTTs7TSxNO007UTtLLE87STtJOztPOztPOztPO2U7Ozs7STtLLE87STs7SztLLFU7SSxPOzs7Ozs7Ozs7O0c7OztNLHVCOztNO0s7O0k7OztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJO0s7SyxhLFc7STtHOzs7Ozs7Ozs7O0k7Szs7OztLLGtCO0s7SyxZO0k7Ozs7O1k7O0c7O0k7SztPO1M7OztZOzs7Ozs7WSxTO1k7YTtlO2EsSTtZO1c7O0ssUTs7O0ssTztJLE87OztjLGM7O2M7YTs7O0c7O0k7SztPOzs2Qix3Qjs7Ozs7OztJO0c7RywyQyxTOztJLDJCLE8sK0I7Rzs7STs7YSxjLE87Ozs7O3VCLFc7dUI7c0I7WTs7Rzs7STs7O2M7YTs7NEIsUzs7OztHO3NCLE8sb0I7OEIsNEI7O0k7OztLO0s7OztLLE87OztJOzs7YyxXO2MsVzthOzs7YSxXO2EsVztZOzs7OztHO0ksbUMsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7YyxPLGM7YTs7NEIsTyxjLHFCOzs7O0c7d0IseUI7O0ksUSxxQyxTOztJOzs7YztjO2E7Rzs7SSxPOzs7YztjO2E7OztHOztJLHVEO0k7Rzs7SSxzQztnQjtJOztLLFE7SyxPO0ssTztLLFM7SztLO0ksVzs7O0k7O087Ozs7OztROzs7UTtPOztPOzs7UTs7O087O08sTzsyQzs7OztJO0s7Szs7Szs7TTs7UTs7O1c7VztVOzs7O0k7Rzs7STtLO087OztVO1U7Uzs7O0s7Tzs7Ozs7Vzs7O29COztxQzs7O1U7VSxPOzs7b0I7b0I7bUI7Ozs7STtHOztJLEksVTs7Szs7USxvQjs7Ozt1QixNOzs7OztTOzhCLE07O1MsSSxrQjs7Ozs7VyxVO1c7O1UsTTs7UztVOztVLFU7dUIsTTtTOztVLDBCLHNCOzs7YTs7O2M7Ozs7YTs7Ozs7Ozs7WTtVO1U7Ozs7Yyx3QztjOzthOzs7O1M7Ozs7Ozs7Ozs7O1M7VTs7Ozs7Ozs7VTtTOztpQyw2Qjs7Ozs7O1E7Ozs7OztTOzs7UTs7Z0MscUM7O1E7Ozs7O1M7UTs7Z0MscUM7O1E7OztTOzs7UTs7Z0MsNkI7Ozs7Ozs7Ozs7O3NCOztVOztnQyxnQzs7OztTOzs7O1U7VTtZOzs0Qjs7VSw0QiwwQjtVLDBCLFk7OzthOzs7ZSxNOzs7O2U7ZTs7O3VCOztjOzs7O1k7VTtZOzJDLHdCO1M7O1c7WTtjO1k7Ozs7Ozs7Ozs7NEI7Ozs7WTs7WTs7Ozs7YTs7Ozs7Z0I7Ozs7YSxNOzs7Ozs7OztnQjs7Ozs0Qjs0QjsyQjs7ZTs7WTs7O3NCLGU7Ozs7OztnQzs4Qzs7Ozs7OzBDOzs7Ozs7Ozs7MEMsTzt5QzsrQjtxQjs7Ozs7OztZOzs7YTs7O2dDLDZDOzs7Z0IsaUIsaUI7Z0I7Ozs7b0I7Z0IsTTs7O3lCOzs7ZTs7Ozs7WTs7O1E7UTs7UTs7OztTLFU7OztTLFU7OztTO1M7O1E7OztrQjs7Ozs7bUI7cUI7bUI7cUI7bUI7O2tCO2lCOztROzs7OztTLFU7OztTO1M7UTs7O2tCOzs7bUIsUTtrQjtpQjs7USwwQjtROztROzs7O1M7UTs7O2tCO2tCO2lCOztROzs7O1M7UTs7O2tCO2tCO2lCOztROzs7O1M7UztROzs7a0I7a0I7aUI7O1EsOEI7UTs7OEIsc0I7OztROzsrQixzQjs7O1E7OytCLG9CO2dCLDRCOztJOztLO2M7OzhCOztJOztLOztROzBDO2UscUMsUzs7Syw0QixjO0k7OztLLFU7Szs7STs7Ozs7O0s7SztPO0s7SyxTO0ssUTtLOzs7Szs7SztPOzs7Ozs7OztLLFE7SztJO0c7O0ksTzs7MkI7O0c7dUIsNEIsd0I7Rzs7O00sdUI7OztPOztROztXLE87Ozs7OztVO1E7O1csVTtXLE87VTtRO1U7WSx3QyxZOztRLE07UTtVO1ksMkMsZTtRLFMsVztPO2U7OztNO08sTzs7Ozs7Ozs7OztNO007TyxVO08sTztNO007TztTO1csd0MsWTs7TyxNO08sVyxXO007Yzs7Szs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Z0MsTztJLEc7SyxNO0k7SyxPO0ssTztJLFMsTTtJO0c7O0k7OztPLEc7USxNO087O087Ozs7OztRO1U7OzJCOztPOzswQixpQzs7Tzs7Ozs7O1E7Tzs7Tzs7Ozs7UTtPOzs7Tzs7c0Isd0M7O087Ozs7Ozs7Ozs7OztjLEcsZ0M7Ozs7Ozs7Ozs7Ozs7O2UsRztnQjs7Ozs7Ozs7Ozs7O2EsRztjOzs7Ozs7Tzs7ZTs7Z0M7Ozs7Tzs7OztRO1U7OzJCOztRO1U7OzthO2E7WTs7O1E7VTs7O2E7YTtZOztRO087O087Ozs7O1E7VTs7MkI7O1E7VTs7O2E7YTtZOztPOzs7Tzs7ZTs7Z0M7OztPOzs7O1E7Tzs7Tzs7OztRO087O087Ozs7UTtRO087O08sa0M7Tzs7TyxrQztPOztPOzs7Ozs7UTtRO087OztPOztPOzs7Ozs7UTtVOzsyQjs7UTtPOztvQzs7O087ZTs7OztJOzs7SyxRO0ksTzs7O0ksTzs7O2M7YzthOzs7O0c7O0k7STs7O1E7O1E7O1E7O1Esc0I7Ozs7VSxXO1U7OztROzs7OztRO1MsTzs7O1E7Ozs7Ozs7O1E7OztXO1c7VTs7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7Ozs7Ozs7OztRLE87OztROztRO2tEOzs7UTtrRDs7USxPOztnQzs7OztRO1E7OztXO1c7VTs7USxPOztnQzs7OztRLE87OztROzs7OztROzs7OztRO1E7Ozs7O1E7Ozs7O1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtRLE87Ozs7O0s7OztHOztJOzs7SSxPOzt5QixnQyxrQjtHOztJLE87OzRCO0c7O0k7Ozs7O0c7O0k7Ozs7O0s7Ozs7Ozs7Ozs7OztXO2E7O2M7bUI7WTthOzs7WTs7Ozs7Ozs7bUIsTTtLLFM7Szs7O1EsbUIsTztRLFMsTTtRO087O0s7TSxPO00sTztNLFc7SztNLEksVyxxQzs7OzhCOzs7SztLO007UTs7MEIsa0IseUI7O007TTtRLDJDO00sZTtNLFU7TTtROzs7VyxPO1U7Ozs7TSxTO007USx5QyxrQjtNLFk7Szs7STtLO007Ozs7TTs7OztVOztLOzs7OztNOzs7ZTs7OztHOzhCO0c7STs7Ozs7Ozs7OztJO0ssUTtLLFk7SyxXO0s7SztJO0s7O0ssVztLLE87STs7Szs7eUIsTzs7OztTOzs7VSxVOzs7Ozs7Ozs7OztXOzs7OzthOzs7OztZOzs7OztTLE87Ozs7eUIsa0I7Ozs7Uzs7OztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VTtVO1U7VSxjOzs7O1k7O2EsSzs7WTtZOzs7O1U7VTs7Ozs7SyxPO0k7MkIsNEI7O0s7OztLOzs7STs7Szs7Szs7O0k7STs7Szs7Ozs7OztVLEc7VztZLEs7WSxPO1k7O1ksTTs7OzJCOzs7Ozs7O1MsRzs7O2dCOztLLFc7SyxPOzs7ZSxrQztlO2M7OztJO0ksYTtHOztJOzs7K0I7Ozs7O0ksSSxvQixRO0k7SyxJLFcseUM7Ozs2Qjs7O0k7O0ssWTs7OzthOzs7SztLLE87STs7Ozs7OztTO1MsTzs7aUM7Ozs7Ozs7Ozs7Uzs7O1k7WTtXOzs7Ozs7UyxPOztpQzs7Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7UztTOzsyQixrQiwyQjs7UyxPOzs7bUI7bUI7a0I7Ozs7UztTOzsyQixrQiwyQjs7aUI7OzZCOzs7OztTO1MsTzs7aUM7Ozs7Ozs7O1c7VztZO1ksTztXOzs7O1M7Ozs7Ozs7Uzs7Ozs7UztTOzs7OztTOzs7OztTOzs7OztTO1M7Ozs7Ozs7UyxPOztpQzs7Ozs7O2lCOztNOzs7O0k7SSxZOzs7Ozs7Uzs7Ozs7O1U7WTs7NkI7O1M7Ozs7UztpQjs7a0M7OztTOzs7Ozs7VTtTOztTOzs7OztVO1M7O1M7OztVO1k7OztlOzs7Ozs7OztnQjtnQjtrQjs7ZTtjOztTOztTOzs7O1U7WTs7NkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7OztrQjs7Ozs7Ozs7O1M7O1M7Ozs7VTtVO1k7OztlO2U7Yzs7VTtZOzs7ZTtlO2M7O1U7WTs7NkI7O1M7Ozs7O1M7Ozs7O1U7WTs7NkI7O1U7WTs7O2U7ZTtjOztTOzs7O1U7MkI7Ozs7O2tDOzs7Uzs7VTtZOzs2Qjs7UztVO1csUTs7O1c7YTs7O2dCO2dCLFc7ZTs7VzthOzs7Z0I7Z0IsTztlOzs7O1csTztXO2E7OztnQjtnQjtlOzs7O1U7Ozs7aUM7Ozs7Ozs7O1c7Vzs7Ozs7Uzs7O1U7OztTOzs7WSxNO1c7Vzs7OztVO1U7Ozs7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOztTLGtDO1M7O1Msa0M7Uzs7Uzs7Ozs7O1U7VTtTOzs7Uzs7Uzs7Ozs7O1U7WTs7NkI7O1U7Uzs7O1M7OztTO2lCOzs7STtLOzs7SyxNO0k7SyxJLFcsMEM7Ozs2Qjs7O0k7O0s7SztLLE87STs7SztNLFU7Ozs7Ozs7O007TyxROzs7Ozs7OzhCOzs7O0k7Ozs7Ozs2Qjs7Uzs7Uzs7Ozs7OzthO2EsTzs7cUM7O1k7Uzs7VTtXO3lCOzs7Ozs7Uzs7Ozs7Ozs7OztVO1c7Vzs7OztTOzs7Ozs7Ozs7Uzs7Ozs7O1M7OzJCLG9CLDZCOzs7Ozs7UyxPOztpQzs7Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7UztTOzsyQixrQix3Qjs7UyxPOztrQyxrQix3Qjs7OztTOztTOzsyQixrQixzQjs7aUI7OzZCOzs7OztTLE87O2lDOzs7O1M7Ozs7O1M7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7Uzs7Ozs7OztTO1M7Ozs7Ozs7OztTLE87O2lDOzs7Ozs7Ozs7Ozs7O0k7SSxjO0k7Szs7TSxlLDZCOztLO0k7STtLOztNLGUsNkI7O0s7STs7Ozs7OztTLEksVSwyQzs7O2dDOzs7Ozs7Ozs7YTs7Ozs7YyxNO2E7WTtTOztVO1c7dUI7Vzs7WTs7Ozs7Uzs7Uzs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7WTthLE07YSxNO2dCO2EsVTthLE87Ozs7OztTLE87Ozs7OztVO1c7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7YyxJLDJCO2M7Ozs7Ozs7OztpQixNOzs7OztlOzs7ZTs7Ozs7Z0I7Ozs7OztZOzs7OzthO1k7O1k7Ozs7O2E7OztjO2M7Ozs7YTthOzs7Ozs7O2E7YTs7Ozs7O1M7Ozs7O1U7Uzs7Uzs7O1U7WTs7O2UsVTtlO2M7O1M7OztTLGM7O1M7Ozs7VTtVO1k7OztlO2U7Yzs7VTtZOzs7ZTtlO2M7O1UsVztTOzs7OztTOzs7OztVLE07VTtZOzs7ZTtlO2M7O1M7OztTLGU7O1M7Ozs7OztVO1M7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOzs7O1UsbUI7VTs7O1M7VTtVOzs7OztTLGtDO1M7O1M7Ozs7OztVO1U7Uzs7eUM7O1M7Ozs7OztVLE07VTtTOzt3Qzs7O1MseUI7OztpQjs7O0k7SztLLFE7SztLLGE7SSxRO0k7Rzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHdCOzRCOzRCOzRCOzRCOzRCOzRCOzRCOzRCO2E7SztJO0c7O0k7OztROztROztROztROztROztROztROztRO2dCOzs7STtHO0c7STs7Ozs7SSxVO0k7Rzs7SSxVO21CO0k7Ozs7Rzs7SSxvQjtJOzs7Tzs7O1EsUztnQjtRLE07TztPLE87TTs7SSxVO0k7SSxPO0c7Rzs7OztJLGtCO0k7STtLLGU7SyxTLDJCO0k7SyxNOztJO0ksSSw0Qjs7OztNO08sTTtPLE87TyxNOztNOzs7OztJO0s7Tzs7O1U7Ozs7O1c7VTtTOzs7OztJO0c7bUIsWTtpQyxZOztJO0k7aUIsTTs7Ozs7OztLLEc7TTtNOzs7O0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7STtJOzs7O0ksaUI7O0c7O0k7Szs7bUIsVyxxQzs7O0c7O0ksRztLLE87STs7UztLOztROztLLE87O0k7Rzs7SSxPOzs7YyxXO2M7ZTtnQixhO2dCO2tCO3FCOzs7Ozs7Ozs7OztjO3lCOzt1QzswQjs7O2UsWTs7Ozs7O2U7O2dCLE07Z0IsTTtnQixNO2UsTzs7YyxJLFU7Ozs7O2U7O2dCLE07Z0IsTTtlLE87O2M7Ozs7b0I7Ozs7O0c7O0k7OztPOzBCOztPLE87TTs7OztHOztJOztpQjs7OztNLEcsdUM7TTs7Ozs7TTs7O08sTztNOzttQztPOztNOzs7OztHO0c7STs7OztJOztJLGlCOztJLE07Rzs7STs7O0s7SztNO08sTTtPLEs7TTs7O3NCOzs7Ozs7Tzs7Ozs7Ozs7Ozs7SyxJLFE7Ozs7Ozs7ZTs7cUI7O0c7O0k7STtLLE07SyxNOztLO3NDLDRCOzs7Rzs7STs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCOzZCLE87NEIsTztHOzs7OztJOzs7Ozs7STs7OzswQiw0Qzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTzs7O0ksVztJLE87O2M7RztHOzs7OztJOztJOzJCLHFDOztLOzRCO0s7STs7Szs7SztJO0k7O0c7OztJO0k7O0k7Rzs7STtLO0s7Ozs7O00sTTs7O0c7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Rzs7SSxJLHdEOzs7OztNLFk7a0IsTTs7b0I7TSx1QjtNO007O0s7O0c7O0k7a0I7O0k7Rzs7SSxXO0k7OztPO087TTs7STtHOztJO0ksTztHOztJLEksK0IsTTtJLE87Rzs7SSxJLHFEOzs7O007TTtNOzs7OztJO0k7STtJO0k7SSwrQjs7OztNO007TTs7Ozs7STtJO0k7STtJO0ksK0I7Ozs7TTtNO007Ozs7O0ksTztHOztJOzs7Ozs0Qjs7NEI7OzRCOzs0QixPOzs4Qjs7OEI7c0M7OztPOzs7UTtVLDRCOzs2QixvQyxTO087Tzs7Tzs7UTtVLCtCO087OztVLE8sK0I7Uzs7TzttQzs7Rzs7STs7O08sTztRO087UTtRO1E7Ozs7OztROzs7TTs7O0ssUztLLE87O2tDLE8sMkI7OztlLEksUSxlOzs7dUM7OztjO0k7Ozs7SyxPO0ksZTtJLE87O2lDLE8sK0I7OztjOztpQjs7Ozs7OztpQzt1QjtlLE07O2M7YTtHOztJO0k7STtJLE87Rzs7SSxPOzs7Yzs7O2lCOzs7a0I7O2lCOztpQixxQztpQjs7aUIscUM7aUI7O2lCLHVDO2lCOzs7aUI7O2E7O0c7O0ksVztJOzs7TztPO087TTs7O0k7Rzs7STtHO21DLHVCOztJO087SztJLFc7STs7O087TztPO007Ozs7Rzs7SSxXOzs7STtJOztHOztJO0ksd0I7Rzs7STtJLGlCO0k7Rzs7SSxPOzs7YztpQzs7YzthOzs7Rzs7SSxPOzs7YztpQzs7YzthOzs7Rzs7STs7O0ssaUI7Szs7TTtNLFU7O2EsTTtLOztJLE87RztpQyx1Qjs4QiwrQjs7STtLOzs7Rzs7STtJOzs7TztRLE07UTs7MEI7OztNOztJO0c7O0k7RzttRDtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Rzs7O00sdUI7O00sVztLOztJOzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7STtLLFU7SyxNO0ssTzthLDRCO0k7SSxNO0c7O0k7Z0I7O0ksTzs7Ozs7Yzs7O0c7O0ksd0I7RztpQzs7SSxJLEssNEI7STtJO0k7SSxPO0c7O0ksUztJLE87Ozs7ZTs7Yzs7O2M7ZTtlO2lCLDJCO2M7ZSxNO2MsVTs7YyxPO2E7Rzs7SSxTO0k7STtLLE07SztPOzs7VTtXO1csUztXLE07VyxNO1csTztzQjtVOztXO1csTTs7aUI7VyxNO1UsUztVO1c7WSxNOzs7Ozs7OztVO1UscUI7VTtVLE07Ozs7STtHOztJLGdDO2U7STs7O2tCLFc7SyxRLFc7STtJOzs7SSxnQztlO0k7OztrQixXO0ssUSxXO0k7STs7O0k7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFM7STtLO2U7Szs7O00sVTtNLEc7TyxNOzs7Ozs7Ozs7O1c7Ozs7STtHOztJLGMsK0I7Rzs7STtLLFM7SyxTOztJO0c7OztJO0s7Szs7O0kseUIsTywyQjtJO0s7O1E7VTs7VyxVOztXO1k7Ozs7Ozs7OztZLFU7WTs7VyxPO1U7OEI7Ozs7Szs7UTtVOztXO1c7VTtLOzs7UTs7OzswQixPLDhCOztJLE87Ozs7O2M7YTtHOztJOzs7OzsyQjs7Rzs7STs7SyxPOzs7SSxPOztHOzs7TSx1Qjs7TSxXO0s7OztJO0k7SSxPOztpQyxzQzs7O2MsTzt1Qjs7d0I7Ozs7Ozs7dUI7YTtHOztJO0k7OzsyQjs7O0c7O0k7STs7OzJCOzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7STs7Ozs7Ozs7SSxPO0c7O0k7STtJO0k7STtJO0ksTTtHOztJO0k7SSxNO0c7O0k7STtJLE07Rzs7STtJLE07Rzs7SSxZOztJO0c7O0ksWTs7STtHO0c7STtJO0k7STtJO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87O0c7O0k7O3NCLE07Ozs7O0s7O1E7O3NCLE8sOEI7O0s7Ozs7O00sTzs7OEI7Ozs7OztHOztJLGdCOztLLE87OzZCOzs7OztHOztJOzs7aUI7O2lDOzs7Ozs7O0c7O0k7SyxTO0ssTztLLFE7a0MsTztJLFc7STs7cUI7Ozs7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxPO0ksTyxXO0c7OztLLCtCLFM7STs7SywrQixhO0k7Ozs7Ozs7Ozs7USxvQjs7O1MsTzs7aUM7Ozs7Ozs7OzBCOzs7O1U7O1U7O1U7O1U7O1M7OzBCOzs7VTs7Uzs7UTs7Ozs7O1M7Ozs7O2E7O3dCOzt3Qzs7OztZO1M7Ozs7Uzs7OztTOztVOzs7VSxPOzs7Ozs7UTs7eUI7O1E7Uyx5QixTO1M7UztvQjtRLHFCOzs7O21COzttQzs7Ozs7Ozs7O1E7O1E7O1E7Ozs7Ozs7OztVOztVOztVOztVOztVOztTOzs7Uzs7Uzs7Uzs7Uzs7UTs7eUI7Ozs7Uzs7Uzs7Uzs7Uzs7VSxPO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTOztROzs7TTtPO087Ozs7Ozt3Qjs7OztRLE87Ozs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7Ozs7Ozs7O1M7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7OztTOztTOztTOytCOztTLGM7dUI7UyxzQixPO1MsTzs7aUM7Ozs7OztTLE87Ozs7Ozs7O1M7O1M7Ozs7UyxjOztVLE87O2tDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDO1M7O1UsTztVLE87Ozs7OztTOzs7Ozs7Ozs7OztTOzs7O1UsYzs7VyxPOzttQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7UTs7UTs4QixPOztROztROzs7Ozs7Ozs7Ozs7UTtROzs7OztrQjtrQjs7OztRO1E7Ozs7O2tCO2tCO2tCOzs7O1E7OEI7Ozs7SSxlOzs7OztjOzsrQjs7OztHOztJOzs7O0k7O087O0ksRztLLEksUzs7TTs7TyxNO08sVztPLE87TSxXO00sTTs7SztNLE07Ozs7SztNO087O1U7Ozs7O2E7YTtZOzs7TTtPO08sZTtPOzs7Ozs7OztNOztPO21EO087TyxPO00sVztNO00sTTs7Szs7Ozs7Ozs7UTs7O1c7O1U7Ozs7OztROzs7O1csYztXOztZLGE7WSxZO1c7OztJOzs7TztPO007O0k7SyxRO0s7OztPOzs7USxROzs7Ozs7Ozs7b0I7OztTO1UsTTtnQjs7Ozs7Tzs7Ozs7O1UsSSxjOzs7O1ksTTs7O3FCOzs7O1U7Vzs7Ozs7Vzs7Ozs7OztVO1csTTs7Ozs7OztPO1EsTTs7TztRLE07USxNOzs7Ozs7OztPOzs7Ozs7OztNOzs7UztTO1E7Ozs7Ozs7O0ksVzs7SSxXOzs7Rzs7STtJO0ssTTtLLE07SSxPO0c7RyxJOztJO0s7SyxNO0ssTTtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0c7O0k7O0s7O087WTtNLEc7TSxHOzs7Ozs7STtHOzJCLDRCOzJCLDRCOztJOzs7Szs7UTs7MEIsNEI7O1k7TTs7O0s7Tzs7O1UsbUI7O1UsTztTOztNOzt1QztJLFU7STs7Ozs7Ozs7OztRO1E7UTtROztTLFU7OztPO087O2dDOzs7VTtVO1U7OztXOztZLFU7Ozs7Ozs7OztVOzs7Ozs7O21CO1csTTs7Ozs7VTs7WTtpQjs7YTs7Ozs7Vzs7YTtrQjtZOzs7aUI7Ozs7WSxjOzs7O2E7O1k7O2U7WSxNOzs7Ozs7Ozs7VTs7VyxNOzs7O1U7O1csTTs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7O0c7OztJO0s7WTtLOzs7OztNOztPLFk7TyxNLFc7TyxNO08sWTtNO00sTTs7O0s7O00sTSxXO00sWSxXO00sVztLO0ssTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQiwrQzs7SSw4QjtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7RztvQix3RDs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7O08sNEMsUztJOzs7O0c7O0k7Rzs7STtHO29CLHdEOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7OztZO0c7O0ksd0M7Rzs7STtHOztJOztLO087O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0ksVztJLFc7RztHOztJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHO0c7STs7OzJCLFM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOzJCLDZDOztJO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJO0c7O0ksTTs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0ksMEI7Rzs7STs7O1k7Rzs7STtHOztJLG9DO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7eUIsbUQ7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHO3lCLG9EOztJO0c7dUIsa0Q7dUIsa0Q7O0k7Rzt1QixrRDt3QixtRDt5QixvRDt5QixvRDs7STtHOztJO0c7eUIsb0Q7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7RztrQiwwRDs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxhOzs7Ozs7Ozs7Ozs7Ozs7O0s7TTs7UyxNOztROztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJO0ksTzs7O2M7O2U7OzswQyxpQzs7NEM7ZTtnQjsyQjs7ZTsyQyxXLGM7ZTs7O2tCLHVCLGtCLGlCOzs7a0I7OzJCOzJCLHVCOzBCOzs7a0IsMkIsWSxpQjs7O2tCLDJCLFksaUI7OztrQjtzQyxvQiwwQjs7O2tCO3NDLFksMEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7Ozs4QjtrQjs7O21CO21CO3FCOztzQzs7a0I7OztrQjs7c0Msb0IsMEI7OztrQjs7MkI7b0U7MkI7MEI7OztrQjs7MkI7MkI7MkIsTzswQjs2Qzs7YztjO2E7O0c7MEIsbUI7NEIsbUI7O0csdUI7RyxJO0csMEI7RztHLHlCO0c7RyxzQjtHO0csMEI7RztHLDZCO0c7Ryw0QjtHO0csNEI7RztHLDJCO0c7RyxpQztHO0csa0M7RztHLGdDO0c7Ryx3QjtHO0csd0I7RztHLHdCO0c7RyxxQjtvQixrRDs7Ryx5QjtHO0csd0I7RztHLDhCO0c7RywyQjtHO0csOEI7RztHLCtCO0c7Ryw2Qjs7STtLLE87SyxPO0ksTyxXO0c7O21CLG9EO21CLG9EO0c7SSxRO0k7Ryx1QjtHO0csMEI7RztHLDBCO0c7Ryx1QjtHO0csMEI7RztHLHNCO0c7RywyQjtHO0csOEI7RztHLDBCO0c7Ryw2QjtHO0ksYztJO0csNEI7bUIsa0Q7O0csc0I7O0k7SyxPO0ssTztJLE8sVztHOztHLGlCO2tDLDhCO29DLDhCOztHLHVCO0c7RyxzQjtHO0csd0I7RztHLG9CO0c7RywrQjtHO0csd0I7RztHLG9CO0c7Ryx3QjtHO0csbUM7Z0Msc0M7O0csc0M7O0k7STtHOztHLHlCO0c7Ryx1QjtHO0csdUI7eUIsNkI7O0csdUI7RztHLDJCO0c7RywyQjtHO0csdUI7RztHLDJCO0c7RyxvQjtHO0csc0I7RztHLHNCOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0csd0I7NEIsTyxrQzs7SSxPOztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7bUMsOEI7O0csMEI7RztHLDZCO0c7Ryx1QjtHO0csbUM7RztHLDhDO087Ryx5Qzs7STtJO0ksTztHOztJO0k7STtJLE87Rzs7Ryx1QztzQixtQzs7Ryw4QjtxQyw4Qjs7Ryx1Qjs7RyxpQjtHO0cscUI7RyxJO0csd0I7RztHLG9DO0c7RyxpQjtrQixrQzs7SSxlO0ksTztHO3FCLGdEO3dCLGtDOzs0Qix1Qzs0QixpQzs7Ryw4Qjt3QixtQzt3QixrQzs7RyxpQjtHO0csb0I7RztHLGlCO0csSTsyQiw0Qjs7Ryx5QjtHO0cseUI7RztHLHVCO2tDLDZCOztHLDRCO0c7Ryw0QjtHO0csMEI7aUIsa0M7O0csc0I7O0k7OztHLG9CO3NCLDZCO2tCLGtDOytCLDhCOztJLFk7Z0I7SSx1Qjs7OztlOzs7OztHOztJLFk7Z0I7O0ksTztHOztHLHNCO0c7Ryx5QjsyQixPLDBCO3dCLE8sMEI7eUIsTywwQjs7Ryw0QjtHO0csK0I7MEIsVzsyQixXO29CLGtDOztHLDBCO0c7RyxzQjtHO0csc0I7RztHLHdCOzs7Ozs7O0k7Ryw0Qjt5QixTOztJO0ksTTtHOztJO0ksTTtHOzBCLFM7O0csc0I7OEIsOEI7Ozs7O0csOEI7O0k7SyxNOzs7O0c7O0cseUI7O0k7STtHOzs7Ozs7RywwQjs7SSxPO0c7MEIsbUQ7cUIsTyxpRDt1QixTO3VCLFM7MEIsUzswQixTOzZCLDRCO29CLGtDO3FCLGtEOzs7O0csd0I7O0ksTztHOztHLHlCO0c7MkI7RyxJO0cseUI7RztHLHNCO0c7RywwQjtHO0csd0I7O0ksZTtJLE87Rzs7SSxXOzs7Rzs7STs7OztHOztHLDhCOztJOzs7O0c7O0k7OztHOztJOzs7Rzt5Qiw2QjsyQiw2Qjt1QixPLHFDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksbUIsTTtJO0ksTztHOztJOzs7OztLO087Ozs7O0ssTTtLLFk7SyxNO0ssTTs7SyxZO0s7SyxNO0ssUztJO0ksTzs7O0k7STtJOztLLE07SyxNO0ksTztHOzs7STtLLFksa0I7Ozs7Z0I7Szs7OzsyQjs7Ozs7STtJLFU7STtLLFk7Ozs7Ozs7STtJO0k7Rzs7SSxHLG1DO0ksZTtJO0k7Rzs7STtLLFU7Szs7O2M7YyxPO2E7STs7O0s7O00sTSxXO0ssZTtLO00sTTtXOzs7Ozs7SztNLE07b0I7Ozs7SztNLDBCO007OztJLE87Ozs7NkIsTyx3QjtHOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7dUIsZ0M7a0MsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssWTtLO007TyxPOzs7Ozs7TSxJLEksTzs7Ozs7TztPOzs7Z0I7OztLO0s7Ozs7OztLO0s7O0c7O0ksK0M7SztJO0k7Rzs7O0k7SztNLE87TTtROzt3QixPLHFDOztNLFE7TSxPO007UTs7d0IsTyxtQzs7O0s7a0IsTTtNOzs7Ozs7O1UsVztVLHFCO1M7TyxVOzs7O0s7O007OztXOzs7OzRCOzs7STtLLFc7SyxXO0ssVztLO087OztVLE8scUI7Uzs7SztPOzs7VSxPLHFCO1M7O0k7Ozs7TTtPOzt1QjtLOzs7OztNLE87SyxXOzs7Ozs7Ozs7OztJOztZOzs7STtLO007OztXO3lDLHlCOzs7O0ksSztLLE87O0k7O0ssVTtNLEk7Ozs7VTs7STtLO087OztJOztNLE87SyxVO007TTtNLEk7Ozs7O00sMEI7TSxJOzs7OztHOztJOztLLGlCO0s7OztJOztLO0s7OztJOztLOzs7O007SztJOztLO0k7STtJO0k7O0k7SSxPO0c7O0ksTztHOzRCLFEsNEI7OztJOztJO0s7TSxhO007UTtVOzs0QixPLGtDOztXO1k7Yzs7WSxPO1k7Yzs7O2lCO2tCLFM7a0IsTztpQjtpQixVO2lCLE87Z0I7OztZLEk7VztVO0s7Ozs7Szs7TTtNOzs7SztNO1E7O1M7O1MsYTtTO1M7VTs7VztZLFk7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCO2lCLGM7O2lCOzs7Ozs7Ozs7OztjOzs7O2dCOztpQixPOzs7Ozs7Ozs7Ozs7Ozs7O1E7O3dEO0s7O0c7Ozs7Ozs7O0s7SztLOzs7UTs7UyxZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CLDRCOztPOztLLE87OztLO00sYTs7O1E7O2dDOzs7O00sTztLO2tCOztJO0ssVztLLG1COzs7aUI7MkI7OzhCO0k7SyxxQjs7SyxXO0k7TTs7O1MsTyxxQjtROzs7Ozs7Szs7TTs7O0k7O0s7Tzs7OEI7Ozs7OztLLFc7SztPOzs7O0ssVztLO087OztNLFc7TTtlOzs7Ozs7Ozs7STtLLGMsZSx3QixTO0ssVztLLE87STs7Ozs7O0k7O0c7O0k7OztJOztHOztJOztJOztLLE87SyxPO0ssTztLLE87STs7STtLOztRO1c7O0s7O2lELGU7Rzs7STs7SyxPO0ksRztLO0k7O0ssTztJLE87OztHOztJLE87OztjOzs7ZSxJO2MsRztlLFc7ZSxPOzs7Ozs2Qzs7O2MsVztjLE87YTs7Rzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztJOzs7STs7O0s7TTs7Ozs7Ozs7O0ssYztLLEc7TTtjO007O0ssUzs7TTtjO007Ozs7O1MsVztTLE87UTs2Qjs7O0s7TSxPO00sTzs7TTs7Ozs7Szs7Ozs7TTs7O1M7Ozs7TTs7O1M7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STs7SyxxQztJOztJO0s7Szs7Ozt3QixjO3dCLG1CO3dCLG1COzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDOzs7OzttQzs7Ozs7OztxQzs7Ozs7c0M7Ozs7O3VDOzs7Ozs7O3VCOzs7Ozs7Ozt3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEM7Ozs7OzRDLDZCOzs7Ozs2QyxrQzs7Ozs7aUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNO00sVTt3QixpQjtLOzs7O3NCOztLLGU7SztLOztNOztPLEk7TztPO1M7OztZOzs7OzthLFU7YTthO1k7WTtZO1c7O007OztTOzs7Ozs7VTtTO1M7OztZO2EsRztjO2EsVzthOztZLEc7YTtZLFc7WTtXOzs7O1UsVTtVLFE7Ozs7O1M7UTs7TTs7Ozs7OztPOzs7VTtXLFE7OztXOztVOzs7YSxVO2E7WTs7Ozs7O29CO29COztTOzs7O087YztPLFc7TztPOztvQyxzQzs7Tzs7VTs7O2E7YSxPO1k7O087OztVO1U7VTs7O2E7OztjO2EsTztZOztVO1UsTztTOztPOztNOzs7TSxVO007O0s7Szs7OzsrQztLO0s7O0c7O0k7SSxPO0c7O0k7SztLOztJOzs7ZTtLO0ssYztLLE87SztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7SyxTO0ssTTtJO0k7SyxNO0s7TztJLE87YTs7YyxPOzthO0c7O0k7SyxNO0ssTTtLO08sVztJLE87YTtHOztJLE87YTs7YztlLE0sVztlO2lCO21COztlOztlOzs7OztrQjttQixNO21CLE07a0IsTzsyQjs7OztpQjtjO2M7YztjO2M7YTtHOztJO0ssUztLLE07SyxLO0ksTztHOztJLFU7SSxPO2E7O2M7YyxHLDZCO2MsSTs7YTtHOztJO0ssYTtLLE07SztPLFc7SSxPO2E7Rzs7STtLLE07SztPO1MsVztLO08sVztJLE87YTs7Ozs7Z0I7Z0IsTztlOztHOztJLFU7SSxPO2E7OztlOzs7OztlLE87Ozt5QjswQixNOzBCLE07eUIsTzt3Qjs7YztjLE87Ozs7O3dCO3dCLEs7eUI7eUIsSzswQjs7d0I7d0IsTzt1QjthO0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0dtR3JvQk07Ozs7SUFBQTtJQThITTtJQU1abzZIO0lBRUFDO0lBcENPLGtCQWtDUEQsU0FFQUM7SUE0Qko7R0FFUTtHQUVlLFNBQW5CQyxXLFU7R0FQQTtJQUFBOztPQU9BQTs7OztJQVMwQjtJQW9DWDtJQWxCQTtJQWlDTjs7Ozs7RTs7Ozs7Ozs7Ozs7O0dFaE5EOzs7OztJQUFBO1lBbUNSQyxJQUFLQyxHQUFTQyxHQUFJLE9BQUpBLEtBQVRELElBQUFBLElBQVNDLEVBQTJCO1lBRXpDQyxJQUFLRixHQUFTQyxHQUFJLE9BQWJELEtBQVNDLElBQVRELElBQVNDLEVBQTJCO0dBbkJOO0lBQUEscUNBaUJuQ0YsS0FFQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUFiOztHQUF3QjtZQUM1RHlDO0lBQVUsT0FBQTtHQUEyQjtHQUp3QjtJQUFBLGFBRzdERCxTQUNBQzs7O09BalFGNUU7T0FLQUM7T0FNQUM7T0FDQUM7T0FFQUM7T0FFQUM7T0FRQVE7T0FRQUU7T0FLQUM7T0FXQU87T0FFQUM7T0FLQUc7T0FJQUU7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7O0c7OEIsTyx1Qzs7SSxPOztHOztJOzs7Ozs7O0s7O0k7RztHLFc7OEIsTyxtQzs7SSxXO0ksTywrQjtHO3lCLHVCLFcsUzs7SSxJLEk7O0ssVztLLHFCO0s7a0I7OztHOztJLEksSTs7SyxJLE8sdUIsTztLLHFCO0s7a0I7OztHOztJOzs7TSxXO2dCO08sTTs7bUIsYzs7Ozs7OzRCOzs7Rzs7STs7SyxROzs7OztRLGU7Tzs7Ozs7Szs7OztHOztJO0k7O087Tzs7Ozs7Ozs7Ozs7Ozs7TztNOztJO0c7Ozs7Ozs7Ozs0QixzQjs4QixpQzs7STtJOzs4QixpQixrQjs7O1E7OzRCOztROzs7USxPOztRLHNDO1EsUTs7OztROzs7O1E7OztnQjs7O0c7O0k7STs7Ozs7Ozs7Ozs7NEI7OztRLHFDOzs7UTs7O1Esa0IsTzs7UTs7USxzQztROzs7Ozs7Ozs7Ozs7Rzt5Qjs7STtJOzs7Ozs7UyxtQztTOztTLG1DO1M7O1Msa0IsTzs7Uzs7Ozs7Rzs2Qjs7STs7Ozs7Ozs7O0s7O007SyxPOztJLE07RztHO0ksSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNDO0k7Ozs7RztJLGtCOzs7O0k7SyxXO0s7SztLO0s7Szs7SztNOzs7USxZO1E7Ozs7Ozs7SyxJO0s7OztJOztLO0s7SztJOztLO0s7SztJOztLLEksVSx3Qzs7Ozs7aUI7O007O0k7O0sscUI7O2lCOztLO0k7O0s7OztTOztTO2lCOzs7OztROzs7O1Esa0IsUTt3Qjs7OztrRDt1QztRO1MsUTtTO1M7UztTOzs7Ozs7Ozs7dUI7Ozs7O1E7OztTO1M7UTsyQzs7O1E7dUI7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Uzs7Ozs7USxrQztRO1EsSSw2QjtROztRO1E7O1E7O1M7Uzt1QjtRO3VCO1E7O1E7O1E7O1M7UztRO3lCO1E7eUI7UTs7UTs7USxvQjtROztROzs7UTtRO1E7dUI7Ozs7UTt1Qjs7O0k7O0ssa0I7SztLO0k7STtJO0ksSSxtQjtJLEc7OztLLFE7SyxpQixPLHdCO2lDOztJLG1CO0k7OztPO087TTs7Ozs7O0k7WTs7Ozs7Ozs7SSxRO0k7O29COzs7c0I7Ozs7O0c7Rzs7SSxvQzs7SyxJO0s7TTs7O2dCO29CO087UTs7O1E7Ozs7O007O0k7O0ssSSxVO0s7OztPLGtDO1E7UyxNOzs7OztPLFU7Ozs7Ozs7OzthOzs7Yyx1QjtlO2dCOzs7Ozs7YztlOzs7Ozs7Ozs7Ozs7YTs7Ozs7YyxVOzs7Ozs7OztnQjs7Ozs7Ozs7aUI7aUI7a0I7OztpQjs7OzJCOzhCOzs7OzJCOzs7O2UsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7O1MsZTs7O1UsSSxtQjs7Ozs7VSxJLG1COzs7O2MsSSxtQjs7Ozs7Ozs7Uzs7O1E7Ozs7OztNO00sZTs7STs7SyxJO0s7cUI7Z0Isd0MscUI7TSxTO007OztnQjttQjtPLFM7Ozs7UyxPO1M7Ozs7O087Ozs7TTtNOzs7STtJLEk7OztjO0c7c0IsNEI7Z0MsNEI7O0k7O0ssTTtLO0s7Szs7OztNLEksSSx1Qjs7Ozs7O1M7Ozs7OztRO1E7Ozs7Tzs7O007Ozs7O0ksTztHOzZCLDBCO3VDLDBCO0c7O00sb0QsVzs7SSxVO0k7O0c7O0ksVTtJOztHOztJLFU7STs2QixNO0k7Rzs7SSxVO0k7NkIsTTtJO0c7O0k7SztPOzs7SztLLGUsTTtLOztJLE87Rzs7STtLO087OztLO007TTtLLGUsTTtLOztJLE87Rzs7STtLO087OztLO007TTtNO0ssYSxNO0ssTzs7SSxPO0c7bUMsMEI7NkIsb0I7Z0MsNkI7O0k7O087SSxPO0c7O0k7SztNOztnQjtNO00sTTtLOzs7OzJCOzs7Rzs7SSxJLDJDOzs7MkI7OztHOztJO0k7O1E7OztNOztPOztRO1EsWTs7UTs7OztZOzs7Ozs7Ozs7SyxVO0ssTzs7Rzs7STtpQztHOztJO2lDO0c7O0k7Z0I7Ozs7Ozs7O0c7O0k7Szs7OztJOzs7Ozs7TTs7Tzs7UTtRO1E7O1c7Ozs7Ozs7OztLLE87O0c7OEIsb0M7O0ksa0I7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs7STtHOztJO0k7Ozs7OztNOztPLG9COztRO1M7UztTOzs7O2lCOzs7Ozs7O087UTtRO1E7Ozs7Ozs7O0ssTzs7RzttQyx5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJQ3JFRWdEOzs7Ozs7OztZQVBGQyxNQUFPQyxJQUFRQyxJQUFLLE9BQWJELE9BQVFDLFdBQXFCOztJQUNwQ0M7SUFDQUM7SUFDQUM7SUFDQUM7WUFFQUMsWUFBd0JDO0lBRTFCLElBRldDLDJCQUVQQyxVQUZPRCxnQkFDUFYsU0FBQUE7SUFFSixPQUFBLHVCQURJVyxZQUZzQkY7O09BTXhCRztZQUNBQyxVQUFXSCxRQUFPRCxNQUFNSztJQUFpQixVQVB6Q04sT0FPV0UsUUFBT0Q7b0NBQU1LLFFBRHhCRjtHQUNnRjtZQUVoRkcsUUFBUUQ7SUFDVixJQUFJLGNBQUssV0FEQ0EsUUFDTjs7OzRCQUNhOzs7R0FBSTtZQUduQkUsTUFBTUMsR0FBR0MsS0FBS2IsS0FBS2M7SUFBTSxPQUFBLHVCQUFuQkYsR0FBR0MsS0FBS2IsS0FBS2M7R0FBZ0M7WUFDbkRDLGFBQWFILEdBQUdDLEtBQUtiLEtBQUtjO0lBQU0sT0FOaENKOzZCQU1tRCxPQUFuQix1QkFBbkJFLEdBQUdDLEtBQUtiLEtBQUtjLEtBQTBEO0dBQUM7WUFDckZFLGlCQUFpQkosR0FBR0MsS0FBS2IsS0FBS2M7SUFBTSxPQUFBLHVCQUFuQkYsR0FBR0MsS0FBS2IsS0FBS2M7R0FBdUM7WUFDckVH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O09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkVBUztPQTdFQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxRkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BRUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdEVBVDtPQXNFQVM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FHQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BU0FDO09Ba0JBRTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FvQ0FJO09BVUFDO09BOUNBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQXVEQU07T0FVQUM7T0FqRUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkVBUTtPQTNFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxRkFTO09BckZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FTQUM7T0FrQkFFO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQW9DQUk7T0FVQUM7T0E5Q0FMO09BQUFBO09BQUFBO09BQUFBO09BdURBTTtPQVVBQztPQWpFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyRUFRO09BM0VBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThGQVU7T0E5RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQVNBQztPQWtCQUU7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09Bb0NBSTtPQTBEQU07T0E5RkFWO09BQUFBO09BQUFBO09BQUFBO09BdURBTTtPQVVBQztPQWpFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyRUFRO09BM0VBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFGQVM7T0FyRkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0dBVztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkJBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQVVBQztPQXBCQUY7T0FVQUM7T0FvQkFFO09BOUJBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQVZBRDtPQXdDQUk7T0FXQUM7T0FuREFMO09BQUFBO09BQUFBO09BQUFBO09BNkRBTTtPQVdBQztPQXhFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FtRkFRO09BbkZBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTRGQVM7T0E1RkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUdBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkJBRztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyQkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkNBSztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXBDQUo7T0FvQ0FJO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BVUFDO09BVkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0JBRTtPQXBCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0JBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BMkJBRztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZDQUs7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BU0FDO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQTJCQUc7T0E3Q0FMO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BU0FDO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXJOQXhCO09BcU5Bd0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FsQkFGO09Ba0JBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZDQUs7T0E3Q0FMO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bc0RBTTtPQXREQU47T0FBQUE7T0ErREFPO09BL0RBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdFQVE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F4RUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BaUZBUztPQWpGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EwRkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcENBSjtPQW9DQUk7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXpNQXZCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb09BMEI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FwT0ExQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZPQTJCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BN09BM0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOE5BeUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E5TkF6QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThOQXlCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOU5BekI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4TkF5QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTlOQXpCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXZGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F1RkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdkZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXVGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F2RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BaUxBb0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FzREFNO09BU0FDO09BL0RBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXNEQU07T0F0REFOO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7SUE0Mk5BaUI7O09BcnlOQVQ7T0FFQUM7T0FFQUM7T0FHQUM7T0FBQUE7T0FBQUE7T0FPQUM7T0FPQUM7T0FPQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FFQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7SUFzeU5BRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQW55TkFGLGFBb3dOQUMsaUJBK0JBQzs7OztFOzs7Ozs7Ozs7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RW9CVSxPQUZWaEI7S0FDdkI7VUFDOENPO01BQy9DO09BQU07UUFEeUNDO1VBQ3pDOytCQXBYSkgsa0JBbVg2Q0UsaUJBRnZCUDtlQUV1QlE7T0ErSXhCLFdBakpDUixXQUFBQTtPQUV1Qk8sa0JBQUFDOzthQUFBQTs7UyxvQkFGakNGLEtBQVVOLFM7O1MscUJBQUFBO1MsY0FBQUE7UyxvQkFBVk0sS0FBVU47OztTLHVCQUFBQTtTLGNBQUFBO1Msb0JBQVZNLEtBQVVOOzs7U0FrQ3hCLFFBQUEsOEJBbEN3QkEsUUFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O1Msb0JBQVZNO1Msb0JBQUFBLEtBQVVOOzs7U0FnRHhCO1VBQUEsS0FBQSw4QkFoRHdCQSxRQUFBQTtVQXFEeEIsS0FBQSw4QkFyRHdCQSxRQUFBQTtVQTBEeEIsS0FBQSw4QkExRHdCQSxRQUFBQTs7Ozs7O1U7VyxRLDhCQUFBQTs7OztXO2E7Ozs7Ozs7O1U7O1MsVTtTLG9CQUFWTTtTLG9CQUFBQSxLQUFVTjs7O1NBa0Z4QjtVQUFBLE9BQUEsOEJBbEZ3QkEsUUFBQUE7VUF1RnhCLE9BQUEsOEJBdkZ3QkEsUUFBQUE7VTs7OztVOzs7OztVLE07UyxvQkFBVk07UyxvQkFBQUEsS0FBVU47OztTQXNHeEIsVUFBQSw4QkF0R3dCQSxRQUFBQTtTLG9CQUFWTTtTLG9CQUFBQTtTLG9CQUFBQSxLQUFVTjs7O1MsY0FBQUE7UyxvQkFBVk07UyxvQkFBQUEsS0FBVU47OzttQkFBQUEsbUJBQUFBO1Msb0JBQVZNLEtBQVVOO1Msb0JBQVZNLEtBQVVOOzs7Uzs7WTtxQ0FFVWdCLFVBQUFBLFdBQUFBO1MsTzs7O0lBRGM7O0s7O007a0I7OztrQjtLLHFCO0k7STs7Ozs7OzttQyxTO3lCLFM7NkIsYzs7SSxXO0c7a0QsTztHOzZDLE87Rzs7Ozs7Ozs7SSxVO0ksVztHOztJLHFCO0c7OEIsTyx3Qzs7SSxPO0c7O0ksVTtJLE87Rzs7STs7RzsrQixzQjs7STs7O0ssbUI7SSxlOzs7O0ksZTs7Z0QseUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7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QUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7NkI7NkI7Ozt3Qjs7NkI7NkI7NkI7NkI7NkI7NkI7O3dCOzs7Ozs2Qjs2Qjs2Qjs7NkI7NkI7NkI7U0F4SU52Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQU1BRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQVlBRTtJQzlMSTBGO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFB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OzhCOzhCOzs7d0I7d0I7Ozs7Ozs4Qjs4Qjs4Qjs7OEI7OEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCOzs7Ozs7Ozs7OytCOytCOzs7eUI7OytCOytCOytCOytCOytCOytCOzt5Qjs7Ozs7K0I7K0I7K0I7OytCOytCOytCO1NBREFkO1NBQ0FjO0lBR0pYO0lBQ0FZO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0lDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBREFEO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0lDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBREFEO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lDcGFJQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7O0lBV05DO0lBVUFDO0lBQ0FDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lEOFlNQztJQUNBQzs7OztTQzFhQTdFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOzs7Ozs7O1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOztTQUFBQztTQUFBQztTQXdCTjBDO1NBeEJNekM7U0FBQUM7Ozs7U0FXTnFDOzs7U0FlQUs7U0FEQUQ7O1NBekJNeEM7U0EyQk4wQzs7OztTQU5BTDs7O1NBckJNcEM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FzQk5pQztTQXRCTWhDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NEeWFBUTtTQUNBQztJQUdKQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUtFO1FBRUFFO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQUtFO1FBR0FFO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQUtFO1FBR0dFO1FBQVJDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFyRTtRQUFBZDtRQUFBVTtRQUFBVDtRQUFRdUY7OztTQTdCSHZJO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBQ0FFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQUtLRTtVQUFSQztVQUFBQztVQUFBRztVQUFBRDtVQUFBRDtVQUFBRztVQUFBQztVQUFBQztVQXVCRk87VUFBQUM7VUFBQVM7VUFyQk01RDs7U0FVRGtFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBR0xDO1NBQUFDO1NBQUFFO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUtFO1NBRUFFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBR0FFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTRCVnArRDtJQUNBbXFLO0lBQ0FsckQ7SUFDQWhzQztHQU9LO0dBR2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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R0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBSDtnQkFBQUc7Z0JBQUFBO2dCQUFBQTs7SUFEQWlxQzs7dUJBQUEsU0FBcUI7O1dBQXJCcEM7T0FBQUQ7Z0JBQUE1bkMsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFIO2dCQUFBRztnQkFBQUE7Z0JBQUFBO2dCQUFBQTs7SUFEQWtxQzs7dUJBQUEsU0FBaUI7O1dBQWpCbkM7T0FBQUQ7Z0JBQUE5bkMsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUg7Z0JBQUFHO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTs7SUFEQW1xQzs7dUJBQUEsU0FBaUI7O1dBQWpCbEM7T0FBQUQ7Z0JBQUFob0MsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBSDtnQkFB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O1NBT2dCLE9BQUEsV0FBaEJzQyxLQUFXRDs7Ozs7bUJBUFR0QyxtQ0FBQUE7WUFLUzRDLE1BTFQ1QyxRQUtGNkMsTUFMQTVDO1FBS2dCLE9BQUEsV0FBaEI0QyxLQUFXRDs7O0tBOEJkOztHQUFLO1lBRVozQixhQUFjL0QsS0FBSU8sS0FBSTFFLEdBQUksT0E3SDFCdUcsR0E2SGNwQyxLQUFJTyxLQUFJMUUsR0FBd0I7WUFDOUNtSSxpQkFBa0JoRSxLQUFJbkUsR0FBSSxPQTNIMUJ3RyxZQTJIa0JyQyxLQUFJbkUsR0FBMkI7WUFDakRvSSxrQkFBbUJqRSxLQUFJSyxJQUFHeEU7SUF4SGxCLElBQU4wRyxNQUFNLCtCQXdIZWxDO0lBdkh6QixPQUFBOzthQURJa0M7O2tDLE9BUEZILEdBK0htQnBDO2FBQU9uRTtHQUErQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxNO0c7O0k7O0s7O0ssTztLOzttQzs7O0k7OztVO1U7SyxNO0ksTztHOztJLFc7STthO0c7O0k7SyxPO0s7SyxNO0k7SSxpQjtJO2E7OztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STs7SztLO0s7Szs7Ozt3QixNO00sUTs7TTs7Ozs7O0ksTTtHOztJOztLO0s7SztLOzs7O3dCLE07TSxROztNOzs7OztpQixNOztHOztJOzs7Rzs7STtJLE87Rzs7STs7SztNOztTOztNOzs7OztROztROztROztROztROztROztRO1E7O1E7UztTOzs7OztVLHVCOzs7O1E7UztTOzs7OztVLHVCOzs7O1E7O2dCLHFCOztRO1E7UztTO1M7UztTO1M7Ozs7VTtVO1U7VTtVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1M7Uzs7OztVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1M7Uzs7OztVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1E7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STs7SztNOztTOztNOzs7Ozs7O1E7O1E7Z0I7OztHOztJOztLO007O1M7O007Ozs7O1EsYyxPO1EsTyxjOztROztRO2dCOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O08sUTtPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPO1EsSTtRLEk7USxNO1EsSTtRO1E7UTs7OztRO1M7O1k7O1M7Ozs7O1c7WSxNO1ksTTtZLE07WSxNO1k7WTtZOzs7WSxPO1c7O1c7O1c7OztPLE87O087ZTs7Rzs7STtJO0s7O1E7Ozs7Uzs7VSxJO1M7UztTLE87O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxvQzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxJLHlDOzs7O1c7Ozs7UyxJLHlDOzs7O1c7Ozs7UztTO1MsSSxXLHVCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7VSxXLG1CO1U7O3FCOztTO1M7UyxJLFcsdUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztVLFcscUI7VTs7cUI7O1M7UztTLEksVyx5Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTLE8scUI7O1M7UztTLEksVyx5Qjs7Ozs7Ozs7Ozs7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1Msb0M7O1MsUTtTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7O1MsTzs7a0I7Ozs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPO087UTtRO2lCOztTO1M7UztrQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROztLOzs7OztPO087UTtROztxQjs7UztTO1M7O3NCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O08sSSxjO087UTtRO2lCOzs7UztTO1M7a0I7Ozs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7aUI7UyxNOztpQixNO1M7aUI7O0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztpQjtTLE07O2lCLE07Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPO087UTtRO1EsaUI7UTtRO1E7aUI7O1M7UztTO1MsbUI7UztTO1M7a0I7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztROztROztROztROztROztROztROztRO1M7UztTO1M7UztTO1M7UztVO1U7VTtVO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7UztTO1M7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTO1M7UztVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtRO1E7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1M7UztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1U7O1U7Vzs7Yzs7Vzs7Ozs7YTs7YTthLE07O2E7cUI7O1U7VTs7Ozs7dUM7Ozs7O1E7UTtRO1E7O1E7Uzs7WTs7Uzs7Ozs7VztXO1c7O1c7WTs7ZTs7OztnQixPOztnQjs7Z0I7O1k7Ozs7O1csTzs7Vzs7Vzs7OztROztRO1E7OztRLHlDOztROztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7UztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USwwQjs7UTtROzs7USx5Qzs7UTtnQjs7O0c7O0k7STtLOztROzs7O1MsTzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USxPOztROztRLHlDO2dCOzs7Rzs7STsyQixPO0k7Rzs7STtJLE87Rzs7STtZO0k7OztLLE07SyxJO0s7Szs7OztNLFc7TTthO007Ozs7O0k7Rzs7STtLO0c7Ozs7STtJO0ssTTtJOztLOztNOztJOzs7STtLO00sUztNLEk7TTtLOzs7OztNLE87OztHOztJO0s7TSxTO00sSTtNO0s7Ozs7O00sTzs7O0c7O0ksUztJO0s7SztLOzs7O0s7SyxNOztHO0c7OzZDLE87O0ssSSxtRDs7O2lDLG9CO00sSTs7O08sTTs7TSxNOztJO0k7OztJLFE7SSw2QjtHOztJO0ssUztLLEk7STtHOztJLFM7SSxvQixPLDJCO0k7SztLLFM7SyxJO0k7Rzs7STs0QyxPOztLLG1COztLO007TztRLE87UTtROzs7O087Ozs7O2tCOztPO0k7STs7O0ksUztJLG9CLE8sMkI7STtJO0c7cUJBRHZDbUU7SSxJQUFJbkU7SUFBSSxPQTNIMUJ3RyxZQTJIa0JyQyxLQUFJbkU7Rzs7SSxPQXRXdEJvRTtHO0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzRCO0c7Rzs7STs7SyxJLFcsd0M7Ozs2Qjs7OztJLFc7SSxjOzs7STtJO2U7Ozs7TSxJLFk7Ozs4Qjs7Ozs7OztLOztHOztJO0s7O00sTTtNOztNLE87SztNLE87TSxPO0ssTTs0Qjs7STtLLE87SyxPO0ksYzs7O0k7O0ssc0I7O0k7OztJLG1FO0k7Rzs7SSw2QztJLFc7OztJLGlFO0k7Rzs7STswQjs7Z0Q7STtHOztJOzt5QzsyQzs7STtHOztJOzBCOzs7O3lDOzJDOztJO0c7O0ksaUU7STtHOztJOzBCOztnRDtJO0c7O0ksK0Q7STtHOztJOzBCOzs4QztJO0c7O0ksaUU7STtHOztJLGtFO0k7Rzs7STswQjs7aUQ7STtHOztJOztLLE87O0k7OztJO0k7YSxPO0sseUIsUTs7TSxrQjs7Ozs7OztHOztJO0k7YSxPOzs7TSxlLFE7Ozs7Ozs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2Msd0U7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7c0Q7MEQ7O2M7YTs7Rzs7STs7YywyRTtjO2E7O0c7O0k7SSxPO2E7OytCLG9CLFc7O0c7O0k7SSxPO2E7OytCLHNCLGE7O0c7O0k7Ozs7OztLLHNCOztJLE07O0c7Ozs7T0FtUElxQztPQTBFSk07T0FHSUM7T0F4b0JB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STtJO0k7STs7SztLO0s7Szs7STtJO0k7STtJO0ssSTtLO0s7SztLO0s7SztLO0s7SztLOztLOzs7Ozs7Tzs7USxNO2M7YztjO087Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7OztROztTOztTOztTO1E7OztPO1E7Ozs7Ozs7O087Ozs7Ozs7OztNOzs7OztJLFE7O0s7SztLO0s7SztJO0k7STtJO0k7STtJLE87OztJO0ssTSxtQjtLLE07SyxJO2tDOytCO0ksTztHO3NCLCtCO3NCLGlDOztJO0ssSTtlO2dCO0k7STtJLE87Rzs7SSx1QixPLG9DO0c7Ryx3Qjs7STtLLEs7SyxLO0ssSztLLEs7SyxLO0ssSTs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7SSx1QixvQztHOztJLDhCOzs7Szs7O0k7RzswQixhLG9DOzs7O3dCLFM7O0ksNEIsTTs2QjtnQztJLFc7OztJO0ssUTtLLHFCO0s7SztJO0ksUTtJO0k7STtJO0ksTztHO3FDLHNCOztJO2dCOztJO0c7K0IsUzsrQixTOztJLDRCLE07STs7O2M7O2U7O2dCO21CO0s7TTtPLEk7TztPO087O1UsVyxNO3NCO3FCLE07c0I7cUIsTTtzQixNO1U7UztPOztVLGU7c0I7Uzs7O087Tzs7Ozs7OztPO087Ozs7Ozs7TztPOzs7Ozs7O087Tzs7Ozs7OztRLGM7UTs7TztPOzs7Ozs7OzRCOzs7STs7O0ksOEI7SSx1Qiw0QztJO0ssSTtLO0s7O0s7OztJOzs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7OztvQixPO0ssVTtLOzs7Ozs7STtJLE87Rzs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDQ3JHQXFDO1lBR0FDLE9BQVVDO0lBQW1CLElBQzNCQyxxQ0FEUUQsSUFFWUUsV0FBWUM7SUFDbEM7UUFGRUYsU0FDb0JDLFFBQVlDLG1CQURoQ0YsT0FDZ0NFO1NBSTVCQyxtQ0FOSUosR0FFWUUsUUFBWUM7S0FLaEMsVUFESUM7Z0JBQUFBO2lCQUFBQTtRQU9HLElBWHlCQyxVQUFBRixl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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQ2xWVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQSt1RnVCSztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7O0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOzs7SUFBQUM7OztJQUFBQzs7Ozs7OztJQXZWWEM7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUFuNUVwQkM7Ozs7Ozs7Ozs7Ozs7O0lBTFE7O1FBR1IxTDtJQURvQyxXQUNwQ0EsT0FFQTBMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7Ozs7O0dDdElJO0dBQUE7OztFIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vIHN0cmZ0aW1lXG4vLyBnaXRodWIuY29tL3NhbXNvbmpzL3N0cmZ0aW1lXG4vLyBAX3Nqc1xuLy9cbi8vIENvcHlyaWdodCAyMDEwIC0gMjAxNSBTYW1pIFNhbWh1cmkgPHNhbWlAc2FtaHVyaS5uZXQ+XG4vL1xuLy8gTUlUIExpY2Vuc2Vcbi8vIGh0dHA6Ly9zanMubWl0LWxpY2Vuc2Uub3JnXG4vL1xuXG47KGZ1bmN0aW9uKCkge1xuXG4gICAgdmFyIERlZmF1bHRMb2NhbGUgPSB7XG4gICAgICAgICAgICBkYXlzOiBbJ1N1bmRheScsICdNb25kYXknLCAnVHVlc2RheScsICdXZWRuZXNkYXknLCAnVGh1cnNkYXknLCAnRnJpZGF5JywgJ1NhdHVyZGF5J10sXG4gICAgICAgICAgICBzaG9ydERheXM6IFsnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0J10sXG4gICAgICAgICAgICBtb250aHM6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddLFxuICAgICAgICAgICAgc2hvcnRNb250aHM6IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXSxcbiAgICAgICAgICAgIEFNOiAnQU0nLFxuICAgICAgICAgICAgUE06ICdQTScsXG4gICAgICAgICAgICBhbTogJ2FtJyxcbiAgICAgICAgICAgIHBtOiAncG0nLFxuICAgICAgICAgICAgZm9ybWF0czoge1xuICAgICAgICAgICAgICAgIEQ6ICclbS8lZC8leScsXG4gICAgICAgICAgICAgICAgRjogJyVZLSVtLSVkJyxcbiAgICAgICAgICAgICAgICBSOiAnJUg6JU0nLFxuICAgICAgICAgICAgICAgIFQ6ICclSDolTTolUycsXG4gICAgICAgICAgICAgICAgWDogJyVUJyxcbiAgICAgICAgICAgICAgICBjOiAnJWEgJWIgJWQgJVggJVknLFxuICAgICAgICAgICAgICAgIHI6ICclSTolTTolUyAlcCcsXG4gICAgICAgICAgICAgICAgdjogJyVlLSViLSVZJyxcbiAgICAgICAgICAgICAgICB4OiAnJUQnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRTdHJmdGltZSA9IG5ldyBTdHJmdGltZShEZWZhdWx0TG9jYWxlLCAwLCBmYWxzZSksXG4gICAgICAgIGlzQ29tbW9uSlMgPSB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyxcbiAgICAgICAgbmFtZXNwYWNlO1xuXG4gICAgLy8gQ29tbW9uSlMgLyBOb2RlIG1vZHVsZVxuICAgIGlmIChpc0NvbW1vbkpTKSB7XG4gICAgICAgIG5hbWVzcGFjZSA9IG1vZHVsZS5leHBvcnRzID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgICAgICBuYW1lc3BhY2Uuc3RyZnRpbWUgPSBkZXByZWNhdGVkU3RyZnRpbWU7XG4gICAgICAgIGlmKGpvb19nbG9iYWxfb2JqZWN0KSBqb29fZ2xvYmFsX29iamVjdC5zdHJmdGltZSA9IGFkYXB0ZWRTdHJmdGltZTtcbiAgICB9XG4gICAgLy8gQnJvd3NlcnMgYW5kIG90aGVyIGVudmlyb25tZW50c1xuICAgIGVsc2Uge1xuICAgICAgICAvLyBHZXQgdGhlIGdsb2JhbCBvYmplY3QuIFdvcmtzIGluIEVTMywgRVM1LCBhbmQgRVM1IHN0cmljdCBtb2RlLlxuICAgICAgICBuYW1lc3BhY2UgPSBqb29fZ2xvYmFsX29iamVjdCB8fCAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzIHx8ICgxLGV2YWwpKCd0aGlzJyk7IH0oKSk7XG4gICAgICAgIG5hbWVzcGFjZS5zdHJmdGltZSA9IGFkYXB0ZWRTdHJmdGltZTtcbiAgICB9XG5cbiAgICAvLyBEZXByZWNhdGVkIEFQSSwgdG8gYmUgcmVtb3ZlZCBpbiB2MS4wXG4gICAgdmFyIF9yZXF1aXJlID0gaXNDb21tb25KUyA/IFwicmVxdWlyZSgnc3RyZnRpbWUnKVwiIDogXCJzdHJmdGltZVwiO1xuICAgIHZhciBfZGVwcmVjYXRpb25XYXJuaW5ncyA9IHt9O1xuICAgIGZ1bmN0aW9uIGRlcHJlY2F0aW9uV2FybmluZyhuYW1lLCBpbnN0ZWFkKSB7XG4gICAgICAgIGlmICghX2RlcHJlY2F0aW9uV2FybmluZ3NbbmFtZV0pIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUud2FybiA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiW1dBUk5JTkddIFwiICsgbmFtZSArIFwiIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDEuMC4gSW5zdGVhZCwgdXNlIGBcIiArIGluc3RlYWQgKyBcImAuXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX2RlcHJlY2F0aW9uV2FybmluZ3NbbmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmFtZXNwYWNlLnN0cmZ0aW1lVFogPSBkZXByZWNhdGVkU3RyZnRpbWVUWjtcbiAgICBuYW1lc3BhY2Uuc3RyZnRpbWVVVEMgPSBkZXByZWNhdGVkU3RyZnRpbWVVVEM7XG4gICAgbmFtZXNwYWNlLmxvY2FsaXplZFN0cmZ0aW1lID0gZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkO1xuXG4gICAgLy8gQWRhcHQgdGhlIG9sZCBBUEkgd2hpbGUgcHJlc2VydmluZyB0aGUgbmV3IEFQSS5cbiAgICBmdW5jdGlvbiBhZGFwdEZvcndhcmRzKGZuKSB7XG4gICAgICAgIGZuLmxvY2FsaXplID0gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplLmJpbmQoZGVmYXVsdFN0cmZ0aW1lKTtcbiAgICAgICAgZm4udGltZXpvbmUgPSBkZWZhdWx0U3RyZnRpbWUudGltZXpvbmUuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgICAgICBmbi51dGMgPSBkZWZhdWx0U3RyZnRpbWUudXRjLmJpbmQoZGVmYXVsdFN0cmZ0aW1lKTtcbiAgICB9XG5cbiAgICBhZGFwdEZvcndhcmRzKGFkYXB0ZWRTdHJmdGltZSk7XG4gICAgZnVuY3Rpb24gYWRhcHRlZFN0cmZ0aW1lKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIC8vIGQgYW5kIGxvY2FsZSBhcmUgb3B0aW9uYWwsIGNoZWNrIGlmIHRoaXMgaXMgKGZvcm1hdCwgbG9jYWxlKVxuICAgICAgICBpZiAoZCAmJiBkLmRheXMpIHtcbiAgICAgICAgICAgIGxvY2FsZSA9IGQ7XG4gICAgICAgICAgICBkID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIoZm9ybWF0LCBbZGF0ZV0sIFtsb2NhbGVdKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgYWRhcHRGb3J3YXJkcyhkZXByZWNhdGVkU3RyZnRpbWUpO1xuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZShmbXQsIGQsIGxvY2FsZSkge1xuICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lKGZvcm1hdCwgW2RhdGVdLCBbbG9jYWxlXSlgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKTsgcyhmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lKGZvcm1hdCwgW2RhdGVdKWBcIiwgX3JlcXVpcmUgKyBcIihmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gbG9jYWxlID8gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiBkZWZhdWx0U3RyZnRpbWU7XG4gICAgICAgIHJldHVybiBzdHJmdGltZShmbXQsIGQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZVRaKGZtdCwgZCwgbG9jYWxlLCB0aW1lem9uZSkge1xuICAgICAgICAvLyBsb2NhbGUgaXMgb3B0aW9uYWwsIGNoZWNrIGlmIHRoaXMgaXMgKGZvcm1hdCwgZGF0ZSwgdGltZXpvbmUpXG4gICAgICAgIGlmICgodHlwZW9mIGxvY2FsZSA9PSAnbnVtYmVyJyB8fCB0eXBlb2YgbG9jYWxlID09ICdzdHJpbmcnKSAmJiB0aW1lem9uZSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aW1lem9uZSA9IGxvY2FsZTtcbiAgICAgICAgICAgIGxvY2FsZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVUWihmb3JtYXQsIGRhdGUsIGxvY2FsZSwgdHopYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSkudGltZXpvbmUodHopOyBzKGZvcm1hdCwgW2RhdGVdKWAgb3IgYHZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSk7IHMudGltZXpvbmUodHopKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVUWihmb3JtYXQsIGRhdGUsIHR6KWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi50aW1lem9uZSh0eik7IHMoZm9ybWF0LCBbZGF0ZV0pYCBvciBgXCIgKyBfcmVxdWlyZSArIFwiLnRpbWV6b25lKHR6KShmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3RyZnRpbWUgPSAobG9jYWxlID8gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiBkZWZhdWx0U3RyZnRpbWUpLnRpbWV6b25lKHRpbWV6b25lKTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgdmFyIHV0Y1N0cmZ0aW1lID0gZGVmYXVsdFN0cmZ0aW1lLnV0YygpO1xuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZVVUQyhmbXQsIGQsIGxvY2FsZSkge1xuICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lVVRDKGZvcm1hdCwgZGF0ZSwgbG9jYWxlKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpLnV0YygpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVVVEMoZm9ybWF0LCBbZGF0ZV0pYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLnV0YygpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBsb2NhbGUgPyB1dGNTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpIDogdXRjU3RyZnRpbWU7XG4gICAgICAgIHJldHVybiBzdHJmdGltZShmbXQsIGQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZWRTdHJmdGltZUxvY2FsaXplZChsb2NhbGUpIHtcbiAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZWRTdHJmdGltZShsb2NhbGUpYFwiLCBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSlcIik7XG4gICAgICAgIHJldHVybiBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKTtcbiAgICB9XG4gICAgLy8gRW5kIG9mIGRlcHJlY2F0ZWQgQVBJXG5cbiAgICAvLyBQb2x5ZmlsbCBEYXRlLm5vdyBmb3Igb2xkIGJyb3dzZXJzLlxuICAgIGlmICh0eXBlb2YgRGF0ZS5ub3cgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgRGF0ZS5ub3cgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gK25ldyBEYXRlKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gU3RyZnRpbWUobG9jYWxlLCBjdXN0b21UaW1lem9uZU9mZnNldCwgdXNlVXRjVGltZXpvbmUpIHtcbiAgICAgICAgdmFyIF9sb2NhbGUgPSBsb2NhbGUgfHwgRGVmYXVsdExvY2FsZSxcbiAgICAgICAgICAgIF9jdXN0b21UaW1lem9uZU9mZnNldCA9IGN1c3RvbVRpbWV6b25lT2Zmc2V0IHx8IDAsXG4gICAgICAgICAgICBfdXNlVXRjQmFzZWREYXRlID0gdXNlVXRjVGltZXpvbmUgfHwgZmFsc2UsXG5cbiAgICAgICAgICAgIC8vIHdlIHN0b3JlIHVuaXggdGltZXN0YW1wIHZhbHVlIGhlcmUgdG8gbm90IGNyZWF0ZSBuZXcgRGF0ZSgpIGVhY2ggaXRlcmF0aW9uIChlYWNoIG1pbGxpc2Vjb25kKVxuICAgICAgICAgICAgLy8gRGF0ZS5ub3coKSBpcyAyIHRpbWVzIGZhc3RlciB0aGFuIG5ldyBEYXRlKClcbiAgICAgICAgICAgIC8vIHdoaWxlIG1pbGxpc2Vjb25kIHByZWNpc2UgaXMgZW5vdWdoIGhlcmVcbiAgICAgICAgICAgIC8vIHRoaXMgY291bGQgYmUgdmVyeSBoZWxwZnVsIHdoZW4gc3RyZnRpbWUgdHJpZ2dlcmVkIGEgbG90IG9mIHRpbWVzIG9uZSBieSBvbmVcbiAgICAgICAgICAgIF9jYWNoZWREYXRlVGltZXN0YW1wID0gMCxcbiAgICAgICAgICAgIF9jYWNoZWREYXRlO1xuXG4gICAgICAgIGZ1bmN0aW9uIF9zdHJmdGltZShmb3JtYXQsIGRhdGUpIHtcbiAgICAgICAgICAgIHZhciB0aW1lc3RhbXA7XG5cbiAgICAgICAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50VGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFRpbWVzdGFtcCA+IF9jYWNoZWREYXRlVGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICAgIF9jYWNoZWREYXRlVGltZXN0YW1wID0gY3VycmVudFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgICAgICAgX2NhY2hlZERhdGUgPSBuZXcgRGF0ZShfY2FjaGVkRGF0ZVRpbWVzdGFtcCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wID0gX2NhY2hlZERhdGVUaW1lc3RhbXA7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvdyB0byBhdm9pZCBkdXBsaWNhdGlvbiBvZiBkYXRlIGluc3RhbnRpYXRpb24gZm9yIHV0YyBoZXJlP1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgdGllZCB0byBnZXRUaW1lem9uZU9mZnNldCBvZiB0aGUgY3VycmVudCBkYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBfY2FjaGVkRGF0ZSA9IG5ldyBEYXRlKF9jYWNoZWREYXRlVGltZXN0YW1wICsgZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IoX2NhY2hlZERhdGUpICsgX2N1c3RvbVRpbWV6b25lT2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkYXRlID0gX2NhY2hlZERhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBkYXRlLmdldFRpbWUoKTtcblxuICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSArIGdldFRpbWVzdGFtcFRvVXRjT2Zmc2V0Rm9yKGRhdGUpICsgX2N1c3RvbVRpbWV6b25lT2Zmc2V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBfcHJvY2Vzc0Zvcm1hdChmb3JtYXQsIGRhdGUsIF9sb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBfcHJvY2Vzc0Zvcm1hdChmb3JtYXQsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0U3RyaW5nID0gJycsXG4gICAgICAgICAgICAgICAgcGFkZGluZyA9IG51bGwsXG4gICAgICAgICAgICAgICAgaXNJblNjb3BlID0gZmFsc2UsXG4gICAgICAgICAgICAgICAgbGVuZ3RoID0gZm9ybWF0Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICBleHRlbmRlZFRaID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50Q2hhckNvZGUgPSBmb3JtYXQuY2hhckNvZGVBdChpKTtcblxuICAgICAgICAgICAgICAgIGlmIChpc0luU2NvcGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gJy0nXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDQ1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyAnXydcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJDb2RlID09PSA5NSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vICcwJ1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDQ4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gJzAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gJzonXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNTgpIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZXh0ZW5kZWRUWikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS53YXJuID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiW1dBUk5JTkddIGRldGVjdGVkIHVzZSBvZiB1bnN1cHBvcnRlZCAlOjogb3IgJTo6OiBtb2RpZmllcnMgdG8gc3RyZnRpbWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkVFogPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjdXJyZW50Q2hhckNvZGUpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhhbXBsZXMgZm9yIG5ldyBEYXRlKDApIGluIEdNVFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnVGh1cnNkYXknXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5kYXlzW2RhdGUuZ2V0RGF5KCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnSmFudWFyeSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLm1vbnRoc1tkYXRlLmdldE1vbnRoKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTknXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKE1hdGguZmxvb3IoZGF0ZS5nZXRGdWxsWWVhcigpIC8gMTAwKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMS8wMS83MCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2ODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuRCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTk3MC0wMS0wMSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0YnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3MDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuRiwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdIJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNzI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0SG91cnMoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxMidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0knOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3MzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoaG91cnMxMihkYXRlLmdldEhvdXJzKCkpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3NjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDMoTWF0aC5mbG9vcih0aW1lc3RhbXAgJSAxMDAwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRNaW51dGVzKCksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnYW0nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdQJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGRhdGUuZ2V0SG91cnMoKSA8IDEyID8gbG9jYWxlLmFtIDogbG9jYWxlLnBtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDA6MDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdSJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLlIsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnUyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDgzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldFNlY29uZHMoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMDowMDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4NDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuVCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdVJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKHdlZWtOdW1iZXIoZGF0ZSwgJ3N1bmRheScpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMih3ZWVrTnVtYmVyKGRhdGUsICdtb25kYXknKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxNjowMDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4ODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuWCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTk3MCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1knOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4OTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnR01UJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDkwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlICYmIF9jdXN0b21UaW1lem9uZU9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gXCJHTVRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpeG1lIG9wdGltaXplXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0elN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5tYXRjaCgvXFwoKFtcXHdcXHNdKylcXCkvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHR6U3RyaW5nICYmIHR6U3RyaW5nWzFdIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ1RodSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2EnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLnNob3J0RGF5c1tkYXRlLmdldERheSgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0phbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5ODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLnNob3J0TW9udGhzW2RhdGUuZ2V0TW9udGgoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdjJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLmMsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXREYXRlKCksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldERhdGUoKSwgcGFkZGluZyA9PSBudWxsID8gJyAnIDogcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdKYW4nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnRNb250aHNbZGF0ZS5nZXRNb250aCgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2onOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXkgPSBNYXRoLmNlaWwoKGRhdGUuZ2V0VGltZSgpIC0geS5nZXRUaW1lKCkpIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDMoZGF5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJyAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnayc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwNzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRIb3VycygpLCBwYWRkaW5nID09IG51bGwgPyAnICcgOiBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoaG91cnMxMihkYXRlLmdldEhvdXJzKCkpLCBwYWRkaW5nID09IG51bGwgPyAnICcgOiBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRNb250aCgpICsgMSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdcXG4nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICduJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTEwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAnXFxuJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzFzdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ28nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IFN0cmluZyhkYXRlLmdldERhdGUoKSkgKyBvcmRpbmFsKGRhdGUuZ2V0RGF0ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0FNJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAncCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXRIb3VycygpIDwgMTIgPyBsb2NhbGUuQU0gOiBsb2NhbGUuUE07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxMjowMDowMCBBTSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLnIsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE1OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBNYXRoLmZsb29yKHRpbWVzdGFtcCAvIDEwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnXFx0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gJ1xcdCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICc0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF5ID09PSAwID8gNyA6IGRheTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gMSAtIDcsIE1vbmRheSBpcyBmaXJzdCBkYXkgb2YgdGhlIHdlZWtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJyAxLUphbi0xOTcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMudiwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnNCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGRhdGUuZ2V0RGF5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIDAgLSA2LCBTdW5kYXkgaXMgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxMi8zMS82OSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLngsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gKCcnICsgZGF0ZS5nZXRGdWxsWWVhcigpKS5zbGljZSgyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJyswMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAneic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3VzZVV0Y0Jhc2VkRGF0ZSAmJiBfY3VzdG9tVGltZXpvbmVPZmZzZXQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGV4dGVuZGVkVFogPyBcIiswMDowMFwiIDogXCIrMDAwMFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9mZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9jdXN0b21UaW1lem9uZU9mZnNldCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gX2N1c3RvbVRpbWV6b25lT2Zmc2V0IC8gKDYwICogMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSAtZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaWduID0gb2ZmIDwgMCA/ICctJyA6ICcrJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlcCA9IGV4dGVuZGVkVFogPyAnOicgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhvdXJzID0gTWF0aC5mbG9vcihNYXRoLmFicyhvZmYgLyA2MCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWlucyA9IE1hdGguYWJzKG9mZiAlIDYwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHNpZ24gKyBwYWRUaWxsMihob3VycykgKyBzZXAgKyBwYWRUaWxsMihtaW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGZvcm1hdFtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gJyUnXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gMzcpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNJblNjb3BlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGZvcm1hdFtpXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFN0cmluZztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdHJmdGltZSA9IF9zdHJmdGltZTtcblxuICAgICAgICBzdHJmdGltZS5sb2NhbGl6ZSA9IGZ1bmN0aW9uKGxvY2FsZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJmdGltZShsb2NhbGUgfHwgX2xvY2FsZSwgX2N1c3RvbVRpbWV6b25lT2Zmc2V0LCBfdXNlVXRjQmFzZWREYXRlKTtcbiAgICAgICAgfTtcblxuICAgICAgICBzdHJmdGltZS50aW1lem9uZSA9IGZ1bmN0aW9uKHRpbWV6b25lKSB7XG4gICAgICAgICAgICB2YXIgY3VzdG9tVGltZXpvbmVPZmZzZXQgPSBfY3VzdG9tVGltZXpvbmVPZmZzZXQ7XG4gICAgICAgICAgICB2YXIgdXNlVXRjQmFzZWREYXRlID0gX3VzZVV0Y0Jhc2VkRGF0ZTtcblxuICAgICAgICAgICAgdmFyIHRpbWV6b25lVHlwZSA9IHR5cGVvZiB0aW1lem9uZTtcbiAgICAgICAgICAgIGlmICh0aW1lem9uZVR5cGUgPT09ICdudW1iZXInIHx8IHRpbWV6b25lVHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICB1c2VVdGNCYXNlZERhdGUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgLy8gSVNPIDg2MDEgZm9ybWF0IHRpbWV6b25lIHN0cmluZywgWy0rXUhITU1cbiAgICAgICAgICAgICAgICBpZiAodGltZXpvbmVUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2lnbiA9IHRpbWV6b25lWzBdID09PSAnLScgPyAtMSA6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3VycyA9IHBhcnNlSW50KHRpbWV6b25lLnNsaWNlKDEsIDMpLCAxMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzID0gcGFyc2VJbnQodGltZXpvbmUuc2xpY2UoMywgNSksIDEwKTtcblxuICAgICAgICAgICAgICAgICAgICBjdXN0b21UaW1lem9uZU9mZnNldCA9IHNpZ24gKiAoKDYwICogaG91cnMpICsgbWludXRlcykgKiA2MCAqIDEwMDA7XG4gICAgICAgICAgICAgICAgICAgIC8vIGluIG1pbnV0ZXM6IDQyMFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aW1lem9uZVR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbVRpbWV6b25lT2Zmc2V0ID0gdGltZXpvbmUgKiA2MCAqIDEwMDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKF9sb2NhbGUsIGN1c3RvbVRpbWV6b25lT2Zmc2V0LCB1c2VVdGNCYXNlZERhdGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHN0cmZ0aW1lLnV0YyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJmdGltZShfbG9jYWxlLCBfY3VzdG9tVGltZXpvbmVPZmZzZXQsIHRydWUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBzdHJmdGltZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYWRUaWxsMihudW1iZXJUb1BhZCwgcGFkZGluZ0NoYXIpIHtcbiAgICAgICAgaWYgKHBhZGRpbmdDaGFyID09PSAnJyB8fCBudW1iZXJUb1BhZCA+IDkpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJUb1BhZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFkZGluZ0NoYXIgPT0gbnVsbCkge1xuICAgICAgICAgICAgcGFkZGluZ0NoYXIgPSAnMCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhZGRpbmdDaGFyICsgbnVtYmVyVG9QYWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFkVGlsbDMobnVtYmVyVG9QYWQpIHtcbiAgICAgICAgaWYgKG51bWJlclRvUGFkID4gOTkpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJUb1BhZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobnVtYmVyVG9QYWQgPiA5KSB7XG4gICAgICAgICAgICByZXR1cm4gJzAnICsgbnVtYmVyVG9QYWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcwMCcgKyBudW1iZXJUb1BhZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBob3VyczEyKGhvdXIpIHtcbiAgICAgICAgaWYgKGhvdXIgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAxMjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChob3VyID4gMTIpIHtcbiAgICAgICAgICAgIHJldHVybiBob3VyIC0gMTI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgfVxuXG4gICAgLy8gZmlyc3RXZWVrZGF5OiAnc3VuZGF5JyBvciAnbW9uZGF5JywgZGVmYXVsdCBpcyAnc3VuZGF5J1xuICAgIC8vXG4gICAgLy8gUGlsZmVyZWQgJiBwb3J0ZWQgZnJvbSBSdWJ5J3Mgc3RyZnRpbWUgaW1wbGVtZW50YXRpb24uXG4gICAgZnVuY3Rpb24gd2Vla051bWJlcihkYXRlLCBmaXJzdFdlZWtkYXkpIHtcbiAgICAgICAgZmlyc3RXZWVrZGF5ID0gZmlyc3RXZWVrZGF5IHx8ICdzdW5kYXknO1xuXG4gICAgICAgIC8vIFRoaXMgd29ya3MgYnkgc2hpZnRpbmcgdGhlIHdlZWtkYXkgYmFjayBieSBvbmUgZGF5IGlmIHdlXG4gICAgICAgIC8vIGFyZSB0cmVhdGluZyBNb25kYXkgYXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgdmFyIHdlZWtkYXkgPSBkYXRlLmdldERheSgpO1xuICAgICAgICBpZiAoZmlyc3RXZWVrZGF5ID09PSAnbW9uZGF5Jykge1xuICAgICAgICAgICAgaWYgKHdlZWtkYXkgPT09IDApIC8vIFN1bmRheVxuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSA2O1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHdlZWtkYXktLTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBmaXJzdERheU9mWWVhclV0YyA9IERhdGUuVVRDKGRhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSksXG4gICAgICAgICAgICBkYXRlVXRjID0gRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKSxcbiAgICAgICAgICAgIHlkYXkgPSBNYXRoLmZsb29yKChkYXRlVXRjIC0gZmlyc3REYXlPZlllYXJVdGMpIC8gODY0MDAwMDApLFxuICAgICAgICAgICAgd2Vla051bSA9ICh5ZGF5ICsgNyAtIHdlZWtkYXkpIC8gNztcblxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih3ZWVrTnVtKTtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIG9yZGluYWwgc3VmZml4IGZvciBhIG51bWJlcjogc3QsIG5kLCByZCwgb3IgdGhcbiAgICBmdW5jdGlvbiBvcmRpbmFsKG51bWJlcikge1xuICAgICAgICB2YXIgaSA9IG51bWJlciAlIDEwO1xuICAgICAgICB2YXIgaWkgPSBudW1iZXIgJSAxMDA7XG5cbiAgICAgICAgaWYgKChpaSA+PSAxMSAmJiBpaSA8PSAxMykgfHwgaSA9PT0gMCB8fCBpID49IDQpIHtcbiAgICAgICAgICAgIHJldHVybiAndGgnO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoaSkge1xuICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gJ3N0JztcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuICduZCc7XG4gICAgICAgICAgICBjYXNlIDM6IHJldHVybiAncmQnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IoZGF0ZSkge1xuICAgICAgICByZXR1cm4gKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSB8fCAwKSAqIDYwMDAwO1xuICAgIH1cblxufSgpKTtcbiIsIihmdW5jdGlvbihmKXtpZih0eXBlb2YgZXhwb3J0cz09PVwib2JqZWN0XCImJnR5cGVvZiBtb2R1bGUhPT1cInVuZGVmaW5lZFwiKXttb2R1bGUuZXhwb3J0cz1mKCl9ZWxzZSBpZih0eXBlb2YgZGVmaW5lPT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kKXtkZWZpbmUoW10sZil9ZWxzZXt2YXIgZztpZih0eXBlb2Ygd2luZG93IT09XCJ1bmRlZmluZWRcIil7Zz13aW5kb3d9ZWxzZSBpZih0eXBlb2YgZ2xvYmFsIT09XCJ1bmRlZmluZWRcIil7Zz1nbG9iYWx9ZWxzZSBpZih0eXBlb2Ygc2VsZiE9PVwidW5kZWZpbmVkXCIpe2c9c2VsZn1lbHNle2c9dGhpc31nLlZpcnR1YWxEb20gPSBmKCl9fSkoZnVuY3Rpb24oKXt2YXIgZGVmaW5lLG1vZHVsZSxleHBvcnRzO3JldHVybiAoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSh7MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoXCIuL3Zkb20vY3JlYXRlLWVsZW1lbnQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVFbGVtZW50XG5cbn0se1wiLi92ZG9tL2NyZWF0ZS1lbGVtZW50LmpzXCI6MjR9XSwyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkaWZmID0gcmVxdWlyZShcIi4vdnRyZWUvZGlmZi5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRpZmZcblxufSx7XCIuL3Z0cmVlL2RpZmYuanNcIjo0N31dLDM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuLyohXG4gKiBDcm9zcy1Ccm93c2VyIFNwbGl0IDEuMS4xXG4gKiBDb3B5cmlnaHQgMjAwNy0yMDEyIFN0ZXZlbiBMZXZpdGhhbiA8c3RldmVubGV2aXRoYW4uY29tPlxuICogQXZhaWxhYmxlIHVuZGVyIHRoZSBNSVQgTGljZW5zZVxuICogRUNNQVNjcmlwdCBjb21wbGlhbnQsIHVuaWZvcm0gY3Jvc3MtYnJvd3NlciBzcGxpdCBtZXRob2RcbiAqL1xuXG4vKipcbiAqIFNwbGl0cyBhIHN0cmluZyBpbnRvIGFuIGFycmF5IG9mIHN0cmluZ3MgdXNpbmcgYSByZWdleCBvciBzdHJpbmcgc2VwYXJhdG9yLiBNYXRjaGVzIG9mIHRoZVxuICogc2VwYXJhdG9yIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdCBhcnJheS4gSG93ZXZlciwgaWYgYHNlcGFyYXRvcmAgaXMgYSByZWdleCB0aGF0IGNvbnRhaW5zXG4gKiBjYXB0dXJpbmcgZ3JvdXBzLCBiYWNrcmVmZXJlbmNlcyBhcmUgc3BsaWNlZCBpbnRvIHRoZSByZXN1bHQgZWFjaCB0aW1lIGBzZXBhcmF0b3JgIGlzIG1hdGNoZWQuXG4gKiBGaXhlcyBicm93c2VyIGJ1Z3MgY29tcGFyZWQgdG8gdGhlIG5hdGl2ZSBgU3RyaW5nLnByb3RvdHlwZS5zcGxpdGAgYW5kIGNhbiBiZSB1c2VkIHJlbGlhYmx5XG4gKiBjcm9zcy1icm93c2VyLlxuICogQHBhcmFtIHtTdHJpbmd9IHN0ciBTdHJpbmcgdG8gc3BsaXQuXG4gKiBAcGFyYW0ge1JlZ0V4cHxTdHJpbmd9IHNlcGFyYXRvciBSZWdleCBvciBzdHJpbmcgdG8gdXNlIGZvciBzZXBhcmF0aW5nIHRoZSBzdHJpbmcuXG4gKiBAcGFyYW0ge051bWJlcn0gW2xpbWl0XSBNYXhpbXVtIG51bWJlciBvZiBpdGVtcyB0byBpbmNsdWRlIGluIHRoZSByZXN1bHQgYXJyYXkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IEFycmF5IG9mIHN1YnN0cmluZ3MuXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIEJhc2ljIHVzZVxuICogc3BsaXQoJ2EgYiBjIGQnLCAnICcpO1xuICogLy8gLT4gWydhJywgJ2InLCAnYycsICdkJ11cbiAqXG4gKiAvLyBXaXRoIGxpbWl0XG4gKiBzcGxpdCgnYSBiIGMgZCcsICcgJywgMik7XG4gKiAvLyAtPiBbJ2EnLCAnYiddXG4gKlxuICogLy8gQmFja3JlZmVyZW5jZXMgaW4gcmVzdWx0IGFycmF5XG4gKiBzcGxpdCgnLi53b3JkMSB3b3JkMi4uJywgLyhbYS16XSspKFxcZCspL2kpO1xuICogLy8gLT4gWycuLicsICd3b3JkJywgJzEnLCAnICcsICd3b3JkJywgJzInLCAnLi4nXVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IChmdW5jdGlvbiBzcGxpdCh1bmRlZikge1xuXG4gIHZhciBuYXRpdmVTcGxpdCA9IFN0cmluZy5wcm90b3R5cGUuc3BsaXQsXG4gICAgY29tcGxpYW50RXhlY05wY2cgPSAvKCk/Py8uZXhlYyhcIlwiKVsxXSA9PT0gdW5kZWYsXG4gICAgLy8gTlBDRzogbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXBcbiAgICBzZWxmO1xuXG4gIHNlbGYgPSBmdW5jdGlvbihzdHIsIHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAvLyBJZiBgc2VwYXJhdG9yYCBpcyBub3QgYSByZWdleCwgdXNlIGBuYXRpdmVTcGxpdGBcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHNlcGFyYXRvcikgIT09IFwiW29iamVjdCBSZWdFeHBdXCIpIHtcbiAgICAgIHJldHVybiBuYXRpdmVTcGxpdC5jYWxsKHN0ciwgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfVxuICAgIHZhciBvdXRwdXQgPSBbXSxcbiAgICAgIGZsYWdzID0gKHNlcGFyYXRvci5pZ25vcmVDYXNlID8gXCJpXCIgOiBcIlwiKSArIChzZXBhcmF0b3IubXVsdGlsaW5lID8gXCJtXCIgOiBcIlwiKSArIChzZXBhcmF0b3IuZXh0ZW5kZWQgPyBcInhcIiA6IFwiXCIpICsgLy8gUHJvcG9zZWQgZm9yIEVTNlxuICAgICAgKHNlcGFyYXRvci5zdGlja3kgPyBcInlcIiA6IFwiXCIpLFxuICAgICAgLy8gRmlyZWZveCAzK1xuICAgICAgbGFzdExhc3RJbmRleCA9IDAsXG4gICAgICAvLyBNYWtlIGBnbG9iYWxgIGFuZCBhdm9pZCBgbGFzdEluZGV4YCBpc3N1ZXMgYnkgd29ya2luZyB3aXRoIGEgY29weVxuICAgICAgc2VwYXJhdG9yID0gbmV3IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCBmbGFncyArIFwiZ1wiKSxcbiAgICAgIHNlcGFyYXRvcjIsIG1hdGNoLCBsYXN0SW5kZXgsIGxhc3RMZW5ndGg7XG4gICAgc3RyICs9IFwiXCI7IC8vIFR5cGUtY29udmVydFxuICAgIGlmICghY29tcGxpYW50RXhlY05wY2cpIHtcbiAgICAgIC8vIERvZXNuJ3QgbmVlZCBmbGFncyBneSwgYnV0IHRoZXkgZG9uJ3QgaHVydFxuICAgICAgc2VwYXJhdG9yMiA9IG5ldyBSZWdFeHAoXCJeXCIgKyBzZXBhcmF0b3Iuc291cmNlICsgXCIkKD8hXFxcXHMpXCIsIGZsYWdzKTtcbiAgICB9XG4gICAgLyogVmFsdWVzIGZvciBgbGltaXRgLCBwZXIgdGhlIHNwZWM6XG4gICAgICogSWYgdW5kZWZpbmVkOiA0Mjk0OTY3Mjk1IC8vIE1hdGgucG93KDIsIDMyKSAtIDFcbiAgICAgKiBJZiAwLCBJbmZpbml0eSwgb3IgTmFOOiAwXG4gICAgICogSWYgcG9zaXRpdmUgbnVtYmVyOiBsaW1pdCA9IE1hdGguZmxvb3IobGltaXQpOyBpZiAobGltaXQgPiA0Mjk0OTY3Mjk1KSBsaW1pdCAtPSA0Mjk0OTY3Mjk2O1xuICAgICAqIElmIG5lZ2F0aXZlIG51bWJlcjogNDI5NDk2NzI5NiAtIE1hdGguZmxvb3IoTWF0aC5hYnMobGltaXQpKVxuICAgICAqIElmIG90aGVyOiBUeXBlLWNvbnZlcnQsIHRoZW4gdXNlIHRoZSBhYm92ZSBydWxlc1xuICAgICAqL1xuICAgIGxpbWl0ID0gbGltaXQgPT09IHVuZGVmID8gLTEgPj4+IDAgOiAvLyBNYXRoLnBvdygyLCAzMikgLSAxXG4gICAgbGltaXQgPj4+IDA7IC8vIFRvVWludDMyKGxpbWl0KVxuICAgIHdoaWxlIChtYXRjaCA9IHNlcGFyYXRvci5leGVjKHN0cikpIHtcbiAgICAgIC8vIGBzZXBhcmF0b3IubGFzdEluZGV4YCBpcyBub3QgcmVsaWFibGUgY3Jvc3MtYnJvd3NlclxuICAgICAgbGFzdEluZGV4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gICAgICBpZiAobGFzdEluZGV4ID4gbGFzdExhc3RJbmRleCkge1xuICAgICAgICBvdXRwdXQucHVzaChzdHIuc2xpY2UobGFzdExhc3RJbmRleCwgbWF0Y2guaW5kZXgpKTtcbiAgICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGAgZm9yXG4gICAgICAgIC8vIG5vbnBhcnRpY2lwYXRpbmcgY2FwdHVyaW5nIGdyb3Vwc1xuICAgICAgICBpZiAoIWNvbXBsaWFudEV4ZWNOcGNnICYmIG1hdGNoLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBtYXRjaFswXS5yZXBsYWNlKHNlcGFyYXRvcjIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMjsgaSsrKSB7XG4gICAgICAgICAgICAgIGlmIChhcmd1bWVudHNbaV0gPT09IHVuZGVmKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2hbaV0gPSB1bmRlZjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtYXRjaC5sZW5ndGggPiAxICYmIG1hdGNoLmluZGV4IDwgc3RyLmxlbmd0aCkge1xuICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KG91dHB1dCwgbWF0Y2guc2xpY2UoMSkpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RMZW5ndGggPSBtYXRjaFswXS5sZW5ndGg7XG4gICAgICAgIGxhc3RMYXN0SW5kZXggPSBsYXN0SW5kZXg7XG4gICAgICAgIGlmIChvdXRwdXQubGVuZ3RoID49IGxpbWl0KSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzZXBhcmF0b3IubGFzdEluZGV4ID09PSBtYXRjaC5pbmRleCkge1xuICAgICAgICBzZXBhcmF0b3IubGFzdEluZGV4Kys7IC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3BcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGxhc3RMYXN0SW5kZXggPT09IHN0ci5sZW5ndGgpIHtcbiAgICAgIGlmIChsYXN0TGVuZ3RoIHx8ICFzZXBhcmF0b3IudGVzdChcIlwiKSkge1xuICAgICAgICBvdXRwdXQucHVzaChcIlwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2goc3RyLnNsaWNlKGxhc3RMYXN0SW5kZXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dC5sZW5ndGggPiBsaW1pdCA/IG91dHB1dC5zbGljZSgwLCBsaW1pdCkgOiBvdXRwdXQ7XG4gIH07XG5cbiAgcmV0dXJuIHNlbGY7XG59KSgpO1xuXG59LHt9XSw0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIE9uZVZlcnNpb25Db25zdHJhaW50ID0gcmVxdWlyZSgnaW5kaXZpZHVhbC9vbmUtdmVyc2lvbicpO1xuXG52YXIgTVlfVkVSU0lPTiA9ICc3Jztcbk9uZVZlcnNpb25Db25zdHJhaW50KCdldi1zdG9yZScsIE1ZX1ZFUlNJT04pO1xuXG52YXIgaGFzaEtleSA9ICdfX0VWX1NUT1JFX0tFWUAnICsgTVlfVkVSU0lPTjtcblxubW9kdWxlLmV4cG9ydHMgPSBFdlN0b3JlO1xuXG5mdW5jdGlvbiBFdlN0b3JlKGVsZW0pIHtcbiAgICB2YXIgaGFzaCA9IGVsZW1baGFzaEtleV07XG5cbiAgICBpZiAoIWhhc2gpIHtcbiAgICAgICAgaGFzaCA9IGVsZW1baGFzaEtleV0gPSB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzaDtcbn1cblxufSx7XCJpbmRpdmlkdWFsL29uZS12ZXJzaW9uXCI6Nn1dLDU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xuJ3VzZSBzdHJpY3QnO1xuXG4vKmdsb2JhbCB3aW5kb3csIGdsb2JhbCovXG5cbnZhciByb290ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgP1xuICAgIHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID9cbiAgICBnbG9iYWwgOiB7fTtcblxubW9kdWxlLmV4cG9ydHMgPSBJbmRpdmlkdWFsO1xuXG5mdW5jdGlvbiBJbmRpdmlkdWFsKGtleSwgdmFsdWUpIHtcbiAgICBpZiAoa2V5IGluIHJvb3QpIHtcbiAgICAgICAgcmV0dXJuIHJvb3Rba2V5XTtcbiAgICB9XG5cbiAgICByb290W2tleV0gPSB2YWx1ZTtcblxuICAgIHJldHVybiB2YWx1ZTtcbn1cblxufSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pXG59LHt9XSw2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIEluZGl2aWR1YWwgPSByZXF1aXJlKCcuL2luZGV4LmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gT25lVmVyc2lvbjtcblxuZnVuY3Rpb24gT25lVmVyc2lvbihtb2R1bGVOYW1lLCB2ZXJzaW9uLCBkZWZhdWx0VmFsdWUpIHtcbiAgICB2YXIga2V5ID0gJ19fSU5ESVZJRFVBTF9PTkVfVkVSU0lPTl8nICsgbW9kdWxlTmFtZTtcbiAgICB2YXIgZW5mb3JjZUtleSA9IGtleSArICdfRU5GT1JDRV9TSU5HTEVUT04nO1xuXG4gICAgdmFyIHZlcnNpb25WYWx1ZSA9IEluZGl2aWR1YWwoZW5mb3JjZUtleSwgdmVyc2lvbik7XG5cbiAgICBpZiAodmVyc2lvblZhbHVlICE9PSB2ZXJzaW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuIG9ubHkgaGF2ZSBvbmUgY29weSBvZiAnICtcbiAgICAgICAgICAgIG1vZHVsZU5hbWUgKyAnLlxcbicgK1xuICAgICAgICAgICAgJ1lvdSBhbHJlYWR5IGhhdmUgdmVyc2lvbiAnICsgdmVyc2lvblZhbHVlICtcbiAgICAgICAgICAgICcgaW5zdGFsbGVkLlxcbicgK1xuICAgICAgICAgICAgJ1RoaXMgbWVhbnMgeW91IGNhbm5vdCBpbnN0YWxsIHZlcnNpb24gJyArIHZlcnNpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBJbmRpdmlkdWFsKGtleSwgZGVmYXVsdFZhbHVlKTtcbn1cblxufSx7XCIuL2luZGV4LmpzXCI6NX1dLDc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xudmFyIHRvcExldmVsID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOlxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDoge31cbnZhciBtaW5Eb2MgPSByZXF1aXJlKCdtaW4tZG9jdW1lbnQnKTtcblxuaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGRvY3VtZW50O1xufSBlbHNlIHtcbiAgICB2YXIgZG9jY3kgPSB0b3BMZXZlbFsnX19HTE9CQUxfRE9DVU1FTlRfQ0FDSEVANCddO1xuXG4gICAgaWYgKCFkb2NjeSkge1xuICAgICAgICBkb2NjeSA9IHRvcExldmVsWydfX0dMT0JBTF9ET0NVTUVOVF9DQUNIRUA0J10gPSBtaW5Eb2M7XG4gICAgfVxuXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBkb2NjeTtcbn1cblxufSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pXG59LHtcIm1pbi1kb2N1bWVudFwiOjE3fV0sODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgZG9tV2FsayA9IHJlcXVpcmUoXCJkb20td2Fsa1wiKVxuXG52YXIgQ29tbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1jb21tZW50LmpzXCIpXG52YXIgRE9NVGV4dCA9IHJlcXVpcmUoXCIuL2RvbS10ZXh0LmpzXCIpXG52YXIgRE9NRWxlbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1lbGVtZW50LmpzXCIpXG52YXIgRG9jdW1lbnRGcmFnbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1mcmFnbWVudC5qc1wiKVxudmFyIEV2ZW50ID0gcmVxdWlyZShcIi4vZXZlbnQuanNcIilcbnZhciBkaXNwYXRjaEV2ZW50ID0gcmVxdWlyZShcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIilcbnZhciBhZGRFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG52YXIgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IERvY3VtZW50O1xuXG5mdW5jdGlvbiBEb2N1bWVudCgpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRG9jdW1lbnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmhlYWQgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJoZWFkXCIpXG4gICAgdGhpcy5ib2R5ID0gdGhpcy5jcmVhdGVFbGVtZW50KFwiYm9keVwiKVxuICAgIHRoaXMuZG9jdW1lbnRFbGVtZW50ID0gdGhpcy5jcmVhdGVFbGVtZW50KFwiaHRtbFwiKVxuICAgIHRoaXMuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaGVhZClcbiAgICB0aGlzLmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJvZHkpXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW3RoaXMuZG9jdW1lbnRFbGVtZW50XVxuICAgIHRoaXMubm9kZVR5cGUgPSA5XG59XG5cbnZhciBwcm90byA9IERvY3VtZW50LnByb3RvdHlwZTtcbnByb3RvLmNyZWF0ZVRleHROb2RlID0gZnVuY3Rpb24gY3JlYXRlVGV4dE5vZGUodmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IERPTVRleHQodmFsdWUsIHRoaXMpXG59XG5cbnByb3RvLmNyZWF0ZUVsZW1lbnROUyA9IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2UsIHRhZ05hbWUpIHtcbiAgICB2YXIgbnMgPSBuYW1lc3BhY2UgPT09IG51bGwgPyBudWxsIDogU3RyaW5nKG5hbWVzcGFjZSlcbiAgICByZXR1cm4gbmV3IERPTUVsZW1lbnQodGFnTmFtZSwgdGhpcywgbnMpXG59XG5cbnByb3RvLmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiBjcmVhdGVFbGVtZW50KHRhZ05hbWUpIHtcbiAgICByZXR1cm4gbmV3IERPTUVsZW1lbnQodGFnTmFtZSwgdGhpcylcbn1cblxucHJvdG8uY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSB7XG4gICAgcmV0dXJuIG5ldyBEb2N1bWVudEZyYWdtZW50KHRoaXMpXG59XG5cbnByb3RvLmNyZWF0ZUV2ZW50ID0gZnVuY3Rpb24gY3JlYXRlRXZlbnQoZmFtaWx5KSB7XG4gICAgcmV0dXJuIG5ldyBFdmVudChmYW1pbHkpXG59XG5cbnByb3RvLmNyZWF0ZUNvbW1lbnQgPSBmdW5jdGlvbiBjcmVhdGVDb21tZW50KGRhdGEpIHtcbiAgICByZXR1cm4gbmV3IENvbW1lbnQoZGF0YSwgdGhpcylcbn1cblxucHJvdG8uZ2V0RWxlbWVudEJ5SWQgPSBmdW5jdGlvbiBnZXRFbGVtZW50QnlJZChpZCkge1xuICAgIGlkID0gU3RyaW5nKGlkKVxuXG4gICAgdmFyIHJlc3VsdCA9IGRvbVdhbGsodGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAoU3RyaW5nKG5vZGUuaWQpID09PSBpZCkge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gcmVzdWx0IHx8IG51bGxcbn1cblxucHJvdG8uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IERPTUVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWVcbnByb3RvLmdldEVsZW1lbnRzQnlUYWdOYW1lID0gRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWVcbnByb3RvLmNvbnRhaW5zID0gRE9NRWxlbWVudC5wcm90b3R5cGUuY29udGFpbnNcblxucHJvdG8ucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcbnByb3RvLmFkZEV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyXG5wcm90by5kaXNwYXRjaEV2ZW50ID0gZGlzcGF0Y2hFdmVudFxuXG59LHtcIi4vZG9tLWNvbW1lbnQuanNcIjo5LFwiLi9kb20tZWxlbWVudC5qc1wiOjEwLFwiLi9kb20tZnJhZ21lbnQuanNcIjoxMSxcIi4vZG9tLXRleHQuanNcIjoxMixcIi4vZXZlbnQuanNcIjoxMyxcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTQsXCIuL2V2ZW50L2Rpc3BhdGNoLWV2ZW50LmpzXCI6MTUsXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiOjE2LFwiZG9tLXdhbGtcIjoxOH1dLDk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBDb21tZW50XG5cbmZ1bmN0aW9uIENvbW1lbnQoZGF0YSwgb3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQ29tbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tZW50KGRhdGEsIG93bmVyKVxuICAgIH1cblxuICAgIHRoaXMuZGF0YSA9IGRhdGFcbiAgICB0aGlzLm5vZGVWYWx1ZSA9IGRhdGFcbiAgICB0aGlzLmxlbmd0aCA9IGRhdGEubGVuZ3RoXG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxufVxuXG5Db21tZW50LnByb3RvdHlwZS5ub2RlVHlwZSA9IDhcbkNvbW1lbnQucHJvdG90eXBlLm5vZGVOYW1lID0gXCIjY29tbWVudFwiXG5cbkNvbW1lbnQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gX0NvbW1lbnRfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBDb21tZW50XVwiXG59XG5cbn0se31dLDEwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb21XYWxrID0gcmVxdWlyZShcImRvbS13YWxrXCIpXG52YXIgZGlzcGF0Y2hFdmVudCA9IHJlcXVpcmUoXCIuL2V2ZW50L2Rpc3BhdGNoLWV2ZW50LmpzXCIpXG52YXIgYWRkRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L2FkZC1ldmVudC1saXN0ZW5lci5qc1wiKVxudmFyIHJlbW92ZUV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKFwiLi9ldmVudC9yZW1vdmUtZXZlbnQtbGlzdGVuZXIuanNcIilcbnZhciBzZXJpYWxpemVOb2RlID0gcmVxdWlyZShcIi4vc2VyaWFsaXplLmpzXCIpXG5cbnZhciBodG1sbnMgPSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIlxuXG5tb2R1bGUuZXhwb3J0cyA9IERPTUVsZW1lbnRcblxuZnVuY3Rpb24gRE9NRWxlbWVudCh0YWdOYW1lLCBvd25lciwgbmFtZXNwYWNlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERPTUVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lKVxuICAgIH1cblxuICAgIHZhciBucyA9IG5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkID8gaHRtbG5zIDogKG5hbWVzcGFjZSB8fCBudWxsKVxuXG4gICAgdGhpcy50YWdOYW1lID0gbnMgPT09IGh0bWxucyA/IFN0cmluZyh0YWdOYW1lKS50b1VwcGVyQ2FzZSgpIDogdGFnTmFtZVxuICAgIHRoaXMubm9kZU5hbWUgPSB0aGlzLnRhZ05hbWVcbiAgICB0aGlzLmNsYXNzTmFtZSA9IFwiXCJcbiAgICB0aGlzLmRhdGFzZXQgPSB7fVxuICAgIHRoaXMuY2hpbGROb2RlcyA9IFtdXG4gICAgdGhpcy5wYXJlbnROb2RlID0gbnVsbFxuICAgIHRoaXMuc3R5bGUgPSB7fVxuICAgIHRoaXMub3duZXJEb2N1bWVudCA9IG93bmVyIHx8IG51bGxcbiAgICB0aGlzLm5hbWVzcGFjZVVSSSA9IG5zXG4gICAgdGhpcy5fYXR0cmlidXRlcyA9IHt9XG5cbiAgICBpZiAodGhpcy50YWdOYW1lID09PSAnSU5QVVQnKSB7XG4gICAgICB0aGlzLnR5cGUgPSAndGV4dCdcbiAgICB9XG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnR5cGUgPSBcIkRPTUVsZW1lbnRcIlxuRE9NRWxlbWVudC5wcm90b3R5cGUubm9kZVR5cGUgPSAxXG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkID0gZnVuY3Rpb24gX0VsZW1lbnRfYXBwZW5kQ2hpbGQoY2hpbGQpIHtcbiAgICBpZiAoY2hpbGQucGFyZW50Tm9kZSkge1xuICAgICAgICBjaGlsZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNoaWxkKVxuICAgIH1cblxuICAgIHRoaXMuY2hpbGROb2Rlcy5wdXNoKGNoaWxkKVxuICAgIGNoaWxkLnBhcmVudE5vZGUgPSB0aGlzXG5cbiAgICByZXR1cm4gY2hpbGRcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9yZXBsYWNlQ2hpbGQoZWxlbSwgbmVlZGxlKSB7XG4gICAgICAgIC8vIFRPRE86IFRocm93IE5vdEZvdW5kRXJyb3IgaWYgbmVlZGxlLnBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgICAgICBpZiAoZWxlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSlcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpbmRleCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKG5lZWRsZSlcblxuICAgICAgICBuZWVkbGUucGFyZW50Tm9kZSA9IG51bGxcbiAgICAgICAgdGhpcy5jaGlsZE5vZGVzW2luZGV4XSA9IGVsZW1cbiAgICAgICAgZWxlbS5wYXJlbnROb2RlID0gdGhpc1xuXG4gICAgICAgIHJldHVybiBuZWVkbGVcbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkID0gZnVuY3Rpb24gX0VsZW1lbnRfcmVtb3ZlQ2hpbGQoZWxlbSkge1xuICAgIC8vIFRPRE86IFRocm93IE5vdEZvdW5kRXJyb3IgaWYgZWxlbS5wYXJlbnROb2RlICE9PSB0aGlzXG5cbiAgICB2YXIgaW5kZXggPSB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihlbGVtKVxuICAgIHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UoaW5kZXgsIDEpXG5cbiAgICBlbGVtLnBhcmVudE5vZGUgPSBudWxsXG4gICAgcmV0dXJuIGVsZW1cbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9pbnNlcnRCZWZvcmUoZWxlbSwgbmVlZGxlKSB7XG4gICAgICAgIC8vIFRPRE86IFRocm93IE5vdEZvdW5kRXJyb3IgaWYgcmVmZXJlbmNlRWxlbWVudCBpcyBhIGRvbSBub2RlXG4gICAgICAgIC8vIGFuZCBwYXJlbnROb2RlICE9PSB0aGlzXG5cbiAgICAgICAgaWYgKGVsZW0ucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW0pXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaW5kZXggPSBuZWVkbGUgPT09IG51bGwgfHwgbmVlZGxlID09PSB1bmRlZmluZWQgP1xuICAgICAgICAgICAgLTEgOlxuICAgICAgICAgICAgdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YobmVlZGxlKVxuXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKGluZGV4LCAwLCBlbGVtKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGlsZE5vZGVzLnB1c2goZWxlbSlcbiAgICAgICAgfVxuXG4gICAgICAgIGVsZW0ucGFyZW50Tm9kZSA9IHRoaXNcbiAgICAgICAgcmV0dXJuIGVsZW1cbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHZhciBwcmVmaXggPSBudWxsXG4gICAgICAgIHZhciBsb2NhbE5hbWUgPSBuYW1lXG4gICAgICAgIHZhciBjb2xvblBvc2l0aW9uID0gbmFtZS5pbmRleE9mKFwiOlwiKVxuICAgICAgICBpZiAoY29sb25Qb3NpdGlvbiA+IC0xKSB7XG4gICAgICAgICAgICBwcmVmaXggPSBuYW1lLnN1YnN0cigwLCBjb2xvblBvc2l0aW9uKVxuICAgICAgICAgICAgbG9jYWxOYW1lID0gbmFtZS5zdWJzdHIoY29sb25Qb3NpdGlvbiArIDEpXG4gICAgICAgIH1cbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV0gfHwgKHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXSA9IHt9KVxuICAgICAgICBhdHRyaWJ1dGVzW2xvY2FsTmFtZV0gPSB7dmFsdWU6IHZhbHVlLCBwcmVmaXg6IHByZWZpeH1cbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9nZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV07XG4gICAgICAgIHZhciB2YWx1ZSA9IGF0dHJpYnV0ZXMgJiYgYXR0cmlidXRlc1tuYW1lXSAmJiBhdHRyaWJ1dGVzW25hbWVdLnZhbHVlXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV07XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBkZWxldGUgYXR0cmlidXRlc1tuYW1lXVxuICAgICAgICB9XG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5oYXNBdHRyaWJ1dGVOUyA9XG4gICAgZnVuY3Rpb24gX0VsZW1lbnRfaGFzQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lKSB7XG4gICAgICAgIHZhciBhdHRyaWJ1dGVzID0gdGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdXG4gICAgICAgIHJldHVybiAhIWF0dHJpYnV0ZXMgJiYgbmFtZSBpbiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0QXR0cmlidXRlTlMobnVsbCwgbmFtZSwgdmFsdWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEF0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXR0cmlidXRlTlMobnVsbCwgbmFtZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfcmVtb3ZlQXR0cmlidXRlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhudWxsLCBuYW1lKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5oYXNBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9oYXNBdHRyaWJ1dGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLmhhc0F0dHJpYnV0ZU5TKG51bGwsIG5hbWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSByZW1vdmVFdmVudExpc3RlbmVyXG5ET01FbGVtZW50LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lclxuRE9NRWxlbWVudC5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudCA9IGRpc3BhdGNoRXZlbnRcblxuLy8gVW4taW1wbGVtZW50ZWRcbkRPTUVsZW1lbnQucHJvdG90eXBlLmZvY3VzID0gZnVuY3Rpb24gX0VsZW1lbnRfZm9jdXMoKSB7XG4gICAgcmV0dXJuIHZvaWQgMFxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIF9FbGVtZW50X3RvU3RyaW5nKCkge1xuICAgIHJldHVybiBzZXJpYWxpemVOb2RlKHRoaXMpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBmdW5jdGlvbiBfRWxlbWVudF9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNsYXNzTmFtZXMpIHtcbiAgICB2YXIgY2xhc3NlcyA9IGNsYXNzTmFtZXMuc3BsaXQoXCIgXCIpO1xuICAgIHZhciBlbGVtcyA9IFtdXG5cbiAgICBkb21XYWxrKHRoaXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgICAgICB2YXIgbm9kZUNsYXNzTmFtZSA9IG5vZGUuY2xhc3NOYW1lIHx8IFwiXCJcbiAgICAgICAgICAgIHZhciBub2RlQ2xhc3NlcyA9IG5vZGVDbGFzc05hbWUuc3BsaXQoXCIgXCIpXG5cbiAgICAgICAgICAgIGlmIChjbGFzc2VzLmV2ZXJ5KGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVDbGFzc2VzLmluZGV4T2YoaXRlbSkgIT09IC0xXG4gICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgICAgIGVsZW1zLnB1c2gobm9kZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gZWxlbXNcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBmdW5jdGlvbiBfRWxlbWVudF9nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdOYW1lKSB7XG4gICAgdGFnTmFtZSA9IHRhZ05hbWUudG9Mb3dlckNhc2UoKVxuICAgIHZhciBlbGVtcyA9IFtdXG5cbiAgICBkb21XYWxrKHRoaXMuY2hpbGROb2RlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEgJiYgKHRhZ05hbWUgPT09ICcqJyB8fCBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGFnTmFtZSkpIHtcbiAgICAgICAgICAgIGVsZW1zLnB1c2gobm9kZSlcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gZWxlbXNcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiBfRWxlbWVudF9jb250YWlucyhlbGVtZW50KSB7XG4gICAgcmV0dXJuIGRvbVdhbGsodGhpcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQgPT09IG5vZGVcbiAgICB9KSB8fCBmYWxzZVxufVxuXG59LHtcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTQsXCIuL2V2ZW50L2Rpc3BhdGNoLWV2ZW50LmpzXCI6MTUsXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiOjE2LFwiLi9zZXJpYWxpemUuanNcIjoxOSxcImRvbS13YWxrXCI6MTh9XSwxMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgRE9NRWxlbWVudCA9IHJlcXVpcmUoXCIuL2RvbS1lbGVtZW50LmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gRG9jdW1lbnRGcmFnbWVudFxuXG5mdW5jdGlvbiBEb2N1bWVudEZyYWdtZW50KG93bmVyKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRG9jdW1lbnRGcmFnbWVudCgpXG4gICAgfVxuXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW11cbiAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsXG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxufVxuXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS50eXBlID0gXCJEb2N1bWVudEZyYWdtZW50XCJcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLm5vZGVUeXBlID0gMTFcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLm5vZGVOYW1lID0gXCIjZG9jdW1lbnQtZnJhZ21lbnRcIlxuXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5hcHBlbmRDaGlsZCAgPSBET01FbGVtZW50LnByb3RvdHlwZS5hcHBlbmRDaGlsZFxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkID0gRE9NRWxlbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZCAgPSBET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZFxuXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS50b1N0cmluZyA9XG4gICAgZnVuY3Rpb24gX0RvY3VtZW50RnJhZ21lbnRfdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKG5vZGUpXG4gICAgICAgIH0pLmpvaW4oXCJcIilcbiAgICB9XG5cbn0se1wiLi9kb20tZWxlbWVudC5qc1wiOjEwfV0sMTI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBET01UZXh0XG5cbmZ1bmN0aW9uIERPTVRleHQodmFsdWUsIG93bmVyKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERPTVRleHQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRE9NVGV4dCh2YWx1ZSlcbiAgICB9XG5cbiAgICB0aGlzLmRhdGEgPSB2YWx1ZSB8fCBcIlwiXG4gICAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoXG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxufVxuXG5ET01UZXh0LnByb3RvdHlwZS50eXBlID0gXCJET01UZXh0Tm9kZVwiXG5ET01UZXh0LnByb3RvdHlwZS5ub2RlVHlwZSA9IDNcbkRPTVRleHQucHJvdG90eXBlLm5vZGVOYW1lID0gXCIjdGV4dFwiXG5cbkRPTVRleHQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gX1RleHRfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVxufVxuXG5ET01UZXh0LnByb3RvdHlwZS5yZXBsYWNlRGF0YSA9IGZ1bmN0aW9uIHJlcGxhY2VEYXRhKGluZGV4LCBsZW5ndGgsIHZhbHVlKSB7XG4gICAgdmFyIGN1cnJlbnQgPSB0aGlzLmRhdGFcbiAgICB2YXIgbGVmdCA9IGN1cnJlbnQuc3Vic3RyaW5nKDAsIGluZGV4KVxuICAgIHZhciByaWdodCA9IGN1cnJlbnQuc3Vic3RyaW5nKGluZGV4ICsgbGVuZ3RoLCBjdXJyZW50Lmxlbmd0aClcbiAgICB0aGlzLmRhdGEgPSBsZWZ0ICsgdmFsdWUgKyByaWdodFxuICAgIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aFxufVxuXG59LHt9XSwxMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50XG5cbmZ1bmN0aW9uIEV2ZW50KGZhbWlseSkge31cblxuRXZlbnQucHJvdG90eXBlLmluaXRFdmVudCA9IGZ1bmN0aW9uIF9FdmVudF9pbml0RXZlbnQodHlwZSwgYnViYmxlcywgY2FuY2VsYWJsZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGVcbiAgICB0aGlzLmJ1YmJsZXMgPSBidWJibGVzXG4gICAgdGhpcy5jYW5jZWxhYmxlID0gY2FuY2VsYWJsZVxufVxuXG5FdmVudC5wcm90b3R5cGUucHJldmVudERlZmF1bHQgPSBmdW5jdGlvbiBfRXZlbnRfcHJldmVudERlZmF1bHQoKSB7XG4gICAgXG59XG5cbn0se31dLDE0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gYWRkRXZlbnRMaXN0ZW5lclxuXG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgdmFyIGVsZW0gPSB0aGlzXG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzKSB7XG4gICAgICAgIGVsZW0ubGlzdGVuZXJzID0ge31cbiAgICB9XG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzW3R5cGVdKSB7XG4gICAgICAgIGVsZW0ubGlzdGVuZXJzW3R5cGVdID0gW11cbiAgICB9XG5cbiAgICBpZiAoZWxlbS5saXN0ZW5lcnNbdHlwZV0uaW5kZXhPZihsaXN0ZW5lcikgPT09IC0xKSB7XG4gICAgICAgIGVsZW0ubGlzdGVuZXJzW3R5cGVdLnB1c2gobGlzdGVuZXIpXG4gICAgfVxufVxuXG59LHt9XSwxNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGRpc3BhdGNoRXZlbnRcblxuZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChldikge1xuICAgIHZhciBlbGVtID0gdGhpc1xuICAgIHZhciB0eXBlID0gZXYudHlwZVxuXG4gICAgaWYgKCFldi50YXJnZXQpIHtcbiAgICAgICAgZXYudGFyZ2V0ID0gZWxlbVxuICAgIH1cblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnMpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnMgPSB7fVxuICAgIH1cblxuICAgIHZhciBsaXN0ZW5lcnMgPSBlbGVtLmxpc3RlbmVyc1t0eXBlXVxuXG4gICAgaWYgKGxpc3RlbmVycykge1xuICAgICAgICByZXR1cm4gbGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24gKGxpc3RlbmVyKSB7XG4gICAgICAgICAgICBldi5jdXJyZW50VGFyZ2V0ID0gZWxlbVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyKGV2KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsaXN0ZW5lci5oYW5kbGVFdmVudChldilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoZWxlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgIGVsZW0ucGFyZW50Tm9kZS5kaXNwYXRjaEV2ZW50KGV2KVxuICAgIH1cbn1cblxufSx7fV0sMTY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSByZW1vdmVFdmVudExpc3RlbmVyXG5cbmZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICB2YXIgZWxlbSA9IHRoaXNcblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnMpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVyc1t0eXBlXSkge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgbGlzdCA9IGVsZW0ubGlzdGVuZXJzW3R5cGVdXG4gICAgdmFyIGluZGV4ID0gbGlzdC5pbmRleE9mKGxpc3RlbmVyKVxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgbGlzdC5zcGxpY2UoaW5kZXgsIDEpXG4gICAgfVxufVxuXG59LHt9XSwxNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgRG9jdW1lbnQgPSByZXF1aXJlKCcuL2RvY3VtZW50LmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IERvY3VtZW50KCk7XG5cbn0se1wiLi9kb2N1bWVudC5qc1wiOjh9XSwxODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2VcblxubW9kdWxlLmV4cG9ydHMgPSBpdGVyYXRpdmVseVdhbGtcblxuZnVuY3Rpb24gaXRlcmF0aXZlbHlXYWxrKG5vZGVzLCBjYikge1xuICAgIGlmICghKCdsZW5ndGgnIGluIG5vZGVzKSkge1xuICAgICAgICBub2RlcyA9IFtub2Rlc11cbiAgICB9XG4gICAgXG4gICAgbm9kZXMgPSBzbGljZS5jYWxsKG5vZGVzKVxuXG4gICAgd2hpbGUobm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBub2RlID0gbm9kZXMuc2hpZnQoKSxcbiAgICAgICAgICAgIHJldCA9IGNiKG5vZGUpXG5cbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgICAgcmV0dXJuIHJldFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vZGUuY2hpbGROb2RlcyAmJiBub2RlLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBub2RlcyA9IHNsaWNlLmNhbGwobm9kZS5jaGlsZE5vZGVzKS5jb25jYXQobm9kZXMpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbn0se31dLDE5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gc2VyaWFsaXplTm9kZVxuXG52YXIgdm9pZEVsZW1lbnRzID0gL2FyZWF8YmFzZXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGtleWdlbnxsaW5rfG1lbnVpdGVtfG1ldGF8cGFyYW18c291cmNlfHRyYWNrfHdici9pO1xuXG5mdW5jdGlvbiBzZXJpYWxpemVOb2RlKG5vZGUpIHtcbiAgICBzd2l0Y2ggKG5vZGUubm9kZVR5cGUpIHtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIGVzY2FwZVRleHQobm9kZS5kYXRhKVxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gXCI8IS0tXCIgKyBub2RlLmRhdGEgKyBcIi0tPlwiXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplRWxlbWVudChub2RlKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplRWxlbWVudChlbGVtKSB7XG4gICAgdmFyIHN0cmluZ3MgPSBbXVxuXG4gICAgdmFyIHRhZ25hbWUgPSBlbGVtLnRhZ05hbWVcblxuICAgIGlmIChlbGVtLm5hbWVzcGFjZVVSSSA9PT0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIpIHtcbiAgICAgICAgdGFnbmFtZSA9IHRhZ25hbWUudG9Mb3dlckNhc2UoKVxuICAgIH1cblxuICAgIHN0cmluZ3MucHVzaChcIjxcIiArIHRhZ25hbWUgKyBwcm9wZXJ0aWVzKGVsZW0pICsgZGF0YXNldGlmeShlbGVtKSlcblxuICAgIGlmICh2b2lkRWxlbWVudHMudGVzdCh0YWduYW1lKSkge1xuICAgICAgICBzdHJpbmdzLnB1c2goXCIgLz5cIilcbiAgICB9IGVsc2Uge1xuICAgICAgICBzdHJpbmdzLnB1c2goXCI+XCIpXG5cbiAgICAgICAgaWYgKGVsZW0uY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHN0cmluZ3MucHVzaC5hcHBseShzdHJpbmdzLCBlbGVtLmNoaWxkTm9kZXMubWFwKHNlcmlhbGl6ZU5vZGUpKVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW0udGV4dENvbnRlbnQgfHwgZWxlbS5pbm5lclRleHQpIHtcbiAgICAgICAgICAgIHN0cmluZ3MucHVzaChlc2NhcGVUZXh0KGVsZW0udGV4dENvbnRlbnQgfHwgZWxlbS5pbm5lclRleHQpKVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW0uaW5uZXJIVE1MKSB7XG4gICAgICAgICAgICBzdHJpbmdzLnB1c2goZWxlbS5pbm5lckhUTUwpXG4gICAgICAgIH1cblxuICAgICAgICBzdHJpbmdzLnB1c2goXCI8L1wiICsgdGFnbmFtZSArIFwiPlwiKVxuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmdzLmpvaW4oXCJcIilcbn1cblxuZnVuY3Rpb24gaXNQcm9wZXJ0eShlbGVtLCBrZXkpIHtcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiBlbGVtW2tleV1cblxuICAgIGlmIChrZXkgPT09IFwic3R5bGVcIiAmJiBPYmplY3Qua2V5cyhlbGVtLnN0eWxlKS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBlbGVtLmhhc093blByb3BlcnR5KGtleSkgJiZcbiAgICAgICAgKHR5cGUgPT09IFwic3RyaW5nXCIgfHwgdHlwZSA9PT0gXCJib29sZWFuXCIgfHwgdHlwZSA9PT0gXCJudW1iZXJcIikgJiZcbiAgICAgICAga2V5ICE9PSBcIm5vZGVOYW1lXCIgJiYga2V5ICE9PSBcImNsYXNzTmFtZVwiICYmIGtleSAhPT0gXCJ0YWdOYW1lXCIgJiZcbiAgICAgICAga2V5ICE9PSBcInRleHRDb250ZW50XCIgJiYga2V5ICE9PSBcImlubmVyVGV4dFwiICYmIGtleSAhPT0gXCJuYW1lc3BhY2VVUklcIiAmJiAga2V5ICE9PSBcImlubmVySFRNTFwiXG59XG5cbmZ1bmN0aW9uIHN0eWxpZnkoc3R5bGVzKSB7XG4gICAgaWYgKHR5cGVvZiBzdHlsZXMgPT09ICdzdHJpbmcnKSByZXR1cm4gc3R5bGVzXG4gICAgdmFyIGF0dHIgPSBcIlwiXG4gICAgT2JqZWN0LmtleXMoc3R5bGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gc3R5bGVzW2tleV1cbiAgICAgICAga2V5ID0ga2V5LnJlcGxhY2UoL1tBLVpdL2csIGZ1bmN0aW9uKGMpIHtcbiAgICAgICAgICAgIHJldHVybiBcIi1cIiArIGMudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfSlcbiAgICAgICAgYXR0ciArPSBrZXkgKyBcIjpcIiArIHZhbHVlICsgXCI7XCJcbiAgICB9KVxuICAgIHJldHVybiBhdHRyXG59XG5cbmZ1bmN0aW9uIGRhdGFzZXRpZnkoZWxlbSkge1xuICAgIHZhciBkcyA9IGVsZW0uZGF0YXNldFxuICAgIHZhciBwcm9wcyA9IFtdXG5cbiAgICBmb3IgKHZhciBrZXkgaW4gZHMpIHtcbiAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IFwiZGF0YS1cIiArIGtleSwgdmFsdWU6IGRzW2tleV0gfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHMubGVuZ3RoID8gc3RyaW5naWZ5KHByb3BzKSA6IFwiXCJcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5KGxpc3QpIHtcbiAgICB2YXIgYXR0cmlidXRlcyA9IFtdXG4gICAgbGlzdC5mb3JFYWNoKGZ1bmN0aW9uICh0dXBsZSkge1xuICAgICAgICB2YXIgbmFtZSA9IHR1cGxlLm5hbWVcbiAgICAgICAgdmFyIHZhbHVlID0gdHVwbGUudmFsdWVcblxuICAgICAgICBpZiAobmFtZSA9PT0gXCJzdHlsZVwiKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHN0eWxpZnkodmFsdWUpXG4gICAgICAgIH1cblxuICAgICAgICBhdHRyaWJ1dGVzLnB1c2gobmFtZSArIFwiPVwiICsgXCJcXFwiXCIgKyBlc2NhcGVBdHRyaWJ1dGVWYWx1ZSh2YWx1ZSkgKyBcIlxcXCJcIilcbiAgICB9KVxuXG4gICAgcmV0dXJuIGF0dHJpYnV0ZXMubGVuZ3RoID8gXCIgXCIgKyBhdHRyaWJ1dGVzLmpvaW4oXCIgXCIpIDogXCJcIlxufVxuXG5mdW5jdGlvbiBwcm9wZXJ0aWVzKGVsZW0pIHtcbiAgICB2YXIgcHJvcHMgPSBbXVxuICAgIGZvciAodmFyIGtleSBpbiBlbGVtKSB7XG4gICAgICAgIGlmIChpc1Byb3BlcnR5KGVsZW0sIGtleSkpIHtcbiAgICAgICAgICAgIHByb3BzLnB1c2goeyBuYW1lOiBrZXksIHZhbHVlOiBlbGVtW2tleV0gfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIG5zIGluIGVsZW0uX2F0dHJpYnV0ZXMpIHtcbiAgICAgIGZvciAodmFyIGF0dHJpYnV0ZSBpbiBlbGVtLl9hdHRyaWJ1dGVzW25zXSkge1xuICAgICAgICB2YXIgcHJvcCA9IGVsZW0uX2F0dHJpYnV0ZXNbbnNdW2F0dHJpYnV0ZV1cbiAgICAgICAgdmFyIG5hbWUgPSAocHJvcC5wcmVmaXggPyBwcm9wLnByZWZpeCArIFwiOlwiIDogXCJcIikgKyBhdHRyaWJ1dGVcbiAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IG5hbWUsIHZhbHVlOiBwcm9wLnZhbHVlIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVsZW0uY2xhc3NOYW1lKSB7XG4gICAgICAgIHByb3BzLnB1c2goeyBuYW1lOiBcImNsYXNzXCIsIHZhbHVlOiBlbGVtLmNsYXNzTmFtZSB9KVxuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5sZW5ndGggPyBzdHJpbmdpZnkocHJvcHMpIDogXCJcIlxufVxuXG5mdW5jdGlvbiBlc2NhcGVUZXh0KHMpIHtcbiAgICB2YXIgc3RyID0gJyc7XG5cbiAgICBpZiAodHlwZW9mKHMpID09PSAnc3RyaW5nJykgeyBcbiAgICAgICAgc3RyID0gczsgXG4gICAgfSBlbHNlIGlmIChzKSB7XG4gICAgICAgIHN0ciA9IHMudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyXG4gICAgICAgIC5yZXBsYWNlKC8mL2csIFwiJmFtcDtcIilcbiAgICAgICAgLnJlcGxhY2UoLzwvZywgXCImbHQ7XCIpXG4gICAgICAgIC5yZXBsYWNlKC8+L2csIFwiJmd0O1wiKVxufVxuXG5mdW5jdGlvbiBlc2NhcGVBdHRyaWJ1dGVWYWx1ZShzdHIpIHtcbiAgICByZXR1cm4gZXNjYXBlVGV4dChzdHIpLnJlcGxhY2UoL1wiL2csIFwiJnF1b3Q7XCIpXG59XG5cbn0se31dLDIwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcblwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzT2JqZWN0KHgpIHtcblx0cmV0dXJuIHR5cGVvZiB4ID09PSBcIm9iamVjdFwiICYmIHggIT09IG51bGw7XG59O1xuXG59LHt9XSwyMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgbmF0aXZlSXNBcnJheSA9IEFycmF5LmlzQXJyYXlcbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVJc0FycmF5IHx8IGlzQXJyYXlcblxuZnVuY3Rpb24gaXNBcnJheShvYmopIHtcbiAgICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09PSBcIltvYmplY3QgQXJyYXldXCJcbn1cblxufSx7fV0sMjI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHBhdGNoID0gcmVxdWlyZShcIi4vdmRvbS9wYXRjaC5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGNoXG5cbn0se1wiLi92ZG9tL3BhdGNoLmpzXCI6Mjd9XSwyMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKFwiaXMtb2JqZWN0XCIpXG52YXIgaXNIb29rID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZob29rLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gYXBwbHlQcm9wZXJ0aWVzXG5cbmZ1bmN0aW9uIGFwcGx5UHJvcGVydGllcyhub2RlLCBwcm9wcywgcHJldmlvdXMpIHtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wcykge1xuICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdXG5cbiAgICAgICAgaWYgKHByb3BWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZW1vdmVQcm9wZXJ0eShub2RlLCBwcm9wTmFtZSwgcHJvcFZhbHVlLCBwcmV2aW91cyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNIb29rKHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKVxuICAgICAgICAgICAgaWYgKHByb3BWYWx1ZS5ob29rKSB7XG4gICAgICAgICAgICAgICAgcHJvcFZhbHVlLmhvb2sobm9kZSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcE5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzID8gcHJldmlvdXNbcHJvcE5hbWVdIDogdW5kZWZpbmVkKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBwYXRjaE9iamVjdChub2RlLCBwcm9wcywgcHJldmlvdXMsIHByb3BOYW1lLCBwcm9wVmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IHByb3BWYWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVQcm9wZXJ0eShub2RlLCBwcm9wTmFtZSwgcHJvcFZhbHVlLCBwcmV2aW91cykge1xuICAgIGlmIChwcmV2aW91cykge1xuICAgICAgICB2YXIgcHJldmlvdXNWYWx1ZSA9IHByZXZpb3VzW3Byb3BOYW1lXVxuXG4gICAgICAgIGlmICghaXNIb29rKHByZXZpb3VzVmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAocHJvcE5hbWUgPT09IFwiYXR0cmlidXRlc1wiKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgYXR0ck5hbWUgaW4gcHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BOYW1lID09PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5zdHlsZVtpXSA9IFwiXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcmV2aW91c1ZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBcIlwiXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHByZXZpb3VzVmFsdWUudW5ob29rKSB7XG4gICAgICAgICAgICBwcmV2aW91c1ZhbHVlLnVuaG9vayhub2RlLCBwcm9wTmFtZSwgcHJvcFZhbHVlKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBwYXRjaE9iamVjdChub2RlLCBwcm9wcywgcHJldmlvdXMsIHByb3BOYW1lLCBwcm9wVmFsdWUpIHtcbiAgICB2YXIgcHJldmlvdXNWYWx1ZSA9IHByZXZpb3VzID8gcHJldmlvdXNbcHJvcE5hbWVdIDogdW5kZWZpbmVkXG5cbiAgICAvLyBTZXQgYXR0cmlidXRlc1xuICAgIGlmIChwcm9wTmFtZSA9PT0gXCJhdHRyaWJ1dGVzXCIpIHtcbiAgICAgICAgZm9yICh2YXIgYXR0ck5hbWUgaW4gcHJvcFZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgYXR0clZhbHVlID0gcHJvcFZhbHVlW2F0dHJOYW1lXVxuXG4gICAgICAgICAgICBpZiAoYXR0clZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIGF0dHJWYWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmKHByZXZpb3VzVmFsdWUgJiYgaXNPYmplY3QocHJldmlvdXNWYWx1ZSkgJiZcbiAgICAgICAgZ2V0UHJvdG90eXBlKHByZXZpb3VzVmFsdWUpICE9PSBnZXRQcm90b3R5cGUocHJvcFZhbHVlKSkge1xuICAgICAgICBub2RlW3Byb3BOYW1lXSA9IHByb3BWYWx1ZVxuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIWlzT2JqZWN0KG5vZGVbcHJvcE5hbWVdKSkge1xuICAgICAgICBub2RlW3Byb3BOYW1lXSA9IHt9XG4gICAgfVxuXG4gICAgdmFyIHJlcGxhY2VyID0gcHJvcE5hbWUgPT09IFwic3R5bGVcIiA/IFwiXCIgOiB1bmRlZmluZWRcblxuICAgIGZvciAodmFyIGsgaW4gcHJvcFZhbHVlKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHByb3BWYWx1ZVtrXVxuICAgICAgICBub2RlW3Byb3BOYW1lXVtrXSA9ICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IHJlcGxhY2VyIDogdmFsdWVcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldFByb3RvdHlwZSh2YWx1ZSkge1xuICAgIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSlcbiAgICB9IGVsc2UgaWYgKHZhbHVlLl9fcHJvdG9fXykge1xuICAgICAgICByZXR1cm4gdmFsdWUuX19wcm90b19fXG4gICAgfSBlbHNlIGlmICh2YWx1ZS5jb25zdHJ1Y3Rvcikge1xuICAgICAgICByZXR1cm4gdmFsdWUuY29uc3RydWN0b3IucHJvdG90eXBlXG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXZob29rLmpzXCI6MzgsXCJpcy1vYmplY3RcIjoyMH1dLDI0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoXCJnbG9iYWwvZG9jdW1lbnRcIilcblxudmFyIGFwcGx5UHJvcGVydGllcyA9IHJlcXVpcmUoXCIuL2FwcGx5LXByb3BlcnRpZXNcIilcblxudmFyIGlzVk5vZGUgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdm5vZGUuanNcIilcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZ0ZXh0LmpzXCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCIpXG52YXIgaGFuZGxlVGh1bmsgPSByZXF1aXJlKFwiLi4vdm5vZGUvaGFuZGxlLXRodW5rLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlRWxlbWVudFxuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50KHZub2RlLCBvcHRzKSB7XG4gICAgdmFyIGRvYyA9IG9wdHMgPyBvcHRzLmRvY3VtZW50IHx8IGRvY3VtZW50IDogZG9jdW1lbnRcbiAgICB2YXIgd2FybiA9IG9wdHMgPyBvcHRzLndhcm4gOiBudWxsXG5cbiAgICB2bm9kZSA9IGhhbmRsZVRodW5rKHZub2RlKS5hXG5cbiAgICBpZiAoaXNXaWRnZXQodm5vZGUpKSB7XG4gICAgICAgIHJldHVybiB2bm9kZS5pbml0KClcbiAgICB9IGVsc2UgaWYgKGlzVlRleHQodm5vZGUpKSB7XG4gICAgICAgIHJldHVybiBkb2MuY3JlYXRlVGV4dE5vZGUodm5vZGUudGV4dClcbiAgICB9IGVsc2UgaWYgKCFpc1ZOb2RlKHZub2RlKSkge1xuICAgICAgICBpZiAod2Fybikge1xuICAgICAgICAgICAgd2FybihcIkl0ZW0gaXMgbm90IGEgdmFsaWQgdmlydHVhbCBkb20gbm9kZVwiLCB2bm9kZSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHZhciBub2RlID0gKHZub2RlLm5hbWVzcGFjZSA9PT0gbnVsbCkgP1xuICAgICAgICBkb2MuY3JlYXRlRWxlbWVudCh2bm9kZS50YWdOYW1lKSA6XG4gICAgICAgIGRvYy5jcmVhdGVFbGVtZW50TlModm5vZGUubmFtZXNwYWNlLCB2bm9kZS50YWdOYW1lKVxuXG4gICAgdmFyIHByb3BzID0gdm5vZGUucHJvcGVydGllc1xuICAgIGFwcGx5UHJvcGVydGllcyhub2RlLCBwcm9wcylcblxuICAgIHZhciBjaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZE5vZGUgPSBjcmVhdGVFbGVtZW50KGNoaWxkcmVuW2ldLCBvcHRzKVxuICAgICAgICBpZiAoY2hpbGROb2RlKSB7XG4gICAgICAgICAgICBub2RlLmFwcGVuZENoaWxkKGNoaWxkTm9kZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub2RlXG59XG5cbn0se1wiLi4vdm5vZGUvaGFuZGxlLXRodW5rLmpzXCI6MzYsXCIuLi92bm9kZS9pcy12bm9kZS5qc1wiOjM5LFwiLi4vdm5vZGUvaXMtdnRleHQuanNcIjo0MCxcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiOjQxLFwiLi9hcHBseS1wcm9wZXJ0aWVzXCI6MjMsXCJnbG9iYWwvZG9jdW1lbnRcIjo3fV0sMjU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuLy8gTWFwcyBhIHZpcnR1YWwgRE9NIHRyZWUgb250byBhIHJlYWwgRE9NIHRyZWUgaW4gYW4gZWZmaWNpZW50IG1hbm5lci5cbi8vIFdlIGRvbid0IHdhbnQgdG8gcmVhZCBhbGwgb2YgdGhlIERPTSBub2RlcyBpbiB0aGUgdHJlZSBzbyB3ZSB1c2Vcbi8vIHRoZSBpbi1vcmRlciB0cmVlIGluZGV4aW5nIHRvIGVsaW1pbmF0ZSByZWN1cnNpb24gZG93biBjZXJ0YWluIGJyYW5jaGVzLlxuLy8gV2Ugb25seSByZWN1cnNlIGludG8gYSBET00gbm9kZSBpZiB3ZSBrbm93IHRoYXQgaXQgY29udGFpbnMgYSBjaGlsZCBvZlxuLy8gaW50ZXJlc3QuXG5cbnZhciBub0NoaWxkID0ge31cblxubW9kdWxlLmV4cG9ydHMgPSBkb21JbmRleFxuXG5mdW5jdGlvbiBkb21JbmRleChyb290Tm9kZSwgdHJlZSwgaW5kaWNlcywgbm9kZXMpIHtcbiAgICBpZiAoIWluZGljZXMgfHwgaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHt9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaW5kaWNlcy5zb3J0KGFzY2VuZGluZylcbiAgICAgICAgcmV0dXJuIHJlY3Vyc2Uocm9vdE5vZGUsIHRyZWUsIGluZGljZXMsIG5vZGVzLCAwKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVjdXJzZShyb290Tm9kZSwgdHJlZSwgaW5kaWNlcywgbm9kZXMsIHJvb3RJbmRleCkge1xuICAgIG5vZGVzID0gbm9kZXMgfHwge31cblxuXG4gICAgaWYgKHJvb3ROb2RlKSB7XG4gICAgICAgIGlmIChpbmRleEluUmFuZ2UoaW5kaWNlcywgcm9vdEluZGV4LCByb290SW5kZXgpKSB7XG4gICAgICAgICAgICBub2Rlc1tyb290SW5kZXhdID0gcm9vdE5vZGVcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB2Q2hpbGRyZW4gPSB0cmVlLmNoaWxkcmVuXG5cbiAgICAgICAgaWYgKHZDaGlsZHJlbikge1xuXG4gICAgICAgICAgICB2YXIgY2hpbGROb2RlcyA9IHJvb3ROb2RlLmNoaWxkTm9kZXNcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmVlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcm9vdEluZGV4ICs9IDFcblxuICAgICAgICAgICAgICAgIHZhciB2Q2hpbGQgPSB2Q2hpbGRyZW5baV0gfHwgbm9DaGlsZFxuICAgICAgICAgICAgICAgIHZhciBuZXh0SW5kZXggPSByb290SW5kZXggKyAodkNoaWxkLmNvdW50IHx8IDApXG5cbiAgICAgICAgICAgICAgICAvLyBza2lwIHJlY3Vyc2lvbiBkb3duIHRoZSB0cmVlIGlmIHRoZXJlIGFyZSBubyBub2RlcyBkb3duIGhlcmVcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXhJblJhbmdlKGluZGljZXMsIHJvb3RJbmRleCwgbmV4dEluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICByZWN1cnNlKGNoaWxkTm9kZXNbaV0sIHZDaGlsZCwgaW5kaWNlcywgbm9kZXMsIHJvb3RJbmRleClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByb290SW5kZXggPSBuZXh0SW5kZXhcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub2Rlc1xufVxuXG4vLyBCaW5hcnkgc2VhcmNoIGZvciBhbiBpbmRleCBpbiB0aGUgaW50ZXJ2YWwgW2xlZnQsIHJpZ2h0XVxuZnVuY3Rpb24gaW5kZXhJblJhbmdlKGluZGljZXMsIGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGluZGljZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHZhciBtaW5JbmRleCA9IDBcbiAgICB2YXIgbWF4SW5kZXggPSBpbmRpY2VzLmxlbmd0aCAtIDFcbiAgICB2YXIgY3VycmVudEluZGV4XG4gICAgdmFyIGN1cnJlbnRJdGVtXG5cbiAgICB3aGlsZSAobWluSW5kZXggPD0gbWF4SW5kZXgpIHtcbiAgICAgICAgY3VycmVudEluZGV4ID0gKChtYXhJbmRleCArIG1pbkluZGV4KSAvIDIpID4+IDBcbiAgICAgICAgY3VycmVudEl0ZW0gPSBpbmRpY2VzW2N1cnJlbnRJbmRleF1cblxuICAgICAgICBpZiAobWluSW5kZXggPT09IG1heEluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudEl0ZW0gPj0gbGVmdCAmJiBjdXJyZW50SXRlbSA8PSByaWdodFxuICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRJdGVtIDwgbGVmdCkge1xuICAgICAgICAgICAgbWluSW5kZXggPSBjdXJyZW50SW5kZXggKyAxXG4gICAgICAgIH0gZWxzZSAgaWYgKGN1cnJlbnRJdGVtID4gcmlnaHQpIHtcbiAgICAgICAgICAgIG1heEluZGV4ID0gY3VycmVudEluZGV4IC0gMVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gYXNjZW5kaW5nKGEsIGIpIHtcbiAgICByZXR1cm4gYSA+IGIgPyAxIDogLTFcbn1cblxufSx7fV0sMjY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGFwcGx5UHJvcGVydGllcyA9IHJlcXVpcmUoXCIuL2FwcGx5LXByb3BlcnRpZXNcIilcblxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiKVxudmFyIFZQYXRjaCA9IHJlcXVpcmUoXCIuLi92bm9kZS92cGF0Y2guanNcIilcblxudmFyIHVwZGF0ZVdpZGdldCA9IHJlcXVpcmUoXCIuL3VwZGF0ZS13aWRnZXRcIilcblxubW9kdWxlLmV4cG9ydHMgPSBhcHBseVBhdGNoXG5cbmZ1bmN0aW9uIGFwcGx5UGF0Y2godnBhdGNoLCBkb21Ob2RlLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHR5cGUgPSB2cGF0Y2gudHlwZVxuICAgIHZhciB2Tm9kZSA9IHZwYXRjaC52Tm9kZVxuICAgIHZhciBwYXRjaCA9IHZwYXRjaC5wYXRjaFxuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgVlBhdGNoLlJFTU9WRTpcbiAgICAgICAgICAgIHJldHVybiByZW1vdmVOb2RlKGRvbU5vZGUsIHZOb2RlKVxuICAgICAgICBjYXNlIFZQYXRjaC5JTlNFUlQ6XG4gICAgICAgICAgICByZXR1cm4gaW5zZXJ0Tm9kZShkb21Ob2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucylcbiAgICAgICAgY2FzZSBWUGF0Y2guVlRFWFQ6XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nUGF0Y2goZG9tTm9kZSwgdk5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5XSURHRVQ6XG4gICAgICAgICAgICByZXR1cm4gd2lkZ2V0UGF0Y2goZG9tTm9kZSwgdk5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5WTk9ERTpcbiAgICAgICAgICAgIHJldHVybiB2Tm9kZVBhdGNoKGRvbU5vZGUsIHZOb2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucylcbiAgICAgICAgY2FzZSBWUGF0Y2guT1JERVI6XG4gICAgICAgICAgICByZW9yZGVyQ2hpbGRyZW4oZG9tTm9kZSwgcGF0Y2gpXG4gICAgICAgICAgICByZXR1cm4gZG9tTm9kZVxuICAgICAgICBjYXNlIFZQYXRjaC5QUk9QUzpcbiAgICAgICAgICAgIGFwcGx5UHJvcGVydGllcyhkb21Ob2RlLCBwYXRjaCwgdk5vZGUucHJvcGVydGllcylcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgICAgIGNhc2UgVlBhdGNoLlRIVU5LOlxuICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VSb290KGRvbU5vZGUsXG4gICAgICAgICAgICAgICAgcmVuZGVyT3B0aW9ucy5wYXRjaChkb21Ob2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucykpXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZG9tTm9kZVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlTm9kZShkb21Ob2RlLCB2Tm9kZSkge1xuICAgIHZhciBwYXJlbnROb2RlID0gZG9tTm9kZS5wYXJlbnROb2RlXG5cbiAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRvbU5vZGUpXG4gICAgfVxuXG4gICAgZGVzdHJveVdpZGdldChkb21Ob2RlLCB2Tm9kZSk7XG5cbiAgICByZXR1cm4gbnVsbFxufVxuXG5mdW5jdGlvbiBpbnNlcnROb2RlKHBhcmVudE5vZGUsIHZOb2RlLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIG5ld05vZGUgPSByZW5kZXJPcHRpb25zLnJlbmRlcih2Tm9kZSwgcmVuZGVyT3B0aW9ucylcblxuICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQobmV3Tm9kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyZW50Tm9kZVxufVxuXG5mdW5jdGlvbiBzdHJpbmdQYXRjaChkb21Ob2RlLCBsZWZ0Vk5vZGUsIHZUZXh0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIG5ld05vZGVcblxuICAgIGlmIChkb21Ob2RlLm5vZGVUeXBlID09PSAzKSB7XG4gICAgICAgIGRvbU5vZGUucmVwbGFjZURhdGEoMCwgZG9tTm9kZS5sZW5ndGgsIHZUZXh0LnRleHQpXG4gICAgICAgIG5ld05vZGUgPSBkb21Ob2RlXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcbiAgICAgICAgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZUZXh0LCByZW5kZXJPcHRpb25zKVxuXG4gICAgICAgIGlmIChwYXJlbnROb2RlICYmIG5ld05vZGUgIT09IGRvbU5vZGUpIHtcbiAgICAgICAgICAgIHBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld05vZGUsIGRvbU5vZGUpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Tm9kZVxufVxuXG5mdW5jdGlvbiB3aWRnZXRQYXRjaChkb21Ob2RlLCBsZWZ0Vk5vZGUsIHdpZGdldCwgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciB1cGRhdGluZyA9IHVwZGF0ZVdpZGdldChsZWZ0Vk5vZGUsIHdpZGdldClcbiAgICB2YXIgbmV3Tm9kZVxuXG4gICAgaWYgKHVwZGF0aW5nKSB7XG4gICAgICAgIG5ld05vZGUgPSB3aWRnZXQudXBkYXRlKGxlZnRWTm9kZSwgZG9tTm9kZSkgfHwgZG9tTm9kZVxuICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld05vZGUgPSByZW5kZXJPcHRpb25zLnJlbmRlcih3aWRnZXQsIHJlbmRlck9wdGlvbnMpXG4gICAgfVxuXG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcblxuICAgIGlmIChwYXJlbnROb2RlICYmIG5ld05vZGUgIT09IGRvbU5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgZG9tTm9kZSlcbiAgICB9XG5cbiAgICBpZiAoIXVwZGF0aW5nKSB7XG4gICAgICAgIGRlc3Ryb3lXaWRnZXQoZG9tTm9kZSwgbGVmdFZOb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIHZOb2RlUGF0Y2goZG9tTm9kZSwgbGVmdFZOb2RlLCB2Tm9kZSwgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciBwYXJlbnROb2RlID0gZG9tTm9kZS5wYXJlbnROb2RlXG4gICAgdmFyIG5ld05vZGUgPSByZW5kZXJPcHRpb25zLnJlbmRlcih2Tm9kZSwgcmVuZGVyT3B0aW9ucylcblxuICAgIGlmIChwYXJlbnROb2RlICYmIG5ld05vZGUgIT09IGRvbU5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgZG9tTm9kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Tm9kZVxufVxuXG5mdW5jdGlvbiBkZXN0cm95V2lkZ2V0KGRvbU5vZGUsIHcpIHtcbiAgICBpZiAodHlwZW9mIHcuZGVzdHJveSA9PT0gXCJmdW5jdGlvblwiICYmIGlzV2lkZ2V0KHcpKSB7XG4gICAgICAgIHcuZGVzdHJveShkb21Ob2RlKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVvcmRlckNoaWxkcmVuKGRvbU5vZGUsIG1vdmVzKSB7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBkb21Ob2RlLmNoaWxkTm9kZXNcbiAgICB2YXIga2V5TWFwID0ge31cbiAgICB2YXIgbm9kZVxuICAgIHZhciByZW1vdmVcbiAgICB2YXIgaW5zZXJ0XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1vdmVzLnJlbW92ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVtb3ZlID0gbW92ZXMucmVtb3Zlc1tpXVxuICAgICAgICBub2RlID0gY2hpbGROb2Rlc1tyZW1vdmUuZnJvbV1cbiAgICAgICAgaWYgKHJlbW92ZS5rZXkpIHtcbiAgICAgICAgICAgIGtleU1hcFtyZW1vdmUua2V5XSA9IG5vZGVcbiAgICAgICAgfVxuICAgICAgICBkb21Ob2RlLnJlbW92ZUNoaWxkKG5vZGUpXG4gICAgfVxuXG4gICAgdmFyIGxlbmd0aCA9IGNoaWxkTm9kZXMubGVuZ3RoXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBtb3Zlcy5pbnNlcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGluc2VydCA9IG1vdmVzLmluc2VydHNbal1cbiAgICAgICAgbm9kZSA9IGtleU1hcFtpbnNlcnQua2V5XVxuICAgICAgICAvLyB0aGlzIGlzIHRoZSB3ZWlyZGVzdCBidWcgaSd2ZSBldmVyIHNlZW4gaW4gd2Via2l0XG4gICAgICAgIGRvbU5vZGUuaW5zZXJ0QmVmb3JlKG5vZGUsIGluc2VydC50byA+PSBsZW5ndGgrKyA/IG51bGwgOiBjaGlsZE5vZGVzW2luc2VydC50b10pXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZXBsYWNlUm9vdChvbGRSb290LCBuZXdSb290KSB7XG4gICAgaWYgKG9sZFJvb3QgJiYgbmV3Um9vdCAmJiBvbGRSb290ICE9PSBuZXdSb290ICYmIG9sZFJvb3QucGFyZW50Tm9kZSkge1xuICAgICAgICBvbGRSb290LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld1Jvb3QsIG9sZFJvb3QpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld1Jvb3Q7XG59XG5cbn0se1wiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDEsXCIuLi92bm9kZS92cGF0Y2guanNcIjo0NCxcIi4vYXBwbHktcHJvcGVydGllc1wiOjIzLFwiLi91cGRhdGUtd2lkZ2V0XCI6Mjh9XSwyNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKFwiZ2xvYmFsL2RvY3VtZW50XCIpXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoXCJ4LWlzLWFycmF5XCIpXG5cbnZhciByZW5kZXIgPSByZXF1aXJlKFwiLi9jcmVhdGUtZWxlbWVudFwiKVxudmFyIGRvbUluZGV4ID0gcmVxdWlyZShcIi4vZG9tLWluZGV4XCIpXG52YXIgcGF0Y2hPcCA9IHJlcXVpcmUoXCIuL3BhdGNoLW9wXCIpXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGNoXG5cbmZ1bmN0aW9uIHBhdGNoKHJvb3ROb2RlLCBwYXRjaGVzLCByZW5kZXJPcHRpb25zKSB7XG4gICAgcmVuZGVyT3B0aW9ucyA9IHJlbmRlck9wdGlvbnMgfHwge31cbiAgICByZW5kZXJPcHRpb25zLnBhdGNoID0gcmVuZGVyT3B0aW9ucy5wYXRjaCAmJiByZW5kZXJPcHRpb25zLnBhdGNoICE9PSBwYXRjaFxuICAgICAgICA/IHJlbmRlck9wdGlvbnMucGF0Y2hcbiAgICAgICAgOiBwYXRjaFJlY3Vyc2l2ZVxuICAgIHJlbmRlck9wdGlvbnMucmVuZGVyID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIgfHwgcmVuZGVyXG5cbiAgICByZXR1cm4gcmVuZGVyT3B0aW9ucy5wYXRjaChyb290Tm9kZSwgcGF0Y2hlcywgcmVuZGVyT3B0aW9ucylcbn1cblxuZnVuY3Rpb24gcGF0Y2hSZWN1cnNpdmUocm9vdE5vZGUsIHBhdGNoZXMsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgaW5kaWNlcyA9IHBhdGNoSW5kaWNlcyhwYXRjaGVzKVxuXG4gICAgaWYgKGluZGljZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiByb290Tm9kZVxuICAgIH1cblxuICAgIHZhciBpbmRleCA9IGRvbUluZGV4KHJvb3ROb2RlLCBwYXRjaGVzLmEsIGluZGljZXMpXG4gICAgdmFyIG93bmVyRG9jdW1lbnQgPSByb290Tm9kZS5vd25lckRvY3VtZW50XG5cbiAgICBpZiAoIXJlbmRlck9wdGlvbnMuZG9jdW1lbnQgJiYgb3duZXJEb2N1bWVudCAhPT0gZG9jdW1lbnQpIHtcbiAgICAgICAgcmVuZGVyT3B0aW9ucy5kb2N1bWVudCA9IG93bmVyRG9jdW1lbnRcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5vZGVJbmRleCA9IGluZGljZXNbaV1cbiAgICAgICAgcm9vdE5vZGUgPSBhcHBseVBhdGNoKHJvb3ROb2RlLFxuICAgICAgICAgICAgaW5kZXhbbm9kZUluZGV4XSxcbiAgICAgICAgICAgIHBhdGNoZXNbbm9kZUluZGV4XSxcbiAgICAgICAgICAgIHJlbmRlck9wdGlvbnMpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJvb3ROb2RlXG59XG5cbmZ1bmN0aW9uIGFwcGx5UGF0Y2gocm9vdE5vZGUsIGRvbU5vZGUsIHBhdGNoTGlzdCwgcmVuZGVyT3B0aW9ucykge1xuICAgIGlmICghZG9tTm9kZSkge1xuICAgICAgICByZXR1cm4gcm9vdE5vZGVcbiAgICB9XG5cbiAgICB2YXIgbmV3Tm9kZVxuXG4gICAgaWYgKGlzQXJyYXkocGF0Y2hMaXN0KSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGNoTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbmV3Tm9kZSA9IHBhdGNoT3AocGF0Y2hMaXN0W2ldLCBkb21Ob2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgICAgICAgICBpZiAoZG9tTm9kZSA9PT0gcm9vdE5vZGUpIHtcbiAgICAgICAgICAgICAgICByb290Tm9kZSA9IG5ld05vZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld05vZGUgPSBwYXRjaE9wKHBhdGNoTGlzdCwgZG9tTm9kZSwgcmVuZGVyT3B0aW9ucylcblxuICAgICAgICBpZiAoZG9tTm9kZSA9PT0gcm9vdE5vZGUpIHtcbiAgICAgICAgICAgIHJvb3ROb2RlID0gbmV3Tm9kZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvb3ROb2RlXG59XG5cbmZ1bmN0aW9uIHBhdGNoSW5kaWNlcyhwYXRjaGVzKSB7XG4gICAgdmFyIGluZGljZXMgPSBbXVxuXG4gICAgZm9yICh2YXIga2V5IGluIHBhdGNoZXMpIHtcbiAgICAgICAgaWYgKGtleSAhPT0gXCJhXCIpIHtcbiAgICAgICAgICAgIGluZGljZXMucHVzaChOdW1iZXIoa2V5KSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpbmRpY2VzXG59XG5cbn0se1wiLi9jcmVhdGUtZWxlbWVudFwiOjI0LFwiLi9kb20taW5kZXhcIjoyNSxcIi4vcGF0Y2gtb3BcIjoyNixcImdsb2JhbC9kb2N1bWVudFwiOjcsXCJ4LWlzLWFycmF5XCI6MjF9XSwyODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gdXBkYXRlV2lkZ2V0XG5cbmZ1bmN0aW9uIHVwZGF0ZVdpZGdldChhLCBiKSB7XG4gICAgaWYgKGlzV2lkZ2V0KGEpICYmIGlzV2lkZ2V0KGIpKSB7XG4gICAgICAgIGlmIChcIm5hbWVcIiBpbiBhICYmIFwibmFtZVwiIGluIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBhLmlkID09PSBiLmlkXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYS5pbml0ID09PSBiLmluaXRcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiOjQxfV0sMjk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEF0dHJpYnV0ZUhvb2s7XG5cbmZ1bmN0aW9uIEF0dHJpYnV0ZUhvb2sobmFtZXNwYWNlLCB2YWx1ZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBBdHRyaWJ1dGVIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IEF0dHJpYnV0ZUhvb2sobmFtZXNwYWNlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xufVxuXG5BdHRyaWJ1dGVIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3AsIHByZXYpIHtcbiAgICBpZiAocHJldiAmJiBwcmV2LnR5cGUgPT09ICdBdHRyaWJ1dGVIb29rJyAmJlxuICAgICAgICBwcmV2LnZhbHVlID09PSB0aGlzLnZhbHVlICYmXG4gICAgICAgIHByZXYubmFtZXNwYWNlID09PSB0aGlzLm5hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbm9kZS5zZXRBdHRyaWJ1dGVOUyh0aGlzLm5hbWVzcGFjZSwgcHJvcCwgdGhpcy52YWx1ZSk7XG59O1xuXG5BdHRyaWJ1dGVIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcCwgbmV4dCkge1xuICAgIGlmIChuZXh0ICYmIG5leHQudHlwZSA9PT0gJ0F0dHJpYnV0ZUhvb2snICYmXG4gICAgICAgIG5leHQubmFtZXNwYWNlID09PSB0aGlzLm5hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGNvbG9uUG9zaXRpb24gPSBwcm9wLmluZGV4T2YoJzonKTtcbiAgICB2YXIgbG9jYWxOYW1lID0gY29sb25Qb3NpdGlvbiA+IC0xID8gcHJvcC5zdWJzdHIoY29sb25Qb3NpdGlvbiArIDEpIDogcHJvcDtcbiAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZU5TKHRoaXMubmFtZXNwYWNlLCBsb2NhbE5hbWUpO1xufTtcblxuQXR0cmlidXRlSG9vay5wcm90b3R5cGUudHlwZSA9ICdBdHRyaWJ1dGVIb29rJztcblxufSx7fV0sMzA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZTdG9yZSA9IHJlcXVpcmUoJ2V2LXN0b3JlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gRXZIb29rO1xuXG5mdW5jdGlvbiBFdkhvb2sodmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRXZIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IEV2SG9vayh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xufVxuXG5Fdkhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgdmFyIGVzID0gRXZTdG9yZShub2RlKTtcbiAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eU5hbWUuc3Vic3RyKDMpO1xuXG4gICAgZXNbcHJvcE5hbWVdID0gdGhpcy52YWx1ZTtcbn07XG5cbkV2SG9vay5wcm90b3R5cGUudW5ob29rID0gZnVuY3Rpb24obm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgdmFyIGVzID0gRXZTdG9yZShub2RlKTtcbiAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eU5hbWUuc3Vic3RyKDMpO1xuXG4gICAgZXNbcHJvcE5hbWVdID0gdW5kZWZpbmVkO1xufTtcblxufSx7XCJldi1zdG9yZVwiOjR9XSwzMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gU29mdFNldEhvb2s7XG5cbmZ1bmN0aW9uIFNvZnRTZXRIb29rKHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNvZnRTZXRIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IFNvZnRTZXRIb29rKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cblNvZnRTZXRIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BlcnR5TmFtZSkge1xuICAgIGlmIChub2RlW3Byb3BlcnR5TmFtZV0gIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgbm9kZVtwcm9wZXJ0eU5hbWVdID0gdGhpcy52YWx1ZTtcbiAgICB9XG59O1xuXG59LHt9XSwzMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBpc0FycmF5ID0gcmVxdWlyZSgneC1pcy1hcnJheScpO1xuXG52YXIgVk5vZGUgPSByZXF1aXJlKCcuLi92bm9kZS92bm9kZS5qcycpO1xudmFyIFZUZXh0ID0gcmVxdWlyZSgnLi4vdm5vZGUvdnRleHQuanMnKTtcbnZhciBpc1ZOb2RlID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdm5vZGUnKTtcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdnRleHQnKTtcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXdpZGdldCcpO1xudmFyIGlzSG9vayA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXZob29rJyk7XG52YXIgaXNWVGh1bmsgPSByZXF1aXJlKCcuLi92bm9kZS9pcy10aHVuaycpO1xuXG52YXIgcGFyc2VUYWcgPSByZXF1aXJlKCcuL3BhcnNlLXRhZy5qcycpO1xudmFyIHNvZnRTZXRIb29rID0gcmVxdWlyZSgnLi9ob29rcy9zb2Z0LXNldC1ob29rLmpzJyk7XG52YXIgZXZIb29rID0gcmVxdWlyZSgnLi9ob29rcy9ldi1ob29rLmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gaDtcblxuZnVuY3Rpb24gaCh0YWdOYW1lLCBwcm9wZXJ0aWVzLCBjaGlsZHJlbikge1xuICAgIHZhciBjaGlsZE5vZGVzID0gW107XG4gICAgdmFyIHRhZywgcHJvcHMsIGtleSwgbmFtZXNwYWNlO1xuXG4gICAgaWYgKCFjaGlsZHJlbiAmJiBpc0NoaWxkcmVuKHByb3BlcnRpZXMpKSB7XG4gICAgICAgIGNoaWxkcmVuID0gcHJvcGVydGllcztcbiAgICAgICAgcHJvcHMgPSB7fTtcbiAgICB9XG5cbiAgICBwcm9wcyA9IHByb3BzIHx8IHByb3BlcnRpZXMgfHwge307XG4gICAgdGFnID0gcGFyc2VUYWcodGFnTmFtZSwgcHJvcHMpO1xuXG4gICAgLy8gc3VwcG9ydCBrZXlzXG4gICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KCdrZXknKSkge1xuICAgICAgICBrZXkgPSBwcm9wcy5rZXk7XG4gICAgICAgIHByb3BzLmtleSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0IG5hbWVzcGFjZVxuICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eSgnbmFtZXNwYWNlJykpIHtcbiAgICAgICAgbmFtZXNwYWNlID0gcHJvcHMubmFtZXNwYWNlO1xuICAgICAgICBwcm9wcy5uYW1lc3BhY2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gZml4IGN1cnNvciBidWdcbiAgICBpZiAodGFnID09PSAnSU5QVVQnICYmXG4gICAgICAgICFuYW1lc3BhY2UgJiZcbiAgICAgICAgcHJvcHMuaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykgJiZcbiAgICAgICAgcHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAhaXNIb29rKHByb3BzLnZhbHVlKVxuICAgICkge1xuICAgICAgICBwcm9wcy52YWx1ZSA9IHNvZnRTZXRIb29rKHByb3BzLnZhbHVlKTtcbiAgICB9XG5cbiAgICB0cmFuc2Zvcm1Qcm9wZXJ0aWVzKHByb3BzKTtcblxuICAgIGlmIChjaGlsZHJlbiAhPT0gdW5kZWZpbmVkICYmIGNoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgICAgIGFkZENoaWxkKGNoaWxkcmVuLCBjaGlsZE5vZGVzLCB0YWcsIHByb3BzKTtcbiAgICB9XG5cblxuICAgIHJldHVybiBuZXcgVk5vZGUodGFnLCBwcm9wcywgY2hpbGROb2Rlcywga2V5LCBuYW1lc3BhY2UpO1xufVxuXG5mdW5jdGlvbiBhZGRDaGlsZChjLCBjaGlsZE5vZGVzLCB0YWcsIHByb3BzKSB7XG4gICAgaWYgKHR5cGVvZiBjID09PSAnc3RyaW5nJykge1xuICAgICAgICBjaGlsZE5vZGVzLnB1c2gobmV3IFZUZXh0KGMpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjID09PSAnbnVtYmVyJykge1xuICAgICAgICBjaGlsZE5vZGVzLnB1c2gobmV3IFZUZXh0KFN0cmluZyhjKSkpO1xuICAgIH0gZWxzZSBpZiAoaXNDaGlsZChjKSkge1xuICAgICAgICBjaGlsZE5vZGVzLnB1c2goYyk7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KGMpKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYWRkQ2hpbGQoY1tpXSwgY2hpbGROb2RlcywgdGFnLCBwcm9wcyk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGMgPT09IG51bGwgfHwgYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBVbmV4cGVjdGVkVmlydHVhbEVsZW1lbnQoe1xuICAgICAgICAgICAgZm9yZWlnbk9iamVjdDogYyxcbiAgICAgICAgICAgIHBhcmVudFZub2RlOiB7XG4gICAgICAgICAgICAgICAgdGFnTmFtZTogdGFnLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHByb3BzXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtUHJvcGVydGllcyhwcm9wcykge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcblxuICAgICAgICAgICAgaWYgKGlzSG9vayh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHByb3BOYW1lLnN1YnN0cigwLCAzKSA9PT0gJ2V2LScpIHtcbiAgICAgICAgICAgICAgICAvLyBhZGQgZXYtZm9vIHN1cHBvcnRcbiAgICAgICAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBldkhvb2sodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc0NoaWxkKHgpIHtcbiAgICByZXR1cm4gaXNWTm9kZSh4KSB8fCBpc1ZUZXh0KHgpIHx8IGlzV2lkZ2V0KHgpIHx8IGlzVlRodW5rKHgpO1xufVxuXG5mdW5jdGlvbiBpc0NoaWxkcmVuKHgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHggPT09ICdzdHJpbmcnIHx8IGlzQXJyYXkoeCkgfHwgaXNDaGlsZCh4KTtcbn1cblxuZnVuY3Rpb24gVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50KGRhdGEpIHtcbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKCk7XG5cbiAgICBlcnIudHlwZSA9ICd2aXJ0dWFsLWh5cGVyc2NyaXB0LnVuZXhwZWN0ZWQudmlydHVhbC1lbGVtZW50JztcbiAgICBlcnIubWVzc2FnZSA9ICdVbmV4cGVjdGVkIHZpcnR1YWwgY2hpbGQgcGFzc2VkIHRvIGgoKS5cXG4nICtcbiAgICAgICAgJ0V4cGVjdGVkIGEgVk5vZGUgLyBWdGh1bmsgLyBWV2lkZ2V0IC8gc3RyaW5nIGJ1dDpcXG4nICtcbiAgICAgICAgJ2dvdDpcXG4nICtcbiAgICAgICAgZXJyb3JTdHJpbmcoZGF0YS5mb3JlaWduT2JqZWN0KSArXG4gICAgICAgICcuXFxuJyArXG4gICAgICAgICdUaGUgcGFyZW50IHZub2RlIGlzOlxcbicgK1xuICAgICAgICBlcnJvclN0cmluZyhkYXRhLnBhcmVudFZub2RlKVxuICAgICAgICAnXFxuJyArXG4gICAgICAgICdTdWdnZXN0ZWQgZml4OiBjaGFuZ2UgeW91ciBgaCguLi4sIFsgLi4uIF0pYCBjYWxsc2l0ZS4nO1xuICAgIGVyci5mb3JlaWduT2JqZWN0ID0gZGF0YS5mb3JlaWduT2JqZWN0O1xuICAgIGVyci5wYXJlbnRWbm9kZSA9IGRhdGEucGFyZW50Vm5vZGU7XG5cbiAgICByZXR1cm4gZXJyO1xufVxuXG5mdW5jdGlvbiBlcnJvclN0cmluZyhvYmopIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqLCBudWxsLCAnICAgICcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyhvYmopO1xuICAgIH1cbn1cblxufSx7XCIuLi92bm9kZS9pcy10aHVua1wiOjM3LFwiLi4vdm5vZGUvaXMtdmhvb2tcIjozOCxcIi4uL3Zub2RlL2lzLXZub2RlXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dFwiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0XCI6NDEsXCIuLi92bm9kZS92bm9kZS5qc1wiOjQzLFwiLi4vdm5vZGUvdnRleHQuanNcIjo0NSxcIi4vaG9va3MvZXYtaG9vay5qc1wiOjMwLFwiLi9ob29rcy9zb2Z0LXNldC1ob29rLmpzXCI6MzEsXCIuL3BhcnNlLXRhZy5qc1wiOjMzLFwieC1pcy1hcnJheVwiOjIxfV0sMzM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgc3BsaXQgPSByZXF1aXJlKCdicm93c2VyLXNwbGl0Jyk7XG5cbnZhciBjbGFzc0lkU3BsaXQgPSAvKFtcXC4jXT9bYS16QS1aMC05XFx1MDA3Ri1cXHVGRkZGXzotXSspLztcbnZhciBub3RDbGFzc0lkID0gL15cXC58Iy87XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2VUYWc7XG5cbmZ1bmN0aW9uIHBhcnNlVGFnKHRhZywgcHJvcHMpIHtcbiAgICBpZiAoIXRhZykge1xuICAgICAgICByZXR1cm4gJ0RJVic7XG4gICAgfVxuXG4gICAgdmFyIG5vSWQgPSAhKHByb3BzLmhhc093blByb3BlcnR5KCdpZCcpKTtcblxuICAgIHZhciB0YWdQYXJ0cyA9IHNwbGl0KHRhZywgY2xhc3NJZFNwbGl0KTtcbiAgICB2YXIgdGFnTmFtZSA9IG51bGw7XG5cbiAgICBpZiAobm90Q2xhc3NJZC50ZXN0KHRhZ1BhcnRzWzFdKSkge1xuICAgICAgICB0YWdOYW1lID0gJ0RJVic7XG4gICAgfVxuXG4gICAgdmFyIGNsYXNzZXMsIHBhcnQsIHR5cGUsIGk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgdGFnUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcGFydCA9IHRhZ1BhcnRzW2ldO1xuXG4gICAgICAgIGlmICghcGFydCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB0eXBlID0gcGFydC5jaGFyQXQoMCk7XG5cbiAgICAgICAgaWYgKCF0YWdOYW1lKSB7XG4gICAgICAgICAgICB0YWdOYW1lID0gcGFydDtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnLicpIHtcbiAgICAgICAgICAgIGNsYXNzZXMgPSBjbGFzc2VzIHx8IFtdO1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKHBhcnQuc3Vic3RyaW5nKDEsIHBhcnQubGVuZ3RoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJyMnICYmIG5vSWQpIHtcbiAgICAgICAgICAgIHByb3BzLmlkID0gcGFydC5zdWJzdHJpbmcoMSwgcGFydC5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzZXMpIHtcbiAgICAgICAgaWYgKHByb3BzLmNsYXNzTmFtZSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKHByb3BzLmNsYXNzTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9wcy5jbGFzc05hbWUgPSBjbGFzc2VzLmpvaW4oJyAnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHMubmFtZXNwYWNlID8gdGFnTmFtZSA6IHRhZ05hbWUudG9VcHBlckNhc2UoKTtcbn1cblxufSx7XCJicm93c2VyLXNwbGl0XCI6M31dLDM0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIERFRkFVTFRfTkFNRVNQQUNFID0gbnVsbDtcbnZhciBFVl9OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMS94bWwtZXZlbnRzJztcbnZhciBYTElOS19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayc7XG52YXIgWE1MX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnO1xuXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkdUaW55MTIvYXR0cmlidXRlVGFibGUuaHRtbFxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2F0dGluZGV4Lmh0bWxcbnZhciBTVkdfUFJPUEVSVElFUyA9IHtcbiAgICAnYWJvdXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWNjZW50LWhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhY2N1bXVsYXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FkZGl0aXZlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FsaWdubWVudC1iYXNlbGluZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhbHBoYWJldGljJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FtcGxpdHVkZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhcmFiaWMtZm9ybSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhc2NlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXR0cmlidXRlTmFtZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhdHRyaWJ1dGVUeXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2F6aW11dGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFuZHdpZHRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Jhc2VGcmVxdWVuY3knOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFzZVByb2ZpbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFzZWxpbmUtc2hpZnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmJveCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiZWdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiaWFzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2J5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NhbGNNb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NhcC1oZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xhc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwLXBhdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcC1ydWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsaXBQYXRoVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3ItaW50ZXJwb2xhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3ItcHJvZmlsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1yZW5kZXJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29udGVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb250ZW50U2NyaXB0VHlwZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb250ZW50U3R5bGVUeXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N1cnNvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RhdGF0eXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RlZmF1bHRBY3Rpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGVzY2VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaWZmdXNlQ29uc3RhbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGlyZWN0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Rpc3BsYXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGl2aXNvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkb21pbmFudC1iYXNlbGluZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkdXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZHgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZWRnZU1vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZWRpdGFibGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZWxldmF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2VuYWJsZS1iYWNrZ3JvdW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2VuZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdldjpldmVudCc6IEVWX05BTUVTUEFDRSxcbiAgICAnZXZlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZXhwb25lbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWxsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwtb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWxsLXJ1bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsdGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbHRlclJlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWx0ZXJVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmbG9vZC1jb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmbG9vZC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvY3VzSGlnaGxpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvY3VzYWJsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LWZhbWlseSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXNpemUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC1zaXplLWFkanVzdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXN0cmV0Y2gnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC1zdHlsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXZhcmlhbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC13ZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9ybWF0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zyb20nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZngnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZnknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZzEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZzInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGgtbmFtZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoUmVmJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dyYWRpZW50VHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dyYWRpZW50VW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaGFuZGxlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdoYW5naW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdob3Jpei1hZHYteCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdob3Jpei1vcmlnaW4teCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdob3Jpei1vcmlnaW4teSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpZGVvZ3JhcGhpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbWFnZS1yZW5kZXJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW4yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2luaXRpYWxWaXNpYmlsaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ludGVyY2VwdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2sxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2syJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2szJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2s0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tlcm5lbE1hdHJpeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXJuZWxVbml0TGVuZ3RoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tlcm5pbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2V5UG9pbnRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tleVNwbGluZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2V5VGltZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGFuZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsZW5ndGhBZGp1c3QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGV0dGVyLXNwYWNpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGlnaHRpbmctY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGltaXRpbmdDb25lQW5nbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbG9jYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyLWVuZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXItbWlkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlci1zdGFydCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJIZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyV2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFzayc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXNrQ29udGVudFVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hc2tVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXRoZW1hdGljYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWF4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhQ2hhcmFjdGVyRW5jb2RpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFDb250ZW50RW5jb2RpbmdzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhU2l6ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYVRpbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWV0aG9kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21pbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LWRvd24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LWRvd24tbGVmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bi1yaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtbGVmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtbmV4dCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtcHJldic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtcmlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi11cC1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi11cC1yaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdudW1PY3RhdmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29ic2VydmVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29mZnNldCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29wZXJhdG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yZGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcmllbnRhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcmlnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3ZlcmZsb3cnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3ZlcmxheSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVybGluZS1wb3NpdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVybGluZS10aGlja25lc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGFub3NlLTEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXRoTGVuZ3RoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdHRlcm5Db250ZW50VW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0dGVyblRyYW5zZm9ybSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXR0ZXJuVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGhhc2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGxheWJhY2tPcmRlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludGVyLWV2ZW50cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRzQXRYJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50c0F0WSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHNBdFonOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJlc2VydmVBbHBoYSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ByaW1pdGl2ZVVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Byb3BhZ2F0ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcm9wZXJ0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JhZGl1cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZWZYJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlZlknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlbmRlcmluZy1pbnRlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVwZWF0Q291bnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVwZWF0RHVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRXh0ZW5zaW9ucyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXF1aXJlZEZlYXR1cmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRm9udHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRGb3JtYXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Jlc291cmNlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Jlc3RhcnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzdWx0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Jldic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyb2xlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JvdGF0ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzY2FsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzZWVkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NoYXBlLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzbG9wZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzbmFwc2hvdFRpbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3BhY2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcGVjdWxhckNvbnN0YW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NwZWN1bGFyRXhwb25lbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3ByZWFkTWV0aG9kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0YXJ0T2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZERldmlhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGVtaCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGVtdic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGl0Y2hUaWxlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdG9wLWNvbG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0b3Atb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJpa2V0aHJvdWdoLXBvc2l0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cmlrZXRocm91Z2gtdGhpY2tuZXNzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLWRhc2hhcnJheSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtZGFzaG9mZnNldCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtbGluZWNhcCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtbGluZWpvaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLW1pdGVybGltaXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLW9wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLXdpZHRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N1cmZhY2VTY2FsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jQmVoYXZpb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY0JlaGF2aW9yRGVmYXVsdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jTWFzdGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNUb2xlcmFuY2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY1RvbGVyYW5jZURlZmF1bHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3lzdGVtTGFuZ3VhZ2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFibGVWYWx1ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFyZ2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RhcmdldFgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFyZ2V0WSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0LWFuY2hvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0LWRlY29yYXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGV4dC1yZW5kZXJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGV4dExlbmd0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0aW1lbGluZUJlZ2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RpdGxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RvJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RyYW5zZm9ybSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0cmFuc2Zvcm1CZWhhdmlvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0eXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3R5cGVvZic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1MSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1Mic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmRlcmxpbmUtcG9zaXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5kZXJsaW5lLXRoaWNrbmVzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmljb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUtYmlkaSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmljb2RlLXJhbmdlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaXRzLXBlci1lbSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LWFscGhhYmV0aWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1oYW5naW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3YtaWRlb2dyYXBoaWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1tYXRoZW1hdGljYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmFsdWVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnNpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVydC1hZHYteSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2ZXJ0LW9yaWdpbi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnQtb3JpZ2luLXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmlld0JveCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2aWV3VGFyZ2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Zpc2liaWxpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd2lkdGhzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3dvcmQtc3BhY2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3cml0aW5nLW1vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4LWhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4MSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4Mic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4Q2hhbm5lbFNlbGVjdG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOmFjdHVhdGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOmFyY3JvbGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOmhyZWYnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnJvbGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnNob3cnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnRpdGxlJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bGluazp0eXBlJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bWw6YmFzZSc6IFhNTF9OQU1FU1BBQ0UsXG4gICAgJ3htbDppZCc6IFhNTF9OQU1FU1BBQ0UsXG4gICAgJ3htbDpsYW5nJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOnNwYWNlJzogWE1MX05BTUVTUEFDRSxcbiAgICAneSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd5MSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd5Mic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd5Q2hhbm5lbFNlbGVjdG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3onOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnem9vbUFuZFBhbic6IERFRkFVTFRfTkFNRVNQQUNFXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNWR0F0dHJpYnV0ZU5hbWVzcGFjZTtcblxuZnVuY3Rpb24gU1ZHQXR0cmlidXRlTmFtZXNwYWNlKHZhbHVlKSB7XG4gIGlmIChTVkdfUFJPUEVSVElFUy5oYXNPd25Qcm9wZXJ0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gU1ZHX1BST1BFUlRJRVNbdmFsdWVdO1xuICB9XG59XG5cbn0se31dLDM1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCd4LWlzLWFycmF5Jyk7XG5cbnZhciBoID0gcmVxdWlyZSgnLi9pbmRleC5qcycpO1xuXG5cbnZhciBTVkdBdHRyaWJ1dGVOYW1lc3BhY2UgPSByZXF1aXJlKCcuL3N2Zy1hdHRyaWJ1dGUtbmFtZXNwYWNlJyk7XG52YXIgYXR0cmlidXRlSG9vayA9IHJlcXVpcmUoJy4vaG9va3MvYXR0cmlidXRlLWhvb2snKTtcblxudmFyIFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN2ZztcblxuZnVuY3Rpb24gc3ZnKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKSB7XG4gICAgaWYgKCFjaGlsZHJlbiAmJiBpc0NoaWxkcmVuKHByb3BlcnRpZXMpKSB7XG4gICAgICAgIGNoaWxkcmVuID0gcHJvcGVydGllcztcbiAgICAgICAgcHJvcGVydGllcyA9IHt9O1xuICAgIH1cblxuICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzIHx8IHt9O1xuXG4gICAgLy8gc2V0IG5hbWVzcGFjZSBmb3Igc3ZnXG4gICAgcHJvcGVydGllcy5uYW1lc3BhY2UgPSBTVkdfTkFNRVNQQUNFO1xuXG4gICAgdmFyIGF0dHJpYnV0ZXMgPSBwcm9wZXJ0aWVzLmF0dHJpYnV0ZXMgfHwgKHByb3BlcnRpZXMuYXR0cmlidXRlcyA9IHt9KTtcblxuICAgIGZvciAodmFyIGtleSBpbiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgIGlmICghcHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuYW1lc3BhY2UgPSBTVkdBdHRyaWJ1dGVOYW1lc3BhY2Uoa2V5KTtcblxuICAgICAgICBpZiAobmFtZXNwYWNlID09PSB1bmRlZmluZWQpIHsgLy8gbm90IGEgc3ZnIGF0dHJpYnV0ZVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdmFsdWUgPSBwcm9wZXJ0aWVzW2tleV07XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmFtZXNwYWNlICE9PSBudWxsKSB7IC8vIG5hbWVzcGFjZWQgYXR0cmlidXRlXG4gICAgICAgICAgICBwcm9wZXJ0aWVzW2tleV0gPSBhdHRyaWJ1dGVIb29rKG5hbWVzcGFjZSwgdmFsdWUpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBhdHRyaWJ1dGVzW2tleV0gPSB2YWx1ZVxuICAgICAgICBwcm9wZXJ0aWVzW2tleV0gPSB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gaCh0YWdOYW1lLCBwcm9wZXJ0aWVzLCBjaGlsZHJlbik7XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGRyZW4oeCkge1xuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgfHwgaXNBcnJheSh4KTtcbn1cblxufSx7XCIuL2hvb2tzL2F0dHJpYnV0ZS1ob29rXCI6MjksXCIuL2luZGV4LmpzXCI6MzIsXCIuL3N2Zy1hdHRyaWJ1dGUtbmFtZXNwYWNlXCI6MzQsXCJ4LWlzLWFycmF5XCI6MjF9XSwzNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuL2lzLXZub2RlXCIpXG52YXIgaXNWVGV4dCA9IHJlcXVpcmUoXCIuL2lzLXZ0ZXh0XCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi9pcy13aWRnZXRcIilcbnZhciBpc1RodW5rID0gcmVxdWlyZShcIi4vaXMtdGh1bmtcIilcblxubW9kdWxlLmV4cG9ydHMgPSBoYW5kbGVUaHVua1xuXG5mdW5jdGlvbiBoYW5kbGVUaHVuayhhLCBiKSB7XG4gICAgdmFyIHJlbmRlcmVkQSA9IGFcbiAgICB2YXIgcmVuZGVyZWRCID0gYlxuXG4gICAgaWYgKGlzVGh1bmsoYikpIHtcbiAgICAgICAgcmVuZGVyZWRCID0gcmVuZGVyVGh1bmsoYiwgYSlcbiAgICB9XG5cbiAgICBpZiAoaXNUaHVuayhhKSkge1xuICAgICAgICByZW5kZXJlZEEgPSByZW5kZXJUaHVuayhhLCBudWxsKVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGE6IHJlbmRlcmVkQSxcbiAgICAgICAgYjogcmVuZGVyZWRCXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJUaHVuayh0aHVuaywgcHJldmlvdXMpIHtcbiAgICB2YXIgcmVuZGVyZWRUaHVuayA9IHRodW5rLnZub2RlXG5cbiAgICBpZiAoIXJlbmRlcmVkVGh1bmspIHtcbiAgICAgICAgcmVuZGVyZWRUaHVuayA9IHRodW5rLnZub2RlID0gdGh1bmsucmVuZGVyKHByZXZpb3VzKVxuICAgIH1cblxuICAgIGlmICghKGlzVk5vZGUocmVuZGVyZWRUaHVuaykgfHxcbiAgICAgICAgICAgIGlzVlRleHQocmVuZGVyZWRUaHVuaykgfHxcbiAgICAgICAgICAgIGlzV2lkZ2V0KHJlbmRlcmVkVGh1bmspKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0aHVuayBkaWQgbm90IHJldHVybiBhIHZhbGlkIG5vZGVcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbmRlcmVkVGh1bmtcbn1cblxufSx7XCIuL2lzLXRodW5rXCI6MzcsXCIuL2lzLXZub2RlXCI6MzksXCIuL2lzLXZ0ZXh0XCI6NDAsXCIuL2lzLXdpZGdldFwiOjQxfV0sMzc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBpc1RodW5rXHJcblxyXG5mdW5jdGlvbiBpc1RodW5rKHQpIHtcclxuICAgIHJldHVybiB0ICYmIHQudHlwZSA9PT0gXCJUaHVua1wiXHJcbn1cclxuXG59LHt9XSwzODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGlzSG9va1xuXG5mdW5jdGlvbiBpc0hvb2soaG9vaykge1xuICAgIHJldHVybiBob29rICYmXG4gICAgICAodHlwZW9mIGhvb2suaG9vayA9PT0gXCJmdW5jdGlvblwiICYmICFob29rLmhhc093blByb3BlcnR5KFwiaG9va1wiKSB8fFxuICAgICAgIHR5cGVvZiBob29rLnVuaG9vayA9PT0gXCJmdW5jdGlvblwiICYmICFob29rLmhhc093blByb3BlcnR5KFwidW5ob29rXCIpKVxufVxuXG59LHt9XSwzOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxubW9kdWxlLmV4cG9ydHMgPSBpc1ZpcnR1YWxOb2RlXG5cbmZ1bmN0aW9uIGlzVmlydHVhbE5vZGUoeCkge1xuICAgIHJldHVybiB4ICYmIHgudHlwZSA9PT0gXCJWaXJ0dWFsTm9kZVwiICYmIHgudmVyc2lvbiA9PT0gdmVyc2lvblxufVxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gaXNWaXJ0dWFsVGV4dFxuXG5mdW5jdGlvbiBpc1ZpcnR1YWxUZXh0KHgpIHtcbiAgICByZXR1cm4geCAmJiB4LnR5cGUgPT09IFwiVmlydHVhbFRleHRcIiAmJiB4LnZlcnNpb24gPT09IHZlcnNpb25cbn1cblxufSx7XCIuL3ZlcnNpb25cIjo0Mn1dLDQxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gaXNXaWRnZXRcblxuZnVuY3Rpb24gaXNXaWRnZXQodykge1xuICAgIHJldHVybiB3ICYmIHcudHlwZSA9PT0gXCJXaWRnZXRcIlxufVxuXG59LHt9XSw0MjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IFwiMlwiXG5cbn0se31dLDQzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxudmFyIGlzVk5vZGUgPSByZXF1aXJlKFwiLi9pcy12bm9kZVwiKVxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4vaXMtd2lkZ2V0XCIpXG52YXIgaXNUaHVuayA9IHJlcXVpcmUoXCIuL2lzLXRodW5rXCIpXG52YXIgaXNWSG9vayA9IHJlcXVpcmUoXCIuL2lzLXZob29rXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbE5vZGVcblxudmFyIG5vUHJvcGVydGllcyA9IHt9XG52YXIgbm9DaGlsZHJlbiA9IFtdXG5cbmZ1bmN0aW9uIFZpcnR1YWxOb2RlKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuLCBrZXksIG5hbWVzcGFjZSkge1xuICAgIHRoaXMudGFnTmFtZSA9IHRhZ05hbWVcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzIHx8IG5vUHJvcGVydGllc1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbiB8fCBub0NoaWxkcmVuXG4gICAgdGhpcy5rZXkgPSBrZXkgIT0gbnVsbCA/IFN0cmluZyhrZXkpIDogdW5kZWZpbmVkXG4gICAgdGhpcy5uYW1lc3BhY2UgPSAodHlwZW9mIG5hbWVzcGFjZSA9PT0gXCJzdHJpbmdcIikgPyBuYW1lc3BhY2UgOiBudWxsXG5cbiAgICB2YXIgY291bnQgPSAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoKSB8fCAwXG4gICAgdmFyIGRlc2NlbmRhbnRzID0gMFxuICAgIHZhciBoYXNXaWRnZXRzID0gZmFsc2VcbiAgICB2YXIgaGFzVGh1bmtzID0gZmFsc2VcbiAgICB2YXIgZGVzY2VuZGFudEhvb2tzID0gZmFsc2VcbiAgICB2YXIgaG9va3NcblxuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKHByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW3Byb3BOYW1lXVxuICAgICAgICAgICAgaWYgKGlzVkhvb2socHJvcGVydHkpICYmIHByb3BlcnR5LnVuaG9vaykge1xuICAgICAgICAgICAgICAgIGlmICghaG9va3MpIHtcbiAgICAgICAgICAgICAgICAgICAgaG9va3MgPSB7fVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGhvb2tzW3Byb3BOYW1lXSA9IHByb3BlcnR5XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpKSB7XG4gICAgICAgICAgICBkZXNjZW5kYW50cyArPSBjaGlsZC5jb3VudCB8fCAwXG5cbiAgICAgICAgICAgIGlmICghaGFzV2lkZ2V0cyAmJiBjaGlsZC5oYXNXaWRnZXRzKSB7XG4gICAgICAgICAgICAgICAgaGFzV2lkZ2V0cyA9IHRydWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFoYXNUaHVua3MgJiYgY2hpbGQuaGFzVGh1bmtzKSB7XG4gICAgICAgICAgICAgICAgaGFzVGh1bmtzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWRlc2NlbmRhbnRIb29rcyAmJiAoY2hpbGQuaG9va3MgfHwgY2hpbGQuZGVzY2VuZGFudEhvb2tzKSkge1xuICAgICAgICAgICAgICAgIGRlc2NlbmRhbnRIb29rcyA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghaGFzV2lkZ2V0cyAmJiBpc1dpZGdldChjaGlsZCkpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGQuZGVzdHJveSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgaGFzV2lkZ2V0cyA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghaGFzVGh1bmtzICYmIGlzVGh1bmsoY2hpbGQpKSB7XG4gICAgICAgICAgICBoYXNUaHVua3MgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jb3VudCA9IGNvdW50ICsgZGVzY2VuZGFudHNcbiAgICB0aGlzLmhhc1dpZGdldHMgPSBoYXNXaWRnZXRzXG4gICAgdGhpcy5oYXNUaHVua3MgPSBoYXNUaHVua3NcbiAgICB0aGlzLmhvb2tzID0gaG9va3NcbiAgICB0aGlzLmRlc2NlbmRhbnRIb29rcyA9IGRlc2NlbmRhbnRIb29rc1xufVxuXG5WaXJ0dWFsTm9kZS5wcm90b3R5cGUudmVyc2lvbiA9IHZlcnNpb25cblZpcnR1YWxOb2RlLnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsTm9kZVwiXG5cbn0se1wiLi9pcy10aHVua1wiOjM3LFwiLi9pcy12aG9va1wiOjM4LFwiLi9pcy12bm9kZVwiOjM5LFwiLi9pcy13aWRnZXRcIjo0MSxcIi4vdmVyc2lvblwiOjQyfV0sNDQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cblZpcnR1YWxQYXRjaC5OT05FID0gMFxuVmlydHVhbFBhdGNoLlZURVhUID0gMVxuVmlydHVhbFBhdGNoLlZOT0RFID0gMlxuVmlydHVhbFBhdGNoLldJREdFVCA9IDNcblZpcnR1YWxQYXRjaC5QUk9QUyA9IDRcblZpcnR1YWxQYXRjaC5PUkRFUiA9IDVcblZpcnR1YWxQYXRjaC5JTlNFUlQgPSA2XG5WaXJ0dWFsUGF0Y2guUkVNT1ZFID0gN1xuVmlydHVhbFBhdGNoLlRIVU5LID0gOFxuXG5tb2R1bGUuZXhwb3J0cyA9IFZpcnR1YWxQYXRjaFxuXG5mdW5jdGlvbiBWaXJ0dWFsUGF0Y2godHlwZSwgdk5vZGUsIHBhdGNoKSB7XG4gICAgdGhpcy50eXBlID0gTnVtYmVyKHR5cGUpXG4gICAgdGhpcy52Tm9kZSA9IHZOb2RlXG4gICAgdGhpcy5wYXRjaCA9IHBhdGNoXG59XG5cblZpcnR1YWxQYXRjaC5wcm90b3R5cGUudmVyc2lvbiA9IHZlcnNpb25cblZpcnR1YWxQYXRjaC5wcm90b3R5cGUudHlwZSA9IFwiVmlydHVhbFBhdGNoXCJcblxufSx7XCIuL3ZlcnNpb25cIjo0Mn1dLDQ1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IFZpcnR1YWxUZXh0XG5cbmZ1bmN0aW9uIFZpcnR1YWxUZXh0KHRleHQpIHtcbiAgICB0aGlzLnRleHQgPSBTdHJpbmcodGV4dClcbn1cblxuVmlydHVhbFRleHQucHJvdG90eXBlLnZlcnNpb24gPSB2ZXJzaW9uXG5WaXJ0dWFsVGV4dC5wcm90b3R5cGUudHlwZSA9IFwiVmlydHVhbFRleHRcIlxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZShcImlzLW9iamVjdFwiKVxudmFyIGlzSG9vayA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12aG9va1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRpZmZQcm9wc1xuXG5mdW5jdGlvbiBkaWZmUHJvcHMoYSwgYikge1xuICAgIHZhciBkaWZmXG5cbiAgICBmb3IgKHZhciBhS2V5IGluIGEpIHtcbiAgICAgICAgaWYgKCEoYUtleSBpbiBiKSkge1xuICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgIGRpZmZbYUtleV0gPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBhVmFsdWUgPSBhW2FLZXldXG4gICAgICAgIHZhciBiVmFsdWUgPSBiW2FLZXldXG5cbiAgICAgICAgaWYgKGFWYWx1ZSA9PT0gYlZhbHVlKSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KGFWYWx1ZSkgJiYgaXNPYmplY3QoYlZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKGdldFByb3RvdHlwZShiVmFsdWUpICE9PSBnZXRQcm90b3R5cGUoYVZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICAgICAgZGlmZlthS2V5XSA9IGJWYWx1ZVxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0hvb2soYlZhbHVlKSkge1xuICAgICAgICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgICAgICBkaWZmW2FLZXldID0gYlZhbHVlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBvYmplY3REaWZmID0gZGlmZlByb3BzKGFWYWx1ZSwgYlZhbHVlKVxuICAgICAgICAgICAgICAgIGlmIChvYmplY3REaWZmKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICAgICAgICAgIGRpZmZbYUtleV0gPSBvYmplY3REaWZmXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgIGRpZmZbYUtleV0gPSBiVmFsdWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGJLZXkgaW4gYikge1xuICAgICAgICBpZiAoIShiS2V5IGluIGEpKSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZltiS2V5XSA9IGJbYktleV1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkaWZmXG59XG5cbmZ1bmN0aW9uIGdldFByb3RvdHlwZSh2YWx1ZSkge1xuICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSlcbiAgfSBlbHNlIGlmICh2YWx1ZS5fX3Byb3RvX18pIHtcbiAgICByZXR1cm4gdmFsdWUuX19wcm90b19fXG4gIH0gZWxzZSBpZiAodmFsdWUuY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gdmFsdWUuY29uc3RydWN0b3IucHJvdG90eXBlXG4gIH1cbn1cblxufSx7XCIuLi92bm9kZS9pcy12aG9va1wiOjM4LFwiaXMtb2JqZWN0XCI6MjB9XSw0NzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoXCJ4LWlzLWFycmF5XCIpXG5cbnZhciBWUGF0Y2ggPSByZXF1aXJlKFwiLi4vdm5vZGUvdnBhdGNoXCIpXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12bm9kZVwiKVxudmFyIGlzVlRleHQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdnRleHRcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXRcIilcbnZhciBpc1RodW5rID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXRodW5rXCIpXG52YXIgaGFuZGxlVGh1bmsgPSByZXF1aXJlKFwiLi4vdm5vZGUvaGFuZGxlLXRodW5rXCIpXG5cbnZhciBkaWZmUHJvcHMgPSByZXF1aXJlKFwiLi9kaWZmLXByb3BzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlxuXG5mdW5jdGlvbiBkaWZmKGEsIGIpIHtcbiAgICB2YXIgcGF0Y2ggPSB7IGE6IGEgfVxuICAgIHdhbGsoYSwgYiwgcGF0Y2gsIDApXG4gICAgcmV0dXJuIHBhdGNoXG59XG5cbmZ1bmN0aW9uIHdhbGsoYSwgYiwgcGF0Y2gsIGluZGV4KSB7XG4gICAgaWYgKGEgPT09IGIpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGFwcGx5ID0gcGF0Y2hbaW5kZXhdXG4gICAgdmFyIGFwcGx5Q2xlYXIgPSBmYWxzZVxuXG4gICAgaWYgKGlzVGh1bmsoYSkgfHwgaXNUaHVuayhiKSkge1xuICAgICAgICB0aHVua3MoYSwgYiwgcGF0Y2gsIGluZGV4KVxuICAgIH0gZWxzZSBpZiAoYiA9PSBudWxsKSB7XG5cbiAgICAgICAgLy8gSWYgYSBpcyBhIHdpZGdldCB3ZSB3aWxsIGFkZCBhIHJlbW92ZSBwYXRjaCBmb3IgaXRcbiAgICAgICAgLy8gT3RoZXJ3aXNlIGFueSBjaGlsZCB3aWRnZXRzL2hvb2tzIG11c3QgYmUgZGVzdHJveWVkLlxuICAgICAgICAvLyBUaGlzIHByZXZlbnRzIGFkZGluZyB0d28gcmVtb3ZlIHBhdGNoZXMgZm9yIGEgd2lkZ2V0LlxuICAgICAgICBpZiAoIWlzV2lkZ2V0KGEpKSB7XG4gICAgICAgICAgICBjbGVhclN0YXRlKGEsIHBhdGNoLCBpbmRleClcbiAgICAgICAgICAgIGFwcGx5ID0gcGF0Y2hbaW5kZXhdXG4gICAgICAgIH1cblxuICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5SRU1PVkUsIGEsIGIpKVxuICAgIH0gZWxzZSBpZiAoaXNWTm9kZShiKSkge1xuICAgICAgICBpZiAoaXNWTm9kZShhKSkge1xuICAgICAgICAgICAgaWYgKGEudGFnTmFtZSA9PT0gYi50YWdOYW1lICYmXG4gICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgPT09IGIubmFtZXNwYWNlICYmXG4gICAgICAgICAgICAgICAgYS5rZXkgPT09IGIua2V5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb3BzUGF0Y2ggPSBkaWZmUHJvcHMoYS5wcm9wZXJ0aWVzLCBiLnByb3BlcnRpZXMpXG4gICAgICAgICAgICAgICAgaWYgKHByb3BzUGF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLlBST1BTLCBhLCBwcm9wc1BhdGNoKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXBwbHkgPSBkaWZmQ2hpbGRyZW4oYSwgYiwgcGF0Y2gsIGFwcGx5LCBpbmRleClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guVk5PREUsIGEsIGIpKVxuICAgICAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WTk9ERSwgYSwgYikpXG4gICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1ZUZXh0KGIpKSB7XG4gICAgICAgIGlmICghaXNWVGV4dChhKSkge1xuICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guVlRFWFQsIGEsIGIpKVxuICAgICAgICAgICAgYXBwbHlDbGVhciA9IHRydWVcbiAgICAgICAgfSBlbHNlIGlmIChhLnRleHQgIT09IGIudGV4dCkge1xuICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guVlRFWFQsIGEsIGIpKVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpZGdldChiKSkge1xuICAgICAgICBpZiAoIWlzV2lkZ2V0KGEpKSB7XG4gICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guV0lER0VULCBhLCBiKSlcbiAgICB9XG5cbiAgICBpZiAoYXBwbHkpIHtcbiAgICAgICAgcGF0Y2hbaW5kZXhdID0gYXBwbHlcbiAgICB9XG5cbiAgICBpZiAoYXBwbHlDbGVhcikge1xuICAgICAgICBjbGVhclN0YXRlKGEsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRpZmZDaGlsZHJlbihhLCBiLCBwYXRjaCwgYXBwbHksIGluZGV4KSB7XG4gICAgdmFyIGFDaGlsZHJlbiA9IGEuY2hpbGRyZW5cbiAgICB2YXIgb3JkZXJlZFNldCA9IHJlb3JkZXIoYUNoaWxkcmVuLCBiLmNoaWxkcmVuKVxuICAgIHZhciBiQ2hpbGRyZW4gPSBvcmRlcmVkU2V0LmNoaWxkcmVuXG5cbiAgICB2YXIgYUxlbiA9IGFDaGlsZHJlbi5sZW5ndGhcbiAgICB2YXIgYkxlbiA9IGJDaGlsZHJlbi5sZW5ndGhcbiAgICB2YXIgbGVuID0gYUxlbiA+IGJMZW4gPyBhTGVuIDogYkxlblxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICB2YXIgbGVmdE5vZGUgPSBhQ2hpbGRyZW5baV1cbiAgICAgICAgdmFyIHJpZ2h0Tm9kZSA9IGJDaGlsZHJlbltpXVxuICAgICAgICBpbmRleCArPSAxXG5cbiAgICAgICAgaWYgKCFsZWZ0Tm9kZSkge1xuICAgICAgICAgICAgaWYgKHJpZ2h0Tm9kZSkge1xuICAgICAgICAgICAgICAgIC8vIEV4Y2VzcyBub2RlcyBpbiBiIG5lZWQgdG8gYmUgYWRkZWRcbiAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LFxuICAgICAgICAgICAgICAgICAgICBuZXcgVlBhdGNoKFZQYXRjaC5JTlNFUlQsIG51bGwsIHJpZ2h0Tm9kZSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3YWxrKGxlZnROb2RlLCByaWdodE5vZGUsIHBhdGNoLCBpbmRleClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1ZOb2RlKGxlZnROb2RlKSAmJiBsZWZ0Tm9kZS5jb3VudCkge1xuICAgICAgICAgICAgaW5kZXggKz0gbGVmdE5vZGUuY291bnRcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcmRlcmVkU2V0Lm1vdmVzKSB7XG4gICAgICAgIC8vIFJlb3JkZXIgbm9kZXMgbGFzdFxuICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFxuICAgICAgICAgICAgVlBhdGNoLk9SREVSLFxuICAgICAgICAgICAgYSxcbiAgICAgICAgICAgIG9yZGVyZWRTZXQubW92ZXNcbiAgICAgICAgKSlcbiAgICB9XG5cbiAgICByZXR1cm4gYXBwbHlcbn1cblxuZnVuY3Rpb24gY2xlYXJTdGF0ZSh2Tm9kZSwgcGF0Y2gsIGluZGV4KSB7XG4gICAgLy8gVE9ETzogTWFrZSB0aGlzIGEgc2luZ2xlIHdhbGssIG5vdCB0d29cbiAgICB1bmhvb2sodk5vZGUsIHBhdGNoLCBpbmRleClcbiAgICBkZXN0cm95V2lkZ2V0cyh2Tm9kZSwgcGF0Y2gsIGluZGV4KVxufVxuXG4vLyBQYXRjaCByZWNvcmRzIGZvciBhbGwgZGVzdHJveWVkIHdpZGdldHMgbXVzdCBiZSBhZGRlZCBiZWNhdXNlIHdlIG5lZWRcbi8vIGEgRE9NIG5vZGUgcmVmZXJlbmNlIGZvciB0aGUgZGVzdHJveSBmdW5jdGlvblxuZnVuY3Rpb24gZGVzdHJveVdpZGdldHModk5vZGUsIHBhdGNoLCBpbmRleCkge1xuICAgIGlmIChpc1dpZGdldCh2Tm9kZSkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2Tm9kZS5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHBhdGNoW2luZGV4XSA9IGFwcGVuZFBhdGNoKFxuICAgICAgICAgICAgICAgIHBhdGNoW2luZGV4XSxcbiAgICAgICAgICAgICAgICBuZXcgVlBhdGNoKFZQYXRjaC5SRU1PVkUsIHZOb2RlLCBudWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1ZOb2RlKHZOb2RlKSAmJiAodk5vZGUuaGFzV2lkZ2V0cyB8fCB2Tm9kZS5oYXNUaHVua3MpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHZOb2RlLmNoaWxkcmVuXG4gICAgICAgIHZhciBsZW4gPSBjaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICAgICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICAgICAgZGVzdHJveVdpZGdldHMoY2hpbGQsIHBhdGNoLCBpbmRleClcblxuICAgICAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpICYmIGNoaWxkLmNvdW50KSB7XG4gICAgICAgICAgICAgICAgaW5kZXggKz0gY2hpbGQuY291bnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUaHVuayh2Tm9kZSkpIHtcbiAgICAgICAgdGh1bmtzKHZOb2RlLCBudWxsLCBwYXRjaCwgaW5kZXgpXG4gICAgfVxufVxuXG4vLyBDcmVhdGUgYSBzdWItcGF0Y2ggZm9yIHRodW5rc1xuZnVuY3Rpb24gdGh1bmtzKGEsIGIsIHBhdGNoLCBpbmRleCkge1xuICAgIHZhciBub2RlcyA9IGhhbmRsZVRodW5rKGEsIGIpXG4gICAgdmFyIHRodW5rUGF0Y2ggPSBkaWZmKG5vZGVzLmEsIG5vZGVzLmIpXG4gICAgaWYgKGhhc1BhdGNoZXModGh1bmtQYXRjaCkpIHtcbiAgICAgICAgcGF0Y2hbaW5kZXhdID0gbmV3IFZQYXRjaChWUGF0Y2guVEhVTkssIG51bGwsIHRodW5rUGF0Y2gpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBoYXNQYXRjaGVzKHBhdGNoKSB7XG4gICAgZm9yICh2YXIgaW5kZXggaW4gcGF0Y2gpIHtcbiAgICAgICAgaWYgKGluZGV4ICE9PSBcImFcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxufVxuXG4vLyBFeGVjdXRlIGhvb2tzIHdoZW4gdHdvIG5vZGVzIGFyZSBpZGVudGljYWxcbmZ1bmN0aW9uIHVuaG9vayh2Tm9kZSwgcGF0Y2gsIGluZGV4KSB7XG4gICAgaWYgKGlzVk5vZGUodk5vZGUpKSB7XG4gICAgICAgIGlmICh2Tm9kZS5ob29rcykge1xuICAgICAgICAgICAgcGF0Y2hbaW5kZXhdID0gYXBwZW5kUGF0Y2goXG4gICAgICAgICAgICAgICAgcGF0Y2hbaW5kZXhdLFxuICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goXG4gICAgICAgICAgICAgICAgICAgIFZQYXRjaC5QUk9QUyxcbiAgICAgICAgICAgICAgICAgICAgdk5vZGUsXG4gICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZEtleXModk5vZGUuaG9va3MpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZOb2RlLmRlc2NlbmRhbnRIb29rcyB8fCB2Tm9kZS5oYXNUaHVua3MpIHtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHZOb2RlLmNoaWxkcmVuXG4gICAgICAgICAgICB2YXIgbGVuID0gY2hpbGRyZW4ubGVuZ3RoXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICAgICAgICAgICAgICBpbmRleCArPSAxXG5cbiAgICAgICAgICAgICAgICB1bmhvb2soY2hpbGQsIHBhdGNoLCBpbmRleClcblxuICAgICAgICAgICAgICAgIGlmIChpc1ZOb2RlKGNoaWxkKSAmJiBjaGlsZC5jb3VudCkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCArPSBjaGlsZC5jb3VudFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUaHVuayh2Tm9kZSkpIHtcbiAgICAgICAgdGh1bmtzKHZOb2RlLCBudWxsLCBwYXRjaCwgaW5kZXgpXG4gICAgfVxufVxuXG5mdW5jdGlvbiB1bmRlZmluZWRLZXlzKG9iaikge1xuICAgIHZhciByZXN1bHQgPSB7fVxuXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgICByZXN1bHRba2V5XSA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbn1cblxuLy8gTGlzdCBkaWZmLCBuYWl2ZSBsZWZ0IHRvIHJpZ2h0IHJlb3JkZXJpbmdcbmZ1bmN0aW9uIHJlb3JkZXIoYUNoaWxkcmVuLCBiQ2hpbGRyZW4pIHtcbiAgICAvLyBPKE0pIHRpbWUsIE8oTSkgbWVtb3J5XG4gICAgdmFyIGJDaGlsZEluZGV4ID0ga2V5SW5kZXgoYkNoaWxkcmVuKVxuICAgIHZhciBiS2V5cyA9IGJDaGlsZEluZGV4LmtleXNcbiAgICB2YXIgYkZyZWUgPSBiQ2hpbGRJbmRleC5mcmVlXG5cbiAgICBpZiAoYkZyZWUubGVuZ3RoID09PSBiQ2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjaGlsZHJlbjogYkNoaWxkcmVuLFxuICAgICAgICAgICAgbW92ZXM6IG51bGxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE8oTikgdGltZSwgTyhOKSBtZW1vcnlcbiAgICB2YXIgYUNoaWxkSW5kZXggPSBrZXlJbmRleChhQ2hpbGRyZW4pXG4gICAgdmFyIGFLZXlzID0gYUNoaWxkSW5kZXgua2V5c1xuICAgIHZhciBhRnJlZSA9IGFDaGlsZEluZGV4LmZyZWVcblxuICAgIGlmIChhRnJlZS5sZW5ndGggPT09IGFDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBiQ2hpbGRyZW4sXG4gICAgICAgICAgICBtb3ZlczogbnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTyhNQVgoTiwgTSkpIG1lbW9yeVxuICAgIHZhciBuZXdDaGlsZHJlbiA9IFtdXG5cbiAgICB2YXIgZnJlZUluZGV4ID0gMFxuICAgIHZhciBmcmVlQ291bnQgPSBiRnJlZS5sZW5ndGhcbiAgICB2YXIgZGVsZXRlZEl0ZW1zID0gMFxuXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGEgYW5kIG1hdGNoIGEgbm9kZSBpbiBiXG4gICAgLy8gTyhOKSB0aW1lLFxuICAgIGZvciAodmFyIGkgPSAwIDsgaSA8IGFDaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYUl0ZW0gPSBhQ2hpbGRyZW5baV1cbiAgICAgICAgdmFyIGl0ZW1JbmRleFxuXG4gICAgICAgIGlmIChhSXRlbS5rZXkpIHtcbiAgICAgICAgICAgIGlmIChiS2V5cy5oYXNPd25Qcm9wZXJ0eShhSXRlbS5rZXkpKSB7XG4gICAgICAgICAgICAgICAgLy8gTWF0Y2ggdXAgdGhlIG9sZCBrZXlzXG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gYktleXNbYUl0ZW0ua2V5XVxuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2goYkNoaWxkcmVuW2l0ZW1JbmRleF0pXG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIG9sZCBrZXllZCBpdGVtc1xuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCA9IGkgLSBkZWxldGVkSXRlbXMrK1xuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2gobnVsbClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE1hdGNoIHRoZSBpdGVtIGluIGEgd2l0aCB0aGUgbmV4dCBmcmVlIGl0ZW0gaW4gYlxuICAgICAgICAgICAgaWYgKGZyZWVJbmRleCA8IGZyZWVDb3VudCkge1xuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCA9IGJGcmVlW2ZyZWVJbmRleCsrXVxuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2goYkNoaWxkcmVuW2l0ZW1JbmRleF0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBubyBmcmVlIGl0ZW1zIGluIGIgdG8gbWF0Y2ggd2l0aFxuICAgICAgICAgICAgICAgIC8vIHRoZSBmcmVlIGl0ZW1zIGluIGEsIHNvIHRoZSBleHRyYSBmcmVlIG5vZGVzXG4gICAgICAgICAgICAgICAgLy8gYXJlIGRlbGV0ZWQuXG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gaSAtIGRlbGV0ZWRJdGVtcysrXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChudWxsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxhc3RGcmVlSW5kZXggPSBmcmVlSW5kZXggPj0gYkZyZWUubGVuZ3RoID9cbiAgICAgICAgYkNoaWxkcmVuLmxlbmd0aCA6XG4gICAgICAgIGJGcmVlW2ZyZWVJbmRleF1cblxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBiIGFuZCBhcHBlbmQgYW55IG5ldyBrZXlzXG4gICAgLy8gTyhNKSB0aW1lXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBiQ2hpbGRyZW4ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG5ld0l0ZW0gPSBiQ2hpbGRyZW5bal1cblxuICAgICAgICBpZiAobmV3SXRlbS5rZXkpIHtcbiAgICAgICAgICAgIGlmICghYUtleXMuaGFzT3duUHJvcGVydHkobmV3SXRlbS5rZXkpKSB7XG4gICAgICAgICAgICAgICAgLy8gQWRkIGFueSBuZXcga2V5ZWQgaXRlbXNcbiAgICAgICAgICAgICAgICAvLyBXZSBhcmUgYWRkaW5nIG5ldyBpdGVtcyB0byB0aGUgZW5kIGFuZCB0aGVuIHNvcnRpbmcgdGhlbVxuICAgICAgICAgICAgICAgIC8vIGluIHBsYWNlLiBJbiBmdXR1cmUgd2Ugc2hvdWxkIGluc2VydCBuZXcgaXRlbXMgaW4gcGxhY2UuXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChuZXdJdGVtKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGogPj0gbGFzdEZyZWVJbmRleCkge1xuICAgICAgICAgICAgLy8gQWRkIGFueSBsZWZ0b3ZlciBub24ta2V5ZWQgaXRlbXNcbiAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2gobmV3SXRlbSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzaW11bGF0ZSA9IG5ld0NoaWxkcmVuLnNsaWNlKClcbiAgICB2YXIgc2ltdWxhdGVJbmRleCA9IDBcbiAgICB2YXIgcmVtb3ZlcyA9IFtdXG4gICAgdmFyIGluc2VydHMgPSBbXVxuICAgIHZhciBzaW11bGF0ZUl0ZW1cblxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgYkNoaWxkcmVuLmxlbmd0aDspIHtcbiAgICAgICAgdmFyIHdhbnRlZEl0ZW0gPSBiQ2hpbGRyZW5ba11cbiAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cblxuICAgICAgICAvLyByZW1vdmUgaXRlbXNcbiAgICAgICAgd2hpbGUgKHNpbXVsYXRlSXRlbSA9PT0gbnVsbCAmJiBzaW11bGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlbW92ZXMucHVzaChyZW1vdmUoc2ltdWxhdGUsIHNpbXVsYXRlSW5kZXgsIG51bGwpKVxuICAgICAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2ltdWxhdGVJdGVtIHx8IHNpbXVsYXRlSXRlbS5rZXkgIT09IHdhbnRlZEl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAvLyBpZiB3ZSBuZWVkIGEga2V5IGluIHRoaXMgcG9zaXRpb24uLi5cbiAgICAgICAgICAgIGlmICh3YW50ZWRJdGVtLmtleSkge1xuICAgICAgICAgICAgICAgIGlmIChzaW11bGF0ZUl0ZW0gJiYgc2ltdWxhdGVJdGVtLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiBhbiBpbnNlcnQgZG9lc24ndCBwdXQgdGhpcyBrZXkgaW4gcGxhY2UsIGl0IG5lZWRzIHRvIG1vdmVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJLZXlzW3NpbXVsYXRlSXRlbS5rZXldICE9PSBrICsgMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgc2ltdWxhdGVJdGVtLmtleSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHJlbW92ZSBkaWRuJ3QgcHV0IHRoZSB3YW50ZWQgaXRlbSBpbiBwbGFjZSwgd2UgbmVlZCB0byBpbnNlcnQgaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2ltdWxhdGVJdGVtIHx8IHNpbXVsYXRlSXRlbS5rZXkgIT09IHdhbnRlZEl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cy5wdXNoKHtrZXk6IHdhbnRlZEl0ZW0ua2V5LCB0bzoga30pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpdGVtcyBhcmUgbWF0Y2hpbmcsIHNvIHNraXAgYWhlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRlSW5kZXgrK1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cy5wdXNoKHtrZXk6IHdhbnRlZEl0ZW0ua2V5LCB0bzoga30pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydHMucHVzaCh7a2V5OiB3YW50ZWRJdGVtLmtleSwgdG86IGt9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBrKytcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGEga2V5IGluIHNpbXVsYXRlIGhhcyBubyBtYXRjaGluZyB3YW50ZWQga2V5LCByZW1vdmUgaXRcbiAgICAgICAgICAgIGVsc2UgaWYgKHNpbXVsYXRlSXRlbSAmJiBzaW11bGF0ZUl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgc2ltdWxhdGVJdGVtLmtleSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzaW11bGF0ZUluZGV4KytcbiAgICAgICAgICAgIGsrK1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIGFsbCB0aGUgcmVtYWluaW5nIG5vZGVzIGZyb20gc2ltdWxhdGVcbiAgICB3aGlsZShzaW11bGF0ZUluZGV4IDwgc2ltdWxhdGUubGVuZ3RoKSB7XG4gICAgICAgIHNpbXVsYXRlSXRlbSA9IHNpbXVsYXRlW3NpbXVsYXRlSW5kZXhdXG4gICAgICAgIHJlbW92ZXMucHVzaChyZW1vdmUoc2ltdWxhdGUsIHNpbXVsYXRlSW5kZXgsIHNpbXVsYXRlSXRlbSAmJiBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgb25seSBtb3ZlcyB3ZSBoYXZlIGFyZSBkZWxldGVzIHRoZW4gd2UgY2FuIGp1c3RcbiAgICAvLyBsZXQgdGhlIGRlbGV0ZSBwYXRjaCByZW1vdmUgdGhlc2UgaXRlbXMuXG4gICAgaWYgKHJlbW92ZXMubGVuZ3RoID09PSBkZWxldGVkSXRlbXMgJiYgIWluc2VydHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjaGlsZHJlbjogbmV3Q2hpbGRyZW4sXG4gICAgICAgICAgICBtb3ZlczogbnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2hpbGRyZW46IG5ld0NoaWxkcmVuLFxuICAgICAgICBtb3Zlczoge1xuICAgICAgICAgICAgcmVtb3ZlczogcmVtb3ZlcyxcbiAgICAgICAgICAgIGluc2VydHM6IGluc2VydHNcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlKGFyciwgaW5kZXgsIGtleSkge1xuICAgIGFyci5zcGxpY2UoaW5kZXgsIDEpXG5cbiAgICByZXR1cm4ge1xuICAgICAgICBmcm9tOiBpbmRleCxcbiAgICAgICAga2V5OiBrZXlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGtleUluZGV4KGNoaWxkcmVuKSB7XG4gICAgdmFyIGtleXMgPSB7fVxuICAgIHZhciBmcmVlID0gW11cbiAgICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldXG5cbiAgICAgICAgaWYgKGNoaWxkLmtleSkge1xuICAgICAgICAgICAga2V5c1tjaGlsZC5rZXldID0gaVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnJlZS5wdXNoKGkpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBrZXlzOiBrZXlzLCAgICAgLy8gQSBoYXNoIG9mIGtleSBuYW1lIHRvIGluZGV4XG4gICAgICAgIGZyZWU6IGZyZWUgICAgICAvLyBBbiBhcnJheSBvZiB1bmtleWVkIGl0ZW0gaW5kaWNlc1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYXBwZW5kUGF0Y2goYXBwbHksIHBhdGNoKSB7XG4gICAgaWYgKGFwcGx5KSB7XG4gICAgICAgIGlmIChpc0FycmF5KGFwcGx5KSkge1xuICAgICAgICAgICAgYXBwbHkucHVzaChwYXRjaClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcGx5ID0gW2FwcGx5LCBwYXRjaF1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhcHBseVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwYXRjaFxuICAgIH1cbn1cblxufSx7XCIuLi92bm9kZS9oYW5kbGUtdGh1bmtcIjozNixcIi4uL3Zub2RlL2lzLXRodW5rXCI6MzcsXCIuLi92bm9kZS9pcy12bm9kZVwiOjM5LFwiLi4vdm5vZGUvaXMtdnRleHRcIjo0MCxcIi4uL3Zub2RlL2lzLXdpZGdldFwiOjQxLFwiLi4vdm5vZGUvdnBhdGNoXCI6NDQsXCIuL2RpZmYtcHJvcHNcIjo0NixcIngtaXMtYXJyYXlcIjoyMX1dLDQ4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbihmdW5jdGlvbiAoZ2xvYmFsKXtcbnZhciB2ZG9tID0ge1xuICBWTm9kZTogcmVxdWlyZSgndmlydHVhbC1kb20vdm5vZGUvdm5vZGUnKSxcbiAgVlRleHQ6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL3Zub2RlL3Z0ZXh0JyksXG4gIGRpZmY6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL2RpZmYnKSxcbiAgcGF0Y2g6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL3BhdGNoJyksXG4gIGNyZWF0ZUVsZW1lbnQ6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL2NyZWF0ZS1lbGVtZW50JyksXG4gIHN2ZzogcmVxdWlyZShcInZpcnR1YWwtZG9tL3ZpcnR1YWwtaHlwZXJzY3JpcHQvc3ZnXCIpLFxufTtcblxuZ2xvYmFsLlZpcnR1YWxEb20gPSB2ZG9tO1xubW9kdWxlLmV4cG9ydHMgPSB2ZG9tO1xuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se1widmlydHVhbC1kb20vY3JlYXRlLWVsZW1lbnRcIjoxLFwidmlydHVhbC1kb20vZGlmZlwiOjIsXCJ2aXJ0dWFsLWRvbS9wYXRjaFwiOjIyLFwidmlydHVhbC1kb20vdmlydHVhbC1oeXBlcnNjcmlwdC9zdmdcIjozNSxcInZpcnR1YWwtZG9tL3Zub2RlL3Zub2RlXCI6NDMsXCJ2aXJ0dWFsLWRvbS92bm9kZS92dGV4dFwiOjQ1fV19LHt9LFs0OF0pKDQ4KVxufSk7XG4iLCJmdW5jdGlvbiBWZG9tVGh1bmsoZm4sIGFyZ3MsIGtleSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBWZG9tVGh1bmspKSB7XG4gICAgICAgIHJldHVybiBuZXcgVmRvbVRodW5rKGZuLCBhcmdzLCBrZXkpO1xuICAgIH1cblxuICAgIGlmIChrZXkpIHtcbiAgICAgIHRoaXMua2V5ID0ga2V5O1xuICAgIH1cblxuICAgIHRoaXMuZm4gPSBmbjtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xufTtcblxuam9vX2dsb2JhbF9vYmplY3QuVmRvbVRodW5rID0gVmRvbVRodW5rO1xuXG5WZG9tVGh1bmsucHJvdG90eXBlLnR5cGUgPSAnVGh1bmsnO1xuVmRvbVRodW5rLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAocHJldikge1xuICBpZiAocHJldiAmJiB0aGlzLmFyZ3MgPT09IHByZXYuYXJncyAmJiB0aGlzLmZuID09PSBwcmV2LmZuKSB7XG4gICAgcmV0dXJuIHByZXYudm5vZGU7XG4gIH1cblxuICByZXR1cm4gdGhpcy5mbih0aGlzLmFyZ3MpO1xufTtcblxuXG4iLCIvLyBVc2VkIGJ5IHdvcmthcm91bmQgZm9yIGlucHV0IGVsZW1lbnQgdmFsdWUgZmllbGRcbi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9NYXR0LUVzY2gvdmlydHVhbC1kb20vYmxvYi85NDdlY2Y5MmI2N2QyNWJiNjkzYTBmNjI1ZmE4ZTkwYzA5OTg4N2Q1L3ZpcnR1YWwtaHlwZXJzY3JpcHQvaG9va3Mvc29mdC1zZXQtaG9vay5qc1xuXG5qb29fZ2xvYmFsX29iamVjdC5Tb2Z0U2V0SG9vayA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNvZnRTZXRIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IFNvZnRTZXRIb29rKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59O1xuXG5qb29fZ2xvYmFsX29iamVjdC5Tb2Z0U2V0SG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICBpZiAobm9kZVtwcm9wZXJ0eU5hbWVdICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgIG5vZGVbcHJvcGVydHlOYW1lXSA9IHRoaXMudmFsdWU7XG4gICAgfVxufTtcblxuXG52YXIgR2VuZXJpY0hvb2sgPSBmdW5jdGlvbiAoaW5pdCwgdXBkYXRlLCBkZXN0cm95LCBpZCwgZXh0cmEpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgR2VuZXJpY0hvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgR2VuZXJpY0hvb2soaW5pdCwgdXBkYXRlLCBkZXN0cm95LCBpZCwgZXh0cmEpO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdCA9IGluaXQ7XG4gICAgdGhpcy51cGRhdGUgPSB1cGRhdGU7XG4gICAgdGhpcy5kZXN0cm95ID0gZGVzdHJveTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5leHRyYSA9IGV4dHJhO1xufTtcblxudmFyIGhvb2tfc3RhdGVfa2V5ID0gXCJ2ZG9tX2hvb2tfc3RhdGVfa2V5XCI7XG5cbmlmICh0aGlzLlN5bWJvbCkge1xuICAgIGhvb2tfc3RhdGVfa2V5ID0gU3ltYm9sKGhvb2tfc3RhdGVfa2V5KTtcbn1cblxuR2VuZXJpY0hvb2sud3JpdGVfc3RhdGUgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIHN0YXRlKSB7XG4gICAgaWYgKCFub2RlW2hvb2tfc3RhdGVfa2V5XSkge1xuICAgICAgICBub2RlW2hvb2tfc3RhdGVfa2V5XSA9IHt9O1xuICAgIH1cbiAgICBub2RlW2hvb2tfc3RhdGVfa2V5XVtwcm9wTmFtZV0gPSBzdGF0ZTtcbn1cblxuR2VuZXJpY0hvb2sucmVhZF9zdGF0ZSA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSkge1xuICAgIHJldHVybiBub2RlW2hvb2tfc3RhdGVfa2V5XVtwcm9wTmFtZV07XG59XG5cbkdlbmVyaWNIb29rLnJlbW92ZV9zdGF0ZSA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSkge1xuICAgIGRlbGV0ZSBub2RlW2hvb2tfc3RhdGVfa2V5XVtwcm9wTmFtZV07XG59XG5cbkdlbmVyaWNIb29rLmNhblRyYW5zaXRpb24gPSBmdW5jdGlvbiAoZnJvbSwgdG8pIHtcbiAgICByZXR1cm4gZnJvbSBpbnN0YW5jZW9mIHRoaXMgJiYgdG8gaW5zdGFuY2VvZiB0aGlzICYmIGZyb20uaWQgPT09IHRvLmlkICYmIHRvLnVwZGF0ZTtcbn07XG5cbkdlbmVyaWNIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lLCBwcmV2KSB7XG4gICAgaWYgKEdlbmVyaWNIb29rLmNhblRyYW5zaXRpb24ocHJldiwgdGhpcykpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gR2VuZXJpY0hvb2sucmVhZF9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgICAgIHN0YXRlID0gdGhpcy51cGRhdGUoc3RhdGUsIG5vZGUpO1xuICAgICAgICBHZW5lcmljSG9vay53cml0ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSwgc3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuaW5pdChub2RlKTtcbiAgICAgICAgR2VuZXJpY0hvb2sud3JpdGVfc3RhdGUobm9kZSwgcHJvcE5hbWUsIHN0YXRlKTtcbiAgICB9XG59O1xuXG5HZW5lcmljSG9vay5wcm90b3R5cGUudW5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lLCBuZXh0KSB7XG4gICAgaWYgKEdlbmVyaWNIb29rLmNhblRyYW5zaXRpb24odGhpcywgbmV4dCkpIHtcbiAgICAgICAgLy8gRG8gbm90aGluZywgdGhlIGltcGVuZGluZyBbaG9va10gd2lsbCBoYW5kbGUgdGhlIGNhbGwgdG8gdXBkYXRlLlxuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IEdlbmVyaWNIb29rLnJlYWRfc3RhdGUobm9kZSwgcHJvcE5hbWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3koc3RhdGUsIG5vZGUpO1xuICAgICAgICBHZW5lcmljSG9vay5yZW1vdmVfc3RhdGUobm9kZSwgcHJvcE5hbWUpO1xuICAgIH1cbn07XG5cbmpvb19nbG9iYWxfb2JqZWN0LkdlbmVyaWNIb29rID0gR2VuZXJpY0hvb2s7XG4iLCIvL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudCBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnQodikge1xuICB2ID0gdiAtICgodiA+Pj4gMSkgJiAweDU1NTU1NTU1KTtcbiAgdiA9ICh2ICYgMHgzMzMzMzMzMykgKyAoKHYgPj4+IDIpICYgMHgzMzMzMzMzMyk7XG4gIHJldHVybiAoKHYgKyAodiA+Pj4gNCkgJiAweEYwRjBGMEYpICogMHgxMDEwMTAxKSA+Pj4gMjQ7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIGNvbnN0XG5mdW5jdGlvbiBCYXNlX2NsZWFyX2NhbWxfYmFja3RyYWNlX3Bvcyh4KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4biBjb25zdFxuZnVuY3Rpb24gQmFzZV9jYW1sX2V4bl9pc19tb3N0X3JlY2VudF9leG4oeCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHogY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50MzJfY2x6KHgpIHtcbiAgdmFyIG4gPSAzMjtcbiAgdmFyIHk7XG4gIHkgPSB4ID4+MTY7IGlmICh5ICE9IDApIHsgbiA9IG4gLTE2OyB4ID0geTsgfVxuICB5ID0geCA+PiA4OyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0gODsgeCA9IHk7IH1cbiAgeSA9IHggPj4gNDsgaWYgKHkgIT0gMCkgeyBuID0gbiAtIDQ7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDI7IGlmICh5ICE9IDApIHsgbiA9IG4gLSAyOyB4ID0geTsgfVxuICB5ID0geCA+PiAxOyBpZiAoeSAhPSAwKSByZXR1cm4gbiAtIDI7XG4gIHJldHVybiBuIC0geDtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NselxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfY2x6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY2x6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2NseiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2Nseih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2Nseih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDY0X2NseiBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCwgY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX2ludDY0X3RvX2ludDMyXG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDY0X2Nseih4KSB7XG4gIHZhciBuID0gNjQ7XG4gIHZhciB5O1xuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAzMik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0zMjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMTYpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtMTY7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDgpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtIDg7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDQpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtIDQ7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDIpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtIDI7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDEpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgcmV0dXJuIG4gLSAyO1xuICByZXR1cm4gbiAtIGNhbWxfaW50NjRfdG9faW50MzIoeCk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY3R6IGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eih4KSB7XG4gIGlmICh4ID09PSAwKSB7IHJldHVybiAzMjsgfVxuICB2YXIgbiA9IDE7XG4gIGlmICggKHggJiAweDAwMDBGRkZGKSA9PT0gMCkgeyBuID0gbiArIDE2OyB4ID0geCA+PiAxNjsgfVxuICBpZiAoICh4ICYgMHgwMDAwMDBGRikgPT09IDApIHsgbiA9IG4gKyAgODsgeCA9IHggPj4gIDg7IH1cbiAgaWYgKCAoeCAmIDB4MDAwMDAwMEYpID09PSAwKSB7IG4gPSBuICsgIDQ7IHggPSB4ID4+ICA0OyB9XG4gIGlmICggKHggJiAweDAwMDAwMDAzKSA9PT0gMCkgeyBuID0gbiArICAyOyB4ID0geCA+PiAgMjsgfVxuICByZXR1cm4gbiAtICh4ICYgMSk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X2N0eiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X2N0eih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY3R6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHogY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQsIGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9pbnQ2NF90b19pbnQzMlxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hbmQsIGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDY0X2N0eih4KSB7XG4gIGlmIChjYW1sX2ludDY0X2lzX3plcm8oeCkpIHsgcmV0dXJuIDY0OyB9XG4gIHZhciBuID0gMTtcbiAgZnVuY3Rpb24gaXNfemVybyAoeCkgICAgeyByZXR1cm4gY2FtbF9pbnQ2NF9pc196ZXJvKHgpOyB9XG4gIGZ1bmN0aW9uIGxhbmQgKHgseSkgICAgIHsgcmV0dXJuIGNhbWxfaW50NjRfYW5kKHgsIHkpOyB9XG4gIGZ1bmN0aW9uIHNtYWxsX2ludDY0KHgpIHsgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKHgsMCwwKTsgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDB4RkZGRkZGLCAweDAwMDBGRiwgMHgwMDAwKSkpKSB7XG4gICAgbiA9IG4gKyAzMjsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMzIpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMEZGRkYpKSkpIHtcbiAgICBuID0gbiArIDE2OyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAxNik7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDBGRikpKSkge1xuICAgIG4gPSBuICsgIDg7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDgpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwMEYpKSkpIHtcbiAgICBuID0gbiArICA0OyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCA0KTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMDAzKSkpKSB7XG4gICAgbiA9IG4gKyAgMjsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMik7XG4gIH1cbiAgcmV0dXJuIG4gLSAoY2FtbF9pbnQ2NF90b19pbnQzMihjYW1sX2ludDY0X2FuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDAwMSkpKSk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViIGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YihiYXNlLCBleHBvbmVudCkge1xuICB2YXIgb25lID0gMTtcbiAgdmFyIG11bCA9IFtvbmUsIGJhc2UsIG9uZSwgb25lXTtcbiAgdmFyIHJlcyA9IG9uZTtcbiAgd2hpbGUgKCFleHBvbmVudD09MCkge1xuICAgIG11bFsxXSA9IChtdWxbMV0gKiBtdWxbM10pIHwgMDtcbiAgICBtdWxbMl0gPSAobXVsWzFdICogbXVsWzFdKSB8IDA7XG4gICAgbXVsWzNdID0gKG11bFsyXSAqIG11bFsxXSkgfCAwO1xuICAgIHJlcyA9IChyZXMgKiBtdWxbZXhwb25lbnQgJiAzXSkgfCAwO1xuICAgIGV4cG9uZW50ID0gZXhwb25lbnQgPj4gMjtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViKGJhc2UsIGV4cG9uZW50KSB7XG4gIHZhciBvbmUgPSBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSgxLDApO1xuICB2YXIgbXVsID0gW29uZSwgYmFzZSwgb25lLCBvbmVdO1xuICB2YXIgcmVzID0gb25lO1xuICB3aGlsZSAoIWNhbWxfaW50NjRfaXNfemVybyhleHBvbmVudCkpIHtcbiAgICBtdWxbMV0gPSBjYW1sX2ludDY0X211bChtdWxbMV0sIG11bFszXSk7XG4gICAgbXVsWzJdID0gY2FtbF9pbnQ2NF9tdWwobXVsWzFdLCBtdWxbMV0pO1xuICAgIG11bFszXSA9IGNhbWxfaW50NjRfbXVsKG11bFsyXSwgbXVsWzFdKTtcbiAgICByZXMgPSBjYW1sX2ludDY0X211bChyZXMsIG11bFtjYW1sX2ludDY0X2xvMzIoZXhwb25lbnQpICYgM10pO1xuICAgIGV4cG9uZW50ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZChleHBvbmVudCwgMik7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogQmFzZV9oYXNoX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hcbmZ1bmN0aW9uIEJhc2VfaGFzaF9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9oYXNoKDEsMSwwLHMpXG59XG4vL1Byb3ZpZGVzOiBCYXNlX2hhc2hfZG91YmxlIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hcbmZ1bmN0aW9uIEJhc2VfaGFzaF9kb3VibGUoZCkge1xuICByZXR1cm4gY2FtbF9oYXNoKDEsMSwwLGQpO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2FtX3Rlc3RpbmcgY29uc3Rcbi8vV2Vha2RlZlxuZnVuY3Rpb24gQmFzZV9hbV90ZXN0aW5nKHgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3NlbF92YWx1ZVxuZnVuY3Rpb24gY2FtbF9jc2VsX3ZhbHVlKHZfY29uZCwgdl90cnVlLCB2X2ZhbHNlKSB7XG4gICAgaWYgKHZfY29uZClcbiAgICAgICAgcmV0dXJuIHZfdHJ1ZTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiB2X2ZhbHNlO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX3Vuc2FmZV9jcmVhdGVfbG9jYWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzXG5mdW5jdGlvbiBCYXNlX3Vuc2FmZV9jcmVhdGVfbG9jYWxfYnl0ZXModl9sZW4pIHtcbiAgICAvLyBUaGlzIGRvZXMgYSByZWR1bmRhbnQgYm91bmRzIGNoZWNrIGFuZCAoc2luY2UgdGhpcyBpc1xuICAgIC8vIGphdmFzY3JpcHQpIGRvZXNuJ3QgYWxsb2NhdGUgbG9jYWxseSwgYnV0IHRoYXQncyBmaW5lLlxuICAgIHJldHVybiBjYW1sX2NyZWF0ZV9ieXRlcyh2X2xlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9sb2NhbF92ZWN0XG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfdmVjdFxuZnVuY3Rpb24gY2FtbF9tYWtlX2xvY2FsX3ZlY3Qodl9sZW4sIHZfZWx0KSB7XG4gICAgLy8gSW4gamF2YXNjcmlwdCB0aGVyZSdzIG5vIGxvY2FsIGFsbG9jYXRpb24uXG4gICAgcmV0dXJuIGNhbWxfbWFrZV92ZWN0ICh2X2xlbiwgdl9lbHQpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF91cGRhdGVfZHVtbXlcbmZ1bmN0aW9uIGNhbWxfdXBkYXRlX2R1bW15ICh4LCB5KSB7XG4gIGlmKCB5LmZ1biApIHsgeC5mdW4gPSB5LmZ1bjsgcmV0dXJuIDA7IH1cbiAgaWYoIHR5cGVvZiB5PT09XCJmdW5jdGlvblwiICkgeyB4LmZ1biA9IHk7IHJldHVybiAwOyB9XG4gIHZhciBpID0geS5sZW5ndGg7IHdoaWxlIChpLS0pIHhbaV0gPSB5W2ldOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19kdW1teV9pbmZpeFxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9hbGxvY19kdW1teV9pbmZpeCAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBmICh4KSB7IHJldHVybiBjYW1sX2NhbGxfZ2VuKGYuZnVuLCBbeF0pIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfaXNfYmxvY2sgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfYmxvY2sgKHgpIHsgcmV0dXJuICsoeCBpbnN0YW5jZW9mIEFycmF5KTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfb2JqX3RhZyAoeCkge1xuICBpZiAoKHggaW5zdGFuY2VvZiBBcnJheSkgJiYgeFswXSA9PSAoeFswXSA+Pj4gMCkpXG4gICAgcmV0dXJuIHhbMF1cbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh4KSlcbiAgICByZXR1cm4gMjUyXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoKHggaW5zdGFuY2VvZiBGdW5jdGlvbikgfHwgdHlwZW9mIHggPT0gXCJmdW5jdGlvblwiKVxuICAgIHJldHVybiAyNDdcbiAgZWxzZSBpZiAoeCAmJiB4LmNhbWxfY3VzdG9tKVxuICAgIHJldHVybiAyNTVcbiAgZWxzZVxuICAgIHJldHVybiAxMDAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF90YWcgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3RhZyAoeCwgdGFnKSB7IHhbMF0gPSB0YWc7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX29ial9ibG9jayBjb25zdCAoY29uc3QsY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9ibG9jayAodGFnLCBzaXplKSB7XG4gIHZhciBvID0gbmV3IEFycmF5KHNpemUrMSk7XG4gIG9bMF09dGFnO1xuICBmb3IgKHZhciBpID0gMTsgaSA8PSBzaXplOyBpKyspIG9baV0gPSAwO1xuICByZXR1cm4gbztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfd2l0aF90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3dpdGhfdGFnKHRhZyx4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gdGFnO1xuICBmb3IodmFyIGkgPSAxOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9kdXAgbXV0YWJsZSAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfb2JqX2R1cCAoeCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdHJ1bmNhdGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX29ial90cnVuY2F0ZSAoeCwgcykge1xuICBpZiAoczw9MCB8fCBzICsgMSA+IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJPYmoudHJ1bmNhdGVcIik7XG4gIGlmICh4Lmxlbmd0aCAhPSBzICsgMSkgeC5sZW5ndGggPSBzICsgMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX21ha2VfZm9yd2FyZFxuZnVuY3Rpb24gY2FtbF9vYmpfbWFrZV9mb3J3YXJkIChiLHYpIHtcbiAgYlswXT0yNTA7XG4gIGJbMV09djtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcFxuZnVuY3Rpb24gY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcCh4LGksb2xkLG4pe1xuICBpZih4W2krMV0gPT0gb2xkKSB7XG4gICAgeFtpKzFdID0gbjtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19zaGFyZWRcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX3NoYXJlZCh4KXtcbiAgcmV0dXJuIDFcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X21ha2VfZm9yd2FyZCBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQgKHYpIHsgcmV0dXJuIFsyNTAsIHZdOyB9XG5cbi8vLy8vLy8vLy8vLy8gQ2FtbGludGVybmFsT09cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgY29uc3RcbnZhciBjYW1sX21ldGhvZF9jYWNoZSA9IFtdO1xuZnVuY3Rpb24gY2FtbF9nZXRfcHVibGljX21ldGhvZCAob2JqLCB0YWcsIGNhY2hlaWQpIHtcbiAgdmFyIG1ldGhzID0gb2JqWzFdO1xuICB2YXIgb2ZzID0gY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF07XG4gIGlmIChvZnMgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyYXkgaXMgbm90IHNwYXJzZVxuICAgIGZvciAodmFyIGkgPSBjYW1sX21ldGhvZF9jYWNoZS5sZW5ndGg7IGkgPCBjYWNoZWlkOyBpKyspXG4gICAgICBjYW1sX21ldGhvZF9jYWNoZVtpXSA9IDA7XG4gIH0gZWxzZSBpZiAobWV0aHNbb2ZzXSA9PT0gdGFnKSB7XG4gICAgcmV0dXJuIG1ldGhzW29mcyAtIDFdO1xuICB9XG4gIHZhciBsaSA9IDMsIGhpID0gbWV0aHNbMV0gKiAyICsgMSwgbWk7XG4gIHdoaWxlIChsaSA8IGhpKSB7XG4gICAgbWkgPSAoKGxpK2hpKSA+PiAxKSB8IDE7XG4gICAgaWYgKHRhZyA8IG1ldGhzW21pKzFdKSBoaSA9IG1pLTI7XG4gICAgZWxzZSBsaSA9IG1pO1xuICB9XG4gIGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdID0gbGkgKyAxO1xuICAvKiByZXR1cm4gMCBpZiB0YWcgaXMgbm90IHRoZXJlICovXG4gIHJldHVybiAodGFnID09IG1ldGhzW2xpKzFdID8gbWV0aHNbbGldIDogMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb29fbGFzdF9pZFxudmFyIGNhbWxfb29fbGFzdF9pZCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X29vX2lkXG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfc2V0X29vX2lkIChiKSB7XG4gIGJbMl09Y2FtbF9vb19sYXN0X2lkKys7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXNoX29vX2lkIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfZnJlc2hfb29faWQoKSB7XG4gIHJldHVybiBjYW1sX29vX2xhc3RfaWQrKztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9yYXdfZmllbGQobyxpKSB7IHJldHVybiBvW2krMV0gfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkKG8saSx2KSB7IHJldHVybiBvW2krMV0gPSB2IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXG5mdW5jdGlvbiBjYW1sX29ial9yZWFjaGFibGVfd29yZHMobykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9hZGRfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX29ial9hZGRfb2Zmc2V0KHYsb2Zmc2V0KSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJPYmouYWRkX29mZnNldCBpcyBub3Qgc3VwcG9ydGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX29ial91cGRhdGVfdGFnKGIsbyxuKSB7XG4gICAgaWYoYlswXT09bykgeyBiWzBdID0gbjsgcmV0dXJuIDEgfVxuICAgIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZ1xuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nKG8pIHtcbiAgaWYgKChvIGluc3RhbmNlb2YgQXJyYXkpICYmIG9bMF0gPT0gKG9bMF0gPj4+IDApICYmXG4gICAgICBjYW1sX29ial91cGRhdGVfdGFnKG8sIDI0NiwgMjQ0KSkge1xuICAgIHJldHVybiAwO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZFxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuICBmdW5jdGlvbiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmQobykge1xuICBjYW1sX29ial91cGRhdGVfdGFnKG8sMjQ0LDI1MCk7XG4gIHJldHVybiAwOyAvLyB1bml0XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenlcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZXNldF90b19sYXp5KG8pIHtcbiAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLDI0NCwyNDYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3JlYWRfcmVzdWx0XG4vL1JlcXVpcmVzOiBjYW1sX29ial90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZWFkX3Jlc3VsdChvKSB7XG4gIHJldHVybiAoY2FtbF9vYmpfdGFnKG8pID09IDI1MCk/b1sxXTpvO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA8IDVcbmZ1bmN0aW9uIGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbi8vVmVyc2lvbjogPj0gNVxuZnVuY3Rpb24gY2FtbF9pc19jb250aW51YXRpb25fdGFnKHQpIHtcbiAgcmV0dXJuICh0ID09IDI0NSkgPyAxIDogMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2ludCBjb25zdCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcsIGNhbWxfc3RyX3JlcGVhdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfaW50KGZtdCwgaSkge1xuICBpZiAoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpID09IFwiJWRcIikgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIitpKTtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoaSA8IDApIHsgaWYgKGYuc2lnbmVkY29udikgeyBmLnNpZ24gPSAtMTsgaSA9IC1pOyB9IGVsc2UgaSA+Pj49IDA7IH1cbiAgdmFyIHMgPSBpLnRvU3RyaW5nKGYuYmFzZSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gcy5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBzID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgcztcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocykge1xuICB2YXIgaSA9IDAsIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSwgYmFzZSA9IDEwLCBzaWduID0gMTtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKSkge1xuICAgIGNhc2UgNDU6IGkrKzsgc2lnbiA9IC0xOyBicmVhaztcbiAgICBjYXNlIDQzOiBpKys7IHNpZ24gPSAxOyBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGkgKyAxIDwgbGVuICYmIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkgPT0gNDgpXG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKSkge1xuICAgIGNhc2UgMTIwOiBjYXNlIDg4OiBiYXNlID0gMTY7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTE6IGNhc2UgNzk6IGJhc2UgPSAgODsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlICA5ODogY2FzZSA2NjogYmFzZSA9ICAyOyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTE3OiBjYXNlIDg1OiBpICs9IDI7IGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIFtpLCBzaWduLCBiYXNlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9kaWdpdFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9kaWdpdChjKSB7XG4gIGlmIChjID49IDQ4ICYmIGMgPD0gNTcpICByZXR1cm4gYyAtIDQ4O1xuICBpZiAoYyA+PSA2NSAmJiBjIDw9IDkwKSAgcmV0dXJuIGMgLSA1NTtcbiAgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMjIpIHJldHVybiBjIC0gODc7XG4gIHJldHVybiAtMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX3BhcnNlX2RpZ2l0LCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2ludF9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIHRocmVzaG9sZCA9IC0xID4+PiAwO1xuICB2YXIgYyA9IChpIDwgbGVuKT9jYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpOjA7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBkO1xuICBmb3IgKGkrKztpPGxlbjtpKyspIHtcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgcmVzID0gYmFzZSAqIHJlcyArIGQ7XG4gICAgaWYgKHJlcyA+IHRocmVzaG9sZCkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgLy8gRm9yIGJhc2UgZGlmZmVyZW50IGZyb20gMTAsIHdlIGV4cGVjdCBhbiB1bnNpZ25lZCByZXByZXNlbnRhdGlvbixcbiAgLy8gaGVuY2UgYW55IHZhbHVlIG9mICdyZXMnIChsZXNzIHRoYW4gJ3RocmVzaG9sZCcpIGlzIGFjY2VwdGFibGUuXG4gIC8vIEJ1dCB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCBiYWNrIHRvIGEgc2lnbmVkIGludGVnZXIuXG4gIHJlcyA9IHNpZ24gKiByZXM7XG4gIGlmICgoYmFzZSA9PSAxMCkgJiYgKChyZXMgfCAwKSAhPSByZXMpKVxuICAgIC8qIFNpZ25lZCByZXByZXNlbnRhdGlvbiBleHBlY3RlZCwgYWxsb3cgLTJeKG5iaXRzLTEpIHRvIDJeKG5iaXRzLTEpIC0gMSAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tdWwgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbXVsKGEsYil7XG4gIHJldHVybiBNYXRoLmltdWwoYSxiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kaXZcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfZGl2KHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4gKHgveSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb2Rcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfbW9kKHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4geCV5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Jzd2FwMTZcbmZ1bmN0aW9uIGNhbWxfYnN3YXAxNih4KSB7XG4gIHJldHVybiAoKCgoeCAmIDB4MDBGRikgPDwgOCkgfFxuICAgICAgICAgICAoKHggJiAweEZGMDApID4+IDgpKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Jzd2FwXG5mdW5jdGlvbiBjYW1sX2ludDMyX2Jzd2FwKHgpIHtcbiAgcmV0dXJuICgoKHggJiAweDAwMDAwMEZGKSA8PCAyNCkgfFxuICAgICAgICAgICgoeCAmIDB4MDAwMEZGMDApIDw8IDgpIHxcbiAgICAgICAgICAoKHggJiAweDAwRkYwMDAwKSA+Pj4gOCkgfFxuICAgICAgICAgICgoeCAmIDB4RkYwMDAwMDApID4+PiAyNCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9ic3dhcFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9ic3dhcCh4KSB7XG4gIHZhciB5ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh4KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW3lbN10sIHlbNl0sIHlbNV0sIHlbNF0sIHlbM10sIHlbMl0sIHlbMV0sIHlbMF1dKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSGFzaHRibFxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF91bml2X3BhcmFtIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9WZXJzaW9uOiA8IDQuMTJcbmZ1bmN0aW9uIGNhbWxfaGFzaF91bml2X3BhcmFtIChjb3VudCwgbGltaXQsIG9iaikge1xuICB2YXIgaGFzaF9hY2N1ID0gMDtcbiAgZnVuY3Rpb24gaGFzaF9hdXggKG9iaikge1xuICAgIGxpbWl0IC0tO1xuICAgIGlmIChjb3VudCA8IDAgfHwgbGltaXQgPCAwKSByZXR1cm47XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5ICYmIG9ialswXSA9PT0gKG9ialswXXwwKSkge1xuICAgICAgc3dpdGNoIChvYmpbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9ialsyXSkgfCAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIGxpbWl0Kys7IGhhc2hfYXV4KG9iaik7IGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIG9ialswXSkgfCAwO1xuICAgICAgICBmb3IgKHZhciBpID0gb2JqLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIGhhc2hfYXV4IChvYmpbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhvYmopKSB7XG4gICAgICBjb3VudCAtLTtcbiAgICAgIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KG9iaik7XG4gICAgICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBmb3IgKHZhciBiID0gY29udGVudCwgbCA9IGIubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICAgIH0gZWxzZSB7IC8qIEFSUkFZICovXG4gICAgICAgIGZvciAodmFyIGEgPSBjb250ZW50LCBsID0gYS5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGFbaV0pIHwgMDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKG9iaikpIHtcbiAgICAgIHZhciBqc2J5dGVzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvYmopO1xuICAgICAgZm9yICh2YXIgYiA9IGpzYnl0ZXMsIGwgPSBqc2J5dGVzLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZm9yICh2YXIgYiA9IG9iaiwgbCA9IG9iai5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gKG9ianwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgY291bnQgLS07XG4gICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmopIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gK29iaikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGNvdW50LS07XG4gICAgICB2YXIgcCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAob2JqKSk7XG4gICAgICBmb3IgKHZhciBpID0gNzsgaSA+PSAwOyBpLS0pIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIHBbaV0pIHwgMDtcbiAgICB9IGVsc2UgaWYob2JqICYmIG9iai5jYW1sX2N1c3RvbSkge1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaCA9IGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gob2JqKSB8IDA7XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIGgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaGFzaF9hdXggKG9iaik7XG4gIHJldHVybiBoYXNoX2FjY3UgJiAweDNGRkZGRkZGO1xufVxuXG4vL2Z1bmN0aW9uIFJPVEwzMih4LG4pIHsgcmV0dXJuICgoeCA8PCBuKSB8ICh4ID4+PiAoMzItbikpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludChoLGQpIHtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4Y2M5ZTJkNTF8MCk7XG4gIGQgPSAoKGQgPDwgMTUpIHwgKGQgPj4+ICgzMi0xNSkpKTsgLy8gUk9UTDMyKGQsIDE1KTtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4MWI4NzM1OTMpO1xuICBoIF49IGQ7XG4gIGggPSAoKGggPDwgMTMpIHwgKGggPj4+ICgzMi0xMykpKTsgICAvL1JPVEwzMihoLCAxMyk7XG4gIHJldHVybiAoKChoICsgKGggPDwgMikpfDApICsgKDB4ZTY1NDZiNjR8MCkpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpIHtcbiAgaCBePSBoID4+PiAxNjtcbiAgaCA9IGNhbWxfbXVsIChoLCAweDg1ZWJjYTZifDApO1xuICBoIF49IGggPj4+IDEzO1xuICBoID0gY2FtbF9tdWwgKGgsIDB4YzJiMmFlMzV8MCk7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaGFzaF9taXhfaW50NjRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQgKGgsIHYwKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2ludDY0KGgsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAodjApKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2xvMzIsIGNhbWxfaW50NjRfaGkzMlxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQ2NCAoaCwgdikge1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9sbzMyKHYpKTtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfaGkzMih2KSk7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHMuY2hhckNvZGVBdChpKVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgOClcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzIpIDw8IDE2KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMykgPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHMuY2hhckNvZGVBdChpKzEpIDw8IDg7XG4gIGNhc2UgMTpcbiAgICB3IHw9IHMuY2hhckNvZGVBdChpKTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzW2ldXG4gICAgICB8IChzW2krMV0gPDwgOClcbiAgICAgIHwgKHNbaSsyXSA8PCAxNilcbiAgICAgIHwgKHNbaSszXSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHNbaSsyXSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHNbaSsxXSA8PCA4O1xuICBjYXNlIDE6IHcgfD0gc1tpXTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdikge1xuICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudCh2KTtcbiAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjb250ZW50KVxuICBlbHNlIC8qIEFSUkFZICovXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIGNvbnRlbnQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLCB2KSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZyh2KSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9mbG9hdCwgY2FtbF9oYXNoX21peF9zdHJpbmcsIGNhbWxfaGFzaF9taXhfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfaGFzaCAoY291bnQsIGxpbWl0LCBzZWVkLCBvYmopIHtcbiAgdmFyIHF1ZXVlLCByZCwgd3IsIHN6LCBudW0sIGgsIHYsIGksIGxlbjtcbiAgc3ogPSBsaW1pdDtcbiAgaWYgKHN6IDwgMCB8fCBzeiA+IDI1Nikgc3ogPSAyNTY7XG4gIG51bSA9IGNvdW50O1xuICBoID0gc2VlZDtcbiAgcXVldWUgPSBbb2JqXTsgcmQgPSAwOyB3ciA9IDE7XG4gIHdoaWxlIChyZCA8IHdyICYmIG51bSA+IDApIHtcbiAgICB2ID0gcXVldWVbcmQrK107XG4gICAgaWYgKHYgJiYgdi5jYW1sX2N1c3RvbSl7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGhoID0gY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2godik7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludCAoaCwgaGgpO1xuICAgICAgICBudW0gLS07XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgc3dpdGNoICh2WzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2WzJdKTtcbiAgICAgICAgbnVtLS07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgcXVldWVbLS1yZF0gPSB2WzFdO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh2WzBdKSkge1xuICAgICAgICAgIC8qIEFsbCBjb250aW51YXRpb25zIGhhc2ggdG8gdGhlIHNhbWUgdmFsdWUsXG4gICAgICAgICAgICAgc2luY2Ugd2UgaGF2ZSBubyBpZGVhIGhvdyB0byBkaXN0aW5ndWlzaCB0aGVtLiAqL1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0YWcgPSAoKHYubGVuZ3RoIC0gMSkgPDwgMTApIHwgdlswXTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHRhZyk7XG4gICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICBpZiAod3IgPj0gc3opIGJyZWFrO1xuICAgICAgICAgIHF1ZXVlW3dyKytdID0gdltpXTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodiA9PT0gKHZ8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2K3YrMSk7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCx2KTtcbiAgICAgIG51bS0tO1xuICAgIH1cbiAgfVxuICBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsLCBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfaGFzaChoLCB2KXtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpO1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBqc29vX2Zsb29yX2xvZzJcbnZhciBsb2cyX29rID0gTWF0aC5sb2cyICYmIE1hdGgubG9nMigxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNykgPT0gMTAyMFxuZnVuY3Rpb24ganNvb19mbG9vcl9sb2cyKHgpIHtcbiAgaWYobG9nMl9vaykgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5sb2cyKHgpKVxuICB2YXIgaSA9IDA7XG4gIGlmICh4ID09IDApIHJldHVybiAtSW5maW5pdHk7XG4gIGlmKHg+PTEpIHt3aGlsZSAoeD49Mikge3gvPTI7IGkrK30gfVxuICBlbHNlIHt3aGlsZSAoeCA8IDEpIHt4Kj0yOyBpLS19IH07XG4gIHJldHVybiBpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMiwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAoeCkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDEsIDAsIDB4N2ZmMCk7XG4gICAgaWYgKHggPiAwKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4N2ZmMClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHhmZmYwKVxuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MHg4MDAwOih4Pj0wKT8wOjB4ODAwMDtcbiAgaWYgKHNpZ24pIHggPSAteDtcbiAgLy8gSW50NjQuYml0c19vZl9mbG9hdCAxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNyA9IDB4N2ZiMDAwMDAwMDAwMDAwMExcbiAgLy8gdXNpbmcgTWF0aC5MT0cyRSpNYXRoLmxvZyh4KSBpbiBwbGFjZSBvZiBNYXRoLmxvZzIgcmVzdWx0IGluIHByZWNpc2lvbiBsb3N0XG4gIHZhciBleHAgPSBqc29vX2Zsb29yX2xvZzIoeCkgKyAxMDIzO1xuICBpZiAoZXhwIDw9IDApIHtcbiAgICBleHAgPSAwO1xuICAgIHggLz0gTWF0aC5wb3coMiwtMTAyNik7XG4gIH0gZWxzZSB7XG4gICAgeCAvPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgICBpZiAoeCA8IDE2KSB7XG4gICAgICB4ICo9IDI7IGV4cCAtPTE7IH1cbiAgICBpZiAoZXhwID09IDApIHtcbiAgICAgIHggLz0gMjsgfVxuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwyNCk7XG4gIHZhciByMyA9IHh8MDtcbiAgeCA9ICh4IC0gcjMpICogaztcbiAgdmFyIHIyID0geHwwO1xuICB4ID0gKHggLSByMikgKiBrO1xuICB2YXIgcjEgPSB4fDA7XG4gIHIzID0gKHIzICYweGYpIHwgc2lnbiB8IGV4cCA8PCA0O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkocjEsIHIyLCByMyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheSgxKTtcbiAgZmxvYXQzMmFbMF0gPSB4O1xuICB2YXIgaW50MzJhID0gbmV3IEludDMyQXJyYXkoZmxvYXQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGludDMyYVswXSB8IDA7XG59XG5cbi8vRlAgbGl0ZXJhbHMgY2FuIGJlIHdyaXR0ZW4gdXNpbmcgdGhlIGhleGFkZWNpbWFsXG4vL25vdGF0aW9uIDB4PG1hbnRpc3NhIGluIGhleD5wPGV4cG9uZW50PiBmcm9tIElTTyBDOTkuXG4vL2h0dHBzOi8vZ2l0aHViLmNvbS9kYW5rb2dhaS9qcy1oZXhmbG9hdC9ibG9iL21hc3Rlci9oZXhmbG9hdC5qc1xuLy9Qcm92aWRlczogY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0ICh4LCBwcmVjLCBzdHlsZSkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJuYW5cIik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nICgoeCA+IDApP1wiaW5maW5pdHlcIjpcIi1pbmZpbml0eVwiKTtcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzE6KHg+PTApPzA6MTtcbiAgaWYoc2lnbikgeCA9IC14O1xuICB2YXIgZXhwID0gMDtcbiAgaWYgKHggPT0gMCkgeyB9XG4gIGVsc2UgaWYgKHggPCAxKSB7XG4gICAgd2hpbGUgKHggPCAxICYmIGV4cCA+IC0xMDIyKSAgeyB4ICo9IDI7IGV4cC0tIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoeCA+PSAyKSB7IHggLz0gMjsgZXhwKysgfVxuICB9XG4gIHZhciBleHBfc2lnbiA9IGV4cCA8IDAgPyAnJyA6ICcrJztcbiAgdmFyIHNpZ25fc3RyID0gJyc7XG4gIGlmIChzaWduKSBzaWduX3N0ciA9ICctJ1xuICBlbHNlIHtcbiAgICBzd2l0Y2goc3R5bGUpe1xuICAgIGNhc2UgNDMgLyogJysnICovOiBzaWduX3N0ciA9ICcrJzsgYnJlYWs7XG4gICAgY2FzZSAzMiAvKiAnICcgKi86IHNpZ25fc3RyID0gJyAnOyBicmVhaztcbiAgICBkZWZhdWx0OiBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHByZWMgPj0gMCAmJiBwcmVjIDwgMTMpIHtcbiAgICAvKiBJZiBhIHByZWNpc2lvbiBpcyBnaXZlbiwgYW5kIGlzIHNtYWxsLCByb3VuZCBtYW50aXNzYSBhY2NvcmRpbmdseSAqL1xuICAgIHZhciBjc3QgPSBNYXRoLnBvdygyLHByZWMgKiA0KTtcbiAgICB4ID0gTWF0aC5yb3VuZCh4ICogY3N0KSAvIGNzdDtcbiAgfVxuICB2YXIgeF9zdHIgPSB4LnRvU3RyaW5nKDE2KTtcbiAgaWYocHJlYyA+PSAwKXtcbiAgICB2YXIgaWR4ID0geF9zdHIuaW5kZXhPZignLicpO1xuICAgIGlmKGlkeDwwKSB7XG4gICAgICB4X3N0ciArPSAnLicgKyBjYW1sX3N0cl9yZXBlYXQocHJlYywgJzAnKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB2YXIgc2l6ZSA9IGlkeCsxK3ByZWM7XG4gICAgICBpZih4X3N0ci5sZW5ndGggPCBzaXplKVxuICAgICAgICB4X3N0ciArPSBjYW1sX3N0cl9yZXBlYXQoc2l6ZSAtIHhfc3RyLmxlbmd0aCwgJzAnKTtcbiAgICAgIGVsc2VcbiAgICAgICAgeF9zdHIgPSB4X3N0ci5zdWJzdHIoMCxzaXplKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzaWduX3N0ciArICcweCcgKyB4X3N0ciArICdwJyArIGV4cF9zaWduICsgZXhwLnRvU3RyaW5nKDEwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBsbyA9IHgubG87XG4gIHZhciBtaSA9IHgubWk7XG4gIHZhciBoaSA9IHguaGk7XG4gIHZhciBleHAgPSAoaGkgJiAweDdmZmYpID4+IDQ7XG4gIGlmIChleHAgPT0gMjA0Nykge1xuICAgIGlmICgobG98bWl8KGhpJjB4ZikpID09IDApXG4gICAgICByZXR1cm4gKGhpICYgMHg4MDAwKT8oLUluZmluaXR5KTpJbmZpbml0eTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTmFOO1xuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwtMjQpO1xuICB2YXIgcmVzID0gKGxvKmsrbWkpKmsrKGhpJjB4Zik7XG4gIGlmIChleHAgPiAwKSB7XG4gICAgcmVzICs9IDE2O1xuICAgIHJlcyAqPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgfSBlbHNlXG4gICAgcmVzICo9IE1hdGgucG93KDIsLTEwMjYpO1xuICBpZiAoaGkgJiAweDgwMDApIHJlcyA9IC0gcmVzO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25leHRhZnRlcl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X3N1YixjYW1sX2ludDY0X29mX2ludDMyXG5mdW5jdGlvbiBjYW1sX25leHRhZnRlcl9mbG9hdCAoeCx5KSB7XG4gIGlmKGlzTmFOKHgpIHx8IGlzTmFOKHkpKSByZXR1cm4gTmFOO1xuICBpZih4PT15KSByZXR1cm4geTtcbiAgaWYoeD09MCl7XG4gICAgaWYoeSA8IDApXG4gICAgICByZXR1cm4gLU1hdGgucG93KDIsIC0xMDc0KVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBNYXRoLnBvdygyLCAtMTA3NClcbiAgfVxuICB2YXIgYml0cyA9IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh4KTtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoMSk7XG4gIGlmICgoeDx5KSA9PSAoeD4wKSlcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9hZGQoYml0cywgb25lKVxuICBlbHNlXG4gICAgYml0cyA9IGNhbWxfaW50NjRfc3ViKGJpdHMsIG9uZSlcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhiaXRzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF90cnVuY19mbG9hdFxuZnVuY3Rpb24gY2FtbF90cnVuY19mbG9hdCh4KXtcbiAgcmV0dXJuIE1hdGgudHJ1bmMoeCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBpbnQzMmEgPSBuZXcgSW50MzJBcnJheSgxKTtcbiAgaW50MzJhWzBdID0geDtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheShpbnQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGZsb2F0MzJhWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NsYXNzaWZ5X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPj0gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHJldHVybiAwO1xuICAgIGlmICh4ICE9IDApIHJldHVybiAxO1xuICAgIHJldHVybiAyO1xuICB9XG4gIHJldHVybiBpc05hTih4KT80OjM7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21vZGZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbW9kZl9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgdmFyIG5lZyA9ICgxL3gpIDwgMDtcbiAgICB4ID0gTWF0aC5hYnMoeCk7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yICh4KTtcbiAgICB2YXIgZiA9IHggLSBpO1xuICAgIGlmIChuZWcpIHsgaSA9IC1pOyBmID0gLWY7IH1cbiAgICByZXR1cm4gWzAsIGYsIGldO1xuICB9XG4gIGlmIChpc05hTiAoeCkpIHJldHVybiBbMCwgTmFOLCBOYU5dO1xuICByZXR1cm4gWzAsIDEveCwgeF07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xkZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xkZXhwX2Zsb2F0ICh4LGV4cCkge1xuICBleHAgfD0gMDtcbiAgaWYgKGV4cCA+IDEwMjMpIHtcbiAgICBleHAgLT0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIGlmIChleHAgPiAxMDIzKSB7ICAvLyBpbiBjYXNlIHggaXMgc3Vibm9ybWFsXG4gICAgICBleHAgLT0gMTAyMztcbiAgICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgfVxuICB9XG4gIGlmIChleHAgPCAtMTAyMykge1xuICAgIGV4cCArPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpO1xuICB9XG4gIHggKj0gTWF0aC5wb3coMiwgZXhwKTtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXhwX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfZnJleHBfZmxvYXQgKHgpIHtcbiAgaWYgKCh4ID09IDApIHx8ICFpc0Zpbml0ZSh4KSkgcmV0dXJuIFswLCB4LCAwXTtcbiAgdmFyIG5lZyA9IHggPCAwO1xuICBpZiAobmVnKSB4ID0gLSB4O1xuICB2YXIgZXhwID0gTWF0aC5tYXgoLTEwMjMsIGpzb29fZmxvb3JfbG9nMih4KSArIDEpO1xuICB4ICo9IE1hdGgucG93KDIsLWV4cCk7XG4gIHdoaWxlICh4IDwgMC41KSB7XG4gICAgeCAqPSAyO1xuICAgIGV4cC0tO1xuICB9XG4gIHdoaWxlICh4ID49IDEpIHtcbiAgICB4ICo9IDAuNTtcbiAgICBleHArKztcbiAgfVxuICBpZiAobmVnKSB4ID0gLSB4O1xuICByZXR1cm4gWzAsIHgsIGV4cF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbG9hdF9jb21wYXJlICh4LCB5KSB7XG4gIGlmICh4ID09PSB5KSByZXR1cm4gMDtcbiAgaWYgKHggPCB5KSByZXR1cm4gLTE7XG4gIGlmICh4ID4geSkgcmV0dXJuIDE7XG4gIGlmICh4ID09PSB4KSByZXR1cm4gMTtcbiAgaWYgKHkgPT09IHkpIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29weXNpZ25fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29weXNpZ25fZmxvYXQgKHgsIHkpIHtcbiAgaWYgKHkgPT0gMCkgeSA9IDEgLyB5O1xuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHJldHVybiAoeSA8IDApPygteCk6eDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zaWduYml0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpZ25iaXRfZmxvYXQoeCkge1xuICBpZiAoeCA9PSAwKSB4ID0gMSAvIHg7XG4gIHJldHVybiAoeCA8IDApPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9leHBtMV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHBtMV9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5leHBtMSh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9leHAyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cDJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5wb3coMiwgeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMXBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMXBfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cxcCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cyKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2h5cG90X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2h5cG90X2Zsb2F0ICh4LCB5KSB7IHJldHVybiBNYXRoLmh5cG90KHgsIHkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzEwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzEwX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmxvZzEwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Nvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Fjb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Fjb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFjb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3NpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5zaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2FzaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2FzaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFzaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3RhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC50YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2F0YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2F0YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmF0YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JvdW5kX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3JvdW5kX2Zsb2F0ICh4KSB7XG4gIGlmICh4ID49IDApIHtcbiAgICB2YXIgeSA9IE1hdGguZmxvb3IoeCk7XG4gICAgcmV0dXJuICh4IC0geSA+PSAwLjUpPyh5ICsgMSk6eVxuICB9IGVsc2Uge1xuICAgIHZhciB5ID0gTWF0aC5jZWlsKHgpO1xuICAgIHJldHVybiAoeSAtIHggPj0gMC41KT8oeSAtIDEpOnlcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jYnJ0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NicnRfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY2JydCh4KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9lcmZfZmxvYXQoeCkge1xuICB2YXIgYTEgPSAwLjI1NDgyOTU5MjtcbiAgdmFyIGEyID0gLTAuMjg0NDk2NzM2O1xuICB2YXIgYTMgPSAxLjQyMTQxMzc0MTtcbiAgdmFyIGE0ID0gLTEuNDUzMTUyMDI3O1xuICB2YXIgYTUgPSAxLjA2MTQwNTQyOTtcbiAgdmFyIHAgPSAwLjMyNzU5MTE7XG5cbiAgdmFyIHNpZ24gPSAxO1xuICBpZiAoeCA8IDApIHtcbiAgICBzaWduID0gLTE7XG4gIH1cbiAgeCA9IE1hdGguYWJzKHgpO1xuICB2YXIgdCA9IDEuMCAvICgxLjAgKyBwICogeCk7XG4gIHZhciB5ID0gMS4wIC0gKCgoKGE1ICogdCArIGE0KSAqIHQgKyBhMykgKiB0ICsgYTIpICogdCArIGExKSAqIHQgKiBNYXRoLmV4cCgteCAqIHgpO1xuXG4gIHJldHVybiBzaWduICogeTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZjX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2VyZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9lcmZjX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIDEgLSBjYW1sX2VyZl9mbG9hdCh4KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZtYV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbWFfZmxvYXQoeCwgeSwgeikge1xuICB2YXIgU1BMSVQgPSBNYXRoLnBvdygyLCAyNykgKyAxO1xuICB2YXIgTUlOX1ZBTFVFID0gTWF0aC5wb3coMiwgLTEwMjIpO1xuICB2YXIgRVBTSUxPTiA9IE1hdGgucG93KDIsIC01Mik7XG4gIHZhciBDID0gNDE2O1xuICB2YXIgQSA9IE1hdGgucG93KDIsICtDKTtcbiAgdmFyIEIgPSBNYXRoLnBvdygyLCAtQyk7XG5cbiAgZnVuY3Rpb24gbXVsdGlwbHkgKGEsIGIpIHtcbiAgICB2YXIgYXQgPSBTUExJVCAqIGE7XG4gICAgdmFyIGFoaSA9IGF0IC0gKGF0IC0gYSk7XG4gICAgdmFyIGFsbyA9IGEgLSBhaGk7XG4gICAgdmFyIGJ0ID0gU1BMSVQgKiBiO1xuICAgIHZhciBiaGkgPSBidCAtIChidCAtIGIpO1xuICAgIHZhciBibG8gPSBiIC0gYmhpO1xuICAgIHZhciBwID0gYSAqIGI7XG4gICAgdmFyIGUgPSAoKGFoaSAqIGJoaSAtIHApICsgYWhpICogYmxvICsgYWxvICogYmhpKSArIGFsbyAqIGJsbztcbiAgICByZXR1cm4ge1xuICAgICAgcDogcCxcbiAgICAgIGU6IGVcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHZhciBzID0gYSArIGI7XG4gICAgdmFyIHYgPSBzIC0gYTtcbiAgICB2YXIgZSA9IChhIC0gKHMgLSB2KSkgKyAoYiAtIHYpO1xuICAgIHJldHVybiB7XG4gICAgICBzOiBzLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRqdXN0ICh4LCB5KSB7XG4gICAgcmV0dXJuIHggIT09IDAgJiYgeSAhPT0gMCAmJiBTUExJVCAqIHggLSAoU1BMSVQgKiB4IC0geCkgPT09IHggPyB4ICogKDEgKyAoeCA8IDAgPyAtMSA6ICsxKSAqICh5IDwgMCA/IC0xIDogKzEpICogRVBTSUxPTikgOiB4O1xuICB9O1xuXG4gIGlmICh4ID09PSAwIHx8IHggIT09IHggfHwgeCA9PT0gKzEgLyAwIHx8IHggPT09IC0xIC8gMCB8fFxuICAgICAgeSA9PT0gMCB8fCB5ICE9PSB5IHx8IHkgPT09ICsxIC8gMCB8fCB5ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKyB6O1xuICB9XG4gIGlmICh6ID09PSAwKSB7XG4gICAgcmV0dXJuIHggKiB5O1xuICB9XG4gIGlmICh6ICE9PSB6IHx8IHogPT09ICsxIC8gMCB8fCB6ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciBzY2FsZSA9IDE7XG4gIHdoaWxlIChNYXRoLmFicyh4KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHggKj0gQjtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB5ICo9IEI7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAxIC8gMCkge1xuICAgIHJldHVybiB4ICogeSAqIHNjYWxlO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh4KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHggKj0gQTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB5ICo9IEE7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAwKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgeHMgPSB4O1xuICB2YXIgeXMgPSB5O1xuICB2YXIgenMgPSB6IC8gc2NhbGU7XG5cbiAgaWYgKE1hdGguYWJzKHpzKSA+IE1hdGguYWJzKHhzICogeXMpICogNCAvIEVQU0lMT04pIHtcbiAgICByZXR1cm4gejtcbiAgfVxuICBpZiAoTWF0aC5hYnMoenMpIDwgTWF0aC5hYnMoeHMgKiB5cykgKiBFUFNJTE9OIC8gNCAqIEVQU0lMT04gLyA0KSB7XG4gICAgenMgPSAoeiA8IDAgPyAtMSA6ICsxKSAqIE1JTl9WQUxVRTtcbiAgfVxuXG4gIHZhciB4eSA9IG11bHRpcGx5KHhzLCB5cyk7XG4gIHZhciBzID0gYWRkKHh5LnAsIHpzKTtcbiAgdmFyIHUgPSBhZGQoeHkuZSwgcy5lKTtcbiAgdmFyIGkgPSBhZGQocy5zLCB1LnMpO1xuXG4gIHZhciBmID0gaS5zICsgYWRqdXN0KGkuZSwgdS5lKTtcbiAgaWYgKGYgPT09IDApIHtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIHZhciBmcyA9IGYgKiBzY2FsZTtcbiAgaWYgKE1hdGguYWJzKGZzKSA+IE1JTl9WQUxVRSkge1xuICAgIHJldHVybiBmcztcbiAgfVxuXG4gIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgd2FzIGV4dHJhIHJvdW5kaW5nIGZvciBhIGRlbm9ybWFsaXplZCB2YWx1ZS5cbiAgcmV0dXJuIGZzICsgYWRqdXN0KGYgLSBmcyAvIHNjYWxlLCBpLmUpICogc2NhbGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZmxvYXQgKGZtdCwgeCkge1xuICBmdW5jdGlvbiB0b0ZpeGVkKHgsZHApIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPCAxLjApIHtcbiAgICAgIHJldHVybiB4LnRvRml4ZWQoZHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZSA9IHBhcnNlSW50KHgudG9TdHJpbmcoKS5zcGxpdCgnKycpWzFdKTtcbiAgICAgIGlmIChlID4gMjApIHtcbiAgICAgICAgZSAtPSAyMDtcbiAgICAgICAgeCAvPSBNYXRoLnBvdygxMCxlKTtcbiAgICAgICAgeCArPSAobmV3IEFycmF5KGUrMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgaWYoZHAgPiAwKSB7XG4gICAgICAgICAgeCA9IHggKyAnLicgKyAobmV3IEFycmF5KGRwKzEpKS5qb2luKCcwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgICB9XG4gICAgICBlbHNlIHJldHVybiB4LnRvRml4ZWQoZHApXG4gICAgfVxuICB9XG4gIHZhciBzLCBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgdmFyIHByZWMgPSAoZi5wcmVjIDwgMCk/NjpmLnByZWM7XG4gIGlmICh4IDwgMCB8fCAoeCA9PSAwICYmIDEveCA9PSAtSW5maW5pdHkpKSB7IGYuc2lnbiA9IC0xOyB4ID0gLXg7IH1cbiAgaWYgKGlzTmFOKHgpKSB7IHMgPSBcIm5hblwiOyBmLmZpbGxlciA9ICcgJzsgfVxuICBlbHNlIGlmICghaXNGaW5pdGUoeCkpIHsgcyA9IFwiaW5mXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2VcbiAgICBzd2l0Y2ggKGYuY29udikge1xuICAgIGNhc2UgJ2UnOlxuICAgICAgdmFyIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyk7XG4gICAgICAvLyBleHBvbmVudCBzaG91bGQgYmUgYXQgbGVhc3QgdHdvIGRpZ2l0c1xuICAgICAgdmFyIGkgPSBzLmxlbmd0aDtcbiAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICBzID0gcy5zbGljZSAoMCwgaSAtIDEpICsgJzAnICsgcy5zbGljZSAoaSAtIDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZic6XG4gICAgICBzID0gdG9GaXhlZCh4LCBwcmVjKTsgYnJlYWs7XG4gICAgY2FzZSAnZyc6XG4gICAgICBwcmVjID0gcHJlYz9wcmVjOjE7XG4gICAgICBzID0geC50b0V4cG9uZW50aWFsKHByZWMgLSAxKTtcbiAgICAgIHZhciBqID0gcy5pbmRleE9mKCdlJyk7XG4gICAgICB2YXIgZXhwID0gK3Muc2xpY2UoaiArIDEpO1xuICAgICAgaWYgKGV4cCA8IC00IHx8IHggPj0gMWUyMSB8fCB4LnRvRml4ZWQoMCkubGVuZ3RoID4gcHJlYykge1xuICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgemVyb2VzXG4gICAgICAgIHZhciBpID0gaiAtIDE7IHdoaWxlIChzLmNoYXJBdChpKSA9PSAnMCcpIGktLTtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSkgKyBzLnNsaWNlKGopO1xuICAgICAgICBpID0gcy5sZW5ndGg7XG4gICAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHAgPSBwcmVjO1xuICAgICAgICBpZiAoZXhwIDwgMCkgeyBwIC09IGV4cCArIDE7IHMgPSB4LnRvRml4ZWQocCk7IH1cbiAgICAgICAgZWxzZSB3aGlsZSAocyA9IHgudG9GaXhlZChwKSwgcy5sZW5ndGggPiBwcmVjICsgMSkgcC0tO1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICB2YXIgaSA9IHMubGVuZ3RoIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSAnLicpIGktLTtcbiAgICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHJlcztcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocylcbiAgcmVzID0gK3M7XG4gIGlmICgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKSByZXR1cm4gcmVzO1xuICBzID0gcy5yZXBsYWNlKC9fL2csXCJcIik7XG4gIHJlcyA9ICtzO1xuICBpZiAoKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHx8IC9eWystXT9uYW4kL2kudGVzdChzKSkgcmV0dXJuIHJlcztcbiAgdmFyIG0gPSAvXiAqKFsrLV0/KTB4KFswLTlhLWZdKylcXC4/KFswLTlhLWZdKikocChbKy1dP1swLTldKykpPy9pLmV4ZWMocyk7XG4gIC8vICAgICAgICAgIDEgICAgICAgIDIgICAgICAgICAgICAgMyAgICAgICAgICAgNVxuICBpZihtKXtcbiAgICB2YXIgbTMgPSBtWzNdLnJlcGxhY2UoLzArJC8sJycpO1xuICAgIHZhciBtYW50aXNzYSA9IHBhcnNlSW50KG1bMV0gKyBtWzJdICsgbTMsIDE2KTtcbiAgICB2YXIgZXhwb25lbnQgPSAobVs1XXwwKSAtIDQqbTMubGVuZ3RoO1xuICAgIHJlcyA9IG1hbnRpc3NhICogTWF0aC5wb3coMiwgZXhwb25lbnQpO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgaWYoL15cXCs/aW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIEluZmluaXR5O1xuICBpZigvXi1pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gLUluZmluaXR5O1xuICBjYW1sX2ZhaWx3aXRoKFwiZmxvYXRfb2Zfc3RyaW5nXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG52YXIgY2FtbF9pbnQ2NF9vZmZzZXQgPSBNYXRoLnBvdygyLCAtMjQpO1xuXG4vL1Byb3ZpZGVzOiBNbEludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gTWxJbnQ2NCAobG8sbWksaGkpIHtcbiAgdGhpcy5sbyA9IGxvICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSBtaSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gaGkgJiAweGZmZmY7XG59XG5NbEludDY0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX2pcIlxuTWxJbnQ2NC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8sdGhpcy5taSx0aGlzLmhpKTtcbn1cblxuTWxJbnQ2NC5wcm90b3R5cGUudWNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICBpZiAodGhpcy5oaSA+IHguaGkpIHJldHVybiAxO1xuICBpZiAodGhpcy5oaSA8IHguaGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgaGkgPSB0aGlzLmhpIDw8IDE2O1xuICB2YXIgeGhpID0geC5oaSA8PCAxNjtcbiAgaWYgKGhpID4geGhpKSByZXR1cm4gMTtcbiAgaWYgKGhpIDwgeGhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICBpZiAodGhpcy5sbyA8IHgubG8pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsbyA9IC0gdGhpcy5sbztcbiAgdmFyIG1pID0gLSB0aGlzLm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gLSB0aGlzLmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyArIHgubG87XG4gIHZhciBtaSA9IHRoaXMubWkgKyB4Lm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gdGhpcy5oaSArIHguaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvIC0geC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSAtIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpIC0geC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gKiB4LmxvO1xuICB2YXIgbWkgPSAoKGxvICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLm1pICogeC5sbyArIHRoaXMubG8gKiB4Lm1pO1xuICB2YXIgaGkgPSAoKG1pICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLmhpICogeC5sbyArIHRoaXMubWkgKiB4Lm1pICsgdGhpcy5sbyAqIHguaGk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICh0aGlzLmxvfHRoaXMubWl8dGhpcy5oaSkgPT0gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMuaGkgPDwgMTYpIDwgMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvICYgeC5sbywgdGhpcy5taSAmIHgubWksIHRoaXMuaGkgJiB4LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG98eC5sbywgdGhpcy5taXx4Lm1pLCB0aGlzLmhpfHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG9eeC5sbywgdGhpcy5taV54Lm1pLCB0aGlzLmhpXnguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfbGVmdCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICBpZiAocyA8IDI0KSB7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICh0aGlzLmxvIDw8IHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCBzKSB8ICh0aGlzLmxvID4+ICgyNCAtIHMpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmhpIDw8IHMpIHwgKHRoaXMubWkgPj4gKDI0IC0gcykpKTtcbiAgfVxuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG8gPDwgKHMgLSAyNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCAocyAtIDI0KSkgfCAodGhpcy5sbyA+PiAoNDggLSBzKSkpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoMCwgMCwgdGhpcy5sbyA8PCAocyAtIDQ4KSlcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X3JpZ2h0X3Vuc2lnbmVkID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAodGhpcy5oaSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5oaSA+PiBzKSk7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IChzIC0gMjQpKSxcbiAgICAgIDApO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMuaGkgPj4gKHMgLSA0OCksIDAsIDApO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgdmFyIGggPSAodGhpcy5oaSA8PCAxNikgPj4gMTY7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAoaCA8PCAoMjQgLSBzKSksXG4gICAgICAoKHRoaXMuaGkgPDwgMTYpID4+IHMpID4+PiAxNik7XG4gIHZhciBzaWduID0gKHRoaXMuaGkgPDwgMTYpID4+IDMxO1xuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5taSA+PiAocyAtIDI0KSkgfCAodGhpcy5oaSA8PCAoNDggLSBzKSksXG4gICAgICAodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAyNCkgPj4gMTYsXG4gICAgICBzaWduICYgMHhmZmZmKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0ICgodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAzMiksIHNpZ24sIHNpZ24pO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNsMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5oaSA9ICh0aGlzLmhpIDw8IDEpIHwgKHRoaXMubWkgPj4gMjMpO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pIDw8IDEpIHwgKHRoaXMubG8gPj4gMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmxvID0gKHRoaXMubG8gPDwgMSkgJiAweGZmZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxzcjEgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG8gPSAoKHRoaXMubG8gPj4+IDEpIHwgKHRoaXMubWkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pID4+PiAxKSB8ICh0aGlzLmhpIDw8IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IHRoaXMuaGkgPj4+IDE7XG59XG5NbEludDY0LnByb3RvdHlwZS51ZGl2bW9kID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIG9mZnNldCA9IDA7XG4gIHZhciBtb2R1bHVzID0gdGhpcy5jb3B5KCk7XG4gIHZhciBkaXZpc29yID0geC5jb3B5KCk7XG4gIHZhciBxdW90aWVudCA9IG5ldyBNbEludDY0KDAsMCwwKTtcbiAgd2hpbGUgKG1vZHVsdXMudWNvbXBhcmUoZGl2aXNvcikgPiAwKSB7XG4gICAgb2Zmc2V0Kys7XG4gICAgZGl2aXNvci5sc2wxKCk7XG4gIH1cbiAgd2hpbGUgKG9mZnNldCA+PSAwKSB7XG4gICAgb2Zmc2V0IC0tO1xuICAgIHF1b3RpZW50LmxzbDEoKTtcbiAgICBpZiAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+PSAwKSB7XG4gICAgICBxdW90aWVudC5sbyArKztcbiAgICAgIG1vZHVsdXMgPSBtb2R1bHVzLnN1YihkaXZpc29yKTtcbiAgICB9XG4gICAgZGl2aXNvci5sc3IxKCk7XG4gIH1cbiAgcmV0dXJuIHsgcXVvdGllbnQgOiBxdW90aWVudCwgbW9kdWx1cyA6IG1vZHVsdXMgfTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGkgXiB5LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHEgPSB4LnVkaXZtb2QoeSkucXVvdGllbnQ7XG4gIGlmIChzaWduICYgMHg4MDAwKSBxID0gcS5uZWcoKTtcbiAgcmV0dXJuIHE7XG59XG5NbEludDY0LnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiAoeSlcbntcbiAgdmFyIHggPSB0aGlzO1xuICBpZiAoeS5pc1plcm8oKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgdmFyIHNpZ24gPSB4LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHIgPSB4LnVkaXZtb2QoeSkubW9kdWx1cztcbiAgaWYgKHNpZ24gJiAweDgwMDApIHIgPSByLm5lZygpO1xuICByZXR1cm4gcjtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvSW50ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICh0aGlzLm1pIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvRmxvYXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMuaGkgPDwgMTYpICogTWF0aC5wb3coMiwgMzIpICsgdGhpcy5taSAqIE1hdGgucG93KDIsIDI0KSkgKyB0aGlzLmxvO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFt0aGlzLmhpID4+IDgsXG4gICAgICAgICAgdGhpcy5oaSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSA+PiAxNixcbiAgICAgICAgICAodGhpcy5taSA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyA+PiAxNixcbiAgICAgICAgICAodGhpcy5sbyA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyAmIDB4ZmZdO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubG8zMiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubG8gfCAoKHRoaXMubWkgJiAweGZmKSA8PCAyNCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5oaTMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKCh0aGlzLm1pID4+PiA4KSAmIDB4ZmZmZikgfCAodGhpcy5oaSA8PCAxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdWx0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3VsdCh4LHkpIHsgcmV0dXJuIHgudWNvbXBhcmUoeSkgPCAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jb21wYXJlKHgseSwgdG90YWwpIHsgcmV0dXJuIHguY29tcGFyZSh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbmVnIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X25lZyAoeCkgeyByZXR1cm4geC5uZWcoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYWRkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FkZCAoeCwgeSkgeyByZXR1cm4geC5hZGQoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3N1YiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zdWIgKHgsIHkpIHsgcmV0dXJuIHguc3ViKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tdWwgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2ludDY0X211bCh4LHkpIHsgcmV0dXJuIHgubXVsKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc196ZXJvIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX3plcm8oeCkgeyByZXR1cm4gK3guaXNaZXJvKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSB7IHJldHVybiAreC5pc05lZygpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYW5kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FuZCAoeCwgeSkgeyByZXR1cm4geC5hbmQoeSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vciAoeCwgeSkgeyByZXR1cm4geC5vcih5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3hvciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF94b3IgKHgsIHkpIHsgcmV0dXJuIHgueG9yKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfbGVmdChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHRfdW5zaWduZWQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0ICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X3JpZ2h0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9kaXYgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZGl2ICh4LCB5KSB7IHJldHVybiB4LmRpdih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbW9kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X21vZCAoeCwgeSkgeyByZXR1cm4geC5tb2QoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2ludDMyIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2ludDMyICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh4ICYgMHhmZmZmZmYsICh4ID4+IDI0KSAmIDB4ZmZmZmZmLCAoeCA+PiAzMSkgJiAweGZmZmYpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9faW50MzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9faW50MzIgKHgpIHsgcmV0dXJuIHgudG9JbnQoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fZmxvYXQgKHgpIHsgcmV0dXJuIHgudG9GbG9hdCAoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2Zsb2F0ICh4KSB7XG4gIGlmICh4IDwgMCkgeCA9IE1hdGguY2VpbCh4KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KFxuICAgIHggJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCkgJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZm9ybWF0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdG9faW50MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zvcm1hdCAoZm10LCB4KSB7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGYuc2lnbmVkY29udiAmJiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpKSB7XG4gICAgZi5zaWduID0gLTE7IHggPSBjYW1sX2ludDY0X25lZyh4KTtcbiAgfVxuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgdmFyIHdiYXNlID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihmLmJhc2UpO1xuICB2YXIgY3Z0YmwgPSBcIjAxMjM0NTY3ODlhYmNkZWZcIjtcbiAgZG8ge1xuICAgIHZhciBwID0geC51ZGl2bW9kKHdiYXNlKTtcbiAgICB4ID0gcC5xdW90aWVudDtcbiAgICBidWZmZXIgPSBjdnRibC5jaGFyQXQoY2FtbF9pbnQ2NF90b19pbnQzMihwLm1vZHVsdXMpKSArIGJ1ZmZlcjtcbiAgfSB3aGlsZSAoISBjYW1sX2ludDY0X2lzX3plcm8oeCkpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBidWZmZXIgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBidWZmZXI7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgYnVmZmVyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9mYWlsd2l0aCwgY2FtbF9wYXJzZV9kaWdpdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF91bHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCxjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX3N0cmluZyhzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBiYXNlNjQgPSBjYW1sX2ludDY0X29mX2ludDMyKGJhc2UpO1xuICB2YXIgdGhyZXNob2xkID1cbiAgICAgIG5ldyBNbEludDY0KDB4ZmZmZmZmLCAweGZmZmZmZmYsIDB4ZmZmZikudWRpdm1vZChiYXNlNjQpLnF1b3RpZW50O1xuICB2YXIgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICBmb3IgKDs7KSB7XG4gICAgaSsrO1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gbXVsdGlwbGljYXRpb24gYmFzZSAqIHJlcyAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdCh0aHJlc2hvbGQsIHJlcykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAgIGQgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfYWRkKGNhbWxfaW50NjRfbXVsKGJhc2U2NCwgcmVzKSwgZCk7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIGFkZGl0aW9uIChiYXNlICogcmVzKSArIGQgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQocmVzLCBkKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKGJhc2UgPT0gMTAgJiYgY2FtbF9pbnQ2NF91bHQobmV3IE1sSW50NjQoMCwgMCwgMHg4MDAwKSwgcmVzKSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKHNpZ24gPCAwKSByZXMgPSBjYW1sX2ludDY0X25lZyhyZXMpO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkobG8sIG1pLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKVxufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGxvLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgbG8gJiAweGZmZmZmZixcbiAgICAoKGxvID4+PiAyNCkgJiAweGZmKSB8ICgoaGkgJiAweGZmZmYpIDw8IDgpLFxuICAgIChoaSA+Pj4gMTYpICYgMHhmZmZmKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbG8zMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9sbzMyKHYpeyByZXR1cm4gdi5sbzMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hpMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGkzMih2KXsgcmV0dXJuIHYuaGkzMigpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChhWzddIDw8IDAgfCAoYVs2XSA8PCA4KSB8IChhWzVdIDw8IDE2KSxcbiAgICAgICAgICAgICAgICAgICAgIGFbNF0gPDwgMCB8IChhWzNdIDw8IDgpIHwgKGFbMl0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVsxXSA8PCAwIHwgKGFbMF0gPDwgOCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19ieXRlcyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19ieXRlcyh4KSB7IHJldHVybiB4LnRvQXJyYXkoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGFzaCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oYXNoKHYpe1xuICByZXR1cm4gKHYubG8zMigpKSBeICh2LmhpMzIoKSlcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUmFpc2UgZXhjZXB0aW9uXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9jb25zdGFudCAodGFnKSB7IHRocm93IHRhZzsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnIChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX2FyZyAodGFnLCBhcmcpIHsgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLCB0YWcsIGFyZ10pOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmdzIChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX2FyZ3MgKHRhZywgYXJncykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZ10uY29uY2F0KGFyZ3MpKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nICh0YWcsIG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobXNnKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmFpbHdpdGggKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9mYWlsd2l0aCAobXNnKSB7XG4gIGlmKCFjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUpXG4gICAgY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlPVsyNDgsY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkZhaWx1cmVcIiksLTNdO1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSwgbXNnKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkludmFsaWRfYXJndW1lbnQsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRW5kX29mX2ZpbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLkRpdmlzaW9uX2J5X3plcm8pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfZm91bmQgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuTm90X2ZvdW5kKTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiAhZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpO1xuICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICBpZiAoZCA9PSAwKVxuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciBnID0gZi5hcHBseShudWxsLGFyZ3Muc2xpY2UoMCxuKSk7XG4gICAgaWYodHlwZW9mIGcgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGc7XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZyxhcmdzLnNsaWNlKG4pKTtcbiAgfVxuICBlbHNlIHtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICBjYXNlIDE6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDEpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIDI6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHkpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDIpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICgpe1xuICAgICAgICB2YXIgZXh0cmFfYXJncyA9IChhcmd1bWVudHMubGVuZ3RoID09IDApPzE6YXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3MubGVuZ3RoK2V4dHJhX2FyZ3MpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIG5hcmdzW2FyZ3MubGVuZ3RoK2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBuYXJncylcbiAgICAgIH07XG4gICAgfX1cbiAgICBnLmwgPSBkO1xuICAgIHJldHVybiBnO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbF9nZW4gKGNvbnN0LCBzaGFsbG93KVxuLy9JZjogZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpO1xuICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICBpZiAoZCA9PSAwKSB7XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgcmVzdCA9IGFyZ3Muc2xpY2UobiAtIDEpO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbiAtIDFdO1xuICAgIGFyZ3MgPSBhcmdzLnNsaWNlKDAsIG4pO1xuICAgIGFyZ3NbbiAtIDFdID0gZnVuY3Rpb24gKGcpIHtcbiAgICAgIGlmICh0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gayhnKTtcbiAgICAgIHZhciBhcmdzID0gcmVzdC5zbGljZSgpO1xuICAgICAgYXJnc1thcmdzLmxlbmd0aCAtIDFdID0gaztcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGcsIGFyZ3MpOyB9O1xuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGFyZ3NMZW4tLTtcbiAgICB2YXIgayA9IGFyZ3MgW2FyZ3NMZW5dO1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSwgeil7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDJdID0gejtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIGV4dHJhX2FyZ3MpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrIClcbiAgICAgICAgICBuYXJnc1thcmdzTGVuICsgaV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQgKyAxO1xuICAgIHJldHVybiBrKGcpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG52YXIgY2FtbF9uYW1lZF92YWx1ZXMgPSB7fTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSAoY29uc3QsbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlKG5tLHYpIHtcbiAgY2FtbF9uYW1lZF92YWx1ZXNbY2FtbF9qc2J5dGVzX29mX3N0cmluZyhubSldID0gdjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG5mdW5jdGlvbiBjYW1sX25hbWVkX3ZhbHVlKG5tKSB7XG4gIHJldHVybiBjYW1sX25hbWVkX3ZhbHVlc1tubV1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9nbG9iYWxfZGF0YVxudmFyIGNhbWxfZ2xvYmFsX2RhdGEgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnVpbGRfc3ltYm9scyhzeW1iKSB7XG4gIHZhciByID0ge307XG4gIGlmKHN5bWIpIHtcbiAgICBmb3IodmFyIGkgPSAxOyBpIDwgc3ltYi5sZW5ndGg7IGkrKyl7XG4gICAgICByW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN5bWJbaV1bMV0pXSA9IHN5bWJbaV1bMl1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChjb25zdCwgc2hhbGxvdywgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX2NhbGxiYWNrLCBjYW1sX2J1aWxkX3N5bWJvbHNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChuLCB2LCBuYW1lX29wdCkge1xuICBpZiAobmFtZV9vcHQpIHtcbiAgICB2YXIgbmFtZSA9IG5hbWVfb3B0O1xuICAgIGlmKGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYykge1xuICAgICAgbiA9IGNhbWxfY2FsbGJhY2soZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jLCBbbmFtZV0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMpIHtcbiAgICAgIGlmKCFjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCkge1xuICAgICAgICBjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCA9IGNhbWxfYnVpbGRfc3ltYm9scyhjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMpXG4gICAgICB9XG4gICAgICB2YXIgbmlkID0gY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHhbbmFtZV1cbiAgICAgIGlmKG5pZCA+PSAwKVxuICAgICAgICBuID0gbmlkXG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImNhbWxfcmVnaXN0ZXJfZ2xvYmFsOiBjYW5ub3QgbG9jYXRlIFwiICsgbmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNhbWxfZ2xvYmFsX2RhdGFbbiArIDFdID0gdjtcbiAgaWYobmFtZV9vcHQpIGNhbWxfZ2xvYmFsX2RhdGFbbmFtZV9vcHRdID0gdjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfZ2xvYmFsX2RhdGEgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9nZXRfZ2xvYmFsX2RhdGEgKCkgeyByZXR1cm4gY2FtbF9nbG9iYWxfZGF0YTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3ByaW50YWJsZSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2lzX3ByaW50YWJsZShjKSB7IHJldHVybiArKGMgPiAzMSAmJiBjIDwgMTI3KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21heWJlX3ByaW50X3N0YXRzXG5mdW5jdGlvbiBjYW1sX21heWJlX3ByaW50X3N0YXRzKHVuaXQpIHsgcmV0dXJuIDAgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwLTIwMTQgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQW4gT0NhbWwgc3RyaW5nIGlzIGFuIG9iamVjdCB3aXRoIHRocmVlIGZpZWxkczpcbi8vIC0gdGFnICd0J1xuLy8gLSBsZW5ndGggJ2wnXG4vLyAtIGNvbnRlbnRzICdjJ1xuLy9cbi8vIFRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nIGNhbiBiZSBlaXRoZXIgYSBKYXZhU2NyaXB0IGFycmF5IG9yXG4vLyBhIEphdmFTY3JpcHQgc3RyaW5nLiBUaGUgbGVuZ3RoIG9mIHRoaXMgc3RyaW5nIGNhbiBiZSBsZXNzIHRoYW4gdGhlXG4vLyBsZW5ndGggb2YgdGhlIE9DYW1sIHN0cmluZy4gSW4gdGhpcyBjYXNlLCByZW1haW5pbmcgYnl0ZXMgYXJlXG4vLyBhc3N1bWVkIHRvIGJlIHplcm9lcy4gQXJyYXlzIGFyZSBtdXRhYmxlIGJ1dCBjb25zdW1lcyBtb3JlIG1lbW9yeVxuLy8gdGhhbiBzdHJpbmdzLiBBIGNvbW1vbiBwYXR0ZXJuIGlzIHRvIHN0YXJ0IGZyb20gYW4gZW1wdHkgc3RyaW5nIGFuZFxuLy8gcHJvZ3Jlc3NpdmVseSBmaWxsIGl0IGZyb20gdGhlIHN0YXJ0LiBQYXJ0aWFsIHN0cmluZ3MgbWFrZXMgaXRcbi8vIHBvc3NpYmxlIHRvIGltcGxlbWVudCB0aGlzIGVmZmljaWVudGx5LlxuLy9cbi8vIFdoZW4gY29udmVydGluZyB0byBhbmQgZnJvbSBVVEYtMTYsIHdlIGtlZXAgdHJhY2sgb2Ygd2hldGhlciB0aGVcbi8vIHN0cmluZyBpcyBjb21wb3NlZCBvbmx5IG9mIEFTQ0lJIGNoYXJhY3RlcnMgKGluIHdoaWNoIGNhc2UsIG5vXG4vLyBjb252ZXJzaW9uIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCkgb3Igbm90LlxuLy9cbi8vIFRoZSBzdHJpbmcgdGFnIGNhbiB0aHVzIHRha2UgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4vLyAgIGZ1bGwgc3RyaW5nICAgICBCWVRFIHwgVU5LTk9XTjogICAgICAwXG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgQVNDSUk6ICAgICAgICA5XG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgTk9UX0FTQ0lJOiAgICA4XG4vLyAgIHN0cmluZyBwcmVmaXggICBQQVJUSUFMOiAgICAgICAgICAgICAyXG4vLyAgIGFycmF5ICAgICAgICAgICBBUlJBWTogICAgICAgICAgICAgICA0XG4vL1xuLy8gT25lIGNhbiB1c2UgYml0IG1hc2tpbmcgdG8gZGlzY3JpbWluYXRlIHRoZXNlIGRpZmZlcmVudCBjYXNlczpcbi8vICAga25vd25fZW5jb2RpbmcoeCkgPSB4Jjhcbi8vICAgaXNfYXNjaWkoeCkgPSAgICAgICB4JjFcbi8vICAga2luZCh4KSA9ICAgICAgICAgICB4JjZcblxuLy9Qcm92aWRlczogY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX3N0cl9yZXBlYXQobiwgcykge1xuICBpZihuID09IDApIHJldHVybiBcIlwiO1xuICBpZiAocy5yZXBlYXQpIHtyZXR1cm4gcy5yZXBlYXQobik7fSAvLyBFQ01Bc2NyaXB0IDYgYW5kIEZpcmVmb3ggMjQrXG4gIHZhciByID0gXCJcIiwgbCA9IDA7XG4gIGZvcig7Oykge1xuICAgIGlmIChuICYgMSkgciArPSBzO1xuICAgIG4gPj49IDE7XG4gICAgaWYgKG4gPT0gMCkgcmV0dXJuIHI7XG4gICAgcyArPSBzO1xuICAgIGwrKztcbiAgICBpZiAobCA9PSA5KSB7XG4gICAgICBzLnNsaWNlKDAsMSk7IC8vIGZsYXR0ZW4gdGhlIHN0cmluZ1xuICAgICAgLy8gdGhlbiwgdGhlIGZsYXR0ZW5pbmcgb2YgdGhlIHdob2xlIHN0cmluZyB3aWxsIGJlIGZhc3RlcixcbiAgICAgIC8vIGFzIGl0IHdpbGwgYmUgY29tcG9zZWQgb2YgbGFyZ2VyIHBpZWNlc1xuICAgIH1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbi8vV2Vha2RlZlxuLy8gUHJlIEVDTUFTY3JpcHQgNSwgW2FwcGx5XSB3b3VsZCBub3Qgc3VwcG9ydCBhcnJheS1saWtlIG9iamVjdC5cbi8vIEluIHN1Y2ggc2V0dXAsIFR5cGVkX2FycmF5IHdvdWxkIGJlIGltcGxlbWVudGVkIGFzIHBvbHlmaWxsLCBhbmQgW2YuYXBwbHldIHdvdWxkXG4vLyBmYWlsIGhlcmUuIE1hcmsgdGhlIHByaW1pdGl2ZSBhcyBXZWFrZGVmLCBzbyB0aGF0IHBlb3BsZSBjYW4gb3ZlcnJpZGUgaXQgZWFzaWx5LlxuZnVuY3Rpb24gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChhLCBpLCBsZW4pIHtcbiAgdmFyIGYgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuICBpZiAoaSA9PSAwICYmIGxlbiA8PSA0MDk2ICYmIGxlbiA9PSBhLmxlbmd0aCkgcmV0dXJuIGYuYXBwbHkgKG51bGwsIGEpO1xuICB2YXIgcyA9IFwiXCI7XG4gIGZvciAoOyAwIDwgbGVuOyBpICs9IDEwMjQsbGVuLT0xMDI0KVxuICAgIHMgKz0gZi5hcHBseSAobnVsbCwgYS5zbGljZShpLGkgKyBNYXRoLm1pbihsZW4sIDEwMjQpKSk7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0Zjhfb2ZfdXRmMTZcbmZ1bmN0aW9uIGNhbWxfdXRmOF9vZl91dGYxNihzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gYiwgYywgZCwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgaWYgKGMgPCAweDgwMCkge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4YzAgfCAoYyA+PiA2KSk7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA8IDB4ZDgwMCB8fCBjID49IDB4ZGZmZikge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZTAgfCAoYyA+PiAxMiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPj0gMHhkYmZmIHx8IGkgKyAxID09IGwgfHxcbiAgICAgICAgICAgICAgIChkID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgZCA+IDB4ZGZmZikge1xuICAgICAgLy8gVW5tYXRjaGVkIHN1cnJvZ2F0ZSBwYWlyLCByZXBsYWNlZCBieSBcXHVmZmZkIChyZXBsYWNlbWVudCBjaGFyYWN0ZXIpXG4gICAgICB0ICs9IFwiXFx4ZWZcXHhiZlxceGJkXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGkrKztcbiAgICAgIGMgPSAoYyA8PCAxMCkgKyBkIC0gMHgzNWZkYzAwO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZjAgfCAoYyA+PiAxOCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiAxMikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH1cbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gY2FtbF91dGYxNl9vZl91dGY4KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBcIlwiLCBjLCBjMSwgYzIsIHYsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjMSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYzEgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMxID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIHYgPSAxO1xuICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICBjID0gYzIgKyAoYzEgPDwgNik7XG4gICAgICBpZiAoYzEgPCAweGUwKSB7XG4gICAgICAgIHYgPSBjIC0gMHgzMDgwO1xuICAgICAgICBpZiAodiA8IDB4ODApIHYgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdiA9IDI7XG4gICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICAgICAgYyA9IGMyICsgKGMgPDwgNik7XG4gICAgICAgICAgaWYgKGMxIDwgMHhmMCkge1xuICAgICAgICAgICAgdiA9IGMgLSAweGUyMDgwO1xuICAgICAgICAgICAgaWYgKCh2IDwgMHg4MDApIHx8ICgodiA+PSAweGQ3ZmYpICYmICh2IDwgMHhlMDAwKSkpIHYgPSAyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ID0gMztcbiAgICAgICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpICYmXG4gICAgICAgICAgICAgICAgKGMxIDwgMHhmNSkpIHtcbiAgICAgICAgICAgICAgdiA9IGMyIC0gMHgzYzgyMDgwICsgKGMgPDwgNik7XG4gICAgICAgICAgICAgIGlmICh2IDwgMHgxMDAwMCB8fCB2ID4gMHgxMGZmZmYpIHYgPSAzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodiA8IDQpIHsgLy8gSW52YWxpZCBzZXF1ZW5jZVxuICAgICAgaSAtPSB2O1xuICAgICAgdCArPSBcIlxcdWZmZmRcIjtcbiAgICB9IGVsc2UgaWYgKHYgPiAweGZmZmYpXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhkN2MwICsgKHYgPj4gMTApLCAweGRjMDAgKyAodiAmIDB4M0ZGKSlcbiAgICBlbHNlXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodik7XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2lzX2FzY2lpXG5mdW5jdGlvbiBqc29vX2lzX2FzY2lpIChzKSB7XG4gIC8vIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZ2V0cyBiZXR0ZXIgYXQgYXJvdW5kIHRoaXMgcG9pbnQgZm9yIGFsbCBicm93c2Vyc1xuICBpZiAocy5sZW5ndGggPCAyNCkge1xuICAgIC8vIFNwaWRlcm1vbmtleSBnZXRzIG11Y2ggc2xvd2VyIHdoZW4gcy5sZW5ndGggPj0gMjQgKG9uIDY0IGJpdCBhcmNocylcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIGlmIChzLmNoYXJDb2RlQXQoaSkgPiAxMjcpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlXG4gICAgcmV0dXJuICEvW15cXHgwMC1cXHg3Zl0vLnRlc3Qocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBpZiAoaSA+PSBzLmMubGVuZ3RoKSByZXR1cm4gMDtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmMuY2hhckNvZGVBdChpKTtcbiAgY2FzZSA0OiAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBzLmNbaV1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIC8vIFRoZSBPQ2FtbCBjb21waWxlciB1c2VzIENoYXIudW5zYWZlX2NociBvbiBpbnRlZ2VycyBsYXJnZXIgdGhhbiAyNTUhXG4gIGMgJj0gMHhmZjtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSB7XG4gICAgaWYgKGkgPT0gcy5jLmxlbmd0aCkge1xuICAgICAgcy5jICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgaWYgKGkgKyAxID09IHMubCkgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKTtcbiAgfVxuICBzLmNbaV0gPSBjO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDEpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDcpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIyID0gMHhGRiAmIGkxNiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTE2O1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQxNlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiNCA9IDB4RkYgJiBpMzIgPj4gMjQsXG4gICAgICBiMyA9IDB4RkYgJiBpMzIgPj4gMTYsXG4gICAgICBiMiA9IDB4RkYgJiBpMzIgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkzMjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDIsIGIzKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMywgYjQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDMyXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQzMlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCl7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGk2NCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyA3IC0gaiwgYVtqXSk7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQ2NFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0Zjhfb2ZfdXRmMTYsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmcgKHMpIHtcbiAgdmFyIHRhZyA9IDkgLyogQllURVMgfCBBU0NJSSAqLztcbiAgaWYgKCFqc29vX2lzX2FzY2lpKHMpKVxuICAgIHRhZyA9IDggLyogQllURVMgfCBOT1RfQVNDSUkgKi8sIHMgPSBjYW1sX3V0Zjhfb2ZfdXRmMTYocyk7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0YWcsIHMsIHMubGVuZ3RoKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEJ5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBqc29vX2lzX2FzY2lpLCBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIE1sQnl0ZXMgKHRhZywgY29udGVudHMsIGxlbmd0aCkge1xuICB0aGlzLnQ9dGFnOyB0aGlzLmM9Y29udGVudHM7IHRoaXMubD1sZW5ndGg7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCl7XG4gIHN3aXRjaCAodGhpcy50KSB7XG4gIGNhc2UgOTogLypCWVRFUyB8IEFTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICBkZWZhdWx0OlxuICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXModGhpcyk7XG4gIGNhc2UgMDogLypCWVRFUyB8IFVOS09XTiovXG4gICAgaWYgKGpzb29faXNfYXNjaWkodGhpcy5jKSkge1xuICAgICAgdGhpcy50ID0gOTsgLypCWVRFUyB8IEFTQ0lJKi9cbiAgICAgIHJldHVybiB0aGlzLmM7XG4gICAgfVxuICAgIHRoaXMudCA9IDg7IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICBjYXNlIDg6IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIH1cbn07XG5NbEJ5dGVzLnByb3RvdHlwZS50b1V0ZjE2ID0gZnVuY3Rpb24gKCl7XG4gIHZhciByID0gdGhpcy50b1N0cmluZygpO1xuICBpZih0aGlzLnQgPT0gOSkgcmV0dXJuIHJcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChyKTtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gKCl7XG4gIHZhciBjb250ZW50ID0gdGhpcy50ID09IDQgPyB0aGlzLmMuc2xpY2UoKSA6IHRoaXMuYztcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRoaXMudCxjb250ZW50LHRoaXMubCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEJZVEVTICovXG4gIGlmIChzLnQgPT0gMiAvKiBQQVJUSUFMICovKVxuICAgIHMuYyArPSBjYW1sX3N0cl9yZXBlYXQocy5sIC0gcy5jLmxlbmd0aCwgJ1xcMCcpXG4gIGVsc2VcbiAgICBzLmMgPSBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKHMuYywgMCwgcy5jLmxlbmd0aCk7XG4gIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocykge1xuICAvKiBBc3N1bWVzIG5vdCBBUlJBWSAqL1xuICB2YXIgYSA9IG5ldyBVaW50OEFycmF5KHMubCk7XG4gIHZhciBiID0gcy5jLCBsID0gYi5sZW5ndGgsIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGIuY2hhckNvZGVBdChpKTtcbiAgZm9yIChsID0gcy5sOyBpIDwgbDsgaSsrKSBhW2ldID0gMDtcbiAgcy5jID0gYTtcbiAgcy50ID0gNDsgLyogQVJSQVkgKi9cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIChzKSB7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICByZXR1cm4gcy5jO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIGwgPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkobCk7XG4gIHZhciBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSk7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBpZihsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJ5dGVzLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9hcnJheSAoYSkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoYSwwLGEubGVuZ3RoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGEpIHtcbiAgaWYoISAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgYSA9IG5ldyBVaW50OEFycmF5KGEpO1xuICB9XG4gIHJldHVybiBuZXcgTWxCeXRlcyg0LGEsYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2NvbXBhcmUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19jb21wYXJlKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8tMTooczEuYyA+IHMyLmMpPzE6MDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA9PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDw9IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzdGhhbiBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczIsczEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMyLHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmlsbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vQWxpYXM6IGNhbWxfZmlsbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmlsbF9ieXRlcyhzLCBpLCBsLCBjKSB7XG4gIGlmIChsID4gMCkge1xuICAgIGlmIChpID09IDAgJiYgKGwgPj0gcy5sIHx8IChzLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGwgPj0gcy5jLmxlbmd0aCkpKSB7XG4gICAgICBpZiAoYyA9PSAwKSB7XG4gICAgICAgIHMuYyA9IFwiXCI7XG4gICAgICAgIHMudCA9IDI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMuYyA9IGNhbWxfc3RyX3JlcGVhdCAobCwgU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gICAgICAgIHMudCA9IChsID09IHMubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgICAgIGZvciAobCArPSBpOyBpIDwgbDsgaSsrKSBzLmNbaV0gPSBjO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgaWYgKChpMiA9PSAwKSAmJlxuICAgICAgKGxlbiA+PSBzMi5sIHx8IChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsZW4gPj0gczIuYy5sZW5ndGgpKSkge1xuICAgIHMyLmMgPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIGlmIChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBpMiA9PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSB7XG4gICAgaWYgKHMyLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMyKTtcbiAgICB2YXIgYzEgPSBzMS5jLCBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT0gNCAvKiBBUlJBWSAqLykge1xuICAgICAgaWYgKGkyIDw9IGkxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4gKGxlbiwgYzEubGVuZ3RoIC0gaTEpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIGMyIFtpMiArIGldID0gYzEuY2hhckNvZGVBdChpMSArIGkpO1xuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLGIsYyxkLGUpIHtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGEpLGIsYyxkLGUpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykgeyByZXR1cm4gcy5sIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29uY2F0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbmNhdChhLGIpIHsgcmV0dXJuIGEgKyBiIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29uY2F0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBNbEJ5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb25jYXQoczEsczIpe1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMoczEudCxzMS5jK3MyLmMsczEubCtzMi5sKVxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSkge1xuICByZXR1cm4gcy5jaGFyQ29kZUF0KGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gcy5sZW5ndGhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZSBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPy0xOihzMSA+IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8PSBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhbiBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMuYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNhbWxfanNieXRlc19vZl9zdHJpbmcocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoeCkgeyByZXR1cm4geCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSB7XG4gIGlmKGpzb29faXNfYXNjaWkocykpXG4gICAgcmV0dXJuIHM7XG4gIHJldHVybiBjYW1sX3V0ZjE2X29mX3V0Zjgocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICBpZiAoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKVxuICBlbHNlIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfdXRmOF9vZl91dGYxNihzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIG5ldyBNbEJ5dGVzKDAscyxzLmxlbmd0aCk7IH1cblxuXG4vLyBUaGUgc2VjdGlvbiBiZWxvdyBzaG91bGQgYmUgdXNlZCB3aGVuIHVzZS1qcy1zdHJpbmc9ZmFsc2VcblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocyxpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocyxpLGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19jb21wYXJlXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19jb21wYXJlKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHsgcmV0dXJuIHMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB7IHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIChzLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gcy5jIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKXtcbiAgcmV0dXJuIHMudG9VdGYxNigpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyhzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9pc19tbF9ieXRlcyhzKSB7XG4gIHJldHVybiAocyBpbnN0YW5jZW9mIE1sQnl0ZXMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfYnl0ZXNfY29udGVudChzKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICBkZWZhdWx0OiAvKiBQQVJUSUFMICovXG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmM7XG4gIGNhc2UgNDpcbiAgICByZXR1cm4gcy5jXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWlcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gKHR5cGVvZiBzID09PSBcInN0cmluZ1wiICYmICEvW15cXHgwMC1cXHhmZl0vLnRlc3QocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9pc19tbF9ieXRlcyhzKTtcbn1cblxuLy8gVGhlIGZ1bmN0aW9ucyBiZWxvdyBhcmUgZGVwcmVjYXRlZFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nKHMpIHsgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbmV3X3N0cmluZyAocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19mcm9tX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RvX2pzX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3RvX2pzX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdG9fc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9ieXRlcyh4KSB7IHJldHVybiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHgpIH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkLCBBbmR5IFJheVxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuLy9cbi8vIEJpZ2FycmF5LlxuLy9cbi8vIC0gYWxsIGJpZ2FycmF5IHR5cGVzIGluY2x1ZGluZyBJbnQ2NCBhbmQgQ29tcGxleC5cbi8vIC0gZm9ydHJhbiArIGMgbGF5b3V0c1xuLy8gLSBzdWIvc2xpY2UvcmVzaGFwZVxuLy8gLSByZXRhaW4gZmFzdCBwYXRoIGZvciAxZCBhcnJheSBhY2Nlc3NcblxuLy9Qcm92aWRlczogY2FtbF9iYV9pbml0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2JhX2luaXQoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemUoZGltcykge1xuICB2YXIgbl9kaW1zID0gZGltcy5sZW5ndGg7XG4gIHZhciBzaXplID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuX2RpbXM7IGkrKykge1xuICAgIGlmIChkaW1zW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmNyZWF0ZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIHNpemUgPSBzaXplICogZGltc1tpXTtcbiAgfVxuICByZXR1cm4gc2l6ZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKXtcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDc6IGNhc2UgMTA6IGNhc2UgMTE6IHJldHVybiAyO1xuICBkZWZhdWx0OiByZXR1cm4gMTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpe1xuICB2YXIgdmlldztcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDA6ICB2aWV3ID0gRmxvYXQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxOiAgdmlldyA9IEZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMjogIHZpZXcgPSBJbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDM6ICB2aWV3ID0gVWludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgNDogIHZpZXcgPSBJbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA1OiAgdmlldyA9IFVpbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA2OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDc6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgODogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA5OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDEwOiB2aWV3ID0gRmxvYXQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxMTogdmlldyA9IEZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTI6IHZpZXcgPSBVaW50OEFycmF5OyBicmVhaztcbiAgfVxuICBpZiAoIXZpZXcpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmNyZWF0ZTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgdmFyIGRhdGEgPSBuZXcgdmlldyhzaXplICogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSk7XG4gIHJldHVybiBkYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1ZlcnNpb246IDwgNC4xMVxudmFyIGNhbWxfYmFfY3VzdG9tX25hbWUgPSBcIl9iaWdhcnJheVwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPj0gNC4xMVxudmFyIGNhbWxfYmFfY3VzdG9tX25hbWUgPSBcIl9iaWdhcnIwMlwiXG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpLCBjYW1sX2ludDY0X2hpMzIsIGNhbWxfaW50NjRfbG8zMlxuZnVuY3Rpb24gTWxfQmlnYXJyYXkgKGtpbmQsIGxheW91dCwgZGltcywgYnVmZmVyKSB7XG5cbiAgdGhpcy5raW5kICAgPSBraW5kIDtcbiAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gIHRoaXMuZGltcyAgID0gZGltcztcbiAgdGhpcy5kYXRhID0gYnVmZmVyO1xufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBjYW1sX2JhX2N1c3RvbV9uYW1lO1xuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24gKGFyZykge1xuICB2YXIgb2ZzID0gMDtcbiAgaWYodHlwZW9mIGFyZyA9PT0gXCJudW1iZXJcIikgYXJnID0gW2FyZ107XG4gIGlmICghIChhcmcgaW5zdGFuY2VvZiBBcnJheSkpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ2FycmF5LmpzOiBpbnZhbGlkIG9mZnNldFwiKTtcbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYXJnLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5nZXQvc2V0OiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIGlmKHRoaXMubGF5b3V0ID09IDAgLyogY19sYXlvdXQgKi8pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFyZ1tpXSA8IDAgfHwgYXJnW2ldID49IHRoaXMuZGltc1tpXSlcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyBhcmdbaV07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmRpbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmIChhcmdbaV0gPCAxIHx8IGFyZ1tpXSA+IHRoaXMuZGltc1tpXSl7XG4gICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIG9mcyA9IChvZnMgKiB0aGlzLmRpbXNbaV0pICsgKGFyZ1tpXSAtIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2ZzO1xufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGwgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBoID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobCxoKTtcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciByID0gdGhpcy5kYXRhW29mcyAqIDIgKyAwXTtcbiAgICB2YXIgaSA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgcmV0dXJuIFsyNTQsIHIsIGldO1xuICBkZWZhdWx0OlxuICAgIHJldHVybiB0aGlzLmRhdGFbb2ZzXVxuICB9XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IGNhbWxfaW50NjRfaGkzMih2KTtcbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSB2WzFdO1xuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSB2WzJdO1xuICAgIGJyZWFrO1xuICBkZWZhdWx0OlxuICAgIHRoaXMuZGF0YVtvZnNdID0gdjtcbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMFxufVxuXG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKHYpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHZhciBhID0gY2FtbF9pbnQ2NF9sbzMyKHYpO1xuICAgIHZhciBiID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGlmKGEgPT0gYil7XG4gICAgICB0aGlzLmRhdGEuZmlsbChhKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHRoaXMuZGF0YVtpXSA9IChpJTIgPT0gMCkgPyBhIDogYjtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB2YXIgaW0gPSB2WzFdO1xuICAgIHZhciByZSA9IHZbMl07XG4gICAgaWYoaW0gPT0gcmUpe1xuICAgICAgdGhpcy5kYXRhLmZpbGwoaW0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGltIDogcmU7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBkZWZhdWx0OlxuICAgIHRoaXMuZGF0YS5maWxsKHYpO1xuICAgIGJyZWFrO1xuICB9XG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAoYiwgdG90YWwpIHtcbiAgaWYgKHRoaXMubGF5b3V0ICE9IGIubGF5b3V0IHx8IHRoaXMua2luZCAhPSBiLmtpbmQpIHtcbiAgICB2YXIgazEgPSB0aGlzLmtpbmQgfCAodGhpcy5sYXlvdXQgPDwgOCk7XG4gICAgdmFyIGsyID0gICAgYi5raW5kIHwgKGIubGF5b3V0IDw8IDgpO1xuICAgIHJldHVybiBrMiAtIGsxO1xuICB9XG4gIGlmICh0aGlzLmRpbXMubGVuZ3RoICE9IGIuZGltcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gYi5kaW1zLmxlbmd0aCAtIHRoaXMuZGltcy5sZW5ndGg7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKHRoaXMuZGltc1tpXSAhPSBiLmRpbXNbaV0pXG4gICAgICByZXR1cm4gKHRoaXMuZGltc1tpXSA8IGIuZGltc1tpXSkgPyAtMSA6IDE7XG4gIHN3aXRjaCAodGhpcy5raW5kKSB7XG4gIGNhc2UgMDpcbiAgY2FzZSAxOlxuICBjYXNlIDEwOlxuICBjYXNlIDExOlxuICAgIC8vIEZsb2F0c1xuICAgIHZhciB4LCB5O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICB4ID0gdGhpcy5kYXRhW2ldO1xuICAgICAgeSA9IGIuZGF0YVtpXTtcbiAgICAgIGlmICh4IDwgeSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHggPiB5KVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGlmICh4ICE9IHkpIHtcbiAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgaWYgKHggPT0geCkgcmV0dXJuIDE7XG4gICAgICAgIGlmICh5ID09IHkpIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSs9Mikge1xuICAgICAgLy8gQ2hlY2sgaGlnaGVzdCBiaXRzIGZpcnN0XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPCBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHRoaXMuZGF0YVtpKzFdID4gYi5kYXRhW2krMV0pXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApIDwgKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICgodGhpcy5kYXRhW2ldID4+PiAwKSA+IChiLmRhdGFbaV0gPj4+IDApKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMjpcbiAgY2FzZSAzOlxuICBjYXNlIDQ6XG4gIGNhc2UgNTpcbiAgY2FzZSA2OlxuICBjYXNlIDg6XG4gIGNhc2UgOTpcbiAgY2FzZSAxMjpcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZGF0YVtpXSA8IGIuZGF0YVtpXSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHRoaXMuZGF0YVtpXSA+IGIuZGF0YVtpXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBNbF9CaWdhcnJheV9jXzFfMVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gTWxfQmlnYXJyYXlfY18xXzEoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcbiAgdGhpcy5raW5kICAgPSBraW5kIDtcbiAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gIHRoaXMuZGltcyAgID0gZGltcztcbiAgdGhpcy5kYXRhICAgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZSA9IG5ldyBNbF9CaWdhcnJheSgpXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24gKGFyZykge1xuICBpZih0eXBlb2YgYXJnICE9PSBcIm51bWJlclwiKXtcbiAgICBpZigoYXJnIGluc3RhbmNlb2YgQXJyYXkpICYmIGFyZy5sZW5ndGggPT0gMSlcbiAgICAgIGFyZyA9IGFyZ1swXTtcbiAgICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIk1sX0JpZ2FycmF5X2NfMV8xLm9mZnNldFwiKTtcbiAgfVxuICBpZiAoYXJnIDwgMCB8fCBhcmcgPj0gdGhpcy5kaW1zWzBdKVxuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFyZztcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChvZnMpIHtcbiAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9mcyx2KSB7XG4gIHRoaXMuZGF0YVtvZnNdID0gdjtcbiAgcmV0dXJuIDBcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jb21wYXJlXG5mdW5jdGlvbiBjYW1sX2JhX2NvbXBhcmUoYSxiLHRvdGFsKXtcbiAgcmV0dXJuIGEuY29tcGFyZShiLHRvdGFsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBNbF9CaWdhcnJheV9jXzFfMSwgY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKXtcbiAgdmFyIHNpemVfcGVyX2VsZW1lbnQgPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpO1xuICBpZihjYW1sX2JhX2dldF9zaXplKGRpbXMpICogc2l6ZV9wZXJfZWxlbWVudCAhPSBkYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImxlbmd0aCBkb2Vzbid0IG1hdGNoIGRpbXNcIik7XG4gIH1cbiAgaWYobGF5b3V0ID09IDAgJiYgLy8gY19sYXlvdXRcbiAgICAgZGltcy5sZW5ndGggPT0gMSAmJiAvLyBBcnJheTFcbiAgICAgc2l6ZV9wZXJfZWxlbWVudCA9PSAxKSAvLyAxLXRvLTEgbWFwcGluZ1xuICAgIHJldHVybiBuZXcgTWxfQmlnYXJyYXlfY18xXzEoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlKGtpbmQsIGxheW91dCwgZGltc19tbCkge1xuICB2YXIgZGltcyA9IGNhbWxfanNfZnJvbV9hcnJheShkaW1zX21sKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfY2hhbmdlX2xheW91dChiYSwgbGF5b3V0KSB7XG4gIGlmKGJhLmxheW91dCA9PSBsYXlvdXQpIHJldHVybiBiYTtcbiAgdmFyIG5ld19kaW1zID0gW11cbiAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIG5ld19kaW1zW2ldID0gYmEuZGltc1tiYS5kaW1zLmxlbmd0aCAtIGkgLSAxXTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBsYXlvdXQsIG5ld19kaW1zLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kXG5mdW5jdGlvbiBjYW1sX2JhX2tpbmQoYmEpIHtcbiAgcmV0dXJuIGJhLmtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbGF5b3V0XG5mdW5jdGlvbiBjYW1sX2JhX2xheW91dChiYSkge1xuICByZXR1cm4gYmEubGF5b3V0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX251bV9kaW1zXG5mdW5jdGlvbiBjYW1sX2JhX251bV9kaW1zKGJhKSB7XG4gIHJldHVybiBiYS5kaW1zLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1cbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9kaW0oYmEsIGkpIHtcbiAgaWYgKGkgPCAwIHx8IGkgPj0gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuZGltXCIpO1xuICByZXR1cm4gYmEuZGltc1tpXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fMVxuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzEoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fMlxuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzIoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fM1xuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzMoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9nZW5lcmljKGJhLCBpKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKTtcbiAgcmV0dXJuIGJhLmdldChvZnMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDE2KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMSA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcyArIDEpO1xuICByZXR1cm4gKGIxIHwgKGIyIDw8IDgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQzMihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDMgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyswKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcysxKTtcbiAgdmFyIGIzID0gYmEuZ2V0KG9mcysyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyszKTtcbiAgcmV0dXJuICggKGIxIDw8IDApICB8XG4gICAgICAgICAgIChiMiA8PCA4KSAgfFxuICAgICAgICAgICAoYjMgPDwgMTYpIHxcbiAgICAgICAgICAgKGI0IDw8IDI0KSApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDY0KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgNyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICB2YXIgYjUgPSBiYS5nZXQob2ZzKzQpO1xuICB2YXIgYjYgPSBiYS5nZXQob2ZzKzUpO1xuICB2YXIgYjcgPSBiYS5nZXQob2ZzKzYpO1xuICB2YXIgYjggPSBiYS5nZXQob2ZzKzcpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbYjgsYjcsYjYsYjUsYjQsYjMsYjIsYjFdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMShiYSwgaTApIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoaTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMihiYSwgaTAsIGkxKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMV0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfM1xuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMyhiYSwgaTAsIGkxLCBpMikge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfZ2VuZXJpYyhiYSwgaSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSksIHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDE2KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMSA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzEsICh2ID4+PiA4KSAmIDB4ZmYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQzMihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDMgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYmEuc2V0KG9mcyswLCAgdiAgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzIsICh2ID4+PiAxNikgJiAweGZmKTtcbiAgYmEuc2V0KG9mcyszLCAodiA+Pj4gMjQpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDY0KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgNyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgdiA9IGNhbWxfaW50NjRfdG9fYnl0ZXModik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCA4OyBpKyspIGJhLnNldChvZnMraSwgdls3LWldKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMShiYSwgaTAsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChpMCksIHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8yXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8yKGJhLCBpMCwgaTEsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTFdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8zXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8zKGJhLCBpMCwgaTEsIGkyLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLGkxLGkyXSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9maWxsXG5mdW5jdGlvbiBjYW1sX2JhX2ZpbGwoYmEsIHYpIHtcbiAgYmEuZmlsbCh2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2JsaXQoc3JjLCBkc3QpIHtcbiAgaWYgKGRzdC5kaW1zLmxlbmd0aCAhPSBzcmMuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRzdC5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmIChkc3QuZGltc1tpXSAhPSBzcmMuZGltc1tpXSlcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmJsaXQ6IGRpbWVuc2lvbiBtaXNtYXRjaFwiKTtcbiAgZHN0LmRhdGEuc2V0KHNyYy5kYXRhKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc3ViXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zdWIoYmEsIG9mcywgbGVuKSB7XG4gIHZhciBjaGFuZ2VkX2RpbTtcbiAgdmFyIG11bCA9IDE7XG4gIGlmIChiYS5sYXlvdXQgPT0gMCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIG11bCA9IG11bCAqIGJhLmRpbXNbaV07XG4gICAgY2hhbmdlZF9kaW0gPSAwO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgKGJhLmRpbXMubGVuZ3RoIC0gMSk7IGkrKylcbiAgICAgIG11bCA9IG11bCAqIGJhLmRpbXNbaV07XG4gICAgY2hhbmdlZF9kaW0gPSBiYS5kaW1zLmxlbmd0aCAtIDE7XG4gICAgb2ZzID0gb2ZzIC0gMTtcbiAgfVxuICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8IChvZnMgKyBsZW4pID4gYmEuZGltc1tjaGFuZ2VkX2RpbV0pe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnN1YjogYmFkIHN1Yi1hcnJheVwiKTtcbiAgfVxuICB2YXIgbmV3X2RpbXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIG5ld19kaW1zW2ldID0gYmEuZGltc1tpXTtcbiAgbmV3X2RpbXNbY2hhbmdlZF9kaW1dID0gbGVuO1xuICBtdWwgKj0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBtdWwsIChvZnMgKyBsZW4pICogbXVsKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIG5ld19kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2xpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc2xpY2UoYmEsIHZpbmQpIHtcbiAgdmluZCA9IGNhbWxfanNfZnJvbV9hcnJheSh2aW5kKTtcbiAgdmFyIG51bV9pbmRzID0gdmluZC5sZW5ndGg7XG4gIHZhciBpbmRleCA9IFtdO1xuICB2YXIgc3ViX2RpbXMgPSBbXTtcbiAgdmFyIG9mcztcblxuICBpZiAobnVtX2luZHMgPiBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5zbGljZTogdG9vIG1hbnkgaW5kaWNlc1wiKTtcblxuICAvLyBDb21wdXRlIG9mZnNldCBhbmQgY2hlY2sgYm91bmRzXG4gIGlmIChiYS5sYXlvdXQgPT0gMCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2ldID0gdmluZFtpXTtcbiAgICBmb3IgKDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDA7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKG51bV9pbmRzKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzICsgaV0gPSB2aW5kW2ldO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSAxO1xuICAgIHN1Yl9kaW1zID0gYmEuZGltcy5zbGljZSgwLCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzKTtcbiAgfVxuICBvZnMgPSBiYS5vZmZzZXQoaW5kZXgpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoc3ViX2RpbXMpO1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogc2l6ZV9wZXJfZWxlbWVudCwgKG9mcyArIHNpemUpICogc2l6ZV9wZXJfZWxlbWVudCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBzdWJfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3Jlc2hhcGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbmZ1bmN0aW9uIGNhbWxfYmFfcmVzaGFwZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbmV3X2RpbSA9IFtdO1xuICB2YXIgbnVtX2RpbXMgPSB2aW5kLmxlbmd0aDtcblxuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgfVxuICB2YXIgbnVtX2VsdHMgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIHtcbiAgICBuZXdfZGltW2ldID0gdmluZFtpXTtcbiAgICBpZiAobmV3X2RpbVtpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgbnVtX2VsdHMgPSBudW1fZWx0cyAqIG5ld19kaW1baV07XG4gIH1cblxuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIC8vIENoZWNrIHRoYXQgc2l6ZXMgYWdyZWVcbiAgaWYgKG51bV9lbHRzICE9IHNpemUpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogc2l6ZSBtaXNtYXRjaFwiKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIG5ld19kaW0sIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NlcmlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2ludDY0X3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfYmFfc2VyaWFsaXplKHdyaXRlciwgYmEsIHN6KSB7XG4gIHdyaXRlci53cml0ZSgzMiwgYmEuZGltcy5sZW5ndGgpO1xuICB3cml0ZXIud3JpdGUoMzIsIChiYS5raW5kIHwgKGJhLmxheW91dCA8PCA4KSkpO1xuICBpZihiYS5jYW1sX2N1c3RvbSA9PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZihiYS5kaW1zW2ldIDwgMHhmZmZmKVxuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRpbXNbaV0pO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgMHhmZmZmKTtcbiAgICAgICAgd3JpdGVyLndyaXRlKDMyLCAwKTtcbiAgICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIGVsc2VcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgd3JpdGVyLndyaXRlKDMyLGJhLmRpbXNbaV0pXG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSg4LCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHdyaXRlci53cml0ZSg4LDApO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6ICAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGJhLmdldChpKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGJhLmdldChpKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGIpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBqID0gYmEuZ2V0KGkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoalsxXSkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoalsyXSkpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBjb21wbGV4ID0gYmEuZ2V0KGkpO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzFdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsyXSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHN6WzBdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA0O1xuICBzelsxXSA9ICg0ICsgYmEuZGltcy5sZW5ndGgpICogODtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kZXNlcmlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzLCBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG5mdW5jdGlvbiBjYW1sX2JhX2Rlc2VyaWFsaXplKHJlYWRlciwgc3osIG5hbWUpe1xuICB2YXIgbnVtX2RpbXMgPSByZWFkZXIucmVhZDMycygpO1xuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB3cm9uZyBudW1iZXIgb2YgYmlnYXJyYXkgZGltZW5zaW9uc1wiKTtcbiAgdmFyIHRhZyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBraW5kID0gdGFnICYgMHhmZlxuICB2YXIgbGF5b3V0ID0gKHRhZyA+PiA4KSAmIDE7XG4gIHZhciBkaW1zID0gW11cbiAgaWYobmFtZSA9PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgICAgdmFyIHNpemVfZGltID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICAgIGlmKHNpemVfZGltID09IDB4ZmZmZil7XG4gICAgICAgIHZhciBzaXplX2RpbV9oaSA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIHZhciBzaXplX2RpbV9sbyA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIGlmKHNpemVfZGltX2hpICE9IDApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBiaWdhcnJheSBkaW1lbnNpb24gb3ZlcmZsb3cgaW4gMzJiaXRcIik7XG4gICAgICAgIHNpemVfZGltID0gc2l6ZV9kaW1fbG87XG4gICAgICB9XG4gICAgICBkaW1zLnB1c2goc2l6ZV9kaW0pO1xuICAgIH1cbiAgZWxzZVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykgZGltcy5wdXNoKHJlYWRlci5yZWFkMzJ1KCkpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoZGltcyk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpO1xuICB2YXIgYmEgPSBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICB2YXIgc2l4dHkgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgaWYoc2l4dHkpIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY2Fubm90IHJlYWQgYmlnYXJyYXkgd2l0aCA2NC1iaXQgT0NhbWwgaW50c1wiKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OiAvLyAoaW50NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGludDY0ID0gY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KTtcbiAgICAgIGJhLnNldChpLGludDY0KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBmID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksZik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIHZhciBmID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksZik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIHZhciByZSA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIHZhciBpbSA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIGJhLnNldChpLFsyNTQscmUsaW1dKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciByZSA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBpbSA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGJhLnNldChpLFsyNTQscmUsaW1dKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgfVxuICBzelswXSA9ICg0ICsgbnVtX2RpbXMpICogNDtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL0RlcHJlY2F0ZWRcbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2Zyb21cbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9mcm9tKGRhdGExLCBkYXRhMiwganN0eXAsIGtpbmQsIGxheW91dCwgZGltcyl7XG4gIGlmKGRhdGEyIHx8IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCkgPT0gMil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9jcmVhdGVfZnJvbTogdXNlIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcIik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGExKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9oYXNoIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9oYXNoKGJhKXtcbiAgdmFyIG51bV9lbHRzID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgdmFyIGggPSAwO1xuICBzd2l0Y2goYmEua2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDI1NikgbnVtX2VsdHMgPSAyNTY7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDQgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgOCkgfCAoYmEuZGF0YVtpKzJdIDw8IDE2KSB8IChiYS5kYXRhW2krM10gPDwgMjQpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIHcgPSAwO1xuICAgIHN3aXRjaCAobnVtX2VsdHMgJiAzKSB7XG4gICAgY2FzZSAzOiB3ICA9IGJhLmRhdGFbaSsyXSA8PCAxNjsgICAgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlIDI6IHcgfD0gYmEuZGF0YVtpKzFdIDw8IDg7ICAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMTogdyB8PSBiYS5kYXRhW2krMF07XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgaWYobnVtX2VsdHMgPiAxMjgpIG51bV9lbHRzID0gMTI4O1xuICAgIHZhciB3ID0gMCwgaSA9MDtcbiAgICBmb3IoaSA9IDA7IGkgKyAyIDw9IGJhLmRhdGEubGVuZ3RoOyBpKz0yKXtcbiAgICAgIHcgPSBiYS5kYXRhW2krMF0gfCAoYmEuZGF0YVtpKzFdIDw8IDE2KTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLHcpO1xuICAgIH1cbiAgICBpZiAoKG51bV9lbHRzICYgMSkgIT0gMClcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDc6ICAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBudW1fZWx0cyAqPSAyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBudW1fZWx0cyAqPTI7IC8qIGZhbGx0aHJvdWdoICovXG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV90b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJhKXtcbiAgcmV0dXJuIGJhLmRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSl7XG4gIHZhciBraW5kO1xuICBpZiAgICAgICh0YSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSkga2luZCA9IDA7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSBraW5kID0gMTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQ4QXJyYXkpIGtpbmQgPSAyO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQxNkFycmF5KSBraW5kID0gNDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MTZBcnJheSkga2luZCA9IDU7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgcmV0dXJuIGtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGtpbmQgPSBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpO1xuICB2YXIgdGEgPVxuICAgICAgLyogTmVlZGVkIHRvIGF2b2lkIHVuc2lnbmVkIHNldHRlcnMgb3ZlcmZsb3dpbmdcbiAgICAgICAgIHRoZSByYW5nZSBvZiBPQ2FtbCBbaW50MzJdIHZhbHVlcy4gKi9cbiAgICAgIHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXkgP1xuICAgICAgbmV3IEludDMyQXJyYXkodGEuYnVmZmVyICx0YS5ieXRlT2Zmc2V0LCB0YS5sZW5ndGgpIDogdGE7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gU3lzXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLlN5c19lcnJvciwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N5c19leGl0IChjb2RlKSB7XG4gIGlmKGdsb2JhbFRoaXMucXVpdCkgZ2xvYmFsVGhpcy5xdWl0KGNvZGUpO1xuICAvL25vZGVqc1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQpXG4gICAgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQoY29kZSk7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkZ1bmN0aW9uICdleGl0JyBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuKXtcbiAgc3dpdGNoKGV4blsyXSkge1xuICBjYXNlIC04OiAvLyBNYXRjaF9mYWlsdXJlXG4gIGNhc2UgLTExOiAvLyBBc3NlcnRfZmFpbHVyZVxuICBjYXNlIC0xMjogLy8gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcbiAgICByZXR1cm4gMTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihleG4pe1xuICB2YXIgciA9IFwiXCI7XG4gIGlmKGV4blswXSA9PSAwKSB7XG4gICAgciArPSBleG5bMV1bMV07XG4gICAgaWYoZXhuLmxlbmd0aCA9PSAzICYmIGV4blsyXVswXSA9PSAwICYmIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuWzFdKSkge1xuXG4gICAgICB2YXIgYnVja2V0ID0gZXhuWzJdO1xuICAgICAgdmFyIHN0YXJ0ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHN0YXJ0ID0gMlxuICAgICAgdmFyIGJ1Y2tldCA9IGV4bjtcbiAgICB9XG4gICAgciArPSBcIihcIjtcbiAgICBmb3IodmFyIGkgPSBzdGFydDsgaSA8IGJ1Y2tldC5sZW5ndGg7IGkgKyspe1xuICAgICAgaWYoaSA+IHN0YXJ0KSByKz1cIiwgXCI7XG4gICAgICB2YXIgdiA9IGJ1Y2tldFtpXVxuICAgICAgaWYodHlwZW9mIHYgPT0gXCJudW1iZXJcIilcbiAgICAgICAgcis9IHYudG9TdHJpbmcoKTtcbiAgICAgIGVsc2UgaWYodiBpbnN0YW5jZW9mIE1sQnl0ZXMpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIGlmKHR5cGVvZiB2ID09IFwic3RyaW5nXCIpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIHIgKz0gXCJfXCI7XG4gICAgfVxuICAgIHIgKz0gXCIpXCJcbiAgfSBlbHNlIGlmIChleG5bMF0gPT0gMjQ4KXtcbiAgICByICs9IGV4blsxXVxuICB9XG4gIHJldHVybiByXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX2Zvcm1hdF9leGNlcHRpb24sIGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycil7XG4gIGlmKGVyciBpbnN0YW5jZW9mIEFycmF5ICYmIChlcnJbMF0gPT0gMCB8fCBlcnJbMF0gPT0gMjQ4KSkge1xuICAgIHZhciBoYW5kbGVyID0gY2FtbF9uYW1lZF92YWx1ZShcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIik7XG4gICAgaWYoaGFuZGxlcikgY2FtbF9jYWxsYmFjayhoYW5kbGVyLCBbZXJyLGZhbHNlXSk7XG4gICAgZWxzZSB7XG4gICAgICB2YXIgbXNnID0gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGVycik7XG4gICAgICB2YXIgYXRfZXhpdCA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIik7XG4gICAgICBpZihhdF9leGl0KSBjYW1sX2NhbGxiYWNrKGF0X2V4aXQsIFswXSk7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiBcIiArIG1zZyk7XG4gICAgICBpZihlcnIuanNfZXJyb3IpIHRocm93IGVyci5qc19lcnJvcjtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgZXJyXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfc3RhdGljX2VudlxuZnVuY3Rpb24gY2FtbF9zZXRfc3RhdGljX2VudihrLHYpe1xuICBpZighZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYpXG4gICAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYgPSB7fVxuICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltrXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3N5c19nZXRlbnYgKGNvbnN0KVxuZnVuY3Rpb24ganNvb19zeXNfZ2V0ZW52KG4pIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIC8vbm9kZWpzIGVudlxuICBpZihwcm9jZXNzXG4gICAgICYmIHByb2Nlc3MuZW52XG4gICAgICYmIHByb2Nlc3MuZW52W25dICE9IHVuZGVmaW5lZClcbiAgICByZXR1cm4gcHJvY2Vzcy5lbnZbbl07XG4gIGlmKGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52XG4gICAgICYmIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dKVxuICAgIHJldHVybiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRlbnYgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG5mdW5jdGlvbiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpIHtcbiAgdmFyIHIgPSBqc29vX3N5c19nZXRlbnYoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSkpO1xuICBpZihyID09PSB1bmRlZmluZWQpXG4gICAgY2FtbF9yYWlzZV9ub3RfZm91bmQgKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52XG4vL1JlcXVpcmVzOiBjYW1sX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYobmFtZSl7XG4gIHJldHVybiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgY2FtbF9hcmd2ID0gKChmdW5jdGlvbiAoKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICB2YXIgbWFpbiA9IFwiYS5vdXRcIjtcbiAgdmFyIGFyZ3MgPSBbXVxuXG4gIGlmKHByb2Nlc3NcbiAgICAgJiYgcHJvY2Vzcy5hcmd2XG4gICAgICYmIHByb2Nlc3MuYXJndi5sZW5ndGggPiAxKSB7XG4gICAgdmFyIGFyZ3YgPSBwcm9jZXNzLmFyZ3ZcbiAgICAvL25vZGVqc1xuICAgIG1haW4gPSBhcmd2WzFdO1xuICAgIGFyZ3MgPSBhcmd2LnNsaWNlKDIpO1xuICB9XG5cbiAgdmFyIHAgPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhtYWluKTtcbiAgdmFyIGFyZ3MyID0gWzAsIHBdO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKylcbiAgICBhcmdzMi5wdXNoKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGFyZ3NbaV0pKTtcbiAgcmV0dXJuIGFyZ3MyO1xufSkoKSlcblxuLy9Qcm92aWRlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxudmFyIGNhbWxfZXhlY3V0YWJsZV9uYW1lID0gY2FtbF9hcmd2WzFdXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9hcmd2IChhKSB7XG4gIHJldHVybiBbMCwgY2FtbF9hcmd2WzFdLCBjYW1sX2FyZ3ZdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2FyZ3YgKGEpIHtcbiAgcmV0dXJuIGNhbWxfYXJndjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbW9kaWZ5X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfbW9kaWZ5X2FyZ3YoYXJnKXtcbiAgY2FtbF9hcmd2ID0gYXJnO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuZnVuY3Rpb24gY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lKGEpe1xuICByZXR1cm4gY2FtbF9leGVjdXRhYmxlX25hbWVcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICB2YXIgY21kID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoY21kKTtcbiAgaWYgKHR5cGVvZiByZXF1aXJlICE9IFwidW5kZWZpbmVkXCIpe1xuICAgIHZhciBjaGlsZF9wcm9jZXNzID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpO1xuICAgIGlmKGNoaWxkX3Byb2Nlc3MgJiYgY2hpbGRfcHJvY2Vzcy5leGVjU3luYylcbiAgICAgIHRyeSB7XG4gICAgICAgIGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMoY21kLHtzdGRpbzogJ2luaGVyaXQnfSk7XG4gICAgICAgIHJldHVybiAwXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiAxXG4gICAgICB9XG4gIH1cbiAgZWxzZSByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWUgbXV0YWJsZVxudmFyIGNhbWxfaW5pdGlhbF90aW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAqIDAuMDAxO1xuZnVuY3Rpb24gY2FtbF9zeXNfdGltZSAoKSB7XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICByZXR1cm4gbm93ICogMC4wMDEgLSBjYW1sX2luaXRpYWxfdGltZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuXG4vL1JlcXVpcmVzOiBjYW1sX3N5c190aW1lXG5mdW5jdGlvbiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4oYikge1xuICByZXR1cm4gY2FtbF9zeXNfdGltZSgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yYW5kb21fc2VlZCBtdXRhYmxlXG4vL1RoZSBmdW5jdGlvbiBuZWVkcyB0byByZXR1cm4gYW4gYXJyYXkgc2luY2UgT0NhbWwgNC4wLi4uXG5mdW5jdGlvbiBjYW1sX3N5c19yYW5kb21fc2VlZCAoKSB7XG4gIGlmIChnbG9iYWxUaGlzLmNyeXB0bykge1xuICAgICBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgICAgdmFyIGEgPSBnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDMyQXJyYXkoNCkpO1xuICAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgIH0gZWxzZSBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMpIHtcbiAgICAgICB2YXIgYSA9IG5ldyBJbnQzMkFycmF5KGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKDE2KS5idWZmZXIpO1xuICAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgIH1cbiAgfVxuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgdmFyIHggPSBub3deMHhmZmZmZmZmZipNYXRoLnJhbmRvbSgpO1xuICByZXR1cm4gWzAseF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfaW50X3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSBjb25zdFxuLy8gbWF4X2ludCAvIDQgc28gdGhhdCB0aGUgZm9sbG93aW5nIGRvZXMgbm90IG92ZXJmbG93XG4vL2xldCBtYXhfc3RyaW5nX2xlbmd0aCA9IHdvcmRfc2l6ZSAvIDggKiBtYXhfYXJyYXlfbGVuZ3RoIC0gMTs7XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplICgpIHsgcmV0dXJuICgweDdGRkZGRkZGLzQpIHwgMDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCAoKSB7IHJldHVybiBvc190eXBlID09IFwiVW5peFwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJXaW4zMlwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIkN5Z3dpblwiID8gMSA6IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJqc19vZl9vY2FtbFwiKV07XG59XG5cbi8vUHJvdmlkZXM6IG9zX3R5cGVcbnZhciBvc190eXBlID0gKGdsb2JhbFRoaXMucHJvY2VzcyAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT0gXCJ3aW4zMlwiKSA/IFwiQ3lnd2luXCIgOiBcIlVuaXhcIjtcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfY29uZmlnIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfY29uZmlnICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG9zX3R5cGUpLCAzMiwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzYXR0eVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNhdHR5KF9jaGFuKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfdmFyaWFudFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3ZhcmlhbnQoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVyc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3BhcmFtZXRlcnMoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyKCl7cmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xudmFyIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyAoYm9vbCkge1xuICBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSBib29sO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3J1bnRpbWVfd2FybmluZ3M7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9lbmFibGVkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lKF9jaGFubmVsKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJTcGFjZXRpbWUgcHJvZmlsaW5nIG9ubHkgd29ya3MgZm9yIG5hdGl2ZSBjb2RlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3hkZ19kZWZhdWx0c1xuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfeGRnX2RlZmF1bHRzKF91bml0KSB7XG4gIHJldHVybiAwOyAvLyBlbXB0eSBsaXN0XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZShuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5pc0ZpbGUocm9vdC5yZXN0KTtcbn1cbi8vQWx3YXlzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIGlmKHByb2Nlc3MgJiYgcHJvY2Vzcy5vbikge1xuICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZnVuY3Rpb24gKGVyciwgb3JpZ2luKSB7XG4gICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpO1xuICAgICAgcHJvY2Vzcy5leGl0ICgyKTtcbiAgICB9KVxuICB9XG4gIGVsc2UgaWYoZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKXtcbiAgICBnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZnVuY3Rpb24oZXZlbnQpe1xuICAgICAgaWYoZXZlbnQuZXJyb3Ipe1xuICAgICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihldmVudC5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbmNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKTtcblxuXG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbnZhciBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IEZMQUcoXCJ3aXRoLWpzLWVycm9yXCIpO1xuXG4oZnVuY3Rpb24gKCkge1xuICB2YXIgciA9IGpzb29fc3lzX2dldGVudihcIk9DQU1MUlVOUEFSQU1cIilcbiAgaWYociAhPT0gdW5kZWZpbmVkKXtcbiAgICB2YXIgbCA9IHIuc3BsaXQoXCIsXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBsLmxlbmd0aDsgaSsrKXtcbiAgICAgIGlmKGxbaV0gPT0gXCJiXCIpIHsgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSAxOyBicmVhayB9XG4gICAgICBlbHNlIGlmIChsW2ldLnN0YXJ0c1dpdGgoXCJiPVwiKSkge1xuICAgICAgICBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9ICsobFtpXS5zbGljZSgyKSl9XG4gICAgICBlbHNlIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxufSkgKClcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYmFja3RyYWNlX3N0YXR1c1xuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfYmFja3RyYWNlX3N0YXR1cyAoX3VuaXQpIHsgcmV0dXJuIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9yZWNvcmRfYmFja3RyYWNlIChiKSB7IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gYjsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90KCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Q6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UoZXhuLCBidCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QoKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWJcblxuLy9Qcm92aWRlczogY2FtbF9qc19wdXJlX2V4cHIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfcHVyZV9leHByIChmKSB7IHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFswXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9qc19zZXQobyxmLHYpIHsgb1tmXT12O3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9qc19nZXQgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19nZXQobyxmKSB7IHJldHVybiBvW2ZdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2RlbGV0ZSAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2RlbGV0ZShvLGYpIHsgZGVsZXRlIG9bZl07IHJldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2luc3RhbmNlb2YgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfaW5zdGFuY2VvZihvLGMpIHsgcmV0dXJuIChvIGluc3RhbmNlb2YgYykgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3R5cGVvZiAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3R5cGVvZihvKSB7IHJldHVybiB0eXBlb2YgbzsgfVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZVxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lKHJlcykge1xuICB2YXIgYyA9IDE7XG4gIHdoaWxlKHJlcyAmJiByZXMuam9vX3RyYW1wKXtcbiAgICByZXMgPSByZXMuam9vX3RyYW1wLmFwcGx5KG51bGwsIHJlcy5qb29fYXJncyk7XG4gICAgYysrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lX3JldHVyblxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpIHtcbiAgcmV0dXJuIHtqb29fdHJhbXA6Zixqb29fYXJnczphcmdzfTtcbn1cblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG52YXIgY2FtbF9zdGFja19kZXB0aCA9IDA7XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19jaGVja19kZXB0aFxuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoXG5mdW5jdGlvbiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCkge1xuICAgIHJldHVybiAtLWNhbWxfc3RhY2tfZGVwdGggPiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiAhZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX2NhbGxfZ2VuXG52YXIgY2FtbF9jYWxsYmFjayA9IGNhbWxfY2FsbF9nZW47XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6IGVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9zdGFja19kZXB0aCwgY2FtbF9jYWxsX2dlbiwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2ssIGNhbWxfd3JhcF9leGNlcHRpb24sIGNhbWxfcmVzdW1lX3N0YWNrLCBjYW1sX2ZyZXNoX29vX2lkLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50XG5mdW5jdGlvbiBjYW1sX2NhbGxiYWNrKGYsYXJncykge1xuICBmdW5jdGlvbiB1bmNhdWdodF9lZmZlY3RfaGFuZGxlcihlZmYsayxtcykge1xuICAgIC8vIFJlc3VtZXMgdGhlIGNvbnRpbnVhdGlvbiBrIGJ5IHJhaXNpbmcgZXhjZXB0aW9uIFVuaGFuZGxlZC5cbiAgICBjYW1sX3Jlc3VtZV9zdGFjayhrWzFdLG1zKTtcbiAgICB2YXIgZXhuID0gY2FtbF9uYW1lZF92YWx1ZShcIkVmZmVjdC5VbmhhbmRsZWRcIik7XG4gICAgaWYoZXhuKSBjYW1sX3JhaXNlX3dpdGhfYXJnKGV4biwgZWZmKTtcbiAgICBlbHNlIHtcbiAgICAgIGV4biA9IFsyNDgsY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkVmZmVjdC5VbmhhbmRsZWRcIiksIGNhbWxfZnJlc2hfb29faWQoMCldO1xuICAgICAgY2FtbF9yYWlzZV9jb25zdGFudChleG4pO1xuICAgIH1cbiAgfVxuICB2YXIgc2F2ZWRfc3RhY2tfZGVwdGggPSBjYW1sX3N0YWNrX2RlcHRoO1xuICB2YXIgc2F2ZWRfZXhuX3N0YWNrID0gY2FtbF9leG5fc3RhY2s7XG4gIHZhciBzYXZlZF9maWJlcl9zdGFjayA9IGNhbWxfZmliZXJfc3RhY2s7XG4gIHRyeSB7XG4gICAgY2FtbF9leG5fc3RhY2sgPSAwO1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPVxuICAgICAge2g6WzAsIDAsIDAsIHVuY2F1Z2h0X2VmZmVjdF9oYW5kbGVyXSwgcjp7azowLCB4OjAsIGU6MH19O1xuICAgIHZhciByZXMgPSB7am9vX3RyYW1wOiBmLFxuICAgICAgICAgICAgICAgam9vX2FyZ3M6IGFyZ3MuY29uY2F0KGZ1bmN0aW9uICh4KXtyZXR1cm4geDt9KX07XG4gICAgZG8ge1xuICAgICAgY2FtbF9zdGFja19kZXB0aCA9IDQwO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzID0gY2FtbF9jYWxsX2dlbihyZXMuam9vX3RyYW1wLCByZXMuam9vX2FyZ3MpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvKiBIYW5kbGUgZXhjZXB0aW9uIGNvbWluZyBmcm9tIEphdmFTY3JpcHQgb3IgZnJvbSB0aGUgcnVudGltZS4gKi9cbiAgICAgICAgaWYgKCFjYW1sX2V4bl9zdGFjaykgdGhyb3cgZTtcbiAgICAgICAgdmFyIGhhbmRsZXIgPSBjYW1sX2V4bl9zdGFja1sxXTtcbiAgICAgICAgY2FtbF9leG5fc3RhY2sgPSBjYW1sX2V4bl9zdGFja1syXTtcbiAgICAgICAgcmVzID0ge2pvb190cmFtcDogaGFuZGxlcixcbiAgICAgICAgICAgICAgIGpvb19hcmdzOiBbY2FtbF93cmFwX2V4Y2VwdGlvbihlKV19O1xuICAgICAgfVxuICAgIH0gd2hpbGUocmVzICYmIHJlcy5qb29fYXJncylcbiAgfSBmaW5hbGx5IHtcbiAgICBjYW1sX3N0YWNrX2RlcHRoID0gc2F2ZWRfc3RhY2tfZGVwdGg7XG4gICAgY2FtbF9leG5fc3RhY2sgPSBzYXZlZF9leG5fc3RhY2s7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9IHNhdmVkX2ZpYmVyX3N0YWNrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfanNcbmZ1bmN0aW9uIGNhbWxfaXNfanMoKSB7XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmcodW5pdCl7XG4gIHJldHVybiBGTEFHKFwidXNlLWpzLXN0cmluZ1wiKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzb29fZmxhZ3NfZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHModW5pdCl7XG4gIHJldHVybiBGTEFHKFwiZWZmZWN0c1wiKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dyYXBfZXhjZXB0aW9uIGNvbnN0IChtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyxjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBjYW1sX3dyYXBfZXhjZXB0aW9uKGUpIHtcbiAgaWYgKEZMQUcoXCJleGN3cmFwXCIpKSB7XG4gICAgaWYoZSBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gZTtcbiAgICB2YXIgZXhuO1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGNocm9tZSwgc2FmYXJpXG4gICAgaWYoZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICAgJiYgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAgICYmIGUubWVzc2FnZVxuICAgICAgICYmIGUubWVzc2FnZS5tYXRjaCgvbWF4aW11bSBjYWxsIHN0YWNrL2kpKVxuICAgICAgZXhuID0gY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdztcbiAgICAvL1N0YWNrX292ZXJmbG93OiBmaXJlZm94XG4gICAgZWxzZSBpZihnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICAgJiYgZS5tZXNzYWdlXG4gICAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC90b28gbXVjaCByZWN1cnNpb24vaSkpXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vV3JhcCBFcnJvciBpbiBKcy5FcnJvciBleGNlcHRpb25cbiAgICBlbHNlIGlmKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yICYmIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpKVxuICAgICAgZXhuID0gWzAsY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIiksZV07XG4gICAgZWxzZVxuICAgICAgLy9mYWxsYmFjazogd3JhcHBlZCBpbiBGYWlsdXJlXG4gICAgICBleG4gPSBbMCxjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKFN0cmluZyhlKSldO1xuICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhbiBlcnJvciBhdCBoYW5kLCBsZXQncyB1c2UgaXQuXG4gICAgaWYgKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yKVxuICAgICAgZXhuLmpzX2Vycm9yID0gZTtcbiAgICByZXR1cm4gZXhuO1xuICB9IGVsc2VcbiAgICByZXR1cm4gZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIGlmKGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnKVxuICAgIHJldHVybiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKTtcbiAgZWxzZSByZXR1cm4gZXhuXG59XG5cbi8vIEV4cGVyaW1lbnRhbFxuLy9Qcm92aWRlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgLy9uZXZlciByZXJhaXNlIGZvciBjb25zdGFudCBleG5cbiAgaWYoIWV4bi5qc19lcnJvciB8fCBmb3JjZSB8fCBleG5bMF0gPT0gMjQ4KSBleG4uanNfZXJyb3IgPSBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIkpzIGV4Y2VwdGlvbiBjb250YWluaW5nIGJhY2t0cmFjZVwiKTtcbiAgcmV0dXJuIGV4bjtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBbMCwgZXhuLmpzX2Vycm9yXTsgfVxuICByZXR1cm4gMDtcbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9ib29sKHgpIHsgcmV0dXJuICEheDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYm9vbCh4KSB7IHJldHVybiAreDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Zsb2F0IGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfZnJvbV9pbnQzMlxuLy9BbGlhczogY2FtbF9qc19mcm9tX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fZmxvYXQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19mbG9hdCh4KSB7IHJldHVybiB4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2ludDMyIGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfdG9fbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2pzX3RvX2ludDMyKHgpIHsgcmV0dXJuIHh8MDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9hcnJheShhKSB7XG4gIHJldHVybiBhLnNsaWNlKDEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc190b19hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc190b19hcnJheShhKSB7XG4gIHZhciBsZW4gPSBhLmxlbmd0aDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBiWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxsZW47aSsrKSBiW2krMV0gPSBhW2ldO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X29mX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X29mX2pzX2FycmF5KGEpe1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgaT1hLmxlbmd0aCAtIDE7IGk+PTA7IGktLSl7XG4gICAgdmFyIGUgPSBhW2ldO1xuICAgIGwgPSBbMCxlLGxdO1xuICB9XG4gIHJldHVybiBsXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF90b19qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF90b19qc19hcnJheShsKXtcbiAgdmFyIGEgPSBbXTtcbiAgZm9yKDsgbCAhPT0gMDsgbCA9IGxbMl0pIHtcbiAgICBhLnB1c2gobFsxXSk7XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdmFyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX3Zhcih4KSB7XG4gIHZhciB4ID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoeCk7XG4gIC8vQ2hlY2tzIHRoYXQgeCBoYXMgdGhlIGZvcm0gaWRlbnRbLmlkZW50XSpcbiAgaWYoIXgubWF0Y2goL15bYS16QS1aXyRdW2EtekEtWl8kMC05XSooXFwuW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKSokLykpe1xuICAgIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX3ZhcjogXFxcIlwiICsgeCArIFwiXFxcIiBpcyBub3QgYSB2YWxpZCBKYXZhU2NyaXB0IHZhcmlhYmxlLiBjb250aW51aW5nIC4uXCIpO1xuICAgIC8vY29uc29sZS5lcnJvcihcIkpzLlVuc2FmZS5ldmFsX3N0cmluZ1wiKVxuICB9XG4gIHJldHVybiBldmFsKHgpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19jYWxsIChjb25zdCwgbXV0YWJsZSwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19jYWxsKGYsIG8sIGFyZ3MpIHsgcmV0dXJuIGYuYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5fY2FsbCAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfZnVuX2NhbGwoZiwgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIGYoKTtcbiAgY2FzZSAyOiByZXR1cm4gZiAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIGYgKGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgcmV0dXJuIGYuYXBwbHkobnVsbCwgY2FtbF9qc19mcm9tX2FycmF5KGEpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbWV0aF9jYWxsIChtdXRhYmxlLCBjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbWV0aF9jYWxsKG8sIGYsIGFyZ3MpIHtcbiAgcmV0dXJuIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoZildLmFwcGx5KG8sIGNhbWxfanNfZnJvbV9hcnJheShhcmdzKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX25ldyAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbmV3KGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDE6IHJldHVybiBuZXcgYztcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdLGFbN10pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7IHJldHVybiBjLmFwcGx5KHRoaXMsIGNhbWxfanNfZnJvbV9hcnJheShhKSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9vanNfbmV3X2FyciAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb2pzX25ld19hcnIoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMDogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDE6IHJldHVybiBuZXcgYyAoYVswXSk7XG4gIGNhc2UgMjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgYSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgaWYobGVuID4gMCl7XG4gICAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJncyA9IFt1bmRlZmluZWRdO1xuICAgIH1cbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgICByZXR1cm4gKHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKT9jYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKTpyZXM7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1xuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgW2FyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTsgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc193cmFwX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsYXJncyk7XG4gICAgcmV0dXJuIChyZXMgaW5zdGFuY2VvZiBGdW5jdGlvbik/Y2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcyk6cmVzO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZixbdGhpcyxhcmdzXSk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkgKyAxKTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikgLSAxO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTsgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiAhZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSB7XG4gIHJldHVybiAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICAvLyBGdW5jdGlvbnMgaGF2ZSBhbiBhZGRpdGlvbmFsIGNvbnRpbnVhdGlvbiBwYXJhbWV0ZXIuIFRoaXMgc2hvdWxkXG4gIC8vIG5vdCBiZSB2aXNpYmxlIHdoZW4gY2FsbGluZyB0aGVtIGZyb20gSmF2YVNjcmlwdFxuICByZXR1cm4gKChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCkpIC0gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2VxdWFscyBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09IHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfc3RyaWN0X2VxdWFscyBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3N0cmljdF9lcXVhbHMgKHgsIHkpIHsgcmV0dXJuICsoeCA9PT0geSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19ldmFsX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19ldmFsX3N0cmluZyAocykge3JldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXhwciAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19leHByKHMpIHtcbiAgY29uc29sZS5lcnJvcihcImNhbWxfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1cmVfanNfZXhwciBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9wdXJlX2pzX2V4cHIgKHMpe1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9wdXJlX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgcmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19vYmplY3QgKG9iamVjdF9saXRlcmFsKVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfb2JqZWN0IChhKSB7XG4gIHZhciBvID0ge307XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwID0gYVtpXTtcbiAgICBvW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBbMV0pXSA9IHBbMl07XG4gIH1cbiAgcmV0dXJuIG87XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2NvbnN0YW50c1xudmFyIGNhbWxfbWFyc2hhbF9jb25zdGFudHMgPSB7XG4gIFBSRUZJWF9TTUFMTF9CTE9DSzogICAgICAgICAweDgwLFxuICBQUkVGSVhfU01BTExfSU5UOiAgICAgICAgICAgMHg0MCxcbiAgUFJFRklYX1NNQUxMX1NUUklORzogICAgICAgIDB4MjAsXG4gIENPREVfSU5UODogICAgICAgICAgICAgICAgICAweDAwLFxuICBDT0RFX0lOVDE2OiAgICAgICAgICAgICAgICAgMHgwMSxcbiAgQ09ERV9JTlQzMjogICAgICAgICAgICAgICAgIDB4MDIsXG4gIENPREVfSU5UNjQ6ICAgICAgICAgICAgICAgICAweDAzLFxuICBDT0RFX1NIQVJFRDg6ICAgICAgICAgICAgICAgMHgwNCxcbiAgQ09ERV9TSEFSRUQxNjogICAgICAgICAgICAgIDB4MDUsXG4gIENPREVfU0hBUkVEMzI6ICAgICAgICAgICAgICAweDA2LFxuICBDT0RFX0JMT0NLMzI6ICAgICAgICAgICAgICAgMHgwOCxcbiAgQ09ERV9CTE9DSzY0OiAgICAgICAgICAgICAgIDB4MTMsXG4gIENPREVfU1RSSU5HODogICAgICAgICAgICAgICAweDA5LFxuICBDT0RFX1NUUklORzMyOiAgICAgICAgICAgICAgMHgwQSxcbiAgQ09ERV9ET1VCTEVfQklHOiAgICAgICAgICAgIDB4MEIsXG4gIENPREVfRE9VQkxFX0xJVFRMRTogICAgICAgICAweDBDLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfQklHOiAgICAgMHgwRCxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTogIDB4MEUsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfQklHOiAgICAweDBGLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTogMHgwNyxcbiAgQ09ERV9DT0RFUE9JTlRFUjogICAgICAgICAgIDB4MTAsXG4gIENPREVfSU5GSVhQT0lOVEVSOiAgICAgICAgICAweDExLFxuICBDT0RFX0NVU1RPTTogICAgICAgICAgICAgICAgMHgxMixcbiAgQ09ERV9DVVNUT01fTEVOOiAgICAgICAgICAgIDB4MTgsXG4gIENPREVfQ1VTVE9NX0ZJWEVEOiAgICAgICAgICAweDE5XG59XG5cblxuLy9Qcm92aWRlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIFVJbnQ4QXJyYXlSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gczsgdGhpcy5pID0gaTsgfVxuVUludDhBcnJheVJlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDgpIHwgc1tpICsgMV1cbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDI0ID4+IDE2KSB8IHNbaSArIDFdO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzW2ldIDw8IDI0KSB8IChzW2krMV0gPDwgMTYpIHxcbiAgICAgICAgICAgIChzW2krMl0gPDwgOCkgfCBzW2krM10pID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkodGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKTtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBNbFN0cmluZ1JlYWRlciAocywgaSkgeyB0aGlzLnMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpOyB0aGlzLmkgPSBpOyB9XG5NbFN0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCA+PiAxNikgfCBzLmNoYXJDb2RlQXQoaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5zLnN1YnN0cmluZyhpLCBpICsgbGVuKSk7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgdmFyIHMgPSB0aGlzLnM7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBiW2pdID0gcy5jaGFyQ29kZUF0KGkgKyBqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gYjtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBCaWdTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBCaWdTdHJpbmdSZWFkZXIgKGJzLCBpKSB7IHRoaXMucyA9IGJzOyB0aGlzLmkgPSBpOyB9XG5CaWdTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCA4KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgMjQgPj4gMTYpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMykgICAgICAgICApID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgYXJyID0gbmV3IEFycmF5KGxlbilcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspe1xuICAgICAgYXJyW2pdID0gY2FtbF9iYV9nZXRfMSh0aGlzLnMsIGkraik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoaSk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLmRhdGEuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICB9XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoY2FtbF9pbnQ2NF9vZl9ieXRlcyAoYSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKHMsIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocyksIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gIHNpemVbMF0gPSA4O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyAodCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tYXJzaGFsKHdyaXRlciwgdiwgc2l6ZXMpIHtcbiAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzICh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSAoOCwgYltpXSk7XG4gIHNpemVzWzBdID0gODsgc2l6ZXNbMV0gPSA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX3VubWFyc2hhbFxuZnVuY3Rpb24gY2FtbF9pbnQzMl91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1ICgpKSB7XG4gIGNhc2UgMTpcbiAgICBzaXplWzBdID0gNDtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gIGNhc2UgMjpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IG5hdGl2ZSBpbnRlZ2VyIHZhbHVlIHRvbyBsYXJnZVwiKTtcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG5hdGl2ZSBpbnRlZ2VyXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF91bm1hcnNoYWwsIGNhbWxfaW50NjRfbWFyc2hhbCwgY2FtbF9pbnQ2NF9jb21wYXJlLCBjYW1sX2ludDY0X2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsLCBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2VyaWFsaXplLCBjYW1sX2JhX2Rlc2VyaWFsaXplLCBjYW1sX2JhX2NvbXBhcmUsIGNhbWxfYmFfaGFzaFxudmFyIGNhbWxfY3VzdG9tX29wcyA9XG4gICAge1wiX2pcIjoge1xuICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDY0X3VubWFyc2hhbCxcbiAgICAgIHNlcmlhbGl6ZSAgOiBjYW1sX2ludDY0X21hcnNoYWwsXG4gICAgICBmaXhlZF9sZW5ndGggOiA4LFxuICAgICAgY29tcGFyZSA6IGNhbWxfaW50NjRfY29tcGFyZSxcbiAgICAgIGhhc2ggOiBjYW1sX2ludDY0X2hhc2hcbiAgICB9LFxuICAgICBcIl9pXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50MzJfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX25cIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycmF5XCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnJheVwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9LFxuICAgICBcIl9iaWdhcnIwMlwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyMDJcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfVxuICAgIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcykge1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdGKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cbiAgdmFyIG1hZ2ljID0gcmVhZGVyLnJlYWQzMnUgKClcbiAgc3dpdGNoKG1hZ2ljKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgY29tcHJlc3NlZCA9IDA7XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IGRhdGFfbGVuO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV82NCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByZWFkZXIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBjb21wcmVzc2VkID0gMTtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciB1bmNvbXByZXNzZWRfZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfMzIgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZHZscSAob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIHRoaXMgcGxhdGZvcm1cIik7XG4gICAgfVxuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRjogLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gYSAzMi1iaXQgcGxhdGZvcm1cIik7XG4gICAgYnJlYWtcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogYmFkIG9iamVjdFwiKTtcbiAgICBicmVhaztcbiAgfVxuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGludGVybl9vYmpfdGFibGUgPSAobnVtX29iamVjdHMgPiAwKT9bXTpudWxsO1xuICB2YXIgb2JqX2NvdW50ZXIgPSAwO1xuICBmdW5jdGlvbiBpbnRlcm5fcmVjIChyZWFkZXIpIHtcbiAgICB2YXIgY29kZSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgaWYgKGNvZGUgPj0gMHg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8pIHtcbiAgICAgIGlmIChjb2RlID49IDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8pIHtcbiAgICAgICAgdmFyIHRhZyA9IGNvZGUgJiAweEY7XG4gICAgICAgIHZhciBzaXplID0gKGNvZGUgPj4gNCkgJiAweDc7XG4gICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlXG4gICAgICAgIHJldHVybiAoY29kZSAmIDB4M0YpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSA+PSAweDIwLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyAqLykge1xuICAgICAgICB2YXIgbGVuID0gY29kZSAmIDB4MUY7XG4gICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2goY29kZSkge1xuICAgICAgICBjYXNlIDB4MDA6IC8vY3N0LkNPREVfSU5UODpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQ4cyAoKTtcbiAgICAgICAgY2FzZSAweDAxOiAvL2NzdC5DT0RFX0lOVDE2OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDE2cyAoKTtcbiAgICAgICAgY2FzZSAweDAyOiAvL2NzdC5DT0RFX0lOVDMyOlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgICAgICAgY2FzZSAweDAzOiAvL2NzdC5DT0RFX0lOVDY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW50ZWdlciB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwNDogLy9jc3QuQ09ERV9TSEFSRUQ4OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA1OiAvL2NzdC5DT0RFX1NIQVJFRDE2OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDE2dSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNjogLy9jc3QuQ09ERV9TSEFSRUQzMjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDg6IC8vY3N0LkNPREVfQkxPQ0szMjpcbiAgICAgICAgICB2YXIgaGVhZGVyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgdmFyIHRhZyA9IGhlYWRlciAmIDB4RkY7XG4gICAgICAgICAgdmFyIHNpemUgPSBoZWFkZXIgPj4gMTA7XG4gICAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEzOiAvL2NzdC5DT0RFX0JMT0NLNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogZGF0YSBibG9jayB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwOTogLy9jc3QuQ09ERV9TVFJJTkc4OlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQTogLy9jc3QuQ09ERV9TVFJJTkczMjpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBDOiAvL2NzdC5DT0RFX0RPVUJMRV9MSVRUTEU6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFs3IC0gaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEI6IC8vY3N0LkNPREVfRE9VQkxFX0JJRzpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0W2ldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBFOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEQ6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwNzogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEY6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTA6IC8vY3N0LkNPREVfQ09ERVBPSU5URVI6XG4gICAgICAgIGNhc2UgMHgxMTogLy9jc3QuQ09ERV9JTkZJWFBPSU5URVI6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogY29kZSBwb2ludGVyXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MTI6IC8vY3N0LkNPREVfQ1VTVE9NOlxuICAgICAgICBjYXNlIDB4MTg6IC8vY3N0LkNPREVfQ1VTVE9NX0xFTjpcbiAgICAgICAgY2FzZSAweDE5OiAvL2NzdC5DT0RFX0NVU1RPTV9GSVhFRDpcbiAgICAgICAgICB2YXIgYywgcyA9IFwiXCI7XG4gICAgICAgICAgd2hpbGUgKChjID0gcmVhZGVyLnJlYWQ4dSAoKSkgIT0gMCkgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW3NdO1xuICAgICAgICAgIHZhciBleHBlY3RlZF9zaXplO1xuICAgICAgICAgIGlmKCFvcHMpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHVua25vd24gY3VzdG9tIGJsb2NrIGlkZW50aWZpZXJcIik7XG4gICAgICAgICAgc3dpdGNoKGNvZGUpe1xuICAgICAgICAgIGNhc2UgMHgxMjogLy8gY3N0LkNPREVfQ1VTVE9NIChkZXByZWNhdGVkKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE5OiAvLyBjc3QuQ09ERV9DVVNUT01fRklYRURcbiAgICAgICAgICAgIGlmKCFvcHMuZml4ZWRfbGVuZ3RoKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGV4cGVjdGVkIGEgZml4ZWQtc2l6ZSBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gb3BzLmZpeGVkX2xlbmd0aDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxODogLy8gY3N0LkNPREVfQ1VTVE9NX0xFTlxuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgICAgLy8gU2tpcCBzaXplNjRcbiAgICAgICAgICAgIHJlYWRlci5yZWFkMzJzKCk7IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSByZWFkZXIuaTtcbiAgICAgICAgICB2YXIgc2l6ZSA9IFswXTtcbiAgICAgICAgICB2YXIgdiA9IG9wcy5kZXNlcmlhbGl6ZShyZWFkZXIsIHNpemUpO1xuICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gc2l6ZVswXSlcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbmNvcnJlY3QgbGVuZ3RoIG9mIHNlcmlhbGl6ZWQgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBtZXNzYWdlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmKGNvbXByZXNzZWQpIHtcbiAgICBpZihjYW1sX2RlY29tcHJlc3NfaW5wdXQpIHtcbiAgICAgIHZhciBkYXRhID0gcmVhZGVyLnJlYWR1aW50OGFycmF5KGRhdGFfbGVuKTtcbiAgICAgIHZhciByZXMgPSBuZXcgVWludDhBcnJheSh1bmNvbXByZXNzZWRfZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IGNhbWxfZGVjb21wcmVzc19pbnB1dChkYXRhLCByZXMpO1xuICAgICAgdmFyIHJlYWRlciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKHJlcywgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY29tcHJlc3NlZCBvYmplY3QsIGNhbm5vdCBkZWNvbXByZXNzXCIpO1xuICAgIH1cbiAgfVxuICB2YXIgcmVzID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgc2l6ZSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2ID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIGQgPSB2Lmxlbmd0aDtcbiAgICBpZiAoZCA8IHNpemUpIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgdltkXSA9IGludGVybl9yZWMgKHJlYWRlcik7XG4gIH1cbiAgaWYgKHR5cGVvZiBvZnMhPVwibnVtYmVyXCIpIG9mc1swXSA9IHJlYWRlci5pO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDIwXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA+PSA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDE2XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG5mdW5jdGlvbiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChzLCBvZnMpIHtcbiAgdmFyIHIgPSBuZXcgVUludDhBcnJheVJlYWRlcihjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpLCBvZnMpO1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N0Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT0gMCkge1xuICAgICAgYyA9IHIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPSBuNyA+PiA3KSBvdmVyZmxvd1swXSA9IHRydWU7XG4gICAgICBuID0gbjcgfCAoYyAmIDB4N0YpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuXG4gIHN3aXRjaChyLnJlYWQzMnUoKSl7XG4gIGNhc2UgMHg4NDk1QTZCRTogLyogSW50ZXh0X21hZ2ljX251bWJlcl9zbWFsbCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gMjA7XG4gICAgdmFyIGRhdGFfbGVuID0gci5yZWFkMzJ1KCk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByLnJlYWQ4dSgpICYgMHgzRjtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gdGhpcyBwbGF0Zm9ybVwiKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJGOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2JpZyAqL1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogYmFkIG9iamVjdFwiKTtcbiAgICBicmVha1xuICB9XG4gIHJldHVybiBoZWFkZXJfbGVuIC0gY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplICsgZGF0YV9sZW47XG59XG5cbi8vUHJvdmlkZXM6IE1sT2JqZWN0VGFibGVcbnZhciBNbE9iamVjdFRhYmxlO1xuaWYgKHR5cGVvZiBnbG9iYWxUaGlzLk1hcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIC8qIHBvbHlmaWxsICh1c2luZyBsaW5lYXIgc2VhcmNoKSAqL1xuICAgIGZ1bmN0aW9uIE5haXZlTG9va3VwKG9ianMpIHsgdGhpcy5vYmpzID0gb2JqczsgfVxuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbih2KSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub2Jqcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGhpcy5vYmpzW2ldID09PSB2KSByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9O1xuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIC8vIERvIG5vdGhpbmcgaGVyZS4gW01sT2JqZWN0VGFibGUuc3RvcmVdIHdpbGwgcHVzaCB0byBbdGhpcy5vYmpzXSBkaXJlY3RseS5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgTmFpdmVMb29rdXAodGhpcy5vYmpzKTtcbiAgICB9O1xuICB9KCk7XG59XG5lbHNlIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IGdsb2JhbFRoaXMuTWFwKCk7XG4gIH07XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnN0b3JlID0gZnVuY3Rpb24odikge1xuICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gIHRoaXMub2Jqcy5wdXNoKHYpO1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5yZWNhbGwgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICByZXR1cm4gKGkgPT09IHVuZGVmaW5lZClcbiAgICA/IHVuZGVmaW5lZCA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAgIC8qIGluZGV4IGlzIHJlbGF0aXZlICovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBNbE9iamVjdFRhYmxlLCBjYW1sX2xpc3RfdG9fanNfYXJyYXksIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IGZ1bmN0aW9uICgpe1xuICBmdW5jdGlvbiBXcml0ZXIgKCkgeyB0aGlzLmNodW5rID0gW107IH1cbiAgV3JpdGVyLnByb3RvdHlwZSA9IHtcbiAgICBjaHVua19pZHg6MjAsIGJsb2NrX2xlbjowLCBvYmpfY291bnRlcjowLCBzaXplXzMyOjAsIHNpemVfNjQ6MCxcbiAgICB3cml0ZTpmdW5jdGlvbiAoc2l6ZSwgdmFsdWUpIHtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2F0OmZ1bmN0aW9uIChwb3MsIHNpemUsIHZhbHVlKSB7XG4gICAgICB2YXIgcG9zID0gcG9zO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2NvZGU6ZnVuY3Rpb24gKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX3NoYXJlZDpmdW5jdGlvbiAob2Zmc2V0KSB7XG4gICAgICBpZiAob2Zmc2V0IDwgKDEgPDwgOCkpIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgKDEgPDwgMTYpKSB0aGlzLndyaXRlX2NvZGUoMTYsIDB4MDUgLypjc3QuQ09ERV9TSEFSRUQxNiovLCBvZmZzZXQpO1xuICAgICAgZWxzZSB0aGlzLndyaXRlX2NvZGUoMzIsIDB4MDYgLypjc3QuQ09ERV9TSEFSRUQzMiovLCBvZmZzZXQpO1xuICAgIH0sXG4gICAgcG9zOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuY2h1bmtfaWR4IH0sXG4gICAgZmluYWxpemU6ZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSB0aGlzLmNodW5rX2lkeCAtIDIwO1xuICAgICAgdGhpcy5jaHVua19pZHggPSAwO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIDB4ODQ5NUE2QkUpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLm9ial9jb3VudGVyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfMzIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gKGZsYWdzLmluZGV4T2YoMCAvKk1hcnNoYWwuTm9fc2hhcmluZyovKSAhPT0gLTEpLFxuICAgICAgICBjbG9zdXJlcyA9ICAoZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTEpO1xuICAgIC8qIE1hcnNoYWwuQ29tcGF0XzMyIGlzIHJlZHVuZGFudCBzaW5jZSBpbnRlZ2VycyBhcmUgMzItYml0IGFueXdheSAqL1xuXG4gICAgaWYgKGNsb3N1cmVzKVxuICAgICAgY29uc29sZS53YXJuKFwiaW4gY2FtbF9vdXRwdXRfdmFsOiBmbGFnIE1hcnNoYWwuQ2xvc3VyZXMgaXMgbm90IHN1cHBvcnRlZC5cIik7XG5cbiAgICB2YXIgd3JpdGVyID0gbmV3IFdyaXRlciAoKTtcbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICB2YXIgaW50ZXJuX29ial90YWJsZSA9IG5vX3NoYXJpbmcgPyBudWxsIDogbmV3IE1sT2JqZWN0VGFibGUoKTtcblxuICAgIGZ1bmN0aW9uIG1lbW8odikge1xuICAgICAgaWYgKG5vX3NoYXJpbmcpIHJldHVybiBmYWxzZTtcbiAgICAgIHZhciBleGlzdGluZ19vZmZzZXQgPSBpbnRlcm5fb2JqX3RhYmxlLnJlY2FsbCh2KTtcbiAgICAgIGlmIChleGlzdGluZ19vZmZzZXQpIHsgd3JpdGVyLndyaXRlX3NoYXJlZChleGlzdGluZ19vZmZzZXQpOyByZXR1cm4gdHJ1ZTsgfVxuICAgICAgZWxzZSB7IGludGVybl9vYmpfdGFibGUuc3RvcmUodik7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVybl9yZWMgKHYpIHtcbiAgICAgIGlmICh2LmNhbWxfY3VzdG9tKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBuYW1lID0gdi5jYW1sX2N1c3RvbTtcbiAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tuYW1lXTtcbiAgICAgICAgdmFyIHN6XzMyXzY0ID0gWzAsMF07XG4gICAgICAgIGlmKCFvcHMuc2VyaWFsaXplKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEN1c3RvbSlcIik7XG4gICAgICAgIGlmKG9wcy5maXhlZF9sZW5ndGggPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTggLypjc3QuQ09ERV9DVVNUT01fTEVOKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIGhlYWRlcl9wb3MgPSB3cml0ZXIucG9zICgpO1xuICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MsIDMyLCBzel8zMl82NFswXSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA0LCAzMiwgMCk7IC8vIHplcm9cbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDgsIDMyLCBzel8zMl82NFsxXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE5IC8qY3N0LkNPREVfQ1VTVE9NX0ZJWEVEKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSB3cml0ZXIucG9zKCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCAhPSB3cml0ZXIucG9zKCkgLSBvbGRfcG9zKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogaW5jb3JyZWN0IGZpeGVkIHNpemVzIHNwZWNpZmllZCBieSBcIiArIG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDIgKyAoKHN6XzMyXzY0WzBdICsgMykgPj4gMik7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDIgKyAoKHN6XzMyXzY0WzFdICsgNykgPj4gMyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgICAgaWYgKHZbMF0gPT0gMjUxKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEFic3RyYWN0KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxICYmIG1lbW8odikpIHJldHVybjtcbiAgICAgICAgaWYgKHZbMF0gPCAxNiAmJiB2Lmxlbmd0aCAtIDEgPCA4KVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLyArIHZbMF0gKyAoKHYubGVuZ3RoIC0gMSk8PDQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDA4IC8qY3N0LkNPREVfQkxPQ0szMiovLCAoKHYubGVuZ3RoLTEpIDw8IDEwKSB8IHZbMF0pO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSB2Lmxlbmd0aDtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gdi5sZW5ndGg7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEpIHN0YWNrLnB1c2ggKHYsIDEpO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICAgIGlmKCEoY2FtbF9pc19tbF9ieXRlcyhjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpKSkpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBbQnl0ZXMudF0gY2Fubm90IHNhZmVseSBiZSBtYXJzaGFsZWQgd2l0aCBbLS1lbmFibGUgdXNlLWpzLXN0cmluZ11cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodiAhPSAodnwwKSl7XG4gICAgICAgICAgdmFyIHR5cGVfb2ZfdiA9IHR5cGVvZiB2O1xuICAgICAgICAgIGlmKHR5cGVfb2ZfdiAhPSBcIm51bWJlclwiKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKFwiK3R5cGVfb2ZfditcIilcIik7XG4gICAgICAgICAgLy8gSWYgYSBmbG9hdCBoYXBwZW5zIHRvIGJlIGFuIGludGVnZXIgaXQgaXMgc2VyaWFsaXplZCBhcyBhbiBpbnRlZ2VyXG4gICAgICAgICAgLy8gKEpzX29mX29jYW1sIGNhbm5vdCB0ZWxsIHdoZXRoZXIgdGhlIHR5cGUgb2YgYW4gaW50ZWdlciBudW1iZXIgaXNcbiAgICAgICAgICAvLyBmbG9hdCBvciBpbnRlZ2VyLikgVGhpcyBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgY3Jhc2hlcyB3aGVuXG4gICAgICAgICAgLy8gdW5tYXJzaGFsbGluZyB1c2luZyB0aGUgc3RhbmRhcmQgcnVudGltZS5cbiAgICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICAgIHZhciB0ID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQodikpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgwQyAvKmNzdC5DT0RFX0RPVUJMRV9MSVRUTEUqLyk7XG4gICAgICAgICAgZm9yKHZhciBpID0gMDsgaTw4OyBpKyspe3dyaXRlci53cml0ZSg4LHRbNyAtIGldKX1cbiAgICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAzXG4gICAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMlxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHYgPj0gMCAmJiB2IDwgMHg0MCkge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMFg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8gKyB2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodiA+PSAtKDEgPDwgNykgJiYgdiA8ICgxIDw8IDcpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoOCwgMHgwMCAvKmNzdC5DT0RFX0lOVDgqLywgdik7XG4gICAgICAgICAgZWxzZSBpZiAodiA+PSAtKDEgPDwgMTUpICYmIHYgPCAoMSA8PCAxNSkpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgxNiwgMHgwMSAvKmNzdC5DT0RFX0lOVDE2Ki8sIHYpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDAyIC8qY3N0LkNPREVfSU5UMzIqLywgdik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZXh0ZXJuX3JlYyAodik7XG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBpID0gc3RhY2sucG9wICgpO1xuICAgICAgdmFyIHYgPSBzdGFjay5wb3AgKCk7XG4gICAgICBpZiAoaSArIDEgPCB2Lmxlbmd0aCkgc3RhY2sucHVzaCAodiwgaSArIDEpO1xuICAgICAgZXh0ZXJuX3JlYyAodltpXSk7XG4gICAgfVxuICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSB3cml0ZXIub2JqX2NvdW50ZXIgPSBpbnRlcm5fb2JqX3RhYmxlLm9ianMubGVuZ3RoO1xuICAgIHdyaXRlci5maW5hbGl6ZSgpO1xuICAgIHJldHVybiB3cml0ZXIuY2h1bms7XG4gIH1cbn0gKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9mYWlsd2l0aCwgY2FtbF9ibGl0X2J5dGVzXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIgKHMsIG9mcywgbGVuLCB2LCBmbGFncykge1xuICB2YXIgdCA9IGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpO1xuICBpZiAodC5sZW5ndGggPiBsZW4pIGNhbWxfZmFpbHdpdGggKFwiTWFyc2hhbC50b19idWZmZXI6IGJ1ZmZlciBvdmVyZmxvd1wiKTtcbiAgY2FtbF9ibGl0X2J5dGVzKHQsIDAsIHMsIG9mcywgdC5sZW5ndGgpO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0ID0gY2FtbF9oYXNoX21peF9pbnQ2NDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50ID0gY2FtbF9oYXNoX21peF9pbnQ7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0XG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdCA9IGNhbWxfaGFzaF9taXhfZmxvYXQ7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9zdHJpbmdcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX3N0cmluZyA9IGNhbWxfaGFzaF9taXhfc3RyaW5nO1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbmZ1bmN0aW9uIEJhc2VfaW50ZXJuYWxoYXNoX2dldF9oYXNoX3ZhbHVlKHNlZWQpIHtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKHNlZWQpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG4iLCIvL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5XG4vL0FsaWFzOiB1bml4X2dldHRpbWVvZmRheVxuZnVuY3Rpb24gY2FtbF91bml4X2dldHRpbWVvZmRheSAoKSB7XG4gIHJldHVybiAobmV3IERhdGUoKSkuZ2V0VGltZSgpIC8gMTAwMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X3RpbWUgKCkge1xuICByZXR1cm4gTWF0aC5mbG9vcihjYW1sX3VuaXhfZ2V0dGltZW9mZGF5ICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dtdGltZVxuLy9BbGlhczogdW5peF9nbXRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9nbXRpbWUgKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSAodCAqIDEwMDApO1xuICB2YXIgZF9udW0gPSBkLmdldFRpbWUoKTtcbiAgdmFyIGphbnVhcnlmaXJzdCA9IChuZXcgRGF0ZShEYXRlLlVUQyhkLmdldFVUQ0Z1bGxZZWFyKCksIDAsIDEpKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRVVENTZWNvbmRzKCksIGQuZ2V0VVRDTWludXRlcygpLCBkLmdldFVUQ0hvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RhdGUoKSwgZC5nZXRVVENNb250aCgpLCBkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgZmFsc2UgfCAwIC8qIGZvciBVVEMgZGF5bGlnaHQgc2F2aW5ncyB0aW1lIGlzIGZhbHNlICovKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbG9jYWx0aW1lXG4vL0FsaWFzOiB1bml4X2xvY2FsdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X2xvY2FsdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgdmFyIGphbiA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gIHZhciBqdWwgPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDYsIDEpO1xuICB2YXIgc3RkVGltZXpvbmVPZmZzZXQgPSBNYXRoLm1heChqYW4uZ2V0VGltZXpvbmVPZmZzZXQoKSwganVsLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRTZWNvbmRzKCksIGQuZ2V0TWludXRlcygpLCBkLmdldEhvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldERhdGUoKSwgZC5nZXRNb250aCgpLCBkLmdldEZ1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXREYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgKGQuZ2V0VGltZXpvbmVPZmZzZXQoKSA8IHN0ZFRpbWV6b25lT2Zmc2V0KSB8IDAgLyogZGF5bGlnaHQgc2F2aW5ncyB0aW1lICBmaWVsZC4gKi8pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbWt0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWt0aW1lKHRtKXtcbiAgdmFyIGQgPSAobmV3IERhdGUodG1bNl0rMTkwMCx0bVs1XSx0bVs0XSx0bVszXSx0bVsyXSx0bVsxXSkpLmdldFRpbWUoKTtcbiAgdmFyIHQgPSBNYXRoLmZsb29yKGQgLyAxMDAwKTtcbiAgdmFyIHRtMiA9IGNhbWxfdW5peF9sb2NhbHRpbWUodCk7XG4gIHJldHVybiBCTE9DSygwLHQsdG0yKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGFydHVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fc3RhcnR1cFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXJ0dXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xlYW51cCBjb25zdFxuLy9BbGlhczogd2luX2NsZWFudXBcbmZ1bmN0aW9uIGNhbWxfdW5peF9jbGVhbnVwKCkge31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCBjb25zdFxuLy9BbGlhczogd2luX2hhbmRsZV9mZFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCh4KSB7cmV0dXJuIHg7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaXNhdHR5XG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9BbGlhczogdW5peF9pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciB0dHkgPSByZXF1aXJlKCd0dHknKTtcbiAgICByZXR1cm4gdHR5LmlzYXR0eShmaWxlRGVzY3JpcHRvcik/MTowO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2lzYXR0eVxuLy9BbGlhczogdW5peF9pc2F0dHlcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciB1bml4X2Vycm9yID0gW1xuICAvKiA9PT1Vbml4LmVycm9yPT09XG4gICAqXG4gICAqIFRoaXMgYXJyYXkgaXMgaW4gb3JkZXIgb2YgdGhlIHZhcmlhbnQgaW4gT0NhbWxcbiAgICovXG4gIFwiRTJCSUdcIiwgXCJFQUNDRVNcIiwgXCJFQUdBSU5cIiwgXCJFQkFERlwiLCBcIkVCVVNZXCIsIFwiRUNISUxEXCIsIFwiRURFQURMS1wiLCBcIkVET01cIixcbiAgXCJFRVhJU1RcIiwgXCJFRkFVTFRcIiwgXCJFRkJJR1wiLCBcIkVJTlRSXCIsIFwiRUlOVkFMXCIsIFwiRUlPXCIsIFwiRUlTRElSXCIsIFwiRU1GSUxFXCIsXG4gIFwiRU1MSU5LXCIsIFwiRU5BTUVUT09MT05HXCIsIFwiRU5GSUxFXCIsIFwiRU5PREVWXCIsIFwiRU5PRU5UXCIsIFwiRU5PRVhFQ1wiLCBcIkVOT0xDS1wiLFxuICBcIkVOT01FTVwiLCBcIkVOT1NQQ1wiLCBcIkVOT1NZU1wiLCBcIkVOT1RESVJcIiwgXCJFTk9URU1QVFlcIiwgXCJFTk9UVFlcIiwgXCJFTlhJT1wiLFxuICBcIkVQRVJNXCIsIFwiRVBJUEVcIiwgXCJFUkFOR0VcIiwgXCJFUk9GU1wiLCBcIkVTUElQRVwiLCBcIkVTUkNIXCIsIFwiRVhERVZcIiwgXCJFV09VTERCTE9DS1wiLFxuICBcIkVJTlBST0dSRVNTXCIsIFwiRUFMUkVBRFlcIiwgXCJFTk9UU09DS1wiLCBcIkVERVNUQUREUlJFUVwiLCBcIkVNU0dTSVpFXCIsXG4gIFwiRVBST1RPVFlQRVwiLCBcIkVOT1BST1RPT1BUXCIsIFwiRVBST1RPTk9TVVBQT1JUXCIsIFwiRVNPQ0tUTk9TVVBQT1JUXCIsXG4gIFwiRU9QTk9UU1VQUFwiLCBcIkVQRk5PU1VQUE9SVFwiLCBcIkVBRk5PU1VQUE9SVFwiLCBcIkVBRERSSU5VU0VcIiwgXCJFQUREUk5PVEFWQUlMXCIsXG4gIFwiRU5FVERPV05cIiwgXCJFTkVUVU5SRUFDSFwiLCBcIkVORVRSRVNFVFwiLCBcIkVDT05OQUJPUlRFRFwiLCBcIkVDT05OUkVTRVRcIiwgXCJFTk9CVUZTXCIsXG4gIFwiRUlTQ09OTlwiLCBcIkVOT1RDT05OXCIsIFwiRVNIVVRET1dOXCIsIFwiRVRPT01BTllSRUZTXCIsIFwiRVRJTUVET1VUXCIsIFwiRUNPTk5SRUZVU0VEXCIsXG4gIFwiRUhPU1RET1dOXCIsIFwiRUhPU1RVTlJFQUNIXCIsIFwiRUxPT1BcIiwgXCJFT1ZFUkZMT1dcIlxuXTtcbmZ1bmN0aW9uIG1ha2VfdW5peF9lcnJfYXJncyhjb2RlLCBzeXNjYWxsLCBwYXRoLCBlcnJubykge1xuICB2YXIgdmFyaWFudCA9IHVuaXhfZXJyb3IuaW5kZXhPZihjb2RlKTtcbiAgaWYgKHZhcmlhbnQgPCAwKSB7XG4gICAgLy8gRGVmYXVsdCBpZiB1bmRlZmluZWRcbiAgICBpZiAoZXJybm8gPT0gbnVsbCkge1xuICAgICAgZXJybm8gPSAtOTk5OVxuICAgIH1cbiAgICAvLyBJZiBub25lIG9mIHRoZSBhYm92ZSB2YXJpYW50cywgZmFsbGJhY2sgdG8gRVVOS05PV05FUlIoaW50KVxuICAgIHZhcmlhbnQgPSBCTE9DSygwLCBlcnJubyk7XG4gIH1cbiAgdmFyIGFyZ3MgPSBbXG4gICAgdmFyaWFudCxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzeXNjYWxsIHx8IFwiXCIpLFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGggfHwgXCJcIilcbiAgXTtcbiAgcmV0dXJuIGFyZ3M7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9zdGF0XG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uuc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5zdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9zdGF0LCBjYW1sX2ludDY0X29mX2ludDMyXG4vL0FsaWFzOiB1bml4X3N0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGF0XzY0KG5hbWUpIHtcbiAgdmFyIHIgPSBjYW1sX3VuaXhfc3RhdChuYW1lKTtcbiAgcls5XSA9IGNhbWxfaW50NjRfb2ZfaW50MzIocls5XSk7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbHN0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X2xzdGF0XG5mdW5jdGlvbiBjYW1sX3VuaXhfbHN0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLmxzdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9sc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5sc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X2xzdGF0LCBjYW1sX2ludDY0X29mX2ludDMyXG4vL0FsaWFzOiB1bml4X2xzdGF0XzY0XG5mdW5jdGlvbiBjYW1sX3VuaXhfbHN0YXRfNjQobmFtZSkge1xuICB2YXIgciA9IGNhbWxfdW5peF9sc3RhdChuYW1lKTtcbiAgcls5XSA9IGNhbWxfaW50NjRfb2ZfaW50MzIocls5XSk7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X21rZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWtkaXIobmFtZSwgcGVybSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm1rZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9ta2Rpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QsIHBlcm0sIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcm1kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ybWRpcihuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uucm1kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JtZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N5bWxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3N5bWxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9zeW1saW5rKHRvX2Rpciwgc3JjLCBkc3QpIHtcbiAgdmFyIHNyY19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uoc3JjKTtcbiAgdmFyIGRzdF9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZHN0KTtcbiAgaWYoc3JjX3Jvb3QuZGV2aWNlICE9IGRzdF9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IGNhbm5vdCBzeW1saW5rIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1zXCIpO1xuICBpZiAoIXNyY19yb290LmRldmljZS5zeW1saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zeW1saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHNyY19yb290LmRldmljZS5zeW1saW5rKHRvX2Rpciwgc3JjX3Jvb3QucmVzdCwgZHN0X3Jvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRsaW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9yZWFkbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRsaW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5yZWFkbGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcmVhZGxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UucmVhZGxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdW5saW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF91bmxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF91bmxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnVubGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfdW5saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL0FsaWFzOiB1bml4X2dldHVpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldHVpZCh1bml0KSB7XG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKXtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCgpO1xuICB9XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXRwd3VpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0cHd1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXRwd3VpZCh1bml0KSB7XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9oYXNfc3ltbGlua1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vQWxpYXM6IHVuaXhfaGFzX3N5bWxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9oYXNfc3ltbGluayh1bml0KSB7XG4gIHJldHVybiBmc19ub2RlX3N1cHBvcnRlZCgpPzE6MFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfb3BlbmRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfb3BlbmRpclxuZnVuY3Rpb24gY2FtbF91bml4X29wZW5kaXIocGF0aCkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHBhdGgpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm9wZW5kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X29wZW5kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICB2YXIgZGlyX2hhbmRsZSA9IHJvb3QuZGV2aWNlLm9wZW5kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xuICByZXR1cm4geyBwb2ludGVyIDogZGlyX2hhbmRsZSwgcGF0aDogcGF0aCB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZVxuLy9BbGlhczogdW5peF9yZWFkZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKSB7XG4gIHZhciBlbnRyeTtcbiAgdHJ5IHtcbiAgICAgIGVudHJ5ID0gZGlyX2hhbmRsZS5wb2ludGVyLnJlYWRTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcInJlYWRkaXJcIiwgZGlyX2hhbmRsZS5wYXRoKSk7XG4gIH1cbiAgaWYgKGVudHJ5ID09PSBudWxsKSB7XG4gICAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZW50cnkubmFtZSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL0FsaWFzOiB1bml4X2Nsb3NlZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSkge1xuICB0cnkge1xuICAgICAgZGlyX2hhbmRsZS5wb2ludGVyLmNsb3NlU3luYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCBkaXJfaGFuZGxlLnBhdGgpKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmV3aW5kZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXIsIGNhbWxfdW5peF9vcGVuZGlyXG4vL0FsaWFzOiB1bml4X3Jld2luZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3Jld2luZGRpcihkaXJfaGFuZGxlKSB7XG4gIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbiAgdmFyIG5ld19kaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIoZGlyX2hhbmRsZS5wYXRoKTtcbiAgZGlyX2hhbmRsZS5wb2ludGVyID0gbmV3X2Rpcl9oYW5kbGUucG9pbnRlcjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kZmlyc3Rcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91bml4X29wZW5kaXIsIGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZGZpcnN0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGZpcnN0KHBhdGgpIHtcbiAgLy8gVGhlIFdpbmRvd3MgY29kZSBhZGRzIHRoaXMgZ2xvYiB0byB0aGUgcGF0aCwgc28gd2UgbmVlZCB0byByZW1vdmUgaXRcbiAgdmFyIHBhdGhfanMgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwYXRoKTtcbiAgcGF0aF9qcyA9IHBhdGhfanMucmVwbGFjZSgvKF58W1xcXFxcXC9dKVxcKlxcLlxcKiQvLCBcIlwiKTtcbiAgcGF0aCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGhfanMpO1xuICAvLyAqLiogaXMgbm93IHN0cmlwcGVkXG4gIHZhciBkaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIocGF0aCk7XG4gIHZhciBmaXJzdF9lbnRyeSA9IGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpO1xuICAvLyBUaGUgV2luZG93cyBiaW5kaW5ncyB0eXBlIGRpcl9oYW5kbGUgYXMgYW4gYGludGAgYnV0IGl0J3Mgbm90IGluIEpTXG4gIHJldHVybiBbMCwgZmlyc3RfZW50cnksIGRpcl9oYW5kbGVdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZG5leHRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZG5leHRcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kbmV4dChkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRjbG9zZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL0FsaWFzOiB3aW5fZmluZGNsb3NlXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGNsb3NlKGRpcl9oYW5kbGUpIHtcbiAgcmV0dXJuIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyBjb25zdFxuLy9BbGlhczogdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyAoKSB7cmV0dXJuIDA7fVxuXG5cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRHVtbXkgZmlsZXN5c3RlbVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpe1xuICByZXR1cm4gKG5hbWUuc2xpY2UoLTEpICE9PSBcIi9cIikgPyAobmFtZSArIFwiL1wiKSA6IG5hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5pZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZClcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKCkucmVwbGFjZSgvXFxcXC9nLCcvJyk7XG5lbHNlXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gIFwiL3N0YXRpY1wiO1xuY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2goY2FtbF9jdXJyZW50X2Rpcik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3Jvb3Rcbi8vUmVxdWlyZXM6IHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfZ2V0X3Jvb3QocGF0aCl7XG4gIHZhciB4ID0gcGF0aF9pc19hYnNvbHV0ZShwYXRoKTtcbiAgaWYgKCF4KSByZXR1cm47XG4gIHJldHVybiB4WzBdICsgXCIvXCJ9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcm9vdFxuLy9SZXF1aXJlczogY2FtbF9nZXRfcm9vdCwgY2FtbF9jdXJyZW50X2RpciwgY2FtbF9mYWlsd2l0aFxudmFyIGNhbWxfcm9vdCA9IGNhbWxfZ2V0X3Jvb3QoY2FtbF9jdXJyZW50X2RpcikgfHwgY2FtbF9mYWlsd2l0aChcInVuYWJsZSB0byBjb21wdXRlIGNhbWxfcm9vdFwiKTtcblxuXG4vL1Byb3ZpZGVzOiBNbEZpbGVcbmZ1bmN0aW9uIE1sRmlsZSgpeyAgfVxuXG4vL1Byb3ZpZGVzOiBwYXRoX2lzX2Fic29sdXRlXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCkge1xuICBmdW5jdGlvbiBwb3NpeChwYXRoKSB7XG4gICAgaWYgKHBhdGguY2hhckF0KDApID09PSAnLycpIHJldHVybiBbXCJcIiwgcGF0aC5zdWJzdHJpbmcoMSldO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdpbjMyKHBhdGgpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9iM2ZjYzI0NWZiMjU1Mzk5MDllZjFkNWVhYTAxZGJmOTJlMTY4NjMzL2xpYi9wYXRoLmpzI0w1NlxuICAgIHZhciBzcGxpdERldmljZVJlID0gL14oW2EtekEtWl06fFtcXFxcL117Mn1bXlxcXFwvXStbXFxcXC9dK1teXFxcXC9dKyk/KFtcXFxcL10pPyhbXFxzXFxTXSo/KSQvO1xuICAgIHZhciByZXN1bHQgPSBzcGxpdERldmljZVJlLmV4ZWMocGF0aCk7XG4gICAgdmFyIGRldmljZSA9IHJlc3VsdFsxXSB8fCAnJztcbiAgICB2YXIgaXNVbmMgPSBCb29sZWFuKGRldmljZSAmJiBkZXZpY2UuY2hhckF0KDEpICE9PSAnOicpO1xuXG4gICAgLy8gVU5DIHBhdGhzIGFyZSBhbHdheXMgYWJzb2x1dGVcbiAgICBpZiAoQm9vbGVhbihyZXN1bHRbMl0gfHwgaXNVbmMpKSB7XG4gICAgICB2YXIgcm9vdCA9IChyZXN1bHRbMV0gfHwgJycpO1xuICAgICAgdmFyIHNlcCA9IChyZXN1bHRbMl0gfHwgJycpO1xuICAgICAgcmV0dXJuIFtyb290LCBwYXRoLnN1YnN0cmluZyhyb290Lmxlbmd0aCArIHNlcC5sZW5ndGgpXVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyB3aW4zMiA6IHBvc2l4O1xuICB9XG4gIGVsc2UgcmV0dXJuIHBvc2l4XG59XG52YXIgcGF0aF9pc19hYnNvbHV0ZSA9IG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfcGF0aFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfbWFrZV9wYXRoIChuYW1lKSB7XG4gIG5hbWU9Y2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKCAhcGF0aF9pc19hYnNvbHV0ZShuYW1lKSApXG4gICAgbmFtZSA9IGNhbWxfY3VycmVudF9kaXIgKyBuYW1lO1xuICB2YXIgY29tcDAgPSBwYXRoX2lzX2Fic29sdXRlKG5hbWUpO1xuICB2YXIgY29tcCA9IGNvbXAwWzFdLnNwbGl0KFwiL1wiKTtcbiAgdmFyIG5jb21wID0gW11cbiAgZm9yKHZhciBpID0gMDsgaTxjb21wLmxlbmd0aDsgaSsrKXtcbiAgICBzd2l0Y2goY29tcFtpXSl7XG4gICAgY2FzZSBcIi4uXCI6IGlmKG5jb21wLmxlbmd0aD4xKSBuY29tcC5wb3AoKTsgYnJlYWs7XG4gICAgY2FzZSBcIi5cIjogYnJlYWs7XG4gICAgY2FzZSBcIlwiOiBicmVhaztcbiAgICBkZWZhdWx0OiBuY29tcC5wdXNoKGNvbXBbaV0pO2JyZWFrXG4gICAgfVxuICB9XG4gIG5jb21wLnVuc2hpZnQoY29tcDBbMF0pO1xuICBuY29tcC5vcmlnID0gbmFtZTtcbiAgcmV0dXJuIG5jb21wO1xufVxuXG4vL1Byb3ZpZGVzOmpzb29fbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgTWxOb2RlRGV2aWNlLCBjYW1sX3Jvb3QsIGZzX25vZGVfc3VwcG9ydGVkXG52YXIganNvb19tb3VudF9wb2ludCA9IFtdXG5pZiAoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn0gZWxzZSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoY2FtbF9yb290KX0pO1xufVxuanNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOlwiL3N0YXRpYy9cIiwgZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoXCIvc3RhdGljL1wiKX0pO1xuXG4vL1Byb3ZpZGVzOmNhbWxfbGlzdF9tb3VudF9wb2ludFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9saXN0X21vdW50X3BvaW50KCl7XG4gIHZhciBwcmV2ID0gMFxuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKyl7XG4gICAgdmFyIG9sZCA9IHByZXY7XG4gICAgcHJldiA9IFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCksIG9sZF1cbiAgfVxuICByZXR1cm4gcHJldjtcbn1cblxuLy9Qcm92aWRlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9nZXRfcm9vdCwgTWxOb2RlRGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gcGF0aC5qb2luKFwiL1wiKTtcbiAgdmFyIG5hbWVfc2xhc2ggPSBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpO1xuICB2YXIgcmVzO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtID0ganNvb19tb3VudF9wb2ludFtpXTtcbiAgICBpZihuYW1lX3NsYXNoLnNlYXJjaChtLnBhdGgpID09IDBcbiAgICAgICAmJiAoIXJlcyB8fCByZXMucGF0aC5sZW5ndGggPCBtLnBhdGgubGVuZ3RoKSlcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gIH1cbiAgaWYoICFyZXMgJiYgZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciByb290ID0gY2FtbF9nZXRfcm9vdChuYW1lKTtcbiAgICBpZiAocm9vdCAmJiByb290Lm1hdGNoKC9eW2EtekEtWl06XFwvJC8pKXtcbiAgICAgIHZhciBtID0ge3BhdGg6cm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShyb290KX07XG4gICAgICBqc29vX21vdW50X3BvaW50LnB1c2gobSk7XG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICAgIH1cbiAgfVxuICBpZiggcmVzICkgcmV0dXJuIHJlcztcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJubyBkZXZpY2UgZm91bmQgZm9yIFwiICsgbmFtZV9zbGFzaCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW91bnRfYXV0b2xvYWRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfbW91bnRfYXV0b2xvYWQobmFtZSxmKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6bmFtZSxkZXZpY2U6bmV3IE1sRmFrZURldmljZShuYW1lLGYpfSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5tb3VudFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9tYWtlX3BhdGgsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdW5tb3VudChuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICB2YXIgaWR4ID0gLTE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKVxuICAgIGlmKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCA9PSBuYW1lKSBpZHggPSBpO1xuICBpZihpZHggPiAtMSkganNvb19tb3VudF9wb2ludC5zcGxpY2UoaWR4LDEpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRjd2Rcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGN3ZCgpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9jdXJyZW50X2Rpcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NoZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX2NoZGlyKGRpcikge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRpcik7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgaWYocm9vdC5yZXN0KSBjYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChyb290LnBhdGggKyByb290LnJlc3QpO1xuICAgIGVsc2UgY2FtbF9jdXJyZW50X2RpciA9IHJvb3QucGF0aDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGRpcikpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfYV9kaXIobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmlsZV9leGlzdHNcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19maWxlX2V4aXN0cyAobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9hX2RpciwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLnJlYWRkaXIocm9vdC5yZXN0KTtcbiAgdmFyIGwgPSBuZXcgQXJyYXkoYS5sZW5ndGggKyAxKTtcbiAgbFswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8YS5sZW5ndGg7aSsrKVxuICAgIGxbaSsxXSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYVtpXSk7XG4gIHJldHVybiBsO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW1vdmVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfcmVtb3ZlKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgb2sgPSByb290LmRldmljZS51bmxpbmsocm9vdC5yZXN0KTtcbiAgaWYob2sgPT0gMCkgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UuaXNfZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiBhPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVuYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVuYW1lKG8sbil7XG4gIHZhciBvX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShvKTtcbiAgdmFyIG5fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG4pO1xuICBpZihvX3Jvb3QuZGV2aWNlICE9IG5fcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogY2Fubm90IG1vdmUgZmlsZSBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtXCIpO1xuICBpZighb19yb290LmRldmljZS5yZW5hbWUpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogbm8gaW1wbGVtZW50ZWRcIik7XG4gIG9fcm9vdC5kZXZpY2UucmVuYW1lKG9fcm9vdC5yZXN0LCBuX3Jvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfc3lzX21rZGlyKG5hbWUsIHBlcm0pe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QscGVybSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vdF9hX2RpclxuZnVuY3Rpb24gY2FtbF9zeXNfcm1kaXIobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlKHZmZCwga2luZCwgbGF5b3V0LCBzaGFyZWQsIGRpbXMsIHBvcykge1xuICAvLyB2YXIgZGF0YSA9IGNhbWxfc3lzX2Zkc1t2ZmRdO1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9iYV9tYXBfZmlsZSBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUoYXJndixhcmduKXtcbiAgcmV0dXJuIGNhbWxfYmFfbWFwX2ZpbGUoYXJndlswXSxhcmd2WzFdLGFyZ3ZbMl0sYXJndlszXSxhcmd2WzRdLGFyZ3ZbNV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlX2V4dGVyblxuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZV9leHRlcm4obmFtZSxjb250ZW50KXtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKVxuICAgIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpO1xuICBlbHNlIHtcbiAgICBpZighZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCkgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICAgIGdsb2JhbFRoaXMuY2FtbF9mc190bXAucHVzaCh7bmFtZTpuYW1lLGNvbnRlbnQ6Y29udGVudH0pO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZzX2luaXRcbi8vUmVxdWlyZXM6IGpzb29fY3JlYXRlX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfZnNfaW5pdCAoKXtcbiAgdmFyIHRtcD1nbG9iYWxUaGlzLmNhbWxfZnNfdG1wXG4gIGlmKHRtcCl7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7IGkrKyl7XG4gICAgICBqc29vX2NyZWF0ZV9maWxlKHRtcFtpXS5uYW1lLHRtcFtpXS5jb250ZW50KTtcbiAgICB9XG4gIH1cbiAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlID0ganNvb19jcmVhdGVfZmlsZTtcbiAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKCEgcm9vdC5kZXZpY2UucmVnaXN0ZXIpIGNhbWxfZmFpbHdpdGgoXCJjYW5ub3QgcmVnaXN0ZXIgZmlsZVwiKTtcbiAgcm9vdC5kZXZpY2UucmVnaXN0ZXIocm9vdC5yZXN0LGNvbnRlbnQpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9maWxlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgbmFtZSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk7XG4gIHZhciBjb250ZW50ID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjb250ZW50KTtcbiAgcmV0dXJuIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSwgY29udGVudCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWFkX2ZpbGVfY29udGVudFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWFkX2ZpbGVfY29udGVudCAobmFtZSkge1xuICB2YXIgbmFtZSA9ICh0eXBlb2YgbmFtZSA9PSBcInN0cmluZ1wiKT9jYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpOm5hbWU7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCx7cmRvbmx5OjF9KTtcbiAgICB2YXIgbGVuICA9IGZpbGUubGVuZ3RoKCk7XG4gICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgZmlsZS5yZWFkKDAsYnVmLDAsbGVuKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYnVmKVxuICB9XG4gIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogTWxGYWtlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBNbEZha2VGZCwgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXksIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZXNcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuZnVuY3Rpb24gTWxGYWtlRGV2aWNlIChyb290LCBmKSB7XG4gIHRoaXMuY29udGVudD17fTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbiAgdGhpcy5sb29rdXBGdW4gPSBmO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY3JlYXRlX2Rpcl9pZl9uZWVkZWQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBjb21wID0gbmFtZS5zcGxpdChcIi9cIik7XG4gIHZhciByZXMgPSBcIlwiO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgY29tcC5sZW5ndGggLSAxOyBpKyspe1xuICAgIHJlcyArPSBjb21wW2ldICsgXCIvXCI7XG4gICAgaWYodGhpcy5jb250ZW50W3Jlc10pIGNvbnRpbnVlO1xuICAgIHRoaXMuY29udGVudFtyZXNdID0gU3ltYm9sKFwiZGlyZWN0b3J5XCIpO1xuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnNsYXNoID0gZnVuY3Rpb24obmFtZSl7XG4gIHJldHVybiAvXFwvJC8udGVzdChuYW1lKT9uYW1lOihuYW1lICsgXCIvXCIpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5sb29rdXAgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKCF0aGlzLmNvbnRlbnRbbmFtZV0gJiYgdGhpcy5sb29rdXBGdW4pIHtcbiAgICB2YXIgcmVzID0gdGhpcy5sb29rdXBGdW4oY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnJvb3QpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpKTtcbiAgICBpZihyZXMgIT09IDApIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV09bmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcocmVzWzFdKSk7XG4gICAgfVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgLy8gVGhlIHJvb3Qgb2YgdGhlIGRldmljZSBleGlzdHNcbiAgaWYobmFtZSA9PSBcIlwiKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBkaXJlY3RvcnkgZXhpc3RzXG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVfc2xhc2hdKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBmaWxlIGV4aXN0c1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzRmlsZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkgJiYgIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gMFxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSxtb2RlLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUVYSVNUXCIsIFwibWtkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogRmlsZSBleGlzdHNcIik7XG4gICAgfVxuICB9XG4gIHZhciBwYXJlbnQgPSAvXiguKilcXC9bXi9dKy8uZXhlYyhuYW1lKTtcbiAgcGFyZW50ID0gKHBhcmVudCAmJiBwYXJlbnRbMV0pIHx8ICcnO1xuICBpZighdGhpcy5leGlzdHMocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHRoaXMuc2xhc2gobmFtZSkpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICBpZihuLm1hdGNoKHIpKSB7XG4gICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URU1QVFlcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCI6IERpcmVjdG9yeSBub3QgZW1wdHlcIik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF07XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgfVxuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICB2YXIgc2VlbiA9IHt9XG4gIHZhciBhID0gW107XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICB2YXIgbSA9IG4ubWF0Y2gocik7XG4gICAgaWYobSAmJiAhc2VlblttWzFdXSkge3NlZW5bbVsxXV0gPSB0cnVlOyBhLnB1c2gobVsxXSl9XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW5kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcblxuICB2YXIgYSA9IHRoaXMucmVhZGRpcihuYW1lKTtcbiAgdmFyIGMgPSBmYWxzZTtcbiAgdmFyIGkgPSAwO1xuICByZXR1cm4geyByZWFkU3luYyA6IChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGMpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogY2xvc2VkaXIgZmFpbGVkXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZihpID09IGEubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgZW50cnkgPSBhW2ldO1xuICAgIGkrKztcbiAgICByZXR1cm4geyBuYW1lOiBlbnRyeSB9XG4gIH0pXG4gICAgLCBjbG9zZVN5bmM6IChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoYykge1xuICAgICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogY2xvc2VkaXIgZmFpbGVkXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjID0gdHJ1ZTtcbiAgICAgIGEgPSBbXTtcbiAgICB9KVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYobmFtZSA9PSBcIlwiKSAgcmV0dXJuIHRydWU7XG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG9rID0gdGhpcy5jb250ZW50W25hbWVdP3RydWU6ZmFsc2U7XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIHJldHVybiBvaztcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmKSB7XG4gIHZhciBmaWxlO1xuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgaWYgKHRoaXMuaXNfZGlyKG5hbWUpKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBpcyBhIGRpcmVjdG9yeVwiKTtcbiAgICBpZiAoZi5jcmVhdGUgJiYgZi5leGNsKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gICAgaWYoZi50cnVuY2F0ZSkgZmlsZS50cnVuY2F0ZSgpO1xuICB9IGVsc2UgaWYgKGYuY3JlYXRlKSB7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSAodGhpcy5ubShuYW1lKSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEZha2VGZCh0aGlzLm5tKG5hbWUpLCBmaWxlLCBmKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5yZWdpc3Rlcj0gZnVuY3Rpb24gKG5hbWUsY29udGVudCl7XG4gIHZhciBmaWxlO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV0pIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gIGlmKGNhbWxfaXNfbWxfYnl0ZXMoY29udGVudCkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNvbnRlbnQpO1xuICBpZihjYW1sX2lzX21sX3N0cmluZyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcoY29udGVudCkpO1xuICBlbHNlIGlmKGNvbnRlbnQgaW5zdGFuY2VvZiBBcnJheSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9hcnJheShjb250ZW50KSk7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudC50b1N0cmluZykge1xuICAgIHZhciBieXRlcyA9IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNvbnRlbnQudG9TdHJpbmcoKSkpO1xuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShieXRlcyk7XG4gIH1cbiAgaWYoZmlsZSl7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBmaWxlO1xuICB9XG4gIGVsc2UgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogcmVnaXN0ZXJpbmcgZmlsZSB3aXRoIGludmFsaWQgY29udGVudCB0eXBlXCIpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZpbGVcbi8vUmVxdWlyZXM6IE1sRmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIE1sRmFrZUZpbGUoY29udGVudCl7XG4gIHRoaXMuZGF0YSA9IGNvbnRlbnQ7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbEZha2VGaWxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZUZpbGVcbk1sRmFrZUZpbGUucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24obGVuKXtcbiAgdmFyIG9sZCA9IHRoaXMuZGF0YTtcbiAgdGhpcy5kYXRhID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVufDApO1xuICBjYW1sX2JsaXRfYnl0ZXMob2xkLCAwLCB0aGlzLmRhdGEsIDAsIGxlbik7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aCh0aGlzLmRhdGEpO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihvZmZzZXQsYnVmLHBvcyxsZW4pe1xuICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gIGlmKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgdmFyIG5ld19zdHIgPSBjYW1sX2NyZWF0ZV9ieXRlcyhvZmZzZXQgKyBsZW4pO1xuICAgIHZhciBvbGRfZGF0YSA9IHRoaXMuZGF0YTtcbiAgICB0aGlzLmRhdGEgPSBuZXdfc3RyO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhvbGRfZGF0YSwgMCwgdGhpcy5kYXRhLCAwLCBjbGVuKTtcbiAgfVxuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBwb3MsIHRoaXMuZGF0YSwgb2Zmc2V0LCBsZW4pO1xuICByZXR1cm4gMFxufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICBsZW4gPSBjbGVuIC0gb2Zmc2V0O1xuICB9XG4gIGlmKGxlbikge1xuICAgIHZhciBkYXRhID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVufDApO1xuICAgIGNhbWxfYmxpdF9ieXRlcyh0aGlzLmRhdGEsIG9mZnNldCwgZGF0YSwgMCwgbGVuKTtcbiAgICBidWYuc2V0KGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoZGF0YSksIHBvcyk7XG4gIH1cbiAgcmV0dXJuIGxlblxufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sRmFrZUZkX291dChmZCxmbGFncykge1xuICBNbEZha2VGaWxlLmNhbGwodGhpcywgY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICB0aGlzLmxvZyA9IChmdW5jdGlvbiAocykgeyByZXR1cm4gMCB9KTtcbiAgaWYoZmQgPT0gMSAmJiB0eXBlb2YgY29uc29sZS5sb2cgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5sb2c7XG4gIGVsc2UgaWYoZmQgPT0gMiAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmVycm9yO1xuICBlbHNlIGlmKHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZ1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMCB9XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKG9mZnNldCxidWYscG9zLGxlbikge1xuICBpZih0aGlzLmxvZykge1xuICAgIGlmKGxlbiA+IDBcbiAgICAgICAmJiBwb3MgPj0gMFxuICAgICAgICYmIHBvcytsZW4gPD0gYnVmLmxlbmd0aFxuICAgICAgICYmIGJ1Zltwb3MrbGVuLTFdID09IDEwKVxuICAgICAgbGVuIC0tO1xuICAgIC8vIERvIG5vdCBvdXRwdXQgdGhlIGxhc3QgXFxuIGlmIHByZXNlbnRcbiAgICAvLyBhcyBjb25zb2xlIGxvZ2dpbmcgZGlzcGxheSBhIG5ld2xpbmUgYXQgdGhlIGVuZFxuICAgIHZhciBzcmMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgc3JjLCAwLCBsZW4pO1xuICAgIHRoaXMubG9nKHNyYy50b1V0ZjE2KCkpO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMuZmQgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGlzIHdyaXRlIG9ubHlcIik7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmxvZyA9IHVuZGVmaW5lZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGZFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sRmFrZUZkKG5hbWUsIGZpbGUsZmxhZ3MpIHtcbiAgdGhpcy5maWxlID0gZmlsZTtcbiAgdGhpcy5uYW1lID0gbmFtZTtcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuXG5NbEZha2VGZC5wcm90b3R5cGUuZXJyX2Nsb3NlZCA9IGZ1bmN0aW9uICgpIHtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5uYW1lICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgYWxyZWFkeSBjbG9zZWRcIik7XG59XG5NbEZha2VGZC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5sZW5ndGggKClcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS53cml0ZShvZmZzZXQsYnVmLHBvcyxsZW4pXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAob2Zmc2V0LCBidWYsIHBvcywgbGVuKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5yZWFkKG9mZnNldCwgYnVmLCBwb3MsIGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuZmlsZSA9IHVuZGVmaW5lZDtcbn1cbiIsIlxuLy9Qcm92aWRlczogTWxNdXRleFxuZnVuY3Rpb24gTWxNdXRleCgpIHtcbiAgdGhpcy5sb2NrZWQgPSBmYWxzZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X25ld1xuLy9SZXF1aXJlczogTWxNdXRleFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9uZXcodW5pdCkge1xuICByZXR1cm4gbmV3IE1sTXV0ZXgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF9sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X2xvY2sodCkge1xuICBpZih0LmxvY2tlZClcbiAgICBjYW1sX2ZhaWx3aXRoKFwiTXV0ZXgubG9jazogbXV0ZXggYWxyZWFkeSBsb2NrZWQuIENhbm5vdCB3YWl0LlwiKTtcbiAgZWxzZSB0LmxvY2tlZCA9IHRydWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3RyeV9sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3RyeV9sb2NrKHQpIHtcbiAgaWYoIXQubG9ja2VkKSB7XG4gICAgdC5sb2NrZWQgPSB0cnVlO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF91bmxvY2sodCkge1xuICB0LmxvY2tlZCA9IGZhbHNlO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vUHJvdmlkZXM6IGluaXRpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IHNlcmlhbGl6ZV9uYXQsIGRlc2VyaWFsaXplX25hdCwgY2FtbF9oYXNoX25hdFxuZnVuY3Rpb24gaW5pdGlhbGl6ZV9uYXQoKSB7XG4gIGNhbWxfY3VzdG9tX29wc1tcIl9uYXRcIl0gPVxuICAgIHsgZGVzZXJpYWxpemUgOiBkZXNlcmlhbGl6ZV9uYXQsXG4gICAgICBzZXJpYWxpemUgOiBzZXJpYWxpemVfbmF0LFxuICAgICAgaGFzaCA6IGNhbWxfaGFzaF9uYXRcbiAgICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sTmF0XG5mdW5jdGlvbiBNbE5hdCh4KXtcbiAgdGhpcy5kYXRhID0gbmV3IEludDMyQXJyYXkoeCk7XG4gIC8vIEZvciBudW0gPCAxLjVcbiAgLy8gbGVuZ3RoX25hdCBpc24ndCBleHRlcm5hbCwgc28gd2UgaGF2ZSB0byBtYWtlIHRoZSBPYmouc2l6ZVxuICAvLyB3b3JrIG91dCByaWdodC5cbiAgLy8gV2UgYWRkICsyIHRvIHRoZSBhcnJheSBsZW5ndGg6XG4gIC8vIC0gKzEgZm9yIHRoZSB0YWdcbiAgLy8gLSArMSBmb3IgdGhlIGN1c3RvbV9vcHMgc2xvdFxuICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGggKyAyXG59XG5cbk1sTmF0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX25hdFwiO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9uYXQoeCkge1xuICB2YXIgbGVuID0gbnVtX2RpZ2l0c19uYXQoeCwgMCwgeC5kYXRhLmxlbmd0aCk7XG4gIHZhciBoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB4LmRhdGFbaV0pO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBsZW5ndGhfbmF0XG5mdW5jdGlvbiBsZW5ndGhfbmF0KHgpIHtcbiAgcmV0dXJuIHguZGF0YS5sZW5ndGg7XG59XG5cbi8vUHJvdmlkZXM6IG5hdF9vZl9hcnJheVxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIG5hdF9vZl9hcnJheShsKXtcbiAgcmV0dXJuIG5ldyBNbE5hdChsKTtcbn1cblxuLy9Qcm92aWRlczogY3JlYXRlX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGNyZWF0ZV9uYXQoc2l6ZSkge1xuICB2YXIgYXJyID0gbmV3IE1sTmF0KHNpemUpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgYXJyLmRhdGFbaV0gPSAtMTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfdG9femVyb19uYXRcbmZ1bmN0aW9uIHNldF90b196ZXJvX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJsaXRfbmF0XG5mdW5jdGlvbiBibGl0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBuYXQyLmRhdGFbb2ZzMitpXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdFxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdChuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdFxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdChuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBudW1fZGlnaXRzX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYobmF0LmRhdGFbb2ZzK2ldICE9IDApIHJldHVybiBpKzE7XG4gIH1cbiAgcmV0dXJuIDE7IC8vIDAgY291bnRzIGFzIDEgZGlnaXRcbn1cblxuLy9Qcm92aWRlczogbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0XG5mdW5jdGlvbiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0LCBvZnMpIHtcbiAgdmFyIGEgPSBuYXQuZGF0YVtvZnNdO1xuICB2YXIgYiA9IDA7XG4gIGlmKGEgJiAweEZGRkYwMDAwKSB7IGIgKz0xNjsgYSA+Pj49MTY7IH1cbiAgaWYoYSAmIDB4RkYwMCkgICAgIHsgYiArPSA4OyBhID4+Pj0gODsgfVxuICBpZihhICYgMHhGMCkgICAgICAgeyBiICs9IDQ7IGEgPj4+PSA0OyB9XG4gIGlmKGEgJiAxMikgICAgICAgICB7IGIgKz0gMjsgYSA+Pj49IDI7IH1cbiAgaWYoYSAmIDIpICAgICAgICAgIHsgYiArPSAxOyBhID4+Pj0gMTsgfVxuICBpZihhICYgMSkgICAgICAgICAgeyBiICs9IDE7IH1cbiAgcmV0dXJuIDMyIC0gYjtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfaW50XG5mdW5jdGlvbiBpc19kaWdpdF9pbnQobmF0LCBvZnMpIHtcbiAgaWYgKG5hdC5kYXRhW29mc10gPj0gMCkgcmV0dXJuIDFcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X3plcm9cbmZ1bmN0aW9uIGlzX2RpZ2l0X3plcm8obmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSA9PSAwKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X29kZFxuZnVuY3Rpb24gaXNfZGlnaXRfb2RkKG5hdCwgb2ZzKSB7XG4gIGlmKG5hdC5kYXRhW29mc10gJiAxKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBpbmNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICh4IHwgMCk7XG4gICAgaWYoeCA9PSAoeCA+Pj4gMCkpIHtcbiAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBhZGRfbmF0XG4vL1JlcXVpcmVzOiBpbmNyX25hdFxuZnVuY3Rpb24gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHhcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmNyX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgY2FycnkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wbGVtZW50X25hdFxuZnVuY3Rpb24gY29tcGxlbWVudF9uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAoLTEgPj4+IDApIC0gKG5hdC5kYXRhW29mcytpXSA+Pj4gMCk7XG4gIH1cbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vUHJvdmlkZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBkZWNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcytpXSA+Pj4wKSAtIGJvcnJvdztcbiAgICBuYXQuZGF0YVtvZnMraV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChib3Jyb3cgPT0gMSkgPyAwIDogMTtcbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogc3ViX25hdFxuLy9SZXF1aXJlczogZGVjcl9uYXRcbmZ1bmN0aW9uIHN1Yl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGJvcnJvdyA9IChjYXJyeV9pbiA9PSAxKSA/IDAgOiAxO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIC0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAtIGJvcnJvdztcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCAoYm9ycm93PT0xKT8wOjEpO1xufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzW29mczNdXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IG11bHRfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBhZGRfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGEgPSAobmF0My5kYXRhW29mczNdID4+PiAwKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4MSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICogKGEgJiAweDAwMDBGRkZGKSArIGNhcnJ5O1xuICAgIHZhciB4MiA9IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSA+Pj4gMTYpO1xuICAgIGNhcnJ5ID0gTWF0aC5mbG9vcih4Mi82NTUzNik7XG4gICAgdmFyIHgzID0geDEgKyAoeDIgJSA2NTUzNikgKiA2NTUzNjtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHgzO1xuICAgIGNhcnJ5ICs9IE1hdGguZmxvb3IoeDMvNDI5NDk2NzI5Nik7XG4gIH1cblxuICBpZihsZW4yIDwgbGVuMSAmJiBjYXJyeSkge1xuICAgIHJldHVybiBhZGRfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBuYXRfb2ZfYXJyYXkoW2NhcnJ5XSksIDAsIDEsIDApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjYXJyeTtcbiAgfVxufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzXG4vLyBsZW4xID49IGxlbjIgKyBsZW4zLlxuLy9Qcm92aWRlczogbXVsdF9uYXRcbi8vUmVxdWlyZXM6IG11bHRfZGlnaXRfbmF0XG5mdW5jdGlvbiBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzLCBsZW4zKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4zOyBpKyspIHtcbiAgICBjYXJyeSArPSBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxK2ksIGxlbjEtaSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMytpKTtcbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIG5hdDEgPSAyICogbmF0MSArIG5hdDIgKiBuYXQyXG4vLyBsZW4xID49IDIgKiBsZW4yXG4vL1Byb3ZpZGVzOiBzcXVhcmVfbmF0XG4vL1JlcXVpcmVzOiBtdWx0X25hdCwgYWRkX25hdFxuZnVuY3Rpb24gc3F1YXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGNhcnJ5ICs9IGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0MSwgb2ZzMSwgbGVuMSwgMCk7XG4gIGNhcnJ5ICs9IG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpO1xuICByZXR1cm4gY2Fycnk7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9sZWZ0X25hdFxuZnVuY3Rpb24gc2hpZnRfbGVmdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbmJpdHMpIHtcbiAgaWYobmJpdHMgPT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMTsgaSsrKSB7XG4gICAgdmFyIGEgPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPDwgbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA+Pj4gKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vLyBBc3N1bWluZyBjID4gYSwgcmV0dXJucyBbcXVvdGllbnQsIHJlbWFpbmRlcl0gb2YgKGE8PDMyICsgYikvY1xuLy9Qcm92aWRlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2hlbHBlcihhLCBiLCBjKSB7XG4gIHZhciB4ID0gYSAqIDY1NTM2ICsgKGI+Pj4xNik7XG4gIHZhciB5ID0gTWF0aC5mbG9vcih4L2MpICogNjU1MzY7XG4gIHZhciB6ID0gKHggJSBjKSAqIDY1NTM2O1xuICB2YXIgdyA9IHogKyAoYiAmIDB4MDAwMEZGRkYpO1xuICByZXR1cm4gW3kgKyBNYXRoLmZsb29yKHcvYyksIHcgJSBjXTtcbn1cblxuLy8gbmF0MVtvZnMxK2xlbl0gPCBuYXQyW29mczJdXG4vL1Byb3ZpZGVzOiBkaXZfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfZGlnaXRfbmF0KG5hdHEsIG9mc3EsIG5hdHIsIG9mc3IsIG5hdDEsIG9mczEsIGxlbiwgbmF0Miwgb2ZzMikge1xuICB2YXIgcmVtID0gKG5hdDEuZGF0YVtvZnMxK2xlbi0xXSA+Pj4wKTtcbiAgLy8gbmF0cVtvZnNxK2xlbi0xXSBpcyBndWFyYW50ZWVkIHRvIGJlIHplcm8gKGR1ZSB0byB0aGUgTVNEIHJlcXVpcmVtZW50KSxcbiAgLy8gYW5kIHNob3VsZCBub3QgYmUgd3JpdHRlbiB0by5cbiAgZm9yKHZhciBpID0gbGVuLTI7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHggPSBkaXZfaGVscGVyKHJlbSwgKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDIuZGF0YVtvZnMyXSA+Pj4gMCkpO1xuICAgIG5hdHEuZGF0YVtvZnNxK2ldID0geFswXTtcbiAgICByZW0gPSB4WzFdO1xuICB9XG4gIG5hdHIuZGF0YVtvZnNyXSA9IHJlbTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIG5hdDFbbmF0MjpdIDo9IG5hdDEgLyBuYXQyXG4vLyBuYXQxWzpuYXQyXSA6PSBuYXQxICUgbmF0MlxuLy8gbGVuMSA+IGxlbjIsIG5hdDJbb2ZzMitsZW4yLTFdID4gbmF0MVtvZnMxK2xlbjEtMV1cbi8vUHJvdmlkZXM6IGRpdl9uYXRcbi8vUmVxdWlyZXM6IGRpdl9kaWdpdF9uYXQsIGRpdl9oZWxwZXIsIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdCwgc2hpZnRfbGVmdF9uYXQsIHNoaWZ0X3JpZ2h0X25hdCwgY3JlYXRlX25hdCwgc2V0X3RvX3plcm9fbmF0LCBtdWx0X2RpZ2l0X25hdCwgc3ViX25hdCwgY29tcGFyZV9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gZGl2X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIGlmKGxlbjIgPT0gMSkge1xuICAgIGRpdl9kaWdpdF9uYXQobmF0MSwgb2ZzMSsxLCBuYXQxLCBvZnMxLCBuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciBzID0gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdDIsIG9mczIrbGVuMi0xKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG5cbiAgdmFyIGQgPSAobmF0Mi5kYXRhW29mczIrbGVuMi0xXSA+Pj4gMCkgKyAxO1xuICB2YXIgYSA9IGNyZWF0ZV9uYXQobGVuMisxKTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IGxlbjI7IGktLSkge1xuICAgIC8vIERlY2VudCBsb3dlciBib3VuZCBvbiBxdW9cbiAgICB2YXIgcXVvID0gZCA9PSA0Mjk0OTY3Mjk2ID8gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA6IGRpdl9oZWxwZXIoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDEuZGF0YVtvZnMxK2ktMV0gPj4+MCksIGQpWzBdO1xuICAgIHNldF90b196ZXJvX25hdChhLCAwLCBsZW4yKzEpO1xuICAgIG11bHRfZGlnaXRfbmF0KGEsIDAsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFtxdW9dKSwgMCk7XG4gICAgc3ViX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMisxLCBhLCAwLCBsZW4yKzEsIDEpO1xuXG4gICAgd2hpbGUgKG5hdDEuZGF0YVtvZnMxK2ldICE9IDAgfHwgY29tcGFyZV9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpID49IDApIHtcbiAgICAgIHF1byA9IHF1byArIDE7XG4gICAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIG5hdDIsIG9mczIsIGxlbjIsIDEpO1xuICAgIH1cblxuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gcXVvO1xuICB9XG5cbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gc2hpZnQgcmVtYWluZGVyXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHJlc3RvcmVcbiAgcmV0dXJuIDA7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9yaWdodF9uYXRcbmZ1bmN0aW9uIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IGxlbjEtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgYSA9IG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPj4+IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPDwgKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfZGlnaXRzX25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA+IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIDE7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA8IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRcbi8vUmVxdWlyZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBhID0gbnVtX2RpZ2l0c19uYXQobmF0MSwgb2ZzMSwgbGVuMSk7XG4gIHZhciBiID0gbnVtX2RpZ2l0c19uYXQobmF0Miwgb2ZzMiwgbGVuMik7XG4gIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgZm9yKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgPiAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApKSByZXR1cm4gMTtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA8IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAtMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRfcmVhbFxuLy9SZXF1aXJlczogY29tcGFyZV9uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0X3JlYWwobmF0MSxuYXQyKXtcbiAgcmV0dXJuIGNvbXBhcmVfbmF0KG5hdDEsMCxuYXQxLmRhdGEubGVuZ3RoLG5hdDIsMCxuYXQyLmRhdGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogbGFuZF9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxhbmRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdICY9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGxvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gfD0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbHhvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGx4b3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIF49IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogc2VyaWFsaXplX25hdFxuZnVuY3Rpb24gc2VyaWFsaXplX25hdCh3cml0ZXIsIG5hdCwgc3ope1xuICB2YXIgbGVuID0gbmF0LmRhdGEubGVuZ3RoO1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgd3JpdGVyLndyaXRlKDMyLCBuYXQuZGF0YVtpXSk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICBzelsxXSA9IGxlbiAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGRlc2VyaWFsaXplX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGRlc2VyaWFsaXplX25hdChyZWFkZXIsIHN6KXtcbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBuYXQgPSBuZXcgTWxOYXQobGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBuYXQuZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICByZXR1cm4gbmF0O1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIGZzX25vZGVfc3VwcG9ydGVkICgpIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbnMubm9kZSAhPT0gJ3VuZGVmaW5lZCcpXG59XG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gZmFsc2Vcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sTm9kZUZkLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV93aXRoX2FyZ3Ncbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIE1sTm9kZURldmljZShyb290KSB7XG4gIHRoaXMuZnMgPSByZXF1aXJlKCdmcycpO1xuICB0aGlzLnJvb3QgPSByb290O1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc0ZpbGUgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNGaWxlKCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLCBtb2RlLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ta2RpclN5bmModGhpcy5ubShuYW1lKSx7bW9kZTptb2RlfSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJtZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMucmVhZGRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRGlyZWN0b3J5KCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBiID0gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgICB0aGlzLmZzLnVubGlua1N5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIGI7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIGNvbnN0cyA9IHJlcXVpcmUoJ2NvbnN0YW50cycpO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBrZXkgaW4gZil7XG4gICAgc3dpdGNoKGtleSl7XG4gICAgY2FzZSBcInJkb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19SRE9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJ3cm9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fV1JPTkxZOyBicmVhaztcbiAgICBjYXNlIFwiYXBwZW5kXCIgIDpcbiAgICAgIHJlcyB8PSBjb25zdHMuT19XUk9OTFkgfCBjb25zdHMuT19BUFBFTkQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiY3JlYXRlXCIgICA6IHJlcyB8PSBjb25zdHMuT19DUkVBVDsgICAgYnJlYWs7XG4gICAgY2FzZSBcInRydW5jYXRlXCIgOiByZXMgfD0gY29uc3RzLk9fVFJVTkM7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJleGNsXCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX0VYQ0w7ICAgICBicmVhaztcbiAgICBjYXNlIFwiYmluYXJ5XCIgICA6IHJlcyB8PSBjb25zdHMuT19CSU5BUlk7ICAgYnJlYWs7XG4gICAgY2FzZSBcInRleHRcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fVEVYVDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJub25ibG9ja1wiIDogcmVzIHw9IGNvbnN0cy5PX05PTkJMT0NLOyBicmVhaztcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICB2YXIgZmQgPSB0aGlzLmZzLm9wZW5TeW5jKHRoaXMubm0obmFtZSksIHJlcyk7XG4gICAgdmFyIGlzQ2hhcmFjdGVyRGV2aWNlID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNDaGFyYWN0ZXJEZXZpY2UoKTtcbiAgICBmLmlzQ2hhcmFjdGVyRGV2aWNlID0gaXNDaGFyYWN0ZXJEZXZpY2U7XG4gICAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZCwgZik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZW5hbWUgPSBmdW5jdGlvbihvLCBuLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5yZW5hbWVTeW5jKHRoaXMubm0obyksIHRoaXMubm0obikpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXQgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5sc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zeW1saW5rID0gZnVuY3Rpb24odG9fZGlyLCB0YXJnZXQsIHBhdGgsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnN5bWxpbmtTeW5jKHRoaXMubm0odGFyZ2V0KSwgdGhpcy5ubShwYXRoKSwgdG9fZGlyID8gJ2RpcicgOiAnZmlsZScpO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRsaW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBsaW5rID0gdGhpcy5mcy5yZWFkbGlua1N5bmModGhpcy5ubShuYW1lKSwgJ3V0ZjgnKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobGluayk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5vcGVuZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yYWlzZV9ub2RlanNfZXJyb3IgPSBmdW5jdGlvbihlcnIsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKFwiVW5peC5Vbml4X2Vycm9yXCIpO1xuICBpZiAocmFpc2VfdW5peCAmJiB1bml4X2Vycm9yKSB7XG4gICAgdmFyIGFyZ3MgPSBtYWtlX3VuaXhfZXJyX2FyZ3MoZXJyLmNvZGUsIGVyci5zeXNjYWxsLCBlcnIucGF0aCwgZXJyLmVycm5vKTtcbiAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdHNfZnJvbV9qcyA9IGZ1bmN0aW9uKGpzX3N0YXRzKSB7XG4gIC8qID09PVVuaXguZmlsZV9raW5kPT09XG4gICAqIHR5cGUgZmlsZV9raW5kID1cbiAgICogICAgIFNfUkVHICAgICAgICAgICAgICAgICAgICAgICAoKiogUmVndWxhciBmaWxlICopXG4gICAqICAgfCBTX0RJUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIERpcmVjdG9yeSAqKVxuICAgKiAgIHwgU19DSFIgICAgICAgICAgICAgICAgICAgICAgICgqKiBDaGFyYWN0ZXIgZGV2aWNlICopXG4gICAqICAgfCBTX0JMSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIEJsb2NrIGRldmljZSAqKVxuICAgKiAgIHwgU19MTksgICAgICAgICAgICAgICAgICAgICAgICgqKiBTeW1ib2xpYyBsaW5rICopXG4gICAqICAgfCBTX0ZJRk8gICAgICAgICAgICAgICAgICAgICAgKCoqIE5hbWVkIHBpcGUgKilcbiAgICogICB8IFNfU09DSyAgICAgICAgICAgICAgICAgICAgICAoKiogU29ja2V0ICopXG4gICAqL1xuICB2YXIgZmlsZV9raW5kO1xuICBpZiAoanNfc3RhdHMuaXNGaWxlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAwO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBmaWxlX2tpbmQgPSAxO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAyO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQmxvY2tEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDM7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgIGZpbGVfa2luZCA9IDQ7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNGSUZPKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA1O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU29ja2V0KCkpIHtcbiAgICBmaWxlX2tpbmQgPSA2O1xuICB9XG4gIC8qID09PVVuaXguc3RhdHM9PT1cbiAgICogdHlwZSBzdGF0cyA9XG4gICAqICB7IHN0X2RldiA6IGludDsgICAgICAgICAgICAgICAoKiogRGV2aWNlIG51bWJlciAqKVxuICAgKiAgICBzdF9pbm8gOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIElub2RlIG51bWJlciAqKVxuICAgKiAgICBzdF9raW5kIDogZmlsZV9raW5kOyAgICAgICAgKCoqIEtpbmQgb2YgdGhlIGZpbGUgKilcbiAgICogICAgc3RfcGVybSA6IGZpbGVfcGVybTsgICAgICAgICgqKiBBY2Nlc3MgcmlnaHRzICopXG4gICAqICAgIHN0X25saW5rIDogaW50OyAgICAgICAgICAgICAoKiogTnVtYmVyIG9mIGxpbmtzICopXG4gICAqICAgIHN0X3VpZCA6IGludDsgICAgICAgICAgICAgICAoKiogVXNlciBpZCBvZiB0aGUgb3duZXIgKilcbiAgICogICAgc3RfZ2lkIDogaW50OyAgICAgICAgICAgICAgICgqKiBHcm91cCBJRCBvZiB0aGUgZmlsZSdzIGdyb3VwICopXG4gICAqICAgIHN0X3JkZXYgOiBpbnQ7ICAgICAgICAgICAgICAoKiogRGV2aWNlIElEIChpZiBzcGVjaWFsIGZpbGUpICopXG4gICAqICAgIHN0X3NpemUgOiBpbnQ7ICAgICAgICAgICAgICAoKiogU2l6ZSBpbiBieXRlcyAqKVxuICAgKiAgICBzdF9hdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgYWNjZXNzIHRpbWUgKilcbiAgICogICAgc3RfbXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IG1vZGlmaWNhdGlvbiB0aW1lICopXG4gICAqICAgIHN0X2N0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBzdGF0dXMgY2hhbmdlIHRpbWUgKilcbiAgICogIH1cbiAgICovXG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGpzX3N0YXRzLmRldixcbiAgICBqc19zdGF0cy5pbm8sXG4gICAgZmlsZV9raW5kLFxuICAgIGpzX3N0YXRzLm1vZGUsXG4gICAganNfc3RhdHMubmxpbmssXG4gICAganNfc3RhdHMudWlkLFxuICAgIGpzX3N0YXRzLmdpZCxcbiAgICBqc19zdGF0cy5yZGV2LFxuICAgIGpzX3N0YXRzLnNpemUsXG4gICAganNfc3RhdHMuYXRpbWVNcyxcbiAgICBqc19zdGF0cy5tdGltZU1zLFxuICAgIGpzX3N0YXRzLmN0aW1lTXNcbiAgKTtcbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZURldmljZSgpIHtcbn1cblxuLy9Qcm92aWRlczogTWxOb2RlRmRcbi8vUmVxdWlyZXM6IE1sRmlsZSwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfc2V0LCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxOb2RlRmQoZmQsIGZsYWdzKXtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMuZmQgPSBmZDtcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuTWxOb2RlRmQucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sTm9kZUZkLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZUZkO1xuXG5NbE5vZGVGZC5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB0cnkge1xuICAgIHRoaXMuZnMuZnRydW5jYXRlU3luYyh0aGlzLmZkLGxlbnwwKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmZzdGF0U3luYyh0aGlzLmZkKS5zaXplO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYsYnVmX29mZnNldCxsZW4pe1xuICB0cnkge1xuICAgIGlmKHRoaXMuZmxhZ3MuaXNDaGFyYWN0ZXJEZXZpY2UpXG4gICAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWYsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgZWxzZVxuICAgICAgdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGEsYnVmX29mZnNldCxsZW4pe1xuICB0cnkge1xuICAgIGlmKHRoaXMuZmxhZ3MuaXNDaGFyYWN0ZXJEZXZpY2UpXG4gICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuKTtcbiAgICBlbHNlXG4gICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuLCBvZmZzZXQpO1xuICAgIHJldHVybiByZWFkO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCl7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5jbG9zZVN5bmModGhpcy5mZCk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogTWxOb2RlRmRcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZUZkKCl7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9SZXF1aXJlczogTWxOb2RlRmRcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKXtcbiAgaWYoZmxhZ3MubmFtZSkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgZnMgPSByZXF1aXJlKFwiZnNcIik7XG4gICAgICB2YXIgZmQyID0gZnMub3BlblN5bmMoZmxhZ3MubmFtZSwgXCJyc1wiKTtcbiAgICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQyLCBmbGFncyk7XG4gICAgfSBjYXRjaChlKSB7ICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZCwgZmxhZ3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyl7XG4gIHJldHVybiBudWxsO1xufVxuIiwiLy8vLy8vLy8vIEJJR1NUUklOR1xuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYWxsb2Ncbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlXG5mdW5jdGlvbiBiaWdzdHJpbmdfYWxsb2MoXyxzaXplKXtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlKDEyLCAwLCBbMCxzaXplXSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWJcbmZ1bmN0aW9uIGJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWIoeCl7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9zdHViKHMxLCBpMSwgczIsIGkyLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShzMSxpMSxzMixpMixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nX2JsaXRfYnl0ZXNfYmlnc3RyaW5nX3N0dWIoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhKHNyYyxzcmNfcG9zLGRzdCxkc3RfcG9zLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YihzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbXNldF9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtc2V0X3N0dWIoYmlnc3RyaW5nLCB2X3Bvcywgdl9sZW4sIHZfY2hhcikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZfbGVuOyBpKyspIHtcbiAgICBjYW1sX2JhX3NldF8xKGJpZ3N0cmluZywgdl9wb3MgKyBpLCB2X2NoYXIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19tZW1jbXBfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gYmlnc3RyaW5nX21lbWNtcF9zdHViKHZfczEsIHZfczFfcG9zLCB2X3MyLCB2X3MyX3Bvcywgdl9sZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZfbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEodl9zMSx2X3MxX3BvcyArIGkpO1xuICAgIHZhciBiID0gY2FtbF9iYV9nZXRfMSh2X3MyLHZfczJfcG9zICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbWNtcF9ieXRlc19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xLCBjYW1sX2J5dGVzX2dldFxuZnVuY3Rpb24gYmlnc3RyaW5nX21lbWNtcF9ieXRlc19zdHViKHZfczEsIHZfczFfcG9zLCB2X3MyLCB2X3MyX3Bvcywgdl9sZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2X2xlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHZfczEsIHZfczFfcG9zICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2J5dGVzX2dldCh2X3MyLCB2X3MyX3BvcyArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZ1xudmFyIGludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZyA9IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19maW5kXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfZmluZChicywgY2hyLCBwb3MsIGxlbil7XG4gIHdoaWxlKGxlbiA+IDApe1xuICAgIGlmKGNhbWxfYmFfZ2V0XzEoYnMscG9zKSA9PSBjaHIpIHJldHVybiBwb3M7XG4gICAgcG9zKys7XG4gICAgbGVuLS07XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtbWVtX2J5dGVjb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtbWVtX2J5dGVjb2RlKGhheXN0YWNrLCBuZWVkbGUsIGhheXN0YWNrX3BvcywgaGF5c3RhY2tfbGVuLCBuZWVkbGVfcG9zLCBuZWVkbGVfbGVuKXtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbGltID0gaGF5c3RhY2tfbGVuIC0gbmVlZGxlX2xlbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8PSBsaW07ICsraSkge1xuICAgIHZhciBtYXRjaGVzID0gdHJ1ZTtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5lZWRsZV9sZW47ICsraikge1xuICAgICAgaWYgKGNhbWxfYmFfZ2V0XzEoaGF5c3RhY2ssIGhheXN0YWNrX3BvcyArIGkgKyBqKSAhPSBjYW1sX2JhX2dldF8xKG5lZWRsZSxuZWVkbGVfcG9zICsgaikpIHtcbiAgICAgICAgbWF0Y2hlcyA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG1hdGNoZXMpIHJldHVybiAoaGF5c3RhY2tfcG9zICsgaSk7XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuIiwiLy8vLy8vLy8vIEJJR1NUUklOR1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nKGgsIGJzKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLGJzLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGEuYnVmZmVyXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGFcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIoYWIpIHtcbiAgdmFyIHRhID0gbmV3IFVpbnQ4QXJyYXkoYWIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoYmEpIHtcbiAgdmFyIHRhID0gbmV3IFVpbnQ4QXJyYXkoYmEuYnVmZmVyLCBiYS5ieXRlT2Zmc2V0LCBiYS5sZW5ndGggKiBiYS5CWVRFU19QRVJfRUxFTUVOVCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX21lbWNtcFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfbWVtY21wKHMxLCBwb3MxLCBzMiwgcG9zMiwgbGVuKXtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMShzMSxwb3MxICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2JhX2dldF8xKHMyLHBvczIgKyBpKTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoYmExLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMS5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKG9mczEgKyBsZW4gPiBiYTEuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gYmExLmRhdGEuc3ViYXJyYXkob2ZzMSxvZnMxK2xlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxwb3MyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKHBvczEgKyBsZW4gPiBjYW1sX21sX3N0cmluZ19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmKHBvczEgKyBsZW4gPiBjYW1sX21sX2J5dGVzX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoc3RyMSkuc2xpY2UocG9zMSxwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLG9mczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoYmExLCBwb3MxLCBieXRlczIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMS5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMxID0gYmExLm9mZnNldChwb3MxKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKHBvczIgKyBsZW4gPiBjYW1sX21sX2J5dGVzX2xlbmd0aChieXRlczIpKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gYmExLmRhdGEuc2xpY2Uob2ZzMSwgb2ZzMStsZW4pO1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShzbGljZSksIDAsIGJ5dGVzMiwgcG9zMiwgbGVuKTtcbiAgcmV0dXJuIDBcbn1cbiIsIi8vLy8vLy8vLyBDT1JFXG5cbi8vUHJvdmlkZXM6IGNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbnZhciBjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCA9IGNhbWxfYXJyYXlfYmxpdFxuLy9Qcm92aWRlczogY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG52YXIgY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdCA9IGNhbWxfYXJyYXlfYmxpdFxuXG4vL1Byb3ZpZGVzOiBjb3JlX3RpbWVfbnNfZm9ybWF0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjb3JlX3RpbWVfbnNfZm9ybWF0KHRpbWUsZm9ybWF0KXtcbiAgdmFyIGQgPSBuZXcgRGF0ZSh0aW1lICogMTAwMCk7XG4gIHZhciBmb3JtYXRqcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm9ybWF0KTtcbiAgdmFyIGpzdHJpbmcgPSBqb29fZ2xvYmFsX29iamVjdC5zdHJmdGltZShmb3JtYXRqcywgZCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGpzdHJpbmcpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb3JlX2djX2NvbXBhY3Rpb25zXG5mdW5jdGlvbiBjb3JlX2djX2NvbXBhY3Rpb25zICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19oZWFwX2NodW5rc1xuZnVuY3Rpb24gY29yZV9nY19oZWFwX2NodW5rcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfaGVhcF93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19oZWFwX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19tYWpvcl9jb2xsZWN0aW9uc1xuZnVuY3Rpb24gY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19tYWpvcl93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19tYWpvcl93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21pbm9yX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19wcm9tb3RlZF93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19wcm9tb3RlZF93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfdG9wX2hlYXBfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfdG9wX2hlYXBfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrc1xuZnVuY3Rpb24gY29yZV9nY19ydW5fbWVtcHJvZl9jYWxsYmFja3MgKCkgeyByZXR1cm4gMCB9XG5cbi8vUHJvdmlkZXM6IGNvcmVfbWQ1X2ZkXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiwgY2FtbF9tZDVfY2hhbiwgY2FtbF9tbF9jbG9zZV9jaGFubmVsXG5mdW5jdGlvbiBjb3JlX21kNV9mZChmZCl7XG4gICAgdmFyIGljID0gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4oZmQpO1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBjYW1sX21kNV9jaGFuKGljLCAtMSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgY2FtbF9tbF9jbG9zZV9jaGFubmVsKGljKTtcbiAgICB9XG59XG5cbi8vUHJvdmlkZXM6IGNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWQ1X3N0cmluZywgY2FtbF9ibGl0X3N0cmluZywgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuZnVuY3Rpb24gY29yZV9tZDVfZGlnZXN0X3N1YmJpZ3N0cmluZyhidWYsIG9mcywgbGVuLCByZXMpe1xuICAgIHZhciBieXRlcyA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gICAgYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIoYnVmLCBvZnMsIGJ5dGVzLCAwLCBsZW4pO1xuICAgIHZhciByZXMyID0gY2FtbF9tZDVfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2J5dGVzKGJ5dGVzKSwgMCwgbGVuKTtcbiAgICBjYW1sX2JsaXRfc3RyaW5nKHJlczIsIDAsIHJlcywgMCwgMTYpO1xuICAgIHJldHVybiAwO1xufVxuXG4vL0JpZ3N0cmluZ1xuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfZGVzdHJveV9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGJpZ3N0cmluZ19kZXN0cm95X3N0dWIodl9ic3RyKSB7XG4gIGlmICh2X2JzdHIuaGFzT3duUHJvcGVydHkoJ19faXNfZGVhbGxvY2F0ZWQnKSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ3N0cmluZ19kZXN0cm95OiBiaWdzdHJpbmcgaXMgYWxyZWFkeSBkZWFsbG9jYXRlZFwiKTtcbiAgfVxuICAvLyBNdXRhdGUgdGhlIG9yaWdpbmFsIGJpZ3N0cmluZyBpbi1wbGFjZSwgdG8gc2ltdWxhdGUgd2hhdCB0aGUgQyB2ZXJzaW9uIGRvZXNcbiAgdl9ic3RyLl9faXNfZGVhbGxvY2F0ZWQgPSB0cnVlO1xuICB2X2JzdHIuZGF0YSA9IG5ldyB2X2JzdHIuZGF0YS5fX3Byb3RvX18uY29uc3RydWN0b3IoMCk7XG4gIHZfYnN0ci5kaW1zID0gWyAwIF07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfcmVhbGxvY1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGJpZ3N0cmluZ19kZXN0cm95X3N0dWJcbmZ1bmN0aW9uIGJpZ3N0cmluZ19yZWFsbG9jKGJpZ3N0cmluZywgc2l6ZSkge1xuICAgIGlmIChiaWdzdHJpbmcuaGFzT3duUHJvcGVydHkoJ19faXNfZGVhbGxvY2F0ZWQnKSkge1xuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJiaWdzdHJpbmdfcmVhbGxvYzogYmlnc3RyaW5nIGlzIGFscmVhZHkgZGVhbGxvY2F0ZWRcIik7XG4gICAgfVxuXG4gICAgdmFyIG5ld19kYXRhID0gbmV3IGJpZ3N0cmluZy5kYXRhLl9fcHJvdG9fXy5jb25zdHJ1Y3RvcihzaXplKTtcbiAgICBuZXdfZGF0YS5zZXQoYmlnc3RyaW5nLmRhdGEuc2xpY2UoMCwgc2l6ZSkpO1xuICAgIHZhciBuZXdfYmlnc3RyaW5nID0gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJpZ3N0cmluZy5raW5kLCBiaWdzdHJpbmcubGF5b3V0LCBbc2l6ZV0sIG5ld19kYXRhKTtcbiAgICBiaWdzdHJpbmdfZGVzdHJveV9zdHViKGJpZ3N0cmluZyk7XG5cbiAgICByZXR1cm4gbmV3X2JpZ3N0cmluZztcbn1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIENvcHlyaWdodCAoYykgMjAxNyBJbmhhYml0ZWQgVHlwZSBMTEMuXG5cbiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gICAgYXJlIG1ldDpcblxuICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuXG4gICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGhpcyBjb250cmlidXRvcnNcbiAgICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmVcbiAgICAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cblxuICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTXG4gICAgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAgICBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gICAgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SXG4gICAgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICAgIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTXG4gICAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pXG4gICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULFxuICAgIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTlxuICAgIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRVxuICAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuZnVuY3Rpb24gYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlcyhzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKSB7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKHNyYyxzcmNfb2ZmLGRzdCxkc3Rfb2ZmLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX2JsaXRfdG9fYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9ibGl0X3RvX2JpZ3N0cmluZyhzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKSB7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXMoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbikge1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfaW50X2NvbXBhcmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmcoYmExLCBiYTFfb2ZmLCBiYTIsIGJhMl9vZmYsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBjYW1sX2ludF9jb21wYXJlKGNhbWxfYmFfZ2V0XzEoYmExLCBiYTFfb2ZmICsgaSksIGNhbWxfYmFfZ2V0XzEoYmEyLCBiYTJfb2ZmICsgaSkpO1xuICAgIGlmIChjICE9IDApIHJldHVybiBjXG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfaW50X2NvbXBhcmUsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmcoYmEsIGJhX29mZiwgc3RyLCBzdHJfb2ZmLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gY2FtbF9pbnRfY29tcGFyZShjYW1sX2JhX2dldF8xKGJhLCBiYV9vZmYgKyBpKSwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzdHIsIHN0cl9vZmYgKyBpKSk7XG4gICAgaWYgKGMgIT0gMCkgcmV0dXJuIGNcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfbWVtY2hyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9tZW1jaHIoYmEsIGJhX29mZiwgY2hyLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChjYW1sX2JhX2dldF8xKGJhLCBiYV9vZmYgKyBpKSA9PSBjaHIpIHtcbiAgICAgIHJldHVybiAoYmFfb2ZmICsgaSk7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSl7XG4gIGlmICh0eXBlb2YgYSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoYSkpIHJldHVybiAyNTI7IC8vIHN0cmluZ190YWdcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoYSkpIHJldHVybiAxMjUyOyAvLyBvY2FtbCBzdHJpbmcgKGlmIGRpZmZlcmVudCBmcm9tIGJ5dGVzKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgQXJyYXkgJiYgYVswXSA9PT0gKGFbMF0+Pj4wKSAmJiBhWzBdIDw9IDI1NSkge1xuICAgIC8vIExvb2sgbGlrZSBhbiBvY2FtbCBibG9ja1xuICAgIHZhciB0YWcgPSBhWzBdIHwgMDtcbiAgICAvLyBpZ25vcmUgZG91YmxlX2FycmF5X3RhZyBiZWNhdXNlIHdlIGNhbm5vdCBhY2N1cmF0ZWx5IHNldFxuICAgIC8vIHRoaXMgdGFnIHdoZW4gd2UgY3JlYXRlIGFuIGFycmF5IG9mIGZsb2F0LlxuICAgIHJldHVybiAodGFnID09IDI1NCk/MDp0YWdcbiAgfVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgU3RyaW5nKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzdHJpbmdcIikgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBOdW1iZXIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChhICYmIGEuY2FtbF9jdXN0b20pIHJldHVybiAxMjU1OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAoYSAmJiBhLmNvbXBhcmUpIHJldHVybiAxMjU2OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gMTI0NzsgLy8gbGlrZSBjbG9zdXJlX3RhZyAoMjQ3KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN5bWJvbFwiKSByZXR1cm4gMTI1MTtcbiAgcmV0dXJuIDEwMDE7IC8vb3V0X29mX2hlYXBfdGFnXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSl7XG4gIHJldHVybiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dLmNvbXBhcmU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20obnVtLCBjdXN0b20sIHN3YXAsIHRvdGFsKSB7XG4gIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGN1c3RvbSk7XG4gIGlmKGNvbXApIHtcbiAgICB2YXIgeCA9IChzd2FwID4gMCk/Y29tcChjdXN0b20sbnVtLHRvdGFsKTpjb21wKG51bSxjdXN0b20sdG90YWwpO1xuICAgIGlmKHRvdGFsICYmIHggIT0geCkgcmV0dXJuIHN3YXA7IC8vIHRvdGFsICYmIG5hblxuICAgIGlmKCt4ICE9ICt4KSByZXR1cm4gK3g7IC8vIG5hblxuICAgIGlmKCh4IHwgMCkgIT0gMCkgcmV0dXJuICh4IHwgMCk7IC8vICFuYW5cbiAgfVxuICByZXR1cm4gc3dhcFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsIChjb25zdCwgY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnRfY29tcGFyZSwgY2FtbF9zdHJpbmdfY29tcGFyZSwgY2FtbF9ieXRlc19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSwgY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsIChhLCBiLCB0b3RhbCkge1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKCEodG90YWwgJiYgYSA9PT0gYikpIHtcbiAgICAgIHZhciB0YWdfYSA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGEpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYodGFnX2EgPT0gMjUwKSB7IGEgPSBhWzFdOyBjb250aW51ZSB9XG5cbiAgICAgIHZhciB0YWdfYiA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGIpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYodGFnX2IgPT0gMjUwKSB7IGIgPSBiWzFdOyBjb250aW51ZSB9XG5cbiAgICAgIC8vIHRhZ3MgYXJlIGRpZmZlcmVudFxuICAgICAgaWYodGFnX2EgIT09IHRhZ19iKSB7XG4gICAgICAgIGlmKHRhZ19hID09IDEwMDApIHtcbiAgICAgICAgICBpZih0YWdfYiA9PSAxMjU1KSB7IC8vaW1tZWRpYXRlIGNhbiBjb21wYXJlIGFnYWluc3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKGEsIGIsIC0xLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmKHRhZ19iID09IDEwMDApIHtcbiAgICAgICAgICBpZih0YWdfYSA9PSAxMjU1KSB7IC8vaW1tZWRpYXRlIGNhbiBjb21wYXJlIGFnYWluc3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKGIsIGEsIDEsIHRvdGFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDFcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHRhZ19hIDwgdGFnX2IpPy0xOjE7XG4gICAgICB9XG4gICAgICBzd2l0Y2godGFnX2Epe1xuICAgICAgICAvLyAyNDY6IExhenlfdGFnIGhhbmRsZWQgYmVsbG93XG4gICAgICBjYXNlIDI0NzogLy8gQ2xvc3VyZV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNDg6IC8vIE9iamVjdFxuICAgICAgICB2YXIgeCA9IGNhbWxfaW50X2NvbXBhcmUoYVsyXSwgYlsyXSk7XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ5OiAvLyBJbmZpeFxuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1MDogLy8gRm9yd2FyZCB0YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlbiwgaGFuZGxlZCBhYm92ZVxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEZvcndhcmRfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MTogLy9BYnN0cmFjdFxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTI6IC8vIE9DYW1sIGJ5dGVzXG4gICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgdmFyIHggPSBjYW1sX2J5dGVzX2NvbXBhcmUoYSwgYik7XG4gICAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTM6IC8vIERvdWJsZV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IERvdWJsZV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjU0OiAvLyBEb3VibGVfYXJyYXlfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfYXJyYXlfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjU1OiAvLyBDdXN0b21fdGFnXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgQ3VzdG9tX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjQ3OiAvLyBGdW5jdGlvblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1NTogLy8gQ3VzdG9tXG4gICAgICAgIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpO1xuICAgICAgICBpZihjb21wICE9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShiKSl7XG4gICAgICAgICAgcmV0dXJuIChhLmNhbWxfY3VzdG9tPGIuY2FtbF9jdXN0b20pPy0xOjE7XG4gICAgICAgIH1cbiAgICAgICAgaWYoIWNvbXApXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgIHZhciB4ID0gY29tcChhLGIsdG90YWwpO1xuICAgICAgICBpZih4ICE9IHgpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1NjogLy8gY29tcGFyZSBmdW5jdGlvblxuICAgICAgICB2YXIgeCA9IGEuY29tcGFyZShiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KSB7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIFVOT1JERVJFRFxuICAgICAgICAgIHJldHVybiB0b3RhbD8tMTp4O1xuICAgICAgICB9XG4gICAgICAgIGlmKHggIT09ICh4fDApKXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAwOiAvLyBOdW1iZXJcbiAgICAgICAgYSA9ICthO1xuICAgICAgICBiID0gK2I7XG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICBpZiAoYSAhPSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICBpZiAoYSA9PSBhKSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoYiA9PSBiKSByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwMDE6IC8vIFRoZSByZXN0XG4gICAgICAgIC8vIEhlcmUgd2UgY2FuIGJlIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gICAgICAgIC8vIDEuIEphdmFTY3JpcHQgcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vIDIuIEphdmFTY3JpcHQgb2JqZWN0IHRoYXQgY2FuIGJlIGNvZXJjZWQgdG8gcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vIDMuIEphdmFTY3JpcHQgb2JqZWN0IHRoYW4gY2Fubm90IGJlIGNvZXJjZWQgdG8gcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vXG4gICAgICAgIC8vICgzKSB3aWxsIHJhaXNlIGEgW1R5cGVFcnJvcl1cbiAgICAgICAgLy8gKDIpIHdpbGwgY29lcmNlIHRvIHByaW1pdGl2ZSB0eXBlcyB1c2luZyBbdmFsdWVPZl0gb3IgW3RvU3RyaW5nXVxuICAgICAgICAvLyAoMikgYW5kICgzKSwgYWZ0ZXIgZXZlbnR1YWwgY29lcmNpb25cbiAgICAgICAgLy8gLSBpZiBhIGFuZCBiIGFyZSBzdHJpbmdzLCBhcHBseSBsZXhpY29ncmFwaGljIGNvbXBhcmlzb25cbiAgICAgICAgLy8gLSBpZiBhIG9yIGIgYXJlIG5vdCBzdHJpbmdzLCBjb252ZXJ0IGEgYW5kIGIgdG8gbnVtYmVyXG4gICAgICAgIC8vICAgYW5kIGFwcGx5IHN0YW5kYXJkIGNvbXBhcmlzb25cbiAgICAgICAgLy9cbiAgICAgICAgLy8gRXhjZXB0aW9uOiBgIT1gIHdpbGwgbm90IGNvZXJjZS9jb252ZXJ0IGlmIGJvdGggYSBhbmQgYiBhcmUgb2JqZWN0c1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUxOiAvLyBKYXZhU2NyaXB0IFN5bWJvbCwgbm8gb3JkZXJpbmcuXG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyOiAvLyBvY2FtbCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhhKTtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGIpO1xuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZihhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTIwOiAvLyBqYXZhc2NyaXB0IHN0cmluZ3NcbiAgICAgICAgdmFyIGEgPSBhLnRvU3RyaW5nKCk7XG4gICAgICAgIHZhciBiID0gYi50b1N0cmluZygpO1xuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZihhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0NjogLy8gTGF6eV90YWdcbiAgICAgIGNhc2UgMjU0OiAvLyBEb3VibGVfYXJyYXlcbiAgICAgIGRlZmF1bHQ6IC8vIEJsb2NrIHdpdGggb3RoZXIgdGFnXG4gICAgICAgIGlmKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0YWdfYSkpIHtcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGEubGVuZ3RoICE9IGIubGVuZ3RoKSByZXR1cm4gKGEubGVuZ3RoIDwgYi5sZW5ndGgpPy0xOjE7XG4gICAgICAgIGlmIChhLmxlbmd0aCA+IDEpIHN0YWNrLnB1c2goYSwgYiwgMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3RhY2subGVuZ3RoID09IDApIHJldHVybiAwO1xuICAgIHZhciBpID0gc3RhY2sucG9wKCk7XG4gICAgYiA9IHN0YWNrLnBvcCgpO1xuICAgIGEgPSBzdGFjay5wb3AoKTtcbiAgICBpZiAoaSArIDEgPCBhLmxlbmd0aCkgc3RhY2sucHVzaChhLCBiLCBpICsgMSk7XG4gICAgYSA9IGFbaV07XG4gICAgYiA9IGJbaV07XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9jb21wYXJlIChhLCBiKSB7IHJldHVybiBjYW1sX2NvbXBhcmVfdmFsIChhLCBiLCB0cnVlKTsgfVxuLy9Qcm92aWRlczogY2FtbF9pbnRfY29tcGFyZSBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2ludF9jb21wYXJlIChhLCBiKSB7XG4gIGlmIChhIDwgYikgcmV0dXJuICgtMSk7IGlmIChhID09IGIpIHJldHVybiAwOyByZXR1cm4gMTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9lcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPT0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ub3RlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgIT0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcmVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcmVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA+PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVydGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJ0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA+IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3NlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3NlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPD0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc3RoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzdGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPCAwKTsgfVxuIiwiLy8vLy8vLy8vIEJJTl9QUk9UXG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhiaWdzdHJpbmcsIGkpe1xuICBpZiAoaSA+Pj4gMCA+PSBiaWdzdHJpbmcuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbn1cblxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9jaGVja19ib3VuZCwgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmdcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWIoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgY2FtbF9jaGVja19ib3VuZChkc3QsZHN0X3Bvcyk7IC8vIGZpcnN0IHBvc1xuICBjYW1sX2NoZWNrX2JvdW5kKGRzdCxkc3RfcG9zK2xlbi0xKTsgLy8gbGFzdCBwb3NcbiAgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoc3JjLCBzcmNfcG9zKTsgIC8qIGZpcnN0IHBvcyAqL1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhzcmMsIHNyY19wb3MgKyBsZW4gKiA4IC0gMSk7IC8qIGxhc3QgcG9zICovXG4gIHZhciB2aWV3ID0gbmV3IGpvb19nbG9iYWxfb2JqZWN0LkZsb2F0NjRBcnJheShsZW4pO1xuICB2YXIgYnVmZmVyID0gbmV3IGpvb19nbG9iYWxfb2JqZWN0LlVpbnQ4QXJyYXkodmlldy5idWZmZXIpO1xuICBidWZmZXIuc2V0KHNyYy5kYXRhLnN1YmFycmF5KHNyY19wb3MsIHNyY19wb3MgKyAobGVuICogOCkpKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICAvLyBbKyAxXSBiZWNhdXNlIHRoZSB0YWcgaXMgYXQgcG9zIDAgXG4gICAgZHN0W2RzdF9wb3MraSsxXSA9IHZpZXdbaV07XG4gIH1cbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnVmX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfYnVmX2J5dGVzX3N0dWIoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pO1xufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9jaGVja19ib3VuZCwgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmdcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfZmxvYXRfYXJyYXlfYnVmX3N0dWIoc3JjX3BvcyxzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgaWYobGVuID09IDApIHJldHVybiAwIFxuICBjYW1sX2NoZWNrX2JvdW5kIChzcmMsIHNyY19wb3MpOyAvLyBmaXJzdCBwb3MgXG4gIGNhbWxfY2hlY2tfYm91bmQgKHNyYywgc3JjX3BvcyArIGxlbiAtIDEpOyAvLyBsYXN0IHBvc1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhkc3QsIGRzdF9wb3MpOyAvKiBmaXJzdCBwb3MgKi9cbiAgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoZHN0LCBkc3RfcG9zICsgbGVuICogOCAtIDEpOyAvKiBsYXN0IHBvcyAqL1xuICAvLyBbKyAxXSBiZWNhdXNlIHRoZSB0YWcgaXMgYXQgcG9zIDBcbiAgc3JjX3BvcyA9IHNyY19wb3MgKyAxXG4gIHZhciBmbG9hdDY0ID0gbmV3IGpvb19nbG9iYWxfb2JqZWN0LkZsb2F0NjRBcnJheShzcmMuc2xpY2Uoc3JjX3BvcyxzcmNfcG9zICsgbGVuKSk7XG4gIHZhciBmbG9hdDY0X3VpbnQ4ID0gbmV3IGpvb19nbG9iYWxfb2JqZWN0LlVpbnQ4QXJyYXkoZmxvYXQ2NC5idWZmZXIpO1xuICB2YXIgdmlldyA9IGRzdC5kYXRhLnN1YmFycmF5KGRzdF9wb3MsIGRzdF9wb3MgKyAobGVuICogOCkpO1xuICB2aWV3LnNldChmbG9hdDY0X3VpbnQ4KTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfc3RyaW5nX2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIgKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLHNyY19wb3MsIGRzdCwgZHN0X3BvcyxsZW4pO1xufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfYnl0ZXNfYnVmX3N0dWIgKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLHNyY19wb3MsIGRzdCwgZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhLCBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfYnVmX3N0dWIgKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICAvLyBbYmluX3Byb3RfYmxpdF9idWZfc3R1Yl0gaXMgdXNlZCB3aXRoIG1peGVkIGJpZ2FycmF5IGtpbmRzLlxuICAvLyBDb252ZXJ0ZXIgZXZlcnl0aGluZyB0byBiaWdhcnJheSBvZiBjaGFyIGJlZm9yZSB0aGUgYmxpdC5cbiAgaWYoc3JjLmtpbmQgIT0gMTIpIC8vIDEyIGlzIHRoZSBjaGFyIGtpbmRcbiAgICBzcmMgPSBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoc3JjLmRhdGEpO1xuICBpZihkc3Qua2luZCAhPSAxMikgLy8gMTIgaXMgdGhlIGNoYXIga2luZFxuICAgIGRzdCA9IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShkc3QuZGF0YSk7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKHNyYyxzcmNfcG9zLGRzdCxkc3RfcG9zLGxlbik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEFycmF5XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc3ViIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc3ViIChhLCBpLCBsZW4pIHtcbiAgdmFyIGEyID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYTJbMF09MDtcbiAgZm9yKHZhciBpMiA9IDEsIGkxPSBpKzE7IGkyIDw9IGxlbjsgaTIrKyxpMSsrICl7XG4gICAgYTJbaTJdPWFbaTFdO1xuICB9XG4gIHJldHVybiBhMjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9hcHBlbmQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKSB7XG4gIHZhciBsMSA9IGExLmxlbmd0aCwgbDIgPSBhMi5sZW5ndGg7XG4gIHZhciBsID0gbDErbDItMVxuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IDA7XG4gIHZhciBpID0gMSxqID0gMTtcbiAgZm9yKDtpPGwxO2krKykgYVtpXT1hMVtpXTtcbiAgZm9yKDtpPGw7aSsrLGorKykgYVtpXT1hMltqXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfY29uY2F0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfY29uY2F0KGwpIHtcbiAgdmFyIGEgPSBbMF07XG4gIHdoaWxlIChsICE9PSAwKSB7XG4gICAgdmFyIGIgPSBsWzFdO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYi5sZW5ndGg7IGkrKykgYS5wdXNoKGJbaV0pO1xuICAgIGwgPSBsWzJdO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy8vLy8vLy8vLy8vLyBQZXJ2YXNpdmVcbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc2V0IChtdXRhYmxlLCBjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc2V0IChhcnJheSwgaW5kZXgsIG5ld3ZhbCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGFycmF5W2luZGV4KzFdPW5ld3ZhbDsgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZ2V0IG11dGFibGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9nZXQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheVtpbmRleCsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9maWxsXG5mdW5jdGlvbiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KXtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBhcnJheVtvZnMraSsxXSA9IHY7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hlY2tfYm91bmQgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZCAoYXJyYXksIGluZGV4KSB7XG4gIGlmIChpbmRleCA+Pj4gMCA+PSBhcnJheS5sZW5ndGggLSAxKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3ZlY3QgY29uc3QgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX3ZlY3QgKGxlbiwgaW5pdCkge1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IGluaXQ7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfZmxvYXRfdmVjdCBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfZmxvYXRfdmVjdChsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9jcmVhdGUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2NyZWF0ZShsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbiIsIi8vUHJvdmlkZXM6IGJsYWtlMmJcbi8vVmVyc2lvbjogPj0gNS4yXG52YXIgYmxha2UyYiA9IChmdW5jdGlvbiAoKSB7XG4vLyBCbGFrZTJCIGluIHB1cmUgSmF2YXNjcmlwdFxuLy8gQWRhcHRlZCBmcm9tIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaW4gUkZDNzY5M1xuLy8gUG9ydGVkIHRvIEphdmFzY3JpcHQgYnkgREMgLSBodHRwczovL2dpdGh1Yi5jb20vZGNwb3NjaFxuXG4vLyA2NC1iaXQgdW5zaWduZWQgYWRkaXRpb25cbi8vIFNldHMgdlthLGErMV0gKz0gdltiLGIrMV1cbi8vIHYgc2hvdWxkIGJlIGEgVWludDMyQXJyYXlcbmZ1bmN0aW9uIEFERDY0QUEgKHYsIGEsIGIpIHtcbiAgY29uc3QgbzAgPSB2W2FdICsgdltiXVxuICBsZXQgbzEgPSB2W2EgKyAxXSArIHZbYiArIDFdXG4gIGlmIChvMCA+PSAweDEwMDAwMDAwMCkge1xuICAgIG8xKytcbiAgfVxuICB2W2FdID0gbzBcbiAgdlthICsgMV0gPSBvMVxufVxuXG4vLyA2NC1iaXQgdW5zaWduZWQgYWRkaXRpb25cbi8vIFNldHMgdlthLGErMV0gKz0gYlxuLy8gYjAgaXMgdGhlIGxvdyAzMiBiaXRzIG9mIGIsIGIxIHJlcHJlc2VudHMgdGhlIGhpZ2ggMzIgYml0c1xuZnVuY3Rpb24gQURENjRBQyAodiwgYSwgYjAsIGIxKSB7XG4gIGxldCBvMCA9IHZbYV0gKyBiMFxuICBpZiAoYjAgPCAwKSB7XG4gICAgbzAgKz0gMHgxMDAwMDAwMDBcbiAgfVxuICBsZXQgbzEgPSB2W2EgKyAxXSArIGIxXG4gIGlmIChvMCA+PSAweDEwMDAwMDAwMCkge1xuICAgIG8xKytcbiAgfVxuICB2W2FdID0gbzBcbiAgdlthICsgMV0gPSBvMVxufVxuXG4vLyBMaXR0bGUtZW5kaWFuIGJ5dGUgYWNjZXNzXG5mdW5jdGlvbiBCMkJfR0VUMzIgKGFyciwgaSkge1xuICByZXR1cm4gYXJyW2ldIF4gKGFycltpICsgMV0gPDwgOCkgXiAoYXJyW2kgKyAyXSA8PCAxNikgXiAoYXJyW2kgKyAzXSA8PCAyNClcbn1cblxuLy8gRyBNaXhpbmcgZnVuY3Rpb25cbi8vIFRoZSBST1RScyBhcmUgaW5saW5lZCBmb3Igc3BlZWRcbmZ1bmN0aW9uIEIyQl9HIChhLCBiLCBjLCBkLCBpeCwgaXkpIHtcbiAgY29uc3QgeDAgPSBtW2l4XVxuICBjb25zdCB4MSA9IG1baXggKyAxXVxuICBjb25zdCB5MCA9IG1baXldXG4gIGNvbnN0IHkxID0gbVtpeSArIDFdXG5cbiAgQURENjRBQSh2LCBhLCBiKSAvLyB2W2EsYSsxXSArPSB2W2IsYisxXSAuLi4gaW4gSlMgd2UgbXVzdCBzdG9yZSBhIHVpbnQ2NCBhcyB0d28gdWludDMyc1xuICBBREQ2NEFDKHYsIGEsIHgwLCB4MSkgLy8gdlthLCBhKzFdICs9IHggLi4uIHgwIGlzIHRoZSBsb3cgMzIgYml0cyBvZiB4LCB4MSBpcyB0aGUgaGlnaCAzMiBiaXRzXG5cbiAgLy8gdltkLGQrMV0gPSAodltkLGQrMV0geG9yIHZbYSxhKzFdKSByb3RhdGVkIHRvIHRoZSByaWdodCBieSAzMiBiaXRzXG4gIGxldCB4b3IwID0gdltkXSBeIHZbYV1cbiAgbGV0IHhvcjEgPSB2W2QgKyAxXSBeIHZbYSArIDFdXG4gIHZbZF0gPSB4b3IxXG4gIHZbZCArIDFdID0geG9yMFxuXG4gIEFERDY0QUEodiwgYywgZClcblxuICAvLyB2W2IsYisxXSA9ICh2W2IsYisxXSB4b3IgdltjLGMrMV0pIHJvdGF0ZWQgcmlnaHQgYnkgMjQgYml0c1xuICB4b3IwID0gdltiXSBeIHZbY11cbiAgeG9yMSA9IHZbYiArIDFdIF4gdltjICsgMV1cbiAgdltiXSA9ICh4b3IwID4+PiAyNCkgXiAoeG9yMSA8PCA4KVxuICB2W2IgKyAxXSA9ICh4b3IxID4+PiAyNCkgXiAoeG9yMCA8PCA4KVxuXG4gIEFERDY0QUEodiwgYSwgYilcbiAgQURENjRBQyh2LCBhLCB5MCwgeTEpXG5cbiAgLy8gdltkLGQrMV0gPSAodltkLGQrMV0geG9yIHZbYSxhKzFdKSByb3RhdGVkIHJpZ2h0IGJ5IDE2IGJpdHNcbiAgeG9yMCA9IHZbZF0gXiB2W2FdXG4gIHhvcjEgPSB2W2QgKyAxXSBeIHZbYSArIDFdXG4gIHZbZF0gPSAoeG9yMCA+Pj4gMTYpIF4gKHhvcjEgPDwgMTYpXG4gIHZbZCArIDFdID0gKHhvcjEgPj4+IDE2KSBeICh4b3IwIDw8IDE2KVxuXG4gIEFERDY0QUEodiwgYywgZClcblxuICAvLyB2W2IsYisxXSA9ICh2W2IsYisxXSB4b3IgdltjLGMrMV0pIHJvdGF0ZWQgcmlnaHQgYnkgNjMgYml0c1xuICB4b3IwID0gdltiXSBeIHZbY11cbiAgeG9yMSA9IHZbYiArIDFdIF4gdltjICsgMV1cbiAgdltiXSA9ICh4b3IxID4+PiAzMSkgXiAoeG9yMCA8PCAxKVxuICB2W2IgKyAxXSA9ICh4b3IwID4+PiAzMSkgXiAoeG9yMSA8PCAxKVxufVxuXG4vLyBJbml0aWFsaXphdGlvbiBWZWN0b3JcbmNvbnN0IEJMQUtFMkJfSVYzMiA9IG5ldyBVaW50MzJBcnJheShbXG4gIDB4ZjNiY2M5MDgsIDB4NmEwOWU2NjcsIDB4ODRjYWE3M2IsIDB4YmI2N2FlODUsIDB4ZmU5NGY4MmIsIDB4M2M2ZWYzNzIsXG4gIDB4NWYxZDM2ZjEsIDB4YTU0ZmY1M2EsIDB4YWRlNjgyZDEsIDB4NTEwZTUyN2YsIDB4MmIzZTZjMWYsIDB4OWIwNTY4OGMsXG4gIDB4ZmI0MWJkNmIsIDB4MWY4M2Q5YWIsIDB4MTM3ZTIxNzksIDB4NWJlMGNkMTlcbl0pXG5cbmNvbnN0IFNJR01BOCA9IFtcbiAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTQsIDEwLCA0LCA4LCA5LCAxNSwgMTMsXG4gIDYsIDEsIDEyLCAwLCAyLCAxMSwgNywgNSwgMywgMTEsIDgsIDEyLCAwLCA1LCAyLCAxNSwgMTMsIDEwLCAxNCwgMywgNiwgNywgMSxcbiAgOSwgNCwgNywgOSwgMywgMSwgMTMsIDEyLCAxMSwgMTQsIDIsIDYsIDUsIDEwLCA0LCAwLCAxNSwgOCwgOSwgMCwgNSwgNywgMiwgNCxcbiAgMTAsIDE1LCAxNCwgMSwgMTEsIDEyLCA2LCA4LCAzLCAxMywgMiwgMTIsIDYsIDEwLCAwLCAxMSwgOCwgMywgNCwgMTMsIDcsIDUsXG4gIDE1LCAxNCwgMSwgOSwgMTIsIDUsIDEsIDE1LCAxNCwgMTMsIDQsIDEwLCAwLCA3LCA2LCAzLCA5LCAyLCA4LCAxMSwgMTMsIDExLCA3LFxuICAxNCwgMTIsIDEsIDMsIDksIDUsIDAsIDE1LCA0LCA4LCA2LCAyLCAxMCwgNiwgMTUsIDE0LCA5LCAxMSwgMywgMCwgOCwgMTIsIDIsXG4gIDEzLCA3LCAxLCA0LCAxMCwgNSwgMTAsIDIsIDgsIDQsIDcsIDYsIDEsIDUsIDE1LCAxMSwgOSwgMTQsIDMsIDEyLCAxMywgMCwgMCxcbiAgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTQsIDEwLCA0LCA4LCA5LCAxNSwgMTMsIDYsXG4gIDEsIDEyLCAwLCAyLCAxMSwgNywgNSwgM1xuXVxuXG4vLyBUaGVzZSBhcmUgb2Zmc2V0cyBpbnRvIGEgdWludDY0IGJ1ZmZlci5cbi8vIE11bHRpcGx5IHRoZW0gYWxsIGJ5IDIgdG8gbWFrZSB0aGVtIG9mZnNldHMgaW50byBhIHVpbnQzMiBidWZmZXIsXG4vLyBiZWNhdXNlIHRoaXMgaXMgSmF2YXNjcmlwdCBhbmQgd2UgZG9uJ3QgaGF2ZSB1aW50NjRzXG5jb25zdCBTSUdNQTgyID0gbmV3IFVpbnQ4QXJyYXkoXG4gIFNJR01BOC5tYXAoZnVuY3Rpb24gKHgpIHtcbiAgICByZXR1cm4geCAqIDJcbiAgfSlcbilcblxuLy8gQ29tcHJlc3Npb24gZnVuY3Rpb24uICdsYXN0JyBmbGFnIGluZGljYXRlcyBsYXN0IGJsb2NrLlxuLy8gTm90ZSB3ZSdyZSByZXByZXNlbnRpbmcgMTYgdWludDY0cyBhcyAzMiB1aW50MzJzXG5jb25zdCB2ID0gbmV3IFVpbnQzMkFycmF5KDMyKVxuY29uc3QgbSA9IG5ldyBVaW50MzJBcnJheSgzMilcbmZ1bmN0aW9uIGJsYWtlMmJDb21wcmVzcyAoY3R4LCBsYXN0KSB7XG4gIGxldCBpID0gMFxuXG4gIC8vIGluaXQgd29yayB2YXJpYWJsZXNcbiAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHtcbiAgICB2W2ldID0gY3R4LmhbaV1cbiAgICB2W2kgKyAxNl0gPSBCTEFLRTJCX0lWMzJbaV1cbiAgfVxuXG4gIC8vIGxvdyA2NCBiaXRzIG9mIG9mZnNldFxuICB2WzI0XSA9IHZbMjRdIF4gY3R4LnRcbiAgdlsyNV0gPSB2WzI1XSBeIChjdHgudCAvIDB4MTAwMDAwMDAwKVxuICAvLyBoaWdoIDY0IGJpdHMgbm90IHN1cHBvcnRlZCwgb2Zmc2V0IG1heSBub3QgYmUgaGlnaGVyIHRoYW4gMioqNTMtMVxuXG4gIC8vIGxhc3QgYmxvY2sgZmxhZyBzZXQgP1xuICBpZiAobGFzdCkge1xuICAgIHZbMjhdID0gfnZbMjhdXG4gICAgdlsyOV0gPSB+dlsyOV1cbiAgfVxuXG4gIC8vIGdldCBsaXR0bGUtZW5kaWFuIHdvcmRzXG4gIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKSB7XG4gICAgbVtpXSA9IEIyQl9HRVQzMihjdHguYiwgNCAqIGkpXG4gIH1cblxuICAvLyB0d2VsdmUgcm91bmRzIG9mIG1peGluZ1xuICAvLyB1bmNvbW1lbnQgdGhlIERlYnVnUHJpbnQgY2FsbHMgdG8gbG9nIHRoZSBjb21wdXRhdGlvblxuICAvLyBhbmQgbWF0Y2ggdGhlIFJGQyBzYW1wbGUgZG9jdW1lbnRhdGlvblxuICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgIEIyQl9HKDAsIDgsIDE2LCAyNCwgU0lHTUE4MltpICogMTYgKyAwXSwgU0lHTUE4MltpICogMTYgKyAxXSlcbiAgICBCMkJfRygyLCAxMCwgMTgsIDI2LCBTSUdNQTgyW2kgKiAxNiArIDJdLCBTSUdNQTgyW2kgKiAxNiArIDNdKVxuICAgIEIyQl9HKDQsIDEyLCAyMCwgMjgsIFNJR01BODJbaSAqIDE2ICsgNF0sIFNJR01BODJbaSAqIDE2ICsgNV0pXG4gICAgQjJCX0coNiwgMTQsIDIyLCAzMCwgU0lHTUE4MltpICogMTYgKyA2XSwgU0lHTUE4MltpICogMTYgKyA3XSlcbiAgICBCMkJfRygwLCAxMCwgMjAsIDMwLCBTSUdNQTgyW2kgKiAxNiArIDhdLCBTSUdNQTgyW2kgKiAxNiArIDldKVxuICAgIEIyQl9HKDIsIDEyLCAyMiwgMjQsIFNJR01BODJbaSAqIDE2ICsgMTBdLCBTSUdNQTgyW2kgKiAxNiArIDExXSlcbiAgICBCMkJfRyg0LCAxNCwgMTYsIDI2LCBTSUdNQTgyW2kgKiAxNiArIDEyXSwgU0lHTUE4MltpICogMTYgKyAxM10pXG4gICAgQjJCX0coNiwgOCwgMTgsIDI4LCBTSUdNQTgyW2kgKiAxNiArIDE0XSwgU0lHTUE4MltpICogMTYgKyAxNV0pXG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykge1xuICAgIGN0eC5oW2ldID0gY3R4LmhbaV0gXiB2W2ldIF4gdltpICsgMTZdXG4gIH1cbn1cblxuLy8gcmV1c2FibGUgcGFyYW1ldGVyQmxvY2tcbmNvbnN0IHBhcmFtZXRlckJsb2NrID0gbmV3IFVpbnQ4QXJyYXkoW1xuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAgMDogb3V0bGVuLCBrZXlsZW4sIGZhbm91dCwgZGVwdGhcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gIDQ6IGxlYWYgbGVuZ3RoLCBzZXF1ZW50aWFsIG1vZGVcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gIDg6IG5vZGUgb2Zmc2V0XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDEyOiBub2RlIG9mZnNldFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAxNjogbm9kZSBkZXB0aCwgaW5uZXIgbGVuZ3RoLCByZnVcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMjA6IHJmdVxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAyNDogcmZ1XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDI4OiByZnVcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMzI6IHNhbHRcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMzY6IHNhbHRcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gNDA6IHNhbHRcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gNDQ6IHNhbHRcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gNDg6IHBlcnNvbmFsXG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDUyOiBwZXJzb25hbFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyA1NjogcGVyc29uYWxcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCAvLyA2MDogcGVyc29uYWxcbl0pXG5cbi8vIENyZWF0ZXMgYSBCTEFLRTJiIGhhc2hpbmcgY29udGV4dFxuLy8gUmVxdWlyZXMgYW4gb3V0cHV0IGxlbmd0aCBiZXR3ZWVuIDEgYW5kIDY0IGJ5dGVzXG4vLyBUYWtlcyBhbiBvcHRpb25hbCBVaW50OEFycmF5IGtleVxuZnVuY3Rpb24gYmxha2UyYkluaXQgKG91dGxlbiwga2V5KSB7XG4gIGlmIChvdXRsZW4gPT09IDAgfHwgb3V0bGVuID4gNjQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgb3V0cHV0IGxlbmd0aCwgZXhwZWN0ZWQgMCA8IGxlbmd0aCA8PSA2NCcpXG4gIH1cbiAgaWYgKGtleS5sZW5ndGggPiA2NCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSWxsZWdhbCBrZXksIGV4cGVjdGVkIFVpbnQ4QXJyYXkgd2l0aCAwIDwgbGVuZ3RoIDw9IDY0JylcbiAgfVxuXG4gIC8vIHN0YXRlLCAncGFyYW0gYmxvY2snXG4gIGNvbnN0IGN0eCA9IHtcbiAgICBiOiBuZXcgVWludDhBcnJheSgxMjgpLFxuICAgIGg6IG5ldyBVaW50MzJBcnJheSgxNiksXG4gICAgdDogMCwgLy8gaW5wdXQgY291bnRcbiAgICBjOiAwLCAvLyBwb2ludGVyIHdpdGhpbiBidWZmZXJcbiAgICBvdXRsZW46IG91dGxlbiAvLyBvdXRwdXQgbGVuZ3RoIGluIGJ5dGVzXG4gIH1cblxuICAvLyBpbml0aWFsaXplIHBhcmFtZXRlckJsb2NrIGJlZm9yZSB1c2FnZVxuICBwYXJhbWV0ZXJCbG9jay5maWxsKDApXG4gIHBhcmFtZXRlckJsb2NrWzBdID0gb3V0bGVuXG4gIHBhcmFtZXRlckJsb2NrWzFdID0ga2V5Lmxlbmd0aFxuICBwYXJhbWV0ZXJCbG9ja1syXSA9IDEgLy8gZmFub3V0XG4gIHBhcmFtZXRlckJsb2NrWzNdID0gMSAvLyBkZXB0aFxuXG4gIC8vIGluaXRpYWxpemUgaGFzaCBzdGF0ZVxuICBmb3IgKGxldCBpID0gMDsgaSA8IDE2OyBpKyspIHtcbiAgICBjdHguaFtpXSA9IEJMQUtFMkJfSVYzMltpXSBeIEIyQl9HRVQzMihwYXJhbWV0ZXJCbG9jaywgaSAqIDQpXG4gIH1cblxuXG5cbiAgaWYoa2V5Lmxlbmd0aCA+IDApe1xuICAgIGJsYWtlMmJVcGRhdGUoY3R4LCBrZXkpXG4gICAgLy8gYXQgdGhlIGVuZFxuICAgIGN0eC5jID0gMTI4XG4gIH1cblxuICByZXR1cm4gY3R4XG59XG5cbi8vIFVwZGF0ZXMgYSBCTEFLRTJiIHN0cmVhbWluZyBoYXNoXG4vLyBSZXF1aXJlcyBoYXNoIGNvbnRleHQgYW5kIFVpbnQ4QXJyYXkgKGJ5dGUgYXJyYXkpXG5mdW5jdGlvbiBibGFrZTJiVXBkYXRlIChjdHgsIGlucHV0KSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoY3R4LmMgPT09IDEyOCkge1xuICAgICAgLy8gYnVmZmVyIGZ1bGwgP1xuICAgICAgY3R4LnQgKz0gY3R4LmMgLy8gYWRkIGNvdW50ZXJzXG4gICAgICBibGFrZTJiQ29tcHJlc3MoY3R4LCBmYWxzZSkgLy8gY29tcHJlc3MgKG5vdCBsYXN0KVxuICAgICAgY3R4LmMgPSAwIC8vIGNvdW50ZXIgdG8gemVyb1xuICAgIH1cbiAgICBjdHguYltjdHguYysrXSA9IGlucHV0W2ldXG4gIH1cbn1cblxuLy8gQ29tcGxldGVzIGEgQkxBS0UyYiBzdHJlYW1pbmcgaGFzaFxuLy8gUmV0dXJucyBhIFVpbnQ4QXJyYXkgY29udGFpbmluZyB0aGUgbWVzc2FnZSBkaWdlc3RcbmZ1bmN0aW9uIGJsYWtlMmJGaW5hbCAoY3R4KSB7XG4gIGN0eC50ICs9IGN0eC5jIC8vIG1hcmsgbGFzdCBibG9jayBvZmZzZXRcblxuICB3aGlsZSAoY3R4LmMgPCAxMjgpIHtcbiAgICAvLyBmaWxsIHVwIHdpdGggemVyb3NcbiAgICBjdHguYltjdHguYysrXSA9IDBcbiAgfVxuICBibGFrZTJiQ29tcHJlc3MoY3R4LCB0cnVlKSAvLyBmaW5hbCBibG9jayBmbGFnID0gMVxuXG4gIC8vIGxpdHRsZSBlbmRpYW4gY29udmVydCBhbmQgc3RvcmVcbiAgY29uc3Qgb3V0ID0gbmV3IFVpbnQ4QXJyYXkoY3R4Lm91dGxlbilcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdHgub3V0bGVuOyBpKyspIHtcbiAgICBvdXRbaV0gPSBjdHguaFtpID4+IDJdID4+ICg4ICogKGkgJiAzKSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG4gIHJldHVybiB7SW5pdDpibGFrZTJiSW5pdCwgVXBkYXRlOmJsYWtlMmJVcGRhdGUsIEZpbmFsOmJsYWtlMmJGaW5hbH1cbn0pKClcblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogYmxha2UyYlxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfYmxha2UyX2NyZWF0ZShoYXNobGVuLCBrZXkpe1xuICBrZXkgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhrZXkpO1xuICBpZihrZXkubGVuZ3RoID4gNjQpIHtcbiAgICBrZXkuc3ViYXJyYXkoMCw2NCk7XG4gIH1cbiAgcmV0dXJuIGJsYWtlMmIuSW5pdChoYXNobGVuLCBrZXkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsYWtlMl9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGJsYWtlMmJcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX2JsYWtlMl9maW5hbChjdHgsIGhhc2hsZW4pIHtcbiAgdmFyIHIgPSBibGFrZTJiLkZpbmFsKGN0eCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfdXBkYXRlXG4vL1JlcXVpcmVzOiBibGFrZTJiXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pe1xuICB2YXIgaW5wdXQgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhidWYpO1xuICBpbnB1dCA9IGlucHV0LnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKTtcbiAgYmxha2UyYi5VcGRhdGUoY3R4LCBpbnB1dCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxha2UyX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl91cGRhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX2ZpbmFsXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9ibGFrZTJfc3RyaW5nKGhhc2hsZW4sIGtleSwgYnVmLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9ibGFrZTJfY3JlYXRlIChoYXNobGVuLCBrZXkpO1xuICBjYW1sX2JsYWtlMl91cGRhdGUoY3R4LCBidWYsIG9mcywgbGVuKTtcbiAgcmV0dXJuIGNhbWxfYmxha2UyX2ZpbmFsKGN0eCwgaGFzaGxlbik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfY2hhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1SW5pdCwgY2FtbF9NRDVVcGRhdGUsIGNhbWxfTUQ1RmluYWxcbmZ1bmN0aW9uIGNhbWxfbWQ1X2NoYW4oY2hhbmlkLHRvcmVhZCl7XG4gIHZhciBjdHggPSBjYW1sX01ENUluaXQoKTtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDQwOTYpO1xuICBpZih0b3JlYWQgPCAwKXtcbiAgICB3aGlsZSh0cnVlKXtcbiAgICAgIHZhciByZWFkID0gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsYnVmZmVyLDAsYnVmZmVyLmxlbmd0aCk7XG4gICAgICBpZihyZWFkID09IDApIGJyZWFrO1xuICAgICAgY2FtbF9NRDVVcGRhdGUoY3R4LGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlKHRvcmVhZCA+IDApIHtcbiAgICAgIHZhciByZWFkID0gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsYnVmZmVyLDAsICh0b3JlYWQgPiBidWZmZXIubGVuZ3RoID8gYnVmZmVyLmxlbmd0aCA6IHRvcmVhZCkpO1xuICAgICAgaWYocmVhZCA9PSAwKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICAgIHRvcmVhZCAtPSByZWFkXG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShjYW1sX01ENUZpbmFsKGN0eCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX21kNV9ieXRlc1xuZnVuY3Rpb24gY2FtbF9tZDVfc3RyaW5nKHMsIG9mcywgbGVuKSB7XG4gIHJldHVybiBjYW1sX21kNV9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhzKSxvZnMsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVUcmFuc2Zvcm1cbnZhciBjYW1sX01ENVRyYW5zZm9ybSA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGFkZCAoeCwgeSkgeyByZXR1cm4gKHggKyB5KSB8IDA7IH1cbiAgZnVuY3Rpb24geHgocSxhLGIseCxzLHQpIHtcbiAgICBhID0gYWRkKGFkZChhLCBxKSwgYWRkKHgsIHQpKTtcbiAgICByZXR1cm4gYWRkKChhIDw8IHMpIHwgKGEgPj4+ICgzMiAtIHMpKSwgYik7XG4gIH1cbiAgZnVuY3Rpb24gZmYoYSxiLGMsZCx4LHMsdCkge1xuICAgIHJldHVybiB4eCgoYiAmIGMpIHwgKCh+YikgJiBkKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gZ2coYSxiLGMsZCx4LHMsdCkge1xuICAgIHJldHVybiB4eCgoYiAmIGQpIHwgKGMgJiAofmQpKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gaGgoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYiBeIGMgXiBkLCBhLCBiLCB4LCBzLCB0KTsgfVxuICBmdW5jdGlvbiBpaShhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChjIF4gKGIgfCAofmQpKSwgYSwgYiwgeCwgcywgdCk7IH1cblxuICByZXR1cm4gZnVuY3Rpb24gKHcsIGJ1ZmZlcikge1xuICAgIHZhciBhID0gd1swXSwgYiA9IHdbMV0sIGMgPSB3WzJdLCBkID0gd1szXTtcblxuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDBdLCA3LCAweEQ3NkFBNDc4KTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyAxXSwgMTIsIDB4RThDN0I3NTYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbIDJdLCAxNywgMHgyNDIwNzBEQik7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsgM10sIDIyLCAweEMxQkRDRUVFKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyA0XSwgNywgMHhGNTdDMEZBRik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNV0sIDEyLCAweDQ3ODdDNjJBKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWyA2XSwgMTcsIDB4QTgzMDQ2MTMpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbIDddLCAyMiwgMHhGRDQ2OTUwMSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOF0sIDcsIDB4Njk4MDk4RDgpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDldLCAxMiwgMHg4QjQ0RjdBRik7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMF0sIDE3LCAweEZGRkY1QkIxKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzExXSwgMjIsIDB4ODk1Q0Q3QkUpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbMTJdLCA3LCAweDZCOTAxMTIyKTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWzEzXSwgMTIsIDB4RkQ5ODcxOTMpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTRdLCAxNywgMHhBNjc5NDM4RSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNV0sIDIyLCAweDQ5QjQwODIxKTtcblxuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDFdLCA1LCAweEY2MUUyNTYyKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWyA2XSwgOSwgMHhDMDQwQjM0MCk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMV0sIDE0LCAweDI2NUU1QTUxKTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyAwXSwgMjAsIDB4RTlCNkM3QUEpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDVdLCA1LCAweEQ2MkYxMDVEKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzEwXSwgOSwgMHgwMjQ0MTQ1Myk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE0LCAweEQ4QTFFNjgxKTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyA0XSwgMjAsIDB4RTdEM0ZCQzgpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDldLCA1LCAweDIxRTFDREU2KTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzE0XSwgOSwgMHhDMzM3MDdENik7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsgM10sIDE0LCAweEY0RDUwRDg3KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyA4XSwgMjAsIDB4NDU1QTE0RUQpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbMTNdLCA1LCAweEE5RTNFOTA1KTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWyAyXSwgOSwgMHhGQ0VGQTNGOCk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsgN10sIDE0LCAweDY3NkYwMkQ5KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzEyXSwgMjAsIDB4OEQyQTRDOEEpO1xuXG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNV0sIDQsIDB4RkZGQTM5NDIpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDhdLCAxMSwgMHg4NzcxRjY4MSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMV0sIDE2LCAweDZEOUQ2MTIyKTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzE0XSwgMjMsIDB4RkRFNTM4MEMpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDFdLCA0LCAweEE0QkVFQTQ0KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyA0XSwgMTEsIDB4NEJERUNGQTkpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbIDddLCAxNiwgMHhGNkJCNEI2MCk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMF0sIDIzLCAweEJFQkZCQzcwKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWzEzXSwgNCwgMHgyODlCN0VDNik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMF0sIDExLCAweEVBQTEyN0ZBKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWyAzXSwgMTYsIDB4RDRFRjMwODUpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbIDZdLCAyMywgMHgwNDg4MUQwNSk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOV0sIDQsIDB4RDlENEQwMzkpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbMTJdLCAxMSwgMHhFNkRCOTlFNSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE2LCAweDFGQTI3Q0Y4KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWyAyXSwgMjMsIDB4QzRBQzU2NjUpO1xuXG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMF0sIDYsIDB4RjQyOTIyNDQpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbIDddLCAxMCwgMHg0MzJBRkY5Nyk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE1LCAweEFCOTQyM0E3KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyA1XSwgMjEsIDB4RkM5M0EwMzkpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbMTJdLCA2LCAweDY1NUI1OUMzKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWyAzXSwgMTAsIDB4OEYwQ0NDOTIpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNSwgMHhGRkVGRjQ3RCk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMV0sIDIxLCAweDg1ODQ1REQxKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyA4XSwgNiwgMHg2RkE4N0U0Rik7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNV0sIDEwLCAweEZFMkNFNkUwKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWyA2XSwgMTUsIDB4QTMwMTQzMTQpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbMTNdLCAyMSwgMHg0RTA4MTFBMSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNF0sIDYsIDB4Rjc1MzdFODIpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTFdLCAxMCwgMHhCRDNBRjIzNSk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsgMl0sIDE1LCAweDJBRDdEMkJCKTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyA5XSwgMjEsIDB4RUI4NkQzOTEpO1xuXG4gICAgd1swXSA9IGFkZChhLCB3WzBdKTtcbiAgICB3WzFdID0gYWRkKGIsIHdbMV0pO1xuICAgIHdbMl0gPSBhZGQoYywgd1syXSk7XG4gICAgd1szXSA9IGFkZChkLCB3WzNdKTtcbiAgfX0pKClcblxuLy9Qcm92aWRlczogY2FtbF9NRDVJbml0XG5mdW5jdGlvbiBjYW1sX01ENUluaXQoKSB7XG4gIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNjQpO1xuICB2YXIgYjMyID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlcik7XG4gIHZhciBiOCA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG4gIHJldHVybiB7bGVuOjAsXG4gICAgICAgICAgdzpuZXcgVWludDMyQXJyYXkoWzB4Njc0NTIzMDEsIDB4RUZDREFCODksIDB4OThCQURDRkUsIDB4MTAzMjU0NzZdKSxcbiAgICAgICAgICBiMzI6YjMyLFxuICAgICAgICAgIGI4OmI4fVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVVwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9NRDVUcmFuc2Zvcm1cbmZ1bmN0aW9uIGNhbWxfTUQ1VXBkYXRlKGN0eCwgaW5wdXQsIGlucHV0X2xlbil7XG4gIHZhciBpbl9idWYgPSBjdHgubGVuICYgMHgzZjtcbiAgdmFyIGlucHV0X3BvcyA9IDA7XG4gIGN0eC5sZW4gKz0gaW5wdXRfbGVuO1xuICBpZihpbl9idWYpe1xuICAgIHZhciBtaXNzaW5nID0gNjQgLSBpbl9idWY7XG4gICAgaWYoaW5wdXRfbGVuIDwgbWlzc2luZykge1xuICAgICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLGlucHV0X2xlbiksaW5fYnVmKTtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KDAsbWlzc2luZyksaW5fYnVmKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IG1pc3Npbmc7XG4gICAgaW5wdXRfcG9zICs9IG1pc3Npbmc7XG4gIH1cbiAgd2hpbGUoaW5wdXRfbGVuID49IDY0KXtcbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KGlucHV0X3BvcyxpbnB1dF9wb3MgKyA2NCksIDApO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gNjQ7XG4gICAgaW5wdXRfcG9zICs9IDY0O1xuICB9XG4gIGlmKGlucHV0X2xlbilcbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KGlucHV0X3BvcyxpbnB1dF9wb3MgKyBpbnB1dF9sZW4pLCAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVGaW5hbFxuLy9SZXF1aXJlczogY2FtbF9NRDVUcmFuc2Zvcm1cbmZ1bmN0aW9uIGNhbWxfTUQ1RmluYWwoY3R4KXtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICBjdHguYjhbaW5fYnVmXSA9IDB4ODA7XG4gIGluX2J1ZiArKztcbiAgaWYoaW5fYnVmID4gNTYpIHtcbiAgICBmb3IodmFyIGogPSBpbl9idWY7IGogPCA2NDsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgNTY7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IodmFyIGogPSBpbl9idWY7IGogPCA1NjsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9XG4gIGN0eC5iMzJbMTRdID0gY3R4LmxlbiA8PCAzO1xuICBjdHguYjMyWzE1XSA9IChjdHgubGVuID4+IDI5KSAmIDB4MUZGRkZGRkY7XG4gIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgdmFyIHQgPSBuZXcgVWludDhBcnJheSgxNik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKVxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgNDsgaisrKVxuICAgICAgdFtpICogNCArIGpdID0gKGN0eC53W2ldID4+ICg4ICogaikpICYgMHhGRjtcbiAgcmV0dXJuIHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9ieXRlcyhzLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzKTtcbiAgY2FtbF9NRDVVcGRhdGUoY3R4LGEuc3ViYXJyYXkob2ZzLCBvZnMgKyBsZW4pLCBsZW4pO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoY2FtbF9NRDVGaW5hbChjdHgpKTtcbn1cbiIsIi8qXG5UbyBkZWFsIHdpdGggZWZmZWN0cywgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IGlzIGludHVpdGl2ZWx5IGNvbXBvc2VkIG9mXG5hIHN0YWNrIG9mIGZpYmVycy4gRWFjaCBmaWJlciBoYXMgYSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb25cbihvbmUtYXJndW1lbnQgSmF2YVNjcmlwdCBmdW5jdGlvbiksIGEgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZFxuYSB0cmlwbGUgb2YgaGFuZGxlcnMsIHdoaWNoIGFyZSBpbnZva2VkIHdoZW4gdGhlIGZpYmVyIHRlcm1pbmF0ZXNcbihlaXRoZXIgd2l0aCBhIHZhbHVlIG9yIGFuIGV4Y2VwdGlvbikgb3Igd2hlbiBhbiBlZmZlY3QgaXMgcGVyZm9ybWVkLlxuVGhlIGxvdy1sZXZlbCBjb250aW51YXRpb24gb2YgdGhlIHRvcG1vc3QgZmliZXIgKHdoaWNoIGlzIGN1cnJlbnRseVxuZXhlY3V0aW5nKSBpcyBwYXNzZWQgZnJvbSBmdW5jdGlvbiB0byBmdW5jdGlvbiBhcyBhbiBhZGRpdGlvbmFsXG5hcmd1bWVudC4gSXRzIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBpcyBzdG9yZWQgaW5cbltjYW1sX2V4bl9zdGFja10uIEV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgcHVzaGVkIGludG8gdGhpcyBzdGFjayB3aGVuXG5lbnRlcmluZyBhIFt0cnkgLi4uIHdpdGggLi4uXSBhbmQgcG9wcGVkIG9uIGV4aXQuIFRoZW4sIGhhbmRsZXJzIGFuZFxudGhlIHJlbWFpbmluZyBmaWJlcnMgYXJlIHN0b3JlZCBpbiBbY2FtbF9maWJlcl9zdGFja10uIFRvIGluc3RhbGwgYW5cbmVmZmVjdCBoYW5kbGVyLCB3ZSBwdXNoIGEgbmV3IGZpYmVyIGludG8gdGhlIGV4ZWN1dGlvbiBjb250ZXh0LlxuXG5XZSBoYXZlIGJhc2ljYWxseSB0aGUgZm9sbG93aW5nIHR5cGUgZm9yIHJlaWZpZWQgY29udGludWF0aW9ucyAodHlwZVxuW2NvbnRpbnVhdGlvbl0gaW4gbW9kdWxlIFtFZmZlY3RdIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KTpcblxuICB0eXBlICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiA9ICgnYSwgJ2IpIHN0YWNrIHJlZlxuXG4gIGFuZCAoXywgXykgc3RhY2sgPVxuICAgICAgQ29ucyA6ICgnYiAtPiB1bml0KSAqICAgICAgICAgICAgICgqIGxvdy1sZXZlbCBjb250aW51YXRpb24gKilcbiAgICAgICAgICAgICAoZXhuIC0+IHVuaXQpIGxpc3QgKiAgICAgICAoKiBleGNlcHRpb24gaGFuZGxlcnMgKilcbiAgICAgICAgICAgICAoJ2IsICdjKSBoYW5kbGVyICpcbiAgICAgICAgICAgICAoJ2EsICdiKSBzdGFja1xuICAgICAgICAgICAgIC0+ICgnYSwgJ2MpIHN0YWNrXG4gICAgfCBFbXB0eSA6ICgnYSwgJ2EpIHN0YWNrXG5cbiAgYW5kICgnYSwnYikgaGFuZGxlciA9ICAgKCogQXMgaW4gbW9kdWxlIEVmZmVjdCBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIEVmZmVjdC50IC0+ICgoJ2MsJ2IpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuQ29udGludWF0aW9ucyBhcmUgb25lLXNob3QuIEEgY29udGludWF0aW9uIFtyZWYgRW1wdHldIGhhcyBhbHJlYWR5XG5iZWVuIHJlc3VtZWQuXG5cbkEgY29udGludWF0aW9uIGlzIGJhc2ljYWxseSBjb21wb3NlZCBvZiBhIGxpc3Qgb2YgZmliZXJzLCB3aGljaCBlYWNoXG5oYXMgaXRzIGxvdy1sZXZlbCBjb250aW51YXRpb24sIGl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kIGFcbnRyaXBsZSBvZiBoYW5kbGVycyB0byBkZWFsIHdpdGggd2hlbiB0aGUgZmliZXIgdGVybWluYXRlcyBvciBhblxuZWZmZWN0IGlzIHBlcmZvcm1lZC4gV2hlbiByZXN1bWluZyBhIGNvbnRpbnVhdGlvbiwgdGhlIGlubmVybW9zdCBmaWJlclxuaXMgcmVzdW1lZCBmaXJzdC5cblxuVGhlIGhhbmRsZXJzIGFyZSBDUFMtdHJhbnNmb3JtZWQgZnVuY3Rpb25zOiB0aGV5IGFjdHVhbGx5IHRha2UgYW5cbmFkZGl0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGlzIHRoZSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb24uXG4qL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy8gVGhpcyBpcyBhbiBPQ2FtbCBsaXN0IG9mIGV4Y2VwdGlvbiBoYW5kbGVyc1xudmFyIGNhbWxfZXhuX3N0YWNrID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wdXNoX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3B1c2hfdHJhcChoYW5kbGVyKSB7XG4gIGNhbWxfZXhuX3N0YWNrPVswLGhhbmRsZXIsY2FtbF9leG5fc3RhY2tdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BvcF90cmFwXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wb3BfdHJhcCgpIHtcbiAgaWYgKCFjYW1sX2V4bl9zdGFjaykgcmV0dXJuIGZ1bmN0aW9uKHgpe3Rocm93IHg7fVxuICB2YXIgaCA9IGNhbWxfZXhuX3N0YWNrWzFdO1xuICBjYW1sX2V4bl9zdGFjaz1jYW1sX2V4bl9zdGFja1syXTtcbiAgcmV0dXJuIGhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy8gVGhpcyBoYXMgdGhlIHNoYXBlIHtoLCByOntrLCB4LCBlfX0gd2hlcmUgaCBpcyBhIHRyaXBsZSBvZiBoYW5kbGVyc1xuLy8gKHNlZSBlZmZlY3QuanMpIGFuZCBrLCB4IGFuZCBlIGFyZSB0aGUgc2F2ZWQgY29udGludWF0aW9uLFxuLy8gZXhjZXB0aW9uIHN0YWNrIGFuZCBmaWJlciBzdGFjayBvZiB0aGUgcGFyZW50IGZpYmVyLlxudmFyIGNhbWxfZmliZXJfc3RhY2s7XG5cbi8vUHJvdmlkZXM6Y2FtbF9yZXN1bWVfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3Jlc3VtZV9zdGFjayhzdGFjaywgaykge1xuICBpZiAoIXN0YWNrKSBjYW1sX3JhaXNlX2NvbnN0YW50XG4gICAgICAgICAgICAgICAgIChjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LkNvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcIikpO1xuICAvLyBVcGRhdGUgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHdpdGggdGhlIHN0YWNrIG9mIGZpYmVycyBpbiBbc3RhY2tdIGluXG4gIC8vIG9yZGVyIHRvIHJlc3VtZSB0aGUgY29udGludWF0aW9uXG4gIGRvIHtcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID1cbiAgICAgIHtoOnN0YWNrWzNdLCByOntrOmssIHg6Y2FtbF9leG5fc3RhY2ssIGU6Y2FtbF9maWJlcl9zdGFja319O1xuICAgIGsgPSBzdGFja1sxXTtcbiAgICBjYW1sX2V4bl9zdGFjayA9IHN0YWNrWzJdO1xuICAgIHN0YWNrID0gc3RhY2tbNF07XG4gIH0gd2hpbGUgKHN0YWNrKVxuICByZXR1cm4gaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfZmliZXJcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF9maWJlcigpIHtcbiAgLy8gTW92ZSB0byB0aGUgcGFyZW50IGZpYmVyLCByZXR1cm5pbmcgdGhlIHBhcmVudCdzIGxvdy1sZXZlbCBjb250aW51YXRpb25cbiAgdmFyIHJlbSA9IGNhbWxfZmliZXJfc3RhY2sucjtcbiAgY2FtbF9leG5fc3RhY2sgPSByZW0ueDtcbiAgY2FtbF9maWJlcl9zdGFjayA9IHJlbS5lO1xuICByZXR1cm4gcmVtLms7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGVyZm9ybV9lZmZlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoLCBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuLCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wZXJmb3JtX2VmZmVjdChlZmYsIGNvbnQsIGswKSB7XG4gIC8vIEFsbG9jYXRlIGEgY29udGludWF0aW9uIGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBvbmVcbiAgaWYgKCFjb250KSBjb250ID0gWzI0NSAvKmNvbnRpbnVhdGlvbiovLCAwXTtcbiAgLy8gR2V0IGN1cnJlbnQgZWZmZWN0IGhhbmRsZXJcbiAgdmFyIGhhbmRsZXIgPSBjYW1sX2ZpYmVyX3N0YWNrLmhbM107XG4gIC8vIENvbnMgdGhlIGN1cnJlbnQgZmliZXIgb250byB0aGUgY29udGludWF0aW9uOlxuICAvLyAgIGNvbnQgOj0gQ29ucyAoaywgZXhuX3N0YWNrLCBoYW5kbGVycywgIWNvbnQpXG4gIGNvbnRbMV0gPSBbMCxrMCxjYW1sX2V4bl9zdGFjayxjYW1sX2ZpYmVyX3N0YWNrLmgsY29udFsxXV07XG4gIC8vIE1vdmUgdG8gcGFyZW50IGZpYmVyIGFuZCBleGVjdXRlIHRoZSBlZmZlY3QgaGFuZGxlciB0aGVyZVxuICAvLyBUaGUgaGFuZGxlciBpcyBkZWZpbmVkIGluIFN0ZGxpYi5FZmZlY3QsIHNvIHdlIGtub3cgdGhhdCB0aGUgYXJpdHkgbWF0Y2hlc1xuICB2YXIgazEgPSBjYW1sX3BvcF9maWJlcigpO1xuICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpP2hhbmRsZXIoZWZmLGNvbnQsazEsazEpXG4gICAgICAgICA6Y2FtbF90cmFtcG9saW5lX3JldHVybihoYW5kbGVyLFtlZmYsY29udCxrMSxrMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX3BvcF9maWJlciwgY2FtbF9maWJlcl9zdGFjaywgY2FtbF9jYWxsX2dlbiwgY2FtbF9zdGFja19jaGVja19kZXB0aCwgY2FtbF90cmFtcG9saW5lX3JldHVyblxuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFjayhodiwgaHgsIGhmKSB7XG4gIGZ1bmN0aW9uIGNhbGwoaSwgeCkge1xuICAgIHZhciBmPWNhbWxfZmliZXJfc3RhY2suaFtpXTtcbiAgICB2YXIgYXJncyA9IFt4LCBjYW1sX3BvcF9maWJlcigpXTtcbiAgICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpP2NhbWxfY2FsbF9nZW4oZixhcmdzKVxuICAgICAgICAgICA6Y2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpO1xuICB9XG4gIGZ1bmN0aW9uIGh2YWwoeCkge1xuICAgIC8vIENhbGwgW2h2XSBpbiB0aGUgcGFyZW50IGZpYmVyXG4gICAgcmV0dXJuIGNhbGwoMSwgeCk7XG4gIH1cbiAgZnVuY3Rpb24gaGV4bihlKSB7XG4gICAgLy8gQ2FsbCBbaHhdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgICByZXR1cm4gY2FsbCgyLCBlKTtcbiAgfVxuICByZXR1cm4gWzAsIGh2YWwsIFswLCBoZXhuLCAwXSwgWzAsIGh2LCBoeCwgaGZdLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG5mdW5jdGlvbiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMoY29udCkge1xuICB2YXIgc3RhY2s9Y29udFsxXTtcbiAgY29udFsxXT0wO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGNcbi8vUmVxdWlyZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuZnVuY3Rpb24gY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Yyhjb250LCBodmFsLCBoZXhuLCBoZWZmKSB7XG4gIHZhciBzdGFjayA9IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KTtcbiAgc3RhY2tbM10gPSBbMCwgaHZhbCwgaGV4biwgaGVmZl07XG4gIHJldHVybiBzdGFjaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1xuZnVuY3Rpb24gY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fbmV3XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9uZXcodW5pdCl7XG4gICAgcmV0dXJuIHtjb25kaXRpb246MX07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3dhaXRcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3dhaXQodCxtdXRleHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3RcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdCh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9zaWduYWwodCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIUlmOiBlZmZlY3RzXG5mdW5jdGlvbiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkKCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJFZmZlY3QgaGFuZGxlcnMgYXJlIG5vdCBzdXBwb3J0ZWRcIik7XG59XG4iLCIvL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNcbnZhciBjYW1sX2RvbWFpbl9kbHMgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX3NldChhKSB7XG4gIGNhbWxfZG9tYWluX2RscyA9IGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19jb21wYXJlX2FuZF9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19jb21wYXJlX2FuZF9zZXQob2xkLG4pIHtcbiAgaWYoY2FtbF9kb21haW5fZGxzICE9PSBvbGQpIHJldHVybiAwXG4gIGNhbWxfZG9tYWluX2RscyA9IG47XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9kbHNcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19nZXQodW5pdCkge1xuICByZXR1cm4gY2FtbF9kb21haW5fZGxzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2xvYWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2xvYWQocmVmKXtcbiAgcmV0dXJuIHJlZlsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfY2FzXG5mdW5jdGlvbiBjYW1sX2F0b21pY19jYXMocmVmLG8sbikge1xuICBpZihyZWZbMV0gPT09IG8pe1xuICAgIHJlZlsxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2ZldGNoX2FkZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZmV0Y2hfYWRkKHJlZiwgaSkge1xuICB2YXIgb2xkID0gcmVmWzFdO1xuICByZWZbMV0gKz0gaTtcbiAgcmV0dXJuIG9sZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZXhjaGFuZ2VcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2V4Y2hhbmdlKHJlZiwgdikge1xuICB2YXIgciA9IHJlZlsxXTtcbiAgcmVmWzFdID0gdjtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZChhKSB7XG4gIHJldHVybiBbMCwgYV1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXG4vL1ZlcnNpb246IDwgNS4yXG52YXIgY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXyA9IFswXVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuKHVuaXQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl9cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9zZXRfbmFtZVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fc2V0X25hbWUoX25hbWUpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XG5mdW5jdGlvbiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCh1bml0KSB7IHJldHVybiAxIH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9pZFxudmFyIGNhbWxfZG9tYWluX2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZix0ZXJtX3N5bmMpe1xuICAgIHZhciBpZCA9IGNhbWxfZG9tYWluX2xhdGVzdF9pZHgrKztcbiAgICB2YXIgb2xkID0gY2FtbF9kb21haW5faWQ7XG4gICAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLFswXSk7XG4gICAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gICAgY2FtbF9tbF9tdXRleF91bmxvY2sodGVybV9zeW5jWzJdKTtcbiAgICAvL1RPRE86IGZpeCBleG4gY2FzZVxuICAgIHRlcm1fc3luY1sxXSA9IFswLCBbMCwgcmVzXV07XG4gICAgcmV0dXJuIGlkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9zcGF3blxuLy9SZXF1aXJlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG4vL1ZlcnNpb246IDwgNS4yXG52YXIgY2FtbF9kb21haW5fbGF0ZXN0X2lkeCA9IDFcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX3NwYXduKGYsbXV0ZXgpe1xuICAgIHZhciBpZCA9IGNhbWxfZG9tYWluX2xhdGVzdF9pZHgrKztcbiAgICB2YXIgb2xkID0gY2FtbF9kb21haW5faWQ7XG4gICAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLFswXSk7XG4gICAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gICAgY2FtbF9tbF9tdXRleF91bmxvY2sobXV0ZXgpO1xuICAgIHJldHVybiBpZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2lkKHVuaXQpe1xuICAgIHJldHVybiBjYW1sX2RvbWFpbl9pZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXhcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2NwdV9yZWxheCh1bml0KXtcbiAgICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSW9cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmRzXG52YXIgY2FtbF9zeXNfZmRzID0gbmV3IEFycmF5KDMpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jbG9zZVxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG5mdW5jdGlvbiBjYW1sX3N5c19jbG9zZShmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUpIGZpbGUuY2xvc2UoKTtcbiAgZGVsZXRlIGNhbWxfc3lzX2Zkc1tmZF07XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBNbEZha2VGZF9vdXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUsaWR4KSB7XG4gIGlmKGlkeCA9PSB1bmRlZmluZWQpe1xuICAgIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gIH1cbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSBmaWxlO1xuICByZXR1cm4gaWR4IHwgMDtcbn1cbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW4gKG5hbWUsIGZsYWdzLCBfcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUoZmxhZ3Mpe1xuICAgIHN3aXRjaChmbGFnc1sxXSl7XG4gICAgY2FzZSAwOiBmLnJkb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAxOiBmLndyb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAyOiBmLmFwcGVuZCA9IDE7YnJlYWs7XG4gICAgY2FzZSAzOiBmLmNyZWF0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA0OiBmLnRydW5jYXRlID0gMTticmVhaztcbiAgICBjYXNlIDU6IGYuZXhjbCA9IDE7IGJyZWFrO1xuICAgIGNhc2UgNjogZi5iaW5hcnkgPSAxO2JyZWFrO1xuICAgIGNhc2UgNzogZi50ZXh0ID0gMTticmVhaztcbiAgICBjYXNlIDg6IGYubm9uYmxvY2sgPSAxO2JyZWFrO1xuICAgIH1cbiAgICBmbGFncz1mbGFnc1syXTtcbiAgfVxuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3QsZik7XG4gIHJldHVybiBjYW1sX3N5c19vcGVuX2ludGVybmFsIChmaWxlLCB1bmRlZmluZWQpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZmlsZShmZCwgZmxhZ3MpIHtcbiAgICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgICByZXR1cm4gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICByZXR1cm4gbmV3IE1sRmFrZUZkX291dChmZCwgZmxhZ3MpXG4gIH1cbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDAse3Jkb25seToxLGFsdG5hbWU6XCIvZGV2L3N0ZGluXCIsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAwKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDEse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAxKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDIse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAyKTtcbn0pKClcblxuXG4vLyBvY2FtbCBDaGFubmVsc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZShjaGFuaWQsIG5hbWUpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGNoYW4ubmFtZSA9IG5hbWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxzXG52YXIgY2FtbF9tbF9jaGFubmVscyA9IG5ldyBBcnJheSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfcmVkaXJlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9yZWRpcmVjdCAoY2FwdHVyZWQsIGludG8pe1xuICB2YXIgdG9fcmVzdG9yZSA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2FwdHVyZWQpO1xuICB2YXIgbmV3XyA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoaW50byk7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2FwdHVyZWRdID0gbmV3XzsgLy8gWFhYXG4gIHJldHVybiB0b19yZXN0b3JlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfcmVzdG9yZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmUgKGNhcHR1cmVkLCB0b19yZXN0b3JlKXtcbiAgY2FtbF9tbF9jaGFubmVsc1tjYXB0dXJlZF0gPSB0b19yZXN0b3JlOyAvLyBYWFhcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9nZXQoaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbHNbaWRdOyAvLyBYWFhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdCAoKSB7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBjID0gMDsgYyA8IGNhbWxfbWxfY2hhbm5lbHMubGVuZ3RoOyBjKyspe1xuICAgIGlmKGNhbWxfbWxfY2hhbm5lbHNbY10gJiYgY2FtbF9tbF9jaGFubmVsc1tjXS5vcGVuZWQgJiYgY2FtbF9tbF9jaGFubmVsc1tjXS5vdXQpXG4gICAgICBsPVswLGNhbWxfbWxfY2hhbm5lbHNbY10uZmQsbF07XG4gIH1cbiAgcmV0dXJuIGw7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQgKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy5yZG9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgcmVhZG9ubHlcIik7XG4gIHZhciBidWZmZXJlZCA9IChmaWxlLmZsYWdzLmJ1ZmZlcmVkICE9PSB1bmRlZmluZWQpID8gZmlsZS5mbGFncy5idWZmZXJlZCA6IDE7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6ZmlsZSxcbiAgICBvZmZzZXQ6ZmlsZS5mbGFncy5hcHBlbmQ/ZmlsZS5sZW5ndGgoKTowLFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDp0cnVlLFxuICAgIGJ1ZmZlcl9jdXJyOjAsXG4gICAgYnVmZmVyOm5ldyBVaW50OEFycmF5KDY1NTM2KSxcbiAgICBidWZmZXJlZDpidWZmZXJlZFxuICB9O1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5uZWwuZmRdPWNoYW5uZWw7XG4gIHJldHVybiBjaGFubmVsLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogY2FtbF9zeXNfb3BlblxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4gKGZkKSAge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUuZmxhZ3Mud3Jvbmx5KSBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiKyBmZCArIFwiIGlzIHdyaXRlb25seVwiKTtcbiAgdmFyIHJlZmlsbCA9IG51bGw7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6ZmlsZSxcbiAgICBvZmZzZXQ6ZmlsZS5mbGFncy5hcHBlbmQ/ZmlsZS5sZW5ndGgoKTowLFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDogZmFsc2UsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXJfbWF4OjAsXG4gICAgYnVmZmVyOm5ldyBVaW50OEFycmF5KDY1NTM2KSxcbiAgICByZWZpbGw6cmVmaWxsXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5fd2l0aF9mbGFnc1xuLy9SZXF1aXJlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyhmZCwgZmxhZ3Mpe1xuICByZXR1cm4gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vQWxpYXM6IHdpbl9maWxlZGVzY3Jfb2ZfY2hhbm5lbFxuZnVuY3Rpb24gY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUoY2hhbmlkLG1vZGUpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgY2hhbi5maWxlLmZsYWdzLnRleHQgPSAhbW9kZVxuICBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5ID0gbW9kZVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfbWxfaXNfYmluYXJ5X21vZGUoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2hhbi5maWxlLmZsYWdzLmJpbmFyeVxufVxuXG4vL0lucHV0IGZyb20gaW5fY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Nsb3NlXG5mdW5jdGlvbiBjYW1sX21sX2Nsb3NlX2NoYW5uZWwgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYoY2hhbi5vcGVuZWQpIHtcbiAgICBjaGFuLm9wZW5lZCA9IGZhbHNlO1xuICAgIGNhbWxfc3lzX2Nsb3NlKGNoYW4uZmQpO1xuICAgIGNoYW4uZmQgPSAtMTtcbiAgICBjaGFuLmJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDApO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2hhbi5maWxlLmxlbmd0aCAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsZikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgY2hhbi5vdXRwdXQgPSAoZnVuY3Rpb24gKHMpIHtmKHMpfSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwoY2hhbmlkLGYpIHtcbiAgY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpLnJlZmlsbCA9IGY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWZpbGwgKGNoYW4pIHtcbiAgaWYoY2hhbi5yZWZpbGwgIT0gbnVsbCl7XG4gICAgdmFyIHN0ciA9IGNoYW4ucmVmaWxsKCk7XG4gICAgdmFyIHN0cl9hID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyKTtcbiAgICBpZiAoc3RyX2EubGVuZ3RoID09IDApIHtcbiAgICAgIGNoYW4ucmVmaWxsID0gbnVsbFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyLmxlbmd0aCA8IGNoYW4uYnVmZmVyX21heCArIHN0cl9hLmxlbmd0aCl7XG4gICAgICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKTtcbiAgICAgICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgICAgICBjaGFuLmJ1ZmZlciA9IGI7XG4gICAgICB9XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoc3RyX2EsY2hhbi5idWZmZXJfbWF4KTtcbiAgICAgIGNoYW4ub2Zmc2V0ICs9IHN0cl9hLmxlbmd0aDtcbiAgICAgIGNoYW4uYnVmZmVyX21heCArPSBzdHJfYS5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBucmVhZCA9IGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgY2hhbi5idWZmZXJfbWF4LCBjaGFuLmJ1ZmZlci5sZW5ndGggLSBjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgIGNoYW4ub2Zmc2V0ICs9IG5yZWFkO1xuICAgIGNoYW4uYnVmZmVyX21heCArPSBucmVhZDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9iaWdhcnJheSAoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2Jsb2NrIChjaGFuaWQsIGJhLCBpLCBsKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICB2YXIgbiA9IGw7XG4gIHZhciBhdmFpbCA9IGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnI7XG4gIGlmKGwgPD0gYXZhaWwpIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbDtcbiAgfVxuICBlbHNlIGlmKGF2YWlsID4gMCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBhdmFpbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYXZhaWw7XG4gICAgbiA9IGF2YWlsO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgICBpZihuID4gYXZhaWwpIG4gPSBhdmFpbDtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbiksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbjtcbiAgfVxuICByZXR1cm4gbiB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcywgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWUgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgdmFyIGhlYWRlciA9IG5ldyBVaW50OEFycmF5KGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGZ1bmN0aW9uIGJsb2NrKGJ1ZmZlciwgb2Zmc2V0LCBuKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHdoaWxlKHIgPCBuKXtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgICAgICBicmVhaztcbiAgICAgIGJ1ZmZlcltvZmZzZXQrcl0gPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIrKztcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cbiAgdmFyIHIgPSBibG9jayhoZWFkZXIsIDAsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGlmKHIgPT0gMClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIGVsc2UgaWYgKHIgPCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0XCIpO1xuICB2YXIgbGVuID0gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAoY2FtbF9ieXRlc19vZl9hcnJheShoZWFkZXIpLCAwKTtcbiAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbiArIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGJ1Zi5zZXQoaGVhZGVyLDApO1xuICB2YXIgciA9IGJsb2NrKGJ1ZiwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplLCBsZW4pXG4gIGlmKHIgPCBsZW4pXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0IFwiICsgciArIFwiICBcIiArIGxlbik7XG4gIHZhciBvZmZzZXQgPSBbMF07XG4gIHZhciByZXMgPSBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBvZmZzZXQpO1xuICBjaGFuLm9mZnNldCA9IGNoYW4ub2Zmc2V0ICsgb2Zmc2V0WzBdO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcFxuLy9SZXF1aXJlczogY2FtbF9pbnB1dF92YWx1ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAoYykge1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZShjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICB9XG4gIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciByZXMgPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgY2hhbi5idWZmZXJfY3VycisrO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9jaGFyLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2ludCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDQ7IGkrKyl7XG4gICAgcmVzID0gKHJlcyA8PCA4KSArIGNhbWxfbWxfaW5wdXRfY2hhcihjaGFuaWQpIHwgMDtcbiAgfVxuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9zZWVrX2luKGNoYW5pZCwgcG9zKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBpZiAoY2hhbi5yZWZpbGwgIT0gbnVsbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJJbGxlZ2FsIHNlZWtcIik7XG4gIGlmKHBvcyA+PSBjaGFuLm9mZnNldCAtIGNoYW4uYnVmZmVyX21heFxuICAgICAmJiBwb3MgPD0gY2hhbi5vZmZzZXRcbiAgICAgJiYgY2hhbi5maWxlLmZsYWdzLmJpbmFyeSkge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSBjaGFuLmJ1ZmZlcl9tYXggLSAoY2hhbi5vZmZzZXQgLSBwb3MpO1xuICB9IGVsc2Uge1xuICAgIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pblxuLy9SZXF1aXJlczogY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW4oY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW5fNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgLSAoY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycikgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9wb3NfaW4oY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2FtbF9wb3NfaW4oY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciBwID0gY2hhbi5idWZmZXJfY3VycjtcbiAgZG8ge1xuICAgIGlmKHAgPj0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID4gMCkge1xuICAgICAgICBjaGFuLmJ1ZmZlci5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciksMCk7XG4gICAgICAgIHAgLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4IC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgICAgfVxuICAgICAgaWYoY2hhbi5idWZmZXJfbWF4ID49IGNoYW4uYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICAgIHZhciBwcmV2X21heCA9IGNoYW4uYnVmZmVyX21heDtcbiAgICAgIGNhbWxfcmVmaWxsIChjaGFuKTtcbiAgICAgIGlmKHByZXZfbWF4ID09IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH0gd2hpbGUgKGNoYW4uYnVmZmVyW3ArK10gIT0gMTApO1xuICByZXR1cm4gKHAgLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZmx1c2hcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYoIWNoYW4uYnVmZmVyIHx8IGNoYW4uYnVmZmVyX2N1cnIgPT0gMCkgcmV0dXJuIDA7XG4gIGlmKGNoYW4ub3V0cHV0KSB7XG4gICAgY2hhbi5vdXRwdXQoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKSk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5maWxlLndyaXRlKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgMCwgY2hhbi5idWZmZXJfY3Vycik7XG4gIH1cbiAgY2hhbi5vZmZzZXQgKz0gY2hhbi5idWZmZXJfY3VycjtcbiAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL291dHB1dCB0byBvdXRfY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF90YVxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCxjYW1sX21sX2J5dGVzX2xlbmd0aFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3Qgb3V0cHV0IHRvIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIGJ1ZmZlciA9IGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbik7XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoID4gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9jdXJyICsgYnVmZmVyLmxlbmd0aCk7XG4gICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgIGNoYW4uYnVmZmVyID0gYlxuICB9XG4gIHN3aXRjaChjaGFuLmJ1ZmZlcmVkKXtcbiAgY2FzZSAwOiAvLyBVbmJ1ZmZlcmVkXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgYnJlYWtcbiAgY2FzZSAxOiAvLyBCdWZmZXJlZCAodGhlIGRlZmF1bHQpXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVhaztcbiAgY2FzZSAyOiAvLyBCdWZmZXJlZCAob25seSBmb3Igc3Rkb3V0IGFuZCBzdGRlcnIpXG4gICAgdmFyIGlkID0gYnVmZmVyLmxhc3RJbmRleE9mKDEwKVxuICAgIGlmKGlkIDwgMCkge1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aClcbiAgICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KDAsIGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBpZCArIDE7XG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheShpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aCAtIGlkIC0gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5LCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXkoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXQoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxjYW1sX2J5dGVzX29mX3N0cmluZyhidWZmZXIpLG9mZnNldCxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfY2hhciAoY2hhbmlkLGMpIHtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZywgY2FtbF9tbF9vdXRwdXQsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZSAoY2hhbmlkLHYsZmxhZ3MpIHtcbiAgdmFyIHMgPSBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcodiwgZmxhZ3MpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLm9mZnNldCA9IHBvcztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXQoY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXRfNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgKyBjaGFuLmJ1ZmZlcl9jdXJyXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19vdXQoY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dF82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQgKGNhbWxfcG9zX291dChjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2ludCAoY2hhbmlkLGkpIHtcbiAgdmFyIGFyciA9IFsoaT4+MjQpICYgMHhGRiwoaT4+MTYpICYgMHhGRiwoaT4+OCkgJiAweEZGLGkgJiAweEZGIF07XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCw0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9pc19idWZmZXJlZChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKS5idWZmZXJlZCA/IDEgOiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NldF9idWZmZXJlZChjaGFuaWQsdikge1xuICBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCkuYnVmZmVyZWQgPSB2O1xuICBpZighdikgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gMFxufVxuIiwiXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxudmFyIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyKGV2ZW50X25hbWUsIGV2ZW50X3RhZywgZXZlbnRfdHlwZSkge1xuICBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCArPSAxO1xuICByZXR1cm4gWzAsIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4LCBldmVudF9uYW1lLCBldmVudF90eXBlLCBldmVudF90YWddO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZShldmVudCwgZXZlbnRfY29udGVudCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19zdGFydFxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydFxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19zdGFydCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcGF1c2Vcbi8vQWxpYXM6IGNhbWxfcnVudGltZV9ldmVudHNfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV9ldmVudHNfcGF1c2UoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX2FyZV9hY3RpdmVcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX2FyZV9hY3RpdmUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZVxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19yZXN1bWVcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19jcmVhdGVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3IodGFyZ2V0KSB7XG4gIHJldHVybiB7fTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19mcmVlX2N1cnNvclxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19mcmVlX2N1cnNvcihjdXJzb3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbChjdXJzb3IsIGNhbGxiYWNrcywgbnVtKSB7XG4gIHJldHVybiAwO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiB6c3RkX2RlY29tcHJlc3Ncbi8vVmVyc2lvbjogPj0gNS4xXG52YXIgenN0ZF9kZWNvbXByZXNzID0gKGZ1bmN0aW9uICgpIHtcblwidXNlIHN0cmljdFwiO1xuLy8gYWxpYXNlcyBmb3Igc2hvcnRlciBjb21wcmVzc2VkIGNvZGUgKG1vc3QgbWluaWZlcnMgZG9uJ3QgZG8gdGhpcylcbnZhciBhYiA9IEFycmF5QnVmZmVyLCB1OCA9IFVpbnQ4QXJyYXksIHUxNiA9IFVpbnQxNkFycmF5LCBpMTYgPSBJbnQxNkFycmF5LCB1MzIgPSBVaW50MzJBcnJheSwgaTMyID0gSW50MzJBcnJheTtcbnZhciBzbGMgPSBmdW5jdGlvbiAodiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuc2xpY2UpXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuc2xpY2UuY2FsbCh2LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIHZhciBuID0gbmV3IHU4KGUgLSBzKTtcbiAgICBuLnNldCh2LnN1YmFycmF5KHMsIGUpKTtcbiAgICByZXR1cm4gbjtcbn07XG52YXIgZmlsbCA9IGZ1bmN0aW9uICh2LCBuLCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5maWxsKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLmZpbGwuY2FsbCh2LCBuLCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIGZvciAoOyBzIDwgZTsgKytzKVxuICAgICAgICB2W3NdID0gbjtcbiAgICByZXR1cm4gdjtcbn07XG52YXIgY3B3ID0gZnVuY3Rpb24gKHYsIHQsIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLmNvcHlXaXRoaW4pXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuY29weVdpdGhpbi5jYWxsKHYsIHQsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgd2hpbGUgKHMgPCBlKSB7XG4gICAgICAgIHZbdCsrXSA9IHZbcysrXTtcbiAgICB9XG59O1xuLyoqXG4gKiBDb2RlcyBmb3IgZXJyb3JzIGdlbmVyYXRlZCB3aXRoaW4gdGhpcyBsaWJyYXJ5XG4gKi9cbi8vIGVycm9yIGNvZGVzXG52YXIgZWMgPSBbXG4gICAgJ2ludmFsaWQgenN0ZCBkYXRhJyxcbiAgICAnd2luZG93IHNpemUgdG9vIGxhcmdlICg+MjA0Nk1CKScsXG4gICAgJ2ludmFsaWQgYmxvY2sgdHlwZScsXG4gICAgJ0ZTRSBhY2N1cmFjeSB0b28gaGlnaCcsXG4gICAgJ21hdGNoIGRpc3RhbmNlIHRvbyBmYXIgYmFjaycsXG4gICAgJ3VuZXhwZWN0ZWQgRU9GJ1xuXTtcbjtcbnZhciBlcnIgPSBmdW5jdGlvbiAoaW5kLCBtc2csIG50KSB7XG4gICAgdmFyIGUgPSBuZXcgRXJyb3IobXNnIHx8IGVjW2luZF0pO1xuICAgIGUuY29kZSA9IGluZDtcbiAgICBpZiAoIW50KVxuICAgICAgICB0aHJvdyBlO1xuICAgIHJldHVybiBlO1xufTtcbnZhciByYiA9IGZ1bmN0aW9uIChkLCBiLCBuKSB7XG4gICAgdmFyIGkgPSAwLCBvID0gMDtcbiAgICBmb3IgKDsgaSA8IG47ICsraSlcbiAgICAgICAgbyB8PSBkW2IrK10gPDwgKGkgPDwgMyk7XG4gICAgcmV0dXJuIG87XG59O1xudmFyIGI0ID0gZnVuY3Rpb24gKGQsIGIpIHsgcmV0dXJuIChkW2JdIHwgKGRbYiArIDFdIDw8IDgpIHwgKGRbYiArIDJdIDw8IDE2KSB8IChkW2IgKyAzXSA8PCAyNCkpID4+PiAwOyB9O1xuLy8gcmVhZCBac3RhbmRhcmQgZnJhbWUgaGVhZGVyXG52YXIgcnpmaCA9IGZ1bmN0aW9uIChkYXQsIHcpIHtcbiAgICB2YXIgbjMgPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpIHwgKGRhdFsyXSA8PCAxNik7XG4gICAgaWYgKG4zID09IDB4MkZCNTI4ICYmIGRhdFszXSA9PSAyNTMpIHtcbiAgICAgICAgLy8gWnN0YW5kYXJkXG4gICAgICAgIHZhciBmbGcgPSBkYXRbNF07XG4gICAgICAgIC8vICAgIHNpbmdsZSBzZWdtZW50ICAgICAgIGNoZWNrc3VtICAgICAgICAgICAgIGRpY3QgZmxhZyAgICAgZnJhbWUgY29udGVudCBmbGFnXG4gICAgICAgIHZhciBzcyA9IChmbGcgPj4gNSkgJiAxLCBjYyA9IChmbGcgPj4gMikgJiAxLCBkZiA9IGZsZyAmIDMsIGZjZiA9IGZsZyA+PiA2O1xuICAgICAgICBpZiAoZmxnICYgOClcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgLy8gYnl0ZVxuICAgICAgICB2YXIgYnQgPSA2IC0gc3M7XG4gICAgICAgIC8vIGRpY3QgYnl0ZXNcbiAgICAgICAgdmFyIGRiID0gZGYgPT0gMyA/IDQgOiBkZjtcbiAgICAgICAgLy8gZGljdGlvbmFyeSBpZFxuICAgICAgICB2YXIgZGkgPSByYihkYXQsIGJ0LCBkYik7XG4gICAgICAgIGJ0ICs9IGRiO1xuICAgICAgICAvLyBmcmFtZSBzaXplIGJ5dGVzXG4gICAgICAgIHZhciBmc2IgPSBmY2YgPyAoMSA8PCBmY2YpIDogc3M7XG4gICAgICAgIC8vIGZyYW1lIHNvdXJjZSBzaXplXG4gICAgICAgIHZhciBmc3MgPSByYihkYXQsIGJ0LCBmc2IpICsgKChmY2YgPT0gMSkgJiYgMjU2KTtcbiAgICAgICAgLy8gd2luZG93IHNpemVcbiAgICAgICAgdmFyIHdzID0gZnNzO1xuICAgICAgICBpZiAoIXNzKSB7XG4gICAgICAgICAgICAvLyB3aW5kb3cgZGVzY3JpcHRvclxuICAgICAgICAgICAgdmFyIHdiID0gMSA8PCAoMTAgKyAoZGF0WzVdID4+IDMpKTtcbiAgICAgICAgICAgIHdzID0gd2IgKyAod2IgPj4gMykgKiAoZGF0WzVdICYgNyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdzID4gMjE0NTM4NjQ5NilcbiAgICAgICAgICAgIGVycigxKTtcbiAgICAgICAgdmFyIGJ1ZiA9IG5ldyB1OCgodyA9PSAxID8gKGZzcyB8fCB3cykgOiB3ID8gMCA6IHdzKSArIDEyKTtcbiAgICAgICAgYnVmWzBdID0gMSwgYnVmWzRdID0gNCwgYnVmWzhdID0gODtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGI6IGJ0ICsgZnNiLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGw6IDAsXG4gICAgICAgICAgICBkOiBkaSxcbiAgICAgICAgICAgIHc6ICh3ICYmIHcgIT0gMSkgPyB3IDogYnVmLnN1YmFycmF5KDEyKSxcbiAgICAgICAgICAgIGU6IHdzLFxuICAgICAgICAgICAgbzogbmV3IGkzMihidWYuYnVmZmVyLCAwLCAzKSxcbiAgICAgICAgICAgIHU6IGZzcyxcbiAgICAgICAgICAgIGM6IGNjLFxuICAgICAgICAgICAgbTogTWF0aC5taW4oMTMxMDcyLCB3cylcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoKChuMyA+PiA0KSB8IChkYXRbM10gPDwgMjApKSA9PSAweDE4NEQyQTUpIHtcbiAgICAgICAgLy8gc2tpcHBhYmxlXG4gICAgICAgIHJldHVybiBiNChkYXQsIDQpICsgODtcbiAgICB9XG4gICAgZXJyKDApO1xufTtcbi8vIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGZvciBub256ZXJvXG52YXIgbXNiID0gZnVuY3Rpb24gKHZhbCkge1xuICAgIHZhciBiaXRzID0gMDtcbiAgICBmb3IgKDsgKDEgPDwgYml0cykgPD0gdmFsOyArK2JpdHMpXG4gICAgICAgIDtcbiAgICByZXR1cm4gYml0cyAtIDE7XG59O1xuLy8gcmVhZCBmaW5pdGUgc3RhdGUgZW50cm9weVxudmFyIHJmc2UgPSBmdW5jdGlvbiAoZGF0LCBidCwgbWFsKSB7XG4gICAgLy8gdGFibGUgcG9zXG4gICAgdmFyIHRwb3MgPSAoYnQgPDwgMykgKyA0O1xuICAgIC8vIGFjY3VyYWN5IGxvZ1xuICAgIHZhciBhbCA9IChkYXRbYnRdICYgMTUpICsgNTtcbiAgICBpZiAoYWwgPiBtYWwpXG4gICAgICAgIGVycigzKTtcbiAgICAvLyBzaXplXG4gICAgdmFyIHN6ID0gMSA8PCBhbDtcbiAgICAvLyBwcm9iYWJpbGl0aWVzIHN5bWJvbHMgIHJlcGVhdCAgIGluZGV4ICAgaGlnaCB0aHJlc2hvbGRcbiAgICB2YXIgcHJvYnMgPSBzeiwgc3ltID0gLTEsIHJlID0gLTEsIGkgPSAtMSwgaHQgPSBzejtcbiAgICAvLyBvcHRpbWl6YXRpb246IHNpbmdsZSBhbGxvY2F0aW9uIGlzIG11Y2ggZmFzdGVyXG4gICAgdmFyIGJ1ZiA9IG5ldyBhYig1MTIgKyAoc3ogPDwgMikpO1xuICAgIHZhciBmcmVxID0gbmV3IGkxNihidWYsIDAsIDI1Nik7XG4gICAgLy8gc2FtZSB2aWV3IGFzIGZyZXFcbiAgICB2YXIgZHN0YXRlID0gbmV3IHUxNihidWYsIDAsIDI1Nik7XG4gICAgdmFyIG5zdGF0ZSA9IG5ldyB1MTYoYnVmLCA1MTIsIHN6KTtcbiAgICB2YXIgYmIxID0gNTEyICsgKHN6IDw8IDEpO1xuICAgIHZhciBzeW1zID0gbmV3IHU4KGJ1ZiwgYmIxLCBzeik7XG4gICAgdmFyIG5iaXRzID0gbmV3IHU4KGJ1ZiwgYmIxICsgc3opO1xuICAgIHdoaWxlIChzeW0gPCAyNTUgJiYgcHJvYnMgPiAwKSB7XG4gICAgICAgIHZhciBiaXRzID0gbXNiKHByb2JzICsgMSk7XG4gICAgICAgIHZhciBjYnQgPSB0cG9zID4+IDM7XG4gICAgICAgIC8vIG1hc2tcbiAgICAgICAgdmFyIG1zayA9ICgxIDw8IChiaXRzICsgMSkpIC0gMTtcbiAgICAgICAgdmFyIHZhbCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+ICh0cG9zICYgNykpICYgbXNrO1xuICAgICAgICAvLyBtYXNrICgxIGZld2VyIGJpdClcbiAgICAgICAgdmFyIG1zazFmYiA9ICgxIDw8IGJpdHMpIC0gMTtcbiAgICAgICAgLy8gbWF4IHNtYWxsIHZhbHVlXG4gICAgICAgIHZhciBtc3YgPSBtc2sgLSBwcm9icyAtIDE7XG4gICAgICAgIC8vIHNtYWxsIHZhbHVlXG4gICAgICAgIHZhciBzdmFsID0gdmFsICYgbXNrMWZiO1xuICAgICAgICBpZiAoc3ZhbCA8IG1zdilcbiAgICAgICAgICAgIHRwb3MgKz0gYml0cywgdmFsID0gc3ZhbDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0cG9zICs9IGJpdHMgKyAxO1xuICAgICAgICAgICAgaWYgKHZhbCA+IG1zazFmYilcbiAgICAgICAgICAgICAgICB2YWwgLT0gbXN2O1xuICAgICAgICB9XG4gICAgICAgIGZyZXFbKytzeW1dID0gLS12YWw7XG4gICAgICAgIGlmICh2YWwgPT0gLTEpIHtcbiAgICAgICAgICAgIHByb2JzICs9IHZhbDtcbiAgICAgICAgICAgIHN5bXNbLS1odF0gPSBzeW07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcHJvYnMgLT0gdmFsO1xuICAgICAgICBpZiAoIXZhbCkge1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIC8vIHJlcGVhdCBieXRlXG4gICAgICAgICAgICAgICAgdmFyIHJidCA9IHRwb3MgPj4gMztcbiAgICAgICAgICAgICAgICByZSA9ICgoZGF0W3JidF0gfCAoZGF0W3JidCArIDFdIDw8IDgpKSA+PiAodHBvcyAmIDcpKSAmIDM7XG4gICAgICAgICAgICAgICAgdHBvcyArPSAyO1xuICAgICAgICAgICAgICAgIHN5bSArPSByZTtcbiAgICAgICAgICAgIH0gd2hpbGUgKHJlID09IDMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChzeW0gPiAyNTUgfHwgcHJvYnMpXG4gICAgICAgIGVycigwKTtcbiAgICB2YXIgc3ltcG9zID0gMDtcbiAgICAvLyBzeW0gc3RlcCAoY29wcmltZSB3aXRoIHN6IC0gZm9ybXVsYSBmcm9tIHpzdGQgc291cmNlKVxuICAgIHZhciBzc3RlcCA9IChzeiA+PiAxKSArIChzeiA+PiAzKSArIDM7XG4gICAgLy8gc3ltIG1hc2tcbiAgICB2YXIgc21hc2sgPSBzeiAtIDE7XG4gICAgZm9yICh2YXIgcyA9IDA7IHMgPD0gc3ltOyArK3MpIHtcbiAgICAgICAgdmFyIHNmID0gZnJlcVtzXTtcbiAgICAgICAgaWYgKHNmIDwgMSkge1xuICAgICAgICAgICAgZHN0YXRlW3NdID0gLXNmO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhpcyBpcyBzcGxpdCBpbnRvIHR3byBsb29wcyBpbiB6c3RkIHRvIGF2b2lkIGJyYW5jaGluZywgYnV0IGFzIEpTIGlzIGhpZ2hlci1sZXZlbCB0aGF0IGlzIHVubmVjZXNzYXJ5XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZjsgKytpKSB7XG4gICAgICAgICAgICBzeW1zW3N5bXBvc10gPSBzO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHN5bXBvcyA9IChzeW1wb3MgKyBzc3RlcCkgJiBzbWFzaztcbiAgICAgICAgICAgIH0gd2hpbGUgKHN5bXBvcyA+PSBodCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWZ0ZXIgc3ByZWFkaW5nIHN5bWJvbHMsIHNob3VsZCBiZSB6ZXJvIGFnYWluXG4gICAgaWYgKHN5bXBvcylcbiAgICAgICAgZXJyKDApO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzejsgKytpKSB7XG4gICAgICAgIC8vIG5leHQgc3RhdGVcbiAgICAgICAgdmFyIG5zID0gZHN0YXRlW3N5bXNbaV1dKys7XG4gICAgICAgIC8vIG51bSBiaXRzXG4gICAgICAgIHZhciBuYiA9IG5iaXRzW2ldID0gYWwgLSBtc2IobnMpO1xuICAgICAgICBuc3RhdGVbaV0gPSAobnMgPDwgbmIpIC0gc3o7XG4gICAgfVxuICAgIHJldHVybiBbKHRwb3MgKyA3KSA+PiAzLCB7XG4gICAgICAgICAgICBiOiBhbCxcbiAgICAgICAgICAgIHM6IHN5bXMsXG4gICAgICAgICAgICBuOiBuYml0cyxcbiAgICAgICAgICAgIHQ6IG5zdGF0ZVxuICAgICAgICB9XTtcbn07XG4vLyByZWFkIGh1ZmZtYW5cbnZhciByaHUgPSBmdW5jdGlvbiAoZGF0LCBidCkge1xuICAgIC8vICBpbmRleCAgd2VpZ2h0IGNvdW50XG4gICAgdmFyIGkgPSAwLCB3YyA9IC0xO1xuICAgIC8vICAgIGJ1ZmZlciAgICAgICAgICAgICBoZWFkZXIgYnl0ZVxuICAgIHZhciBidWYgPSBuZXcgdTgoMjkyKSwgaGIgPSBkYXRbYnRdO1xuICAgIC8vIGh1ZmZtYW4gd2VpZ2h0c1xuICAgIHZhciBodyA9IGJ1Zi5zdWJhcnJheSgwLCAyNTYpO1xuICAgIC8vIHJhbmsgY291bnRcbiAgICB2YXIgcmMgPSBidWYuc3ViYXJyYXkoMjU2LCAyNjgpO1xuICAgIC8vIHJhbmsgaW5kZXhcbiAgICB2YXIgcmkgPSBuZXcgdTE2KGJ1Zi5idWZmZXIsIDI2OCk7XG4gICAgLy8gTk9URTogYXQgdGhpcyBwb2ludCBidCBpcyAxIGxlc3MgdGhhbiBleHBlY3RlZFxuICAgIGlmIChoYiA8IDEyOCkge1xuICAgICAgICAvLyBlbmQgYnl0ZSwgZnNlIGRlY29kZSB0YWJsZVxuICAgICAgICB2YXIgX2EgPSByZnNlKGRhdCwgYnQgKyAxLCA2KSwgZWJ0ID0gX2FbMF0sIGZkdCA9IF9hWzFdO1xuICAgICAgICBidCArPSBoYjtcbiAgICAgICAgdmFyIGVwb3MgPSBlYnQgPDwgMztcbiAgICAgICAgLy8gbGFzdCBieXRlXG4gICAgICAgIHZhciBsYiA9IGRhdFtidF07XG4gICAgICAgIGlmICghbGIpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIC8vICBzdGF0ZTEgICBzdGF0ZTIgICBzdGF0ZTEgYml0cyAgIHN0YXRlMiBiaXRzXG4gICAgICAgIHZhciBzdDEgPSAwLCBzdDIgPSAwLCBidHIxID0gZmR0LmIsIGJ0cjIgPSBidHIxO1xuICAgICAgICAvLyBmc2UgcG9zXG4gICAgICAgIC8vIHByZS1pbmNyZW1lbnQgdG8gYWNjb3VudCBmb3Igb3JpZ2luYWwgZGVmaWNpdCBvZiAxXG4gICAgICAgIHZhciBmcG9zID0gKCsrYnQgPDwgMykgLSA4ICsgbXNiKGxiKTtcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgZnBvcyAtPSBidHIxO1xuICAgICAgICAgICAgaWYgKGZwb3MgPCBlcG9zKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgdmFyIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgICAgIHN0MSArPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMSkgLSAxKTtcbiAgICAgICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QxXTtcbiAgICAgICAgICAgIGZwb3MgLT0gYnRyMjtcbiAgICAgICAgICAgIGlmIChmcG9zIDwgZXBvcylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgICAgIHN0MiArPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMikgLSAxKTtcbiAgICAgICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QyXTtcbiAgICAgICAgICAgIGJ0cjEgPSBmZHQubltzdDFdO1xuICAgICAgICAgICAgc3QxID0gZmR0LnRbc3QxXTtcbiAgICAgICAgICAgIGJ0cjIgPSBmZHQubltzdDJdO1xuICAgICAgICAgICAgc3QyID0gZmR0LnRbc3QyXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKyt3YyA+IDI1NSlcbiAgICAgICAgICAgIGVycigwKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHdjID0gaGIgLSAxMjc7XG4gICAgICAgIGZvciAoOyBpIDwgd2M7IGkgKz0gMikge1xuICAgICAgICAgICAgdmFyIGJ5dGUgPSBkYXRbKytidF07XG4gICAgICAgICAgICBod1tpXSA9IGJ5dGUgPj4gNDtcbiAgICAgICAgICAgIGh3W2kgKyAxXSA9IGJ5dGUgJiAxNTtcbiAgICAgICAgfVxuICAgICAgICArK2J0O1xuICAgIH1cbiAgICAvLyB3ZWlnaHQgZXhwb25lbnRpYWwgc3VtXG4gICAgdmFyIHdlcyA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAgIC8vIGJpdHMgbXVzdCBiZSBhdCBtb3N0IDExLCBzYW1lIGFzIHdlaWdodFxuICAgICAgICBpZiAod3QgPiAxMSlcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgd2VzICs9IHd0ICYmICgxIDw8ICh3dCAtIDEpKTtcbiAgICB9XG4gICAgLy8gbWF4IGJpdHNcbiAgICB2YXIgbWIgPSBtc2Iod2VzKSArIDE7XG4gICAgLy8gdGFibGUgc2l6ZVxuICAgIHZhciB0cyA9IDEgPDwgbWI7XG4gICAgLy8gcmVtYWluaW5nIHN1bVxuICAgIHZhciByZW0gPSB0cyAtIHdlcztcbiAgICAvLyBtdXN0IGJlIHBvd2VyIG9mIDJcbiAgICBpZiAocmVtICYgKHJlbSAtIDEpKVxuICAgICAgICBlcnIoMCk7XG4gICAgaHdbd2MrK10gPSBtc2IocmVtKSArIDE7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAgICsrcmNbaHdbaV0gPSB3dCAmJiAobWIgKyAxIC0gd3QpXTtcbiAgICB9XG4gICAgLy8gaHVmIGJ1ZlxuICAgIHZhciBoYnVmID0gbmV3IHU4KHRzIDw8IDEpO1xuICAgIC8vICAgIHN5bWJvbHMgICAgICAgICAgICAgICAgICAgICAgbnVtIGJpdHNcbiAgICB2YXIgc3ltcyA9IGhidWYuc3ViYXJyYXkoMCwgdHMpLCBuYiA9IGhidWYuc3ViYXJyYXkodHMpO1xuICAgIHJpW21iXSA9IDA7XG4gICAgZm9yIChpID0gbWI7IGkgPiAwOyAtLWkpIHtcbiAgICAgICAgdmFyIHB2ID0gcmlbaV07XG4gICAgICAgIGZpbGwobmIsIGksIHB2LCByaVtpIC0gMV0gPSBwdiArIHJjW2ldICogKDEgPDwgKG1iIC0gaSkpKTtcbiAgICB9XG4gICAgaWYgKHJpWzBdICE9IHRzKVxuICAgICAgICBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIGJpdHMgPSBod1tpXTtcbiAgICAgICAgaWYgKGJpdHMpIHtcbiAgICAgICAgICAgIHZhciBjb2RlID0gcmlbYml0c107XG4gICAgICAgICAgICBmaWxsKHN5bXMsIGksIGNvZGUsIHJpW2JpdHNdID0gY29kZSArICgxIDw8IChtYiAtIGJpdHMpKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFtidCwge1xuICAgICAgICAgICAgbjogbmIsXG4gICAgICAgICAgICBiOiBtYixcbiAgICAgICAgICAgIHM6IHN5bXNcbiAgICAgICAgfV07XG59O1xuLy8gVGFibGVzIGdlbmVyYXRlZCB1c2luZyB0aGlzOlxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vMTAxYXJyb3d6L2E5Nzk0NTJkNDM1NTk5MmNiZjhmMjU3Y2JmZmM5ZWRkXG4vLyBkZWZhdWx0IGxpdGVyYWwgbGVuZ3RoIHRhYmxlXG52YXIgZGxsdCA9IC8qI19fUFVSRV9fKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgODEsIDE2LCA5OSwgMTQwLCA0OSwgMTk4LCAyNCwgOTksIDEyLCAzMywgMTk2LCAyNCwgOTksIDEwMiwgMTAyLCAxMzQsIDcwLCAxNDYsIDRcbl0pLCAwLCA2KVsxXTtcbi8vIGRlZmF1bHQgbWF0Y2ggbGVuZ3RoIHRhYmxlXG52YXIgZG1sdCA9IC8qI19fUFVSRV9fKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgMzMsIDIwLCAxOTYsIDI0LCA5OSwgMTQwLCAzMywgMTMyLCAxNiwgNjYsIDgsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgMzYsIDlcbl0pLCAwLCA2KVsxXTtcbi8vIGRlZmF1bHQgb2Zmc2V0IGNvZGUgdGFibGVcbnZhciBkb2N0ID0gLyojX19QVVJFX18gKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgMzIsIDEzMiwgMTYsIDY2LCAxMDIsIDcwLCA2OCwgNjgsIDY4LCA2OCwgMzYsIDczLCAyXG5dKSwgMCwgNSlbMV07XG4vLyBiaXRzIHRvIGJhc2VsaW5lXG52YXIgYjJibCA9IGZ1bmN0aW9uIChiLCBzKSB7XG4gICAgdmFyIGxlbiA9IGIubGVuZ3RoLCBibCA9IG5ldyBpMzIobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgIGJsW2ldID0gcztcbiAgICAgICAgcyArPSAxIDw8IGJbaV07XG4gICAgfVxuICAgIHJldHVybiBibDtcbn07XG4vLyBsaXRlcmFsIGxlbmd0aCBiaXRzXG52YXIgbGxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KCggLyojX19QVVJFX18gKi9uZXcgaTMyKFtcbiAgICAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDEzNDY3ODAyMCwgMjAyMDUwMDU3LCAyNjk0MjIwOTNcbl0pKS5idWZmZXIsIDAsIDM2KTtcbi8vIGxpdGVyYWwgbGVuZ3RoIGJhc2VsaW5lXG52YXIgbGxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobGxiLCAwKTtcbi8vIG1hdGNoIGxlbmd0aCBiaXRzXG52YXIgbWxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KCggLyojX19QVVJFX18gKi9uZXcgaTMyKFtcbiAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDExNzc2OTIyMCwgMTg1MjA3MDQ4LCAyNTI1NzkwODQsIDE2XG5dKSkuYnVmZmVyLCAwLCA1Myk7XG4vLyBtYXRjaCBsZW5ndGggYmFzZWxpbmVcbnZhciBtbGJsID0gLyojX19QVVJFX18gKi8gYjJibChtbGIsIDMpO1xuLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtXG52YXIgZGh1ID0gZnVuY3Rpb24gKGRhdCwgb3V0LCBodSkge1xuICAgIHZhciBsZW4gPSBkYXQubGVuZ3RoLCBzcyA9IG91dC5sZW5ndGgsIGxiID0gZGF0W2xlbiAtIDFdLCBtc2sgPSAoMSA8PCBodS5iKSAtIDEsIGViID0gLWh1LmI7XG4gICAgaWYgKCFsYilcbiAgICAgICAgZXJyKDApO1xuICAgIHZhciBzdCA9IDAsIGJ0ciA9IGh1LmIsIHBvcyA9IChsZW4gPDwgMykgLSA4ICsgbXNiKGxiKSAtIGJ0ciwgaSA9IC0xO1xuICAgIGZvciAoOyBwb3MgPiBlYiAmJiBpIDwgc3M7KSB7XG4gICAgICAgIHZhciBjYnQgPSBwb3MgPj4gMztcbiAgICAgICAgdmFyIHZhbCA9IChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHBvcyAmIDcpO1xuICAgICAgICBzdCA9ICgoc3QgPDwgYnRyKSB8IHZhbCkgJiBtc2s7XG4gICAgICAgIG91dFsrK2ldID0gaHUuc1tzdF07XG4gICAgICAgIHBvcyAtPSAoYnRyID0gaHUubltzdF0pO1xuICAgIH1cbiAgICBpZiAocG9zICE9IGViIHx8IGkgKyAxICE9IHNzKVxuICAgICAgICBlcnIoMCk7XG59O1xuLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtIDR4XG4vLyBUT0RPOiB1c2Ugd29ya2VycyB0byBwYXJhbGxlbGl6ZVxudmFyIGRodTQgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGJ0ID0gNjtcbiAgICB2YXIgc3MgPSBvdXQubGVuZ3RoLCBzejEgPSAoc3MgKyAzKSA+PiAyLCBzejIgPSBzejEgPDwgMSwgc3ozID0gc3oxICsgc3oyO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkpLCBvdXQuc3ViYXJyYXkoMCwgc3oxKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFsyXSB8IChkYXRbM10gPDwgOCkpLCBvdXQuc3ViYXJyYXkoc3oxLCBzejIpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzRdIHwgKGRhdFs1XSA8PCA4KSksIG91dC5zdWJhcnJheShzejIsIHN6MyksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0KSwgb3V0LnN1YmFycmF5KHN6MyksIGh1KTtcbn07XG4vLyByZWFkIFpzdGFuZGFyZCBibG9ja1xudmFyIHJ6YiA9IGZ1bmN0aW9uIChkYXQsIHN0LCBvdXQpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIGJ0ID0gc3QuYjtcbiAgICAvLyAgICBieXRlIDAgICAgICAgIGJsb2NrIHR5cGVcbiAgICB2YXIgYjAgPSBkYXRbYnRdLCBidHlwZSA9IChiMCA+PiAxKSAmIDM7XG4gICAgc3QubCA9IGIwICYgMTtcbiAgICB2YXIgc3ogPSAoYjAgPj4gMykgfCAoZGF0W2J0ICsgMV0gPDwgNSkgfCAoZGF0W2J0ICsgMl0gPDwgMTMpO1xuICAgIC8vIGVuZCBieXRlIGZvciBibG9ja1xuICAgIHZhciBlYnQgPSAoYnQgKz0gMykgKyBzejtcbiAgICBpZiAoYnR5cGUgPT0gMSkge1xuICAgICAgICBpZiAoYnQgPj0gZGF0Lmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc3QuYiA9IGJ0ICsgMTtcbiAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgZmlsbChvdXQsIGRhdFtidF0sIHN0LnksIHN0LnkgKz0gc3opO1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsbChuZXcgdTgoc3opLCBkYXRbYnRdKTtcbiAgICB9XG4gICAgaWYgKGVidCA+IGRhdC5sZW5ndGgpXG4gICAgICAgIHJldHVybjtcbiAgICBpZiAoYnR5cGUgPT0gMCkge1xuICAgICAgICBzdC5iID0gZWJ0O1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBvdXQuc2V0KGRhdC5zdWJhcnJheShidCwgZWJ0KSwgc3QueSk7XG4gICAgICAgICAgICBzdC55ICs9IHN6O1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2xjKGRhdCwgYnQsIGVidCk7XG4gICAgfVxuICAgIGlmIChidHlwZSA9PSAyKSB7XG4gICAgICAgIC8vICAgIGJ5dGUgMyAgICAgICAgbGl0IGJ0eXBlICAgICBzaXplIGZvcm1hdFxuICAgICAgICB2YXIgYjMgPSBkYXRbYnRdLCBsYnQgPSBiMyAmIDMsIHNmID0gKGIzID4+IDIpICYgMztcbiAgICAgICAgLy8gbGl0IHNyYyBzaXplICBsaXQgY21wIHN6IDQgc3RyZWFtc1xuICAgICAgICB2YXIgbHNzID0gYjMgPj4gNCwgbGNzID0gMCwgczQgPSAwO1xuICAgICAgICBpZiAobGJ0IDwgMikge1xuICAgICAgICAgICAgaWYgKHNmICYgMSlcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoc2YgJiAyKSAmJiAoZGF0WysrYnRdIDw8IDEyKSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbHNzID0gYjMgPj4gMztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gc2Y7XG4gICAgICAgICAgICBpZiAoc2YgPCAyKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoKGRhdFsrK2J0XSAmIDYzKSA8PCA0KSwgbGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpO1xuICAgICAgICAgICAgZWxzZSBpZiAoc2YgPT0gMilcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgMykgPDwgMTIpLCBsY3MgPSAoZGF0W2J0XSA+PiAyKSB8IChkYXRbKytidF0gPDwgNik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDYzKSA8PCAxMiksIGxjcyA9IChkYXRbYnRdID4+IDYpIHwgKGRhdFsrK2J0XSA8PCAyKSB8IChkYXRbKytidF0gPDwgMTApO1xuICAgICAgICB9XG4gICAgICAgICsrYnQ7XG4gICAgICAgIC8vIGFkZCBsaXRlcmFscyB0byBlbmQgLSBjYW4gbmV2ZXIgb3ZlcmxhcCB3aXRoIGJhY2tyZWZlcmVuY2VzIGJlY2F1c2UgdW51c2VkIGxpdGVyYWxzIGFsd2F5cyBhcHBlbmRlZFxuICAgICAgICB2YXIgYnVmID0gb3V0ID8gb3V0LnN1YmFycmF5KHN0LnksIHN0LnkgKyBzdC5tKSA6IG5ldyB1OChzdC5tKTtcbiAgICAgICAgLy8gc3RhcnRpbmcgcG9pbnQgZm9yIGxpdGVyYWxzXG4gICAgICAgIHZhciBzcGwgPSBidWYubGVuZ3RoIC0gbHNzO1xuICAgICAgICBpZiAobGJ0ID09IDApXG4gICAgICAgICAgICBidWYuc2V0KGRhdC5zdWJhcnJheShidCwgYnQgKz0gbHNzKSwgc3BsKTtcbiAgICAgICAgZWxzZSBpZiAobGJ0ID09IDEpXG4gICAgICAgICAgICBmaWxsKGJ1ZiwgZGF0W2J0KytdLCBzcGwpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGh1ZmZtYW4gdGFibGVcbiAgICAgICAgICAgIHZhciBodSA9IHN0Lmg7XG4gICAgICAgICAgICBpZiAobGJ0ID09IDIpIHtcbiAgICAgICAgICAgICAgICB2YXIgaHVkID0gcmh1KGRhdCwgYnQpO1xuICAgICAgICAgICAgICAgIC8vIHN1YnRyYWN0IGRlc2NyaXB0aW9uIGxlbmd0aFxuICAgICAgICAgICAgICAgIGxjcyArPSBidCAtIChidCA9IGh1ZFswXSk7XG4gICAgICAgICAgICAgICAgc3QuaCA9IGh1ID0gaHVkWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIWh1KVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIChzNCA/IGRodTQgOiBkaHUpKGRhdC5zdWJhcnJheShidCwgYnQgKz0gbGNzKSwgYnVmLnN1YmFycmF5KHNwbCksIGh1KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBudW0gc2VxdWVuY2VzXG4gICAgICAgIHZhciBucyA9IGRhdFtidCsrXTtcbiAgICAgICAgaWYgKG5zKSB7XG4gICAgICAgICAgICBpZiAobnMgPT0gMjU1KVxuICAgICAgICAgICAgICAgIG5zID0gKGRhdFtidCsrXSB8IChkYXRbYnQrK10gPDwgOCkpICsgMHg3RjAwO1xuICAgICAgICAgICAgZWxzZSBpZiAobnMgPiAxMjcpXG4gICAgICAgICAgICAgICAgbnMgPSAoKG5zIC0gMTI4KSA8PCA4KSB8IGRhdFtidCsrXTtcbiAgICAgICAgICAgIC8vIHN5bWJvbCBjb21wcmVzc2lvbiBtb2Rlc1xuICAgICAgICAgICAgdmFyIHNjbSA9IGRhdFtidCsrXTtcbiAgICAgICAgICAgIGlmIChzY20gJiAzKVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIHZhciBkdHMgPSBbZG1sdCwgZG9jdCwgZGxsdF07XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMjsgaSA+IC0xOyAtLWkpIHtcbiAgICAgICAgICAgICAgICB2YXIgbWQgPSAoc2NtID4+ICgoaSA8PCAxKSArIDIpKSAmIDM7XG4gICAgICAgICAgICAgICAgaWYgKG1kID09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmxlIGJ1ZlxuICAgICAgICAgICAgICAgICAgICB2YXIgcmJ1ZiA9IG5ldyB1OChbMCwgMCwgZGF0W2J0KytdXSk7XG4gICAgICAgICAgICAgICAgICAgIGR0c1tpXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM6IHJidWYuc3ViYXJyYXkoMiwgMyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuOiByYnVmLnN1YmFycmF5KDAsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdDogbmV3IHUxNihyYnVmLmJ1ZmZlciwgMCwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBiOiAwXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1kID09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWNjdXJhY3kgbG9nIDggZm9yIG9mZnNldHMsIDkgZm9yIG90aGVyc1xuICAgICAgICAgICAgICAgICAgICBfYSA9IHJmc2UoZGF0LCBidCwgOSAtIChpICYgMSkpLCBidCA9IF9hWzBdLCBkdHNbaV0gPSBfYVsxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobWQgPT0gMykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN0LnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICAgICAgICAgIGR0c1tpXSA9IHN0LnRbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9iID0gc3QudCA9IGR0cywgbWx0ID0gX2JbMF0sIG9jdCA9IF9iWzFdLCBsbHQgPSBfYlsyXTtcbiAgICAgICAgICAgIHZhciBsYiA9IGRhdFtlYnQgLSAxXTtcbiAgICAgICAgICAgIGlmICghbGIpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgdmFyIHNwb3MgPSAoZWJ0IDw8IDMpIC0gOCArIG1zYihsYikgLSBsbHQuYiwgY2J0ID0gc3BvcyA+PiAzLCBvdWJ0ID0gMDtcbiAgICAgICAgICAgIHZhciBsc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGx0LmIpIC0gMSk7XG4gICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvY3QuYikgPj4gMztcbiAgICAgICAgICAgIHZhciBvc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgb2N0LmIpIC0gMSk7XG4gICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbHQuYikgPj4gMztcbiAgICAgICAgICAgIHZhciBtc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWx0LmIpIC0gMSk7XG4gICAgICAgICAgICBmb3IgKCsrbnM7IC0tbnM7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGxsYyA9IGxsdC5zW2xzdF07XG4gICAgICAgICAgICAgICAgdmFyIGxidHIgPSBsbHQubltsc3RdO1xuICAgICAgICAgICAgICAgIHZhciBtbGMgPSBtbHQuc1ttc3RdO1xuICAgICAgICAgICAgICAgIHZhciBtYnRyID0gbWx0Lm5bbXN0XTtcbiAgICAgICAgICAgICAgICB2YXIgb2ZjID0gb2N0LnNbb3N0XTtcbiAgICAgICAgICAgICAgICB2YXIgb2J0ciA9IG9jdC5uW29zdF07XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2ZjKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBvZnAgPSAxIDw8IG9mYztcbiAgICAgICAgICAgICAgICB2YXIgb2ZmID0gb2ZwICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikgfCAoZGF0W2NidCArIDNdIDw8IDI0KSkgPj4+IChzcG9zICYgNykpICYgKG9mcCAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbGJbbWxjXSkgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgbWwgPSBtbGJsW21sY10gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWxiW21sY10pIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IGxsYltsbGNdKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBsbCA9IGxsYmxbbGxjXSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsbGJbbGxjXSkgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGJ0cikgPj4gMztcbiAgICAgICAgICAgICAgICBsc3QgPSBsbHQudFtsc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIG1zdCA9IG1sdC50W21zdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1idHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9idHIpID4+IDM7XG4gICAgICAgICAgICAgICAgb3N0ID0gb2N0LnRbb3N0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgb2J0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgaWYgKG9mZiA+IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1syXSA9IHN0Lm9bMV07XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzBdID0gb2ZmIC09IDM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaWR4ID0gb2ZmIC0gKGxsICE9IDApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBpZHggPT0gMyA/IHN0Lm9bMF0gLSAxIDogc3Qub1tpZHhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA+IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1syXSA9IHN0Lm9bMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzFdID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmY7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsbDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91YnQgKz0gbGwsIHNwbCArPSBsbDtcbiAgICAgICAgICAgICAgICB2YXIgc3RpbiA9IG91YnQgLSBvZmY7XG4gICAgICAgICAgICAgICAgaWYgKHN0aW4gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsZW4gPSAtc3RpbjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJzID0gc3QuZSArIHN0aW47XG4gICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPiBtbClcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IG1sO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gc3Qud1ticyArIGldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG91YnQgKz0gbGVuLCBtbCAtPSBsZW4sIHN0aW4gPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1sOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IGJ1ZltzdGluICsgaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91YnQgKz0gbWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3VidCAhPSBzcGwpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoc3BsIDwgYnVmLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCsrXSA9IGJ1ZltzcGwrK107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG91YnQgPSBidWYubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG91dClcbiAgICAgICAgICAgICAgICBzdC55ICs9IG91YnQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYnVmID0gc2xjKGJ1ZiwgMCwgb3VidCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICAgICAgc3QueSArPSBsc3M7XG4gICAgICAgICAgICAgICAgaWYgKHNwbCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxzczsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZbaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzcGwpXG4gICAgICAgICAgICAgICAgYnVmID0gc2xjKGJ1Ziwgc3BsKTtcbiAgICAgICAgfVxuICAgICAgICBzdC5iID0gZWJ0O1xuICAgICAgICByZXR1cm4gYnVmO1xuICAgIH1cbiAgICBlcnIoMik7XG59O1xuLy8gY29uY2F0XG52YXIgY2N0ID0gZnVuY3Rpb24gKGJ1ZnMsIG9sKSB7XG4gICAgaWYgKGJ1ZnMubGVuZ3RoID09IDEpXG4gICAgICAgIHJldHVybiBidWZzWzBdO1xuICAgIHZhciBidWYgPSBuZXcgdTgob2wpO1xuICAgIGZvciAodmFyIGkgPSAwLCBiID0gMDsgaSA8IGJ1ZnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGNoayA9IGJ1ZnNbaV07XG4gICAgICAgIGJ1Zi5zZXQoY2hrLCBiKTtcbiAgICAgICAgYiArPSBjaGsubGVuZ3RoO1xuICAgIH1cbiAgICByZXR1cm4gYnVmO1xufTtcbi8qKlxuICogRGVjb21wcmVzc2VzIFpzdGFuZGFyZCBkYXRhXG4gKiBAcGFyYW0gZGF0IFRoZSBpbnB1dCBkYXRhXG4gKiBAcGFyYW0gYnVmIFRoZSBvdXRwdXQgYnVmZmVyLiBJZiB1bnNwZWNpZmllZCwgdGhlIGZ1bmN0aW9uIHdpbGwgYWxsb2NhdGVcbiAqICAgICAgICAgICAgZXhhY3RseSBlbm91Z2ggbWVtb3J5IHRvIGZpdCB0aGUgZGVjb21wcmVzc2VkIGRhdGEuIElmIHlvdXJcbiAqICAgICAgICAgICAgZGF0YSBoYXMgbXVsdGlwbGUgZnJhbWVzIGFuZCB5b3Uga25vdyB0aGUgb3V0cHV0IHNpemUsIHNwZWNpZnlpbmdcbiAqICAgICAgICAgICAgaXQgd2lsbCB5aWVsZCBiZXR0ZXIgcGVyZm9ybWFuY2UuXG4gKiBAcmV0dXJucyBUaGUgZGVjb21wcmVzc2VkIGRhdGFcbiAqL1xucmV0dXJuIGZ1bmN0aW9uIGRlY29tcHJlc3MoZGF0LCBidWYpIHtcbiAgICB2YXIgYnQgPSAwLCBidWZzID0gW10sIG5iID0gKyFidWYsIG9sID0gMDtcbiAgICBmb3IgKDsgZGF0Lmxlbmd0aDspIHtcbiAgICAgICAgdmFyIHN0ID0gcnpmaChkYXQsIG5iIHx8IGJ1Zik7XG4gICAgICAgIGlmICh0eXBlb2Ygc3QgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmIChuYikge1xuICAgICAgICAgICAgICAgIGJ1ZiA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKHN0LncubGVuZ3RoID09IHN0LnUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJ1ZiA9IHN0LncpO1xuICAgICAgICAgICAgICAgICAgICBvbCArPSBzdC51O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChidWYpO1xuICAgICAgICAgICAgICAgIHN0LmUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICg7ICFzdC5sOykge1xuICAgICAgICAgICAgICAgIHZhciBibGsgPSByemIoZGF0LCBzdCwgYnVmKTtcbiAgICAgICAgICAgICAgICBpZiAoIWJsaylcbiAgICAgICAgICAgICAgICAgICAgZXJyKDUpO1xuICAgICAgICAgICAgICAgIGlmIChidWYpXG4gICAgICAgICAgICAgICAgICAgIHN0LmUgPSBzdC55O1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBidWZzLnB1c2goYmxrKTtcbiAgICAgICAgICAgICAgICAgICAgb2wgKz0gYmxrLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgY3B3KHN0LncsIDAsIGJsay5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICBzdC53LnNldChibGssIHN0LncubGVuZ3RoIC0gYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnQgPSBzdC5iICsgKHN0LmMgKiA0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBidCA9IHN0O1xuICAgICAgICBkYXQgPSBkYXQuc3ViYXJyYXkoYnQpO1xuICAgIH1cbiAgICByZXR1cm4gY2N0KGJ1ZnMsIG9sKTtcbn1cbn0pICgpXG5cblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246IDwgNS4xLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjEuMFxuLy9WZXJzaW9uOiA8IDUuMS4xXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjEuMVxuLy9WZXJzaW9uOiA8IDUuMi4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4yXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfenN0ZF9pbml0aWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjEuMVxuZnVuY3Rpb24gY2FtbF96c3RkX2luaXRpYWxpemUodW5pdCkge1xuICBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG4gIHJldHVybiAxXG59XG5cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBXZWFrIEFQSVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxudmFyIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ID0gM1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfZGF0YV9vZmZzZXQgPSAyXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2tleSh4LCBpLCB2KSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIGlmICh2IGluc3RhbmNlb2YgT2JqZWN0ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKHhbMV0ucmVnaXN0ZXIpIHhbMV0ucmVnaXN0ZXIodiwgdW5kZWZpbmVkLCB2KTtcbiAgICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSBuZXcgZ2xvYmFsVGhpcy5XZWFrUmVmKHYpO1xuICB9XG4gIGVsc2UgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdjtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2tleSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYgJiYgeFsxXS51bnJlZ2lzdGVyKSB7XG4gICAgdmFyIG9sZCA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXS5kZXJlZigpO1xuICAgIGlmKG9sZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgY291bnQgPSAwXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKXtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKVxuICAgICAgICAgIGlmKGtleSA9PT0gb2xkKSBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZihjb3VudCA9PSAxKSB4WzFdLnVucmVnaXN0ZXIob2xkKTtcbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMFxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19jcmVhdGUsIGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NyZWF0ZSAobikge1xuICB2YXIgeCA9IGNhbWxfd2Vha19jcmVhdGUobik7XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF93ZWFrX2NyZWF0ZSAobikge1xuICBpZiAobiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgdmFyIHggPSBbMjUxLFwiY2FtbF9lcGhlX2xpc3RfaGVhZFwiXTtcbiAgeC5sZW5ndGggPSBjYW1sX2VwaGVfa2V5X29mZnNldCArIG47XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9zZXRfa2V5LCBjYW1sX2VwaGVfdW5zZXRfa2V5XG5mdW5jdGlvbiBjYW1sX3dlYWtfc2V0KHgsIGksIHYpIHtcbiAgaWYodiA9PSAwKSBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsaSlcbiAgZWxzZSBjYW1sX2VwaGVfc2V0X2tleSh4LGksdlsxXSlcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF93ZWFrX2dldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9rZXkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2tleVwiKTtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSBdO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgcmV0dXJuICh3ZWFrPT09dW5kZWZpbmVkKT8wOlswLCB3ZWFrXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfa2V5LGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXAsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF93ZWFrX2dldF9jb3B5XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmdldF9jb3B5XCIpO1xuICB2YXIgeSA9IGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpO1xuICBpZiAoeSA9PT0gMCkgcmV0dXJuIHk7XG4gIHZhciB6ID0geVsxXTtcbiAgaWYgKHogaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeildO1xuICByZXR1cm4geTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2tleSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9BbGlhczogY2FtbF93ZWFrX2NoZWNrXG5mdW5jdGlvbiBjYW1sX2VwaGVfY2hlY2tfa2V5KHgsIGkpIHtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV07XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB3ZWFrID0gd2Vhay5kZXJlZigpO1xuICBpZih3ZWFrPT09dW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2tleVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9BbGlhczogY2FtbF93ZWFrX2JsaXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2tleShhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIC8vIG1pbnVzIG9uZSBiZWNhdXNlIGNhbWxfYXJyYXlfYmxpdCB3b3JrcyBvbiBvY2FtbCBhcnJheVxuICBjYW1sX2FycmF5X2JsaXQoYTEsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTEgLSAxLFxuICAgICAgICAgICAgICAgICAgYTIsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTIgLSAxLFxuICAgICAgICAgICAgICAgICAgbGVuKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX3NldF9kYXRhLCBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfZGF0YShzcmMsIGRzdCl7XG4gIHZhciBuID0gc3JjW2NhbWxfZXBoZV9kYXRhX29mZnNldF07XG4gIGlmKG4gPT09IHVuZGVmaW5lZCkgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoZHN0KTtcbiAgZWxzZSBjYW1sX2VwaGVfc2V0X2RhdGEoZHN0LCBuKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF1dO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXBcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5KHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGEoeCwgZGF0YSl7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoISAoeFsxXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkpKSB7XG4gICAgICB4WzFdID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKCkgeyBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KSB9KTtcbiAgICAgIC8vcmVnaXN0ZXIgYWxsIGtleXNcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKTtcbiAgICAgICAgICBpZihrZXkpIHhbMV0ucmVnaXN0ZXIoa2V5LCB1bmRlZmluZWQsIGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gZGF0YTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KXtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZih4WzFdIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSl7XG4gICAgICAvL3VucmVnaXN0ZXIgYWxsIGtleXNcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKTtcbiAgICAgICAgICBpZihrZXkpIHhbMV0udW5yZWdpc3RlcihrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuIiwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2ModHJ1ZSk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2Z1bGxfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfZnVsbF9tYWpvcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYygpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19jb21wYWN0aW9uXG5mdW5jdGlvbiBjYW1sX2djX2NvbXBhY3Rpb24oKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvdW50ZXJzXG5mdW5jdGlvbiBjYW1sX2djX2NvdW50ZXJzKCkgeyByZXR1cm4gWzI1NCwwLDAsMF0gfVxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG4vL1ZlcnNpb246ID49IDQuMTJcbmZ1bmN0aW9uIGNhbWxfZ2NfcXVpY2tfc3RhdCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbi8vVmVyc2lvbjogPCA0LjEyXG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3N0YXRcbi8vUmVxdWlyZXM6IGNhbWxfZ2NfcXVpY2tfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19zdGF0KCkge1xuICByZXR1cm4gY2FtbF9nY19xdWlja19zdGF0KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc2V0XG5mdW5jdGlvbiBjYW1sX2djX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19nZXRcbmZ1bmN0aW9uIGNhbWxfZ2NfZ2V0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zZXRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXIgKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXG52YXIgYWxsX2ZpbmFsaXplcnMgPSBuZXcgZ2xvYmFsVGhpcy5TZXQoKVxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSAoY2IsIGEpIHtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBhIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgdmFyIHggPSBuZXcgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbiAoeCl7YWxsX2ZpbmFsaXplcnMuZGVsZXRlKHgpOyBjYigwKTsgcmV0dXJuO30pO1xuICAgIHgucmVnaXN0ZXIoYSx4KTtcbiAgICBhbGxfZmluYWxpemVycy5hZGQoeCk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVsZWFzZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWxlYXNlICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RhcnQocmF0ZSxzdGFja19zaXplLHRyYWNrZXIpe1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0b3BcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdG9wKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9kaXNjYXJkXG5mdW5jdGlvbiBjYW1sX21lbXByb2ZfZGlzY2FyZCh0KSB7IHJldHVybiAwIH1cblxuLy9Qcm92aWRlczogY2FtbF9ldmVudGxvZ19yZXN1bWVcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcmVzdW1lKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ldmVudGxvZ19wYXVzZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19wYXVzZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudFxuZnVuY3Rpb24gY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50KHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19tYWpvcl9zbGljZVxuZnVuY3Rpb24gY2FtbF9nY19tYWpvcl9zbGljZSh3b3JrKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3Jfd29yZHNcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3Jfd29yZHModW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9taW5vcl9mcmVlXG5mdW5jdGlvbiBjYW1sX2dldF9taW5vcl9mcmVlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfYnVja2V0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9idWNrZXQobikgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9jcmVkaXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2NyZWRpdChuKSB7IHJldHVybiAwOyB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEZvcm1hdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2Zvcm1hdFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2Zvcm1hdCAoZm10KSB7XG4gIGZtdCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KTtcbiAgdmFyIGxlbiA9IGZtdC5sZW5ndGg7XG4gIGlmIChsZW4gPiAzMSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZm9ybWF0X2ludDogZm9ybWF0IHRvbyBsb25nXCIpO1xuICB2YXIgZiA9XG4gICAgICB7IGp1c3RpZnk6JysnLCBzaWduc3R5bGU6Jy0nLCBmaWxsZXI6JyAnLCBhbHRlcm5hdGU6ZmFsc2UsXG4gICAgICAgIGJhc2U6MCwgc2lnbmVkY29udjpmYWxzZSwgd2lkdGg6MCwgdXBwZXJjYXNlOmZhbHNlLFxuICAgICAgICBzaWduOjEsIHByZWM6LTEsIGNvbnY6J2YnIH07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGZtdC5jaGFyQXQoaSk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSAnLSc6XG4gICAgICBmLmp1c3RpZnkgPSAnLSc7IGJyZWFrO1xuICAgIGNhc2UgJysnOiBjYXNlICcgJzpcbiAgICAgIGYuc2lnbnN0eWxlID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnMCc6XG4gICAgICBmLmZpbGxlciA9ICcwJzsgYnJlYWs7XG4gICAgY2FzZSAnIyc6XG4gICAgICBmLmFsdGVybmF0ZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzpcbiAgICBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzpcbiAgICAgIGYud2lkdGggPSAwO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLndpZHRoID0gZi53aWR0aCAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgICBicmVhaztcbiAgICBjYXNlICcuJzpcbiAgICAgIGYucHJlYyA9IDA7XG4gICAgICBpKys7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYucHJlYyA9IGYucHJlYyAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgY2FzZSAnZCc6IGNhc2UgJ2knOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlICd1JzpcbiAgICAgIGYuYmFzZSA9IDEwOyBicmVhaztcbiAgICBjYXNlICd4JzpcbiAgICAgIGYuYmFzZSA9IDE2OyBicmVhaztcbiAgICBjYXNlICdYJzpcbiAgICAgIGYuYmFzZSA9IDE2OyBmLnVwcGVyY2FzZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJ28nOlxuICAgICAgZi5iYXNlID0gODsgYnJlYWs7XG4gICAgY2FzZSAnZSc6IGNhc2UgJ2YnOiBjYXNlICdnJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYuY29udiA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJ0UnOiBjYXNlICdGJzogY2FzZSAnRyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLnVwcGVyY2FzZSA9IHRydWU7XG4gICAgICBmLmNvbnYgPSBjLnRvTG93ZXJDYXNlICgpOyBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcmF3YnVmZmVyKSB7XG4gIGlmIChmLnVwcGVyY2FzZSkgcmF3YnVmZmVyID0gcmF3YnVmZmVyLnRvVXBwZXJDYXNlKCk7XG4gIHZhciBsZW4gPSByYXdidWZmZXIubGVuZ3RoO1xuICAvKiBBZGp1c3QgbGVuIHRvIHJlZmxlY3QgYWRkaXRpb25hbCBjaGFycyAoc2lnbiwgZXRjKSAqL1xuICBpZiAoZi5zaWduZWRjb252ICYmIChmLnNpZ24gPCAwIHx8IGYuc2lnbnN0eWxlICE9ICctJykpIGxlbisrO1xuICBpZiAoZi5hbHRlcm5hdGUpIHtcbiAgICBpZiAoZi5iYXNlID09IDgpIGxlbiArPSAxO1xuICAgIGlmIChmLmJhc2UgPT0gMTYpIGxlbiArPSAyO1xuICB9XG4gIC8qIERvIHRoZSBmb3JtYXR0aW5nICovXG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnICcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgaWYgKGYuc2lnbmVkY29udikge1xuICAgIGlmIChmLnNpZ24gPCAwKSBidWZmZXIgKz0gJy0nO1xuICAgIGVsc2UgaWYgKGYuc2lnbnN0eWxlICE9ICctJykgYnVmZmVyICs9IGYuc2lnbnN0eWxlO1xuICB9XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gOCkgYnVmZmVyICs9ICcwJztcbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSAxNikgYnVmZmVyICs9IGYudXBwZXJjYXNlP1wiMFhcIjpcIjB4XCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcwJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJzAnO1xuICBidWZmZXIgKz0gcmF3YnVmZmVyO1xuICBpZiAoZi5qdXN0aWZ5ID09ICctJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhidWZmZXIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZVxudmFyIGNhbWxfZ3Jfc3RhdGU7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfZ2V0KCkge1xuICBpZihjYW1sX2dyX3N0YXRlKSB7XG4gICAgcmV0dXJuIGNhbWxfZ3Jfc3RhdGU7XG4gIH1cbiAgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLGNhbWxfbmFtZWRfdmFsdWUoXCJHcmFwaGljcy5HcmFwaGljX2ZhaWx1cmVcIiksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJOb3QgaW5pdGlhbGl6ZWRcIildKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlLGNhbWxfZ3Jfc3RhdGVfaW5pdFxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KSB7XG4gIGNhbWxfZ3Jfc3RhdGU9Y3R4O1xuICBjYW1sX2dyX3N0YXRlX2luaXQoKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fZ3JhcGgoaW5mbyl7XG4gIHZhciBpbmZvID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoaW5mbyk7XG4gIGZ1bmN0aW9uIGdldChuYW1lKXtcbiAgICB2YXIgcmVzID0gaW5mby5tYXRjaChcIihefCwpICpcIituYW1lK1wiICo9ICooW2EtekEtWjAtOV9dKykgKigsfCQpXCIpO1xuICAgIGlmKHJlcykgcmV0dXJuIHJlc1syXTtcbiAgfVxuICB2YXIgc3BlY3MgPSBbXTtcbiAgaWYoIShpbmZvPT1cIlwiKSkgc3BlY3MucHVzaChpbmZvKTtcbiAgdmFyIHRhcmdldCA9IGdldChcInRhcmdldFwiKTtcbiAgaWYoIXRhcmdldCkgdGFyZ2V0PVwiXCI7XG4gIHZhciBzdGF0dXMgPSBnZXQoXCJzdGF0dXNcIik7XG4gIGlmKCFzdGF0dXMpIHNwZWNzLnB1c2goXCJzdGF0dXM9MVwiKVxuXG4gIHZhciB3ID0gZ2V0KFwid2lkdGhcIik7XG4gIHcgPSB3P3BhcnNlSW50KHcpOjIwMDtcbiAgc3BlY3MucHVzaChcIndpZHRoPVwiK3cpO1xuXG4gIHZhciBoID0gZ2V0KFwiaGVpZ2h0XCIpO1xuICBoID0gaD9wYXJzZUludChoKToyMDA7XG4gIHNwZWNzLnB1c2goXCJoZWlnaHQ9XCIraCk7XG5cbiAgdmFyIHdpbiA9IGdsb2JhbFRoaXMub3BlbihcImFib3V0OmJsYW5rXCIsdGFyZ2V0LHNwZWNzLmpvaW4oXCIsXCIpKTtcbiAgaWYoIXdpbikge2NhbWxfZmFpbHdpdGgoXCJHcmFwaGljcy5vcGVuX2dyYXBoOiBjYW5ub3Qgb3BlbiB0aGUgd2luZG93XCIpfVxuICB2YXIgZG9jID0gd2luLmRvY3VtZW50O1xuICB2YXIgY2FudmFzID0gZG9jLmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNhbnZhcy53aWR0aCA9IHc7XG4gIGNhbnZhcy5oZWlnaHQgPSBoO1xuICB2YXIgY3R4ID0gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCk7XG4gIGN0eC5zZXRfdGl0bGUgPSBmdW5jdGlvbiAodGl0bGUpIHtcbiAgICBkb2MudGl0bGUgPSB0aXRsZTtcbiAgfTtcbiAgY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KTtcbiAgdmFyIGJvZHkgPSBkb2MuYm9keTtcbiAgYm9keS5zdHlsZS5tYXJnaW4gPSBcIjBweFwiO1xuICBib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2luaXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yLGNhbWxfZ3JfbW92ZXRvLGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aCxjYW1sX2dyX3NldF90ZXh0X3NpemUsY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2luaXQoKXtcbiAgY2FtbF9ncl9tb3ZldG8oY2FtbF9ncl9zdGF0ZS54LGNhbWxfZ3Jfc3RhdGUueSk7XG4gIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyhjYW1sX2dyX3N0YXRlLndpZHRoLGNhbWxfZ3Jfc3RhdGUuaGVpZ2h0KTtcbiAgY2FtbF9ncl9zZXRfbGluZV93aWR0aChjYW1sX2dyX3N0YXRlLmxpbmVfd2lkdGgpO1xuICBjYW1sX2dyX3NldF90ZXh0X3NpemUoY2FtbF9ncl9zdGF0ZS50ZXh0X3NpemUpO1xuICBjYW1sX2dyX3NldF9mb250KGNhbWxfZ3Jfc3RhdGUuZm9udCk7XG4gIGNhbWxfZ3Jfc2V0X2NvbG9yKGNhbWxfZ3Jfc3RhdGUuY29sb3IpO1xuICBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUoY2FtbF9ncl9zdGF0ZS50aXRsZSk7XG4gIC8vY2FtbF9ncl9yZXNpemVfd2luZG93IG1pZ2h0IHJlc2V0IHNvbWUgY2FudmFzJyBwcm9wZXJ0aWVzXG4gIGNhbWxfZ3Jfc3RhdGUuY29udGV4dC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpe1xuICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICBjYW52YXMgOiBjYW52YXMsXG4gICAgeCA6IDAsXG4gICAgeSA6IDAsXG4gICAgd2lkdGggOiB3LFxuICAgIGhlaWdodCA6IGgsXG4gICAgbGluZV93aWR0aCA6IDEsXG4gICAgZm9udCA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJmaXhlZFwiKSxcbiAgICB0ZXh0X3NpemUgOiAyNixcbiAgICBjb2xvciA6IDB4MDAwMDAwLFxuICAgIHRpdGxlIDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKVxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RvY19vZl9zdGF0ZVxuZnVuY3Rpb24gY2FtbF9ncl9kb2Nfb2Zfc3RhdGUoc3RhdGUpIHtcbiAgaWYoc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQpXG4gICAgcmV0dXJuIHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gMDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUobmFtZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50aXRsZSA9IG5hbWU7XG4gIHZhciBqc25hbWUgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYocy5zZXRfdGl0bGUpIHMuc2V0X3RpdGxlKGpzbmFtZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3codyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpXG4gIHMud2lkdGggPSB3O1xuICBzLmhlaWdodCA9IGg7XG4gIHMuY2FudmFzLndpZHRoID0gdztcbiAgcy5jYW52YXMuaGVpZ2h0ID0gaDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xlYXJfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NsZWFyX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSBzLndpZHRoO1xuICBzLmNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgLy8gIHMuY29udGV4dC5zdHJva2VSZWN0ICgwLiwgMC4sIHMud2lkdGgsIHMuaGVpZ2h0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy53aWR0aDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5oZWlnaHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9jb2xvcihjb2xvcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgZnVuY3Rpb24gY29udmVydChudW1iZXIpIHtcbiAgICB2YXIgc3RyID0gJycgKyBudW1iZXIudG9TdHJpbmcoMTYpO1xuICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgMikgc3RyID0gJzAnICsgc3RyO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgdmFyXG4gIHIgPSAoY29sb3IgPj4gMTYpICYgMHhmZixcbiAgZyA9IChjb2xvciA+PiA4KSAgJiAweGZmLFxuICBiID0gKGNvbG9yID4+IDApICAmIDB4ZmY7XG4gIHMuY29sb3I9Y29sb3I7XG4gIHZhciBjX3N0ciA9ICcjJyArIGNvbnZlcnQocikgKyBjb252ZXJ0KGcpICsgY29udmVydChiKTtcbiAgcy5jb250ZXh0LmZpbGxTdHlsZSA9ICAgY19zdHI7XG4gIHMuY29udGV4dC5zdHJva2VTdHlsZSA9IGNfc3RyO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcGxvdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcGxvdCh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgdmFyIGNvbG9yID0gcy5jb2xvcjtcbiAgZFswXSA9IChjb2xvciA+PiAxNikgJiAweGZmOyAvL3JcbiAgZFsxXSA9IChjb2xvciA+PiA4KSAgJiAweGZmLCAvL2dcbiAgZFsyXSA9IChjb2xvciA+PiAwKSAgJiAweGZmOyAvL2JcbiAgZFszXSA9IDB4RkY7IC8vYVxuICBzLng9eDtcbiAgcy55PXk7XG4gIHMuY29udGV4dC5wdXRJbWFnZURhdGEoaW0seCxzLmhlaWdodCAtIHkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9wb2ludF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcG9pbnRfY29sb3IoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0geSwxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHJldHVybiAoZFswXSA8PCAxNikgKyAoZFsxXSA8PCA4KSArIGRbMl07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21vdmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbW92ZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnhcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy55XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2xpbmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbGluZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMuY29udGV4dC5saW5lVG8oeCxzLmhlaWdodCAtIHkpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5zdHJva2VSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2FyY19hdXgoY3R4LGN4LGN5LHJ5LHJ4LGExLGEyKXtcbiAgd2hpbGUoYTE+YTIpIGEyKz0zNjA7XG4gIGExIC89IDE4MDtcbiAgYTIgLz0gMTgwO1xuICB2YXIgcm90ID0gMCx4UG9zLHlQb3MseFBvc19wcmV2LHlQb3NfcHJldjtcbiAgdmFyIHNwYWNlID0gMjtcbiAgdmFyIG51bSA9ICgoKGEyIC0gYTEpICogTWF0aC5QSSAqICgocngrcnkpLzIpKSAvIHNwYWNlKSB8IDA7XG4gIHZhciBkZWx0YSA9IChhMiAtIGExKSAqIE1hdGguUEkgLyBudW07XG4gIHZhciBpID0gYTEgKiBNYXRoLlBJO1xuICBmb3IgKHZhciBqPTA7ajw9bnVtO2orKyl7XG4gICAgeFBvcyA9IGN4IC0gKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB4UG9zID0geFBvcy50b0ZpeGVkKDIpO1xuICAgIHlQb3MgPSBjeSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeVBvcyA9IHlQb3MudG9GaXhlZCgyKTtcbiAgICBpZiAoaj09MCkge1xuICAgICAgY3R4Lm1vdmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9IGVsc2UgaWYgKHhQb3NfcHJldiE9eFBvcyB8fCB5UG9zX3ByZXYhPXlQb3Mpe1xuICAgICAgY3R4LmxpbmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9XG4gICAgeFBvc19wcmV2PXhQb3M7XG4gICAgeVBvc19wcmV2PXlQb3M7XG4gICAgaS09IGRlbHRhOy8vY2N3XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9saW5lX3dpZHRoKHcpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMubGluZV93aWR0aCA9IHc7XG4gIHMuY29udGV4dC5saW5lV2lkdGggPSB3XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5maWxsUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcG9seVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9wb2x5KGFyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIGZvcih2YXIgaSA9IDI7IGkgPCBhci5sZW5ndGg7IGkrKylcbiAgICBzLmNvbnRleHQubGluZVRvKGFyW2ldWzFdLHMuaGVpZ2h0IC0gYXJbaV1bMl0pO1xuICBzLmNvbnRleHQubGluZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cihzdHIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBtID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KHN0cik7XG4gIHZhciBkeCA9IG0ud2lkdGg7XG4gIHMuY29udGV4dC5maWxsVGV4dChzdHIscy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy54ICs9IGR4IHwgMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfY2hhcihjKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyaW5nKHN0cil7XG4gIGNhbWxfZ3JfZHJhd19zdHIoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3RyKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2ZvbnQoZil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5mb250ID0gZjtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShzaXplKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRleHRfc2l6ZSA9IHNpemU7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfdGV4dF9zaXplKHR4dCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIHcgPSBzLmNvbnRleHQubWVhc3VyZVRleHQoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcodHh0KSkud2lkdGg7XG4gIHJldHVybiBbMCx3LHMudGV4dF9zaXplXTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21ha2VfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21ha2VfaW1hZ2UoYXJyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaCA9IGFyci5sZW5ndGggLSAxIDtcbiAgdmFyIHcgPSBhcnJbMV0ubGVuZ3RoIC0gMTtcbiAgdmFyIGltID0gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh3LGgpO1xuICBmb3IodmFyIGk9MDtpPGg7aSsrKXtcbiAgICBmb3IodmFyIGo9MDtqPHc7aisrKXtcbiAgICAgIHZhciBjID0gYXJyW2krMV1baisxXTtcbiAgICAgIHZhciBvID0gaSoodyo0KSArIChqICogNCk7XG4gICAgICBpZihjID09IC0xKSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gYyA+PiAxNiAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gYyA+PiAgOCAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gYyA+PiAgMCAmIDBYZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2R1bXBfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2R1bXBfaW1hZ2UoaW0pe1xuICB2YXIgZGF0YSA9IFswXVxuICBmb3IodmFyIGk9MDsgaTxpbS5oZWlnaHQ7aSsrKXtcbiAgICBkYXRhW2krMV0gPSBbMF1cbiAgICBmb3IodmFyIGo9MDsgajxpbS53aWR0aDtqKyspe1xuICAgICAgdmFyIG8gPSBpKihpbS53aWR0aCo0KSArIChqICogNCksXG4gICAgICAgICAgciA9IGltLmRhdGFbbyswXSxcbiAgICAgICAgICBnID0gaW0uZGF0YVtvKzFdLFxuICAgICAgICAgIGIgPSBpbS5kYXRhW28rMl07XG4gICAgICBkYXRhW2krMV1baisxXSA9IChyIDw8IDE2KSArIChnIDw8IDgpICsgYlxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgaWYoIWltLmltYWdlKSB7XG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gICAgY2FudmFzLmdldENvbnRleHQoXCIyZFwiKS5wdXRJbWFnZURhdGEoaW0sMCwwKTtcbiAgICB2YXIgaW1hZ2UgPSBuZXcgZ2xvYmFsVGhpcy5JbWFnZSgpO1xuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICAgICAgaW0uaW1hZ2UgPSBpbWFnZTtcbiAgICB9XG4gICAgaW1hZ2Uuc3JjID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcbiAgfSBlbHNlIHtcbiAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltLmltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3JlYXRlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jcmVhdGVfaW1hZ2UoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh4LHkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9ibGl0X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9ibGl0X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltMiA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHksaW0ud2lkdGgsaW0uaGVpZ2h0KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbTIuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgIGltLmRhdGFbaV0gPSBpbTIuZGF0YVtpXTtcbiAgICBpbS5kYXRhW2krMV0gPSBpbTIuZGF0YVtpKzFdO1xuICAgIGltLmRhdGFbaSsyXSA9IGltMi5kYXRhW2krMl07XG4gICAgaW0uZGF0YVtpKzNdID0gaW0yLmRhdGFbaSszXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9faGFuZGxlclxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19oYW5kbGVyKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19zaWduYWwoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2FpdF9ldmVudFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93YWl0X2V2ZW50KF9ldmwpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93YWl0X2V2ZW50IG5vdCBJbXBsZW1lbnRlZDogdXNlIEdyYXBoaWNzX2pzIGluc3RlYWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3luY2hyb25pemVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3luY2hyb25pemUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9zeW5jaHJvbml6ZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3JlbWVtYmVyX21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVtZW1iZXJfbW9kZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3JlbWVtYmVyX21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kaXNwbGF5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfZGlzcGxheV9tb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9kaXNwbGF5X21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dpbmRvd19pZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93aW5kb3dfaWQoYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93aW5kb3dfaWQgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fc3Vid2luZG93KGEsYixjLGQpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3coYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgbGlicmFyeVxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEpzbGliOiBjb2RlIHNwZWNpZmljIHRvIEpzX29mX29jYW1sXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb25faWUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfb25faWUgKCkge1xuICB2YXIgdWEgPVxuICAgICAgKGdsb2JhbFRoaXMubmF2aWdhdG9yJiZnbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQpXG4gICAgICA/Z2xvYmFsVGhpcy5uYXZpZ2F0b3IudXNlckFnZW50OlwiXCI7XG4gIHJldHVybiB1YS5pbmRleE9mKFwiTVNJRVwiKSAhPSAtMSAmJiB1YS5pbmRleE9mKFwiT3BlcmFcIikgIT0gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VzY2FwZSBjb25zdCAoY29uc3QpXG52YXIgY2FtbF9qc19yZWdleHBzID0geyBhbXA6LyYvZywgbHQ6LzwvZywgcXVvdDovXFxcIi9nLCBhbGw6L1smPFxcXCJdLyB9O1xuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VzY2FwZSAocykge1xuICBpZiAoIWNhbWxfanNfcmVnZXhwcy5hbGwudGVzdChzKSkgcmV0dXJuIHM7XG4gIHJldHVybiBzLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmFtcCwgXCImYW1wO1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5sdCwgXCImbHQ7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLnF1b3QsIFwiJnF1b3Q7XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZW50aXRpZXNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lbnRpdGllcyhzKSB7XG4gIHZhciBlbnRpdHkgPSAvXiYjP1swLTlhLXpBLVpdKzskL1xuICBpZihzLm1hdGNoKGVudGl0eSkpXG4gIHtcbiAgICB2YXIgc3RyLCB0ZW1wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICAgIHRlbXAuaW5uZXJIVE1MPSBzO1xuICAgIHN0cj0gdGVtcC50ZXh0Q29udGVudCB8fCB0ZW1wLmlubmVyVGV4dDtcbiAgICB0ZW1wPW51bGw7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiSW52YWxpZCBlbnRpdHkgXCIgKyBzKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldF9jb25zb2xlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX2dldF9jb25zb2xlICgpIHtcbiAgdmFyIGMgPSBjb25zb2xlO1xuICB2YXIgbSA9IFtcImxvZ1wiLCBcImRlYnVnXCIsIFwiaW5mb1wiLCBcIndhcm5cIiwgXCJlcnJvclwiLCBcImFzc2VydFwiLCBcImRpclwiLCBcImRpcnhtbFwiLFxuICAgICAgICAgICBcInRyYWNlXCIsIFwiZ3JvdXBcIiwgXCJncm91cENvbGxhcHNlZFwiLCBcImdyb3VwRW5kXCIsIFwidGltZVwiLCBcInRpbWVFbmRcIl07XG4gIGZ1bmN0aW9uIGYgKCkge31cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtLmxlbmd0aDsgaSsrKSBpZiAoIWNbbVtpXV0pIGNbbVtpXV09ZjtcbiAgcmV0dXJuIGM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlKHVuaXQpe1xuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5YTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuWE1MSHR0cFJlcXVlc3QgfSBjYXRjaCAoZSkgeyB9O1xuICB9XG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNc3htbDIuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwzLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gIH1cbiAgY2FtbF9mYWlsd2l0aChcIkNhbm5vdCBjcmVhdGUgYSBYTUxIdHRwUmVxdWVzdFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIGV4bi5qc19lcnJvcjsgfVxuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBsZXhpbmcuYyA2MDQ1IDIwMDQtMDEtMDEgMTY6NDI6NDNaIGRvbGlnZXogJCAqL1xuXG4vKiBUaGUgdGFibGUtZHJpdmVuIGF1dG9tYXRvbiBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4LiAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9sZXhfYXJyYXkocykge1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTtcbiAgdmFyIGwgPSBzLmxlbmd0aCAvIDI7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKylcbiAgICBhW2ldID0gKHMuY2hhckNvZGVBdCgyICogaSkgfCAocy5jaGFyQ29kZUF0KDIgKiBpICsgMSkgPDwgOCkpIDw8IDE2ID4+IDE2O1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheSwgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxleGJ1Zikge1xuICB2YXIgbGV4X2J1ZmZlciA9IDI7XG4gIHZhciBsZXhfYnVmZmVyX2xlbiA9IDM7XG4gIHZhciBsZXhfc3RhcnRfcG9zID0gNTtcbiAgdmFyIGxleF9jdXJyX3BvcyA9IDY7XG4gIHZhciBsZXhfbGFzdF9wb3MgPSA3O1xuICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gODtcbiAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDk7XG4gIHZhciBsZXhfYmFzZSA9IDE7XG4gIHZhciBsZXhfYmFja3RyayA9IDI7XG4gIHZhciBsZXhfZGVmYXVsdCA9IDM7XG4gIHZhciBsZXhfdHJhbnMgPSA0O1xuICB2YXIgbGV4X2NoZWNrID0gNTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSByZXR1cm4gLWJhc2UtMTtcbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKXtcbiAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKVxuICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2VcbiAgICAgICAgYyA9IDI1NjtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovXG4gICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdICsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIGlmICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0ZSlcbiAgICAgIHN0YXRlID0gdGJsLmxleF90cmFuc1tiYXNlICsgY107XG4gICAgZWxzZVxuICAgICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09IC0xKVxuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwibGV4aW5nOiBlbXB0eSB0b2tlblwiKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dO1xuICAgIH1lbHNle1xuICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzXG4gICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpXG4gICAgICAqL1xuICAgICAgaWYgKGMgPT0gMjU2KSBsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7XG4gICAgfVxuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qIE5ldyBsZXhlciBlbmdpbmUsIHdpdGggbWVtb3J5IG9mIHBvc2l0aW9ucyAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLy9Qcm92aWRlczogY2FtbF9uZXdfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl9tZW0ocywgaSwgbWVtLCBjdXJyX3Bvcykge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChkc3QgPT0gMHhmZikgcmV0dXJuO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gY3Vycl9wb3M7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9sZXhfcnVuX3RhZyhzLCBpLCBtZW0pIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybiA7XG4gICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChzcmMgPT0gMHhmZilcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSAtMTtcbiAgICBlbHNlXG4gICAgICBtZW0gW2RzdCArIDFdID0gbWVtIFtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX25ld19sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxleGJ1Zikge1xuICB2YXIgbGV4X2J1ZmZlciA9IDI7XG4gIHZhciBsZXhfYnVmZmVyX2xlbiA9IDM7XG4gIHZhciBsZXhfc3RhcnRfcG9zID0gNTtcbiAgdmFyIGxleF9jdXJyX3BvcyA9IDY7XG4gIHZhciBsZXhfbGFzdF9wb3MgPSA3O1xuICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gODtcbiAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDk7XG4gIHZhciBsZXhfbWVtID0gMTA7XG4gIHZhciBsZXhfYmFzZSA9IDE7XG4gIHZhciBsZXhfYmFja3RyayA9IDI7XG4gIHZhciBsZXhfZGVmYXVsdCA9IDM7XG4gIHZhciBsZXhfdHJhbnMgPSA0O1xuICB2YXIgbGV4X2NoZWNrID0gNTtcbiAgdmFyIGxleF9iYXNlX2NvZGUgPSA2O1xuICB2YXIgbGV4X2JhY2t0cmtfY29kZSA9IDc7XG4gIHZhciBsZXhfZGVmYXVsdF9jb2RlID0gODtcbiAgdmFyIGxleF90cmFuc19jb2RlID0gOTtcbiAgdmFyIGxleF9jaGVja19jb2RlID0gMTA7XG4gIHZhciBsZXhfY29kZSA9IDExO1xuXG4gIGlmICghdGJsLmxleF9kZWZhdWx0KSB7XG4gICAgdGJsLmxleF9iYXNlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV0pO1xuICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF0pO1xuICB9XG4gIGlmICghdGJsLmxleF9kZWZhdWx0X2NvZGUpIHtcbiAgICB0YmwubGV4X2Jhc2VfY29kZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VfY29kZV0pO1xuICAgIHRibC5sZXhfYmFja3Rya19jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya19jb2RlXSk7XG4gICAgdGJsLmxleF9jaGVja19jb2RlID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja19jb2RlXSk7XG4gICAgdGJsLmxleF90cmFuc19jb2RlID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc19jb2RlXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0X2NvZGUgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0X2NvZGVdKTtcbiAgfVxuICBpZiAodGJsLmxleF9jb2RlID09IG51bGwpIHRibC5sZXhfY29kZSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcodGJsW2xleF9jb2RlXSk7XG5cbiAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMobGV4YnVmW2xleF9idWZmZXJdKTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvcig7Oykge1xuICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqL1xuICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTtcbiAgICBpZiAoYmFzZSA8IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2Jhc2VfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgcmV0dXJuIC1iYXNlLTE7XG4gICAgfVxuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2JhY2t0cmtfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICB2YXIgcHN0YXRlID0gc3RhdGUgO1xuICAgIGlmICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0ZSlcbiAgICAgIHN0YXRlID0gdGJsLmxleF90cmFuc1tiYXNlICsgY107XG4gICAgZWxzZVxuICAgICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09IC0xKVxuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwibGV4aW5nOiBlbXB0eSB0b2tlblwiKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dO1xuICAgIH1lbHNle1xuICAgICAgLyogSWYgc29tZSB0cmFuc2l0aW9uLCBnZXQgYW5kIHBlcmZvcm0gbWVtb3J5IG1vdmVzICovXG4gICAgICB2YXIgYmFzZV9jb2RlID0gdGJsLmxleF9iYXNlX2NvZGVbcHN0YXRlXSwgcGNfb2ZmO1xuICAgICAgaWYgKHRibC5sZXhfY2hlY2tfY29kZVtiYXNlX2NvZGUgKyBjXSA9PSBwc3RhdGUpXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfdHJhbnNfY29kZVtiYXNlX2NvZGUgKyBjXTtcbiAgICAgIGVsc2VcbiAgICAgICAgcGNfb2ZmID0gdGJsLmxleF9kZWZhdWx0X2NvZGVbcHN0YXRlXTtcbiAgICAgIGlmIChwY19vZmYgPiAwKVxuICAgICAgICBjYW1sX2xleF9ydW5fbWVtXG4gICAgICAodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSwgbGV4YnVmW2xleF9jdXJyX3Bvc10pO1xuICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzXG4gICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpXG4gICAgICAqL1xuICAgICAgaWYgKGMgPT0gMjU2KSBsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7XG4gICAgfVxuICB9XG59XG4iLCJcbi8vUHJvdmlkZXM6IGNhbWxfbHhtX25leHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfbGVmdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF94b3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X211bFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXRfMVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmV3X3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9seG1fbmV4dCh2KSB7XG4gIGZ1bmN0aW9uIHNoaWZ0X2woeCwgayl7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfc2hpZnRfbGVmdCh4LGspO1xuICB9XG4gIGZ1bmN0aW9uIHNoaWZ0X3IoeCwgayl7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCxrKTtcbiAgfVxuICBmdW5jdGlvbiBvcihhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9vcihhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIHhvcihhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF94b3IoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiBhZGQoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfYWRkKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gbXVsKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIHJvdGwoeCwgaykge1xuICAgIHJldHVybiBvcihzaGlmdF9sKHgsayksc2hpZnRfciAoeCwgNjQgLSBrKSk7XG4gIH1cbiAgZnVuY3Rpb24gZ2V0KGEsIGkpIHtcbiAgICByZXR1cm4gY2FtbF9iYV9nZXRfMShhLCBpKTtcbiAgfVxuICBmdW5jdGlvbiBzZXQoYSwgaSwgeCkge1xuICAgIHJldHVybiBjYW1sX2JhX3NldF8xKGEsIGksIHgpO1xuICB9XG4gIHZhciBNID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmcoY2FtbF9uZXdfc3RyaW5nKFwiMHhkMTM0MjU0M2RlODJlZjk1XCIpKTtcbiAgdmFyIGRhYmEgPSBjYW1sX2ludDY0X29mX3N0cmluZyhjYW1sX25ld19zdHJpbmcoXCIweGRhYmEwYjZlYjA5MzIyZTNcIikpO1xuICB2YXIgeiwgcTAsIHExO1xuICB2YXIgc3QgPSB2O1xuICB2YXIgYSA9IGdldChzdCwwKTtcbiAgdmFyIHMgPSBnZXQoc3QsMSk7XG4gIHZhciB4MCA9IGdldChzdCwyKTtcbiAgdmFyIHgxID0gZ2V0KHN0LDMpO1xuICAvKiBDb21iaW5pbmcgb3BlcmF0aW9uICovXG4gIHogPSBhZGQocywgeDApO1xuICAvKiBNaXhpbmcgZnVuY3Rpb24gKi9cbiAgeiA9IG11bCh4b3IoeixzaGlmdF9yKHosMzIpKSwgZGFiYSk7XG4gIHogPSBtdWwoeG9yKHosc2hpZnRfcih6LDMyKSksIGRhYmEpO1xuICB6ID0geG9yKHosc2hpZnRfcih6LDMyKSk7XG4gIC8qIExDRyB1cGRhdGUgKi9cbiAgc2V0KHN0LCAxLCBhZGQgKG11bChzLE0pLCBhKSk7XG4gIC8qIFhCRyB1cGRhdGUgKi9cbiAgdmFyIHEwID0geDBcbiAgdmFyIHExID0geDFcbiAgcTEgPSB4b3IocTEscTApO1xuICBxMCA9IHJvdGwocTAsIDI0KTtcbiAgcTAgPSB4b3IoeG9yKHEwLCBxMSksIChzaGlmdF9sKHExLDE2KSkpO1xuICBxMSA9IHJvdGwocTEsIDM3KTtcbiAgc2V0KHN0LCAyLCBxMCk7XG4gIHNldChzdCwgMywgcTEpO1xuICAvKiBSZXR1cm4gcmVzdWx0ICovXG4gIHJldHVybiB6O1xufVxuIiwiLy9Qcm92aWRlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dFxudmFyIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQgXG4vL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyXG52YXIgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyclxuXG4vL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYmVmb3JlX3Rlc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIsIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXRcbmZ1bmN0aW9uIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdCAodm91dHB1dCwgdnN0ZG91dCwgdnN0ZGVycil7XG4gIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIgPSBjYW1sX21sX2NoYW5uZWxzW3ZzdGRlcnJdO1xuICBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0ID0gY2FtbF9tbF9jaGFubmVsc1t2c3Rkb3V0XTtcbiAgdmFyIG91dHB1dCA9IGNhbWxfbWxfY2hhbm5lbHNbdm91dHB1dF07XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZG91dF0gPSBvdXRwdXQ7XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZGVycl0gPSBvdXRwdXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYWZ0ZXJfdGVzdFxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciwgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dFxuZnVuY3Rpb24gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3QgKHZzdGRvdXQsIHZzdGRlcnIpe1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRvdXRdID0gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dDtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3RkZXJyXSA9IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnI7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfb3V0X2NoYW5uZWxfcG9zX2ZkXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX291dF9jaGFubmVsX3Bvc19mZChjaGFuKXtcbiAgdmFyIGluZm8gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5dO1xuICByZXR1cm4gaW5mby5vZmZzZXRcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBwYXJzaW5nLmMgODk4MyAyMDA4LTA4LTA2IDA5OjM4OjI1WiB4bGVyb3kgJCAqL1xuXG4vKiBUaGUgUERBIGF1dG9tYXRvbiBmb3IgcGFyc2VycyBnZW5lcmF0ZWQgYnkgY2FtbHlhY2MgKi9cblxuLyogVGhlIHB1c2hkb3duIGF1dG9tYXRhICovXG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VyX3RyYWNlXG52YXIgY2FtbF9wYXJzZXJfdHJhY2UgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9sZXhfYXJyYXksIGNhbWxfcGFyc2VyX3RyYWNlLGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMsIGVudiwgY21kLCBhcmcpXG57XG4gIHZhciBFUlJDT0RFID0gMjU2O1xuXG4gIC8vdmFyIFNUQVJUID0gMDtcbiAgLy92YXIgVE9LRU5fUkVBRCA9IDE7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8xID0gMjtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzIgPSAzO1xuICAvL3ZhciBTRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQgPSA0O1xuICAvL3ZhciBFUlJPUl9ERVRFQ1RFRCA9IDU7XG4gIHZhciBsb29wID0gNjtcbiAgdmFyIHRlc3RzaGlmdCA9IDc7XG4gIHZhciBzaGlmdCA9IDg7XG4gIHZhciBzaGlmdF9yZWNvdmVyID0gOTtcbiAgdmFyIHJlZHVjZSA9IDEwO1xuXG4gIHZhciBSRUFEX1RPS0VOID0gMDtcbiAgdmFyIFJBSVNFX1BBUlNFX0VSUk9SID0gMTtcbiAgdmFyIEdST1dfU1RBQ0tTXzEgPSAyO1xuICB2YXIgR1JPV19TVEFDS1NfMiA9IDM7XG4gIHZhciBDT01QVVRFX1NFTUFOVElDX0FDVElPTiA9IDQ7XG4gIHZhciBDQUxMX0VSUk9SX0ZVTkNUSU9OID0gNTtcblxuICB2YXIgZW52X3Nfc3RhY2sgPSAxO1xuICB2YXIgZW52X3Zfc3RhY2sgPSAyO1xuICB2YXIgZW52X3N5bWJfc3RhcnRfc3RhY2sgPSAzO1xuICB2YXIgZW52X3N5bWJfZW5kX3N0YWNrID0gNDtcbiAgdmFyIGVudl9zdGFja3NpemUgPSA1O1xuICB2YXIgZW52X3N0YWNrYmFzZSA9IDY7XG4gIHZhciBlbnZfY3Vycl9jaGFyID0gNztcbiAgdmFyIGVudl9sdmFsID0gODtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0ID0gOTtcbiAgdmFyIGVudl9zeW1iX2VuZCA9IDEwO1xuICB2YXIgZW52X2FzcCA9IDExO1xuICB2YXIgZW52X3J1bGVfbGVuID0gMTI7XG4gIHZhciBlbnZfcnVsZV9udW1iZXIgPSAxMztcbiAgdmFyIGVudl9zcCA9IDE0O1xuICB2YXIgZW52X3N0YXRlID0gMTU7XG4gIHZhciBlbnZfZXJyZmxhZyA9IDE2O1xuXG4gIC8vIHZhciBfdGJsX2FjdGlvbnMgPSAxO1xuICB2YXIgdGJsX3RyYW5zbF9jb25zdCA9IDI7XG4gIHZhciB0YmxfdHJhbnNsX2Jsb2NrID0gMztcbiAgdmFyIHRibF9saHMgPSA0O1xuICB2YXIgdGJsX2xlbiA9IDU7XG4gIHZhciB0YmxfZGVmcmVkID0gNjtcbiAgdmFyIHRibF9kZ290byA9IDc7XG4gIHZhciB0Ymxfc2luZGV4ID0gODtcbiAgdmFyIHRibF9yaW5kZXggPSA5O1xuICB2YXIgdGJsX2dpbmRleCA9IDEwO1xuICB2YXIgdGJsX3RhYmxlc2l6ZSA9IDExO1xuICB2YXIgdGJsX3RhYmxlID0gMTI7XG4gIHZhciB0YmxfY2hlY2sgPSAxMztcbiAgLy8gdmFyIF90YmxfZXJyb3JfZnVuY3Rpb24gPSAxNDtcbiAgdmFyIHRibF9uYW1lc19jb25zdCA9IDE1O1xuICB2YXIgdGJsX25hbWVzX2Jsb2NrID0gMTY7XG5cblxuICBmdW5jdGlvbiBsb2coeCkge1xuICAgIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4ICsgXCJcXG5cIik7XG4gICAgY2FtbF9tbF9vdXRwdXQoMiwgcywgMCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRva2VuX25hbWUobmFtZXMsIG51bWJlcilcbiAge1xuICAgIHZhciBzdHIgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lcyk7XG4gICAgaWYgKHN0clswXSA9PSAnXFx4MDAnKVxuICAgICAgcmV0dXJuIFwiPHVua25vd24gdG9rZW4+XCI7XG4gICAgcmV0dXJuIHN0ci5zcGxpdCgnXFx4MDAnKVtudW1iZXJdO1xuICB9XG5cbiAgZnVuY3Rpb24gcHJpbnRfdG9rZW4oc3RhdGUsIHRvaylcbiAge1xuICAgIHZhciB0b2tlbiwga2luZDtcbiAgICBpZiAodG9rIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHRva2VuID0gdG9rZW5fbmFtZSh0YWJsZXNbdGJsX25hbWVzX2Jsb2NrXSwgdG9rWzBdKTtcbiAgICAgIGlmICh0eXBlb2YgdG9rWzFdID09IFwibnVtYmVyXCIpXG4gICAgICAgIGtpbmQgPSBcIlwiICsgdG9rWzFdO1xuICAgICAgZWxzZSBpZiAodHlwZW9mIHRva1sxXSA9PSBcInN0cmluZ1wiKVxuICAgICAgICBraW5kID0gdG9rWzFdXG4gICAgICBlbHNlIGlmICh0b2tbMV0gaW5zdGFuY2VvZiBNbEJ5dGVzKVxuICAgICAgICBraW5kID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh0b2tbMV0pXG4gICAgICBlbHNlXG4gICAgICAgIGtpbmQgPSBcIl9cIlxuICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWFkIHRva2VuIFwiICsgdG9rZW4gKyBcIihcIiArIGtpbmQgKyBcIilcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRva2VuID0gdG9rZW5fbmFtZSh0YWJsZXNbdGJsX25hbWVzX2NvbnN0XSwgdG9rKTtcbiAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVhZCB0b2tlbiBcIiArIHRva2VuKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIXRhYmxlcy5kZ290bykge1xuICAgIHRhYmxlcy5kZWZyZWQgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZWZyZWRdKTtcbiAgICB0YWJsZXMuc2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0Ymxfc2luZGV4XSk7XG4gICAgdGFibGVzLmNoZWNrICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2NoZWNrXSk7XG4gICAgdGFibGVzLnJpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3JpbmRleF0pO1xuICAgIHRhYmxlcy50YWJsZSAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF90YWJsZV0pO1xuICAgIHRhYmxlcy5sZW4gICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9sZW5dKTtcbiAgICB0YWJsZXMubGhzICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGhzXSk7XG4gICAgdGFibGVzLmdpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2dpbmRleF0pO1xuICAgIHRhYmxlcy5kZ290byAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZ290b10pO1xuICB9XG5cbiAgdmFyIHJlcyA9IDAsIG4sIG4xLCBuMiwgc3RhdGUxO1xuXG4gIC8vIFJFU1RPUkVcbiAgdmFyIHNwID0gZW52W2Vudl9zcF07XG4gIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdO1xuICB2YXIgZXJyZmxhZyA9IGVudltlbnZfZXJyZmxhZ107XG5cbiAgZXhpdDpmb3IgKDs7KSB7XG4gICAgbmV4dDpzd2l0Y2goY21kKSB7XG4gICAgY2FzZSAwOi8vU1RBUlQ6XG4gICAgICBzdGF0ZSA9IDA7XG4gICAgICBlcnJmbGFnID0gMDtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSA2Oi8vbG9vcDpcbiAgICAgIG4gPSB0YWJsZXMuZGVmcmVkW3N0YXRlXTtcbiAgICAgIGlmIChuICE9IDApIHsgY21kID0gcmVkdWNlOyBicmVhazsgfVxuICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA+PSAwKSB7IGNtZCA9IHRlc3RzaGlmdDsgYnJlYWs7IH1cbiAgICAgIHJlcyA9IFJFQURfVE9LRU47XG4gICAgICBicmVhayBleGl0O1xuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGxleGVyIGFuZCB1cGRhdGVzICovXG4gICAgICAvKiBzeW1iX3N0YXJ0IGFuZCBzeW1iX2VuZCAqL1xuICAgIGNhc2UgMTovL1RPS0VOX1JFQUQ6XG4gICAgICBpZiAoYXJnIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfYmxvY2tdW2FyZ1swXSArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gYXJnWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfY29uc3RdW2FyZyArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gMDtcbiAgICAgIH1cbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgcHJpbnRfdG9rZW4gKHN0YXRlLCBhcmcpO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDc6Ly90ZXN0c2hpZnQ6XG4gICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgY21kID0gc2hpZnQ7IGJyZWFrO1xuICAgICAgfVxuICAgICAgbjEgPSB0YWJsZXMucmluZGV4W3N0YXRlXTtcbiAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7XG4gICAgICAgIG4gPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgICBjbWQgPSByZWR1Y2U7IGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGVycmZsYWcgPD0gMCkge1xuICAgICAgICByZXMgPSBDQUxMX0VSUk9SX0ZVTkNUSU9OO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgZXJyb3IgZnVuY3Rpb24gKi9cbiAgICBjYXNlIDU6Ly9FUlJPUl9ERVRFQ1RFRDpcbiAgICAgIGlmIChlcnJmbGFnIDwgMykge1xuICAgICAgICBlcnJmbGFnID0gMztcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIHN0YXRlMSA9IGVudltlbnZfc19zdGFja11bc3AgKyAxXTtcbiAgICAgICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGUxXTtcbiAgICAgICAgICBuMiA9IG4xICsgRVJSQ09ERTtcbiAgICAgICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IEVSUkNPREUpIHtcbiAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgbG9nKFwiUmVjb3ZlcmluZyBpbiBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICBjbWQgPSBzaGlmdF9yZWNvdmVyOyBicmVhayBuZXh0O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgIGxvZyhcIkRpc2NhcmRpbmcgc3RhdGUgXCIgKyBzdGF0ZTEpO1xuICAgICAgICAgICAgaWYgKHNwIDw9IGVudltlbnZfc3RhY2tiYXNlXSkge1xuICAgICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgICAgbG9nKFwiTm8gbW9yZSBzdGF0ZXMgdG8gZGlzY2FyZFwiKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgICAgICBzcC0tO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA9PSAwKVxuICAgICAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjsgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICBsb2coXCJEaXNjYXJkaW5nIGxhc3QgdG9rZW4gcmVhZFwiKTtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA4Oi8vc2hpZnQ6XG4gICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgIGlmIChlcnJmbGFnID4gMCkgZXJyZmxhZy0tO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA5Oi8vc2hpZnRfcmVjb3ZlcjpcbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiBzaGlmdCB0byBzdGF0ZSBcIiArIHRhYmxlcy50YWJsZVtuMl0pO1xuICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgc3ArKztcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMTtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAyOi8vU1RBQ0tTX0dST1dOXzE6XG4gICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgIGVudltlbnZfdl9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfbHZhbF07XG4gICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfc3RhcnRdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRdO1xuICAgICAgY21kID0gbG9vcDtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAxMDovL3JlZHVjZTpcbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWR1Y2UgYnkgcnVsZSBcIiArIG4pO1xuICAgICAgdmFyIG0gPSB0YWJsZXMubGVuW25dO1xuICAgICAgZW52W2Vudl9hc3BdID0gc3A7XG4gICAgICBlbnZbZW52X3J1bGVfbnVtYmVyXSA9IG47XG4gICAgICBlbnZbZW52X3J1bGVfbGVuXSA9IG07XG4gICAgICBzcCA9IHNwIC0gbSArIDE7XG4gICAgICBtID0gdGFibGVzLmxoc1tuXTtcbiAgICAgIHN0YXRlMSA9IGVudltlbnZfc19zdGFja11bc3BdO1xuICAgICAgbjEgPSB0YWJsZXMuZ2luZGV4W21dO1xuICAgICAgbjIgPSBuMSArIHN0YXRlMTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBzdGF0ZTEpXG4gICAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIGVsc2VcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMuZGdvdG9bbV07XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzI7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMzovL1NUQUNLU19HUk9XTl8yOlxuICAgICAgcmVzID0gQ09NUFVURV9TRU1BTlRJQ19BQ1RJT047XG4gICAgICBicmVhayBleGl0O1xuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIHNlbWFudGljIGFjdGlvbiAqL1xuICAgIGNhc2UgNDovL1NFTUFOVElDX0FDVElPTl9DT01QVVRFRDpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gYXJnO1xuICAgICAgdmFyIGFzcCA9IGVudltlbnZfYXNwXTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgIGlmIChzcCA+IGFzcCkge1xuICAgICAgICAvKiBUaGlzIGlzIGFuIGVwc2lsb24gcHJvZHVjdGlvbi4gVGFrZSBzeW1iX3N0YXJ0IGVxdWFsIHRvIHN5bWJfZW5kLiAqL1xuICAgICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgIH1cbiAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgLyogU2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgIH1cbiAgfVxuICAvLyBTQVZFXG4gIGVudltlbnZfc3BdID0gc3A7XG4gIGVudltlbnZfc3RhdGVdID0gc3RhdGU7XG4gIGVudltlbnZfZXJyZmxhZ10gPSBlcnJmbGFnO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9wYXJzZXJfdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VyX3RyYWNlXG5mdW5jdGlvbiBjYW1sX3NldF9wYXJzZXJfdHJhY2UoYm9vbCkge1xuICB2YXIgb2xkZmxhZyA9IGNhbWxfcGFyc2VyX3RyYWNlO1xuICBjYW1sX3BhcnNlcl90cmFjZSA9IGJvb2w7XG4gIHJldHVybiBvbGRmbGFnO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDIwIC0gSHVnbyBIZXV6YXJkXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBTaGFjaGFyIEl0emhha3lcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9ibG9iLzQuMDcvb3RoZXJsaWJzL3N0ci9zdHJzdHVicy5jXG4vLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vanNjb3EvanNjb3EvYmxvYi92OC4xMS9jb3EtanMvanNfc3R1Yi9zdHIuanNcblxuLy9Qcm92aWRlczogcmVfbWF0Y2hcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2dldFxuXG52YXIgcmVfbWF0Y2ggPSBmdW5jdGlvbigpe1xuICB2YXIgcmVfd29yZF9sZXR0ZXJzID0gW1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4MDAtMHgxRjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4RkYsIDB4MDMsICAgICAgIC8qIDB4MjAtMHgzRjogZGlnaXRzIDAtOSAqL1xuICAgIDB4RkUsIDB4RkYsIDB4RkYsIDB4ODcsICAgICAgIC8qIDB4NDAtMHg1RjogQSB0byBaLCBfICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHgwNywgICAgICAgLyogMHg2MC0weDdGOiBhIHRvIHogKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweDgwLTB4OUY6IG5vbmUgKi9cbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweEEwLTB4QkY6IG5vbmUgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGLCAgICAgICAvKiAweEMwLTB4REY6IExhdGluLTEgYWNjZW50ZWQgdXBwZXJjYXNlICovXG4gICAgMHhGRiwgMHhGRiwgMHg3RiwgMHhGRiAgICAgICAgLyogMHhFMC0weEZGOiBMYXRpbi0xIGFjY2VudGVkIGxvd2VyY2FzZSAqL1xuICBdO1xuXG4gIHZhciBvcGNvZGVzID0ge1xuICAgIENIQVI6IDAsIENIQVJOT1JNOiAxLCBTVFJJTkc6IDIsIFNUUklOR05PUk06IDMsIENIQVJDTEFTUzogNCxcbiAgICBCT0w6IDUsIEVPTDogNiwgV09SREJPVU5EQVJZOiA3LFxuICAgIEJFR0dST1VQOiA4LCBFTkRHUk9VUDogOSwgUkVGR1JPVVA6IDEwLFxuICAgIEFDQ0VQVDogMTEsXG4gICAgU0lNUExFT1BUOiAxMiwgU0lNUExFU1RBUjogMTMsIFNJTVBMRVBMVVM6IDE0LFxuICAgIEdPVE86IDE1LCBQVVNIQkFDSzogMTYsIFNFVE1BUks6IDE3LFxuICAgIENIRUNLUFJPR1JFU1M6IDE4XG4gIH07XG5cbiAgZnVuY3Rpb24gaXNfd29yZF9sZXR0ZXIoYykge1xuICAgIHJldHVybiAocmVfd29yZF9sZXR0ZXJzWyAgKGMgPj4gMyldID4+IChjICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluX2JpdHNldChzLGkpIHtcbiAgICByZXR1cm4gKGNhbWxfc3RyaW5nX2dldChzLChpID4+IDMpKSA+PiAoaSAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiByZV9tYXRjaF9pbXBsKHJlLCBzLCBwb3MsIHBhcnRpYWwpIHtcblxuICAgIHZhciBwcm9nICAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzFdKSxcbiAgICAgICAgY3Bvb2wgICAgICAgICA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsyXSksXG4gICAgICAgIG5vcm10YWJsZSAgICAgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlWzNdKSxcbiAgICAgICAgbnVtZ3JvdXBzICAgICA9IHJlWzRdIHwgMCxcbiAgICAgICAgbnVtcmVnaXN0ZXJzICA9IHJlWzVdIHwgMCxcbiAgICAgICAgc3RhcnRjaGFycyAgICA9IHJlWzZdIHwgMDtcblxuICAgIHZhciBzID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcocyk7XG5cbiAgICB2YXIgcGMgPSAwLFxuICAgICAgICBxdWl0ID0gZmFsc2UsXG4gICAgICAgIHN0YWNrID0gW10sXG4gICAgICAgIGdyb3VwcyA9IG5ldyBBcnJheShudW1ncm91cHMpLFxuICAgICAgICByZV9yZWdpc3RlciA9IG5ldyBBcnJheShudW1yZWdpc3RlcnMpO1xuXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICBncm91cHNbaV0gPSB7c3RhcnQ6IC0xLCBlbmQ6LTF9XG4gICAgfVxuICAgIGdyb3Vwc1swXS5zdGFydCA9IHBvcztcblxuICAgIHZhciBiYWNrdHJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICAgIHZhciBpdGVtID0gc3RhY2sucG9wKCk7XG4gICAgICAgIGlmIChpdGVtLnVuZG8pIHtcbiAgICAgICAgICBpdGVtLnVuZG8ub2JqW2l0ZW0udW5kby5wcm9wXSA9IGl0ZW0udW5kby52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGl0ZW0ucG9zKSB7XG4gICAgICAgICAgcGMgPSBpdGVtLnBvcy5wYztcbiAgICAgICAgICBwb3MgPSBpdGVtLnBvcy50eHQ7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBxdWl0ID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdmFyIHB1c2ggPSBmdW5jdGlvbihpdGVtKSB7IHN0YWNrLnB1c2goaXRlbSk7IH07XG5cbiAgICB2YXIgYWNjZXB0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZ3JvdXBzWzBdLmVuZCA9IHBvcztcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoMSArIGdyb3Vwcy5sZW5ndGgqMik7XG4gICAgICByZXN1bHRbMF0gPSAwOyAvLyB0YWdcbiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspe1xuICAgICAgICB2YXIgZyA9IGdyb3Vwc1tpXTtcbiAgICAgICAgaWYoZy5zdGFydCA8IDAgfHwgZy5lbmQgPCAwKSB7XG4gICAgICAgICAgZy5zdGFydCA9IGcuZW5kID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0WzIqaSArIDEgXSA9IGcuc3RhcnQ7XG4gICAgICAgIHJlc3VsdFsyKmkgKyAxICsgMSBdID0gZy5lbmQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH07XG5cbiAgICB2YXIgcHJlZml4X21hdGNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYocGFydGlhbCkgcmV0dXJuIGFjY2VwdCAoKTtcbiAgICAgIGVsc2UgYmFja3RyYWNrICgpO1xuICAgIH1cblxuICAgIC8qIE1haW4gREZBIGludGVycHJldGVyIGxvb3AgKi9cbiAgICB3aGlsZSAoIXF1aXQpIHtcbiAgICAgIHZhciBvcCA9IHByb2dbcGNdICYgMHhmZixcbiAgICAgICAgICBzYXJnID0gcHJvZ1twY10gPj4gOCxcbiAgICAgICAgICB1YXJnID0gc2FyZyAmIDB4ZmYsXG4gICAgICAgICAgYyA9IHNbcG9zXSxcbiAgICAgICAgICBncm91cDtcblxuICAgICAgcGMrKztcblxuICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVI6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGMgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSTk9STTpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkc6XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAoYyA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklOR05PUk06XG4gICAgICAgIGZvciAodmFyIGFyZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoY3Bvb2xbdWFyZ10pLCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IGFyZy5jaGFyQ29kZUF0KGkpKVxuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGVsc2UgeyBiYWNrdHJhY2soKTsgYnJlYWs7IH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSQ0xBU1M6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CT0w6XG4gICAgICAgIGlmKHBvcyA+IDAgJiYgc1twb3MgLSAxXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuRU9MOlxuICAgICAgICBpZihwb3MgPCBzLmxlbmd0aCAmJiBzW3Bvc10gIT0gMTAgLyogXFxuICovKSB7YmFja3RyYWNrKCl9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLldPUkRCT1VOREFSWTpcbiAgICAgICAgaWYocG9zID09IDApIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1swXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pICE9IGlzX3dvcmRfbGV0dGVyKHNbcG9zXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjayAoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5CRUdHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6Z3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXAuc3RhcnR9fSk7XG4gICAgICAgIGdyb3VwLnN0YXJ0ID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FTkRHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDonZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5lbmR9fSk7XG4gICAgICAgIGdyb3VwLmVuZCA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUkVGR1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBpZihncm91cC5zdGFydCA8IDAgfHwgZ3JvdXAuZW5kIDwgMCkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgIGZvciAodmFyIGkgPSBncm91cC5zdGFydDsgaSA8IGdyb3VwLmVuZDsgaSsrKXtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYoc1tpXSAhPSBzW3Bvc10pIHtiYWNrdHJhY2sgKCk7IGJyZWFrfVxuICAgICAgICAgIHBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRU9QVDpcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVTVEFSOlxuICAgICAgICB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSlcbiAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVBMVVM6XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgfSB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQUNDRVBUOlxuICAgICAgICByZXR1cm4gYWNjZXB0KCk7XG4gICAgICBjYXNlIG9wY29kZXMuR09UTzpcbiAgICAgICAgcGMgPSBwYyArIHNhcmc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlBVU0hCQUNLOlxuICAgICAgICBwdXNoKHtwb3M6IHtwYzogcGMgKyBzYXJnLCB0eHQ6IHBvc319KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0VUTUFSSzpcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpyZV9yZWdpc3RlcixcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6IHVhcmcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmVfcmVnaXN0ZXJbdWFyZ119fSk7XG4gICAgICAgIHJlX3JlZ2lzdGVyW3VhcmddID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEVDS1BST0dSRVNTOlxuICAgICAgICBpZiAocmVfcmVnaXN0ZXJbdWFyZ10gPT09IHBvcykgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBieXRlY29kZVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gcmVfbWF0Y2hfaW1wbDtcbn0oKTtcblxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfZm9yd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zZWFyY2hfZm9yd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfZm9yd2FyZFwiKVxuICB3aGlsZSAocG9zIDw9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkge1xuICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgIHBvcysrO1xuICB9XG5cbiAgcmV0dXJuIFswXTsgIC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2JhY2t3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9iYWNrd2FyZChyZSwgcywgcG9zKSB7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfYmFja3dhcmRcIilcbiAgd2hpbGUgKHBvcyA+PSAwKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zLS07XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG5cbi8vUHJvdmlkZXM6IHJlX3N0cmluZ19tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zdHJpbmdfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc3RyaW5nX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9wYXJ0aWFsX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3BhcnRpYWxfbWF0Y2gocmUscyxwb3Mpe1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIucGFydGlhbF9tYXRjaFwiKVxuICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMSk7XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGVsc2UgcmV0dXJuIFswXTtcbn1cblxuLy9Qcm92aWRlczogcmVfcmVwbGFjZW1lbnRfdGV4dFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9hcnJheV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIGV4dGVybmFsIHJlX3JlcGxhY2VtZW50X3RleHQ6IHN0cmluZyAtPiBpbnQgYXJyYXkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuZnVuY3Rpb24gcmVfcmVwbGFjZW1lbnRfdGV4dChyZXBsLGdyb3VwcyxvcmlnKSB7XG4gIHZhciByZXBsID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZXBsKTtcbiAgdmFyIGxlbiA9IHJlcGwubGVuZ3RoO1xuICB2YXIgb3JpZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob3JpZyk7XG4gIHZhciByZXMgPSBcIlwiOyAvL3Jlc3VsdFxuICB2YXIgbiA9IDA7IC8vIGN1cnJlbnQgcG9zaXRpb25cbiAgdmFyIGN1cjsgLy9jdXJyZW50IGNoYXJcbiAgdmFyIHN0YXJ0LCBlbmQsIGM7XG4gIHdoaWxlKG4gPCBsZW4pe1xuICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgaWYoY3VyICE9ICdcXFxcJyl7XG4gICAgICByZXMgKz0gY3VyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKG4gPT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCIpO1xuICAgICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICAgIHN3aXRjaChjdXIpe1xuICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgIHJlcyArPSBjdXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOlxuICAgICAgY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgICBjID0gK2N1cjtcbiAgICAgICAgaWYgKGMqMiA+PSBncm91cHMubGVuZ3RoIC0gMSApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIgKTtcbiAgICAgICAgc3RhcnQgPSBjYW1sX2FycmF5X2dldChncm91cHMsYyoyKTtcbiAgICAgICAgZW5kID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjKjIgKzEpO1xuICAgICAgICBpZiAoc3RhcnQgPT0gLTEpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIpO1xuICAgICAgICByZXMrPW9yaWcuc2xpY2Uoc3RhcnQsZW5kKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXMgKz0gKCdcXFxcJyAgKyBjdXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9zdHJfaW5pdGlhbGl6ZVxuZnVuY3Rpb24gY2FtbF9zdHJfaW5pdGlhbGl6ZSh1bml0KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogY29yZV9oZWFwX2Jsb2NrX2lzX2hlYXBfYmxvY2tcbmZ1bmN0aW9uIGNvcmVfaGVhcF9ibG9ja19pc19oZWFwX2Jsb2NrKHgpe1xuICByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpO1xufVxuXG4iLCIvL1Byb3ZpZGVzOiBqc19wZXJmb3JtYW5jZVxudmFyIGpzX3BlcmZvcm1hbmNlID0ge21hcms6IChmdW5jdGlvbiAoKSB7fSksIG1lYXN1cmU6IChmdW5jdGlvbiAoKSB7fSkgfTtcbmlmICh0eXBlb2Ygam9vX2dsb2JhbF9vYmplY3QucGVyZm9ybWFuY2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAganNfcGVyZm9ybWFuY2UgPSBqb29fZ2xvYmFsX29iamVjdC5wZXJmb3JtYW5jZTtcbn0gZWxzZSB7XG4gIHRyeSB7XG4gICAgdmFyIHBlcmZfaG9va3MgPSByZXF1aXJlKCdwZXJmX2hvb2tzJyk7XG4gICAganNfcGVyZm9ybWFuY2UgPSBwZXJmX2hvb2tzLnBlcmZvcm1hbmNlO1xuICAgIGpvb19nbG9iYWxfb2JqZWN0LlBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBwZXJmX2hvb2tzLlBlcmZvcm1hbmNlT2JzZXJ2ZXI7XG4gIH0gY2F0Y2ggKF9lKSB7XG4gICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKFwiY291bGRuJ3QgbG9hZCBwZXJmb3JtYW5jZSBob29rc1wiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX21hcmtcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfbWFyayhuYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UubWFyayhjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfbWVhc3VyZVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9tZWFzdXJlKG5hbWUsIHN0YXJ0LCBlbmQpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5tZWFzdXJlKFxuICAgICAgICAgICAgY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSwgXG4gICAgICAgICAgICBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHN0YXJ0KSwgXG4gICAgICAgICAgICBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGVuZCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9jbGVhcl9tYXJrc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9jbGVhcl9tYXJrcygpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5jbGVhck1hcmtzKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX2NsZWFyX21lYXN1cmVzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX2NsZWFyX21lYXN1cmVzKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbiIsIi8vLy8vLy8vLyBUSU1FX05PV1xuXG4vL1Byb3ZpZGVzOiB0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX2ludDY0X29mX2ludDMyXG52YXIgbXNfdG9fbmFubyA9IGNhbWxfaW50NjRfb2ZfaW50MzIoMTAwMCoxMDAwKTtcbmZ1bmN0aW9uIHRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybygpe1xuICAgIHZhciBtcyA9IERhdGUubm93KCk7XG4gICAgLy8gbXVsdGlwbGUgYnkgdHdvIC0gaW50NjMgaW50ZWdlcnMgYXJlIHNoaWZ0ZWQgdG8gdGhlIGxlZnRcbiAgICB2YXIgbXNfaTYzID0gY2FtbF9pbnQ2NF9vZl9mbG9hdChtcyoyKTtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9tdWwobXNfaTYzLG1zX3RvX25hbm8pO1xufVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgIEJlbm9pdCBWYXVnb24sIEVOU1RBICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQYWRkaW5nIHBvc2l0aW9uLiAqKVxudHlwZSBwYWR0eSA9XG4gIHwgTGVmdCAgICgqIFRleHQgaXMgbGVmdCBqdXN0aWZpZWQgKCctJyBvcHRpb24pLiAgICAgICAgICAgICAgICopXG4gIHwgUmlnaHQgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIChubyAnLScgb3B0aW9uKS4gICAgICAgICAgICopXG4gIHwgWmVyb3MgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIGJ5IHplcm9zIChzZWUgJzAnIG9wdGlvbikuICopXG5cbigqKiopXG5cbigqIEludGVnZXIgY29udmVyc2lvbi4gKilcbnR5cGUgaW50X2NvbnYgPVxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkICAgICAgICAoKiAgJWQgfCAlK2QgfCAlIGQgICopXG4gIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2kgICAgICAgICgqICAlaSB8ICUraSB8ICUgaSAgKilcbiAgfCBJbnRfeCB8IEludF9DeCAgICAgICAgICAgICAgICAgKCogICV4IHwgJSN4ICAgICAgICAqKVxuICB8IEludF9YIHwgSW50X0NYICAgICAgICAgICAgICAgICAoKiAgJVggfCAlI1ggICAgICAgICopXG4gIHwgSW50X28gfCBJbnRfQ28gICAgICAgICAgICAgICAgICgqICAlbyB8ICUjbyAgICAgICAgKilcbiAgfCBJbnRfdSAgICAgICAgICAgICAgICAgICAgICAgICAgKCogICV1ICAgICAgICAgICAgICAqKVxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAgICAgICAoKiAgJSNkIHwgJSNpIHwgJSN1ICopXG5cbigqIEZsb2F0IGNvbnZlcnNpb24uICopXG50eXBlIGZsb2F0X2ZsYWdfY29udiA9XG4gIHwgRmxvYXRfZmxhZ18gICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19wICAgICAgICAgICAgICAgICAgICgqICUrW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcyAgICAgICAgICAgICAgICAgICAoKiAlIFtmZUVnR0ZoSF0gKilcbnR5cGUgZmxvYXRfa2luZF9jb252ID1cbiAgfCBGbG9hdF9mICAgICAgICAgICAgICAgICAgICAgICAgKCogICVmIHwgJStmIHwgJSBmICAqKVxuICB8IEZsb2F0X2UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWUgfCAlK2UgfCAlIGUgICopXG4gIHwgRmxvYXRfRSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRSB8ICUrRSB8ICUgRSAgKilcbiAgfCBGbG9hdF9nICAgICAgICAgICAgICAgICAgICAgICAgKCogICVnIHwgJStnIHwgJSBnICAqKVxuICB8IEZsb2F0X0cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUcgfCAlK0cgfCAlIEcgICopXG4gIHwgRmxvYXRfRiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRiB8ICUrRiB8ICUgRiAgKilcbiAgfCBGbG9hdF9oICAgICAgICAgICAgICAgICAgICAgICAgKCogICVoIHwgJStoIHwgJSBoICAqKVxuICB8IEZsb2F0X0ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUggfCAlK0ggfCAlIEggICopXG4gIHwgRmxvYXRfQ0YgICAgICAgICAgICAgICAgICAgICAgICgqICAlI0Z8ICUrI0Z8ICUgI0YgKilcbnR5cGUgZmxvYXRfY29udiA9IGZsb2F0X2ZsYWdfY29udiAqIGZsb2F0X2tpbmRfY29udlxuXG4oKioqKVxuXG4oKiBDaGFyIHNldHMgKHNlZSAlWy4uLl0pIGFyZSBiaXRtYXBzIGltcGxlbWVudGVkIGFzIDMyLWNoYXIgc3RyaW5ncy4gKilcbnR5cGUgY2hhcl9zZXQgPSBzdHJpbmdcblxuKCoqKilcblxuKCogQ291bnRlciB1c2VkIGluIFNjYW5mLiAqKVxudHlwZSBjb3VudGVyID1cbiAgfCBMaW5lX2NvdW50ZXIgICAgICgqICAlbCAgICAgICopXG4gIHwgQ2hhcl9jb3VudGVyICAgICAoKiAgJW4gICAgICAqKVxuICB8IFRva2VuX2NvdW50ZXIgICAgKCogICVOLCAlTCAgKilcblxuKCoqKilcblxuKCogUGFkZGluZyBvZiBzdHJpbmdzIGFuZCBudW1iZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwYWRkaW5nID1cbiAgKCogTm8gcGFkZGluZyAoZXg6IFwiJWRcIikgKilcbiAgfCBOb19wYWRkaW5nICA6ICgnYSwgJ2EpIHBhZGRpbmdcbiAgKCogTGl0ZXJhbCBwYWRkaW5nIChleDogXCIlOGRcIikgKilcbiAgfCBMaXRfcGFkZGluZyA6IHBhZHR5ICogaW50IC0+ICgnYSwgJ2EpIHBhZGRpbmdcbiAgKCogUGFkZGluZyBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpkXCIpICopXG4gIHwgQXJnX3BhZGRpbmcgOiBwYWR0eSAtPiAoaW50IC0+ICdhLCAnYSkgcGFkZGluZ1xuXG4oKiBTb21lIGZvcm1hdHMsIHN1Y2ggYXMgJV9kLFxuICAgb25seSBhY2NlcHQgYW4gb3B0aW9uYWwgbnVtYmVyIGFzIHBhZGRpbmcgb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcGFkX29wdGlvbiA9IGludCBvcHRpb25cblxuKCogUHJlY2lzaW9uIG9mIGZsb2F0cyBhbmQgJzAnLXBhZGRpbmcgb2YgaW50ZWdlcnMuICopXG50eXBlICgnYSwgJ2IpIHByZWNpc2lvbiA9XG4gICgqIE5vIHByZWNpc2lvbiAoZXg6IFwiJWZcIikgKilcbiAgfCBOb19wcmVjaXNpb24gOiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogTGl0ZXJhbCBwcmVjaXNpb24gKGV4OiBcIiUuM2ZcIikgKilcbiAgfCBMaXRfcHJlY2lzaW9uIDogaW50IC0+ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBQcmVjaXNpb24gYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUuKmZcIikgKilcbiAgfCBBcmdfcHJlY2lzaW9uIDogKGludCAtPiAnYSwgJ2EpIHByZWNpc2lvblxuXG4oKiBTb21lIGZvcm1hdHMsIHN1Y2ggYXMgJV9mLFxuICAgb25seSBhY2NlcHQgYW4gb3B0aW9uYWwgbnVtYmVyIGFzIHByZWNpc2lvbiBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwcmVjX29wdGlvbiA9IGludCBvcHRpb25cblxuKCogc2VlIHRoZSBDdXN0b20gZm9ybWF0IGNvbWJpbmF0b3IgKilcbnR5cGUgKCdhLCAnYiwgJ2MpIGN1c3RvbV9hcml0eSA9XG4gIHwgQ3VzdG9tX3plcm8gOiAoJ2EsIHN0cmluZywgJ2EpIGN1c3RvbV9hcml0eVxuICB8IEN1c3RvbV9zdWNjIDogKCdhLCAnYiwgJ2MpIGN1c3RvbV9hcml0eSAtPlxuICAgICgnYSwgJ3ggLT4gJ2IsICd4IC0+ICdjKSBjdXN0b21fYXJpdHlcblxuKCoqKilcblxuKCogICAgICAgIFJlbGF0aW9uYWwgZm9ybWF0IHR5cGVzXG5cbkluIHRoZSBmaXJzdCBmb3JtYXQrZ2FkdHMgaW1wbGVtZW50YXRpb24sIHRoZSB0eXBlIGZvciAlKC4uJSkgaW4gdGhlXG5mbXQgR0FEVCB3YXMgYXMgZm9sbG93czpcblxufCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgcGFkX29wdGlvbiAqICgnZDEsICdxMSwgJ2QyLCAncTIpIHJlYWRlcl9uYl91bmlmaWVyICpcbiAgICAoJ3gsICdiLCAnYywgJ2QxLCAncTEsICd1KSBmbXR0eSAqXG4gICAgKCd1LCAnYiwgJ2MsICdxMSwgJ2UxLCAnZikgZm10IC0+XG4gICAgICAoKCd4LCAnYiwgJ2MsICdkMiwgJ3EyLCAndSkgZm9ybWF0NiAtPiAneCwgJ2IsICdjLCAnZDEsICdlMSwgJ2YpIGZtdFxuXG5Ob3RpY2UgdGhhdCB0aGUgJ3UgcGFyYW1ldGVyIGluICdmIHBvc2l0aW9uIGluIHRoZSBmb3JtYXQgYXJndW1lbnRcbigoJ3gsIC4uLCAndSkgZm9ybWF0NiAtPiAuLikgaXMgZXF1YWwgdG8gdGhlICd1IHBhcmFtZXRlciBpbiAnYVxucG9zaXRpb24gaW4gdGhlIGZvcm1hdCB0YWlsICgoJ3UsIC4uLCAnZikgZm10KS4gVGhpcyBtZWFucyB0aGF0IHRoZVxudHlwZSBvZiB0aGUgZXhwZWN0ZWQgZm9ybWF0IHBhcmFtZXRlciBkZXBlbmRzIG9mIHdoZXJlIHRoZSAlKC4uLiUpXG5hcmUgaW4gdGhlIGZvcm1hdCBzdHJpbmc6XG5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKVwiXG4gIC0gOiAodW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gdW5pdFxuICA9IDxmdW4+XG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSklZFwiXG4gIC0gOiAoaW50IC0+IHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgaW50IC0+IHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiBpbnQgLT4gdW5pdFxuICA9IDxmdW4+XG5cbk9uIHRoZSBjb250cmFyeSwgdGhlIGxlZ2FjeSB0eXBlciBnaXZlcyBhIGNsZXZlciB0eXBlIHRoYXQgZG9lcyBub3RcbmRlcGVuZCBvbiB0aGUgcG9zaXRpb24gb2YgJSguLiUpIGluIHRoZSBmb3JtYXQgc3RyaW5nLiBGb3IgZXhhbXBsZSxcbiUoJSkgd2lsbCBoYXZlIHRoZSBwb2x5bW9ycGhpYyB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKTogaXQgY2FuXG5iZSBjb25jYXRlbmF0ZWQgdG8gYW55IGZvcm1hdCB0eXBlLCBhbmQgb25seSBlbmZvcmNlcyB0aGUgY29uc3RyYWludFxudGhhdCBpdHMgJ2EgYW5kICdmIHBhcmFtZXRlcnMgYXJlIGVxdWFsIChubyBmb3JtYXQgYXJndW1lbnRzKSBhbmQgJ2RcbmFuZCAnZSBhcmUgZXF1YWwgKG5vIHJlYWRlciBhcmd1bWVudCkuXG5cblRoZSB3ZWFrZW5pbmcgb2YgdGhpcyBwYXJhbWV0ZXIgdHlwZSBpbiB0aGUgR0FEVCB2ZXJzaW9uIGJyb2tlIHVzZXJcbmNvZGUgKGluIGZhY3QgaXQgZXNzZW50aWFsbHkgbWFkZSAlKC4uLiUpIHVudXNhYmxlIGV4Y2VwdCBhdCB0aGUgbGFzdFxucG9zaXRpb24gb2YgYSBmb3JtYXQpLiBJbiBwYXJ0aWN1bGFyLCB0aGUgZm9sbG93aW5nIHdvdWxkIG5vdCB3b3JrXG5hbnltb3JlOlxuXG4gIGZ1biBzZXAgLT5cbiAgICBGb3JtYXQucHJpbnRmIFwiZm9vJSglKWJhciUoJSliYXpcIiBzZXAgc2VwXG5cbkFzIHRoZSB0eXBlLWNoZWNrZXIgd291bGQgcmVxdWlyZSB0d28gKmluY29tcGF0aWJsZSogdHlwZXMgZm9yIHRoZSAlKCUpXG5pbiBkaWZmZXJlbnQgcG9zaXRpb25zLlxuXG5UaGUgc29sdXRpb24gdG8gcmVnYWluIGEgZ2VuZXJhbCB0eXBlIGZvciAlKC4uJSkgaXMgdG8gZ2VuZXJhbGl6ZSB0aGlzXG50ZWNobmlxdWUsIG5vdCBvbmx5IG9uIHRoZSAnZCwgJ2UgcGFyYW1ldGVycywgYnV0IG9uIGFsbCBzaXhcbnBhcmFtZXRlcnMgb2YgYSBmb3JtYXQ6IHdlIGludHJvZHVjZSBhIFwicmVsYXRpb25hbFwiIHR5cGVcbiAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbndob3NlIHZhbHVlcyBhcmUgcHJvb2ZzIHRoYXQgKCdhMSwgLi4sICdmMSkgYW5kICgnYTIsIC4uLCAnZjIpIG1vcmFsbHlcbmNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgZm9ybWF0IHR5cGU6ICdhMSBpcyBvYnRhaW5lZCBmcm9tICdmMSwnYjEsJ2MxXG5pbiB0aGUgZXhhY3Qgc2FtZSB3YXkgdGhhdCAnYTIgaXMgb2J0YWluZWQgZnJvbSAnZjIsJ2IyLCdjMiwgZXRjLlxuXG5Gb3IgZXhhbXBsZSwgdGhlIHJlbGF0aW9uIGJldHdlZW4gdHdvIGZvcm1hdCB0eXBlcyBiZWdpbm5pbmcgd2l0aCBhIENoYXJcbnBhcmFtZXRlciBpcyBhcyBmb2xsb3dzOlxuXG58IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuSW4gdGhlIGdlbmVyYWwgY2FzZSwgdGhlIHRlcm0gc3RydWN0dXJlIG9mIGZtdHR5X3JlbCBpcyAoYWxtb3N0WzFdKVxuaXNvbW9ycGhpYyB0byB0aGUgZm10dHkgb2YgdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uOiBldmVyeVxuY29uc3RydWN0b3IgaXMgcmUtcmVhZCB3aXRoIGEgYmluYXJ5LCByZWxhdGlvbmFsIHR5cGUsIGluc3RlYWQgb2YgdGhlXG5wcmV2aW91cyB1bmFyeSB0eXBpbmcuIGZtdHR5IGNhbiB0aGVuIGJlIHJlLWRlZmluZWQgYXMgdGhlIGRpYWdvbmFsIG9mXG5mbXR0eV9yZWw6XG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLFxuICAgICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcblxuT25jZSB3ZSBoYXZlIHRoaXMgZm10dHlfcmVsIHR5cGUgaW4gcGxhY2UsIHdlIGNhbiBnaXZlIHRoZSBtb3JlXG5nZW5lcmFsIHR5cGUgdG8gJSguLi4lKTpcblxufCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgcGFkX29wdGlvbiAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbldlIGFjY2VwdCBhbnkgZm9ybWF0ICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NikgKHRoaXMgaXNcbmNvbXBsZXRlbHkgdW5yZWxhdGVkIHRvIHRoZSB0eXBlIG9mIHRoZSBjdXJyZW50IGZvcm1hdCksIGJ1dCBhbHNvXG5yZXF1aXJlIGEgcHJvb2YgdGhhdCB0aGlzIGZvcm1hdCBpcyBpbiByZWxhdGlvbiB0byBhbm90aGVyIGZvcm1hdCB0aGF0XG5pcyBjb25jYXRlbmFibGUgdG8gdGhlIGZvcm1hdCB0YWlsLiBXaGVuIGV4ZWN1dGluZyBhICUoLi4uJSkgZm9ybWF0XG4oaW4gY2FtbGludGVybmFsRm9ybWF0Lm1sOm1ha2VfcHJpbnRmIG9yIHNjYW5mLm1sOm1ha2Vfc2NhbmYpLCB3ZVxudHJhbnN0eXBlIHRoZSBmb3JtYXQgYWxvbmcgdGhpcyByZWxhdGlvbiB1c2luZyB0aGUgJ3JlY2FzdCcgZnVuY3Rpb25cbnRvIHRyYW5zcG9zZSBiZXR3ZWVuIHJlbGF0ZWQgZm9ybWF0IHR5cGVzLlxuXG4gIHZhbCByZWNhc3QgOlxuICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSkgZm10XG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXRcblxuTk9URSBbMV06IHRoZSB0eXBpbmcgb2YgRm9ybWF0X3N1YnN0X3R5IHJlcXVpcmVzIG5vdCBvbmUgZm9ybWF0IHR5cGUsIGJ1dFxudHdvLCBvbmUgdG8gZXN0YWJsaXNoIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdCBhcmd1bWVudCBhbmQgdGhlXG5maXJzdCBzaXggcGFyYW1ldGVycywgYW5kIHRoZSBvdGhlciBmb3IgdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0XG5hcmd1bWVudCBhbmQgdGhlIGxhc3Qgc2l4IHBhcmFtZXRlcnMuXG5cbnwgRm9ybWF0X3N1YnN0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5XaGVuIHdlIGdlbmVyYXRlIGEgZm9ybWF0IEFTVCwgd2UgZ2VuZXJhdGUgZXhhY3RseSB0aGUgc2FtZSB3aXRuZXNzXG5mb3IgYm90aCByZWxhdGlvbnMsIGFuZCB0aGUgd2l0bmVzcy1jb252ZXJzaW9uIGZ1bmN0aW9ucyBpblxuY2FtbGludGVybmFsRm9ybWF0IGRvIHJlbHkgb24gdGhpcyBpbnZhcmlhbnQuIEZvciBleGFtcGxlLCB0aGVcbmZ1bmN0aW9uIHRoYXQgcHJvdmVzIHRoYXQgdGhlIHJlbGF0aW9uIGlzIHRyYW5zaXRpdmVcblxuICB2YWwgdHJhbnMgOlxuICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMixcbiAgICAgICdhMywgJ2IzLCAnYzMsICdkMywgJ2UzLCAnZjMpIGZtdHR5X3JlbFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMywgJ2IzLCAnYzMsICdkMywgJ2UzLCAnZjMpIGZtdHR5X3JlbFxuXG5kb2VzIGFzc3VtZSB0aGF0IHRoZSB0d28gaW5wdXRzIGhhdmUgZXhhY3RseSB0aGUgc2FtZSB0ZXJtIHN0cnVjdHVyZVxuKGFuZCBpcyBvbmx5IGV2ZXJ5IHVzZWQgZm9yIGFyZ3VtZW50IHdpdG5lc3NlcyBvZiB0aGVcbkZvcm1hdF9zdWJzdF90eSBjb25zdHJ1Y3RvcikuXG4qKVxuXG4oKiBUeXBlIG9mIGEgYmxvY2sgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSBibG9ja190eXBlID1cbiAgfCBQcF9oYm94ICAgKCogSG9yaXpvbnRhbCBibG9jayBubyBsaW5lIGJyZWFraW5nICopXG4gIHwgUHBfdmJveCAgICgqIFZlcnRpY2FsIGJsb2NrIGVhY2ggYnJlYWsgbGVhZHMgdG8gYSBuZXcgbGluZSAqKVxuICB8IFBwX2h2Ym94ICAoKiBIb3Jpem9udGFsLXZlcnRpY2FsIGJsb2NrOiBzYW1lIGFzIHZib3gsIGV4Y2VwdCBpZiB0aGlzIGJsb2NrXG4gICAgICAgICAgICAgICAgIGlzIHNtYWxsIGVub3VnaCB0byBmaXQgb24gYSBzaW5nbGUgbGluZSAqKVxuICB8IFBwX2hvdmJveCAoKiBIb3Jpem9udGFsIG9yIFZlcnRpY2FsIGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jayAqKVxuICB8IFBwX2JveCAgICAoKiBIb3Jpem9udGFsIG9yIEluZGVudCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2ssIG9yXG4gICAgICAgICAgICAgICAgIHdoZW4gaXQgbGVhZHMgdG8gYSBuZXcgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgbGluZSAqKVxuICB8IFBwX2ZpdHMgICAoKiBJbnRlcm5hbCB1c2FnZTogd2hlbiBhIGJsb2NrIGZpdHMgb24gYSBzaW5nbGUgbGluZSAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSBmb3JtYXR0aW5nX2xpdCA9XG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBdICAgKilcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQH0gICAqKVxuICB8IEJyZWFrIG9mIHN0cmluZyAqIGludCAqIGludCAgICAgICAgICAoKiBALCB8IEAgIHwgQDsgfCBAOzw+ICopXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA/ICAgKilcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFxcbiAgKilcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQC4gICAqKVxuICB8IE1hZ2ljX3NpemUgb2Ygc3RyaW5nICogaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPG4+ICopXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBAICAgKilcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQCUlICAqKVxuICB8IFNjYW5faW5kaWMgb2YgY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAWCAgICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlbiA9XG4gIHwgT3Blbl90YWcgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEB7ICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cbiAgfCBPcGVuX2JveCA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQFsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCB0eXBlIGVsZW1lbnRzLiAqKVxuKCogSW4gcGFydGljdWxhciB1c2VkIHRvIHJlcHJlc2VudCAlKC4uLiUpIGFuZCAley4uLiV9IGNvbnRlbnRzLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLFxuICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5hbmQgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCA9XG4gIHwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgU3RyaW5nX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVzICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoc3RyaW5nIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgc3RyaW5nIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlZCAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnQzMl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxkICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQzMiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludDMyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IE5hdGl2ZWludF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbmQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKG5hdGl2ZWludCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIG5hdGl2ZWludCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnQ2NF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxkICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQ2NCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludDY0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEZsb2F0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlZiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGZsb2F0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgZmxvYXQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQm9vbF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVCICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoYm9vbCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGJvb2wgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgfCBGb3JtYXRfYXJnX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG4gIHwgRm9ybWF0X3N1YnN0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcblxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnMuICopXG4gIHwgQWxwaGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAneCAtPiAnYzEpIC0+ICd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAneCAtPiAnYzIpIC0+ICd4IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFRoZXRhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAldCAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ2MxKSAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ2MyKSAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBBbnlfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFVzZWQgZm9yIGN1c3RvbSBmb3JtYXRzICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IFJlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICgnYjEgLT4gJ3gpIC0+ICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgKCdiMiAtPiAneCkgLT4gJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICgnYjEgLT4gJ3gpIC0+ICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgKCdiMiAtPiAneCkgLT4gJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgfCBFbmRfb2ZfZm10dHkgOlxuICAgICAgKCdmMSwgJ2IxLCAnYzEsICdkMSwgJ2QxLCAnZjEsXG4gICAgICAgJ2YyLCAnYjIsICdjMiwgJ2QyLCAnZDIsICdmMikgZm10dHlfcmVsXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IGVsZW1lbnRzLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgPVxuICB8IENoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVDICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFN0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVzICopXG4gICAgICAoJ3gsIHN0cmluZyAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVTICopXG4gICAgICAoJ3gsIHN0cmluZyAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQzMiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbFtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludDMyIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgTmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5bZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBuYXRpdmVpbnQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQ2NCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTFtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludDY0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgICAgIGZsb2F0X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBmbG9hdCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEJvb2wgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbYkJdICopXG4gICAgICAoJ3gsIGJvb2wgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbHVzaCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlISAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBhYmMgKilcbiAgICAgIHN0cmluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENoYXJfbGl0ZXJhbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIHggKilcbiAgICAgIGNoYXIgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IEZvcm1hdF9hcmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBBbHBoYSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdiIC0+ICd4IC0+ICdjKSAtPiAneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBUaGV0YSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAldCAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdiIC0+ICdjKSAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3I6ICopXG4gIHwgRm9ybWF0dGluZ19saXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgIGZvcm1hdHRpbmdfbGl0ICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRm9ybWF0dGluZ19nZW4gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UxLCAnZjEpIGZvcm1hdHRpbmdfZ2VuICpcbiAgICAgICgnZjEsICdiLCAnYywgJ2UxLCAnZTIsICdmMikgZm10IC0+ICgnYTEsICdiLCAnYywgJ2QxLCAnZTIsICdmMikgZm10XG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IFJlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCAtPiAnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbLi4uXSAqKVxuICAgICAgcGFkX29wdGlvbiAqIGNoYXJfc2V0ICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoc3RyaW5nIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbbmxOTF0gKilcbiAgICAgIGNvdW50ZXIgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChpbnQgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJTBjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJZ25vcmVkX3BhcmFtIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGlnbm9yZWQgKiAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBDdXN0b20gcHJpbnRpbmcgZm9ybWF0IChQUiM2NDUyLCBHUFIjMTQwKVxuXG4gICAgIFdlIGluY2x1ZGUgYSB0eXBlIEN1c3RvbSBvZiBcImN1c3RvbSBjb252ZXJ0ZXJzXCIsIHdoZXJlIGFuXG4gICAgIGFyYml0cmFyeSBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IG9uZSBvciBtb3JlXG4gICAgIGFyZ3VtZW50cy4gVGhlcmUgaXMgbm8gc3ludGF4IGZvciBjdXN0b20gY29udmVydGVycywgaXQgaXMgb25seVxuICAgICBpbnRlbmRlZCBmb3IgY3VzdG9tIHByb2Nlc3NvcnMgdGhhdCB3aXNoIHRvIHJlbHkgb24gdGhlXG4gICAgIHN0ZGxpYi1kZWZpbmVkIGZvcm1hdCBHQURUcy5cblxuICAgICBGb3IgaW5zdGFuY2UgYSBwcmUtcHJvY2Vzc29yIGNvdWxkIGNob29zZSB0byBpbnRlcnByZXQgc3RyaW5nc1xuICAgICBwcmVmaXhlZCB3aXRoIFtcIiFcIl0gYXMgZm9ybWF0IHN0cmluZ3Mgd2hlcmUgWyV7eyAuLi4gfX1dIGlzXG4gICAgIGEgc3BlY2lhbCBmb3JtIHRvIHBhc3MgYSB0b19zdHJpbmcgZnVuY3Rpb24sIHNvIHRoYXQgb25lIGNvdWxkXG4gICAgIHdyaXRlOlxuXG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID0geyB4IDogaW50OyB5IDogaW50IH1cblxuICAgICAgIGxldCBzdHJpbmdfb2ZfdCB0ID0gUHJpbnRmLnNwcmludGYgXCJ7IHggPSAlZDsgeSA9ICVkIH1cIiB0LnggdC55XG5cbiAgICAgICBQcmludGYucHJpbnRmICFcInQgPSAle3tzdHJpbmdfb2ZfdH19XCIgeyB4ID0gNDI7IHkgPSA0MiB9XG4gICAgIF19XG4gICopXG4gIHwgQ3VzdG9tIDpcbiAgICAgICgnYSwgJ3gsICd5KSBjdXN0b21fYXJpdHkgKiAodW5pdCAtPiAneCkgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoJ3ksICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogZW5kIG9mIGEgZm9ybWF0IHNwZWNpZmljYXRpb24gKilcbiAgfCBFbmRfb2ZfZm9ybWF0IDpcbiAgICAgICAgKCdmLCAnYiwgJ2MsICdlLCAnZSwgJ2YpIGZtdFxuXG4oKioqKVxuXG4oKiBUeXBlIGZvciBpZ25vcmVkIHBhcmFtZXRlcnMgKHNlZSBcIiVfXCIpLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBpZ25vcmVkID1cbiAgfCBJZ25vcmVkX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9DICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfcyAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfUyAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQzMiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9sZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9uZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQ2NCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9MZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9mICopXG4gICAgICBwYWRfb3B0aW9uICogcHJlY19vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Jvb2wgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0IgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3suLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9yZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICopXG4gICAgICAoJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9bLi4uXSAqKVxuICAgICAgcGFkX29wdGlvbiAqIGNoYXJfc2V0IC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9bbmxOTF0gKilcbiAgICAgIGNvdW50ZXIgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXzBjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAqIHN0cmluZ1xuXG5sZXQgcmVjIGVyYXNlX3JlbCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAoYSwgYiwgYywgZCwgZSwgZixcbiAgIGcsIGgsIGksIGosIGssIGwpIGZtdHR5X3JlbCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlcbj0gZnVuY3Rpb25cbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBDaGFyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBJbnQzMl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIEludDY0X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIEZsb2F0X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIF90eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MSwgZXJhc2VfcmVsIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgQW55X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGUgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0IHR5cGVzLiAqKVxuKCogVXNlZCBieTpcbiAgICogcmVhZGVyX25iX3VuaWZpZXJfb2ZfZm10dHkgdG8gY291bnQgcmVhZGVycyBpbiBhbiBmbXR0eSxcbiAgICogU2NhbmYudGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyB0byBleHRyYWN0IHJlYWRlcnMgaW5zaWRlICUoLi4uJSksXG4gICAqIENhbWxpbnRlcm5hbEZvcm1hdC5mbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCB0byBleHRyYWN0IGZvcm1hdCB0eXBlLiAqKVxuXG4oKlxubGV0IHJlYyBjb25jYXRfZm10dHkgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGcsIGgpIGZtdHR5ID1cbiopXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMlxuICAgICAgIGcxIGoxIGcyIGoyXG4gIC5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGQxLCBhMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGQyLCBhMikgZm10dHlfcmVsIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbCAtPlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZTEsIGYxLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZTIsIGYyKSBmbXR0eV9yZWwgPVxuZnVuIGZtdHR5MSBmbXR0eTIgLT4gbWF0Y2ggZm10dHkxIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBDaGFyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBJbnQzMl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIEludDY0X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIEZsb2F0X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgQW55X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEVuZF9vZl9mbXR0eSAtPiBmbXR0eTJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXRzLiAqKVxubGV0IHJlYyBjb25jYXRfZm10IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGcsIGgpIGZtdCA9XG5mdW4gZm10MSBmbXQyIC0+IG1hdGNoIGZtdDEgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIFN0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIENhbWxfc3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDY0IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBDaGFyIChyZXN0KSAtPlxuICAgIENoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgQ2FtbF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgQm9vbCAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgQWxwaGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFRoZXRhIHJlc3QgLT5cbiAgICBUaGV0YSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBDdXN0b20gKGFyaXR5LCBmLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBSZWFkZXIgcmVzdCAtPlxuICAgIFJlYWRlciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIEZsdXNoIChjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nX2xpdGVyYWwgKHN0ciwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgQ2hhcl9saXRlcmFsICAgKGNociwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmcgICAocGFkLCBmbXR0eSwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgKHJlc3QpIC0+XG4gICAgU2Nhbl9uZXh0X2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBJZ25vcmVkX3BhcmFtIChpZ24sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBmbXQyXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4Y2VwdGlvbnMgKilcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gJ2EgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICAoKiBmb3IgcnVudGltZS9mYWlsX25hdC5jICopXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5hcnJheV9ib3VuZF9lcnJvclwiXG4gICAgKEludmFsaWRfYXJndW1lbnQgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpXG5cbmV4dGVybmFsIHJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2VcIlxuZXh0ZXJuYWwgcmFpc2Vfbm90cmFjZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlX25vdHJhY2VcIlxuXG5sZXQgZmFpbHdpdGggcyA9IHJhaXNlKEZhaWx1cmUgcylcbmxldCBpbnZhbGlkX2FyZyBzID0gcmFpc2UoSW52YWxpZF9hcmd1bWVudCBzKVxuXG5leGNlcHRpb24gRXhpdFxuZXhjZXB0aW9uIE1hdGNoX2ZhaWx1cmUgPSBNYXRjaF9mYWlsdXJlXG5leGNlcHRpb24gQXNzZXJ0X2ZhaWx1cmUgPSBBc3NlcnRfZmFpbHVyZVxuZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgPSBJbnZhbGlkX2FyZ3VtZW50XG5leGNlcHRpb24gRmFpbHVyZSA9IEZhaWx1cmVcbmV4Y2VwdGlvbiBOb3RfZm91bmQgPSBOb3RfZm91bmRcbmV4Y2VwdGlvbiBPdXRfb2ZfbWVtb3J5ID0gT3V0X29mX21lbW9yeVxuZXhjZXB0aW9uIFN0YWNrX292ZXJmbG93ID0gU3RhY2tfb3ZlcmZsb3dcbmV4Y2VwdGlvbiBTeXNfZXJyb3IgPSBTeXNfZXJyb3JcbmV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSA9IEVuZF9vZl9maWxlXG5leGNlcHRpb24gRGl2aXNpb25fYnlfemVybyA9IERpdmlzaW9uX2J5X3plcm9cbmV4Y2VwdGlvbiBTeXNfYmxvY2tlZF9pbyA9IFN5c19ibG9ja2VkX2lvXG5leGNlcHRpb24gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgPSBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuXG4oKiBDb21wb3NpdGlvbiBvcGVyYXRvcnMgKilcblxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcbmV4dGVybmFsICggQEAgKSA6ICgnYSAtPiAnYikgLT4gJ2EgLT4gJ2IgPSBcIiVhcHBseVwiXG5cbigqIERlYnVnZ2luZyAqKVxuXG5leHRlcm5hbCBfX0xPQ19fIDogc3RyaW5nID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0ZJTEVfXyA6IHN0cmluZyA9IFwiJWxvY19GSUxFXCJcbmV4dGVybmFsIF9fTElORV9fIDogaW50ID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuZXh0ZXJuYWwgX19QT1NfXyA6IHN0cmluZyAqIGludCAqIGludCAqIGludCA9IFwiJWxvY19QT1NcIlxuZXh0ZXJuYWwgX19GVU5DVElPTl9fIDogc3RyaW5nID0gXCIlbG9jX0ZVTkNUSU9OXCJcblxuZXh0ZXJuYWwgX19MT0NfT0ZfXyA6ICdhIC0+IHN0cmluZyAqICdhID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0xJTkVfT0ZfXyA6ICdhIC0+IGludCAqICdhID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19QT1NfT0ZfXyA6ICdhIC0+IChzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQpICogJ2EgPSBcIiVsb2NfUE9TXCJcblxuKCogQ29tcGFyaXNvbnMgKilcblxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbmxldCBtaW4geCB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuZXh0ZXJuYWwgKCA9PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxXCJcbmV4dGVybmFsICggIT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcVwiXG5cbigqIEJvb2xlYW4gb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5cbigqIEludGVnZXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tICkgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsICggfisgKSA6IGludCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgKCAtICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCAoICogKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsICggLyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgKCBtb2QgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcblxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5cbmV4dGVybmFsICggbGFuZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgKCBsb3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgKCBseG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5cbmxldCBsbm90IHggPSB4IGx4b3IgKC0xKVxuXG5leHRlcm5hbCAoIGxzbCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgKCBsc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmV4dGVybmFsICggYXNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5cbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuXG4oKiBGbG9hdGluZy1wb2ludCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0uICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsICggfisuICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggKy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgKCAtLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCAoICouICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsICggLy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgKCAqKiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5oX2Zsb2F0XCIgXCJjYW1sX2FzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbmhfZmxvYXRcIiBcImNhbWxfYXRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5leHRlcm5hbCBjb3B5c2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIGZsb2F0X29mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdHJ1bmNhdGUgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGludF9vZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmxldCBpbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuZWdfaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4RkZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmFuID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0Y4XzAwXzAwXzAwXzAwXzAwXzAxTFxubGV0IG1heF9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9FRl9GRl9GRl9GRl9GRl9GRl9GRkxcbmxldCBtaW5fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4MDBfMTBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgZXBzaWxvbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgzQ19CMF8wMF8wMF8wMF8wMF8wMF8wMExcblxudHlwZSBmcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5cbigqIFN0cmluZyBhbmQgYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlcyBTdHJpbmcgYW5kIEJ5dGVzICopXG5cbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19sZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCBzdHJpbmdfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBieXRlc19ibGl0IDogYnl0ZXMgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBieXRlc191bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxubGV0ICggXiApIHMxIHMyID1cbiAgbGV0IGwxID0gc3RyaW5nX2xlbmd0aCBzMSBhbmQgbDIgPSBzdHJpbmdfbGVuZ3RoIHMyIGluXG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIChsMSArIGwyKSBpblxuICBzdHJpbmdfYmxpdCBzMSAwIHMgMCBsMTtcbiAgc3RyaW5nX2JsaXQgczIgMCBzIGwxIGwyO1xuICBieXRlc191bnNhZmVfdG9fc3RyaW5nIHNcblxuKCogQ2hhcmFjdGVyIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgQ2hhciAqKVxuXG5leHRlcm5hbCBpbnRfb2ZfY2hhciA6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NoYXJfb2ZfaW50IDogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5sZXQgY2hhcl9vZl9pbnQgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcImNoYXJfb2ZfaW50XCIgZWxzZSB1bnNhZmVfY2hhcl9vZl9pbnQgblxuXG4oKiBVbml0IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIFBhaXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBmc3QgOiAnYSAqICdiIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsIHNuZCA6ICdhICogJ2IgLT4gJ2IgPSBcIiVmaWVsZDFcIlxuXG4oKiBSZWZlcmVuY2VzICopXG5cbnR5cGUgJ2EgcmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuZXh0ZXJuYWwgaW5jciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWluY3JcIlxuZXh0ZXJuYWwgZGVjciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWRlY3JcIlxuXG4oKiBSZXN1bHQgdHlwZSAqKVxuXG50eXBlICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYlxuXG4oKiBTdHJpbmcgY29udmVyc2lvbiBmdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG5sZXQgc3RyaW5nX29mX2Jvb2wgYiA9XG4gIGlmIGIgdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIlxubGV0IGJvb2xfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgXyAtPiBpbnZhbGlkX2FyZyBcImJvb2xfb2Zfc3RyaW5nXCJcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gU29tZSB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IFNvbWUgZmFsc2VcbiAgfCBfIC0+IE5vbmVcblxubGV0IHN0cmluZ19vZl9pbnQgbiA9XG4gIGZvcm1hdF9pbnQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5cbmxldCBpbnRfb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogcHJvdmlkZSB0aGlzIGRpcmVjdGx5IGFzIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlLiAqKVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmV4dGVybmFsIHN0cmluZ19nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gc3RyaW5nX2xlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID49IGwgdGhlbiBzIF4gXCIuXCIgZWxzZVxuICAgIG1hdGNoIHN0cmluZ19nZXQgcyBpIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgfCBfIC0+IHNcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzdHJpbmdfb2ZfZmxvYXQgZiA9IHZhbGlkX2Zsb2F0X2xleGVtIChmb3JtYXRfZmxvYXQgXCIlLjEyZ1wiIGYpXG5cbmV4dGVybmFsIGZsb2F0X29mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxuXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogcHJvdmlkZSB0aGlzIGRpcmVjdGx5IGFzIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlLiAqKVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuKCogTGlzdCBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIExpc3QgKilcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgKCBAICkgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gIHwgW10gLT4gbDJcbiAgfCBoMSA6OiBbXSAtPiBoMSA6OiBsMlxuICB8IGgxIDo6IGgyIDo6IFtdIC0+IGgxIDo6IGgyIDo6IGwyXG4gIHwgaDEgOjogaDIgOjogaDMgOjogdGwgLT4gaDEgOjogaDIgOjogaDMgOjogKHRsIEAgbDIpXG5cbigqIEkvTyBvcGVyYXRpb25zICopXG5cbnR5cGUgaW5fY2hhbm5lbFxudHlwZSBvdXRfY2hhbm5lbFxuXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDogaW50IC0+IG91dF9jaGFubmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcIlxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX2luIDogaW50IC0+IGluX2NoYW5uZWwgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXCJcblxubGV0IHN0ZGluID0gb3Blbl9kZXNjcmlwdG9yX2luIDBcbmxldCBzdGRvdXQgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDFcbmxldCBzdGRlcnIgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDJcblxuKCogR2VuZXJhbCBvdXRwdXQgZnVuY3Rpb25zICopXG5cbnR5cGUgb3Blbl9mbGFnID1cbiAgICBPcGVuX3Jkb25seSB8IE9wZW5fd3Jvbmx5IHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0IHwgT3Blbl90cnVuYyB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5IHwgT3Blbl90ZXh0IHwgT3Blbl9ub25ibG9ja1xuXG5leHRlcm5hbCBvcGVuX2Rlc2MgOiBzdHJpbmcgLT4gb3Blbl9mbGFnIGxpc3QgLT4gaW50IC0+IGludCA9IFwiY2FtbF9zeXNfb3BlblwiXG5cbmV4dGVybmFsIHNldF9vdXRfY2hhbm5lbF9uYW1lOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5fb3V0X2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX291dChvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9vdXRfY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9vdXQgbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fdGV4dF0gMG82NjYgbmFtZVxuXG5sZXQgb3Blbl9vdXRfYmluIG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX2JpbmFyeV0gMG82NjYgbmFtZVxuXG5leHRlcm5hbCBmbHVzaCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfZmx1c2hcIlxuXG5leHRlcm5hbCBvdXRfY2hhbm5lbHNfbGlzdCA6IHVuaXQgLT4gb3V0X2NoYW5uZWwgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3RcIlxuXG5sZXQgZmx1c2hfYWxsICgpID1cbiAgbGV0IHJlYyBpdGVyID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+ICgpXG4gICAgfCBhOjpsIC0+XG4gICAgICAgIGJlZ2luIHRyeVxuICAgICAgICAgICAgZmx1c2ggYVxuICAgICAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAgICAgKCkgKCogaWdub3JlIGNoYW5uZWxzIGNsb3NlZCBkdXJpbmcgYSBwcmVjZWRpbmcgZmx1c2guICopXG4gICAgICAgIGVuZDtcbiAgICAgICAgaXRlciBsXG4gIGluIGl0ZXIgKG91dF9jaGFubmVsc19saXN0ICgpKVxuXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0IDogb3V0X2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dF9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0X3N0cmluZyA6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dFwiXG5cbmV4dGVybmFsIG91dHB1dF9jaGFyIDogb3V0X2NoYW5uZWwgLT4gY2hhciAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcblxubGV0IG91dHB1dF9ieXRlcyBvYyBzID1cbiAgdW5zYWZlX291dHB1dCBvYyBzIDAgKGJ5dGVzX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0X3N0cmluZyBvYyBzID1cbiAgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyAwIChzdHJpbmdfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXQgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXQgb2MgcyBvZnMgbGVuXG5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBzdHJpbmdfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dF9zdWJzdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgb2ZzIGxlblxuXG5leHRlcm5hbCBvdXRwdXRfYnl0ZSA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcbmV4dGVybmFsIG91dHB1dF9iaW5hcnlfaW50IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2ludFwiXG5cbmV4dGVybmFsIG1hcnNoYWxfdG9fY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+ICdhIC0+IHVuaXQgbGlzdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5sZXQgb3V0cHV0X3ZhbHVlIGNoYW4gdiA9IG1hcnNoYWxfdG9fY2hhbm5lbCBjaGFuIHYgW11cblxuZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dFwiXG5leHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19vdXRcIlxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9vdXRfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2Vfb3V0IG9jID0gZmx1c2ggb2M7IGNsb3NlX291dF9jaGFubmVsIG9jXG5sZXQgY2xvc2Vfb3V0X25vZXJyIG9jID1cbiAgKHRyeSBmbHVzaCBvYyB3aXRoIF8gLT4gKCkpO1xuICAodHJ5IGNsb3NlX291dF9jaGFubmVsIG9jIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9vdXQgOiBvdXRfY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogR2VuZXJhbCBpbnB1dCBmdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgc2V0X2luX2NoYW5uZWxfbmFtZTogaW5fY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5faW5fZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3JfaW4ob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfaW5fY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9pbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX3RleHRdIDAgbmFtZVxuXG5sZXQgb3Blbl9pbl9iaW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl9iaW5hcnldIDAgbmFtZVxuXG5leHRlcm5hbCBpbnB1dF9jaGFyIDogaW5fY2hhbm5lbCAtPiBjaGFyID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuXG5leHRlcm5hbCB1bnNhZmVfaW5wdXQgOiBpbl9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfaW5wdXRcIlxuXG5sZXQgaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJpbnB1dFwiXG4gIGVsc2UgdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVjIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgbGVuIDw9IDAgdGhlbiAoKSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuIGluXG4gICAgaWYgciA9IDBcbiAgICB0aGVuIHJhaXNlIEVuZF9vZl9maWxlXG4gICAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgKG9mcyArIHIpIChsZW4gLSByKVxuICBlbmRcblxubGV0IHJlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcInJlYWxseV9pbnB1dFwiXG4gIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuID1cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgbGVuIGluXG4gIHJlYWxseV9pbnB1dCBpYyBzIDAgbGVuO1xuICBieXRlc191bnNhZmVfdG9fc3RyaW5nIHNcblxuZXh0ZXJuYWwgaW5wdXRfc2Nhbl9saW5lIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXCJcblxubGV0IGlucHV0X2xpbmUgY2hhbiA9XG4gIGxldCByZWMgYnVpbGRfcmVzdWx0IGJ1ZiBwb3MgPSBmdW5jdGlvblxuICAgIFtdIC0+IGJ1ZlxuICB8IGhkIDo6IHRsIC0+XG4gICAgICBsZXQgbGVuID0gYnl0ZXNfbGVuZ3RoIGhkIGluXG4gICAgICBieXRlc19ibGl0IGhkIDAgYnVmIChwb3MgLSBsZW4pIGxlbjtcbiAgICAgIGJ1aWxkX3Jlc3VsdCBidWYgKHBvcyAtIGxlbikgdGwgaW5cbiAgbGV0IHJlYyBzY2FuIGFjY3UgbGVuID1cbiAgICBsZXQgbiA9IGlucHV0X3NjYW5fbGluZSBjaGFuIGluXG4gICAgaWYgbiA9IDAgdGhlbiBiZWdpbiAgICAgICAgICAgICAgICAgICAoKiBuID0gMDogd2UgYXJlIGF0IEVPRiAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJhaXNlIEVuZF9vZl9maWxlXG4gICAgICB8IF8gIC0+IGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIGFjY3VcbiAgICBlbmQgZWxzZSBpZiBuID4gMCB0aGVuIGJlZ2luICAgICAgICAgICgqIG4gPiAwOiBuZXdsaW5lIGZvdW5kIGluIGJ1ZmZlciAqKVxuICAgICAgbGV0IHJlcyA9IGJ5dGVzX2NyZWF0ZSAobiAtIDEpIGluXG4gICAgICBpZ25vcmUgKHVuc2FmZV9pbnB1dCBjaGFuIHJlcyAwIChuIC0gMSkpO1xuICAgICAgaWdub3JlIChpbnB1dF9jaGFyIGNoYW4pOyAgICAgICAgICAgKCogc2tpcCB0aGUgbmV3bGluZSAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJlc1xuICAgICAgfCAgXyAtPiBsZXQgbGVuID0gbGVuICsgbiAtIDEgaW5cbiAgICAgICAgICAgICAgYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gKHJlcyA6OiBhY2N1KVxuICAgIGVuZCBlbHNlIGJlZ2luICAgICAgICAgICAgICAgICAgICAgICAgKCogbiA8IDA6IG5ld2xpbmUgbm90IGZvdW5kICopXG4gICAgICBsZXQgYmVnID0gYnl0ZXNfY3JlYXRlICgtbikgaW5cbiAgICAgIGlnbm9yZSh1bnNhZmVfaW5wdXQgY2hhbiBiZWcgMCAoLW4pKTtcbiAgICAgIHNjYW4gKGJlZyA6OiBhY2N1KSAobGVuIC0gbilcbiAgICBlbmRcbiAgaW4gYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyAoc2NhbiBbXSAwKVxuXG5leHRlcm5hbCBpbnB1dF9ieXRlIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5leHRlcm5hbCBpbnB1dF9iaW5hcnlfaW50IDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfaW50XCJcbmV4dGVybmFsIGlucHV0X3ZhbHVlIDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXCJcbmV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19pblwiXG5leHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9pbl9ub2VyciBpYyA9ICh0cnkgY2xvc2VfaW4gaWMgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX2luIDogaW5fY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIG91dHB1dCAqKVxuXG5sZXQgcHJpbnRfY2hhciBjID0gb3V0cHV0X2NoYXIgc3Rkb3V0IGNcbmxldCBwcmludF9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IHNcbmxldCBwcmludF9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZG91dCBzXG5sZXQgcHJpbnRfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByaW50X2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJpbnRfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRvdXQgczsgb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcbmxldCBwcmludF9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBlcnJvciAqKVxuXG5sZXQgcHJlcnJfY2hhciBjID0gb3V0cHV0X2NoYXIgc3RkZXJyIGNcbmxldCBwcmVycl9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIHNcbmxldCBwcmVycl9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZGVyciBzXG5sZXQgcHJlcnJfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByZXJyX2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJlcnJfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRlcnIgczsgb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcbmxldCBwcmVycl9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcblxuKCogSW5wdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGlucHV0ICopXG5cbmxldCByZWFkX2xpbmUgKCkgPSBmbHVzaCBzdGRvdXQ7IGlucHV0X2xpbmUgc3RkaW5cbmxldCByZWFkX2ludCAoKSA9IGludF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9pbnRfb3B0ICgpID0gaW50X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdCAoKSA9IGZsb2F0X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0X29wdCAoKSA9IGZsb2F0X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5cbigqIE9wZXJhdGlvbnMgb24gbGFyZ2UgZmlsZXMgKilcblxubW9kdWxlIExhcmdlRmlsZSA9XG4gIHN0cnVjdFxuICAgIGV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dF82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19vdXRfNjRcIlxuICAgIGV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludDY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gICAgZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXzY0XCJcbiAgICBleHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19pbl82NFwiXG4gICAgZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gIGVuZFxuXG4oKiBGb3JtYXRzICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgID0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG4gICA9IEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZtdFxuICAgICAgICAgICAgICAgKiBzdHJpbmdcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2MsICdjLCAnZCkgZm9ybWF0NlxuXG50eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYywgJ2MpIGZvcm1hdDRcblxubGV0IHN0cmluZ19vZl9mb3JtYXQgKEZvcm1hdCAoX2ZtdCwgc3RyKSkgPSBzdHJcblxuZXh0ZXJuYWwgZm9ybWF0X29mX3N0cmluZyA6XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9IFwiJWlkZW50aXR5XCJcblxubGV0ICggXl4gKSAoRm9ybWF0IChmbXQxLCBzdHIxKSkgKEZvcm1hdCAoZm10Miwgc3RyMikpID1cbiAgRm9ybWF0IChDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29uY2F0X2ZtdCBmbXQxIGZtdDIsXG4gICAgICAgICAgc3RyMSBeIFwiJSxcIiBeIHN0cjIpXG5cbigqIE1pc2NlbGxhbmVvdXMgKilcblxuZXh0ZXJuYWwgc3lzX2V4aXQgOiBpbnQgLT4gJ2EgPSBcImNhbWxfc3lzX2V4aXRcIlxuXG4oKiBmb3IgYXRfZXhpdCAqKVxudHlwZSAnYSBhdG9taWNfdFxuZXh0ZXJuYWwgYXRvbWljX21ha2UgOiAnYSAtPiAnYSBhdG9taWNfdCA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsIGF0b21pY19nZXQgOiAnYSBhdG9taWNfdCAtPiAnYSA9IFwiJWF0b21pY19sb2FkXCJcbmV4dGVybmFsIGF0b21pY19jb21wYXJlX2FuZF9zZXQgOiAnYSBhdG9taWNfdCAtPiAnYSAtPiAnYSAtPiBib29sXG4gID0gXCIlYXRvbWljX2Nhc1wiXG5cbmxldCBleGl0X2Z1bmN0aW9uID0gYXRvbWljX21ha2UgZmx1c2hfYWxsXG5cbmxldCByZWMgYXRfZXhpdCBmID1cbiAgKCogTVBSIzcyNTMsIE1QUiM3Nzk2OiBtYWtlIHN1cmUgXCJmXCIgaXMgZXhlY3V0ZWQgb25seSBvbmNlICopXG4gIGxldCBmX3lldF90b19ydW4gPSBhdG9taWNfbWFrZSB0cnVlIGluXG4gIGxldCBvbGRfZXhpdCA9IGF0b21pY19nZXQgZXhpdF9mdW5jdGlvbiBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgIGlmIGF0b21pY19jb21wYXJlX2FuZF9zZXQgZl95ZXRfdG9fcnVuIHRydWUgZmFsc2UgdGhlbiBmICgpIDtcbiAgICBvbGRfZXhpdCAoKVxuICBpblxuICBsZXQgc3VjY2VzcyA9IGF0b21pY19jb21wYXJlX2FuZF9zZXQgZXhpdF9mdW5jdGlvbiBvbGRfZXhpdCBuZXdfZXhpdCBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIGF0X2V4aXQgZlxuXG5sZXQgZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQgPSByZWYgKGZ1biAoKSAtPiAoKSlcblxubGV0IGRvX2F0X2V4aXQgKCkgPVxuICAoIWRvX2RvbWFpbl9sb2NhbF9hdF9leGl0KSAoKTtcbiAgKGF0b21pY19nZXQgZXhpdF9mdW5jdGlvbikgKClcblxubGV0IGV4aXQgcmV0Y29kZSA9XG4gIGRvX2F0X2V4aXQgKCk7XG4gIHN5c19leGl0IHJldGNvZGVcblxubGV0IF8gPSByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiIGRvX2F0X2V4aXRcblxuKCpNT0RVTEVfQUxJQVNFUyopXG5tb2R1bGUgQXJnICAgICAgICAgICAgPSBBcmdcbm1vZHVsZSBBcnJheSAgICAgICAgICA9IEFycmF5XG5tb2R1bGUgQXJyYXlMYWJlbHMgICAgPSBBcnJheUxhYmVsc1xubW9kdWxlIEF0b21pYyAgICAgICAgID0gQXRvbWljXG5tb2R1bGUgQmlnYXJyYXkgICAgICAgPSBCaWdhcnJheVxubW9kdWxlIEJvb2wgICAgICAgICAgID0gQm9vbFxubW9kdWxlIEJ1ZmZlciAgICAgICAgID0gQnVmZmVyXG5tb2R1bGUgQnl0ZXMgICAgICAgICAgPSBCeXRlc1xubW9kdWxlIEJ5dGVzTGFiZWxzICAgID0gQnl0ZXNMYWJlbHNcbm1vZHVsZSBDYWxsYmFjayAgICAgICA9IENhbGxiYWNrXG5tb2R1bGUgQ2hhciAgICAgICAgICAgPSBDaGFyXG5tb2R1bGUgQ29tcGxleCAgICAgICAgPSBDb21wbGV4XG5tb2R1bGUgQ29uZGl0aW9uICAgICAgPSBDb25kaXRpb25cbm1vZHVsZSBEaWdlc3QgICAgICAgICA9IERpZ2VzdFxubW9kdWxlIERvbWFpbiAgICAgICAgID0gRG9tYWluXG5tb2R1bGUgRHluYXJyYXkgICAgICAgPSBEeW5hcnJheVxubW9kdWxlIEVmZmVjdCAgICAgICAgID0gRWZmZWN0XG5tb2R1bGUgRWl0aGVyICAgICAgICAgPSBFaXRoZXJcbm1vZHVsZSBFcGhlbWVyb24gICAgICA9IEVwaGVtZXJvblxubW9kdWxlIEZpbGVuYW1lICAgICAgID0gRmlsZW5hbWVcbm1vZHVsZSBGbG9hdCAgICAgICAgICA9IEZsb2F0XG5tb2R1bGUgRm9ybWF0ICAgICAgICAgPSBGb3JtYXRcbm1vZHVsZSBGdW4gICAgICAgICAgICA9IEZ1blxubW9kdWxlIEdjICAgICAgICAgICAgID0gR2Ncbm1vZHVsZSBIYXNodGJsICAgICAgICA9IEhhc2h0Ymxcbm1vZHVsZSBJbl9jaGFubmVsICAgICA9IEluX2NoYW5uZWxcbm1vZHVsZSBJbnQgICAgICAgICAgICA9IEludFxubW9kdWxlIEludDMyICAgICAgICAgID0gSW50MzJcbm1vZHVsZSBJbnQ2NCAgICAgICAgICA9IEludDY0XG5tb2R1bGUgTGF6eSAgICAgICAgICAgPSBMYXp5XG5tb2R1bGUgTGV4aW5nICAgICAgICAgPSBMZXhpbmdcbm1vZHVsZSBMaXN0ICAgICAgICAgICA9IExpc3Rcbm1vZHVsZSBMaXN0TGFiZWxzICAgICA9IExpc3RMYWJlbHNcbm1vZHVsZSBNYXAgICAgICAgICAgICA9IE1hcFxubW9kdWxlIE1hcnNoYWwgICAgICAgID0gTWFyc2hhbFxubW9kdWxlIE1vcmVMYWJlbHMgICAgID0gTW9yZUxhYmVsc1xubW9kdWxlIE11dGV4ICAgICAgICAgID0gTXV0ZXhcbm1vZHVsZSBOYXRpdmVpbnQgICAgICA9IE5hdGl2ZWludFxubW9kdWxlIE9iaiAgICAgICAgICAgID0gT2JqXG5tb2R1bGUgT28gICAgICAgICAgICAgPSBPb1xubW9kdWxlIE9wdGlvbiAgICAgICAgID0gT3B0aW9uXG5tb2R1bGUgT3V0X2NoYW5uZWwgICAgPSBPdXRfY2hhbm5lbFxubW9kdWxlIFBhcnNpbmcgICAgICAgID0gUGFyc2luZ1xubW9kdWxlIFByaW50ZXhjICAgICAgID0gUHJpbnRleGNcbm1vZHVsZSBQcmludGYgICAgICAgICA9IFByaW50ZlxubW9kdWxlIFF1ZXVlICAgICAgICAgID0gUXVldWVcbm1vZHVsZSBSYW5kb20gICAgICAgICA9IFJhbmRvbVxubW9kdWxlIFJlc3VsdCAgICAgICAgID0gUmVzdWx0XG5tb2R1bGUgU2NhbmYgICAgICAgICAgPSBTY2FuZlxubW9kdWxlIFNlbWFwaG9yZSAgICAgID0gU2VtYXBob3JlXG5tb2R1bGUgU2VxICAgICAgICAgICAgPSBTZXFcbm1vZHVsZSBTZXQgICAgICAgICAgICA9IFNldFxubW9kdWxlIFN0YWNrICAgICAgICAgID0gU3RhY2tcbm1vZHVsZSBTdGRMYWJlbHMgICAgICA9IFN0ZExhYmVsc1xubW9kdWxlIFN0cmluZyAgICAgICAgID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nTGFiZWxzICAgPSBTdHJpbmdMYWJlbHNcbm1vZHVsZSBTeXMgICAgICAgICAgICA9IFN5c1xubW9kdWxlIFR5cGUgICAgICAgICAgID0gVHlwZVxubW9kdWxlIFVjaGFyICAgICAgICAgID0gVWNoYXJcbm1vZHVsZSBVbml0ICAgICAgICAgICA9IFVuaXRcbm1vZHVsZSBXZWFrICAgICAgICAgICA9IFdlYWtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgR2FicmllbCBTY2hlcmVyLCBwcm9qZXQgUGFyc2lmYWwsIElOUklBIFNhY2xheSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdiKSB0ID0gTGVmdCBvZiAnYSB8IFJpZ2h0IG9mICdiXG5cbmxldCBsZWZ0IHYgPSBMZWZ0IHZcbmxldCByaWdodCB2ID0gUmlnaHQgdlxuXG5sZXQgaXNfbGVmdCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiB0cnVlXG58IFJpZ2h0IF8gLT4gZmFsc2VcblxubGV0IGlzX3JpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IGZhbHNlXG58IFJpZ2h0IF8gLT4gdHJ1ZVxuXG5sZXQgZmluZF9sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IFNvbWUgdlxufCBSaWdodCBfIC0+IE5vbmVcblxubGV0IGZpbmRfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gTm9uZVxufCBSaWdodCB2IC0+IFNvbWUgdlxuXG5sZXQgbWFwX2xlZnQgZiA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChmIHYpXG58IFJpZ2h0IF8gYXMgZSAtPiBlXG5cbmxldCBtYXBfcmlnaHQgZiA9IGZ1bmN0aW9uXG58IExlZnQgXyBhcyBlIC0+IGVcbnwgUmlnaHQgdiAtPiBSaWdodCAoZiB2KVxuXG5sZXQgbWFwIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChsZWZ0IHYpXG58IFJpZ2h0IHYgLT4gUmlnaHQgKHJpZ2h0IHYpXG5cbmxldCBmb2xkIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBsZWZ0IHZcbnwgUmlnaHQgdiAtPiByaWdodCB2XG5cbmxldCBpdGVyID0gZm9sZFxuXG5sZXQgZm9yX2FsbCA9IGZvbGRcblxubGV0IGVxdWFsIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIHwgUmlnaHQgXywgTGVmdCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIC0+ICgtMSlcbnwgUmlnaHQgXywgTGVmdCBfIC0+IDFcbiIsIigqIEBjb25maWd1cmVfaW5wdXRAICopXG4jMyBcInN5cy5tbC5pblwiXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYmFja2VuZF90eXBlID1cbiAgfCBOYXRpdmVcbiAgfCBCeXRlY29kZVxuICB8IE90aGVyIG9mIHN0cmluZ1xuKCogU3lzdGVtIGludGVyZmFjZSAqKVxuXG5leHRlcm5hbCBnZXRfY29uZmlnOiB1bml0IC0+IHN0cmluZyAqIGludCAqIGJvb2wgPSBcImNhbWxfc3lzX2dldF9jb25maWdcIlxuZXh0ZXJuYWwgZ2V0X2V4ZWN1dGFibGVfbmFtZSA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3N5c19leGVjdXRhYmxlX25hbWVcIlxuZXh0ZXJuYWwgYXJndiA6IHN0cmluZyBhcnJheSA9IFwiJXN5c19hcmd2XCJcbmV4dGVybmFsIGJpZ19lbmRpYW4gOiB1bml0IC0+IGJvb2wgPSBcIiViaWdfZW5kaWFuXCJcbmV4dGVybmFsIHdvcmRfc2l6ZSA6IHVuaXQgLT4gaW50ID0gXCIld29yZF9zaXplXCJcbmV4dGVybmFsIGludF9zaXplIDogdW5pdCAtPiBpbnQgPSBcIiVpbnRfc2l6ZVwiXG5leHRlcm5hbCBtYXhfd29zaXplIDogdW5pdCAtPiBpbnQgPSBcIiVtYXhfd29zaXplXCJcbmV4dGVybmFsIHVuaXggOiB1bml0IC0+IGJvb2wgPSBcIiVvc3R5cGVfdW5peFwiXG5leHRlcm5hbCB3aW4zMiA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV93aW4zMlwiXG5leHRlcm5hbCBjeWd3aW4gOiB1bml0IC0+IGJvb2wgPSBcIiVvc3R5cGVfY3lnd2luXCJcbmV4dGVybmFsIGdldF9iYWNrZW5kX3R5cGUgOiB1bml0IC0+IGJhY2tlbmRfdHlwZSA9IFwiJWJhY2tlbmRfdHlwZVwiXG5cbmxldCBleGVjdXRhYmxlX25hbWUgPSBnZXRfZXhlY3V0YWJsZV9uYW1lKClcbmxldCAob3NfdHlwZSwgXywgXykgPSBnZXRfY29uZmlnKClcbmxldCBiYWNrZW5kX3R5cGUgPSBnZXRfYmFja2VuZF90eXBlICgpXG5sZXQgYmlnX2VuZGlhbiA9IGJpZ19lbmRpYW4gKClcbmxldCB3b3JkX3NpemUgPSB3b3JkX3NpemUgKClcbmxldCBpbnRfc2l6ZSA9IGludF9zaXplICgpXG5sZXQgdW5peCA9IHVuaXggKClcbmxldCB3aW4zMiA9IHdpbjMyICgpXG5sZXQgY3lnd2luID0gY3lnd2luICgpXG5sZXQgbWF4X2FycmF5X2xlbmd0aCA9IG1heF93b3NpemUgKClcbmxldCBtYXhfZmxvYXRhcnJheV9sZW5ndGggPSBtYXhfYXJyYXlfbGVuZ3RoIC8gKDY0IC8gd29yZF9zaXplKVxubGV0IG1heF9zdHJpbmdfbGVuZ3RoID0gd29yZF9zaXplIC8gOCAqIG1heF9hcnJheV9sZW5ndGggLSAxXG5leHRlcm5hbCBydW50aW1lX3ZhcmlhbnQgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9ydW50aW1lX3ZhcmlhbnRcIlxuZXh0ZXJuYWwgcnVudGltZV9wYXJhbWV0ZXJzIDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfcnVudGltZV9wYXJhbWV0ZXJzXCJcblxuZXh0ZXJuYWwgZmlsZV9leGlzdHM6IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N5c19maWxlX2V4aXN0c1wiXG5leHRlcm5hbCBpc19kaXJlY3RvcnkgOiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zeXNfaXNfZGlyZWN0b3J5XCJcbmV4dGVybmFsIGlzX3JlZ3VsYXJfZmlsZSA6IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGVcIlxuZXh0ZXJuYWwgcmVtb3ZlOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfcmVtb3ZlXCJcbmV4dGVybmFsIHJlbmFtZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfcmVuYW1lXCJcbmV4dGVybmFsIGdldGVudjogc3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9zeXNfZ2V0ZW52XCJcblxubGV0IGdldGVudl9vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKGdldGVudiBzKVxuICB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cbmV4dGVybmFsIGNvbW1hbmQ6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXCJcbmV4dGVybmFsIHRpbWU6IHVuaXQgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX3N5c190aW1lXCIgXCJjYW1sX3N5c190aW1lX3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2hkaXI6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19jaGRpclwiXG5leHRlcm5hbCBta2Rpcjogc3RyaW5nIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19ta2RpclwiXG5leHRlcm5hbCBybWRpcjogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JtZGlyXCJcbmV4dGVybmFsIGdldGN3ZDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2dldGN3ZFwiXG5leHRlcm5hbCByZWFkZGlyIDogc3RyaW5nIC0+IHN0cmluZyBhcnJheSA9IFwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnlcIlxuXG5sZXQgaW50ZXJhY3RpdmUgPSByZWYgZmFsc2VcblxudHlwZSBzaWduYWxfYmVoYXZpb3IgPVxuICAgIFNpZ25hbF9kZWZhdWx0XG4gIHwgU2lnbmFsX2lnbm9yZVxuICB8IFNpZ25hbF9oYW5kbGUgb2YgKGludCAtPiB1bml0KVxuXG5leHRlcm5hbCBzaWduYWwgOiBpbnQgLT4gc2lnbmFsX2JlaGF2aW9yIC0+IHNpZ25hbF9iZWhhdmlvclxuICAgICAgICAgICAgICAgID0gXCJjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXJcIlxuXG5sZXQgc2V0X3NpZ25hbCBzaWdfbnVtIHNpZ19iZWggPSBpZ25vcmUoc2lnbmFsIHNpZ19udW0gc2lnX2JlaClcblxubGV0IHNpZ2FicnQgPSAtMVxubGV0IHNpZ2Fscm0gPSAtMlxubGV0IHNpZ2ZwZSA9IC0zXG5sZXQgc2lnaHVwID0gLTRcbmxldCBzaWdpbGwgPSAtNVxubGV0IHNpZ2ludCA9IC02XG5sZXQgc2lna2lsbCA9IC03XG5sZXQgc2lncGlwZSA9IC04XG5sZXQgc2lncXVpdCA9IC05XG5sZXQgc2lnc2VndiA9IC0xMFxubGV0IHNpZ3Rlcm0gPSAtMTFcbmxldCBzaWd1c3IxID0gLTEyXG5sZXQgc2lndXNyMiA9IC0xM1xubGV0IHNpZ2NobGQgPSAtMTRcbmxldCBzaWdjb250ID0gLTE1XG5sZXQgc2lnc3RvcCA9IC0xNlxubGV0IHNpZ3RzdHAgPSAtMTdcbmxldCBzaWd0dGluID0gLTE4XG5sZXQgc2lndHRvdSA9IC0xOVxubGV0IHNpZ3Z0YWxybSA9IC0yMFxubGV0IHNpZ3Byb2YgPSAtMjFcbmxldCBzaWdidXMgPSAtMjJcbmxldCBzaWdwb2xsID0gLTIzXG5sZXQgc2lnc3lzID0gLTI0XG5sZXQgc2lndHJhcCA9IC0yNVxubGV0IHNpZ3VyZyA9IC0yNlxubGV0IHNpZ3hjcHUgPSAtMjdcbmxldCBzaWd4ZnN6ID0gLTI4XG5cbmV4Y2VwdGlvbiBCcmVha1xuXG5sZXQgY2F0Y2hfYnJlYWsgb24gPVxuICBpZiBvbiB0aGVuXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgKFNpZ25hbF9oYW5kbGUoZnVuIF8gLT4gcmFpc2UgQnJlYWspKVxuICBlbHNlXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgU2lnbmFsX2RlZmF1bHRcblxuXG5leHRlcm5hbCBlbmFibGVfcnVudGltZV93YXJuaW5nczogYm9vbCAtPiB1bml0ID1cbiAgXCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXCJcbmV4dGVybmFsIHJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZDogdW5pdCAtPiBib29sID1cbiAgXCJjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFwiXG5cbigqIFRoZSB2ZXJzaW9uIHN0cmluZyBpcyBmb3VuZCBpbiBmaWxlIC4uL1ZFUlNJT04gKilcblxubGV0IG9jYW1sX3ZlcnNpb24gPSBcIkBWRVJTSU9OQFwiXG5cbmxldCBkZXZlbG9wbWVudF92ZXJzaW9uID0gQE9DQU1MX0RFVkVMT1BNRU5UX1ZFUlNJT05AXG5cbnR5cGUgZXh0cmFfcHJlZml4ID0gUGx1cyB8IFRpbGRlXG5cbnR5cGUgZXh0cmFfaW5mbyA9IGV4dHJhX3ByZWZpeCAqIHN0cmluZ1xuXG50eXBlIG9jYW1sX3JlbGVhc2VfaW5mbyA9IHtcbiAgbWFqb3IgOiBpbnQ7XG4gIG1pbm9yIDogaW50O1xuICBwYXRjaGxldmVsIDogaW50O1xuICBleHRyYSA6IGV4dHJhX2luZm8gb3B0aW9uXG59XG5cbmxldCBvY2FtbF9yZWxlYXNlID0ge1xuICBtYWpvciA9IEBPQ0FNTF9WRVJTSU9OX01BSk9SQDtcbiAgbWlub3IgPSBAT0NBTUxfVkVSU0lPTl9NSU5PUkA7XG4gIHBhdGNobGV2ZWwgPSBAT0NBTUxfVkVSU0lPTl9QQVRDSExFVkVMQDtcbiAgZXh0cmEgPSBAT0NBTUxfUkVMRUFTRV9FWFRSQUBcbn1cblxuKCogT3B0aW1pemF0aW9uICopXG5cbmV4dGVybmFsIG9wYXF1ZV9pZGVudGl0eSA6ICdhIC0+ICdhID0gXCIlb3BhcXVlXCJcblxubW9kdWxlIEltbWVkaWF0ZTY0ID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG4gICAgZXh0ZXJuYWwgbWFnaWMgOiBfIHJlcHIgLT4gdCByZXByID0gXCIlaWRlbnRpdHlcIlxuICAgIGxldCByZXByID1cbiAgICAgIGlmIHdvcmRfc2l6ZSA9IDY0IHRoZW5cbiAgICAgICAgbWFnaWMgSW1tZWRpYXRlXG4gICAgICBlbHNlXG4gICAgICAgIG1hZ2ljIE5vbl9pbW1lZGlhdGVcbiAgZW5kXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogT3BlcmF0aW9ucyBvbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbnMgb2YgdmFsdWVzICopXG5cbnR5cGUgdFxuXG50eXBlIHJhd19kYXRhID0gbmF0aXZlaW50XG5cbmV4dGVybmFsIHJlcHIgOiAnYSAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2JqIDogdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG1hZ2ljIDogJ2EgLT4gJ2IgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBpc19pbnQgOiB0IC0+IGJvb2wgPSBcIiVvYmpfaXNfaW50XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGlzX2Jsb2NrIGEgPSBub3QgKGlzX2ludCBhKVxuZXh0ZXJuYWwgdGFnIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3RhZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaXplIDogdCAtPiBpbnQgPSBcIiVvYmpfc2l6ZVwiXG5leHRlcm5hbCByZWFjaGFibGVfd29yZHMgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXCJcbmV4dGVybmFsIGZpZWxkIDogdCAtPiBpbnQgLT4gdCA9IFwiJW9ial9maWVsZFwiXG5leHRlcm5hbCBzZXRfZmllbGQgOiB0IC0+IGludCAtPiB0IC0+IHVuaXQgPSBcIiVvYmpfc2V0X2ZpZWxkXCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRhcnJheV9nZXRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9zZXQgOlxuICAgIGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcImNhbWxfZmxvYXRhcnJheV9zZXRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gZG91YmxlX2ZpZWxkIHggaSA9IGZsb2F0YXJyYXlfZ2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGlcbmxldCBbQGlubGluZSBhbHdheXNdIHNldF9kb3VibGVfZmllbGQgeCBpIHYgPVxuICBmbG9hdGFycmF5X3NldCAob2JqIHggOiBmbG9hdGFycmF5KSBpIHZcbmV4dGVybmFsIHJhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhID0gXCJjYW1sX29ial9yYXdfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X3Jhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkXCJcblxuZXh0ZXJuYWwgbmV3X2Jsb2NrIDogaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX29ial9ibG9ja1wiXG5leHRlcm5hbCBkdXAgOiB0IC0+IHQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBhZGRfb2Zmc2V0IDogdCAtPiBJbnQzMi50IC0+IHQgPSBcImNhbWxfb2JqX2FkZF9vZmZzZXRcIlxuZXh0ZXJuYWwgd2l0aF90YWcgOiBpbnQgLT4gdCAtPiB0ID0gXCJjYW1sX29ial93aXRoX3RhZ1wiXG5cbmxldCBmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMFxubGV0IGxhc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDI0M1xuXG5sZXQgZm9yY2luZ190YWcgPSAyNDRcbmxldCBjb250X3RhZyA9IDI0NVxubGV0IGxhenlfdGFnID0gMjQ2XG5sZXQgY2xvc3VyZV90YWcgPSAyNDdcbmxldCBvYmplY3RfdGFnID0gMjQ4XG5sZXQgaW5maXhfdGFnID0gMjQ5XG5sZXQgZm9yd2FyZF90YWcgPSAyNTBcblxubGV0IG5vX3NjYW5fdGFnID0gMjUxXG5cbmxldCBhYnN0cmFjdF90YWcgPSAyNTFcbmxldCBzdHJpbmdfdGFnID0gMjUyXG5sZXQgZG91YmxlX3RhZyA9IDI1M1xubGV0IGRvdWJsZV9hcnJheV90YWcgPSAyNTRcbmxldCBjdXN0b21fdGFnID0gMjU1XG5cblxubGV0IGludF90YWcgPSAxMDAwXG5sZXQgb3V0X29mX2hlYXBfdGFnID0gMTAwMVxubGV0IHVuYWxpZ25lZF90YWcgPSAxMDAyXG5cbm1vZHVsZSBFeHRlbnNpb25fY29uc3RydWN0b3IgPVxuc3RydWN0XG4gIHR5cGUgdCA9IGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICBsZXQgb2ZfdmFsIHggPVxuICAgIGxldCB4ID0gcmVwciB4IGluXG4gICAgbGV0IHNsb3QgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHgpICYmICh0YWcgeCkgPD4gb2JqZWN0X3RhZyAmJiAoc2l6ZSB4KSA+PSAxIHRoZW4gZmllbGQgeCAwXG4gICAgICBlbHNlIHhcbiAgICBpblxuICAgIGxldCBuYW1lID1cbiAgICAgIGlmIChpc19ibG9jayBzbG90KSAmJiAodGFnIHNsb3QpID0gb2JqZWN0X3RhZyB0aGVuIGZpZWxkIHNsb3QgMFxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuICAgIGluXG4gICAgICBpZiAodGFnIG5hbWUpID0gc3RyaW5nX3RhZyB0aGVuIChvYmogc2xvdCA6IHQpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gbmFtZSAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAwKSA6IHN0cmluZylcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBpZCAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAxKSA6IGludClcbmVuZFxuXG5tb2R1bGUgRXBoZW1lcm9uID0gc3RydWN0XG4gIHR5cGUgb2JqX3QgPSB0XG5cbiAgdHlwZSB0ICgqKiBlcGhlbWVyb24gKilcblxuICAgKCoqIFRvIGNoYW5nZSBpbiBzeW5jIHdpdGggd2Vhay5oICopXG4gIGxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDJcbiAgbGV0IG1heF9lcGhlX2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gdCA9IFwiY2FtbF9lcGhlX2NyZWF0ZVwiXG4gIGxldCBjcmVhdGUgbCA9XG4gICAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBtYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5jcmVhdGVcIjtcbiAgICBjcmVhdGUgbFxuXG4gIGxldCBsZW5ndGggeCA9IHNpemUocmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgbGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICAgIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleVwiXG4gIGxldCBnZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5XCI7XG4gICAgZ2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBnZXRfa2V5X2NvcHk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlfY29weVwiXG4gIGxldCBnZXRfa2V5X2NvcHkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlfY29weVwiO1xuICAgIGdldF9rZXlfY29weSBlIG9cblxuICBleHRlcm5hbCBzZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG4gIGxldCBzZXRfa2V5IGUgbyB4ID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnNldF9rZXlcIjtcbiAgICBzZXRfa2V5IGUgbyB4XG5cbiAgZXh0ZXJuYWwgdW5zZXRfa2V5OiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbiAgbGV0IHVuc2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24udW5zZXRfa2V5XCI7XG4gICAgdW5zZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGNoZWNrX2tleTogdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2tleVwiXG4gIGxldCBjaGVja19rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmNoZWNrX2tleVwiO1xuICAgIGNoZWNrX2tleSBlIG9cblxuICBleHRlcm5hbCBibGl0X2tleSA6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgPSBcImNhbWxfZXBoZV9ibGl0X2tleVwiXG5cbiAgbGV0IGJsaXRfa2V5IGUxIG8xIGUyIG8yIGwgPVxuICAgIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uYmxpdF9rZXlcIlxuICAgIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdF9rZXkgZTEgbzEgZTIgbzIgbFxuXG4gIGV4dGVybmFsIGdldF9kYXRhOiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhXCJcbiAgZXh0ZXJuYWwgZ2V0X2RhdGFfY29weTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XCJcbiAgZXh0ZXJuYWwgc2V0X2RhdGE6IHQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9kYXRhXCJcbiAgZXh0ZXJuYWwgdW5zZXRfZGF0YTogdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfZGF0YVwiXG4gIGV4dGVybmFsIGNoZWNrX2RhdGE6IHQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2RhdGFcIlxuICBleHRlcm5hbCBibGl0X2RhdGEgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX2JsaXRfZGF0YVwiXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUeXBlIGVxdWFsaXR5IHdpdG5lc3MgKilcblxudHlwZSAoXywgXykgZXEgPSBFcXVhbDogKCdhLCAnYSkgZXFcblxuKCogVHlwZSBpZGVudGlmaWVycyAqKVxuXG5tb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgdHlwZSBfIGlkID0gLi5cbiAgbW9kdWxlIHR5cGUgSUQgPSBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlIF8gaWQgKz0gSWQgOiB0IGlkXG4gIGVuZFxuXG4gIHR5cGUgISdhIHQgPSAobW9kdWxlIElEIHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgbGV0IG1ha2UgKHR5cGUgYSkgKCkgOiBhIHQgPVxuICAgIChtb2R1bGUgc3RydWN0IHR5cGUgdCA9IGEgdHlwZSBfIGlkICs9IElkIDogdCBpZCBlbmQpXG5cbiAgbGV0W0BpbmxpbmVdIHVpZCAodHlwZSBhKSAoKG1vZHVsZSBBKSA6IGEgdCkgPVxuICAgIE9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIEEuSWQpXG5cbiAgbGV0IHByb3ZhYmx5X2VxdWFsXG4gICAgICAodHlwZSBhIGIpICgobW9kdWxlIEEpIDogYSB0KSAoKG1vZHVsZSBCKSA6IGIgdCkgOiAoYSwgYikgZXEgb3B0aW9uXG4gICAgPVxuICAgIG1hdGNoIEEuSWQgd2l0aCBCLklkIC0+IFNvbWUgRXF1YWwgfCBfIC0+IE5vbmVcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgIFN0ZXBoZW4gRG9sYW4sIFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNy0yMDE4IFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlLiAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICEnYSB0XG5cbmV4dGVybmFsIG1ha2UgOiAnYSAtPiAnYSB0ID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgbWFrZV9jb250ZW5kZWQgOiAnYSAtPiAnYSB0ID0gXCJjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZFwiXG5leHRlcm5hbCBnZXQgOiAnYSB0IC0+ICdhID0gXCIlYXRvbWljX2xvYWRcIlxuZXh0ZXJuYWwgZXhjaGFuZ2UgOiAnYSB0IC0+ICdhIC0+ICdhID0gXCIlYXRvbWljX2V4Y2hhbmdlXCJcbmV4dGVybmFsIGNvbXBhcmVfYW5kX3NldCA6ICdhIHQgLT4gJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWF0b21pY19jYXNcIlxuZXh0ZXJuYWwgZmV0Y2hfYW5kX2FkZCA6IGludCB0IC0+IGludCAtPiBpbnQgPSBcIiVhdG9taWNfZmV0Y2hfYWRkXCJcbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5sZXQgc2V0IHIgeCA9IGlnbm9yZSAoZXhjaGFuZ2UgciB4KVxubGV0IGluY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByIDEpXG5sZXQgZGVjciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgKC0xKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW50ZXJuYWxzIG9mIGZvcmNpbmcgbGF6eSB2YWx1ZXMuICopXG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5cbigqIFt1cGRhdGVfdG9fZm9yY2luZyBibGtdIHRyaWVzIHRvIHVwZGF0ZSBhIFtibGtdIHdpdGggW2xhenlfdGFnXSB0b1xuICAgW2ZvcmNpbmdfdGFnXSB1c2luZyBjb21wYXJlLWFuZC1zd2FwIChDQVMpLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGUgaGVhZGVyIHdvcmQgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC4gUmV0dXJucyBbMF0gaWYgdGhlXG4gICBDQVMgaXMgc3VjY2Vzc2Z1bC4gSWYgdGhlIENBUyBmYWlscywgdGhlbiB0aGUgdGFnIHdhcyBvYnNlcnZlZCB0byBiZVxuICAgc29tZXRoaW5nIG90aGVyIHRoYW4gW2xhenlfdGFnXSBkdWUgdG8gYSBjb25jdXJyZW50IG11dGF0b3IuIEluIHRoaXMgY2FzZSxcbiAgIHRoZSBmdW5jdGlvbiByZXR1cm5zIFsxXS4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3JjaW5nIDogT2JqLnQgLT4gaW50ID1cbiAgXCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmdcIiBbQEBub2FsbG9jXVxuXG4oKiBbcmVzZXRfdG9fbGF6eSBibGtdIGV4cGVjdHMgW2Jsa10gdG8gYmUgYSBsYXp5IG9iamVjdCB3aXRoIFtPYmouZm9yY2luZ190YWddXG4gICBhbmQgdXBkYXRlcyB0aGUgdGFnIHRvIFtPYmoubGF6eV90YWddLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGlzIG9iamVjdCdzIGhlYWRlciBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLiAqKVxuZXh0ZXJuYWwgcmVzZXRfdG9fbGF6eSA6IE9iai50IC0+IHVuaXQgPSBcImNhbWxfbGF6eV9yZXNldF90b19sYXp5XCIgW0BAbm9hbGxvY11cblxuKCogW3VwZGF0ZV90b19mb3J3YXJkIGJsa10gZXhwZWN0cyBbYmxrXSB0byBiZSBhIGxhenkgb2JqZWN0IHdpdGhcbiAgIFtPYmouZm9yY2luZ190YWddIGFuZCB1cGRhdGVzIHRoZSB0YWcgdG8gW09iai5mb3J3YXJkX3RhZ10sIHRha2luZyBjYXJlIHRvXG4gICBoYW5kbGUgY29uY3VycmVudCBtYXJraW5nIG9mIHRoaXMgb2JqZWN0J3MgaGVhZGVyIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuXG4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3J3YXJkIDogT2JqLnQgLT4gdW5pdCA9XG4gIFwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXCIgW0BAbm9hbGxvY11cblxuKCogQXNzdW1lcyBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGZvcmNpbmcgKilcbmxldCBkb19mb3JjZV9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICB0cnlcbiAgICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciByZXN1bHQpO1xuICAgIHVwZGF0ZV90b19mb3J3YXJkIGI7XG4gICAgcmVzdWx0XG4gIHdpdGggZSAtPlxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIGUpKTtcbiAgICByZXNldF90b19sYXp5IGI7XG4gICAgcmFpc2UgZVxuXG4oKiBBc3N1bWVzIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgZm9yY2luZyAqKVxubGV0IGRvX2ZvcmNlX3ZhbF9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgdXBkYXRlX3RvX2ZvcndhcmQgYjtcbiAgcmVzdWx0XG5cbigqIENhbGxlZCBieSBbZm9yY2VfZ2VuXSAqKVxubGV0IGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgKCogV2UgZXhwZWN0IHRoZSB0YWcgdG8gYmUgW2xhenlfdGFnXSwgYnV0IG1heSBiZSBvdGhlciB0YWdzIGR1ZSB0b1xuICAgICBjb25jdXJyZW50IGZvcmNpbmcgb2YgbGF6eSB2YWx1ZXMuICopXG4gIG1hdGNoIHVwZGF0ZV90b19mb3JjaW5nIChPYmoucmVwciBibGspIHdpdGhcbiAgfCAwIHdoZW4gb25seV92YWwgLT4gZG9fZm9yY2VfdmFsX2Jsb2NrIGJsa1xuICB8IDAgLT4gZG9fZm9yY2VfYmxvY2sgYmxrXG4gIHwgXyAtPiByYWlzZSBVbmRlZmluZWRcblxuKCogdXNlZCBpbiB0aGUgJWxhenlfZm9yY2UgcHJpbWl0aXZlICopXG5sZXQgZm9yY2VfbGF6eV9ibG9jayBibGsgPSBmb3JjZV9nZW5fbGF6eV9ibG9jayB+b25seV92YWw6ZmFsc2UgYmxrXG5cbigqIFtmb3JjZV9nZW4gfm9ubHlfdmFsOmZhbHNlXSBpcyBub3QgdXNlZCwgc2luY2UgW0xhenkuZm9yY2VdIGlzXG4gICBkZWNsYXJlZCBhcyBhIHByaW1pdGl2ZSB3aG9zZSBjb2RlIGlubGluZXMgdGhlIHRhZyB0ZXN0cyBvZiBpdHNcbiAgIGFyZ3VtZW50LCBleGNlcHQgd2hlbiBhZmwgaW5zdHJ1bWVudGF0aW9uIGlzIHR1cm5lZCBvbi4gKilcbmxldCBmb3JjZV9nZW4gfm9ubHlfdmFsIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBVc2luZyBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gcHJldmVudHMgdHdvIHBvdGVudGlhbCBwcm9ibGVtczpcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZywgdGhlbiBpdCBjb3VsZCBoYXZlIGJlZW5cbiAgICAgICBzaG9ydGN1dCBkdXJpbmcgR0MsIHNvIHRoYXQgaW5mb3JtYXRpb24gbXVzdCBiZSBmb3Jnb3R0ZW4gKHNlZSBHUFIjNzEzXG4gICAgICAgYW5kIGlzc3VlICM3MzAxKS4gVGhpcyBpcyBub3QgYW4gaXNzdWUgaGVyZSBhdCB0aGUgbW9tZW50IHNpbmNlXG4gICAgICAgW09iai50YWddIGlzIG5vdCBzaW1wbGlmaWVkIGJ5IHRoZSBjb21waWxlciwgYW5kIEdQUiM3MTMgYWxzb1xuICAgICAgIGVuc3VyZXMgdGhhdCBubyB2YWx1ZSB3aWxsIGJlIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcuXG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGJlIGltbXV0YWJsZSwgdGhlbiBpZiB0aGUgY29tcGlsZXJcbiAgICAgICBjYW5ub3QgcHJvdmUgdGhhdCB0aGUgbGFzdCBicmFuY2ggaXMgbm90IHRha2VuIGl0IHdpbGwgaXNzdWUgYVxuICAgICAgIHdhcm5pbmcgNTkgKG1vZGlmaWNhdGlvbiBvZiBhbiBpbW11dGFibGUgdmFsdWUpICopXG4gIGxldCBsenYgPSBTeXMub3BhcXVlX2lkZW50aXR5IGx6diBpblxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICAoKiBTVEFSVCBubyBzYWZlIHBvaW50cy4gSWYgYSBHQyBvY2N1cnMgaGVyZSwgdGhlbiB0aGUgb2JqZWN0IFt4XSBtYXkgYmVcbiAgICAgc2hvcnQtY2lyY3VpdGVkLCBhbmQgZ2V0dGluZyB0aGUgZmlyc3QgZmllbGQgb2YgW3hdIHdvdWxkIGdldCB1cyB0aGUgd3JvbmdcbiAgICAgdmFsdWUuIEx1Y2tpbHksIHRoZSBjb21waWxlciBkb2VzIG5vdCBpbnNlcnQgR0Mgc2FmZSBwb2ludHMgYXQgdGhpcyBwbGFjZSxcbiAgICAgc28gaXQgaXMgb2suICopXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlblxuICAgIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpXG4gICgqIEVORCBubyBzYWZlIHBvaW50cyAqKVxuICBlbHNlIGlmIHQgPSBPYmouZm9yY2luZ190YWcgdGhlbiByYWlzZSBVbmRlZmluZWRcbiAgZWxzZSBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCBsenZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtMYXp5XTogZGVmZXJyZWQgY29tcHV0YXRpb25zICopXG5cblxuKCpcbiAgIFdBUk5JTkc6IHNvbWUgcHVycGxlIG1hZ2ljIGlzIGdvaW5nIG9uIGhlcmUuICBEbyBub3QgdGFrZSB0aGlzIGZpbGVcbiAgIGFzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHByb2dyYW0gaW4gT0NhbWwuXG4qKVxuXG5cbigqIFdlIG1ha2UgdXNlIG9mIHR3byBzcGVjaWFsIHRhZ3MgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWU6XG4gICBbbGF6eV90YWddIGFuZCBbZm9yd2FyZF90YWddLlxuXG4gICBBIHZhbHVlIG9mIHR5cGUgWydhIExhenkudF0gY2FuIGJlIG9uZSBvZiB0aHJlZSB0aGluZ3M6XG4gICAxLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbbGF6eV90YWddLiAgSXRzIGZpZWxkIGlzIGEgY2xvc3VyZSBvZlxuICAgICAgdHlwZSBbdW5pdCAtPiAnYV0gdGhhdCBjb21wdXRlcyB0aGUgdmFsdWUuXG4gICAyLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbZm9yd2FyZF90YWddLiAgSXRzIGZpZWxkIGlzIHRoZSB2YWx1ZVxuICAgICAgb2YgdHlwZSBbJ2FdIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgMy4gQW55dGhpbmcgZWxzZSBleGNlcHQgYSBmbG9hdC4gIFRoaXMgaGFzIHR5cGUgWydhXSBhbmQgaXMgdGhlIHZhbHVlXG4gICAgICB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIEV4Y2VwdGlvbnMgYXJlIHN0b3JlZCBpbiBmb3JtYXQgKDEpLlxuICAgVGhlIEdDIHdpbGwgbWFnaWNhbGx5IGNoYW5nZSB0aGluZ3MgZnJvbSAoMikgdG8gKDMpIGFjY29yZGluZyB0byBpdHNcbiAgIGZhbmN5LlxuXG4gICBJZiBPQ2FtbCB3YXMgY29uZmlndXJlZCB3aXRoIHRoZSAtZmxhdC1mbG9hdC1hcnJheSBvcHRpb24gKHdoaWNoIGlzXG4gICBjdXJyZW50bHkgdGhlIGRlZmF1bHQpLCB0aGUgZm9sbG93aW5nIGlzIGFsc28gdHJ1ZTpcbiAgIFdlIGNhbm5vdCB1c2UgcmVwcmVzZW50YXRpb24gKDMpIGZvciBhIFtmbG9hdCBMYXp5LnRdIGJlY2F1c2VcbiAgIFtjYW1sX21ha2VfYXJyYXldIGFzc3VtZXMgdGhhdCBvbmx5IGEgW2Zsb2F0XSB2YWx1ZSBjYW4gaGF2ZSB0YWdcbiAgIFtEb3VibGVfdGFnXS5cblxuICAgV2UgaGF2ZSB0byB1c2UgdGhlIGJ1aWx0LWluIHR5cGUgY29uc3RydWN0b3IgW2xhenlfdF0gdG9cbiAgIGxldCB0aGUgY29tcGlsZXIgaW1wbGVtZW50IHRoZSBzcGVjaWFsIHR5cGluZyBhbmQgY29tcGlsYXRpb25cbiAgIHJ1bGVzIGZvciB0aGUgW2xhenldIGtleXdvcmQuXG4qKVxuXG50eXBlICdhIHQgPSAnYSBDYW1saW50ZXJuYWxMYXp5LnRcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCA9IENhbWxpbnRlcm5hbExhenkuVW5kZWZpbmVkXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiAnYSAtPiAnYSBsYXp5X3QgPSBcImNhbWxfbGF6eV9tYWtlX2ZvcndhcmRcIlxuZXh0ZXJuYWwgZm9yY2UgOiAnYSB0IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5cbmxldCBmb3JjZV92YWwgbCA9IENhbWxpbnRlcm5hbExhenkuZm9yY2VfZ2VuIH5vbmx5X3ZhbDp0cnVlIGxcblxubGV0IGZyb21fZnVuIChmIDogdW5pdCAtPiAnYXJnKSA9XG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmoubGF6eV90YWcgMSBpblxuICBPYmouc2V0X2ZpZWxkIHggMCAoT2JqLnJlcHIgZik7XG4gIChPYmoub2JqIHggOiAnYXJnIHQpXG5cbmxldCBmcm9tX3ZhbCAodiA6ICdhcmcpID1cbiAgbGV0IHQgPSBPYmoudGFnIChPYmoucmVwciB2KSBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHx8IHQgPSBPYmoubGF6eV90YWcgfHxcbiAgICAgdCA9IE9iai5mb3JjaW5nX3RhZyB8fCB0ID0gT2JqLmRvdWJsZV90YWcgdGhlbiBiZWdpblxuICAgIG1ha2VfZm9yd2FyZCB2XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgKE9iai5tYWdpYyB2IDogJ2FyZyB0KVxuICBlbmRcblxubGV0IGlzX3ZhbCAobCA6ICdhcmcgdCkgPSBPYmoudGFnIChPYmoucmVwciBsKSA8PiBPYmoubGF6eV90YWdcblxubGV0IG1hcCBmIHggPVxuICBsYXp5IChmIChmb3JjZSB4KSlcblxubGV0IG1hcF92YWwgZiB4ID1cbiAgaWYgaXNfdmFsIHhcbiAgdGhlbiBmcm9tX3ZhbCAoZiAoZm9yY2UgeCkpXG4gIGVsc2UgbGF6eSAoZiAoZm9yY2UgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU2ltb24gQ3J1YW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbU2VxXTogZnVuY3Rpb25hbCBpdGVyYXRvcnMgKilcblxudHlwZSArJ2Egbm9kZSA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiAnYSAqICdhIHRcblxuYW5kICdhIHQgPSB1bml0IC0+ICdhIG5vZGVcblxubGV0IGVtcHR5ICgpID0gTmlsXG5cbmxldCByZXR1cm4geCAoKSA9IENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgY29ucyB4IG5leHQgKCkgPSBDb25zICh4LCBuZXh0KVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBtYXRjaCBzZXExKCkgd2l0aFxuICB8IE5pbCAtPiBzZXEyKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zICh4LCBhcHBlbmQgbmV4dCBzZXEyKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoZiB4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgICAgfCBTb21lIHkgLT4gQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgaWYgZiB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlciBmIG5leHQpXG4gICAgICBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBjb25jYXQgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgYXBwZW5kIHggKGNvbmNhdCBuZXh0KSAoKVxuXG5sZXQgcmVjIGZsYXRfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBhcHBlbmQgKGYgeCkgKGZsYXRfbWFwIGYgbmV4dCkgKClcblxubGV0IGNvbmNhdF9tYXAgPSBmbGF0X21hcFxuXG5sZXQgcmVjIGZvbGRfbGVmdCBmIGFjYyBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+IGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgZm9sZF9sZWZ0IGYgYWNjIG5leHRcblxubGV0IHJlYyBpdGVyIGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgZiB4O1xuICAgICAgICBpdGVyIGYgbmV4dFxuXG5sZXQgcmVjIHVuZm9sZCBmIHUgKCkgPVxuICBtYXRjaCBmIHUgd2l0aFxuICB8IE5vbmUgLT4gTmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IENvbnMgKHgsIHVuZm9sZCBmIHUnKVxuXG5sZXQgaXNfZW1wdHkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zIChfLCBfKSAtPlxuICAgICAgZmFsc2VcblxubGV0IHVuY29ucyB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgU29tZSAoeCwgeHMpXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG5cblxuXG5sZXQgcmVjIGxlbmd0aF9hdXggYWNjdSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKF8sIHhzKSAtPlxuICAgICAgbGVuZ3RoX2F1eCAoYWNjdSArIDEpIHhzXG5cbmxldFtAaW5saW5lXSBsZW5ndGggeHMgPVxuICBsZW5ndGhfYXV4IDAgeHNcblxubGV0IHJlYyBpdGVyaV9hdXggZiBpIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICAoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgZiBpIHg7XG4gICAgICBpdGVyaV9hdXggZiAoaSsxKSB4c1xuXG5sZXRbQGlubGluZV0gaXRlcmkgZiB4cyA9XG4gIGl0ZXJpX2F1eCBmIDAgeHNcblxubGV0IHJlYyBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgaSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgaSB4IGluXG4gICAgICBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgKGkrMSkgeHNcblxubGV0W0BpbmxpbmVdIGZvbGRfbGVmdGkgZiBhY2N1IHhzID1cbiAgZm9sZF9sZWZ0aV9hdXggZiBhY2N1IDAgeHNcblxubGV0IHJlYyBmb3JfYWxsIHAgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHAgeCAmJiBmb3JfYWxsIHAgeHNcblxubGV0IHJlYyBleGlzdHMgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHAgeCB8fCBleGlzdHMgcCB4c1xuXG5sZXQgcmVjIGZpbmQgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZCBwIHhzXG5cbmxldCBmaW5kX2luZGV4IHAgeHMgPVxuICBsZXQgcmVjIGF1eCBpIHhzID0gbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIGlmIHAgeCB0aGVuIFNvbWUgaSBlbHNlIGF1eCAoaSsxKSB4cyBpblxuICBhdXggMCB4c1xuXG5sZXQgcmVjIGZpbmRfbWFwIGYgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBmaW5kX21hcCBmIHhzXG4gICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICByZXN1bHRcblxubGV0IGZpbmRfbWFwaSBmIHhzID1cbiAgbGV0IHJlYyBhdXggaSB4cyA9IG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5vbmVcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBtYXRjaCBmIGkgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgYXV4IChpKzEpIHhzXG4gICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgICAgcmVzdWx0IGluXG4gIGF1eCAwIHhzXG5cbigqIFtpdGVyMl0sIFtmb2xkX2xlZnQyXSwgW2Zvcl9hbGwyXSwgW2V4aXN0czJdLCBbbWFwMl0sIFt6aXBdIHdvcmsgYWxzbyBpblxuICAgdGhlIGNhc2Ugd2hlcmUgdGhlIHR3byBzZXF1ZW5jZXMgaGF2ZSBkaWZmZXJlbnQgbGVuZ3Rocy4gVGhleSBzdG9wIGFzIHNvb25cbiAgIGFzIG9uZSBzZXF1ZW5jZSBpcyBleGhhdXN0ZWQuIFRoZWlyIGJlaGF2aW9yIGlzIHNsaWdodGx5IGFzeW1tZXRyaWM6IHdoZW5cbiAgIFt4c10gaXMgZW1wdHksIHRoZXkgZG8gbm90IGZvcmNlIFt5c107IGhvd2V2ZXIsIHdoZW4gW3lzXSBpcyBlbXB0eSwgW3hzXSBpc1xuICAgZm9yY2VkLCBldmVuIHRob3VnaCB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBhcHBsaWNhdGlvbiBbeHMoKV0gdHVybnMgb3V0XG4gICB0byBiZSB1c2VsZXNzLiAqKVxuXG5sZXQgcmVjIGl0ZXIyIGYgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgICgpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgKClcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHk7XG4gICAgICAgICAgaXRlcjIgZiB4cyB5c1xuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgYWNjdVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBsZXQgYWNjdSA9IGYgYWNjdSB4IHkgaW5cbiAgICAgICAgICBmb2xkX2xlZnQyIGYgYWNjdSB4cyB5c1xuXG5sZXQgcmVjIGZvcl9hbGwyIGYgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGYgeCB5ICYmIGZvcl9hbGwyIGYgeHMgeXNcblxubGV0IHJlYyBleGlzdHMyIGYgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHkgfHwgZXhpc3RzMiBmIHhzIHlzXG5cbmxldCByZWMgZXF1YWwgZXEgeHMgeXMgPVxuICBtYXRjaCB4cygpLCB5cygpIHdpdGhcbiAgfCBOaWwsIE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBlcSB4IHkgJiYgZXF1YWwgZXEgeHMgeXNcbiAgfCBOaWwsIENvbnMgKF8sIF8pXG4gIHwgQ29ucyAoXywgXyksIE5pbCAtPlxuICAgICAgZmFsc2VcblxubGV0IHJlYyBjb21wYXJlIGNtcCB4cyB5cyA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICB8IE5pbCwgTmlsIC0+XG4gICAgICAwXG4gIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgIGxldCBjID0gY21wIHggeSBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlIGNvbXBhcmUgY21wIHhzIHlzXG4gIHwgTmlsLCBDb25zIChfLCBfKSAtPlxuICAgICAgLTFcbiAgfCBDb25zIChfLCBfKSwgTmlsIC0+XG4gICAgICArMVxuXG5cblxuKCogW2luaXRfYXV4IGYgaSBqXSBpcyB0aGUgc2VxdWVuY2UgW2YgaSwgLi4uLCBmIChqLTEpXS4gKilcblxubGV0IHJlYyBpbml0X2F1eCBmIGkgaiAoKSA9XG4gIGlmIGkgPCBqIHRoZW4gYmVnaW5cbiAgICBDb25zIChmIGksIGluaXRfYXV4IGYgKGkgKyAxKSBqKVxuICBlbmRcbiAgZWxzZVxuICAgIE5pbFxuXG5sZXQgaW5pdCBuIGYgPVxuICBpZiBuIDwgMCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTZXEuaW5pdFwiXG4gIGVsc2VcbiAgICBpbml0X2F1eCBmIDAgblxuXG5sZXQgcmVjIHJlcGVhdCB4ICgpID1cbiAgQ29ucyAoeCwgcmVwZWF0IHgpXG5cbmxldCByZWMgZm9yZXZlciBmICgpID1cbiAgQ29ucyAoZigpLCBmb3JldmVyIGYpXG5cbigqIFRoaXMgcHJlbGltaW5hcnkgZGVmaW5pdGlvbiBvZiBbY3ljbGVdIHJlcXVpcmVzIHRoZSBzZXF1ZW5jZSBbeHNdXG4gICB0byBiZSBub25lbXB0eS4gQXBwbHlpbmcgaXQgdG8gYW4gZW1wdHkgc2VxdWVuY2Ugd291bGQgcHJvZHVjZSBhXG4gICBzZXF1ZW5jZSB0aGF0IGRpdmVyZ2VzIHdoZW4gaXQgaXMgZm9yY2VkLiAqKVxuXG5sZXQgcmVjIGN5Y2xlX25vbmVtcHR5IHhzICgpID1cbiAgYXBwZW5kIHhzIChjeWNsZV9ub25lbXB0eSB4cykgKClcblxuKCogW2N5Y2xlIHhzXSBjaGVja3Mgd2hldGhlciBbeHNdIGlzIGVtcHR5IGFuZCwgaWYgc28sIHJldHVybnMgYW4gZW1wdHlcbiAgIHNlcXVlbmNlLiBPdGhlcndpc2UsIFtjeWNsZSB4c10gcHJvZHVjZXMgb25lIGNvcHkgb2YgW3hzXSBmb2xsb3dlZFxuICAgd2l0aCB0aGUgaW5maW5pdGUgc2VxdWVuY2UgW2N5Y2xlX25vbmVtcHR5IHhzXS4gVGh1cywgdGhlIG5vbmVtcHRpbmVzc1xuICAgY2hlY2sgaXMgcGVyZm9ybWVkIGp1c3Qgb25jZS4gKilcblxubGV0IGN5Y2xlIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cycpIC0+XG4gICAgICBDb25zICh4LCBhcHBlbmQgeHMnIChjeWNsZV9ub25lbXB0eSB4cykpXG5cbigqIFtpdGVyYXRlMSBmIHhdIGlzIHRoZSBzZXF1ZW5jZSBbZiB4LCBmIChmIHgpLCAuLi5dLlxuICAgSXQgaXMgZXF1aXZhbGVudCB0byBbdGFpbCAoaXRlcmF0ZSBmIHgpXS5cbiAgIFtpdGVyYXRlMV0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtpdGVyYXRlXS4gKilcblxubGV0IHJlYyBpdGVyYXRlMSBmIHggKCkgPVxuICBsZXQgeSA9IGYgeCBpblxuICBDb25zICh5LCBpdGVyYXRlMSBmIHkpXG5cbigqIFtpdGVyYXRlIGYgeF0gaXMgdGhlIHNlcXVlbmNlIFt4LCBmIHgsIC4uLl0uICopXG5cbigqIFRoZSByZWFzb24gd2h5IHdlIGdpdmUgdGhpcyBzbGlnaHRseSBpbmRpcmVjdCBkZWZpbml0aW9uIG9mIFtpdGVyYXRlXSxcbiAgIGFzIG9wcG9zZWQgdG8gdGhlIG1vcmUgbmFpdmUgZGVmaW5pdGlvbiB0aGF0IG1heSBjb21lIHRvIG1pbmQsIGlzIHRoYXRcbiAgIHdlIGFyZSBjYXJlZnVsIHRvIGF2b2lkIGV2YWx1YXRpbmcgW2YgeF0gdW50aWwgdGhpcyBmdW5jdGlvbiBjYWxsIGlzXG4gICBhY3R1YWxseSBuZWNlc3NhcnkuIFRoZSBuYWl2ZSBkZWZpbml0aW9uIChub3Qgc2hvd24gaGVyZSkgY29tcHV0ZXMgdGhlXG4gICBzZWNvbmQgYXJndW1lbnQgb2YgdGhlIHNlcXVlbmNlLCBbZiB4XSwgd2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgaXNcbiAgIHJlcXVlc3RlZCBieSB0aGUgdXNlci4gKilcblxubGV0IGl0ZXJhdGUgZiB4ID1cbiAgY29ucyB4IChpdGVyYXRlMSBmIHgpXG5cblxuXG5sZXQgcmVjIG1hcGlfYXV4IGYgaSB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBDb25zIChmIGkgeCwgbWFwaV9hdXggZiAoaSsxKSB4cylcblxubGV0W0BpbmxpbmVdIG1hcGkgZiB4cyA9XG4gIG1hcGlfYXV4IGYgMCB4c1xuXG4oKiBbdGFpbF9zY2FuIGYgcyB4c10gaXMgZXF1aXZhbGVudCB0byBbdGFpbCAoc2NhbiBmIHMgeHMpXS5cbiAgIFt0YWlsX3NjYW5dIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbc2Nhbl0uICopXG5cbigqIFRoaXMgc2xpZ2h0bHkgaW5kaXJlY3QgZGVmaW5pdGlvbiBvZiBbc2Nhbl0gaXMgbWVhbnQgdG8gYXZvaWQgY29tcHV0aW5nXG4gICBlbGVtZW50cyB0b28gZWFybHk7IHNlZSB0aGUgYWJvdmUgY29tbWVudCBhYm91dCBbaXRlcmF0ZTFdIGFuZCBbaXRlcmF0ZV0uICopXG5cbmxldCByZWMgdGFpbF9zY2FuIGYgcyB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBsZXQgcyA9IGYgcyB4IGluXG4gICAgICBDb25zIChzLCB0YWlsX3NjYW4gZiBzIHhzKVxuXG5sZXQgc2NhbiBmIHMgeHMgPVxuICBjb25zIHMgKHRhaWxfc2NhbiBmIHMgeHMpXG5cbigqIFt0YWtlXSBpcyBkZWZpbmVkIGluIHN1Y2ggYSB3YXkgdGhhdCBbdGFrZSAwIHhzXSByZXR1cm5zIFtlbXB0eV1cbiAgIGltbWVkaWF0ZWx5LCB3aXRob3V0IGFsbG9jYXRpbmcgYW55IG1lbW9yeS4gKilcblxubGV0IHJlYyB0YWtlX2F1eCBuIHhzID1cbiAgaWYgbiA9IDAgdGhlblxuICAgIGVtcHR5XG4gIGVsc2VcbiAgICBmdW4gKCkgLT5cbiAgICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBOaWxcbiAgICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgICAgQ29ucyAoeCwgdGFrZV9hdXggKG4tMSkgeHMpXG5cbmxldCB0YWtlIG4geHMgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU2VxLnRha2VcIjtcbiAgdGFrZV9hdXggbiB4c1xuXG4oKiBbZm9yY2VfZHJvcCBuIHhzXSBpcyBlcXVpdmFsZW50IHRvIFtkcm9wIG4geHMgKCldLlxuICAgW2ZvcmNlX2Ryb3AgbiB4c10gcmVxdWlyZXMgW24gPiAwXS5cbiAgIFtmb3JjZV9kcm9wXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW2Ryb3BdLiAqKVxuXG5sZXQgcmVjIGZvcmNlX2Ryb3AgbiB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoXywgeHMpIC0+XG4gICAgICBsZXQgbiA9IG4gLSAxIGluXG4gICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgIHhzKClcbiAgICAgIGVsc2VcbiAgICAgICAgZm9yY2VfZHJvcCBuIHhzXG5cbigqIFtkcm9wXSBpcyBkZWZpbmVkIGluIHN1Y2ggYSB3YXkgdGhhdCBbZHJvcCAwIHhzXSByZXR1cm5zIFt4c10gaW1tZWRpYXRlbHksXG4gICB3aXRob3V0IGFsbG9jYXRpbmcgYW55IG1lbW9yeS4gKilcblxubGV0IGRyb3AgbiB4cyA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZXEuZHJvcFwiXG4gIGVsc2UgaWYgbiA9IDAgdGhlblxuICAgIHhzXG4gIGVsc2VcbiAgICBmdW4gKCkgLT5cbiAgICAgIGZvcmNlX2Ryb3AgbiB4c1xuXG5sZXQgcmVjIHRha2Vfd2hpbGUgcCB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBpZiBwIHggdGhlbiBDb25zICh4LCB0YWtlX3doaWxlIHAgeHMpIGVsc2UgTmlsXG5cbmxldCByZWMgZHJvcF93aGlsZSBwIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgYXMgbm9kZSAtPlxuICAgICAgaWYgcCB4IHRoZW4gZHJvcF93aGlsZSBwIHhzICgpIGVsc2Ugbm9kZVxuXG5sZXQgcmVjIGdyb3VwIGVxIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKGNvbnMgeCAodGFrZV93aGlsZSAoZXEgeCkgeHMpLCBncm91cCBlcSAoZHJvcF93aGlsZSAoZXEgeCkgeHMpKVxuXG5leGNlcHRpb24gRm9yY2VkX3R3aWNlXG5cbm1vZHVsZSBTdXNwZW5zaW9uID0gc3RydWN0XG5cbiAgdHlwZSAnYSBzdXNwZW5zaW9uID1cbiAgICB1bml0IC0+ICdhXG5cbiAgKCogQ29udmVyc2lvbnMuICopXG5cbiAgbGV0IHRvX2xhenkgOiAnYSBzdXNwZW5zaW9uIC0+ICdhIExhenkudCA9XG4gICAgTGF6eS5mcm9tX2Z1blxuICAgICgqIGZ1biBzIC0+IGxhenkgKHMoKSkgKilcblxuICBsZXQgZnJvbV9sYXp5IChzIDogJ2EgTGF6eS50KSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGZ1biAoKSAtPiBMYXp5LmZvcmNlIHNcblxuICAoKiBbbWVtb2l6ZV0gdHVybnMgYW4gYXJiaXRyYXJ5IHN1c3BlbnNpb24gaW50byBhIHBlcnNpc3RlbnQgc3VzcGVuc2lvbi4gKilcblxuICBsZXQgbWVtb2l6ZSAocyA6ICdhIHN1c3BlbnNpb24pIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgZnJvbV9sYXp5ICh0b19sYXp5IHMpXG5cbiAgKCogW2ZhaWx1cmVdIGlzIGEgc3VzcGVuc2lvbiB0aGF0IGZhaWxzIHdoZW4gZm9yY2VkLiAqKVxuXG4gIGxldCBmYWlsdXJlIDogXyBzdXNwZW5zaW9uID1cbiAgICBmdW4gKCkgLT5cbiAgICAgICgqIEEgc3VzcGVuc2lvbiBjcmVhdGVkIGJ5IFtvbmNlXSBoYXMgYmVlbiBmb3JjZWQgdHdpY2UuICopXG4gICAgICByYWlzZSBGb3JjZWRfdHdpY2VcblxuICAoKiBJZiBbZl0gaXMgYSBzdXNwZW5zaW9uLCB0aGVuIFtvbmNlIGZdIGlzIGEgc3VzcGVuc2lvbiB0aGF0IGNhbiBiZSBmb3JjZWRcbiAgICAgYXQgbW9zdCBvbmNlLiBJZiBpdCBpcyBmb3JjZWQgbW9yZSB0aGFuIG9uY2UsIHRoZW4gW0ZvcmNlZF90d2ljZV0gaXNcbiAgICAgcmFpc2VkLiAqKVxuXG4gIGxldCBvbmNlIChmIDogJ2Egc3VzcGVuc2lvbikgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBsZXQgYWN0aW9uID0gQXRvbWljLm1ha2UgZiBpblxuICAgIGZ1biAoKSAtPlxuICAgICAgKCogR2V0IHRoZSBmdW5jdGlvbiBjdXJyZW50bHkgc3RvcmVkIGluIFthY3Rpb25dLCBhbmQgd3JpdGUgdGhlXG4gICAgICAgICBmdW5jdGlvbiBbZmFpbHVyZV0gaW4gaXRzIHBsYWNlLCBzbyB0aGUgbmV4dCBhY2Nlc3Mgd2lsbCByZXN1bHRcbiAgICAgICAgIGluIGEgY2FsbCB0byBbZmFpbHVyZSgpXS4gKilcbiAgICAgIGxldCBmID0gQXRvbWljLmV4Y2hhbmdlIGFjdGlvbiBmYWlsdXJlIGluXG4gICAgICBmKClcblxuZW5kICgqIFN1c3BlbnNpb24gKilcblxubGV0IHJlYyBtZW1vaXplIHhzID1cbiAgU3VzcGVuc2lvbi5tZW1vaXplIChmdW4gKCkgLT5cbiAgICBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBDb25zICh4LCBtZW1vaXplIHhzKVxuICApXG5cbmxldCByZWMgb25jZSB4cyA9XG4gIFN1c3BlbnNpb24ub25jZSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgQ29ucyAoeCwgb25jZSB4cylcbiAgKVxuXG5cbmxldCByZWMgemlwIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBOaWxcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgQ29ucyAoKHgsIHkpLCB6aXAgeHMgeXMpXG5cbmxldCByZWMgbWFwMiBmIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBOaWxcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgQ29ucyAoZiB4IHksIG1hcDIgZiB4cyB5cylcblxubGV0IHJlYyBpbnRlcmxlYXZlIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB5cygpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBDb25zICh4LCBpbnRlcmxlYXZlIHlzIHhzKVxuXG4oKiBbc29ydGVkX21lcmdlMWwgY21wIHggeHMgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgKGNvbnMgeCB4cykgeXNdLlxuXG4gICBbc29ydGVkX21lcmdlMXIgY21wIHhzIHkgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgeHMgKGNvbnMgeSB5cyldLlxuXG4gICBbc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgIFtzb3J0ZWRfbWVyZ2UgY21wIChjb25zIHggeHMpIChjb25zIHkgeXMpXS5cblxuICAgVGhlc2UgdGhyZWUgZnVuY3Rpb25zIGFyZSB1c2VkIGFzIGJ1aWxkaW5nIGJsb2NrcyBpbiB0aGUgZGVmaW5pdGlvblxuICAgb2YgW3NvcnRlZF9tZXJnZV0uICopXG5cbmxldCByZWMgc29ydGVkX21lcmdlMWwgY21wIHggeHMgeXMgKCkgPVxuICBtYXRjaCB5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIENvbnMgKHgsIHhzKVxuICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXG5cbmFuZCBzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgQ29ucyAoeSwgeXMpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuYW5kIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5cyA9XG4gIGlmIGNtcCB4IHkgPD0gMCB0aGVuXG4gICAgQ29ucyAoeCwgc29ydGVkX21lcmdlMXIgY21wIHhzIHkgeXMpXG4gIGVsc2VcbiAgICBDb25zICh5LCBzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5cylcblxubGV0IHNvcnRlZF9tZXJnZSBjbXAgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpLCB5cygpIHdpdGhcbiAgICB8IE5pbCwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgTmlsLCBjXG4gICAgfCBjLCBOaWwgLT5cbiAgICAgICAgY1xuICAgIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXG5cblxubGV0IHJlYyBtYXBfZnN0IHh5cyAoKSA9XG4gIG1hdGNoIHh5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKCh4LCBfKSwgeHlzKSAtPlxuICAgICAgQ29ucyAoeCwgbWFwX2ZzdCB4eXMpXG5cbmxldCByZWMgbWFwX3NuZCB4eXMgKCkgPVxuICBtYXRjaCB4eXMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICgoXywgeSksIHh5cykgLT5cbiAgICAgIENvbnMgKHksIG1hcF9zbmQgeHlzKVxuXG5sZXQgdW56aXAgeHlzID1cbiAgbWFwX2ZzdCB4eXMsIG1hcF9zbmQgeHlzXG5cbmxldCBzcGxpdCA9XG4gIHVuemlwXG5cbigqIFtmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4c10gaXMgZXF1aXZhbGVudCB0b1xuICAgW2ZpbHRlcl9tYXAgRWl0aGVyLmZpbmRfbGVmdCAobWFwIGYgeHMpXS4gKilcblxubGV0IHJlYyBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBFaXRoZXIuTGVmdCB5IC0+XG4gICAgICAgICAgQ29ucyAoeSwgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMpXG4gICAgICB8IEVpdGhlci5SaWdodCBfIC0+XG4gICAgICAgICAgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMgKClcblxubGV0IHJlYyBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgRWl0aGVyLkxlZnQgXyAtPlxuICAgICAgICAgIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cyAoKVxuICAgICAgfCBFaXRoZXIuUmlnaHQgeiAtPlxuICAgICAgICAgIENvbnMgKHosIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cylcblxubGV0IHBhcnRpdGlvbl9tYXAgZiB4cyA9XG4gIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzLFxuICBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHNcblxubGV0IHBhcnRpdGlvbiBwIHhzID1cbiAgZmlsdGVyIHAgeHMsIGZpbHRlciAoZnVuIHggLT4gbm90IChwIHgpKSB4c1xuXG4oKiBJZiBbeHNzXSBpcyBhIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiByb3dzKSwgdGhlbiBbcGVlbCB4c3NdIGlzIGEgcGFpciBvZlxuICAgdGhlIGZpcnN0IGNvbHVtbiAoYSBzZXF1ZW5jZSBvZiBlbGVtZW50cykgYW5kIG9mIHRoZSByZW1haW5kZXIgb2YgdGhlXG4gICBtYXRyaXggKGEgc2VxdWVuY2Ugb2Ygc2hvcnRlciByb3dzKS4gVGhlc2UgdHdvIHNlcXVlbmNlcyBoYXZlIHRoZSBzYW1lXG4gICBsZW5ndGguIFRoZSByb3dzIG9mIHRoZSBtYXRyaXggW3hzc10gYXJlIG5vdCByZXF1aXJlZCB0byBoYXZlIHRoZSBzYW1lXG4gICBsZW5ndGguIEFuIGVtcHR5IHJvdyBpcyBpZ25vcmVkLiAqKVxuXG4oKiBCZWNhdXNlIFtwZWVsXSB1c2VzIFt1bnppcF0sIGl0cyBhcmd1bWVudCBtdXN0IGJlIHBlcnNpc3RlbnQuIFRoZSBzYW1lXG4gICByZW1hcmsgYXBwbGllcyB0byBbdHJhbnNwb3NlXSwgW2RpYWdvbmFsc10sIFtwcm9kdWN0XSwgZXRjLiAqKVxuXG5sZXQgcGVlbCB4c3MgPVxuICB1bnppcCAoZmlsdGVyX21hcCB1bmNvbnMgeHNzKVxuXG5sZXQgcmVjIHRyYW5zcG9zZSB4c3MgKCkgPVxuICBsZXQgaGVhZHMsIHRhaWxzID0gcGVlbCB4c3MgaW5cbiAgaWYgaXNfZW1wdHkgaGVhZHMgdGhlbiBiZWdpblxuICAgIGFzc2VydCAoaXNfZW1wdHkgdGFpbHMpO1xuICAgIE5pbFxuICBlbmRcbiAgZWxzZVxuICAgIENvbnMgKGhlYWRzLCB0cmFuc3Bvc2UgdGFpbHMpXG5cbigqIFRoZSBpbnRlcm5hbCBmdW5jdGlvbiBbZGlhZ29uYWxzXSB0YWtlcyBhbiBleHRyYSBhcmd1bWVudCwgW3JlbWFpbmRlcnNdLFxuICAgd2hpY2ggY29udGFpbnMgdGhlIHJlbWFpbmRlcnMgb2YgdGhlIHJvd3MgdGhhdCBoYXZlIGFscmVhZHkgYmVlblxuICAgZGlzY292ZXJlZC4gKilcblxubGV0IHJlYyBkaWFnb25hbHMgcmVtYWluZGVycyB4c3MgKCkgPVxuICBtYXRjaCB4c3MoKSB3aXRoXG4gIHwgQ29ucyAoeHMsIHhzcykgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHhzKCkgd2l0aFxuICAgICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgICAoKiBXZSBkaXNjb3ZlciBhIG5ldyBub25lbXB0eSByb3cgW3ggOjogeHNdLiBUaHVzLCB0aGUgbmV4dCBkaWFnb25hbFxuICAgICAgICAgICAgIGlzIFt4IDo6IGhlYWRzXTogdGhpcyBkaWFnb25hbCBiZWdpbnMgd2l0aCBbeF0gYW5kIGNvbnRpbnVlcyB3aXRoXG4gICAgICAgICAgICAgdGhlIGZpcnN0IGVsZW1lbnQgb2YgZXZlcnkgcm93IGluIFtyZW1haW5kZXJzXS4gSW4gdGhlIHJlY3Vyc2l2ZVxuICAgICAgICAgICAgIGNhbGwsIHRoZSBhcmd1bWVudCBbcmVtYWluZGVyc10gaXMgaW5zdGFudGlhdGVkIHdpdGggW3hzIDo6XG4gICAgICAgICAgICAgdGFpbHNdLCB3aGljaCBtZWFucyB0aGF0IHdlIGhhdmUgb25lIG1vcmUgcmVtYWluaW5nIHJvdywgW3hzXSxcbiAgICAgICAgICAgICBhbmQgdGhhdCB3ZSBrZWVwIHRoZSB0YWlscyBvZiB0aGUgcHJlLWV4aXN0aW5nIHJlbWFpbmluZyByb3dzLiAqKVxuICAgICAgICAgIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHJlbWFpbmRlcnMgaW5cbiAgICAgICAgICBDb25zIChjb25zIHggaGVhZHMsIGRpYWdvbmFscyAoY29ucyB4cyB0YWlscykgeHNzKVxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAoKiBXZSBkaXNjb3ZlciBhIG5ldyBlbXB0eSByb3cuIEluIHRoaXMgY2FzZSwgdGhlIG5ldyBkaWFnb25hbCBpc1xuICAgICAgICAgICAgIGp1c3QgW2hlYWRzXSwgYW5kIFtyZW1haW5kZXJzXSBpcyBpbnN0YW50aWF0ZWQgd2l0aCBqdXN0IFt0YWlsc10sXG4gICAgICAgICAgICAgYXMgd2UgZG8gbm90IGhhdmUgb25lIG1vcmUgcmVtYWluaW5nIHJvdy4gKilcbiAgICAgICAgICBsZXQgaGVhZHMsIHRhaWxzID0gcGVlbCByZW1haW5kZXJzIGluXG4gICAgICAgICAgQ29ucyAoaGVhZHMsIGRpYWdvbmFscyB0YWlscyB4c3MpXG4gICAgICBlbmRcbiAgfCBOaWwgLT5cbiAgICAgICgqIFRoZXJlIGFyZSBubyBtb3JlIHJvd3MgdG8gYmUgZGlzY292ZXJlZC4gVGhlcmUgcmVtYWlucyB0byBleGhhdXN0XG4gICAgICAgICB0aGUgcmVtYWluaW5nIHJvd3MuICopXG4gICAgICB0cmFuc3Bvc2UgcmVtYWluZGVycyAoKVxuXG4oKiBJZiBbeHNzXSBpcyBhIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiByb3dzKSwgdGhlbiBbZGlhZ29uYWxzIHhzc10gaXNcbiAgIHRoZSBzZXF1ZW5jZSBvZiBpdHMgZGlhZ29uYWxzLlxuXG4gICBUaGUgZmlyc3QgZGlhZ29uYWwgY29udGFpbnMganVzdCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGVcbiAgIGZpcnN0IHJvdy4gVGhlIHNlY29uZCBkaWFnb25hbCBjb250YWlucyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGVcbiAgIHNlY29uZCByb3cgYW5kIHRoZSBzZWNvbmQgZWxlbWVudCBvZiB0aGUgZmlyc3Qgcm93OyBhbmQgc28gb24uXG4gICBUaGlzIGtpbmQgb2YgZGlhZ29uYWwgaXMgaW4gZmFjdCBzb21ldGltZXMga25vd24gYXMgYW4gYW50aWRpYWdvbmFsLlxuXG4gICAtIEV2ZXJ5IGRpYWdvbmFsIGlzIGEgZmluaXRlIHNlcXVlbmNlLlxuICAgLSBUaGUgcm93cyBvZiB0aGUgbWF0cml4IFt4c3NdIGFyZSBub3QgcmVxdWlyZWQgdG8gaGF2ZSB0aGUgc2FtZSBsZW5ndGguXG4gICAtIFRoZSBtYXRyaXggW3hzc10gaXMgbm90IHJlcXVpcmVkIHRvIGJlIGZpbml0ZSAoaW4gZWl0aGVyIGRpcmVjdGlvbikuXG4gICAtIFRoZSBtYXRyaXggW3hzc10gbXVzdCBiZSBwZXJzaXN0ZW50LiAqKVxuXG5sZXQgZGlhZ29uYWxzIHhzcyA9XG4gIGRpYWdvbmFscyBlbXB0eSB4c3NcblxubGV0IG1hcF9wcm9kdWN0IGYgeHMgeXMgPVxuICBjb25jYXQgKGRpYWdvbmFscyAoXG4gICAgbWFwIChmdW4geCAtPlxuICAgICAgbWFwIChmdW4geSAtPlxuICAgICAgICBmIHggeVxuICAgICAgKSB5c1xuICAgICkgeHNcbiAgKSlcblxubGV0IHByb2R1Y3QgeHMgeXMgPVxuICBtYXBfcHJvZHVjdCAoZnVuIHggeSAtPiAoeCwgeSkpIHhzIHlzXG5cbmxldCBvZl9kaXNwZW5zZXIgaXQgPVxuICBsZXQgcmVjIGMgKCkgPVxuICAgIG1hdGNoIGl0KCkgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgICBOaWxcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBDb25zICh4LCBjKVxuICBpblxuICBjXG5cbmxldCB0b19kaXNwZW5zZXIgeHMgPVxuICBsZXQgcyA9IHJlZiB4cyBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCAoIXMpKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5vbmVcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBzIDo9IHhzO1xuICAgICAgICBTb21lIHhcblxuXG5cbmxldCByZWMgaW50cyBpICgpID1cbiAgQ29ucyAoaSwgaW50cyAoaSArIDEpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gPSBOb25lIHwgU29tZSBvZiAnYVxuXG5sZXQgbm9uZSA9IE5vbmVcbmxldCBzb21lIHYgPSBTb21lIHZcbmxldCB2YWx1ZSBvIH5kZWZhdWx0ID0gbWF0Y2ggbyB3aXRoIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBkZWZhdWx0XG5sZXQgZ2V0ID0gZnVuY3Rpb24gU29tZSB2IC0+IHYgfCBOb25lIC0+IGludmFsaWRfYXJnIFwib3B0aW9uIGlzIE5vbmVcIlxubGV0IGJpbmQgbyBmID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBmIHZcbmxldCBqb2luID0gZnVuY3Rpb24gU29tZSBvIC0+IG8gfCBOb25lIC0+IE5vbmVcbmxldCBtYXAgZiBvID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBTb21lIChmIHYpXG5sZXQgZm9sZCB+bm9uZSB+c29tZSA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBzb21lIHYgfCBOb25lIC0+IG5vbmVcbmxldCBpdGVyIGYgPSBmdW5jdGlvbiBTb21lIHYgLT4gZiB2IHwgTm9uZSAtPiAoKVxubGV0IGlzX25vbmUgPSBmdW5jdGlvbiBOb25lIC0+IHRydWUgfCBTb21lIF8gLT4gZmFsc2VcbmxldCBpc19zb21lID0gZnVuY3Rpb24gTm9uZSAtPiBmYWxzZSB8IFNvbWUgXyAtPiB0cnVlXG5cbmxldCBlcXVhbCBlcSBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gZXEgdjAgdjFcbnwgTm9uZSwgTm9uZSAtPiB0cnVlXG58IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgY21wIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBjbXAgdjAgdjFcbnwgTm9uZSwgTm9uZSAtPiAwXG58IE5vbmUsIFNvbWUgXyAtPiAtMVxufCBTb21lIF8sIE5vbmUgLT4gMVxuXG5sZXQgdG9fcmVzdWx0IH5ub25lID0gZnVuY3Rpb24gTm9uZSAtPiBFcnJvciBub25lIHwgU29tZSB2IC0+IE9rIHZcbmxldCB0b19saXN0ID0gZnVuY3Rpb24gTm9uZSAtPiBbXSB8IFNvbWUgdiAtPiBbdl1cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBOb25lIC0+IFNlcS5lbXB0eSB8IFNvbWUgdiAtPiBTZXEucmV0dXJuIHZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSkgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnZVxuXG5sZXQgb2sgdiA9IE9rIHZcbmxldCBlcnJvciBlID0gRXJyb3IgZVxubGV0IHZhbHVlIHIgfmRlZmF1bHQgPSBtYXRjaCByIHdpdGggT2sgdiAtPiB2IHwgRXJyb3IgXyAtPiBkZWZhdWx0XG5sZXQgZ2V0X29rID0gZnVuY3Rpb24gT2sgdiAtPiB2IHwgRXJyb3IgXyAtPiBpbnZhbGlkX2FyZyBcInJlc3VsdCBpcyBFcnJvciBfXCJcbmxldCBnZXRfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBlIC0+IGUgfCBPayBfIC0+IGludmFsaWRfYXJnIFwicmVzdWx0IGlzIE9rIF9cIlxubGV0IGJpbmQgciBmID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBqb2luID0gZnVuY3Rpb24gT2sgciAtPiByIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXAgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gT2sgKGYgdikgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IG1hcF9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBFcnJvciAoZiBlKSB8IE9rIF8gYXMgdiAtPiB2XG5sZXQgZm9sZCB+b2sgfmVycm9yID0gZnVuY3Rpb24gT2sgdiAtPiBvayB2IHwgRXJyb3IgZSAtPiBlcnJvciBlXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gT2sgdiAtPiBmIHYgfCBFcnJvciBfIC0+ICgpXG5sZXQgaXRlcl9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBmIGUgfCBPayBfIC0+ICgpXG5sZXQgaXNfb2sgPSBmdW5jdGlvbiBPayBfIC0+IHRydWUgfCBFcnJvciBfIC0+IGZhbHNlXG5sZXQgaXNfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBfIC0+IHRydWUgfCBPayBfIC0+IGZhbHNlXG5cbmxldCBlcXVhbCB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBfLCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IE9rIF8sIEVycm9yIF8gLT4gLTFcbnwgRXJyb3IgXywgT2sgXyAtPiAxXG5cbmxldCB0b19vcHRpb24gPSBmdW5jdGlvbiBPayB2IC0+IFNvbWUgdiB8IEVycm9yIF8gLT4gTm9uZVxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBPayB2IC0+IFt2XSB8IEVycm9yIF8gLT4gW11cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBPayB2IC0+IFNlcS5yZXR1cm4gdiB8IEVycm9yIF8gLT4gU2VxLmVtcHR5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGJvb2wgPSBmYWxzZSB8IHRydWVcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxubGV0IGVxdWFsIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBib29sIC0+IGJvb2wgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmV4dGVybmFsIHRvX2ludCA6IGJvb2wgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb24gZmFsc2UgLT4gMC4gfCB0cnVlIC0+IDEuXG5cbigqXG5sZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbnwgXCJmYWxzZVwiIC0+IFNvbWUgZmFsc2VcbnwgXCJ0cnVlXCIgLT4gU29tZSB0cnVlXG58IF8gLT4gTm9uZVxuKilcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uIGZhbHNlIC0+IFwiZmFsc2VcIiB8IHRydWUgLT4gXCJ0cnVlXCJcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ2hhcmFjdGVyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hyOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcblxubGV0IGNociBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiQ2hhci5jaHJcIiBlbHNlIHVuc2FmZV9jaHIgblxuXG5leHRlcm5hbCBieXRlc19jcmVhdGU6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxubGV0IGVzY2FwZWQgPSBmdW5jdGlvblxuICB8ICdcXCcnIC0+IFwiXFxcXCdcIlxuICB8ICdcXFxcJyAtPiBcIlxcXFxcXFxcXCJcbiAgfCAnXFxuJyAtPiBcIlxcXFxuXCJcbiAgfCAnXFx0JyAtPiBcIlxcXFx0XCJcbiAgfCAnXFxyJyAtPiBcIlxcXFxyXCJcbiAgfCAnXFxiJyAtPiBcIlxcXFxiXCJcbiAgfCAnICcgLi4gJ34nIGFzIGMgLT5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDEgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwIGM7XG4gICAgICB1bnNhZmVfdG9fc3RyaW5nIHNcbiAgfCBjIC0+XG4gICAgICBsZXQgbiA9IGNvZGUgYyBpblxuICAgICAgbGV0IHMgPSBieXRlc19jcmVhdGUgNCBpblxuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDAgJ1xcXFwnO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDEgKHVuc2FmZV9jaHIgKDQ4ICsgbiAvIDEwMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDIgKHVuc2FmZV9jaHIgKDQ4ICsgKG4gLyAxMCkgbW9kIDEwKSk7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMyAodW5zYWZlX2NociAoNDggKyBuIG1vZCAxMCkpO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG5cbmxldCBsb3dlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdBJyAuLiAnWicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyArIDMyKVxuICB8IGMgLT4gY1xuXG5sZXQgdXBwZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgLSAzMilcbiAgfCBjIC0+IGNcblxudHlwZSB0ID0gY2hhclxuXG5sZXQgY29tcGFyZSBjMSBjMiA9IGNvZGUgYzEgLSBjb2RlIGMyXG5sZXQgZXF1YWwgKGMxOiB0KSAoYzI6IHQpID0gY29tcGFyZSBjMSBjMiA9IDBcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgRGFuaWVsIEMuIEJ1ZW56bGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuXG5sZXQgZXJyX25vX3ByZWQgPSBcIlUrMDAwMCBoYXMgbm8gcHJlZGVjZXNzb3JcIlxubGV0IGVycl9ub19zdWNjID0gXCJVKzEwRkZGRiBoYXMgbm8gc3VjY2Vzc29yXCJcbmxldCBlcnJfbm90X3N2IGkgPSBmb3JtYXRfaW50IFwiJVhcIiBpIF4gXCIgaXMgbm90IGFuIFVuaWNvZGUgc2NhbGFyIHZhbHVlXCJcbmxldCBlcnJfbm90X2xhdGluMSB1ID0gXCJVK1wiIF4gZm9ybWF0X2ludCBcIiUwNFhcIiB1IF4gXCIgaXMgbm90IGEgbGF0aW4xIGNoYXJhY3RlclwiXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgbWluID0gMHgwMDAwXG5sZXQgbWF4ID0gMHgxMEZGRkZcbmxldCBsb19ib3VuZCA9IDB4RDdGRlxubGV0IGhpX2JvdW5kID0gMHhFMDAwXG5cbmxldCBib20gPSAweEZFRkZcbmxldCByZXAgPSAweEZGRkRcblxubGV0IHN1Y2MgdSA9XG4gIGlmIHUgPSBsb19ib3VuZCB0aGVuIGhpX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1heCB0aGVuIGludmFsaWRfYXJnIGVycl9ub19zdWNjIGVsc2VcbiAgdSArIDFcblxubGV0IHByZWQgdSA9XG4gIGlmIHUgPSBoaV9ib3VuZCB0aGVuIGxvX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1pbiB0aGVuIGludmFsaWRfYXJnIGVycl9ub19wcmVkIGVsc2VcbiAgdSAtIDFcblxubGV0IGlzX3ZhbGlkIGkgPSAobWluIDw9IGkgJiYgaSA8PSBsb19ib3VuZCkgfHwgKGhpX2JvdW5kIDw9IGkgJiYgaSA8PSBtYXgpXG5sZXQgb2ZfaW50IGkgPSBpZiBpc192YWxpZCBpIHRoZW4gaSBlbHNlIGludmFsaWRfYXJnIChlcnJfbm90X3N2IGkpXG5leHRlcm5hbCB1bnNhZmVfb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19pbnQgOiB0IC0+IGludCA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX2NoYXIgdSA9IHUgPCAyNTZcbmxldCBvZl9jaGFyIGMgPSBDaGFyLmNvZGUgY1xubGV0IHRvX2NoYXIgdSA9XG4gIGlmIHUgPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyAoZXJyX25vdF9sYXRpbjEgdSkgZWxzZVxuICBDaGFyLnVuc2FmZV9jaHIgdVxuXG5sZXQgdW5zYWZlX3RvX2NoYXIgPSBDaGFyLnVuc2FmZV9jaHJcblxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IGhhc2ggPSB0b19pbnRcblxuKCogVVRGIGNvZGVjcyB0b29scyAqKVxuXG50eXBlIHV0Zl9kZWNvZGUgPSBpbnRcbigqIFRoaXMgaXMgYW4gaW50IFsweERVVVVVVVVdIGRlY29tcG9zZWQgYXMgZm9sbG93czpcbiAgIC0gW0RdIGlzIGZvdXIgYml0cyBmb3IgZGVjb2RlIGluZm9ybWF0aW9uLCB0aGUgaGlnaGVzdCBiaXQgaXMgc2V0IGlmIHRoZVxuICAgICBkZWNvZGUgaXMgdmFsaWQuIFRoZSB0aHJlZSBsb3dlciBiaXRzIGluZGljYXRlIHRoZSBudW1iZXIgb2YgZWxlbWVudHNcbiAgICAgZnJvbSB0aGUgc291cmNlIHRoYXQgd2VyZSBjb25zdW1lZCBieSB0aGUgZGVjb2RlLlxuICAgLSBbVVVVVVVVXSBpcyB0aGUgZGVjb2RlZCBVbmljb2RlIGNoYXJhY3RlciBvciB0aGUgVW5pY29kZSByZXBsYWNlbWVudFxuICAgICBjaGFyYWN0ZXIgVStGRkZEIGlmIGZvciBpbnZhbGlkIGRlY29kZXMuICopXG5cbmxldCB2YWxpZF9iaXQgPSAyN1xubGV0IGRlY29kZV9iaXRzID0gMjRcblxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfaXNfdmFsaWQgZCA9IChkIGxzciB2YWxpZF9iaXQpID0gMVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfbGVuZ3RoIGQgPSAoZCBsc3IgZGVjb2RlX2JpdHMpIGxhbmQgMGIxMTFcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX3VjaGFyIGQgPSB1bnNhZmVfb2ZfaW50IChkIGxhbmQgMHhGRkZGRkYpXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZSBuIHUgPSAoKDggbG9yIG4pIGxzbCBkZWNvZGVfYml0cykgbG9yICh0b19pbnQgdSlcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2ludmFsaWQgbiA9IChuIGxzbCBkZWNvZGVfYml0cykgbG9yIHJlcFxuXG5sZXQgdXRmXzhfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweDAwN0YgLT4gMVxufCB1IHdoZW4gdSA8PSAweDA3RkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gM1xufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCB1dGZfMTZfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBsaXN0cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGxpc3QgPSBbXSB8ICg6Oikgb2YgJ2EgKiAnYSBsaXN0XG5cbigqIExpc3Qgb3BlcmF0aW9ucyAqKVxuXG5sZXQgcmVjIGxlbmd0aF9hdXggbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBsZW5cbiAgfCBfOjpsIC0+IGxlbmd0aF9hdXggKGxlbiArIDEpIGxcblxubGV0IGxlbmd0aCBsID0gbGVuZ3RoX2F1eCAwIGxcblxubGV0IGNvbnMgYSBsID0gYTo6bFxuXG5sZXQgaGQgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwiaGRcIlxuICB8IGE6Ol8gLT4gYVxuXG5sZXQgdGwgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwidGxcIlxuICB8IF86OmwgLT4gbFxuXG5sZXQgbnRoIGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBmYWlsd2l0aCBcIm50aFwiXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgbnRoX29wdCBsIG4gPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5udGhcIiBlbHNlXG4gIGxldCByZWMgbnRoX2F1eCBsIG4gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgYTo6bCAtPiBpZiBuID0gMCB0aGVuIFNvbWUgYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgYXBwZW5kID0gKEApXG5cbmxldCByZWMgcmV2X2FwcGVuZCBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgICBbXSAtPiBsMlxuICB8IGEgOjogbCAtPiByZXZfYXBwZW5kIGwgKGEgOjogbDIpXG5cbmxldCByZXYgbCA9IHJldl9hcHBlbmQgbCBbXVxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBpbml0IGkgbGFzdCBmID1cbiAgaWYgaSA+IGxhc3QgdGhlbiBbXVxuICBlbHNlIGlmIGkgPSBsYXN0IHRoZW4gW2YgaV1cbiAgZWxzZVxuICAgIGxldCByMSA9IGYgaSBpblxuICAgIGxldCByMiA9IGYgKGkrMSkgaW5cbiAgICByMSA6OiByMiA6OiBpbml0IChpKzIpIGxhc3QgZlxuXG5sZXQgaW5pdCBsZW4gZiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QuaW5pdFwiIGVsc2VcbiAgaW5pdCAwIChsZW4gLSAxKSBmXG5cbmxldCByZWMgZmxhdHRlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBsOjpyIC0+IGwgQCBmbGF0dGVuIHJcblxubGV0IGNvbmNhdCA9IGZsYXR0ZW5cblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgW2ExXSAtPlxuICAgICAgbGV0IHIxID0gZiBhMSBpblxuICAgICAgW3IxXVxuICB8IGExOjphMjo6bCAtPlxuICAgICAgbGV0IHIxID0gZiBhMSBpblxuICAgICAgbGV0IHIyID0gZiBhMiBpblxuICAgICAgcjE6OnIyOjptYXAgZiBsXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIG1hcGkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IFthMV0gLT5cbiAgICAgIGxldCByMSA9IGYgaSBhMSBpblxuICAgICAgW3IxXVxuICB8IGExOjphMjo6bCAtPlxuICAgICAgbGV0IHIxID0gZiBpIGExIGluXG4gICAgICBsZXQgcjIgPSBmIChpKzEpIGEyIGluXG4gICAgICByMTo6cjI6Om1hcGkgKGkrMikgZiBsXG5cbmxldCBtYXBpIGYgbCA9IG1hcGkgMCBmIGxcblxubGV0IHJldl9tYXAgZiBsID1cbiAgbGV0IHJlYyBybWFwX2YgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCBhOjpsIC0+IHJtYXBfZiAoZiBhIDo6IGFjY3UpIGxcbiAgaW5cbiAgcm1hcF9mIFtdIGxcblxuXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgYTsgaXRlciBmIGxcblxubGV0IHJlYyBpdGVyaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgYTo6bCAtPiBmIGkgYTsgaXRlcmkgKGkgKyAxKSBmIGxcblxubGV0IGl0ZXJpIGYgbCA9IGl0ZXJpIDAgZiBsXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjdSBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZm9sZF9sZWZ0IGYgKGYgYWNjdSBhKSBsXG5cbmxldCByZWMgZm9sZF9yaWdodCBmIGwgYWNjdSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+IGFjY3VcbiAgfCBhOjpsIC0+IGYgYSAoZm9sZF9yaWdodCBmIGwgYWNjdSlcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgbWFwMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKFthMV0sIFtiMV0pIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGIxIGluXG4gICAgICBbcjFdXG4gIHwgKGExOjphMjo6bDEsIGIxOjpiMjo6bDIpIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGIxIGluXG4gICAgICBsZXQgcjIgPSBmIGEyIGIyIGluXG4gICAgICByMTo6cjI6Om1hcDIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QubWFwMlwiXG5cbmxldCByZXZfbWFwMiBmIGwxIGwyID1cbiAgbGV0IHJlYyBybWFwMl9mIGFjY3UgbDEgbDIgPVxuICAgIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICB8IChbXSwgW10pIC0+IGFjY3VcbiAgICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcm1hcDJfZiAoZiBhMSBhMiA6OiBhY2N1KSBsMSBsMlxuICAgIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZXZfbWFwMlwiXG4gIGluXG4gIHJtYXAyX2YgW10gbDEgbDJcblxuXG5sZXQgcmVjIGl0ZXIyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gKClcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTI7IGl0ZXIyIGYgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0Lml0ZXIyXCJcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgYWNjdSBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmb2xkX2xlZnQyIGYgKGYgYWNjdSBhMSBhMikgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfbGVmdDJcIlxuXG5sZXQgcmVjIGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmIGExIGEyIChmb2xkX3JpZ2h0MiBmIGwxIGwyIGFjY3UpXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX3JpZ2h0MlwiXG5cbmxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiB0cnVlXG4gIHwgYTo6bCAtPiBwIGEgJiYgZm9yX2FsbCBwIGxcblxubGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IHAgYSB8fCBleGlzdHMgcCBsXG5cbmxldCByZWMgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiB0cnVlXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBwIGExIGEyICYmIGZvcl9hbGwyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvcl9hbGwyXCJcblxubGV0IHJlYyBleGlzdHMyIHAgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gZmFsc2VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgfHwgZXhpc3RzMiBwIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5leGlzdHMyXCJcblxubGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW0geCBsXG5cbmxldCByZWMgbWVtcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gYSA9PSB4IHx8IG1lbXEgeCBsXG5cbmxldCByZWMgYXNzb2MgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gYiBlbHNlIGFzc29jIHggbFxuXG5sZXQgcmVjIGFzc29jX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gU29tZSBiIGVsc2UgYXNzb2Nfb3B0IHggbFxuXG5sZXQgcmVjIGFzc3EgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gYiBlbHNlIGFzc3EgeCBsXG5cbmxldCByZWMgYXNzcV9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICB8IChhLGIpOjpsIC0+IGlmIGEgPT0geCB0aGVuIFNvbWUgYiBlbHNlIGFzc3Ffb3B0IHggbFxuXG5sZXQgcmVjIG1lbV9hc3NvYyB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW1fYXNzb2MgeCBsXG5cbmxldCByZWMgbWVtX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2VcbiAgfCAoYSwgXykgOjogbCAtPiBhID09IHggfHwgbWVtX2Fzc3EgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPlxuICAgICAgaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gbCBlbHNlIHBhaXIgOjogcmVtb3ZlX2Fzc29jIHggbFxuXG5sZXQgcmVjIHJlbW92ZV9hc3NxIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPiBpZiBhID09IHggdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzcSB4IGxcblxubGV0IHJlYyBmaW5kIHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiB4IGVsc2UgZmluZCBwIGxcblxubGV0IHJlYyBmaW5kX29wdCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIFNvbWUgeCBlbHNlIGZpbmRfb3B0IHAgbFxuXG5sZXQgZmluZF9pbmRleCBwID1cbiAgbGV0IHJlYyBhdXggaSA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICAgIHwgYTo6bCAtPiBpZiBwIGEgdGhlbiBTb21lIGkgZWxzZSBhdXggKGkrMSkgbCBpblxuICBhdXggMFxuXG5sZXQgcmVjIGZpbmRfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwIGYgbFxuICAgICBlbmRcblxubGV0IGZpbmRfbWFwaSBmID1cbiAgbGV0IHJlYyBhdXggaSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBmIGkgeCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPiBhdXggKGkrMSkgbFxuICAgICBlbmQgaW5cbiAgYXV4IDBcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmluZF9hbGwgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4geCA6OiBmaW5kX2FsbCBwIGwgZWxzZSBmaW5kX2FsbCBwIGxcblxubGV0IGZpbHRlciA9IGZpbmRfYWxsXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIGZpbHRlcmkgcCBpID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHg6OmwgLT5cbiAgICAgIGxldCBpJyA9IGkgKyAxIGluXG4gICAgICBpZiBwIGkgeCB0aGVuIHggOjogZmlsdGVyaSBwIGknIGwgZWxzZSBmaWx0ZXJpIHAgaScgbFxuXG5sZXQgZmlsdGVyaSBwIGwgPSBmaWx0ZXJpIHAgMCBsXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB4IDo6IGwgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIGxcbiAgICAgIHwgU29tZSB2IC0+IHYgOjogZmlsdGVyX21hcCBmIGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgY29uY2F0X21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHg6OnhzIC0+IHByZXBlbmRfY29uY2F0X21hcCAoZiB4KSBmIHhzXG5hbmRbQHRhaWxfbW9kX2NvbnNdIHByZXBlbmRfY29uY2F0X21hcCB5cyBmIHhzID1cbiAgbWF0Y2ggeXMgd2l0aFxuICB8IFtdIC0+IGNvbmNhdF9tYXAgZiB4c1xuICB8IHkgOjogeXMgLT4geSA6OiBwcmVwZW5kX2NvbmNhdF9tYXAgeXMgZiB4c1xuXG5sZXQgZm9sZF9sZWZ0X21hcCBmIGFjY3UgbCA9XG4gIGxldCByZWMgYXV4IGFjY3UgbF9hY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3UsIHJldiBsX2FjY3VcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBsZXQgYWNjdSwgeCA9IGYgYWNjdSB4IGluXG4gICAgICAgIGF1eCBhY2N1ICh4IDo6IGxfYWNjdSkgbCBpblxuICBhdXggYWNjdSBbXSBsXG5cbmxldCBwYXJ0aXRpb24gcCBsID1cbiAgbGV0IHJlYyBwYXJ0IHllcyBubyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiB5ZXMsIHJldiBubylcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gcGFydCAoeCA6OiB5ZXMpIG5vIGwgZWxzZSBwYXJ0IHllcyAoeCA6OiBubykgbCBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHBhcnRpdGlvbl9tYXAgcCBsID1cbiAgbGV0IHJlYyBwYXJ0IGxlZnQgcmlnaHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgbGVmdCwgcmV2IHJpZ2h0KVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBwIHggd2l0aFxuICAgICAgIHwgRWl0aGVyLkxlZnQgdiAtPiBwYXJ0ICh2IDo6IGxlZnQpIHJpZ2h0IGxcbiAgICAgICB8IEVpdGhlci5SaWdodCB2IC0+IHBhcnQgbGVmdCAodiA6OiByaWdodCkgbFxuICAgICBlbmRcbiAgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCByZWMgc3BsaXQgPSBmdW5jdGlvblxuICAgIFtdIC0+IChbXSwgW10pXG4gIHwgKHgseSk6OmwgLT5cbiAgICAgIGxldCAocngsIHJ5KSA9IHNwbGl0IGwgaW4gKHg6OnJ4LCB5OjpyeSlcblxubGV0IHJlYyBjb21iaW5lIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiAoYTEsIGEyKSA6OiBjb21iaW5lIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5jb21iaW5lXCJcblxuKCoqIHNvcnRpbmcgKilcblxubGV0IHJlYyBtZXJnZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBsMiAtPiBsMlxuICB8IGwxLCBbXSAtPiBsMVxuICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPlxuICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgIHRoZW4gaDEgOjogbWVyZ2UgY21wIHQxIGwyXG4gICAgICBlbHNlIGgyIDo6IG1lcmdlIGNtcCBsMSB0MlxuXG5cbmxldCBzdGFibGVfc29ydCBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA8PSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA+IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCBzb3J0ID0gc3RhYmxlX3NvcnRcbmxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4oKiBOb3RlOiBvbiBhIHZlcnkgbG9uZyBsaXN0IChsZW5ndGggb3ZlciBhYm91dCAxMDAwMDApLCBpdCB1c2VkIHRvIGJlXG4gICBmYXN0ZXIgdG8gY29udmVydCB0aGUgbGlzdCB0byBhbiBhcnJheSwgc29ydCB0aGUgYXJyYXksIGFuZCBjb252ZXJ0XG4gICBiYWNrLCB0cnVuY2F0aW5nIHRoZSBhcnJheSBvYmplY3QgYWZ0ZXIgcHJlcGVuZGluZyBlYWNoIHRob3VzYW5kXG4gICBlbnRyaWVzIHRvIHRoZSByZXN1bHRpbmcgbGlzdC4gSW1wb3NzaWJsZSBub3cgdGhhdCBPYmoudHJ1bmNhdGUgaGFzXG4gICBiZWVuIHJlbW92ZWQuICopXG5cbigqKiBzb3J0aW5nICsgcmVtb3ZpbmcgZHVwbGljYXRlcyAqKVxuXG5sZXQgc29ydF91bmlxIGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlIHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZV9yZXYgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RocyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCBfIDo6IGwxLCBfIDo6IGwyIC0+IGNvbXBhcmVfbGVuZ3RocyBsMSBsMlxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCBuID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBpZiBuID0gMCB0aGVuIDAgZWxzZVxuICAgICAgaWYgbiA+IDAgdGhlbiAtMSBlbHNlIDFcbiAgfCBfIDo6IGwgLT5cbiAgICBpZiBuIDw9IDAgdGhlbiAxIGVsc2VcbiAgICAgIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCAobi0xKVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBfIDo6IF8gLT4gZmFsc2VcblxuKCoqIHsxIENvbXBhcmlzb259ICopXG5cbigqIE5vdGU6IHdlIGFyZSAqbm90KiBzaG9ydGN1dHRpbmcgdGhlIGxpc3QgYnkgdXNpbmdcbiAgIFtMaXN0LmNvbXBhcmVfbGVuZ3Roc10gZmlyc3Q7IHRoaXMgbWF5IGJlIHNsb3dlciBvbiBsb25nIGxpc3RzXG4gICBpbW1lZGlhdGVseSBzdGFydCB3aXRoIGRpc3RpbmN0IGVsZW1lbnRzLiBJdCBpcyBhbHNvIGluY29ycmVjdCBmb3JcbiAgIFtjb21wYXJlXSBiZWxvdywgYW5kIGl0IGlzIGJldHRlciAocHJpbmNpcGxlIG9mIGxlYXN0IHN1cnByaXNlKSB0b1xuICAgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGZvciBib3RoIGZ1bmN0aW9ucy4gKilcbmxldCByZWMgZXF1YWwgZXEgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgW10sIF86Ol8gfCBfOjpfLCBbXSAtPiBmYWxzZVxuICB8IGExOjpsMSwgYTI6OmwyIC0+IGVxIGExIGEyICYmIGVxdWFsIGVxIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF86Ol8gLT4gLTFcbiAgfCBfOjpfLCBbXSAtPiAxXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT5cbiAgICBsZXQgYyA9IGNtcCBhMSBhMiBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGNcbiAgICBlbHNlIGNvbXBhcmUgY21wIGwxIGwyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgbCA9XG4gIGxldCByZWMgYXV4IGwgKCkgPSBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFNlcS5OaWxcbiAgICB8IHggOjogdGFpbCAtPiBTZXEuQ29ucyAoeCwgYXV4IHRhaWwpXG4gIGluXG4gIGF1eCBsXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIG9mX3NlcSBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gW11cbiAgfCBTZXEuQ29ucyAoeDEsIHNlcSkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gW3gxXVxuICAgICAgfCBTZXEuQ29ucyAoeDIsIHNlcSkgLT4geDEgOjogeDIgOjogb2Zfc2VxIHNlcVxuICAgICAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgemVybyA9IDBcbmxldCBvbmUgPSAxXG5sZXQgbWludXNfb25lID0gLTFcbmV4dGVybmFsIG5lZyA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgYWRkIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgc3ViIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgbXVsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgZGl2IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgcmVtIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuZXh0ZXJuYWwgbG9nYW5kIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsIGxvZ3hvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcbmxldCBsb2dub3QgeCA9IGxvZ3hvciB4ICgtMSlcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuXG4oKlxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nIHMgPSB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG4qKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5sZXQgdG9fc3RyaW5nIHggPSBmb3JtYXRfaW50IFwiJWRcIiB4XG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIHN0cmluZy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2ZpbGxfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB1bnNhZmVfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGJ5dGVzID0gXCIlYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmxldCBtYWtlIG4gYyA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgdW5zYWZlX2ZpbGwgcyAwIG4gYztcbiAgc1xuXG5sZXQgaW5pdCBuIGYgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgcyBpIChmIGkpXG4gIGRvbmU7XG4gIHNcblxubGV0IGVtcHR5ID0gY3JlYXRlIDBcblxubGV0IGNvcHkgcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXQgcyAwIHIgMCBsZW47XG4gIHJcblxubGV0IHRvX3N0cmluZyBiID0gdW5zYWZlX3RvX3N0cmluZyAoY29weSBiKVxubGV0IG9mX3N0cmluZyBzID0gY29weSAodW5zYWZlX29mX3N0cmluZyBzKVxuXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLnN1YiAvIEJ5dGVzLnN1YlwiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBzIG9mcyByIDAgbGVuO1xuICAgIHJcbiAgZW5kXG5cbmxldCBzdWJfc3RyaW5nIGIgb2ZzIGxlbiA9IHVuc2FmZV90b19zdHJpbmcgKHN1YiBiIG9mcyBsZW4pXG5cbigqIGFkZGl0aW9uIHdpdGggYW4gb3ZlcmZsb3cgY2hlY2sgKilcbmxldCAoKyspIGEgYiA9XG4gIGxldCBjID0gYSArIGIgaW5cbiAgbWF0Y2ggYSA8IDAsIGIgPCAwLCBjIDwgMCB3aXRoXG4gIHwgdHJ1ZSAsIHRydWUgLCBmYWxzZVxuICB8IGZhbHNlLCBmYWxzZSwgdHJ1ZSAgLT4gaW52YWxpZF9hcmcgXCJCeXRlcy5leHRlbmRcIiAoKiBvdmVyZmxvdyAqKVxuICB8IF8gLT4gY1xuXG5sZXQgZXh0ZW5kIHMgbGVmdCByaWdodCA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyArKyBsZWZ0ICsrIHJpZ2h0IGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICBsZXQgKHNyY29mZiwgZHN0b2ZmKSA9IGlmIGxlZnQgPCAwIHRoZW4gLWxlZnQsIDAgZWxzZSAwLCBsZWZ0IGluXG4gIGxldCBjcHlsZW4gPSBJbnQubWluIChsZW5ndGggcyAtIHNyY29mZikgKGxlbiAtIGRzdG9mZikgaW5cbiAgaWYgY3B5bGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IHMgc3Jjb2ZmIHIgZHN0b2ZmIGNweWxlbjtcbiAgclxuXG5sZXQgZmlsbCBzIG9mcyBsZW4gYyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmZpbGwgLyBCeXRlcy5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBzIG9mcyBsZW4gY1xuXG5sZXQgYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnl0ZXMuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG5sZXQgYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IHN0cmluZ19sZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuYmxpdCAvIEJ5dGVzLmJsaXRfc3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiQnl0ZXMuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBlbXB0eVxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChjcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCBzMSBzMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBzMSBpblxuICBsZXQgbDIgPSBsZW5ndGggczIgaW5cbiAgbGV0IHIgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gIHVuc2FmZV9ibGl0IHMxIDAgciAwIGwxO1xuICB1bnNhZmVfYmxpdCBzMiAwIHIgbDEgbDI7XG4gIHJcblxuXG5leHRlcm5hbCBjaGFyX2NvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgY2hhcl9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWkpIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGxldCBqID0gcmVmIChsZW4gLSAxKSBpblxuICB3aGlsZSAhaiA+PSAhaSAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFqKSBkb1xuICAgIGRlY3IgalxuICBkb25lO1xuICBpZiAhaiA+PSAhaSB0aGVuXG4gICAgc3ViIHMgIWkgKCFqIC0gIWkgKyAxKVxuICBlbHNlXG4gICAgZW1wdHlcblxubGV0IHVuc2FmZV9lc2NhcGUgcyA9XG4gICgqIFdlIHBlcmZvcm0gdHdvIHBhc3NlcyBvbiB0aGUgaW5wdXQgc2VxdWVuY2UsIG9uZSB0byBjb21wdXRlIHRoZVxuICAgICByZXN1bHQgc2l6ZSBhbmQgb25lIHRvIHdyaXRlIHRoZSByZXN1bHQuXG5cbiAgICAgIzExNTA4LCAjMTE1MDk6IFRoaXMgbG9naWMgd291bGQgYmUgaW5jb3JyZWN0IGluIHByZXNlbmNlIG9mXG4gICAgIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uIHRvIHRoZSBpbnB1dCwgbWFraW5nIHRoZSB1c2Ugb2ZcbiAgICAgW3Vuc2FmZV9zZXRdIGJlbG93IG1lbW9yeS11bnNhZmUuXG5cbiAgICAgUHJlY29uZGl0aW9uOiBUaGlzIGZ1bmN0aW9uIG1heSBiZSBzYWZlbHkgY2FsbGVkIG9uOlxuICAgICAtIGFuIGltbXV0YWJsZSBieXRlIHNlcXVlbmNlXG4gICAgIC0gYSB1bmlxdWVseS1vd25lZCBieXRlIHNlcXVlbmNlICh0aGUgZnVuY3Rpb24gdGFrZXMgb3duZXJzaGlwKVxuXG4gICAgIEluIGVpdGhlciBjYXNlIHdlIHJldHVybiBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UuXG4gICopXG4gIGxldCBuID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgIG4gOj0gIW4gK1xuICAgICAgKG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXG4nIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXGInIC0+IDJcbiAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgIHwgXyAtPiA0KVxuICBkb25lO1xuICBpZiAhbiA9IGxlbmd0aCBzIHRoZW4gc1xuICBlbHNlIGJlZ2luXG4gICAgbGV0IHMnID0gY3JlYXRlICFuIGluXG4gICAgbiA6PSAwO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgIGJlZ2luIG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgKCdcXFwiJyB8ICdcXFxcJykgYXMgYyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ24nXG4gICAgICB8ICdcXHQnIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAndCdcbiAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ2InXG4gICAgICB8ICgnICcgLi4gJ34nKSBhcyBjIC0+IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCBjIC0+XG4gICAgICAgICAgbGV0IGEgPSBjaGFyX2NvZGUgYyBpblxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIC8gMTAwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIChhIC8gMTApIG1vZCAxMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIG1vZCAxMCkpO1xuICAgICAgZW5kO1xuICAgICAgaW5jciBuXG4gICAgZG9uZTtcbiAgICBzJ1xuICBlbmRcblxubGV0IGVzY2FwZWQgYiA9XG4gIGxldCBiID0gY29weSBiIGluXG4gICgqIFdlIGNvcHkgb3VyIGlucHV0IHRvIG9idGFpbiBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UgW2JdXG4gICAgIHRvIHNhdGlzZnkgW3Vuc2FmZV9lc2NhcGVdJ3MgcHJlY29uZGl0aW9uICopXG4gIHVuc2FmZV9lc2NhcGUgYlxuXG5sZXQgbWFwIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcGkgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhclxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG5sZXQgYXBwbHkxIGYgcyA9XG4gIGlmIGxlbmd0aCBzID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY29weSBzIGluXG4gICAgdW5zYWZlX3NldCByIDAgKGYodW5zYWZlX2dldCBzIDApKTtcbiAgICByXG4gIGVuZFxuXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbnR5cGUgdCA9IGJ5dGVzXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfYnl0ZXNfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBsZXQgYnVmID0gcmVmIChtYWtlIDI1NiAnXFwwMDAnKSBpblxuICBsZXQgcmVzaXplICgpID1cbiAgICAoKiByZXNpemUgKilcbiAgICBsZXQgbmV3X2xlbiA9IEludC5taW4gKDIgKiBsZW5ndGggIWJ1ZikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgaWYgbGVuZ3RoICFidWYgPSBuZXdfbGVuIHRoZW4gZmFpbHdpdGggXCJCeXRlcy5vZl9zZXE6IGNhbm5vdCBncm93IGJ5dGVzXCI7XG4gICAgbGV0IG5ld19idWYgPSBtYWtlIG5ld19sZW4gJ1xcMDAwJyBpblxuICAgIGJsaXQgIWJ1ZiAwIG5ld19idWYgMCAhbjtcbiAgICBidWYgOj0gbmV3X2J1ZlxuICBpblxuICBTZXEuaXRlclxuICAgIChmdW4gYyAtPlxuICAgICAgIGlmICFuID0gbGVuZ3RoICFidWYgdGhlbiByZXNpemUoKTtcbiAgICAgICBzZXQgIWJ1ZiAhbiBjO1xuICAgICAgIGluY3IgbilcbiAgICBpO1xuICBzdWIgIWJ1ZiAwICFuXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqIFRoZSBnZXRfIGZ1bmN0aW9ucyBhcmUgYWxsIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG5leHRlcm5hbCBnZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9ieXRlc19nZXQ2NFwiXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHN3YXAxNiAodW5zYWZlX2dldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIHVuc2FmZV9nZXRfdWludDE2X25lIGIgaVxuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfYmUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGlcbiAgZWxzZSBzd2FwMTYgKHVuc2FmZV9nZXRfdWludDE2X25lIGIgaSlcblxubGV0IGdldF9pbnQ4IGIgaSA9XG4gICgoZ2V0X3VpbnQ4IGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSA4KSkgYXNyIChTeXMuaW50X3NpemUgLSA4KVxuXG5sZXQgZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF91aW50MTZfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X2ludDE2X25lIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9uZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2xlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9sZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2JlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9iZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDMyX2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQzMl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2UgdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIHhcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2JlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgeCBlbHNlXG4gIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSAoc3dhcDE2IHgpXG5cbmxldCBzZXRfaW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDE2X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfdWludDggPSBzZXRfaW50OFxubGV0IHNldF91aW50MTZfbmUgPSBzZXRfaW50MTZfbmVcbmxldCBzZXRfdWludDE2X2JlID0gc2V0X2ludDE2X2JlXG5sZXQgc2V0X3VpbnQxNl9sZSA9IHNldF9pbnQxNl9sZVxuXG4oKiBVVEYgY29kZWNzIGFuZCB2YWxpZGF0aW9ucyAqKVxuXG5sZXQgZGVjX2ludmFsaWQgPSBVY2hhci51dGZfZGVjb2RlX2ludmFsaWRcbmxldFtAaW5saW5lXSBkZWNfcmV0IG4gdSA9IFVjaGFyLnV0Zl9kZWNvZGUgbiAoVWNoYXIudW5zYWZlX29mX2ludCB1KVxuXG4oKiBJbiBjYXNlIG9mIGRlY29kaW5nIGVycm9yLCBpZiB3ZSBlcnJvciBvbiB0aGUgZmlyc3QgYnl0ZSwgd2VcbiAgIGNvbnN1bWUgdGhlIGJ5dGUsIG90aGVyd2lzZSB3ZSBjb25zdW1lIHRoZSBbbl0gYnl0ZXMgcHJlY2VkaW5nXG4gICB0aGUgZXJyb3JpbmcgYnl0ZS5cblxuICAgVGhpcyBtZWFucyB0aGF0IGlmIGEgY2xpZW50IHVzZXMgZGVjb2RlcyB3aXRob3V0IGNhcmluZyBhYm91dFxuICAgdmFsaWRpdHkgaXQgbmF0dXJhbGx5IHJlcGxhY2UgYm9ndXMgZGF0YSB3aXRoIFVjaGFyLnJlcCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBXSEFUV0cgRW5jb2Rpbmcgc3RhbmRhcmQuIE90aGVyIHNjaGVtZXMgYXJlIHBvc3NpYmxlIGJ5XG4gICBjb25zdWx0aW5nIHRoZSBudW1iZXIgb2YgdXNlZCBieXRlcyBvbiBpbnZhbGlkIGRlY29kZXMuIEZvciBtb3JlXG4gICBkZXRhaWxzIHNlZSBodHRwczovL2hzaXZvbmVuLmZpL2Jyb2tlbi11dGYtOC9cblxuICAgRm9yIHRoaXMgcmVhc29uIGluIFtnZXRfdXRmXzhfdWNoYXJdIHdlIGdyYWR1YWxseSBjaGVjayB0aGUgbmV4dFxuICAgYnl0ZSBpcyBhdmFpbGFibGUgcmF0aGVyIHRoYW4gZG9pbmcgaXQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlXG4gICBmaXJzdCBieXRlLiBDb250cmFzdCB3aXRoIFtpc192YWxpZF91dGZfOF0uICopXG5cbigqIFVURi04ICopXG5cbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3hCRiBiID0gYiBsc3IgNiA8PiAwYjEwXG5sZXRbQGlubGluZV0gbm90X2luX3hBMF90b194QkYgYiA9IGIgbHNyIDUgPD4gMGIxMDFcbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3g5RiBiID0gYiBsc3IgNSA8PiAwYjEwMFxubGV0W0BpbmxpbmVdIG5vdF9pbl94OTBfdG9feEJGIGIgPSBiIDwgMHg5MCB8fCAweEJGIDwgYlxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feDhGIGIgPSBiIGxzciA0IDw+IDB4OFxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfMiBiMCBiMSA9XG4gICgoYjAgbGFuZCAweDFGKSBsc2wgNikgbG9yXG4gICgoYjEgbGFuZCAweDNGKSlcblxubGV0W0BpbmxpbmVdIHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIgPVxuICAoKGIwIGxhbmQgMHgwRikgbHNsIDEyKSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpIGxzbCA2KSBsb3JcbiAgKChiMiBsYW5kIDB4M0YpKVxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMyA9XG4gICgoYjAgbGFuZCAweDA3KSBsc2wgMTgpIGxvclxuICAoKGIxIGxhbmQgMHgzRikgbHNsIDEyKSBsb3JcbiAgKChiMiBsYW5kIDB4M0YpIGxzbCA2KSBsb3JcbiAgKChiMyBsYW5kIDB4M0YpKVxuXG5sZXQgZ2V0X3V0Zl84X3VjaGFyIGIgaSA9XG4gIGxldCBiMCA9IGdldF91aW50OCBiIGkgaW4gKCogcmFpc2VzIGlmIFtpXSBpcyBub3QgYSB2YWxpZCBpbmRleC4gKilcbiAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDggaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBtYXRjaCBDaGFyLnVuc2FmZV9jaHIgYjAgd2l0aCAoKiBTZWUgVGhlIFVuaWNvZGUgU3RhbmRhcmQsIFRhYmxlIDMuNyAqKVxuICB8ICdcXHgwMCcgLi4gJ1xceDdGJyAtPiBkZWNfcmV0IDEgYjBcbiAgfCAnXFx4QzInIC4uICdcXHhERicgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgZGVjX3JldCAyICh1dGZfOF91Y2hhcl8yIGIwIGIxKVxuICB8ICdcXHhFMCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feEEwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEUxJyAuLiAnXFx4RUMnIHwgJ1xceEVFJyAuLiAnXFx4RUYnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgZGVjX3JldCAzICh1dGZfOF91Y2hhcl8zIGIwIGIxIGIyKVxuICB8ICdcXHhFRCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3g5RiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEYwJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94OTBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8ICdcXHhGMScgLi4gJ1xceEYzJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8ICdcXHhGNCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3g4RiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGxldCBiMyA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjMgdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGRlY19yZXQgNCAodXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMylcbiAgfCBfIC0+IGRlY19pbnZhbGlkIDFcblxubGV0IHNldF91dGZfOF91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQ4IGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweDAwN0YgLT5cbiAgICAgIHNldF91aW50OCBiIGkgdTtcbiAgICAgIDFcbiAgfCB1IHdoZW4gdSA8PSAweDA3RkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEMwIGxvciAodSBsc3IgNikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDIpXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhFMCBsb3IgKHUgbHNyIDEyKSk7XG4gICAgICAgc2V0IGIgKGkgKyAxKSAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICAzKVxuICB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhGMCBsb3IgKHUgbHNyIDE4KSk7XG4gICAgICAgc2V0IGIgKGkgKyAxKSAoMHg4MCBsb3IgKCh1IGxzciAxMikgbGFuZCAweDNGKSk7XG4gICAgICAgc2V0IGIgKGkgKyAyKSAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICA0KVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfOCBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50OCBpblxuICAgIG1hdGNoIENoYXIudW5zYWZlX2NociAoZ2V0IGIgaSkgd2l0aFxuICAgIHwgJ1xceDAwJyAuLiAnXFx4N0YnIC0+IGxvb3AgbWF4IGIgKGkgKyAxKVxuICAgIHwgJ1xceEMyJyAuLiAnXFx4REYnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEUwJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3hBMF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RTEnIC4uICdcXHhFQycgfCAnXFx4RUUnIC4uICdcXHhFRicgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEVEJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194OUYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjAnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDkwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMikpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjEnIC4uICdcXHhGMycgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGNCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feDhGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcblxuKCogVVRGLTE2QkUgKilcblxubGV0IGdldF91dGZfMTZiZV91Y2hhciBiIGkgPVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfYmUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBpZiBpID0gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gIG1hdGNoIGdldCBiIGkgd2l0aFxuICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gZGVjX3JldCAyIHVcbiAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBkZWNfaW52YWxpZCAyXG4gIHwgaGkgLT4gKCogY29tYmluZSBbaGldIHdpdGggYSBsb3cgc3Vycm9nYXRlICopXG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgKG1heCAtIGkgKyAxKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfaW52YWxpZCAyICgqIHJldHJ5IGhlcmUgKilcbiAgICAgIHwgbG8gLT5cbiAgICAgICAgICBsZXQgdSA9ICgoKGhpIGxhbmQgMHgzRkYpIGxzbCAxMCkgbG9yIChsbyBsYW5kIDB4M0ZGKSkgKyAweDEwMDAwIGluXG4gICAgICAgICAgZGVjX3JldCA0IHVcblxubGV0IHNldF91dGZfMTZiZV91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQxNl9iZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlIChzZXQgYiBpIHU7IDIpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgICBsZXQgaGkgPSAoMHhEODAwIGxvciAodScgbHNyIDEwKSkgaW5cbiAgICAgIGxldCBsbyA9ICgweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSkgaW5cbiAgICAgIHNldCBiIGkgaGk7IHNldCBiIChpICsgMikgbG87IDRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzE2YmUgYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfYmUgaW5cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgaWYgaSA9IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gbG9vcCBtYXggYiAoaSArIDIpXG4gICAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBmYWxzZVxuICAgIHwgX2hpIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBmYWxzZVxuICAgICAgICB8IF9sbyAtPiBsb29wIG1heCBiIChpICsgNClcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcblxuKCogVVRGLTE2TEUgKilcblxubGV0IGdldF91dGZfMTZsZV91Y2hhciBiIGkgPVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfbGUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBpZiBpID0gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gIG1hdGNoIGdldCBiIGkgd2l0aFxuICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gZGVjX3JldCAyIHVcbiAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBkZWNfaW52YWxpZCAyXG4gIHwgaGkgLT4gKCogY29tYmluZSBbaGldIHdpdGggYSBsb3cgc3Vycm9nYXRlICopXG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgKG1heCAtIGkgKyAxKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfaW52YWxpZCAyICgqIHJldHJ5IGhlcmUgKilcbiAgICAgIHwgbG8gLT5cbiAgICAgICAgICBsZXQgdSA9ICgoKGhpIGxhbmQgMHgzRkYpIGxzbCAxMCkgbG9yIChsbyBsYW5kIDB4M0ZGKSkgKyAweDEwMDAwIGluXG4gICAgICAgICAgZGVjX3JldCA0IHVcblxubGV0IHNldF91dGZfMTZsZV91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQxNl9sZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlIChzZXQgYiBpIHU7IDIpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgICBsZXQgaGkgPSAoMHhEODAwIGxvciAodScgbHNyIDEwKSkgaW5cbiAgICAgIGxldCBsbyA9ICgweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSkgaW5cbiAgICAgIHNldCBiIGkgaGk7IHNldCBiIChpICsgMikgbG87IDRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzE2bGUgYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfbGUgaW5cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgaWYgaSA9IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gbG9vcCBtYXggYiAoaSArIDIpXG4gICAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBmYWxzZVxuICAgIHwgX2hpIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBmYWxzZVxuICAgICAgICB8IF9sbyAtPiBsb29wIG1heCBiIChpICsgNClcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU3RyaW5nIG9wZXJhdGlvbnMsIGJhc2VkIG9uIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gYnl0ZXMubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+ICBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubW9kdWxlIEIgPSBCeXRlc1xuXG5sZXQgYnRzID0gQi51bnNhZmVfdG9fc3RyaW5nXG5sZXQgYm9zID0gQi51bnNhZmVfb2Zfc3RyaW5nXG5cbmxldCBtYWtlIG4gYyA9XG4gIEIubWFrZSBuIGMgfD4gYnRzXG5sZXQgaW5pdCBuIGYgPVxuICBCLmluaXQgbiBmIHw+IGJ0c1xubGV0IGVtcHR5ID0gXCJcIlxubGV0IG9mX2J5dGVzID0gQi50b19zdHJpbmdcbmxldCB0b19ieXRlcyA9IEIub2Zfc3RyaW5nXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIEIuc3ViIChib3Mgcykgb2ZzIGxlbiB8PiBidHNcbmxldCBibGl0ID1cbiAgQi5ibGl0X3N0cmluZ1xuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IFwiXCJcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluIGJ0cyBAQFxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKEIuY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgPSAoIF4gKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlciBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyaSBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxubGV0IG1hcCBmIHMgPVxuICBCLm1hcCBmIChib3MgcykgfD4gYnRzXG5sZXQgbWFwaSBmIHMgPVxuICBCLm1hcGkgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IGZvbGRfcmlnaHQgZiB4IGEgPVxuICBCLmZvbGRfcmlnaHQgZiAoYm9zIHgpIGFcbmxldCBmb2xkX2xlZnQgZiBhIHggPVxuICBCLmZvbGRfbGVmdCBmIGEgKGJvcyB4KVxubGV0IGV4aXN0cyBmIHMgPVxuICBCLmV4aXN0cyBmIChib3MgcylcbmxldCBmb3JfYWxsIGYgcyA9XG4gIEIuZm9yX2FsbCBmIChib3MgcylcblxuKCogQmV3YXJlOiB3ZSBjYW5ub3QgdXNlIEIudHJpbSBvciBCLmVzY2FwZSBiZWNhdXNlIHRoZXkgYWx3YXlzIG1ha2UgYVxuICAgY29weSwgYnV0IFN0cmluZy5tbGkgc3BlbGxzIG91dCBzb21lIGNhc2VzIHdoZXJlIHdlIGFyZSBub3QgYWxsb3dlZFxuICAgdG8gbWFrZSBhIGNvcHkuICopXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgaWYgcyA9IFwiXCIgdGhlbiBzXG4gIGVsc2UgaWYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAwKSB8fCBpc19zcGFjZSAodW5zYWZlX2dldCBzIChsZW5ndGggcyAtIDEpKVxuICAgIHRoZW4gYnRzIChCLnRyaW0gKGJvcyBzKSlcbiAgZWxzZSBzXG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgYiA9IGJvcyBzIGluXG4gICgqIFdlIHNhdGlzZnkgW3Vuc2FmZV9lc2NhcGVdJ3MgcHJlY29uZGl0aW9uIGJ5IHBhc3NpbmcgYW5cbiAgICAgaW1tdXRhYmxlIGJ5dGUgc2VxdWVuY2UgW2JdLiAqKVxuICBidHMgKEIudW5zYWZlX2VzY2FwZSBiKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gICAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9XG4gIEIudXBwZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPVxuICBCLmxvd2VyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi51bmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfc3RyaW5nX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoIDAgeFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N0cmluZ19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IGJvcyBzIHw+IEIudG9fc2VxXG5cbmxldCB0b19zZXFpIHMgPSBib3MgcyB8PiBCLnRvX3NlcWlcblxubGV0IG9mX3NlcSBnID0gQi5vZl9zZXEgZyB8PiBidHNcblxuKCogVVRGIGRlY29kZXJzIGFuZCB2YWxpZGF0b3JzICopXG5cbmxldCBnZXRfdXRmXzhfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzhfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzggcyA9IEIuaXNfdmFsaWRfdXRmXzggKGJvcyBzKVxuXG5sZXQgZ2V0X3V0Zl8xNmJlX3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl8xNmJlX3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl8xNmJlIHMgPSBCLmlzX3ZhbGlkX3V0Zl8xNmJlIChib3MgcylcblxubGV0IGdldF91dGZfMTZsZV91Y2hhciBzIGkgPSBCLmdldF91dGZfMTZsZV91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfMTZsZSBzID0gQi5pc192YWxpZF91dGZfMTZsZSAoYm9zIHMpXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjRcIlxuXG5sZXQgZ2V0X2ludDggcyBpID0gQi5nZXRfaW50OCAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2xlIHMgaSA9IEIuZ2V0X3VpbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2JlIHMgaSA9IEIuZ2V0X3VpbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbmUgcyBpID0gQi5nZXRfaW50MTZfbmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2xlIHMgaSA9IEIuZ2V0X2ludDE2X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9iZSBzIGkgPSBCLmdldF9pbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfbGUgcyBpID0gQi5nZXRfaW50MzJfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2JlIHMgaSA9IEIuZ2V0X2ludDMyX2JlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9sZSBzIGkgPSBCLmdldF9pbnQ2NF9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfYmUgcyBpID0gQi5nZXRfaW50NjRfYmUgKGJvcyBzKSBpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHVuaXQgPSAoKVxuXG5sZXQgZXF1YWwgKCkgKCkgPSB0cnVlXG5sZXQgY29tcGFyZSAoKSAoKSA9IDBcbmxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBleHRlcm5fZmxhZ3MgPVxuICAgIE5vX3NoYXJpbmdcbiAgfCBDbG9zdXJlc1xuICB8IENvbXBhdF8zMlxuXG4oKiBub3RlOiB0aGlzIHR5cGUgZGVmaW5pdGlvbiBpcyB1c2VkIGluICdydW50aW1lL2RlYnVnZ2VyLmMnICopXG5cbmV4dGVybmFsIHRvX2NoYW5uZWw6IG91dF9jaGFubmVsIC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxuZXh0ZXJuYWwgdG9fYnl0ZXM6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGJ5dGVzXG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzXCJcbmV4dGVybmFsIHRvX3N0cmluZzogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gc3RyaW5nXG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB0b19idWZmZXJfdW5zYWZlOlxuICAgICAgYnl0ZXMgLT4gaW50IC0+IGludCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyXCJcblxubGV0IHRvX2J1ZmZlciBidWZmIG9mcyBsZW4gdiBmbGFncyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC50b19idWZmZXI6IHN1YnN0cmluZyBvdXQgb2YgYm91bmRzXCJcbiAgZWxzZSB0b19idWZmZXJfdW5zYWZlIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzXG5cbigqIFRoZSBmdW5jdGlvbnMgYmVsb3cgdXNlIGJ5dGUgc2VxdWVuY2VzIGFzIGlucHV0LCBuZXZlciB1c2luZyBhbnlcbiAgIG11dGF0aW9uLiBJdCBtYWtlcyBzZW5zZSB0byB1c2Ugbm9uLW11dGF0ZWQgW2J5dGVzXSByYXRoZXIgdGhhblxuICAgW3N0cmluZ10sIGJlY2F1c2Ugd2UgcmVhbGx5IHdvcmsgd2l0aCBzZXF1ZW5jZXMgb2YgYnl0ZXMsIG5vdFxuICAgYSB0ZXh0IHJlcHJlc2VudGF0aW9uLlxuKilcblxuZXh0ZXJuYWwgZnJvbV9jaGFubmVsOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIGZyb21fYnl0ZXNfdW5zYWZlOiBieXRlcyAtPiBpbnQgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlc1wiXG5leHRlcm5hbCBkYXRhX3NpemVfdW5zYWZlOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX21hcnNoYWxfZGF0YV9zaXplXCJcblxubGV0IGhlYWRlcl9zaXplID0gMTZcbmxldCBkYXRhX3NpemUgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZGF0YV9zaXplXCJcbiAgZWxzZSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzXG5sZXQgdG90YWxfc2l6ZSBidWZmIG9mcyA9IGhlYWRlcl9zaXplICsgZGF0YV9zaXplIGJ1ZmYgb2ZzXG5cbmxldCBmcm9tX2J5dGVzIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGxlbiA9IGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnMgaW5cbiAgICBpZiBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIChoZWFkZXJfc2l6ZSArIGxlbilcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgICBlbHNlIGZyb21fYnl0ZXNfdW5zYWZlIGJ1ZmYgb2ZzXG4gIGVuZFxuXG5sZXQgZnJvbV9zdHJpbmcgYnVmZiBvZnMgPVxuICAoKiBCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIGlzIHNhZmUgaGVyZSwgYXMgdGhlIHByb2R1Y2VkIGJ5dGVcbiAgICAgc2VxdWVuY2UgaXMgbmV2ZXIgbXV0YXRlZCAqKVxuICBmcm9tX2J5dGVzIChCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIGJ1ZmYpIG9mc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgYXJyYXlzLiAqKVxudHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuKCogQXJyYXkgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBsZW5ndGggOiAnYSBhcnJheSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgbWFrZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCBjcmVhdGU6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuZXh0ZXJuYWwgdW5zYWZlX3N1YiA6ICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfc3ViXCJcbmV4dGVybmFsIGFwcGVuZF9wcmltIDogJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfYXBwZW5kXCJcbmV4dGVybmFsIGNvbmNhdCA6ICdhIGFycmF5IGxpc3QgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfY29uY2F0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgJ2EgYXJyYXkgLT4gaW50IC0+ICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9hcnJheV9ibGl0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDpcbiAgJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2ZpbGxcIlxuZXh0ZXJuYWwgY3JlYXRlX2Zsb2F0OiBpbnQgLT4gZmxvYXQgYXJyYXkgPSBcImNhbWxfbWFrZV9mbG9hdF92ZWN0XCJcblxubW9kdWxlIEZsb2F0YXJyYXkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGZsb2F0YXJyYXkgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCBsZW5ndGggOiBmbG9hdGFycmF5IC0+IGludCA9IFwiJWZsb2F0YXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuZW5kXG5cbmxldCBpbml0IGwgZiA9XG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlXG4gIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0XCJcbiAgKCogU2VlICM2NTc1LiBXZSBtdXN0IG5vdCBldmFsdWF0ZSBbZiAwXSB3aGVuIFtsIDw9IDBdLlxuICAgICBXZSBjb3VsZCBhbHNvIGNoZWNrIGZvciBtYXhpbXVtIGFycmF5IHNpemUsIGJ1dCB0aGlzIGRlcGVuZHNcbiAgICAgb24gd2hldGhlciB3ZSBjcmVhdGUgYSBmbG9hdCBhcnJheSBvciBhIHJlZ3VsYXIgb25lLi4uICopXG4gIGVsc2VcbiAgIGxldCByZXMgPSBjcmVhdGUgbCAoZiAwKSBpblxuICAgZm9yIGkgPSAxIHRvIHByZWQgbCBkb1xuICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICBkb25lO1xuICAgcmVzXG5cbmxldCBtYWtlX21hdHJpeCBzeCBzeSBpbml0ID1cbiAgKCogV2UgcmFpc2UgZXZlbiBpZiBbc3ggPSAwICYmIHN5IDwgMF06ICopXG4gIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkubWFrZV9tYXRyaXhcIjtcbiAgbGV0IHJlcyA9IGNyZWF0ZSBzeCBbfHxdIGluXG4gIGlmIHN5ID4gMCB0aGVuIGJlZ2luXG4gICAgZm9yIHggPSAwIHRvIHByZWQgc3ggZG9cbiAgICAgIHVuc2FmZV9zZXQgcmVzIHggKGNyZWF0ZSBzeSBpbml0KVxuICAgIGRvbmU7XG4gIGVuZDtcbiAgcmVzXG5cbmxldCBpbml0X21hdHJpeCBzeCBzeSBmID1cbiAgKCogV2UgcmFpc2UgZXZlbiBpZiBbc3ggPSAwICYmIHN5IDwgMF06ICopXG4gIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuaW5pdF9tYXRyaXhcIjtcbiAgbGV0IHJlcyA9IGNyZWF0ZSBzeCBbfHxdIGluXG4gICgqIFdlIG11c3Qgbm90IGV2YWx1YXRlIFtmIHggMF0gd2hlbiBbc3kgPD0gMF06ICopXG4gIGlmIHN5ID4gMCB0aGVuIGJlZ2luXG4gICAgZm9yIHggPSAwIHRvIHByZWQgc3ggZG9cbiAgICAgIGxldCByb3cgPSBjcmVhdGUgc3kgKGYgeCAwKSBpblxuICAgICAgZm9yIHkgPSAxIHRvIHByZWQgc3kgZG9cbiAgICAgICAgdW5zYWZlX3NldCByb3cgeSAoZiB4IHkpXG4gICAgICBkb25lO1xuICAgICAgdW5zYWZlX3NldCByZXMgeCByb3dcbiAgICBkb25lO1xuICBlbmQ7XG4gIHJlc1xuXG5sZXQgY29weSBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpbiBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSB1bnNhZmVfc3ViIGEgMCBsXG5cbmxldCBhcHBlbmQgYTEgYTIgPVxuICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgaWYgbDEgPSAwIHRoZW4gY29weSBhMlxuICBlbHNlIGlmIGxlbmd0aCBhMiA9IDAgdGhlbiB1bnNhZmVfc3ViIGExIDAgbDFcbiAgZWxzZSBhcHBlbmRfcHJpbSBhMSBhMlxuXG5sZXQgc3ViIGEgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuc3ViXCJcbiAgZWxzZSB1bnNhZmVfc3ViIGEgb2ZzIGxlblxuXG5sZXQgZmlsbCBhIG9mcyBsZW4gdiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZmlsbFwiXG4gIGVsc2UgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxubGV0IGJsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IGxlbmd0aCBhMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggYTIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmJsaXRcIlxuICBlbHNlIHVuc2FmZV9ibGl0IGExIG9mczEgYTIgb2ZzMiBsZW5cblxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBpdGVyMiBmIGEgYiA9XG4gIGlmIGxlbmd0aCBhIDw+IGxlbmd0aCBiIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5Lml0ZXIyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2VcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpIGRvbmVcblxubGV0IG1hcCBmIGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCAoZih1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZih1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwX2lucGxhY2UgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgYSBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gIGRvbmVcblxubGV0IG1hcGlfaW5wbGFjZSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgdW5zYWZlX3NldCBhIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICBkb25lXG5cbmxldCBtYXAyIGYgYSBiID1cbiAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgaWYgbGEgPD4gbGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlIGJlZ2luXG4gICAgaWYgbGEgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSAoZiAodW5zYWZlX2dldCBhIDApICh1bnNhZmVfZ2V0IGIgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG4gIGVuZFxuXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBtYXBpIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmIDAgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCB0b19saXN0IGEgPVxuICBsZXQgcmVjIHRvbGlzdCBpIHJlcyA9XG4gICAgaWYgaSA8IDAgdGhlbiByZXMgZWxzZSB0b2xpc3QgKGkgLSAxKSAodW5zYWZlX2dldCBhIGkgOjogcmVzKSBpblxuICB0b2xpc3QgKGxlbmd0aCBhIC0gMSkgW11cblxuKCogQ2Fubm90IHVzZSBMaXN0Lmxlbmd0aCBoZXJlIGJlY2F1c2UgdGhlIExpc3QgbW9kdWxlIGRlcGVuZHMgb24gQXJyYXkuICopXG5sZXQgcmVjIGxpc3RfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY3VcbiAgfCBfOjp0IC0+IGxpc3RfbGVuZ3RoIChzdWNjIGFjY3UpIHRcblxubGV0IG9mX2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGEgPSBjcmVhdGUgKGxpc3RfbGVuZ3RoIDAgbCkgaGQgaW5cbiAgICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgICBbXSAtPiBhXG4gICAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpKzEpIHRsIGluXG4gICAgICBmaWxsIDEgdGxcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjIGlucHV0X2FycmF5ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBpbnB1dF9hcnJheSBpblxuICBpZiBsZW4gPSAwIHRoZW4gKGFjYywgW3x8XSkgZWxzZSBiZWdpblxuICAgIGxldCBhY2MsIGVsdCA9IGYgYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IDApIGluXG4gICAgbGV0IG91dHB1dF9hcnJheSA9IGNyZWF0ZSBsZW4gZWx0IGluXG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGFjYycsIGVsdCA9IGYgIWFjYyAodW5zYWZlX2dldCBpbnB1dF9hcnJheSBpKSBpblxuICAgICAgYWNjIDo9IGFjYyc7XG4gICAgICB1bnNhZmVfc2V0IG91dHB1dF9hcnJheSBpIGVsdDtcbiAgICBkb25lO1xuICAgICFhY2MsIG91dHB1dF9hcnJheVxuICBlbmRcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIGxldCBuMSA9IGxlbmd0aCBsMVxuICBhbmQgbjIgPSBsZW5ndGggbDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZvcl9hbGwyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBsMSBpKSAodW5zYWZlX2dldCBsMiBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZXhpc3RzMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZXhpc3RzMlwiXG4gIGVsc2UgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuMSB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IG1lbSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtcSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiB4ID09ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9vcHQgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4XG4gICAgICBlbHNlIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX2luZGV4IHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gU29tZSBpXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9tYXAgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIChzdWNjIGkpXG4gICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcGkgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IHggPVxuICBpZiB4ID0gW3x8XSB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCBhMCwgYjAgPSB1bnNhZmVfZ2V0IHggMCBpblxuICAgIGxldCBuID0gbGVuZ3RoIHggaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBuIGEwIGluXG4gICAgbGV0IGIgPSBjcmVhdGUgbiBiMCBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IGFpLCBiaSA9IHVuc2FmZV9nZXQgeCBpIGluXG4gICAgICB1bnNhZmVfc2V0IGEgaSBhaTtcbiAgICAgIHVuc2FmZV9zZXQgYiBpIGJpXG4gICAgZG9uZTtcbiAgICBhLCBiXG4gIGVuZFxuXG5sZXQgY29tYmluZSBhIGIgPVxuICBsZXQgbmEgPSBsZW5ndGggYSBpblxuICBsZXQgbmIgPSBsZW5ndGggYiBpblxuICBpZiBuYSA8PiBuYiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuY29tYmluZVwiO1xuICBpZiBuYSA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgeCA9IGNyZWF0ZSBuYSAodW5zYWZlX2dldCBhIDAsIHVuc2FmZV9nZXQgYiAwKSBpblxuICAgIGZvciBpID0gMSB0byBuYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgeCBpICh1bnNhZmVfZ2V0IGEgaSwgdW5zYWZlX2dldCBiIGkpXG4gICAgZG9uZTtcbiAgICB4XG4gIGVuZFxuXG5leGNlcHRpb24gQm90dG9tIG9mIGludFxubGV0IHNvcnQgY21wIGEgPVxuICBsZXQgbWF4c29uIGwgaSA9XG4gICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAheFxuICAgIGVuZCBlbHNlXG4gICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgIHRoZW4gaTMxKzFcbiAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgaW5cbiAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICBidWJibGVkb3duIGwgalxuICBpblxuICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gIGRvbmU7XG4gIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cblxubGV0IGN1dG9mZiA9IDVcbmxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgZW5kXG4gICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gIGluXG4gIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgIGRlY3IgajtcbiAgICAgIGRvbmU7XG4gICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgZG9uZTtcbiAgaW5cbiAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgIGxldCB0ID0gbWFrZSBsMiAoZ2V0IGEgMCkgaW5cbiAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgZW5kXG5cblxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbmxldCBzaHVmZmxlIH5yYW5kIGEgPSAoKiBGaXNoZXItWWF0ZXMgKilcbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDEgZG9cbiAgICBsZXQgaiA9IHJhbmQgKGkgKyAxKSBpblxuICAgIGxldCB2ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICB1bnNhZmVfc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgdW5zYWZlX3NldCBhIGogdlxuICBkb25lXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgZWxzZSBTZXEuTmlsXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGEgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICB0aGVuXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3Jldl9saXN0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbfHxdXG4gIHwgaGQ6OnRsIGFzIGwgLT5cbiAgICAgIGxldCBsZW4gPSBsaXN0X2xlbmd0aCAwIGwgaW5cbiAgICAgIGxldCBhID0gY3JlYXRlIGxlbiBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICAgIGluXG4gICAgICBmaWxsIChsZW4tMikgdGxcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gIG9mX3Jldl9saXN0IGxcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgTmljb2xhcyBPamVkYSBCYXIsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgbmVnIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCBhZGQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsIHN1YiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgbXVsIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCBkaXYgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsIHJlbSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZm1hIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1hX2Zsb2F0XCIgXCJjYW1sX2ZtYVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcblxubGV0IHplcm8gPSAwLlxubGV0IG9uZSA9IDEuXG5sZXQgbWludXNfb25lID0gLTEuXG5sZXQgaW5maW5pdHkgPSBTdGRsaWIuaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBTdGRsaWIubmVnX2luZmluaXR5XG5sZXQgbmFuID0gU3RkbGliLm5hblxubGV0IHF1aWV0X25hbiA9IG5hblxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmxldCBzaWduYWxpbmdfbmFuID0gZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAxTFxubGV0IGlzX2Zpbml0ZSAoeDogZmxvYXQpID0geCAtLiB4ID0gMC5cbmxldCBpc19pbmZpbml0ZSAoeDogZmxvYXQpID0gMS4gLy4geCA9IDAuXG5sZXQgaXNfbmFuICh4OiBmbG9hdCkgPSB4IDw+IHhcblxubGV0IHBpID0gMHgxLjkyMWZiNTQ0NDJkMThwKzFcbmxldCBtYXhfZmxvYXQgPSBTdGRsaWIubWF4X2Zsb2F0XG5sZXQgbWluX2Zsb2F0ID0gU3RkbGliLm1pbl9mbG9hdFxubGV0IGVwc2lsb24gPSBTdGRsaWIuZXBzaWxvbl9mbG9hdFxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0b19pbnQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZ19vcHQgPSBTdGRsaWIuZmxvYXRfb2Zfc3RyaW5nX29wdFxubGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5zdHJpbmdfb2ZfZmxvYXRcbnR5cGUgZnBjbGFzcyA9IFN0ZGxpYi5mcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBwb3cgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNicnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jYnJ0X2Zsb2F0XCIgXCJjYW1sX2NicnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwMiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cDJfZmxvYXRcIiBcImNhbWxfZXhwMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMl9mbG9hdFwiIFwiY2FtbF9sb2cyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBlcmYgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9lcmZfZmxvYXRcIiBcImNhbWxfZXJmXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZmMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9lcmZjX2Zsb2F0XCIgXCJjYW1sX2VyZmNcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdHJ1bmMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90cnVuY19mbG9hdFwiIFwiY2FtbF90cnVuY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCByb3VuZCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3JvdW5kX2Zsb2F0XCIgXCJjYW1sX3JvdW5kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbltAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCBpc19pbnRlZ2VyIHggPSB4ID0gdHJ1bmMgeCAmJiBpc19maW5pdGUgeFxuXG5leHRlcm5hbCBuZXh0X2FmdGVyIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmV4dGFmdGVyX2Zsb2F0XCIgXCJjYW1sX25leHRhZnRlclwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCBzdWNjIHggPSBuZXh0X2FmdGVyIHggaW5maW5pdHlcbmxldCBwcmVkIHggPSBuZXh0X2FmdGVyIHggbmVnX2luZmluaXR5XG5cbmV4dGVybmFsIGNvcHlfc2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2lnbl9iaXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gYm9vbFxuICA9IFwiY2FtbF9zaWduYml0X2Zsb2F0XCIgXCJjYW1sX3NpZ25iaXRcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxudHlwZSB0ID0gZmxvYXRcbmV4dGVybmFsIGNvbXBhcmUgOiBmbG9hdCAtPiBmbG9hdCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmxldCBlcXVhbCB4IHkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0W0BpbmxpbmVdIG1pbiAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4ICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuIHkgZWxzZSB4XG5cbmxldFtAaW5saW5lXSBtaW5fbWF4ICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIGlzX25hbiB4IHx8IGlzX25hbiB5IHRoZW4gKG5hbiwgbmFuKVxuICBlbHNlIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlbiAoeCwgeSkgZWxzZSAoeSwgeClcblxubGV0W0BpbmxpbmVdIG1pbl9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIHlcblxubGV0W0BpbmxpbmVdIG1heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXhfbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIGlzX25hbiB4IHRoZW4gKHkseSlcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuICh4LHgpXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LHkpIGVsc2UgKHkseClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gZmxvYXRhcnJheVxuXG4gIGV4dGVybmFsIGxlbmd0aCA6IHQgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIGxldCB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdiA9XG4gICAgZm9yIGkgPSBvZnMgdG8gb2ZzICsgbGVuIC0gMSBkbyB1bnNhZmVfc2V0IGEgaSB2IGRvbmVcblxuICBleHRlcm5hbCB1bnNhZmVfYmxpdDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPVxuICAgIFwiY2FtbF9mbG9hdGFycmF5X2JsaXRcIiBbQEBub2FsbG9jXVxuXG4gIGxldCBjaGVjayBhIG9mcyBsZW4gbXNnID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzICsgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPiBsZW5ndGggYSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBsZXQgbWFrZSBuIHYgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbiBpblxuICAgIHVuc2FmZV9maWxsIHJlc3VsdCAwIG4gdjtcbiAgICByZXN1bHRcblxuICBsZXQgaW5pdCBsIGYgPVxuICAgIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pbml0XCJcbiAgICBlbHNlXG4gICAgICBsZXQgcmVzID0gY3JlYXRlIGwgaW5cbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgICBkb25lO1xuICAgICAgcmVzXG5cbiAgbGV0IG1ha2VfbWF0cml4IHN4IHN5IHYgPVxuICAgICgqIFdlIHJhaXNlIGV2ZW4gaWYgW3N4ID0gMCAmJiBzeSA8IDBdOiAqKVxuICAgIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFrZV9tYXRyaXhcIjtcbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBzeCAoY3JlYXRlIDApIGluXG4gICAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICAgIGZvciB4ID0gMCB0byBzeCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByZXMgeCAobWFrZSBzeSB2KVxuICAgICAgZG9uZTtcbiAgICBlbmQ7XG4gICAgcmVzXG5cbiAgbGV0IGluaXRfbWF0cml4IHN4IHN5IGYgPVxuICAgICgqIFdlIHJhaXNlIGV2ZW4gaWYgW3N4ID0gMCAmJiBzeSA8IDBdOiAqKVxuICAgIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaW5pdF9tYXRyaXhcIjtcbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBzeCAoY3JlYXRlIDApIGluXG4gICAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICAgIGZvciB4ID0gMCB0byBzeCAtIDEgZG9cbiAgICAgICAgbGV0IHJvdyA9IGNyZWF0ZSBzeSBpblxuICAgICAgICBmb3IgeSA9IDAgdG8gc3kgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCByb3cgeSAoZiB4IHkpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgcmVzIHggcm93XG4gICAgICBkb25lO1xuICAgIGVuZDtcbiAgICByZXNcblxuICBsZXQgYXBwZW5kIGExIGEyID1cbiAgICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgICBsZXQgbDIgPSBsZW5ndGggYTIgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChsMSArIGwyKSBpblxuICAgIHVuc2FmZV9ibGl0IGExIDAgcmVzdWx0IDAgbDE7XG4gICAgdW5zYWZlX2JsaXQgYTIgMCByZXN1bHQgbDEgbDI7XG4gICAgcmVzdWx0XG5cbiAgKCogbmV4dCAzIGZ1bmN0aW9uczogbW9kaWZpZWQgY29weSBvZiBjb2RlIGZyb20gc3RyaW5nLm1sICopXG4gIGxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID1cbiAgICBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5jb25jYXRcIlxuXG4gIGxldCByZWMgc3VtX2xlbmd0aHMgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgYWNjKSBhY2MpIHRsXG5cbiAgbGV0IGNvbmNhdCBsID1cbiAgICBsZXQgbGVuID0gc3VtX2xlbmd0aHMgMCBsIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgbCBpID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgKGkgPSBsZW4pXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCBobGVuID0gbGVuZ3RoIGhkIGluXG4gICAgICAgIHVuc2FmZV9ibGl0IGhkIDAgcmVzdWx0IGkgaGxlbjtcbiAgICAgICAgbG9vcCB0bCAoaSArIGhsZW4pXG4gICAgaW5cbiAgICBsb29wIGwgMDtcbiAgICByZXN1bHRcblxuICBsZXQgc3ViIGEgb2ZzIGxlbiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuc3ViXCI7XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBhIG9mcyByZXN1bHQgMCBsZW47XG4gICAgcmVzdWx0XG5cbiAgbGV0IGNvcHkgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbCBpblxuICAgIHVuc2FmZV9ibGl0IGEgMCByZXN1bHQgMCBsO1xuICAgIHJlc3VsdFxuXG4gIGxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5maWxsXCI7XG4gICAgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxuICBsZXQgYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW4gPVxuICAgIGNoZWNrIHNyYyBzb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICBjaGVjayBkc3QgZG9mcyBsZW4gXCJGbG9hdC5hcnJheS5ibGl0XCI7XG4gICAgdW5zYWZlX2JsaXQgc3JjIHNvZnMgZHN0IGRvZnMgbGVuXG5cbiAgbGV0IHRvX2xpc3QgYSA9XG4gICAgTGlzdC5pbml0IChsZW5ndGggYSkgKHVuc2FmZV9nZXQgYSlcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICAgIGxldCByZWMgZmlsbCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IHJlc3VsdFxuICAgICAgfCBoIDo6IHQgLT4gdW5zYWZlX3NldCByZXN1bHQgaSBoOyBmaWxsIChpICsgMSkgdFxuICAgIGluXG4gICAgZmlsbCAwIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyMiBmIGEgYiA9XG4gICAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2VcbiAgICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG4gIGxldCBtYXAgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1hcF9pbnBsYWNlIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCBhIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lXG5cbiAgbGV0IG1hcDIgZiBhIGIgPVxuICAgIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcmkgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICBsZXQgbWFwaSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBtYXBpX2lucGxhY2UgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IGEgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZXhpc3RzIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSkgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvcl9hbGwgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBmYWxzZSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgbWVtIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGJ1dCBzbGlnaHRseSBkaWZmZXJlbnQgKilcbiAgbGV0IG1lbV9pZWVlIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgeCA9ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmaW5kX29wdCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9pbmRleCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gU29tZSBpXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9tYXAgZiBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIGYgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZpbmRfbWFwaSBmIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG4gIGxldCBzb3J0IGNtcCBhID1cbiAgICBsZXQgbWF4c29uIGwgaSA9XG4gICAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgICAheFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICAgIHRoZW4gaTMxKzFcbiAgICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICAgIGluXG4gICAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICAgIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIGJ1YmJsZWRvd24gbCBqXG4gICAgaW5cbiAgICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICAgIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgICBkb25lO1xuICAgIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBleGNlcHQgZm9yIHRoZSBjYWxsIHRvIFtjcmVhdGVdICopXG4gIGxldCBjdXRvZmYgPSA1XG4gIGxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gICAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgICAgZW5kXG4gICAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgICBpblxuICAgIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICAgIGRlY3IgajtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgICAgZG9uZTtcbiAgICBpblxuICAgIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICAgIGxldCB0ID0gY3JlYXRlIGwyIGluXG4gICAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gICAgZW5kXG5cbiAgbGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBzaHVmZmxlIH5yYW5kIGEgPSAoKiBGaXNoZXItWWF0ZXMgKilcbiAgICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMSBkb1xuICAgICAgbGV0IGogPSByYW5kIChpICsgMSkgaW5cbiAgICAgIGxldCB2ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHVuc2FmZV9zZXQgYSBqIHZcbiAgICBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXEgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxaSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3Jldl9saXN0IGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICBbXSAtPiBhXG4gICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgIGluXG4gICAgZmlsbCAobGVuLTEpIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3NlcSBpID1cbiAgICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgICBvZl9yZXZfbGlzdCBsXG5cblxuICBsZXQgbWFwX3RvX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPSAwIHRoZW4gW3wgfF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBBcnJheS5tYWtlIGwgKGYgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICBsZXQgbWFwX2Zyb21fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuZW5kXG5cbm1vZHVsZSBBcnJheUxhYmVscyA9IEFycmF5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50MzJdOiAzMi1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50MzIgLT4gaW50ID0gXCIlaW50MzJfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2ZfZmxvYXRcIiBcImNhbWxfaW50MzJfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX3RvX2Zsb2F0XCIgXCJjYW1sX2ludDMyX3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQzMiAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCB6ZXJvID0gMGxcbmxldCBvbmUgPSAxbFxubGV0IG1pbnVzX29uZSA9IC0xbFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFsXG5sZXQgcHJlZCBuID0gc3ViIG4gMWxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMGwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMGxcbmxldCBtYXhfaW50ID0gMHg3RkZGRkZGRmxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMWwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBtYXRjaCBTeXMud29yZF9zaXplIHdpdGhcbiAgfCAzMiAtPlxuICAgICAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgICAgIGZ1biBuIC0+XG4gICAgICAgIGlmIG4gPj0gMGwgJiYgbiA8PSBtYXhfaW50IHRoZW5cbiAgICAgICAgICBTb21lICh0b19pbnQgbilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgfCA2NCAtPlxuICAgICAgKCogU28gdGhhdCBpdCBjb21waWxlcyBpbiAzMi1iaXQgKilcbiAgICAgIGxldCBtYXNrID0gMHhGRkZGIGxzbCAxNiBsb3IgMHhGRkZGIGluXG4gICAgICBmdW4gbiAtPiBTb21lICh0b19pbnQgbiBsYW5kIG1hc2spXG4gIHwgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmcgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzIgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBpbnQzMlxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IHggPSB5XG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgdW5zaWduZWRfbHQgbiBtID1cbiAgc3ViIG4gbWluX2ludCA8IHN1YiBtIG1pbl9pbnRcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lIGJpdG5lc3MuXG4gICBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfbHQgbiBkIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9sdCByIGQgdGhlbiBxIGVsc2Ugc3VjYyBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQ2NF06IDY0LWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbmV4dGVybmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX25hdGl2ZWludFwiXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBpbnQ2NCAtPiBuYXRpdmVpbnQgPSBcIiVpbnQ2NF90b19uYXRpdmVpbnRcIlxuXG5sZXQgemVybyA9IDBMXG5sZXQgb25lID0gMUxcbmxldCBtaW51c19vbmUgPSAtMUxcbmxldCBzdWNjIG4gPSBhZGQgbiAxTFxubGV0IHByZWQgbiA9IHN1YiBuIDFMXG5sZXQgYWJzIG4gPSBpZiBuID49IDBMIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgbWluX2ludCA9IDB4ODAwMDAwMDAwMDAwMDAwMExcbmxldCBtYXhfaW50ID0gMHg3RkZGRkZGRkZGRkZGRkZGTFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xTClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgbiA+PSAwTCAmJiBuIDw9IG1heF9pbnQgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbnR5cGUgdCA9IGludDY0XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0geCA9IHlcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCB1bnNpZ25lZF9sdCBuIG0gPVxuICBzdWIgbiBtaW5faW50IDwgc3ViIG0gbWluX2ludFxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWUgYml0bmVzcy5cbiAgIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9sdCBuIGQgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2x0IHIgZCB0aGVuIHEgZWxzZSBzdWNjIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW05hdGl2ZWludF06IHByb2Nlc3Nvci1uYXRpdmUgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X25lZ1wiXG5leHRlcm5hbCBhZGQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FkZFwiXG5leHRlcm5hbCBzdWI6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3N1YlwiXG5leHRlcm5hbCBtdWw6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X211bFwiXG5leHRlcm5hbCBkaXY6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2RpdlwiXG5leHRlcm5hbCByZW06IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X21vZFwiXG5leHRlcm5hbCBsb2dhbmQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FuZFwiXG5leHRlcm5hbCBsb2dvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNyXCJcbmV4dGVybmFsIG9mX2ludDogaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50OiBuYXRpdmVpbnQgLT4gaW50ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBuYXRpdmVpbnQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyOiBpbnQzMiAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzI6IG5hdGl2ZWludCAtPiBpbnQzMiA9IFwiJW5hdGl2ZWludF90b19pbnQzMlwiXG5cbmxldCB6ZXJvID0gMG5cbmxldCBvbmUgPSAxblxubGV0IG1pbnVzX29uZSA9IC0xblxubGV0IHN1Y2MgbiA9IGFkZCBuIDFuXG5sZXQgcHJlZCBuID0gc3ViIG4gMW5cbmxldCBhYnMgbiA9IGlmIG4gPj0gMG4gdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBzaXplID0gU3lzLndvcmRfc2l6ZVxubGV0IG1pbl9pbnQgPSBzaGlmdF9sZWZ0IDFuIChzaXplIC0gMSlcbmxldCBtYXhfaW50ID0gc3ViIG1pbl9pbnQgMW5cbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMW4pXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIG4gPj0gMG4gJiYgbiA8PSBtYXhfaW50IHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmcgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nOiBzdHJpbmcgLT4gbmF0aXZlaW50ID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IG5hdGl2ZWludFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IHVuc2lnbmVkX2x0IG4gbSA9XG4gIHN1YiBuIG1pbl9pbnQgPCBzdWIgbSBtaW5faW50XG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZSBiaXRuZXNzLlxuICAgU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2x0IG4gZCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfbHQgciBkIHRoZW4gcSBlbHNlIHN1Y2MgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBsZXhlcnMgZ2VuZXJhdGVkIGJ5IGNhbWxsZXggKilcblxudHlwZSBwb3NpdGlvbiA9IHtcbiAgcG9zX2ZuYW1lIDogc3RyaW5nO1xuICBwb3NfbG51bSA6IGludDtcbiAgcG9zX2JvbCA6IGludDtcbiAgcG9zX2NudW0gOiBpbnQ7XG59XG5cbmxldCBkdW1teV9wb3MgPSB7XG4gIHBvc19mbmFtZSA9IFwiXCI7XG4gIHBvc19sbnVtID0gMDtcbiAgcG9zX2JvbCA9IDA7XG4gIHBvc19jbnVtID0gLTE7XG59XG5cbnR5cGUgbGV4YnVmID1cbiAgeyByZWZpbGxfYnVmZiA6IGxleGJ1ZiAtPiB1bml0O1xuICAgIG11dGFibGUgbGV4X2J1ZmZlciA6IGJ5dGVzO1xuICAgIG11dGFibGUgbGV4X2J1ZmZlcl9sZW4gOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfYWJzX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9zdGFydF9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfY3Vycl9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfbGFzdF9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfbGFzdF9hY3Rpb24gOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfZW9mX3JlYWNoZWQgOiBib29sO1xuICAgIG11dGFibGUgbGV4X21lbSA6IGludCBhcnJheTtcbiAgICBtdXRhYmxlIGxleF9zdGFydF9wIDogcG9zaXRpb247XG4gICAgbXV0YWJsZSBsZXhfY3Vycl9wIDogcG9zaXRpb247XG4gIH1cblxudHlwZSBsZXhfdGFibGVzID1cbiAgeyBsZXhfYmFzZTogc3RyaW5nO1xuICAgIGxleF9iYWNrdHJrOiBzdHJpbmc7XG4gICAgbGV4X2RlZmF1bHQ6IHN0cmluZztcbiAgICBsZXhfdHJhbnM6IHN0cmluZztcbiAgICBsZXhfY2hlY2s6IHN0cmluZztcbiAgICBsZXhfYmFzZV9jb2RlIDogc3RyaW5nO1xuICAgIGxleF9iYWNrdHJrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2RlZmF1bHRfY29kZSA6IHN0cmluZztcbiAgICBsZXhfdHJhbnNfY29kZSA6IHN0cmluZztcbiAgICBsZXhfY2hlY2tfY29kZSA6IHN0cmluZztcbiAgICBsZXhfY29kZTogc3RyaW5nO31cblxuZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuZXh0ZXJuYWwgY19uZXdfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX25ld19sZXhfZW5naW5lXCJcblxubGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxuXG5sZXQgbmV3X2VuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgbGV0IHJlc3VsdCA9IGNfbmV3X2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cbmxldCBsZXhfcmVmaWxsIHJlYWRfZnVuIGF1eF9idWZmZXIgbGV4YnVmID1cbiAgbGV0IHJlYWQgPVxuICAgIHJlYWRfZnVuIGF1eF9idWZmZXIgKEJ5dGVzLmxlbmd0aCBhdXhfYnVmZmVyKSBpblxuICBsZXQgbiA9XG4gICAgaWYgcmVhZCA+IDBcbiAgICB0aGVuIHJlYWRcbiAgICBlbHNlIChsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWU7IDApIGluXG4gICgqIEN1cnJlbnQgc3RhdGUgb2YgdGhlIGJ1ZmZlcjpcbiAgICAgICAgPC0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tPlxuICAgICAgICB8ICBqdW5rIHwgICAgICB2YWxpZCBkYXRhICAgICB8ICAganVuayAgICB8XG4gICAgICAgIF4gICAgICAgXiAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgIF5cbiAgICAgICAgMCAgICBzdGFydF9wb3MgICAgICAgICAgICAgYnVmZmVyX2VuZCAgICBCeXRlcy5sZW5ndGggYnVmZmVyXG4gICopXG4gIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG4gPiBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXIgdGhlbiBiZWdpblxuICAgICgqIFRoZXJlIGlzIG5vdCBlbm91Z2ggc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyICopXG4gICAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyBuXG4gICAgICAgPD0gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyXG4gICAgdGhlbiBiZWdpblxuICAgICAgKCogQnV0IHRoZXJlIGlzIGVub3VnaCBzcGFjZSBpZiB3ZSByZWNsYWltIHRoZSBqdW5rIGF0IHRoZSBiZWdpbm5pbmdcbiAgICAgICAgIG9mIHRoZSBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDBcbiAgICAgICAgICAgICAgICAgIChsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcylcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgKCogV2UgbXVzdCBncm93IHRoZSBidWZmZXIuICBEb3VibGluZyBpdHMgc2l6ZSB3aWxsIHByb3ZpZGUgZW5vdWdoXG4gICAgICAgICBzcGFjZSBzaW5jZSBuIDw9IFN0cmluZy5sZW5ndGggYXV4X2J1ZmZlciA8PSBTdHJpbmcubGVuZ3RoIGJ1ZmZlci5cbiAgICAgICAgIFdhdGNoIG91dCBmb3Igc3RyaW5nIGxlbmd0aCBvdmVyZmxvdywgdGhvdWdoLiAqKVxuICAgICAgbGV0IG5ld2xlbiA9XG4gICAgICAgIEludC5taW4gKDIgKiBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXIpIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBpblxuICAgICAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyBuID4gbmV3bGVuXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiTGV4aW5nLmxleF9yZWZpbGw6IGNhbm5vdCBncm93IGJ1ZmZlclwiO1xuICAgICAgbGV0IG5ld2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdsZW4gaW5cbiAgICAgICgqIENvcHkgdGhlIHZhbGlkIGRhdGEgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV3IGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbmV3YnVmIDBcbiAgICAgICAgICAgICAgICAgIChsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3Bvcyk7XG4gICAgICBsZXhidWYubGV4X2J1ZmZlciA8LSBuZXdidWZcbiAgICBlbmQ7XG4gICAgKCogUmVhbGxvY2F0aW9uIG9yIG5vdCwgd2UgaGF2ZSBzaGlmdGVkIHRoZSBkYXRhIGxlZnQgYnlcbiAgICAgICBzdGFydF9wb3MgY2hhcmFjdGVyczsgdXBkYXRlIHRoZSBwb3NpdGlvbnMgKilcbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIHM7XG4gICAgbGV4YnVmLmxleF9jdXJyX3BvcyA8LSBsZXhidWYubGV4X2N1cnJfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSAwO1xuICAgIGxleGJ1Zi5sZXhfbGFzdF9wb3MgPC0gbGV4YnVmLmxleF9sYXN0X3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIHMgO1xuICAgIGxldCB0ID0gbGV4YnVmLmxleF9tZW0gaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQtMSBkb1xuICAgICAgbGV0IHYgPSB0LihpKSBpblxuICAgICAgaWYgdiA+PSAwIHRoZW5cbiAgICAgICAgdC4oaSkgPC0gdi1zXG4gICAgZG9uZVxuICBlbmQ7XG4gICgqIFRoZXJlIGlzIG5vdyBlbm91Z2ggc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyICopXG4gIEJ5dGVzLmJsaXQgYXV4X2J1ZmZlciAwIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiBuO1xuICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuICsgblxuXG5sZXQgemVyb19wb3MgPSB7XG4gIHBvc19mbmFtZSA9IFwiXCI7XG4gIHBvc19sbnVtID0gMTtcbiAgcG9zX2JvbCA9IDA7XG4gIHBvc19jbnVtID0gMDtcbn1cblxubGV0IGZyb21fZnVuY3Rpb24gPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIGYgPVxuICB7IHJlZmlsbF9idWZmID0gbGV4X3JlZmlsbCBmIChCeXRlcy5jcmVhdGUgNTEyKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMuY3JlYXRlIDEwMjQ7XG4gICAgbGV4X2J1ZmZlcl9sZW4gPSAwO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSBmYWxzZTtcbiAgICBsZXhfc3RhcnRfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gICAgbGV4X2N1cnJfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gIH1cblxubGV0IGZyb21fY2hhbm5lbCA/d2l0aF9wb3NpdGlvbnMgaWMgPVxuICBmcm9tX2Z1bmN0aW9uID93aXRoX3Bvc2l0aW9ucyAoZnVuIGJ1ZiBuIC0+IGlucHV0IGljIGJ1ZiAwIG4pXG5cbmxldCBmcm9tX3N0cmluZyA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgcyA9XG4gIHsgcmVmaWxsX2J1ZmYgPSAoZnVuIGxleGJ1ZiAtPiBsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWUpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5vZl9zdHJpbmcgczsgKCogaGF2ZSB0byBtYWtlIGEgY29weSBmb3IgY29tcGF0aWJpbGl0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB1bnNhZmUtc3RyaW5nIG1vZGUgKilcbiAgICBsZXhfYnVmZmVyX2xlbiA9IFN0cmluZy5sZW5ndGggcztcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gdHJ1ZTtcbiAgICBsZXhfc3RhcnRfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gICAgbGV4X2N1cnJfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gIH1cblxubGV0IHNldF9wb3NpdGlvbiBsZXhidWYgcG9zaXRpb24gPVxuICBsZXhidWYubGV4X2N1cnJfcCAgPC0ge3Bvc2l0aW9uIHdpdGggcG9zX2ZuYW1lID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2ZuYW1lfTtcbiAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIHBvc2l0aW9uLnBvc19jbnVtXG5cbmxldCBzZXRfZmlsZW5hbWUgbGV4YnVmIGZuYW1lID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC0ge2xleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gZm5hbWV9XG5cbmxldCB3aXRoX3Bvc2l0aW9ucyBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3NcblxubGV0IGxleGVtZSBsZXhidWYgPVxuICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbmxldCBzdWJfbGV4ZW1lIGxleGJ1ZiBpMSBpMiA9XG4gIGxldCBsZW4gPSBpMi1pMSBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlblxuXG5sZXQgc3ViX2xleGVtZV9vcHQgbGV4YnVmIGkxIGkyID1cbiAgaWYgaTEgPj0gMCB0aGVuIGJlZ2luXG4gICAgbGV0IGxlbiA9IGkyLWkxIGluXG4gICAgU29tZSAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW4pXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgTm9uZVxuICBlbmRcblxubGV0IHN1Yl9sZXhlbWVfY2hhciBsZXhidWYgaSA9IEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXJfb3B0IGxleGJ1ZiBpID1cbiAgaWYgaSA+PSAwIHRoZW5cbiAgICBTb21lIChCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaSlcbiAgZWxzZVxuICAgIE5vbmVcblxuXG5sZXQgbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPVxuICBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgKGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgaSlcblxubGV0IGxleGVtZV9zdGFydCBsZXhidWYgPSBsZXhidWYubGV4X3N0YXJ0X3AucG9zX2NudW1cbmxldCBsZXhlbWVfZW5kIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19jbnVtXG5cbmxldCBsZXhlbWVfc3RhcnRfcCBsZXhidWYgPSBsZXhidWYubGV4X3N0YXJ0X3BcbmxldCBsZXhlbWVfZW5kX3AgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3BcblxubGV0IG5ld19saW5lIGxleGJ1ZiA9XG4gIGxldCBsY3AgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICBpZiBsY3AgIT0gZHVtbXlfcG9zIHRoZW5cbiAgICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgICAgeyBsY3Agd2l0aFxuICAgICAgICBwb3NfbG51bSA9IGxjcC5wb3NfbG51bSArIDE7XG4gICAgICAgIHBvc19ib2wgPSBsY3AucG9zX2NudW07XG4gICAgICB9XG5cblxuXG4oKiBEaXNjYXJkIGRhdGEgbGVmdCBpbiBsZXhlciBidWZmZXIuICopXG5cbmxldCBmbHVzaF9pbnB1dCBsYiA9XG4gIGxiLmxleF9jdXJyX3BvcyA8LSAwO1xuICBsYi5sZXhfYWJzX3BvcyA8LSAwO1xuICBsZXQgbGNwID0gbGIubGV4X2N1cnJfcCBpblxuICBpZiBsY3AgIT0gZHVtbXlfcG9zIHRoZW5cbiAgICBsYi5sZXhfY3Vycl9wIDwtIHt6ZXJvX3BvcyB3aXRoIHBvc19mbmFtZSA9IGxjcC5wb3NfZm5hbWV9O1xuICBsYi5sZXhfYnVmZmVyX2xlbiA8LSAwO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcGFyc2luZyBlbmdpbmUgKilcblxub3BlbiBMZXhpbmdcblxuKCogSW50ZXJuYWwgaW50ZXJmYWNlIHRvIHRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG50eXBlIHBhcnNlcl9lbnYgPVxuICB7IG11dGFibGUgc19zdGFjayA6IGludCBhcnJheTsgICAgICAgICgqIFN0YXRlcyAqKVxuICAgIG11dGFibGUgdl9zdGFjayA6IE9iai50IGFycmF5OyAgICAgICgqIFNlbWFudGljIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgKCogU3RhcnQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzeW1iX2VuZF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAgICgqIEVuZCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN0YWNrc2l6ZSA6IGludDsgICAgICAgICAgICAoKiBTaXplIG9mIHRoZSBzdGFja3MgKilcbiAgICBtdXRhYmxlIHN0YWNrYmFzZSA6IGludDsgICAgICAgICAgICAoKiBCYXNlIHNwIGZvciBjdXJyZW50IHBhcnNlICopXG4gICAgbXV0YWJsZSBjdXJyX2NoYXIgOiBpbnQ7ICAgICAgICAgICAgKCogTGFzdCB0b2tlbiByZWFkICopXG4gICAgbXV0YWJsZSBsdmFsIDogT2JqLnQ7ICAgICAgICAgICAgICAgKCogSXRzIHNlbWFudGljIGF0dHJpYnV0ZSAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydCA6IHBvc2l0aW9uOyAgICAgICgqIFN0YXJ0IHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kIDogcG9zaXRpb247ICAgICAgICAoKiBFbmQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wgKilcbiAgICBtdXRhYmxlIGFzcCA6IGludDsgICAgICAgICAgICAgICAgICAoKiBUaGUgc3RhY2sgcG9pbnRlciBmb3IgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgcnVsZV9sZW4gOiBpbnQ7ICAgICAgICAgICAgICgqIE51bWJlciBvZiByaHMgaXRlbXMgaW4gdGhlIHJ1bGUgKilcbiAgICBtdXRhYmxlIHJ1bGVfbnVtYmVyIDogaW50OyAgICAgICAgICAoKiBSdWxlIG51bWJlciB0byByZWR1Y2UgYnkgKilcbiAgICBtdXRhYmxlIHNwIDogaW50OyAgICAgICAgICAgICAgICAgICAoKiBTYXZlZCBzcCBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6IGludDsgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3RhdGUgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgZXJyZmxhZyA6IGludCB9ICAgICAgICAgICAgICgqIFNhdmVkIGVycm9yIGZsYWcgZm9yIHBhcnNlX2VuZ2luZSAqKVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxudHlwZSBwYXJzZV90YWJsZXMgPVxuICB7IGFjdGlvbnMgOiAocGFyc2VyX2VudiAtPiBPYmoudCkgYXJyYXk7XG4gICAgdHJhbnNsX2NvbnN0IDogaW50IGFycmF5O1xuICAgIHRyYW5zbF9ibG9jayA6IGludCBhcnJheTtcbiAgICBsaHMgOiBzdHJpbmc7XG4gICAgbGVuIDogc3RyaW5nO1xuICAgIGRlZnJlZCA6IHN0cmluZztcbiAgICBkZ290byA6IHN0cmluZztcbiAgICBzaW5kZXggOiBzdHJpbmc7XG4gICAgcmluZGV4IDogc3RyaW5nO1xuICAgIGdpbmRleCA6IHN0cmluZztcbiAgICB0YWJsZXNpemUgOiBpbnQ7XG4gICAgdGFibGUgOiBzdHJpbmc7XG4gICAgY2hlY2sgOiBzdHJpbmc7XG4gICAgZXJyb3JfZnVuY3Rpb24gOiBzdHJpbmcgLT4gdW5pdDtcbiAgICBuYW1lc19jb25zdCA6IHN0cmluZztcbiAgICBuYW1lc19ibG9jayA6IHN0cmluZyB9XG5cbmV4Y2VwdGlvbiBZWWV4aXQgb2YgT2JqLnRcbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuXG50eXBlIHBhcnNlcl9pbnB1dCA9XG4gICAgU3RhcnRcbiAgfCBUb2tlbl9yZWFkXG4gIHwgU3RhY2tzX2dyb3duXzFcbiAgfCBTdGFja3NfZ3Jvd25fMlxuICB8IFNlbWFudGljX2FjdGlvbl9jb21wdXRlZFxuICB8IEVycm9yX2RldGVjdGVkXG5cbnR5cGUgcGFyc2VyX291dHB1dCA9XG4gICAgUmVhZF90b2tlblxuICB8IFJhaXNlX3BhcnNlX2Vycm9yXG4gIHwgR3Jvd19zdGFja3NfMVxuICB8IEdyb3dfc3RhY2tzXzJcbiAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvblxuICB8IENhbGxfZXJyb3JfZnVuY3Rpb25cblxuKCogdG8gYXZvaWQgd2FybmluZ3MgKilcbmxldCBfID0gW1JlYWRfdG9rZW47IFJhaXNlX3BhcnNlX2Vycm9yOyBHcm93X3N0YWNrc18xOyBHcm93X3N0YWNrc18yO1xuICAgICAgICAgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb247IENhbGxfZXJyb3JfZnVuY3Rpb25dXG5cbmV4dGVybmFsIHBhcnNlX2VuZ2luZSA6XG4gICAgcGFyc2VfdGFibGVzIC0+IHBhcnNlcl9lbnYgLT4gcGFyc2VyX2lucHV0IC0+IE9iai50IC0+IHBhcnNlcl9vdXRwdXRcbiAgICA9IFwiY2FtbF9wYXJzZV9lbmdpbmVcIlxuXG5leHRlcm5hbCBzZXRfdHJhY2U6IGJvb2wgLT4gYm9vbFxuICAgID0gXCJjYW1sX3NldF9wYXJzZXJfdHJhY2VcIlxuXG5sZXQgZW52ID1cbiAgeyBzX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgMDtcbiAgICB2X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgKE9iai5yZXByICgpKTtcbiAgICBzeW1iX3N0YXJ0X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN0YWNrc2l6ZSA9IDEwMDtcbiAgICBzdGFja2Jhc2UgPSAwO1xuICAgIGN1cnJfY2hhciA9IDA7XG4gICAgbHZhbCA9IE9iai5yZXByICgpO1xuICAgIHN5bWJfc3RhcnQgPSBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmQgPSBkdW1teV9wb3M7XG4gICAgYXNwID0gMDtcbiAgICBydWxlX2xlbiA9IDA7XG4gICAgcnVsZV9udW1iZXIgPSAwO1xuICAgIHNwID0gMDtcbiAgICBzdGF0ZSA9IDA7XG4gICAgZXJyZmxhZyA9IDAgfVxuXG5sZXQgZ3Jvd19zdGFja3MoKSA9XG4gIGxldCBvbGRzaXplID0gZW52LnN0YWNrc2l6ZSBpblxuICBsZXQgbmV3c2l6ZSA9IG9sZHNpemUgKiAyIGluXG4gIGxldCBuZXdfcyA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAwXG4gIGFuZCBuZXdfdiA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAoT2JqLnJlcHIgKCkpXG4gIGFuZCBuZXdfc3RhcnQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zXG4gIGFuZCBuZXdfZW5kID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3BvcyBpblxuICAgIEFycmF5LmJsaXQgZW52LnNfc3RhY2sgMCBuZXdfcyAwIG9sZHNpemU7XG4gICAgZW52LnNfc3RhY2sgPC0gbmV3X3M7XG4gICAgQXJyYXkuYmxpdCBlbnYudl9zdGFjayAwIG5ld192IDAgb2xkc2l6ZTtcbiAgICBlbnYudl9zdGFjayA8LSBuZXdfdjtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX3N0YXJ0X3N0YWNrIDAgbmV3X3N0YXJ0IDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9zdGFydF9zdGFjayA8LSBuZXdfc3RhcnQ7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9lbmRfc3RhY2sgMCBuZXdfZW5kIDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9lbmRfc3RhY2sgPC0gbmV3X2VuZDtcbiAgICBlbnYuc3RhY2tzaXplIDwtIG5ld3NpemVcblxubGV0IGNsZWFyX3BhcnNlcigpID1cbiAgQXJyYXkuZmlsbCBlbnYudl9zdGFjayAwIGVudi5zdGFja3NpemUgKE9iai5yZXByICgpKTtcbiAgZW52Lmx2YWwgPC0gT2JqLnJlcHIgKClcblxubGV0IGN1cnJlbnRfbG9va2FoZWFkX2Z1biA9IHJlZiAoZnVuIChfIDogT2JqLnQpIC0+IGZhbHNlKVxuXG5sZXQgeXlwYXJzZSB0YWJsZXMgc3RhcnQgbGV4ZXIgbGV4YnVmID1cbiAgbGV0IHJlYyBsb29wIGNtZCBhcmcgPVxuICAgIG1hdGNoIHBhcnNlX2VuZ2luZSB0YWJsZXMgZW52IGNtZCBhcmcgd2l0aFxuICAgICAgUmVhZF90b2tlbiAtPlxuICAgICAgICBsZXQgdCA9IE9iai5yZXByKGxleGVyIGxleGJ1ZikgaW5cbiAgICAgICAgZW52LnN5bWJfc3RhcnQgPC0gbGV4YnVmLmxleF9zdGFydF9wO1xuICAgICAgICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGxvb3AgVG9rZW5fcmVhZCB0XG4gICAgfCBSYWlzZV9wYXJzZV9lcnJvciAtPlxuICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb24gLT5cbiAgICAgICAgbGV0IChhY3Rpb24sIHZhbHVlKSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICAoU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkLCB0YWJsZXMuYWN0aW9ucy4oZW52LnJ1bGVfbnVtYmVyKSBlbnYpXG4gICAgICAgICAgd2l0aCBQYXJzZV9lcnJvciAtPlxuICAgICAgICAgICAgKEVycm9yX2RldGVjdGVkLCBPYmoucmVwciAoKSkgaW5cbiAgICAgICAgbG9vcCBhY3Rpb24gdmFsdWVcbiAgICB8IEdyb3dfc3RhY2tzXzEgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMSAoT2JqLnJlcHIgKCkpXG4gICAgfCBHcm93X3N0YWNrc18yIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzIgKE9iai5yZXByICgpKVxuICAgIHwgQ2FsbF9lcnJvcl9mdW5jdGlvbiAtPlxuICAgICAgICB0YWJsZXMuZXJyb3JfZnVuY3Rpb24gXCJzeW50YXggZXJyb3JcIjtcbiAgICAgICAgbG9vcCBFcnJvcl9kZXRlY3RlZCAoT2JqLnJlcHIgKCkpIGluXG4gIGxldCBpbml0X2FzcCA9IGVudi5hc3BcbiAgYW5kIGluaXRfc3AgPSBlbnYuc3BcbiAgYW5kIGluaXRfc3RhY2tiYXNlID0gZW52LnN0YWNrYmFzZVxuICBhbmQgaW5pdF9zdGF0ZSA9IGVudi5zdGF0ZVxuICBhbmQgaW5pdF9jdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyXG4gIGFuZCBpbml0X2x2YWwgPSBlbnYubHZhbFxuICBhbmQgaW5pdF9lcnJmbGFnID0gZW52LmVycmZsYWcgaW5cbiAgZW52LnN0YWNrYmFzZSA8LSBlbnYuc3AgKyAxO1xuICBlbnYuY3Vycl9jaGFyIDwtIHN0YXJ0O1xuICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gIHRyeVxuICAgIGxvb3AgU3RhcnQgKE9iai5yZXByICgpKVxuICB3aXRoIGV4biAtPlxuICAgIGxldCBjdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyIGluXG4gICAgZW52LmFzcCA8LSBpbml0X2FzcDtcbiAgICBlbnYuc3AgPC0gaW5pdF9zcDtcbiAgICBlbnYuc3RhY2tiYXNlIDwtIGluaXRfc3RhY2tiYXNlO1xuICAgIGVudi5zdGF0ZSA8LSBpbml0X3N0YXRlO1xuICAgIGVudi5jdXJyX2NoYXIgPC0gaW5pdF9jdXJyX2NoYXI7XG4gICAgZW52Lmx2YWwgPC0gaW5pdF9sdmFsO1xuICAgIGVudi5lcnJmbGFnIDwtIGluaXRfZXJyZmxhZztcbiAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgWVlleGl0IHYgLT5cbiAgICAgICAgT2JqLm1hZ2ljIHZcbiAgICB8IF8gLT5cbiAgICAgICAgY3VycmVudF9sb29rYWhlYWRfZnVuIDo9XG4gICAgICAgICAgKGZ1biB0b2sgLT5cbiAgICAgICAgICAgIGlmIE9iai5pc19ibG9jayB0b2tcbiAgICAgICAgICAgIHRoZW4gdGFibGVzLnRyYW5zbF9ibG9jay4oT2JqLnRhZyB0b2spID0gY3Vycl9jaGFyXG4gICAgICAgICAgICBlbHNlIHRhYmxlcy50cmFuc2xfY29uc3QuKE9iai5tYWdpYyB0b2spID0gY3Vycl9jaGFyKTtcbiAgICAgICAgcmFpc2UgZXhuXG5cbmxldCBwZWVrX3ZhbCBlbnYgbiA9XG4gIE9iai5tYWdpYyBlbnYudl9zdGFjay4oZW52LmFzcCAtIG4pXG5cbmxldCBzeW1ib2xfc3RhcnRfcG9zICgpID1cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPD0gMCB0aGVuIGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgc3QgPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgbGV0IGVuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBpZiBzdCA8PiBlbiB0aGVuIHN0IGVsc2UgbG9vcCAoaSAtIDEpXG4gICAgZW5kXG4gIGluXG4gIGxvb3AgZW52LnJ1bGVfbGVuXG5cbmxldCBzeW1ib2xfZW5kX3BvcyAoKSA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbmxldCByaHNfc3RhcnRfcG9zIG4gPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcbmxldCByaHNfZW5kX3BvcyBuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxuXG5sZXQgc3ltYm9sX3N0YXJ0ICgpID0gKHN5bWJvbF9zdGFydF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgc3ltYm9sX2VuZCAoKSA9IChzeW1ib2xfZW5kX3BvcyAoKSkucG9zX2NudW1cbmxldCByaHNfc3RhcnQgbiA9IChyaHNfc3RhcnRfcG9zIG4pLnBvc19jbnVtXG5sZXQgcmhzX2VuZCBuID0gKHJoc19lbmRfcG9zIG4pLnBvc19jbnVtXG5cbmxldCBpc19jdXJyZW50X2xvb2thaGVhZCB0b2sgPVxuICAoIWN1cnJlbnRfbG9va2FoZWFkX2Z1bikoT2JqLnJlcHIgdG9rKVxuXG5sZXQgcGFyc2VfZXJyb3IgKF8gOiBzdHJpbmcpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU2V0cyBvdmVyIG9yZGVyZWQgdHlwZXMgKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUgZWx0XG4gICAgdHlwZSB0XG4gICAgdmFsIGVtcHR5OiB0XG4gICAgdmFsIGFkZDogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCBzaW5nbGV0b246IGVsdCAtPiB0XG4gICAgdmFsIHJlbW92ZTogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCB1bmlvbjogdCAtPiB0IC0+IHRcbiAgICB2YWwgaW50ZXI6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGRpc2pvaW50OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBkaWZmOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBjYXJkaW5hbDogdCAtPiBpbnRcbiAgICB2YWwgZWxlbWVudHM6IHQgLT4gZWx0IGxpc3RcbiAgICB2YWwgbWluX2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWluX2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBtYXhfZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtYXhfZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGNob29zZTogdCAtPiBlbHRcbiAgICB2YWwgY2hvb3NlX29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmQ6IGVsdCAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX29wdDogZWx0IC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgaXRlcjogKGVsdCAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICAgIHZhbCBtYXA6IChlbHQgLT4gZWx0KSAtPiB0IC0+IHRcbiAgICB2YWwgZmlsdGVyOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoZWx0IC0+IGVsdCBvcHRpb24pIC0+IHQgLT4gdFxuICAgIHZhbCBwYXJ0aXRpb246IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0ICogdFxuICAgIHZhbCBzcGxpdDogZWx0IC0+IHQgLT4gdCAqIGJvb2wgKiB0XG4gICAgdmFsIGlzX2VtcHR5OiB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiBlbHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gICAgdmFsIHN1YnNldDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZm9yX2FsbDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZXhpc3RzOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCB0b19saXN0IDogdCAtPiBlbHQgbGlzdFxuICAgIHZhbCBvZl9saXN0OiBlbHQgbGlzdCAtPiB0XG4gICAgdmFsIHRvX3NlcV9mcm9tIDogZWx0IC0+IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogZWx0IFNlcS50IC0+IHQgLT4gdFxuICAgIHZhbCBvZl9zZXEgOiBlbHQgU2VxLnQgLT4gdFxuICBlbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IE9yZC50XG4gICAgdHlwZSB0ID0gRW1wdHkgfCBOb2RlIG9mIHtsOnQ7IHY6ZWx0OyByOnQ7IGg6aW50fVxuXG4gICAgKCogU2V0cyBhcmUgcmVwcmVzZW50ZWQgYnkgYmFsYW5jZWQgYmluYXJ5IHRyZWVzICh0aGUgaGVpZ2h0cyBvZiB0aGVcbiAgICAgICBjaGlsZHJlbiBkaWZmZXIgYnkgYXQgbW9zdCAyICopXG5cbiAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtofSAtPiBoXG5cbiAgICAoKiBDcmVhdGVzIGEgbmV3IG5vZGUgd2l0aCBsZWZ0IHNvbiBsLCB2YWx1ZSB2IGFuZCByaWdodCBzb24gci5cbiAgICAgICBXZSBtdXN0IGhhdmUgYWxsIGVsZW1lbnRzIG9mIGwgPCB2IDwgYWxsIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgbCBhbmQgciBtdXN0IGJlIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgaGVpZ2h0IGZvciBiZXR0ZXIgc3BlZWQuICopXG5cbiAgICBsZXQgY3JlYXRlIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIFNhbWUgYXMgY3JlYXRlLCBidXQgcGVyZm9ybXMgb25lIHN0ZXAgb2YgcmViYWxhbmNpbmcgaWYgbmVjZXNzYXJ5LlxuICAgICAgIEFzc3VtZXMgbCBhbmQgciBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMy5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGNyZWF0ZSBmb3IgYmV0dGVyIHNwZWVkIGluIHRoZSBtb3N0IGZyZXF1ZW50IGNhc2VcbiAgICAgICB3aGVyZSBubyByZWJhbGFuY2luZyBpcyByZXF1aXJlZC4gKilcblxuICAgIGxldCBiYWwgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGlmIGhsID4gaHIgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9bGw7IHY9bHY7IHI9bHJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIGxsIGx2IChjcmVhdGUgbHIgdiByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgcj1scnJ9LT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxybCkgbHJ2IChjcmVhdGUgbHJyIHYgcilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1ybDsgdj1ydjsgcj1ycn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmwpIHJ2IHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyByPXJscn0gLT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybGwpIHJsdiAoY3JlYXRlIHJsciBydiBycilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBJbnNlcnRpb24gb2Ygb25lIGVsZW1lbnQgKilcblxuICAgIGxldCByZWMgYWRkIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdCBlbHNlXG4gICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gYWRkIHggbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHQgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHQgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgc2luZ2xldG9uIHggPSBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCB2IGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGVsZW1lbnRzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGVsZW1lbnQuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9lbGVtZW50IHggbCkgdiByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiAoYWRkX21heF9lbGVtZW50IHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2VsZW1lbnQgdiByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9lbGVtZW50IHYgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyByPWxyOyBoPWxofSwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiAoam9pbiBsciB2IHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgcmwpIHJ2IHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IHJcblxuICAgICgqIFNtYWxsZXN0IGFuZCBncmVhdGVzdCBlbGVtZW50IG9mIGEgc2V0ICopXG5cbiAgICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdCBsXG5cbiAgICBsZXQgcmVjIG1pbl9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHRfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0IHJcblxuICAgIGxldCByZWMgbWF4X2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdF9vcHQgclxuXG4gICAgKCogUmVtb3ZlIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBnaXZlbiBzZXQgKilcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgdiByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgQXNzdW1lIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuICopXG5cbiAgICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBiYWwgdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogU3BsaXR0aW5nLiAgc3BsaXQgeCBzIHJldHVybnMgYSB0cmlwbGUgKGwsIHByZXNlbnQsIHIpIHdoZXJlXG4gICAgICAgIC0gbCBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPCB4XG4gICAgICAgIC0gciBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPiB4XG4gICAgICAgIC0gcHJlc2VudCBpcyBmYWxzZSBpZiBzIGNvbnRhaW5zIG5vIGVsZW1lbnQgZXF1YWwgdG8geCxcbiAgICAgICAgICBvciB0cnVlIGlmIHMgY29udGFpbnMgYW4gZWxlbWVudCBlcXVhbCB0byB4LiAqKVxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIGZhbHNlLCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgdHJ1ZSwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgbHIsIHByZXMsIHJyKVxuXG4gICAgKCogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNldCBvcGVyYXRpb25zICopXG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBjID0gMCB8fCBtZW0geCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgcmVtb3ZlIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSBhcyB0KSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICAgIGxldCBsbCA9IHJlbW92ZSB4IGwgaW5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW5cbiAgICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgcmVjIHVuaW9uIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0MikgLT4gdDJcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMTsgaD1oMX0sIE5vZGV7bD1sMjsgdj12Mjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgaWYgaDIgPSAxIHRoZW4gYWRkIHYyIHMxIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMiwgXywgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYxICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGgxID0gMSB0aGVuIGFkZCB2MSBzMiBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDEsIF8sIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MiAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgaW50ZXIgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8IChfLCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGludGVyIGwxIGwyKSAoaW50ZXIgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChpbnRlciBsMSBsMikgdjEgKGludGVyIHIxIHIyKVxuXG4gICAgKCogU2FtZSBhcyBzcGxpdCwgYnV0IGNvbXB1dGUgdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzXG4gICAgICAgb25seSBpZiB0aGUgcGl2b3QgZWxlbWVudCBpcyBub3QgaW4gdGhlIHNldC4gIFRoZSByaWdodCBzdWJ0cmVlXG4gICAgICAgaXMgY29tcHV0ZWQgb24gZGVtYW5kLiAqKVxuXG4gICAgdHlwZSBzcGxpdF9iaXMgPVxuICAgICAgfCBGb3VuZFxuICAgICAgfCBOb3RGb3VuZCBvZiB0ICogKHVuaXQgLT4gdClcblxuICAgIGxldCByZWMgc3BsaXRfYmlzIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vdEZvdW5kIChFbXB0eSwgKGZ1biAoKSAtPiBFbXB0eSkpXG4gICAgICB8IE5vZGV7bDsgdjsgcjsgX30gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gRm91bmRcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IGwgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobGwsIHJsKSAtPiBOb3RGb3VuZCAobGwsIChmdW4gKCkgLT4gam9pbiAocmwgKCkpIHYgcikpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggciB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsciwgcnIpIC0+IE5vdEZvdW5kIChqb2luIGwgdiBsciwgcnIpXG5cbiAgICBsZXQgcmVjIGRpc2pvaW50IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSB8IChfLCBFbXB0eSkgLT4gdHJ1ZVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgaWYgczEgPT0gczIgdGhlbiBmYWxzZVxuICAgICAgICAgIGVsc2UgbWF0Y2ggc3BsaXRfYmlzIHYxIHQyIHdpdGhcbiAgICAgICAgICAgICAgTm90Rm91bmQobDIsIHIyKSAtPiBkaXNqb2ludCBsMSBsMiAmJiBkaXNqb2ludCByMSAocjIgKCkpXG4gICAgICAgICAgICB8IEZvdW5kIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGRpZmYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoZGlmZiBsMSBsMikgdjEgKGRpZmYgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGRpZmYgbDEgbDIpIChkaWZmIHIxIHIyKVxuXG4gICAgdHlwZSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2YgZWx0ICogdCAqIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCByLCBlKSlcblxuICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgfCAoTW9yZSh2MSwgcjEsIGUxKSwgTW9yZSh2MiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgZWxzZSBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuXG4gICAgbGV0IGNvbXBhcmUgczEgczIgPVxuICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBzMSBFbmQpIChjb25zX2VudW0gczIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIHMxIHMyID1cbiAgICAgIGNvbXBhcmUgczEgczIgPSAwXG5cbiAgICBsZXQgcmVjIHN1YnNldCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIEVtcHR5LCBfIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBfLCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IE5vZGUge2w9bDE7IHY9djE7IHI9cjF9LCAoTm9kZSB7bD1sMjsgdj12Mjsgcj1yMn0gYXMgdDIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCBsMSBsMiAmJiBzdWJzZXQgcjEgcjJcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1sMTsgdj12MTsgcj1FbXB0eTsgaD0wfSkgbDIgJiYgc3Vic2V0IHIxIHQyXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPUVtcHR5OyB2PXYxOyByPXIxOyBoPTB9KSByMiAmJiBzdWJzZXQgbDEgdDJcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBpdGVyIGYgbDsgZiB2OyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBmb2xkIGYgcyBhY2N1ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZm9sZCBmIHIgKGYgdiAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSkgYXMgdCAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdiB0aGVuXG4gICAgICAgICAgICBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIHQgZWxzZSBqb2luIGwnIHYgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiByZilcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGV7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGVsZW1lbnRzX2F1eCAodiA6OiBlbGVtZW50c19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgZWxlbWVudHMgcyA9XG4gICAgICBlbGVtZW50c19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9lbHRcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2VsdF9vcHRcblxuICAgIGxldCByZWMgZmluZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdlxuICAgICAgICAgIGVsc2UgZmluZCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX29wdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFNvbWUgdlxuICAgICAgICAgIGVsc2UgZmluZF9vcHQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCB0cnlfam9pbiBsIHYgciA9XG4gICAgICAoKiBbam9pbiBsIHYgcl0gY2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gKGVsZW1lbnRzIG9mIGwgPCB2IDxcbiAgICAgICAgIGVsZW1lbnRzIG9mIHIpOyB1c2UgW3RyeV9qb2luIGwgdiByXSB3aGVuIHRoaXMgcHJvcGVydHkgbWF5XG4gICAgICAgICBub3QgaG9sZCwgYnV0IHlvdSBob3BlIGl0IGRvZXMgaG9sZCBpbiB0aGUgY29tbW9uIGNhc2UgKilcbiAgICAgIGlmIChsID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgKG1heF9lbHQgbCkgdiA8IDApXG4gICAgICAmJiAociA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIHYgKG1pbl9lbHQgcikgPCAwKVxuICAgICAgdGhlbiBqb2luIGwgdiByXG4gICAgICBlbHNlIHVuaW9uIGwgKGFkZCB2IHIpXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcblxuICAgIGxldCB0cnlfY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gdHJ5X2pvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgIGJlZ2luIG1hdGNoIHYnIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHYnIC0+XG4gICAgICAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICB0cnlfY29uY2F0IGwnIHInXG4gICAgICAgICBlbmRcblxuICAgIGxldCBvZl9zb3J0ZWRfbGlzdCBsID1cbiAgICAgIGxldCByZWMgc3ViIG4gbCA9XG4gICAgICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgICAgICB8IDAsIGwgLT4gRW1wdHksIGxcbiAgICAgICAgfCAxLCB4MCA6OiBsIC0+IE5vZGUge2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX0sIGxcbiAgICAgICAgfCAyLCB4MCA6OiB4MSA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxOyByPUVtcHR5OyBoPTJ9LCBsXG4gICAgICAgIHwgMywgeDAgOjogeDEgOjogeDIgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTtcbiAgICAgICAgICAgICAgICAgcj1Ob2Rle2w9RW1wdHk7IHY9eDI7IHI9RW1wdHk7IGg9MX07IGg9Mn0sIGxcbiAgICAgICAgfCBuLCBsIC0+XG4gICAgICAgICAgbGV0IG5sID0gbiAvIDIgaW5cbiAgICAgICAgICBsZXQgbGVmdCwgbCA9IHN1YiBubCBsIGluXG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IG1pZCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgcmlnaHQsIGwgPSBzdWIgKG4gLSBubCAtIDEpIGwgaW5cbiAgICAgICAgICAgIGNyZWF0ZSBsZWZ0IG1pZCByaWdodCwgbFxuICAgICAgaW5cbiAgICAgIGZzdCAoc3ViIChMaXN0Lmxlbmd0aCBsKSBsKVxuXG4gICAgbGV0IHRvX2xpc3QgPSBlbGVtZW50c1xuXG4gICAgbGV0IG9mX2xpc3QgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZW1wdHlcbiAgICAgIHwgW3gwXSAtPiBzaW5nbGV0b24geDBcbiAgICAgIHwgW3gwOyB4MV0gLT4gYWRkIHgxIChzaW5nbGV0b24geDApXG4gICAgICB8IFt4MDsgeDE7IHgyXSAtPiBhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzXSAtPiBhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzOyB4NF0gLT4gYWRkIHg0IChhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSkpXG4gICAgICB8IF8gLT4gb2Zfc29ydGVkX2xpc3QgKExpc3Quc29ydF91bmlxIE9yZC5jb21wYXJlIGwpXG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIHMgeCAtPiBhZGQgeCBzKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgYyA9IHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID0gcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBzID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBzIGMgPSBtYXRjaCBzIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgcjsgdjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBzIEVuZClcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISsnYSB0XG4gICAgdmFsIGVtcHR5OiAnYSB0XG4gICAgdmFsIGFkZDoga2V5IC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGRfdG9fbGlzdDoga2V5IC0+ICdhIC0+ICdhIGxpc3QgdCAtPiAnYSBsaXN0IHRcbiAgICB2YWwgdXBkYXRlOiBrZXkgLT4gKCdhIG9wdGlvbiAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBzaW5nbGV0b246IGtleSAtPiAnYSAtPiAnYSB0XG4gICAgdmFsIHJlbW92ZToga2V5IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBtZXJnZTpcbiAgICAgIChrZXkgLT4gJ2Egb3B0aW9uIC0+ICdiIG9wdGlvbiAtPiAnYyBvcHRpb24pIC0+XG4gICAgICAnYSB0IC0+ICdiIHQgLT4gJ2MgdFxuICAgIHZhbCB1bmlvbjogKGtleSAtPiAnYSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGNhcmRpbmFsOiAnYSB0IC0+IGludFxuICAgIHZhbCBiaW5kaW5nczogJ2EgdCAtPiAoa2V5ICogJ2EpIGxpc3RcbiAgICB2YWwgbWluX2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtaW5fYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgbWF4X2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtYXhfYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgY2hvb3NlX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBmaW5kOiBrZXkgLT4gJ2EgdCAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDoga2V5IC0+ICdhIHQgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2ZpcnN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfbGFzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIG1hcDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgbWFwaTogKGtleSAtPiAnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIGZpbHRlcjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGtleSAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBwYXJ0aXRpb246IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0ICogJ2EgdFxuICAgIHZhbCBzcGxpdDoga2V5IC0+ICdhIHQgLT4gJ2EgdCAqICdhIG9wdGlvbiAqICdhIHRcbiAgICB2YWwgaXNfZW1wdHk6ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBtZW06IGtleSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZXF1YWw6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBjb21wYXJlOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIGZvcl9hbGw6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGV4aXN0czogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gICAgdmFsIG9mX2xpc3QgOiAoa2V5ICogJ2EpIGxpc3QgLT4gJ2EgdFxuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fcmV2X3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfZnJvbSA6IGtleSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgPSBzdHJ1Y3RcblxuICAgIHR5cGUga2V5ID0gT3JkLnRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUgb2Yge2w6J2EgdDsgdjprZXk7IGQ6J2E7IHI6J2EgdDsgaDppbnR9XG5cbiAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtofSAtPiBoXG5cbiAgICBsZXQgY3JlYXRlIGwgeCBkIHIgPVxuICAgICAgbGV0IGhsID0gaGVpZ2h0IGwgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgc2luZ2xldG9uIHggZCA9IE5vZGV7bD1FbXB0eTsgdj14OyBkOyByPUVtcHR5OyBoPTF9XG5cbiAgICBsZXQgYmFsIGwgeCBkIHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGlmIGhsID4gaHIgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIGxsIGx2IGxkIChjcmVhdGUgbHIgeCBkIHIpXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1scmw7IHY9bHJ2OyBkPWxyZDsgcj1scnJ9LT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxkIGxybCkgbHJ2IGxyZCAoY3JlYXRlIGxyciB4IGQgcilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybCkgcnYgcmQgcnJcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPXJsbDsgdj1ybHY7IGQ9cmxkOyByPXJscn0gLT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsbCkgcmx2IHJsZCAoY3JlYXRlIHJsciBydiByZCBycilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBFbXB0eSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBhZGQgeCBkYXRhID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gYWRkIHggZGF0YSBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IGFkZCB4IGRhdGEgciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgZmluZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gZFxuICAgICAgICAgIGVsc2UgZmluZCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX29wdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFNvbWUgZFxuICAgICAgICAgIGVsc2UgZmluZF9vcHQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBjID0gMCB8fCBtZW0geCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge2x9IC0+IG1pbl9iaW5kaW5nIGxcblxuICAgIGxldCByZWMgbWluX2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfS0+IG1pbl9iaW5kaW5nX29wdCBsXG5cbiAgICBsZXQgcmVjIG1heF9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZyByXG5cbiAgICBsZXQgcmVjIG1heF9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmdfb3B0IHJcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAucmVtb3ZlX21pbl9lbHRcIlxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyByfSAtPiByXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJhbCAocmVtb3ZlX21pbl9iaW5kaW5nIGwpIHYgZCByXG5cbiAgICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGJhbCB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCByZWMgcmVtb3ZlIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IChOb2RlIHtsOyB2OyBkOyByfSBhcyBtKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHJlbW92ZSB4IGwgaW4gaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSByZW1vdmUgeCByIGluIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIHVwZGF0ZSB4IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIGYgTm9uZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVtcHR5XG4gICAgICAgICAgfCBTb21lIGRhdGEgLT4gTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgICAgIGVuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGJlZ2luXG4gICAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBtZXJnZSBsIHJcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZW5kIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gdXBkYXRlIHggZiBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHVwZGF0ZSB4IGYgciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCBhZGRfdG9fbGlzdCB4IGRhdGEgbSA9XG4gICAgICBsZXQgYWRkID0gZnVuY3Rpb24gTm9uZSAtPiBTb21lIFtkYXRhXSB8IFNvbWUgbCAtPiBTb21lIChkYXRhIDo6IGwpIGluXG4gICAgICB1cGRhdGUgeCBhZGQgbVxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGl0ZXIgZiBsOyBmIHYgZDsgaXRlciBmIHJcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXBpIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwaSBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBtIGFjY3UgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBmb2xkIGYgciAoZiB2IGQgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIGsgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQga2V5cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBrZXkuXG5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9iaW5kaW5nIGsgeCBsKSB2IGQgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgbCB2IGQgKGFkZF9tYXhfYmluZGluZyBrIHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IGQgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fYmluZGluZyB2IGQgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfYmluZGluZyB2IGQgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyOyBoPWxofSxcbiAgICAgICAgIE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgbGQgKGpvaW4gbHIgdiBkIHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgZCBybCkgcnYgcmQgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgZCByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgam9pbiB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCBjb25jYXRfb3Jfam9pbiB0MSB2IGQgdDIgPVxuICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICB8IFNvbWUgZCAtPiBqb2luIHQxIHYgZCB0MlxuICAgICAgfCBOb25lIC0+IGNvbmNhdCB0MSB0MlxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIE5vbmUsIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgU29tZSBkLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IGQgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGQgbHIsIHByZXMsIHJyKVxuXG4gICAgbGV0IHJlYyBtZXJnZSBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LCBfKSB3aGVuIGgxID49IGhlaWdodCBzMiAtPlxuICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MSAoZiB2MSAoU29tZSBkMSkgZDIpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCAoXywgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMn0pIC0+XG4gICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYyIChmIHYyIGQxIChTb21lIGQyKSkgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBhc3NlcnQgZmFsc2VcblxuICAgIGxldCByZWMgdW5pb24gZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICB8IChFbXB0eSwgcykgfCAocywgRW1wdHkpIC0+IHNcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LFxuICAgICAgICAgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYxIGQxIHJcbiAgICAgICAgICAgIHwgU29tZSBkMiAtPiBjb25jYXRfb3Jfam9pbiBsIHYxIChmIHYxIGQxIGQyKSByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYyIGQyIHJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBjb25jYXRfb3Jfam9pbiBsIHYyIChmIHYyIGQxIGQyKSByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdmQgdGhlbiBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIG0gZWxzZSBqb2luIGwnIHYgZCByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbZl0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBmdmQgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZnZkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBkJyAtPiBqb2luIGwnIHYgZCcgcidcbiAgICAgICAgICAgIHwgTm9uZSAtPiBjb25jYXQgbCcgcidcbiAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdmRcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgZCBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IGQgcmYpXG5cbiAgICB0eXBlICdhIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBrZXkgKiAnYSAqICdhIHQgKiAnYSBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gbSBlID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIGQsIHIsIGUpKVxuXG4gICAgbGV0IGNvbXBhcmUgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGNvbXBhcmVfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCBlcXVhbCBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBlcXVhbF9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IHRydWVcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gZmFsc2VcbiAgICAgICAgfCAoXywgRW5kKSAtPiBmYWxzZVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBPcmQuY29tcGFyZSB2MSB2MiA9IDAgJiYgY21wIGQxIGQyICYmXG4gICAgICAgICAgICBlcXVhbF9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGVxdWFsX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgYmluZGluZ3NfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJpbmRpbmdzX2F1eCAoKHYsIGQpIDo6IGJpbmRpbmdzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBiaW5kaW5ncyBzID1cbiAgICAgIGJpbmRpbmdzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2JpbmRpbmdcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2JpbmRpbmdfb3B0XG5cbiAgICBsZXQgdG9fbGlzdCA9IGJpbmRpbmdzXG4gICAgbGV0IG9mX2xpc3QgYnMgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIG0gKGssIHYpIC0+IGFkZCBrIHYgbSkgZW1wdHkgYnNcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoayx2KSAtPiBhZGQgayB2IG0pIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+IFNlcS5Db25zICgoayx2KSwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgbSA9XG4gICAgICBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBtIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IGQ7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGQsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT5cbiAgICAgICAgICBTZXEuQ29ucyAoKGssdiksIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9XG4gICAgICByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IG0gPVxuICAgICAgbGV0IHJlYyBhdXggbG93IG0gYyA9IG1hdGNoIG0gd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgZCwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIGQsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IG0gRW5kKVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBjIDogJ2EgbGlzdDsgbXV0YWJsZSBsZW4gOiBpbnQ7IH1cblxuZXhjZXB0aW9uIEVtcHR5XG5cbmxldCBjcmVhdGUgKCkgPSB7IGMgPSBbXTsgbGVuID0gMDsgfVxuXG5sZXQgY2xlYXIgcyA9IHMuYyA8LSBbXTsgcy5sZW4gPC0gMFxuXG5sZXQgY29weSBzID0geyBjID0gcy5jOyBsZW4gPSBzLmxlbjsgfVxuXG5sZXQgcHVzaCB4IHMgPSBzLmMgPC0geCA6OiBzLmM7IHMubGVuIDwtIHMubGVuICsgMVxuXG5sZXQgcG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgaGRcbiAgfCBbXSAgICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHBvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBTb21lIGhkXG4gIHwgW10gICAgIC0+IE5vbmVcblxubGV0IGRyb3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgX2hkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMVxuICB8IFtdIC0+IHJhaXNlIEVtcHR5XG5cbmxldCB0b3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gaGRcbiAgfCBbXSAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgdG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBTb21lIGhkXG4gIHwgW10gICAgLT4gTm9uZVxuXG5sZXQgaXNfZW1wdHkgcyA9IChzLmMgPSBbXSlcblxubGV0IGxlbmd0aCBzID0gcy5sZW5cblxubGV0IGl0ZXIgZiBzID0gTGlzdC5pdGVyIGYgcy5jXG5cbmxldCBmb2xkIGYgYWNjIHMgPSBMaXN0LmZvbGRfbGVmdCBmIGFjYyBzLmNcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gTGlzdC50b19zZXEgcy5jXG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcyA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcyBnO1xuICBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEZyYW5jb2lzIFBvdHRpZXIsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgIEplcmVtaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG50eXBlICdhIGNlbGwgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgeyBjb250ZW50OiAnYTsgbXV0YWJsZSBuZXh0OiAnYSBjZWxsIH1cblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIGxlbmd0aDogaW50O1xuICBtdXRhYmxlIGZpcnN0OiAnYSBjZWxsO1xuICBtdXRhYmxlIGxhc3Q6ICdhIGNlbGxcbn1cblxubGV0IGNyZWF0ZSAoKSA9IHtcbiAgbGVuZ3RoID0gMDtcbiAgZmlyc3QgPSBOaWw7XG4gIGxhc3QgPSBOaWxcbn1cblxubGV0IGNsZWFyIHEgPVxuICBxLmxlbmd0aCA8LSAwO1xuICBxLmZpcnN0IDwtIE5pbDtcbiAgcS5sYXN0IDwtIE5pbFxuXG5sZXQgYWRkIHggcSA9XG4gIGxldCBjZWxsID0gQ29ucyB7XG4gICAgY29udGVudCA9IHg7XG4gICAgbmV4dCA9IE5pbFxuICB9IGluXG4gIG1hdGNoIHEubGFzdCB3aXRoXG4gIHwgTmlsIC0+XG4gICAgcS5sZW5ndGggPC0gMTtcbiAgICBxLmZpcnN0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcbiAgfCBDb25zIGxhc3QgLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCArIDE7XG4gICAgbGFzdC5uZXh0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcblxubGV0IHB1c2ggPVxuICBhZGRcblxubGV0IHBlZWsgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gY29udGVudFxuXG5sZXQgcGVla19vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBTb21lIGNvbnRlbnRcblxubGV0IHRvcCA9XG4gIHBlZWtcblxubGV0IHRha2UgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBjb250ZW50XG5cbmxldCB0YWtlX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBTb21lIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBTb21lIGNvbnRlbnRcblxubGV0IHBvcCA9XG4gIHRha2VcblxubGV0IGNvcHkgPVxuICBsZXQgcmVjIGNvcHkgcV9yZXMgcHJldiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBxX3Jlcy5sYXN0IDwtIHByZXY7IHFfcmVzXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgcmVzID0gQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSBpblxuICAgICAgYmVnaW4gbWF0Y2ggcHJldiB3aXRoXG4gICAgICB8IE5pbCAtPiBxX3Jlcy5maXJzdCA8LSByZXNcbiAgICAgIHwgQ29ucyBwIC0+IHAubmV4dCA8LSByZXNcbiAgICAgIGVuZDtcbiAgICAgIGNvcHkgcV9yZXMgcmVzIG5leHRcbiAgaW5cbiAgZnVuIHEgLT4gY29weSB7IGxlbmd0aCA9IHEubGVuZ3RoOyBmaXJzdCA9IE5pbDsgbGFzdCA9IE5pbCB9IE5pbCBxLmZpcnN0XG5cbmxldCBpc19lbXB0eSBxID1cbiAgcS5sZW5ndGggPSAwXG5cbmxldCBsZW5ndGggcSA9XG4gIHEubGVuZ3RoXG5cbmxldCBpdGVyID1cbiAgbGV0IHJlYyBpdGVyIGYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGYgY29udGVudDtcbiAgICAgIGl0ZXIgZiBuZXh0XG4gIGluXG4gIGZ1biBmIHEgLT4gaXRlciBmIHEuZmlyc3RcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGZvbGQgZiBhY2N1IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IGFjY3VcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGNvbnRlbnQgaW5cbiAgICAgIGZvbGQgZiBhY2N1IG5leHRcbiAgaW5cbiAgZnVuIGYgYWNjdSBxIC0+IGZvbGQgZiBhY2N1IHEuZmlyc3RcblxubGV0IHRyYW5zZmVyIHExIHEyID1cbiAgaWYgcTEubGVuZ3RoID4gMCB0aGVuXG4gICAgbWF0Y2ggcTIubGFzdCB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMS5sZW5ndGg7XG4gICAgICBxMi5maXJzdCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG4gICAgfCBDb25zIGxhc3QgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMi5sZW5ndGggKyBxMS5sZW5ndGg7XG4gICAgICBsYXN0Lm5leHQgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHEgPVxuICBsZXQgcmVjIGF1eCBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgfCBOaWwgLT4gU2VxLk5pbFxuICAgIHwgQ29ucyB7IGNvbnRlbnQ9eDsgbmV4dDsgfSAtPiBTZXEuQ29ucyAoeCwgYXV4IG5leHQpXG4gIGluXG4gIGF1eCBxLmZpcnN0XG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcSA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcSBnO1xuICBxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICBQaWVycmUgV2VpcyBhbmQgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4dGVuc2libGUgYnVmZmVycyAqKVxuXG4oKiBUaGUgW2lubmVyX2J1ZmZlcl0gdHlwZSBlbnN1cmVzIHRoYXQgdGhlIFtsZW5ndGhdIGFuZCBbYnVmZmVyXSBmaWVsZHMgYXJlXG4gICBhbHdheXMgc3luY2hyb25pemVkLCBbbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGJ1ZmZlcl0sIGV2ZW4gaW4gcHJlc2VuY2VcbiAgIG9mIGRhdGEgcmFjZXMuXG4qKVxudHlwZSBpbm5lcl9idWZmZXIgPSB7XG4gIGJ1ZmZlcjogYnl0ZXM7XG4gIGxlbmd0aDogaW50O1xufVxuXG50eXBlIHQgPVxuIHttdXRhYmxlIGlubmVyIDogaW5uZXJfYnVmZmVyO1xuICBtdXRhYmxlIHBvc2l0aW9uIDogaW50O1xuICBpbml0aWFsX2J1ZmZlciA6IGJ5dGVzfVxuKCogSW52YXJpYW50czogYWxsIHBhcnRzIG9mIHRoZSBjb2RlIHByZXNlcnZlIHRoZSBpbnZhcmlhbnRzIHRoYXQ6XG4gICAtIFtpbm5lci5sZW5ndGggPSBCeXRlcy5sZW5ndGggaW5uZXIuYnVmZmVyXVxuICAgSW4gYWJzZW5jZSBvZiBkYXRhIHJhY2VzLCB3ZSBhbHNvIGhhdmVcbiAgIC0gWzAgPD0gYi5wb3NpdGlvbiA8PSBiLmlubmVyLmxlbmd0aF1cblxuICAgTm90ZSBpbiBwYXJ0aWN1bGFyIHRoYXQgW2IucG9zaXRpb24gPSBiLmlubmVyLmxlbmd0aF0gaXMgbGVnYWwsXG4gICBpdCBtZWFucyB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbCBhbmQgd2lsbCBoYXZlIHRvIGJlIGV4dGVuZGVkXG4gICBiZWZvcmUgYW55IGZ1cnRoZXIgYWRkaXRpb24uICopXG5cbmxldCBjcmVhdGUgbiA9XG4gbGV0IG4gPSBpZiBuIDwgMSB0aGVuIDEgZWxzZSBuIGluXG4gbGV0IG4gPSBpZiBuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGVsc2UgbiBpblxuIGxldCBzID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiB7IGlubmVyID0geyBidWZmZXIgPSBzOyBsZW5ndGggPSBufTsgcG9zaXRpb24gPSAwOyBpbml0aWFsX2J1ZmZlciA9IHN9XG5cbmxldCBjb250ZW50cyBiID0gQnl0ZXMuc3ViX3N0cmluZyBiLmlubmVyLmJ1ZmZlciAwIGIucG9zaXRpb25cbmxldCB0b19ieXRlcyBiID0gQnl0ZXMuc3ViIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgc3ViIGIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBiLnBvc2l0aW9uIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuc3ViXCJcbiAgZWxzZSBCeXRlcy5zdWJfc3RyaW5nIGIuaW5uZXIuYnVmZmVyIG9mcyBsZW5cblxuXG5sZXQgYmxpdCBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IHNyYy5wb3NpdGlvbiAtIGxlblxuICAgICAgICAgICAgIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKEJ5dGVzLmxlbmd0aCBkc3QpIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYmxpdFwiXG4gIGVsc2VcbiAgICBCeXRlcy5ibGl0IHNyYy5pbm5lci5idWZmZXIgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuXG5cblxubGV0IG50aCBiIG9mcyA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gcG9zaXRpb24gfHwgcG9zaXRpb24gPiBsZW5ndGggdGhlblxuICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZSBCeXRlcy51bnNhZmVfZ2V0IGJ1ZmZlciBvZnNcblxuXG5sZXQgbGVuZ3RoIGIgPSBiLnBvc2l0aW9uXG5cbmxldCBjbGVhciBiID0gYi5wb3NpdGlvbiA8LSAwXG5cbmxldCByZXNldCBiID1cbiAgYi5wb3NpdGlvbiA8LSAwO1xuICBsZXQgaW5uZXIgPVxuICAgIHsgYnVmZmVyID0gYi5pbml0aWFsX2J1ZmZlcjsgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGIuaW5pdGlhbF9idWZmZXIgfVxuICBpblxuICBiLmlubmVyIDwtIGlubmVyXG5cbigqIFtyZXNpemUgYiBtb3JlXSBlbnN1cmVzIHRoYXQgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIuaW5uZXIubGVuZ3RoXSBob2xkc1xuICAgYnkgZHluYW1pY2FsbHkgZXh0ZW5kaW5nIFtiLmlubmVyXSBpZiBuZWNlc3NhcnkgLS0gYW5kIHRodXNcbiAgIGluY3JlYXNpbmcgW2IuaW5uZXIubGVuZ3RoXS5cbiopXG5sZXQgcmVzaXplIGIgbW9yZSA9XG4gIGxldCBvbGRfcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQgb2xkX2xlbiA9IGIuaW5uZXIubGVuZ3RoIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIG9sZF9sZW4gaW5cbiAgd2hpbGUgb2xkX3BvcyArIG1vcmUgPiAhbmV3X2xlbiBkbyBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlbiBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgaWYgb2xkX3BvcyArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgdGhlbiBuZXdfbGVuIDo9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2UgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIlxuICBlbmQ7XG4gIGxldCBuZXdfYnVmZmVyID0gQnl0ZXMuY3JlYXRlICFuZXdfbGVuIGluXG4gICgqIFBSIzYxNDg6IGxldCdzIGtlZXAgdXNpbmcgW2JsaXRdIHJhdGhlciB0aGFuIFt1bnNhZmVfYmxpdF0gaW5cbiAgICAgdGhpcyB0cmlja3kgZnVuY3Rpb24gdGhhdCBpcyBzbG93IGFueXdheS4gKilcbiAgQnl0ZXMuYmxpdCBiLmlubmVyLmJ1ZmZlciAwIG5ld19idWZmZXIgMCBiLnBvc2l0aW9uO1xuICBiLmlubmVyIDwtIHsgYnVmZmVyID0gbmV3X2J1ZmZlcjsgbGVuZ3RoID0gIW5ld19sZW4gfVxuXG4oKiBOb3RlOlxuICAgIFNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBiZWxvdyBoYXZlIGEgZmFzdCBwYXRoIHdoZW4gdGhlIGlubmVyXG4gIGJ1ZmZlciBkb2Vzbid0IG5lZWQgdG8gYmUgZXh0ZW5kZWQuXG4gICAgSW4gdGhpcyBjYXNlLCBpdCBpcyBwb3NzaWJsZSB0byB1c2UgdW5zYWZlIGFjY2Vzc2VzIG9uIHRoZVxuICBjb250ZW50cyBvZiB0aGUgW2lubmVyXSBmaWVsZCBzaW5jZSBpdHMgZmllbGRzIGFyZSBpbW11dGFibGUuXG4gIEluIHByZXNlbmNlIG9mIGRhdGEgcmFjZXMsIHdlIG1heSBhY2Nlc3MgdGhlIHdyb25nIGlubmVyIGJ1ZmZlciwgYnV0IHdlXG4gIHdpbGwgdXNlIHRoaXMgYnVmZmVyIHNhZmVseS5cbiAgQXMgc29vbiBhcyB3ZSBuZWVkIHRvIHJlc2l6ZSB0aGUgYnVmZmVyLCB3ZSBmYWxsIGJhY2sgdG8gc2FmZSBhY2Nlc3Nlcy5cbiopXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBpZiBwb3MgPj0gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDE7XG4gICAgQnl0ZXMuc2V0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gY1xuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbmxldCB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXggPSA0XG5sZXQgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heCA9IDRcblxubGV0IHJlYyBhZGRfdXRmXzhfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfOF91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfOF91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IHJlYyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzE2YmVfdWNoYXIgYi5pbm5lci5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZsZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZsZV91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCBhZGRfc3Vic3RyaW5nIGIgcyBvZmZzZXQgbGVuID1cbiAgaWYgb2Zmc2V0IDwgMCB8fCBsZW4gPCAwIHx8IG9mZnNldCA+IFN0cmluZy5sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9zdWJzdHJpbmcvYWRkX3N1YmJ5dGVzXCI7XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiBsZW47XG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcyBvZmZzZXQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW5cbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgb2Zmc2V0IGJ1ZmZlciBwb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3ViYnl0ZXMgYiBzIG9mZnNldCBsZW4gPVxuICBhZGRfc3Vic3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcykgb2Zmc2V0IGxlblxuXG5sZXQgYWRkX3N0cmluZyBiIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7IGxlbmd0aH0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgbGVuO1xuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIHMgMCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbjtcbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgMCBidWZmZXIgcG9zaXRpb24gbGVuO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2J5dGVzIGIgcyA9IGFkZF9zdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKVxuXG5sZXQgYWRkX2J1ZmZlciBiIGJzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnMuaW5uZXIuYnVmZmVyIDAgYnMucG9zaXRpb25cblxuKCogdGhpcyAocHJpdmF0ZSkgZnVuY3Rpb24gY291bGQgbW92ZSBpbnRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG5sZXQgcmVhbGx5X2lucHV0X3VwX3RvIGljIGJ1ZiBvZnMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWQgPVxuICAgIGlmIHRvX3JlYWQgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBpbnB1dCBpYyBidWYgb2ZzIHRvX3JlYWQgaW5cbiAgICAgIGlmIHIgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBhbHJlYWR5X3JlYWQgKyByIGluXG4gICAgICAgIGxldCBvZnMgPSBvZnMgKyByIGluXG4gICAgICAgIGxldCB0b19yZWFkID0gdG9fcmVhZCAtIHIgaW5cbiAgICAgICAgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW4gbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZDowIH5vZnMgfnRvX3JlYWQ6bGVuXG5cblxubGV0IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiA9XG4gIGlmIGIucG9zaXRpb24gKyBsZW4gPiBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgbGV0IG4gPSByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW4gaW5cbiAgYi5wb3NpdGlvbiA8LSBiLnBvc2l0aW9uICsgbjtcbiAgblxuXG5sZXQgYWRkX2NoYW5uZWwgYiBpYyBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuICAgKCogUFIjNTAwNCAqKVxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9jaGFubmVsXCI7XG4gIGxldCBuID0gdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuIGluXG4gICgqIEl0IGlzIGludGVudGlvbmFsIHRoYXQgYSBjb25zdW1lciBjYXRjaGluZyBFbmRfb2ZfZmlsZVxuICAgICB3aWxsIHNlZSB0aGUgZGF0YSB3cml0dGVuIChzZWUgIzY3MTksICM3MTM2KS4gKilcbiAgaWYgbiA8IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAoKVxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgY2xvc2luZyA9IGZ1bmN0aW9uXG4gIHwgJygnIC0+ICcpJ1xuICB8ICd7JyAtPiAnfSdcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgaWYgcy5baV0gPSBvcGVuaW5nIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltIGVsc2VcbiAgICBpZiBzLltpXSA9IGNsb3NpbmcgdGhlblxuICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW0gaW5cbiAgYWR2YW5jZSBrIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIGxpbSBlbHNlXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIHwgJ18nIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICB8IF8gLT4gaSBpblxuICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0IGxpbSA9XG4gIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICgqIFBhcmVudGhlc2l6ZWQgaWRlbnQgPyAqKVxuICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX2Nsb3NpbmcgYyAoY2xvc2luZyBjKSAwIHMgbmV3X3N0YXJ0IGluXG4gICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAoKiBSZWd1bGFyIGlkZW50ICopXG4gIHwgXyAtPlxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgaW5cbiAgICAgaWYgc3RvcCA9IHN0YXJ0IHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpLCBzdG9wXG5cbigqIFN1YnN0aXR1dGUgJGlkZW50LCAkKGlkZW50KSwgb3IgJHtpZGVudH0gaW4gcyxcbiAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBiIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJyQnIC0+XG4gICAgICAgICBsZXQgaiA9IGkgKyAxIGluXG4gICAgICAgICBiZWdpbiBtYXRjaCBmaW5kX2lkZW50IHMgaiBsaW0gd2l0aFxuICAgICAgICAgfCBpZGVudCwgbmV4dF9pIC0+XG4gICAgICAgICAgIGFkZF9zdHJpbmcgYiAoZiBpZGVudCk7XG4gICAgICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICBhZGRfY2hhciBiICckJztcbiAgICAgICAgICAgc3Vic3QgJyAnIGpcbiAgICAgICAgIGVuZFxuICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXM7XG4gICAgICAgICBpZiBjdXJyZW50IDw+ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gIHN1YnN0ICcgJyAwXG5cbmxldCB0cnVuY2F0ZSBiIGxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci50cnVuY2F0ZVwiXG4gICAgZWxzZVxuICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IGFkZF9zZXEgYiBzZXEgPSBTZXEuaXRlciAoYWRkX2NoYXIgYikgc2VxXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBiID0gY3JlYXRlIDMyIGluXG4gIGFkZF9zZXEgYiBpO1xuICBiXG5cbigqKiB7NiBCaW5hcnkgZW5jb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQxNiA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcblxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuXG5sZXQgYWRkX2ludDggYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgMSBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMTtcbiAgICBzZXRfaW50OCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIHhcbiAgKSBlbHNlXG4gICAgdW5zYWZlX3NldF9pbnQ4IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDIgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDI7XG4gICAgc2V0X2ludDE2IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDE2IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDMyX25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDQgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDQ7XG4gICAgc2V0X2ludDMyIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDMyIGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDY0X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDggaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDg7XG4gICAgc2V0X2ludDY0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDY0IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X2xlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQxNl9iZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG5cbmxldCBhZGRfaW50MzJfbGUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDMyX2JlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeClcblxubGV0IGFkZF9pbnQ2NF9sZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50NjRfYmUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuXG5sZXQgYWRkX3VpbnQ4ID0gYWRkX2ludDhcbmxldCBhZGRfdWludDE2X25lID0gYWRkX2ludDE2X25lXG5sZXQgYWRkX3VpbnQxNl9sZSA9IGFkZF9pbnQxNl9sZVxubGV0IGFkZF91aW50MTZfYmUgPSBhZGRfaW50MTZfYmVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIFBhc2NhbCBDdW9xLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTUgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0XG5leHRlcm5hbCBjcmVhdGU6IHVuaXQgLT4gdCA9IFwiY2FtbF9tbF9tdXRleF9uZXdcIlxuZXh0ZXJuYWwgbG9jazogdCAtPiB1bml0ID0gXCJjYW1sX21sX211dGV4X2xvY2tcIlxuZXh0ZXJuYWwgdHJ5X2xvY2s6IHQgLT4gYm9vbCA9IFwiY2FtbF9tbF9tdXRleF90cnlfbG9ja1wiXG5leHRlcm5hbCB1bmxvY2s6IHQgLT4gdW5pdCA9IFwiY2FtbF9tbF9tdXRleF91bmxvY2tcIlxuXG4oKiBwcml2YXRlIHJlLWV4cG9ydCAqKVxuZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuXG4oKiBjYW5ub3QgaW5saW5lLCBvdGhlcndpc2UgZmxhbWJkYSBtaWdodCBtb3ZlIGNvZGUgYXJvdW5kLiAqKVxubGV0W0BpbmxpbmUgbmV2ZXJdIHByb3RlY3QgbSBmID1cbiAgbG9jayBtO1xuICBtYXRjaCBmKCkgd2l0aFxuICB8IHggLT5cbiAgICB1bmxvY2sgbTsgeFxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgKCogTk9URTogW3VubG9ja10gZG9lcyBub3QgcG9sbCBmb3IgYXN5bmNocm9ub3VzIGV4Y2VwdGlvbnMgKilcbiAgICB1bmxvY2sgbTtcbiAgICByZXJhaXNlIGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgQ29sbMOoZ2UgZGUgRnJhbmNlIGFuZCBJTlJJQSBQYXJpcyAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBTZW1hcGhvcmVzICopXG5cbnR5cGUgc2VtID0ge1xuICBtdXQ6IE11dGV4LnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICgqIHByb3RlY3RzIFt2XSAqKVxuICBtdXRhYmxlIHY6IGludDsgICAgICAgICAgICAgICAgICAgICAgICgqIHRoZSBjdXJyZW50IHZhbHVlICopXG4gIG5vbnplcm86IENvbmRpdGlvbi50ICAgICAgICAgICAgICAgICAgKCogc2lnbmFsZWQgd2hlbiBbdiA+IDBdICopXG59XG5cbm1vZHVsZSBDb3VudGluZyA9IHN0cnVjdFxuXG50eXBlIHQgPSBzZW1cblxubGV0IG1ha2UgdiA9XG4gIGlmIHYgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZW1hcGhvcmUuQ291bnRpbmcuaW5pdDogd3JvbmcgaW5pdGlhbCB2YWx1ZVwiO1xuICB7IG11dCA9IE11dGV4LmNyZWF0ZSgpOyB2OyBub256ZXJvID0gQ29uZGl0aW9uLmNyZWF0ZSgpIH1cblxubGV0IHJlbGVhc2UgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIGlmIHMudiA8IG1heF9pbnQgdGhlbiBiZWdpblxuICAgIHMudiA8LSBzLnYgKyAxO1xuICAgIENvbmRpdGlvbi5zaWduYWwgcy5ub256ZXJvO1xuICAgIE11dGV4LnVubG9jayBzLm11dFxuICBlbmQgZWxzZSBiZWdpblxuICAgIE11dGV4LnVubG9jayBzLm11dDtcbiAgICByYWlzZSAoU3lzX2Vycm9yIFwiU2VtYXBob3JlLkNvdW50aW5nLnJlbGVhc2U6IG92ZXJmbG93XCIpXG4gIGVuZFxuXG5sZXQgYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgd2hpbGUgcy52ID0gMCBkbyBDb25kaXRpb24ud2FpdCBzLm5vbnplcm8gcy5tdXQgZG9uZTtcbiAgcy52IDwtIHMudiAtIDE7XG4gIE11dGV4LnVubG9jayBzLm11dFxuXG5sZXQgdHJ5X2FjcXVpcmUgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIGxldCByZXQgPSBpZiBzLnYgPSAwIHRoZW4gZmFsc2UgZWxzZSAocy52IDwtIHMudiAtIDE7IHRydWUpIGluXG4gIE11dGV4LnVubG9jayBzLm11dDtcbiAgcmV0XG5cbmxldCBnZXRfdmFsdWUgcyA9IHMudlxuXG5lbmRcblxubW9kdWxlIEJpbmFyeSA9IHN0cnVjdFxuXG50eXBlIHQgPSBzZW1cblxubGV0IG1ha2UgYiA9XG4gIHsgbXV0ID0gTXV0ZXguY3JlYXRlKCk7XG4gICAgdiA9IGlmIGIgdGhlbiAxIGVsc2UgMDtcbiAgICBub256ZXJvID0gQ29uZGl0aW9uLmNyZWF0ZSgpIH1cblxubGV0IHJlbGVhc2UgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIHMudiA8LSAxO1xuICBDb25kaXRpb24uc2lnbmFsIHMubm9uemVybztcbiAgTXV0ZXgudW5sb2NrIHMubXV0XG5cbmxldCBhY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICB3aGlsZSBzLnYgPSAwIGRvIENvbmRpdGlvbi53YWl0IHMubm9uemVybyBzLm11dCBkb25lO1xuICBzLnYgPC0gMDtcbiAgTXV0ZXgudW5sb2NrIHMubXV0XG5cbmxldCB0cnlfYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgbGV0IHJldCA9IGlmIHMudiA9IDAgdGhlbiBmYWxzZSBlbHNlIChzLnYgPC0gMDsgdHJ1ZSkgaW5cbiAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICByZXRcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgIEtDIFNpdmFyYW1ha3Jpc2huYW4sIEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU3RlcGhlbiBEb2xhbiwgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBUb20gS2VsbHksIE9DYW1sIExhYnMgQ29uc3VsdGFuY3kgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE5IEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIE9DYW1sIExhYnMgQ29uc3VsdGFuY3kgTHRkICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBSYXcgPSBzdHJ1Y3RcbiAgKCogTG93LWxldmVsIHByaW1pdGl2ZXMgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWUgKilcbiAgdHlwZSB0ID0gcHJpdmF0ZSBpbnRcblxuICAoKiBUaGUgbGF5b3V0cyBvZiBbc3RhdGVdIGFuZCBbdGVybV9zeW5jXSBhcmUgaGFyZC1jb2RlZCBpblxuICAgICBbcnVudGltZS9kb21haW4uY10gKilcblxuICB0eXBlICdhIHN0YXRlID1cbiAgICB8IFJ1bm5pbmdcbiAgICB8IEZpbmlzaGVkIG9mICgnYSwgZXhuKSByZXN1bHQgW0B3YXJuaW5nIFwiLXVudXNlZC1jb25zdHJ1Y3RvclwiXVxuXG4gIHR5cGUgJ2EgdGVybV9zeW5jID0ge1xuICAgICgqIHByb3RlY3RlZCBieSBbbXV0XSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiAnYSBzdGF0ZSBbQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdIDtcbiAgICBtdXQgOiBNdXRleC50IDtcbiAgICBjb25kIDogQ29uZGl0aW9uLnQgO1xuICB9XG5cbiAgZXh0ZXJuYWwgc3Bhd24gOiAodW5pdCAtPiAnYSkgLT4gJ2EgdGVybV9zeW5jIC0+IHRcbiAgICA9IFwiY2FtbF9kb21haW5fc3Bhd25cIlxuICBleHRlcm5hbCBzZWxmIDogdW5pdCAtPiB0XG4gICAgPSBcImNhbWxfbWxfZG9tYWluX2lkXCIgW0BAbm9hbGxvY11cbiAgZXh0ZXJuYWwgY3B1X3JlbGF4IDogdW5pdCAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfZG9tYWluX2NwdV9yZWxheFwiXG4gIGV4dGVybmFsIGdldF9yZWNvbW1lbmRlZF9kb21haW5fY291bnQ6IHVuaXQgLT4gaW50XG4gICAgPSBcImNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XCIgW0BAbm9hbGxvY11cbmVuZFxuXG5sZXQgY3B1X3JlbGF4ICgpID0gUmF3LmNwdV9yZWxheCAoKVxuXG50eXBlIGlkID0gUmF3LnRcblxudHlwZSAnYSB0ID0ge1xuICBkb21haW4gOiBSYXcudDtcbiAgdGVybV9zeW5jIDogJ2EgUmF3LnRlcm1fc3luYztcbn1cblxubW9kdWxlIERMUyA9IHN0cnVjdFxuXG4gIG1vZHVsZSBPYmpfb3B0IDogc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIG5vbmUgOiB0XG4gICAgdmFsIHNvbWUgOiAnYSAtPiB0XG4gICAgdmFsIGlzX3NvbWUgOiB0IC0+IGJvb2xcblxuICAgICgqKiBbdW5zYWZlX2dldCBvYmpdIG1heSBvbmx5IGJlIGNhbGxlZCBzYWZlbHlcbiAgICAgICAgaWYgW2lzX3NvbWVdIGlzIHRydWUuXG5cbiAgICAgICAgW3Vuc2FmZV9nZXQgKHNvbWUgdildIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgICAgW09iai5vYmogKE9iai5yZXByIHYpXS4gKilcbiAgICB2YWwgdW5zYWZlX2dldCA6IHQgLT4gJ2FcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gT2JqLnRcbiAgICBsZXQgbm9uZSA9IE9iai5yZXByIChyZWYgMClcbiAgICBsZXQgc29tZSB2ID0gT2JqLnJlcHIgdlxuICAgIGxldCBpc19zb21lIG9iaiA9IChvYmogIT0gbm9uZSlcbiAgICBsZXQgdW5zYWZlX2dldCBvYmogPSBPYmoub2JqIG9ialxuICBlbmRcblxuICB0eXBlIGRsc19zdGF0ZSA9IE9ial9vcHQudCBhcnJheVxuXG4gIGV4dGVybmFsIGdldF9kbHNfc3RhdGUgOiB1bml0IC0+IGRsc19zdGF0ZSA9IFwiJWRsc19nZXRcIlxuXG4gIGV4dGVybmFsIHNldF9kbHNfc3RhdGUgOiBkbHNfc3RhdGUgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2RvbWFpbl9kbHNfc2V0XCIgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjb21wYXJlX2FuZF9zZXRfZGxzX3N0YXRlIDogZGxzX3N0YXRlIC0+IGRsc19zdGF0ZSAtPiBib29sID1cbiAgICBcImNhbWxfZG9tYWluX2Rsc19jb21wYXJlX2FuZF9zZXRcIiBbQEBub2FsbG9jXVxuXG4gIGxldCBjcmVhdGVfZGxzICgpID1cbiAgICBsZXQgc3QgPSBBcnJheS5tYWtlIDggT2JqX29wdC5ub25lIGluXG4gICAgc2V0X2Rsc19zdGF0ZSBzdFxuXG4gIGxldCBfID0gY3JlYXRlX2RscyAoKVxuXG4gIHR5cGUgJ2Ega2V5ID0gaW50ICogKHVuaXQgLT4gJ2EpXG5cbiAgbGV0IGtleV9jb3VudGVyID0gQXRvbWljLm1ha2UgMFxuXG4gIHR5cGUga2V5X2luaXRpYWxpemVyID1cbiAgICBLSTogJ2Ega2V5ICogKCdhIC0+ICdhKSAtPiBrZXlfaW5pdGlhbGl6ZXJcblxuICBsZXQgcGFyZW50X2tleXMgPSBBdG9taWMubWFrZSAoW10gOiBrZXlfaW5pdGlhbGl6ZXIgbGlzdClcblxuICBsZXQgcmVjIGFkZF9wYXJlbnRfa2V5IGtpID1cbiAgICBsZXQgbCA9IEF0b21pYy5nZXQgcGFyZW50X2tleXMgaW5cbiAgICBpZiBub3QgKEF0b21pYy5jb21wYXJlX2FuZF9zZXQgcGFyZW50X2tleXMgbCAoa2kgOjogbCkpXG4gICAgdGhlbiBhZGRfcGFyZW50X2tleSBraVxuXG4gIGxldCBuZXdfa2V5ID9zcGxpdF9mcm9tX3BhcmVudCBpbml0X29ycGhhbiA9XG4gICAgbGV0IGlkeCA9IEF0b21pYy5mZXRjaF9hbmRfYWRkIGtleV9jb3VudGVyIDEgaW5cbiAgICBsZXQgayA9IChpZHgsIGluaXRfb3JwaGFuKSBpblxuICAgIGJlZ2luIG1hdGNoIHNwbGl0X2Zyb21fcGFyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgc3BsaXQgLT4gYWRkX3BhcmVudF9rZXkgKEtJKGssIHNwbGl0KSlcbiAgICBlbmQ7XG4gICAga1xuXG4gICgqIElmIG5lY2Vzc2FyeSwgZ3JvdyB0aGUgY3VycmVudCBkb21haW4ncyBsb2NhbCBzdGF0ZSBhcnJheSBzdWNoIHRoYXQgW2lkeF1cbiAgICogaXMgYSB2YWxpZCBpbmRleCBpbiB0aGUgYXJyYXkuICopXG4gIGxldCByZWMgbWF5YmVfZ3JvdyBpZHggPVxuICAgIGxldCBzdCA9IGdldF9kbHNfc3RhdGUgKCkgaW5cbiAgICBsZXQgc3ogPSBBcnJheS5sZW5ndGggc3QgaW5cbiAgICBpZiBpZHggPCBzeiB0aGVuIHN0XG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHJlYyBjb21wdXRlX25ld19zaXplIHMgPVxuICAgICAgICBpZiBpZHggPCBzIHRoZW4gcyBlbHNlIGNvbXB1dGVfbmV3X3NpemUgKDIgKiBzKVxuICAgICAgaW5cbiAgICAgIGxldCBuZXdfc3ogPSBjb21wdXRlX25ld19zaXplIHN6IGluXG4gICAgICBsZXQgbmV3X3N0ID0gQXJyYXkubWFrZSBuZXdfc3ogT2JqX29wdC5ub25lIGluXG4gICAgICBBcnJheS5ibGl0IHN0IDAgbmV3X3N0IDAgc3o7XG4gICAgICAoKiBXZSB3YW50IGEgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBzYWZlIHdpdGggcmVzcGVjdCB0b1xuICAgICAgICAgc2luZ2xlLWRvbWFpbiBtdWx0aS10aHJlYWRpbmc6IHJldHJ5IGlmIHRoZSBETFMgc3RhdGUgaGFzXG4gICAgICAgICBjaGFuZ2VkIHVuZGVyIG91ciBmZWV0LlxuICAgICAgICAgTm90ZSB0aGF0IHRoZSBudW1iZXIgb2YgcmV0cmllcyB3aWxsIGJlIHZlcnkgc21hbGwgaW5cbiAgICAgICAgIGNvbnRlbmRlZCBzY2VuYXJpb3MsIGFzIHRoZSBhcnJheSBvbmx5IGdyb3dzLCB3aXRoXG4gICAgICAgICBleHBvbmVudGlhbCByZXNpemluZy4gKilcbiAgICAgIGlmIGNvbXBhcmVfYW5kX3NldF9kbHNfc3RhdGUgc3QgbmV3X3N0XG4gICAgICB0aGVuIG5ld19zdFxuICAgICAgZWxzZSBtYXliZV9ncm93IGlkeFxuICAgIGVuZFxuXG4gIGxldCBzZXQgKHR5cGUgYSkgKGlkeCwgX2luaXQpICh4IDogYSkgPVxuICAgIGxldCBzdCA9IG1heWJlX2dyb3cgaWR4IGluXG4gICAgKCogW1N5cy5vcGFxdWVfaWRlbnRpdHldIGVuc3VyZXMgdGhhdCBmbGFtYmRhIGRvZXMgbm90IGxvb2sgYXQgdGhlIHR5cGUgb2ZcbiAgICAgKiBbeF0sIHdoaWNoIG1heSBiZSBhIFtmbG9hdF0gYW5kIGNvbmNsdWRlIHRoYXQgdGhlIFtzdF0gaXMgYSBmbG9hdCBhcnJheS5cbiAgICAgKiBXZSBkbyBub3Qgd2FudCBPQ2FtbCdzIGZsb2F0IGFycmF5IG9wdGltaXNhdGlvbiBraWNraW5nIGluIGhlcmUuICopXG4gICAgc3QuKGlkeCkgPC0gT2JqX29wdC5zb21lIChTeXMub3BhcXVlX2lkZW50aXR5IHgpXG5cblxuICBsZXRbQGlubGluZSBuZXZlcl0gYXJyYXlfY29tcGFyZV9hbmRfc2V0IGEgaSBvbGR2YWwgbmV3dmFsID1cbiAgICAoKiBOb3RlOiB3ZSBjYW5ub3QgdXNlIFtAcG9sbCBlcnJvcl0gZHVlIHRvIHRoZVxuICAgICAgIGFsbG9jYXRpb25zIG9uIGEuKGkpIGluIHRoZSBEb3VibGVfYXJyYXkgY2FzZS4gKilcbiAgICBsZXQgY3VydmFsID0gYS4oaSkgaW5cbiAgICBpZiBjdXJ2YWwgPT0gb2xkdmFsIHRoZW4gKFxuICAgICAgQXJyYXkudW5zYWZlX3NldCBhIGkgbmV3dmFsO1xuICAgICAgdHJ1ZVxuICAgICkgZWxzZSBmYWxzZVxuXG4gIGxldCBnZXQgKHR5cGUgYSkgKChpZHgsIGluaXQpIDogYSBrZXkpIDogYSA9XG4gICAgbGV0IHN0ID0gbWF5YmVfZ3JvdyBpZHggaW5cbiAgICBsZXQgb2JqID0gc3QuKGlkeCkgaW5cbiAgICBpZiBPYmpfb3B0LmlzX3NvbWUgb2JqXG4gICAgdGhlbiAoT2JqX29wdC51bnNhZmVfZ2V0IG9iaiA6IGEpXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHYgOiBhID0gaW5pdCAoKSBpblxuICAgICAgbGV0IG5ld19vYmogPSBPYmpfb3B0LnNvbWUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgdikgaW5cbiAgICAgICgqIEF0IHRoaXMgcG9pbnQsIFtzdF0gb3IgW3N0LihpZHgpXSBtYXkgaGF2ZSBiZWVuIGNoYW5nZWRcbiAgICAgICAgIGJ5IGFub3RoZXIgdGhyZWFkIG9uIHRoZSBzYW1lIGRvbWFpbi5cblxuICAgICAgICAgSWYgW3N0XSBjaGFuZ2VkLCBpdCB3YXMgcmVzaXplZCBpbnRvIGEgbGFyZ2VyIHZhbHVlLFxuICAgICAgICAgd2UgY2FuIGp1c3QgcmV1c2UgdGhlIG5ldyB2YWx1ZS5cblxuICAgICAgICAgSWYgW3N0LihpZHgpXSBjaGFuZ2VkLCB3ZSBkcm9wIHRoZSBjdXJyZW50IHZhbHVlIHRvIGF2b2lkXG4gICAgICAgICBsZXR0aW5nIG90aGVyIHRocmVhZHMgb2JzZXJ2ZSBhICdyZXZlcnQnIHRoYXQgZm9yZ2V0c1xuICAgICAgICAgcHJldmlvdXMgbW9kaWZpY2F0aW9ucy4gKilcbiAgICAgIGxldCBzdCA9IGdldF9kbHNfc3RhdGUgKCkgaW5cbiAgICAgIGlmIGFycmF5X2NvbXBhcmVfYW5kX3NldCBzdCBpZHggb2JqIG5ld19vYmpcbiAgICAgIHRoZW4gdlxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICAoKiBpZiBzdC4oaWR4KSBjaGFuZ2VkLCBzb21lb25lIG11c3QgaGF2ZSBpbml0aWFsaXplZFxuICAgICAgICAgICB0aGUga2V5IGluIHRoZSBtZWFudGltZS4gKilcbiAgICAgICAgbGV0IHVwZGF0ZWRfb2JqID0gc3QuKGlkeCkgaW5cbiAgICAgICAgaWYgT2JqX29wdC5pc19zb21lIHVwZGF0ZWRfb2JqXG4gICAgICAgIHRoZW4gKE9ial9vcHQudW5zYWZlX2dldCB1cGRhdGVkX29iaiA6IGEpXG4gICAgICAgIGVsc2UgYXNzZXJ0IGZhbHNlXG4gICAgICBlbmRcbiAgICBlbmRcblxuICB0eXBlIGtleV92YWx1ZSA9IEtWIDogJ2Ega2V5ICogJ2EgLT4ga2V5X3ZhbHVlXG5cbiAgbGV0IGdldF9pbml0aWFsX2tleXMgKCkgOiBrZXlfdmFsdWUgbGlzdCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gKEtJIChrLCBzcGxpdCkpIC0+IEtWIChrLCAoc3BsaXQgKGdldCBrKSkpKVxuICAgICAgKEF0b21pYy5nZXQgcGFyZW50X2tleXMpXG5cbiAgbGV0IHNldF9pbml0aWFsX2tleXMgKGw6IGtleV92YWx1ZSBsaXN0KSA9XG4gICAgTGlzdC5pdGVyIChmdW4gKEtWIChrLCB2KSkgLT4gc2V0IGsgdikgbFxuZW5kXG5cbigqKioqKioqKiBJZGVudGl0eSAqKioqKioqKioqKVxuXG5sZXQgZ2V0X2lkIHsgZG9tYWluOyBfIH0gPSBkb21haW5cblxubGV0IHNlbGYgKCkgPSBSYXcuc2VsZiAoKVxuXG5sZXQgaXNfbWFpbl9kb21haW4gKCkgPSAoc2VsZiAoKSA6PiBpbnQpID0gMFxuXG4oKioqKioqKiogQ2FsbGJhY2tzICoqKioqKioqKiopXG5cbigqIGZpcnN0IHNwYXduLCBkb21haW4gc3RhcnR1cCBhbmQgYXQgZXhpdCBmdW5jdGlvbmFsaXR5ICopXG5sZXQgZmlyc3RfZG9tYWluX3NwYXduZWQgPSBBdG9taWMubWFrZSBmYWxzZVxuXG5sZXQgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gPSByZWYgKGZ1biAoKSAtPiAoKSlcblxubGV0IGJlZm9yZV9maXJzdF9zcGF3biBmID1cbiAgaWYgQXRvbWljLmdldCBmaXJzdF9kb21haW5fc3Bhd25lZCB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJmaXJzdCBkb21haW4gYWxyZWFkeSBzcGF3bmVkXCIpXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgb2xkX2YgPSAhZmlyc3Rfc3Bhd25fZnVuY3Rpb24gaW5cbiAgICBsZXQgbmV3X2YgKCkgPSBvbGRfZiAoKTsgZiAoKSBpblxuICAgIGZpcnN0X3NwYXduX2Z1bmN0aW9uIDo9IG5ld19mXG4gIGVuZFxuXG5sZXQgZG9fYmVmb3JlX2ZpcnN0X3NwYXduICgpID1cbiAgaWYgbm90IChBdG9taWMuZ2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkKSB0aGVuIGJlZ2luXG4gICAgQXRvbWljLnNldCBmaXJzdF9kb21haW5fc3Bhd25lZCB0cnVlO1xuICAgICFmaXJzdF9zcGF3bl9mdW5jdGlvbigpO1xuICAgICgqIFJlbGVhc2UgdGhlIG9sZCBmdW5jdGlvbiAqKVxuICAgIGZpcnN0X3NwYXduX2Z1bmN0aW9uIDo9IChmdW4gKCkgLT4gKCkpXG4gIGVuZFxuXG5sZXQgYXRfZXhpdF9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+IChmdW4gKCkgLT4gKCkpKVxuXG5sZXQgYXRfZXhpdCBmID1cbiAgbGV0IG9sZF9leGl0IDogdW5pdCAtPiB1bml0ID0gRExTLmdldCBhdF9leGl0X2tleSBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgIGYgKCk7IG9sZF9leGl0ICgpXG4gIGluXG4gIERMUy5zZXQgYXRfZXhpdF9rZXkgbmV3X2V4aXRcblxubGV0IGRvX2F0X2V4aXQgKCkgPVxuICBsZXQgZiA6IHVuaXQgLT4gdW5pdCA9IERMUy5nZXQgYXRfZXhpdF9rZXkgaW5cbiAgZiAoKVxuXG5sZXQgXyA9IFN0ZGxpYi5kb19kb21haW5fbG9jYWxfYXRfZXhpdCA6PSBkb19hdF9leGl0XG5cbigqKioqKioqIENyZWF0aW9uIGFuZCBUZXJtaW5hdGlvbiAqKioqKioqKilcblxubGV0IHNwYXduIGYgPVxuICBkb19iZWZvcmVfZmlyc3Rfc3Bhd24gKCk7XG4gIGxldCBwayA9IERMUy5nZXRfaW5pdGlhbF9rZXlzICgpIGluXG5cbiAgKCogW3Rlcm1fc3luY10gaXMgdXNlZCB0byBzeW5jaHJvbml6ZSB3aXRoIHRoZSBqb2luaW5nIGRvbWFpbnMgKilcbiAgbGV0IHRlcm1fc3luYyA9XG4gICAgUmF3Lnsgc3RhdGUgPSBSdW5uaW5nIDtcbiAgICAgICAgICBtdXQgPSBNdXRleC5jcmVhdGUgKCkgO1xuICAgICAgICAgIGNvbmQgPSBDb25kaXRpb24uY3JlYXRlICgpIH1cbiAgaW5cblxuICBsZXQgYm9keSAoKSA9XG4gICAgbWF0Y2hcbiAgICAgIERMUy5jcmVhdGVfZGxzICgpO1xuICAgICAgRExTLnNldF9pbml0aWFsX2tleXMgcGs7XG4gICAgICBsZXQgcmVzID0gZiAoKSBpblxuICAgICAgcmVzXG4gICAgd2l0aFxuICAgICgqIFJ1biB0aGUgW2F0X2V4aXRdIGNhbGxiYWNrcyB3aGVuIHRoZSBkb21haW4gY29tcHV0YXRpb24gZWl0aGVyXG4gICAgICAgdGVybWluYXRlcyBub3JtYWxseSBvciBleGNlcHRpb25hbGx5LiAqKVxuICAgIHwgcmVzIC0+XG4gICAgICAgICgqIElmIHRoZSBkb21haW4gY29tcHV0YXRpb24gdGVybWluYXRlZCBub3JtYWxseSwgYnV0IHRoZVxuICAgICAgICAgICBbYXRfZXhpdF0gY2FsbGJhY2tzIHJhaXNlZCBhbiBleGNlcHRpb24sIHRoZW4gcmV0dXJuIHRoZVxuICAgICAgICAgICBleGNlcHRpb24uICopXG4gICAgICAgIGRvX2F0X2V4aXQgKCk7XG4gICAgICAgIHJlc1xuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAoKiBJZiBib3RoIHRoZSBkb21haW4gY29tcHV0YXRpb24gYW5kIHRoZSBbYXRfZXhpdF0gY2FsbGJhY2tzXG4gICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMsIHRoZW4gaWdub3JlIHRoZSBleGNlcHRpb24gZnJvbSB0aGVcbiAgICAgICAgICAgW2F0X2V4aXRdIGNhbGxiYWNrcyBhbmQgcmV0dXJuIHRoZSBvcmlnaW5hbCBleGNlcHRpb24uICopXG4gICAgICAgICh0cnkgZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgICAgICByYWlzZSBleG5cbiAgaW5cbiAgbGV0IGRvbWFpbiA9IFJhdy5zcGF3biBib2R5IHRlcm1fc3luYyBpblxuICB7IGRvbWFpbiA7IHRlcm1fc3luYyB9XG5cbmxldCBqb2luIHsgdGVybV9zeW5jIDsgXyB9ID1cbiAgbGV0IG9wZW4gUmF3IGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWF0Y2ggdGVybV9zeW5jLnN0YXRlIHdpdGhcbiAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgQ29uZGl0aW9uLndhaXQgdGVybV9zeW5jLmNvbmQgdGVybV9zeW5jLm11dDtcbiAgICAgICAgbG9vcCAoKVxuICAgIHwgRmluaXNoZWQgcmVzIC0+XG4gICAgICAgIHJlc1xuICBpblxuICBtYXRjaCBNdXRleC5wcm90ZWN0IHRlcm1fc3luYy5tdXQgbG9vcCB3aXRoXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXggLT4gcmFpc2UgZXhcblxubGV0IHJlY29tbWVuZGVkX2RvbWFpbl9jb3VudCA9IFJhdy5nZXRfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICgqIFRvb2xzIHRvIG1hbmlwdWxhdGUgc2Nhbm5pbmcgc2V0IG9mIGNoYXJzIChzZWUgJVsuLi5dKSAqKVxuXG50eXBlIG11dGFibGVfY2hhcl9zZXQgPSBieXRlc1xuXG4oKiBDcmVhdGUgYSBmcmVzaCwgZW1wdHksIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgY3JlYXRlX2NoYXJfc2V0ICgpID0gQnl0ZXMubWFrZSAzMiAnXFwwMDAnXG5cbigqIEFkZCBhIGNoYXIgaW4gYSBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIEJ5dGVzLnNldCBjaGFyX3NldCBzdHJfaW5kXG4gICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoQnl0ZXMuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxvciBtYXNrKSlcblxubGV0IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCA9XG4gIEJ5dGVzLnRvX3N0cmluZyBjaGFyX3NldFxuXG4oKiBDb21wdXRlIHRoZSBjb21wbGVtZW50IG9mIGEgY2hhciBzZXQuICopXG5sZXQgcmV2X2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgbGV0IGNoYXJfc2V0JyA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICBmb3IgaSA9IDAgdG8gMzEgZG9cbiAgICBCeXRlcy5zZXQgY2hhcl9zZXQnIGlcbiAgICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgaSkgbHhvciAweEZGKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgY2hhcl9zZXQnXG5cbigqIFJldHVybiB0cnVlIGlmIGEgYGMnIGlzIGluIGBjaGFyX3NldCcuICopXG5sZXQgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbGFuZCBtYXNrKSA8PiAwXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZ25vcmVkIHBhcmFtIGNvbnZlcnNpb24gKilcblxuKCogR0FEVCB1c2VkIHRvIGFic3RyYWN0IGFuIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVyLiAqKVxuKCogU2VlIHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdC4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmIgPSBQYXJhbV9mb3JtYXRfRUJCIDpcbiAgICAoJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmJcblxuKCogQ29tcHV0ZSBhIHBhZGRpbmcgYXNzb2NpYXRlZCB0byBhIHBhZF9vcHRpb24gKHNlZSBcIiVfNDJkXCIpLiAqKVxubGV0IHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3BhZGRpbmdcbiAgfCBTb21lIHdpZHRoIC0+IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG5cbigqIENvbXB1dGUgYSBwcmVjaXNpb24gYXNzb2NpYXRlZCB0byBhIHByZWNfb3B0aW9uIChzZWUgXCIlXy40MmZcIikuICopXG5sZXQgcHJlY19vZl9wcmVjX29wdCBwcmVjX29wdCA9IG1hdGNoIHByZWNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3ByZWNpc2lvblxuICB8IFNvbWUgbmRlYyAtPiBMaXRfcHJlY2lzaW9uIG5kZWNcblxuKCogVHVybiBhbiBpZ25vcmVkIHBhcmFtIGludG8gaXRzIGVxdWl2YWxlbnQgbm90LWlnbm9yZWQgZm9ybWF0IG5vZGUuICopXG4oKiBVc2VkIGZvciBmb3JtYXQgcHJldHR5LXByaW50aW5nIGFuZCBTY2FuZi4gKilcbmxldCBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT4gKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhcmFtX2Zvcm1hdF9lYmIgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDaGFyIGZtdClcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfY2hhciBmbXQpXG4gIHwgSWdub3JlZF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFN0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDYW1sX3N0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2ludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoSW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50MzIgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQzMiAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKE5hdGl2ZWludCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2ludDY0IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoSW50NjQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9mbG9hdCAocGFkX29wdCwgcHJlY19vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEZsb2F0ICgoRmxvYXRfZmxhZ18sIEZsb2F0X2YpLFxuICAgICAgICAgICAgICBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfYm9vbCBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQm9vbCAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgZm10KSlcbiAgfCBJZ25vcmVkX3JlYWRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFJlYWRlciBmbXQpXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXQpKVxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX25leHRfY2hhciBmbXQpXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGVzICopXG5cbnR5cGUgKCdiLCAnYykgYWNjX2Zvcm1hdHRpbmdfZ2VuID1cbiAgfCBBY2Nfb3Blbl90YWcgb2YgKCdiLCAnYykgYWNjXG4gIHwgQWNjX29wZW5fYm94IG9mICgnYiwgJ2MpIGFjY1xuXG4oKiBSZXZlcnNlZCBsaXN0IG9mIHByaW50aW5nIGF0b21zLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHByaW50ZiBhcmd1bWVudHMuICopXG5hbmQgKCdiLCAnYykgYWNjID1cbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgb2YgKCdiLCAnYykgYWNjICogZm9ybWF0dGluZ19saXRcbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiBvZiAoJ2IsICdjKSBhY2MgKiAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW5cbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmcgICAgICgqIExpdGVyYWwgc3RyaW5nICopXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogTGl0ZXJhbCBjaGFyICopXG4gIHwgQWNjX2RhdGFfc3RyaW5nICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogR2VuZXJhdGVkIHN0cmluZyAqKVxuICB8IEFjY19kYXRhX2NoYXIgICAgICBvZiAoJ2IsICdjKSBhY2MgKiBjaGFyICAgICAgICgqIEdlbmVyYXRlZCBjaGFyICopXG4gIHwgQWNjX2RlbGF5ICAgICAgICAgIG9mICgnYiwgJ2MpIGFjYyAqICgnYiAtPiAnYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIERlbGF5ZWQgcHJpbnRpbmcgKCVhLCAldCkgKilcbiAgfCBBY2NfZmx1c2ggICAgICAgICAgb2YgKCdiLCAnYykgYWNjICAgICAgICAgICAgICAoKiBGbHVzaCAqKVxuICB8IEFjY19pbnZhbGlkX2FyZyAgICBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmdcbiAgICAgICgqIFJhaXNlIEludmFsaWRfYXJndW1lbnQgbXNnICopXG4gIHwgRW5kX29mX2FjY1xuXG4oKiBMaXN0IG9mIGhldGVyb2dlbmVvdXMgdmFsdWVzLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHNjYW5mIGNhbGxiYWNrIGFyZ3VtZW50cy4gKilcbnR5cGUgKCdhLCAnYikgaGV0ZXJfbGlzdCA9XG4gIHwgQ29ucyA6ICdjICogKCdhLCAnYikgaGV0ZXJfbGlzdCAtPiAoJ2MgLT4gJ2EsICdiKSBoZXRlcl9saXN0XG4gIHwgTmlsIDogKCdiLCAnYikgaGV0ZXJfbGlzdFxuXG4oKiBFeGlzdGVudGlhbCBCbGFjayBCb3hlcy4gKilcbigqIFVzZWQgdG8gYWJzdHJhY3Qgc29tZSBleGlzdGVudGlhbCB0eXBlIHBhcmFtZXRlcnMuICopXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcgYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZGRpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYiA9IFBhZGRpbmdfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkZGluZ19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZHByZWMgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYiA9IFBhZHByZWNfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3opIHByZWNpc2lvbiAqICgneiwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkcHJlY19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcGFkZGluZ19mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwYWRkaW5nX2ZtdF9lYmIgPSBQYWRkaW5nX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHBhZGRpbmcgKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwcmVjaXNpb25fZm10X2ViYiA9IFByZWNpc2lvbl9mbXRfRUJCIDpcbiAgICAgKF8sICd4IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYiA9IFBhZHByZWNfZm10X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICdwIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYlxuXG4oKiBBYnN0cmFjdCB0aGUgJ2EgYW5kICdkIHBhcmFtZXRlcnMgb2YgYW4gZm10LiAqKVxuKCogT3V0cHV0IHR5cGUgb2YgdGhlIGZvcm1hdCBwYXJzaW5nIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmIgPSBGbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGFuIGZtdHR5IGFuZCBhbiBmbXQuICopXG4oKiBTZWUgdGhlIHR5cGVfZm9ybWF0X2dlbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgPSBGbXRfZm10dHlfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdCAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiID0gRm10dHlfZm10X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBmbXR0eSAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXRfZm10dHlfZWJiIC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBmbXR0eSB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgZm9ybWF0IHR5cGVzLiAqKVxudHlwZSBmbXR0eV9lYmIgPSBGbXR0eV9FQkIgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT4gZm10dHlfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBwYWRkaW5nIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwYWRkaW5ncy4gKilcbnR5cGUgcGFkZGluZ19lYmIgPSBQYWRkaW5nX0VCQiA6ICgnYSwgJ2IpIHBhZGRpbmcgLT4gcGFkZGluZ19lYmJcblxuKCogQWJzdHJhY3QgYWxsIHByZWNpc2lvbiB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgcHJlY2lzaW9ucy4gKilcbnR5cGUgcHJlY2lzaW9uX2ViYiA9IFByZWNpc2lvbl9FQkIgOiAoJ2EsICdiKSBwcmVjaXNpb24gLT4gcHJlY2lzaW9uX2ViYlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnN0YW50cyAqKVxuXG4oKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgZmxvYXQgcHJpbnRpbmcuICopXG5sZXQgZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYgPVxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HIHwgRmxvYXRfaCB8IEZsb2F0X0hcbiAgfCBGbG9hdF9DRiAtPiAtNlxuICAoKiBGb3IgJWggJUggYW5kICUjRiBmb3JtYXRzLCBhIG5lZ2F0aXZlIHByZWNpc2lvbiBtZWFucyBcImFzIG1hbnkgZGlnaXRzIGFzXG4gICAgIG5lY2Vzc2FyeVwiLiAgRm9yIHRoZSBvdGhlciBGUCBmb3JtYXRzLCB3ZSB0YWtlIHRoZSBhYnNvbHV0ZSB2YWx1ZVxuICAgICBvZiB0aGUgcHJlY2lzaW9uLCBoZW5jZSA2IGRpZ2l0cyBieSBkZWZhdWx0LiAqKVxuICB8IEZsb2F0X0YgLT4gMTJcbiAgKCogRGVmYXVsdCBwcmVjaXNpb24gZm9yIE9DYW1sIGZsb2F0IHByaW50aW5nICglRikuICopXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXh0ZXJuYWxzICopXG5cbmV4dGVybmFsIGZvcm1hdF9mbG9hdDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfaW50MzI6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmV4dGVybmFsIGZvcm1hdF9uYXRpdmVpbnQ6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDY0OiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5leHRlcm5hbCBoZXhzdHJpbmdfb2ZfZmxvYXQ6IGZsb2F0IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXRcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgKCogVG9vbHMgdG8gcHJldHR5LXByaW50IGZvcm1hdHMgKilcblxuKCogVHlwZSBvZiBleHRlbnNpYmxlIGNoYXJhY3RlciBidWZmZXJzLiAqKVxudHlwZSBidWZmZXIgPSB7XG4gIG11dGFibGUgaW5kIDogaW50O1xuICBtdXRhYmxlIGJ5dGVzIDogYnl0ZXM7XG59XG5cbigqIENyZWF0ZSBhIGZyZXNoIGJ1ZmZlci4gKilcbmxldCBidWZmZXJfY3JlYXRlIGluaXRfc2l6ZSA9IHsgaW5kID0gMDsgYnl0ZXMgPSBCeXRlcy5jcmVhdGUgaW5pdF9zaXplIH1cblxuKCogQ2hlY2sgc2l6ZSBvZiB0aGUgYnVmZmVyIGFuZCBncm93IGl0IGlmIG5lZWRlZC4gKilcbmxldCBidWZmZXJfY2hlY2tfc2l6ZSBidWYgb3ZlcmhlYWQgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ1Zi5ieXRlcyBpblxuICBsZXQgbWluX2xlbiA9IGJ1Zi5pbmQgKyBvdmVyaGVhZCBpblxuICBpZiBtaW5fbGVuID4gbGVuIHRoZW4gKFxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1heCAobGVuICogMikgbWluX2xlbiBpblxuICAgIGxldCBuZXdfc3RyID0gQnl0ZXMuY3JlYXRlIG5ld19sZW4gaW5cbiAgICBCeXRlcy5ibGl0IGJ1Zi5ieXRlcyAwIG5ld19zdHIgMCBsZW47XG4gICAgYnVmLmJ5dGVzIDwtIG5ld19zdHI7XG4gIClcblxuKCogQWRkIHRoZSBjaGFyYWN0ZXIgYGMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjID1cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIDE7XG4gIEJ5dGVzLnNldCBidWYuYnl0ZXMgYnVmLmluZCBjO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyAxXG5cbigqIEFkZCB0aGUgc3RyaW5nIGBzJyB0byB0aGUgYnVmZmVyIGBidWYnLiAqKVxubGV0IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzID1cbiAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIHN0cl9sZW47XG4gIFN0cmluZy5ibGl0IHMgMCBidWYuYnl0ZXMgYnVmLmluZCBzdHJfbGVuO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyBzdHJfbGVuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiB0aGUgYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jb250ZW50cyBidWYgPVxuICBCeXRlcy5zdWJfc3RyaW5nIGJ1Zi5ieXRlcyAwIGJ1Zi5pbmRcblxuKCoqKilcblxuKCogQ29udmVydCBhbiBpbnRlZ2VyIGNvbnZlcnNpb24gdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2ljb252IGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkIHwgSW50X0NkIC0+ICdkJyB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpXG4gIHwgSW50X0NpIC0+ICdpJyB8IEludF94IHwgSW50X0N4IC0+ICd4JyB8IEludF9YIHwgSW50X0NYIC0+ICdYJyB8IEludF9vXG4gIHwgSW50X0NvIC0+ICdvJyB8IEludF91IHwgSW50X0N1IC0+ICd1J1xuXG4oKiBDb252ZXJ0IGEgZmxvYXQgY29udmVyc2lvbiB0byBjaGFyLiAqKVxuKCogYGNGJyB3aWxsIGJlICdGJyBmb3IgZGlzcGxheWluZyBmb3JtYXQgYW5kICdnJyB0byBjYWxsIGxpYmMgcHJpbnRmICopXG5sZXQgY2hhcl9vZl9mY29udiA/KGNGPSdGJykgZmNvbnYgPSBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgLT4gJ2YnIHwgRmxvYXRfZSAtPiAnZSdcbiAgfCBGbG9hdF9FIC0+ICdFJyB8IEZsb2F0X2cgLT4gJ2cnXG4gIHwgRmxvYXRfRyAtPiAnRycgfCBGbG9hdF9GIC0+IGNGXG4gIHwgRmxvYXRfaCAtPiAnaCcgfCBGbG9hdF9IIC0+ICdIJ1xuICB8IEZsb2F0X0NGIC0+ICdGJ1xuXG5cbigqIENvbnZlcnQgYSBzY2FubmluZyBjb3VudGVyIHRvIGNoYXIuICopXG5sZXQgY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIgPSBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgIC0+ICdsJ1xuICB8IENoYXJfY291bnRlciAgLT4gJ24nXG4gIHwgVG9rZW5fY291bnRlciAtPiAnTidcblxuKCoqKilcblxuKCogUHJpbnQgYSBjaGFyX3NldCBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBPQ2FtbCBmb3JtYXQgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQgPVxuICBsZXQgcmVjIHByaW50X3N0YXJ0IHNldCA9XG4gICAgbGV0IGlzX2Fsb25lIGMgPVxuICAgICAgbGV0IGJlZm9yZSwgYWZ0ZXIgPSBDaGFyLihjaHIgKGNvZGUgYyAtIDEpLCBjaHIgKGNvZGUgYyArIDEpKSBpblxuICAgICAgaXNfaW5fY2hhcl9zZXQgc2V0IGNcbiAgICAgICYmIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IGJlZm9yZSAmJiBpc19pbl9jaGFyX3NldCBzZXQgYWZ0ZXIpIGluXG4gICAgaWYgaXNfYWxvbmUgJ10nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSc7XG4gICAgcHJpbnRfb3V0IHNldCAxO1xuICAgIGlmIGlzX2Fsb25lICctJyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nO1xuICBhbmQgcHJpbnRfb3V0IHNldCBpID1cbiAgICBpZiBpIDwgMjU2IHRoZW5cbiAgICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlbiBwcmludF9maXJzdCBzZXQgaVxuICAgICAgZWxzZSBwcmludF9vdXQgc2V0IChpICsgMSlcbiAgYW5kIHByaW50X2ZpcnN0IHNldCBpID1cbiAgICBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICdcXDI1NScgLT4gcHJpbnRfY2hhciBidWYgMjU1O1xuICAgIHwgJ10nIHwgJy0nIC0+IHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICB8IF8gLT4gcHJpbnRfc2Vjb25kIHNldCAoaSArIDEpO1xuICBhbmQgcHJpbnRfc2Vjb25kIHNldCBpID1cbiAgICBpZiBpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGkpIHRoZW5cbiAgICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgICAgfCAnXFwyNTUnIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIDI1NDtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU1O1xuICAgICAgfCAnXScgfCAnLScgd2hlbiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgKGkgKyAxKSkpIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICAgIHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICAgIHwgXyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDIpO1xuICAgICAgfCBfIC0+XG4gICAgICAgIHByaW50X2luIHNldCAoaSAtIDEpIChpICsgMik7XG4gICAgZWxzZSAoXG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIClcbiAgYW5kIHByaW50X2luIHNldCBpIGogPVxuICAgIGlmIGogPSAyNTYgfHwgbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGopKSB0aGVuIChcbiAgICAgIHByaW50X2NoYXIgYnVmIGk7XG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaW50X29mX2NoYXIgJy0nKTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChqIC0gMSk7XG4gICAgICBpZiBqIDwgMjU2IHRoZW4gcHJpbnRfb3V0IHNldCAoaiArIDEpO1xuICAgICkgZWxzZVxuICAgICAgcHJpbnRfaW4gc2V0IGkgKGogKyAxKTtcbiAgYW5kIHByaW50X2NoYXIgYnVmIGkgPSBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICclJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgfCAnQCcgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0AnO1xuICAgIHwgYyAgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgaW5cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnWyc7XG4gIHByaW50X3N0YXJ0IChcbiAgICBpZiBpc19pbl9jaGFyX3NldCBjaGFyX3NldCAnXFwwMDAnXG4gICAgdGhlbiAoIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ14nOyByZXZfY2hhcl9zZXQgY2hhcl9zZXQgKVxuICAgIGVsc2UgY2hhcl9zZXRcbiAgKTtcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSdcblxuKCoqKilcblxuKCogUHJpbnQgYSBwYWR0eSBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eSA9IG1hdGNoIHBhZHR5IHdpdGhcbiAgfCBMZWZ0ICAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICctJ1xuICB8IFJpZ2h0IC0+ICgpXG4gIHwgWmVyb3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnMCdcblxuKCogUHJpbnQgdGhlICdfJyBvZiBhbiBpZ25vcmVkIGZsYWcgaWYgbmVlZGVkLiAqKVxubGV0IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnID1cbiAgaWYgaWduX2ZsYWcgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICdfJ1xuXG4oKioqKVxuXG5sZXQgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB3aWR0aCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgd2lkdGgpXG5cbigqKiopXG5cbigqIFByaW50IHBhZGRpbmcgaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wYWRkaW5nIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHBhZGRpbmcgLT4gdW5pdCA9XG5mdW4gYnVmIHBhZCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgLT4gKClcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIG4pIC0+XG4gICAgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHkgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyonXG5cbigqIFByaW50IHByZWNpc2lvbiBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3ByZWNpc2lvbiA6IHR5cGUgYSBiIC4gYnVmZmVyIC0+IChhLCBiKSBwcmVjaXNpb24gLT4gdW5pdCA9XG4gIGZ1biBidWYgcHJlYyAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gLT4gKClcbiAgfCBMaXRfcHJlY2lzaW9uIG4gLT5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIi4qXCJcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIG9yICcjJyBhc3NvY2lhdGVkIHRvIGFuIGludCBjb252ZXJzaW9uLiAqKVxubGV0IGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udiA9IG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfcGQgfCBJbnRfcGkgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBJbnRfc2QgfCBJbnRfc2kgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBJbnRfQ3ggfCBJbnRfQ1ggfCBJbnRfQ28gfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyMnXG4gIHwgSW50X2QgfCBJbnRfaSB8IEludF94IHwgSW50X1ggfCBJbnRfbyB8IEludF91IC0+ICgpXG5cbigqIFByaW50IGFuIGNvbXBsZXRlIGludCBmb3JtYXQgaW4gYSBidWZmZXIgKGV4OiBcIiUzLipkXCIpLiAqKVxubGV0IGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyBjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9pY29udiBpY29udilcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIGFuZC9vciAnIycgYXNzb2NpYXRlZCB0byBhIGZsb2F0IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252ID1cbiAgYmVnaW4gbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgfCBGbG9hdF9mbGFnX3AgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBGbG9hdF9mbGFnX3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBGbG9hdF9mbGFnXyAtPiAoKSBlbmQ7XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfQ0YgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfR1xuICB8IEZsb2F0X0YgfCBGbG9hdF9oIHwgRmxvYXRfSCAtPiAoKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZsb2F0IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJSsqLjNmXCIpLiAqKVxubGV0IGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfZmNvbnYgZmNvbnYpXG5cbigqIENvbXB1dGUgdGhlIGxpdGVyYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgRm9ybWF0dGluZ19saXQuICopXG4oKiBVc2VkIGJ5IFByaW50ZiBhbmQgU2NhbmYgd2hlcmUgZm9ybWF0dGluZyBpcyBub3QgaW50ZXJwcmV0ZWQuICopXG5sZXQgc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0ID0gbWF0Y2ggZm9ybWF0dGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgIC0+IFwiQF1cIlxuICB8IENsb3NlX3RhZyAgICAgICAgICAgIC0+IFwiQH1cIlxuICB8IEJyZWFrIChzdHIsIF8sIF8pICAgIC0+IHN0clxuICB8IEZGbHVzaCAgICAgICAgICAgICAgIC0+IFwiQD9cIlxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgIC0+IFwiQFxcblwiXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgLT4gXCJALlwiXG4gIHwgTWFnaWNfc2l6ZSAoc3RyLCBfKSAgLT4gc3RyXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgLT4gXCJAQFwiXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgLT4gXCJAJVwiXG4gIHwgU2Nhbl9pbmRpYyBjIC0+IFwiQFwiIF4gKFN0cmluZy5tYWtlIDEgYylcblxuKCoqKilcblxuKCogUHJpbnQgYSBsaXRlcmFsIGNoYXIgaW4gYSBidWZmZXIsIGVzY2FwZSAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNociA9IG1hdGNoIGNociB3aXRoXG4gIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUlXCJcbiAgfCBfIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgY2hyXG5cbigqIFByaW50IGEgbGl0ZXJhbCBzdHJpbmcgaW4gYSBidWZmZXIsIGVzY2FwZSBhbGwgJyUnIGJ5IFwiJSVcIi4gKilcbmxldCBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIHN0ciA9XG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgZG9cbiAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBzdHIuW2ldXG4gIGRvbmVcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHByZXR0eS1wcmludGluZyAqKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZvcm1hdCB0eXBlIChhbiBmbXR0eSkgaW4gYSBidWZmZXIuICopXG5sZXQgcmVjIGJwcmludF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAgIGJ1ZmZlciAtPiAoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IHVuaXQgPVxuZnVuIGJ1ZiBmbXR0eSAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0ICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWNcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlc1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludF90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVpXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbmlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludDY0X3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVMaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWZcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBCb29sX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlQlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFscGhhX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVhXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXRcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlP1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFJlYWRlcl90eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVyXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJV9yXCI7XG4gICAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgRm9ybWF0X2FyZ190eSAoc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV7XCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV9XCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eSwgXywgcmVzdCkgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKFwiOyBicHJpbnRfZm10dHkgYnVmIHN1Yl9mbXR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBFbmRfb2ZfZm10dHkgLT4gKClcblxuKCoqKilcblxubGV0IHJlYyBpbnRfb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSBhIGIgYyAuXG4gIChhLCBiLCBjKSBjdXN0b21fYXJpdHkgLT4gaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBDdXN0b21femVybyAtPiAwXG4gIHwgQ3VzdG9tX3N1Y2MgeCAtPiAxICsgaW50X29mX2N1c3RvbV9hcml0eSB4XG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9mbXQgYnVmIGZtdCA9XG4gIGxldCByZWMgZm10aXRlciA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBib29sIC0+IHVuaXQgPVxuICBmdW4gZm10IGlnbl9mbGFnIC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ1MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfaW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWM7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ24nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ0wnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfZmxvYXRfZm10IGJ1ZiBpZ25fZmxhZyBmY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgQ2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdjJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdCJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEFscGhhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2EnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICd0JzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgLT5cbiAgICAgIGZvciBfaSA9IDEgdG8gaW50X29mX2N1c3RvbV9hcml0eSBhcml0eSBkb1xuICAgICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJz8nO1xuICAgICAgZG9uZTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFJlYWRlciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdyJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmx1c2ggcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSFcIjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBjaHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3snO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ30nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0OyBidWZmZXJfYWRkX2NoYXIgYnVmICcoJztcbiAgICAgIGJwcmludF9mbXR0eSBidWYgZm10dHk7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICcpJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiB3aWR0aF9vcHQ7IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQ7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIpO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBcIjBjXCI7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgbGV0IFBhcmFtX2Zvcm1hdF9FQkIgZm10JyA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdCBpblxuICAgICAgZm10aXRlciBmbXQnIHRydWU7XG5cbiAgICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQpO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBmbXRpbmdfZ2VuIHdpdGhcbiAgICAgIHwgT3Blbl90YWcgKEZvcm1hdCAoXywgc3RyKSkgLT5cbiAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiQHtcIjsgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHN0clxuICAgICAgfCBPcGVuX2JveCAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAW1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICBlbmQ7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEVuZF9vZl9mb3JtYXQgLT4gKClcblxuICBpbiBmbXRpdGVyIGZtdCBmYWxzZVxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGEgZm9ybWF0IHRvIHN0cmluZy4gKilcbmxldCBzdHJpbmdfb2ZfZm10IGZtdCA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXQgYnVmIGZtdDtcbiAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUeXBlIGV4dHJhY3Rpb24gKilcblxudHlwZSAoXywgXykgZXEgPSBSZWZsIDogKCdhLCAnYSkgZXFcblxuKCogSW52YXJpYW50OiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBpZGVudGl0eSBvbiB2YWx1ZXMuXG5cbiAgIEluIHBhcnRpY3VsYXIsIGlmICh0eTEsIHR5MikgaGF2ZSBlcXVhbCB2YWx1ZXMsIHRoZW5cbiAgICh0cmFucyAoc3ltbSB0eTEpIHR5MikgcmVzcGVjdHMgdGhlICd0cmFucycgcHJlY29uZGl0aW9uLiAqKVxubGV0IHJlYyBzeW1tIDogdHlwZSBhMSBiMSBjMSBkMSBlMSBmMSBhMiBiMiBjMiBkMiBlMiBmMiAuXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdHR5X3JlbFxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPiBDaGFyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT4gSW50X3R5IChzeW1tIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPiBJbnQzMl90eSAoc3ltbSByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT4gSW50NjRfdHkgKHN5bW0gcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBOYXRpdmVpbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+IEZsb2F0X3R5IChzeW1tIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+IEJvb2xfdHkgKHN5bW0gcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPiBTdHJpbmdfdHkgKHN5bW0gcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+IFRoZXRhX3R5IChzeW1tIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPiBBbHBoYV90eSAoc3ltbSByZXN0KVxuICB8IEFueV90eSByZXN0IC0+IEFueV90eSAoc3ltbSByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+IFJlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT4gSWdub3JlZF9yZWFkZXJfdHkgKHN5bW0gcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgc3ltbSByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTIsIHR5MSwgc3ltbSByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxubGV0IHJlYyBmbXR0eV9yZWxfZGV0IDogdHlwZSBhMSBiIGMgZDEgZTEgZjEgYTIgZDIgZTIgZjIgLlxuICAoYTEsIGIsIGMsIGQxLCBlMSwgZjEsXG4gICBhMiwgYiwgYywgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKChmMSwgZjIpIGVxIC0+IChhMSwgYTIpIGVxKVxuICAqICgoYTEsIGEyKSBlcSAtPiAoZjEsIGYyKSBlcSlcbiAgKiAoKGUxLCBlMikgZXEgLT4gKGQxLCBkMikgZXEpXG4gICogKChkMSwgZDIpIGVxIC0+IChlMSwgZTIpIGVxKVxuPSBmdW5jdGlvblxuICB8IEVuZF9vZl9mbXR0eSAtPlxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKVxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG5cbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBGb3JtYXRfYXJnX3R5IChfdHksIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICBsZXQgYWcsIGdhLCBkaiwgamQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBsZXQgUmVmbCA9IGFnIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZ2EgUmVmbCBpbiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBsZXQgUmVmbCA9IGRqIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gamQgUmVmbCBpbiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcblxuKCogUHJlY29uZGl0aW9uOiB3ZSBhc3N1bWUgdGhhdCB0aGUgdHdvIGZtdHR5X3JlbCBhcmd1bWVudHMgaGF2ZSBlcXVhbFxuICAgdmFsdWVzIChhdCBwb3NzaWJseSBkaXN0aW5jdCB0eXBlcyk7IHRoaXMgaW52YXJpYW50IGNvbWVzIGZyb20gdGhlIHdheVxuICAgZm10dHlfcmVsIHdpdG5lc3NlcyBhcmUgcHJvZHVjZWQgYnkgdGhlIHR5cGUtY2hlY2tlclxuXG4gICBUaGUgY29kZSBiZWxvdyB1c2VzIChhc3NlcnQgZmFsc2UpIHdoZW4gdGhpcyBhc3N1bXB0aW9uIGlzIGJyb2tlbi4gVGhlXG4gICBjb2RlIHBhdHRlcm4gaXMgdGhlIGZvbGxvd2luZzpcblxuICAgICB8IEZvbyB4LCBGb28geSAtPlxuICAgICAgICgqIGNhc2Ugd2hlcmUgaW5kZWVkIGJvdGggdmFsdWVzXG4gICAgICAgICAgc3RhcnQgd2l0aCBjb25zdHJ1Y3RvciBGb28gKilcbiAgICAgfCBGb28gXywgX1xuICAgICB8IF8sIEZvbyBfIC0+XG4gICAgICAgKCogZGlmZmVyZW50IGhlYWQgY29uc3RydWN0b3JzOiBicm9rZW4gcHJlY29uZGl0aW9uICopXG4gICAgICAgYXNzZXJ0IGZhbHNlXG4qKVxuYW5kIHRyYW5zIDogdHlwZVxuICBhMSBiMSBjMSBkMSBlMSBmMVxuICBhMiBiMiBjMiBkMiBlMiBmMlxuICBhMyBiMyBjMyBkMyBlMyBmM1xuLlxuICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4tPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMixcbiAgICBhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eV9yZWxcbi0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuPSBmdW4gdHkxIHR5MiAtPiBtYXRjaCB0eTEsIHR5MiB3aXRoXG4gIHwgQ2hhcl90eSByZXN0MSwgQ2hhcl90eSByZXN0MiAtPiBDaGFyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBTdHJpbmdfdHkgcmVzdDEsIFN0cmluZ190eSByZXN0MiAtPiBTdHJpbmdfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEJvb2xfdHkgcmVzdDEsIEJvb2xfdHkgcmVzdDIgLT4gQm9vbF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50X3R5IHJlc3QxLCBJbnRfdHkgcmVzdDIgLT4gSW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnQzMl90eSByZXN0MSwgSW50MzJfdHkgcmVzdDIgLT4gSW50MzJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDY0X3R5IHJlc3QxLCBJbnQ2NF90eSByZXN0MiAtPiBJbnQ2NF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QxLCBOYXRpdmVpbnRfdHkgcmVzdDIgLT4gTmF0aXZlaW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBGbG9hdF90eSByZXN0MSwgRmxvYXRfdHkgcmVzdDIgLT4gRmxvYXRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuXG4gIHwgQWxwaGFfdHkgcmVzdDEsIEFscGhhX3R5IHJlc3QyIC0+IEFscGhhX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbHBoYV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEFscGhhX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBUaGV0YV90eSByZXN0MSwgVGhldGFfdHkgcmVzdDIgLT4gVGhldGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFRoZXRhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgVGhldGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEFueV90eSByZXN0MSwgQW55X3R5IHJlc3QyIC0+IEFueV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQW55X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQW55X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBSZWFkZXJfdHkgcmVzdDEsIFJlYWRlcl90eSByZXN0MiAtPiBSZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFJlYWRlcl90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIFJlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDEsIElnbm9yZWRfcmVhZGVyX3R5IHJlc3QyIC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgSWdub3JlZF9yZWFkZXJfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9hcmdfdHkgKHR5MSwgcmVzdDEpLCBGb3JtYXRfYXJnX3R5ICh0eTIsIHJlc3QyKSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHRyYW5zIHR5MSB0eTIsIHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZvcm1hdF9hcmdfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfYXJnX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MTEsIHR5MTIsIHJlc3QxKSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MjEsIHR5MjIsIHJlc3QyKSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MTIpIHR5MjEgaW5cbiAgICBsZXQgXywgZjIsIF8sIGY0ID0gZm10dHlfcmVsX2RldCB0eSBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkyMiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRm9ybWF0X3N1YnN0X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBFbmRfb2ZfZm10dHksIEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcbiAgfCBFbmRfb2ZfZm10dHksIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRW5kX29mX2ZtdHR5IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcmVjIGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm9ybWF0dGluZ19nZW4gLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSAtPiBmbXR0eV9vZl9mbXQgZm10XG5cbigqIEV4dHJhY3QgdGhlIHR5cGUgcmVwcmVzZW50YXRpb24gKGFuIGZtdHR5KSBvZiBhIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG5cbiAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludDMyX3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IE5hdGl2ZWludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChOYXRpdmVpbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50NjQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50NjRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoRmxvYXRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG5cbiAgfCBDaGFyIHJlc3QgICAgICAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBCb29sIChwYWQsIHJlc3QpICAgICAgICAgICAtPlxuICAgICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKEJvb2xfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAtPiBBbHBoYV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgVGhldGEgcmVzdCAgICAgICAgICAgICAgICAgLT4gVGhldGFfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpICAgIC0+IGZtdHR5X29mX2N1c3RvbSBhcml0eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgUmVhZGVyIHJlc3QgICAgICAgICAgICAgICAgLT4gUmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHksIHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT4gU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPiBJbnRfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgIC0+IGZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0XG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgIC0+XG4gICAgY29uY2F0X2ZtdHR5IChmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbiBmbXRpbmdfZ2VuKSAoZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0ICAgICAgICAgICAgICAtPiBFbmRfb2ZfZm10dHlcblxuYW5kIGZtdHR5X29mX2N1c3RvbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgKHksIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBhcml0eSBmbXR0eSAtPiBtYXRjaCBhcml0eSB3aXRoXG4gIHwgQ3VzdG9tX3plcm8gLT4gZm10dHlcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPiBBbnlfdHkgKGZtdHR5X29mX2N1c3RvbSBhcml0eSBmbXR0eSlcblxuKCogRXh0cmFjdCB0aGUgZm10dHkgb2YgYW4gaWdub3JlZCBwYXJhbWV0ZXIgZm9sbG93ZWQgYnkgdGhlIHJlc3Qgb2ZcbiAgIHRoZSBmb3JtYXQuICopXG5hbmQgZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiBjb25jYXRfZm10dHkgZm10dHkgKGZtdHR5X29mX2ZtdCBmbXQpXG4gIHwgSWdub3JlZF9yZWFkZXIgICAgICAgICAgICAgICAgICAtPiBJZ25vcmVkX3JlYWRlcl90eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHBhZGRpbmcgaXMgdGFrZW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqc1wiKS4gKilcbmFuZCBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcGFkZGluZyAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3BhZGRpbmcgXyAtPiBmbXR0eVxuICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBJbnRfdHkgZm10dHlcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHByZWNpc2lvbiBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKS4qKVxuYW5kIGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSA6IHR5cGUgeCBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIGEpIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHByZWMgZm10dHkgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgfCBOb19wcmVjaXNpb24gICAgLT4gZm10dHlcbiAgICB8IExpdF9wcmVjaXNpb24gXyAtPiBmbXR0eVxuICAgIHwgQXJnX3ByZWNpc2lvbiAgIC0+IEludF90eSBmbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBpbmcgKilcblxuKCogRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgZm9ybWF0IGRvZXMgbm90IG1hdGNoIGEgZ2l2ZW4gZm9ybWF0IHR5cGUuICopXG5leGNlcHRpb24gVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgcGFkZGluZy4gKilcbigqIFRha2UgYW4gSW50X3R5IGZyb20gdGhlIGZtdHR5IGlmIHRoZSBpbnRlZ2VyIHNob3VsZCBiZSBrZXB0IGFzIGFyZ3VtZW50LiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRkaW5nIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZGRpbmdfZm10dHlfZWJiID1cbmZ1biBwYWQgZm10dHkgLT4gbWF0Y2ggcGFkLCBmbXR0eSB3aXRoXG4gIHwgTm9fcGFkZGluZywgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTm9fcGFkZGluZywgZm10dHkpXG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTGl0X3BhZGRpbmcgKHBhZHR5LHcpLGZtdHR5KVxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBJbnRfdHkgcmVzdCAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoQXJnX3BhZGRpbmcgcGFkdHkscmVzdClcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogQ29udmVydCBhICh1cGFkZGluZywgdXByZWNpc2lvbikgdG8gYSAocGFkZGluZywgcHJlY2lzaW9uKS4gKilcbigqIFRha2Ugb25lIG9yIHR3byBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgbmVlZGVkLiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRwcmVjIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgeiAuXG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6KSBwcmVjaXNpb24gLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZHByZWNfZm10dHlfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjLCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgfCBOb19wcmVjaXNpb24sIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgTm9fcHJlY2lzaW9uLCByZXN0KVxuICB8IExpdF9wcmVjaXNpb24gcCwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBMaXRfcHJlY2lzaW9uIHAsIHJlc3QpXG4gIHwgQXJnX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgSW50X3R5IHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgQXJnX3ByZWNpc2lvbiwgcmVzdClcbiAgfCBfLCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIElmIHR5cGluZyBzdWNjZWVkLCBnZW5lcmF0ZSBhIGNvcHkgb2YgdGhlIGZvcm1hdCB3aXRoIHRoZSBzYW1lXG4gICAgdHlwZSBwYXJhbWV0ZXJzIGFzIHRoZSBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHJlYyB0eXBlX2Zvcm1hdCA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT4gbWF0Y2ggdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSB3aXRoXG4gIHwgRm10X2ZtdHR5X0VCQiAoZm10JywgRW5kX29mX2ZtdHR5KSAtPiBmbXQnXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbmFuZCB0eXBlX2Zvcm1hdF9nZW4gOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjIgIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdF9mbXR0eV9lYmJcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCBmbXQsIGZtdHR5IHdpdGhcbiAgfCBDaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhciBmbXQnLCBmbXR0eScpXG4gIHwgQ2FtbF9jaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9jaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBTdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoU3RyaW5nIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQzMl90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBOYXRpdmVpbnRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50NjRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBGbG9hdF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQm9vbCAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgQm9vbF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQm9vbCAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsdXNoIGZtdF9yZXN0LCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZsdXNoIGZtdCcsIGZtdHR5JylcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTdHJpbmdfbGl0ZXJhbCAoc3RyLCBmbXQnKSwgZm10dHknKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhcl9saXRlcmFsIChjaHIsIGZtdCcpLCBmbXR0eScpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiBzdWJfZm10dHkgPD4gRm10dHlfRUJCIHN1Yl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHknLCBmbXQnKSwgZm10dHknKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5LCBmbXRfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWJfZm10dHkxLCBfc3ViX2ZtdHR5MiwgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eTEpIHRoZW5cbiAgICAgIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPVxuICAgICAgdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IChlcmFzZV9yZWwgZm10dHlfcmVzdClcbiAgICBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5MSwgZm10JyksIGZtdHR5JylcbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEFscGhhIGZtdF9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEFscGhhIGZtdCcsIGZtdHR5JylcbiAgfCBUaGV0YSBmbXRfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChUaGV0YSBmbXQnLCBmbXR0eScpXG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmdfZ2VuLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICB0eXBlX2Zvcm1hdHRpbmdfZ2VuIGZvcm1hdHRpbmdfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3RcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIGZtdF9yZXN0LCBSZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChSZWFkZXIgZm10JywgZm10dHknKVxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdF9yZXN0KSwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10JyksIGZtdHR5JylcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCksIEludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCcpLCBmbXR0eScpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfaWdub3JlZF9wYXJhbSBpZ24gcmVzdCBmbXR0eV9yZXN0XG5cbiAgfCBFbmRfb2ZfZm9ybWF0LCBmbXR0eV9yZXN0IC0+IEZtdF9mbXR0eV9FQkIgKEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QpXG5cbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGExIGEzIGIxIGIzIGMxIGMzIGQxIGQzIGUxIGUyIGUzIGYxIGYyIGYzIC5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm9ybWF0dGluZ19nZW4gLT5cbiAgICAoZjEsIGIxLCBjMSwgZTEsIGUyLCBmMikgZm10IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGZvcm1hdHRpbmdfZ2VuIGZtdDAgZm10dHkwIC0+IG1hdGNoIGZvcm1hdHRpbmdfZ2VuIHdpdGhcbiAgfCBPcGVuX3RhZyAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG4gIHwgT3Blbl9ib3ggKEZvcm1hdCAoZm10MSwgc3RyKSkgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MiwgZm10dHkyKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQxIGZtdHR5MCBpblxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQzLCBmbXR0eTMpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDAgZm10dHkyIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdDIsIHN0cikpLCBmbXQzKSwgZm10dHkzKVxuXG4oKiBUeXBlIGFuIElnbm9yZWRfcGFyYW0gbm9kZSBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtIDogdHlwZSBwIHEgeCB5IHogdCB1IHYgYSBiIGMgZCBlIGYgLlxuICAgICh4LCB5LCB6LCB0LCBxLCBwKSBpZ25vcmVkIC0+XG4gICAgKHAsIHksIHosIHEsIHUsIHYpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXRfZm10dHlfZWJiID1cbmZ1biBpZ24gZm10IGZtdHR5IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQgXyAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQzMiBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgXyAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQ2NCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mbG9hdCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSAoSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpKSBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5KSAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHknLCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHkgZm10IGZtdHR5IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCcpLFxuICAgICAgICAgICAgICAgICAgIGZtdHR5JylcbiAgfCBJZ25vcmVkX3JlYWRlciAtPiAoXG4gICAgbWF0Y2ggZm10dHkgd2l0aFxuICAgIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXQnKSwgZm10dHknKVxuICAgIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcblxuYW5kIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgOiB0eXBlIGExIGEyIGIxIGIyIGMxIGMyIGQxIGQyIGUxIGUyIGYxIGYyIC5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGQyLCBhMikgaWdub3JlZCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXQgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHkgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gaWduIGZtdCBmbXR0eSAtPlxuICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkgaW5cbiAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoaWduLCBmbXQnKSwgZm10dHknKVxuXG4oKiBUeXBpbmcgb2YgdGhlIGNvbXBsZXggY2FzZTogXCIlXyguLi4lKVwiLiAqKVxuYW5kIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIDogdHlwZSB3IHggeSB6IHAgcyB0IHUgYSBiIGMgZCBlIGYgLlxuICAgICh3LCB4LCB5LCB6LCBzLCBwKSBmbXR0eSAtPlxuICAgIChwLCB4LCB5LCBzLCB0LCB1KSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5X2ZtdF9lYmIgPVxuZnVuIHN1Yl9mbXR0eSBmbXQgZm10dHkgLT4gbWF0Y2ggc3ViX2ZtdHR5LCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSBzdWJfZm10dHlfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QsIFN0cmluZ190eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludF90eSBzdWJfZm10dHlfcmVzdCwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDMyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDMyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnQ2NF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnQ2NF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEZsb2F0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZsb2F0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBCb29sX3R5IHN1Yl9mbXR0eV9yZXN0LCBCb29sX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChBbHBoYV90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIFRoZXRhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFRoZXRhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0LCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJZ25vcmVkX3JlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5LCBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1YjJfZm10dHkgPD4gRm10dHlfRUJCIHN1YjJfZm10dHknIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHknLCBzdWJfZm10dHlfcmVzdCcpLCBmbXQnKVxuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eSwgIHN1YjJfZm10dHksICBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgKCogVE9ETyBkZWZpbmUgRm10dHlfcmVsX0VCQiB0byByZW1vdmUgdGhvc2UgZXJhc2VfcmVsICopXG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHknKVxuICAgIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgc3ViX2ZtdHR5JyA9IHRyYW5zIChzeW1tIHN1YjFfZm10dHknKSBzdWIyX2ZtdHR5JyBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHN1Yl9mbXR0eScgaW5cbiAgICBsZXQgUmVmbCA9IGYyIFJlZmwgaW5cbiAgICBsZXQgUmVmbCA9IGY0IFJlZmwgaW5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiAoZXJhc2VfcmVsIHN1Yl9mbXR0eV9yZXN0KSBmbXQgZm10dHlfcmVzdFxuICAgIGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1tIHN1Yl9mbXR0eV9yZXN0JyksXG4gICAgICAgICAgICAgICAgICAgZm10JylcbiAgfCBFbmRfb2ZfZm10dHksIGZtdHR5IC0+XG4gICAgRm10dHlfZm10X0VCQiAoRW5kX29mX2ZtdHR5LCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGByZWNhc3RgIGlzIGEgYml0IGRpc2FwcG9pbnRpbmcuIFRoZVxuICAgaW52YXJpYW50IHByb3ZpZGVkIGJ5IHRoZSB0eXBlIGFyZSB2ZXJ5IHN0cm9uZzogdGhlIGlucHV0IGZvcm1hdCdzXG4gICB0eXBlIGlzIGluIHJlbGF0aW9uIHRvIHRoZSBvdXRwdXQgdHlwZSdzIGFzIHdpdG5lc3NlZCBieSB0aGVcbiAgIGZtdHR5X3JlbCBhcmd1bWVudC4gT25lIHdvdWxkIGF0IGZpcnN0IGV4cGVjdCB0aGlzIGZ1bmN0aW9uIHRvIGJlXG4gICB0b3RhbCwgYW5kIGltcGxlbWVudGFibGUgYnkgZXhoYXVzdGl2ZSBwYXR0ZXJuIG1hdGNoaW5nLiBJbnN0ZWFkLFxuICAgd2UgcmV1c2UgdGhlIGhpZ2hseSBwYXJ0aWFsIGFuZCBtdWNoIGxlc3Mgd2VsbC1kZWZpbmVkIGZ1bmN0aW9uXG4gICBgdHlwZV9mb3JtYXRgIHRoYXQgaGFzIGxvc3QgYWxsIGtub3dsZWRnZSBvZiB0aGUgY29ycmVzcG9uZGVuY2VcbiAgIGJldHdlZW4gdGhlIGFyZ3VtZW50J3MgdHlwZXMuXG5cbiAgIEJlc2lkZXMgdGhlIGZhY3QgdGhhdCB0aGlzIGZ1bmN0aW9uIHJldXNlcyBhIGxvdCBvZiB0aGVcbiAgIGB0eXBlX2Zvcm1hdGAgbG9naWMgKGVnLjogc2VlaW5nIEludF90eSBpbiB0aGUgZm10dHkgcGFyYW1ldGVyIGRvZXNcbiAgIG5vdCBsZXQgeW91IG1hdGNoIG9uIEludCBvbmx5LCBhcyB5b3UgbWF5IGluIGZhY3QgaGF2ZSBGbG9hdFxuICAgKEFyZ19wYWRkaW5nLCAuLi4pIChcIiUuKmRcIikgYmVnaW5uaW5nIHdpdGggYW4gSW50X3R5KSwgaXQgaXMgYWxzb1xuICAgYSBwYXJ0aWFsIGZ1bmN0aW9uLCBiZWNhdXNlIHRoZSB0eXBpbmcgaW5mb3JtYXRpb24gaW4gYSBmb3JtYXQgaXNcbiAgIG5vdCBxdWl0ZSBlbm91Z2ggdG8gcmVjb25zdHJ1Y3QgaXQgdW5hbWJpZ3VvdXNseS4gRm9yIGV4YW1wbGUsIHRoZVxuICAgZm9ybWF0IHR5cGVzIG9mIFwiJWQlX3JcIiBhbmQgXCIlX3IlZFwiIGhhdmUgdGhlIHNhbWUgZm9ybWF0NlxuICAgcGFyYW1ldGVycywgYnV0IHRoZXkgYXJlIG5vdCBhdCBhbGwgZXhjaGFuZ2VhYmxlLCBhbmQgcHV0dGluZyBvbmVcbiAgIGluIHBsYWNlIG9mIHRoZSBvdGhlciBtdXN0IHJlc3VsdCBpbiBhIGR5bmFtaWMgZmFpbHVyZS5cblxuICAgR2l2ZW4gdGhhdDpcbiAgIC0gd2UnZCBoYXZlIHRvIGR1cGxpY2F0ZSBhIGxvdCBvZiBub24tdHJpdmlhbCB0eXBpbmcgbG9naWMgZnJvbSB0eXBlX2Zvcm1hdFxuICAgLSB0aGlzIHdvdWxkbid0IGV2ZW4gZWxpbWluYXRlIChhbGwpIHRoZSBkeW5hbWljIGZhaWx1cmVzXG4gICB3ZSBkZWNpZGVkIHRvIGp1c3QgcmV1c2UgdHlwZV9mb3JtYXQgZGlyZWN0bHkgZm9yIG5vdy5cbiopXG5sZXQgcmVjYXN0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT5cbiAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQcmludGluZyB0b29scyAqKVxuXG4oKiBBZGQgcGFkZGluZyBzcGFjZXMgYXJvdW5kIGEgc3RyaW5nLiAqKVxubGV0IGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGgsIHBhZHR5ID1cbiAgICBhYnMgd2lkdGgsXG4gICAgKCogd2hpbGUgbGl0ZXJhbCBwYWRkaW5nIHdpZHRocyBhcmUgYWx3YXlzIG5vbi1uZWdhdGl2ZSxcbiAgICAgICBkeW5hbWljYWxseS1zZXQgd2lkdGhzIChBcmdfcGFkZGluZywgZWcuICUqZCkgbWF5IGJlIG5lZ2F0aXZlO1xuICAgICAgIHdlIGludGVycHJldCB0aG9zZSBhcyBzcGVjaWZ5aW5nIGEgcGFkZGluZy10by10aGUtbGVmdDsgdGhpc1xuICAgICAgIG1lYW5zIHRoYXQgJzAnIG1heSBnZXQgZHJvcHBlZCBldmVuIGlmIGl0IHdhcyBleHBsaWNpdGx5IHNldCxcbiAgICAgICBidXQ6XG4gICAgICAgLSB0aGlzIGlzIHdoYXQgdGhlIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkb2VzLCBhbmRcbiAgICAgICAgIHdlIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgaWYgcG9zc2libGVcbiAgICAgICAtIHdlIGNvdWxkIG9ubHkgc2lnbmFsIHRoaXMgaXNzdWUgYnkgZmFpbGluZyBhdCBydW50aW1lLFxuICAgICAgICAgd2hpY2ggaXMgbm90IHZlcnkgbmljZS4uLiAqKVxuICAgIGlmIHdpZHRoIDwgMCB0aGVuIExlZnQgZWxzZSBwYWR0eSBpblxuICBpZiB3aWR0aCA8PSBsZW4gdGhlbiBzdHIgZWxzZVxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIHdpZHRoIChpZiBwYWR0eSA9IFplcm9zIHRoZW4gJzAnIGVsc2UgJyAnKSBpblxuICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICB8IExlZnQgIC0+IFN0cmluZy5ibGl0IHN0ciAwIHJlcyAwIGxlblxuICAgIHwgUmlnaHQgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDAgJiYgKHN0ci5bMF0gPSAnKycgfHwgc3RyLlswXSA9ICctJyB8fCBzdHIuWzBdID0gJyAnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAwIHN0ci5bMF07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHdpZHRoIC0gbGVuICsgMSkgKGxlbiAtIDEpXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDEgJiYgc3RyLlswXSA9ICcwJyAmJiAoc3RyLlsxXSA9ICd4JyB8fCBzdHIuWzFdID0gJ1gnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAxIHN0ci5bMV07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHdpZHRoIC0gbGVuICsgMikgKGxlbiAtIDIpXG4gICAgfCBaZXJvcyAtPlxuICAgICAgU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgZW5kO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIEFkZCAnMCcgcGFkZGluZyB0byBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiAqKVxubGV0IGZpeF9pbnRfcHJlY2lzaW9uIHByZWMgc3RyID1cbiAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbWF0Y2ggc3RyLlswXSB3aXRoXG4gIHwgKCcrJyB8ICctJyB8ICcgJykgYXMgYyB3aGVuIHByZWMgKyAxID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAxKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDAgYztcbiAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHByZWMgLSBsZW4gKyAyKSAobGVuIC0gMSk7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgd2hlbiBwcmVjICsgMiA+IGxlbiAmJiBsZW4gPiAxICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAyKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHByZWMgLSBsZW4gKyA0KSAobGVuIC0gMik7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgd2hlbiBwcmVjID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgcHJlYyAnMCcgaW5cbiAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHByZWMgLSBsZW4pIGxlbjtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8IF8gLT5cbiAgICBzdHJcblxuKCogRXNjYXBlIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aW5nIGNvbnZlbnRpb24uICopXG5sZXQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nIHN0ciA9XG4gIGxldCBzdHIgPSBTdHJpbmcuZXNjYXBlZCBzdHIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVzID0gQnl0ZXMubWFrZSAobCArIDIpICdcXFwiJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9pbnQvaW50MzIvbmF0aXZlaW50L2ludDY0IGZpcnN0IGFyZ3VtZW50XG4gICBmcm9tIGFuIGludF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9pY29udiA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlZFwiIHwgSW50X3BkIC0+IFwiJStkXCIgfCBJbnRfc2QgLT4gXCIlIGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWlcIiB8IEludF9waSAtPiBcIiUraVwiIHwgSW50X3NpIC0+IFwiJSBpXCJcbiAgfCBJbnRfeCAtPiBcIiV4XCIgfCBJbnRfQ3ggLT4gXCIlI3hcIlxuICB8IEludF9YIC0+IFwiJVhcIiB8IEludF9DWCAtPiBcIiUjWFwiXG4gIHwgSW50X28gLT4gXCIlb1wiIHwgSW50X0NvIC0+IFwiJSNvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiV1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udkwgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJUxkXCIgfCBJbnRfcGQgLT4gXCIlK0xkXCIgfCBJbnRfc2QgLT4gXCIlIExkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVMaVwiIHwgSW50X3BpIC0+IFwiJStMaVwiIHwgSW50X3NpIC0+IFwiJSBMaVwiXG4gIHwgSW50X3ggLT4gXCIlTHhcIiB8IEludF9DeCAtPiBcIiUjTHhcIlxuICB8IEludF9YIC0+IFwiJUxYXCIgfCBJbnRfQ1ggLT4gXCIlI0xYXCJcbiAgfCBJbnRfbyAtPiBcIiVMb1wiIHwgSW50X0NvIC0+IFwiJSNMb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlTHVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252bCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlbGRcIiB8IEludF9wZCAtPiBcIiUrbGRcIiB8IEludF9zZCAtPiBcIiUgbGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWxpXCIgfCBJbnRfcGkgLT4gXCIlK2xpXCIgfCBJbnRfc2kgLT4gXCIlIGxpXCJcbiAgfCBJbnRfeCAtPiBcIiVseFwiIHwgSW50X0N4IC0+IFwiJSNseFwiXG4gIHwgSW50X1ggLT4gXCIlbFhcIiB8IEludF9DWCAtPiBcIiUjbFhcIlxuICB8IEludF9vIC0+IFwiJWxvXCIgfCBJbnRfQ28gLT4gXCIlI2xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVsdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZuID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVuZFwiIHwgSW50X3BkIC0+IFwiJStuZFwiIHwgSW50X3NkIC0+IFwiJSBuZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbmlcIiB8IEludF9waSAtPiBcIiUrbmlcIiB8IEludF9zaSAtPiBcIiUgbmlcIlxuICB8IEludF94IC0+IFwiJW54XCIgfCBJbnRfQ3ggLT4gXCIlI254XCJcbiAgfCBJbnRfWCAtPiBcIiVuWFwiIHwgSW50X0NYIC0+IFwiJSNuWFwiXG4gIHwgSW50X28gLT4gXCIlbm9cIiB8IEludF9DbyAtPiBcIiUjbm9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJW51XCJcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9mbG9hdCBmaXJzdCBhcmd1bWVudCBmcm9tIGEgZmxvYXRfY29udi4gKilcbmxldCBmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYyA9XG4gICAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICAgIGxldCBzeW1iID0gY2hhcl9vZl9mY29udiB+Y0Y6J2cnIGZjb252IGluXG4gICAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLic7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIHByZWMpO1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgc3ltYjtcbiAgICBidWZmZXJfY29udGVudHMgYnVmXG5cbmxldCB0cmFuc2Zvcm1faW50X2FsdCBpY29udiBzID1cbiAgbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgIGxldCBkaWdpdHMgPVxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgfCAnMCcuLic5JyAtPiBpbmNyIG5cbiAgICAgICAgfCBfIC0+ICgpXG4gICAgICBkb25lO1xuICAgICAgIW5cbiAgICBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyArIChkaWdpdHMgLSAxKSAvIDMpIGluXG4gICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgbGV0IHB1dCBjID0gQnl0ZXMuc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zIGluXG4gICAgbGV0IGxlZnQgPSByZWYgKChkaWdpdHMgLSAxKSBtb2QgMyArIDEpIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICcwJy4uJzknIGFzIGMgLT5cbiAgICAgICAgICBpZiAhbGVmdCA9IDAgdGhlbiAocHV0ICdfJzsgbGVmdCA6PSAzKTsgZGVjciBsZWZ0OyBwdXQgY1xuICAgICAgfCBjIC0+IHB1dCBjXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICB8IF8gLT4gc1xuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIGEgY29udmVyc2lvbi4gKilcbmxldCBjb252ZXJ0X2ludCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQgKGZvcm1hdF9vZl9pY29udiBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDMyIGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDMyIChmb3JtYXRfb2ZfaWNvbnZsIGljb252KSBuKVxubGV0IGNvbnZlcnRfbmF0aXZlaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X25hdGl2ZWludCAoZm9ybWF0X29mX2ljb252biBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDY0IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDY0IChmb3JtYXRfb2ZfaWNvbnZMIGljb252KSBuKVxuXG4oKiBDb252ZXJ0IGEgZmxvYXQgdG8gc3RyaW5nLiAqKVxuKCogRml4IHNwZWNpYWwgY2FzZSBvZiBcIk9DYW1sIGZsb2F0IGZvcm1hdFwiLiAqKVxubGV0IGNvbnZlcnRfZmxvYXQgZmNvbnYgcHJlYyB4ID1cbiAgbGV0IGhleCAoKSA9XG4gICAgbGV0IHNpZ24gPVxuICAgICAgbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgICAgIHwgRmxvYXRfZmxhZ19wIC0+ICcrJ1xuICAgICAgfCBGbG9hdF9mbGFnX3MgLT4gJyAnXG4gICAgICB8IF8gLT4gJy0nIGluXG4gICAgaGV4c3RyaW5nX29mX2Zsb2F0IHggcHJlYyBzaWduIGluXG4gIGxldCBhZGRfZG90X2lmX25lZWRlZCBzdHIgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCByZWMgaXNfdmFsaWQgaSA9XG4gICAgICBpZiBpID0gbGVuIHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnLicgfCAnZScgfCAnRScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gaXNfdmFsaWQgKGkgKyAxKSBpblxuICAgIGlmIGlzX3ZhbGlkIDAgdGhlbiBzdHIgZWxzZSBzdHIgXiBcIi5cIiBpblxuICBsZXQgY2FtbF9zcGVjaWFsX3ZhbCBzdHIgPSBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX3plcm8gLT4gc3RyXG4gICAgfCBGUF9pbmZpbml0ZSAtPiBpZiB4IDwgMC4wIHRoZW4gXCJuZWdfaW5maW5pdHlcIiBlbHNlIFwiaW5maW5pdHlcIlxuICAgIHwgRlBfbmFuIC0+IFwibmFuXCIgaW5cbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9oIC0+IGhleCAoKVxuICB8IEZsb2F0X0ggLT4gU3RyaW5nLnVwcGVyY2FzZV9hc2NpaSAoaGV4ICgpKVxuICB8IEZsb2F0X0NGIC0+IGNhbWxfc3BlY2lhbF92YWwgKGhleCAoKSlcbiAgfCBGbG9hdF9GIC0+XG4gICAgbGV0IHN0ciA9IGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHggaW5cbiAgICBjYW1sX3NwZWNpYWxfdmFsIChhZGRfZG90X2lmX25lZWRlZCBzdHIpXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgLT5cbiAgICBmb3JtYXRfZmxvYXQgKGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjKSB4XG5cbigqIENvbnZlcnQgYSBjaGFyIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGZvcm1hdF9jYW1sX2NoYXIgYyA9XG4gIGxldCBzdHIgPSBDaGFyLmVzY2FwZWQgYyBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcJycgaW5cbiAgU3RyaW5nLnVuc2FmZV9ibGl0IHN0ciAwIHJlcyAxIGw7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdHlwZSB0byBzdHJpbmcgKilcbmxldCBzdHJpbmdfb2ZfZm10dHkgZm10dHkgPVxuICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICBicHJpbnRfZm10dHkgYnVmIGZtdHR5O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBHZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uICopXG5cbigqIE1ha2UgYSBnZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uLiAqKVxuKCogVXNlZCB0byBnZW5lcmF0ZSBQcmludGYgYW5kIEZvcm1hdCBwcmludGluZyBmdW5jdGlvbnMuICopXG4oKiBQYXJhbWV0ZXJzOlxuICAgICBrOiBhIGNvbnRpbnVhdGlvbiBmaW5hbGx5IGFwcGxpZWQgdG8gdGhlIG91dHB1dCBzdHJlYW0gYW5kIHRoZSBhY2N1bXVsYXRvci5cbiAgICAgbzogdGhlIG91dHB1dCBzdHJlYW0gKHNlZSBrLCAlYSBhbmQgJXQpLlxuICAgICBhY2M6IHJldiBsaXN0IG9mIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXNoLCBmb3JtYXR0aW5nLCAuLi4pLlxuICAgICBmbXQ6IHRoZSBmb3JtYXQuICopXG5sZXQgcmVjIG1ha2VfcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfY2hhciAoYWNjLCBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmb3JtYXRfY2FtbF9jaGFyIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCAoZnVuIHN0ciAtPiBzdHIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQgaWNvbnZcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50MzIgaWNvbnZcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X25hdGl2ZWludCBpY29udlxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQ2NCBpY29udlxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfZmxvYXRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBmY29udlxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX29mX2Jvb2xcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgZnVuIGYgeCAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGVsYXkgKGFjYywgZnVuIG8gLT4gZiBvIHgpKSByZXN0XG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIGZ1biBmIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgbWFrZV9jdXN0b20gayBhY2MgcmVzdCBhcml0eSAoZiAoKSlcbiAgfCBSZWFkZXIgXyAtPlxuICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gKilcbiAgICAoKiBJbmRlZWQsIHNpbmNlIHByaW50ZiBhbmQgY28uIHRha2UgYSBmb3JtYXQ0IGFzIGFyZ3VtZW50LCB0aGUgJ2QgYW5kICdlXG4gICAgICAgdHlwZSBwYXJhbWV0ZXJzIG9mIGZtdCBhcmUgb2J2aW91c2x5IGVxdWFscy4gVGhlIFJlYWRlciBpcyB0aGVcbiAgICAgICBvbmx5IGNvbnN0cnVjdG9yIHdoaWNoIHRvdWNoICdkIGFuZCAnZSB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIGZvcm1hdFxuICAgICAgIHR5cGUsIGl0IGFkZHMgYW4gKC0+KSB0byB0aGUgJ2QgcGFyYW1ldGVycy4gQ29uc2VxdWVudGx5LCBhIGZvcm1hdDRcbiAgICAgICBjYW5ub3QgY29udGFpbiBhIFJlYWRlciBub2RlLCBleGNlcHQgaW4gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0b1xuICAgICAgIGFuICV7Li4uJX0uIEl0J3Mgbm90IGEgcHJvYmxlbSBiZWNhdXNlIG1ha2VfcHJpbnRmIGRvIG5vdCBjYWxsXG4gICAgICAgaXRzZWxmIHJlY3Vyc2l2ZWx5IG9uIHRoZSBzdWItZm9ybWF0IGFzc29jaWF0ZWQgdG8gJXsuLi4lfS4gKilcbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2ZsdXNoIGFjYykgcmVzdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2Nfc3RyaW5nX2xpdGVyYWwgKGFjYywgc3RyKSkgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19jaGFyX2xpdGVyYWwgKGFjYywgY2hyKSkgcmVzdFxuXG4gIHwgRm9ybWF0X2FyZyAoXywgc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHN0cmluZ19vZl9mbXR0eSBzdWJfZm10dHkgaW5cbiAgICAoZnVuIHN0ciAtPlxuICAgICAgaWdub3JlIHN0cjtcbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCB0eSkpIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT4gbWFrZV9wcmludGYgayBhY2NcbiAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICBsZXQgbmV3X2FjYyA9IEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJVtcIikgaW5cbiAgICBmdW4gXyAtPiBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgKCogVGhpcyBjYXNlIHNob3VsZCBiZSByZWZ1c2VkIGZvciBQcmludGYuICopXG4gICAgKCogQWNjZXB0ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICopXG4gICAgKCogSW50ZXJwcmV0ICVsLCAlbiBhbmQgJUwgYXMgJXUuICopXG4gICAgZnVuIG4gLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9pbnQgXCIldVwiIG4pIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBtYWtlX2lnbm9yZWRfcGFyYW0gayBhY2MgaWduIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2xpdCAoYWNjLCBmbXRpbmdfbGl0KSkgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX3RhZyBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX2JveCBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGsgYWNjXG5cbigqIERlbGF5IHRoZSBlcnJvciAoSW52YWxpZF9hcmd1bWVudCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikuICopXG4oKiBHZW5lcmF0ZSBmdW5jdGlvbnMgdG8gdGFrZSByZW1haW5pbmcgYXJndW1lbnRzIChhZnRlciB0aGUgXCIlX1wiKS4gKilcbmFuZCBtYWtlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuXG5cbigqIFNwZWNpYWwgY2FzZSBvZiBwcmludGYgXCIlXyhcIi4gKilcbmFuZCBtYWtlX2Zyb21fZm10dHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBmbXR0eSAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10dHkgZm10IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBCb29sX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFRoZXRhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFJlYWRlcl90eSBfICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8gICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEVuZF9vZl9mbXR0eSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyAoY29uY2F0X2ZtdHR5IHR5IHJlc3QpIGZtdFxuXG4oKiBJbnNlcnQgYW4gQWNjX2ludmFsaWRfYXJnIGluIHRoZSBhY2N1bXVsYXRvciBhbmQgY29udGludWUgdG8gZ2VuZXJhdGVcbiAgIGNsb3N1cmVzIHRvIGdldCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbmFuZCBtYWtlX2ludmFsaWRfYXJnIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+XG4gIG1ha2VfcHJpbnRmIGsgKEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikpIGZtdFxuXG4oKiBGaXggcGFkZGluZywgdGFrZSBpdCBhcyBhbiBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50IGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX3BhZGRpbmcgOiB0eXBlIHggeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeiAtPiBhKSBwYWRkaW5nIC0+ICh6IC0+IHN0cmluZykgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHRyYW5zIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCB0cmFucyB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoICh0cmFucyB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuXG4oKiBGaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGZvciBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQuICopXG4oKiBUYWtlIG9uZSBvciB0d28gZXh0cmEgaW50ZWdlciBhcmd1bWVudHMgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4gKGludF9jb252IC0+IHogLT4gc3RyaW5nKSAtPlxuICAgIGludF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIHRyYW5zIGljb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSB0cmFucyBpY29udiB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5cbigqIENvbnZlcnQgYSBmbG9hdCwgZml4IHBhZGRpbmcgYW5kIHByZWNpc2lvbiBpZiBuZWVkZWQuICopXG4oKiBUYWtlIHRoZSBmbG9hdCBhcmd1bWVudCBhbmQgb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCBmbG9hdCAtPiBhKSBwcmVjaXNpb24gLT4gZmxvYXRfY29udiAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgcHJlYyBmY29udiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuYW5kIG1ha2VfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB4IC0+IHkgPVxuICBmdW4gayBhY2MgcmVzdCBhcml0eSBmIC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgZikpIHJlc3RcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmIHgpXG5cbmxldCBjb25zdCB4IF8gPSB4XG5cbmxldCByZWMgbWFrZV9pcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+IHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG4gIGZ1biBrIG8gZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IENhbWxfc3RyaW5nIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9zdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgSW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQzMiAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEJvb2wgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQm9vbCAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9jdXN0b21fYXJpdHkgayBvIHJlc3QgYXJpdHlcbiAgICB8IFJlYWRlciBfIC0+XG4gICAgICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gIFNlZSB0aGVcbiAgICAgICAgICAgbm90ZSBpbiB0aGUgY29ycmVzcG9uZGluZyBjYXNlIGZvciBtYWtlX3ByaW50Zi4gKilcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgICAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT5cbiAgICAgICAgICBtYWtlX2lwcmludGYgayBvXG4gICAgICAgICAgICAoY29uY2F0X2ZtdCAocmVjYXN0IGZtdCBmbXR0eSkgcmVzdClcbiAgICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lnbm9yZWRfcGFyYW0gKGZ1biBfIC0+IGsgbykgKEVuZF9vZl9hY2MpIGlnbiByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIChmdW4ga29jIC0+IG1ha2VfaXByaW50ZiBrIGtvYyByZXN0KSBvIGZtdCdcbiAgICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICAgICAgayBvXG5hbmQgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gOlxuICB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4geCA9XG4gIGZ1biBrIG8gZm10IHBhZCBwcmVjIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IE5vX3BhZGRpbmcgICAsIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IExpdF9wYWRkaW5nIF8sIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTGl0X3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSkpXG5hbmQgZm5fb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPlxuICBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4geSA9XG4gIGZ1biBrIG8gZm10IC0+IGZ1bmN0aW9uXG4gICAgfCBDdXN0b21femVybyAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIGZtdFxuICAgIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT5cbiAgICAgICAgY29uc3QgKGZuX29mX2N1c3RvbV9hcml0eSBrIG8gZm10IGFyaXR5KVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBDb250aW51YXRpb25zIGZvciBtYWtlX3ByaW50ZiAqKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIG8gYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAe1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAW1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfY2hhciBvIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IGYgb1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZmx1c2ggb1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIG8gcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgYnVmcHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgYnVmcHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IGYgYlxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gYnVmcHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIGJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mICVhIGFuZCAldC4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgYiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQHtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkBbXCI7IHN0cnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIChmICgpKVxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXJyb3IgbWFuYWdlbWVudCAqKVxuXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIHByZXR0eS1wcmludGVkIGVycm9yIG1lc3NhZ2UuICopXG5sZXQgZmFpbHdpdGhfbWVzc2FnZSAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDI1NiBpblxuICBsZXQgayBhY2MgPSBzdHJwdXRfYWNjIGJ1ZiBhY2M7IGZhaWx3aXRoIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0dGluZyB0b29scyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGFuIG9wZW4gYmxvY2sgZGVzY3JpcHRpb24gKGluZGVudCwgYmxvY2tfdHlwZSkgKilcbmxldCBvcGVuX2JveF9vZl9zdHJpbmcgc3RyID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuICgwLCBQcF9ib3gpIGVsc2VcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgaW52YWxpZF9ib3ggKCkgPSBmYWlsd2l0aF9tZXNzYWdlIFwiaW52YWxpZCBib3ggZGVzY3JpcHRpb24gJVNcIiBzdHIgaW5cbiAgICBsZXQgcmVjIHBhcnNlX3NwYWNlcyBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBpIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgLT4gcGFyc2Vfc3BhY2VzIChpICsgMSlcbiAgICAgICAgfCBfIC0+IGlcbiAgICBhbmQgcGFyc2VfbHdvcmQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJ2EnIC4uICd6JyAtPiBwYXJzZV9sd29yZCBpIChqICsgMSlcbiAgICAgICAgfCBfIC0+IGpcbiAgICBhbmQgcGFyc2VfaW50IGkgaiA9XG4gICAgICBpZiBqID0gbGVuIHRoZW4gaiBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5bal0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gcGFyc2VfaW50IGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4gaiBpblxuICAgIGxldCB3c3RhcnQgPSBwYXJzZV9zcGFjZXMgMCBpblxuICAgIGxldCB3ZW5kID0gcGFyc2VfbHdvcmQgd3N0YXJ0IHdzdGFydCBpblxuICAgIGxldCBib3hfbmFtZSA9IFN0cmluZy5zdWIgc3RyIHdzdGFydCAod2VuZCAtIHdzdGFydCkgaW5cbiAgICBsZXQgbnN0YXJ0ID0gcGFyc2Vfc3BhY2VzIHdlbmQgaW5cbiAgICBsZXQgbmVuZCA9IHBhcnNlX2ludCBuc3RhcnQgbnN0YXJ0IGluXG4gICAgbGV0IGluZGVudCA9XG4gICAgICBpZiBuc3RhcnQgPSBuZW5kIHRoZW4gMCBlbHNlXG4gICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0ciBuc3RhcnQgKG5lbmQgLSBuc3RhcnQpKVxuICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIGxldCBleHBfZW5kID0gcGFyc2Vfc3BhY2VzIG5lbmQgaW5cbiAgICBpZiBleHBfZW5kIDw+IGxlbiB0aGVuIGludmFsaWRfYm94ICgpO1xuICAgIGxldCBib3hfdHlwZSA9IG1hdGNoIGJveF9uYW1lIHdpdGhcbiAgICAgIHwgXCJcIiB8IFwiYlwiIC0+IFBwX2JveFxuICAgICAgfCBcImhcIiAgICAgIC0+IFBwX2hib3hcbiAgICAgIHwgXCJ2XCIgICAgICAtPiBQcF92Ym94XG4gICAgICB8IFwiaHZcIiAgICAgLT4gUHBfaHZib3hcbiAgICAgIHwgXCJob3ZcIiAgICAtPiBQcF9ob3Zib3hcbiAgICAgIHwgXyAgICAgICAgLT4gaW52YWxpZF9ib3ggKCkgaW5cbiAgICAoaW5kZW50LCBib3hfdHlwZSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQYXJzaW5nIHRvb2xzICopXG5cbigqIENyZWF0ZSBhIHBhZGRpbmdfZm10X2ViYiBmcm9tIGEgcGFkZGluZyBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcGFkZGluZ19mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAgIChfLCBfLCBfLCBfLCBfKSBwYWRkaW5nX2ZtdF9lYmIgPVxuZnVuIHBhZCBmbXQgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChOb19wYWRkaW5nLCBmbXQpXG4gIHwgTGl0X3BhZGRpbmcgKHMsIHcpIC0+IFBhZGRpbmdfZm10X0VCQiAoTGl0X3BhZGRpbmcgKHMsIHcpLCBmbXQpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZGRpbmdfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgZm10KVxuXG4oKiBDcmVhdGUgYSBwcmVjaXNpb25fZm10X2ViYiBmcm9tIGEgcHJlY2lzaW9uIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnQgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwcmVjaXNpb24gLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHByZWNpc2lvbl9mbXRfZWJiID1cbmZ1biBwcmVjIGZtdCAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKE5vX3ByZWNpc2lvbiwgZm10KVxuICB8IExpdF9wcmVjaXNpb24gcCAtPiBQcmVjaXNpb25fZm10X0VCQiAoTGl0X3ByZWNpc2lvbiBwLCBmbXQpXG4gIHwgQXJnX3ByZWNpc2lvbiAgIC0+IFByZWNpc2lvbl9mbXRfRUJCIChBcmdfcHJlY2lzaW9uLCBmbXQpXG5cbigqIENyZWF0ZSBhIHBhZHByZWNfZm10X2ViYiBmcm9tIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcGFkZGluZyBhbmQgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudHNcbiAgIGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgOiB0eXBlIHggeSB6IHQgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT5cbiAgICAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgKF8sIF8sIF8sIF8sIF8pIHBhZHByZWNfZm10X2ViYiA9XG5mdW4gcGFkIHByZWMgZm10IC0+XG4gIGxldCBQcmVjaXNpb25fZm10X0VCQiAocHJlYywgZm10JykgPSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIHByZWMgZm10IGluXG4gIG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAgICAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoTm9fcGFkZGluZywgcHJlYywgZm10JylcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkcHJlY19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIHByZWMsIGZtdCcpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgcHJlYywgZm10JylcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHBhcnNpbmcgKilcblxuKCogUGFyc2UgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZm9ybWF0IGFuZCBjcmVhdGUgYSBmbXRfZWJiLiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIGluIGNhc2Ugb2YgaW52YWxpZCBmb3JtYXQuICopXG5sZXQgZm10X2ViYl9vZl9zdHJpbmcgP2xlZ2FjeV9iZWhhdmlvciBzdHIgPVxuICAoKiBQYXJhbWV0ZXJzIG5hbWluZyBjb252ZW50aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBsaXRfc3RhcnQ6IHN0YXJ0IG9mIHRoZSBsaXRlcmFsIHNlcXVlbmNlLiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN0cl9pbmQ6IGN1cnJlbnQgaW5kZXggaW4gdGhlIHN0cmluZy4gICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gZW5kX2luZDogZW5kIG9mIHRoZSBjdXJyZW50IChzdWItKWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwY3RfaW5kOiBpbmRleCBvZiB0aGUgJyUnIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgKilcbiAgKCogICAtIHplcm86ICBpcyB0aGUgJzAnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gbWludXM6IGlzIHRoZSAnLScgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBwbHVzOiAgaXMgdGhlICcrJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGhhc2g6ICBpcyB0aGUgJyMnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gc3BhY2U6IGlzIHRoZSAnICcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBpZ246ICAgaXMgdGhlICdfJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBhZDogcGFkZGluZyBvZiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gcHJlYzogcHJlY2lzaW9uIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBzeW1iOiBjaGFyIHJlcHJlc2VudGluZyB0aGUgY29udmVyc2lvbiAoJ2MnLCAncycsICdkJywgLi4uKS4gKilcbiAgKCogICAtIGNoYXJfc2V0OiBzZXQgb2YgY2hhcmFjdGVycyBhcyBiaXRtYXAgKHNlZSBzY2FuZiAlWy4uLl0pLiAgICAqKVxuXG4gIGxldCBsZWdhY3lfYmVoYXZpb3IgPSBtYXRjaCBsZWdhY3lfYmVoYXZpb3Igd2l0aFxuICAgIHwgU29tZSBmbGFnIC0+IGZsYWdcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAoKiAgV2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZCwgdGhlIGZvcm1hdCBwYXJzZXIgdHJpZXMgdG8gYmVoYXZlIGFzXG4gICAgICB0aGUgPDQuMDIgaW1wbGVtZW50YXRpb25zLCBpbiBwYXJ0aWN1bGFyIGl0IGlnbm9yZXMgbW9zdCBiZW5pZ25cbiAgICAgIG5vbnNlbnNpY2FsIGZvcm1hdHMuIFdoZW4gdGhlIGZsYWcgaXMgZGlzYWJsZWQsIGl0IHdpbGwgcmVqZWN0IGFueVxuICAgICAgZm9ybWF0IHRoYXQgaXMgbm90IGFjY2VwdGVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLlxuXG4gICAgICBBIHR5cGljYWwgZXhhbXBsZSB3b3VsZCBiZSBcIiUrIGRcIjogc3BlY2lmeWluZyBib3RoICcrJyAoaWYgdGhlXG4gICAgICBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoIGEgJysnIHRvIGdldCB0aGUgc2FtZSB3aWR0aCBhc1xuICAgICAgbmVnYXRpdmUgbnVtYmVycykgYW5kICcgJyAoaWYgdGhlIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGhcbiAgICAgIGEgc3BhY2UpIGRvZXMgbm90IG1ha2Ugc2Vuc2UsIGJ1dCB0aGUgbGVnYWN5ICg8IDQuMDIpXG4gICAgICBpbXBsZW1lbnRhdGlvbiB3YXMgaGFwcHkgdG8ganVzdCBpZ25vcmUgdGhlIHNwYWNlLlxuICAqKVxuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZCBtc2cgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIG1zZ1xuICBpblxuXG4gICgqIFVzZWQgd2hlbiB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgKG9yIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXQpIHdhcyBlbmNvdW50ZXJlZFxuICAgICAgdW5leHBlY3RlZGx5LiAqKVxuICBsZXQgdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UgZW5kX2luZFxuICAgICAgXCJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXRcIlxuICBpblxuXG4gICgqIFVzZWQgZm9yICUwYzogbm8gb3RoZXIgd2lkdGhzIGFyZSBpbXBsZW1lbnRlZCAqKVxuICBsZXQgaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kXG4gICAgICBcIm5vbi16ZXJvIHdpZHRocyBhcmUgdW5zdXBwb3J0ZWQgZm9yICVjIGNvbnZlcnNpb25zXCJcbiAgaW5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIG9wdGlvbiBkZXBlbmRlbmN5XG4gICAgIHByb2JsZW0uICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IHN0cl9pbmQgYyBzID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAnJWMnIHdpdGhvdXQgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgYyBzXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIHVuZXhwZWN0ZWRcbiAgICAgY2hhcmFjdGVyLiAqKVxuICBsZXQgZXhwZWN0ZWRfY2hhcmFjdGVyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZCA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlcyBleHBlY3RlZCwgcmVhZCAlQ1wiXG4gICAgICBzdHIgc3RyX2luZCBleHBlY3RlZCByZWFkXG4gIGluXG5cbiAgKCogUGFyc2UgdGhlIHN0cmluZyBmcm9tIGJlZ19pbmQgKGluY2x1ZGVkKSB0byBlbmRfaW5kIChleGNsdWRlZCkuICopXG4gIGxldCByZWMgcGFyc2UgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gYmVnX2luZCBlbmRfaW5kIC0+IHBhcnNlX2xpdGVyYWwgYmVnX2luZCBiZWdfaW5kIGVuZF9pbmRcblxuICAoKiBSZWFkIGxpdGVyYWwgY2hhcmFjdGVycyB1cCB0byAnJScgb3IgJ0AnIHNwZWNpYWwgY2hhcmFjdGVycy4gKilcbiAgYW5kIHBhcnNlX2xpdGVyYWwgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIEVuZF9vZl9mb3JtYXQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2Zvcm1hdCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfYWZ0ZXJfYXQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfbGl0ZXJhbCBsaXRfc3RhcnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgKCogUGFyc2UgYSBmb3JtYXQgYWZ0ZXIgJyUnICopXG4gIGFuZCBwYXJzZV9mb3JtYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBlbmRfaW5kIC0+IHBhcnNlX2lnbiBwY3RfaW5kIChwY3RfaW5kICsgMSkgZW5kX2luZFxuXG4gIGFuZCBwYXJzZV9pZ24gOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ18nIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgKHN0cl9pbmQrMSkgZW5kX2luZCB0cnVlXG4gICAgICB8IF8gLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgZmFsc2VcblxuICBhbmQgcGFyc2VfZmxhZ3MgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmJcbiAgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgaWduIC0+XG4gICAgbGV0IHplcm8gPSByZWYgZmFsc2UgYW5kIG1pbnVzID0gcmVmIGZhbHNlXG4gICAgYW5kIHBsdXMgPSByZWYgZmFsc2UgYW5kIHNwYWNlID0gcmVmIGZhbHNlXG4gICAgYW5kIGhhc2ggPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2V0X2ZsYWcgc3RyX2luZCBmbGFnID1cbiAgICAgICgqIGluIGxlZ2FjeSBtb2RlLCBkdXBsaWNhdGUgZmxhZ3MgYXJlIGFjY2VwdGVkICopXG4gICAgICBpZiAhZmxhZyAmJiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIGR1cGxpY2F0ZSBmbGFnICVDXCJcbiAgICAgICAgICBzdHIgc3RyX2luZCBzdHIuW3N0cl9pbmRdO1xuICAgICAgZmxhZyA6PSB0cnVlO1xuICAgIGluXG4gICAgbGV0IHJlYyByZWFkX2ZsYWdzIHN0cl9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnMCcgLT4gc2V0X2ZsYWcgc3RyX2luZCB6ZXJvOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICctJyAtPiBzZXRfZmxhZyBzdHJfaW5kIG1pbnVzOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJysnIC0+IHNldF9mbGFnIHN0cl9pbmQgcGx1czsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnIycgLT4gc2V0X2ZsYWcgc3RyX2luZCBoYXNoOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyAnIC0+IHNldF9mbGFnIHN0cl9pbmQgc3BhY2U7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmRcbiAgICAgICAgICAhemVybyAhbWludXMgIXBsdXMgIWhhc2ggIXNwYWNlIGlnblxuICAgICAgZW5kXG4gICAgaW5cbiAgICByZWFkX2ZsYWdzIHN0cl9pbmRcblxuICAoKiBUcnkgdG8gcmVhZCBhIGRpZ2l0YWwgb3IgYSAnKicgcGFkZGluZy4gKilcbiAgYW5kIHBhcnNlX3BhZGRpbmcgOiB0eXBlIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCB6ZXJvIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYWR0eSA9IG1hdGNoIHplcm8sIG1pbnVzIHdpdGhcbiAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IFJpZ2h0XG4gICAgICB8IGZhbHNlLCB0cnVlICAtPiBMZWZ0XG4gICAgICB8ICB0cnVlLCBmYWxzZSAtPiBaZXJvc1xuICAgICAgfCAgdHJ1ZSwgdHJ1ZSAgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGVmdFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnLScgXCIwXCIgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgIGxldCBuZXdfaW5kLCB3aWR0aCA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgKExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gKEFyZ19wYWRkaW5nIHBhZHR5KVxuICAgIHwgXyAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgICAgfCBMZWZ0ICAtPlxuICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy0nIFwicGFkZGluZ1wiO1xuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICB8IFplcm9zIC0+XG4gICAgICAgICAoKiBhICcwJyBwYWRkaW5nIGluZGljYXRpb24gbm90IGZvbGxvd2VkIGJ5IGFueXRoaW5nIHNob3VsZFxuICAgICAgICAgICBiZSBpbnRlcnByZXRlZCBhcyBhIFJpZ2h0IHBhZGRpbmcgb2Ygd2lkdGggMC4gVGhpcyBpcyB1c2VkXG4gICAgICAgICAgIGJ5IHNjYW5uaW5nIGNvbnZlcnNpb25zICUwcyBhbmQgJTBjICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIChMaXRfcGFkZGluZyAoUmlnaHQsIDApKVxuICAgICAgfCBSaWdodCAtPlxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICBlbmRcblxuICAoKiBJcyBwcmVjaXNpb24gZGVmaW5lZD8gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3BhZGRpbmcgOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnLicgLT5cbiAgICAgIHBhcnNlX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZFxuICAgIHwgc3ltYiAtPlxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBOb19wcmVjaXNpb24gcGFkIHN5bWJcblxuICAoKiBSZWFkIHRoZSBkaWdpdGFsIG9yICcqJyBwcmVjaXNpb24uICopXG4gIGFuZCBwYXJzZV9wcmVjaXNpb24gOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZCA9XG4gICAgICBsZXQgbmV3X2luZCwgcHJlYyA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gcHJlYykgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kXG4gICAgfCAoJysnIHwgJy0nKSBhcyBzeW1iIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+XG4gICAgICAoKiBMZWdhY3kgbW9kZSB3b3VsZCBhY2NlcHQgYW5kIGlnbm9yZSAnKycgb3IgJy0nIGJlZm9yZSB0aGVcbiAgICAgICAgIGludGVnZXIgZGVzY3JpYmluZyB0aGUgZGVzaXJlZCBwcmVjaXNpb247IG5vdGUgdGhhdCB0aGlzXG4gICAgICAgICBjYW5ub3QgaGFwcGVuIGZvciBwYWRkaW5nIHdpZHRoLCBhcyAnKycgYW5kICctJyBhbHJlYWR5IGhhdmVcbiAgICAgICAgIGEgc2VtYW50aWNzIHRoZXJlLlxuXG4gICAgICAgICBUaGF0IHNhaWQsIHRoZSBpZGVhIChzdXBwb3J0ZWQgYnkgdGhpcyB0d2VhaykgdGhhdCB3aWR0aCBhbmRcbiAgICAgICAgIHByZWNpc2lvbiBsaXRlcmFscyBhcmUgXCJpbnRlZ2VyIGxpdGVyYWxzXCIgaW4gdGhlIE9DYW1sIHNlbnNlIGlzXG4gICAgICAgICBzdGlsbCBibGF0YW50bHkgd3JvbmcsIGFzIDEyM180NTYgb3IgMHhGRiBhcmUgcmVqZWN0ZWQuICopXG4gICAgICBwYXJzZV9saXRlcmFsIChtaW51cyB8fCBzeW1iID0gJy0nKSAoc3RyX2luZCArIDEpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIHBhZCBBcmdfcHJlY2lzaW9uXG4gICAgfCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBub3RlIHRoYXQgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRpZCBub3QgaWdub3JlICcuJyB3aXRob3V0XG4gICAgICAgICAgIGEgbnVtYmVyIChhcyBpdCBkb2VzIGZvciBwYWRkaW5nIGluZGljYXRpb25zKSwgYnV0XG4gICAgICAgICAgIGludGVycHJldHMgaXQgYXMgJy4wJyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiAwKVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy4nIFwicHJlY2lzaW9uXCJcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogdCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2NvbnYgKHR5cGUgdSkgKHR5cGUgdikgKHBhZHByZWMgOiAodSwgdikgcGFkZGluZykgPVxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBwcmVjIHBhZHByZWMgc3RyLltzdHJfaW5kXSBpblxuICAgICgqIGluIGxlZ2FjeSBtb2RlLCBzb21lIGZvcm1hdHMgKCVzIGFuZCAlUykgYWNjZXB0IGEgd2VpcmQgbWl4IG9mXG4gICAgICAgcGFkZGluZyBhbmQgcHJlY2lzaW9uLCB3aGljaCBpcyBtZXJnZWQgYXMgYSBzaW5nbGUgcGFkZGluZ1xuICAgICAgIGluZm9ybWF0aW9uLiBGb3IgZXhhbXBsZSwgaW4gJS4xMHMgdGhlIHByZWNpc2lvbiBpcyBpbXBsaWNpdGx5XG4gICAgICAgdW5kZXJzdG9vZCBhcyBwYWRkaW5nICUxMHMsIGJ1dCB0aGUgbGVmdC1wYWRkaW5nIGNvbXBvbmVudCBtYXlcbiAgICAgICBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgbGVmdCBwYWRkaW5nIG9yIGEgbmVnYXRpdmUgcHJlY2lzaW9uOlxuICAgICAgICUtLjNzIGFuZCAlLi0zcyBhcmUgZXF1aXZhbGVudCB0byAlLTNzICopXG4gICAgbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgLT4gKFxuICAgICAgbWF0Y2ggbWludXMsIHByZWMgd2l0aFxuICAgICAgICB8IF8sIE5vX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IE5vX3BhZGRpbmdcbiAgICAgICAgfCBmYWxzZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChSaWdodCwgbikpXG4gICAgICAgIHwgdHJ1ZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChMZWZ0LCBuKSlcbiAgICAgICAgfCBmYWxzZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBSaWdodClcbiAgICAgICAgfCB0cnVlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIExlZnQpXG4gICAgKVxuICAgIHwgcGFkIC0+IHBhcnNlX2NvbnYgcGFkXG5cbiAgKCogQ2FzZSBhbmFseXNpcyBvbiBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfY29udmVyc2lvbiA6IHR5cGUgeCB5IHogdCB1IHYgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gKHgsIHkpIHBhZGRpbmcgLT5cbiAgICAgICAgKHosIHQpIHByZWNpc2lvbiAtPiAodSwgdikgcGFkZGluZyAtPiBjaGFyIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgcGFkcHJlYyBzeW1iIC0+XG4gICAgKCogRmxhZ3MgdXNlZCB0byBjaGVjayBvcHRpb24gdXNhZ2VzL2NvbXBhdGliaWxpdGllcy4gKilcbiAgICBsZXQgcGx1c191c2VkICA9IHJlZiBmYWxzZSBhbmQgaGFzaF91c2VkID0gcmVmIGZhbHNlXG4gICAgYW5kIHNwYWNlX3VzZWQgPSByZWYgZmFsc2UgYW5kIGlnbl91c2VkICAgPSByZWYgZmFsc2VcbiAgICBhbmQgcGFkX3VzZWQgICA9IHJlZiBmYWxzZSBhbmQgcHJlY191c2VkICA9IHJlZiBmYWxzZSBpblxuXG4gICAgKCogQWNjZXNzIHRvIG9wdGlvbnMsIHVwZGF0ZSBmbGFncy4gKilcbiAgICBsZXQgZ2V0X3BsdXMgICAgKCkgPSBwbHVzX3VzZWQgIDo9IHRydWU7IHBsdXNcbiAgICBhbmQgZ2V0X2hhc2ggICAoKSA9IGhhc2hfdXNlZCA6PSB0cnVlOyBoYXNoXG4gICAgYW5kIGdldF9zcGFjZSAgICgpID0gc3BhY2VfdXNlZCA6PSB0cnVlOyBzcGFjZVxuICAgIGFuZCBnZXRfaWduICAgICAoKSA9IGlnbl91c2VkICAgOj0gdHJ1ZTsgaWduXG4gICAgYW5kIGdldF9wYWQgICAgICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRcbiAgICBhbmQgZ2V0X3ByZWMgICAgKCkgPSBwcmVjX3VzZWQgIDo9IHRydWU7IHByZWNcbiAgICBhbmQgZ2V0X3BhZHByZWMgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZHByZWMgaW5cblxuICAgIGxldCBnZXRfaW50X3BhZCAoKSA6ICh4LHkpIHBhZGRpbmcgPVxuICAgICAgKCogJTUuM2QgaXMgYWNjZXB0ZWQgYW5kIG1lYW5pbmdmdWw6IHBhZCB0byBsZW5ndGggNSB3aXRoXG4gICAgICAgICBzcGFjZXMsIGJ1dCBmaXJzdCBwYWQgd2l0aCB6ZXJvcyB1cHRvIGxlbmd0aCAzICgwLXBhZGRpbmdcbiAgICAgICAgIGlzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBcInByZWNpc2lvblwiIGZvciBpbnRlZ2VyIGZvcm1hdHMpLlxuXG4gICAgICAgICAlMDUuM2QgaXMgcmVkdW5kYW50OiBwYWQgdG8gbGVuZ3RoIDUgKndpdGggemVyb3MqLCBidXRcbiAgICAgICAgIGZpcnN0IHBhZCB3aXRoIHplcm9zLi4uIFRvIGFkZCBpbnN1bHQgdG8gdGhlIGluanVyeSwgdGhlXG4gICAgICAgICBsZWdhY3kgaW1wbGVtZW50YXRpb24gaWdub3JlcyB0aGUgMC1wYWRkaW5nIGluZGljYXRpb24gYW5kXG4gICAgICAgICBkb2VzIHRoZSA1IHBhZGRpbmcgd2l0aCBzcGFjZXMgaW5zdGVhZC4gV2UgcmV1c2UgdGhpc1xuICAgICAgICAgaW50ZXJwcmV0YXRpb24gZm9yIGNvbXBhdGliaWxpdHksIGJ1dCBzdGF0aWNhbGx5IHJlamVjdCB0aGlzXG4gICAgICAgICBmb3JtYXQgd2hlbiB0aGUgbGVnYWN5IG1vZGUgaXMgZGlzYWJsZWQsIHRvIHByb3RlY3Qgc3RyaWN0XG4gICAgICAgICB1c2VycyBmcm9tIHRoaXMgY29ybmVyIGNhc2UuICopXG4gICAgICAgbWF0Y2ggZ2V0X3BhZCAoKSwgZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgICAgfCBwYWQsIE5vX3ByZWNpc2lvbiAtPiBwYWRcbiAgICAgICAgIHwgTm9fcGFkZGluZywgXyAgICAgLT4gTm9fcGFkZGluZ1xuICAgICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIG4pLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgbilcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MsIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZCBpblxuXG4gICAgKCogQ2hlY2sgdGhhdCBwYWR0eSA8PiBaZXJvcy4gKilcbiAgICBsZXQgY2hlY2tfbm9fMCBzeW1iICh0eXBlIGEgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA6IChhLGIpIHBhZGRpbmcgPVxuICAgICAgbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKChMZWZ0IHwgUmlnaHQpLCBfKSAtPiBwYWRcbiAgICAgIHwgQXJnX3BhZGRpbmcgKExlZnQgfCBSaWdodCkgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgIGluXG5cbiAgICAoKiBHZXQgcGFkZGluZyBhcyBhIHBhZF9vcHRpb24gKHNlZSBcIiVfXCIsIFwiJXtcIiwgXCIlKFwiIGFuZCBcIiVbXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IG9wdF9vZl9wYWQgYyAodHlwZSBhKSAodHlwZSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpID0gbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBOb25lXG4gICAgICB8IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpIC0+IFNvbWUgd2lkdGhcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJzAnXCJcbiAgICAgIHwgTGl0X3BhZGRpbmcgKExlZnQsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInLSdcIlxuICAgICAgfCBBcmdfcGFkZGluZyBfIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJyonXCJcbiAgICBpblxuICAgIGxldCBnZXRfcGFkX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkICgpKSBpblxuICAgIGxldCBnZXRfcGFkcHJlY19vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZHByZWMgKCkpIGluXG5cbiAgICAoKiBHZXQgcHJlY2lzaW9uIGFzIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfZlwiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBnZXRfcHJlY19vcHQgKCkgPSBtYXRjaCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICB8IE5vX3ByZWNpc2lvbiAgICAgICAtPiBOb25lXG4gICAgICB8IExpdF9wcmVjaXNpb24gbmRlYyAtPiBTb21lIG5kZWNcbiAgICAgIHwgQXJnX3ByZWNpc2lvbiAgICAgIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKidcIlxuICAgIGluXG5cbiAgICBsZXQgZm10X3Jlc3VsdCA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJywnIC0+XG4gICAgICBwYXJzZSBzdHJfaW5kIGVuZF9pbmRcbiAgICB8ICdjJyAtPlxuICAgICAgbGV0IGNoYXJfZm9ybWF0IGZtdF9yZXN0ID0gKCogJWMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKENoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IHNjYW5fZm9ybWF0IGZtdF9yZXN0ID0gKCogJTBjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3NjYW5fbmV4dF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIGdldF9wYWRfb3B0ICdjJyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgMCAtPiBzY2FuX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgX24gLT5cbiAgICAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvclxuICAgICAgICAgICB0aGVuIGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmRcbiAgICAgICAgICAgZWxzZSAoKiBsZWdhY3kgaWdub3JlcyAlYyB3aWR0aHMgKikgY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgIGVuZFxuICAgIHwgJ0MnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2FtbF9jaGFyLGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoQ2FtbF9jaGFyIGZtdF9yZXN0KVxuICAgIHwgJ3MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoU3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ1MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2NhbWxfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChDYW1sX3N0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPlxuICAgICAgbGV0IGljb252ID0gY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ04nIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBUb2tlbl9jb3VudGVyIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyB8ICduJyB8ICdMJyB3aGVuIHN0cl9pbmQ9ZW5kX2luZCB8fCBub3QgKGlzX2ludF9iYXNlIHN0ci5bc3RyX2luZF0pIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBjb3VudGVyX29mX2NoYXIgc3ltYiBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDMyIChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50MzIgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICduJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKVxuICAgICAgICAgIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDY0IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50NjQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdmJyB8ICdlJyB8ICdFJyB8ICdnJyB8ICdHJyB8ICdGJyB8ICdoJyB8ICdIJyAtPlxuICAgICAgbGV0IGZjb252ID1cbiAgICAgICAgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZFxuICAgICAgICAgIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mbG9hdCAoZ2V0X3BhZF9vcHQgJ18nLCBnZXRfcHJlY19vcHQgKCkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEZsb2F0IChmY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnYicgfCAnQicgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfYm9vbCAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQm9vbCAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdhJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEFscGhhIGZtdF9yZXN0KVxuICAgIHwgJ3QnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoVGhldGEgZm10X3Jlc3QpXG4gICAgfCAncicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoUmVhZGVyIGZtdF9yZXN0KVxuICAgIHwgJyEnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRmx1c2ggZm10X3Jlc3QpXG4gICAgfCAoJyUnIHwgJ0AnKSBhcyBjIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsIChjLCBmbXRfcmVzdCkpXG4gICAgfCAneycgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICd9JyBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfYXJnIChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfYXJnIChnZXRfcGFkX29wdCAneycsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJygnIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnKScgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICcoJywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnWycgLT5cbiAgICAgIGxldCBuZXh0X2luZCwgY2hhcl9zZXQgPSBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnXycsIGNoYXJfc2V0KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdbJywgY2hhcl9zZXQsIGZtdF9yZXN0KSlcbiAgICB8ICctJyB8ICcrJyB8ICcjJyB8ICcgJyB8ICdfJyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgZmxhZyAlQyBpcyBvbmx5IGFsbG93ZWQgYWZ0ZXIgdGhlICclJScsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb25cIlxuICAgICAgICBzdHIgcGN0X2luZCBzeW1iXG4gICAgfCBfIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBpbnZhbGlkIGNvbnZlcnNpb24gXFxcIiUlJWNcXFwiXCIgc3RyIChzdHJfaW5kIC0gMSkgc3ltYlxuICAgIGluXG4gICAgKCogQ2hlY2sgZm9yIHVudXNlZCBvcHRpb25zLCBhbmQgcmVqZWN0IHRoZW0gYXMgaW5jb21wYXRpYmxlLlxuXG4gICAgICAgU3VjaCBjaGVja3MgbmVlZCB0byBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSwgYXMgdGhlIGxlZ2FjeVxuICAgICAgIHBhcnNlciBzaWxlbnRseSBpZ25vcmVkIGluY29tcGF0aWJsZSBmbGFncy4gKilcbiAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW4gYmVnaW5cbiAgICBpZiBub3QgIXBsdXNfdXNlZCAmJiBwbHVzIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCI7XG4gICAgaWYgbm90ICFoYXNoX3VzZWQgJiYgaGFzaCB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiO1xuICAgIGlmIG5vdCAhc3BhY2VfdXNlZCAmJiBzcGFjZSB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiO1xuICAgIGlmIG5vdCAhcGFkX3VzZWQgICYmIFBhZGRpbmdfRUJCIHBhZCA8PiBQYWRkaW5nX0VCQiBOb19wYWRkaW5nIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiYHBhZGRpbmcnXCI7XG4gICAgaWYgbm90ICFwcmVjX3VzZWQgJiYgUHJlY2lzaW9uX0VCQiBwcmVjIDw+IFByZWNpc2lvbl9FQkIgTm9fcHJlY2lzaW9uIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAoaWYgaWduIHRoZW4gJ18nIGVsc2Ugc3ltYilcbiAgICAgICAgXCJgcHJlY2lzaW9uJ1wiO1xuICAgIGlmIGlnbiAmJiBwbHVzIHRoZW4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicrJ1wiO1xuICAgIGVuZDtcbiAgICAoKiB0aGlzIGxhc3QgdGVzdCBtdXN0IG5vdCBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSxcbiAgICAgICBhcyBpZ25vcmluZyBpdCB3b3VsZCB0eXBpY2FsbHkgcmVzdWx0IGluIGEgZGlmZmVyZW50IHR5cGluZ1xuICAgICAgIHRoYW4gd2hhdCB0aGUgbGVnYWN5IHBhcnNlciB1c2VkICopXG4gICAgaWYgbm90ICFpZ25fdXNlZCAmJiBpZ24gdGhlblxuICAgICAgYmVnaW4gbWF0Y2ggc3ltYiB3aXRoXG4gICAgICAgICgqIGFyZ3VtZW50LWxlc3MgZm9ybWF0cyBjYW4gc2FmZWx5IGJlIGlnbm9yZWQgaW4gbGVnYWN5IG1vZGUgKilcbiAgICAgICAgfCAoJ0AnIHwgJyUnIHwgJyEnIHwgJywnKSB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIidfJ1wiXG4gICAgICBlbmQ7XG4gICAgZm10X3Jlc3VsdFxuXG4gICgqIFBhcnNlIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24gKGFmdGVyICdAJykuICopXG4gIGFuZCBwYXJzZV9hZnRlcl9hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBFbmRfb2ZfZm9ybWF0KSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ1snIC0+XG4gICAgICAgIHBhcnNlX3RhZyBmYWxzZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV9ib3gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIHBhcnNlX3RhZyB0cnVlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnfScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX3RhZywgZm10X3Jlc3QpKVxuICAgICAgfCAnLCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAsXCIsIDAsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCBcIiwgMSwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJzsnIC0+XG4gICAgICAgIHBhcnNlX2dvb2RfYnJlYWsgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICc/JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRkZsdXNoLCBmbXRfcmVzdCkpXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGb3JjZV9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICcuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRmx1c2hfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgcGFyc2VfbWFnaWNfc2l6ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX2F0LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyB3aGVuIHN0cl9pbmQgKyAxIDwgZW5kX2luZCAmJiBzdHIuW3N0cl9pbmQgKyAxXSA9ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMikgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9wZXJjZW50LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgZm10X3Jlc3QpKVxuICAgICAgfCBjIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljIGMsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPG5hbWU+IGFmdGVyIFwiQHtcIiBvciBcIkBbXCIuICopXG4gIGFuZCBwYXJzZV90YWcgOiB0eXBlIGUgZiAuIGJvb2wgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBpc19vcGVuX3RhZyBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICB0cnlcbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBsZXQgaW5kID0gU3RyaW5nLmluZGV4X2Zyb20gc3RyIChzdHJfaW5kICsgMSkgJz4nIGluXG4gICAgICAgIGlmIGluZCA+PSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIHN0cl9pbmQgKGluZCAtIHN0cl9pbmQgKyAxKSBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChpbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIChpbmQgKyAxKSBpblxuICAgICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoc3ViX2ZtdCwgc3ViX3N0cikgaW5cbiAgICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcbiAgICAgIHwgXyAtPlxuICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChFbmRfb2ZfZm9ybWF0LCBcIlwiKSBpblxuICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8d2lkdGggb2Zmc2V0PiBhZnRlciBcIkA7XCIuICopXG4gIGFuZCBwYXJzZV9nb29kX2JyZWFrIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGxldCBuZXh0X2luZCwgZm9ybWF0dGluZ19saXQgPVxuICAgICAgdHJ5XG4gICAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHx8IHN0ci5bc3RyX2luZF0gPD4gJzwnIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gKFxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHdpZHRoID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzNdIHdpdGhcbiAgICAgICAgICAgICAgfCAnPicgLT5cbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzMtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfMyArIDEsIEJyZWFrIChzLCB3aWR0aCwgMClcbiAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNCwgb2Zmc2V0ID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzMgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzUgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF80IGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfNV0gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfNS1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF81ICsgMSwgQnJlYWsgKHMsIHdpZHRoLCBvZmZzZXQpXG4gICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgKVxuICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBzdHJfaW5kLCBCcmVhayAoXCJAO1wiLCAxLCAwKVxuICAgIGluXG4gICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgdGhlIHNpemUgaW4gYSA8bj4uICopXG4gIGFuZCBwYXJzZV9tYWdpY19zaXplIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIG1hdGNoXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgc2l6ZSA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzNdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kIC0gMikgKHN0cl9pbmRfMyAtIHN0cl9pbmQgKyAzKSBpblxuICAgICAgICAgIFNvbWUgKHN0cl9pbmRfMyArIDEsIE1hZ2ljX3NpemUgKHMsIHNpemUpKVxuICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgJzwnLCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgYW5kIGNvbnN0cnVjdCBhIGNoYXIgc2V0LiAqKVxuICBhbmQgcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuXG4gICAgbGV0IGNoYXJfc2V0ID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gICAgbGV0IGFkZF9jaGFyIGMgPVxuICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGM7XG4gICAgaW5cbiAgICBsZXQgYWRkX3JhbmdlIGMgYycgPVxuICAgICAgZm9yIGkgPSBpbnRfb2ZfY2hhciBjIHRvIGludF9vZl9jaGFyIGMnIGRvXG4gICAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCAoY2hhcl9vZl9pbnQgaSk7XG4gICAgICBkb25lO1xuICAgIGluXG5cbiAgICBsZXQgZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kID1cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogJyUlJyBhbG9uZSBpcyBub3QgYWNjZXB0ZWQgaW4gY2hhcmFjdGVyIHNldHMsIFxcXG4gICAgICAgICB1c2UgJSUlJSBpbnN0ZWFkIGF0IHBvc2l0aW9uICVkLlwiIHN0ciBzdHJfaW5kXG4gICAgaW5cblxuICAgICgqIFBhcnNlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBjaGFyIHNldC4gKilcbiAgICBsZXQgcmVjIHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbGV0IGMgPSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBQYXJzZSB0aGUgY29udGVudCBvZiBhIGNoYXIgc2V0IHVudGlsIHRoZSBmaXJzdCAnXScuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogVGVzdCBmb3IgcmFuZ2UgaW4gY2hhciBzZXQuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG4gICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIHdoZW4gYyA9ICclJyAtPlxuICAgICAgICBhZGRfY2hhciBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgaWYgYyA9ICclJyB0aGVuIGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZDtcbiAgICAgICAgKCogbm90ZSB0aGF0ICdAJyBhbG9uZSBpcyBhY2NlcHRlZCwgYXMgZG9uZSBieSB0aGUgbGVnYWN5XG4gICAgICAgICAgIGltcGxlbWVudGF0aW9uOyB0aGUgZG9jdW1lbnRhdGlvbiBzcGVjaWZpY2FsbHkgcmVxdWlyZXMgJUBcbiAgICAgICAgICAgc28gd2UgY291bGQgd2FybiBvbiB0aGF0ICopXG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGMnXG5cbiAgICAoKiBNYW5hZ2UgcmFuZ2UgaW4gY2hhciBzZXQgKGV4Y2VwdCBpZiB0aGUgJy0nIHRoZSBsYXN0IGNoYXIgYmVmb3JlICddJykgKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIC0+XG4gICAgICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kXG4gICAgICAgICAgfCBfIC0+IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZFxuICAgICAgICBlbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgaW5cbiAgICBsZXQgc3RyX2luZCwgcmV2ZXJzZSA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICAgIHwgJ14nIC0+IHN0cl9pbmQgKyAxLCB0cnVlXG4gICAgICAgIHwgXyAtPiBzdHJfaW5kLCBmYWxzZSBpblxuICAgIGxldCBuZXh0X2luZCA9IHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgIGxldCBjaGFyX3NldCA9IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCBpblxuICAgIG5leHRfaW5kLCAoaWYgcmV2ZXJzZSB0aGVuIHJldl9jaGFyX3NldCBjaGFyX3NldCBlbHNlIGNoYXJfc2V0KVxuXG4gICgqIENvbnN1bWUgYWxsIG5leHQgc3BhY2VzLCByYWlzZSBhbiBGYWlsdXJlIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgaWYgc3RyLltzdHJfaW5kXSA9ICcgJyB0aGVuIHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgZWxzZSBzdHJfaW5kXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmUgaWYgZW5kX2luZCBpc1xuICAgICByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIGFjYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBhY2MgKiAxMCArIChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnKSBpblxuICAgICAgaWYgbmV3X2FjYyA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBpbnRlZ2VyICVkIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGltaXQgJWRcIlxuICAgICAgICAgIHN0ciBuZXdfYWNjIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgbmV3X2FjY1xuICAgIHwgXyAtPiBzdHJfaW5kLCBhY2NcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZVxuICAgICBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9pbnRlZ2VyIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDBcbiAgICB8ICctJyAtPiAoXG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICBsZXQgbmV4dF9pbmQsIG4gPSBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgMCBpblxuICAgICAgICBuZXh0X2luZCwgLW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImRpZ2l0XCIgY1xuICAgIClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQWRkIGEgbGl0ZXJhbCB0byBhIGZvcm1hdCBmcm9tIGEgbGl0ZXJhbCBjaGFyYWN0ZXIgc3ViLXNlcXVlbmNlLiAqKVxuICBhbmQgYWRkX2xpdGVyYWwgOiB0eXBlIGEgZCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiAoYSwgXywgXywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBmbXQgLT4gbWF0Y2ggc3RyX2luZCAtIGxpdF9zdGFydCB3aXRoXG4gICAgfCAwICAgIC0+IEZtdF9FQkIgZm10XG4gICAgfCAxICAgIC0+IEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoc3RyLltsaXRfc3RhcnRdLCBmbXQpKVxuICAgIHwgc2l6ZSAtPiBGbXRfRUJCIChTdHJpbmdfbGl0ZXJhbCAoU3RyaW5nLnN1YiBzdHIgbGl0X3N0YXJ0IHNpemUsIGZtdCkpXG5cbiAgKCogU2VhcmNoIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdFxuICAgICAoaS5lLiB0aGUgY29ycmVzcG9uZGluZyBcIiV9XCIgb3IgXCIlKVwiKSAqKVxuICBhbmQgc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogdW5jbG9zZWQgc3ViLWZvcm1hdCwgXFxcbiAgICAgICAgIGV4cGVjdGVkIFxcXCIlJSVjXFxcIiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkXCIgc3RyIGMgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICclJyAtPlxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBpZiBzdHIuW3N0cl9pbmQgKyAxXSA9IGMgdGhlbiAoKiBFbmQgb2YgZm9ybWF0IGZvdW5kICopIHN0cl9pbmQgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgIHwgJ18nIC0+XG4gICAgICAgICAgKCogU2VhcmNoIGZvciBcIiVfKFwiIG9yIFwiJV97XCIuICopXG4gICAgICAgICAgaWYgc3RyX2luZCArIDIgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMl0gd2l0aFxuICAgICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kIGNcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAoKiAley4uLiV9IHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAoKiAlKC4uLiUpIHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnfScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJSguLi4lfS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnKSdcIiAnfSdcbiAgICAgICAgfCAnKScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJXsuLi4lKS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnfSdcIiAnKSdcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgZW5kXG4gICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgKCogQ2hlY2sgaWYgc3ltYiBpcyBhIHZhbGlkIGludCBjb252ZXJzaW9uIGFmdGVyIFwiJWxcIiwgXCIlblwiIG9yIFwiJUxcIiAqKVxuICBhbmQgaXNfaW50X2Jhc2Ugc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICAoKiBDb252ZXJ0IGEgY2hhciAobCwgbiBvciBMKSB0byBpdHMgYXNzb2NpYXRlZCBjb3VudGVyLiAqKVxuICBhbmQgY291bnRlcl9vZl9jaGFyIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdsJyAtPiBMaW5lX2NvdW50ZXIgIHwgJ24nIC0+IENoYXJfY291bnRlclxuICAgIHwgJ0wnIC0+IFRva2VuX2NvdW50ZXIgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGludF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIG1hdGNoIHBsdXMsIGhhc2gsIHNwYWNlLCBzeW1iIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfZCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X2lcbiAgICB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdkJyAtPiBJbnRfc2QgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnaScgLT4gSW50X3NpXG4gICAgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X3BkIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9waVxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3gnIC0+IEludF94ICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdYJyAtPiBJbnRfWFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3gnIC0+IEludF9DeCB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdYJyAtPiBJbnRfQ1hcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdvJyAtPiBJbnRfb1xuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ28nIC0+IEludF9Db1xuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3UnIC0+IEludF91XG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnZCcgLT4gSW50X0NkXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnaScgLT4gSW50X0NpXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAndScgLT4gSW50X0N1XG4gICAgfCBfLCB0cnVlLCBfLCAneCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0N4XG4gICAgfCBfLCB0cnVlLCBfLCAnWCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NYXG4gICAgfCBfLCB0cnVlLCBfLCAnbycgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NvXG4gICAgfCBfLCB0cnVlLCBfLCAoJ2QnIHwgJ2knIHwgJ3UnKSAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgZmFsc2Ugc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiXG4gICAgfCB0cnVlLCBfLCB0cnVlLCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCB0cnVlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIlxuICAgIHwgdHJ1ZSwgXywgZmFsc2UsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBmYWxzZSBoYXNoIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIGZhbHNlLCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHNwYWNlLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBmbG9hdF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbGV0IGZsYWcgPSBtYXRjaCBwbHVzLCBzcGFjZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19cbiAgICB8IGZhbHNlLCAgdHJ1ZSAtPiBGbG9hdF9mbGFnX3NcbiAgICB8ICB0cnVlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX3BcbiAgICB8ICB0cnVlLCAgdHJ1ZSAtPlxuICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEZsb2F0X2ZsYWdfcFxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCIgaW5cbiAgICBsZXQga2luZCA9IG1hdGNoIGhhc2gsIHN5bWIgd2l0aFxuICAgIHwgXywgJ2YnIC0+IEZsb2F0X2ZcbiAgICB8IF8sICdlJyAtPiBGbG9hdF9lXG4gICAgfCBfLCAnRScgLT4gRmxvYXRfRVxuICAgIHwgXywgJ2cnIC0+IEZsb2F0X2dcbiAgICB8IF8sICdHJyAtPiBGbG9hdF9HXG4gICAgfCBfLCAnaCcgLT4gRmxvYXRfaFxuICAgIHwgXywgJ0gnIC0+IEZsb2F0X0hcbiAgICB8IGZhbHNlLCAnRicgLT4gRmxvYXRfRlxuICAgIHwgdHJ1ZSwgJ0YnIC0+IEZsb2F0X0NGXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSBpblxuICAgIGZsYWcsIGtpbmRcblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgaW5jb21wYXRpYmxlIG9wdGlvbnMuKilcbiAgYW5kIGluY29tcGF0aWJsZV9mbGFnIDogdHlwZSBhIC4gaW50IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZyAtPiBhID1cbiAgICBmdW4gcGN0X2luZCBzdHJfaW5kIHN5bWIgb3B0aW9uIC0+XG4gICAgICBsZXQgc3ViZm10ID0gU3RyaW5nLnN1YiBzdHIgcGN0X2luZCAoc3RyX2luZCAtIHBjdF9pbmQpIGluXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICAlcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAnJWMnIGluIHN1Yi1mb3JtYXQgJVNcIlxuICAgICAgICBzdHIgcGN0X2luZCBvcHRpb24gc3ltYiBzdWJmbXRcblxuICBpbiBwYXJzZSAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICgqIEd1YXJkZWQgc3RyaW5nIHRvIGZvcm1hdCBjb252ZXJzaW9ucyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgc3RyIGZtdHR5ID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCBmbXR0eSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIlxuICAgICAgc3RyIChzdHJpbmdfb2ZfZm10dHkgZm10dHkpXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgY29tcGF0aWJsZSB3aXRoIGFuIG90aGVyIGZvcm1hdC4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciAoRm9ybWF0IChmbXQnLCBzdHInKSkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IChmbXR0eV9vZl9mbXQgZm10JyksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCIgc3RyIHN0cidcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgWGF2aWVyIExlcm95IGFuZCBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbmxldCBrZnByaW50ZiBrIG8gKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIG8gYWNjOyBrIG8pIEVuZF9vZl9hY2MgZm10XG5sZXQga2JwcmludGYgayBiIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gYnVmcHV0X2FjYyBiIGFjYzsgayBiKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGlrZnByaW50ZiBrIG9jIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgb2MgZm10XG5sZXQgaWticHJpbnRmID0gaWtmcHJpbnRmXG5cbmxldCBmcHJpbnRmIG9jIGZtdCA9IGtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBicHJpbnRmIGIgZm10ID0ga2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgaWZwcmludGYgb2MgZm10ID0gaWtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBpYnByaW50ZiBiIGZtdCA9IGlrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRvdXQgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZGVyciBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgaycgYWNjID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHN0cnB1dF9hY2MgYnVmIGFjYztcbiAgICBrIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gcykgZm10XG5cbmxldCBrcHJpbnRmID0ga3NwcmludGZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJ0b3V0LCBJTlJJQSBQYXJpcy1TYWNsYXkgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIGxlbmd0aCA6IGludDtcbiAgbXV0YWJsZSBhcnIgOiAnYSBzbG90IGFycmF5O1xufVxuKCogezIgVGhlIHR5cGUgWydhIHRdfVxuXG4gICBBIGR5bmFtaWMgYXJyYXkgaXMgcmVwcmVzZW50ZWQgdXNpbmcgYSBiYWNraW5nIGFycmF5IFthcnJdIGFuZFxuICAgYSBbbGVuZ3RoXS4gSXQgYmVoYXZlcyBhcyBhbiBhcnJheSBvZiBzaXplIFtsZW5ndGhdIC0tIHRoZSBpbmRpY2VzXG4gICBmcm9tIFswXSB0byBbbGVuZ3RoIC0gMV0gaW5jbHVkZWQgY29udGFpbiB1c2VyLXByb3ZpZGVkIHZhbHVlcyBhbmRcbiAgIGNhbiBiZSBbZ2V0XSBhbmQgW3NldF0gLS0gYnV0IHRoZSBsZW5ndGggbWF5IGFsc28gY2hhbmdlIGluIHRoZVxuICAgZnV0dXJlIGJ5IGFkZGluZyBvciByZW1vdmluZyBlbGVtZW50cyBhdCB0aGUgZW5kLlxuXG4gICBXZSB1c2UgdGhlIGZvbGxvd2luZyBjb25jZXB0cztcbiAgIC0gY2FwYWNpdHk6IHRoZSBsZW5ndGggb2YgdGhlIGJhY2tpbmcgYXJyYXk6XG4gICAgIFtBcnJheS5sZW5ndGggIGFycl1cbiAgIC0gbGl2ZSBzcGFjZTogdGhlIHBvcnRpb24gb2YgdGhlIGJhY2tpbmcgYXJyYXkgd2l0aFxuICAgICBpbmRpY2VzIGZyb20gWzBdIHRvIFtsZW5ndGggLSAxXSBpbmNsdWRlZC5cbiAgIC0gZW1wdHkgc3BhY2U6IHRoZSBwb3J0aW9uIG9mIHRoZSBiYWNraW5nIGFycmF5XG4gICAgIGZyb20gW2xlbmd0aF0gdG8gdGhlIGVuZCBvZiB0aGUgYmFja2luZyBhcnJheS5cblxuICAgezIgVGhlIHR5cGUgWydhIHNsb3RdfVxuXG4gICBXZSBzaG91bGQgbm90IGtlZXAgYSB1c2VyLXByb3ZpZGVkIHZhbHVlIGluIHRoZSBlbXB0eSBzcGFjZSwgYXNcbiAgIHRoaXMgY291bGQgZXh0ZW5kIGl0cyBsaWZldGltZSBhbmQgbWF5IHJlc3VsdCBpbiBtZW1vcnkgbGVha3Mgb2ZcbiAgIGFyYml0cmFyeSBzaXplLiBGdW5jdGlvbnMgdGhhdCByZW1vdmUgZWxlbWVudHMgZnJvbSB0aGUgZHluYW1pY1xuICAgYXJyYXksIHN1Y2ggYXMgW3BvcF9sYXN0XSBvciBbdHJ1bmNhdGVdLCBtdXN0IHJlYWxseSBlcmFzZSB0aGVcbiAgIGVsZW1lbnQgZnJvbSB0aGUgYmFja2luZyBhcnJheS5cblxuICAgVGhpcyBjb25zdHJhaW50IG1ha2VzIGl0IGRpZmZpY3VsdCB0byByZXByZXNlbnQgYW4gZHluYW1pYyBhcnJheSBvZlxuICAgZWxlbWVudHMgb2YgdHlwZSBbJ2FdIHdpdGggYSBiYWNraW5nIGFycmF5IG9mIHR5cGUgWydhIGFycmF5XTogd2hhdFxuICAgdmFsaWQgdmFsdWUgb2YgdHlwZSBbJ2FdIHdvdWxkIHdlIHVzZSBpbiB0aGUgZW1wdHkgc3BhY2U/IFR5cGljYWxcbiAgIGNob2ljZXMgaW5jbHVkZTpcbiAgIC0gYWNjZXB0aW5nIHNjZW5hcmlvcyB3aGVyZSB3ZSBhY3R1YWxseSBsZWFrIHVzZXItcHJvdmlkZWQgdmFsdWVzXG4gICAgIChidXQgdGhpcyBjYW4gYmxvd3VwIG1lbW9yeSB1c2FnZSBpbiBzb21lIGNhc2VzLCBhbmQgaXMgaGFyZCB0byBkZWJ1ZylcbiAgIC0gcmVxdWlyaW5nIGEgXCJkdW1teVwiIHZhbHVlIGF0IGNyZWF0aW9uIG9mIHRoZSBkeW5hbWljIGFycmF5XG4gICAgIG9yIGluIHRoZSBwYXJ0cyBvZiB0aGUgQVBJIHRoYXQgZ3JvdyB0aGUgZW1wdHkgc3BhY2VcbiAgICAgKGJ1dCB1c2VycyBmaW5kIHRoaXMgdmVyeSBpbmNvbnZlbmllbnQpXG4gICAtIHVzaW5nIGFyY2FuZSBPYmoubWFnaWMgdHJpY2tzXG4gICAgIChidXQgZXhwZXJ0cyBkb24ndCBhZ3JlZSBvbiB3aGljaCB0cmlja3MgYXJlIHNhZmUgdG8gdXNlIGFuZC9vclxuICAgICAgc2hvdWxkIGJlIHVzZWQgaGVyZSlcbiAgIC0gdXNpbmcgYSBiYWNraW5nIGFycmF5IG9mIFsnYSBvcHRpb25dIHZhbHVlcywgdXNpbmcgW05vbmVdXG4gICAgIGluIHRoZSBlbXB0eSBzcGFjZVxuICAgICAoYnV0IHRoaXMgZ2l2ZXMgYSBub3RpY2VhYmx5IGxlc3MgZWZmaWNpZW50IG1lbW9yeSByZXByZXNlbnRhdGlvbilcblxuICAgSW4gdGhlIHByZXNlbnQgaW1wbGVtZW50YXRpb24sIHdlIHVzZSB0aGUgWydhIG9wdGlvbl0gYXBwcm9hY2gsXG4gICB3aXRoIGEgdHdpc3QuIFdpdGggWydhIG9wdGlvbl0sIGNhbGxpbmcgW3NldCBhIGkgeF0gbXVzdCByZWFsbG9jYXRlXG4gICBhIG5ldyBbU29tZSB4XSBibG9jazpcbntbXG4gICBsZXQgc2V0IGEgaSB4ID1cbiAgICAgaWYgaSA8IDAgfHwgaSA+PSBhLmxlbmd0aCB0aGVuIGVycm9yIFwib3V0IG9mIGJvdW5kc1wiO1xuICAgICBhLmFyci4oaSkgPC0gU29tZSB4XG5dfVxuICAgSW5zdGVhZCB3ZSB1c2UgdGhlIHR5cGUgWydhIHNsb3RdIGJlbG93LFxuICAgd2hpY2ggYmVoYXZlcyBhcyBhbiBvcHRpb24gd2hvc2UgW1NvbWVdIGNvbnN0cnVjdG9yXG4gICAoY2FsbGVkIFtFbGVtXSBoZXJlKSBoYXMgYSBfbXV0YWJsZV8gYXJndW1lbnQuXG4qKVxuYW5kICdhIHNsb3QgPVxufCBFbXB0eVxufCBFbGVtIG9mIHsgbXV0YWJsZSB2OiAnYSB9XG4oKlxuICAgVGhpcyBnaXZlcyBhbiBhbGxvY2F0aW9uLWZyZWUgaW1wbGVtZW50YXRpb24gb2YgW3NldF0gdGhhdCBjYWxsc1xuICAgW0FycmF5LmdldF0gKGluc3RlYWQgb2YgW0FycmF5LnNldF0pIG9uIHRoZSBiYWNraW5nIGFycmF5IGFuZCB0aGVuXG4gICBtdXRhdGVzIHRoZSBbdl0gcGFyYW1ldGVyLiBJbiBwc2V1ZG8tY29kZTpcbntbXG4gICBsZXQgc2V0IGEgaSB4ID1cbiAgICAgaWYgaSA8IDAgfHwgaSA+PSBhLmxlbmd0aCB0aGVuIGVycm9yIFwib3V0IG9mIGJvdW5kc1wiO1xuICAgICBtYXRjaCBhLmFyci4oaSkgd2l0aFxuICAgICB8IEVtcHR5IC0+IGVycm9yIFwiaW52YWxpZCBzdGF0ZTogbWlzc2luZyBlbGVtZW50XCJcbiAgICAgfCBFbGVtIHMgLT4gcy52IDwtIHhcbl19XG4gICBXaXRoIHRoaXMgYXBwcm9hY2gsIGFjY2Vzc2luZyBhbiBlbGVtZW50IHN0aWxsIHBheXMgdGhlIGNvc3Qgb2YgYW5cbiAgIGV4dHJhIGluZGlyZWN0aW9uIChjb21wYXJlZCB0byBhcHByb2FjaGVzIHRoYXQgZG8gbm90IGJveCBlbGVtZW50c1xuICAgaW4gdGhlIGJhY2tpbmcgYXJyYXkpLCBidXQgb25seSBvcGVyYXRpb25zIHRoYXQgYWRkIG5ldyBlbGVtZW50cyBhdFxuICAgdGhlIGVuZCBvZiB0aGUgYXJyYXkgcGF5IGV4dHJhIGFsbG9jYXRpb25zLlxuXG4gICBUaGVyZSBhcmUgc29tZSBzaXR1YXRpb25zIHdoZXJlIFsnYSBvcHRpb25dIGlzIGJldHRlcjogaXQgbWFrZXNcbiAgIFtwb3BfbGFzdF9vcHRdIG1vcmUgZWZmaWNpZW50IGFzIHRoZSB1bmRlcmx5aW5nIG9wdGlvbiBjYW4gYmVcbiAgIHJldHVybmVkIGRpcmVjdGx5LCBhbmQgaXQgYWxzbyBsZXRzIHVzIHVzZSBbQXJyYXkuYmxpdF0gdG9cbiAgIGltcGxlbWVudCBbYXBwZW5kXS4gV2UgYmVsaWV2ZSB0aGF0IG9wdGltaXppbmcgW2dldF0gYW5kIFtzZXRdIGlzXG4gICBtb3JlIGltcG9ydGFudCBmb3IgZHluYW1pYyBhcnJheXMuXG5cbiAgIHsyIEludmFyaWFudHMgYW5kIHZhbGlkIHN0YXRlc31cblxuICAgV2UgZW5mb3JjZSB0aGUgaW52YXJpYW50IHRoYXQgW2xlbmd0aCA+PSAwXSBhdCBhbGwgdGltZXMuXG4gICB3ZSByZWx5IG9uIHRoaXMgaW52YXJpYW50IGZvciBvcHRpbWl6YXRpb24uXG5cbiAgIFRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBkZWZpbmUgd2hhdCB3ZSBjYWxsIGEgXCJ2YWxpZFwiIGR5bmFycmF5OlxuICAgLSB2YWxpZCBsZW5ndGg6IFtsZW5ndGggPD0gQXJyYXkubGVuZ3RoIGFycl1cbiAgIC0gbm8gbWlzc2luZyBlbGVtZW50IGluIHRoZSBsaXZlIHNwYWNlOlxuICAgICBmb3JhbGwgaSwgWzAgPD0gaSA8IGxlbmd0aF0gaW1wbGllcyBbYXJyLihpKSA8PiBFbXB0eV1cbiAgIC0gbm8gZWxlbWVudCBpbiB0aGUgZW1wdHkgc3BhY2U6XG4gICAgIGZvcmFsbCBpLCBbbGVuZ3RoIDw9IGkgPCBBcnJheS5sZW5ndGggYXJyXSBpbXBsaWVzIFthcnIuKGkpID0gRW1wdHldXG5cbiAgIFVuZm9ydHVuYXRlbHksIHdlIGNhbm5vdCBlYXNpbHkgZW5mb3JjZSB2YWxpZGl0eSBhcyBhbiBpbnZhcmlhbnQgaW5cbiAgIHByZXNlbmNlIG9mIGNvbmN1cnJlbnQgdXBkYXRlcy4gV2UgY2FuIHRodXMgb2JzZXJ2ZSBkeW5hcnJheXMgaW5cbiAgIFwiaW52YWxpZCBzdGF0ZXNcIi4gT3VyIGltcGxlbWVudGF0aW9uIG1heSByYWlzZSBleGNlcHRpb25zIG9yIHJldHVyblxuICAgaW5jb3JyZWN0IHJlc3VsdHMgb24gb2JzZXJ2aW5nIGludmFsaWQgc3RhdGVzLCBidXQgb2YgY291cnNlIGl0XG4gICBtdXN0IHByZXNlcnZlIG1lbW9yeSBzYWZldHkuXG4qKVxuXG5tb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIGluZGV4X291dF9vZl9ib3VuZHMgZiB+aSB+bGVuZ3RoID1cbiAgICBpZiBsZW5ndGggPSAwIHRoZW5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkR5bmFycmF5LiVzOiBpbmRleCAlZCBvdXQgb2YgYm91bmRzIChlbXB0eSBkeW5hcnJheSlcIlxuICAgICAgICBmIGlcbiAgICBlbHNlXG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgICAgXCJEeW5hcnJheS4lczogaW5kZXggJWQgb3V0IG9mIGJvdW5kcyAoMC4uJWQpXCJcbiAgICAgICAgZiBpIChsZW5ndGggLSAxKVxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBuZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIGYgbiA9XG4gICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICBcIkR5bmFycmF5LiVzOiBuZWdhdGl2ZSBsZW5ndGggJWQgcmVxdWVzdGVkXCJcbiAgICAgIGYgblxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBuZWdhdGl2ZV9jYXBhY2l0eV9yZXF1ZXN0ZWQgZiBuID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IG5lZ2F0aXZlIGNhcGFjaXR5ICVkIHJlcXVlc3RlZFwiXG4gICAgICBmIG5cblxuICBsZXRbQGlubGluZSBuZXZlcl0gcmVxdWVzdGVkX2xlbmd0aF9vdXRfb2ZfYm91bmRzIGYgcmVxdWVzdGVkX2xlbmd0aCA9XG4gICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICBcIkR5bmFycmF5LiVzOiBjYW5ub3QgZ3JvdyB0byByZXF1ZXN0ZWQgbGVuZ3RoICVkIChtYXhfYXJyYXlfbGVuZ3RoIGlzICVkKVwiXG4gICAgICBmIHJlcXVlc3RlZF9sZW5ndGggU3lzLm1heF9hcnJheV9sZW5ndGhcblxuICAoKiBXaGVuIG9ic2VydmluZyBhbiBpbnZhbGlkIHN0YXRlIChbbWlzc2luZ19lbGVtZW50XSxcbiAgICAgW2ludmFsaWRfbGVuZ3RoXSksIHdlIGRvIG5vdCBnaXZlIHRoZSBuYW1lIG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uXG4gICAgIGluIHRoZSBlcnJvciBtZXNzYWdlLCBhcyB0aGUgZXJyb3IgaXMgcmVsYXRlZCB0byBpbnZhbGlkIG9wZXJhdGlvbnNcbiAgICAgcGVyZm9ybWVkIGVhcmxpZXIsIGFuZCBub3QgdG8gdGhlIGNhbGxzaXRlIG9mIHRoZSBmdW5jdGlvblxuICAgICBpdHNlbGYuICopXG5cbiAgbGV0IGludmFsaWRfc3RhdGVfZGVzY3JpcHRpb24gPVxuICAgIFwiSW52YWxpZCBkeW5hcnJheSAodW5zeW5jaHJvbml6ZWQgY29uY3VycmVudCBsZW5ndGggY2hhbmdlKVwiXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIG1pc3NpbmdfZWxlbWVudCB+aSB+bGVuZ3RoID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiJXM6IG1pc3NpbmcgZWxlbWVudCBhdCBwb3NpdGlvbiAlZCA8IGxlbmd0aCAlZFwiXG4gICAgICBpbnZhbGlkX3N0YXRlX2Rlc2NyaXB0aW9uXG4gICAgICBpIGxlbmd0aFxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2xlbmd0aCB+bGVuZ3RoIH5jYXBhY2l0eSA9XG4gICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICBcIiVzOiBsZW5ndGggJWQgPiBjYXBhY2l0eSAlZFwiXG4gICAgICBpbnZhbGlkX3N0YXRlX2Rlc2NyaXB0aW9uXG4gICAgICBsZW5ndGggY2FwYWNpdHlcblxuICBsZXRbQGlubGluZSBuZXZlcl0gbGVuZ3RoX2NoYW5nZV9kdXJpbmdfaXRlcmF0aW9uIGYgfmV4cGVjdGVkIH5vYnNlcnZlZCA9XG4gICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICBcIkR5bmFycmF5LiVzOiBhIGxlbmd0aCBjaGFuZ2UgZnJvbSAlZCB0byAlZCBvY2N1cnJlZCBkdXJpbmcgaXRlcmF0aW9uXCJcbiAgICAgIGYgZXhwZWN0ZWQgb2JzZXJ2ZWRcblxuICAoKiBXaGVuIGFuIFtFbXB0eV0gZWxlbWVudCBpcyBvYnNlcnZlZCB1bmV4cGVjdGVkbHkgYXQgaW5kZXggW2ldLFxuICAgICBpdCBtYXkgYmUgZWl0aGVyIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIG9yIGFuIGludmFsaWQtc3RhdGUgc2l0dWF0aW9uXG4gICAgIGRlcGVuZGluZyBvbiB3aGV0aGVyIFtpIDw9IGxlbmd0aF0uICopXG4gIGxldFtAaW5saW5lIG5ldmVyXSB1bmV4cGVjdGVkX2VtcHR5X2VsZW1lbnQgZiB+aSB+bGVuZ3RoID1cbiAgICBpZiBpIDwgbGVuZ3RoIHRoZW5cbiAgICAgIG1pc3NpbmdfZWxlbWVudCB+aSB+bGVuZ3RoXG4gICAgZWxzZVxuICAgICAgaW5kZXhfb3V0X29mX2JvdW5kcyBmIH5pIH5sZW5ndGhcblxuICBsZXRbQGlubGluZSBuZXZlcl0gZW1wdHlfZHluYXJyYXkgZiA9XG4gICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICBcIkR5bmFycmF5LiVzOiBlbXB0eSBhcnJheVwiIGZcbmVuZFxuXG4oKiBEZXRlY3RpbmcgaXRlcmF0b3IgaW52YWxpZGF0aW9uLlxuXG4gICBTZWUgeyFpdGVyfSBiZWxvdyBmb3IgYSBkZXRhaWxlZCB1c2FnZSBleGFtcGxlLlxuKilcbmxldCBjaGVja19zYW1lX2xlbmd0aCBmIGEgfmxlbmd0aCA9XG4gIGxldCBsZW5ndGhfYSA9IGEubGVuZ3RoIGluXG4gIGlmIGxlbmd0aCA8PiBsZW5ndGhfYSB0aGVuXG4gICAgRXJyb3IubGVuZ3RoX2NoYW5nZV9kdXJpbmdfaXRlcmF0aW9uIGZcbiAgICAgIH5leHBlY3RlZDpsZW5ndGggfm9ic2VydmVkOmxlbmd0aF9hXG5cbigqKiBDYXJlZnVsIHVuc2FmZSBhY2Nlc3MuICopXG5cbigqIFBvc3Rjb25kaXRpb24gb24gbm9uLWV4Y2VwdGlvbmFsIHJldHVybjpcbiAgIFtsZW5ndGggPD0gQXJyYXkubGVuZ3RoIGFycl0gKilcbmxldFtAaW5saW5lIGFsd2F5c10gY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnIgPVxuICBsZXQgY2FwYWNpdHkgPSBBcnJheS5sZW5ndGggYXJyIGluXG4gIGlmIGxlbmd0aCA+IGNhcGFjaXR5IHRoZW5cbiAgICBFcnJvci5pbnZhbGlkX2xlbmd0aCB+bGVuZ3RoIH5jYXBhY2l0eVxuXG4oKiBQcmVjb25kaXRpb246IFswIDw9IGkgPCBsZW5ndGggPD0gQXJyYXkubGVuZ3RoIGFycl1cblxuICAgVGhpcyBwcmVjb25kaXRpb24gaXMgdHlwaWNhbGx5IGd1YXJhbnRlZWQgYnkga25vd2luZ1xuICAgWzAgPD0gaSA8IGxlbmd0aF0gYW5kIGNhbGxpbmcgW2NoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyXS4qKVxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoID1cbiAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCBhcnIgaSB3aXRoXG4gIHwgRW1wdHkgLT4gRXJyb3IubWlzc2luZ19lbGVtZW50IH5pIH5sZW5ndGhcbiAgfCBFbGVtIHt2fSAtPiB2XG5cblxuKCoqIHsxOmR5bmFycmF5cyBEeW5hbWljIGFycmF5c30gKilcblxubGV0IGNyZWF0ZSAoKSA9IHtcbiAgbGVuZ3RoID0gMDtcbiAgYXJyID0gW3wgfF07XG59XG5cbmxldCBtYWtlIG4geCA9XG4gIGlmIG4gPCAwIHRoZW4gRXJyb3IubmVnYXRpdmVfbGVuZ3RoX3JlcXVlc3RlZCBcIm1ha2VcIiBuO1xuICB7XG4gICAgbGVuZ3RoID0gbjtcbiAgICBhcnIgPSBBcnJheS5pbml0IG4gKGZ1biBfIC0+IEVsZW0ge3YgPSB4fSk7XG4gIH1cblxubGV0IGluaXQgbiBmID1cbiAgaWYgbiA8IDAgdGhlbiBFcnJvci5uZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIFwiaW5pdFwiIG47XG4gIHtcbiAgICBsZW5ndGggPSBuO1xuICAgIGFyciA9IEFycmF5LmluaXQgbiAoZnVuIGkgLT4gRWxlbSB7diA9IGYgaX0pO1xuICB9XG5cbmxldCBnZXQgYSBpID1cbiAgKCogVGhpcyBpbXBsZW1lbnRhdGlvbiB3aWxsIHByb3BhZ2F0ZSBhbiBbSW52YWxpZF9hcmd1bWVudF0gZXhjZXB0aW9uXG4gICAgIGZyb20gYXJyYXkgbG9va3VwIGlmIHRoZSBpbmRleCBpcyBvdXQgb2YgdGhlIGJhY2tpbmcgYXJyYXksXG4gICAgIGluc3RlYWQgb2YgdXNpbmcgb3VyIG93biBbRXJyb3IuaW5kZXhfb3V0X29mX2JvdW5kc10uIFRoaXMgaXNcbiAgICAgYWxsb3dlZCBieSBvdXIgc3BlY2lmaWNhdGlvbiwgYW5kIG1vcmUgZWZmaWNpZW50IC0tIG5vIG5lZWQgdG9cbiAgICAgY2hlY2sgdGhhdCBbbGVuZ3RoIGEgPD0gY2FwYWNpdHkgYV0gaW4gdGhlIGZhc3QgcGF0aC4gKilcbiAgbWF0Y2ggYS5hcnIuKGkpIHdpdGhcbiAgfCBFbGVtIHMgLT4gcy52XG4gIHwgRW1wdHkgLT5cbiAgICAgIEVycm9yLnVuZXhwZWN0ZWRfZW1wdHlfZWxlbWVudCBcImdldFwiIH5pIH5sZW5ndGg6YS5sZW5ndGhcblxubGV0IHNldCBhIGkgeCA9XG4gICgqIFNlZSB7IWdldH0gY29tbWVudCBvbiB0aGUgdXNlIG9mIGNoZWNrZWQgYXJyYXlcbiAgICAgYWNjZXNzIHdpdGhvdXQgb3VyIG93biBib3VuZCBjaGVja2luZy4gKilcbiAgbWF0Y2ggYS5hcnIuKGkpIHdpdGhcbiAgfCBFbGVtIHMgLT4gcy52IDwtIHhcbiAgfCBFbXB0eSAtPlxuICAgICAgRXJyb3IudW5leHBlY3RlZF9lbXB0eV9lbGVtZW50IFwic2V0XCIgfmkgfmxlbmd0aDphLmxlbmd0aFxuXG5sZXQgbGVuZ3RoIGEgPSBhLmxlbmd0aFxuXG5sZXQgaXNfZW1wdHkgYSA9IChhLmxlbmd0aCA9IDApXG5cbmxldCBjb3B5IHtsZW5ndGg7IGFycn0gPVxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgKCogdXNlIFtsZW5ndGhdIGFzIHRoZSBuZXcgY2FwYWNpdHkgdG8gbWFrZVxuICAgICB0aGlzIGFuIE8obGVuZ3RoKSBvcGVyYXRpb24uICopXG4gIHtcbiAgICBsZW5ndGg7XG4gICAgYXJyID0gQXJyYXkuaW5pdCBsZW5ndGggKGZ1biBpIC0+XG4gICAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICAgIEVsZW0ge3Z9XG4gICAgKTtcbiAgfVxuXG5sZXQgZ2V0X2xhc3QgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgKCogV2Uga25vdyBbbGVuZ3RoIDw9IGNhcGFjaXR5IGFdLiAqKVxuICBpZiBsZW5ndGggPSAwIHRoZW4gRXJyb3IuZW1wdHlfZHluYXJyYXkgXCJnZXRfbGFzdFwiO1xuICAoKiBXZSBrbm93IFtsZW5ndGggPiAwXS4gKilcbiAgdW5zYWZlX2dldCBhcnIgfmk6KGxlbmd0aCAtIDEpIH5sZW5ndGhcblxubGV0IGZpbmRfbGFzdCBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICAoKiBXZSBrbm93IFtsZW5ndGggPD0gY2FwYWNpdHkgYV0uICopXG4gIGlmIGxlbmd0aCA9IDAgdGhlbiBOb25lXG4gIGVsc2VcbiAgICAoKiBXZSBrbm93IFtsZW5ndGggPiAwXS4gKilcbiAgICBTb21lICh1bnNhZmVfZ2V0IGFyciB+aToobGVuZ3RoIC0gMSkgfmxlbmd0aClcblxuKCoqIHsxOnJlbW92aW5nIFJlbW92aW5nIGVsZW1lbnRzfSAqKVxuXG5sZXQgcG9wX2xhc3QgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgKCogV2Uga25vdyBbbGVuZ3RoIDw9IGNhcGFjaXR5IGFdLiAqKVxuICBpZiBsZW5ndGggPSAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgbGFzdCA9IGxlbmd0aCAtIDEgaW5cbiAgKCogV2Uga25vdyBbbGVuZ3RoID4gMF0gc28gW2xhc3QgPj0gMF0uICopXG4gIG1hdGNoIEFycmF5LnVuc2FmZV9nZXQgYXJyIGxhc3Qgd2l0aFxuICB8IEVtcHR5IC0+XG4gICAgICBFcnJvci5taXNzaW5nX2VsZW1lbnQgfmk6bGFzdCB+bGVuZ3RoXG4gIHwgRWxlbSBzIC0+XG4gICAgICBBcnJheS51bnNhZmVfc2V0IGFyciBsYXN0IEVtcHR5O1xuICAgICAgYS5sZW5ndGggPC0gbGFzdDtcbiAgICAgIHMudlxuXG5sZXQgcG9wX2xhc3Rfb3B0IGEgPVxuICBtYXRjaCBwb3BfbGFzdCBhIHdpdGhcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcbiAgfCB4IC0+IFNvbWUgeFxuXG5sZXQgcmVtb3ZlX2xhc3QgYSA9XG4gIGxldCBsYXN0ID0gbGVuZ3RoIGEgLSAxIGluXG4gIGlmIGxhc3QgPj0gMCB0aGVuIGJlZ2luXG4gICAgYS5sZW5ndGggPC0gbGFzdDtcbiAgICBhLmFyci4obGFzdCkgPC0gRW1wdHk7XG4gIGVuZFxuXG5sZXQgdHJ1bmNhdGUgYSBuID1cbiAgaWYgbiA8IDAgdGhlbiBFcnJvci5uZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIFwidHJ1bmNhdGVcIiBuO1xuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgaWYgbGVuZ3RoIDw9IG4gdGhlbiAoKVxuICBlbHNlIGJlZ2luXG4gICAgYS5sZW5ndGggPC0gbjtcbiAgICBBcnJheS5maWxsIGFyciBuIChsZW5ndGggLSBuKSBFbXB0eTtcbiAgZW5kXG5cbmxldCBjbGVhciBhID0gdHJ1bmNhdGUgYSAwXG5cblxuKCoqIHsxOmNhcGFjaXR5IEJhY2tpbmcgYXJyYXkgYW5kIGNhcGFjaXR5fSAqKVxuXG5sZXQgY2FwYWNpdHkgYSA9IEFycmF5Lmxlbmd0aCBhLmFyclxuXG5sZXQgbmV4dF9jYXBhY2l0eSBuID1cbiAgbGV0IG4nID1cbiAgICAoKiBGb3IgbGFyZ2UgdmFsdWVzIG9mIG4sIHdlIHVzZSAxLjUgYXMgb3VyIGdyb3d0aCBmYWN0b3IuXG5cbiAgICAgICBGb3Igc21hbGxlciB2YWx1ZXMgb2Ygbiwgd2UgZ3JvdyBtb3JlIGFnZ3Jlc3NpdmVseSB0byBhdm9pZFxuICAgICAgIHJlYWxsb2NhdGluZyB0b28gbXVjaCB3aGVuIGFjY3VtdWxhdGluZyBlbGVtZW50cyBpbnRvIGFuIGVtcHR5XG4gICAgICAgYXJyYXkuXG5cbiAgICAgICBUaGUgY29uc3RhbnRzIFwiNTEyIHdvcmRzXCIgYW5kIFwiOCB3b3Jkc1wiIGJlbG93IGFyZSB0YWtlbiBmcm9tXG4gICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZm9sbHkvYmxvYi9cbiAgICAgICAgICAgYzA2YzBmNDFkOTFkYWYxYTZhNWYzZmMxY2Q0NjUzMDJhYzI2MDQ1OS9mb2xseS9GQlZlY3Rvci5oI0wxMTI4LUwxMTU3XG4gICAgKilcbiAgICBpZiBuIDw9IDUxMiB0aGVuIG4gKiAyXG4gICAgZWxzZSBuICsgbiAvIDJcbiAgaW5cbiAgKCoganVtcCBkaXJlY3RseSBmcm9tIDAgdG8gOCAqKVxuICBtaW4gKG1heCA4IG4nKSBTeXMubWF4X2FycmF5X2xlbmd0aFxuXG5sZXQgZW5zdXJlX2NhcGFjaXR5IGEgY2FwYWNpdHlfcmVxdWVzdCA9XG4gIGxldCBhcnIgPSBhLmFyciBpblxuICBsZXQgY3VyX2NhcGFjaXR5ID0gQXJyYXkubGVuZ3RoIGFyciBpblxuICBpZiBjYXBhY2l0eV9yZXF1ZXN0IDwgMCB0aGVuXG4gICAgRXJyb3IubmVnYXRpdmVfY2FwYWNpdHlfcmVxdWVzdGVkIFwiZW5zdXJlX2NhcGFjaXR5XCIgY2FwYWNpdHlfcmVxdWVzdFxuICBlbHNlIGlmIGN1cl9jYXBhY2l0eSA+PSBjYXBhY2l0eV9yZXF1ZXN0IHRoZW5cbiAgICAoKiBUaGlzIGlzIHRoZSBmYXN0IHBhdGgsIHRoZSBjb2RlIHVwIHRvIGhlcmUgbXVzdCBkbyBhcyBsaXR0bGUgYXNcbiAgICAgICBwb3NzaWJsZS4gKFRoaXMgaXMgd2h5IHdlIGRvbid0IHVzZSBbbGV0IHthcnI7IGxlbmd0aH0gPSBhXSBhc1xuICAgICAgIHVzdWFsLCB0aGUgbGVuZ3RoIGlzIG5vdCBuZWVkZWQgaW4gdGhlIGZhc3QgcGF0aC4pKilcbiAgICAoKVxuICBlbHNlIGJlZ2luXG4gICAgaWYgY2FwYWNpdHlfcmVxdWVzdCA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW5cbiAgICAgIEVycm9yLnJlcXVlc3RlZF9sZW5ndGhfb3V0X29mX2JvdW5kcyBcImVuc3VyZV9jYXBhY2l0eVwiIGNhcGFjaXR5X3JlcXVlc3Q7XG4gICAgbGV0IG5ld19jYXBhY2l0eSA9XG4gICAgICAoKiBXZSB1c2UgZWl0aGVyIHRoZSBuZXh0IGV4cG9uZW50aWFsLWdyb3d0aCBzdHJhdGVneSxcbiAgICAgICAgIG9yIHRoZSByZXF1ZXN0ZWQgc3RyYXRlZ3ksIHdoaWNoZXZlciBpcyBiaWdnZXIuXG5cbiAgICAgICAgIENvbXBhcmVkIHRvIG9ubHkgdXNpbmcgdGhlIGV4cG9uZW50aWFsLWdyb3d0aCBzdHJhdGVneSwgdGhpc1xuICAgICAgICAgbGV0cyB1cyB1c2UgbGVzcyBtZW1vcnkgYnkgYXZvaWRpbmcgYW55IG92ZXJzaG9vdCB3aGVuZXZlclxuICAgICAgICAgdGhlIGNhcGFjaXR5IHJlcXVlc3QgaXMgbm90aWNlYWJseSBsYXJnZXIgdGhhbiB0aGUgY3VycmVudFxuICAgICAgICAgY2FwYWNpdHkuXG5cbiAgICAgICAgIENvbXBhcmVkIHRvIG9ubHkgdXNpbmcgdGhlIHJlcXVlc3RlZCBjYXBhY2l0eSwgdGhpcyBhdm9pZHNcbiAgICAgICAgIGxvc2luZyB0aGUgYW1vcnRpemVkIGd1YXJhbnRlZTogd2UgYWxsb2NhdGVkIFwiZXhwb25lbnRpYWxseVxuICAgICAgICAgb3IgbW9yZVwiLCBzbyB0aGUgYW1vcnRpemF0aW9uIGhvbGRzLiBJbiBwYXJ0aWN1bGFyLCBub3RpY2VcbiAgICAgICAgIHRoYXQgcmVwZWF0ZWQgY2FsbHMgdG8gW2Vuc3VyZV9jYXBhY2l0eSBhIChsZW5ndGggYSArIDEpXVxuICAgICAgICAgd2lsbCBoYXZlIGFtb3J0aXplZC1saW5lYXIgcmF0aGVyIHRoYW4gcXVhZHJhdGljIGNvbXBsZXhpdHkuXG4gICAgICAqKVxuICAgICAgbWF4IChuZXh0X2NhcGFjaXR5IGN1cl9jYXBhY2l0eSkgY2FwYWNpdHlfcmVxdWVzdCBpblxuICAgIGxldCBuZXdfYXJyID0gQXJyYXkubWFrZSBuZXdfY2FwYWNpdHkgRW1wdHkgaW5cbiAgICBBcnJheS5ibGl0IGFyciAwIG5ld19hcnIgMCBhLmxlbmd0aDtcbiAgICBhLmFyciA8LSBuZXdfYXJyO1xuICAgICgqIHBvc3Rjb25kaXRpb246ICopXG4gICAgYXNzZXJ0ICgwIDw9IGNhcGFjaXR5X3JlcXVlc3QpO1xuICAgIGFzc2VydCAoY2FwYWNpdHlfcmVxdWVzdCA8PSBBcnJheS5sZW5ndGggbmV3X2Fycik7XG4gIGVuZFxuXG5sZXQgZW5zdXJlX2V4dHJhX2NhcGFjaXR5IGEgZXh0cmFfY2FwYWNpdHlfcmVxdWVzdCA9XG4gIGVuc3VyZV9jYXBhY2l0eSBhIChsZW5ndGggYSArIGV4dHJhX2NhcGFjaXR5X3JlcXVlc3QpXG5cbmxldCBmaXRfY2FwYWNpdHkgYSA9XG4gIGlmIGNhcGFjaXR5IGEgPSBhLmxlbmd0aFxuICB0aGVuICgpXG4gIGVsc2UgYS5hcnIgPC0gQXJyYXkuc3ViIGEuYXJyIDAgYS5sZW5ndGhcblxubGV0IHNldF9jYXBhY2l0eSBhIG4gPVxuICBpZiBuIDwgMCB0aGVuXG4gICAgRXJyb3IubmVnYXRpdmVfY2FwYWNpdHlfcmVxdWVzdGVkIFwic2V0X2NhcGFjaXR5XCIgbjtcbiAgbGV0IGFyciA9IGEuYXJyIGluXG4gIGxldCBjdXJfY2FwYWNpdHkgPSBBcnJheS5sZW5ndGggYXJyIGluXG4gIGlmIG4gPCBjdXJfY2FwYWNpdHkgdGhlbiBiZWdpblxuICAgIGEubGVuZ3RoIDwtIG1pbiBhLmxlbmd0aCBuO1xuICAgIGEuYXJyIDwtIEFycmF5LnN1YiBhcnIgMCBuO1xuICBlbmRcbiAgZWxzZSBpZiBuID4gY3VyX2NhcGFjaXR5IHRoZW4gYmVnaW5cbiAgICBsZXQgbmV3X2FyciA9IEFycmF5Lm1ha2UgbiBFbXB0eSBpblxuICAgIEFycmF5LmJsaXQgYXJyIDAgbmV3X2FyciAwIGEubGVuZ3RoO1xuICAgIGEuYXJyIDwtIG5ld19hcnI7XG4gIGVuZFxuXG5sZXQgcmVzZXQgYSA9XG4gIGEubGVuZ3RoIDwtIDA7XG4gIGEuYXJyIDwtIFt8fF1cblxuKCoqIHsxOmFkZGluZyBBZGRpbmcgZWxlbWVudHN9ICopXG5cbigqIFdlIGNob3NlIGFuIGltcGxlbWVudGF0aW9uIG9mIFthZGRfbGFzdCBhIHhdIHRoYXQgYmVoYXZlcyBjb3JyZWN0bHlcbiAgIGluIHByZXNlbmNlIG9mIGFzeW5jaHJvbm91cyAvIHJlLWVudHJhbnQgY29kZSBleGVjdXRpb24gYXJvdW5kXG4gICBhbGxvY2F0aW9ucyBhbmQgcG9sbCBwb2ludHM6IGlmIGFub3RoZXIgdGhyZWFkIG9yIGEgY2FsbGJhY2sgZ2V0c1xuICAgZXhlY3V0ZWQgb24gYWxsb2NhdGlvbiwgd2UgYWRkIHRoZSBlbGVtZW50IGF0IHRoZSBuZXcgZW5kIG9mIHRoZVxuICAgZHluYW1pYyBhcnJheS5cblxuICAgKFdlIGRvIG5vdCBnaXZlIHRoZSBzYW1lIGd1YXJhbnRlZXMgaW4gcHJlc2VuY2Ugb2YgY29uY3VycmVudFxuICAgcGFyYWxsZWwgdXBkYXRlcywgd2hpY2ggYXJlIG11Y2ggbW9yZSBleHBlbnNpdmUgdG8gcHJvdGVjdFxuICAgYWdhaW5zdC4pXG4qKVxuXG4oKiBbYWRkX2xhc3RfaWZfcm9vbSBhIGVsZW1dIG9ubHkgd3JpdGVzIHRoZSBzbG90IGlmIHRoZXJlIGlzIHJvb20sIGFuZFxuICAgcmV0dXJucyBbZmFsc2VdIG90aGVyd2lzZS4gKilcbmxldFtAaW5saW5lXSBhZGRfbGFzdF9pZl9yb29tIGEgZWxlbSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICAoKiB3ZSBrbm93IFswIDw9IGxlbmd0aF0gKilcbiAgaWYgbGVuZ3RoID49IEFycmF5Lmxlbmd0aCBhcnIgdGhlbiBmYWxzZVxuICBlbHNlIGJlZ2luXG4gICAgKCogd2Uga25vdyBbMCA8PSBsZW5ndGggPCBBcnJheS5sZW5ndGggYXJyXSAqKVxuICAgIGEubGVuZ3RoIDwtIGxlbmd0aCArIDE7XG4gICAgQXJyYXkudW5zYWZlX3NldCBhcnIgbGVuZ3RoIGVsZW07XG4gICAgdHJ1ZVxuICBlbmRcblxubGV0IGFkZF9sYXN0IGEgeCA9XG4gIGxldCBlbGVtID0gRWxlbSB7diA9IHh9IGluXG4gIGlmIGFkZF9sYXN0X2lmX3Jvb20gYSBlbGVtIHRoZW4gKClcbiAgZWxzZSBiZWdpblxuICAgICgqIHNsb3cgcGF0aCAqKVxuICAgIGxldCByZWMgZ3Jvd19hbmRfYWRkIGEgZWxlbSA9XG4gICAgICBlbnN1cmVfZXh0cmFfY2FwYWNpdHkgYSAxO1xuICAgICAgaWYgbm90IChhZGRfbGFzdF9pZl9yb29tIGEgZWxlbSlcbiAgICAgIHRoZW4gZ3Jvd19hbmRfYWRkIGEgZWxlbVxuICAgIGluIGdyb3dfYW5kX2FkZCBhIGVsZW1cbiAgZW5kXG5cbmxldCByZWMgYXBwZW5kX2xpc3QgYSBsaSA9XG4gIG1hdGNoIGxpIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IHggOjogeHMgLT4gYWRkX2xhc3QgYSB4OyBhcHBlbmRfbGlzdCBhIHhzXG5cbmxldCBhcHBlbmRfaXRlciBhIGl0ZXIgYiA9XG4gIGl0ZXIgKGZ1biB4IC0+IGFkZF9sYXN0IGEgeCkgYlxuXG5sZXQgYXBwZW5kX3NlcSBhIHNlcSA9XG4gIFNlcS5pdGVyIChmdW4geCAtPiBhZGRfbGFzdCBhIHgpIHNlcVxuXG4oKiBhcHBlbmRfYXJyYXk6IHNhbWUgWy4uLl9pZl9yb29tXSBhbmQgbG9vcCBsb2dpYyBhcyBbYWRkX2xhc3RdLiAqKVxuXG5sZXQgYXBwZW5kX2FycmF5X2lmX3Jvb20gYSBiID1cbiAgbGV0IHthcnI7IGxlbmd0aCA9IGxlbmd0aF9hfSA9IGEgaW5cbiAgbGV0IGxlbmd0aF9iID0gQXJyYXkubGVuZ3RoIGIgaW5cbiAgaWYgbGVuZ3RoX2EgKyBsZW5ndGhfYiA+IEFycmF5Lmxlbmd0aCBhcnIgdGhlbiBmYWxzZVxuICBlbHNlIGJlZ2luXG4gICAgYS5sZW5ndGggPC0gbGVuZ3RoX2EgKyBsZW5ndGhfYjtcbiAgICAoKiBOb3RlOiB3ZSBpbnRlbnRpb25hbGx5IHVwZGF0ZSB0aGUgbGVuZ3RoICpiZWZvcmUqIGZpbGxpbmcgdGhlXG4gICAgICAgZWxlbWVudHMuIFRoaXMgXCJyZXNlcnZlIGJlZm9yZSBmaWxsXCIgYXBwcm9hY2ggcHJvdmlkZXMgYmV0dGVyXG4gICAgICAgYmVoYXZpb3IgdGhhbiBcImZpbGwgdGhlbiBub3RpZnlcIiBpbiBwcmVzZW5jZSBvZiByZWVudHJhbnRcbiAgICAgICBtb2RpZmljYXRpb25zICh3aGljaCBtYXkgb2NjdXIgYmVsb3csIG9uIGEgcG9sbCBwb2ludCBpbiB0aGUgbG9vcCBvclxuICAgICAgIHRoZSBbRWxlbV0gYWxsb2NhdGlvbik6XG5cbiAgICAgICAtIElmIHNvbWUgY29kZSBhc3luY2hyb25vdXNseSBhZGRzIG5ldyBlbGVtZW50cyBhZnRlciB0aGlzXG4gICAgICAgICBsZW5ndGggdXBkYXRlLCB0aGV5IHdpbGwgZ28gYWZ0ZXIgdGhlIHNwYWNlIHdlIGp1c3QgcmVzZXJ2ZWQsXG4gICAgICAgICBhbmQgaW4gcGFydGljdWxhciBubyBhZGRpdGlvbiB3aWxsIGJlIGxvc3QuIElmIGluc3RlYWQgd2VcbiAgICAgICAgIHVwZGF0ZWQgdGhlIGxlbmd0aCBhZnRlciB0aGUgbG9vcCwgYW55IGFzeW5jaHJvbm91cyBhZGRpdGlvblxuICAgICAgICAgZHVyaW5nIHRoZSBsb29wIGNvdWxkIGJlIGVyYXNlZCBvciBlcmFzZSBvbmUgb2Ygb3VyIGFkZGl0aW9ucyxcbiAgICAgICAgIHNpbGVudGx5LCB3aXRob3V0IHdhcm5pbmcgdGhlIHVzZXIuXG5cbiAgICAgICAtIElmIHNvbWUgY29kZSBhc3luY2hyb25vdXNseSBpdGVyYXRlcyBvbiB0aGUgZHluYXJyYXksIG9yXG4gICAgICAgICByZW1vdmVzIGVsZW1lbnRzLCBvciBvdGhlcndpc2UgdHJpZXMgdG8gYWNjZXNzIHRoZVxuICAgICAgICAgcmVzZXJ2ZWQtYnV0LW5vdC15ZXQtZmlsbGVkIHNwYWNlLCBpdCB3aWxsIGdldCBhIGNsZWFuIFwibWlzc2luZ1xuICAgICAgICAgZWxlbWVudFwiIGVycm9yLiBUaGlzIGlzIHdvcnNlIHRoYW4gd2l0aCB0aGUgZmlsbC10aGVuLW5vdGlmeVxuICAgICAgICAgYXBwcm9hY2ggd2hlcmUgdGhlIG5ldyBlbGVtZW50cyB3b3VsZCBvbmx5IGJlY29tZSB2aXNpYmxlXG4gICAgICAgICAodG8gaXRlcmF0b3JzLCBmb3IgcmVtb3ZhbCwgZXRjLikgYWxsdG9nZXRoZXIgYXQgdGhlIGVuZCBvZlxuICAgICAgICAgbG9vcC5cblxuICAgICAgIFRvIHN1bW1hcmlzZSwgXCJyZXNlcnZlIGJlZm9yZSBmaWxsXCIgaXMgYmV0dGVyIG9uIGFkZC1hZGQgcmFjZXMsXG4gICAgICAgYW5kIFwiZmlsbCB0aGVuIG5vdGlmeVwiIGlzIGJldHRlciBvbiBhZGQtcmVtb3ZlIG9yIGFkZC1pdGVyYXRlXG4gICAgICAgcmFjZXMuIEJ1dCB0aGUga2V5IGRpZmZlcmVuY2UgaXMgdGhlIGZhaWx1cmUgbW9kZTpcbiAgICAgICByZXNlcnZlLWJlZm9yZSBmYWlscyBvbiBhZGQtcmVtb3ZlIG9yIGFkZC1pdGVyYXRlIHJhY2VzIHdpdGhcbiAgICAgICBhIGNsZWFuIGVycm9yLCB3aGlsZSBub3RpZnktYWZ0ZXIgZmFpbHMgb24gYWRkLWFkZCByYWNlcyB3aXRoXG4gICAgICAgc2lsZW50bHkgZGlzYXBwZWFyaW5nIGRhdGEuICopXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aF9iIC0gMSBkb1xuICAgICAgbGV0IHggPSBBcnJheS51bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgQXJyYXkudW5zYWZlX3NldCBhcnIgKGxlbmd0aF9hICsgaSkgKEVsZW0ge3YgPSB4fSlcbiAgICBkb25lO1xuICAgIHRydWVcbiAgZW5kXG5cbmxldCBhcHBlbmRfYXJyYXkgYSBiID1cbiAgaWYgYXBwZW5kX2FycmF5X2lmX3Jvb20gYSBiIHRoZW4gKClcbiAgZWxzZSBiZWdpblxuICAgICgqIHNsb3cgcGF0aCAqKVxuICAgIGxldCByZWMgZ3Jvd19hbmRfYXBwZW5kIGEgYiA9XG4gICAgICBlbnN1cmVfZXh0cmFfY2FwYWNpdHkgYSAoQXJyYXkubGVuZ3RoIGIpO1xuICAgICAgaWYgbm90IChhcHBlbmRfYXJyYXlfaWZfcm9vbSBhIGIpXG4gICAgICB0aGVuIGdyb3dfYW5kX2FwcGVuZCBhIGJcbiAgICBpbiBncm93X2FuZF9hcHBlbmQgYSBiICBlbmRcblxuKCogYXBwZW5kOiBzYW1lIFsuLi5faWZfcm9vbV0gYW5kIGxvb3AgbG9naWMgYXMgW2FkZF9sYXN0XSxcbiAgIHNhbWUgcmVzZXJ2ZS1iZWZvcmUtZmlsbCBsb2dpYyBhcyBbYXBwZW5kX2FycmF5XS4gKilcblxuKCogSXQgaXMgYSBwcm9ncmFtbWluZyBlcnJvciB0byBtdXRhdGUgdGhlIGxlbmd0aCBvZiBbYl0gZHVyaW5nIGEgY2FsbFxuICAgdG8gW2FwcGVuZCBhIGJdLiBUbyBkZXRlY3QgdGhpcyBtaXN0YWtlIHdlIGtlZXAgdHJhY2sgb2YgdGhlIGxlbmd0aFxuICAgb2YgW2JdIHRocm91Z2hvdXQgdGhlIGNvbXB1dGF0aW9uIGFuZCBjaGVjayBpdCB0aGF0IGRvZXMgbm90XG4gICBjaGFuZ2UuXG4qKVxubGV0IGFwcGVuZF9pZl9yb29tIGEgYiB+bGVuZ3RoX2IgPVxuICBsZXQge2FyciA9IGFycl9hOyBsZW5ndGggPSBsZW5ndGhfYX0gPSBhIGluXG4gIGlmIGxlbmd0aF9hICsgbGVuZ3RoX2IgPiBBcnJheS5sZW5ndGggYXJyX2EgdGhlbiBmYWxzZVxuICBlbHNlIGJlZ2luXG4gICAgYS5sZW5ndGggPC0gbGVuZ3RoX2EgKyBsZW5ndGhfYjtcbiAgICBsZXQgYXJyX2IgPSBiLmFyciBpblxuICAgIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGhfYiBhcnJfYjtcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoX2IgLSAxIGRvXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYXJyX2Igfmkgfmxlbmd0aDpsZW5ndGhfYiBpblxuICAgICAgQXJyYXkudW5zYWZlX3NldCBhcnJfYSAobGVuZ3RoX2EgKyBpKSAoRWxlbSB7diA9IHh9KVxuICAgIGRvbmU7XG4gICAgY2hlY2tfc2FtZV9sZW5ndGggXCJhcHBlbmRcIiBiIH5sZW5ndGg6bGVuZ3RoX2I7XG4gICAgdHJ1ZVxuICBlbmRcblxubGV0IGFwcGVuZCBhIGIgPVxuICBsZXQgbGVuZ3RoX2IgPSBsZW5ndGggYiBpblxuICBpZiBhcHBlbmRfaWZfcm9vbSBhIGIgfmxlbmd0aF9iIHRoZW4gKClcbiAgZWxzZSBiZWdpblxuICAgICgqIHNsb3cgcGF0aCAqKVxuICAgIGxldCByZWMgZ3Jvd19hbmRfYXBwZW5kIGEgYiB+bGVuZ3RoX2IgPVxuICAgICAgZW5zdXJlX2V4dHJhX2NhcGFjaXR5IGEgbGVuZ3RoX2I7XG4gICAgICAoKiBFbGlkaW5nIHRoZSBbY2hlY2tfc2FtZV9sZW5ndGhdIGNhbGwgYmVsb3cgd291bGQgYmUgd3JvbmcgaW5cbiAgICAgICAgIHRoZSBjYXNlIHdoZXJlIFthXSBhbmQgW2JdIGFyZSBhbGlhc2VzIG9mIGVhY2ggb3RoZXIsIHdlXG4gICAgICAgICB3b3VsZCBnZXQgaW50byBhbiBpbmZpbml0ZSBsb29wIGluc3RlYWQgb2YgZmFpbGluZy5cblxuICAgICAgICAgV2UgY291bGQgcHVzaCB0aGUgY2FsbCB0byBbYXBwZW5kX2lmX3Jvb21dIGl0c2VsZiwgYnV0IHdlXG4gICAgICAgICBwcmVmZXIgdG8ga2VlcCBpdCBpbiB0aGUgc2xvdyBwYXRoLiAgKilcbiAgICAgIGNoZWNrX3NhbWVfbGVuZ3RoIFwiYXBwZW5kXCIgYiB+bGVuZ3RoOmxlbmd0aF9iO1xuICAgICAgaWYgbm90IChhcHBlbmRfaWZfcm9vbSBhIGIgfmxlbmd0aF9iKVxuICAgICAgdGhlbiBncm93X2FuZF9hcHBlbmQgYSBiIH5sZW5ndGhfYlxuICAgIGluIGdyb3dfYW5kX2FwcGVuZCBhIGIgfmxlbmd0aF9iXG4gIGVuZFxuXG5cblxuKCoqIHsxOml0ZXJhdGlvbiBJdGVyYXRpb259ICopXG5cbigqIFRoZSBpbXBsZW1lbnRhdGlvbiBjaG9pY2UgdGhhdCB3ZSBtYWRlIGZvciBpdGVyYXRvcnMgaXMgdGhlIG9uZVxuICAgdGhhdCBtYXhpbWl6ZXMgZWZmaWNpZW5jeSBieSBhdm9pZGluZyByZXBlYXRlZCBib3VuZCBjaGVja2luZzogd2VcbiAgIGNoZWNrIHRoZSBsZW5ndGggb2YgdGhlIGR5bmFtaWMgYXJyYXkgb25jZSBhdCB0aGUgYmVnaW5uaW5nLCBhbmRcbiAgIHRoZW4gb25seSBvcGVyYXRlIG9uIHRoYXQgcG9ydGlvbiBvZiB0aGUgZHluYXJyYXksIGlnbm9yaW5nXG4gICBlbGVtZW50cyBhZGRlZCBpbiB0aGUgbWVhbnRpbWUuXG5cbiAgIFRoZSBzcGVjaWZpY2F0aW9uIHN0YXRlcyB0aGF0IGl0IGlzIGEgcHJvZ3JhbW1pbmcgZXJyb3IgdG8gbXV0YXRlXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSBkdXJpbmcgaXRlcmF0aW9uLiBXZSBjaGVjayBmb3IgdGhpcyBhbmRcbiAgIHJhaXNlIGFuIGVycm9yIG9uIHNpemUgY2hhbmdlLlxuICAgTm90ZSB0aGF0IHdlIG1heSBzdGlsbCBtaXNzIHNvbWUgdHJhbnNpZW50IHN0YXRlIGNoYW5nZXMgdGhhdCBjYW5jZWxcbiAgIGVhY2ggb3RoZXIgYW5kIGxlYXZlIHRoZSBsZW5ndGggdW5jaGFuZ2VkIGF0IHRoZSBuZXh0IGNoZWNrLlxuKilcblxubGV0IGl0ZXJfIGYgayBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gICgqIFtjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycl0gaXMgdXNlZCBmb3IgbWVtb3J5IHNhZmV0eSwgaXRcbiAgICAgZ3VhcmFudGVlcyB0aGF0IHRoZSBiYWNraW5nIGFycmF5IGhhcyBjYXBhY2l0eSBhdCBsZWFzdCBbbGVuZ3RoXSxcbiAgICAgYWxsb3dpbmcgdW5zYWZlIGFycmF5IGFjY2Vzcy5cblxuICAgICBbY2hlY2tfc2FtZV9sZW5ndGhdIGlzIHVzZWQgZm9yIGNvcnJlY3RuZXNzLCBpdCBsZXRzIHRoZSBmdW5jdGlvblxuICAgICBmYWlsIG1vcmUgb2Z0ZW4gaWYgd2UgZGlzY292ZXIgdGhlIHByb2dyYW1taW5nIGVycm9yIG9mIG11dGF0aW5nXG4gICAgIHRoZSBsZW5ndGggZHVyaW5nIGl0ZXJhdGlvbi5cblxuICAgICBXZSBjb3VsZCwgbmFpdmVseSwgY2FsbCBbY2hlY2tfc2FtZV9sZW5ndGhdIGF0IGVhY2ggaXRlcmF0aW9uIG9mXG4gICAgIHRoZSBsb29wIChiZWZvcmUgb3IgYWZ0ZXIsIG9yIGJvdGgpLiBIb3dldmVyLCBub3RpY2UgdGhhdCB0aGlzIGlzXG4gICAgIG5vdCBuZWNlc3NhcnkgdG8gZGV0ZWN0IHRoZSByZW1vdmFsIG9mIGVsZW1lbnRzIGZyb20gW2FdOiBpZlxuICAgICBlbGVtZW50cyBoYXZlIGJlZW4gcmVtb3ZlZCBieSB0aGUgdGltZSB0aGUgW2Zvcl0gbG9vcCByZWFjaGVzXG4gICAgIHRoZW0sIHRoZW4gW3Vuc2FmZV9nZXRdIHdpbGwgaXRzZWxmIGZhaWwgd2l0aCBhbiBbSW52YWxpZF9hcmd1bWVudF1cbiAgICAgZXhjZXB0aW9uLiBXZSBvbmx5IG5lZWQgdG8gZGV0ZWN0IHRoZSBhZGRpdGlvbiBvZiBuZXcgZWxlbWVudHMgdG9cbiAgICAgW2FdIGR1cmluZyBpdGVyYXRpb24sIGFuZCBmb3IgdGhpcyBpdCBpcyBlbm91Z2ggdG8gY2FsbFxuICAgICBbY2hlY2tfc2FtZV9sZW5ndGhdIG9uY2UgYXQgdGhlIGVuZC5cblxuICAgICBDYWxsaW5nIFtjaGVja19zYW1lX2xlbmd0aF0gbW9yZSBvZnRlbiBjb3VsZCBjYXRjaCBtb3JlXG4gICAgIHByb2dyYW1taW5nIGVycm9ycywgYnV0IHRoZSBvbmx5IGVycm9ycyB0aGF0IHdlIG1pc3Mgd2l0aCB0aGlzXG4gICAgIG9wdGltaXphdGlvbiBhcmUgdGhvc2UgdGhhdCBrZWVwIHRoZSBhcnJheSBzaXplIGNvbnN0YW50IC0tXG4gICAgIGFkZGl0aW9ucyBhbmQgZGVsZXRpb25zIHRoYXQgY2FuY2VsIGVhY2ggb3RoZXIuIFdlIGNvbnNpZGVyIHRoaXNcbiAgICAgYW4gYWNjZXB0YWJsZSB0cmFkZW9mZi5cbiAgKilcbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgayAodW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCk7XG4gIGRvbmU7XG4gIGNoZWNrX3NhbWVfbGVuZ3RoIGYgYSB+bGVuZ3RoXG5cbmxldCBpdGVyIGsgYSA9XG4gIGl0ZXJfIFwiaXRlclwiIGsgYVxuXG5sZXQgaXRlcmkgayBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgIGsgaSAodW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCk7XG4gIGRvbmU7XG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwiaXRlcmlcIiBhIH5sZW5ndGhcblxubGV0IG1hcCBmIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZXMgPSB7XG4gICAgbGVuZ3RoO1xuICAgIGFyciA9IEFycmF5LmluaXQgbGVuZ3RoIChmdW4gaSAtPlxuICAgICAgRWxlbSB7diA9IGYgKHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpfSk7XG4gIH0gaW5cbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJtYXBcIiBhIH5sZW5ndGg7XG4gIHJlc1xuXG5cbmxldCBtYXBpIGYgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlcyA9IHtcbiAgICBsZW5ndGg7XG4gICAgYXJyID0gQXJyYXkuaW5pdCBsZW5ndGggKGZ1biBpIC0+XG4gICAgICBFbGVtIHt2ID0gZiBpICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKX0pO1xuICB9IGluXG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwibWFwaVwiIGEgfmxlbmd0aDtcbiAgcmVzXG5cbmxldCBmb2xkX2xlZnQgZiBhY2MgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHIgPSByZWYgYWNjIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoIGluXG4gICAgciA6PSBmICFyIHY7XG4gIGRvbmU7XG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwiZm9sZF9sZWZ0XCIgYSB+bGVuZ3RoO1xuICAhclxuXG5sZXQgZm9sZF9yaWdodCBmIGEgYWNjID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgciA9IHJlZiBhY2MgaW5cbiAgZm9yIGkgPSBsZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoIGluXG4gICAgciA6PSBmIHYgIXI7XG4gIGRvbmU7XG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwiZm9sZF9yaWdodFwiIGEgfmxlbmd0aDtcbiAgIXJcblxubGV0IGV4aXN0cyBwIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZWMgbG9vcCBwIGFyciBpIGxlbmd0aCA9XG4gICAgaWYgaSA9IGxlbmd0aCB0aGVuIGZhbHNlXG4gICAgZWxzZVxuICAgICAgcCAodW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aClcbiAgICAgIHx8IGxvb3AgcCBhcnIgKGkgKyAxKSBsZW5ndGhcbiAgaW5cbiAgbGV0IHJlcyA9IGxvb3AgcCBhcnIgMCBsZW5ndGggaW5cbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJleGlzdHNcIiBhIH5sZW5ndGg7XG4gIHJlc1xuXG5sZXQgZm9yX2FsbCBwIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZWMgbG9vcCBwIGFyciBpIGxlbmd0aCA9XG4gICAgaWYgaSA9IGxlbmd0aCB0aGVuIHRydWVcbiAgICBlbHNlXG4gICAgICBwICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKVxuICAgICAgJiYgbG9vcCBwIGFyciAoaSArIDEpIGxlbmd0aFxuICBpblxuICBsZXQgcmVzID0gbG9vcCBwIGFyciAwIGxlbmd0aCBpblxuICBjaGVja19zYW1lX2xlbmd0aCBcImZvcl9hbGxcIiBhIH5sZW5ndGg7XG4gIHJlc1xuXG5sZXQgZmlsdGVyIGYgYSA9XG4gIGxldCBiID0gY3JlYXRlICgpIGluXG4gIGl0ZXJfIFwiZmlsdGVyXCIgKGZ1biB4IC0+IGlmIGYgeCB0aGVuIGFkZF9sYXN0IGIgeCkgYTtcbiAgYlxuXG5sZXQgZmlsdGVyX21hcCBmIGEgPVxuICBsZXQgYiA9IGNyZWF0ZSAoKSBpblxuICBpdGVyXyBcImZpbHRlcl9tYXBcIiAoZnVuIHggLT5cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB5IC0+IGFkZF9sYXN0IGIgeVxuICApIGE7XG4gIGJcblxuXG4oKiogezE6Y29udmVyc2lvbnMgQ29udmVyc2lvbnMgdG8gb3RoZXIgZGF0YSBzdHJ1Y3R1cmVzfSAqKVxuXG4oKiBUaGUgZWFnZXIgW3RvXypdIGNvbnZlcnNpb24gZnVuY3Rpb25zIGJlaGF2ZSBzaW1pbGFybHkgdG8gaXRlcmF0b3JzXG4gICBpbiBwcmVzZW5jZSBvZiB1cGRhdGVzIGR1cmluZyBjb21wdXRhdGlvbi4gVGhlIFsqX3JlZW50cmFudF1cbiAgIGZ1bmN0aW9ucyBvYmV5IHRoZWlyIG1vcmUgcGVybWlzc2l2ZSBzcGVjaWZpY2F0aW9uLCB3aGljaCB0b2xlcmF0ZXNcbiAgIGFueSBjb25jdXJyZW50IHVwZGF0ZS4gKilcblxubGV0IG9mX2FycmF5IGEgPVxuICBsZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAge1xuICAgIGxlbmd0aDtcbiAgICBhcnIgPSBBcnJheS5pbml0IGxlbmd0aCAoZnVuIGkgLT4gRWxlbSB7diA9IEFycmF5LnVuc2FmZV9nZXQgYSBpfSk7XG4gIH1cblxubGV0IHRvX2FycmF5IGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZXMgPSBBcnJheS5pbml0IGxlbmd0aCAoZnVuIGkgLT5cbiAgICB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKVxuICBpblxuICBjaGVja19zYW1lX2xlbmd0aCBcInRvX2FycmF5XCIgYSB+bGVuZ3RoO1xuICByZXNcblxubGV0IG9mX2xpc3QgbGkgPVxuICBsZXQgYSA9IGNyZWF0ZSAoKSBpblxuICBMaXN0Lml0ZXIgKGZ1biB4IC0+IGFkZF9sYXN0IGEgeCkgbGk7XG4gIGFcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IGwgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBsZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgbCA6PSB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoIDo6ICFsXG4gIGRvbmU7XG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwidG9fbGlzdFwiIGEgfmxlbmd0aDtcbiAgIWxcblxubGV0IG9mX3NlcSBzZXEgPVxuICBsZXQgaW5pdCA9IGNyZWF0ZSgpIGluXG4gIGFwcGVuZF9zZXEgaW5pdCBzZXE7XG4gIGluaXRcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgcmVjIGF1eCBpID0gZnVuICgpIC0+XG4gICAgY2hlY2tfc2FtZV9sZW5ndGggXCJ0b19zZXFcIiBhIH5sZW5ndGg7XG4gICAgaWYgaSA+PSBsZW5ndGggdGhlbiBTZXEuTmlsXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoIGluXG4gICAgICBTZXEuQ29ucyAodiwgYXV4IChpICsgMSkpXG4gICAgZW5kXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFfcmVlbnRyYW50IGEgPVxuICBsZXQgcmVjIGF1eCBpID0gZnVuICgpIC0+XG4gICAgaWYgaSA+PSBsZW5ndGggYSB0aGVuIFNlcS5OaWxcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA9IGdldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICh2LCBhdXggKGkgKyAxKSlcbiAgICBlbmRcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcV9yZXYgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlYyBhdXggaSA9IGZ1biAoKSAtPlxuICAgIGNoZWNrX3NhbWVfbGVuZ3RoIFwidG9fc2VxX3JldlwiIGEgfmxlbmd0aDtcbiAgICBpZiBpIDwgMCB0aGVuIFNlcS5OaWxcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICAgIFNlcS5Db25zICh2LCBhdXggKGkgLSAxKSlcbiAgICBlbmRcbiAgaW5cbiAgYXV4IChsZW5ndGggLSAxKVxuXG5sZXQgdG9fc2VxX3Jldl9yZWVudHJhbnQgYSA9XG4gIGxldCByZWMgYXV4IGkgPSBmdW4gKCkgLT5cbiAgICBpZiBpIDwgMCB0aGVuIFNlcS5OaWxcbiAgICBlbHNlIGlmIGkgPj0gbGVuZ3RoIGEgdGhlblxuICAgICAgKCogSWYgc29tZSBlbGVtZW50cyBoYXZlIGJlZW4gcmVtb3ZlZCBpbiB0aGUgbWVhbnRpbWUsIHdlIHNraXBcbiAgICAgICAgIHRob3NlIGVsZW1lbnRzIGFuZCBjb250aW51ZSB3aXRoIHRoZSBuZXcgZW5kIG9mIHRoZSBhcnJheS4gKilcbiAgICAgIGF1eCAobGVuZ3RoIGEgLSAxKSAoKVxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCB2ID0gZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHYsIGF1eCAoaSAtIDEpKVxuICAgIGVuZFxuICBpblxuICBhdXggKGxlbmd0aCBhIC0gMSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBrZXkgPSBzdHJpbmdcbnR5cGUgZG9jID0gc3RyaW5nXG50eXBlIHVzYWdlX21zZyA9IHN0cmluZ1xudHlwZSBhbm9uX2Z1biA9IChzdHJpbmcgLT4gdW5pdClcblxudHlwZSBzcGVjID1cbiAgfCBVbml0IG9mICh1bml0IC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHVuaXQgYXJndW1lbnQgKilcbiAgfCBCb29sIG9mIChib29sIC0+IHVuaXQpICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgYm9vbCBhcmd1bWVudCAqKVxuICB8IFNldCBvZiBib29sIHJlZiAgICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRydWUgKilcbiAgfCBDbGVhciBvZiBib29sIHJlZiAgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byBmYWxzZSAqKVxuICB8IFN0cmluZyBvZiAoc3RyaW5nIC0+IHVuaXQpICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBTZXRfc3RyaW5nIG9mIHN0cmluZyByZWYgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgc3RyaW5nIGFyZ3VtZW50ICopXG4gIHwgSW50IG9mIChpbnQgLT4gdW5pdCkgICAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhbiBpbnQgYXJndW1lbnQgKilcbiAgfCBTZXRfaW50IG9mIGludCByZWYgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgaW50IGFyZ3VtZW50ICopXG4gIHwgRmxvYXQgb2YgKGZsb2F0IC0+IHVuaXQpICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgU2V0X2Zsb2F0IG9mIGZsb2F0IHJlZiAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIGZsb2F0IGFyZ3VtZW50ICopXG4gIHwgVHVwbGUgb2Ygc3BlYyBsaXN0ICAgICAgICAgKCogVGFrZSBzZXZlcmFsIGFyZ3VtZW50cyBhY2NvcmRpbmcgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYyBsaXN0ICopXG4gIHwgU3ltYm9sIG9mIHN0cmluZyBsaXN0ICogKHN0cmluZyAtPiB1bml0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFRha2Ugb25lIG9mIHRoZSBzeW1ib2xzIGFzIGFyZ3VtZW50IGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIHN5bWJvbC4gKilcbiAgfCBSZXN0IG9mIChzdHJpbmcgLT4gdW5pdCkgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGVhY2ggcmVtYWluaW5nIGFyZ3VtZW50ICopXG4gIHwgUmVzdF9hbGwgb2YgKHN0cmluZyBsaXN0IC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogU3RvcCBpbnRlcnByZXRpbmcga2V5d29yZHMgYW5kIGNhbGwgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbiAgfCBFeHBhbmQgb2YgKHN0cmluZyAtPiBzdHJpbmcgYXJyYXkpICgqIElmIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIHRvIHByb2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBvZiB0aGUgZm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tcIi1mb29cIjsgXCJhcmdcIl0gQCByZXN0XSB3aGVyZSBcImZvb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyByZWdpc3RlcmVkIGFzIFtFeHBhbmQgZl0sIHRoZW4gdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgW2YgXCJhcmdcIiBAIHJlc3RdIGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkLiBPbmx5IGFsbG93ZWQgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY10uICopXG5cbmV4Y2VwdGlvbiBCYWQgb2Ygc3RyaW5nXG5leGNlcHRpb24gSGVscCBvZiBzdHJpbmdcblxudHlwZSBlcnJvciA9XG4gIHwgVW5rbm93biBvZiBzdHJpbmdcbiAgfCBXcm9uZyBvZiBzdHJpbmcgKiBzdHJpbmcgKiBzdHJpbmcgICgqIG9wdGlvbiwgYWN0dWFsLCBleHBlY3RlZCAqKVxuICB8IE1pc3Npbmcgb2Ygc3RyaW5nXG4gIHwgTWVzc2FnZSBvZiBzdHJpbmdcblxuZXhjZXB0aW9uIFN0b3Agb2YgZXJyb3IgKCogdXNlZCBpbnRlcm5hbGx5ICopXG5cbm9wZW4gUHJpbnRmXG5cbmxldCByZWMgYXNzb2MzIHggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8ICh5MSwgeTIsIF8pIDo6IF8gd2hlbiB5MSA9IHggLT4geTJcbiAgfCBfIDo6IHQgLT4gYXNzb2MzIHggdFxuXG5cbmxldCBzcGxpdCBzID1cbiAgbGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnPScgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBTdHJpbmcuc3ViIHMgMCBpLCBTdHJpbmcuc3ViIHMgKGkrMSkgKGxlbi0oaSsxKSlcblxuXG5sZXQgbWFrZV9zeW1saXN0IHByZWZpeCBzZXAgc3VmZml4IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBcIjxub25lPlwiXG4gIHwgaDo6dCAtPiAoTGlzdC5mb2xkX2xlZnQgKGZ1biB4IHkgLT4geCBeIHNlcCBeIHkpIChwcmVmaXggXiBoKSB0KSBeIHN1ZmZpeFxuXG5cbmxldCBwcmludF9zcGVjIGJ1ZiAoa2V5LCBzcGVjLCBkb2MpID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBkb2MgPiAwIHRoZW5cbiAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICB8IFN5bWJvbCAobCwgXykgLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzJXNcXG5cIiBrZXkgKG1ha2Vfc3ltbGlzdCBcIntcIiBcInxcIiBcIn1cIiBsKSBkb2NcbiAgICB8IF8gLT5cbiAgICAgICAgYnByaW50ZiBidWYgXCIgICVzICVzXFxuXCIga2V5IGRvY1xuXG5cbmxldCBoZWxwX2FjdGlvbiAoKSA9IHJhaXNlIChTdG9wIChVbmtub3duIFwiLWhlbHBcIikpXG5cbmxldCBhZGRfaGVscCBzcGVjbGlzdCA9XG4gIGxldCBhZGQxID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItaGVscFwiIHNwZWNsaXN0KTsgW11cbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgW1wiLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBhbmQgYWRkMiA9XG4gICAgdHJ5IGlnbm9yZSAoYXNzb2MzIFwiLS1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItLWhlbHBcIiwgVW5pdCBoZWxwX2FjdGlvbiwgXCIgRGlzcGxheSB0aGlzIGxpc3Qgb2Ygb3B0aW9uc1wiXVxuICBpblxuICBzcGVjbGlzdCBAIChhZGQxIEAgYWRkMilcblxuXG5sZXQgdXNhZ2VfYiBidWYgc3BlY2xpc3QgZXJybXNnID1cbiAgYnByaW50ZiBidWYgXCIlc1xcblwiIGVycm1zZztcbiAgTGlzdC5pdGVyIChwcmludF9zcGVjIGJ1ZikgKGFkZF9oZWxwIHNwZWNsaXN0KVxuXG5cbmxldCB1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICB1c2FnZV9iIGIgc3BlY2xpc3QgZXJybXNnO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCB1c2FnZSBzcGVjbGlzdCBlcnJtc2cgPVxuICBlcHJpbnRmIFwiJXNcIiAodXNhZ2Vfc3RyaW5nIHNwZWNsaXN0IGVycm1zZylcblxuXG5sZXQgY3VycmVudCA9IHJlZiAwXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChib29sX29mX3N0cmluZyB4KVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG5cbmxldCBpbnRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgeClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggYWxsb3dfZXhwYW5kIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm1zZyA9XG4gIGxldCBpbml0cG9zID0gIWN1cnJlbnQgaW5cbiAgbGV0IGNvbnZlcnRfZXJyb3IgZXJyb3IgPVxuICAgICgqIGNvbnZlcnQgYW4gaW50ZXJuYWwgZXJyb3IgdG8gYSBCYWQvSGVscCBleGNlcHRpb25cbiAgICAgICAqb3IqIGFkZCB0aGUgcHJvZ3JhbSBuYW1lIGFzIGEgcHJlZml4IGFuZCB0aGUgdXNhZ2UgbWVzc2FnZSBhcyBhIHN1ZmZpeFxuICAgICAgIHRvIGFuIHVzZXItcmFpc2VkIEJhZCBleGNlcHRpb24uXG4gICAgKilcbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gICAgbGV0IHByb2duYW1lID1cbiAgICAgIGlmIGluaXRwb3MgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSB0aGVuICFhcmd2Lihpbml0cG9zKSBlbHNlIFwiKD8pXCIgaW5cbiAgICBiZWdpbiBtYXRjaCBlcnJvciB3aXRoXG4gICAgICB8IFVua25vd24gXCItaGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gXCItLWhlbHBcIiAtPiAoKVxuICAgICAgfCBVbmtub3duIHMgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogdW5rbm93biBvcHRpb24gJyVzJy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IE1pc3NpbmcgcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiBvcHRpb24gJyVzJyBuZWVkcyBhbiBhcmd1bWVudC5cXG5cIiBwcm9nbmFtZSBzXG4gICAgICB8IFdyb25nIChvcHQsIGFyZywgZXhwZWN0ZWQpIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IHdyb25nIGFyZ3VtZW50ICclcyc7IG9wdGlvbiAnJXMnIGV4cGVjdHMgJXMuXFxuXCJcbiAgICAgICAgICAgICAgICAgIHByb2duYW1lIGFyZyBvcHQgZXhwZWN0ZWRcbiAgICAgIHwgTWVzc2FnZSBzIC0+ICgqIHVzZXIgZXJyb3IgbWVzc2FnZSAqKVxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiAlcy5cXG5cIiBwcm9nbmFtZSBzXG4gICAgZW5kO1xuICAgIHVzYWdlX2IgYiAhc3BlY2xpc3QgZXJybXNnO1xuICAgIGlmIGVycm9yID0gVW5rbm93biBcIi1oZWxwXCIgfHwgZXJyb3IgPSBVbmtub3duIFwiLS1oZWxwXCJcbiAgICB0aGVuIEhlbHAgKEJ1ZmZlci5jb250ZW50cyBiKVxuICAgIGVsc2UgQmFkIChCdWZmZXIuY29udGVudHMgYilcbiAgaW5cbiAgaW5jciBjdXJyZW50O1xuICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIGRvXG4gICAgYmVnaW4gdHJ5XG4gICAgICBsZXQgcyA9ICFhcmd2LighY3VycmVudCkgaW5cbiAgICAgIGlmIFN0cmluZy5zdGFydHNfd2l0aCB+cHJlZml4OlwiLVwiIHMgdGhlbiBiZWdpblxuICAgICAgICBsZXQgYWN0aW9uLCBmb2xsb3cgPVxuICAgICAgICAgIHRyeSBhc3NvYzMgcyAhc3BlY2xpc3QsIE5vbmVcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGtleXdvcmQsIGFyZyA9IHNwbGl0IHMgaW5cbiAgICAgICAgICAgIGFzc29jMyBrZXl3b3JkICFzcGVjbGlzdCwgU29tZSBhcmdcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoU3RvcCAoVW5rbm93biBzKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm5vIGFyZ3VtZW50XCIpKSkgaW5cbiAgICAgICAgbGV0IGdldF9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGlmICFjdXJyZW50ICsgMSA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgZWxzZSByYWlzZSAoU3RvcCAoTWlzc2luZyBzKSlcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGFyZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgY29uc3VtZV9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluY3IgY3VycmVudFxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgdHJlYXRfYWN0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbml0IGYgLT4gbm9fYXJnICgpOyBmICgpO1xuICAgICAgICB8IEJvb2wgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGJvb2xfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgYm9vbGVhblwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgcyAtPiBmIHNcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldCByIC0+IG5vX2FyZyAoKTsgciA6PSB0cnVlO1xuICAgICAgICB8IENsZWFyIHIgLT4gbm9fYXJnICgpOyByIDo9IGZhbHNlO1xuICAgICAgICB8IFN0cmluZyBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTeW1ib2wgKHN5bWIsIGYpIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgaWYgTGlzdC5tZW0gYXJnIHN5bWIgdGhlbiBiZWdpblxuICAgICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJvbmUgb2Y6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIChtYWtlX3N5bWxpc3QgXCJcIiBcIiBcIiBcIlwiIHN5bWIpKSkpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBTZXRfc3RyaW5nIHIgLT5cbiAgICAgICAgICAgIHIgOj0gZ2V0X2FyZyAoKTtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEludCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2ludCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgRmxvYXQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2Zsb2F0IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFR1cGxlIHNwZWNzIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBMaXN0Lml0ZXIgdHJlYXRfYWN0aW9uIHNwZWNzO1xuICAgICAgICB8IFJlc3QgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSAtIDEgZG9cbiAgICAgICAgICAgICAgZiAhYXJndi4oIWN1cnJlbnQgKyAxKTtcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICB8IFJlc3RfYWxsIGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgQXJyYXkubGVuZ3RoICFhcmd2IC0gMSBkb1xuICAgICAgICAgICAgICBhY2MgOj0gIWFyZ3YuKCFjdXJyZW50ICsgMSkgOjogIWFjYztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgZiAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgfCBFeHBhbmQgZiAtPlxuICAgICAgICAgICAgaWYgbm90IGFsbG93X2V4cGFuZCB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQXJnLkV4cGFuZCBpcyBpcyBvbmx5IGFsbG93ZWQgd2l0aCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnLnBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXCIpO1xuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGxldCBuZXdhcmcgPSBmIGFyZyBpblxuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYmVmb3JlID0gQXJyYXkuc3ViICFhcmd2IDAgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgIGFuZCBhZnRlciA9XG4gICAgICAgICAgICAgIEFycmF5LnN1YiAhYXJndiAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheS5sZW5ndGggIWFyZ3YpIC0gIWN1cnJlbnQgLSAxKSBpblxuICAgICAgICAgICAgYXJndjo9IEFycmF5LmNvbmNhdCBbYmVmb3JlO25ld2FyZzthZnRlcl07XG4gICAgICAgIGluXG4gICAgICAgIHRyZWF0X2FjdGlvbiBhY3Rpb24gZW5kXG4gICAgICBlbHNlIGFub25mdW4gc1xuICAgIHdpdGggfCBCYWQgbSAtPiByYWlzZSAoY29udmVydF9lcnJvciAoTWVzc2FnZSBtKSk7XG4gICAgICAgICB8IFN0b3AgZSAtPiByYWlzZSAoY29udmVydF9lcnJvciBlKTtcbiAgICBlbmQ7XG4gICAgaW5jciBjdXJyZW50XG4gIGRvbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCB0cnVlIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZ1xuXG5sZXQgcGFyc2VfYXJndl9keW5hbWljID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGZhbHNlIGN1cnJlbnQgKHJlZiBhcmd2KSBzcGVjbGlzdCBhbm9uZnVuXG4gICAgZXJybXNnXG5cblxubGV0IHBhcnNlX2FyZ3YgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hcmd2X2R5bmFtaWMgfmN1cnJlbnQ6Y3VycmVudCBhcmd2IChyZWYgc3BlY2xpc3QpIGFub25mdW4gZXJybXNnXG5cblxubGV0IHBhcnNlIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2IFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHBhcnNlX2R5bmFtaWMgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3ZfZHluYW1pYyBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5sZXQgcGFyc2VfZXhwYW5kIGwgZiBtc2cgPVxuICB0cnlcbiAgICBsZXQgYXJndiA9IHJlZiBTeXMuYXJndiBpblxuICAgIGxldCBzcGVjID0gcmVmIGwgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiAoIWN1cnJlbnQpIGluXG4gICAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWMgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHNlY29uZF93b3JkIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID49IGxlbiB0aGVuIGxlblxuICAgIGVsc2UgaWYgcy5bbl0gPSAnICcgdGhlbiBsb29wIChuKzEpXG4gICAgZWxzZSBuXG4gIGluXG4gIG1hdGNoIFN0cmluZy5pbmRleCBzICdcXHQnIHdpdGhcbiAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgICBiZWdpbiBtYXRjaCBTdHJpbmcuaW5kZXggcyAnICcgd2l0aFxuICAgICAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBsZW5cbiAgICAgIGVuZFxuXG5cbmxldCBtYXhfYXJnX2xlbiBjdXIgKGt3ZCwgc3BlYywgZG9jKSA9XG4gIG1hdGNoIHNwZWMgd2l0aFxuICB8IFN5bWJvbCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZClcbiAgfCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZCArIHNlY29uZF93b3JkIGRvYylcblxuXG5sZXQgcmVwbGFjZV9sZWFkaW5nX3RhYiBzID1cbiAgbGV0IHNlZW4gPSByZWYgZmFsc2UgaW5cbiAgU3RyaW5nLm1hcCAoZnVuY3Rpb24gJ1xcdCcgd2hlbiBub3QgIXNlZW4gLT4gc2VlbiA6PSB0cnVlOyAnICcgfCBjIC0+IGMpIHNcblxubGV0IGFkZF9wYWRkaW5nIGxlbiBrc2QgPVxuICBtYXRjaCBrc2Qgd2l0aFxuICB8IChfLCBfLCBcIlwiKSAtPlxuICAgICAgKCogRG8gbm90IHBhZCB1bmRvY3VtZW50ZWQgb3B0aW9ucywgc28gdGhhdCB0aGV5IHN0aWxsIGRvbid0IHNob3cgdXAgd2hlblxuICAgICAgICogcnVuIHRocm91Z2ggW3VzYWdlXSBvciBbcGFyc2VdLiAqKVxuICAgICAga3NkXG4gIHwgKGt3ZCwgKFN5bWJvbCBfIGFzIHNwZWMpLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgKChJbnQubWF4IDAgKGxlbiAtIGN1dGNvbCkpICsgMykgJyAnIGluXG4gICAgICAoa3dkLCBzcGVjLCBcIlxcblwiIF4gc3BhY2VzIF4gcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gIHwgKGt3ZCwgc3BlYywgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IGt3ZF9sZW4gPSBTdHJpbmcubGVuZ3RoIGt3ZCBpblxuICAgICAgbGV0IGRpZmYgPSBsZW4gLSBrd2RfbGVuIC0gY3V0Y29sIGluXG4gICAgICBpZiBkaWZmIDw9IDAgdGhlblxuICAgICAgICAoa3dkLCBzcGVjLCByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlIGRpZmYgJyAnIGluXG4gICAgICAgIGxldCBwcmVmaXggPSBTdHJpbmcuc3ViIChyZXBsYWNlX2xlYWRpbmdfdGFiIG1zZykgMCBjdXRjb2wgaW5cbiAgICAgICAgbGV0IHN1ZmZpeCA9IFN0cmluZy5zdWIgbXNnIGN1dGNvbCAoU3RyaW5nLmxlbmd0aCBtc2cgLSBjdXRjb2wpIGluXG4gICAgICAgIChrd2QsIHNwZWMsIHByZWZpeCBeIHNwYWNlcyBeIHN1ZmZpeClcblxuXG5sZXQgYWxpZ24gPyhsaW1pdD1tYXhfaW50KSBzcGVjbGlzdCA9XG4gIGxldCBjb21wbGV0ZWQgPSBhZGRfaGVscCBzcGVjbGlzdCBpblxuICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgbWF4X2FyZ19sZW4gMCBjb21wbGV0ZWQgaW5cbiAgbGV0IGxlbiA9IEludC5taW4gbGVuIGxpbWl0IGluXG4gIExpc3QubWFwIChhZGRfcGFkZGluZyBsZW4pIGNvbXBsZXRlZFxuXG5sZXQgdHJpbV9jciBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBsZW4gPiAwICYmIFN0cmluZy5nZXQgcyAobGVuIC0gMSkgPSAnXFxyJyB0aGVuXG4gICAgU3RyaW5nLnN1YiBzIDAgKGxlbiAtIDEpXG4gIGVsc2VcbiAgICBzXG5cbmxldCByZWFkX2F1eCB0cmltIHNlcCBmaWxlID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgbGV0IHdvcmRzID0gcmVmIFtdIGluXG4gIGxldCBzdGFzaCAoKSA9XG4gICAgbGV0IHdvcmQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgbGV0IHdvcmQgPSBpZiB0cmltIHRoZW4gdHJpbV9jciB3b3JkIGVsc2Ugd29yZCBpblxuICAgIHdvcmRzIDo9IHdvcmQgOjogIXdvcmRzO1xuICAgIEJ1ZmZlci5jbGVhciBidWZcbiAgaW5cbiAgYmVnaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBsZXQgYyA9IGlucHV0X2NoYXIgaWMgaW5cbiAgICAgICAgaWYgYyA9IHNlcCB0aGVuIHN0YXNoICgpIGVsc2UgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgICBkb25lXG4gICAgd2l0aCBFbmRfb2ZfZmlsZSAtPiAoKVxuICBlbmQ7XG4gIGlmIEJ1ZmZlci5sZW5ndGggYnVmID4gMCB0aGVuIHN0YXNoICgpO1xuICBjbG9zZV9pbiBpYztcbiAgQXJyYXkub2ZfbGlzdCAoTGlzdC5yZXYgIXdvcmRzKVxuXG5sZXQgcmVhZF9hcmcgPSByZWFkX2F1eCB0cnVlICdcXG4nXG5cbmxldCByZWFkX2FyZzAgPSByZWFkX2F1eCBmYWxzZSAnXFx4MDAnXG5cbmxldCB3cml0ZV9hdXggc2VwIGZpbGUgYXJncyA9XG4gIGxldCBvYyA9IG9wZW5fb3V0X2JpbiBmaWxlIGluXG4gIEFycmF5Lml0ZXIgKGZ1biBzIC0+IGZwcmludGYgb2MgXCIlcyVjXCIgcyBzZXApIGFyZ3M7XG4gIGNsb3NlX291dCBvY1xuXG5sZXQgd3JpdGVfYXJnID0gd3JpdGVfYXV4ICdcXG4nXG5cbmxldCB3cml0ZV9hcmcwID0gd3JpdGVfYXV4ICdcXHgwMCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBQcmludGZcblxudHlwZSB0ID0gZXhuID0gLi5cblxubGV0IHByaW50ZXJzID0gQXRvbWljLm1ha2UgW11cblxubGV0IGxvY2ZtdCA9IGZvcm1hdF9vZl9zdHJpbmcgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6ICVzXCJcblxubGV0IGZpZWxkIHggaSA9XG4gIGxldCBmID0gT2JqLmZpZWxkIHggaSBpblxuICBpZiBub3QgKE9iai5pc19ibG9jayBmKSB0aGVuXG4gICAgc3ByaW50ZiBcIiVkXCIgKE9iai5tYWdpYyBmIDogaW50KSAgICAgICAgICAgKCogY2FuIGFsc28gYmUgYSBjaGFyICopXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLnN0cmluZ190YWcgdGhlblxuICAgIHNwcmludGYgXCIlU1wiIChPYmoubWFnaWMgZiA6IHN0cmluZylcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouZG91YmxlX3RhZyB0aGVuXG4gICAgc3RyaW5nX29mX2Zsb2F0IChPYmoubWFnaWMgZiA6IGZsb2F0KVxuICBlbHNlXG4gICAgXCJfXCJcblxubGV0IHJlYyBvdGhlcl9maWVsZHMgeCBpID1cbiAgaWYgaSA+PSBPYmouc2l6ZSB4IHRoZW4gXCJcIlxuICBlbHNlIHNwcmludGYgXCIsICVzJXNcIiAoZmllbGQgeCBpKSAob3RoZXJfZmllbGRzIHggKGkrMSkpXG5cbmxldCBmaWVsZHMgeCA9XG4gIG1hdGNoIE9iai5zaXplIHggd2l0aFxuICB8IDAgLT4gXCJcIlxuICB8IDEgLT4gXCJcIlxuICB8IDIgLT4gc3ByaW50ZiBcIiglcylcIiAoZmllbGQgeCAxKVxuICB8IF8gLT4gc3ByaW50ZiBcIiglcyVzKVwiIChmaWVsZCB4IDEpIChvdGhlcl9maWVsZHMgeCAyKVxuXG5sZXQgdXNlX3ByaW50ZXJzIHggPVxuICBsZXQgcmVjIGNvbnYgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGhkIHggd2l0aFxuICAgICAgICAgfCBOb25lIHwgZXhjZXB0aW9uIF8gLT4gY29udiB0bFxuICAgICAgICAgfCBTb21lIHMgLT4gU29tZSBzKVxuICAgIHwgW10gLT4gTm9uZSBpblxuICBjb252IChBdG9taWMuZ2V0IHByaW50ZXJzKVxuXG5sZXQgZGVzdHJ1Y3RfZXh0X2NvbnN0cnVjdG9yIHggPVxuICBpZiBPYmoudGFnIHggPD4gMCB0aGVuXG4gICAgKChPYmoubWFnaWMgKE9iai5maWVsZCB4IDApIDogc3RyaW5nKSwgTm9uZSlcbiAgZWxzZVxuICAgIGxldCBjb25zdHJ1Y3RvciA9XG4gICAgICAoT2JqLm1hZ2ljIChPYmouZmllbGQgKE9iai5maWVsZCB4IDApIDApIDogc3RyaW5nKSBpblxuICAgIChjb25zdHJ1Y3RvciwgU29tZSAoZmllbGRzIHgpKVxuXG5sZXQgc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB0ID1cbiAgbGV0IGNvbnN0cnVjdG9yLCBmaWVsZHNfb3B0ID0gZGVzdHJ1Y3RfZXh0X2NvbnN0cnVjdG9yIHQgaW5cbiAgbWF0Y2ggZmllbGRzX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBjb25zdHJ1Y3RvclxuICB8IFNvbWUgZiAtPiBjb25zdHJ1Y3RvciBeIGZcblxubGV0IHRvX3N0cmluZ19kZWZhdWx0ID0gZnVuY3Rpb25cbiAgfCBPdXRfb2ZfbWVtb3J5IC0+IFwiT3V0IG9mIG1lbW9yeVwiXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gXCJTdGFjayBvdmVyZmxvd1wiXG4gIHwgTWF0Y2hfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNSkgXCJQYXR0ZXJuIG1hdGNoaW5nIGZhaWxlZFwiXG4gIHwgQXNzZXJ0X2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiQXNzZXJ0aW9uIGZhaWxlZFwiXG4gIHwgVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzYpIFwiVW5kZWZpbmVkIHJlY3Vyc2l2ZSBtb2R1bGVcIlxuICB8IHggLT5cbiAgICAgIHN0cmluZ19vZl9leHRlbnNpb25fY29uc3RydWN0b3IgKE9iai5yZXByIHgpXG5cbmxldCB0b19zdHJpbmcgZSA9XG4gIG1hdGNoIHVzZV9wcmludGVycyBlIHdpdGhcbiAgfCBTb21lIHMgLT4gc1xuICB8IE5vbmUgLT4gdG9fc3RyaW5nX2RlZmF1bHQgZVxuXG5sZXQgcHJpbnQgZmN0IGFyZyA9XG4gIHRyeVxuICAgIGZjdCBhcmdcbiAgd2l0aCB4IC0+XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGZsdXNoIHN0ZGVycjtcbiAgICByYWlzZSB4XG5cbmxldCBjYXRjaCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBmbHVzaCBzdGRvdXQ7XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGV4aXQgMlxuXG50eXBlIHJhd19iYWNrdHJhY2Vfc2xvdFxudHlwZSByYXdfYmFja3RyYWNlX2VudHJ5ID0gcHJpdmF0ZSBpbnRcbnR5cGUgcmF3X2JhY2t0cmFjZSA9IHJhd19iYWNrdHJhY2VfZW50cnkgYXJyYXlcblxubGV0IHJhd19iYWNrdHJhY2VfZW50cmllcyBidCA9IGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlOlxuICB1bml0IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlXCJcblxuZXh0ZXJuYWwgcmFpc2Vfd2l0aF9iYWNrdHJhY2U6IGV4biAtPiByYXdfYmFja3RyYWNlIC0+ICdhXG4gID0gXCIlcmFpc2Vfd2l0aF9iYWNrdHJhY2VcIlxuXG4oKiBEaXNhYmxlIHdhcm5pbmcgMzc6IHZhbHVlcyBhcmUgY29uc3RydWN0ZWQgaW4gdGhlIHJ1bnRpbWUgKilcbnR5cGVbQHdhcm5pbmcgXCItMzdcIl0gYmFja3RyYWNlX3Nsb3QgPVxuICB8IEtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlICAgOiBib29sO1xuICAgICAgZmlsZW5hbWUgICA6IHN0cmluZztcbiAgICAgIHN0YXJ0X2xudW0gOiBpbnQ7XG4gICAgICBzdGFydF9jaGFyIDogaW50O1xuICAgICAgZW5kX29mZnNldCA6IGludDsgKCogUmVsYXRpdmUgdG8gYmVnaW5uaW5nIG9mIHN0YXJ0X2xudW0gKilcbiAgICAgIGVuZF9sbnVtICAgOiBpbnQ7XG4gICAgICBlbmRfY2hhciAgIDogaW50OyAoKiBSZWxhdGl2ZSB0byBiZWdpbm5pbmcgb2YgZW5kX2xudW0gbGluZSAqKVxuICAgICAgaXNfaW5saW5lICA6IGJvb2w7XG4gICAgICBkZWZuYW1lICAgIDogc3RyaW5nO1xuICAgIH1cbiAgfCBVbmtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlIDogYm9vbFxuICAgIH1cblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Q6XG4gIHJhd19iYWNrdHJhY2Vfc2xvdCAtPiBiYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZTpcbiAgcmF3X2JhY2t0cmFjZSAtPiBiYWNrdHJhY2Vfc2xvdCBhcnJheSA9IFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2VcIlxuXG5sZXQgY29udmVydF9yYXdfYmFja3RyYWNlIGJ0ID1cbiAgdHJ5IFNvbWUgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgZm9ybWF0X2JhY2t0cmFjZV9zbG90IHBvcyBzbG90ID1cbiAgbGV0IGluZm8gaXNfcmFpc2UgPVxuICAgIGlmIGlzX3JhaXNlIHRoZW5cbiAgICAgIGlmIHBvcyA9IDAgdGhlbiBcIlJhaXNlZCBhdFwiIGVsc2UgXCJSZS1yYWlzZWQgYXRcIlxuICAgIGVsc2VcbiAgICAgIGlmIHBvcyA9IDAgdGhlbiBcIlJhaXNlZCBieSBwcmltaXRpdmUgb3BlcmF0aW9uIGF0XCIgZWxzZSBcIkNhbGxlZCBmcm9tXCJcbiAgaW5cbiAgbWF0Y2ggc2xvdCB3aXRoXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgICBpZiBsLmlzX3JhaXNlIHRoZW5cbiAgICAgICAgKCogY29tcGlsZXItaW5zZXJ0ZWQgcmUtcmFpc2UsIHNraXBwZWQgKikgTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBTb21lIChzcHJpbnRmIFwiJXMgdW5rbm93biBsb2NhdGlvblwiIChpbmZvIGZhbHNlKSlcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgICBsZXQgbGluZXMgPVxuICAgICAgICBpZiBsLnN0YXJ0X2xudW0gPSBsLmVuZF9sbnVtIHRoZW5cbiAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIiAlZFwiIGwuc3RhcnRfbG51bVxuICAgICAgICBlbHNlXG4gICAgICAgICAgUHJpbnRmLnNwcmludGYgXCJzICVkLSVkXCIgbC5zdGFydF9sbnVtIGwuZW5kX2xudW1cbiAgICAgIGluXG4gICAgICBTb21lIChzcHJpbnRmIFwiJXMgJXMgaW4gZmlsZSBcXFwiJXNcXFwiJXMsIGxpbmUlcywgY2hhcmFjdGVycyAlZC0lZFwiXG4gICAgICAgICAgICAgIChpbmZvIGwuaXNfcmFpc2UpIGwuZGVmbmFtZSBsLmZpbGVuYW1lXG4gICAgICAgICAgICAgIChpZiBsLmlzX2lubGluZSB0aGVuIFwiIChpbmxpbmVkKVwiIGVsc2UgXCJcIilcbiAgICAgICAgICAgICAgbGluZXMgbC5zdGFydF9jaGFyIGwuZW5kX2NoYXIpXG5cbmxldCBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBmcHJpbnRmIG91dGNoYW5cbiAgICAgICAgXCIoUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIGNhbm5vdCBwcmludCBzdGFjayBiYWNrdHJhY2UpXFxuXCJcbiAgfCBTb21lIGEgLT5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gZnByaW50ZiBvdXRjaGFuIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmVcblxubGV0IHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiByYXdfYmFja3RyYWNlID1cbiAgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSlcblxuKCogY29uZnVzaW5nbHkgbmFtZWQ6IHByaW50cyB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgcHJpbnRfYmFja3RyYWNlIG91dGNoYW4gPVxuICBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gKGdldF9yYXdfYmFja3RyYWNlICgpKVxuXG5sZXQgYmFja3RyYWNlX3RvX3N0cmluZyBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgXCIoUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIGNhbm5vdCBwcmludCBzdGFjayBiYWNrdHJhY2UpXFxuXCJcbiAgfCBTb21lIGEgLT5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGJwcmludGYgYiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIHJhd19iYWNrdHJhY2UgPVxuICBiYWNrdHJhY2VfdG9fc3RyaW5nIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSlcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX3JhaXNlID0gZnVuY3Rpb25cbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lID0gZnVuY3Rpb25cbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfaW5saW5lXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IGZhbHNlXG5cbnR5cGUgbG9jYXRpb24gPSB7XG4gIGZpbGVuYW1lIDogc3RyaW5nO1xuICBsaW5lX251bWJlciA6IGludDtcbiAgc3RhcnRfY2hhciA6IGludDtcbiAgZW5kX2NoYXIgOiBpbnQ7XG4gIGVuZF9saW5lIDogaW50O1xuICBlbmRfY29sIDogaW50O1xufVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfbG9jYXRpb24gPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgIFNvbWUge1xuICAgICAgZmlsZW5hbWUgICAgPSBsLmZpbGVuYW1lO1xuICAgICAgbGluZV9udW1iZXIgPSBsLnN0YXJ0X2xudW07XG4gICAgICBzdGFydF9jaGFyICA9IGwuc3RhcnRfY2hhcjtcbiAgICAgIGVuZF9jaGFyICAgID0gbC5lbmRfb2Zmc2V0O1xuICAgICAgZW5kX2xpbmUgICAgPSBsLmVuZF9sbnVtO1xuICAgICAgZW5kX2NvbCAgICAgPSBsLmVuZF9jaGFyO1xuICAgIH1cblxubGV0IGJhY2t0cmFjZV9zbG90X2RlZm5hbWUgPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gX1xuICB8IEtub3duX2xvY2F0aW9uIHsgZGVmbmFtZSA9IFwiXCIgfSAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBTb21lIGwuZGVmbmFtZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzIHJhd19iYWNrdHJhY2UgPVxuICAoKiBUaGUgZG9jdW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdGhhdCBTb21lIGlzXG4gICAgIHJldHVybmVkIG9ubHkgaWYgYSBwYXJ0IG9mIHRoZSB0cmFjZSBpcyB1c2FibGUuIFRoaXMgZ2l2ZXMgdXNcbiAgICAgYSBiaXQgbW9yZSB3b3JrIHRoYW4ganVzdCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UsIGJ1dCBpdCBtYWtlcyB0aGVcbiAgICAgQVBJIG1vcmUgdXNlci1mcmllbmRseSAtLSBvdGhlcndpc2UgbW9zdCB1c2VycyB3b3VsZCBoYXZlIHRvXG4gICAgIHJlaW1wbGVtZW50IHRoZSBcIlByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBzb3JyeVwiIGxvZ2ljXG4gICAgIHRoZW1zZWx2ZXMuICopXG4gIG1hdGNoIGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBiYWNrdHJhY2UgLT5cbiAgICAgIGxldCB1c2FibGVfc2xvdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IGZhbHNlXG4gICAgICAgIHwgS25vd25fbG9jYXRpb24gXyAtPiB0cnVlIGluXG4gICAgICBsZXQgcmVjIGV4aXN0c191c2FibGUgPSBmdW5jdGlvblxuICAgICAgICB8ICgtMSkgLT4gZmFsc2VcbiAgICAgICAgfCBpIC0+IHVzYWJsZV9zbG90IGJhY2t0cmFjZS4oaSkgfHwgZXhpc3RzX3VzYWJsZSAoaSAtIDEpIGluXG4gICAgICBpZiBleGlzdHNfdXNhYmxlIChBcnJheS5sZW5ndGggYmFja3RyYWNlIC0gMSlcbiAgICAgIHRoZW4gU29tZSBiYWNrdHJhY2VcbiAgICAgIGVsc2UgTm9uZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzX29mX3Jhd19lbnRyeSBlbnRyeSA9XG4gIGJhY2t0cmFjZV9zbG90cyBbfCBlbnRyeSB8XVxuXG5tb2R1bGUgU2xvdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBiYWNrdHJhY2Vfc2xvdFxuICBsZXQgZm9ybWF0ID0gZm9ybWF0X2JhY2t0cmFjZV9zbG90XG4gIGxldCBpc19yYWlzZSA9IGJhY2t0cmFjZV9zbG90X2lzX3JhaXNlXG4gIGxldCBpc19pbmxpbmUgPSBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmVcbiAgbGV0IGxvY2F0aW9uID0gYmFja3RyYWNlX3Nsb3RfbG9jYXRpb25cbiAgbGV0IG5hbWUgPSBiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lXG5lbmRcblxubGV0IHJhd19iYWNrdHJhY2VfbGVuZ3RoIGJ0ID0gQXJyYXkubGVuZ3RoIGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlX3Nsb3QgOlxuICByYXdfYmFja3RyYWNlIC0+IGludCAtPiByYXdfYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90IDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCBvcHRpb25cbiAgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcIlxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDpcbiAgIHJldHVybnMgdGhlICpzdHJpbmcqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IGdldF9iYWNrdHJhY2UgKCkgPSByYXdfYmFja3RyYWNlX3RvX3N0cmluZyAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmV4dGVybmFsIHJlY29yZF9iYWNrdHJhY2U6IGJvb2wgLT4gdW5pdCA9IFwiY2FtbF9yZWNvcmRfYmFja3RyYWNlXCJcbmV4dGVybmFsIGJhY2t0cmFjZV9zdGF0dXM6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXCJcblxubGV0IHJlYyByZWdpc3Rlcl9wcmludGVyIGZuID1cbiAgbGV0IG9sZF9wcmludGVycyA9IEF0b21pYy5nZXQgcHJpbnRlcnMgaW5cbiAgbGV0IG5ld19wcmludGVycyA9IGZuIDo6IG9sZF9wcmludGVycyBpblxuICBsZXQgc3VjY2VzcyA9IEF0b21pYy5jb21wYXJlX2FuZF9zZXQgcHJpbnRlcnMgb2xkX3ByaW50ZXJzIG5ld19wcmludGVycyBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIHJlZ2lzdGVyX3ByaW50ZXIgZm5cblxuZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjazogaW50IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrXCJcblxubGV0IGV4bl9zbG90IHggPVxuICBsZXQgeCA9IE9iai5yZXByIHggaW5cbiAgaWYgT2JqLnRhZyB4ID0gMCB0aGVuIE9iai5maWVsZCB4IDAgZWxzZSB4XG5cbmxldCBleG5fc2xvdF9pZCB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAxKSA6IGludClcblxubGV0IGV4bl9zbG90X25hbWUgeCA9XG4gIGxldCBzbG90ID0gZXhuX3Nsb3QgeCBpblxuICAoT2JqLm9iaiAoT2JqLmZpZWxkIHNsb3QgMCkgOiBzdHJpbmcpXG5cbmV4dGVybmFsIGdldF9kZWJ1Z19pbmZvX3N0YXR1cyA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzXCJcblxuKCogRGVzY3JpcHRpb25zIGZvciBlcnJvcnMgaW4gc3RhcnR1cC5oLiBTZWUgYWxzbyBiYWNrdHJhY2UuYyAqKVxubGV0IGVycm9ycyA9IFt8IFwiXCI7XG4gICgqIEZJTEVfTk9UX0ZPVU5EICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBub3QgZm91bmQpXCI7XG4gICgqIEJBRF9CWVRFQ09ERSAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgYXBwZWFycyB0byBiZSBjb3JydXB0KVwiO1xuICAoKiBXUk9OR19NQUdJQyAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgaGFzIHdyb25nIG1hZ2ljIG51bWJlcilcIjtcbiAgKCogTk9fRkRTICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBjYW5ub3QgYmUgb3BlbmVkO1xcbiBcXFxuICAgICAgLS0gdG9vIG1hbnkgb3BlbiBmaWxlcy4gVHJ5IHJ1bm5pbmcgd2l0aCBPQ0FNTFJVTlBBUkFNPWI9MilcIlxufF1cblxubGV0IGRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZXhuIHJhd19iYWNrdHJhY2UgPVxuICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgbGV0IHN0YXR1cyA9IGdldF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSBpblxuICBpZiBzdGF0dXMgPCAwIHRoZW5cbiAgICBwcmVycl9lbmRsaW5lIGVycm9ycy4oYWJzIHN0YXR1cyk7XG4gIGZsdXNoIHN0ZGVyclxuXG5sZXQgdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgPSByZWYgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlclxuXG5sZXQgc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGZuID0gdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgOj0gZm5cblxubGV0IGVtcHR5X2JhY2t0cmFjZSA6IHJhd19iYWNrdHJhY2UgPSBbfCB8XVxuXG5sZXQgdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpID1cbiAgdHJ5XG4gICAgZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgd2l0aCBfICgqIE91dF9vZl9tZW1vcnk/ICopIC0+XG4gICAgZW1wdHlfYmFja3RyYWNlXG5cbmxldCBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uJyBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgKCogR2V0IHRoZSBiYWNrdHJhY2Ugbm93LCBpbiBjYXNlIG9uZSBvZiB0aGUgW2F0X2V4aXRdIGZ1bmN0aW9uXG4gICAgICAgZGVzdHJveXMgaXQuICopXG4gICAgbGV0IHJhd19iYWNrdHJhY2UgPVxuICAgICAgaWYgZGVidWdnZXJfaW5fdXNlICgqIFNhbWUgdGVzdCBhcyBpbiBbcnVudGltZS9wcmludGV4Yy5jXSAqKSB0aGVuXG4gICAgICAgIGVtcHR5X2JhY2t0cmFjZVxuICAgICAgZWxzZVxuICAgICAgICB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgICBpblxuICAgICh0cnkgU3RkbGliLmRvX2F0X2V4aXQgKCkgd2l0aCBfIC0+ICgpKTtcbiAgICB0cnlcbiAgICAgICF1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZVxuICAgIHdpdGggZXhuJyAtPlxuICAgICAgbGV0IHJhd19iYWNrdHJhY2UnID0gdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3IgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXI6IGV4Y2VwdGlvbiAlc1xcblwiXG4gICAgICAgICh0b19zdHJpbmcgZXhuJyk7XG4gICAgICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlJztcbiAgICAgIGZsdXNoIHN0ZGVyclxuICB3aXRoXG4gICAgfCBPdXRfb2ZfbWVtb3J5IC0+XG4gICAgICAgIHByZXJyX2VuZGxpbmVcbiAgICAgICAgICBcIkZhdGFsIGVycm9yOiBvdXQgb2YgbWVtb3J5IGluIHVuY2F1Z2h0IGV4Y2VwdGlvbiBoYW5kbGVyXCJcblxuKCogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgW2NhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXSBpblxuICAgW3J1bnRpbWUvcHJpbnRleGMuY10gd2hpY2ggZXhwZWN0cyBubyBleGNlcHRpb24gaXMgcmFpc2VkLiAqKVxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24gZXhuIGRlYnVnZ2VyX2luX3VzZSA9XG4gIHRyeVxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2VcbiAgd2l0aCBfIC0+XG4gICAgKCogVGhlcmUgaXMgbm90IG11Y2ggd2UgY2FuIGRvIGF0IHRoaXMgcG9pbnQgKilcbiAgICAoKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCJcbiAgICBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGlkIDogJ2EgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5sZXQgY29uc3QgYyBfID0gY1xubGV0IGNvbXBvc2UgZiBnIHggPSBmIChnIHgpXG5sZXQgZmxpcCBmIHggeSA9IGYgeSB4XG5sZXQgbmVnYXRlIHAgdiA9IG5vdCAocCB2KVxuXG5leGNlcHRpb24gRmluYWxseV9yYWlzZWQgb2YgZXhuXG5cbmxldCAoKSA9IFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgQEAgZnVuY3Rpb25cbnwgRmluYWxseV9yYWlzZWQgZXhuIC0+IFNvbWUgKFwiRnVuLkZpbmFsbHlfcmFpc2VkOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBleG4pXG58IF8gLT4gTm9uZVxuXG5sZXQgcHJvdGVjdCB+KGZpbmFsbHkgOiB1bml0IC0+IHVuaXQpIHdvcmsgPVxuICBsZXQgZmluYWxseV9ub19leG4gKCkgPVxuICAgIHRyeSBmaW5hbGx5ICgpIHdpdGggZSAtPlxuICAgICAgbGV0IGJ0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIChGaW5hbGx5X3JhaXNlZCBlKSBidFxuICBpblxuICBtYXRjaCB3b3JrICgpIHdpdGhcbiAgfCByZXN1bHQgLT4gZmluYWxseV9ub19leG4gKCkgOyByZXN1bHRcbiAgfCBleGNlcHRpb24gd29ya19leG4gLT5cbiAgICAgIGxldCB3b3JrX2J0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGZpbmFsbHlfbm9fZXhuICgpIDtcbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIHdvcmtfZXhuIHdvcmtfYnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSmFjcXVlcy1IZW5yaSBKb3VyZGFuLCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUGFyaXMgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYtMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlICAgKilcbigqICAgICBldCBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdGF0ID0ge1xuICBtaW5vcl93b3JkcyA6IGZsb2F0O1xuICBwcm9tb3RlZF93b3JkcyA6IGZsb2F0O1xuICBtYWpvcl93b3JkcyA6IGZsb2F0O1xuICBtaW5vcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIGhlYXBfd29yZHMgOiBpbnQ7XG4gIGhlYXBfY2h1bmtzIDogaW50O1xuICBsaXZlX3dvcmRzIDogaW50O1xuICBsaXZlX2Jsb2NrcyA6IGludDtcbiAgZnJlZV93b3JkcyA6IGludDtcbiAgZnJlZV9ibG9ja3MgOiBpbnQ7XG4gIGxhcmdlc3RfZnJlZSA6IGludDtcbiAgZnJhZ21lbnRzIDogaW50O1xuICBjb21wYWN0aW9ucyA6IGludDtcbiAgdG9wX2hlYXBfd29yZHMgOiBpbnQ7XG4gIHN0YWNrX3NpemUgOiBpbnQ7XG4gIGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogaW50O1xufVxuXG50eXBlIGNvbnRyb2wgPSB7XG4gIG1pbm9yX2hlYXBfc2l6ZSA6IGludDtcbiAgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnQ7XG4gIHNwYWNlX292ZXJoZWFkIDogaW50O1xuICB2ZXJib3NlIDogaW50O1xuICBtYXhfb3ZlcmhlYWQgOiBpbnQ7XG4gIHN0YWNrX2xpbWl0IDogaW50O1xuICBhbGxvY2F0aW9uX3BvbGljeSA6IGludDtcbiAgd2luZG93X3NpemUgOiBpbnQ7XG4gIGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnQ7XG59XG5cbmV4dGVybmFsIHN0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2Nfc3RhdFwiXG5leHRlcm5hbCBxdWlja19zdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3F1aWNrX3N0YXRcIlxuZXh0ZXJuYWwgY291bnRlcnMgOiB1bml0IC0+IChmbG9hdCAqIGZsb2F0ICogZmxvYXQpID0gXCJjYW1sX2djX2NvdW50ZXJzXCJcbmV4dGVybmFsIG1pbm9yX3dvcmRzIDogdW5pdCAtPiAoZmxvYXQgW0B1bmJveGVkXSlcbiAgPSBcImNhbWxfZ2NfbWlub3Jfd29yZHNcIiBcImNhbWxfZ2NfbWlub3Jfd29yZHNfdW5ib3hlZFwiXG5leHRlcm5hbCBnZXQgOiB1bml0IC0+IGNvbnRyb2wgPSBcImNhbWxfZ2NfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGNvbnRyb2wgLT4gdW5pdCA9IFwiY2FtbF9nY19zZXRcIlxuZXh0ZXJuYWwgbWlub3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWlub3JcIlxuZXh0ZXJuYWwgbWFqb3Jfc2xpY2UgOiBpbnQgLT4gaW50ID0gXCJjYW1sX2djX21ham9yX3NsaWNlXCJcbmV4dGVybmFsIG1ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21ham9yXCJcbmV4dGVybmFsIGZ1bGxfbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfZnVsbF9tYWpvclwiXG5leHRlcm5hbCBjb21wYWN0IDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2NvbXBhY3Rpb25cIlxuZXh0ZXJuYWwgZ2V0X21pbm9yX2ZyZWUgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nZXRfbWlub3JfZnJlZVwiXG5cbmxldCBldmVudGxvZ19wYXVzZSAoKSA9ICgpXG5sZXQgZXZlbnRsb2dfcmVzdW1lICgpID0gKClcblxub3BlbiBQcmludGZcblxubGV0IHByaW50X3N0YXQgYyA9XG4gIGxldCBzdCA9IHN0YXQgKCkgaW5cbiAgZnByaW50ZiBjIFwibWlub3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5taW5vcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwibWFqb3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiY29tcGFjdGlvbnM6ICAgICAgICAgICAgJWRcXG5cIiBzdC5jb21wYWN0aW9ucztcbiAgZnByaW50ZiBjIFwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiAlZFxcblwiIHN0LmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMSA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlLjBmXCIgc3QubWlub3Jfd29yZHMpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1pbm9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJwcm9tb3RlZF93b3JkczogJSouMGZcXG5cIiBsMSBzdC5wcm9tb3RlZF93b3JkcztcbiAgZnByaW50ZiBjIFwibWFqb3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWFqb3Jfd29yZHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDIgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJWRcIiBzdC50b3BfaGVhcF93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwidG9wX2hlYXBfd29yZHM6ICUqZFxcblwiIGwyIHN0LnRvcF9oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJoZWFwX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwibGl2ZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmxpdmVfd29yZHM7XG4gIGZwcmludGYgYyBcImZyZWVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5mcmVlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsYXJnZXN0X2ZyZWU6ICAgJSpkXFxuXCIgbDIgc3QubGFyZ2VzdF9mcmVlO1xuICBmcHJpbnRmIGMgXCJmcmFnbWVudHM6ICAgICAgJSpkXFxuXCIgbDIgc3QuZnJhZ21lbnRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgZnByaW50ZiBjIFwibGl2ZV9ibG9ja3M6ICVkXFxuXCIgc3QubGl2ZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImZyZWVfYmxvY2tzOiAlZFxcblwiIHN0LmZyZWVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJoZWFwX2NodW5rczogJWRcXG5cIiBzdC5oZWFwX2NodW5rc1xuXG5cbmxldCBhbGxvY2F0ZWRfYnl0ZXMgKCkgPVxuICBsZXQgKG1pLCBwcm8sIG1hKSA9IGNvdW50ZXJzICgpIGluXG4gIChtaSArLiBtYSAtLiBwcm8pICouIGZsb2F0X29mX2ludCAoU3lzLndvcmRfc2l6ZSAvIDgpXG5cblxuZXh0ZXJuYWwgZmluYWxpc2UgOiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWdpc3RlclwiXG5leHRlcm5hbCBmaW5hbGlzZV9sYXN0IDogKHVuaXQgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9XG4gIFwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVwiXG5leHRlcm5hbCBmaW5hbGlzZV9yZWxlYXNlIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlbGVhc2VcIlxuXG5cbnR5cGUgYWxhcm0gPSBib29sIEF0b21pYy50XG50eXBlIGFsYXJtX3JlYyA9IHthY3RpdmUgOiBhbGFybTsgZiA6IHVuaXQgLT4gdW5pdH1cblxubGV0IHJlYyBjYWxsX2FsYXJtIGFyZWMgPVxuICBpZiBBdG9taWMuZ2V0IGFyZWMuYWN0aXZlIHRoZW4gYmVnaW5cbiAgICBsZXQgZmluYWxseSAoKSA9IGZpbmFsaXNlIGNhbGxfYWxhcm0gYXJlYyBpblxuICAgIEZ1bi5wcm90ZWN0IH5maW5hbGx5IGFyZWMuZlxuICBlbmRcblxubGV0IGRlbGV0ZV9hbGFybSBhID0gQXRvbWljLnNldCBhIGZhbHNlXG5cbmxldCBjcmVhdGVfYWxhcm0gZiA9XG4gIGxldCBhcmVjID0geyBhY3RpdmUgPSBBdG9taWMubWFrZSB0cnVlOyBmID0gZiB9IGluXG4gIERvbWFpbi5hdF9leGl0IChmdW4gKCkgLT4gZGVsZXRlX2FsYXJtIGFyZWMuYWN0aXZlKTtcbiAgZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjO1xuICBhcmVjLmFjdGl2ZVxuXG5cbm1vZHVsZSBNZW1wcm9mID1cbiAgc3RydWN0XG4gICAgdHlwZSB0XG4gICAgdHlwZSBhbGxvY2F0aW9uX3NvdXJjZSA9IE5vcm1hbCB8IE1hcnNoYWwgfCBDdXN0b21cbiAgICB0eXBlIGFsbG9jYXRpb24gPVxuICAgICAgeyBuX3NhbXBsZXMgOiBpbnQ7XG4gICAgICAgIHNpemUgOiBpbnQ7XG4gICAgICAgIHNvdXJjZSA6IGFsbG9jYXRpb25fc291cmNlO1xuICAgICAgICBjYWxsc3RhY2sgOiBQcmludGV4Yy5yYXdfYmFja3RyYWNlIH1cblxuICAgIHR5cGUgKCdtaW5vciwgJ21ham9yKSB0cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3I6IGFsbG9jYXRpb24gLT4gJ21pbm9yIG9wdGlvbjtcbiAgICAgIGFsbG9jX21ham9yOiBhbGxvY2F0aW9uIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBwcm9tb3RlOiAnbWlub3IgLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIGRlYWxsb2NfbWlub3I6ICdtaW5vciAtPiB1bml0O1xuICAgICAgZGVhbGxvY19tYWpvcjogJ21ham9yIC0+IHVuaXQ7XG4gICAgfVxuXG4gICAgbGV0IG51bGxfdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBwcm9tb3RlID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgZGVhbGxvY19taW5vciA9IChmdW4gXyAtPiAoKSk7XG4gICAgICBkZWFsbG9jX21ham9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICB9XG5cbiAgICBleHRlcm5hbCBjX3N0YXJ0IDpcbiAgICAgIGZsb2F0IC0+IGludCAtPiAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgLT4gdFxuICAgICAgPSBcImNhbWxfbWVtcHJvZl9zdGFydFwiXG5cbiAgICBsZXQgc3RhcnRcbiAgICAgIH5zYW1wbGluZ19yYXRlXG4gICAgICA/KGNhbGxzdGFja19zaXplID0gbWF4X2ludClcbiAgICAgIHRyYWNrZXIgPVxuICAgICAgY19zdGFydCBzYW1wbGluZ19yYXRlIGNhbGxzdGFja19zaXplIHRyYWNrZXJcblxuICAgIGV4dGVybmFsIHN0b3AgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfbWVtcHJvZl9zdG9wXCJcblxuICAgIGV4dGVybmFsIGRpc2NhcmQgOiB0IC0+IHVuaXQgPSBcImNhbWxfbWVtcHJvZl9kaXNjYXJkXCJcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGluX2NoYW5uZWxcblxudHlwZSBvcGVuX2ZsYWcgPSBTdGRsaWIub3Blbl9mbGFnID1cbiAgfCBPcGVuX3Jkb25seVxuICB8IE9wZW5fd3Jvbmx5XG4gIHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0XG4gIHwgT3Blbl90cnVuY1xuICB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5XG4gIHwgT3Blbl90ZXh0XG4gIHwgT3Blbl9ub25ibG9ja1xuXG5sZXQgc3RkaW4gPSBTdGRsaWIuc3RkaW5cbmxldCBvcGVuX2JpbiA9IFN0ZGxpYi5vcGVuX2luX2JpblxubGV0IG9wZW5fdGV4dCA9IFN0ZGxpYi5vcGVuX2luXG5sZXQgb3Blbl9nZW4gPSBTdGRsaWIub3Blbl9pbl9nZW5cblxubGV0IHdpdGhfb3BlbiBvcGVuZnVuIHMgZiA9XG4gIGxldCBpYyA9IG9wZW5mdW4gcyBpblxuICBGdW4ucHJvdGVjdCB+ZmluYWxseTooZnVuICgpIC0+IFN0ZGxpYi5jbG9zZV9pbl9ub2VyciBpYylcbiAgICAoZnVuICgpIC0+IGYgaWMpXG5cbmxldCB3aXRoX29wZW5fYmluIHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbl9iaW4gcyBmXG5cbmxldCB3aXRoX29wZW5fdGV4dCBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5faW4gcyBmXG5cbmxldCB3aXRoX29wZW5fZ2VuIGZsYWdzIHBlcm0gcyBmID1cbiAgd2l0aF9vcGVuIChTdGRsaWIub3Blbl9pbl9nZW4gZmxhZ3MgcGVybSkgcyBmXG5cbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX2luXG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3NfaW5cbmxldCBsZW5ndGggPSBTdGRsaWIuTGFyZ2VGaWxlLmluX2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2VfaW5cbmxldCBjbG9zZV9ub2VyciA9IFN0ZGxpYi5jbG9zZV9pbl9ub2VyclxuXG5sZXQgaW5wdXRfY2hhciBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9jaGFyIGljIHdpdGhcbiAgfCBjIC0+IFNvbWUgY1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dF9ieXRlIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2J5dGUgaWMgd2l0aFxuICB8IG4gLT4gU29tZSBuXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2xpbmUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgcyAtPiBTb21lIHNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXQgPSBTdGRsaWIuaW5wdXRcblxuZXh0ZXJuYWwgdW5zYWZlX2lucHV0X2JpZ2FycmF5IDpcbiAgdCAtPiBfIEJpZ2FycmF5LkFycmF5MS50IC0+IGludCAtPiBpbnQgLT4gaW50XG4gID0gXCJjYW1sX21sX2lucHV0X2JpZ2FycmF5XCJcblxubGV0IGlucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJpZ2FycmF5LkFycmF5MS5kaW0gYnVmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJpbnB1dF9iaWdhcnJheVwiXG4gIGVsc2UgdW5zYWZlX2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuXG5cbmxldCByZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0IGljIGJ1ZiBwb3MgbGVuIHdpdGhcbiAgfCAoKSAtPiBTb21lICgpXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IHJlYyB1bnNhZmVfcmVhbGx5X2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuID1cbiAgaWYgbGVuIDw9IDAgdGhlbiBTb21lICgpIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IHVuc2FmZV9pbnB1dF9iaWdhcnJheSBpYyBidWYgb2ZzIGxlbiBpblxuICAgIGlmIHIgPSAwXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0X2JpZ2FycmF5IGljIGJ1ZiAob2ZzICsgcikgKGxlbiAtIHIpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJpZ2FycmF5LkFycmF5MS5kaW0gYnVmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJyZWFsbHlfaW5wdXRfYmlnYXJyYXlcIlxuICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuID1cbiAgbWF0Y2ggU3RkbGliLnJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuIHdpdGhcbiAgfCBzIC0+IFNvbWUgc1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbigqIFJlYWQgdXAgdG8gW2xlbl0gYnl0ZXMgaW50byBbYnVmXSwgc3RhcnRpbmcgYXQgW29mc10uIFJldHVybiB0b3RhbCBieXRlc1xuICAgcmVhZC4gKilcbmxldCByZWFkX3VwdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3Agb2ZzIGxlbiA9XG4gICAgaWYgbGVuID0gMCB0aGVuIG9mc1xuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gU3RkbGliLmlucHV0IGljIGJ1ZiBvZnMgbGVuIGluXG4gICAgICBpZiByID0gMCB0aGVuXG4gICAgICAgIG9mc1xuICAgICAgZWxzZVxuICAgICAgICBsb29wIChvZnMgKyByKSAobGVuIC0gcilcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBvZnMgbGVuIC0gb2ZzXG5cbigqIEJlc3QgZWZmb3J0IGF0dGVtcHQgdG8gcmV0dXJuIGEgYnVmZmVyIHdpdGggPj0gKG9mcyArIG4pIGJ5dGVzIG9mIHN0b3JhZ2UsXG4gICBhbmQgc3VjaCB0aGF0IGl0IGNvaW5jaWRlcyB3aXRoIFtidWZdIGF0IGluZGljZXMgPCBbb2ZzXS5cblxuICAgVGhlIHJldHVybmVkIGJ1ZmZlciBpcyBlcXVhbCB0byBbYnVmXSBpdHNlbGYgaWYgaXQgYWxyZWFkeSBoYXMgc3VmZmljaWVudFxuICAgZnJlZSBzcGFjZS5cblxuICAgVGhlIHJldHVybmVkIGJ1ZmZlciBtYXkgaGF2ZSAqZmV3ZXIqIHRoYW4gW29mcyArIG5dIGJ5dGVzIG9mIHN0b3JhZ2UgaWYgdGhpc1xuICAgbnVtYmVyIGlzID4gW1N5cy5tYXhfc3RyaW5nX2xlbmd0aF0uIEhvd2V2ZXIgdGhlIHJldHVybmVkIGJ1ZmZlciB3aWxsXG4gICAqYWx3YXlzKiBoYXZlID4gW29mc10gYnl0ZXMgb2Ygc3RvcmFnZS4gSW4gdGhlIGxpbWl0aW5nIGNhc2Ugd2hlbiBbb2ZzID0gbGVuXG4gICA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aF0gKHNvIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHJlc2l6ZSB0aGUgYnVmZmVyIGF0XG4gICBhbGwpLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLiAqKVxuXG5sZXQgZW5zdXJlIGJ1ZiBvZnMgbiA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA+PSBvZnMgKyBuIHRoZW4gYnVmXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbmV3X2xlbiA9IHJlZiBsZW4gaW5cbiAgICB3aGlsZSAhbmV3X2xlbiA8IG9mcyArIG4gZG9cbiAgICAgIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuICsgMVxuICAgIGRvbmU7XG4gICAgbGV0IG5ld19sZW4gPSAhbmV3X2xlbiBpblxuICAgIGxldCBuZXdfbGVuID1cbiAgICAgIGlmIG5ld19sZW4gPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgbmV3X2xlblxuICAgICAgZWxzZSBpZiBvZnMgPCBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgZmFpbHdpdGggXCJJbl9jaGFubmVsLmlucHV0X2FsbDogY2hhbm5lbCBjb250ZW50IFxcXG4gICAgICAgICAgICAgICAgICBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtIHN0cmluZyBsZW5ndGhcIlxuICAgIGluXG4gICAgbGV0IG5ld19idWYgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmIDAgbmV3X2J1ZiAwIG9mcztcbiAgICBuZXdfYnVmXG4gIGVuZFxuXG5sZXQgaW5wdXRfYWxsIGljID1cbiAgbGV0IGNodW5rX3NpemUgPSA2NTUzNiBpbiAoKiBJT19CVUZGRVJfU0laRSAqKVxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICB0cnlcbiAgICAgIFN0ZGxpYi5pbl9jaGFubmVsX2xlbmd0aCBpYyAtIFN0ZGxpYi5wb3NfaW4gaWNcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAtMVxuICBpblxuICBsZXQgaW5pdGlhbF9zaXplID0gaWYgaW5pdGlhbF9zaXplIDwgMCB0aGVuIGNodW5rX3NpemUgZWxzZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IGluaXRpYWxfc2l6ZSA9XG4gICAgaWYgaW5pdGlhbF9zaXplIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICBpbml0aWFsX3NpemVcbiAgICBlbHNlXG4gICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IG5yZWFkID0gcmVhZF91cHRvIGljIGJ1ZiAwIGluaXRpYWxfc2l6ZSBpblxuICBpZiBucmVhZCA8IGluaXRpYWxfc2l6ZSB0aGVuICgqIEVPRiByZWFjaGVkLCBidWZmZXIgcGFydGlhbGx5IGZpbGxlZCAqKVxuICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgbnJlYWRcbiAgZWxzZSBiZWdpbiAoKiBucmVhZCA9IGluaXRpYWxfc2l6ZSwgbWF5YmUgRU9GIHJlYWNoZWQgKilcbiAgICBtYXRjaCBTdGRsaWIuaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT5cbiAgICAgICAgKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBpcyBjb21wbGV0ZWx5IGZpbGxlZCAqKVxuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICAgIHwgYyAtPlxuICAgICAgICAoKiBFT0Ygbm90IHJlYWNoZWQgKilcbiAgICAgICAgbGV0IHJlYyBsb29wIGJ1ZiBvZnMgPVxuICAgICAgICAgIGxldCBidWYgPSBlbnN1cmUgYnVmIG9mcyBjaHVua19zaXplIGluXG4gICAgICAgICAgbGV0IHJlbSA9IEJ5dGVzLmxlbmd0aCBidWYgLSBvZnMgaW5cbiAgICAgICAgICAoKiBbcmVtXSBjYW4gYmUgPCBbY2h1bmtfc2l6ZV0gaWYgYnVmZmVyIHNpemUgY2xvc2UgdG9cbiAgICAgICAgICAgICBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAqKVxuICAgICAgICAgIGxldCByID0gcmVhZF91cHRvIGljIGJ1ZiBvZnMgcmVtIGluXG4gICAgICAgICAgaWYgciA8IHJlbSB0aGVuICgqIEVPRiByZWFjaGVkICopXG4gICAgICAgICAgICBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiAwIChvZnMgKyByKVxuICAgICAgICAgIGVsc2UgKCogciA9IHJlbSAqKVxuICAgICAgICAgICAgbG9vcCBidWYgKG9mcyArIHJlbSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgbnJlYWQgKGNodW5rX3NpemUgKyAxKSBpblxuICAgICAgICBCeXRlcy5zZXQgYnVmIG5yZWFkIGM7XG4gICAgICAgIGxvb3AgYnVmIChucmVhZCArIDEpXG4gIGVuZFxuXG5sZXQgW0B0YWlsX21vZF9jb25zXSByZWMgaW5wdXRfbGluZXMgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgbGluZSAtPiBsaW5lIDo6IGlucHV0X2xpbmVzIGljXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IFtdXG5cbmxldCByZWMgZm9sZF9saW5lcyBmIGFjY3UgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgbGluZSAtPiBmb2xkX2xpbmVzIGYgKGYgYWNjdSBsaW5lKSBpY1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBhY2N1XG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX2luXG5cbmV4dGVybmFsIGlzX2JpbmFyeV9tb2RlIDogaW5fY2hhbm5lbCAtPiBib29sID0gXCJjYW1sX21sX2lzX2JpbmFyeV9tb2RlXCJcblxuZXh0ZXJuYWwgaXNhdHR5IDogdCAtPiBib29sID0gXCJjYW1sX3N5c19pc2F0dHlcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBvdXRfY2hhbm5lbFxuXG50eXBlIG9wZW5fZmxhZyA9IFN0ZGxpYi5vcGVuX2ZsYWcgPVxuICB8IE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5cbmxldCBzdGRvdXQgPSBTdGRsaWIuc3Rkb3V0XG5sZXQgc3RkZXJyID0gU3RkbGliLnN0ZGVyclxubGV0IG9wZW5fYmluID0gU3RkbGliLm9wZW5fb3V0X2JpblxubGV0IG9wZW5fdGV4dCA9IFN0ZGxpYi5vcGVuX291dFxubGV0IG9wZW5fZ2VuID0gU3RkbGliLm9wZW5fb3V0X2dlblxuXG5sZXQgd2l0aF9vcGVuIG9wZW5mdW4gcyBmID1cbiAgbGV0IG9jID0gb3BlbmZ1biBzIGluXG4gIEZ1bi5wcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gU3RkbGliLmNsb3NlX291dF9ub2VyciBvYylcbiAgICAoZnVuICgpIC0+IGYgb2MpXG5cbmxldCB3aXRoX29wZW5fYmluIHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9vdXRfYmluIHMgZlxuXG5sZXQgd2l0aF9vcGVuX3RleHQgcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX291dCBzIGZcblxubGV0IHdpdGhfb3Blbl9nZW4gZmxhZ3MgcGVybSBzIGYgPVxuICB3aXRoX29wZW4gKFN0ZGxpYi5vcGVuX291dF9nZW4gZmxhZ3MgcGVybSkgcyBmXG5cbmV4dGVybmFsIHVuc2FmZV9vdXRwdXRfYmlnYXJyYXkgOlxuICB0IC0+IF8gQmlnYXJyYXkuQXJyYXkxLnQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gID0gXCJjYW1sX21sX291dHB1dF9iaWdhcnJheVwiXG5cbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX291dFxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX291dFxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUub3V0X2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfbm9lcnIgPSBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyXG5sZXQgZmx1c2ggPSBTdGRsaWIuZmx1c2hcbmxldCBmbHVzaF9hbGwgPSBTdGRsaWIuZmx1c2hfYWxsXG5sZXQgb3V0cHV0X2NoYXIgPSBTdGRsaWIub3V0cHV0X2NoYXJcbmxldCBvdXRwdXRfYnl0ZSA9IFN0ZGxpYi5vdXRwdXRfYnl0ZVxubGV0IG91dHB1dF9zdHJpbmcgPSBTdGRsaWIub3V0cHV0X3N0cmluZ1xubGV0IG91dHB1dF9ieXRlcyA9IFN0ZGxpYi5vdXRwdXRfYnl0ZXNcbmxldCBvdXRwdXQgPSBTdGRsaWIub3V0cHV0XG5sZXQgb3V0cHV0X3N1YnN0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3Vic3RyaW5nXG5sZXQgb3V0cHV0X2JpZ2FycmF5IG9jIGJ1ZiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJpZ2FycmF5LkFycmF5MS5kaW0gYnVmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRfYmlnYXJyYXlcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXRfYmlnYXJyYXkgb2MgYnVmIG9mcyBsZW5cblxubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfb3V0XG5cbmV4dGVybmFsIGlzX2JpbmFyeV9tb2RlIDogb3V0X2NoYW5uZWwgLT4gYm9vbCA9IFwiY2FtbF9tbF9pc19iaW5hcnlfbW9kZVwiXG5cbmV4dGVybmFsIHNldF9idWZmZXJlZCA6IHQgLT4gYm9vbCAtPiB1bml0ID0gXCJjYW1sX21sX3NldF9idWZmZXJlZFwiXG5cbmV4dGVybmFsIGlzX2J1ZmZlcmVkIDogdCAtPiBib29sID0gXCJjYW1sX21sX2lzX2J1ZmZlcmVkXCJcblxuZXh0ZXJuYWwgaXNhdHR5IDogdCAtPiBib29sID0gXCJjYW1sX3N5c19pc2F0dHlcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBVdGlsaXR5IGZ1bmN0aW9ucyAqKVxuXG5sZXQgaGV4X29mX3N0cmluZyBkID1cbiAgbGV0IGNoYXJfaGV4IG4gPVxuICAgIENoYXIuY2hyIChpZiBuIDwgMTAgdGhlbiBDaGFyLmNvZGUgJzAnICsgblxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBDaGFyLmNvZGUgJ2EnICsgbiAtIDEwKSBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBkIGluXG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgKGxlbiAqIDIpIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbGV0IHggPSBDaGFyLmNvZGUgZC5baV0gaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKSAoY2hhcl9oZXggKHggbHNyIDQpKTtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKzEpIChjaGFyX2hleCAoeCBsYW5kIDB4MGYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcblxubGV0IHN0cmluZ19vZl9oZXggcyA9XG4gIGxldCBkaWdpdCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcwJy4uJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ0EnLi4nRicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8ICdhJy4uJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCBfIC0+IGludmFsaWRfYXJnIFwiRGlnZXN0Lm9mX2hleFwiIGluXG4gIGxldCBieXRlIGkgPSBkaWdpdCBzLltpXSBsc2wgNCArIGRpZ2l0IHMuW2krMV0gaW5cbiAgU3RyaW5nLmluaXQgKFN0cmluZy5sZW5ndGggcyAvIDIpIChmdW4gaSAtPiBDaGFyLmNociAoYnl0ZSAoMiAqIGkpKSlcblxuKCogR2VuZXJpYyBpbnRlcmZhY2UgKilcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHQgPSBzdHJpbmdcbiAgdmFsIGhhc2hfbGVuZ3RoIDogaW50XG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgdmFsIGJ5dGVzIDogYnl0ZXMgLT4gdFxuICB2YWwgc3Vic3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdFxuICB2YWwgc3ViYnl0ZXMgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHRcbiAgdmFsIGNoYW5uZWwgOiBpbl9jaGFubmVsIC0+IGludCAtPiB0XG4gIHZhbCBmaWxlIDogc3RyaW5nIC0+IHRcbiAgdmFsIG91dHB1dCA6IG91dF9jaGFubmVsIC0+IHQgLT4gdW5pdFxuICB2YWwgaW5wdXQgOiBpbl9jaGFubmVsIC0+IHRcbiAgdmFsIHRvX2hleCA6IHQgLT4gc3RyaW5nXG4gIHZhbCBvZl9oZXggOiBzdHJpbmcgLT4gdFxuZW5kXG5cbigqIEJMQUtFMiBoYXNoaW5nLCBwYXJhbWV0ZXJpemVkIGJ5IGhhc2ggc2l6ZSAqKVxuXG5tb2R1bGUgQkxBS0UyIChYOiBzaWcgdmFsIGhhc2hfbGVuZ3RoIDogaW50IGVuZCkgOiBTID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgbGV0IGhhc2hfbGVuZ3RoID1cbiAgICBpZiBYLmhhc2hfbGVuZ3RoIDwgMSB8fCBYLmhhc2hfbGVuZ3RoID4gNjRcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LkJMQUtFMjogd3JvbmcgaGFzaCBzaXplXCI7XG4gICAgWC5oYXNoX2xlbmd0aFxuXG4gIGxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbiAgbGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsXG5cbiAgdHlwZSBzdGF0ZVxuXG4gIGV4dGVybmFsIGNyZWF0ZV9nZW46IGludCAtPiBzdHJpbmcgLT4gc3RhdGUgPSBcImNhbWxfYmxha2UyX2NyZWF0ZVwiXG4gIGV4dGVybmFsIHVwZGF0ZTogc3RhdGUgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9ibGFrZTJfdXBkYXRlXCJcbiAgZXh0ZXJuYWwgZmluYWw6IHN0YXRlIC0+IGludCAtPiB0ID0gXCJjYW1sX2JsYWtlMl9maW5hbFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zdHJpbmc6IGludCAtPiBzdHJpbmcgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxha2UyX3N0cmluZ1wiXG5cbiAgbGV0IGNyZWF0ZSAoKSA9IGNyZWF0ZV9nZW4gaGFzaF9sZW5ndGggXCJcIlxuXG4gIGxldCBzdHJpbmcgc3RyID1cbiAgICB1bnNhZmVfc3RyaW5nIGhhc2hfbGVuZ3RoIFwiXCIgc3RyIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG4gIGxldCBieXRlcyBiID1cbiAgICBzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYilcblxuICBsZXQgc3Vic3RyaW5nIHN0ciBvZnMgbGVuID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gU3RyaW5nLmxlbmd0aCBzdHIgLSBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YnN0cmluZ1wiO1xuICAgIHVuc2FmZV9zdHJpbmcgaGFzaF9sZW5ndGggXCJcIiBzdHIgb2ZzIGxlblxuXG4gIGxldCBzdWJieXRlcyBiIG9mcyBsZW4gPVxuICAgIHN1YnN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKSBvZnMgbGVuXG5cbiAgbGV0IGNoYW5uZWwgaWMgdG9yZWFkID1cbiAgICBsZXQgYnVmX3NpemUgPSA0MDk2IGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBidWZfc2l6ZSBpblxuICAgIGxldCBjdHggPSBjcmVhdGUgKCkgaW5cbiAgICBpZiB0b3JlYWQgPCAwIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWMgZG9fcmVhZCAoKSA9XG4gICAgICAgIGxldCBuID0gSW5fY2hhbm5lbC5pbnB1dCBpYyBidWYgMCBidWZfc2l6ZSBpblxuICAgICAgICBpZiBuID0gMFxuICAgICAgICB0aGVuIGZpbmFsIGN0eCBoYXNoX2xlbmd0aFxuICAgICAgICBlbHNlICh1cGRhdGUgY3R4IChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZikgMCBuOyBkb19yZWFkICgpKVxuICAgICAgaW4gZG9fcmVhZCAoKVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBsZXQgcmVjIGRvX3JlYWQgdG9yZWFkID1cbiAgICAgICAgaWYgdG9yZWFkID0gMCB0aGVuIGZpbmFsIGN0eCBoYXNoX2xlbmd0aCBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IG4gPSBJbl9jaGFubmVsLmlucHV0IGljIGJ1ZiAwIChJbnQubWluIGJ1Zl9zaXplIHRvcmVhZCkgaW5cbiAgICAgICAgICBpZiBuID0gMFxuICAgICAgICAgIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICB1cGRhdGUgY3R4IChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZikgMCBuO1xuICAgICAgICAgICAgZG9fcmVhZCAodG9yZWFkIC0gbilcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kXG4gICAgICBpbiBkb19yZWFkIHRvcmVhZFxuICAgIGVuZFxuXG4gIGxldCBmaWxlIGZpbGVuYW1lID1cbiAgICBJbl9jaGFubmVsLndpdGhfb3Blbl9iaW4gZmlsZW5hbWUgKGZ1biBpYyAtPiBjaGFubmVsIGljICgtMSkpXG5cbiAgbGV0IG91dHB1dCBjaGFuIGRpZ2VzdCA9IG91dHB1dF9zdHJpbmcgY2hhbiBkaWdlc3RcblxuICBsZXQgaW5wdXQgY2hhbiA9IHJlYWxseV9pbnB1dF9zdHJpbmcgY2hhbiBoYXNoX2xlbmd0aFxuXG4gIGxldCB0b19oZXggZCA9XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBkIDw+IGhhc2hfbGVuZ3RoIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QudG9faGV4XCI7XG4gICAgaGV4X29mX3N0cmluZyBkXG5cbiAgbGV0IG9mX2hleCBzID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gaGFzaF9sZW5ndGggKiAyIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Qub2ZfaGV4XCI7XG4gICAgc3RyaW5nX29mX2hleCBzXG5cbmVuZFxuXG5tb2R1bGUgQkxBS0UxMjggPSBCTEFLRTIoc3RydWN0IGxldCBoYXNoX2xlbmd0aCA9IDE2IGVuZClcbm1vZHVsZSBCTEFLRTI1NiA9IEJMQUtFMihzdHJ1Y3QgbGV0IGhhc2hfbGVuZ3RoID0gMzIgZW5kKVxubW9kdWxlIEJMQUtFNTEyID0gQkxBS0UyKHN0cnVjdCBsZXQgaGFzaF9sZW5ndGggPSA2NCBlbmQpXG5cbigqIE1ENSBoYXNoaW5nICopXG5cbm1vZHVsZSBNRDUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBzdHJpbmdcblxuICBsZXQgaGFzaF9sZW5ndGggPSAxNlxuXG4gIGxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbiAgbGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfc3RyaW5nXCJcbiAgZXh0ZXJuYWwgY2hhbm5lbDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfY2hhblwiXG5cbiAgbGV0IHN0cmluZyBzdHIgPVxuICAgIHVuc2FmZV9zdHJpbmcgc3RyIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG4gIGxldCBieXRlcyBiID0gc3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpXG5cbiAgbGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIlxuICAgIGVsc2UgdW5zYWZlX3N0cmluZyBzdHIgb2ZzIGxlblxuXG4gIGxldCBzdWJieXRlcyBiIG9mcyBsZW4gPSBzdWJzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYikgb2ZzIGxlblxuXG4gIGxldCBmaWxlIGZpbGVuYW1lID1cbiAgICBJbl9jaGFubmVsLndpdGhfb3Blbl9iaW4gZmlsZW5hbWUgKGZ1biBpYyAtPiBjaGFubmVsIGljICgtMSkpXG5cbiAgbGV0IG91dHB1dCBjaGFuIGRpZ2VzdCA9IG91dHB1dF9zdHJpbmcgY2hhbiBkaWdlc3RcblxuICBsZXQgaW5wdXQgY2hhbiA9IHJlYWxseV9pbnB1dF9zdHJpbmcgY2hhbiAxNlxuXG4gIGxldCB0b19oZXggZCA9XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBkIDw+IDE2IHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QudG9faGV4XCI7XG4gICAgaGV4X29mX3N0cmluZyBkXG5cbiAgbGV0IG9mX2hleCBzID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gMzIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5mcm9tX2hleFwiO1xuICAgIHN0cmluZ19vZl9oZXggc1xuXG5lbmRcblxuKCogRGVmYXVsdCBleHBvcnRlZCBpbXBsZW1lbnRhdGlvbiBpcyBNRDUgKilcblxuaW5jbHVkZSBNRDVcblxubGV0IGZyb21faGV4ID0gb2ZfaGV4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgTWFudWVsIFNlcnJhbm8gZXQgWGF2aWVyIExlcm95LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbQmlnYXJyYXldOiBsYXJnZSwgbXVsdGktZGltZW5zaW9uYWwsIG51bWVyaWNhbCBhcnJheXMgKilcblxuKCogVGhlc2UgdHlwZXMgaW4gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdGFibGVzIGluXG4gICAuLi90eXBpbmcvdHlwZW9wdC5tbCAqKVxuXG50eXBlIGZsb2F0MTZfZWx0ID0gRmxvYXQxNl9lbHRcbnR5cGUgZmxvYXQzMl9lbHQgPSBGbG9hdDMyX2VsdFxudHlwZSBmbG9hdDY0X2VsdCA9IEZsb2F0NjRfZWx0XG50eXBlIGludDhfc2lnbmVkX2VsdCA9IEludDhfc2lnbmVkX2VsdFxudHlwZSBpbnQ4X3Vuc2lnbmVkX2VsdCA9IEludDhfdW5zaWduZWRfZWx0XG50eXBlIGludDE2X3NpZ25lZF9lbHQgPSBJbnQxNl9zaWduZWRfZWx0XG50eXBlIGludDE2X3Vuc2lnbmVkX2VsdCA9IEludDE2X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQzMl9lbHQgPSBJbnQzMl9lbHRcbnR5cGUgaW50NjRfZWx0ID0gSW50NjRfZWx0XG50eXBlIGludF9lbHQgPSBJbnRfZWx0XG50eXBlIG5hdGl2ZWludF9lbHQgPSBOYXRpdmVpbnRfZWx0XG50eXBlIGNvbXBsZXgzMl9lbHQgPSBDb21wbGV4MzJfZWx0XG50eXBlIGNvbXBsZXg2NF9lbHQgPSBDb21wbGV4NjRfZWx0XG5cbigqIEtlZXAgdGhlIG9yZGVyIG9mIHRoZXNlIGNvbnN0cnVjdG9ycyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfa2luZFxuICAgZW51bWVyYXRpb24gaW4gYmlnYXJyYXkuaCAqKVxuXG50eXBlICgnYSwgJ2IpIGtpbmQgPVxuICB8IEZsb2F0MzIgOiAoZmxvYXQsIGZsb2F0MzJfZWx0KSBraW5kXG4gIHwgRmxvYXQ2NCA6IChmbG9hdCwgZmxvYXQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3NpZ25lZCA6IChpbnQsIGludDhfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDhfdW5zaWduZWQgOiAoaW50LCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3NpZ25lZCA6IChpbnQsIGludDE2X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl91bnNpZ25lZCA6IChpbnQsIGludDE2X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDMyIDogKGludDMyLCBpbnQzMl9lbHQpIGtpbmRcbiAgfCBJbnQ2NCA6IChpbnQ2NCwgaW50NjRfZWx0KSBraW5kXG4gIHwgSW50IDogKGludCwgaW50X2VsdCkga2luZFxuICB8IE5hdGl2ZWludCA6IChuYXRpdmVpbnQsIG5hdGl2ZWludF9lbHQpIGtpbmRcbiAgfCBDb21wbGV4MzIgOiAoQ29tcGxleC50LCBjb21wbGV4MzJfZWx0KSBraW5kXG4gIHwgQ29tcGxleDY0IDogKENvbXBsZXgudCwgY29tcGxleDY0X2VsdCkga2luZFxuICB8IENoYXIgOiAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBGbG9hdDE2IDogKGZsb2F0LCBmbG9hdDE2X2VsdCkga2luZFxuXG50eXBlIGNfbGF5b3V0ID0gQ19sYXlvdXRfdHlwXG50eXBlIGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRfdHlwICgqKilcblxudHlwZSAnYSBsYXlvdXQgPVxuICAgIENfbGF5b3V0OiBjX2xheW91dCBsYXlvdXRcbiAgfCBGb3J0cmFuX2xheW91dDogZm9ydHJhbl9sYXlvdXQgbGF5b3V0XG5cbmxldCBmbG9hdDE2ID0gRmxvYXQxNlxubGV0IGZsb2F0MzIgPSBGbG9hdDMyXG5sZXQgZmxvYXQ2NCA9IEZsb2F0NjRcbmxldCBpbnQ4X3NpZ25lZCA9IEludDhfc2lnbmVkXG5sZXQgaW50OF91bnNpZ25lZCA9IEludDhfdW5zaWduZWRcbmxldCBpbnQxNl9zaWduZWQgPSBJbnQxNl9zaWduZWRcbmxldCBpbnQxNl91bnNpZ25lZCA9IEludDE2X3Vuc2lnbmVkXG5sZXQgaW50MzIgPSBJbnQzMlxubGV0IGludDY0ID0gSW50NjRcbmxldCBpbnQgPSBJbnRcbmxldCBuYXRpdmVpbnQgPSBOYXRpdmVpbnRcbmxldCBjb21wbGV4MzIgPSBDb21wbGV4MzJcbmxldCBjb21wbGV4NjQgPSBDb21wbGV4NjRcbmxldCBjaGFyID0gQ2hhclxuXG5sZXQga2luZF9zaXplX2luX2J5dGVzIDogdHlwZSBhIGIuIChhLCBiKSBraW5kIC0+IGludCA9IGZ1bmN0aW9uXG4gIHwgRmxvYXQxNiAtPiAyXG4gIHwgRmxvYXQzMiAtPiA0XG4gIHwgRmxvYXQ2NCAtPiA4XG4gIHwgSW50OF9zaWduZWQgLT4gMVxuICB8IEludDhfdW5zaWduZWQgLT4gMVxuICB8IEludDE2X3NpZ25lZCAtPiAyXG4gIHwgSW50MTZfdW5zaWduZWQgLT4gMlxuICB8IEludDMyIC0+IDRcbiAgfCBJbnQ2NCAtPiA4XG4gIHwgSW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgTmF0aXZlaW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgQ29tcGxleDMyIC0+IDhcbiAgfCBDb21wbGV4NjQgLT4gMTZcbiAgfCBDaGFyIC0+IDFcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2xheW91dCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgY19sYXlvdXQgPSBDX2xheW91dFxubGV0IGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRcblxubW9kdWxlIEdlbmFycmF5ID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHRcbiAgZXh0ZXJuYWwgY3JlYXRlOiAoJ2EsICdiKSBraW5kIC0+ICdjIGxheW91dCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgPSBcImNhbWxfYmFfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2FcbiAgICAgPSBcImNhbWxfYmFfZ2V0X2dlbmVyaWNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYSAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX3NldF9nZW5lcmljXCJcblxuICBsZXQgcmVjIGNsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPSBBcnJheS5sZW5ndGggaWR4IHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAwIHRvIHByZWQgbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBjbG9vcCBhcnIgaWR4IGYgKHN1Y2MgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IHJlYyBmbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sIDwgMCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMSB0byBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGZsb29wIGFyciBpZHggZiAocHJlZCBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltcyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbXMgaW5cbiAgICBsZXQgZGxlbiA9IEFycmF5Lmxlbmd0aCBkaW1zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDApIGYgMCBkaW1zOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDEpIGYgKHByZWQgZGxlbikgZGltczsgYXJyXG5cbiAgZXh0ZXJuYWwgbnVtX2RpbXM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiY2FtbF9iYV9udW1fZGltc1wiXG4gIGV4dGVybmFsIG50aF9kaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfYmFfZGltXCJcbiAgbGV0IGRpbXMgYSA9XG4gICAgbGV0IG4gPSBudW1fZGltcyBhIGluXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlIG4gMCBpblxuICAgIGZvciBpID0gMCB0byBuLTEgZG8gZC4oaSkgPC0gbnRoX2RpbSBhIGkgZG9uZTtcbiAgICBkXG5cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChBcnJheS5mb2xkX2xlZnQgKCAqICkgMSAoZGltcyBhcnIpKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzbGljZV9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBzbGljZV9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbmVuZFxuXG5tb2R1bGUgQXJyYXkwID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0ID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3x8XVxuICBsZXQgZ2V0IGFyciA9IEdlbmFycmF5LmdldCBhcnIgW3x8XVxuICBsZXQgc2V0IGFyciA9IEdlbmFycmF5LnNldCBhcnIgW3x8XVxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9IGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpXG5cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcblxuICBsZXQgb2ZfdmFsdWUga2luZCBsYXlvdXQgdiA9XG4gICAgbGV0IGEgPSBjcmVhdGUga2luZCBsYXlvdXQgaW5cbiAgICBzZXQgYSB2O1xuICAgIGFcbiAgbGV0IGluaXQgPSBvZl92YWx1ZVxuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW18XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG4gIGV4dGVybmFsIGRpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbSBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsICdjKSB0ID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZSAodHlwZSB0KSAoYSA6IChfLCBfLCB0KSBHZW5hcnJheS50KSBuID1cbiAgICBtYXRjaCBsYXlvdXQgYSB3aXRoXG4gICAgfCBDX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XTogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDEgdG8gZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0gZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgKEFycmF5Lmxlbmd0aCBkYXRhKSBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGRhdGEgLSAxIGRvIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIGRhdGEuKGkpIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkyID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMnxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzJcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzJcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzJcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMlwiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0IGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHQgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTIub2ZfYXJyYXk6IG5vbi1yZWN0YW5ndWxhciBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSByb3cuKGopXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTMgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTI7IGRpbTN8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfM1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfc2V0XzNcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8zXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBkaW0zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8zXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKSAqIChkaW0zIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfcmlnaHRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX2xlZnRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIGZvciBrID0gMCB0byBwcmVkIGRpbTMgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGsgPSAxIHRvIGRpbTMgZG9cbiAgICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGRpbTMgPSBpZiBkaW0yID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgbGV0IGNvbCA9IHJvdy4oaikgaW5cbiAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGNvbCA8PiBkaW0zIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICAgIGZvciBrID0gMCB0byBkaW0zIC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSAoayArIG9mcykgY29sLihrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MDogKCdhLCAnYiwgJ2MpIEFycmF5MC50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MTogKCdhLCAnYiwgJ2MpIEFycmF5MS50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MjogKCdhLCAnYiwgJ2MpIEFycmF5Mi50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MzogKCdhLCAnYiwgJ2MpIEFycmF5My50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmxldCBhcnJheTBfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAwIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkwX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTFfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAxIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkxX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTJfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAyIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkyX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTNfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAzIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkzX29mX2dlbmFycmF5XCJcblxuZXh0ZXJuYWwgcmVzaGFwZTpcbiAgICgnYSwgJ2IsICdjKSBHZW5hcnJheS50IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcImNhbWxfYmFfcmVzaGFwZVwiXG5sZXQgcmVzaGFwZV8wIGEgPSByZXNoYXBlIGEgW3x8XVxubGV0IHJlc2hhcGVfMSBhIGRpbTEgPSByZXNoYXBlIGEgW3xkaW0xfF1cbmxldCByZXNoYXBlXzIgYSBkaW0xIGRpbTIgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTJ8XVxubGV0IHJlc2hhcGVfMyBhIGRpbTEgZGltMiBkaW0zID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yO2RpbTN8XVxuXG4oKiBGb3JjZSBjYW1sX2JhX2dldF97MSwyLDMsTn0gdG8gYmUgbGlua2VkIGluLCBzaW5jZSB3ZSBkb24ndCByZWZlclxuICAgdG8gdGhvc2UgcHJpbWl0aXZlcyBkaXJlY3RseSBpbiB0aGlzIGZpbGUgKilcblxubGV0IF8gPVxuICBsZXQgXyA9IEdlbmFycmF5LmdldCBpblxuICBsZXQgXyA9IEFycmF5MS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTIuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkzLmdldCBpblxuICAoKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuZXh0ZXJuYWwgZ2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8xXCJcbmV4dGVybmFsIGdldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMlwiXG5leHRlcm5hbCBnZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzNcIlxuZXh0ZXJuYWwgc2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8xXCJcbmV4dGVybmFsIHNldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMlwiXG5leHRlcm5hbCBzZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzNcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ2FtYml1bSwgQ29sbGVnZSBkZSBGcmFuY2UgYW5kIElucmlhICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgKilcblxuZXh0ZXJuYWwgcmFuZG9tX3NlZWQ6IHVuaXQgLT4gaW50IGFycmF5ID0gXCJjYW1sX3N5c19yYW5kb21fc2VlZFwiXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuXG4gIG9wZW4gQmlnYXJyYXlcblxuICB0eXBlIHQgPSAoaW50NjQsIGludDY0X2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbiAgZXh0ZXJuYWwgbmV4dDogdCAtPiAoaW50NjRbQHVuYm94ZWRdKVxuICAgICAgPSBcImNhbWxfbHhtX25leHRcIiBcImNhbWxfbHhtX25leHRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNyZWF0ZSAoKSA6IHQgPVxuICAgIEFycmF5MS5jcmVhdGUgSW50NjQgQ19sYXlvdXQgNFxuXG4gIGxldCBzZXQgcyBpMSBpMiBpMyBpNCA9XG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAwIChJbnQ2NC5sb2dvciBpMSAxTCk7ICgqIG11c3QgYmUgb2RkICopXG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAxIGkyO1xuICAgIEFycmF5MS51bnNhZmVfc2V0IHMgMiAoaWYgaTMgPD4gMEwgdGhlbiBpMyBlbHNlIDFMKTsgKCogbXVzdCBub3QgYmUgMCAqKVxuICAgIEFycmF5MS51bnNhZmVfc2V0IHMgMyAoaWYgaTQgPD4gMEwgdGhlbiBpNCBlbHNlIDJMKSAoKiBtdXN0IG5vdCBiZSAwICopXG5cbiAgbGV0IG1rIGkxIGkyIGkzIGk0ID1cbiAgICBsZXQgcyA9IGNyZWF0ZSAoKSBpblxuICAgIHNldCBzIGkxIGkyIGkzIGk0OyBzXG5cbiAgbGV0IHNlcmlhbGl6YXRpb25fcHJlZml4ID1cbiAgICBcImx4bTE6XCJcbiAgICAoKiBcImx4bVwiIGRlbm90ZXMgdGhlIGFsZ29yaXRobSBjdXJyZW50bHkgaW4gdXNlLCBhbmQgJzEnIGlzXG4gICAgICAgYSB2ZXJzaW9uIG51bWJlci4gV2Ugc2hvdWxkIHVwZGF0ZSB0aGlzIHByZWZpeCBpZiB3ZSBjaGFuZ2VcbiAgICAgICB0aGUgUmFuZG9tIGFsZ29yaXRobSBvciB0aGUgc2VyaWFsaXphdGlvbiBmb3JtYXQsIHNvIHRoYXQgdXNlcnNcbiAgICAgICBnZXQgYSBjbGVhbiBlcnJvciBpbnN0ZWFkIG9mIGJlbGlldmluZyB0aGF0IHRoZXkgZmFpdGhmdWxseVxuICAgICAgIHJlcHJvZHVjZSB0aGVpciBwcmV2aW91cyBzdGF0ZSBhbmQgaW4gZmFjdCBnZXQgYSBkaWZmZXJlbnRcbiAgICAgICBzdHJlYW0uXG5cbiAgICAgICBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gY29uc3RyYWludCB0byBrZWVwIHRoZSBzYW1lXG4gICAgICAgXCI8bmFtZT48dmVyPjo8ZGF0YT5cIiBmb3JtYXQgb3IgbWVzc2FnZSBzaXplIGluIGZ1dHVyZSB2ZXJzaW9ucyxcbiAgICAgICB3ZSBjb3VsZCBjaGFuZ2UgdGhlIGZvcm1hdCBjb21wbGV0ZWx5IGlmIHdlIHdhbnRlZCBhcyBsb25nXG4gICAgICAgYXMgdGhlcmUgaXMgbm8gY29uZnVzaW9uIHBvc3NpYmxlIHdpdGggdGhlIHByZXZpb3VzIGZvcm1hdHMuICopXG5cbiAgbGV0IHNlcmlhbGl6YXRpb25fcHJlZml4X2xlbiA9XG4gICAgU3RyaW5nLmxlbmd0aCBzZXJpYWxpemF0aW9uX3ByZWZpeFxuXG4gIGxldCB0b19iaW5hcnlfc3RyaW5nIHMgPVxuICAgIGxldCBwcmVmaXggPSBzZXJpYWxpemF0aW9uX3ByZWZpeCBpblxuICAgIGxldCBwcmVmbGVuID0gc2VyaWFsaXphdGlvbl9wcmVmaXhfbGVuIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAocHJlZmxlbiArIDQgKiA4KSBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIHByZWZpeCAwIGJ1ZiAwIHByZWZsZW47XG4gICAgZm9yIGkgPSAwIHRvIDMgZG9cbiAgICAgIEJ5dGVzLnNldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyBpICogOCkgKEFycmF5MS5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWZcblxuICBsZXQgb2ZfYmluYXJ5X3N0cmluZyBidWYgPVxuICAgIGxldCBwcmVmaXggPSBzZXJpYWxpemF0aW9uX3ByZWZpeCBpblxuICAgIGxldCBwcmVmbGVuID0gc2VyaWFsaXphdGlvbl9wcmVmaXhfbGVuIGluXG4gICAgaWYgU3RyaW5nLmxlbmd0aCBidWYgPD4gcHJlZmxlbiArIDQgKiA4XG4gICAgICAgfHwgbm90IChTdHJpbmcuc3RhcnRzX3dpdGggfnByZWZpeCBidWYpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKFwiUmFuZG9tLlN0YXRlLm9mX2JpbmFyeV9zdHJpbmc6IGV4cGVjdGVkIGEgZm9ybWF0IFxcXG4gICAgICAgICAgY29tcGF0aWJsZSB3aXRoIE9DYW1sIFwiIF4gU3lzLm9jYW1sX3ZlcnNpb24pO1xuICAgIGxldCBpMSA9IFN0cmluZy5nZXRfaW50NjRfbGUgYnVmIChwcmVmbGVuICsgMCAqIDgpIGluXG4gICAgbGV0IGkyID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAxICogOCkgaW5cbiAgICBsZXQgaTMgPSBTdHJpbmcuZ2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIDIgKiA4KSBpblxuICAgIGxldCBpNCA9IFN0cmluZy5nZXRfaW50NjRfbGUgYnVmIChwcmVmbGVuICsgMyAqIDgpIGluXG4gICAgbWsgaTEgaTIgaTMgaTRcblxuICBsZXQgYXNzaWduIChkc3Q6IHQpIChzcmM6IHQpID1cbiAgICBBcnJheTEuYmxpdCBzcmMgZHN0XG5cbiAgbGV0IGNvcHkgcyA9XG4gICAgbGV0IHMnID0gY3JlYXRlKCkgaW4gYXNzaWduIHMnIHM7IHMnXG5cbiAgKCogVGhlIHNlZWQgaXMgYW4gYXJyYXkgb2YgaW50ZWdlcnMuICBJdCBjYW4gYmUganVzdCBvbmUgaW50ZWdlcixcbiAgICAgYnV0IGl0IGNhbiBhbHNvIGJlIDEyIG9yIG1vcmUgYnl0ZXMuICBUbyBoaWRlIHRoZSBkaWZmZXJlbmNlLFxuICAgICB3ZSBzZXJpYWxpemUgdGhlIGFycmF5IGFzIGEgc2VxdWVuY2Ugb2YgYnl0ZXMsIHRoZW4gaGFzaCB0aGVcbiAgICAgc2VxdWVuY2Ugd2l0aCBNRDUgKERpZ2VzdC5ieXRlcykuICBNRDUgZ2l2ZXMgb25seSAxMjggYml0cyB3aGlsZVxuICAgICB3ZSBuZWVkIDI1NiBiaXRzLCBzbyB3ZSBoYXNoIHR3aWNlIHdpdGggZGlmZmVyZW50IHN1ZmZpeGVzLiAqKVxuICBsZXQgcmVpbml0IHMgc2VlZCA9XG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggc2VlZCBpblxuICAgIGxldCBiID0gQnl0ZXMuY3JlYXRlIChuICogOCArIDEpIGluXG4gICAgZm9yIGkgPSAwIHRvIG4tMSBkb1xuICAgICAgQnl0ZXMuc2V0X2ludDY0X2xlIGIgKGkgKiA4KSAoSW50NjQub2ZfaW50IHNlZWQuKGkpKVxuICAgIGRvbmU7XG4gICAgQnl0ZXMuc2V0IGIgKG4gKiA4KSAnXFx4MDEnO1xuICAgIGxldCBkMSA9IERpZ2VzdC5ieXRlcyBiIGluXG4gICAgQnl0ZXMuc2V0IGIgKG4gKiA4KSAnXFx4MDInO1xuICAgIGxldCBkMiA9IERpZ2VzdC5ieXRlcyBiIGluXG4gICAgc2V0IHMgKFN0cmluZy5nZXRfaW50NjRfbGUgZDEgMClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMSA4KVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQyIDApXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDIgOClcblxuICBsZXQgbWFrZSBzZWVkID1cbiAgICBsZXQgcyA9IGNyZWF0ZSgpIGluIHJlaW5pdCBzIHNlZWQ7IHNcblxuICBsZXQgbWFrZV9zZWxmX2luaXQgKCkgPVxuICAgIG1ha2UgKHJhbmRvbV9zZWVkICgpKVxuXG4gIGxldCBtaW5faW50MzEgPSAtMHg0MDAwXzAwMDBcbiAgICAgICgqID0gLTJ7XjMwfSwgd2hpY2ggaXMgW21pbl9pbnRdIGZvciAzMS1iaXQgaW50ZWdlcnMgKilcbiAgbGV0IG1heF9pbnQzMSA9IDB4M0ZGRl9GRkZGXG4gICAgICAoKiA9ICAye14zMH0tMSwgd2hpY2ggaXMgW21heF9pbnRdIGZvciAzMS1iaXQgaW50ZWdlcnMgKilcbiAgKCogYXZvaWQgaW50ZWdlciBsaXRlcmFscyBmb3IgdGhlc2UsIDMyLWJpdCBPQ2FtbCB3b3VsZCByZWplY3QgdGhlbTogKilcbiAgbGV0IG1pbl9pbnQzMiA9IC0oMSBsc2wgMzEpXG4gICAgICAoKiA9IC0weDgwMDBfMDAwMCBvbiBwbGF0Zm9ybXMgd2hlcmUgW1N5cy5pbnRfc2l6ZSA+PSAzMl0gKilcbiAgbGV0IG1heF9pbnQzMiA9ICgxIGxzbCAzMSkgLSAxXG4gICAgICAoKiA9ICAweDdGRkZfRkZGRiBvbiBwbGF0Zm9ybXMgd2hlcmUgW1N5cy5pbnRfc2l6ZSA+PSAzMl0gKilcblxuICAoKiBSZXR1cm4gMzAgcmFuZG9tIGJpdHMgYXMgYW4gaW50ZWdlciAwIDw9IHggPCAyXjMwICopXG4gIGxldCBiaXRzIHMgPVxuICAgIEludDY0LnRvX2ludCAobmV4dCBzKSBsYW5kIG1heF9pbnQzMVxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbbl0gKGV4Y2x1ZGVkKS5cbiAgICAgW2JvdW5kXSBtYXkgYmUgYW55IHBvc2l0aXZlIFtpbnRdLiAgW21hc2tdIG11c3QgYmUgb2YgdGhlIGZvcm0gWzJ7Xml9LTFdXG4gICAgIGFuZCBncmVhdGVyIG9yIGVxdWFsIHRvIFtuXS4gIExhcmdlciB2YWx1ZXMgb2YgW21hc2tdIG1ha2UgdGhlIGZ1bmN0aW9uXG4gICAgIHJ1biBmYXN0ZXIgKGZld2VyIHNhbXBsZXMgYXJlIHJlamVjdGVkKS4gIFNtYWxsZXIgdmFsdWVzIG9mIFttYXNrXVxuICAgICBhcmUgdXNhYmxlIG9uIGEgd2lkZXIgcmFuZ2Ugb2YgT0NhbWwgaW1wbGVtZW50YXRpb25zLiAgKilcbiAgbGV0IHJlYyBpbnRfYXV4IHMgbiBtYXNrID1cbiAgICAoKiBXZSBzdGFydCBieSBkcmF3aW5nIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgaW4gdGhlIFsgWzAsIG1hc2tdIF0gcmFuZ2UgKilcbiAgICBsZXQgciA9IEludDY0LnRvX2ludCAobmV4dCBzKSBsYW5kIG1hc2sgaW5cbiAgICBsZXQgdiA9IHIgbW9kIG4gaW5cbiAgICAoKiBGb3IgdW5pZm9ybSBkaXN0cmlidXRpb24gb2YgdGhlIHJlc3VsdCBiZXR3ZWVuIDAgaW5jbHVkZWQgYW5kIFtuXVxuICAgICAqIGV4Y2x1ZGVkLCB0aGUgcmFuZG9tIG51bWJlciBbcl0gbXVzdCBoYXZlIGJlZW4gZHJhd24gdW5pZm9ybWx5IGluXG4gICAgICogYW4gaW50ZXJ2YWwgd2hvc2UgbGVuZ3RoIGlzIGEgbXVsdGlwbGUgb2YgW25dLiBUbyBhY2hpZXZlIHRoaXMsXG4gICAgICogd2UgdXNlIHJlamVjdGlvbiBzYW1wbGluZyBvbiB0aGUgZ3JlYXRlc3QgaW50ZXJ2YWwgWyBbMCwgaypuLTFdIF1cbiAgICAgKiB0aGF0IGZpdHMgaW4gWyBbMCwgbWFza10gXS4gIFRoYXQgaXMsIHdlIHJlamVjdCB0aGVcbiAgICAgKiBzYW1wbGUgaWYgaXQgZmFsbHMgb3V0c2lkZSBvZiB0aGlzIGludGVydmFsLCBhbmQgZHJhdyBhZ2Fpbi5cbiAgICAgKiBUaGlzIGlzIHdoYXQgdGhlIHRlc3QgYmVsb3cgZG9lcywgd2hpbGUgY2FyZWZ1bHkgYXZvaWRpbmdcbiAgICAgKiBvdmVyZmxvd3MgYW5kIHNwYXJpbmcgYSBkaXZpc2lvbiBbbWFzayAvIG5dLiAqKVxuICAgIGlmIHIgLSB2ID4gbWFzayAtIG4gKyAxIHRoZW4gaW50X2F1eCBzIG4gbWFzayBlbHNlIHZcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLlxuICAgICBUaGUgYm91bmQgbXVzdCBmaXQgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycy5cbiAgICAgVGhpcyBmdW5jdGlvbiB5aWVsZHMgdGhlIHNhbWUgb3V0cHV0IHJlZ2FyZGxlc3Mgb2YgdGhlIGludGVnZXIgc2l6ZS4gKilcbiAgbGV0IGludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA+IG1heF9pbnQzMSB8fCBib3VuZCA8PSAwXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnRcIlxuICAgIGVsc2UgaW50X2F1eCBzIGJvdW5kIG1heF9pbnQzMVxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuXG4gICAgIFtib3VuZF0gbWF5IGJlIGFueSBwb3NpdGl2ZSBbaW50XS4gKilcbiAgbGV0IGZ1bGxfaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uZnVsbF9pbnRcIlxuICAgICgqIFdoZW4gdGhlIGJvdW5kIGZpdHMgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIHRoZSBzYW1lIG1hc2tcbiAgICAgICBhcyBpbiBmdW5jdGlvbiBbaW50XSBzbyBhcyB0byB5aWVsZCB0aGUgc2FtZSBvdXRwdXQgb24gYWxsIHBsYXRmb3Jtc1xuICAgICAgIHN1cHBvcnRlZCBieSBPQ2FtbCAoMzItYml0IE9DYW1sLCA2NC1iaXQgT0NhbWwsIGFuZCBKYXZhU2NyaXB0KS5cbiAgICAgICBXaGVuIHRoZSBib3VuZCBmaXRzIGluIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBbbWF4X2ludDMyXVxuICAgICAgIGFzIHRoZSBtYXNrIHNvIGFzIHRvIHlpZWxkIHRoZSBzYW1lIG91dHB1dCBvbiBhbGwgcGxhdGZvcm1zIHdoZXJlXG4gICAgICAgW1N5cy5pbnRfc2l6ZSA+PSAzMl0gKGkuZS4gSmF2YVNjcmlwdCBhbmQgNjQtYml0IE9DYW1sKS4gKilcbiAgICBlbHNlXG4gICAgICBpbnRfYXV4IHMgYm91bmRcbiAgICAgICAgKGlmIGJvdW5kIDw9IG1heF9pbnQzMSB0aGVuIG1heF9pbnQzMVxuICAgICAgICAgZWxzZSBpZiBib3VuZCA8PSBtYXhfaW50MzIgdGhlbiBtYXhfaW50MzJcbiAgICAgICAgIGVsc2UgbWF4X2ludClcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFRoZSBbbmJpdHNdIHBhcmFtZXRlciBpcyB0aGUgc2l6ZSBpbiBiaXRzIG9mIHRoZSBzaWduZWQgaW50ZWdlcnNcbiAgICAgd2UgZHJhdyBmcm9tIFtzXS5cbiAgICAgV2UgbXVzdCBoYXZlIFstMntebmJpdHMgLSAxfSA8PSBtaW4gPD0gbWF4IDwgMntebmJpdHMgLSAxfV0uXG4gICAgIE1vcmVvdmVyLCBmb3IgdGhlIGl0ZXJhdGlvbiB0byBjb252ZXJnZSBxdWlja2x5LCB0aGUgaW50ZXJ2YWxcbiAgICAgW1ttaW4sIG1heF1dIHNob3VsZCBoYXZlIHdpZHRoIGF0IGxlYXN0IFsye15uYml0cyAtIDF9XS5cbiAgICAgQXMgdGhlIHdpZHRoIGFwcHJvYWNoZXMgdGhpcyBsb3dlciBsaW1pdCwgdGhlIGF2ZXJhZ2UgbnVtYmVyIG9mXG4gICAgIGRyYXdzIGFwcHJvYWNoZXMgMiwgd2l0aCBhIHF1aXRlIGhpZ2ggc3RhbmRhcmQgZGV2aWF0aW9uICgyICsgZXBzaWxvbikuICopXG4gIGxldCByZWMgaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0cyA9XG4gICAgbGV0IGRyb3AgPSBTeXMuaW50X3NpemUgLSBuYml0cyBpblxuICAgICgqIFRoZSBiaXRzaGlmdHMgcmVwbGljYXRlIHRoZSBbbmJpdHNdLXRoIGJpdCAoc2lnbiBiaXQpIHRvIGhpZ2hlciBiaXRzOiAqKVxuICAgIGxldCByID0gKChJbnQ2NC50b19pbnQgKG5leHQgcykpIGxzbCBkcm9wKSBhc3IgZHJvcCBpblxuICAgIGlmIHIgPCBtaW4gfHwgciA+IG1heCB0aGVuIGludF9pbl9sYXJnZV9yYW5nZSBzIH5taW4gfm1heCB+bmJpdHMgZWxzZSByXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLlxuICAgICBbbWFza10gaXMgYXMgZGVzY3JpYmVkIGZvciBbaW50X2F1eF0uXG4gICAgIFtuYml0c10gaXMgYXMgZGVzY3JpYmVkIGZvciBbaW50X2luX2xhcmdlX3JhbmdlXS4gKilcbiAgbGV0IGludF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggfm1hc2sgfm5iaXRzID1cbiAgICBsZXQgc3BhbiA9IG1heCAtIG1pbiArIDEgaW5cbiAgICBpZiBzcGFuIDw9IG1hc2sgKCogW3NwYW5dIGlzIHNtYWxsIGVub3VnaCAqKVxuICAgICYmIHNwYW4gPiAwICAgICAoKiBubyBvdmVyZmxvdyBvY2N1cnJlZCB3aGVuIGNvbXB1dGluZyBbc3Bhbl0gKilcbiAgICB0aGVuXG4gICAgICAoKiBKdXN0IGRyYXcgYSBudW1iZXIgaW4gW1swLCBzcGFuKV0gYW5kIHNoaWZ0IGl0IGJ5IFttaW5dLiAqKVxuICAgICAgbWluICsgaW50X2F1eCBzIHNwYW4gbWFza1xuICAgIGVsc2VcbiAgICAgICgqIFNwYW4gdG9vIGxhcmdlLCB1c2UgdGhlIGFsdGVybmF0aXZlIGRyYXdpbmcgbWV0aG9kLiAqKVxuICAgICAgaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0c1xuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgV2UgbXVzdCBoYXZlIFttaW4gPD0gbWF4XS4gKilcbiAgbGV0IGludF9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludF9pbl9yYW5nZVwiO1xuICAgICgqIFdoZW4gYm90aCBib3VuZHMgZml0IGluIDMxLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBwYXJhbWV0ZXJzXG4gICAgICAgW21hc2tdIGFuZCBbbmJpdHNdIGFwcHJvcHJpYXRlIGZvciAzMS1iaXQgaW50ZWdlcnMsIHNvIGFzIHRvXG4gICAgICAgeWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIGFsbCBwbGF0Zm9ybXMgc3VwcG9ydGVkIGJ5IE9DYW1sLlxuICAgICAgIFdoZW4gYm90aCBib3VuZHMgZml0IGluIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBwYXJhbWV0ZXJzXG4gICAgICAgW21hc2tdIGFuZCBbbmJpdHNdIGFwcHJvcHJpYXRlIGZvciAzMi1iaXQgaW50ZWdlcnMsIHNvIGFzIHRvXG4gICAgICAgeWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIEphdmFTY3JpcHQgYW5kIG9uIDY0LWJpdCBPQ2FtbC4gKilcbiAgICBpZiBtaW4gPj0gbWluX2ludDMxICYmIG1heCA8PSBtYXhfaW50MzEgdGhlblxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50MzEgfm5iaXRzOjMxXG4gICAgZWxzZSBpZiBtaW4gPj0gbWluX2ludDMyICYmIG1heCA8PSBtYXhfaW50MzIgdGhlblxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50MzIgfm5iaXRzOjMyXG4gICAgZWxzZVxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50IH5uYml0czpTeXMuaW50X3NpemVcblxuICAoKiBSZXR1cm4gMzIgcmFuZG9tIGJpdHMgYXMgYW4gW2ludDMyXSAqKVxuICBsZXQgYml0czMyIHMgPVxuICAgIEludDY0LnRvX2ludDMyIChuZXh0IHMpXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQzMl0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQzMmF1eCBzIG4gPVxuICAgIGxldCByID0gSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czMyIHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDMyLnJlbSByIG4gaW5cbiAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfYXV4XS4gKilcbiAgICBpZiBJbnQzMi4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMWwpXG4gICAgdGhlbiBpbnQzMmF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50MzIgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyXCJcbiAgICBlbHNlIGludDMyYXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gYW4gW2ludDMyXSBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFdlIG11c3QgaGF2ZSBbbWluIDw9IG1heF0uICopXG4gIGxldCByZWMgaW50MzJfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4ID1cbiAgICBsZXQgciA9IEludDY0LnRvX2ludDMyIChuZXh0IHMpIGluXG4gICAgaWYgciA8IG1pbiB8fCByID4gbWF4IHRoZW4gaW50MzJfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IGVsc2UgclxuXG4gIGxldCBpbnQzMl9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyX2luX3JhbmdlXCJcbiAgICBlbHNlXG4gICAgICBsZXQgc3BhbiA9IEludDMyLnN1Y2MgKEludDMyLnN1YiBtYXggbWluKSBpblxuICAgICAgKCogRXhwbGFuYXRpb24gb2YgdGhpcyB0ZXN0OiBzZWUgY29tbWVudCBpbiBbaW50X2luX3JhbmdlX2F1eF0uICopXG4gICAgICBpZiBzcGFuIDw9IEludDMyLnplcm8gdGhlblxuICAgICAgICBpbnQzMl9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXhcbiAgICAgIGVsc2VcbiAgICAgICAgSW50MzIuYWRkIG1pbiAoaW50MzJhdXggcyBzcGFuKVxuXG4gICgqIFJldHVybiA2NCByYW5kb20gYml0cyBhcyBhbiBbaW50NjRdICopXG4gIGxldCBiaXRzNjQgcyA9XG4gICAgbmV4dCBzXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQ2NF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQ2NGF1eCBzIG4gPVxuICAgIGxldCByID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czY0IHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDY0LnJlbSByIG4gaW5cbiAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfYXV4XS4gKilcbiAgICBpZiBJbnQ2NC4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMUwpXG4gICAgdGhlbiBpbnQ2NGF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50NjQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMExcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0XCJcbiAgICBlbHNlIGludDY0YXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gYW4gW2ludDY0XSBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFdlIG11c3QgaGF2ZSBbbWluIDw9IG1heF0uICopXG4gIGxldCByZWMgaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4ID1cbiAgICBsZXQgciA9IG5leHQgcyBpblxuICAgIGlmIHIgPCBtaW4gfHwgciA+IG1heCB0aGVuIGludDY0X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCBlbHNlIHJcblxuICBsZXQgaW50NjRfaW5fcmFuZ2UgcyB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQ2NF9pbl9yYW5nZVwiXG4gICAgZWxzZVxuICAgICAgbGV0IHNwYW4gPSBJbnQ2NC5zdWNjIChJbnQ2NC5zdWIgbWF4IG1pbikgaW5cbiAgICAgICgqIEV4cGxhbmF0aW9uIG9mIHRoaXMgdGVzdDogc2VlIGNvbW1lbnQgaW4gW2ludF9pbl9yYW5nZV9hdXhdLiAqKVxuICAgICAgaWYgc3BhbiA8PSBJbnQ2NC56ZXJvIHRoZW5cbiAgICAgICAgaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4XG4gICAgICBlbHNlXG4gICAgICAgIEludDY0LmFkZCBtaW4gKGludDY0YXV4IHMgc3BhbilcblxuICAoKiBSZXR1cm4gMzIgb3IgNjQgcmFuZG9tIGJpdHMgYXMgYSBbbmF0aXZlaW50XSAqKVxuICBsZXQgbmF0aXZlYml0cyA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChiaXRzMzIgcylcbiAgICBlbHNlIGZ1biBzIC0+IEludDY0LnRvX25hdGl2ZWludCAoYml0czY0IHMpXG5cbiAgKCogUmV0dXJuIGEgW25hdGl2ZWludF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IG5hdGl2ZWludCA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgYm91bmQgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChpbnQzMiBzIChOYXRpdmVpbnQudG9faW50MzIgYm91bmQpKVxuICAgIGVsc2UgZnVuIHMgYm91bmQgLT4gSW50NjQudG9fbmF0aXZlaW50IChpbnQ2NCBzIChJbnQ2NC5vZl9uYXRpdmVpbnQgYm91bmQpKVxuXG4gICgqIFJldHVybiBhIFtuYXRpdmVpbnRdIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS4gKilcbiAgbGV0IG5hdGl2ZWludF9pbl9yYW5nZSA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgfm1pbiB+bWF4IC0+XG4gICAgICBOYXRpdmVpbnQub2ZfaW50MzIgKGludDMyX2luX3JhbmdlIHNcbiAgICAgICAgfm1pbjooTmF0aXZlaW50LnRvX2ludDMyIG1pbikgfm1heDooTmF0aXZlaW50LnRvX2ludDMyIG1heCkpXG4gICAgZWxzZSBmdW4gcyB+bWluIH5tYXggLT5cbiAgICAgIEludDY0LnRvX25hdGl2ZWludCAoaW50NjRfaW5fcmFuZ2Ugc1xuICAgICAgICB+bWluOihJbnQ2NC5vZl9uYXRpdmVpbnQgbWluKSB+bWF4OihJbnQ2NC5vZl9uYXRpdmVpbnQgbWF4KSlcblxuICAoKiBSZXR1cm4gYSBmbG9hdCAwIDwgeCA8IDEgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGFtb25nIHRoZVxuICAgICBtdWx0aXBsZXMgb2YgMl4tNTMgKilcbiAgbGV0IHJlYyByYXdmbG9hdCBzID1cbiAgICBsZXQgYiA9IG5leHQgcyBpblxuICAgIGxldCBuID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCBiIDExIGluXG4gICAgaWYgbiA8PiAwTCB0aGVuIEludDY0LnRvX2Zsb2F0IG4gKi4gMHgxLnAtNTMgZWxzZSByYXdmbG9hdCBzXG5cbiAgKCogUmV0dXJuIGEgZmxvYXQgYmV0d2VlbiAwIGFuZCBbYm91bmRdICopXG4gIGxldCBmbG9hdCBzIGJvdW5kID0gcmF3ZmxvYXQgcyAqLiBib3VuZFxuXG4gICgqIFJldHVybiBhIHJhbmRvbSBCb29sZWFuICopXG4gIGxldCBib29sIHMgPSBuZXh0IHMgPCAwTFxuXG4gICgqIFNwbGl0IGEgbmV3IFBSTkcgb2ZmIHRoZSBnaXZlbiBQUk5HICopXG4gIGxldCBzcGxpdCBzID1cbiAgICBsZXQgaTEgPSBiaXRzNjQgcyBpbiBsZXQgaTIgPSBiaXRzNjQgcyBpblxuICAgIGxldCBpMyA9IGJpdHM2NCBzIGluIGxldCBpNCA9IGJpdHM2NCBzIGluXG4gICAgbWsgaTEgaTIgaTMgaTRcbmVuZFxuXG5sZXQgbWtfZGVmYXVsdCAoKSA9XG4gICgqIFRoaXMgaXMgdGhlIHN0YXRlIG9idGFpbmVkIHdpdGggW1N0YXRlLm1ha2UgW3wgMzE0MTU5MjY1IHxdXS4gKilcbiAgU3RhdGUubWsgKC02MTk2ODc0Mjg5NTY3NzA1MDk3TClcbiAgICAgICAgICAgNTg2NTczMjQ5ODMzNzEzMTg5TFxuICAgICAgICAgICAoLTg1OTEyNjg4MDM4NjUwNDM0MDdMKVxuICAgICAgICAgICA2Mzg4NjEzNTk1ODQ5NzcyMDQ0TFxuXG5sZXQgcmFuZG9tX2tleSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQ6U3RhdGUuc3BsaXQgbWtfZGVmYXVsdFxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgaW50IGJvdW5kID0gU3RhdGUuaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGZ1bGxfaW50IGJvdW5kID0gU3RhdGUuZnVsbF9pbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50X2luX3JhbmdlIH5taW4gfm1heCA9XG4gIFN0YXRlLmludF9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgaW50MzIgYm91bmQgPSBTdGF0ZS5pbnQzMiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnQzMl9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5pbnQzMl9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgbmF0aXZlaW50IGJvdW5kID0gU3RhdGUubmF0aXZlaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IG5hdGl2ZWludF9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5uYXRpdmVpbnRfaW5fcmFuZ2UgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIH5taW4gfm1heFxubGV0IGludDY0IGJvdW5kID0gU3RhdGUuaW50NjQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50NjRfaW5fcmFuZ2Ugfm1pbiB+bWF4ID1cbiAgU3RhdGUuaW50NjRfaW5fcmFuZ2UgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIH5taW4gfm1heFxubGV0IGZsb2F0IHNjYWxlID0gU3RhdGUuZmxvYXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNjYWxlXG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgYml0czMyICgpID0gU3RhdGUuYml0czMyIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IGJpdHM2NCAoKSA9IFN0YXRlLmJpdHM2NCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBuYXRpdmViaXRzICgpID0gU3RhdGUubmF0aXZlYml0cyAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUucmVpbml0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzZWVkXG5sZXQgaW5pdCBzZWVkID0gZnVsbF9pbml0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkKCkpXG5cbigqIFNwbGl0dGluZyAqKVxuXG5sZXQgc3BsaXQgKCkgPSBTdGF0ZS5zcGxpdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxuKCogTWFuaXB1bGF0aW5nIHRoZSBjdXJyZW50IHN0YXRlLiAqKVxuXG5sZXQgZ2V0X3N0YXRlICgpID0gU3RhdGUuY29weSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBIYXNoIHRhYmxlcyAqKVxuXG4oKiBXZSBkbyBkeW5hbWljIGhhc2hpbmcsIGFuZCByZXNpemUgdGhlIHRhYmxlIGFuZCByZWhhc2ggdGhlIGVsZW1lbnRzXG4gICB3aGVuIHRoZSBsb2FkIGZhY3RvciBiZWNvbWVzIHRvbyBoaWdoLiAqKVxuXG50eXBlICgnYSwgJ2IpIHQgPVxuICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgbXV0YWJsZSBkYXRhOiAoJ2EsICdiKSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgfVxuXG5hbmQgKCdhLCAnYikgYnVja2V0bGlzdCA9XG4gICAgRW1wdHlcbiAgfCBDb25zIG9mIHsgbXV0YWJsZSBrZXk6ICdhO1xuICAgICAgICAgICAgICBtdXRhYmxlIGRhdGE6ICdiO1xuICAgICAgICAgICAgICBtdXRhYmxlIG5leHQ6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgfVxuXG4oKiBUaGUgc2lnbiBvZiBpbml0aWFsX3NpemUgZW5jb2RlcyB0aGUgZmFjdCB0aGF0IGEgdHJhdmVyc2FsIGlzXG4gICBvbmdvaW5nIG9yIG5vdC5cblxuICAgVGhpcyBkaXNhYmxlcyB0aGUgZWZmaWNpZW50IGluIHBsYWNlIGltcGxlbWVudGF0aW9uIG9mIHJlc2l6aW5nLlxuKilcblxubGV0IG9uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgfHwgaC5pbml0aWFsX3NpemUgPCAwXG5cbmxldCBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBoLmluaXRpYWxfc2l6ZSA8LSAtIGguaW5pdGlhbF9zaXplXG5cbigqIFRvIHBpY2sgcmFuZG9tIHNlZWRzIGlmIHJlcXVlc3RlZCAqKVxuXG5sZXQgcmFuZG9taXplZF9kZWZhdWx0ID1cbiAgbGV0IHBhcmFtcyA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJPQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0cnkgU3lzLmdldGVudiBcIkNBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIgaW5cbiAgU3RyaW5nLmNvbnRhaW5zIHBhcmFtcyAnUidcblxubGV0IHJhbmRvbWl6ZWQgPSBBdG9taWMubWFrZSByYW5kb21pemVkX2RlZmF1bHRcblxubGV0IHJhbmRvbWl6ZSAoKSA9IEF0b21pYy5zZXQgcmFuZG9taXplZCB0cnVlXG5sZXQgaXNfcmFuZG9taXplZCAoKSA9IEF0b21pYy5nZXQgcmFuZG9taXplZFxuXG5sZXQgcHJuZ19rZXkgPSBEb21haW4uRExTLm5ld19rZXkgUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0XG5cbigqIEZ1bmN0aW9ucyB3aGljaCBhcHBlYXIgYmVmb3JlIHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSBtdXN0IGVpdGhlciBiZVxuICAgaW5kZXBlbmRlbnQgb2YgdGhlIGhhc2ggZnVuY3Rpb24gb3IgdGFrZSBpdCBhcyBhIHBhcmFtZXRlciAoc2VlICMyMjAyIGFuZFxuICAgY29kZSBiZWxvdyB0aGUgZnVuY3RvciBkZWZpbml0aW9ucy4gKilcblxuKCogQ3JlYXRpbmcgYSBmcmVzaCwgZW1wdHkgdGFibGUgKilcblxubGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gIGlmIHggPj0gbiB0aGVuIHhcbiAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbmxldCBjcmVhdGUgPyhyYW5kb20gPSBBdG9taWMuZ2V0IHJhbmRvbWl6ZWQpIGluaXRpYWxfc2l6ZSA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgbGV0IHNlZWQgPVxuICAgIGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChEb21haW4uRExTLmdldCBwcm5nX2tleSkgZWxzZSAwXG4gIGluXG4gIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxubGV0IGNsZWFyIGggPVxuICBpZiBoLnNpemUgPiAwIHRoZW4gYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBBcnJheS5maWxsIGguZGF0YSAwIChBcnJheS5sZW5ndGggaC5kYXRhKSBFbXB0eVxuICBlbmRcblxubGV0IHJlc2V0IGggPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgICB8fCBsZW4gPSBhYnMgaC5pbml0aWFsX3NpemUgdGhlblxuICAgIGNsZWFyIGhcbiAgZWxzZSBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIChhYnMgaC5pbml0aWFsX3NpemUpIEVtcHR5XG4gIGVuZFxuXG5sZXQgY29weV9idWNrZXRsaXN0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGxldCByZWMgbG9vcCBwcmVjID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBDb25zIHByZWMgLT4gIHByZWMubmV4dCA8LSByXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBsb29wIHIgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgbG9vcCByIG5leHQ7XG4gICAgICByXG5cbmxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkubWFwIGNvcHlfYnVja2V0bGlzdCBoLmRhdGEgfVxuXG5sZXQgbGVuZ3RoIGggPSBoLnNpemVcblxubGV0IGluc2VydF9hbGxfYnVja2V0cyBpbmRleGZ1biBpbnBsYWNlIG9kYXRhIG5kYXRhID1cbiAgbGV0IG5zaXplID0gQXJyYXkubGVuZ3RoIG5kYXRhIGluXG4gIGxldCBuZGF0YV90YWlsID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gYXMgY2VsbCAtPlxuICAgICAgICBsZXQgY2VsbCA9XG4gICAgICAgICAgaWYgaW5wbGFjZSB0aGVuIGNlbGxcbiAgICAgICAgICBlbHNlIENvbnMge2tleTsgZGF0YTsgbmV4dCA9IEVtcHR5fVxuICAgICAgICBpblxuICAgICAgICBsZXQgbmlkeCA9IGluZGV4ZnVuIGtleSBpblxuICAgICAgICBiZWdpbiBtYXRjaCBuZGF0YV90YWlsLihuaWR4KSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gbmRhdGEuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBjZWxsO1xuICAgICAgICBlbmQ7XG4gICAgICAgIG5kYXRhX3RhaWwuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIGluc2VydF9idWNrZXQgbmV4dFxuICBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9kYXRhIC0gMSBkb1xuICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gIGRvbmU7XG4gIGlmIGlucGxhY2UgdGhlblxuICAgIGZvciBpID0gMCB0byBuc2l6ZSAtIDEgZG9cbiAgICAgIG1hdGNoIG5kYXRhX3RhaWwuKGkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBFbXB0eVxuICAgIGRvbmVcblxubGV0IHJlc2l6ZSBpbmRleGZ1biBoID1cbiAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgIGxldCBpbnBsYWNlID0gbm90IChvbmdvaW5nX3RyYXZlcnNhbCBoKSBpblxuICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgICAgKCogc28gdGhhdCBpbmRleGZ1biBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgaW5zZXJ0X2FsbF9idWNrZXRzIChpbmRleGZ1biBoKSBpbnBsYWNlIG9kYXRhIG5kYXRhXG4gIGVuZFxuXG5sZXQgaXRlciBmIGggPVxuICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICAoKVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGYga2V5IGRhdGE7IGRvX2J1Y2tldCBuZXh0IGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGRvX2J1Y2tldCBkLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IHJlYyBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIEVtcHR5XG4gICAgICBlbmRcbiAgfCAoQ29ucyAoe2tleTsgZGF0YTsgbmV4dH0gYXMgYykpIGFzIHNsb3QgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGYga2V5IGRhdGEgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjIG5leHRcbiAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIHNsb3RcbiAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gc2xvdFxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBjLmRhdGEgPC0gZGF0YTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHNsb3QgbmV4dFxuICAgICAgZW5kXG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgZiBoID1cbiAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgRW1wdHkgaC5kYXRhLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoXG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgZm9sZCBmIGggaW5pdCA9XG4gIGxldCByZWMgZG9fYnVja2V0IGIgYWNjdSA9XG4gICAgbWF0Y2ggYiB3aXRoXG4gICAgICBFbXB0eSAtPlxuICAgICAgICBhY2N1XG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZG9fYnVja2V0IG5leHQgKGYga2V5IGRhdGEgYWNjdSkgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgbGV0IGFjY3UgPSByZWYgaW5pdCBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGFjY3UgOj0gZG9fYnVja2V0IGQuKGkpICFhY2N1XG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgIWFjY3VcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbnR5cGUgc3RhdGlzdGljcyA9IHtcbiAgbnVtX2JpbmRpbmdzOiBpbnQ7XG4gIG51bV9idWNrZXRzOiBpbnQ7XG4gIG1heF9idWNrZXRfbGVuZ3RoOiBpbnQ7XG4gIGJ1Y2tldF9oaXN0b2dyYW06IGludCBhcnJheVxufVxuXG5sZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYWNjdVxuICB8IENvbnN7bmV4dH0gLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIG5leHRcblxubGV0IHN0YXRzIGggPVxuICBsZXQgbWJsID1cbiAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgQXJyYXkuaXRlclxuICAgIChmdW4gYiAtPlxuICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgaC5kYXRhO1xuICB7IG51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSB0YmwgPVxuICAoKiBjYXB0dXJlIGN1cnJlbnQgYXJyYXksIHNvIHRoYXQgZXZlbiBpZiB0aGUgdGFibGUgaXMgcmVzaXplZCB3ZVxuICAgICBrZWVwIGl0ZXJhdGluZyBvbiB0aGUgc2FtZSBhcnJheSAqKVxuICBsZXQgdGJsX2RhdGEgPSB0YmwuZGF0YSBpblxuICAoKiBzdGF0ZTogaW5kZXggKiBuZXh0IGJ1Y2tldCB0byB0cmF2ZXJzZSAqKVxuICBsZXQgcmVjIGF1eCBpIGJ1Y2sgKCkgPSBtYXRjaCBidWNrIHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdGJsX2RhdGFcbiAgICAgICAgdGhlbiBTZXEuTmlsXG4gICAgICAgIGVsc2UgYXV4KGkrMSkgdGJsX2RhdGEuKGkpICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIFNlcS5Db25zICgoa2V5LCBkYXRhKSwgYXV4IGkgbmV4dClcbiAgaW5cbiAgYXV4IDAgRW1wdHlcblxubGV0IHRvX3NlcV9rZXlzIG0gPSBTZXEubWFwIGZzdCAodG9fc2VxIG0pXG5cbmxldCB0b19zZXFfdmFsdWVzIG0gPSBTZXEubWFwIHNuZCAodG9fc2VxIG0pXG5cbigqIEZ1bmN0b3JpYWwgaW50ZXJmYWNlICopXG5cbm1vZHVsZSB0eXBlIEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGhhc2g6IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBzZWVkZWRfaGFzaDogaW50IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZTogaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weTogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmU6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGUgOiA/cmFuZG9tOmJvb2wgLT4gaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlciA6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkIDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZVNlZWRlZChIOiBTZWVkZWRIYXNoZWRUeXBlKTogKFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGtleSA9IEgudFxuICAgIHR5cGUgJ2EgaGFzaHRibCA9IChrZXksICdhKSB0XG4gICAgdHlwZSAnYSB0ID0gJ2EgaGFzaHRibFxuICAgIGxldCBjcmVhdGUgPSBjcmVhdGVcbiAgICBsZXQgY2xlYXIgPSBjbGVhclxuICAgIGxldCByZXNldCA9IHJlc2V0XG4gICAgbGV0IGNvcHkgPSBjb3B5XG5cbiAgICBsZXQga2V5X2luZGV4IGgga2V5ID1cbiAgICAgIChILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGFkZCBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldFtAdGFpbF9tb2RfY29uc10gcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBbXVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhPWQ7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gZCA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxuICAgIGxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gICAgICBlbmRcblxuICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICAgICAgSC5lcXVhbCBrIGtleSB8fCBtZW1faW5fYnVja2V0IGtleSBuZXh0XG5cbiAgICBsZXQgbWVtIGgga2V5ID1cbiAgICAgIG1lbV9pbl9idWNrZXQga2V5IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICAgIGxldCBpdGVyID0gaXRlclxuICAgIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgPSBmaWx0ZXJfbWFwX2lucGxhY2VcbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHN0YXRzID0gc3RhdHNcbiAgICBsZXQgdG9fc2VxID0gdG9fc2VxXG4gICAgbGV0IHRvX3NlcV9rZXlzID0gdG9fc2VxX2tleXNcbiAgICBsZXQgdG9fc2VxX3ZhbHVlcyA9IHRvX3NlcV92YWx1ZXNcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKEg6IEhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbigqIFBvbHltb3JwaGljIGhhc2ggZnVuY3Rpb24tYmFzZWQgdGFibGVzICopXG4oKiBDb2RlIGluY2x1ZGVkIGJlbG93IHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSB0byBndWFyZCBhZ2FpbnN0IGFjY2lkZW50YWxcbiAgIHVzZSAtIHNlZSAjMjIwMiAqKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cblxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbmxldCBoYXNoX3BhcmFtIG4xIG4yIHggPSBzZWVkZWRfaGFzaF9wYXJhbSBuMSBuMiAwIHhcbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5cbmxldCBrZXlfaW5kZXggaCBrZXkgPVxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNFxuICB0aGVuIChzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJIYXNodGJsOiB1bnN1cHBvcnRlZCBoYXNoIHRhYmxlIGZvcm1hdFwiXG5cbmxldCBhZGQgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxubGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgICgpXG4gIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgZW5kXG4gICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxubGV0IHJlbW92ZSBoIGtleSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbmxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbmxldCBmaW5kIGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG5sZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBOb25lXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbmxldCBmaW5kX29wdCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbmxldCBmaW5kX2FsbCBoIGtleSA9XG4gIGxldFtAdGFpbF9tb2RfY29uc10gcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgW11cbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gZGF0YSA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbmxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gIGVuZFxuXG5sZXQgcmVjIG1lbV9pbl9idWNrZXQga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgY29tcGFyZSBrIGtleSA9IDAgfHwgbWVtX2luX2J1Y2tldCBrZXkgbmV4dFxuXG5sZXQgbWVtIGgga2V5ID1cbiAgbWVtX2luX2J1Y2tldCBrZXkgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCBhZGRfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG5sZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gIHJlcGxhY2Vfc2VxIHRibCBpO1xuICB0YmxcblxubGV0IHJlYnVpbGQgPyhyYW5kb20gPSBBdG9taWMuZ2V0IHJhbmRvbWl6ZWQpIGggPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIGluXG4gIGxldCBzZWVkID1cbiAgICBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcHJuZ19rZXkpXG4gICAgZWxzZSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguc2VlZFxuICAgIGVsc2UgMCBpblxuICBsZXQgaCcgPSB7XG4gICAgc2l6ZSA9IGguc2l6ZTtcbiAgICBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5O1xuICAgIHNlZWQgPSBzZWVkO1xuICAgIGluaXRpYWxfc2l6ZSA9IGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5pbml0aWFsX3NpemUgZWxzZSBzXG4gIH0gaW5cbiAgaW5zZXJ0X2FsbF9idWNrZXRzIChrZXlfaW5kZXggaCcpIGZhbHNlIGguZGF0YSBoJy5kYXRhO1xuICBoJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogV2VhayBhcnJheSBvcGVyYXRpb25zICopXG5cbnR5cGUgISdhIHRcblxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+ICdhIHQgPSBcImNhbWxfd2Vha19jcmVhdGVcIlxuXG4oKiogbnVtYmVyIG9mIGFkZGl0aW9uYWwgdmFsdWVzIGluIGEgd2VhayBwb2ludGVyXG4gKiAgICAtIExpbmtcbiAqICAgIC0gRGF0YSAqKVxubGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMiAoKiBDQU1MX0VQSEVfRklSU1RfS0VZIGluIHdlYWsuaCAqKVxuXG5sZXQgY3JlYXRlIGwgPVxuICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IE9iai5FcGhlbWVyb24ubWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgaW52YWxpZF9hcmcoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgY3JlYXRlIGxcblxuXG5sZXQgbGVuZ3RoIHggPSBPYmouc2l6ZShPYmoucmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbmxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgaW52YWxpZF9hcmcobXNnKVxuXG5leHRlcm5hbCBzZXQnIDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuZXh0ZXJuYWwgdW5zZXQgOiAnYSB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbmxldCBzZXQgZSBvIHggPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLnNldFwiO1xuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHVuc2V0IGUgb1xuICB8IFNvbWUgeCAtPiBzZXQnIGUgbyB4XG5cbmV4dGVybmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldFwiXG5sZXQgZ2V0IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0XCI7XG4gIGdldCBlIG9cblxuZXh0ZXJuYWwgZ2V0X2NvcHkgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRfY29weVwiXG5sZXQgZ2V0X2NvcHkgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRfY29weVwiO1xuICBnZXRfY29weSBlIG9cblxuZXh0ZXJuYWwgY2hlY2sgOiAnYSB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX3dlYWtfY2hlY2tcIlxubGV0IGNoZWNrIGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuY2hlY2tcIjtcbiAgY2hlY2sgZSBvXG5cbmV4dGVybmFsIGJsaXQgOiAnYSB0IC0+IGludCAtPiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF93ZWFrX2JsaXRcIlxuXG4oKiBibGl0OiBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuICopXG5sZXQgYmxpdCBlMSBvMSBlMiBvMiBsID1cbiAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXZWFrLmJsaXRcIlxuICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXQgZTEgbzEgZTIgbzIgbFxuXG5sZXQgZmlsbCBhciBvZnMgbGVuIHggPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGFyIC0gbGVuXG4gIHRoZW4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJXZWFrLmZpbGxcIilcbiAgZWxzZSBiZWdpblxuICAgIGZvciBpID0gb2ZzIHRvIChvZnMgKyBsZW4gLSAxKSBkb1xuICAgICAgc2V0IGFyIGkgeFxuICAgIGRvbmVcbiAgZW5kXG5cblxuKCoqIFdlYWsgaGFzaCB0YWJsZXMgKilcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIGRhdGFcbiAgdHlwZSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gdFxuICB2YWwgY2xlYXIgOiB0IC0+IHVuaXRcbiAgdmFsIG1lcmdlIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGFkZCA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgZmluZCA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBmaW5kX29wdCA6IHQgLT4gZGF0YSAtPiBkYXRhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiB0IC0+IGRhdGEgLT4gZGF0YSBsaXN0XG4gIHZhbCBtZW0gOiB0IC0+IGRhdGEgLT4gYm9vbFxuICB2YWwgaXRlciA6IChkYXRhIC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChkYXRhIC0+ICdhY2MgLT4gJ2FjYykgLT4gdCAtPiAnYWNjIC0+ICdhY2NcbiAgdmFsIGNvdW50IDogdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogdCAtPiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSCA6IEhhc2h0YmwuSGFzaGVkVHlwZSkgOiAoUyB3aXRoIHR5cGUgZGF0YSA9IEgudCkgPSBzdHJ1Y3RcblxuICB0eXBlICdhIHdlYWtfdCA9ICdhIHRcbiAgbGV0IHdlYWtfY3JlYXRlID0gY3JlYXRlXG4gIGxldCBlbXB0eWJ1Y2tldCA9IHdlYWtfY3JlYXRlIDBcblxuICB0eXBlIGRhdGEgPSBILnRcblxuICB0eXBlIHQgPSB7XG4gICAgbXV0YWJsZSB0YWJsZSA6IGRhdGEgd2Vha190IGFycmF5O1xuICAgIG11dGFibGUgaGFzaGVzIDogaW50IGFycmF5IGFycmF5O1xuICAgIG11dGFibGUgbGltaXQgOiBpbnQ7ICAgICAgICAgICAgICAgKCogYnVja2V0IHNpemUgbGltaXQgKilcbiAgICBtdXRhYmxlIG92ZXJzaXplIDogaW50OyAgICAgICAgICAgICgqIG51bWJlciBvZiBvdmVyc2l6ZSBidWNrZXRzICopXG4gICAgbXV0YWJsZSByb3ZlciA6IGludDsgICAgICAgICAgICAgICAoKiBmb3IgaW50ZXJuYWwgYm9va2tlZXBpbmcgKilcbiAgfVxuXG4gIGxldCBnZXRfaW5kZXggdCBoID0gKGggbGFuZCBtYXhfaW50KSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG4gIGxldCBsaW1pdCA9IDdcbiAgbGV0IG92ZXJfbGltaXQgPSAyXG5cbiAgbGV0IGNyZWF0ZSBzeiA9XG4gICAgbGV0IHN6ID0gaWYgc3ogPCA3IHRoZW4gNyBlbHNlIHN6IGluXG4gICAgbGV0IHN6ID0gaWYgc3ogPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIGVsc2Ugc3ogaW5cbiAgICB7XG4gICAgICB0YWJsZSA9IEFycmF5Lm1ha2Ugc3ogZW1wdHlidWNrZXQ7XG4gICAgICBoYXNoZXMgPSBBcnJheS5tYWtlIHN6IFt8IHxdO1xuICAgICAgbGltaXQgPSBsaW1pdDtcbiAgICAgIG92ZXJzaXplID0gMDtcbiAgICAgIHJvdmVyID0gMDtcbiAgICB9XG5cbiAgbGV0IGNsZWFyIHQgPVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICAgIHQudGFibGUuKGkpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgdC5oYXNoZXMuKGkpIDwtIFt8IHxdO1xuICAgIGRvbmU7XG4gICAgdC5saW1pdCA8LSBsaW1pdDtcbiAgICB0Lm92ZXJzaXplIDwtIDBcblxuXG4gIGxldCBmb2xkIGYgdCBpbml0ID1cbiAgICBsZXQgcmVjIGZvbGRfYnVja2V0IGkgYiBhY2N1ID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiAoZiB2IGFjY3UpXG4gICAgICB8IE5vbmUgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiBhY2N1XG4gICAgaW5cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChmb2xkX2J1Y2tldCAwKSB0LnRhYmxlIGluaXRcblxuXG4gIGxldCBpdGVyIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZiB2OyBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgICB8IE5vbmUgLT4gaXRlcl9idWNrZXQgKGkrMSkgYlxuICAgIGluXG4gICAgQXJyYXkuaXRlciAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IGl0ZXJfd2VhayBmIHQgPVxuICAgIGxldCByZWMgaXRlcl9idWNrZXQgaSBqIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGNoZWNrIGIgaSB3aXRoXG4gICAgICB8IHRydWUgLT4gZiBiIHQuaGFzaGVzLihqKSBpOyBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICAgIHwgZmFsc2UgLT4gaXRlcl9idWNrZXQgKGkrMSkgaiBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyaSAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IHJlYyBjb3VudF9idWNrZXQgaSBiIGFjY3UgPVxuICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICBjb3VudF9idWNrZXQgKGkrMSkgYiAoYWNjdSArIChpZiBjaGVjayBiIGkgdGhlbiAxIGVsc2UgMCkpXG5cblxuICBsZXQgY291bnQgdCA9XG4gICAgQXJyYXkuZm9sZF9yaWdodCAoY291bnRfYnVja2V0IDApIHQudGFibGUgMFxuXG5cbiAgbGV0IG5leHRfc3ogbiA9IEludC5taW4gKDMgKiBuIC8gMiArIDMpIFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gIGxldCBwcmV2X3N6IG4gPSAoKG4gLSAzKSAqIDIgKyAyKSAvIDNcblxuICBsZXQgdGVzdF9zaHJpbmtfYnVja2V0IHQgPVxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLih0LnJvdmVyKSBpblxuICAgIGxldCBoYnVja2V0ID0gdC5oYXNoZXMuKHQucm92ZXIpIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcHJldl9sZW4gPSBwcmV2X3N6IGxlbiBpblxuICAgIGxldCBsaXZlID0gY291bnRfYnVja2V0IDAgYnVja2V0IDAgaW5cbiAgICBpZiBsaXZlIDw9IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWMgbG9vcCBpIGogPVxuICAgICAgICBpZiBqID49IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGxvb3AgKGkgKyAxKSBqXG4gICAgICAgICAgZWxzZSBpZiBjaGVjayBidWNrZXQgaiB0aGVuIGJlZ2luXG4gICAgICAgICAgICBibGl0IGJ1Y2tldCBqIGJ1Y2tldCBpIDE7XG4gICAgICAgICAgICBoYnVja2V0LihpKSA8LSBoYnVja2V0LihqKTtcbiAgICAgICAgICAgIGxvb3AgKGkgKyAxKSAoaiAtIDEpO1xuICAgICAgICAgIGVuZCBlbHNlIGxvb3AgaSAoaiAtIDEpO1xuICAgICAgICBlbmQ7XG4gICAgICBpblxuICAgICAgbG9vcCAwIChsZW5ndGggYnVja2V0IC0gMSk7XG4gICAgICBpZiBwcmV2X2xlbiA9IDAgdGhlbiBiZWdpblxuICAgICAgICB0LnRhYmxlLih0LnJvdmVyKSA8LSBlbXB0eWJ1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIFt8IHxdO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IG5ld2J1Y2tldCA9IHdlYWtfY3JlYXRlIHByZXZfbGVuIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgcHJldl9sZW47XG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIEFycmF5LnN1YiBoYnVja2V0IDAgcHJldl9sZW5cbiAgICAgIGVuZDtcbiAgICAgIGlmIGxlbiA+IHQubGltaXQgJiYgcHJldl9sZW4gPD0gdC5saW1pdCB0aGVuIHQub3ZlcnNpemUgPC0gdC5vdmVyc2l6ZSAtIDE7XG4gICAgZW5kO1xuICAgIHQucm92ZXIgPC0gKHQucm92ZXIgKyAxKSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG5cbiAgbGV0IHJlYyByZXNpemUgdCA9XG4gICAgbGV0IG9sZGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IG5ld2xlbiA9IG5leHRfc3ogb2xkbGVuIGluXG4gICAgaWYgbmV3bGVuID4gb2xkbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCBuZXd0ID0gY3JlYXRlIG5ld2xlbiBpblxuICAgICAgbGV0IGFkZF93ZWFrIG9iIG9oIG9pID1cbiAgICAgICAgbGV0IHNldHRlciBuYiBuaSBfID0gYmxpdCBvYiBvaSBuYiBuaSAxIGluXG4gICAgICAgIGxldCBoID0gb2guKG9pKSBpblxuICAgICAgICBhZGRfYXV4IG5ld3Qgc2V0dGVyIE5vbmUgaCAoZ2V0X2luZGV4IG5ld3QgaCk7XG4gICAgICBpblxuICAgICAgaXRlcl93ZWFrIGFkZF93ZWFrIHQ7XG4gICAgICB0LnRhYmxlIDwtIG5ld3QudGFibGU7XG4gICAgICB0Lmhhc2hlcyA8LSBuZXd0Lmhhc2hlcztcbiAgICAgIHQubGltaXQgPC0gbmV3dC5saW1pdDtcbiAgICAgIHQub3ZlcnNpemUgPC0gbmV3dC5vdmVyc2l6ZTtcbiAgICAgIHQucm92ZXIgPC0gdC5yb3ZlciBtb2QgQXJyYXkubGVuZ3RoIG5ld3QudGFibGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHQubGltaXQgPC0gbWF4X2ludDsgICAgICAgICAgICAgKCogbWF4aW11bSBzaXplIGFscmVhZHkgcmVhY2hlZCAqKVxuICAgICAgdC5vdmVyc2l6ZSA8LSAwO1xuICAgIGVuZFxuXG4gIGFuZCBhZGRfYXV4IHQgc2V0dGVyIGQgaCBpbmRleCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBiZWdpblxuICAgICAgICBsZXQgbmV3c3ogPVxuICAgICAgICAgIEludC5taW4gKDMgKiBzeiAvIDIgKyAzKSAoU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlcylcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbmV3c3ogPD0gc3ogdGhlbiBmYWlsd2l0aCBcIldlYWsuTWFrZTogaGFzaCBidWNrZXQgY2Fubm90IGdyb3cgbW9yZVwiO1xuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgbmV3c3ogaW5cbiAgICAgICAgbGV0IG5ld2hhc2hlcyA9IEFycmF5Lm1ha2UgbmV3c3ogMCBpblxuICAgICAgICBibGl0IGJ1Y2tldCAwIG5ld2J1Y2tldCAwIHN6O1xuICAgICAgICBBcnJheS5ibGl0IGhhc2hlcyAwIG5ld2hhc2hlcyAwIHN6O1xuICAgICAgICBzZXR0ZXIgbmV3YnVja2V0IHN6IGQ7XG4gICAgICAgIG5ld2hhc2hlcy4oc3opIDwtIGg7XG4gICAgICAgIHQudGFibGUuKGluZGV4KSA8LSBuZXdidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLihpbmRleCkgPC0gbmV3aGFzaGVzO1xuICAgICAgICBpZiBzeiA8PSB0LmxpbWl0ICYmIG5ld3N6ID4gdC5saW1pdCB0aGVuIGJlZ2luXG4gICAgICAgICAgdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplICsgMTtcbiAgICAgICAgICBmb3IgX2kgPSAwIHRvIG92ZXJfbGltaXQgZG8gdGVzdF9zaHJpbmtfYnVja2V0IHQgZG9uZTtcbiAgICAgICAgZW5kO1xuICAgICAgICBpZiB0Lm92ZXJzaXplID4gQXJyYXkubGVuZ3RoIHQudGFibGUgLyBvdmVyX2xpbWl0IHRoZW4gcmVzaXplIHQ7XG4gICAgICBlbmQgZWxzZSBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGJlZ2luXG4gICAgICAgIGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0dGVyIGJ1Y2tldCBpIGQ7XG4gICAgICAgIGhhc2hlcy4oaSkgPC0gaDtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IGFkZCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggKGdldF9pbmRleCB0IGgpXG5cbiAgKCogR2VuZXJhbCBhdXhpbGlhcnkgZnVuY3Rpb24gZm9yIHNlYXJjaGluZyBmb3IgYSBwYXJ0aWN1bGFyIHZhbHVlXG4gICAqIGluIGEgaGFzaC1zZXQsIGFuZCBhY3RpbmcgYWNjb3JkaW5nIHRvIHdoZXRoZXIgb3Igbm90IGl0J3MgZm91bmQgKilcblxuICBsZXQgZmluZF9hdXggdCBkIGZvdW5kIG5vdGZvdW5kID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gbm90Zm91bmQgaCBpbmRleFxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IGFzIG9wdCB3aGVuIEguZXF1YWwgdiBkIC0+IGZvdW5kIGJ1Y2tldCBpIG9wdCB2XG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgbGV0IGZpbmRfb3B0IHQgZCA9IGZpbmRfYXV4IHQgZCAoZnVuIF9iIF9pICBvIF92IC0+IG8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfaCBfaSAtPiBOb25lKVxuXG4gIGxldCBtZXJnZSB0IGQgICAgPSBmaW5kX2F1eCB0IGQgKGZ1biBfYiBfaSBfbyAgdiAtPiB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gIGggIGkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggaTsgZClcblxuICBsZXQgZmluZCB0IGQgICAgID0gZmluZF9hdXggdCBkIChmdW4gX2IgX2kgX28gIHYgLT4gdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF9oIF9pIC0+IHJhaXNlIE5vdF9mb3VuZClcblxuICBsZXQgcmVtb3ZlIHQgZCAgID0gZmluZF9hdXggdCBkIChmdW4gIGIgIGkgX28gX3YgLT4gc2V0IGIgaSBOb25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gX2ggX2kgLT4gKCkpXG5cbiAgbGV0IG1lbSB0IGQgICAgICA9IGZpbmRfYXV4IHQgZCAoZnVuIF9iIF9pIF9vIF92IC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfaCBfaSAtPiBmYWxzZSlcblxuICBsZXQgZmluZF9hbGwgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSBhY2N1ID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBhY2N1XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZCAtPiBsb29wIChpICsgMSkgKHYgOjogYWNjdSlcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSkgYWNjdVxuICAgIGluXG4gICAgbG9vcCAwIFtdXG5cbiAgbGV0IHN0YXRzIHQgPVxuICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBsZW5zID0gQXJyYXkubWFwIGxlbmd0aCB0LnRhYmxlIGluXG4gICAgQXJyYXkuc29ydCBjb21wYXJlIGxlbnM7XG4gICAgbGV0IHRvdGxlbiA9IEFycmF5LmZvbGRfbGVmdCAoICsgKSAwIGxlbnMgaW5cbiAgICAobGVuLCBjb3VudCB0LCB0b3RsZW4sIGxlbnMuKDApLCBsZW5zLihsZW4vMiksIGxlbnMuKGxlbi0xKSlcblxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQSBwcmV0dHktcHJpbnRpbmcgZmFjaWxpdHkgYW5kIGRlZmluaXRpb24gb2YgZm9ybWF0dGVycyBmb3IgJ3BhcmFsbGVsJ1xuICAgKGkuZS4gdW5yZWxhdGVkIG9yIGluZGVwZW5kZW50KSBwcmV0dHktcHJpbnRpbmcgb24gbXVsdGlwbGUgb3V0IGNoYW5uZWxzLiAqKVxuXG4oKlxuICAgVGhlIHByZXR0eS1wcmludGluZyBlbmdpbmUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzLlxuKilcblxubGV0IGlkIHggPSB4XG5cbigqIEEgZGV2b3RlZCB0eXBlIGZvciBzaXplcyB0byBhdm9pZCBjb25mdXNpb25cbiAgIGJldHdlZW4gc2l6ZXMgYW5kIG1lcmUgaW50ZWdlcnMuICopXG5tb2R1bGUgU2l6ZSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgdW5rbm93biA6IHRcbiAgdmFsIGlzX2tub3duIDogdCAtPiBib29sXG5lbmQgID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCB0b19pbnQgPSBpZFxuICBsZXQgb2ZfaW50ID0gaWRcbiAgbGV0IHplcm8gPSAwXG4gIGxldCB1bmtub3duID0gLTFcbiAgbGV0IGlzX2tub3duIG4gPSBuID49IDBcbmVuZFxuXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyBib3hlcyBkZWZpbml0aW9uOlxuICAgYSBwcmV0dHktcHJpbnRpbmcgYm94IGlzIGVpdGhlclxuICAgLSBoYm94OiBob3Jpem9udGFsIGJveCAobm8gbGluZSBzcGxpdHRpbmcpXG4gICAtIHZib3g6IHZlcnRpY2FsIGJveCAoZXZlcnkgYnJlYWsgaGludCBzcGxpdHMgdGhlIGxpbmUpXG4gICAtIGh2Ym94OiBob3Jpem9udGFsL3ZlcnRpY2FsIGJveFxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgYm94IGlmIGl0IGZpdHMgb25cbiAgICAgIHRoZSBjdXJyZW50IGxpbmUsIG90aGVyd2lzZSB0aGUgYm94IGJlaGF2ZXMgYXMgYSB2ZXJ0aWNhbCBib3gpXG4gICAtIGhvdmJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveFxuICAgICAodGhlIGJveCBpcyBjb21wYWN0aW5nIG1hdGVyaWFsLCBwcmludGluZyBhcyBtdWNoIG1hdGVyaWFsIGFzIHBvc3NpYmxlXG4gICAgICBvbiBldmVyeSBsaW5lcylcbiAgIC0gYm94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94IHdpdGggZW5oYW5jZWQgYm94IHN0cnVjdHVyZVxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgb3IgdmVydGljYWwgYm94IGJ1dCBicmVhayBoaW50cyBzcGxpdFxuICAgICAgdGhlIGxpbmUgaWYgc3BsaXR0aW5nIHdvdWxkIG1vdmUgdG8gdGhlIGxlZnQpXG4qKVxudHlwZSBib3hfdHlwZSA9IENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5ibG9ja190eXBlID1cbiAgfCBQcF9oYm94IHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0c1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgdG9rZW5zIGRlZmluaXRpb246XG4gICBhcmUgZWl0aGVyIHRleHQgdG8gcHJpbnQgb3IgcHJldHR5IHByaW50aW5nXG4gICBlbGVtZW50cyB0aGF0IGRyaXZlIGluZGVudGF0aW9uIGFuZCBsaW5lIHNwbGl0dGluZy4gKilcbnR5cGUgcHBfdG9rZW4gPVxuICB8IFBwX3RleHQgb2Ygc3RyaW5nICAgICAgICAgICgqIG5vcm1hbCB0ZXh0ICopXG4gIHwgUHBfYnJlYWsgb2YgeyAgICAgICAgICAgICAgKCogY29tcGxldGUgYnJlYWsgKilcbiAgICAgIGZpdHM6IHN0cmluZyAqIGludCAqIHN0cmluZzsgICAoKiBsaW5lIGlzIG5vdCBzcGxpdCAqKVxuICAgICAgYnJlYWtzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICgqIGxpbmUgaXMgc3BsaXQgKilcbiAgICB9XG4gIHwgUHBfdGJyZWFrIG9mIGludCAqIGludCAgICAgKCogZ28gdG8gbmV4dCB0YWJ1bGF0aW9uICopXG4gIHwgUHBfc3RhYiAgICAgICAgICAgICAgICAgICAgKCogc2V0IGEgdGFidWxhdGlvbiAqKVxuICB8IFBwX2JlZ2luIG9mIGludCAqIGJveF90eXBlICgqIGJlZ2lubmluZyBvZiBhIGJveCAqKVxuICB8IFBwX2VuZCAgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIGJveCAqKVxuICB8IFBwX3RiZWdpbiBvZiB0Ym94ICAgICAgICAgICgqIGJlZ2lubmluZyBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfdGVuZCAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF9uZXdsaW5lICAgICAgICAgICAgICAgICAoKiB0byBmb3JjZSBhIG5ld2xpbmUgaW5zaWRlIGEgYm94ICopXG4gIHwgUHBfaWZfbmV3bGluZSAgICAgICAgICAgICAgKCogdG8gZG8gc29tZXRoaW5nIG9ubHkgaWYgdGhpcyB2ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSBoYXMgYmVlbiBicm9rZW4gKilcbiAgfCBQcF9vcGVuX3RhZyBvZiBzdGFnICAgICAgICAgKCogb3BlbmluZyBhIHRhZyBuYW1lICopXG4gIHwgUHBfY2xvc2VfdGFnICAgICAgICAgICAgICAgKCogY2xvc2luZyB0aGUgbW9zdCByZWNlbnRseSBvcGVuIHRhZyAqKVxuXG5hbmQgc3RhZyA9IC4uXG5cbmFuZCB0Ym94ID0gUHBfdGJveCBvZiBpbnQgbGlzdCByZWYgICgqIFRhYnVsYXRpb24gYm94ICopXG5cbnR5cGUgdGFnID0gc3RyaW5nXG50eXBlIHN0YWcgKz0gU3RyaW5nX3RhZyBvZiB0YWdcblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWU6XG4gICBwcmV0dHktcHJpbnRpbmcgbWF0ZXJpYWwgaXMgbm90IHdyaXR0ZW4gaW4gdGhlIG91dHB1dCBhcyBzb29uIGFzIGVtaXR0ZWQ7XG4gICBpbnN0ZWFkLCB0aGUgbWF0ZXJpYWwgaXMgc2ltcGx5IHJlY29yZGVkIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSxcbiAgIHVudGlsIHRoZSBlbmNsb3NpbmcgYm94IGhhcyBhIGtub3duIGNvbXB1dGVkIHNpemUgYW5kIHByb3BlciBzcGxpdHRpbmdcbiAgIGRlY2lzaW9ucyBjYW4gYmUgbWFkZS5cblxuICAgVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGNvbnRhaW5zIGZvcm1hdHRpbmcgZWxlbWVudHMgdG8gYmUgcHJpbnRlZC5cbiAgIEVhY2ggZm9ybWF0dGluZyBlbGVtZW50IGlzIGEgdHVwbGUgKHNpemUsIHRva2VuLCBsZW5ndGgpLCB3aGVyZVxuICAgLSBsZW5ndGggaXMgdGhlIGRlY2xhcmVkIGxlbmd0aCBvZiB0aGUgdG9rZW4sXG4gICAtIHNpemUgaXMgZWZmZWN0aXZlIHNpemUgb2YgdGhlIHRva2VuIHdoZW4gaXQgaXMgcHJpbnRlZFxuICAgICAoc2l6ZSBpcyBzZXQgd2hlbiB0aGUgc2l6ZSBvZiB0aGUgYm94IGlzIGtub3duLCBzbyB0aGF0IHNpemUgb2YgYnJlYWtcbiAgICAgIGhpbnRzIGFyZSBkZWZpbml0aXZlKS4gKilcbnR5cGUgcHBfcXVldWVfZWxlbSA9IHtcbiAgbXV0YWJsZSBzaXplIDogU2l6ZS50O1xuICB0b2tlbiA6IHBwX3Rva2VuO1xuICBsZW5ndGggOiBpbnQ7XG59XG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGRlZmluaXRpb24uICopXG50eXBlIHBwX3F1ZXVlID0gcHBfcXVldWVfZWxlbSBRdWV1ZS50XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrOiBzY2FubmluZyBlbGVtZW50IGRlZmluaXRpb24uICopXG50eXBlIHBwX3NjYW5fZWxlbSA9IHtcbiAgbGVmdF90b3RhbCA6IGludDsgKCogVmFsdWUgb2YgcHBfbGVmdF90b3RhbCB3aGVuIHRoZSBlbGVtZW50IHdhcyBlbnF1ZXVlZC4gKilcbiAgcXVldWVfZWxlbSA6IHBwX3F1ZXVlX2VsZW1cbn1cblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6XG4gICB0aGUgZm9ybWF0dGluZyBzdGFjayBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgYWxsIHRoZSBjdXJyZW50bHkgYWN0aXZlXG4gICBib3hlczsgdGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2sgaXMgdXNlZCB0byBzcGxpdCB0aGUgbGluZXNcbiAgIHdoaWxlIHByaW50aW5nIHRva2Vucy4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6IGZvcm1hdHRpbmcgc3RhY2sgZWxlbWVudCBkZWZpbml0aW9uLlxuICAgRWFjaCBzdGFjayBlbGVtZW50IGRlc2NyaWJlcyBhIHByZXR0eS1wcmludGluZyBib3guICopXG50eXBlIHBwX2Zvcm1hdF9lbGVtID0geyBib3hfdHlwZSA6IGJveF90eXBlOyB3aWR0aCA6IGludCB9XG5cbigqIFRoZSBmb3JtYXR0ZXIgZGVmaW5pdGlvbi5cbiAgIEVhY2ggZm9ybWF0dGVyIHZhbHVlIGlzIGEgcHJldHR5LXByaW50ZXIgaW5zdGFuY2Ugd2l0aCBhbGwgaXRzXG4gICBtYWNoaW5lcnkuICopXG50eXBlIGZvcm1hdHRlciA9IHtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuICBwcF9zY2FuX3N0YWNrIDogcHBfc2Nhbl9lbGVtIFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrLiAqKVxuICBwcF9mb3JtYXRfc3RhY2sgOiBwcF9mb3JtYXRfZWxlbSBTdGFjay50O1xuICBwcF90Ym94X3N0YWNrIDogdGJveCBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2VtYW50aWNzIHRhZyBzdGFjay4gKilcbiAgcHBfdGFnX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICBwcF9tYXJrX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICAoKiBWYWx1ZSBvZiByaWdodCBtYXJnaW4uICopXG4gIG11dGFibGUgcHBfbWFyZ2luIDogaW50O1xuICAoKiBNaW5pbWFsIHNwYWNlIGxlZnQgYmVmb3JlIG1hcmdpbiwgd2hlbiBvcGVuaW5nIGEgYm94LiAqKVxuICBtdXRhYmxlIHBwX21pbl9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBNYXhpbXVtIHZhbHVlIG9mIGluZGVudGF0aW9uOlxuICAgICBubyBib3ggY2FuIGJlIG9wZW5lZCBmdXJ0aGVyLiAqKVxuICBtdXRhYmxlIHBwX21heF9pbmRlbnQgOiBpbnQ7XG4gICgqIFNwYWNlIHJlbWFpbmluZyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxuICBtdXRhYmxlIHBwX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIEN1cnJlbnQgdmFsdWUgb2YgaW5kZW50YXRpb24uICopXG4gIG11dGFibGUgcHBfY3VycmVudF9pbmRlbnQgOiBpbnQ7XG4gICgqIFRydWUgd2hlbiB0aGUgbGluZSBoYXMgYmVlbiBicm9rZW4gYnkgdGhlIHByZXR0eS1wcmludGVyLiAqKVxuICBtdXRhYmxlIHBwX2lzX25ld19saW5lIDogYm9vbDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGFscmVhZHkgcHJpbnRlZC4gKilcbiAgbXV0YWJsZSBwcF9sZWZ0X3RvdGFsIDogaW50O1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgZXZlciBwdXQgaW4gcXVldWUuICopXG4gIG11dGFibGUgcHBfcmlnaHRfdG90YWwgOiBpbnQ7XG4gICgqIEN1cnJlbnQgbnVtYmVyIG9mIG9wZW4gYm94ZXMuICopXG4gIG11dGFibGUgcHBfY3Vycl9kZXB0aCA6IGludDtcbiAgKCogTWF4aW11bSBudW1iZXIgb2YgYm94ZXMgd2hpY2ggY2FuIGJlIHNpbXVsdGFuZW91c2x5IG9wZW4uICopXG4gIG11dGFibGUgcHBfbWF4X2JveGVzIDogaW50O1xuICAoKiBFbGxpcHNpcyBzdHJpbmcuICopXG4gIG11dGFibGUgcHBfZWxsaXBzaXMgOiBzdHJpbmc7XG4gICgqIE91dHB1dCBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgKCogRmx1c2hpbmcgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgYnJlYWsgaGludHMgc3BhY2VzLiAqKVxuICBtdXRhYmxlIHBwX291dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG4gICgqIEFyZSB0YWdzIHByaW50ZWQgPyAqKVxuICBtdXRhYmxlIHBwX3ByaW50X3RhZ3MgOiBib29sO1xuICAoKiBBcmUgdGFncyBtYXJrZWQgPyAqKVxuICBtdXRhYmxlIHBwX21hcmtfdGFncyA6IGJvb2w7XG4gICgqIEZpbmQgb3BlbmluZyBhbmQgY2xvc2luZyBtYXJrZXJzIG9mIHRhZ3MuICopXG4gIG11dGFibGUgcHBfbWFya19vcGVuX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX21hcmtfY2xvc2VfdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfcHJpbnRfb3Blbl90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIG11dGFibGUgcHBfcHJpbnRfY2xvc2VfdGFnIDogc3RhZyAtPiB1bml0O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG4gIHBwX3F1ZXVlIDogcHBfcXVldWU7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBzcGVjaWZpYyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zLiAqKVxudHlwZSBmb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPSB7XG4gIG1hcmtfb3Blbl9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBwcmludF9vcGVuX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIHByaW50X2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBmdW5jdGlvbnMgdG8gb3V0cHV0IG1hdGVyaWFsLiAqKVxudHlwZSBmb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9IHtcbiAgb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gIG91dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xufVxuXG5cbigqXG5cbiAgQXV4aWxpYXJpZXMgYW5kIGJhc2ljIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRW50ZXIgYSB0b2tlbiBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbiA9XG4gIHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgdG9rZW4ubGVuZ3RoO1xuICBRdWV1ZS5hZGQgdG9rZW4gc3RhdGUucHBfcXVldWVcblxuXG5sZXQgcHBfY2xlYXJfcXVldWUgc3RhdGUgPVxuICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIDE7IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIDE7XG4gIFF1ZXVlLmNsZWFyIHN0YXRlLnBwX3F1ZXVlXG5cblxuKCogUHBfaW5maW5pdHk6IGxhcmdlIHZhbHVlIGZvciBkZWZhdWx0IHRva2VucyBzaXplLlxuXG4gICBQcF9pbmZpbml0eSBpcyBkb2N1bWVudGVkIGFzIGJlaW5nIGdyZWF0ZXIgdGhhbiAxZTEwOyB0byBhdm9pZFxuICAgY29uZnVzaW9uIGFib3V0IHRoZSB3b3JkICdncmVhdGVyJywgd2UgY2hvb3NlIHBwX2luZmluaXR5IGdyZWF0ZXJcbiAgIHRoYW4gMWUxMCArIDE7IGZvciBjb3JyZWN0IGhhbmRsaW5nIG9mIHRlc3RzIGluIHRoZSBhbGdvcml0aG0sXG4gICBwcF9pbmZpbml0eSBtdXN0IGJlIGV2ZW4gb25lIG1vcmUgdGhhbiAxZTEwICsgMTsgbGV0J3Mgc3RhbmQgb24gdGhlXG4gICBzYWZlIHNpZGUgYnkgY2hvb3NpbmcgMS5lMTArMTAuXG5cbiAgIFBwX2luZmluaXR5IGNvdWxkIHByb2JhYmx5IGJlIDEwNzM3NDE4MjMgdGhhdCBpcyAyXjMwIC0gMSwgdGhhdCBpc1xuICAgdGhlIG1pbmltYWwgdXBwZXIgYm91bmQgZm9yIGludGVnZXJzOyBub3cgdGhhdCBtYXhfaW50IGlzIGRlZmluZWQsXG4gICB0aGlzIGxpbWl0IGNvdWxkIGFsc28gYmUgZGVmaW5lZCBhcyBtYXhfaW50IC0gMS5cblxuICAgSG93ZXZlciwgYmVmb3JlIHNldHRpbmcgcHBfaW5maW5pdHkgdG8gc29tZXRoaW5nIGFyb3VuZCBtYXhfaW50LCB3ZVxuICAgbXVzdCBjYXJlZnVsbHkgZG91YmxlLWNoZWNrIGFsbCB0aGUgaW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnNcbiAgIHRoYXQgaW52b2x2ZSBwcF9pbmZpbml0eSwgc2luY2UgYW55IG92ZXJmbG93IHdvdWxkIHdyZWNrIGhhdm9jIHRoZVxuICAgcHJldHR5LXByaW50aW5nIGFsZ29yaXRobSdzIGludmFyaWFudHMuIEdpdmVuIHRoYXQgdGhpcyBhcml0aG1ldGljXG4gICBjb3JyZWN0bmVzcyBjaGVjayBpcyBkaWZmaWN1bHQgYW5kIGVycm9yIHByb25lIGFuZCBnaXZlbiB0aGF0IDFlMTBcbiAgICsgMSBpcyBpbiBwcmFjdGljZSBsYXJnZSBlbm91Z2gsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYXR0ZW1wdCB0byBzZXRcbiAgIHBwX2luZmluaXR5IHRvIHRoZSB0aGVvcmV0aWNhbGx5IG1heGltdW0gbGltaXQuIEl0IGlzIG5vdCB3b3J0aCB0aGVcbiAgIGJ1cmRlbiAhICopXG5sZXQgcHBfaW5maW5pdHkgPSAxMDAwMDAwMDEwXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgZm9yIHRoZSBmb3JtYXR0ZXIuICopXG5sZXQgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBzID0gc3RhdGUucHBfb3V0X3N0cmluZyBzIDAgKFN0cmluZy5sZW5ndGggcylcbmFuZCBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lICgpXG5hbmQgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X3NwYWNlcyBuXG5hbmQgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X2luZGVudCBuXG5cbigqIEZvcm1hdCBhIHRleHR1YWwgdG9rZW4gKilcbmxldCBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHRleHQgPVxuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBzaXplO1xuICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHRleHQ7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIGZhbHNlXG5cbigqIEZvcm1hdCBhIHN0cmluZyBieSBpdHMgbGVuZ3RoLCBpZiBub3QgZW1wdHkgKilcbmxldCBmb3JtYXRfc3RyaW5nIHN0YXRlIHMgPVxuICBpZiBzIDw+IFwiXCIgdGhlbiBmb3JtYXRfcHBfdGV4dCBzdGF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBzXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrLCBpbmRlbnRpbmcgYSBuZXcgbGluZS4gKilcbmxldCBicmVha19uZXdfbGluZSBzdGF0ZSAoYmVmb3JlLCBvZmZzZXQsIGFmdGVyKSB3aWR0aCA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gdHJ1ZTtcbiAgbGV0IGluZGVudCA9IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2Zmc2V0IGluXG4gICgqIERvbid0IGluZGVudCBtb3JlIHRoYW4gcHBfbWF4X2luZGVudC4gKilcbiAgbGV0IHJlYWxfaW5kZW50ID0gSW50Lm1pbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGluZGVudCBpblxuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSByZWFsX2luZGVudDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGZvcmNlIGEgbGluZSBicmVhayBpbnNpZGUgYSBib3g6IG5vIG9mZnNldCBpcyBhZGRlZC4gKilcbmxldCBicmVha19saW5lIHN0YXRlIHdpZHRoID0gYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIDAsIFwiXCIpIHdpZHRoXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrIHRoYXQgZml0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoYmVmb3JlLCB3aWR0aCwgYWZ0ZXIpID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHdpZHRoO1xuICBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIHdpZHRoO1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gaW5kZW50IG5vIG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LCBpZiBvbmUgdHJpZXMgdG8gb3BlbiBhIGJveFxuICAgYmV5b25kIHBwX21heF9pbmRlbnQsIHRoZW4gdGhlIGJveCBpcyByZWplY3RlZCBvbiB0aGUgbGVmdFxuICAgYnkgc2ltdWxhdGluZyBhIGJyZWFrLiAqKVxubGV0IHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZVxuICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgIGlmIHdpZHRoID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuXG4gICAgICBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2ZpdHMgfCBQcF9oYm94IC0+ICgpXG4gICAgICB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG5cblxuKCogVG8gc2tpcCBhIHRva2VuLCBpZiB0aGUgcHJldmlvdXMgbGluZSBoYXMgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfc2tpcF90b2tlbiBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnRha2Vfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHByaW50X2lmX25ld2xpbmUgbXVzdCBoYXZlIGJlZW4gdGhlIGxhc3QgcHJpbnRpbmcgY29tbWFuZCAqKVxuICB8IFNvbWUgeyBzaXplOyBsZW5ndGg7IF8gfSAtPlxuICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gc3RhdGUucHBfbGVmdF90b3RhbCAtIGxlbmd0aDtcbiAgICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgKyBTaXplLnRvX2ludCBzaXplXG5cblxuKCpcblxuICBUaGUgbWFpbiBwcmV0dHkgcHJpbnRpbmcgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBGb3JtYXR0aW5nIGEgdG9rZW4gd2l0aCBhIGdpdmVuIHNpemUuICopXG5sZXQgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgPSBmdW5jdGlvblxuXG4gIHwgUHBfdGV4dCBzIC0+XG4gICAgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSBzXG5cbiAgfCBQcF9iZWdpbiAob2ZmLCB0eSkgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGlmIGluc2VydGlvbl9wb2ludCA+IHN0YXRlLnBwX21heF9pbmRlbnQgdGhlblxuICAgICAgKCogY2FuIG5vdCBvcGVuIGEgYm94IHJpZ2h0IHRoZXJlLiAqKVxuICAgICAgYmVnaW4gcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSBlbmQ7XG4gICAgbGV0IHdpZHRoID0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIG9mZiBpblxuICAgIGxldCBib3hfdHlwZSA9XG4gICAgICBtYXRjaCB0eSB3aXRoXG4gICAgICB8IFBwX3Zib3ggLT4gUHBfdmJveFxuICAgICAgfCBQcF9oYm94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzIC0+XG4gICAgICAgIGlmIHNpemUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gdHkgZWxzZSBQcF9maXRzIGluXG4gICAgU3RhY2sucHVzaCB7IGJveF90eXBlOyB3aWR0aCB9IHN0YXRlLnBwX2Zvcm1hdF9zdGFja1xuXG4gIHwgUHBfZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF90YmVnaW4gKFBwX3Rib3ggXyBhcyB0Ym94KSAtPlxuICAgIFN0YWNrLnB1c2ggdGJveCBzdGF0ZS5wcF90Ym94X3N0YWNrXG5cbiAgfCBQcF90ZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfc3RhYiAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgcmVjIGFkZF90YWIgbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gW25dXG4gICAgICAgIHwgeCA6OiBsIGFzIGxzIC0+IGlmIG4gPCB4IHRoZW4gbiA6OiBscyBlbHNlIHggOjogYWRkX3RhYiBuIGwgaW5cbiAgICAgIHRhYnMgOj0gYWRkX3RhYiAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCkgIXRhYnNcbiAgICBlbmRcblxuICB8IFBwX3RicmVhayAobiwgb2ZmKSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCB0YWIgPVxuICAgICAgICBtYXRjaCAhdGFicyB3aXRoXG4gICAgICAgIHwgW10gLT4gaW5zZXJ0aW9uX3BvaW50XG4gICAgICAgIHwgZmlyc3QgOjogXyAtPlxuICAgICAgICAgIGxldCByZWMgZmluZCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgICAgICBpZiBoZWFkID49IGluc2VydGlvbl9wb2ludCB0aGVuIGhlYWQgZWxzZSBmaW5kIHRhaWxcbiAgICAgICAgICAgIHwgW10gLT4gZmlyc3QgaW5cbiAgICAgICAgICBmaW5kICF0YWJzIGluXG4gICAgICBsZXQgb2Zmc2V0ID0gdGFiIC0gaW5zZXJ0aW9uX3BvaW50IGluXG4gICAgICBpZiBvZmZzZXQgPj0gMFxuICAgICAgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgKFwiXCIsIG9mZnNldCArIG4sIFwiXCIpXG4gICAgICBlbHNlIGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCB0YWIgKyBvZmYsIFwiXCIpIHN0YXRlLnBwX21hcmdpblxuICAgIGVuZFxuXG4gIHwgUHBfbmV3bGluZSAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgd2lkdGg7IF99IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcbiAgICBlbmRcblxuICB8IFBwX2lmX25ld2xpbmUgLT5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCAhPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgdGhlbiBwcF9za2lwX3Rva2VuIHN0YXRlXG5cbiAgfCBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IC0+XG4gICAgbGV0IGJlZm9yZSwgb2ZmLCBfID0gYnJlYWtzIGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9ob3Zib3ggLT5cbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2JveCAtPlxuICAgICAgICAoKiBIYXZlIHRoZSBsaW5lIGp1c3QgYmVlbiBicm9rZW4gaGVyZSA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2lzX25ld19saW5lIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHMgZWxzZVxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGggZWxzZVxuICAgICAgICAoKiBicmVhayB0aGUgbGluZSBoZXJlIGxlYWRzIHRvIG5ldyBpbmRlbnRhdGlvbiA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ID4gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9odmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfZml0cyAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF92Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9oYm94IC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgfCBQcF9vcGVuX3RhZyB0YWdfbmFtZSAtPlxuICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlcjtcbiAgICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF9tYXJrX3N0YWNrXG5cbiAgIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgIGJlZ2luIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfbWFya19zdGFjayB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIHRhZ19uYW1lIGluXG4gICAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXJcbiAgICAgZW5kXG5cblxuKCogUHJpbnQgaWYgdG9rZW4gc2l6ZSBpcyBrbm93biBlbHNlIHByaW50aW5nIGlzIGRlbGF5ZWQuXG4gICBQcmludGluZyBpcyBkZWxheWVkIHdoZW4gdGhlIHRleHQgd2FpdGluZyBpbiB0aGUgcXVldWUgcmVxdWlyZXNcbiAgIG1vcmUgcm9vbSB0byBmb3JtYXQgdGhhbiBleGlzdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCByZWMgYWR2YW5jZV9sZWZ0IHN0YXRlID1cbiAgbWF0Y2ggUXVldWUucGVla19vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogTm8gdG9rZW5zIHRvIHByaW50ICopXG4gIHwgU29tZSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSAtPlxuICAgIGxldCBwZW5kaW5nX2NvdW50ID0gc3RhdGUucHBfcmlnaHRfdG90YWwgLSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIGluXG4gICAgaWYgU2l6ZS5pc19rbm93biBzaXplIHx8IHBlbmRpbmdfY291bnQgPj0gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIGJlZ2luXG4gICAgICBRdWV1ZS50YWtlIHN0YXRlLnBwX3F1ZXVlIHw+IGlnbm9yZTsgKCogTm90IGVtcHR5OiB3ZSBwZWVrIGludG8gaXQgKilcbiAgICAgIGxldCBzaXplID0gaWYgU2l6ZS5pc19rbm93biBzaXplIHRoZW4gU2l6ZS50b19pbnQgc2l6ZSBlbHNlIHBwX2luZmluaXR5IGluXG4gICAgICBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSB0b2tlbjtcbiAgICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gbGVuZ3RoICsgc3RhdGUucHBfbGVmdF90b3RhbDtcbiAgICAgIChhZHZhbmNlX2xlZnQgW0B0YWlsY2FsbF0pIHN0YXRlXG4gICAgZW5kXG5cblxuKCogVG8gZW5xdWV1ZSBhIHRva2VuIDogdHJ5IHRvIGFkdmFuY2UuICopXG5sZXQgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHRvayA9IHBwX2VucXVldWUgc3RhdGUgdG9rOyBhZHZhbmNlX2xlZnQgc3RhdGVcblxuXG4oKiBUbyBlbnF1ZXVlIHN0cmluZ3MuICopXG5sZXQgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzID1cbiAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZTsgdG9rZW4gPSBQcF90ZXh0IHM7IGxlbmd0aCA9IFNpemUudG9faW50IHNpemUgfVxuXG5cbmxldCBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzID1cbiAgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgKFNpemUub2ZfaW50IChTdHJpbmcubGVuZ3RoIHMpKSBzXG5cblxuKCogUm91dGluZXMgZm9yIHNjYW4gc3RhY2tcbiAgIGRldGVybWluZSBzaXplIG9mIGJveGVzLiAqKVxuXG4oKiBUaGUgc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbmxldCBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhY2sgPVxuICBTdGFjay5jbGVhciBzdGFjaztcbiAgbGV0IHF1ZXVlX2VsZW0gPSB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfdGV4dCBcIlwiOyBsZW5ndGggPSAwIH0gaW5cbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAtMTsgcXVldWVfZWxlbSB9IHN0YWNrXG5cbigqIFNldHRpbmcgdGhlIHNpemUgb2YgYm94ZXMgb24gc2NhbiBzdGFjazpcbiAgIGlmIHR5ID0gdHJ1ZSB0aGVuIHNpemUgb2YgYnJlYWsgaXMgc2V0IGVsc2Ugc2l6ZSBvZiBib3ggaXMgc2V0O1xuICAgaW4gZWFjaCBjYXNlIHBwX3NjYW5fc3RhY2sgaXMgcG9wcGVkLlxuXG4gICBOb3RlOlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiBzY2FuIHN0YWNrIGlzIGV4aGF1c3RpdmUsIHNpbmNlIHNjYW5fc3RhY2sgaXMgbmV2ZXJcbiAgIGVtcHR5LlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiB0b2tlbiBpbiBzY2FuIHN0YWNrIGlzIGFsc28gZXhoYXVzdGl2ZSxcbiAgIHNpbmNlIHNjYW5fcHVzaCBpcyB1c2VkIG9uIGJyZWFrcyBhbmQgb3BlbmluZyBvZiBib3hlcy4gKilcbmxldCBzZXRfc2l6ZSBzdGF0ZSB0eSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxuICB8IFNvbWUgeyBsZWZ0X3RvdGFsOyBxdWV1ZV9lbGVtIH0gLT5cbiAgICBsZXQgc2l6ZSA9IFNpemUudG9faW50IHF1ZXVlX2VsZW0uc2l6ZSBpblxuICAgICgqIHRlc3QgaWYgc2NhbiBzdGFjayBjb250YWlucyBhbnkgZGF0YSB0aGF0IGlzIG5vdCBvYnNvbGV0ZS4gKilcbiAgICBpZiBsZWZ0X3RvdGFsIDwgc3RhdGUucHBfbGVmdF90b3RhbCB0aGVuXG4gICAgICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFja1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIHF1ZXVlX2VsZW0udG9rZW4gd2l0aFxuICAgICAgfCBQcF9icmVhayBfIHwgUHBfdGJyZWFrIChfLCBfKSAtPlxuICAgICAgICBpZiB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX2JlZ2luIChfLCBfKSAtPlxuICAgICAgICBpZiBub3QgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF90ZXh0IF8gfCBQcF9zdGFiIHwgUHBfdGJlZ2luIF8gfCBQcF90ZW5kIHwgUHBfZW5kXG4gICAgICB8IFBwX25ld2xpbmUgfCBQcF9pZl9uZXdsaW5lIHwgUHBfb3Blbl90YWcgXyB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICAgICAoKSAoKiBzY2FuX3B1c2ggaXMgb25seSB1c2VkIGZvciBicmVha3MgYW5kIGJveGVzLiAqKVxuXG5cbigqIFB1c2ggYSB0b2tlbiBvbiBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay5cbiAgIElmIGIgaXMgdHJ1ZSBzZXRfc2l6ZSBpcyBjYWxsZWQuICopXG5sZXQgc2Nhbl9wdXNoIHN0YXRlIGIgdG9rZW4gPVxuICBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuO1xuICBpZiBiIHRoZW4gc2V0X3NpemUgc3RhdGUgdHJ1ZTtcbiAgbGV0IGVsZW0gPSB7IGxlZnRfdG90YWwgPSBzdGF0ZS5wcF9yaWdodF90b3RhbDsgcXVldWVfZWxlbSA9IHRva2VuIH0gaW5cbiAgU3RhY2sucHVzaCBlbGVtIHN0YXRlLnBwX3NjYW5fc3RhY2tcblxuXG4oKiBUbyBvcGVuIGEgbmV3IGJveCA6XG4gICB0aGUgdXNlciBtYXkgc2V0IHRoZSBkZXB0aCBib3VuZCBwcF9tYXhfYm94ZXNcbiAgIGFueSB0ZXh0IG5lc3RlZCBkZWVwZXIgaXMgcHJpbnRlZCBhcyB0aGUgZWxsaXBzaXMgc3RyaW5nLiAqKVxubGV0IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgYnJfdHkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX2JlZ2luIChpbmRlbnQsIGJyX3R5KTsgbGVuZ3RoID0gMCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIGZhbHNlIGVsZW0gZWxzZVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmcgc3RhdGUgc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUaGUgYm94IHdoaWNoIGlzIGFsd2F5cyBvcGVuLiAqKVxubGV0IHBwX29wZW5fc3lzX2JveCBzdGF0ZSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hvdmJveFxuXG4oKiBDbG9zZSBhIGJveCwgc2V0dGluZyBzaXplcyBvZiBpdHMgc3ViIGJveGVzLiAqKVxubGV0IHBwX2Nsb3NlX2JveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBiZWdpblxuICAgICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfZW5kOyBsZW5ndGggPSAwIH07XG4gICAgICBzZXRfc2l6ZSBzdGF0ZSB0cnVlOyBzZXRfc2l6ZSBzdGF0ZSBmYWxzZVxuICAgIGVuZDtcbiAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxO1xuICBlbmRcblxuXG4oKiBPcGVuIGEgdGFnLCBwdXNoaW5nIGl0IG9uIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfb3Blbl9zdGFnIHN0YXRlIHRhZ19uYW1lID1cbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gIGJlZ2luXG4gICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gICAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgdGFnX25hbWVcbiAgZW5kO1xuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIGxldCB0b2tlbiA9IFBwX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuOyBsZW5ndGggPSAwIH1cblxuXG4oKiBDbG9zZSBhIHRhZywgcG9wcGluZyBpdCBmcm9tIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfY2xvc2VfdGFnOyBsZW5ndGggPSAwIH07XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICAgIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGFnX3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgdGFnX25hbWVcblxubGV0IHBwX3NldF9wcmludF90YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9wcmludF90YWdzIDwtIGJcbmxldCBwcF9zZXRfbWFya190YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9tYXJrX3RhZ3MgPC0gYlxubGV0IHBwX2dldF9wcmludF90YWdzIHN0YXRlICgpID0gc3RhdGUucHBfcHJpbnRfdGFnc1xubGV0IHBwX2dldF9tYXJrX3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJrX3RhZ3NcbmxldCBwcF9zZXRfdGFncyBzdGF0ZSBiID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYjsgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiXG5cblxuKCogSGFuZGxpbmcgdGFnIGhhbmRsaW5nIGZ1bmN0aW9uczogZ2V0L3NldCBmdW5jdGlvbnMuICopXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgbWFya19vcGVuX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnO1xuICBtYXJrX2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZztcbiAgcHJpbnRfb3Blbl9zdGFnID0gc3RhdGUucHBfcHJpbnRfb3Blbl90YWc7XG4gIHByaW50X2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWc7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fc3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV9zdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3N0YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3N0YWcgPSBwY3Q7XG4gIH0gPVxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIG1vdDtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gbWN0O1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBwb3Q7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBwY3RcblxuXG4oKiBJbml0aWFsaXplIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX3Jpbml0IHN0YXRlID1cbiAgcHBfY2xlYXJfcXVldWUgc3RhdGU7XG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9mb3JtYXRfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3Rib3hfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfbWFya19zdGFjaztcbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gMDtcbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSAwO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbjtcbiAgcHBfb3Blbl9zeXNfYm94IHN0YXRlXG5cbmxldCBjbGVhcl90YWdfc3RhY2sgc3RhdGUgPVxuICBTdGFjay5pdGVyIChmdW4gXyAtPiBwcF9jbG9zZV9zdGFnIHN0YXRlICgpKSBzdGF0ZS5wcF90YWdfc3RhY2tcblxuXG4oKiBGbHVzaGluZyBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB+ZW5kX3dpdGhfbmV3bGluZSA9XG4gIGNsZWFyX3RhZ19zdGFjayBzdGF0ZTtcbiAgd2hpbGUgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgZG9cbiAgICBwcF9jbG9zZV9ib3ggc3RhdGUgKClcbiAgZG9uZTtcbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gcHBfaW5maW5pdHk7XG4gIGFkdmFuY2VfbGVmdCBzdGF0ZTtcbiAgaWYgZW5kX3dpdGhfbmV3bGluZSB0aGVuIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBwcF9yaW5pdCBzdGF0ZVxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gZm9ybWF0IHZhbHVlcyBhbmQgdXNlIGJveGVzLlxuXG4qKVxuXG4oKiBUbyBmb3JtYXQgYSBzdHJpbmcuICopXG5sZXQgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzXG5cblxubGV0IHBwX3ByaW50X2FzIHN0YXRlIGlzaXplIHMgPVxuICBwcF9wcmludF9hc19zaXplIHN0YXRlIChTaXplLm9mX2ludCBpc2l6ZSkgc1xuXG5cbmxldCBwcF9wcmludF9zdHJpbmcgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxubGV0IHBwX3ByaW50X2J5dGVzIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoQnl0ZXMubGVuZ3RoIHMpIChCeXRlcy50b19zdHJpbmcgcylcblxuKCogVG8gZm9ybWF0IGFuIGludGVnZXIuICopXG5sZXQgcHBfcHJpbnRfaW50IHN0YXRlIGkgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKEludC50b19zdHJpbmcgaSlcblxuKCogVG8gZm9ybWF0IGEgZmxvYXQuICopXG5sZXQgcHBfcHJpbnRfZmxvYXQgc3RhdGUgZiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Zsb2F0IGYpXG5cbigqIFRvIGZvcm1hdCBhIGJvb2xlYW4uICopXG5sZXQgcHBfcHJpbnRfYm9vbCBzdGF0ZSBiID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfYm9vbCBiKVxuXG4oKiBUbyBmb3JtYXQgYSBjaGFyLiAqKVxubGV0IHBwX3ByaW50X2NoYXIgc3RhdGUgYyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIDEgKFN0cmluZy5tYWtlIDEgYylcblxubGV0IHBwX3ByaW50X25vdGhpbmcgX3N0YXRlICgpID0gKClcblxuXG4oKiBPcGVuaW5nIGJveGVzLiAqKVxubGV0IHBwX29wZW5faGJveCBzdGF0ZSAoKSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hib3hcbmFuZCBwcF9vcGVuX3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF92Ym94XG5cbmFuZCBwcF9vcGVuX2h2Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaHZib3hcbmFuZCBwcF9vcGVuX2hvdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2hvdmJveFxuYW5kIHBwX29wZW5fYm94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfYm94XG5cblxuKCogUHJpbnRpbmcgcXVldWVkIHRleHQuXG5cbiAgIFtwcF9wcmludF9mbHVzaF0gcHJpbnRzIGFsbCBwZW5kaW5nIGl0ZW1zIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBhbmRcbiAgIHRoZW4gZmx1c2hlcyB0aGUgbG93IGxldmVsIG91dHB1dCBkZXZpY2Ugb2YgdGhlIGZvcm1hdHRlciB0byBhY3R1YWxseVxuICAgZGlzcGxheSBwcmludGluZyBtYXRlcmlhbC5cblxuICAgW3BwX3ByaW50X25ld2xpbmVdIGJlaGF2ZXMgYXMgW3BwX3ByaW50X2ZsdXNoXSBhZnRlciBwcmludGluZyBhbiBhZGRpdGlvbmFsXG4gICBuZXcgbGluZS4gKilcbmxldCBwcF9wcmludF9uZXdsaW5lIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgfmVuZF93aXRoX25ld2xpbmU6dHJ1ZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5hbmQgcHBfcHJpbnRfZmx1c2ggc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB+ZW5kX3dpdGhfbmV3bGluZTpmYWxzZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5cblxuKCogVG8gZ2V0IGEgbmV3bGluZSB3aGVuIG9uZSBkb2VzIG5vdCB3YW50IHRvIGNsb3NlIHRoZSBjdXJyZW50IGJveC4gKilcbmxldCBwcF9mb3JjZV9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBUbyBmb3JtYXQgc29tZXRoaW5nLCBvbmx5IGluIGNhc2UgdGhlIGxpbmUgaGFzIGp1c3QgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfcHJpbnRfaWZfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZVxuICAgICAgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2lmX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIEdlbmVyYWxpemVkIGJyZWFrIGhpbnQgdGhhdCBhbGxvd3MgcHJpbnRpbmcgc3RyaW5ncyBiZWZvcmUvYWZ0ZXJcbiAgIHNhbWUtbGluZSBvZmZzZXQgKHdpZHRoKSBvciBuZXctbGluZSBvZmZzZXQgKilcbmxldCBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGUgfmZpdHMgfmJyZWFrcyA9XG4gIGxldCBiZWZvcmUsIHdpZHRoLCBhZnRlciA9IGZpdHMgaW5cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgdG9rZW4gPSBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IGluXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggYmVmb3JlICsgd2lkdGggKyBTdHJpbmcubGVuZ3RoIGFmdGVyIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuKCogUHJpbnRpbmcgYnJlYWsgaGludHM6XG4gICBBIGJyZWFrIGhpbnQgaW5kaWNhdGVzIHdoZXJlIGEgYm94IG1heSBiZSBicm9rZW4uXG4gICBJZiBsaW5lIGlzIGJyb2tlbiB0aGVuIG9mZnNldCBpcyBhZGRlZCB0byB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnRcbiAgIGJveCBlbHNlICh0aGUgdmFsdWUgb2YpIHdpZHRoIGJsYW5rcyBhcmUgcHJpbnRlZC4gKilcbmxldCBwcF9wcmludF9icmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGVcbiAgICB+Zml0czooXCJcIiwgd2lkdGgsIFwiXCIpIH5icmVha3M6KFwiXCIsIG9mZnNldCwgXCJcIilcblxuXG4oKiBQcmludCBhIHNwYWNlIDpcbiAgIGEgc3BhY2UgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIGEgc2luZ2xlIHNwYWNlIGlmIHRoZSBicmVhayBkb2VzIG5vdFxuICAgc3BsaXQgdGhlIGxpbmU7XG4gICBhIGN1dCBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgbm90aGluZyBpZiB0aGUgYnJlYWsgZG9lcyBub3Qgc3BsaXQgdGhlXG4gICBsaW5lLiAqKVxubGV0IHBwX3ByaW50X3NwYWNlIHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMSAwXG5hbmQgcHBfcHJpbnRfY3V0IHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMCAwXG5cblxuKCogVGFidWxhdGlvbiBib3hlcy4gKilcbmxldCBwcF9vcGVuX3Rib3ggc3RhdGUgKCkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUuemVybyBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RiZWdpbiAoUHBfdGJveCAocmVmIFtdKSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCogQ2xvc2UgYSB0YWJ1bGF0aW9uIGJveC4gKilcbmxldCBwcF9jbG9zZV90Ym94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3RlbmQ7IGxlbmd0aCA9IDAgfSBpblxuICAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbTtcbiAgICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMVxuICBlbmRcblxuXG4oKiBQcmludCBhIHRhYnVsYXRpb24gYnJlYWsuICopXG5sZXQgcHBfcHJpbnRfdGJyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJyZWFrICh3aWR0aCwgb2Zmc2V0KTsgbGVuZ3RoID0gd2lkdGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuXG5sZXQgcHBfcHJpbnRfdGFiIHN0YXRlICgpID0gcHBfcHJpbnRfdGJyZWFrIHN0YXRlIDAgMFxuXG5sZXQgcHBfc2V0X3RhYiBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3N0YWI7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGNvbnRyb2wgdGhlIHByZXR0eS1wcmludGVyc1xuXG4qKVxuXG4oKiBTZXRfbWF4X2JveGVzLiAqKVxubGV0IHBwX3NldF9tYXhfYm94ZXMgc3RhdGUgbiA9IGlmIG4gPiAxIHRoZW4gc3RhdGUucHBfbWF4X2JveGVzIDwtIG5cblxuKCogVG8ga25vdyB0aGUgY3VycmVudCBtYXhpbXVtIG51bWJlciBvZiBib3hlcyBhbGxvd2VkLiAqKVxubGV0IHBwX2dldF9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxubGV0IHBwX292ZXJfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG4oKiBFbGxpcHNpcy4gKilcbmxldCBwcF9zZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSBzID0gc3RhdGUucHBfZWxsaXBzaXMgPC0gc1xuYW5kIHBwX2dldF9lbGxpcHNpc190ZXh0IHN0YXRlICgpID0gc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUbyBzZXQgdGhlIG1hcmdpbiBvZiBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9saW1pdCBuID1cbiAgaWYgbiA8IHBwX2luZmluaXR5IHRoZW4gbiBlbHNlIHByZWQgcHBfaW5maW5pdHlcblxuXG4oKiBJbnRlcm5hbCBwcmV0dHktcHJpbnRlciBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0IDwtIG47XG4gICAgc3RhdGUucHBfbWF4X2luZGVudCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9yaW5pdCBzdGF0ZVxuXG5cbigqIEluaXRpYWxseSwgd2UgaGF2ZSA6XG4gICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQsIGFuZFxuICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbi4gKilcbmxldCBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuID1cbiAgaWYgbiA+IDEgdGhlblxuICAgIHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSAoc3RhdGUucHBfbWFyZ2luIC0gbilcblxuXG5sZXQgcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfaW5kZW50XG5cbmxldCBwcF9zZXRfbWFyZ2luIHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21hcmdpbiA8LSBuO1xuICAgIGxldCBuZXdfbWF4X2luZGVudCA9XG4gICAgICAoKiBUcnkgdG8gbWFpbnRhaW4gbWF4X2luZGVudCB0byBpdHMgYWN0dWFsIHZhbHVlLiAqKVxuICAgICAgaWYgc3RhdGUucHBfbWF4X2luZGVudCA8PSBzdGF0ZS5wcF9tYXJnaW5cbiAgICAgIHRoZW4gc3RhdGUucHBfbWF4X2luZGVudCBlbHNlXG4gICAgICAoKiBJZiBwb3NzaWJsZSBtYWludGFpbiBwcF9taW5fc3BhY2VfbGVmdCB0byBpdHMgYWN0dWFsIHZhbHVlLFxuICAgICAgICAgaWYgdGhpcyBsZWFkcyB0byBhIHRvbyBzbWFsbCBtYXhfaW5kZW50LCB0YWtlIGhhbGYgb2YgdGhlXG4gICAgICAgICBuZXcgbWFyZ2luLCBpZiBpdCBpcyBncmVhdGVyIHRoYW4gMS4gKilcbiAgICAgICBJbnQubWF4IChJbnQubWF4IChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdClcbiAgICAgICAgICAgICAgICAoc3RhdGUucHBfbWFyZ2luIC8gMikpIDEgaW5cbiAgICAoKiBSZWJ1aWxkIGludmFyaWFudHMuICopXG4gICAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbmV3X21heF9pbmRlbnRcblxuXG4oKiogR2VvbWV0cnkgZnVuY3Rpb25zIGFuZCB0eXBlcyAqKVxudHlwZSBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDppbnQ7IG1hcmdpbjogaW50fVxuXG5sZXQgdmFsaWRhdGVfZ2VvbWV0cnkge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBpZiBtYXhfaW5kZW50IDwgMiB0aGVuXG4gICAgRXJyb3IgXCJtYXhfaW5kZW50IDwgMlwiXG4gIGVsc2UgaWYgbWFyZ2luIDw9IG1heF9pbmRlbnQgdGhlblxuICAgIEVycm9yIFwibWFyZ2luIDw9IG1heF9pbmRlbnRcIlxuICBlbHNlIGlmIG1hcmdpbiA+PSBwcF9pbmZpbml0eSB0aGVuXG4gICAgRXJyb3IgXCJtYXJnaW4gPj0gcHBfaW5maW5pdHlcIlxuICBlbHNlIE9rICgpXG5cbmxldCBjaGVja19nZW9tZXRyeSBnZW9tZXRyeSA9XG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBPayAoKSAtPiB0cnVlXG4gIHwgRXJyb3IgXyAtPiBmYWxzZVxuXG5sZXQgcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmdpblxuXG5sZXQgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBwcF9zZXRfbWFyZ2luIHN0YXRlIG1hcmdpbjtcbiAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbWF4X2luZGVudDtcbiAgKClcblxubGV0IHBwX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgbXNnIC0+XG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiRm9ybWF0LnBwX3NldF9nZW9tZXRyeTogXCIgXiBtc2cpKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX3NhZmVfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBfbXNnIC0+XG4gICAgICgpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpID1cbiAgeyBtYXJnaW4gPSBwcF9nZXRfbWFyZ2luIHN0YXRlICgpOyBtYXhfaW5kZW50ID0gcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgfVxuXG5sZXQgcHBfdXBkYXRlX2dlb21ldHJ5IHN0YXRlIHVwZGF0ZSA9XG4gIGxldCBnZW9tZXRyeSA9IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSBpblxuICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSAodXBkYXRlIGdlb21ldHJ5KVxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgIG91dF9zdHJpbmcgPSBmO1xuICAgICAgb3V0X2ZsdXNoID0gZztcbiAgICAgIG91dF9uZXdsaW5lID0gaDtcbiAgICAgIG91dF9zcGFjZXMgPSBpO1xuICAgICAgb3V0X2luZGVudCA9IGo7XG4gICAgfSA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjtcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGc7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGg7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gaTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBqXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG91dF9zdHJpbmcgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nO1xuICBvdXRfZmx1c2ggPSBzdGF0ZS5wcF9vdXRfZmx1c2g7XG4gIG91dF9uZXdsaW5lID0gc3RhdGUucHBfb3V0X25ld2xpbmU7XG4gIG91dF9zcGFjZXMgPSBzdGF0ZS5wcF9vdXRfc3BhY2VzO1xuICBvdXRfaW5kZW50ID0gc3RhdGUucHBfb3V0X2luZGVudDtcbn1cblxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIHN0cmluZyBvdXRwdXQgYW5kIGZsdXNoIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgZiBnID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmOyBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZ1xuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlICgpID1cbiAgKHN0YXRlLnBwX291dF9zdHJpbmcsIHN0YXRlLnBwX291dF9mbHVzaClcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfbmV3bGluZSBzdGF0ZSAoKSA9IHN0YXRlLnBwX291dF9zdHJpbmcgXCJcXG5cIiAwICAxXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBzcGFjZXMuICopXG5sZXQgYmxhbmtfbGluZSA9IFN0cmluZy5tYWtlIDgwICcgJ1xubGV0IHJlYyBkaXNwbGF5X2JsYW5rcyBzdGF0ZSBuID1cbiAgaWYgbiA+IDAgdGhlblxuICBpZiBuIDw9IDgwIHRoZW4gc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgbiBlbHNlXG4gIGJlZ2luXG4gICAgc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgODA7XG4gICAgZGlzcGxheV9ibGFua3Mgc3RhdGUgKG4gLSA4MClcbiAgZW5kXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X2luZGVudCA9IGRpc3BsYXlfYmxhbmtzXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucyBhcyBwcmludGluZyB0byBhIGdpdmVuXG4gICBbU3RkbGliLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHN0YXRlIG9jID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBvdXRwdXRfc3Vic3RyaW5nIG9jO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gKGZ1biAoKSAtPiBmbHVzaCBvYyk7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBzdGF0ZVxuXG4oKlxuXG4gIERlZmluaW5nIHNwZWNpZmljIGZvcm1hdHRlcnNcblxuKilcblxubGV0IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPFwiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5sZXQgZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPC9cIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxuXG5sZXQgZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyA9IGlnbm9yZVxubGV0IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnID0gaWdub3JlXG5cbigqIEJ1aWxkaW5nIGEgZm9ybWF0dGVyIGdpdmVuIGl0cyBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLlxuICAgT3RoZXIgZmllbGRzIGdldCByZWFzb25hYmxlIGRlZmF1bHQgdmFsdWVzLiAqKVxubGV0IHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgaiA9XG4gICgqIFRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBmb3JtYXR0ZXIgY29udGFpbnMgYSBkdW1teSBib3guICopXG4gIGxldCBwcF9xdWV1ZSA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQgc3lzX3RvayA9XG4gICAgeyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX2JlZ2luICgwLCBQcF9ob3Zib3gpOyBsZW5ndGggPSAwIH0gaW5cbiAgUXVldWUuYWRkIHN5c190b2sgcHBfcXVldWU7XG4gIGxldCBzY2FuX3N0YWNrID0gU3RhY2suY3JlYXRlICgpIGluXG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzY2FuX3N0YWNrO1xuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IDE7IHF1ZXVlX2VsZW0gPSBzeXNfdG9rIH0gc2Nhbl9zdGFjaztcbiAgbGV0IHBwX21hcmdpbiA9IDc4XG4gIGFuZCBwcF9taW5fc3BhY2VfbGVmdCA9IDEwIGluXG4gIHtcbiAgICBwcF9zY2FuX3N0YWNrID0gc2Nhbl9zdGFjaztcbiAgICBwcF9mb3JtYXRfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGJveF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90YWdfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFya19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJnaW4gPSBwcF9tYXJnaW47XG4gICAgcHBfbWluX3NwYWNlX2xlZnQgPSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbjtcbiAgICBwcF9jdXJyZW50X2luZGVudCA9IDA7XG4gICAgcHBfaXNfbmV3X2xpbmUgPSB0cnVlO1xuICAgIHBwX2xlZnRfdG90YWwgPSAxO1xuICAgIHBwX3JpZ2h0X3RvdGFsID0gMTtcbiAgICBwcF9jdXJyX2RlcHRoID0gMTtcbiAgICBwcF9tYXhfYm94ZXMgPSBtYXhfaW50O1xuICAgIHBwX2VsbGlwc2lzID0gXCIuXCI7XG4gICAgcHBfb3V0X3N0cmluZyA9IGY7XG4gICAgcHBfb3V0X2ZsdXNoID0gZztcbiAgICBwcF9vdXRfbmV3bGluZSA9IGg7XG4gICAgcHBfb3V0X3NwYWNlcyA9IGk7XG4gICAgcHBfb3V0X2luZGVudCA9IGo7XG4gICAgcHBfcHJpbnRfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfb3Blbl90YWcgPSBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWc7XG4gICAgcHBfbWFya19jbG9zZV90YWcgPSBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnO1xuICAgIHBwX3ByaW50X29wZW5fdGFnID0gZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZztcbiAgICBwcF9wcmludF9jbG9zZV90YWcgPSBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZztcbiAgICBwcF9xdWV1ZSA9IHBwX3F1ZXVlO1xuICB9XG5cblxuKCogQnVpbGQgYSBmb3JtYXR0ZXIgb3V0IG9mIGl0cyBvdXQgZnVuY3Rpb25zLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfZnVuY3Rpb25zIG91dF9mdW5zID1cbiAgcHBfbWFrZV9mb3JtYXR0ZXJcbiAgICBvdXRfZnVucy5vdXRfc3RyaW5nXG4gICAgb3V0X2Z1bnMub3V0X2ZsdXNoXG4gICAgb3V0X2Z1bnMub3V0X25ld2xpbmVcbiAgICBvdXRfZnVucy5vdXRfc3BhY2VzXG4gICAgb3V0X2Z1bnMub3V0X2luZGVudFxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd2l0aCBkZWZhdWx0IGZ1bmN0aW9ucyB0byBvdXRwdXQgc3BhY2VzLFxuICBpbmRlbnRhdGlvbiwgYW5kIG5ldyBsaW5lcy4gKilcbmxldCBtYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBsZXQgcHBmID0gcHBfbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoIGlnbm9yZSBpZ25vcmUgaWdub3JlIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgcHBmXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW1N0ZGxpYi5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jID1cbiAgbWFrZV9mb3JtYXR0ZXIgKG91dHB1dF9zdWJzdHJpbmcgb2MpIChmdW4gKCkgLT4gZmx1c2ggb2MpXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW0J1ZmZlci50XSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgPVxuICBtYWtlX2Zvcm1hdHRlciAoQnVmZmVyLmFkZF9zdWJzdHJpbmcgYikgaWdub3JlXG5cblxuKCogQWxsb2NhdGluZyBidWZmZXIgZm9yIHByZXR0eS1wcmludGluZyBwdXJwb3Nlcy5cbiAgIERlZmF1bHQgYnVmZmVyIHNpemUgaXMgcHBfYnVmZmVyX3NpemUgb3IgNTEyLlxuKilcbmxldCBwcF9idWZmZXJfc2l6ZSA9IDUxMlxubGV0IHBwX21ha2VfYnVmZmVyICgpID0gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZVxuXG4oKiBUaGUgc3RhbmRhcmQgKHNoYXJlZCkgYnVmZmVyLiAqKVxubGV0IHN0ZGJ1ZiA9IHBwX21ha2VfYnVmZmVyICgpXG5cbigqIFByZWRlZmluZWQgZm9ybWF0dGVycyBzdGFuZGFyZCBmb3JtYXR0ZXIgdG8gcHJpbnRcbiAgIHRvIFtTdGRsaWIuc3Rkb3V0XSwgW1N0ZGxpYi5zdGRlcnJdLCBhbmQgeyFzdGRidWZ9LiAqKVxubGV0IHN0ZF9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZG91dFxuYW5kIGVycl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZGVyclxuYW5kIHN0cl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIHN0ZGJ1ZlxuXG4oKiBJbml0aWFsaXNlIGRvbWFpbiBsb2NhbCBzdGF0ZSAqKVxubW9kdWxlIERMUyA9IERvbWFpbi5ETFNcblxubGV0IHN0ZGJ1Zl9rZXkgPSBETFMubmV3X2tleSBwcF9tYWtlX2J1ZmZlclxubGV0IF8gPSBETFMuc2V0IHN0ZGJ1Zl9rZXkgc3RkYnVmXG5cbmxldCBzdHJfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgZm9ybWF0dGVyX29mX2J1ZmZlciAoRExTLmdldCBzdGRidWZfa2V5KSlcbmxldCBfID0gRExTLnNldCBzdHJfZm9ybWF0dGVyX2tleSBzdHJfZm9ybWF0dGVyXG5cbmxldCBidWZmZXJlZF9vdXRfc3RyaW5nIGtleSBzdHIgb2ZzIGxlbiA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIChEb21haW4uRExTLmdldCBrZXkpIHN0ciBvZnMgbGVuXG5cbmxldCBidWZmZXJlZF9vdXRfZmx1c2ggb2Mga2V5ICgpID1cbiAgbGV0IGJ1ZiA9IERvbWFpbi5ETFMuZ2V0IGtleSBpblxuICBsZXQgbGVuID0gQnVmZmVyLmxlbmd0aCBidWYgaW5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgb3V0cHV0X3N1YnN0cmluZyBvYyBzdHIgMCBsZW4gO1xuICBTdGRsaWIuZmx1c2ggb2M7XG4gIEJ1ZmZlci5jbGVhciBidWZcblxubGV0IHN0ZF9idWZfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IChmdW4gKCkgLT4gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZSlcbmxldCBlcnJfYnVmX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSAoZnVuICgpIC0+IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUpXG5cbmxldCBzdGRfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgbGV0IHBwZiA9XG4gICAgcHBfbWFrZV9mb3JtYXR0ZXIgKGJ1ZmZlcmVkX291dF9zdHJpbmcgc3RkX2J1Zl9rZXkpXG4gICAgICAoYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRvdXQgc3RkX2J1Zl9rZXkpIGlnbm9yZSBpZ25vcmUgaWdub3JlXG4gIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgRG9tYWluLmF0X2V4aXQgKHBwX3ByaW50X2ZsdXNoIHBwZik7XG4gIHBwZilcbmxldCBfID0gRExTLnNldCBzdGRfZm9ybWF0dGVyX2tleSBzdGRfZm9ybWF0dGVyXG5cbmxldCBlcnJfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgbGV0IHBwZiA9XG4gICAgcHBfbWFrZV9mb3JtYXR0ZXIgKGJ1ZmZlcmVkX291dF9zdHJpbmcgZXJyX2J1Zl9rZXkpXG4gICAgICAoYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRlcnIgZXJyX2J1Zl9rZXkpIGlnbm9yZSBpZ25vcmUgaWdub3JlXG4gIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgRG9tYWluLmF0X2V4aXQgKHBwX3ByaW50X2ZsdXNoIHBwZik7XG4gIHBwZilcbmxldCBfID0gRExTLnNldCBlcnJfZm9ybWF0dGVyX2tleSBlcnJfZm9ybWF0dGVyXG5cbmxldCBnZXRfc3RkX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfZXJyX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgZXJyX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfc3RyX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgc3RyX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfc3RkYnVmICgpID0gRExTLmdldCBzdGRidWZfa2V5XG5cbigqIFtmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGZdIGZsdXNoZXMgZm9ybWF0dGVyIFtwcGZdLFxuICAgdGhlbiByZXR1cm5zIHRoZSBjb250ZW50cyBvZiBidWZmZXIgW2J1Zl0gdGhhdCBpcyByZXNldC5cbiAgIEZvcm1hdHRlciBbcHBmXSBpcyBzdXBwb3NlZCB0byBwcmludCB0byBidWZmZXIgW2J1Zl0sIG90aGVyd2lzZSB0aGlzXG4gICBmdW5jdGlvbiBpcyBub3QgcmVhbGx5IHVzZWZ1bC4gKilcbmxldCBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGYgPVxuICBwcF9mbHVzaF9xdWV1ZSBwcGYgfmVuZF93aXRoX25ld2xpbmU6ZmFsc2U7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBCdWZmZXIucmVzZXQgYnVmO1xuICBzXG5cbigqIEZsdXNoIFtzdHJfZm9ybWF0dGVyXSBhbmQgZ2V0IHRoZSBjb250ZW50cyBvZiBbc3RkYnVmXS4gKilcbmxldCBmbHVzaF9zdHJfZm9ybWF0dGVyICgpID1cbiAgbGV0IHN0ZGJ1ZiA9IERMUy5nZXQgc3RkYnVmX2tleSBpblxuICBsZXQgc3RyX2Zvcm1hdHRlciA9IERMUy5nZXQgc3RyX2Zvcm1hdHRlcl9rZXkgaW5cbiAgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBzdGRidWYgc3RyX2Zvcm1hdHRlclxuXG5sZXQgbWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCA9XG4gIERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZSBpblxuICAgIGxldCBvdXRwdXQnID0gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGluXG4gICAgbGV0IGZsdXNoJyAoKSA9XG4gICAgICBvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBidWYpIDAgKEJ1ZmZlci5sZW5ndGggYnVmKTtcbiAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICBmbHVzaCAoKVxuICAgIGluXG4gICAgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0JyBmbHVzaCcpXG5cbmxldCBzeW5jaHJvbml6ZWRfZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jID1cbiAgbWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmdcbiopXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZyBpcyBwcmV0dHktcHJpbnRpbmcgd2l0aCBubyBsb3cgbGV2ZWwgb3V0cHV0LlxuXG4gIFdoZW4gdXNpbmcgYSBzeW1ib2xpYyBmb3JtYXR0ZXIsIGFsbCByZWd1bGFyIHByZXR0eS1wcmludGluZyBhY3Rpdml0aWVzXG4gIG9jY3VyIGJ1dCBvdXRwdXQgbWF0ZXJpYWwgaXMgc3ltYm9saWMgYW5kIHN0b3JlZCBpbiBhIGJ1ZmZlciBvZiBvdXRwdXRcbiAgaXRlbXMuIEF0IHRoZSBlbmQgb2YgcHJldHR5LXByaW50aW5nLCBmbHVzaGluZyB0aGUgb3V0cHV0IGJ1ZmZlciBhbGxvd3NcbiAgcG9zdC1wcm9jZXNzaW5nIG9mIHN5bWJvbGljIG91dHB1dCBiZWZvcmUgbG93IGxldmVsIG91dHB1dCBvcGVyYXRpb25zLlxuKilcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfaXRlbSA9XG4gIHwgT3V0cHV0X2ZsdXNoXG4gIHwgT3V0cHV0X25ld2xpbmVcbiAgfCBPdXRwdXRfc3RyaW5nIG9mIHN0cmluZ1xuICB8IE91dHB1dF9zcGFjZXMgb2YgaW50XG4gIHwgT3V0cHV0X2luZGVudCBvZiBpbnRcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfYnVmZmVyID0ge1xuICBtdXRhYmxlIHN5bWJvbGljX291dHB1dF9jb250ZW50cyA6IHN5bWJvbGljX291dHB1dF9pdGVtIGxpc3Q7XG59XG5cbmxldCBtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIgKCkgPVxuICB7IHN5bWJvbGljX291dHB1dF9jb250ZW50cyA9IFtdIH1cblxubGV0IGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBbXVxuXG5sZXQgZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgTGlzdC5yZXYgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgaXRlbXMgPSBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgaW5cbiAgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2I7XG4gIGl0ZW1zXG5cbmxldCBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIGl0ZW0gPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIGl0ZW0gOjogc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IHN5bWJvbGljX2ZsdXNoIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfZmx1c2hcbiAgYW5kIHN5bWJvbGljX25ld2xpbmUgc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9uZXdsaW5lXG4gIGFuZCBzeW1ib2xpY19zdHJpbmcgc29iIHMgaSBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3RyaW5nIChTdHJpbmcuc3ViIHMgaSBuKSlcbiAgYW5kIHN5bWJvbGljX3NwYWNlcyBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3NwYWNlcyBuKVxuICBhbmQgc3ltYm9saWNfaW5kZW50IHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfaW5kZW50IG4pIGluXG5cbiAgbGV0IGYgPSBzeW1ib2xpY19zdHJpbmcgc29iXG4gIGFuZCBnID0gc3ltYm9saWNfZmx1c2ggc29iXG4gIGFuZCBoID0gc3ltYm9saWNfbmV3bGluZSBzb2JcbiAgYW5kIGkgPSBzeW1ib2xpY19zcGFjZXMgc29iXG4gIGFuZCBqID0gc3ltYm9saWNfaW5kZW50IHNvYiBpblxuICBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGpcblxuKCpcblxuICBCYXNpYyBmdW5jdGlvbnMgb24gdGhlICdzdGFuZGFyZCcgZm9ybWF0dGVyXG4gICh0aGUgZm9ybWF0dGVyIHRoYXQgcHJpbnRzIHRvIFtTdGRsaWIuc3Rkb3V0XSkuXG5cbiopXG5cbmxldCBvcGVuX2hib3ggdiA9IHBwX29wZW5faGJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fdmJveCB2ID0gcHBfb3Blbl92Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9odmJveCB2ID0gcHBfb3Blbl9odmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5faG92Ym94IHYgPSBwcF9vcGVuX2hvdmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fYm94IHYgPSBwcF9vcGVuX2JveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGNsb3NlX2JveCB2ID0gcHBfY2xvc2VfYm94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9zdGFnIHYgPSBwcF9vcGVuX3N0YWcgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV9zdGFnIHYgPSBwcF9jbG9zZV9zdGFnIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYXMgdiB3ID0gcHBfcHJpbnRfYXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHYgd1xuYW5kIHByaW50X3N0cmluZyB2ID0gcHBfcHJpbnRfc3RyaW5nIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYnl0ZXMgdiA9IHBwX3ByaW50X2J5dGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaW50IHYgPSBwcF9wcmludF9pbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbG9hdCB2ID0gcHBfcHJpbnRfZmxvYXQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9jaGFyIHYgPSBwcF9wcmludF9jaGFyIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYm9vbCB2ID0gcHBfcHJpbnRfYm9vbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2JyZWFrIHYgdyA9IHBwX3ByaW50X2JyZWFrIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBwcmludF9jdXQgdiA9IHBwX3ByaW50X2N1dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3NwYWNlIHYgPSBwcF9wcmludF9zcGFjZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGZvcmNlX25ld2xpbmUgdiA9IHBwX2ZvcmNlX25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbHVzaCB2ID0gcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9uZXdsaW5lIHYgPSBwcF9wcmludF9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaWZfbmV3bGluZSB2ID0gcHBfcHJpbnRfaWZfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgb3Blbl90Ym94IHYgPSBwcF9vcGVuX3Rib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV90Ym94IHYgPSBwcF9jbG9zZV90Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGJyZWFrIHYgdyA9IHBwX3ByaW50X3RicmVhayAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5cbmFuZCBzZXRfdGFiIHYgPSBwcF9zZXRfdGFiIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGFiIHYgPSBwcF9wcmludF90YWIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXJnaW4gdiA9IHBwX3NldF9tYXJnaW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWFyZ2luIHYgPSBwcF9nZXRfbWFyZ2luIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWF4X2luZGVudCB2ID0gcHBfc2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWF4X2luZGVudCB2ID0gcHBfZ2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9nZW9tZXRyeSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgcHBfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgc2FmZV9zZXRfZ2VvbWV0cnkgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIHBwX3NhZmVfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgZ2V0X2dlb21ldHJ5IHYgPSBwcF9nZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCB1cGRhdGVfZ2VvbWV0cnkgdiA9IHBwX3VwZGF0ZV9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21heF9ib3hlcyB2ID0gcHBfc2V0X21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXhfYm94ZXMgdiA9IHBwX2dldF9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvdmVyX21heF9ib3hlcyB2ID0gcHBfb3Zlcl9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9zZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9nZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgdyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX3NldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX2dldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X21hcmtfdGFncyB2ID1cbiAgcHBfc2V0X21hcmtfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXJrX3RhZ3MgdiA9XG4gIHBwX2dldF9tYXJrX3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfdGFncyB2ID1cbiAgcHBfc2V0X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuXG4oKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgKilcblxubGV0IHBwX3ByaW50X2l0ZXIgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIGl0ZXIgcHBfdiBwcGYgdiA9XG4gIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gIGxldCBwcF92IHYgPVxuICAgIGlmICFpc19maXJzdCB0aGVuIGlzX2ZpcnN0IDo9IGZhbHNlIGVsc2UgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF92IHBwZiB2XG4gIGluXG4gIGl0ZXIgcHBfdiB2XG5cbigqIFRvIGZvcm1hdCBhIGxpc3QgKilcbmxldCBwcF9wcmludF9saXN0ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiB2ID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIExpc3QuaXRlciBwcF92IHBwZiB2XG5cbigqIFRvIGZvcm1hdCBhbiBhcnJheSAqKVxubGV0IHBwX3ByaW50X2FycmF5ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiB2ID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIEFycmF5Lml0ZXIgcHBfdiBwcGYgdlxuXG4oKiBUbyBmb3JtYXQgYSBzZXF1ZW5jZSAqKVxubGV0IHBwX3ByaW50X3NlcSA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgc2VxID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIFNlcS5pdGVyIHBwX3YgcHBmIHNlcVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBwcF9wcmludF90ZXh0IHBwZiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGVmdCA9IHJlZiAwIGluXG4gIGxldCByaWdodCA9IHJlZiAwIGluXG4gIGxldCBmbHVzaCAoKSA9XG4gICAgcHBfcHJpbnRfc3RyaW5nIHBwZiAoU3RyaW5nLnN1YiBzICFsZWZ0ICghcmlnaHQgLSAhbGVmdCkpO1xuICAgIGluY3IgcmlnaHQ7IGxlZnQgOj0gIXJpZ2h0O1xuICBpblxuICB3aGlsZSAoIXJpZ2h0IDw+IGxlbikgZG9cbiAgICBtYXRjaCBzLlshcmlnaHRdIHdpdGhcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgZmx1c2ggKCk7XG4gICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBmbHVzaCAoKTsgcHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICAoKiB0aGVyZSBpcyBubyBzcGVjaWZpYyBzdXBwb3J0IGZvciAnXFx0J1xuICAgICAgICAgYXMgaXQgaXMgdW5jbGVhciB3aGF0IGEgcmlnaHQgc2VtYW50aWNzIHdvdWxkIGJlICopXG4gICAgICB8IF8gLT4gaW5jciByaWdodFxuICBkb25lO1xuICBpZiAhbGVmdCA8PiBsZW4gdGhlbiBmbHVzaCAoKVxuXG5sZXQgcHBfcHJpbnRfb3B0aW9uID8obm9uZSA9IGZ1biBfICgpIC0+ICgpKSBwcF92IHBwZiA9IGZ1bmN0aW9uXG58IE5vbmUgLT4gbm9uZSBwcGYgKClcbnwgU29tZSB2IC0+IHBwX3YgcHBmIHZcblxubGV0IHBwX3ByaW50X3Jlc3VsdCB+b2sgfmVycm9yIHBwZiA9IGZ1bmN0aW9uXG58IE9rIHYgLT4gb2sgcHBmIHZcbnwgRXJyb3IgZSAtPiBlcnJvciBwcGYgZVxuXG5sZXQgcHBfcHJpbnRfZWl0aGVyIH5sZWZ0IH5yaWdodCBwcGYgPSBmdW5jdGlvblxufCBFaXRoZXIuTGVmdCBsIC0+IGxlZnQgcHBmIGxcbnwgRWl0aGVyLlJpZ2h0IHIgLT4gcmlnaHQgcHBmIHJcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNvbXB1dGVfdGFnIG91dHB1dCB0YWdfYWNjID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gIG91dHB1dCBwcGYgdGFnX2FjYztcbiAgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICBsZXQgbGVuID0gQnVmZmVyLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgZWxzZSBCdWZmZXIuc3ViIGJ1ZiAxIChsZW4gLSAyKVxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgRGVmaW5pbmcgY29udGludWF0aW9ucyB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRzIG9mXG4gIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi5cblxuICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIEludGVycHJldCBhIGZvcm1hdHRpbmcgZW50aXR5IG9uIGEgZm9ybWF0dGVyLiAqKVxubGV0IG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZm10aW5nX2xpdCA9IG1hdGNoIGZtdGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2VfYm94IHBwZiAoKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2Vfc3RhZyBwcGYgKClcbiAgfCBCcmVhayAoXywgd2lkdGgsIG9mZnNldCkgIC0+IHBwX3ByaW50X2JyZWFrIHBwZiB3aWR0aCBvZmZzZXRcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2ZsdXNoIHBwZiAoKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX3ByaW50X25ld2xpbmUgcHBmICgpXG4gIHwgTWFnaWNfc2l6ZSAoXywgXykgICAgICAgICAtPiAoKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnJSdcbiAgfCBTY2FuX2luZGljIGMgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJzsgcHBfcHJpbnRfY2hhciBwcGYgY1xuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYub3V0cHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBmIHBwZjtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYuYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBzdHJwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19kZWxheSAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKGYgKCkpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIChmICgpKTtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqXG5cbiAgRGVmaW5pbmcgW2ZwcmludGZdIGFuZCB2YXJpb3VzIGZsYXZvcnMgb2YgW2ZwcmludGZdLlxuXG4qKVxuXG5sZXQga2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgcHBmIGFjYzsgayBwcGYpXG4gICAgRW5kX29mX2FjYyBmbXRcblxuYW5kIGlrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIHBwZiBmbXRcblxubGV0IGlmcHJpbnRmIF9wcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgaWdub3JlICgpIGZtdFxuXG5sZXQgZnByaW50ZiBwcGYgPSBrZnByaW50ZiBpZ25vcmUgcHBmXG5cbmxldCBwcmludGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIGFjYylcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgZXByaW50ZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyAoRExTLmdldCBlcnJfZm9ybWF0dGVyX2tleSkgYWNjKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBrZHByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBrIChmdW4gcHBmIC0+IG91dHB1dF9hY2MgcHBmIGFjYykpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGRwcmludGYgZm10ID0ga2RwcmludGYgKGZ1biBpIC0+IGkpIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIHN0cnB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgaWQgZm10XG5cbmxldCBrYXNwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBiID0gcHBfbWFrZV9idWZmZXIgKCkgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPVxuICAgIG91dHB1dF9hY2MgcHBmIGFjYztcbiAgICBrIChmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGIgcHBmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxubGV0IGFzcHJpbnRmIGZtdCA9IGthc3ByaW50ZiBpZCBmbXRcblxuKCogRmx1c2hpbmcgc3RhbmRhcmQgZm9ybWF0dGVycyBhdCBlbmQgb2YgZXhlY3V0aW9uLiAqKVxuXG5sZXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyAoKSA9XG4gIHBwX3ByaW50X2ZsdXNoIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSAoKTtcbiAgcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgZXJyX2Zvcm1hdHRlcl9rZXkpICgpXG5cbmxldCAoKSA9IGF0X2V4aXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVyc1xuXG5sZXQgKCkgPSBEb21haW4uYmVmb3JlX2ZpcnN0X3NwYXduIChmdW4gKCkgLT5cbiAgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyAoKTtcbiAgbGV0IGZzID0gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXIgKCkgaW5cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbiAgICB7ZnMgd2l0aCBvdXRfc3RyaW5nID0gYnVmZmVyZWRfb3V0X3N0cmluZyBzdGRfYnVmX2tleTtcbiAgICAgICAgICAgICBvdXRfZmx1c2ggPSBidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZG91dCBzdGRfYnVmX2tleX07XG5cbiAgbGV0IGZzID0gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIGVycl9mb3JtYXR0ZXIgKCkgaW5cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIGVycl9mb3JtYXR0ZXJcbiAgICB7ZnMgd2l0aCBvdXRfc3RyaW5nID0gYnVmZmVyZWRfb3V0X3N0cmluZyBlcnJfYnVmX2tleTtcbiAgICAgICAgICAgICBvdXRfZmx1c2ggPSBidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZGVyciBlcnJfYnVmX2tleX07XG4pXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBhbGlhcyB0byBhdm9pZCB3YXJuaW5nIGZvciBhbWJpZ3VpdHkgYmV0d2VlblxuICAgU3RkbGliLmZvcm1hdDZcbiAgIGFuZCBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuXG4gICAodGhlIGZvcm1lciBpcyBpbiBmYWN0IGFuIGFsaWFzIGZvciB0aGUgbGF0dGVyLFxuICAgIGJ1dCB0aGUgYW1iaWd1aXR5IHdhcm5pbmcgZG9lc24ndCBjYXJlKVxuKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgU3RkbGliLmZvcm1hdDZcblxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3Igc2Nhbm5lcnMuICopXG5cbigqIFNjYW5uaW5nIGJ1ZmZlcnMuICopXG5tb2R1bGUgdHlwZSBTQ0FOTklORyA9IHNpZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbFxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHZhbCBzdGRpbiA6IGluX2NoYW5uZWxcbiAgKCogVGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0uICopXG5cbiAgdmFsIG5leHRfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBbU2Nhbm5pbmcubmV4dF9jaGFyIGliXSBhZHZhbmNlIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIuXG4gICAgIElmIG5vIG1vcmUgY2hhcmFjdGVyIGNhbiBiZSByZWFkLCBzZXRzIGEgZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGludmFsaWRhdGVfY3VycmVudF9jaGFyIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYl0gbWFyayB0aGUgY3VycmVudF9jaGFyIGFzIGFscmVhZHlcbiAgICAgc2Nhbm5lZC4gKilcblxuICB2YWwgcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5wZWVrX2NoYXIgaWJdIHJldHVybnMgdGhlIGN1cnJlbnQgY2hhciBhdmFpbGFibGUgaW5cbiAgICAgdGhlIGJ1ZmZlciBvciByZWFkcyBvbmUgaWYgbmVjZXNzYXJ5ICh3aGVuIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpc1xuICAgICBhbHJlYWR5IHNjYW5uZWQpLlxuICAgICBJZiBubyBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYW4gZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGNoZWNrZWRfcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFNhbWUgYXMgW1NjYW5uaW5nLnBlZWtfY2hhcl0gYWJvdmUgYnV0IGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgY2hhciBvclxuICAgICBmYWlsczogaW5zdGVhZCBvZiByZXR1cm5pbmcgYSBudWxsIGNoYXIgd2hlbiB0aGUgcmVhZGluZyBtZXRob2Qgb2YgdGhlXG4gICAgIGlucHV0IGJ1ZmZlciBoYXMgcmVhY2hlZCBhbiBlbmQgb2YgZmlsZSwgdGhlIGZ1bmN0aW9uIHJhaXNlcyBleGNlcHRpb25cbiAgICAgW0VuZF9vZl9maWxlXS4gKilcblxuICB2YWwgc3RvcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGNoYXIgLT4gaW50XG4gICgqIFtTY2FubmluZy5zdG9yZV9jaGFyIGxpbSBpYiBjXSBhZGRzIFtjXSB0byB0aGUgdG9rZW4gYnVmZmVyXG4gICAgIG9mIHRoZSBzY2FubmluZyBidWZmZXIgW2liXS4gSXQgYWxzbyBhZHZhbmNlcyB0aGUgc2Nhbm5pbmcgYnVmZmVyIGZvclxuICAgICBvbmUgY2hhcmFjdGVyIGFuZCByZXR1cm5zIFtsaW0gLSAxXSwgaW5kaWNhdGluZyB0aGUgbmV3IGxpbWl0IGZvciB0aGVcbiAgICAgbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuLiAqKVxuXG4gIHZhbCBza2lwX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnNraXBfY2hhciBsaW0gaWJdIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLiAqKVxuXG4gIHZhbCBpZ25vcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuaWdub3JlX2NoYXIgaWIgbGltXSBpZ25vcmVzIHRoZSBjdXJyZW50IGNoYXJhY3RlciBhbmRcbiAgICAgZGVjcmVtZW50cyB0aGUgbGltaXQuICopXG5cbiAgdmFsIHRva2VuIDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLnRva2VuIGliXSByZXR1cm5zIHRoZSBzdHJpbmcgc3RvcmVkIGludG8gdGhlIHRva2VuXG4gICAgIGJ1ZmZlciBvZiB0aGUgc2Nhbm5pbmcgYnVmZmVyOiBpdCByZXR1cm5zIHRoZSB0b2tlbiBtYXRjaGVkIGJ5IHRoZVxuICAgICBmb3JtYXQuICopXG5cbiAgdmFsIHJlc2V0X3Rva2VuIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5yZXNldF90b2tlbiBpYl0gcmVzZXRzIHRoZSB0b2tlbiBidWZmZXIgb2ZcbiAgICAgdGhlIGdpdmVuIHNjYW5uaW5nIGJ1ZmZlci4gKilcblxuICB2YWwgY2hhcl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5jaGFyX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVyc1xuICAgICByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGxpbmVfY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcubGluZV9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIG5ldyBsaW5lXG4gICAgIGNoYXJhY3RlcnMgcmVhZCBzbyBmYXIgZnJvbSB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCB0b2tlbl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy50b2tlbl9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRva2VucyByZWFkXG4gICAgIHNvIGZhciBmcm9tIFtpYl0uICopXG5cbiAgdmFsIGVvZiA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW9mIGliXSByZXR1cm5zIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGVuZF9vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgZW5kIG9mIGlucHV0IGNvbmRpdGlvblxuICAgICBvZiB0aGUgZ2l2ZW4gYnVmZmVyIChpZiBubyBjaGFyIGhhcyBldmVyIGJlZW4gcmVhZCwgYW4gYXR0ZW1wdCB0b1xuICAgICByZWFkIG9uZSBpcyBwZXJmb3JtZWQpLiAqKVxuXG4gIHZhbCBiZWdpbm5pbmdfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmJlZ2lubmluZ19vZl9pbnB1dCBpYl0gdGVzdHMgdGhlIGJlZ2lubmluZyBvZiBpbnB1dFxuICAgICBjb25kaXRpb24gb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbmFtZV9vZl9pbnB1dCA6IHNjYW5idWYgLT4gc3RyaW5nXG4gICgqIFtTY2FubmluZy5uYW1lX29mX2lucHV0IGliXSByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBjaGFyYWN0ZXJcbiAgICAgc291cmNlIGZvciBpbnB1dCBidWZmZXIgW2liXS4gKilcblxuICB2YWwgb3Blbl9pbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBvcGVuX2luX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGUgOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9maWxlX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX3N0cmluZyA6IHN0cmluZyAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2Z1bmN0aW9uIDogKHVuaXQgLT4gY2hhcikgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9jaGFubmVsIDogU3RkbGliLmluX2NoYW5uZWwgLT4gaW5fY2hhbm5lbFxuXG4gIHZhbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdFxuXG5lbmRcblxuXG5tb2R1bGUgU2Nhbm5pbmcgOiBTQ0FOTklORyA9IHN0cnVjdFxuXG4gICgqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FuZi4gKilcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbF9uYW1lID1cbiAgICB8IEZyb21fY2hhbm5lbCBvZiBTdGRsaWIuaW5fY2hhbm5lbFxuICAgIHwgRnJvbV9maWxlIG9mIGZpbGVfbmFtZSAqIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2Z1bmN0aW9uXG4gICAgfCBGcm9tX3N0cmluZ1xuXG5cbiAgdHlwZSBpbl9jaGFubmVsID0ge1xuICAgIG11dGFibGUgaWNfZW9mIDogYm9vbDtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhciA6IGNoYXI7XG4gICAgbXV0YWJsZSBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgOiBib29sO1xuICAgIG11dGFibGUgaWNfY2hhcl9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX2xpbmVfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBpY190b2tlbl9jb3VudCA6IGludDtcbiAgICBpY19nZXRfbmV4dF9jaGFyIDogdW5pdCAtPiBjaGFyO1xuICAgIGljX3Rva2VuX2J1ZmZlciA6IEJ1ZmZlci50O1xuICAgIGljX2lucHV0X25hbWUgOiBpbl9jaGFubmVsX25hbWU7XG4gIH1cblxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICBsZXQgbnVsbF9jaGFyID0gJ1xcMDAwJ1xuXG4gICgqIFJlYWRzIGEgbmV3IGNoYXJhY3RlciBmcm9tIGlucHV0IGJ1ZmZlci5cbiAgICAgTmV4dF9jaGFyIG5ldmVyIGZhaWxzLCBldmVuIGluIGNhc2Ugb2YgZW5kIG9mIGlucHV0OlxuICAgICBpdCB0aGVuIHNpbXBseSBzZXRzIHRoZSBlbmQgb2YgZmlsZSBjb25kaXRpb24uICopXG4gIGxldCBuZXh0X2NoYXIgaWIgPVxuICAgIHRyeVxuICAgICAgbGV0IGMgPSBpYi5pY19nZXRfbmV4dF9jaGFyICgpIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSB0cnVlO1xuICAgICAgaWIuaWNfY2hhcl9jb3VudCA8LSBzdWNjIGliLmljX2NoYXJfY291bnQ7XG4gICAgICBpZiBjID0gJ1xcbicgdGhlbiBpYi5pY19saW5lX2NvdW50IDwtIHN1Y2MgaWIuaWNfbGluZV9jb3VudDtcbiAgICAgIGMgd2l0aFxuICAgIHwgRW5kX29mX2ZpbGUgLT5cbiAgICAgIGxldCBjID0gbnVsbF9jaGFyIGluXG4gICAgICBpYi5pY19jdXJyZW50X2NoYXIgPC0gYztcbiAgICAgIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZTtcbiAgICAgIGliLmljX2VvZiA8LSB0cnVlO1xuICAgICAgY1xuXG5cbiAgbGV0IHBlZWtfY2hhciBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jdXJyZW50X2NoYXJcbiAgICBlbHNlIG5leHRfY2hhciBpYlxuXG5cbiAgKCogUmV0dXJucyBhIHZhbGlkIGN1cnJlbnQgY2hhciBmb3IgdGhlIGlucHV0IGJ1ZmZlci4gSW4gcGFydGljdWxhclxuICAgICBubyBpcnJlbGV2YW50IG51bGwgY2hhcmFjdGVyIChhcyBzZXQgYnkgW25leHRfY2hhcl0gaW4gY2FzZSBvZiBlbmRcbiAgICAgb2YgaW5wdXQpIGlzIHJldHVybmVkLCBzaW5jZSBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuXG4gICAgIFtuZXh0X2NoYXJdIHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiB3aGlsZSB0cnlpbmcgdG8gcmVhZCBhXG4gICAgIG5ldyBjaGFyYWN0ZXIuICopXG4gIGxldCBjaGVja2VkX3BlZWtfY2hhciBpYiA9XG4gICAgbGV0IGMgPSBwZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpYi5pY19lb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZTtcbiAgICBjXG5cblxuICBsZXQgZW5kX29mX2lucHV0IGliID1cbiAgICBpZ25vcmUgKHBlZWtfY2hhciBpYik7XG4gICAgaWIuaWNfZW9mXG5cblxuICBsZXQgZW9mIGliID0gaWIuaWNfZW9mXG5cbiAgbGV0IGJlZ2lubmluZ19vZl9pbnB1dCBpYiA9IGliLmljX2NoYXJfY291bnQgPSAwXG5cbiAgbGV0IG5hbWVfb2ZfaW5wdXQgaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIF9pYyAtPiBcInVubmFtZWQgU3RkbGliIGlucHV0IGNoYW5uZWxcIlxuICAgIHwgRnJvbV9maWxlIChmbmFtZSwgX2ljKSAtPiBmbmFtZVxuICAgIHwgRnJvbV9mdW5jdGlvbiAtPiBcInVubmFtZWQgZnVuY3Rpb25cIlxuICAgIHwgRnJvbV9zdHJpbmcgLT4gXCJ1bm5hbWVkIGNoYXJhY3RlciBzdHJpbmdcIlxuXG5cbiAgbGV0IGNoYXJfY291bnQgaWIgPVxuICAgIGlmIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZFxuICAgIHRoZW4gaWIuaWNfY2hhcl9jb3VudCAtIDFcbiAgICBlbHNlIGliLmljX2NoYXJfY291bnRcblxuXG4gIGxldCBsaW5lX2NvdW50IGliID0gaWIuaWNfbGluZV9jb3VudFxuXG4gIGxldCByZXNldF90b2tlbiBpYiA9IEJ1ZmZlci5yZXNldCBpYi5pY190b2tlbl9idWZmZXJcblxuICBsZXQgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWIgPSBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gZmFsc2VcblxuICBsZXQgdG9rZW4gaWIgPVxuICAgIGxldCB0b2tlbl9idWZmZXIgPSBpYi5pY190b2tlbl9idWZmZXIgaW5cbiAgICBsZXQgdG9rID0gQnVmZmVyLmNvbnRlbnRzIHRva2VuX2J1ZmZlciBpblxuICAgIEJ1ZmZlci5jbGVhciB0b2tlbl9idWZmZXI7XG4gICAgaWIuaWNfdG9rZW5fY291bnQgPC0gc3VjYyBpYi5pY190b2tlbl9jb3VudDtcbiAgICB0b2tcblxuXG4gIGxldCB0b2tlbl9jb3VudCBpYiA9IGliLmljX3Rva2VuX2NvdW50XG5cbiAgbGV0IHNraXBfY2hhciB3aWR0aCBpYiA9XG4gICAgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7XG4gICAgd2lkdGhcblxuXG4gIGxldCBpZ25vcmVfY2hhciB3aWR0aCBpYiA9IHNraXBfY2hhciAod2lkdGggLSAxKSBpYlxuXG4gIGxldCBzdG9yZV9jaGFyIHdpZHRoIGliIGMgPVxuICAgIEJ1ZmZlci5hZGRfY2hhciBpYi5pY190b2tlbl9idWZmZXIgYztcbiAgICBpZ25vcmVfY2hhciB3aWR0aCBpYlxuXG5cbiAgbGV0IGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemUgPSAxMDI0XG5cbiAgbGV0IGNyZWF0ZSBpbmFtZSBuZXh0ID0ge1xuICAgIGljX2VvZiA9IGZhbHNlO1xuICAgIGljX2N1cnJlbnRfY2hhciA9IG51bGxfY2hhcjtcbiAgICBpY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPSBmYWxzZTtcbiAgICBpY19jaGFyX2NvdW50ID0gMDtcbiAgICBpY19saW5lX2NvdW50ID0gMDtcbiAgICBpY190b2tlbl9jb3VudCA9IDA7XG4gICAgaWNfZ2V0X25leHRfY2hhciA9IG5leHQ7XG4gICAgaWNfdG9rZW5fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSBkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplO1xuICAgIGljX2lucHV0X25hbWUgPSBpbmFtZTtcbiAgfVxuXG5cbiAgbGV0IGZyb21fc3RyaW5nIHMgPVxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWkgPj0gbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZVxuICAgICAgbGV0IGMgPSBzLlshaV0gaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGMgaW5cbiAgICBjcmVhdGUgRnJvbV9zdHJpbmcgbmV4dFxuXG5cbiAgbGV0IGZyb21fZnVuY3Rpb24gPSBjcmVhdGUgRnJvbV9mdW5jdGlvblxuXG4gICgqIFNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbC4gKilcblxuICAoKiBQb3NpdGlvbiBvZiB0aGUgcHJvYmxlbTpcblxuICAgICBXZSBjYW5ub3QgcHJldmVudCB0aGUgc2Nhbm5pbmcgbWVjaGFuaXNtIHRvIHVzZSBvbmUgbG9va2FoZWFkIGNoYXJhY3RlcixcbiAgICAgaWYgbmVlZGVkIGJ5IHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGZvcm1hdCBzdHJpbmcgc3BlY2lmaWNhdGlvbnMgKGUuZy4gYVxuICAgICB0cmFpbGluZyAnc2tpcCBzcGFjZScgc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9ybWF0IHN0cmluZyk7IGluIHRoaXMgY2FzZSxcbiAgICAgdGhlIG1hbmRhdG9yeSBsb29rYWhlYWQgY2hhcmFjdGVyIGlzIGluZGVlZCByZWFkIGZyb20gdGhlIGlucHV0IGFuZCBub3RcbiAgICAgdXNlZCB0byByZXR1cm4gdGhlIHRva2VuIHJlYWQuIEl0IGlzIHRodXMgbWFuZGF0b3J5IHRvIGJlIGFibGUgdG8gc3RvcmVcbiAgICAgYW4gdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgc29tZXdoZXJlIHRvIGdldCBpdCBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyXG4gICAgIG9mIHRoZSBuZXh0IHNjYW4uXG5cbiAgICAgVG8gY2lyY3VtdmVudCB0aGlzIHByb2JsZW0sIGFsbCB0aGUgc2Nhbm5pbmcgZnVuY3Rpb25zIGdldCBhIGxvdyBsZXZlbFxuICAgICBpbnB1dCBidWZmZXIgYXJndW1lbnQgd2hlcmUgdGhleSBzdG9yZSB0aGUgbG9va2FoZWFkIGNoYXJhY3RlciB3aGVuXG4gICAgIG5lZWRlZDsgYWRkaXRpb25hbGx5LCB0aGUgaW5wdXQgYnVmZmVyIGlzIHRoZSBvbmx5IHNvdXJjZSBvZiBjaGFyYWN0ZXIgb2ZcbiAgICAgYSBzY2FubmVyLiBUaGUgW3NjYW5idWZdIGlucHV0IGJ1ZmZlcnMgYXJlIGRlZmluZWQgaW4gbW9kdWxlIHshU2Nhbm5pbmd9LlxuXG4gICAgIE5vdyB3ZSB1bmRlcnN0YW5kIHRoYXQgaXQgaXMgZXh0cmVtZWx5IGltcG9ydGFudCB0aGF0IHJlbGF0ZWQgYW5kXG4gICAgIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gc2Nhbm5lcnMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgc2FtZSBpbnB1dCBidWZmZXIuXG4gICAgIEluIGVmZmVjdCwgaWYgYSBzY2FubmVyIFtzY2FuMV0gaXMgcmVhZGluZyBmcm9tIFtpYjFdIGFuZCBzdG9yZXMgYW5cbiAgICAgdW51c2VkIGxvb2thaGVhZCBjaGFyYWN0ZXIgW2MxXSBpbnRvIGl0cyBpbnB1dCBidWZmZXIgW2liMV0sIHRoZW5cbiAgICAgYW5vdGhlciBzY2FubmVyIFtzY2FuMl0gbm90IHJlYWRpbmcgZnJvbSB0aGUgc2FtZSBidWZmZXIgW2liMV0gd2lsbCBtaXNzXG4gICAgIHRoZSBjaGFyYWN0ZXIgW2MxXSwgc2VlbWluZ2x5IHZhbmlzaGVkIGluIHRoZSBhaXIgZnJvbSB0aGUgcG9pbnQgb2Ygdmlld1xuICAgICBvZiBbc2NhbjJdLlxuXG4gICAgIFRoaXMgbWVjaGFuaXNtIHdvcmtzIHBlcmZlY3RseSB0byByZWFkIGZyb20gc3RyaW5ncywgZnJvbSBmaWxlcywgYW5kIGZyb21cbiAgICAgZnVuY3Rpb25zLCBzaW5jZSBpbiB0aG9zZSBjYXNlcywgYWxsb2NhdGluZyB0d28gYnVmZmVycyByZWFkaW5nIGZyb20gdGhlXG4gICAgIHNhbWUgc291cmNlIGlzIHVubmF0dXJhbC5cblxuICAgICBTdGlsbCwgdGhlcmUgaXMgYSBkaWZmaWN1bHR5IGluIHRoZSBjYXNlIG9mIHNjYW5uaW5nIGZyb20gYW4gaW5wdXRcbiAgICAgY2hhbm5lbC4gSW4gZWZmZWN0LCB3aGVuIHNjYW5uaW5nIGZyb20gYW4gaW5wdXQgY2hhbm5lbCBbaWNdLCB0aGlzIGNoYW5uZWxcbiAgICAgbWF5IG5vdCBoYXZlIGJlZW4gYWxsb2NhdGVkIGZyb20gd2l0aGluIHRoaXMgbGlicmFyeS4gSGVuY2UsIGl0IG1heSBiZVxuICAgICBzaGFyZWQgKHR3byBmdW5jdGlvbnMgb2YgdGhlIHVzZXIncyBwcm9ncmFtIG1heSBzdWNjZXNzaXZlbHkgcmVhZCBmcm9tXG4gICAgIFtpY10pLiBUaGlzIGlzIGhpZ2hseSBlcnJvciBwcm9uZSBzaW5jZSwgb25lIG9mIHRoZSBmdW5jdGlvbiBtYXkgc2VlayB0aGVcbiAgICAgaW5wdXQgY2hhbm5lbCwgd2hpbGUgdGhlIG90aGVyIGZ1bmN0aW9uIGhhcyBzdGlsbCBhbiB1bnVzZWQgbG9va2FoZWFkXG4gICAgIGNoYXJhY3RlciBpbiBpdHMgaW5wdXQgYnVmZmVyLiBJbiBjb25jbHVzaW9uLCB5b3Ugc2hvdWxkIG5ldmVyIG1peCBkaXJlY3RcbiAgICAgbG93IGxldmVsIHJlYWRpbmcgYW5kIGhpZ2ggbGV2ZWwgc2Nhbm5pbmcgZnJvbSB0aGUgc2FtZSBpbnB1dCBjaGFubmVsLlxuXG4gICopXG5cbiAgKCogUGVyZm9ybSBidWZmZXJpemVkIGlucHV0IHRvIGltcHJvdmUgZWZmaWNpZW5jeS4gKilcbiAgbGV0IGZpbGVfYnVmZmVyX3NpemUgPSByZWYgMTAyNFxuXG4gICgqIFRoZSBzY2FubmVyIGNsb3NlcyB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQuICopXG4gIGxldCBzY2FuX2Nsb3NlX2F0X2VuZCBpYyA9IFN0ZGxpYi5jbG9zZV9pbiBpYzsgcmFpc2UgRW5kX29mX2ZpbGVcblxuICAoKiBUaGUgc2Nhbm5lciBkb2VzIG5vdCBjbG9zZSB0aGUgaW5wdXQgY2hhbm5lbCBhdCBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IGp1c3QgcmFpc2VzIFtFbmRfb2ZfZmlsZV0uICopXG4gIGxldCBzY2FuX3JhaXNlX2F0X2VuZCBfaWMgPSByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gIGxldCBmcm9tX2ljIHNjYW5fY2xvc2VfaWMgaW5hbWUgaWMgPVxuICAgIGxldCBsZW4gPSAhZmlsZV9idWZmZXJfc2l6ZSBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsaW0gPSByZWYgMCBpblxuICAgIGxldCBlb2YgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA8ICFsaW0gdGhlbiBiZWdpbiBsZXQgYyA9IEJ5dGVzLmdldCBidWYgIWkgaW4gaW5jciBpOyBjIGVuZCBlbHNlXG4gICAgICBpZiAhZW9mIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGUgZWxzZSBiZWdpblxuICAgICAgICBsaW0gOj0gaW5wdXQgaWMgYnVmIDAgbGVuO1xuICAgICAgICBpZiAhbGltID0gMCB0aGVuIGJlZ2luIGVvZiA6PSB0cnVlOyBzY2FuX2Nsb3NlX2ljIGljIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgaSA6PSAxO1xuICAgICAgICAgIEJ5dGVzLmdldCBidWYgMFxuICAgICAgICBlbmRcbiAgICAgIGVuZCBpblxuICAgIGNyZWF0ZSBpbmFtZSBuZXh0XG5cblxuICBsZXQgZnJvbV9pY19jbG9zZV9hdF9lbmQgPSBmcm9tX2ljIHNjYW5fY2xvc2VfYXRfZW5kXG4gIGxldCBmcm9tX2ljX3JhaXNlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcblxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS5cbiAgICAgT25lIGNvdWxkIHRyeSB0byBkZWZpbmUgW3N0ZGluXSBhcyBhIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGEgY2hhcmFjdGVyXG4gICAgIGF0IGEgdGltZSAobm8gYnVmZmVyaXphdGlvbiBhdCBhbGwpLCBidXQgdW5mb3J0dW5hdGVseSB0aGUgdG9wLWxldmVsXG4gICAgIGludGVyYWN0aW9uIHdvdWxkIGJlIHdyb25nLiBUaGlzIGlzIGR1ZSB0byBzb21lIGtpbmQgb2ZcbiAgICAgJ3JhY2UgY29uZGl0aW9uJyB3aGVuIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXSxcbiAgICAgc2luY2UgdGhlIGludGVyYWN0aXZlIGNvbXBpbGVyIGFuZCBbU2NhbmYuc2NhbmZdIHdpbGwgc2ltdWx0YW5lb3VzbHlcbiAgICAgcmVhZCB0aGUgbWF0ZXJpYWwgdGhleSBuZWVkIGZyb20gW1N0ZGxpYi5zdGRpbl07IHRoZW4sIGNvbmZ1c2lvblxuICAgICB3aWxsIHJlc3VsdCBmcm9tIHdoYXQgc2hvdWxkIGJlIHJlYWQgYnkgdGhlIHRvcC1sZXZlbCBhbmQgd2hhdCBzaG91bGQgYmVcbiAgICAgcmVhZCBieSBbU2NhbmYuc2NhbmZdLlxuICAgICBUaGlzIGlzIGV2ZW4gbW9yZSBjb21wbGljYXRlZCBieSB0aGUgb25lIGNoYXJhY3RlciBsb29rYWhlYWQgdGhhdFxuICAgICBbU2NhbmYuc2NhbmZdIGlzIHNvbWV0aW1lcyBvYmxpZ2VkIHRvIG1haW50YWluOiB0aGUgbG9va2FoZWFkIGNoYXJhY3RlclxuICAgICB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgW1NjYW5mLnNjYW5mXSBlbnRyeSwgc2VlbWluZ2x5IGNvbWluZyBmcm9tXG4gICAgIG5vd2hlcmUuXG4gICAgIEFsc28gbm8gW0VuZF9vZl9maWxlXSBpcyByYWlzZWQgd2hlbiByZWFkaW5nIGZyb20gc3RkaW46IGlmIG5vdCBlbm91Z2hcbiAgICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gcmVhZCwgd2Ugc2ltcGx5IGFzayB0byByZWFkIG1vcmUuICopXG4gIGxldCBzdGRpbiA9XG4gICAgZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuICAgICAgKEZyb21fZmlsZSAoXCItXCIsIFN0ZGxpYi5zdGRpbikpIFN0ZGxpYi5zdGRpblxuXG4gIGxldCBvcGVuX2luX2ZpbGUgb3Blbl9pbiBmbmFtZSA9XG4gICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgIHwgXCItXCIgLT4gc3RkaW5cbiAgICB8IGZuYW1lIC0+XG4gICAgICBsZXQgaWMgPSBvcGVuX2luIGZuYW1lIGluXG4gICAgICBmcm9tX2ljX2Nsb3NlX2F0X2VuZCAoRnJvbV9maWxlIChmbmFtZSwgaWMpKSBpY1xuXG5cbiAgbGV0IG9wZW5faW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5cbiAgbGV0IG9wZW5faW5fYmluID0gb3Blbl9pbl9maWxlIFN0ZGxpYi5vcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2ZpbGUgPSBvcGVuX2luXG4gIGxldCBmcm9tX2ZpbGVfYmluID0gb3Blbl9pbl9iaW5cblxuICBsZXQgZnJvbV9jaGFubmVsIGljID1cbiAgICBmcm9tX2ljX3JhaXNlX2F0X2VuZCAoRnJvbV9jaGFubmVsIGljKSBpY1xuXG5cbiAgbGV0IGNsb3NlX2luIGliID1cbiAgICBtYXRjaCBpYi5pY19pbnB1dF9uYW1lIHdpdGhcbiAgICB8IEZyb21fY2hhbm5lbCBpYyAtPlxuICAgICAgU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2ZpbGUgKF9mbmFtZSwgaWMpIC0+IFN0ZGxpYi5jbG9zZV9pbiBpY1xuICAgIHwgRnJvbV9mdW5jdGlvbiB8IEZyb21fc3RyaW5nIC0+ICgpXG5cbmVuZFxuXG5cbigqIEZvcm1hdHRlZCBpbnB1dCBmdW5jdGlvbnMuICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzY2FubmVyID1cbiAgICAgKCdhLCBTY2FubmluZy5pbl9jaGFubmVsLCAnYiwgJ2MsICdhIC0+ICdkLCAnZCkgZm9ybWF0NiAtPiAnY1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2Nhbm5lcl9vcHQgPVxuICAgICAoJ2EsIFNjYW5uaW5nLmluX2NoYW5uZWwsICdiLCAnYywgJ2EgLT4gJ2Qgb3B0aW9uLCAnZCkgZm9ybWF0NiAtPiAnY1xuXG4oKiBSZXBvcnRpbmcgZXJyb3JzLiAqKVxuZXhjZXB0aW9uIFNjYW5fZmFpbHVyZSBvZiBzdHJpbmdcblxubGV0IGJhZF9pbnB1dCBzID0gcmFpc2UgKFNjYW5fZmFpbHVyZSBzKVxuXG5sZXQgYmFkX2lucHV0X2VzY2FwZSBjID1cbiAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImlsbGVnYWwgZXNjYXBlIGNoYXJhY3RlciAlQ1wiIGMpXG5cblxubGV0IGJhZF90b2tlbl9sZW5ndGggbWVzc2FnZSA9XG4gIGJhZF9pbnB1dFxuICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgIFwic2Nhbm5pbmcgb2YgJXMgZmFpbGVkOiBcXFxuICAgICAgICB0aGUgc3BlY2lmaWVkIGxlbmd0aCB3YXMgdG9vIHNob3J0IGZvciB0b2tlblwiXG4gICAgICAgbWVzc2FnZSlcblxuXG5sZXQgYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHByZW1hdHVyZSBlbmQgb2YgZmlsZSBvY2N1cnJlZCBiZWZvcmUgZW5kIG9mIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJubyBkb3Qgb3IgZXhwb25lbnQgcGFydCBmb3VuZCBpbiBmbG9hdCB0b2tlblwiXG5cblxubGV0IGJhZF9oZXhfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJub3QgYSB2YWxpZCBmbG9hdCBpbiBoZXhhZGVjaW1hbCBub3RhdGlvblwiXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaF9lcnIgYyBjaSA9XG4gIFByaW50Zi5zcHJpbnRmIFwibG9va2luZyBmb3IgJUMsIGZvdW5kICVDXCIgYyBjaVxuXG5cbmxldCBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaSA9XG4gIGJhZF9pbnB1dCAoY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpKVxuXG5cbmxldCByZWMgc2tpcF93aGl0ZXMgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlbiBiZWdpblxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+XG4gICAgICBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgc2tpcF93aGl0ZXMgaWJcbiAgICB8IF8gLT4gKClcbiAgZW5kXG5cblxuKCogQ2hlY2tpbmcgdGhhdCBbY10gaXMgaW5kZWVkIGluIHRoZSBpbnB1dCwgdGhlbiBza2lwcyBpdC5cbiAgIEluIHRoaXMgY2FzZSwgdGhlIGNoYXJhY3RlciBbY10gaGFzIGJlZW4gZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlXG4gICBmb3JtYXQgYXMgYmVpbmcgbWFuZGF0b3J5IGluIHRoZSBpbnB1dDsgaGVuY2Ugd2Ugc2hvdWxkIGZhaWwgd2l0aFxuICAgW0VuZF9vZl9maWxlXSBpbiBjYXNlIG9mIGVuZF9vZl9pbnB1dC5cbiAgIChSZW1lbWJlciB0aGF0IFtTY2FuX2ZhaWx1cmVdIGlzIHJhaXNlZCBvbmx5IHdoZW4gKHdlIGNhbiBwcm92ZSBieVxuICAgZXZpZGVuY2UpIHRoYXQgdGhlIGlucHV0IGRvZXMgbm90IG1hdGNoIHRoZSBmb3JtYXQgc3RyaW5nIGdpdmVuLiBXZSBtdXN0XG4gICB0aHVzIGRpZmZlcmVudGlhdGUgW0VuZF9vZl9maWxlXSBhcyBhbiBlcnJvciBkdWUgdG8gbGFjayBvZiBpbnB1dCwgYW5kXG4gICBbU2Nhbl9mYWlsdXJlXSB3aGljaCBpcyBkdWUgdG8gcHJvdmFibHkgd3JvbmcgaW5wdXQuIEkgYW0gbm90IHN1cmUgdGhpcyBpc1xuICAgd29ydGggdGhlIGJ1cmRlbjogaXQgaXMgY29tcGxleCBhbmQgc29tZWhvdyBzdWJsaW1pbmFsOyBzaG91bGQgYmUgY2xlYXJlclxuICAgdG8gZmFpbCB3aXRoIFNjYW5fZmFpbHVyZSBcIk5vdCBlbm91Z2ggaW5wdXQgdG8gY29tcGxldGUgc2Nhbm5pbmdcIiEpXG5cbiAgIFRoYXQncyB3aHksIHdhaXRpbmcgZm9yIGEgYmV0dGVyIHNvbHV0aW9uLCB3ZSB1c2UgY2hlY2tlZF9wZWVrX2NoYXIgaGVyZS5cbiAgIFdlIGFyZSBhbHNvIGNhcmVmdWwgdG8gdHJlYXQgXCJcXHJcXG5cIiBpbiB0aGUgaW5wdXQgYXMgYW4gZW5kIG9mIGxpbmUgbWFya2VyOlxuICAgaXQgYWx3YXlzIG1hdGNoZXMgYSAnXFxuJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBpbnB1dCBmb3JtYXQgc3RyaW5nLiAqKVxubGV0IHJlYyBjaGVja19jaGFyIGliIGMgPVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnICcgLT4gc2tpcF93aGl0ZXMgaWJcbiAgfCAnXFxuJyAtPiBjaGVja19uZXdsaW5lIGliXG4gIHwgYyAtPiBjaGVja190aGlzX2NoYXIgaWIgY1xuXG5hbmQgY2hlY2tfdGhpc19jaGFyIGliIGMgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBjaSA9IGMgdGhlbiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiBlbHNlXG4gIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cbmFuZCBjaGVja19uZXdsaW5lIGliID1cbiAgbGV0IGNpID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggY2kgd2l0aFxuICB8ICdcXG4nIC0+IFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gIHwgJ1xccicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7IGNoZWNrX3RoaXNfY2hhciBpYiAnXFxuJ1xuICB8IF8gLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXG4nIGNpXG5cblxuKCogRXh0cmFjdGluZyB0b2tlbnMgZnJvbSB0aGUgb3V0cHV0IHRva2VuIGJ1ZmZlci4gKilcblxubGV0IHRva2VuX2NoYXIgaWIgPSAoU2Nhbm5pbmcudG9rZW4gaWIpLlswXVxuXG5sZXQgdG9rZW5fc3RyaW5nID0gU2Nhbm5pbmcudG9rZW5cblxubGV0IHRva2VuX2Jvb2wgaWIgPVxuICBtYXRjaCBTY2FubmluZy50b2tlbiBpYiB3aXRoXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IHMgLT4gYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImludmFsaWQgYm9vbGVhbiAnJXMnXCIgcylcblxuXG4oKiBUaGUgdHlwZSBvZiBpbnRlZ2VyIGNvbnZlcnNpb25zLiAqKVxudHlwZSBpbnRlZ2VyX2NvbnZlcnNpb24gPVxuICB8IEJfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBiaW5hcnkgY29udmVyc2lvbiAqKVxuICB8IERfY29udmVyc2lvbiAoKiBTaWduZWQgZGVjaW1hbCBjb252ZXJzaW9uICopXG4gIHwgSV9jb252ZXJzaW9uICgqIFNpZ25lZCBpbnRlZ2VyIGNvbnZlcnNpb24gKilcbiAgfCBPX2NvbnZlcnNpb24gKCogVW5zaWduZWQgb2N0YWwgY29udmVyc2lvbiAqKVxuICB8IFVfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBYX2NvbnZlcnNpb24gKCogVW5zaWduZWQgaGV4YWRlY2ltYWwgY29udmVyc2lvbiAqKVxuXG5cbmxldCBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciA9IGZ1bmN0aW9uXG4gIHwgJ2InIC0+IEJfY29udmVyc2lvblxuICB8ICdkJyAtPiBEX2NvbnZlcnNpb25cbiAgfCAnaScgLT4gSV9jb252ZXJzaW9uXG4gIHwgJ28nIC0+IE9fY29udmVyc2lvblxuICB8ICd1JyAtPiBVX2NvbnZlcnNpb25cbiAgfCAneCcgfCAnWCcgLT4gWF9jb252ZXJzaW9uXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuXG4oKiBFeHRyYWN0IGFuIGludGVnZXIgbGl0ZXJhbCB0b2tlbi5cbiAgIFNpbmNlIHRoZSBmdW5jdGlvbnMgU3RkbGliLippbnQqX29mX3N0cmluZyBkbyBub3QgYWNjZXB0IGEgbGVhZGluZyArLFxuICAgd2Ugc2tpcCBpdCBpZiBuZWNlc3NhcnkuICopXG5sZXQgdG9rZW5faW50X2xpdGVyYWwgY29udiBpYiA9XG4gIGxldCB0b2sgPVxuICAgIG1hdGNoIGNvbnYgd2l0aFxuICAgIHwgRF9jb252ZXJzaW9uIHwgSV9jb252ZXJzaW9uIC0+IFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBVX2NvbnZlcnNpb24gLT4gXCIwdVwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IE9fY29udmVyc2lvbiAtPiBcIjBvXCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgWF9jb252ZXJzaW9uIC0+IFwiMHhcIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBCX2NvbnZlcnNpb24gLT4gXCIwYlwiIF4gU2Nhbm5pbmcudG9rZW4gaWIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHRvayBpblxuICBpZiBsID0gMCB8fCB0b2suWzBdIDw+ICcrJyB0aGVuIHRvayBlbHNlIFN0cmluZy5zdWIgdG9rIDEgKGwgLSAxKVxuXG5cbigqIEFsbCB0aGUgZnVuY3Rpb25zIHRoYXQgY29udmVydCBhIHN0cmluZyB0byBhIG51bWJlciByYWlzZSB0aGUgZXhjZXB0aW9uXG4gICBGYWlsdXJlIHdoZW4gdGhlIGNvbnZlcnNpb24gaXMgbm90IHBvc3NpYmxlLlxuICAgVGhpcyBleGNlcHRpb24gaXMgdGhlbiB0cmFwcGVkIGluIFtrc2NhbmZdLiAqKVxubGV0IHRva2VuX2ludCBjb252IGliID0gaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcblxubGV0IHRva2VuX2Zsb2F0IGliID0gZmxvYXRfb2Zfc3RyaW5nIChTY2FubmluZy50b2tlbiBpYilcblxuKCogVG8gc2NhbiBuYXRpdmUgaW50cywgaW50MzIgYW5kIGludDY0IGludGVnZXJzLlxuICAgV2UgY2Fubm90IGFjY2VzcyB0byBjb252ZXJzaW9ucyB0by9mcm9tIHN0cmluZ3MgZm9yIHRob3NlIHR5cGVzLFxuICAgTmF0aXZlaW50Lm9mX3N0cmluZywgSW50MzIub2Zfc3RyaW5nLCBhbmQgSW50NjQub2Zfc3RyaW5nLFxuICAgc2luY2UgdGhvc2UgbW9kdWxlcyBhcmUgbm90IGF2YWlsYWJsZSB0byBbU2NhbmZdLlxuICAgSG93ZXZlciwgd2UgY2FuIGJpbmQgYW5kIHVzZSB0aGUgY29ycmVzcG9uZGluZyBwcmltaXRpdmVzIHRoYXQgYXJlXG4gICBhdmFpbGFibGUgaW4gdGhlIHJ1bnRpbWUuICopXG5leHRlcm5hbCBuYXRpdmVpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50MzJfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIGludDY0X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5cbmxldCB0b2tlbl9uYXRpdmVpbnQgY29udiBpYiA9IG5hdGl2ZWludF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5sZXQgdG9rZW5faW50MzIgY29udiBpYiA9IGludDMyX29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQ2NCBjb252IGliID0gaW50NjRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG4oKiBTY2FubmluZyBudW1iZXJzLiAqKVxuXG4oKiBEaWdpdHMgc2Nhbm5pbmcgZnVuY3Rpb25zIHN1cHBvc2UgdGhhdCBvbmUgY2hhcmFjdGVyIGhhcyBiZWVuIGNoZWNrZWQgYW5kXG4gICBpcyBhdmFpbGFibGUsIHNpbmNlIHRoZXkgcmV0dXJuIGF0IGVuZCBvZiBmaWxlIHdpdGggdGhlIGN1cnJlbnRseSBmb3VuZFxuICAgdG9rZW4gc2VsZWN0ZWQuXG5cbiAgIFB1dCBpdCBpbiBhbm90aGVyIHdheSwgdGhlIGRpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc2NhbiBmb3IgYSBwb3NzaWJseVxuICAgZW1wdHkgc2VxdWVuY2Ugb2YgZGlnaXRzLCAoaGVuY2UsIGEgc3VjY2Vzc2Z1bCBzY2FubmluZyBmcm9tIG9uZSBvZiB0aG9zZVxuICAgZnVuY3Rpb25zIGRvZXMgbm90IGltcGx5IHRoYXQgdGhlIHRva2VuIGlzIGEgd2VsbC1mb3JtZWQgbnVtYmVyOiB0byBnZXQgYVxuICAgdHJ1ZSBudW1iZXIsIGl0IGlzIG1hbmRhdG9yeSB0byBjaGVjayB0aGF0IGF0IGxlYXN0IG9uZSB2YWxpZCBkaWdpdCBpc1xuICAgYXZhaWxhYmxlIGJlZm9yZSBjYWxsaW5nIG9uZSBvZiB0aGUgZGlnaXQgc2Nhbm5pbmcgZnVuY3Rpb25zKS4gKilcblxuKCogVGhlIGRlY2ltYWwgY2FzZSBpcyB0cmVhdGVkIGVzcGVjaWFsbHkgZm9yIG9wdGltaXphdGlvbiBwdXJwb3Nlcy4gKilcbmxldCByZWMgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCAnXycgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYiBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkZWNpbWFsIGRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBjIC0+XG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSBkZWNpbWFsIGRpZ2l0XCIgYylcblxuXG4oKiBUbyBzY2FuIG51bWJlcnMgZnJvbSBvdGhlciBiYXNlcywgd2UgdXNlIGEgcHJlZGljYXRlIGFyZ3VtZW50IHRvXG4gICBzY2FuIGRpZ2l0cy4gKilcbmxldCBzY2FuX2RpZ2l0X3N0YXIgZGlnaXRwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBzY2FuX2RpZ2l0cyB3aWR0aCBpYiA9XG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgYyB3aGVuIGRpZ2l0cCBjIC0+XG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCAnXycgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuICAgIHwgXyAtPiB3aWR0aCBpblxuICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2RpZ2l0X3BsdXMgYmFzaXMgZGlnaXRwIHdpZHRoIGliID1cbiAgKCogRW5zdXJlIHdlIGhhdmUgZ290IGVub3VnaCB3aWR0aCBsZWZ0LFxuICAgICBhbmQgcmVhZCBhdCBsZWFzdCBvbmUgZGlnaXQuICopXG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkaWdpdHNcIiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgaWYgZGlnaXRwIGMgdGhlblxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWJcbiAgZWxzZVxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJjaGFyYWN0ZXIgJUMgaXMgbm90IGEgdmFsaWQgJXMgZGlnaXRcIiBjIGJhc2lzKVxuXG5cbmxldCBpc19iaW5hcnlfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnMScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9iaW5hcnlfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiYmluYXJ5XCIgaXNfYmluYXJ5X2RpZ2l0XG5cbmxldCBpc19vY3RhbF9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc3JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX29jdGFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcIm9jdGFsXCIgaXNfb2N0YWxfZGlnaXRcblxubGV0IGlzX2hleGFfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2hleGFkZWNpbWFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcImhleGFkZWNpbWFsXCIgaXNfaGV4YV9kaWdpdFxuXG4oKiBTY2FuIGEgZGVjaW1hbCBpbnRlZ2VyLiAqKVxubGV0IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgPSBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1c1xuXG5sZXQgc2Nhbl9zaWduIHdpZHRoIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnKycgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgJy0nIC0+IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgY1xuICB8IF8gLT4gd2lkdGhcblxuXG5sZXQgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2NhbiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHRoYXQgY291bGQgYmUgZ2l2ZW4gaW4gYW55IChjb21tb24pIGJhc2lzLlxuICAgSWYgZGlnaXRzIGFyZSBwcmVmaXhlZCBieSBvbmUgb2YgMHgsIDBYLCAwbywgb3IgMGIsIHRoZSBudW1iZXIgaXNcbiAgIGFzc3VtZWQgdG8gYmUgd3JpdHRlbiByZXNwZWN0aXZlbHkgaW4gaGV4YWRlY2ltYWwsIGhleGFkZWNpbWFsLFxuICAgb2N0YWwsIG9yIGJpbmFyeS4gKilcbmxldCBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICBiZWdpbiBtYXRjaCBjIHdpdGhcbiAgICB8ICd4JyB8ICdYJyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgJ28nIC0+IHNjYW5fb2N0YWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnYicgLT4gc2Nhbl9iaW5hcnlfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCBfIC0+IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGVuZFxuICB8IF8gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2ludF9jb252ZXJzaW9uIGNvbnYgd2lkdGggaWIgPVxuICBtYXRjaCBjb252IHdpdGhcbiAgfCBCX2NvbnZlcnNpb24gLT4gc2Nhbl9iaW5hcnlfaW50IHdpZHRoIGliXG4gIHwgRF9jb252ZXJzaW9uIC0+IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgfCBJX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9pbnQgd2lkdGggaWJcbiAgfCBPX2NvbnZlcnNpb24gLT4gc2Nhbl9vY3RhbF9pbnQgd2lkdGggaWJcbiAgfCBVX2NvbnZlcnNpb24gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IFhfY29udmVyc2lvbiAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbigqIFNjYW5uaW5nIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICopXG5cbigqIEZyYWN0aW9uYWwgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9mcmFjdGlvbmFsX3BhcnQgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogRXhwIHBhcnQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZWR1Y2VkIHRvIDAgZGlnaXRzLiAqKVxubGV0IHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnZScgfCAnRScgYXMgYyAtPlxuICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogU2NhbiB0aGUgaW50ZWdlciBwYXJ0IG9mIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCAobm90IHVzaW5nIHRoZVxuICAgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uIHNpbmNlIHRoZSBpbnRlZ2VyIHBhcnQgY2FuIGJlIGVtcHR5KTpcbiAgIGFuIG9wdGlvbmFsIHNpZ24sIGZvbGxvd2VkIGJ5IGEgcG9zc2libHkgZW1wdHkgc2VxdWVuY2Ugb2YgZGVjaW1hbFxuICAgZGlnaXRzIChlLmcuIC0uMSkuICopXG5sZXQgc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcblxuXG4oKlxuICAgRm9yIHRoZSB0aW1lIGJlaW5nIHdlIGhhdmUgKGFzIGZvdW5kIGluIHNjYW5mLm1saSk6XG4gICB0aGUgZmllbGQgd2lkdGggaXMgY29tcG9zZWQgb2YgYW4gb3B0aW9uYWwgaW50ZWdlciBsaXRlcmFsXG4gICBpbmRpY2F0aW5nIHRoZSBtYXhpbWFsIHdpZHRoIG9mIHRoZSB0b2tlbiB0byByZWFkLlxuICAgVW5mb3J0dW5hdGVseSwgdGhlIHR5cGUtY2hlY2tlciBsZXQgdGhlIHVzZXIgd3JpdGUgYW4gb3B0aW9uYWwgcHJlY2lzaW9uLFxuICAgc2luY2UgdGhpcyBpcyB2YWxpZCBmb3IgcHJpbnRmIGZvcm1hdCBzdHJpbmdzLlxuXG4gICBUaHVzLCB0aGUgbmV4dCBzdGVwIGZvciBTY2FuZiBpcyB0byBzdXBwb3J0IGEgZnVsbCB3aWR0aCBhbmQgcHJlY2lzaW9uXG4gICBpbmRpY2F0aW9uLCBtb3JlIG9yIGxlc3Mgc2ltaWxhciB0byB0aGUgb25lIGZvciBwcmludGYsIHBvc3NpYmx5IGV4dGVuZGVkXG4gICB0byB0aGUgc3BlY2lmaWNhdGlvbiBvZiBhIFttYXgsIG1pbl0gcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZFxuICAgZm9yIHN0cmluZ3MuIFNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgc3BlYyBmb3Igc2NhbmYubWxpOlxuXG4gICBUaGUgb3B0aW9uYWwgW3dpZHRoXSBpcyBhbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIG1heGltYWxcbiAgIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLiBGb3IgaW5zdGFuY2UsIFslNmRdIHJlYWRzIGFuIGludGVnZXIsXG4gICBoYXZpbmcgYXQgbW9zdCA2IGNoYXJhY3RlcnMuXG5cbiAgIFRoZSBvcHRpb25hbCBbcHJlY2lzaW9uXSBpcyBhIGRvdCBbLl0gZm9sbG93ZWQgYnkgYW4gaW50ZWdlcjpcblxuICAgLSBpbiB0aGUgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGNvbnZlcnNpb25zIChbJWZdLCBbJWVdLCBbJWddLCBbJUZdLCBbJUVdLFxuICAgYW5kIFslRl0gY29udmVyc2lvbnMsIHRoZSBbcHJlY2lzaW9uXSBpbmRpY2F0ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mXG4gICBkaWdpdHMgdGhhdCBtYXkgZm9sbG93IHRoZSBkZWNpbWFsIHBvaW50LiBGb3IgaW5zdGFuY2UsIFslLjRmXSByZWFkcyBhXG4gICBbZmxvYXRdIHdpdGggYXQgbW9zdCA0IGZyYWN0aW9uYWwgZGlnaXRzLFxuXG4gICAtIGluIHRoZSBzdHJpbmcgY29udmVyc2lvbnMgKFslc10sIFslU10sIFslXFxbIHJhbmdlIFxcXV0pLCBhbmQgaW4gdGhlXG4gICBpbnRlZ2VyIG51bWJlciBjb252ZXJzaW9ucyAoWyVpXSwgWyVkXSwgWyV1XSwgWyV4XSwgWyVvXSwgYW5kIHRoZWlyXG4gICBbaW50MzJdLCBbaW50NjRdLCBhbmQgW25hdGl2ZV9pbnRdIGNvcnJlc3BvbmRlbnQpLCB0aGUgW3ByZWNpc2lvbl1cbiAgIGluZGljYXRlcyB0aGUgcmVxdWlyZWQgbWluaW11bSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZCxcblxuICAgLSBvbiBhbGwgb3RoZXIgY29udmVyc2lvbnMsIHRoZSB3aWR0aCBhbmQgcHJlY2lzaW9uIHNwZWNpZnkgdGhlIFttYXgsIG1pbl1cbiAgIHJhbmdlIGZvciB0aGUgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuXG4qKVxubGV0IHNjYW5fZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoLCBwcmVjaXNpb24gZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnLicgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICBsZXQgd2lkdGggPSB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIpIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cbiAgfCBfIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cblxuXG5sZXQgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgZXJyb3Igc3RyID1cbiAgbGV0IGxvd2VyY2FzZSBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICdBJyAuLiAnWicgLT5cbiAgICAgIGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgaW50X29mX2NoYXIgJ2EnKVxuICAgIHwgXyAtPiBjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGggPSByZWYgd2lkdGggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIGxvd2VyY2FzZSBjIDw+IGxvd2VyY2FzZSBzdHIuW2ldIHRoZW4gZXJyb3IgKCk7XG4gICAgaWYgIXdpZHRoID0gMCB0aGVuIGVycm9yICgpO1xuICAgIHdpZHRoIDo9IFNjYW5uaW5nLnN0b3JlX2NoYXIgIXdpZHRoIGliIGM7XG4gIGRvbmU7XG4gICF3aWR0aFxuXG5cbmxldCBzY2FuX2hleF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBsZXQgd2lkdGggPSBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwieFwiIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICAgIClcbiAgICAgICAgICB8IF8gLT4gd2lkdGggaW5cbiAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgICAgfCBfIC0+IHdpZHRoXG4gIClcbiAgfCAnbicgfCAnTicgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJhblwiXG4gIHwgJ2knIHwgJ0knIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwibmZpbml0eVwiXG4gIHwgXyAtPiBiYWRfaGV4X2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICgqIFRoZSBlZmZlY3RpdmUgd2lkdGggYXZhaWxhYmxlIGZvciBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IGlzXG4gICAgICAgdGhlIG1pbmltdW0gb2YgZGVjbGFyZWQgcHJlY2lzaW9uIGFuZCB3aWR0aCBsZWZ0LiAqKVxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICgqIEFmdGVyIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgd2l0aCBbcHJlY2lzaW9uXSBwcm92aXNpb25hbCB3aWR0aCxcbiAgICAgICBbd2lkdGhfcHJlY2lzaW9uXSBpcyBsZWZ0LiAqKVxuICAgIGxldCB3aWR0aF9wcmVjaXNpb24gPSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIgaW5cbiAgICAoKiBIZW5jZSwgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB0b29rIGV4YWN0bHlcbiAgICAgICBbcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uXSBjaGFycy4gKilcbiAgICBsZXQgZnJhY193aWR0aCA9IHByZWNpc2lvbiAtIHdpZHRoX3ByZWNpc2lvbiBpblxuICAgICgqIEFuZCBuZXcgcHJvdmlzaW9uYWwgd2lkdGggaXMgW3dpZHRoIC0gd2lkdGhfcHJlY2lzaW9uLiAqKVxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gZnJhY193aWR0aCBpblxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8ICdlJyB8ICdFJyAtPlxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8IF8gLT4gYmFkX2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPiAoXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIGFzIGMgLT4gKFxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgICAgbGV0IHdpZHRoID0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWIgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgIHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5faGV4YWRlY2ltYWxfaW50IHByZWNpc2lvbiBpYilcbiAgICAgICAgKVxuICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gYmFkX2Zsb2F0ICgpIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICdwJyB8ICdQJyBhcyBjIC0+XG4gICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICAgICAgICB8IF8gLT4gd2lkdGhcbiAgICApXG4gICAgfCBfIC0+XG4gICAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbiAgKVxuICB8ICcxJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliXG4oKiBTcGVjaWFsIGNhc2Ugb2YgbmFuIGFuZCBpbmZpbml0eTpcbiAgfCAnaScgLT5cbiAgfCAnbicgLT5cbiopXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG4oKiBTY2FuIGEgcmVndWxhciBzdHJpbmc6XG4gICBzdG9wcyB3aGVuIGVuY291bnRlcmluZyBhIHNwYWNlLCBpZiBubyBzY2FubmluZyBpbmRpY2F0aW9uIGhhcyBiZWVuIGdpdmVuO1xuICAgb3RoZXJ3aXNlLCBzdG9wcyB3aGVuIGVuY291bnRlcmluZyB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc2Nhbm5pbmdcbiAgIGluZGljYXRpb24gW3N0cF0uXG4gICBJdCBhbHNvIHN0b3BzIGF0IGVuZCBvZiBmaWxlIG9yIHdoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgaGFzXG4gICBiZWVuIHJlYWQuICopXG5sZXQgc2Nhbl9zdHJpbmcgc3RwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBsb29wIHdpZHRoID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICBtYXRjaCBzdHAgd2l0aFxuICAgICAgfCBTb21lIGMnIHdoZW4gYyA9IGMnIC0+IFNjYW5uaW5nLnNraXBfY2hhciB3aWR0aCBpYlxuICAgICAgfCBTb21lIF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpblxuICBsb29wIHdpZHRoXG5cblxuKCogU2NhbiBhIGNoYXI6IHBlZWsgc3RyaWN0bHkgb25lIGNoYXJhY3RlciBpbiB0aGUgaW5wdXQsIHdoYXRzb2V2ZXIuICopXG5sZXQgc2Nhbl9jaGFyIHdpZHRoIGliID1cbiAgKCogVGhlIGNhc2Ugd2lkdGggPSAwIGNvdWxkIG5vdCBoYXBwZW4gaGVyZSwgc2luY2UgaXQgaXMgdGVzdGVkIGJlZm9yZVxuICAgICBjYWxsaW5nIHNjYW5fY2hhciwgaW4gdGhlIG1haW4gc2Nhbm5pbmcgZnVuY3Rpb24uXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImEgY2hhcmFjdGVyXCIgZWxzZSAqKVxuICBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIChTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYilcblxuXG5sZXQgY2hhcl9mb3JfYmFja3NsYXNoID0gZnVuY3Rpb25cbiAgfCAnbicgLT4gJ1xcMDEwJ1xuICB8ICdyJyAtPiAnXFwwMTMnXG4gIHwgJ2InIC0+ICdcXDAwOCdcbiAgfCAndCcgLT4gJ1xcMDA5J1xuICB8IGMgLT4gY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYyA9IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcblxubGV0IGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxMDAgKiBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzAgK1xuICAgICAxMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICAgZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICBcImJhZCBjaGFyYWN0ZXIgZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlYyVjXCIgYzAgYzEgYzIpIGVsc2VcbiAgY2hhcl9vZl9pbnQgY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBoZXhhZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuICopXG5sZXQgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID1cbiAgbGV0IGQgPSBpbnRfb2ZfY2hhciBjIGluXG4gICgqIENvdWxkIGFsc28gYmU6XG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnOScgdGhlbiBkIC0gaW50X29mX2NoYXIgJzAnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdGJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdBJyBlbHNlXG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnZicgdGhlbiAxMCArIGQgLSBpbnRfb2ZfY2hhciAnYScgZWxzZSBhc3NlcnQgZmFsc2VcbiAgKilcbiAgaWYgZCA+PSBpbnRfb2ZfY2hhciAnYScgdGhlblxuICAgIGQgLSA4NyAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKikgZWxzZVxuICBpZiBkID49IGludF9vZl9jaGFyICdBJyB0aGVuXG4gICAgZCAtIDU1ICAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKikgZWxzZVxuICAgIGQgLSBpbnRfb2ZfY2hhciAnMCdcblxuXG5sZXQgY2hhcl9mb3JfaGV4YWRlY2ltYWxfY29kZSBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxNiAqIGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzEgK1xuICAgICAgICAgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMiBpblxuICBpZiBjIDwgMCB8fCBjID4gMjU1IHRoZW5cbiAgICBiYWRfaW5wdXRcbiAgICAgIChQcmludGYuc3ByaW50ZiBcImJhZCBjaGFyYWN0ZXIgaGV4YWRlY2ltYWwgZW5jb2RpbmcgXFxcXCVjJWNcIiBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogQ2FsbGVkIGluIHBhcnRpY3VsYXIgd2hlbiBlbmNvdW50ZXJpbmcgJ1xcXFwnIGFzIHN0YXJ0ZXIgb2YgYSBjaGFyLlxuICAgU3RvcHMgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nICdcXCcnLiAqKVxubGV0IGNoZWNrX25leHRfY2hhciBtZXNzYWdlIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlIGVsc2VcbiAgY1xuXG5cbmxldCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgPSBjaGVja19uZXh0X2NoYXIgXCJhIENoYXJcIlxubGV0IGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nID0gY2hlY2tfbmV4dF9jaGFyIFwiYSBTdHJpbmdcIlxuXG5sZXQgc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYiA9XG4gIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gIHwgJ1xcXFwnIHwgJ1xcJycgfCAnXFxcIicgfCAnbicgfCAndCcgfCAnYicgfCAncicgYXMgYyAtPlxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKGNoYXJfZm9yX2JhY2tzbGFzaCBjKVxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCBnZXRfZGlnaXQgKCkgPVxuICAgICAgbGV0IGMgPSBTY2FubmluZy5uZXh0X2NoYXIgaWIgaW5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMCA9IGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9kZWNpbWFsX2NvZGUgYzAgYzEgYzIpXG4gIHwgJ3gnIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyBhcyBjIC0+IGNcbiAgICAgIHwgYyAtPiBiYWRfaW5wdXRfZXNjYXBlIGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyKVxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXRfZXNjYXBlIGNcblxuXG4oKiBTY2FuIGEgY2hhcmFjdGVyIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX2NoYXIgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcJycgLT4gZmluZF9jaGFyIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXCcnIGNcblxuICBhbmQgZmluZF9jaGFyIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXFwnIC0+XG4gICAgICBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKSBpYilcbiAgICB8IGMgLT5cbiAgICAgIGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgYyBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgZGVsaW1pdGVkIHN0cmluZyAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFxcIicgY1xuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXFwiJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgJ1xcXFwnIC0+IHNjYW5fYmFja3NsYXNoIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIHNjYW5fYmFja3NsYXNoIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxyJyAtPiBza2lwX25ld2xpbmUgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgd2lkdGggaWIpXG5cbiAgYW5kIHNraXBfbmV3bGluZSB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgJ1xccicpXG5cbiAgYW5kIHNraXBfc3BhY2VzIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnICcgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3Agd2lkdGggaW5cblxuICBmaW5kX3N0YXJ0IHdpZHRoXG5cblxuKCogU2NhbiBhIGJvb2xlYW4gKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2Jvb2wgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGxldCBtID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICd0JyAtPiA0XG4gICAgfCAnZicgLT4gNVxuICAgIHwgYyAtPlxuICAgICAgYmFkX2lucHV0XG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcInRoZSBjaGFyYWN0ZXIgJUMgY2Fubm90IHN0YXJ0IGEgYm9vbGVhblwiIGMpIGluXG4gIHNjYW5fc3RyaW5nIE5vbmUgbSBpYlxuXG5cbigqIFNjYW4gYSBzdHJpbmcgY29udGFpbmluZyBlbGVtZW50cyBpbiBjaGFyX3NldCBhbmQgdGVybWluYXRlZCBieSBzY2FuX2luZGljXG4gICBpZiBwcm92aWRlZC4gKilcbmxldCBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IHNjYW5faW5kaWMgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fY2hhcnMgaSBzdHAgPVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgaSA+IDAgJiYgbm90IChTY2FubmluZy5lb2YgaWIpICYmXG4gICAgICAgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyAmJlxuICAgICAgIGludF9vZl9jaGFyIGMgPD4gc3RwIHRoZW5cbiAgICAgIGxldCBfID0gU2Nhbm5pbmcuc3RvcmVfY2hhciBtYXhfaW50IGliIGMgaW5cbiAgICAgIHNjYW5fY2hhcnMgKGkgLSAxKSBzdHAgaW5cbiAgbWF0Y2ggc2Nhbl9pbmRpYyB3aXRoXG4gIHwgTm9uZSAtPiBzY2FuX2NoYXJzIHdpZHRoICgtMSk7XG4gIHwgU29tZSBjIC0+XG4gICAgc2Nhbl9jaGFycyB3aWR0aCAoaW50X29mX2NoYXIgYyk7XG4gICAgaWYgbm90IChTY2FubmluZy5lb2YgaWIpIHRoZW5cbiAgICAgIGxldCBjaSA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgICAgaWYgYyA9IGNpXG4gICAgICB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gICAgICBlbHNlIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cblxuKCogVGhlIGdsb2JhbCBlcnJvciByZXBvcnQgZnVuY3Rpb24gZm9yIFtTY2FuZl0uICopXG5sZXQgc2NhbmZfYmFkX2lucHV0IGliID0gZnVuY3Rpb25cbiAgfCBTY2FuX2ZhaWx1cmUgcyB8IEZhaWx1cmUgcyAtPlxuICAgIGxldCBpID0gU2Nhbm5pbmcuY2hhcl9jb3VudCBpYiBpblxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJzY2FuZjogYmFkIGlucHV0IGF0IGNoYXIgbnVtYmVyICVpOiAlc1wiIGkgcylcbiAgfCB4IC0+IHJhaXNlIHhcblxuXG4oKiBHZXQgdGhlIGNvbnRlbnQgb2YgYSBjb3VudGVyIGZyb20gYW4gaW5wdXQgYnVmZmVyLiAqKVxubGV0IGdldF9jb3VudGVyIGliIGNvdW50ZXIgPVxuICBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgLT4gU2Nhbm5pbmcubGluZV9jb3VudCBpYlxuICB8IENoYXJfY291bnRlciAtPiBTY2FubmluZy5jaGFyX2NvdW50IGliXG4gIHwgVG9rZW5fY291bnRlciAtPiBTY2FubmluZy50b2tlbl9jb3VudCBpYlxuXG5cbigqIENvbXB1dGUgdGhlIHdpZHRoIG9mIGEgcGFkZGluZyBvcHRpb24gKHNlZSBcIiU0MntcIiBhbmQgXCIlMTIzKFwiKS4gKilcbmxldCB3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IG1heF9pbnRcbiAgfCBTb21lIHdpZHRoIC0+IHdpZHRoXG5cblxubGV0IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nID1cbiAgaWYgZm10aW5nID0gRXNjYXBlZF9wZXJjZW50IHRoZW4gJyUnLCBcIlwiIGVsc2VcbiAgICBsZXQgc3RyID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZyBpblxuICAgIGxldCBzdHAgPSBzdHIuWzFdIGluXG4gICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciAyIChTdHJpbmcubGVuZ3RoIHN0ciAtIDIpIGluXG4gICAgc3RwLCBzdWJfc3RyXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFJlYWRlciBtYW5hZ2VtZW50ICopXG5cbigqIEEgY2FsbCB0byB0YWtlX2Zvcm1hdF9yZWFkZXJzIG9uIGEgZm9ybWF0IGlzIGV2YWx1YXRlZCBpbnRvIGZ1bmN0aW9uc1xuICAgdGFraW5nIHJlYWRlcnMgYXMgYXJndW1lbnRzIGFuZCBhZ2dyZWdhdGUgdGhlbSBpbnRvIGFuIGhldGVyb2dlbmVvdXMgbGlzdCAqKVxuKCogV2hlbiBhbGwgcmVhZGVycyBhcmUgdGFrZW4sIGZpbmFsbHkgcGFzcyB0aGUgbGlzdCBvZiB0aGUgcmVhZGVycyB0byB0aGVcbiAgIGNvbnRpbnVhdGlvbiBrLiAqKVxubGV0IHJlYyB0YWtlX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgZCA9XG5mdW4gayBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdFxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9jaGFyIHJlc3QgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENhbWxfc3RyaW5nIChfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQzMiAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IE5hdGl2ZWludCAoXywgXywgXywgcmVzdCkgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50NjQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGbG9hdCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEJvb2wgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQWxwaGEgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEN1c3RvbSAoXywgXywgcmVzdCkgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSwgcmVzdCkgLT5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdCBmbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgICAgLT5cbiAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKSByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgICAgICAgLT4gdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIGsgaWduIHJlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgICAgICAgIC0+IGsgTmlsXG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGZtdHR5IGNvbWluZyBmcm9tIGEgRm9ybWF0X3N1YnN0IFwiJSguLi4lKVwiLiAqKVxuYW5kIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIHggeSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgeCwgeSkgZm10dHkgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFJlYWRlcl90eSBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgQ2hhcl90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGb3JtYXRfYXJnX3R5IChfLCByZXN0KSAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGlnbm9yZWQgcGFyYW1ldGVyLiAqKVxuYW5kIHRha2VfaWdub3JlZF9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBpZ25vcmVkIC0+XG4gICAgICAoeSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgeCwgZSwgZikgZm10IC0+IGQgPVxuZnVuIGsgaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10XG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgZm10dHkgZm10XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgc2Nhbm5pbmcgKilcblxuKCogTWFrZSBhIGdlbmVyaWMgc2Nhbm5pbmcgZnVuY3Rpb24uICopXG4oKiBTY2FuIGEgc3RyZWFtIGFjY29yZGluZyB0byBhIGZvcm1hdCBhbmQgcmVhZGVycyBvYnRhaW5lZCBieVxuICAgdGFrZV9mb3JtYXRfcmVhZGVycywgYW5kIGFnZ3JlZ2F0ZSBzY2FubmVkIHZhbHVlcyBpbnRvIGFuXG4gICBoZXRlcm9nZW5lb3VzIGxpc3QuICopXG4oKiBSZXR1cm4gdGhlIGhldGVyb2dlbmVvdXMgbGlzdCBvZiBzY2FubmVkIHZhbHVlcy4gKilcbmxldCByZWMgbWFrZV9zY2FuZiA6IHR5cGUgYSBjIGQgZSBmLlxuICAgIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKGQsIGUpIGhldGVyX2xpc3QgLT4gKGEsIGYpIGhldGVyX2xpc3QgPVxuZnVuIGliIGZtdCByZWFkZXJzIC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NoYXIgMCBpYiBpblxuICAgIGxldCBjID0gdG9rZW5fY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSBzdHApIHdpZHRoIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiBzdHJfcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICd7Jykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpKSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSAnWycpIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhblxuICAgICAgICAgICAgICAgICAgIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyBOb25lIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcblxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50IGMpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludDMyIGMpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9uYXRpdmVpbnQgYylcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50NjQgYylcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9GIHwgRmxvYXRfQ0YpKSwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2NhbWxfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRykpLFxuICAgICAgICAgICBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9oIHwgRmxvYXRfSCkpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5faGV4X2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIF8gXyBpYiA9IHNjYW5fYm9vbCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fYm9vbFxuICB8IEFscGhhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJWFcXFwiXCJcbiAgfCBUaGV0YSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiV0XFxcIlwiXG4gIHwgQ3VzdG9tIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJT9cXFwiIChjdXN0b20gY29udmVydGVyKVwiXG4gIHwgUmVhZGVyIGZtdF9yZXN0IC0+XG4gICAgYmVnaW4gbWF0Y2ggcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkgLT5cbiAgICAgICAgbGV0IHggPSByZWFkZXIgaWIgaW5cbiAgICAgICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXRfcmVzdCByZWFkZXJzX3Jlc3QpXG4gICAgfCBOaWwgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJzY2FuZjogbWlzc2luZyByZWFkZXJcIlxuICAgIGVuZFxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBpZiBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICAgIGVsc2UgYmFkX2lucHV0IFwiZW5kIG9mIGlucHV0IG5vdCBmb3VuZFwiXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSBzdHI7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliIGNocjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuXG4gIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10ID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHMgZm10dHlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoZm10LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyAod2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0KSBpYiBpblxuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCwgZm10JyA9XG4gICAgICB0cnlcbiAgICAgICAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXQnID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICAoKiBUT0RPOiBmaW5kIGEgd2F5IHRvIGF2b2lkIHJlcGFyc2luZyB0d2ljZSAqKVxuXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR5cGUtY2hlY2tzIGJlbG93ICpjYW4qIGZhaWwgYmVjYXVzZSBvZiB0eXBlXG4gICAgICAgICAgIGFtYmlndWl0eSBpbiBwcmVzZW5jZSBvZiBpZ25vcmVkLXJlYWRlcnM6IFwiJV9yJWRcIiBhbmQgXCIlZCVfclwiXG4gICAgICAgICAgIGFyZSB0eXBlZCBpbiB0aGUgc2FtZSB3YXkuXG5cbiAgICAgICAgICAgIyBTY2FuZi5zc2NhbmYgXCJcXFwiJV9yJWRcXFwiM1wiIFwiJSglZCVfciUpXCIgaWdub3JlXG4gICAgICAgICAgICAgKGZ1biBmbXQgbiAtPiBzdHJpbmdfb2ZfZm9ybWF0IGZtdCwgbilcbiAgICAgICAgICAgRXhjZXB0aW9uOiBDYW1saW50ZXJuYWxGb3JtYXQuVHlwZV9taXNtYXRjaC5cblxuICAgICAgICAgICBXZSBzaG91bGQgcHJvcGVybHkgY2F0Y2ggdGhpcyBleGNlcHRpb24uXG4gICAgICAgICopXG4gICAgICAgIHR5cGVfZm9ybWF0IGZtdCAoZXJhc2VfcmVsIGZtdHR5KSxcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10JyAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoRm9ybWF0IChmbXQsIHMpLFxuICAgICAgICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCAoU29tZSBzdHApIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBDb25zIChzLCBtYWtlX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBsZXQgd2lkdGggPSB3aWR0aF9vZl9wYWRfb3B0IHdpZHRoX29wdCBpblxuICAgIHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgTm9uZSB3aWR0aCBpYjtcbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgbGV0IGNvdW50ID0gZ2V0X2NvdW50ZXIgaWIgY291bnRlciBpblxuICAgIENvbnMgKGNvdW50LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0KTtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiAnQCc7IGNoZWNrX2NoYXIgaWIgJ3snO1xuICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAnWyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcblxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgYmVnaW4gbWF0Y2ggbWFrZV9zY2FuZiBpYiBmbXQnIHJlYWRlcnMgd2l0aFxuICAgIHwgQ29ucyAoXywgYXJnX3Jlc3QpIC0+IGFyZ19yZXN0XG4gICAgfCBOaWwgLT4gYXNzZXJ0IGZhbHNlXG4gICAgZW5kXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgTmlsXG5cbigqIENhc2UgYW5hbHlzaXMgb24gcGFkZGluZyBhbmQgcHJlY2lzaW9uLiAqKVxuKCogUmVqZWN0IGZvcm1hdHMgY29udGFpbmluZyBcIiUqXCIgb3IgXCIlLipcIi4gKilcbigqIFBhc3MgcGFkZGluZyBhbmQgcHJlY2lzaW9uIHRvIHRoZSBnZW5lcmljIHNjYW5uZXIgYHNjYW4nLiAqKVxuYW5kIHBhZF9wcmVjX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYgeCB5IHogdCAuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT5cbiAgICAgIChpbnQgLT4gaW50IC0+IFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gdCkgLT5cbiAgICAgIChTY2FubmluZy5pbl9jaGFubmVsIC0+IHopIC0+XG4gICAgICAoeCwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgcGFkIHByZWMgc2NhbiB0b2tlbiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gbWF4X2ludCBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiB3IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgcCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nIChMZWZ0LCBfKSwgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlLVxcXCJcIlxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIF8pLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgQXJnX3BhZGRpbmcgXywgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICgqIERlZmluaW5nIFtzY2FuZl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbc2NhbmZdICopXG5cbmxldCBrc2NhbmZfZ2VuIGliIGVmIGFmIChGb3JtYXQgKGZtdCwgc3RyKSkgPVxuICBsZXQgcmVjIGFwcGx5IDogdHlwZSBhIGIgLiBhIC0+IChhLCBiKSBoZXRlcl9saXN0IC0+IGIgPVxuICAgIGZ1biBmIGFyZ3MgLT4gbWF0Y2ggYXJncyB3aXRoXG4gICAgfCBDb25zICh4LCByKSAtPiBhcHBseSAoZiB4KSByXG4gICAgfCBOaWwgLT4gZlxuICBpblxuICBsZXQgayByZWFkZXJzIGYgPVxuICAgIFNjYW5uaW5nLnJlc2V0X3Rva2VuIGliO1xuICAgIG1hdGNoIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIChTY2FuX2ZhaWx1cmUgXyB8IEZhaWx1cmUgXyB8IEVuZF9vZl9maWxlIGFzIGV4YykgLT5cbiAgICAgICAgZWYgaWIgZXhjXG4gICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBtc2cgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgKG1zZyBeIFwiIGluIGZvcm1hdCBcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzdHIgXiBcIlxcXCJcIilcbiAgICB8IGFyZ3MgLT5cbiAgICAgICAgYWYgKGFwcGx5IGYgYXJncylcbiAgaW5cbiAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuXG5sZXQga3NjYW5mIGliIGVmIGZtdCA9XG4gIGtzY2FuZl9nZW4gaWIgZWYgKGZ1biB4IC0+IHgpIGZtdFxuXG5sZXQga3NjYW5mX29wdCBpYiBmbXQgPVxuICBrc2NhbmZfZ2VuIGliIChmdW4gXyBfIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpIGZtdFxuXG4oKioqKVxuXG5sZXQga2JzY2FuZiA9IGtzY2FuZlxubGV0IGJzY2FuZiBpYiBmbXQgPSBrYnNjYW5mIGliIHNjYW5mX2JhZF9pbnB1dCBmbXRcbmxldCBic2NhbmZfb3B0IGliIGZtdCA9IGtzY2FuZl9vcHQgaWIgZm10XG5cbmxldCBrc3NjYW5mIHMgZWYgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZWYgZm10XG5sZXQgc3NjYW5mIHMgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgc2NhbmZfYmFkX2lucHV0IGZtdFxubGV0IHNzY2FuZl9vcHQgcyBmbXQgPSBrc2NhbmZfb3B0IChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBmbXRcblxubGV0IHNjYW5mIGZtdCA9IGtzY2FuZiBTY2FubmluZy5zdGRpbiBzY2FuZl9iYWRfaW5wdXQgZm10XG5sZXQgc2NhbmZfb3B0IGZtdCA9IGtzY2FuZl9vcHQgU2Nhbm5pbmcuc3RkaW4gZm10XG5cbigqKiopXG5cbigqIFNjYW5uaW5nIGZvcm1hdCBzdHJpbmdzLiAqKVxubGV0IGJzY2FuZl9mb3JtYXQgOlxuICBTY2FubmluZy5pbl9jaGFubmVsIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAnZykgLT4gJ2cgPVxuICBmdW4gaWIgZm9ybWF0IGYgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgbWF4X2ludCBpYiBpblxuICAgIGxldCBzdHIgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10JyA9XG4gICAgICB0cnkgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIGZvcm1hdFxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnIGluXG4gICAgZiBmbXQnXG5cblxubGV0IHNzY2FuZl9mb3JtYXQgOlxuICBzdHJpbmcgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBzIGZvcm1hdCBmIC0+IGJzY2FuZl9mb3JtYXQgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGZvcm1hdCBmXG5cblxubGV0IGZvcm1hdF9mcm9tX3N0cmluZyBzIGZtdCA9XG4gIHNzY2FuZl9mb3JtYXQgKFwiXFxcIlwiIF4gU3RyaW5nLmVzY2FwZWQgcyBeIFwiXFxcIlwiKSBmbXQgKGZ1biB4IC0+IHgpXG5cblxubGV0IHVuZXNjYXBlZCBzID1cbiAgc3NjYW5mIChcIlxcXCJcIiBeIHMgXiBcIlxcXCJcIikgXCIlUyUhXCIgKGZ1biB4IC0+IHgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFJlZ2lzdGVyaW5nIE9DYW1sIHZhbHVlcyB3aXRoIHRoZSBDIHJ1bnRpbWUgZm9yIGxhdGVyIGNhbGxiYWNrcyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiBPYmoudCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCByZWdpc3RlciBuYW1lIHYgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIChPYmoucmVwciB2KVxuXG5sZXQgcmVnaXN0ZXJfZXhjZXB0aW9uIG5hbWUgKGV4biA6IGV4bikgPVxuICBsZXQgZXhuID0gT2JqLnJlcHIgZXhuIGluXG4gIGxldCBzbG90ID0gaWYgT2JqLnRhZyBleG4gPSBPYmoub2JqZWN0X3RhZyB0aGVuIGV4biBlbHNlIE9iai5maWVsZCBleG4gMCBpblxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIHNsb3RcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIEplcm9tZSBWb3VpbGxvbiwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqKiogT2JqZWN0IHJlcHJlc2VudGF0aW9uICoqKiopXG5cbmV4dGVybmFsIHNldF9pZDogJ2EgLT4gJ2EgPSBcImNhbWxfc2V0X29vX2lkXCIgW0BAbm9hbGxvY11cblxuKCoqKiogT2JqZWN0IGNvcHkgKioqKilcblxubGV0IGNvcHkgbyA9XG4gIGxldCBvID0gKE9iai5vYmogKE9iai5kdXAgKE9iai5yZXByIG8pKSkgaW5cbiAgc2V0X2lkIG9cblxuKCoqKiogQ29tcHJlc3Npb24gb3B0aW9ucyAqKioqKVxuKCogUGFyYW1ldGVycyAqKVxudHlwZSBwYXJhbXMgPSB7XG4gICAgbXV0YWJsZSBjb21wYWN0X3RhYmxlIDogYm9vbDtcbiAgICBtdXRhYmxlIGNvcHlfcGFyZW50IDogYm9vbDtcbiAgICBtdXRhYmxlIGNsZWFuX3doZW5fY29weWluZyA6IGJvb2w7XG4gICAgbXV0YWJsZSByZXRyeV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGJ1Y2tldF9zbWFsbF9zaXplIDogaW50XG4gIH1cblxubGV0IHBhcmFtcyA9IHtcbiAgY29tcGFjdF90YWJsZSA9IHRydWU7XG4gIGNvcHlfcGFyZW50ID0gdHJ1ZTtcbiAgY2xlYW5fd2hlbl9jb3B5aW5nID0gdHJ1ZTtcbiAgcmV0cnlfY291bnQgPSAzO1xuICBidWNrZXRfc21hbGxfc2l6ZSA9IDE2XG59XG5cbigqKioqIFBhcmFtZXRlcnMgKioqKilcblxubGV0IGluaXRpYWxfb2JqZWN0X3NpemUgPSAyXG5cbigqKioqIEl0ZW1zICoqKiopXG5cbnR5cGUgaXRlbSA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxubGV0IGR1bW15X2l0ZW0gPSAoT2JqLm1hZ2ljICgpIDogaXRlbSlcblxuKCoqKiogVHlwZXMgKioqKilcblxudHlwZSB0YWdcbnR5cGUgbGFiZWwgPSBpbnRcbnR5cGUgY2xvc3VyZSA9IGl0ZW1cbnR5cGUgdCA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxudHlwZSBvYmogPSB0IGFycmF5XG5leHRlcm5hbCByZXQgOiAob2JqIC0+ICdhKSAtPiBjbG9zdXJlID0gXCIlaWRlbnRpdHlcIlxuXG4oKioqKiBMYWJlbHMgKioqKilcblxubGV0IHB1YmxpY19tZXRob2RfbGFiZWwgcyA6IHRhZyA9XG4gIGxldCBhY2N1ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBhY2N1IDo9IDIyMyAqICFhY2N1ICsgQ2hhci5jb2RlIHMuW2ldXG4gIGRvbmU7XG4gICgqIHJlZHVjZSB0byAzMSBiaXRzICopXG4gIGFjY3UgOj0gIWFjY3UgbGFuZCAoMSBsc2wgMzEgLSAxKTtcbiAgKCogbWFrZSBpdCBzaWduZWQgZm9yIDY0IGJpdHMgYXJjaGl0ZWN0dXJlcyAqKVxuICBsZXQgdGFnID0gaWYgIWFjY3UgPiAweDNGRkZGRkZGIHRoZW4gIWFjY3UgLSAoMSBsc2wgMzEpIGVsc2UgIWFjY3UgaW5cbiAgKCogUHJpbnRmLmVwcmludGYgXCIlcyA9ICVkXFxuXCIgcyB0YWc7IGZsdXNoIHN0ZGVycjsgKilcbiAgT2JqLm1hZ2ljIHRhZ1xuXG4oKioqKiBTcGFyc2UgYXJyYXkgKioqKilcblxubW9kdWxlIFZhcnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIHZhcnMgPSBpbnQgVmFycy50XG5cbm1vZHVsZSBNZXRocyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbWV0aHMgPSBsYWJlbCBNZXRocy50XG5tb2R1bGUgTGFicyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBsYWJlbCBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBsYWJzID0gYm9vbCBMYWJzLnRcblxuKCogVGhlIGNvbXBpbGVyIGFzc3VtZXMgdGhhdCB0aGUgZmlyc3QgZmllbGQgb2YgdGhpcyBzdHJ1Y3R1cmUgaXMgW3NpemVdLiAqKVxudHlwZSB0YWJsZSA9XG4geyBtdXRhYmxlIHNpemU6IGludDtcbiAgIG11dGFibGUgbWV0aG9kczogY2xvc3VyZSBhcnJheTtcbiAgIG11dGFibGUgbWV0aG9kc19ieV9uYW1lOiBtZXRocztcbiAgIG11dGFibGUgbWV0aG9kc19ieV9sYWJlbDogbGFicztcbiAgIG11dGFibGUgcHJldmlvdXNfc3RhdGVzOlxuICAgICAobWV0aHMgKiBsYWJzICogKGxhYmVsICogaXRlbSkgbGlzdCAqIHZhcnMgKlxuICAgICAgbGFiZWwgbGlzdCAqIHN0cmluZyBsaXN0KSBsaXN0O1xuICAgbXV0YWJsZSBoaWRkZW5fbWV0aHM6IChsYWJlbCAqIGl0ZW0pIGxpc3Q7XG4gICBtdXRhYmxlIHZhcnM6IHZhcnM7XG4gICBtdXRhYmxlIGluaXRpYWxpemVyczogKG9iaiAtPiB1bml0KSBsaXN0IH1cblxubGV0IGR1bW15X3RhYmxlID1cbiAgeyBtZXRob2RzID0gW3wgZHVtbXlfaXRlbSB8XTtcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gMCB9XG5cbmxldCB0YWJsZV9jb3VudCA9IHJlZiAwXG5cbigqIGR1bW15X21ldCBzaG91bGQgYmUgYSBwb2ludGVyLCBzbyB1c2UgYW4gYXRvbSAqKVxubGV0IGR1bW15X21ldCA6IGl0ZW0gPSBPYmoub2JqIChPYmoubmV3X2Jsb2NrIDAgMClcbigqIGlmIGRlYnVnZ2luZyBpcyBuZWVkZWQsIHRoaXMgY291bGQgYmUgYSBnb29kIGlkZWE6ICopXG4oKiBsZXQgZHVtbXlfbWV0ICgpID0gZmFpbHdpdGggXCJVbmRlZmluZWQgbWV0aG9kXCIgKilcblxubGV0IHJlYyBmaXRfc2l6ZSBuID1cbiAgaWYgbiA8PSAyIHRoZW4gbiBlbHNlXG4gIGZpdF9zaXplICgobisxKS8yKSAqIDJcblxubGV0IG5ld190YWJsZSBwdWJfbGFiZWxzID1cbiAgaW5jciB0YWJsZV9jb3VudDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBwdWJfbGFiZWxzIGluXG4gIGxldCBtZXRob2RzID0gQXJyYXkubWFrZSAobGVuKjIrMikgZHVtbXlfbWV0IGluXG4gIG1ldGhvZHMuKDApIDwtIE9iai5tYWdpYyBsZW47XG4gIG1ldGhvZHMuKDEpIDwtIE9iai5tYWdpYyAoZml0X3NpemUgbGVuICogU3lzLndvcmRfc2l6ZSAvIDggLSAxKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG8gbWV0aG9kcy4oaSoyKzMpIDwtIE9iai5tYWdpYyBwdWJfbGFiZWxzLihpKSBkb25lO1xuICB7IG1ldGhvZHMgPSBtZXRob2RzO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSBpbml0aWFsX29iamVjdF9zaXplIH1cblxubGV0IHJlc2l6ZSBhcnJheSBuZXdfc2l6ZSA9XG4gIGxldCBvbGRfc2l6ZSA9IEFycmF5Lmxlbmd0aCBhcnJheS5tZXRob2RzIGluXG4gIGlmIG5ld19zaXplID4gb2xkX3NpemUgdGhlbiBiZWdpblxuICAgIGxldCBuZXdfYnVjayA9IEFycmF5Lm1ha2UgbmV3X3NpemUgZHVtbXlfbWV0IGluXG4gICAgQXJyYXkuYmxpdCBhcnJheS5tZXRob2RzIDAgbmV3X2J1Y2sgMCBvbGRfc2l6ZTtcbiAgICBhcnJheS5tZXRob2RzIDwtIG5ld19idWNrXG4gZW5kXG5cbmxldCBwdXQgYXJyYXkgbGFiZWwgZWxlbWVudCA9XG4gIHJlc2l6ZSBhcnJheSAobGFiZWwgKyAxKTtcbiAgYXJyYXkubWV0aG9kcy4obGFiZWwpIDwtIGVsZW1lbnRcblxuKCoqKiogQ2xhc3NlcyAqKioqKVxuXG5sZXQgbWV0aG9kX2NvdW50ID0gcmVmIDBcbmxldCBpbnN0X3Zhcl9jb3VudCA9IHJlZiAwXG5cbigqIHR5cGUgdCAqKVxudHlwZSBtZXRoID0gaXRlbVxuXG5sZXQgbmV3X21ldGhvZCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IEFycmF5Lmxlbmd0aCB0YWJsZS5tZXRob2RzIGluXG4gIHJlc2l6ZSB0YWJsZSAoaW5kZXggKyAxKTtcbiAgaW5kZXhcblxubGV0IGdldF9tZXRob2RfbGFiZWwgdGFibGUgbmFtZSA9XG4gIHRyeVxuICAgIE1ldGhzLmZpbmQgbmFtZSB0YWJsZS5tZXRob2RzX2J5X25hbWVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgbGFiZWwgPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gICAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIE1ldGhzLmFkZCBuYW1lIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIExhYnMuYWRkIGxhYmVsIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbDtcbiAgICBsYWJlbFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbHMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIG5hbWVzXG5cbmxldCBzZXRfbWV0aG9kIHRhYmxlIGxhYmVsIGVsZW1lbnQgPVxuICBpbmNyIG1ldGhvZF9jb3VudDtcbiAgaWYgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgdGhlblxuICAgIHB1dCB0YWJsZSBsYWJlbCBlbGVtZW50XG4gIGVsc2VcbiAgICB0YWJsZS5oaWRkZW5fbWV0aHMgPC0gKGxhYmVsLCBlbGVtZW50KSA6OiB0YWJsZS5oaWRkZW5fbWV0aHNcblxubGV0IGdldF9tZXRob2QgdGFibGUgbGFiZWwgPVxuICB0cnkgTGlzdC5hc3NvYyBsYWJlbCB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgd2l0aCBOb3RfZm91bmQgLT4gdGFibGUubWV0aG9kcy4obGFiZWwpXG5cbmxldCB0b19saXN0IGFyciA9XG4gIGlmIGFyciA9PSBPYmoubWFnaWMgMCB0aGVuIFtdIGVsc2UgQXJyYXkudG9fbGlzdCBhcnJcblxubGV0IG5hcnJvdyB0YWJsZSB2YXJzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHMgPVxuICBsZXQgdmFycyA9IHRvX2xpc3QgdmFyc1xuICBhbmQgdmlydF9tZXRocyA9IHRvX2xpc3QgdmlydF9tZXRoc1xuICBhbmQgY29uY3JfbWV0aHMgPSB0b19saXN0IGNvbmNyX21ldGhzIGluXG4gIGxldCB2aXJ0X21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSB2aXJ0X21ldGhzIGluXG4gIGxldCBjb25jcl9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgY29uY3JfbWV0aHMgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtXG4gICAgICh0YWJsZS5tZXRob2RzX2J5X25hbWUsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwsIHRhYmxlLmhpZGRlbl9tZXRocyxcbiAgICAgIHRhYmxlLnZhcnMsIHZpcnRfbWV0aF9sYWJzLCB2YXJzKVxuICAgICA6OiB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICBWYXJzLmZvbGRcbiAgICAgIChmdW4gbGFiIGluZm8gdHZhcnMgLT5cbiAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZhcnMgdGhlbiBWYXJzLmFkZCBsYWIgaW5mbyB0dmFycyBlbHNlIHR2YXJzKVxuICAgICAgdGFibGUudmFycyBWYXJzLmVtcHR5O1xuICBsZXQgYnlfbmFtZSA9IHJlZiBNZXRocy5lbXB0eSBpblxuICBsZXQgYnlfbGFiZWwgPSByZWYgTGFicy5lbXB0eSBpblxuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj1cbiAgICAgICAgICBMYWJzLmFkZCBsYWJlbFxuICAgICAgICAgICAgKHRyeSBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlKVxuICAgICAgICAgICAgIWJ5X2xhYmVsKVxuICAgIGNvbmNyX21ldGhzIGNvbmNyX21ldGhfbGFicztcbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9IExhYnMuYWRkIGxhYmVsIGZhbHNlICFieV9sYWJlbClcbiAgICB2aXJ0X21ldGhzIHZpcnRfbWV0aF9sYWJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gIWJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gIWJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhfbGFicyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBbXVxuXG5sZXQgd2lkZW4gdGFibGUgPVxuICBsZXQgKGJ5X25hbWUsIGJ5X2xhYmVsLCBzYXZlZF9oaWRkZW5fbWV0aHMsIHNhdmVkX3ZhcnMsIHZpcnRfbWV0aHMsIHZhcnMpID1cbiAgICBMaXN0LmhkIHRhYmxlLnByZXZpb3VzX3N0YXRlc1xuICBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC0gTGlzdC50bCB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIHMgdiAtPiBWYXJzLmFkZCB2IChWYXJzLmZpbmQgdiB0YWJsZS52YXJzKSBzKVxuICAgICAgIHNhdmVkX3ZhcnMgdmFycztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIGJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aHMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgc2F2ZWRfaGlkZGVuX21ldGhzXG5cbmxldCBuZXdfc2xvdCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IHRhYmxlLnNpemUgaW5cbiAgdGFibGUuc2l6ZSA8LSBpbmRleCArIDE7XG4gIGluZGV4XG5cbmxldCBuZXdfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGluZGV4ID0gbmV3X3Nsb3QgdGFibGUgaW5cbiAgICBpZiBuYW1lIDw+IFwiXCIgdGhlbiB0YWJsZS52YXJzIDwtIFZhcnMuYWRkIG5hbWUgaW5kZXggdGFibGUudmFycztcbiAgICBpbmRleFxuXG5sZXQgdG9fYXJyYXkgYXJyID1cbiAgaWYgYXJyID0gT2JqLm1hZ2ljIDAgdGhlbiBbfHxdIGVsc2UgYXJyXG5cbmxldCBuZXdfbWV0aG9kc192YXJpYWJsZXMgdGFibGUgbWV0aHMgdmFscyA9XG4gIGxldCBtZXRocyA9IHRvX2FycmF5IG1ldGhzIGluXG4gIGxldCBubWV0aHMgPSBBcnJheS5sZW5ndGggbWV0aHMgYW5kIG52YWxzID0gQXJyYXkubGVuZ3RoIHZhbHMgaW5cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgKG5tZXRocyArIG52YWxzKSAwIGluXG4gIGZvciBpID0gMCB0byBubWV0aHMgLSAxIGRvXG4gICAgcmVzLihpKSA8LSBnZXRfbWV0aG9kX2xhYmVsIHRhYmxlIG1ldGhzLihpKVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbnZhbHMgLSAxIGRvXG4gICAgcmVzLihpK25tZXRocykgPC0gbmV3X3ZhcmlhYmxlIHRhYmxlIHZhbHMuKGkpXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgZ2V0X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFycyB3aXRoIE5vdF9mb3VuZCAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGdldF92YXJpYWJsZXMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF92YXJpYWJsZSB0YWJsZSkgbmFtZXNcblxubGV0IGFkZF9pbml0aWFsaXplciB0YWJsZSBmID1cbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIGY6OnRhYmxlLmluaXRpYWxpemVyc1xuXG4oKlxubW9kdWxlIEtleXMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gdGFnIGFycmF5IGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG5sZXQga2V5X21hcCA9IHJlZiBLZXlzLmVtcHR5XG5sZXQgZ2V0X2tleSB0YWdzIDogaXRlbSA9XG4gIHRyeSBtYWdpYyAoS2V5cy5maW5kIHRhZ3MgIWtleV9tYXAgOiB0YWcgYXJyYXkpXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAga2V5X21hcCA6PSBLZXlzLmFkZCB0YWdzIHRhZ3MgIWtleV9tYXA7XG4gICAgbWFnaWMgdGFnc1xuKilcblxubGV0IGNyZWF0ZV90YWJsZSBwdWJsaWNfbWV0aG9kcyA9XG4gIGlmIHB1YmxpY19tZXRob2RzID09IE9iai5tYWdpYyAwIHRoZW4gbmV3X3RhYmxlIFt8fF0gZWxzZVxuICAoKiBbcHVibGljX21ldGhvZHNdIG11c3QgYmUgaW4gYXNjZW5kaW5nIG9yZGVyIGZvciBieXRlY29kZSAqKVxuICBsZXQgdGFncyA9IEFycmF5Lm1hcCBwdWJsaWNfbWV0aG9kX2xhYmVsIHB1YmxpY19tZXRob2RzIGluXG4gIGxldCB0YWJsZSA9IG5ld190YWJsZSB0YWdzIGluXG4gIEFycmF5Lml0ZXJpXG4gICAgKGZ1biBpIG1ldCAtPlxuICAgICAgbGV0IGxhYiA9IGkqMisyIGluXG4gICAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgIDwtIE1ldGhzLmFkZCBtZXQgbGFiIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbClcbiAgICBwdWJsaWNfbWV0aG9kcztcbiAgdGFibGVcblxubGV0IGluaXRfY2xhc3MgdGFibGUgPVxuICBpbnN0X3Zhcl9jb3VudCA6PSAhaW5zdF92YXJfY291bnQgKyB0YWJsZS5zaXplIC0gMTtcbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIExpc3QucmV2IHRhYmxlLmluaXRpYWxpemVycztcbiAgcmVzaXplIHRhYmxlICgzICsgT2JqLm1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplKVxuXG5sZXQgaW5oZXJpdHMgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocyAoXywgc3VwZXIsIF8sIGVudikgdG9wID1cbiAgbmFycm93IGNsYSB2YWxzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHM7XG4gIGxldCBpbml0ID1cbiAgICBpZiB0b3AgdGhlbiBzdXBlciBjbGEgZW52IGVsc2UgT2JqLnJlcHIgKHN1cGVyIGNsYSkgaW5cbiAgd2lkZW4gY2xhO1xuICBBcnJheS5jb25jYXRcbiAgICBbW3wgT2JqLnJlcHIgaW5pdCB8XTtcbiAgICAgT2JqLm1hZ2ljIChBcnJheS5tYXAgKGdldF92YXJpYWJsZSBjbGEpICh0b19hcnJheSB2YWxzKSA6IGludCBhcnJheSk7XG4gICAgIEFycmF5Lm1hcFxuICAgICAgIChmdW4gbm0gLT4gT2JqLnJlcHIgKGdldF9tZXRob2QgY2xhIChnZXRfbWV0aG9kX2xhYmVsIGNsYSBubSkgOiBjbG9zdXJlKSlcbiAgICAgICAodG9fYXJyYXkgY29uY3JfbWV0aHMpIF1cblxubGV0IG1ha2VfY2xhc3MgcHViX21ldGhzIGNsYXNzX2luaXQgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgKGVudl9pbml0IChPYmoucmVwciAwKSwgY2xhc3NfaW5pdCwgZW52X2luaXQsIE9iai5yZXByIDApXG5cbnR5cGUgaW5pdF90YWJsZSA9IHsgbXV0YWJsZSBlbnZfaW5pdDogdDsgbXV0YWJsZSBjbGFzc19pbml0OiB0YWJsZSAtPiB0IH1cbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbmxldCBtYWtlX2NsYXNzX3N0b3JlIHB1Yl9tZXRocyBjbGFzc19pbml0IGluaXRfdGFibGUgPVxuICBsZXQgdGFibGUgPSBjcmVhdGVfdGFibGUgcHViX21ldGhzIGluXG4gIGxldCBlbnZfaW5pdCA9IGNsYXNzX2luaXQgdGFibGUgaW5cbiAgaW5pdF9jbGFzcyB0YWJsZTtcbiAgaW5pdF90YWJsZS5jbGFzc19pbml0IDwtIGNsYXNzX2luaXQ7XG4gIGluaXRfdGFibGUuZW52X2luaXQgPC0gZW52X2luaXRcblxubGV0IGR1bW15X2NsYXNzIGxvYyA9XG4gIGxldCB1bmRlZiA9IGZ1biBfIC0+IHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpIGluXG4gIChPYmoubWFnaWMgdW5kZWYsIHVuZGVmLCB1bmRlZiwgT2JqLnJlcHIgMClcblxuKCoqKiogT2JqZWN0cyAqKioqKVxuXG5sZXQgY3JlYXRlX29iamVjdCB0YWJsZSA9XG4gICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgKCogWFhYIEFwcGVsIGRlIFtjYW1sX21vZGlmeV0gfCBDYWxsIHRvIFtjYW1sX21vZGlmeV0gKilcbiAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gIE9iai5vYmogKHNldF9pZCBvYmopXG5cbmxldCBjcmVhdGVfb2JqZWN0X29wdCBvYmpfMCB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9ial8wIGVsc2UgYmVnaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW29ial9ibG9ja10gfCBDYWxsIHRvIFtvYmpfYmxvY2tdICAqKVxuICAgIGxldCBvYmogPSBPYmoubmV3X2Jsb2NrIE9iai5vYmplY3RfdGFnIHRhYmxlLnNpemUgaW5cbiAgICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICAgIE9iai5zZXRfZmllbGQgb2JqIDAgKE9iai5yZXByIHRhYmxlLm1ldGhvZHMpO1xuICAgIE9iai5vYmogKHNldF9pZCBvYmopXG4gIGVuZFxuXG5sZXQgcmVjIGl0ZXJfZiBvYmogPVxuICBmdW5jdGlvblxuICAgIFtdICAgLT4gKClcbiAgfCBmOjpsIC0+IGYgb2JqOyBpdGVyX2Ygb2JqIGxcblxubGV0IHJ1bl9pbml0aWFsaXplcnMgb2JqIHRhYmxlID1cbiAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gIGlmIGluaXRzIDw+IFtdIHRoZW5cbiAgICBpdGVyX2Ygb2JqIGluaXRzXG5cbmxldCBydW5faW5pdGlhbGl6ZXJzX29wdCBvYmpfMCBvYmogdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmogZWxzZSBiZWdpblxuICAgIGxldCBpbml0cyA9IHRhYmxlLmluaXRpYWxpemVycyBpblxuICAgIGlmIGluaXRzIDw+IFtdIHRoZW4gaXRlcl9mIG9iaiBpbml0cztcbiAgICBvYmpcbiAgZW5kXG5cbmxldCBjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGl6ZXJzIG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgIGxldCBvYmogPSBjcmVhdGVfb2JqZWN0IHRhYmxlIGluXG4gICAgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGU7XG4gICAgb2JqXG4gIGVuZFxuXG4oKiBFcXVpdmFsZW50IHByaW1pdGl2ZSBiZWxvd1xubGV0IHNlbmRzZWxmIG9iaiBsYWIgPVxuICAobWFnaWMgb2JqIDogKG9iaiAtPiB0KSBhcnJheSBhcnJheSkuKDApLihsYWIpIG9ialxuKilcbmV4dGVybmFsIHNlbmQgOiBvYmogLT4gdGFnIC0+ICdhID0gXCIlc2VuZFwiXG5leHRlcm5hbCBzZW5kY2FjaGUgOiBvYmogLT4gdGFnIC0+IHQgLT4gaW50IC0+ICdhID0gXCIlc2VuZGNhY2hlXCJcbmV4dGVybmFsIHNlbmRzZWxmIDogb2JqIC0+IGxhYmVsIC0+ICdhID0gXCIlc2VuZHNlbGZcIlxuZXh0ZXJuYWwgZ2V0X3B1YmxpY19tZXRob2QgOiBvYmogLT4gdGFnIC0+IGNsb3N1cmVcbiAgICA9IFwiY2FtbF9nZXRfcHVibGljX21ldGhvZFwiIFtAQG5vYWxsb2NdXG5cbigqKioqIHRhYmxlIGNvbGxlY3Rpb24gYWNjZXNzICoqKiopXG5cbnR5cGUgdGFibGVzID1cbiAgfCBFbXB0eVxuICB8IENvbnMgb2Yge2tleSA6IGNsb3N1cmU7IG11dGFibGUgZGF0YTogdGFibGVzOyBtdXRhYmxlIG5leHQ6IHRhYmxlc31cblxubGV0IHNldF9kYXRhIHRhYmxlcyB2ID0gbWF0Y2ggdGFibGVzIHdpdGhcbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMuZGF0YSA8LSB2XG5sZXQgc2V0X25leHQgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0IDwtIHZcbmxldCBnZXRfa2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMua2V5XG5sZXQgZ2V0X2RhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhXG5sZXQgZ2V0X25leHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5uZXh0XG5cbmxldCBidWlsZF9wYXRoIG4ga2V5cyB0YWJsZXMgPVxuICBsZXQgcmVzID0gQ29ucyB7a2V5ID0gT2JqLm1hZ2ljIDA7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICBsZXQgciA9IHJlZiByZXMgaW5cbiAgZm9yIGkgPSAwIHRvIG4gZG9cbiAgICByIDo9IENvbnMge2tleSA9IGtleXMuKGkpOyBkYXRhID0gIXI7IG5leHQgPSBFbXB0eX1cbiAgZG9uZTtcbiAgc2V0X2RhdGEgdGFibGVzICFyO1xuICByZXNcblxubGV0IHJlYyBsb29rdXBfa2V5cyBpIGtleXMgdGFibGVzID1cbiAgaWYgaSA8IDAgdGhlbiB0YWJsZXMgZWxzZVxuICBsZXQga2V5ID0ga2V5cy4oaSkgaW5cbiAgbGV0IHJlYyBsb29rdXBfa2V5ICh0YWJsZXM6dGFibGVzKSA9XG4gICAgaWYgZ2V0X2tleSB0YWJsZXMgPT0ga2V5IHRoZW5cbiAgICAgIG1hdGNoIGdldF9kYXRhIHRhYmxlcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBDb25zIF8gYXMgdGFibGVzX2RhdGEgLT5cbiAgICAgICAgICBsb29rdXBfa2V5cyAoaS0xKSBrZXlzIHRhYmxlc19kYXRhXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZ2V0X25leHQgdGFibGVzIHdpdGhcbiAgICAgIHwgQ29ucyBfIGFzIG5leHQgLT4gbG9va3VwX2tleSBuZXh0XG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgbGV0IG5leHQgOiB0YWJsZXMgPSBDb25zIHtrZXk7IGRhdGEgPSBFbXB0eTsgbmV4dCA9IEVtcHR5fSBpblxuICAgICAgICAgIHNldF9uZXh0IHRhYmxlcyBuZXh0O1xuICAgICAgICAgIGJ1aWxkX3BhdGggKGktMSkga2V5cyBuZXh0XG4gIGluXG4gIGxvb2t1cF9rZXkgdGFibGVzXG5cbmxldCBsb29rdXBfdGFibGVzIHJvb3Qga2V5cyA9XG4gIG1hdGNoIGdldF9kYXRhIHJvb3Qgd2l0aFxuICB8IENvbnMgXyBhcyByb290X2RhdGEgLT5cbiAgICBsb29rdXBfa2V5cyAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RfZGF0YVxuICB8IEVtcHR5IC0+XG4gICAgYnVpbGRfcGF0aCAoQXJyYXkubGVuZ3RoIGtleXMgLSAxKSBrZXlzIHJvb3RcblxuKCoqKiogYnVpbHRpbiBtZXRob2RzICoqKiopXG5cbmxldCBnZXRfY29uc3QgeCA9IHJldCAoZnVuIF9vYmogLT4geClcbmxldCBnZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiAtPiBBcnJheS51bnNhZmVfZ2V0IG9iaiBuKVxubGV0IGdldF9lbnYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbilcbmxldCBnZXRfbWV0aCBuICA9IHJldCAoZnVuIG9iaiAtPiBzZW5kc2VsZiBvYmogbilcbmxldCBzZXRfdmFyIG4gICA9IHJldCAoZnVuIG9iaiB4IC0+IEFycmF5LnVuc2FmZV9zZXQgb2JqIG4geClcbmxldCBhcHBfY29uc3QgZiB4ID0gcmV0IChmdW4gX29iaiAtPiBmIHgpXG5sZXQgYXBwX3ZhciBmIG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfZW52IGYgZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikpXG5sZXQgYXBwX21ldGggZiBuICA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikpXG5sZXQgYXBwX2NvbnN0X2NvbnN0IGYgeCB5ID0gcmV0IChmdW4gX29iaiAtPiBmIHggeSlcbmxldCBhcHBfY29uc3RfdmFyIGYgeCBuICAgPSByZXQgKGZ1biBvYmogLT4gZiB4IChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSlcbmxldCBhcHBfY29uc3RfbWV0aCBmIHggbiA9IHJldCAoZnVuIG9iaiAtPiBmIHggKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfdmFyX2NvbnN0IGYgbiB4ID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pIHgpXG5sZXQgYXBwX21ldGhfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoc2VuZHNlbGYgb2JqIG4pIHgpXG5sZXQgYXBwX2NvbnN0X2VudiBmIHggZSBuID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiB4IChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfZW52X2NvbnN0IGYgZSBuIHggPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSB4KVxubGV0IG1ldGhfYXBwX2NvbnN0IG4geCA9IHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIHgpXG5sZXQgbWV0aF9hcHBfdmFyIG4gbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIChBcnJheS51bnNhZmVfZ2V0IG9iaiBtKSlcbmxldCBtZXRoX2FwcF9lbnYgbiBlIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG0pKVxubGV0IG1ldGhfYXBwX21ldGggbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKHNlbmRzZWxmIG9iaiBtKSlcbmxldCBzZW5kX2NvbnN0IG0geCBjID1cbiAgcmV0IChmdW4gb2JqIC0+IHNlbmRjYWNoZSB4IG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF92YXIgbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgOiBvYmopIG1cbiAgICAgIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfZW52IG0gZSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGVcbiAgICAgIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXRcbiAgICAgICAgICAgICAgICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIDogb2JqKVxuICAgICAgbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX21ldGggbSBuIGMgPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBzZW5kY2FjaGUgKHNlbmRzZWxmIG9iaiBuKSBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IG5ld19jYWNoZSB0YWJsZSA9XG4gIGxldCBuID0gbmV3X21ldGhvZCB0YWJsZSBpblxuICBsZXQgbiA9XG4gICAgaWYgbiBtb2QgMiA9IDAgfHwgbiA+IDIgKyBPYmoubWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemVcbiAgICB0aGVuIG4gZWxzZSBuZXdfbWV0aG9kIHRhYmxlXG4gIGluXG4gIHRhYmxlLm1ldGhvZHMuKG4pIDwtIE9iai5tYWdpYyAwO1xuICBuXG5cbnR5cGUgaW1wbCA9XG4gICAgR2V0Q29uc3RcbiAgfCBHZXRWYXJcbiAgfCBHZXRFbnZcbiAgfCBHZXRNZXRoXG4gIHwgU2V0VmFyXG4gIHwgQXBwQ29uc3RcbiAgfCBBcHBWYXJcbiAgfCBBcHBFbnZcbiAgfCBBcHBNZXRoXG4gIHwgQXBwQ29uc3RDb25zdFxuICB8IEFwcENvbnN0VmFyXG4gIHwgQXBwQ29uc3RFbnZcbiAgfCBBcHBDb25zdE1ldGhcbiAgfCBBcHBWYXJDb25zdFxuICB8IEFwcEVudkNvbnN0XG4gIHwgQXBwTWV0aENvbnN0XG4gIHwgTWV0aEFwcENvbnN0XG4gIHwgTWV0aEFwcFZhclxuICB8IE1ldGhBcHBFbnZcbiAgfCBNZXRoQXBwTWV0aFxuICB8IFNlbmRDb25zdFxuICB8IFNlbmRWYXJcbiAgfCBTZW5kRW52XG4gIHwgU2VuZE1ldGhcbiAgfCBDbG9zdXJlIG9mIGNsb3N1cmVcblxubGV0IG1ldGhvZF9pbXBsIHRhYmxlIGkgYXJyID1cbiAgbGV0IG5leHQgKCkgPSBpbmNyIGk7IE9iai5tYWdpYyBhcnIuKCFpKSBpblxuICBtYXRjaCBuZXh0KCkgd2l0aFxuICAgIEdldENvbnN0IC0+IGxldCB4IDogdCA9IG5leHQoKSBpbiBnZXRfY29uc3QgeFxuICB8IEdldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF92YXIgblxuICB8IEdldEVudiAgIC0+IGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGdldF9lbnYgZSBuXG4gIHwgR2V0TWV0aCAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X21ldGggblxuICB8IFNldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIHNldF92YXIgblxuICB8IEFwcENvbnN0IC0+IGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGFwcF9jb25zdCBmIHhcbiAgfCBBcHBWYXIgICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX3ZhciBmIG5cbiAgfCBBcHBFbnYgICAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52IGYgZSBuXG4gIHwgQXBwTWV0aCAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF9tZXRoIGYgblxuICB8IEFwcENvbnN0Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCB5ID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfY29uc3QgZiB4IHlcbiAgfCBBcHBDb25zdFZhciAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF92YXIgZiB4IG5cbiAgfCBBcHBDb25zdEVudiAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfZW52IGYgeCBlIG5cbiAgfCBBcHBDb25zdE1ldGggLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfbWV0aCBmIHggblxuICB8IEFwcFZhckNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX3Zhcl9jb25zdCBmIG4geFxuICB8IEFwcEVudkNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnZfY29uc3QgZiBlIG4geFxuICB8IEFwcE1ldGhDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9tZXRoX2NvbnN0IGYgbiB4XG4gIHwgTWV0aEFwcENvbnN0IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBtZXRoX2FwcF9jb25zdCBuIHhcbiAgfCBNZXRoQXBwVmFyIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF92YXIgbiBtXG4gIHwgTWV0aEFwcEVudiAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW5cbiAgICAgIG1ldGhfYXBwX2VudiBuIGUgbVxuICB8IE1ldGhBcHBNZXRoIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF9tZXRoIG4gbVxuICB8IFNlbmRDb25zdCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gc2VuZF9jb25zdCBtIHggKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kVmFyIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF92YXIgbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZEVudiAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIHNlbmRfZW52IG0gZSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZE1ldGggLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX21ldGggbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgQ2xvc3VyZSBfIGFzIGNsbyAtPiBPYmoubWFnaWMgY2xvXG5cbmxldCBzZXRfbWV0aG9kcyB0YWJsZSBtZXRob2RzID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBtZXRob2RzIGluIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICBsZXQgbGFiZWwgPSBtZXRob2RzLighaSkgaW4gbGV0IGNsbyA9IG1ldGhvZF9pbXBsIHRhYmxlIGkgbWV0aG9kcyBpblxuICAgIHNldF9tZXRob2QgdGFibGUgbGFiZWwgY2xvO1xuICAgIGluY3IgaVxuICBkb25lXG5cbigqKioqIFN0YXRpc3RpY3MgKioqKilcblxudHlwZSBzdGF0cyA9XG4gIHsgY2xhc3NlczogaW50OyBtZXRob2RzOiBpbnQ7IGluc3RfdmFyczogaW50OyB9XG5cbmxldCBzdGF0cyAoKSA9XG4gIHsgY2xhc3NlcyA9ICF0YWJsZV9jb3VudDtcbiAgICBtZXRob2RzID0gIW1ldGhvZF9jb3VudDsgaW5zdF92YXJzID0gIWluc3RfdmFyX2NvdW50OyB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDA0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2hhcGUgPVxuICB8IEZ1bmN0aW9uXG4gIHwgTGF6eVxuICB8IENsYXNzXG4gIHwgTW9kdWxlIG9mIHNoYXBlIGFycmF5XG4gIHwgVmFsdWUgb2YgT2JqLnRcblxubGV0IHJlYyBpbml0X21vZF9maWVsZCBtb2R1IGkgbG9jIHNoYXBlID1cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIHNoYXBlIHdpdGhcbiAgICB8IEZ1bmN0aW9uIC0+XG4gICAgICAgbGV0IHJlYyBmbiAoeCA6ICdhKSA9XG4gICAgICAgICBsZXQgZm4nIDogJ2EgLT4gJ2IgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgaWYgZm4gPT0gZm4nIHRoZW5cbiAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZm4nIHggaW5cbiAgICAgICBPYmoucmVwciBmblxuICAgIHwgTGF6eSAtPlxuICAgICAgIGxldCByZWMgbCA9XG4gICAgICAgICBsYXp5IChcbiAgICAgICAgICAgbGV0IGwnID0gT2JqLm9iaiAoT2JqLmZpZWxkIG1vZHUgaSkgaW5cbiAgICAgICAgICAgaWYgbCA9PSBsJyB0aGVuXG4gICAgICAgICAgICAgcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYylcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIExhenkuZm9yY2UgbCcpIGluXG4gICAgICAgT2JqLnJlcHIgbFxuICAgIHwgQ2xhc3MgLT5cbiAgICAgICBPYmoucmVwciAoQ2FtbGludGVybmFsT08uZHVtbXlfY2xhc3MgbG9jKVxuICAgIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgICB8IFZhbHVlIHYgLT4gdlxuICBpblxuICBPYmouc2V0X2ZpZWxkIG1vZHUgaSBpbml0XG5cbmFuZCBpbml0X21vZF9ibG9jayBsb2MgY29tcHMgPVxuICBsZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGNvbXBzIGluXG4gIGxldCBtb2R1ID0gT2JqLm5ld19ibG9jayAwIGxlbmd0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2MgY29tcHMuKGkpXG4gIGRvbmU7XG4gIG1vZHVcblxubGV0IGluaXRfbW9kIGxvYyBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgT2JqLnJlcHIgKGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcylcbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLmluaXRfbW9kOiBub3QgYSBtb2R1bGVcIlxuXG5sZXQgcmVjIHVwZGF0ZV9tb2RfZmllbGQgbW9kdSBpIHNoYXBlIG4gPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgRnVuY3Rpb24gfCBMYXp5IC0+XG4gICAgIE9iai5zZXRfZmllbGQgbW9kdSBpIG5cbiAgfCBWYWx1ZSBfIC0+XG4gICAgICgpICgqIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IHRoZXJlICopXG4gIHwgQ2xhc3MgLT5cbiAgICAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPSA0KTtcbiAgICAgbGV0IGNsID0gT2JqLmZpZWxkIG1vZHUgaSBpblxuICAgICBmb3IgaiA9IDAgdG8gMyBkb1xuICAgICAgIE9iai5zZXRfZmllbGQgY2wgaiAoT2JqLmZpZWxkIG4gailcbiAgICAgZG9uZVxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIChPYmouZmllbGQgbW9kdSBpKSBuXG5cbmFuZCB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gbiA9XG4gIGFzc2VydCAoT2JqLnRhZyBuID0gMCAmJiBPYmouc2l6ZSBuID49IEFycmF5Lmxlbmd0aCBjb21wcyk7XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY29tcHMgLSAxIGRvXG4gICAgdXBkYXRlX21vZF9maWVsZCBvIGkgY29tcHMuKGkpIChPYmouZmllbGQgbiBpKVxuICBkb25lXG5cbmxldCB1cGRhdGVfbW9kIHNoYXBlIG8gbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgdXBkYXRlX21vZF9ibG9jayBjb21wcyBvIG5cbiAgfCBfIC0+IGZhaWx3aXRoIFwiQ2FtbGludGVybmFsTW9kLnVwZGF0ZV9tb2Q6IG5vdCBhIG1vZHVsZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPSBzaWdcblxuICB0eXBlIGtleVxuICB0eXBlICEnYSB0XG4gIHZhbCBjcmVhdGUgOiA/cmFuZG9tICgqdGh3YXJ0IHRvb2xzL3N5bmNfc3RkbGliX2RvY3MqKSA6IGJvb2wgLT4gaW50IC0+ICdhIHRcbiAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gIHZhbCBmaW5kX29wdCA6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG5cbiAgdHlwZSBrZXlcbiAgdHlwZSAhJ2EgdFxuICB2YWwgY3JlYXRlIDogaW50IC0+ICdhIHRcbiAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gIHZhbCBmaW5kX29wdCA6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgR2VuSGFzaFRhYmxlID0gc3RydWN0XG5cbiAgdHlwZSBlcXVhbCA9XG4gIHwgRVRydWUgfCBFRmFsc2VcbiAgfCBFRGVhZCAoKiogdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHJlY2xhaW1lZCB0aGUgZGF0YSAqKVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkKEg6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgJ2EgY29udGFpbmVyXG4gICAgdmFsIGNyZWF0ZTogdCAtPiAnYSAtPiAnYSBjb250YWluZXJcbiAgICB2YWwgc2VlZGVkX2hhc2g6IGludCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogJ2EgY29udGFpbmVyIC0+IHQgLT4gZXF1YWxcbiAgICB2YWwgZ2V0X2RhdGE6ICdhIGNvbnRhaW5lciAtPiAnYSBvcHRpb25cbiAgICB2YWwgc2V0X2tleV9kYXRhOiAnYSBjb250YWluZXIgLT4gdCAtPiAnYSAtPiB1bml0XG4gICAgdmFsIGNoZWNrX2tleTogJ2EgY29udGFpbmVyIC0+IGJvb2xcbiAgZW5kKSA6IFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudFxuICA9IHN0cnVjdFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICAgICAgbXV0YWJsZSBkYXRhOiAnYSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICAgICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICAgICAgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gICAgICB9XG5cbiAgICBhbmQgJ2EgYnVja2V0bGlzdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgQ29ucyBvZiBpbnQgKCogaGFzaCBvZiB0aGUga2V5ICopICogJ2EgSC5jb250YWluZXIgKiAnYSBidWNrZXRsaXN0XG5cbiAgICAoKiogdGhlIGhhc2ggb2YgdGhlIGtleSBpcyBrZXB0IGluIG9yZGVyIHRvIHRlc3QgdGhlIGVxdWFsaXR5IG9mIHRoZSBoYXNoXG4gICAgICBiZWZvcmUgdGhlIGtleS4gU2FtZSByZWFzb24gYXMgZm9yIFdlYWsuTWFrZSAqKVxuXG4gICAgdHlwZSBrZXkgPSBILnRcblxuICAgIGxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICAgICAgaWYgeCA+PSBuIHRoZW4geFxuICAgICAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICAgICAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG4gICAgbGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSlcblxuICAgIGxldCBjcmVhdGUgPyhyYW5kb20gPSAoSGFzaHRibC5pc19yYW5kb21pemVkICgpKSkgaW5pdGlhbF9zaXplID1cbiAgICAgIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgICAgIGxldCBzZWVkID0gaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykgZWxzZSAwIGluXG4gICAgICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbiAgICBsZXQgY2xlYXIgaCA9XG4gICAgICBoLnNpemUgPC0gMDtcbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICBkb25lXG5cbiAgICBsZXQgcmVzZXQgaCA9XG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICAgICAgaWYgbGVuID0gaC5pbml0aWFsX3NpemUgdGhlblxuICAgICAgICBjbGVhciBoXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSBoLmluaXRpYWxfc2l6ZSBFbXB0eVxuICAgICAgZW5kXG5cbiAgICBsZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5LmNvcHkgaC5kYXRhIH1cblxuICAgIGxldCBrZXlfaW5kZXggaCBoa2V5ID1cbiAgICAgIGhrZXkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgY2xlYW4gaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIEVtcHR5XG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSB3aGVuIG5vdCAoSC5jaGVja19rZXkgYykgLT5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgfCBDb25zKGhrZXksIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBDb25zKGhrZXksIGMsIGRvX2J1Y2tldCByZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGQuKGkpIDwtIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgKCoqIHJlc2l6ZSBpcyB0aGUgb25seSBmdW5jdGlvbiB0byBkbyB0aGUgYWN0dWFsIGNsZWFuaW5nIG9mIGRlYWQga2V5c1xuICAgICAgICAocmVtb3ZlIGRvZXMgaXQganVzdCBiZWNhdXNlIGl0IGNvdWxkKS5cblxuICAgICAgICBUaGUgZ29hbCBpcyB0bzpcblxuICAgICAgICAtIG5vdCByZXNpemUgaW5maW5pdGVseSB3aGVuIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGFsaXZlIGtleXMgaXNcbiAgICAgICAgYm91bmRlZCBidXQga2V5cyBhcmUgY29udGludW91c2x5IGFkZGVkLiBUaGF0IHdvdWxkIGhhcHBlbiBpZlxuICAgICAgICB0aGlzIGZ1bmN0aW9uIGFsd2F5cyByZXNpemUuXG4gICAgICAgIC0gbm90IGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciBlYWNoIGFkZGl0aW9uLCB0aGF0IHdvdWxkIGhhcHBlbiBpZiB0aGlzXG4gICAgICAgIGZ1bmN0aW9uIGRvbid0IHJlc2l6ZSBldmVuIHdoZW4gb25seSBvbmUga2V5IGlzIGRlYWQuXG5cbiAgICAgICAgU28gdGhlIGFsZ29yaXRobTpcbiAgICAgICAgLSBjbGVhbiB0aGUga2V5cyBiZWZvcmUgcmVzaXppbmdcbiAgICAgICAgLSBpZiB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBrZXlzIGlzIGxlc3MgdGhhbiBoYWxmIHRoZSBzaXplIG9mIHRoZVxuICAgICAgICBhcnJheSwgZG9uJ3QgcmVzaXplLlxuICAgICAgICAtIGlmIGl0IGlzIG1vcmUsIHJlc2l6ZS5cblxuICAgICAgICBUaGUgc2Vjb25kIHByb2JsZW0gcmVtYWlucyBpZiB0aGUgdGFibGUgcmVhY2hlcyB7IVN5cy5tYXhfYXJyYXlfbGVuZ3RofS5cblxuICAgICopXG4gICAgbGV0IHJlc2l6ZSBoID1cbiAgICAgIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICAgICAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gICAgICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgICAgIGNsZWFuIGg7XG4gICAgICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoICYmIGguc2l6ZSA+PSBvc2l6ZSBsc3IgMSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICAgICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAoKiBzbyB0aGF0IGtleV9pbmRleCBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgICAgIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgICAgIHwgQ29ucyhoa2V5LCBkYXRhLCByZXN0KSAtPlxuICAgICAgICAgICAgICBpbnNlcnRfYnVja2V0IHJlc3Q7ICgqIHByZXNlcnZlIG9yaWdpbmFsIG9yZGVyIG9mIGVsZW1lbnRzICopXG4gICAgICAgICAgICAgIGxldCBuaWR4ID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgICAgICAgICBuZGF0YS4obmlkeCkgPC0gQ29ucyhoa2V5LCBkYXRhLCBuZGF0YS4obmlkeCkpIGluXG4gICAgICAgIGZvciBpID0gMCB0byBvc2l6ZSAtIDEgZG9cbiAgICAgICAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICAgICAgICBkb25lXG4gICAgICBlbmRcblxuICAgIGxldCBhZGQgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25zKGhrZXksIGNvbnRhaW5lciwgaC5kYXRhLihpKSkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgICAgfCBDb25zKGhrLCBjLCBuZXh0KSB3aGVuIGhrZXkgPSBoayAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgICB8IEVUcnVlIC0+IGguc2l6ZSA8LSBoLnNpemUgLSAxOyBuZXh0XG4gICAgICAgICAgICB8IEVGYWxzZSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpXG4gICAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgICAgKCogVGhlIGRlYWQga2V5IGlzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZC4gSXQgaXMgYWNjZXB0YWJsZVxuICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyBmdW5jdGlvbiBzaW5jZSBpdCBhbHJlYWR5IHJlbW92ZXMgYSBiaW5kaW5nICopXG4gICAgICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICAgICAgcmVtb3ZlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKGhrLGMsbmV4dCkgLT4gQ29ucyhoaywgYywgcmVtb3ZlX2J1Y2tldCBuZXh0KSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIHJlbW92ZV9idWNrZXQgaC5kYXRhLihpKVxuXG4gICAgKCoqIHshZmluZH0gZG9uJ3QgcmVtb3ZlIGRlYWQga2V5cyBiZWNhdXNlIGl0IHdvdWxkIGJlIHN1cnByaXNpbmcgZm9yXG4gICAgICAgIHRoZSB1c2VyIHRoYXQgYSByZWFkLW9ubHkgZnVuY3Rpb24gbXV0YXRlcyB0aGUgc3RhdGUgKGVnLiBjb25jdXJyZW50XG4gICAgICAgIGFjY2VzcykuIFNhbWUgZm9yIHshbWVtfS5cbiAgICAqKVxuICAgIGxldCByZWMgZmluZF9yZWMga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIGlzIG5vdCBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIGdjIGNhbiBydW4gYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgIEguZXF1YWwgYW5kIEguZ2V0X2RhdGEgKilcbiAgICAgICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlYyBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSBoa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgKGguZGF0YS4oa2V5X2luZGV4IGggaGtleSkpXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBbXVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkOjpmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cblxuICAgIGxldCByZXBsYWNlIGgga2V5IGluZm8gPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gSC5zZXRfa2V5X2RhdGEgYyBrZXkgaW5mb1xuICAgICAgICAgICAgfCBFRmFsc2UgfCBFRGVhZCAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKF8sXyxuZXh0KSAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIHRyeVxuICAgICAgICByZXBsYWNlX2J1Y2tldCBsXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25zKGhrZXksIGNvbnRhaW5lciwgbCk7XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoayA9IGhrZXkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IHRydWVcbiAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IG1lbV9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF9oaywgX2MsIHJlc3QpIC0+IG1lbV9pbl9idWNrZXQgcmVzdCBpblxuICAgICAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cbiAgICBsZXQgbGVuZ3RoIGggPSBoLnNpemVcblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSByZXN0XG5cbiAgICBsZXQgc3RhdHMgaCA9XG4gICAgICBsZXQgbWJsID1cbiAgICAgICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICAgICAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICAgICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgICAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICAgICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuICAgIGxldCByZWMgYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gSC5jaGVja19rZXkgYyAtPlxuICAgICAgICAgIGJ1Y2tldF9sZW5ndGhfYWxpdmUgKGFjY3UgKyAxKSByZXN0XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aF9hbGl2ZSBhY2N1IHJlc3RcblxuICAgIGxldCBzdGF0c19hbGl2ZSBoID1cbiAgICAgIGxldCBzaXplID0gcmVmIDAgaW5cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiKSkgMCBoLmRhdGFcbiAgICAgIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGhfYWxpdmUgMCBiIGluXG4gICAgICAgICAgIHNpemUgOj0gIXNpemUgKyBsO1xuICAgICAgICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICAgICAgaC5kYXRhO1xuICAgICAgeyBIYXNodGJsLm51bV9iaW5kaW5ncyA9ICFzaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IGFkZF9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG4gICAgbGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcblxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2JqRXBoID0gT2JqLkVwaGVtZXJvblxuXG5sZXQgX29ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB4XG4gIHwgU29tZSB2IC0+IFNvbWUgKE9iai5vYmogdilcblxuKCoqIFRoZSBwcmV2aW91cyBmdW5jdGlvbiBpcyB0eXBlZCBzbyB0aGlzIG9uZSBpcyBhbHNvIGNvcnJlY3QgKilcbmxldCBvYmpfb3B0IDogT2JqLnQgb3B0aW9uIC0+ICdhIG9wdGlvbiA9IGZ1biB4IC0+IE9iai5tYWdpYyB4XG5cblxubW9kdWxlIEsxID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSAxXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IHNldF9rZXkgKHQ6KCdrLCdkKSB0KSAoazonaykgOiB1bml0ID0gT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSAoZDonZCkgOiB1bml0ID0gT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuXG4gIGxldCBtYWtlIGtleSBkYXRhID1cbiAgICBsZXQgZXBoID0gY3JlYXRlICgpIGluXG4gICAgc2V0X2RhdGEgZXBoIGRhdGE7XG4gICAgc2V0X2tleSBlcGgga2V5O1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5ID1cbiAgICBtYXRjaCBnZXRfa2V5IGVwaCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5IC0+IGdldF9kYXRhIGVwaFxuICAgIHwgU29tZSBfIC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleSBjIGs7XG4gICAgICAgIGNcbiAgICAgIGxldCBzZWVkZWRfaGFzaCA9IEguc2VlZGVkX2hhc2hcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICAoKiB7IWdldF9rZXlfY29weX0gaXMgbm90IHVzZWQgYmVjYXVzZSB0aGUgZXF1YWxpdHkgb2YgdGhlIHVzZXIgY2FuIGJlXG4gICAgICAgICAgICB0aGUgcGh5c2ljYWwgZXF1YWxpdHkgKilcbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgaycgLT5cbiAgICAgICAgICAgIGlmIEguZXF1YWwgayBrJyB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgayBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5ID0gY2hlY2tfa2V5XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2ssICdkKSB0ID0gKCdrLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrMV9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsgZCA9IGIgOj0gazFfbWFrZSBrIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleSBrIGUgPVxuICAgICAgbWF0Y2ggZ2V0X2tleSBlIHdpdGhcbiAgICAgIHwgU29tZSB4IHdoZW4geCA9PSBrIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleSBrIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXkgaykgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgSzIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2sxLCAnazIsICdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrMSwnazIsJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDJcblxuICBsZXQgZ2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2sxIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IHNldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSAoazonazEpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgZ2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2syIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMSlcbiAgbGV0IHNldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSAoazonazIpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAxIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDFcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgKGQ6J2QpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG5cbiAgbGV0IG1ha2Uga2V5MSBrZXkyIGRhdGEgPVxuICAgIGxldCBlcGggPSBjcmVhdGUgKCkgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBzZXRfa2V5MSBlcGgga2V5MTtcbiAgICBzZXRfa2V5MiBlcGgga2V5MjtcbiAgICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkga2V5MSk7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXkxIGtleTIgPVxuICAgIG1hdGNoIGdldF9rZXkxIGVwaCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5MSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBnZXRfa2V5MiBlcGggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5MiAtPiBnZXRfZGF0YSBlcGhcbiAgICAgICAgfCBTb21lIF8gLT4gTm9uZVxuICAgICAgICBlbmRcbiAgICB8IFNvbWUgXyAtPiBOb25lXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWRcbiAgICAgIChIMTpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpXG4gICAgICAoSDI6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChIMS50LEgyLnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50XG4gICAgICBsZXQgY3JlYXRlIChrMSxrMikgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoIHNlZWQgKGsxLGsyKSA9XG4gICAgICAgIEgxLnNlZWRlZF9oYXNoIHNlZWQgazEgKyBIMi5zZWVkZWRfaGFzaCBzZWVkIGsyICogNjU1OTlcbiAgICAgIGxldCBlcXVhbCBjIChrMSxrMikgPVxuICAgICAgICBtYXRjaCBnZXRfa2V5MSBjLCBnZXRfa2V5MiBjIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXyAsIE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrMScsIFNvbWUgazInIC0+XG4gICAgICAgICAgICBpZiBIMS5lcXVhbCBrMSBrMScgJiYgSDIuZXF1YWwgazIgazInXG4gICAgICAgICAgICB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgKGsxLGsyKSBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9IGNoZWNrX2tleTEgYyAmJiBjaGVja19rZXkyIGNcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDE6IEhhc2h0YmwuSGFzaGVkVHlwZSkoSDI6IEhhc2h0YmwuSGFzaGVkVHlwZSk6XG4gICAgKFMgd2l0aCB0eXBlIGtleSA9IEgxLnQgKiBIMi50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDEudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgxLmVxdWFsXG4gICAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSDEuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEgyLnRcbiAgICAgICAgICBsZXQgZXF1YWwgPSBIMi5lcXVhbFxuICAgICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEgyLmhhc2ggeFxuICAgICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnazEsICdrMiwgJ2QpIHQgPSAoJ2sxLCAnazIsICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGsyX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgazEgazIgZCA9IGIgOj0gazJfbWFrZSBrMSBrMiBkIDo6ICFiXG5cbiAgICBsZXQgdGVzdF9rZXlzIGsxIGsyIGUgPVxuICAgICAgbWF0Y2ggZ2V0X2tleTEgZSwgZ2V0X2tleTIgZSB3aXRoXG4gICAgICB8IFNvbWUgeDEsIFNvbWUgeDIgd2hlbiB4MSA9PSBrMSAmJiB4MiA9PSBrMiAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZW1vdmUgYiBrMSBrMiA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5cyBrMSBrMiBoIC0+IGIgOj0gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgIHwgaCA6OiB0IC0+IGxvb3AgdCAoaCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAhYiBbXVxuXG4gICAgbGV0IGZpbmQgYiBrMSBrMiA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleXMgazEgazIpICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIEtuID0gc3RydWN0XG4gIHR5cGUgKCdrLCdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlIG4gOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIG5cbiAgbGV0IGxlbmd0aCAoazooJ2ssJ2QpIHQpIDogaW50ID0gT2JqRXBoLmxlbmd0aCBrXG5cbiAgbGV0IGdldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCBuKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgKGs6J2spIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCBuIChPYmoucmVwciBrKVxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgblxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG5cbiAgbGV0IG1ha2Uga2V5cyBkYXRhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBrZXlzIGluXG4gICAgbGV0IGVwaCA9IGNyZWF0ZSBsIGluXG4gICAgc2V0X2RhdGEgZXBoIGRhdGE7XG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHNldF9rZXkgZXBoIGkga2V5cy4oaSkgZG9uZTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleXMgPVxuICAgIGxldCBsID0gbGVuZ3RoIGVwaCBpblxuICAgIHRyeVxuICAgICAgaWYgbCA8PiBBcnJheS5sZW5ndGgga2V5cyB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBlcGggaSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZSBFeGl0XG4gICAgICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXlzLihpKSAtPiAoKVxuICAgICAgICB8IFNvbWUgXyAtPiByYWlzZSBFeGl0XG4gICAgICBkb25lO1xuICAgICAgZ2V0X2RhdGEgZXBoXG4gICAgd2l0aCBFeGl0IC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50IGFycmF5XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlIChBcnJheS5sZW5ndGggaykgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGNcbiAgICAgIGxldCBzZWVkZWRfaGFzaCBzZWVkIGsgPVxuICAgICAgICBsZXQgaCA9IHJlZiAwIGluXG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBoIDo9IEguc2VlZGVkX2hhc2ggc2VlZCBrLihpKSAqIDY1NTk5ICsgIWg7XG4gICAgICAgIGRvbmU7XG4gICAgICAgICFoXG4gICAgICBsZXQgZXF1YWwgYyBrID1cbiAgICAgICAgbGV0IGxlbiAgPSBBcnJheS5sZW5ndGggayBpblxuICAgICAgICBsZXQgbGVuJyA9IGxlbmd0aCBjIGluXG4gICAgICAgIGlmIGxlbiAhPSBsZW4nIHRoZW4gR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHJlYyBlcXVhbF9hcnJheSBrIGMgaSA9XG4gICAgICAgICAgICBpZiBpIDwgMCB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgaSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgICAgICAgfCBTb21lIGtpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGsuKGkpIGtpXG4gICAgICAgICAgICAgICAgICB0aGVuIGVxdWFsX2FycmF5IGsgYyAoaS0xKVxuICAgICAgICAgICAgICAgICAgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcXVhbF9hcnJheSBrIGMgKGxlbi0xKVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5IGMgPVxuICAgICAgICBsZXQgcmVjIGNoZWNrIGMgaSA9XG4gICAgICAgICAgaSA8IDAgfHwgKGNoZWNrX2tleSBjIGkgJiYgY2hlY2sgYyAoaS0xKSkgaW5cbiAgICAgICAgY2hlY2sgYyAobGVuZ3RoIGMgLSAxKVxuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIOiBIYXNodGJsLkhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50IGFycmF5KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrLCAnZCkgdCA9ICgnaywgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQga25fbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrIGQgPSBiIDo9IGtuX21ha2UgayBkIDo6ICFiXG5cbiAgICBsZXQgdGVzdF9rZXlzIGsgZSA9XG4gICAgICB0cnlcbiAgICAgICAgaWYgbGVuZ3RoIGUgPD4gQXJyYXkubGVuZ3RoIGsgdGhlbiByYWlzZSBFeGl0O1xuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGsgLSAxIGRvXG4gICAgICAgICAgbWF0Y2ggZ2V0X2tleSBlIGkgd2l0aFxuICAgICAgICAgIHwgU29tZSB4IHdoZW4geCA9PSBrLihpKSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRydWVcbiAgICAgIHdpdGggRXhpdCAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleXMgayBoIC0+IGIgOj0gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgIHwgaCA6OiB0IC0+IGxvb3AgdCAoaCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAhYiBbXVxuXG4gICAgbGV0IGZpbmQgYiBrID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5cyBrKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgWGF2aWVyIExlcm95IGFuZCBEYW1pZW4gRG9saWdleiwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBnZW5lcmljX3F1b3RlIHF1b3RlcXVvdGUgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgaWYgcy5baV0gPSAnXFwnJ1xuICAgIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBxdW90ZXF1b3RlXG4gICAgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYiAgcy5baV1cbiAgZG9uZTtcbiAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcJyc7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMV1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9iYXNlbmFtZS5odG1sXG4gIEluIHN0ZXAgMSBvZiBbWzFdXSwgd2UgY2hvb3NlIHRvIHJldHVybiBcIi5cIiBmb3IgZW1wdHkgaW5wdXQuXG4gICAgKGZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgdmVyc2lvbnMgb2YgT0NhbWwpXG4gIEluIHN0ZXAgMiwgd2UgY2hvb3NlIHRvIHByb2Nlc3MgXCIvL1wiIG5vcm1hbGx5LlxuICBTdGVwIDYgaXMgbm90IGltcGxlbWVudGVkOiB3ZSBjb25zaWRlciB0aGF0IHRoZSBbc3VmZml4XSBvcGVyYW5kIGlzXG4gICAgYWx3YXlzIGFic2VudC4gIFN1ZmZpeGVzIGFyZSBoYW5kbGVkIGJ5IFtjaG9wX3N1ZmZpeF0gYW5kIFtjaG9wX2V4dGVuc2lvbl0uXG4qKVxubGV0IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIG5hbWUgPVxuICBsZXQgcmVjIGZpbmRfZW5kIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBmaW5kX2VuZCAobiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyBuIChuICsgMSlcbiAgYW5kIGZpbmRfYmVnIG4gcCA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCBwXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIFN0cmluZy5zdWIgbmFtZSAobiArIDEpIChwIC0gbiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyAobiAtIDEpIHBcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgZmluZF9lbmQgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMl1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9kaXJuYW1lLmh0bWxcbiAgSW4gc3RlcCA2IG9mIFtbMl1dLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4qKVxubGV0IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgdHJhaWxpbmdfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiB0cmFpbGluZ19zZXAgKG4gLSAxKVxuICAgIGVsc2UgYmFzZSBuXG4gIGFuZCBiYXNlIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIG5cbiAgICBlbHNlIGJhc2UgKG4gLSAxKVxuICBhbmQgaW50ZXJtZWRpYXRlX3NlcCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gaW50ZXJtZWRpYXRlX3NlcCAobiAtIDEpXG4gICAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAobiArIDEpXG4gIGluXG4gIGlmIG5hbWUgPSBcIlwiXG4gIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICBlbHNlIHRyYWlsaW5nX3NlcCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubW9kdWxlIHR5cGUgU1lTREVQUyA9IHNpZ1xuICB2YWwgbnVsbCA6IHN0cmluZ1xuICB2YWwgY3VycmVudF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcGFyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBkaXJfc2VwIDogc3RyaW5nXG4gIHZhbCBpc19kaXJfc2VwIDogc3RyaW5nIC0+IGludCAtPiBib29sXG4gIHZhbCBpc19yZWxhdGl2ZSA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBpc19pbXBsaWNpdCA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBjaGVja19zdWZmaXggOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNob3Bfc3VmZml4X29wdCA6IHN1ZmZpeDpzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgdmFsIHRlbXBfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIHF1b3RlIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgcXVvdGVfY29tbWFuZCA6XG4gICAgc3RyaW5nIC0+ID9zdGRpbjogc3RyaW5nIC0+ID9zdGRvdXQ6IHN0cmluZyAtPiA/c3RkZXJyOiBzdHJpbmdcbiAgICAgICAgICAgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4gIHZhbCBiYXNlbmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGRpcm5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nXG5lbmRcblxubW9kdWxlIFVuaXggOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCIvZGV2L251bGxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIi9cIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBzLltpXSA9ICcvJ1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9IFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICAgU3RyaW5nLmVuZHNfd2l0aCB+c3VmZml4OnN1ZmYgbmFtZVxuXG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgfnN1ZmZpeCBmaWxlbmFtZSA9XG4gICAgbGV0IGxlbl9zID0gU3RyaW5nLmxlbmd0aCBzdWZmaXggYW5kIGxlbl9mID0gU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSBpblxuICAgIGlmIGxlbl9mID49IGxlbl9zIHRoZW5cbiAgICAgIGxldCByID0gU3RyaW5nLnN1YiBmaWxlbmFtZSAobGVuX2YgLSBsZW5fcykgbGVuX3MgaW5cbiAgICAgIGlmIHIgPSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID1cbiAgICB0cnkgU3lzLmdldGVudiBcIlRNUERJUlwiIHdpdGggTm90X2ZvdW5kIC0+IFwiL3RtcFwiXG4gIGxldCBxdW90ZSA9IGdlbmVyaWNfcXVvdGUgXCInXFxcXCcnXCJcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgcXVvdGUgKGNtZCA6OiBhcmdzKSlcbiAgICBeIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRlcnIgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFwiIDI+JjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGUgZilcbiAgbGV0IGJhc2VuYW1lID0gZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcm5hbWUgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG5lbmRcblxubW9kdWxlIFdpbjMyIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiTlVMXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCJcXFxcXCJcbiAgbGV0IGlzX2Rpcl9zZXAgcyBpID0gbGV0IGMgPSBzLltpXSBpbiBjID0gJy8nIHx8IGMgPSAnXFxcXCcgfHwgYyA9ICc6J1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9XG4gICAgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICdcXFxcJylcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBuLlsxXSA8PiAnOicpXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi5cXFxcXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLlxcXFxcIilcbiAgbGV0IGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICAgU3RyaW5nLmxlbmd0aCBuYW1lID49IFN0cmluZy5sZW5ndGggc3VmZiAmJlxuICAgKGxldCBzID0gU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBTdHJpbmcubGVuZ3RoIHN1ZmYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZy5sZW5ndGggc3VmZikgaW5cbiAgICBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHMgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmYpXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSByID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVEVNUFwiIHdpdGggTm90X2ZvdW5kIC0+IFwiLlwiXG4gIGxldCBxdW90ZSBzID1cbiAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJztcbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJyBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdcXFwiJyAtPiBsb29wX2JzIDAgaTtcbiAgICAgIHwgJ1xcXFwnIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCBjICAgIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGM7IGxvb3AgKGkrMSk7XG4gICAgYW5kIGxvb3BfYnMgbiBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgICAgICBhZGRfYnMgbjtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnXFxcIicgLT4gYWRkX2JzICgyKm4rMSk7IEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJzsgbG9vcCAoaSsxKTtcbiAgICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAobisxKSAoaSsxKTtcbiAgICAgICAgfCBfICAgIC0+IGFkZF9icyBuOyBsb29wIGlcbiAgICAgIGVuZFxuICAgIGFuZCBhZGRfYnMgbiA9IGZvciBfaiA9IDEgdG8gbiBkbyBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7IGRvbmVcbiAgICBpblxuICAgIGxvb3AgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuKCpcblF1b3RpbmcgY29tbWFuZHMgZm9yIGV4ZWN1dGlvbiBieSBjbWQuZXhlIGlzIGRpZmZpY3VsdC5cbjEtIEVhY2ggYXJndW1lbnQgaXMgZmlyc3QgcXVvdGVkIHVzaW5nIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmUsIHRvXG4gICBwcm90ZWN0IGl0IGFnYWluc3QgdGhlIHByb2Nlc3NpbmcgcGVyZm9ybWVkIGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLFxuICAgdGhlbiBjbWQuZXhlJ3Mgc3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkIHdpdGggJ14nLCB1c2luZ1xuICAgdGhlIFwicXVvdGVfY21kXCIgZnVuY3Rpb24gYmVsb3cuICBGb3IgbW9yZSBkZXRhaWxzLCBzZWVcbiAgIGh0dHBzOi8vYmxvZ3MubXNkbi5taWNyb3NvZnQuY29tL3R3aXN0eWxpdHRsZXBhc3NhZ2VzYWxsYWxpa2UvMjAxMS8wNC8yM1xuMi0gVGhlIGNvbW1hbmQgYW5kIHRoZSByZWRpcmVjdGlvbiBmaWxlcywgaWYgYW55LCBtdXN0IGJlIGRvdWJsZS1xdW90ZWRcbiAgIGluIGNhc2UgdGhleSBjb250YWluIHNwYWNlcy4gIFRoaXMgcXVvdGluZyBpcyBpbnRlcnByZXRlZCBieSBjbWQuZXhlLFxuICAgbm90IGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLCBoZW5jZSB0aGUgXCJxdW90ZVwiIGZ1bmN0aW9uIGFib3ZlXG4gICBjYW5ub3QgYmUgdXNlZC4gIFRoZSB0d28gY2hhcmFjdGVycyB3ZSBkb24ndCBrbm93IGhvdyB0byBxdW90ZVxuICAgaW5zaWRlIGEgZG91YmxlLXF1b3RlZCBjbWQuZXhlIHN0cmluZyBhcmUgZG91YmxlLXF1b3RlIGFuZCBwZXJjZW50LlxuICAgV2UganVzdCBmYWlsIGlmIHRoZSBjb21tYW5kIG5hbWUgb3IgdGhlIHJlZGlyZWN0aW9uIGZpbGUgbmFtZXNcbiAgIGNvbnRhaW4gYSBkb3VibGUgcXVvdGUgKG5vdCBhbGxvd2VkIGluIFdpbmRvd3MgZmlsZSBuYW1lcywgYW55d2F5KVxuICAgb3IgYSBwZXJjZW50LiAgU2VlIGZ1bmN0aW9uIFwicXVvdGVfY21kX2ZpbGVuYW1lXCIgYmVsb3cuXG4zLSBUaGUgd2hvbGUgc3RyaW5nIHBhc3NlZCB0byBTeXMuY29tbWFuZCBpcyB0aGVuIGVuY2xvc2VkIGluIGRvdWJsZVxuICAgcXVvdGVzLCB3aGljaCBhcmUgaW1tZWRpYXRlbHkgc3RyaXBwZWQgYnkgY21kLmV4ZS4gIE90aGVyd2lzZSxcbiAgIHNvbWUgb2YgdGhlIGRvdWJsZSBxdW90ZXMgZnJvbSBzdGVwIDIgYWJvdmUgY2FuIGJlIG1pc3BhcnNlZC5cbiAgIFNlZSBlLmcuIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS85OTY1MTQxXG4qKVxuICBsZXQgcXVvdGVfY21kIHMgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgMjApIGluXG4gICAgU3RyaW5nLml0ZXJcbiAgICAgIChmdW4gYyAtPlxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAnKCcgfCAnKScgfCAnIScgfCAnXicgfCAnJScgfCAnXFxcIicgfCAnPCcgfCAnPicgfCAnJicgfCAnfCcgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdeJzsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGMpXG4gICAgICBzO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gIGxldCBxdW90ZV9jbWRfZmlsZW5hbWUgZiA9XG4gICAgaWYgU3RyaW5nLmV4aXN0cyAoZnVuY3Rpb24gJ1xcXCInIHwgJyUnIC0+IHRydWUgfCBfIC0+IGZhbHNlKSBmIHRoZW5cbiAgICAgIGZhaWx3aXRoIChcIkZpbGVuYW1lLnF1b3RlX2NvbW1hbmQ6IGJhZCBmaWxlIG5hbWUgXCIgXiBmKVxuICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIGYgJyAnIHRoZW5cbiAgICAgIFN0cmluZy5jb25jYXQgXCJcIiBbXCJcXFwiXCI7IGY7IFwiXFxcIlwiXVxuICAgIGVsc2VcbiAgICAgIGZcbiAgKCogUmVkaXJlY3Rpb25zIGluIGNtZC5leGU6IHNlZSBodHRwczovL3NzNjQuY29tL250L3N5bnRheC1yZWRpcmVjdGlvbi5odG1sXG4gICAgIGFuZCBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9wcmV2aW91cy12ZXJzaW9ucy93aW5kb3dzL2l0LXByby93aW5kb3dzLXhwL2JiNDkwOTgyKHY9dGVjaG5ldC4xMClcbiAgKilcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtcbiAgICAgIFwiXFxcIlwiO1xuICAgICAgcXVvdGVfY21kX2ZpbGVuYW1lIGNtZDtcbiAgICAgIFwiIFwiO1xuICAgICAgcXVvdGVfY21kIChTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSBhcmdzKSk7XG4gICAgICAobWF0Y2ggc3RkaW4gIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiIDxcIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0ZGVyciA9IHN0ZG91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgXCJcXFwiXCJcbiAgICBdXG4gIGxldCBoYXNfZHJpdmUgcyA9XG4gICAgbGV0IGlzX2xldHRlciA9IGZ1bmN0aW9uXG4gICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgU3RyaW5nLmxlbmd0aCBzID49IDIgJiYgaXNfbGV0dGVyIHMuWzBdICYmIHMuWzFdID0gJzonXG4gIGxldCBkcml2ZV9hbmRfcGF0aCBzID1cbiAgICBpZiBoYXNfZHJpdmUgc1xuICAgIHRoZW4gKFN0cmluZy5zdWIgcyAwIDIsIFN0cmluZy5zdWIgcyAyIChTdHJpbmcubGVuZ3RoIHMgLSAyKSlcbiAgICBlbHNlIChcIlwiLCBzKVxuICBsZXQgZGlybmFtZSBzID1cbiAgICBsZXQgKGRyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBsZXQgZGlyID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoIGluXG4gICAgZHJpdmUgXiBkaXJcbiAgbGV0IGJhc2VuYW1lIHMgPVxuICAgIGxldCAoX2RyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoXG5lbmRcblxubW9kdWxlIEN5Z3dpbiA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwID0gV2luMzIuaXNfZGlyX3NlcFxuICBsZXQgaXNfcmVsYXRpdmUgPSBXaW4zMi5pc19yZWxhdGl2ZVxuICBsZXQgaXNfaW1wbGljaXQgPSBXaW4zMi5pc19pbXBsaWNpdFxuICBsZXQgY2hlY2tfc3VmZml4ID0gV2luMzIuY2hlY2tfc3VmZml4XG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgPSBXaW4zMi5jaG9wX3N1ZmZpeF9vcHRcbiAgbGV0IHRlbXBfZGlyX25hbWUgPSBVbml4LnRlbXBfZGlyX25hbWVcbiAgbGV0IHF1b3RlID0gVW5peC5xdW90ZVxuICBsZXQgcXVvdGVfY29tbWFuZCA9IFVuaXgucXVvdGVfY29tbWFuZFxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgU3lzZGVwcyA9XG4gICh2YWwgKG1hdGNoIFN5cy5vc190eXBlIHdpdGhcbiAgICAgICB8IFwiV2luMzJcIiAtPiAobW9kdWxlIFdpbjMyOiBTWVNERVBTKVxuICAgICAgIHwgXCJDeWd3aW5cIiAtPiAobW9kdWxlIEN5Z3dpbjogU1lTREVQUylcbiAgICAgICB8IF8gLT4gKG1vZHVsZSBVbml4OiBTWVNERVBTKSkpXG5cbmluY2x1ZGUgU3lzZGVwc1xuXG5sZXQgY29uY2F0IGRpcm5hbWUgZmlsZW5hbWUgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggZGlybmFtZSBpblxuICBpZiBsID0gMCB8fCBpc19kaXJfc2VwIGRpcm5hbWUgKGwtMSlcbiAgdGhlbiBkaXJuYW1lIF4gZmlsZW5hbWVcbiAgZWxzZSBkaXJuYW1lIF4gZGlyX3NlcCBeIGZpbGVuYW1lXG5cbmxldCBjaG9wX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICBpZiBjaGVja19zdWZmaXggbmFtZSBzdWZmXG4gIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3Bfc3VmZml4XCJcblxubGV0IGV4dGVuc2lvbl9sZW4gbmFtZSA9XG4gIGxldCByZWMgY2hlY2sgaTAgaSA9XG4gICAgaWYgaSA8IDAgfHwgaXNfZGlyX3NlcCBuYW1lIGkgdGhlbiAwXG4gICAgZWxzZSBpZiBuYW1lLltpXSA9ICcuJyB0aGVuIGNoZWNrIGkwIChpIC0gMSlcbiAgICBlbHNlIFN0cmluZy5sZW5ndGggbmFtZSAtIGkwXG4gIGluXG4gIGxldCByZWMgc2VhcmNoX2RvdCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaSAoaSAtIDEpXG4gICAgZWxzZSBzZWFyY2hfZG90IChpIC0gMSlcbiAgaW5cbiAgc2VhcmNoX2RvdCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubGV0IGV4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBcIlwiIGVsc2UgU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKSBsXG5cbmxldCBjaG9wX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3BfZXh0ZW5zaW9uXCJcbiAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbClcblxubGV0IHJlbW92ZV9leHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gbmFtZSBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5leHRlcm5hbCBvcGVuX2Rlc2M6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcbmV4dGVybmFsIGNsb3NlX2Rlc2M6IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19jbG9zZVwiXG5cbmxldCBwcm5nX2tleSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSBSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXRcblxubGV0IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmFuZG9tX3N0YXRlID0gRG9tYWluLkRMUy5nZXQgcHJuZ19rZXkgaW5cbiAgbGV0IHJuZCA9IChSYW5kb20uU3RhdGUuYml0cyByYW5kb21fc3RhdGUpIGxhbmQgMHhGRkZGRkYgaW5cbiAgY29uY2F0IHRlbXBfZGlyIChQcmludGYuc3ByaW50ZiBcIiVzJTA2eCVzXCIgcHJlZml4IHJuZCBzdWZmaXgpXG5cbmxldCBjdXJyZW50X3RlbXBfZGlyX25hbWUgPVxuICBEb21haW4uRExTLm5ld19rZXkgfnNwbGl0X2Zyb21fcGFyZW50OkZ1bi5pZCAoZnVuICgpIC0+IHRlbXBfZGlyX25hbWUpXG5cbmxldCBzZXRfdGVtcF9kaXJfbmFtZSBzID0gRG9tYWluLkRMUy5zZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lIHNcbmxldCBnZXRfdGVtcF9kaXJfbmFtZSAoKSA9IERvbWFpbi5ETFMuZ2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZVxuXG5sZXQgdGVtcF9maWxlID8odGVtcF9kaXIgPSBEb21haW4uRExTLmdldCBjdXJyZW50X3RlbXBfZGlyX25hbWUpIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgY2xvc2VfZGVzYyhvcGVuX2Rlc2MgbmFtZSBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fZXhjbF0gMG82MDApO1xuICAgICAgbmFtZVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAyMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcblxubGV0IG9wZW5fdGVtcF9maWxlID8obW9kZSA9IFtPcGVuX3RleHRdKSA/KHBlcm1zID0gMG82MDApXG4gICAgPyh0ZW1wX2RpciA9IERvbWFpbi5ETFMuZ2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSlcbiAgICBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIChuYW1lLFxuICAgICAgIG9wZW5fb3V0X2dlbiAoT3Blbl93cm9ubHk6Ok9wZW5fY3JlYXQ6Ok9wZW5fZXhjbDo6bW9kZSkgcGVybXMgbmFtZSlcbiAgICB3aXRoIFN5c19lcnJvciBfIGFzIGUgLT5cbiAgICAgIGlmIGNvdW50ZXIgPj0gMjAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG5cbmxldCB0ZW1wX2RpciA/KHRlbXBfZGlyID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lKVxuICAgID8ocGVybXMgPSAwbzcwMCkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICBTeXMubWtkaXIgbmFtZSBwZXJtcztcbiAgICAgIG5hbWVcbiAgICB3aXRoIFN5c19lcnJvciBfIGFzIGUgLT5cbiAgICAgIGlmIGNvdW50ZXIgPj0gMjAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENvbXBsZXggbnVtYmVycyAqKVxuXG50eXBlIHQgPSB7IHJlOiBmbG9hdDsgaW06IGZsb2F0IH1cblxubGV0IHplcm8gPSB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG5sZXQgb25lID0geyByZSA9IDEuMDsgaW0gPSAwLjAgfVxubGV0IGkgPSB7IHJlID0gMC4wOyBpbSA9IDEuMCB9XG5cbmxldCBhZGQgeCB5ID0geyByZSA9IHgucmUgKy4geS5yZTsgaW0gPSB4LmltICsuIHkuaW0gfVxuXG5sZXQgc3ViIHggeSA9IHsgcmUgPSB4LnJlIC0uIHkucmU7IGltID0geC5pbSAtLiB5LmltIH1cblxubGV0IG5lZyB4ID0geyByZSA9IC0uIHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBjb25qIHggPSB7IHJlID0geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IG11bCB4IHkgPSB7IHJlID0geC5yZSAqLiB5LnJlIC0uIHguaW0gKi4geS5pbTtcbiAgICAgICAgICAgICAgICBpbSA9IHgucmUgKi4geS5pbSArLiB4LmltICouIHkucmUgfVxuXG5sZXQgZGl2IHggeSA9XG4gIGlmIGFic19mbG9hdCB5LnJlID49IGFic19mbG9hdCB5LmltIHRoZW5cbiAgICBsZXQgciA9IHkuaW0gLy4geS5yZSBpblxuICAgIGxldCBkID0geS5yZSArLiByICouIHkuaW0gaW5cbiAgICB7IHJlID0gKHgucmUgKy4gciAqLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAoeC5pbSAtLiByICouIHgucmUpIC8uIGQgfVxuICBlbHNlXG4gICAgbGV0IHIgPSB5LnJlIC8uIHkuaW0gaW5cbiAgICBsZXQgZCA9IHkuaW0gKy4gciAqLiB5LnJlIGluXG4gICAgeyByZSA9IChyICouIHgucmUgKy4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHIgKi4geC5pbSAtLiB4LnJlKSAvLiBkIH1cblxubGV0IGludiB4ID0gZGl2IG9uZSB4XG5cbmxldCBub3JtMiB4ID0geC5yZSAqLiB4LnJlICsuIHguaW0gKi4geC5pbVxuXG5sZXQgbm9ybSB4ID0gRmxvYXQuaHlwb3QgeC5yZSB4LmltXG5cbmxldCBhcmcgeCA9IGF0YW4yIHguaW0geC5yZVxuXG5sZXQgcG9sYXIgbiBhID0geyByZSA9IGNvcyBhICouIG47IGltID0gc2luIGEgKi4gbiB9XG5cbmxldCBzcXJ0IHggPVxuICBpZiB4LnJlID0gMC4wICYmIHguaW0gPSAwLjAgdGhlbiB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGFic19mbG9hdCB4LnJlIGFuZCBpID0gYWJzX2Zsb2F0IHguaW0gaW5cbiAgICBsZXQgdyA9XG4gICAgICBpZiByID49IGkgdGhlbiBiZWdpblxuICAgICAgICBsZXQgcSA9IGkgLy4gciBpblxuICAgICAgICBzcXJ0KHIpICouIHNxcnQoMC41ICouICgxLjAgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgcSA9IHIgLy4gaSBpblxuICAgICAgICBzcXJ0KGkpICouIHNxcnQoMC41ICouIChxICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGluXG4gICAgaWYgeC5yZSA+PSAwLjBcbiAgICB0aGVuIHsgcmUgPSB3OyAgaW0gPSAwLjUgKi4geC5pbSAvLiB3IH1cbiAgICBlbHNlIHsgcmUgPSAwLjUgKi4gaSAvLiB3OyAgaW0gPSBpZiB4LmltID49IDAuMCB0aGVuIHcgZWxzZSAtLiB3IH1cbiAgZW5kXG5cbmxldCBleHAgeCA9XG4gIGxldCBlID0gZXhwIHgucmUgaW4geyByZSA9IGUgKi4gY29zIHguaW07IGltID0gZSAqLiBzaW4geC5pbSB9XG5cbmxldCBsb2cgeCA9IHsgcmUgPSBsb2cgKG5vcm0geCk7IGltID0gYXRhbjIgeC5pbSB4LnJlIH1cblxubGV0IHBvdyB4IHkgPSBleHAgKG11bCB5IChsb2cgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgIEtDIFNpdmFyYW1ha3Jpc2huYW4sIEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IC4uXG5leHRlcm5hbCBwZXJmb3JtIDogJ2EgdCAtPiAnYSA9IFwiJXBlcmZvcm1cIlxuXG50eXBlIGV4biArPSBVbmhhbmRsZWQ6ICdhIHQgLT4gZXhuXG5leGNlcHRpb24gQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFxuXG5sZXQgKCkgPVxuICBsZXQgcHJpbnRlciA9IGZ1bmN0aW9uXG4gICAgfCBVbmhhbmRsZWQgeCAtPlxuICAgICAgICBsZXQgbXNnID0gUHJpbnRmLnNwcmludGYgXCJTdGRsaWIuRWZmZWN0LlVuaGFuZGxlZCglcylcIlxuICAgICAgICAgICAgKFByaW50ZXhjLnN0cmluZ19vZl9leHRlbnNpb25fY29uc3RydWN0b3IgQEAgT2JqLnJlcHIgeClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSBtc2dcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIHByaW50ZXJcblxuKCogUmVnaXN0ZXIgdGhlIGV4Y2VwdGlvbnMgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gYWNjZXNzIGl0ICopXG50eXBlIF8gdCArPSBTaG91bGRfbm90X3NlZV90aGlzX18gOiB1bml0IHRcbmxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiRWZmZWN0LlVuaGFuZGxlZFwiXG4gICAgICAgICAgKFVuaGFuZGxlZCBTaG91bGRfbm90X3NlZV90aGlzX18pXG5sZXQgXyA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcIkVmZmVjdC5Db250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXCJcbiAgICAgICAgICBDb250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXG5cbnR5cGUgKCdhLCAnYikgc3RhY2sgW0BAaW1tZWRpYXRlXVxudHlwZSBsYXN0X2ZpYmVyIFtAQGltbWVkaWF0ZV1cblxuZXh0ZXJuYWwgcmVzdW1lIDpcbiAgKCdhLCAnYikgc3RhY2sgLT4gKCdjIC0+ICdhKSAtPiAnYyAtPiBsYXN0X2ZpYmVyIC0+ICdiID0gXCIlcmVzdW1lXCJcbmV4dGVybmFsIHJ1bnN0YWNrIDogKCdhLCAnYikgc3RhY2sgLT4gKCdjIC0+ICdhKSAtPiAnYyAtPiAnYiA9IFwiJXJ1bnN0YWNrXCJcblxubW9kdWxlIERlZXAgPSBzdHJ1Y3RcblxuICB0eXBlICgnYSwnYikgY29udGludWF0aW9uXG5cbiAgZXh0ZXJuYWwgdGFrZV9jb250X25vZXhjIDogKCdhLCAnYikgY29udGludWF0aW9uIC0+ICgnYSwgJ2IpIHN0YWNrID1cbiAgICBcImNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1wiIFtAQG5vYWxsb2NdXG4gIGV4dGVybmFsIGFsbG9jX3N0YWNrIDpcbiAgICAoJ2EgLT4gJ2IpIC0+XG4gICAgKGV4biAtPiAnYikgLT5cbiAgICAoJ2MgdCAtPiAoJ2MsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBzdGFjayA9IFwiY2FtbF9hbGxvY19zdGFja1wiXG4gIGV4dGVybmFsIGNvbnRfbGFzdF9maWJlciA6ICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyID0gXCIlZmllbGQxXCJcbiAgZXh0ZXJuYWwgY29udF9zZXRfbGFzdF9maWJlciA6XG4gICAgKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gdW5pdCA9IFwiJXNldGZpZWxkMVwiXG5cbiAgbGV0IGNvbnRpbnVlIGsgdiA9XG4gICAgcmVzdW1lICh0YWtlX2NvbnRfbm9leGMgaykgKGZ1biB4IC0+IHgpIHYgKGNvbnRfbGFzdF9maWJlciBrKVxuXG4gIGxldCBkaXNjb250aW51ZSBrIGUgPVxuICAgIHJlc3VtZSAodGFrZV9jb250X25vZXhjIGspIChmdW4gZSAtPiByYWlzZSBlKSBlIChjb250X2xhc3RfZmliZXIgaylcblxuICBsZXQgZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UgayBlIGJ0ID1cbiAgICByZXN1bWUgKHRha2VfY29udF9ub2V4YyBrKSAoZnVuIGUgLT4gUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgZSBidClcbiAgICAgIGUgKGNvbnRfbGFzdF9maWJlciBrKVxuXG4gIHR5cGUgKCdhLCdiKSBoYW5kbGVyID1cbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgdCAtPiAoKCdjLCdiKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbiAgZXh0ZXJuYWwgcmVwZXJmb3JtIDpcbiAgICAnYSB0IC0+ICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiID0gXCIlcmVwZXJmb3JtXCJcblxuICBsZXQgbWF0Y2hfd2l0aCBjb21wIGFyZyBoYW5kbGVyID1cbiAgICBsZXQgZWZmYyBlZmYgayBsYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGhhbmRsZXIuZWZmYyBlZmYgd2l0aFxuICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICBjb250X3NldF9sYXN0X2ZpYmVyIGsgbGFzdF9maWJlcjtcbiAgICAgICAgICBmIGtcbiAgICAgIHwgTm9uZSAtPiByZXBlcmZvcm0gZWZmIGsgbGFzdF9maWJlclxuICAgIGluXG4gICAgbGV0IHMgPSBhbGxvY19zdGFjayBoYW5kbGVyLnJldGMgaGFuZGxlci5leG5jIGVmZmMgaW5cbiAgICBydW5zdGFjayBzIGNvbXAgYXJnXG5cbiAgdHlwZSAnYSBlZmZlY3RfaGFuZGxlciA9XG4gICAgeyBlZmZjOiAnYi4gJ2IgdCAtPiAoKCdiLCdhKSBjb250aW51YXRpb24gLT4gJ2EpIG9wdGlvbiB9XG5cbiAgbGV0IHRyeV93aXRoIGNvbXAgYXJnIGhhbmRsZXIgPVxuICAgIGxldCBlZmZjJyBlZmYgayBsYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGhhbmRsZXIuZWZmYyBlZmYgd2l0aFxuICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICBjb250X3NldF9sYXN0X2ZpYmVyIGsgbGFzdF9maWJlcjtcbiAgICAgICAgICBmIGtcbiAgICAgIHwgTm9uZSAtPiByZXBlcmZvcm0gZWZmIGsgbGFzdF9maWJlclxuICAgIGluXG4gICAgbGV0IHMgPSBhbGxvY19zdGFjayAoZnVuIHggLT4geCkgKGZ1biBlIC0+IHJhaXNlIGUpIGVmZmMnIGluXG4gICAgcnVuc3RhY2sgcyBjb21wIGFyZ1xuXG4gIGV4dGVybmFsIGdldF9jYWxsc3RhY2sgOlxuICAgICgnYSwnYikgY29udGludWF0aW9uIC0+IGludCAtPiBQcmludGV4Yy5yYXdfYmFja3RyYWNlID1cbiAgICBcImNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcIlxuZW5kXG5cbm1vZHVsZSBTaGFsbG93ID0gc3RydWN0XG5cbiAgdHlwZSAoJ2EsJ2IpIGNvbnRpbnVhdGlvblxuXG4gIGV4dGVybmFsIGFsbG9jX3N0YWNrIDpcbiAgICAoJ2EgLT4gJ2IpIC0+XG4gICAgKGV4biAtPiAnYikgLT5cbiAgICAoJ2MgdCAtPiAoJ2MsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBzdGFjayA9IFwiY2FtbF9hbGxvY19zdGFja1wiXG5cbiAgZXh0ZXJuYWwgY29udF9sYXN0X2ZpYmVyIDogKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgPSBcIiVmaWVsZDFcIlxuICBleHRlcm5hbCBjb250X3NldF9sYXN0X2ZpYmVyIDpcbiAgICAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiB1bml0ID0gXCIlc2V0ZmllbGQxXCJcblxuICBsZXQgZmliZXIgOiB0eXBlIGEgYi4gKGEgLT4gYikgLT4gKGEsIGIpIGNvbnRpbnVhdGlvbiA9IGZ1biBmIC0+XG4gICAgbGV0IG1vZHVsZSBNID0gc3RydWN0IHR5cGUgXyB0ICs9IEluaXRpYWxfc2V0dXBfXyA6IGEgdCBlbmQgaW5cbiAgICBsZXQgZXhjZXB0aW9uIEUgb2YgKGEsYikgY29udGludWF0aW9uIGluXG4gICAgbGV0IGYnICgpID0gZiAocGVyZm9ybSBNLkluaXRpYWxfc2V0dXBfXykgaW5cbiAgICBsZXQgZXJyb3IgXyA9IGZhaWx3aXRoIFwiaW1wb3NzaWJsZVwiIGluXG4gICAgbGV0IGVmZmMgZWZmIGsgbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBlZmYgd2l0aFxuICAgICAgfCBNLkluaXRpYWxfc2V0dXBfXyAtPlxuICAgICAgICAgIGNvbnRfc2V0X2xhc3RfZmliZXIgayBsYXN0X2ZpYmVyO1xuICAgICAgICAgIHJhaXNlX25vdHJhY2UgKEUgaylcbiAgICAgIHwgXyAtPiBlcnJvciAoKVxuICAgIGluXG4gICAgbGV0IHMgPSBhbGxvY19zdGFjayBlcnJvciBlcnJvciBlZmZjIGluXG4gICAgbWF0Y2ggcnVuc3RhY2sgcyBmJyAoKSB3aXRoXG4gICAgfCBleGNlcHRpb24gRSBrIC0+IGtcbiAgICB8IF8gLT4gZXJyb3IgKClcblxuICB0eXBlICgnYSwnYikgaGFuZGxlciA9XG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIHQgLT4gKCgnYywnYSkgY29udGludWF0aW9uIC0+ICdiKSBvcHRpb24gfVxuXG4gIGV4dGVybmFsIHVwZGF0ZV9oYW5kbGVyIDpcbiAgICAoJ2EsJ2IpIGNvbnRpbnVhdGlvbiAtPlxuICAgICgnYiAtPiAnYykgLT5cbiAgICAoZXhuIC0+ICdjKSAtPlxuICAgICgnZCB0IC0+ICgnZCwnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2MpIC0+XG4gICAgKCdhLCdjKSBzdGFjayA9IFwiY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Y1wiIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgcmVwZXJmb3JtIDpcbiAgICAnYSB0IC0+ICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdjID0gXCIlcmVwZXJmb3JtXCJcblxuICBsZXQgY29udGludWVfZ2VuIGsgcmVzdW1lX2Z1biB2IGhhbmRsZXIgPVxuICAgIGxldCBlZmZjIGVmZiBrIGxhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggaGFuZGxlci5lZmZjIGVmZiB3aXRoXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgIGNvbnRfc2V0X2xhc3RfZmliZXIgayBsYXN0X2ZpYmVyO1xuICAgICAgICAgIGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgbGFzdF9maWJlciA9IGNvbnRfbGFzdF9maWJlciBrIGluXG4gICAgbGV0IHN0YWNrID0gdXBkYXRlX2hhbmRsZXIgayBoYW5kbGVyLnJldGMgaGFuZGxlci5leG5jIGVmZmMgaW5cbiAgICByZXN1bWUgc3RhY2sgcmVzdW1lX2Z1biB2IGxhc3RfZmliZXJcblxuICBsZXQgY29udGludWVfd2l0aCBrIHYgaGFuZGxlciA9XG4gICAgY29udGludWVfZ2VuIGsgKGZ1biB4IC0+IHgpIHYgaGFuZGxlclxuXG4gIGxldCBkaXNjb250aW51ZV93aXRoIGsgdiBoYW5kbGVyID1cbiAgICBjb250aW51ZV9nZW4gayAoZnVuIGUgLT4gcmFpc2UgZSkgdiBoYW5kbGVyXG5cbiAgbGV0IGRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIGsgdiBidCBoYW5kbGVyID1cbiAgICBjb250aW51ZV9nZW4gayAoZnVuIGUgLT4gUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgZSBidCkgdiBoYW5kbGVyXG5cbiAgZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjayA6XG4gICAgKCdhLCdiKSBjb250aW51YXRpb24gLT4gaW50IC0+IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgPVxuICAgIFwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1wiXG5lbmRcbiIsIltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuKCogYmxpdF9zdHJpbmcgZG9lc24ndCBleGlzdCBpbiBbU3RkTGFiZWxzLkJ5dGVzXS4uLiAgKilcbmxldCBieXRlc19ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gIEJ5dGVzLmJsaXRfc3RyaW5nIHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuOztcblxub3BlbiBTdGRMYWJlbHNcbm9wZW4gRm9ybWF0XG5cbigqKiBUeXBlIG9mIFMtZXhwcmVzc2lvbnMgKilcbnR5cGUgdCA9XG4gIHwgQXRvbSBvZiBzdHJpbmdcbiAgfCBMaXN0IG9mIHQgbGlzdFxuXG5sZXQgc2V4cF9vZl90IHQgPSB0XG5sZXQgdF9vZl9zZXhwIHQgPSB0XG5cbmxldCByZWMgY29tcGFyZV9saXN0IGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgIGxldCByZXMgPSBjb21wYXJlIHggeSBpblxuICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgY29tcGFyZV9saXN0IHhzIHlzXG5cbmFuZCBjb21wYXJlIGEgYiA9XG4gIGlmIGEgPT0gYlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBBdG9tIGEsIEF0b20gYiAtPiBTdHJpbmcuY29tcGFyZSBhIGJcbiAgICB8IEF0b20gXywgXyAtPiAtMVxuICAgIHwgXywgQXRvbSBfIC0+IDFcbiAgICB8IExpc3QgYSwgTGlzdCBiIC0+IGNvbXBhcmVfbGlzdCBhIGIpXG47O1xuXG5sZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG5cbmV4Y2VwdGlvbiBOb3RfZm91bmRfcyBvZiB0XG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiBleG4gKiB0XG5cbm1vZHVsZSBQcmludGluZyA9IHN0cnVjdFxuICAoKiBEZWZhdWx0IGluZGVudGF0aW9uIGxldmVsIGZvciBodW1hbi1yZWFkYWJsZSBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCBkZWZhdWx0X2luZGVudCA9IHJlZiAxXG5cbiAgKCogRXNjYXBpbmcgb2Ygc3RyaW5ncyB1c2VkIGFzIGF0b21zIGluIFMtZXhwcmVzc2lvbnMgKilcblxuICBsZXQgbXVzdF9lc2NhcGUgc3RyID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZW4gPSAwXG4gICAgfHxcbiAgICBsZXQgcmVjIGxvb3Agc3RyIGl4ID1cbiAgICAgIG1hdGNoIHN0ci5baXhdIHdpdGhcbiAgICAgIHwgJ1wiJyB8ICcoJyB8ICcpJyB8ICc7JyB8ICdcXFxcJyAtPiB0cnVlXG4gICAgICB8ICd8JyAtPlxuICAgICAgICBpeCA+IDBcbiAgICAgICAgJiZcbiAgICAgICAgbGV0IG5leHQgPSBpeCAtIDEgaW5cbiAgICAgICAgQ2hhci5lcXVhbCBzdHIuW25leHRdICcjJyB8fCBsb29wIHN0ciBuZXh0XG4gICAgICB8ICcjJyAtPlxuICAgICAgICBpeCA+IDBcbiAgICAgICAgJiZcbiAgICAgICAgbGV0IG5leHQgPSBpeCAtIDEgaW5cbiAgICAgICAgQ2hhci5lcXVhbCBzdHIuW25leHRdICd8JyB8fCBsb29wIHN0ciBuZXh0XG4gICAgICB8ICdcXDAwMCcgLi4gJ1xcMDMyJyB8ICdcXDEyNycgLi4gJ1xcMjU1JyAtPiB0cnVlXG4gICAgICB8IF8gLT4gaXggPiAwICYmIGxvb3Agc3RyIChpeCAtIDEpXG4gICAgaW5cbiAgICBsb29wIHN0ciAobGVuIC0gMSlcbiAgOztcblxuICBsZXQgZXNjYXBlZCBzID1cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG5cbiAgICAgIDo9ICFuXG4gICAgICAgICArXG4gICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFxuJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxiJyAtPiAyXG4gICAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgICAgfCBfIC0+IDRcbiAgICBkb25lO1xuICAgIGlmICFuID0gU3RyaW5nLmxlbmd0aCBzXG4gICAgdGhlbiBzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcycgPSBCeXRlcy5jcmVhdGUgIW4gaW5cbiAgICAgIG4gOj0gMDtcbiAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIChtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICduJ1xuICAgICAgICAgfCAnXFx0JyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdiJ1xuICAgICAgICAgfCAnICcgLi4gJ34nIGFzIGMgLT4gQnl0ZXMudW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgbGV0IGEgPSBDaGFyLmNvZGUgYyBpblxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSAvIDEwMCkpKTtcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSAvIDEwIG1vZCAxMCkpKTtcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSBtb2QgMTApKSkpO1xuICAgICAgICBpbmNyIG5cbiAgICAgIGRvbmU7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMnKVxuICA7O1xuXG4gIGxldCBlc2Nfc3RyIHN0ciA9XG4gICAgbGV0IGVzdHIgPSBlc2NhcGVkIHN0ciBpblxuICAgIGxldCBlbGVuID0gU3RyaW5nLmxlbmd0aCBlc3RyIGluXG4gICAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAoZWxlbiArIDIpIGluXG4gICAgYnl0ZXNfYmxpdF9zdHJpbmcgfnNyYzplc3RyIH5zcmNfcG9zOjAgfmRzdDpyZXMgfmRzdF9wb3M6MSB+bGVuOmVsZW47XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXMgMCAnXCInO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzIChlbGVuICsgMSkgJ1wiJztcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICA7O1xuXG4gIGxldCBpbmRleF9vZl9uZXdsaW5lIHN0ciBzdGFydCA9IFN0cmluZy5pbmRleF9mcm9tX29wdCBzdHIgc3RhcnQgJ1xcbidcblxuICBsZXQgZ2V0X3N1YnN0cmluZyBzdHIgaW5kZXggZW5kX3Bvc19vcHQgPVxuICAgIGxldCBlbmRfcG9zID1cbiAgICAgIG1hdGNoIGVuZF9wb3Nfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgICAgfCBTb21lIGVuZF9wb3MgLT4gZW5kX3Bvc1xuICAgIGluXG4gICAgU3RyaW5nLnN1YiBzdHIgfnBvczppbmRleCB+bGVuOihlbmRfcG9zIC0gaW5kZXgpXG4gIDs7XG5cbiAgbGV0IGlzX29uZV9saW5lIHN0ciA9XG4gICAgbWF0Y2ggaW5kZXhfb2ZfbmV3bGluZSBzdHIgMCB3aXRoXG4gICAgfCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgaW5kZXggLT4gaW5kZXggKyAxID0gU3RyaW5nLmxlbmd0aCBzdHJcbiAgOztcblxuICBsZXQgcHBfaHVtX21heWJlX2VzY19zdHIgcHBmIHN0ciA9XG4gICAgaWYgbm90IChtdXN0X2VzY2FwZSBzdHIpXG4gICAgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIHN0clxuICAgIGVsc2UgaWYgaXNfb25lX2xpbmUgc3RyXG4gICAgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIChlc2Nfc3RyIHN0cilcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBpbmRleCA9XG4gICAgICAgIGxldCBuZXh0X25ld2xpbmUgPSBpbmRleF9vZl9uZXdsaW5lIHN0ciBpbmRleCBpblxuICAgICAgICBsZXQgbmV4dF9saW5lID0gZ2V0X3N1YnN0cmluZyBzdHIgaW5kZXggbmV4dF9uZXdsaW5lIGluXG4gICAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgKGVzY2FwZWQgbmV4dF9saW5lKTtcbiAgICAgICAgbWF0Y2ggbmV4dF9uZXdsaW5lIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBuZXdsaW5lX2luZGV4IC0+XG4gICAgICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIlxcXFxcIjtcbiAgICAgICAgICBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKTtcbiAgICAgICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiXFxcXG5cIjtcbiAgICAgICAgICBsb29wIChuZXdsaW5lX2luZGV4ICsgMSlcbiAgICAgIGluXG4gICAgICBwcF9vcGVuX2JveCBwcGYgMDtcbiAgICAgICgqIHRoZSBsZWFkaW5nIHNwYWNlIGlzIHRvIGxpbmUgdXAgdGhlIGxpbmVzICopXG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiIFxcXCJcIjtcbiAgICAgIGxvb3AgMDtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCJcXFwiXCI7XG4gICAgICBwcF9jbG9zZV9ib3ggcHBmICgpKVxuICA7O1xuXG4gIGxldCBtYWNoX21heWJlX2VzY19zdHIgc3RyID0gaWYgbXVzdF9lc2NhcGUgc3RyIHRoZW4gZXNjX3N0ciBzdHIgZWxzZSBzdHJcblxuICAoKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBmb3JtYXR0ZXJzICopXG5cbiAgbGV0IHJlYyBwcF9odW1faW5kZW50IGluZGVudCBwcGYgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT4gcHBfaHVtX21heWJlX2VzY19zdHIgcHBmIHN0clxuICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgcHBfb3Blbl9ib3ggcHBmIGluZGVudDtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoXCI7XG4gICAgICBwcF9odW1faW5kZW50IGluZGVudCBwcGYgaDtcbiAgICAgIHBwX2h1bV9yZXN0IGluZGVudCBwcGYgdFxuICAgIHwgTGlzdCBbXSAtPiBwcF9wcmludF9zdHJpbmcgcHBmIFwiKClcIlxuXG4gIGFuZCBwcF9odW1fcmVzdCBpbmRlbnQgcHBmID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgcHBfcHJpbnRfc3BhY2UgcHBmICgpO1xuICAgICAgcHBfaHVtX2luZGVudCBpbmRlbnQgcHBmIGg7XG4gICAgICBwcF9odW1fcmVzdCBpbmRlbnQgcHBmIHRcbiAgICB8IFtdIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKVwiO1xuICAgICAgcHBfY2xvc2VfYm94IHBwZiAoKVxuICA7O1xuXG4gIGxldCByZWMgcHBfbWFjaF9pbnRlcm5hbCBtYXlfbmVlZF9zcGFjZSBwcGYgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT5cbiAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgbGV0IG5ld19tYXlfbmVlZF9zcGFjZSA9IHN0cicgPT0gc3RyIGluXG4gICAgICBpZiBtYXlfbmVlZF9zcGFjZSAmJiBuZXdfbWF5X25lZWRfc3BhY2UgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIFwiIFwiO1xuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBzdHInO1xuICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKFwiO1xuICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gcHBfbWFjaF9pbnRlcm5hbCBmYWxzZSBwcGYgaCBpblxuICAgICAgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiB0O1xuICAgICAgZmFsc2VcbiAgICB8IExpc3QgW10gLT5cbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoKVwiO1xuICAgICAgZmFsc2VcblxuICBhbmQgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IHBwX21hY2hfaW50ZXJuYWwgbWF5X25lZWRfc3BhY2UgcHBmIGggaW5cbiAgICAgIHBwX21hY2hfcmVzdCBtYXlfbmVlZF9zcGFjZSBwcGYgdFxuICAgIHwgW10gLT4gcHBfcHJpbnRfc3RyaW5nIHBwZiBcIilcIlxuICA7O1xuXG4gIGxldCBwcF9odW0gcHBmIHNleHAgPSBwcF9odW1faW5kZW50ICFkZWZhdWx0X2luZGVudCBwcGYgc2V4cFxuICBsZXQgcHBfbWFjaCBwcGYgc2V4cCA9IGlnbm9yZSAocHBfbWFjaF9pbnRlcm5hbCBmYWxzZSBwcGYgc2V4cClcbiAgbGV0IHBwID0gcHBfbWFjaFxuXG4gICgqIFNleHAgc2l6ZSAqKVxuXG4gIGxldCByZWMgc2l6ZV9sb29wICgodiwgYykgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPiB2ICsgMSwgYyArIFN0cmluZy5sZW5ndGggc3RyXG4gICAgfCBMaXN0IGxzdCAtPiBMaXN0LmZvbGRfbGVmdCBsc3QgfmluaXQ6YWNjIH5mOnNpemVfbG9vcFxuICA7O1xuXG4gIGxldCBzaXplIHNleHAgPSBzaXplX2xvb3AgKDAsIDApIHNleHBcblxuICAoKiBCdWZmZXIgY29udmVyc2lvbnMgKilcblxuICBsZXQgdG9fYnVmZmVyX2h1bSB+YnVmID8oaW5kZW50ID0gIWRlZmF1bHRfaW5kZW50KSBzZXhwID1cbiAgICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWFAP1wiIChwcF9odW1faW5kZW50IGluZGVudCkgc2V4cFxuICA7O1xuXG4gIGxldCB0b19idWZmZXJfbWFjaCB+YnVmIHNleHAgPVxuICAgIGxldCByZWMgbG9vcCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IEF0b20gc3RyIC0+XG4gICAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnICc7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzdHInO1xuICAgICAgICBuZXdfbWF5X25lZWRfc3BhY2VcbiAgICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICcoJztcbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBmYWxzZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0O1xuICAgICAgICBmYWxzZVxuICAgICAgfCBMaXN0IFtdIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIigpXCI7XG4gICAgICAgIGZhbHNlXG4gICAgYW5kIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIG1heV9uZWVkX3NwYWNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHRcbiAgICAgIHwgW10gLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnKSdcbiAgICBpblxuICAgIGlnbm9yZSAobG9vcCBmYWxzZSBzZXhwKVxuICA7O1xuXG4gIGxldCB0b19idWZmZXIgPSB0b19idWZmZXJfbWFjaFxuXG4gIGxldCB0b19idWZmZXJfZ2VuIH5idWYgfmFkZF9jaGFyIH5hZGRfc3RyaW5nIHNleHAgPVxuICAgIGxldCByZWMgbG9vcCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IEF0b20gc3RyIC0+XG4gICAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gYWRkX2NoYXIgYnVmICcgJztcbiAgICAgICAgYWRkX3N0cmluZyBidWYgc3RyJztcbiAgICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmICcoJztcbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBmYWxzZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0O1xuICAgICAgICBmYWxzZVxuICAgICAgfCBMaXN0IFtdIC0+XG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIFwiKClcIjtcbiAgICAgICAgZmFsc2VcbiAgICBhbmQgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgbWF5X25lZWRfc3BhY2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdFxuICAgICAgfCBbXSAtPiBhZGRfY2hhciBidWYgJyknXG4gICAgaW5cbiAgICBpZ25vcmUgKGxvb3AgZmFsc2Ugc2V4cClcbiAgOztcblxuICAoKiBUaGUgbWF4aW11bSBzaXplIG9mIGEgdGhpbmcgb24gdGhlIG1pbm9yIGhlYXAgaXMgMjU2IHdvcmRzLlxuICAgICBQcmV2aW91c2x5LCB0aGlzIHNpemUgb2YgdGhlIHJldHVybmVkIGJ1ZmZlciBoZXJlIHdhcyA0MDk2IGJ5dGVzLCB3aGljaFxuICAgICBjYXVzZWQgdGhlIEJ1ZmZlciB0byBiZSBhbGxvY2F0ZWQgb24gdGhlICptYWpvciogaGVhcCBldmVyeSB0aW1lLlxuXG4gICAgIEFjY29yZGluZyB0byBhIHNpbXBsZSBiZW5jaG1hcmsgYnkgUm9uLCB3ZSBjYW4gaW1wcm92ZSBwZXJmb3JtYW5jZSBmb3JcbiAgICAgc21hbGwgcy1leHByZXNzaW9ucyBieSBhIGZhY3RvciBvZiB+NCBpZiB3ZSBvbmx5IGFsbG9jYXRlIDEwMjQgYnl0ZXNcbiAgICAgKDEyOCB3b3JkcyArIHNvbWUgc21hbGwgb3ZlcmhlYWQpIHdvcnRoIG9mIGJ1ZmZlciBpbml0aWFsbHkuICBBbmQgb25lXG4gICAgIGNhbiBhcmd1ZSB0aGF0IGlmIGl0J3MgZnJlZSB0byBhbGxvY2F0ZSBzdHJpbmdzIHNtYWxsZXIgdGhhbiAyNTYgd29yZHMsXG4gICAgIGxhcmdlIHMtZXhwcmVzc2lvbnMgcmVxdWlyaW5nIGxhcmdlciBleHBlbnNpdmUgYnVmZmVycyB3b24ndCBub3RpY2VcbiAgICAgdGhlIGV4dHJhIHR3byBkb3VibGluZ3MgZnJvbSAxMDI0IGJ5dGVzIHRvIDIwNDggYW5kIDQwOTYuIEFuZCBlc3BlY2lhbGx5XG4gICAgIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBhcHBsaWNhdGlvbnMgdG8gYWx3YXlzIHBhc3MgaW4gYSBsYXJnZXIgYnVmZmVyIHRvXG4gICAgIHVzZS4gKilcbiAgbGV0IGJ1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgMTAyNFxuXG4gICgqIFN0cmluZyBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCB0b19zdHJpbmdfaHVtID9pbmRlbnQgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHJcbiAgICAgIHdoZW4gbWF0Y2ggaW5kZXhfb2ZfbmV3bGluZSBzdHIgMCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBfIC0+IGZhbHNlIC0+IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHJcbiAgICB8IHNleHAgLT5cbiAgICAgIGxldCBidWYgPSBidWZmZXIgKCkgaW5cbiAgICAgIHRvX2J1ZmZlcl9odW0gP2luZGVudCBzZXhwIH5idWY7XG4gICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19tYWNoID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHJcbiAgICB8IHNleHAgLT5cbiAgICAgIGxldCBidWYgPSBidWZmZXIgKCkgaW5cbiAgICAgIHRvX2J1ZmZlcl9tYWNoIHNleHAgfmJ1ZjtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX21hY2hcbmVuZFxuXG5pbmNsdWRlIFByaW50aW5nXG5cbmxldCBvZl9mbG9hdF9zdHlsZSA6IFsgYFVuZGVyc2NvcmVzIHwgYE5vX3VuZGVyc2NvcmVzIF0gcmVmID0gcmVmIGBOb191bmRlcnNjb3Jlc1xubGV0IG9mX2ludF9zdHlsZSA6IFsgYFVuZGVyc2NvcmVzIHwgYE5vX3VuZGVyc2NvcmVzIF0gcmVmID0gcmVmIGBOb191bmRlcnNjb3Jlc1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFByaW50aW5nXG5lbmRcblxubGV0IG1lc3NhZ2UgbmFtZSBmaWVsZHMgPVxuICBsZXQgcmVjIGNvbnZfZmllbGRzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCAoZm5hbWUsIGZzZXhwKSA6OiByZXN0IC0+XG4gICAgICAobWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgIHwgXCJcIiAtPiBmc2V4cCA6OiBjb252X2ZpZWxkcyByZXN0XG4gICAgICAgfCBfIC0+IExpc3QgWyBBdG9tIGZuYW1lOyBmc2V4cCBdIDo6IGNvbnZfZmllbGRzIHJlc3QpXG4gIGluXG4gIExpc3QgKEF0b20gbmFtZSA6OiBjb252X2ZpZWxkcyBmaWVsZHMpXG47O1xuIiwiKCoqIFJlcHJlc2VudGF0aW9uIG9mIFMtZXhwcmVzc2lvbiBncmFtbWFycyAqKVxuXG4oKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIHJlcHJlc2VudGF0aW9uIGZvciBzLWV4cHJlc3Npb24gZ3JhbW1hcnMuIFVzaW5nIHBweF9zZXhwX2NvbnZcbiAgICBhbmQgW1tAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1dIHByb2R1Y2VzIGEgZ3JhbW1hciB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgZGVyaXZlZFxuICAgIFtvZl9zZXhwXSBmb3IgYSBnaXZlbiB0eXBlLlxuXG4gICAgQXMgd2l0aCBvdGhlciBkZXJpdmVkIGRlZmluaXRpb25zLCBwb2x5bW9ycGhpYyB0eXBlcyBkZXJpdmUgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFcbiAgICBncmFtbWFyIGZvciBlYWNoIHR5cGUgYXJndW1lbnQgYW5kIHByb2R1Y2VzIGEgZ3JhbW1hciBmb3IgdGhlIG1vbm9tb3JwaGl6ZWQgdHlwZS5cblxuICAgIE1vbm9tb3JwaGljIHR5cGVzIGRlcml2ZSBhIGdyYW1tYXIgZGlyZWN0bHkuIFRvIGF2b2lkIHRvcC1sZXZlbCBzaWRlIGVmZmVjdHMsXG4gICAgW1tAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1dIHdyYXBzIGdyYW1tYXJzIGluIHRoZSBbTGF6eV0gY29uc3RydWN0b3IgYXMgbmVlZGVkLlxuXG4gICAgVGhpcyB0eXBlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lIGFzIG91ciBuZWVkcyBmb3IgZXhwcmVzc2l2ZSBncmFtbWFycyBjaGFuZ2UuIFdlIHdpbGxcbiAgICBhdHRlbXB0IHRvIG1ha2UgY2hhbmdlcyBiYWNrd2FyZC1jb21wYXRpYmxlLCBvciBhdCBsZWFzdCBwcm92aWRlIGEgcmVhc29uYWJsZSB1cGdyYWRlXG4gICAgcGF0aC4gKilcblxuW0BAQHdhcm5pbmcgXCItMzBcIl0gKCogYWxsb3cgZHVwbGljYXRlIGZpZWxkIG5hbWVzICopXG5cbigqKiBHcmFtbWFyIG9mIGEgc2V4cC4gKilcbnR5cGUgZ3JhbW1hciA9XG4gIHwgQW55IG9mIHN0cmluZyAoKiogYWNjZXB0cyBhbnkgc2V4cDsgc3RyaW5nIGlzIGEgdHlwZSBuYW1lIGZvciBodW1hbiByZWFkYWJpbGl0eSAqKVxuICB8IEJvb2wgKCoqIGFjY2VwdHMgdGhlIGF0b21zIFwidHJ1ZVwiIG9yIFwiZmFsc2VcIiwgbW9kdWxvIGNhcGl0YWxpemF0aW9uICopXG4gIHwgQ2hhciAoKiogYWNjZXB0cyBhbnkgc2luZ2xlLWNoYXJhY3RlciBhdG9tICopXG4gIHwgSW50ZWdlciAoKiogYWNjZXB0cyBhbnkgYXRvbSBtYXRjaGluZyBvY2FtbCBpbnRlZ2VyIHN5bnRheCwgcmVnYXJkbGVzcyBvZiBiaXQgd2lkdGggKilcbiAgfCBGbG9hdCAoKiogYWNjZXB0cyBhbnkgYXRvbSBtYXRjaGluZyBvY2FtbCBmbG9hdCBzeW50YXggKilcbiAgfCBTdHJpbmcgKCoqIGFjY2VwdHMgYW55IGF0b20gKilcbiAgfCBPcHRpb24gb2YgZ3JhbW1hciAoKiogYWNjZXB0cyBhbiBvcHRpb24sIGJvdGggW05vbmVdIHZzIFtTb21lIF9dIGFuZCBbKCldIHZzIFsoXyldLiAqKVxuICB8IExpc3Qgb2YgbGlzdF9ncmFtbWFyICgqKiBhY2NlcHRzIGEgbGlzdCAqKVxuICB8IFZhcmlhbnQgb2YgdmFyaWFudCAoKiogYWNjZXB0cyBjbGF1c2VzIGtleWVkIGJ5IGEgbGVhZGluZyBvciBzb2xlIGF0b20gKilcbiAgfCBVbmlvbiBvZiBncmFtbWFyIGxpc3QgKCoqIGFjY2VwdHMgYSBzZXhwIGlmIGFueSBvZiB0aGUgbGlzdGVkIGdyYW1tYXJzIGFjY2VwdHMgaXQgKilcbiAgfCBUYWdnZWQgb2YgZ3JhbW1hciB3aXRoX3RhZ1xuICAoKiogYW5ub3RhdGVzIGEgZ3JhbW1hciB3aXRoIGEgY2xpZW50LXNwZWNpZmljIGtleS92YWx1ZSBwYWlyICopXG4gIHwgVHl2YXIgb2Ygc3RyaW5nXG4gICgqKiBOYW1lIG9mIGEgdHlwZSB2YXJpYWJsZSwgZS5nLiBbVHl2YXIgXCJhXCJdIGZvciBbJ2FdLiBPbmx5IG1lYW5pbmdmdWwgd2hlbiB0aGUgYm9keSBvZlxuICAgICAgdGhlIGlubmVybW9zdCBlbmNsb3NpbmcgW2RlZm5dIGRlZmluZXMgYSBjb3JyZXNwb25kaW5nIHR5cGUgdmFyaWFibGUuICopXG4gIHwgVHljb24gb2Ygc3RyaW5nICogZ3JhbW1hciBsaXN0ICogZGVmbiBsaXN0XG4gICgqKiBUeXBlIGNvbnN0cnVjdG9yIGFwcGxpZWQgdG8gYXJndW1lbnRzLCBhbmQgaXRzIGRlZmluaXRpb24uXG5cbiAgICAgIEZvciBleGFtcGxlLCB3cml0aW5nIFtUeWNvbiAoXCJ0cmVlXCIsIFsgSW50ZWdlciBdLCBkZWZucyldIHJlcHJlc2VudHMgW2ludCB0cmVlXSwgZm9yXG4gICAgICB3aGF0ZXZlciBbdHJlZV0gaXMgZGVmaW5lZCBhcyBpbiBbZGVmbnNdLiBUaGUgZm9sbG93aW5nIGRlZmluZXMgW3RyZWVdIGFzIGEgYmluYXJ5XG4gICAgICB0cmVlIHdpdGggdGhlIHBhcmFtZXRlciB0eXBlIHN0b3JlZCBhdCB0aGUgbGVhdmVzLlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgZGVmbnMgPVxuICAgICAgICAgIFsgeyB0eWNvbiA9IFwidHJlZVwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgICAgVmFyaWFudFxuICAgICAgICAgICAgICAgICAgeyBuYW1lX2tpbmQgPSBDYXBpdGFsaXplZFxuICAgICAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgICAgICBbIHsgbmFtZSA9IFwiTm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChSZWN1cnNpdmUgKFwibm9kZVwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgOyB7IG5hbWUgPSBcIkxlYWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoUmVjdXJzaXZlIChcImxlYWZcIiwgW1R5dmFyIFwiYVwiXSksIEVtcHR5KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA7IHsgdHljb24gPSBcIm5vZGVcIlxuICAgICAgICAgICAgOyB0eXZhcnMgPSBbXCJhXCJdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPSBMaXN0IChNYW55IChSZWN1cnNpdmUgXCJ0cmVlXCIsIFtUeXZhciBcImFcIl0pKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDsgeyB0eWNvbiA9IFwibGVhZlwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IFtUeXZhciBcImFcIl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIDs7XG4gICAgICBdfVxuXG4gICAgICBUbyBpbGx1c3RyYXRlIHRoZSBtZWFuaW5nIG9mIFtUeWNvbl0gd2l0aCByZXNwZWN0IHRvIFtkZWZuc10sIGFuZCB0byBkZW1vbnN0cmF0ZSBvbmVcbiAgICAgIHdheSB0byBhY2Nlc3MgdGhlbSwgaXQgaXMgZXF1aXZhbGVudCB0byBleHBhbmQgdGhlIGRlZmluaXRpb24gb2YgXCJ0cmVlXCIgb25lIGxldmVsXG4gICAgICBhbmQgbW92ZSB0aGUgW2RlZm5zXSB0byBlbmNsb3NlZCByZWN1cnNpdmUgcmVmZXJlbmNlczpcblxuICAgICAge1tcbiAgICAgICAgVHljb24gKFwidHJlZVwiLCBbIEludGVnZXIgXSwgZGVmbnMpXG4gICAgICAgIC0tPlxuICAgICAgICBWYXJpYW50XG4gICAgICAgICAgeyBuYW1lX2tpbmQgPSBDYXBpdGFsaXplZFxuICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgIFsgeyBuYW1lID0gXCJOb2RlXCJcbiAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChUeWNvbiAoXCJub2RlXCIsIFtUeXZhciBcImFcIl0sIGRlZm5zKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA7IHsgbmFtZSA9IFwiTGVhZlwiXG4gICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibGVhZlwiLCBbVHl2YXIgXCJhXCJdLCBkZWZucyksIEVtcHR5KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgIF19XG5cbiAgICAgIFRoaXMgdHJhbnNmb3JtYXRpb24gZXhwb3NlcyB0aGUgc3RydWN0dXJlIG9mIGEgZ3JhbW1hciB3aXRoIHJlY3Vyc2l2ZSByZWZlcmVuY2VzLFxuICAgICAgd2hpbGUgcHJlc2VydmluZyB0aGUgbWVhbmluZyBvZiByZWN1cnNpdmVseS1kZWZpbmVkIGVsZW1lbnRzLiAqKVxuICB8IFJlY3Vyc2l2ZSBvZiBzdHJpbmcgKiBncmFtbWFyIGxpc3RcbiAgKCoqIFR5cGUgY29uc3RydWN0b3IgYXBwbGllZCB0byBhcmd1bWVudHMuIFVzZWQgdG8gZGVub3RlIHJlY3Vyc2l2ZSB0eXBlIHJlZmVyZW5jZXMuXG4gICAgICBPbmx5IG1lYW5pbmdmdWwgd2hlbiB1c2VkIGluc2lkZSB0aGUgW2RlZm5dcyBvZiBhIFtUeWNvbl0gZ3JhbW1hciwgdG8gcmVmZXIgdG8gYVxuICAgICAgdHlwZSBjb25zdHJ1Y3RvciBpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgW2RlZm5dIGxpc3QuICopXG4gIHwgTGF6eSBvZiBncmFtbWFyIGxhenlfdFxuICAoKiogTGF6aWx5IGNvbXB1dGVkIGdyYW1tYXIuIFVzZSBbTGF6eV0gdG8gYXZvaWQgdG9wLWxldmVsIHNpZGUgZWZmZWN0cy4gVG8gZGVmaW5lXG4gICAgICByZWN1cnNpdmUgZ3JhbW1hcnMsIHVzZSBbUmVjdXJzaXZlXSBpbnN0ZWFkLiAqKVxuXG4oKiogR3JhbW1hciBvZiBhIGxpc3Qgb2Ygc2V4cHMuICopXG5hbmQgbGlzdF9ncmFtbWFyID1cbiAgfCBFbXB0eSAoKiogYWNjZXB0cyBhbiBlbXB0eSBsaXN0IG9mIHNleHBzICopXG4gIHwgQ29ucyBvZiBncmFtbWFyICogbGlzdF9ncmFtbWFyXG4gICgqKiBhY2NlcHRzIGEgbm9uLWVtcHR5IGxpc3Qgd2l0aCBoZWFkIGFuZCB0YWlsIG1hdGNoaW5nIHRoZSBnaXZlbiBncmFtbWFycyAqKVxuICB8IE1hbnkgb2YgZ3JhbW1hciAoKiogYWNjZXB0cyB6ZXJvIG9yIG1vcmUgc2V4cHMsIGVhY2ggbWF0Y2hpbmcgdGhlIGdpdmVuIGdyYW1tYXIgKilcbiAgfCBGaWVsZHMgb2YgcmVjb3JkICgqKiBhY2NlcHRzIHNleHBzIHJlcHJlc2VudGluZyBmaWVsZHMgb2YgYSByZWNvcmQgKilcblxuKCoqIENhc2Ugc2Vuc2l0aXZpdHkgb3B0aW9ucyBmb3IgbmFtZXMgb2YgdmFyaWFudCBjb25zdHJ1Y3RvcnMuICopXG5hbmQgY2FzZV9zZW5zaXRpdml0eSA9XG4gIHwgQ2FzZV9pbnNlbnNpdGl2ZSAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIGluc2Vuc2l0aXZlLiBVc2VkIGZvciBjdXN0b20gcGFyc2Vycy4gKilcbiAgfCBDYXNlX3NlbnNpdGl2ZSAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIHNlbnNpdGl2ZS4gVXNlZCBmb3IgcG9seW1vcnBoaWMgdmFyaWFudHMuICopXG4gIHwgQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAoKiogQ29tcGFyaXNvbiBpcyBjYXNlIGluc2Vuc2l0aXZlIGZvciB0aGUgZmlyc3QgY2hhcmFjdGVyIGFuZCBjYXNlIHNlbnNpdGl2ZSBhZnRlcndhcmQuXG4gICAgICBVc2VkIGZvciByZWd1bGFyIHZhcmlhbnRzLiAqKVxuXG4oKiogR3JhbW1hciBvZiB2YXJpYW50cy4gQWNjZXB0cyBhbnkgc2V4cCBtYXRjaGluZyBvbmUgb2YgdGhlIGNsYXVzZXMuICopXG5hbmQgdmFyaWFudCA9XG4gIHsgY2FzZV9zZW5zaXRpdml0eSA6IGNhc2Vfc2Vuc2l0aXZpdHlcbiAgOyBjbGF1c2VzIDogY2xhdXNlIHdpdGhfdGFnX2xpc3QgbGlzdFxuICB9XG5cbigqKiBHcmFtbWFyIG9mIGEgc2luZ2xlIHZhcmlhbnQgY2xhdXNlLiBBY2NlcHRzIHNleHBzIGJhc2VkIG9uIHRoZSBbY2xhdXNlX2tpbmRdLiAqKVxuYW5kIGNsYXVzZSA9XG4gIHsgbmFtZSA6IHN0cmluZ1xuICA7IGNsYXVzZV9raW5kIDogY2xhdXNlX2tpbmRcbiAgfVxuXG4oKiogR3JhbW1hciBvZiBhIHNpbmdsZSB2YXJpYW50IGNsYXVzZSdzIGNvbnRlbnRzLiBbQXRvbV9jbGF1c2VdIGFjY2VwdHMgYW4gYXRvbSBtYXRjaGluZ1xuICAgIHRoZSBjbGF1c2UncyBuYW1lLiBbTGlzdF9jbGF1c2VdIGFjY2VwdHMgYSBsaXN0IHdob3NlIGhlYWQgaXMgYW4gYXRvbSBtYXRjaGluZyB0aGVcbiAgICBjbGF1c2UncyBuYW1lIGFuZCB3aG9zZSB0YWlsIG1hdGNoZXMgW2FyZ3NdLiBUaGUgY2xhdXNlJ3MgbmFtZSBpcyBtYXRjaGVkIG1vZHVsbyB0aGVcbiAgICB2YXJpYW50J3MgW25hbWVfa2luZF0uICopXG5hbmQgY2xhdXNlX2tpbmQgPVxuICB8IEF0b21fY2xhdXNlXG4gIHwgTGlzdF9jbGF1c2Ugb2YgeyBhcmdzIDogbGlzdF9ncmFtbWFyIH1cblxuKCoqIEdyYW1tYXIgb2YgYSByZWNvcmQuIEFjY2VwdHMgYW55IGxpc3Qgb2Ygc2V4cHMgc3BlY2lmeWluZyBlYWNoIG9mIHRoZSBmaWVsZHMsXG4gICAgcmVnYXJkbGVzcyBvZiBvcmRlci4gSWYgW2FsbG93X2V4dHJhX2ZpZWxkc10gaXMgc3BlY2lmaWVkLCBpZ25vcmVzIHNleHBzIHdpdGggbmFtZXNcbiAgICBub3QgZm91bmQgaW4gW2ZpZWxkc10uICopXG5hbmQgcmVjb3JkID1cbiAgeyBhbGxvd19leHRyYV9maWVsZHMgOiBib29sXG4gIDsgZmllbGRzIDogZmllbGQgd2l0aF90YWdfbGlzdCBsaXN0XG4gIH1cblxuKCoqIEdyYW1tYXIgb2YgYSByZWNvcmQgZmllbGQuIEEgZmllbGQgbXVzdCBzaG93IHVwIGV4YWN0bHkgb25jZSBpbiBhIHJlY29yZCBpZlxuICAgIFtyZXF1aXJlZF0sIG9yIGF0IG1vc3Qgb25jZSBvdGhlcndpc2UuIEFjY2VwdHMgYSBsaXN0IGhlYWRlZCBieSBbbmFtZV0gYXMgYW4gYXRvbSxcbiAgICBmb2xsb3dlZCBieSBzZXhwcyBtYXRjaGluZyBbYXJnc10uICopXG5hbmQgZmllbGQgPVxuICB7IG5hbWUgOiBzdHJpbmdcbiAgOyByZXF1aXJlZCA6IGJvb2xcbiAgOyBhcmdzIDogbGlzdF9ncmFtbWFyXG4gIH1cblxuKCoqIEdyYW1tYXIgdGFnZ2VkIHdpdGggY2xpZW50LXNwZWNpZmljIGtleS92YWx1ZSBwYWlyLiAqKVxuYW5kICdhIHdpdGhfdGFnID1cbiAgeyBrZXkgOiBzdHJpbmdcbiAgOyB2YWx1ZSA6IFNleHAudFxuICA7IGdyYW1tYXIgOiAnYVxuICB9XG5cbmFuZCAnYSB3aXRoX3RhZ19saXN0ID1cbiAgfCBUYWcgb2YgJ2Egd2l0aF90YWdfbGlzdCB3aXRoX3RhZ1xuICB8IE5vX3RhZyBvZiAnYVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY3Vyc2l2ZSB0eXBlIGRlZmluaXRpb24uIE5hbWVzIHRoZSBbdHljb25dIGJlaW5nIGRlZmluZWQsIGFuZCB0aGVcbiAgICBbdHl2YXJzXSBpdCB0YWtlcyBhcyBwYXJhbWV0ZXJzLiBTcGVjaWZpZXMgdGhlIFtncmFtbWFyXSBvZiB0aGUgW3R5Y29uXS4gVGhlIGdyYW1tYXJcbiAgICBtYXkgcmVmZXIgdG8gYW55IG9mIHRoZSBbdHl2YXJzXSwgYW5kIHRvIGFueSBvZiB0aGUgW3R5Y29uXXMgZnJvbSB0aGUgc2FtZSBzZXQgb2ZcbiAgICBbUmVjdXJzaXZlXSBkZWZpbml0aW9ucy4gKilcbmFuZCBkZWZuID1cbiAgeyB0eWNvbiA6IHN0cmluZ1xuICA7IHR5dmFycyA6IHN0cmluZyBsaXN0XG4gIDsgZ3JhbW1hciA6IGdyYW1tYXJcbiAgfVxuXG4oKiogVG9wLWxldmVsIGdyYW1tYXIgdHlwZS4gSGFzIGEgcGhhbnRvbSB0eXBlIHBhcmFtZXRlciB0byBhc3NvY2lhdGUgZWFjaCBncmFtbWFyIHdpdGhcbiAgICB0aGUgdHlwZSBpdHMgc2V4cHMgcmVwcmVzZW50LiBUaGlzIG1ha2VzIGl0IGhhcmRlciB0byBhcHBseSBncmFtbWFycyB0byB0aGUgd3JvbmdcbiAgICB0eXBlLCB3aGlsZSBncmFtbWFycyBjYW4gc3RpbGwgYmUgZWFzaWx5IGNvZXJjZWQgdG8gYSBuZXcgdHlwZSBpZiBuZWVkZWQuICopXG50eXBlIF8gdCA9IHsgdW50eXBlZCA6IGdyYW1tYXIgfSBbQEB1bmJveGVkXVxuXG5sZXQgY29lcmNlICh0eXBlIGEgYikgKHsgdW50eXBlZCA9IF8gfSBhcyB0IDogYSB0KSA6IGIgdCA9IHRcblxubGV0IHRhZyAodHlwZSBhKSAoeyB1bnR5cGVkID0gZ3JhbW1hciB9IDogYSB0KSB+a2V5IH52YWx1ZSA6IGEgdCA9XG4gIHsgdW50eXBlZCA9IFRhZ2dlZCB7IGtleTsgdmFsdWU7IGdyYW1tYXIgfSB9XG47O1xuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaXMgdXNlZCBmb3IgYWxsIHRhZ3MgZ2VuZXJhdGVkIGZyb20gZG9jIGNvbW1lbnRzLiAqKVxubGV0IGRvY19jb21tZW50X3RhZyA9IFwic2V4cF9ncmFtbWFyLmRvY19jb21tZW50XCJcblxuKCoqIFRoaXMgcmVzZXJ2ZWQga2V5IGNhbiBiZSB1c2VkIHRvIGFzc29jaWF0ZSBhIHR5cGUgbmFtZSB3aXRoIGEgZ3JhbW1hci4gKilcbmxldCB0eXBlX25hbWVfdGFnID0gXCJzZXhwX2dyYW1tYXIudHlwZV9uYW1lXCJcblxuKCoqIFRoaXMgcmVzZXJ2ZWQga2V5IGluZGljYXRlcyB0aGF0IGEgc2V4cCByZXByZXNlbnRzIGEga2V5L3ZhbHVlIGFzc29jaWF0aW9uLiBUaGUgdGFnJ3NcbiAgICB2YWx1ZSBpcyBpZ25vcmVkLiAqKVxubGV0IGFzc29jX3RhZyA9IFwic2V4cF9ncmFtbWFyLmFzc29jXCJcblxuKCoqIFRoaXMgcmVzZXJ2ZWQga2V5IGluZGljYXRlcyB0aGF0IGEgc2V4cCBpcyBhIGtleSBpbiBhIGtleS92YWx1ZSBhc3NvY2lhdGlvbi4gVGhlIHRhZydzXG4gICAgdmFsdWUgaXMgaWdub3JlZC4gKilcbmxldCBhc3NvY19rZXlfdGFnID0gXCJzZXhwX2dyYW1tYXIuYXNzb2Mua2V5XCJcblxuKCoqIFRoaXMgcmVzZXJ2ZWQga2V5IGluZGljYXRlcyB0aGF0IGEgc2V4cCBpcyBhIHZhbHVlIGluIGEga2V5L3ZhbHVlIGFzc29jaWF0aW9uLiBUaGVcbiAgICB0YWcncyB2YWx1ZSBpcyBpZ25vcmVkLiAqKVxubGV0IGFzc29jX3ZhbHVlX3RhZyA9IFwic2V4cF9ncmFtbWFyLmFzc29jLnZhbHVlXCJcblxuKCoqIFdoZW4gdGhlIGtleSBpcyBzZXQgdG8gW0F0b20gXCJmYWxzZVwiXSBmb3IgYSB2YXJpYW50IGNsYXVzZSwgdGhhdCBjbGF1c2Ugc2hvdWxkIG5vdCBiZVxuICAgIHN1Z2dlc3RlZCBpbiBhdXRvLWNvbXBsZXRpb24gYmFzZWQgb24gdGhlIHNleHAgZ3JhbW1hci4gKilcbmxldCBjb21wbGV0aW9uX3N1Z2dlc3RlZCA9IFwic2V4cF9ncmFtbWFyLmNvbXBsZXRpb24tc3VnZ2VzdGVkXCJcbiIsIm9wZW4gU3RkTGFiZWxzXG5cbmxldCBzZXhwX2dyYW1tYXJfd2l0aF90YWdzIGdyYW1tYXIgfnRhZ3MgPVxuICBMaXN0LmZvbGRfcmlnaHQgdGFncyB+aW5pdDpncmFtbWFyIH5mOihmdW4gKGtleSwgdmFsdWUpIGdyYW1tYXIgLT5cbiAgICBTZXhwX2dyYW1tYXIuVGFnZ2VkIHsga2V5OyB2YWx1ZTsgZ3JhbW1hciB9KVxuOztcblxubGV0IHNleHBfZ3JhbW1hcl93aXRoX3RhZ19saXN0IHggfnRhZ3MgPVxuICBMaXN0LmZvbGRfcmlnaHQgdGFncyB+aW5pdDp4IH5mOihmdW4gKGtleSwgdmFsdWUpIGdyYW1tYXIgLT5cbiAgICBTZXhwX2dyYW1tYXIuVGFnIHsga2V5OyB2YWx1ZTsgZ3JhbW1hciB9KVxuOztcblxubGV0IHVuaXRfc2V4cF9ncmFtbWFyIDogdW5pdCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IExpc3QgRW1wdHkgfVxubGV0IGJvb2xfc2V4cF9ncmFtbWFyIDogYm9vbCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEJvb2wgfVxubGV0IHN0cmluZ19zZXhwX2dyYW1tYXIgOiBzdHJpbmcgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBTdHJpbmcgfVxubGV0IGJ5dGVzX3NleHBfZ3JhbW1hciA6IGJ5dGVzIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gU3RyaW5nIH1cbmxldCBjaGFyX3NleHBfZ3JhbW1hciA6IGNoYXIgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBDaGFyIH1cbmxldCBpbnRfc2V4cF9ncmFtbWFyIDogaW50IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgZmxvYXRfc2V4cF9ncmFtbWFyIDogZmxvYXQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBGbG9hdCB9XG5sZXQgaW50MzJfc2V4cF9ncmFtbWFyIDogaW50MzIgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBpbnQ2NF9zZXhwX2dyYW1tYXIgOiBpbnQ2NCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IG5hdGl2ZWludF9zZXhwX2dyYW1tYXIgOiBuYXRpdmVpbnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBzZXhwX3Rfc2V4cF9ncmFtbWFyIDogU2V4cC50IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQW55IFwiU2V4cC50XCIgfVxubGV0IHJlZl9zZXhwX2dyYW1tYXIgZ3JhbW1hciA9IFNleHBfZ3JhbW1hci5jb2VyY2UgZ3JhbW1hclxubGV0IGxhenlfdF9zZXhwX2dyYW1tYXIgZ3JhbW1hciA9IFNleHBfZ3JhbW1hci5jb2VyY2UgZ3JhbW1hclxuXG5sZXQgb3B0aW9uX3NleHBfZ3JhbW1hciAoeyB1bnR5cGVkIH0gOiBfIFNleHBfZ3JhbW1hci50KSA6IF8gb3B0aW9uIFNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gT3B0aW9uIHVudHlwZWQgfVxuOztcblxubGV0IGxpc3Rfc2V4cF9ncmFtbWFyICh7IHVudHlwZWQgfSA6IF8gU2V4cF9ncmFtbWFyLnQpIDogXyBsaXN0IFNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoTWFueSB1bnR5cGVkKSB9XG47O1xuXG5sZXQgYXJyYXlfc2V4cF9ncmFtbWFyICh7IHVudHlwZWQgfSA6IF8gU2V4cF9ncmFtbWFyLnQpIDogXyBhcnJheSBTZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IExpc3QgKE1hbnkgdW50eXBlZCkgfVxuOztcblxubGV0IGVtcHR5X3NleHBfZ3JhbW1hciA6IF8gU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBVbmlvbiBbXSB9XG5sZXQgb3BhcXVlX3NleHBfZ3JhbW1hciA9IGVtcHR5X3NleHBfZ3JhbW1hclxubGV0IGZ1bl9zZXhwX2dyYW1tYXIgPSBlbXB0eV9zZXhwX2dyYW1tYXJcbiIsIigqIFV0aWxpdHkgTW9kdWxlIGZvciBTLWV4cHJlc3Npb24gQ29udmVyc2lvbnMgKilcblxub3BlbiBTdGRMYWJlbHNcbm9wZW4gTW9yZUxhYmVsc1xub3BlbiBQcmludGZcbm9wZW4gU2V4cFxuXG4oKiBDb252ZXJzaW9uIG9mIE9DYW1sLXZhbHVlcyB0byBTLWV4cHJlc3Npb25zICopXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbigqICclLjE3ZycgaXMgZ3VhcmFudGVlZCB0byBiZSByb3VuZC10cmlwcGFibGUuXG5cbiAgICclLjE1Zycgd2lsbCBiZSByb3VuZC10cmlwcGFibGUgYW5kIG5vdCBoYXZlIG5vaXNlIGF0IHRoZSBsYXN0IGRpZ2l0IG9yIHR3byBmb3IgYSBmbG9hdFxuICAgd2hpY2ggd2FzIGNvbnZlcnRlZCBmcm9tIGEgZGVjaW1hbCAoc3RyaW5nKSB3aXRoIDw9IDE1IHNpZ25pZmljYW50IGRpZ2l0cy4gIFNvIGl0J3NcbiAgIHdvcnRoIHRyeWluZyBmaXJzdCB0byBhdm9pZCB0aGluZ3MgbGlrZSBcIjMuMTQwMDAwMDAwMDAwMDAwMVwiLlxuXG4gICBTZWUgY29tbWVudCBhYm92ZSBbdG9fc3RyaW5nX3JvdW5kX3RyaXBwYWJsZV0gaW4geyFDb3JlLkZsb2F0fSBmb3JcbiAgIGRldGFpbGVkIGV4cGxhbmF0aW9uIGFuZCBleGFtcGxlcy4gKilcbmxldCBkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCA9XG4gIHJlZiAoZnVuIHggLT5cbiAgICBsZXQgeSA9IGZvcm1hdF9mbG9hdCBcIiUuMTVHXCIgeCBpblxuICAgIGlmIGZsb2F0X29mX3N0cmluZyB5ID0geCB0aGVuIHkgZWxzZSBmb3JtYXRfZmxvYXQgXCIlLjE3R1wiIHgpXG47O1xuXG5sZXQgcmVhZF9vbGRfb3B0aW9uX2Zvcm1hdCA9IHJlZiB0cnVlXG5sZXQgd3JpdGVfb2xkX29wdGlvbl9mb3JtYXQgPSByZWYgdHJ1ZVxubGV0IGxpc3RfbWFwIGYgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgbCB+ZilcbmxldCBzZXhwX29mX3VuaXQgKCkgPSBMaXN0IFtdXG5sZXQgc2V4cF9vZl9ib29sIGIgPSBBdG9tIChzdHJpbmdfb2ZfYm9vbCBiKVxubGV0IHNleHBfb2Zfc3RyaW5nIHN0ciA9IEF0b20gc3RyXG5sZXQgc2V4cF9vZl9ieXRlcyBieXRlcyA9IEF0b20gKEJ5dGVzLnRvX3N0cmluZyBieXRlcylcbmxldCBzZXhwX29mX2NoYXIgYyA9IEF0b20gKFN0cmluZy5tYWtlIDEgYylcbmxldCBzZXhwX29mX2ludCBuID0gQXRvbSAoc3RyaW5nX29mX2ludCBuKVxubGV0IHNleHBfb2ZfZmxvYXQgbiA9IEF0b20gKCFkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCBuKVxubGV0IHNleHBfb2ZfaW50MzIgbiA9IEF0b20gKEludDMyLnRvX3N0cmluZyBuKVxubGV0IHNleHBfb2ZfaW50NjQgbiA9IEF0b20gKEludDY0LnRvX3N0cmluZyBuKVxubGV0IHNleHBfb2ZfbmF0aXZlaW50IG4gPSBBdG9tIChOYXRpdmVpbnQudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9yZWYgc2V4cF9vZl9fYSByZiA9IHNleHBfb2ZfX2EgIXJmXG5sZXQgc2V4cF9vZl9sYXp5X3Qgc2V4cF9vZl9fYSBsdiA9IHNleHBfb2ZfX2EgKExhenkuZm9yY2UgbHYpXG5cbmxldCBzZXhwX29mX29wdGlvbiBzZXhwX29mX19hID0gZnVuY3Rpb25cbiAgfCBTb21lIHggd2hlbiAhd3JpdGVfb2xkX29wdGlvbl9mb3JtYXQgLT4gTGlzdCBbIHNleHBfb2ZfX2EgeCBdXG4gIHwgU29tZSB4IC0+IExpc3QgWyBBdG9tIFwic29tZVwiOyBzZXhwX29mX19hIHggXVxuICB8IE5vbmUgd2hlbiAhd3JpdGVfb2xkX29wdGlvbl9mb3JtYXQgLT4gTGlzdCBbXVxuICB8IE5vbmUgLT4gQXRvbSBcIm5vbmVcIlxuOztcblxubGV0IHNleHBfb2ZfcGFpciBzZXhwX29mX19hIHNleHBfb2ZfX2IgKGEsIGIpID0gTGlzdCBbIHNleHBfb2ZfX2EgYTsgc2V4cF9vZl9fYiBiIF1cblxubGV0IHNleHBfb2ZfdHJpcGxlIHNleHBfb2ZfX2Egc2V4cF9vZl9fYiBzZXhwX29mX19jIChhLCBiLCBjKSA9XG4gIExpc3QgWyBzZXhwX29mX19hIGE7IHNleHBfb2ZfX2IgYjsgc2V4cF9vZl9fYyBjIF1cbjs7XG5cbigqIExpc3QucmV2IChMaXN0LnJldl9tYXAgLi4uKSBpcyB0YWlsIHJlY3Vyc2l2ZSwgdGhlIE9DYW1sIHN0YW5kYXJkXG4gICBsaWJyYXJ5IExpc3QubWFwIGlzIE5PVC4gKilcbmxldCBzZXhwX29mX2xpc3Qgc2V4cF9vZl9fYSBsc3QgPSBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGxzdCB+ZjpzZXhwX29mX19hKSlcblxubGV0IHNleHBfb2ZfYXJyYXkgc2V4cF9vZl9fYSBhciA9XG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gIGZvciBpID0gQXJyYXkubGVuZ3RoIGFyIC0gMSBkb3dudG8gMCBkb1xuICAgIGxzdF9yZWYgOj0gc2V4cF9vZl9fYSBhci4oaSkgOjogIWxzdF9yZWZcbiAgZG9uZTtcbiAgTGlzdCAhbHN0X3JlZlxuOztcblxubGV0IHNleHBfb2ZfaGFzaHRibCBzZXhwX29mX2tleSBzZXhwX29mX3ZhbCBodGJsID1cbiAgbGV0IGNvbGwgfmtleTprIH5kYXRhOnYgYWNjID0gTGlzdCBbIHNleHBfb2Zfa2V5IGs7IHNleHBfb2ZfdmFsIHYgXSA6OiBhY2MgaW5cbiAgTGlzdCAoSGFzaHRibC5mb2xkIGh0YmwgfmluaXQ6W10gfmY6Y29sbClcbjs7XG5cbmxldCBzZXhwX29mX29wYXF1ZSBfID0gQXRvbSBcIjxvcGFxdWU+XCJcbmxldCBzZXhwX29mX2Z1biBfID0gQXRvbSBcIjxmdW4+XCJcblxuKCogRXhjZXB0aW9uIGNvbnZlcnRlciByZWdpc3RyYXRpb24gYW5kIGxvb2t1cCAqKVxuXG5tb2R1bGUgRXhuX2NvbnZlcnRlciA9IHN0cnVjdFxuICAoKiBUaGVzZSBleGNlcHRpb24gcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCBjb250ZXh0LXN3aXRjaGVzXG4gICAgIGNhbm5vdCBoYXBwZW4gdW5sZXNzIHRoZXJlIGlzIGFuIGFsbG9jYXRpb24uICBJdCBpcyByZWFzb25hYmxlIHRvIGV4cGVjdFxuICAgICB0aGF0IHRoaXMgd2lsbCByZW1haW4gdHJ1ZSBmb3IgdGhlIGZvcmVzZWVhYmxlIGZ1dHVyZS4gIFRoYXQgd2F5IHdlXG4gICAgIGF2b2lkIHVzaW5nIG11dGV4ZXMgYW5kIHRodXMgYSBkZXBlbmRlbmN5IG9uIHRoZSB0aHJlYWRzIGxpYnJhcnkuICopXG5cbiAgKCogRmFzdCBhbmQgYXV0b21hdGljIGV4Y2VwdGlvbiByZWdpc3RyYXRpb24gKilcblxuICBtb2R1bGUgUmVnaXN0cmF0aW9uID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgc2V4cF9vZl9leG4gOiBleG4gLT4gU2V4cC50XG4gICAgICA7ICgqIElmIFtwcmludGV4YyA9IHRydWVdIHRoZW4gdGhpcyBzZXhwIGNvbnZlcnRlciBpcyB1c2VkIGZvciBQcmludGV4Yy50b19zdHJpbmcgKilcbiAgICAgICAgcHJpbnRleGMgOiBib29sXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBFeG5fdGFibGUgPSBFcGhlbWVyb24uSzEuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBleHRlbnNpb25fY29uc3RydWN0b3JcblxuICAgICAgbGV0IGVxdWFsID0gKCA9PSApXG4gICAgICBsZXQgaGFzaCA9IE9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWRcbiAgICBlbmQpXG5cbiAgbGV0IHRoZV9leG5fdGFibGUgOiBSZWdpc3RyYXRpb24udCBFeG5fdGFibGUudCA9IEV4bl90YWJsZS5jcmVhdGUgMTdcblxuICAoKiBFcGhlbWVyb25zIGFyZSB1c2VkIHNvIHRoYXQgW3NleHBfb2ZfZXhuXSBjbG9zdXJlIGRvbid0IGtlZXAgdGhlXG4gICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXZlLiAqKVxuICBsZXQgYWRkID8ocHJpbnRleGMgPSB0cnVlKSA/ZmluYWxpc2U6XyBleHRlbnNpb25fY29uc3RydWN0b3Igc2V4cF9vZl9leG4gPVxuICAgIEV4bl90YWJsZS5hZGQgdGhlX2V4bl90YWJsZSBleHRlbnNpb25fY29uc3RydWN0b3IgeyBzZXhwX29mX2V4bjsgcHJpbnRleGMgfVxuICA7O1xuXG4gIGxldCBmaW5kX2F1dG8gfmZvcl9wcmludGV4YyBleG4gPVxuICAgIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleG4gaW5cbiAgICBtYXRjaCBFeG5fdGFibGUuZmluZF9vcHQgdGhlX2V4bl90YWJsZSBleHRlbnNpb25fY29uc3RydWN0b3Igd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHsgc2V4cF9vZl9leG47IHByaW50ZXhjIH0gLT5cbiAgICAgIChtYXRjaCBmb3JfcHJpbnRleGMsIHByaW50ZXhjIHdpdGhcbiAgICAgICB8IGZhbHNlLCBfIHwgXywgdHJ1ZSAtPiBTb21lIChzZXhwX29mX2V4biBleG4pXG4gICAgICAgfCB0cnVlLCBmYWxzZSAtPiBOb25lKVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdW5pdF90ZXN0c19vbmx5ID0gc3RydWN0XG4gICAgbGV0IHNpemUgKCkgPSAoRXhuX3RhYmxlLnN0YXRzX2FsaXZlIHRoZV9leG5fdGFibGUpLm51bV9iaW5kaW5nc1xuICBlbmRcbmVuZFxuXG5sZXQgc2V4cF9vZl9leG5fb3B0X2Zvcl9wcmludGV4YyBleG4gPSBFeG5fY29udmVydGVyLmZpbmRfYXV0byB+Zm9yX3ByaW50ZXhjOnRydWUgZXhuXG5sZXQgc2V4cF9vZl9leG5fb3B0IGV4biA9IEV4bl9jb252ZXJ0ZXIuZmluZF9hdXRvIH5mb3JfcHJpbnRleGM6ZmFsc2UgZXhuXG5cbmxldCBzZXhwX29mX2V4biBleG4gPVxuICBtYXRjaCBzZXhwX29mX2V4bl9vcHQgZXhuIHdpdGhcbiAgfCBOb25lIC0+IExpc3QgWyBBdG9tIChQcmludGV4Yy50b19zdHJpbmcgZXhuKSBdXG4gIHwgU29tZSBzZXhwIC0+IHNleHBcbjs7XG5cbmxldCBleG5fdG9fc3RyaW5nIGUgPSBTZXhwLnRvX3N0cmluZ19odW0gKHNleHBfb2ZfZXhuIGUpXG5cbigqIHtbZXhjZXB0aW9uIEJsYWggW0BAZGVyaXZpbmcgc2V4cF1dfSBnZW5lcmF0ZXMgYSBjYWxsIHRvIHRoZSBmdW5jdGlvblxuICAgW0V4bl9jb252ZXJ0ZXIuYWRkXSBkZWZpbmVkIGluIHRoaXMgZmlsZS4gIFNvIHdlIGFyZSBndWFyYW50ZWQgdGhhdCBhcyBzb29uIGFzIHdlXG4gICBtYXJrIGFuIGV4Y2VwdGlvbiBhcyBzZXhwYWJsZSwgdGhpcyBtb2R1bGUgd2lsbCBiZSBsaW5rZWQgaW4gYW5kIHRoaXMgcHJpbnRlciB3aWxsIGJlXG4gICByZWdpc3RlcmVkLCB3aGljaCBpcyB3aGF0IHdlIHdhbnQuICopXG5sZXQgKCkgPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW4gZXhuIC0+XG4gICAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0X2Zvcl9wcmludGV4YyBleG4gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHNleHAgLT4gU29tZSAoU2V4cC50b19zdHJpbmdfaHVtIH5pbmRlbnQ6MiBzZXhwKSlcbjs7XG5cbmxldCBwcmludGV4Y19wcmVmZXJfc2V4cCBleG4gPVxuICBtYXRjaCBzZXhwX29mX2V4bl9vcHQgZXhuIHdpdGhcbiAgfCBOb25lIC0+IFByaW50ZXhjLnRvX3N0cmluZyBleG5cbiAgfCBTb21lIHNleHAgLT4gU2V4cC50b19zdHJpbmdfaHVtIH5pbmRlbnQ6MiBzZXhwXG47O1xuXG4oKiBDb252ZXJzaW9uIG9mIFMtZXhwcmVzc2lvbnMgdG8gT0NhbWwtdmFsdWVzICopXG5cbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yID0gU2V4cC5PZl9zZXhwX2Vycm9yXG5cbmxldCByZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzID0gcmVmIHRydWVcbmxldCBvZl9zZXhwX2Vycm9yX2V4biBleGMgc2V4cCA9IHJhaXNlIChPZl9zZXhwX2Vycm9yIChleGMsIHNleHApKVxubGV0IG9mX3NleHBfZXJyb3Igd2hhdCBzZXhwID0gcmFpc2UgKE9mX3NleHBfZXJyb3IgKEZhaWx1cmUgd2hhdCwgc2V4cCkpXG5cbmxldCB1bml0X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgW10gLT4gKClcbiAgfCBBdG9tIF8gfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcInVuaXRfb2Zfc2V4cDogZW1wdHkgbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYm9vbF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIChcInRydWVcIiB8IFwiVHJ1ZVwiKSAtPiB0cnVlXG4gIHwgQXRvbSAoXCJmYWxzZVwiIHwgXCJGYWxzZVwiKSAtPiBmYWxzZVxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiYm9vbF9vZl9zZXhwOiB1bmtub3duIHN0cmluZ1wiIHNleHBcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImJvb2xfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgc3RyaW5nX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+IHN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwic3RyaW5nX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGJ5dGVzX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+IEJ5dGVzLm9mX3N0cmluZyBzdHJcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImJ5dGVzX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGNoYXJfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHN0ciA8PiAxXG4gICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiY2hhcl9vZl9zZXhwOiBhdG9tIHN0cmluZyBtdXN0IGNvbnRhaW4gb25lIGNoYXJhY3RlciBvbmx5XCIgc2V4cDtcbiAgICBzdHIuWzBdXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJjaGFyX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGludF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgaW50X29mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImludF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiaW50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBmbG9hdF9vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJmbG9hdF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaW50MzJfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IEludDMyLm9mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImludDMyX29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJpbnQzMl9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBpbnQ2NF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgSW50NjQub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50NjRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImludDY0X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IG5hdGl2ZWludF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgTmF0aXZlaW50Lm9mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcIm5hdGl2ZWludF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwibmF0aXZlaW50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IHJlZl9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9IHJlZiAoYV9fb2Zfc2V4cCBzZXhwKVxubGV0IGxhenlfdF9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9IExhenkuZnJvbV92YWwgKGFfX29mX3NleHAgc2V4cClcblxubGV0IG9wdGlvbl9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9XG4gIGlmICFyZWFkX29sZF9vcHRpb25fZm9ybWF0XG4gIHRoZW4gKFxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgTGlzdCBbXSB8IEF0b20gKFwibm9uZVwiIHwgXCJOb25lXCIpIC0+IE5vbmVcbiAgICB8IExpc3QgWyBlbCBdIHwgTGlzdCBbIEF0b20gKFwic29tZVwiIHwgXCJTb21lXCIpOyBlbCBdIC0+IFNvbWUgKGFfX29mX3NleHAgZWwpXG4gICAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBsaXN0IG11c3QgcmVwcmVzZW50IG9wdGlvbmFsIHZhbHVlXCIgc2V4cFxuICAgIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogb25seSBub25lIGNhbiBiZSBhdG9tXCIgc2V4cClcbiAgZWxzZSAoXG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBBdG9tIChcIm5vbmVcIiB8IFwiTm9uZVwiKSAtPiBOb25lXG4gICAgfCBMaXN0IFsgQXRvbSAoXCJzb21lXCIgfCBcIlNvbWVcIik7IGVsIF0gLT4gU29tZSAoYV9fb2Zfc2V4cCBlbClcbiAgICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IG9ubHkgbm9uZSBjYW4gYmUgYXRvbVwiIHNleHBcbiAgICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IGxpc3QgbXVzdCBiZSAoc29tZSBlbClcIiBzZXhwKVxuOztcblxubGV0IHBhaXJfb2Zfc2V4cCBhX19vZl9zZXhwIGJfX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgWyBhX3NleHA7IGJfc2V4cCBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl9zZXhwIGFfc2V4cCBpblxuICAgIGxldCBiID0gYl9fb2Zfc2V4cCBiX3NleHAgaW5cbiAgICBhLCBiXG4gIHwgTGlzdCBfIC0+XG4gICAgb2Zfc2V4cF9lcnJvciBcInBhaXJfb2Zfc2V4cDogbGlzdCBtdXN0IGNvbnRhaW4gZXhhY3RseSB0d28gZWxlbWVudHMgb25seVwiIHNleHBcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcInBhaXJfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgdHJpcGxlX29mX3NleHAgYV9fb2Zfc2V4cCBiX19vZl9zZXhwIGNfX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgWyBhX3NleHA7IGJfc2V4cDsgY19zZXhwIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3NleHAgYV9zZXhwIGluXG4gICAgbGV0IGIgPSBiX19vZl9zZXhwIGJfc2V4cCBpblxuICAgIGxldCBjID0gY19fb2Zfc2V4cCBjX3NleHAgaW5cbiAgICBhLCBiLCBjXG4gIHwgTGlzdCBfIC0+XG4gICAgb2Zfc2V4cF9lcnJvciBcInRyaXBsZV9vZl9zZXhwOiBsaXN0IG11c3QgY29udGFpbiBleGFjdGx5IHRocmVlIGVsZW1lbnRzIG9ubHlcIiBzZXhwXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJ0cmlwbGVfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgbGlzdF9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgbHN0IC0+XG4gICAgbGV0IHJldl9sc3QgPSBMaXN0LnJldl9tYXAgbHN0IH5mOmFfX29mX3NleHAgaW5cbiAgICBMaXN0LnJldiByZXZfbHN0XG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJsaXN0X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGFycmF5X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbXSAtPiBbfHxdXG4gIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCB0ICsgMSBpblxuICAgIGxldCByZXMgPSBBcnJheS5tYWtlIGxlbiAoYV9fb2Zfc2V4cCBoKSBpblxuICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICByZXMuKGkpIDwtIGFfX29mX3NleHAgaDtcbiAgICAgICAgbG9vcCAoaSArIDEpIHRcbiAgICBpblxuICAgIGxvb3AgMSB0XG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJhcnJheV9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBoYXNodGJsX29mX3NleHAga2V5X29mX3NleHAgdmFsX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgbHN0IC0+XG4gICAgbGV0IGh0YmwgPSBIYXNodGJsLmNyZWF0ZSAwIGluXG4gICAgbGV0IGFjdCA9IGZ1bmN0aW9uXG4gICAgICB8IExpc3QgWyBrX3NleHA7IHZfc2V4cCBdIC0+XG4gICAgICAgIEhhc2h0YmwuYWRkIGh0YmwgfmtleTooa2V5X29mX3NleHAga19zZXhwKSB+ZGF0YToodmFsX29mX3NleHAgdl9zZXhwKVxuICAgICAgfCBMaXN0IF8gfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImhhc2h0Ymxfb2Zfc2V4cDogdHVwbGUgbGlzdCBuZWVkZWRcIiBzZXhwXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgbHN0IH5mOmFjdDtcbiAgICBodGJsXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJoYXNodGJsX29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IG9wYXF1ZV9vZl9zZXhwIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIFwib3BhcXVlX29mX3NleHA6IGNhbm5vdCBjb252ZXJ0IG9wYXF1ZSB2YWx1ZXNcIiBzZXhwXG47O1xuXG5sZXQgZnVuX29mX3NleHAgc2V4cCA9IG9mX3NleHBfZXJyb3IgXCJmdW5fb2Zfc2V4cDogY2Fubm90IGNvbnZlcnQgZnVuY3Rpb24gdmFsdWVzXCIgc2V4cFxuXG4oKiBTZXhwIEdyYW1tYXJzICopXG5cbmluY2x1ZGUgU2V4cF9jb252X2dyYW1tYXJcblxuKCogUmVnaXN0ZXJpbmcgZGVmYXVsdCBleGNlcHRpb24gcHJpbnRlcnMgKilcblxubGV0IGdldF9mbGNfZXJyb3IgbmFtZSAoZmlsZSwgbGluZSwgY2hyKSA9IEF0b20gKHNwcmludGYgXCIlcyAlczolZDolZFwiIG5hbWUgZmlsZSBsaW5lIGNocilcblxubGV0ICgpID1cbiAgTGlzdC5pdGVyXG4gICAgfmY6KGZ1biAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yLCBoYW5kbGVyKSAtPlxuICAgICAgRXhuX2NvbnZlcnRlci5hZGQgfnByaW50ZXhjOmZhbHNlIH5maW5hbGlzZTpmYWxzZSBleHRlbnNpb25fY29uc3RydWN0b3IgaGFuZGxlcilcbiAgICBbICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXNzZXJ0X2ZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgQXNzZXJ0X2ZhaWx1cmUgYXJnIC0+IGdldF9mbGNfZXJyb3IgXCJBc3NlcnRfZmFpbHVyZVwiIGFyZ1xuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgRXhpdF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBFeGl0IC0+IEF0b20gXCJFeGl0XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEVuZF9vZl9maWxlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEVuZF9vZl9maWxlIC0+IEF0b20gXCJFbmRfb2ZfZmlsZVwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBGYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEZhaWx1cmUgYXJnIC0+IExpc3QgWyBBdG9tIFwiRmFpbHVyZVwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBOb3RfZm91bmRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTm90X2ZvdW5kIC0+IEF0b20gXCJOb3RfZm91bmRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgSW52YWxpZF9hcmd1bWVudF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGFyZyAtPiBMaXN0IFsgQXRvbSBcIkludmFsaWRfYXJndW1lbnRcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTWF0Y2hfZmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBNYXRjaF9mYWlsdXJlIGFyZyAtPiBnZXRfZmxjX2Vycm9yIFwiTWF0Y2hfZmFpbHVyZVwiIGFyZ1xuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTm90X2ZvdW5kX3NdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTm90X2ZvdW5kX3MgYXJnIC0+IExpc3QgWyBBdG9tIFwiTm90X2ZvdW5kX3NcIjsgYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFN5c19lcnJvcl1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTeXNfZXJyb3IgYXJnIC0+IExpc3QgWyBBdG9tIFwiU3lzX2Vycm9yXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEFyZy5IZWxwXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEFyZy5IZWxwIGFyZyAtPiBMaXN0IFsgQXRvbSBcIkFyZy5IZWxwXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEFyZy5CYWRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgQXJnLkJhZCBhcmcgLT4gTGlzdCBbIEF0b20gXCJBcmcuQmFkXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIExhenkuVW5kZWZpbmVkXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IExhenkuVW5kZWZpbmVkIC0+IEF0b20gXCJMYXp5LlVuZGVmaW5lZFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBQYXJzaW5nLlBhcnNlX2Vycm9yXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFBhcnNpbmcuUGFyc2VfZXJyb3IgLT4gQXRvbSBcIlBhcnNpbmcuUGFyc2VfZXJyb3JcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgUXVldWUuRW1wdHldXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgUXVldWUuRW1wdHkgLT4gQXRvbSBcIlF1ZXVlLkVtcHR5XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNjYW5mLlNjYW5fZmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTY2FuZi5TY2FuX2ZhaWx1cmUgYXJnIC0+IExpc3QgWyBBdG9tIFwiU2NhbmYuU2Nhbl9mYWlsdXJlXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFN0YWNrLkVtcHR5XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFN0YWNrLkVtcHR5IC0+IEF0b20gXCJTdGFjay5FbXB0eVwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTeXMuQnJlYWtdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU3lzLkJyZWFrIC0+IEF0b20gXCJTeXMuQnJlYWtcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICBdXG47O1xuXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXJcbiAgICB+ZjooZnVuIChleHRlbnNpb25fY29uc3RydWN0b3IsIGhhbmRsZXIpIC0+XG4gICAgICBFeG5fY29udmVydGVyLmFkZCB+cHJpbnRleGM6dHJ1ZSB+ZmluYWxpc2U6ZmFsc2UgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGhhbmRsZXIpXG4gICAgWyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE9mX3NleHBfZXJyb3JdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgT2Zfc2V4cF9lcnJvciAoZXhjLCBzZXhwKSAtPlxuICAgICAgICAgIExpc3QgWyBBdG9tIFwiU2V4cGxpYi5Db252Lk9mX3NleHBfZXJyb3JcIjsgc2V4cF9vZl9leG4gZXhjOyBzZXhwIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgXVxuOztcblxuZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbiIsIigqIENvbnZfZXJyb3I6IE1vZHVsZSBmb3IgSGFuZGxpbmcgRXJyb3JzIGR1cmluZyBBdXRvbWF0ZWQgUy1leHByZXNzaW9uXG4gICBDb252ZXJzaW9ucyAqKVxuXG5vcGVuIFN0ZExhYmVsc1xub3BlbiBQcmludGZcbm9wZW4gU2V4cF9jb252XG5cbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yID0gT2Zfc2V4cF9lcnJvclxuXG4oKiBFcnJvcnMgY29uY2VybmluZyB0dXBsZXMgKilcblxubGV0IHR1cGxlX29mX3NpemVfbl9leHBlY3RlZCBsb2MgbiBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAoc3ByaW50ZiBcIiVzX29mX3NleHA6IHR1cGxlIG9mIHNpemUgJWQgZXhwZWN0ZWRcIiBsb2Mgbikgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgc3VtIHR5cGVzICopXG5cbmxldCBzdGFnX25vX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0aGlzIGNvbnN0cnVjdG9yIGRvZXMgbm90IHRha2UgYXJndW1lbnRzXCIpIHNleHBcbjs7XG5cbmxldCBzdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIHRhZyBzZXhwID1cbiAgbGV0IG1zZyA9IHNwcmludGYgXCIlc19vZl9zZXhwOiBzdW0gdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiIGxvYyB0YWcgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHN0YWdfdGFrZXNfYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRoaXMgY29uc3RydWN0b3IgcmVxdWlyZXMgYXJndW1lbnRzXCIpIHNleHBcbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYSBuZXN0ZWQgbGlzdFwiKSBzZXhwXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYW4gZW1wdHkgbGlzdFwiKSBzZXhwXG47O1xuXG5sZXQgdW5leHBlY3RlZF9zdGFnIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdW5leHBlY3RlZCB2YXJpYW50IGNvbnN0cnVjdG9yXCIpIHNleHBcbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHJlY29yZHMgKilcblxubGV0IHJlY29yZF9zZXhwX2Jvb2xfd2l0aF9wYXlsb2FkIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgbG9jIF4gXCJfb2Zfc2V4cDogcmVjb3JkIGNvbnZlcnNpb246IGEgW3NleHAuYm9vbF0gZmllbGQgd2FzIGdpdmVuIGEgcGF5bG9hZC5cIlxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX29ubHlfcGFpcnNfZXhwZWN0ZWQgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2NcbiAgICBeIFwiX29mX3NleHA6IHJlY29yZCBjb252ZXJzaW9uOiBvbmx5IHBhaXJzIGV4cGVjdGVkLCB0aGVpciBmaXJzdCBlbGVtZW50IG11c3QgYmUgYW4gXFxcbiAgICAgICBhdG9tXCJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQgfmxvYyByZXZfZmxkX25hbWVzIHNleHAgPVxuICBsZXQgZmxkX25hbWVzX3N0ciA9IFN0cmluZy5jb25jYXQgKExpc3QucmV2IHJldl9mbGRfbmFtZXMpIH5zZXA6XCIgXCIgaW5cbiAgbGV0IG1zZyA9IHNwcmludGYgXCIlc19vZl9zZXhwOiAlczogJXNcIiBsb2Mgd2hhdCBmbGRfbmFtZXNfc3RyIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfZHVwbGljYXRlX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyBzZXhwID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImR1cGxpY2F0ZSBmaWVsZHNcIiB+bG9jIHJldl9mbGRfbmFtZXMgc2V4cFxuOztcblxubGV0IHJlY29yZF9leHRyYV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgc2V4cCA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJleHRyYSBmaWVsZHNcIiB+bG9jIHJldl9mbGRfbmFtZXMgc2V4cFxuOztcblxubGV0IHJlYyByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIGZpZWxkcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgZmllbGRzKSB+c2VwOlwiIFwiXG4gIHwgKHRydWUsIGZpZWxkKSA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgKGZpZWxkIDo6IGZpZWxkcykgcmVzdFxuICB8IF8gOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIGZpZWxkcyByZXN0XG47O1xuXG5sZXQgcmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyBsb2Mgc2V4cCBsc3QgPVxuICBsZXQgdW5kZWZpbmVkID0gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBbXSBsc3QgaW5cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZiBcIiVzX29mX3NleHA6IHRoZSBmb2xsb3dpbmcgcmVjb3JkIGVsZW1lbnRzIHdlcmUgdW5kZWZpbmVkOiAlc1wiIGxvYyB1bmRlZmluZWRcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9saXN0X2luc3RlYWRfYXRvbSBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPSBsb2MgXiBcIl9vZl9zZXhwOiBsaXN0IGluc3RlYWQgb2YgYXRvbSBmb3IgcmVjb3JkIGV4cGVjdGVkXCIgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgbG9jXG4gICAgXiBcIl9vZl9zZXhwOiBjYW5ub3QgY29udmVydCB2YWx1ZXMgb2YgdHlwZXMgcmVzdWx0aW5nIGZyb20gcG9seW1vcnBoaWMgcmVjb3JkIGZpZWxkc1wiXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHBvbHltb3JwaGljIHZhcmlhbnRzICopXG5cbmV4Y2VwdGlvbiBOb192YXJpYW50X21hdGNoXG5cbmxldCBub192YXJpYW50X21hdGNoICgpID0gcmFpc2UgTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IG5vIG1hdGNoaW5nIHZhcmlhbnQgZm91bmRcIikgc2V4cFxuOztcblxubGV0IHB0YWdfbm9fYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHBvbHltb3JwaGljIHZhcmlhbnQgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IHB0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgY25zdHIgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIHNwcmludGZcbiAgICAgIFwiJXNfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCJcbiAgICAgIGxvY1xuICAgICAgY25zdHJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHB0YWdfdGFrZXNfYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnIHRha2VzIGFuIGFyZ3VtZW50XCIpIHNleHBcbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogYSBuZXN0ZWQgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIikgc2V4cFxuOztcblxubGV0IGVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRoZSBlbXB0eSBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKSBzZXhwXG47O1xuXG5sZXQgZW1wdHlfdHlwZSBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRyeWluZyB0byBjb252ZXJ0IGFuIGVtcHR5IHR5cGVcIikgc2V4cFxuOztcbiIsIm9wZW4hIFN0ZExhYmVsc1xub3BlbiEgU2V4cF9jb252XG5vcGVuISBTZXhwX2NvbnZfZXJyb3JcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoXywgXykgdCA9XG4gICAgfCBEZWZhdWx0IDogKHVuaXQgLT4gJ2EpIC0+ICgnYSwgU2V4cC50IC0+ICdhKSB0XG4gICAgfCBPbWl0X25pbCA6ICgnYSwgU2V4cC50IC0+ICdhKSB0XG4gICAgfCBSZXF1aXJlZCA6ICgnYSwgU2V4cC50IC0+ICdhKSB0XG4gICAgfCBTZXhwX2FycmF5IDogKCdhIGFycmF5LCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IFNleHBfYm9vbCA6IChib29sLCB1bml0KSB0XG4gICAgfCBTZXhwX2xpc3QgOiAoJ2EgbGlzdCwgU2V4cC50IC0+ICdhKSB0XG4gICAgfCBTZXhwX29wdGlvbiA6ICgnYSBvcHRpb24sIFNleHAudCAtPiAnYSkgdFxuZW5kXG5cbm1vZHVsZSBGaWVsZHMgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgPVxuICAgIHwgRW1wdHkgOiB1bml0IHRcbiAgICB8IEZpZWxkIDpcbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsga2luZCA6ICgnYSwgJ2NvbnYpIEtpbmQudFxuICAgICAgICA7IGNvbnYgOiAnY29udlxuICAgICAgICA7IHJlc3QgOiAnYiB0XG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhICogJ2IpIHRcblxuICBsZXQgbGVuZ3RoID1cbiAgICBsZXQgcmVjIGxlbmd0aF9sb29wIDogdHlwZSBhLiBhIHQgLT4gaW50IC0+IGludCA9XG4gICAgICBmdW4gdCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRmllbGQgeyByZXN0OyBfIH0gLT4gbGVuZ3RoX2xvb3AgcmVzdCAoYWNjICsgMSlcbiAgICAgICAgfCBFbXB0eSAtPiBhY2NcbiAgICBpblxuICAgIGZ1biB0IC0+IGxlbmd0aF9sb29wIHQgMFxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWxmb3JtZWQgPSBzdHJ1Y3RcbiAgKCogUmVwcmVzZW50cyBlcnJvcnMgdGhhdCBjYW4gb2NjdXIgZHVlIHRvIG1hbGZvcm1lZCByZWNvcmQgc2V4cHMuIEFjY3VtdWxhdGVkIGFzIGFcbiAgICAgdmFsdWUgc28gd2UgY2FuIHJlcG9ydCBtdWx0aXBsZSBuYW1lcyBhdCBvbmNlIGZvciBleHRyYSBmaWVsZHMsIGR1cGxpY2F0ZSBmaWVsZHMsIG9yXG4gICAgIG1pc3NpbmcgZmllbGRzLiAqKVxuICB0eXBlIHQgPVxuICAgIHwgQm9vbF9wYXlsb2FkXG4gICAgfCBFeHRyYXMgb2Ygc3RyaW5nIGxpc3RcbiAgICB8IER1cHMgb2Ygc3RyaW5nIGxpc3RcbiAgICB8IE1pc3Npbmcgb2Ygc3RyaW5nIGxpc3RcbiAgICB8IE5vbl9wYWlyIG9mIFNleHAudCBvcHRpb25cblxuICBsZXQgY29tYmluZSBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgICgqIGNob29zZSB0aGUgZmlyc3QgYm9vbC1wYXlsb2FkIG9yIG5vbi1wYWlyIGVycm9yIHRoYXQgb2NjdXJzICopXG4gICAgfCAoKEJvb2xfcGF5bG9hZCB8IE5vbl9wYWlyIF8pIGFzIHQpLCBfIC0+IHRcbiAgICB8IF8sICgoQm9vbF9wYXlsb2FkIHwgTm9uX3BhaXIgXykgYXMgdCkgLT4gdFxuICAgICgqIGNvbWJpbmUgbGlzdHMgb2Ygc2ltaWxhciBlcnJvcnMgKilcbiAgICB8IEV4dHJhcyBhLCBFeHRyYXMgYiAtPiBFeHRyYXMgKGEgQCBiKVxuICAgIHwgRHVwcyBhLCBEdXBzIGIgLT4gRHVwcyAoYSBAIGIpXG4gICAgfCBNaXNzaW5nIGEsIE1pc3NpbmcgYiAtPiBNaXNzaW5nIChhIEAgYilcbiAgICAoKiBvdGhlcndpc2UsIGR1cHMgPiBleHRyYXMgPiBtaXNzaW5nICopXG4gICAgfCAoRHVwcyBfIGFzIHQpLCBfIHwgXywgKER1cHMgXyBhcyB0KSAtPiB0XG4gICAgfCAoRXh0cmFzIF8gYXMgdCksIF8gfCBfLCAoRXh0cmFzIF8gYXMgdCkgLT4gdFxuICA7O1xuXG4gIGxldCByYWlzZSB0IH5jYWxsZXIgfmNvbnRleHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQm9vbF9wYXlsb2FkIC0+IHJlY29yZF9zZXhwX2Jvb2xfd2l0aF9wYXlsb2FkIGNhbGxlciBjb250ZXh0XG4gICAgfCBFeHRyYXMgbmFtZXMgLT4gcmVjb3JkX2V4dHJhX2ZpZWxkcyBjYWxsZXIgKExpc3QucmV2IG5hbWVzKSBjb250ZXh0XG4gICAgfCBEdXBzIG5hbWVzIC0+IHJlY29yZF9kdXBsaWNhdGVfZmllbGRzIGNhbGxlciAoTGlzdC5yZXYgbmFtZXMpIGNvbnRleHRcbiAgICB8IE1pc3NpbmcgbmFtZXMgLT5cbiAgICAgIExpc3QubWFwIG5hbWVzIH5mOihmdW4gbmFtZSAtPiB0cnVlLCBuYW1lKVxuICAgICAgfD4gcmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyBjYWxsZXIgY29udGV4dFxuICAgIHwgTm9uX3BhaXIgbWF5YmVfY29udGV4dCAtPlxuICAgICAgbGV0IGNvbnRleHQgPSBPcHRpb24udmFsdWUgbWF5YmVfY29udGV4dCB+ZGVmYXVsdDpjb250ZXh0IGluXG4gICAgICByZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCBjYWxsZXIgY29udGV4dFxuICA7O1xuZW5kXG5cbmV4Y2VwdGlvbiBNYWxmb3JtZWQgb2YgTWFsZm9ybWVkLnRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICgqIFN0b3JlcyBzZXhwcyBjb3JyZXNwb25kaW5nIHRvIHJlY29yZCBmaWVsZHMsIGluIHRoZSBvcmRlciB0aGUgZmllbGRzIHdlcmUgZGVjbGFyZWQuXG4gICAgIEV4Y2x1ZGVzIGZpZWxkcyBhbHJlYWR5IHBhcnNlZCBpbiB0aGUgZmFzdCBwYXRoLlxuXG4gICAgIExpc3Qgc2V4cHMgcmVwcmVzZW50IGEgZmllbGQgdGhhdCBpcyBwcmVzZW50LCBzdWNoIGFzICh4IDEpIGZvciBhIGZpZWxkIG5hbWVkIFwieFwiLlxuICAgICBBdG9tIHNleHBzIHJlcHJlc2VudCBhIGZpZWxkIHRoYXQgaXMgYWJzZW50LCBvciBhdCBsZWFzdCBub3QgeWV0IHNlZW4uICopXG4gIHR5cGUgdCA9IHsgc3RhdGUgOiBTZXhwLnQgYXJyYXkgfSBbQEB1bmJveGVkXVxuXG4gIGxldCB1bnNhZmVfZ2V0IHQgcG9zID0gQXJyYXkudW5zYWZlX2dldCB0LnN0YXRlIHBvc1xuICBsZXQgdW5zYWZlX3NldCB0IHBvcyBzZXhwID0gQXJyYXkudW5zYWZlX3NldCB0LnN0YXRlIHBvcyBzZXhwXG4gIGxldCBhYnNlbnQgPSBTZXhwLkF0b20gXCJcIlxuICBsZXQgY3JlYXRlIGxlbiA9IHsgc3RhdGUgPSBBcnJheS5tYWtlIGxlbiBhYnNlbnQgfVxuZW5kXG5cbigqIFBhcnNpbmcgZmllbGQgdmFsdWVzIGZyb20gc3RhdGUuICopXG5cbmxldCByZWMgcGFyc2VfdmFsdWVfbWFsZm9ybWVkXG4gIDogdHlwZSBhIGIuIE1hbGZvcm1lZC50IC0+IGZpZWxkczooYSAqIGIpIEZpZWxkcy50IC0+IHN0YXRlOlN0YXRlLnQgLT4gcG9zOmludCAtPiBhXG4gID1cbiAgZnVuIG1hbGZvcm1lZCB+ZmllbGRzIH5zdGF0ZSB+cG9zIC0+XG4gIGxldCAoRmllbGQgZmllbGQpID0gZmllbGRzIGluXG4gIGxldCBtYWxmb3JtZWQgPVxuICAgIG1hdGNoIHBhcnNlX3ZhbHVlcyB+ZmllbGRzOmZpZWxkLnJlc3QgfnN0YXRlIH5wb3M6KHBvcyArIDEpIHdpdGhcbiAgICB8IChfIDogYikgLT4gbWFsZm9ybWVkXG4gICAgfCBleGNlcHRpb24gTWFsZm9ybWVkIG90aGVyIC0+IE1hbGZvcm1lZC5jb21iaW5lIG1hbGZvcm1lZCBvdGhlclxuICBpblxuICByYWlzZSAoTWFsZm9ybWVkIG1hbGZvcm1lZClcblxuYW5kIHBhcnNlX3ZhbHVlIDogdHlwZSBhIGIuIGZpZWxkczooYSAqIGIpIEZpZWxkcy50IC0+IHN0YXRlOlN0YXRlLnQgLT4gcG9zOmludCAtPiBhICogYiA9XG4gIGZ1biB+ZmllbGRzIH5zdGF0ZSB+cG9zIC0+XG4gIGxldCAoRmllbGQgeyBuYW1lOyBraW5kOyBjb252OyByZXN0IH0pID0gZmllbGRzIGluXG4gIGxldCB2YWx1ZSA6IGEgPVxuICAgIG1hdGNoIGtpbmQsIFN0YXRlLnVuc2FmZV9nZXQgc3RhdGUgcG9zIHdpdGhcbiAgICAoKiB3ZWxsLWZvcm1lZCAqKVxuICAgIHwgUmVxdWlyZWQsIExpc3QgWyBfOyBzZXhwIF0gLT4gY29udiBzZXhwXG4gICAgfCBEZWZhdWx0IF8sIExpc3QgWyBfOyBzZXhwIF0gLT4gY29udiBzZXhwXG4gICAgfCBPbWl0X25pbCwgTGlzdCBbIF87IHNleHAgXSAtPiBjb252IHNleHBcbiAgICB8IFNleHBfb3B0aW9uLCBMaXN0IFsgXzsgc2V4cCBdIC0+IFNvbWUgKGNvbnYgc2V4cClcbiAgICB8IFNleHBfbGlzdCwgTGlzdCBbIF87IHNleHAgXSAtPiBsaXN0X29mX3NleHAgY29udiBzZXhwXG4gICAgfCBTZXhwX2FycmF5LCBMaXN0IFsgXzsgc2V4cCBdIC0+IGFycmF5X29mX3NleHAgY29udiBzZXhwXG4gICAgfCBTZXhwX2Jvb2wsIExpc3QgWyBfIF0gLT4gdHJ1ZVxuICAgICgqIGlsbC1mb3JtZWQgKilcbiAgICB8ICggKFJlcXVpcmVkIHwgRGVmYXVsdCBfIHwgT21pdF9uaWwgfCBTZXhwX29wdGlvbiB8IFNleHBfbGlzdCB8IFNleHBfYXJyYXkpXG4gICAgICAsIChMaXN0IChfIDo6IF8gOjogXyA6OiBfKSBhcyBzZXhwKSApIC0+XG4gICAgICBwYXJzZV92YWx1ZV9tYWxmb3JtZWQgKE5vbl9wYWlyIChTb21lIHNleHApKSB+ZmllbGRzIH5zdGF0ZSB+cG9zXG4gICAgfCAoIChSZXF1aXJlZCB8IERlZmF1bHQgXyB8IE9taXRfbmlsIHwgU2V4cF9vcHRpb24gfCBTZXhwX2xpc3QgfCBTZXhwX2FycmF5KVxuICAgICAgLCBMaXN0IChbXSB8IFsgXyBdKSApIC0+IHBhcnNlX3ZhbHVlX21hbGZvcm1lZCAoTm9uX3BhaXIgTm9uZSkgfmZpZWxkcyB+c3RhdGUgfnBvc1xuICAgIHwgU2V4cF9ib29sLCBMaXN0IChbXSB8IF8gOjogXyA6OiBfKSAtPlxuICAgICAgcGFyc2VfdmFsdWVfbWFsZm9ybWVkIEJvb2xfcGF5bG9hZCB+ZmllbGRzIH5zdGF0ZSB+cG9zXG4gICAgKCogYWJzZW50ICopXG4gICAgfCBSZXF1aXJlZCwgQXRvbSBfIC0+IHBhcnNlX3ZhbHVlX21hbGZvcm1lZCAoTWlzc2luZyBbIG5hbWUgXSkgfmZpZWxkcyB+c3RhdGUgfnBvc1xuICAgIHwgRGVmYXVsdCBkZWZhdWx0LCBBdG9tIF8gLT4gZGVmYXVsdCAoKVxuICAgIHwgT21pdF9uaWwsIEF0b20gXyAtPiBjb252IChMaXN0IFtdKVxuICAgIHwgU2V4cF9vcHRpb24sIEF0b20gXyAtPiBOb25lXG4gICAgfCBTZXhwX2xpc3QsIEF0b20gXyAtPiBbXVxuICAgIHwgU2V4cF9hcnJheSwgQXRvbSBfIC0+IFt8fF1cbiAgICB8IFNleHBfYm9vbCwgQXRvbSBfIC0+IGZhbHNlXG4gIGluXG4gIHZhbHVlLCBwYXJzZV92YWx1ZXMgfmZpZWxkczpyZXN0IH5zdGF0ZSB+cG9zOihwb3MgKyAxKVxuXG5hbmQgcGFyc2VfdmFsdWVzIDogdHlwZSBhLiBmaWVsZHM6YSBGaWVsZHMudCAtPiBzdGF0ZTpTdGF0ZS50IC0+IHBvczppbnQgLT4gYSA9XG4gIGZ1biB+ZmllbGRzIH5zdGF0ZSB+cG9zIC0+XG4gIG1hdGNoIGZpZWxkcyB3aXRoXG4gIHwgRmllbGQgXyAtPiBwYXJzZV92YWx1ZSB+ZmllbGRzIH5zdGF0ZSB+cG9zXG4gIHwgRW1wdHkgLT4gKClcbjs7XG5cbigqIFBvcHVsYXRpbmcgc3RhdGUuIEhhbmRsZXMgc2xvdyBwYXRoIGNhc2VzIHdoZXJlIHRoZXJlIG1heSBiZSByZW9yZGVyZWQsIGR1cGxpY2F0ZWQsXG4gICBtaXNzaW5nLCBvciBleHRyYSBmaWVsZHMuICopXG5cbmxldCByZWMgcGFyc2Vfc3BpbmVfbWFsZm9ybWVkIG1hbGZvcm1lZCB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzID1cbiAgbGV0IG1hbGZvcm1lZCA9XG4gICAgbWF0Y2ggcGFyc2Vfc3BpbmVfc2xvdyB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzIHdpdGhcbiAgICB8ICgpIC0+IG1hbGZvcm1lZFxuICAgIHwgZXhjZXB0aW9uIE1hbGZvcm1lZCBvdGhlciAtPiBNYWxmb3JtZWQuY29tYmluZSBtYWxmb3JtZWQgb3RoZXJcbiAgaW5cbiAgcmFpc2UgKE1hbGZvcm1lZCBtYWxmb3JtZWQpXG5cbmFuZCBwYXJzZV9zcGluZV9zbG93IH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHMgPVxuICBtYXRjaCAoc2V4cHMgOiBTZXhwLnQgbGlzdCkgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgKExpc3QgKEF0b20gbmFtZSA6OiBfKSBhcyBmaWVsZCkgOjogc2V4cHMgLT5cbiAgICBsZXQgaSA9IGluZGV4IG5hbWUgaW5cbiAgICAobWF0Y2ggc2VlbiA8PSBpICYmIGkgPCBsZW4gd2l0aFxuICAgICB8IHRydWUgLT5cbiAgICAgICAoKiB2YWxpZCBmaWVsZCBmb3Igc2xvdy1wYXRoIHBhcnNpbmcgKilcbiAgICAgICBsZXQgcG9zID0gaSAtIHNlZW4gaW5cbiAgICAgICAobWF0Y2ggU3RhdGUudW5zYWZlX2dldCBzdGF0ZSBwb3Mgd2l0aFxuICAgICAgICB8IEF0b20gXyAtPlxuICAgICAgICAgICgqIGZpZWxkIG5vdCBzZWVuIHlldCAqKVxuICAgICAgICAgIFN0YXRlLnVuc2FmZV9zZXQgc3RhdGUgcG9zIGZpZWxkO1xuICAgICAgICAgIHBhcnNlX3NwaW5lX3Nsb3cgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwc1xuICAgICAgICB8IExpc3QgXyAtPlxuICAgICAgICAgICgqIGZpZWxkIGFscmVhZHkgc2VlbiAqKVxuICAgICAgICAgIHBhcnNlX3NwaW5lX21hbGZvcm1lZCAoRHVwcyBbIG5hbWUgXSkgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwcylcbiAgICAgfCBmYWxzZSAtPlxuICAgICAgIChtYXRjaCAwIDw9IGkgJiYgaSA8IHNlZW4gd2l0aFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAoKiBmaWVsZCBzZWVuIGluIGZhc3QgcGF0aCAqKVxuICAgICAgICAgIHBhcnNlX3NwaW5lX21hbGZvcm1lZCAoRHVwcyBbIG5hbWUgXSkgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwc1xuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgKCogZXh0cmEgZmllbGQgKilcbiAgICAgICAgICAobWF0Y2ggZXh0cmEgd2l0aFxuICAgICAgICAgICB8IHRydWUgLT4gcGFyc2Vfc3BpbmVfc2xvdyB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzXG4gICAgICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAgICBwYXJzZV9zcGluZV9tYWxmb3JtZWQgKEV4dHJhcyBbIG5hbWUgXSkgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwcykpKVxuICB8IHNleHAgOjogc2V4cHMgLT5cbiAgICBwYXJzZV9zcGluZV9tYWxmb3JtZWQgKE5vbl9wYWlyIChTb21lIHNleHApKSB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzXG47O1xuXG4oKiBTbG93IHBhdGggZm9yIHJlY29yZCBwYXJzaW5nLiBVc2VzIHN0YXRlIHRvIHN0b3JlIGZpZWxkcyBhcyB0aGV5IGFyZSBkaXNjb3ZlcmVkLiAqKVxuXG5sZXQgcGFyc2VfcmVjb3JkX3Nsb3cgfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuIHNleHBzID1cbiAgbGV0IHVuc2VlbiA9IEZpZWxkcy5sZW5ndGggZmllbGRzIGluXG4gIGxldCBzdGF0ZSA9IFN0YXRlLmNyZWF0ZSB1bnNlZW4gaW5cbiAgbGV0IGxlbiA9IHNlZW4gKyB1bnNlZW4gaW5cbiAgKCogcG9wdWxhdGUgc3RhdGUgKilcbiAgcGFyc2Vfc3BpbmVfc2xvdyB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzO1xuICAoKiBwYXJzZSB2YWx1ZXMgZnJvbSBzdGF0ZSAqKVxuICBwYXJzZV92YWx1ZXMgfmZpZWxkcyB+c3RhdGUgfnBvczowXG47O1xuXG4oKiBGYXN0IHBhdGggZm9yIHJlY29yZCBwYXJzaW5nLiBEaXJlY3RseSBwYXJzZXMgYW5kIHJldHVybnMgZmllbGRzIGluIHRoZSBvcmRlciB0aGV5IGFyZVxuICAgZGVjbGFyZWQuIEZhbGxzIGJhY2sgb24gc2xvdyBwYXRoIGlmIGFueSBmaWVsZHMgYXJlIGFic2VudCwgcmVvcmRlcmVkLCBvciBtYWxmb3JtZWQuICopXG5cbmxldCByZWMgcGFyc2VfZmllbGRfZmFzdFxuICA6IHR5cGUgYSBiLlxuICAgIGZpZWxkczooYSAqIGIpIEZpZWxkcy50XG4gICAgLT4gaW5kZXg6KHN0cmluZyAtPiBpbnQpXG4gICAgLT4gZXh0cmE6Ym9vbFxuICAgIC0+IHNlZW46aW50XG4gICAgLT4gU2V4cC50IGxpc3RcbiAgICAtPiBhICogYlxuICA9XG4gIGZ1biB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHMgLT5cbiAgbGV0IChGaWVsZCB7IG5hbWU7IGtpbmQ7IGNvbnY7IHJlc3QgfSkgPSBmaWVsZHMgaW5cbiAgbWF0Y2ggc2V4cHMgd2l0aFxuICB8IExpc3QgKEF0b20gYXRvbSA6OiBhcmdzKSA6OiBvdGhlcnMgd2hlbiBTdHJpbmcuZXF1YWwgYXRvbSBuYW1lIC0+XG4gICAgKG1hdGNoIGtpbmQsIGFyZ3Mgd2l0aFxuICAgICB8IFJlcXVpcmVkLCBbIHNleHAgXSAtPlxuICAgICAgIGNvbnYgc2V4cCwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVyc1xuICAgICB8IERlZmF1bHQgXywgWyBzZXhwIF0gLT5cbiAgICAgICBjb252IHNleHAsIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkczpyZXN0IH5pbmRleCB+ZXh0cmEgfnNlZW46KHNlZW4gKyAxKSBvdGhlcnNcbiAgICAgfCBPbWl0X25pbCwgWyBzZXhwIF0gLT5cbiAgICAgICBjb252IHNleHAsIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkczpyZXN0IH5pbmRleCB+ZXh0cmEgfnNlZW46KHNlZW4gKyAxKSBvdGhlcnNcbiAgICAgfCBTZXhwX29wdGlvbiwgWyBzZXhwIF0gLT5cbiAgICAgICAoIFNvbWUgKGNvbnYgc2V4cClcbiAgICAgICAsIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkczpyZXN0IH5pbmRleCB+ZXh0cmEgfnNlZW46KHNlZW4gKyAxKSBvdGhlcnMgKVxuICAgICB8IFNleHBfbGlzdCwgWyBzZXhwIF0gLT5cbiAgICAgICAoIGxpc3Rfb2Zfc2V4cCBjb252IHNleHBcbiAgICAgICAsIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkczpyZXN0IH5pbmRleCB+ZXh0cmEgfnNlZW46KHNlZW4gKyAxKSBvdGhlcnMgKVxuICAgICB8IFNleHBfYXJyYXksIFsgc2V4cCBdIC0+XG4gICAgICAgKCBhcnJheV9vZl9zZXhwIGNvbnYgc2V4cFxuICAgICAgICwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVycyApXG4gICAgIHwgU2V4cF9ib29sLCBbXSAtPlxuICAgICAgIHRydWUsIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkczpyZXN0IH5pbmRleCB+ZXh0cmEgfnNlZW46KHNlZW4gKyAxKSBvdGhlcnNcbiAgICAgKCogbWFsZm9ybWVkIGZpZWxkIG9mIHNvbWUga2luZCwgZGlzcGF0Y2ggdG8gc2xvdyBwYXRoICopXG4gICAgIHwgXywgXyAtPiBwYXJzZV9yZWNvcmRfc2xvdyB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHMpXG4gICgqIG1hbGZvcm1lZCBvciBvdXQtb2Ytb3JkZXIgZmllbGQsIGRpc3BhdGNoIHRvIHNsb3cgcGF0aCAqKVxuICB8IF8gLT4gcGFyc2VfcmVjb3JkX3Nsb3cgfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuIHNleHBzXG5cbmFuZCBwYXJzZV9zcGluZV9mYXN0XG4gIDogdHlwZSBhLlxuICAgIGZpZWxkczphIEZpZWxkcy50XG4gICAgLT4gaW5kZXg6KHN0cmluZyAtPiBpbnQpXG4gICAgLT4gZXh0cmE6Ym9vbFxuICAgIC0+IHNlZW46aW50XG4gICAgLT4gU2V4cC50IGxpc3RcbiAgICAtPiBhXG4gID1cbiAgZnVuIH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwcyAtPlxuICBtYXRjaCBmaWVsZHMgd2l0aFxuICB8IEZpZWxkIF8gLT4gcGFyc2VfZmllbGRfZmFzdCB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHNcbiAgfCBFbXB0eSAtPlxuICAgIChtYXRjaCBzZXhwcyB3aXRoXG4gICAgIHwgW10gLT4gKClcbiAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAoKiBleHRyYSBzZXhwcywgZGlzcGF0Y2ggdG8gc2xvdyBwYXRoICopXG4gICAgICAgcGFyc2VfcmVjb3JkX3Nsb3cgfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuIHNleHBzKVxuOztcblxubGV0IHBhcnNlX3JlY29yZF9mYXN0IH5maWVsZHMgfmluZGV4IH5leHRyYSBzZXhwcyA9XG4gIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuOjAgc2V4cHNcbjs7XG5cbigqIEVudHJ5IHBvaW50cy4gKilcblxubGV0IHJlY29yZF9vZl9zZXhwc1xuICAgICAgfmNhbGxlclxuICAgICAgfmNvbnRleHRcbiAgICAgIH5maWVsZHNcbiAgICAgIH5pbmRleF9vZl9maWVsZFxuICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgfmNyZWF0ZVxuICAgICAgc2V4cHNcbiAgPVxuICBsZXQgYWxsb3dfZXh0cmFfZmllbGRzID1cbiAgICBhbGxvd19leHRyYV9maWVsZHMgfHwgbm90ICFTZXhwX2NvbnYucmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkc1xuICBpblxuICBtYXRjaFxuICAgIHBhcnNlX3JlY29yZF9mYXN0IH5maWVsZHMgfmluZGV4OmluZGV4X29mX2ZpZWxkIH5leHRyYTphbGxvd19leHRyYV9maWVsZHMgc2V4cHNcbiAgd2l0aFxuICB8IHZhbHVlIC0+IGNyZWF0ZSB2YWx1ZVxuICB8IGV4Y2VwdGlvbiBNYWxmb3JtZWQgbWFsZm9ybWVkIC0+IE1hbGZvcm1lZC5yYWlzZSBtYWxmb3JtZWQgfmNhbGxlciB+Y29udGV4dFxuOztcblxubGV0IHJlY29yZF9vZl9zZXhwIH5jYWxsZXIgfmZpZWxkcyB+aW5kZXhfb2ZfZmllbGQgfmFsbG93X2V4dHJhX2ZpZWxkcyB+Y3JlYXRlIHNleHAgPVxuICBtYXRjaCAoc2V4cCA6IFNleHAudCkgd2l0aFxuICB8IEF0b20gXyBhcyBjb250ZXh0IC0+IHJlY29yZF9saXN0X2luc3RlYWRfYXRvbSBjYWxsZXIgY29udGV4dFxuICB8IExpc3Qgc2V4cHMgYXMgY29udGV4dCAtPlxuICAgIHJlY29yZF9vZl9zZXhwc1xuICAgICAgfmNhbGxlclxuICAgICAgfmNvbnRleHRcbiAgICAgIH5maWVsZHNcbiAgICAgIH5pbmRleF9vZl9maWVsZFxuICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgfmNyZWF0ZVxuICAgICAgc2V4cHNcbjs7XG4iLCIoKiBUaGUgW2dsb2JhbGl6ZV97Ym9vbCxjaGFyLHVuaXR9XSBmdW5jdGlvbnMgYXJlIHdyaXR0ZW4gYXMgbWF0Y2hlcyBwbHVzIHRoZSBpZGVudGl0eVxuICAgZnVuY3Rpb24gc28gdGhhdCB0aGUgdHlwZSBjaGVja2VyIGNhbiBnaXZlIHRoZW0gdGhlIGRlc2lyZWQgdHlwZSwgd2l0aG91dCBoYXZpbmcgdG8gZG9cbiAgIGFueXRoaW5nIHNwZWNpYWwuICBIb3dldmVyLCBbZ2xvYmFsaXplX2ludF0gY2Fubm90IGJlIHdyaXR0ZW4gdGhpcyB3YXksIHNvIHdlIHJlc29ydCB0b1xuICAgdXNpbmcgYW4gW2V4dGVybmFsXS4gKilcblxubGV0IGdsb2JhbGl6ZV9ib29sID0gZnVuY3Rpb25cbiAgfCAodHJ1ZSB8IGZhbHNlKSBhcyBiIC0+IGJcbjs7XG5cbmxldCBnbG9iYWxpemVfY2hhciA9IGZ1bmN0aW9uXG4gIHwgJ1xceDAwJyAuLiAnXFx4RkYnIGFzIGMgLT4gY1xuOztcblxuZXh0ZXJuYWwgZ2xvYmFsaXplX2Zsb2F0IDogKGZsb2F0W0Bsb2NhbF0pIC0+IGZsb2F0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX2ludCA6IChpbnRbQGxvY2FsXSkgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX2ludDMyIDogKGludDMyW0Bsb2NhbF0pIC0+IGludDMyID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX2ludDY0IDogKGludDY0W0Bsb2NhbF0pIC0+IGludDY0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX25hdGl2ZWludCA6IChuYXRpdmVpbnRbQGxvY2FsXSkgLT4gbmF0aXZlaW50ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX2J5dGVzIDogKGJ5dGVzW0Bsb2NhbF0pIC0+IGJ5dGVzID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgZ2xvYmFsaXplX3N0cmluZyA6IChzdHJpbmdbQGxvY2FsXSkgLT4gc3RyaW5nID0gXCJjYW1sX29ial9kdXBcIlxuXG5sZXQgZ2xvYmFsaXplX3VuaXQgKCgpIGFzIHUpID0gdVxuXG5leHRlcm5hbCBnbG9iYWxpemVfYXJyYXknIDogKCdhIGFycmF5W0Bsb2NhbF0pIC0+ICdhIGFycmF5ID0gXCJjYW1sX29ial9kdXBcIlxuXG5sZXQgZ2xvYmFsaXplX2FycmF5IF8gYSA9IGdsb2JhbGl6ZV9hcnJheScgYVxuXG5sZXQgcmVjIGdsb2JhbGl6ZV9saXN0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgeCA6OiB4cyAtPiBmIHggOjogZ2xvYmFsaXplX2xpc3QgZiB4c1xuOztcblxubGV0IGdsb2JhbGl6ZV9vcHRpb24gZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcbjs7XG5cbmxldCBnbG9iYWxpemVfcmVzdWx0IGdsb2JhbGl6ZV9hIGdsb2JhbGl6ZV9iIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBhIC0+IE9rIChnbG9iYWxpemVfYSBhKVxuICB8IEVycm9yIGIgLT4gRXJyb3IgKGdsb2JhbGl6ZV9iIGIpXG47O1xuXG5sZXQgZ2xvYmFsaXplX3JlZicgciA9IHJlZiAhclxubGV0IGdsb2JhbGl6ZV9yZWYgXyByID0gZ2xvYmFsaXplX3JlZicgclxuIiwiKCoqIFByaW1pdGl2ZXMgZm9yIHBvbHltb3JwaGljIGNvbXBhcmUuICopXG5cbigqXyBQb2x5bW9ycGhpYyBjb21waWxlciBwcmltaXRpdmVzIGNhbid0IGJlIGFsaWFzZXMgYXMgdGhpcyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoXG4gIGlubGluaW5nLiAoSWYgYWxpYXNlZCB3aXRob3V0IGEgdHlwZSBhbm5vdGF0aW9uLCB0aGUgY29tcGlsZXIgd291bGQgaW1wbGVtZW50IHRoZW1cbiAgdXNpbmcgdGhlIGdlbmVyaWMgY29kZSBkb2luZyBhIEMgY2FsbCwgYW5kIGl0J3MgdGhpcyBjb2RlIHRoYXQgd291bGQgYmUgaW5saW5lZC4pIEFzIGFcbiAgcmVzdWx0IHdlIGhhdmUgdG8gY29weSB0aGUgW2V4dGVybmFsIC4uLl0gZGVjbGFyYXRpb24gaGVyZS4gKilcbmV4dGVybmFsICggPCApIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPSApIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoID4gKSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA+PSApIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgYXNjZW5kaW5nIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmV4dGVybmFsIGVxdWFsIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbmxldCBkZXNjZW5kaW5nIHggeSA9IGNvbXBhcmUgeSB4XG5sZXQgbWF4IHggeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbmxldCBtaW4geCB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuIiwiKCogVGhpcyBtb2R1bGUgaXMgaW5jbHVkZWQgaW4gW0ltcG9ydF0uICBJdCBpcyBhaW1lZCBhdCBtb2R1bGVzIHRoYXQgZGVmaW5lIHRoZSBzdGFuZGFyZFxuICAgY29tYmluYXRvcnMgZm9yIFtzZXhwX29mXSwgW29mX3NleHBdLCBbY29tcGFyZV0gYW5kIFtoYXNoXSBhbmQgYXJlIGluY2x1ZGVkIGluXG4gICBbSW1wb3J0XS4gKilcblxuaW5jbHVkZSAoXG4gIFNoYWRvd19zdGRsaWIgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2hhZG93X3N0ZGxpYlxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgOj0gKCdhLCAnYiwgJ2MpIGZvcm1hdFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0IDo9ICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgKCogVGhlc2UgbW9kdWxlcyBhcmUgcmVkZWZpbmVkIGluIEJhc2UgKilcbiAgd2l0aCBtb2R1bGUgQXJyYXkgOj0gU2hhZG93X3N0ZGxpYi5BcnJheVxuICB3aXRoIG1vZHVsZSBBdG9taWMgOj0gU2hhZG93X3N0ZGxpYi5BdG9taWNcbiAgd2l0aCBtb2R1bGUgQm9vbCA6PSBTaGFkb3dfc3RkbGliLkJvb2xcbiAgd2l0aCBtb2R1bGUgQnVmZmVyIDo9IFNoYWRvd19zdGRsaWIuQnVmZmVyXG4gIHdpdGggbW9kdWxlIEJ5dGVzIDo9IFNoYWRvd19zdGRsaWIuQnl0ZXNcbiAgd2l0aCBtb2R1bGUgQ2hhciA6PSBTaGFkb3dfc3RkbGliLkNoYXJcbiAgd2l0aCBtb2R1bGUgRWl0aGVyIDo9IFNoYWRvd19zdGRsaWIuRWl0aGVyXG4gIHdpdGggbW9kdWxlIEZsb2F0IDo9IFNoYWRvd19zdGRsaWIuRmxvYXRcbiAgd2l0aCBtb2R1bGUgSGFzaHRibCA6PSBTaGFkb3dfc3RkbGliLkhhc2h0YmxcbiAgd2l0aCBtb2R1bGUgSW50IDo9IFNoYWRvd19zdGRsaWIuSW50XG4gIHdpdGggbW9kdWxlIEludDMyIDo9IFNoYWRvd19zdGRsaWIuSW50MzJcbiAgd2l0aCBtb2R1bGUgSW50NjQgOj0gU2hhZG93X3N0ZGxpYi5JbnQ2NFxuICB3aXRoIG1vZHVsZSBMYXp5IDo9IFNoYWRvd19zdGRsaWIuTGF6eVxuICB3aXRoIG1vZHVsZSBMaXN0IDo9IFNoYWRvd19zdGRsaWIuTGlzdFxuICB3aXRoIG1vZHVsZSBNYXAgOj0gU2hhZG93X3N0ZGxpYi5NYXBcbiAgd2l0aCBtb2R1bGUgTmF0aXZlaW50IDo9IFNoYWRvd19zdGRsaWIuTmF0aXZlaW50XG4gIHdpdGggbW9kdWxlIE9wdGlvbiA6PSBTaGFkb3dfc3RkbGliLk9wdGlvblxuICB3aXRoIG1vZHVsZSBQcmludGYgOj0gU2hhZG93X3N0ZGxpYi5QcmludGZcbiAgd2l0aCBtb2R1bGUgUXVldWUgOj0gU2hhZG93X3N0ZGxpYi5RdWV1ZVxuICB3aXRoIG1vZHVsZSBSYW5kb20gOj0gU2hhZG93X3N0ZGxpYi5SYW5kb21cbiAgd2l0aCBtb2R1bGUgUmVzdWx0IDo9IFNoYWRvd19zdGRsaWIuUmVzdWx0XG4gIHdpdGggbW9kdWxlIFNldCA6PSBTaGFkb3dfc3RkbGliLlNldFxuICB3aXRoIG1vZHVsZSBTdGFjayA6PSBTaGFkb3dfc3RkbGliLlN0YWNrXG4gIHdpdGggbW9kdWxlIFN0cmluZyA6PSBTaGFkb3dfc3RkbGliLlN0cmluZ1xuICB3aXRoIG1vZHVsZSBTeXMgOj0gU2hhZG93X3N0ZGxpYi5TeXNcbiAgd2l0aCBtb2R1bGUgVWNoYXIgOj0gU2hhZG93X3N0ZGxpYi5VY2hhclxuICB3aXRoIG1vZHVsZSBVbml0IDo9IFNoYWRvd19zdGRsaWIuVW5pdClcbiAgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxudHlwZSAnYSByZWYgPSAnYSBTdGRsaWIucmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuXG4oKiBSZXNodWZmbGUgW1N0ZGxpYl0gc28gdGhhdCB3ZSBjaG9vc2UgdGhlIG1vZHVsZXMgdXNpbmcgbGFiZWxzIHdoZW4gYXZhaWxhYmxlLiAqKVxubW9kdWxlIFN0ZGxpYiA9IHN0cnVjdFxuICBpbmNsdWRlIFN0ZGxpYlxuICBpbmNsdWRlIFN0ZGxpYi5TdGRMYWJlbHNcbiAgaW5jbHVkZSBTdGRsaWIuTW9yZUxhYmVsc1xuZW5kXG5cbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgoJ2EgLT4gJ2IpW0Bsb2NhbF9vcHRdKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuKCogVGhlc2UgbmVlZCB0byBiZSBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBnZXQgdGhlIGxhenkgYmVoYXZpb3IgKilcbmV4dGVybmFsICggJiYgKSA6IChib29sW0Bsb2NhbF9vcHRdKSAtPiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlc2VxdW9yXCJcbmV4dGVybmFsIG5vdCA6IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5cbigqIFdlIHVzZSBbT2JqLm1hZ2ljXSBoZXJlIGFzIG90aGVyIGltcGxlbWVudGF0aW9ucyBnZW5lcmF0ZSBhIGNvbmRpdGlvbmFsIGp1bXAgYW5kIHRoZVxuICAgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZSBpcyBub3RpY2VhYmxlLiAqKVxubGV0IGJvb2xfdG9faW50ICh4IDogYm9vbCkgOiBpbnQgPSBTdGRsaWIuT2JqLm1hZ2ljIHhcblxuKCogVGhpcyBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIGZvciB0aGUgd2FybmluZ3MgdG8gd29yayBwcm9wZXJseSAqKVxuZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxubGV0ICggIT0gKSA9IFN0ZGxpYi4oICE9IClcbmxldCAoICogKSA9IFN0ZGxpYi4oICogKVxubGV0ICggKiogKSA9IFN0ZGxpYi4oICoqIClcbmxldCAoICouICkgPSBTdGRsaWIuKCAqLiApXG5sZXQgKCArICkgPSBTdGRsaWIuKCArIClcbmxldCAoICsuICkgPSBTdGRsaWIuKCArLiApXG5sZXQgKCAtICkgPSBTdGRsaWIuKCAtIClcbmxldCAoIC0uICkgPSBTdGRsaWIuKCAtLiApXG5sZXQgKCAvICkgPSBTdGRsaWIuKCAvIClcbmxldCAoIC8uICkgPSBTdGRsaWIuKCAvLiApXG5cbm1vZHVsZSBQb2x5ID0gUG9seTAgKCoqIEBjYW5vbmljYWwgQmFzZS5Qb2x5ICopXG5cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICgqIERlY2xhcmVkIGFzIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9hcHBseV9YIHdyYXBwaW5nIGV2ZW4gd2hlblxuICAgICBjb21waWxpbmcgd2l0aG91dCBjcm9zcyBsaWJyYXJ5IGlubGluaW5nLiAqKVxuICBleHRlcm5hbCAoID0gKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG4gIGV4dGVybmFsICggPD4gKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG4gIGV4dGVybmFsICggPCApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+ICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuICBleHRlcm5hbCAoIDw9ICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbiAgZXh0ZXJuYWwgKCA+PSApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbiAgZXh0ZXJuYWwgZXF1YWwgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGxldCBhc2NlbmRpbmcgKHggOiBpbnQpIHkgPSBjb21wYXJlIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGludCkgeSA9IGNvbXBhcmUgeSB4XG4gIGxldCBtYXggKHggOiBpbnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBpbnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICAoKiBEZWNsYXJlZCBhcyBleHRlcm5hbHMgc28gdGhhdCB0aGUgY29tcGlsZXIgc2tpcHMgdGhlIGNhbWxfYXBwbHlfWCB3cmFwcGluZyBldmVuIHdoZW5cbiAgICAgY29tcGlsaW5nIHdpdGhvdXQgY3Jvc3MgbGlicmFyeSBpbmxpbmluZy4gKilcbiAgZXh0ZXJuYWwgKCA9IClcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+IClcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoIDwgKVxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gYm9vbFxuICAgID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPiApXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPj0gKVxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gYm9vbFxuICAgID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnRcbiAgICA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IFN0ZGxpYi5JbnQ2NC50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogU3RkbGliLkludDY0LnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBtYXggKHggOiBTdGRsaWIuSW50NjQudCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IFN0ZGxpYi5JbnQ2NC50KSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbm1vZHVsZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbm1vZHVsZSBCb29sX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBib29sKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogYm9vbCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGJvb2wpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogYm9vbCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogYm9vbCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBib29sKSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogYm9vbCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgQ2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogY2hhcikgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGNoYXIpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBjaGFyKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGNoYXIpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogY2hhcikgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IGNoYXIpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIFVjaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgaSB4ID0gU3RkbGliLlVjaGFyLnRvX2ludCB4XG4gIGxldCAoIDwgKSAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA8PSApICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA8PiApICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD4gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA9ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPiApICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPiApIChpIHgpIChpIHkpXG4gIGxldCAoID49ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIChpIHgpIChpIHkpXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID1cbiAgICBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmFzY2VuZGluZyAoaSB4KSAoaSB5KVxuICA7O1xuXG4gIGxldCBkZXNjZW5kaW5nICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZGVzY2VuZGluZyAoaSB4KSAoaSB5KVxuICA7O1xuXG4gIGxldCBjb21wYXJlICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmUgKGkgeCkgKGkgeSlcbiAgbGV0IGVxdWFsICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmVxdWFsIChpIHgpIChpIHkpXG4gIGxldCBtYXggKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbm1vZHVsZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGZsb2F0KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogZmxvYXQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogZmxvYXQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGZsb2F0KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGZsb2F0KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogZmxvYXQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIFN0cmluZ19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IHN0cmluZykgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IHN0cmluZykgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IHN0cmluZykgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBzdHJpbmcpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBzdHJpbmcpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogYnl0ZXMpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBieXRlcykgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBieXRlcykgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogYnl0ZXMpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogYnl0ZXMpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBieXRlcykgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG4oKiBUaGlzIG5lZWRzIHRvIGJlIGRlZmluZWQgYXMgYW4gZXh0ZXJuYWwgc28gdGhhdCB0aGUgY29tcGlsZXIgY2FuIHNwZWNpYWxpemUgaXQgYXMgYVxuICAgZGlyZWN0IHNldCBvciBjYW1sX21vZGlmeSAqKVxuZXh0ZXJuYWwgKCA6PSApIDogKCdhIHJlZltAbG9jYWxfb3B0XSkgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5cbigqIFRoZXNlIG5lZWQgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBvdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdvbid0IHVuYm94XG4gICByZWZlcmVuY2VzICopXG5leHRlcm5hbCAoICEgKSA6ICgnYSByZWZbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsIHJlZiA6ICdhIC0+ICgnYSByZWZbQGxvY2FsX29wdF0pID0gXCIlbWFrZW11dGFibGVcIlxuXG5sZXQgKCBAICkgPSBTdGRsaWIuKCBAIClcbmxldCAoIF4gKSA9IFN0ZGxpYi4oIF4gKVxubGV0ICggfi0gKSA9IFN0ZGxpYi4oIH4tIClcbmxldCAoIH4tLiApID0gU3RkbGliLiggfi0uIClcbmxldCAoIGFzciApID0gU3RkbGliLiggYXNyIClcbmxldCAoIGxhbmQgKSA9IFN0ZGxpYi4oIGxhbmQgKVxubGV0IGxub3QgPSBTdGRsaWIubG5vdFxubGV0ICggbG9yICkgPSBTdGRsaWIuKCBsb3IgKVxubGV0ICggbHNsICkgPSBTdGRsaWIuKCBsc2wgKVxubGV0ICggbHNyICkgPSBTdGRsaWIuKCBsc3IgKVxubGV0ICggbHhvciApID0gU3RkbGliLiggbHhvciApXG5sZXQgKCBtb2QgKSA9IFN0ZGxpYi4oIG1vZCApXG5sZXQgYWJzID0gU3RkbGliLmFic1xubGV0IGZhaWx3aXRoID0gU3RkbGliLmZhaWx3aXRoXG5sZXQgZnN0ID0gU3RkbGliLmZzdFxubGV0IGludmFsaWRfYXJnID0gU3RkbGliLmludmFsaWRfYXJnXG5sZXQgc25kID0gU3RkbGliLnNuZFxuXG4oKiBbcmFpc2VdIG5lZWRzIHRvIGJlIGRlZmluZWQgYXMgYW4gZXh0ZXJuYWwgYXMgdGhlIGNvbXBpbGVyIGF1dG9tYXRpY2FsbHkgcmVwbGFjZXNcbiAgICclcmFpc2UnIGJ5ICclcmVyYWlzZScgd2hlbiBhcHByb3ByaWF0ZS4gKilcbmV4dGVybmFsIHJhaXNlIDogZXhuIC0+IF8gPSBcIiVyYWlzZVwiXG5cbmxldCBwaHlzX2VxdWFsID0gU3RkbGliLiggPT0gKVxuXG5leHRlcm5hbCBkZWNyIDogKGludCByZWZbQGxvY2FsX29wdF0pIC0+IHVuaXQgPSBcIiVkZWNyXCJcbmV4dGVybmFsIGluY3IgOiAoaW50IHJlZltAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWluY3JcIlxuXG4oKiB1c2VkIGJ5IHNleHBfY29udiwgd2hpY2ggZmxvYXQwIGRlcGVuZHMgb24gdGhyb3VnaCBvcHRpb24gKilcbmxldCBmbG9hdF9vZl9zdHJpbmcgPSBTdGRsaWIuZmxvYXRfb2Zfc3RyaW5nXG5cbigqIFthbV90ZXN0aW5nXSBpcyB1c2VkIGluIGEgZmV3IHBsYWNlcyB0byBiZWhhdmUgZGlmZmVyZW50bHkgd2hlbiBpbiB0ZXN0aW5nIG1vZGUsIHN1Y2hcbiAgIGFzIGluIFtyYW5kb20ubWxdLiAgW2FtX3Rlc3RpbmddIGlzIGltcGxlbWVudGVkIHVzaW5nIFtCYXNlX2FtX3Rlc3RpbmddLCBhIHdlYWsgQy9qc1xuICAgcHJpbWl0aXZlIHRoYXQgcmV0dXJucyBbZmFsc2VdLCBidXQgd2hlbiBsaW5raW5nIGFuIGlubGluZS10ZXN0LXJ1bm5lciBleGVjdXRhYmxlLCBpc1xuICAgb3ZlcnJpZGRlbiBieSBhbm90aGVyIHByaW1pdGl2ZSB0aGF0IHJldHVybnMgW3RydWVdLiAqKVxuZXh0ZXJuYWwgYW1fdGVzdGluZyA6IHVuaXQgLT4gYm9vbCA9IFwiQmFzZV9hbV90ZXN0aW5nXCJcblxubGV0IGFtX3Rlc3RpbmcgPSBhbV90ZXN0aW5nICgpXG4iLCIoKiBbSW50MF0gZGVmaW5lcyBpbnRlZ2VyIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHlcbiAgIGRlZmluZWQgaW4gdGVybXMgb2YgW1N0ZGxpYl0uIFtJbnQwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlXG4gICBwYXJ0IG9mIFtTdGRsaWJdIHRoYXQgW0Jhc2VdIHVzZXMgZm9yIGludGVnZXJzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlclxuICAgdGhhbiBpbnQwLm1sIHNob3VsZCB1c2UgdGhlc2UgZnVuY3Rpb25zIGRpcmVjdGx5IHRocm91Z2ggW1N0ZGxpYl0uIFtJbnQwXSBoYXNcbiAgIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLlxuXG4gICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGludHMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkludF0gaW4gYnVpbGRcbiAgIG9yZGVyIHNob3VsZCBkbzpcblxuICAge1tcbiAgICAgbW9kdWxlIEludCAgPSBJbnQwXG4gICBdfVxuXG4gICBEZWZpbmluZyBbbW9kdWxlIEludCA9IEludDBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHMgb2NhbWxkZXBcbiAgIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuSW50XS4gKilcblxubGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5zdHJpbmdfb2ZfaW50XG5sZXQgb2Zfc3RyaW5nID0gU3RkbGliLmludF9vZl9zdHJpbmdcbmxldCBvZl9zdHJpbmdfb3B0ID0gU3RkbGliLmludF9vZl9zdHJpbmdfb3B0XG5sZXQgdG9fZmxvYXQgPSBTdGRsaWIuZmxvYXRfb2ZfaW50XG5sZXQgb2ZfZmxvYXQgPSBTdGRsaWIuaW50X29mX2Zsb2F0XG5sZXQgbWF4X3ZhbHVlID0gU3RkbGliLm1heF9pbnRcbmxldCBtaW5fdmFsdWUgPSBTdGRsaWIubWluX2ludFxubGV0IHN1Y2MgPSBTdGRsaWIuc3VjY1xubGV0IHByZWQgPSBTdGRsaWIucHJlZFxuIiwib3BlbiEgSW1wb3J0MFxuaW5jbHVkZSBTdGRsaWIuUHJpbnRmXG5cbigqKiBmYWlsd2l0aCwgaW52YWxpZF9hcmcsIGFuZCBleGl0IGFjY2VwdGluZyBwcmludGYncyBmb3JtYXQuICopXG5cbmxldFtAaW5saW5lIG5ldmVyXSBmYWlsd2l0aGYgZm10ID0ga3NwcmludGYgKGZ1biBzICgpIC0+IGZhaWx3aXRoIHMpIGZtdFxubGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfYXJnZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgKCkgLT4gaW52YWxpZF9hcmcgcykgZm10XG4iLCIoKiBbU3lzMF0gZGVmaW5lcyBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW5cbiAgIHRlcm1zIG9mIFtTdGRsaWIuU3lzXS4gIFtTeXMwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2ZcbiAgIFtTdGRsaWIuU3lzXSB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIHN5cy5tbFxuICAgc2hvdWxkIHVzZSBbU3RkbGliLlN5c10uIFtTeXMwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZVxuICAgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSB0aGVzZVxuICAgZnVuY3Rpb25zIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5TeXNdIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuICAgW21vZHVsZSBTeXMgPSBTeXMwXS4gIERlZmluaW5nIFttb2R1bGUgU3lzID0gU3lzMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZVxuICAgaXQgcHJldmVudHMgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5TeXNdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5cbnR5cGUgYmFja2VuZF90eXBlID0gU3RkbGliLlN5cy5iYWNrZW5kX3R5cGUgPVxuICB8IE5hdGl2ZVxuICB8IEJ5dGVjb2RlXG4gIHwgT3RoZXIgb2Ygc3RyaW5nXG5cbmxldCBiYWNrZW5kX3R5cGUgPSBTdGRsaWIuU3lzLmJhY2tlbmRfdHlwZVxubGV0IGludGVyYWN0aXZlID0gU3RkbGliLlN5cy5pbnRlcmFjdGl2ZVxubGV0IG9zX3R5cGUgPSBTdGRsaWIuU3lzLm9zX3R5cGVcbmxldCB1bml4ID0gU3RkbGliLlN5cy51bml4XG5sZXQgd2luMzIgPSBTdGRsaWIuU3lzLndpbjMyXG5sZXQgY3lnd2luID0gU3RkbGliLlN5cy5jeWd3aW5cbmxldCB3b3JkX3NpemVfaW5fYml0cyA9IFN0ZGxpYi5TeXMud29yZF9zaXplXG5sZXQgaW50X3NpemVfaW5fYml0cyA9IFN0ZGxpYi5TeXMuaW50X3NpemVcbmxldCBiaWdfZW5kaWFuID0gU3RkbGliLlN5cy5iaWdfZW5kaWFuXG5sZXQgbWF4X3N0cmluZ19sZW5ndGggPSBTdGRsaWIuU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgbWF4X2FycmF5X2xlbmd0aCA9IFN0ZGxpYi5TeXMubWF4X2FycmF5X2xlbmd0aFxubGV0IHJ1bnRpbWVfdmFyaWFudCA9IFN0ZGxpYi5TeXMucnVudGltZV92YXJpYW50XG5sZXQgcnVudGltZV9wYXJhbWV0ZXJzID0gU3RkbGliLlN5cy5ydW50aW1lX3BhcmFtZXRlcnNcbmxldCBhcmd2ID0gU3RkbGliLlN5cy5hcmd2XG5sZXQgZ2V0X2FyZ3YgKCkgPSBTdGRsaWIuU3lzLmFyZ3ZcbmxldCBvY2FtbF92ZXJzaW9uID0gU3RkbGliLlN5cy5vY2FtbF92ZXJzaW9uXG5sZXQgZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MgPSBTdGRsaWIuU3lzLmVuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG5sZXQgcnVudGltZV93YXJuaW5nc19lbmFibGVkID0gU3RkbGliLlN5cy5ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcblxubGV0IGdldGVudl9leG4gdmFyID1cbiAgdHJ5IFN0ZGxpYi5TeXMuZ2V0ZW52IHZhciB3aXRoXG4gIHwgU3RkbGliLk5vdF9mb3VuZCAtPlxuICAgIFByaW50Zi5mYWlsd2l0aGYgXCJTeXMuZ2V0ZW52X2V4bjogZW52aXJvbm1lbnQgdmFyaWFibGUgJXMgaXMgbm90IHNldFwiIHZhciAoKVxuOztcblxubGV0IGdldGVudiB2YXIgPVxuICBtYXRjaCBTdGRsaWIuU3lzLmdldGVudiB2YXIgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxuZXh0ZXJuYWwgb3BhcXVlX2lkZW50aXR5IDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlb3BhcXVlXCJcbmV4dGVybmFsIG9wYXF1ZV9pZGVudGl0eV9nbG9iYWwgOiAnYSAtPiAnYSA9IFwiJW9wYXF1ZVwiXG5cbmV4Y2VwdGlvbiBCcmVhayA9IFN0ZGxpYi5TeXMuQnJlYWtcbiIsIigqIFtBcnJheTBdIGRlZmluZXMgYXJyYXkgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zXG4gICBvZiBbU3RkbGliLkFycmF5XS4gIFtBcnJheTBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZiBbU3RkbGliLkFycmF5XVxuICAgdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBhcnJheTAubWwgc2hvdWxkIHVzZSBbU3RkbGliLkFycmF5XS5cbiAgIFtBcnJheTBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGFycmF5cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQXJyYXldIGluIGJ1aWxkIG9yZGVyIHNob3VsZFxuICAgZG8gW21vZHVsZSBBcnJheSA9IEFycmF5MF0uICBUaGlzIGluY2x1ZGVzIHVzZXMgb2Ygc3Vic2NyaXB0IHN5bnRheCAoW3guKGkpXSwgW3guKGkpIDwtXG4gICBlXSksIHdoaWNoIHRoZSBPQ2FtbCBwYXJzZXIgZGVzdWdhcnMgaW50byBjYWxscyB0byBbQXJyYXkuZ2V0XSBhbmQgW0FycmF5LnNldF0uXG4gICBEZWZpbmluZyBbbW9kdWxlIEFycmF5ID0gQXJyYXkwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzIG9jYW1sZGVwIGZyb21cbiAgIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkFycmF5XS4gKilcblxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG4gIGV4dGVybmFsIGNyZWF0ZV9sb2NhbCA6IGludCAtPiAnYSAtPiAoJ2EgYXJyYXlbQGxvY2FsXSkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBpbnQgLT4gZmxvYXQgYXJyYXkgPSBcImNhbWxfbWFrZV9mbG9hdF92ZWN0XCJcbiAgZXh0ZXJuYWwgZ2V0IDogKCdhIGFycmF5W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogKCdhIGFycmF5W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuXG4gIGV4dGVybmFsIHNldFxuICAgIDogICgnYSBhcnJheVtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICA6ICAoJ2EgYXJyYXlbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgIDogICgnYSBhcnJheVtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICA6ICBzcmM6KCdhIGFycmF5W0Bsb2NhbF9vcHRdKVxuICAgIC0+IHNyY19wb3M6aW50XG4gICAgLT4gZHN0OignYSBhcnJheVtAbG9jYWxfb3B0XSlcbiAgICAtPiBkc3RfcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0XG4gICAgPSBcImNhbWxfYXJyYXlfYmxpdFwiXG5lbmRcblxuaW5jbHVkZSBBcnJheVxuXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5cbmxldCBjcmVhdGUgfmxlbiB4ID1cbiAgdHJ5IGNyZWF0ZSBsZW4geCB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IGludmFsaWRfYXJnZiBcIkFycmF5LmNyZWF0ZSB+bGVuOiVkOiBpbnZhbGlkIGxlbmd0aFwiIGxlbiAoKVxuOztcblxubGV0IGNyZWF0ZV9sb2NhbCB+bGVuIHggPVxuICBcbiAgICAodHJ5IGNyZWF0ZV9sb2NhbCBsZW4geCB3aXRoXG4gICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgaW52YWxpZF9hcmdmIFwiQXJyYXkuY3JlYXRlX2xvY2FsIH5sZW46JWQ6IGludmFsaWQgbGVuZ3RoXCIgbGVuICgpKVxuOztcblxubGV0IGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIH5sZW4gPVxuICB0cnkgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgbGVuIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICBpbnZhbGlkX2FyZ2YgXCJBcnJheS5jcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCB+bGVuOiVkOiBpbnZhbGlkIGxlbmd0aFwiIGxlbiAoKVxuOztcblxubGV0IGFwcGVuZCA9IFN0ZGxpYi5BcnJheS5hcHBlbmRcbmxldCBibGl0ID0gU3RkbGliLkFycmF5LmJsaXRcbmxldCBjb25jYXQgPSBTdGRsaWIuQXJyYXkuY29uY2F0XG5sZXQgY29weSA9IFN0ZGxpYi5BcnJheS5jb3B5XG5sZXQgZmlsbCA9IFN0ZGxpYi5BcnJheS5maWxsXG5cbmxldCBpbml0IGxlbiB+ZjooKGYgOiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBbfHxdXG4gIGVsc2UgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuaW5pdFwiXG4gIGVsc2UgKFxuICAgIGxldCByZXMgPSBjcmVhdGUgfmxlbiAoZiAwKSBpblxuICAgIGZvciBpID0gMSB0byBJbnQwLnByZWQgbGVuIGRvXG4gICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgZG9uZTtcbiAgICByZXMpXG47O1xuXG5sZXQgbWFrZV9tYXRyaXggPSBTdGRsaWIuQXJyYXkubWFrZV9tYXRyaXhcbmxldCBvZl9saXN0ID0gU3RkbGliLkFycmF5Lm9mX2xpc3RcbmxldCBzdWIgPSBTdGRsaWIuQXJyYXkuc3ViXG5sZXQgdG9fbGlzdCA9IFN0ZGxpYi5BcnJheS50b19saXN0XG5cbmxldCBmb2xkIHQgfmluaXQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCByID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmU7XG4gICFyXG47O1xuXG5sZXQgZm9sZF9yaWdodCB0IH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgfmluaXQgPVxuICBsZXQgciA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gbGVuZ3RoIHQgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IHQgaSkgIXJcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBpdGVyIHQgfmY6KChmIDogXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSB0IH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZVxuOztcblxubGV0IG1hcCB0IH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCByID0gY3JlYXRlIH5sZW4gKGYgKHVuc2FmZV9nZXQgdCAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgdCBpKSlcbiAgICBkb25lO1xuICAgIHIpXG47O1xuXG5sZXQgbWFwaSB0IH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHIgPSBjcmVhdGUgfmxlbiAoZiAwICh1bnNhZmVfZ2V0IHQgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgdCBpKSlcbiAgICBkb25lO1xuICAgIHIpXG47O1xuXG5sZXQgc3RhYmxlX3NvcnQgdCB+Y29tcGFyZSA9IFN0ZGxpYi5BcnJheS5zdGFibGVfc29ydCB0IH5jbXA6Y29tcGFyZVxuXG5sZXQgc3dhcCB0IGkgaiA9XG4gIGxldCBlbHRfaSA9IHQuKGkpIGluXG4gIGxldCBlbHRfaiA9IHQuKGopIGluXG4gIHVuc2FmZV9zZXQgdCBpIGVsdF9qO1xuICB1bnNhZmVfc2V0IHQgaiBlbHRfaVxuOztcbiIsIigqIFtDaGFyMF0gZGVmaW5lcyBjaGFyIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgW1N0ZGxpYi5DaGFyXS4gIFtDaGFyMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtTdGRsaWIuQ2hhcl0gdGhhdFxuICAgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gY2hhcjAubWwgc2hvdWxkIHVzZSBbU3RkbGliLkNoYXJdLlxuICAgW0NoYXIwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGxcbiAgIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBjaGFycyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQ2hhcl0gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIENoYXIgPSBDaGFyMF0uICBEZWZpbmluZyBbbW9kdWxlIENoYXIgPSBDaGFyMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdFxuICAgcHJldmVudHMgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5DaGFyXS4gKilcblxub3BlbiEgSW1wb3J0MFxuXG5sZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxubGV0IGVzY2FwZWQgPSBTdGRsaWIuQ2hhci5lc2NhcGVkXG5sZXQgbG93ZXJjYXNlID0gU3RkbGliLkNoYXIubG93ZXJjYXNlX2FzY2lpXG5sZXQgdG9faW50ID0gU3RkbGliLkNoYXIuY29kZVxubGV0IHVuc2FmZV9vZl9pbnQgPSBTdGRsaWIuQ2hhci51bnNhZmVfY2hyXG5sZXQgdXBwZXJjYXNlID0gU3RkbGliLkNoYXIudXBwZXJjYXNlX2FzY2lpXG5cbigqIFdlIHVzZSBvdXIgb3duIHJhbmdlIHRlc3Qgd2hlbiBjb252ZXJ0aW5nIGludGVnZXJzIHRvIGNoYXJzIHJhdGhlciB0aGFuXG4gICBjYWxsaW5nIFtTdGRsaWIuQ2hhci5jaHJdIGJlY2F1c2UgaXQncyBzaW1wbGUgYW5kIGl0IHNhdmVzIHVzIGEgZnVuY3Rpb24gY2FsbFxuICAgYW5kIHRoZSB0cnktd2l0aCAoZXhjZXB0aW9ucyBjb3N0LCBlc3BlY2lhbGx5IGluIHRoZSB3b3JsZCB3aXRoIGJhY2t0cmFjZXMpLiAqKVxubGV0IGludF9pc19vayBpID0gMCA8PSBpICYmIGkgPD0gMjU1XG5sZXQgbWluX3ZhbHVlID0gdW5zYWZlX29mX2ludCAwXG5sZXQgbWF4X3ZhbHVlID0gdW5zYWZlX29mX2ludCAyNTVcbmxldCBvZl9pbnQgaSA9IGlmIGludF9pc19vayBpIHRoZW4gU29tZSAodW5zYWZlX29mX2ludCBpKSBlbHNlIE5vbmVcblxubGV0IG9mX2ludF9leG4gaSA9XG4gIGlmIGludF9pc19vayBpXG4gIHRoZW4gdW5zYWZlX29mX2ludCBpXG4gIGVsc2UgZmFpbHdpdGhmIFwiQ2hhci5vZl9pbnRfZXhuIGdvdCBpbnRlZ2VyIG91dCBvZiByYW5nZTogJWRcIiBpICgpXG47O1xuXG5sZXQgZXF1YWwgKHQxIDogY2hhcikgdDIgPSBQb2x5LmVxdWFsIHQxIHQyXG4iLCIoKiBbTGlzdDBdIGRlZmluZXMgbGlzdCBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgIFtTdGRsaWIuTGlzdF0uICBbTGlzdDBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZiBbU3RkbGliLkxpc3RdIHRoYXRcbiAgIFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGxpc3QwLm1sIHNob3VsZCB1c2UgW1N0ZGxpYi5MaXN0XS5cbiAgIFtMaXN0MF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsXG4gICBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgbGlzdHMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkxpc3RdIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuICAgW21vZHVsZSBMaXN0ID0gTGlzdDBdLiAgRGVmaW5pbmcgW21vZHVsZSBMaXN0ID0gTGlzdDBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXRcbiAgIHByZXZlbnRzIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuTGlzdF0uICopXG5cblxub3BlbiEgSW1wb3J0MFxuXG5sZXQgaGRfZXhuID0gU3RkbGliLkxpc3QuaGRcbmxldCBsZW5ndGggPSBTdGRsaWIuTGlzdC5sZW5ndGhcbmxldCByZXZfYXBwZW5kID0gU3RkbGliLkxpc3QucmV2X2FwcGVuZFxubGV0IHRsX2V4biA9IFN0ZGxpYi5MaXN0LnRsXG5sZXQgdW56aXAgPSBTdGRsaWIuTGlzdC5zcGxpdFxuXG4oKiBTb21lIG9mIHRoZXNlIGFyZSBldGEgZXhwYW5kZWQgaW4gb3JkZXIgdG8gcGVybXV0ZSBwYXJhbWV0ZXIgb3JkZXIgdG8gZm9sbG93IEJhc2VcbiAgIGNvbnZlbnRpb25zLiAqKVxuXG5sZXQgcmVjIGV4aXN0cyB0IH5mOihmIFtAbG9jYWxdKSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IGZhbHNlXG4gIHwgeCA6OiB4cyAtPiBpZiBmIHggdGhlbiB0cnVlIGVsc2UgZXhpc3RzIHhzIH5mXG47O1xuXG5sZXQgcmVjIGV4aXN0czJfb2sgbDEgbDIgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IGZhbHNlXG4gIHwgYTEgOjogbDEsIGEyIDo6IGwyIC0+IGYgYTEgYTIgfHwgZXhpc3RzMl9vayBsMSBsMiB+ZlxuICB8IF8sIF8gLT4gaW52YWxpZF9hcmcgXCJMaXN0LmV4aXN0czJcIlxuOztcblxubGV0IHJlYyBmb2xkIHQgfmluaXQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IGluaXRcbiAgfCBhIDo6IGwgLT4gZm9sZCBsIH5pbml0OihmIGluaXQgYSkgfmZcbjs7XG5cbmxldCByZWMgZm9sZDJfb2sgbDEgbDIgfmluaXQgfmY6KChmIDogXyAtPiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gaW5pdFxuICB8IGExIDo6IGwxLCBhMiA6OiBsMiAtPiBmb2xkMl9vayBsMSBsMiB+ZiB+aW5pdDooZiBpbml0IGExIGEyKVxuICB8IF8sIF8gLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfbGVmdDJcIlxuOztcblxubGV0IGZvcl9hbGwgdCB+ZjooZiBbQGxvY2FsXSkgPSBub3QgKGV4aXN0cyB0IH5mOihmdW4geCAtPiBub3QgKGYgeCkpKVxuXG5sZXQgcmVjIGZvcl9hbGwyX29rIGwxIGwyIH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgYTEgOjogbDEsIGEyIDo6IGwyIC0+IGYgYTEgYTIgJiYgZm9yX2FsbDJfb2sgbDEgbDIgfmZcbiAgfCBfLCBfIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb3JfYWxsMlwiXG47O1xuXG5sZXQgcmVjIGl0ZXIgdCB+ZjooKGYgOiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgYSA6OiBsIC0+XG4gICAgZiBhO1xuICAgIGl0ZXIgbCB+ZlxuOztcblxubGV0IHJlYyBpdGVyMl9vayBsMSBsMiB+ZjooKGYgOiBfIC0+IF8gLT4gdW5pdCkgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gKClcbiAgfCBhMSA6OiBsMSwgYTIgOjogbDIgLT5cbiAgICBmIGExIGEyO1xuICAgIGl0ZXIyX29rIGwxIGwyIH5mXG4gIHwgXywgXyAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuaXRlcjJcIlxuOztcblxubGV0IHJlYyBub250YWlsX21hcCB0IH5mOihmIFtAbG9jYWxdKSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgeCA6OiB4cyAtPlxuICAgIGxldCB5ID0gZiB4IGluXG4gICAgeSA6OiBub250YWlsX21hcCB4cyB+ZlxuOztcblxubGV0IG5vbnRhaWxfbWFwaSB0IH5mID0gU3RkbGliLkxpc3QubWFwaSB0IH5mXG5sZXQgcGFydGl0aW9uIHQgfmYgPSBTdGRsaWIuTGlzdC5wYXJ0aXRpb24gdCB+ZlxuXG5sZXQgcmV2X21hcCA9XG4gIGxldCByZWMgcm1hcF9mIGYgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCBhIDo6IGwgLT4gcm1hcF9mIGYgKGYgYSA6OiBhY2N1KSBsXG4gIGluXG4gIGZ1biBsIH5mOihmIFtAbG9jYWxdKSAtPiBybWFwX2YgZiBbXSBsXG47O1xuXG5sZXQgcmV2X21hcDJfb2sgPVxuICBsZXQgcmVjIHJtYXAyX2YgZiBhY2N1IGwxIGwyID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIFtdIC0+IGFjY3VcbiAgICB8IGExIDo6IGwxLCBhMiA6OiBsMiAtPiBybWFwMl9mIGYgKGYgYTEgYTIgOjogYWNjdSkgbDEgbDJcbiAgICB8IF8sIF8gLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJldl9tYXAyXCJcbiAgaW5cbiAgZnVuIGwxIGwyIH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgLT4gcm1hcDJfZiBmIFtdIGwxIGwyXG47O1xuXG5sZXQgc29ydCBsIH5jb21wYXJlID0gU3RkbGliLkxpc3Quc29ydCBsIH5jbXA6Y29tcGFyZVxubGV0IHN0YWJsZV9zb3J0IGwgfmNvbXBhcmUgPSBTdGRsaWIuTGlzdC5zdGFibGVfc29ydCBsIH5jbXA6Y29tcGFyZVxuXG5sZXQgcmV2ID0gZnVuY3Rpb25cbiAgfCAoW10gfCBbIF8gXSkgYXMgcmVzIC0+IHJlc1xuICB8IHggOjogeSA6OiByZXN0IC0+IHJldl9hcHBlbmQgcmVzdCBbIHk7IHggXVxuOztcblxubGV0IGZvbGRfcmlnaHQgbCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pIH5pbml0ID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gaW5pdCAoKiBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBbfmZdIGJlbG93ICopXG4gIHwgXyAtPiBmb2xkIH5mOihmdW4gYSBiIC0+IGYgYiBhKSB+aW5pdCAocmV2IGwpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX3JpZ2h0Ml9vayBsMSBsMiB+ZjooKGYgOiBfIC0+IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgfmluaXQgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiBpbml0ICgqIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIFt+Zl0gYmVsb3cgKilcbiAgfCBfLCBfIC0+IGZvbGQyX29rIH5mOihmdW4gYSBiIGMgLT4gZiBiIGMgYSkgfmluaXQgKHJldiBsMSkgKHJldiBsMikgW0Bub250YWlsXVxuOztcbiIsIigqXG4gICBUaGlzIGlzIHRoZSBpbnRlcmZhY2UgdG8gdGhlIHJ1bnRpbWUgc3VwcG9ydCBmb3IgW3BweF9oYXNoXS5cblxuICAgVGhlIFtwcHhfaGFzaF0gc3ludGF4IGV4dGVuc2lvbiBzdXBwb3J0czogW0BAZGVyaXZpbmcgaGFzaF0gYW5kIFslaGFzaF9mb2xkOiBUWVBFXSBhbmRcbiAgIFslaGFzaDogVFlQRV1cblxuICAgRm9yIHR5cGUgW3RdIGEgZnVuY3Rpb24gW2hhc2hfZm9sZF90XSBvZiB0eXBlIFtIYXNoLnN0YXRlIC0+IHQgLT4gSGFzaC5zdGF0ZV0gaXNcbiAgIGdlbmVyYXRlZC5cblxuICAgVGhlIGdlbmVyYXRlZCBbaGFzaF9mb2xkXzxUPl0gZnVuY3Rpb24gaXMgY29tcG9zaXRpb25hbCwgZm9sbG93aW5nIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlXG4gICB0eXBlOyBhbGxvd2luZyB1c2VyIG92ZXJyaWRlcyBhdCBldmVyeSBsZXZlbC4gVGhpcyBpcyBpbiBjb250cmFzdCB0byBvY2FtbCdzIGJ1aWx0aW5cbiAgIHBvbHltb3JwaGljIGhhc2hpbmcgW0hhc2h0YmwuaGFzaF0gd2hpY2ggaWdub3JlcyB1c2VyIG92ZXJyaWRlcy5cblxuICAgVGhlIGdlbmVyYXRvciBhbHNvIHByb3ZpZGVzIGEgZGlyZWN0IGhhc2gtZnVuY3Rpb24gW2hhc2hdIChuYW1lZCBbaGFzaF88VD5dIHdoZW4gPFQ+ICE9XG4gICBcInRcIikgb2YgdHlwZTogW3QgLT4gSGFzaC5oYXNoX3ZhbHVlXS5cblxuICAgVGhlIGZvbGRpbmcgaGFzaCBmdW5jdGlvbiBjYW4gYmUgYWNjZXNzZWQgYXMgWyVoYXNoX2ZvbGQ6IFRZUEVdXG4gICBUaGUgZGlyZWN0IGhhc2ggZnVuY3Rpb24gY2FuIGJlIGFjY2Vzc2VkIGFzIFslaGFzaDogVFlQRV1cbiopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIENoYXIgPSBDaGFyMFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgSGFzaF9pbnRmXG5cbigqKiBCdWlsdGluIGZvbGRpbmctc3R5bGUgaGFzaCBmdW5jdGlvbnMsIGFic3RyYWN0ZWQgb3ZlciBbSGFzaF9pbnRmLlNdICopXG5tb2R1bGUgRm9sZGluZyAoSGFzaCA6IEhhc2hfaW50Zi5TKSA6XG4gIEhhc2hfaW50Zi5CdWlsdGluX2ludGZcbiAgd2l0aCB0eXBlIHN0YXRlID0gSGFzaC5zdGF0ZVxuICAgYW5kIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZSA9IHN0cnVjdFxuICB0eXBlIHN0YXRlID0gSGFzaC5zdGF0ZVxuICB0eXBlIGhhc2hfdmFsdWUgPSBIYXNoLmhhc2hfdmFsdWVcbiAgdHlwZSAnYSBmb2xkZXIgPSBzdGF0ZSAtPiAnYSAtPiBzdGF0ZVxuXG4gIGxldCBoYXNoX2ZvbGRfdW5pdCBzICgpID0gc1xuICBsZXQgaGFzaF9mb2xkX2ludCA9IEhhc2guZm9sZF9pbnRcbiAgbGV0IGhhc2hfZm9sZF9pbnQ2NCA9IEhhc2guZm9sZF9pbnQ2NFxuICBsZXQgaGFzaF9mb2xkX2Zsb2F0ID0gSGFzaC5mb2xkX2Zsb2F0XG4gIGxldCBoYXNoX2ZvbGRfc3RyaW5nID0gSGFzaC5mb2xkX3N0cmluZ1xuICBsZXQgYXNfaW50IGYgcyB4ID0gaGFzaF9mb2xkX2ludCBzIChmIHgpXG5cbiAgKCogVGhpcyBpZ25vcmVzIHRoZSBzaWduIGJpdCBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYnV0IGl0J3MgdW5saWtlbHkgdG8gbGVhZCB0b1xuICAgICBmcmVxdWVudCBjb2xsaXNpb25zIChtaW5fdmFsdWUgY29sbGlkaW5nIHdpdGggMCBpcyB0aGUgbW9zdCBsaWtlbHkgb25lKS4gICopXG4gIGxldCBoYXNoX2ZvbGRfaW50MzIgPSBhc19pbnQgU3RkbGliLkludDMyLnRvX2ludFxuICBsZXQgaGFzaF9mb2xkX2NoYXIgPSBhc19pbnQgQ2hhci50b19pbnRcblxuICBsZXQgaGFzaF9mb2xkX2Jvb2wgPVxuICAgIGFzX2ludCAoZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiAxXG4gICAgICB8IGZhbHNlIC0+IDApXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9uYXRpdmVpbnQgcyB4ID0gaGFzaF9mb2xkX2ludDY0IHMgKFN0ZGxpYi5JbnQ2NC5vZl9uYXRpdmVpbnQgeClcblxuICBsZXQgaGFzaF9mb2xkX29wdGlvbiBoYXNoX2ZvbGRfZWxlbSBzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gaGFzaF9mb2xkX2ludCBzIDBcbiAgICB8IFNvbWUgeCAtPiBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2ludCBzIDEpIHhcbiAgOztcblxuICBsZXQgcmVjIGhhc2hfZm9sZF9saXN0X2JvZHkgaGFzaF9mb2xkX2VsZW0gcyBsaXN0ID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IHNcbiAgICB8IHggOjogeHMgLT4gaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2VsZW0gcyB4KSB4c1xuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfbGlzdCBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgPVxuICAgICgqIFRoZSBbbGVuZ3RoXSBvZiB0aGUgbGlzdCBtdXN0IGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBoYXNoLXN0YXRlIHNvIHZhbHVlcyBvZlxuICAgICAgIHR5cGVzIHN1Y2ggYXMgW3VuaXQgbGlzdF0gLSAoW10sIFsoKV0sIFsoKTsoKV0sLi4pIGFyZSBoYXNoZWQgZGlmZmVyZW50bHkuICopXG4gICAgKCogVGhlIFtsZW5ndGhdIG11c3QgY29tZSBiZWZvcmUgdGhlIGVsZW1lbnRzIHRvIGF2b2lkIGEgdmlvbGF0aW9uIG9mIHRoZSBydWxlXG4gICAgICAgZW5mb3JjZWQgYnkgUGVyZmVjdF9oYXNoLiAqKVxuICAgIGxldCBzID0gaGFzaF9mb2xkX2ludCBzIChMaXN0Lmxlbmd0aCBsaXN0KSBpblxuICAgIGxldCBzID0gaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgaW5cbiAgICBzXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9sYXp5X3QgaGFzaF9mb2xkX2VsZW0gcyB4ID0gaGFzaF9mb2xkX2VsZW0gcyAoU3RkbGliLkxhenkuZm9yY2UgeClcbiAgbGV0IGhhc2hfZm9sZF9yZWZfZnJvemVuIGhhc2hfZm9sZF9lbGVtIHMgeCA9IGhhc2hfZm9sZF9lbGVtIHMgIXhcblxuICBsZXQgcmVjIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faSBoYXNoX2ZvbGRfZWxlbSBzIGFycmF5IGkgPVxuICAgIGlmIGkgPSBBcnJheS5sZW5ndGggYXJyYXlcbiAgICB0aGVuIHNcbiAgICBlbHNlIChcbiAgICAgIGxldCBlID0gQXJyYXkudW5zYWZlX2dldCBhcnJheSBpIGluXG4gICAgICBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuX2kgaGFzaF9mb2xkX2VsZW0gKGhhc2hfZm9sZF9lbGVtIHMgZSkgYXJyYXkgKGkgKyAxKSlcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2FycmF5X2Zyb3plbiBoYXNoX2ZvbGRfZWxlbSBzIGFycmF5ID1cbiAgICBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuX2lcbiAgICAgICgqIFtsZW5ndGhdIG11c3QgYmUgaW5jb3Jwb3JhdGVkIGZvciBhcnJheXMsIGFzIGl0IGlzIGZvciBsaXN0cy4gU2VlIGNvbW1lbnQgYWJvdmUgKilcbiAgICAgIGhhc2hfZm9sZF9lbGVtXG4gICAgICAoaGFzaF9mb2xkX2ludCBzIChBcnJheS5sZW5ndGggYXJyYXkpKVxuICAgICAgYXJyYXlcbiAgICAgIDBcbiAgOztcblxuICAoKiB0aGUgZHVwbGljYXRpb24gaGVyZSBpcyBiZWNhdXNlIHdlIHRoaW5rXG4gICAgIG9jYW1sIGNhbid0IGVsaW1pbmF0ZSBpbmRpcmVjdCBmdW5jdGlvbiBjYWxscyBvdGhlcndpc2UuICopXG4gIGxldCBoYXNoX25hdGl2ZWludCB4ID1cbiAgICBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfbmF0aXZlaW50IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgOztcblxuICBsZXQgaGFzaF9pbnQ2NCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2ludDY0IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfaW50MzIgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9pbnQzMiAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2NoYXIgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9jaGFyIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfaW50IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfaW50IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfYm9vbCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2Jvb2wgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuXG4gIGxldCBoYXNoX3N0cmluZyB4ID1cbiAgICBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfc3RyaW5nIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgOztcblxuICBsZXQgaGFzaF9mbG9hdCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2Zsb2F0IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfdW5pdCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3VuaXQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuZW5kXG5cbm1vZHVsZSBGIChIYXNoIDogSGFzaF9pbnRmLlMpIDpcbiAgSGFzaF9pbnRmLkZ1bGxcbiAgd2l0aCB0eXBlIGhhc2hfdmFsdWUgPSBIYXNoLmhhc2hfdmFsdWVcbiAgIGFuZCB0eXBlIHN0YXRlID0gSGFzaC5zdGF0ZVxuICAgYW5kIHR5cGUgc2VlZCA9IEhhc2guc2VlZCA9IHN0cnVjdFxuICBpbmNsdWRlIEhhc2hcblxuICB0eXBlICdhIGZvbGRlciA9IHN0YXRlIC0+ICdhIC0+IHN0YXRlXG5cbiAgbGV0IGNyZWF0ZSA/c2VlZCAoKSA9IHJlc2V0ID9zZWVkIChhbGxvYyAoKSlcbiAgbGV0IG9mX2ZvbGQgaGFzaF9mb2xkX3QgdCA9IGdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdCAoY3JlYXRlICgpKSB0KVxuXG4gIG1vZHVsZSBCdWlsdGluID0gRm9sZGluZyAoSGFzaClcblxuICBsZXQgcnVuID9zZWVkIGZvbGRlciB4ID1cbiAgICBIYXNoLmdldF9oYXNoX3ZhbHVlIChmb2xkZXIgKEhhc2gucmVzZXQgP3NlZWQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnRlcm5hbGhhc2ggOiBzaWdcbiAgaW5jbHVkZVxuICAgIEhhc2hfaW50Zi5TXG4gICAgd2l0aCB0eXBlIHN0YXRlID0gQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXMuc3RhdGVcbiAgICAgKCogV2UgZ2l2ZSBhIGNvbmNyZXRlIHR5cGUgZm9yIFtzdGF0ZV0sIGFsYmVpdCBvbmx5IHBhcnRpYWxseSBleHBvc2VkIChzZWVcbiAgICAgICAgQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXMpLCBzbyB0aGF0IGl0IHVuaWZpZXMgd2l0aCB0aGUgc2FtZSB0eXBlIGluIFtCYXNlX2Jvb3RdLFxuICAgICAgICBhbmQgdG8gYWxsb3cgb3B0aW1pemF0aW9ucyBmb3IgdGhlIGltbWVkaWF0ZSB0eXBlLiAqKVxuICAgICBhbmQgdHlwZSBzZWVkID0gQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXMuc2VlZFxuICAgICBhbmQgdHlwZSBoYXNoX3ZhbHVlID0gQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXMuaGFzaF92YWx1ZVxuXG4gIGV4dGVybmFsIGZvbGRfaW50NjQgOiBzdGF0ZSAtPiBpbnQ2NCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZm9sZF9pbnQgOiBzdGF0ZSAtPiBpbnQgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50XCIgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBmb2xkX2Zsb2F0IDogc3RhdGUgLT4gZmxvYXQgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfZmxvYXRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGZvbGRfc3RyaW5nIDogc3RhdGUgLT4gc3RyaW5nIC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX3N0cmluZ1wiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZ2V0X2hhc2hfdmFsdWUgOiBzdGF0ZSAtPiBoYXNoX3ZhbHVlID0gXCJCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZVwiXG4gIFtAQG5vYWxsb2NdXG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGRlc2NyaXB0aW9uID0gXCJpbnRlcm5hbGhhc2hcIlxuXG4gIGluY2x1ZGUgQmFzZV9pbnRlcm5hbGhhc2hfdHlwZXNcblxuICBsZXQgYWxsb2MgKCkgPSBjcmVhdGVfc2VlZGVkIDBcbiAgbGV0IHJlc2V0ID8oc2VlZCA9IDApIF90ID0gY3JlYXRlX3NlZWRlZCBzZWVkXG5cbiAgbW9kdWxlIEZvcl90ZXN0cyA9IHN0cnVjdFxuICAgIGxldCBjb21wYXJlX3N0YXRlIChhIDogc3RhdGUpIChiIDogc3RhdGUpID0gY29tcGFyZSAoYSA6PiBpbnQpIChiIDo+IGludClcbiAgICBsZXQgc3RhdGVfdG9fc3RyaW5nIChzdGF0ZSA6IHN0YXRlKSA9IEludC50b19zdHJpbmcgKHN0YXRlIDo+IGludClcbiAgZW5kXG5lbmRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbnRlcm5hbGhhc2hcblxuICB0eXBlICdhIGZvbGRlciA9IHN0YXRlIC0+ICdhIC0+IHN0YXRlXG5cbiAgbGV0IGNyZWF0ZSA/c2VlZCAoKSA9IHJlc2V0ID9zZWVkIChhbGxvYyAoKSlcbiAgbGV0IHJ1biA/c2VlZCBmb2xkZXIgeCA9IGdldF9oYXNoX3ZhbHVlIChmb2xkZXIgKHJlc2V0ID9zZWVkIChhbGxvYyAoKSkpIHgpXG4gIGxldCBvZl9mb2xkIGhhc2hfZm9sZF90IHQgPSBnZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3QgKGNyZWF0ZSAoKSkgdClcblxuICBtb2R1bGUgQnVpbHRpbiA9IHN0cnVjdFxuICAgIG1vZHVsZSBGb2xkaW5nID0gRm9sZGluZyAoSW50ZXJuYWxoYXNoKVxuICAgIGluY2x1ZGUgRm9sZGluZ1xuXG4gICAgKCogW0ZvbGRpbmddIHByb3ZpZGVzIHNvbWUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSBbaGFzaF8qXSBmdW5jdGlvbnMgYmVsb3csXG4gICAgICAgYnV0IHRoZXkgYXJlIGluZWZmaWNpZW50IGZvciBzb21lIHVzZS1jYXNlcyBiZWNhdXNlIG9mIHRoZSB1c2Ugb2YgdGhlIFtoYXNoX2ZvbGRdXG4gICAgICAgZnVuY3Rpb25zLiBBdCB0aGlzIHBvaW50LCB0aGUgW2hhc2hfdmFsdWVdIHR5cGUgaGFzIGJlZW4gZml4ZWQgdG8gW2ludF0sIHNvIHRoaXNcbiAgICAgICBtb2R1bGUgY2FuIHByb3ZpZGUgc3BlY2lhbGl6ZWQgaW1wbGVtZW50YXRpb25zLiAqKVxuXG4gICAgbGV0IGhhc2hfY2hhciA9IENoYXIwLnRvX2ludFxuXG4gICAgKCogVGhpcyBoYXNoIHdhcyBjaG9zZW4gZnJvbSBoZXJlOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9iYWRib3kvNjI2Nzc0M1xuXG4gICAgICAgSXQgYXR0ZW1wdHMgdG8gZnVsZmlsbCB0aGUgcHJpbWFyeSBnb2FscyBvZiBhIG5vbi1jcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb246XG5cbiAgICAgICAtIGEgYml0IGNoYW5nZSBpbiB0aGUgaW5wdXQgc2hvdWxkIGNoYW5nZSB+MS8yIG9mIHRoZSBvdXRwdXQgYml0c1xuICAgICAgIC0gdGhlIG91dHB1dCBzaG91bGQgYmUgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgb3V0cHV0IHJhbmdlXG4gICAgICAgLSBpbnB1dHMgdGhhdCBhcmUgY2xvc2UgdG8gZWFjaCBvdGhlciBzaG91bGRuJ3QgbGVhZCB0byBvdXRwdXRzIHRoYXQgYXJlIGNsb3NlIHRvXG4gICAgICAgICBlYWNoIG90aGVyLlxuICAgICAgIC0gYWxsIGJpdHMgb2YgdGhlIGlucHV0IGFyZSB1c2VkIGluIGdlbmVyYXRpbmcgdGhlIG91dHB1dFxuXG4gICAgICAgSW4gb3VyIGNhc2Ugd2UgYWxzbyB3YW50IGl0IHRvIGJlIGZhc3QsIG5vbi1hbGxvY2F0aW5nLCBhbmQgaW5saW5hYmxlLiAgKilcbiAgICBsZXRbQGlubGluZSBhbHdheXNdIGhhc2hfaW50ICh0IDogaW50KSA9XG4gICAgICBsZXQgdCA9IGxub3QgdCArICh0IGxzbCAyMSkgaW5cbiAgICAgIGxldCB0ID0gdCBseG9yICh0IGxzciAyNCkgaW5cbiAgICAgIGxldCB0ID0gdCArICh0IGxzbCAzKSArICh0IGxzbCA4KSBpblxuICAgICAgbGV0IHQgPSB0IGx4b3IgKHQgbHNyIDE0KSBpblxuICAgICAgbGV0IHQgPSB0ICsgKHQgbHNsIDIpICsgKHQgbHNsIDQpIGluXG4gICAgICBsZXQgdCA9IHQgbHhvciAodCBsc3IgMjgpIGluXG4gICAgICB0ICsgKHQgbHNsIDMxKVxuICAgIDs7XG5cbiAgICBsZXQgaGFzaF9ib29sIHggPSBpZiB4IHRoZW4gMSBlbHNlIDBcblxuICAgIGV4dGVybmFsIGhhc2hfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIkJhc2VfaGFzaF9kb3VibGVcIiBbQEBub2FsbG9jXVxuXG4gICAgbGV0IGhhc2hfdW5pdCAoKSA9IDBcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBUXG4iLCJvcGVuIEltcG9ydDBcblxubGV0IGNvbXBhcmVfYWJzdHJhY3QgfnR5cGVfbmFtZSBfIF8gPVxuICBQcmludGYua3NwcmludGZcbiAgICBmYWlsd2l0aFxuICAgIFwiQ29tcGFyZSBjYWxsZWQgb24gdGhlIHR5cGUgJXMsIHdoaWNoIGlzIGFic3RyYWN0IGluIGFuIGltcGxlbWVudGF0aW9uLlwiXG4gICAgdHlwZV9uYW1lXG47O1xuXG5sZXQgZXF1YWxfYWJzdHJhY3QgfnR5cGVfbmFtZSBfIF8gPVxuICBQcmludGYua3NwcmludGZcbiAgICBmYWlsd2l0aFxuICAgIFwiRXF1YWwgY2FsbGVkIG9uIHRoZSB0eXBlICVzLCB3aGljaCBpcyBhYnN0cmFjdCBpbiBhbiBpbXBsZW1lbnRhdGlvbi5cIlxuICAgIHR5cGVfbmFtZVxuOztcblxudHlwZSAnYSBjb21wYXJlID0gJ2EgLT4gJ2EgLT4gaW50XG50eXBlICdhIGVxdWFsID0gJ2EgLT4gJ2EgLT4gYm9vbFxuXG5tb2R1bGUgQ29tcGFyYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgY29tcGFyZSA6IHQgY29tcGFyZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdhIHQgY29tcGFyZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdiIGNvbXBhcmUgLT4gKCdhLCAnYikgdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSBjb21wYXJlIC0+ICdiIGNvbXBhcmUgLT4gJ2MgY29tcGFyZSAtPiAoJ2EsICdiLCAnYykgdCBjb21wYXJlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBFcXVhbCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZXF1YWwgOiB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYSB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYiBlcXVhbCAtPiAoJ2EsICdiKSB0IGVxdWFsXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGVxdWFsIDogJ2EgZXF1YWwgLT4gJ2IgZXF1YWwgLT4gJ2MgZXF1YWwgLT4gKCdhLCAnYiwgJ2MpIHQgZXF1YWxcbiAgZW5kXG5lbmRcblxubW9kdWxlIEJ1aWx0aW4gPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmVfYm9vbCA6IGJvb2wgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9jaGFyIDogY2hhciBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2Zsb2F0IDogZmxvYXQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQgOiBpbnQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQzMiA6IGludDMyIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfaW50NjQgOiBpbnQ2NCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX25hdGl2ZWludCA6IG5hdGl2ZWludCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX3N0cmluZyA6IHN0cmluZyBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX3VuaXQgOiB1bml0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcblxuICBsZXQgY29tcGFyZV9hcnJheSBjb21wYXJlX2VsdCBhIGIgPVxuICAgIGlmIHBoeXNfZXF1YWwgYSBiXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbGVuX2EgPSBBcnJheTAubGVuZ3RoIGEgaW5cbiAgICAgIGxldCBsZW5fYiA9IEFycmF5MC5sZW5ndGggYiBpblxuICAgICAgbGV0IHJldCA9IGNvbXBhcmUgbGVuX2EgbGVuX2IgaW5cbiAgICAgIGlmIHJldCA8PiAwXG4gICAgICB0aGVuIHJldFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgICBpZiBpID0gbGVuX2FcbiAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsID0gQXJyYXkwLnVuc2FmZV9nZXQgYSBpXG4gICAgICAgICAgICBhbmQgciA9IEFycmF5MC51bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IGwgciBpblxuICAgICAgICAgICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBsb29wIChpICsgMSkpXG4gICAgICAgIGluXG4gICAgICAgIGxvb3AgMCkpXG4gIDs7XG5cbiAgbGV0IHJlYyBjb21wYXJlX2xpc3QgY29tcGFyZV9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IFtdLCBbXSAtPiAwXG4gICAgfCBbXSwgXyAtPiAtMVxuICAgIHwgXywgW10gLT4gMVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IHggeSBpblxuICAgICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBjb21wYXJlX2xpc3QgY29tcGFyZV9lbHQgeHMgeXNcbiAgOztcblxuICBsZXQgY29tcGFyZV9vcHRpb24gY29tcGFyZV9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gMFxuICAgIHwgTm9uZSwgU29tZSBfIC0+IC0xXG4gICAgfCBTb21lIF8sIE5vbmUgLT4gMVxuICAgIHwgU29tZSBhLCBTb21lIGIgLT4gY29tcGFyZV9lbHQgYSBiXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfcmVmIGNvbXBhcmVfZWx0IGEgYiA9IGNvbXBhcmVfZWx0ICFhICFiXG4gIGxldCBlcXVhbF9ib29sIDogYm9vbCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX2NoYXIgOiBjaGFyIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50IDogaW50IGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50MzIgOiBpbnQzMiBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX2ludDY0IDogaW50NjQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9zdHJpbmcgOiBzdHJpbmcgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF91bml0IDogdW5pdCBlcXVhbCA9IFBvbHkuZXF1YWxcblxuICAoKiBbUG9seS5lcXVhbF0gaXMgSUVFRSBjb21wbGlhbnQsIHdoaWNoIGlzIG5vdCB3aGF0IHdlIHdhbnQgaGVyZS4gKilcbiAgbGV0IGVxdWFsX2Zsb2F0IHggeSA9IGVxdWFsX2ludCAoY29tcGFyZV9mbG9hdCB4IHkpIDBcblxuICBsZXQgZXF1YWxfYXJyYXkgZXF1YWxfZWx0IGEgYiA9XG4gICAgcGh5c19lcXVhbCBhIGJcbiAgICB8fFxuICAgIGxldCBsZW5fYSA9IEFycmF5MC5sZW5ndGggYSBpblxuICAgIGxldCBsZW5fYiA9IEFycmF5MC5sZW5ndGggYiBpblxuICAgIGVxdWFsIGxlbl9hIGxlbl9iXG4gICAgJiZcbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpID0gbGVuX2FcbiAgICAgIHx8XG4gICAgICBsZXQgbCA9IEFycmF5MC51bnNhZmVfZ2V0IGEgaVxuICAgICAgYW5kIHIgPSBBcnJheTAudW5zYWZlX2dldCBiIGkgaW5cbiAgICAgIGVxdWFsX2VsdCBsIHIgJiYgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcbiAgOztcblxuICBsZXQgcmVjIGVxdWFsX2xpc3QgZXF1YWxfZWx0IGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBbXSwgW10gLT4gdHJ1ZVxuICAgIHwgW10sIF8gfCBfLCBbXSAtPiBmYWxzZVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPiBlcXVhbF9lbHQgeCB5ICYmIGVxdWFsX2xpc3QgZXF1YWxfZWx0IHhzIHlzXG4gIDs7XG5cbiAgbGV0IGVxdWFsX29wdGlvbiBlcXVhbF9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGEsIFNvbWUgYiAtPiBlcXVhbF9lbHQgYSBiXG4gIDs7XG5cbiAgbGV0IGVxdWFsX3JlZiBlcXVhbF9lbHQgYSBiID0gZXF1YWxfZWx0ICFhICFiXG5lbmRcbiIsIigqKiBUaGlzIG1vZHVsZSBpcyBmb3IgdXNlIGJ5IHBweF9oYXNoLCBhbmQgaXMgdGh1cyBub3QgaW4gdGhlIGludGVyZmFjZSBvZiBCYXNlLiAqKVxubW9kdWxlIFN0ZCA9IHN0cnVjdFxuICBtb2R1bGUgSGFzaCA9IEhhc2ggKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNoICopXG5lbmRcblxudHlwZSAnYSBoYXNoX2ZvbGQgPSBTdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBTdGQuSGFzaC5zdGF0ZVxuXG5tb2R1bGUgSGFzaGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90IDogdCBoYXNoX2ZvbGRcbiAgICB2YWwgaGFzaCA6IHQgLT4gU3RkLkhhc2guaGFzaF92YWx1ZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90IDogJ2EgaGFzaF9mb2xkIC0+ICdhIHQgaGFzaF9mb2xkXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiAnYSBoYXNoX2ZvbGQgLT4gJ2IgaGFzaF9mb2xkIC0+ICgnYSwgJ2IpIHQgaGFzaF9mb2xkXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90XG4gICAgICA6ICAnYSBoYXNoX2ZvbGRcbiAgICAgIC0+ICdiIGhhc2hfZm9sZFxuICAgICAgLT4gJ2MgaGFzaF9mb2xkXG4gICAgICAtPiAoJ2EsICdiLCAnYykgdCBoYXNoX2ZvbGRcbiAgZW5kXG5lbmRcbiIsIm9wZW4gSGFzaC5CdWlsdGluXG5vcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5pbmNsdWRlIFNleHBsaWIwLlNleHBcblxuKCoqIFR5cGUgb2YgUy1leHByZXNzaW9ucyAqKVxudHlwZSB0ID0gU2V4cGxpYjAuU2V4cC50ID1cbiAgfCBBdG9tIG9mIHN0cmluZ1xuICB8IExpc3Qgb2YgdCBsaXN0XG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxubGV0IHJlYyBjb21wYXJlID1cbiAgKGZ1biBhX18wMDFfIGJfXzAwMl8gLT5cbiAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDFfIGJfXzAwMl9cbiAgICAgdGhlbiAwXG4gICAgIGVsc2UgKFxuICAgICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgICAgIHwgQXRvbSBfYV9fMDAzXywgQXRvbSBfYl9fMDA0XyAtPiBjb21wYXJlX3N0cmluZyBfYV9fMDAzXyBfYl9fMDA0X1xuICAgICAgIHwgQXRvbSBfLCBfIC0+IC0xXG4gICAgICAgfCBfLCBBdG9tIF8gLT4gMVxuICAgICAgIHwgTGlzdCBfYV9fMDA1XywgTGlzdCBfYl9fMDA2XyAtPiBjb21wYXJlX2xpc3QgY29tcGFyZSBfYV9fMDA1XyBfYl9fMDA2XylcbiAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG47O1xuXG5sZXQgcmVjIChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBBdG9tIF9hMCAtPlxuICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgaGFzaF9mb2xkX3N0cmluZyBoc3YgX2EwXG4gICAgIHwgTGlzdCBfYTAgLT5cbiAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgIGhhc2hfZm9sZF9saXN0IGhhc2hfZm9sZF90IGhzdiBfYTBcbiAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcblxuYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2NvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxubGV0IG9mX3N0cmluZyA9ICgpXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3lzID0gU3lzMFxuXG50eXBlIHQgPVxuICB8IFczMlxuICB8IFc2NFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IFczMiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJXMzJcIlxuICAgIHwgVzY0IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlc2NFwiXG4gICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBudW1fYml0cyA9IGZ1bmN0aW9uXG4gIHwgVzMyIC0+IDMyXG4gIHwgVzY0IC0+IDY0XG47O1xuXG5sZXQgd29yZF9zaXplID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZV9pbl9iaXRzIHdpdGhcbiAgfCAzMiAtPiBXMzJcbiAgfCA2NCAtPiBXNjRcbiAgfCBfIC0+IGZhaWx3aXRoIFwidW5rbm93biB3b3JkIHNpemVcIlxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgciA9IHJlZiBbIFwiQmFzZS5TZXhwLnBwX2h1bVwiIF1cbmxldCBhbGwgKCkgPSAhclxubGV0IHJlZ2lzdGVyIHAgPSByIDo9IHAgOjogIXJcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgcHAgOiBGb3JtYXR0ZXIudCAtPiB0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXJfcHAgKE0gOiBzaWdcbiAgICBpbmNsdWRlIFNcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1cblxuICBsZXQgKCkgPSByZWdpc3RlciAoTS5tb2R1bGVfbmFtZSBeIFwiLnBwXCIpXG5lbmRcblxubW9kdWxlIFJlZ2lzdGVyIChNIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgZW5kKSA9XG4gIFJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIGxldCBwcCBmb3JtYXR0ZXIgdCA9IFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZvcm1hdHRlciAoTS50b19zdHJpbmcgdClcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IGV4biBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2V4biA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG5bQEBAZW5kXVxuXG5sZXQgZXhpdCA9IFN0ZGxpYi5leGl0XG5cbmV4Y2VwdGlvbiBGaW5hbGx5IG9mIHQgKiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRmluYWxseV0gKGZ1bmN0aW9uXG4gICAgfCBGaW5hbGx5IChhcmcwX18wMDFfLCBhcmcxX18wMDJfKSAtPlxuICAgICAgbGV0IHJlczBfXzAwM18gPSBzZXhwX29mX3QgYXJnMF9fMDAxX1xuICAgICAgYW5kIHJlczFfXzAwNF8gPSBzZXhwX29mX3QgYXJnMV9fMDAyXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXhuLm1sLkZpbmFsbHlcIjsgcmVzMF9fMDAzXzsgcmVzMV9fMDA0XyBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmV4Y2VwdGlvbiBSZXJhaXNlZCBvZiBzdHJpbmcgKiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgUmVyYWlzZWRdIChmdW5jdGlvblxuICAgIHwgUmVyYWlzZWQgKGFyZzBfXzAwNV8sIGFyZzFfXzAwNl8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDA3XyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwNV9cbiAgICAgIGFuZCByZXMxX18wMDhfID0gc2V4cF9vZl90IGFyZzFfXzAwNl8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImV4bi5tbC5SZXJhaXNlZFwiOyByZXMwX18wMDdfOyByZXMxX18wMDhfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxuZXhjZXB0aW9uIFNleHAgb2YgU2V4cC50XG5cbigqIFdlIGluc3RhbGwgYSBjdXN0b20gZXhuLWNvbnZlcnRlciByYXRoZXIgdGhhbiB1c2U6XG5cbiAgIHtbXG4gICAgIGV4Y2VwdGlvbiBTZXhwIG9mIFNleHAudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cbiAgICAgKCogLi4uICopXG4gICAgIFtAQEBlbmRdXG4gICBdfVxuXG4gICB0byBlbGltaW5hdGUgdGhlIGV4dHJhIHdyYXBwaW5nIG9mIFsoU2V4cCAuLi4pXS4gKilcbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXhwXSAoZnVuY3Rpb25cbiAgICB8IFNleHAgdCAtPiB0XG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCBjcmVhdGVfcyBzZXhwID0gU2V4cCBzZXhwXG5cbmxldCByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSB0IGJhY2t0cmFjZSA9XG4gIFN0ZGxpYi5QcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB0IGJhY2t0cmFjZVxuOztcblxuZXh0ZXJuYWwgaXNfcGh5c19lcXVhbF9tb3N0X3JlY2VudCA6IHQgLT4gYm9vbCA9IFwiQmFzZV9jYW1sX2V4bl9pc19tb3N0X3JlY2VudF9leG5cIlxuXG5sZXQgcmVyYWlzZSBleG4gc3RyID1cbiAgbGV0IGV4bicgPSBSZXJhaXNlZCAoc3RyLCBleG4pIGluXG4gIGlmIGlzX3BoeXNfZXF1YWxfbW9zdF9yZWNlbnQgZXhuXG4gIHRoZW4gKFxuICAgIGxldCBidCA9IFN0ZGxpYi5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgIHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIGV4bicgYnQpXG4gIGVsc2UgcmFpc2UgZXhuJ1xuOztcblxubGV0IHJlcmFpc2VmIGV4YyBmb3JtYXQgPSBQcmludGYua3NwcmludGYgKGZ1biBzdHIgKCkgLT4gcmVyYWlzZSBleGMgc3RyKSBmb3JtYXRcbmxldCB0b19zdHJpbmcgZXhjID0gU2V4cC50b19zdHJpbmdfaHVtIH5pbmRlbnQ6MiAoc2V4cF9vZl9leG4gZXhjKVxubGV0IHRvX3N0cmluZ19tYWNoIGV4YyA9IFNleHAudG9fc3RyaW5nX21hY2ggKHNleHBfb2ZfZXhuIGV4YylcbmxldCBzZXhwX29mX3QgPSBzZXhwX29mX2V4blxuXG5sZXQgcHJvdGVjdHggfmYgeCB+KGZpbmFsbHkgOiBfIC0+IHVuaXQpID1cbiAgbWF0Y2ggZiB4IHdpdGhcbiAgfCByZXMgLT5cbiAgICBmaW5hbGx5IHg7XG4gICAgcmVzXG4gIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgIGxldCBidCA9IFN0ZGxpYi5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgIChtYXRjaCBmaW5hbGx5IHggd2l0aFxuICAgICB8ICgpIC0+IHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIGV4biBidFxuICAgICB8IGV4Y2VwdGlvbiBmaW5hbF9leG4gLT5cbiAgICAgICAoKiBVbmZvcnR1bmF0ZWx5LCB0aGUgYmFja3RyYWNlIG9mIHRoZSBbZmluYWxfZXhuXSBpcyBkaXNjYXJkZWQgaGVyZS4gKilcbiAgICAgICByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSAoRmluYWxseSAoZXhuLCBmaW5hbF9leG4pKSBidClcbjs7XG5cbmxldCBwcm90ZWN0IH5mIH5maW5hbGx5ID0gcHJvdGVjdHggfmYgKCkgfmZpbmFsbHlcblxubGV0IGRvZXNfcmFpc2UgKHR5cGUgYSkgKGYgOiB1bml0IC0+IGEpID1cbiAgdHJ5XG4gICAgaWdub3JlIChmICgpIDogYSk7XG4gICAgZmFsc2VcbiAgd2l0aFxuICB8IF8gLT4gdHJ1ZVxuOztcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgdHlwZSB0ID0gZXhuXG5cbiAgICBsZXQgcHAgcHBmIHQgPVxuICAgICAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0IHQgd2l0aFxuICAgICAgfCBTb21lIHNleHAgLT4gU2V4cC5wcF9odW0gcHBmIHNleHBcbiAgICAgIHwgTm9uZSAtPiBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKFN0ZGxpYi5QcmludGV4Yy50b19zdHJpbmcgdClcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkV4blwiXG4gIGVuZClcblxubGV0IHByaW50X3dpdGhfYmFja3RyYWNlIGV4YyByYXdfYmFja3RyYWNlID1cbiAgU3RkbGliLkZvcm1hdC5lcHJpbnRmIFwiQFs8Mj5VbmNhdWdodCBleGNlcHRpb246QFxcbkBcXG5AWyVhQF1AXUBcXG5ALlwiIHBwIGV4YztcbiAgaWYgU3RkbGliLlByaW50ZXhjLmJhY2t0cmFjZV9zdGF0dXMgKClcbiAgdGhlbiBTdGRsaWIuUHJpbnRleGMucHJpbnRfcmF3X2JhY2t0cmFjZSBTdGRsaWIuc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gIFN0ZGxpYi5mbHVzaCBTdGRsaWIuc3RkZXJyXG47O1xuXG5sZXQgc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyICgpID1cbiAgU3RkbGliLlByaW50ZXhjLnNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBwcmludF93aXRoX2JhY2t0cmFjZVxuOztcblxubGV0IGhhbmRsZV91bmNhdWdodF9hdXggfmRvX2F0X2V4aXQgfmV4aXQgZiA9XG4gIHRyeSBmICgpIHdpdGhcbiAgfCBleGMgLT5cbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9IFN0ZGxpYi5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICgqIE9uZSByZWFzb24gdG8gcnVuIFtkb19hdF9leGl0XSBoYW5kbGVycyBiZWZvcmUgcHJpbnRpbmcgb3V0IHRoZSBlcnJvciBtZXNzYWdlIGlzXG4gICAgICAgdGhhdCBpdCBoZWxwcyBjdXJzZXMgYXBwbGljYXRpb25zIGJyaW5nIHRoZSB0ZXJtaW5hbCBpbiBhIGdvb2Qgc3RhdGUsIG90aGVyd2lzZSB0aGVcbiAgICAgICBlcnJvciBtZXNzYWdlIG1pZ2h0IGdldCBjb3JydXB0ZWQuICBBbHNvLCB0aGUgT0NhbWwgdG9wLWxldmVsIHVuY2F1Z2h0IGV4Y2VwdGlvblxuICAgICAgIGhhbmRsZXIgZG9lcyB0aGUgc2FtZS4gKilcbiAgICBpZiBkb19hdF9leGl0XG4gICAgdGhlbiAoXG4gICAgICB0cnkgU3RkbGliLmRvX2F0X2V4aXQgKCkgd2l0aFxuICAgICAgfCBfIC0+ICgpKTtcbiAgICAodHJ5IHByaW50X3dpdGhfYmFja3RyYWNlIGV4YyByYXdfYmFja3RyYWNlIHdpdGhcbiAgICAgfCBfIC0+XG4gICAgICAgKHRyeVxuICAgICAgICAgIFN0ZGxpYi5QcmludGYuZXByaW50ZiBcIkV4bi5oYW5kbGVfdW5jYXVnaHQgY291bGQgbm90IHByaW50OyBleGl0aW5nIGFueXdheVxcbiUhXCJcbiAgICAgICAgd2l0aFxuICAgICAgICB8IF8gLT4gKCkpKTtcbiAgICBleGl0IDFcbjs7XG5cbmxldCBoYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZiA9IGhhbmRsZV91bmNhdWdodF9hdXggZiB+ZXhpdCB+ZG9fYXRfZXhpdDp0cnVlXG5cbmxldCBoYW5kbGVfdW5jYXVnaHQgfmV4aXQ6bXVzdF9leGl0IGYgPVxuICBoYW5kbGVfdW5jYXVnaHRfYXV4IGYgfmV4aXQ6KGlmIG11c3RfZXhpdCB0aGVuIGV4aXQgZWxzZSBpZ25vcmUpIH5kb19hdF9leGl0Om11c3RfZXhpdFxuOztcblxubGV0IHJlcmFpc2VfdW5jYXVnaHQgc3RyIGZ1bmMgPVxuICB0cnkgZnVuYyAoKSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgbGV0IGJ0ID0gU3RkbGliLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgKFJlcmFpc2VkIChzdHIsIGV4bikpIGJ0XG47O1xuXG5leHRlcm5hbCBjbGVhcl9iYWNrdHJhY2UgOiB1bml0IC0+IHVuaXQgPSBcIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zXCIgW0BAbm9hbGxvY11cblxubGV0IHJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIGUgPVxuICAoKiBXZSBjbGVhciB0aGUgYmFja3RyYWNlIHRvIHJlZHVjZSBjb25mdXNpb24sIHNvIHRoYXQgcGVvcGxlIGRvbid0IHRoaW5rIHdoYXRldmVyXG4gICAgIGlzIHN0b3JlZCBjb3JyZXNwb25kcyB0byB0aGlzIHJhaXNlLiAqKVxuICBjbGVhcl9iYWNrdHJhY2UgKCk7XG4gIFN0ZGxpYi5yYWlzZV9ub3RyYWNlIGVcbjs7XG5cbmxldCBpbml0aWFsaXplX21vZHVsZSAoKSA9IHNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciAoKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgY2xlYXJfYmFja3RyYWNlID0gY2xlYXJfYmFja3RyYWNlXG5lbmRcbiIsIigqIGJlbG9uZ3MgaW4gQ29tbW9uLCBidXQgbW92ZWQgaGVyZSB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMgKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgcmV0dXJuID0geyByZXR1cm4gOiAnYi4gJ2EgLT4gJ2IgfSBbQEB1bmJveGVkXVxuXG5sZXQgd2l0aF9yZXR1cm4gKHR5cGUgYSkgZiA9XG4gIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgICgqIFJhaXNlZCB0byBpbmRpY2F0ZSB+cmV0dXJuIHdhcyBjYWxsZWQuICBMb2NhbCBzbyB0aGF0IHRoZSBleGNlcHRpb24gaXMgdGllZCB0byBhXG4gICAgICAgcGFydGljdWxhciBjYWxsIG9mIFt3aXRoX3JldHVybl0uICopXG4gICAgZXhjZXB0aW9uIFJldHVybiBvZiBhXG4gIGVuZFxuICBpblxuICBsZXQgaXNfYWxpdmUgPSByZWYgdHJ1ZSBpblxuICBsZXQgcmV0dXJuIGEgPVxuICAgIGlmIG5vdCAhaXNfYWxpdmVcbiAgICB0aGVuIGZhaWx3aXRoIFwidXNlIG9mIFtyZXR1cm5dIGZyb20gYSBbd2l0aF9yZXR1cm5dIHRoYXQgYWxyZWFkeSByZXR1cm5lZFwiO1xuICAgIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSAoTS5SZXR1cm4gYSlcbiAgaW5cbiAgdHJ5XG4gICAgbGV0IGEgPSBmIHsgcmV0dXJuIH0gaW5cbiAgICBpc19hbGl2ZSA6PSBmYWxzZTtcbiAgICBhXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICBpc19hbGl2ZSA6PSBmYWxzZTtcbiAgICAobWF0Y2ggZXhuIHdpdGhcbiAgICAgfCBNLlJldHVybiBhIC0+IGFcbiAgICAgfCBfIC0+IHJhaXNlIGV4bilcbjs7XG5cbmxldCB3aXRoX3JldHVybl9vcHRpb24gZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gcmV0dXJuIC0+XG4gICAgZiB7IHJldHVybiA9IChmdW4gYSAtPiByZXR1cm4ucmV0dXJuIChTb21lIGEpKSB9O1xuICAgIE5vbmUpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBwcmVwZW5kIHsgcmV0dXJuIH0gfmYgPSB7IHJldHVybiA9IChmdW4geCAtPiByZXR1cm4gKGYgeCkpIH1cbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgY29uc3QgYyBfID0gY1xuXG5leHRlcm5hbCBpZ25vcmUgOiAoX1tAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIHRoaXMgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIFtTdGRsaWIuaWdub3JlXSAqKVxuXG5sZXQgbm9uIGYgeCA9IG5vdCAoZiB4KVxuXG5sZXQgZm9yZXZlciBmID1cbiAgbGV0IHJlYyBmb3JldmVyICgpID1cbiAgICBmICgpO1xuICAgIGZvcmV2ZXIgKClcbiAgaW5cbiAgdHJ5IGZvcmV2ZXIgKCkgd2l0aFxuICB8IGUgLT4gZVxuOztcblxuZXh0ZXJuYWwgaWQgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoKCdhIC0+ICdiKVtAbG9jYWxfb3B0XSkgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5cbigqIFRoZSB0eXBpY2FsIHVzZSBjYXNlIGZvciB0aGVzZSBmdW5jdGlvbnMgaXMgdG8gcGFzcyBpbiBmdW5jdGlvbmFsIGFyZ3VtZW50cyBhbmQgZ2V0XG4gICBmdW5jdGlvbnMgYXMgYSByZXN1bHQuICopXG5sZXQgY29tcG9zZSBmIGcgeCA9IGYgKGcgeClcbmxldCBmbGlwIGYgeCB5ID0gZiB5IHhcbmxldCByZWMgYXBwbHlfbl90aW1lcyB+biBmIHggPSBpZiBuIDw9IDAgdGhlbiB4IGVsc2UgYXBwbHlfbl90aW1lcyB+bjoobiAtIDEpIGYgKGYgeClcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBCYXNpY19nZW4gPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuXG5cbiAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0LCAnYiB0KSBmX2xhYmVsZWRfZm5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAoKiogVGhlIGZvbGxvd2luZyBpZGVudGl0aWVzIG91Z2h0IHRvIGhvbGQgKGZvciBzb21lIHZhbHVlIG9mID0pOlxuXG4gICAgICAtIFtyZXR1cm4geCA+Pj0gZiA9IGYgeF1cbiAgICAgIC0gW3QgPj49IGZ1biB4IC0+IHJldHVybiB4ID0gdF1cbiAgICAgIC0gWyh0ID4+PSBmKSA+Pj0gZyA9IHQgPj49IGZ1biB4IC0+IChmIHggPj49IGcpXVxuXG4gICAgICBOb3RlOiBbPj49XSBpcyB0aGUgaW5maXggbm90YXRpb24gZm9yIFtiaW5kXSkgKilcblxuICAoKiogVGhlIFttYXBdIGFyZ3VtZW50IHRvIFtNb25hZC5NYWtlXSBzYXlzIGhvdyB0byBpbXBsZW1lbnQgdGhlIG1vbmFkJ3MgW21hcF0gZnVuY3Rpb24uXG4gICAgICBbYERlZmluZV91c2luZ19iaW5kXSBtZWFucyB0byBkZWZpbmUgW21hcCB0IH5mID0gYmluZCB0IH5mOihmdW4gYSAtPiByZXR1cm4gKGYgYSkpXS5cbiAgICAgIFtgQ3VzdG9tXSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHByZXN1bWFibHkgd2l0aCBzb21ldGhpbmcgbW9yZVxuICAgICAgZWZmaWNpZW50LlxuXG4gICAgICBTb21lIG90aGVyIGZ1bmN0aW9ucyByZXR1cm5lZCBieSBbTW9uYWQuTWFrZV0gYXJlIGRlZmluZWQgaW4gdGVybXMgb2YgW21hcF0sIHNvXG4gICAgICBwYXNzaW5nIGluIGEgbW9yZSBlZmZpY2llbnQgW21hcF0gd2lsbCBpbXByb3ZlIHRoZWlyIGVmZmljaWVuY3kgYXMgd2VsbC4gKilcbiAgdmFsIG1hcCA6IFsgYERlZmluZV91c2luZ19iaW5kIHwgYEN1c3RvbSBvZiAnYSB0IC0+ICgnYSAtPiAnYiwgJ2IgdCkgZl9sYWJlbGVkX2ZuIF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpYyA9IEJhc2ljX2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6J2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgQmFzaWNfbG9jYWwgPVxuICBCYXNpY19nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOignYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBJbmZpeF9nZW4gPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cblxuICAoKiogW3QgPj49IGZdIHJldHVybnMgYSBjb21wdXRhdGlvbiB0aGF0IHNlcXVlbmNlcyB0aGUgY29tcHV0YXRpb25zIHJlcHJlc2VudGVkIGJ5IHR3b1xuICAgICAgbW9uYWQgZWxlbWVudHMuICBUaGUgcmVzdWx0aW5nIGNvbXB1dGF0aW9uIGZpcnN0IGRvZXMgW3RdIHRvIHlpZWxkIGEgdmFsdWUgW3ZdLCBhbmRcbiAgICAgIHRoZW4gcnVucyB0aGUgY29tcHV0YXRpb24gcmV0dXJuZWQgYnkgW2Ygdl0uICopXG4gIHZhbCAoID4+PSApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCwgJ2IgdCkgZm5cblxuICAoKiogW3QgPj58IGZdIGlzIFt0ID4+PSAoZnVuIGEgLT4gcmV0dXJuIChmIGEpKV0uICopXG4gIHZhbCAoID4+fCApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IsICdiIHQpIGZuXG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXggPSBJbmZpeF9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICdhIC0+ICdiXG5tb2R1bGUgdHlwZSBJbmZpeF9sb2NhbCA9IEluZml4X2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhW0Bsb2NhbF0pIC0+ICdiXG5cbm1vZHVsZSB0eXBlIFN5bnRheF9nZW4gPSBzaWdcbiAgKCoqIE9wZW5pbmcgYSBtb2R1bGUgb2YgdGhpcyB0eXBlIGFsbG93cyBvbmUgdG8gdXNlIHRoZSBbJWJpbmRdIGFuZCBbJW1hcF0gc3ludGF4XG4gICAgICBleHRlbnNpb25zIGRlZmluZWQgYnkgcHB4X2xldCwgYW5kIGJyaW5ncyBbcmV0dXJuXSBpbnRvIHNjb3BlLiAqKVxuXG4gIHR5cGUgJ2EgdFxuICB0eXBlICgnYSwgJ2IpIGZuXG4gIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuXG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAoKiogVGhlc2UgYXJlIGNvbnZlbmllbnQgdG8gaGF2ZSBpbiBzY29wZSB3aGVuIHByb2dyYW1taW5nIHdpdGggYSBtb25hZDogKilcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgICBpbmNsdWRlIEluZml4X2dlbiB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICAgIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCwgJ2IgdCkgZl9sYWJlbGVkX2ZuXG4gICAgICB2YWwgbWFwIDogJ2EgdCAtPiAoJ2EgLT4gJ2IsICdiIHQpIGZfbGFiZWxlZF9mblxuICAgICAgdmFsIGJvdGggOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTeW50YXggPVxuICBTeW50YXhfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAnYSAtPiAnYlxuICAgYW5kIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6J2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgU3ludGF4X2xvY2FsID1cbiAgU3ludGF4X2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhW0Bsb2NhbF0pIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheF9nZW4gPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBpbmNsdWRlIEluZml4X2dlbiB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG5cbiAgbW9kdWxlIE1vbmFkX2luZml4IDpcbiAgICBJbmZpeF9nZW4gd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2EsICdiKSBmblxuXG4gICgqKiBbYmluZCB0IH5mXSA9IFt0ID4+PSBmXSAqKVxuICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQsICdiIHQpIGZfbGFiZWxlZF9mblxuXG4gICgqKiBbcmV0dXJuIHZdIHJldHVybnMgdGhlICh0cml2aWFsKSBjb21wdXRhdGlvbiB0aGF0IHJldHVybnMgdi4gKilcbiAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAoKiogW21hcCB0IH5mXSBpcyB0ID4+fCBmLiAqKVxuICB2YWwgbWFwIDogJ2EgdCAtPiAoJ2EgLT4gJ2IsICdiIHQpIGZfbGFiZWxlZF9mblxuXG4gICgqKiBbam9pbiB0XSBpcyBbdCA+Pj0gKGZ1biB0JyAtPiB0JyldLiAqKVxuICB2YWwgam9pbiA6ICdhIHQgdCAtPiAnYSB0XG5cbiAgKCoqIFtpZ25vcmVfbSB0XSBpcyBbbWFwIHQgfmY6KGZ1biBfIC0+ICgpKV0uICBbaWdub3JlX21dIHVzZWQgdG8gYmUgY2FsbGVkIFtpZ25vcmVdLFxuICAgICAgYnV0IHdlIGRlY2lkZWQgdGhhdCB3YXMgYSBiYWQgbmFtZSwgYmVjYXVzZSBpdCBzaGFkb3dlZCB0aGUgd2lkZWx5IHVzZWRcbiAgICAgIFtTdGRsaWIuaWdub3JlXS4gIFNvbWUgbW9uYWRzIHN0aWxsIGRvIFtsZXQgaWdub3JlID0gaWdub3JlX21dIGZvciBoaXN0b3JpY2FsXG4gICAgICByZWFzb25zLiAqKVxuICB2YWwgaWdub3JlX20gOiAnYSB0IC0+IHVuaXQgdFxuXG4gIHZhbCBhbGwgOiAnYSB0IGxpc3QgLT4gJ2EgbGlzdCB0XG5cbiAgKCoqIExpa2UgW2FsbF0sIGJ1dCBlbnN1cmVzIHRoYXQgZXZlcnkgbW9uYWRpYyB2YWx1ZSBpbiB0aGUgbGlzdCBwcm9kdWNlcyBhIHVuaXQgdmFsdWUsXG4gICAgICBhbGwgb2Ygd2hpY2ggYXJlIGRpc2NhcmRlZCByYXRoZXIgdGhhbiBiZWluZyBjb2xsZWN0ZWQgaW50byBhIGxpc3QuICopXG4gIHZhbCBhbGxfdW5pdCA6IHVuaXQgdCBsaXN0IC0+IHVuaXQgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfd2l0aG91dF9zeW50YXggPVxuICBTX3dpdGhvdXRfc3ludGF4X2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6J2EgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICdhIC0+ICdiXG5cbm1vZHVsZSB0eXBlIFNfd2l0aG91dF9zeW50YXhfbG9jYWwgPVxuICBTX3dpdGhvdXRfc3ludGF4X2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6KCdhW0Bsb2NhbF0pIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIFNfd2l0aG91dF9zeW50YXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFN5bnRheCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19sb2NhbCA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIFNfd2l0aG91dF9zeW50YXhfbG9jYWwgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFN5bnRheF9sb2NhbCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQmFzaWMyX2dlbiA9IHNpZ1xuICAoKiogTXVsdGkgcGFyYW1ldGVyIG1vbmFkLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBnZXRzIHVuaWZpZWQgYWNyb3NzIGFsbCB0aGUgY29tcHV0YXRpb24uXG4gICAgICBUaGlzIGlzIHVzZWQgdG8gZW5jb2RlIG1vbmFkcyB3b3JraW5nIG9uIGEgbXVsdGkgcGFyYW1ldGVyIGRhdGEgc3RydWN0dXJlIGxpa2VcbiAgICAgIChbKCdhLCdiKSByZXN1bHRdKS4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICgnYiwgJ2UpIHQsICgnYiwgJ2UpIHQpIGZfbGFiZWxlZF9mblxuXG4gIHZhbCBtYXBcbiAgICA6IFsgYERlZmluZV91c2luZ19iaW5kXG4gICAgICB8IGBDdXN0b20gb2YgKCdhLCAnZSkgdCAtPiAoJ2EgLT4gJ2IsICgnYiwgJ2UpIHQpIGZfbGFiZWxlZF9mblxuICAgICAgXVxuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpYzIgPSBCYXNpYzJfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBCYXNpYzJfbG9jYWwgPVxuICBCYXNpYzJfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgSW5maXgyX2dlbiA9IHNpZ1xuICAoKiogU2FtZSBhcyB7IUluZml4fSwgZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0d28gYXJndW1lbnRzLiBUaGUgc2Vjb25kIGlzIGFsd2F5cyBqdXN0XG4gICAgICBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcbiAgdHlwZSAoJ2EsICdiKSBmblxuXG4gIHZhbCAoID4+PSApIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCwgKCdiLCAnZSkgdCkgZm5cbiAgdmFsICggPj58ICkgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAnYiwgKCdiLCAnZSkgdCkgZm5cbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeDIgPSBJbmZpeDJfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAnYSAtPiAnYlxubW9kdWxlIHR5cGUgSW5maXgyX2xvY2FsID0gSW5maXgyX2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhW0Bsb2NhbF0pIC0+ICdiXG5cbm1vZHVsZSB0eXBlIFN5bnRheDJfZ2VuID0gc2lnXG4gIHR5cGUgKCdhLCAnZSkgdFxuICB0eXBlICgnYSwgJ2IpIGZuXG4gIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuXG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG5cbiAgICBpbmNsdWRlXG4gICAgICBJbmZpeDJfZ2VuIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gICAgICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICgnYiwgJ2UpIHQsICgnYiwgJ2UpIHQpIGZfbGFiZWxlZF9mblxuICAgICAgdmFsIG1hcCA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICdiLCAoJ2IsICdlKSB0KSBmX2xhYmVsZWRfZm5cbiAgICAgIHZhbCBib3RoIDogKCdhLCAnZSkgdCAtPiAoJ2IsICdlKSB0IC0+ICgnYSAqICdiLCAnZSkgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheDIgPVxuICBTeW50YXgyX2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gJ2EgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOidhIC0+ICdiXG5cbm1vZHVsZSB0eXBlIFN5bnRheDJfbG9jYWwgPVxuICBTeW50YXgyX2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhW0Bsb2NhbF0pIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgUzJfZ2VuID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdHdvIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBpcyBhbHdheXMganVzdFxuICAgICAgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdlKSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBpbmNsdWRlXG4gICAgSW5maXgyX2dlbiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSB0IGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG5cbiAgaW5jbHVkZVxuICAgIFN5bnRheDJfZ2VuXG4gICAgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdFxuICAgICBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2EsICdiKSBmblxuICAgICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gKCdhLCAnYikgZl9sYWJlbGVkX2ZuXG5cbiAgbW9kdWxlIE1vbmFkX2luZml4IDpcbiAgICBJbmZpeDJfZ2VuIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICgnYiwgJ2UpIHQsICgnYiwgJ2UpIHQpIGZfbGFiZWxlZF9mblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAnYiwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG4gIHZhbCBqb2luIDogKCgnYSwgJ2UpIHQsICdlKSB0IC0+ICgnYSwgJ2UpIHRcbiAgdmFsIGlnbm9yZV9tIDogKF8sICdlKSB0IC0+ICh1bml0LCAnZSkgdFxuICB2YWwgYWxsIDogKCdhLCAnZSkgdCBsaXN0IC0+ICgnYSBsaXN0LCAnZSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2UpIHQgbGlzdCAtPiAodW5pdCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9XG4gIFMyX2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gJ2EgLT4gJ2IgYW5kIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6J2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgUzJfbG9jYWwgPVxuICBTMl9nZW5cbiAgd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYVtAbG9jYWxdKSAtPiAnYlxuICAgYW5kIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6KCdhW0Bsb2NhbF0pIC0+ICdiXG5cbm1vZHVsZSB0eXBlIEJhc2ljMyA9IHNpZ1xuICAoKiogTXVsdGkgcGFyYW1ldGVyIG1vbmFkLiBUaGUgc2Vjb25kIGFuZCB0aGlyZCBwYXJhbWV0ZXJzIGdldCB1bmlmaWVkIGFjcm9zcyBhbGwgdGhlXG4gICAgICBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0IF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXgzID0gc2lnXG4gICgqKiBTYW1lIGFzIEluZml4LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmQgdGhpcmQgYXJlXG4gICAgICBhbHdheXMganVzdCBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdkLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCAoID4+fCApIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheDMgPSBzaWdcbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuXG4gICAgaW5jbHVkZSBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdiLCAnZCwgJ2UpIHQgLT4gKCdhICogJ2IsICdkLCAnZSkgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kXG4gICAgICBhbmQgdGhpcmQgYXJlIGFsd2F5cyBqdXN0IHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICBpbmNsdWRlIEluZml4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcbiAgaW5jbHVkZSBTeW50YXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuICB2YWwgbWFwIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCBqb2luIDogKCgnYSwgJ2QsICdlKSB0LCAnZCwgJ2UpIHQgLT4gKCdhLCAnZCwgJ2UpIHRcbiAgdmFsIGlnbm9yZV9tIDogKF8sICdkLCAnZSkgdCAtPiAodW5pdCwgJ2QsICdlKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdkLCAnZSkgdCBsaXN0IC0+ICgnYSBsaXN0LCAnZCwgJ2UpIHRcbiAgdmFsIGFsbF91bml0IDogKHVuaXQsICdkLCAnZSkgdCBsaXN0IC0+ICh1bml0LCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpY19pbmRleGVkID0gc2lnXG4gICgqKiBJbmRleGVkIG1vbmFkLCBpbiB0aGUgc3R5bGUgb2YgQXRrZXkuIFRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgYXJlIGNvbXBvc2VkXG4gICAgICBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiBUbyBzZWUgdGhpcyBtb3JlIGNsZWFybHksIHlvdSBjYW4gbG9vayBhdCB0aGUgdHlwZSBvZiBiaW5kOlxuXG4gICAgICB7W1xuICAgICAgICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICAgICAgXX1cblxuICAgICAgYW5kIGlzb2xhdGUgc29tZSBvZiB0aGUgdHlwZSB2YXJpYWJsZXMgdG8gc2VlIHRoZWlyIGluZGl2aWR1YWwgYmVoYXZpb3JzOlxuXG4gICAgICB7W1xuICAgICAgICB2YWwgYmluZCA6ICdhICAgICAgICAgICAgIC0+IGY6KCdhIC0+ICAnYiAgICAgICAgICAgKSAtPiAgJ2JcbiAgICAgICAgdmFsIGJpbmQgOiAgICAgICdpLCAnaiAgICAtPiAgICAgICAgICAgICAgICdqLCAnayAgICAgLT4gICAgICdpLCAna1xuICAgICAgXX1cblxuICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQXRrZXktc3R5bGUgaW5kZXhlZCBtb25hZHMsIHNlZTpcblxuICAgICAge3ZcbiAgICAgICAgUGFyYW1ldGVyaXNlZCBOb3Rpb25zIG9mIENvbXB1dGF0aW9uXG4gICAgICAgIFJvYmVydCBBdGtleVxuICAgICAgICBodHRwOi8vYmVudG5pYi5vcmcvcGFyYW1ub3Rpb25zLWpmcC5wZGZcbiAgICAgIHZ9ICopXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdCBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXhfaW5kZXhlZCA9IHNpZ1xuICAoKiogU2FtZSBhcyB7IUluZml4fSwgZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmQgYW5kXG4gICAgICB0aGlyZCBhcmUgY29tcG9zZWQgYWNyb3NzIGFsbCBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gIHZhbCAoID4+fCApIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheF9pbmRleGVkID0gc2lnXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuXG4gICAgaW5jbHVkZSBJbmZpeF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdiLCAnaiwgJ2spIHQgLT4gKCdhICogJ2IsICdpLCAnaykgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfaW5kZXhlZCA9IHNpZ1xuICAoKiogVGhlIHNhbWUgYXMgeyFTfSBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmRcbiAgICAgIHRoaXJkIGFyZSBjb21wb3NlZCBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiAqKVxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICBpbmNsdWRlIEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG4gIGluY2x1ZGUgU3ludGF4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG4gIG1vZHVsZSBNb25hZF9pbmZpeCA6IEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbiAgdmFsIGpvaW4gOiAoKCdhLCAnaiwgJ2spIHQsICdpLCAnaikgdCAtPiAoJ2EsICdpLCAnaykgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2ksICdqKSB0IC0+ICh1bml0LCAnaSwgJ2opIHRcbiAgdmFsIGFsbCA6ICgnYSwgJ2ksICdpKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdpLCAnaSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2ksICdpKSB0IGxpc3QgLT4gKHVuaXQsICdpLCAnaSkgdFxuZW5kXG5cbm1vZHVsZSBTX3RvX1MyIChYIDogUykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUzMgKFggOiBTMikgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuZW5kXG5cbm1vZHVsZSBTX3RvX1NfaW5kZXhlZCAoWCA6IFMpIDogU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0ID0gJ2EgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MgKFggOiBTMikgOiBTIHdpdGggdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgUzNfdG9fUzIgKFggOiBTMykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsIHVuaXQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgU19pbmRleGVkX3RvX1MyIChYIDogU19pbmRleGVkKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgJ2UpIFgudCA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgJ2UpIFgudFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1vbmFkID0gc2lnXG4gICgqKiBBIG1vbmFkIGlzIGFuIGFic3RyYWN0aW9uIG9mIHRoZSBjb25jZXB0IG9mIHNlcXVlbmNpbmcgb2YgY29tcHV0YXRpb25zLiAgQSB2YWx1ZSBvZlxuICAgICAgdHlwZSBbJ2EgbW9uYWRdIHJlcHJlc2VudHMgYSBjb21wdXRhdGlvbiB0aGF0IHJldHVybnMgYSB2YWx1ZSBvZiB0eXBlIFsnYV0uICopXG5cbiAgbW9kdWxlIHR5cGUgQmFzaWMgPSBCYXNpY1xuICBtb2R1bGUgdHlwZSBCYXNpYzIgPSBCYXNpYzJcbiAgbW9kdWxlIHR5cGUgQmFzaWMzID0gQmFzaWMzXG4gIG1vZHVsZSB0eXBlIEJhc2ljX2luZGV4ZWQgPSBCYXNpY19pbmRleGVkXG4gIG1vZHVsZSB0eXBlIEJhc2ljX2xvY2FsID0gQmFzaWNfbG9jYWxcbiAgbW9kdWxlIHR5cGUgQmFzaWMyX2xvY2FsID0gQmFzaWMyX2xvY2FsXG4gIG1vZHVsZSB0eXBlIEluZml4ID0gSW5maXhcbiAgbW9kdWxlIHR5cGUgSW5maXgyID0gSW5maXgyXG4gIG1vZHVsZSB0eXBlIEluZml4MyA9IEluZml4M1xuICBtb2R1bGUgdHlwZSBJbmZpeF9pbmRleGVkID0gSW5maXhfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBJbmZpeF9sb2NhbCA9IEluZml4X2xvY2FsXG4gIG1vZHVsZSB0eXBlIEluZml4Ml9sb2NhbCA9IEluZml4Ml9sb2NhbFxuICBtb2R1bGUgdHlwZSBTeW50YXggPSBTeW50YXhcbiAgbW9kdWxlIHR5cGUgU3ludGF4MiA9IFN5bnRheDJcbiAgbW9kdWxlIHR5cGUgU3ludGF4MyA9IFN5bnRheDNcbiAgbW9kdWxlIHR5cGUgU3ludGF4X2luZGV4ZWQgPSBTeW50YXhfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBTeW50YXhfbG9jYWwgPSBTeW50YXhfbG9jYWxcbiAgbW9kdWxlIHR5cGUgU3ludGF4Ml9sb2NhbCA9IFN5bnRheDJfbG9jYWxcbiAgbW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheCA9IFNfd2l0aG91dF9zeW50YXhcbiAgbW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheF9sb2NhbCA9IFNfd2l0aG91dF9zeW50YXhfbG9jYWxcbiAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgbW9kdWxlIHR5cGUgUzIgPSBTMlxuICBtb2R1bGUgdHlwZSBTMyA9IFMzXG4gIG1vZHVsZSB0eXBlIFNfaW5kZXhlZCA9IFNfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBTX2xvY2FsID0gU19sb2NhbFxuICBtb2R1bGUgdHlwZSBTMl9sb2NhbCA9IFMyX2xvY2FsXG5cbiAgbW9kdWxlIE1ha2UgKFggOiBCYXNpYykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudFxuICBtb2R1bGUgTWFrZTIgKFggOiBCYXNpYzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50XG4gIG1vZHVsZSBNYWtlMyAoWCA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudFxuXG4gIG1vZHVsZSBNYWtlX2luZGV4ZWQgKFggOiBCYXNpY19pbmRleGVkKSA6XG4gICAgU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50XG5cbiAgbW9kdWxlIE1ha2VfbG9jYWwgKFggOiBCYXNpY19sb2NhbCkgOiBTX2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudFxuICBtb2R1bGUgTWFrZTJfbG9jYWwgKFggOiBCYXNpYzJfbG9jYWwpIDogUzJfbG9jYWwgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50XG5cbiAgKCoqIERlZmluZSBhIG1vbmFkIHRocm91Z2ggYW4gaXNvbW9ycGhpc20gd2l0aCBhbiBleGlzdGluZyBtb25hZC4gRm9yIGV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgJ2EgdCA9IHsgdmFsdWUgOiAnYSB9XG5cbiAgICAgICAgaW5jbHVkZSBNb25hZC5PZl9tb25hZCAoTW9uYWQuSWRlbnQpIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgICAgICAgIGxldCB0b19tb25hZCB7IHZhbHVlIH0gPSB2YWx1ZVxuICAgICAgICAgICAgbGV0IG9mX21vbmFkIHZhbHVlID0geyB2YWx1ZSB9XG4gICAgICAgICAgZW5kKVxuICAgICAgXX0gKilcbiAgbW9kdWxlIE9mX21vbmFkXG4gICAgICAoTW9uYWQgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICdhIHQgLT4gJ2EgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogJ2EgTW9uYWQudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkMlxuICAgICAgKE1vbmFkIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiKSBNb25hZC50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udFxuXG4gIG1vZHVsZSBPZl9tb25hZDNcbiAgICAgIChNb25hZCA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYiwgJ2MpIE1vbmFkLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkX2luZGV4ZWRcbiAgICAgIChNb25hZCA6IFNfaW5kZXhlZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgTS50XG5cbiAgKCoqIEFuIGVhZ2VyIGlkZW50aXR5IG1vbmFkIHdpdGggZnVuY3Rpb25zIGhlYXZpbHkgYW5ub3RhdGVkIHdpdGhcbiAgICAgIFtAaW5saW5lZF0gb3IgW0BpbmxpbmUgaGludF0uXG5cbiAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBtYW51YWxseSB3cml0dGVuLCByYXRoZXIgdGhhbiBiZWluZ1xuICAgICAgY29uc3RydWN0ZWQgYnkgW01vbmFkLk1ha2VdLiBUaGlzIGdpdmVzIGJldHRlciBpbmxpbmluZ1xuICAgICAgZ3VhcmFudGVlcy5cbiAgKilcbiAgbW9kdWxlIElkZW50IDogU19sb2NhbCB3aXRoIHR5cGUgJ2EgdCA9ICdhXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBNb25hZF9pbnRmXG5cbm1vZHVsZSB0eXBlIEJhc2ljX2dlbmVyYWwgPSBzaWdcbiAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmRcbiAgICA6ICAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2ssICdkLCAnZSkgdClcbiAgICAtPiAoJ2IsICdpLCAnaywgJ2QsICdlKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmRcbiAgICAgIHwgYEN1c3RvbSBvZiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgICBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpLCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5lcmFsIChNIDogQmFzaWNfZ2VuZXJhbCkgPSBzdHJ1Y3RcbiAgbGV0IGJpbmQgPSBNLmJpbmRcbiAgbGV0IHJldHVybiA9IE0ucmV0dXJuXG4gIGxldCBtYXBfdmlhX2JpbmQgbWEgfmYgPSBNLmJpbmQgbWEgfmY6KGZ1biBhIC0+IE0ucmV0dXJuIChmIGEpKVxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIE0ubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfYmluZCAtPiBtYXBfdmlhX2JpbmRcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbW9kdWxlIE1vbmFkX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gICAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgZW5kXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0IGJvdGggYSBiID0gYSA+Pj0gZnVuIGEgLT4gYiA+PnwgZnVuIGIgLT4gYSwgYlxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBqb2luIHQgPSB0ID4+PSBmdW4gdCcgLT4gdCdcbiAgbGV0IGlnbm9yZV9tIHQgPSBtYXAgdCB+ZjooZnVuIF8gLT4gKCkpXG5cbiAgbGV0IGFsbCA9XG4gICAgbGV0IHJlYyBsb29wIHZzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiB2cylcbiAgICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gdiAtPiBsb29wICh2IDo6IHZzKSB0c1xuICAgIGluXG4gICAgZnVuIHRzIC0+IGxvb3AgW10gdHNcbiAgOztcblxuICBsZXQgcmVjIGFsbF91bml0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gKCkgLT4gYWxsX3VuaXQgdHNcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pbmRleGVkIChNIDogQmFzaWNfaW5kZXhlZCkgOlxuICBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSBNLnQgPSBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2opIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMyAoTSA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIE0udCA9XG4gIE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UyIChNIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdkKSB0IDo9ICgnYSwgJ2QpIE0udCA9IE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoTSA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMl9sb2NhbCAoTSA6IEJhc2ljMl9sb2NhbCkgPSBzdHJ1Y3RcbiAgbGV0IGJpbmQgPSBNLmJpbmRcbiAgbGV0IHJldHVybiA9IE0ucmV0dXJuXG5cbiAgbGV0IG1hcF92aWFfYmluZCBtYSB+ZiA9XG4gICAgbGV0IHJlcyA9IE0uYmluZCBtYSB+ZjooZnVuIGEgLT4gTS5yZXR1cm4gKGYgYSkpIGluXG4gICAgcmVzXG4gIDs7XG5cbiAgbGV0IG1hcCA9XG4gICAgbWF0Y2ggTS5tYXAgd2l0aFxuICAgIHwgYERlZmluZV91c2luZ19iaW5kIC0+IG1hcF92aWFfYmluZFxuICAgIHwgYEN1c3RvbSB4IC0+IHhcbiAgOztcblxuICBtb2R1bGUgTW9uYWRfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcbiAgICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG5cbiAgICAgIGxldCBib3RoIGEgYiA9XG4gICAgICAgIGxldCByZXMgPVxuICAgICAgICAgIGJpbmQgYSB+ZjooZnVuIGEgLT5cbiAgICAgICAgICAgIGxldCByZXMgPSBtYXAgYiB+ZjooZnVuIGIgLT4gYSwgYikgaW5cbiAgICAgICAgICAgIHJlcylcbiAgICAgICAgaW5cbiAgICAgICAgcmVzXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBqb2luIHQgPSB0ID4+PSBGbi5pZFxuXG4gIGxldCBpZ25vcmVfbSB0ID1cbiAgICBsZXQgcmVzID0gbWFwIHQgfmY6KGZ1biBfIC0+ICgpKSBpblxuICAgIHJlc1xuICA7O1xuXG4gIGxldCBhbGwgPVxuICAgIGxldCByZWMgbG9vcCB2cyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoTGlzdC5yZXYgdnMpXG4gICAgICB8IHQgOjogdHMgLT4gdCA+Pj0gZnVuIHYgLT4gbG9vcCAodiA6OiB2cykgdHNcbiAgICBpblxuICAgIGZ1biB0cyAtPiBsb29wIFtdIHRzXG4gIDs7XG5cbiAgbGV0IHJlYyBhbGxfdW5pdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICB8IHQgOjogdHMgLT4gdCA+Pj0gZnVuICgpIC0+IGFsbF91bml0IHRzXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfbG9jYWwgKE0gOiBCYXNpY19sb2NhbCkgOiBTX2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9XG4gIE1ha2UyX2xvY2FsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICdhIE0udFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZF9nZW5lcmFsIChNb25hZCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuXG4gICAgdmFsIGJpbmRcbiAgICAgIDogICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAgIC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrLCAnZCwgJ2UpIHQpXG4gICAgICAtPiAoJ2IsICdpLCAnaywgJ2QsICdlKSB0XG5cbiAgICB2YWwgbWFwIDogKCdhLCAnaSwgJ2osICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSwgJ2QsICdlKSB0XG4gIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcblxuICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgLT4gKCdhLCAnaSwgJ2osICdkLCAnZSkgTW9uYWQudFxuICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIE1vbmFkLnQgLT4gKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgICAgICBlbmQpID1cbiAgTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaiwgJ2QsICdlKSBNLnRcblxuICAgIGxldCByZXR1cm4gYSA9IE0ub2ZfbW9uYWQgKE1vbmFkLnJldHVybiBhKVxuICAgIGxldCBiaW5kIHQgfmYgPSBNLm9mX21vbmFkIChNb25hZC5iaW5kIChNLnRvX21vbmFkIHQpIH5mOihmdW4gYSAtPiBNLnRvX21vbmFkIChmIGEpKSlcbiAgICBsZXQgbWFwID0gYEN1c3RvbSAoZnVuIHQgfmYgLT4gTS5vZl9tb25hZCAoTW9uYWQubWFwIChNLnRvX21vbmFkIHQpIH5mKSlcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWRfaW5kZXhlZFxuICAgIChNb25hZCA6IFNfaW5kZXhlZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhLCAnaSwgJ2opIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaikgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQzXG4gICAgKE1vbmFkIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiLCAnYykgTW9uYWQudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QsICdlKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQyXG4gICAgKE1vbmFkIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiKSBNb25hZC50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZFxuICAgIChNb25hZCA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAnYSB0IC0+ICdhIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAnYSBNb25hZC50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE0udFxuICAgIGVuZClcblxubW9kdWxlIElkZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgbGV0W0BpbmxpbmVdIGJpbmQgYSB+ZiA9IChmIFtAaW5saW5lZCBoaW50XSkgYVxuICBsZXRbQGlubGluZV0gbWFwIGEgfmYgPSAoZiBbQGlubGluZWQgaGludF0pIGFcblxuICBleHRlcm5hbCByZXR1cm4gOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG5cbiAgbW9kdWxlIE1vbmFkX2luZml4ID0gc3RydWN0XG4gICAgbGV0W0BpbmxpbmVdICggPj58ICkgYSBmID0gbWFwIGEgfmZcbiAgICBsZXRbQGlubGluZV0gKCA+Pj0gKSBhIGYgPSBiaW5kIGEgfmZcbiAgZW5kXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0W0BpbmxpbmVdIGJvdGggYSBiID0gYSwgYlxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gIGVuZFxuXG4gIGV4dGVybmFsIGpvaW4gOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIGlnbm9yZV9tIDogKF9bQGxvY2FsX29wdF0pIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuICBleHRlcm5hbCBhbGxfdW5pdCA6ICh1bml0IGxpc3RbQGxvY2FsX29wdF0pIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuICBleHRlcm5hbCBhbGwgOiAoJ2EgbGlzdFtAbG9jYWxfb3B0XSkgLT4gKCdhIGxpc3RbQGxvY2FsX29wdF0pID0gXCIlaWRlbnRpdHlcIlxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXBwbGljYXRpdmVfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG4oKiogVGhpcyBtb2R1bGUgc2VydmVzIG1vc3RseSBhcyBhIHBhcnRpYWwgY2hlY2sgdGhhdCBbUzJdIGFuZCBbU10gYXJlIGluIHN5bmMsIGJ1dFxuICAgIGFjdHVhbGx5IGNhbGxpbmcgaXQgaXMgb2NjYXNpb25hbGx5IHVzZWZ1bC4gKilcbm1vZHVsZSBTX3RvX1MyIChYIDogUykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUyAoVCA6IFQuVCkgKFggOiBTMikgOiBTIHdpdGggdHlwZSAnYSB0ID0gKCdhLCBULnQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICdhIHQgPSAoJ2EsIFQudCkgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MzIChYIDogUzIpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbmVuZFxuXG5tb2R1bGUgUzNfdG9fUzIgKFQgOiBULlQpIChYIDogUzMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2QpIHQgPSAoJ2EsICdkLCBULnQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2QpIHQgPSAoJ2EsICdkLCBULnQpIFgudFxuZW5kXG5cbm1vZHVsZSBTM190b19TIChUMSA6IFQuVCkgKFQyIDogVC5UKSAoWCA6IFMzKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIFQxLnQsIFQyLnQpIFgudCA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAnYSB0ID0gKCdhLCBUMS50LCBUMi50KSBYLnRcbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBCYXNpYzMpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgbGV0ICggPCo+ICkgPSBhcHBseVxuICBsZXQgZGVyaXZlZF9tYXAgdCB+ZiA9IHJldHVybiBmIDwqPiB0XG5cbiAgbGV0IG1hcCA9XG4gICAgbWF0Y2ggWC5tYXAgd2l0aFxuICAgIHwgYERlZmluZV91c2luZ19hcHBseSAtPiBkZXJpdmVkX21hcFxuICAgIHwgYEN1c3RvbSB4IC0+IHhcbiAgOztcblxuICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBsZXQgbWFwMiB0YSB0YiB+ZiA9IG1hcCB+ZiB0YSA8Kj4gdGJcbiAgbGV0IG1hcDMgdGEgdGIgdGMgfmYgPSBtYXAgfmYgdGEgPCo+IHRiIDwqPiB0Y1xuICBsZXQgYWxsIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OihyZXR1cm4gW10pIH5mOihtYXAyIH5mOihmdW4geCB4cyAtPiB4IDo6IHhzKSlcbiAgbGV0IGJvdGggdGEgdGIgPSBtYXAyIHRhIHRiIH5mOihmdW4gYSBiIC0+IGEsIGIpXG4gIGxldCAoICo+ICkgdSB2ID0gcmV0dXJuIChmdW4gKCkgeSAtPiB5KSA8Kj4gdSA8Kj4gdlxuICBsZXQgKCA8KiApIHUgdiA9IHJldHVybiAoZnVuIHggKCkgLT4geCkgPCo+IHUgPCo+IHZcbiAgbGV0IGFsbF91bml0IHRzID0gTGlzdC5mb2xkIHRzIH5pbml0OihyZXR1cm4gKCkpIH5mOiggKj4gKVxuXG4gIG1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoIDwqPiApID0gKCA8Kj4gKVxuICAgIGxldCAoICo+ICkgPSAoICo+IClcbiAgICBsZXQgKCA8KiApID0gKCA8KiApXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlMiAoWCA6IEJhc2ljMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnQgPSBNYWtlMyAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2UgKFggOiBCYXNpYykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudCA9IE1ha2UyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2xldF9zeW50YXgzXG4gICAgKFggOiBGb3JfbGV0X3N5bnRheDMpIChJbnRmIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAoSW1wbCA6IEludGYuUykgPVxuc3RydWN0XG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBYXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBJbXBsXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX2xldF9zeW50YXgyXG4gICAgKFggOiBGb3JfbGV0X3N5bnRheDIpIChJbnRmIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAoSW1wbCA6IEludGYuUykgPVxuICBNYWtlX2xldF9zeW50YXgzXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBYXG5cbiAgICAgIHR5cGUgKCdhLCAnZCwgXykgdCA9ICgnYSwgJ2QpIFgudFxuICAgIGVuZClcbiAgICAoSW50ZilcbiAgICAoSW1wbClcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheFxuICAgIChYIDogRm9yX2xldF9zeW50YXgpIChJbnRmIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgKEltcGwgOiBJbnRmLlMpID1cbiAgTWFrZV9sZXRfc3ludGF4MlxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgWFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFgudFxuICAgIGVuZClcbiAgICAoSW50ZilcbiAgICAoSW1wbClcblxuKCoqIFRoaXMgZnVuY3RvciBjbG9zZWx5IHJlc2VtYmxlcyBbTWFrZTNdLCBhbmQgaW5kZWVkIGl0IGNvdWxkIGJlIGltcGxlbWVudGVkXG4gICAgbXVjaCBzaG9ydGVyIGluIHRlcm1zIG9mIFtNYWtlM10uIEhvd2V2ZXIsIHdlIGltcGxlbWVudCBpdCBieSBoYW5kIHNvIHRoYXRcbiAgICB0aGUgcmVzdWx0aW5nIGZ1bmN0aW9ucyBhcmUgbW9yZSBlZmZpY2llbnQsIGUuZy4gdXNpbmcgW21hcDJdIGRpcmVjdGx5IGluc3RlYWQgb2ZcbiAgICBkZWZpbmluZyBbYXBwbHldIGluIHRlcm1zIG9mIGl0IGFuZCB0aGVuIFttYXAyXSBpbiB0ZXJtcyBvZiB0aGF0LiBGb3IgbW9zdFxuICAgIGFwcGxpY2F0aXZlcyB0aGlzIGRvZXMgbm90IG1hdHRlciwgYnV0IGZvciBzb21lIChzdWNoIGFzIEJvbnNhaS5WYWx1ZS50KSwgaXQgaGFzIGFcbiAgICBsYXJnZXIgaW1wYWN0LiAqKVxubW9kdWxlIE1ha2UzX3VzaW5nX21hcDIgKFggOiBCYXNpYzNfdXNpbmdfbWFwMikgOlxuICBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICBsZXQgYXBwbHkgdGYgdGEgPSBtYXAyIHRmIHRhIH5mOihmdW4gZiBhIC0+IGYgYSlcbiAgbGV0ICggPCo+ICkgPSBhcHBseVxuICBsZXQgZGVyaXZlZF9tYXAgdCB+ZiA9IHJldHVybiBmIDwqPiB0XG5cbiAgbGV0IG1hcCA9XG4gICAgbWF0Y2ggWC5tYXAgd2l0aFxuICAgIHwgYERlZmluZV91c2luZ19tYXAyIC0+IGRlcml2ZWRfbWFwXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBib3RoIHRhIHRiID0gbWFwMiB0YSB0YiB+ZjooZnVuIGEgYiAtPiBhLCBiKVxuICBsZXQgbWFwMyB0YSB0YiB0YyB+ZiA9IG1hcDIgKG1hcDIgdGEgdGIgfmYpIHRjIH5mOihmdW4gZmFiIGMgLT4gZmFiIGMpXG4gIGxldCBhbGwgdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6KHJldHVybiBbXSkgfmY6KG1hcDIgfmY6KGZ1biB4IHhzIC0+IHggOjogeHMpKVxuICBsZXQgKCAqPiApIHUgdiA9IG1hcDIgdSB2IH5mOihmdW4gKCkgeSAtPiB5KVxuICBsZXQgKCA8KiApIHUgdiA9IG1hcDIgdSB2IH5mOihmdW4geCAoKSAtPiB4KVxuICBsZXQgYWxsX3VuaXQgdHMgPSBMaXN0LmZvbGQgdHMgfmluaXQ6KHJldHVybiAoKSkgfmY6KCAqPiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgbGV0ICggKj4gKSA9ICggKj4gKVxuICAgIGxldCAoIDwqICkgPSAoIDwqIClcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UyX3VzaW5nX21hcDIgKFggOiBCYXNpYzJfdXNpbmdfbWFwMikgOlxuICBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnQgPSBNYWtlM191c2luZ19tYXAyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19tYXAyIChYIDogQmFzaWNfdXNpbmdfbWFwMikgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudCA9XG4gIE1ha2UyX3VzaW5nX21hcDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2UzX3VzaW5nX21hcDJfbG9jYWwgKFggOiBCYXNpYzNfdXNpbmdfbWFwMl9sb2NhbCkgOlxuICBTM19sb2NhbCB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICBsZXQgYXBwbHkgdGYgdGEgPSBtYXAyIHRmIHRhIH5mOihmdW4gZiBhIC0+IGYgYSlcbiAgbGV0ICggPCo+ICkgPSBhcHBseVxuICBsZXQgZGVyaXZlZF9tYXAgdCB+ZiA9IG1hcDIgfmY6KGZ1biAoKSAtPiBmKSAocmV0dXJuICgpKSB0IFtAbm9udGFpbF1cblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBYLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX21hcDIgLT4gZGVyaXZlZF9tYXBcbiAgICB8IGBDdXN0b20gbWFwIC0+IG1hcFxuICA7O1xuXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBib3RoIHRhIHRiID0gbWFwMiB0YSB0YiB+ZjooZnVuIGEgYiAtPiBhLCBiKVxuXG4gIGxldCBtYXAzIHRhIHRiIHRjIH5mID1cbiAgICBsZXQgcmVzID0gbWFwMiAoYm90aCB0YSB0YikgdGMgfmY6KGZ1biAoYSwgYikgYyAtPiBmIGEgYiBjKSBpblxuICAgIHJlc1xuICA7O1xuXG4gIGxldCBhbGwgdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6KHJldHVybiBbXSkgfmY6KG1hcDIgfmY6KGZ1biB4IHhzIC0+IHggOjogeHMpKVxuICBsZXQgKCAqPiApIHUgdiA9IG1hcDIgdSB2IH5mOihmdW4gKCkgeSAtPiB5KVxuICBsZXQgKCA8KiApIHUgdiA9IG1hcDIgdSB2IH5mOihmdW4geCAoKSAtPiB4KVxuICBsZXQgYWxsX3VuaXQgdHMgPSBMaXN0LmZvbGQgdHMgfmluaXQ6KHJldHVybiAoKSkgfmY6KCAqPiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgbGV0ICggKj4gKSA9ICggKj4gKVxuICAgIGxldCAoIDwqICkgPSAoIDwqIClcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UyX3VzaW5nX21hcDJfbG9jYWwgKFggOiBCYXNpYzJfdXNpbmdfbWFwMl9sb2NhbCkgOlxuICBTMl9sb2NhbCB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnQgPSBNYWtlM191c2luZ19tYXAyX2xvY2FsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19tYXAyX2xvY2FsIChYIDogQmFzaWNfdXNpbmdfbWFwMl9sb2NhbCkgOlxuICBTX2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudCA9IE1ha2UyX3VzaW5nX21hcDJfbG9jYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkMiAoTSA6IE1vbmFkLlMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIE0udCA9IE1ha2UyIChzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlKSBNLnRcblxuICAgIGxldCByZXR1cm4gPSBNLnJldHVyblxuICAgIGxldCBhcHBseSBtZiBteCA9IE0uYmluZCBtZiB+ZjooZnVuIGYgLT4gTS5tYXAgbXggfmYpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gTS5tYXBcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQgKE0gOiBNb25hZC5TKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gT2ZfbW9uYWQyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgTS50XG4gIGVuZClcblxubW9kdWxlIENvbXBvc2UgKEYgOiBTKSAoRyA6IFMpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICdhIEYudCBHLnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgRi50IEcudFxuXG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgcmV0dXJuIGEgPSBHLnJldHVybiAoRi5yZXR1cm4gYSlcbiAgICAgIGxldCBhcHBseSB0ZiB0eCA9IEcuYXBwbHkgKEcubWFwIH5mOkYuYXBwbHkgdGYpIHR4XG4gICAgICBsZXQgY3VzdG9tX21hcCB0IH5mID0gRy5tYXAgfmY6KEYubWFwIH5mKSB0XG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBjdXN0b21fbWFwXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBQYWlyIChGIDogUykgKEcgOiBTKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAnYSBGLnQgKiAnYSBHLnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgRi50ICogJ2EgRy50XG5cbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCByZXR1cm4gYSA9IEYucmV0dXJuIGEsIEcucmV0dXJuIGFcbiAgICAgIGxldCBhcHBseSB0ZiB0eCA9IEYuYXBwbHkgKGZzdCB0ZikgKGZzdCB0eCksIEcuYXBwbHkgKHNuZCB0ZikgKHNuZCB0eClcbiAgICAgIGxldCBjdXN0b21fbWFwIHQgfmYgPSBGLm1hcCB+ZiAoZnN0IHQpLCBHLm1hcCB+ZiAoc25kIHQpXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBjdXN0b21fbWFwXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICd3aXRuZXNzKSB0ID1cbiAgeyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gIH1cblxudHlwZSAoJ2EsICdiKSBjb21wYXJhdG9yID0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhIHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfZmMgPSBzaWdcbiAgdHlwZSBjb21wYXJhYmxlX3RcblxuICBpbmNsdWRlIFMgd2l0aCB0eXBlIHQgOj0gY29tcGFyYWJsZV90XG5lbmRcblxubW9kdWxlIE1vZHVsZSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnYilcbmVuZFxuXG5sZXQgbWFrZSAodHlwZSB0KSB+Y29tcGFyZSB+c2V4cF9vZl90ID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIGNvbXBhcmFibGVfdCA9IHRcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSB7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGVuZCA6IFNfZmNcbiAgICB3aXRoIHR5cGUgY29tcGFyYWJsZV90ID0gdClcbjs7XG5cbm1vZHVsZSBTX3RvX1MxIChTIDogUykgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gUy50XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gUy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBvcGVuIFNcblxuICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBNLnsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgTWFrZTEgKE0gOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBjb21wYXJlIDogJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBzZXhwX29mX3QgOiAnYSB0IC0+IFNleHAudFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gTS57IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcblxuICBpbmNsdWRlIE1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgIGxldCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90IF8gPSBTZXhwLkF0b20gXCJfXCJcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZCA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAhJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvciA6ICgnYSwgJ2NtcCkgY29tcGFyYXRvciAtPiAoJ2EgdCwgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgRGVyaXZlZCAoTSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlICEnY21wIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmU7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAoISdjbXBfYSwgISdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3JcbiAgICA6ICAoJ2EsICdjbXBfYSkgY29tcGFyYXRvclxuICAgIC0+ICgnYiwgJ2NtcF9iKSBjb21wYXJhdG9yXG4gICAgLT4gKCgnYSwgJ2IpIHQsICgnY21wX2EsICdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWQyIChNIDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoISdjbXBfYSwgISdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSBiID1cbiAgICB7IGNvbXBhcmUgPSBNLmNvbXBhcmUgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgIDsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgYi5zZXhwX29mX3RcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZF9waGFudG9tID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdjbXAgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3JcbiAgICA6ICAoJ2EsICdjbXApIGNvbXBhcmF0b3JcbiAgICAtPiAoKCdhLCBfKSB0LCAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkX3BoYW50b20gKE0gOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wYXJlIDogKCdhIC0+ICdhIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICAgIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cC50KSAtPiAoJ2EsIF8pIHQgLT4gU2V4cC50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgJ2NtcF9hIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmU7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkMl9waGFudG9tID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcbiAgdHlwZSAoISdjbXBfYSwgISdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3JcbiAgICA6ICAoJ2EsICdjbXBfYSkgY29tcGFyYXRvclxuICAgIC0+ICgnYiwgJ2NtcF9iKSBjb21wYXJhdG9yXG4gICAgLT4gKCgnYSwgJ2IsIF8pIHQsICgnY21wX2EsICdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWQyX3BoYW50b20gKE0gOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcGFyZVxuICAgICAgOiAgKCdhIC0+ICdhIC0+IGludClcbiAgICAgIC0+ICgnYiAtPiAnYiAtPiBpbnQpXG4gICAgICAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgIC0+IGludFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwLnQpIC0+ICgnYiAtPiBTZXhwLnQpIC0+ICgnYSwgJ2IsIF8pIHQgLT4gU2V4cC50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgKCEnY21wX2EsICEnY21wX2IpIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgYiA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZSBiLmNvbXBhcmVcbiAgICA7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IGIuc2V4cF9vZl90XG4gICAgfVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2YsICdzKSB0ID1cbiAgfCBGaXJzdCBvZiAnZlxuICB8IFNlY29uZCBvZiAnc1xuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgOlxuICAnZiAncy4gKCdmIC0+ICdmIC0+IGludCkgLT4gKCdzIC0+ICdzIC0+IGludCkgLT4gKCdmLCAncykgdCAtPiAoJ2YsICdzKSB0IC0+IGludFxuICA9XG4gIGZ1biBfY21wX19mIF9jbXBfX3MgYV9fMDAxXyBiX18wMDJfIC0+XG4gIGlmIFN0ZGxpYi4oID09ICkgYV9fMDAxXyBiX18wMDJfXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBhX18wMDFfLCBiX18wMDJfIHdpdGhcbiAgICB8IEZpcnN0IF9hX18wMDNfLCBGaXJzdCBfYl9fMDA0XyAtPiBfY21wX19mIF9hX18wMDNfIF9iX18wMDRfXG4gICAgfCBGaXJzdCBfLCBfIC0+IC0xXG4gICAgfCBfLCBGaXJzdCBfIC0+IDFcbiAgICB8IFNlY29uZCBfYV9fMDA1XywgU2Vjb25kIF9iX18wMDZfIC0+IF9jbXBfX3MgX2FfXzAwNV8gX2JfXzAwNl8pXG47O1xuXG5sZXQgaGFzaF9mb2xkX3RcbiAgOiB0eXBlIGYgcy5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGYgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gKGYsIHMpIHRcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9mIF9oYXNoX2ZvbGRfcyBoc3YgYXJnIC0+XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgRmlyc3QgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX2YgaHN2IF9hMFxuICB8IFNlY29uZCBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfcyBoc3YgX2EwXG47O1xuXG5sZXQgdF9vZl9zZXhwIDpcbiAgJ2YgJ3MuXG4gIChTZXhwbGliMC5TZXhwLnQgLT4gJ2YpIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ3MpIC0+IFNleHBsaWIwLlNleHAudCAtPiAoJ2YsICdzKSB0XG4gID1cbiAgZnVuICh0eXBlIGZfXzAyM18gc19fMDI0XylcbiAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGZfXzAyM18pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gc19fMDI0XykgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgICAgICAgLT4gKGZfXzAyM18sIHNfXzAyNF8pIHQpIC0+XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDExXyA9IFwiZWl0aGVyMC5tbC50XCIgaW5cbiAgICBmdW4gX29mX2ZfXzAwN18gX29mX3NfXzAwOF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiZmlyc3RcIiB8IFwiRmlyc3RcIikgYXMgX3RhZ19fMDE0XykgOjogc2V4cF9hcmdzX18wMTVfKSBhc1xuICAgICAgICBfc2V4cF9fMDEzXyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTVfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMTZfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAxN18gPSBfb2ZfZl9fMDA3XyBhcmcwX18wMTZfIGluXG4gICAgICAgICAgIEZpcnN0IHJlczBfXzAxN19cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMTFfXG4gICAgICAgICAgICAgX3RhZ19fMDE0X1xuICAgICAgICAgICAgIF9zZXhwX18wMTNfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJzZWNvbmRcIiB8IFwiU2Vjb25kXCIpIGFzIF90YWdfXzAxOV8pIDo6IHNleHBfYXJnc19fMDIwXykgYXNcbiAgICAgICAgX3NleHBfXzAxOF8gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDIwXyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDIxXyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMjJfID0gX29mX3NfXzAwOF8gYXJnMF9fMDIxXyBpblxuICAgICAgICAgICBTZWNvbmQgcmVzMF9fMDIyX1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAxMV9cbiAgICAgICAgICAgICBfdGFnX18wMTlfXG4gICAgICAgICAgICAgX3NleHBfXzAxOF8pXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJmaXJzdFwiIHwgXCJGaXJzdFwiKSBhcyBzZXhwX18wMTJfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInNlY29uZFwiIHwgXCJTZWNvbmRcIikgYXMgc2V4cF9fMDEyXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTJfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDEwXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMF9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAxMF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMF9cbiAgICAgIHwgc2V4cF9fMDEwXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTBfXG47O1xuXG5sZXQgc2V4cF9vZl90IDpcbiAgJ2YgJ3MuXG4gICgnZiAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgncyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnZiwgJ3MpIHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gID1cbiAgZnVuICh0eXBlIGZfXzAzMV8gc19fMDMyXylcbiAgICAgIDogICgoZl9fMDMxXyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChzX18wMzJfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAtPiAoZl9fMDMxXywgc19fMDMyXykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9mX18wMjVfIF9vZl9zX18wMjZfIC0+IGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IGFyZzBfXzAyN18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAyOF8gPSBfb2ZfZl9fMDI1XyBhcmcwX18wMjdfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkZpcnN0XCI7IHJlczBfXzAyOF8gXVxuICAgICAgfCBTZWNvbmQgYXJnMF9fMDI5XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDMwXyA9IF9vZl9zX18wMjZfIGFyZzBfXzAyOV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2Vjb25kXCI7IHJlczBfXzAzMF8gXVxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyIDpcbiAgJ2YgJ3MuXG4gICdmIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gIC0+ICdzIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gIC0+ICgnZiwgJ3MpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBmdW4gXydmX3NleHBfZ3JhbW1hciBfJ3Nfc2V4cF9ncmFtbWFyIC0+XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJGaXJzdFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nZl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiU2Vjb25kXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydzX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuIiwiKCogVGhlIHR5cGUgW3RdIHNob3VsZCBiZSBhYnN0cmFjdCB0byBtYWtlIHRoZSBmc2V0IGFuZCBzZXQgZnVuY3Rpb25zIHVuYXZhaWxhYmxlXG4gICBmb3IgcHJpdmF0ZSB0eXBlcyBhdCB0aGUgbGV2ZWwgb2YgdHlwZXMgKGFuZCBub3QgYnkgcHV0dGluZyBOb25lIGluIHRoZSBmaWVsZCkuXG4gICBVbmZvcnR1bmF0ZWx5LCBtYWtpbmcgdGhlIHR5cGUgYWJzdHJhY3QgbWVhbnMgdGhhdCB3aGVuIGNyZWF0aW5nIGZpZWxkcyAodGhyb3VnaFxuICAgYSBbY3JlYXRlXSBmdW5jdGlvbikgdmFsdWUgcmVzdHJpY3Rpb24ga2lja3MgaW4uIFRoaXMgaXMgd29ya2VkIGFyb3VuZCBieSBpbnN0ZWFkXG4gICBub3QgbWFraW5nIHRoZSB0eXBlIGFic3RyYWN0LCBidXQgZm9yY2luZyBhbnlvbmUgYnJlYWtpbmcgdGhlIGFic3RyYWN0aW9uIHRvIHVzZVxuICAgdGhlIFtGb3JfZ2VuZXJhdGVkX2NvZGVdIG1vZHVsZSwgbWFraW5nIGl0IG9idmlvdXMgdG8gYW55IHJlYWRlciB0aGF0IHNvbWV0aGluZyB1Z2x5XG4gICBpcyBnb2luZyBvbi5cbiAgIHRfd2l0aF9wZXJtIChhbmQgZGVyaXZhdGl2ZXMpIGlzIHRoZSB0eXBlIHRoYXQgdXNlcnMgcmVhbGx5IHVzZS4gSXQgaXMgYSBjb25zdHJ1Y3RvclxuICAgYmVjYXVzZTpcbiAgIDEuIGl0IG1ha2VzIHR5cGUgZXJyb3JzIG1vcmUgcmVhZGFibGUgKGxlc3MgYWxpYXNpbmcpXG4gICAyLiB0aGUgdHlwZXIgaW4gb2NhbWwgNC4wMSBhbGxvd3MgdGhpczpcblxuICAge1tcbiAgICAgbW9kdWxlIEEgPSBzdHJ1Y3RcbiAgICAgICB0eXBlIHQgPSB7YSA6IGludH1cbiAgICAgZW5kXG4gICAgIHR5cGUgdCA9IEEudFxuICAgICBsZXQgZiAoeCA6IHQpID0geC5hXG4gICBdfVxuXG4gICAoYWx0aG91Z2ggd2l0aCBXYXJuaW5nIDQwOiBhIGlzIHVzZWQgb3V0IG9mIHNjb3BlKVxuICAgd2hpY2ggbWVhbnMgdGhhdCBpZiBbdF93aXRoX3Blcm1dIHdhcyByZWFsbHkgYW4gYWxpYXMgb24gW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSxcbiAgIHBlb3BsZSBjb3VsZCBzYXkgW3Quc2V0dGVyXSBhbmQgYnJlYWsgdGhlIGFic3RyYWN0aW9uIHdpdGggbm8gaW5kaWNhdGlvbiB0aGF0XG4gICBzb21ldGhpbmcgdWdseSBpcyBnb2luZyBvbiBpbiB0aGUgc291cmNlIGNvZGUuXG4gICBUaGUgd2FybmluZyBpcyAoSSB0aGluaykgZm9yIHBlb3BsZSB3aG8gd2FudCB0byBtYWtlIHRoZWlyIGNvZGUgY29tcGF0aWJsZSB3aXRoXG4gICBwcmV2aW91cyB2ZXJzaW9ucyBvZiBvY2FtbCwgc28gd2UgbWF5IHZlcnkgd2VsbCB0dXJuIGl0IG9mZi5cblxuICAgVGhlIHR5cGUgdF93aXRoX3Blcm0gY291bGQgYWxzbyBoYXZlIGJlZW4gYSBbdW5pdCAtPiBGb3JfZ2VuZXJhdGVkX2NvZGUudF0gdG8gd29ya1xuICAgYXJvdW5kIHZhbHVlIHJlc3RyaWN0aW9uIGFuZCB0aGVuIFtGb3JfZ2VuZXJhdGVkX2NvZGUudF0gd291bGQgaGF2ZSBiZWVuIGEgcHJvcGVyXG4gICBhYnN0cmFjdCB0eXBlLCBidXQgaXQgbG9va3MgbGlrZSBpdCBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2UgKGZvciBleGFtcGxlLCBhIGZvbGQgb24gYVxuICAgcmVjb3JkIHR5cGUgd2l0aCA0MCBmaWVsZHMgd291bGQgYWN0dWFsbHkgYWxsb2NhdGUgdGhlIDQwIFtGb3JfZ2VuZXJhdGVkX2NvZGUudF0ncyBhdFxuICAgZXZlcnkgc2luZ2xlIGZvbGQuKSAqKVxuXG5tb2R1bGUgRm9yX2dlbmVyYXRlZF9jb2RlID0gc3RydWN0XG4gIHR5cGUgKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHQgPVxuICAgIHsgZm9yY2VfdmFyaWFuY2UgOiAncGVybSAtPiB1bml0XG4gICAgOyAoKiBmb3JjZSBbdF0gdG8gYmUgY29udHJhdmFyaWFudCBpbiBbJ3Blcm1dLCBiZWNhdXNlIHBoYW50b20gdHlwZSB2YXJpYWJsZXMgb25cbiAgICAgICAgIGNvbmNyZXRlIHR5cGVzIGRvbid0IHdvcmsgdGhhdCB3ZWxsIG90aGVyd2lzZSAodXNpbmcgOj4gY2FuIHJlbW92ZSB0aGVtIGVhc2lseSkgKilcbiAgICAgIG5hbWUgOiBzdHJpbmdcbiAgICA7IHNldHRlciA6ICgncmVjb3JkIC0+ICdmaWVsZCAtPiB1bml0KSBvcHRpb25cbiAgICA7IGdldHRlciA6ICdyZWNvcmQgLT4gJ2ZpZWxkXG4gICAgOyBmc2V0IDogJ3JlY29yZCAtPiAnZmllbGQgLT4gJ3JlY29yZFxuICAgIH1cblxuICBsZXQgb3BhcXVlX2lkZW50aXR5ID0gU3lzMC5vcGFxdWVfaWRlbnRpdHlcbmVuZFxuXG50eXBlICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybSA9XG4gIHwgRmllbGQgb2YgKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIEZvcl9nZW5lcmF0ZWRfY29kZS50XG5bQEB1bmJveGVkXVxuXG50eXBlICgncmVjb3JkLCAnZmllbGQpIHQgPSAoWyBgUmVhZCB8IGBTZXRfYW5kX2NyZWF0ZSBdLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtXG50eXBlICgncmVjb3JkLCAnZmllbGQpIHJlYWRvbmx5X3QgPSAoWyBgUmVhZCBdLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtXG5cbmxldCBuYW1lIChGaWVsZCBmaWVsZCkgPSBmaWVsZC5uYW1lXG5sZXQgZ2V0IChGaWVsZCBmaWVsZCkgciA9IGZpZWxkLmdldHRlciByXG5sZXQgZnNldCAoRmllbGQgZmllbGQpIHIgdiA9IGZpZWxkLmZzZXQgciB2XG5sZXQgc2V0dGVyIChGaWVsZCBmaWVsZCkgPSBmaWVsZC5zZXR0ZXJcblxudHlwZSAoJ3Blcm0sICdyZWNvcmQsICdyZXN1bHQpIHVzZXIgPVxuICB7IGYgOiAnZmllbGQuICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybSAtPiAncmVzdWx0IH1cblxubGV0IG1hcCAoRmllbGQgZmllbGQpIHIgfmYgPSBmaWVsZC5mc2V0IHIgKGYgKGZpZWxkLmdldHRlciByKSlcblxubGV0IHVwZGF0ZXIgKEZpZWxkIGZpZWxkKSA9XG4gIG1hdGNoIGZpZWxkLnNldHRlciB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBzZXR0ZXIgLT4gU29tZSAoZnVuIHIgfmYgLT4gc2V0dGVyIHIgKGYgKGZpZWxkLmdldHRlciByKSkpXG47O1xuIiwiKCogW1N0cmluZzBdIGRlZmluZXMgc3RyaW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpblxuICAgdGVybXMgb2YgW1N0ZGxpYi5TdHJpbmddLiBbU3RyaW5nMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mXG4gICBbU3RkbGliLlN0cmluZ10gdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBzdHJpbmcwLm1sIHNob3VsZFxuICAgdXNlIFtTdGRsaWIuU3RyaW5nXS4gIFtTdHJpbmcwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3NcbiAgIGJ1aWxkIG9yZGVyLlxuXG4gICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIHN0cmluZ3MsIGluY2x1ZGluZyB0aGUgc3Vic2NyaXB0IHN5bnRheCBbeC5baV1dIHdoaWNoXG4gICB0aGUgT0NhbWwgcGFyc2VyIGRlc3VnYXJzIGludG8gY2FsbHMgdG8gW1N0cmluZ10sIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5TdHJpbmddIGluXG4gICBidWlsZCBvcmRlciBzaG91bGQgZG9cblxuICAge1tcbiAgICAgbW9kdWxlIFN0cmluZyA9IFN0cmluZzBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgU3RyaW5nID0gU3RyaW5nMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50c1xuICAgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5TdHJpbmddLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGV4dGVybmFsIGdldCA6IChzdHJpbmdbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiAoc3RyaW5nW0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgOiAgKHN0cmluZ1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGNoYXJcbiAgICA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmVuZFxuXG5pbmNsdWRlIFN0cmluZ1xuXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxubGV0ICggXiApID0gKCBeIClcbmxldCBjYXBpdGFsaXplID0gU3RkbGliLlN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG5sZXQgY29tcGFyZSA9IFN0ZGxpYi5TdHJpbmcuY29tcGFyZVxubGV0IGVzY2FwZWQgPSBTdGRsaWIuU3RyaW5nLmVzY2FwZWRcbmxldCBsb3dlcmNhc2UgPSBTdGRsaWIuU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxubGV0IG1ha2UgPSBTdGRsaWIuU3RyaW5nLm1ha2VcbmxldCBzdWIgPSBTdGRsaWIuU3RyaW5nLnN1YlxubGV0IHVuY2FwaXRhbGl6ZSA9IFN0ZGxpYi5TdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpXG5sZXQgdW5zYWZlX2JsaXQgPSBTdGRsaWIuU3RyaW5nLnVuc2FmZV9ibGl0XG5sZXQgdXBwZXJjYXNlID0gU3RkbGliLlN0cmluZy51cHBlcmNhc2VfYXNjaWlcbmxldCBzcGxpdF9vbl9jaGFyID0gU3RkbGliLlN0cmluZy5zcGxpdF9vbl9jaGFyXG5cbmxldCBjb25jYXQgPyhzZXAgPSBcIlwiKSBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gXCJcIlxuICAoKiBUaGUgc3RkbGliIGRvZXMgbm90IHNwZWNpYWxpemUgdGhpcyBjYXNlIGJlY2F1c2UgaXQgY291bGQgYnJlYWsgZXhpc3RpbmcgcHJvamVjdHMuICopXG4gIHwgWyB4IF0gLT4geFxuICB8IGwgLT4gU3RkbGliLlN0cmluZy5jb25jYXQgfnNlcCBsXG47O1xuXG5sZXQgaXRlciB0IH5mOihmIFtAbG9jYWxdKSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBmICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0ZGxpYi5MZXhpbmcucG9zaXRpb24gPVxuICAgIHsgcG9zX2ZuYW1lIDogc3RyaW5nXG4gICAgOyBwb3NfbG51bSA6IGludFxuICAgIDsgcG9zX2JvbCA6IGludFxuICAgIDsgcG9zX2NudW0gOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlID1cbiAgICAoZnVuIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDAxXyBiX18wMDJfXG4gICAgICAgdGhlbiAwXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBtYXRjaCBjb21wYXJlX3N0cmluZyBhX18wMDFfLnBvc19mbmFtZSBiX18wMDJfLnBvc19mbmFtZSB3aXRoXG4gICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAwMV8ucG9zX2xudW0gYl9fMDAyXy5wb3NfbG51bSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAwMV8ucG9zX2JvbCBiX18wMDJfLnBvc19ib2wgd2l0aFxuICAgICAgICAgICAgICAgfCAwIC0+IGNvbXBhcmVfaW50IGFfXzAwMV8ucG9zX2NudW0gYl9fMDAyXy5wb3NfY251bVxuICAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgOiB0IC0+IHQgLT4gaW50KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBmdW4gaHN2IGFyZyAtPlxuICAgICAgbGV0IGhzdiA9XG4gICAgICAgIGxldCBoc3YgPVxuICAgICAgICAgIGxldCBoc3YgPVxuICAgICAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICAgICAgaGFzaF9mb2xkX3N0cmluZyBoc3YgYXJnLnBvc19mbmFtZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaGFzaF9mb2xkX2ludCBoc3YgYXJnLnBvc19sbnVtXG4gICAgICAgIGluXG4gICAgICAgIGhhc2hfZm9sZF9pbnQgaHN2IGFyZy5wb3NfYm9sXG4gICAgICBpblxuICAgICAgaGFzaF9mb2xkX2ludCBoc3YgYXJnLnBvc19jbnVtXG4gIDs7XG5cbiAgbGV0IChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jIGFyZyA9XG4gICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICAgIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1biB7IHBvc19mbmFtZSA9IHBvc19mbmFtZV9fMDA0X1xuICAgICAgICAgOyBwb3NfbG51bSA9IHBvc19sbnVtX18wMDZfXG4gICAgICAgICA7IHBvc19ib2wgPSBwb3NfYm9sX18wMDhfXG4gICAgICAgICA7IHBvc19jbnVtID0gcG9zX2NudW1fXzAxMF9cbiAgICAgICAgIH0gLT5cbiAgICAgIGxldCBibmRzX18wMDNfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMTFfID0gc2V4cF9vZl9pbnQgcG9zX2NudW1fXzAxMF8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBvc19jbnVtXCI7IGFyZ19fMDExXyBdIDo6IGJuZHNfXzAwM19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDNfID1cbiAgICAgICAgbGV0IGFyZ19fMDA5XyA9IHNleHBfb2ZfaW50IHBvc19ib2xfXzAwOF8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBvc19ib2xcIjsgYXJnX18wMDlfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDdfID0gc2V4cF9vZl9pbnQgcG9zX2xudW1fXzAwNl8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBvc19sbnVtXCI7IGFyZ19fMDA3XyBdIDo6IGJuZHNfXzAwM19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDNfID1cbiAgICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2Zfc3RyaW5nIHBvc19mbmFtZV9fMDA0XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2ZuYW1lXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwM19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDNfXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuKCogVGhpcyBpcyB0aGUgc2FtZSBmdW5jdGlvbiBhcyBQcHhfaGVyZS5saWZ0X3Bvc2l0aW9uX2FzX3N0cmluZy4gKilcbmxldCBtYWtlX2xvY2F0aW9uX3N0cmluZyB+cG9zX2ZuYW1lIH5wb3NfbG51bSB+cG9zX2NudW0gfnBvc19ib2wgPVxuICBTdHJpbmcuY29uY2F0XG4gICAgWyBwb3NfZm5hbWU7IFwiOlwiOyBJbnQudG9fc3RyaW5nIHBvc19sbnVtOyBcIjpcIjsgSW50LnRvX3N0cmluZyAocG9zX2NudW0gLSBwb3NfYm9sKSBdXG47O1xuXG5sZXQgdG9fc3RyaW5nIHsgU3RkbGliLkxleGluZy5wb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfY251bTsgcG9zX2JvbCB9ID1cbiAgbWFrZV9sb2NhdGlvbl9zdHJpbmcgfnBvc19mbmFtZSB+cG9zX2xudW0gfnBvc19jbnVtIH5wb3NfYm9sXG47O1xuXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIExpc3QwXG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgbGV0IHJlYyBsb29wIHQgZnN0IHNuZCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXYgZnN0LCByZXYgc25kXG4gICAgfCB4IDo6IHQgLT5cbiAgICAgIChtYXRjaCAoZiB4IDogXyBFaXRoZXIwLnQpIHdpdGhcbiAgICAgICB8IEZpcnN0IHkgLT4gbG9vcCB0ICh5IDo6IGZzdCkgc25kXG4gICAgICAgfCBTZWNvbmQgeSAtPiBsb29wIHQgZnN0ICh5IDo6IHNuZCkpXG4gIGluXG4gIGxvb3AgdCBbXSBbXSBbQG5vbnRhaWxdXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyMFxuXG50eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBTdGRsaWIucmVzdWx0ID1cbiAgfCBPayBvZiAnYVxuICB8IEVycm9yIG9mICdiXG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBlcXVhbCwgaGFzaF1cblxubGV0IHRfb2Zfc2V4cCA6XG4gICdhICdiLlxuICAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICdiKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gKCdhLCAnYikgdFxuICA9XG4gIGZ1biAodHlwZSBhX18wMTdfIGJfXzAxOF8pXG4gICAgICA6ICAoKFNleHBsaWIwLlNleHAudCAtPiBhX18wMTdfKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+IGJfXzAxOF8pIC0+IFNleHBsaWIwLlNleHAudFxuICAgICAgICAgIC0+IChhX18wMTdfLCBiX18wMThfKSB0KSAtPlxuICAgIGxldCBlcnJvcl9zb3VyY2VfXzAwNV8gPSBcInJlc3VsdC5tbC50XCIgaW5cbiAgICBmdW4gX29mX2FfXzAwMV8gX29mX2JfXzAwMl8gLT4gZnVuY3Rpb25cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwib2tcIiB8IFwiT2tcIikgYXMgX3RhZ19fMDA4XykgOjogc2V4cF9hcmdzX18wMDlfKSBhc1xuICAgICAgICBfc2V4cF9fMDA3XyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMDlfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMTBfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAxMV8gPSBfb2ZfYV9fMDAxXyBhcmcwX18wMTBfIGluXG4gICAgICAgICAgIE9rIHJlczBfXzAxMV9cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDVfXG4gICAgICAgICAgICAgX3RhZ19fMDA4X1xuICAgICAgICAgICAgIF9zZXhwX18wMDdfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJlcnJvclwiIHwgXCJFcnJvclwiKSBhcyBfdGFnX18wMTNfKSA6OiBzZXhwX2FyZ3NfXzAxNF8pIGFzXG4gICAgICAgIF9zZXhwX18wMTJfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxNF8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxNV8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDE2XyA9IF9vZl9iX18wMDJfIGFyZzBfXzAxNV8gaW5cbiAgICAgICAgICAgRXJyb3IgcmVzMF9fMDE2X1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNV9cbiAgICAgICAgICAgICBfdGFnX18wMTNfXG4gICAgICAgICAgICAgX3NleHBfXzAxMl8pXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJva1wiIHwgXCJPa1wiKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImVycm9yXCIgfCBcIkVycm9yXCIpIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICAgICB8IHNleHBfXzAwNF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuOztcblxubGV0IHNleHBfb2ZfdCA6XG4gICdhICdiLlxuICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2EsICdiKSB0IC0+IFNleHBsaWIwLlNleHAudFxuICA9XG4gIGZ1biAodHlwZSBhX18wMjVfIGJfXzAyNl8pXG4gICAgICA6ICAoKGFfXzAyNV8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoYl9fMDI2XyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgLT4gKGFfXzAyNV8sIGJfXzAyNl8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDE5XyBfb2ZfYl9fMDIwXyAtPiBmdW5jdGlvblxuICAgICAgfCBPayBhcmcwX18wMjFfIC0+XG4gICAgICAgIGxldCByZXMwX18wMjJfID0gX29mX2FfXzAxOV8gYXJnMF9fMDIxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPa1wiOyByZXMwX18wMjJfIF1cbiAgICAgIHwgRXJyb3IgYXJnMF9fMDIzXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI0XyA9IF9vZl9iX18wMjBfIGFyZzBfXzAyM18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXJyb3JcIjsgcmVzMF9fMDI0XyBdXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOlxuICAnYSAnYi5cbiAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIgLT5cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIk9rXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydhX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJFcnJvclwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxubGV0IGNvbXBhcmUgOlxuICAnYSAnYi4gKCdhIC0+ICdhIC0+IGludCkgLT4gKCdiIC0+ICdiIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICA9XG4gIGZ1biBfY21wX19hIF9jbXBfX2IgYV9fMDI3XyBiX18wMjhfIC0+XG4gIGlmIFN0ZGxpYi4oID09ICkgYV9fMDI3XyBiX18wMjhfXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBhX18wMjdfLCBiX18wMjhfIHdpdGhcbiAgICB8IE9rIF9hX18wMjlfLCBPayBfYl9fMDMwXyAtPiBfY21wX19hIF9hX18wMjlfIF9iX18wMzBfXG4gICAgfCBPayBfLCBfIC0+IC0xXG4gICAgfCBfLCBPayBfIC0+IDFcbiAgICB8IEVycm9yIF9hX18wMzFfLCBFcnJvciBfYl9fMDMyXyAtPiBfY21wX19iIF9hX18wMzFfIF9iX18wMzJfKVxuOztcblxubGV0IGVxdWFsIDpcbiAgJ2EgJ2IuICgnYSAtPiAnYSAtPiBib29sKSAtPiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGJvb2xcbiAgPVxuICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAzM18gYl9fMDM0XyAtPlxuICBpZiBTdGRsaWIuKCA9PSApIGFfXzAzM18gYl9fMDM0X1xuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYV9fMDMzXywgYl9fMDM0XyB3aXRoXG4gICAgfCBPayBfYV9fMDM1XywgT2sgX2JfXzAzNl8gLT4gX2NtcF9fYSBfYV9fMDM1XyBfYl9fMDM2X1xuICAgIHwgT2sgXywgXyAtPiBmYWxzZVxuICAgIHwgXywgT2sgXyAtPiBmYWxzZVxuICAgIHwgRXJyb3IgX2FfXzAzN18sIEVycm9yIF9iX18wMzhfIC0+IF9jbXBfX2IgX2FfXzAzN18gX2JfXzAzOF8pXG47O1xuXG5sZXQgaGFzaF9mb2xkX3RcbiAgOiB0eXBlIGEgYi5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGEgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gKGEsIGIpIHRcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9hIF9oYXNoX2ZvbGRfYiBoc3YgYXJnIC0+XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgT2sgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICB8IEVycm9yIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9iIGhzdiBfYTBcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBnbG9iYWxpemUgPSBnbG9iYWxpemVfcmVzdWx0XG5cbmluY2x1ZGUgTW9uYWQuTWFrZTJfbG9jYWwgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICBsZXQgYmluZCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgICAgfCBPayB4IC0+IGYgeFxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgICB8IE9rIHggLT4gT2sgKGYgeClcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgbGV0IHJldHVybiB4ID0gT2sgeFxuICBlbmQpXG5cbmxldCBpbnZhcmlhbnQgY2hlY2tfb2sgY2hlY2tfZXJyb3IgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIG9rIC0+IGNoZWNrX29rIG9rXG4gIHwgRXJyb3IgZXJyb3IgLT4gY2hlY2tfZXJyb3IgZXJyb3Jcbjs7XG5cbmxldCBmYWlsIHggPSBFcnJvciB4XG5sZXQgZmFpbGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGZhaWwgZm9ybWF0XG5cbmxldCBtYXBfZXJyb3IgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIF8gYXMgeCAtPiB4XG4gIHwgRXJyb3IgeCAtPiBFcnJvciAoZiB4KVxuOztcblxubW9kdWxlIEVycm9yID0gTW9uYWQuTWFrZTJfbG9jYWwgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2IsICdhKSB0XG5cbiAgICBsZXQgYmluZCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBPayBfIGFzIG9rIC0+IG9rXG4gICAgICB8IEVycm9yIGUgLT4gZiBlXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcF9lcnJvclxuICAgIGxldCByZXR1cm4gZSA9IEVycm9yIGVcbiAgZW5kKVxuXG5sZXQgaXNfb2sgPSBmdW5jdGlvblxuICB8IE9rIF8gLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19lcnJvciA9IGZ1bmN0aW9uXG4gIHwgT2sgXyAtPiBmYWxzZVxuICB8IEVycm9yIF8gLT4gdHJ1ZVxuOztcblxubGV0IG9rID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IFNvbWUgeFxuICB8IEVycm9yIF8gLT4gTm9uZVxuOztcblxubGV0IGVycm9yID0gZnVuY3Rpb25cbiAgfCBPayBfIC0+IE5vbmVcbiAgfCBFcnJvciB4IC0+IFNvbWUgeFxuOztcblxubGV0IG9mX29wdGlvbiBvcHQgfmVycm9yID1cbiAgbWF0Y2ggb3B0IHdpdGhcbiAgfCBTb21lIHggLT4gT2sgeFxuICB8IE5vbmUgLT4gRXJyb3IgZXJyb3Jcbjs7XG5cbmxldCBpdGVyIHYgfmYgPVxuICBtYXRjaCB2IHdpdGhcbiAgfCBPayB4IC0+IGYgeFxuICB8IEVycm9yIF8gLT4gKClcbjs7XG5cbmxldCBpdGVyX2Vycm9yIHYgfmYgPVxuICBtYXRjaCB2IHdpdGhcbiAgfCBPayBfIC0+ICgpXG4gIHwgRXJyb3IgeCAtPiBmIHhcbjs7XG5cbmxldCB0b19laXRoZXIgOiBfIHQgLT4gXyBFaXRoZXIudCA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiBGaXJzdCB4XG4gIHwgRXJyb3IgeCAtPiBTZWNvbmQgeFxuOztcblxubGV0IG9mX2VpdGhlciA6IF8gRWl0aGVyLnQgLT4gXyB0ID0gZnVuY3Rpb25cbiAgfCBGaXJzdCB4IC0+IE9rIHhcbiAgfCBTZWNvbmQgeCAtPiBFcnJvciB4XG47O1xuXG5sZXQgb2tfaWZfdHJ1ZSBib29sIH5lcnJvciA9IGlmIGJvb2wgdGhlbiBPayAoKSBlbHNlIEVycm9yIGVycm9yXG5cbmxldCB0cnlfd2l0aCBmID1cbiAgdHJ5IE9rIChmICgpKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIGV4blxuOztcblxubGV0IG9rX2V4biA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXhuIC0+IHJhaXNlIGV4blxuOztcblxubGV0IG9rX29yX2ZhaWx3aXRoID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBzdHIgLT4gZmFpbHdpdGggc3RyXG47O1xuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgKCdvaywgJ2VycikgX3Jlc3VsdCA9ICgnb2ssICdlcnIpIHQgPVxuICAgIHwgT2sgb2YgJ29rXG4gICAgfCBFcnJvciBvZiAnZXJyXG5cbiAgbGV0IGlzX2Vycm9yID0gaXNfZXJyb3JcbiAgbGV0IGlzX29rID0gaXNfb2tcbmVuZFxuXG5sZXQgY29tYmluZSB0MSB0MiB+b2sgfmVyciA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgT2sgXywgRXJyb3IgZSB8IEVycm9yIGUsIE9rIF8gLT4gRXJyb3IgZVxuICB8IE9rIG9rMSwgT2sgb2syIC0+IE9rIChvayBvazEgb2syKVxuICB8IEVycm9yIGVycjEsIEVycm9yIGVycjIgLT4gRXJyb3IgKGVyciBlcnIxIGVycjIpXG47O1xuXG5sZXQgY29tYmluZV9lcnJvcnMgbCA9XG4gIGxldCBvaywgZXJycyA9IExpc3QxLnBhcnRpdGlvbl9tYXAgbCB+Zjp0b19laXRoZXIgaW5cbiAgbWF0Y2ggZXJycyB3aXRoXG4gIHwgW10gLT4gT2sgb2tcbiAgfCBfIDo6IF8gLT4gRXJyb3IgZXJyc1xuOztcblxubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbCA9IG1hcCAoY29tYmluZV9lcnJvcnMgbCkgfmY6KGZ1biAoXyA6IHVuaXQgbGlzdCkgLT4gKCkpXG5cbigqIGRlcHJlY2F0ZWQgYmluZGluZyBmb3IgZXhwb3J0IG9ubHkgKilcbmxldCBva19mc3QgPSB0b19laXRoZXJcbiIsIigqKiBQcm92aWRlcyBnZW5lcmljIHNpZ25hdHVyZXMgZm9yIGNvbnRhaW5lciBkYXRhIHN0cnVjdHVyZXMuXG5cbiAgICBUaGVzZSBzaWduYXR1cmVzIGluY2x1ZGUgZnVuY3Rpb25zIChbaXRlcl0sIFtmb2xkXSwgW2V4aXN0c10sIFtmb3JfYWxsXSwgLi4uKSB0aGF0XG4gICAgeW91IHdvdWxkIGV4cGVjdCB0byBmaW5kIGluIGFueSBjb250YWluZXIuIFVzZWQgYnkgaW5jbHVkaW5nIFtDb250YWluZXIuUzBdIG9yXG4gICAgW0NvbnRhaW5lci5TMV0gaW4gdGhlIHNpZ25hdHVyZSBmb3IgZXZlcnkgY29udGFpbmVyLWxpa2UgZGF0YSBzdHJ1Y3R1cmUgKFtBcnJheV0sXG4gICAgW0xpc3RdLCBbU3RyaW5nXSwgLi4uKSB0byBlbnN1cmUgYSBjb25zaXN0ZW50IGludGVyZmFjZS4gKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgKCoqIFtDb250aW51ZV9vcl9zdG9wLnRdIGlzIHVzZWQgYnkgdGhlIFtmXSBhcmd1bWVudCB0byBbZm9sZF91bnRpbF0gaW4gb3JkZXIgdG9cbiAgICAgIGluZGljYXRlIHdoZXRoZXIgZm9sZGluZyBzaG91bGQgY29udGludWUsIG9yIHN0b3AgZWFybHkuXG5cbiAgICAgIEBjYW5vbmljYWwgQmFzZS5Db250YWluZXIuQ29udGludWVfb3Jfc3RvcFxuICAqKVxuICBtb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgICB8IENvbnRpbnVlIG9mICdhXG4gICAgICB8IFN0b3Agb2YgJ2JcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBFeHBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5Db250YWluZXIuU3VtbWFibGUgKilcbm1vZHVsZSB0eXBlIFN1bW1hYmxlID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqKiBUaGUgcmVzdWx0IG9mIHN1bW1pbmcgbm8gdmFsdWVzLiAqKVxuICB2YWwgemVybyA6IHRcblxuICAoKiogQW4gb3BlcmF0aW9uIHRoYXQgY29tYmluZXMgdHdvIFt0XSdzIGFuZCBoYW5kbGVzIFt6ZXJvICsgeF0gYnkganVzdCByZXR1cm5pbmcgW3hdLFxuICAgICAgYXMgd2VsbCBhcyBpbiB0aGUgc3ltbWV0cmljIGNhc2UuICopXG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG5lbmRcblxuKCoqIFNpZ25hdHVyZSBmb3IgbW9ub21vcnBoaWMgY29udGFpbmVyIC0gYSBjb250YWluZXIgZm9yIGEgc3BlY2lmaWMgZWxlbWVudCB0eXBlLCBlLmcuLFxuICAgIHN0cmluZywgd2hpY2ggaXMgYSBjb250YWluZXIgb2YgY2hhcmFjdGVycyAoW3R5cGUgZWx0ID0gY2hhcl0pIGFuZCBuZXZlciBvZiBhbnl0aGluZ1xuICAgIGVsc2UuICopXG5tb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICB0eXBlIHRcbiAgdHlwZSBlbHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIGVxdWFsaXR5IG9uIFtlbHRdcy4gKilcbiAgdmFsIG1lbSA6IHQgLT4gZWx0IC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogdCAtPiBib29sXG5cbiAgKCoqIFtpdGVyXSBtdXN0IGFsbG93IGV4Y2VwdGlvbnMgcmFpc2VkIGluIFtmXSB0byBlc2NhcGUsIHRlcm1pbmF0aW5nIHRoZSBpdGVyYXRpb25cbiAgICAgIGNsZWFubHkuICBUaGUgc2FtZSBob2xkcyBmb3IgYWxsIGZ1bmN0aW9ucyBiZWxvdyB0YWtpbmcgYW4gW2ZdLiAqKVxuICB2YWwgaXRlciA6IHQgLT4gZjooKGVsdCAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdLiAqKVxuICB2YWwgZm9sZCA6IHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+IGVsdCAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0gdGhhdCBydW5zIGluIHRoZVxuICAgICAgW1Jlc3VsdF0gbW9uYWQuICBJZiBbZl0gcmV0dXJucyBhbiBbRXJyb3IgX10sIHRoYXQgdmFsdWUgaXMgcmV0dXJuZWQgd2l0aG91dCBhbnlcbiAgICAgIGFkZGl0aW9uYWwgaW52b2NhdGlvbnMgb2YgW2ZdLiAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+IGVsdCAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGV4aXN0cyA6IHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB3aGljaCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBjb3VudCA6IHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gdCAtPiBmOigoZWx0IC0+ICdzdW0pW0Bsb2NhbF0pIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6IHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogdCAtPiBmOigoZWx0IC0+ICdhIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiB0IC0+IGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6IHQgLT4gZWx0IGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW4gKHJlc3AuIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudCBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZVxuICAgICAgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgW2ZvbGRdIHNvIGl0IGhhcyB0aGUgc2FtZVxuICAgICAgY29tcGxleGl0eSBhcyBbZm9sZF0uIFJldHVybnMgW05vbmVdIGlmZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiB0IC0+IGNvbXBhcmU6KChlbHQgLT4gZWx0IC0+IGludClbQGxvY2FsXSkgLT4gZWx0IG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0IDogdCAtPiBjb21wYXJlOigoZWx0IC0+IGVsdCAtPiBpbnQpW0Bsb2NhbF0pIC0+IGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMF9waGFudG9tID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgJ2EgdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgZXF1YWxpdHkgb24gW2VsdF1zLiAqKVxuICB2YWwgbWVtIDogXyB0IC0+IGVsdCAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogXyB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiBfIHQgLT4gZjooKGVsdCAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdLiAqKVxuICB2YWwgZm9sZCA6IF8gdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIF8gdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+IGVsdCAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50KVtAbG9jYWxdKVxuICAgIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogIF8gdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+IGVsdCAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiBfIHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6IF8gdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB3aGljaCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBjb3VudCA6IF8gdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gVGhlIG9yZGVyIGluIHdoaWNoIHRoZVxuICAgICAgZWxlbWVudHMgd2lsbCBiZSBzdW1tZWQgaXMgdW5zcGVjaWZpZWQuICopXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiBfIHRcbiAgICAtPiBmOigoZWx0IC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogXyB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gZWx0IG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSBmaXJzdCBldmFsdWF0aW9uIG9mIFtmXSB0aGF0IHJldHVybnMgW1NvbWVdLCBhbmQgcmV0dXJucyBbTm9uZV0gaWYgdGhlcmVcbiAgICAgIGlzIG5vIHN1Y2ggZWxlbWVudC4gICopXG4gIHZhbCBmaW5kX21hcCA6IF8gdCAtPiBmOigoZWx0IC0+ICdhIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiBfIHQgLT4gZWx0IGxpc3RcbiAgdmFsIHRvX2FycmF5IDogXyB0IC0+IGVsdCBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLCBvciBbTm9uZV0gaWYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuICBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudFxuICAgICAgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGUgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gKilcbiAgdmFsIG1pbl9lbHQgOiBfIHQgLT4gY29tcGFyZTooKGVsdCAtPiBlbHQgLT4gaW50KVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiBfIHQgLT4gY29tcGFyZTooKGVsdCAtPiBlbHQgLT4gaW50KVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5lbmRcblxuKCoqIFNpZ25hdHVyZSBmb3IgcG9seW1vcnBoaWMgY29udGFpbmVyLCBlLmcuLCBbJ2EgbGlzdF0gb3IgWydhIGFycmF5XS4gKilcbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgW2VxdWFsXS4gKilcbiAgdmFsIG1lbSA6ICdhIHQgLT4gJ2EgLT4gZXF1YWw6KCgnYSAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6ICdhIHQgLT4gZjooKCdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0gICopXG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGV4aXN0cyA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiAqKVxuICB2YWwgc3VtXG4gICAgOiAgKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pXG4gICAgLT4gJ2EgdFxuICAgIC0+IGY6KCgnYSAtPiAnc3VtKVtAbG9jYWxdKVxuICAgIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSBmaXJzdCBldmFsdWF0aW9uIG9mIFtmXSB0aGF0IHJldHVybnMgW1NvbWVdLCBhbmQgcmV0dXJucyBbTm9uZV0gaWYgdGhlcmVcbiAgICAgIGlzIG5vIHN1Y2ggZWxlbWVudC4gICopXG4gIHZhbCBmaW5kX21hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Igb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+ICdhIGxpc3RcbiAgdmFsIHRvX2FycmF5IDogJ2EgdCAtPiAnYSBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluaW11bSAocmVzcCBtYXhpbXVtKSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkXG4gICAgICBbY29tcGFyZV0gZnVuY3Rpb24sIG9yIFtOb25lXSBpZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gSW4gY2FzZSBvZiBhIHRpZSwgdGhlIGZpcnN0XG4gICAgICBlbGVtZW50IGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlIGNvbGxlY3Rpb24gaXMgcmV0dXJuZWQuIFRoZSBpbXBsZW1lbnRhdGlvblxuICAgICAgdXNlcyBbZm9sZF0gc28gaXQgaGFzIHRoZSBzYW1lIGNvbXBsZXhpdHkgYXMgW2ZvbGRdLiAqKVxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiAnYSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdwaGFudG9tKSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBbZXF1YWxdLiAqKVxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIC0+IGVxdWFsOigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XS4gKilcbiAgdmFsIGZvbGQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ3N1bSlbQGxvY2FsXSlcbiAgICAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSBmaXJzdCBldmFsdWF0aW9uIG9mIFtmXSB0aGF0IHJldHVybnMgW1NvbWVdLCBhbmQgcmV0dXJucyBbTm9uZV0gaWYgdGhlcmVcbiAgICAgIGlzIG5vIHN1Y2ggZWxlbWVudC4gICopXG4gIHZhbCBmaW5kX21hcCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudCBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZVxuICAgICAgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgW2ZvbGRdIHNvIGl0IGhhcyB0aGUgc2FtZSBjb21wbGV4aXR5XG4gICAgICBhcyBbZm9sZF0uIFJldHVybnMgW05vbmVdIGlmZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgR2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ3BoYW50b20pIHRcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSBlbHQgLT4gZXF1YWw6KCgnYSBlbHQgLT4gJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBmb2xkIDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSBlbHQgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIGVsdCAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50KVtAbG9jYWxdKVxuICAgIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIGVsdCAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGV4aXN0cyA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGwgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOigoJ2EgZWx0IC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gIHZhbCBmaW5kIDogKCdhLCBfKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgZmluZF9tYXAgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IGFycmF5XG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCgnYSBlbHQgLT4gJ2EgZWx0IC0+IGludClbQGxvY2FsXSkgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOigoJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpW0Bsb2NhbF0pIC0+ICdhIGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMF93aXRoX2NyZWF0b3JzID0gc2lnXG4gIGluY2x1ZGUgUzBcblxuICB2YWwgb2ZfbGlzdCA6IGVsdCBsaXN0IC0+IHRcbiAgdmFsIG9mX2FycmF5IDogZWx0IGFycmF5IC0+IHRcblxuICAoKiogRS5nLiwgW2FwcGVuZCAob2ZfbGlzdCBbYTsgYl0pIChvZl9saXN0IFtjOyBkOyBlXSldIGlzIFtvZl9saXN0IFthOyBiOyBjOyBkOyBlXV0gKilcbiAgdmFsIGFwcGVuZCA6IHQgLT4gdCAtPiB0XG5cbiAgKCoqIENvbmNhdGVuYXRlcyBhIG5lc3RlZCBjb250YWluZXIuIFRoZSBlbGVtZW50cyBvZiB0aGUgaW5uZXIgY29udGFpbmVycyBhcmVcbiAgICAgIGNvbmNhdGVuYXRlZCB0b2dldGhlciBpbiBvcmRlciB0byBnaXZlIHRoZSByZXN1bHQuICopXG4gIHZhbCBjb25jYXQgOiB0IGxpc3QgLT4gdFxuXG4gICgqKiBbbWFwIGYgKG9mX2xpc3QgW2ExOyAuLi47IGFuXSldIGFwcGxpZXMgW2ZdIHRvIFthMV0sIFthMl0sIC4uLiwgW2FuXSwgaW4gb3JkZXIsIGFuZFxuICAgICAgYnVpbGRzIGEgcmVzdWx0IGVxdWl2YWxlbnQgdG8gW29mX2xpc3QgW2YgYTE7IC4uLjsgZiBhbl1dLiAqKVxuICB2YWwgbWFwIDogdCAtPiBmOigoZWx0IC0+IGVsdClbQGxvY2FsXSkgLT4gdFxuXG4gICgqKiBbZmlsdGVyIHQgfmZdIHJldHVybnMgYWxsIHRoZSBlbGVtZW50cyBvZiBbdF0gdGhhdCBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW2ZdLiAqKVxuICB2YWwgZmlsdGVyIDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IHRcblxuICAoKiogW2ZpbHRlcl9tYXAgdCB+Zl0gYXBwbGllcyBbZl0gdG8gZXZlcnkgW3hdIGluIFt0XS4gVGhlIHJlc3VsdCBjb250YWlucyBldmVyeSBbeV0gZm9yXG4gICAgICB3aGljaCBbZiB4XSByZXR1cm5zIFtTb21lIHldLiAqKVxuICB2YWwgZmlsdGVyX21hcCA6IHQgLT4gZjooKGVsdCAtPiBlbHQgb3B0aW9uKVtAbG9jYWxdKSAtPiB0XG5cbiAgKCoqIFtjb25jYXRfbWFwIHQgfmZdIGlzIGVxdWl2YWxlbnQgdG8gW2NvbmNhdCAobWFwIHQgfmYpXS4gKilcbiAgdmFsIGNvbmNhdF9tYXAgOiB0IC0+IGY6KChlbHQgLT4gdClbQGxvY2FsXSkgLT4gdFxuXG4gICgqKiBbcGFydGl0aW9uX3RmIHQgfmZdIHJldHVybnMgYSBwYWlyIFt0MSwgdDJdLCB3aGVyZSBbdDFdIGlzIGFsbCBlbGVtZW50cyBvZiBbdF0gdGhhdFxuICAgICAgc2F0aXNmeSBbZl0sIGFuZCBbdDJdIGlzIGFsbCBlbGVtZW50cyBvZiBbdF0gdGhhdCBkbyBub3Qgc2F0aXNmeSBbZl0uIFRoZSBcInRmXCJcbiAgICAgIHN1ZmZpeCBpcyBtbmVtb25pYyB0byByZW1pbmQgcmVhZGVycyB0aGF0IHRoZSByZXN1bHQgaXMgKHRydWVzLCBmYWxzZXMpLiAqKVxuICB2YWwgcGFydGl0aW9uX3RmIDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IHQgKiB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fbWFwIHQgfmZdIHBhcnRpdGlvbnMgW3RdIGFjY29yZGluZyB0byBbZl0uICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwIDogdCAtPiBmOigoZWx0IC0+IChlbHQsIGVsdCkgRWl0aGVyMC50KVtAbG9jYWxdKSAtPiB0ICogdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxX3dpdGhfY3JlYXRvcnMgPSBzaWdcbiAgaW5jbHVkZSBTMVxuXG4gIHZhbCBvZl9saXN0IDogJ2EgbGlzdCAtPiAnYSB0XG4gIHZhbCBvZl9hcnJheSA6ICdhIGFycmF5IC0+ICdhIHRcblxuICAoKiogRS5nLiwgW2FwcGVuZCAob2ZfbGlzdCBbMTsgMl0pIChvZl9saXN0IFszOyA0OyA1XSldIGlzIFtvZl9saXN0IFsxOyAyOyAzOyA0OyA1XV0gKilcbiAgdmFsIGFwcGVuZCA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG5cbiAgKCoqIENvbmNhdGVuYXRlcyBhIG5lc3RlZCBjb250YWluZXIuIFRoZSBlbGVtZW50cyBvZiB0aGUgaW5uZXIgY29udGFpbmVycyBhcmVcbiAgICAgIGNvbmNhdGVuYXRlZCB0b2dldGhlciBpbiBvcmRlciB0byBnaXZlIHRoZSByZXN1bHQuICopXG4gIHZhbCBjb25jYXQgOiAnYSB0IHQgLT4gJ2EgdFxuXG4gICgqKiBbbWFwIGYgKG9mX2xpc3QgW2ExOyAuLi47IGFuXSldIGFwcGxpZXMgW2ZdIHRvIFthMV0sIFthMl0sIC4uLiwgW2FuXSwgaW4gb3JkZXIsIGFuZFxuICAgICAgYnVpbGRzIGEgcmVzdWx0IGVxdWl2YWxlbnQgdG8gW29mX2xpc3QgW2YgYTE7IC4uLjsgZiBhbl1dLiAqKVxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcblxuICAoKiogW2ZpbHRlciB0IH5mXSByZXR1cm5zIGFsbCB0aGUgZWxlbWVudHMgb2YgW3RdIHRoYXQgc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtmXS4gKilcbiAgdmFsIGZpbHRlciA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIHRcblxuICAoKiogW2ZpbHRlcl9tYXAgdCB+Zl0gYXBwbGllcyBbZl0gdG8gZXZlcnkgW3hdIGluIFt0XS4gVGhlIHJlc3VsdCBjb250YWlucyBldmVyeSBbeV0gZm9yXG4gICAgICB3aGljaCBbZiB4XSByZXR1cm5zIFtTb21lIHldLiAqKVxuICB2YWwgZmlsdGVyX21hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2IgdFxuXG4gICgqKiBbY29uY2F0X21hcCB0IH5mXSBpcyBlcXVpdmFsZW50IHRvIFtjb25jYXQgKG1hcCB0IH5mKV0uICopXG4gIHZhbCBjb25jYXRfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IgdClbQGxvY2FsXSkgLT4gJ2IgdFxuXG4gICgqKiBbcGFydGl0aW9uX3RmIHQgfmZdIHJldHVybnMgYSBwYWlyIFt0MSwgdDJdLCB3aGVyZSBbdDFdIGlzIGFsbCBlbGVtZW50cyBvZiBbdF0gdGhhdFxuICAgICAgc2F0aXNmeSBbZl0sIGFuZCBbdDJdIGlzIGFsbCBlbGVtZW50cyBvZiBbdF0gdGhhdCBkbyBub3Qgc2F0aXNmeSBbZl0uIFRoZSBcInRmXCJcbiAgICAgIHN1ZmZpeCBpcyBtbmVtb25pYyB0byByZW1pbmQgcmVhZGVycyB0aGF0IHRoZSByZXN1bHQgaXMgKHRydWVzLCBmYWxzZXMpLiAqKVxuICB2YWwgcGFydGl0aW9uX3RmIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdCAqICdhIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXAgdCB+Zl0gcGFydGl0aW9ucyBbdF0gYWNjb3JkaW5nIHRvIFtmXS4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAoJ2IsICdjKSBFaXRoZXIwLnQpW0Bsb2NhbF0pIC0+ICdiIHQgKiAnYyB0XG5lbmRcblxubW9kdWxlIHR5cGUgR2VuZXJpY193aXRoX2NyZWF0b3JzID0gc2lnXG4gIHR5cGUgKF8sIF8pIGNvbmNhdFxuXG4gIGluY2x1ZGUgR2VuZXJpY1xuXG4gIHZhbCBvZl9saXN0IDogJ2EgZWx0IGxpc3QgLT4gKCdhLCBfKSB0XG4gIHZhbCBvZl9hcnJheSA6ICdhIGVsdCBhcnJheSAtPiAoJ2EsIF8pIHRcbiAgdmFsIGFwcGVuZCA6ICgnYSwgJ3ApIHQgLT4gKCdhLCAncCkgdCAtPiAoJ2EsICdwKSB0XG4gIHZhbCBjb25jYXQgOiAoKCdhLCAncCkgdCwgJ3ApIGNvbmNhdCAtPiAoJ2EsICdwKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdwKSB0IC0+IGY6KCgnYSBlbHQgLT4gJ2IgZWx0KVtAbG9jYWxdKSAtPiAoJ2IsICdwKSB0XG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdwKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAncCkgdFxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgJ3ApIHQgLT4gZjooKCdhIGVsdCAtPiAnYiBlbHQgb3B0aW9uKVtAbG9jYWxdKSAtPiAoJ2IsICdwKSB0XG4gIHZhbCBjb25jYXRfbWFwIDogKCdhLCAncCkgdCAtPiBmOigoJ2EgZWx0IC0+ICgnYiwgJ3ApIHQpW0Bsb2NhbF0pIC0+ICgnYiwgJ3ApIHRcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICgnYSwgJ3ApIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdwKSB0ICogKCdhLCAncCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgKCdhLCAncCkgdFxuICAgIC0+IGY6KCgnYSBlbHQgLT4gKCdiIGVsdCwgJ2MgZWx0KSBFaXRoZXIwLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCAncCkgdCAqICgnYywgJ3ApIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlX2dlbl9hcmcgPSBzaWdcbiAgdHlwZSAoJ2EsICdwaGFudG9tKSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGZvbGQgOiAoJ2EsICdwaGFudG9tKSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSBlbHQgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBUaGUgW2l0ZXJdIGFyZ3VtZW50IHRvIFtDb250YWluZXIuTWFrZV0gc3BlY2lmaWVzIGhvdyB0byBpbXBsZW1lbnQgdGhlXG4gICAgICBjb250YWluZXIncyBbaXRlcl0gZnVuY3Rpb24uICBbYERlZmluZV91c2luZ19mb2xkXSBtZWFucyB0byBkZWZpbmUgW2l0ZXJdXG4gICAgICB2aWE6XG5cbiAgICAgIHtbXG4gICAgICAgIGl0ZXIgdCB+ZiA9IENvbnRhaW5lci5pdGVyIH5mb2xkIHQgfmZcbiAgICAgIF19XG5cbiAgICAgIFtgQ3VzdG9tXSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHByZXN1bWFibHkgd2l0aCBzb21ldGhpbmcgbW9yZVxuICAgICAgZWZmaWNpZW50LiAgU2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgW0NvbnRhaW5lci5NYWtlXSBhcmUgZGVmaW5lZCBpblxuICAgICAgdGVybXMgb2YgW2l0ZXJdLCBzbyBwYXNzaW5nIGluIGEgbW9yZSBlZmZpY2llbnQgW2l0ZXJdIHdpbGwgaW1wcm92ZSB0aGVpciBlZmZpY2llbmN5XG4gICAgICBhcyB3ZWxsLiAqKVxuICB2YWwgaXRlclxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgICAgIHwgYEN1c3RvbSBvZiAoJ2EsICdwaGFudG9tKSB0IC0+IGY6KCgnYSBlbHQgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICAgICAgXVxuXG4gICgqKiBUaGUgW2xlbmd0aF0gYXJndW1lbnQgdG8gW0NvbnRhaW5lci5NYWtlXSBzcGVjaWZpZXMgaG93IHRvIGltcGxlbWVudCB0aGVcbiAgICAgIGNvbnRhaW5lcidzIFtsZW5ndGhdIGZ1bmN0aW9uLiAgW2BEZWZpbmVfdXNpbmdfZm9sZF0gbWVhbnMgdG8gZGVmaW5lXG4gICAgICBbbGVuZ3RoXSB2aWE6XG5cbiAgICAgIHtbXG4gICAgICAgIGxlbmd0aCB0IH5mID0gQ29udGFpbmVyLmxlbmd0aCB+Zm9sZCB0IH5mXG4gICAgICBdfVxuXG4gICAgICBbYEN1c3RvbV0gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBwcmVzdW1hYmx5IHdpdGggc29tZXRoaW5nIG1vcmVcbiAgICAgIGVmZmljaWVudC4gIFNldmVyYWwgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtDb250YWluZXIuTWFrZV0gYXJlIGRlZmluZWQgaW5cbiAgICAgIHRlcm1zIG9mIFtsZW5ndGhdLCBzbyBwYXNzaW5nIGluIGEgbW9yZSBlZmZpY2llbnQgW2xlbmd0aF0gd2lsbCBpbXByb3ZlIHRoZWlyXG4gICAgICBlZmZpY2llbmN5IGFzIHdlbGwuICopXG4gIHZhbCBsZW5ndGggOiBbIGBEZWZpbmVfdXNpbmdfZm9sZCB8IGBDdXN0b20gb2YgKCdhLCAncGhhbnRvbSkgdCAtPiBpbnQgXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2VfYXJnID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgTWFrZV9nZW5fYXJnIHdpdGggdHlwZSAoJ2EsIF8pIHQgOj0gJ2EgdCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2FcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlMF9hcmcgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgZW5kXG5cbiAgdHlwZSB0XG5cbiAgaW5jbHVkZSBNYWtlX2dlbl9hcmcgd2l0aCB0eXBlICgnYSwgXykgdCA6PSB0IGFuZCB0eXBlICdhIGVsdCA6PSBFbHQudFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2VfY29tbW9uX3dpdGhfY3JlYXRvcnNfYXJnID0gc2lnXG4gIGluY2x1ZGUgTWFrZV9nZW5fYXJnXG5cbiAgdHlwZSAoXywgXykgY29uY2F0XG5cbiAgdmFsIG9mX2xpc3QgOiAnYSBlbHQgbGlzdCAtPiAoJ2EsIF8pIHRcbiAgdmFsIG9mX2FycmF5IDogJ2EgZWx0IGFycmF5IC0+ICgnYSwgXykgdFxuICB2YWwgY29uY2F0IDogKCgnYSwgXykgdCwgXykgY29uY2F0IC0+ICgnYSwgXykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnNfYXJnID0gc2lnXG4gIGluY2x1ZGUgTWFrZV9jb21tb25fd2l0aF9jcmVhdG9yc19hcmdcblxuICB2YWwgY29uY2F0X29mX2FycmF5IDogJ2EgYXJyYXkgLT4gKCdhLCBfKSBjb25jYXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlX3dpdGhfY3JlYXRvcnNfYXJnID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGVcbiAgICBNYWtlX2NvbW1vbl93aXRoX2NyZWF0b3JzX2FyZ1xuICAgIHdpdGggdHlwZSAoJ2EsIF8pIHQgOj0gJ2EgdFxuICAgICBhbmQgdHlwZSAnYSBlbHQgOj0gJ2FcbiAgICAgYW5kIHR5cGUgKCdhLCBfKSBjb25jYXQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2UwX3dpdGhfY3JlYXRvcnNfYXJnID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIGVuZFxuXG4gIHR5cGUgdFxuXG4gIGluY2x1ZGVcbiAgICBNYWtlX2NvbW1vbl93aXRoX2NyZWF0b3JzX2FyZ1xuICAgIHdpdGggdHlwZSAoJ2EsIF8pIHQgOj0gdFxuICAgICBhbmQgdHlwZSAnYSBlbHQgOj0gRWx0LnRcbiAgICAgYW5kIHR5cGUgKCdhLCBfKSBjb25jYXQgOj0gJ2EgbGlzdFxuZW5kXG5cbm1vZHVsZSB0eXBlIERlcml2ZWQgPSBzaWdcbiAgKCoqIEdlbmVyaWMgZGVmaW5pdGlvbnMgb2YgY29udGFpbmVyIG9wZXJhdGlvbnMgaW4gdGVybXMgb2YgW2ZvbGRdLlxuXG4gICAgICBFLmcuOiBbaXRlciB+Zm9sZCB0IH5mID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgYSAtPiBmIGEpXS4gKilcblxuICB0eXBlICgndCwgJ2EsICdhY2MpIGZvbGQgPSAndCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuICB0eXBlICgndCwgJ2EpIGl0ZXIgPSAndCAtPiBmOigoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICB0eXBlICd0IGxlbmd0aCA9ICd0IC0+IGludFxuXG4gIHZhbCBpdGVyIDogZm9sZDooJ3QsICdhLCB1bml0KSBmb2xkIC0+ICgndCwgJ2EpIGl0ZXJcbiAgdmFsIGNvdW50IDogZm9sZDooJ3QsICdhLCBpbnQpIGZvbGQgLT4gJ3QgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gIHZhbCBtaW5fZWx0XG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYSBvcHRpb24pIGZvbGRcbiAgICAtPiAndFxuICAgIC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhIG9wdGlvbikgZm9sZFxuICAgIC0+ICd0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbGVuZ3RoIDogZm9sZDooJ3QsIF8sIGludCkgZm9sZCAtPiAndCAtPiBpbnRcbiAgdmFsIHRvX2xpc3QgOiBmb2xkOigndCwgJ2EsICdhIGxpc3QpIGZvbGQgLT4gJ3QgLT4gJ2EgbGlzdFxuXG4gIHZhbCBzdW1cbiAgICA6ICBmb2xkOigndCwgJ2EsICdzdW0pIGZvbGRcbiAgICAtPiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAndFxuICAgIC0+IGY6KCgnYSAtPiAnc3VtKVtAbG9jYWxdKVxuICAgIC0+ICdzdW1cblxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhY2MpIGZvbGRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50KVtAbG9jYWxdKVxuICAgIC0+ICd0XG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYWNjKSBmb2xkXG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICd0XG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIEdlbmVyaWMgZGVmaW5pdGlvbnMgb2YgY29udGFpbmVyIG9wZXJhdGlvbnMgaW4gdGVybXMgb2YgW2l0ZXJdIGFuZCBbbGVuZ3RoXS4gKilcblxuICB2YWwgaXNfZW1wdHkgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gYm9vbFxuICB2YWwgbWVtIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+ICdhIC0+IGVxdWFsOigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmaW5kIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfbWFwIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuICB2YWwgdG9fYXJyYXkgOiBsZW5ndGg6J3QgbGVuZ3RoIC0+IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiAnYSBhcnJheVxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbnRhaW5lciA9IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgRXhwb3J0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMwID0gUzBcbiAgbW9kdWxlIHR5cGUgUzBfcGhhbnRvbSA9IFMwX3BoYW50b21cbiAgbW9kdWxlIHR5cGUgUzBfd2l0aF9jcmVhdG9ycyA9IFMwX3dpdGhfY3JlYXRvcnNcbiAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICBtb2R1bGUgdHlwZSBTMV9waGFudG9tID0gUzFfcGhhbnRvbVxuICBtb2R1bGUgdHlwZSBTMV93aXRoX2NyZWF0b3JzID0gUzFfd2l0aF9jcmVhdG9yc1xuICBtb2R1bGUgdHlwZSBEZXJpdmVkID0gRGVyaXZlZFxuICBtb2R1bGUgdHlwZSBHZW5lcmljID0gR2VuZXJpY1xuICBtb2R1bGUgdHlwZSBHZW5lcmljX3dpdGhfY3JlYXRvcnMgPSBHZW5lcmljX3dpdGhfY3JlYXRvcnNcbiAgbW9kdWxlIHR5cGUgU3VtbWFibGUgPSBTdW1tYWJsZVxuXG4gIGluY2x1ZGUgRGVyaXZlZFxuXG4gICgqKiBUaGUgaWRpb20gZm9yIHVzaW5nIFtDb250YWluZXIuTWFrZV0gaXMgdG8gYmluZCB0aGUgcmVzdWx0aW5nIG1vZHVsZSBhbmQgdG9cbiAgICAgIGV4cGxpY2l0bHkgaW1wb3J0IGVhY2ggb2YgdGhlIGZ1bmN0aW9ucyB0aGF0IG9uZSB3YW50czpcblxuICAgICAge1tcbiAgICAgICAgbW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0IC4uLiBlbmQpXG4gICAgICAgIGxldCBjb3VudCAgICA9IEMuY291bnRcbiAgICAgICAgbGV0IGV4aXN0cyAgID0gQy5leGlzdHNcbiAgICAgICAgbGV0IGZpbmQgICAgID0gQy5maW5kXG4gICAgICAgICgqIC4uLiAqKVxuICAgICAgXX1cblxuICAgICAgVGhpcyBpcyBwcmVmZXJhYmxlIHRvOlxuXG4gICAgICB7W1xuICAgICAgICBpbmNsdWRlIENvbnRhaW5lci5NYWtlIChzdHJ1Y3QgLi4uIGVuZClcbiAgICAgIF19XG5cbiAgICAgIGJlY2F1c2UgdGhlIFtpbmNsdWRlXSBtYWtlcyBpdCB0b28gZWFzeSB0byBzaGFkb3cgc3BlY2lhbGl6ZWQgaW1wbGVtZW50YXRpb25zIG9mXG4gICAgICBjb250YWluZXIgZnVuY3Rpb25zIChbbGVuZ3RoXSBiZWluZyBhIGNvbW1vbiBvbmUpLlxuXG4gICAgICBbQ29udGFpbmVyLk1ha2UwXSBpcyBsaWtlIFtDb250YWluZXIuTWFrZV0sIGJ1dCBmb3IgbW9ub21vcnBoaWMgY29udGFpbmVycyBsaWtlXG4gICAgICBbc3RyaW5nXS4gKilcbiAgbW9kdWxlIE1ha2UgKFQgOiBNYWtlX2FyZykgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBULnRcblxuICBtb2R1bGUgTWFrZTAgKFQgOiBNYWtlMF9hcmcpIDogUzAgd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGVsdCA6PSBULkVsdC50XG5cbiAgbW9kdWxlIE1ha2VfZ2VuIChUIDogTWFrZV9nZW5fYXJnKSA6XG4gICAgR2VuZXJpYyB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnQgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0XG5cbiAgbW9kdWxlIE1ha2Vfd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2Vfd2l0aF9jcmVhdG9yc19hcmcpIDpcbiAgICBTMV93aXRoX2NyZWF0b3JzIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudFxuXG4gIG1vZHVsZSBNYWtlMF93aXRoX2NyZWF0b3JzIChUIDogTWFrZTBfd2l0aF9jcmVhdG9yc19hcmcpIDpcbiAgICBTMF93aXRoX2NyZWF0b3JzIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBlbHQgOj0gVC5FbHQudFxuXG4gIG1vZHVsZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChUIDogTWFrZV9nZW5fd2l0aF9jcmVhdG9yc19hcmcpIDpcbiAgICBHZW5lcmljX3dpdGhfY3JlYXRvcnNcbiAgICB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnRcbiAgICAgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0XG4gICAgIGFuZCB0eXBlICgnYSwgJ3BoYW50b20pIGNvbmNhdCA6PSAoJ2EsICdwaGFudG9tKSBULmNvbmNhdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIEVpdGhlciA9IEVpdGhlcjBcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgQ29udGFpbmVyX2ludGZcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxudHlwZSAoJ3QsICdhLCAnYWNjdW0pIGZvbGQgPVxuICAndCAtPiBpbml0OidhY2N1bSAtPiBmOigoJ2FjY3VtIC0+ICdhIC0+ICdhY2N1bSlbQGxvY2FsXSkgLT4gJ2FjY3VtXG5cbnR5cGUgKCd0LCAnYSkgaXRlciA9ICd0IC0+IGY6KCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG50eXBlICd0IGxlbmd0aCA9ICd0IC0+IGludFxuXG5sZXQgaXRlciB+KGZvbGQgOiAoXywgXywgXykgZm9sZCkgdCB+ZiA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgLT4gZiBhKSBbQG5vbnRhaWxdXG5sZXQgY291bnQgfmZvbGQgdCB+ZiA9IGZvbGQgdCB+aW5pdDowIH5mOihmdW4gbiBhIC0+IGlmIGYgYSB0aGVuIG4gKyAxIGVsc2UgbikgW0Bub250YWlsXVxuXG5sZXQgc3VtICh0eXBlIGEpIH5mb2xkIChtb2R1bGUgTSA6IFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gYSkgdCB+ZiA9XG4gIGZvbGQgdCB+aW5pdDpNLnplcm8gfmY6KGZ1biBuIGEgLT4gTS4oICsgKSBuIChmIGEpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdCA9XG4gIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgIFJlc3VsdC5Pa1xuICAgICAgKGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyBpdGVtIC0+XG4gICAgICAgICBtYXRjaCBmIGFjYyBpdGVtIHdpdGhcbiAgICAgICAgIHwgUmVzdWx0Lk9rIHggLT4geFxuICAgICAgICAgfCBFcnJvciBfIGFzIGUgLT4gcmV0dXJuIGUpKSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgfmZpbmlzaCB0ID1cbiAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgZmluaXNoXG4gICAgICAoZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIGl0ZW0gLT5cbiAgICAgICAgIG1hdGNoIGYgYWNjIGl0ZW0gd2l0aFxuICAgICAgICAgfCBDb250aW51ZV9vcl9zdG9wLkNvbnRpbnVlIHggLT4geFxuICAgICAgICAgfCBTdG9wIHggLT4gcmV0dXJuIHgpKSkgW0Bub250YWlsXVxuOztcblxubGV0IG1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZSA9XG4gIGZvbGQgdCB+aW5pdDpOb25lIH5mOihmdW4gYWNjIGVsdCAtPlxuICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgZWx0XG4gICAgfCBTb21lIG1pbiAtPiBpZiBjb21wYXJlIG1pbiBlbHQgPiAwIHRoZW4gU29tZSBlbHQgZWxzZSBhY2MpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmUgPVxuICBmb2xkIHQgfmluaXQ6Tm9uZSB+ZjooZnVuIGFjYyBlbHQgLT5cbiAgICBtYXRjaCBhY2Mgd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIGVsdFxuICAgIHwgU29tZSBtYXggLT4gaWYgY29tcGFyZSBtYXggZWx0IDwgMCB0aGVuIFNvbWUgZWx0IGVsc2UgYWNjKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbGVuZ3RoIH5mb2xkIGMgPSBmb2xkIGMgfmluaXQ6MCB+ZjooZnVuIGFjYyBfIC0+IGFjYyArIDEpXG5cbmxldCBpc19lbXB0eSB+aXRlciBjID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4gXyAtPiByLnJldHVybiBmYWxzZSk7XG4gICAgdHJ1ZSlcbjs7XG5cbmxldCBtZW0gfml0ZXIgYyB4IH5lcXVhbCA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHkgLT4gaWYgZXF1YWwgeCB5IHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBleGlzdHMgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb3JfYWxsIH5pdGVyIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biB4IC0+IGlmIG5vdCAoZiB4KSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9tYXAgfml0ZXIgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgdCB+ZjooZnVuIHggLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIGFzIHJlcyAtPiByLnJldHVybiByZXMpO1xuICAgIE5vbmUpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kIH5pdGVyIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIHIucmV0dXJuIChTb21lIHgpKTtcbiAgICBOb25lKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgdG9fbGlzdCB+Zm9sZCBjID0gTGlzdC5yZXYgKGZvbGQgYyB+aW5pdDpbXSB+ZjooZnVuIGFjYyB4IC0+IHggOjogYWNjKSlcblxubGV0IHRvX2FycmF5IH5sZW5ndGggfml0ZXIgYyA9XG4gIGxldCBhcnJheSA9IHJlZiBbfHxdIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgaXRlciBjIH5mOihmdW4geCAtPlxuICAgIGlmICFpID0gMCB0aGVuIGFycmF5IDo9IEFycmF5LmNyZWF0ZSB+bGVuOihsZW5ndGggYykgeDtcbiAgICAhYXJyYXkuKCFpKSA8LSB4O1xuICAgIGluY3IgaSk7XG4gICFhcnJheVxuOztcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogTWFrZV9nZW5fYXJnKSA6XG4gIEdlbmVyaWMgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50IGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdCA9XG5zdHJ1Y3RcbiAgbGV0IGZvbGQgPSBULmZvbGRcblxuICBsZXQgaXRlciA9XG4gICAgbWF0Y2ggVC5pdGVyIHdpdGhcbiAgICB8IGBDdXN0b20gaXRlciAtPiBpdGVyXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmYgLT4gaXRlciB+Zm9sZCB0IH5mXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCA9XG4gICAgbWF0Y2ggVC5sZW5ndGggd2l0aFxuICAgIHwgYEN1c3RvbSBsZW5ndGggLT4gbGVuZ3RoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgLT4gbGVuZ3RoIH5mb2xkIHRcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgdCA9IGlzX2VtcHR5IH5pdGVyIHRcbiAgbGV0IG1lbSB0IHggfmVxdWFsID0gbWVtIH5pdGVyIHQgeCB+ZXF1YWxcbiAgbGV0IHN1bSBtIHQgPSBzdW0gfmZvbGQgbSB0XG4gIGxldCBjb3VudCB0IH5mID0gY291bnQgfmZvbGQgdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHMgfml0ZXIgdCB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbCB+aXRlciB0IH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXAgfml0ZXIgdCB+ZlxuICBsZXQgZmluZCB0IH5mID0gZmluZCB+aXRlciB0IH5mXG4gIGxldCB0b19saXN0IHQgPSB0b19saXN0IH5mb2xkIHRcbiAgbGV0IHRvX2FycmF5IHQgPSB0b19hcnJheSB+bGVuZ3RoIH5pdGVyIHRcbiAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IG1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gbWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gZm9sZF9yZXN1bHQgdCB+Zm9sZCB+aW5pdCB+ZlxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBmb2xkX3VudGlsIHQgfmZvbGQgfmluaXQgfmYgfmZpbmlzaFxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogTWFrZV9hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW4gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgVC50XG4gICAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgIGVuZClcblxuICBsZXQgbWVtIHQgeCA9IG1lbSB0IHggfmVxdWFsOlQuRWx0LmVxdWFsXG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlX2dlbl93aXRoX2NyZWF0b3JzX2FyZykgOlxuICBHZW5lcmljX3dpdGhfY3JlYXRvcnNcbiAgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50XG4gICBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbiAgIGFuZCB0eXBlICgnYSwgJ3BoYW50b20pIGNvbmNhdCA6PSAoJ2EsICdwaGFudG9tKSBULmNvbmNhdCA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChUKVxuXG4gIGxldCBvZl9saXN0ID0gVC5vZl9saXN0XG4gIGxldCBvZl9hcnJheSA9IFQub2ZfYXJyYXlcbiAgbGV0IGNvbmNhdCA9IFQuY29uY2F0XG4gIGxldCBjb25jYXRfb2ZfYXJyYXkgPSBULmNvbmNhdF9vZl9hcnJheVxuICBsZXQgYXBwZW5kIGEgYiA9IGNvbmNhdCAoY29uY2F0X29mX2FycmF5IFt8IGE7IGIgfF0pXG4gIGxldCBjb25jYXRfbWFwIHQgfmYgPSBjb25jYXQgKGNvbmNhdF9vZl9hcnJheSAoQXJyYXkubWFwICh0b19hcnJheSB0KSB+ZikpXG5cbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gICAgY29uY2F0X21hcCB0IH5mOihmdW4geCAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBvZl9hcnJheSBbfHxdXG4gICAgICB8IFNvbWUgeSAtPiBvZl9hcnJheSBbfCB5IHxdKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBTb21lIChmIHgpKSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IGZpbHRlcl9tYXAgdCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSkgW0Bub250YWlsXVxuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPVxuICAgIGxldCBhcnJheSA9IEFycmF5Lm1hcCAodG9fYXJyYXkgdCkgfmYgaW5cbiAgICBsZXQgeHMgPVxuICAgICAgQXJyYXkuZm9sZF9yaWdodCBhcnJheSB+aW5pdDpbXSB+ZjooZnVuIGVpdGhlciBhY2MgLT5cbiAgICAgICAgbWF0Y2ggKGVpdGhlciA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgfCBGaXJzdCB4IC0+IHggOjogYWNjXG4gICAgICAgIHwgU2Vjb25kIF8gLT4gYWNjKVxuICAgIGluXG4gICAgbGV0IHlzID1cbiAgICAgIEFycmF5LmZvbGRfcmlnaHQgYXJyYXkgfmluaXQ6W10gfmY6KGZ1biBlaXRoZXIgYWNjIC0+XG4gICAgICAgIG1hdGNoIChlaXRoZXIgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgXyAtPiBhY2NcbiAgICAgICAgfCBTZWNvbmQgeCAtPiB4IDo6IGFjYylcbiAgICBpblxuICAgIG9mX2xpc3QgeHMsIG9mX2xpc3QgeXNcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICAgIHBhcnRpdGlvbl9tYXAgdCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gRmlyc3QgeCBlbHNlIFNlY29uZCB4KSBbQG5vbnRhaWxdXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2Vfd2l0aF9jcmVhdG9yc19hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9ycyAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICAgIHR5cGUgKCdhLCBfKSBjb25jYXQgPSAnYSBULnRcblxuICAgICAgbGV0IGNvbmNhdF9vZl9hcnJheSA9IG9mX2FycmF5XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlMF93aXRoX2NyZWF0b3JzIChUIDogTWFrZTBfd2l0aF9jcmVhdG9yc19hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9ycyAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgICAgdHlwZSAoJ2EsIF8pIGNvbmNhdCA9ICdhIGxpc3RcblxuICAgICAgbGV0IGNvbmNhdF9vZl9hcnJheSA9IEFycmF5LnRvX2xpc3RcbiAgICBlbmQpXG5cbiAgbGV0IG1lbSB0IHggPSBtZW0gdCB4IH5lcXVhbDpULkVsdC5lcXVhbFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuaW5jbHVkZSBJbmRleGVkX2NvbnRhaW5lcl9pbnRmXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbmxldCBpdGVyaSB+Zm9sZCB0IH5mID1cbiAgaWdub3JlXG4gICAgKGZvbGQgdCB+aW5pdDowIH5mOihmdW4gaSB4IC0+XG4gICAgICAgZiBpIHg7XG4gICAgICAgaSArIDEpXG4gICAgIDogaW50KVxuOztcblxubGV0IGZvbGRpIH5mb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyB2IC0+XG4gICAgbGV0IGFjYyA9IGYgIWkgYWNjIHYgaW5cbiAgICBpIDo9ICFpICsgMTtcbiAgICBhY2MpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBjb3VudGkgfmZvbGRpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpIG4gYSAtPiBpZiBmIGkgYSB0aGVuIG4gKyAxIGVsc2UgbikgW0Bub250YWlsXVxuOztcblxubGV0IGV4aXN0c2kgfml0ZXJpIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSBjIH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb3JfYWxsaSB+aXRlcmkgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIGMgfmY6KGZ1biBpIHggLT4gaWYgbm90IChmIGkgeCkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgdHJ1ZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRfbWFwaSB+aXRlcmkgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gYXMgcmVzIC0+IHIucmV0dXJuIHJlcyk7XG4gICAgTm9uZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRpIH5pdGVyaSBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgYyB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIHIucmV0dXJuIChTb21lIChpLCB4KSkpO1xuICAgIE5vbmUpIFtAbm9udGFpbF1cbjs7XG5cbigqIEFsbG93cyBbTWFrZV9nZW5dIHRvIHNoYXJlIGEgW0NvbnRhaW5lci5HZW5lcmljXSBpbXBsZW1lbnRhdGlvbiB3aXRoLCBlLmcuLFxuICAgW0NvbnRhaW5lci5NYWtlX2dlbl93aXRoX2NyZWF0b3JzXS4gKilcbm1vZHVsZSBNYWtlX2dlbl93aXRoX2NvbnRhaW5lclxuICAgIChUIDogTWFrZV9nZW5fYXJnKVxuICAgIChDIDogQ29udGFpbmVyLkdlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50XG4gICAgICBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHQpIDpcbiAgR2VuZXJpYyB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnQgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0ID1cbnN0cnVjdFxuICBpbmNsdWRlIENcblxuICBsZXQgaXRlcmkgPVxuICAgIG1hdGNoIFQuaXRlcmkgd2l0aFxuICAgIHwgYEN1c3RvbSBpdGVyaSAtPiBpdGVyaVxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IH5mIC0+IGl0ZXJpIH5mb2xkIHQgfmZcbiAgOztcblxuICBsZXQgZm9sZGkgPVxuICAgIG1hdGNoIFQuZm9sZGkgd2l0aFxuICAgIHwgYEN1c3RvbSBmb2xkaSAtPiBmb2xkaVxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IH5pbml0IH5mIC0+IGZvbGRpIH5mb2xkIHQgfmluaXQgfmZcbiAgOztcblxuICBsZXQgY291bnRpIHQgfmYgPSBjb3VudGkgfmZvbGRpIHQgfmZcbiAgbGV0IGV4aXN0c2kgdCB+ZiA9IGV4aXN0c2kgfml0ZXJpIHQgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBmb3JfYWxsaSB+aXRlcmkgdCB+ZlxuICBsZXQgZmluZF9tYXBpIHQgfmYgPSBmaW5kX21hcGkgfml0ZXJpIHQgfmZcbiAgbGV0IGZpbmRpIHQgfmYgPSBmaW5kaSB+aXRlcmkgdCB+ZlxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbiAoVCA6IE1ha2VfZ2VuX2FyZykgOlxuICBHZW5lcmljIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHQgPVxuc3RydWN0XG4gIG1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2VfZ2VuIChUKVxuICBpbmNsdWRlIENcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NvbnRhaW5lciAoVCkgKEMpXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UwIChUIDogTWFrZTBfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlIChfLCBfKSB0ID0gVC50XG4gICAgICB0eXBlICdhIGVsdCA9IFQuRWx0LnRcbiAgICBlbmQpXG5cbiAgbGV0IG1lbSB0IHggPSBtZW0gdCB4IH5lcXVhbDpULkVsdC5lcXVhbFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChUIDogTWFrZV9nZW5fd2l0aF9jcmVhdG9yc19hcmcpIDpcbiAgR2VuZXJpY193aXRoX2NyZWF0b3JzXG4gIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudFxuICAgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0XG4gICBhbmQgdHlwZSAoJ2EsICdwaGFudG9tKSBjb25jYXQgOj0gKCdhLCAncGhhbnRvbSkgVC5jb25jYXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEMgPSBDb250YWluZXIuTWFrZV9nZW5fd2l0aF9jcmVhdG9ycyAoVClcbiAgaW5jbHVkZSBDXG4gIGluY2x1ZGUgTWFrZV9nZW5fd2l0aF9jb250YWluZXIgKFQpIChDKVxuXG4gIGxldCBkZXJpdmVkX2luaXQgbiB+ZiA9IG9mX2FycmF5IChBcnJheS5pbml0IG4gfmYpXG5cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIFQuaW5pdCB3aXRoXG4gICAgfCBgQ3VzdG9tIGluaXQgLT4gaW5pdFxuICAgIHwgYERlZmluZV91c2luZ19vZl9hcnJheSAtPiBkZXJpdmVkX2luaXRcbiAgOztcblxuICBsZXQgZGVyaXZlZF9jb25jYXRfbWFwaSB0IH5mID0gY29uY2F0IChULmNvbmNhdF9vZl9hcnJheSAoQXJyYXkubWFwaSAodG9fYXJyYXkgdCkgfmYpKVxuXG4gIGxldCBjb25jYXRfbWFwaSA9XG4gICAgbWF0Y2ggVC5jb25jYXRfbWFwaSB3aXRoXG4gICAgfCBgQ3VzdG9tIGNvbmNhdF9tYXBpIC0+IGNvbmNhdF9tYXBpXG4gICAgfCBgRGVmaW5lX3VzaW5nX2NvbmNhdCAtPiBkZXJpdmVkX2NvbmNhdF9tYXBpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICAgIGNvbmNhdF9tYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBvZl9hcnJheSBbfHxdXG4gICAgICB8IFNvbWUgeSAtPiBvZl9hcnJheSBbfCB5IHxdKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1hcGkgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBpIHggLT4gU29tZSAoZiBpIHgpKSBbQG5vbnRhaWxdXG5cbiAgbGV0IGZpbHRlcmkgdCB+ZiA9XG4gICAgZmlsdGVyX21hcGkgdCB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpIFtAbm9udGFpbF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2NyZWF0b3JzIChUIDogTWFrZV93aXRoX2NyZWF0b3JzX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgICAgdHlwZSAoJ2EsIF8pIGNvbmNhdCA9ICdhIFQudFxuXG4gICAgICBsZXQgY29uY2F0X29mX2FycmF5ID0gb2ZfYXJyYXlcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UwX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlMF93aXRoX2NyZWF0b3JzX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlIChfLCBfKSB0ID0gVC50XG4gICAgICB0eXBlICdhIGVsdCA9IFQuRWx0LnRcbiAgICAgIHR5cGUgKCdhLCBfKSBjb25jYXQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBjb25jYXRfb2ZfYXJyYXkgPSBBcnJheS50b19saXN0XG4gICAgZW5kKVxuXG4gIGxldCBtZW0gdCB4ID0gbWVtIHQgeCB+ZXF1YWw6VC5FbHQuZXF1YWxcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFN0ZGxpYi5MYXp5XG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gbGF6eV90X29mX3NleHBcbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX2xhenlfdFxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGxhenlfdF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuOztcblxuW0BAQGVuZF1cblxuZXh0ZXJuYWwgZm9yY2UgOiAoJ2EgdFtAbG9jYWxfb3B0XSkgLT4gJ2EgPSBcIiVsYXp5X2ZvcmNlXCJcblxubGV0IG1hcCB0IH5mID0gbGF6eSAoZiAoZm9yY2UgdCkpXG5cbmxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIGlmIHBoeXNfZXF1YWwgdDEgdDIgdGhlbiAwIGVsc2UgY29tcGFyZV9hIChmb3JjZSB0MSkgKGZvcmNlIHQyKVxuOztcblxubGV0IGVxdWFsIGVxdWFsX2EgdDEgdDIgPSBpZiBwaHlzX2VxdWFsIHQxIHQyIHRoZW4gdHJ1ZSBlbHNlIGVxdWFsX2EgKGZvcmNlIHQxKSAoZm9yY2UgdDIpXG5sZXQgaGFzaF9mb2xkX3QgPSBIYXNoLkJ1aWx0aW4uaGFzaF9mb2xkX2xhenlfdFxubGV0IHBlZWsgdCA9IGlmIGlzX3ZhbCB0IHRoZW4gU29tZSAoZm9yY2UgdCkgZWxzZSBOb25lXG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4geCA9IGZyb21fdmFsIHhcbiAgICBsZXQgYmluZCB0IH5mID0gbGF6eSAoZm9yY2UgKGYgKGZvcmNlIHQpKSlcbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubW9kdWxlIFRfdW5mb3JjaW5nID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgaWYgaXNfdmFsIHQgdGhlbiBzZXhwX29mX2EgKGZvcmNlIHQpIGVsc2Ugc2V4cF9vZl9zdHJpbmcgXCI8dW5mb3JjZWQgbGF6eT5cIlxuICA7O1xuZW5kXG4iLCIoKiBTcGxpdCBvZmYgdG8gYXZvaWQgYSBjeWNsaWMgZGVwZW5kZW5jeSB3aXRoIFtPcl9lcnJvcl0uICopXG5cbm9wZW4hIEltcG9ydFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5sZXQgc2xvd19jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aCA9XG4gIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJOZWdhdGl2ZSBwb3NpdGlvbjogJWRcIiBwb3MgKCk7XG4gIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJOZWdhdGl2ZSBsZW5ndGg6ICVkXCIgbGVuICgpO1xuICAoKiBXZSB1c2UgW3BvcyA+IHRvdGFsX2xlbmd0aCAtIGxlbl0gcmF0aGVyIHRoYW4gW3BvcyArIGxlbiA+IHRvdGFsX2xlbmd0aF0gdG8gYXZvaWQgdGhlXG4gICAgIHBvc3NpYmlsaXR5IG9mIG92ZXJmbG93LiAqKVxuICBpZiBwb3MgPiB0b3RhbF9sZW5ndGggLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJwb3MgKyBsZW4gcGFzdCBlbmQ6ICVkICsgJWQgPiAlZFwiIHBvcyBsZW4gdG90YWxfbGVuZ3RoICgpXG5bQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuOztcblxubGV0IGNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoID1cbiAgKCogVGhpcyBpcyBiZXR0ZXIgdGhhbiBbc2xvd19jaGVja19wb3NfbGVuX2V4bl0gZm9yIHR3byByZWFzb25zOlxuXG4gICAgIC0gbXVjaCBsZXNzIGlubGluZWQgY29kZVxuICAgICAtIG9ubHkgb25lIGNvbmRpdGlvbmFsIGp1bXBcblxuICAgICBUaGUgcmVhc29uIGl0IHdvcmtzIGlzIHRoYXQgY2hlY2tpbmcgWzwgMF0gaXMgdGVzdGluZyB0aGUgaGlnaGVzdCBvcmRlciBiaXQsIHNvXG4gICAgIFthIDwgMCB8fCBiIDwgMF0gaXMgdGhlIHNhbWUgYXMgW2EgbG9yIGIgPCAwXS5cblxuICAgICBbcG9zICsgbGVuXSBjYW4gb3ZlcmZsb3csIHNvIFtwb3MgPiB0b3RhbF9sZW5ndGggLSBsZW5dIGlzIG5vdCBlcXVpdmFsZW50IHRvXG4gICAgIFt0b3RhbF9sZW5ndGggLSBsZW4gLSBwb3MgPCAwXSwgd2UgbmVlZCB0byB0ZXN0IGZvciBbcG9zICsgbGVuXSBvdmVyZmxvdyBhc1xuICAgICB3ZWxsLiAqKVxuICBsZXQgc3RvcCA9IHBvcyArIGxlbiBpblxuICBpZiBwb3MgbG9yIGxlbiBsb3Igc3RvcCBsb3IgKHRvdGFsX2xlbmd0aCAtIHN0b3ApIDwgMFxuICB0aGVuIHNsb3dfY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGhcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgZ2V0X3Bvc19sZW5fZXhuID8ocG9zID0gMCkgP2xlbiAoKSB+dG90YWxfbGVuZ3RoID1cbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IFNvbWUgaSAtPiBpXG4gICAgfCBOb25lIC0+IHRvdGFsX2xlbmd0aCAtIHBvc1xuICBpblxuICBjaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgcG9zLCBsZW5cbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBzbG93X2NoZWNrX3Bvc19sZW5fZXhuID0gc2xvd19jaGVja19wb3NfbGVuX2V4blxuZW5kXG4iLCJcbm1vZHVsZSBSZXByID0gc3RydWN0XG4gIG9wZW4gU3RkbGliLkJpZ2FycmF5XG5cbiAgdHlwZSB0ID0gKGludDY0LCBpbnQ2NF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG4gIGxldCBvZl9zdGF0ZSA6IFN0ZGxpYi5SYW5kb20uU3RhdGUudCAtPiB0ID0gU3RkbGliLk9iai5tYWdpY1xuZW5kXG5cbmxldCBhc3NpZ24gZHN0IHNyYyA9XG4gIGxldCBkc3QgPSBSZXByLm9mX3N0YXRlIChMYXp5LmZvcmNlIGRzdCkgaW5cbiAgbGV0IHNyYyA9IFJlcHIub2Zfc3RhdGUgKExhenkuZm9yY2Ugc3JjKSBpblxuICBTdGRsaWIuQmlnYXJyYXkuQXJyYXkxLmJsaXQgc3JjIGRzdFxuXG5sZXQgbWFrZV9kZWZhdWx0IGRlZmF1bHQgPVxuICBsZXQgc3BsaXRfZnJvbV9wYXJlbnQgdiA9XG4gICAgU3RkbGliLkxhenkubWFwX3ZhbCBTdGRsaWIuUmFuZG9tLlN0YXRlLnNwbGl0IHZcbiAgaW5cbiAgU3RkbGliLkRvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQgKGZ1biAoKSAtPiBkZWZhdWx0KVxuXG5sZXQgZ2V0X3N0YXRlIHJhbmRvbV9rZXkgPSBTdGRsaWIuRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIENoYXIgPSBDaGFyMFxuXG4oKiBVbmZvcnR1bmF0ZWx5LCBiZWNhdXNlIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGRvZXMgbm90IGV4cG9zZVxuICAgW1N0ZGxpYi5SYW5kb20uU3RhdGUuZGVmYXVsdF0sIHdlIGhhdmUgdG8gY29uc3RydWN0IG91ciBvd24uICBXZSB0aGVuIGJ1aWxkIHRoZVxuICAgW1N0ZGxpYi5SYW5kb20uaW50XSwgW1N0ZGxpYi5SYW5kb20uYm9vbF0gZnVuY3Rpb25zIGFuZCBmcmllbmRzIHVzaW5nIHRoYXQgZGVmYXVsdCBzdGF0ZSBpblxuICAgZXhhY3RseSB0aGUgc2FtZSB3YXkgYXMgdGhlIHN0YW5kYXJkIGxpYnJhcnkuXG5cbiAgIE9uZSBvdGhlciB0cmlja2luZXNzIGlzIHRoYXQgd2UgbmVlZCBhY2Nlc3MgdG8gdGhlIHVuZXhwb3NlZCBbU3RkbGliLlJhbmRvbS5TdGF0ZS5hc3NpZ25dXG4gICBmdW5jdGlvbiwgd2hpY2ggYWNjZXNzZXMgdGhlIHVuZXhwb3NlZCBzdGF0ZSByZXByZXNlbnRhdGlvbi4gIFNvLCB3ZSBjb3B5IHRoZVxuICAgW1N0YXRlLnJlcHJdIHR5cGUgZGVmaW5pdGlvbiBhbmQgW2Fzc2lnbl0gZnVuY3Rpb24gdG8gaGVyZSBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LFxuICAgYW5kIHVzZSBbT2JqLm1hZ2ljXSB0byBnZXQgYWNjZXNzIHRvIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uLiAqKVxuXG4oKiBSZWdyZXNzaW9uIHRlc3RzIG91Z2h0IHRvIGJlIGRldGVybWluaXN0aWMgYmVjYXVzZSB0aGF0IHdheSBhbnlvbmUgd2hvIGJyZWFrcyB0aGUgdGVzdFxuICAga25vd3MgdGhhdCBpdCdzIHRoZWlyIGNvZGUgdGhhdCBicm9rZSB0aGUgdGVzdC4gIElmIHRlc3RzIGFyZSBub25kZXRlcm1pbmlzdGljLCBhIHRlc3RcbiAgIGZhaWx1cmUgbWF5IGluc3RlYWQgaGFwcGVuIGJlY2F1c2UgdGhlIHRlc3QgcnVubmVyIGdvdCB1bmx1Y2t5IGFuZCB1bmNvdmVyZWQgYW5cbiAgIGV4aXN0aW5nIGJ1ZyBpbiB0aGUgY29kZSBzdXBwb3NlZGx5IGJlaW5nIFwicHJvdGVjdGVkXCIgYnkgdGhlIHRlc3QgaW4gcXVlc3Rpb24uICopXG5sZXQgZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIH5hbGxvd19pbl90ZXN0cyA9XG4gIGlmIGFtX3Rlc3RpbmdcbiAgdGhlbiAoXG4gICAgbWF0Y2ggYWxsb3dfaW5fdGVzdHMgd2l0aFxuICAgIHwgU29tZSB0cnVlIC0+ICgpXG4gICAgfCBOb25lIHwgU29tZSBmYWxzZSAtPlxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgXCJpbml0aWFsaXppbmcgUmFuZG9tIHdpdGggYSBub25kZXRlcm1pbmlzdGljIHNlZWQgaXMgZm9yYmlkZGVuIGluIGlubGluZSB0ZXN0c1wiKVxuOztcblxuZXh0ZXJuYWwgcmFuZG9tX3NlZWQgOiB1bml0IC0+IGludCBhcnJheSA9IFwiY2FtbF9zeXNfcmFuZG9tX3NlZWRcIlxuXG5sZXQgcmFuZG9tX3NlZWQgP2FsbG93X2luX3Rlc3RzICgpID1cbiAgZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIH5hbGxvd19pbl90ZXN0cztcbiAgcmFuZG9tX3NlZWQgKClcbjs7XG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAoKiBXZSBhbGxvdyBsYXppbmVzcyBvbmx5IGZvciB0aGUgZGVmaW5pdGlvbiBvZiBbZGVmYXVsdF0sIGJlbG93LCB3aGljaCBtYXkgbGF6aWx5IGNhbGxcbiAgICAgW21ha2Vfc2VsZl9pbml0XS4gRm9yIGFsbCBvdGhlciBwdXJwb3Nlcywgd2UgY3JlYXRlIGFuZCB1c2UgW3RdIGVhZ2VybHkuICopXG4gIHR5cGUgdCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUudCBMYXp5LnRcblxuICBsZXQgYml0cyB0ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHQpXG4gIGxldCBib29sIHQgPSBTdGRsaWIuUmFuZG9tLlN0YXRlLmJvb2wgKExhenkuZm9yY2UgdClcbiAgbGV0IGludCB0IHggPSBTdGRsaWIuUmFuZG9tLlN0YXRlLmludCAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBpbnQzMiB0IHggPSBTdGRsaWIuUmFuZG9tLlN0YXRlLmludDMyIChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IGludDY0IHQgeCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUuaW50NjQgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgbmF0aXZlaW50IHQgeCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUubmF0aXZlaW50IChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IG1ha2Ugc2VlZCA9IExhenkuZnJvbV92YWwgKFN0ZGxpYi5SYW5kb20uU3RhdGUubWFrZSBzZWVkKVxuICBsZXQgY29weSB0ID0gTGF6eS5mcm9tX3ZhbCAoU3RkbGliLlJhbmRvbS5TdGF0ZS5jb3B5IChMYXp5LmZvcmNlIHQpKVxuICBsZXQgY2hhciB0ID0gaW50IHQgMjU2IHw+IENoYXIudW5zYWZlX29mX2ludFxuICBsZXQgYXNjaWkgdCA9IGludCB0IDEyOCB8PiBDaGFyLnVuc2FmZV9vZl9pbnRcblxuICBsZXQgbWFrZV9zZWxmX2luaXQgP2FsbG93X2luX3Rlc3RzICgpID1cbiAgICBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzO1xuICAgIExhenkuZnJvbV92YWwgKFN0ZGxpYi5SYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG4gIDs7XG5cbiAgbGV0IGFzc2lnbiA9IFJhbmRvbV9yZXByLmFzc2lnblxuICBsZXQgZnVsbF9pbml0IHQgc2VlZCA9IGFzc2lnbiB0IChtYWtlIHNlZWQpXG5cbiAgbGV0IGRlZmF1bHQgPVxuICAgIGlmIGFtX3Rlc3RpbmdcbiAgICB0aGVuIChcbiAgICAgICgqIFdlIGRlZmluZSBCYXNlJ3MgZGVmYXVsdCByYW5kb20gc3RhdGUgYXMgYSBjb3B5IG9mIE9DYW1sJ3MgZGVmYXVsdCByYW5kb20gc3RhdGUuXG4gICAgICAgICBUaGlzIG1lYW5zIHRoYXQgcHJvZ3JhbXMgdGhhdCB1c2UgQmFzZS5SYW5kb20gd2lsbCBzZWUgdGhlIHNhbWUgc2VxdWVuY2Ugb2ZcbiAgICAgICAgIHJhbmRvbSBiaXRzIGFzIGlmIHRoZXkgaGFkIHVzZWQgU3RkbGliLlJhbmRvbS4gSG93ZXZlciwgYmVjYXVzZSBbZ2V0X3N0YXRlXSByZXR1cm5zXG4gICAgICAgICBhIGNvcHksIEJhc2UuUmFuZG9tIGFuZCBPQ2FtbC5SYW5kb20gYXJlIG5vdCB1c2luZyB0aGUgc2FtZSBzdGF0ZS4gSWYgYSBwcm9ncmFtXG4gICAgICAgICB1c2VkIGJvdGgsIGVhY2ggb2YgdGhlbSB3b3VsZCBnbyB0aHJvdWdoIHRoZSBzYW1lIHNlcXVlbmNlIG9mIHJhbmRvbSBiaXRzLiBUb1xuICAgICAgICAgYXZvaWQgdGhhdCwgd2UgcmVzZXQgT0NhbWwncyByYW5kb20gc3RhdGUgdG8gYSBkaWZmZXJlbnQgc2VlZCwgZ2l2aW5nIGl0IGFcbiAgICAgICAgIGRpZmZlcmVudCBzZXF1ZW5jZS4gKilcbiAgICAgIGxldCB0ID0gU3RkbGliLlJhbmRvbS5nZXRfc3RhdGUgKCkgaW5cbiAgICAgIFN0ZGxpYi5SYW5kb20uaW5pdCAxMzc7XG4gICAgICBMYXp5LmZyb21fdmFsIHQpXG4gICAgZWxzZVxuICAgICAgbGF6eVxuICAgICAgICAoKiBPdXRzaWRlIG9mIHRlc3RzLCB3ZSBpbml0aWFsaXplIHJhbmRvbSBzdGF0ZSBub25kZXRlcm1pbmlzdGljYWxseSBhbmQgbGF6aWx5LlxuICAgICAgICAgICBXZSBmb3JjZSB0aGUgcmFuZG9tIGluaXRpYWxpemF0aW9uIHRvIGJlIGxhenkgc28gdGhhdCB3ZSBkbyBub3QgcGF5IGFueSBjb3N0XG4gICAgICAgICAgIGZvciBpdCBpbiBwcm9ncmFtcyB0aGF0IGRvIG5vdCB1c2UgcmFuZG9tbmVzcy4gKilcbiAgICAgICAgKExhenkuZm9yY2UgKG1ha2Vfc2VsZl9pbml0ICgpKSlcbiAgOztcblxuICBsZXQgaW50X29uXzY0Yml0cyB0IGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAweDNGRkZGRkZGICgqICgxIGxzbCAzMCkgLSAxICopXG4gICAgdGhlbiBpbnQgdCBib3VuZFxuICAgIGVsc2UgU3RkbGliLkludDY0LnRvX2ludCAoaW50NjQgdCAoU3RkbGliLkludDY0Lm9mX2ludCBib3VuZCkpXG4gIDs7XG5cbiAgbGV0IGludF9vbl8zMmJpdHMgdCBib3VuZCA9XG4gICAgKCogTm90IGFsd2F5cyB0cnVlIHdpdGggdGhlIEphdmFTY3JpcHQgYmFja2VuZC4gKilcbiAgICBpZiBib3VuZCA8PSAweDNGRkZGRkZGICgqICgxIGxzbCAzMCkgLSAxICopXG4gICAgdGhlbiBpbnQgdCBib3VuZFxuICAgIGVsc2UgU3RkbGliLkludDMyLnRvX2ludCAoaW50MzIgdCAoU3RkbGliLkludDMyLm9mX2ludCBib3VuZCkpXG4gIDs7XG5cbiAgbGV0IGludCA9XG4gICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgfCBXNjQgLT4gaW50X29uXzY0Yml0c1xuICAgIHwgVzMyIC0+IGludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9pbnQ2NCA9XG4gICAgbGV0IG9wZW4gU3RkbGliLkludDY0IGluXG4gICAgbGV0IGJpdHMgc3RhdGUgPSBvZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgZnVuIHN0YXRlIC0+XG4gICAgICBsb2d4b3JcbiAgICAgICAgKGJpdHMgc3RhdGUpXG4gICAgICAgIChsb2d4b3IgKHNoaWZ0X2xlZnQgKGJpdHMgc3RhdGUpIDMwKSAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgNjApKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX2ludDMyID1cbiAgICBsZXQgb3BlbiBTdGRsaWIuSW50MzIgaW5cbiAgICBsZXQgYml0cyBzdGF0ZSA9IG9mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBmdW4gc3RhdGUgLT4gbG9neG9yIChiaXRzIHN0YXRlKSAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgMzApXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50X29uXzY0Yml0cyBzdGF0ZSA9IFN0ZGxpYi5JbnQ2NC50b19pbnQgKGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUpXG4gIGxldCBmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHMgc3RhdGUgPSBTdGRsaWIuSW50MzIudG9faW50IChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKVxuXG4gIGxldCBmdWxsX3JhbmdlX2ludCA9XG4gICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgfCBXNjQgLT4gZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzY0Yml0cyBzdGF0ZSA9XG4gICAgU3RkbGliLkludDY0LnRvX25hdGl2ZWludCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSlcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fMzJiaXRzIHN0YXRlID1cbiAgICBTdGRsaWIuTmF0aXZlaW50Lm9mX2ludDMyIChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX25hdGl2ZWludCA9XG4gICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgfCBXNjQgLT4gZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fMzJiaXRzXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2Nyb3NzZWRfYm91bmRzIG5hbWUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgc3RyaW5nX29mX2JvdW5kID1cbiAgICBQcmludGYuZmFpbHdpdGhmXG4gICAgICBcIlJhbmRvbS4lczogY3Jvc3NlZCBib3VuZHMgWyVzID4gJXNdXCJcbiAgICAgIG5hbWVcbiAgICAgIChzdHJpbmdfb2ZfYm91bmQgbG93ZXJfYm91bmQpXG4gICAgICAoc3RyaW5nX29mX2JvdW5kIHVwcGVyX2JvdW5kKVxuICAgICAgKClcbiAgW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbiAgOztcblxuICBsZXQgaW50X2luY2wgPVxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfaW50IHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwiaW50XCIgbG8gaGkgSW50LnRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gaGkgLSBsbyBpblxuICAgICAgaWYgZGlmZiA9IEludC5tYXhfdmFsdWVcbiAgICAgIHRoZW4gbG8gKyAoZnVsbF9yYW5nZV9pbnQgc3RhdGUgbGFuZCBJbnQubWF4X3ZhbHVlKVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBcbiAgICAgIHRoZW4gbG8gKyBpbnQgc3RhdGUgKEludC5zdWNjIGRpZmYpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IGludDMyX2luY2wgPVxuICAgIGxldCBvcGVuIEludDMyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gU3RkbGliLkludDMyIGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnQzMlwiIGxvIGhpIHRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gc3ViIGhpIGxvIGluXG4gICAgICBpZiBkaWZmID0gbWF4X2ludFxuICAgICAgdGhlbiBhZGQgbG8gKGxvZ2FuZCAoZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSkgbWF4X2ludClcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwbFxuICAgICAgdGhlbiBhZGQgbG8gKGludDMyIHN0YXRlIChzdWNjIGRpZmYpKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gIGxldCBuYXRpdmVpbnRfaW5jbCA9XG4gICAgbGV0IG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfbmF0aXZlaW50IHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGxldCBvcGVuIFN0ZGxpYi5OYXRpdmVpbnQgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcIm5hdGl2ZWludFwiIGxvIGhpIHRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gc3ViIGhpIGxvIGluXG4gICAgICBpZiBkaWZmID0gbWF4X2ludFxuICAgICAgdGhlbiBhZGQgbG8gKGxvZ2FuZCAoZnVsbF9yYW5nZV9uYXRpdmVpbnQgc3RhdGUpIG1heF9pbnQpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMG5cbiAgICAgIHRoZW4gYWRkIGxvIChuYXRpdmVpbnQgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IGludDY0X2luY2wgPVxuICAgIGxldCBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gU3RkbGliLkludDY0IGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnQ2NFwiIGxvIGhpIHRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gc3ViIGhpIGxvIGluXG4gICAgICBpZiBkaWZmID0gbWF4X2ludFxuICAgICAgdGhlbiBhZGQgbG8gKGxvZ2FuZCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSkgbWF4X2ludClcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwTFxuICAgICAgdGhlbiBhZGQgbG8gKGludDY0IHN0YXRlIChzdWNjIGRpZmYpKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gICgqIFJldHVybiBhIHVuaWZvcm1seSByYW5kb20gZmxvYXQgaW4gWzAsIDEpLiAqKVxuICBsZXQgcmVjIHJhd2Zsb2F0IHN0YXRlID1cbiAgICBsZXQgb3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgc2NhbGUgPSAweDFwLTMwIGluXG4gICAgKCogMl4tMzAgKilcbiAgICBsZXQgcjEgPSBTdGRsaWIuZmxvYXRfb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGxldCByMiA9IFN0ZGxpYi5mbG9hdF9vZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgbGV0IHJlc3VsdCA9ICgocjEgKi4gc2NhbGUpICsuIHIyKSAqLiBzY2FsZSBpblxuICAgICgqIFdpdGggdmVyeSBzbWFsbCBwcm9iYWJpbGl0eSwgcmVzdWx0IGNhbiByb3VuZCB1cCB0byAxLjAsIHNvIGluIHRoYXQgY2FzZSwgd2UganVzdFxuICAgICAgIHRyeSBhZ2Fpbi4gKilcbiAgICBpZiByZXN1bHQgPCAxLjAgdGhlbiByZXN1bHQgZWxzZSByYXdmbG9hdCBzdGF0ZVxuICA7O1xuXG4gIGxldCBmbG9hdCBzdGF0ZSBoaSA9IHJhd2Zsb2F0IHN0YXRlICouIGhpXG5cbiAgbGV0IGZsb2F0X3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICBsZXQgb3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJmbG9hdFwiIGxvIGhpIFN0ZGxpYi5zdHJpbmdfb2ZfZmxvYXQ7XG4gICAgbG8gKy4gZmxvYXQgc3RhdGUgKGhpIC0uIGxvKVxuICA7O1xuZW5kXG5cbmxldCBkZWZhdWx0ID0gUmFuZG9tX3JlcHIubWFrZV9kZWZhdWx0IFN0YXRlLmRlZmF1bHRcbmxldCBiaXRzICgpID0gU3RhdGUuYml0cyAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgaW50IHggPSBTdGF0ZS5pbnQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50MzIgeCA9IFN0YXRlLmludDMyIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IG5hdGl2ZWludCB4ID0gU3RhdGUubmF0aXZlaW50IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGludDY0IHggPSBTdGF0ZS5pbnQ2NCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBmbG9hdCB4ID0gU3RhdGUuZmxvYXQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50X2luY2wgeCB5ID0gU3RhdGUuaW50X2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBpbnQzMl9pbmNsIHggeSA9IFN0YXRlLmludDMyX2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBuYXRpdmVpbnRfaW5jbCB4IHkgPSBTdGF0ZS5uYXRpdmVpbnRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGludDY0X2luY2wgeCB5ID0gU3RhdGUuaW50NjRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGZsb2F0X3JhbmdlIHggeSA9IFN0YXRlLmZsb2F0X3JhbmdlIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGNoYXIgKCkgPSBTdGF0ZS5jaGFyIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBhc2NpaSAoKSA9IFN0YXRlLmFzY2lpIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBmdWxsX2luaXQgc2VlZCA9IFN0YXRlLmZ1bGxfaW5pdCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHNlZWRcbmxldCBpbml0IHNlZWQgPSBmdWxsX2luaXQgW3wgc2VlZCB8XVxubGV0IHNlbGZfaW5pdCA/YWxsb3dfaW5fdGVzdHMgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkID9hbGxvd19pbl90ZXN0cyAoKSlcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHNcbiIsIigqKiBBbiBpbnRlcm5hbC1vbmx5IG1vZHVsZSBmYWN0b3JlZCBvdXQgZHVlIHRvIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIGNvcmVfYXJyYXlcbiAgICBhbmQgY29yZV9saXN0LiAgQ29udGFpbnMgY29kZSBmb3IgcGVybXV0aW5nIGFuIGFycmF5LiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQXJyYXkwXG5cbmxldCBwZXJtdXRlID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpID8ocG9zID0gMCkgP2xlbiB0ID1cbiAgKCogQ29waWVkIGZyb20gW09yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wXSB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgd2hlbiBjb21waWxpbmdcbiAgICAgd2l0aG91dCBmbGFtYmRhLiAqKVxuICBsZXQgdG90YWxfbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IFNvbWUgbCAtPiBsXG4gICAgfCBOb25lIC0+IHRvdGFsX2xlbmd0aCAtIHBvc1xuICBpblxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uMC5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgbGV0IG51bV9zd2FwcyA9IGxlbiAtIDEgaW5cbiAgZm9yIGkgPSBudW1fc3dhcHMgZG93bnRvIDEgZG9cbiAgICBsZXQgdGhpc19pID0gcG9zICsgaSBpblxuICAgICgqIFtyYW5kb21faV0gaXMgZHJhd24gZnJvbSBbcG9zLHRoaXNfaV0gKilcbiAgICBsZXQgcmFuZG9tX2kgPSBwb3MgKyBSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAoaSArIDEpIGluXG4gICAgc3dhcCB0IHRoaXNfaSByYW5kb21faVxuICBkb25lXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTGVzc1xuICB8IEVxdWFsXG4gIHwgR3JlYXRlclxuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIGVudW1lcmF0ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbmxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgTGVzcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgfCBFcXVhbCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBHcmVhdGVyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG47O1xuXG5sZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbmxldCBhbGwgPSAoWyBMZXNzOyBFcXVhbDsgR3JlYXRlciBdIDogdCBsaXN0KVxuXG5sZXQgdF9vZl9zZXhwID1cbiAgKGxldCBlcnJvcl9zb3VyY2VfXzAwNV8gPSBcIm9yZGVyaW5nLm1sLnRcIiBpblxuICAgZnVuY3Rpb25cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImxlc3NcIiB8IFwiTGVzc1wiKSAtPiBMZXNzXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJlcXVhbFwiIHwgXCJFcXVhbFwiKSAtPiBFcXVhbFxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZ3JlYXRlclwiIHwgXCJHcmVhdGVyXCIpIC0+IEdyZWF0ZXJcbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibGVzc1wiIHwgXCJMZXNzXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJlcXVhbFwiIHwgXCJFcXVhbFwiKSA6OiBfKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiZ3JlYXRlclwiIHwgXCJHcmVhdGVyXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICB8IHNleHBfXzAwNF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG47O1xuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBMZXNzIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkxlc3NcIlxuICAgIHwgRXF1YWwgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXF1YWxcIlxuICAgIHwgR3JlYXRlciAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJHcmVhdGVyXCJcbiAgICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiTGVzc1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiRXF1YWxcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkdyZWF0ZXJcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxuW0BAQGVuZF1cblxubGV0IGVxdWFsIGEgYiA9IGNvbXBhcmUgYSBiID0gMFxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgX29yZGVyaW5nID0gdCA9XG4gICAgfCBMZXNzXG4gICAgfCBFcXVhbFxuICAgIHwgR3JlYXRlclxuZW5kXG5cbmxldCBvZl9pbnQgbiA9IGlmIG4gPCAwIHRoZW4gTGVzcyBlbHNlIGlmIG4gPSAwIHRoZW4gRXF1YWwgZWxzZSBHcmVhdGVyXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IExlc3MgLT4gLTFcbiAgfCBFcXVhbCAtPiAwXG4gIHwgR3JlYXRlciAtPiAxXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIwXG5cblxuaW5jbHVkZSBMaXN0MVxuXG4oKiBUaGlzIGl0c2VsZiBpbmNsdWRlcyBbTGlzdDBdLiAqKVxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nX2lubGluZSBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgZ2xvYmFsaXplIDogJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSB0W0BvY2FtbC5sb2NhbF0pIC0+ICdhIHQgPVxuICAgIGZ1biAodHlwZSBhX18wMDFfKVxuICAgICAgICA6ICgoKGFfXzAwMV9bQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDAxXykgLT4gKGFfXzAwMV8gdFtAb2NhbWwubG9jYWxdKSAtPiBhX18wMDFfIHQpIC0+XG4gICAgICBnbG9iYWxpemVfbGlzdFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBsaXN0X29mX3NleHBcbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfbGlzdFxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBsaXN0X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgT3JfdW5lcXVhbF9sZW5ndGhzID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBPayBvZiAnYVxuICAgIHwgVW5lcXVhbF9sZW5ndGhzXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICAgIGZ1biBfY21wX19hIGFfXzAxMF8gYl9fMDExXyAtPlxuICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDEwXyBiX18wMTFfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMTBfLCBiX18wMTFfIHdpdGhcbiAgICAgIHwgT2sgX2FfXzAxMl8sIE9rIF9iX18wMTNfIC0+IF9jbXBfX2EgX2FfXzAxMl8gX2JfXzAxM19cbiAgICAgIHwgT2sgXywgXyAtPiAtMVxuICAgICAgfCBfLCBPayBfIC0+IDFcbiAgICAgIHwgVW5lcXVhbF9sZW5ndGhzLCBVbmVxdWFsX2xlbmd0aHMgLT4gMClcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gKHR5cGUgYV9fMDE3XykgOiAoKGFfXzAxN18gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiBhX18wMTdfIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDE0XyAtPiBmdW5jdGlvblxuICAgICAgfCBPayBhcmcwX18wMTVfIC0+XG4gICAgICAgIGxldCByZXMwX18wMTZfID0gX29mX2FfXzAxNF8gYXJnMF9fMDE1XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPa1wiOyByZXMwX18wMTZfIF1cbiAgICAgIHwgVW5lcXVhbF9sZW5ndGhzIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlVuZXF1YWxfbGVuZ3Roc1wiXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGludmFyaWFudCBmIHQgPSBpdGVyIHQgfmZcbmxldCBvZl9saXN0IHQgPSB0XG5cbmxldCByYW5nZScgfmNvbXBhcmUgfnN0cmlkZSA/KHN0YXJ0ID0gYGluY2x1c2l2ZSkgPyhzdG9wID0gYGV4Y2x1c2l2ZSkgc3RhcnRfaSBzdG9wX2kgPVxuICBsZXQgbmV4dF9pID0gc3RyaWRlIHN0YXJ0X2kgaW5cbiAgbGV0IG9yZGVyIHggeSA9IE9yZGVyaW5nLm9mX2ludCAoY29tcGFyZSB4IHkpIGluXG4gIGxldCByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpID1cbiAgICBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2UnOiBzdHJpZGUgZnVuY3Rpb24gY2Fubm90IHJldHVybiB0aGUgc2FtZSB2YWx1ZVwiXG4gIGluXG4gIGxldCBpbml0aWFsX3N0cmlkZV9vcmRlciA9XG4gICAgbWF0Y2ggb3JkZXIgc3RhcnRfaSBuZXh0X2kgd2l0aFxuICAgIHwgRXF1YWwgLT4gcmFpc2Vfc3RyaWRlX2Nhbm5vdF9yZXR1cm5fc2FtZV92YWx1ZSAoKVxuICAgIHwgTGVzcyAtPiBgTGVzc1xuICAgIHwgR3JlYXRlciAtPiBgR3JlYXRlclxuICBpblxuICBsZXQgcmVjIGxvb3AgaSBhY2N1bSA9XG4gICAgbGV0IGlfdG9fc3RvcF9vcmRlciA9IG9yZGVyIGkgc3RvcF9pIGluXG4gICAgbWF0Y2ggaV90b19zdG9wX29yZGVyLCBpbml0aWFsX3N0cmlkZV9vcmRlciB3aXRoXG4gICAgfCBMZXNzLCBgTGVzcyB8IEdyZWF0ZXIsIGBHcmVhdGVyIC0+XG4gICAgICAoKiBoYXZlbid0IHlldCByZWFjaGVkIFtzdG9wX2ldLiBDb250aW51ZS4gKilcbiAgICAgIGxldCBuZXh0X2kgPSBzdHJpZGUgaSBpblxuICAgICAgKG1hdGNoIG9yZGVyIGkgbmV4dF9pLCBpbml0aWFsX3N0cmlkZV9vcmRlciB3aXRoXG4gICAgICAgfCBFcXVhbCwgXyAtPiByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpXG4gICAgICAgfCBMZXNzLCBgR3JlYXRlciB8IEdyZWF0ZXIsIGBMZXNzIC0+XG4gICAgICAgICBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2UnOiBzdHJpZGUgZnVuY3Rpb24gY2Fubm90IGNoYW5nZSBkaXJlY3Rpb25cIlxuICAgICAgIHwgTGVzcywgYExlc3MgfCBHcmVhdGVyLCBgR3JlYXRlciAtPiBsb29wIG5leHRfaSAoaSA6OiBhY2N1bSkpXG4gICAgfCBMZXNzLCBgR3JlYXRlciB8IEdyZWF0ZXIsIGBMZXNzIC0+XG4gICAgICAoKiBzdGVwcGVkIHBhc3QgW3N0b3BfaV0uICBGaW5pc2hlZC4gKilcbiAgICAgIGFjY3VtXG4gICAgfCBFcXVhbCwgXyAtPlxuICAgICAgKCogcmVhY2hlZCBbc3RvcF9pXS4gIEZpbmlzaGVkLiAqKVxuICAgICAgKG1hdGNoIHN0b3Agd2l0aFxuICAgICAgIHwgYGluY2x1c2l2ZSAtPiBpIDo6IGFjY3VtXG4gICAgICAgfCBgZXhjbHVzaXZlIC0+IGFjY3VtKVxuICBpblxuICBsZXQgc3RhcnRfaSA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgYGluY2x1c2l2ZSAtPiBzdGFydF9pXG4gICAgfCBgZXhjbHVzaXZlIC0+IG5leHRfaVxuICBpblxuICByZXYgKGxvb3Agc3RhcnRfaSBbXSlcbjs7XG5cbmxldCByYW5nZSA/KHN0cmlkZSA9IDEpID8oc3RhcnQgPSBgaW5jbHVzaXZlKSA/KHN0b3AgPSBgZXhjbHVzaXZlKSBzdGFydF9pIHN0b3BfaSA9XG4gIGlmIHN0cmlkZSA9IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2U6IHN0cmlkZSBtdXN0IGJlIG5vbi16ZXJvXCI7XG4gIHJhbmdlJyB+Y29tcGFyZSB+c3RyaWRlOihmdW4geCAtPiB4ICsgc3RyaWRlKSB+c3RhcnQgfnN0b3Agc3RhcnRfaSBzdG9wX2lcbjs7XG5cbmxldCBoZCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogXyAtPiBTb21lIHhcbjs7XG5cbmxldCB0bCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IF8gOjogdCcgLT4gU29tZSB0J1xuOztcblxubGV0IG50aCB0IG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBudGhfYXV4IHQgbiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBhIDo6IHQgLT4gaWYgbiA9IDAgdGhlbiBTb21lIGEgZWxzZSBudGhfYXV4IHQgKG4gLSAxKVxuICAgIGluXG4gICAgbnRoX2F1eCB0IG4pXG47O1xuXG5sZXQgbnRoX2V4biB0IG4gPVxuICBtYXRjaCBudGggdCBuIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIkxpc3QubnRoX2V4biAlZCBjYWxsZWQgb24gbGlzdCBvZiBsZW5ndGggJWRcIiBuIChsZW5ndGggdCkgKClcbiAgfCBTb21lIGEgLT4gYVxuOztcblxubGV0IHVub3JkZXJlZF9hcHBlbmQgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBsIHwgbCwgW10gLT4gbFxuICB8IF8gLT4gcmV2X2FwcGVuZCBsMSBsMlxuOztcblxubW9kdWxlIENoZWNrX2xlbmd0aDIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IFNhbWVfbGVuZ3RoIG9mIGludFxuICAgIHwgVW5lcXVhbF9sZW5ndGhzIG9mXG4gICAgICAgIHsgc2hhcmVkX2xlbmd0aCA6IGludFxuICAgICAgICA7IHRhaWxfb2ZfYSA6ICdhIGxpc3RcbiAgICAgICAgOyB0YWlsX29mX2IgOiAnYiBsaXN0XG4gICAgICAgIH1cblxuICAoKiBJbiB0aGUgW1VuZXF1YWxfbGVuZ3Roc10gY2FzZSwgYXQgbGVhc3Qgb25lIG9mIHRoZSB0YWlscyB3aWxsIGJlIG5vbi1lbXB0eS4gKilcbiAgbGV0IG9mX2xpc3RzIGwxIGwyID1cbiAgICBsZXQgcmVjIGxvb3AgYSBiIHNoYXJlZF9sZW5ndGggPVxuICAgICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IFtdLCBbXSAtPiBTYW1lX2xlbmd0aCBzaGFyZWRfbGVuZ3RoXG4gICAgICB8IF8gOjogYSwgXyA6OiBiIC0+IGxvb3AgYSBiIChzaGFyZWRfbGVuZ3RoICsgMSlcbiAgICAgIHwgW10sIF8gfCBfLCBbXSAtPiBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2EgPSBhOyB0YWlsX29mX2IgPSBiIH1cbiAgICBpblxuICAgIGxvb3AgbDEgbDIgMFxuICA7O1xuZW5kXG5cbmxldCBjaGVja19sZW5ndGgyX2V4biBuYW1lIGwxIGwyID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMi5vZl9saXN0cyBsMSBsMiB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiAoKVxuICB8IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYTsgdGFpbF9vZl9iIH0gLT5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZFwiXG4gICAgICBuYW1lXG4gICAgICAoc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2EpXG4gICAgICAoc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2IpXG4gICAgICAoKVxuOztcblxubGV0IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmYgPVxuICBtYXRjaCBDaGVja19sZW5ndGgyLm9mX2xpc3RzIGwxIGwyIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+IE9yX3VuZXF1YWxfbGVuZ3Rocy5PayAoZiBsMSBsMilcbiAgfCBVbmVxdWFsX2xlbmd0aHMgXyAtPiBVbmVxdWFsX2xlbmd0aHNcbjs7XG5cbm1vZHVsZSBDaGVja19sZW5ndGgzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPVxuICAgIHwgU2FtZV9sZW5ndGggb2YgaW50XG4gICAgfCBVbmVxdWFsX2xlbmd0aHMgb2ZcbiAgICAgICAgeyBzaGFyZWRfbGVuZ3RoIDogaW50XG4gICAgICAgIDsgdGFpbF9vZl9hIDogJ2EgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYiA6ICdiIGxpc3RcbiAgICAgICAgOyB0YWlsX29mX2MgOiAnYyBsaXN0XG4gICAgICAgIH1cblxuICAoKiBJbiB0aGUgW1VuZXF1YWxfbGVuZ3Roc10gY2FzZSwgYXQgbGVhc3Qgb25lIG9mIHRoZSB0YWlscyB3aWxsIGJlIG5vbi1lbXB0eS4gKilcbiAgbGV0IG9mX2xpc3RzIGwxIGwyIGwzID1cbiAgICBsZXQgcmVjIGxvb3AgYSBiIGMgc2hhcmVkX2xlbmd0aCA9XG4gICAgICBtYXRjaCBhLCBiLCBjIHdpdGhcbiAgICAgIHwgW10sIFtdLCBbXSAtPiBTYW1lX2xlbmd0aCBzaGFyZWRfbGVuZ3RoXG4gICAgICB8IF8gOjogYSwgXyA6OiBiLCBfIDo6IGMgLT4gbG9vcCBhIGIgYyAoc2hhcmVkX2xlbmd0aCArIDEpXG4gICAgICB8IFtdLCBfLCBfIHwgXywgW10sIF8gfCBfLCBfLCBbXSAtPlxuICAgICAgICBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2EgPSBhOyB0YWlsX29mX2IgPSBiOyB0YWlsX29mX2MgPSBjIH1cbiAgICBpblxuICAgIGxvb3AgbDEgbDIgbDMgMFxuICA7O1xuZW5kXG5cbmxldCBjaGVja19sZW5ndGgzX2V4biBuYW1lIGwxIGwyIGwzID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMy5vZl9saXN0cyBsMSBsMiBsMyB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiAoKVxuICB8IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYTsgdGFpbF9vZl9iOyB0YWlsX29mX2MgfSAtPlxuICAgIGxldCBuMSA9IHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9hIGluXG4gICAgbGV0IG4yID0gc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2IgaW5cbiAgICBsZXQgbjMgPSBzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYyBpblxuICAgIGludmFsaWRfYXJnZiBcImxlbmd0aCBtaXNtYXRjaCBpbiAlczogJWQgPD4gJWQgfHwgJWQgPD4gJWRcIiBuYW1lIG4xIG4yIG4yIG4zICgpXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZiA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDMub2ZfbGlzdHMgbDEgbDIgbDMgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gT3JfdW5lcXVhbF9sZW5ndGhzLk9rIChmIGwxIGwyIGwzKVxuICB8IFVuZXF1YWxfbGVuZ3RocyBfIC0+IFVuZXF1YWxfbGVuZ3Roc1xuOztcblxubGV0IGl0ZXIyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooaXRlcjJfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IGl0ZXIyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiaXRlcjJfZXhuXCIgbDEgbDI7XG4gIGl0ZXIyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgcmV2X21hcDIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihyZXZfbWFwMl9vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgcmV2X21hcDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJyZXZfbWFwMl9leG5cIiBsMSBsMjtcbiAgcmV2X21hcDJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBmb2xkMiBsMSBsMiB+aW5pdCB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGZvbGQyX29rIH5pbml0IH5mKSBbQG5vbnRhaWxdXG5cbmxldCBmb2xkMl9leG4gbDEgbDIgfmluaXQgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImZvbGQyX2V4blwiIGwxIGwyO1xuICBmb2xkMl9vayBsMSBsMiB+aW5pdCB+ZlxuOztcblxubGV0IGZvbGRfcmlnaHQyIGwxIGwyIH5mIH5pbml0ID1cbiAgY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZm9sZF9yaWdodDJfb2sgfmYgfmluaXQpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX3JpZ2h0Ml9leG4gbDEgbDIgfmYgfmluaXQgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImZvbGRfcmlnaHQyX2V4blwiIGwxIGwyO1xuICBmb2xkX3JpZ2h0Ml9vayBsMSBsMiB+ZiB+aW5pdFxuOztcblxubGV0IGZvcl9hbGwyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZm9yX2FsbDJfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IGZvcl9hbGwyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZm9yX2FsbDJfZXhuXCIgbDEgbDI7XG4gIGZvcl9hbGwyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgZXhpc3RzMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGV4aXN0czJfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IGV4aXN0czJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJleGlzdHMyX2V4blwiIGwxIGwyO1xuICBleGlzdHMyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgZXF1YWwgYSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgYiA6OiBicyAtPiBlcXVhbCBhIGIgfHwgbG9vcCBlcXVhbCBhIGJzXG4gIGluXG4gIGxvb3AgZXF1YWwgYSB0XG47O1xuXG4oKiBUaGlzIGlzIGEgY29weSBvZiB0aGUgY29kZSBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCB3aXRoIGFuIGV4dHJhIGV0YS1leHBhbnNpb24gdG9cbiAgIGF2b2lkIGNyZWF0aW5nIHBhcnRpYWwgY2xvc3VyZXMgKHNob3dlZCB1cCBmb3IgW2ZpbHRlcl0pIGluIHByb2ZpbGluZykuICopXG5sZXQgcmV2X2ZpbHRlciB0IH5mID1cbiAgbGV0IHJlYyBmaW5kIH5mIGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdVxuICAgIHwgeCA6OiBsIC0+IGlmIGYgeCB0aGVuIGZpbmQgfmYgKHggOjogYWNjdSkgbCBlbHNlIGZpbmQgfmYgYWNjdSBsXG4gIGluXG4gIGZpbmQgfmYgW10gdFxuOztcblxubGV0IGZpbHRlciB0IH5mID0gcmV2IChyZXZfZmlsdGVyIHQgfmYpXG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgKG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGxvb3AgbFxuICAgICAgIHwgU29tZSBfIGFzIHIgLT4gcilcbiAgaW5cbiAgbG9vcCB0IFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kX21hcF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfbWFwX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXAgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcF9leG5cbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIGxvb3AgbFxuICBpblxuICBsb29wIHQgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByZWMgZmluZF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IHggOjogdCAtPiBpZiBmIHggdGhlbiB4IGVsc2UgZmluZF9leG4gdCB+ZlxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfZXhuXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+IGlmIGYgaSB4IHRoZW4gU29tZSAoaSwgeCkgZWxzZSBsb29wIChpICsgMSkgbFxuICBpblxuICBsb29wIDAgdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZGlfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kaV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRpIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gIGZpbmRpX2V4blxuOztcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIChtYXRjaCBmIGkgeCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgbClcbiAgaW5cbiAgbG9vcCAwIHQgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRfbWFwaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfbWFwaV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBpX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcGkgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcGlfZXhuXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gdHJ1ZVxuICAgIHwgaGQgOjogdGwgLT4gZiBpIGhkICYmIGxvb3AgKGkgKyAxKSB0bFxuICBpblxuICBsb29wIDAgdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgaGQgOjogdGwgLT4gZiBpIGhkIHx8IGxvb3AgKGkgKyAxKSB0bFxuICBpblxuICBsb29wIDAgdCBbQG5vbnRhaWxdXG47O1xuXG4oKiogRm9yIHRoZSBjb250YWluZXIgaW50ZXJmYWNlLiAqKVxubGV0IGZvbGRfbGVmdCA9IGZvbGRcblxubGV0IG9mX2FycmF5ID0gQXJyYXkudG9fbGlzdFxubGV0IHRvX2FycmF5ID0gQXJyYXkub2ZfbGlzdFxubGV0IHRvX2xpc3QgdCA9IHRcblxubGV0IG1heF9ub25fdGFpbGNhbGwgPVxuICBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBTeXMuTmF0aXZlIHwgU3lzLkJ5dGVjb2RlIC0+IDFfMDAwXG4gICgqIFdlIGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlIHN0YWNrLCBiZXR0ZXIgYmUgc2FmZSBhbmQgYXNzdW1lIGl0J3Mgc21hbGwuIFRoaXNcbiAgICAgbnVtYmVyIHdhcyB0YWtlbiBmcm9tIG9jYW1sI3N0ZGxpYi9saXN0Lm1sIHdoaWNoIGlzIGFsc28gZXF1YWwgdG8gdGhlIGRlZmF1bHQgbGltaXRcbiAgICAgb2YgcmVjdXJzaXZlIGNhbGwgaW4gdGhlIGpzX29mX29jYW1sIGNvbXBpbGVyIGJlZm9yZSBzd2l0Y2hpbmcgdG8gdHJhbXBvbGluZS4gKilcbiAgfCBTeXMuT3RoZXIgXyAtPiA1MFxuOztcblxuKCoqIFRhaWwgcmVjdXJzaXZlIHZlcnNpb25zIG9mIHN0YW5kYXJkIFtMaXN0XSBtb2R1bGUgKilcblxubGV0IHRhaWxfYXBwZW5kIGwxIGwyID0gcmV2X2FwcGVuZCAocmV2IGwxKSBsMlxuXG4oKiBUaGVyZSBhcmUgYSBmZXcgb3B0aW1pemVkIGxpc3Qgb3BlcmF0aW9ucyBoZXJlLCBpbmNsdWRpbmcgYXBwZW5kIGFuZCBtYXAuICBUaGVyZSBhcmVcbiAgIGJhc2ljYWxseSB0d28gb3B0aW1pemF0aW9ucyBpbiBwbGF5OiBsb29wIHVucm9sbGluZywgYW5kIGR5bmFtaWMgc3dpdGNoaW5nIGJldHdlZW5cbiAgIHN0YWNrIGFuZCBoZWFwIGFsbG9jYXRpb24uXG5cbiAgIFRoZSBsb29wLXVucm9sbGluZyBpcyBzdHJhaWdodGZvcndhcmQsIHdlIGp1c3QgdW5yb2xsIDUgbGV2ZWxzIG9mIHRoZSBsb29wLiAgVGhpcyBtYWtlc1xuICAgZWFjaCBpdGVyYXRpb24gZmFzdGVyLCBhbmQgYWxzbyByZWR1Y2VzIHRoZSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIGNvbnN1bWVkIHBlciBsaXN0XG4gICBlbGVtZW50LlxuXG4gICBUaGUgZHluYW1pYyBzd2l0Y2hpbmcgaXMgZG9uZSBieSBjb3VudGluZyB0aGUgbnVtYmVyIG9mIHN0YWNrIGZyYW1lcywgYW5kIHRoZW5cbiAgIHN3aXRjaGluZyB0byB0aGUgXCJzbG93XCIgaW1wbGVtZW50YXRpb24gd2hlbiB3ZSBleGNlZWQgYSBnaXZlbiBsaW1pdC4gIFRoaXMgbWVhbnMgdGhhdFxuICAgc2hvcnQgbGlzdHMgdXNlIHRoZSBmYXN0IHN0YWNrLWFsbG9jYXRpb24gbWV0aG9kLCBhbmQgbG9uZyBsaXN0cyB1c2UgYSBzbG93ZXIgb25lIHRoYXRcbiAgIGRvZXNuJ3QgcmVxdWlyZSBzdGFjayBzcGFjZS4gKilcbmxldCByZWMgY291bnRfYXBwZW5kIGwxIGwyIGNvdW50ID1cbiAgbWF0Y2ggbDIgd2l0aFxuICB8IFtdIC0+IGwxXG4gIHwgXyAtPlxuICAgIChtYXRjaCBsMSB3aXRoXG4gICAgIHwgW10gLT4gbDJcbiAgICAgfCBbIHgxIF0gLT4geDEgOjogbDJcbiAgICAgfCBbIHgxOyB4MiBdIC0+IHgxIDo6IHgyIDo6IGwyXG4gICAgIHwgWyB4MTsgeDI7IHgzIF0gLT4geDEgOjogeDIgOjogeDMgOjogbDJcbiAgICAgfCBbIHgxOyB4MjsgeDM7IHg0IF0gLT4geDEgOjogeDIgOjogeDMgOjogeDQgOjogbDJcbiAgICAgfCB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiB4NSA6OiB0bCAtPlxuICAgICAgIHgxXG4gICAgICAgOjogeDJcbiAgICAgICA6OiB4M1xuICAgICAgIDo6IHg0XG4gICAgICAgOjogeDVcbiAgICAgICA6OlxuICAgICAgIChpZiBjb3VudCA+IG1heF9ub25fdGFpbGNhbGxcbiAgICAgICAgdGhlbiB0YWlsX2FwcGVuZCB0bCBsMlxuICAgICAgICBlbHNlIGNvdW50X2FwcGVuZCB0bCBsMiAoY291bnQgKyAxKSkpXG47O1xuXG5sZXQgYXBwZW5kIGwxIGwyID0gY291bnRfYXBwZW5kIGwxIGwyIDBcblxuKCogQW4gb3JkaW5hcnkgdGFpbCByZWN1cnNpdmUgbWFwIGJ1aWxkcyB1cCBhbiBpbnRlcm1lZGlhdGUgKHJldmVyc2VkKSByZXByZXNlbnRhdGlvbixcbiAgIHdpdGggb25lIGhlYXAgYWxsb2NhdGVkIG9iamVjdCBwZXIgZWxlbWVudC4gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkIGNodW5rc1xuICAgOSBvYmplY3RzIGludG8gb25lIGhlYXAgYWxsb2NhdGVkIG9iamVjdCwgcmVkdWNpbmcgYWxsb2NhdGlvbiBhbmQgcGVyZm9ybWFuY2UgY29zdHNcbiAgIGFjY29yZGluZ2x5LiBOb3RlIHRoYXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBsaXN0IGlzIGRvbmUgYnkgdGhlIHN0ZGxpYidzIG1hcFxuICAgZnVuY3Rpb24uICopXG5sZXQgdGFpbF9tYXAgeHMgfmY6KGYgW0Bsb2NhbF0pID1cbiAgbGV0IHJlYyByaXNlIHlzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHlzXG4gICAgfCAoeTAsIHkxLCB5MiwgeTMsIHk0LCB5NSwgeTYsIHk3LCB5OCkgOjogYnMgLT5cbiAgICAgIHJpc2UgKHkwIDo6IHkxIDo6IHkyIDo6IHkzIDo6IHk0IDo6IHk1IDo6IHk2IDo6IHk3IDo6IHk4IDo6IHlzKSBic1xuICBpblxuICBsZXQgcmVjIGRpdmUgYnMgPSBmdW5jdGlvblxuICAgIHwgeDAgOjogeDEgOjogeDIgOjogeDMgOjogeDQgOjogeDUgOjogeDYgOjogeDcgOjogeDggOjogeHMgLT5cbiAgICAgIGxldCB5MCA9IGYgeDAgaW5cbiAgICAgIGxldCB5MSA9IGYgeDEgaW5cbiAgICAgIGxldCB5MiA9IGYgeDIgaW5cbiAgICAgIGxldCB5MyA9IGYgeDMgaW5cbiAgICAgIGxldCB5NCA9IGYgeDQgaW5cbiAgICAgIGxldCB5NSA9IGYgeDUgaW5cbiAgICAgIGxldCB5NiA9IGYgeDYgaW5cbiAgICAgIGxldCB5NyA9IGYgeDcgaW5cbiAgICAgIGxldCB5OCA9IGYgeDggaW5cbiAgICAgIGRpdmUgKCh5MCwgeTEsIHkyLCB5MywgeTQsIHk1LCB5NiwgeTcsIHk4KSA6OiBicykgeHNcbiAgICB8IHhzIC0+IHJpc2UgKG5vbnRhaWxfbWFwIH5mIHhzKSBic1xuICBpblxuICBsZXQgcmVzID0gZGl2ZSBbXSB4cyBpblxuICByZXNcbjs7XG5cbmxldCByZWMgY291bnRfbWFwIH5mOihmIFtAbG9jYWxdKSBsIGN0ciA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgWyB4MSBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIFsgZjEgXVxuICB8IFsgeDE7IHgyIF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIFsgZjE7IGYyIF1cbiAgfCBbIHgxOyB4MjsgeDMgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgbGV0IGYzID0gZiB4MyBpblxuICAgIFsgZjE7IGYyOyBmMyBdXG4gIHwgWyB4MTsgeDI7IHgzOyB4NCBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBsZXQgZjMgPSBmIHgzIGluXG4gICAgbGV0IGY0ID0gZiB4NCBpblxuICAgIFsgZjE7IGYyOyBmMzsgZjQgXVxuICB8IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IHg1IDo6IHRsIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBsZXQgZjMgPSBmIHgzIGluXG4gICAgbGV0IGY0ID0gZiB4NCBpblxuICAgIGxldCBmNSA9IGYgeDUgaW5cbiAgICBmMVxuICAgIDo6IGYyXG4gICAgOjogZjNcbiAgICA6OiBmNFxuICAgIDo6IGY1XG4gICAgOjogKGlmIGN0ciA+IG1heF9ub25fdGFpbGNhbGwgdGhlbiB0YWlsX21hcCB+ZiB0bCBlbHNlIGNvdW50X21hcCB+ZiB0bCAoY3RyICsgMSkpXG47O1xuXG5sZXQgbWFwIGwgfmYgPSBjb3VudF9tYXAgfmYgbCAwXG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcCB0IH5mOihmdW4geCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgKCA+PnwgKSBsIGYgPSBtYXAgbCB+ZlxubGV0IG1hcDJfb2sgbDEgbDIgfmYgPSByZXYgKHJldl9tYXAyX29rIGwxIGwyIH5mKVxubGV0IG1hcDIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihtYXAyX29rIH5mKSBbQG5vbnRhaWxdXG5cbmxldCBtYXAyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwibWFwMl9leG5cIiBsMSBsMjtcbiAgbWFwMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IHJldl9tYXAzX29rIGwxIGwyIGwzIH5mID1cbiAgbGV0IHJlYyBsb29wIGwxIGwyIGwzIGFjID1cbiAgICBtYXRjaCBsMSwgbDIsIGwzIHdpdGhcbiAgICB8IFtdLCBbXSwgW10gLT4gYWNcbiAgICB8IHgxIDo6IGwxLCB4MiA6OiBsMiwgeDMgOjogbDMgLT4gbG9vcCBsMSBsMiBsMyAoZiB4MSB4MiB4MyA6OiBhYylcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIGluXG4gIGxvb3AgbDEgbDIgbDMgW10gW0Bub250YWlsXVxuOztcblxubGV0IHJldl9tYXAzIGwxIGwyIGwzIH5mID0gY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZjoocmV2X21hcDNfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IHJldl9tYXAzX2V4biBsMSBsMiBsMyB+ZiA9XG4gIGNoZWNrX2xlbmd0aDNfZXhuIFwicmV2X21hcDNfZXhuXCIgbDEgbDIgbDM7XG4gIHJldl9tYXAzX29rIGwxIGwyIGwzIH5mXG47O1xuXG5sZXQgbWFwM19vayBsMSBsMiBsMyB+ZiA9IHJldiAocmV2X21hcDNfb2sgbDEgbDIgbDMgfmYpXG5sZXQgbWFwMyBsMSBsMiBsMyB+ZiA9IGNoZWNrX2xlbmd0aDMgbDEgbDIgbDMgfmY6KG1hcDNfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IG1hcDNfZXhuIGwxIGwyIGwzIH5mID1cbiAgY2hlY2tfbGVuZ3RoM19leG4gXCJtYXAzX2V4blwiIGwxIGwyIGwzO1xuICBtYXAzX29rIGwxIGwyIGwzIH5mXG47O1xuXG5sZXQgcmVjIHJldl9tYXBfYXBwZW5kIGwxIGwyIH5mID1cbiAgbWF0Y2ggbDEgd2l0aFxuICB8IFtdIC0+IGwyXG4gIHwgaCA6OiB0IC0+IHJldl9tYXBfYXBwZW5kIH5mIHQgKGYgaCA6OiBsMilcbjs7XG5cbmxldCB1bnppcCBsaXN0ID1cbiAgbGV0IHJlYyBsb29wIGxpc3QgbDEgbDIgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbDEsIGwyXG4gICAgfCAoeCwgeSkgOjogdGwgLT4gbG9vcCB0bCAoeCA6OiBsMSkgKHkgOjogbDIpXG4gIGluXG4gIGxvb3AgKHJldiBsaXN0KSBbXSBbXVxuOztcblxubGV0IHVuemlwMyBsaXN0ID1cbiAgbGV0IHJlYyBsb29wIGxpc3QgbDEgbDIgbDMgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbDEsIGwyLCBsM1xuICAgIHwgKHgsIHksIHopIDo6IHRsIC0+IGxvb3AgdGwgKHggOjogbDEpICh5IDo6IGwyKSAoeiA6OiBsMylcbiAgaW5cbiAgbG9vcCAocmV2IGxpc3QpIFtdIFtdIFtdXG47O1xuXG5sZXQgemlwX2V4biBsMSBsMiA9XG4gIHRyeSBtYXAyX29rIH5mOihmdW4gYSBiIC0+IGEsIGIpIGwxIGwyIHdpdGhcbiAgfCBfIC0+IGludmFsaWRfYXJnZiBcImxlbmd0aCBtaXNtYXRjaCBpbiB6aXBfZXhuOiAlZCA8PiAlZFwiIChsZW5ndGggbDEpIChsZW5ndGggbDIpICgpXG47O1xuXG5sZXQgemlwIGwxIGwyID0gbWFwMiB+ZjooZnVuIGEgYiAtPiBhLCBiKSBsMSBsMlxuXG4oKiogQWRkaXRpb25hbCBsaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJldl9tYXBpIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoIDo6IHQgLT4gbG9vcCAoaSArIDEpIChmIGkgaCA6OiBhY2MpIHRcbiAgaW5cbiAgbG9vcCAwIFtdIGwgW0Bub250YWlsXVxuOztcblxubGV0IG1hcGkgbCB+ZiA9IHJldiAocmV2X21hcGkgbCB+ZilcblxubGV0IGZvbGRpbmdfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCBpdGVyaSBsIH5mID1cbiAgaWdub3JlXG4gICAgKGZvbGQgbCB+aW5pdDowIH5mOihmdW4gaSB4IC0+XG4gICAgICAgZiBpIHg7XG4gICAgICAgaSArIDEpXG4gICAgIDogaW50KVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBzbmQgKGZvbGQgdCB+aW5pdDooMCwgaW5pdCkgfmY6KGZ1biAoaSwgYWNjKSB2IC0+IGkgKyAxLCBmIGkgYWNjIHYpKVxuOztcblxubGV0IGZpbHRlcmkgbCB+ZiA9XG4gIHJldiAoZm9sZGkgbCB+ZjooZnVuIHBvcyBhY2MgeCAtPiBpZiBmIHBvcyB4IHRoZW4geCA6OiBhY2MgZWxzZSBhY2MpIH5pbml0OltdKVxuOztcblxubGV0IHJlZHVjZSBsIH5mID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGhkIDo6IHRsIC0+IFNvbWUgKGZvbGQgfmluaXQ6aGQgfmYgdGwpXG47O1xuXG5sZXQgcmVkdWNlX2V4biBsIH5mID1cbiAgbWF0Y2ggcmVkdWNlIGwgfmYgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJlZHVjZV9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgcmVkdWNlX2JhbGFuY2VkIGwgfmYgPVxuICAoKiBDYWxsIHRoZSBcInNpemVcIiBvZiBhIHZhbHVlIHRoZSBudW1iZXIgb2YgbGlzdCBlbGVtZW50cyB0aGF0IGhhdmUgYmVlbiBjb21iaW5lZCBpbnRvXG4gICAgIGl0IHZpYSBjYWxscyB0byBbZl0uICBXZSBwcm9jZWVkIGJ5IHVzaW5nIFtmXSB0byBjb21iaW5lIGVsZW1lbnRzIGluIHRoZSBhY2N1bXVsYXRvclxuICAgICBvZiB0aGUgc2FtZSBzaXplIHVudGlsIHdlIGNhbid0IGNvbWJpbmUgYW55IG1vcmUsIHRoZW4gZ2V0dGluZyBhIG5ldyBlbGVtZW50IGZyb20gdGhlXG4gICAgIGlucHV0IGxpc3QgYW5kIHJlcGVhdGluZy5cblxuICAgICBXaXRoIHRoaXMgc3RyYXRlZ3ksIGluIHRoZSBhY2N1bXVsYXRvcjpcbiAgICAgLSB3ZSBvbmx5IGV2ZXIgaGF2ZSBlbGVtZW50cyBvZiBzaXplcyBhIHBvd2VyIG9mIHR3b1xuICAgICAtIHdlIG5ldmVyIGhhdmUgbW9yZSB0aGFuIG9uZSBlbGVtZW50IG9mIGVhY2ggc2l6ZVxuICAgICAtIHRoZSBzdW0gb2YgYWxsIHRoZSBlbGVtZW50IHNpemVzIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29uc3VtZWRcblxuICAgICBUaGVzZSBjb25kaXRpb25zIGVuZm9yY2UgdGhhdCBsaXN0IG9mIGVsZW1lbnRzIG9mIGVhY2ggc2l6ZSBpcyBwcmVjaXNlbHkgdGhlIGJpbmFyeVxuICAgICBleHBhbnNpb24gb2YgdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb25zdW1lZDogaWYgeW91J3ZlIGNvbnN1bWVkIDEzID0gMGIxMTAxXG4gICAgIGVsZW1lbnRzLCB5b3UgaGF2ZSBvbmUgZWxlbWVudCBvZiBzaXplIDgsIG9uZSBvZiBzaXplIDQsIGFuZCBvbmUgb2Ygc2l6ZSAxLiAgSGVuY2VcbiAgICAgd2hlbiBhIG5ldyBlbGVtZW50IGNvbWVzIGFsb25nLCB0aGUgbnVtYmVyIG9mIGNvbWJpbmluZ3MgeW91IG5lZWQgdG8gZG8gaXMgdGhlIG51bWJlclxuICAgICBvZiB0cmFpbGluZyAxcyBpbiB0aGUgYmluYXJ5IGV4cGFuc2lvbiBvZiBbbnVtXSwgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IGhhdmVcbiAgICAgYWxyZWFkeSBnb25lIGludG8gdGhlIGFjY3VtdWxhdG9yLiAgVGhlIGFjY3VtdWxhdG9yIGlzIGluIGFzY2VuZGluZyBvcmRlciBvZiBzaXplLCBzb1xuICAgICB0aGUgbmV4dCBlbGVtZW50IHRvIGNvbWJpbmUgd2l0aCBpcyBhbHdheXMgdGhlIGhlYWQgb2YgdGhlIGxpc3QuICopXG4gIGxldCByZWMgc3RlcF9hY2N1bSBudW0gYWNjIHggPVxuICAgIGlmIG51bSBsYW5kIDEgPSAwXG4gICAgdGhlbiB4IDo6IGFjY1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYWNjIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAoKiBOZXcgZWxlbWVudHMgZnJvbSBsYXRlciBpbiB0aGUgaW5wdXQgbGlzdCBnbyBvbiB0aGUgZnJvbnQgb2YgdGhlIGFjY3VtdWxhdG9yLCBzb1xuICAgICAgICAgdGhlIGFjY3VtdWxhdG9yIGlzIGluIHJldmVyc2Ugb3JkZXIgd3J0IHRoZSBvcmlnaW5hbCBsaXN0IG9yZGVyLCBoZW5jZSBbZiB5IHhdXG4gICAgICAgICBpbnN0ZWFkIG9mIFtmIHggeV0uICopXG4gICAgICB8IHkgOjogeXMgLT4gc3RlcF9hY2N1bSAobnVtIGFzciAxKSB5cyAoZiB5IHgpKVxuICBpblxuICAoKiBFeHBlcmltZW50YWxseSwgaW5saW5pbmcgW2ZvbGRpXSBhbmQgdW5yb2xsaW5nIHRoaXMgbG9vcCBhIGZldyB0aW1lcyBjYW4gcmVkdWNlXG4gICAgIHJ1bnRpbWUgZG93biB0byBhIHRoaXJkIGFuZCBhbGxvY2F0aW9uIHRvIDEvMTZ0aCBvciBzbyBpbiB0aGUgbWljcm9iZW5jaG1hcmtzIGJlbG93LlxuICAgICBIb3dldmVyLCBpbiBtb3N0IHVzZSBjYXNlcyBbZl0gaXMgbGlrZWx5IHRvIGJlIGV4cGVuc2l2ZSAob3RoZXJ3aXNlIHdoeSBkbyB5b3UgY2FyZVxuICAgICBhYm91dCB0aGUgb3JkZXIgb2YgcmVkdWN0aW9uPykgc28gdGhlIG92ZXJoZWFkIG9mIHRoaXMgZnVuY3Rpb24gaXRzZWxmIGRvZXNuJ3QgcmVhbGx5XG4gICAgIG1hdHRlci4gSWYgeW91IGNvbWUgdXAgd2l0aCBhIHVzZS1jYXNlIHdoZXJlIGl0IGRvZXMsIHRoZW4gdGhhdCdzIHNvbWV0aGluZyB5b3UgbWlnaHRcbiAgICAgd2FudCB0byB0cnk6IHNlZSBoZyBsb2cgLXByIDQ5ZWYwNjVmNDI5ZC4gKilcbiAgbWF0Y2ggZm9sZGkgbCB+aW5pdDpbXSB+ZjpzdGVwX2FjY3VtIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiB4cyAtPiBTb21lIChmb2xkIHhzIH5pbml0OnggfmY6KGZ1biB4IHkgLT4gZiB5IHgpKVxuOztcblxubGV0IHJlZHVjZV9iYWxhbmNlZF9leG4gbCB+ZiA9XG4gIG1hdGNoIHJlZHVjZV9iYWxhbmNlZCBsIH5mIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZWR1Y2VfYmFsYW5jZWRfZXhuXCJcbiAgfCBTb21lIHYgLT4gdlxuOztcblxubGV0IGdyb3VwaSBsIH5icmVhayA9XG4gIGxldCBncm91cHMgPVxuICAgIGZvbGRpIGwgfmluaXQ6W10gfmY6KGZ1biBpIGFjYyB4IC0+XG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBbXSAtPiBbIFsgeCBdIF1cbiAgICAgIHwgY3VycmVudF9ncm91cCA6OiB0bCAtPlxuICAgICAgICBpZiBicmVhayBpIChoZF9leG4gY3VycmVudF9ncm91cCkgeFxuICAgICAgICB0aGVuIFsgeCBdIDo6IGN1cnJlbnRfZ3JvdXAgOjogdGwgKCogc3RhcnQgbmV3IGdyb3VwICopXG4gICAgICAgIGVsc2UgKHggOjogY3VycmVudF9ncm91cCkgOjogdGwpXG4gICAgKCogZXh0ZW5kIGN1cnJlbnQgZ3JvdXAgKilcbiAgaW5cbiAgbWF0Y2ggZ3JvdXBzIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IGwgLT4gcmV2X21hcCBsIH5mOnJldlxuOztcblxubGV0IGdyb3VwIGwgfmJyZWFrID0gZ3JvdXBpIGwgfmJyZWFrOihmdW4gXyB4IHkgLT4gYnJlYWsgeCB5KSBbQG5vbnRhaWxdXG5cbmxldCBzb3J0X2FuZF9ncm91cCBsIH5jb21wYXJlID1cbiAgbCB8PiBzdGFibGVfc29ydCB+Y29tcGFyZSB8PiBncm91cCB+YnJlYWs6KGZ1biB4IHkgLT4gY29tcGFyZSB4IHkgPD4gMClcbjs7XG5cbmxldCBjb25jYXRfbWFwIGwgfmY6KGYgW0Bsb2NhbF0pID1cbiAgbGV0IHJlYyBhdXggYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IGF1eCAocmV2X2FwcGVuZCAoZiBoZCkgYWNjKSB0bFxuICBpblxuICBsZXQgcmVzID0gYXV4IFtdIGwgaW5cbiAgcmVzXG47O1xuXG5sZXQgY29uY2F0X21hcGkgbCB+ZiA9XG4gIGxldCByZWMgYXV4IGNvbnQgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IGF1eCAoY29udCArIDEpIChyZXZfYXBwZW5kIChmIGNvbnQgaGQpIGFjYykgdGxcbiAgaW5cbiAgYXV4IDAgW10gbCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWVyZ2UgbDEgbDIgfmNvbXBhcmUgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGwxIGwyID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgYWNjIGwyXG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBhY2MgbDFcbiAgICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPlxuICAgICAgaWYgY29tcGFyZSBoMSBoMiA8PSAwIHRoZW4gbG9vcCAoaDEgOjogYWNjKSB0MSBsMiBlbHNlIGxvb3AgKGgyIDo6IGFjYykgbDEgdDJcbiAgaW5cbiAgbG9vcCBbXSBsMSBsMiBbQG5vbnRhaWxdXG47O1xuXG5tb2R1bGUgQ2FydGVzaWFuX3Byb2R1Y3QgPSBzdHJ1Y3RcbiAgKCogV2UgYXJlIGV4cGxpY2l0IGFib3V0IHdoYXQgd2UgZXhwb3J0IGZyb20gZnVuY3RvcnMgc28gdGhhdCB3ZSBkb24ndCBhY2NpZGVudGFsbHlcbiAgICAgcmViaW5kIG1vcmUgZWZmaWNpZW50IGxpc3Qtc3BlY2lmaWMgZnVuY3Rpb25zLiAqKVxuXG4gIGxldCBiaW5kID0gY29uY2F0X21hcFxuICBsZXQgbWFwID0gbWFwXG4gIGxldCBtYXAyIGEgYiB+ZiA9IGNvbmNhdF9tYXAgYSB+ZjooZnVuIHggLT4gbWFwIGIgfmY6KGZ1biB5IC0+IGYgeCB5KSlcbiAgbGV0IHJldHVybiB4ID0gWyB4IF1cbiAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGxldCAoID4+PSApIHQgKGYgW0Bsb2NhbF0pID0gYmluZCB0IH5mXG5cbiAgb3BlbiBzdHJ1Y3RcbiAgICBtb2R1bGUgQXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZS5NYWtlX3VzaW5nX21hcDIgKHN0cnVjdFxuICAgICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICAgICAgbGV0IG1hcDIgPSBtYXAyXG4gICAgICBlbmQpXG5cbiAgICBtb2R1bGUgTW9uYWQgPSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgZW5kKVxuICBlbmRcblxuICBsZXQgYWxsID0gTW9uYWQuYWxsXG4gIGxldCBhbGxfdW5pdCA9IE1vbmFkLmFsbF91bml0XG4gIGxldCBpZ25vcmVfbSA9IE1vbmFkLmlnbm9yZV9tXG4gIGxldCBqb2luID0gTW9uYWQuam9pblxuXG4gIG1vZHVsZSBNb25hZF9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoID4+PSApID0gKCA+Pj0gKVxuICBlbmRcblxuICBsZXQgYXBwbHkgPSBBcHBsaWNhdGl2ZS5hcHBseVxuICBsZXQgYm90aCA9IEFwcGxpY2F0aXZlLmJvdGhcbiAgbGV0IG1hcDMgPSBBcHBsaWNhdGl2ZS5tYXAzXG4gIGxldCAoIDwqPiApID0gQXBwbGljYXRpdmUuKCA8Kj4gKVxuICBsZXQgKCAqPiApID0gQXBwbGljYXRpdmUuKCAqPiApXG4gIGxldCAoIDwqICkgPSBBcHBsaWNhdGl2ZS4oIDwqIClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA8Kj4gKSA9IEFwcGxpY2F0aXZlLiggPCo+IClcbiAgICBsZXQgKCAqPiApID0gQXBwbGljYXRpdmUuKCAqPiApXG4gICAgbGV0ICggPCogKSA9IEFwcGxpY2F0aXZlLiggPCogKVxuICBlbmRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA+Pj0gKSA9ICggPj49IClcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcbiAgICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgKENhcnRlc2lhbl9wcm9kdWN0IDogTW9uYWQuU19sb2NhbCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuXG4oKiogcmV0dXJucyBmaW5hbCBlbGVtZW50IG9mIGxpc3QgKilcbmxldCByZWMgbGFzdF9leG4gbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFsgeCBdIC0+IHhcbiAgfCBfIDo6IHRsIC0+IGxhc3RfZXhuIHRsXG4gIHwgW10gLT4gaW52YWxpZF9hcmcgXCJMaXN0Lmxhc3RcIlxuOztcblxuKCoqIG9wdGlvbmFsbHkgcmV0dXJucyBmaW5hbCBlbGVtZW50IG9mIGxpc3QgKilcbmxldCByZWMgbGFzdCBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgWyB4IF0gLT4gU29tZSB4XG4gIHwgXyA6OiB0bCAtPiBsYXN0IHRsXG4gIHwgW10gLT4gTm9uZVxuOztcblxubGV0IHJlYyBpc19wcmVmaXggbGlzdCB+cHJlZml4IH5lcXVhbCA9XG4gIG1hdGNoIHByZWZpeCB3aXRoXG4gIHwgW10gLT4gdHJ1ZVxuICB8IGhkIDo6IHRsIC0+XG4gICAgKG1hdGNoIGxpc3Qgd2l0aFxuICAgICB8IFtdIC0+IGZhbHNlXG4gICAgIHwgaGQnIDo6IHRsJyAtPiBlcXVhbCBoZCBoZCcgJiYgaXNfcHJlZml4IHRsJyB+cHJlZml4OnRsIH5lcXVhbClcbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSB0IH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBhMSA6OiB0IC0+XG4gICAgbGV0IHJlYyBsb29wIGExIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgYTIgOjogdCAtPiBpZiBlcXVhbCBhMSBhMiB0aGVuIFNvbWUgKGExLCBhMikgZWxzZSBsb29wIGEyIHRcbiAgICBpblxuICAgIGxvb3AgYTEgdCBbQG5vbnRhaWxdXG47O1xuXG4oKiByZXR1cm5zIGxpc3Qgd2l0aG91dCBhZGphY2VudCBkdXBsaWNhdGVzICopXG5sZXQgcmVtb3ZlX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZXMgPyh3aGljaF90b19rZWVwID0gYExhc3QpIGxpc3QgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIHRvX2tlZXAgYWNjdW0gPSBmdW5jdGlvblxuICAgIHwgW10gLT4gdG9fa2VlcCA6OiBhY2N1bVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGlmIGVxdWFsIGhkIHRvX2tlZXBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdG9fa2VlcCA9XG4gICAgICAgICAgbWF0Y2ggd2hpY2hfdG9fa2VlcCB3aXRoXG4gICAgICAgICAgfCBgRmlyc3QgLT4gdG9fa2VlcFxuICAgICAgICAgIHwgYExhc3QgLT4gaGRcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCB0b19rZWVwIGFjY3VtIHRsKVxuICAgICAgZWxzZSBsb29wIGhkICh0b19rZWVwIDo6IGFjY3VtKSB0bFxuICBpblxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IGhkIDo6IHRsIC0+IHJldiAobG9vcCBoZCBbXSB0bClcbjs7XG5cbigqKiByZXR1cm5zIHNvcnRlZCB2ZXJzaW9uIG9mIGxpc3Qgd2l0aCBkdXBsaWNhdGVzIHJlbW92ZWQgKilcbmxldCBkZWR1cF9hbmRfc29ydCBsaXN0IH5jb21wYXJlID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgW10gfCBbIF8gXSAtPiBsaXN0ICgqIHBlcmZvcm1hbmNlIGhhY2sgKilcbiAgfCBfIC0+XG4gICAgbGV0IGVxdWFsIHggeCcgPSBjb21wYXJlIHggeCcgPSAwIGluXG4gICAgbGV0IHNvcnRlZCA9IHNvcnQgfmNvbXBhcmUgbGlzdCBpblxuICAgIHJlbW92ZV9jb25zZWN1dGl2ZV9kdXBsaWNhdGVzIH5lcXVhbCBzb3J0ZWQgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRfYV9kdXAgbCB+Y29tcGFyZSA9XG4gIGxldCBzb3J0ZWQgPSBzb3J0IGwgfmNvbXBhcmUgaW5cbiAgbGV0IHJlYyBsb29wIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gfCBbIF8gXSAtPiBOb25lXG4gICAgfCBoZDEgOjogKGhkMiA6OiBfIGFzIHRsKSAtPiBpZiBjb21wYXJlIGhkMSBoZDIgPSAwIHRoZW4gU29tZSBoZDEgZWxzZSBsb29wIHRsXG4gIGluXG4gIGxvb3Agc29ydGVkIFtAbm9udGFpbF1cbjs7XG5cbmxldCBjb250YWluc19kdXAgbHN0IH5jb21wYXJlID1cbiAgbWF0Y2ggZmluZF9hX2R1cCBsc3QgfmNvbXBhcmUgd2l0aFxuICB8IFNvbWUgXyAtPiB0cnVlXG4gIHwgTm9uZSAtPiBmYWxzZVxuOztcblxubGV0IGZpbmRfYWxsX2R1cHMgbCB+Y29tcGFyZSA9XG4gICgqIFdlIGFkZCB0aGlzIHJldmVyc2FsLCBzbyB3ZSBjYW4gc2tpcCBhIFtyZXZdIGF0IHRoZSBlbmQuIFdlIGNvdWxkIHNraXBcbiAgICAgW3Jldl0gYW55d2F5IHNpbmNlIHdlIGRvbiBub3QgZ2l2ZSBhbnkgb3JkZXJpbmcgZ3VhcmFudGVlcywgYnV0IGl0IGlzXG4gICAgIG5pY2UgdG8gZ2V0IHJlc3VsdHMgaW4gbmF0dXJhbCBvcmRlci4gKilcbiAgbGV0IGNvbXBhcmUgYSBiID0gY29tcGFyZSBiIGEgaW5cbiAgbGV0IHNvcnRlZCA9IHNvcnQgfmNvbXBhcmUgbCBpblxuICAoKiBXYWxrIHRoZSBsaXN0IGFuZCByZWNvcmQgdGhlIGZpcnN0IG9mIGVhY2ggY29uc2VjdXRpdmUgcnVuIG9mIGlkZW50aWNhbCBlbGVtZW50cyAqKVxuICBsZXQgcmVjIGxvb3Agc29ydGVkIHByZXYgfmFscmVhZHlfcmVjb3JkZWQgYWNjID1cbiAgICBtYXRjaCBzb3J0ZWQgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgaWYgY29tcGFyZSBwcmV2IGhkIDw+IDBcbiAgICAgIHRoZW4gbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDpmYWxzZSBhY2NcbiAgICAgIGVsc2UgaWYgYWxyZWFkeV9yZWNvcmRlZFxuICAgICAgdGhlbiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOnRydWUgYWNjXG4gICAgICBlbHNlIGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6dHJ1ZSAoaGQgOjogYWNjKVxuICBpblxuICBtYXRjaCBzb3J0ZWQgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgaGQgOjogdGwgLT4gbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDpmYWxzZSBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcmVjIGFsbF9lcXVhbF90byB0IHYgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gdHJ1ZVxuICB8IHggOjogeHMgLT4gZXF1YWwgeCB2ICYmIGFsbF9lcXVhbF90byB4cyB2IH5lcXVhbFxuOztcblxubGV0IGFsbF9lcXVhbCB0IH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IHhzIC0+IGlmIGFsbF9lcXVhbF90byB4cyB4IH5lcXVhbCB0aGVuIFNvbWUgeCBlbHNlIE5vbmVcbjs7XG5cbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgY291bnRpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpZHggY291bnQgYSAtPiBpZiBmIGlkeCBhIHRoZW4gY291bnQgKyAxIGVsc2UgY291bnQpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBpbml0IG4gfmYgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIkxpc3QuaW5pdCAlZFwiIG4gKCk7XG4gIGxldCByZWMgbG9vcCBpIGFjY3VtID1cbiAgICBhc3NlcnQgKGkgPj0gMCk7XG4gICAgaWYgaSA9IDAgdGhlbiBhY2N1bSBlbHNlIGxvb3AgKGkgLSAxKSAoZiAoaSAtIDEpIDo6IGFjY3VtKVxuICBpblxuICBsb29wIG4gW10gW0Bub250YWlsXVxuOztcblxubGV0IHJldl9maWx0ZXJfbWFwIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgbCBhY2N1bSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBhY2N1bVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCBmIGhkIHdpdGhcbiAgICAgICB8IFNvbWUgeCAtPiBsb29wIHRsICh4IDo6IGFjY3VtKVxuICAgICAgIHwgTm9uZSAtPiBsb29wIHRsIGFjY3VtKVxuICBpblxuICBsb29wIGwgW10gW0Bub250YWlsXVxuOztcblxubGV0IGZpbHRlcl9tYXAgbCB+ZiA9IHJldiAocmV2X2ZpbHRlcl9tYXAgbCB+ZilcblxubGV0IHJldl9maWx0ZXJfbWFwaSBsIH5mID1cbiAgbGV0IHJlYyBsb29wIGkgbCBhY2N1bSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBhY2N1bVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCBmIGkgaGQgd2l0aFxuICAgICAgIHwgU29tZSB4IC0+IGxvb3AgKGkgKyAxKSB0bCAoeCA6OiBhY2N1bSlcbiAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpIHRsIGFjY3VtKVxuICBpblxuICBsb29wIDAgbCBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgbCB+ZiA9IHJldiAocmV2X2ZpbHRlcl9tYXBpIGwgfmYpXG5sZXQgZmlsdGVyX29wdCBsID0gZmlsdGVyX21hcCBsIH5mOkZuLmlkXG5cbmxldCBwYXJ0aXRpb24zX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgZnN0IHNuZCB0cmQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gcmV2IGZzdCwgcmV2IHNuZCwgcmV2IHRyZFxuICAgIHwgeCA6OiB0IC0+XG4gICAgICAobWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IGBGc3QgeSAtPiBsb29wIHQgKHkgOjogZnN0KSBzbmQgdHJkXG4gICAgICAgfCBgU25kIHkgLT4gbG9vcCB0IGZzdCAoeSA6OiBzbmQpIHRyZFxuICAgICAgIHwgYFRyZCB5IC0+IGxvb3AgdCBmc3Qgc25kICh5IDo6IHRyZCkpXG4gIGluXG4gIGxvb3AgdCBbXSBbXSBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICBsZXQgZiB4IDogXyBFaXRoZXIudCA9IGlmIGYgeCB0aGVuIEZpcnN0IHggZWxzZSBTZWNvbmQgeCBpblxuICBwYXJ0aXRpb25fbWFwIHQgfmYgW0Bub250YWlsXVxuOztcblxubGV0IHBhcnRpdGlvbl9yZXN1bHQgdCA9IHBhcnRpdGlvbl9tYXAgdCB+ZjpSZXN1bHQudG9fZWl0aGVyXG5cbm1vZHVsZSBBc3NvYyA9IHN0cnVjdFxuICB0eXBlICdhIGtleSA9ICgnYVtAdGFnIFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY19rZXlfdGFnID0gTGlzdCBbXV0pXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGtleV9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBrZXkgPVxuICAgIGZ1biBfb2ZfYV9fMDE4XyAtPiBfb2ZfYV9fMDE4X1xuICA7O1xuXG4gIGxldCBzZXhwX29mX2tleSA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBrZXkgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gX29mX2FfXzAyMF8gLT4gX29mX2FfXzAyMF9cbiAgOztcblxuICBsZXQga2V5X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBrZXkgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIFRhZ2dlZFxuICAgICAgICAgICAgeyBrZXkgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2Nfa2V5X3RhZ1xuICAgICAgICAgICAgOyB2YWx1ZSA9IExpc3QgW11cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgfVxuICAgICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSB2YWx1ZSA9ICgnYVtAdGFnIFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY192YWx1ZV90YWcgPSBMaXN0IFtdXSlcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgdmFsdWVfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdmFsdWUgPVxuICAgIGZ1biBfb2ZfYV9fMDIxXyAtPiBfb2ZfYV9fMDIxX1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3ZhbHVlIDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHZhbHVlIC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuIF9vZl9hX18wMjNfIC0+IF9vZl9hX18wMjNfXG4gIDs7XG5cbiAgbGV0IHZhbHVlX3NleHBfZ3JhbW1hciA6XG4gICAgJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHZhbHVlIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIFRhZ2dlZFxuICAgICAgICAgICAgeyBrZXkgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2NfdmFsdWVfdGFnXG4gICAgICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICAgICAgOyBncmFtbWFyID0gXydhX3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICB9XG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgICgoJ2Ega2V5ICogJ2IgdmFsdWUpIGxpc3RbQHRhZyBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2NfdGFnID0gTGlzdCBbXV0pXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IHRfb2Zfc2V4cCA6XG4gICAgJ2EgJ2IuXG4gICAgKFNleHBsaWIwLlNleHAudCAtPiAnYSlcbiAgICAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICdiKVxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICA9XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDMyXyA9IFwibGlzdC5tbC5Bc3NvYy50XCIgaW5cbiAgICBmdW4gX29mX2FfXzAyNF8gX29mX2JfXzAyNV8geF9fMDMzXyAtPlxuICAgICAgbGlzdF9vZl9zZXhwXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFsgYXJnMF9fMDI3XzsgYXJnMV9fMDI4XyBdIC0+XG4gICAgICAgICAgICBsZXQgcmVzMF9fMDI5XyA9IGtleV9vZl9zZXhwIF9vZl9hX18wMjRfIGFyZzBfXzAyN19cbiAgICAgICAgICAgIGFuZCByZXMxX18wMzBfID0gdmFsdWVfb2Zfc2V4cCBfb2ZfYl9fMDI1XyBhcmcxX18wMjhfIGluXG4gICAgICAgICAgICByZXMwX18wMjlfLCByZXMxX18wMzBfXG4gICAgICAgICAgfCBzZXhwX18wMzFfIC0+XG4gICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkXG4gICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDMyX1xuICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgIHNleHBfXzAzMV8pXG4gICAgICAgIHhfXzAzM19cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAnYi5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2FfXzAzNF8gX29mX2JfXzAzNV8geF9fMDQwXyAtPlxuICAgICAgc2V4cF9vZl9saXN0XG4gICAgICAgIChmdW4gKGFyZzBfXzAzNl8sIGFyZzFfXzAzN18pIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMzhfID0gc2V4cF9vZl9rZXkgX29mX2FfXzAzNF8gYXJnMF9fMDM2X1xuICAgICAgICAgICBhbmQgcmVzMV9fMDM5XyA9IHNleHBfb2ZfdmFsdWUgX29mX2JfXzAzNV8gYXJnMV9fMDM3XyBpblxuICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18wMzhfOyByZXMxX18wMzlfIF0pXG4gICAgICAgIHhfXzA0MF9cbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOlxuICAgICdhICdiLlxuICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgVGFnZ2VkXG4gICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY190YWdcbiAgICAgICAgICAgIDsgdmFsdWUgPSBMaXN0IFtdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPVxuICAgICAgICAgICAgICAgIChsaXN0X3NleHBfZ3JhbW1hclxuICAgICAgICAgICAgICAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgIExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKGtleV9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hcikudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgQ29ucyAoKHZhbHVlX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyKS51bnR5cGVkLCBFbXB0eSkgKSlcbiAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC51bnR5cGVkXG4gICAgICAgICAgICB9XG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgcGFpcl9vZl9ncm91cCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IChrLCBfKSA6OiBfIGFzIGxpc3QgLT4gaywgbWFwIGxpc3QgfmY6c25kXG4gIDs7XG5cbiAgbGV0IGdyb3VwIGFsaXN0IH5lcXVhbCA9XG4gICAgZ3JvdXAgYWxpc3QgfmJyZWFrOihmdW4gKHgsIF8pICh5LCBfKSAtPiBub3QgKGVxdWFsIHggeSkpIHw+IG1hcCB+ZjpwYWlyX29mX2dyb3VwXG4gIDs7XG5cbiAgbGV0IHNvcnRfYW5kX2dyb3VwIGFsaXN0IH5jb21wYXJlID1cbiAgICBzb3J0X2FuZF9ncm91cCBhbGlzdCB+Y29tcGFyZTooZnVuICh4LCBfKSAoeSwgXykgLT4gY29tcGFyZSB4IHkpXG4gICAgfD4gbWFwIH5mOnBhaXJfb2ZfZ3JvdXBcbiAgOztcblxuICBsZXQgZmluZCB0IH5lcXVhbCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZjooZnVuIChrZXknLCBfKSAtPiBlcXVhbCBrZXkga2V5Jykgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gU29tZSAoc25kIHgpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuID1cbiAgICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LkFzc29jLmZpbmRfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgICBsZXQgZmluZF9leG4gdCB+ZXF1YWwga2V5ID1cbiAgICAgIG1hdGNoIGZpbmQgdCBrZXkgfmVxdWFsIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICAgIHwgU29tZSB2YWx1ZSAtPiB2YWx1ZVxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGZpbmRfZXhuXG4gIDs7XG5cbiAgbGV0IG1lbSB0IH5lcXVhbCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZXF1YWwga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgXyAtPiB0cnVlXG4gIDs7XG5cbiAgbGV0IHJlbW92ZSB0IH5lcXVhbCBrZXkgPSBmaWx0ZXIgdCB+ZjooZnVuIChrZXknLCBfKSAtPiBub3QgKGVxdWFsIGtleSBrZXknKSkgW0Bub250YWlsXVxuXG4gIGxldCBhZGQgdCB+ZXF1YWwga2V5IHZhbHVlID1cbiAgICAoKiB0aGUgcmVtb3ZlIGRvZXNuJ3QgY2hhbmdlIHRoZSBtYXAgc2VtYW50aWNzLCBidXQga2VlcHMgdGhlIGxpc3Qgc21hbGwgKilcbiAgICAoa2V5LCB2YWx1ZSkgOjogcmVtb3ZlIHQgfmVxdWFsIGtleVxuICA7O1xuXG4gIGxldCBpbnZlcnNlIHQgPSBtYXAgdCB+ZjooZnVuICh4LCB5KSAtPiB5LCB4KVxuICBsZXQgbWFwIHQgfmYgPSBtYXAgdCB+ZjooZnVuIChrZXksIHZhbHVlKSAtPiBrZXksIGYgdmFsdWUpIFtAbm9udGFpbF1cbmVuZFxuXG5sZXQgc3ViIGwgfnBvcyB+bGVuID1cbiAgKCogV2UgdXNlIFtwb3MgPiBsZW5ndGggbCAtIGxlbl0gcmF0aGVyIHRoYW4gW3BvcyArIGxlbiA+IGxlbmd0aCBsXSB0byBhdm9pZCB0aGVcbiAgICAgcG9zc2liaWxpdHkgb2Ygb3ZlcmZsb3cuICopXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgPiBsZW5ndGggbCAtIGxlbiB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5zdWJcIjtcbiAgcmV2XG4gICAgKGZvbGRpIGwgfmluaXQ6W10gfmY6KGZ1biBpIGFjYyBlbCAtPlxuICAgICAgIGlmIGkgPj0gcG9zICYmIGkgPCBwb3MgKyBsZW4gdGhlbiBlbCA6OiBhY2MgZWxzZSBhY2MpKVxuOztcblxubGV0IHNwbGl0X24gdF9vcmlnIG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBbXSwgdF9vcmlnXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBuIHQgYWNjdW0gPVxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gcmV2IGFjY3VtLCB0XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgW10gLT4gdF9vcmlnLCBbXSAoKiBpbiB0aGlzIGNhc2UsIHRfb3JpZyA9IHJldiBhY2N1bSAqKVxuICAgICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgKG4gLSAxKSB0bCAoaGQgOjogYWNjdW0pKVxuICAgIGluXG4gICAgbG9vcCBuIHRfb3JpZyBbXSlcbjs7XG5cbigqIGNvcGllZCBmcm9tIFtzcGxpdF9uXSB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgKilcbmxldCB0YWtlIHRfb3JpZyBuID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gW11cbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIG4gdCBhY2N1bSA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiByZXYgYWNjdW1cbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiB0X29yaWdcbiAgICAgICAgfCBoZCA6OiB0bCAtPiBsb29wIChuIC0gMSkgdGwgKGhkIDo6IGFjY3VtKSlcbiAgICBpblxuICAgIGxvb3AgbiB0X29yaWcgW10pXG47O1xuXG5sZXQgcmVjIGRyb3AgdCBuID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgXyA6OiB0bCB3aGVuIG4gPiAwIC0+IGRyb3AgdGwgKG4gLSAxKVxuICB8IHQgLT4gdFxuOztcblxubGV0IGNodW5rc19vZiBsIH5sZW5ndGggPVxuICBpZiBsZW5ndGggPD0gMCB0aGVuIGludmFsaWRfYXJnZiBcIkxpc3QuY2h1bmtzX29mOiBFeHBlY3RlZCBsZW5ndGggPiAwLCBnb3QgJWRcIiBsZW5ndGggKCk7XG4gIGxldCByZWMgYXV4IG9mX2xlbmd0aCBhY2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCBfIDo6IF8gLT5cbiAgICAgIGxldCBzdWJsaXN0LCBsID0gc3BsaXRfbiBsIGxlbmd0aCBpblxuICAgICAgYXV4IG9mX2xlbmd0aCAoc3VibGlzdCA6OiBhY2MpIGxcbiAgaW5cbiAgYXV4IGxlbmd0aCBbXSBsXG47O1xuXG5sZXQgc3BsaXRfd2hpbGUgeHMgfmYgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIHdoZW4gZiBoZCAtPiBsb29wIChoZCA6OiBhY2MpIHRsXG4gICAgfCB0IC0+IHJldiBhY2MsIHRcbiAgaW5cbiAgbG9vcCBbXSB4cyBbQG5vbnRhaWxdXG47O1xuXG4oKiBjb3BpZWQgZnJvbSBbc3BsaXRfd2hpbGVdIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSAqKVxubGV0IHRha2Vfd2hpbGUgeHMgfmYgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIHdoZW4gZiBoZCAtPiBsb29wIChoZCA6OiBhY2MpIHRsXG4gICAgfCBfIC0+IHJldiBhY2NcbiAgaW5cbiAgbG9vcCBbXSB4cyBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcmVjIGRyb3Bfd2hpbGUgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IGhkIDo6IHRsIHdoZW4gZiBoZCAtPiBkcm9wX3doaWxlIHRsIH5mXG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgZHJvcF9sYXN0IHQgPVxuICBtYXRjaCByZXYgdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IF8gOjogbHN0IC0+IFNvbWUgKHJldiBsc3QpXG47O1xuXG5sZXQgZHJvcF9sYXN0X2V4biB0ID1cbiAgbWF0Y2ggZHJvcF9sYXN0IHQgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJMaXN0LmRyb3BfbGFzdF9leG46IGVtcHR5IGxpc3RcIlxuICB8IFNvbWUgbHN0IC0+IGxzdFxuOztcblxubGV0IGNhcnRlc2lhbl9wcm9kdWN0IGxpc3QxIGxpc3QyID1cbiAgaWYgaXNfZW1wdHkgbGlzdDJcbiAgdGhlbiBbXVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgbDEgbDIgYWNjdW0gPVxuICAgICAgbWF0Y2ggbDEgd2l0aFxuICAgICAgfCBbXSAtPiBhY2N1bVxuICAgICAgfCBoZCA6OiB0bCAtPiBsb29wIHRsIGwyIChyZXZfYXBwZW5kIChtYXAgfmY6KGZ1biB4IC0+IGhkLCB4KSBsMikgYWNjdW0pXG4gICAgaW5cbiAgICByZXYgKGxvb3AgbGlzdDEgbGlzdDIgW10pKVxuOztcblxubGV0IGNvbmNhdCBsID0gZm9sZF9yaWdodCBsIH5pbml0OltdIH5mOmFwcGVuZFxubGV0IGNvbmNhdF9ub19vcmRlciBsID0gZm9sZCBsIH5pbml0OltdIH5mOihmdW4gYWNjIGwgLT4gcmV2X2FwcGVuZCBsIGFjYylcbmxldCBjb25zIHggbCA9IHggOjogbFxuXG5sZXQgaXNfc29ydGVkIGwgfmNvbXBhcmUgPVxuICBsZXQgcmVjIGxvb3AgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSB8IFsgXyBdIC0+IHRydWVcbiAgICB8IHgxIDo6ICh4MiA6OiBfIGFzIHJlc3QpIC0+IGNvbXBhcmUgeDEgeDIgPD0gMCAmJiBsb29wIHJlc3RcbiAgaW5cbiAgbG9vcCBsIFtAbm9udGFpbF1cbjs7XG5cbmxldCBpc19zb3J0ZWRfc3RyaWN0bHkgbCB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIHwgWyBfIF0gLT4gdHJ1ZVxuICAgIHwgeDEgOjogKHgyIDo6IF8gYXMgcmVzdCkgLT4gY29tcGFyZSB4MSB4MiA8IDAgJiYgbG9vcCByZXN0XG4gIGluXG4gIGxvb3AgbCBbQG5vbnRhaWxdXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggQCApID0gYXBwZW5kXG5lbmRcblxubGV0IHBlcm11dGUgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICAoKiBzcGVjaWFsIGNhc2VzIHRvIHNwZWVkIHRoaW5ncyB1cCBpbiB0cml2aWFsIGNhc2VzICopXG4gIHwgW10gfCBbIF8gXSAtPiBsaXN0XG4gIHwgWyB4OyB5IF0gLT4gaWYgUmFuZG9tLlN0YXRlLmJvb2wgcmFuZG9tX3N0YXRlIHRoZW4gWyB5OyB4IF0gZWxzZSBsaXN0XG4gIHwgXyAtPlxuICAgIGxldCBhcnIgPSBBcnJheS5vZl9saXN0IGxpc3QgaW5cbiAgICBBcnJheV9wZXJtdXRlLnBlcm11dGUgYXJyIH5yYW5kb21fc3RhdGU7XG4gICAgQXJyYXkudG9fbGlzdCBhcnJcbjs7XG5cbmxldCByYW5kb21fZWxlbWVudF9leG4gPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIGlmIGlzX2VtcHR5IGxpc3RcbiAgdGhlbiBmYWlsd2l0aCBcIkxpc3QucmFuZG9tX2VsZW1lbnRfZXhuOiBlbXB0eSBsaXN0XCJcbiAgZWxzZSBudGhfZXhuIGxpc3QgKFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChsZW5ndGggbGlzdCkpXG47O1xuXG5sZXQgcmFuZG9tX2VsZW1lbnQgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbGlzdCA9XG4gIHRyeSBTb21lIChyYW5kb21fZWxlbWVudF9leG4gfnJhbmRvbV9zdGF0ZSBsaXN0KSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGNvbXBhcmUgY21wIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgIGxldCBuID0gY21wIHggeSBpblxuICAgIGlmIG4gPSAwIHRoZW4gY29tcGFyZSBjbXAgeHMgeXMgZWxzZSBuXG47O1xuXG5sZXQgaGFzaF9mb2xkX3QgPSBoYXNoX2ZvbGRfbGlzdFxuXG5sZXQgZXF1YWxfbG9jYWwgKChlcXVhbCA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgdDEgdDIgPVxuICBsZXQgcmVjIGxvb3AgfmVxdWFsIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgW10sIFtdIC0+IHRydWVcbiAgICB8IHgxIDo6IHQxLCB4MiA6OiB0MiAtPiBlcXVhbCB4MSB4MiAmJiBsb29wIH5lcXVhbCB0MSB0MlxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBsb29wIH5lcXVhbCB0MSB0MlxuOztcblxubGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gIGZ1biBmIHggeSAtPiBlcXVhbF9sb2NhbCBmIHggeVxuOztcblxubGV0IHRyYW5zcG9zZSA9XG4gIGxldCByZWMgc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiB0IGNvbHVtbl9hY2MgdHJpbW1lZCBmb3VuZF9lbXB0eSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBjb2x1bW5fYWNjLCB0cmltbWVkLCBmb3VuZF9lbXB0eVxuICAgIHwgW10gOjogdGwgLT4gc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiB0bCBjb2x1bW5fYWNjIHRyaW1tZWQgdHJ1ZVxuICAgIHwgKHggOjogeHMpIDo6IHRsIC0+XG4gICAgICBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHRsICh4IDo6IGNvbHVtbl9hY2MpICh4cyA6OiB0cmltbWVkKSBmb3VuZF9lbXB0eVxuICBpblxuICBsZXQgc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiByb3dzID0gc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiByb3dzIFtdIFtdIGZhbHNlIGluXG4gIGxldCByZWMgbG9vcCByb3dzIGNvbHVtbnMgZG9fcmV2ID1cbiAgICBtYXRjaCBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3Mgd2l0aFxuICAgIHwgW10sIFtdLCBfIC0+IFNvbWUgKHJldiBjb2x1bW5zKVxuICAgIHwgY29sdW1uLCB0cmltbWVkX3Jvd3MsIGZvdW5kX2VtcHR5IC0+XG4gICAgICBpZiBmb3VuZF9lbXB0eVxuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGNvbHVtbiA9IGlmIGRvX3JldiB0aGVuIHJldiBjb2x1bW4gZWxzZSBjb2x1bW4gaW5cbiAgICAgICAgbG9vcCB0cmltbWVkX3Jvd3MgKGNvbHVtbiA6OiBjb2x1bW5zKSAobm90IGRvX3JldikpXG4gIGluXG4gIGZ1biB0IC0+IGxvb3AgdCBbXSB0cnVlXG47O1xuXG5leGNlcHRpb24gVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyBvZiBpbnQgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3Roc11cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyBhcmcwX18wNDFfIC0+XG4gICAgICAgIGxldCByZXMwX18wNDJfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfaW50IGFyZzBfXzA0MV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaXN0Lm1sLlRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHNcIlxuICAgICAgICAgIDsgcmVzMF9fMDQyX1xuICAgICAgICAgIF1cbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdHJhbnNwb3NlX2V4biBsID1cbiAgbWF0Y2ggdHJhbnNwb3NlIGwgd2l0aFxuICB8IFNvbWUgbCAtPiBsXG4gIHwgTm9uZSAtPiByYWlzZSAoVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3RocyAobWFwIGwgfmY6bGVuZ3RoKSlcbjs7XG5cbmxldCBpbnRlcnNwZXJzZSB0IH5zZXAgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IHggOjogeHMgLT4geCA6OiBmb2xkX3JpZ2h0IHhzIH5pbml0OltdIH5mOihmdW4geSBhY2MgLT4gc2VwIDo6IHkgOjogYWNjKVxuOztcblxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG5cbmxldCBpc19zdWZmaXggbGlzdCB+c3VmZml4IH5lcXVhbDooKGVxdWFsX2VsdCA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgbGlzdF9sZW4gPSBsZW5ndGggbGlzdCBpblxuICBsZXQgc3VmZml4X2xlbiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGlzdF9sZW4gPj0gc3VmZml4X2xlblxuICAmJiBlcXVhbF9sb2NhbCBlcXVhbF9lbHQgKGRyb3AgbGlzdCAobGlzdF9sZW4gLSBzdWZmaXhfbGVuKSkgc3VmZml4XG47O1xuIiwiKCogVGhpcyBtb2R1bGUgaXMgdHJ5aW5nIHRvIG1pbmltaXplIGRlcGVuZGVuY2llcyBvbiBtb2R1bGVzIGluIENvcmUsIHNvIGFzIHRvIGFsbG93XG4gICBbSW5mb10sIFtFcnJvcl0sIGFuZCBbT3JfZXJyb3JdIHRvIGJlIHVzZWQgaW4gYXMgbWFueSBwbGFjZXMgYXMgcG9zc2libGUuIFBsZWFzZSBhdm9pZFxuICAgYWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbmZvX2ludGZcbm1vZHVsZSBDaGFyID0gQ2hhcjBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbm1vZHVsZSBNZXNzYWdlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IG9mIFNleHAudFxuICAgIHwgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgRXhuIG9mIGV4blxuICAgIHwgU2V4cCBvZiBTZXhwLnRcbiAgICB8IFRhZ19zZXhwIG9mIHN0cmluZyAqIFNleHAudCAqIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC50IG9wdGlvblxuICAgIHwgVGFnX3Qgb2Ygc3RyaW5nICogdFxuICAgIHwgVGFnX2FyZyBvZiBzdHJpbmcgKiBTZXhwLnQgKiB0XG4gICAgfCBPZl9saXN0IG9mIGludCBvcHRpb24gKiB0IGxpc3RcbiAgICB8IFdpdGhfYmFja3RyYWNlIG9mIHQgKiBzdHJpbmcgKCogYmFja3RyYWNlICopXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGxldCByZWMgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBhcmcwX18wMDFfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDJfID0gU2V4cC5zZXhwX29mX3QgYXJnMF9fMDAxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJDb3VsZF9ub3RfY29uc3RydWN0XCI7IHJlczBfXzAwMl8gXVxuICAgICAgfCBTdHJpbmcgYXJnMF9fMDAzXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA0XyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwM18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU3RyaW5nXCI7IHJlczBfXzAwNF8gXVxuICAgICAgfCBFeG4gYXJnMF9fMDA1XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA2XyA9IHNleHBfb2ZfZXhuIGFyZzBfXzAwNV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXhuXCI7IHJlczBfXzAwNl8gXVxuICAgICAgfCBTZXhwIGFyZzBfXzAwN18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwOF8gPSBTZXhwLnNleHBfb2ZfdCBhcmcwX18wMDdfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlNleHBcIjsgcmVzMF9fMDA4XyBdXG4gICAgICB8IFRhZ19zZXhwIChhcmcwX18wMDlfLCBhcmcxX18wMTBfLCBhcmcyX18wMTFfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDEyXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwOV9cbiAgICAgICAgYW5kIHJlczFfXzAxM18gPSBTZXhwLnNleHBfb2ZfdCBhcmcxX18wMTBfXG4gICAgICAgIGFuZCByZXMyX18wMTRfID0gc2V4cF9vZl9vcHRpb24gU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdCBhcmcyX18wMTFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVGFnX3NleHBcIjsgcmVzMF9fMDEyXzsgcmVzMV9fMDEzXzsgcmVzMl9fMDE0XyBdXG4gICAgICB8IFRhZ190IChhcmcwX18wMTVfLCBhcmcxX18wMTZfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDE3XyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAxNV9cbiAgICAgICAgYW5kIHJlczFfXzAxOF8gPSBzZXhwX29mX3QgYXJnMV9fMDE2XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfdFwiOyByZXMwX18wMTdfOyByZXMxX18wMThfIF1cbiAgICAgIHwgVGFnX2FyZyAoYXJnMF9fMDE5XywgYXJnMV9fMDIwXywgYXJnMl9fMDIxXykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMTlfXG4gICAgICAgIGFuZCByZXMxX18wMjNfID0gU2V4cC5zZXhwX29mX3QgYXJnMV9fMDIwX1xuICAgICAgICBhbmQgcmVzMl9fMDI0XyA9IHNleHBfb2ZfdCBhcmcyX18wMjFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVGFnX2FyZ1wiOyByZXMwX18wMjJfOyByZXMxX18wMjNfOyByZXMyX18wMjRfIF1cbiAgICAgIHwgT2ZfbGlzdCAoYXJnMF9fMDI1XywgYXJnMV9fMDI2XykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAyN18gPSBzZXhwX29mX29wdGlvbiBzZXhwX29mX2ludCBhcmcwX18wMjVfXG4gICAgICAgIGFuZCByZXMxX18wMjhfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfdCBhcmcxX18wMjZfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9mX2xpc3RcIjsgcmVzMF9fMDI3XzsgcmVzMV9fMDI4XyBdXG4gICAgICB8IFdpdGhfYmFja3RyYWNlIChhcmcwX18wMjlfLCBhcmcxX18wMzBfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDMxXyA9IHNleHBfb2ZfdCBhcmcwX18wMjlfXG4gICAgICAgIGFuZCByZXMxX18wMzJfID0gc2V4cF9vZl9zdHJpbmcgYXJnMV9fMDMwXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJXaXRoX2JhY2t0cmFjZVwiOyByZXMwX18wMzFfOyByZXMxX18wMzJfIF1cbiAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCByZWMgdG9fc3RyaW5nc19odW0gdCBhYyA9XG4gICAgKCogV2UgdXNlIFtTZXhwLnRvX3N0cmluZ19tYWNoXSwgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHdlIGFyZSBpbXBsZW1lbnRpbmdcbiAgICAgICBbdG9fc3RyaW5nc19odW1dLCBiZWNhdXNlIHdlIHdhbnQgdGhlIGluZm8gdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUsIGFuZCBvbmNlIHdlJ3ZlXG4gICAgICAgaGFkIHRvIHJlc29ydCB0byBzZXhwcywgdGhlIG1lc3NhZ2UgaXMgZ29pbmcgdG8gc3RhcnQgbm90IGxvb2tpbmcgc28gcHJldHR5XG4gICAgICAgYW55d2F5LiAqKVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBzZXhwIC0+XG4gICAgICBcImNvdWxkIG5vdCBjb25zdHJ1Y3QgaW5mbzogXCIgOjogU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IGFjXG4gICAgfCBTdHJpbmcgc3RyaW5nIC0+IHN0cmluZyA6OiBhY1xuICAgIHwgRXhuIGV4biAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIChFeG4uc2V4cF9vZl90IGV4bikgOjogYWNcbiAgICB8IFNleHAgc2V4cCAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFRhZ19zZXhwICh0YWcsIHNleHAsIF8pIC0+IHRhZyA6OiBcIjogXCIgOjogU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IGFjXG4gICAgfCBUYWdfdCAodGFnLCB0KSAtPiB0YWcgOjogXCI6IFwiIDo6IHRvX3N0cmluZ3NfaHVtIHQgYWNcbiAgICB8IFRhZ19hcmcgKHRhZywgc2V4cCwgdCkgLT5cbiAgICAgIGxldCBib2R5ID0gU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IFwiOiBcIiA6OiB0b19zdHJpbmdzX2h1bSB0IGFjIGluXG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHRhZyA9IDAgdGhlbiBib2R5IGVsc2UgdGFnIDo6IFwiOiBcIiA6OiBib2R5XG4gICAgfCBXaXRoX2JhY2t0cmFjZSAodCwgYmFja3RyYWNlKSAtPlxuICAgICAgdG9fc3RyaW5nc19odW0gdCAoXCJcXG5CYWNrdHJhY2U6XFxuXCIgOjogYmFja3RyYWNlIDo6IGFjKVxuICAgIHwgT2ZfbGlzdCAodHJ1bmNfYWZ0ZXIsIHRzKSAtPlxuICAgICAgbGV0IHRzID1cbiAgICAgICAgbWF0Y2ggdHJ1bmNfYWZ0ZXIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHNcbiAgICAgICAgfCBTb21lIG1heCAtPlxuICAgICAgICAgIGxldCBuID0gTGlzdC5sZW5ndGggdHMgaW5cbiAgICAgICAgICBpZiBuIDw9IG1heFxuICAgICAgICAgIHRoZW4gdHNcbiAgICAgICAgICBlbHNlIExpc3QudGFrZSB0cyBtYXggQCBbIFN0cmluZyAoUHJpbnRmLnNwcmludGYgXCJhbmQgJWQgbW9yZSBpbmZvXCIgKG4gLSBtYXgpKSBdXG4gICAgICBpblxuICAgICAgTGlzdC5mb2xkIChMaXN0LnJldiB0cykgfmluaXQ6YWMgfmY6KGZ1biBhYyB0IC0+XG4gICAgICAgIHRvX3N0cmluZ3NfaHVtIHQgKGlmIExpc3QuaXNfZW1wdHkgYWMgdGhlbiBhYyBlbHNlIFwiOyBcIiA6OiBhYykpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCB0ID0gU3RyaW5nLmNvbmNhdCAodG9fc3RyaW5nc19odW0gdCBbXSlcblxuICAoKiBMaWtlIFtTdHJpbmcuc3BsaXRfbGluZXNdLCBidXQgbGVzcyBvcHRpbWl6ZWQgYW5kIGRvZXNuJ3QgaGFuZGxlIFtcXHJcXG5dLiBBdm9pZHMgYVxuICAgICBkZXBlbmRlbmN5IGN5Y2xlLiBJbXByb3ZlcyBvbiBuYWl2ZSBbU3RyaW5nLnNwbGl0X29uX2NoYXJdIGJ5IHJlbW92aW5nIGVtcHR5IGZpbmFsXG4gICAgIGxpbmUuICopXG4gIGxldCBzcGxpdF9saW5lcyBzdHJpbmcgPVxuICAgIGxldCBzdHJpbmcgPVxuICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICBpZiBsZW4gPiAwICYmIENoYXIuZXF1YWwgJ1xcbicgKFN0cmluZy5nZXQgc3RyaW5nIChsZW4gLSAxKSlcbiAgICAgIHRoZW4gU3RyaW5nLnN1YiBzdHJpbmcgfnBvczowIH5sZW46KGxlbiAtIDEpXG4gICAgICBlbHNlIHN0cmluZ1xuICAgIGluXG4gICAgU3RyaW5nLnNwbGl0X29uX2NoYXIgc3RyaW5nIH5zZXA6J1xcbidcbiAgOztcblxuICBsZXQgcmVjIHRvX3NleHBzX2h1bSB0IGFjID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3QgXyBhcyB0IC0+IHNleHBfb2ZfdCB0IDo6IGFjXG4gICAgfCBTdHJpbmcgc3RyaW5nIC0+IEF0b20gc3RyaW5nIDo6IGFjXG4gICAgfCBFeG4gZXhuIC0+IEV4bi5zZXhwX29mX3QgZXhuIDo6IGFjXG4gICAgfCBTZXhwIHNleHAgLT4gc2V4cCA6OiBhY1xuICAgIHwgVGFnX3NleHAgKHRhZywgc2V4cCwgaGVyZSkgLT5cbiAgICAgIExpc3RcbiAgICAgICAgKEF0b20gdGFnXG4gICAgICAgICA6OiBzZXhwXG4gICAgICAgICA6OlxuICAgICAgICAgKG1hdGNoIGhlcmUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBoZXJlIC0+IFsgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdCBoZXJlIF0pKVxuICAgICAgOjogYWNcbiAgICB8IFRhZ190ICh0YWcsIHQpIC0+IExpc3QgKEF0b20gdGFnIDo6IHRvX3NleHBzX2h1bSB0IFtdKSA6OiBhY1xuICAgIHwgVGFnX2FyZyAodGFnLCBzZXhwLCB0KSAtPlxuICAgICAgbGV0IGJvZHkgPSBzZXhwIDo6IHRvX3NleHBzX2h1bSB0IFtdIGluXG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHRhZyA9IDAgdGhlbiBMaXN0IGJvZHkgOjogYWMgZWxzZSBMaXN0IChBdG9tIHRhZyA6OiBib2R5KSA6OiBhY1xuICAgIHwgV2l0aF9iYWNrdHJhY2UgKHQsIGJhY2t0cmFjZSkgLT5cbiAgICAgIFNleHAuTGlzdCBbIHRvX3NleHBfaHVtIHQ7IHNleHBfb2ZfbGlzdCBzZXhwX29mX3N0cmluZyAoc3BsaXRfbGluZXMgYmFja3RyYWNlKSBdXG4gICAgICA6OiBhY1xuICAgIHwgT2ZfbGlzdCAoXywgdHMpIC0+XG4gICAgICBMaXN0LmZvbGQgKExpc3QucmV2IHRzKSB+aW5pdDphYyB+ZjooZnVuIGFjIHQgLT4gdG9fc2V4cHNfaHVtIHQgYWMpXG5cbiAgYW5kIHRvX3NleHBfaHVtIHQgPVxuICAgIG1hdGNoIHRvX3NleHBzX2h1bSB0IFtdIHdpdGhcbiAgICB8IFsgc2V4cCBdIC0+IHNleHBcbiAgICB8IHNleHBzIC0+IFNleHAuTGlzdCBzZXhwc1xuICA7O1xuXG4gICgqIFdlIHVzZSBbcHJvdGVjdF0gdG8gZ3VhcmQgYWdhaW5zdCBleGNlcHRpb25zIHJhaXNlZCBieSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9ucywgc29cbiAgICAgdGhhdCBmYWlsdXJlIHRvIHByb2R1Y2Ugb25lIHBhcnQgb2YgYW4gaW5mbyBkb2Vzbid0IGludGVyZmVyZSB3aXRoIG90aGVyIHBhcnRzLiAqKVxuICBsZXQgcHJvdGVjdCBmID1cbiAgICB0cnkgZiAoKSB3aXRoXG4gICAgfCBleG4gLT4gQ291bGRfbm90X2NvbnN0cnVjdCAoRXhuLnNleHBfb2ZfdCBleG4pXG4gIDs7XG5cbiAgbGV0IG9mX2luZm8gaW5mbyA9IHByb3RlY3QgKGZ1biAoKSAtPiBMYXp5LmZvcmNlIGluZm8pXG4gIGxldCB0b19pbmZvIHQgPSBsYXp5IHRcbmVuZFxuXG5vcGVuIE1lc3NhZ2VcblxudHlwZSB0ID0gTWVzc2FnZS50IExhenkudFxuXG5sZXQgaW52YXJpYW50IF8gPSAoKVxubGV0IHRvX21lc3NhZ2UgPSBNZXNzYWdlLm9mX2luZm9cbmxldCBvZl9tZXNzYWdlID0gTWVzc2FnZS50b19pbmZvXG5cbigqIEl0IGlzIE9LIHRvIHVzZSBbTWVzc2FnZS50b19zZXhwX2h1bV0sIHdoaWNoIGlzIG5vdCBzdGFibGUsIGJlY2F1c2UgW3Rfb2Zfc2V4cF0gYmVsb3dcbiAgIGNhbiBoYW5kbGUgYW55IHNleHAuICopXG5sZXQgc2V4cF9vZl90IHQgPSBNZXNzYWdlLnRvX3NleHBfaHVtICh0b19tZXNzYWdlIHQpXG5sZXQgdF9vZl9zZXhwIHNleHAgPSBsYXp5IChNZXNzYWdlLlNleHAgc2V4cClcbmxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHsgdW50eXBlZCA9IEFueSBcIkluZm8udFwiIH1cbmxldCBjb21wYXJlIHQxIHQyID0gU2V4cC5jb21wYXJlIChzZXhwX29mX3QgdDEpIChzZXhwX29mX3QgdDIpXG5sZXQgZXF1YWwgdDEgdDIgPSBTZXhwLmVxdWFsIChzZXhwX29mX3QgdDEpIChzZXhwX29mX3QgdDIpXG5sZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IFNleHAuaGFzaF9mb2xkX3Qgc3RhdGUgKHNleHBfb2ZfdCB0KVxubGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcblxubGV0IHRvX3N0cmluZ19odW0gdCA9XG4gIG1hdGNoIHRvX21lc3NhZ2UgdCB3aXRoXG4gIHwgU3RyaW5nIHMgLT4gc1xuICB8IG1lc3NhZ2UgLT4gU2V4cC50b19zdHJpbmdfaHVtIChNZXNzYWdlLnRvX3NleHBfaHVtIG1lc3NhZ2UpXG47O1xuXG5sZXQgdG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIHQgPSBNZXNzYWdlLnRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCAodG9fbWVzc2FnZSB0KVxubGV0IHRvX3N0cmluZ19tYWNoIHQgPSBTZXhwLnRvX3N0cmluZ19tYWNoIChzZXhwX29mX3QgdClcbmxldCBvZl9sYXp5IGwgPSBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gU3RyaW5nIChMYXp5LmZvcmNlIGwpKSlcbmxldCBvZl9sYXp5X3NleHAgbCA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTZXhwIChMYXp5LmZvcmNlIGwpKSlcbmxldCBvZl9sYXp5X3QgbGF6eV90ID0gTGF6eS5qb2luIGxhenlfdFxubGV0IG9mX3N0cmluZyBtZXNzYWdlID0gTGF6eS5mcm9tX3ZhbCAoU3RyaW5nIG1lc3NhZ2UpXG5sZXQgY3JlYXRlZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgb2Zfc3RyaW5nIGZvcm1hdFxubGV0IG9mX3RodW5rIGYgPSBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gU3RyaW5nIChmICgpKSkpXG5cbmxldCBjcmVhdGUgP2hlcmUgP3N0cmljdCB0YWcgeCBzZXhwX29mX3ggPVxuICBtYXRjaCBzdHJpY3Qgd2l0aFxuICB8IE5vbmUgLT4gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFRhZ19zZXhwICh0YWcsIHNleHBfb2ZfeCB4LCBoZXJlKSkpXG4gIHwgU29tZSAoKSAtPiBvZl9tZXNzYWdlIChUYWdfc2V4cCAodGFnLCBzZXhwX29mX3ggeCwgaGVyZSkpXG47O1xuXG5sZXQgY3JlYXRlX3Mgc2V4cCA9IExhenkuZnJvbV92YWwgKFNleHAgc2V4cClcbmxldCB0YWcgdCB+dGFnID0gbGF6eSAoVGFnX3QgKHRhZywgdG9fbWVzc2FnZSB0KSlcblxubGV0IHRhZ19zX2xhenkgdCB+dGFnID1cbiAgbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFRhZ19hcmcgKFwiXCIsIExhenkuZm9yY2UgdGFnLCB0b19tZXNzYWdlIHQpKSlcbjs7XG5cbmxldCB0YWdfcyB0IH50YWcgPSB0YWdfc19sYXp5IHQgfnRhZzooTGF6eS5mcm9tX3ZhbCB0YWcpXG5cbmxldCB0YWdfYXJnIHQgdGFnIHggc2V4cF9vZl94ID1cbiAgbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFRhZ19hcmcgKHRhZywgc2V4cF9vZl94IHgsIHRvX21lc3NhZ2UgdCkpKVxuOztcblxubGV0IG9mX2xpc3QgP3RydW5jX2FmdGVyIHRzID0gbGF6eSAoT2ZfbGlzdCAodHJ1bmNfYWZ0ZXIsIExpc3QubWFwIHRzIH5mOnRvX21lc3NhZ2UpKVxuXG5leGNlcHRpb24gRXhuIG9mIHRcblxubGV0ICgpID1cbiAgKCogV2UgaW5zdGFsbCBhIGN1c3RvbSBleG4tY29udmVydGVyIHJhdGhlciB0aGFuIHVzZVxuICAgICBbZXhjZXB0aW9uIEV4biBvZiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXSAuLi4gW0BAQGVuZF1dIHRvIGVsaW1pbmF0ZSB0aGUgZXh0cmFcbiAgICAgd3JhcHBpbmcgb2YgXCIoRXhuIC4uLilcIi4gKilcbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEV4bl0gKGZ1bmN0aW9uXG4gICAgfCBFeG4gdCAtPiBzZXhwX29mX3QgdFxuICAgIHwgXyAtPlxuICAgICAgKCogUmVhY2hpbmcgdGhpcyBicmFuY2ggaW5kaWNhdGVzIGEgYnVnIGluIHNleHBsaWIuICopXG4gICAgICBhc3NlcnQgZmFsc2UpXG47O1xuXG5sZXQgdG9fZXhuIHQgPVxuICBpZiBub3QgKExhenkuaXNfdmFsIHQpXG4gIHRoZW4gRXhuIHRcbiAgZWxzZSAoXG4gICAgbWF0Y2ggTGF6eS5mb3JjZSB0IHdpdGhcbiAgICB8IE1lc3NhZ2UuRXhuIGV4biAtPiBleG5cbiAgICB8IF8gLT4gRXhuIHQpXG47O1xuXG5sZXQgb2ZfZXhuID9iYWNrdHJhY2UgZXhuID1cbiAgbGV0IGJhY2t0cmFjZSA9XG4gICAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBgR2V0IC0+XG4gICAgICBTb21lIChTdGRsaWIuUHJpbnRleGMuZ2V0X2JhY2t0cmFjZSAoKSlcbiAgICB8IFNvbWUgKGBUaGlzIHMpIC0+IFNvbWUgc1xuICBpblxuICBtYXRjaCBleG4sIGJhY2t0cmFjZSB3aXRoXG4gIHwgRXhuIHQsIE5vbmUgLT4gdFxuICB8IEV4biB0LCBTb21lIGJhY2t0cmFjZSAtPiBsYXp5IChXaXRoX2JhY2t0cmFjZSAodG9fbWVzc2FnZSB0LCBiYWNrdHJhY2UpKVxuICB8IF8sIE5vbmUgLT4gTGF6eS5mcm9tX3ZhbCAoTWVzc2FnZS5FeG4gZXhuKVxuICB8IF8sIFNvbWUgYmFja3RyYWNlIC0+IGxhenkgKFdpdGhfYmFja3RyYWNlIChTZXhwIChFeG4uc2V4cF9vZl90IGV4biksIGJhY2t0cmFjZSkpXG47O1xuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkluZm9cIlxuICAgIGxldCBwcCBwcGYgdCA9IFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAodG9fc3RyaW5nX2h1bSB0KVxuICBlbmQpXG5cbm1vZHVsZSBJbnRlcm5hbF9yZXByID0gTWVzc2FnZVxuXG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtFcnJvcl0gYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiB2YXJpb3VzIHBsYWNlcy4gIFBsZWFzZSBhdm9pZCBhZGRpbmcgbmV3XG4gICBkZXBlbmRlbmNpZXMuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbmZvXG5cbmxldCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBBbnkgXCJFcnJvci50XCIgfVxubGV0IHJhaXNlIHQgPSByYWlzZSAodG9fZXhuIHQpXG5sZXQgcmFpc2VfcyBzZXhwID0gcmFpc2UgKGNyZWF0ZV9zIHNleHApXG5sZXQgdG9faW5mbyB0ID0gdFxubGV0IG9mX2luZm8gdCA9IHRcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5FcnJvclwiXG4gICAgbGV0IHBwID0gcHBcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludmFyaWFudF9pbnRmXG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5sZXQgaW52YXJpYW50IGhlcmUgdCBzZXhwX29mX3QgZiA6IHVuaXQgPVxuICB0cnkgZiAoKSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJpbnZhcmlhbnQgZmFpbGVkXCJcbiAgICAgICAgIFsgXCJcIiwgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdCBoZXJlXG4gICAgICAgICA7IFwiZXhuXCIsIHNleHBfb2ZfZXhuIGV4blxuICAgICAgICAgOyBcIlwiLCBzZXhwX29mX3QgdFxuICAgICAgICAgXSlcbjs7XG5cbmxldCBjaGVja19maWVsZCB0IGYgZmllbGQgPVxuICB0cnkgZiAoRmllbGQuZ2V0IGZpZWxkIHQpIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcInByb2JsZW0gd2l0aCBmaWVsZFwiXG4gICAgICAgICBbIFwiZmllbGRcIiwgc2V4cF9vZl9zdHJpbmcgKEZpZWxkLm5hbWUgZmllbGQpOyBcImV4blwiLCBzZXhwX29mX2V4biBleG4gXSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gKCdhLCBFcnJvci50KSBSZXN1bHQudFxuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICBmdW4gX2NtcF9fYSBhX18wMDFfIGJfXzAwMl8gLT4gUmVzdWx0LmNvbXBhcmUgX2NtcF9fYSBFcnJvci5jb21wYXJlIGFfXzAwMV8gYl9fMDAyX1xuOztcblxubGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gIGZ1biBfY21wX19hIGFfXzAwN18gYl9fMDA4XyAtPiBSZXN1bHQuZXF1YWwgX2NtcF9fYSBFcnJvci5lcXVhbCBhX18wMDdfIGJfXzAwOF9cbjs7XG5cbmxldCBoYXNoX2ZvbGRfdCA6XG4gICdhLlxuICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gIC0+ICdhIHRcbiAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gID1cbiAgZnVuIF9oYXNoX2ZvbGRfYSBoc3YgYXJnIC0+IFJlc3VsdC5oYXNoX2ZvbGRfdCBfaGFzaF9mb2xkX2EgRXJyb3IuaGFzaF9mb2xkX3QgaHN2IGFyZ1xuOztcblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gIGZ1biBfb2ZfYV9fMDEzXyB4X18wMTVfIC0+IFJlc3VsdC50X29mX3NleHAgX29mX2FfXzAxM18gRXJyb3IudF9vZl9zZXhwIHhfXzAxNV9cbjs7XG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAxNl8geF9fMDE3XyAtPiBSZXN1bHQuc2V4cF9vZl90IF9vZl9hX18wMTZfIEVycm9yLnNleHBfb2ZfdCB4X18wMTdfXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IFJlc3VsdC50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyIEVycm9yLnRfc2V4cF9ncmFtbWFyXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgKCA+Pj0gKSA9IFJlc3VsdC4oID4+PSApXG5sZXQgKCA+PnwgKSA9IFJlc3VsdC4oID4+fCApXG5sZXQgYmluZCA9IFJlc3VsdC5iaW5kXG5sZXQgaWdub3JlX20gPSBSZXN1bHQuaWdub3JlX21cbmxldCBqb2luID0gUmVzdWx0LmpvaW5cbmxldCBtYXAgPSBSZXN1bHQubWFwXG5sZXQgcmV0dXJuID0gUmVzdWx0LnJldHVyblxuXG5tb2R1bGUgTW9uYWRfaW5maXggPSBSZXN1bHQuTW9uYWRfaW5maXhcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgT2sgYSAtPiBpbnZhcmlhbnRfYSBhXG4gIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IuaW52YXJpYW50IGVycm9yXG47O1xuXG5sZXQgbWFwMiBhIGIgfmYgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBPayB4LCBPayB5IC0+IE9rIChmIHggeSlcbiAgfCBPayBfLCAoRXJyb3IgXyBhcyBlKSB8IChFcnJvciBfIGFzIGUpLCBPayBfIC0+IGVcbiAgfCBFcnJvciBlMSwgRXJyb3IgZTIgLT4gRXJyb3IgKEVycm9yLm9mX2xpc3QgWyBlMTsgZTIgXSlcbjs7XG5cbm1vZHVsZSBGb3JfYXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZS5NYWtlX3VzaW5nX21hcDJfbG9jYWwgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgbGV0IG1hcDIgPSBtYXAyXG4gIGVuZClcblxubGV0ICggKj4gKSA9IEZvcl9hcHBsaWNhdGl2ZS4oICo+IClcbmxldCAoIDwqICkgPSBGb3JfYXBwbGljYXRpdmUuKCA8KiApXG5sZXQgKCA8Kj4gKSA9IEZvcl9hcHBsaWNhdGl2ZS4oIDwqPiApXG5sZXQgYXBwbHkgPSBGb3JfYXBwbGljYXRpdmUuYXBwbHlcbmxldCBib3RoID0gRm9yX2FwcGxpY2F0aXZlLmJvdGhcbmxldCBtYXAzID0gRm9yX2FwcGxpY2F0aXZlLm1hcDNcblxubW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gRm9yX2FwcGxpY2F0aXZlLkFwcGxpY2F0aXZlX2luZml4XG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSByZXR1cm5cblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgKCogZnJvbSBBcHBsaWNhdGl2ZS5NYWtlICopXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICBlbmRcbmVuZFxuXG5sZXQgb2sgPSBSZXN1bHQub2tcbmxldCBpc19vayA9IFJlc3VsdC5pc19va1xubGV0IGlzX2Vycm9yID0gUmVzdWx0LmlzX2Vycm9yXG5cbmxldCB0cnlfd2l0aCA/KGJhY2t0cmFjZSA9IGZhbHNlKSBmID1cbiAgdHJ5IE9rIChmICgpKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuID9iYWNrdHJhY2U6KGlmIGJhY2t0cmFjZSB0aGVuIFNvbWUgYEdldCBlbHNlIE5vbmUpKVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gP2JhY2t0cmFjZSBmID0gam9pbiAodHJ5X3dpdGggP2JhY2t0cmFjZSBmKVxuXG5sZXQgb2tfZXhuID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBlcnIgLT4gRXJyb3IucmFpc2UgZXJyXG47O1xuXG5sZXQgb2ZfZXhuID9iYWNrdHJhY2UgZXhuID0gRXJyb3IgKEVycm9yLm9mX2V4biA/YmFja3RyYWNlIGV4bilcblxubGV0IG9mX2V4bl9yZXN1bHQgP2JhY2t0cmFjZSA9IGZ1bmN0aW9uXG4gIHwgT2sgXyBhcyB6IC0+IHpcbiAgfCBFcnJvciBleG4gLT4gb2ZfZXhuID9iYWNrdHJhY2UgZXhuXG47O1xuXG5sZXQgZXJyb3IgP2hlcmUgP3N0cmljdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgRXJyb3IgKEVycm9yLmNyZWF0ZSA/aGVyZSA/c3RyaWN0IG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgZXJyb3JfcyBzZXhwID0gRXJyb3IgKEVycm9yLmNyZWF0ZV9zIHNleHApXG5sZXQgZXJyb3Jfc3RyaW5nIG1lc3NhZ2UgPSBFcnJvciAoRXJyb3Iub2Zfc3RyaW5nIG1lc3NhZ2UpXG5sZXQgZXJyb3JmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBlcnJvcl9zdHJpbmcgZm9ybWF0XG5sZXQgdGFnIHQgfnRhZyA9IFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooRXJyb3IudGFnIH50YWcpXG5sZXQgdGFnX3MgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWdfcyB+dGFnKVxubGV0IHRhZ19zX2xhenkgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWdfc19sYXp5IH50YWcpXG5cbmxldCB0YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooZnVuIGUgLT4gRXJyb3IudGFnX2FyZyBlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgdW5pbXBsZW1lbnRlZCBzID0gZXJyb3IgXCJ1bmltcGxlbWVudGVkXCIgcyBzZXhwX29mX3N0cmluZ1xuXG5cbmxldCBjb21iaW5lX2ludGVybmFsIGxpc3Qgfm9uX29rIH5vbl9lcnJvciA9XG4gIG1hdGNoIFJlc3VsdC5jb21iaW5lX2Vycm9ycyBsaXN0IHdpdGhcbiAgfCBPayB4IC0+IE9rIChvbl9vayB4KVxuICB8IEVycm9yIGVycnMgLT4gRXJyb3IgKG9uX2Vycm9yIGVycnMpXG47O1xuXG5sZXQgaWdub3JlX3VuaXRfbGlzdCAoXyA6IHVuaXQgbGlzdCkgPSAoKVxuXG5sZXQgZXJyb3Jfb2ZfbGlzdF9pZl9uZWNlc3NhcnkgPSBmdW5jdGlvblxuICB8IFsgZSBdIC0+IGVcbiAgfCBsaXN0IC0+IEVycm9yLm9mX2xpc3QgbGlzdFxuOztcblxubGV0IGFsbCBsaXN0ID0gY29tYmluZV9pbnRlcm5hbCBsaXN0IH5vbl9vazpGbi5pZCB+b25fZXJyb3I6ZXJyb3Jfb2ZfbGlzdF9pZl9uZWNlc3NhcnlcblxubGV0IGFsbF91bml0IGxpc3QgPVxuICBjb21iaW5lX2ludGVybmFsIGxpc3Qgfm9uX29rOmlnbm9yZV91bml0X2xpc3Qgfm9uX2Vycm9yOmVycm9yX29mX2xpc3RfaWZfbmVjZXNzYXJ5XG47O1xuXG5sZXQgY29tYmluZV9lcnJvcnMgbGlzdCA9IGNvbWJpbmVfaW50ZXJuYWwgbGlzdCB+b25fb2s6Rm4uaWQgfm9uX2Vycm9yOkVycm9yLm9mX2xpc3RcblxubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbGlzdCA9XG4gIGNvbWJpbmVfaW50ZXJuYWwgbGlzdCB+b25fb2s6aWdub3JlX3VuaXRfbGlzdCB+b25fZXJyb3I6RXJyb3Iub2ZfbGlzdFxuOztcblxubGV0IGZpbHRlcl9va19hdF9sZWFzdF9vbmUgbCA9XG4gIGxldCBvaywgZXJycyA9IExpc3QucGFydGl0aW9uX21hcCBsIH5mOlJlc3VsdC50b19laXRoZXIgaW5cbiAgbWF0Y2ggb2sgd2l0aFxuICB8IFtdIC0+IEVycm9yIChFcnJvci5vZl9saXN0IGVycnMpXG4gIHwgXyAtPiBPayBva1xuOztcblxubGV0IGZpbmRfb2sgbCA9XG4gIG1hdGNoIExpc3QuZmluZF9tYXAgbCB+ZjpSZXN1bHQub2sgd2l0aFxuICB8IFNvbWUgeCAtPiBPayB4XG4gIHwgTm9uZSAtPlxuICAgIEVycm9yXG4gICAgICAoRXJyb3Iub2ZfbGlzdFxuICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE9rIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiBlcnIpKSlcbjs7XG5cbmxldCBmaW5kX21hcF9vayBsIH5mID1cbiAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgRXJyb3JcbiAgICAgIChFcnJvci5vZl9saXN0XG4gICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgbWF0Y2ggZiBlbHQgd2l0aFxuICAgICAgICAgICAgfCBPayBfIGFzIHggLT4gcmV0dXJuIHhcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycikpKSkgW0Bub250YWlsXVxuOztcblxubGV0IG1hcCA9IFJlc3VsdC5tYXBcbmxldCBpdGVyID0gUmVzdWx0Lml0ZXJcbmxldCBpdGVyX2Vycm9yID0gUmVzdWx0Lml0ZXJfZXJyb3JcbiIsIigqIFRoaXMgaXMgYnJva2VuIG9mZiB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gU2lnbiBhbmQgQ29tcGFyYWJsZS4gKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTmVnXG4gIHwgWmVyb1xuICB8IFBvc1xuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaCwgZW51bWVyYXRlXVxuXG5sZXQgdF9vZl9zZXhwID1cbiAgKGxldCBlcnJvcl9zb3VyY2VfXzAwM18gPSBcInNpZ24wLm1sLnRcIiBpblxuICAgZnVuY3Rpb25cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgLT4gTmVnXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgLT4gWmVyb1xuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSAtPiBQb3NcbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDJfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICB8IHNleHBfXzAwMl8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG47O1xuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBOZWcgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmVnXCJcbiAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgfCBQb3MgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUG9zXCJcbiAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJOZWdcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlplcm9cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlBvc1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbmxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgTmVnIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IFplcm8gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxXG4gICAgIHwgUG9zIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxubGV0IGFsbCA9IChbIE5lZzsgWmVybzsgUG9zIF0gOiB0IGxpc3QpXG5cbltAQEBlbmRdXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogdCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiB0KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiB0KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiB0KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IHQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiB0KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IHQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IHQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiB0KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nIHMgPSB0X29mX3NleHAgKHNleHBfb2Zfc3RyaW5nIHMpXG5sZXQgdG9fc3RyaW5nIHQgPSBzdHJpbmdfb2Zfc2V4cCAoc2V4cF9vZl90IHQpXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IE5lZyAtPiAtMVxuICB8IFplcm8gLT4gMFxuICB8IFBvcyAtPiAxXG47O1xuXG5sZXQgXyA9IGhhc2hcblxuKCogSWdub3JlIHRoZSBoYXNoIGZ1bmN0aW9uIHByb2R1Y2VkIGJ5IFtAQGRlcml2aW5nX2lubGluZSBoYXNoXSAqKVxubGV0IGhhc2ggPSB0b19pbnRcbmxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5TaWduXCJcbmxldCBvZl9pbnQgbiA9IGlmIG4gPCAwIHRoZW4gTmVnIGVsc2UgaWYgbiA9IDAgdGhlbiBaZXJvIGVsc2UgUG9zXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29tcGFyYWJsZV9pbnRmXG5cbm1vZHVsZSBXaXRoX3plcm8gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB6ZXJvIDogdFxuICBlbmQpID1cbnN0cnVjdFxuICBvcGVuIFRcblxuICBsZXQgaXNfcG9zaXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvID4gMFxuICBsZXQgaXNfbm9uX25lZ2F0aXZlIHQgPSBjb21wYXJlIHQgemVybyA+PSAwXG4gIGxldCBpc19uZWdhdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPCAwXG4gIGxldCBpc19ub25fcG9zaXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvIDw9IDBcbiAgbGV0IHNpZ24gdCA9IFNpZ24wLm9mX2ludCAoY29tcGFyZSB0IHplcm8pXG5lbmRcblxubW9kdWxlIFBvbHkgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gKFQuc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBQb2x5XG4gIGVuZFxuXG4gIGluY2x1ZGUgUG9seVxuXG4gIGxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuICBsZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG4gIGxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAgIGFzc2VydCAobWluIDw9IG1heCk7XG4gICAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG4gIDs7XG5cbiAgbGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXhcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gICAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICA7O1xuXG4gIG1vZHVsZSBDID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSlcbiAgZW5kXG5cbiAgaW5jbHVkZSBDXG5lbmRcblxubGV0IGd0IGNtcCBhIGIgPSBjbXAgYSBiID4gMFxubGV0IGx0IGNtcCBhIGIgPSBjbXAgYSBiIDwgMFxubGV0IGdlcSBjbXAgYSBiID0gY21wIGEgYiA+PSAwXG5sZXQgbGVxIGNtcCBhIGIgPSBjbXAgYSBiIDw9IDBcbmxldCBlcXVhbCBjbXAgYSBiID0gY21wIGEgYiA9IDBcbmxldCBub3RfZXF1YWwgY21wIGEgYiA9IGNtcCBhIGIgPD4gMFxubGV0IG1pbiBjbXAgdCB0JyA9IGlmIGxlcSBjbXAgdCB0JyB0aGVuIHQgZWxzZSB0J1xubGV0IG1heCBjbXAgdCB0JyA9IGlmIGdlcSBjbXAgdCB0JyB0aGVuIHQgZWxzZSB0J1xuXG5tb2R1bGUgSW5maXggKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA6IEluZml4IHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBsZXQgKCA+ICkgYSBiID0gZ3QgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA8ICkgYSBiID0gbHQgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA+PSApIGEgYiA9IGdlcSBULmNvbXBhcmUgYSBiXG4gIGxldCAoIDw9ICkgYSBiID0gbGVxIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPSApIGEgYiA9IGVxdWFsIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPD4gKSBhIGIgPSBub3RfZXF1YWwgVC5jb21wYXJlIGEgYlxuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgQ29tcGFyaXNvbnMgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBpbmNsdWRlIEluZml4IChUKVxuXG4gIGxldCBjb21wYXJlID0gVC5jb21wYXJlXG4gIGxldCBlcXVhbCA9ICggPSApXG4gIGxldCBtaW4gdCB0JyA9IG1pbiBjb21wYXJlIHQgdCdcbiAgbGV0IG1heCB0IHQnID0gbWF4IGNvbXBhcmUgdCB0J1xuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyYXRvci5jb21wYXJlXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQ29tcGFyaXNvbnMgKFQpXG4gIGluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IGFzY2VuZGluZyA9IGNvbXBhcmVcbiAgbGV0IGRlc2NlbmRpbmcgdCB0JyA9IGNvbXBhcmUgdCcgdFxuICBsZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxuICBsZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAgIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuICA7O1xuXG4gIGxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4XG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICAgIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuICBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgW0BpbmxpbmVkIGhpbnRdIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgSW5oZXJpdCAoQyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIChUIDogc2lnXG4gICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICAgICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICAgICAgICBbQEBAZW5kXVxuXG4gICAgICAgICAgdmFsIGNvbXBvbmVudCA6IHQgLT4gQy50XG4gICAgICAgIGVuZCkgPVxuICBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gKFQuc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNvbXBhcmUgdCB0JyA9IEMuY29tcGFyZSAoVC5jb21wb25lbnQgdCkgKFQuY29tcG9uZW50IHQnKVxuICBlbmQpXG5cbigqIGNvbXBhcmUgW3hdIGFuZCBbeV0gbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgZnVuY3Rpb25zIGluIHRoZSBsaXN0IFtjbXBzXSAqKVxubGV0IGxleGljb2dyYXBoaWMgY21wcyB4IHkgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgY21wIDo6IGNtcHMgLT5cbiAgICAgIGxldCByZXMgPSBjbXAgeCB5IGluXG4gICAgICBpZiByZXMgPSAwIHRoZW4gbG9vcCBjbXBzIGVsc2UgcmVzXG4gICAgfCBbXSAtPiAwXG4gIGluXG4gIGxvb3AgY21wc1xuOztcblxubGV0IGxpZnQgY21wIH5mIHggeSA9IGNtcCAoZiB4KSAoZiB5KVxubGV0IHJldmVyc2UgY21wIHggeSA9IGNtcCB5IHhcblxudHlwZSAnYSByZXZlcnNlZCA9ICdhXG5cbmxldCBjb21wYXJlX3JldmVyc2VkIGNtcCB4IHkgPSBjbXAgeSB4XG4iLCJvcGVuISBJbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNoYWJsZS5LZXkgKilcbm1vZHVsZSB0eXBlIEtleSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuXG4gICgqKiBWYWx1ZXMgcmV0dXJuZWQgYnkgW2hhc2hdIG11c3QgYmUgbm9uLW5lZ2F0aXZlLiAgQW4gZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIGluIHRoZVxuICAgICAgY2FzZSB0aGF0IFtoYXNoXSByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUuICopXG4gIHZhbCBoYXNoIDogdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgSGFzaGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGhhc2ggOiAnYSAtPiBpbnRcbiAgICA7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgICA7IHNleHBfb2ZfdCA6ICdhIC0+IFNleHAudFxuICAgIH1cblxuICAoKiogVGhpcyBmdW5jdGlvbiBpcyBzb3VuZCBidXQgbm90IGNvbXBsZXRlLCBtZWFuaW5nIHRoYXQgaWYgaXQgcmV0dXJucyBbdHJ1ZV0gdGhlbiBpdCdzXG4gICAgICBzYWZlIHRvIHVzZSB0aGUgdHdvIGludGVyY2hhbmdlYWJseS4gIElmIGl0J3MgW2ZhbHNlXSwgeW91IGhhdmUgbm8gZ3VhcmFudGVlcy4gIEZvclxuICAgICAgZXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgPiB1dG9wXG4gICAgICAgIG9wZW4gQ29yZTs7XG4gICAgICAgIGxldCBlcXVhbCAoYSA6ICdhIEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50KSBiID1cbiAgICAgICAgICBwaHlzX2VxdWFsIGEgYlxuICAgICAgICAgIHx8IChwaHlzX2VxdWFsIGEuaGFzaCBiLmhhc2hcbiAgICAgICAgICAgICAgJiYgcGh5c19lcXVhbCBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgICAgICAgICAgICYmIHBoeXNfZXF1YWwgYS5zZXhwX29mX3QgYi5zZXhwX29mX3QpXG4gICAgICAgIDs7XG4gICAgICAgIGxldCBhID0gSGFzaHRibF9pbnRmLkhhc2hhYmxlLnsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90ID0gSW50LnNleHBfb2ZfdCB9OztcbiAgICAgICAgbGV0IGIgPSBIYXNodGJsX2ludGYuSGFzaGFibGUueyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgPSBJbnQuc2V4cF9vZl90IH07O1xuICAgICAgICBlcXVhbCBhIGI7OyAgKCogZmFsc2U/ISAqKVxuICAgICAgXX1cbiAgKilcbiAgbGV0IGVxdWFsIGEgYiA9XG4gICAgcGh5c19lcXVhbCBhIGJcbiAgICB8fCAocGh5c19lcXVhbCBhLmhhc2ggYi5oYXNoXG4gICAgICAgICYmIHBoeXNfZXF1YWwgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgICAgICAmJiBwaHlzX2VxdWFsIGEuc2V4cF9vZl90IGIuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBoYXNoX3BhcmFtID0gU3RkbGliLkhhc2h0YmwuaGFzaF9wYXJhbVxuICBsZXQgaGFzaCA9IFN0ZGxpYi5IYXNodGJsLmhhc2hcbiAgbGV0IHBvbHkgPSB7IGhhc2g7IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmU7IHNleHBfb2ZfdCA9IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIH1cblxuICBsZXQgb2Zfa2V5ICh0eXBlIGEpIChtb2R1bGUgS2V5IDogS2V5IHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIHsgaGFzaCA9IEtleS5oYXNoOyBjb21wYXJlID0gS2V5LmNvbXBhcmU7IHNleHBfb2ZfdCA9IEtleS5zZXhwX29mX3QgfVxuICA7O1xuXG4gIGxldCB0b19rZXkgKHR5cGUgYSkgeyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfSA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IGhhc2ggPSBoYXNoXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQgOiBLZXlcbiAgICAgIHdpdGggdHlwZSB0ID0gYSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEhhc2hhYmxlXG5cbm1vZHVsZSB0eXBlIEhhc2hhYmxlID0gc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIEhhc2hhYmxlLnQgPVxuICAgIHsgaGFzaCA6ICdhIC0+IGludFxuICAgIDsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBwb2x5IDogJ2EgdFxuICB2YWwgb2Zfa2V5IDogKG1vZHVsZSBLZXkgd2l0aCB0eXBlIHQgPSAnYSkgLT4gJ2EgdFxuICB2YWwgdG9fa2V5IDogJ2EgdCAtPiAobW9kdWxlIEtleSB3aXRoIHR5cGUgdCA9ICdhKVxuICB2YWwgaGFzaF9wYXJhbSA6IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50XG4gIHZhbCBoYXNoIDogJ2EgLT4gaW50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJZGVudGlmaWFibGVfaW50ZlxuXG5tb2R1bGUgTWFrZSAoVCA6IEFyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogQXJnX3dpdGhfY29tcGFyYXRvcikgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZ19pbmxpbmUgZW51bWVyYXRlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgYWxsID0gKFsgKCkgXSA6IHQgbGlzdClcbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfdW5pdCA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF91bml0XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF91bml0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9ICh1bml0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3VuaXQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gdW5pdF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBjb21wYXJlIF8gXyA9IDBcblxuICBsZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwiKClcIiAtPiAoKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkJhc2UuVW5pdC5vZl9zdHJpbmc6ICgpIGV4cGVjdGVkXCJcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nICgpID0gXCIoKVwiXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5Vbml0XCJcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKFQpXG5cbmxldCBpbnZhcmlhbnQgKCkgPSAoKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wXG5cbmxldCBnZXRfcG9zX2xlbiA/cG9zID9sZW4gKCkgfnRvdGFsX2xlbmd0aCA9XG4gIHRyeSBSZXN1bHQuT2sgKGdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aCkgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgcyAtPiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgc1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBUaGVzZSBmdW5jdGlvbnMgaW1wbGVtZW50IGEgc2VhcmNoIGZvciB0aGUgZmlyc3QgKHJlc3AuIGxhc3QpIGVsZW1lbnRcbiAgIHNhdGlzZnlpbmcgYSBwcmVkaWNhdGUsIGFzc3VtaW5nIHRoYXQgdGhlIHByZWRpY2F0ZSBpcyBpbmNyZWFzaW5nIG9uXG4gICB0aGUgY29udGFpbmVyLCBtZWFuaW5nIHRoYXQsIGlmIHRoZSBjb250YWluZXIgaXMgW3UxLi4udW5dLCB0aGVyZSBleGlzdHMgYVxuICAgayBzdWNoIHRoYXQgcCh1MSk9Li4uLj1wKHVrKSA9IGZhbHNlIGFuZCBwKHVrKzEpPS4uLi49cCh1bik9IHRydWUuXG4gICBJZiB0aGlzIGsgPSAxIChyZXNwIG4pLCBmaW5kX2xhc3Rfbm90X3NhdGlzZnlpbmcgKHJlc3AgZmluZF9maXJzdF9zYXRpc2Z5aW5nKVxuICAgd2lsbCByZXR1cm4gTm9uZS4gKilcblxubGV0IHJlYyBsaW5lYXJfc2VhcmNoX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWQgPVxuICBpZiBsbyA+IGhpXG4gIHRoZW4gTm9uZVxuICBlbHNlIGlmIHByZWQgKGdldCB0IGxvKVxuICB0aGVuIFNvbWUgbG9cbiAgZWxzZSBsaW5lYXJfc2VhcmNoX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbzoobG8gKyAxKSB+aGkgfnByZWRcbjs7XG5cbigqIFRha2VzIGEgY29udGFpbmVyIFt0XSwgYSBwcmVkaWNhdGUgW3ByZWRdIGFuZCB0d28gaW5kaWNlcyBbbG8gPCBoaV0sIHN1Y2ggdGhhdFxuICAgW3ByZWRdIGlzIGluY3JlYXNpbmcgb24gW3RdIGJldHdlZW4gW2xvXSBhbmQgW2hpXS5cblxuICAgcmV0dXJuIGEgcmFuZ2UgKGxvLCBoaSkgd2hlcmU6XG4gICAtIGxvIGFuZCBoaSBhcmUgY2xvc2UgZW5vdWdoIHRvZ2V0aGVyIGZvciBhIGxpbmVhciBzZWFyY2hcbiAgIC0gSWYgW3ByZWRdIGlzIG5vdCBjb25zdGFudGx5IFtmYWxzZV0gb24gW3RdIGJldHdlZW4gW2xvXSBhbmQgW2hpXSwgdGhlIGZpcnN0IGVsZW1lbnRcbiAgICAgb24gd2hpY2ggW3ByZWRdIGlzIFt0cnVlXSBpcyBiZXR3ZWVuIFtsb10gYW5kIFtoaV0uICopXG4oKiBJbnZhcmlhbnQ6IHRoZSBmaXJzdCBlbGVtZW50IHNhdGlzZnlpbmcgW3ByZWRdLCBpZiBpdCBleGlzdHMgaXMgYmV0d2VlbiBbbG9dIGFuZCBbaGldICopXG5sZXQgcmVjIGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkID1cbiAgKCogV2FybmluZzogdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCB0ZXJtaW5hdGUgaWYgdGhlIGNvbnN0YW50IChjdXJyZW50bHkgOCkgaXNcbiAgICAgc2V0IDw9IDEgKilcbiAgaWYgaGkgLSBsbyA8PSA4XG4gIHRoZW4gbG8sIGhpXG4gIGVsc2UgKFxuICAgIGxldCBtaWQgPSBsbyArICgoaGkgLSBsbykgLyAyKSBpblxuICAgIGlmIHByZWQgKGdldCB0IG1pZClcbiAgICAoKiBJTlZBUklBTlQgY2hlY2s6IGl0IG1lYW5zIHRoZSBmaXJzdCBzYXRpc2Z5aW5nIGVsZW1lbnQgaXMgYmV0d2VlbiBbbG9dIGFuZCBbbWlkXSAqKVxuICAgIHRoZW5cbiAgICAgIGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpOm1pZCB+cHJlZFxuICAgICAgKCogSU5WQVJJQU5UIGNoZWNrOiBpdCBtZWFucyB0aGUgZmlyc3Qgc2F0aXNmeWluZyBlbGVtZW50LCBpZiBpdCBleGlzdHMsXG4gICAgICAgICBpcyBiZXR3ZWVuIFttaWQrMV0gYW5kIFtoaV0gKilcbiAgICBlbHNlIGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG86KG1pZCArIDEpIH5oaSB+cHJlZClcbjs7XG5cbmxldCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gIGluXG4gIGxldCBsbyA9IHBvcyBpblxuICBsZXQgaGkgPSBwb3MgKyBsZW4gLSAxIGluXG4gIGxldCBsbywgaGkgPSBmaW5kX3JhbmdlX25lYXJfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZCBpblxuICBsaW5lYXJfc2VhcmNoX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWRcbjs7XG5cbigqIFRha2VzIGFuIGFycmF5IHdpdGggc2hhcGUgW3RydWUsLi4udHJ1ZSxmYWxzZSwuLi5mYWxzZV0gKGkuZS4sIHRoZSBfcmV2ZXJzZV8gb2Ygd2hhdFxuICAgaXMgZGVzY3JpYmVkIGFib3ZlKSBhbmQgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdHJ1ZSBvciBOb25lIGlmIHRoZXJlIGFyZSBub1xuICAgdHJ1ZSopXG5sZXQgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfnByZWQgfmdldCB+bGVuZ3RoID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gIGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgICgqIFRoZSBsYXN0IHNhdGlzZnlpbmcgaXMgdGhlIG9uZSBqdXN0IGJlZm9yZSB0aGUgZmlyc3Qgbm90IHNhdGlzZnlpbmcgKilcbiAgICBtYXRjaFxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIH5wb3MgfmxlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gbm90IChwcmVkIHgpKVxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSAocG9zICsgbGVuIC0gMSlcbiAgICAoKiBUaGlzIG1lYW5zIHRoYXQgYWxsIGVsZW1lbnRzIHNhdGlzZnkgcHJlZC5cbiAgICAgICBUaGVyZSBpcyBhdCBsZWFzdCBhbiBlbGVtZW50IGFzIChsZW4gPiAwKSAqKVxuICAgIHwgU29tZSBpIHdoZW4gaSA9IHBvcyAtPiBOb25lICgqIG5vIGVsZW1lbnQgc2F0aXNmaWVzIHByZWQgKilcbiAgICB8IFNvbWUgaSAtPiBTb21lIChpIC0gMSkpXG47O1xuXG5sZXQgYmluYXJ5X3NlYXJjaFxuICAgICAgP3Bvc1xuICAgICAgP2xlblxuICAgICAgdFxuICAgICAgfmxlbmd0aDooKGxlbmd0aCA6IF8gLT4gXykgW0Bsb2NhbF0pXG4gICAgICB+Z2V0OigoZ2V0IDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKVxuICAgICAgfmNvbXBhcmU6KChjb21wYXJlIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKVxuICAgICAgaG93XG4gICAgICB2XG4gID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gLT5cbiAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDwgMCkgW0Bub250YWlsXG4gICAgXVxuICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMCkgW0Bub250YWlsXG4gICAgXVxuICB8IGBGaXJzdF9lcXVhbF90byAtPlxuICAgIChtYXRjaFxuICAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApXG4gICAgIHdpdGhcbiAgICAgfCBTb21lIHggd2hlbiBjb21wYXJlIChnZXQgdCB4KSB2ID0gMCAtPiBTb21lIHhcbiAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gIHwgYExhc3RfZXF1YWxfdG8gLT5cbiAgICAobWF0Y2hcbiAgICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApXG4gICAgIHdpdGhcbiAgICAgfCBTb21lIHggd2hlbiBjb21wYXJlIChnZXQgdCB4KSB2ID0gMCAtPiBTb21lIHhcbiAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApIFtAbm9udGFpbFxuICAgIF1cbiAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIC0+XG4gICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPiAwKSBbQG5vbnRhaWxcbiAgICBdXG47O1xuXG5sZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5zZWdtZW50X29mIGhvdyA9XG4gIGxldCBpc19sZWZ0IHggPVxuICAgIG1hdGNoIHNlZ21lbnRfb2YgeCB3aXRoXG4gICAgfCBgTGVmdCAtPiB0cnVlXG4gICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgaW5cbiAgbGV0IGlzX3JpZ2h0IHggPSBub3QgKGlzX2xlZnQgeCkgaW5cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgTGFzdF9vbl9sZWZ0IC0+XG4gICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5wcmVkOmlzX2xlZnQgW0Bub250YWlsXVxuICB8IGBGaXJzdF9vbl9yaWdodCAtPlxuICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnByZWQ6aXNfcmlnaHQgW0Bub250YWlsXVxuOztcbiIsIigqKiBNb2R1bGUgdHlwZXMgZm9yIGEgW2JpbmFyeV9zZWFyY2hdIGZ1bmN0aW9uIGZvciBhIHNlcXVlbmNlLCBhbmQgZnVuY3RvcnMgZm9yIGJ1aWxkaW5nXG4gICAgW2JpbmFyeV9zZWFyY2hdIGZ1bmN0aW9ucy4gKilcblxub3BlbiEgSW1wb3J0XG5cbigqKiBBbiBbSW5kZXhhYmxlXSB0eXBlIGlzIGEgZmluaXRlIHNlcXVlbmNlIG9mIGVsZW1lbnRzIGluZGV4ZWQgYnkgY29uc2VjdXRpdmUgaW50ZWdlcnNcbiAgICBbMF0gLi4uIFtsZW5ndGggdCAtIDFdLiAgW2dldF0gYW5kIFtsZW5ndGhdIG11c3QgYmUgTygxKSBmb3IgdGhlIHJlc3VsdGluZ1xuICAgIFtiaW5hcnlfc2VhcmNoXSB0byBiZSBsZyhuKS4gKilcbm1vZHVsZSB0eXBlIEluZGV4YWJsZSA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICB2YWwgZ2V0IDogdCAtPiBpbnQgLT4gZWx0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZGV4YWJsZTEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIFdoaWNoX3RhcmdldF9ieV9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAoKiogICAgICAgIHt2IHwgPCBlbHQgWCB8ICAgICAgICAgICAgICAgICAgICAgICB2fSAqKVxuICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvICgqKiAgICAge3YgfCAgICAgIDw9IGVsdCAgICAgICBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgfCBgTGFzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCAgID0gZWx0IFggfCAgICAgICAgICAgdn0gKilcbiAgICB8IGBGaXJzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8IFggPSBlbHQgICB8ICAgICAgICAgICB2fSAqKVxuICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAoKioge3YgICAgICAgICAgIHwgWCAgICAgICA+PSBlbHQgICAgICB8IHZ9ICopXG4gICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuICgqKiAgICB7diAgICAgICAgICAgICAgICAgICAgICAgfCBYID4gZWx0IHwgdn0gKilcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGVdXG5cbiAgbGV0IGFsbCA9XG4gICAgKFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuXG4gICAgIDsgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvXG4gICAgIDsgYExhc3RfZXF1YWxfdG9cbiAgICAgOyBgRmlyc3RfZXF1YWxfdG9cbiAgICAgOyBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgIDsgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhblxuICAgICBdXG4gICAgIDogdCBsaXN0KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIFdoaWNoX3RhcmdldF9ieV9zZWdtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgTGFzdF9vbl9sZWZ0XG4gICAgfCBgRmlyc3Rfb25fcmlnaHRcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGVdXG5cbiAgbGV0IGFsbCA9IChbIGBMYXN0X29uX2xlZnQ7IGBGaXJzdF9vbl9yaWdodCBdIDogdCBsaXN0KVxuXG4gIFtAQEBlbmRdXG5lbmRcblxudHlwZSAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2ggPVxuICA/cG9zOmludFxuICAtPiA/bGVuOmludFxuICAtPiAndFxuICAtPiBjb21wYXJlOigoJ2VsdCAtPiAna2V5IC0+IGludClbQGxvY2FsXSlcbiAgLT4gV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gIC0+ICdrZXlcbiAgLT4gaW50IG9wdGlvblxuXG50eXBlICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPVxuICA/cG9zOmludFxuICAtPiA/bGVuOmludFxuICAtPiAndFxuICAtPiBzZWdtZW50X29mOigoJ2VsdCAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pW0Bsb2NhbF0pXG4gIC0+IFdoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgLT4gaW50IG9wdGlvblxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgdFxuXG4gICgqKiBTZWUgW0JpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaF0gaW4gYmluYXJ5X3NlYXJjaC5tbCAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICh0LCBlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2hcblxuICAoKiogU2VlIFtCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSBpbiBiaW5hcnlfc2VhcmNoLm1sICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA6ICh0LCBlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2ggOiAoJ2EgdCwgJ2EsICdrZXkpIGJpbmFyeV9zZWFyY2hcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKCdhIHQsICdhKSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJpbmFyeV9zZWFyY2hhYmxlID0gc2lnXG4gIG1vZHVsZSB0eXBlIFMgPSBTXG4gIG1vZHVsZSB0eXBlIFMxID0gUzFcbiAgbW9kdWxlIHR5cGUgSW5kZXhhYmxlID0gSW5kZXhhYmxlXG4gIG1vZHVsZSB0eXBlIEluZGV4YWJsZTEgPSBJbmRleGFibGUxXG5cbiAgbW9kdWxlIFdoaWNoX3RhcmdldF9ieV9rZXkgPSBXaGljaF90YXJnZXRfYnlfa2V5XG4gIG1vZHVsZSBXaGljaF90YXJnZXRfYnlfc2VnbWVudCA9IFdoaWNoX3RhcmdldF9ieV9zZWdtZW50XG5cbiAgdHlwZSBub25yZWMgKCd0LCAnZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoID0gKCd0LCAnZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoXG4gIHR5cGUgbm9ucmVjICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSAoJ3QsICdlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgbW9kdWxlIE1ha2UgKFQgOiBJbmRleGFibGUpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgd2l0aCB0eXBlIGVsdCA6PSBULmVsdFxuICBtb2R1bGUgTWFrZTEgKFQgOiBJbmRleGFibGUxKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGVfaW50ZlxuXG5tb2R1bGUgdHlwZSBBcmcgPSBzaWdcbiAgdHlwZSAnYSBlbHRcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhIGVsdFxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbiAoVCA6IEFyZykgPSBzdHJ1Y3RcbiAgbGV0IGdldCA9IFQuZ2V0XG4gIGxldCBsZW5ndGggPSBULmxlbmd0aFxuXG4gIGxldCBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5jb21wYXJlIGhvdyB2ID1cbiAgICBCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5jb21wYXJlIGhvdyB2XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBJbmRleGFibGUpID0gTWFrZV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgdHlwZSAnYSBlbHQgPSBULmVsdFxuICAgIHR5cGUgJ2EgdCA9IFQudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMSAoVCA6IEluZGV4YWJsZTEpID0gTWFrZV9nZW4gKHN0cnVjdFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgIGxldCBnZXQgPSBULmdldFxuICAgIGxldCBsZW5ndGggPSBULmxlbmd0aFxuICBlbmQpXG4iLCIoKiBbQnl0ZXMwXSBkZWZpbmVzIHN0cmluZyBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5XG4gICBkZWZpbmVkIGluIHRlcm1zIG9mIFtTdGRsaWIuQnl0ZXNdLiBbQnl0ZXMwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3NcbiAgIHRoZSBwYXJ0IG9mIFtTdGRsaWIuQnl0ZXNdIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyXG4gICB0aGFuIGJ5dGVzMC5tbCBzaG91bGQgdXNlIFtTdGRsaWIuQnl0ZXNdLiBbQnl0ZXMwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kXG4gICBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLlxuXG4gICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIHN0cmluZ3MgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkJ5dGVzXSBpblxuICAgYnVpbGQgb3JkZXIgc2hvdWxkIGRvOlxuXG4gICB7W1xuICAgICBtb2R1bGUgQnl0ZXMgID0gQnl0ZXMwXG4gICBdfVxuXG4gICBEZWZpbmluZyBbbW9kdWxlIEJ5dGVzID0gQnl0ZXMwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzXG4gICBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkJ5dGVzXS4gKilcblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIFN5cyA9IFN5czBcblxubW9kdWxlIFByaW1pdGl2ZXMgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgZ2V0IDogKGJ5dGVzW0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiAoYnl0ZXNbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2dldFxuICAgIDogIChieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGNoYXJcbiAgICA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuXG4gIGV4dGVybmFsIHNldFxuICAgIDogIChieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChjaGFyW0Bsb2NhbF9vcHRdKVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGNoYXJbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5cbiAgKCogW3Vuc2FmZV9ibGl0X3N0cmluZ10gaXMgbm90IGV4cG9ydGVkIGluIHRoZSBbc3RkbGliXSBzbyB3ZSBleHBvcnQgaXQgaGVyZSAqKVxuICBleHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmdcbiAgICA6ICBzcmM6KHN0cmluZ1tAbG9jYWxfb3B0XSlcbiAgICAtPiBzcmNfcG9zOmludFxuICAgIC0+IGRzdDooYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gZHN0X3BvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdFxuICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0X2ludDY0XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gaW50NjRcbiAgICA9IFwiJWNhbWxfYnl0ZXNfZ2V0NjR1XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0X2ludDY0XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludDY0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0X2ludDMyXG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gaW50MzJcbiAgICA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJ1XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0X2ludDMyXG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludDMyW0Bsb2NhbF9vcHRdKVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0X2ludDE2XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gaW50XG4gICAgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQxNlxuICAgIDogIChieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZW5kXG5cbmluY2x1ZGUgUHJpbWl0aXZlc1xuXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxubGV0IGJsaXQgPSBTdGRsaWIuQnl0ZXMuYmxpdFxubGV0IGJsaXRfc3RyaW5nID0gU3RkbGliLkJ5dGVzLmJsaXRfc3RyaW5nXG5sZXQgY29tcGFyZSA9IFN0ZGxpYi5CeXRlcy5jb21wYXJlXG5sZXQgY29weSA9IFN0ZGxpYi5CeXRlcy5jb3B5XG5sZXQgY3JlYXRlID0gU3RkbGliLkJ5dGVzLmNyZWF0ZVxuXG5leHRlcm5hbCB1bnNhZmVfY3JlYXRlX2xvY2FsIDogaW50IC0+IChieXRlc1tAbG9jYWxdKSA9IFwiQmFzZV91bnNhZmVfY3JlYXRlX2xvY2FsX2J5dGVzXCJcbltAQG5vYWxsb2NdXG5cbmxldCBjcmVhdGVfbG9jYWwgbGVuID1cbiAgXG4gICAgKGlmIGxlbiA+IFN5czAubWF4X3N0cmluZ19sZW5ndGggdGhlbiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmNyZWF0ZV9sb2NhbFwiO1xuICAgICB1bnNhZmVfY3JlYXRlX2xvY2FsIGxlbilcbjs7XG5cbmxldCBmaWxsID0gU3RkbGliLkJ5dGVzLmZpbGxcbmxldCBtYWtlID0gU3RkbGliLkJ5dGVzLm1ha2VcblxubGV0IG1hcCB0IH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IGwgPSBsZW5ndGggdCBpblxuICBpZiBsID0gMFxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgdCBpKSlcbiAgICBkb25lO1xuICAgIHIpXG47O1xuXG5sZXQgbWFwaSB0IH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgbCA9IGxlbmd0aCB0IGluXG4gIGlmIGwgPSAwXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IHQgaSkpXG4gICAgZG9uZTtcbiAgICByKVxuOztcblxubGV0IHN1YiA9IFN0ZGxpYi5CeXRlcy5zdWJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgOiAgc3JjOihieXRlc1tAbG9jYWxfb3B0XSlcbiAgLT4gc3JjX3BvczppbnRcbiAgLT4gZHN0OihieXRlc1tAbG9jYWxfb3B0XSlcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJjYW1sX2JsaXRfYnl0ZXNcIlxuW0BAbm9hbGxvY11cblxubGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5CeXRlcy50b19zdHJpbmdcbmxldCBvZl9zdHJpbmcgPSBTdGRsaWIuQnl0ZXMub2Zfc3RyaW5nXG5cbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmdcbiAgOiAgbm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooYnl0ZXNbQGxvY2FsX29wdF0pXG4gIC0+IChzdHJpbmdbQGxvY2FsX29wdF0pXG4gID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxuZXh0ZXJuYWwgdW5zYWZlX29mX3N0cmluZ19wcm9taXNlX25vX211dGF0aW9uXG4gIDogIChzdHJpbmdbQGxvY2FsX29wdF0pXG4gIC0+IChieXRlc1tAbG9jYWxfb3B0XSlcbiAgPSBcIiVieXRlc19vZl9zdHJpbmdcIlxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJsaXRfaW50ZlxuXG5tb2R1bGUgdHlwZSBTZXF1ZW5jZV9nZW4gPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGxlbmd0aCA6IChfIHRbQGxvY2FsXSkgLT4gaW50XG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuXG4gICAgKFNyYyA6IFNlcXVlbmNlX2dlbikgKERzdCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VfZ2VuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY3JlYXRlX2xpa2UgOiBsZW46aW50IC0+ICdhIFNyYy50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2EgU3JjLnQsICdhIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IHVuc2FmZV9ibGl0ID0gRHN0LnVuc2FmZV9ibGl0XG5cbiAgbGV0IGJsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgIH5wb3M6c3JjX3Bvc1xuICAgICAgfmxlblxuICAgICAgfnRvdGFsX2xlbmd0aDooU3JjLmxlbmd0aCBzcmMpO1xuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgIH5wb3M6ZHN0X3Bvc1xuICAgICAgfmxlblxuICAgICAgfnRvdGFsX2xlbmd0aDooRHN0Lmxlbmd0aCBkc3QpO1xuICAgIGlmIGxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlblxuICA7O1xuXG4gIGxldCBibGl0b1xuICAgICAgICB+c3JjXG4gICAgICAgID8oc3JjX3BvcyA9IDApXG4gICAgICAgID8oc3JjX2xlbiA9IFNyYy5sZW5ndGggc3JjIC0gc3JjX3BvcylcbiAgICAgICAgfmRzdFxuICAgICAgICA/KGRzdF9wb3MgPSAwKVxuICAgICAgICAoKVxuICAgID1cbiAgICBibGl0IH5zcmMgfnNyY19wb3MgfmxlbjpzcmNfbGVuIH5kc3QgfmRzdF9wb3NcbiAgOztcblxuICAoKiBbc3ViXSBhbmQgW3N1Ym9dIGVuc3VyZSB0aGF0IGV2ZXJ5IHBvc2l0aW9uIG9mIHRoZSBjcmVhdGVkIHNlcXVlbmNlIGlzIHBvcHVsYXRlZCBieVxuICAgICBhbiBlbGVtZW50IG9mIHRoZSBzb3VyY2UgYXJyYXkuICBUaHVzIGV2ZXJ5IGVsZW1lbnQgb2YgW2RzdF0gYmVsb3cgaXMgd2VsbFxuICAgICBkZWZpbmVkLiAqKVxuICBsZXQgc3ViIHNyYyB+cG9zIH5sZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg6KFNyYy5sZW5ndGggc3JjKTtcbiAgICBsZXQgZHN0ID0gRHN0LmNyZWF0ZV9saWtlIH5sZW4gc3JjIGluXG4gICAgaWYgbGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3M6cG9zIH5kc3QgfmRzdF9wb3M6MCB+bGVuO1xuICAgIGRzdFxuICA7O1xuXG4gIGxldCBzdWJvID8ocG9zID0gMCkgP2xlbiBzcmMgPVxuICAgIHN1YlxuICAgICAgc3JjXG4gICAgICB+cG9zXG4gICAgICB+bGVuOlxuICAgICAgICAobWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICAgIHwgTm9uZSAtPiBTcmMubGVuZ3RoIHNyYyAtIHBvcylcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFNlcXVlbmNlIDogc2lnXG4gICAgaW5jbHVkZSBTZXF1ZW5jZV9nZW5cblxuICAgIHZhbCBjcmVhdGVfbGlrZSA6IGxlbjppbnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHQsICdhIHQpIGJsaXRcbiAgZW5kKSA9XG4gIE1ha2VfZ2VuIChTZXF1ZW5jZSkgKFNlcXVlbmNlKVxuXG5tb2R1bGUgTWFrZTFfZ2VuZXJpYyAoU2VxdWVuY2UgOiBTZXF1ZW5jZTEpID0gTWFrZV9nZW4gKFNlcXVlbmNlKSAoU2VxdWVuY2UpXG5cbm1vZHVsZSBNYWtlIChTZXF1ZW5jZSA6IHNpZ1xuICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+IHRcbiAgICB2YWwgdW5zYWZlX2JsaXQgOiAodCwgdCkgYmxpdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgU2VxdWVuY2UgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBTZXF1ZW5jZS50XG5cbiAgICBvcGVuIFNlcXVlbmNlXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiBfID0gY3JlYXRlIH5sZW5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kXG5cbiAgaW5jbHVkZSBNYWtlX2dlbiAoU2VxdWVuY2UpIChTZXF1ZW5jZSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9kaXN0aW5jdFxuICAgIChTcmMgOiBTZXF1ZW5jZSkgKERzdCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAoU3JjLnQsIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgTWFrZV9nZW5cbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBTcmMudFxuXG4gICAgICBvcGVuIFNyY1xuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IERzdC50XG5cbiAgICAgIG9wZW4gRHN0XG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgICBlbmQpXG5cbm1vZHVsZSBNYWtlX3RvX3N0cmluZyAoVCA6IHNpZ1xuICAgIHR5cGUgdFxuICBlbmQpXG4gICAgKFRvX2J5dGVzIDogU19kaXN0aW5jdCB3aXRoIHR5cGUgc3JjIDo9IFQudCB3aXRoIHR5cGUgZHN0IDo9IGJ5dGVzKSA9XG5zdHJ1Y3RcbiAgb3BlbiBUb19ieXRlc1xuXG4gIGxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gICAgQnl0ZXMwLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KHN1YiBzcmMgfnBvcyB+bGVuKVxuICA7O1xuXG4gIGxldCBzdWJvID9wb3MgP2xlbiBzcmMgPVxuICAgIEJ5dGVzMC51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihzdWJvID9wb3MgP2xlbiBzcmMpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBFaXRoZXJfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBFaXRoZXIwXG5cbmxldCBzd2FwID0gZnVuY3Rpb25cbiAgfCBGaXJzdCB4IC0+IFNlY29uZCB4XG4gIHwgU2Vjb25kIHggLT4gRmlyc3QgeFxuOztcblxubGV0IGlzX2ZpcnN0ID0gZnVuY3Rpb25cbiAgfCBGaXJzdCBfIC0+IHRydWVcbiAgfCBTZWNvbmQgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3NlY29uZCA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgXyAtPiBmYWxzZVxuICB8IFNlY29uZCBfIC0+IHRydWVcbjs7XG5cbmxldCB2YWx1ZSAoRmlyc3QgeCB8IFNlY29uZCB4KSA9IHhcblxubGV0IHZhbHVlX21hcCB0IH5maXJzdCB+c2Vjb25kID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRmlyc3QgeCAtPiBmaXJzdCB4XG4gIHwgU2Vjb25kIHggLT4gc2Vjb25kIHhcbjs7XG5cbmxldCBpdGVyID0gdmFsdWVfbWFwXG5cbmxldCBtYXAgdCB+Zmlyc3QgfnNlY29uZCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEZpcnN0IHggLT4gRmlyc3QgKGZpcnN0IHgpXG4gIHwgU2Vjb25kIHggLT4gU2Vjb25kIChzZWNvbmQgeClcbjs7XG5cbmxldCBmaXJzdCB4ID0gRmlyc3QgeFxubGV0IHNlY29uZCB4ID0gU2Vjb25kIHhcblxubGV0IGVxdWFsIGVxMSBlcTIgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IEZpcnN0IHgsIEZpcnN0IHkgLT4gZXExIHggeVxuICB8IFNlY29uZCB4LCBTZWNvbmQgeSAtPiBlcTIgeCB5XG4gIHwgRmlyc3QgXywgU2Vjb25kIF8gfCBTZWNvbmQgXywgRmlyc3QgXyAtPiBmYWxzZVxuOztcblxubGV0IGludmFyaWFudCBmIHMgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gZiB4XG4gIHwgU2Vjb25kIHkgLT4gcyB5XG47O1xuXG5tb2R1bGUgRm9jdXMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IEZvY3VzIG9mIHsgdmFsdWUgOiAnYSBbQGdsb2JhbF0gfVxuICAgIHwgT3RoZXIgb2YgeyB2YWx1ZSA6ICdiIFtAZ2xvYmFsXSB9XG5lbmRcblxubW9kdWxlIE1ha2VfZm9jdXNlZCAoTSA6IHNpZ1xuICAgIHR5cGUgKCsnYSwgKydiKSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gICAgdmFsIG90aGVyIDogJ2IgLT4gKF8sICdiKSB0XG4gICAgdmFsIGZvY3VzIDogKCdhLCAnYikgdCAtPiAoKCdhLCAnYikgRm9jdXMudFtAbG9jYWxdKVxuXG4gICAgdmFsIGNvbWJpbmVcbiAgICAgIDogICgnYSwgJ2QpIHRcbiAgICAgIC0+ICgnYiwgJ2QpIHRcbiAgICAgIC0+IGY6KCgnYSAtPiAnYiAtPiAnYylbQGxvY2FsXSlcbiAgICAgIC0+IG90aGVyOigoJ2QgLT4gJ2QgLT4gJ2QpW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2MsICdkKSB0XG5cbiAgICB2YWwgYmluZCA6ICgnYSwgJ2IpIHQgLT4gZjooKCdhIC0+ICgnYywgJ2IpIHQpW0Bsb2NhbF0pIC0+ICgnYywgJ2IpIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNXG4gIG9wZW4gV2l0aF9yZXR1cm5cblxuICBsZXQgbWFwIHQgfmYgPVxuICAgIGxldCByZXMgPSBiaW5kIHQgfmY6KGZ1biB4IC0+IHJldHVybiAoZiB4KSkgaW5cbiAgICByZXNcbiAgOztcblxuICBpbmNsdWRlIE1vbmFkLk1ha2UyX2xvY2FsIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBBcHAgPSBBcHBsaWNhdGl2ZS5NYWtlMl91c2luZ19tYXAyX2xvY2FsIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuXG4gICAgICBsZXQgbWFwMiA6ICgnYSwgJ3gpIHQgLT4gKCdiLCAneCkgdCAtPiBmOigoJ2EgLT4gJ2IgLT4gJ2MpW0Bsb2NhbF0pIC0+ICgnYywgJ3gpIHQgPVxuICAgICAgICBmdW4gdDEgdDIgfmYgLT5cbiAgICAgICAgYmluZCB0MSB+ZjooZnVuIHggLT4gYmluZCB0MiB+ZjooZnVuIHkgLT4gcmV0dXJuIChmIHggeSkpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQXBwXG5cbiAgbGV0IGNvbWJpbmVfYWxsID1cbiAgICBsZXQgcmVjIG90aGVyX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBvdGhlciBhY2NcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICAobWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgICAgICB8IEZvY3VzIF8gLT4gb3RoZXJfbG9vcCBmIGFjYyB0c1xuICAgICAgICAgfCBPdGhlciBvIC0+IG90aGVyX2xvb3AgZiAoZiBhY2Mgby52YWx1ZSkgdHMpXG4gICAgaW5cbiAgICBsZXQgcmVjIHJldHVybl9sb29wIGYgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiBhY2MpXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgKG1hdGNoIGZvY3VzIHQgd2l0aFxuICAgICAgICAgfCBGb2N1cyB4IC0+IHJldHVybl9sb29wIGYgKHgudmFsdWUgOjogYWNjKSB0c1xuICAgICAgICAgfCBPdGhlciBvIC0+IG90aGVyX2xvb3AgZiBvLnZhbHVlIHRzKVxuICAgIGluXG4gICAgZnVuIHRzIH5mIC0+IHJldHVybl9sb29wIGYgW10gdHNcbiAgOztcblxuICBsZXQgY29tYmluZV9hbGxfdW5pdCA9XG4gICAgbGV0IHJlYyBvdGhlcl9sb29wIGYgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gb3RoZXIgYWNjXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgKG1hdGNoIGZvY3VzIHQgd2l0aFxuICAgICAgICAgfCBGb2N1cyBfIC0+IG90aGVyX2xvb3AgZiBhY2MgdHNcbiAgICAgICAgIHwgT3RoZXIgbyAtPiBvdGhlcl9sb29wIGYgKGYgYWNjIG8udmFsdWUpIHRzKVxuICAgIGluXG4gICAgbGV0IHJlYyByZXR1cm5fbG9vcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgKG1hdGNoIGZvY3VzIHQgd2l0aFxuICAgICAgICAgfCBGb2N1cyB7IHZhbHVlID0gKCkgfSAtPiByZXR1cm5fbG9vcCBmIHRzXG4gICAgICAgICB8IE90aGVyIHsgdmFsdWUgPSBvIH0gLT4gb3RoZXJfbG9vcCBmIG8gdHMpXG4gICAgaW5cbiAgICBmdW4gdHMgfmYgLT4gcmV0dXJuX2xvb3AgZiB0c1xuICA7O1xuXG4gIGxldCB0b19vcHRpb24gdCA9XG4gICAgbWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgfCBGb2N1cyB4IC0+IFNvbWUgeC52YWx1ZVxuICAgIHwgT3RoZXIgXyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIGZvY3VzIHQgd2l0aFxuICAgIHwgRm9jdXMgeCAtPiB4LnZhbHVlXG4gICAgfCBPdGhlciBfIC0+IGRlZmF1bHRcbiAgOztcblxuICBsZXQgd2l0aF9yZXR1cm4gZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByZXQgLT4gb3RoZXIgKGYgKFdpdGhfcmV0dXJuLnByZXBlbmQgcmV0IH5mOnJldHVybikpKSBbQG5vbnRhaWxdXG4gIDs7XG5lbmRcblxubW9kdWxlIEZpcnN0ID0gTWFrZV9mb2N1c2VkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICAgbGV0IHJldHVybiA9IGZpcnN0XG4gICAgbGV0IG90aGVyID0gc2Vjb25kXG5cbiAgICBsZXQgZm9jdXMgdCA6IF8gRm9jdXMudCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRmlyc3QgeCAtPiBGb2N1cyB7IHZhbHVlID0geCB9XG4gICAgICB8IFNlY29uZCB5IC0+IE90aGVyIHsgdmFsdWUgPSB5IH1cbiAgICA7O1xuXG4gICAgbGV0IGNvbWJpbmUgdDEgdDIgfmYgfm90aGVyID1cbiAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICB8IEZpcnN0IHgsIEZpcnN0IHkgLT4gRmlyc3QgKGYgeCB5KVxuICAgICAgfCBTZWNvbmQgeCwgU2Vjb25kIHkgLT4gU2Vjb25kIChvdGhlciB4IHkpXG4gICAgICB8IFNlY29uZCB4LCBfIHwgXywgU2Vjb25kIHggLT4gU2Vjb25kIHhcbiAgICA7O1xuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRmlyc3QgeCAtPiBmIHhcbiAgICAgICgqIFJldXNlIHRoZSB2YWx1ZSBpbiBvcmRlciB0byBhdm9pZCBhbGxvY2F0aW9uLiAqKVxuICAgICAgfCBTZWNvbmQgXyBhcyB5IC0+IHlcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBTZWNvbmQgPSBNYWtlX2ZvY3VzZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2IsICdhKSB0XG5cbiAgICBsZXQgcmV0dXJuID0gc2Vjb25kXG4gICAgbGV0IG90aGVyID0gZmlyc3RcblxuICAgIGxldCBmb2N1cyB0IDogXyBGb2N1cy50ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBTZWNvbmQgeCAtPiBGb2N1cyB7IHZhbHVlID0geCB9XG4gICAgICB8IEZpcnN0IHkgLT4gT3RoZXIgeyB2YWx1ZSA9IHkgfVxuICAgIDs7XG5cbiAgICBsZXQgY29tYmluZSB0MSB0MiB+ZiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgU2Vjb25kIHgsIFNlY29uZCB5IC0+IFNlY29uZCAoZiB4IHkpXG4gICAgICB8IEZpcnN0IHgsIEZpcnN0IHkgLT4gRmlyc3QgKG90aGVyIHggeSlcbiAgICAgIHwgRmlyc3QgeCwgXyB8IF8sIEZpcnN0IHggLT4gRmlyc3QgeFxuICAgIDs7XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBTZWNvbmQgeCAtPiBmIHhcbiAgICAgICgqIFJldXNlIHRoZSB2YWx1ZSBpbiBvcmRlciB0byBhdm9pZCBhbGxvY2F0aW9uLCBsaWtlIFtGaXJzdC5iaW5kXSBhYm92ZS4gKilcbiAgICAgIHwgRmlyc3QgXyBhcyB5IC0+IHlcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2YsICdzKSBfZWl0aGVyID0gKCdmLCAncykgdCA9XG4gICAgfCBGaXJzdCBvZiAnZlxuICAgIHwgU2Vjb25kIG9mICdzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBvcHRpb24gW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX29wdGlvblxuXG4gIGxldCBnbG9iYWxpemUgOiAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdCA9XG4gICAgZnVuICh0eXBlIGFfXzAwNV8pXG4gICAgICAgIDogKCgoYV9fMDA1X1tAb2NhbWwubG9jYWxdKSAtPiBhX18wMDVfKSAtPiAoYV9fMDA1XyB0W0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwNV8gdCkgLT5cbiAgICAgIGdsb2JhbGl6ZV9vcHRpb25cbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX3QgOlxuICAgICdhLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+ICdhIHRcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgaGFzaF9mb2xkX29wdGlvblxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICAgIG9wdGlvbl9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgc2V4cF9vZl9vcHRpb25cbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gb3B0aW9uX3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgZ2xvYmFsaXplIDogKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdFxuXG4gIGluY2x1ZGUgUHB4X2hhc2hfbGliLkhhc2hhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmQpXG5cbnR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9XG4gIHwgTm9uZVxuICB8IFNvbWUgb2YgJ2FcblxubGV0IGlzX25vbmUgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19zb21lID0gZnVuY3Rpb25cbiAgfCBTb21lIF8gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCB2YWx1ZV9tYXAgbyB+ZGVmYXVsdCB+ZiA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IFNvbWUgeCAtPiBmIHhcbiAgfCBOb25lIC0+IGRlZmF1bHRcbjs7XG5cbmxldCBpdGVyIG8gfmYgPVxuICBtYXRjaCBvIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBhIC0+IGYgYVxuOztcblxubGV0IGludmFyaWFudCBmIHQgPSBpdGVyIHQgfmZcblxubGV0IGNhbGwgeCB+ZiA9XG4gIG1hdGNoIGYgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGYgLT4gZiB4XG47O1xuXG5sZXQgdmFsdWUgdCB+ZGVmYXVsdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gZGVmYXVsdFxuICB8IFNvbWUgeCAtPiB4XG47O1xuXG5sZXQgdmFsdWVfZXhuID9oZXJlID9lcnJvciA/bWVzc2FnZSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+XG4gICAgbGV0IGVycm9yID1cbiAgICAgIG1hdGNoIGhlcmUsIGVycm9yLCBtZXNzYWdlIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSwgTm9uZSAtPiBFcnJvci5vZl9zdHJpbmcgXCJPcHRpb24udmFsdWVfZXhuIE5vbmVcIlxuICAgICAgfCBOb25lLCBOb25lLCBTb21lIG0gLT4gRXJyb3Iub2Zfc3RyaW5nIG1cbiAgICAgIHwgTm9uZSwgU29tZSBlLCBOb25lIC0+IGVcbiAgICAgIHwgTm9uZSwgU29tZSBlLCBTb21lIG0gLT4gRXJyb3IudGFnIGUgfnRhZzptXG4gICAgICB8IFNvbWUgcCwgTm9uZSwgTm9uZSAtPlxuICAgICAgICBFcnJvci5jcmVhdGUgXCJPcHRpb24udmFsdWVfZXhuXCIgcCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90XG4gICAgICB8IFNvbWUgcCwgTm9uZSwgU29tZSBtIC0+IEVycm9yLmNyZWF0ZSBtIHAgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdFxuICAgICAgfCBTb21lIHAsIFNvbWUgZSwgXyAtPlxuICAgICAgICBFcnJvci5jcmVhdGVcbiAgICAgICAgICAodmFsdWUgbWVzc2FnZSB+ZGVmYXVsdDpcIlwiKVxuICAgICAgICAgIChlLCBwKVxuICAgICAgICAgIChzZXhwX29mX3BhaXIgRXJyb3Iuc2V4cF9vZl90IFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3QpXG4gICAgaW5cbiAgICBFcnJvci5yYWlzZSBlcnJvclxuOztcblxubGV0IHZhbHVlX29yX3RodW5rIG8gfmRlZmF1bHQgPVxuICBtYXRjaCBvIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT4gZGVmYXVsdCAoKVxuOztcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IFt8fF1cbiAgfCBTb21lIHggLT4gW3wgeCB8XVxuOztcblxubGV0IHRvX2xpc3QgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gW11cbiAgfCBTb21lIHggLT4gWyB4IF1cbjs7XG5cbmxldCBtaW5fZWx0IHQgfmNvbXBhcmU6XyA9IHRcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmU6XyA9IHRcblxubGV0IHN1bSAodHlwZSBhKSAobW9kdWxlIE0gOiBDb250YWluZXIuU3VtbWFibGUgd2l0aCB0eXBlIHQgPSBhKSB0IH5mID1cbiAgdmFsdWVfbWFwIHQgfmRlZmF1bHQ6TS56ZXJvIH5mXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSB4IC0+IGYgeFxuOztcblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgeCAtPiBmIHhcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGEnIC0+IGVxdWFsIGEgYSdcbjs7XG5cbmxldCBsZW5ndGggdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgXyAtPiAxXG47O1xuXG5sZXQgaXNfZW1wdHkgPSBpc19ub25lXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIHggLT4gZiBpbml0IHhcbjs7XG5cbmxldCBjb3VudCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBhIC0+IGlmIGYgYSB0aGVuIDEgZWxzZSAwXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB4IC0+IGlmIGYgeCB0aGVuIHQgZWxzZSBOb25lXG47O1xuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYSAtPiBmIGFcbjs7XG5cbmxldCBlcXVhbCBmIHQgdCcgPVxuICBtYXRjaCB0LCB0JyB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSB4LCBTb21lIHgnIC0+IGYgeCB4J1xuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBzb21lIHggPSBTb21lIHhcblxubGV0IGZpcnN0X3NvbWUgeCB5ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU29tZSBfIC0+IHhcbiAgfCBOb25lIC0+IHlcbjs7XG5cbmxldCBzb21lX2lmIGNvbmQgeCA9IGlmIGNvbmQgdGhlbiBTb21lIHggZWxzZSBOb25lXG5cbmxldCBtZXJnZSBhIGIgfmYgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb25lLCB4IHwgeCwgTm9uZSAtPiB4XG4gIHwgU29tZSBhLCBTb21lIGIgLT4gU29tZSAoZiBhIGIpXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTb21lIHYgYXMgbyB3aGVuIGYgdiAtPiBvXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgdHJ5X3dpdGggZiA9XG4gIG1hdGNoIGYgKCkgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gZiA9XG4gIG1hdGNoIGYgKCkgd2l0aFxuICB8IHggLT4geFxuICB8IGV4Y2VwdGlvbiBfIC0+IE5vbmVcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYSAtPiBTb21lIChmIGEpXG47O1xuXG5tb2R1bGUgTW9uYWRfYXJnID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvblxuXG4gIGxldCByZXR1cm4geCA9IFNvbWUgeFxuICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcblxuICBsZXQgYmluZCBvIH5mID1cbiAgICBtYXRjaCBvIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICA7O1xuZW5kXG5cbmluY2x1ZGUgTW9uYWQuTWFrZV9sb2NhbCAoTW9uYWRfYXJnKVxuXG5tb2R1bGUgQXBwbGljYXRpdmVfYXJnID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvblxuXG4gIGxldCByZXR1cm4geCA9IFNvbWUgeFxuICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcblxuICBsZXQgbWFwMiB4IHkgfmYgPVxuICAgIG1hdGNoIHgsIHkgd2l0aFxuICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB4LCBTb21lIHkgLT4gU29tZSAoZiB4IHkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlX3VzaW5nX21hcDJfbG9jYWwgKEFwcGxpY2F0aXZlX2FyZylcblxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQm9vbDBcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYm9vbFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2Jvb2wgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgZmFsc2U7IHRydWUgXSA6IHQgbGlzdClcbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfYm9vbCA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9ib29sXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9ib29sIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChib29sX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2Jvb2wgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gYm9vbF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cblxuICBsZXQgb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICAgIHwgcyAtPiBpbnZhbGlkX2FyZ2YgXCJCb29sLm9mX3N0cmluZzogZXhwZWN0ZWQgdHJ1ZSBvciBmYWxzZSBidXQgZ290ICVzXCIgcyAoKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSBTdGRsaWIuc3RyaW5nX29mX2Jvb2xcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5Cb29sXCJcbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBCb29sX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0IHRvX2ludCB4ID0gYm9vbF90b19pbnQgeFxuXG5tb2R1bGUgTm9uX3Nob3J0X2NpcmN1aXRpbmcgPSBzdHJ1Y3RcbiAgKCogV2UgZG9uJ3QgZXhwb3NlIHRoaXMsIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgdGhlIGludmFyaWFudCBtZW50aW9uZWQgYmVsb3cgb2ZcbiAgICAgKHRvX2ludCB0cnVlID0gMSkgYW5kICh0b19pbnQgZmFsc2UgPSAwKS4gKilcbiAgbGV0IHVuc2FmZV9vZl9pbnQgKHggOiBpbnQpIDogYm9vbCA9IFN0ZGxpYi5PYmoubWFnaWMgeFxuICBsZXQgKCB8fCApIGEgYiA9IHVuc2FmZV9vZl9pbnQgKHRvX2ludCBhIGxvciB0b19pbnQgYilcbiAgbGV0ICggJiYgKSBhIGIgPSB1bnNhZmVfb2ZfaW50ICh0b19pbnQgYSBsYW5kIHRvX2ludCBiKVxuZW5kXG5cbigqIFdlIGRvIHRoaXMgYXMgYSBkaXJlY3QgYXNzZXJ0IG9uIHRoZSB0aGVvcnkgdGhhdCBpdCdzIGEgY2hlYXAgdGhpbmcgdG8gdGVzdCBhbmQgYVxuICAgcmVhbGx5IGNvcmUgaW52YXJpYW50IHRoYXQgd2UgbmV2ZXIgZXhwZWN0IHRvIGJyZWFrLCBhbmQgd2Ugc2hvdWxkIGJlIGhhcHB5IGZvciBhXG4gICBwcm9ncmFtIHRvIGZhaWwgaW1tZWRpYXRlbHkgaWYgdGhpcyBpcyB2aW9sYXRlZC4gKilcbmxldCAoKSA9IGFzc2VydCAoUG9seS4oID0gKSAodG9faW50IHRydWUpIDEgJiYgUG9seS4oID0gKSAodG9faW50IGZhbHNlKSAwKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQm9vbF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm1vZHVsZSBMaXN0ID0gTGlzdFxuXG5tb2R1bGUgRW51bWVyYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgYWxsIDogdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gKCdhLCAnYikgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAnYyBsaXN0IC0+ICgnYSwgJ2IsICdjKSB0IGxpc3RcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb250YWluZXJfaW50Zi5FeHBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIExpc3QgPSBMaXN0MVxuXG5tb2R1bGUgU3RlcCA9IHN0cnVjdFxuICAoKiAnYSBpcyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSwgJ3MgaXMgdGhlIHN0YXRlIHRoYXQgd2lsbCBwcm9kdWNlIHRoZSByZW1haW5kZXIgb2ZcbiAgICAgdGhlIHNlcXVlbmNlICopXG4gIHR5cGUgKCdhLCAncykgdCA9XG4gICAgfCBEb25lXG4gICAgfCBTa2lwIG9mIHsgc3RhdGUgOiAncyB9XG4gICAgfCBZaWVsZCBvZlxuICAgICAgICB7IHZhbHVlIDogJ2FcbiAgICAgICAgOyBzdGF0ZSA6ICdzXG4gICAgICAgIH1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2EgJ3MuXG4gICAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ3MgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYSwgJ3MpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuICh0eXBlIGFfXzAxMV8gc19fMDEyXylcbiAgICAgICAgOiAgKChhX18wMTFfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKHNfXzAxMl8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgICAgLT4gKGFfXzAxMV8sIHNfXzAxMl8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgICAgZnVuIF9vZl9hX18wMDFfIF9vZl9zX18wMDJfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgRG9uZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJEb25lXCJcbiAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzdGF0ZV9fMDA0XyB9IC0+XG4gICAgICAgICAgbGV0IGJuZHNfXzAwM18gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICAgICAgbGV0IGFyZ19fMDA1XyA9IF9vZl9zX18wMDJfIHN0YXRlX18wMDRfIGluXG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhdGVcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJTa2lwXCIgOjogYm5kc19fMDAzXylcbiAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gdmFsdWVfXzAwN187IHN0YXRlID0gc3RhdGVfXzAwOV8gfSAtPlxuICAgICAgICAgIGxldCBibmRzX18wMDZfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgICAgIGxldCBibmRzX18wMDZfID1cbiAgICAgICAgICAgIGxldCBhcmdfXzAxMF8gPSBfb2Zfc19fMDAyXyBzdGF0ZV9fMDA5XyBpblxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInN0YXRlXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwNl9cbiAgICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBibmRzX18wMDZfID1cbiAgICAgICAgICAgIGxldCBhcmdfXzAwOF8gPSBfb2ZfYV9fMDAxXyB2YWx1ZV9fMDA3XyBpblxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInZhbHVlXCI7IGFyZ19fMDA4XyBdIDo6IGJuZHNfXzAwNl9cbiAgICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgICBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiWWllbGRcIiA6OiBibmRzX18wMDZfKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxub3BlbiBTdGVwXG5cbigqICdhIGlzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlLCAncyBpcyB0aGUgc3RhdGUgdGhhdCB3aWxsIHByb2R1Y2UgdGhlIHJlbWFpbmRlciBvZiB0aGVcbiAgIHNlcXVlbmNlICopXG50eXBlICtfIHQgPVxuICB8IFNlcXVlbmNlIDpcbiAgICAgIHsgc3RhdGUgOiAnc1xuICAgICAgOyBuZXh0IDogJ3MgLT4gKCdhLCAncykgU3RlcC50XG4gICAgICB9XG4gICAgICAtPiAnYSB0XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IG5leHRfc3RlcCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgPSBmIH0pID1cbiAgICBtYXRjaCBmIHMgd2l0aFxuICAgIHwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgPSBmIH0gfVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSB9XG4gIDs7XG5cbiAgbGV0IGRlbGF5ZWRfZm9sZF9zdGVwIHMgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBsb29wIHMgbmV4dCBmaW5pc2ggZiBhY2MgPVxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBmaW5pc2ggYWNjXG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBmIGFjYyBOb25lIH5rOihsb29wIHMgbmV4dCBmaW5pc2ggZilcbiAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IGYgYWNjIChTb21lIGEpIH5rOihsb29wIHMgbmV4dCBmaW5pc2ggZilcbiAgICBpblxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIHMgbmV4dCBmaW5pc2ggZiBpbml0XG4gIDs7XG5lbmRcblxubGV0IHVuZm9sZF9zdGVwIH5pbml0IH5mID0gU2VxdWVuY2UgeyBzdGF0ZSA9IGluaXQ7IG5leHQgPSBmIH1cblxubGV0IHVuZm9sZCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF9zdGVwIH5pbml0IH5mOihmdW4gcyAtPlxuICAgIG1hdGNoIGYgcyB3aXRoXG4gICAgfCBOb25lIC0+IFN0ZXAuRG9uZVxuICAgIHwgU29tZSAoYSwgcykgLT4gU3RlcC5ZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0pXG47O1xuXG5sZXQgdW5mb2xkX3dpdGggcyB+aW5pdCB+ZiA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGluaXQsIHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biAoc2VlZCwgcykgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gc2VlZCwgcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgICAgICAgIChtYXRjaCBmIHNlZWQgYSB3aXRoXG4gICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHNlZWQgfSAtPiBTa2lwIHsgc3RhdGUgPSBzZWVkLCBzIH1cbiAgICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHNlZWQgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzZWVkLCBzIH0pKVxuICAgICAgfVxuOztcblxubGV0IHVuZm9sZF93aXRoX2FuZF9maW5pc2ggcyB+aW5pdCB+cnVubmluZ19zdGVwIH5pbm5lcl9maW5pc2hlZCB+ZmluaXNoaW5nX3N0ZXAgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBgSW5uZXJfcnVubmluZyAoaW5pdCwgcylcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biBzdGF0ZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgICAgICB8IGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpIC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBpbm5lcl9zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBEb25lIC0+IFNraXAgeyBzdGF0ZSA9IGBJbm5lcl9maW5pc2hlZCAoaW5uZXJfZmluaXNoZWQgc3RhdGUpIH1cbiAgICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IGlubmVyX3N0YXRlIH0gLT5cbiAgICAgICAgICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpIH1cbiAgICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IGlubmVyX3N0YXRlIH0gLT5cbiAgICAgICAgICAgICAgICAgIChtYXRjaCBydW5uaW5nX3N0ZXAgc3RhdGUgeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSB9IC0+IFNraXAgeyBzdGF0ZSA9IGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpIH1cbiAgICAgICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB5OyBzdGF0ZSB9IC0+XG4gICAgICAgICAgICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0geTsgc3RhdGUgPSBgSW5uZXJfcnVubmluZyAoc3RhdGUsIGlubmVyX3N0YXRlKSB9KSlcbiAgICAgICAgICAgICB8IGBJbm5lcl9maW5pc2hlZCBzdGF0ZSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIGZpbmlzaGluZ19zdGVwIHN0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlIH0gLT4gU2tpcCB7IHN0YXRlID0gYElubmVyX2ZpbmlzaGVkIHN0YXRlIH1cbiAgICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB5OyBzdGF0ZSB9IC0+XG4gICAgICAgICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0geTsgc3RhdGUgPSBgSW5uZXJfZmluaXNoZWQgc3RhdGUgfSkpXG4gICAgICB9XG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6bCB+ZjooZnVuY3Rpb25cbiAgICB8IFtdIC0+IERvbmVcbiAgICB8IHggOjogbCAtPiBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBsIH0pXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIHNlZWQgdiBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgfCBEb25lIC0+IHZcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgdiBuZXh0IGZcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgKGYgdiBhKSBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgaW5pdCBuZXh0IGZcbjs7XG5cbmxldCB0b19saXN0X3JldiB0ID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gbCB4IC0+IHggOjogbClcblxuXG5sZXQgdG9fbGlzdCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgPVxuICBsZXQgc2FmZV90b19saXN0IHQgPSBMaXN0LnJldiAodG9fbGlzdF9yZXYgdCkgaW5cbiAgbGV0IHJlYyB0b19saXN0IHMgbmV4dCBpID1cbiAgICBpZiBpID0gMFxuICAgIHRoZW4gc2FmZV90b19saXN0IChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBbXVxuICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gdG9fbGlzdCBzIG5leHQgaVxuICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gYSA6OiB0b19saXN0IHMgbmV4dCAoaSAtIDEpKVxuICBpblxuICB0b19saXN0IHMgbmV4dCA1MDBcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5cbmxldCByYW5nZSA/KHN0cmlkZSA9IDEpID8oc3RhcnQgPSBgaW5jbHVzaXZlKSA/KHN0b3AgPSBgZXhjbHVzaXZlKSBzdGFydF92IHN0b3BfdiA9XG4gIGxldCBzdGVwID1cbiAgICBtYXRjaCBzdG9wIHdpdGhcbiAgICB8IGBpbmNsdXNpdmUgd2hlbiBzdHJpZGUgPj0gMCAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA+IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCB7IHZhbHVlID0gaTsgc3RhdGUgPSBpICsgc3RyaWRlIH1cbiAgICB8IGBpbmNsdXNpdmUgLT5cbiAgICAgIGZ1biBpIC0+IGlmIGkgPCBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGk7IHN0YXRlID0gaSArIHN0cmlkZSB9XG4gICAgfCBgZXhjbHVzaXZlIHdoZW4gc3RyaWRlID49IDAgLT5cbiAgICAgIGZ1biBpIC0+IGlmIGkgPj0gc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIHsgdmFsdWUgPSBpOyBzdGF0ZSA9IGkgKyBzdHJpZGUgfVxuICAgIHwgYGV4Y2x1c2l2ZSAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA8PSBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGk7IHN0YXRlID0gaSArIHN0cmlkZSB9XG4gIGluXG4gIGxldCBpbml0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBgaW5jbHVzaXZlIC0+IHN0YXJ0X3ZcbiAgICB8IGBleGNsdXNpdmUgLT4gc3RhcnRfdiArIHN0cmlkZVxuICBpblxuICB1bmZvbGRfc3RlcCB+aW5pdCB+ZjpzdGVwXG47O1xuXG5sZXQgb2ZfbGF6eSB0X2xhenkgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDp0X2xhenkgfmY6KGZ1biB0X2xhenkgLT5cbiAgICBsZXQgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pID0gTGF6eS5mb3JjZSB0X2xhenkgaW5cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT5cbiAgICAgIFNraXBcbiAgICAgICAgeyBzdGF0ZSA9XG4gICAgICAgICAgICAobGV0IHYgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IGluXG4gICAgICAgICAgICAgbGF6eSB2KVxuICAgICAgICB9XG4gICAgfCBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBzIH0gLT5cbiAgICAgIFlpZWxkXG4gICAgICAgIHsgdmFsdWUgPSB4XG4gICAgICAgIDsgc3RhdGUgPVxuICAgICAgICAgICAgKGxldCB2ID0gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSBpblxuICAgICAgICAgICAgIGxhenkgdilcbiAgICAgICAgfSlcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IHNlZWRcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biBzZWVkIC0+XG4gICAgICAgICAgICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBmIGE7IHN0YXRlID0gcyB9KVxuICAgICAgfVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IDAsIHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biAoaSwgcykgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSwgcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGYgaSBhOyBzdGF0ZSA9IGkgKyAxLCBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgZm9sZGluZ19tYXAgdCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF93aXRoIHQgfmluaXQgfmY6KGZ1biBhY2MgeCAtPlxuICAgIGxldCBhY2MsIHggPSBmIGFjYyB4IGluXG4gICAgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gYWNjIH0pXG47O1xuXG5sZXQgZm9sZGluZ19tYXBpIHQgfmluaXQgfmYgPVxuICB1bmZvbGRfd2l0aCB0IH5pbml0OigwLCBpbml0KSB+ZjooZnVuIChpLCBhY2MpIHggLT5cbiAgICBsZXQgYWNjLCB4ID0gZiBpIGFjYyB4IGluXG4gICAgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gaSArIDEsIGFjYyB9KVxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gc2VlZFxuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHNlZWQgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gd2hlbiBmIGEgLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9KVxuICAgICAgfVxuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIG1hcCB+ZjpzbmQgKGZpbHRlciAobWFwaSB0IH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcykpXG47O1xuXG5sZXQgbGVuZ3RoIHQgPVxuICBsZXQgcmVjIGxvb3AgaSBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGlcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIGkgcyBuZXh0XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gbG9vcCAoaSArIDEpIHMgbmV4dFxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3AgMCBzZWVkIG5leHRcbjs7XG5cbmxldCB0b19saXN0X3Jldl93aXRoX2xlbmd0aCB0ID0gZm9sZCB0IH5pbml0OihbXSwgMCkgfmY6KGZ1biAobCwgaSkgeCAtPiB4IDo6IGwsIGkgKyAxKVxuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIGxldCBsLCBsZW4gPSB0b19saXN0X3Jldl93aXRoX2xlbmd0aCB0IGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCB4IDo6IGwgLT5cbiAgICBsZXQgYSA9IEFycmF5LmNyZWF0ZSB+bGVuIHggaW5cbiAgICBsZXQgcmVjIGxvb3AgaSBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgKGkgPSAtMSlcbiAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGEuKGkpIDwtIHg7XG4gICAgICAgIGxvb3AgKGkgLSAxKSBsXG4gICAgaW5cbiAgICBsb29wIChsZW4gLSAyKSBsO1xuICAgIGFcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIGYgYSAtPiBTb21lIGFcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgKG1hdGNoIGYgYSB3aXRoXG4gICAgICAgfCBOb25lIC0+IGxvb3AgcyBuZXh0IGZcbiAgICAgICB8IHNvbWVfYiAtPiBzb21lX2IpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGkgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgKG1hdGNoIGYgaSBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBzIG5leHQgZiAoaSArIDEpXG4gICAgICAgfCBzb21lX2IgLT4gc29tZV9iKVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGYgaVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGYgMFxuOztcblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gdHJ1ZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gXyB9IHdoZW4gbm90IChmIGEpIC0+IGZhbHNlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGkgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IHRydWVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIG5vdCAoZiBpIGEpIC0+IGZhbHNlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiAoaSArIDEpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZhbHNlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gd2hlbiBmIGEgLT4gdHJ1ZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGkgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZhbHNlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gd2hlbiBmIGkgYSAtPiB0cnVlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiAoaSArIDEpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHNlZWQgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgIHwgRG9uZSAtPiAoKVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGZcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgZiBhO1xuICAgICAgbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBpc19lbXB0eSB0ID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gdHJ1ZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCBfIC0+IGZhbHNlXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHRcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgYSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IF8gfSB3aGVuIGVxdWFsIGEgYiAtPiB0cnVlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgYVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGEgW0Bub250YWlsXVxuOztcblxubGV0IGVtcHR5ID0gU2VxdWVuY2UgeyBzdGF0ZSA9ICgpOyBuZXh0ID0gKGZ1biAoKSAtPiBEb25lKSB9XG5cbmxldCBiaW5kIHQgfmYgPVxuICB1bmZvbGRfc3RlcFxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9LCByZXN0IC0+XG4gICAgICAgIChtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgfCBEb25lIC0+XG4gICAgICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICAgICAgICBTa2lwIHsgc3RhdGUgPSBlbXB0eSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICAgICAgICBTa2lwIHsgc3RhdGUgPSBmIGEsIFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gfSkpXG4gICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9LCByZXN0IH1cbiAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0sIHJlc3QgfSkpXG4gICAgfmluaXQ6KGVtcHR5LCB0KVxuOztcblxubGV0IHJldHVybiB4ID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6KFNvbWUgeCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IERvbmVcbiAgICB8IFNvbWUgeCAtPiBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBOb25lIH0pXG47O1xuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gIGVuZClcblxubGV0IG50aCBzIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGkgcyBuZXh0ID1cbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gTm9uZVxuICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBpIHMgbmV4dFxuICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBpIDAgdGhlbiBTb21lIGEgZWxzZSBsb29wIChpIC0gMSkgcyBuZXh0XG4gICAgaW5cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBuIHMgbmV4dClcbjs7XG5cbmxldCBudGhfZXhuIHMgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTZXF1ZW5jZS5udGhcIlxuICBlbHNlIChcbiAgICBtYXRjaCBudGggcyBuIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS5udGhcIlxuICAgIHwgU29tZSB4IC0+IHgpXG47O1xuXG5tb2R1bGUgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IExlZnQgb2YgJ2FcbiAgICB8IFJpZ2h0IG9mICdiXG4gICAgfCBCb3RoIG9mICdhICogJ2JcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2EgJ2IuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICgnYiAtPiAnYiAtPiBpbnQpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2EgX2NtcF9fYiBhX18wMTNfIGJfXzAxNF8gLT5cbiAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAxM18gYl9fMDE0X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDEzXywgYl9fMDE0XyB3aXRoXG4gICAgICB8IExlZnQgX2FfXzAxNV8sIExlZnQgX2JfXzAxNl8gLT4gX2NtcF9fYSBfYV9fMDE1XyBfYl9fMDE2X1xuICAgICAgfCBMZWZ0IF8sIF8gLT4gLTFcbiAgICAgIHwgXywgTGVmdCBfIC0+IDFcbiAgICAgIHwgUmlnaHQgX2FfXzAxN18sIFJpZ2h0IF9iX18wMThfIC0+IF9jbXBfX2IgX2FfXzAxN18gX2JfXzAxOF9cbiAgICAgIHwgUmlnaHQgXywgXyAtPiAtMVxuICAgICAgfCBfLCBSaWdodCBfIC0+IDFcbiAgICAgIHwgQm90aCAoX2FfXzAxOV8sIF9hX18wMjFfKSwgQm90aCAoX2JfXzAyMF8sIF9iX18wMjJfKSAtPlxuICAgICAgICAobWF0Y2ggX2NtcF9fYSBfYV9fMDE5XyBfYl9fMDIwXyB3aXRoXG4gICAgICAgICB8IDAgLT4gX2NtcF9fYiBfYV9fMDIxXyBfYl9fMDIyX1xuICAgICAgICAgfCBuIC0+IG4pKVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdFxuICAgIDogdHlwZSBhIGIuXG4gICAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGEgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBiIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgICAgLT4gKGEsIGIpIHRcbiAgICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBmdW4gX2hhc2hfZm9sZF9hIF9oYXNoX2ZvbGRfYiBoc3YgYXJnIC0+XG4gICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICAgfCBMZWZ0IF9hMCAtPlxuICAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgX2hhc2hfZm9sZF9hIGhzdiBfYTBcbiAgICAgIHwgUmlnaHQgX2EwIC0+XG4gICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMFxuICAgICAgfCBCb3RoIChfYTAsIF9hMSkgLT5cbiAgICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMiBpblxuICAgICAgICBsZXQgaHN2ID1cbiAgICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgICAgX2hhc2hfZm9sZF9hIGhzdiBfYTBcbiAgICAgICAgaW5cbiAgICAgICAgX2hhc2hfZm9sZF9iIGhzdiBfYTFcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnYSAnYi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdhLCAnYikgdFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDQ2XyBiX18wNDdfKVxuICAgICAgICA6ICAoKFNleHBsaWIwLlNleHAudCAtPiBhX18wNDZfKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+IGJfXzA0N18pIC0+IFNleHBsaWIwLlNleHAudFxuICAgICAgICAgICAgLT4gKGFfXzA0Nl8sIGJfXzA0N18pIHQpIC0+XG4gICAgICBsZXQgZXJyb3Jfc291cmNlX18wMjdfID0gXCJzZXF1ZW5jZS5tbC5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudC50XCIgaW5cbiAgICAgIGZ1biBfb2ZfYV9fMDIzXyBfb2ZfYl9fMDI0XyAtPiBmdW5jdGlvblxuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwibGVmdFwiIHwgXCJMZWZ0XCIpIGFzIF90YWdfXzAzMF8pIDo6IHNleHBfYXJnc19fMDMxXykgYXNcbiAgICAgICAgICBfc2V4cF9fMDI5XyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAzMV8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDMyXyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzAzM18gPSBfb2ZfYV9fMDIzXyBhcmcwX18wMzJfIGluXG4gICAgICAgICAgICAgTGVmdCByZXMwX18wMzNfXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI3X1xuICAgICAgICAgICAgICAgX3RhZ19fMDMwX1xuICAgICAgICAgICAgICAgX3NleHBfXzAyOV8pXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJyaWdodFwiIHwgXCJSaWdodFwiKSBhcyBfdGFnX18wMzVfKSA6OiBzZXhwX2FyZ3NfXzAzNl8pIGFzXG4gICAgICAgICAgX3NleHBfXzAzNF8gLT5cbiAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMzZfIHdpdGhcbiAgICAgICAgICAgfCBbIGFyZzBfXzAzN18gXSAtPlxuICAgICAgICAgICAgIGxldCByZXMwX18wMzhfID0gX29mX2JfXzAyNF8gYXJnMF9fMDM3XyBpblxuICAgICAgICAgICAgIFJpZ2h0IHJlczBfXzAzOF9cbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjdfXG4gICAgICAgICAgICAgICBfdGFnX18wMzVfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDM0XylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImJvdGhcIiB8IFwiQm90aFwiKSBhcyBfdGFnX18wNDBfKSA6OiBzZXhwX2FyZ3NfXzA0MV8pIGFzXG4gICAgICAgICAgX3NleHBfXzAzOV8gLT5cbiAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNDFfIHdpdGhcbiAgICAgICAgICAgfCBbIGFyZzBfXzA0Ml87IGFyZzFfXzA0M18gXSAtPlxuICAgICAgICAgICAgIGxldCByZXMwX18wNDRfID0gX29mX2FfXzAyM18gYXJnMF9fMDQyX1xuICAgICAgICAgICAgIGFuZCByZXMxX18wNDVfID0gX29mX2JfXzAyNF8gYXJnMV9fMDQzXyBpblxuICAgICAgICAgICAgIEJvdGggKHJlczBfXzA0NF8sIHJlczFfXzA0NV8pXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI3X1xuICAgICAgICAgICAgICAgX3RhZ19fMDQwX1xuICAgICAgICAgICAgICAgX3NleHBfXzAzOV8pXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImxlZnRcIiB8IFwiTGVmdFwiKSBhcyBzZXhwX18wMjhfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJyaWdodFwiIHwgXCJSaWdodFwiKSBhcyBzZXhwX18wMjhfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJib3RoXCIgfCBcIkJvdGhcIikgYXMgc2V4cF9fMDI4XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDI2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICAgICAgIHwgc2V4cF9fMDI2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAnYi5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDU4XyBiX18wNTlfKVxuICAgICAgICA6ICAoKGFfXzA1OF8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoYl9fMDU5XyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgICAtPiAoYV9fMDU4XywgYl9fMDU5XykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgICBmdW4gX29mX2FfXzA0OF8gX29mX2JfXzA0OV8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBMZWZ0IGFyZzBfXzA1MF8gLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDUxXyA9IF9vZl9hX18wNDhfIGFyZzBfXzA1MF8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJMZWZ0XCI7IHJlczBfXzA1MV8gXVxuICAgICAgICB8IFJpZ2h0IGFyZzBfXzA1Ml8gLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDUzXyA9IF9vZl9iX18wNDlfIGFyZzBfXzA1Ml8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJSaWdodFwiOyByZXMwX18wNTNfIF1cbiAgICAgICAgfCBCb3RoIChhcmcwX18wNTRfLCBhcmcxX18wNTVfKSAtPlxuICAgICAgICAgIGxldCByZXMwX18wNTZfID0gX29mX2FfXzA0OF8gYXJnMF9fMDU0X1xuICAgICAgICAgIGFuZCByZXMxX18wNTdfID0gX29mX2JfXzA0OV8gYXJnMV9fMDU1XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkJvdGhcIjsgcmVzMF9fMDU2XzsgcmVzMV9fMDU3XyBdXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDpcbiAgICAnYSAnYi5cbiAgICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIFZhcmlhbnRcbiAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJMZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIlJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkJvdGhcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXydhX3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5sZXQgbWVyZ2Vfd2l0aF9kdXBsaWNhdGVzXG4gICAgICAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMxOyBuZXh0ID0gbmV4dDEgfSlcbiAgICAgIChTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBuZXh0MiB9KVxuICAgICAgfmNvbXBhcmVcbiAgPVxuICBsZXQgdW5zaGFkb3dlZF9jb21wYXJlID0gY29tcGFyZSBpblxuICBsZXQgb3BlbiBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCBpblxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzMSB9LCBzMiAtPiBTa2lwIHsgc3RhdGUgPSBuZXh0MSBzMSwgczIgfVxuICAgIHwgczEsIFNraXAgeyBzdGF0ZSA9IHMyIH0gLT4gU2tpcCB7IHN0YXRlID0gczEsIG5leHQyIHMyIH1cbiAgICB8IChZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMScgfSBhcyBzMSksIChZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMicgfSBhcyBzMilcbiAgICAgIC0+XG4gICAgICBsZXQgY29tcGFyaXNvbiA9IHVuc2hhZG93ZWRfY29tcGFyZSBhIGIgaW5cbiAgICAgIGlmIGNvbXBhcmlzb24gPCAwXG4gICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBMZWZ0IGE7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEnIH0sIHMyIH1cbiAgICAgIGVsc2UgaWYgY29tcGFyaXNvbiA9IDBcbiAgICAgIHRoZW5cbiAgICAgICAgWWllbGQgeyB2YWx1ZSA9IEJvdGggKGEsIGIpOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxJyB9LCBTa2lwIHsgc3RhdGUgPSBzMicgfSB9XG4gICAgICBlbHNlIFlpZWxkIHsgdmFsdWUgPSBSaWdodCBiOyBzdGF0ZSA9IHMxLCBTa2lwIHsgc3RhdGUgPSBzMicgfSB9XG4gICAgfCBEb25lLCBEb25lIC0+IERvbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxIH0sIERvbmUgLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBMZWZ0IGE7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgRG9uZSB9XG4gICAgfCBEb25lLCBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gUmlnaHQgYjsgc3RhdGUgPSBEb25lLCBTa2lwIHsgc3RhdGUgPSBzMiB9IH1cbiAgaW5cbiAgU2VxdWVuY2UgeyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIFNraXAgeyBzdGF0ZSA9IHMyIH07IG5leHQgfVxuOztcblxubGV0IG1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZCBzMSBzMiB+Y29tcGFyZSA9XG4gIG1hcCAobWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIHMxIHMyIH5jb21wYXJlKSB+ZjooZnVuY3Rpb25cbiAgICB8IExlZnQgeCB8IFJpZ2h0IHggfCBCb3RoICh4LCBfKSAtPiB4KVxuOztcblxubGV0IChtZXJnZSBbQGRlcHJlY2F0ZWRcbiAgICAgICBcIltzaW5jZSAyMDIxLTA3XSBGb3IgaWRlbnRpY2FsIGJlaGF2aW9yLCB1c2UgXFxcbiAgICAgICAgW1NlcXVlbmNlLm1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZF0sIGJ1dCBjb25zaWRlciB1c2luZyBcXFxuICAgICAgICBbU2VxdWVuY2UubWVyZ2Vfc29ydGVkXSBpbnN0ZWFkLlwiXSlcbiAgPVxuICBtZXJnZV9kZWR1cGVkX2FuZF9zb3J0ZWRcbjs7XG5cbmxldCBtZXJnZV9zb3J0ZWRcbiAgICAgIChTZXF1ZW5jZSB7IHN0YXRlID0gczE7IG5leHQgPSBuZXh0MSB9KVxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IG5leHQyIH0pXG4gICAgICB+Y29tcGFyZVxuICA9XG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMxIH0sIHMyIC0+IFNraXAgeyBzdGF0ZSA9IG5leHQxIHMxLCBzMiB9XG4gICAgfCBzMSwgU2tpcCB7IHN0YXRlID0gczIgfSAtPiBTa2lwIHsgc3RhdGUgPSBzMSwgbmV4dDIgczIgfVxuICAgIHwgKFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxJyB9IGFzIHMxKSwgKFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyJyB9IGFzIHMyKVxuICAgICAgLT5cbiAgICAgIGxldCBjb21wYXJpc29uID0gY29tcGFyZSBhIGIgaW5cbiAgICAgIGlmIGNvbXBhcmlzb24gPD0gMFxuICAgICAgdGhlbiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMScgfSwgczIgfVxuICAgICAgZWxzZSBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMSwgU2tpcCB7IHN0YXRlID0gczInIH0gfVxuICAgIHwgRG9uZSwgRG9uZSAtPiBEb25lXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9LCBEb25lIC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBEb25lIH1cbiAgICB8IERvbmUsIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IERvbmUsIFNraXAgeyBzdGF0ZSA9IHMyIH0gfVxuICBpblxuICBTZXF1ZW5jZSB7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgU2tpcCB7IHN0YXRlID0gczIgfTsgbmV4dCB9XG47O1xuXG5sZXQgaGQgcyA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gXyB9IC0+IFNvbWUgYVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuZXh0XG47O1xuXG5sZXQgaGRfZXhuIHMgPVxuICBtYXRjaCBoZCBzIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiaGRfZXhuXCJcbiAgfCBTb21lIGEgLT4gYVxuOztcblxubGV0IHRsIHMgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IGEgfSAtPiBTb21lIGFcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIChtYXRjaCBsb29wIHMgbmV4dCB3aXRoXG4gICAgIHwgTm9uZSAtPiBOb25lXG4gICAgIHwgU29tZSBzIC0+IFNvbWUgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pKVxuOztcblxubGV0IHRsX2VhZ2VybHlfZXhuIHMgPVxuICBtYXRjaCB0bCBzIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UudGxfZXhuXCJcbiAgfCBTb21lIHMgLT4gc1xuOztcblxubGV0IGxpZnRfaWRlbnRpdHkgbmV4dCBzID1cbiAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgfCBEb25lIC0+IERvbmVcbiAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gYElkZW50aXR5IHMgfVxuICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBgSWRlbnRpdHkgcyB9XG47O1xuXG5sZXQgbmV4dCBzID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gU29tZSAoYSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSlcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIHMgbmV4dFxuOztcblxubGV0IGZpbHRlcl9vcHQgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biBzIC0+XG4gICAgICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IE5vbmU7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IFNvbWUgYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9KVxuICAgICAgfVxuOztcblxubGV0IGZpbHRlcl9tYXAgcyB+ZiA9IGZpbHRlcl9vcHQgKG1hcCBzIH5mKVxubGV0IGZpbHRlcl9tYXBpIHMgfmYgPSBmaWx0ZXJfbWFwIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgc3BsaXRfbiBzIG4gPVxuICBsZXQgcmVjIGxvb3AgcyBpIGFjY3VtIG5leHQgPVxuICAgIGlmIGkgPD0gMFxuICAgIHRoZW4gTGlzdC5yZXYgYWNjdW0sIFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH1cbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gTGlzdC5yZXYgYWNjdW0sIGVtcHR5XG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgaSBhY2N1bSBuZXh0XG4gICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgKGkgLSAxKSAoYSA6OiBhY2N1bSkgbmV4dClcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIHMgbiBbXSBuZXh0XG47O1xuXG5sZXQgY2h1bmtzX2V4biB0IG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLmNodW5rc19leG5cIlxuICBlbHNlXG4gICAgdW5mb2xkX3N0ZXAgfmluaXQ6dCB+ZjooZnVuIHQgLT5cbiAgICAgIG1hdGNoIHNwbGl0X24gdCBuIHdpdGhcbiAgICAgIHwgW10sIF9lbXB0eSAtPiBEb25lXG4gICAgICB8IChfIDo6IF8gYXMgeHMpLCB0IC0+IFlpZWxkIHsgdmFsdWUgPSB4czsgc3RhdGUgPSB0IH0pXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgaSBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gd2hlbiBmIGkgYSAtPiBTb21lIChpLCBhKVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IChpICsgMSkgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IDAgZlxuOztcblxubGV0IGZpbmRfZXhuIHMgfmYgPVxuICBtYXRjaCBmaW5kIHMgfmYgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS5maW5kX2V4blwiXG4gIHwgU29tZSB4IC0+IHhcbjs7XG5cbmxldCBhcHBlbmQgczEgczIgPVxuICBtYXRjaCBzMSwgczIgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IG5leHQxIH0sIFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IG5leHQyIH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGBGaXJzdF9saXN0IHMxXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgRmlyc3RfbGlzdCBzMSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dDEgczEgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IFNraXAgeyBzdGF0ZSA9IGBTZWNvbmRfbGlzdCBzMiB9XG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMxIH0gLT4gU2tpcCB7IHN0YXRlID0gYEZpcnN0X2xpc3QgczEgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9IC0+XG4gICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGBGaXJzdF9saXN0IHMxIH0pXG4gICAgICAgICAgICB8IGBTZWNvbmRfbGlzdCBzMiAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dDIgczIgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gczIgfSAtPiBTa2lwIHsgc3RhdGUgPSBgU2Vjb25kX2xpc3QgczIgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGBTZWNvbmRfbGlzdCBzMiB9KSlcbiAgICAgIH1cbjs7XG5cbmxldCBjb25jYXRfbWFwIHMgfmYgPSBiaW5kIHMgfmZcbmxldCBjb25jYXQgcyA9IGNvbmNhdF9tYXAgcyB+ZjpGbi5pZFxubGV0IGNvbmNhdF9tYXBpIHMgfmYgPSBjb25jYXRfbWFwIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgemlwIChTZXF1ZW5jZSB7IHN0YXRlID0gczE7IG5leHQgPSBuZXh0MSB9KSAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gbmV4dDIgfSkgPVxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9LCBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYSwgYjsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9IH1cbiAgICB8IERvbmUsIF8gfCBfLCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMxIH0sIHMyIC0+IFNraXAgeyBzdGF0ZSA9IG5leHQxIHMxLCBzMiB9XG4gICAgfCBzMSwgU2tpcCB7IHN0YXRlID0gczIgfSAtPiBTa2lwIHsgc3RhdGUgPSBzMSwgbmV4dDIgczIgfVxuICBpblxuICBTZXF1ZW5jZSB7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgU2tpcCB7IHN0YXRlID0gczIgfTsgbmV4dCB9XG47O1xuXG5sZXQgemlwX2Z1bGxcbiAgICAgIChTZXF1ZW5jZSB7IHN0YXRlID0gczE7IG5leHQgPSBuZXh0MSB9KVxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IG5leHQyIH0pXG4gID1cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEgfSwgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gczIgfSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IGBCb3RoIChhLCBiKTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9IH1cbiAgICB8IERvbmUsIERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSwgczIgLT4gU2tpcCB7IHN0YXRlID0gbmV4dDEgczEsIHMyIH1cbiAgICB8IHMxLCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+IFNraXAgeyBzdGF0ZSA9IHMxLCBuZXh0MiBzMiB9XG4gICAgfCBEb25lLCBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYFJpZ2h0IGI7IHN0YXRlID0gRG9uZSwgbmV4dDIgczIgfVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEgfSwgRG9uZSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IGBMZWZ0IGE7IHN0YXRlID0gbmV4dDEgczEsIERvbmUgfVxuICBpblxuICBTZXF1ZW5jZSB7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgU2tpcCB7IHN0YXRlID0gczIgfTsgbmV4dCB9XG47O1xuXG5sZXQgYm91bmRlZF9sZW5ndGggKFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0pIH5hdF9tb3N0ID1cbiAgbGV0IHJlYyBsb29wIGkgc2VlZCBuZXh0ID1cbiAgICBpZiBpID4gYXRfbW9zdFxuICAgIHRoZW4gYEdyZWF0ZXJcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICB8IERvbmUgLT4gYElzIGlcbiAgICAgIHwgU2tpcCB7IHN0YXRlID0gc2VlZCB9IC0+IGxvb3AgaSBzZWVkIG5leHRcbiAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gc2VlZCB9IC0+IGxvb3AgKGkgKyAxKSBzZWVkIG5leHQpXG4gIGluXG4gIGxvb3AgMCBzZWVkIG5leHRcbjs7XG5cbmxldCBsZW5ndGhfaXNfYm91bmRlZF9ieSA/KG1pbiA9IC0xKSA/bWF4IHQgPVxuICBsZXQgbGVuZ3RoX2lzX2F0X2xlYXN0IChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSA9XG4gICAgbGV0IHJlYyBsb29wIHMgYWNjID1cbiAgICAgIGlmIGFjYyA+PSBtaW5cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgYWNjXG4gICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IC0+IGxvb3AgcyAoYWNjICsgMSkpXG4gICAgaW5cbiAgICBsb29wIHMgMFxuICBpblxuICBtYXRjaCBtYXggd2l0aFxuICB8IE5vbmUgLT4gbGVuZ3RoX2lzX2F0X2xlYXN0IHRcbiAgfCBTb21lIG1heCAtPlxuICAgIChtYXRjaCBib3VuZGVkX2xlbmd0aCB0IH5hdF9tb3N0Om1heCB3aXRoXG4gICAgIHwgYElzIGxlbiB3aGVuIGxlbiA+PSBtaW4gLT4gdHJ1ZVxuICAgICB8IF8gLT4gZmFsc2UpXG47O1xuXG5sZXQgaXRlcmkgcyB+ZiA9IGl0ZXIgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpIFtAbm9udGFpbF1cblxubGV0IGZvbGRpIHMgfmluaXQgfmYgPVxuICBmb2xkIH5pbml0IChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gYWNjIChpLCBzKSAtPiBmIGkgYWNjIHMpIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZWR1Y2UgcyB+ZiA9XG4gIG1hdGNoIG5leHQgcyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoYSwgcykgLT4gU29tZSAoZm9sZCBzIH5pbml0OmEgfmYpXG47O1xuXG5sZXQgcmVkdWNlX2V4biBzIH5mID1cbiAgbWF0Y2ggcmVkdWNlIHMgfmYgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS5yZWR1Y2VfZXhuXCJcbiAgfCBTb21lIHJlcyAtPiByZXNcbjs7XG5cbmxldCBncm91cCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgfmJyZWFrID1cbiAgdW5mb2xkX3N0ZXBcbiAgICB+aW5pdDooU29tZSAoW10sIHMpKVxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IERvbmVcbiAgICAgIHwgU29tZSAoYWNjLCBzKSAtPlxuICAgICAgICAobWF0Y2ggYWNjLCBuZXh0IHMgd2l0aFxuICAgICAgICAgfCBfLCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gU29tZSAoYWNjLCBzKSB9XG4gICAgICAgICB8IFtdLCBEb25lIC0+IERvbmVcbiAgICAgICAgIHwgYWNjLCBEb25lIC0+IFlpZWxkIHsgdmFsdWUgPSBMaXN0LnJldiBhY2M7IHN0YXRlID0gTm9uZSB9XG4gICAgICAgICB8IFtdLCBZaWVsZCB7IHZhbHVlID0gY3VyOyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBTb21lIChbIGN1ciBdLCBzKSB9XG4gICAgICAgICB8IChwcmV2IDo6IF8gYXMgYWNjKSwgWWllbGQgeyB2YWx1ZSA9IGN1cjsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgICAgaWYgYnJlYWsgcHJldiBjdXJcbiAgICAgICAgICAgdGhlbiBZaWVsZCB7IHZhbHVlID0gTGlzdC5yZXYgYWNjOyBzdGF0ZSA9IFNvbWUgKFsgY3VyIF0sIHMpIH1cbiAgICAgICAgICAgZWxzZSBTa2lwIHsgc3RhdGUgPSBTb21lIChjdXIgOjogYWNjLCBzKSB9KSlcbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIGxhc3RfZWx0IHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIGxhc3RfZWx0IHNcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgKG1hdGNoIGxhc3RfZWx0IHdpdGhcbiAgICAgICB8IFNvbWUgYiB3aGVuIGVxdWFsIGEgYiAtPiBTb21lIChiLCBhKVxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBsb29wIChTb21lIGEpIHMpXG4gIGluXG4gIGxvb3AgTm9uZSBzIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyBzIH5lcXVhbCA9XG4gIHVuZm9sZF93aXRoIHMgfmluaXQ6Tm9uZSB+ZjooZnVuIHByZXYgYSAtPlxuICAgIG1hdGNoIHByZXYgd2l0aFxuICAgIHwgU29tZSBiIHdoZW4gZXF1YWwgYSBiIC0+IFNraXAgeyBzdGF0ZSA9IFNvbWUgYSB9XG4gICAgfCBOb25lIHwgU29tZSBfIC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNvbWUgYSB9KVxuOztcblxubGV0IGNvdW50IHMgfmYgPSBmb2xkIHMgfmluaXQ6MCB+ZjooZnVuIGFjYyBlbHQgLT4gYWNjICsgQm9vbC50b19pbnQgKGYgZWx0KSkgW0Bub250YWlsXVxuXG5sZXQgY291bnRpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpIGFjYyBlbHQgLT4gYWNjICsgQm9vbC50b19pbnQgKGYgaSBlbHQpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxubGV0IGluaXQgbiB+ZiA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OjAgfmY6KGZ1biBpIC0+XG4gICAgaWYgaSA+PSBuIHRoZW4gRG9uZSBlbHNlIFlpZWxkIHsgdmFsdWUgPSBmIGk7IHN0YXRlID0gaSArIDEgfSlcbjs7XG5cbmxldCBzdWIgcyB+cG9zIH5sZW4gPVxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLnN1YlwiO1xuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSAwLCBzXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gKGksIHMpIC0+XG4gICAgICAgICAgICAgaWYgaSAtIHBvcyA+PSBsZW5cbiAgICAgICAgICAgICB0aGVuIERvbmVcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSwgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGkgPj0gcG9zIC0+XG4gICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGkgKyAxLCBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IGkgKyAxLCBzIH0pKVxuICAgICAgfVxuOztcblxubGV0IHRha2UgcyBsZW4gPVxuICBpZiBsZW4gPCAwIHRoZW4gZmFpbHdpdGggXCJTZXF1ZW5jZS50YWtlXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IDAsIHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biAoaSwgcykgLT5cbiAgICAgICAgICAgICBpZiBpID49IGxlblxuICAgICAgICAgICAgIHRoZW4gRG9uZVxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBpLCBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGkgKyAxLCBzIH0pKVxuICAgICAgfVxuOztcblxubGV0IGRyb3AgcyBsZW4gPVxuICBpZiBsZW4gPCAwIHRoZW4gZmFpbHdpdGggXCJTZXF1ZW5jZS5kcm9wXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IDAsIHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biAoaSwgcykgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSwgcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gd2hlbiBpID49IGxlbiAtPlxuICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gaSArIDEsIHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IGkgKyAxLCBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgdGFrZV93aGlsZSBzIH5mID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHMgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gd2hlbiBmIGEgLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBfIH0gLT4gRG9uZSlcbiAgICAgIH1cbjs7XG5cbmxldCBkcm9wX3doaWxlIHMgfmYgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBgRHJvcHBpbmcgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYERyb3BwaW5nIHMgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gYERyb3BwaW5nIHMgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gd2hlbiBmIGEgLT4gU2tpcCB7IHN0YXRlID0gYERyb3BwaW5nIHMgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gYElkZW50aXR5IHMgfSlcbiAgICAgICAgICAgIHwgYElkZW50aXR5IHMgLT4gbGlmdF9pZGVudGl0eSBuZXh0IHMpXG4gICAgICB9XG47O1xuXG5sZXQgc2hpZnRfcmlnaHQgcyB4ID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gYENvbnNpbmcgKHNlZWQsIHgpXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgQ29uc2luZyAoc2VlZCwgeCkgLT4gWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gYElkZW50aXR5IHNlZWQgfVxuICAgICAgICAgICAgfCBgSWRlbnRpdHkgcyAtPiBsaWZ0X2lkZW50aXR5IG5leHQgcylcbiAgICAgIH1cbjs7XG5cbmxldCBzaGlmdF9yaWdodF93aXRoX2xpc3QgcyBsID0gYXBwZW5kIChvZl9saXN0IGwpIHNcbmxldCBzaGlmdF9sZWZ0ID0gZHJvcFxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggQCApID0gYXBwZW5kXG5lbmRcblxubGV0IGludGVyc3BlcnNlIHMgfnNlcCA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGBJbml0IHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBJbml0IHMgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gYEluaXQgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBgUnVubmluZyBzIH0pXG4gICAgICAgICAgICB8IGBSdW5uaW5nIHMgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gYFJ1bm5pbmcgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gc2VwOyBzdGF0ZSA9IGBQdXR0aW5nIChhLCBzKSB9KVxuICAgICAgICAgICAgfCBgUHV0dGluZyAoYSwgcykgLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gYFJ1bm5pbmcgcyB9KVxuICAgICAgfVxuOztcblxubGV0IHJlcGVhdCB4ID0gdW5mb2xkX3N0ZXAgfmluaXQ6eCB+ZjooZnVuIHggLT4gWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0geCB9KVxuXG5sZXQgY3ljbGVfbGlzdF9leG4geHMgPVxuICBpZiBMaXN0LmlzX2VtcHR5IHhzIHRoZW4gaW52YWxpZF9hcmcgXCJTZXF1ZW5jZS5jeWNsZV9saXN0X2V4blwiO1xuICBsZXQgcyA9IG9mX2xpc3QgeHMgaW5cbiAgY29uY2F0X21hcCB+ZjooZnVuICgpIC0+IHMpIChyZXBlYXQgKCkpXG47O1xuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3Qgc2Egc2IgPSBjb25jYXRfbWFwIHNhIH5mOihmdW4gYSAtPiB6aXAgKHJlcGVhdCBhKSBzYilcbmxldCBzaW5nbGV0b24geCA9IHJldHVybiB4XG5cbmxldCBkZWxheWVkX2ZvbGQgcyB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwIHMgfmluaXQgfmZpbmlzaCB+ZjooZnVuIGFjYyBvcHRpb24gfmsgLT5cbiAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgIHwgTm9uZSAtPiBrIGFjY1xuICAgIHwgU29tZSBhIC0+IGYgYWNjIGEgfmspXG47O1xuXG5sZXQgZm9sZF9tIH5iaW5kIH5yZXR1cm4gdCB+aW5pdCB+ZiA9XG4gIEV4cGVydC5kZWxheWVkX2ZvbGRfc3RlcFxuICAgIHRcbiAgICB+aW5pdFxuICAgIH5mOihmdW4gYWNjIG9wdGlvbiB+ayAtPlxuICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBiaW5kIChyZXR1cm4gYWNjKSB+ZjprXG4gICAgICB8IFNvbWUgYSAtPiBiaW5kIChmIGFjYyBhKSB+ZjprKVxuICAgIH5maW5pc2g6cmV0dXJuXG47O1xuXG5sZXQgaXRlcl9tIH5iaW5kIH5yZXR1cm4gdCB+ZiA9XG4gIEV4cGVydC5kZWxheWVkX2ZvbGRfc3RlcFxuICAgIHRcbiAgICB+aW5pdDooKVxuICAgIH5mOihmdW4gKCkgb3B0aW9uIH5rIC0+XG4gICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGJpbmQgKHJldHVybiAoKSkgfmY6a1xuICAgICAgfCBTb21lIGEgLT4gYmluZCAoZiBhKSB+ZjprKVxuICAgIH5maW5pc2g6cmV0dXJuXG47O1xuXG5sZXQgZm9sZF91bnRpbCBzIH5pbml0IH5mIH5maW5pc2ggPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgYWNjID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmaW5pc2ggYWNjXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiBhY2NcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgKG1hdGNoIChmIGFjYyBhIDogKCdhLCAnYikgQ29udGludWVfb3Jfc3RvcC50KSB3aXRoXG4gICAgICAgfCBTdG9wIHggLT4geFxuICAgICAgIHwgQ29udGludWUgYWNjIC0+IGxvb3AgcyBuZXh0IGYgYWNjKVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuZXh0IGYgaW5pdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgcyB+aW5pdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBhY2MgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IFJlc3VsdC5yZXR1cm4gYWNjXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiBhY2NcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgKG1hdGNoIChmIGFjYyBhIDogKF8sIF8pIFJlc3VsdC50KSB3aXRoXG4gICAgICAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICAgICAgIHwgT2sgYWNjIC0+IGxvb3AgcyBuZXh0IGYgYWNjKVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuZXh0IGYgaW5pdFxuOztcblxubGV0IGZvcmNlX2VhZ2VybHkgdCA9IG9mX2xpc3QgKHRvX2xpc3QgdClcblxubGV0IG1lbW9pemUgKHR5cGUgYSkgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVCBvZiAoYSwgdCkgU3RlcC50IExhenkudFxuICBlbmRcbiAgaW5cbiAgbGV0IHJlYyBtZW1vaXplIHMgPSBNLlQgKGxhenkgKGZpbmRfc3RlcCBzKSlcbiAgYW5kIGZpbmRfc3RlcCBzID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gZmluZF9zdGVwIHNcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBtZW1vaXplIHMgfVxuICBpblxuICBTZXF1ZW5jZSB7IHN0YXRlID0gbWVtb2l6ZSBzOyBuZXh0ID0gKGZ1biAoTS5UIGwpIC0+IExhenkuZm9yY2UgbCkgfVxuOztcblxubGV0IGRyb3BfZWFnZXJseSBzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBpIH5sZW4gcyBuZXh0ID1cbiAgICBpZiBpID49IGxlblxuICAgIHRoZW4gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBlbXB0eVxuICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBpIH5sZW4gcyBuZXh0XG4gICAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBsb29wIChpICsgMSkgfmxlbiBzIG5leHQpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCAwIH5sZW4gcyBuZXh0XG47O1xuXG5sZXQgZHJvcF93aGlsZV9vcHRpb24gKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pIH5mID1cbiAgbGV0IHJlYyBsb29wIHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHNcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgaWYgZiB4IHRoZW4gbG9vcCBzIGVsc2UgU29tZSAoeCwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSlcbiAgaW5cbiAgbG9vcCBzIFtAbm9udGFpbF1cbjs7XG5cbmxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgKHppcF9mdWxsIHQxIHQyKSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgXyAtPiByLnJldHVybiAxXG4gICAgICB8IGBSaWdodCBfIC0+IHIucmV0dXJuICgtMSlcbiAgICAgIHwgYEJvdGggKHYxLCB2MikgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2EgdjEgdjIgaW5cbiAgICAgICAgaWYgYyA8PiAwIHRoZW4gci5yZXR1cm4gYyk7XG4gICAgMClcbjs7XG5cbmxldCBlcXVhbCBlcXVhbF9hIHQxIHQyID1cbiAgZm9yX2FsbCAoemlwX2Z1bGwgdDEgdDIpIH5mOihmdW5jdGlvblxuICAgIHwgYEJvdGggKGExLCBhMikgLT4gZXF1YWxfYSBhMSBhMlxuICAgIHwgYExlZnQgXyB8IGBSaWdodCBfIC0+IGZhbHNlKVxuOztcblxubGV0IHJvdW5kX3JvYmluIGxpc3QgPVxuICBsZXQgbmV4dCAodG9kb19zdGFjaywgZG9uZV9zdGFjaykgPVxuICAgIG1hdGNoIHRvZG9fc3RhY2sgd2l0aFxuICAgIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgPSBmIH0gOjogdG9kb19zdGFjayAtPlxuICAgICAgKG1hdGNoIGYgcyB3aXRoXG4gICAgICAgfCBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgIFlpZWxkXG4gICAgICAgICAgIHsgdmFsdWUgPSB4XG4gICAgICAgICAgIDsgc3RhdGUgPSB0b2RvX3N0YWNrLCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSA6OiBkb25lX3N0YWNrXG4gICAgICAgICAgIH1cbiAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgU2tpcCB7IHN0YXRlID0gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgPSBmIH0gOjogdG9kb19zdGFjaywgZG9uZV9zdGFjayB9XG4gICAgICAgfCBEb25lIC0+IFNraXAgeyBzdGF0ZSA9IHRvZG9fc3RhY2ssIGRvbmVfc3RhY2sgfSlcbiAgICB8IFtdIC0+XG4gICAgICBpZiBMaXN0LmlzX2VtcHR5IGRvbmVfc3RhY2sgdGhlbiBEb25lIGVsc2UgU2tpcCB7IHN0YXRlID0gTGlzdC5yZXYgZG9uZV9zdGFjaywgW10gfVxuICBpblxuICBsZXQgc3RhdGUgPSBsaXN0LCBbXSBpblxuICBTZXF1ZW5jZSB7IHN0YXRlOyBuZXh0IH1cbjs7XG5cbmxldCBpbnRlcmxlYXZlIChTZXF1ZW5jZSB7IHN0YXRlID0gczE7IG5leHQgPSBmMSB9KSA9XG4gIGxldCBuZXh0ICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrLCBzMSkgPVxuICAgIG1hdGNoIHRvZG9fc3RhY2sgd2l0aFxuICAgIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gZjIgfSA6OiB0b2RvX3N0YWNrIC0+XG4gICAgICAobWF0Y2ggZjIgczIgd2l0aFxuICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gczIgfSAtPlxuICAgICAgICAgWWllbGRcbiAgICAgICAgICAgeyB2YWx1ZSA9IHhcbiAgICAgICAgICAgOyBzdGF0ZSA9IHRvZG9fc3RhY2ssIFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IGYyIH0gOjogZG9uZV9zdGFjaywgczFcbiAgICAgICAgICAgfVxuICAgICAgIHwgU2tpcCB7IHN0YXRlID0gczIgfSAtPlxuICAgICAgICAgU2tpcCB7IHN0YXRlID0gdG9kb19zdGFjaywgU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gZjIgfSA6OiBkb25lX3N0YWNrLCBzMSB9XG4gICAgICAgfCBEb25lIC0+IFNraXAgeyBzdGF0ZSA9IHRvZG9fc3RhY2ssIGRvbmVfc3RhY2ssIHMxIH0pXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIGYxIHMxLCBkb25lX3N0YWNrIHdpdGhcbiAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB0OyBzdGF0ZSA9IHMxIH0sIF8gLT5cbiAgICAgICAgIFNraXAgeyBzdGF0ZSA9IExpc3QucmV2ICh0IDo6IGRvbmVfc3RhY2spLCBbXSwgczEgfVxuICAgICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSwgXyAtPiBTa2lwIHsgc3RhdGUgPSBMaXN0LnJldiBkb25lX3N0YWNrLCBbXSwgczEgfVxuICAgICAgIHwgRG9uZSwgXyA6OiBfIC0+IFNraXAgeyBzdGF0ZSA9IExpc3QucmV2IGRvbmVfc3RhY2ssIFtdLCBzMSB9XG4gICAgICAgfCBEb25lLCBbXSAtPiBEb25lKVxuICBpblxuICBsZXQgc3RhdGUgPSBbXSwgW10sIHMxIGluXG4gIFNlcXVlbmNlIHsgc3RhdGU7IG5leHQgfVxuOztcblxubGV0IGludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0IHMxIHMyID1cbiAgbWFwIHMxIH5mOihmdW4geDEgLT4gbWFwIHMyIH5mOihmdW4geDIgLT4geDEsIHgyKSkgfD4gaW50ZXJsZWF2ZVxuOztcblxubGV0IG9mX3NlcSAoc2VxIDogXyBTdGRsaWIuU2VxLnQpID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6c2VxIH5mOihmdW4gc2VxIC0+XG4gICAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiBEb25lXG4gICAgfCBDb25zIChoZCwgdGwpIC0+IFlpZWxkIHsgdmFsdWUgPSBoZDsgc3RhdGUgPSB0bCB9KVxuOztcblxubGV0IHRvX3NlcSAoU2VxdWVuY2UgeyBzdGF0ZTsgbmV4dCB9KSA9XG4gIGxldCByZWMgbG9vcCBzdGF0ZSA9XG4gICAgbWF0Y2ggbmV4dCBzdGF0ZSB3aXRoXG4gICAgfCBEb25lIC0+IFN0ZGxpYi5TZXEuTmlsXG4gICAgfCBTa2lwIHsgc3RhdGUgfSAtPiBsb29wIHN0YXRlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gaGQ7IHN0YXRlIH0gLT4gU3RkbGliLlNlcS5Db25zIChoZCwgZnVuICgpIC0+IGxvb3Agc3RhdGUpXG4gIGluXG4gIGZ1biAoKSAtPiBsb29wIHN0YXRlXG47O1xuXG5tb2R1bGUgR2VuZXJhdG9yID0gc3RydWN0XG4gIHR5cGUgJ2VsdCBzdGVwcyA9IFdyYXAgb2YgKCdlbHQsIHVuaXQgLT4gJ2VsdCBzdGVwcykgU3RlcC50XG5cbiAgbGV0IHVud3JhcCAoV3JhcCBzdGVwKSA9IHN0ZXBcblxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnZWx0KSB0ID0gKCdhIC0+ICdlbHQgc3RlcHMpIC0+ICdlbHQgc3RlcHNcblxuICAgIGxldCByZXR1cm4geCBrID0gayB4XG5cbiAgICBsZXQgYmluZCBtIH5mIGsgPVxuICAgICAgbSAoZnVuIGEgLT5cbiAgICAgICAgbGV0IG0nID0gZiBhIGluXG4gICAgICAgIG0nIGspXG4gICAgOztcblxuICAgIGxldCBtYXAgbSB+ZiBrID0gbSAoZnVuIGEgLT4gayAoZiBhKSlcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgTW9uYWQuTWFrZTIgKFQpXG5cbiAgbGV0IHlpZWxkIGUgayA9IFdyYXAgKFlpZWxkIHsgdmFsdWUgPSBlOyBzdGF0ZSA9IGsgfSlcbiAgbGV0IHRvX3N0ZXBzIHQgPSB0IChmdW4gKCkgLT4gV3JhcCBEb25lKVxuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSA9XG4gICAgZGVsYXllZF9mb2xkXG4gICAgICBzZXF1ZW5jZVxuICAgICAgfmluaXQ6KClcbiAgICAgIH5mOihmdW4gKCkgeCB+ayBmIC0+IFdyYXAgKFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IChmdW4gKCkgLT4gayAoKSBmKSB9KSlcbiAgICAgIH5maW5pc2g6cmV0dXJuXG4gIDs7XG5cbiAgbGV0IHJ1biB0ID1cbiAgICBsZXQgaW5pdCAoKSA9IHRvX3N0ZXBzIHQgaW5cbiAgICBsZXQgZiB0aHVuayA9IHVud3JhcCAodGh1bmsgKCkpIGluXG4gICAgdW5mb2xkX3N0ZXAgfmluaXQgfmZcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlXG5cbm1vZHVsZSBPZl9zZXhwYWJsZVxuICAgIChTZXhwYWJsZSA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiB0IC0+IFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiBTZXhwYWJsZS50IC0+IHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cGFibGUuc2V4cF9vZl90IChNLnRvX3NleHBhYmxlIHQpXG5lbmRcblxubW9kdWxlIE9mX3NleHBhYmxlMVxuICAgIChTZXhwYWJsZSA6IFMxKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAnYSB0IC0+ICdhIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogJ2EgU2V4cGFibGUudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSAoTS50b19zZXhwYWJsZSB0KVxuZW5kXG5cbm1vZHVsZSBPZl9zZXhwYWJsZTJcbiAgICAoU2V4cGFibGUgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IpIFNleHBhYmxlLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgdCA9XG4gICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgKE0udG9fc2V4cGFibGUgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2Zfc2V4cGFibGUzXG4gICAgKFNleHBhYmxlIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgU2V4cGFibGUudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyB0ID1cbiAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgKE0udG9fc2V4cGFibGUgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2Zfc3RyaW5nYWJsZSAoTSA6IFN0cmluZ2FibGUuUykgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBTIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxud2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBNLm9mX3N0cmluZyBzIHdpdGhcbiAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cClcbiAgICB8IFNleHAuTGlzdCBfIC0+XG4gICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgIFwiU2V4cGFibGUuT2Zfc3RyaW5nYWJsZS50X29mX3NleHAgZXhwZWN0ZWQgYW4gYXRvbSwgYnV0IGdvdCBhIGxpc3RcIlxuICAgICAgICBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIChNLnRvX3N0cmluZyB0KVxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6IE0udCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSBzdHJpbmdfc2V4cF9ncmFtbWFyXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBcnJheTBcblxudHlwZSAnYSB0ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID0gY29tcGFyZV9hcnJheVxuXG5sZXQgZ2xvYmFsaXplIDogJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSB0W0BvY2FtbC5sb2NhbF0pIC0+ICdhIHQgPVxuICBmdW4gKHR5cGUgYV9fMDA1XylcbiAgICAgIDogKCgoYV9fMDA1X1tAb2NhbWwubG9jYWxdKSAtPiBhX18wMDVfKSAtPiAoYV9fMDA1XyB0W0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwNV8gdCkgLT5cbiAgICBnbG9iYWxpemVfYXJyYXlcbjs7XG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBhcnJheV9vZl9zZXhwXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9hcnJheVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGFycmF5X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG47O1xuXG5bQEBAZW5kXVxuXG4oKiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGEgbmV3IGluLXBsYWNlLCBjb25zdGFudCBoZWFwIHNvcnRpbmcgYWxnb3JpdGhtIHRvIHJlcGxhY2UgdGhlXG4gICBvbmUgdXNlZCBieSB0aGUgc3RhbmRhcmQgbGlicmFyaWVzLiAgSXRzIG9ubHkgcHVycG9zZSBpcyB0byBiZSBmYXN0ZXIgKGhvcGVmdWxseVxuICAgc3RyaWN0bHkgZmFzdGVyKSB0aGFuIHRoZSBiYXNlIHNvcnQgYW5kIHN0YWJsZV9zb3J0LlxuXG4gICBBdCBhIGhpZ2ggbGV2ZWwgdGhlIGFsZ29yaXRobSBpczpcbiAgIC0gcGljayB0d28gcGl2b3QgcG9pbnRzIGJ5OlxuICAgLSBwaWNrIDUgYXJiaXRyYXJ5IGVsZW1lbnRzIGZyb20gdGhlIGFycmF5XG4gICAtIHNvcnQgdGhlbSB3aXRoaW4gdGhlIGFycmF5XG4gICAtIHRha2UgdGhlIGVsZW1lbnRzIG9uIGVpdGhlciBzaWRlIG9mIHRoZSBtaWRkbGUgZWxlbWVudCBvZiB0aGUgc29ydCBhcyB0aGUgcGl2b3RzXG4gICAtIHNvcnQgdGhlIGFycmF5IHdpdGg6XG4gICAtIGFsbCBlbGVtZW50cyBsZXNzIHRoYW4gcGl2b3QxIHRvIHRoZSBsZWZ0IChyYW5nZSAxKVxuICAgLSBhbGwgZWxlbWVudHMgPj0gcGl2b3QxIGFuZCA8PSBwaXZvdDIgaW4gdGhlIG1pZGRsZSAocmFuZ2UgMilcbiAgIC0gYWxsIGVsZW1lbnRzID4gcGl2b3QyIHRvIHRoZSByaWdodCAocmFuZ2UgMylcbiAgIC0gaWYgcGl2b3QxIGFuZCBwaXZvdDIgYXJlIGVxdWFsLCB0aGVuIHRoZSBtaWRkbGUgcmFuZ2UgaXMgc29ydGVkLCBzbyBpZ25vcmUgaXRcbiAgIC0gcmVjdXJzZSBpbnRvIHJhbmdlIDEsIDIgKGlmIHBpdm90MSBhbmQgcGl2b3QyIGFyZSB1bmVxdWFsKSwgYW5kIDNcbiAgIC0gZHVyaW5nIHJlY3Vyc2lvbiB0aGVyZSBhcmUgdHdvIGluZmxlY3Rpb24gcG9pbnRzOlxuICAgLSBpZiB0aGUgc2l6ZSBvZiB0aGUgY3VycmVudCByYW5nZSBpcyBzbWFsbCwgdXNlIGluc2VydGlvbiBzb3J0IHRvIHNvcnQgaXRcbiAgIC0gaWYgdGhlIHN0YWNrIGRlcHRoIGlzIGxhcmdlLCBzb3J0IHRoZSByYW5nZSB3aXRoIGhlYXAtc29ydCB0byBhdm9pZCBuXjIgd29yc3QtY2FzZVxuICAgICBiZWhhdmlvclxuXG4gICBTZWUgdGhlIGZvbGxvd2luZyBmb3IgbW9yZSBpbmZvcm1hdGlvbjpcbiAgIC0gXCJEdWFsLVBpdm90IFF1aWNrc29ydFwiIGJ5IFZsYWRpbWlyIFlhcm9zbGF2c2tpeS5cbiAgICAgQXZhaWxhYmxlIGF0XG4gICAgIGh0dHA6Ly93d3cua3JpY2hlLmNvbS5hci9yb290L3Byb2dyYW1taW5nL3NwYWNlVGltZUNvbXBsZXhpdHkvRHVhbFBpdm90UXVpY2tzb3J0LnBkZlxuICAgLSBcIlF1aWNrc29ydCBpcyBPcHRpbWFsXCIgYnkgU2VkZ2V3aWNrIGFuZCBCZW50bGV5LlxuICAgICBTbGlkZXMgYXQgaHR0cDovL3d3dy5jcy5wcmluY2V0b24uZWR1L35ycy90YWxrcy9RdWlja3NvcnRJc09wdGltYWwucGRmXG4gICAtIGh0dHA6Ly93d3cuc29ydGluZy1hbGdvcml0aG1zLmNvbS9xdWljay1zb3J0LTMtd2F5ICopXG5cbm1vZHVsZSBTb3J0ZXIgKFMgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICAgIHZhbCBzZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgU1xuXG4gIGxldCBzd2FwIGFyciBpIGogPVxuICAgIGxldCB0bXAgPSBnZXQgYXJyIGkgaW5cbiAgICBzZXQgYXJyIGkgKGdldCBhcnIgaik7XG4gICAgc2V0IGFyciBqIHRtcFxuICA7O1xuXG4gIG1vZHVsZSB0eXBlIFNvcnQgPSBzaWdcbiAgICB2YWwgc29ydFxuICAgICAgOiAgJ2EgdFxuICAgICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAgIC0+IGxlZnQ6aW50ICgqIGxlZnRtb3N0IGluZGV4IG9mIHN1Yi1hcnJheSB0byBzb3J0ICopXG4gICAgICAtPiByaWdodDppbnQgKCogcmlnaHRtb3N0IGluZGV4IG9mIHN1Yi1hcnJheSB0byBzb3J0ICopXG4gICAgICAtPiB1bml0XG4gIGVuZFxuXG4gICgqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5zZXJ0aW9uX3NvcnQgKilcbiAgbW9kdWxlIEluc2VydGlvbl9zb3J0IDogU29ydCA9IHN0cnVjdFxuICAgICgqIGxvb3AgaW52YXJpYW50czpcbiAgICAgICAxLiAgdGhlIHN1YmFycmF5IGFycltsZWZ0IC4uIGktMV0gaXMgc29ydGVkXG4gICAgICAgMi4gIHRoZSBzdWJhcnJheSBhcnJbaSsxIC4uIHBvc10gaXMgc29ydGVkIGFuZCBjb250YWlucyBvbmx5IGVsZW1lbnRzID4gdlxuICAgICAgIDMuICBhcnJbaV0gbWF5IGJlIHRob3VnaHQgb2YgYXMgY29udGFpbmluZyB2XG4gICAgKilcbiAgICBsZXQgcmVjIGluc2VydF9sb29wIGFyciB+bGVmdCB+Y29tcGFyZSBpIHYgPVxuICAgICAgbGV0IGlfbmV4dCA9IGkgLSAxIGluXG4gICAgICBpZiBpX25leHQgPj0gbGVmdCAmJiBjb21wYXJlIChnZXQgYXJyIGlfbmV4dCkgdiA+IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBzZXQgYXJyIGkgKGdldCBhcnIgaV9uZXh0KTtcbiAgICAgICAgaW5zZXJ0X2xvb3AgYXJyIH5sZWZ0IH5jb21wYXJlIGlfbmV4dCB2KVxuICAgICAgZWxzZSBpXG4gICAgOztcblxuICAgIGxldCBzb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgKCogbG9vcCBpbnZhcmlhbnQ6XG4gICAgICAgICBbYXJyXSBpcyBzb3J0ZWQgZnJvbSBbbGVmdF0gdG8gW3BvcyAtIDFdLCBpbmNsdXNpdmUgKilcbiAgICAgIGZvciBwb3MgPSBsZWZ0ICsgMSB0byByaWdodCBkb1xuICAgICAgICBsZXQgdiA9IGdldCBhcnIgcG9zIGluXG4gICAgICAgIGxldCBmaW5hbF9wb3MgPSBpbnNlcnRfbG9vcCBhcnIgfmxlZnQgfmNvbXBhcmUgcG9zIHYgaW5cbiAgICAgICAgc2V0IGFyciBmaW5hbF9wb3MgdlxuICAgICAgZG9uZVxuICAgIDs7XG4gIGVuZFxuXG4gICgqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVhcHNvcnQgKilcbiAgbW9kdWxlIEhlYXBfc29ydCA6IFNvcnQgPSBzdHJ1Y3RcbiAgICAoKiBsb29wIGludmFyaWFudDpcbiAgICAgICByb290J3MgY2hpbGRyZW4gYXJlIGJvdGggZWl0aGVyIHJvb3RzIG9mIG1heC1oZWFwcyBvciA+IHJpZ2h0ICopXG4gICAgbGV0IHJlYyBoZWFwaWZ5IGFyciB+Y29tcGFyZSByb290IH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgcmVsYXRpdmVfcm9vdCA9IHJvb3QgLSBsZWZ0IGluXG4gICAgICBsZXQgbGVmdF9jaGlsZCA9ICgyICogcmVsYXRpdmVfcm9vdCkgKyBsZWZ0ICsgMSBpblxuICAgICAgbGV0IHJpZ2h0X2NoaWxkID0gKDIgKiByZWxhdGl2ZV9yb290KSArIGxlZnQgKyAyIGluXG4gICAgICBsZXQgbGFyZ2VzdCA9XG4gICAgICAgIGlmIGxlZnRfY2hpbGQgPD0gcmlnaHQgJiYgY29tcGFyZSAoZ2V0IGFyciBsZWZ0X2NoaWxkKSAoZ2V0IGFyciByb290KSA+IDBcbiAgICAgICAgdGhlbiBsZWZ0X2NoaWxkXG4gICAgICAgIGVsc2Ugcm9vdFxuICAgICAgaW5cbiAgICAgIGxldCBsYXJnZXN0ID1cbiAgICAgICAgaWYgcmlnaHRfY2hpbGQgPD0gcmlnaHQgJiYgY29tcGFyZSAoZ2V0IGFyciByaWdodF9jaGlsZCkgKGdldCBhcnIgbGFyZ2VzdCkgPiAwXG4gICAgICAgIHRoZW4gcmlnaHRfY2hpbGRcbiAgICAgICAgZWxzZSBsYXJnZXN0XG4gICAgICBpblxuICAgICAgaWYgbGFyZ2VzdCA8PiByb290XG4gICAgICB0aGVuIChcbiAgICAgICAgc3dhcCBhcnIgcm9vdCBsYXJnZXN0O1xuICAgICAgICBoZWFwaWZ5IGFyciB+Y29tcGFyZSBsYXJnZXN0IH5sZWZ0IH5yaWdodClcbiAgICA7O1xuXG4gICAgbGV0IGJ1aWxkX2hlYXAgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICAoKiBFbGVtZW50cyBpbiB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIGFycmF5IGFyZSBhbHJlYWR5IGhlYXBzIG9mIHNpemUgMS4gIFdlIG1vdmVcbiAgICAgICAgIHRocm91Z2ggdGhlIGZpcnN0IGhhbGYgb2YgdGhlIGFycmF5IGZyb20gYmFjayB0byBmcm9udCBleGFtaW5pbmcgdGhlIGVsZW1lbnQgYXRcbiAgICAgICAgIGhhbmQsIGFuZCB0aGUgbGVmdCBhbmQgcmlnaHQgY2hpbGRyZW4sIGZpeGluZyB0aGUgaGVhcCBwcm9wZXJ0eSBhcyB3ZSBnby4gKilcbiAgICAgIGZvciBpID0gKGxlZnQgKyByaWdodCkgLyAyIGRvd250byBsZWZ0IGRvXG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGkgfmxlZnQgfnJpZ2h0XG4gICAgICBkb25lXG4gICAgOztcblxuICAgIGxldCBzb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgYnVpbGRfaGVhcCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0O1xuICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgICAgMS4gIHRoZSBzdWJhcnJheSBhcnJbbGVmdCAuLi4gaV0gaXMgYSBtYXgtaGVhcCBIXG4gICAgICAgICAyLiAgdGhlIHN1YmFycmF5IGFycltpKzEgLi4uIHJpZ2h0XSBpcyBzb3J0ZWQgKGNhbGwgaXQgUylcbiAgICAgICAgIDMuICBldmVyeSBlbGVtZW50IG9mIEggaXMgbGVzcyB0aGFuIGV2ZXJ5IGVsZW1lbnQgb2YgUyAqKVxuICAgICAgZm9yIGkgPSByaWdodCBkb3dudG8gbGVmdCArIDEgZG9cbiAgICAgICAgc3dhcCBhcnIgbGVmdCBpO1xuICAgICAgICBoZWFwaWZ5IGFyciB+Y29tcGFyZSBsZWZ0IH5sZWZ0IH5yaWdodDooaSAtIDEpXG4gICAgICBkb25lXG4gICAgOztcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRyb3NvcnQgKilcbiAgbW9kdWxlIEludHJvX3NvcnQgOiBzaWdcbiAgICBpbmNsdWRlIFNvcnRcblxuICAgIHZhbCBmaXZlX2VsZW1lbnRfc29ydFxuICAgICAgOiAgJ2EgdFxuICAgICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiB1bml0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBmaXZlX2VsZW1lbnRfc29ydCBhcnIgfmNvbXBhcmU6KChjb21wYXJlIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSBtMSBtMiBtMyBtNCBtNSA9XG4gICAgICBsZXQgY29tcGFyZV9hbmRfc3dhcCBpIGogPVxuICAgICAgICBpZiBjb21wYXJlIChnZXQgYXJyIGkpIChnZXQgYXJyIGopID4gMCB0aGVuIHN3YXAgYXJyIGkgalxuICAgICAgaW5cbiAgICAgICgqIE9wdGltYWwgNS1lbGVtZW50IHNvcnRpbmcgbmV0d29yazpcblxuICAgICAgICAge3ZcbiAgICAgICAgICAgIDEtLW8tLS0tLW8tLS0tLW8tLS0tLS0tLS0tLS0tLTFcbiAgICAgICAgICAgICAgIHwgICAgIHwgICAgIHxcbiAgICAgICAgICAgIDItLW8tLS0tLXwtLW8tLXwtLS0tLW8tLW8tLS0tLTJcbiAgICAgICAgICAgICAgICAgICAgIHwgIHwgIHwgICAgIHwgIHxcbiAgICAgICAgICAgIDMtLS0tLS0tLW8tLW8tLXwtLW8tLXwtLW8tLS0tLTNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwgIHxcbiAgICAgICAgICAgIDQtLS0tLW8tLS0tLS0tLW8tLW8tLXwtLS0tLW8tLTRcbiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgIHxcbiAgICAgICAgICAgIDUtLS0tLW8tLS0tLS0tLS0tLS0tLW8tLS0tLW8tLTVcbiAgICAgICAgICB2fSAqKVxuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMSBtMjtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTQgbTU7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0xIG0zO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMiBtMztcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTEgbTQ7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0zIG00O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMiBtNTtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTIgbTM7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG00IG01IFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgKCogY2hvb3NlIHBpdm90cyBmb3IgdGhlIGFycmF5IGJ5IHNvcnRpbmcgNSBlbGVtZW50cyBhbmQgZXhhbWluaW5nIHRoZSBjZW50ZXIgdGhyZWVcbiAgICAgICBlbGVtZW50cy4gIFRoZSBnb2FsIGlzIHRvIGNob29zZSB0d28gcGl2b3RzIHRoYXQgd2lsbCBlaXRoZXI6XG4gICAgICAgLSBicmVhayB0aGUgcmFuZ2UgdXAgaW50byAzIGV2ZW4gcGFydGl0aW9uc1xuICAgICAgICAgb3JcbiAgICAgICAtIGVsaW1pbmF0ZSBhIGNvbW1vbmx5IGFwcGVhcmluZyBlbGVtZW50IGJ5IHNvcnRpbmcgaXQgaW50byB0aGUgY2VudGVyIHBhcnRpdGlvblxuICAgICAgICAgYnkgaXRzZWxmXG4gICAgICAgICBUbyB0aGlzIGVuZCB3ZSBsb29rIGF0IHRoZSBjZW50ZXIgMyBlbGVtZW50cyBvZiB0aGUgNSBhbmQgcmV0dXJuIHBhaXJzIG9mIGVxdWFsXG4gICAgICAgICBlbGVtZW50cyBvciB0aGUgd2lkZXN0IHJhbmdlICopXG4gICAgbGV0IGNob29zZV9waXZvdHMgYXJyIH5jb21wYXJlOigoY29tcGFyZSA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBzaXh0aCA9IChyaWdodCAtIGxlZnQpIC8gNiBpblxuICAgICAgbGV0IG0xID0gbGVmdCArIHNpeHRoIGluXG4gICAgICBsZXQgbTIgPSBtMSArIHNpeHRoIGluXG4gICAgICBsZXQgbTMgPSBtMiArIHNpeHRoIGluXG4gICAgICBsZXQgbTQgPSBtMyArIHNpeHRoIGluXG4gICAgICBsZXQgbTUgPSBtNCArIHNpeHRoIGluXG4gICAgICBmaXZlX2VsZW1lbnRfc29ydCBhcnIgfmNvbXBhcmUgbTEgbTIgbTMgbTQgbTU7XG4gICAgICBsZXQgbTJfdmFsID0gZ2V0IGFyciBtMiBpblxuICAgICAgbGV0IG0zX3ZhbCA9IGdldCBhcnIgbTMgaW5cbiAgICAgIGxldCBtNF92YWwgPSBnZXQgYXJyIG00IGluXG4gICAgICBpZiBjb21wYXJlIG0yX3ZhbCBtM192YWwgPSAwXG4gICAgICB0aGVuIG0yX3ZhbCwgbTNfdmFsLCB0cnVlXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgbTNfdmFsIG00X3ZhbCA9IDBcbiAgICAgIHRoZW4gbTNfdmFsLCBtNF92YWwsIHRydWVcbiAgICAgIGVsc2UgbTJfdmFsLCBtNF92YWwsIGZhbHNlXG4gICAgOztcblxuICAgIGxldCBkdWFsX3Bpdm90X3BhcnRpdGlvbiBhcnIgfmNvbXBhcmU6KChjb21wYXJlIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IHBpdm90MSwgcGl2b3QyLCBwaXZvdHNfZXF1YWwgPSBjaG9vc2VfcGl2b3RzIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgaW5cbiAgICAgICgqIGxvb3AgaW52YXJpYW50czpcbiAgICAgICAgIDEuICBsZWZ0IDw9IGwgPCByIDw9IHJpZ2h0XG4gICAgICAgICAyLiAgbCA8PSBwIDw9IHJcbiAgICAgICAgIDMuICBsIDw9IHggPCBwICAgICBpbXBsaWVzIGFyclt4XSA+PSBwaXZvdDFcbiAgICAgICAgIGFuZCBhcnJbeF0gPD0gcGl2b3QyXG4gICAgICAgICA0LiAgbGVmdCA8PSB4IDwgbCAgaW1wbGllcyBhcnJbeF0gPCBwaXZvdDFcbiAgICAgICAgIDUuICByIDwgeCA8PSByaWdodCBpbXBsaWVzIGFyclt4XSA+IHBpdm90MiAqKVxuICAgICAgbGV0IHJlYyBsb29wIGwgcCByID1cbiAgICAgICAgbGV0IHB2ID0gZ2V0IGFyciBwIGluXG4gICAgICAgIGlmIGNvbXBhcmUgcHYgcGl2b3QxIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBzd2FwIGFyciBwIGw7XG4gICAgICAgICAgY29udCAobCArIDEpIChwICsgMSkgcilcbiAgICAgICAgZWxzZSBpZiBjb21wYXJlIHB2IHBpdm90MiA+IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOiAgc2FtZSBhcyB0aG9zZSBvZiB0aGUgb3V0ZXIgbG9vcCAqKVxuICAgICAgICAgIGxldCByZWMgc2Nhbl9iYWNrd2FyZHMgciA9XG4gICAgICAgICAgICBpZiByID4gcCAmJiBjb21wYXJlIChnZXQgYXJyIHIpIHBpdm90MiA+IDAgdGhlbiBzY2FuX2JhY2t3YXJkcyAociAtIDEpIGVsc2UgclxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHIgPSBzY2FuX2JhY2t3YXJkcyByIGluXG4gICAgICAgICAgc3dhcCBhcnIgciBwO1xuICAgICAgICAgIGNvbnQgbCBwIChyIC0gMSkpXG4gICAgICAgIGVsc2UgY29udCBsIChwICsgMSkgclxuICAgICAgYW5kIGNvbnQgbCBwIHIgPSBpZiBwID4gciB0aGVuIGwsIHIgZWxzZSBsb29wIGwgcCByIGluXG4gICAgICBsZXQgbCwgciA9IGNvbnQgbGVmdCBsZWZ0IHJpZ2h0IGluXG4gICAgICBsLCByLCBwaXZvdHNfZXF1YWxcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgbGVuID0gcmlnaHQgLSBsZWZ0ICsgMSBpblxuICAgICAgKCogVGhpcyB0YWtlcyBjYXJlIG9mIHNvbWUgZWRnZSBjYXNlcywgc3VjaCBhcyBsZWZ0ID4gcmlnaHQgb3IgdmVyeSBzaG9ydCBhcnJheXMsXG4gICAgICAgICBzaW5jZSBJbnNlcnRpb25fc29ydC5zb3J0IGhhbmRsZXMgdGhlc2UgY2FzZXMgcHJvcGVybHkuICBUaHVzIHdlIGRvbid0IG5lZWQgdG9cbiAgICAgICAgIG1ha2Ugc3VyZSB0aGF0IGxlZnQgYW5kIHJpZ2h0IGFyZSB2YWxpZCBpbiByZWN1cnNpdmUgY2FsbHMuICopXG4gICAgICBpZiBsZW4gPD0gMzJcbiAgICAgIHRoZW4gSW5zZXJ0aW9uX3NvcnQuc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgICBlbHNlIGlmIG1heF9kZXB0aCA8IDBcbiAgICAgIHRoZW4gSGVhcF9zb3J0LnNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBtYXhfZGVwdGggPSBtYXhfZGVwdGggLSAxIGluXG4gICAgICAgIGxldCBsLCByLCBtaWRkbGVfc29ydGVkID0gZHVhbF9waXZvdF9wYXJ0aXRpb24gYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCBpblxuICAgICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0IH5yaWdodDoobCAtIDEpO1xuICAgICAgICBpZiBub3QgbWlkZGxlX3NvcnRlZCB0aGVuIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQ6bCB+cmlnaHQ6cjtcbiAgICAgICAgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdDoociArIDEpIH5yaWdodClcbiAgICA7O1xuXG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgaGVhcF9zb3J0X3N3aXRjaF9kZXB0aCA9XG4gICAgICAgICgqIFdlIGJhaWwgb3V0IHRvIGhlYXAgc29ydCBhdCBhIHJlY3Vyc2lvbiBkZXB0aCBvZiAzMi4gR05VIGludHJvc29ydCB1c2VzIDJsZyhuKS5cbiAgICAgICAgICAgVGhlIGV4cGVjdGVkIHJlY3Vyc2lvbiBkZXB0aCBmb3IgcGVyZmVjdCAzLXdheSBzcGxpdHMgaXMgbG9nXzMobikuXG5cbiAgICAgICAgICAgVXNpbmcgMzIgbWVhbnMgYSBiYWxhbmNlZCAzLXdheSBzcGxpdCB3b3VsZCB3b3JrIHVwIHRvIDNeMzIgZWxlbWVudHMgKHJvdWdobHlcbiAgICAgICAgICAgMl41MCBvciAxMF4xNSkuIEdOVSByZWFjaGVzIGEgZGVwdGggb2YgMzIgYXQgNjU1MzYgZWxlbWVudHMuXG5cbiAgICAgICAgICAgRm9yIHNtYWxsIGFycmF5cywgdGhpcyBtYWtlcyB1cyBsZXNzIGxpa2VseSB0byBiYWlsIG91dCB0byBoZWFwIHNvcnQsIGJ1dCB0aGVcbiAgICAgICAgICAgMzIqTiBjb3N0IGJlZm9yZSB3ZSBkbyBpcyBub3QgdGhhdCBtdWNoLlxuXG4gICAgICAgICAgIEZvciBsYXJnZSBhcnJheXMsIHRoaXMgbWVhbnMgd2UgYXJlIG1vcmUgbGlrZWx5IHRvIGJhaWwgb3V0IHRvIGhlYXAgc29ydCBhdFxuICAgICAgICAgICBzb21lIHBvaW50IGlmIHdlIGdldCBzb21lIGJhZCBzcGxpdHMgb3IgaWYgdGhlIGFycmF5IGlzIGh1Z2UuIEJ1dCB0aGF0J3Mgb25seSBhXG4gICAgICAgICAgIGNvbnN0YW50IGZhY3RvciBjb3N0IGluIHRoZSBmaW5hbCBzdGFnZXMgb2YgcmVjdXJzaW9uLlxuXG4gICAgICAgICAgIEFsbCBpbiBhbGwsIHRoaXMgc2VlbXMgdG8gYmUgYSBzbWFsbCB0cmFkZW9mZiBhbmQgYXZvaWRzIHBheWluZyBhIGNvc3QgdG9cbiAgICAgICAgICAgY29tcHV0ZSBhIGxvZ2FyaXRobSBhdCB0aGUgc3RhcnQuICopXG4gICAgICAgIDMyXG4gICAgICBpblxuICAgICAgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aDpoZWFwX3NvcnRfc3dpdGNoX2RlcHRoIH5jb21wYXJlIH5sZWZ0IH5yaWdodFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzb3J0ID9wb3MgP2xlbiBhcnIgfmNvbXBhcmU6KChjb21wYXJlIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gICAgbGV0IHBvcywgbGVuID1cbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggYXJyKVxuICAgIGluXG4gICAgSW50cm9fc29ydC5zb3J0IGFyciB+Y29tcGFyZSB+bGVmdDpwb3MgfnJpZ2h0Oihwb3MgKyBsZW4gLSAxKVxuICA7O1xuZW5kXG5bQEBpbmxpbmVdXG5cbm1vZHVsZSBTb3J0ID0gU29ydGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCA9IHVuc2FmZV9nZXRcbiAgICBsZXQgc2V0ID0gdW5zYWZlX3NldFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgc29ydCA9IFNvcnQuc29ydFxubGV0IG9mX2FycmF5IHQgPSB0XG5sZXQgdG9fYXJyYXkgdCA9IHRcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCBpc19zb3J0ZWQgdCB+Y29tcGFyZSA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+IDAgJiYgIXJlc3VsdCBkb1xuICAgIGxldCBlbHRfaSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgIGxldCBlbHRfaV9taW51c18xID0gdW5zYWZlX2dldCB0ICghaSAtIDEpIGluXG4gICAgaWYgY29tcGFyZSBlbHRfaV9taW51c18xIGVsdF9pID4gMCB0aGVuIHJlc3VsdCA6PSBmYWxzZTtcbiAgICBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGlzX3NvcnRlZF9zdHJpY3RseSB0IH5jb21wYXJlID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID4gMCAmJiAhcmVzdWx0IGRvXG4gICAgbGV0IGVsdF9pID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgbGV0IGVsdF9pX21pbnVzXzEgPSB1bnNhZmVfZ2V0IHQgKCFpIC0gMSkgaW5cbiAgICBpZiBjb21wYXJlIGVsdF9pX21pbnVzXzEgZWx0X2kgPj0gMCB0aGVuIHJlc3VsdCA6PSBmYWxzZTtcbiAgICBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IG1lcmdlIGExIGEyIH5jb21wYXJlID1cbiAgbGV0IGwxID0gQXJyYXkubGVuZ3RoIGExIGluXG4gIGxldCBsMiA9IEFycmF5Lmxlbmd0aCBhMiBpblxuICBpZiBsMSA9IDBcbiAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbDIgPSAwXG4gIHRoZW4gY29weSBhMVxuICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYTIgMCkgKHVuc2FmZV9nZXQgYTEgKGwxIC0gMSkpID49IDBcbiAgdGhlbiBhcHBlbmQgYTEgYTJcbiAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGExIDApICh1bnNhZmVfZ2V0IGEyIChsMiAtIDEpKSA+IDBcbiAgdGhlbiBhcHBlbmQgYTIgYTFcbiAgZWxzZSAoXG4gICAgbGV0IGxlbiA9IGwxICsgbDIgaW5cbiAgICBsZXQgbWVyZ2VkID0gY3JlYXRlIH5sZW4gKHVuc2FmZV9nZXQgYTEgMCkgaW5cbiAgICBsZXQgYTFfaW5kZXggPSByZWYgMCBpblxuICAgIGxldCBhMl9pbmRleCA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCB1c2VfYTEgPVxuICAgICAgICBpZiBsMSA9ICFhMV9pbmRleFxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgaWYgbDIgPSAhYTJfaW5kZXhcbiAgICAgICAgdGhlbiB0cnVlXG4gICAgICAgIGVsc2UgY29tcGFyZSAodW5zYWZlX2dldCBhMSAhYTFfaW5kZXgpICh1bnNhZmVfZ2V0IGEyICFhMl9pbmRleCkgPD0gMFxuICAgICAgaW5cbiAgICAgIGlmIHVzZV9hMVxuICAgICAgdGhlbiAoXG4gICAgICAgIHVuc2FmZV9zZXQgbWVyZ2VkIGkgKHVuc2FmZV9nZXQgYTEgIWExX2luZGV4KTtcbiAgICAgICAgYTFfaW5kZXggOj0gIWExX2luZGV4ICsgMSlcbiAgICAgIGVsc2UgKFxuICAgICAgICB1bnNhZmVfc2V0IG1lcmdlZCBpICh1bnNhZmVfZ2V0IGEyICFhMl9pbmRleCk7XG4gICAgICAgIGEyX2luZGV4IDo9ICFhMl9pbmRleCArIDEpXG4gICAgZG9uZTtcbiAgICBtZXJnZWQpXG47O1xuXG5sZXQgY29weV9tYXRyaXggPSBtYXAgfmY6Y29weVxuXG5sZXQgZm9sZGluZ19tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG5sZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGFjYyA6PSBmIGkgIWFjYyAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmU7XG4gICFhY2Ncbjs7XG5cbmxldCBmb2xkaW5nX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgY291bnRpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpZHggY291bnQgYSAtPiBpZiBmIGlkeCBhIHRoZW4gY291bnQgKyAxIGVsc2UgY291bnQpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBjb25jYXRfbWFwIHQgfmYgPSBjb25jYXQgKHRvX2xpc3QgKG1hcCB+ZiB0KSlcbmxldCBjb25jYXRfbWFwaSB0IH5mID0gY29uY2F0ICh0b19saXN0IChtYXBpIH5mIHQpKVxuXG5sZXQgcmV2X2lucGxhY2UgdCA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgd2hpbGUgIWkgPCAhaiBkb1xuICAgIHN3YXAgdCAhaSAhajtcbiAgICBpbmNyIGk7XG4gICAgZGVjciBqXG4gIGRvbmVcbjs7XG5cbmxldCByZXYgdCA9XG4gIGxldCB0ID0gY29weSB0IGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0X3JldiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IGEgOjogbCAtPlxuICAgIGxldCBsZW4gPSAxICsgTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCB0ID0gY3JlYXRlIH5sZW4gYSBpblxuICAgIGxldCByID0gcmVmIGwgaW5cbiAgICAoKiBXZSBzdGFydCBhdCBbbGVuIC0gMl0gYmVjYXVzZSB3ZSBhbHJlYWR5IHB1dCBbYV0gYXQgW3QuKGxlbiAtIDEpXS4gKilcbiAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IGEgOjogbCAtPlxuICAgICAgICB0LihpKSA8LSBhO1xuICAgICAgICByIDo9IGxcbiAgICBkb25lO1xuICAgIHRcbjs7XG5cbigqIFtvZl9saXN0X21hcF0gYW5kIFtvZl9saXN0X3Jldl9tYXBdIGFyZSBiYXNlZCBvbiBmdW5jdGlvbnMgZnJvbSB0aGUgT0NhbWxcbiAgIGRpc3RyaWJ1dGlvbi4gKilcblxubGV0IG9mX2xpc3RfbWFwIHhzIH5mID1cbiAgbWF0Y2ggeHMgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCBoZCA6OiB0bCAtPlxuICAgIGxldCBhID0gY3JlYXRlIH5sZW46KDEgKyBMaXN0Lmxlbmd0aCB0bCkgKGYgaGQpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBhXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIHVuc2FmZV9zZXQgYSBpIChmIGhkKTtcbiAgICAgICAgZmlsbCAoaSArIDEpIHRsXG4gICAgaW5cbiAgICBmaWxsIDEgdGwgW0Bub250YWlsXVxuOztcblxubGV0IG9mX2xpc3RfbWFwaSB4cyB+ZiA9XG4gIG1hdGNoIHhzIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgaGQgOjogdGwgLT5cbiAgICBsZXQgYSA9IGNyZWF0ZSB+bGVuOigxICsgTGlzdC5sZW5ndGggdGwpIChmIDAgaGQpIGluXG4gICAgbGV0IHJlYyBmaWxsIGEgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgdW5zYWZlX3NldCBhIGkgKGYgaSBoZCk7XG4gICAgICAgIGZpbGwgYSAoaSArIDEpIHRsXG4gICAgaW5cbiAgICBmaWxsIGEgMSB0bCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgb2ZfbGlzdF9yZXZfbWFwIHhzIH5mID1cbiAgbGV0IHQgPSBvZl9saXN0X21hcCB4cyB+ZiBpblxuICByZXZfaW5wbGFjZSB0O1xuICB0XG47O1xuXG5sZXQgb2ZfbGlzdF9yZXZfbWFwaSB4cyB+ZiA9XG4gIGxldCB0ID0gb2ZfbGlzdF9tYXBpIHhzIH5mIGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHIgPSByZWYgW3x8XSBpblxuICBsZXQgayA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBtYXRjaCBmIGkgKHVuc2FmZV9nZXQgdCBpKSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGEgLT5cbiAgICAgIGlmICFrID0gMCB0aGVuIHIgOj0gY3JlYXRlIH5sZW46KGxlbmd0aCB0KSBhO1xuICAgICAgdW5zYWZlX3NldCAhciAhayBhO1xuICAgICAgaW5jciBrXG4gIGRvbmU7XG4gIGlmICFrID0gbGVuZ3RoIHQgdGhlbiAhciBlbHNlIGlmICFrID4gMCB0aGVuIHN1YiB+cG9zOjAgfmxlbjohayAhciBlbHNlIFt8fF1cbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gX2kgYSAtPiBmIGEpIFtAbm9udGFpbF1cbmxldCBmaWx0ZXJfb3B0IHQgPSBmaWx0ZXJfbWFwIHQgfmY6Rm4uaWRcblxubGV0IHJhaXNlX2xlbmd0aF9taXNtYXRjaCBuYW1lIG4xIG4yID1cbiAgaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZFwiIG5hbWUgbjEgbjIgKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMl9leG4gbmFtZSB0MSB0MiA9XG4gIGxldCBuMSA9IGxlbmd0aCB0MSBpblxuICBsZXQgbjIgPSBsZW5ndGggdDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiByYWlzZV9sZW5ndGhfbWlzbWF0Y2ggbmFtZSBuMSBuMlxuOztcblxubGV0IGl0ZXIyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuaXRlcjJfZXhuXCIgdDEgdDI7XG4gIGl0ZXJpIHQxIH5mOihmdW4gaSB4MSAtPiBmIHgxICh1bnNhZmVfZ2V0IHQyIGkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWFwMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5Lm1hcDJfZXhuXCIgdDEgdDI7XG4gIGluaXQgKGxlbmd0aCB0MSkgfmY6KGZ1biBpIC0+IGYgKHVuc2FmZV9nZXQgdDEgaSkgKHVuc2FmZV9nZXQgdDIgaSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkMl9leG4gdDEgdDIgfmluaXQgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmZvbGQyX2V4blwiIHQxIHQyO1xuICBmb2xkaSB0MSB+aW5pdCB+ZjooZnVuIGkgYWMgeCAtPiBmIGFjIHggKHVuc2FmZV9nZXQgdDIgaSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9IGZpbHRlcl9tYXAgdCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSkgW0Bub250YWlsXVxubGV0IGZpbHRlcmkgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiBTb21lIHggZWxzZSBOb25lKSBbQG5vbnRhaWxdXG5cblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiBmYWxzZSBpblxuICB3aGlsZSAhaSA+PSAwICYmIG5vdCAhcmVzdWx0IGRvXG4gICAgaWYgZiAodW5zYWZlX2dldCB0ICFpKSB0aGVuIHJlc3VsdCA6PSB0cnVlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICFpICh1bnNhZmVfZ2V0IHQgIWkpIHRoZW4gcmVzdWx0IDo9IHRydWUgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID0gZXhpc3RzIHQgfmY6KGVxdWFsIGEpIFtAbm9udGFpbF1cblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgKHVuc2FmZV9nZXQgdCAhaSkpIHRoZW4gcmVzdWx0IDo9IGZhbHNlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGxldCBpID0gcmVmIChsZW5ndGggLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiAhcmVzdWx0IGRvXG4gICAgaWYgbm90IChmICFpICh1bnNhZmVfZ2V0IHQgIWkpKSB0aGVuIHJlc3VsdCA6PSBmYWxzZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZXhpc3RzMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmV4aXN0czJfZXhuXCIgdDEgdDI7XG4gIGxldCBpID0gcmVmIChsZW5ndGggdDEgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICh1bnNhZmVfZ2V0IHQxICFpKSAodW5zYWZlX2dldCB0MiAhaSkgdGhlbiByZXN1bHQgOj0gdHJ1ZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZm9yX2FsbDJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5mb3JfYWxsMl9leG5cIiB0MSB0MjtcbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0MSAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgKHVuc2FmZV9nZXQgdDEgIWkpICh1bnNhZmVfZ2V0IHQyICFpKSkgdGhlbiByZXN1bHQgOj0gZmFsc2UgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGVxdWFsIGVxdWFsIHQxIHQyID0gbGVuZ3RoIHQxID0gbGVuZ3RoIHQyICYmIGZvcl9hbGwyX2V4biB0MSB0MiB+ZjplcXVhbFxuXG5cbmxldCBtYXBfaW5wbGFjZSB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgdCBpIChmICh1bnNhZmVfZ2V0IHQgaSkpXG4gIGRvbmVcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gZmluZGlfaW50ZXJuYWwgdCB+ZiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gaWZfbm90X2ZvdW5kICgpXG4gIGVsc2UgKFxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgZm91bmQgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgdmFsdWVfZm91bmQgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIHdoaWxlIChub3QgIWZvdW5kKSAmJiAhaSA8IGxlbmd0aCBkb1xuICAgICAgbGV0IHZhbHVlID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICBpZiBmICFpIHZhbHVlXG4gICAgICB0aGVuIChcbiAgICAgICAgdmFsdWVfZm91bmQgOj0gdmFsdWU7XG4gICAgICAgIGZvdW5kIDo9IHRydWUpXG4gICAgICBlbHNlIGluY3IgaVxuICAgIGRvbmU7XG4gICAgaWYgIWZvdW5kIHRoZW4gaWZfZm91bmQgfmk6IWkgfnZhbHVlOiF2YWx1ZV9mb3VuZCBlbHNlIGlmX25vdF9mb3VuZCAoKSlcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmZcbiAgICB+aWZfZm91bmQ6KGZ1biB+aSB+dmFsdWUgLT4gU29tZSAoaSwgdmFsdWUpKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biAoKSAtPiBOb25lKVxuOztcblxubGV0IGZpbmRpX2V4biB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmZcbiAgICB+aWZfZm91bmQ6KGZ1biB+aSB+dmFsdWUgLT4gaSwgdmFsdWUpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuICgpIC0+IHJhaXNlIChOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRpX2V4bjogbm90IGZvdW5kXCIpKSlcbjs7XG5cbmxldCBmaW5kX2V4biB0IH5mID1cbiAgZmluZGlfaW50ZXJuYWxcbiAgICB0XG4gICAgfmY6KGZ1biBfaSB4IC0+IGYgeClcbiAgICB+aWZfZm91bmQ6KGZ1biB+aTpfIH52YWx1ZSAtPiB2YWx1ZSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4gKCkgLT4gcmFpc2UgKE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZF9leG46IG5vdCBmb3VuZFwiKSkpXG4gIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kIHQgfmYgPSBPcHRpb24ubWFwIChmaW5kaSB0IH5mOihmdW4gX2kgeCAtPiBmIHgpKSB+ZjooZnVuIChfaSwgeCkgLT4geClcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiBOb25lIGluXG4gICAgd2hpbGUgT3B0aW9uLmlzX25vbmUgIXZhbHVlX2ZvdW5kICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIHZhbHVlX2ZvdW5kIDo9IGYgdmFsdWU7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgICF2YWx1ZV9mb3VuZClcbjs7XG5cbmxldCBmaW5kX21hcF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX21hcF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBfZXhuXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiBOb25lIGluXG4gICAgd2hpbGUgT3B0aW9uLmlzX25vbmUgIXZhbHVlX2ZvdW5kICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIHZhbHVlX2ZvdW5kIDo9IGYgIWkgdmFsdWU7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgICF2YWx1ZV9mb3VuZClcbjs7XG5cbmxldCBmaW5kX21hcGlfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZF9tYXBpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwaSB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwaV9leG5cbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSB0IH5lcXVhbCA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbiA8PSAxXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVzdWx0ID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgaSA9IHJlZiAxIGluXG4gICAgbGV0IHByZXYgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIHdoaWxlICFpIDwgbiBkb1xuICAgICAgbGV0IGN1ciA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgaWYgZXF1YWwgY3VyICFwcmV2XG4gICAgICB0aGVuIChcbiAgICAgICAgcmVzdWx0IDo9IFNvbWUgKCFwcmV2LCBjdXIpO1xuICAgICAgICBpIDo9IG4pXG4gICAgICBlbHNlIChcbiAgICAgICAgcHJldiA6PSBjdXI7XG4gICAgICAgIGluY3IgaSlcbiAgICBkb25lO1xuICAgICFyZXN1bHQpXG47O1xuXG5sZXQgcmVkdWNlIHQgfmYgPVxuICBpZiBsZW5ndGggdCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByID0gcmVmICh1bnNhZmVfZ2V0IHQgMCkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgdCBpKVxuICAgIGRvbmU7XG4gICAgU29tZSAhcilcbjs7XG5cbmxldCByZWR1Y2VfZXhuIHQgfmYgPVxuICBtYXRjaCByZWR1Y2UgdCB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkFycmF5LnJlZHVjZV9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgcGVybXV0ZSA9IEFycmF5X3Blcm11dGUucGVybXV0ZVxuXG5sZXQgcmFuZG9tX2VsZW1lbnRfZXhuID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJBcnJheS5yYW5kb21fZWxlbWVudF9leG46IGVtcHR5IGFycmF5XCJcbiAgZWxzZSB0LihSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAobGVuZ3RoIHQpKVxuOztcblxubGV0IHJhbmRvbV9lbGVtZW50ID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgPVxuICB0cnkgU29tZSAocmFuZG9tX2VsZW1lbnRfZXhuIH5yYW5kb21fc3RhdGUgdCkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHppcCB0MSB0MiA9XG4gIGlmIGxlbmd0aCB0MSA8PiBsZW5ndGggdDIgdGhlbiBOb25lIGVsc2UgU29tZSAobWFwMl9leG4gdDEgdDIgfmY6KGZ1biB4MSB4MiAtPiB4MSwgeDIpKVxuOztcblxubGV0IHppcF9leG4gdDEgdDIgPVxuICBpZiBsZW5ndGggdDEgPD4gbGVuZ3RoIHQyXG4gIHRoZW4gZmFpbHdpdGggXCJBcnJheS56aXBfZXhuXCJcbiAgZWxzZSBtYXAyX2V4biB0MSB0MiB+ZjooZnVuIHgxIHgyIC0+IHgxLCB4Milcbjs7XG5cbmxldCB1bnppcCB0ID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBpZiBuID0gMFxuICB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHgsIHkgPSB0LigwKSBpblxuICAgIGxldCByZXMxID0gY3JlYXRlIH5sZW46biB4IGluXG4gICAgbGV0IHJlczIgPSBjcmVhdGUgfmxlbjpuIHkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgIGxldCB4LCB5ID0gdC4oaSkgaW5cbiAgICAgIHJlczEuKGkpIDwtIHg7XG4gICAgICByZXMyLihpKSA8LSB5XG4gICAgZG9uZTtcbiAgICByZXMxLCByZXMyKVxuOztcblxubGV0IHNvcnRlZF9jb3B5IHQgfmNvbXBhcmUgPVxuICBsZXQgdDEgPSBjb3B5IHQgaW5cbiAgc29ydCB0MSB+Y29tcGFyZTtcbiAgdDFcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgbGV0IChib3RoIDogXyBFaXRoZXIudCB0KSA9IG1hcGkgdCB+ZiBpblxuICBsZXQgZmlyc3RzID1cbiAgICBmaWx0ZXJfbWFwIGJvdGggfmY6KGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IHggLT4gU29tZSB4XG4gICAgICB8IFNlY29uZCBfIC0+IE5vbmUpXG4gIGluXG4gIGxldCBzZWNvbmRzID1cbiAgICBmaWx0ZXJfbWFwIGJvdGggfmY6KGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IF8gLT4gTm9uZVxuICAgICAgfCBTZWNvbmQgeCAtPiBTb21lIHgpXG4gIGluXG4gIGZpcnN0cywgc2Vjb25kc1xuOztcblxubGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gIHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiBGaXJzdCB4IGVsc2UgU2Vjb25kIHgpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gXyB4IC0+IGYgeCkgW0Bub250YWlsXVxubGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gXyB4IC0+IGYgeCkgW0Bub250YWlsXVxubGV0IGxhc3QgdCA9IHQuKGxlbmd0aCB0IC0gMSlcblxuKCogQ29udmVydCB0byBhIHNlcXVlbmNlIGJ1dCBkb2VzIG5vdCBhdHRlbXB0IHRvIHByb3RlY3QgYWdhaW5zdCBtb2RpZmljYXRpb25cbiAgIGluIHRoZSBhcnJheS4gKilcbmxldCB0b19zZXF1ZW5jZV9tdXRhYmxlIHQgPVxuICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDowIH5mOihmdW4gaSAtPlxuICAgIGlmIGkgPj0gbGVuZ3RoIHRcbiAgICB0aGVuIFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgIGVsc2UgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gdC4oaSk7IHN0YXRlID0gaSArIDEgfSlcbjs7XG5cbmxldCB0b19zZXF1ZW5jZSB0ID0gdG9fc2VxdWVuY2VfbXV0YWJsZSAoY29weSB0KVxuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3QgdDEgdDIgPVxuICBpZiBpc19lbXB0eSB0MSB8fCBpc19lbXB0eSB0MlxuICB0aGVuIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IG4xID0gbGVuZ3RoIHQxIGluXG4gICAgbGV0IG4yID0gbGVuZ3RoIHQyIGluXG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbjoobjEgKiBuMikgKHQxLigwKSwgdDIuKDApKSBpblxuICAgIGxldCByID0gcmVmIDAgaW5cbiAgICBmb3IgaTEgPSAwIHRvIG4xIC0gMSBkb1xuICAgICAgZm9yIGkyID0gMCB0byBuMiAtIDEgZG9cbiAgICAgICAgdC4oIXIpIDwtIHQxLihpMSksIHQyLihpMik7XG4gICAgICAgIGluY3IgclxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgdClcbjs7XG5cbmxldCB0cmFuc3Bvc2UgdHQgPVxuICBpZiBsZW5ndGggdHQgPSAwXG4gIHRoZW4gU29tZSBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCB3aWR0aCA9IGxlbmd0aCB0dCBpblxuICAgIGxldCBkZXB0aCA9IGxlbmd0aCB0dC4oMCkgaW5cbiAgICBpZiBleGlzdHMgdHQgfmY6KGZ1biB0IC0+IGxlbmd0aCB0IDw+IGRlcHRoKVxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAoaW5pdCBkZXB0aCB+ZjooZnVuIGQgLT4gaW5pdCB3aWR0aCB+ZjooZnVuIHcgLT4gdHQuKHcpLihkKSkpKSlcbjs7XG5cbmxldCB0cmFuc3Bvc2VfZXhuIHR0ID1cbiAgbWF0Y2ggdHJhbnNwb3NlIHR0IHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiQXJyYXkudHJhbnNwb3NlX2V4blwiXG4gIHwgU29tZSB0dCcgLT4gdHQnXG47O1xuXG5pbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCA9IGdldFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgZW5kKVxuXG5pbmNsdWRlIEJsaXQuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiB0ID1cbiAgICAgIGlmIGxlbiA9IDBcbiAgICAgIHRoZW4gW3x8XVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFzc2VydCAobGVuZ3RoIHQgPiAwKTtcbiAgICAgICAgY3JlYXRlIH5sZW4gdC4oMCkpXG4gICAgOztcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaXRlciB0IH5mOmludmFyaWFudF9hXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBTb3J0ID0gU29ydFxuICBtb2R1bGUgU29ydGVyID0gU29ydGVyXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxuKCogV2UgbWFpbnRhaW4gdGhlIHByb3BlcnR5IHRoYXQgYWxsIHZhbHVlcyBvZiB0eXBlIFt0XSBkbyBub3QgaGF2ZSB0aGUgdGFnXG4gICBbZG91YmxlX2FycmF5X3RhZ10uICBTb21lIGZ1bmN0aW9ucyBiZWxvdyBhc3N1bWUgdGhpcyBpbiBvcmRlciB0byBhdm9pZCB0ZXN0aW5nIHRoZVxuICAgdGFnLCBhbmQgd2lsbCBzZWdmYXVsdCBpZiB0aGlzIHByb3BlcnR5IGRvZXNuJ3QgaG9sZC4gKilcbnR5cGUgdCA9IFN0ZGxpYi5PYmoudCBhcnJheVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBhc3NlcnQgKFN0ZGxpYi5PYmoudGFnIChTdGRsaWIuT2JqLnJlcHIgdCkgPD4gU3RkbGliLk9iai5kb3VibGVfYXJyYXlfdGFnKVxuOztcblxubGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCAoKiB3b3VsZCBjaGVjayBmb3IgZmxvYXQgYXJyYXlzIGluIDMyIGJpdCwgYnV0IHdoYXRldmVyICopXG5cbmxldCBzZXhwX29mX3QgdCA9XG4gIFNleHAuQXRvbVxuICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIFwiPE9ial9hcnJheS50IG9mIGxlbmd0aCBcIjsgSW50LnRvX3N0cmluZyAobGVuZ3RoIHQpOyBcIj5cIiBdKVxuOztcblxubGV0IHplcm9fb2JqID0gU3RkbGliLk9iai5yZXByICgwIDogaW50KVxuXG4oKiBXZSBjYWxsIFtBcnJheS5jcmVhdGVdIHdpdGggYSB2YWx1ZSB0aGF0IGlzIG5vdCBhIGZsb2F0IHNvIHRoYXQgdGhlIGFycmF5IGRvZXNuJ3QgZ2V0XG4gICB0YWdnZWQgd2l0aCBbRG91YmxlX2FycmF5X3RhZ10uICopXG5sZXQgY3JlYXRlX3plcm8gfmxlbiA9IEFycmF5LmNyZWF0ZSB+bGVuIHplcm9fb2JqXG5sZXQgZW1wdHkgPSBbfHxdXG5cbnR5cGUgbm90X2FfZmxvYXQgPVxuICB8IE5vdF9hX2Zsb2F0XzBcbiAgfCBOb3RfYV9mbG9hdF8xIG9mIGludFxuXG5sZXQgX25vdF9hX2Zsb2F0XzAgPSBOb3RfYV9mbG9hdF8wXG5sZXQgX25vdF9hX2Zsb2F0XzEgPSBOb3RfYV9mbG9hdF8xIDQyXG5cbmxldCBnZXQgdCBpID1cbiAgKCogTWFrZSB0aGUgY29tcGlsZXIgYmVsaWV2ZSBbdF0gaXMgYW4gYXJyYXkgbm90IGNvbnRhaW5pbmcgZmxvYXRzIHNvIGl0IGRvZXMgbm90IGNoZWNrXG4gICAgIGlmIFt0XSBpcyB0YWdnZWQgd2l0aCBbRG91YmxlX2FycmF5X3RhZ10uICBJdCBpcyBOT1Qgb2sgdG8gdXNlIFtpbnQgYXJyYXldIHNpbmNlIChpZlxuICAgICB0aGlzIGZ1bmN0aW9uIGlzIGlubGluZWQgYW5kIHRoZSBhcnJheSBjb250YWlucyBpbi1oZWFwIGJveGVkIHZhbHVlcykgd3JvbmcgcmVnaXN0ZXJcbiAgICAgdHlwaW5nIG1heSByZXN1bHQsIGxlYWRpbmcgdG8gYSBmYWlsdXJlIHRvIHJlZ2lzdGVyIG5lY2Vzc2FyeSBHQyByb290cy4gKilcbiAgU3RkbGliLk9iai5yZXByXG4gICAgKCogW1N5cy5vcGFxdWVfaWRlbnRpdHldIGlzIHJlcXVpcmVkIG9uIHRoZSBhcnJheSBiZWNhdXNlIHRoaXMgY29kZSBicmVha3MgdGhlIHVzdWFsXG4gICAgICAgYXNzdW1wdGlvbnMgYWJvdXQgYXJyYXkga2luZHMgdGhhdCB0aGUgRmxhbWJkYSAyIG9wdGltaXNlciBjYW4gc2VlLiAqKVxuICAgICgoU3lzLm9wYXF1ZV9pZGVudGl0eSAoU3RkbGliLk9iai5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpKS4oaSlcbiAgICAgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX2dldCB0IGkgPVxuICAoKiBNYWtlIHRoZSBjb21waWxlciBiZWxpZXZlIFt0XSBpcyBhbiBhcnJheSBub3QgY29udGFpbmluZyBmbG9hdHMgc28gaXQgZG9lcyBub3QgY2hlY2tcbiAgICAgaWYgW3RdIGlzIHRhZ2dlZCB3aXRoIFtEb3VibGVfYXJyYXlfdGFnXS4gKilcbiAgU3RkbGliLk9iai5yZXByXG4gICAgKEFycmF5LnVuc2FmZV9nZXRcbiAgICAgICAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoT2JqX2xvY2FsLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkpXG4gICAgICAgaVxuICAgICA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9iaiA9XG4gICgqIFNhbWUgY29tbWVudCBhcyBbdW5zYWZlX2dldF0uIFN5cy5vcGFxdWVfaWRlbnRpdHkgcHJldmVudHMgdGhlIGNvbXBpbGVyIGZyb21cbiAgICAgcG90ZW50aWFsbHkgd3JvbmdseSBndWVzc2luZyB0aGUgdHlwZSBvZiB0aGUgYXJyYXkgYmFzZWQgb24gdGhlIHR5cGUgb2YgZWxlbWVudCwgdGhhdFxuICAgICBpcyBwcmV2ZW50IHRoZSBpbXBsaWNhdGlvbjogKE9iai50YWcgb2JqID0gT2JqLmRvdWJsZV90YWcpID0+IChPYmoudGFnIHQgPVxuICAgICBPYmouZG91YmxlX2FycmF5X3RhZykgd2hpY2ggZmxhbWJkYSBoYXMgdHJpZWQgaW4gdGhlIHBhc3QgKGF0IGxlYXN0IHRoYXQncyBhc3N1bWluZ1xuICAgICB0aGUgY29tcGlsZXIgcmVzcGVjdHMgU3lzLm9wYXF1ZV9pZGVudGl0eSwgd2hpY2ggaXMgbm90IGFsd2F5cyB0aGUgY2FzZSkuICopXG4gIEFycmF5LnVuc2FmZV9zZXRcbiAgICAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoT2JqX2xvY2FsLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkpXG4gICAgaVxuICAgIChTdGRsaWIuT2JqLm9iaiAoU3lzLm9wYXF1ZV9pZGVudGl0eSBvYmopIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmogPVxuICAoKiBzYW1lIGFzIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSBidXQgc2FmZSAqKVxuICAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoU3RkbGliLk9iai5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpKS4oaSlcbiAgPC0gKFN0ZGxpYi5PYmoub2JqIChTeXMub3BhcXVlX2lkZW50aXR5IG9iaikgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgaW50ID1cbiAgKCogVGhpcyBza2lwcyBbY2FtbF9tb2RpZnldLCB3aGljaCBpcyBPSyBpZiBib3RoIHRoZSBvbGQgYW5kIG5ldyB2YWx1ZXMgYXJlIGludGVnZXJzLiAqKVxuICBBcnJheS51bnNhZmVfc2V0XG4gICAgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKE9ial9sb2NhbC5tYWdpYyAodCA6IHQpIDogaW50IGFycmF5KSlcbiAgICBpXG4gICAgKFN5cy5vcGFxdWVfaWRlbnRpdHkgaW50KVxuOztcblxuKCogRm9yIFtzZXRdIGFuZCBbdW5zYWZlX3NldF0sIGlmIGEgcG9pbnRlciBpcyBpbnZvbHZlZCwgd2UgZmlyc3QgZG8gYSBwaHlzaWNhbC1lcXVhbGl0eVxuICAgdGVzdCB0byBzZWUgaWYgdGhlIHBvaW50ZXIgaXMgY2hhbmdpbmcuICBJZiBub3QsIHdlIGRvbid0IG5lZWQgdG8gZG8gdGhlIFtzZXRdLCB3aGljaFxuICAgc2F2ZXMgYSBjYWxsIHRvIFtjYW1sX21vZGlmeV0uICBXZSB0aGluayB0aGlzIHBoeXNpY2FsLWVxdWFsaXR5IHRlc3QgaXMgd29ydGggaXRcbiAgIGJlY2F1c2UgaXQgaXMgdmVyeSBjaGVhcCAoYm90aCB2YWx1ZXMgYXJlIGFscmVhZHkgYXZhaWxhYmxlIGZyb20gdGhlIFtpc19pbnRdIHRlc3QpXG4gICBhbmQgYmVjYXVzZSBbY2FtbF9tb2RpZnldIGlzIGV4cGVuc2l2ZS4gKilcblxubGV0IHNldCB0IGkgb2JqID1cbiAgKCogV2UgdXNlIFtnZXRdIGZpcnN0IGJ1dCB0aGVuIHdlIHVzZSBbQXJyYXkudW5zYWZlX3NldF0gc2luY2Ugd2Uga25vdyB0aGF0IFtpXSBpc1xuICAgICB2YWxpZC4gKilcbiAgbGV0IG9sZF9vYmogPSBnZXQgdCBpIGluXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9sZF9vYmogJiYgU3RkbGliLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKFN0ZGxpYi5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSBpZiBub3QgKHBoeXNfZXF1YWwgb2xkX29iaiBvYmopXG4gIHRoZW4gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldCB0IGkgb2JqID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBTdGRsaWIuT2JqLmlzX2ludCBvbGRfb2JqICYmIFN0ZGxpYi5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChTdGRsaWIuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2UgaWYgbm90IChwaHlzX2VxdWFsIG9sZF9vYmogb2JqKVxuICB0aGVuIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSBvYmogPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9sZF9vYmogJiYgU3RkbGliLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKFN0ZGxpYi5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0IHN3YXAgdCBpIGogPVxuICBsZXQgYSA9IGdldCB0IGkgaW5cbiAgbGV0IGIgPSBnZXQgdCBqIGluXG4gIHVuc2FmZV9zZXQgdCBpIGI7XG4gIHVuc2FmZV9zZXQgdCBqIGFcbjs7XG5cbmxldCBjcmVhdGUgfmxlbiB4ID1cbiAgKCogSWYgd2UgY2FuLCB1c2UgW0FycmF5LmNyZWF0ZV0gZGlyZWN0bHkuIEV2ZW4gdGhvdWdoIFtpc19pbnRdIGNoZWNrIGlzIHN1YnN1bWVkIGJ5XG4gICAgIHRoZSB0YWcgY2hlY2ssIGNoZWNraW5nIGl0IGlzIG11Y2ggZmFzdGVyLCBzaW5jZSBpdCBhdm9pZHMgYSBDIGZ1bmN0aW9uIGNhbGwuICAqKVxuICBpZiBTdGRsaWIuT2JqLmlzX2ludCB4IHx8IFN0ZGxpYi5PYmoudGFnIHggPD4gU3RkbGliLk9iai5kb3VibGVfdGFnXG4gIHRoZW4gQXJyYXkuY3JlYXRlIH5sZW4geFxuICBlbHNlIChcbiAgICAoKiBPdGhlcndpc2UgdXNlIFtjcmVhdGVfemVyb10gYW5kIHNldCB0aGUgY29udGVudHMgKilcbiAgICBsZXQgdCA9IGNyZWF0ZV96ZXJvIH5sZW4gaW5cbiAgICBsZXQgeCA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgeCBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIHhcbiAgICBkb25lO1xuICAgIHQpXG47O1xuXG5sZXQgc2luZ2xldG9uIG9iaiA9IGNyZWF0ZSB+bGVuOjEgb2JqXG5cbigqIFByZS1jb25kaXRpb246IHQuKGkpIGlzIGFuIGludGVnZXIuICopXG5sZXQgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBvYmogPVxuICBpZiBTdGRsaWIuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoU3RkbGliLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlXG4gICAgKCogW3QuKGkpXSBpcyBhbiBpbnRlZ2VyIGFuZCBbb2JqXSBpcyBub3QsIHNvIHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIGlmIHRoZXkgYXJlXG4gICAgICAgZXF1YWwuICopXG4gICAgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludCB0IGkgaW50ID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBTdGRsaWIuT2JqLmlzX2ludCBvbGRfb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgaW50XG4gIGVsc2UgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoU3RkbGliLk9iai5yZXByIGludClcbjs7XG5cbmxldCB1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciB0IGkgPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIG5vdCAoU3RkbGliLk9iai5pc19pbnQgb2xkX29iailcbiAgdGhlbiB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChTdGRsaWIuT2JqLnJlcHIgMClcbjs7XG5cbigqKiBbdW5zYWZlX2JsaXRdIGlzIGxpa2UgW0FycmF5LmJsaXRdLCBleGNlcHQgaXQgdXNlcyBvdXIgb3duIGZvci1sb29wIHRvIGF2b2lkXG4gICAgY2FtbF9tb2RpZnkgd2hlbiBwb3NzaWJsZS4gIEl0cyBwZXJmb3JtYW5jZSBpcyBzdGlsbCBub3QgY29tcGFyYWJsZSB0byBhIG1lbWNweS4gKilcbmxldCB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICgqIFdoZW4gW3BoeXNfZXF1YWwgc3JjIGRzdF0sIHdlIG5lZWQgdG8gY2hlY2sgd2hldGhlciBbZHN0X3BvcyA8IHNyY19wb3NdIGFuZCBoYXZlIHRoZVxuICAgICBmb3IgbG9vcCBnbyBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uIHNvIHRoYXQgd2UgZG9uJ3Qgb3ZlcndyaXRlIGRhdGEgdGhhdCB3ZSBzdGlsbCBuZWVkXG4gICAgIHRvIHJlYWQuICBXaGVuIFtub3QgKHBoeXNfZXF1YWwgc3JjIGRzdCldLCBkb2luZyB0aGlzIGlzIGhhcm1sZXNzLiAgRnJvbSBhXG4gICAgIG1lbW9yeS1wZXJmb3JtYW5jZSBwZXJzcGVjdGl2ZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hldGhlciBvbmUgbG9vcHMgdXAgb3IgZG93bi5cbiAgICAgQ29uc3RhbnQtc3RyaWRlIGFjY2VzcywgZm9yd2FyZCBvciBiYWNrd2FyZCwgc2hvdWxkIGJlIGluZGlzdGluZ3Vpc2hhYmxlIChhdCBsZWFzdCBvblxuICAgICBhbiBpbnRlbCBpNykuICBTbywgd2UgZG9uJ3QgZG8gYSBjaGVjayBmb3IgW3BoeXNfZXF1YWwgc3JjIGRzdF0gYW5kIGFsd2F5cyBsb29wIHVwIGluXG4gICAgIHRoYXQgY2FzZS4gKilcbiAgaWYgZHN0X3BvcyA8IHNyY19wb3NcbiAgdGhlblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IGRzdCAoZHN0X3BvcyArIGkpICh1bnNhZmVfZ2V0IHNyYyAoc3JjX3BvcyArIGkpKVxuICAgIGRvbmVcbiAgZWxzZVxuICAgIGZvciBpID0gbGVuIC0gMSBkb3dudG8gMCBkb1xuICAgICAgdW5zYWZlX3NldCBkc3QgKGRzdF9wb3MgKyBpKSAodW5zYWZlX2dldCBzcmMgKHNyY19wb3MgKyBpKSlcbiAgICBkb25lXG47O1xuXG5pbmNsdWRlIEJsaXQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBjcmVhdGUgPSBjcmVhdGVfemVyb1xuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBjb3B5IHNyYyA9XG4gIGxldCBkc3QgPSBjcmVhdGVfemVybyB+bGVuOihsZW5ndGggc3JjKSBpblxuICBibGl0byB+c3JjIH5kc3QgKCk7XG4gIGRzdFxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBXQVJOSU5HOlxuICAgV2UgdXNlIG5vbi1tZW1vcnktc2FmZSB0aGluZ3MgdGhyb3VnaG91dCB0aGUgW1RydXN0ZWRdIG1vZHVsZS5cbiAgIE1vc3Qgb2YgaXQgaXMgb25seSBzYWZlIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIHR5cGUgc2lnbmF0dXJlIChlLmcuIGV4cG9zaW5nXG4gICBbdmFsIGNvcHkgOiAnYSB0IC0+ICdiIHRdIHdvdWxkIGJlIGEgYmlnIG1pc3Rha2UpLiAqKVxubW9kdWxlIFRydXN0ZWQgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGVtcHR5IDogJ2EgdFxuICB2YWwgdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIDogbGVuOmludCAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfb2JqX2FycmF5IDogbGVuOmludCAtPiAnYSB0XG4gIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHNpbmdsZXRvbiA6ICdhIC0+ICdhIHRcbiAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBzZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBzd2FwIDogXyB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgdW5zYWZlX2dldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCB1bnNhZmVfc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X2ludCA6ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHNldF93aXRoX2NhbWxfbW9kaWZ5IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgbGVuZ3RoIDogKCdhIHRbQGxvY2FsXSkgLT4gaW50XG4gIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSB0LCAnYSB0KSBCbGl0LmJsaXRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIHVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIDogXyB0IC0+IGludCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gT2JqX2FycmF5LnRcblxuICBsZXQgZW1wdHkgPSBPYmpfYXJyYXkuZW1wdHlcbiAgbGV0IHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuID0gT2JqX2FycmF5LmNyZWF0ZV96ZXJvIH5sZW5cbiAgbGV0IGNyZWF0ZV9vYmpfYXJyYXkgfmxlbiA9IE9ial9hcnJheS5jcmVhdGVfemVybyB+bGVuXG4gIGxldCBjcmVhdGUgfmxlbiB4ID0gT2JqX2FycmF5LmNyZWF0ZSB+bGVuIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgbGV0IHNpbmdsZXRvbiB4ID0gT2JqX2FycmF5LnNpbmdsZXRvbiAoU3RkbGliLk9iai5yZXByIHgpXG4gIGxldCBzd2FwIHQgaSBqID0gT2JqX2FycmF5LnN3YXAgdCBpIGpcbiAgbGV0IGdldCBhcnIgaSA9IFN0ZGxpYi5PYmoub2JqIChPYmpfYXJyYXkuZ2V0IGFyciBpKVxuICBsZXQgc2V0IGFyciBpIHggPSBPYmpfYXJyYXkuc2V0IGFyciBpIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgbGV0IHVuc2FmZV9nZXQgYXJyIGkgPSBTdGRsaWIuT2JqLm9iaiAoT2JqX2FycmF5LnVuc2FmZV9nZXQgYXJyIGkpXG4gIGxldCB1bnNhZmVfc2V0IGFyciBpIHggPSBPYmpfYXJyYXkudW5zYWZlX3NldCBhcnIgaSAoU3RkbGliLk9iai5yZXByIHgpXG4gIGxldCB1bnNhZmVfc2V0X2ludCBhcnIgaSB4ID0gT2JqX2FycmF5LnVuc2FmZV9zZXRfaW50IGFyciBpIHhcblxuICBsZXQgdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSB4XG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgbGVuZ3RoID0gT2JqX2FycmF5Lmxlbmd0aFxuICBsZXQgdW5zYWZlX2JsaXQgPSBPYmpfYXJyYXkudW5zYWZlX2JsaXRcbiAgbGV0IGNvcHkgPSBPYmpfYXJyYXkuY29weVxuXG4gIGxldCB1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayB0IGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSAoU3RkbGliLk9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKFN0ZGxpYi5PYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCBzZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeCA9IE9ial9hcnJheS5zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKFN0ZGxpYi5PYmoucmVwciB4KVxuICBsZXQgdW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgPSBPYmpfYXJyYXkudW5zYWZlX2NsZWFyX2lmX3BvaW50ZXJcbmVuZFxuXG5pbmNsdWRlIFRydXN0ZWRcblxubGV0IGludmFyaWFudCB0ID1cbiAgYXNzZXJ0IChTdGRsaWIuT2JqLnRhZyAoU3RkbGliLk9iai5yZXByIHQpIDw+IFN0ZGxpYi5PYmouZG91YmxlX2FycmF5X3RhZylcbjs7XG5cbmxldCBpbml0IGwgfmYgPVxuICBpZiBsIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiVW5pZm9ybV9hcnJheS5pbml0XCJcbiAgZWxzZSAoXG4gICAgbGV0IHJlcyA9IHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuOmwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICBkb25lO1xuICAgIHJlcylcbjs7XG5cbmxldCBvZl9hcnJheSBhcnIgPSBpbml0IH5mOihBcnJheS51bnNhZmVfZ2V0IGFycikgKEFycmF5Lmxlbmd0aCBhcnIpIFtAbm9udGFpbF1cbmxldCBtYXAgYSB+ZiA9IGluaXQgfmY6KGZ1biBpIC0+IGYgKHVuc2FmZV9nZXQgYSBpKSkgKGxlbmd0aCBhKSBbQG5vbnRhaWxdXG5sZXQgbWFwaSBhIH5mID0gaW5pdCB+ZjooZnVuIGkgLT4gZiBpICh1bnNhZmVfZ2V0IGEgaSkpIChsZW5ndGggYSkgW0Bub250YWlsXVxuXG5sZXQgaXRlciBhIH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIGYgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lXG47O1xuXG5sZXQgaXRlcmkgYSB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lXG47O1xuXG5sZXQgZm9sZGkgYSB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgYWNjIDo9IGYgaSAhYWNjICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIWFjY1xuOztcblxubGV0IHRvX2xpc3QgdCA9IExpc3QuaW5pdCB+ZjooZ2V0IHQpIChsZW5ndGggdClcblxubGV0IG9mX2xpc3QgbCA9XG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gIGxldCByZXMgPSB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgfmxlbiBpblxuICBMaXN0Lml0ZXJpIGwgfmY6KGZ1biBpIHggLT4gc2V0IHJlcyBpIHgpO1xuICByZXNcbjs7XG5cbigqIEl0IGlzIG5vdCBzYWZlIGZvciBbdG9fYXJyYXldIHRvIGJlIHRoZSBpZGVudGl0eSBmdW5jdGlvbiBiZWNhdXNlIHdlIGhhdmUgY29kZSB0aGF0XG4gICByZWxpZXMgb24gW2Zsb2F0IGFycmF5XXMgYmVpbmcgdW5ib3hlZCwgZm9yIGV4YW1wbGUgaW4gW2Jpbl93cml0ZV9hcnJheV0uICopXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB0IH5mIGkgPVxuICAgIGlmIGkgPCAwIHRoZW4gZmFsc2UgZWxzZSBmICh1bnNhZmVfZ2V0IHQgaSkgfHwgbG9vcCB0IH5mIChpIC0gMSlcbiAgaW5cbiAgbG9vcCB0IH5mIChsZW5ndGggdCAtIDEpXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgaSA9IGlmIGkgPCAwIHRoZW4gdHJ1ZSBlbHNlIGYgKHVuc2FmZV9nZXQgdCBpKSAmJiBsb29wIHQgfmYgKGkgLSAxKSBpblxuICBsb29wIHQgfmYgKGxlbmd0aCB0IC0gMSlcbjs7XG5cbmxldCBtYXAyX2V4biB0MSB0MiB+ZiA9XG4gIGxldCBsZW4gPSBsZW5ndGggdDEgaW5cbiAgaWYgbGVuZ3RoIHQyIDw+IGxlbiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkubWFwMl9leG5cIjtcbiAgaW5pdCBsZW4gfmY6KGZ1biBpIC0+IGYgKHVuc2FmZV9nZXQgdDEgaSkgKHVuc2FmZV9nZXQgdDIgaSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBlbHQpIChncmFtbWFyIDogZWx0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGVsdCB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQXJyYXkudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmluY2x1ZGVcbiAgU2V4cGFibGUuT2Zfc2V4cGFibGUxXG4gICAgKEFycmF5KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX2FycmF5XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9hcnJheVxuICAgIGVuZClcblxuaW5jbHVkZSBCbGl0Lk1ha2UxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gdCA9XG4gICAgICBpZiBsZW4gPSAwXG4gICAgICB0aGVuIGVtcHR5XG4gICAgICBlbHNlIChcbiAgICAgICAgYXNzZXJ0IChsZW5ndGggdCA+IDApO1xuICAgICAgICBjcmVhdGUgfmxlbiAoZ2V0IHQgMCkpXG4gICAgOztcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCByID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmU7XG4gICFyXG47O1xuXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxuKCogVGhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgcHB4X2NvbXBhcmUgW2NvbXBhcmVfYXJyYXldIGJ1dCB1c2VzIG91ciBbdW5zYWZlX2dldF0gYW5kIFtsZW5ndGhdLiAqKVxubGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgYSBiID1cbiAgaWYgcGh5c19lcXVhbCBhIGJcbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIGxldCBsZW5fYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxlbl9iID0gbGVuZ3RoIGIgaW5cbiAgICBsZXQgcmV0ID0gY29tcGFyZSBsZW5fYSBsZW5fYiBpblxuICAgIGlmIHJldCA8PiAwXG4gICAgdGhlbiByZXRcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgaWYgaSA9IGxlbl9hXG4gICAgICAgIHRoZW4gMFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbCA9IHVuc2FmZV9nZXQgYSBpXG4gICAgICAgICAgYW5kIHIgPSB1bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgICAgIGxldCByZXMgPSBjb21wYXJlX2VsdCBsIHIgaW5cbiAgICAgICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGxvb3AgKGkgKyAxKSlcbiAgICAgIGluXG4gICAgICBsb29wIDApKVxuOztcblxubW9kdWxlIFNvcnQgPSBBcnJheS5Qcml2YXRlLlNvcnRlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldFxuICAgIGxldCBzZXQgPSB1bnNhZmVfc2V0XG4gIGVuZClcblxubGV0IHNvcnQgPSBTb3J0LnNvcnRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGNlaWwgPSBTdGRsaWIuY2VpbFxubGV0IGZsb29yID0gU3RkbGliLmZsb29yXG5sZXQgbW9kX2Zsb2F0ID0gU3RkbGliLm1vZF9mbG9hdFxubGV0IG1vZGYgPSBTdGRsaWIubW9kZlxubGV0IGZsb2F0X29mX3N0cmluZyA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdcbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0ID0gU3RkbGliLmZsb2F0X29mX3N0cmluZ19vcHRcbmxldCBuYW4gPSBTdGRsaWIubmFuXG5sZXQgaW5maW5pdHkgPSBTdGRsaWIuaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBTdGRsaWIubmVnX2luZmluaXR5XG5sZXQgbWF4X2Zpbml0ZV92YWx1ZSA9IFN0ZGxpYi5tYXhfZmxvYXRcbmxldCBlcHNpbG9uX2Zsb2F0ID0gU3RkbGliLmVwc2lsb25fZmxvYXRcbmxldCBjbGFzc2lmeV9mbG9hdCA9IFN0ZGxpYi5jbGFzc2lmeV9mbG9hdFxubGV0IGFic19mbG9hdCA9IFN0ZGxpYi5hYnNfZmxvYXRcbmxldCBpc19pbnRlZ2VyID0gU3RkbGliLkZsb2F0LmlzX2ludGVnZXJcbmxldCAoICoqICkgPSBTdGRsaWIuKCAqKiApXG5cbmxldCAoICUuICkgYSBiID1cbiAgKCogUmFpc2UgaW4gY2FzZSBvZiBhIG5lZ2F0aXZlIG1vZHVsdXMsIGFzIGRvZXMgSW50LiggJSApLiAqKVxuICBpZiBiIDwgMC5cbiAgdGhlbiBQcmludGYuaW52YWxpZF9hcmdmIFwiJWYgJSUgJWYgaW4gZmxvYXQwLm1sOiBtb2R1bHVzIHNob3VsZCBiZSBwb3NpdGl2ZVwiIGEgYiAoKTtcbiAgbGV0IG0gPSBTdGRsaWIubW9kX2Zsb2F0IGEgYiBpblxuICAoKiBQcm9kdWNlIGEgbm9uLW5lZ2F0aXZlIHJlc3VsdCBpbiBhbmFsb2d5IHdpdGggSW50LiggJSApLiAqKVxuICBpZiBtIDwgMC4gdGhlbiBtICsuIGIgZWxzZSBtXG47O1xuXG4oKiBUaGUgYml0cyBvZiBJTlJJQSdzIFtQZXJ2YXNpdmVzXSB0aGF0IHdlIGp1c3Qgd2FudCB0byBleHBvc2UgaW4gW0Zsb2F0XS4gTW9zdCBhcmVcbiAgIGFscmVhZHkgZGVwcmVjYXRlZCBpbiBbUGVydmFzaXZlc10sIGFuZCBldmVudHVhbGx5IGFsbCBvZiB0aGVtIHNob3VsZCBiZS4gKilcbmluY2x1ZGUgKFxuICBTdGRsaWIgOlxuICBzaWdcbiAgICBleHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcblxuICAgIGV4dGVybmFsIGxkZXhwXG4gICAgICA6ICAoZmxvYXRbQHVuYm94ZWRdKVxuICAgICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgICAgLT4gKGZsb2F0W0B1bmJveGVkXSlcbiAgICAgID0gXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIlxuICAgIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBhc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5oX2Zsb2F0XCIgXCJjYW1sX2FzaW5oXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICBlbmQpXG5cbigqIFdlIG5lZWQgdGhpcyBpbmRpcmVjdGlvbiBiZWNhdXNlIHRoZXNlIGFyZSBleHBvc2VkIGFzIFwidmFsXCIgaW5zdGVhZCBvZiBcImV4dGVybmFsXCIgKilcbmxldCBmcmV4cCA9IGZyZXhwXG5sZXQgbGRleHAgPSBsZGV4cFxubGV0IGlzX25hbiB4ID0gKHggOiBmbG9hdCkgPD4geFxuXG4oKiBBbiBvcmRlci1wcmVzZXJ2aW5nIGJpamVjdGlvbiBiZXR3ZWVuIGFsbCBmbG9hdHMgZXhjZXB0IGZvciBOYU5zLCBhbmQgOTkuOTUlIG9mXG4gICBpbnQ2NHMuXG5cbiAgIE5vdGUgd2UgZG9uJ3QgZGlzdGluZ3Vpc2ggMC4gYW5kIC0wLiBhcyBzZXBhcmF0ZSB2YWx1ZXMgaGVyZSwgdGhleSBib3RoIG1hcCB0byAwTCwgd2hpY2hcbiAgIG1hcHMgYmFjayB0byAwLlxuXG4gICBUaGlzIHNob3VsZCB3b3JrIGJvdGggb24gbGl0dGxlLWVuZGlhbiBhbmQgaGlnaC1lbmRpYW4gQ1BVcy4gIFdpa2lwZWRpYSBzYXlzOiBcIm9uXG4gICBtb2Rlcm4gc3RhbmRhcmQgY29tcHV0ZXJzIChpLmUuLCBpbXBsZW1lbnRpbmcgSUVFRSA3NTQpLCBvbmUgbWF5IGluIHByYWN0aWNlIHNhZmVseVxuICAgYXNzdW1lIHRoYXQgdGhlIGVuZGlhbm5lc3MgaXMgdGhlIHNhbWUgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYXMgZm9yIGludGVnZXJzXCJcbiAgIChodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VuZGlhbm5lc3MjRmxvYXRpbmctcG9pbnRfYW5kX2VuZGlhbm5lc3MpLlxuKilcbmxldCB0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB0ID1cbiAgaWYgaXNfbmFuIHRcbiAgdGhlbiBOb25lXG4gIGVsc2UgaWYgdCA9IDAuXG4gIHRoZW4gKCogYWxzbyBpbmNsdWRlcyAtMC4gKilcbiAgICBTb21lIDBMXG4gIGVsc2UgaWYgdCA+IDAuXG4gIHRoZW4gU29tZSAoU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgdClcbiAgZWxzZSBTb21lIChTdGRsaWIuSW50NjQubmVnIChTdGRsaWIuSW50NjQuYml0c19vZl9mbG9hdCAoLS50KSkpXG47O1xuXG5sZXQgdG9faW50NjRfcHJlc2VydmVfb3JkZXJfZXhuIHggPSBPcHRpb24udmFsdWVfZXhuICh0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB4KVxuXG5sZXQgb2ZfaW50NjRfcHJlc2VydmVfb3JkZXIgeCA9XG4gIGlmIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgeCAwTFxuICB0aGVuIFN0ZGxpYi5JbnQ2NC5mbG9hdF9vZl9iaXRzIHhcbiAgZWxzZSB+LS4oU3RkbGliLkludDY0LmZsb2F0X29mX2JpdHMgKFN0ZGxpYi5JbnQ2NC5uZWcgeCkpXG47O1xuXG5sZXQgb25lX3VscCBkaXIgdCA9XG4gIG1hdGNoIHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHQgd2l0aFxuICB8IE5vbmUgLT4gU3RkbGliLm5hblxuICB8IFNvbWUgeCAtPlxuICAgIG9mX2ludDY0X3ByZXNlcnZlX29yZGVyXG4gICAgICAoU3RkbGliLkludDY0LmFkZFxuICAgICAgICAgeFxuICAgICAgICAgKG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgfCBgVXAgLT4gMUxcbiAgICAgICAgICB8IGBEb3duIC0+IC0xTCkpXG47O1xuXG4oKiBbdXBwZXJfYm91bmRfZm9yX2ludF0gYW5kIFtsb3dlcl9ib3VuZF9mb3JfaW50XSBhcmUgZm9yIGNhbGN1bGF0aW5nIHRoZSBtYXgvbWluIGZsb2F0XG4gICB0aGF0IGZpdHMgaW4gYSBnaXZlbi1zaXplIGludGVnZXIgd2hlbiByb3VuZGVkIHRvd2FyZHMgMCAodXNpbmcgW2ludF9vZl9mbG9hdF0pLlxuXG4gICBtYXhfaW50L21pbl9pbnQgZGVwZW5kIG9uIFtudW1fYml0c10sIGUuZy4gKy8tIDJeMzAsICsvLSAyXjYyIGlmIDMxLWJpdCwgNjMtYml0XG4gICAocmVzcGVjdGl2ZWx5KSB3aGlsZSBmbG9hdCBpcyBJRUVFIHN0YW5kYXJkIGZvciBkb3VibGUgKDUyIHNpZ25pZmljYW50IGJpdHMpLlxuXG4gICBJbiBhbGwgY2FzZXMsIHdlIHdhbnQgdG8gZ3VhcmFudGVlIHRoYXRcbiAgIFtsb3dlcl9ib3VuZF9mb3JfaW50IDw9IHggPD0gdXBwZXJfYm91bmRfZm9yX2ludF1cbiAgIGlmZiBbaW50X29mX2Zsb2F0IHhdIGZpdHMgaW4gYW4gaW50IHdpdGggW251bV9iaXRzXSBiaXRzLlxuXG4gICBbMiAqKiAobnVtX2JpdHMgLSAxKV0gaXMgdGhlIGZpcnN0IGZsb2F0IGdyZWF0ZXIgdGhhdCBtYXhfaW50LCB3ZSB1c2UgdGhlIHByZWNlZGluZ1xuICAgZmxvYXQgYXMgdXBwZXIgYm91bmQuXG5cbiAgIFstICgyICoqIChudW1fYml0cyAtIDEpKV0gaXMgZXF1YWwgdG8gbWluX2ludC5cbiAgIEZvciBsb3dlciBib3VuZCB3ZSBsb29rIGZvciB0aGUgc21hbGxlc3QgZmxvYXQgW2ZdIHNhdGlzZnlpbmcgW2YgPiBtaW5faW50IC0gMV0gc28gdGhhdFxuICAgW2ZdIHJvdW5kcyB0b3dhcmQgemVybyB0byBbbWluX2ludF1cblxuICAgU28gaW4gcGFydGljdWxhciB3ZSB3aWxsIGhhdmU6XG4gICBbbG93ZXJfYm91bmRfZm9yX2ludCB4IDw9IC0gKDIgKiogKDEteCkpXVxuICAgW3VwcGVyX2JvdW5kX2Zvcl9pbnQgeCAgPCAgICAyICoqICgxLXgpIF1cbiopXG5sZXQgdXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0cyA9XG4gIGxldCBleHAgPSBTdGRsaWIuZmxvYXRfb2ZfaW50IChudW1fYml0cyAtIDEpIGluXG4gIG9uZV91bHAgYERvd24gKDIuICoqIGV4cClcbjs7XG5cbmxldCBpc194X21pbnVzX29uZV9leGFjdCB4ID1cbiAgKCogW3ggPSB4IC0uIDEuXSBkb2VzIG5vdCB3b3JrIHdpdGggeDg3IGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgYmFja2VuZCAod2hpY2ggaXMgdXNlZFxuICAgICBvbiAzMi1iaXQgb2NhbWwpIGJlY2F1c2Ugb2YgODAtYml0IHJlZ2lzdGVyIHByZWNpc2lvbiBvZiBpbnRlcm1lZGlhdGUgY29tcHV0YXRpb25zLlxuXG4gICAgIEFuIGFsdGVybmF0aXZlIHdheSBvZiBjb21wdXRpbmcgdGhpczogW3ggLS4gb25lX3VscCBgRG93biB4IDw9IDEuXSBpcyBhbHNvIHByb25lIHRvXG4gICAgIHRoZSBzYW1lIHByZWNpc2lvbiBpc3N1ZXM6IHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSBbeF0gaXMgNjQtYml0LlxuICAqKVxuICBsZXQgb3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgbm90IChTdGRsaWIuSW50NjQuYml0c19vZl9mbG9hdCB4ID0gU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgKHggLS4gMS4pKVxuOztcblxubGV0IGxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHMgPVxuICBsZXQgZXhwID0gU3RkbGliLmZsb2F0X29mX2ludCAobnVtX2JpdHMgLSAxKSBpblxuICBsZXQgbWluX2ludF9hc19mbG9hdCA9IH4tLigyLiAqKiBleHApIGluXG4gIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgbnVtX2JpdHMgLSAxIDwgNTMgKCogNTMgPSAjYml0cyBpbiB0aGUgZmxvYXQncyBtYW50aXNzYSB3aXRoIHNpZ24gaW5jbHVkZWQgKilcbiAgdGhlbiAoXG4gICAgKCogVGhlIHNtYWxsZXN0IGZsb2F0IHRoYXQgcm91bmRzIHRvd2FyZHMgemVybyB0byBbbWluX2ludF0gaXNcbiAgICAgICBbbWluX2ludCAtIDEgKyBlcHNpbG9uXSAqKVxuICAgIGFzc2VydCAoaXNfeF9taW51c19vbmVfZXhhY3QgbWluX2ludF9hc19mbG9hdCk7XG4gICAgb25lX3VscCBgVXAgKG1pbl9pbnRfYXNfZmxvYXQgLS4gMS4pKVxuICBlbHNlIChcbiAgICAoKiBbbWluX2ludF9hc19mbG9hdF0gaXMgYWxyZWFkeSB0aGUgc21hbGxlc3QgZmxvYXQgW2ZdIHNhdGlzZnlpbmcgW2YgPiBtaW5faW50IC0gMV0uICopXG4gICAgYXNzZXJ0IChub3QgKGlzX3hfbWludXNfb25lX2V4YWN0IG1pbl9pbnRfYXNfZmxvYXQpKTtcbiAgICBtaW5faW50X2FzX2Zsb2F0KVxuOztcblxuKCogRmxvYXQgY2xhbXBpbmcgaXMgc3RydWN0dXJlZCBzbGlnaHRseSBkaWZmZXJlbnRseSB0aGFuIGNsYW1waW5nIGZvciBvdGhlciB0eXBlcywgc29cbiAgIHRoYXQgd2UgZ2V0IHRoZSBiZWhhdmlvciBvZiBbY2xhbXBfdW5jaGVja2VkIG5hbiB+bWluIH5tYXggPSBuYW5dIChmb3IgYW55IFttaW5dIGFuZFxuICAgW21heF0pIGZvciBmcmVlLlxuKilcbmxldCBjbGFtcF91bmNoZWNrZWQgKHQgOiBmbG9hdCkgfm1pbiB+bWF4ID1cbiAgaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIG1heCA8IHQgdGhlbiBtYXggZWxzZSB0XG47O1xuXG5sZXQgYm94ID1cbiAgKCogUHJldmVudCBwb3RlbnRpYWwgY29uc3RhbnQgZm9sZGluZyBvZiBbKy4gMC5dIGluIHRoZSBuZWFyIG9jYW1sb3B0IGZ1dHVyZS4gKilcbiAgbGV0IHggPSBTeXMwLm9wYXF1ZV9pZGVudGl0eSAwLiBpblxuICBmdW4gZiAtPiBmICsuIHhcbjs7XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuaW5jbHVkZSBDaGFyMFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2NoYXIgOiB0IC0+IHQgLT4gaW50KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfY2hhclxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfY2hhciBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2NoYXIgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuICBsZXQgdF9vZl9zZXhwID0gKGNoYXJfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfY2hhciA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBjaGFyX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gU3RyaW5nLm1ha2UgMSB0XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBtYXRjaCBTdHJpbmcubGVuZ3RoIHMgd2l0aFxuICAgIHwgMSAtPiBzLlswXVxuICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJDaGFyLm9mX3N0cmluZzogJVNcIiBzICgpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkNoYXJcIlxuICBlbmQpXG5cbmxldCBwcCBmbXQgYyA9IFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBmbXQgXCIlQ1wiIGNcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgQ2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBhbGwgPSBBcnJheS5pbml0IDI1NiB+Zjp1bnNhZmVfb2ZfaW50IHw+IEFycmF5LnRvX2xpc3RcblxubGV0IGlzX2xvd2VyY2FzZSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3VwcGVyY2FzZSA9IGZ1bmN0aW9uXG4gIHwgJ0EnIC4uICdaJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3ByaW50ID0gZnVuY3Rpb25cbiAgfCAnICcgLi4gJ34nIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfd2hpdGVzcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXDAxMScgKCogdmVydGljYWwgdGFiICopIHwgJ1xcMDEyJyAoKiBmb3JtIGZlZWQgKikgfCAnXFxyJyB8ICcgJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfYWxwaGEgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG4oKiBXcml0aW5nIHRoZXNlIG91dCwgaW5zdGVhZCBvZiBjYWxsaW5nIFtpc19hbHBoYV0gYW5kIFtpc19kaWdpdF0sIHJlZHVjZXNcbiAgIHJ1bnRpbWUgYnkgYXBwcm94LiAzMCUgKilcbmxldCBpc19hbHBoYW51bSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgZ2V0X2RpZ2l0X3Vuc2FmZSB0ID0gdG9faW50IHQgLSB0b19pbnQgJzAnXG5cbmxldCBnZXRfZGlnaXRfZXhuIHQgPVxuICBpZiBpc19kaWdpdCB0XG4gIHRoZW4gZ2V0X2RpZ2l0X3Vuc2FmZSB0XG4gIGVsc2UgZmFpbHdpdGhmIFwiQ2hhci5nZXRfZGlnaXRfZXhuICVDOiBub3QgYSBkaWdpdFwiIHQgKClcbjs7XG5cbmxldCBnZXRfZGlnaXQgdCA9IGlmIGlzX2RpZ2l0IHQgdGhlbiBTb21lIChnZXRfZGlnaXRfdW5zYWZlIHQpIGVsc2UgTm9uZVxuXG5sZXQgaXNfaGV4X2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19oZXhfZGlnaXRfbG93ZXIgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfaGV4X2RpZ2l0X3VwcGVyID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGdldF9oZXhfZGlnaXRfZXhuID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJzAnXG4gIHwgJ2EnIC4uICdmJyBhcyB0IC0+IHRvX2ludCB0IC0gdG9faW50ICdhJyArIDEwXG4gIHwgJ0EnIC4uICdGJyBhcyB0IC0+IHRvX2ludCB0IC0gdG9faW50ICdBJyArIDEwXG4gIHwgdCAtPlxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiQ2hhci5nZXRfaGV4X2RpZ2l0X2V4bjogbm90IGEgaGV4YWRlY2ltYWwgZGlnaXRcIlxuICAgICAgICAgWyBcImNoYXJcIiwgc2V4cF9vZl90IHQgXSlcbjs7XG5cbmxldCBnZXRfaGV4X2RpZ2l0IHQgPSBpZiBpc19oZXhfZGlnaXQgdCB0aGVuIFNvbWUgKGdldF9oZXhfZGlnaXRfZXhuIHQpIGVsc2UgTm9uZVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBsZXQgKCA+PSApID0gKCA+PSApXG4gIGxldCAoIDw9ICkgPSAoIDw9IClcbiAgbGV0ICggPSApID0gKCA9IClcbiAgbGV0ICggPiApID0gKCA+IClcbiAgbGV0ICggPCApID0gKCA8IClcbiAgbGV0ICggPD4gKSA9ICggPD4gKVxuZW5kXG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCB0X29mX3NleHAgPSAoY2hhcl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2NoYXIgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBjaGFyX3NleHBfZ3JhbW1hclxuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjb21wYXJlIGMxIGMyID0gY29tcGFyZSAobG93ZXJjYXNlIGMxKSAobG93ZXJjYXNlIGMyKVxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2NoYXIgc3RhdGUgKGxvd2VyY2FzZSB0KVxuICAgIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQ2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydDAuSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIEJ5dGVzID0gQnl0ZXMwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuXG4oKiBDb25zdHJ1Y3QgYSBieXRlIHN0cmluZyBvZiBsZW5ndGggMjU2LCBtYXBwaW5nIGV2ZXJ5IGlucHV0IGNoYXJhY3RlciBjb2RlIHRvXG4gICBpdHMgY29ycmVzcG9uZGluZyBvdXRwdXQgY2hhcmFjdGVyLlxuXG4gICBCZW5jaG1hcmtzIGluZGljYXRlIHRoYXQgdGhpcyBpcyBmYXN0ZXIgdGhhbiB0aGUgbGFtYmRhIChpbmNsdWRpbmcgY29zdCBvZlxuICAgdGhpcyBmdW5jdGlvbiksIGV2ZW4gaWYgdGFyZ2V0L3JlcGxhY2VtZW50IGFyZSBqdXN0IDIgY2hhcmFjdGVycyBlYWNoLlxuXG4gICBSZXR1cm4gTm9uZSBpZiB0aGUgdHJhbnNsYXRpb24gbWFwIGlzIGVxdWl2YWxlbnQgdG8ganVzdCB0aGUgaWRlbnRpdHkuICopXG5sZXQgdHJfY3JlYXRlX21hcCB+dGFyZ2V0IH5yZXBsYWNlbWVudCA9XG4gIGxldCB0cl9tYXAgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGZvciBpID0gMCB0byAyNTUgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHRyX21hcCBpIChDaGFyLm9mX2ludF9leG4gaSlcbiAgZG9uZTtcbiAgZm9yIGkgPSAwIHRvIG1pbiAoU3RyaW5nLmxlbmd0aCB0YXJnZXQpIChTdHJpbmcubGVuZ3RoIHJlcGxhY2VtZW50KSAtIDEgZG9cbiAgICBsZXQgaW5kZXggPSBDaGFyLnRvX2ludCAoU3RyaW5nLnVuc2FmZV9nZXQgdGFyZ2V0IGkpIGluXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0cl9tYXAgaW5kZXggKFN0cmluZy51bnNhZmVfZ2V0IHJlcGxhY2VtZW50IGkpXG4gIGRvbmU7XG4gIGxldCBsYXN0X3JlcGxhY2VtZW50ID0gU3RyaW5nLnVuc2FmZV9nZXQgcmVwbGFjZW1lbnQgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQgLSAxKSBpblxuICBmb3JcbiAgICBpID0gbWluIChTdHJpbmcubGVuZ3RoIHRhcmdldCkgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQpIHRvIFN0cmluZy5sZW5ndGggdGFyZ2V0IC0gMVxuICBkb1xuICAgIGxldCBpbmRleCA9IENoYXIudG9faW50IChTdHJpbmcudW5zYWZlX2dldCB0YXJnZXQgaSkgaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHRyX21hcCBpbmRleCBsYXN0X3JlcGxhY2VtZW50XG4gIGRvbmU7XG4gIGxldCByZWMgaGF2ZV9hbnlfZGlmZmVyZW50IHRyX21hcCBpID1cbiAgICBpZiBpID0gMjU2XG4gICAgdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgQ2hhci4oIDw+ICkgKEJ5dGVzMC51bnNhZmVfZ2V0IHRyX21hcCBpKSAoQ2hhci5vZl9pbnRfZXhuIGkpXG4gICAgdGhlbiB0cnVlXG4gICAgZWxzZSBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIChpICsgMSlcbiAgaW5cbiAgKCogcXVpY2sgY2hlY2sgb24gdGhlIGZpcnN0IHRhcmdldCBjaGFyYWN0ZXIgd2hpY2ggd2lsbCA5OSUgYmUgdHJ1ZSAqKVxuICBsZXQgZmlyc3RfdGFyZ2V0ID0gdGFyZ2V0LlswXSBpblxuICBpZiBDaGFyLiggPD4gKSAoQnl0ZXMwLnVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBmaXJzdF90YXJnZXQpKSBmaXJzdF90YXJnZXRcbiAgfHwgaGF2ZV9hbnlfZGlmZmVyZW50IHRyX21hcCAwXG4gIHRoZW4gU29tZSAoQnl0ZXMwLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dHJfbWFwKVxuICBlbHNlIE5vbmVcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2FcblxubGV0IHN0YWdlID0gRm4uaWRcbmxldCB1bnN0YWdlID0gRm4uaWRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbm1vZHVsZSBJbnQgPSBJbnQwXG5pbmNsdWRlIFN0cmluZzBcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xubGV0IHN0YWdlID0gU3RhZ2VkLnN0YWdlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfc3RyaW5nIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX3N0cmluZ1xuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfc3RyaW5nIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChzdHJpbmdfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2Zfc3RyaW5nIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHN0cmluZ19zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxudHlwZSBlbHQgPSBjaGFyXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5cbigqIFRoaXMgaXMgY29waWVkL2FkYXB0ZWQgZnJvbSAnYmxpdC5tbCcuXG4gICBbc3ViXSwgW3N1Ym9dIGNvdWxkIGJlIGltcGxlbWVudGVkIHVzaW5nIFtCbGl0Lk1ha2UoQnl0ZXMpXSBwbHVzIHVuc2FmZSBjYXN0cyB0by9mcm9tXG4gICBzdHJpbmcgYnV0IHdlcmUgaW5saW5lZCBoZXJlIHRvIGF2b2lkIHVzaW5nIFtCeXRlcy51bnNhZmVfb2Zfc3RyaW5nXSBhcyBtdWNoIGFzIHBvc3NpYmxlLlxuKilcbmxldCB1bnNhZmVfc3ViIHNyYyB+cG9zIH5sZW4gPVxuICBpZiBsZW4gPSAwXG4gIHRoZW4gXCJcIlxuICBlbHNlIChcbiAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOnBvcyB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbjs7XG5cbmxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gIGlmIHBvcyA9IDAgJiYgbGVuID0gU3RyaW5nLmxlbmd0aCBzcmNcbiAgdGhlbiBzcmNcbiAgZWxzZSAoXG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHNyYyk7XG4gICAgdW5zYWZlX3N1YiBzcmMgfnBvcyB+bGVuKVxuOztcblxubGV0IHN1Ym8gPyhwb3MgPSAwKSA/bGVuIHNyYyA9XG4gIHN1YlxuICAgIHNyY1xuICAgIH5wb3NcbiAgICB+bGVuOlxuICAgICAgKG1hdGNoIGxlbiB3aXRoXG4gICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgIHwgTm9uZSAtPiBsZW5ndGggc3JjIC0gcG9zKVxuOztcblxubGV0IHJlYyBjb250YWluc191bnNhZmUgdCB+cG9zIH5lbmRfIGNoYXIgPVxuICBwb3MgPCBlbmRfXG4gICYmIChDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHQgcG9zKSBjaGFyIHx8IGNvbnRhaW5zX3Vuc2FmZSB0IH5wb3M6KHBvcyArIDEpIH5lbmRfIGNoYXIpXG47O1xuXG5sZXQgY29udGFpbnMgPyhwb3MgPSAwKSA/bGVuIHQgY2hhciA9XG4gIGxldCB0b3RhbF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgbGV0IGxlbiA9IE9wdGlvbi52YWx1ZSBsZW4gfmRlZmF1bHQ6KHRvdGFsX2xlbmd0aCAtIHBvcykgaW5cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgY29udGFpbnNfdW5zYWZlIHQgfnBvcyB+ZW5kXzoocG9zICsgbGVuKSBjaGFyXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgcmVjIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyID1cbiAgaWYgcG9zID49IGxlblxuICB0aGVuIHJhaXNlIG5vdF9mb3VuZFxuICBlbHNlIGlmIENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgc3RyaW5nIHBvcykgY2hhclxuICB0aGVuIHBvc1xuICBlbHNlIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zOihwb3MgKyAxKSB+bGVuIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IGluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciA9XG4gIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvczowIH5sZW46KGxlbmd0aCB0KSB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCBpbmRleF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcuaW5kZXhfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGluZGV4X2V4biB0IGNoYXIgPSBpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBpbmRleF9leG5cbjs7XG5cbmxldCBpbmRleF9mcm9tX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5pbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBwb3MgPCAwIHx8IHBvcyA+IGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9leG5cIlxuICAgIGVsc2UgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgaW5kZXhfZnJvbV9leG5cbjs7XG5cbmxldCByZWMgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyID1cbiAgaWYgcG9zIDwgMFxuICB0aGVuIHJhaXNlIG5vdF9mb3VuZFxuICBlbHNlIGlmIENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgc3RyaW5nIHBvcykgY2hhclxuICB0aGVuIHBvc1xuICBlbHNlIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvczoocG9zIC0gMSkgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCByaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3M6KGxlbiAtIDEpIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgcmluZGV4X2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yaW5kZXhfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJpbmRleF9leG4gdCBjaGFyID0gcmluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJpbmRleF9leG5cbjs7XG5cbmxldCByaW5kZXhfZnJvbV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcucmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBwb3MgPCAtMSB8fCBwb3MgPj0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9leG5cIlxuICAgIGVsc2UgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhclxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJpbmRleF9mcm9tX2V4blxuOztcblxubGV0IGluZGV4IHQgY2hhciA9XG4gIHRyeSBTb21lIChpbmRleF9leG4gdCBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJpbmRleCB0IGNoYXIgPVxuICB0cnkgU29tZSAocmluZGV4X2V4biB0IGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgaW5kZXhfZnJvbSB0IHBvcyBjaGFyID1cbiAgdHJ5IFNvbWUgKGluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmluZGV4X2Zyb20gdCBwb3MgY2hhciA9XG4gIHRyeSBTb21lIChyaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbm1vZHVsZSBTZWFyY2hfcGF0dGVybjAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHBhdHRlcm4gOiBzdHJpbmdcbiAgICA7IGNhc2Vfc2Vuc2l0aXZlIDogYm9vbFxuICAgIDsga21wX2FycmF5IDogaW50IGFycmF5XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5ID0gXyB9IDogU2V4cC50ID1cbiAgICBMaXN0XG4gICAgICBbIExpc3QgWyBBdG9tIFwicGF0dGVyblwiOyBzZXhwX29mX3N0cmluZyBwYXR0ZXJuIF1cbiAgICAgIDsgTGlzdCBbIEF0b20gXCJjYXNlX3NlbnNpdGl2ZVwiOyBzZXhwX29mX2Jvb2wgY2FzZV9zZW5zaXRpdmUgXVxuICAgICAgXVxuICA7O1xuXG4gIGxldCBwYXR0ZXJuIHQgPSB0LnBhdHRlcm5cbiAgbGV0IGNhc2Vfc2Vuc2l0aXZlIHQgPSB0LmNhc2Vfc2Vuc2l0aXZlXG5cbiAgKCogRmluZCBtYXggbnVtYmVyIG9mIG1hdGNoZWQgY2hhcmFjdGVycyBhdCBbbmV4dF90ZXh0X2NoYXJdLCBnaXZlbiB0aGUgY3VycmVudFxuICAgICBbbWF0Y2hlZF9jaGFyc10uIFRyeSB0byBleHRlbmQgdGhlIGN1cnJlbnQgbWF0Y2gsIGlmIGNoYXJzIGRvbid0IG1hdGNoLCB0cnkgdG8gbWF0Y2hcbiAgICAgZmV3ZXIgY2hhcnMuIElmIGNoYXJzIG1hdGNoIHRoZW4gZXh0ZW5kIHRoZSBtYXRjaC4gKilcbiAgbGV0IGttcF9pbnRlcm5hbF9sb29wIH5tYXRjaGVkX2NoYXJzIH5uZXh0X3RleHRfY2hhciB+cGF0dGVybiB+a21wX2FycmF5IH5jaGFyX2VxdWFsID1cbiAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiBtYXRjaGVkX2NoYXJzIGluXG4gICAgd2hpbGVcbiAgICAgICFtYXRjaGVkX2NoYXJzID4gMFxuICAgICAgJiYgbm90IChjaGFyX2VxdWFsIG5leHRfdGV4dF9jaGFyICh1bnNhZmVfZ2V0IHBhdHRlcm4gIW1hdGNoZWRfY2hhcnMpKVxuICAgIGRvXG4gICAgICBtYXRjaGVkX2NoYXJzIDo9IEFycmF5LnVuc2FmZV9nZXQga21wX2FycmF5ICghbWF0Y2hlZF9jaGFycyAtIDEpXG4gICAgZG9uZTtcbiAgICBpZiBjaGFyX2VxdWFsIG5leHRfdGV4dF9jaGFyICh1bnNhZmVfZ2V0IHBhdHRlcm4gIW1hdGNoZWRfY2hhcnMpXG4gICAgdGhlbiBtYXRjaGVkX2NoYXJzIDo9ICFtYXRjaGVkX2NoYXJzICsgMTtcbiAgICAhbWF0Y2hlZF9jaGFyc1xuICA7O1xuXG4gIGxldCBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgPVxuICAgIG1hdGNoIGNhc2Vfc2Vuc2l0aXZlIHdpdGhcbiAgICB8IHRydWUgLT4gQ2hhci5lcXVhbFxuICAgIHwgZmFsc2UgLT4gQ2hhci5DYXNlbGVzcy5lcXVhbFxuICA7O1xuXG4gICgqIENsYXNzaWMgS01QIHByZS1wcm9jZXNzaW5nIG9mIHRoZSBwYXR0ZXJuOiBidWlsZCB0aGUgaW50IGFycmF5LCB3aGljaCwgZm9yIGVhY2ggaSxcbiAgICAgY29udGFpbnMgdGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBub24tdHJpdmlhbCBwcmVmaXggb2YgcyB3aGljaCBpcyBlcXVhbCB0byBhIHN1ZmZpeFxuICAgICBlbmRpbmcgYXQgcy5baV0gKilcbiAgbGV0IGNyZWF0ZSBwYXR0ZXJuIH5jYXNlX3NlbnNpdGl2ZSA9XG4gICAgbGV0IG4gPSBsZW5ndGggcGF0dGVybiBpblxuICAgIGxldCBrbXBfYXJyYXkgPSBBcnJheS5jcmVhdGUgfmxlbjpuICgtMSkgaW5cbiAgICBpZiBuID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IGNoYXJfZXF1YWwgPSBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgaW5cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQga21wX2FycmF5IDAgMDtcbiAgICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIDAgaW5cbiAgICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgIDo9IGttcF9pbnRlcm5hbF9sb29wXG4gICAgICAgICAgICAgfm1hdGNoZWRfY2hhcnM6IW1hdGNoZWRfY2hhcnNcbiAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXI6KHVuc2FmZV9nZXQgcGF0dGVybiBpKVxuICAgICAgICAgICAgIH5wYXR0ZXJuXG4gICAgICAgICAgICAgfmttcF9hcnJheVxuICAgICAgICAgICAgIH5jaGFyX2VxdWFsO1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IGttcF9hcnJheSBpICFtYXRjaGVkX2NoYXJzXG4gICAgICBkb25lKTtcbiAgICB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgfVxuICA7O1xuXG4gICgqIENsYXNzaWMgS01QOiB1c2UgdGhlIHByZS1wcm9jZXNzZWQgcGF0dGVybiB0byBvcHRpbWl6ZSBsb29rLWJlaGluZHMgb24gbm9uLW1hdGNoZXMuXG4gICAgIFdlIHJldHVybiBpbnQgdG8gYXZvaWQgYWxsb2NhdGlvbiBpbiBbaW5kZXhfZXhuXS4gLTEgbWVhbnMgbm8gbWF0Y2guICopXG4gIGxldCBpbmRleF9pbnRlcm5hbCA/KHBvcyA9IDApIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9IH5pbl86dGV4dCA9XG4gICAgaWYgcG9zIDwgMCB8fCBwb3MgPiBsZW5ndGggdGV4dCAtIGxlbmd0aCBwYXR0ZXJuXG4gICAgdGhlbiAtMVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNoYXJfZXF1YWwgPSBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgaW5cbiAgICAgIGxldCBqID0gcmVmIHBvcyBpblxuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgbGV0IGsgPSBsZW5ndGggcGF0dGVybiBpblxuICAgICAgbGV0IG4gPSBsZW5ndGggdGV4dCBpblxuICAgICAgd2hpbGUgIWogPCBuICYmICFtYXRjaGVkX2NoYXJzIDwgayBkb1xuICAgICAgICBsZXQgbmV4dF90ZXh0X2NoYXIgPSB1bnNhZmVfZ2V0IHRleHQgIWogaW5cbiAgICAgICAgbWF0Y2hlZF9jaGFyc1xuICAgICAgICA6PSBrbXBfaW50ZXJuYWxfbG9vcFxuICAgICAgICAgICAgIH5tYXRjaGVkX2NoYXJzOiFtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgICAgfm5leHRfdGV4dF9jaGFyXG4gICAgICAgICAgICAgfnBhdHRlcm5cbiAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgfmNoYXJfZXF1YWw7XG4gICAgICAgIGogOj0gIWogKyAxXG4gICAgICBkb25lO1xuICAgICAgaWYgIW1hdGNoZWRfY2hhcnMgPSBrIHRoZW4gIWogLSBrIGVsc2UgLTEpXG4gIDs7XG5cbiAgbGV0IG1hdGNoZXMgdCBzdHIgPSBpbmRleF9pbnRlcm5hbCB0IH5pbl86c3RyID49IDBcblxuICBsZXQgaW5kZXggP3BvcyB0IH5pbl8gPVxuICAgIGxldCBwID0gaW5kZXhfaW50ZXJuYWwgP3BvcyB0IH5pbl8gaW5cbiAgICBpZiBwIDwgMCB0aGVuIE5vbmUgZWxzZSBTb21lIHBcbiAgOztcblxuICBsZXQgaW5kZXhfZXhuID9wb3MgdCB+aW5fID1cbiAgICBsZXQgcCA9IGluZGV4X2ludGVybmFsID9wb3MgdCB+aW5fIGluXG4gICAgaWYgcCA+PSAwXG4gICAgdGhlbiBwXG4gICAgZWxzZVxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiU3Vic3RyaW5nIG5vdCBmb3VuZFwiIFsgXCJzdWJzdHJpbmdcIiwgc2V4cF9vZl9zdHJpbmcgdC5wYXR0ZXJuIF0pXG4gIDs7XG5cbiAgbGV0IGluZGV4X2FsbCB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgfSB+bWF5X292ZXJsYXAgfmluXzp0ZXh0ID1cbiAgICBpZiBsZW5ndGggcGF0dGVybiA9IDBcbiAgICB0aGVuIExpc3QuaW5pdCAoMSArIGxlbmd0aCB0ZXh0KSB+ZjpGbi5pZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNoYXJfZXF1YWwgPSBnZXRfY2hhcl9lcXVhbCB+Y2FzZV9zZW5zaXRpdmUgaW5cbiAgICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIDAgaW5cbiAgICAgIGxldCBrID0gbGVuZ3RoIHBhdHRlcm4gaW5cbiAgICAgIGxldCBuID0gbGVuZ3RoIHRleHQgaW5cbiAgICAgIGxldCBmb3VuZCA9IHJlZiBbXSBpblxuICAgICAgZm9yIGogPSAwIHRvIG4gZG9cbiAgICAgICAgaWYgIW1hdGNoZWRfY2hhcnMgPSBrXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGZvdW5kIDo9IChqIC0gaykgOjogIWZvdW5kO1xuICAgICAgICAgICgqIHdlIGp1c3QgZm91bmQgYSBtYXRjaCBpbiB0aGUgcHJldmlvdXMgaXRlcmF0aW9uICopXG4gICAgICAgICAgbWF0Y2ggbWF5X292ZXJsYXAgd2l0aFxuICAgICAgICAgIHwgdHJ1ZSAtPiBtYXRjaGVkX2NoYXJzIDo9IEFycmF5LnVuc2FmZV9nZXQga21wX2FycmF5IChrIC0gMSlcbiAgICAgICAgICB8IGZhbHNlIC0+IG1hdGNoZWRfY2hhcnMgOj0gMCk7XG4gICAgICAgIGlmIGogPCBuXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBuZXh0X3RleHRfY2hhciA9IHVuc2FmZV9nZXQgdGV4dCBqIGluXG4gICAgICAgICAgbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgIDo9IGttcF9pbnRlcm5hbF9sb29wXG4gICAgICAgICAgICAgICB+bWF0Y2hlZF9jaGFyczohbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgICAgICAgfm5leHRfdGV4dF9jaGFyXG4gICAgICAgICAgICAgICB+cGF0dGVyblxuICAgICAgICAgICAgICAgfmttcF9hcnJheVxuICAgICAgICAgICAgICAgfmNoYXJfZXF1YWwpXG4gICAgICBkb25lO1xuICAgICAgTGlzdC5yZXYgIWZvdW5kKVxuICA7O1xuXG4gIGxldCByZXBsYWNlX2ZpcnN0ID9wb3MgdCB+aW5fOnMgfndpdGhfID1cbiAgICBtYXRjaCBpbmRleCA/cG9zIHQgfmluXzpzIHdpdGhcbiAgICB8IE5vbmUgLT4gc1xuICAgIHwgU29tZSBpIC0+XG4gICAgICBsZXQgbGVuX3MgPSBsZW5ndGggcyBpblxuICAgICAgbGV0IGxlbl90ID0gbGVuZ3RoIHQucGF0dGVybiBpblxuICAgICAgbGV0IGxlbl93aXRoID0gbGVuZ3RoIHdpdGhfIGluXG4gICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIChsZW5fcyArIGxlbl93aXRoIC0gbGVuX3QpIGluXG4gICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOjAgfmxlbjppO1xuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzp3aXRoXyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6aSB+bGVuOmxlbl93aXRoO1xuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmdcbiAgICAgICAgfnNyYzpzXG4gICAgICAgIH5zcmNfcG9zOihpICsgbGVuX3QpXG4gICAgICAgIH5kc3RcbiAgICAgICAgfmRzdF9wb3M6KGkgKyBsZW5fd2l0aClcbiAgICAgICAgfmxlbjoobGVuX3MgLSBpIC0gbGVuX3QpO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3RcbiAgOztcblxuXG4gIGxldCByZXBsYWNlX2FsbCB0IH5pbl86cyB+d2l0aF8gPVxuICAgIGxldCBtYXRjaGVzID0gaW5kZXhfYWxsIHQgfm1heV9vdmVybGFwOmZhbHNlIH5pbl86cyBpblxuICAgIG1hdGNoIG1hdGNoZXMgd2l0aFxuICAgIHwgW10gLT4gc1xuICAgIHwgXyA6OiBfIC0+XG4gICAgICBsZXQgbGVuX3MgPSBsZW5ndGggcyBpblxuICAgICAgbGV0IGxlbl90ID0gbGVuZ3RoIHQucGF0dGVybiBpblxuICAgICAgbGV0IGxlbl93aXRoID0gbGVuZ3RoIHdpdGhfIGluXG4gICAgICBsZXQgbnVtX21hdGNoZXMgPSBMaXN0Lmxlbmd0aCBtYXRjaGVzIGluXG4gICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIChsZW5fcyArICgobGVuX3dpdGggLSBsZW5fdCkgKiBudW1fbWF0Y2hlcykpIGluXG4gICAgICBsZXQgbmV4dF9kc3RfcG9zID0gcmVmIDAgaW5cbiAgICAgIGxldCBuZXh0X3NyY19wb3MgPSByZWYgMCBpblxuICAgICAgTGlzdC5pdGVyIG1hdGNoZXMgfmY6KGZ1biBpIC0+XG4gICAgICAgIGxldCBsZW4gPSBpIC0gIW5leHRfc3JjX3BvcyBpblxuICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnMgfnNyY19wb3M6IW5leHRfc3JjX3BvcyB+ZHN0IH5kc3RfcG9zOiFuZXh0X2RzdF9wb3MgfmxlbjtcbiAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmdcbiAgICAgICAgICB+c3JjOndpdGhfXG4gICAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICAgIH5kc3RcbiAgICAgICAgICB+ZHN0X3BvczooIW5leHRfZHN0X3BvcyArIGxlbilcbiAgICAgICAgICB+bGVuOmxlbl93aXRoO1xuICAgICAgICBuZXh0X2RzdF9wb3MgOj0gIW5leHRfZHN0X3BvcyArIGxlbiArIGxlbl93aXRoO1xuICAgICAgICBuZXh0X3NyY19wb3MgOj0gIW5leHRfc3JjX3BvcyArIGxlbiArIGxlbl90KTtcbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nXG4gICAgICAgIH5zcmM6c1xuICAgICAgICB+c3JjX3BvczohbmV4dF9zcmNfcG9zXG4gICAgICAgIH5kc3RcbiAgICAgICAgfmRzdF9wb3M6IW5leHRfZHN0X3Bvc1xuICAgICAgICB+bGVuOihsZW5fcyAtICFuZXh0X3NyY19wb3MpO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3RcbiAgOztcblxuICBsZXQgc3BsaXRfb24gdCBzID1cbiAgICBsZXQgcGF0dGVybl9sZW4gPSBTdHJpbmcubGVuZ3RoIHQucGF0dGVybiBpblxuICAgIGxldCBtYXRjaGVzID0gaW5kZXhfYWxsIHQgfm1heV9vdmVybGFwOmZhbHNlIH5pbl86cyBpblxuICAgIExpc3QubWFwMl9leG5cbiAgICAgICgtcGF0dGVybl9sZW4gOjogbWF0Y2hlcylcbiAgICAgIChtYXRjaGVzIEAgWyBTdHJpbmcubGVuZ3RoIHMgXSlcbiAgICAgIH5mOihmdW4gaSBqIC0+IHN1YiBzIH5wb3M6KGkgKyBwYXR0ZXJuX2xlbikgfmxlbjooaiAtIGkgLSBwYXR0ZXJuX2xlbikpXG4gIDs7XG5cbiAgbW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHB1YmxpYyA9IHRcblxuICAgIHR5cGUgbm9ucmVjIHQgPSB0ID1cbiAgICAgIHsgcGF0dGVybiA6IHN0cmluZ1xuICAgICAgOyBjYXNlX3NlbnNpdGl2ZSA6IGJvb2xcbiAgICAgIDsga21wX2FycmF5IDogaW50IGFycmF5XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgbGV0IGVxdWFsID1cbiAgICAgIChmdW4gYV9fMDAzXyBiX18wMDRfIC0+XG4gICAgICAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAwM18gYl9fMDA0X1xuICAgICAgICAgdGhlbiB0cnVlXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFN0ZGxpYi4oICYmIClcbiAgICAgICAgICAgICAoZXF1YWxfc3RyaW5nIGFfXzAwM18ucGF0dGVybiBiX18wMDRfLnBhdHRlcm4pXG4gICAgICAgICAgICAgKFN0ZGxpYi4oICYmIClcbiAgICAgICAgICAgICAgICAoZXF1YWxfYm9vbCBhX18wMDNfLmNhc2Vfc2Vuc2l0aXZlIGJfXzAwNF8uY2FzZV9zZW5zaXRpdmUpXG4gICAgICAgICAgICAgICAgKGVxdWFsX2FycmF5IGVxdWFsX2ludCBhX18wMDNfLmttcF9hcnJheSBiX18wMDRfLmttcF9hcnJheSkpXG4gICAgICAgICAgIDogdCAtPiB0IC0+IGJvb2wpXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgPVxuICAgICAgKGZ1biB7IHBhdHRlcm4gPSBwYXR0ZXJuX18wMDhfXG4gICAgICAgICAgIDsgY2FzZV9zZW5zaXRpdmUgPSBjYXNlX3NlbnNpdGl2ZV9fMDEwX1xuICAgICAgICAgICA7IGttcF9hcnJheSA9IGttcF9hcnJheV9fMDEyX1xuICAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBibmRzX18wMDdfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgICBsZXQgYm5kc19fMDA3XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDEzXyA9IHNleHBfb2ZfYXJyYXkgc2V4cF9vZl9pbnQga21wX2FycmF5X18wMTJfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImttcF9hcnJheVwiOyBhcmdfXzAxM18gXSA6OiBibmRzX18wMDdfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA3XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDExXyA9IHNleHBfb2ZfYm9vbCBjYXNlX3NlbnNpdGl2ZV9fMDEwXyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjYXNlX3NlbnNpdGl2ZVwiOyBhcmdfXzAxMV8gXVxuICAgICAgICAgICA6OiBibmRzX18wMDdfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA3XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDA5XyA9IHNleHBfb2Zfc3RyaW5nIHBhdHRlcm5fXzAwOF8gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicGF0dGVyblwiOyBhcmdfXzAwOV8gXSA6OiBibmRzX18wMDdfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDA3X1xuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHJlcHJlc2VudGF0aW9uID0gRm4uaWRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFNlYXJjaF9wYXR0ZXJuX2hlbHBlciA9IHN0cnVjdFxuICBtb2R1bGUgU2VhcmNoX3BhdHRlcm4gPSBTZWFyY2hfcGF0dGVybjBcbmVuZFxuXG5vcGVuIFNlYXJjaF9wYXR0ZXJuX2hlbHBlclxuXG5sZXQgc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXggP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXhfZXhuID9wb3MgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlIHQgfm1heV9vdmVybGFwIH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4uaW5kZXhfYWxsXG4gICAgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybilcbiAgICB+bWF5X292ZXJsYXBcbiAgICB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfcmVwbGFjZV9maXJzdF9nZW4gfmNhc2Vfc2Vuc2l0aXZlID9wb3MgdCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLnJlcGxhY2VfZmlyc3QgP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZSB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4ucmVwbGFjZV9hbGwgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgaXNfc3Vic3RyaW5nX2dlbiB+Y2FzZV9zZW5zaXRpdmUgdCB+c3Vic3RyaW5nID1cbiAgT3B0aW9uLmlzX3NvbWUgKHN1YnN0cl9pbmRleF9nZW4gdCB+cGF0dGVybjpzdWJzdHJpbmcgfmNhc2Vfc2Vuc2l0aXZlKVxuOztcblxubGV0IHN1YnN0cl9pbmRleCA9IHN1YnN0cl9pbmRleF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfaW5kZXhfZXhuID0gc3Vic3RyX2luZGV4X2V4bl9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfaW5kZXhfYWxsID0gc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfcmVwbGFjZV9maXJzdCA9IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9yZXBsYWNlX2FsbCA9IHN1YnN0cl9yZXBsYWNlX2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBpc19zdWJzdHJpbmcgPSBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5cbmxldCBpc19zdWJzdHJpbmdfYXRfZ2VuID1cbiAgbGV0IHJlYyBsb29wIH5zdHIgfnN0cl9wb3MgfnN1YiB+c3ViX3BvcyB+c3ViX2xlbiB+Y2hhcl9lcXVhbCA9XG4gICAgaWYgc3ViX3BvcyA9IHN1Yl9sZW5cbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIGlmIGNoYXJfZXF1YWwgKHVuc2FmZV9nZXQgc3RyIHN0cl9wb3MpICh1bnNhZmVfZ2V0IHN1YiBzdWJfcG9zKVxuICAgIHRoZW4gbG9vcCB+c3RyIH5zdHJfcG9zOihzdHJfcG9zICsgMSkgfnN1YiB+c3ViX3Bvczooc3ViX3BvcyArIDEpIH5zdWJfbGVuIH5jaGFyX2VxdWFsXG4gICAgZWxzZSBmYWxzZVxuICBpblxuICBmdW4gc3RyIH5wb3M6c3RyX3BvcyB+c3Vic3RyaW5nOnN1YiB+Y2hhcl9lcXVhbCAtPlxuICAgIGxldCBzdHJfbGVuID0gbGVuZ3RoIHN0ciBpblxuICAgIGxldCBzdWJfbGVuID0gbGVuZ3RoIHN1YiBpblxuICAgIGlmIHN0cl9wb3MgPCAwIHx8IHN0cl9wb3MgPiBzdHJfbGVuXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiU3RyaW5nLmlzX3N1YnN0cmluZ19hdDogaW52YWxpZCBpbmRleCAlZCBmb3Igc3RyaW5nIG9mIGxlbmd0aCAlZFwiXG4gICAgICAgIHN0cl9wb3NcbiAgICAgICAgc3RyX2xlblxuICAgICAgICAoKTtcbiAgICBzdHJfcG9zICsgc3ViX2xlbiA8PSBzdHJfbGVuXG4gICAgJiYgbG9vcCB+c3RyIH5zdHJfcG9zIH5zdWIgfnN1Yl9wb3M6MCB+c3ViX2xlbiB+Y2hhcl9lcXVhbFxuOztcblxubGV0IGlzX3N1ZmZpeF9nZW4gc3RyaW5nIH5zdWZmaXggfmNoYXJfZXF1YWwgPVxuICBsZXQgc3RyaW5nX2xlbiA9IGxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IHN1ZmZpeF9sZW4gPSBsZW5ndGggc3VmZml4IGluXG4gIHN0cmluZ19sZW4gPj0gc3VmZml4X2xlblxuICAmJiBpc19zdWJzdHJpbmdfYXRfZ2VuXG4gICAgICAgc3RyaW5nXG4gICAgICAgfnBvczooc3RyaW5nX2xlbiAtIHN1ZmZpeF9sZW4pXG4gICAgICAgfnN1YnN0cmluZzpzdWZmaXhcbiAgICAgICB+Y2hhcl9lcXVhbFxuOztcblxubGV0IGlzX3ByZWZpeF9nZW4gc3RyaW5nIH5wcmVmaXggfmNoYXJfZXF1YWwgPVxuICBsZXQgc3RyaW5nX2xlbiA9IGxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IHByZWZpeF9sZW4gPSBsZW5ndGggcHJlZml4IGluXG4gIHN0cmluZ19sZW4gPj0gcHJlZml4X2xlblxuICAmJiBpc19zdWJzdHJpbmdfYXRfZ2VuIHN0cmluZyB+cG9zOjAgfnN1YnN0cmluZzpwcmVmaXggfmNoYXJfZXF1YWxcbjs7XG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChzdHJpbmdfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICAgIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9zdHJpbmcgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBzdHJpbmdfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNoYXJfY29tcGFyZV9jYXNlbGVzcyBjMSBjMiA9IENoYXIuY29tcGFyZSAoQ2hhci5sb3dlcmNhc2UgYzEpIChDaGFyLmxvd2VyY2FzZSBjMilcblxuICAgIGxldCByZWMgY29tcGFyZV9sb29wIH5wb3MgfnN0cmluZzEgfmxlbjEgfnN0cmluZzIgfmxlbjIgPVxuICAgICAgaWYgcG9zID0gbGVuMVxuICAgICAgdGhlbiBpZiBwb3MgPSBsZW4yIHRoZW4gMCBlbHNlIC0xXG4gICAgICBlbHNlIGlmIHBvcyA9IGxlbjJcbiAgICAgIHRoZW4gMVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjID0gY2hhcl9jb21wYXJlX2Nhc2VsZXNzICh1bnNhZmVfZ2V0IHN0cmluZzEgcG9zKSAodW5zYWZlX2dldCBzdHJpbmcyIHBvcykgaW5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgMCAtPiBjb21wYXJlX2xvb3AgfnBvczoocG9zICsgMSkgfnN0cmluZzEgfmxlbjEgfnN0cmluZzIgfmxlbjJcbiAgICAgICAgfCBfIC0+IGMpXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIHN0cmluZzEgc3RyaW5nMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHN0cmluZzEgc3RyaW5nMlxuICAgICAgdGhlbiAwXG4gICAgICBlbHNlXG4gICAgICAgIGNvbXBhcmVfbG9vcFxuICAgICAgICAgIH5wb3M6MFxuICAgICAgICAgIH5zdHJpbmcxXG4gICAgICAgICAgfmxlbjE6KFN0cmluZy5sZW5ndGggc3RyaW5nMSlcbiAgICAgICAgICB+c3RyaW5nMlxuICAgICAgICAgIH5sZW4yOihTdHJpbmcubGVuZ3RoIHN0cmluZzIpXG4gICAgOztcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID1cbiAgICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgICAgbGV0IHN0YXRlID0gcmVmIChoYXNoX2ZvbGRfaW50IHN0YXRlIGxlbikgaW5cbiAgICAgIGZvciBwb3MgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgc3RhdGUgOj0gaGFzaF9mb2xkX2NoYXIgIXN0YXRlIChDaGFyLmxvd2VyY2FzZSAodW5zYWZlX2dldCB0IHBvcykpXG4gICAgICBkb25lO1xuICAgICAgIXN0YXRlXG4gICAgOztcblxuICAgIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gICAgbGV0IGlzX3N1ZmZpeCBzIH5zdWZmaXggPSBpc19zdWZmaXhfZ2VuIHMgfnN1ZmZpeCB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gICAgbGV0IGlzX3ByZWZpeCBzIH5wcmVmaXggPSBpc19wcmVmaXhfZ2VuIHMgfnByZWZpeCB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gICAgbGV0IHN1YnN0cl9pbmRleCA9IHN1YnN0cl9pbmRleF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9pbmRleF9leG4gPSBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX2luZGV4X2FsbCA9IHN1YnN0cl9pbmRleF9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfcmVwbGFjZV9maXJzdCA9IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX3JlcGxhY2VfYWxsID0gc3Vic3RyX3JlcGxhY2VfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgaXNfc3Vic3RyaW5nID0gaXNfc3Vic3RyaW5nX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgaXNfc3Vic3RyaW5nX2F0ID0gaXNfc3Vic3RyaW5nX2F0X2dlbiB+Y2hhcl9lcXVhbDpDaGFyLkNhc2VsZXNzLmVxdWFsXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nID0gRm4uaWRcbmxldCB0b19zdHJpbmcgPSBGbi5pZFxuXG5sZXQgaW5pdCBuIH5mID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJTdHJpbmcuaW5pdCAlZFwiIG4gKCk7XG4gIGxldCB0ID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHQgaSAoZiBpKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnRcbjs7XG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPSBpZiBpIDwgMCB0aGVuIGFjYyBlbHNlIGxvb3AgKHMuW2ldIDo6IGFjYykgKGkgLSAxKSBpblxuICBsb29wIFtdIChsZW5ndGggcyAtIDEpXG47O1xuXG5sZXQgdG9fbGlzdF9yZXYgcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPSBpZiBpID0gbGVuIHRoZW4gYWNjIGVsc2UgbG9vcCAocy5baV0gOjogYWNjKSAoaSArIDEpIGluXG4gIGxvb3AgW10gMFxuOztcblxubGV0IHJldiB0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXMgaSAodW5zYWZlX2dldCB0IChsZW4gLSAxIC0gaSkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzXG47O1xuXG4oKiogRWZmaWNpZW50IHN0cmluZyBzcGxpdHRpbmcgKilcblxubGV0IGxzcGxpdDJfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLmxzcGxpdDJfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGxzcGxpdDJfZXhuIGxpbmUgfm9uOmRlbGltID1cbiAgICBsZXQgcG9zID0gaW5kZXhfZXhuX2ludGVybmFsIGxpbmUgfm5vdF9mb3VuZCBkZWxpbSBpblxuICAgIHN1YiBsaW5lIH5wb3M6MCB+bGVuOnBvcywgc3ViIGxpbmUgfnBvczoocG9zICsgMSkgfmxlbjoobGVuZ3RoIGxpbmUgLSBwb3MgLSAxKVxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGxzcGxpdDJfZXhuXG47O1xuXG5sZXQgcnNwbGl0Ml9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcucnNwbGl0Ml9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcnNwbGl0Ml9leG4gbGluZSB+b246ZGVsaW0gPVxuICAgIGxldCBwb3MgPSByaW5kZXhfZXhuX2ludGVybmFsIGxpbmUgfm5vdF9mb3VuZCBkZWxpbSBpblxuICAgIHN1YiBsaW5lIH5wb3M6MCB+bGVuOnBvcywgc3ViIGxpbmUgfnBvczoocG9zICsgMSkgfmxlbjoobGVuZ3RoIGxpbmUgLSBwb3MgLSAxKVxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJzcGxpdDJfZXhuXG47O1xuXG5sZXQgbHNwbGl0MiBsaW5lIH5vbiA9XG4gIHRyeSBTb21lIChsc3BsaXQyX2V4biBsaW5lIH5vbikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByc3BsaXQyIGxpbmUgfm9uID1cbiAgdHJ5IFNvbWUgKHJzcGxpdDJfZXhuIGxpbmUgfm9uKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJlYyBjaGFyX2xpc3RfbWVtIGwgKGMgOiBjaGFyKSA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGZhbHNlXG4gIHwgaGQgOjogdGwgLT4gQ2hhci5lcXVhbCBoZCBjIHx8IGNoYXJfbGlzdF9tZW0gdGwgY1xuOztcblxubGV0IHNwbGl0X2dlbiBzdHIgfm9uID1cbiAgbGV0IGlzX2RlbGltID1cbiAgICBtYXRjaCBvbiB3aXRoXG4gICAgfCBgY2hhciBjJyAtPiBmdW4gYyAtPiBDaGFyLmVxdWFsIGMgYydcbiAgICB8IGBjaGFyX2xpc3QgbCAtPiBmdW4gYyAtPiBjaGFyX2xpc3RfbWVtIGwgY1xuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIHN0ciBpblxuICBsZXQgcmVjIGxvb3AgYWNjIGxhc3RfcG9zIHBvcyA9XG4gICAgaWYgcG9zID0gLTFcbiAgICB0aGVuIHN1YiBzdHIgfnBvczowIH5sZW46bGFzdF9wb3MgOjogYWNjXG4gICAgZWxzZSBpZiBpc19kZWxpbSBzdHIuW3Bvc11cbiAgICB0aGVuIChcbiAgICAgIGxldCBwb3MxID0gcG9zICsgMSBpblxuICAgICAgbGV0IHN1Yl9zdHIgPSBzdWIgc3RyIH5wb3M6cG9zMSB+bGVuOihsYXN0X3BvcyAtIHBvczEpIGluXG4gICAgICBsb29wIChzdWJfc3RyIDo6IGFjYykgcG9zIChwb3MgLSAxKSlcbiAgICBlbHNlIGxvb3AgYWNjIGxhc3RfcG9zIChwb3MgLSAxKVxuICBpblxuICBsb29wIFtdIGxlbiAobGVuIC0gMSlcbjs7XG5cbmxldCBzcGxpdCBzdHIgfm9uID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyIG9uKVxubGV0IHNwbGl0X29uX2NoYXJzIHN0ciB+b246Y2hhcnMgPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXJfbGlzdCBjaGFycylcblxubGV0IHNwbGl0X2xpbmVzID1cbiAgbGV0IGJhY2tfdXBfYXRfbmV3bGluZSB+dCB+cG9zIH5lb2wgPVxuICAgIHBvcyA6PSAhcG9zIC0gaWYgIXBvcyA+IDAgJiYgQ2hhci5lcXVhbCB0LlshcG9zIC0gMV0gJ1xccicgdGhlbiAyIGVsc2UgMTtcbiAgICBlb2wgOj0gIXBvcyArIDFcbiAgaW5cbiAgZnVuIHQgLT5cbiAgICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgbiA9IDBcbiAgICB0aGVuIFtdXG4gICAgZWxzZSAoXG4gICAgICAoKiBJbnZhcmlhbnQ6IFstMSA8PSBwb3MgPCBlb2xdLiAqKVxuICAgICAgbGV0IHBvcyA9IHJlZiAobiAtIDEpIGluXG4gICAgICBsZXQgZW9sID0gcmVmIG4gaW5cbiAgICAgIGxldCBhYyA9IHJlZiBbXSBpblxuICAgICAgKCogV2UgdHJlYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIHNwZWNpYWxseSwgYmVjYXVzZSBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBhXG4gICAgICAgICBuZXdsaW5lLCB3ZSBkb24ndCB3YW50IGFuIGV4dHJhIGVtcHR5IHN0cmluZyBhdCB0aGUgZW5kIG9mIHRoZSBvdXRwdXQuICopXG4gICAgICBpZiBDaGFyLmVxdWFsIHQuWyFwb3NdICdcXG4nIHRoZW4gYmFja191cF9hdF9uZXdsaW5lIH50IH5wb3MgfmVvbDtcbiAgICAgIHdoaWxlICFwb3MgPj0gMCBkb1xuICAgICAgICBpZiBDaGFyLiggPD4gKSB0LlshcG9zXSAnXFxuJ1xuICAgICAgICB0aGVuIGRlY3IgcG9zXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIEJlY2F1c2UgW3BvcyA8IGVvbF0sIHdlIGtub3cgdGhhdCBbc3RhcnQgPD0gZW9sXS4gKilcbiAgICAgICAgICBsZXQgc3RhcnQgPSAhcG9zICsgMSBpblxuICAgICAgICAgIGFjIDo9IHN1YiB0IH5wb3M6c3RhcnQgfmxlbjooIWVvbCAtIHN0YXJ0KSA6OiAhYWM7XG4gICAgICAgICAgYmFja191cF9hdF9uZXdsaW5lIH50IH5wb3MgfmVvbClcbiAgICAgIGRvbmU7XG4gICAgICBzdWIgdCB+cG9zOjAgfmxlbjohZW9sIDo6ICFhYylcbjs7XG5cbmxldCBpc19zdWZmaXggcyB+c3VmZml4ID0gaXNfc3VmZml4X2dlbiBzIH5zdWZmaXggfmNoYXJfZXF1YWw6Q2hhci5lcXVhbFxubGV0IGlzX3ByZWZpeCBzIH5wcmVmaXggPSBpc19wcmVmaXhfZ2VuIHMgfnByZWZpeCB+Y2hhcl9lcXVhbDpDaGFyLmVxdWFsXG5cbmxldCBpc19zdWJzdHJpbmdfYXQgcyB+cG9zIH5zdWJzdHJpbmcgPVxuICBpc19zdWJzdHJpbmdfYXRfZ2VuIHMgfnBvcyB+c3Vic3RyaW5nIH5jaGFyX2VxdWFsOkNoYXIuZXF1YWxcbjs7XG5cbmxldCB3cmFwX3N1Yl9uIHQgbiB+bmFtZSB+cG9zIH5sZW4gfm9uX2Vycm9yID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyAobmFtZSBeIFwiIGV4cGVjdGluZyBub25uZWdhdGl2ZSBhcmd1bWVudFwiKVxuICBlbHNlIChcbiAgICB0cnkgc3ViIHQgfnBvcyB+bGVuIHdpdGhcbiAgICB8IF8gLT4gb25fZXJyb3IpXG47O1xuXG5sZXQgZHJvcF9wcmVmaXggdCBuID1cbiAgd3JhcF9zdWJfbiB+bmFtZTpcImRyb3BfcHJlZml4XCIgdCBuIH5wb3M6biB+bGVuOihsZW5ndGggdCAtIG4pIH5vbl9lcnJvcjpcIlwiXG47O1xuXG5sZXQgZHJvcF9zdWZmaXggdCBuID1cbiAgd3JhcF9zdWJfbiB+bmFtZTpcImRyb3Bfc3VmZml4XCIgdCBuIH5wb3M6MCB+bGVuOihsZW5ndGggdCAtIG4pIH5vbl9lcnJvcjpcIlwiXG47O1xuXG5sZXQgcHJlZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJwcmVmaXhcIiB0IG4gfnBvczowIH5sZW46biB+b25fZXJyb3I6dFxubGV0IHN1ZmZpeCB0IG4gPSB3cmFwX3N1Yl9uIH5uYW1lOlwic3VmZml4XCIgdCBuIH5wb3M6KGxlbmd0aCB0IC0gbikgfmxlbjpuIH5vbl9lcnJvcjp0XG5cbmxldCBsZmluZGkgPyhwb3MgPSAwKSB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgcmVjIGxvb3AgaSA9IGlmIGkgPSBuIHRoZW4gTm9uZSBlbHNlIGlmIGYgaSB0LltpXSB0aGVuIFNvbWUgaSBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICBsb29wIHBvcyBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbWF0Y2ggbGZpbmRpIHQgfmY6KGZ1biBfIGMgLT4gZiBjKSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBpIC0+IFNvbWUgdC5baV1cbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG5cbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGYgdC5baV0gd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgfCBTb21lIF8gYXMgcmVzIC0+IHJlcylcbiAgaW5cbiAgbG9vcCAwIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZmluZGkgP3BvcyB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgPSBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZSBpZiBmIGkgdC5baV0gdGhlbiBTb21lIGkgZWxzZSBsb29wIChpIC0gMSkgaW5cbiAgbGV0IHBvcyA9XG4gICAgbWF0Y2ggcG9zIHdpdGhcbiAgICB8IFNvbWUgcG9zIC0+IHBvc1xuICAgIHwgTm9uZSAtPiBsZW5ndGggdCAtIDFcbiAgaW5cbiAgbG9vcCBwb3MgW0Bub250YWlsXVxuOztcblxubGV0IGxhc3Rfbm9uX2Ryb3AgfmRyb3AgdCA9IHJmaW5kaSB0IH5mOihmdW4gXyBjIC0+IG5vdCAoZHJvcCBjKSkgW0Bub250YWlsXVxuXG5sZXQgcnN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIG1hdGNoIGxhc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gIHwgTm9uZSAtPiBcIlwiXG4gIHwgU29tZSBpIC0+IGlmIGkgPSBsZW5ndGggdCAtIDEgdGhlbiB0IGVsc2UgcHJlZml4IHQgKGkgKyAxKVxuOztcblxubGV0IGZpcnN0X25vbl9kcm9wIH5kcm9wIHQgPSBsZmluZGkgdCB+ZjooZnVuIF8gYyAtPiBub3QgKGRyb3AgYykpIFtAbm9udGFpbF1cblxubGV0IGxzdHJpcCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgPVxuICBtYXRjaCBmaXJzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgfCBOb25lIC0+IFwiXCJcbiAgfCBTb21lIDAgLT4gdFxuICB8IFNvbWUgbiAtPiBkcm9wX3ByZWZpeCB0IG5cbjs7XG5cbigqIFtzdHJpcCB0XSBjb3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBbbHN0cmlwIChyc3RyaXAgdCldLiAgVGhlIGltcGxlbWVudGF0aW9uXG4gICBiZWxvdyBzYXZlcyAoYXQgbGVhc3QpIGEgZmFjdG9yIG9mIHR3byBhbGxvY2F0aW9uLCBieSBvbmx5IGFsbG9jYXRpbmcgdGhlXG4gICBmaW5hbCByZXN1bHQuICBUaGlzIGFsc28gc2F2ZXMgc29tZSBhbW91bnQgb2YgdGltZS4gKilcbmxldCBzdHJpcCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMCB8fCBub3QgKGRyb3AgdC5bMF0gfHwgZHJvcCB0LltsZW5ndGggLSAxXSlcbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIGZpcnN0IC0+XG4gICAgICAobWF0Y2ggbGFzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgfCBTb21lIGxhc3QgLT4gc3ViIHQgfnBvczpmaXJzdCB+bGVuOihsYXN0IC0gZmlyc3QgKyAxKSkpXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IGwgPSBsZW5ndGggdCBpblxuICBsZXQgdCcgPSBCeXRlcy5jcmVhdGUgbCBpblxuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHQnIGkgKGYgaSB0LltpXSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0J1xuOztcblxuKCogcmVwZWF0ZWQgY29kZSB0byBhdm9pZCByZXF1aXJpbmcgYW4gZXh0cmEgYWxsb2NhdGlvbiBmb3IgYSBjbG9zdXJlIG9uIGVhY2ggY2FsbC4gKilcbmxldCBtYXAgdCB+ZiA9XG4gIGxldCBsID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHQnID0gQnl0ZXMuY3JlYXRlIGwgaW5cbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0JyBpIChmIHQuW2ldKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnQnXG47O1xuXG5sZXQgdG9fYXJyYXkgcyA9IEFycmF5LmluaXQgKGxlbmd0aCBzKSB+ZjooZnVuIGkgLT4gcy5baV0pXG5cbmxldCBleGlzdHMgPVxuICBsZXQgcmVjIGxvb3AgcyBpIH5sZW4gfmYgPSBpIDwgbGVuICYmIChmIHMuW2ldIHx8IGxvb3AgcyAoaSArIDEpIH5sZW4gfmYpIGluXG4gIGZ1biBzIH5mIC0+IGxvb3AgcyAwIH5sZW46KGxlbmd0aCBzKSB+ZlxuOztcblxubGV0IGZvcl9hbGwgPVxuICBsZXQgcmVjIGxvb3AgcyBpIH5sZW4gfmYgPSBpID0gbGVuIHx8IChmIHMuW2ldICYmIGxvb3AgcyAoaSArIDEpIH5sZW4gfmYpIGluXG4gIGZ1biBzIH5mIC0+IGxvb3AgcyAwIH5sZW46KGxlbmd0aCBzKSB+ZlxuOztcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGxvb3AgdCBpIGFjIH5mIH5sZW4gPVxuICAgIGlmIGkgPSBsZW4gdGhlbiBhYyBlbHNlIGxvb3AgdCAoaSArIDEpIChmIGFjIHQuW2ldKSB+ZiB+bGVuXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCAwIGluaXQgfmYgfmxlbjoobGVuZ3RoIHQpXG47O1xuXG5sZXQgZm9sZGkgPVxuICBsZXQgcmVjIGxvb3AgdCBpIGFjIH5mIH5sZW4gPVxuICAgIGlmIGkgPSBsZW4gdGhlbiBhYyBlbHNlIGxvb3AgdCAoaSArIDEpIChmIGkgYWMgdC5baV0pIH5mIH5sZW5cbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IDAgaW5pdCB+ZiB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmVcbjs7XG5cbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0XG5sZXQgbWF4X2VsdCB0ID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdFxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG5sZXQgZmluZF9tYXBpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5maW5kX21hcGkgfml0ZXJpIHQgfmZcbmxldCBmaW5kaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZmluZGkgfml0ZXJpIHQgfmZcbmxldCBjb3VudGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmNvdW50aSB+Zm9sZGkgdCB+ZlxubGV0IGZvcl9hbGxpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5mb3JfYWxsaSB+aXRlcmkgdCB+ZlxubGV0IGV4aXN0c2kgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmV4aXN0c2kgfml0ZXJpIHQgfmZcblxubGV0IG1lbSA9XG4gIGxldCByZWMgbG9vcCB0IGMgfnBvczppIH5sZW4gPVxuICAgIGkgPCBsZW4gJiYgKENoYXIuZXF1YWwgYyAodW5zYWZlX2dldCB0IGkpIHx8IGxvb3AgdCBjIH5wb3M6KGkgKyAxKSB+bGVuKVxuICBpblxuICBmdW4gdCBjIC0+IGxvb3AgdCBjIH5wb3M6MCB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCB0ciB+dGFyZ2V0IH5yZXBsYWNlbWVudCBzID1cbiAgaWYgQ2hhci5lcXVhbCB0YXJnZXQgcmVwbGFjZW1lbnRcbiAgdGhlbiBzXG4gIGVsc2UgaWYgbWVtIHMgdGFyZ2V0XG4gIHRoZW4gbWFwIHMgfmY6KGZ1biBjIC0+IGlmIENoYXIuZXF1YWwgYyB0YXJnZXQgdGhlbiByZXBsYWNlbWVudCBlbHNlIGMpXG4gIGVsc2Ugc1xuOztcblxubGV0IHRyX211bHRpIH50YXJnZXQgfnJlcGxhY2VtZW50ID1cbiAgaWYgaXNfZW1wdHkgdGFyZ2V0XG4gIHRoZW4gc3RhZ2UgRm4uaWRcbiAgZWxzZSBpZiBpc19lbXB0eSByZXBsYWNlbWVudFxuICB0aGVuIGludmFsaWRfYXJnIFwidHJfbXVsdGkgcmVwbGFjZW1lbnQgaXMgZW1wdHkgc3RyaW5nXCJcbiAgZWxzZSAoXG4gICAgbWF0Y2ggQnl0ZXNfdHIudHJfY3JlYXRlX21hcCB+dGFyZ2V0IH5yZXBsYWNlbWVudCB3aXRoXG4gICAgfCBOb25lIC0+IHN0YWdlIEZuLmlkXG4gICAgfCBTb21lIHRyX21hcCAtPlxuICAgICAgc3RhZ2UgKGZ1biBzIC0+XG4gICAgICAgIGlmIGV4aXN0cyBzIH5mOihmdW4gYyAtPiBDaGFyLiggPD4gKSBjICh1bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgYykpKVxuICAgICAgICB0aGVuIG1hcCBzIH5mOihmdW4gYyAtPiB1bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgYykpXG4gICAgICAgIGVsc2UgcykpXG47O1xuXG4oKiBmYXN0IHZlcnNpb24sIGlmIHdlIGV2ZXIgbmVlZCBpdDpcbiAgIHtbXG4gICAgIGxldCBjb25jYXRfYXJyYXkgfnNlcCBhciA9XG4gICAgICAgbGV0IGFyX2xlbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgICAgIGlmIGFyX2xlbiA9IDAgdGhlbiBcIlwiXG4gICAgICAgZWxzZVxuICAgICAgICAgbGV0IHNlcF9sZW4gPSBsZW5ndGggc2VwIGluXG4gICAgICAgICBsZXQgcmVzX2xlbl9yZWYgPSByZWYgKHNlcF9sZW4gKiAoYXJfbGVuIC0gMSkpIGluXG4gICAgICAgICBmb3IgaSA9IDAgdG8gYXJfbGVuIC0gMSBkb1xuICAgICAgICAgICByZXNfbGVuX3JlZiA6PSAhcmVzX2xlbl9yZWYgKyBsZW5ndGggYXIuKGkpXG4gICAgICAgICBkb25lO1xuICAgICAgICAgbGV0IHJlcyA9IGNyZWF0ZSAhcmVzX2xlbl9yZWYgaW5cbiAgICAgICAgIGxldCBzdHJfMCA9IGFyLigwKSBpblxuICAgICAgICAgbGV0IGxlbl8wID0gbGVuZ3RoIHN0cl8wIGluXG4gICAgICAgICBibGl0IH5zcmM6c3RyXzAgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3BvczowIH5sZW46bGVuXzA7XG4gICAgICAgICBsZXQgcG9zX3JlZiA9IHJlZiBsZW5fMCBpblxuICAgICAgICAgZm9yIGkgPSAxIHRvIGFyX2xlbiAtIDEgZG9cbiAgICAgICAgICAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gICAgICAgICAgIGJsaXQgfnNyYzpzZXAgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3Bvczpwb3MgfmxlbjpzZXBfbGVuO1xuICAgICAgICAgICBsZXQgbmV3X3BvcyA9IHBvcyArIHNlcF9sZW4gaW5cbiAgICAgICAgICAgbGV0IHN0cl9pID0gYXIuKGkpIGluXG4gICAgICAgICAgIGxldCBsZW5faSA9IGxlbmd0aCBzdHJfaSBpblxuICAgICAgICAgICBibGl0IH5zcmM6c3RyX2kgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3BvczpuZXdfcG9zIH5sZW46bGVuX2k7XG4gICAgICAgICAgIHBvc19yZWYgOj0gbmV3X3BvcyArIGxlbl9pXG4gICAgICAgICBkb25lO1xuICAgICAgICAgcmVzXG4gICBdfSAqKVxuXG5sZXQgY29uY2F0X2FycmF5ID9zZXAgYXIgPSBjb25jYXQgP3NlcCAoQXJyYXkudG9fbGlzdCBhcilcbmxldCBjb25jYXRfbWFwID9zZXAgcyB+ZiA9IGNvbmNhdF9hcnJheSA/c2VwIChBcnJheS5tYXAgKHRvX2FycmF5IHMpIH5mKVxubGV0IGNvbmNhdF9tYXBpID9zZXAgdCB+ZiA9IGNvbmNhdF9hcnJheSA/c2VwIChBcnJheS5tYXBpICh0b19hcnJheSB0KSB+ZilcblxubGV0IGNvbmNhdF9saW5lcyA9XG4gIGxldCByZWMgbGluZV9sZW5ndGhzIH5saW5lcyB+bmV3bGluZV9sZW4gfnN1bSA9XG4gICAgbWF0Y2ggbGluZXMgd2l0aFxuICAgIHwgW10gLT4gc3VtXG4gICAgfCBsaW5lIDo6IGxpbmVzIC0+XG4gICAgICBsZXQgc3VtID0gc3VtICsgU3RyaW5nLmxlbmd0aCBsaW5lICsgbmV3bGluZV9sZW4gaW5cbiAgICAgIGxpbmVfbGVuZ3RocyB+bGluZXMgfm5ld2xpbmVfbGVuIH5zdW1cbiAgaW5cbiAgbGV0IHJlYyB3cml0ZV9saW5lcyB+YnVmIH5saW5lcyB+Y3JsZiB+cG9zID1cbiAgICBtYXRjaCBsaW5lcyB3aXRoXG4gICAgfCBbXSAtPiBwb3NcbiAgICB8IGxpbmUgOjogbGluZXMgLT5cbiAgICAgIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZ1xuICAgICAgICB+c3JjOmxpbmVcbiAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICB+ZHN0OmJ1ZlxuICAgICAgICB+ZHN0X3Bvczpwb3NcbiAgICAgICAgfmxlbjooU3RyaW5nLmxlbmd0aCBsaW5lKTtcbiAgICAgIGxldCBwb3MgPSBwb3MgKyBTdHJpbmcubGVuZ3RoIGxpbmUgaW5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICBpZiBjcmxmXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIHBvcyAnXFxyJztcbiAgICAgICAgICBwb3MgKyAxKVxuICAgICAgICBlbHNlIHBvc1xuICAgICAgaW5cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIHBvcyAnXFxuJztcbiAgICAgIGxldCBwb3MgPSBwb3MgKyAxIGluXG4gICAgICB3cml0ZV9saW5lcyB+YnVmIH5saW5lcyB+Y3JsZiB+cG9zXG4gIGluXG4gIGZ1biA/KGNybGYgPSBmYWxzZSkgbGluZXMgLT5cbiAgICBsZXQgbmV3bGluZV9sZW4gPSBpZiBjcmxmIHRoZW4gMiBlbHNlIDEgaW5cbiAgICBsZXQgbGVuID0gbGluZV9sZW5ndGhzIH5uZXdsaW5lX2xlbiB+bGluZXMgfnN1bTowIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgd3JpdHRlbiA9IHdyaXRlX2xpbmVzIH5idWYgfmxpbmVzIH5jcmxmIH5wb3M6MCBpblxuICAgIGFzc2VydCAod3JpdHRlbiA9IGxlbik7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbjs7XG5cbigqIFtmaWx0ZXIgdCBmXSBpcyBpbXBsZW1lbnRlZCBieSB0aGUgZm9sbG93aW5nIGFsZ29yaXRobS5cblxuICAgTGV0IFtuID0gbGVuZ3RoIHRdLlxuXG4gICAxLiBGaW5kIHRoZSBsb3dlc3QgW2ldIHN1Y2ggdGhhdCBbbm90IChmIHQuW2ldKV0uXG5cbiAgIDIuIElmIHRoZXJlIGlzIG5vIHN1Y2ggW2ldLCB0aGVuIHJldHVybiBbdF0uXG5cbiAgIDMuIElmIHRoZXJlIGlzIHN1Y2ggYW4gW2ldLCBhbGxvY2F0ZSBhIHN0cmluZywgW291dF0sIHRvIGhvbGQgdGhlIHJlc3VsdC4gIFtvdXRdIGhhc1xuICAgbGVuZ3RoIFtuIC0gMV0sIHdoaWNoIGlzIHRoZSBtYXhpbXVtIHBvc3NpYmxlIG91dHB1dCBzaXplIGdpdmVuIHRoYXQgdGhlcmUgaXMgYXQgbGVhc3RcbiAgIG9uZSBjaGFyYWN0ZXIgbm90IHNhdGlzZnlpbmcgW2ZdLlxuXG4gICA0LiBDb3B5IGNoYXJhY3RlcnMgYXQgaW5kaWNlcyAwIC4uLiBbaSAtIDFdIGZyb20gW3RdIHRvIFtvdXRdLlxuXG4gICA1LiBXYWxrIHRocm91Z2ggY2hhcmFjdGVycyBhdCBpbmRpY2VzIFtpKzFdIC4uLiBbbi0xXSBvZiBbdF0sIGNvcHlpbmcgdGhvc2UgdGhhdFxuICAgc2F0aXNmeSBbZl0gZnJvbSBbdF0gdG8gW291dF0uXG5cbiAgIDYuIElmIHdlIGNvbXBsZXRlbHkgZmlsbGVkIFtvdXRdLCB0aGVuIHJldHVybiBpdC4gIElmIG5vdCwgcmV0dXJuIHRoZSBwcmVmaXggb2YgW291dF1cbiAgIHRoYXQgd2UgZGlkIGZpbGwgaW4uXG5cbiAgIFRoaXMgYWxnb3JpdGhtIGhhcyB0aGUgcHJvcGVydHkgdGhhdCBpdCBkb2Vzbid0IGFsbG9jYXRlIGEgbmV3IHN0cmluZyBpZiB0aGVyZSdzXG4gICBub3RoaW5nIHRvIGZpbHRlciwgd2hpY2ggaXMgYSBjb21tb24gY2FzZS4gKilcbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IG4gJiYgZiB0LlshaV0gZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgaWYgIWkgPSBuXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBsZXQgb3V0ID0gQnl0ZXMuY3JlYXRlIChuIC0gMSkgaW5cbiAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om91dCB+ZHN0X3BvczowIH5sZW46IWk7XG4gICAgbGV0IG91dF9wb3MgPSByZWYgIWkgaW5cbiAgICBpbmNyIGk7XG4gICAgd2hpbGUgIWkgPCBuIGRvXG4gICAgICBsZXQgYyA9IHQuWyFpXSBpblxuICAgICAgaWYgZiBjXG4gICAgICB0aGVuIChcbiAgICAgICAgQnl0ZXMuc2V0IG91dCAhb3V0X3BvcyBjO1xuICAgICAgICBpbmNyIG91dF9wb3MpO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICBsZXQgb3V0ID0gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpvdXQgaW5cbiAgICBpZiAhb3V0X3BvcyA9IG4gLSAxIHRoZW4gb3V0IGVsc2Ugc3ViIG91dCB+cG9zOjAgfmxlbjohb3V0X3Bvcylcbjs7XG5cbigqIHJlcGVhdGVkIGNvZGUgdG8gYXZvaWQgcmVxdWlyaW5nIGFuIGV4dHJhIGFsbG9jYXRpb24gZm9yIGEgY2xvc3VyZSBvbiBlYWNoIGNhbGwuICopXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbiAmJiBmICFpIHQuWyFpXSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBpZiAhaSA9IG5cbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIGxldCBvdXQgPSBCeXRlcy5jcmVhdGUgKG4gLSAxKSBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6b3V0IH5kc3RfcG9zOjAgfmxlbjohaTtcbiAgICBsZXQgb3V0X3BvcyA9IHJlZiAhaSBpblxuICAgIGluY3IgaTtcbiAgICB3aGlsZSAhaSA8IG4gZG9cbiAgICAgIGxldCBjID0gdC5bIWldIGluXG4gICAgICBpZiBmICFpIGNcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0ICFvdXRfcG9zIGM7XG4gICAgICAgIGluY3Igb3V0X3Bvcyk7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGxldCBvdXQgPSBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOm91dCBpblxuICAgIGlmICFvdXRfcG9zID0gbiAtIDEgdGhlbiBvdXQgZWxzZSBzdWIgb3V0IH5wb3M6MCB+bGVuOiFvdXRfcG9zKVxuOztcblxubGV0IGNob3BfcHJlZml4IHMgfnByZWZpeCA9XG4gIGlmIGlzX3ByZWZpeCBzIH5wcmVmaXggdGhlbiBTb21lIChkcm9wX3ByZWZpeCBzIChsZW5ndGggcHJlZml4KSkgZWxzZSBOb25lXG47O1xuXG5sZXQgY2hvcF9wcmVmaXhfaWZfZXhpc3RzIHMgfnByZWZpeCA9XG4gIGlmIGlzX3ByZWZpeCBzIH5wcmVmaXggdGhlbiBkcm9wX3ByZWZpeCBzIChsZW5ndGggcHJlZml4KSBlbHNlIHNcbjs7XG5cbmxldCBjaG9wX3ByZWZpeF9leG4gcyB+cHJlZml4ID1cbiAgbWF0Y2ggY2hvcF9wcmVmaXggcyB+cHJlZml4IHdpdGhcbiAgfCBTb21lIHN0ciAtPiBzdHJcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIlN0cmluZy5jaG9wX3ByZWZpeF9leG4gJVMgJVNcIiBzIHByZWZpeCAoKVxuOztcblxubGV0IGNob3Bfc3VmZml4IHMgfnN1ZmZpeCA9XG4gIGlmIGlzX3N1ZmZpeCBzIH5zdWZmaXggdGhlbiBTb21lIChkcm9wX3N1ZmZpeCBzIChsZW5ndGggc3VmZml4KSkgZWxzZSBOb25lXG47O1xuXG5sZXQgY2hvcF9zdWZmaXhfaWZfZXhpc3RzIHMgfnN1ZmZpeCA9XG4gIGlmIGlzX3N1ZmZpeCBzIH5zdWZmaXggdGhlbiBkcm9wX3N1ZmZpeCBzIChsZW5ndGggc3VmZml4KSBlbHNlIHNcbjs7XG5cbmxldCBjaG9wX3N1ZmZpeF9leG4gcyB+c3VmZml4ID1cbiAgbWF0Y2ggY2hvcF9zdWZmaXggcyB+c3VmZml4IHdpdGhcbiAgfCBTb21lIHN0ciAtPiBzdHJcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIlN0cmluZy5jaG9wX3N1ZmZpeF9leG4gJVMgJVNcIiBzIHN1ZmZpeCAoKVxuOztcblxubW9kdWxlIEZvcl9jb21tb25fcHJlZml4X2FuZF9zdWZmaXggPSBzdHJ1Y3RcbiAgKCogV2hlbiB0YWtpbmcgYSBzdHJpbmcgcHJlZml4IG9yIHN1ZmZpeCwgd2UgZXh0cmFjdCBmcm9tIHRoZSBzaG9ydGVzdCBpbnB1dCBhdmFpbGFibGVcbiAgICAgaW4gY2FzZSB3ZSBjYW4ganVzdCByZXR1cm4gb25lIG9mIG91ciBpbnB1dHMgd2l0aG91dCBhbGxvY2F0aW5nIGEgbmV3IHN0cmluZy4gKilcblxuICBsZXQgc2hvcnRlciBhIGIgPSBpZiBsZW5ndGggYSA8PSBsZW5ndGggYiB0aGVuIGEgZWxzZSBiXG5cbiAgbGV0IHNob3J0ZXN0IGxpc3QgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gXCJcIlxuICAgIHwgZmlyc3QgOjogcmVzdCAtPiBMaXN0LmZvbGQgcmVzdCB+aW5pdDpmaXJzdCB+ZjpzaG9ydGVyXG4gIDs7XG5cbiAgKCogT3VyIGdlbmVyaWMgYWNjZXNzb3JzIGZvciBjb21tb24gcHJlZml4L3N1ZmZpeCBhYnN0cmFjdCBvdmVyIFtnZXRfcG9zXSwgd2hpY2ggaXNcbiAgICAgZWl0aGVyIFtwb3NfZnJvbV9sZWZ0XSBvciBbcG9zX2Zyb21fcmlnaHRdLiAqKVxuXG4gIGxldCBwb3NfZnJvbV9sZWZ0IChfIDogdCkgKGkgOiBpbnQpID0gaVxuICBsZXQgcG9zX2Zyb21fcmlnaHQgdCBpID0gbGVuZ3RoIHQgLSBpIC0gMVxuXG4gIGxldCByZWMgY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGEgYiB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhciA9XG4gICAgaWYgbGVuX3NvX2ZhciA+PSBtYXhfbGVuXG4gICAgdGhlbiBtYXhfbGVuXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsXG4gICAgICAgICAgICAgICh1bnNhZmVfZ2V0IGEgKGdldF9wb3MgYSBsZW5fc29fZmFyKSlcbiAgICAgICAgICAgICAgKHVuc2FmZV9nZXQgYiAoZ2V0X3BvcyBiIGxlbl9zb19mYXIpKVxuICAgIHRoZW4gY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGEgYiB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhcjoobGVuX3NvX2ZhciArIDEpXG4gICAgZWxzZSBsZW5fc29fZmFyXG4gIDs7XG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zID1cbiAgICBsZXQgbWF4X2xlbiA9IG1pbiAobGVuZ3RoIGEpIChsZW5ndGggYikgaW5cbiAgICBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyOjBcbiAgOztcblxuICBsZXQgcmVjIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIGZpcnN0IGxpc3QgfmdldF9wb3Mgfm1heF9sZW4gPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbWF4X2xlblxuICAgIHwgc2Vjb25kIDo6IHJlc3QgLT5cbiAgICAgIGxldCBtYXhfbGVuID1cbiAgICAgICAgKCogV2UgY2FsbCBbY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wXSByYXRoZXIgdGhhbiBbY29tbW9uX2dlbmVyaWMyX2xlbmd0aF0gc29cbiAgICAgICAgICAgdGhhdCBbbWF4X2xlbl0gbGltaXRzIG91ciB0cmF2ZXJzYWwgb2YgW2ZpcnN0XSBhbmQgW3NlY29uZF0uICopXG4gICAgICAgIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBmaXJzdCBzZWNvbmQgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXI6MFxuICAgICAgaW5cbiAgICAgIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIHNlY29uZCByZXN0IH5nZXRfcG9zIH5tYXhfbGVuXG4gIDs7XG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljX2xlbmd0aCBsaXN0IH5nZXRfcG9zID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IDBcbiAgICB8IGZpcnN0IDo6IHJlc3QgLT5cbiAgICAgICgqIFByZWNvbXB1dGluZyBbbWF4X2xlbl0gYmFzZWQgb24gW3Nob3J0ZXN0IGxpc3RdIHNhdmVzIHVzIHdvcmsgaW4gbG9uZ2VyIHN0cmluZ3MsXG4gICAgICAgICBhdCB0aGUgY29zdCBvZiBhbiBleHRyYSBwYXNzIG92ZXIgdGhlIHNwaW5lIG9mIFtsaXN0XS5cblxuICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSdyZSBsb29raW5nIGZvciB0aGUgbG9uZ2VzdCBwcmVmaXggb2YgdGhlIHN0cmluZ3M6XG5cbiAgICAgICAgIHt2XG4gICAgICAgICAgICBsZXQgbG9uZ19hID0gTGlzdC5pbml0IDEwMDAgfmY6KEZuLmNvbnN0ICdhJylcbiAgICAgICAgICAgIFsgbG9uZ19hOyBsb25nX2E7ICdhYScgXVxuICAgICAgICAgdn1cblxuICAgICAgICAgdGhlIGFwcHJvYWNoIGJlbG93IHdpbGwganVzdCBjaGVjayB0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMgb2YgYWxsIHRoZSBzdHJpbmdzLlxuICAgICAgKilcbiAgICAgIGxldCBtYXhfbGVuID0gbGVuZ3RoIChzaG9ydGVzdCBsaXN0KSBpblxuICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgcmVzdCB+Z2V0X3BvcyB+bWF4X2xlblxuICA7O1xuXG4gICgqIE91ciBnZW5lcmljIGFjY2Vzc29ycyB0aGF0IHByb2R1Y2UgYSBzdHJpbmcgYWJzdHJhY3Qgb3ZlciBbdGFrZV0sIHdoaWNoIGlzIGVpdGhlclxuICAgICBbcHJlZml4XSBvciBbc3VmZml4XS4gKilcblxuICBsZXQgY29tbW9uX2dlbmVyaWMyIGEgYiB+Z2V0X3BvcyB+dGFrZSA9XG4gICAgbGV0IGxlbiA9IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zIGluXG4gICAgKCogVXNlIHRoZSBzaG9ydGVyIG9mIHRoZSB0d28gc3RyaW5ncywgc28gdGhhdCBpZiB0aGUgc2hvcnRlciBvbmUgaXMgdGhlIHNoYXJlZFxuICAgICAgIHByZWZpeCwgW3Rha2VdIHdvbid0IGFsbG9jYXRlIGFub3RoZXIgc3RyaW5nLiAqKVxuICAgIHRha2UgKHNob3J0ZXIgYSBiKSBsZW5cbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWMgbGlzdCB+Z2V0X3BvcyB+dGFrZSA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBcIlwiXG4gICAgfCBmaXJzdCA6OiByZXN0IC0+XG4gICAgICAoKiBBcyB3aXRoIFtjb21tb25fZ2VuZXJpY19sZW5ndGhdLCB3ZSBiYXNlIFttYXhfbGVuXSBvbiBbc2hvcnRlc3QgbGlzdF0uIFdlIGFsc29cbiAgICAgICAgIHVzZSB0aGlzIHJlc3VsdCBmb3IgW3Rha2VdLCBiZWxvdywgdG8gcG90ZW50aWFsbHkgYXZvaWQgYWxsb2NhdGluZyBhIHN0cmluZy4gKilcbiAgICAgIGxldCBzID0gc2hvcnRlc3QgbGlzdCBpblxuICAgICAgbGV0IG1heF9sZW4gPSBsZW5ndGggcyBpblxuICAgICAgaWYgbWF4X2xlbiA9IDBcbiAgICAgIHRoZW4gXCJcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsZW4gPVxuICAgICAgICAgICgqIFdlIGNhbGwgZGlyZWN0bHkgaW50byBbY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3BdIHJhdGhlciB0aGFuXG4gICAgICAgICAgICAgW2NvbW1vbl9nZW5lcmljX2xlbmd0aF0gdG8gYXZvaWQgcmVjb21wdXRpbmcgW3Nob3J0ZXN0IGxpc3RdLiAqKVxuICAgICAgICAgIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIGZpcnN0IHJlc3QgfmdldF9wb3Mgfm1heF9sZW5cbiAgICAgICAgaW5cbiAgICAgICAgdGFrZSBzIGxlbilcbiAgOztcbmVuZFxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIEZvcl9jb21tb25fcHJlZml4X2FuZF9zdWZmaXhcblxuICBsZXQgY29tbW9uX3ByZWZpeCBsaXN0ID0gY29tbW9uX2dlbmVyaWMgbGlzdCB+dGFrZTpwcmVmaXggfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeCBsaXN0ID0gY29tbW9uX2dlbmVyaWMgbGlzdCB+dGFrZTpzdWZmaXggfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXgyIGEgYiA9IGNvbW1vbl9nZW5lcmljMiBhIGIgfnRha2U6cHJlZml4IH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXgyIGEgYiA9IGNvbW1vbl9nZW5lcmljMiBhIGIgfnRha2U6c3VmZml4IH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG4gIGxldCBjb21tb25fcHJlZml4X2xlbmd0aCBsaXN0ID0gY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeF9sZW5ndGggbGlzdCA9IGNvbW1vbl9nZW5lcmljX2xlbmd0aCBsaXN0IH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG4gIGxldCBjb21tb25fcHJlZml4Ml9sZW5ndGggYSBiID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIGEgYiA9IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG5lbmRcblxuKCogVGhlcmUgdXNlZCB0byBiZSBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiB0aGF0IHdhcyBmYXN0ZXIgZm9yIHZlcnkgc2hvcnQgc3RyaW5nc1xuICAgKHBlYWtpbmcgYXQgNDAlIGZhc3RlciBmb3IgNC02IGNoYXIgbG9uZyBzdHJpbmdzKS5cbiAgIFRoaXMgbmV3IGZ1bmN0aW9uIGlzIGFyb3VuZCAyMCUgZmFzdGVyIHRoYW4gdGhlIGRlZmF1bHQgaGFzaCBmdW5jdGlvbiwgYnV0IHNsb3dlclxuICAgdGhhbiB0aGUgcHJldmlvdXMgY3VzdG9tIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCB0aGUgbmV3IE9DYW1sIGZ1bmN0aW9uIGlzIHdlbGxcbiAgIGJlaGF2ZWQsIGFuZCB0aGlzIGltcGxlbWVudGF0aW9uIGlzIGxlc3MgbGlrZWx5IHRvIGRpdmVyZ2UgZnJvbSB0aGUgZGVmYXVsdCBPQ2FtbFxuICAgaW1wbGVtZW50YXRpb24gZG9lcywgd2hpY2ggaXMgYSBkZXNpcmFibGUgcHJvcGVydHkuIChUaGUgb25seSB3YXkgdG8gYXZvaWQgdGhlXG4gICBkaXZlcmdlbmNlIGlzIHRvIGV4cG9zZSB0aGUgbWFjcm8gcmVkZWZpbmVkIGluIGhhc2hfc3R1YnMuYyBpbiB0aGUgaGFzaC5oIGhlYWRlciBvZlxuICAgdGhlIE9DYW1sIGNvbXBpbGVyLikgKilcbm1vZHVsZSBIYXNoID0gc3RydWN0XG4gIGV4dGVybmFsIGhhc2ggOiBzdHJpbmcgLT4gaW50ID0gXCJCYXNlX2hhc2hfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmVuZFxuXG4oKiBbaW5jbHVkZSBIYXNoXSB0byBtYWtlIHRoZSBbZXh0ZXJuYWxdIHZlcnNpb24gb3ZlcnJpZGUgdGhlIFtoYXNoXSBmcm9tXG4gICBbSGFzaGFibGUuTWFrZV9iaW5hYmxlXSwgc28gdGhhdCB3ZSBnZXQgYSBsaXR0bGUgYml0IG9mIGEgc3BlZWR1cCBieSBleHBvc2luZyBpdCBhc1xuICAgZXh0ZXJuYWwgaW4gdGhlIG1saS4gKilcbmxldCBfID0gaGFzaFxuXG5pbmNsdWRlIEhhc2hcblxuKCogZm9yIGludGVyYWN0aXZlIHRvcC1sZXZlbHMgLS0gbW9kdWxlcyBkZXJpdmluZyBmcm9tIFN0cmluZyBzaG91bGQgaGF2ZSBTdHJpbmcncyBwcmV0dHlcbiAgIHByaW50ZXIuICopXG5sZXQgcHAgcHBmIHN0cmluZyA9IFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBwcGYgXCIlU1wiIHN0cmluZ1xubGV0IG9mX2NoYXIgYyA9IG1ha2UgMSBjXG5cbmxldCBvZl9jaGFyX2xpc3QgbCA9XG4gIGxldCB0ID0gQnl0ZXMuY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICBMaXN0Lml0ZXJpIGwgfmY6KGZ1biBpIGMgLT4gQnl0ZXMuc2V0IHQgaSBjKTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0XG47O1xuXG5sZXQgb2ZfbGlzdCA9IG9mX2NoYXJfbGlzdFxubGV0IG9mX2FycmF5IGEgPSBpbml0IChBcnJheS5sZW5ndGggYSkgfmY6KEFycmF5LmdldCBhKVxubGV0IGFwcGVuZCA9ICggXiApXG5cbmxldCBwYWRfcmlnaHQgPyhjaGFyID0gJyAnKSBzIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzIGluXG4gIGlmIHNyY19sZW4gPj0gbGVuXG4gIHRoZW4gc1xuICBlbHNlIChcbiAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+ZHN0OnJlcyB+c3JjX3BvczowIH5kc3RfcG9zOjAgfmxlbjpzcmNfbGVuO1xuICAgIEJ5dGVzLmZpbGwgfnBvczpzcmNfbGVuIH5sZW46KGxlbiAtIHNyY19sZW4pIHJlcyBjaGFyO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzKVxuOztcblxubGV0IHBhZF9sZWZ0ID8oY2hhciA9ICcgJykgcyB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBsZW5ndGggcyBpblxuICBpZiBzcmNfbGVuID49IGxlblxuICB0aGVuIHNcbiAgZWxzZSAoXG4gICAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnMgfmRzdDpyZXMgfnNyY19wb3M6MCB+ZHN0X3BvczoobGVuIC0gc3JjX2xlbikgfmxlbjpzcmNfbGVuO1xuICAgIEJ5dGVzLmZpbGwgfnBvczowIH5sZW46KGxlbiAtIHNyY19sZW4pIHJlcyBjaGFyO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzKVxuOztcblxuKCogQ2FsbGVkIHVwb24gZmlyc3QgZGlmZmVyZW5jZSBnZW5lcmF0ZWQgYnkgZmlsdGVyaW5nLiBBbGxvY2F0ZXMgW2J1ZmZlcl9sZW5dIGJ5dGVzXG4gICBmb3IgbmV3IHJlc3VsdCwgYW5kIGNvcGllcyBbcHJlZml4X2xlbl0gdW5jaGFuZ2VkIGNoYXJhY3RlcnMgZnJvbSBbc3JjXS5cbiAgIEFsd2F5cyByZXR1cm5zIGEgbG9jYWwgYnVmZmVyLiAqKVxubGV0IGxvY2FsX2NvcHlfcHJlZml4IChzcmMgW0Bsb2NhbF0pIH5wcmVmaXhfbGVuIH5idWZmZXJfbGVuID1cbiAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZV9sb2NhbCBidWZmZXJfbGVuIGluXG4gIEJ5dGVzLlByaW1pdGl2ZXMudW5zYWZlX2JsaXRfc3RyaW5nIH5zcmMgfmRzdCB+c3JjX3BvczowIH5kc3RfcG9zOjAgfmxlbjpwcmVmaXhfbGVuO1xuICAgZHN0XG47O1xuXG4oKiBDb3BpZXMgYSBwZXJoYXBzLWxvY2FsIGJ1ZmZlciBpbnRvIGEgZGVmaW5pdGVseS1nbG9iYWwgc3RyaW5nLiAqKVxubGV0IGxvY2FsX2NvcHlfdG9fc3RyaW5nIChidWYgW0Bsb2NhbF0pIH5wb3MgPVxuICBsZXQgc3RyID0gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWYgaW5cbiAgdW5zYWZlX3N1YiBzdHIgfnBvczowIH5sZW46cG9zIFtAbm9udGFpbF1cbjs7XG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gc3RydWN0XG4gICAgKCogZmlsdGVyX21hcCBoZWxwZXJzICopXG5cbiAgICAoKiBGaWx0ZXJzIGZyb20gc3RyaW5nIFtzcmNdIGludG8gYW4gYWxsb2NhdGVkIGJ1ZmZlciBbZHN0XTtcbiAgICAgICBjb3BpZXMgdGhlIGFsbG9jYXRlZCBidWZmZXIgdG8gYSBoZWFwLWFsbG9jYXRlZCByZXN1bHQgc3RyaW5nLlxuXG4gICAgICAgUHJlLWNvbmRpdGlvbnM6XG4gICAgICAgW3NyY19sZW4gPSBsZW5ndGggc3JjXVxuICAgICAgIFtzcmMgIT0gZHN0XVxuICAgICAgIFswIDw9IHNyY19wb3MgPCBzcmNfbGVuXVxuICAgICAgIFswIDw9IGRzdF9wb3MgPCBsZW5ndGggZHN0XVxuICAgICopXG4gICAgbGV0IGZpbHRlcl9tYXBpX2ludG8gc3JjIChkc3QgW0Bsb2NhbF0pIH5mIH5zcmNfcG9zIH5kc3RfcG9zIH5zcmNfbGVuID1cbiAgICAgIGxldCBkc3RfcG9zID0gIChyZWYgZHN0X3BvcykgaW5cbiAgICAgIGZvciBzcmNfcG9zID0gc3JjX3BvcyB0byBzcmNfbGVuIC0gMSBkb1xuICAgICAgICBtYXRjaCBmIHNyY19wb3MgKHVuc2FmZV9nZXQgc3JjIHNyY19wb3MpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBkc3QgIWRzdF9wb3MgYztcbiAgICAgICAgICBpbmNyIGRzdF9wb3NcbiAgICAgIGRvbmU7XG4gICAgICBsb2NhbF9jb3B5X3RvX3N0cmluZyBkc3QgfnBvczohZHN0X3Bvc1xuICAgIDs7XG5cbiAgICAoKiBGaWx0ZXJzIFt0XS4gSWYgdGhlIHJlc3VsdCB0dXJucyBvdXQgdG8gYmUgaWRlbnRpY2FsIHRvIHRoZSBpbnB1dCwgcmV0dXJucyBbdF1cbiAgICAgICBkaXJlY3RseSB3aXRob3V0IG5lZWRpbmcgdG8gYWxsb2NhdGUgYSBidWZmZXIgYW5kIHRyYXZlcnNlIHRoZSBzdHJpbmcgdHdpY2UuXG5cbiAgICAgICBQcmUtY29uZGl0aW9uOiBbbGVuID09IGxlbmd0aCB0XVxuICAgICAgIFByZS1jb25kaXRpb246IFswIDw9IHBvcyA8PSBsZW5dICopXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwaV9tYXliZV9pZCB0IH5mIH5wb3MgfmxlbiA9XG4gICAgICBpZiBwb3MgPSBsZW5cbiAgICAgIHRoZW4gdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjMSA9IHVuc2FmZV9nZXQgdCBwb3MgaW5cbiAgICAgICAgbGV0IG5leHQgPSBJbnQuc3VjYyBwb3MgaW5cbiAgICAgICAgbWF0Y2ggZiBwb3MgYzEgd2l0aFxuICAgICAgICB8IFNvbWUgYzIgd2hlbiBDaGFyLmVxdWFsIGMxIGMyIC0+XG4gICAgICAgICAgKCogaWYgbm90aGluZyBoYXMgY2hhbmdlZCwgY29udGludWUgKilcbiAgICAgICAgICBmaWx0ZXJfbWFwaV9tYXliZV9pZCB0IH5mIH5wb3M6bmV4dCB+bGVuXG4gICAgICAgIHwgb3B0aW9uIC0+XG4gICAgICAgICAgKCogSWYgYSBjaGFyYWN0ZXIgaGFzIGJlZW4gY2hhbmdlZCBvciBkcm9wcGVkLCBiZWdpbiBhbiBvdXRwdXQgYnVmZmVyIHVwIHRvXG4gICAgICAgICAgICAgW3Bvc10sIGFuZCB3cml0ZSB0aGUgbmV3IGNoYXJhY3RlciBpbnRvIGl0LiAqKVxuICAgICAgICAgIGxldCBjb3B5ID0gbG9jYWxfY29weV9wcmVmaXggdCB+cHJlZml4X2xlbjpwb3MgfmJ1ZmZlcl9sZW46bGVuIGluXG4gICAgICAgICAgbGV0IGRzdF9wb3MgPVxuICAgICAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBwb3NcbiAgICAgICAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgY29weSBwb3MgYztcbiAgICAgICAgICAgICAgbmV4dFxuICAgICAgICAgIGluXG4gICAgICAgICAgZmlsdGVyX21hcGlfaW50byB0IGNvcHkgfmYgfnNyY19wb3M6bmV4dCB+ZHN0X3BvcyB+c3JjX2xlbjpsZW4gW0Bub250YWlsXSlcbiAgICA7O1xuICBlbmRcblxuICAoKiBmaWx0ZXJfbWFwIGZ1bmN0aW9ucyAqKVxuXG4gIGxldCBmaWx0ZXJfbWFwaSB0IH5mID0gZmlsdGVyX21hcGlfbWF5YmVfaWQgdCB+ZiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gXyBjIC0+IGYgYykgW0Bub250YWlsXVxuZW5kXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gc3RydWN0XG4gICAgKCogcGFydGl0aW9uIGhlbHBlcnMgKilcblxuICAgIGxldCBwYXJ0aXRpb25fbWFwX2ludG8gc3JjIH5mc3RzIH5zbmRzIH5mIH5sZW4gfnNyY19wb3MgfmZzdF9wb3MgfnNuZF9wb3MgPVxuICAgICAgbGV0IGZzdF9wb3MgPSAgKHJlZiBmc3RfcG9zKSBpblxuICAgICAgbGV0IHNuZF9wb3MgPSAgKHJlZiBzbmRfcG9zKSBpblxuICAgICAgZm9yIHNyY19wb3MgPSBzcmNfcG9zIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggIChmICh1bnNhZmVfZ2V0IHNyYyBzcmNfcG9zKSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IEZpcnN0IGMgLT5cbiAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGZzdHMgIWZzdF9wb3MgYztcbiAgICAgICAgICBpbmNyIGZzdF9wb3NcbiAgICAgICAgfCBTZWNvbmQgYyAtPlxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgc25kcyAhc25kX3BvcyBjO1xuICAgICAgICAgIGluY3Igc25kX3Bvc1xuICAgICAgZG9uZTtcbiAgICAgIGxvY2FsX2NvcHlfdG9fc3RyaW5nIGZzdHMgfnBvczohZnN0X3BvcywgbG9jYWxfY29weV90b19zdHJpbmcgc25kcyB+cG9zOiFzbmRfcG9zXG4gICAgOztcblxuICAgIGxldCBwYXJ0aXRpb25fbWFwX2RpZmZlcmVuY2Ugc3JjIH5mIH5sZW4gfnBvczpzcmNfcG9zIH5mc3RfcG9zIH5zbmRfcG9zIGVpdGhlciA9XG4gICAgICBsZXQgZnN0cyA9IGxvY2FsX2NvcHlfcHJlZml4IHNyYyB+cHJlZml4X2xlbjpmc3RfcG9zIH5idWZmZXJfbGVuOmxlbiBpblxuICAgICAgbGV0IHNuZHMgPSBsb2NhbF9jb3B5X3ByZWZpeCBzcmMgfnByZWZpeF9sZW46c25kX3BvcyB+YnVmZmVyX2xlbjpsZW4gaW5cbiAgICAgIGxldCBmc3RfcG9zLCBzbmRfcG9zID1cbiAgICAgICAgbWF0Y2ggKGVpdGhlciA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IEZpcnN0IGMgLT5cbiAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGZzdHMgZnN0X3BvcyBjO1xuICAgICAgICAgICAoZnN0X3BvcyArIDEsIHNuZF9wb3MpXG4gICAgICAgIHwgU2Vjb25kIGMgLT5cbiAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHNuZHMgc25kX3BvcyBjO1xuICAgICAgICAgICAoZnN0X3Bvcywgc25kX3BvcyArIDEpXG4gICAgICBpblxuICAgICAgcGFydGl0aW9uX21hcF9pbnRvXG4gICAgICAgIHNyY1xuICAgICAgICB+ZnN0c1xuICAgICAgICB+c25kc1xuICAgICAgICB+ZlxuICAgICAgICB+bGVuXG4gICAgICAgIH5zcmNfcG9zOihzcmNfcG9zICsgMSlcbiAgICAgICAgfmZzdF9wb3NcbiAgICAgICAgfnNuZF9wb3MgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbl9tYXBfZmlyc3RfbWF5YmVfaWQgc3JjIH5mIH5wb3MgfmxlbiA9XG4gICAgICBpZiBwb3MgPSBsZW5cbiAgICAgIHRoZW4gc3JjLCBcIlwiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGMxID0gdW5zYWZlX2dldCBzcmMgcG9zIGluXG4gICAgICAgIG1hdGNoICAoZiBjMSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IEZpcnN0IGMyIHdoZW4gQ2hhci5lcXVhbCBjMSBjMiAtPlxuICAgICAgICAgIHBhcnRpdGlvbl9tYXBfZmlyc3RfbWF5YmVfaWQgc3JjIH5mIH5sZW4gfnBvczoocG9zICsgMSlcbiAgICAgICAgfCBlaXRoZXIgLT5cbiAgICAgICAgICBwYXJ0aXRpb25fbWFwX2RpZmZlcmVuY2VcbiAgICAgICAgICAgIHNyY1xuICAgICAgICAgICAgfmZcbiAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgIH5mc3RfcG9zOnBvc1xuICAgICAgICAgICAgfnNuZF9wb3M6MFxuICAgICAgICAgICAgZWl0aGVyIFtAbm9udGFpbF0pXG4gICAgOztcblxuICAgIGxldCByZWMgcGFydGl0aW9uX21hcF9zZWNvbmRfbWF5YmVfaWQgc3JjIH5mIH5wb3MgfmxlbiA9XG4gICAgICBpZiBwb3MgPSBsZW5cbiAgICAgIHRoZW4gXCJcIiwgc3JjXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGMxID0gdW5zYWZlX2dldCBzcmMgcG9zIGluXG4gICAgICAgIG1hdGNoICAoZiBjMSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IFNlY29uZCBjMiB3aGVuIENoYXIuZXF1YWwgYzEgYzIgLT5cbiAgICAgICAgICBwYXJ0aXRpb25fbWFwX3NlY29uZF9tYXliZV9pZCBzcmMgfmYgfmxlbiB+cG9zOihwb3MgKyAxKVxuICAgICAgICB8IGVpdGhlciAtPlxuICAgICAgICAgIHBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZVxuICAgICAgICAgICAgc3JjXG4gICAgICAgICAgICB+ZlxuICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgfmZzdF9wb3M6MFxuICAgICAgICAgICAgfnNuZF9wb3M6cG9zXG4gICAgICAgICAgICBlaXRoZXIgW0Bub250YWlsXSlcbiAgICA7O1xuICBlbmRcblxuICAoKiBwYXJ0aXRpb24gZnVuY3Rpb25zICopXG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgc3JjIH5mID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHNyYyBpblxuICAgIGlmIGxlbiA9IDBcbiAgICB0aGVuIFwiXCIsIFwiXCJcbiAgICBlbHNlIChcbiAgICAgIGxldCBjMSA9IHVuc2FmZV9nZXQgc3JjIDAgaW5cbiAgICAgIG1hdGNoICAoZiBjMSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgfCBGaXJzdCBjMiB3aGVuIENoYXIuZXF1YWwgYzEgYzIgLT4gcGFydGl0aW9uX21hcF9maXJzdF9tYXliZV9pZCBzcmMgfmYgfmxlbiB+cG9zOjFcbiAgICAgIHwgU2Vjb25kIGMyIHdoZW4gQ2hhci5lcXVhbCBjMSBjMiAtPlxuICAgICAgICBwYXJ0aXRpb25fbWFwX3NlY29uZF9tYXliZV9pZCBzcmMgfmYgfmxlbiB+cG9zOjFcbiAgICAgIHwgZWl0aGVyIC0+XG4gICAgICAgIHBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZVxuICAgICAgICAgIHNyY1xuICAgICAgICAgIH5mXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5wb3M6MFxuICAgICAgICAgIH5mc3RfcG9zOjBcbiAgICAgICAgICB+c25kX3BvczowXG4gICAgICAgICAgZWl0aGVyIFtAbm9udGFpbF0pXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgICBwYXJ0aXRpb25fbWFwIHQgfmY6KGZ1biBjIC0+IGlmIGYgYyB0aGVuICAoRmlyc3QgYykgZWxzZSAgKFNlY29uZCBjKSkgW0Bub250YWlsXG4gICAgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFc2NhcGluZyA9IHN0cnVjdFxuICAoKiBJZiB0aGlzIGlzIGNoYW5nZWQsIG1ha2Ugc3VyZSB0byB1cGRhdGUgW2VzY2FwZV0sIHdoaWNoIGF0dGVtcHRzIHRvIGVuc3VyZSBhbGwgdGhlXG4gICAgIGludmFyaWFudHMgY2hlY2tlZCBoZXJlLiAgKilcbiAgbGV0IGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgZnVuYyA9XG4gICAgbGV0IGVzY2FwZXdvcnRoeV9tYXAgPVxuICAgICAgaWYgTGlzdC5Bc3NvYy5tZW0gZXNjYXBld29ydGh5X21hcCB+ZXF1YWw6Q2hhci5lcXVhbCBlc2NhcGVfY2hhclxuICAgICAgdGhlbiBlc2NhcGV3b3J0aHlfbWFwXG4gICAgICBlbHNlIChlc2NhcGVfY2hhciwgZXNjYXBlX2NoYXIpIDo6IGVzY2FwZXdvcnRoeV9tYXBcbiAgICBpblxuICAgIGxldCBhcnIgPSBBcnJheS5jcmVhdGUgfmxlbjoyNTYgKC0xKSBpblxuICAgIGxldCB2YWxzID0gQXJyYXkuY3JlYXRlIH5sZW46MjU2IGZhbHNlIGluXG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gT2sgYXJyXG4gICAgICB8IChjX2Zyb20sIGNfdG8pIDo6IGwgLT5cbiAgICAgICAgbGV0IGssIHYgPVxuICAgICAgICAgIG1hdGNoIGZ1bmMgd2l0aFxuICAgICAgICAgIHwgYEVzY2FwZSAtPiBDaGFyLnRvX2ludCBjX2Zyb20sIGNfdG9cbiAgICAgICAgICB8IGBVbmVzY2FwZSAtPiBDaGFyLnRvX2ludCBjX3RvLCBjX2Zyb21cbiAgICAgICAgaW5cbiAgICAgICAgaWYgYXJyLihrKSA8PiAtMSB8fCB2YWxzLihDaGFyLnRvX2ludCB2KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgICAgXCJlc2NhcGV3b3J0aHlfbWFwIG5vdCBvbmUtdG8tb25lXCJcbiAgICAgICAgICAgICAgIFsgXCJjX2Zyb21cIiwgc2V4cF9vZl9jaGFyIGNfZnJvbVxuICAgICAgICAgICAgICAgOyBcImNfdG9cIiwgc2V4cF9vZl9jaGFyIGNfdG9cbiAgICAgICAgICAgICAgIDsgKCBcImVzY2FwZXdvcnRoeV9tYXBcIlxuICAgICAgICAgICAgICAgICAsIHNleHBfb2ZfbGlzdCAoc2V4cF9vZl9wYWlyIHNleHBfb2ZfY2hhciBzZXhwX29mX2NoYXIpIGVzY2FwZXdvcnRoeV9tYXBcbiAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgXSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgYXJyLihrKSA8LSBDaGFyLnRvX2ludCB2O1xuICAgICAgICAgIHZhbHMuKENoYXIudG9faW50IHYpIDwtIHRydWU7XG4gICAgICAgICAgbG9vcCBsKVxuICAgIGluXG4gICAgbG9vcCBlc2NhcGV3b3J0aHlfbWFwXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBidWlsZF9hbmRfdmFsaWRhdGVfZXNjYXBld29ydGh5X21hcCBlc2NhcGV3b3J0aHlfbWFwIGVzY2FwZV9jaGFyIGBFc2NhcGUgd2l0aFxuICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICB8IE9rIGVzY2FwZXdvcnRoeSAtPlxuICAgICAgT2tcbiAgICAgICAgKGZ1biBzcmMgLT5cbiAgICAgICAgICAgKCogY2FsY3VsYXRlIGEgbGlzdCBvZiAoaW5kZXggb2YgY2hhciB0byBlc2NhcGUgKiBlc2NhcGVkIGNoYXIpIGZpcnN0LCB0aGUgb3JkZXJcbiAgICAgICAgICAgICAgaXMgZnJvbSB0YWlsIHRvIGhlYWQgKilcbiAgICAgICAgICAgbGV0IHRvX2VzY2FwZV9sZW4gPSByZWYgMCBpblxuICAgICAgICAgICBsZXQgdG9fZXNjYXBlID1cbiAgICAgICAgICAgICBmb2xkaSBzcmMgfmluaXQ6W10gfmY6KGZ1biBpIGFjYyBjIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBlc2NhcGV3b3J0aHkuKENoYXIudG9faW50IGMpIHdpdGhcbiAgICAgICAgICAgICAgIHwgLTEgLT4gYWNjXG4gICAgICAgICAgICAgICB8IG4gLT5cbiAgICAgICAgICAgICAgICAgKCogKGluZGV4IG9mIGNoYXIgdG8gZXNjYXBlICogZXNjYXBlZCBjaGFyKSAqKVxuICAgICAgICAgICAgICAgICBpbmNyIHRvX2VzY2FwZV9sZW47XG4gICAgICAgICAgICAgICAgIChpLCBDaGFyLnVuc2FmZV9vZl9pbnQgbikgOjogYWNjKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCB0b19lc2NhcGUgd2l0aFxuICAgICAgICAgICB8IFtdIC0+IHNyY1xuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAoKiBbdG9fZXNjYXBlXSBkaXZpZGUgW3NyY10gdG8gW0xpc3QubGVuZ3RoIHRvX2VzY2FwZSArIDFdIHBpZWNlcyBzZXBhcmF0ZWQgYnlcbiAgICAgICAgICAgICAgICB0aGUgY2hhcnMgdG8gZXNjYXBlLlxuXG4gICAgICAgICAgICAgICAgTGV0cyB0YWtlXG4gICAgICAgICAgICAgICAge1tcbiAgICAgICAgICAgICAgICAgIGVzY2FwZV9nZW5fZXhuXG4gICAgICAgICAgICAgICAgICAgIH5lc2NhcGV3b3J0aHlfbWFwOlsoJ2EnLCAnQScpOyAoJ2InLCAnQicpOyAoJ2MnLCAnQycpXVxuICAgICAgICAgICAgICAgICAgICB+ZXNjYXBlX2NoYXI6J18nXG4gICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSwgYW5kIGFzc3VtZSB0aGUgc3RyaW5nIHRvIGVzY2FwZSBpc1xuXG4gICAgICAgICAgICAgICAgXCIwMDBhMTExYjIyMmMzMzNcIlxuXG4gICAgICAgICAgICAgICAgdGhlbiBbdG9fZXNjYXBlXSBpcyBbKDExLCAnQycpOyAoNywgJ0InKTsgKDMsICdBJyldLlxuXG4gICAgICAgICAgICAgICAgVGhlbiB3ZSBjcmVhdGUgYSBbZHN0XSBvZiBsZW5ndGggW2xlbmd0aCBzcmMgKyAzXSB0byBzdG9yZSB0aGVcbiAgICAgICAgICAgICAgICByZXN1bHQsIGNvcHkgcGllY2UgXCIzMzNcIiB0byBbZHN0XSBkaXJlY3RseSwgdGhlbiBjb3B5ICdfJyBhbmQgJ0MnIHRvIFtkc3RdO1xuICAgICAgICAgICAgICAgIHRoZW4gbW92ZSBvbiB0byBuZXh0OyBhZnRlciAzIGl0ZXJhdGlvbnMsIGNvcHkgcGllY2UgXCIwMDBcIiBhbmQgd2UgYXJlIGRvbmUuXG5cbiAgICAgICAgICAgICAgICBGaW5hbGx5IHRoZSByZXN1bHQgd2lsbCBiZVxuXG4gICAgICAgICAgICAgICAgXCIwMDBfQTExMV9CMjIyX0MzMzNcIiAqKVxuICAgICAgICAgICAgIGxldCBzcmNfbGVuID0gbGVuZ3RoIHNyYyBpblxuICAgICAgICAgICAgIGxldCBkc3RfbGVuID0gc3JjX2xlbiArICF0b19lc2NhcGVfbGVuIGluXG4gICAgICAgICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSBkc3RfbGVuIGluXG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGxhc3RfaWR4IGxhc3RfZHN0X3BvcyA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIwMDBcIiBhdCBsYXN0ICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOjAgfmxlbjpsYXN0X2lkeFxuICAgICAgICAgICAgICAgfCAoaWR4LCBlc2NhcGVkX2NoYXIpIDo6IHRvX2VzY2FwZSAtPlxuICAgICAgICAgICAgICAgICAoKltpZHhdID0gdGhlIGNoYXIgdG8gZXNjYXBlKilcbiAgICAgICAgICAgICAgICAgKCogdGFrZSBmaXJzdCBpdGVyYXRpb24gZm9yIGV4YW1wbGUgKilcbiAgICAgICAgICAgICAgICAgKCogY2FsY3VsYXRlIGxlbmd0aCBvZiBcIjMzM1wiLCBtaW51cyAxIGJlY2F1c2Ugd2UgZG9uJ3QgY29weSAnYycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGxlbiA9IGxhc3RfaWR4IC0gaWR4IC0gMSBpblxuICAgICAgICAgICAgICAgICAoKiBzZXQgdGhlIGRzdF9wb3MgdG8gY29weSB0byAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGxhc3RfZHN0X3BvcyAtIGxlbiBpblxuICAgICAgICAgICAgICAgICAoKiBjb3B5IFwiMzMzXCIsIHNldCBbc3JjX3Bvc10gdG8gW2lkeCArIDFdIHRvIHNraXAgJ2MnICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6KGlkeCArIDEpIH5kc3QgfmRzdF9wb3MgfmxlbjtcbiAgICAgICAgICAgICAgICAgKCogYmFja29mZiBbZHN0X3Bvc10gYnkgMiB0byBjb3B5ICdfJyBhbmQgJ0MnICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gZHN0X3BvcyAtIDIgaW5cbiAgICAgICAgICAgICAgICAgQnl0ZXMuc2V0IGRzdCBkc3RfcG9zIGVzY2FwZV9jaGFyO1xuICAgICAgICAgICAgICAgICBCeXRlcy5zZXQgZHN0IChkc3RfcG9zICsgMSkgZXNjYXBlZF9jaGFyO1xuICAgICAgICAgICAgICAgICBsb29wIGlkeCBkc3RfcG9zIHRvX2VzY2FwZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKCogc2V0IFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdIHRvIGxlbmd0aCBvZiBbZHN0XSBhbmQgW3NyY10gZmlyc3QgKilcbiAgICAgICAgICAgICBsb29wIHNyY19sZW4gZHN0X2xlbiB0b19lc2NhcGU7XG4gICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgT3JfZXJyb3Iub2tfZXhuIChlc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhcikgfD4gc3RhZ2VcbiAgOztcblxuICBsZXQgZXNjYXBlIH5lc2NhcGV3b3J0aHkgfmVzY2FwZV9jaGFyID1cbiAgICAoKiBGb3IgW2VzY2FwZV9nZW5fZXhuXSwgd2UgZG9uJ3Qga25vdyBob3cgdG8gZml4IGludmFsaWQgZXNjYXBld29ydGh5X21hcCBzbyB3ZSBoYXZlXG4gICAgICAgdG8gcmFpc2UgZXhjZXB0aW9uOyBidXQgaW4gdGhpcyBjYXNlLCB3ZSBrbm93IGhvdyB0byBmaXggZHVwbGljYXRlZCBlbGVtZW50cyBpblxuICAgICAgIGVzY2FwZXdvcnRoeSBsaXN0LCBzbyB3ZSBqdXN0IGZpeCBpdCBpbnN0ZWFkIG9mIHJhaXNpbmcgZXhjZXB0aW9uIHRvIG1ha2UgdGhpc1xuICAgICAgIGZ1bmN0aW9uIGVhc2llciB0byB1c2UuICAqKVxuICAgIGxldCBlc2NhcGV3b3J0aHlfbWFwID1cbiAgICAgIGVzY2FwZXdvcnRoeVxuICAgICAgfD4gTGlzdC5kZWR1cF9hbmRfc29ydCB+Y29tcGFyZTpDaGFyLmNvbXBhcmVcbiAgICAgIHw+IExpc3QubWFwIH5mOihmdW4gYyAtPiBjLCBjKVxuICAgIGluXG4gICAgZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyXG4gIDs7XG5cbiAgKCogSW4gYW4gZXNjYXBlZCBzdHJpbmcsIGFueSBjaGFyIGlzIGVpdGhlciBgRXNjYXBpbmcsIGBFc2NhcGVkIG9yIGBMaXRlcmFsLiBGb3JcbiAgICAgZXhhbXBsZSwgdGhlIGVzY2FwZSBzdGF0dXNlcyBvZiBjaGFycyBpbiBzdHJpbmcgXCJhX2FfX1wiIHdpdGggZXNjYXBlX2NoYXIgPSAnXycgYXJlXG5cbiAgICAgYSA6IGBMaXRlcmFsXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgYSA6IGBFc2NhcGVkXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgXyA6IGBFc2NhcGVkXG5cbiAgICAgW3VwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBwcmV2aW91c19zdGF0dXNdIGdldHMgZXNjYXBlIHN0YXR1cyBvZlxuICAgICBzdHIuW2ldIGJhc2luZyBvbiBlc2NhcGUgc3RhdHVzIG9mIHN0ci5baSAtIDFdICopXG4gIGxldCB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgPSBmdW5jdGlvblxuICAgIHwgYEVzY2FwaW5nIC0+IGBFc2NhcGVkXG4gICAgfCBgTGl0ZXJhbCB8IGBFc2NhcGVkIC0+XG4gICAgICBpZiBDaGFyLmVxdWFsIHN0ci5baV0gZXNjYXBlX2NoYXIgdGhlbiBgRXNjYXBpbmcgZWxzZSBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCB1bmVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBidWlsZF9hbmRfdmFsaWRhdGVfZXNjYXBld29ydGh5X21hcCBlc2NhcGV3b3J0aHlfbWFwIGVzY2FwZV9jaGFyIGBVbmVzY2FwZSB3aXRoXG4gICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgIHwgT2sgZXNjYXBld29ydGh5IC0+XG4gICAgICBPa1xuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgICAoKiBDb250aW51ZSB0aGUgZXhhbXBsZSBpbiBbZXNjYXBlX2dlbl9leG5dLCBub3cgd2UgdW5lc2NhcGVcblxuICAgICAgICAgICAgICBcIjAwMF9BMTExX0IyMjJfQzMzM1wiXG5cbiAgICAgICAgICAgICAgYmFjayB0b1xuXG4gICAgICAgICAgICAgIFwiMDAwYTExMWIyMjJjMzMzXCJcblxuICAgICAgICAgICAgICBUaGVuIFt0b191bmVzY2FwZV0gaXMgWzE0OyA5OyA0XSwgd2hpY2ggaXMgaW5kZXhlcyBvZiAnXydzLlxuXG4gICAgICAgICAgICAgIFRoZW4gd2UgY3JlYXRlIGEgc3RyaW5nIFtkc3RdIHRvIHN0b3JlIHRoZSByZXN1bHQsIGNvcHkgXCIzMzNcIiB0byBpdCwgdGhlbiBjb3B5XG4gICAgICAgICAgICAgICdjJywgdGhlbiBtb3ZlIG9uIHRvIG5leHQgaXRlcmF0aW9uLiBBZnRlciAzIGl0ZXJhdGlvbnMgY29weSBcIjAwMFwiIGFuZCB3ZSBhcmVcbiAgICAgICAgICAgICAgZG9uZS4gICopXG4gICAgICAgICAgICgqIGluZGV4ZXMgb2YgZXNjYXBlIGNoYXJzICopXG4gICAgICAgICAgIGxldCB0b191bmVzY2FwZSA9XG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGkgc3RhdHVzIGFjYyA9XG4gICAgICAgICAgICAgICBpZiBpID49IGxlbmd0aCBzcmNcbiAgICAgICAgICAgICAgIHRoZW4gYWNjXG4gICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHNyYyB+ZXNjYXBlX2NoYXIgaSBzdGF0dXMgaW5cbiAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgIChpICsgMSlcbiAgICAgICAgICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBgRXNjYXBpbmcgLT4gaSA6OiBhY2NcbiAgICAgICAgICAgICAgICAgICAgfCBgRXNjYXBlZCB8IGBMaXRlcmFsIC0+IGFjYykpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsb29wIDAgYExpdGVyYWwgW11cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbWF0Y2ggdG9fdW5lc2NhcGUgd2l0aFxuICAgICAgICAgICB8IFtdIC0+IHNyY1xuICAgICAgICAgICB8IGlkeCA6OiB0b191bmVzY2FwZScgLT5cbiAgICAgICAgICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIChsZW5ndGggc3JjIC0gTGlzdC5sZW5ndGggdG9fdW5lc2NhcGUpIGluXG4gICAgICAgICAgICAgbGV0IHJlYyBsb29wIGxhc3RfaWR4IGxhc3RfZHN0X3BvcyA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIwMDBcIiBhdCBsYXN0ICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOjAgfmxlbjpsYXN0X2lkeFxuICAgICAgICAgICAgICAgfCBpZHggOjogdG9fdW5lc2NhcGUgLT5cbiAgICAgICAgICAgICAgICAgKCogW2lkeF0gPSBpbmRleCBvZiBlc2NhcGluZyBjaGFyICopXG4gICAgICAgICAgICAgICAgICgqIHRha2UgMXN0IGl0ZXJhdGlvbiBhcyBleGFtcGxlLCBjYWxjdWxhdGUgdGhlIGxlbmd0aCBvZiBcIjMzM1wiLCBtaW51cyAyIHRvXG4gICAgICAgICAgICAgICAgICAgIHNraXAgJ19DJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgbGVuID0gbGFzdF9pZHggLSBpZHggLSAyIGluXG4gICAgICAgICAgICAgICAgICgqIHBvaW50IFtkc3RfcG9zXSB0byB0aGUgcG9zaXRpb24gdG8gY29weSBcIjMzM1wiIHRvICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gbGFzdF9kc3RfcG9zIC0gbGVuIGluXG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIzMzNcIiAqKVxuICAgICAgICAgICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOihpZHggKyAyKSB+ZHN0IH5kc3RfcG9zIH5sZW47XG4gICAgICAgICAgICAgICAgICgqIGJhY2tvZmYgW2RzdF9wb3NdIGJ5IDEgdG8gY29weSAnYycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBkc3RfcG9zIC0gMSBpblxuICAgICAgICAgICAgICAgICBCeXRlcy5zZXRcbiAgICAgICAgICAgICAgICAgICBkc3RcbiAgICAgICAgICAgICAgICAgICBkc3RfcG9zXG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIGVzY2FwZXdvcnRoeS4oQ2hhci50b19pbnQgc3JjLltpZHggKyAxXSkgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IC0xIC0+IHNyYy5baWR4ICsgMV1cbiAgICAgICAgICAgICAgICAgICAgfCBuIC0+IENoYXIudW5zYWZlX29mX2ludCBuKTtcbiAgICAgICAgICAgICAgICAgKCogdXBkYXRlIFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdICopXG4gICAgICAgICAgICAgICAgIGxvb3AgaWR4IGRzdF9wb3MgdG9fdW5lc2NhcGVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGlmIGlkeCA8IGxlbmd0aCBzcmMgLSAxXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgKCogc2V0IFtsYXN0X2RzdF9wb3NdIGFuZCBbbGFzdF9pZHhdIHRvIGxlbmd0aCBvZiBbZHN0XSBhbmQgW3NyY10gKilcbiAgICAgICAgICAgICAgIGxvb3AgKGxlbmd0aCBzcmMpIChCeXRlcy5sZW5ndGggZHN0KSB0b191bmVzY2FwZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICgqIGZvciBlc2NhcGVkIHN0cmluZyBlbmRpbmcgd2l0aCBhbiBlc2NhcGluZyBjaGFyIGxpa2UgXCIwMDBfXCIsIGp1c3QgaWdub3JlXG4gICAgICAgICAgICAgICAgICB0aGUgbGFzdCBlc2NhcGluZyBjaGFyICopXG4gICAgICAgICAgICAgICBsb29wIChsZW5ndGggc3JjIC0gMSkgKEJ5dGVzLmxlbmd0aCBkc3QpIHRvX3VuZXNjYXBlJztcbiAgICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbiAgOztcblxuICBsZXQgdW5lc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIE9yX2Vycm9yLm9rX2V4biAodW5lc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhcikgfD4gc3RhZ2VcbiAgOztcblxuICBsZXQgdW5lc2NhcGUgfmVzY2FwZV9jaGFyID0gdW5lc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcDpbXSB+ZXNjYXBlX2NoYXJcblxuICBsZXQgcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgbGV0IHJlYyBsb29wIHAgY250ID1cbiAgICAgIGlmIHAgPCAwIHx8IENoYXIuKCA8PiApIHN0ci5bcF0gZXNjYXBlX2NoYXIgdGhlbiBjbnQgZWxzZSBsb29wIChwIC0gMSkgKGNudCArIDEpXG4gICAgaW5cbiAgICBsb29wIChwb3MgLSAxKSAwXG4gIDs7XG5cbiAgKCogSW4gYW4gZXNjYXBlZCBzdHJpbmcsIGFueSBjaGFyIGlzIGVpdGhlciBgRXNjYXBpbmcsIGBFc2NhcGVkIG9yIGBMaXRlcmFsLiBGb3JcbiAgICAgZXhhbXBsZSwgdGhlIGVzY2FwZSBzdGF0dXNlcyBvZiBjaGFycyBpbiBzdHJpbmcgXCJhX2FfX1wiIHdpdGggZXNjYXBlX2NoYXIgPSAnXycgYXJlXG5cbiAgICAgYSA6IGBMaXRlcmFsXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgYSA6IGBFc2NhcGVkXG4gICAgIF8gOiBgRXNjYXBpbmdcbiAgICAgXyA6IGBFc2NhcGVkXG5cbiAgICAgW3VwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBwcmV2aW91c19zdGF0dXNdIGdldHMgZXNjYXBlIHN0YXR1cyBvZlxuICAgICBzdHIuW2ldIGJhc2luZyBvbiBlc2NhcGUgc3RhdHVzIG9mIHN0ci5baSAtIDFdICopXG4gIGxldCB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgPSBmdW5jdGlvblxuICAgIHwgYEVzY2FwaW5nIC0+IGBFc2NhcGVkXG4gICAgfCBgTGl0ZXJhbCB8IGBFc2NhcGVkIC0+XG4gICAgICBpZiBDaGFyLmVxdWFsIHN0ci5baV0gZXNjYXBlX2NoYXIgdGhlbiBgRXNjYXBpbmcgZWxzZSBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBsZXQgb2RkID0gcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyBtb2QgMiA9IDEgaW5cbiAgICBtYXRjaCBvZGQsIENoYXIuZXF1YWwgc3RyLltwb3NdIGVzY2FwZV9jaGFyIHdpdGhcbiAgICB8IHRydWUsICh0cnVlIHwgZmFsc2UpIC0+IGBFc2NhcGVkXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiBgRXNjYXBpbmdcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBgTGl0ZXJhbFxuICA7O1xuXG4gIGxldCBjaGVja19ib3VuZCBzdHIgcG9zIGZ1bmN0aW9uX25hbWUgPVxuICAgIGlmIHBvcyA+PSBsZW5ndGggc3RyIHx8IHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCIlczogb3V0IG9mIGJvdW5kc1wiIGZ1bmN0aW9uX25hbWUgKClcbiAgOztcblxuICBsZXQgaXNfY2hhcl9lc2NhcGluZyBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImlzX2NoYXJfZXNjYXBpbmdcIjtcbiAgICBtYXRjaCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHdpdGhcbiAgICB8IGBFc2NhcGluZyAtPiB0cnVlXG4gICAgfCBgRXNjYXBlZCB8IGBMaXRlcmFsIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGlzX2NoYXJfZXNjYXBlZCBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImlzX2NoYXJfZXNjYXBlZFwiO1xuICAgIG1hdGNoIGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgd2l0aFxuICAgIHwgYEVzY2FwZWQgLT4gdHJ1ZVxuICAgIHwgYEVzY2FwaW5nIHwgYExpdGVyYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfY2hhcl9saXRlcmFsIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9saXRlcmFsXCI7XG4gICAgbWF0Y2ggZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyB3aXRoXG4gICAgfCBgTGl0ZXJhbCAtPiB0cnVlXG4gICAgfCBgRXNjYXBlZCB8IGBFc2NhcGluZyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpbmRleF9mcm9tXCI7XG4gICAgbGV0IHJlYyBsb29wIGkgc3RhdHVzID1cbiAgICAgIGlmIGkgPj0gcG9zXG4gICAgICAmJiAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICAgICAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlKVxuICAgICAgJiYgQ2hhci5lcXVhbCBzdHIuW2ldIGNoYXJcbiAgICAgIHRoZW4gU29tZSBpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGkgPSBpICsgMSBpblxuICAgICAgICBpZiBpID49IGxlbmd0aCBzdHJcbiAgICAgICAgdGhlbiBOb25lXG4gICAgICAgIGVsc2UgbG9vcCBpICh1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgc3RhdHVzKSlcbiAgICBpblxuICAgIGxvb3AgcG9zIChlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zKVxuICA7O1xuXG4gIGxldCBpbmRleF9mcm9tX2V4biBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyID1cbiAgICBtYXRjaCBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiXG4gICAgICAgICAgIFsgXCJzdHJcIiwgc2V4cF9vZl90IHN0clxuICAgICAgICAgICA7IFwiZXNjYXBlX2NoYXJcIiwgc2V4cF9vZl9jaGFyIGVzY2FwZV9jaGFyXG4gICAgICAgICAgIDsgXCJwb3NcIiwgc2V4cF9vZl9pbnQgcG9zXG4gICAgICAgICAgIDsgXCJjaGFyXCIsIHNleHBfb2ZfY2hhciBjaGFyXG4gICAgICAgICAgIF0pXG4gICAgfCBTb21lIHBvcyAtPiBwb3NcbiAgOztcblxuICBsZXQgaW5kZXggc3RyIH5lc2NhcGVfY2hhciBjaGFyID0gaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIDAgY2hhclxuICBsZXQgaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9IGluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgMCBjaGFyXG5cbiAgbGV0IHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJyaW5kZXhfZnJvbVwiO1xuICAgICgqIGlmIHRoZSB0YXJnZXQgY2hhciBpcyB0aGUgc2FtZSBhcyBbZXNjYXBlX2NoYXJdLCB3ZSBoYXZlIG5vIHdheSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICBlc2NhcGVfY2hhciBpcyBsaXRlcmFsLCBzbyBqdXN0IHJldHVybiBOb25lICopXG4gICAgaWYgQ2hhci5lcXVhbCBjaGFyIGVzY2FwZV9jaGFyXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgcG9zID1cbiAgICAgICAgaWYgcG9zIDwgMFxuICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVzY2FwZV9jaGFycyA9IHByZWNlZGluZ19lc2NhcGVfY2hhcnMgc3RyIH5lc2NhcGVfY2hhciBwb3MgaW5cbiAgICAgICAgICBpZiBlc2NhcGVfY2hhcnMgbW9kIDIgPSAwICYmIENoYXIuZXF1YWwgc3RyLltwb3NdIGNoYXJcbiAgICAgICAgICB0aGVuIFNvbWUgcG9zXG4gICAgICAgICAgZWxzZSBsb29wIChwb3MgLSBlc2NhcGVfY2hhcnMgLSAxKSlcbiAgICAgIGluXG4gICAgICBsb29wIHBvcylcbiAgOztcblxuICBsZXQgcmluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIG1hdGNoIHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwicmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIlxuICAgICAgICAgICBbIFwic3RyXCIsIHNleHBfb2ZfdCBzdHJcbiAgICAgICAgICAgOyBcImVzY2FwZV9jaGFyXCIsIHNleHBfb2ZfY2hhciBlc2NhcGVfY2hhclxuICAgICAgICAgICA7IFwicG9zXCIsIHNleHBfb2ZfaW50IHBvc1xuICAgICAgICAgICA7IFwiY2hhclwiLCBzZXhwX29mX2NoYXIgY2hhclxuICAgICAgICAgICBdKVxuICAgIHwgU29tZSBwb3MgLT4gcG9zXG4gIDs7XG5cbiAgbGV0IHJpbmRleCBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPVxuICAgIGlmIGlzX2VtcHR5IHN0ciB0aGVuIE5vbmUgZWxzZSByaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIChsZW5ndGggc3RyIC0gMSkgY2hhclxuICA7O1xuXG4gIGxldCByaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9XG4gICAgcmluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgKGxlbmd0aCBzdHIgLSAxKSBjaGFyXG4gIDs7XG5cbiAgKCogW3NwbGl0X2dlbiBzdHIgfmVzY2FwZV9jaGFyIH5vbl0gd29ya3Mgc2ltaWxhcmx5IHRvIFtTdHJpbmcuc3BsaXRfZ2VuXSwgd2l0aCBhblxuICAgICBhZGRpdGlvbmFsIHJlcXVpcmVtZW50OiBvbmx5IHNwbGl0IG9uIGxpdGVyYWwgY2hhcnMsIG5vdCBlc2NhcGluZyBvciBlc2NhcGVkICopXG4gIGxldCBzcGxpdF9nZW4gc3RyIH5lc2NhcGVfY2hhciB+b24gPVxuICAgIGxldCBpc19kZWxpbSA9XG4gICAgICBtYXRjaCBvbiB3aXRoXG4gICAgICB8IGBjaGFyIGMnIC0+IGZ1biBjIC0+IENoYXIuZXF1YWwgYyBjJ1xuICAgICAgfCBgY2hhcl9saXN0IGwgLT4gZnVuIGMgLT4gY2hhcl9saXN0X21lbSBsIGNcbiAgICBpblxuICAgIGxldCBsZW4gPSBsZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBsb29wIGFjYyBzdGF0dXMgbGFzdF9wb3MgcG9zID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiBMaXN0LnJldiAoc3ViIHN0ciB+cG9zOmxhc3RfcG9zIH5sZW46KGxlbiAtIGxhc3RfcG9zKSA6OiBhY2MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHN0YXR1cyA9IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHN0YXR1cyBpblxuICAgICAgICBpZiAobWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICAgICAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlKVxuICAgICAgICAmJiBpc19kZWxpbSBzdHIuW3Bvc11cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHN1Yl9zdHIgPSBzdWIgc3RyIH5wb3M6bGFzdF9wb3MgfmxlbjoocG9zIC0gbGFzdF9wb3MpIGluXG4gICAgICAgICAgbG9vcCAoc3ViX3N0ciA6OiBhY2MpIHN0YXR1cyAocG9zICsgMSkgKHBvcyArIDEpKVxuICAgICAgICBlbHNlIGxvb3AgYWNjIHN0YXR1cyBsYXN0X3BvcyAocG9zICsgMSkpXG4gICAgaW5cbiAgICBsb29wIFtdIGBMaXRlcmFsIDAgMFxuICA7O1xuXG4gIGxldCBzcGxpdCBzdHIgfm9uID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyIG9uKVxuICBsZXQgc3BsaXRfb25fY2hhcnMgc3RyIH5vbjpjaGFycyA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhcl9saXN0IGNoYXJzKVxuXG4gIGxldCBzcGxpdF9hdCBzdHIgcG9zID1cbiAgICBzdWIgc3RyIH5wb3M6MCB+bGVuOnBvcywgc3ViIHN0ciB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggc3RyIC0gcG9zIC0gMSlcbiAgOztcblxuICBsZXQgbHNwbGl0MiBzdHIgfm9uIH5lc2NhcGVfY2hhciA9XG4gICAgT3B0aW9uLm1hcCAoaW5kZXggc3RyIH5lc2NhcGVfY2hhciBvbikgfmY6KGZ1biB4IC0+IHNwbGl0X2F0IHN0ciB4KVxuICA7O1xuXG4gIGxldCByc3BsaXQyIHN0ciB+b24gfmVzY2FwZV9jaGFyID1cbiAgICBPcHRpb24ubWFwIChyaW5kZXggc3RyIH5lc2NhcGVfY2hhciBvbikgfmY6KGZ1biB4IC0+IHNwbGl0X2F0IHN0ciB4KVxuICA7O1xuXG4gIGxldCBsc3BsaXQyX2V4biBzdHIgfm9uIH5lc2NhcGVfY2hhciA9IHNwbGl0X2F0IHN0ciAoaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgb24pXG4gIGxldCByc3BsaXQyX2V4biBzdHIgfm9uIH5lc2NhcGVfY2hhciA9IHNwbGl0X2F0IHN0ciAocmluZGV4X2V4biBzdHIgfmVzY2FwZV9jaGFyIG9uKVxuXG4gICgqIFtsYXN0X25vbl9kcm9wX2xpdGVyYWxdIGFuZCBbZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbF0gYXJlIGVpdGhlciBib3RoIFtOb25lXSBvciBib3RoXG4gICAgIFtTb21lXS4gSWYgW1NvbWVdLCB0aGVuIHRoZSBmb3JtZXIgaXMgPj0gdGhlIGxhdHRlci4gKilcbiAgbGV0IGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB+ZHJvcCB+ZXNjYXBlX2NoYXIgdCA9XG4gICAgcmZpbmRpIHQgfmY6KGZ1biBpIGMgLT5cbiAgICAgIChub3QgKGRyb3AgYykpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwaW5nIHQgfmVzY2FwZV9jaGFyIGlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBlZCB0IH5lc2NhcGVfY2hhciBpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgfmRyb3AgfmVzY2FwZV9jaGFyIHQgPVxuICAgIGxmaW5kaSB0IH5mOihmdW4gaSBjIC0+XG4gICAgICAobm90IChkcm9wIGMpKVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGluZyB0IH5lc2NhcGVfY2hhciBpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwZWQgdCB+ZXNjYXBlX2NoYXIgaSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCByc3RyaXBfbGl0ZXJhbCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBsYXN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIGkgLT4gaWYgaSA9IGxlbmd0aCB0IC0gMSB0aGVuIHQgZWxzZSBwcmVmaXggdCAoaSArIDEpXG4gIDs7XG5cbiAgbGV0IGxzdHJpcF9saXRlcmFsID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIDAgLT4gdFxuICAgIHwgU29tZSBuIC0+IGRyb3BfcHJlZml4IHQgblxuICA7O1xuXG4gICgqIFtzdHJpcCB0XSBjb3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBbbHN0cmlwIChyc3RyaXAgdCldLiAgVGhlIGltcGxlbWVudGF0aW9uXG4gICAgIGJlbG93IHNhdmVzIChhdCBsZWFzdCkgYSBmYWN0b3Igb2YgdHdvIGFsbG9jYXRpb24sIGJ5IG9ubHkgYWxsb2NhdGluZyB0aGVcbiAgICAgZmluYWwgcmVzdWx0LiAgVGhpcyBhbHNvIHNhdmVzIHNvbWUgYW1vdW50IG9mIHRpbWUuICopXG4gIGxldCBzdHJpcF9saXRlcmFsID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCB+ZXNjYXBlX2NoYXIgPVxuICAgIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICAgICgqIHBlcmZvcm1hbmNlIGhhY2s6IGF2b2lkIGNvcHlpbmcgW3RdIGluIGNvbW1vbiBjYXNlcyAqKVxuICAgIGlmIGxlbmd0aCA9IDAgfHwgbm90IChkcm9wIHQuWzBdIHx8IGRyb3AgdC5bbGVuZ3RoIC0gMV0pXG4gICAgdGhlbiB0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBmaXJzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgICAgKG1hdGNoIGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICB8IFNvbWUgbGFzdCAtPiBzdWIgdCB+cG9zOmZpcnN0IH5sZW46KGxhc3QgLSBmaXJzdCArIDEpKSlcbiAgOztcbmVuZFxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBTdHJpbmdfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbigqIE92ZXJyaWRlIFtTZWFyY2hfcGF0dGVybl0gd2l0aCBkZWZhdWx0IGNhc2Utc2Vuc2l0aXZpdHkgYXJndW1lbnQgYXQgdGhlIGVuZCBvZiB0aGVcbiAgIGZpbGUsIHNvIHRoYXQgY2FsbCBzaXRlcyBhYm92ZSBhcmUgZm9yY2VkIHRvIHN1cHBseSBjYXNlLXNlbnNpdGl2aXR5IGV4cGxpY2l0bHkuICopXG5tb2R1bGUgU2VhcmNoX3BhdHRlcm4gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZWFyY2hfcGF0dGVybjBcblxuICBsZXQgY3JlYXRlID8oY2FzZV9zZW5zaXRpdmUgPSB0cnVlKSBwYXR0ZXJuID0gY3JlYXRlIHBhdHRlcm4gfmNhc2Vfc2Vuc2l0aXZlXG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIFN0cmluZ19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5cbmxldCBzdGFnZSA9IFN0YWdlZC5zdGFnZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBieXRlcyBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfYnl0ZXMgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuICBsZXQgdF9vZl9zZXhwID0gKGJ5dGVzX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2J5dGVzIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGJ5dGVzX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBCeXRlczBcblxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuQnl0ZXNcIlxuICBsZXQgcHAgZm10IHQgPSBTdGRsaWIuRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiAodG9fc3RyaW5nIHQpXG5lbmRcblxuaW5jbHVkZSBUXG5cbm1vZHVsZSBUb19ieXRlcyA9IEJsaXQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG4gIGVuZClcblxuaW5jbHVkZSBUb19ieXRlc1xuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChUKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBCeXRlc19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBUb19zdHJpbmcgPSBCbGl0Lk1ha2VfdG9fc3RyaW5nIChUKSAoVG9fYnl0ZXMpXG5cbm1vZHVsZSBGcm9tX3N0cmluZyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdF9zdHJpbmdcbiAgICBlbmQpXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5cbmxldCBpbml0IG4gfmYgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIG4gMFxuICB0aGVuIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJCeXRlcy5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHQgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHQgaSAoZiBpKVxuICBkb25lO1xuICB0XG47O1xuXG5sZXQgb2ZfY2hhcl9saXN0IGwgPVxuICBsZXQgdCA9IGNyZWF0ZSAoTGlzdC5sZW5ndGggbCkgaW5cbiAgTGlzdC5pdGVyaSBsIH5mOihmdW4gaSBjIC0+IHNldCB0IGkgYyk7XG4gIHRcbjs7XG5cbmxldCB0b19saXN0IHQgPVxuICBsZXQgcmVjIGxvb3AgdCBpIGFjYyA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBpIDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2UgbG9vcCB0IChpIC0gMSkgKHVuc2FmZV9nZXQgdCBpIDo6IGFjYylcbiAgaW5cbiAgbG9vcCB0IChsZW5ndGggdCAtIDEpIFtdXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5sZXQgbWFwIHQgfmYgPSBtYXAgdCB+ZlxubGV0IG1hcGkgdCB+ZiA9IG1hcGkgdCB+ZlxuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgbG9vcCB0IH5mIH5sZW4gfnBvcyBhY2MgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgcG9zIGxlblxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgfmYgfmxlbiB+cG9zOihwb3MgKyAxKSAoZiBhY2MgKHVuc2FmZV9nZXQgdCBwb3MpKVxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgfmYgfmxlbjoobGVuZ3RoIHQpIH5wb3M6MCBpbml0XG47O1xuXG5sZXQgZm9sZGkgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiB+bGVuIH5wb3MgYWNjID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmVxdWFsIHBvcyBsZW5cbiAgICB0aGVuIGFjY1xuICAgIGVsc2UgbG9vcCB0IH5mIH5sZW4gfnBvczoocG9zICsgMSkgKGYgcG9zIGFjYyAodW5zYWZlX2dldCB0IHBvcykpXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCB+ZiB+bGVuOihsZW5ndGggdCkgfnBvczowIGluaXRcbjs7XG5cbmxldCB0ciB+dGFyZ2V0IH5yZXBsYWNlbWVudCBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgIGlmIENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgcyBpKSB0YXJnZXQgdGhlbiB1bnNhZmVfc2V0IHMgaSByZXBsYWNlbWVudFxuICBkb25lXG47O1xuXG5sZXQgdHJfbXVsdGkgfnRhcmdldCB+cmVwbGFjZW1lbnQgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChTdHJpbmcubGVuZ3RoIHRhcmdldCkgMFxuICB0aGVuIHN0YWdlIGlnbm9yZVxuICBlbHNlIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQpIDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcInRyX211bHRpOiByZXBsYWNlbWVudCBpcyB0aGUgZW1wdHkgc3RyaW5nXCJcbiAgZWxzZSAoXG4gICAgbWF0Y2ggQnl0ZXNfdHIudHJfY3JlYXRlX21hcCB+dGFyZ2V0IH5yZXBsYWNlbWVudCB3aXRoXG4gICAgfCBOb25lIC0+IHN0YWdlIGlnbm9yZVxuICAgIHwgU29tZSB0cl9tYXAgLT5cbiAgICAgIHN0YWdlIChmdW4gcyAtPlxuICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBzIGkgKFN0cmluZy51bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgKHVuc2FmZV9nZXQgcyBpKSkpXG4gICAgICAgIGRvbmUpKVxuOztcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0IGNvbnRhaW5zID9wb3MgP2xlbiB0IGNoYXIgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgbGV0IGxhc3QgPSBwb3MgKyBsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgaSBsYXN0XG4gICAgJiYgKENoYXIuZXF1YWwgKGdldCB0IGkpIGNoYXIgfHwgbG9vcCAoaSArIDEpKVxuICBpblxuICBsb29wIHBvc1xuOztcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiIyAxIFwic3JjL2hleF9sZXhlci5tbGxcIlxuIFxudHlwZSByZXN1bHQgPVxufCBOZWcgb2Ygc3RyaW5nXG58IFBvcyBvZiBzdHJpbmdcblxuIyA4IFwic3JjL2hleF9sZXhlci5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDI3XFwwMDBcXDA4MlxcMDAwXFwxMDVcXDAwMFxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA0XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcGFyc2VfaGV4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9wYXJzZV9oZXhfcmVjIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcGFyc2VfaGV4X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgOCBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlcbiMgMTM1IFwic3JjL2hleF9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMykgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTQgXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggTmVnIGJvZHkgKVxuIyAxMzkgXCJzcmMvaGV4X2xleGVyLm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyA4IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keVxuIyAxNDUgXCJzcmMvaGV4X2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNSBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBQb3MgYm9keSApXG4jIDE0OSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9wYXJzZV9oZXhfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5sZXQgY29udmVydF9mYWlsdXJlIHggYSBiIHRvX3N0cmluZyA9XG4gIFByaW50Zi5mYWlsd2l0aGZcbiAgICBcImNvbnZlcnNpb24gZnJvbSAlcyB0byAlcyBmYWlsZWQ6ICVzIGlzIG91dCBvZiByYW5nZVwiXG4gICAgYVxuICAgIGJcbiAgICAodG9fc3RyaW5nIHgpXG4gICAgKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgbnVtX2JpdHNfaW50ID0gU3lzLmludF9zaXplX2luX2JpdHNcbmxldCBudW1fYml0c19pbnQzMiA9IDMyXG5sZXQgbnVtX2JpdHNfaW50NjQgPSA2NFxubGV0IG51bV9iaXRzX25hdGl2ZWludCA9IFdvcmRfc2l6ZS5udW1fYml0cyBXb3JkX3NpemUud29yZF9zaXplXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludCA9IDYzIHx8IG51bV9iaXRzX2ludCA9IDMxIHx8IG51bV9iaXRzX2ludCA9IDMyKVxubGV0IG1pbl9pbnQzMiA9IFN0ZGxpYi5JbnQzMi5taW5faW50XG5sZXQgbWF4X2ludDMyID0gU3RkbGliLkludDMyLm1heF9pbnRcbmxldCBtaW5faW50NjQgPSBTdGRsaWIuSW50NjQubWluX2ludFxubGV0IG1heF9pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5tYXhfaW50XG5sZXQgbWluX25hdGl2ZWludCA9IFN0ZGxpYi5OYXRpdmVpbnQubWluX2ludFxubGV0IG1heF9uYXRpdmVpbnQgPSBTdGRsaWIuTmF0aXZlaW50Lm1heF9pbnRcbmxldCBpbnRfdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9pbnRcbmxldCBpbnQzMl90b19zdHJpbmcgPSBTdGRsaWIuSW50MzIudG9fc3RyaW5nXG5sZXQgaW50NjRfdG9fc3RyaW5nID0gU3RkbGliLkludDY0LnRvX3N0cmluZ1xubGV0IG5hdGl2ZWludF90b19zdHJpbmcgPSBTdGRsaWIuTmF0aXZlaW50LnRvX3N0cmluZ1xuXG4oKiBpbnQgPC0+IGludDMyICopXG5cbmxldCBpbnRfdG9faW50MzJfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnRcIiBcImludDMyXCIgaW50X3RvX3N0cmluZ1xubGV0IGludDMyX3RvX2ludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDMyXCIgXCJpbnRcIiBpbnQzMl90b19zdHJpbmdcbmxldCBpbnQzMl90b19pbnRfdHJ1bmMgPSBTdGRsaWIuSW50MzIudG9faW50XG5sZXQgaW50X3RvX2ludDMyX3RydW5jID0gU3RkbGliLkludDMyLm9mX2ludFxuXG5sZXQgaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgPVxuICBpZiBudW1fYml0c19pbnQgPD0gbnVtX2JpdHNfaW50MzJcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnQzMl90b19pbnRfdHJ1bmMgbWluX2ludDMyIGluXG4gICAgbGV0IG1heCA9IGludDMyX3RvX2ludF90cnVuYyBtYXhfaW50MzIgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX2ludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgaW50MzJfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgPVxuICBpZiBudW1fYml0c19pbnQzMiA8PSBudW1fYml0c19pbnRcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnRfdG9faW50MzJfdHJ1bmMgSW50Lm1pbl92YWx1ZSBpblxuICAgIGxldCBtYXggPSBpbnRfdG9faW50MzJfdHJ1bmMgSW50Lm1heF92YWx1ZSBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfaW50MzIgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDMyIHggbWF4IDw9IDApXG47O1xuXG5sZXQgaW50X3RvX2ludDMyIHggPVxuICBpZiBpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4IHRoZW4gU29tZSAoaW50X3RvX2ludDMyX3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludDMyX3RvX2ludCB4ID1cbiAgaWYgaW50MzJfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIFNvbWUgKGludDMyX3RvX2ludF90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnRfdG9faW50MzJfZXhuIHggPVxuICBpZiBpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4IHRoZW4gaW50X3RvX2ludDMyX3RydW5jIHggZWxzZSBpbnRfdG9faW50MzJfZmFpbHVyZSB4XG47O1xuXG5sZXQgaW50MzJfdG9faW50X2V4biB4ID1cbiAgaWYgaW50MzJfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIGludDMyX3RvX2ludF90cnVuYyB4IGVsc2UgaW50MzJfdG9faW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50IDwtPiBpbnQ2NCAqKVxuXG5sZXQgaW50NjRfdG9faW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludFwiIGludDY0X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQgPCBudW1fYml0c19pbnQ2NClcbmxldCBpbnRfdG9faW50NjQgPSBTdGRsaWIuSW50NjQub2ZfaW50XG5sZXQgaW50NjRfdG9faW50X3RydW5jID0gU3RkbGliLkludDY0LnRvX2ludFxuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgPVxuICBsZXQgbWluID0gaW50X3RvX2ludDY0IEludC5taW5fdmFsdWUgaW5cbiAgbGV0IG1heCA9IGludF90b19pbnQ2NCBJbnQubWF4X3ZhbHVlIGluXG4gIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDBcbjs7XG5cbmxldCBpbnQ2NF90b19pbnQgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBTb21lIChpbnQ2NF90b19pbnRfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50NjRfdG9faW50X2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIGludDY0X3RvX2ludF90cnVuYyB4IGVsc2UgaW50NjRfdG9faW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50IDwtPiBuYXRpdmVpbnQgKilcblxubGV0IG5hdGl2ZWludF90b19pbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJuYXRpdmVpbnRcIiBcImludFwiIG5hdGl2ZWludF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50IDw9IG51bV9iaXRzX25hdGl2ZWludClcbmxldCBpbnRfdG9fbmF0aXZlaW50ID0gU3RkbGliLk5hdGl2ZWludC5vZl9pbnRcbmxldCBuYXRpdmVpbnRfdG9faW50X3RydW5jID0gU3RkbGliLk5hdGl2ZWludC50b19pbnRcblxubGV0IG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGlmIG51bV9iaXRzX25hdGl2ZWludCA8PSBudW1fYml0c19pbnRcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnRfdG9fbmF0aXZlaW50IEludC5taW5fdmFsdWUgaW5cbiAgICBsZXQgbWF4ID0gaW50X3RvX25hdGl2ZWludCBJbnQubWF4X3ZhbHVlIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9uYXRpdmVpbnQgbWluIHggPD0gMCAmJiBjb21wYXJlX25hdGl2ZWludCB4IG1heCA8PSAwKVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnQgeCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gU29tZSAobmF0aXZlaW50X3RvX2ludF90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50X2V4biB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHhcbiAgdGhlbiBuYXRpdmVpbnRfdG9faW50X3RydW5jIHhcbiAgZWxzZSBuYXRpdmVpbnRfdG9faW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50MzIgPC0+IGludDY0ICopXG5cbmxldCBpbnQ2NF90b19pbnQzMl9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJpbnQzMlwiIGludDY0X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQzMiA8IG51bV9iaXRzX2ludDY0KVxubGV0IGludDMyX3RvX2ludDY0ID0gU3RkbGliLkludDY0Lm9mX2ludDMyXG5sZXQgaW50NjRfdG9faW50MzJfdHJ1bmMgPSBTdGRsaWIuSW50NjQudG9faW50MzJcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgPVxuICBsZXQgbWluID0gaW50MzJfdG9faW50NjQgbWluX2ludDMyIGluXG4gIGxldCBtYXggPSBpbnQzMl90b19pbnQ2NCBtYXhfaW50MzIgaW5cbiAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMFxuOztcblxubGV0IGludDY0X3RvX2ludDMyIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBTb21lIChpbnQ2NF90b19pbnQzMl90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19pbnQzMl9leG4geCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeFxuICB0aGVuIGludDY0X3RvX2ludDMyX3RydW5jIHhcbiAgZWxzZSBpbnQ2NF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbigqIGludDMyIDwtPiBuYXRpdmVpbnQgKilcblxubGV0IG5hdGl2ZWludF90b19pbnQzMl9mYWlsdXJlIHggPVxuICBjb252ZXJ0X2ZhaWx1cmUgeCBcIm5hdGl2ZWludFwiIFwiaW50MzJcIiBuYXRpdmVpbnRfdG9fc3RyaW5nXG47O1xuXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludDMyIDw9IG51bV9iaXRzX25hdGl2ZWludClcbmxldCBpbnQzMl90b19uYXRpdmVpbnQgPSBTdGRsaWIuTmF0aXZlaW50Lm9mX2ludDMyXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX3RydW5jID0gU3RkbGliLk5hdGl2ZWludC50b19pbnQzMlxuXG5sZXQgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgPVxuICBpZiBudW1fYml0c19uYXRpdmVpbnQgPD0gbnVtX2JpdHNfaW50MzJcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnQzMl90b19uYXRpdmVpbnQgbWluX2ludDMyIGluXG4gICAgbGV0IG1heCA9IGludDMyX3RvX25hdGl2ZWludCBtYXhfaW50MzIgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX25hdGl2ZWludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfbmF0aXZlaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyIHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4XG4gIHRoZW4gU29tZSAobmF0aXZlaW50X3RvX2ludDMyX3RydW5jIHgpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnQzMl9leG4geCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHhcbiAgdGhlbiBuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgeFxuICBlbHNlIG5hdGl2ZWludF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbigqIGludDY0IDwtPiBuYXRpdmVpbnQgKilcblxubGV0IGludDY0X3RvX25hdGl2ZWludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJuYXRpdmVpbnRcIiBpbnQ2NF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50NjQgPj0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludDY0X3RvX25hdGl2ZWludF90cnVuYyA9IFN0ZGxpYi5JbnQ2NC50b19uYXRpdmVpbnRcbmxldCBuYXRpdmVpbnRfdG9faW50NjQgPSBTdGRsaWIuSW50NjQub2ZfbmF0aXZlaW50XG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX25hdGl2ZWludCA9XG4gIGlmIG51bV9iaXRzX2ludDY0IDw9IG51bV9iaXRzX25hdGl2ZWludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IG5hdGl2ZWludF90b19pbnQ2NCBtaW5fbmF0aXZlaW50IGluXG4gICAgbGV0IG1heCA9IG5hdGl2ZWludF90b19pbnQ2NCBtYXhfbmF0aXZlaW50IGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnQ2NF90b19uYXRpdmVpbnQgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aXZlaW50IHhcbiAgdGhlbiBTb21lIChpbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmMgeClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpdmVpbnQgeFxuICB0aGVuIGludDY0X3RvX25hdGl2ZWludF90cnVuYyB4XG4gIGVsc2UgaW50NjRfdG9fbmF0aXZlaW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50NjQgPC0+IGludDYzICopXG5cbmxldCBpbnQ2NF90b19pbnQ2M19mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJpbnQ2M1wiIGludDY0X3RvX3N0cmluZ1xuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyA9XG4gIGxldCBtaW4gPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgbWluX2ludDY0IDEgaW5cbiAgbGV0IG1heCA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodCBtYXhfaW50NjQgMSBpblxuICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwXG47O1xuXG5sZXQgaW50NjRfZml0X29uX2ludDYzX2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyB4IHRoZW4gKCkgZWxzZSBpbnQ2NF90b19pbnQ2M19mYWlsdXJlIHhcbjs7XG5cbigqIHN0cmluZyBjb252ZXJzaW9ucyAqKVxuXG5sZXQgaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSBpbnB1dCB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyID1cbiAgbGV0IGlucHV0X2xlbmd0aCA9IFN0cmluZy5sZW5ndGggaW5wdXQgaW5cbiAgaWYgaW5wdXRfbGVuZ3RoIDw9IGNoYXJzX3Blcl9kZWxpbWl0ZXJcbiAgdGhlbiBpbnB1dFxuICBlbHNlIChcbiAgICBsZXQgaGFzX3NpZ24gPVxuICAgICAgbWF0Y2ggaW5wdXQuWzBdIHdpdGhcbiAgICAgIHwgJysnIHwgJy0nIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgbGV0IG51bV9kaWdpdHMgPSBpZiBoYXNfc2lnbiB0aGVuIGlucHV0X2xlbmd0aCAtIDEgZWxzZSBpbnB1dF9sZW5ndGggaW5cbiAgICBsZXQgbnVtX2RlbGltaXRlcnMgPSAobnVtX2RpZ2l0cyAtIDEpIC8gY2hhcnNfcGVyX2RlbGltaXRlciBpblxuICAgIGxldCBvdXRwdXRfbGVuZ3RoID0gaW5wdXRfbGVuZ3RoICsgbnVtX2RlbGltaXRlcnMgaW5cbiAgICBsZXQgb3V0cHV0ID0gQnl0ZXMuY3JlYXRlIG91dHB1dF9sZW5ndGggaW5cbiAgICBsZXQgaW5wdXRfcG9zID0gcmVmIChpbnB1dF9sZW5ndGggLSAxKSBpblxuICAgIGxldCBvdXRwdXRfcG9zID0gcmVmIChvdXRwdXRfbGVuZ3RoIC0gMSkgaW5cbiAgICBsZXQgbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciA9IHJlZiBjaGFyc19wZXJfZGVsaW1pdGVyIGluXG4gICAgbGV0IGZpcnN0X2RpZ2l0X3BvcyA9IGlmIGhhc19zaWduIHRoZW4gMSBlbHNlIDAgaW5cbiAgICB3aGlsZSAhaW5wdXRfcG9zID49IGZpcnN0X2RpZ2l0X3BvcyBkb1xuICAgICAgaWYgIW51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXIgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgQnl0ZXMuc2V0IG91dHB1dCAhb3V0cHV0X3BvcyBkZWxpbWl0ZXI7XG4gICAgICAgIGRlY3Igb3V0cHV0X3BvcztcbiAgICAgICAgbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciA6PSBjaGFyc19wZXJfZGVsaW1pdGVyKTtcbiAgICAgIEJ5dGVzLnNldCBvdXRwdXQgIW91dHB1dF9wb3MgaW5wdXQuWyFpbnB1dF9wb3NdO1xuICAgICAgZGVjciBpbnB1dF9wb3M7XG4gICAgICBkZWNyIG91dHB1dF9wb3M7XG4gICAgICBkZWNyIG51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXJcbiAgICBkb25lO1xuICAgIGlmIGhhc19zaWduIHRoZW4gQnl0ZXMuc2V0IG91dHB1dCAwIGlucHV0LlswXTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOm91dHB1dClcbjs7XG5cbmxldCBpbnNlcnRfZGVsaW1pdGVyIGlucHV0IH5kZWxpbWl0ZXIgPVxuICBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IGlucHV0IH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXI6M1xuOztcblxubGV0IGluc2VydF91bmRlcnNjb3JlcyBpbnB1dCA9IGluc2VydF9kZWxpbWl0ZXIgaW5wdXQgfmRlbGltaXRlcjonXydcbmxldCBzZXhwX29mX2ludF9zdHlsZSA9IFNleHAub2ZfaW50X3N0eWxlXG5cbm1vZHVsZSBNYWtlIChJIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgb3BlbiBJXG5cbiAgbGV0IGNoYXJzX3Blcl9kZWxpbWl0ZXIgPSAzXG5cbiAgbGV0IHRvX3N0cmluZ19odW0gPyhkZWxpbWl0ZXIgPSAnXycpIHQgPVxuICAgIGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgKHRvX3N0cmluZyB0KSB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICBsZXQgcyA9IHRvX3N0cmluZyB0IGluXG4gICAgU2V4cC5BdG9tXG4gICAgICAobWF0Y2ggIXNleHBfb2ZfaW50X3N0eWxlIHdpdGhcbiAgICAgICB8IGBVbmRlcnNjb3JlcyAtPiBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IHMgfmNoYXJzX3Blcl9kZWxpbWl0ZXIgfmRlbGltaXRlcjonXydcbiAgICAgICB8IGBOb191bmRlcnNjb3JlcyAtPiBzKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2hleCAoSSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgdmFsIHplcm8gOiB0XG4gICAgdmFsICggPCApIDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgbmVnIDogdCAtPiB0XG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUX2hleCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEkudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKEkuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBJLmhhc2hfZm9sZF90XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IEkuaGFzaCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY2hhcnNfcGVyX2RlbGltaXRlciA9IDRcblxuICAgIGxldCB0b19zdHJpbmcnID9kZWxpbWl0ZXIgdCA9XG4gICAgICBsZXQgbWFrZV9zdWZmaXggPVxuICAgICAgICBtYXRjaCBkZWxpbWl0ZXIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gSS50b19zdHJpbmdcbiAgICAgICAgfCBTb21lIGRlbGltaXRlciAtPlxuICAgICAgICAgIGZ1biB0IC0+IGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgKEkudG9fc3RyaW5nIHQpIH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXJcbiAgICAgIGluXG4gICAgICBpZiBJLiggPCApIHQgSS56ZXJvIHRoZW4gXCItMHhcIiBeIG1ha2Vfc3VmZml4IChJLm5lZyB0KSBlbHNlIFwiMHhcIiBeIG1ha2Vfc3VmZml4IHRcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyB0ID0gdG9fc3RyaW5nJyB0ID9kZWxpbWl0ZXI6Tm9uZVxuICAgIGxldCB0b19zdHJpbmdfaHVtID8oZGVsaW1pdGVyID0gJ18nKSB0ID0gdG9fc3RyaW5nJyB0IH5kZWxpbWl0ZXJcblxuICAgIGxldCBpbnZhbGlkIHN0ciA9XG4gICAgICBQcmludGYuZmFpbHdpdGhmIFwiJXMub2Zfc3RyaW5nOiBpbnZhbGlkIGlucHV0ICVTXCIgSS5tb2R1bGVfbmFtZSBzdHIgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZ193aXRoX2RlbGltaXRlciBzdHIgPVxuICAgICAgSS5vZl9zdHJpbmcgKFN0cmluZy5maWx0ZXIgc3RyIH5mOihmdW4gYyAtPiBDaGFyLiggPD4gKSBjICdfJykpXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgc3RyID1cbiAgICAgIGxldCBtb2R1bGUgTCA9IEhleF9sZXhlciBpblxuICAgICAgbGV0IGxleCA9IFN0ZGxpYi5MZXhpbmcuZnJvbV9zdHJpbmcgc3RyIGluXG4gICAgICBsZXQgcmVzdWx0ID0gT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gTC5wYXJzZV9oZXggbGV4KSBpblxuICAgICAgaWYgbGV4LmxleF9jdXJyX3BvcyA9IGxleC5sZXhfYnVmZmVyX2xlblxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpbnZhbGlkIHN0clxuICAgICAgICB8IFNvbWUgKE5lZyBib2R5KSAtPiBJLm5lZyAob2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIGJvZHkpXG4gICAgICAgIHwgU29tZSAoUG9zIGJvZHkpIC0+IG9mX3N0cmluZ193aXRoX2RlbGltaXRlciBib2R5KVxuICAgICAgZWxzZSBpbnZhbGlkIHN0clxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRfaGV4XG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zdHJpbmdhYmxlIChUX2hleClcbiAgZW5kXG5lbmRcbiIsIigqIFRoaXMgZmlsZSB3YXMgYXV0b2dlbmVyYXRlZCBieSAuLi9nZW5lcmF0ZS9nZW5lcmF0ZV9wb3dfb3ZlcmZsb3dfYm91bmRzLmV4ZSAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5cbigqIFdlIGhhdmUgdG8gdXNlIEludDY0LnRvX2ludF9leG4gaW5zdGVhZCBvZiBpbnQgY29uc3RhbnRzIHRvIG1ha2VcbiAgIHN1cmUgdGhhdCBmaWxlIGNhbiBiZSBwcmVwcm9jZXNzZWQgb24gMzItYml0IG1hY2hpbmVzLiAqKVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDMyX3ZhbHVlIDogaW50MzIgPVxuICAyMTQ3NDgzNjQ3bFxuXG5sZXQgaW50MzJfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50MzIgYXJyYXkgPVxuICBbfCAyMTQ3NDgzNjQ3bFxuICA7ICAyMTQ3NDgzNjQ3bFxuICA7ICA0NjM0MGxcbiAgOyAgMTI5MGxcbiAgOyAgMjE1bFxuICA7ICA3M2xcbiAgOyAgMzVsXG4gIDsgIDIxbFxuICA7ICAxNGxcbiAgOyAgMTBsXG4gIDsgIDhsXG4gIDsgIDdsXG4gIDsgIDVsXG4gIDsgIDVsXG4gIDsgIDRsXG4gIDsgIDRsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIHxdXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50X3ZhbHVlIDogaW50ID1cbiAgKC0xKSBsc3IgMVxuXG5sZXQgaW50X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludCBhcnJheSA9XG4gIG1hdGNoIEludF9jb252ZXJzaW9ucy5udW1fYml0c19pbnQgd2l0aFxuICB8IDMyIC0+IEFycmF5Lm1hcCBpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgfmY6U3RkbGliLkludDMyLnRvX2ludFxuICB8IDYzIC0+XG4gICAgW3wgU3RkbGliLkludDY0LnRvX2ludCA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICAgIDsgIFN0ZGxpYi5JbnQ2NC50b19pbnQgNDYxMTY4NjAxODQyNzM4NzkwM0xcbiAgICA7ICBTdGRsaWIuSW50NjQudG9faW50IDIxNDc0ODM2NDdMXG4gICAgOyAgMTY2NDUxMFxuICAgIDsgIDQ2MzQwXG4gICAgOyAgNTQwNFxuICAgIDsgIDEyOTBcbiAgICA7ICA0NjNcbiAgICA7ICAyMTVcbiAgICA7ICAxMThcbiAgICA7ICA3M1xuICAgIDsgIDQ5XG4gICAgOyAgMzVcbiAgICA7ICAyN1xuICAgIDsgIDIxXG4gICAgOyAgMTdcbiAgICA7ICAxNFxuICAgIDsgIDEyXG4gICAgOyAgMTBcbiAgICA7ICA5XG4gICAgOyAgOFxuICAgIDsgIDdcbiAgICA7ICA3XG4gICAgOyAgNlxuICAgIDsgIDVcbiAgICA7ICA1XG4gICAgOyAgNVxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICB8XVxuICB8IDMxIC0+XG4gICAgW3wgMTA3Mzc0MTgyM1xuICAgIDsgIDEwNzM3NDE4MjNcbiAgICA7ICAzMjc2N1xuICAgIDsgIDEwMjNcbiAgICA7ICAxODFcbiAgICA7ICA2M1xuICAgIDsgIDMxXG4gICAgOyAgMTlcbiAgICA7ICAxM1xuICAgIDsgIDEwXG4gICAgOyAgN1xuICAgIDsgIDZcbiAgICA7ICA1XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgfF1cbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDYzX29uX2ludDY0X3ZhbHVlIDogaW50NjQgPVxuICA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuXG5sZXQgaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50NjQgYXJyYXkgPVxuICBbfCA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICA7ICA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICA7ICAyMTQ3NDgzNjQ3TFxuICA7ICAxNjY0NTEwTFxuICA7ICA0NjM0MExcbiAgOyAgNTQwNExcbiAgOyAgMTI5MExcbiAgOyAgNDYzTFxuICA7ICAyMTVMXG4gIDsgIDExOExcbiAgOyAgNzNMXG4gIDsgIDQ5TFxuICA7ICAzNUxcbiAgOyAgMjdMXG4gIDsgIDIxTFxuICA7ICAxN0xcbiAgOyAgMTRMXG4gIDsgIDEyTFxuICA7ICAxMExcbiAgOyAgOUxcbiAgOyAgOExcbiAgOyAgN0xcbiAgOyAgN0xcbiAgOyAgNkxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMUxcbiAgOyAgMUxcbiAgfF1cblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnQ2NF92YWx1ZSA6IGludDY0ID1cbiAgOTIyMzM3MjAzNjg1NDc3NTgwN0xcblxubGV0IGludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDY0IGFycmF5ID1cbiAgW3wgOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgMzAzNzAwMDQ5OUxcbiAgOyAgMjA5NzE1MUxcbiAgOyAgNTUxMDhMXG4gIDsgIDYyMDhMXG4gIDsgIDE0NDhMXG4gIDsgIDUxMUxcbiAgOyAgMjM0TFxuICA7ICAxMjdMXG4gIDsgIDc4TFxuICA7ICA1MkxcbiAgOyAgMzhMXG4gIDsgIDI4TFxuICA7ICAyMkxcbiAgOyAgMThMXG4gIDsgIDE1TFxuICA7ICAxM0xcbiAgOyAgMTFMXG4gIDsgIDlMXG4gIDsgIDhMXG4gIDsgIDdMXG4gIDsgIDdMXG4gIDsgIDZMXG4gIDsgIDZMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDFMXG4gIHxdXG5cbmxldCBpbnQ2NF9uZWdhdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQ2NCBhcnJheSA9XG4gIFt8IC05MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAtOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgLTMwMzcwMDA0OTlMXG4gIDsgIC0yMDk3MTUxTFxuICA7ICAtNTUxMDhMXG4gIDsgIC02MjA4TFxuICA7ICAtMTQ0OExcbiAgOyAgLTUxMUxcbiAgOyAgLTIzNExcbiAgOyAgLTEyN0xcbiAgOyAgLTc4TFxuICA7ICAtNTJMXG4gIDsgIC0zOExcbiAgOyAgLTI4TFxuICA7ICAtMjJMXG4gIDsgIC0xOExcbiAgOyAgLTE1TFxuICA7ICAtMTNMXG4gIDsgIC0xMUxcbiAgOyAgLTlMXG4gIDsgIC04TFxuICA7ICAtN0xcbiAgOyAgLTdMXG4gIDsgIC02TFxuICA7ICAtNkxcbiAgOyAgLTVMXG4gIDsgIC01TFxuICA7ICAtNUxcbiAgOyAgLTRMXG4gIDsgIC00TFxuICA7ICAtNExcbiAgOyAgLTRMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMUxcbiAgfF1cbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IG5lZ2F0aXZlX2V4cG9uZW50ICgpID0gUHJpbnRmLmludmFsaWRfYXJnZiBcImV4cG9uZW50IGNhbiBub3QgYmUgbmVnYXRpdmVcIiAoKVxubGV0IG92ZXJmbG93ICgpID0gUHJpbnRmLmludmFsaWRfYXJnZiBcImludGVnZXIgb3ZlcmZsb3cgaW4gcG93XCIgKClcblxuKCogVG8gaW1wbGVtZW50IFtpbnQ2NF9wb3ddLCB3ZSB1c2UgQyBjb2RlIHJhdGhlciB0aGFuIE9DYW1sIHRvIGVsaW1pbmF0ZSBhbGxvY2F0aW9uLiAqKVxuZXh0ZXJuYWwgaW50X21hdGhfaW50X3BvdyA6IGludCAtPiBpbnQgLT4gaW50ID0gXCJCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YlwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBpbnRfbWF0aF9pbnQ2NF9wb3cgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YlwiXG5cbmxldCBpbnRfcG93IGJhc2UgZXhwb25lbnQgPVxuICBpZiBleHBvbmVudCA8IDAgdGhlbiBuZWdhdGl2ZV9leHBvbmVudCAoKTtcbiAgaWYgYWJzIGJhc2UgPiAxXG4gICYmIChleHBvbmVudCA+IDYzXG4gICAgICB8fCBhYnMgYmFzZSA+IFBvd19vdmVyZmxvd19ib3VuZHMuaW50X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcy4oZXhwb25lbnQpKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnRfcG93IGJhc2UgZXhwb25lbnRcbjs7XG5cbm1vZHVsZSBJbnQ2NF93aXRoX2NvbXBhcmlzb25zID0gc3RydWN0XG4gIGluY2x1ZGUgU3RkbGliLkludDY0XG5cbiAgZXh0ZXJuYWwgKCA8ICkgOiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+ICkgOiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+PSApIDogKGludDY0W0Bsb2NhbF9vcHRdKSAtPiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZW5kXG5cbigqIHdlIGRvbid0IGRvIFthYnNdIGluIGludDY0IGNhc2UgdG8gYXZvaWQgYWxsb2NhdGlvbiAqKVxubGV0IGludDY0X3BvdyBiYXNlIGV4cG9uZW50ID1cbiAgbGV0IG9wZW4gSW50NjRfd2l0aF9jb21wYXJpc29ucyBpblxuICBpZiBleHBvbmVudCA8IDBMIHRoZW4gbmVnYXRpdmVfZXhwb25lbnQgKCk7XG4gIGlmIChiYXNlID4gMUwgfHwgYmFzZSA8IC0xTClcbiAgJiYgKGV4cG9uZW50ID4gNjNMXG4gICAgICB8fCAoYmFzZSA+PSAwTFxuICAgICAgICAgICYmIGJhc2VcbiAgICAgICAgICAgICA+IFBvd19vdmVyZmxvd19ib3VuZHMuaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzLih0b19pbnQgZXhwb25lbnQpKVxuICAgICAgfHwgKGJhc2UgPCAwTFxuICAgICAgICAgICYmIGJhc2VcbiAgICAgICAgICAgICA8IFBvd19vdmVyZmxvd19ib3VuZHMuaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzLih0b19pbnQgZXhwb25lbnQpKSlcbiAgdGhlbiBvdmVyZmxvdyAoKTtcbiAgaW50X21hdGhfaW50NjRfcG93IGJhc2UgZXhwb25lbnRcbjs7XG5cbmxldCBpbnQ2M19wb3dfb25faW50NjQgYmFzZSBleHBvbmVudCA9XG4gIGxldCBvcGVuIEludDY0X3dpdGhfY29tcGFyaXNvbnMgaW5cbiAgaWYgZXhwb25lbnQgPCAwTCB0aGVuIG5lZ2F0aXZlX2V4cG9uZW50ICgpO1xuICBpZiBhYnMgYmFzZSA+IDFMXG4gICYmIChleHBvbmVudCA+IDYzTFxuICAgICAgfHwgYWJzIGJhc2VcbiAgICAgICAgID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2M19vbl9pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudClcbiAgICAgKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnQ2NF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubW9kdWxlIHR5cGUgTWFrZV9hcmcgPSBzaWdcbiAgdHlwZSB0XG5cbiAgaW5jbHVkZSBGbG9hdGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCB+LSApIDogdCAtPiB0XG5cbiAgaW5jbHVkZSBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIGFicyA6IHQgLT4gdFxuICB2YWwgbmVnIDogdCAtPiB0XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgb2ZfaW50X2V4biA6IGludCAtPiB0XG4gIHZhbCByZW0gOiB0IC0+IHQgLT4gdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChYIDogTWFrZV9hcmcpID0gc3RydWN0XG4gIG9wZW4gWFxuXG4gIGxldCAoICUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIiVzICUlICVzIGluIGNvcmVfaW50Lm1sOiBtb2R1bHVzIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBsZXQgcnZhbCA9IFgucmVtIHggeSBpblxuICAgIGlmIHJ2YWwgPCB6ZXJvIHRoZW4gcnZhbCArIHkgZWxzZSBydmFsXG4gIDs7XG5cbiAgbGV0IG9uZSA9IG9mX2ludF9leG4gMVxuXG4gIGxldCAoIC8lICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAvJSUgJXMgaW4gY29yZV9pbnQubWw6IGRpdmlzb3Igc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGlmIHggPCB6ZXJvIHRoZW4gKCh4ICsgb25lKSAvIHkpIC0gb25lIGVsc2UgeCAvIHlcbiAgOztcblxuICAoKiogZmxvYXQgZGl2aXNpb24gb2YgaW50ZWdlcnMgKilcbiAgbGV0ICggLy8gKSB4IHkgPSB0b19mbG9hdCB4IC8uIHRvX2Zsb2F0IHlcblxuICBsZXQgcm91bmRfZG93biBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID0gaSAtIChpICUgbW9kdWx1cylcblxuICBsZXQgcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2Y6bW9kdWx1cyA9XG4gICAgbGV0IHJlbWFpbmRlciA9IGkgJSBtb2R1bHVzIGluXG4gICAgaWYgcmVtYWluZGVyID0gemVybyB0aGVuIGkgZWxzZSBpICsgbW9kdWx1cyAtIHJlbWFpbmRlclxuICA7O1xuXG4gIGxldCByb3VuZF90b3dhcmRzX3plcm8gaSB+dG9fbXVsdGlwbGVfb2YgPVxuICAgIGlmIGkgPSB6ZXJvXG4gICAgdGhlbiB6ZXJvXG4gICAgZWxzZSBpZiBpID4gemVyb1xuICAgIHRoZW4gcm91bmRfZG93biBpIH50b19tdWx0aXBsZV9vZlxuICAgIGVsc2Ugcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2ZcbiAgOztcblxuICBsZXQgcm91bmRfbmVhcmVzdCBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID1cbiAgICBsZXQgcmVtYWluZGVyID0gaSAlIG1vZHVsdXMgaW5cbiAgICBsZXQgbW9kdWx1c19taW51c19yZW1haW5kZXIgPSBtb2R1bHVzIC0gcmVtYWluZGVyIGluXG4gICAgaWYgbW9kdWx1c19taW51c19yZW1haW5kZXIgPD0gcmVtYWluZGVyXG4gICAgdGhlbiBpICsgbW9kdWx1c19taW51c19yZW1haW5kZXJcbiAgICBlbHNlIGkgLSByZW1haW5kZXJcbiAgOztcblxuICBsZXRbQGlubGluZSBhbHdheXNdIHJvdW5kID8oZGlyID0gYE5lYXJlc3QpIGkgfnRvX211bHRpcGxlX29mID1cbiAgICBtYXRjaCBkaXIgd2l0aFxuICAgIHwgYE5lYXJlc3QgLT4gcm91bmRfbmVhcmVzdCBpIH50b19tdWx0aXBsZV9vZlxuICAgIHwgYERvd24gLT4gcm91bmRfZG93biBpIH50b19tdWx0aXBsZV9vZlxuICAgIHwgYFVwIC0+IHJvdW5kX3VwIGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgWmVybyAtPiByb3VuZF90b3dhcmRzX3plcm8gaSB+dG9fbXVsdGlwbGVfb2ZcbiAgOztcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgaW50X3BvdyA9IGludF9wb3dcbiAgbGV0IGludDY0X3BvdyA9IGludDY0X3Bvd1xuICBsZXQgaW50NjNfcG93X29uX2ludDY0ID0gaW50NjNfcG93X29uX2ludDY0XG5cbiAgbW9kdWxlIFBvd19vdmVyZmxvd19ib3VuZHMgPSBQb3dfb3ZlcmZsb3dfYm91bmRzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBDIHN0dWIgZm9yIGludCBwb3Bjb3VudCB0byB1c2UgdGhlIFBPUENOVCBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuZXh0ZXJuYWwgaW50X3BvcGNvdW50IDogaW50IC0+IGludCA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnRcIiBbQEBub2FsbG9jXVxuXG4oKiBUbyBtYWludGFpbiBqYXZhc2NyaXB0IGNvbXBhdGliaWxpdHkgYW5kIGVuYWJsZSB1bmJveGluZywgd2UgaW1wbGVtZW50IHBvcGNvdW50IGluXG4gICBPQ2FtbCByYXRoZXIgdGhhbiB1c2UgQyBzdHVicy4gSW1wbGVtZW50YXRpb24gYWRhcHRlZCBmcm9tOlxuICAgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFtbWluZ193ZWlnaHQjRWZmaWNpZW50X2ltcGxlbWVudGF0aW9uICopXG5sZXQgaW50NjRfcG9wY291bnQgPVxuICBsZXQgb3BlbiBTdGRsaWIuSW50NjQgaW5cbiAgbGV0ICggKyApID0gYWRkIGluXG4gIGxldCAoIC0gKSA9IHN1YiBpblxuICBsZXQgKCAqICkgPSBtdWwgaW5cbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsIGluXG4gIGxldCAoIGxhbmQgKSA9IGxvZ2FuZCBpblxuICBsZXQgbTEgPSAweDU1NTU1NTU1NTU1NTU1NTVMIGluXG4gICgqIDBiMDEwMTAxMDEuLi4gKilcbiAgbGV0IG0yID0gMHgzMzMzMzMzMzMzMzMzMzMzTCBpblxuICAoKiAwYjAwMTEwMDExLi4uICopXG4gIGxldCBtNCA9IDB4MGYwZjBmMGYwZjBmMGYwZkwgaW5cbiAgKCogMGIwMDAwMTExMS4uLiAqKVxuICBsZXQgaDAxID0gMHgwMTAxMDEwMTAxMDEwMTAxTCBpblxuICAoKiAxIGJpdCBzZXQgcGVyIGJ5dGUgKilcbiAgZnVuIFtAaW5saW5lXSB4IC0+XG4gICAgKCogZ2F0aGVyIHRoZSBiaXQgY291bnQgZm9yIGV2ZXJ5IHBhaXIgb2YgYml0cyAqKVxuICAgIGxldCB4ID0geCAtICgoeCBsc3IgMSkgbGFuZCBtMSkgaW5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgNCBiaXRzICopXG4gICAgbGV0IHggPSAoeCBsYW5kIG0yKSArICgoeCBsc3IgMikgbGFuZCBtMikgaW5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgYnl0ZSAqKVxuICAgIGxldCB4ID0gKHggKyAoeCBsc3IgNCkpIGxhbmQgbTQgaW5cbiAgICAoKiBzdW0gdGhlIGJpdCBjb3VudHMgaW4gdGhlIHRvcCBieXRlIGFuZCBzaGlmdCBpdCBkb3duICopXG4gICAgdG9faW50ICgoeCAqIGgwMSkgbHNyIDU2KVxuOztcblxubGV0IGludDMyX3BvcGNvdW50ID1cbiAgKCogT24gNjQtYml0IHN5c3RlbXMsIHRoaXMgaXMgZmFzdGVyIHRoYW4gaW1wbGVtZW50aW5nIHVzaW5nIFtpbnQzMl0gYXJpdGhtZXRpYy4gKilcbiAgbGV0IG1hc2sgPSAweGZmZmZfZmZmZkwgaW5cbiAgZnVuIFtAaW5saW5lXSB4IC0+IGludDY0X3BvcGNvdW50IChTdGRsaWIuSW50NjQubG9nYW5kIChTdGRsaWIuSW50NjQub2ZfaW50MzIgeCkgbWFzaylcbjs7XG5cbmxldCBuYXRpdmVpbnRfcG9wY291bnQgPVxuICBtYXRjaCBTdGRsaWIuTmF0aXZlaW50LnNpemUgd2l0aFxuICB8IDMyIC0+IGZ1biBbQGlubGluZV0geCAtPiBpbnQzMl9wb3Bjb3VudCAoU3RkbGliLk5hdGl2ZWludC50b19pbnQzMiB4KVxuICB8IDY0IC0+IGZ1biBbQGlubGluZV0geCAtPiBpbnQ2NF9wb3Bjb3VudCAoU3RkbGliLkludDY0Lm9mX25hdGl2ZWludCB4KVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNpZ24wXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChTaWduMClcblxuKCogT3BlbiBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbnMgc29cbiAgIHRoZXkgZG8gbm90IHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9uc1xuICAgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCB0b19zdHJpbmdfaHVtID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gXCJuZWdhdGl2ZVwiXG4gIHwgWmVybyAtPiBcInplcm9cIlxuICB8IFBvcyAtPiBcInBvc2l0aXZlXCJcbjs7XG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IC0xLlxuICB8IFplcm8gLT4gMC5cbiAgfCBQb3MgLT4gMS5cbjs7XG5cbmxldCBmbGlwID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gUG9zXG4gIHwgWmVybyAtPiBaZXJvXG4gIHwgUG9zIC0+IE5lZ1xuOztcblxubGV0ICggKiApIHQgdCcgPSBvZl9pbnQgKHRvX2ludCB0ICogdG9faW50IHQnKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhdCB0aGUgZW5kLCBhZnRlciBhbnlcbiAgIGZ1bmN0b3IgYXBwbGljYXRpb25zIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvXG4gICB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5IHRoaXNcbiAgIG1vZHVsZS4gKilcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50X2ludGZcbmluY2x1ZGUgSW50MFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2ludCA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9pbnRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoaW50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlIHggeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZSB4IHlcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgfCBfIC0+IFByaW50Zi5mYWlsd2l0aGYgXCJJbnQub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG5lbmRcblxubGV0IG51bV9iaXRzID0gSW50X2NvbnZlcnNpb25zLm51bV9iaXRzX2ludFxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgdG9fZmxvYXQgPSBTdGRsaWIuZmxvYXRfb2ZfaW50XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gU3RkbGliLmludF9vZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBTdGRsaWIuaW50X29mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50Lm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggZilcbiAgICAgICgpXG47O1xuXG5sZXQgemVybyA9IDBcbmxldCBvbmUgPSAxXG5sZXQgbWludXNfb25lID0gLTFcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSAoIH4tIClcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJXhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJXhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnRcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvXG4gICB0aGV5IGRvIG5vdCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnNcbiAgIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmV4dGVybmFsIHRvX2ludDMyX3RydW5jIDogKHRbQGxvY2FsX29wdF0pIC0+IChpbnQzMltAbG9jYWxfb3B0XSkgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgb2ZfaW50MzJfdHJ1bmMgOiAoaW50MzJbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfaW50NjRfdHJ1bmMgOiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50X3RydW5jIDogKG5hdGl2ZWludFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJW5hdGl2ZWludF90b19pbnRcIlxuXG5sZXQgcHJlZCBpID0gaSAtIDFcbmxldCBzdWNjIGkgPSBpICsgMVxubGV0IHRvX2ludCBpID0gaVxubGV0IHRvX2ludF9leG4gPSB0b19pbnRcbmxldCBvZl9pbnQgaSA9IGlcbmxldCBvZl9pbnRfZXhuID0gb2ZfaW50XG5sZXQgbWF4X3ZhbHVlID0gU3RkbGliLm1heF9pbnRcbmxldCBtaW5fdmFsdWUgPSBTdGRsaWIubWluX2ludFxubGV0IG1heF92YWx1ZV8zMF9iaXRzID0gMHgzRkZGX0ZGRkZcbmxldCBvZl9pbnQzMiA9IENvbnYuaW50MzJfdG9faW50XG5sZXQgb2ZfaW50MzJfZXhuID0gQ29udi5pbnQzMl90b19pbnRfZXhuXG5sZXQgdG9faW50MzIgPSBDb252LmludF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYuaW50X3RvX2ludDMyX2V4blxubGV0IG9mX2ludDY0ID0gQ29udi5pbnQ2NF90b19pbnRcbmxldCBvZl9pbnQ2NF9leG4gPSBDb252LmludDY0X3RvX2ludF9leG5cbmxldCB0b19pbnQ2NCA9IENvbnYuaW50X3RvX2ludDY0XG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50XG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludF9leG5cbmxldCB0b19uYXRpdmVpbnQgPSBDb252LmludF90b19uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gdG9fbmF0aXZlaW50XG5sZXQgYWJzIHggPSBhYnMgeFxuXG4oKiBub3RlIHRoYXQgcmVtIGlzIG5vdCBzYW1lIGFzICUgKilcbmxldCByZW0gYSBiID0gYSBtb2QgYlxubGV0IGluY3IgPSBTdGRsaWIuaW5jclxubGV0IGRlY3IgPSBTdGRsaWIuZGVjclxubGV0IHNoaWZ0X3JpZ2h0IGEgYiA9IGEgYXNyIGJcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsIGEgYiA9IGEgbHNyIGJcbmxldCBzaGlmdF9sZWZ0IGEgYiA9IGEgbHNsIGJcbmxldCBiaXRfbm90IGEgPSBsbm90IGFcbmxldCBiaXRfb3IgYSBiID0gYSBsb3IgYlxubGV0IGJpdF9hbmQgYSBiID0gYSBsYW5kIGJcbmxldCBiaXRfeG9yIGEgYiA9IGEgbHhvciBiXG5sZXQgcG93ID0gSW50X21hdGguUHJpdmF0ZS5pbnRfcG93XG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyIHggPVxuICAgIGlmIHggPD0gMCB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggLSAxIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICAoKiBUaGUgbmV4dCBsaW5lIGlzIHN1cGVyZmx1b3VzIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyBmYXN0ZXIgdG8gZG8gaXRcbiAgICAgICBhbnl3YXkgdGhhbiB0byBicmFuY2ggKilcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICB4ICsgMVxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgKCogVGhlIG5leHQgbGluZSBpcyBzdXBlcmZsdW91cyBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYnV0IGl0J3MgZmFzdGVyIHRvIGRvIGl0XG4gICAgICAgYW55d2F5IHRoYW4gdG8gYnJhbmNoICopXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgeCAtICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gMCB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgKHggLSAxKSA9IDBcbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBpbnQgY2x6IGFuZCBjdHogdG8gdXNlIHRoZSBDTFovQlNSL0NUWi9CU0YgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbiAgZXh0ZXJuYWwgY2x6XG4gICAgOiAgKCogTm90ZSB0aGF0IHdlIHBhc3MgdGhlIHRhZ2dlZCBpbnQgaGVyZS4gU2VlIGludF9tYXRoX3N0dWJzLmMgZm9yIGRldGFpbHMgb24gd2h5XG4gICAgICAgICAgdGhpcyBpcyBjb3JyZWN0LiAqKVxuICAgIGludFxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfY2x6XCIgXCJCYXNlX2ludF9tYXRoX2ludF9jbHpfdW50YWdnZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChpbnRbQHVudGFnZ2VkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50X2N0elwiIFwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6X3VudGFnZ2VkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIGkgPD0gMFxuICAgIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50IGkgXSk7XG4gICAgaWYgaSA9IDEgdGhlbiAwIGVsc2UgbnVtX2JpdHMgLSBjbHogKGkgLSAxKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuXG5sZXQgc2lnbiA9IFNpZ24ub2ZfaW50XG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5pbnRfcG9wY291bnRcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGV4dGVybmFsICggKyApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlYWRkaW50XCJcbiAgZXh0ZXJuYWwgKCAtICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVzdWJpbnRcIlxuICBleHRlcm5hbCAoICogKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJW11bGludFwiXG4gIGV4dGVybmFsICggLyApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlZGl2aW50XCJcbiAgZXh0ZXJuYWwgKCB+LSApIDogKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVuZWdpbnRcIlxuXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYWJzID0gYWJzXG5cbiAgZXh0ZXJuYWwgbmVnIDogKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVuZWdpbnRcIlxuXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgbW9kdWxlIEYgPSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBpbmNsdWRlIEZcblxuICBleHRlcm5hbCBic3dhcDE2IDogKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5cbiAgKCogVGhlc2UgaW5saW5lZCB2ZXJzaW9ucyBvZiAoJSksICgvJSksIGFuZCAoLy8pIHBlcmZvcm0gYmV0dGVyIHRoYW4gdGhlaXIgZnVuY3Rvcml6ZWRcbiAgICAgY291bnRlcnBhcnRzIGluIFtGXSAoc2VlIGJlbmNobWFya3MgYmVsb3cpLlxuXG4gICAgIFRoZSByZWFzb24gdGhlc2UgZnVuY3Rpb25zIGFyZSBpbmxpbmVkIGluIFtJbnRdIGJ1dCBub3QgaW4gYW55IG9mIHRoZSBvdGhlciBpbnRlZ2VyXG4gICAgIG1vZHVsZXMgaXMgdGhhdCB0aGV5IGV4aXN0ZWQgaW4gW0ludF0gYW5kIFtJbnRdIGFsb25lIHByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2ZcbiAgICAgdGhlIFtJbnRfbWF0aC5NYWtlXSBmdW5jdG9yLCBhbmQgd2UgZGlkbid0IHdhbnQgdG8gZGVncmFkZSB0aGVpciBwZXJmb3JtYW5jZS5cblxuICAgICBXZSB3b24ndCBwcmUtZW1wdGl2ZWx5IGRvIHRoZSBzYW1lIGZvciBuZXcgZnVuY3Rpb25zLCB1bmxlc3Mgc29tZW9uZSBjYXJlcywgb24gYSBjYXNlXG4gICAgIGJ5IGNhc2UgZmFzaGlvbi4gICopXG5cbiAgbGV0ICggJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgICBcIiVzICUlICVzIGluIGNvcmVfaW50Lm1sOiBtb2R1bHVzIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBsZXQgcnZhbCA9IHJlbSB4IHkgaW5cbiAgICBpZiBydmFsIDwgemVybyB0aGVuIHJ2YWwgKyB5IGVsc2UgcnZhbFxuICA7O1xuXG4gIGxldCAoIC8lICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgLyUlICVzIGluIGNvcmVfaW50Lm1sOiBkaXZpc29yIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBpZiB4IDwgemVybyB0aGVuICgoeCArIG9uZSkgLyB5KSAtIG9uZSBlbHNlIHggLyB5XG4gIDs7XG5cbiAgbGV0ICggLy8gKSB4IHkgPSB0b19mbG9hdCB4IC8uIHRvX2Zsb2F0IHlcblxuICBleHRlcm5hbCAoIGxhbmQgKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWFuZGludFwiXG4gIGV4dGVybmFsICggbG9yICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVvcmludFwiXG4gIGV4dGVybmFsICggbHhvciApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIleG9yaW50XCJcblxuICBsZXQgbG5vdCA9IGxub3RcblxuICBleHRlcm5hbCAoIGxzbCApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlbHNsaW50XCJcbiAgZXh0ZXJuYWwgKCBsc3IgKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWxzcmludFwiXG4gIGV4dGVybmFsICggYXNyICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50XSBhbmQgW0ludC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBPX0YgPSBPLkZcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3JcbiAgIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zXG4gICBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVY2hhcjBcblxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuVWNoYXJcIlxuICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IEhhc2guZm9sZF9pbnQgc3RhdGUgKHRvX2ludCB0KVxuICBsZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuICBsZXQgdG9fc3RyaW5nIHQgPSBQcmludGYuc3ByaW50ZiBcIlUrJTA0WFwiICh0b19pbnQgdClcblxuICAoKiBEbyBub3QgYWN0dWFsbHkgZXhwb3J0IHRoaXMuIFNlZSBkaXNjdXNzaW9uIGluIHRoZSAubWxpICopXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIlVjaGFyLnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCJVKyVYXCIgKGZ1biBpIC0+IFVjaGFyMC5vZl9pbnQgaSkgd2l0aFxuICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiVWNoYXIudF9vZl9zZXhwOiBhdG9tIG9mIHRoZSBmb3JtIFUrWFhYWCBuZWVkZWRcIiBzZXhwKVxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICAgIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFVjaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGludF9pc19zY2FsYXIgPSBpc192YWxpZFxuXG5sZXQgc3VjY19leG4gYyA9XG4gIHRyeSBVY2hhcjAuc3VjYyBjIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBmYWlsd2l0aGYgXCJVY2hhci5zdWNjX2V4bjogJXNcIiBtc2cgKClcbjs7XG5cbmxldCBzdWNjIGMgPVxuICB0cnkgU29tZSAoVWNoYXIwLnN1Y2MgYykgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG47O1xuXG5sZXQgcHJlZF9leG4gYyA9XG4gIHRyeSBVY2hhcjAucHJlZCBjIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBmYWlsd2l0aGYgXCJVY2hhci5wcmVkX2V4bjogJXNcIiBtc2cgKClcbjs7XG5cbmxldCBwcmVkIGMgPVxuICB0cnkgU29tZSAoVWNoYXIwLnByZWQgYykgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBOb25lXG47O1xuXG5sZXQgb2Zfc2NhbGFyIGkgPSBpZiBpbnRfaXNfc2NhbGFyIGkgdGhlbiBTb21lICh1bnNhZmVfb2ZfaW50IGkpIGVsc2UgTm9uZVxuXG5sZXQgb2Zfc2NhbGFyX2V4biBpID1cbiAgaWYgaW50X2lzX3NjYWxhciBpXG4gIHRoZW4gdW5zYWZlX29mX2ludCBpXG4gIGVsc2UgZmFpbHdpdGhmIFwiVWNoYXIub2ZfaW50X2V4biBnb3QgYSBpbnZhbGlkIFVuaWNvZGUgc2NhbGFyIHZhbHVlOiAlMDRYXCIgaSAoKVxuOztcblxubGV0IHRvX3NjYWxhciB0ID0gVWNoYXIwLnRvX2ludCB0XG5sZXQgdG9fY2hhciBjID0gaWYgaXNfY2hhciBjIHRoZW4gU29tZSAodW5zYWZlX3RvX2NoYXIgYykgZWxzZSBOb25lXG5cbmxldCB0b19jaGFyX2V4biBjID1cbiAgaWYgaXNfY2hhciBjXG4gIHRoZW4gdW5zYWZlX3RvX2NoYXIgY1xuICBlbHNlIGZhaWx3aXRoZiBcIlVjaGFyLnRvX2NoYXJfZXhuIGdvdCBhIG5vbiBsYXRpbi0xIGNoYXJhY3RlcjogVSslMDRYXCIgKHRvX2ludCBjKSAoKVxuOztcblxubGV0IHV0ZjhfYnl0ZV9sZW5ndGggdWNoYXIgPVxuICBsZXQgY29kZXBvaW50ID0gdG9fc2NhbGFyIHVjaGFyIGluXG4gIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHg4MFxuICB0aGVuIDFcbiAgZWxzZSBpZiBJbnQuKCA8ICkgY29kZXBvaW50IDB4ODAwXG4gIHRoZW4gMlxuICBlbHNlIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHgxMDAwMFxuICB0aGVuIDNcbiAgZWxzZSA0XG47O1xuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2EpIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOlxuICAnYSAnYi5cbiAgKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdhLCAnYikgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgYV9fMDAzXyBiX18wMDRfKVxuICAgICAgOiAgKChhX18wMDNfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKGJfXzAwNF8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChhX18wMDNfLCBiX18wMDRfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAwMV8gX29mX2JfXzAwMl8gVCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJUXCJcbjs7XG5cbltAQEBlbmRdXG5cbnR5cGUgKCdhLCAnYikgZXF1YWwgPSAoJ2EsICdiKSB0XG5cbmxldCByZWZsID0gVFxubGV0IHN5bSAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIDogKGIsIGEpIHQgPSBUXG5sZXQgdHJhbnMgKHR5cGUgYSBiIGMpIChUIDogKGEsIGIpIHQpIChUIDogKGIsIGMpIHQpIDogKGEsIGMpIHQgPSBUXG5sZXQgY29udiAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIChhIDogYSkgOiBiID0gYVxuXG5tb2R1bGUgTGlmdCAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIDogKGEgWC50LCBiIFgudCkgdCA9IFRcbmVuZFxuXG5tb2R1bGUgTGlmdDIgKFggOiBzaWdcbiAgICB0eXBlICgnYTEsICdhMikgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhMSBiMSBhMiBiMikgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpXG4gICAgOiAoKGExLCBhMikgWC50LCAoYjEsIGIyKSBYLnQpIHRcbiAgICA9XG4gICAgVFxuICA7O1xuZW5kXG5cbm1vZHVsZSBMaWZ0MyAoWCA6IHNpZ1xuICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYTEgYjEgYTIgYjIgYTMgYjMpIChUIDogKGExLCBiMSkgdCkgKFQgOiAoYTIsIGIyKSB0KSAoVCA6IChhMywgYjMpIHQpXG4gICAgOiAoKGExLCBhMiwgYTMpIFgudCwgKGIxLCBiMiwgYjMpIFgudCkgdFxuICAgID1cbiAgICBUXG4gIDs7XG5lbmRcblxubGV0IGRldHVwbGUyICh0eXBlIGExIGEyIGIxIGIyKSAoVCA6IChhMSAqIGEyLCBiMSAqIGIyKSB0KSA6IChhMSwgYjEpIHQgKiAoYTIsIGIyKSB0ID1cbiAgVCwgVFxuOztcblxubGV0IHR1cGxlMiAodHlwZSBhMSBhMiBiMSBiMikgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpIDogKGExICogYTIsIGIxICogYjIpIHQgPSBUXG5cbm1vZHVsZSB0eXBlIEluamVjdGl2ZSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgc3RyaXAgOiAoJ2EgdCwgJ2IgdCkgZXF1YWwgLT4gKCdhLCAnYikgZXF1YWxcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmplY3RpdmUyID0gc2lnXG4gIHR5cGUgKCdhMSwgJ2EyKSB0XG5cbiAgdmFsIHN0cmlwIDogKCgnYTEsICdhMikgdCwgKCdiMSwgJ2IyKSB0KSBlcXVhbCAtPiAoJ2ExLCAnYjEpIGVxdWFsICogKCdhMiwgJ2IyKSBlcXVhbFxuZW5kXG5cbm1vZHVsZSBDb21wb3NpdGlvbl9wcmVzZXJ2ZXNfaW5qZWN0aXZpdHkgKE0xIDogSW5qZWN0aXZlKSAoTTIgOiBJbmplY3RpdmUpID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIE0xLnQgTTIudFxuXG4gIGxldCBzdHJpcCBlID0gTTEuc3RyaXAgKE0yLnN0cmlwIGUpXG5lbmRcblxubW9kdWxlIElkID0gc3RydWN0XG4gIG1vZHVsZSBVaWQgPSBJbnRcblxuICBtb2R1bGUgV2l0bmVzcyA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgXyB0ID0gLi5cbiAgICAgIHR5cGUgdHlwZV93aXRuZXNzX2ludCA9IFsgYHR5cGVfd2l0bmVzcyBvZiBpbnQgXSBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgbGV0IHNleHBfb2ZfdHlwZV93aXRuZXNzX2ludCA9XG4gICAgICAgIChmdW4gKGB0eXBlX3dpdG5lc3Mgdl9fMDA1XykgLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidHlwZV93aXRuZXNzXCI7IHNleHBfb2ZfaW50IHZfXzAwNV8gXVxuICAgICAgICAgICA6IHR5cGVfd2l0bmVzc19pbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgOztcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgbGV0IHNleHBfb2ZfdCBfc2V4cF9vZl9hIHQgPVxuICAgICAgICBgdHlwZV93aXRuZXNzXG4gICAgICAgICAgKFN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkXG4gICAgICAgICAgICAgKFN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCB0KSlcbiAgICAgICAgfD4gc2V4cF9vZl90eXBlX3dpdG5lc3NfaW50XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB0eXBlIF8gS2V5LnQgKz0gS2V5IDogdCBLZXkudFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICBsZXQgc2V4cF9vZl90ICh0eXBlIGEpIHNleHBfb2ZfYSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgICAgTS5LZXkgfD4gS2V5LnNleHBfb2ZfdCBzZXhwX29mX2FcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSB0KSAoKSA9XG4gICAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcbiAgICAgICAgdHlwZSBfIEtleS50ICs9IEtleSA6IHQgS2V5LnRcbiAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSB0KVxuICAgIDs7XG5cbiAgICBsZXQgdWlkICh0eXBlIGEpIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgICBTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCAoU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIE0uS2V5KVxuICAgIDs7XG5cbiAgICAoKiBXZSB3YW50IGEgY29uc3RhbnQgYWxsb2NhdGVkIG9uY2UgdGhhdCBbc2FtZV0gY2FuIHJldHVybiB3aGVuZXZlciBpdCBnZXRzIHRoZSBzYW1lXG4gICAgICAgd2l0bmVzc2VzLiAgSWYgd2Ugd3JpdGUgdGhlIGNvbnN0YW50IGluc2lkZSB0aGUgYm9keSBvZiBbc2FtZV0sIHRoZSBuYXRpdmUtY29kZVxuICAgICAgIGNvbXBpbGVyIHdpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nIGFuZCBsaWZ0IGl0IG91dC4gIEJ1dCBmb3IgY2xhcml0eSBhbmQgcm9idXN0bmVzcyxcbiAgICAgICB3ZSBkbyBpdCBvdXJzZWx2ZXMuICopXG4gICAgbGV0IHNvbWVfdCA9IFNvbWUgVFxuXG4gICAgbGV0IHNhbWUgKHR5cGUgYSBiKSAoYSA6IGEgdCkgKGIgOiBiIHQpIDogKGEsIGIpIGVxdWFsIG9wdGlvbiA9XG4gICAgICBsZXQgbW9kdWxlIEEgPSAodmFsIGEgOiBTIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQiA9ICh2YWwgYiA6IFMgd2l0aCB0eXBlIHQgPSBiKSBpblxuICAgICAgbWF0Y2ggQS5LZXkgd2l0aFxuICAgICAgfCBCLktleSAtPiBzb21lX3RcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgOztcbiAgZW5kXG5cblxuICB0eXBlICdhIHQgPVxuICAgIHsgd2l0bmVzcyA6ICdhIFdpdG5lc3MudFxuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIDsgdG9fc2V4cCA6ICdhIC0+IFNleHAudFxuICAgIH1cblxuICBsZXQgc2V4cF9vZl90IF8geyB3aXRuZXNzOyBuYW1lOyB0b19zZXhwIH0gOiBTZXhwLnQgPVxuICAgIGlmIGFtX3Rlc3RpbmdcbiAgICB0aGVuIEF0b20gbmFtZVxuICAgIGVsc2VcbiAgICAgIExpc3RcbiAgICAgICAgWyBMaXN0IFsgQXRvbSBcIm5hbWVcIjsgQXRvbSBuYW1lIF1cbiAgICAgICAgOyBMaXN0IFsgQXRvbSBcIndpdG5lc3NcIjsgd2l0bmVzcyB8PiBXaXRuZXNzLnNleHBfb2ZfdCB0b19zZXhwIF1cbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zZXhwIHQgPSB0LnRvX3NleHBcbiAgbGV0IG5hbWUgdCA9IHQubmFtZVxuICBsZXQgY3JlYXRlIH5uYW1lIHRvX3NleHAgPSB7IHdpdG5lc3MgPSBXaXRuZXNzLmNyZWF0ZSAoKTsgbmFtZTsgdG9fc2V4cCB9XG4gIGxldCB1aWQgdCA9IFdpdG5lc3MudWlkIHQud2l0bmVzc1xuICBsZXQgaGFzaCB0ID0gdWlkIHRcbiAgbGV0IGhhc2hfZm9sZF90IHMgdCA9IGhhc2hfZm9sZF9pbnQgcyAodWlkIHQpXG4gIGxldCBzYW1lX3dpdG5lc3MgdDEgdDIgPSBXaXRuZXNzLnNhbWUgdDEud2l0bmVzcyB0Mi53aXRuZXNzXG4gIGxldCBzYW1lIHQxIHQyID0gT3B0aW9uLmlzX3NvbWUgKHNhbWVfd2l0bmVzcyB0MSB0MilcblxuICBsZXQgc2FtZV93aXRuZXNzX2V4biB0MSB0MiA9XG4gICAgbWF0Y2ggc2FtZV93aXRuZXNzIHQxIHQyIHdpdGhcbiAgICB8IFNvbWUgdyAtPiB3XG4gICAgfCBOb25lIC0+XG4gICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gZ290IGRpZmZlcmVudCBpZHNcIlxuICAgICAgICAgICBbICggXCJcIlxuICAgICAgICAgICAgICwgc2V4cF9vZl9wYWlyIChzZXhwX29mX3Qgc2V4cF9vZl9vcGFxdWUpIChzZXhwX29mX3Qgc2V4cF9vZl9vcGFxdWUpICh0MSwgdDIpXG4gICAgICAgICAgICAgKVxuICAgICAgICAgICBdKVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuKCoqIFsnYSBDaGVhcF9vcHRpb24udF0gaXMgbGlrZSBbJ2Egb3B0aW9uXSwgYnV0IGl0IGRvZXNuJ3QgYm94IFtzb21lIF9dIHZhbHVlcy5cblxuICAgIFRoZXJlIGFyZSBzZXZlcmFsIHRoaW5ncyB0aGF0IGFyZSB1bnNhZmUgYWJvdXQgaXQ6XG5cbiAgICAtIFtmbG9hdCB0IGFycmF5XSAob3IgYW55IGFycmF5LWJhY2tlZCBjb250YWluZXIpIGlzIG5vdCBtZW1vcnktc2FmZVxuICAgICAgYmVjYXVzZSBmbG9hdCBhcnJheSBvcHRpbWl6YXRpb24gaXMgaW5jb21wYXRpYmxlIHdpdGggdW5ib3hlZCBvcHRpb25cbiAgICAgIG9wdGltaXphdGlvbi4gWW91IGhhdmUgdG8gdXNlIFtVbmlmb3JtX2FycmF5LnRdIGluc3RlYWQgb2YgW2FycmF5XS5cblxuICAgIC0gTmVzdGVkIG9wdGlvbnMgKFsnYSB0IHRdKSBkb24ndCB3b3JrLiBUaGV5IGFyZSBiZWxpZXZlZCB0byBiZVxuICAgICAgbWVtb3J5LXNhZmUsIGJ1dCBub3QgcGFyYW1ldHJpYy5cblxuICAgIC0gQSByZWNvcmQgd2l0aCBbZmxvYXQgdF1zIGluIGl0IHNob3VsZCBiZSBzYWZlLCBidXQgaXQncyBvbmx5IFt0XSBiZWluZ1xuICAgICAgYWJzdHJhY3QgdGhhdCBnaXZlcyB5b3Ugc2FmZXR5LiBJZiB0aGUgY29tcGlsZXIgd2FzIHNtYXJ0IGVub3VnaCB0byBwZWVrXG4gICAgICB0aHJvdWdoIHRoZSBtb2R1bGUgc2lnbmF0dXJlIHRoZW4gaXQgY291bGQgZGVjaWRlIHRvIGNvbnN0cnVjdCBhIGZsb2F0XG4gICAgICBhcnJheSBpbnN0ZWFkLiAqKVxubW9kdWxlIENoZWFwX29wdGlvbiA9IHN0cnVjdFxuICAoKiBUaGlzIGlzIHRha2VuIGZyb20gY29yZS4gUmF0aGVyIHRoYW4gZXhwb3NlIGl0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG9mIGJhc2UsIGp1c3RcbiAgICAga2VlcCBhIGNvcHkgYXJvdW5kIGhlcmUuICopXG4gIGxldCBwaHlzX3NhbWUgKHR5cGUgYSBiKSAoYSA6IGEpIChiIDogYikgPSBwaHlzX2VxdWFsIGEgKFN0ZGxpYi5PYmoubWFnaWMgYiA6IGEpXG5cbiAgbW9kdWxlIFQwIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbm9uZSA6IF8gdFxuICAgIHZhbCBzb21lIDogJ2EgLT4gJ2EgdFxuICAgIHZhbCBpc19ub25lIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgaXNfc29tZSA6IF8gdCAtPiBib29sXG4gICAgdmFsIHZhbHVlX2V4biA6ICdhIHQgLT4gJ2FcbiAgICB2YWwgdmFsdWVfdW5zYWZlIDogJ2EgdCAtPiAnYVxuICAgIHZhbCBpdGVyX3NvbWUgOiAnYSB0IC0+IGY6KCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgKydhIHRcblxuICAgICgqIEJlaW5nIGEgcG9pbnRlciwgbm8gb25lIG91dHNpZGUgdGhpcyBtb2R1bGUgY2FuIGNvbnN0cnVjdCBhIHZhbHVlIHRoYXQgaXNcbiAgICAgICBbcGh5c19zYW1lXSBhcyB0aGlzIG9uZS5cblxuICAgICAgIEl0IHdvdWxkIGJlIHNpbXBsZXIgdG8gdXNlIHRoaXMgdmFsdWUgYXMgW25vbmVdLCBidXQgd2UgdXNlIGFuIGltbWVkaWF0ZSBpbnN0ZWFkXG4gICAgICAgYmVjYXVzZSBpdCBsZXRzIHVzIGF2b2lkIGNhbWxfbW9kaWZ5IHdoZW4gc2V0dGluZyB0byBbbm9uZV0sIG1ha2luZyBjZXJ0YWluXG4gICAgICAgYmVuY2htYXJrcyBzaWduaWZpY2FudGx5IGZhc3RlciAoZS5nLiAuLi9iZW5jaC9hcnJheV9xdWV1ZS5leGUpLlxuXG4gICAgICAgdGhpcyBjb2RlIGlzIGR1cGxpY2F0ZWQgaW4gTW9wdGlvbiwgYW5kIGlmIHdlIGZpbmQgeWV0IGFub3RoZXIgcGxhY2Ugd2hlcmUgd2Ugd2FudFxuICAgICAgIGl0IHdlIHNob3VsZCByZWNvbnNpZGVyIG1ha2luZyBpdCBzaGFyZWQuICopXG4gICAgbGV0IG5vbmVfc3Vic3RpdHV0ZSA6IF8gdCA9XG4gICAgICBTdGRsaWIuT2JqLm9iaiAoU3RkbGliLk9iai5uZXdfYmxvY2sgU3RkbGliLk9iai5hYnN0cmFjdF90YWcgMSlcbiAgICA7O1xuXG4gICAgbGV0IG5vbmUgOiBfIHQgPVxuICAgICAgKCogVGhlIG51bWJlciB3YXMgcHJvZHVjZWQgYnlcbiAgICAgICAgIFs8IC9kZXYvdXJhbmRvbSB0ciAtYyAtZCAnMTIzNDU2Nzg5MGFiY2RlZicgfCBoZWFkIC1jIDE2XS5cblxuICAgICAgICAgVGhlIGlkZWEgaXMgdGhhdCBhIHJhbmRvbSBudW1iZXIgd2lsbCBoYXZlIGxvd2VyIHByb2JhYmlsaXR5IHRvIGNvbGxpZGUgd2l0aFxuICAgICAgICAgYW55dGhpbmcgdGhhbiBhbnkgbnVtYmVyIHdlIGNhbiBjaG9vc2Ugb3Vyc2VsdmVzLlxuXG4gICAgICAgICBXZSBhcmUgdXNpbmcgYSBwb2x5bW9ycGhpYyB2YXJpYW50IGluc3RlYWQgb2YgYW4gaW50ZWdlciBjb25zdGFudCBiZWNhdXNlIHRoZXJlXG4gICAgICAgICBpcyBhIGNvbXBpbGVyIGJ1ZyB3aGVyZSBpdCB3cm9uZ2x5IGFzc3VtZXMgdGhhdCB0aGUgcmVzdWx0IG9mIFtpZiBfIHRoZW4gYyBlbHNlXG4gICAgICAgICB5XSBpcyBub3QgYSBwb2ludGVyIGlmIFtjXSBpcyBhbiBpbnRlZ2VyIGNvbXBpbGUtdGltZSBjb25zdGFudC4gIFRoaXMgaXMgYmVpbmdcbiAgICAgICAgIGZpeGVkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9wdWxsLzU1NS4gIFRoZSBcIm1lbW9yeSBjb3JydXB0aW9uXCIgdGVzdFxuICAgICAgICAgYmVsb3cgZGVtb25zdHJhdGVzIHRoZSBpc3N1ZS4gICopXG4gICAgICBTdGRsaWIuT2JqLm1hZ2ljIGB4NmU4ZWUzNDc4ZTFkNzQ0OVxuICAgIDs7XG5cbiAgICBsZXQgaXNfbm9uZSB4ID0gcGh5c19lcXVhbCB4IG5vbmVcbiAgICBsZXQgaXNfc29tZSB4ID0gbm90IChwaHlzX2VxdWFsIHggbm9uZSlcblxuICAgIGxldCBzb21lICh0eXBlIGEpICh4IDogYSkgOiBhIHQgPVxuICAgICAgaWYgcGh5c19zYW1lIHggbm9uZSB0aGVuIG5vbmVfc3Vic3RpdHV0ZSBlbHNlIFN0ZGxpYi5PYmoubWFnaWMgeFxuICAgIDs7XG5cbiAgICBsZXQgdmFsdWVfdW5zYWZlICh0eXBlIGEpICh4IDogYSB0KSA6IGEgPVxuICAgICAgaWYgcGh5c19lcXVhbCB4IG5vbmVfc3Vic3RpdHV0ZSB0aGVuIFN0ZGxpYi5PYmoubWFnaWMgbm9uZSBlbHNlIFN0ZGxpYi5PYmoubWFnaWMgeFxuICAgIDs7XG5cbiAgICBsZXQgdmFsdWVfZXhuIHggPVxuICAgICAgaWYgaXNfc29tZSB4XG4gICAgICB0aGVuIHZhbHVlX3Vuc2FmZSB4XG4gICAgICBlbHNlIGZhaWx3aXRoIFwiT3B0aW9uX2FycmF5LmdldF9zb21lX2V4bjogdGhlIGVsZW1lbnQgaXMgW05vbmVdXCJcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXJfc29tZSB0IH5mID0gaWYgaXNfc29tZSB0IHRoZW4gZiAodmFsdWVfdW5zYWZlIHQpXG4gIGVuZFxuXG4gIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVDBcblxuICAgIGxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgIHwgU29tZSB4IC0+IHNvbWUgeFxuICAgIDs7XG5cbiAgICBsZXRbQGlubGluZV0gdG9fb3B0aW9uIHggPSBpZiBpc19zb21lIHggdGhlbiBTb21lICh2YWx1ZV91bnNhZmUgeCkgZWxzZSBOb25lXG4gICAgbGV0IHRvX3NleHBhYmxlID0gdG9fb3B0aW9uXG4gICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfb3B0aW9uXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgICAgOiBhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgID1cbiAgICAgIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKE9wdGlvbi50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVDFcbiAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTEgKE9wdGlvbikgKFQxKVxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIENoZWFwX29wdGlvbi50IFVuaWZvcm1fYXJyYXkudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgZnVuIF9vZl9hX18wMDFfIHhfXzAwM18gLT5cbiAgVW5pZm9ybV9hcnJheS50X29mX3NleHAgKENoZWFwX29wdGlvbi50X29mX3NleHAgX29mX2FfXzAwMV8pIHhfXzAwM19cbjs7XG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwNF8geF9fMDA1XyAtPlxuICBVbmlmb3JtX2FycmF5LnNleHBfb2ZfdCAoQ2hlYXBfb3B0aW9uLnNleHBfb2ZfdCBfb2ZfYV9fMDA0XykgeF9fMDA1X1xuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPlxuICBVbmlmb3JtX2FycmF5LnRfc2V4cF9ncmFtbWFyIChDaGVhcF9vcHRpb24udF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hcilcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBlbXB0eSA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbmxldCBjcmVhdGUgfmxlbiA9IFVuaWZvcm1fYXJyYXkuY3JlYXRlIH5sZW4gQ2hlYXBfb3B0aW9uLm5vbmVcbmxldCBpbml0IG4gfmYgPSBVbmlmb3JtX2FycmF5LmluaXQgbiB+ZjooZnVuIGkgLT4gQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiAoZiBpKSkgW0Bub250YWlsXVxubGV0IGluaXRfc29tZSBuIH5mID0gVW5pZm9ybV9hcnJheS5pbml0IG4gfmY6KGZ1biBpIC0+IENoZWFwX29wdGlvbi5zb21lIChmIGkpKSBbQG5vbnRhaWxdXG5sZXQgbGVuZ3RoID0gVW5pZm9ybV9hcnJheS5sZW5ndGhcbmxldFtAaW5saW5lXSBnZXQgdCBpID0gQ2hlYXBfb3B0aW9uLnRvX29wdGlvbiAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IGdldF9zb21lX2V4biB0IGkgPSBDaGVhcF9vcHRpb24udmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgaXNfbm9uZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IGlzX3NvbWUgdCBpID0gQ2hlYXBfb3B0aW9uLmlzX3NvbWUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBzZXQgdCBpIHggPSBVbmlmb3JtX2FycmF5LnNldCB0IGkgKENoZWFwX29wdGlvbi5vZl9vcHRpb24geClcbmxldCBzZXRfc29tZSB0IGkgeCA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLnNvbWUgeClcbmxldCBzZXRfbm9uZSB0IGkgPSBVbmlmb3JtX2FycmF5LnNldCB0IGkgQ2hlYXBfb3B0aW9uLm5vbmVcbmxldCBzd2FwIHQgaSBqID0gVW5pZm9ybV9hcnJheS5zd2FwIHQgaSBqXG5sZXQgdW5zYWZlX2dldCB0IGkgPSBDaGVhcF9vcHRpb24udG9fb3B0aW9uIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxubGV0IHVuc2FmZV9nZXRfc29tZV9leG4gdCBpID0gQ2hlYXBfb3B0aW9uLnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcblxubGV0IHVuc2FmZV9nZXRfc29tZV9hc3N1bWluZ19zb21lIHQgaSA9XG4gIENoZWFwX29wdGlvbi52YWx1ZV91bnNhZmUgKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG47O1xuXG5sZXQgdW5zYWZlX2lzX3NvbWUgdCBpID0gQ2hlYXBfb3B0aW9uLmlzX3NvbWUgKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG5sZXQgdW5zYWZlX3NldCB0IGkgeCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgKENoZWFwX29wdGlvbi5vZl9vcHRpb24geClcbmxldCB1bnNhZmVfc2V0X3NvbWUgdCBpIHggPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIChDaGVhcF9vcHRpb24uc29tZSB4KVxubGV0IHVuc2FmZV9zZXRfbm9uZSB0IGkgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIENoZWFwX29wdGlvbi5ub25lXG5cbmxldCBjbGVhciB0ID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIHVuc2FmZV9zZXRfbm9uZSB0IGlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIGlucHV0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBpbnB1dCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgaW5wdXQgaSlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXIgaW5wdXQgfmYgPSBpdGVyaSBpbnB1dCB+ZjooZnVuIChfIDogaW50KSB4IC0+IGYgeCkgW0Bub250YWlsXVxuXG5sZXQgZm9sZGkgaW5wdXQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgaXRlcmkgaW5wdXQgfmY6KGZ1biBpIGVsZW0gLT4gYWNjIDo9IGYgaSAhYWNjIGVsZW0pO1xuICAhYWNjXG47O1xuXG5sZXQgZm9sZCBpbnB1dCB+aW5pdCB+ZiA9IGZvbGRpIGlucHV0IH5pbml0IH5mOihmdW4gKF8gOiBpbnQpIGFjYyB4IC0+IGYgYWNjIHgpIFtAbm9udGFpbF1cblxuaW5jbHVkZSBJbmRleGVkX2NvbnRhaW5lci5NYWtlX2dlbiAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCBfKSB0ID0gJ2EgdFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2Egb3B0aW9uXG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgZm9sZGkgPSBgQ3VzdG9tIGZvbGRpXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgaXRlcmkgPSBgQ3VzdG9tIGl0ZXJpXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IGxlbmd0aCA9IFVuaWZvcm1fYXJyYXkubGVuZ3RoXG5cbmxldCBtYXBpIGlucHV0IH5mID1cbiAgbGV0IG91dHB1dCA9IGNyZWF0ZSB+bGVuOihsZW5ndGggaW5wdXQpIGluXG4gIGl0ZXJpIGlucHV0IH5mOihmdW4gaSBlbGVtIC0+IHVuc2FmZV9zZXQgb3V0cHV0IGkgKGYgaSBlbGVtKSk7XG4gIG91dHB1dFxuOztcblxubGV0IG1hcCBpbnB1dCB+ZiA9IG1hcGkgaW5wdXQgfmY6KGZ1biAoXyA6IGludCkgZWxlbSAtPiBmIGVsZW0pIFtAbm9udGFpbF1cblxubGV0IG1hcF9zb21lIGlucHV0IH5mID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBpbnB1dCBpblxuICBsZXQgb3V0cHV0ID0gY3JlYXRlIH5sZW4gaW5cbiAgbGV0ICgpID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IG9wdCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCBpbnB1dCBpIGluXG4gICAgICBDaGVhcF9vcHRpb24uaXRlcl9zb21lIG9wdCB+ZjooZnVuIHggLT4gdW5zYWZlX3NldF9zb21lIG91dHB1dCBpIChmIHgpKVxuICAgIGRvbmVcbiAgaW5cbiAgb3V0cHV0XG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyYXkgPSBpbml0IChBcnJheS5sZW5ndGggYXJyYXkpIH5mOihmdW4gaSAtPiBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkpXG5cbmxldCBvZl9hcnJheV9zb21lIGFycmF5ID1cbiAgaW5pdF9zb21lIChBcnJheS5sZW5ndGggYXJyYXkpIH5mOihmdW4gaSAtPiBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkpXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmluY2x1ZGUgQmxpdC5NYWtlMV9nZW5lcmljIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgY29weSA9IFVuaWZvcm1fYXJyYXkuY29weVxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVuc2FmZV9jaGVhcF9vcHRpb24gPSBDaGVhcF9vcHRpb25cbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFN0YWNrX2ludGZcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgc2ltaWxhciB0byBbRGVxdWVdIGluIHRoYXQgaXQgdXNlcyBhbiBhcnJheSBvZiBbJ2FdIGFuZFxuICAgYSBtdXRhYmxlIFtpbnRdIHRvIGluZGljYXRlIHdoYXQgaW4gdGhlIGFycmF5IGlzIHVzZWQuICBXZSBjaG9vc2UgdG8gaW1wbGVtZW50IFtTdGFja11cbiAgIGRpcmVjdGx5IHJhdGhlciB0aGFuIG9uIHRvcCBvZiBbRGVxdWVdIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiAgRS5nLiBhIHNpbXBsZVxuICAgbWljcm9iZW5jaG1hcmsgc2hvd3MgdGhhdCBwdXNoL3BvcCBpcyBhYm91dCAyMCUgZmFzdGVyLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgZWx0cyA6ICdhIE9wdGlvbl9hcnJheS50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMDFfIHsgbGVuZ3RoID0gbGVuZ3RoX18wMDNfOyBlbHRzID0gZWx0c19fMDA1XyB9IC0+XG4gIGxldCBibmRzX18wMDJfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICBsZXQgYm5kc19fMDAyXyA9XG4gICAgbGV0IGFyZ19fMDA2XyA9IE9wdGlvbl9hcnJheS5zZXhwX29mX3QgX29mX2FfXzAwMV8gZWx0c19fMDA1XyBpblxuICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbHRzXCI7IGFyZ19fMDA2XyBdIDo6IGJuZHNfXzAwMl9cbiAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gIGluXG4gIGxldCBibmRzX18wMDJfID1cbiAgICBsZXQgYXJnX18wMDRfID0gc2V4cF9vZl9pbnQgbGVuZ3RoX18wMDNfIGluXG4gICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxlbmd0aFwiOyBhcmdfXzAwNF8gXSA6OiBibmRzX18wMDJfXG4gICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICBpblxuICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAyX1xuOztcblxuW0BAQGVuZF1cblxubGV0IHNleHBfb2ZfdF9pbnRlcm5hbCA9IHNleHBfb2ZfdFxubGV0IHNleHBfb2ZfdCA9IGBSZWJvdW5kX2xhdGVyXG5sZXQgXyA9IHNleHBfb2ZfdFxubGV0IGNhcGFjaXR5IHQgPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0c1xuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hICh7IGxlbmd0aDsgZWx0cyB9IGFzIHQpIDogdW5pdCA9XG4gIHRyeVxuICAgIGFzc2VydCAoMCA8PSBsZW5ndGggJiYgbGVuZ3RoIDw9IE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyk7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICAgIGludmFyaWFudF9hIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGVsdHMgaSlcbiAgICBkb25lO1xuICAgICgqIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB1bnVzZWQgZWxlbWVudHMgYXJlIHVuc2V0IHRvIGF2b2lkIGEgc3BhY2VcbiAgICAgICBsZWFrLiAqKVxuICAgIGZvciBpID0gbGVuZ3RoIHRvIE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyAtIDEgZG9cbiAgICAgIGFzc2VydCAobm90IChPcHRpb25fYXJyYXkuaXNfc29tZSBlbHRzIGkpKVxuICAgIGRvbmVcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiU3RhY2suaW52YXJpYW50IGZhaWxlZFwiXG4gICAgICAgICBbIFwiZXhuXCIsIGV4biB8PiBFeG4uc2V4cF9vZl90OyBcInN0YWNrXCIsIHQgfD4gc2V4cF9vZl90X2ludGVybmFsIHNleHBfb2Zfb3BhcXVlIF0pXG47O1xuXG5sZXQgY3JlYXRlICh0eXBlIGEpICgpIDogYSB0ID0geyBsZW5ndGggPSAwOyBlbHRzID0gT3B0aW9uX2FycmF5LmVtcHR5IH1cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG4oKiBUaGUgb3JkZXIgaW4gd2hpY2ggZWxlbWVudHMgYXJlIHZpc2l0ZWQgaGFzIGJlZW4gY2hvc2VuIHNvIGFzIHRvIGJlIGJhY2t3YXJkc1xuICAgY29tcGF0aWJsZSB3aXRoIFtTdGRsaWIuU3RhY2tdICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAhciAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSlcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIGYgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkpXG4gIGRvbmVcbjs7XG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBtZW0gPSBDLm1lbVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IG9mX2xpc3QgKHR5cGUgYSkgKGwgOiBhIGxpc3QpID1cbiAgaWYgTGlzdC5pc19lbXB0eSBsXG4gIHRoZW4gY3JlYXRlICgpXG4gIGVsc2UgKFxuICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGVsdHMgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KDIgKiBsZW5ndGgpIGluXG4gICAgbGV0IHIgPSByZWYgbCBpblxuICAgIGZvciBpID0gbGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgICAgbWF0Y2ggIXIgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgYSA6OiBsIC0+XG4gICAgICAgIE9wdGlvbl9hcnJheS5zZXRfc29tZSBlbHRzIGkgYTtcbiAgICAgICAgciA6PSBsXG4gICAgZG9uZTtcbiAgICB7IGxlbmd0aDsgZWx0cyB9KVxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IExpc3Quc2V4cF9vZl90IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9IG9mX2xpc3QgKExpc3QudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwKVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmxldCByZXNpemUgdCBzaXplID1cbiAgbGV0IGFyciA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpzaXplIGluXG4gIE9wdGlvbl9hcnJheS5ibGl0IH5zcmM6dC5lbHRzIH5kc3Q6YXJyIH5zcmNfcG9zOjAgfmRzdF9wb3M6MCB+bGVuOnQubGVuZ3RoO1xuICB0LmVsdHMgPC0gYXJyXG47O1xuXG5sZXQgc2V0X2NhcGFjaXR5IHQgbmV3X2NhcGFjaXR5ID1cbiAgbGV0IG5ld19jYXBhY2l0eSA9IG1heCBuZXdfY2FwYWNpdHkgKGxlbmd0aCB0KSBpblxuICBpZiBuZXdfY2FwYWNpdHkgPD4gY2FwYWNpdHkgdCB0aGVuIHJlc2l6ZSB0IG5ld19jYXBhY2l0eVxuOztcblxubGV0IHB1c2ggdCBhID1cbiAgaWYgdC5sZW5ndGggPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0cyB0aGVuIHJlc2l6ZSB0ICgyICogKHQubGVuZ3RoICsgMSkpO1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5lbHRzIHQubGVuZ3RoIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHBvcF9ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSB0Lmxlbmd0aCAtIDEgaW5cbiAgbGV0IHJlc3VsdCA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuZWx0cyBpO1xuICB0Lmxlbmd0aCA8LSBpO1xuICByZXN1bHRcbjs7XG5cbmxldCBwb3BfZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgXCJTdGFjay5wb3Agb2YgZW1wdHkgc3RhY2tcIlxubGV0IHBvcCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwb3Bfbm9uZW1wdHkgdClcbmxldCBwb3BfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gRXJyb3IucmFpc2UgcG9wX2Vycm9yIGVsc2UgcG9wX25vbmVtcHR5IHRcbmxldCB0b3Bfbm9uZW1wdHkgdCA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzICh0Lmxlbmd0aCAtIDEpXG5sZXQgdG9wX2Vycm9yID0gRXJyb3Iub2Zfc3RyaW5nIFwiU3RhY2sudG9wIG9mIGVtcHR5IHN0YWNrXCJcbmxldCB0b3AgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAodG9wX25vbmVtcHR5IHQpXG5sZXQgdG9wX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIEVycm9yLnJhaXNlIHRvcF9lcnJvciBlbHNlIHRvcF9ub25lbXB0eSB0XG5sZXQgY29weSB7IGxlbmd0aDsgZWx0cyB9ID0geyBsZW5ndGg7IGVsdHMgPSBPcHRpb25fYXJyYXkuY29weSBlbHRzIH1cblxubGV0IGNsZWFyIHQgPVxuICBpZiB0Lmxlbmd0aCA+IDBcbiAgdGhlbiAoXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuZWx0cyBpXG4gICAgZG9uZTtcbiAgICB0Lmxlbmd0aCA8LSAwKVxuOztcblxubGV0IHVudGlsX2VtcHR5IHQgZiA9XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgaWYgdC5sZW5ndGggPiAwXG4gICAgdGhlbiAoXG4gICAgICBmIChwb3Bfbm9uZW1wdHkgdCk7XG4gICAgICBsb29wICgpKVxuICBpblxuICBsb29wICgpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgIG1hdGNoIGYgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBwdXNoIHRfcmVzdWx0IHhcbiAgZG9uZTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgbGV0IHggPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpIGluXG4gICAgaWYgZiB4IHRoZW4gcHVzaCB0X3Jlc3VsdCB4XG4gIGRvbmU7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB3cml0ZV9pbmRleCA9IHJlZiAwIGluXG4gIEV4bi5wcm90ZWN0XG4gICAgfmY6KGZ1biAoKSAtPlxuICAgICAgZm9yIHJlYWRfaW5kZXggPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgICBsZXQgeCA9IE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSB0LmVsdHMgcmVhZF9pbmRleCBpblxuICAgICAgICBpZiBmIHhcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgaWYgIXdyaXRlX2luZGV4IDwgcmVhZF9pbmRleFxuICAgICAgICAgIHRoZW4gT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0LmVsdHMgIXdyaXRlX2luZGV4IHg7XG4gICAgICAgICAgaW5jciB3cml0ZV9pbmRleClcbiAgICAgIGRvbmUpXG4gICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgZm9yIGkgPSAhd3JpdGVfaW5kZXggdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmUgdC5lbHRzIGlcbiAgICAgIGRvbmU7XG4gICAgICB0Lmxlbmd0aCA8LSAhd3JpdGVfaW5kZXgpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBzaW5nbGV0b24geCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIHB1c2ggdCB4O1xuICB0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFRoaXMgaXMgbGlmdGVkIG91dCBvZiBbTV0gYmVjYXVzZSBbU291cmNlX2NvZGVfcG9zaXRpb24wXSBleHBvcnRzIFtTdHJpbmcwXVxuICAgYXMgW1N0cmluZ10sIHdoaWNoIGRvZXMgbm90IGV4cG9ydCBhIGhhc2ggZnVuY3Rpb24uICopXG5sZXQgaGFzaF9vdmVycmlkZSB7IFN0ZGxpYi5MZXhpbmcucG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSA9XG4gIFN0cmluZy5oYXNoIHBvc19mbmFtZVxuICBseG9yIEludC5oYXNoIHBvc19sbnVtXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2JvbFxuICBseG9yIEludC5oYXNoIHBvc19jbnVtXG47O1xuXG5tb2R1bGUgTSA9IHN0cnVjdFxuICBpbmNsdWRlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxuXG4gIGxldCBoYXNoID0gaGFzaF9vdmVycmlkZVxuZW5kXG5cbmluY2x1ZGUgTVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoTSlcblxubGV0IG9mX3BvcyAocG9zX2ZuYW1lLCBwb3NfbG51bSwgcG9zX2NudW0sIF8pID1cbiAgeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfY251bTsgcG9zX2JvbCA9IDAgfVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmVnXG4gICAgfCBaZXJvXG4gICAgfCBQb3NcbiAgICB8IE5hblxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoLCBlbnVtZXJhdGVdXG5cbiAgbGV0IHRfb2Zfc2V4cCA9XG4gICAgKGxldCBlcnJvcl9zb3VyY2VfXzAwM18gPSBcInNpZ25fb3JfbmFuLm1sLlQudFwiIGluXG4gICAgIGZ1bmN0aW9uXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgLT4gTmVnXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgLT4gUG9zXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgLT4gTmFuXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDJfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICB8IHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgTmVnIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5lZ1wiXG4gICAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgICB8IFBvcyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQb3NcIlxuICAgICAgfCBOYW4gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmFuXCJcbiAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICB7IHVudHlwZWQgPVxuICAgICAgICBWYXJpYW50XG4gICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiTmVnXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlplcm9cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiUG9zXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIk5hblwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICAgIHwgTmVnIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICAgIHwgWmVybyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgICB8IFBvcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICB8IE5hbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDNcbiAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgOztcblxuICBsZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgYXJnID1cbiAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gICAgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgYWxsID0gKFsgTmVnOyBaZXJvOyBQb3M7IE5hbiBdIDogdCBsaXN0KVxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG9mX3N0cmluZyBzID0gdF9vZl9zZXhwIChzZXhwX29mX3N0cmluZyBzKVxuICBsZXQgdG9fc3RyaW5nIHQgPSBzdHJpbmdfb2Zfc2V4cCAoc2V4cF9vZl90IHQpXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5TaWduX29yX25hblwiXG5lbmRcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogVC50KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogVC50KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogVC50KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogVC50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogVC50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IFQudCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogVC50KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IFQudCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBULnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoVClcblxuKCogT3BlbiBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBvZl9zaWduID0gZnVuY3Rpb25cbiAgfCBTaWduLk5lZyAtPiBOZWdcbiAgfCBTaWduLlplcm8gLT4gWmVyb1xuICB8IFNpZ24uUG9zIC0+IFBvc1xuOztcblxubGV0IHRvX3NpZ25fZXhuID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gU2lnbi5OZWdcbiAgfCBaZXJvIC0+IFNpZ24uWmVyb1xuICB8IFBvcyAtPiBTaWduLlBvc1xuICB8IE5hbiAtPiBpbnZhbGlkX2FyZyBcIkJhc2UuU2lnbl9vcl9uYW4udG9fc2lnbl9leG46IE5hblwiXG47O1xuXG5sZXQgb2ZfaW50IG4gPSBvZl9zaWduIChTaWduLm9mX2ludCBuKVxubGV0IHRvX2ludF9leG4gdCA9IFNpZ24udG9faW50ICh0b19zaWduX2V4biB0KVxuXG5sZXQgZmxpcCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFBvc1xuICB8IFplcm8gLT4gWmVyb1xuICB8IFBvcyAtPiBOZWdcbiAgfCBOYW4gLT4gTmFuXG47O1xuXG5sZXQgKCAqICkgdCB0JyA9XG4gIG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOYW4sIF8gfCBfLCBOYW4gLT4gTmFuXG4gIHwgXyAtPiBvZl9zaWduIChTaWduLiggKiApICh0b19zaWduX2V4biB0KSAodG9fc2lnbl9leG4gdCcpKVxuOztcblxubGV0IHRvX3N0cmluZ19odW0gPSBmdW5jdGlvblxuICB8IE5lZyAtPiBcIm5lZ2F0aXZlXCJcbiAgfCBaZXJvIC0+IFwiemVyb1wiXG4gIHwgUG9zIC0+IFwicG9zaXRpdmVcIlxuICB8IE5hbiAtPiBcIm5vdC1hLW51bWJlclwiXG47O1xuXG4oKiBJbmNsdWRlIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyIGFueSBmdW5jdG9yIGFwcGxpY2F0aW9ucyB0aGF0XG4gICBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9XG4gIHwgSW5jbCBvZiAnYVxuICB8IEV4Y2wgb2YgJ2FcbiAgfCBVbmJvdW5kZWRcbltAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGFsbCA6ICdhLiAnYSBsaXN0IC0+ICdhIHQgbGlzdCA9XG4gIGZ1biBfYWxsX29mX2EgLT5cbiAgUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5hcHBlbmRcbiAgICAobGV0IHJlYyBtYXAgbCBhY2MgPVxuICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgIHwgW10gLT4gUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5yZXYgYWNjXG4gICAgICAgfCBlbnVtZXJhdGVfXzAwMV8gOjogbCAtPiBtYXAgbCAoSW5jbCBlbnVtZXJhdGVfXzAwMV8gOjogYWNjKVxuICAgICBpblxuICAgICBtYXAgX2FsbF9vZl9hIFtdKVxuICAgIChQcHhfZW51bWVyYXRlX2xpYi5MaXN0LmFwcGVuZFxuICAgICAgIChsZXQgcmVjIG1hcCBsIGFjYyA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LnJldiBhY2NcbiAgICAgICAgICB8IGVudW1lcmF0ZV9fMDAyXyA6OiBsIC0+IG1hcCBsIChFeGNsIGVudW1lcmF0ZV9fMDAyXyA6OiBhY2MpXG4gICAgICAgIGluXG4gICAgICAgIG1hcCBfYWxsX29mX2EgW10pXG4gICAgICAgWyBVbmJvdW5kZWQgXSlcbjs7XG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICBmdW4gKHR5cGUgYV9fMDE4XykgOiAoKFNleHBsaWIwLlNleHAudCAtPiBhX18wMThfKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDE4XyB0KSAtPlxuICBsZXQgZXJyb3Jfc291cmNlX18wMDZfID0gXCJtYXliZV9ib3VuZC5tbC50XCIgaW5cbiAgZnVuIF9vZl9hX18wMDNfIC0+IGZ1bmN0aW9uXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiaW5jbFwiIHwgXCJJbmNsXCIpIGFzIF90YWdfXzAwOV8pIDo6IHNleHBfYXJnc19fMDEwXykgYXNcbiAgICAgIF9zZXhwX18wMDhfIC0+XG4gICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTBfIHdpdGhcbiAgICAgICB8IFsgYXJnMF9fMDExXyBdIC0+XG4gICAgICAgICBsZXQgcmVzMF9fMDEyXyA9IF9vZl9hX18wMDNfIGFyZzBfXzAxMV8gaW5cbiAgICAgICAgIEluY2wgcmVzMF9fMDEyX1xuICAgICAgIHwgXyAtPlxuICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNl9cbiAgICAgICAgICAgX3RhZ19fMDA5X1xuICAgICAgICAgICBfc2V4cF9fMDA4XylcbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJleGNsXCIgfCBcIkV4Y2xcIikgYXMgX3RhZ19fMDE0XykgOjogc2V4cF9hcmdzX18wMTVfKSBhc1xuICAgICAgX3NleHBfXzAxM18gLT5cbiAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxNV8gd2l0aFxuICAgICAgIHwgWyBhcmcwX18wMTZfIF0gLT5cbiAgICAgICAgIGxldCByZXMwX18wMTdfID0gX29mX2FfXzAwM18gYXJnMF9fMDE2XyBpblxuICAgICAgICAgRXhjbCByZXMwX18wMTdfXG4gICAgICAgfCBfIC0+XG4gICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA2X1xuICAgICAgICAgICBfdGFnX18wMTRfXG4gICAgICAgICAgIF9zZXhwX18wMTNfKVxuICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInVuYm91bmRlZFwiIHwgXCJVbmJvdW5kZWRcIikgLT4gVW5ib3VuZGVkXG4gICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5jbFwiIHwgXCJJbmNsXCIpIGFzIHNleHBfXzAwN18gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJleGNsXCIgfCBcIkV4Y2xcIikgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwidW5ib3VuZGVkXCIgfCBcIlVuYm91bmRlZFwiKSA6OiBfKSBhc1xuICAgICAgc2V4cF9fMDA3XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNV8gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNV8gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgfCBzZXhwX18wMDVfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbjs7XG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gKHR5cGUgYV9fMDI0XykgOiAoKGFfXzAyNF8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiBhX18wMjRfIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICBmdW4gX29mX2FfXzAxOV8gLT4gZnVuY3Rpb25cbiAgICB8IEluY2wgYXJnMF9fMDIwXyAtPlxuICAgICAgbGV0IHJlczBfXzAyMV8gPSBfb2ZfYV9fMDE5XyBhcmcwX18wMjBfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJJbmNsXCI7IHJlczBfXzAyMV8gXVxuICAgIHwgRXhjbCBhcmcwX18wMjJfIC0+XG4gICAgICBsZXQgcmVzMF9fMDIzXyA9IF9vZl9hX18wMTlfIGFyZzBfXzAyMl8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkV4Y2xcIjsgcmVzMF9fMDIzXyBdXG4gICAgfCBVbmJvdW5kZWQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5ib3VuZGVkXCJcbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkluY2xcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkV4Y2xcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJVbmJvdW5kZWRcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxuW0BAQGVuZF1cblxudHlwZSBpbnRlcnZhbF9jb21wYXJpc29uID1cbiAgfCBCZWxvd19sb3dlcl9ib3VuZFxuICB8IEluX3JhbmdlXG4gIHwgQWJvdmVfdXBwZXJfYm91bmRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2hdXG5cbmxldCBpbnRlcnZhbF9jb21wYXJpc29uX29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDI3XyA9IFwibWF5YmVfYm91bmQubWwuaW50ZXJ2YWxfY29tcGFyaXNvblwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiYmVsb3dfbG93ZXJfYm91bmRcIiB8IFwiQmVsb3dfbG93ZXJfYm91bmRcIikgLT4gQmVsb3dfbG93ZXJfYm91bmRcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImluX3JhbmdlXCIgfCBcIkluX3JhbmdlXCIpIC0+IEluX3JhbmdlXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJhYm92ZV91cHBlcl9ib3VuZFwiIHwgXCJBYm92ZV91cHBlcl9ib3VuZFwiKSAtPiBBYm92ZV91cHBlcl9ib3VuZFxuICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImJlbG93X2xvd2VyX2JvdW5kXCIgfCBcIkJlbG93X2xvd2VyX2JvdW5kXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbl9yYW5nZVwiIHwgXCJJbl9yYW5nZVwiKSA6OiBfKSBhcyBzZXhwX18wMjhfXG4gICAgIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJhYm92ZV91cHBlcl9ib3VuZFwiIHwgXCJBYm92ZV91cHBlcl9ib3VuZFwiKSA6OiBfKSBhcyBzZXhwX18wMjhfXG4gICAgIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMjZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDI2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgfCBzZXhwX18wMjZfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgICAgICAgICAgICAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiBpbnRlcnZhbF9jb21wYXJpc29uKVxuOztcblxubGV0IHNleHBfb2ZfaW50ZXJ2YWxfY29tcGFyaXNvbiA9XG4gIChmdW5jdGlvblxuICAgIHwgQmVsb3dfbG93ZXJfYm91bmQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiQmVsb3dfbG93ZXJfYm91bmRcIlxuICAgIHwgSW5fcmFuZ2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiSW5fcmFuZ2VcIlxuICAgIHwgQWJvdmVfdXBwZXJfYm91bmQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiQWJvdmVfdXBwZXJfYm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbmxldCAoaW50ZXJ2YWxfY29tcGFyaXNvbl9zZXhwX2dyYW1tYXIgOiBpbnRlcnZhbF9jb21wYXJpc29uIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiQmVsb3dfbG93ZXJfYm91bmRcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkluX3JhbmdlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJBYm92ZV91cHBlcl9ib3VuZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZV9pbnRlcnZhbF9jb21wYXJpc29uID1cbiAgKFN0ZGxpYi5jb21wYXJlIDogaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IGludClcbjs7XG5cbmxldCAoaGFzaF9mb2xkX2ludGVydmFsX2NvbXBhcmlzb24gOlxuICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgfCBJbl9yYW5nZSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaF9pbnRlcnZhbF9jb21wYXJpc29uIDogaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX2ludGVydmFsX2NvbXBhcmlzb24gaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBJbmNsIGluY2wgLT4gSW5jbCAoZiBpbmNsKVxuICB8IEV4Y2wgZXhjbCAtPiBFeGNsIChmIGV4Y2wpXG4gIHwgVW5ib3VuZGVkIC0+IFVuYm91bmRlZFxuOztcblxubGV0IGlzX2xvd2VyX2JvdW5kIHQgfm9mXzphIH5jb21wYXJlID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgSW5jbCBpbmNsIC0+IGNvbXBhcmUgaW5jbCBhIDw9IDBcbiAgfCBFeGNsIGV4Y2wgLT4gY29tcGFyZSBleGNsIGEgPCAwXG4gIHwgVW5ib3VuZGVkIC0+IHRydWVcbjs7XG5cbmxldCBpc191cHBlcl9ib3VuZCB0IH5vZl86YSB+Y29tcGFyZSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEluY2wgaW5jbCAtPiBjb21wYXJlIGEgaW5jbCA8PSAwXG4gIHwgRXhjbCBleGNsIC0+IGNvbXBhcmUgYSBleGNsIDwgMFxuICB8IFVuYm91bmRlZCAtPiB0cnVlXG47O1xuXG5sZXQgYm91bmRzX2Nyb3NzZWQgfmxvd2VyIH51cHBlciB+Y29tcGFyZSA9XG4gIG1hdGNoIGxvd2VyIHdpdGhcbiAgfCBVbmJvdW5kZWQgLT4gZmFsc2VcbiAgfCBJbmNsIGxvd2VyIHwgRXhjbCBsb3dlciAtPlxuICAgIChtYXRjaCB1cHBlciB3aXRoXG4gICAgIHwgVW5ib3VuZGVkIC0+IGZhbHNlXG4gICAgIHwgSW5jbCB1cHBlciB8IEV4Y2wgdXBwZXIgLT4gY29tcGFyZSBsb3dlciB1cHBlciA+IDApXG47O1xuXG5sZXQgY2hlY2tfaW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgfmNvbXBhcmUgPVxuICBpZiBib3VuZHNfY3Jvc3NlZCB+bG93ZXIgfnVwcGVyIH5jb21wYXJlXG4gIHRoZW4gZmFpbHdpdGggXCJNYXliZV9ib3VuZC5jb21wYXJlX3RvX2ludGVydmFsX2V4bjogbG93ZXIgYm91bmQgPiB1cHBlciBib3VuZFwiXG47O1xuXG5sZXQgY29tcGFyZV90b19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciBhIH5jb21wYXJlID1cbiAgY2hlY2tfaW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgfmNvbXBhcmU7XG4gIGlmIG5vdCAoaXNfbG93ZXJfYm91bmQgbG93ZXIgfm9mXzphIH5jb21wYXJlKVxuICB0aGVuIEJlbG93X2xvd2VyX2JvdW5kXG4gIGVsc2UgaWYgbm90IChpc191cHBlcl9ib3VuZCB1cHBlciB+b2ZfOmEgfmNvbXBhcmUpXG4gIHRoZW4gQWJvdmVfdXBwZXJfYm91bmRcbiAgZWxzZSBJbl9yYW5nZVxuOztcblxubGV0IGludGVydmFsX2NvbnRhaW5zX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgPVxuICBtYXRjaCBjb21wYXJlX3RvX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgd2l0aFxuICB8IEluX3JhbmdlIC0+IHRydWVcbiAgfCBCZWxvd19sb3dlcl9ib3VuZCB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+IGZhbHNlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBUXG5cbm1vZHVsZSBPcl9kdXBsaWNhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICBbIGBPayBvZiAnYVxuICAgIHwgYER1cGxpY2F0ZVxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDAxXyBiX18wMDJfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMDFfLCBiX18wMDJfIHdpdGhcbiAgICAgIHwgYE9rIF9sZWZ0X18wMDNfLCBgT2sgX3JpZ2h0X18wMDRfIC0+IF9jbXBfX2EgX2xlZnRfXzAwM18gX3JpZ2h0X18wMDRfXG4gICAgICB8IGBEdXBsaWNhdGUsIGBEdXBsaWNhdGUgLT4gMFxuICAgICAgfCB4LCB5IC0+IFN0ZGxpYi5jb21wYXJlIHggeSlcbiAgOztcblxuICBsZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMDVfIGJfXzAwNl8gLT5cbiAgICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDA1XyBiX18wMDZfXG4gICAgICB0aGVuIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhX18wMDVfLCBiX18wMDZfIHdpdGhcbiAgICAgICAgfCBgT2sgX2xlZnRfXzAwN18sIGBPayBfcmlnaHRfXzAwOF8gLT4gX2NtcF9fYSBfbGVmdF9fMDA3XyBfcmlnaHRfXzAwOF9cbiAgICAgICAgfCBgRHVwbGljYXRlLCBgRHVwbGljYXRlIC0+IHRydWVcbiAgICAgICAgfCB4LCB5IC0+IFN0ZGxpYi4oID0gKSB4IHkpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuIF9vZl9hX18wMDlfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBPayB2X18wMTBfIC0+IFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IF9vZl9hX18wMDlfIHZfXzAxMF8gXVxuICAgICAgfCBgRHVwbGljYXRlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkR1cGxpY2F0ZVwiXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gJ3pcbmVuZFxuXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gY29tcGFyYXRvcjooJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICd6XG5lbmRcblxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gc3RydWN0XG4gIHR5cGUgKCdrZXksICdjbXAsICd6KSB0ID0gKCdrZXksICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ3pcbmVuZFxuXG5tb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOlxuICAgICdrICd2LiAoJ2sgLT4gJ2sgLT4gaW50KSAtPiAoJ3YgLT4gJ3YgLT4gaW50KSAtPiAoJ2ssICd2KSB0IC0+ICgnaywgJ3YpIHQgLT4gaW50XG4gICAgPVxuICAgIGZ1biBfY21wX19rIF9jbXBfX3YgYV9fMDExXyBiX18wMTJfIC0+XG4gICAgbGV0IHRfXzAxM18sIHRfXzAxNF8gPSBhX18wMTFfIGluXG4gICAgbGV0IHRfXzAxNV8sIHRfXzAxNl8gPSBiX18wMTJfIGluXG4gICAgbWF0Y2ggX2NtcF9fayB0X18wMTNfIHRfXzAxNV8gd2l0aFxuICAgIHwgMCAtPlxuICAgICAgaWYgU3RkbGliLiggPT0gKSB0X18wMTRfIHRfXzAxNl9cbiAgICAgIHRoZW4gMFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHRfXzAxNF8sIHRfXzAxNl8gd2l0aFxuICAgICAgICB8IGBMZWZ0IF9sZWZ0X18wMTdfLCBgTGVmdCBfcmlnaHRfXzAxOF8gLT4gX2NtcF9fdiBfbGVmdF9fMDE3XyBfcmlnaHRfXzAxOF9cbiAgICAgICAgfCBgUmlnaHQgX2xlZnRfXzAxOV8sIGBSaWdodCBfcmlnaHRfXzAyMF8gLT4gX2NtcF9fdiBfbGVmdF9fMDE5XyBfcmlnaHRfXzAyMF9cbiAgICAgICAgfCBgVW5lcXVhbCBfbGVmdF9fMDIxXywgYFVuZXF1YWwgX3JpZ2h0X18wMjJfIC0+XG4gICAgICAgICAgbGV0IHRfXzAyM18sIHRfXzAyNF8gPSBfbGVmdF9fMDIxXyBpblxuICAgICAgICAgIGxldCB0X18wMjVfLCB0X18wMjZfID0gX3JpZ2h0X18wMjJfIGluXG4gICAgICAgICAgKG1hdGNoIF9jbXBfX3YgdF9fMDIzXyB0X18wMjVfIHdpdGhcbiAgICAgICAgICAgfCAwIC0+IF9jbXBfX3YgdF9fMDI0XyB0X18wMjZfXG4gICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICB8IHgsIHkgLT4gU3RkbGliLmNvbXBhcmUgeCB5KVxuICAgIHwgbiAtPiBuXG4gIDs7XG5cbiAgbGV0IGVxdWFsIDpcbiAgICAnayAndi5cbiAgICAoJ2sgLT4gJ2sgLT4gYm9vbCkgLT4gKCd2IC0+ICd2IC0+IGJvb2wpIC0+ICgnaywgJ3YpIHQgLT4gKCdrLCAndikgdCAtPiBib29sXG4gICAgPVxuICAgIGZ1biBfY21wX19rIF9jbXBfX3YgYV9fMDI3XyBiX18wMjhfIC0+XG4gICAgICBsZXQgdF9fMDI5XywgdF9fMDMwXyA9IGFfXzAyN18gaW5cbiAgICAgIGxldCB0X18wMzFfLCB0X18wMzJfID0gYl9fMDI4XyBpblxuICAgICAgU3RkbGliLiggJiYgKVxuICAgICAgICAoX2NtcF9fayB0X18wMjlfIHRfXzAzMV8pXG4gICAgICAgIChpZiBTdGRsaWIuKCA9PSApIHRfXzAzMF8gdF9fMDMyX1xuICAgICAgICAgdGhlbiB0cnVlXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbWF0Y2ggdF9fMDMwXywgdF9fMDMyXyB3aXRoXG4gICAgICAgICAgIHwgYExlZnQgX2xlZnRfXzAzM18sIGBMZWZ0IF9yaWdodF9fMDM0XyAtPiBfY21wX192IF9sZWZ0X18wMzNfIF9yaWdodF9fMDM0X1xuICAgICAgICAgICB8IGBSaWdodCBfbGVmdF9fMDM1XywgYFJpZ2h0IF9yaWdodF9fMDM2XyAtPiBfY21wX192IF9sZWZ0X18wMzVfIF9yaWdodF9fMDM2X1xuICAgICAgICAgICB8IGBVbmVxdWFsIF9sZWZ0X18wMzdfLCBgVW5lcXVhbCBfcmlnaHRfXzAzOF8gLT5cbiAgICAgICAgICAgICBsZXQgdF9fMDM5XywgdF9fMDQwXyA9IF9sZWZ0X18wMzdfIGluXG4gICAgICAgICAgICAgbGV0IHRfXzA0MV8sIHRfXzA0Ml8gPSBfcmlnaHRfXzAzOF8gaW5cbiAgICAgICAgICAgICBTdGRsaWIuKCAmJiApIChfY21wX192IHRfXzAzOV8gdF9fMDQxXykgKF9jbXBfX3YgdF9fMDQwXyB0X18wNDJfKVxuICAgICAgICAgICB8IHgsIHkgLT4gU3RkbGliLiggPSApIHggeSkpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6XG4gICAgJ2sgJ3YuXG4gICAgKFNleHBsaWIwLlNleHAudCAtPiAnaylcbiAgICAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICd2KVxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICA9XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDU3XyA9IFwibWFwX2ludGYubWwuU3ltbWV0cmljX2RpZmZfZWxlbWVudC50XCIgaW5cbiAgICBmdW4gX29mX2tfXzA0M18gX29mX3ZfXzA0NF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFsgYXJnMF9fMDY3XzsgYXJnMV9fMDY4XyBdIC0+XG4gICAgICAgIGxldCByZXMwX18wNjlfID0gX29mX2tfXzA0M18gYXJnMF9fMDY3X1xuICAgICAgICBhbmQgcmVzMV9fMDcwXyA9XG4gICAgICAgICAgbGV0IHNleHBfXzA2Nl8gPSBhcmcxX18wNjhfIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBtYXRjaCBzZXhwX18wNjZfIHdpdGhcbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIGF0b21fXzA0N18gYXMgX3NleHBfXzA0OV8gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGF0b21fXzA0N18gd2l0aFxuICAgICAgICAgICAgICAgfCBcIkxlZnRcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBcIlJpZ2h0XCIgLT5cbiAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzA1N18gX3NleHBfXzA0OV9cbiAgICAgICAgICAgICAgIHwgXCJVbmVxdWFsXCIgLT5cbiAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzA1N18gX3NleHBfXzA0OV9cbiAgICAgICAgICAgICAgIHwgXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iubm9fdmFyaWFudF9tYXRjaCAoKSlcbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gYXRvbV9fMDQ3XyA6OiBzZXhwX2FyZ3NfXzA1MF8pIGFzXG4gICAgICAgICAgICAgIF9zZXhwX18wNDlfIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBhdG9tX18wNDdfIHdpdGhcbiAgICAgICAgICAgICAgIHwgXCJMZWZ0XCIgYXMgX3RhZ19fMDYzXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNTBfIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgWyBhcmcwX18wNjRfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA2NV8gPSBfb2Zfdl9fMDQ0XyBhcmcwX18wNjRfIGluXG4gICAgICAgICAgICAgICAgICAgIGBMZWZ0IHJlczBfXzA2NV9cbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgX3RhZ19fMDYzX1xuICAgICAgICAgICAgICAgICAgICAgIF9zZXhwX18wNDlfKVxuICAgICAgICAgICAgICAgfCBcIlJpZ2h0XCIgYXMgX3RhZ19fMDYwXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNTBfIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgWyBhcmcwX18wNjFfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA2Ml8gPSBfb2Zfdl9fMDQ0XyBhcmcwX18wNjFfIGluXG4gICAgICAgICAgICAgICAgICAgIGBSaWdodCByZXMwX18wNjJfXG4gICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgIF90YWdfXzA2MF9cbiAgICAgICAgICAgICAgICAgICAgICBfc2V4cF9fMDQ5XylcbiAgICAgICAgICAgICAgIHwgXCJVbmVxdWFsXCIgYXMgX3RhZ19fMDUxXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wNTBfIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgWyBhcmcwX18wNThfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA1OV8gPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFyZzBfXzA1OF8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFsgYXJnMF9fMDUyXzsgYXJnMV9fMDUzXyBdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDU0XyA9IF9vZl92X18wNDRfIGFyZzBfXzA1Ml9cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCByZXMxX18wNTVfID0gX29mX3ZfXzA0NF8gYXJnMV9fMDUzXyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzMF9fMDU0XywgcmVzMV9fMDU1X1xuICAgICAgICAgICAgICAgICAgICAgIHwgc2V4cF9fMDU2XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXhwX18wNTZfXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGBVbmVxdWFsIHJlczBfXzA1OV9cbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgX3RhZ19fMDUxX1xuICAgICAgICAgICAgICAgICAgICAgIF9zZXhwX18wNDlfKVxuICAgICAgICAgICAgICAgfCBfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5ub192YXJpYW50X21hdGNoICgpKVxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzA0OF8gLT5cbiAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICBzZXhwX18wNDhfXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wNDhfIC0+XG4gICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICBzZXhwX18wNDhfXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2ggLT5cbiAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5ub19tYXRjaGluZ192YXJpYW50X2ZvdW5kXG4gICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICBzZXhwX18wNjZfXG4gICAgICAgIGluXG4gICAgICAgIHJlczBfXzA2OV8sIHJlczFfXzA3MF9cbiAgICAgIHwgc2V4cF9fMDcxXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGVycm9yX3NvdXJjZV9fMDU3XyAyIHNleHBfXzA3MV9cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnayAndi5cbiAgICAoJ2sgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgndiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2tfXzA3Ml8gX29mX3ZfXzA3M18gKGFyZzBfXzA4MV8sIGFyZzFfXzA4Ml8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDgzXyA9IF9vZl9rX18wNzJfIGFyZzBfXzA4MV9cbiAgICAgIGFuZCByZXMxX18wODRfID1cbiAgICAgICAgbWF0Y2ggYXJnMV9fMDgyXyB3aXRoXG4gICAgICAgIHwgYExlZnQgdl9fMDc0XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkxlZnRcIjsgX29mX3ZfXzA3M18gdl9fMDc0XyBdXG4gICAgICAgIHwgYFJpZ2h0IHZfXzA3NV8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJSaWdodFwiOyBfb2Zfdl9fMDczXyB2X18wNzVfIF1cbiAgICAgICAgfCBgVW5lcXVhbCB2X18wNzZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlVuZXF1YWxcIlxuICAgICAgICAgICAgOyAobGV0IGFyZzBfXzA3N18sIGFyZzFfXzA3OF8gPSB2X18wNzZfIGluXG4gICAgICAgICAgICAgICBsZXQgcmVzMF9fMDc5XyA9IF9vZl92X18wNzNfIGFyZzBfXzA3N19cbiAgICAgICAgICAgICAgIGFuZCByZXMxX18wODBfID0gX29mX3ZfXzA3M18gYXJnMV9fMDc4XyBpblxuICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMDc5XzsgcmVzMV9fMDgwXyBdKVxuICAgICAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzA4M187IHJlczFfXzA4NF8gXVxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6XG4gICAgJ2sgJ3YuXG4gICAgJ2sgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnaywgJ3YpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8na19zZXhwX2dyYW1tYXIgXyd2X3NleHBfZ3JhbW1hciAtPlxuICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICBMaXN0XG4gICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgKCBfJ2tfc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgICAgICwgQ29uc1xuICAgICAgICAgICAgICAgICAgICggVmFyaWFudFxuICAgICAgICAgICAgICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9IENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9IENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiVW5lcXVhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIENvbnMgKF8ndl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBFbXB0eSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICwgRW1wdHkgKSApKVxuICAgICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIE1lcmdlX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2xlZnQsICdyaWdodCkgdCA9XG4gICAgWyBgTGVmdCBvZiAnbGVmdFxuICAgIHwgYFJpZ2h0IG9mICdyaWdodFxuICAgIHwgYEJvdGggb2YgJ2xlZnQgKiAncmlnaHRcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2xlZnQgJ3JpZ2h0LlxuICAgICgnbGVmdCAtPiAnbGVmdCAtPiBpbnQpXG4gICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gaW50KVxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2xlZnQgX2NtcF9fcmlnaHQgYV9fMDg1XyBiX18wODZfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wODVfIGJfXzA4Nl9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzA4NV8sIGJfXzA4Nl8gd2l0aFxuICAgICAgfCBgTGVmdCBfbGVmdF9fMDg3XywgYExlZnQgX3JpZ2h0X18wODhfIC0+IF9jbXBfX2xlZnQgX2xlZnRfXzA4N18gX3JpZ2h0X18wODhfXG4gICAgICB8IGBSaWdodCBfbGVmdF9fMDg5XywgYFJpZ2h0IF9yaWdodF9fMDkwXyAtPiBfY21wX19yaWdodCBfbGVmdF9fMDg5XyBfcmlnaHRfXzA5MF9cbiAgICAgIHwgYEJvdGggX2xlZnRfXzA5MV8sIGBCb3RoIF9yaWdodF9fMDkyXyAtPlxuICAgICAgICBsZXQgdF9fMDkzXywgdF9fMDk0XyA9IF9sZWZ0X18wOTFfIGluXG4gICAgICAgIGxldCB0X18wOTVfLCB0X18wOTZfID0gX3JpZ2h0X18wOTJfIGluXG4gICAgICAgIChtYXRjaCBfY21wX19sZWZ0IHRfXzA5M18gdF9fMDk1XyB3aXRoXG4gICAgICAgICB8IDAgLT4gX2NtcF9fcmlnaHQgdF9fMDk0XyB0X18wOTZfXG4gICAgICAgICB8IG4gLT4gbilcbiAgICAgIHwgeCwgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHkpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGJvb2wpXG4gICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gYm9vbClcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gYm9vbFxuICAgID1cbiAgICBmdW4gX2NtcF9fbGVmdCBfY21wX19yaWdodCBhX18wOTdfIGJfXzA5OF8gLT5cbiAgICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDk3XyBiX18wOThfXG4gICAgICB0aGVuIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhX18wOTdfLCBiX18wOThfIHdpdGhcbiAgICAgICAgfCBgTGVmdCBfbGVmdF9fMDk5XywgYExlZnQgX3JpZ2h0X18xMDBfIC0+IF9jbXBfX2xlZnQgX2xlZnRfXzA5OV8gX3JpZ2h0X18xMDBfXG4gICAgICAgIHwgYFJpZ2h0IF9sZWZ0X18xMDFfLCBgUmlnaHQgX3JpZ2h0X18xMDJfIC0+IF9jbXBfX3JpZ2h0IF9sZWZ0X18xMDFfIF9yaWdodF9fMTAyX1xuICAgICAgICB8IGBCb3RoIF9sZWZ0X18xMDNfLCBgQm90aCBfcmlnaHRfXzEwNF8gLT5cbiAgICAgICAgICBsZXQgdF9fMTA1XywgdF9fMTA2XyA9IF9sZWZ0X18xMDNfIGluXG4gICAgICAgICAgbGV0IHRfXzEwN18sIHRfXzEwOF8gPSBfcmlnaHRfXzEwNF8gaW5cbiAgICAgICAgICBTdGRsaWIuKCAmJiApIChfY21wX19sZWZ0IHRfXzEwNV8gdF9fMTA3XykgKF9jbXBfX3JpZ2h0IHRfXzEwNl8gdF9fMTA4XylcbiAgICAgICAgfCB4LCB5IC0+IFN0ZGxpYi4oID0gKSB4IHkpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2xlZnQgJ3JpZ2h0LlxuICAgICgnbGVmdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdyaWdodCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuIF9vZl9sZWZ0X18xMDlfIF9vZl9yaWdodF9fMTEwXyAtPiBmdW5jdGlvblxuICAgICAgfCBgTGVmdCB2X18xMTFfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkxlZnRcIjsgX29mX2xlZnRfXzEwOV8gdl9fMTExXyBdXG4gICAgICB8IGBSaWdodCB2X18xMTJfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IF9vZl9yaWdodF9fMTEwXyB2X18xMTJfIF1cbiAgICAgIHwgYEJvdGggdl9fMTEzXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkJvdGhcIlxuICAgICAgICAgIDsgKGxldCBhcmcwX18xMTRfLCBhcmcxX18xMTVfID0gdl9fMTEzXyBpblxuICAgICAgICAgICAgIGxldCByZXMwX18xMTZfID0gX29mX2xlZnRfXzEwOV8gYXJnMF9fMTE0X1xuICAgICAgICAgICAgIGFuZCByZXMxX18xMTdfID0gX29mX3JpZ2h0X18xMTBfIGFyZzFfXzExNV8gaW5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18xMTZfOyByZXMxX18xMTdfIF0pXG4gICAgICAgICAgXVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5NYXAuQ29udGludWVfb3Jfc3RvcCAqKVxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvbnRpbnVlXG4gICAgfCBTdG9wXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogdCAtPiB0IC0+IGludClcbiAgbGV0IGFsbCA9IChbIENvbnRpbnVlOyBTdG9wIF0gOiB0IGxpc3QpXG4gIGxldCBlcXVhbCA9IChTdGRsaWIuKCA9ICkgOiB0IC0+IHQgLT4gYm9vbClcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgQ29udGludWUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiQ29udGludWVcIlxuICAgICAgfCBTdG9wIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlN0b3BcIlxuICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLk1hcC5GaW5pc2hlZF9vcl91bmZpbmlzaGVkICopXG5tb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRmluaXNoZWRcbiAgICB8IFVuZmluaXNoZWRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgRmluaXNoZWQ7IFVuZmluaXNoZWQgXSA6IHQgbGlzdClcbiAgbGV0IGVxdWFsID0gKFN0ZGxpYi4oID0gKSA6IHQgLT4gdCAtPiBib29sKVxuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBGaW5pc2hlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJGaW5pc2hlZFwiXG4gICAgICB8IFVuZmluaXNoZWQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5maW5pc2hlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2IsICdjbXApIHRyZWVcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAnY21wIGNtcFxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGludmFyaWFudHMgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogKF8sIF8sIF8pIHQgLT4gaW50XG5cbiAgdmFsIGFkZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZHVwbGljYXRlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBhZGRfZXhuXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHNldFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBhZGRfbXVsdGlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHJlbW92ZV9tdWx0aVxuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZmluZF9tdWx0aSA6ICgnaywgJ2NtcCwgKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIGtleSAtPiAndiBsaXN0KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBjaGFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAnayBrZXlcbiAgICAgIC0+IGY6KCgndiBvcHRpb24gLT4gJ3Ygb3B0aW9uKVtAbG9jYWxdKVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHVwZGF0ZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+IGY6KCgndiBvcHRpb24gLT4gJ3YpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZmluZCA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gJ3Ygb3B0aW9uKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgZmluZF9leG4gOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICd2KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgcmVtb3ZlIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAoJ2ssICd2LCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgbWVtIDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gJ2sga2V5IC0+IGJvb2wpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2ssIF8sIF8pIHQgLT4gZjooKCdrIGtleSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICd2LCBfKSB0IC0+IGY6KCgndiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gIHZhbCBpdGVyMlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVtAbG9jYWxdKVxuICAgICAgLT4gdW5pdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIG1hcCA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCgndjEgLT4gJ3YyKVtAbG9jYWxdKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gIHZhbCBtYXBpXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAndjIpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICB2YWwgZm9sZFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjpcbiAgICAgICAgICgoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gKCdhY2MsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAgICAgICBbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgdmFsIGZvbGQyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBpbml0OidhY2NcbiAgICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgICAgLT4gJ2FjYyApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigoJ2sga2V5IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgdmFsIGZpbHRlciA6ICgnaywgJ3YsICdjbXApIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgZmlsdGVyaVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoJ3YxIC0+ICd2MiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoJ3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgY29tYmluZV9lcnJvcnNcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2IE9yX2Vycm9yLnQsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgY29tcGFyZV9kaXJlY3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ3YgLT4gJ3YgLT4gaW50KSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gaW50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZXF1YWxcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGJvb2wgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBrZXlzIDogKCdrLCBfLCBfKSB0IC0+ICdrIGtleSBsaXN0XG4gIHZhbCBkYXRhIDogKF8sICd2LCBfKSB0IC0+ICd2IGxpc3RcblxuICB2YWwgdG9fYWxpc3RcbiAgICA6ICA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gKCdrLCAndiwgXykgdFxuICAgIC0+ICgnayBrZXkgKiAndikgbGlzdFxuXG4gIHZhbCBtZXJnZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgLT4gZjooKGtleTonayBrZXkgLT4gKCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ3YzIG9wdGlvbilbQGxvY2FsXSlcbiAgICAgIC0+ICgnaywgJ3YzLCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgbWVyZ2Vfc2tld2VkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gY29tYmluZTooKGtleTonayBrZXkgLT4gJ3YgLT4gJ3YgLT4gJ3YpW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgICAgLT4gKCdrIGtleSwgJ3YpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGRhdGFfZXF1YWw6KCgndiAtPiAndiAtPiBib29sKVtAbG9jYWxdKVxuICAgICAgLT4gaW5pdDonYWNjXG4gICAgICAtPiBmOigoJ2FjYyAtPiAoJ2sga2V5LCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgICAtPiAnYWNjIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgbWluX2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayBrZXkgKiAndlxuICB2YWwgbWF4X2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayBrZXkgKiAndlxuICB2YWwgZm9yX2FsbCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICB2YWwgc3BsaXRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAnayBrZXlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2sga2V5ICogJ3YpIG9wdGlvbiAqICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzcGxpdF9sZV9ndFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc3BsaXRfbHRfZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGFwcGVuZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGxvd2VyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gdXBwZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXSApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gbG93ZXJfYm91bmQ6J2sga2V5IE1heWJlX2JvdW5kLnRcbiAgICAgIC0+IHVwcGVyX2JvdW5kOidrIGtleSBNYXliZV9ib3VuZC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBtaW46J2sga2V5XG4gICAgICAtPiBtYXg6J2sga2V5XG4gICAgICAtPiBpbml0OidhY2NcbiAgICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgICAgLT4gJ2FjYyApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHJhbmdlX3RvX2FsaXN0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBtaW46J2sga2V5IC0+IG1heDonayBrZXkgLT4gKCdrIGtleSAqICd2KSBsaXN0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgICAtPiAnayBrZXlcbiAgICAgIC0+ICgnayBrZXkgKiAndikgb3B0aW9uIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgbnRoIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG50aF9leG4gOiAoJ2ssICd2LCAnY21wKSB0IC0+IGludCAtPiAnayBrZXkgKiAndlxuICB2YWwgcmFuayA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0IC0+ICdrIGtleSAtPiBpbnQgb3B0aW9uKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrIGtleSwgJ3YsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzonayBrZXlcbiAgICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2sga2V5XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gY29tcGFyZTooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClbQGxvY2FsXSlcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgICAgLT4gJ2tleVxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IHNlZ21lbnRfb2Y6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVtAbG9jYWxdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gY29tcGFyZTooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICBtb2R1bGUgTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBIDogQXBwbGljYXRpdmUuTGF6eV9hcHBsaWNhdGl2ZSkgOiBzaWdcbiAgICB2YWwgbWFwaVxuICAgICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gJ3YyIEEudClcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0IEEudFxuXG4gICAgdmFsIGZpbHRlcl9tYXBpXG4gICAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAndjIgb3B0aW9uIEEudClcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0IEEudFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdrLCAndiwgJ2NtcCkgdFxuICB0eXBlICgnaywgJ3YsICdjbXApIHRyZWVcbiAgdHlwZSAnayBrZXlcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBjcmVhdGVfb3B0aW9uc1xuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGFjY2Vzc19vcHRpb25zXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgZW1wdHkgOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIHNpbmdsZXRvbiA6ICgnaywgJ2NtcCwgJ2sga2V5IC0+ICd2IC0+ICgnaywgJ3YsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAoICdrMlxuICAgICAgLCAnY21wMlxuICAgICAgLCAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAgIC0+IGY6KCgnazEga2V5IC0+ICdrMiBrZXkpW0Bsb2NhbF0pXG4gICAgICAtPiBbIGBPayBvZiAoJ2syLCAndiwgJ2NtcDIpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnazIga2V5IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBtYXBfa2V5c19leG5cbiAgICA6ICggJ2syXG4gICAgICAsICdjbXAyXG4gICAgICAsICgnazEsICd2LCAnY21wMSkgdCAtPiBmOigoJ2sxIGtleSAtPiAnazIga2V5KVtAbG9jYWxdKSAtPiAoJ2syLCAndiwgJ2NtcDIpIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCB0cmFuc3Bvc2Vfa2V5c1xuICAgIDogKCAnazFcbiAgICAgICwgJ2NtcDFcbiAgICAgICwgKCAnazJcbiAgICAgICAgLCAnY21wMlxuICAgICAgICAsICgnazEsICgnazIsICdhLCAnY21wMikgdCwgJ2NtcDEpIHQgLT4gKCdrMiwgKCdrMSwgJ2EsICdjbXAxKSB0LCAnY21wMikgdCApXG4gICAgICAgICAgY3JlYXRlX29wdGlvbnMgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBhcnJheSAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBhcnJheSAtPiAoJ2ssICd2LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGxlbjppbnQgLT4gZjooKGludCAtPiAnayBrZXkgKiAndilbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2KSBsaXN0IC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBrZXkgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X2V4biA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X2ZvbGRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YxKSBsaXN0XG4gICAgICAtPiBpbml0Oid2MlxuICAgICAgLT4gZjooKCd2MiAtPiAndjEgLT4gJ3YyKVtAbG9jYWxdKVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gZjooKCd2IC0+ICd2IC0+ICd2KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF1cbiAgICAgIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2Vfb3JfZXJyb3JcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfZXhuXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2MSkgU2VxdWVuY2UudFxuICAgICAgLT4gaW5pdDondjJcbiAgICAgIC0+IGY6KCgndjIgLT4gJ3YxIC0+ICd2MilbQGxvY2FsXSlcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfcmVkdWNlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+IGY6KCgndiAtPiAndiAtPiAndilbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2xpc3Rfd2l0aF9rZXlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAndiBsaXN0XG4gICAgICAtPiBnZXRfa2V5OigoJ3YgLT4gJ2sga2V5KVtAbG9jYWxdKVxuICAgICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvclxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICd2IGxpc3QgLT4gZ2V0X2tleTooKCd2IC0+ICdrIGtleSlbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9leG5cbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAndiBsaXN0IC0+IGdldF9rZXk6KCgndiAtPiAnayBrZXkpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5X211bHRpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ3YgbGlzdCAtPiBnZXRfa2V5OigoJ3YgLT4gJ2sga2V5KVtAbG9jYWxdKSAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGl0ZXJpOigoZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0KVtAbG9jYWxdKVxuICAgICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfaXRlcmlfZXhuXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgaXRlcmk6KChmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfdHJlZSA6ICgnaywgJ2NtcCwgKCdrIGtleSwgJ3YsICdjbXApIHRyZWUgLT4gKCdrLCAndiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0cmVlXG4gIHR5cGUgJ2Ega2V5XG4gIHR5cGUgJ2EgY21wXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcG9seSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2sga2V5IDo9ICdrXG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG4gIHZhbCBzZXhwX29mX21fX3RcbiAgICA6ICAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICgndiAtPiBTZXhwLnQpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKFNleHAudCAtPiAndilcbiAgICAtPiBTZXhwLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgOiAgKG1vZHVsZSBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIHZhbCBjb21wYXJlX21fX3RcbiAgICA6ICAobW9kdWxlIENvbXBhcmVfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gaW50KVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gaW50XG5cbiAgdmFsIGVxdWFsX21fX3RcbiAgICA6ICAobW9kdWxlIEVxdWFsX20pXG4gICAgLT4gKCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBib29sXG5cbiAgdmFsIGhhc2hfZm9sZF9tX190XG4gICAgOiAgKG1vZHVsZSBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+IChIYXNoLnN0YXRlIC0+ICd2IC0+IEhhc2guc3RhdGUpXG4gICAgLT4gSGFzaC5zdGF0ZVxuICAgIC0+ICgnaywgJ3YsIF8pIHRcbiAgICAtPiBIYXNoLnN0YXRlXG5lbmRcblxubW9kdWxlIHR5cGUgTWFwID0gc2lnXG4gICgqKiBbTWFwXSBpcyBhIGZ1bmN0aW9uYWwgZGF0YSBzdHJ1Y3R1cmUgKGJhbGFuY2VkIGJpbmFyeSB0cmVlKSBpbXBsZW1lbnRpbmcgZmluaXRlIG1hcHNcbiAgICAgIG92ZXIgYSB0b3RhbGx5LW9yZGVyZWQgZG9tYWluLCBjYWxsZWQgYSBcImtleVwiLiAqKVxuXG4gIHR5cGUgKCEna2V5LCArISd2YWx1ZSwgISdjbXApIHRcblxuICBtb2R1bGUgT3JfZHVwbGljYXRlID0gT3JfZHVwbGljYXRlXG4gIG1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQ29udGludWVfb3Jfc3RvcFxuXG4gIG1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkIDogc2lnXG4gICAgdHlwZSB0ID0gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50ID1cbiAgICAgIHwgRmluaXNoZWRcbiAgICAgIHwgVW5maW5pc2hlZFxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9lbnVtZXJhdGVfbGliLkVudW1lcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuRXF1YWwuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICAoKiogTWFwcyBbQ29udGludWVdIHRvIFtGaW5pc2hlZF0gYW5kIFtTdG9wXSB0byBbVW5maW5pc2hlZF0uICopXG4gICAgdmFsIG9mX2NvbnRpbnVlX29yX3N0b3AgOiBDb250aW51ZV9vcl9zdG9wLnQgLT4gdFxuXG4gICAgKCoqIE1hcHMgW0ZpbmlzaGVkXSB0byBbQ29udGludWVdIGFuZCBbVW5maW5pc2hlZF0gdG8gW1N0b3BdLiAqKVxuICAgIHZhbCB0b19jb250aW51ZV9vcl9zdG9wIDogdCAtPiBDb250aW51ZV9vcl9zdG9wLnRcbiAgZW5kXG5cbiAgbW9kdWxlIE1lcmdlX2VsZW1lbnQgOiBzaWdcbiAgICB0eXBlICgnbGVmdCwgJ3JpZ2h0KSB0ID1cbiAgICAgIFsgYExlZnQgb2YgJ2xlZnRcbiAgICAgIHwgYFJpZ2h0IG9mICdyaWdodFxuICAgICAgfCBgQm90aCBvZiAnbGVmdCAqICdyaWdodFxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICAgIHZhbCBjb21wYXJlXG4gICAgICA6ICAoJ2xlZnQgLT4gJ2xlZnQgLT4gaW50KVxuICAgICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gaW50KVxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBpbnRcblxuICAgIHZhbCBlcXVhbFxuICAgICAgOiAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGJvb2wpXG4gICAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBib29sKVxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBib29sXG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2xlZnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdyaWdodCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIGxlZnQgOiAoJ2xlZnQsIF8pIHQgLT4gJ2xlZnQgb3B0aW9uXG4gICAgdmFsIHJpZ2h0IDogKF8sICdyaWdodCkgdCAtPiAncmlnaHQgb3B0aW9uXG4gICAgdmFsIGxlZnRfdmFsdWUgOiAoJ2xlZnQsIF8pIHQgLT4gZGVmYXVsdDonbGVmdCAtPiAnbGVmdFxuICAgIHZhbCByaWdodF92YWx1ZSA6IChfLCAncmlnaHQpIHQgLT4gZGVmYXVsdDoncmlnaHQgLT4gJ3JpZ2h0XG5cbiAgICB2YWwgdmFsdWVzXG4gICAgICA6ICAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gbGVmdF9kZWZhdWx0OidsZWZ0XG4gICAgICAtPiByaWdodF9kZWZhdWx0OidyaWdodFxuICAgICAgLT4gJ2xlZnQgKiAncmlnaHRcbiAgZW5kXG5cbiAgdHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPSAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTEyXSB1c2UgW0NvbXBhcmF0b3IuTW9kdWxlLnRdIGluc3RlYWRcIl1cblxuICAoKiogVGVzdCBpZiB0aGUgaW52YXJpYW50cyBvZiB0aGUgaW50ZXJuYWwgQVZMIHNlYXJjaCB0cmVlIGhvbGQuICopXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIGEgZmlyc3QtY2xhc3MgbW9kdWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgb3RoZXIgbWFwL3NldC9ldGMuXG4gICAgICB3aXRoIHRoZSBzYW1lIG5vdGlvbiBvZiBjb21wYXJpc29uLiAqKVxuICB2YWwgY29tcGFyYXRvcl9zIDogKCdhLCBfLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCBfLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG5cbiAgKCoqIFRoZSBlbXB0eSBtYXAuICopXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIEEgbWFwIHdpdGggb25lIChrZXksIGRhdGEpIHBhaXIuICopXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgLT4gJ2IgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHVuaXF1ZSBrZXlzLiAqKVxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMsIHJldHVybmluZyBhbiBlcnJvciBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuICopXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMsIHJhaXNpbmcgYW4gZXhjZXB0aW9uIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2FsaXN0X2V4biA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EgKiAnYikgbGlzdCAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggcG9zc2libHkgcmVwZWF0ZWQga2V5cy4gVGhlIHZhbHVlcyBpblxuICAgICAgdGhlIG1hcCBmb3IgYSBnaXZlbiBrZXkgYXBwZWFyIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZXkgZGlkIGluIHRoZSBhc3NvY2lhdGlvblxuICAgICAgbGlzdC4gKilcbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gbGlzdCBpbnRvIGEgbWFwLCBmb2xkaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy4gVGhlIGFjY3VtdWxhdG9yIGlzIHBlci1rZXkuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgICMgbGV0IG1hcCA9IFN0cmluZy5NYXAub2ZfYWxpc3RfZm9sZFxuICAgICAgICAgICAgICAgICAgICAgIFsgXCJhXCIsIDE7IFwiYVwiLCAxMDsgXCJiXCIsIDI7IFwiYlwiLCAyMDsgXCJiXCIsIDIwMCBdXG4gICAgICAgICAgICAgICAgICAgICAgfmluaXQ6SW50LlNldC5lbXB0eVxuICAgICAgICAgICAgICAgICAgICAgIH5mOlNldC5hZGRcbiAgICAgICAgICBpblxuICAgICAgICAgIHByaW50X3MgWyVzZXhwIChtYXAgOiBJbnQuU2V0LnQgU3RyaW5nLk1hcC50KV07O1xuICAgICAgICAoKGEgKDEgMTApKSAoYiAoMiAyMCAyMDApKSlcbiAgICAgICAgLSA6IHVuaXQgPSAoKVxuICAgICAgXX1cbiAgKilcbiAgdmFsIG9mX2FsaXN0X2ZvbGRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOigoJ2MgLT4gJ2IgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBsaXN0IGludG8gYSBtYXAsIHJlZHVjaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy4gKilcbiAgdmFsIG9mX2FsaXN0X3JlZHVjZVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gZjooKCdiIC0+ICdiIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogW29mX2l0ZXJpIH5pdGVyaV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF0sIGV4Y2VwdCB0aGF0IGluc3RlYWQgb2YgdGFraW5nIGEgY29uY3JldGVcbiAgICAgIGRhdGEgc3RydWN0dXJlLCBpdCB0YWtlcyBhbiBpdGVyYXRpb24gZnVuY3Rpb24uICBGb3IgaW5zdGFuY2UsIHRvIGNvbnZlcnQgYSBzdHJpbmcgdGFibGVcbiAgICAgIGludG8gYSBtYXA6IFtvZl9pdGVyaSAobW9kdWxlIFN0cmluZykgfmY6KEhhc2h0YmwuaXRlcmkgdGFibGUpXS4gIEl0IGlzIGZhc3RlciB0aGFuXG4gICAgICBhZGRpbmcgdGhlIGVsZW1lbnRzIG9uZSBieSBvbmUuICopXG4gIHZhbCBvZl9pdGVyaVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGl0ZXJpOigoZjooKGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogTGlrZSBbb2ZfaXRlcmldIGV4Y2VwdCB0aGF0IGl0IHJhaXNlcyBhbiBleGNlcHRpb24gaWYgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuICopXG4gIHZhbCBvZl9pdGVyaV9leG5cbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpdGVyaTooKGY6KChrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0KVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGEgc29ydGVkIGFycmF5IG9mIGtleS1kYXRhIHBhaXJzLiBUaGUgaW5wdXQgYXJyYXkgbXVzdCBiZSBzb3J0ZWRcbiAgICAgIChlaXRoZXIgaW4gYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgb3JkZXIpLCBhcyBnaXZlbiBieSB0aGUgcmVsZXZhbnQgY29tcGFyYXRvciwgYW5kXG4gICAgICBtdXN0IG5vdCBjb250YWluIGR1cGxpY2F0ZSBrZXlzLiBJZiBlaXRoZXIgb2YgdGhlc2UgY29uZGl0aW9ucyBkb2VzIG5vdCBob2xkLFxuICAgICAgYW4gZXJyb3IgaXMgcmV0dXJuZWQuICAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGFycmF5XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIExpa2UgW29mX3NvcnRlZF9hcnJheV0gZXhjZXB0IHRoYXQgaXQgcmV0dXJucyBhIG1hcCB3aXRoIGJyb2tlbiBpbnZhcmlhbnRzIHdoZW4gYW5cbiAgICAgIFtFcnJvcl0gd291bGQgaGF2ZSBiZWVuIHJldHVybmVkLiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBhcnJheVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogW29mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIGMgfmxlbiB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGNcbiAgICAgIChBcnJheS5pbml0IGxlbiB+ZildLCB3aXRoIHRoZSBhZGRpdGlvbmFsIHJlc3RyaWN0aW9uIHRoYXQgYSBkZWNyZWFzaW5nIG9yZGVyIGlzIG5vdFxuICAgICAgc3VwcG9ydGVkLiAgVGhlIGFkdmFudGFnZSBpcyBub3QgcmVxdWlyaW5nIHlvdSB0byBhbGxvY2F0ZSBhbiBpbnRlcm1lZGlhdGUgYXJyYXkuICBbZl1cbiAgICAgIHdpbGwgYmUgY2FsbGVkIHdpdGggMCwgMSwgLi4uIFtsZW4gLSAxXSwgaW4gb3JkZXIuICopXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOigoaW50IC0+ICdhICogJ2IpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXkgYyAoU2VxdWVuY2UudG9fYXJyYXlcbiAgICAgIHNlcSldLCBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBhcnJheS5cblxuICAgICAgVGhlIHNlcXVlbmNlIHdpbGwgYmUgZm9sZGVkIG92ZXIgb25jZSwgYW5kIHRoZSBhZGRpdGlvbmFsIHRpbWUgY29tcGxleGl0eSBpcyB7ZSBPKG4pfS5cbiAgKilcbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2VcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCB1bmlxdWUga2V5cy5cblxuICAgICAgW29mX3NlcXVlbmNlIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0IGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG5cbiAgICAgIElmIHlvdXIgc2VxdWVuY2UgaXMgaW5jcmVhc2luZywgdXNlIFtvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXS5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrICogJ3YpIFNlcXVlbmNlLnRcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sgXVxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCB1bmlxdWUga2V5cywgcmV0dXJuaW5nIGFuIGVycm9yIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC5cblxuICAgICAgW29mX3NlcXVlbmNlX29yX2Vycm9yIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X29yX2Vycm9yIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV1cbiAgICAgIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvclxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLCByYWlzaW5nIGFuIGV4Y2VwdGlvbiBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9leG4gYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZXhuIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9leG5cbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggcG9zc2libHkgcmVwZWF0ZWQga2V5cy4gVGhlIHZhbHVlcyBpblxuICAgICAgdGhlIG1hcCBmb3IgYSBnaXZlbiBrZXkgYXBwZWFyIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZXkgZGlkIGluIHRoZSBhc3NvY2lhdGlvblxuICAgICAgbGlzdC5cblxuICAgICAgW29mX3NlcXVlbmNlX211bHRpIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X2V4biBjIChTZXF1ZW5jZS50b19saXN0IHNlcSldIGJ1dFxuICAgICAgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSBpbnRvIGEgbWFwLCBmb2xkaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy5cblxuICAgICAgW29mX3NlcXVlbmNlX2ZvbGQgYyBzZXEgfmluaXQgfmZdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZm9sZCBjIChTZXF1ZW5jZS50b19saXN0IHNlcSkgfmluaXQgfmZdXG4gICAgICBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfZm9sZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCgnYyAtPiAnYiAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIGludG8gYSBtYXAsIHJlZHVjaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy5cblxuICAgICAgW29mX3NlcXVlbmNlX3JlZHVjZSBjIHNlcSB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9yZWR1Y2UgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpIH5mXVxuICAgICAgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2VcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IGY6KCgnYiAtPiAnYiAtPiAnYilbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENvbnN0cnVjdHMgYSBtYXAgZnJvbSBhIGxpc3Qgb2YgdmFsdWVzLCB3aGVyZSBbZ2V0X2tleV0gZXh0cmFjdHMgYSBrZXkgZnJvbSBhIHZhbHVlLlxuICAqKVxuICB2YWwgb2ZfbGlzdF93aXRoX2tleVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICd2IGxpc3RcbiAgICAtPiBnZXRfa2V5OigoJ3YgLT4gJ2spW0Bsb2NhbF0pXG4gICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIF1cblxuICAoKiogTGlrZSBbb2ZfbGlzdF93aXRoX2tleV07IHJldHVybnMgW0Vycm9yXSBvbiBkdXBsaWNhdGUga2V5LiAqKVxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvclxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICd2IGxpc3RcbiAgICAtPiBnZXRfa2V5OigoJ3YgLT4gJ2spW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIExpa2UgW29mX2xpc3Rfd2l0aF9rZXldOyByYWlzZXMgb24gZHVwbGljYXRlIGtleS4gKilcbiAgdmFsIG9mX2xpc3Rfd2l0aF9rZXlfZXhuXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3YgbGlzdFxuICAgIC0+IGdldF9rZXk6KCgndiAtPiAnaylbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIExpa2UgW29mX2xpc3Rfd2l0aF9rZXldOyBwcm9kdWNlcyBsaXN0cyBvZiBhbGwgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGtleS4gKilcbiAgdmFsIG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGlcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAndiBsaXN0XG4gICAgLT4gZ2V0X2tleTooKCd2IC0+ICdrKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBUZXN0cyB3aGV0aGVyIGEgbWFwIGlzIGVtcHR5LiAqKVxuICB2YWwgaXNfZW1wdHkgOiAoXywgXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFtsZW5ndGggbWFwXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gW21hcF0uICBPKDEpLCBidXQgW1RyZWUubGVuZ3RoXSBpc1xuICAgICAgTyhuKS4gKilcbiAgdmFsIGxlbmd0aCA6IChfLCBfLCBfKSB0IC0+IGludFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIHRoZSBzcGVjaWZpZWQgbmV3IGJpbmRpbmc7IGlmIHRoZSBrZXkgd2FzIGFscmVhZHkgYm91bmQsIGl0c1xuICAgICAgcHJldmlvdXMgYmluZGluZyBkaXNhcHBlYXJzLiAqKVxuICB2YWwgc2V0IDogKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFthZGQgdCB+a2V5IH5kYXRhXSBhZGRzIGEgbmV3IGVudHJ5IHRvIFt0XSBtYXBwaW5nIFtrZXldIHRvIFtkYXRhXSBhbmQgcmV0dXJucyBbYE9rXVxuICAgICAgd2l0aCB0aGUgbmV3IG1hcCwgb3IgaWYgW2tleV0gaXMgYWxyZWFkeSBwcmVzZW50IGluIFt0XSwgcmV0dXJucyBbYER1cGxpY2F0ZV0uICopXG4gIHZhbCBhZGQgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZHVwbGljYXRlLnRcblxuICB2YWwgYWRkX2V4biA6ICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBJZiBba2V5XSBpcyBub3QgcHJlc2VudCB0aGVuIGFkZCBhIHNpbmdsZXRvbiBsaXN0LCBvdGhlcndpc2UsIGNvbnMgZGF0YSBvbnRvIHRoZVxuICAgICAgaGVhZCBvZiB0aGUgZXhpc3RpbmcgbGlzdC4gKilcbiAgdmFsIGFkZF9tdWx0aSA6ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHRcblxuICAoKiogSWYgdGhlIGtleSBpcyBwcmVzZW50LCB0aGVuIHJlbW92ZSBpdHMgaGVhZCBlbGVtZW50OyBpZiB0aGUgcmVzdWx0IGlzIGVtcHR5LCByZW1vdmVcbiAgICAgIHRoZSBrZXkuICopXG4gIHZhbCByZW1vdmVfbXVsdGkgOiAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIFJldHVybnMgdGhlIHZhbHVlIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIG9yIHRoZSBlbXB0eSBsaXN0IGlmIHRoZXJlIGlzIG5vbmUuICopXG4gIHZhbCBmaW5kX211bHRpIDogKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIC0+ICd2IGxpc3RcblxuICAoKiogW2NoYW5nZSB0IGtleSB+Zl0gcmV0dXJucyBhIG5ldyBtYXAgW21dIHRoYXQgaXMgdGhlIHNhbWUgYXMgW3RdIG9uIGFsbCBrZXlzIGV4Y2VwdFxuICAgICAgZm9yIFtrZXldLCBhbmQgd2hvc2UgdmFsdWUgZm9yIFtrZXldIGlzIGRlZmluZWQgYnkgW2ZdLCBpLmUuLCBbZmluZCBtIGtleSA9IGYgKGZpbmRcbiAgICAgIHQga2V5KV0uICopXG4gIHZhbCBjaGFuZ2VcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gJ2tcbiAgICAtPiBmOigoJ3Ygb3B0aW9uIC0+ICd2IG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFt1cGRhdGUgdCBrZXkgfmZdIGlzIFtjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvIC0+IFNvbWUgKGYgbykpXS4gKilcbiAgdmFsIHVwZGF0ZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gZjooKCd2IG9wdGlvbiAtPiAndilbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG5cbiAgKCoqIFJldHVybnMgW1NvbWUgdmFsdWVdIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIG9yIFtOb25lXSBpZiBub25lIGV4aXN0cy4gKilcbiAgdmFsIGZpbmQgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICd2IG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSB2YWx1ZSBib3VuZCB0byB0aGUgZ2l2ZW4ga2V5LCByYWlzaW5nIFtTdGRsaWIuTm90X2ZvdW5kXSBvciBbTm90X2ZvdW5kX3NdXG4gICAgICBpZiBub25lIGV4aXN0cy4gKilcbiAgdmFsIGZpbmRfZXhuIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAndlxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGFueSBiaW5kaW5nIGZvciB0aGUga2V5IGluIHF1ZXN0aW9uIHJlbW92ZWQuICopXG4gIHZhbCByZW1vdmUgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW21lbSBtYXAga2V5XSB0ZXN0cyB3aGV0aGVyIFttYXBdIGNvbnRhaW5zIGEgYmluZGluZyBmb3IgW2tleV0uICopXG4gIHZhbCBtZW0gOiAoJ2ssIF8sICdjbXApIHQgLT4gJ2sgLT4gYm9vbFxuXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2ssIF8sIF8pIHQgLT4gZjooKCdrIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBJdGVyYXRlcyB1bnRpbCB0aGUgZmlyc3QgdGltZSBbZl0gcmV0dXJucyBbU3RvcF0uIElmIFtmXSByZXR1cm5zIFtTdG9wXSwgdGhlIGZpbmFsXG4gICAgICByZXN1bHQgaXMgW1VuZmluaXNoZWRdLiBPdGhlcndpc2UsIHRoZSBmaW5hbCByZXN1bHQgaXMgW0ZpbmlzaGVkXS4gKilcbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgKCoqIEl0ZXJhdGVzIHR3byBtYXBzIHNpZGUgYnkgc2lkZS4gVGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBmdW5jdGlvbiBpcyBPKE0gKyBOKS4gIElmIHR3b1xuICAgICAgaW5wdXRzIGFyZSBbWygwLCBhKTsgKDEsIGEpXV0gYW5kIFtbKDEsIGIpOyAoMiwgYildXSwgW2ZdIHdpbGwgYmUgY2FsbGVkIHdpdGggW1soMCxcbiAgICAgIGBMZWZ0IGEpOyAoMSwgYEJvdGggKGEsIGIpKTsgKDIsIGBSaWdodCBiKV1dLiAqKVxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgLT4gdW5pdFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGJvdW5kIHZhbHVlcyByZXBsYWNlZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmQgdmFsdWVzLiopXG4gIHZhbCBtYXAgOiAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOigoJ3YxIC0+ICd2MilbQGxvY2FsXSkgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogTGlrZSBbbWFwXSwgYnV0IHRoZSBwYXNzZWQgZnVuY3Rpb24gdGFrZXMgYm90aCBba2V5XSBhbmQgW2RhdGFdIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIG1hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIENvbnZlcnQgbWFwIHdpdGgga2V5cyBvZiB0eXBlIFsnazJdIHRvIGEgbWFwIHdpdGgga2V5cyBvZiB0eXBlIFsnazJdIHVzaW5nIFtmXS4gKilcbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAgKCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOigoJ2sxIC0+ICdrMilbQGxvY2FsXSlcbiAgICAtPiBbIGBPayBvZiAoJ2syLCAndiwgJ2NtcDIpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnazIgXVxuXG4gICgqKiBMaWtlIFttYXBfa2V5c10sIGJ1dCByYWlzZXMgb24gZHVwbGljYXRlIGtleS4gKilcbiAgdmFsIG1hcF9rZXlzX2V4blxuICAgIDogICgnazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgLT4gZjooKCdrMSAtPiAnazIpW0Bsb2NhbF0pXG4gICAgLT4gKCdrMiwgJ3YsICdjbXAyKSB0XG5cbiAgKCoqIEZvbGRzIG92ZXIga2V5cyBhbmQgZGF0YSBpbiB0aGUgbWFwIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgW2tleV0uICopXG4gIHZhbCBmb2xkXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gICgqKiBGb2xkcyBvdmVyIGtleXMgYW5kIGRhdGEgaW4gdGhlIG1hcCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIFtrZXldLCB1bnRpbCB0aGUgZmlyc3RcbiAgICAgIHRpbWUgdGhhdCBbZl0gcmV0dXJucyBbU3RvcCBfXS4gSWYgW2ZdIHJldHVybnMgW1N0b3AgZmluYWxdLCB0aGlzIGZ1bmN0aW9uIHJldHVybnNcbiAgICAgIGltbWVkaWF0ZWx5IHdpdGggdGhlIHZhbHVlIFtmaW5hbF0uIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCBhbmQgdGhlIGZpbmFsXG4gICAgICBjYWxsIHRvIFtmXSByZXR1cm5zIFtDb250aW51ZSBsYXN0XSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIFtmaW5pc2ggbGFzdF0uICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6XG4gICAgICAgICAoKGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gKCdhY2MsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAgICAgICBbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICAoKiogRm9sZHMgb3ZlciBrZXlzIGFuZCBkYXRhIGluIHRoZSBtYXAgaW4gZGVjcmVhc2luZyBvcmRlciBvZiBba2V5XS4gKilcbiAgdmFsIGZvbGRfcmlnaHRcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgKCoqIEZvbGRzIG92ZXIgdHdvIG1hcHMgc2lkZSBieSBzaWRlLCBsaWtlIFtpdGVyMl0uICopXG4gIHZhbCBmb2xkMlxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICAoKiogW2ZpbHRlcl0sIFtmaWx0ZXJpXSwgW2ZpbHRlcl9rZXlzXSwgW2ZpbHRlcl9tYXBdLCBhbmQgW2ZpbHRlcl9tYXBpXSBydW4gaW4gTyhuKVxuICAgICAgdGltZS5cblxuICAgICAgW2ZpbHRlcl0sIFtmaWx0ZXJpXSwgW2ZpbHRlcl9rZXlzXSwgW3BhcnRpdGlvbl90Zl0gYW5kIFtwYXJ0aXRpb25pX3RmXSBrZWVwIGEgbG90XG4gICAgICBvZiBzaGFyaW5nIGJldHdlZW4gdGhlaXIgcmVzdWx0IGFuZCB0aGUgb3JpZ2luYWwgbWFwLiAgRHJvcHBpbmcgb3Iga2VlcGluZyBhIHJ1biBvZlxuICAgICAgW2tdIGNvbnNlY3V0aXZlIGVsZW1lbnRzIGNvc3RzIFtPKGxvZyhrKSldIGV4dHJhIG1lbW9yeS4gS2VlcGluZyB0aGUgZW50aXJlIG1hcFxuICAgICAgY29zdHMgbm8gZXh0cmEgbWVtb3J5IGF0IGFsbDogW2ZpbHRlciB+ZjooZnVuIF8gLT4gdHJ1ZSldIHJldHVybnMgdGhlIG9yaWdpbmFsIG1hcC5cbiAgKilcbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigoJ2sgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXIgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcmlcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IG1hcCB3aXRoIGJvdW5kIHZhbHVlcyBmaWx0ZXJlZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmQgdmFsdWVzLiAqKVxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKCd2MSAtPiAndjIgb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIExpa2UgW2ZpbHRlcl9tYXBdLCBidXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0YWtlcyBib3RoIFtrZXldIGFuZCBbZGF0YV0gYXNcbiAgICAgIGFyZ3VtZW50cy4gKilcbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXBpIHQgfmZdIHJldHVybnMgdHdvIG5ldyBbdF1zLCB3aXRoIGVhY2gga2V5IGluIFt0XSBhcHBlYXJpbmcgaW5cbiAgICAgIGV4YWN0bHkgb25lIG9mIHRoZSByZXN1bHRpbmcgbWFwcyBkZXBlbmRpbmcgb24gaXRzIG1hcHBpbmcgaW4gW2ZdLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSldICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoJ3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gICgqKlxuICAgICB7W1xuICAgICAgIHBhcnRpdGlvbmlfdGYgdCB+ZlxuICAgICAgID1cbiAgICAgICBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgaWYgZiB+a2V5IH5kYXRhXG4gICAgICAgICB0aGVuIEZpcnN0IGRhdGFcbiAgICAgICAgIGVsc2UgU2Vjb25kIGRhdGEpXG4gICAgIF19ICopXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXSAqKVxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFByb2R1Y2VzIFtPa10gb2YgYSBtYXAgaW5jbHVkaW5nIGFsbCBrZXlzIGlmIGFsbCBkYXRhIGlzIFtPa10sIG9yIGFuIFtFcnJvcl1cbiAgICAgIGluY2x1ZGluZyBhbGwgZXJyb3JzIG90aGVyd2lzZS4gKilcbiAgdmFsIGNvbWJpbmVfZXJyb3JzIDogKCdrLCAndiBPcl9lcnJvci50LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBSZXR1cm5zIGEgdG90YWwgb3JkZXJpbmcgYmV0d2VlbiBtYXBzLiBUaGUgZmlyc3QgYXJndW1lbnQgaXMgYSB0b3RhbCBvcmRlcmluZyB1c2VkXG4gICAgICB0byBjb21wYXJlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGVxdWFsIGtleXMgaW4gdGhlIHR3byBtYXBzLiAqKVxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ3YgLT4gJ3YgLT4gaW50KSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gaW50XG5cbiAgKCoqIEhhc2ggZnVuY3Rpb246IGEgYnVpbGRpbmcgYmxvY2sgdG8gdXNlIHdoZW4gaGFzaGluZyBkYXRhIHN0cnVjdHVyZXMgY29udGFpbmluZyBtYXBzIGluXG4gICAgICB0aGVtLiBbaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggW2NvbXBhcmVfZGlyZWN0XSBpZmZcbiAgICAgIFtoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggWyhjb21wYXJhdG9yIG0pLmNvbXBhcmVdIG9mIHRoZSBtYXAgW21dIGJlaW5nXG4gICAgICBoYXNoZWQuICopXG4gIHZhbCBoYXNoX2ZvbGRfZGlyZWN0IDogJ2sgSGFzaC5mb2xkZXIgLT4gJ3YgSGFzaC5mb2xkZXIgLT4gKCdrLCAndiwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICgqKiBbZXF1YWwgY21wIG0xIG0yXSB0ZXN0cyB3aGV0aGVyIHRoZSBtYXBzIFttMV0gYW5kIFttMl0gYXJlIGVxdWFsLCB0aGF0IGlzLCBjb250YWluXG4gICAgICB0aGUgc2FtZSBrZXlzIGFuZCBhc3NvY2lhdGUgZWFjaCBrZXkgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gIFtjbXBdIGlzIHRoZSBlcXVhbGl0eVxuICAgICAgcHJlZGljYXRlIHVzZWQgdG8gY29tcGFyZSB0aGUgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5cy4gKilcbiAgdmFsIGVxdWFsIDogKCd2IC0+ICd2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgYSBsaXN0IG9mIHRoZSBrZXlzIGluIHRoZSBnaXZlbiBtYXAuICopXG4gIHZhbCBrZXlzIDogKCdrLCBfLCBfKSB0IC0+ICdrIGxpc3RcblxuICAoKiogUmV0dXJucyBhIGxpc3Qgb2YgdGhlIGRhdGEgaW4gdGhlIGdpdmVuIG1hcC4gKilcbiAgdmFsIGRhdGEgOiAoXywgJ3YsIF8pIHQgLT4gJ3YgbGlzdFxuXG4gICgqKiBDcmVhdGVzIGFuIGFzc29jaWF0aW9uIGxpc3QgZnJvbSB0aGUgZ2l2ZW4gbWFwLiAqKVxuICB2YWwgdG9fYWxpc3RcbiAgICA6ICA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdICgqKiBkZWZhdWx0IGlzIFtgSW5jcmVhc2luZ10gKilcbiAgICAtPiAoJ2ssICd2LCBfKSB0XG4gICAgLT4gKCdrICogJ3YpIGxpc3RcblxuICAoKiogezIgQWRkaXRpb25hbCBvcGVyYXRpb25zIG9uIG1hcHN9ICopXG5cbiAgKCoqIE1lcmdlcyB0d28gbWFwcy4gVGhlIHJ1bnRpbWUgaXMgTyhsZW5ndGgodDEpICsgbGVuZ3RoKHQyKSkuIFlvdSBzaG91bGRuJ3QgdXNlIHRoaXNcbiAgICAgIGZ1bmN0aW9uIHRvIG1lcmdlIGEgbGlzdCBvZiBtYXBzOyBjb25zaWRlciB1c2luZyBbbWVyZ2Vfc2tld2VkXSBpbnN0ZWFkLiAqKVxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiAoJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgKCoqIEEgc3BlY2lhbCBjYXNlIG9mIFttZXJnZV0sIFttZXJnZV9za2V3ZWQgdDEgdDJdIGlzIGEgbWFwIGNvbnRhaW5pbmcgYWxsIHRoZVxuICAgICAgYmluZGluZ3Mgb2YgW3QxXSBhbmQgW3QyXS4gQmluZGluZ3MgdGhhdCBhcHBlYXIgaW4gYm90aCBbdDFdIGFuZCBbdDJdIGFyZVxuICAgICAgY29tYmluZWQgaW50byBhIHNpbmdsZSB2YWx1ZSB1c2luZyB0aGUgW2NvbWJpbmVdIGZ1bmN0aW9uLiBJbiBhIGNhbGxcbiAgICAgIFtjb21iaW5lIH5rZXkgdjEgdjJdLCB0aGUgdmFsdWUgW3YxXSBjb21lcyBmcm9tIFt0MV0gYW5kIFt2Ml0gZnJvbSBbdDJdLlxuXG4gICAgICBUaGUgcnVudGltZSBvZiBbbWVyZ2Vfc2tld2VkXSBpcyBbTyhtaW4obDEsIGwyKSAqIGxvZyhtYXgobDEsIGwyKSkpXSwgd2hlcmUgW2wxXSBpc1xuICAgICAgdGhlIGxlbmd0aCBvZiBbdDFdIGFuZCBbbDJdIHRoZSBsZW5ndGggb2YgW3QyXS4gVGhpcyBpcyBsaWtlbHkgdG8gYmUgZmFzdGVyIHRoYW5cbiAgICAgIFttZXJnZV0gd2hlbiBvbmUgb2YgdGhlIG1hcHMgaXMgYSBsb3Qgc21hbGxlciwgb3Igd2hlbiB5b3UgbWVyZ2UgYSBsaXN0IG9mIG1hcHMuICopXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbWJpbmU6KChrZXk6J2sgLT4gJ3YgLT4gJ3YgLT4gJ3YpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIG1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50IDogc2lnXG4gICAgdHlwZSAoJ2ssICd2KSB0ID0gJ2sgKiBbIGBMZWZ0IG9mICd2IHwgYFJpZ2h0IG9mICd2IHwgYFVuZXF1YWwgb2YgJ3YgKiAndiBdXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5FcXVhbC5TMiB3aXRoIHR5cGUgKCdrLCAndikgdCA6PSAoJ2ssICd2KSB0XG4gICAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdrLCAndikgdCA6PSAoJ2ssICd2KSB0XG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXJcbiAgICAgIDogICdrIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgLT4gKCdrLCAndikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgKCoqIFtzeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbF0gcmV0dXJucyBhIGxpc3Qgb2YgY2hhbmdlcyBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0uXG4gICAgICBJdCBpcyBpbnRlbmRlZCB0byBiZSBlZmZpY2llbnQgaW4gdGhlIGNhc2Ugd2hlcmUgW3QxXSBhbmQgW3QyXSBzaGFyZSBhIGxhcmdlIGFtb3VudFxuICAgICAgb2Ygc3RydWN0dXJlLiBUaGUga2V5cyBpbiB0aGUgb3V0cHV0IHNlcXVlbmNlIHdpbGwgYmUgaW4gc29ydGVkIG9yZGVyLlxuXG4gICAgICBJdCBpcyBhc3N1bWVkIHRoYXQgW2RhdGFfZXF1YWxdIGlzIGF0IGxlYXN0IGFzIGVxdWF0aW5nIGFzIHBoeXNpY2FsIGVxdWFsaXR5OiB0aGF0XG4gICAgICBbcGh5c19lcXVhbCB4IHldIGltcGxpZXMgW2RhdGFfZXF1YWwgeCB5XS4gT3RoZXJ3aXNlLCBbc3ltbWV0cmljX2RpZmZdIG1heSBiZWhhdmUgaW5cbiAgICAgIHVuZXhwZWN0ZWQgd2F5cy4gRm9yIGV4YW1wbGUsIHdpdGggW35kYXRhX2VxdWFsOihmdW4gXyBfIC0+IGZhbHNlKV0gaXQgaXMgTk9UXG4gICAgICBuZWNlc3NhcmlseSB0aGUgY2FzZSB0aGUgcmVzdWx0aW5nIGNoYW5nZSBzZXF1ZW5jZSB3aWxsIGNvbnRhaW4gYW4gZWxlbWVudFxuICAgICAgWyhrLCBgVW5lcXVhbCBfKV0gZm9yIGV2ZXJ5IGtleSBba10gc2hhcmVkIGJ5IGJvdGggbWFwcy5cblxuICAgICAgV2FybmluZzogRmxvYXQgZXF1YWxpdHkgdmlvbGF0ZXMgdGhpcyBwcm9wZXJ0eSEgW3BoeXNfZXF1YWwgRmxvYXQubmFuIEZsb2F0Lm5hbl0gaXNcbiAgICAgIHRydWUsIGJ1dCBbRmxvYXQuKD0pIEZsb2F0Lm5hbiBGbG9hdC5uYW5dIGlzIGZhbHNlLiAqKVxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICAoKiogW2ZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWxdIGZvbGRzIGFjcm9zcyBhbiBpbXBsaWNpdCBzZXF1ZW5jZSBvZiBjaGFuZ2VzXG4gICAgICBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0sIGluIHNvcnRlZCBvcmRlciBieSBrZXlzLiBFcXVpdmFsZW50IHRvXG4gICAgICBbU2VxdWVuY2UuZm9sZCAoc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWwpXSwgYW5kIG1vcmUgZWZmaWNpZW50LiAqKVxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooKCd2IC0+ICd2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gKCdrLCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gICgqKiBbbWluX2VsdCBtYXBdIHJldHVybnMgW1NvbWUgKGtleSwgZGF0YSldIHBhaXIgY29ycmVzcG9uZGluZyB0byB0aGUgbWluaW11bSBrZXkgaW5cbiAgICAgIFttYXBdLCBvciBbTm9uZV0gaWYgZW1wdHkuICopXG4gIHZhbCBtaW5fZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayAqICd2XG5cbiAgKCoqIFttYXhfZWx0IG1hcF0gcmV0dXJucyBbU29tZSAoa2V5LCBkYXRhKV0gcGFpciBjb3JyZXNwb25kaW5nIHRvIHRoZSBtYXhpbXVtIGtleSBpblxuICAgICAgW21hcF0sIG9yIFtOb25lXSBpZiBbbWFwXSBpcyBlbXB0eS4gKilcbiAgdmFsIG1heF9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrICogJ3ZcblxuICAoKiogU3dhcCB0aGUgaW5uZXIgYW5kIG91dGVyIGtleXMgb2YgbmVzdGVkIG1hcHMuIElmIFt0cmFuc3Bvc2Vfa2V5cyBtIGEgPSBiXSwgdGhlblxuICAgICAgW2ZpbmRfZXhuIChmaW5kX2V4biBhIGkpIGogPSBmaW5kX2V4biAoZmluZF9leG4gYiBqKSBpXS4gKilcbiAgdmFsIHRyYW5zcG9zZV9rZXlzXG4gICAgOiAgKCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAoJ2syLCAndiwgJ2NtcDIpIHQsICdjbXAxKSB0XG4gICAgLT4gKCdrMiwgKCdrMSwgJ3YsICdjbXAxKSB0LCAnY21wMikgdFxuXG4gICgqKiBUaGVzZSBmdW5jdGlvbnMgaGF2ZSB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgc2ltaWxhciBmdW5jdGlvbnMgaW4gW0xpc3RdLiAqKVxuXG4gIHZhbCBmb3JfYWxsIDogKCdrLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG5cbiAgKCoqIFtzcGxpdCB0IGtleV0gcmV0dXJucyBhIG1hcCBvZiBrZXlzIHN0cmljdGx5IGxlc3MgdGhhbiBba2V5XSwgdGhlIG1hcHBpbmcgb2YgW2tleV0gaWZcbiAgICAgIGFueSwgYW5kIGEgbWFwIG9mIGtleXMgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIFtrZXldLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgc21hbGxlciBvZiB0aGUgdHdvIG91dHB1dCBtYXBzLiAgVGhlIE8obSkgdGVybSBpcyBkdWUgdG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlXG4gICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWFwcy4gKilcbiAgdmFsIHNwbGl0XG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICdrXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnayAqICd2KSBvcHRpb24gKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFtzcGxpdF9sZV9ndCB0IGtleV0gcmV0dXJucyBhIG1hcCBvZiBrZXlzIHRoYXQgYXJlIGxlc3Mgb3IgZXF1YWwgdG8gW2tleV0gYW5kIGFcbiAgICAgIG1hcCBvZiBrZXlzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiBba2V5XS5cblxuICAgICAgUnVudGltZSBpcyBPKG0gKyBsb2cgbiksIHdoZXJlIG4gaXMgdGhlIHNpemUgb2YgdGhlIGlucHV0IG1hcCBhbmQgbSBpcyB0aGUgc2l6ZSBvZlxuICAgICAgdGhlIHNtYWxsZXIgb2YgdGhlIHR3byBvdXRwdXQgbWFwcy4gIFRoZSBPKG0pIHRlcm0gaXMgZHVlIHRvIHRoZSBuZWVkIHRvIGNhbGN1bGF0ZVxuICAgICAgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1hcHMuICopXG4gIHZhbCBzcGxpdF9sZV9ndCA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3NwbGl0X2x0X2dlIHQga2V5XSByZXR1cm5zIGEgbWFwIG9mIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIFtrZXldIGFuZCBhIG1hcCBvZlxuICAgICAga2V5cyB0aGF0IGFyZSBncmVhdGVyIG9yIGVxdWFsIHRvIFtrZXldLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgc21hbGxlciBvZiB0aGUgdHdvIG91dHB1dCBtYXBzLiAgVGhlIE8obSkgdGVybSBpcyBkdWUgdG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlXG4gICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWFwcy4gKilcbiAgdmFsIHNwbGl0X2x0X2dlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0XSByZXR1cm5zIFtgT2sgbWFwXSB3aGVyZSBbbWFwXSBjb250YWlucyBhbGwgdGhlXG4gICAgICBbKGtleSwgdmFsdWUpXSBwYWlycyBmcm9tIHRoZSB0d28gaW5wdXQgbWFwcyBpZiBhbGwgdGhlIGtleXMgZnJvbSBbbG93ZXJfcGFydF0gYXJlXG4gICAgICBsZXNzIHRoYW4gYWxsIHRoZSBrZXlzIGZyb20gW3VwcGVyX3BhcnRdLiAgT3RoZXJ3aXNlIGl0IHJldHVybnNcbiAgICAgIFtgT3ZlcmxhcHBpbmdfa2V5X3Jhbmdlc10uXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhsb2cgbikgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgbGFyZ2VyIGlucHV0IG1hcC4gIFRoaXMgY2FuIGJlXG4gICAgICBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIFtNYXAubWVyZ2VdIG9yIHJlcGVhdGVkIFtNYXAuYWRkXS5cblxuICAgICAge1tcbiAgICAgICAgYXNzZXJ0IChtYXRjaCBNYXAuYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IHdpdGhcbiAgICAgICAgICB8IGBPayB3aG9sZV9tYXAgLT5cbiAgICAgICAgICAgIE1hcC50b19hbGlzdCB3aG9sZV9tYXBcbiAgICAgICAgICAgID0gTGlzdC5hcHBlbmQgKHRvX2FsaXN0IGxvd2VyX3BhcnQpICh0b19hbGlzdCB1cHBlcl9wYXJ0KVxuICAgICAgICAgIHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgLT4gdHJ1ZSk7XG4gICAgICBdfSAqKVxuICB2YWwgYXBwZW5kXG4gICAgOiAgbG93ZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gdXBwZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF1cblxuICAoKiogW3N1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZF0gcmV0dXJucyBhIG1hcCBjb250YWluaW5nIGFsbCB0aGUgZW50cmllcyBmcm9tXG4gICAgICBbdF0gd2hvc2Uga2V5cyBsaWUgaW5zaWRlIHRoZSBpbnRlcnZhbCBpbmRpY2F0ZWQgYnkgW35sb3dlcl9ib3VuZF0gYW5kXG4gICAgICBbfnVwcGVyX2JvdW5kXS4gIElmIHRoaXMgaW50ZXJ2YWwgaXMgZW1wdHksIGFuIGVtcHR5IG1hcCBpcyByZXR1cm5lZC5cblxuICAgICAgUnVudGltZSBpcyBPKG0gKyBsb2cgbiksIHdoZXJlIG4gaXMgdGhlIHNpemUgb2YgdGhlIGlucHV0IG1hcCBhbmQgbSBpcyB0aGUgc2l6ZSBvZlxuICAgICAgdGhlIG91dHB1dCBtYXAuICBUaGUgTyhtKSB0ZXJtIGlzIGR1ZSB0byB0aGUgbmVlZCB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCBvZiB0aGVcbiAgICAgIG91dHB1dCBtYXAuICopXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBsb3dlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2sgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW2ZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mXSBmb2xkcyBbZl0gKHdpdGggaW5pdGlhbCB2YWx1ZSBbfmluaXRdKVxuICAgICAgb3ZlciBhbGwga2V5cyAoYW5kIHRoZWlyIGFzc29jaWF0ZWQgdmFsdWVzKSB0aGF0IGFyZSBpbiB0aGUgcmFuZ2UgW1ttaW4sIG1heF1dXG4gICAgICAoaW5jbHVzaXZlKS4gICopXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBtaW46J2tcbiAgICAtPiBtYXg6J2tcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICAoKiogW3JhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4XSByZXR1cm5zIGFuIGFzc29jaWF0aXZlIGxpc3Qgb2YgdGhlIGVsZW1lbnRzIHdob3NlIGtleXNcbiAgICAgIGxpZSBpbiBbW21pbiwgbWF4XV0gKGluY2x1c2l2ZSksIHdpdGggdGhlIHNtYWxsZXN0IGtleSBiZWluZyBhdCB0aGUgaGVhZCBvZiB0aGVcbiAgICAgIGxpc3QuICopXG4gIHZhbCByYW5nZV90b19hbGlzdCA6ICgnaywgJ3YsICdjbXApIHQgLT4gbWluOidrIC0+IG1heDonayAtPiAoJ2sgKiAndikgbGlzdFxuXG4gICgqKiBbY2xvc2VzdF9rZXkgdCBkaXIga10gcmV0dXJucyB0aGUgWyhrZXksIHZhbHVlKV0gcGFpciBpbiBbdF0gd2l0aCBba2V5XSBjbG9zZXN0IHRvXG4gICAgICBba10gdGhhdCBzYXRpc2ZpZXMgdGhlIGdpdmVuIGluZXF1YWxpdHkgYm91bmQuXG5cbiAgICAgIEZvciBleGFtcGxlLCBbY2xvc2VzdF9rZXkgdCBgTGVzc190aGFuIGtdIHdvdWxkIGJlIHRoZSBwYWlyIHdpdGggdGhlIGNsb3Nlc3Qga2V5IHRvXG4gICAgICBba10gd2hlcmUgW2tleSA8IGtdLlxuXG4gICAgICBbdG9fc2VxdWVuY2VdIGNhbiBiZSB1c2VkIHRvIGdldCB0aGUgc2FtZSByZXN1bHRzIGFzIFtjbG9zZXN0X2tleV0uICBJdCBpcyBsZXNzXG4gICAgICBlZmZpY2llbnQgZm9yIGluZGl2aWR1YWwgbG9va3VwcyBidXQgbW9yZSBlZmZpY2llbnQgZm9yIGZpbmRpbmcgbWFueSBlbGVtZW50cyBzdGFydGluZ1xuICAgICAgYXQgc29tZSB2YWx1ZS4gKilcbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAtPiAna1xuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICAoKiogW250aCB0IG5dIGZpbmRzIHRoZSAoa2V5LCB2YWx1ZSkgcGFpciBvZiByYW5rIG4gKGkuZS4sIHN1Y2ggdGhhdCB0aGVyZSBhcmUgZXhhY3RseSBuXG4gICAgICBrZXlzIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZm91bmQga2V5KSwgaWYgb25lIGV4aXN0cy4gIE8obG9nKGxlbmd0aCB0KSArIG4pIHRpbWUuICopXG4gIHZhbCBudGggOiAoJ2ssICd2LCBfKSB0IC0+IGludCAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIG50aF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+IGludCAtPiAnayAqICd2XG5cbiAgKCoqIFtyYW5rIHQga10gSWYgW2tdIGlzIGluIFt0XSwgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIFtrXSBpblxuICAgICAgW3RdLCBhbmQgW05vbmVdIG90aGVyd2lzZS4gKilcbiAgdmFsIHJhbmsgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+IGludCBvcHRpb25cblxuXG5cbiAgKCoqIFt0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHRdXG4gICAgICBnaXZlcyBhIHNlcXVlbmNlIG9mIGtleS12YWx1ZSBwYWlycyBiZXR3ZWVuIFtrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dIGFuZFxuICAgICAgW2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b10gaW5jbHVzaXZlLCBwcmVzZW50ZWQgaW4gW29yZGVyXS4gIElmXG4gICAgICBba2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID4ga2V5c19sZXNzX29yX2VxdWFsX3RvXSwgdGhlIHNlcXVlbmNlIGlzXG4gICAgICBlbXB0eS5cblxuICAgICAgV2hlbiBuZWl0aGVyIFtrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9dIG5vciBba2V5c19sZXNzX29yX2VxdWFsX3RvXSBhcmVcbiAgICAgIHByb3ZpZGVkLCB0aGUgY29zdCBpcyBPKGxvZyBuKSB1cCBmcm9udCBhbmQgYW1vcnRpemVkIE8oMSkgdG8gcHJvZHVjZVxuICAgICAgZWFjaCBlbGVtZW50LiBJZiBlaXRoZXIgaXMgcHJvdmlkZWQgKGFuZCBpcyB1c2VkIGJ5IHRoZSBvcmRlciBwYXJhbWV0ZXJcbiAgICAgIHByb3ZpZGVkKSwgdGhlbiB0aGUgdGhlIGNvc3QgaXMgTyhuKSB1cCBmcm9udCwgYW5kIGFtb3J0aXplZCBPKDEpIHRvXG4gICAgICBwcm9kdWNlIGVhY2ggZWxlbWVudC4gKilcbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5ICgqKiBkZWZhdWx0ICopIHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidrXG4gICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzona1xuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIHdoaWNoIGVsdF0gcmV0dXJucyB0aGUgWyhrZXksIHZhbHVlKV0gcGFpciBpbiBbdF1cbiAgICAgIHNwZWNpZmllZCBieSBbY29tcGFyZV0gYW5kIFt3aGljaF0sIGlmIG9uZSBleGlzdHMuXG5cbiAgICAgIFt0XSBtdXN0IGJlIHNvcnRlZCBpbiBpbmNyZWFzaW5nIG9yZGVyIGFjY29yZGluZyB0byBbY29tcGFyZV0sIHdoZXJlIFtjb21wYXJlXSBhbmRcbiAgICAgIFtlbHRdIGRpdmlkZSBbdF0gaW50byB0aHJlZSAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8ICA8IGVsdCAgfCAgPSBlbHQgIHwgID4gZWx0ICB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gcmV0dXJucyBhbiBlbGVtZW50IG9uIHRoZSBib3VuZGFyeSBvZiBzZWdtZW50cyBhcyBzcGVjaWZpZWQgYnlcbiAgICAgIFt3aGljaF0uICBTZWUgdGhlIGRpYWdyYW0gYmVsb3cgbmV4dCB0byB0aGUgW3doaWNoXSB2YXJpYW50cy5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIGRvZXMgbm90IGNoZWNrIHRoYXQgW2NvbXBhcmVdIG9yZGVycyBbdF0sIGFuZCBiZWhhdmlvciBpc1xuICAgICAgdW5zcGVjaWZpZWQgaWYgW2NvbXBhcmVdIGRvZXNuJ3Qgb3JkZXIgW3RdLiAgQmVoYXZpb3IgaXMgYWxzbyB1bnNwZWNpZmllZCBpZlxuICAgICAgW2NvbXBhcmVdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gKCoqICAgICAgICB7diB8IDwgZWx0IFggfCAgICAgICAgICAgICAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAoKiogICAgIHt2IHwgICAgICA8PSBlbHQgICAgICAgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgICA9IGVsdCBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCBYID0gZWx0ICAgfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gKCoqIHt2ICAgICAgICAgICB8IFggICAgICAgPj0gZWx0ICAgICAgfCB2fSAqKVxuICAgICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAoKiogICAge3YgICAgICAgICAgICAgICAgICAgICAgIHwgWCA+IGVsdCB8IHZ9ICopXG4gICAgICAgXVxuICAgIC0+ICdrZXlcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIHdoaWNoXSB0YWtlcyBhIFtzZWdtZW50X29mXSBmdW5jdGlvbiB0aGF0XG4gICAgICBkaXZpZGVzIFt0XSBpbnRvIHR3byAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8IHNlZ21lbnRfb2YgZWx0ID0gYExlZnQgfCBzZWdtZW50X29mIGVsdCA9IGBSaWdodCB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIHJldHVybnMgdGhlIFsoa2V5LCB2YWx1ZSldIHBhaXIgb24gdGhlIGJvdW5kYXJ5IG9mIHRoZVxuICAgICAgc2VnbWVudHMgYXMgc3BlY2lmaWVkIGJ5IFt3aGljaF06IFtgTGFzdF9vbl9sZWZ0XSB5aWVsZHMgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGVcbiAgICAgIGxlZnQgc2VnbWVudCwgd2hpbGUgW2BGaXJzdF9vbl9yaWdodF0geWllbGRzIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSByaWdodCBzZWdtZW50LlxuICAgICAgSXQgcmV0dXJucyBbTm9uZV0gaWYgdGhlIHNlZ21lbnQgaXMgZW1wdHkuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbc2VnbWVudF9vZl0gc2VnbWVudHMgW3RdIGFzIGluIHRoZVxuICAgICAgZGlhZ3JhbSwgYW5kIGJlaGF2aW9yIGlzIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBkb2Vzbid0IHNlZ21lbnQgW3RdLiAgQmVoYXZpb3JcbiAgICAgIGlzIGFsc28gdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooKGtleTonayAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlbQGxvY2FsXSlcbiAgICAtPiBbIGBMYXN0X29uX2xlZnQgfCBgRmlyc3Rfb25fcmlnaHQgXVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc3VicmFuZ2VdIHRha2VzIGEgW2NvbXBhcmVdIGZ1bmN0aW9uIHRoYXQgZGl2aWRlcyBbdF0gaW50byB0aHJlZVxuICAgICAgKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50cyB3aXRoIHJlc3BlY3QgdG8gW2xvd2VyX2JvdW5kXSBhbmQgW3VwcGVyX2JvdW5kXTpcblxuICAgICAge3ZcbiAgICAgICAgfCBCZWxvd19sb3dlcl9ib3VuZCB8IEluX3JhbmdlIHwgQWJvdmVfdXBwZXJfYm91bmQgfFxuICAgICAgdn1cblxuICAgICAgYW5kIHJldHVybnMgYSBtYXAgb2YgdGhlIFtJbl9yYW5nZV0gc2VnbWVudC5cblxuICAgICAgUnVudGltZSBpcyBPKGxvZyBtICsgbikgd2hlcmUgW21dIGlzIHRoZSBsZW5ndGggb2YgdGhlIGlucHV0IG1hcCBhbmQgW25dIGlzIHRoZVxuICAgICAgbGVuZ3RoIG9mIHRoZSBvdXRwdXQuIFRoZSBsaW5lYXIgdGVybSBpbiBbbl0gaXMgdG8gY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQuXG5cbiAgICAgIEJlaGF2aW9yIGlzIHVuZGVmaW5lZCBpZiBbY29tcGFyZV0gZG9lcyBub3Qgc2VnbWVudCBbdF0gYXMgc2hvd24gYWJvdmUsIG9yIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBpdHMgaW5wdXRzLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2JvdW5kIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIHRyYXZlcnNhbHMgdG8gcmVjb25zdHJ1Y3QgYSBtYXAgd2l0aGluIGFuIGFwcGxpY2F0aXZlLiBVc2VzXG4gICAgICBbTGF6eV9hcHBsaWNhdGl2ZV0gc28gdGhhdCB0aGUgbWFwIGNhbiBiZSB0cmF2ZXJzZWQgd2l0aGluIHRoZSBhcHBsaWNhdGl2ZSwgcmF0aGVyXG4gICAgICB0aGFuIG5lZWRpbmcgdG8gYmUgdHJhdmVyc2VkIGFsbCBhdCBvbmNlLCBvdXRzaWRlIHRoZSBhcHBsaWNhdGl2ZS4gKilcbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpIDogc2lnXG4gICAgdmFsIG1hcGlcbiAgICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIEEudClcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0IEEudFxuXG4gICAgdmFsIGZpbHRlcl9tYXBpXG4gICAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24gQS50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgQS50XG4gIGVuZFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF9tYXAgPSBpbnQgTWFwLk0oU3RyaW5nKS50XG4gICAgICBdfVxuXG4gICAgICB3aGljaCBzdGFuZHMgZm9yOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfbWFwID0gKFN0cmluZy50LCBpbnQsIFN0cmluZy5jb21wYXJhdG9yX3dpdG5lc3MpIE1hcC50XG4gICAgICBdfVxuXG4gICAgICBUaGUgcG9pbnQgaXMgdGhhdCBbaW50IE1hcC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZCBzeW50YXhcbiAgICAgIGRvZXNuJ3QgKGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcywgc2F5LCBbU3RyaW5nLnNleHBfb2ZfY29tcGFyYXRvcl93aXRuZXNzXVxuICAgICAgLS0gaW5zdGVhZCB5b3Ugd291bGQgd2FudCB0byBwYXNzIHRoZSBjb21wYXJhdG9yIGRpcmVjdGx5KS5cblxuICAgICAgSW4gYWRkaXRpb24sIHdoZW4gdXNpbmcgW0BAZGVyaXZpbmddLCB0aGUgcmVxdWlyZW1lbnRzIG9uIHRoZSBrZXkgbW9kdWxlIGFyZSBvbmx5XG4gICAgICB0aG9zZSBuZWVkZWQgdG8gc2F0aXNmeSB3aGF0IHlvdSBhcmUgdHJ5aW5nIHRvIGRlcml2ZSBvbiB0aGUgbWFwIGl0c2VsZi4gU2F5IHlvdVxuICAgICAgd3JpdGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgdCA9IGludCBNYXAuTShYKS50IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICBdfVxuXG4gICAgICB0aGVuIHRoaXMgd2lsbCBiZSB3ZWxsIHR5cGVkIGV4YWN0bHkgaWYgW1hdIGNvbnRhaW5zIGF0IGxlYXN0OlxuICAgICAgLSBhIHR5cGUgW3RdIHdpdGggbm8gcGFyYW1ldGVyc1xuICAgICAgLSBhIGNvbXBhcmF0b3Igd2l0bmVzc1xuICAgICAgLSBhIFtoYXNoX2ZvbGRfdF0gZnVuY3Rpb24gd2l0aCB0aGUgcmlnaHQgdHlwZSAqKVxuICBtb2R1bGUgTSAoSyA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZCkgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2tleSwgJ3ZhbHVlLCAnY21wKSB0IDo9ICgna2V5LCAndmFsdWUsICdjbXApIHRcblxuICAoKiogW1VzaW5nX2NvbXBhcmF0b3JdIGlzIGEgc2ltaWxhciBpbnRlcmZhY2UgYXMgdGhlIHRvcGxldmVsIG9mIFtNYXBdLCBleGNlcHQgdGhlXG4gICAgICBmdW5jdGlvbnMgdGFrZSBhIFt+Y29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudF0sIHdoZXJlYXMgdGhlIGZ1bmN0aW9ucyBhdCB0aGVcbiAgICAgIHRvcGxldmVsIG9mIFtNYXBdIHRha2UgYSBbKCdrLCAnY21wKSBjb21wYXJhdG9yXS4gKilcbiAgbW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAoJ2ssICsndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2sgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoU2V4cC50IC0+ICdrKVxuICAgICAgLT4gKFNleHAudCAtPiAndilcbiAgICAgIC0+IFNleHAudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgbW9kdWxlIFRyZWUgOiBzaWdcbiAgICAgIHR5cGUgKCsnaywgKyd2LCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICB2YWwgc2V4cF9vZl90XG4gICAgICAgIDogICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgndiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgICAtPiAoU2V4cC50IC0+ICdrKVxuICAgICAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgICAgICAtPiBTZXhwLnRcbiAgICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2tcbiAgICAgICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnY1xuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuXG4gICAgICB2YWwgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA6IChfLCBfLCBfKSB0XG5cbiAgICAgICgqKiBbQnVpbGRfaW5jcmVhc2luZ10gY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGEgbWFwIGluY3JlbWVudGFsbHkgZnJvbSBhXG4gICAgICAgICAgc2VxdWVuY2UgdGhhdCBpcyBrbm93biB0byBiZSBpbmNyZWFzaW5nLlxuXG4gICAgICAgICAgVGhlIHRvdGFsIHRpbWUgY29tcGxleGl0eSBvZiBjb25zdHJ1Y3RpbmcgYSBtYXAgdGhpcyB3YXkgaXMgTyhuKSwgd2hpY2ggaXMgbW9yZVxuICAgICAgICAgIGVmZmljaWVudCB0aGFuIHVzaW5nIFtNYXAuYWRkXSBieSBhIGxvZ2FyaXRobWljIGZhY3Rvci5cblxuICAgICAgICAgIFRoaXMgaW50ZXJmYWNlIGNhbiBiZSB0aG91Z2h0IG9mIGFzIGEgZHVhbCBvZiBbdG9fc2VxdWVuY2VdLCBidXQgd2UgZG9uJ3QgaGF2ZVxuICAgICAgICAgIGFuIGVxdWFsbHkgbmVhdCBpZGlvbSBmb3IgdGhlIGR1YWxzIG9mIHNlcXVlbmNlcyAoW29mX3NlcXVlbmNlXSBpcyBtdWNoIGxlc3NcbiAgICAgICAgICBnZW5lcmFsIGJlY2F1c2UgaXQgZG9lcyBub3QgYWxsb3cgdGhlIHNlcXVlbmNlIHRvIGJlIHByb2R1Y2VkIGFzeW5jaHJvbm91c2x5KS4gKilcbiAgICAgIG1vZHVsZSBCdWlsZF9pbmNyZWFzaW5nIDogc2lnXG4gICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgdHlwZSAoJ2ssICd2LCAndykgdFxuXG4gICAgICAgIHZhbCBlbXB0eSA6ICgnaywgJ3YsICd3KSB0XG5cbiAgICAgICAgKCoqIFRpbWUgY29tcGxleGl0eSBvZiBbYWRkX2V4bl0gaXMgYW1vcnRpemVkIGNvbnN0YW50LXRpbWUgKGlmIFt0XSBpcyB1c2VkXG4gICAgICAgICAgICBsaW5lYXJseSksIHdpdGggYSB3b3JzdC1jYXNlIE8obG9nKG4pKSB0aW1lLiAqKVxuICAgICAgICB2YWwgYWRkX2V4blxuICAgICAgICAgIDogICgnaywgJ3YsICd3KSB0XG4gICAgICAgICAgLT4gY29tcGFyYXRvcjooJ2ssICd3KSBDb21wYXJhdG9yLnRcbiAgICAgICAgICAtPiBrZXk6J2tcbiAgICAgICAgICAtPiBkYXRhOid2XG4gICAgICAgICAgLT4gKCdrLCAndiwgJ3cpIHRcblxuICAgICAgICAoKiogVGltZSBjb21wbGV4aXR5IGlzIE8obG9nKG4pKS4gKilcbiAgICAgICAgdmFsIHRvX3RyZWUgOiAoJ2ssICd2LCAndykgdCAtPiAoJ2ssICd2LCAndykgdHJlZVxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2tcbiAgICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gJ2NcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAgIHZhbCBoYXNoX2ZvbGRfZGlyZWN0XG4gICAgICA6ICAnayBIYXNoLmZvbGRlclxuICAgICAgLT4gJ3YgSGFzaC5mb2xkZXJcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAgICgqKiBUbyBnZXQgYXJvdW5kIHRoZSB2YWx1ZSByZXN0cmljdGlvbiwgYXBwbHkgdGhlIGZ1bmN0b3IgYW5kIGluY2x1ZGUgaXQuIFlvdVxuICAgICAgICBjYW4gc2VlIGFuIGV4YW1wbGUgb2YgdGhpcyBpbiB0aGUgW1BvbHldIHN1Ym1vZHVsZSBiZWxvdy4gKilcbiAgICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoSyA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gICAgICB2YWwgZW1wdHkgOiAoJ2EgSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmRcbiAgZW5kXG5cbiAgKCoqIEEgcG9seW1vcnBoaWMgTWFwLiAqKVxuICBtb2R1bGUgUG9seSA6XG4gICAgU19wb2x5XG4gICAgd2l0aCB0eXBlICgna2V5LCArJ3ZhbHVlKSB0ID0gKCdrZXksICd2YWx1ZSwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgICBhbmQgdHlwZSAoJ2tleSwgKyd2YWx1ZSkgdHJlZSA9XG4gICAgICAgICAgICgna2V5LCAndmFsdWUsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIFVzaW5nX2NvbXBhcmF0b3IuVHJlZS50XG4gICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAoKiogQ3JlYXRlIGEgbWFwIGZyb20gYSB0cmVlIHVzaW5nIHRoZSBnaXZlbiBjb21wYXJhdG9yLiAqKVxuICB2YWwgb2ZfdHJlZVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIFVzaW5nX2NvbXBhcmF0b3IuVHJlZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBFeHRyYWN0IGEgdHJlZSBmcm9tIGEgbWFwLiAqKVxuICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcblxuXG4gICgqKiB7MiBNb2R1bGVzIGFuZCBtb2R1bGUgdHlwZXMgZm9yIGV4dGVuZGluZyBbTWFwXX1cblxuICAgICAgRm9yIHVzZSBpbiBleHRlbnNpb25zIG9mIEJhc2UsIGxpa2UgW0NvcmVdLiAqKVxuXG4gIG1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBXaXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbiAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IFdpdGhvdXRfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBBY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBUXG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBNYXBfaW50Zi5XaXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBNYXBfaW50Zi5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IE1hcF9pbnRmLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG5tb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA9IFNlcXVlbmNlLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50XG5cbm1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgc2V0IDogJ2FcbiAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICB9XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBDb250YWluZXIuR2VuZXJpY1xuXG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgKCoqIFRoZSBbYWNjZXNzX29wdGlvbnNdIHR5cGUgaXMgdXNlZCB0byBtYWtlIFtBY2Nlc3NvcnNfZ2VuZXJpY10gZmxleGlibGUgYXMgdG8gd2hldGhlclxuICAgICAgYSBjb21wYXJhdG9yIGlzIHJlcXVpcmVkIHRvIGJlIHBhc3NlZCB0byBjZXJ0YWluIGZ1bmN0aW9ucy4gKilcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgaW52YXJpYW50cyA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IGJvb2wpIGFjY2Vzc19vcHRpb25zXG5cbiAgKCoqIG92ZXJyaWRlIFtDb250YWluZXJdJ3MgW21lbV0gKilcbiAgdmFsIG1lbSA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBhZGQgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgcmVtb3ZlIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIHVuaW9uIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGludGVyIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGRpZmYgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhIGVsdCwgJ2EgZWx0KSBFaXRoZXIudCBTZXF1ZW5jZS50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gaW50KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgZXF1YWwgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IG9mXzooJ2EsICdjbXApIHQgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGFyZV9kaXNqb2ludCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHZhbCBpc19zdWJzZXRcbiAgICAgIDogKCAnYVxuICAgICAgICAsICdjbXBcbiAgICAgICAgLCAoJ2EsICdjbXApIHQgTmFtZWQudCAtPiBvZl86KCdhLCAnY21wKSB0IE5hbWVkLnQgLT4gdW5pdCBPcl9lcnJvci50IClcbiAgICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gICAgdmFsIGVxdWFsXG4gICAgICA6ICggJ2FcbiAgICAgICAgLCAnY21wXG4gICAgICAgICwgKCdhLCAnY21wKSB0IE5hbWVkLnQgLT4gKCdhLCAnY21wKSB0IE5hbWVkLnQgLT4gdW5pdCBPcl9lcnJvci50IClcbiAgICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuICBlbmRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIGVsdCAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2EgZWx0IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gIHZhbCBpdGVyMlxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiBmOlxuICAgICAgICAgICAoKFsgYExlZnQgb2YgJ2EgZWx0IHwgYFJpZ2h0IG9mICdhIGVsdCB8IGBCb3RoIG9mICdhIGVsdCAqICdhIGVsdCBdIC0+IHVuaXQpXG4gICAgICAgICAgICBbQGxvY2FsXSlcbiAgICAgIC0+IHVuaXQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdjbXApIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBlbGVtZW50cyA6ICgnYSwgXykgdCAtPiAnYSBlbHQgbGlzdFxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0XG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcblxuICB2YWwgc3BsaXRcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCAqICdhIGVsdCBvcHRpb24gKiAoJ2EsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzcGxpdF9sZV9ndFxuICAgIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc3BsaXRfbHRfZ2VcbiAgICA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGdyb3VwX2J5XG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gZXF1aXY6KCgnYSBlbHQgLT4gJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnY21wKSB0IGxpc3RcblxuICB2YWwgZmluZF9leG4gOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSBlbHRcbiAgdmFsIG50aCA6ICgnYSwgXykgdCAtPiBpbnQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgcmVtb3ZlX2luZGV4IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gaW50IC0+ICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdjbXApIHQgLT4gKCdhIGVsdCwgJ2NtcCBjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICdhIGVsdCBTZXF1ZW5jZS50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gY29tcGFyZTooKCdhIGVsdCAtPiAna2V5IC0+IGludClbQGxvY2FsXSlcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgICAgLT4gJ2tleVxuICAgICAgLT4gJ2EgZWx0IG9wdGlvbiApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiBzZWdtZW50X29mOigoJ2EgZWx0IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlbQGxvY2FsXSlcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAgIC0+ICdhIGVsdCBvcHRpb24gKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EgZWx0LCAnYSBlbHQpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnY21wKSBzZXRcbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcbiAgdHlwZSAnYSBlbHRcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBjcmVhdGVfb3B0aW9uc1xuICB0eXBlICdjbXAgY21wXG5cbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2EsICdjbXAsICdhIGVsdCAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCB1bmlvbl9saXN0IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgbGlzdCAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBvZl9saXN0IDogKCdhLCAnY21wLCAnYSBlbHQgbGlzdCAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBvZl9zZXF1ZW5jZSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IFNlcXVlbmNlLnQgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgb2ZfYXJyYXkgOiAoJ2EsICdjbXAsICdhIGVsdCBhcnJheSAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiAoJ2EsICdjbXAsICdhIGVsdCBhcnJheSAtPiAoJ2EsICdjbXApIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgOiAoJ2EsICdjbXAsICdhIGVsdCBhcnJheSAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAoJ2EsICdjbXAsIGxlbjppbnQgLT4gZjooKGludCAtPiAnYSBlbHQpW0Bsb2NhbF0pIC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAoJ2EsIF8sICdhIGVsdCBsaXN0IC0+ICdhIGVsdCBsaXN0KSBjcmVhdGVfb3B0aW9uc1xuXG4gICgqKiBUaGUgdHlwZXMgb2YgW21hcF0gYW5kIFtmaWx0ZXJfbWFwXSBhcmUgc3VidGxlLiAgVGhlIGlucHV0IHNldCwgWygnYSwgXykgc2V0XSxcbiAgICAgIHJlZmxlY3RzIHRoZSBmYWN0IHRoYXQgdGhlc2UgZnVuY3Rpb25zIHRha2UgYSBzZXQgb2YgKmFueSogdHlwZSwgd2l0aCBhbnlcbiAgICAgIGNvbXBhcmF0b3IsIHdoaWxlIHRoZSBvdXRwdXQgc2V0LCBbKCdiLCAnY21wKSB0XSwgcmVmbGVjdHMgdGhhdCB0aGUgb3V0cHV0IHNldCBoYXNcbiAgICAgIHRoZSBwYXJ0aWN1bGFyIFsnY21wXSBvZiB0aGUgY3JlYXRpb24gZnVuY3Rpb24uICBUaGUgY29tcGFyYXRvciBjYW4gY29tZSBpbiBvbmUgb2ZcbiAgICAgIHRocmVlIHdheXMsIGRlcGVuZGluZyBvbiB3aGljaCBzZXQgbW9kdWxlIGlzIHVzZWRcblxuICAgICAgLSBbU2V0Lm1hcF0gLS0gY29tcGFyYXRvciBjb21lcyBhcyBhbiBhcmd1bWVudFxuICAgICAgLSBbU2V0LlBvbHkubWFwXSAtLSBjb21wYXJhdG9yIGlzIHBvbHltb3JwaGljIGNvbXBhcmlzb25cbiAgICAgIC0gW0Zvby5TZXQubWFwXSAtLSBjb21wYXJhdG9yIGlzIFtGb28uY29tcGFyYXRvcl0gKilcbiAgdmFsIG1hcFxuICAgIDogKCdiLCAnY21wLCAoJ2EsIF8pIHNldCAtPiBmOigoJ2EgLT4gJ2IgZWx0KVtAbG9jYWxdKSAtPiAoJ2IsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICggJ2JcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsIF8pIHNldCAtPiBmOigoJ2EgLT4gJ2IgZWx0IG9wdGlvbilbQGxvY2FsXSkgLT4gKCdiLCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfdHJlZSA6ICgnYSwgJ2NtcCwgKCdhIGVsdCwgJ2NtcCBjbXApIHRyZWUgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnZWx0LCAnY21wKSB0XG4gIHR5cGUgKCdlbHQsICdjbXApIHRyZWVcbiAgdHlwZSAnZWx0IGVsdFxuICB0eXBlICdjbXAgY21wXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIGNtcFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIGNtcFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcG9seSA9IHNpZ1xuICB0eXBlICdlbHQgdFxuICB0eXBlICdlbHQgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdlbHQsICdjbXApIHQgOj0gJ2VsdCB0XG4gICAgd2l0aCB0eXBlICgnZWx0LCAnY21wKSB0cmVlIDo9ICdlbHQgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2FcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgbW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxuICB2YWwgc2V4cF9vZl9tX190IDogKG1vZHVsZSBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSAnZWx0KSAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiBTZXhwLnRcblxuICB2YWwgbV9fdF9vZl9zZXhwXG4gICAgOiAgKG1vZHVsZSBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSAnZWx0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gU2V4cC50XG4gICAgLT4gKCdlbHQsICdjbXApIHRcblxuICB2YWwgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAobW9kdWxlIE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gJ2VsdClcbiAgICAtPiAoJ2VsdCwgJ2NtcCkgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIHZhbCBjb21wYXJlX21fX3QgOiAobW9kdWxlIENvbXBhcmVfbSkgLT4gKCdlbHQsICdjbXApIHQgLT4gKCdlbHQsICdjbXApIHQgLT4gaW50XG4gIHZhbCBlcXVhbF9tX190IDogKG1vZHVsZSBFcXVhbF9tKSAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiBib29sXG5cbiAgdmFsIGhhc2hfZm9sZF9tX190XG4gICAgOiAgKG1vZHVsZSBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9ICdlbHQpXG4gICAgLT4gSGFzaC5zdGF0ZVxuICAgIC0+ICgnZWx0LCBfKSB0XG4gICAgLT4gSGFzaC5zdGF0ZVxuXG4gIHZhbCBoYXNoX21fX3QgOiAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2VsdCkgLT4gKCdlbHQsIF8pIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIHR5cGUgU2V0ID0gc2lnXG4gICgqKiBTZXRzIGJhc2VkIG9uIHshQ29tcGFyYXRvci5TfS5cblxuICAgICAgQ3JlYXRvcnMgcmVxdWlyZSBhIGNvbXBhcmF0b3IgYXJndW1lbnQgdG8gYmUgcGFzc2VkIGluLCB3aGVyZWFzIGFjY2Vzc29ycyB1c2UgdGhlXG4gICAgICBjb21wYXJhdG9yIHByb3ZpZGVkIGJ5IHRoZSBpbnB1dCBzZXQuICopXG5cbiAgKCoqIFRoZSB0eXBlIG9mIGEgc2V0LiAgVGhlIGZpcnN0IHR5cGUgcGFyYW1ldGVyIGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgdGhlIGVsZW1lbnQsIGFuZFxuICAgICAgdGhlIHNlY29uZCBpZGVudGlmaWVzIHRoZSBjb21wYXJhdG9yLCB3aGljaCBkZXRlcm1pbmVzIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uIHRoYXRcbiAgICAgIGlzIHVzZWQgZm9yIG9yZGVyaW5nIGVsZW1lbnRzIGluIHRoaXMgc2V0LiAgTWFueSBvcGVyYXRpb25zIChlLmcuLCB7IXVuaW9ufSksXG4gICAgICByZXF1aXJlIHRoYXQgdGhleSBiZSBwYXNzZWQgc2V0cyB3aXRoIHRoZSBzYW1lIGVsZW1lbnQgdHlwZSBhbmQgdGhlIHNhbWUgY29tcGFyYXRvclxuICAgICAgdHlwZS4gKilcbiAgdHlwZSAoISdlbHQsICEnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICghJ2VsdCwgISdjbXApIHQgOj0gKCdlbHQsICdjbXApIHRcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID0gKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0xMl0gdXNlIFtDb21wYXJhdG9yLk1vZHVsZS50XSBpbnN0ZWFkXCJdXG5cbiAgKCoqIFRlc3RzIGludGVybmFsIGludmFyaWFudHMgb2YgdGhlIHNldCBkYXRhIHN0cnVjdHVyZS4gIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLiAqKVxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBhIGZpcnN0LWNsYXNzIG1vZHVsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIG90aGVyIG1hcC9zZXQvZXRjXG4gICAgICB3aXRoIHRoZSBzYW1lIG5vdGlvbiBvZiBjb21wYXJpc29uLiAqKVxuICB2YWwgY29tcGFyYXRvcl9zIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG5cbiAgKCoqIENyZWF0ZXMgYW4gZW1wdHkgc2V0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb21wYXJhdG9yLiAqKVxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBzZXQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbXBhcmF0b3IgdGhhdCBjb250YWlucyBvbmx5IHRoZSBwcm92aWRlZFxuICAgICAgZWxlbWVudC4gKilcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogUmV0dXJucyB0aGUgY2FyZGluYWxpdHkgb2YgdGhlIHNldC4gW08oMSldLiAqKVxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG5cbiAgKCoqIFtpc19lbXB0eSB0XSBpcyBbdHJ1ZV0gaWZmIFt0XSBpcyBlbXB0eS4gIFtPKDEpXS4gKilcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBbbWVtIHQgYV0gcmV0dXJucyBbdHJ1ZV0gaWZmIFthXSBpcyBpbiBbdF0uICBbTyhsb2cgbildLiAqKVxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIC0+IGJvb2xcblxuICAoKiogW2FkZCB0IGFdIHJldHVybnMgYSBuZXcgc2V0IHdpdGggW2FdIGFkZGVkIHRvIFt0XSwgb3IgcmV0dXJucyBbdF0gaWYgW21lbSB0IGFdLlxuICAgICAgW08obG9nIG4pXS4gKilcbiAgdmFsIGFkZCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3JlbW92ZSB0IGFdIHJldHVybnMgYSBuZXcgc2V0IHdpdGggW2FdIHJlbW92ZWQgZnJvbSBbdF0gaWYgW21lbSB0IGFdLCBvciByZXR1cm5zIFt0XVxuICAgICAgb3RoZXJ3aXNlLiAgW08obG9nIG4pXS4gKilcbiAgdmFsIHJlbW92ZSA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3VuaW9uIHQxIHQyXSByZXR1cm5zIHRoZSB1bmlvbiBvZiB0aGUgdHdvIHNldHMuICBbTyhsZW5ndGggdDEgKyBsZW5ndGggdDIpXS4gKilcbiAgdmFsIHVuaW9uIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3VuaW9uIGMgbGlzdF0gcmV0dXJucyB0aGUgdW5pb24gb2YgYWxsIHRoZSBzZXRzIGluIFtsaXN0XS4gIFRoZVxuICAgICAgW2NvbXBhcmF0b3JdIGFyZ3VtZW50IGlzIHJlcXVpcmVkIGZvciB0aGUgY2FzZSB3aGVyZSBbbGlzdF0gaXMgZW1wdHkuXG4gICAgICBbTyhtYXgoTGlzdC5sZW5ndGggbGlzdCwgbiBsb2cgbikpXSwgd2hlcmUgW25dIGlzIHRoZSBzdW0gb2Ygc2l6ZXMgb2YgdGhlIGlucHV0IHNldHMuICopXG4gIHZhbCB1bmlvbl9saXN0IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbaW50ZXIgdDEgdDJdIGNvbXB1dGVzIHRoZSBpbnRlcnNlY3Rpb24gb2Ygc2V0cyBbdDFdIGFuZCBbdDJdLiAgW08obGVuZ3RoIHQxICtcbiAgICAgIGxlbmd0aCB0MildLiAqKVxuICB2YWwgaW50ZXIgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbZGlmZiB0MSB0Ml0gY29tcHV0ZXMgdGhlIHNldCBkaWZmZXJlbmNlIFt0MSAtIHQyXSwgaS5lLiwgdGhlIHNldCBjb250YWluaW5nIGFsbFxuICAgICAgZWxlbWVudHMgaW4gW3QxXSB0aGF0IGFyZSBub3QgaW4gW3QyXS4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgZGlmZiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtzeW1tZXRyaWNfZGlmZiB0MSB0Ml0gcmV0dXJucyBhIHNlcXVlbmNlIG9mIGNoYW5nZXMgYmV0d2VlbiBbdDFdIGFuZCBbdDJdLiBJdCBpc1xuICAgICAgaW50ZW5kZWQgdG8gYmUgZWZmaWNpZW50IGluIHRoZSBjYXNlIHdoZXJlIFt0MV0gYW5kIFt0Ml0gc2hhcmUgYSBsYXJnZSBhbW91bnQgb2ZcbiAgICAgIHN0cnVjdHVyZS4gKilcbiAgdmFsIHN5bW1ldHJpY19kaWZmIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdhKSBFaXRoZXIudCBTZXF1ZW5jZS50XG5cbiAgKCoqIFtjb21wYXJlX2RpcmVjdCB0MSB0Ml0gY29tcGFyZXMgdGhlIHNldHMgW3QxXSBhbmQgW3QyXS4gIEl0IHJldHVybnMgdGhlIHNhbWUgcmVzdWx0XG4gICAgICBhcyBbY29tcGFyZV0sIGJ1dCB1bmxpa2UgY29tcGFyZSwgZG9lc24ndCByZXF1aXJlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgaW4gZm9yIHRoZVxuICAgICAgdHlwZSBwYXJhbWV0ZXJzIG9mIHRoZSBzZXQuICBbTyhsZW5ndGggdDEgKyBsZW5ndGggdDIpXS4gKilcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBpbnRcblxuICAoKiogSGFzaCBmdW5jdGlvbjogYSBidWlsZGluZyBibG9jayB0byB1c2Ugd2hlbiBoYXNoaW5nIGRhdGEgc3RydWN0dXJlcyBjb250YWluaW5nIHNldHMgaW5cbiAgICAgIHRoZW0uIFtoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbY29tcGFyZV9kaXJlY3RdIGlmZlxuICAgICAgW2hhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbKGNvbXBhcmF0b3IgcykuY29tcGFyZV0gb2YgdGhlIHNldCBbc10gYmVpbmdcbiAgICAgIGhhc2hlZC4gKilcbiAgdmFsIGhhc2hfZm9sZF9kaXJlY3QgOiAnYSBIYXNoLmZvbGRlciAtPiAoJ2EsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAoKiogW2VxdWFsIHQxIHQyXSByZXR1cm5zIFt0cnVlXSBpZmYgdGhlIHR3byBzZXRzIGhhdmUgdGhlIHNhbWUgZWxlbWVudHMuICBbTyhsZW5ndGggdDEgK1xuICAgICAgbGVuZ3RoIHQyKV0gKilcbiAgdmFsIGVxdWFsIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFtleGlzdHMgdCB+Zl0gcmV0dXJucyBbdHJ1ZV0gaWZmIHRoZXJlIGV4aXN0cyBhbiBbYV0gaW4gW3RdIGZvciB3aGljaCBbZiBhXS4gIFtPKG4pXSxcbiAgICAgIGJ1dCByZXR1cm5zIGFzIHNvb24gYXMgaXQgZmluZHMgYW4gW2FdIGZvciB3aGljaCBbZiBhXS4gKilcbiAgdmFsIGV4aXN0cyA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBbZm9yX2FsbCB0IH5mXSByZXR1cm5zIFt0cnVlXSBpZmYgZm9yIGFsbCBbYV0gaW4gW3RdLCBbZiBhXS4gIFtPKG4pXSwgYnV0IHJldHVybnMgYXNcbiAgICAgIHNvb24gYXMgaXQgZmluZHMgYW4gW2FdIGZvciB3aGljaCBbbm90IChmIGEpXS4gKilcbiAgdmFsIGZvcl9hbGwgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogW2NvdW50IHRdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBvZiBbdF0gZm9yIHdoaWNoIFtmXSByZXR1cm5zIFt0cnVlXS5cbiAgICAgIFtPKG4pXS4gKilcbiAgdmFsIGNvdW50IDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICAoKiogW3N1bSB0XSByZXR1cm5zIHRoZSBzdW0gb2YgW2YgdF0gZm9yIGVhY2ggW3RdIGluIHRoZSBzZXQuXG4gICAgICBbTyhuKV0uICopXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIENvbnRhaW5lci5TdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pXG4gICAgLT4gKCdhLCBfKSB0XG4gICAgLT4gZjooKCdhIC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gICgqKiBbZmluZCB0IGZdIHJldHVybnMgYW4gZWxlbWVudCBvZiBbdF0gZm9yIHdoaWNoIFtmXSByZXR1cm5zIHRydWUsIHdpdGggbm8gZ3VhcmFudGVlIGFzXG4gICAgICB0byB3aGljaCBlbGVtZW50IGlzIHJldHVybmVkLiAgW08obildLCBidXQgcmV0dXJucyBhcyBzb29uIGFzIGEgc3VpdGFibGUgZWxlbWVudCBpc1xuICAgICAgZm91bmQuICopXG4gIHZhbCBmaW5kIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICAoKiogW2ZpbmRfbWFwIHQgZl0gcmV0dXJucyBbYl0gZm9yIHNvbWUgW2FdIGluIFt0XSBmb3Igd2hpY2ggW2YgYSA9IFNvbWUgYl0uICBJZiBubyBzdWNoXG4gICAgICBbYV0gZXhpc3RzLCB0aGVuIFtmaW5kXSByZXR1cm5zIFtOb25lXS4gIFtPKG4pXSwgYnV0IHJldHVybnMgYXMgc29vbiBhcyBhIHN1aXRhYmxlXG4gICAgICBlbGVtZW50IGlzIGZvdW5kLiAqKVxuICB2YWwgZmluZF9tYXAgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Igb3B0aW9uXG5cbiAgKCoqIExpa2UgW2ZpbmRdLCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBmYWlsdXJlLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhXG5cbiAgKCoqIFtudGggdCBpXSByZXR1cm5zIHRoZSBbaV10aCBzbWFsbGVzdCBlbGVtZW50IG9mIFt0XSwgaW4gW08obG9nIG4pXSB0aW1lLiAgVGhlXG4gICAgICBzbWFsbGVzdCBlbGVtZW50IGhhcyBbaSA9IDBdLiAgUmV0dXJucyBbTm9uZV0gaWYgW2kgPCAwXSBvciBbaSA+PSBsZW5ndGggdF0uICopXG4gIHZhbCBudGggOiAoJ2EsIF8pIHQgLT4gaW50IC0+ICdhIG9wdGlvblxuXG4gICgqKiBbcmVtb3ZlX2luZGV4IHQgaV0gcmV0dXJucyBhIHZlcnNpb24gb2YgW3RdIHdpdGggdGhlIFtpXXRoIHNtYWxsZXN0IGVsZW1lbnQgcmVtb3ZlZCxcbiAgICAgIGluIFtPKGxvZyBuKV0gdGltZS4gIFRoZSBzbWFsbGVzdCBlbGVtZW50IGhhcyBbaSA9IDBdLiAgUmV0dXJucyBbdF0gaWYgW2kgPCAwXSBvclxuICAgICAgW2kgPj0gbGVuZ3RoIHRdLiAqKVxuICB2YWwgcmVtb3ZlX2luZGV4IDogKCdhLCAnY21wKSB0IC0+IGludCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2lzX3N1YnNldCB0MSB+b2ZfOnQyXSByZXR1cm5zIHRydWUgaWZmIFt0MV0gaXMgYSBzdWJzZXQgb2YgW3QyXS4gKilcbiAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgdCAtPiBvZl86KCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogW2FyZV9kaXNqb2ludCB0MSB0Ml0gcmV0dXJucyBbdHJ1ZV0gaWZmIFtpc19lbXB0eSAoaW50ZXIgdDEgdDIpXSwgYnV0IGlzIG1vcmVcbiAgICAgIGVmZmljaWVudC4gKilcbiAgdmFsIGFyZV9kaXNqb2ludCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBbTmFtZWRdIGFsbG93cyB0aGUgdmFsaWRhdGlvbiBvZiBzdWJzZXQgYW5kIGVxdWFsaXR5IHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBzZXRzLiAgQVxuICAgICAgW05hbWVkLnRdIGlzIGEgcmVjb3JkIG9mIGEgc2V0IGFuZCBhIG5hbWUsIHdoZXJlIHRoZSBuYW1lIGlzIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXMsXG4gICAgICBhbmQgW05hbWVkLmlzX3N1YnNldF0gYW5kIFtOYW1lZC5lcXVhbF0gdmFsaWRhdGUgc3Vic2V0IGFuZCBlcXVhbGl0eSByZWxhdGlvbnNoaXBzXG4gICAgICByZXNwZWN0aXZlbHkuXG5cbiAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGZvciwgZS5nLixcbiAgICAgIHtbXG4gICAgICAgIE5hbWVkLmlzX3N1YnNldCB7IHNldCA9IHNldDE7IG5hbWUgPSBcInNldDFcIiB9IH5vZl86e3NldCA9IHNldDI7IG5hbWUgPSBcInNldDJcIiB9XG4gICAgICBdfVxuXG4gICAgICBsb29rcyBsaWtlXG4gICAgICB7dlxuICAgICAgICAoXCJzZXQxIGlzIG5vdCBhIHN1YnNldCBvZiBzZXQyXCIgKGludmFsaWRfZWxlbWVudHMgKC4uLmVsZW1lbnRzIG9mIHNldDEgLSBzZXQyLi4uKSkpXG4gICAgICAgdn1cblxuICAgICAgc28gW25hbWVdIHNob3VsZCBiZSBhIG5vdW4gcGhyYXNlIHRoYXQgZG9lc24ndCBzb3VuZCBhd2t3YXJkIGluIHRoZSBhYm92ZSBlcnJvclxuICAgICAgbWVzc2FnZS4gIEV2ZW4gdGhvdWdoIGl0IGFkZHMgdmVyYm9zaXR5LCBjaG9vc2luZyBbbmFtZV1zIHRoYXQgc3RhcnQgd2l0aCB0aGUgcGhyYXNlXG4gICAgICBcInRoZSBzZXQgb2ZcIiBvZnRlbiBtYWtlcyB0aGUgZXJyb3IgbWVzc2FnZSBzb3VuZCBtb3JlIG5hdHVyYWwuXG4gICopXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnY21wKSBzZXQgOj0gKCdhLCAnY21wKSB0XG5cbiAgICB0eXBlICdhIHQgPSAnYSBOYW1lZC50ID1cbiAgICAgIHsgc2V0IDogJ2FcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgfVxuXG4gICAgKCoqIFtpc19zdWJzZXQgdDEgfm9mXzp0Ml0gcmV0dXJucyBbT2sgKCldIGlmIFt0MV0gaXMgYSBzdWJzZXQgb2YgW3QyXSBhbmQgYVxuICAgICAgICBodW1hbi1yZWFkYWJsZSBlcnJvciBvdGhlcndpc2UuICAqKVxuICAgIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXApIHNldCB0IC0+IG9mXzooJ2EsICdjbXApIHNldCB0IC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgKCoqIFtlcXVhbCB0MSB0Ml0gcmV0dXJucyBbT2sgKCldIGlmIFt0MV0gaXMgZXF1YWwgdG8gW3QyXSBhbmQgYSBodW1hbi1yZWFkYWJsZVxuICAgICAgICBlcnJvciBvdGhlcndpc2UuICAqKVxuICAgIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCkgc2V0IHQgLT4gKCdhLCAnY21wKSBzZXQgdCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgZW5kXG5cbiAgKCoqIFRoZSBsaXN0IG9yIGFycmF5IGdpdmVuIHRvIFtvZl9saXN0XSBhbmQgW29mX2FycmF5XSBuZWVkIG5vdCBiZSBzb3J0ZWQuICopXG4gIHZhbCBvZl9saXN0IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGxpc3QgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIFNlcXVlbmNlLnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9hcnJheSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSBhcnJheSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3RvX2xpc3RdIGFuZCBbdG9fYXJyYXldIHByb2R1Y2Ugc2VxdWVuY2VzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIHRoZVxuICAgICAgY29tcGFyYXRvci4gKilcbiAgdmFsIHRvX2xpc3QgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuXG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBhcnJheVxuXG4gICgqKiBDcmVhdGUgc2V0IGZyb20gc29ydGVkIGFycmF5LiAgVGhlIGlucHV0IG11c3QgYmUgc29ydGVkIChlaXRoZXIgaW4gYXNjZW5kaW5nIG9yXG4gICAgICBkZXNjZW5kaW5nIG9yZGVyIGFzIGdpdmVuIGJ5IHRoZSBjb21wYXJhdG9yKSBhbmQgY29udGFpbiBubyBkdXBsaWNhdGVzLCBvdGhlcndpc2UgdGhlXG4gICAgICByZXN1bHQgaXMgYW4gZXJyb3IuICBUaGUgY29tcGxleGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGlzIFtPKG4pXS4gKilcbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICdhIGFycmF5XG4gICAgLT4gKCdhLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogU2ltaWxhciB0byBbb2Zfc29ydGVkX2FycmF5XSwgYnV0IHdpdGhvdXQgY2hlY2tpbmcgdGhlIGlucHV0IGFycmF5LiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICdhIGFycmF5XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCBjIH5sZW4gfmZdIGJlaGF2ZXMgbGlrZSBbb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBjXG4gICAgICAoQXJyYXkuaW5pdCBsZW4gfmYpXSwgd2l0aCB0aGUgYWRkaXRpb25hbCByZXN0cmljdGlvbiB0aGF0IGEgZGVjcmVhc2luZyBvcmRlciBpcyBub3RcbiAgICAgIHN1cHBvcnRlZC4gIFRoZSBhZHZhbnRhZ2UgaXMgbm90IHJlcXVpcmluZyB5b3UgdG8gYWxsb2NhdGUgYW4gaW50ZXJtZWRpYXRlIGFycmF5LiAgW2ZdXG4gICAgICB3aWxsIGJlIGNhbGxlZCB3aXRoIDAsIDEsIC4uLiBbbGVuIC0gMV0sIGluIG9yZGVyLiAqKVxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gZjooKGludCAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3N0YWJsZV9kZWR1cF9saXN0XSBpcyBoZXJlIHJhdGhlciB0aGFuIGluIHRoZSBbTGlzdF0gbW9kdWxlIGJlY2F1c2UgdGhlXG4gICAgICBpbXBsZW1lbnRhdGlvbiByZWxpZXMgY3J1Y2lhbGx5IG9uIHNldHMsIGFuZCBiZWNhdXNlIGRvaW5nIHNvIGFsbG93cyBvbmUgdG8gYXZvaWQgdXNlc1xuICAgICAgb2YgcG9seW1vcnBoaWMgY29tcGFyaXNvbiBieSBpbnN0YW50aWF0aW5nIHRoZSBmdW5jdG9yIGF0IGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uXG4gICAgICBvZiBbQ29tcGFyYXRvcl0gYW5kIHVzaW5nIHRoZSByZXN1bHRpbmcgW3N0YWJsZV9kZWR1cF9saXN0XS4gKilcbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogKCdhLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuXG4gICgqKiBbbWFwIGMgdCB+Zl0gcmV0dXJucyBhIG5ldyBzZXQgY3JlYXRlZCBieSBhcHBseWluZyBbZl0gdG8gZXZlcnkgZWxlbWVudCBpblxuICAgICAgW3RdLiAgVGhlIHJldHVybmVkIHNldCBpcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgW2NvbXBhcmF0b3JdLiAgW08obiBsb2cgbildLiAqKVxuICB2YWwgbWFwXG4gICAgOiAgKCdiLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhLCBfKSB0XG4gICAgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIHshbWFwfSwgZXhjZXB0IGVsZW1lbnRzIGZvciB3aGljaCBbZl0gcmV0dXJucyBbTm9uZV0gd2lsbCBiZSBkcm9wcGVkLiAgKilcbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICAoJ2IsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgJ2NtcCkgdFxuXG4gICgqKiBbZmlsdGVyIHQgfmZdIHJldHVybnMgdGhlIHN1YnNldCBvZiBbdF0gZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gIFtPKG4gbG9nXG4gICAgICBuKV0uICopXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdjbXApIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSBmb2xkcyBvdmVyIHRoZSBlbGVtZW50cyBvZiB0aGUgc2V0IGZyb20gc21hbGxlc3QgdG8gbGFyZ2VzdC4gKilcbiAgdmFsIGZvbGQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICAoKiogW2ZvbGRfcmVzdWx0IH5pbml0IH5mXSBmb2xkcyBvdmVyIHRoZSBlbGVtZW50cyBvZiB0aGUgc2V0IGZyb20gc21hbGxlc3QgdG9cbiAgICAgIGxhcmdlc3QsIHNob3J0IGNpcmN1aXRpbmcgdGhlIGZvbGQgaWYgW2YgYWNjdW0geF0gaXMgYW4gW0Vycm9yIF9dICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG5cbiAgKCoqIExpa2UgeyFmb2xkfSwgZXhjZXB0IHRoYXQgaXQgZ29lcyBmcm9tIHRoZSBsYXJnZXN0IHRvIHRoZSBzbWFsbGVzdCBlbGVtZW50LiAqKVxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhIC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbaXRlciB0IH5mXSBjYWxscyBbZl0gb24gZXZlcnkgZWxlbWVudCBvZiBbdF0sIGdvaW5nIGluIG9yZGVyIGZyb20gdGhlIHNtYWxsZXN0IHRvXG4gICAgICBsYXJnZXN0LiAgKilcbiAgdmFsIGl0ZXIgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogSXRlcmF0ZSB0d28gc2V0cyBzaWRlIGJ5IHNpZGUuICBDb21wbGV4aXR5IGlzIFtPKG0rbildIHdoZXJlIFttXSBhbmQgW25dIGFyZSB0aGUgc2l6ZXNcbiAgICAgIG9mIHRoZSB0d28gaW5wdXQgc2V0cy4gIEFzIGFuIGV4YW1wbGUsIHdpdGggdGhlIGlucHV0cyBbMDsgMV0gYW5kIFsxOyAyXSwgW2ZdIHdpbGwgYmVcbiAgICAgIGNhbGxlZCB3aXRoIFtgTGVmdCAwXTsgW2BCb3RoICgxLCAxKV07IGFuZCBbYFJpZ2h0IDJdLiAqKVxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOigoWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYSB8IGBCb3RoIG9mICdhICogJ2EgXSAtPiB1bml0KVtAbG9jYWxdKVxuICAgIC0+IHVuaXRcblxuICAoKiogaWYgW2EsIGIgPSBwYXJ0aXRpb25fdGYgc2V0IH5mXSB0aGVuIFthXSBpcyB0aGUgZWxlbWVudHMgb24gd2hpY2ggW2ZdIHByb2R1Y2VkIFt0cnVlXSxcbiAgICAgIGFuZCBbYl0gaXMgdGhlIGVsZW1lbnRzIG9uIHdoaWNoIFtmXSBwcm9kdWNlcyBbZmFsc2VdLiAqKVxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIFNhbWUgYXMgeyF0b19saXN0fS4gKilcbiAgdmFsIGVsZW1lbnRzIDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcblxuICAoKiogUmV0dXJucyB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgc2V0LiAgW08obG9nIG4pXS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIExpa2UgeyFtaW5fZWx0fSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gd2hlbiBnaXZlbiBhbiBlbXB0eSBzZXQuICopXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuXG4gICgqKiBSZXR1cm5zIHRoZSBsYXJnZXN0IGVsZW1lbnQgb2YgdGhlIHNldC4gIFtPKGxvZyBuKV0uICAqKVxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cblxuICAoKiogTGlrZSB7IW1heF9lbHR9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGdpdmVuIGFuIGVtcHR5IHNldC4gKilcbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIHJldHVybnMgYW4gYXJiaXRyYXJ5IGVsZW1lbnQsIG9yIFtOb25lXSBpZiB0aGUgc2V0IGlzIGVtcHR5LiAqKVxuICB2YWwgY2hvb3NlIDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuXG4gICgqKiBMaWtlIHshY2hvb3NlfSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gb24gYW4gZW1wdHkgc2V0LiAqKVxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgXykgdCAtPiAnYVxuXG4gICgqKiBbc3BsaXQgdCB4XSBwcm9kdWNlcyBhIHRyaXBsZSBbKHQxLCBtYXliZV94LCB0MildLlxuXG4gICAgICBbdDFdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgc3RyaWN0bHkgbGVzcyB0aGFuIFt4XSxcbiAgICAgIFttYXliZV94XSBpcyB0aGUgbWVtYmVyIChpZiBhbnkpIG9mIFt0XSB3aGljaCBjb21wYXJlcyBlcXVhbCB0byBbeF0sXG4gICAgICBbdDJdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgc3RyaWN0bHkgbGFyZ2VyIHRoYW4gW3hdLiAqKVxuICB2YWwgc3BsaXQgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0ICogJ2Egb3B0aW9uICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtzcGxpdF9sZV9ndCB0IHhdIHByb2R1Y2VzIGEgcGFpciBbKHQxLCB0MildLlxuXG4gICAgICBbdDFdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIFt4XSxcbiAgICAgIFt0Ml0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBncmVhdGVyIHRoYW4gW3hdLiAqKVxuICB2YWwgc3BsaXRfbGVfZ3QgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtzcGxpdF9sdF9nZSB0IHhdIHByb2R1Y2VzIGEgcGFpciBbKHQxLCB0MildLlxuXG4gICAgICBbdDFdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgc3RyaWN0bHkgbGVzcyB0aGFuIFt4XSxcbiAgICAgIFt0Ml0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gW3hdLiAqKVxuICB2YWwgc3BsaXRfbHRfZ2UgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgKCoqIGlmIFtlcXVpdl0gaXMgYW4gZXF1aXZhbGVuY2UgcHJlZGljYXRlLCB0aGVuIFtncm91cF9ieSBzZXQgfmVxdWl2XSBwcm9kdWNlcyBhIGxpc3RcbiAgICAgIG9mIGVxdWl2YWxlbmNlIGNsYXNzZXMgKGkuZS4sIGEgc2V0LXRoZW9yZXRpYyBxdW90aWVudCkuICBFLmcuLFxuXG4gICAgICB7W1xuICAgICAgICBsZXQgY2hhcnMgPSBTZXQub2ZfbGlzdCBbJ0EnOyAnYSc7ICdiJzsgJ2MnXSBpblxuICAgICAgICBsZXQgZXF1aXYgYyBjJyA9IENoYXIuZXF1YWwgKENoYXIudXBwZXJjYXNlIGMpIChDaGFyLnVwcGVyY2FzZSBjJykgaW5cbiAgICAgICAgZ3JvdXBfYnkgY2hhcnMgfmVxdWl2XG4gICAgICBdfVxuXG4gICAgICBwcm9kdWNlczpcblxuICAgICAge1tcbiAgICAgICAgW1NldC5vZl9saXN0IFsnQSc7J2EnXTsgU2V0LnNpbmdsZXRvbiAnYic7IFNldC5zaW5nbGV0b24gJ2MnXVxuICAgICAgXX1cblxuICAgICAgW2dyb3VwX2J5XSBydW5zIGluIE8obl4yKSB0aW1lLCBzbyBpZiB5b3UgaGF2ZSBhIGNvbXBhcmlzb24gZnVuY3Rpb24sIGl0J3MgdXN1YWxseVxuICAgICAgbXVjaCBmYXN0ZXIgdG8gdXNlIFtTZXQub2ZfbGlzdF0uICopXG4gIHZhbCBncm91cF9ieSA6ICgnYSwgJ2NtcCkgdCAtPiBlcXVpdjooKCdhIC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ2NtcCkgdCBsaXN0XG5cbiAgKCoqIFt0b19zZXF1ZW5jZSB0XSBjb252ZXJ0cyB0aGUgc2V0IFt0XSB0byBhIHNlcXVlbmNlIG9mIHRoZSBlbGVtZW50cyBiZXR3ZWVuXG4gICAgICBbZ3JlYXRlcl9vcl9lcXVhbF90b10gYW5kIFtsZXNzX29yX2VxdWFsX3RvXSBpbmNsdXNpdmUgaW4gdGhlIG9yZGVyIGluZGljYXRlZCBieVxuICAgICAgW29yZGVyXS4gIElmIFtncmVhdGVyX29yX2VxdWFsX3RvID4gbGVzc19vcl9lcXVhbF90b10gdGhlIHNlcXVlbmNlIGlzIGVtcHR5LiAgQ29zdCBpc1xuICAgICAgTyhsb2cgbikgdXAgZnJvbnQgYW5kIGFtb3J0aXplZCBPKDEpIGZvciBlYWNoIGVsZW1lbnQgcHJvZHVjZWQuICopXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nICgqKiBkZWZhdWx0ICopIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgd2hpY2ggZWx0XSByZXR1cm5zIHRoZSBlbGVtZW50IGluIFt0XSBzcGVjaWZpZWQgYnlcbiAgICAgIFtjb21wYXJlXSBhbmQgW3doaWNoXSwgaWYgb25lIGV4aXN0cy5cblxuICAgICAgW3RdIG11c3QgYmUgc29ydGVkIGluIGluY3JlYXNpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIFtjb21wYXJlXSwgd2hlcmUgW2NvbXBhcmVdIGFuZFxuICAgICAgW2VsdF0gZGl2aWRlIFt0XSBpbnRvIHRocmVlIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgIDwgZWx0ICB8ICA9IGVsdCAgfCAgPiBlbHQgIHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSByZXR1cm5zIGFuIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHNlZ21lbnRzIGFzIHNwZWNpZmllZCBieVxuICAgICAgW3doaWNoXS4gIFNlZSB0aGUgZGlhZ3JhbSBiZWxvdyBuZXh0IHRvIHRoZSBbd2hpY2hdIHZhcmlhbnRzLlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbY29tcGFyZV0gb3JkZXJzIFt0XSwgYW5kIGJlaGF2aW9yIGlzXG4gICAgICB1bnNwZWNpZmllZCBpZiBbY29tcGFyZV0gZG9lc24ndCBvcmRlciBbdF0uICBCZWhhdmlvciBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdrZXkgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+IFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuICgqKiAgICAgICAge3YgfCA8IGVsdCBYIHwgICAgICAgICAgICAgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gKCoqICAgICB7diB8ICAgICAgPD0gZWx0ICAgICAgIFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8ICAgPSBlbHQgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgWCA9IGVsdCAgIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvICgqKiB7diAgICAgICAgICAgfCBYICAgICAgID49IGVsdCAgICAgIHwgdn0gKilcbiAgICAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gKCoqICAgIHt2ICAgICAgICAgICAgICAgICAgICAgICB8IFggPiBlbHQgfCB2fSAqKVxuICAgICAgIF1cbiAgICAtPiAna2V5XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIHdoaWNoXSB0YWtlcyBhIFtzZWdtZW50X29mXSBmdW5jdGlvbiB0aGF0XG4gICAgICBkaXZpZGVzIFt0XSBpbnRvIHR3byAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8IHNlZ21lbnRfb2YgZWx0ID0gYExlZnQgfCBzZWdtZW50X29mIGVsdCA9IGBSaWdodCB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIHJldHVybnMgdGhlIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHRoZSBzZWdtZW50cyBhc1xuICAgICAgc3BlY2lmaWVkIGJ5IFt3aGljaF06IFtgTGFzdF9vbl9sZWZ0XSB5aWVsZHMgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgbGVmdCBzZWdtZW50LFxuICAgICAgd2hpbGUgW2BGaXJzdF9vbl9yaWdodF0geWllbGRzIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSByaWdodCBzZWdtZW50LiAgSXQgcmV0dXJuc1xuICAgICAgW05vbmVdIGlmIHRoZSBzZWdtZW50IGlzIGVtcHR5LlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIGRvZXMgbm90IGNoZWNrIHRoYXQgW3NlZ21lbnRfb2ZdIHNlZ21lbnRzIFt0XSBhcyBpbiB0aGVcbiAgICAgIGRpYWdyYW0sIGFuZCBiZWhhdmlvciBpcyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gZG9lc24ndCBzZWdtZW50IFt0XS4gIEJlaGF2aW9yXG4gICAgICBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooKCdhIC0+IFsgYExlZnQgfCBgUmlnaHQgXSlbQGxvY2FsXSlcbiAgICAtPiBbIGBMYXN0X29uX2xlZnQgfCBgRmlyc3Rfb25fcmlnaHQgXVxuICAgIC0+ICdhIG9wdGlvblxuXG4gICgqKiBQcm9kdWNlcyB0aGUgZWxlbWVudHMgb2YgdGhlIHR3byBzZXRzIGJldHdlZW4gW2dyZWF0ZXJfb3JfZXF1YWxfdG9dIGFuZFxuICAgICAgW2xlc3Nfb3JfZXF1YWxfdG9dIGluIFtvcmRlcl0sIG5vdGluZyB3aGV0aGVyIGVhY2ggZWxlbWVudCBhcHBlYXJzIGluIHRoZSBsZWZ0IHNldCxcbiAgICAgIHRoZSByaWdodCBzZXQsIG9yIGJvdGguICBJbiB0aGUgYm90aCBjYXNlLCBib3RoIGVsZW1lbnRzIGFyZSByZXR1cm5lZCwgaW4gY2FzZSB0aGVcbiAgICAgIGNhbGxlciBjYW4gZGlzdGluZ3Vpc2ggYmV0d2VlbiBlbGVtZW50cyB0aGF0IGFyZSBlcXVhbCB0byB0aGUgc2V0cycgY29tcGFyYXRvci4gIFJ1bnNcbiAgICAgIGluIE8obGVuZ3RoIHQgKyBsZW5ndGggdCcpLiAqKVxuICBtb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFNlcXVlbmNlLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnQgPVxuICAgICAgfCBMZWZ0IG9mICdhXG4gICAgICB8IFJpZ2h0IG9mICdiXG4gICAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyAoKiogZGVmYXVsdCAqKSB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYSkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICAoKiogW01dIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBPQ2FtbCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVzOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ19zZXQgPSBTZXQuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3NldCA9IChTdHJpbmcudCwgU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzcykgU2V0LnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtTZXQuTShTdHJpbmcpLnRdIHN1cHBvcnRzIGRlcml2aW5nLCB3aGVyZWFzIHRoZSBzZWNvbmQgc3ludGF4XG4gICAgICBkb2Vzbid0IChiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMsIHNheSwgU3RyaW5nLnNleHBfb2ZfY29tcGFyYXRvcl93aXRuZXNzLFxuICAgICAgaW5zdGVhZCB5b3Ugd291bGQgd2FudCB0byBwYXNzIHRoZSBjb21wYXJhdG9yIGRpcmVjdGx5KS4gKilcbiAgbW9kdWxlIE0gKEVsdCA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZCkgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAoKiogQSBwb2x5bW9ycGhpYyBTZXQuICopXG4gIG1vZHVsZSBQb2x5IDogU19wb2x5IHdpdGggdHlwZSAnZWx0IHQgPSAoJ2VsdCwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gICgqKiBVc2luZyBjb21wYXJhdG9yIGlzIGEgc2ltaWxhciBpbnRlcmZhY2UgYXMgdGhlIHRvcGxldmVsIG9mIFtTZXRdLCBleGNlcHQgdGhlIGZ1bmN0aW9uc1xuICAgICAgdGFrZSBhIFt+Y29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XSB3aGVyZSB0aGUgZnVuY3Rpb25zIGF0IHRoZSB0b3BsZXZlbCBvZlxuICAgICAgW1NldF0gdGFrZXMgYSBbKCdlbHQsICdjbXApIGNvbXBhcmF0b3JdLiAqKVxuICBtb2R1bGUgVXNpbmdfY29tcGFyYXRvciA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSB0ID0gKCdlbHQsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2VsdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdlbHQsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKFNleHAudCAtPiAnZWx0KVxuICAgICAgLT4gU2V4cC50XG4gICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gICAgbW9kdWxlIFRyZWUgOiBzaWdcbiAgICAgICgqKiBBIFtUcmVlLnRdIGNvbnRhaW5zIGp1c3QgdGhlIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCBhIHNldCBpcyBiYXNlZCBvbiwgd2l0aG91dFxuICAgICAgICAgIGluY2x1ZGluZyB0aGUgY29tcGFyYXRvci4gIEFjY29yZGluZ2x5LCBhbnkgb3BlcmF0aW9uIG9uIGEgW1RyZWUudF0gbXVzdCBhbHNvIHRha2VcbiAgICAgICAgICBhcyBhbiBhcmd1bWVudCB0aGUgY29ycmVzcG9uZGluZyBjb21wYXJhdG9yLiAqKVxuICAgICAgdHlwZSAoJ2EsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgIHZhbCBzZXhwX29mX3RcbiAgICAgICAgOiAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICAgIFtAQEBlbmRdXG5cbiAgICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICAgIDogIGNvbXBhcmF0b3I6KCdlbHQsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgICAtPiAoU2V4cC50IC0+ICdlbHQpXG4gICAgICAgIC0+IFNleHAudFxuICAgICAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2FcbiAgICAgICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnY1xuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuXG4gICAgICB2YWwgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA6IChfLCBfKSB0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhXG4gICAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aF9jb21wYXJhdG9yLnRcblxuICAgIHZhbCBjb21wYXJhdG9yX3MgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICB2YWwgaGFzaF9mb2xkX2RpcmVjdCA6ICdlbHQgSGFzaC5mb2xkZXIgLT4gKCdlbHQsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAgIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChFbHQgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICAgICAgdmFsIGVtcHR5IDogKCdhIEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kXG4gIGVuZFxuXG4gIHZhbCB0b190cmVlIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcblxuICB2YWwgb2ZfdHJlZVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogezIgTW9kdWxlcyBhbmQgbW9kdWxlIHR5cGVzIGZvciBleHRlbmRpbmcgW1NldF19XG5cbiAgICAgIEZvciB1c2UgaW4gZXh0ZW5zaW9ucyBvZiBCYXNlLCBsaWtlIFtDb3JlXS4gKilcblxuICBtb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gV2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG4gIG1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBXaXRob3V0X2NvbXBhcmF0b3JcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcbiAgbW9kdWxlIHR5cGUgU19wb2x5ID0gU19wb2x5XG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gQWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEVsdF9wbGFpblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgMi4wIGxpY2Vuc2UuIFNlZSAuLi9USElSRC1QQVJUWS50eHQgICopXG4oKiAgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFNldHMgb3ZlciBvcmRlcmVkIHR5cGVzICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTZXRfaW50ZlxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG5cbm1vZHVsZSBUcmVlMCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgRW1wdHlcbiAgICAoKiAoTGVhZiB4KSBpcyB0aGUgc2FtZSBhcyAoTm9kZSAoRW1wdHksIHgsIEVtcHR5LCAxLCAxKSkgYnV0IHVzZXMgbGVzcyBzcGFjZS4gKilcbiAgICB8IExlYWYgb2YgJ2FcbiAgICAoKiBmaXJzdCBpbnQgaXMgaGVpZ2h0LCBzZWNvbmQgaXMgc3ViLXRyZWUgc2l6ZSAqKVxuICAgIHwgTm9kZSBvZiAnYSB0ICogJ2EgKiAnYSB0ICogaW50ICogaW50XG5cbiAgdHlwZSAnYSB0cmVlID0gJ2EgdFxuXG4gICgqIFNldHMgYXJlIHJlcHJlc2VudGVkIGJ5IGJhbGFuY2VkIGJpbmFyeSB0cmVlcyAodGhlIGhlaWdodHMgb2YgdGhlIGNoaWxkcmVuIGRpZmZlciBieVxuICAgICBhdCBtb3N0IDIuICopXG4gIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgOztcblxuICBsZXQgbGVuZ3RoID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudHMgPVxuICAgIGxldCBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB2ID1cbiAgICAgIChtYXRjaCBsb3dlciB3aXRoXG4gICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICB8IFNvbWUgbG93ZXIgLT4gY29tcGFyZV9lbHQgbG93ZXIgdiA8IDApXG4gICAgICAmJlxuICAgICAgbWF0Y2ggdXBwZXIgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgIHwgU29tZSB1cHBlciAtPiBjb21wYXJlX2VsdCB2IHVwcGVyIDwgMFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTGVhZiB2IC0+IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHZcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgaCwgbikgLT5cbiAgICAgICAgbGV0IGhsID0gaGVpZ2h0IGxcbiAgICAgICAgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgICAgYWJzIChobCAtIGhyKSA8PSAyXG4gICAgICAgICYmIGggPSBtYXggaGwgaHIgKyAxXG4gICAgICAgICYmIG4gPSBsZW5ndGggbCArIGxlbmd0aCByICsgMVxuICAgICAgICAmJiBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB2XG4gICAgICAgICYmIGxvb3AgbG93ZXIgKFNvbWUgdikgY29tcGFyZV9lbHQgbFxuICAgICAgICAmJiBsb29wIChTb21lIHYpIHVwcGVyIGNvbXBhcmVfZWx0IHJcbiAgICBpblxuICAgIGZ1biB0IH5jb21wYXJlX2VsdCAtPiBsb29wIE5vbmUgTm9uZSBjb21wYXJlX2VsdCB0XG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgXyB8IE5vZGUgXyAtPiBmYWxzZVxuICA7O1xuXG4gICgqIENyZWF0ZXMgYSBuZXcgbm9kZSB3aXRoIGxlZnQgc29uIGwsIHZhbHVlIHYgYW5kIHJpZ2h0IHNvbiByLlxuICAgICBXZSBtdXN0IGhhdmUgYWxsIGVsZW1lbnRzIG9mIGwgPCB2IDwgYWxsIGVsZW1lbnRzIG9mIHIuXG4gICAgIGwgYW5kIHIgbXVzdCBiZSBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi5cbiAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBoZWlnaHQgZm9yIGJldHRlciBzcGVlZC4gKilcblxuICBsZXQgY3JlYXRlIGwgdiByID1cbiAgICBsZXQgaGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGhyID1cbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGxldCBoID0gaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEgaW5cbiAgICBpZiBoID0gMVxuICAgIHRoZW4gTGVhZiB2XG4gICAgZWxzZSAoXG4gICAgICBsZXQgc2wgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgbGV0IHNyID1cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIE5vZGUgKGwsIHYsIHIsIGgsIHNsICsgc3IgKyAxKSlcbiAgOztcblxuICAoKiBXZSBtdXN0IGNhbGwgW2ZdIHdpdGggaW5jcmVhc2luZyBpbmRleGVzLCBiZWNhdXNlIHRoZSBiaW5fcHJvdCByZWFkZXIgaW5cbiAgICAgQ29yZS5TZXQgbmVlZHMgaXQuICopXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgbiB+ZiBpID1cbiAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgfCAwIC0+IEVtcHR5XG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IGsgPSBmIGkgaW5cbiAgICAgICAgTGVhZiBrXG4gICAgICB8IDIgLT5cbiAgICAgICAgbGV0IGtsID0gZiBpIGluXG4gICAgICAgIGxldCBrID0gZiAoaSArIDEpIGluXG4gICAgICAgIGNyZWF0ZSAoTGVhZiBrbCkgayBFbXB0eVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBrbCA9IGYgaSBpblxuICAgICAgICBsZXQgayA9IGYgKGkgKyAxKSBpblxuICAgICAgICBsZXQga3IgPSBmIChpICsgMikgaW5cbiAgICAgICAgY3JlYXRlIChMZWFmIGtsKSBrIChMZWFmIGtyKVxuICAgICAgfCBuIC0+XG4gICAgICAgIGxldCBsZWZ0X2xlbmd0aCA9IG4gbHNyIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X2xlbmd0aCA9IG4gLSBsZWZ0X2xlbmd0aCAtIDEgaW5cbiAgICAgICAgbGV0IGxlZnQgPSBsb29wIGxlZnRfbGVuZ3RoIH5mIGkgaW5cbiAgICAgICAgbGV0IGsgPSBmIChpICsgbGVmdF9sZW5ndGgpIGluXG4gICAgICAgIGxldCByaWdodCA9IGxvb3AgcmlnaHRfbGVuZ3RoIH5mIChpICsgbGVmdF9sZW5ndGggKyAxKSBpblxuICAgICAgICBjcmVhdGUgbGVmdCBrIHJpZ2h0XG4gICAgaW5cbiAgICBsb29wIGxlbiB+ZiAwXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgYXJyYXlfbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGFycmF5IGluXG4gICAgbGV0IG5leHQgPVxuICAgICAgKCogV2UgZG9uJ3QgY2hlY2sgaWYgdGhlIGFycmF5IGlzIHNvcnRlZCBvciBrZXlzIGFyZSBkdXBsaWNhdGVkLCBiZWNhdXNlIHRoYXRcbiAgICAgICAgIGNoZWNraW5nIGlzIHNsb3dlciB0aGFuIHRoZSB3aG9sZSBbb2Zfc29ydGVkX2FycmF5XSBmdW5jdGlvbiAqKVxuICAgICAgaWYgYXJyYXlfbGVuZ3RoIDwgMiB8fCBjb21wYXJlX2VsdCBhcnJheS4oMCkgYXJyYXkuKDEpIDwgMFxuICAgICAgdGhlbiBmdW4gaSAtPiBhcnJheS4oaSlcbiAgICAgIGVsc2UgZnVuIGkgLT4gYXJyYXkuKGFycmF5X2xlbmd0aCAtIDEgLSBpKVxuICAgIGluXG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbjphcnJheV9sZW5ndGggfmY6bmV4dFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBhcnJheSB3aXRoXG4gICAgfCBbfHxdIHwgW3wgXyB8XSAtPiBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0KVxuICAgIHwgXyAtPlxuICAgICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICAgIGxldCBpbmNyZWFzaW5nID1cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2VsdCBhcnJheS4oMCkgYXJyYXkuKDEpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPiBpIDwgMFxuICAgICAgICBpblxuICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIGFycmF5IC0gMiBkb1xuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfZWx0IGFycmF5LihpKSBhcnJheS4oaSArIDEpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPlxuICAgICAgICAgICAgaWYgUG9seS4oIDw+ICkgKGkgPCAwKSBpbmNyZWFzaW5nXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGVsZW1lbnRzIGFyZSBub3Qgb3JkZXJlZFwiKVxuICAgICAgICBkb25lO1xuICAgICAgICBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0KSlcbiAgOztcblxuICAoKiBTYW1lIGFzIGNyZWF0ZSwgYnV0IHBlcmZvcm1zIG9uZSBzdGVwIG9mIHJlYmFsYW5jaW5nIGlmIG5lY2Vzc2FyeS5cbiAgICAgQXNzdW1lcyBsIGFuZCByIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAzLlxuICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGNyZWF0ZSBmb3IgYmV0dGVyIHNwZWVkIGluIHRoZSBtb3N0IGZyZXF1ZW50IGNhc2VcbiAgICAgd2hlcmUgbm8gcmViYWxhbmNpbmcgaXMgcmVxdWlyZWQuICopXG5cbiAgbGV0IGJhbCBsIHYgciA9XG4gICAgbGV0IGhsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGxldCBociA9XG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGJlY2F1c2UgaChsKT5oKHIpKzIgYW5kIGgobGVhZik9MSAqKVxuICAgICAgfCBOb2RlIChsbCwgbHYsIGxyLCBfLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyXG4gICAgICAgIHRoZW4gY3JlYXRlIGxsIGx2IChjcmVhdGUgbHIgdiByKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IExlYWYgbHJ2IC0+XG4gICAgICAgICAgICBhc3NlcnQgKGlzX2VtcHR5IGxsKTtcbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IEVtcHR5KSBscnYgKGNyZWF0ZSBFbXB0eSB2IHIpXG4gICAgICAgICAgfCBOb2RlIChscmwsIGxydiwgbHJyLCBfLCBfKSAtPiBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBscmwpIGxydiAoY3JlYXRlIGxyciB2IHIpKSlcbiAgICBlbHNlIGlmIGhyID4gaGwgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogYmVjYXVzZSBoKHIpPmgobCkrMiBhbmQgaChsZWFmKT0xICopXG4gICAgICB8IE5vZGUgKHJsLCBydiwgcnIsIF8sIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmxcbiAgICAgICAgdGhlbiBjcmVhdGUgKGNyZWF0ZSBsIHYgcmwpIHJ2IHJyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTGVhZiBybHYgLT5cbiAgICAgICAgICAgIGFzc2VydCAoaXNfZW1wdHkgcnIpO1xuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IEVtcHR5KSBybHYgKGNyZWF0ZSBFbXB0eSBydiBycilcbiAgICAgICAgICB8IE5vZGUgKHJsbCwgcmx2LCBybHIsIF8sIF8pIC0+IGNyZWF0ZSAoY3JlYXRlIGwgdiBybGwpIHJsdiAoY3JlYXRlIHJsciBydiBycikpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGggPSBpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSBpblxuICAgICAgbGV0IHNsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIGxldCBzciA9XG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBpZiBoID0gMSB0aGVuIExlYWYgdiBlbHNlIE5vZGUgKGwsIHYsIHIsIGgsIHNsICsgc3IgKyAxKSlcbiAgOztcblxuICAoKiBJbnNlcnRpb24gb2Ygb25lIGVsZW1lbnQgKilcblxuICBleGNlcHRpb24gU2FtZVxuXG4gIGxldCBhZGQgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBMZWFmIHhcbiAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFNhbWVcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIGNyZWF0ZSAoTGVhZiB4KSB2IEVtcHR5XG4gICAgICAgIGVsc2UgY3JlYXRlIEVtcHR5IHYgKExlYWYgeClcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gYmFsIChhdXggbCkgdiByXG4gICAgICAgIGVsc2UgYmFsIGwgdiAoYXV4IHIpXG4gICAgaW5cbiAgICB0cnkgYXV4IHQgd2l0aFxuICAgIHwgU2FtZSAtPiB0XG4gIDs7XG5cbiAgKCogc3BlY2lhbGl6YXRpb24gb2YgW2FkZF0gdGhhdCBhc3N1bWVzIHRoYXQgW3hdIGlzIGxlc3MgdGhhbiBhbGwgZXhpc3RpbmcgZWxlbWVudHMgKilcbiAgbGV0IHJlYyBhZGRfbWluIHggdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBMZWFmIHhcbiAgICB8IExlYWYgXyAtPiBOb2RlIChFbXB0eSwgeCwgdCwgMiwgMilcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGJhbCAoYWRkX21pbiB4IGwpIHYgclxuICA7O1xuXG4gICgqIHNwZWNpYWxpemF0aW9uIG9mIFthZGRdIHRoYXQgYXNzdW1lcyB0aGF0IFt4XSBpcyBncmVhdGVyIHRoYW4gYWxsIGV4aXN0aW5nIGVsZW1lbnRzICopXG4gIGxldCByZWMgYWRkX21heCB0IHggPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTGVhZiB4XG4gICAgfCBMZWFmIF8gLT4gTm9kZSAodCwgeCwgRW1wdHksIDIsIDIpXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBiYWwgbCB2IChhZGRfbWF4IHIgeClcbiAgOztcblxuICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmRcbiAgICAgci4gKilcbiAgbGV0IHJlYyBqb2luIGwgdiByID1cbiAgICBtYXRjaCBsLCByIHdpdGhcbiAgICB8IEVtcHR5LCBfIC0+IGFkZF9taW4gdiByXG4gICAgfCBfLCBFbXB0eSAtPiBhZGRfbWF4IGwgdlxuICAgIHwgTGVhZiBsdiwgXyAtPiBhZGRfbWluIGx2IChhZGRfbWluIHYgcilcbiAgICB8IF8sIExlYWYgcnYgLT4gYWRkX21heCAoYWRkX21heCBsIHYpIHJ2XG4gICAgfCBOb2RlIChsbCwgbHYsIGxyLCBsaCwgXyksIE5vZGUgKHJsLCBydiwgcnIsIHJoLCBfKSAtPlxuICAgICAgaWYgbGggPiByaCArIDJcbiAgICAgIHRoZW4gYmFsIGxsIGx2IChqb2luIGxyIHYgcilcbiAgICAgIGVsc2UgaWYgcmggPiBsaCArIDJcbiAgICAgIHRoZW4gYmFsIChqb2luIGwgdiBybCkgcnYgcnJcbiAgICAgIGVsc2UgY3JlYXRlIGwgdiByXG4gIDs7XG5cbiAgKCogU21hbGxlc3QgYW5kIGdyZWF0ZXN0IGVsZW1lbnQgb2YgYSBzZXQgKilcbiAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiB8IE5vZGUgKEVtcHR5LCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcbiAgICB8IE5vZGUgKGwsIF8sIF8sIF8sIF8pIC0+IG1pbl9lbHQgbFxuICA7O1xuXG4gIGV4Y2VwdGlvbiBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcInNldC5tbC5UcmVlMC5TZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGV4Y2VwdGlvbiBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0XVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcInNldC5tbC5UcmVlMC5TZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCBtaW5fZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtaW5fZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0XG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBmb2xkX3VudGlsX2hlbHBlciB+ZiB0IGFjYyA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AuQ29udGludWUgYWNjXG4gICAgICB8IExlYWYgdmFsdWUgLT4gZiBhY2MgdmFsdWUgW0Bub250YWlsXVxuICAgICAgfCBOb2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIChtYXRjaCBmb2xkX3VudGlsX2hlbHBlciB+ZiBsZWZ0IGFjYyB3aXRoXG4gICAgICAgICB8IFN0b3AgX2EgYXMgeCAtPiB4XG4gICAgICAgICB8IENvbnRpbnVlIGFjYyAtPlxuICAgICAgICAgICAobWF0Y2ggZiBhY2MgdmFsdWUgd2l0aFxuICAgICAgICAgICAgfCBTdG9wIF9hIGFzIHggLT4geFxuICAgICAgICAgICAgfCBDb250aW51ZSBhIC0+IGZvbGRfdW50aWxfaGVscGVyIH5mIHJpZ2h0IGEpKVxuICAgIGluXG4gICAgbWF0Y2ggZm9sZF91bnRpbF9oZWxwZXIgfmYgdCBpbml0IHdpdGhcbiAgICB8IENvbnRpbnVlIHggLT4gZmluaXNoIHggW0Bub250YWlsXVxuICAgIHwgU3RvcCB4IC0+IHhcbiAgOztcblxuICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IHwgTm9kZSAoXywgdiwgRW1wdHksIF8sIF8pIC0+IFNvbWUgdlxuICAgIHwgTm9kZSAoXywgXywgciwgXywgXykgLT4gbWF4X2VsdCByXG4gIDs7XG5cbiAgbGV0IG1heF9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1heF9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgKCogUmVtb3ZlIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBnaXZlbiBzZXQgKilcblxuICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LnJlbW92ZV9taW5fZWx0XCJcbiAgICB8IExlYWYgXyAtPiBFbXB0eVxuICAgIHwgTm9kZSAoRW1wdHksIF8sIHIsIF8sIF8pIC0+IHJcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgdiByXG4gIDs7XG5cbiAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgIEFzc3VtZSB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLiAqKVxuICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+IGJhbCB0MSAobWluX2VsdF9leG4gdDIpIChyZW1vdmVfbWluX2VsdCB0MilcbiAgOztcblxuICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS4gIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+IGpvaW4gdDEgKG1pbl9lbHRfZXhuIHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgc3BsaXQgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRW1wdHksIE5vbmUsIEVtcHR5XG4gICAgICB8IExlYWYgdiAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIEVtcHR5LCBTb21lIHYsIEVtcHR5XG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBFbXB0eSwgTm9uZSwgTGVhZiB2XG4gICAgICAgIGVsc2UgTGVhZiB2LCBOb25lLCBFbXB0eVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIGwsIFNvbWUgdiwgclxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsbCwgbWF5YmVfZWx0LCBybCA9IHNwbGl0IGwgaW5cbiAgICAgICAgICBsbCwgbWF5YmVfZWx0LCBqb2luIHJsIHYgcilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGxyLCBtYXliZV9lbHQsIHJyID0gc3BsaXQgciBpblxuICAgICAgICAgIGpvaW4gbCB2IGxyLCBtYXliZV9lbHQsIHJyKVxuICAgIGluXG4gICAgc3BsaXQgdFxuICA7O1xuXG4gIGxldCByZWMgc3BsaXRfbGVfZ3QgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eSwgRW1wdHlcbiAgICB8IExlYWYgdiAtPiBpZiBjb21wYXJlX2VsdCB4IHYgPj0gMCB0aGVuIExlYWYgdiwgRW1wdHkgZWxzZSBFbXB0eSwgTGVhZiB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIGFkZF9tYXggbCB2LCByXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGxsLCBybCA9IHNwbGl0X2xlX2d0IGwgeCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgbGwsIGpvaW4gcmwgdiByKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsciwgcnIgPSBzcGxpdF9sZV9ndCByIHggfmNvbXBhcmVfZWx0IGluXG4gICAgICAgIGpvaW4gbCB2IGxyLCBycilcbiAgOztcblxuICBsZXQgcmVjIHNwbGl0X2x0X2dlIHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHksIEVtcHR5XG4gICAgfCBMZWFmIHYgLT4gaWYgY29tcGFyZV9lbHQgeCB2ID4gMCB0aGVuIExlYWYgdiwgRW1wdHkgZWxzZSBFbXB0eSwgTGVhZiB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIGwsIGFkZF9taW4gdiByXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGxsLCBybCA9IHNwbGl0X2x0X2dlIGwgeCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgbGwsIGpvaW4gcmwgdiByKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsciwgcnIgPSBzcGxpdF9sdF9nZSByIHggfmNvbXBhcmVfZWx0IGluXG4gICAgICAgIGpvaW4gbCB2IGxyLCBycilcbiAgOztcblxuICAoKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2V0IG9wZXJhdGlvbnMgKilcblxuICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gIGxldCByZWMgbWVtIHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gZmFsc2VcbiAgICB8IExlYWYgdiAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgIGMgPSAwXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgIGMgPSAwIHx8IG1lbSAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcikgeCB+Y29tcGFyZV9lbHRcbiAgOztcblxuICBsZXQgc2luZ2xldG9uIHggPSBMZWFmIHhcblxuICBsZXQgcmVtb3ZlIHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgYXV4IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBTYW1lXG4gICAgICB8IExlYWYgdiAtPiBpZiBjb21wYXJlX2VsdCB4IHYgPSAwIHRoZW4gRW1wdHkgZWxzZSBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgciBlbHNlIGlmIGMgPCAwIHRoZW4gYmFsIChhdXggbCkgdiByIGVsc2UgYmFsIGwgdiAoYXV4IHIpXG4gICAgaW5cbiAgICB0cnkgYXV4IHQgd2l0aFxuICAgIHwgU2FtZSAtPiB0XG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9pbmRleCB0IGkgfmNvbXBhcmVfZWx0Ol8gPVxuICAgIGxldCByZWMgYXV4IHQgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFNhbWVcbiAgICAgIHwgTGVhZiBfIC0+IGlmIGkgPSAwIHRoZW4gRW1wdHkgZWxzZSBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbF9zaXplID0gbGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGMgPSBQb2x5LmNvbXBhcmUgaSBsX3NpemUgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIGJhbCAoYXV4IGwgaSkgdiByXG4gICAgICAgIGVsc2UgYmFsIGwgdiAoYXV4IHIgKGkgLSBsX3NpemUgLSAxKSlcbiAgICBpblxuICAgIHRyeSBhdXggdCBpIHdpdGhcbiAgICB8IFNhbWUgLT4gdFxuICA7O1xuXG4gIGxldCB1bmlvbiBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgdW5pb24gczEgczIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBzMVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICAgIHwgRW1wdHksIHQgfCB0LCBFbXB0eSAtPiB0XG4gICAgICAgIHwgTGVhZiB2MSwgXyAtPiB1bmlvbiAoTm9kZSAoRW1wdHksIHYxLCBFbXB0eSwgMSwgMSkpIHMyXG4gICAgICAgIHwgXywgTGVhZiB2MiAtPiB1bmlvbiBzMSAoTm9kZSAoRW1wdHksIHYyLCBFbXB0eSwgMSwgMSkpXG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgaDEsIF8pLCBOb2RlIChsMiwgdjIsIHIyLCBoMiwgXykgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMlxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIGlmIGgyID0gMVxuICAgICAgICAgICAgdGhlbiBhZGQgczEgdjIgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGwyLCBfLCByMiA9IHNwbGl0IHMyIHYxIH5jb21wYXJlX2VsdCBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjEgKHVuaW9uIHIxIHIyKSlcbiAgICAgICAgICBlbHNlIGlmIGgxID0gMVxuICAgICAgICAgIHRoZW4gYWRkIHMyIHYxIH5jb21wYXJlX2VsdFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGwxLCBfLCByMSA9IHNwbGl0IHMxIHYyIH5jb21wYXJlX2VsdCBpblxuICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYyICh1bmlvbiByMSByMikpKVxuICAgIGluXG4gICAgdW5pb24gczEgczJcbiAgOztcblxuICBsZXQgdW5pb25fbGlzdCB+Y29tcGFyYXRvciB+dG9fdHJlZSB4cyA9XG4gICAgbGV0IGNvbXBhcmVfZWx0ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICBMaXN0LmZvbGQgeHMgfmluaXQ6ZW1wdHkgfmY6KGZ1biBhYyB4IC0+IHVuaW9uIGFjICh0b190cmVlIHgpIH5jb21wYXJlX2VsdClcbiAgOztcblxuICBsZXQgaW50ZXIgczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGludGVyIHMxIHMyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gczFcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgICB8IEVtcHR5LCBfIHwgXywgRW1wdHkgLT4gRW1wdHlcbiAgICAgICAgfCAoTGVhZiBlbHQgYXMgc2luZ2xldG9uKSwgb3RoZXJfc2V0IHwgb3RoZXJfc2V0LCAoTGVhZiBlbHQgYXMgc2luZ2xldG9uKSAtPlxuICAgICAgICAgIGlmIG1lbSBvdGhlcl9zZXQgZWx0IH5jb21wYXJlX2VsdCB0aGVuIHNpbmdsZXRvbiBlbHNlIEVtcHR5XG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICAgICAgKG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+IGNvbmNhdCAoaW50ZXIgbDEgbDIpIChpbnRlciByMSByMilcbiAgICAgICAgICAgfCBsMiwgU29tZSB2MSwgcjIgLT4gam9pbiAoaW50ZXIgbDEgbDIpIHYxIChpbnRlciByMSByMikpKVxuICAgIGluXG4gICAgaW50ZXIgczEgczJcbiAgOztcblxuICBsZXQgZGlmZiBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgZGlmZiBzMSBzMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIEVtcHR5XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgXyAtPiBFbXB0eVxuICAgICAgICB8IHQxLCBFbXB0eSAtPiB0MVxuICAgICAgICB8IExlYWYgdjEsIHQyIC0+IGRpZmYgKE5vZGUgKEVtcHR5LCB2MSwgRW1wdHksIDEsIDEpKSB0MlxuICAgICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCB0MiAtPlxuICAgICAgICAgIChtYXRjaCBzcGxpdCB0MiB2MSB+Y29tcGFyZV9lbHQgd2l0aFxuICAgICAgICAgICB8IGwyLCBOb25lLCByMiAtPiBqb2luIChkaWZmIGwxIGwyKSB2MSAoZGlmZiByMSByMilcbiAgICAgICAgICAgfCBsMiwgU29tZSBfLCByMiAtPiBjb25jYXQgKGRpZmYgbDEgbDIpIChkaWZmIHIxIHIyKSkpXG4gICAgaW5cbiAgICBkaWZmIHMxIHMyXG4gIDs7XG5cbiAgbW9kdWxlIEVudW0gPSBzdHJ1Y3RcbiAgICB0eXBlIGluY3JlYXNpbmdcbiAgICB0eXBlIGRlY3JlYXNpbmdcblxuICAgIHR5cGUgKCdhLCAnZGlyZWN0aW9uKSB0ID1cbiAgICAgIHwgRW5kXG4gICAgICB8IE1vcmUgb2YgJ2EgKiAnYSB0cmVlICogKCdhLCAnZGlyZWN0aW9uKSB0XG5cbiAgICBsZXQgcmVjIGNvbnMgcyAoZSA6IChfLCBpbmNyZWFzaW5nKSB0KSA6IChfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgdiAtPiBNb3JlICh2LCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gY29ucyBsIChNb3JlICh2LCByLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBjb25zX3JpZ2h0IHMgKGUgOiAoXywgZGVjcmVhc2luZykgdCkgOiAoXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmIHYgLT4gTW9yZSAodiwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGNvbnNfcmlnaHQgciAoTW9yZSAodiwgbCwgZSkpXG4gICAgOztcblxuICAgIGxldCBvZl9zZXQgcyA6IChfLCBpbmNyZWFzaW5nKSB0ID0gY29ucyBzIEVuZFxuICAgIGxldCBvZl9zZXRfcmlnaHQgcyA6IChfLCBkZWNyZWFzaW5nKSB0ID0gY29uc19yaWdodCBzIEVuZFxuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiB2IC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBFbXB0eSwgMSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChfLCB2LCByLCBfLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPCAwIC0+IGxvb3AgciBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gbG9vcCBsIChNb3JlICh2LCByLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBzdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgdiAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgRW1wdHksIDEsIDEpKSBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgXywgXywgXykgd2hlbiBjb21wYXJlIHYga2V5ID4gMCAtPiBsb29wIGwgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGxvb3AgciAoTW9yZSAodiwgbCwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgY29tcGFyZSBjb21wYXJlX2VsdCBlMSBlMiA9XG4gICAgICBsZXQgcmVjIGxvb3AgZTEgZTIgPVxuICAgICAgICBtYXRjaCBlMSwgZTIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgICAgfCBFbmQsIF8gLT4gLTFcbiAgICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgICB8IE1vcmUgKHYxLCByMSwgZTEpLCBNb3JlICh2MiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIGlmIHBoeXNfZXF1YWwgcjEgcjJcbiAgICAgICAgICB0aGVuIGxvb3AgZTEgZTJcbiAgICAgICAgICBlbHNlIGxvb3AgKGNvbnMgcjEgZTEpIChjb25zIHIyIGUyKVxuICAgICAgaW5cbiAgICAgIGxvb3AgZTEgZTJcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBpdGVyIH5mID0gZnVuY3Rpb25cbiAgICAgIHwgRW5kIC0+ICgpXG4gICAgICB8IE1vcmUgKGEsIHRyZWUsIGVudW0pIC0+XG4gICAgICAgIGYgYTtcbiAgICAgICAgaXRlciAoY29ucyB0cmVlIGVudW0pIH5mXG4gICAgOztcblxuICAgIGxldCBpdGVyMiBjb21wYXJlX2VsdCB0MSB0MiB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+ICgpXG4gICAgICAgIHwgRW5kLCBfIC0+IGl0ZXIgdDIgfmY6KGZ1biBhIC0+IGYgKGBSaWdodCBhKSkgW0Bub250YWlsXVxuICAgICAgICB8IF8sIEVuZCAtPiBpdGVyIHQxIH5mOihmdW4gYSAtPiBmIChgTGVmdCBhKSkgW0Bub250YWlsXVxuICAgICAgICB8IE1vcmUgKGExLCB0cmVlMSwgZW51bTEpLCBNb3JlIChhMiwgdHJlZTIsIGVudW0yKSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IGExIGEyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBmIChgQm90aCAoYTEsIGEyKSk7XG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSAoY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGYgKGBMZWZ0IGExKTtcbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIHQyKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgZiAoYFJpZ2h0IGEyKTtcbiAgICAgICAgICAgIGxvb3AgdDEgKGNvbnMgdHJlZTIgZW51bTIpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDIgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfZWx0ID1cbiAgICAgIGxldCBzdGVwIHN0YXRlIDogKChfLCBfKSBFaXRoZXIudCwgXykgU2VxdWVuY2UuU3RlcC50ID1cbiAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IERvbmVcbiAgICAgICAgfCBFbmQsIE1vcmUgKGVsdCwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gU2Vjb25kIGVsdDsgc3RhdGUgPSBFbmQsIGNvbnMgdHJlZSBlbnVtIH1cbiAgICAgICAgfCBNb3JlIChlbHQsIHRyZWUsIGVudW0pLCBFbmQgLT5cbiAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gRmlyc3QgZWx0OyBzdGF0ZSA9IGNvbnMgdHJlZSBlbnVtLCBFbmQgfVxuICAgICAgICB8IChNb3JlIChhMSwgdHJlZTEsIGVudW0xKSBhcyBsZWZ0KSwgKE1vcmUgKGEyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IGExIGEyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dF9zdGF0ZSA9XG4gICAgICAgICAgICAgIGlmIHBoeXNfZXF1YWwgdHJlZTEgdHJlZTJcbiAgICAgICAgICAgICAgdGhlbiBlbnVtMSwgZW51bTJcbiAgICAgICAgICAgICAgZWxzZSBjb25zIHRyZWUxIGVudW0xLCBjb25zIHRyZWUyIGVudW0yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU2tpcCB7IHN0YXRlID0gbmV4dF9zdGF0ZSB9KVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiBZaWVsZCB7IHZhbHVlID0gRmlyc3QgYTE7IHN0YXRlID0gY29ucyB0cmVlMSBlbnVtMSwgcmlnaHQgfVxuICAgICAgICAgIGVsc2UgWWllbGQgeyB2YWx1ZSA9IFNlY29uZCBhMjsgc3RhdGUgPSBsZWZ0LCBjb25zIHRyZWUyIGVudW0yIH1cbiAgICAgIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDoob2Zfc2V0IHQxLCBvZl9zZXQgdDIpIH5mOnN0ZXBcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdCB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB0LCBlKSAtPiBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrOyBzdGF0ZSA9IEVudW0uY29ucyB0IGUgfVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9lbHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2Zfc2V0IHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdCwgZSkgLT5cbiAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gazsgc3RhdGUgPSBFbnVtLmNvbnNfcmlnaHQgdCBlIH1cbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fZWx0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3NldF9yaWdodCB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZVxuICAgICAgICBjb21wYXJhdG9yXG4gICAgICAgID8ob3JkZXIgPSBgSW5jcmVhc2luZylcbiAgICAgICAgP2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgICAgP2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgaW5jbHVzaXZlX2JvdW5kIHNpZGUgdCBib3VuZCA9XG4gICAgICBsZXQgY29tcGFyZV9lbHQgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgICAgbGV0IGwsIG1heWJlLCByID0gc3BsaXQgdCBib3VuZCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgIGxldCB0ID0gc2lkZSAobCwgcikgaW5cbiAgICAgIG1hdGNoIG1heWJlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0XG4gICAgICB8IFNvbWUgZWx0IC0+IGFkZCB0IGVsdCB+Y29tcGFyZV9lbHRcbiAgICBpblxuICAgIG1hdGNoIG9yZGVyIHdpdGhcbiAgICB8IGBJbmNyZWFzaW5nIC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGxlc3Nfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIGZzdCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQ6Z3JlYXRlcl9vcl9lcXVhbF90byB0XG4gICAgfCBgRGVjcmVhc2luZyAtPlxuICAgICAgbGV0IHQgPSBPcHRpb24uZm9sZCBncmVhdGVyX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBzbmQpIGluXG4gICAgICB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0Omxlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG5cbiAgbGV0IHJlYyBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgZiB2IHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGlmIGYgdlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyBsIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgdlxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyByIH5mXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgciB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIHZcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2xhc3Rfc2F0aXNmeWluZyBsIH5mXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPlxuICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPCAwKSBbQG5vbnRhaWxdXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApIFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA+PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIHggYXMgZWx0IHdoZW4gY29tcGFyZSB4IHYgPSAwIC0+IGVsdFxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYExhc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIHggYXMgZWx0IHdoZW4gY29tcGFyZSB4IHYgPSAwIC0+IGVsdFxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApIFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA+IDApIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGxldCBpc19sZWZ0IHggPVxuICAgICAgbWF0Y2ggc2VnbWVudF9vZiB4IHdpdGhcbiAgICAgIHwgYExlZnQgLT4gdHJ1ZVxuICAgICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgICBpblxuICAgIGxldCBpc19yaWdodCB4ID0gbm90IChpc19sZWZ0IHgpIGluXG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X29uX2xlZnQgLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+Zjppc19sZWZ0IFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9vbl9yaWdodCAtPiBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Zjppc19yaWdodCBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgICAgIGNvbXBhcmF0b3JcbiAgICAgICAgPyhvcmRlciA9IGBJbmNyZWFzaW5nKVxuICAgICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgICA/bGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgICAgIHQnXG4gICAgPVxuICAgIFNlcXVlbmNlLm1lcmdlX3dpdGhfZHVwbGljYXRlc1xuICAgICAgKHRvX3NlcXVlbmNlIGNvbXBhcmF0b3Igfm9yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQpXG4gICAgICAodG9fc2VxdWVuY2UgY29tcGFyYXRvciB+b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCcpXG4gICAgICB+Y29tcGFyZTpcbiAgICAgICAgKG1hdGNoIG9yZGVyIHdpdGhcbiAgICAgICAgIHwgYEluY3JlYXNpbmcgLT4gY29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgICB8IGBEZWNyZWFzaW5nIC0+IEZuLmZsaXAgY29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfZWx0IHMxIHMyID1cbiAgICBFbnVtLmNvbXBhcmUgY29tcGFyZV9lbHQgKEVudW0ub2Zfc2V0IHMxKSAoRW51bS5vZl9zZXQgczIpXG4gIDs7XG5cbiAgbGV0IGl0ZXIyIHMxIHMyIH5jb21wYXJlX2VsdCB+ZiA9XG4gICAgRW51bS5pdGVyMiBjb21wYXJlX2VsdCAoRW51bS5vZl9zZXQgczEpIChFbnVtLm9mX3NldCBzMikgfmZcbiAgOztcblxuICBsZXQgZXF1YWwgczEgczIgfmNvbXBhcmVfZWx0ID0gY29tcGFyZSBjb21wYXJlX2VsdCBzMSBzMiA9IDBcblxuICBsZXQgaXNfc3Vic2V0IHMxIH5vZl86czIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGlzX3N1YnNldCBzMSB+b2ZfOnMyID1cbiAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICB8IEVtcHR5LCBfIC0+IHRydWVcbiAgICAgIHwgXywgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTGVhZiB2MSwgdDIgLT4gbWVtIHQyIHYxIH5jb21wYXJlX2VsdFxuICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgTGVhZiB2MiAtPlxuICAgICAgICAobWF0Y2ggbDEsIHIxIHdpdGhcbiAgICAgICAgIHwgRW1wdHksIEVtcHR5IC0+XG4gICAgICAgICAgICgqIFRoaXMgY2FzZSBzaG91bGRuJ3Qgb2NjdXIgaW4gcHJhY3RpY2UgYmVjYXVzZSB3ZSBzaG91bGQgaGF2ZSBjb25zdHJ1Y3RlZFxuICAgICAgICAgICAgICBhIExlYWYgcmF0aGVyIHRoYW4gYSBOb2RlIHdpdGggdHdvIEVtcHR5IHN1YnRyZWVzICopXG4gICAgICAgICAgIGNvbXBhcmVfZWx0IHYxIHYyID0gMFxuICAgICAgICAgfCBfLCBfIC0+IGZhbHNlKVxuICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgKE5vZGUgKGwyLCB2MiwgcjIsIF8sIF8pIGFzIHQyKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHYxIHYyIGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBwaHlzX2VxdWFsIHMxIHMyIHx8IChpc19zdWJzZXQgbDEgfm9mXzpsMiAmJiBpc19zdWJzZXQgcjEgfm9mXzpyMilcbiAgICAgICAgICAoKiBOb3RlIHRoYXQgaGVpZ2h0IGFuZCBzaXplIGRvbid0IG1hdHRlciBoZXJlLiAqKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gaXNfc3Vic2V0IChOb2RlIChsMSwgdjEsIEVtcHR5LCAwLCAwKSkgfm9mXzpsMiAmJiBpc19zdWJzZXQgcjEgfm9mXzp0MlxuICAgICAgICBlbHNlIGlzX3N1YnNldCAoTm9kZSAoRW1wdHksIHYxLCByMSwgMCwgMCkpIH5vZl86cjIgJiYgaXNfc3Vic2V0IGwxIH5vZl86dDJcbiAgICBpblxuICAgIGlzX3N1YnNldCBzMSB+b2ZfOnMyXG4gIDs7XG5cbiAgbGV0IHJlYyBhcmVfZGlzam9pbnQgczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgIHwgRW1wdHksIF8gfCBfLCBFbXB0eSAtPiB0cnVlXG4gICAgfCBMZWFmIGVsdCwgb3RoZXJfc2V0IHwgb3RoZXJfc2V0LCBMZWFmIGVsdCAtPiBub3QgKG1lbSBvdGhlcl9zZXQgZWx0IH5jb21wYXJlX2VsdClcbiAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCB0MiAtPlxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBmYWxzZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+XG4gICAgICAgICAgYXJlX2Rpc2pvaW50IGwxIGwyIH5jb21wYXJlX2VsdCAmJiBhcmVfZGlzam9pbnQgcjEgcjIgfmNvbXBhcmVfZWx0XG4gICAgICAgIHwgXywgU29tZSBfLCBfIC0+IGZhbHNlKVxuICA7O1xuXG4gIGxldCBpdGVyIHQgfmYgPVxuICAgIGxldCByZWMgaXRlciA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICB8IExlYWYgdiAtPiBmIHZcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgaXRlciBsO1xuICAgICAgICBmIHY7XG4gICAgICAgIGl0ZXIgclxuICAgIGluXG4gICAgaXRlciB0IFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgPSBFbnVtLnN5bW1ldHJpY19kaWZmXG5cbiAgbGV0IHJlYyBmb2xkIHMgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmIHYgLT4gZiBhY2N1IHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGZvbGQgfmYgciB+aW5pdDooZiAoZm9sZCB+ZiBsIH5pbml0OmFjY3UpIHYpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfZWxlbSBzdGF0ZSB0ID1cbiAgICBmb2xkIHQgfmluaXQ6KGhhc2hfZm9sZF9pbnQgc3RhdGUgKGxlbmd0aCB0KSkgfmY6aGFzaF9mb2xkX2VsZW1cbiAgOztcblxuICBsZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG4gIGxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcblxuICBsZXQgcmVjIGZvbGRfcmlnaHQgcyB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiBmIHYgYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZm9sZF9yaWdodCB+ZiBsIH5pbml0OihmIHYgKGZvbGRfcmlnaHQgfmYgciB+aW5pdDphY2N1KSlcbiAgOztcblxuICBsZXQgcmVjIGZvcl9hbGwgdCB+ZjpwID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgdiAtPiBwIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IHAgdiAmJiBmb3JfYWxsIH5mOnAgbCAmJiBmb3JfYWxsIH5mOnAgclxuICA7O1xuXG4gIGxldCByZWMgZXhpc3RzIHQgfmY6cCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBmYWxzZVxuICAgIHwgTGVhZiB2IC0+IHAgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gcCB2IHx8IGV4aXN0cyB+ZjpwIGwgfHwgZXhpc3RzIH5mOnAgclxuICA7O1xuXG4gIGxldCBmaWx0ZXIgcyB+ZjpwID1cbiAgICBsZXQgcmVjIGZpbHQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBMZWFmIHYgYXMgdCAtPiBpZiBwIHYgdGhlbiB0IGVsc2UgRW1wdHlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgYXMgdCAtPlxuICAgICAgICBsZXQgbCcgPSBmaWx0IGwgaW5cbiAgICAgICAgbGV0IGtlZXBfdiA9IHAgdiBpblxuICAgICAgICBsZXQgcicgPSBmaWx0IHIgaW5cbiAgICAgICAgaWYga2VlcF92ICYmIHBoeXNfZXF1YWwgbCBsJyAmJiBwaHlzX2VxdWFsIHIgcidcbiAgICAgICAgdGhlbiB0XG4gICAgICAgIGVsc2UgaWYga2VlcF92XG4gICAgICAgIHRoZW4gam9pbiBsJyB2IHInXG4gICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG4gICAgaW5cbiAgICBmaWx0IHMgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIHMgfmY6cCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgZmlsdCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgKG1hdGNoIHAgdiB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gYWNjdVxuICAgICAgICAgfCBTb21lIHYgLT4gYWRkIGFjY3UgdiB+Y29tcGFyZV9lbHQpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGZpbHRcbiAgICAgICAgICAoZmlsdFxuICAgICAgICAgICAgIChtYXRjaCBwIHYgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjdVxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdClcbiAgICAgICAgICAgICBsKVxuICAgICAgICAgIHJcbiAgICBpblxuICAgIGZpbHQgRW1wdHkgcyBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiBzIH5mOnAgPVxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5LCBFbXB0eVxuICAgICAgfCBMZWFmIHYgYXMgdCAtPiBpZiBwIHYgdGhlbiB0LCBFbXB0eSBlbHNlIEVtcHR5LCB0XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIGFzIHQgLT5cbiAgICAgICAgbGV0IGwndCwgbCdmID0gbG9vcCBsIGluXG4gICAgICAgIGxldCBrZWVwX3ZfdCA9IHAgdiBpblxuICAgICAgICBsZXQgcid0LCByJ2YgPSBsb29wIHIgaW5cbiAgICAgICAgbGV0IG1rIGtlZXBfdiBsJyByJyA9XG4gICAgICAgICAgaWYga2VlcF92ICYmIHBoeXNfZXF1YWwgbCBsJyAmJiBwaHlzX2VxdWFsIHIgcidcbiAgICAgICAgICB0aGVuIHRcbiAgICAgICAgICBlbHNlIGlmIGtlZXBfdlxuICAgICAgICAgIHRoZW4gam9pbiBsJyB2IHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcbiAgICAgICAgaW5cbiAgICAgICAgbWsga2VlcF92X3QgbCd0IHIndCwgbWsgKG5vdCBrZWVwX3ZfdCkgbCdmIHInZlxuICAgIGluXG4gICAgbG9vcCBzIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiB2IDo6IGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGVsZW1lbnRzX2F1eCAodiA6OiBlbGVtZW50c19hdXggYWNjdSByKSBsXG4gIDs7XG5cbiAgbGV0IGVsZW1lbnRzIHMgPSBlbGVtZW50c19hdXggW10gc1xuXG4gIGxldCBjaG9vc2UgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gU29tZSB2XG4gICAgfCBOb2RlIChfLCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcbiAgOztcblxuICBsZXQgY2hvb3NlX2V4biA9XG4gICAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU2V0LmNob29zZV9leG46IGVtcHR5IHNldFwiKSBpblxuICAgIGxldCBjaG9vc2VfZXhuIHQgPVxuICAgICAgbWF0Y2ggY2hvb3NlIHQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGNob29zZV9leG5cbiAgOztcblxuICBsZXQgb2ZfbGlzdCBsc3QgfmNvbXBhcmVfZWx0ID1cbiAgICBMaXN0LmZvbGQgbHN0IH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSB+Y29tcGFyZV9lbHQgPVxuICAgIFNlcXVlbmNlLmZvbGQgc2VxdWVuY2UgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgbGV0IHRvX2xpc3QgcyA9IGVsZW1lbnRzIHNcblxuICBsZXQgb2ZfYXJyYXkgYSB+Y29tcGFyZV9lbHQgPVxuICAgIEFycmF5LmZvbGQgYSB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJlX2VsdClcbiAgOztcblxuICAoKiBmYXN0ZXIgYnV0IGVxdWl2YWxlbnQgdG8gW0FycmF5Lm9mX2xpc3QgKHRvX2xpc3QgdCldICopXG4gIGxldCB0b19hcnJheSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBbfHxdXG4gICAgfCBMZWFmIHYgLT4gW3wgdiB8XVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgcykgLT5cbiAgICAgIGxldCByZXMgPSBBcnJheS5jcmVhdGUgfmxlbjpzIHYgaW5cbiAgICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgICgqIEludmFyaWFudDogb24gZW50cnkgYW5kIG9uIGV4aXQgdG8gW2xvb3BdLCAhcG9zX3JlZiBpcyB0aGUgbmV4dFxuICAgICAgICAgICBhdmFpbGFibGUgY2VsbCBpbiB0aGUgYXJyYXkuICopXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgICByZXMuKCFwb3NfcmVmKSA8LSB2O1xuICAgICAgICAgIGluY3IgcG9zX3JlZlxuICAgICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgICAgbG9vcCBsO1xuICAgICAgICAgIHJlcy4oIXBvc19yZWYpIDwtIHY7XG4gICAgICAgICAgaW5jciBwb3NfcmVmO1xuICAgICAgICAgIGxvb3AgclxuICAgICAgaW5cbiAgICAgIGxvb3AgbDtcbiAgICAgICgqIHJlcy4oIXBvc19yZWYpIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQgKGJ5IEFycmF5LmNyZWF0ZSB+bGVuOmFib3ZlKS4gKilcbiAgICAgIGluY3IgcG9zX3JlZjtcbiAgICAgIGxvb3AgcjtcbiAgICAgIHJlc1xuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiB+Y29tcGFyZV9lbHQgPVxuICAgIGZvbGQgdCB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCAoZiB4KSB+Y29tcGFyZV9lbHQpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZ3JvdXBfYnkgc2V0IH5lcXVpdiA9XG4gICAgbGV0IHJlYyBsb29wIHNldCBlcXVpdl9jbGFzc2VzID1cbiAgICAgIGlmIGlzX2VtcHR5IHNldFxuICAgICAgdGhlbiBlcXVpdl9jbGFzc2VzXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHggPSBjaG9vc2VfZXhuIHNldCBpblxuICAgICAgICBsZXQgZXF1aXZfeCwgbm90X2VxdWl2X3ggPVxuICAgICAgICAgIHBhcnRpdGlvbl90ZiBzZXQgfmY6KGZ1biBlbHQgLT4gcGh5c19lcXVhbCB4IGVsdCB8fCBlcXVpdiB4IGVsdClcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCBub3RfZXF1aXZfeCAoZXF1aXZfeCA6OiBlcXVpdl9jbGFzc2VzKSlcbiAgICBpblxuICAgIGxvb3Agc2V0IFtdIFtAbm9udGFpbF1cbiAgOztcblxuXG4gIGxldCByZWMgZmluZCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIFNvbWUgdlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGZpbmQgbCB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmaW5kIHIgfmZcbiAgICAgICAgfCBTb21lIF8gYXMgciAtPiByKVxuICA7O1xuXG4gIGxldCByZWMgZmluZF9tYXAgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gZiB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgKG1hdGNoIGYgdiB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICAobWF0Y2ggZmluZF9tYXAgbCB+ZiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZpbmRfbWFwIHIgfmZcbiAgICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHIpKVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNldC5maW5kX2V4biBmYWlsZWQgdG8gZmluZCBhIG1hdGNoaW5nIGVsZW1lbnRcIlxuICAgIHwgU29tZSBlIC0+IGVcbiAgOztcblxuICBsZXQgcmVjIG50aCB0IGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGkgPSAwIHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgcykgLT5cbiAgICAgIGlmIGkgPj0gc1xuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxfc2l6ZSA9IGxlbmd0aCBsIGluXG4gICAgICAgIGxldCBjID0gUG9seS5jb21wYXJlIGkgbF9zaXplIGluXG4gICAgICAgIGlmIGMgPCAwIHRoZW4gbnRoIGwgaSBlbHNlIGlmIGMgPSAwIHRoZW4gU29tZSB2IGVsc2UgbnRoIHIgKGkgLSBsX3NpemUgLSAxKSlcbiAgOztcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGxvb3AgeHMgbGVmdG92ZXJzIGFscmVhZHlfc2VlbiA9XG4gICAgICBtYXRjaCB4cyB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGxlZnRvdmVyc1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBpZiBtZW0gYWxyZWFkeV9zZWVuIGhkIH5jb21wYXJlX2VsdFxuICAgICAgICB0aGVuIGxvb3AgdGwgbGVmdG92ZXJzIGFscmVhZHlfc2VlblxuICAgICAgICBlbHNlIGxvb3AgdGwgKGhkIDo6IGxlZnRvdmVycykgKGFkZCBhbHJlYWR5X3NlZW4gaGQgfmNvbXBhcmVfZWx0KVxuICAgIGluXG4gICAgbG9vcCB4cyBbXSBlbXB0eVxuICA7O1xuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IGFfb2Zfc2V4cCBzZXhwIH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkxpc3QgbHN0IC0+XG4gICAgICBsZXQgZWx0X2xzdCA9IExpc3QubWFwIGxzdCB+ZjphX29mX3NleHAgaW5cbiAgICAgIGxldCBzZXQgPSBvZl9saXN0IGVsdF9sc3QgfmNvbXBhcmVfZWx0IGluXG4gICAgICBpZiBsZW5ndGggc2V0ID0gTGlzdC5sZW5ndGggbHN0XG4gICAgICB0aGVuIHNldFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzZXQgPSByZWYgZW1wdHkgaW5cbiAgICAgICAgTGlzdC5pdGVyMl9leG4gbHN0IGVsdF9sc3QgfmY6KGZ1biBlbF9zZXhwIGVsIC0+XG4gICAgICAgICAgaWYgbWVtICFzZXQgZWwgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiU2V0LnRfb2Zfc2V4cDogZHVwbGljYXRlIGVsZW1lbnQgaW4gc2V0XCIgZWxfc2V4cFxuICAgICAgICAgIGVsc2Ugc2V0IDo9IGFkZCAhc2V0IGVsIH5jb21wYXJlX2VsdCk7XG4gICAgICAgIGFzc2VydCBmYWxzZSlcbiAgICB8IHNleHAgLT4gb2Zfc2V4cF9lcnJvciBcIlNldC50X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIFNleHAuTGlzdCAoZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4gZWwgYWNjIC0+IHNleHBfb2ZfYSBlbCA6OiBhY2MpKVxuICA7O1xuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIGxldCBpc19zdWJzZXRcbiAgICAgICAgICAoc3Vic2V0IDogXyBOYW1lZC50KVxuICAgICAgICAgIH5vZl86KHN1cGVyc2V0IDogXyBOYW1lZC50KVxuICAgICAgICAgIH5zZXhwX29mX2VsdFxuICAgICAgICAgIH5jb21wYXJlX2VsdFxuICAgICAgPVxuICAgICAgbGV0IGludmFsaWRfZWxlbWVudHMgPSBkaWZmIHN1YnNldC5zZXQgc3VwZXJzZXQuc2V0IH5jb21wYXJlX2VsdCBpblxuICAgICAgaWYgaXNfZW1wdHkgaW52YWxpZF9lbGVtZW50c1xuICAgICAgdGhlbiBPayAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBpbnZhbGlkX2VsZW1lbnRzX3NleHAgPSBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgaW52YWxpZF9lbGVtZW50cyBpblxuICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgIChzdWJzZXQubmFtZSBeIFwiIGlzIG5vdCBhIHN1YnNldCBvZiBcIiBeIHN1cGVyc2V0Lm5hbWUpXG4gICAgICAgICAgICAgWyBcImludmFsaWRfZWxlbWVudHNcIiwgaW52YWxpZF9lbGVtZW50c19zZXhwIF0pKVxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgczEgczIgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdCA9XG4gICAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG4gICAgICAgIFsgaXNfc3Vic2V0IHMxIH5vZl86czIgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdFxuICAgICAgICA7IGlzX3N1YnNldCBzMiB+b2ZfOnMxIH5zZXhwX29mX2VsdCB+Y29tcGFyZV9lbHRcbiAgICAgICAgXVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbnR5cGUgKCdhLCAnY29tcGFyYXRvcikgdCA9XG4gIHsgKCogW2NvbXBhcmF0b3JdIGlzIHRoZSBmaXJzdCBmaWVsZCBzbyB0aGF0IHBvbHltb3JwaGljIGVxdWFsaXR5IGZhaWxzIG9uIGEgbWFwIGR1ZVxuICAgICAgIHRvIHRoZSBmdW5jdGlvbmFsIHZhbHVlIGluIHRoZSBjb21wYXJhdG9yLlxuICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFmZmVjdCBwb2x5bW9ycGhpYyBbY29tcGFyZV06IHRoYXQgc3RpbGwgcHJvZHVjZXNcbiAgICAgICBub25zZW5zZS4gKilcbiAgICBjb21wYXJhdG9yIDogKCdhLCAnY29tcGFyYXRvcikgQ29tcGFyYXRvci50XG4gIDsgdHJlZSA6ICdhIFRyZWUwLnRcbiAgfVxuXG50eXBlICgnYSwgJ2NvbXBhcmF0b3IpIHRyZWUgPSAnYSBUcmVlMC50XG5cbmxldCBsaWtlIHsgdHJlZSA9IF87IGNvbXBhcmF0b3IgfSB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yIH1cblxubGV0IGxpa2VfbWF5YmVfbm9fb3AgKHsgdHJlZSA9IG9sZF90cmVlOyBjb21wYXJhdG9yIH0gYXMgb2xkX3QpIHRyZWUgPVxuICBpZiBwaHlzX2VxdWFsIG9sZF90cmVlIHRyZWUgdGhlbiBvbGRfdCBlbHNlIHsgdHJlZTsgY29tcGFyYXRvciB9XG47O1xuXG5sZXQgY29tcGFyZV9lbHQgdCA9IHQuY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciB0ID0gdC5jb21wYXJhdG9yXG5cbiAgbGV0IGNvbXBhcmF0b3JfcyAodHlwZSBrIGNtcCkgdCA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICB0eXBlIHQgPSBrXG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgICBsZXQgY29tcGFyYXRvciA9IHQuY29tcGFyYXRvclxuICAgIGVuZClcbiAgOztcblxuICBsZXQgaW52YXJpYW50cyB0ID0gVHJlZTAuaW52YXJpYW50cyB0LnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KVxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdC50cmVlXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdC50cmVlXG4gIGxldCBlbGVtZW50cyB0ID0gVHJlZTAuZWxlbWVudHMgdC50cmVlXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHQudHJlZVxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHQudHJlZVxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0LnRyZWVcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0LnRyZWVcbiAgbGV0IGNob29zZSB0ID0gVHJlZTAuY2hvb3NlIHQudHJlZVxuICBsZXQgY2hvb3NlX2V4biB0ID0gVHJlZTAuY2hvb3NlX2V4biB0LnRyZWVcbiAgbGV0IHRvX2xpc3QgdCA9IFRyZWUwLnRvX2xpc3QgdC50cmVlXG4gIGxldCB0b19hcnJheSB0ID0gVHJlZTAudG9fYXJyYXkgdC50cmVlXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQudHJlZSB+aW5pdCB+ZlxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBUcmVlMC5mb2xkX3VudGlsIHQudHJlZSB+aW5pdCB+ZiB+ZmluaXNoXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQudHJlZSB+aW5pdCB+ZlxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQudHJlZSB+ZlxuICBsZXQgaXRlcjIgYSBiIH5mID0gVHJlZTAuaXRlcjIgYS50cmVlIGIudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IGEpXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0LnRyZWUgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdC50cmVlIH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdC50cmVlIH5mXG4gIGxldCBzdW0gbSB0IH5mID0gVHJlZTAuc3VtIG0gdC50cmVlIH5mXG4gIGxldCBmaW5kIHQgfmYgPSBUcmVlMC5maW5kIHQudHJlZSB+ZlxuICBsZXQgZmluZF9leG4gdCB+ZiA9IFRyZWUwLmZpbmRfZXhuIHQudHJlZSB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IFRyZWUwLmZpbmRfbWFwIHQudHJlZSB+ZlxuICBsZXQgbWVtIHQgYSA9IFRyZWUwLm1lbSB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IGxpa2VfbWF5YmVfbm9fb3AgdCAoVHJlZTAuZmlsdGVyIHQudHJlZSB+ZilcbiAgbGV0IGFkZCB0IGEgPSBsaWtlIHQgKFRyZWUwLmFkZCB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKVxuICBsZXQgcmVtb3ZlIHQgYSA9IGxpa2UgdCAoVHJlZTAucmVtb3ZlIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCB1bmlvbiB0MSB0MiA9IGxpa2UgdDEgKFRyZWUwLnVuaW9uIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKSlcbiAgbGV0IGludGVyIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAuaW50ZXIgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuICBsZXQgZGlmZiB0MSB0MiA9IGxpa2UgdDEgKFRyZWUwLmRpZmYgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IHQxIHQyID0gVHJlZTAuY29tcGFyZSAoY29tcGFyZV9lbHQgdDEpIHQxLnRyZWUgdDIudHJlZVxuICBsZXQgZXF1YWwgdDEgdDIgPSBUcmVlMC5lcXVhbCB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgbGV0IGlzX3N1YnNldCB0IH5vZl8gPSBUcmVlMC5pc19zdWJzZXQgdC50cmVlIH5vZl86b2ZfLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KVxuXG4gIGxldCBhcmVfZGlzam9pbnQgdDEgdDIgPVxuICAgIFRyZWUwLmFyZV9kaXNqb2ludCB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgOztcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBsZXQgdG9fbmFtZWRfdHJlZSAobmFtZWQgOiAoXywgXykgdCBOYW1lZC50KSA9IHsgbmFtZWQgd2l0aCBzZXQgPSBuYW1lZC5zZXQudHJlZSB9XG5cbiAgICBsZXQgaXNfc3Vic2V0IHN1YnNldCB+b2ZfOnN1cGVyc2V0ID1cbiAgICAgIFRyZWUwLk5hbWVkLmlzX3N1YnNldFxuICAgICAgICAodG9fbmFtZWRfdHJlZSBzdWJzZXQpXG4gICAgICAgIH5vZl86KHRvX25hbWVkX3RyZWUgc3VwZXJzZXQpXG4gICAgICAgIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgc3Vic2V0LnNldClcbiAgICAgICAgfnNleHBfb2ZfZWx0OnN1YnNldC5zZXQuY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIHQxIHQyID1cbiAgICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXQgWyBpc19zdWJzZXQgdDEgfm9mXzp0MjsgaXNfc3Vic2V0IHQyIH5vZl86dDEgXVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIE5hbWVkXG4gIGVuZFxuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gICAgbGV0IHRyZWVfdCwgdHJlZV9mID0gVHJlZTAucGFydGl0aW9uX3RmIHQudHJlZSB+ZiBpblxuICAgIGxpa2VfbWF5YmVfbm9fb3AgdCB0cmVlX3QsIGxpa2VfbWF5YmVfbm9fb3AgdCB0cmVlX2ZcbiAgOztcblxuICBsZXQgc3BsaXQgdCBhID1cbiAgICBsZXQgdHJlZTEsIGIsIHRyZWUyID0gVHJlZTAuc3BsaXQgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSBpblxuICAgIGxpa2UgdCB0cmVlMSwgYiwgbGlrZSB0IHRyZWUyXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2xlX2d0IHQgYSA9XG4gICAgbGV0IHRyZWUxLCB0cmVlMiA9IFRyZWUwLnNwbGl0X2xlX2d0IHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkgaW5cbiAgICBsaWtlIHQgdHJlZTEsIGxpa2UgdCB0cmVlMlxuICA7O1xuXG4gIGxldCBzcGxpdF9sdF9nZSB0IGEgPVxuICAgIGxldCB0cmVlMSwgdHJlZTIgPSBUcmVlMC5zcGxpdF9sdF9nZSB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpIGluXG4gICAgbGlrZSB0IHRyZWUxLCBsaWtlIHQgdHJlZTJcbiAgOztcblxuICBsZXQgZ3JvdXBfYnkgdCB+ZXF1aXYgPSBMaXN0Lm1hcCAoVHJlZTAuZ3JvdXBfYnkgdC50cmVlIH5lcXVpdikgfmY6KGxpa2UgdClcbiAgbGV0IG50aCB0IGkgPSBUcmVlMC5udGggdC50cmVlIGlcbiAgbGV0IHJlbW92ZV9pbmRleCB0IGkgPSBsaWtlIHQgKFRyZWUwLnJlbW92ZV9pbmRleCB0LnRyZWUgaSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9hIHQudHJlZVxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2UgdC5jb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0LnRyZWVcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0LnRyZWUgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQudHJlZSB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2UgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCcgPVxuICAgIFRyZWUwLm1lcmdlX3RvX3NlcXVlbmNlXG4gICAgICB0LmNvbXBhcmF0b3JcbiAgICAgID9vcmRlclxuICAgICAgP2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgID9sZXNzX29yX2VxdWFsX3RvXG4gICAgICB0LnRyZWVcbiAgICAgIHQnLnRyZWVcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5IHN0YXRlIHQgPVxuICAgIFRyZWUwLmhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfa2V5IHN0YXRlIHQudHJlZVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgQWNjZXNzb3JzXG5cbmxldCBjb21wYXJlIF8gXyB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG5cbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnY29tcGFyYXRvcikgdCA9ICgnYSwgJ2NvbXBhcmF0b3IpIHRyZWVcblxuICBsZXQgY2UgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3IgYV9vZl9zZXhwIHNleHAgPVxuICAgIFRyZWUwLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKSBhX29mX3NleHAgc2V4cFxuICA7O1xuXG4gIGxldCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uID0gVHJlZTAuZW1wdHlcbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yOl8gPSBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3I6XyBlID0gVHJlZTAuc2luZ2xldG9uIGVcbiAgbGV0IGxlbmd0aCB0ID0gVHJlZTAubGVuZ3RoIHRcbiAgbGV0IGludmFyaWFudHMgfmNvbXBhcmF0b3IgdCA9IFRyZWUwLmludmFyaWFudHMgdCB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdFxuICBsZXQgZWxlbWVudHMgdCA9IFRyZWUwLmVsZW1lbnRzIHRcbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdFxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHRcbiAgbGV0IG1heF9lbHQgdCA9IFRyZWUwLm1heF9lbHQgdFxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHRcbiAgbGV0IGNob29zZSB0ID0gVHJlZTAuY2hvb3NlIHRcbiAgbGV0IGNob29zZV9leG4gdCA9IFRyZWUwLmNob29zZV9leG4gdFxuICBsZXQgdG9fbGlzdCB0ID0gVHJlZTAudG9fbGlzdCB0XG4gIGxldCB0b19hcnJheSB0ID0gVHJlZTAudG9fYXJyYXkgdFxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0IH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0IH5mXG4gIGxldCBzdW0gbSB0IH5mID0gVHJlZTAuc3VtIG0gdCB+ZlxuICBsZXQgZmluZCB0IH5mID0gVHJlZTAuZmluZCB0IH5mXG4gIGxldCBmaW5kX2V4biB0IH5mID0gVHJlZTAuZmluZF9leG4gdCB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IFRyZWUwLmZpbmRfbWFwIHQgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdCB+aW5pdCB+ZlxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBUcmVlMC5mb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaFxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0IH5pbml0IH5mXG4gIGxldCBtYXAgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLm1hcCB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGZpbHRlciB0IH5mID0gVHJlZTAuZmlsdGVyIHQgfmZcbiAgbGV0IGZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLmZpbHRlcl9tYXAgdCB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl90ZiB0IH5mXG4gIGxldCBpdGVyMiB+Y29tcGFyYXRvciBhIGIgfmYgPSBUcmVlMC5pdGVyMiBhIGIgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgbWVtIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLm1lbSB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgYWRkIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLmFkZCB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgcmVtb3ZlIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLnJlbW92ZSB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgdW5pb24gfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC51bmlvbiB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBpbnRlciB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmludGVyIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGRpZmYgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5kaWZmIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgfmNvbXBhcmF0b3IgdDEgdDIgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5jb21wYXJlIChjZSBjb21wYXJhdG9yKSB0MSB0MlxuICBsZXQgZXF1YWwgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5lcXVhbCB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBpc19zdWJzZXQgfmNvbXBhcmF0b3IgdCB+b2ZfID0gVHJlZTAuaXNfc3Vic2V0IHQgfm9mXyB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG5cbiAgbGV0IGFyZV9kaXNqb2ludCB+Y29tcGFyYXRvciB0MSB0MiA9XG4gICAgVHJlZTAuYXJlX2Rpc2pvaW50IHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfbGlzdCB+Y29tcGFyYXRvciBsID0gVHJlZTAub2ZfbGlzdCBsIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHMgPSBUcmVlMC5vZl9zZXF1ZW5jZSBzIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG9mX2FycmF5IH5jb21wYXJhdG9yIGEgPSBUcmVlMC5vZl9hcnJheSBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhID1cbiAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvcjpfIH5sZW4gfmYgPVxuICAgIFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGEgPSBUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIGwgPSBUcmVlMC51bmlvbl9saXN0IGwgfnRvX3RyZWU6Rm4uaWQgfmNvbXBhcmF0b3JcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgeHMgPVxuICAgIFRyZWUwLnN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgZ3JvdXBfYnkgdCB+ZXF1aXYgPSBUcmVlMC5ncm91cF9ieSB0IH5lcXVpdlxuICBsZXQgc3BsaXQgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuc3BsaXQgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHNwbGl0X2xlX2d0IH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLnNwbGl0X2xlX2d0IHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBzcGxpdF9sdF9nZSB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5zcGxpdF9sdF9nZSB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgbnRoIHQgaSA9IFRyZWUwLm50aCB0IGlcbiAgbGV0IHJlbW92ZV9pbmRleCB+Y29tcGFyYXRvciB0IGkgPSBUcmVlMC5yZW1vdmVfaW5kZXggdCBpIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gVHJlZTAuc2V4cF9vZl90IHNleHBfb2ZfYSB0XG4gIGxldCB0b190cmVlIHQgPSB0XG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yOl8gdCA9IHRcblxuICBsZXQgdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlIGNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB+Y29tcGFyYXRvcjpfIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgfmNvbXBhcmF0b3I6XyB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCcgPVxuICAgIFRyZWUwLm1lcmdlX3RvX3NlcXVlbmNlIGNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgdCdcbiAgOztcblxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgaW5jbHVkZSBUcmVlMC5OYW1lZFxuXG4gICAgbGV0IGlzX3N1YnNldCB+Y29tcGFyYXRvciB0MSB+b2ZfOnQyID1cbiAgICAgIFRyZWUwLk5hbWVkLmlzX3N1YnNldFxuICAgICAgICB0MVxuICAgICAgICB+b2ZfOnQyXG4gICAgICAgIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgICAgICAgfnNleHBfb2ZfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIH5jb21wYXJhdG9yIHQxIHQyID1cbiAgICAgIFRyZWUwLk5hbWVkLmVxdWFsXG4gICAgICAgIHQxXG4gICAgICAgIHQyXG4gICAgICAgIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgICAgICAgfnNleHBfb2ZfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2VsdCwgJ2NtcCkgdCA9ICgnZWx0LCAnY21wKSB0XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgdG9fdHJlZSB0ID0gdC50cmVlXG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yIHRyZWUgPSB7IGNvbXBhcmF0b3I7IHRyZWUgfVxuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuY29tcGFyZSBhX29mX3NleHAgc2V4cClcbiAgOztcblxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3IgPSB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5lbXB0eSB9XG5cbiAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEVsdCA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gICAgbGV0IGVtcHR5ID0geyBjb21wYXJhdG9yID0gRWx0LmNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5lbXB0eSB9XG4gIGVuZFxuXG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3IgZSA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLnNpbmdsZXRvbiBlIH1cblxuICBsZXQgdW5pb25fbGlzdCB+Y29tcGFyYXRvciBsID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlMC51bmlvbl9saXN0IH5jb21wYXJhdG9yIH50b190cmVlIGwpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIGxldCB0cmVlID1cbiAgICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgfVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlMC5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIE9yX2Vycm9yLk1vbmFkX2luZml4LihcbiAgICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgID4+fCBmdW4gdHJlZSAtPiB7IGNvbXBhcmF0b3I7IHRyZWUgfSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdCB+Y29tcGFyYXRvciBsID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5vZl9saXN0IGwgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgcyA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAub2Zfc2VxdWVuY2UgcyB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBvZl9hcnJheSB+Y29tcGFyYXRvciBhID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5vZl9hcnJheSBhIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIHhzID1cbiAgICBUcmVlMC5zdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm1hcCB0LnRyZWUgfmYgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mID1cbiAgICB7IGNvbXBhcmF0b3JcbiAgICA7IHRyZWUgPSBUcmVlMC5maWx0ZXJfbWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB9XG4gIDs7XG5cbiAgbW9kdWxlIFRyZWUgPSBUcmVlXG5lbmRcblxudHlwZSAoJ2VsdCwgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2VsdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBlbHQgY21wKSAoKG1vZHVsZSBNKSA6IChlbHQsIGNtcCkgY29tcGFyYXRvcikgPSBNLmNvbXBhcmF0b3JcbmxldCBlbXB0eSBtID0gVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxubGV0IHNpbmdsZXRvbiBtIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgdW5pb25fbGlzdCBtIGEgPSBVc2luZ19jb21wYXJhdG9yLnVuaW9uX2xpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIG0gfmxlbiB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgfmxlbiB+ZlxuOztcblxubGV0IG9mX3NvcnRlZF9hcnJheSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfbGlzdCBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX3NlcXVlbmNlIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2FycmF5IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYXJyYXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgc3RhYmxlX2RlZHVwX2xpc3QgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5zdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgbWFwIG0gYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmZcbmxldCBmaWx0ZXJfbWFwIG0gYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IuZmlsdGVyX21hcCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5mXG5sZXQgdG9fdHJlZSA9IFVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxubGV0IG9mX3RyZWUgbSB0ID0gVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHRcblxubW9kdWxlIE0gKEVsdCA6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBlbHQpIHQgPVxuICBzZXhwX29mX3QgRWx0LnNleHBfb2ZfdCAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwXG4gICAgICAodHlwZSBlbHQgY21wKVxuICAgICAgKG1vZHVsZSBFbHQgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBlbHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgc2V4cFxuICA9XG4gIFVzaW5nX2NvbXBhcmF0b3IudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvcjpFbHQuY29tcGFyYXRvciBFbHQudF9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hciAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBlbHQpXG4gIDogKGVsdCwgXykgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKGxpc3Rfc2V4cF9ncmFtbWFyIEVsdC50X3NleHBfZ3JhbW1hcilcbjs7XG5cbmxldCBjb21wYXJlX21fX3QgKG1vZHVsZSBfIDogQ29tcGFyZV9tKSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSB0MSB0MiA9IGVxdWFsIHQxIHQyXG5cbmxldCBoYXNoX2ZvbGRfbV9fdCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSBlbHQpIHN0YXRlID1cbiAgaGFzaF9mb2xkX2RpcmVjdCBFbHQuaGFzaF9mb2xkX3Qgc3RhdGVcbjs7XG5cbmxldCBoYXNoX21fX3QgZm9sZGVyIHQgPVxuICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfbV9fdCBmb2xkZXIgKEhhc2guY3JlYXRlICgpKSB0IGluXG4gIEhhc2guZ2V0X2hhc2hfdmFsdWUgc3RhdGVcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICB0eXBlIG5vbnJlYyAoJ2VsdCwgJ2NtcCkgc2V0ID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlIG5vbnJlYyAnZWx0IHQgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICdlbHQgdHJlZSA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIHRyZWVcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJhdG9yID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcblxuICBpbmNsdWRlIFVzaW5nX2NvbXBhcmF0b3IuRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIGxldCBzaW5nbGV0b24gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGFcbiAgbGV0IHVuaW9uX2xpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3IudW5pb25fbGlzdCB+Y29tcGFyYXRvciBhXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9saXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX3NlcXVlbmNlIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FycmF5IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FycmF5IH5jb21wYXJhdG9yIGFcbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLnN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG1hcCBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXAgfmNvbXBhcmF0b3IgYSB+ZlxuICBsZXQgZmlsdGVyX21hcCBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5maWx0ZXJfbWFwIH5jb21wYXJhdG9yIGEgfmZcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IHsgY29tcGFyYXRvcjsgdHJlZSB9XG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX3JlZlxuICBsZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID0gZXF1YWxfcmVmXG5cbiAgbGV0IGdsb2JhbGl6ZSA6ICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgdFtAb2NhbWwubG9jYWxdKSAtPiAnYSB0ID1cbiAgICBmdW4gKHR5cGUgYV9fMDA5XylcbiAgICAgICAgOiAoKChhX18wMDlfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwOV8pIC0+IChhX18wMDlfIHRbQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA5XyB0KSAtPlxuICAgICAgZ2xvYmFsaXplX3JlZlxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSByZWZfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9yZWZcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gcmVmX3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkVxdWFsLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgZ2xvYmFsaXplIDogKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdFxuXG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kKVxuXG4oKiBJbiB0aGUgZGVmaW5pdGlvbiBvZiBbdF0sIHdlIGRvIG5vdCBoYXZlIFtbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXV0gYmVjYXVzZVxuICAgaW4gZ2VuZXJhbCwgc3ludGF4IGV4dGVuc2lvbnMgdGVuZCB0byB1c2UgdGhlIGltcGxlbWVudGF0aW9uIHdoZW4gYXZhaWxhYmxlIHJhdGhlciB0aGFuXG4gICB1c2luZyB0aGUgYWxpYXMuICBIZXJlIHRoYXQgd291bGQgbGVhZCB0byB1c2UgdGhlIHJlY29yZCByZXByZXNlbnRhdGlvbiBbIHsgbXV0YWJsZVxuICAgY29udGVudHMgOiAnYSB9IF0gd2hpY2ggd291bGQgcmVzdWx0IGluIGRpZmZlcmVudCAoYW5kIHVud2FudGVkKSBiZWhhdmlvci4gICopXG50eXBlICdhIHQgPSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5cbmV4dGVybmFsIGNyZWF0ZSA6ICdhIC0+ICgnYSB0W0Bsb2NhbF9vcHRdKSA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogKCdhIHRbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICgnYSB0W0Bsb2NhbF9vcHRdKSAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcblxubGV0IHN3YXAgdDEgdDIgPVxuICBsZXQgdG1wID0gIXQxIGluXG4gIHQxIDo9ICF0MjtcbiAgdDIgOj0gdG1wXG47O1xuXG5sZXQgcmVwbGFjZSB0IGYgPSB0IDo9IGYgIXRcblxubGV0IHNldF90ZW1wb3JhcmlseSB0IGEgfmYgPVxuICBsZXQgcmVzdG9yZV90byA9ICF0IGluXG4gIHQgOj0gYTtcbiAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiB0IDo9IHJlc3RvcmVfdG8pXG47O1xuXG5tb2R1bGUgQW5kX3ZhbHVlID0gc3RydWN0XG4gIHR5cGUgdCA9IFQgOiAnYSByZWYgKiAnYSAtPiB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHNldCAoVCAociwgYSkpID0gciA6PSBhXG4gIGxldCBzZXRzIHRzID0gTGlzdC5pdGVyIHRzIH5mOnNldFxuICBsZXQgc25hcHNob3QgKFQgKHIsIF8pKSA9IFQgKHIsICFyKVxuICBsZXQgc25hcHNob3RzIHRzID0gTGlzdC5tYXAgdHMgfmY6c25hcHNob3RcbmVuZFxuXG5sZXQgc2V0c190ZW1wb3JhcmlseSBhbmRfdmFsdWVzIH5mID1cbiAgbGV0IHJlc3RvcmVfdG8gPSBBbmRfdmFsdWUuc25hcHNob3RzIGFuZF92YWx1ZXMgaW5cbiAgQW5kX3ZhbHVlLnNldHMgYW5kX3ZhbHVlcztcbiAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiBBbmRfdmFsdWUuc2V0cyByZXN0b3JlX3RvKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5cbigqIFt0XSBzdG9yZXMgdGhlIFt0Lmxlbmd0aF0gcXVldWUgZWxlbWVudHMgYXQgY29uc2VjdXRpdmUgaW5jcmVhc2luZyBpbmRpY2VzIG9mIFt0LmVsdHNdLFxuICAgbW9kIHRoZSBjYXBhY2l0eSBvZiBbdF0sIHdoaWNoIGlzIFtPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0c10uICBUaGUgY2FwYWNpdHkgaXNcbiAgIHJlcXVpcmVkIHRvIGJlIGEgcG93ZXIgb2YgdHdvICh1c2VyLXJlcXVlc3RlZCBjYXBhY2l0aWVzIGFyZSByb3VuZGVkIHVwIHRvIHRoZSBuZWFyZXN0XG4gICBwb3dlciksIHNvIHRoYXQgbW9kIGNhbiBxdWlja2x5IGJlIGNvbXB1dGVkIHVzaW5nIFtsYW5kIHQubWFza10sIHdoZXJlIFt0Lm1hc2sgPVxuICAgY2FwYWNpdHkgdCAtIDFdLiAgU28sIHF1ZXVlIGVsZW1lbnQgW2ldIGlzIGF0IFt0LmVsdHMuKCAodC5mcm9udCArIGkpIGxhbmQgdC5tYXNrICldLlxuXG4gICBbbnVtX211dGF0aW9uc10gaXMgdXNlZCB0byBkZXRlY3QgbW9kaWZpY2F0aW9uIGR1cmluZyBpdGVyYXRpb24uICopXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbnVtX211dGF0aW9ucyA6IGludFxuICA7IG11dGFibGUgZnJvbnQgOiBpbnRcbiAgOyBtdXRhYmxlIG1hc2sgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgZWx0cyA6ICdhIE9wdGlvbl9hcnJheS50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMDFfXG4gICAgeyBudW1fbXV0YXRpb25zID0gbnVtX211dGF0aW9uc19fMDAzX1xuICAgIDsgZnJvbnQgPSBmcm9udF9fMDA1X1xuICAgIDsgbWFzayA9IG1hc2tfXzAwN19cbiAgICA7IGxlbmd0aCA9IGxlbmd0aF9fMDA5X1xuICAgIDsgZWx0cyA9IGVsdHNfXzAxMV9cbiAgICB9IC0+XG4gICAgbGV0IGJuZHNfXzAwMl8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDEyXyA9IE9wdGlvbl9hcnJheS5zZXhwX29mX3QgX29mX2FfXzAwMV8gZWx0c19fMDExXyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsdHNcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDAyX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDEwXyA9IHNleHBfb2ZfaW50IGxlbmd0aF9fMDA5XyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxlbmd0aFwiOyBhcmdfXzAxMF8gXSA6OiBibmRzX18wMDJfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDhfID0gc2V4cF9vZl9pbnQgbWFza19fMDA3XyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm1hc2tcIjsgYXJnX18wMDhfIF0gOjogYm5kc19fMDAyX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDA2XyA9IHNleHBfb2ZfaW50IGZyb250X18wMDVfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZnJvbnRcIjsgYXJnX18wMDZfIF0gOjogYm5kc19fMDAyX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDA0XyA9IHNleHBfb2ZfaW50IG51bV9tdXRhdGlvbnNfXzAwM18gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJudW1fbXV0YXRpb25zXCI7IGFyZ19fMDA0XyBdIDo6IGJuZHNfXzAwMl9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDJfXG47O1xuXG5bQEBAZW5kXVxuXG5tb2R1bGUgdHlwZSBTID0gUXVldWVfaW50Zi5TXG5cbmxldCBpbmNfbnVtX211dGF0aW9ucyB0ID0gdC5udW1fbXV0YXRpb25zIDwtIHQubnVtX211dGF0aW9ucyArIDFcbmxldCBjYXBhY2l0eSB0ID0gdC5tYXNrICsgMVxubGV0IGVsdHNfaW5kZXggdCBpID0gKHQuZnJvbnQgKyBpKSBsYW5kIHQubWFza1xubGV0IHVuc2FmZV9nZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gdC5lbHRzIChlbHRzX2luZGV4IHQgaSlcbmxldCB1bnNhZmVfaXNfc2V0IHQgaSA9IE9wdGlvbl9hcnJheS51bnNhZmVfaXNfc29tZSB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxubGV0IHVuc2FmZV9zZXQgdCBpIGEgPSBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpIGFcbmxldCB1bnNhZmVfdW5zZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxuXG5sZXQgY2hlY2tfaW5kZXhfZXhuIHQgaSA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gdC5sZW5ndGhcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiUXVldWUgaW5kZXggb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgICBbIFwiaW5kZXhcIiwgaSB8PiBJbnQuc2V4cF9vZl90OyBcImxlbmd0aFwiLCB0Lmxlbmd0aCB8PiBJbnQuc2V4cF9vZl90IF0pXG47O1xuXG5sZXQgZ2V0IHQgaSA9XG4gIGNoZWNrX2luZGV4X2V4biB0IGk7XG4gIHVuc2FmZV9nZXQgdCBpXG47O1xuXG5sZXQgc2V0IHQgaSBhID1cbiAgY2hlY2tfaW5kZXhfZXhuIHQgaTtcbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgdW5zYWZlX3NldCB0IGkgYVxuOztcblxubGV0IGlzX2VtcHR5IHQgPSB0Lmxlbmd0aCA9IDBcbmxldCBsZW5ndGggeyBsZW5ndGg7IF8gfSA9IGxlbmd0aFxuXG5sZXQgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9ucyA9XG4gIGlmIHQubnVtX211dGF0aW9ucyA8PiBudW1fbXV0YXRpb25zXG4gIHRoZW5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIm11dGF0aW9uIG9mIHF1ZXVlIGR1cmluZyBpdGVyYXRpb25cIlxuICAgICAgICAgWyBcIlwiLCB0IHw+IHNleHBfb2ZfdCAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSBdKVxuOztcblxubGV0IGNvbXBhcmUgPVxuICBsZXQgcmVjIHVuc2FmZV9jb21wYXJlX2Zyb20gY29tcGFyZV9lbHQgcG9zIH50MSB+dDIgfmxlbjEgfmxlbjIgfm11dDEgfm11dDIgPVxuICAgIG1hdGNoIHBvcyA9IGxlbjEsIHBvcyA9IGxlbjIgd2l0aFxuICAgIHwgdHJ1ZSwgdHJ1ZSAtPiAwXG4gICAgfCB0cnVlLCBmYWxzZSAtPiAtMVxuICAgIHwgZmFsc2UsIHRydWUgLT4gMVxuICAgIHwgZmFsc2UsIGZhbHNlIC0+XG4gICAgICBsZXQgeCA9IGNvbXBhcmVfZWx0ICh1bnNhZmVfZ2V0IHQxIHBvcykgKHVuc2FmZV9nZXQgdDIgcG9zKSBpblxuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQxIG11dDE7XG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDIgbXV0MjtcbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICB8IDAgLT4gdW5zYWZlX2NvbXBhcmVfZnJvbSBjb21wYXJlX2VsdCAocG9zICsgMSkgfnQxIH50MiB+bGVuMSB+bGVuMiB+bXV0MSB+bXV0MlxuICAgICAgIHwgbiAtPiBuKVxuICBpblxuICBmdW4gY29tcGFyZV9lbHQgdDEgdDIgLT5cbiAgICBpZiBwaHlzX2VxdWFsIHQxIHQyXG4gICAgdGhlbiAwXG4gICAgZWxzZVxuICAgICAgdW5zYWZlX2NvbXBhcmVfZnJvbVxuICAgICAgICBjb21wYXJlX2VsdFxuICAgICAgICAwXG4gICAgICAgIH50MVxuICAgICAgICB+dDJcbiAgICAgICAgfmxlbjE6dDEubGVuZ3RoXG4gICAgICAgIH5sZW4yOnQyLmxlbmd0aFxuICAgICAgICB+bXV0MTp0MS5udW1fbXV0YXRpb25zXG4gICAgICAgIH5tdXQyOnQyLm51bV9tdXRhdGlvbnNcbjs7XG5cbmxldCBlcXVhbCA9XG4gIGxldCByZWMgdW5zYWZlX2VxdWFsX2Zyb20gZXF1YWxfZWx0IHBvcyB+dDEgfnQyIH5tdXQxIH5tdXQyIH5sZW4gPVxuICAgIHBvcyA9IGxlblxuICAgIHx8XG4gICAgbGV0IGIgPSBlcXVhbF9lbHQgKHVuc2FmZV9nZXQgdDEgcG9zKSAodW5zYWZlX2dldCB0MiBwb3MpIGluXG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQxIG11dDE7XG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQyIG11dDI7XG4gICAgYiAmJiB1bnNhZmVfZXF1YWxfZnJvbSBlcXVhbF9lbHQgKHBvcyArIDEpIH50MSB+dDIgfm11dDEgfm11dDIgfmxlblxuICBpblxuICBmdW4gZXF1YWxfZWx0IHQxIHQyIC0+XG4gICAgcGh5c19lcXVhbCB0MSB0MlxuICAgIHx8XG4gICAgbGV0IGxlbjEgPSB0MS5sZW5ndGggaW5cbiAgICBsZXQgbGVuMiA9IHQyLmxlbmd0aCBpblxuICAgIGxlbjEgPSBsZW4yXG4gICAgJiYgdW5zYWZlX2VxdWFsX2Zyb21cbiAgICAgICAgIGVxdWFsX2VsdFxuICAgICAgICAgMFxuICAgICAgICAgfnQxXG4gICAgICAgICB+dDJcbiAgICAgICAgIH5sZW46bGVuMVxuICAgICAgICAgfm11dDE6dDEubnVtX211dGF0aW9uc1xuICAgICAgICAgfm11dDI6dDIubnVtX211dGF0aW9uc1xuOztcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbGV0IHsgbnVtX211dGF0aW9uczsgbWFzayA9IF87IGVsdHM7IGZyb250OyBsZW5ndGggfSA9IHQgaW5cbiAgYXNzZXJ0IChmcm9udCA+PSAwKTtcbiAgYXNzZXJ0IChmcm9udCA8IGNhcGFjaXR5IHQpO1xuICBsZXQgY2FwYWNpdHkgPSBjYXBhY2l0eSB0IGluXG4gIGFzc2VydCAoY2FwYWNpdHkgPSBPcHRpb25fYXJyYXkubGVuZ3RoIGVsdHMpO1xuICBhc3NlcnQgKGNhcGFjaXR5ID49IDEpO1xuICBhc3NlcnQgKEludC5pc19wb3cyIGNhcGFjaXR5KTtcbiAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gIGFzc2VydCAobGVuZ3RoIDw9IGNhcGFjaXR5KTtcbiAgZm9yIGkgPSAwIHRvIGNhcGFjaXR5IC0gMSBkb1xuICAgIGlmIGkgPCB0Lmxlbmd0aFxuICAgIHRoZW4gKFxuICAgICAgaW52YXJpYW50X2EgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnMpXG4gICAgZWxzZSBhc3NlcnQgKG5vdCAodW5zYWZlX2lzX3NldCB0IGkpKVxuICBkb25lXG47O1xuXG5sZXQgY3JlYXRlICh0eXBlIGEpID9jYXBhY2l0eSAoKSA6IGEgdCA9XG4gIGxldCBjYXBhY2l0eSA9XG4gICAgbWF0Y2ggY2FwYWNpdHkgd2l0aFxuICAgIHwgTm9uZSAtPiAyXG4gICAgfCBTb21lIGNhcGFjaXR5IC0+XG4gICAgICBpZiBjYXBhY2l0eSA8IDBcbiAgICAgIHRoZW5cbiAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICBcImNhbm5vdCBoYXZlIHF1ZXVlIHdpdGggbmVnYXRpdmUgY2FwYWNpdHlcIlxuICAgICAgICAgICAgIFsgXCJjYXBhY2l0eVwiLCBjYXBhY2l0eSB8PiBJbnQuc2V4cF9vZl90IF0pXG4gICAgICBlbHNlIGlmIGNhcGFjaXR5ID0gMFxuICAgICAgdGhlbiAxXG4gICAgICBlbHNlIEludC5jZWlsX3BvdzIgY2FwYWNpdHlcbiAgaW5cbiAgeyBudW1fbXV0YXRpb25zID0gMFxuICA7IGZyb250ID0gMFxuICA7IG1hc2sgPSBjYXBhY2l0eSAtIDFcbiAgOyBsZW5ndGggPSAwXG4gIDsgZWx0cyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpjYXBhY2l0eVxuICB9XG47O1xuXG5sZXQgYmxpdF90b19hcnJheSB+c3JjIGRzdCA9XG4gIGFzc2VydCAoc3JjLmxlbmd0aCA8PSBPcHRpb25fYXJyYXkubGVuZ3RoIGRzdCk7XG4gIGxldCBmcm9udF9sZW4gPSBJbnQubWluIHNyYy5sZW5ndGggKGNhcGFjaXR5IHNyYyAtIHNyYy5mcm9udCkgaW5cbiAgbGV0IHJlc3RfbGVuID0gc3JjLmxlbmd0aCAtIGZyb250X2xlbiBpblxuICBPcHRpb25fYXJyYXkuYmxpdCB+bGVuOmZyb250X2xlbiB+c3JjOnNyYy5lbHRzIH5zcmNfcG9zOnNyYy5mcm9udCB+ZHN0IH5kc3RfcG9zOjA7XG4gIE9wdGlvbl9hcnJheS5ibGl0IH5sZW46cmVzdF9sZW4gfnNyYzpzcmMuZWx0cyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6ZnJvbnRfbGVuXG47O1xuXG5sZXQgc2V0X2NhcGFjaXR5X2ludGVybmFsIHQgbmV3X2NhcGFjaXR5ID1cbiAgbGV0IGRzdCA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpuZXdfY2FwYWNpdHkgaW5cbiAgYmxpdF90b19hcnJheSB+c3JjOnQgZHN0O1xuICB0LmZyb250IDwtIDA7XG4gIHQubWFzayA8LSBuZXdfY2FwYWNpdHkgLSAxO1xuICB0LmVsdHMgPC0gZHN0XG47O1xuXG5sZXQgc2V0X2NhcGFjaXR5IHQgZGVzaXJlZF9jYXBhY2l0eSA9XG4gICgqIFdlIGFsbG93IGFyZ3VtZW50cyBsZXNzIHRoYW4gMSB0byBbc2V0X2NhcGFjaXR5XSwgYnV0IHRyYW5zbGF0ZSB0aGVtIHRvIDEgdG8gc2ltcGxpZnlcbiAgICAgdGhlIGNvZGUgdGhhdCByZWxpZXMgb24gdGhlIGFycmF5IGxlbmd0aCBiZWluZyBhIHBvd2VyIG9mIDIuICopXG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGxldCBuZXdfY2FwYWNpdHkgPSBJbnQuY2VpbF9wb3cyIChtYXggMSAobWF4IGRlc2lyZWRfY2FwYWNpdHkgdC5sZW5ndGgpKSBpblxuICBpZiBuZXdfY2FwYWNpdHkgPD4gY2FwYWNpdHkgdCB0aGVuIHNldF9jYXBhY2l0eV9pbnRlcm5hbCB0IG5ld19jYXBhY2l0eVxuOztcblxubGV0IGVucXVldWUgdCBhID1cbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgaWYgdC5sZW5ndGggPSBjYXBhY2l0eSB0IHRoZW4gc2V0X2NhcGFjaXR5X2ludGVybmFsIHQgKDIgKiB0Lmxlbmd0aCk7XG4gIHVuc2FmZV9zZXQgdCB0Lmxlbmd0aCBhO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBkZXF1ZXVlX25vbmVtcHR5IHQgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBsZXQgZWx0cyA9IHQuZWx0cyBpblxuICBsZXQgZnJvbnQgPSB0LmZyb250IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGVsdHMgZnJvbnQgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIGVsdHMgZnJvbnQ7XG4gIHQuZnJvbnQgPC0gZWx0c19pbmRleCB0IDE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgcmVzXG47O1xuXG5sZXQgZGVxdWV1ZV9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBTdGRsaWIuUXVldWUuRW1wdHkgZWxzZSBkZXF1ZXVlX25vbmVtcHR5IHRcbmxldCBkZXF1ZXVlIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGRlcXVldWVfbm9uZW1wdHkgdClcbmxldCBkZXF1ZXVlX2FuZF9pZ25vcmVfZXhuICh0eXBlIGVsdCkgKHQgOiBlbHQgdCkgPSBpZ25vcmUgKGRlcXVldWVfZXhuIHQgOiBlbHQpXG5sZXQgZnJvbnRfbm9uZW1wdHkgdCA9IE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHQuZWx0cyB0LmZyb250XG5sZXQgbGFzdF9ub25lbXB0eSB0ID0gdW5zYWZlX2dldCB0ICh0Lmxlbmd0aCAtIDEpXG5sZXQgcGVlayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChmcm9udF9ub25lbXB0eSB0KVxubGV0IHBlZWtfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2UgU3RkbGliLlF1ZXVlLkVtcHR5IGVsc2UgZnJvbnRfbm9uZW1wdHkgdFxubGV0IGxhc3QgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAobGFzdF9ub25lbXB0eSB0KVxubGV0IGxhc3RfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2UgU3RkbGliLlF1ZXVlLkVtcHR5IGVsc2UgbGFzdF9ub25lbXB0eSB0XG5cbmxldCBjbGVhciB0ID1cbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgaWYgdC5sZW5ndGggPiAwXG4gIHRoZW4gKFxuICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgIHVuc2FmZV91bnNldCB0IGlcbiAgICBkb25lO1xuICAgIHQubGVuZ3RoIDwtIDA7XG4gICAgdC5mcm9udCA8LSAwKVxuOztcblxubGV0IGJsaXRfdHJhbnNmZXIgfnNyYyB+ZHN0ID9sZW4gKCkgPVxuICBpbmNfbnVtX211dGF0aW9ucyBzcmM7XG4gIGluY19udW1fbXV0YXRpb25zIGRzdDtcbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IE5vbmUgLT4gc3JjLmxlbmd0aFxuICAgIHwgU29tZSBsZW4gLT5cbiAgICAgIGlmIGxlbiA8IDBcbiAgICAgIHRoZW5cbiAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICBcIlF1ZXVlLmJsaXRfdHJhbnNmZXI6IG5lZ2F0aXZlIGxlbmd0aFwiXG4gICAgICAgICAgICAgWyBcImxlbmd0aFwiLCBsZW4gfD4gSW50LnNleHBfb2ZfdCBdKTtcbiAgICAgIG1pbiBsZW4gc3JjLmxlbmd0aFxuICBpblxuICBpZiBsZW4gPiAwXG4gIHRoZW4gKFxuICAgIHNldF9jYXBhY2l0eSBkc3QgKG1heCAoY2FwYWNpdHkgZHN0KSAoZHN0Lmxlbmd0aCArIGxlbikpO1xuICAgIGxldCBkc3Rfc3RhcnQgPSBkc3QuZnJvbnQgKyBkc3QubGVuZ3RoIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICgqIFRoaXMgaXMgc2lnbmlmaWNhbnRseSBmYXN0ZXIgdGhhbiBzaW1wbHkgW2VucXVldWUgZHN0IChkZXF1ZXVlX25vbmVtcHR5IHNyYyldICopXG4gICAgICBsZXQgc3JjX2kgPSAoc3JjLmZyb250ICsgaSkgbGFuZCBzcmMubWFzayBpblxuICAgICAgbGV0IGRzdF9pID0gKGRzdF9zdGFydCArIGkpIGxhbmQgZHN0Lm1hc2sgaW5cbiAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWVcbiAgICAgICAgZHN0LmVsdHNcbiAgICAgICAgZHN0X2lcbiAgICAgICAgKE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHNyYy5lbHRzIHNyY19pKTtcbiAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmUgc3JjLmVsdHMgc3JjX2lcbiAgICBkb25lO1xuICAgIGRzdC5sZW5ndGggPC0gZHN0Lmxlbmd0aCArIGxlbjtcbiAgICBzcmMuZnJvbnQgPC0gKHNyYy5mcm9udCArIGxlbikgbGFuZCBzcmMubWFzaztcbiAgICBzcmMubGVuZ3RoIDwtIHNyYy5sZW5ndGggLSBsZW4pXG47O1xuXG5sZXQgZW5xdWV1ZV9hbGwgdCBsID1cbiAgKCogVHJhdmVyc2luZyB0aGUgbGlzdCB1cCBmcm9udCB0byBjb21wdXRlIGl0cyBsZW5ndGggaXMgcHJvYmFibHkgKGJ1dCBub3QgZGVmaW5pdGVseSlcbiAgICAgYmV0dGVyIHRoYW4gZG91YmxpbmcgdGhlIHVuZGVybHlpbmcgYXJyYXkgc2l6ZSBzZXZlcmFsIHRpbWVzIGZvciBsYXJnZSBxdWV1ZXMuICopXG4gIHNldF9jYXBhY2l0eSB0IChJbnQubWF4IChjYXBhY2l0eSB0KSAodC5sZW5ndGggKyBMaXN0Lmxlbmd0aCBsKSk7XG4gIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeClcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBpZiB0Lmxlbmd0aCA9IDBcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBudW1fbXV0YXRpb25zID0gdC5udW1fbXV0YXRpb25zIGluXG4gICAgbGV0IHIgPSByZWYgaW5pdCBpblxuICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpO1xuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9uc1xuICAgIGRvbmU7XG4gICAgIXIpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIGEgLT5cbiAgICBsZXQgYWNjID0gZiAhaSBhY2MgYSBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIGFjYykgW0Bub250YWlsXVxuOztcblxuXG4oKiBbaXRlcl0gaXMgaW1wbGVtZW50ZWQgZGlyZWN0bHkgYmVjYXVzZSBpbXBsZW1lbnRpbmcgaXQgaW4gdGVybXMgb2YgW2ZvbGRdIGlzXG4gICBzbG93ZXIuICopXG5sZXQgaXRlciB0IH5mID1cbiAgbGV0IG51bV9tdXRhdGlvbnMgPSB0Lm51bV9tdXRhdGlvbnMgaW5cbiAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgIGYgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgbGV0IG51bV9tdXRhdGlvbnMgPSB0Lm51bV9tdXRhdGlvbnMgaW5cbiAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCB0IGkpO1xuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnNcbiAgZG9uZVxuOztcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCByZXN1bHQgPSByZWYgW10gaW5cbiAgZm9yIGkgPSB0Lmxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICByZXN1bHQgOj0gdW5zYWZlX2dldCB0IGkgOjogIXJlc3VsdFxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5tb2R1bGUgQyA9IEluZGV4ZWRfY29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICAgIGxldCBmb2xkaSA9IGBDdXN0b20gZm9sZGlcbiAgICBsZXQgaXRlcmkgPSBgQ3VzdG9tIGl0ZXJpXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IG1lbSA9IEMubWVtXG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgY291bnRpID0gQy5jb3VudGlcbmxldCBleGlzdHNpID0gQy5leGlzdHNpXG5sZXQgZmluZF9tYXBpID0gQy5maW5kX21hcGlcbmxldCBmaW5kaSA9IEMuZmluZGlcbmxldCBmb3JfYWxsaSA9IEMuZm9yX2FsbGlcblxuXG4oKiBGb3IgW2NvbmNhdF9tYXBdLCBbZmlsdGVyX21hcF0sIGFuZCBbZmlsdGVyXSwgd2UgZG9uJ3QgY3JlYXRlIFt0X3Jlc3VsdF0gd2l0aCBbdF0nc1xuICAgY2FwYWNpdHkgYmVjYXVzZSB3ZSBoYXZlIG5vIGlkZWEgaG93IG1hbnkgZWxlbWVudHMgW3RfcmVzdWx0XSB3aWxsIHVsdGltYXRlbHkgaG9sZC4gKilcbmxldCBjb25jYXRfbWFwIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBMaXN0Lml0ZXIgKGYgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgdF9yZXN1bHQgYikpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGNvbmNhdF9tYXBpIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBMaXN0Lml0ZXIgKGYgaSBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT5cbiAgICBtYXRjaCBmIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgdF9yZXN1bHQgYik7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+XG4gICAgbWF0Y2ggZiBpIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgdF9yZXN1bHQgYik7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBlbnF1ZXVlIHRfcmVzdWx0IGEpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IGlmIGYgaSBhIHRoZW4gZW5xdWV1ZSB0X3Jlc3VsdCBhKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHQyID0gZmlsdGVyIHQgfmYgaW5cbiAgY2xlYXIgdDtcbiAgYmxpdF90cmFuc2ZlciB+c3JjOnQyIH5kc3Q6dCAoKVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHQyID0gZmlsdGVyaSB0IH5mIGluXG4gIGNsZWFyIHQ7XG4gIGJsaXRfdHJhbnNmZXIgfnNyYzp0MiB+ZHN0OnQgKClcbjs7XG5cbmxldCBjb3B5IHNyYyA9XG4gIGxldCBkc3QgPSBjcmVhdGUgfmNhcGFjaXR5OnNyYy5sZW5ndGggKCkgaW5cbiAgYmxpdF90b19hcnJheSB+c3JjIGRzdC5lbHRzO1xuICBkc3QubGVuZ3RoIDwtIHNyYy5sZW5ndGg7XG4gIGRzdFxuOztcblxubGV0IG9mX2xpc3QgbCA9XG4gICgqIFRyYXZlcnNpbmcgdGhlIGxpc3QgdXAgZnJvbnQgdG8gY29tcHV0ZSBpdHMgbGVuZ3RoIGlzIHByb2JhYmx5IChidXQgbm90IGRlZmluaXRlbHkpXG4gICAgIGJldHRlciB0aGFuIGRvdWJsaW5nIHRoZSB1bmRlcmx5aW5nIGFycmF5IHNpemUgc2V2ZXJhbCB0aW1lcyBmb3IgbGFyZ2UgcXVldWVzLiAqKVxuICBsZXQgdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6KExpc3QubGVuZ3RoIGwpICgpIGluXG4gIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeCk7XG4gIHRcbjs7XG5cbigqIFRoZSBxdWV1ZSBbdF0gcmV0dXJuZWQgYnkgW2NyZWF0ZV0gd2lsbCBoYXZlIFt0Lmxlbmd0aCA9IDBdLCBbdC5mcm9udCA9IDBdLCBhbmRcbiAgIFtjYXBhY2l0eSB0ID0gSW50LmNlaWxfcG93MiBsZW5dLiAgU28sIHdlIG9ubHkgaGF2ZSB0byBzZXQgW3QubGVuZ3RoXSB0byBbbGVuXSBhZnRlclxuICAgdGhlIGJsaXQgdG8gbWFpbnRhaW4gYWxsIHRoZSBpbnZhcmlhbnRzOiBbdC5sZW5ndGhdIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHNcbiAgIGluIHRoZSBxdWV1ZSwgW3QuZnJvbnRdIGlzIHRoZSBhcnJheSBpbmRleCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgcXVldWUsIGFuZFxuICAgW2NhcGFjaXR5IHQgPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0c10uICopXG5sZXQgaW5pdCBsZW4gfmYgPVxuICBpZiBsZW4gPCAwXG4gIHRoZW5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlIFwiUXVldWUuaW5pdDogbmVnYXRpdmUgbGVuZ3RoXCIgWyBcImxlbmd0aFwiLCBsZW4gfD4gSW50LnNleHBfb2ZfdCBdKTtcbiAgbGV0IHQgPSBjcmVhdGUgfmNhcGFjaXR5OmxlbiAoKSBpblxuICBhc3NlcnQgKE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzID49IGxlbik7XG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0LmVsdHMgaSAoZiBpKVxuICBkb25lO1xuICB0Lmxlbmd0aCA8LSBsZW47XG4gIHRcbjs7XG5cbmxldCBvZl9hcnJheSBhID0gaW5pdCAoQXJyYXkubGVuZ3RoIGEpIH5mOihBcnJheS51bnNhZmVfZ2V0IGEpXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgdC5sZW5ndGggfmY6KGZ1biBpIC0+IHVuc2FmZV9nZXQgdCBpKVxuXG5sZXQgbWFwIHRhIH5mID1cbiAgbGV0IG51bV9tdXRhdGlvbnMgPSB0YS5udW1fbXV0YXRpb25zIGluXG4gIGxldCB0YiA9IGNyZWF0ZSB+Y2FwYWNpdHk6dGEubGVuZ3RoICgpIGluXG4gIHRiLmxlbmd0aCA8LSB0YS5sZW5ndGg7XG4gIGZvciBpID0gMCB0byB0YS5sZW5ndGggLSAxIGRvXG4gICAgbGV0IGIgPSBmICh1bnNhZmVfZ2V0IHRhIGkpIGluXG4gICAgZW5zdXJlX25vX211dGF0aW9uIHRhIG51bV9tdXRhdGlvbnM7XG4gICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0Yi5lbHRzIGkgYlxuICBkb25lO1xuICB0YlxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbWFwIHQgfmY6KGZ1biBhIC0+XG4gICAgbGV0IHJlc3VsdCA9IGYgIWkgYSBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIHJlc3VsdCkgW0Bub250YWlsXVxuOztcblxubGV0IHNpbmdsZXRvbiB4ID1cbiAgbGV0IHQgPSBjcmVhdGUgfmNhcGFjaXR5OjEgKCkgaW5cbiAgZW5xdWV1ZSB0IHg7XG4gIHRcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSB0b19saXN0IHQgfD4gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID0gTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHNleHAgfD4gb2ZfbGlzdFxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gfFxuXG4gIGxldCB1bnJlYWNoYWJsZV9jb2RlID0gZnVuY3Rpb25cbiAgICB8IChfIDogdCkgLT4gLlxuICA7O1xuXG4gIGxldCBhbGwgPSBbXVxuICBsZXQgaGFzaF9mb2xkX3QgXyB0ID0gdW5yZWFjaGFibGVfY29kZSB0XG4gIGxldCBoYXNoID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgY29tcGFyZSBhIF8gPSB1bnJlYWNoYWJsZV9jb2RlIGFcbiAgbGV0IHNleHBfb2ZfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X3R5cGUgXCJCYXNlLk5vdGhpbmcudFwiIHNleHBcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0geyB1bnR5cGVkID0gVW5pb24gW10gfVxuICBsZXQgdG9fc3RyaW5nID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgb2Zfc3RyaW5nIChfIDogc3RyaW5nKSA9IGZhaWx3aXRoIFwiQmFzZS5Ob3RoaW5nLm9mX3N0cmluZzogbm90IHN1cHBvcnRlZFwiXG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5vdGhpbmdcIlxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZGxpYi5OYXRpdmVpbnRcbmluY2x1ZGUgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPVxuICAgIChnbG9iYWxpemVfbmF0aXZlaW50IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX25hdGl2ZWludFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfbmF0aXZlaW50IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChuYXRpdmVpbnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfbmF0aXZlaW50IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IG5hdGl2ZWludF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmVcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gIGxldCBvZl9zdHJpbmdfb3B0ID0gb2Zfc3RyaW5nX29wdFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gICAgdHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9uYXRpdmVpbnQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX25hdGl2ZWludFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX25hdGl2ZWludCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gbmVnXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiVueFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIlbnhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5OYXRpdmVpbnQuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5OYXRpdmVpbnRcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBudW1fYml0cyA9IFdvcmRfc2l6ZS5udW1fYml0cyBXb3JkX3NpemUud29yZF9zaXplXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBsb2dub3RcbmxldCBiaXRfeG9yID0gbG9neG9yXG5sZXQgYml0X29yID0gbG9nb3JcbmxldCBiaXRfYW5kID0gbG9nYW5kXG5sZXQgbWluX3ZhbHVlID0gbWluX2ludFxubGV0IG1heF92YWx1ZSA9IG1heF9pbnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWludXNfb25lID0gbWludXNfb25lXG5sZXQgb25lID0gb25lXG5sZXQgemVybyA9IHplcm9cbmxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gb2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJOYXRpdmVpbnQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuICBvcGVuIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBTdGRsaWIuTmF0aXZlaW50LmxvZ29yXG4gIGxldCAoIGxzciApID0gU3RkbGliLk5hdGl2ZWludC5zaGlmdF9yaWdodF9sb2dpY2FsXG4gIGxldCAoIGxhbmQgKSA9IFN0ZGxpYi5OYXRpdmVpbnQubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyICh4IDogbmF0aXZlaW50KSA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IFN0ZGxpYi5OYXRpdmVpbnQucHJlZCB4IGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICAoKiBUaGUgbmV4dCBsaW5lIGlzIHN1cGVyZmx1b3VzIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyBmYXN0ZXIgdG8gZG8gaXRcbiAgICAgICBhbnl3YXkgdGhhbiB0byBicmFuY2ggKilcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBTdGRsaWIuTmF0aXZlaW50LnN1Y2MgeFxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIFN0ZGxpYi5OYXRpdmVpbnQuc3ViIHggKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgU3RkbGliLk5hdGl2ZWludC5wcmVkIHggPSAwblxuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIG5hdGl2ZWludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAobmF0aXZlaW50W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2NselwiIFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChuYXRpdmVpbnRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIFN0ZGxpYi5OYXRpdmVpbnQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIltOYXRpdmVpbnQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgICBbIFwiXCIsIHNleHBfb2ZfbmF0aXZlaW50IGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgUG9seS4oIDw9ICkgaSBTdGRsaWIuTmF0aXZlaW50Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJbTmF0aXZlaW50LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgICBbIFwiXCIsIHNleHBfb2ZfbmF0aXZlaW50IGkgXSk7XG4gICAgaWYgU3RkbGliLk5hdGl2ZWludC5lcXVhbCBpIFN0ZGxpYi5OYXRpdmVpbnQub25lXG4gICAgdGhlbiAwXG4gICAgZWxzZSBudW1fYml0cyAtIGNseiAoU3RkbGliLk5hdGl2ZWludC5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0IGluY3IgciA9IHIgOj0gIXIgKyBvbmVcbmxldCBkZWNyIHIgPSByIDo9ICFyIC0gb25lXG5sZXQgb2ZfbmF0aXZlaW50IHQgPSB0XG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IG9mX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludCB0ID0gdFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50Lm5hdGl2ZWludF9wb3Bjb3VudFxubGV0IG9mX2ludCA9IENvbnYuaW50X3RvX25hdGl2ZWludFxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCB0b19pbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnRcbmxldCB0b19pbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50X2V4blxubGV0IHRvX2ludF90cnVuYyA9IENvbnYubmF0aXZlaW50X3RvX2ludF90cnVuY1xubGV0IG9mX2ludDMyID0gQ29udi5pbnQzMl90b19uYXRpdmVpbnRcbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJcbmxldCB0b19pbnQzMl9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl9leG5cbmxldCB0b19pbnQzMl90cnVuYyA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX3RydW5jXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX25hdGl2ZWludFxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X2V4blxubGV0IG9mX2ludDY0X3RydW5jID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IENvbnYubmF0aXZlaW50X3RvX2ludDY0XG5sZXQgcG93IGIgZSA9IG9mX2ludF9leG4gKEludF9tYXRoLlByaXZhdGUuaW50X3BvdyAodG9faW50X2V4biBiKSAodG9faW50X2V4biBlKSlcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgbGV0ICggKyApID0gKCArIClcbiAgbGV0ICggLSApID0gKCAtIClcbiAgbGV0ICggKiApID0gKCAqIClcbiAgbGV0ICggLyApID0gKCAvIClcbiAgbGV0ICggfi0gKSA9ICggfi0gKVxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSAoTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBsZXQgKCBsYW5kICkgPSBiaXRfYW5kXG4gIGxldCAoIGxvciApID0gYml0X29yXG4gIGxldCAoIGx4b3IgKSA9IGJpdF94b3JcbiAgbGV0IGxub3QgPSBiaXRfbm90XG4gIGxldCAoIGxzbCApID0gc2hpZnRfbGVmdFxuICBsZXQgKCBhc3IgKSA9IHNoaWZ0X3JpZ2h0XG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbFxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbTmF0aXZlaW50XSBhbmQgW05hdGl2ZWludC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmV4dGVybmFsIGJzd2FwIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWJzd2FwX25hdGl2ZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgMi4wIGxpY2Vuc2UuIFNlZSAuLi9USElSRC1QQVJUWS50eHQgICopXG4oKiAgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBNYXBfaW50ZlxuXG5tb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1hcF9pbnRmLkZpbmlzaGVkX29yX3VuZmluaXNoZWRcblxuICAoKiBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSB0ZXN0ZWQgaW4gW3Rlc3RfbWFwLm1sXSB0byBtYWtlIHN1cmUgb3VyIHVzZSBvZlxuICAgICBbU3RkbGliLk9iai5tYWdpY10gaXMgY29ycmVjdCBhbmQgc2FmZS4gKilcbiAgbGV0IG9mX2NvbnRpbnVlX29yX3N0b3AgOiBDb250aW51ZV9vcl9zdG9wLnQgLT4gdCA9IFN0ZGxpYi5PYmoubWFnaWNcbiAgbGV0IHRvX2NvbnRpbnVlX29yX3N0b3AgOiB0IC0+IENvbnRpbnVlX29yX3N0b3AudCA9IFN0ZGxpYi5PYmoubWFnaWNcbmVuZFxuXG5tb2R1bGUgTWVyZ2VfZWxlbWVudCA9IHN0cnVjdFxuICBpbmNsdWRlIE1hcF9pbnRmLk1lcmdlX2VsZW1lbnRcblxuICBsZXQgbGVmdCA9IGZ1bmN0aW9uXG4gICAgfCBgUmlnaHQgXyAtPiBOb25lXG4gICAgfCBgTGVmdCBsZWZ0IHwgYEJvdGggKGxlZnQsIF8pIC0+IFNvbWUgbGVmdFxuICA7O1xuXG4gIGxldCByaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICB8IGBSaWdodCByaWdodCB8IGBCb3RoIChfLCByaWdodCkgLT4gU29tZSByaWdodFxuICA7O1xuXG4gIGxldCBsZWZ0X3ZhbHVlIHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYFJpZ2h0IF8gLT4gZGVmYXVsdFxuICAgIHwgYExlZnQgbGVmdCB8IGBCb3RoIChsZWZ0LCBfKSAtPiBsZWZ0XG4gIDs7XG5cbiAgbGV0IHJpZ2h0X3ZhbHVlIHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYExlZnQgXyAtPiBkZWZhdWx0XG4gICAgfCBgUmlnaHQgcmlnaHQgfCBgQm90aCAoXywgcmlnaHQpIC0+IHJpZ2h0XG4gIDs7XG5cbiAgbGV0IHZhbHVlcyB0IH5sZWZ0X2RlZmF1bHQgfnJpZ2h0X2RlZmF1bHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgYExlZnQgbGVmdCAtPiBsZWZ0LCByaWdodF9kZWZhdWx0XG4gICAgfCBgUmlnaHQgcmlnaHQgLT4gbGVmdF9kZWZhdWx0LCByaWdodFxuICAgIHwgYEJvdGggKGxlZnQsIHJpZ2h0KSAtPiBsZWZ0LCByaWdodFxuICA7O1xuZW5kXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbmV4Y2VwdGlvbiBEdXBsaWNhdGUgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBEdXBsaWNhdGVdIChmdW5jdGlvblxuICAgIHwgRHVwbGljYXRlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIm1hcC5tbC5EdXBsaWNhdGVcIlxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG4oKiBbV2l0aF9sZW5ndGgudF0gYWxsb3dzIHVzIHRvIHN0b3JlIGxlbmd0aCBpbmZvcm1hdGlvbiBvbiB0aGUgc3RhY2sgd2hpbGVcbiAgIGtlZXBpbmcgdGhlIHRyZWUgZ2xvYmFsLiBUaGlzIHNhdmVzIHVwIHRvIE8obG9nIG4pIGJsb2NrcyBvZiBoZWFwIGFsbG9jYXRpb24uICopXG5tb2R1bGUgV2l0aF9sZW5ndGggOiBzaWdcbiAgdHlwZSAnYSB0ID0gcHJpdmF0ZVxuICAgIHsgdHJlZSA6ICdhXG4gICAgICAgICAgICAgW0BnbG9iYWxdXG4gICAgOyBsZW5ndGggOiBpbnQgW0BnbG9iYWxdXG4gICAgfVxuXG4gIHZhbCB3aXRoX2xlbmd0aCA6ICdhIC0+IGludCAtPiAoJ2EgdFtAbG9jYWxdKVxuICB2YWwgd2l0aF9sZW5ndGhfZ2xvYmFsIDogJ2EgLT4gaW50IC0+ICdhIHRcbiAgdmFsIGdsb2JhbGl6ZSA6ICgnYSB0W0Bsb2NhbF0pIC0+ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgdHJlZSA6ICdhIFtAZ2xvYmFsXVxuICAgIDsgbGVuZ3RoIDogaW50IFtAZ2xvYmFsXVxuICAgIH1cblxuICBsZXQgd2l0aF9sZW5ndGggdHJlZSBsZW5ndGggPSAgeyB0cmVlOyBsZW5ndGggfVxuICBsZXQgd2l0aF9sZW5ndGhfZ2xvYmFsIHRyZWUgbGVuZ3RoID0geyB0cmVlOyBsZW5ndGggfVxuICBsZXQgZ2xvYmFsaXplICh7IHRyZWU7IGxlbmd0aCB9IFtAbG9jYWxdKSA9IHsgdHJlZTsgbGVuZ3RoIH1cbmVuZFxuXG5vcGVuIFdpdGhfbGVuZ3RoXG5cbm1vZHVsZSBUcmVlMCA9IHN0cnVjdFxuICB0eXBlICgnaywgJ3YpIHQgPVxuICAgIHwgRW1wdHlcbiAgICB8IExlYWYgb2YgJ2sgKiAndlxuICAgIHwgTm9kZSBvZiAoJ2ssICd2KSB0ICogJ2sgKiAndiAqICgnaywgJ3YpIHQgKiBpbnRcblxuICB0eXBlICgnaywgJ3YpIHRyZWUgPSAoJ2ssICd2KSB0XG5cbiAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAoXywgXywgXywgXywgaCkgLT4gaFxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRzID1cbiAgICBsZXQgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkgayA9XG4gICAgICAobWF0Y2ggbG93ZXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgfCBTb21lIGxvd2VyIC0+IGNvbXBhcmVfa2V5IGxvd2VyIGsgPCAwKVxuICAgICAgJiZcbiAgICAgIG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICB8IFNvbWUgdXBwZXIgLT4gY29tcGFyZV9rZXkgayB1cHBlciA8IDBcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBsb3dlciB1cHBlciBjb21wYXJlX2tleSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgICB8IExlYWYgKGssIF8pIC0+IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IGtcbiAgICAgIHwgTm9kZSAobCwgaywgXywgciwgaCkgLT5cbiAgICAgICAgbGV0IGhsID0gaGVpZ2h0IGxcbiAgICAgICAgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgICAgYWJzIChobCAtIGhyKSA8PSAyXG4gICAgICAgICYmIGggPSBtYXggaGwgaHIgKyAxXG4gICAgICAgICYmIGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IGtcbiAgICAgICAgJiYgbG9vcCBsb3dlciAoU29tZSBrKSBjb21wYXJlX2tleSBsXG4gICAgICAgICYmIGxvb3AgKFNvbWUgaykgdXBwZXIgY29tcGFyZV9rZXkgclxuICAgIGluXG4gICAgZnVuIHQgfmNvbXBhcmVfa2V5IC0+IGxvb3AgTm9uZSBOb25lIGNvbXBhcmVfa2V5IHRcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobCkgLSBoZWlnaHQocil8IDw9IDIgKilcbiAgbGV0IGNyZWF0ZSBsIHggZCByID1cbiAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgaWYgaGwgPSAwICYmIGhyID0gMFxuICAgIHRoZW4gTGVhZiAoeCwgZClcbiAgICBlbHNlIE5vZGUgKGwsIHgsIGQsIHIsIGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKVxuICA7O1xuXG4gIGxldCBzaW5nbGV0b24ga2V5IGRhdGEgPSBMZWFmIChrZXksIGRhdGEpXG5cbiAgKCogV2UgbXVzdCBjYWxsIFtmXSB3aXRoIGluY3JlYXNpbmcgaW5kZXhlcywgYmVjYXVzZSB0aGUgYmluX3Byb3QgcmVhZGVyIGluXG4gICAgIENvcmUuTWFwIG5lZWRzIGl0LiAqKVxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIG4gfmYgaSA6IChfLCBfKSB0ID1cbiAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgfCAwIC0+IEVtcHR5XG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IGssIHYgPSBmIGkgaW5cbiAgICAgICAgTGVhZiAoaywgdilcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQga2wsIHZsID0gZiBpIGluXG4gICAgICAgIGxldCBrLCB2ID0gZiAoaSArIDEpIGluXG4gICAgICAgIE5vZGUgKExlYWYgKGtsLCB2bCksIGssIHYsIEVtcHR5LCAyKVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBrbCwgdmwgPSBmIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgMSkgaW5cbiAgICAgICAgbGV0IGtyLCB2ciA9IGYgKGkgKyAyKSBpblxuICAgICAgICBOb2RlIChMZWFmIChrbCwgdmwpLCBrLCB2LCBMZWFmIChrciwgdnIpLCAyKVxuICAgICAgfCBuIC0+XG4gICAgICAgIGxldCBsZWZ0X2xlbmd0aCA9IG4gbHNyIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X2xlbmd0aCA9IG4gLSBsZWZ0X2xlbmd0aCAtIDEgaW5cbiAgICAgICAgbGV0IGxlZnQgPSBsb29wIGxlZnRfbGVuZ3RoIH5mIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgbGVmdF9sZW5ndGgpIGluXG4gICAgICAgIGxldCByaWdodCA9IGxvb3AgcmlnaHRfbGVuZ3RoIH5mIChpICsgbGVmdF9sZW5ndGggKyAxKSBpblxuICAgICAgICBjcmVhdGUgbGVmdCBrIHYgcmlnaHRcbiAgICBpblxuICAgIGxvb3AgbGVuIH5mIDBcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBhcnJheV9sZW5ndGggPSBBcnJheS5sZW5ndGggYXJyYXkgaW5cbiAgICBsZXQgbmV4dCA9XG4gICAgICBpZiBhcnJheV9sZW5ndGggPCAyXG4gICAgICAgICB8fFxuICAgICAgICAgbGV0IGswLCBfID0gYXJyYXkuKDApIGluXG4gICAgICAgICBsZXQgazEsIF8gPSBhcnJheS4oMSkgaW5cbiAgICAgICAgIGNvbXBhcmVfa2V5IGswIGsxIDwgMFxuICAgICAgdGhlbiBmdW4gaSAtPiBhcnJheS4oaSlcbiAgICAgIGVsc2UgZnVuIGkgLT4gYXJyYXkuKGFycmF5X2xlbmd0aCAtIDEgLSBpKVxuICAgIGluXG4gICAgXG4gICAgICAod2l0aF9sZW5ndGhcbiAgICAgICAgIChvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuOmFycmF5X2xlbmd0aCB+ZjpuZXh0KVxuICAgICAgICAgYXJyYXlfbGVuZ3RoKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCBhcnJheSB3aXRoXG4gICAgfCBbfHxdIHwgW3wgXyB8XSAtPlxuICAgICAgUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSB8PiBnbG9iYWxpemUpXG4gICAgfCBfIC0+XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IGluY3JlYXNpbmcgPVxuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfa2V5IChmc3QgYXJyYXkuKDApKSAoZnN0IGFycmF5LigxKSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+IGkgPCAwXG4gICAgICAgIGluXG4gICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAyIGRvXG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9rZXkgKGZzdCBhcnJheS4oaSkpIChmc3QgYXJyYXkuKGkgKyAxKSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+XG4gICAgICAgICAgICBpZiBQb2x5LiggPD4gKSAoaSA8IDApIGluY3JlYXNpbmdcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZWxlbWVudHMgYXJlIG5vdCBvcmRlcmVkXCIpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXkgfD4gZ2xvYmFsaXplKSlcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobCkgLSBoZWlnaHQocil8IDw9IDMgKilcbiAgbGV0IGJhbCBsIHggZCByID1cbiAgICBsZXQgaGwgPSBoZWlnaHQgbCBpblxuICAgIGxldCBociA9IGhlaWdodCByIGluXG4gICAgaWYgaGwgPiBociArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGhlaWdodChMZWFmKSA9IDEgJiYgMSBpcyBub3QgbGFyZ2VyIHRoYW4gaHIgKyAyICopXG4gICAgICB8IE5vZGUgKGxsLCBsdiwgbGQsIGxyLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyXG4gICAgICAgIHRoZW4gY3JlYXRlIGxsIGx2IGxkIChjcmVhdGUgbHIgeCBkIHIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgfCBMZWFmIChscnYsIGxyZCkgLT4gY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgRW1wdHkpIGxydiBscmQgKGNyZWF0ZSBFbXB0eSB4IGQgcilcbiAgICAgICAgICB8IE5vZGUgKGxybCwgbHJ2LCBscmQsIGxyciwgXykgLT5cbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxkIGxybCkgbHJ2IGxyZCAoY3JlYXRlIGxyciB4IGQgcikpKVxuICAgIGVsc2UgaWYgaHIgPiBobCArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGhlaWdodChMZWFmKSA9IDEgJiYgMSBpcyBub3QgbGFyZ2VyIHRoYW4gaGwgKyAyICopXG4gICAgICB8IE5vZGUgKHJsLCBydiwgcmQsIHJyLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsXG4gICAgICAgIHRoZW4gY3JlYXRlIChjcmVhdGUgbCB4IGQgcmwpIHJ2IHJkIHJyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgfCBMZWFmIChybHYsIHJsZCkgLT4gY3JlYXRlIChjcmVhdGUgbCB4IGQgRW1wdHkpIHJsdiBybGQgKGNyZWF0ZSBFbXB0eSBydiByZCBycilcbiAgICAgICAgICB8IE5vZGUgKHJsbCwgcmx2LCBybGQsIHJsciwgXykgLT5cbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsbCkgcmx2IHJsZCAoY3JlYXRlIHJsciBydiByZCBycikpKVxuICAgIGVsc2UgY3JlYXRlIGwgeCBkIHJcbiAgOztcblxuICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQgfmtleSB+c2V4cF9vZl9rZXkgPVxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2UgXCJbTWFwLmFkZF9leG5dIGdvdCBrZXkgYWxyZWFkeSBwcmVzZW50XCIgWyBcImtleVwiLCBrZXkgfD4gc2V4cF9vZl9rZXkgXSlcbiAgOztcblxuICBtb2R1bGUgQWRkX29yX3NldCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEFkZF9leG5faW50ZXJuYWxcbiAgICAgIHwgQWRkX2V4blxuICAgICAgfCBTZXRcbiAgZW5kXG5cbiAgbGV0IHJlYyBmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICAgICAgICB0XG4gICAgICAgICAgICB+bGVuZ3RoXG4gICAgICAgICAgICB+a2V5OnhcbiAgICAgICAgICAgIH5kYXRhXG4gICAgICAgICAgICB+Y29tcGFyZV9rZXlcbiAgICAgICAgICAgIH5zZXhwX29mX2tleVxuICAgICAgICAgICAgfihhZGRfb3Jfc2V0IDogQWRkX29yX3NldC50KVxuICAgID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICAod2l0aF9sZW5ndGggKExlYWYgKHgsIGRhdGEpKSAobGVuZ3RoICsgMSkpXG4gICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggYWRkX29yX3NldCB3aXRoXG4gICAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbCAtPiAgKEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBEdXBsaWNhdGUpXG4gICAgICAgIHwgQWRkX2V4biAtPiAgKHJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQgfmtleTp4IH5zZXhwX29mX2tleSlcbiAgICAgICAgfCBTZXQgLT4gICh3aXRoX2xlbmd0aCAoTGVhZiAoeCwgZGF0YSkpIGxlbmd0aCkpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuICAod2l0aF9sZW5ndGggKE5vZGUgKExlYWYgKHgsIGRhdGEpLCB2LCBkLCBFbXB0eSwgMikpIChsZW5ndGggKyAxKSlcbiAgICAgIGVsc2UgICh3aXRoX2xlbmd0aCAoTm9kZSAoRW1wdHksIHYsIGQsIExlYWYgKHgsIGRhdGEpLCAyKSkgKGxlbmd0aCArIDEpKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGFkZF9vcl9zZXQgd2l0aFxuICAgICAgICB8IEFkZF9leG5faW50ZXJuYWwgLT4gIChFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgRHVwbGljYXRlKVxuICAgICAgICB8IEFkZF9leG4gLT4gIChyYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50IH5rZXk6eCB+c2V4cF9vZl9rZXkpXG4gICAgICAgIHwgU2V0IC0+ICAod2l0aF9sZW5ndGggKE5vZGUgKGwsIHgsIGRhdGEsIHIsIGgpKSBsZW5ndGgpKVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB7IHRyZWUgPSBsOyBsZW5ndGggfSA9XG4gICAgICAgICAgZmluZF9hbmRfYWRkX29yX3NldCB+bGVuZ3RoIH5rZXk6eCB+ZGF0YSBsIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgfmFkZF9vcl9zZXRcbiAgICAgICAgaW5cbiAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHsgdHJlZSA9IHI7IGxlbmd0aCB9ID1cbiAgICAgICAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0IH5sZW5ndGggfmtleTp4IH5kYXRhIHIgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB+YWRkX29yX3NldFxuICAgICAgICBpblxuICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgOztcblxuICAoKiBzcGVjaWFsaXphdGlvbiBvZiBbc2V0J10gZm9yIHRoZSBjYXNlIHdoZW4gW2tleV0gaXMgbGVzcyB0aGFuIGFsbCB0aGUgZXhpc3Rpbmcga2V5cyAqKVxuICBsZXQgcmVjIHNldF9taW4ga2V5IGRhdGEgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBMZWFmIChrZXksIGRhdGEpXG4gICAgfCBMZWFmICh2LCBkKSAtPiBOb2RlIChMZWFmIChrZXksIGRhdGEpLCB2LCBkLCBFbXB0eSwgMilcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgbCA9IHNldF9taW4ga2V5IGRhdGEgbCBpblxuICAgICAgYmFsIGwgdiBkIHJcbiAgOztcblxuICAoKiBzcGVjaWFsaXphdGlvbiBvZiBbc2V0J10gZm9yIHRoZSBjYXNlIHdoZW4gW2tleV0gaXMgZ3JlYXRlciB0aGFuIGFsbCB0aGVcbiAgICAgZXhpc3Rpbmcga2V5cyAgKilcbiAgbGV0IHJlYyBzZXRfbWF4IHQga2V5IGRhdGEgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTGVhZiAoa2V5LCBkYXRhKVxuICAgIHwgTGVhZiAodiwgZCkgLT4gTm9kZSAoRW1wdHksIHYsIGQsIExlYWYgKGtleSwgZGF0YSksIDIpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgbGV0IHIgPSBzZXRfbWF4IHIga2V5IGRhdGEgaW5cbiAgICAgIGJhbCBsIHYgZCByXG4gIDs7XG5cbiAgbGV0IGFkZF9leG4gdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgXG4gICAgICAoZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgICAgdFxuICAgICAgICAgfmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleVxuICAgICAgICAgfnNleHBfb2Zfa2V5XG4gICAgICAgICB+YWRkX29yX3NldDpBZGRfZXhuKVxuICA7O1xuXG4gIGxldCBhZGRfZXhuX2ludGVybmFsIHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgPVxuICAgIFxuICAgICAgKGZpbmRfYW5kX2FkZF9vcl9zZXRcbiAgICAgICAgIHRcbiAgICAgICAgIH5sZW5ndGhcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+Y29tcGFyZV9rZXlcbiAgICAgICAgIH5zZXhwX29mX2tleVxuICAgICAgICAgfmFkZF9vcl9zZXQ6QWRkX2V4bl9pbnRlcm5hbClcbiAgOztcblxuICBsZXQgc2V0IHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSA9XG4gICAgXG4gICAgICAoZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgICAgdFxuICAgICAgICAgfmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleVxuICAgICAgICAgfnNleHBfb2Zfa2V5OihmdW4gXyAtPiBMaXN0IFtdKVxuICAgICAgICAgfmFkZF9vcl9zZXQ6U2V0KVxuICA7O1xuXG4gIGxldCBzZXQnIHQga2V5IGRhdGEgfmNvbXBhcmVfa2V5ID0gKHNldCB0IH5sZW5ndGg6MCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSkudHJlZVxuXG4gIG1vZHVsZSBCdWlsZF9pbmNyZWFzaW5nID0gc3RydWN0XG4gICAgbW9kdWxlIEZyYWdtZW50ID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2ssICd2KSB0ID1cbiAgICAgICAgeyBsZWZ0X3N1YnRyZWUgOiAoJ2ssICd2KSB0XG4gICAgICAgIDsga2V5IDogJ2tcbiAgICAgICAgOyBkYXRhIDogJ3ZcbiAgICAgICAgfVxuXG4gICAgICBsZXQgc2luZ2xldG9uX3RvX3RyZWVfZXhuID0gZnVuY3Rpb25cbiAgICAgICAgfCB7IGxlZnRfc3VidHJlZSA9IEVtcHR5OyBrZXk7IGRhdGEgfSAtPiBzaW5nbGV0b24ga2V5IGRhdGFcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwiTWFwLnNpbmdsZXRvbl90b190cmVlX2V4bjogbm90IGEgc2luZ2xldG9uXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzaW5nbGV0b24gfmtleSB+ZGF0YSA9IHsgbGVmdF9zdWJ0cmVlID0gRW1wdHk7IGtleTsgZGF0YSB9XG5cbiAgICAgICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsLmxlZnRfc3VidHJlZSkgLSBoZWlnaHQocil8IDw9IDIsXG4gICAgICAgICBtYXhfa2V5KGwpIDwgbWluX2tleShyKVxuICAgICAgKilcbiAgICAgIGxldCBjb2xsYXBzZSBsIHIgPSBjcmVhdGUgbC5sZWZ0X3N1YnRyZWUgbC5rZXkgbC5kYXRhIHJcblxuICAgICAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwubGVmdF9zdWJ0cmVlKSAtIGhlaWdodChyLmxlZnRfc3VidHJlZSl8IDw9IDIsXG4gICAgICAgICBtYXhfa2V5KGwpIDwgbWluX2tleShyKVxuICAgICAgKilcbiAgICAgIGxldCBqb2luIGwgciA9IHsgciB3aXRoIGxlZnRfc3VidHJlZSA9IGNvbGxhcHNlIGwgci5sZWZ0X3N1YnRyZWUgfVxuICAgICAgbGV0IG1heF9rZXkgdCA9IHQua2V5XG4gICAgZW5kXG5cbiAgICAoKiogQnVpbGQgdHJlZXMgZnJvbSBzaW5nbGV0b25zIGluIGEgYmFsYW5jZWQgd2F5IGJ5IHVzaW5nIHNrZXcgYmluYXJ5IGVuY29kaW5nLlxuICAgICAgICBFYWNoIGxldmVsIGNvbnRhaW5zIHRyZWVzIG9mIHRoZSBzYW1lIGhlaWdodCwgY29uc2VjdXRpdmUgbGV2ZWxzIGhhdmUgY29uc2VjdXRpdmVcbiAgICAgICAgaGVpZ2h0cy4gVGhlcmUgYXJlIG5vIGdhcHMuIFRoZSBmaXJzdCBsZXZlbCBhcmUgc2luZ2xlIGtleXMuXG4gICAgKilcbiAgICB0eXBlICgnaywgJ3YpIHQgPVxuICAgICAgfCBaZXJvIG9mIHVuaXRcbiAgICAgICgqIFt1bml0XSB0byBtYWtlIHBhdHRlcm4gbWF0Y2hpbmcgZmFzdGVyICopXG4gICAgICB8IE9uZSBvZiAoJ2ssICd2KSB0ICogKCdrLCAndikgRnJhZ21lbnQudFxuICAgICAgfCBUd28gb2YgKCdrLCAndikgdCAqICgnaywgJ3YpIEZyYWdtZW50LnQgKiAoJ2ssICd2KSBGcmFnbWVudC50XG5cbiAgICBsZXQgZW1wdHkgPSBaZXJvICgpXG5cbiAgICBsZXQgYWRkX3VuY2hlY2tlZCA9XG4gICAgICBsZXQgcmVjIGdvIHQgeCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFplcm8gKCkgLT4gT25lICh0LCB4KVxuICAgICAgICB8IE9uZSAodCwgeSkgLT4gVHdvICh0LCB5LCB4KVxuICAgICAgICB8IFR3byAodCwgeiwgeSkgLT4gT25lIChnbyB0IChGcmFnbWVudC5qb2luIHogeSksIHgpXG4gICAgICBpblxuICAgICAgZnVuIHQgfmtleSB+ZGF0YSAtPiBnbyB0IChGcmFnbWVudC5zaW5nbGV0b24gfmtleSB+ZGF0YSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RyZWVfdW5jaGVja2VkID1cbiAgICAgIGxldCByZWMgZ28gdCByID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgWmVybyAoKSAtPiByXG4gICAgICAgIHwgT25lICh0LCBsKSAtPiBnbyB0IChGcmFnbWVudC5jb2xsYXBzZSBsIHIpXG4gICAgICAgIHwgVHdvICh0LCBsbCwgbCkgLT4gZ28gdCAoRnJhZ21lbnQuY29sbGFwc2UgKEZyYWdtZW50LmpvaW4gbGwgbCkgcilcbiAgICAgIGluXG4gICAgICBmdW5jdGlvblxuICAgICAgfCBaZXJvICgpIC0+IEVtcHR5XG4gICAgICB8IE9uZSAodCwgcikgLT4gZ28gdCAoRnJhZ21lbnQuc2luZ2xldG9uX3RvX3RyZWVfZXhuIHIpXG4gICAgICB8IFR3byAodCwgbCwgcikgLT4gZ28gKE9uZSAodCwgbCkpIChGcmFnbWVudC5zaW5nbGV0b25fdG9fdHJlZV9leG4gcilcbiAgICA7O1xuXG4gICAgbGV0IG1heF9rZXkgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvICgpIC0+IE5vbmVcbiAgICAgIHwgT25lIChfLCByKSB8IFR3byAoXywgXywgcikgLT4gU29tZSAoRnJhZ21lbnQubWF4X2tleSByKVxuICAgIDs7XG4gIGVuZFxuXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleSA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICBsZXQgeyB0cmVlID0gYnVpbGRlcjsgbGVuZ3RoIH0gPVxuICAgICAgICBTZXF1ZW5jZS5mb2xkXG4gICAgICAgICAgc2VxXG4gICAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBCdWlsZF9pbmNyZWFzaW5nLmVtcHR5IDApXG4gICAgICAgICAgfmY6KGZ1biB7IHRyZWUgPSBidWlsZGVyOyBsZW5ndGggfSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICAgbWF0Y2ggQnVpbGRfaW5jcmVhc2luZy5tYXhfa2V5IGJ1aWxkZXIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHByZXZfa2V5IHdoZW4gY29tcGFyZV9rZXkgcHJldl9rZXkga2V5ID49IDAgLT5cbiAgICAgICAgICAgICAgcmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlOiBub24taW5jcmVhc2luZyBrZXlcIilcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICB3aXRoX2xlbmd0aF9nbG9iYWxcbiAgICAgICAgICAgICAgICAoQnVpbGRfaW5jcmVhc2luZy5hZGRfdW5jaGVja2VkIGJ1aWxkZXIgfmtleSB+ZGF0YSlcbiAgICAgICAgICAgICAgICAobGVuZ3RoICsgMSkpXG4gICAgICBpblxuICAgICAgT2sgKHdpdGhfbGVuZ3RoX2dsb2JhbCAoQnVpbGRfaW5jcmVhc2luZy50b190cmVlX3VuY2hlY2tlZCBidWlsZGVyKSBsZW5ndGgpKVxuICA7O1xuXG4gICgqIExpa2UgW2JhbF0gYnV0IGFsbG93cyBhbnkgZGlmZmVyZW5jZSBpbiBoZWlnaHQgYmV0d2VlbiBbbF0gYW5kIFtyXS5cblxuICAgICBPKHxoZWlnaHQgbCAtIGhlaWdodCByfCkgKilcbiAgbGV0IHJlYyBqb2luIGwgayBkIHIgPVxuICAgIG1hdGNoIGwsIHIgd2l0aFxuICAgIHwgRW1wdHksIF8gLT4gc2V0X21pbiBrIGQgclxuICAgIHwgXywgRW1wdHkgLT4gc2V0X21heCBsIGsgZFxuICAgIHwgTGVhZiAobGssIGxkKSwgXyAtPiBzZXRfbWluIGxrIGxkIChzZXRfbWluIGsgZCByKVxuICAgIHwgXywgTGVhZiAocmssIHJkKSAtPiBzZXRfbWF4IChzZXRfbWF4IGwgayBkKSByayByZFxuICAgIHwgTm9kZSAobGwsIGxrLCBsZCwgbHIsIGxoKSwgTm9kZSAocmwsIHJrLCByZCwgcnIsIHJoKSAtPlxuICAgICAgKCogW2JhbF0gcmVxdWlyZXMgaGVpZ2h0IGRpZmZlcmVuY2UgPD0gMy4gKilcbiAgICAgIGlmIGxoID4gcmggKyAzXG4gICAgICAoKiBbaGVpZ2h0IGxyID49IGhlaWdodCByXSxcbiAgICAgICAgIHRoZXJlZm9yZSBbaGVpZ2h0IChqb2luIGxyIGsgZCByIC4uLildIGlzIFtoZWlnaHQgcmwgKyAxXSBvciBbaGVpZ2h0IHJsXVxuICAgICAgICAgdGhlcmVmb3JlIHRoZSBoZWlnaHQgZGlmZmVyZW5jZSB3aXRoIFtsbF0gd2lsbCBiZSA8PSAzICopXG4gICAgICB0aGVuIGJhbCBsbCBsayBsZCAoam9pbiBsciBrIGQgcilcbiAgICAgIGVsc2UgaWYgcmggPiBsaCArIDNcbiAgICAgIHRoZW4gYmFsIChqb2luIGwgayBkIHJsKSByayByZCByclxuICAgICAgZWxzZSBiYWwgbCBrIGQgclxuICA7O1xuXG4gIGxldFtAaW5saW5lXSByZWMgc3BsaXRfZ2VuIHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHksIE5vbmUsIEVtcHR5XG4gICAgfCBMZWFmIChrLCBkKSAtPlxuICAgICAgbGV0IGNtcCA9IGNvbXBhcmVfa2V5IGsgaW5cbiAgICAgIGlmIGNtcCA9IDBcbiAgICAgIHRoZW4gRW1wdHksIFNvbWUgKGssIGQpLCBFbXB0eVxuICAgICAgZWxzZSBpZiBjbXAgPCAwXG4gICAgICB0aGVuIEVtcHR5LCBOb25lLCB0XG4gICAgICBlbHNlIHQsIE5vbmUsIEVtcHR5XG4gICAgfCBOb2RlIChsLCBrLCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGNtcCA9IGNvbXBhcmVfa2V5IGsgaW5cbiAgICAgIGlmIGNtcCA9IDBcbiAgICAgIHRoZW4gbCwgU29tZSAoaywgZCksIHJcbiAgICAgIGVsc2UgaWYgY21wIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBsbCwgbWF5YmUsIGxyID0gc3BsaXRfZ2VuIGwgeCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgbGwsIG1heWJlLCBqb2luIGxyIGsgZCByKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBybCwgbWF5YmUsIHJyID0gc3BsaXRfZ2VuIHIgeCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgam9pbiBsIGsgZCBybCwgbWF5YmUsIHJyKVxuICA7O1xuXG4gIGxldCBzcGxpdCB0IHggfmNvbXBhcmVfa2V5ID0gc3BsaXRfZ2VuIHQgeCB+Y29tcGFyZV9rZXk6KGZ1biB5IC0+IGNvbXBhcmVfa2V5IHggeSlcblxuICAoKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJlYWxseSByZWluc2VydCBbeF0sIGJ1dCBqdXN0IGFycmFuZ2VzIHNvIHRoYXQgW3NwbGl0XVxuICAgICBwcm9kdWNlcyB0aGUgZXF1aXZhbGVudCB0cmVlIGluIHRoZSBmaXJzdCBwbGFjZS4gKilcbiAgbGV0IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB0IH5pbnRvIHggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgbGVmdCwgYm91bmRhcnlfb3B0LCByaWdodCA9XG4gICAgICBzcGxpdF9nZW5cbiAgICAgICAgdFxuICAgICAgICB4XG4gICAgICAgIH5jb21wYXJlX2tleTpcbiAgICAgICAgICAobWF0Y2ggaW50byB3aXRoXG4gICAgICAgICAgIHwgYExlZnQgLT5cbiAgICAgICAgICAgICBmdW4geSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfa2V5IHggeSB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IDFcbiAgICAgICAgICAgICAgICB8IHJlcyAtPiByZXMpXG4gICAgICAgICAgIHwgYFJpZ2h0IC0+XG4gICAgICAgICAgICAgZnVuIHkgLT5cbiAgICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2tleSB4IHkgd2l0aFxuICAgICAgICAgICAgICAgIHwgMCAtPiAtMVxuICAgICAgICAgICAgICAgIHwgcmVzIC0+IHJlcykpXG4gICAgaW5cbiAgICBhc3NlcnQgKE9wdGlvbi5pc19ub25lIGJvdW5kYXJ5X29wdCk7XG4gICAgbGVmdCwgcmlnaHRcbiAgOztcblxuICBsZXQgc3BsaXRfcmFuZ2VcbiAgICAgICAgdFxuICAgICAgICB+KGxvd2VyX2JvdW5kIDogJ2EgTWF5YmVfYm91bmQudClcbiAgICAgICAgfih1cHBlcl9ib3VuZCA6ICdhIE1heWJlX2JvdW5kLnQpXG4gICAgICAgIH5jb21wYXJlX2tleVxuICAgID1cbiAgICBpZiBNYXliZV9ib3VuZC5ib3VuZHNfY3Jvc3NlZFxuICAgICAgICAgfmNvbXBhcmU6Y29tcGFyZV9rZXlcbiAgICAgICAgIH5sb3dlcjpsb3dlcl9ib3VuZFxuICAgICAgICAgfnVwcGVyOnVwcGVyX2JvdW5kXG4gICAgdGhlbiBlbXB0eSwgZW1wdHksIGVtcHR5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbGVmdCwgbWlkX2FuZF9yaWdodCA9XG4gICAgICAgIG1hdGNoIGxvd2VyX2JvdW5kIHdpdGhcbiAgICAgICAgfCBVbmJvdW5kZWQgLT4gZW1wdHksIHRcbiAgICAgICAgfCBJbmNsIGxiIC0+IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgUmlnaHQgdCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgICAgfCBFeGNsIGxiIC0+IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgTGVmdCB0IGxiIH5jb21wYXJlX2tleVxuICAgICAgaW5cbiAgICAgIGxldCBtaWQsIHJpZ2h0ID1cbiAgICAgICAgbWF0Y2ggdXBwZXJfYm91bmQgd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCAtPiBtaWRfYW5kX3JpZ2h0LCBlbXB0eVxuICAgICAgICB8IEluY2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBMZWZ0IG1pZF9hbmRfcmlnaHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICAgIHwgRXhjbCBsYiAtPlxuICAgICAgICAgIHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgUmlnaHQgbWlkX2FuZF9yaWdodCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgIGluXG4gICAgICBsZWZ0LCBtaWQsIHJpZ2h0KVxuICA7O1xuXG4gIGxldCByZWMgZmluZCB0IHggfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKHYsIGQpIC0+IGlmIGNvbXBhcmVfa2V5IHggdiA9IDAgdGhlbiBTb21lIGQgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkIGVsc2UgZmluZCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcikgeCB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBsZXQgYWRkX211bHRpIHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGRhdGEgPSBkYXRhIDo6IE9wdGlvbi52YWx1ZSAoZmluZCB0IGtleSB+Y29tcGFyZV9rZXkpIH5kZWZhdWx0OltdIGluXG4gICAgIChzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIHQgfmNvbXBhcmVfa2V5KVxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB4IH5jb21wYXJlX2tleSB3aXRoXG4gICAgfCBOb25lIC0+IFtdXG4gICAgfCBTb21lIGwgLT4gbFxuICA7O1xuXG4gIGxldCBmaW5kX2V4biA9XG4gICAgbGV0IGlmX25vdF9mb3VuZCBrZXkgfnNleHBfb2Zfa2V5ID1cbiAgICAgIHJhaXNlIChOb3RfZm91bmRfcyAoTGlzdCBbIEF0b20gXCJNYXAuZmluZF9leG46IG5vdCBmb3VuZFwiOyBzZXhwX29mX2tleSBrZXkgXSkpXG4gICAgaW5cbiAgICBsZXQgcmVjIGZpbmRfZXhuIHQgeCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpZl9ub3RfZm91bmQgeCB+c2V4cF9vZl9rZXlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gaWYgY29tcGFyZV9rZXkgeCB2ID0gMCB0aGVuIGQgZWxzZSBpZl9ub3RfZm91bmQgeCB+c2V4cF9vZl9rZXlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiBkIGVsc2UgZmluZF9leG4gKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpIHggfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleVxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGZpbmRfZXhuXG4gIDs7XG5cbiAgbGV0IG1lbSB0IHggfmNvbXBhcmVfa2V5ID0gT3B0aW9uLmlzX3NvbWUgKGZpbmQgdCB4IH5jb21wYXJlX2tleSlcblxuICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgZCkgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKEVtcHR5LCBrLCBkLCBfLCBfKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAobCwgXywgXywgXywgXykgLT4gbWluX2VsdCBsXG4gIDs7XG5cbiAgZXhjZXB0aW9uIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLlRyZWUwLk1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgZXhjZXB0aW9uIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLlRyZWUwLk1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1pbl9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1pbl9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIGQpIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChfLCBrLCBkLCBFbXB0eSwgXykgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKF8sIF8sIF8sIHIsIF8pIC0+IG1heF9lbHQgclxuICA7O1xuXG4gIGxldCBtYXhfZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtYXhfZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwXG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgfCBMZWFmIF8gLT4gRW1wdHlcbiAgICB8IE5vZGUgKEVtcHR5LCBfLCBfLCByLCBfKSAtPiByXG4gICAgfCBOb2RlIChsLCB4LCBkLCByLCBfKSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHggZCByXG4gIDs7XG5cbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIG1heF9lbHQgbG93ZXJfcGFydCwgbWluX2VsdCB1cHBlcl9wYXJ0IHdpdGhcbiAgICB8IE5vbmUsIF8gLT4gYE9rIHVwcGVyX3BhcnRcbiAgICB8IF8sIE5vbmUgLT4gYE9rIGxvd2VyX3BhcnRcbiAgICB8IFNvbWUgKG1heF9sb3dlciwgXyksIFNvbWUgKG1pbl91cHBlciwgdikgd2hlbiBjb21wYXJlX2tleSBtYXhfbG93ZXIgbWluX3VwcGVyIDwgMCAtPlxuICAgICAgbGV0IHVwcGVyX3BhcnRfd2l0aG91dF9taW4gPSByZW1vdmVfbWluX2VsdCB1cHBlcl9wYXJ0IGluXG4gICAgICBgT2sgKGpvaW4gbG93ZXJfcGFydCBtaW5fdXBwZXIgdiB1cHBlcl9wYXJ0X3dpdGhvdXRfbWluKVxuICAgIHwgXyAtPiBgT3ZlcmxhcHBpbmdfa2V5X3Jhbmdlc1xuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSA9XG4gICAgKCogVGhpcyBhc3N1bWVzIHRoYXQgbWluIDw9IG1heCwgd2hpY2ggaXMgY2hlY2tlZCBieSB0aGUgb3V0ZXIgZnVuY3Rpb24uICopXG4gICAgbGV0IHJlYyBnbyB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGluaXRcbiAgICAgIHwgTGVhZiAoaywgZCkgLT5cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgayBtaW4gPCAwIHx8IGNvbXBhcmVfa2V5IGsgbWF4ID4gMFxuICAgICAgICB0aGVuICgqIGsgPCBtaW4gfHwgayA+IG1heCAqKVxuICAgICAgICAgIGluaXRcbiAgICAgICAgZWxzZSBmIH5rZXk6ayB+ZGF0YTpkIGluaXRcbiAgICAgIHwgTm9kZSAobCwgaywgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGNfbWluID0gY29tcGFyZV9rZXkgayBtaW4gaW5cbiAgICAgICAgaWYgY19taW4gPCAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBpZiBrIDwgbWluLCB0aGVuIHRoaXMgbm9kZSBhbmQgaXRzIGxlZnQgYnJhbmNoIGFyZSBvdXRzaWRlIG91ciByYW5nZSAqKVxuICAgICAgICAgIGdvIHIgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleVxuICAgICAgICBlbHNlIGlmIGNfbWluID0gMFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogaWYgayA9IG1pbiwgdGhlbiB0aGlzIG5vZGUncyBsZWZ0IGJyYW5jaCBpcyBvdXRzaWRlIG91ciByYW5nZSAqKVxuICAgICAgICAgIGdvIHIgfm1pbiB+bWF4IH5pbml0OihmIH5rZXk6ayB+ZGF0YTpkIGluaXQpIH5mIH5jb21wYXJlX2tleVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBrID4gbWluICopXG4gICAgICAgICAgbGV0IHogPSBnbyBsIH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgICBsZXQgY19tYXggPSBjb21wYXJlX2tleSBrIG1heCBpblxuICAgICAgICAgICgqIGlmIGsgPiBtYXgsIHdlJ3JlIGRvbmUgKilcbiAgICAgICAgICBpZiBjX21heCA+IDBcbiAgICAgICAgICB0aGVuIHpcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCB6ID0gZiB+a2V5OmsgfmRhdGE6ZCB6IGluXG4gICAgICAgICAgICAoKiBpZiBrID0gbWF4LCB0aGVuIHdlIGZvbGQgaW4gdGhpcyBvbmUgbGFzdCB2YWx1ZSBhbmQgd2UncmUgZG9uZSAqKVxuICAgICAgICAgICAgaWYgY19tYXggPSAwIHRoZW4geiBlbHNlIGdvIHIgfm1pbiB+bWF4IH5pbml0OnogfmYgfmNvbXBhcmVfa2V5KSlcbiAgICBpblxuICAgIGZ1biB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgLT5cbiAgICAgIGlmIGNvbXBhcmVfa2V5IG1pbiBtYXggPD0gMCB0aGVuIGdvIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSBlbHNlIGluaXRcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggfmNvbXBhcmVfa2V5ID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgICAgICB0XG4gICAgICAgICB+bWluXG4gICAgICAgICB+bWF4XG4gICAgICAgICB+aW5pdDpbXVxuICAgICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhIGwgLT4gKGtleSwgZGF0YSkgOjogbClcbiAgICAgICAgIH5jb21wYXJlX2tleSlcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb25zOlxuICAgICAtIGFsbCBlbGVtZW50cyBpbiB0MSBhcmUgbGVzcyB0aGFuIGVsZW1lbnRzIGluIHQyXG4gICAgIC0gfGhlaWdodCh0MSkgLSBoZWlnaHQodDIpfCA8PSAyICopXG4gIGxldCBjb25jYXRfdW5jaGVja2VkIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPlxuICAgICAgbGV0IHgsIGQgPSBtaW5fZWx0X2V4biB0MiBpblxuICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9lbHQgdDIpXG4gIDs7XG5cbiAgKCogc2ltaWxhciB0byBbY29uY2F0X3VuY2hlY2tlZF0sIGFuZCBiYWxhbmNlcyB0cmVlcyBvZiBhcmJpdHJhcnkgaGVpZ2h0IGRpZmZlcmVuY2VzICopXG4gIGxldCBjb25jYXRfYW5kX2JhbGFuY2VfdW5jaGVja2VkIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPlxuICAgICAgbGV0IHgsIGQgPSBtaW5fZWx0X2V4biB0MiBpblxuICAgICAgam9pbiB0MSB4IGQgKHJlbW92ZV9taW5fZWx0IHQyKVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBSZW1vdmVfbm9fb3BcblxuICBsZXQgcmVtb3ZlIHQgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IHJlYyByZW1vdmVfbG9vcCB0IHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+ICAoRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFJlbW92ZV9ub19vcClcbiAgICAgIHwgTGVhZiAodiwgXykgLT5cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgeCB2ID0gMFxuICAgICAgICB0aGVuICAod2l0aF9sZW5ndGggRW1wdHkgKGxlbmd0aCAtIDEpKVxuICAgICAgICBlbHNlICAoRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFJlbW92ZV9ub19vcClcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAgKHdpdGhfbGVuZ3RoIChjb25jYXRfdW5jaGVja2VkIGwgcikgKGxlbmd0aCAtIDEpKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSBsOyBsZW5ndGggfSA9IHJlbW92ZV9sb29wIGwgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gcjsgbGVuZ3RoIH0gPSByZW1vdmVfbG9vcCByIHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICBpblxuICAgIHRyeSAgKHJlbW92ZV9sb29wIHQgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSkgd2l0aFxuICAgIHwgUmVtb3ZlX25vX29wIC0+ICAod2l0aF9sZW5ndGggdCBsZW5ndGgpXG4gIDs7XG5cbiAgKCogVXNlIGV4Y2VwdGlvbiB0byBhdm9pZCB0cmVlLXJlYnVpbGQgaW4gbm8tb3AgY2FzZSAqKVxuICBleGNlcHRpb24gQ2hhbmdlX25vX29wXG5cbiAgbGV0IGNoYW5nZSB0IGtleSB+ZiB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IHJlYyBjaGFuZ2VfY29yZSB0IGtleSBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAobWF0Y2ggZiBOb25lIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAoKiBlcXVpdmFsZW50IHRvIHJldHVybmluZzogRW1wdHkgKilcbiAgICAgICAgICAgIChFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgQ2hhbmdlX25vX29wKVxuICAgICAgICAgfCBTb21lIGRhdGEgLT4gICh3aXRoX2xlbmd0aCAoTGVhZiAoa2V5LCBkYXRhKSkgKGxlbmd0aCArIDEpKSlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gICh3aXRoX2xlbmd0aCBFbXB0eSAobGVuZ3RoIC0gMSkpXG4gICAgICAgICAgfCBTb21lIGQnIC0+ICAod2l0aF9sZW5ndGggKExlYWYgKHYsIGQnKSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gbDsgbGVuZ3RoIH0gPSBjaGFuZ2VfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCBFbXB0eSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IHI7IGxlbmd0aCB9ID0gY2hhbmdlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgRW1wdHkgdiBkIHIpIGxlbmd0aCkpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICAod2l0aF9sZW5ndGggKGNvbmNhdF91bmNoZWNrZWQgbCByKSAobGVuZ3RoIC0gMSkpXG4gICAgICAgICAgfCBTb21lIGRhdGEgLT4gICh3aXRoX2xlbmd0aCAoTm9kZSAobCwga2V5LCBkYXRhLCByLCBoKSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gbDsgbGVuZ3RoIH0gPSBjaGFuZ2VfY29yZSBsIGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSByOyBsZW5ndGggfSA9IGNoYW5nZV9jb3JlIHIga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICBpblxuICAgIHRyeSAgKGNoYW5nZV9jb3JlIHQga2V5IGYpIHdpdGhcbiAgICB8IENoYW5nZV9ub19vcCAtPiAgKHdpdGhfbGVuZ3RoIHQgbGVuZ3RoKVxuICA7O1xuXG4gIGxldCB1cGRhdGUgdCBrZXkgfmYgfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCByZWMgdXBkYXRlX2NvcmUgdCBrZXkgZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgbGV0IGRhdGEgPSBmIE5vbmUgaW5cbiAgICAgICAgICh3aXRoX2xlbmd0aCAoTGVhZiAoa2V5LCBkYXRhKSkgKGxlbmd0aCArIDEpKVxuICAgICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBkJyA9IGYgKFNvbWUgZCkgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChMZWFmICh2LCBkJykpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IGw7IGxlbmd0aCB9ID0gdXBkYXRlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgRW1wdHkpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSByOyBsZW5ndGggfSA9IHVwZGF0ZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIEVtcHR5IHYgZCByKSBsZW5ndGgpKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBkYXRhID0gZiAoU29tZSBkKSBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKE5vZGUgKGwsIGtleSwgZGF0YSwgciwgaCkpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IGw7IGxlbmd0aCB9ID0gdXBkYXRlX2NvcmUgbCBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gcjsgbGVuZ3RoIH0gPSB1cGRhdGVfY29yZSByIGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgaW5cbiAgICAgKHVwZGF0ZV9jb3JlIHQga2V5IGYpXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9tdWx0aSB0IGtleSB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgXG4gICAgICAoY2hhbmdlIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgfCBOb25lIHwgU29tZSAoW10gfCBbIF8gXSkgLT4gTm9uZVxuICAgICAgICAgfCBTb21lIChfIDo6IChfIDo6IF8gYXMgbm9uX2VtcHR5X3RhaWwpKSAtPiBTb21lIG5vbl9lbXB0eV90YWlsKSlcbiAgOztcblxuICBsZXQgcmVjIGl0ZXJfa2V5cyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmICh2LCBfKSAtPiBmIHZcbiAgICB8IE5vZGUgKGwsIHYsIF8sIHIsIF8pIC0+XG4gICAgICBpdGVyX2tleXMgfmYgbDtcbiAgICAgIGYgdjtcbiAgICAgIGl0ZXJfa2V5cyB+ZiByXG4gIDs7XG5cbiAgbGV0IHJlYyBpdGVyIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgKF8sIGQpIC0+IGYgZFxuICAgIHwgTm9kZSAobCwgXywgZCwgciwgXykgLT5cbiAgICAgIGl0ZXIgfmYgbDtcbiAgICAgIGYgZDtcbiAgICAgIGl0ZXIgfmYgclxuICA7O1xuXG4gIGxldCByZWMgaXRlcmkgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZFxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGl0ZXJpIH5mIGw7XG4gICAgICBmIH5rZXk6diB+ZGF0YTpkO1xuICAgICAgaXRlcmkgfmYgclxuICA7O1xuXG4gIGxldCBpdGVyaV91bnRpbCA9XG4gICAgbGV0IHJlYyBpdGVyaV91bnRpbF9sb29wIHQgfmYgOiBDb250aW51ZV9vcl9zdG9wLnQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IENvbnRpbnVlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmRcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgKG1hdGNoIGl0ZXJpX3VudGlsX2xvb3AgfmYgbCB3aXRoXG4gICAgICAgICB8IFN0b3AgLT4gU3RvcFxuICAgICAgICAgfCBDb250aW51ZSAtPlxuICAgICAgICAgICAobWF0Y2ggZiB+a2V5OnYgfmRhdGE6ZCB3aXRoXG4gICAgICAgICAgICB8IFN0b3AgLT4gU3RvcFxuICAgICAgICAgICAgfCBDb250aW51ZSAtPiBpdGVyaV91bnRpbF9sb29wIH5mIHIpKVxuICAgIGluXG4gICAgZnVuIHQgfmYgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC5vZl9jb250aW51ZV9vcl9zdG9wIChpdGVyaV91bnRpbF9sb29wIHQgfmYpXG4gIDs7XG5cbiAgbGV0IHJlYyBtYXAgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAodiwgZCkgLT4gTGVhZiAodiwgZiBkKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgIGxldCBsJyA9IG1hcCB+ZiBsIGluXG4gICAgICBsZXQgZCcgPSBmIGQgaW5cbiAgICAgIGxldCByJyA9IG1hcCB+ZiByIGluXG4gICAgICBOb2RlIChsJywgdiwgZCcsIHInLCBoKVxuICA7O1xuXG4gIGxldCByZWMgbWFwaSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmICh2LCBkKSAtPiBMZWFmICh2LCBmIH5rZXk6diB+ZGF0YTpkKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgIGxldCBsJyA9IG1hcGkgfmYgbCBpblxuICAgICAgbGV0IGQnID0gZiB+a2V5OnYgfmRhdGE6ZCBpblxuICAgICAgbGV0IHInID0gbWFwaSB+ZiByIGluXG4gICAgICBOb2RlIChsJywgdiwgZCcsIHInLCBoKVxuICA7O1xuXG4gIGxldCByZWMgZm9sZCB0IH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZCBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBmb2xkIH5mIHIgfmluaXQ6KGYgfmtleTp2IH5kYXRhOmQgKGZvbGQgfmYgbCB+aW5pdDphY2N1KSlcbiAgOztcblxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPVxuICAgIGxldCByZWMgZm9sZF91bnRpbF9sb29wIHQgfmFjYyB+ZiA6IChfLCBfKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBDb250aW51ZSBhY2NcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZCBhY2NcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgKG1hdGNoIGZvbGRfdW50aWxfbG9vcCBsIH5hY2MgfmYgd2l0aFxuICAgICAgICAgfCBTdG9wIGZpbmFsIC0+IFN0b3AgZmluYWxcbiAgICAgICAgIHwgQ29udGludWUgYWNjIC0+XG4gICAgICAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIGFjYyB3aXRoXG4gICAgICAgICAgICB8IFN0b3AgZmluYWwgLT4gU3RvcCBmaW5hbFxuICAgICAgICAgICAgfCBDb250aW51ZSBhY2MgLT4gZm9sZF91bnRpbF9sb29wIHIgfmFjYyB+ZikpXG4gICAgaW5cbiAgICBtYXRjaCBmb2xkX3VudGlsX2xvb3AgdCB+YWNjOmluaXQgfmYgd2l0aFxuICAgIHwgQ29udGludWUgYWNjIC0+IGZpbmlzaCBhY2MgW0Bub250YWlsXVxuICAgIHwgU3RvcCBzdG9wIC0+IHN0b3BcbiAgOztcblxuICBsZXQgcmVjIGZvbGRfcmlnaHQgdCB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmQgYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGZvbGRfcmlnaHQgfmYgbCB+aW5pdDooZiB+a2V5OnYgfmRhdGE6ZCAoZm9sZF9yaWdodCB+ZiByIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCByZWMgZmlsdGVyX21hcGkgdCB+ZiB+bGVuID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgd2l0aFxuICAgICAgIHwgU29tZSBuZXdfZGF0YSAtPiBMZWFmICh2LCBuZXdfZGF0YSlcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGRlY3IgbGVuO1xuICAgICAgICAgRW1wdHkpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGwnID0gZmlsdGVyX21hcGkgbCB+ZiB+bGVuIGluXG4gICAgICBsZXQgbmV3X2RhdGEgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwaSByIH5mIH5sZW4gaW5cbiAgICAgIChtYXRjaCBuZXdfZGF0YSB3aXRoXG4gICAgICAgfCBTb21lIG5ld19kYXRhIC0+IGpvaW4gbCcgdiBuZXdfZGF0YSByJ1xuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgZGVjciBsZW47XG4gICAgICAgICBjb25jYXRfYW5kX2JhbGFuY2VfdW5jaGVja2VkIGwnIHInKVxuICA7O1xuXG4gIGxldCByZWMgZmlsdGVyaSB0IH5mIH5sZW4gPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAobWF0Y2ggZiB+a2V5OnYgfmRhdGE6ZCB3aXRoXG4gICAgICAgfCB0cnVlIC0+IHRcbiAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICBkZWNyIGxlbjtcbiAgICAgICAgIEVtcHR5KVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGxldCBsJyA9IGZpbHRlcmkgbCB+ZiB+bGVuIGluXG4gICAgICBsZXQga2VlcF9kYXRhID0gZiB+a2V5OnYgfmRhdGE6ZCBpblxuICAgICAgbGV0IHInID0gZmlsdGVyaSByIH5mIH5sZW4gaW5cbiAgICAgIGlmIHBoeXNfZXF1YWwgbCBsJyAmJiBrZWVwX2RhdGEgJiYgcGh5c19lcXVhbCByIHInXG4gICAgICB0aGVuIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBrZWVwX2RhdGEgd2l0aFxuICAgICAgICB8IHRydWUgLT4gam9pbiBsJyB2IGQgcidcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIGRlY3IgbGVuO1xuICAgICAgICAgIGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgbCcgcicpXG4gIDs7XG5cbiAgbGV0IGZpbHRlciB0IH5mIH5sZW4gPSBmaWx0ZXJpIHQgfmxlbiB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlcl9rZXlzIHQgfmYgfmxlbiA9IGZpbHRlcmkgdCB+bGVuIH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgfmxlbiA9IGZpbHRlcl9tYXBpIHQgfmxlbiB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9XG4gICAgbGV0IHQxLCB0MiA9XG4gICAgICBmb2xkXG4gICAgICAgIHRcbiAgICAgICAgfmluaXQ6KEJ1aWxkX2luY3JlYXNpbmcuZW1wdHksIEJ1aWxkX2luY3JlYXNpbmcuZW1wdHkpXG4gICAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSAodDEsIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIChmIH5rZXkgfmRhdGEgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCB4IC0+IEJ1aWxkX2luY3JlYXNpbmcuYWRkX3VuY2hlY2tlZCB0MSB+a2V5IH5kYXRhOngsIHQyXG4gICAgICAgICAgfCBTZWNvbmQgeSAtPiB0MSwgQnVpbGRfaW5jcmVhc2luZy5hZGRfdW5jaGVja2VkIHQyIH5rZXkgfmRhdGE6eSlcbiAgICBpblxuICAgIEJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZV91bmNoZWNrZWQgdDEsIEJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZV91bmNoZWNrZWQgdDJcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgICBsZXQgcmVjIGxvb3AgdCB+ZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRW1wdHksIEVtcHR5XG4gICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIHdpdGhcbiAgICAgICAgIHwgdHJ1ZSAtPiB0LCBFbXB0eVxuICAgICAgICAgfCBmYWxzZSAtPiBFbXB0eSwgdClcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGwndCwgbCdmID0gbG9vcCBsIH5mIGluXG4gICAgICAgIGxldCBrZWVwX2RhdGFfdCA9IGYgfmtleTp2IH5kYXRhOmQgaW5cbiAgICAgICAgbGV0IHIndCwgcidmID0gbG9vcCByIH5mIGluXG4gICAgICAgIGxldCBtayBsJyBrZWVwX2RhdGEgcicgPVxuICAgICAgICAgIGlmIHBoeXNfZXF1YWwgbCBsJyAmJiBrZWVwX2RhdGEgJiYgcGh5c19lcXVhbCByIHInXG4gICAgICAgICAgdGhlbiB0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCBrZWVwX2RhdGEgd2l0aFxuICAgICAgICAgICAgfCB0cnVlIC0+IGpvaW4gbCcgdiBkIHInXG4gICAgICAgICAgICB8IGZhbHNlIC0+IGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgbCcgcicpXG4gICAgICAgIGluXG4gICAgICAgIG1rIGwndCBrZWVwX2RhdGFfdCByJ3QsIG1rIGwnZiAobm90IGtlZXBfZGF0YV90KSByJ2ZcbiAgICBpblxuICAgIGxvb3AgdCB+ZlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxuICBtb2R1bGUgRW51bSA9IHN0cnVjdFxuICAgIHR5cGUgaW5jcmVhc2luZ1xuICAgIHR5cGUgZGVjcmVhc2luZ1xuXG4gICAgdHlwZSAoJ2ssICd2LCAnZGlyZWN0aW9uKSB0ID1cbiAgICAgIHwgRW5kXG4gICAgICB8IE1vcmUgb2YgJ2sgKiAndiAqICgnaywgJ3YpIHRyZWUgKiAoJ2ssICd2LCAnZGlyZWN0aW9uKSB0XG5cbiAgICBsZXQgcmVjIGNvbnMgdCAoZSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0KSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IE1vcmUgKHYsIGQsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBjb25zIGwgKE1vcmUgKHYsIGQsIHIsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGNvbnNfcmlnaHQgdCAoZSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0KSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IE1vcmUgKHYsIGQsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBjb25zX3JpZ2h0IHIgKE1vcmUgKHYsIGQsIGwsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfdHJlZSB0cmVlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPSBjb25zIHRyZWUgRW5kXG4gICAgbGV0IG9mX3RyZWVfcmlnaHQgdHJlZSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0ID0gY29uc19yaWdodCB0cmVlIEVuZFxuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiAodiwgZCkgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIGQsIEVtcHR5LCAxKSkgZVxuICAgICAgICB8IE5vZGUgKF8sIHYsIF8sIHIsIF8pIHdoZW4gY29tcGFyZSB2IGtleSA8IDAgLT4gbG9vcCByIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBsb29wIGwgKE1vcmUgKHYsIGQsIHIsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiAodiwgZCkgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIGQsIEVtcHR5LCAxKSkgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIF8sIF8sIF8pIHdoZW4gY29tcGFyZSB2IGtleSA+IDAgLT4gbG9vcCBsIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBsb29wIHIgKE1vcmUgKHYsIGQsIGwsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IHN0ZXBfZGVlcGVyX2V4biB0cmVlIGUgPVxuICAgICAgbWF0Y2ggdHJlZSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBFbXB0eSwgTW9yZSAodiwgZCwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGwsIE1vcmUgKHYsIGQsIHIsIGUpXG4gICAgOztcblxuICAgICgqIFtkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMl0gZHJvcHMgdGhlIGxhcmdlc3QgcGh5c2ljYWxseS1lcXVhbFxuICAgICAgIHByZWZpeCBvZiB0cmVlMSBhbmQgdHJlZTIgdGhhdCB0aGV5IHNoYXJlLCBhbmQgdGhlbiBwcmVwZW5kcyB0aGUgcmVtYWluaW5nIGRhdGFcbiAgICAgICBpbnRvIGFjYzEgYW5kIGFjYzIsIHJlc3BlY3RpdmVseS5cbiAgICAgICBUaGlzIGNhbiBiZSBhc3ltcHRvdGljYWxseSBmYXN0ZXIgdGhhbiBbY29uc10gZXZlbiBpZiBpdCBza2lwcyBhIHNtYWxsIHByb3BvcnRpb25cbiAgICAgICBvZiB0aGUgdHJlZSBiZWNhdXNlIFtjb25zXSBpcyBhbHdheXMgTyhsb2cobikpIGluIHRoZSBzaXplIG9mIHRoZSB0cmVlLCB3aGlsZVxuICAgICAgIHRoaXMgZnVuY3Rpb24gaXMgTyhsb2cobi9tKSkgd2hlcmUgW21dIGlzIHRoZSBzaXplIG9mIHRoZSBwYXJ0IG9mIHRoZSB0cmVlIHRoYXRcbiAgICAgICBpcyBza2lwcGVkLiAqKVxuICAgIGxldCByZWMgZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBhY2MxIHRyZWUyIGFjYzIgPVxuICAgICAgaWYgcGh5c19lcXVhbCB0cmVlMSB0cmVlMlxuICAgICAgdGhlbiBhY2MxLCBhY2MyXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGgyID0gaGVpZ2h0IHRyZWUyIGluXG4gICAgICAgIGxldCBoMSA9IGhlaWdodCB0cmVlMSBpblxuICAgICAgICBpZiBoMiA9IGgxXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB0cmVlMSwgYWNjMSA9IHN0ZXBfZGVlcGVyX2V4biB0cmVlMSBhY2MxIGluXG4gICAgICAgICAgbGV0IHRyZWUyLCBhY2MyID0gc3RlcF9kZWVwZXJfZXhuIHRyZWUyIGFjYzIgaW5cbiAgICAgICAgICBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMilcbiAgICAgICAgZWxzZSBpZiBoMiA+IGgxXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB0cmVlMiwgYWNjMiA9IHN0ZXBfZGVlcGVyX2V4biB0cmVlMiBhY2MyIGluXG4gICAgICAgICAgZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBhY2MxIHRyZWUyIGFjYzIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB0cmVlMSwgYWNjMSA9IHN0ZXBfZGVlcGVyX2V4biB0cmVlMSBhY2MxIGluXG4gICAgICAgICAgZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBhY2MxIHRyZWUyIGFjYzIpKVxuICAgIDs7XG5cbiAgICBsZXQgY29tcGFyZSBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICAgIHwgXywgRW5kIC0+IDFcbiAgICAgICAgfCBNb3JlICh2MSwgZDEsIHIxLCBlMSksIE1vcmUgKHYyLCBkMiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBjID0gY29tcGFyZV9kYXRhIGQxIGQyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlMSwgZTIgPSBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHIxIGUxIHIyIGUyIGluXG4gICAgICAgICAgICAgIGxvb3AgZTEgZTIpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDJcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIGNvbXBhcmVfa2V5IGRhdGFfZXF1YWwgdDEgdDIgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiB0cnVlXG4gICAgICAgIHwgRW5kLCBfIHwgXywgRW5kIC0+IGZhbHNlXG4gICAgICAgIHwgTW9yZSAodjEsIGQxLCByMSwgZTEpLCBNb3JlICh2MiwgZDIsIHIyLCBlMikgLT5cbiAgICAgICAgICBjb21wYXJlX2tleSB2MSB2MiA9IDBcbiAgICAgICAgICAmJiBkYXRhX2VxdWFsIGQxIGQyXG4gICAgICAgICAgJiZcbiAgICAgICAgICBsZXQgZTEsIGUyID0gZHJvcF9waHlzX2VxdWFsX3ByZWZpeCByMSBlMSByMiBlMiBpblxuICAgICAgICAgIGxvb3AgZTEgZTJcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyXG4gICAgOztcblxuICAgIGxldCByZWMgZm9sZCB+aW5pdCB+ZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVuZCAtPiBpbml0XG4gICAgICB8IE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgbGV0IG5leHQgPSBmIH5rZXkgfmRhdGEgaW5pdCBpblxuICAgICAgICBmb2xkIChjb25zIHRyZWUgZW51bSkgfmluaXQ6bmV4dCB+ZlxuICAgIDs7XG5cbiAgICBsZXQgZm9sZDIgY29tcGFyZV9rZXkgdDEgdDIgfmluaXQgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyIGN1cnIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IGN1cnJcbiAgICAgICAgfCBFbmQsIF8gLT5cbiAgICAgICAgICBmb2xkIHQyIH5pbml0OmN1cnIgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBmIH5rZXkgfmRhdGE6KGBSaWdodCBkYXRhKSBhY2MpIFtAbm9udGFpbFxuICAgICAgICAgIF1cbiAgICAgICAgfCBfLCBFbmQgLT5cbiAgICAgICAgICBmb2xkIHQxIH5pbml0OmN1cnIgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBmIH5rZXkgfmRhdGE6KGBMZWZ0IGRhdGEpIGFjYykgW0Bub250YWlsXG4gICAgICAgICAgXVxuICAgICAgICB8IE1vcmUgKGsxLCB2MSwgdHJlZTEsIGVudW0xKSwgTW9yZSAoazIsIHYyLCB0cmVlMiwgZW51bTIpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9rZXkgazEgazIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0ID0gZiB+a2V5OmsxIH5kYXRhOihgQm90aCAodjEsIHYyKSkgY3VyciBpblxuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgKGNvbnMgdHJlZTIgZW51bTIpIG5leHQpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0ID0gZiB+a2V5OmsxIH5kYXRhOihgTGVmdCB2MSkgY3VyciBpblxuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgdDIgbmV4dClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBuZXh0ID0gZiB+a2V5OmsyIH5kYXRhOihgUmlnaHQgdjIpIGN1cnIgaW5cbiAgICAgICAgICAgIGxvb3AgdDEgKGNvbnMgdHJlZTIgZW51bTIpIG5leHQpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MiBpbml0IFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCA9XG4gICAgICBsZXQgc3RlcCBzdGF0ZSA9XG4gICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgICAgfCBFbmQsIE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrZXksIGBSaWdodCBkYXRhOyBzdGF0ZSA9IEVuZCwgY29ucyB0cmVlIGVudW0gfVxuICAgICAgICB8IE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSksIEVuZCAtPlxuICAgICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGtleSwgYExlZnQgZGF0YTsgc3RhdGUgPSBjb25zIHRyZWUgZW51bSwgRW5kIH1cbiAgICAgICAgfCAoTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoazIsIHYyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfa2V5IGsxIGsyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dF9zdGF0ZSA9IGRyb3BfcGh5c19lcXVhbF9wcmVmaXggdHJlZTEgZW51bTEgdHJlZTIgZW51bTIgaW5cbiAgICAgICAgICAgIGlmIGRhdGFfZXF1YWwgdjEgdjJcbiAgICAgICAgICAgIHRoZW4gU2VxdWVuY2UuU3RlcC5Ta2lwIHsgc3RhdGUgPSBuZXh0X3N0YXRlIH1cbiAgICAgICAgICAgIGVsc2UgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gazEsIGBVbmVxdWFsICh2MSwgdjIpOyBzdGF0ZSA9IG5leHRfc3RhdGUgfSlcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGsxLCBgTGVmdCB2MTsgc3RhdGUgPSBjb25zIHRyZWUxIGVudW0xLCByaWdodCB9XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gazIsIGBSaWdodCB2Mjsgc3RhdGUgPSBsZWZ0LCBjb25zIHRyZWUyIGVudW0yIH1cbiAgICAgIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDooZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0MSBFbmQgdDIgRW5kKSB+ZjpzdGVwXG4gICAgOztcblxuICAgIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgYWRkIGFjYyBrIHYgPSBmIGFjYyAoaywgYFJpZ2h0IHYpIGluXG4gICAgICBsZXQgcmVtb3ZlIGFjYyBrIHYgPSBmIGFjYyAoaywgYExlZnQgdikgaW5cbiAgICAgIGxldCByZWMgbG9vcCBsZWZ0IHJpZ2h0IGFjYyA9XG4gICAgICAgIG1hdGNoIGxlZnQsIHJpZ2h0IHdpdGhcbiAgICAgICAgfCBFbmQsIGVudW0gLT5cbiAgICAgICAgICBmb2xkIGVudW0gfmluaXQ6YWNjIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gYWRkIGFjYyBrZXkgZGF0YSkgW0Bub250YWlsXVxuICAgICAgICB8IGVudW0sIEVuZCAtPlxuICAgICAgICAgIGZvbGQgZW51bSB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiByZW1vdmUgYWNjIGtleSBkYXRhKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgKE1vcmUgKGsxLCB2MSwgdHJlZTEsIGVudW0xKSBhcyBsZWZ0KSwgKE1vcmUgKGsyLCB2MiwgdHJlZTIsIGVudW0yKSBhcyByaWdodCkgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2tleSBrMSBrMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGFjYyA9IGlmIGRhdGFfZXF1YWwgdjEgdjIgdGhlbiBhY2MgZWxzZSBmIGFjYyAoazEsIGBVbmVxdWFsICh2MSwgdjIpKSBpblxuICAgICAgICAgICAgbGV0IGVudW0xLCBlbnVtMiA9IGRyb3BfcGh5c19lcXVhbF9wcmVmaXggdHJlZTEgZW51bTEgdHJlZTIgZW51bTIgaW5cbiAgICAgICAgICAgIGxvb3AgZW51bTEgZW51bTIgYWNjKVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBrMSB2MSBpblxuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgcmlnaHQgYWNjKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgazIgdjIgaW5cbiAgICAgICAgICAgIGxvb3AgbGVmdCAoY29ucyB0cmVlMiBlbnVtMikgYWNjKVxuICAgICAgaW5cbiAgICAgIGxldCBsZWZ0LCByaWdodCA9IGRyb3BfcGh5c19lcXVhbF9wcmVmaXggdDEgRW5kIHQyIEVuZCBpblxuICAgICAgbG9vcCBsZWZ0IHJpZ2h0IGluaXQgW0Bub250YWlsXVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHYsIHQsIGUpIC0+XG4gICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGssIHY7IHN0YXRlID0gRW51bS5jb25zIHQgZSB9XG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2tleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl90cmVlIHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXkgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdiwgdCwgZSkgLT5cbiAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gaywgdjsgc3RhdGUgPSBFbnVtLmNvbnNfcmlnaHQgdCBlIH1cbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fa2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3RyZWVfcmlnaHQgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VcbiAgICAgICAgY29tcGFyYXRvclxuICAgICAgICA/KG9yZGVyID0gYEluY3JlYXNpbmdfa2V5KVxuICAgICAgICA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICAgID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgaW5jbHVzaXZlX2JvdW5kIHNpZGUgdCBib3VuZCA9XG4gICAgICBsZXQgY29tcGFyZV9rZXkgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgICAgbGV0IGwsIG1heWJlLCByID0gc3BsaXQgdCBib3VuZCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgIGxldCB0ID0gc2lkZSAobCwgcikgaW5cbiAgICAgIG1hdGNoIG1heWJlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0XG4gICAgICB8IFNvbWUgKGtleSwgZGF0YSkgLT4gc2V0JyB0IGtleSBkYXRhIH5jb21wYXJlX2tleVxuICAgIGluXG4gICAgbWF0Y2ggb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmdfa2V5IC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGtleXNfbGVzc19vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgZnN0KSBpblxuICAgICAgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleTprZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gdFxuICAgIHwgYERlY3JlYXNpbmdfa2V5IC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgc25kKSBpblxuICAgICAgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleTprZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgbGV0IGUxLCBlMiA9IEVudW0uZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0MSBFbmQgdDIgRW5kIGluXG4gICAgRW51bS5jb21wYXJlIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSBlMSBlMlxuICA7O1xuXG4gIGxldCBlcXVhbCBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIGxldCBlMSwgZTIgPSBFbnVtLmRyb3BfcGh5c19lcXVhbF9wcmVmaXggdDEgRW5kIHQyIEVuZCBpblxuICAgIEVudW0uZXF1YWwgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIGUxIGUyXG4gIDs7XG5cbiAgbGV0IGl0ZXIyIHQxIHQyIH5mIH5jb21wYXJlX2tleSA9XG4gICAgRW51bS5mb2xkMlxuICAgICAgY29tcGFyZV9rZXlcbiAgICAgIChFbnVtLm9mX3RyZWUgdDEpXG4gICAgICAoRW51bS5vZl90cmVlIHQyKVxuICAgICAgfmluaXQ6KClcbiAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSAoKSAtPiBmIH5rZXkgfmRhdGEpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZm9sZDIgdDEgdDIgfmluaXQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBFbnVtLmZvbGQyIGNvbXBhcmVfa2V5IChFbnVtLm9mX3RyZWUgdDEpIChFbnVtLm9mX3RyZWUgdDIpIH5mIH5pbml0XG4gIDs7XG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmID0gRW51bS5zeW1tZXRyaWNfZGlmZlxuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgKCogW0VudW0uZm9sZF9kaWZmc10gaXMgYSBjb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24sIGJ1dCBpcyBjb25zaWRlcmFibHlcbiAgICAgICBzbG93ZXIsIGFzIHdlIGhhdmUgdG8gYWxsb2NhdGUgcXVpdGUgYSBsb3Qgb2Ygc3RhdGUgdG8gdHJhY2sgZW51bWVyYXRpb24gb2YgYSB0cmVlLlxuICAgICAgIEF2b2lkIGlmIHdlIGNhbi5cbiAgICAqKVxuICAgIGxldCBzbG93IHggeSB+aW5pdCA9IEVudW0uZm9sZF9zeW1tZXRyaWNfZGlmZiB4IHkgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5mIH5pbml0IGluXG4gICAgbGV0IGFkZCBhY2MgayB2ID0gZiBhY2MgKGssIGBSaWdodCB2KSBpblxuICAgIGxldCByZW1vdmUgYWNjIGsgdiA9IGYgYWNjIChrLCBgTGVmdCB2KSBpblxuICAgIGxldCBkZWx0YSBhY2MgayB2IHYnID0gaWYgZGF0YV9lcXVhbCB2IHYnIHRoZW4gYWNjIGVsc2UgZiBhY2MgKGssIGBVbmVxdWFsICh2LCB2JykpIGluXG4gICAgKCogSWYgdHdvIHRyZWVzIGhhdmUgdGhlIHNhbWUgc3RydWN0dXJlIGF0IHRoZSByb290IChhbmQgdGhlIHNhbWUga2V5LCBpZiB0aGV5J3JlXG4gICAgICAgW05vZGVdcykgd2UgY2FuIHRyaXZpYWxseSBkaWZmIGVhY2ggc3VicGFydCBpbiBvYnZpb3VzIHdheXMuICopXG4gICAgbGV0IHJlYyBsb29wIHQgdCcgYWNjID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgdCB0J1xuICAgICAgdGhlbiBhY2NcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0LCB0JyB3aXRoXG4gICAgICAgIHwgRW1wdHksIG5ld192YWxzIC0+XG4gICAgICAgICAgZm9sZCBuZXdfdmFscyB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgYWNjIGtleSBkYXRhKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgb2xkX3ZhbHMsIEVtcHR5IC0+XG4gICAgICAgICAgZm9sZCBvbGRfdmFscyB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiByZW1vdmUgYWNjIGtleSBkYXRhKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgTGVhZiAoaywgdiksIExlYWYgKGsnLCB2JykgLT5cbiAgICAgICAgICAobWF0Y2ggY29tcGFyZV9rZXkgayBrJyB3aXRoXG4gICAgICAgICAgIHwgeCB3aGVuIHggPSAwIC0+IGRlbHRhIGFjYyBrIHYgdidcbiAgICAgICAgICAgfCB4IHdoZW4geCA8IDAgLT5cbiAgICAgICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBrIHYgaW5cbiAgICAgICAgICAgICBhZGQgYWNjIGsnIHYnXG4gICAgICAgICAgIHwgXyAoKiB3aGVuIHggPiAwICopIC0+XG4gICAgICAgICAgICAgbGV0IGFjYyA9IGFkZCBhY2MgaycgdicgaW5cbiAgICAgICAgICAgICByZW1vdmUgYWNjIGsgdilcbiAgICAgICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSwgTm9kZSAobCcsIGsnLCB2JywgcicsIF8pIHdoZW4gY29tcGFyZV9rZXkgayBrJyA9IDAgLT5cbiAgICAgICAgICBsZXQgYWNjID0gbG9vcCBsIGwnIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBkZWx0YSBhY2MgayB2IHYnIGluXG4gICAgICAgICAgbG9vcCByIHInIGFjY1xuICAgICAgICAoKiBPdXIgcm9vdHMgYXJlbid0IHRoZSBzYW1lIGtleS4gRmFsbGJhY2sgdG8gdGhlIHNsb3cgbW9kZS4gVHJlZXMgd2l0aCBzbWFsbFxuICAgICAgICAgICBkaWZmcyB3aWxsIG9ubHkgZG8gdGhpcyBvbiB2ZXJ5IHNtYWxsIHBhcnRzIG9mIHRoZSB0cmVlIChob3BlZnVsbHkgLSBpZiB0aGVcbiAgICAgICAgICAgb3ZlcmFsbCByb290IGlzIHJlYmFsYW5jZWQsIHdlJ2xsIGVhdCB0aGUgd2hvbGUgY29zdCwgdW5mb3J0dW5hdGVseS4pICopXG4gICAgICAgIHwgTm9kZSBfLCBOb2RlIF8gfCBOb2RlIF8sIExlYWYgXyB8IExlYWYgXywgTm9kZSBfIC0+IHNsb3cgdCB0JyB+aW5pdDphY2MpXG4gICAgaW5cbiAgICBsb29wIHQxIHQyIGluaXQgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCByZWMgbGVuZ3RoID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChsLCBfLCBfLCByLCBfKSAtPiBsZW5ndGggbCArIGxlbmd0aCByICsgMVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0ID1cbiAgICBmb2xkXG4gICAgICB0XG4gICAgICB+aW5pdDooaGFzaF9mb2xkX2ludCBzdGF0ZSAobGVuZ3RoIHQpKVxuICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhIHN0YXRlIC0+IGhhc2hfZm9sZF9kYXRhIChoYXNoX2ZvbGRfa2V5IHN0YXRlIGtleSkgZGF0YSlcbiAgOztcblxuICBsZXQga2V5cyB0ID0gZm9sZF9yaWdodCB+ZjooZnVuIH5rZXkgfmRhdGE6XyBsaXN0IC0+IGtleSA6OiBsaXN0KSB0IH5pbml0OltdXG4gIGxldCBkYXRhIHQgPSBmb2xkX3JpZ2h0IH5mOihmdW4gfmtleTpfIH5kYXRhIGxpc3QgLT4gZGF0YSA6OiBsaXN0KSB0IH5pbml0OltdXG5cbiAgbW9kdWxlIHR5cGUgRm9sZGFibGUgPSBzaWdcbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcbiAgZW5kXG5cbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSBvZl9mb2xkYWJsZScgfmZvbGQgZm9sZGFibGUgfmluaXQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICAoZm9sZCBbQGlubGluZWQgaGludF0pXG4gICAgICBmb2xkYWJsZVxuICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgfmY6KGZ1biB7IHRyZWUgPSBhY2N1bTsgbGVuZ3RoIH0gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgbGV0IHByZXZfZGF0YSA9XG4gICAgICAgICAgbWF0Y2ggZmluZCBhY2N1bSBrZXkgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5pdFxuICAgICAgICAgIHwgU29tZSBwcmV2IC0+IHByZXZcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGRhdGEgPSBmIHByZXZfZGF0YSBkYXRhIGluXG4gICAgICAgIChzZXQgYWNjdW0gfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB8PiBnbG9iYWxpemUpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgOztcblxuICBtb2R1bGUgT2ZfZm9sZGFibGUgKE0gOiBGb2xkYWJsZSkgPSBzdHJ1Y3RcbiAgICBsZXQgb2ZfZm9sZGFibGVfZm9sZCBmb2xkYWJsZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgICAgb2ZfZm9sZGFibGUnIH5mb2xkOk0uZm9sZCBmb2xkYWJsZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXlcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX3JlZHVjZSBmb2xkYWJsZSB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgICAgTS5mb2xkXG4gICAgICAgIGZvbGRhYmxlXG4gICAgICAgIH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMClcbiAgICAgICAgfmY6KGZ1biB7IHRyZWUgPSBhY2N1bTsgbGVuZ3RoIH0gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICBsZXQgbmV3X2RhdGEgPVxuICAgICAgICAgICAgbWF0Y2ggZmluZCBhY2N1bSBrZXkgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhXG4gICAgICAgICAgICB8IFNvbWUgcHJldiAtPiBmIHByZXYgZGF0YVxuICAgICAgICAgIGluXG4gICAgICAgICAgKHNldCBhY2N1bSB+bGVuZ3RoIH5rZXkgfmRhdGE6bmV3X2RhdGEgfmNvbXBhcmVfa2V5IHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXG4gICAgICBdXG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXkgPVxuICAgICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICAgIGxldCBtYXAgPVxuICAgICAgICAgIE0uZm9sZFxuICAgICAgICAgICAgZm9sZGFibGVcbiAgICAgICAgICAgIH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMClcbiAgICAgICAgICAgIH5mOihmdW4geyB0cmVlID0gdDsgbGVuZ3RoIH0gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgICAgbGV0ICh7IHRyZWUgPSBfOyBsZW5ndGggPSBsZW5ndGgnIH0gYXMgYWNjKSA9XG4gICAgICAgICAgICAgICAgc2V0IH5sZW5ndGggfmtleSB+ZGF0YSB0IH5jb21wYXJlX2tleVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBpZiBsZW5ndGggPSBsZW5ndGgnXG4gICAgICAgICAgICAgIHRoZW4gci5yZXR1cm4gKGBEdXBsaWNhdGVfa2V5IGtleSlcbiAgICAgICAgICAgICAgZWxzZSBnbG9iYWxpemUgYWNjIFtAbm9udGFpbF0pXG4gICAgICAgIGluXG4gICAgICAgIGBPayBtYXApXG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZV9vcl9lcnJvciBmb2xkYWJsZSB+Y29tcGFyYXRvciA9XG4gICAgICBtYXRjaCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgICAgfCBgT2sgeCAtPiBSZXN1bHQuT2sgeFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAoXCJNYXAub2ZfXCIgXiBNLm5hbWUgXiBcIl9vcl9lcnJvcjogZHVwbGljYXRlIGtleVwiKVxuICAgICAgICAgIGtleVxuICAgICAgICAgIGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZV9leG4gZm9sZGFibGUgfmNvbXBhcmF0b3IgPVxuICAgICAgbWF0Y2ggb2ZfZm9sZGFibGUgZm9sZGFibGUgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICAgIHwgYE9rIHggLT4geFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgICAgRXJyb3IuY3JlYXRlIChcIk1hcC5vZl9cIiBeIE0ubmFtZSBeIFwiX2V4bjogZHVwbGljYXRlIGtleVwiKSBrZXkgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICAgICAgfD4gRXJyb3IucmFpc2VcbiAgICA7O1xuXG4gICAgKCogUmV2ZXJzZSB0aGUgaW5wdXQsIHRoZW4gZm9sZCBmcm9tIGxlZnQgdG8gcmlnaHQuIFRoZSByZXN1bHRpbmcgbWFwIHVzZXMgdGhlIGZpcnN0XG4gICAgICAgaW5zdGFuY2Ugb2YgZWFjaCBrZXkgZnJvbSB0aGUgaW5wdXQgbGlzdC4gVGhlIHJlbGF0aXZlIG9yZGVyaW5nIG9mIGVsZW1lbnRzIGluIGVhY2hcbiAgICAgICBvdXRwdXQgbGlzdCBpcyB0aGUgc2FtZSBhcyBpbiB0aGUgaW5wdXQgbGlzdC4gKilcbiAgICBsZXQgb2ZfZm9sZGFibGVfbXVsdGkgZm9sZGFibGUgfmNvbXBhcmVfa2V5ID1cbiAgICAgIGxldCBhbGlzdCA9IE0uZm9sZCBmb2xkYWJsZSB+aW5pdDpbXSB+ZjooZnVuIGwgeCAtPiB4IDo6IGwpIGluXG4gICAgICBvZl9mb2xkYWJsZScgYWxpc3QgfmZvbGQ6TGlzdC5mb2xkIH5pbml0OltdIH5mOihmdW4gbCB4IC0+IHggOjogbCkgfmNvbXBhcmVfa2V5XG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2FsaXN0ID0gT2ZfZm9sZGFibGUgKHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBcImFsaXN0XCJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICBsZXQgZm9sZCA9IExpc3QuZm9sZFxuICAgIGVuZClcblxuICBsZXQgb2ZfYWxpc3RfZm9sZCA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX2ZvbGRcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX3JlZHVjZVxuICBsZXQgb2ZfYWxpc3QgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZVxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9vcl9lcnJvclxuICBsZXQgb2ZfYWxpc3RfZXhuID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfZXhuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX211bHRpXG5cbiAgbW9kdWxlIE9mX3NlcXVlbmNlID0gT2ZfZm9sZGFibGUgKHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBcInNlcXVlbmNlXCJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgU2VxdWVuY2UudFxuXG4gICAgICBsZXQgZm9sZCA9IFNlcXVlbmNlLmZvbGRcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9mb2xkXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9yZWR1Y2VcbiAgbGV0IG9mX3NlcXVlbmNlID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfb3JfZXJyb3JcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX2V4blxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9tdWx0aVxuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5IGxpc3QgfmdldF9rZXkgfmNvbXBhcmVfa2V5ID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGxldCBtYXAgPVxuICAgICAgICBMaXN0LmZvbGRcbiAgICAgICAgICBsaXN0XG4gICAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgICAgIH5mOihmdW4geyB0cmVlID0gdDsgbGVuZ3RoIH0gZGF0YSAtPlxuICAgICAgICAgICAgbGV0IGtleSA9IGdldF9rZXkgZGF0YSBpblxuICAgICAgICAgICAgbGV0ICh7IHRyZWUgPSBfOyBsZW5ndGggPSBuZXdfbGVuZ3RoIH0gYXMgYWNjKSA9XG4gICAgICAgICAgICAgIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgdCB+Y29tcGFyZV9rZXlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBsZW5ndGggPSBuZXdfbGVuZ3RoXG4gICAgICAgICAgICB0aGVuIHIucmV0dXJuIChgRHVwbGljYXRlX2tleSBrZXkpXG4gICAgICAgICAgICBlbHNlIGdsb2JhbGl6ZSBhY2MgW0Bub250YWlsXSlcbiAgICAgIGluXG4gICAgICBgT2sgbWFwKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvciA9XG4gICAgbWF0Y2ggb2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgeCAtPiBSZXN1bHQuT2sgeFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICBcIk1hcC5vZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAga2V5XG4gICAgICAgIGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIGxpc3QgfmdldF9rZXkgfmNvbXBhcmF0b3IgPVxuICAgIG1hdGNoIG9mX2xpc3Rfd2l0aF9rZXkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rIHggLT4geFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBFcnJvci5jcmVhdGUgXCJNYXAub2ZfbGlzdF93aXRoX2tleV9leG46IGR1cGxpY2F0ZSBrZXlcIiBrZXkgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICAgIHw+IEVycm9yLnJhaXNlXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBsaXN0ID0gTGlzdC5yZXYgbGlzdCBpblxuICAgIExpc3QuZm9sZCBsaXN0IH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMCkgfmY6KGZ1biB7IHRyZWUgPSB0OyBsZW5ndGggfSBkYXRhIC0+XG4gICAgICBsZXQga2V5ID0gZ2V0X2tleSBkYXRhIGluXG4gICAgICAodXBkYXRlIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5IH5mOihmdW4gb3B0aW9uIC0+XG4gICAgICAgICBsZXQgbGlzdCA9IE9wdGlvbi52YWx1ZSBvcHRpb24gfmRlZmF1bHQ6W10gaW5cbiAgICAgICAgIGRhdGEgOjogbGlzdClcbiAgICAgICB8PiBnbG9iYWxpemUpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZm9yX2FsbCB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXIgdCB+ZjooZnVuIGRhdGEgLT4gaWYgbm90IChmIGRhdGEpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgICAgdHJ1ZSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIG5vdCAoZiB+a2V5IH5kYXRhKSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICAgIHRydWUpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZXhpc3RzIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlciB0IH5mOihmdW4gZGF0YSAtPiBpZiBmIGRhdGEgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICAgIGZhbHNlKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGV4aXN0c2kgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICAgIGZhbHNlKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGNvdW50IHQgfmYgPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleTpfIH5kYXRhIGFjYyAtPiBpZiBmIGRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGNvdW50aSB0IH5mID1cbiAgICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpIFtAbm9udGFpbFxuICAgIF1cbiAgOztcblxuICBsZXQgdG9fYWxpc3QgPyhrZXlfb3JkZXIgPSBgSW5jcmVhc2luZykgdCA9XG4gICAgbWF0Y2gga2V5X29yZGVyIHdpdGhcbiAgICB8IGBJbmNyZWFzaW5nIC0+IGZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgeCAtPiAoa2V5LCBkYXRhKSA6OiB4KVxuICAgIHwgYERlY3JlYXNpbmcgLT4gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSB4IC0+IChrZXksIGRhdGEpIDo6IHgpXG4gIDs7XG5cbiAgbGV0IG1lcmdlIHQxIHQyIH5mIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGVsdHMgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuOihsZW5ndGggdDEgKyBsZW5ndGggdDIpIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGl0ZXIyIHQxIHQyIH5jb21wYXJlX2tleSB+ZjooZnVuIH5rZXkgfmRhdGE6dmFsdWVzIC0+XG4gICAgICBtYXRjaCBmIH5rZXkgdmFsdWVzIHdpdGhcbiAgICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgICBVbmlmb3JtX2FycmF5LnNldCBlbHRzICFpIChrZXksIHZhbHVlKTtcbiAgICAgICAgaW5jciBpXG4gICAgICB8IE5vbmUgLT4gKCkpO1xuICAgIGxldCBsZW4gPSAhaSBpblxuICAgIGxldCBnZXQgaSA9IFVuaWZvcm1fYXJyYXkuZ2V0IGVsdHMgaSBpblxuICAgIGxldCB0cmVlID0gb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZjpnZXQgaW5cbiAgICAgKHdpdGhfbGVuZ3RoIHRyZWUgbGVuKVxuICA7O1xuXG4gIGxldCBtZXJnZV9za2V3ZWQgPVxuICAgIGxldCBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGhfbGFyZ2UgdF9sYXJnZSB0X3NtYWxsIH5jYWxsIH5jb21iaW5lIH5jb21wYXJlX2tleSA9XG4gICAgICBmb2xkXG4gICAgICAgIHRfc21hbGxcbiAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCB0X2xhcmdlIGxlbmd0aF9sYXJnZSlcbiAgICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhOmRhdGEnIHsgdHJlZSA9IHQ7IGxlbmd0aCB9IC0+XG4gICAgICAgICAgKHVwZGF0ZSB0IGtleSB+bGVuZ3RoIH5jb21wYXJlX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE5vbmUgLT4gZGF0YSdcbiAgICAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBjYWxsIGNvbWJpbmUgfmtleSBkYXRhIGRhdGEnKVxuICAgICAgICAgICB8PiBnbG9iYWxpemUpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgICBpblxuICAgIGxldCBjYWxsIGYgfmtleSB4IHkgPSBmIH5rZXkgeCB5IGluXG4gICAgbGV0IHN3YXAgZiB+a2V5IHggeSA9IGYgfmtleSB5IHggaW5cbiAgICBmdW4gdDEgdDIgfmxlbmd0aDEgfmxlbmd0aDIgfmNvbWJpbmUgfmNvbXBhcmVfa2V5IC0+XG4gICAgICBpZiBsZW5ndGgyIDw9IGxlbmd0aDFcbiAgICAgIHRoZW4gbWVyZ2VfbGFyZ2VfZmlyc3QgbGVuZ3RoMSB0MSB0MiB+Y2FsbCB+Y29tYmluZSB+Y29tcGFyZV9rZXlcbiAgICAgIGVsc2UgbWVyZ2VfbGFyZ2VfZmlyc3QgbGVuZ3RoMiB0MiB0MSB+Y2FsbDpzd2FwIH5jb21iaW5lIH5jb21wYXJlX2tleVxuICA7O1xuXG4gIG1vZHVsZSBDbG9zZXN0X2tleV9pbXBsID0gc3RydWN0XG4gICAgKCogW21hcmtlcl0gYW5kIFtyZXBhY2thZ2VdIGFsbG93IHVzIHRvIGNyZWF0ZSBcImxvZ2ljYWxcIiBvcHRpb25zIHdpdGhvdXQgYWN0dWFsbHlcbiAgICAgICBhbGxvY2F0aW5nIGFueSBvcHRpb25zLiBQYXNzaW5nIFtGb3VuZCBrZXkgdmFsdWVdIHRvIGEgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0b1xuICAgICAgIHBhc3NpbmcgW1NvbWUgKGtleSwgdmFsdWUpXTsgcGFzc2luZyBbTWlzc2luZyAoKSAoKV0gaXMgZXF1aXZhbGVudCB0byBwYXNzaW5nXG4gICAgICAgW05vbmVdLiAqKVxuICAgIHR5cGUgKCdrLCAndiwgJ2tfb3B0LCAndl9vcHQpIG1hcmtlciA9XG4gICAgICB8IE1pc3NpbmcgOiAoJ2ssICd2LCB1bml0LCB1bml0KSBtYXJrZXJcbiAgICAgIHwgRm91bmQgOiAoJ2ssICd2LCAnaywgJ3YpIG1hcmtlclxuXG4gICAgbGV0IHJlcGFja2FnZVxuICAgICAgICAgICh0eXBlIGsgdiBrX29wdCB2X29wdClcbiAgICAgICAgICAobWFya2VyIDogKGssIHYsIGtfb3B0LCB2X29wdCkgbWFya2VyKVxuICAgICAgICAgIChrIDoga19vcHQpXG4gICAgICAgICAgKHYgOiB2X29wdClcbiAgICAgIDogKGsgKiB2KSBvcHRpb25cbiAgICAgID1cbiAgICAgIG1hdGNoIG1hcmtlciB3aXRoXG4gICAgICB8IE1pc3NpbmcgLT4gTm9uZVxuICAgICAgfCBGb3VuZCAtPiBTb21lIChrLCB2KVxuICAgIDs7XG5cbiAgICAoKiBUaGUgdHlwZSBzaWduYXR1cmUgaXMgZXhwbGljaXQgaGVyZSB0byBhbGxvdyBwb2x5bW9ycGhpYyByZWN1cnNpb24uICopXG4gICAgbGV0IHJlYyBsb29wIDpcbiAgICAgICdrICd2ICdrX29wdCAndl9vcHQuXG4gICAgICAoJ2ssICd2KSB0cmVlXG4gICAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgICAtPiAna1xuICAgICAgLT4gY29tcGFyZV9rZXk6KCdrIC0+ICdrIC0+IGludClcbiAgICAgIC0+ICgnaywgJ3YsICdrX29wdCwgJ3Zfb3B0KSBtYXJrZXJcbiAgICAgIC0+ICdrX29wdFxuICAgICAgLT4gJ3Zfb3B0XG4gICAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG4gICAgICA9XG4gICAgICBmdW4gdCBkaXIgayB+Y29tcGFyZV9rZXkgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSAtPlxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICB8IExlYWYgKGsnLCB2JykgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGsnIGsgaW5cbiAgICAgICAgICBpZiBtYXRjaCBkaXIgd2l0aFxuICAgICAgICAgICAgfCBgR3JlYXRlcl9vcl9lcXVhbF90byAtPiBjID49IDBcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfdGhhbiAtPiBjID4gMFxuICAgICAgICAgICAgfCBgTGVzc19vcl9lcXVhbF90byAtPiBjIDw9IDBcbiAgICAgICAgICAgIHwgYExlc3NfdGhhbiAtPiBjIDwgMFxuICAgICAgICAgIHRoZW4gU29tZSAoaycsIHYnKVxuICAgICAgICAgIGVsc2UgcmVwYWNrYWdlIGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWVcbiAgICAgICAgfCBOb2RlIChsLCBrJywgdicsIHIsIF8pIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrJyBrIGluXG4gICAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICgqIFRoaXMgaXMgYSBiYXNlIGNhc2UgKG5vIHJlY3Vyc2l2ZSBjYWxsKS4gKilcbiAgICAgICAgICAgIG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgICB8IGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYExlc3Nfb3JfZXF1YWxfdG8gLT4gU29tZSAoaycsIHYnKVxuICAgICAgICAgICAgfCBgR3JlYXRlcl90aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGlzX2VtcHR5IHIgdGhlbiByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSBlbHNlIG1pbl9lbHQgclxuICAgICAgICAgICAgfCBgTGVzc190aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGlzX2VtcHR5IGwgdGhlbiByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSBlbHNlIG1heF9lbHQgbClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICgqIFdlIGFyZSBndWFyYW50ZWVkIGhlcmUgdGhhdCBrJyA8PiBrLiAqKVxuICAgICAgICAgICAgKCogVGhpcyBpcyB0aGUgb25seSByZWN1cnNpdmUgY2FzZS4gKilcbiAgICAgICAgICAgIG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgICB8IGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiAtPlxuICAgICAgICAgICAgICBpZiBjID4gMFxuICAgICAgICAgICAgICB0aGVuIGxvb3AgbCBkaXIgayB+Y29tcGFyZV9rZXkgRm91bmQgaycgdidcbiAgICAgICAgICAgICAgZWxzZSBsb29wIHIgZGlyIGsgfmNvbXBhcmVfa2V5IGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWVcbiAgICAgICAgICAgIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGMgPCAwXG4gICAgICAgICAgICAgIHRoZW4gbG9vcCByIGRpciBrIH5jb21wYXJlX2tleSBGb3VuZCBrJyB2J1xuICAgICAgICAgICAgICBlbHNlIGxvb3AgbCBkaXIgayB+Y29tcGFyZV9rZXkgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGNsb3Nlc3Rfa2V5IHQgZGlyIGsgfmNvbXBhcmVfa2V5ID0gbG9vcCB0IGRpciBrIH5jb21wYXJlX2tleSBNaXNzaW5nICgpICgpXG4gIGVuZFxuXG4gIGxldCBjbG9zZXN0X2tleSA9IENsb3Nlc3Rfa2V5X2ltcGwuY2xvc2VzdF9rZXlcblxuICBsZXQgcmVjIHJhbmsgdCBrIH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrJywgXykgLT4gaWYgY29tcGFyZV9rZXkgaycgayA9IDAgdGhlbiBTb21lIDAgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCBrJywgXywgciwgXykgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgaycgayBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gU29tZSAobGVuZ3RoIGwpXG4gICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICB0aGVuIHJhbmsgbCBrIH5jb21wYXJlX2tleVxuICAgICAgZWxzZSBPcHRpb24ubWFwIChyYW5rIHIgayB+Y29tcGFyZV9rZXkpIH5mOihmdW4gcmFuayAtPiByYW5rICsgMSArIGxlbmd0aCBsKVxuICA7O1xuXG4gICgqIHRoaXMgY291bGQgYmUgaW1wbGVtZW50ZWQgdXNpbmcgW1NlcXVlbmNlXSBpbnRlcmZhY2UgYnV0IHRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb25cbiAgICAgYWxsb2NhdGVzIG9ubHkgMiB3b3JkcyBhbmQgZG9lc24ndCByZXF1aXJlIHdyaXRlLWJhcnJpZXIgKilcbiAgbGV0IHJlYyBudGgnIG51bV90b19zZWFyY2ggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgdikgLT5cbiAgICAgIGlmICFudW1fdG9fc2VhcmNoID0gMFxuICAgICAgdGhlbiBTb21lIChrLCB2KVxuICAgICAgZWxzZSAoXG4gICAgICAgIGRlY3IgbnVtX3RvX3NlYXJjaDtcbiAgICAgICAgTm9uZSlcbiAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pIC0+XG4gICAgICAobWF0Y2ggbnRoJyBudW1fdG9fc2VhcmNoIGwgd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gc29tZVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgaWYgIW51bV90b19zZWFyY2ggPSAwXG4gICAgICAgICB0aGVuIFNvbWUgKGssIHYpXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgZGVjciBudW1fdG9fc2VhcmNoO1xuICAgICAgICAgICBudGgnIG51bV90b19zZWFyY2ggcikpXG4gIDs7XG5cbiAgbGV0IG50aCB0IG4gPSBudGgnIChyZWYgbikgdFxuXG5cbiAgbGV0IHJlYyBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPiBpZiBmIH5rZXk6ayB+ZGF0YTp2IHRoZW4gU29tZSAoaywgdikgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSAtPlxuICAgICAgaWYgZiB+a2V5OmsgfmRhdGE6dlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyBsIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgKGssIHYpXG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHIgfmZcbiAgOztcblxuICBsZXQgcmVjIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgdikgLT4gaWYgZiB+a2V5OmsgfmRhdGE6diB0aGVuIFNvbWUgKGssIHYpIGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgaywgdiwgciwgXykgLT5cbiAgICAgIGlmIGYgfmtleTprIH5kYXRhOnZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyByIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgKGssIHYpXG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9sYXN0X3NhdGlzZnlpbmcgbCB+ZlxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gLT5cbiAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2IDwgMCkgW0Bub250YWlsXVxuICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA8PSAwKSBbQG5vbnRhaWxdXG4gICAgfCBgRmlyc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPj0gMCkgd2l0aFxuICAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSBhcyBwYWlyIHdoZW4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPSAwIC0+IHBhaXJcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBMYXN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPD0gMCkgd2l0aFxuICAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSBhcyBwYWlyIHdoZW4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPSAwIC0+IHBhaXJcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+PSAwKSBbQG5vbnRhaWxdXG4gICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPiAwKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBsZXQgaXNfbGVmdCB+a2V5IH5kYXRhID1cbiAgICAgIG1hdGNoIHNlZ21lbnRfb2YgfmtleSB+ZGF0YSB3aXRoXG4gICAgICB8IGBMZWZ0IC0+IHRydWVcbiAgICAgIHwgYFJpZ2h0IC0+IGZhbHNlXG4gICAgaW5cbiAgICBsZXQgaXNfcmlnaHQgfmtleSB+ZGF0YSA9IG5vdCAoaXNfbGVmdCB+a2V5IH5kYXRhKSBpblxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9vbl9sZWZ0IC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfbGVmdCBbQG5vbnRhaWxdXG4gICAgfCBgRmlyc3Rfb25fcmlnaHQgLT4gZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfcmlnaHQgW0Bub250YWlsXVxuICA7O1xuXG4gICgqIFtiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZF0gZmluZHMgdGhlIGtleSBpbiBbdF0gd2hpY2ggc2F0aXNmaWVzIFttYXliZV9ib3VuZF1cbiAgICAgYW5kIHRoZSByZWxldmFudCBvbmUgb2YgW2lmX2V4Y2x1c2l2ZV0gb3IgW2lmX2luY2x1c2l2ZV0sIGFzIGp1ZGdlZCBieSBbY29tcGFyZV0uICopXG4gIGxldCBiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZCB0IG1heWJlX2JvdW5kIH5jb21wYXJlIH5pZl9leGNsdXNpdmUgfmlmX2luY2x1c2l2ZSA9XG4gICAgbGV0IGZpbmRfYm91bmQgdCBob3cgYm91bmQgfmNvbXBhcmUgOiBfIE1heWJlX2JvdW5kLnQgb3B0aW9uID1cbiAgICAgIG1hdGNoIGJpbmFyeV9zZWFyY2ggdCBob3cgYm91bmQgfmNvbXBhcmUgd2l0aFxuICAgICAgfCBTb21lIChib3VuZCwgXykgLT4gU29tZSAoSW5jbCBib3VuZClcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgaW5cbiAgICBtYXRjaCAobWF5YmVfYm91bmQgOiBfIE1heWJlX2JvdW5kLnQpIHdpdGhcbiAgICB8IEV4Y2wgYm91bmQgLT4gZmluZF9ib3VuZCB0IGlmX2V4Y2x1c2l2ZSBib3VuZCB+Y29tcGFyZVxuICAgIHwgSW5jbCBib3VuZCAtPiBmaW5kX2JvdW5kIHQgaWZfaW5jbHVzaXZlIGJvdW5kIH5jb21wYXJlXG4gICAgfCBVbmJvdW5kZWQgLT4gU29tZSBVbmJvdW5kZWRcbiAgOztcblxuICAoKiBbYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzXSBmaW5kcyB0aGUgKG5vdCBuZWNlc3NhcmlseSBkaXN0aW5jdCkga2V5cyBpbiBbdF1cbiAgICAgd2hpY2ggbW9zdCBjbG9zZWx5IGFwcHJvYWNoIChidXQgZG8gbm90IGNyb3NzKSBbbG93ZXJfYm91bmRdIGFuZCBbdXBwZXJfYm91bmRdLCBhc1xuICAgICBqdWRnZWQgYnkgW2NvbXBhcmVdLiBJdCByZXR1cm5zIFtOb25lXSBpZiBubyBrZXlzIGluIFt0XSBhcmUgd2l0aGluIHRoYXQgcmFuZ2UuICopXG4gIGxldCBiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgZmluZF9sb3dlcl9ib3VuZCB0IG1heWJlX2JvdW5kIH5jb21wYXJlID1cbiAgICAgIGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXG4gICAgICAgIHRcbiAgICAgICAgbWF5YmVfYm91bmRcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAgfmlmX2V4Y2x1c2l2ZTpgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuXG4gICAgICAgIH5pZl9pbmNsdXNpdmU6YEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90b1xuICAgIGluXG4gICAgbGV0IGZpbmRfdXBwZXJfYm91bmQgdCBtYXliZV9ib3VuZCB+Y29tcGFyZSA9XG4gICAgICBiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZFxuICAgICAgICB0XG4gICAgICAgIG1heWJlX2JvdW5kXG4gICAgICAgIH5jb21wYXJlXG4gICAgICAgIH5pZl9leGNsdXNpdmU6YExhc3Rfc3RyaWN0bHlfbGVzc190aGFuXG4gICAgICAgIH5pZl9pbmNsdXNpdmU6YExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvXG4gICAgaW5cbiAgICBtYXRjaCBmaW5kX2xvd2VyX2JvdW5kIHQgbG93ZXJfYm91bmQgfmNvbXBhcmUgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGxvd2VyX2JvdW5kIC0+XG4gICAgICAobWF0Y2ggZmluZF91cHBlcl9ib3VuZCB0IHVwcGVyX2JvdW5kIH5jb21wYXJlIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgIHwgU29tZSB1cHBlcl9ib3VuZCAtPiBTb21lIChsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpKVxuICA7O1xuXG5cbiAgdHlwZSAoJ2ssICd2KSBhY2MgPVxuICAgIHsgbXV0YWJsZSBiYWRfa2V5IDogJ2sgb3B0aW9uXG4gICAgOyBtdXRhYmxlIG1hcF9sZW5ndGggOiAoJ2ssICd2KSB0IFdpdGhfbGVuZ3RoLnRcbiAgICB9XG5cbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBhY2MgPSB7IGJhZF9rZXkgPSBOb25lOyBtYXBfbGVuZ3RoID0gd2l0aF9sZW5ndGhfZ2xvYmFsIGVtcHR5IDAgfSBpblxuICAgIGl0ZXJpIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgbGV0IHsgdHJlZSA9IG1hcDsgbGVuZ3RoIH0gPSBhY2MubWFwX2xlbmd0aCBpblxuICAgICAgbGV0ICh7IHRyZWUgPSBfOyBsZW5ndGggPSBsZW5ndGgnIH0gYXMgcGFpcikgPVxuICAgICAgICBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIG1hcCB+Y29tcGFyZV9rZXlcbiAgICAgIGluXG4gICAgICBpZiBsZW5ndGggPSBsZW5ndGgnICYmIE9wdGlvbi5pc19ub25lIGFjYy5iYWRfa2V5XG4gICAgICB0aGVuIGFjYy5iYWRfa2V5IDwtIFNvbWUga2V5XG4gICAgICBlbHNlIGFjYy5tYXBfbGVuZ3RoIDwtIGdsb2JhbGl6ZSBwYWlyKTtcbiAgICBtYXRjaCBhY2MuYmFkX2tleSB3aXRoXG4gICAgfCBOb25lIC0+IGBPayBhY2MubWFwX2xlbmd0aFxuICAgIHwgU29tZSBrZXkgLT4gYER1cGxpY2F0ZV9rZXkga2V5XG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgfihjb21wYXJhdG9yIDogXyBDb21wYXJhdG9yLnQpID1cbiAgICBtYXRjaCBvZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIEVycm9yLmNyZWF0ZSBcIk1hcC5vZl9pdGVyaV9leG46IGR1cGxpY2F0ZSBrZXlcIiBrZXkgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICAgIHw+IEVycm9yLnJhaXNlXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3Qga2V5X29mX3NleHAgdmFsdWVfb2Zfc2V4cCBzZXhwIH4oY29tcGFyYXRvciA6IF8gQ29tcGFyYXRvci50KSA9XG4gICAgbGV0IGFsaXN0ID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAga2V5X29mX3NleHAgdmFsdWVfb2Zfc2V4cCkgc2V4cCBpblxuICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgIG1hdGNoIG9mX2FsaXN0IGFsaXN0IH5jb21wYXJlX2tleSB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRHVwbGljYXRlX2tleSBrIC0+XG4gICAgICAoKiBmaW5kIHRoZSBzZXhwIG9mIGEgZHVwbGljYXRlIGtleSwgc28gdGhlIGVycm9yIGlzIG5hcnJvd2VkIHRvIGEga2V5IGFuZCBub3RcbiAgICAgICAgIHRoZSB3aG9sZSBtYXAgKilcbiAgICAgIGxldCBhbGlzdF9zZXhwcyA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIEZuLmlkIEZuLmlkKSBzZXhwIGluXG4gICAgICBsZXQgZm91bmRfZmlyc3RfayA9IHJlZiBmYWxzZSBpblxuICAgICAgTGlzdC5pdGVyMl9vayBhbGlzdCBhbGlzdF9zZXhwcyB+ZjooZnVuIChrMiwgXykgKGsyX3NleHAsIF8pIC0+XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IGsgazIgPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiAhZm91bmRfZmlyc3Rfa1xuICAgICAgICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcIk1hcC50X29mX3NleHBfZGlyZWN0OiBkdXBsaWNhdGUga2V5XCIgazJfc2V4cFxuICAgICAgICAgIGVsc2UgZm91bmRfZmlyc3RfayA6PSB0cnVlKTtcbiAgICAgIGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl92YWx1ZSB0ID1cbiAgICBsZXQgZiB+a2V5IH5kYXRhIGFjYyA9IFNleHAuTGlzdCBbIHNleHBfb2Zfa2V5IGtleTsgc2V4cF9vZl92YWx1ZSBkYXRhIF0gOjogYWNjIGluXG4gICAgU2V4cC5MaXN0IChmb2xkX3JpZ2h0IH5mIHQgfmluaXQ6W10pXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIHQgfnNleHBfb2Zfa2V5ID1cbiAgICBsZXQgb2tzLCBlcnJvcnMgPSBwYXJ0aXRpb25fbWFwIHQgfmY6UmVzdWx0LnRvX2VpdGhlciBpblxuICAgIGlmIGlzX2VtcHR5IGVycm9yc1xuICAgIHRoZW4gT2sgb2tzXG4gICAgZWxzZSBPcl9lcnJvci5lcnJvcl9zIChzZXhwX29mX3Qgc2V4cF9vZl9rZXkgRXJyb3Iuc2V4cF9vZl90IGVycm9ycylcbiAgOztcblxuICBsZXQgbWFwX2tleXNcbiAgICAgICAgdDFcbiAgICAgICAgfmZcbiAgICAgICAgfmNvbXBhcmF0b3I6KHsgY29tcGFyZSA9IGNvbXBhcmVfa2V5OyBzZXhwX29mX3QgPSBzZXhwX29mX2tleSB9IDogXyBDb21wYXJhdG9yLnQpXG4gICAgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgYE9rXG4gICAgICAgIChmb2xkXG4gICAgICAgICAgIHQxXG4gICAgICAgICAgIH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMClcbiAgICAgICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhIHsgdHJlZSA9IHQyOyBsZW5ndGggfSAtPlxuICAgICAgICAgICAgIGxldCBrZXkgPSBmIGtleSBpblxuICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgYWRkX2V4bl9pbnRlcm5hbCB0MiB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB8PiBnbG9iYWxpemVcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBEdXBsaWNhdGUgLT4gcmV0dXJuIChgRHVwbGljYXRlX2tleSBrZXkpKSkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgfmNvbXBhcmF0b3IgPVxuICAgIG1hdGNoIG1hcF9rZXlzIHQgfmYgfmNvbXBhcmF0b3Igd2l0aFxuICAgIHwgYE9rIHJlc3VsdCAtPiByZXN1bHRcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgbGV0IHNleHBfb2Zfa2V5ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdCBpblxuICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiTWFwLm1hcF9rZXlzX2V4bjogZHVwbGljYXRlIGtleVwiIFsgXCJrZXlcIiwga2V5IHw+IHNleHBfb2Zfa2V5IF0pXG4gIDs7XG5cbiAgbGV0IHRyYW5zcG9zZV9rZXlzIH5vdXRlcl9jb21wYXJhdG9yIH5pbm5lcl9jb21wYXJhdG9yIG91dGVyX3QgPVxuICAgIGZvbGRcbiAgICAgIG91dGVyX3RcbiAgICAgIH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMClcbiAgICAgIH5mOihmdW4gfmtleTpvdXRlcl9rZXkgfmRhdGE6aW5uZXJfdCBhY2MgLT5cbiAgICAgICAgZm9sZFxuICAgICAgICAgIGlubmVyX3RcbiAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICB+ZjooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIHsgdHJlZSA9IGFjYzsgbGVuZ3RoID0gYWNjX2xlbiB9IC0+XG4gICAgICAgICAgICAodXBkYXRlXG4gICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgIGlubmVyX2tleVxuICAgICAgICAgICAgICAgfmxlbmd0aDphY2NfbGVuXG4gICAgICAgICAgICAgICB+Y29tcGFyZV9rZXk6aW5uZXJfY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gd2l0aF9sZW5ndGhfZ2xvYmFsIChzaW5nbGV0b24gb3V0ZXJfa2V5IGRhdGEpIDFcbiAgICAgICAgICAgICAgICAgfCBTb21lIHsgdHJlZSA9IGVsdDsgbGVuZ3RoID0gZWx0X2xlbiB9IC0+XG4gICAgICAgICAgICAgICAgICAgKHNldFxuICAgICAgICAgICAgICAgICAgICAgIGVsdFxuICAgICAgICAgICAgICAgICAgICAgIH5rZXk6b3V0ZXJfa2V5XG4gICAgICAgICAgICAgICAgICAgICAgfmRhdGFcbiAgICAgICAgICAgICAgICAgICAgICB+bGVuZ3RoOmVsdF9sZW5cbiAgICAgICAgICAgICAgICAgICAgICB+Y29tcGFyZV9rZXk6b3V0ZXJfY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgICAgICAgICAgICAgfD4gZ2xvYmFsaXplKSBbQG5vbnRhaWxdKVxuICAgICAgICAgICAgIHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkpXG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpID0gc3RydWN0XG4gICAgbGV0IHJlYyBtYXBpIHQgfmYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IEEucmV0dXJuIEVtcHR5XG4gICAgICB8IExlYWYgKHYsIGQpIC0+IEEubWFwIChmIH5rZXk6diB+ZGF0YTpkKSB+ZjooZnVuIG5ld19kYXRhIC0+IExlYWYgKHYsIG5ld19kYXRhKSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgICAgbGV0IGwnID0gQS5vZl90aHVuayAoZnVuICgpIC0+IG1hcGkgfmYgbCkgaW5cbiAgICAgICAgbGV0IGQnID0gZiB+a2V5OnYgfmRhdGE6ZCBpblxuICAgICAgICBsZXQgcicgPSBBLm9mX3RodW5rIChmdW4gKCkgLT4gbWFwaSB+ZiByKSBpblxuICAgICAgICBBLm1hcDMgbCcgZCcgcicgfmY6KGZ1biBsJyBkJyByJyAtPiBOb2RlIChsJywgdiwgZCcsIHInLCBoKSlcbiAgICA7O1xuXG4gICAgKCogSW4gdGhlb3J5IHRoZSBjb21wdXRhdGlvbiBvZiBsZW5ndGggb24tdGhlLWZseSBpcyBub3QgbmVjZXNzYXJ5IGhlcmUgYmVjYXVzZSBpdCBjYW5cbiAgICAgICBiZSBkb25lIGJ5IHdyYXBwaW5nIHRoZSBhcHBsaWNhdGl2ZSBbQV0gd2l0aCBsZW5ndGgtY29tcHV0aW5nIGxvZ2ljLiBIb3dldmVyLFxuICAgICAgIGludHJvZHVjaW5nIGFuIGFwcGxpY2F0aXZlIHRyYW5zZm9ybWVyIGxpa2UgdGhhdCBtYWtlcyB0aGUgbWFwIGJlbmNobWFya3MgaW5cbiAgICAgICBhc3luY19rZXJuZWwvYmVuY2gvc3JjL2JlbmNoX2RlZmVycmVkX21hcC5tbCBub3RpY2VhYmx5IHNsb3dlci4gKilcbiAgICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gICAgICBsZXQgcmVjIHRyZWVfZmlsdGVyX21hcGkgdCB+ZiA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IEEucmV0dXJuICh3aXRoX2xlbmd0aF9nbG9iYWwgRW1wdHkgMClcbiAgICAgICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgICAgIEEubWFwIChmIH5rZXk6diB+ZGF0YTpkKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgU29tZSBuZXdfZGF0YSAtPiB3aXRoX2xlbmd0aF9nbG9iYWwgKExlYWYgKHYsIG5ld19kYXRhKSkgMVxuICAgICAgICAgICAgfCBOb25lIC0+IHdpdGhfbGVuZ3RoX2dsb2JhbCBFbXB0eSAwKVxuICAgICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgICAgQS5tYXAzXG4gICAgICAgICAgICAoQS5vZl90aHVuayAoZnVuICgpIC0+IHRyZWVfZmlsdGVyX21hcGkgbCB+ZikpXG4gICAgICAgICAgICAoZiB+a2V5OnYgfmRhdGE6ZClcbiAgICAgICAgICAgIChBLm9mX3RodW5rIChmdW4gKCkgLT4gdHJlZV9maWx0ZXJfbWFwaSByIH5mKSlcbiAgICAgICAgICAgIH5mOlxuICAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAgeyB0cmVlID0gbCc7IGxlbmd0aCA9IGxfbGVuIH0gbmV3X2RhdGEgeyB0cmVlID0gcic7IGxlbmd0aCA9IHJfbGVuIH0gLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBuZXdfZGF0YSB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIG5ld19kYXRhIC0+XG4gICAgICAgICAgICAgICAgICB3aXRoX2xlbmd0aF9nbG9iYWwgKGpvaW4gbCcgdiBuZXdfZGF0YSByJykgKGxfbGVuICsgcl9sZW4gKyAxKVxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgd2l0aF9sZW5ndGhfZ2xvYmFsIChjb25jYXRfYW5kX2JhbGFuY2VfdW5jaGVja2VkIGwnIHInKSAobF9sZW4gKyByX2xlbikpXG4gICAgICBpblxuICAgICAgdHJlZV9maWx0ZXJfbWFwaSB0IH5mXG4gICAgOztcbiAgZW5kXG5lbmRcblxudHlwZSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdCA9XG4gIHsgKCogW2NvbXBhcmF0b3JdIGlzIHRoZSBmaXJzdCBmaWVsZCBzbyB0aGF0IHBvbHltb3JwaGljIGVxdWFsaXR5IGZhaWxzIG9uIGEgbWFwIGR1ZVxuICAgICAgIHRvIHRoZSBmdW5jdGlvbmFsIHZhbHVlIGluIHRoZSBjb21wYXJhdG9yLlxuICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFmZmVjdCBwb2x5bW9ycGhpYyBbY29tcGFyZV06IHRoYXQgc3RpbGwgcHJvZHVjZXNcbiAgICAgICBub25zZW5zZS4gKilcbiAgICBjb21wYXJhdG9yIDogKCdrLCAnY29tcGFyYXRvcikgQ29tcGFyYXRvci50XG4gIDsgdHJlZSA6ICgnaywgJ3YpIFRyZWUwLnRcbiAgOyBsZW5ndGggOiBpbnRcbiAgfVxuXG50eXBlICgnaywgJ3YsICdjb21wYXJhdG9yKSB0cmVlID0gKCdrLCAndikgVHJlZTAudFxuXG5sZXQgY29tcGFyZV9rZXkgdCA9IHQuY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuXG5sZXQgbGlrZSB7IHRyZWUgPSBfOyBsZW5ndGggPSBfOyBjb21wYXJhdG9yIH0gKHsgdHJlZTsgbGVuZ3RoIH0gOiBfIFdpdGhfbGVuZ3RoLnQpID1cbiAgeyB0cmVlOyBsZW5ndGg7IGNvbXBhcmF0b3IgfVxuOztcblxubGV0IGxpa2VfbWF5YmVfbm9fb3BcbiAgICAgICh7IHRyZWUgPSBvbGRfdHJlZTsgbGVuZ3RoID0gXzsgY29tcGFyYXRvciB9IGFzIG9sZF90KVxuICAgICAgKHsgdHJlZTsgbGVuZ3RoIH0gOiBfIFdpdGhfbGVuZ3RoLnQpXG4gID1cbiAgaWYgcGh5c19lcXVhbCBvbGRfdHJlZSB0cmVlIHRoZW4gb2xkX3QgZWxzZSB7IHRyZWU7IGxlbmd0aDsgY29tcGFyYXRvciB9XG47O1xuXG5sZXQgd2l0aF9zYW1lX2xlbmd0aCB7IHRyZWUgPSBfOyBjb21wYXJhdG9yOyBsZW5ndGggfSB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggfVxubGV0IG9mX2xpa2VfdHJlZSB0IHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3I7IGxlbmd0aCA9IFRyZWUwLmxlbmd0aCB0cmVlIH1cblxubGV0IG9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCB0IHRyZWUgPVxuICBpZiBwaHlzX2VxdWFsIHQudHJlZSB0cmVlXG4gIHRoZW4gdFxuICBlbHNlIHsgdHJlZTsgY29tcGFyYXRvciA9IHQuY29tcGFyYXRvcjsgbGVuZ3RoID0gVHJlZTAubGVuZ3RoIHRyZWUgfVxuOztcblxubGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoID0gVHJlZTAubGVuZ3RoIHRyZWUgfVxuXG4oKiBFeHBvc2luZyB0aGlzIGZ1bmN0aW9uIHdvdWxkIG1ha2UgaXQgdmVyeSBlYXN5IGZvciB0aGUgaW52YXJpYW50c1xuICAgb2YgdGhpcyBtb2R1bGUgdG8gYmUgYnJva2VuLiAqKVxubGV0IG9mX3RyZWVfdW5zYWZlIH5jb21wYXJhdG9yIH5sZW5ndGggdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoIH1cblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciB0ID0gdC5jb21wYXJhdG9yXG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcblxuICBsZXQgaW52YXJpYW50cyB0ID1cbiAgICBUcmVlMC5pbnZhcmlhbnRzIHQudHJlZSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpICYmIFRyZWUwLmxlbmd0aCB0LnRyZWUgPSB0Lmxlbmd0aFxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdC50cmVlXG4gIGxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5cbiAgbGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5zZXQgdC50cmVlIH5sZW5ndGg6dC5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICAgIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5hZGRfZXhuXG4gICAgICAgICB0LnRyZWVcbiAgICAgICAgIH5sZW5ndGg6dC5sZW5ndGhcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdCkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBhZGRfZXhuX2ludGVybmFsIHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmFkZF9leG5faW50ZXJuYWxcbiAgICAgICAgIHQudHJlZVxuICAgICAgICAgfmxlbmd0aDp0Lmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90KSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGFkZCB0IH5rZXkgfmRhdGEgPVxuICAgIG1hdGNoIGFkZF9leG5faW50ZXJuYWwgdCB+a2V5IH5kYXRhIHdpdGhcbiAgICB8IHJlc3VsdCAtPiBgT2sgcmVzdWx0XG4gICAgfCBleGNlcHRpb24gRHVwbGljYXRlIC0+IGBEdXBsaWNhdGVcbiAgOztcblxuICBsZXQgYWRkX211bHRpIHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmFkZF9tdWx0aSB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCByZW1vdmVfbXVsdGkgdCBrZXkgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5yZW1vdmVfbXVsdGkgdC50cmVlIH5sZW5ndGg6dC5sZW5ndGgga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIHQga2V5ID0gVHJlZTAuZmluZF9tdWx0aSB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcblxuICBsZXQgY2hhbmdlIHQga2V5IH5mID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuY2hhbmdlIHQudHJlZSBrZXkgfmYgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICAgIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgdXBkYXRlIHQga2V5IH5mID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAudXBkYXRlIHQudHJlZSBrZXkgfmYgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICAgIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmluZF9leG4gdCBrZXkgPVxuICAgIFRyZWUwLmZpbmRfZXhuXG4gICAgICB0LnRyZWVcbiAgICAgIGtleVxuICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgZmluZCB0IGtleSA9IFRyZWUwLmZpbmQgdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG5cbiAgbGV0IHJlbW92ZSB0IGtleSA9XG4gICAgbGlrZV9tYXliZV9ub19vcFxuICAgICAgdFxuICAgICAgKFRyZWUwLnJlbW92ZSB0LnRyZWUga2V5IH5sZW5ndGg6dC5sZW5ndGggfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBtZW0gdCBrZXkgPSBUcmVlMC5tZW0gdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIGxldCBpdGVyX2tleXMgdCB+ZiA9IFRyZWUwLml0ZXJfa2V5cyB0LnRyZWUgfmZcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdC50cmVlIH5mXG4gIGxldCBpdGVyaSB0IH5mID0gVHJlZTAuaXRlcmkgdC50cmVlIH5mXG4gIGxldCBpdGVyaV91bnRpbCB0IH5mID0gVHJlZTAuaXRlcmlfdW50aWwgdC50cmVlIH5mXG4gIGxldCBpdGVyMiB0MSB0MiB+ZiA9IFRyZWUwLml0ZXIyIHQxLnRyZWUgdDIudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICBsZXQgbWFwIHQgfmYgPSB3aXRoX3NhbWVfbGVuZ3RoIHQgKFRyZWUwLm1hcCB0LnRyZWUgfmYpXG4gIGxldCBtYXBpIHQgfmYgPSB3aXRoX3NhbWVfbGVuZ3RoIHQgKFRyZWUwLm1hcGkgdC50cmVlIH5mKVxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0LnRyZWUgfmYgfmluaXRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gVHJlZTAuZm9sZF91bnRpbCB0LnRyZWUgfmluaXQgfmYgfmZpbmlzaFxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0LnRyZWUgfmYgfmluaXRcblxuICBsZXQgZm9sZDIgdDEgdDIgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGQyIHQxLnRyZWUgdDIudHJlZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfa2V5cyB0IH5mID1cbiAgICBsZXQgbGVuID0gIChyZWYgdC5sZW5ndGgpIGluXG4gICAgbGV0IHRyZWUgPSBUcmVlMC5maWx0ZXJfa2V5cyB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2VfbWF5YmVfbm9fb3AgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlciB0IH5mID1cbiAgICBsZXQgbGVuID0gIChyZWYgdC5sZW5ndGgpIGluXG4gICAgbGV0IHRyZWUgPSBUcmVlMC5maWx0ZXIgdC50cmVlIH5mIH5sZW4gaW5cbiAgICBsaWtlX21heWJlX25vX29wIHQgKHdpdGhfbGVuZ3RoIHRyZWUgIWxlbikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaWx0ZXJpIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlcmkgdC50cmVlIH5mIH5sZW4gaW5cbiAgICBsaWtlX21heWJlX25vX29wIHQgKHdpdGhfbGVuZ3RoIHRyZWUgIWxlbikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlcl9tYXAgdC50cmVlIH5mIH5sZW4gaW5cbiAgICBsaWtlIHQgKHdpdGhfbGVuZ3RoIHRyZWUgIWxlbikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgICBsZXQgbGVuID0gIChyZWYgdC5sZW5ndGgpIGluXG4gICAgbGV0IHRyZWUgPSBUcmVlMC5maWx0ZXJfbWFwaSB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2UgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG9mX2xpa2VfdHJlZTIgdCAodDEsIHQyKSA9IG9mX2xpa2VfdHJlZSB0IHQxLCBvZl9saWtlX3RyZWUgdCB0MlxuXG4gIGxldCBvZl9saWtlX3RyZWUyX21heWJlX25vX29wIHQgKHQxLCB0MikgPVxuICAgIG9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCB0IHQxLCBvZl9saWtlX3RyZWVfbWF5YmVfbm9fb3AgdCB0MlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID0gb2ZfbGlrZV90cmVlMiB0IChUcmVlMC5wYXJ0aXRpb25fbWFwaSB0LnRyZWUgfmYpXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBvZl9saWtlX3RyZWUyIHQgKFRyZWUwLnBhcnRpdGlvbl9tYXAgdC50cmVlIH5mKVxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID0gb2ZfbGlrZV90cmVlMl9tYXliZV9ub19vcCB0IChUcmVlMC5wYXJ0aXRpb25pX3RmIHQudHJlZSB+ZilcbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gb2ZfbGlrZV90cmVlMl9tYXliZV9ub19vcCB0IChUcmVlMC5wYXJ0aXRpb25fdGYgdC50cmVlIH5mKVxuXG4gIGxldCBjb21iaW5lX2Vycm9ycyB0ID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOihvZl9saWtlX3RyZWUgdClcbiAgICAgIChUcmVlMC5jb21iaW5lX2Vycm9ycyB0LnRyZWUgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgVHJlZTAuY29tcGFyZSAoY29tcGFyZV9rZXkgdDEpIGNvbXBhcmVfZGF0YSB0MS50cmVlIHQyLnRyZWVcbiAgOztcblxuICBsZXQgZXF1YWwgY29tcGFyZV9kYXRhIHQxIHQyID0gVHJlZTAuZXF1YWwgKGNvbXBhcmVfa2V5IHQxKSBjb21wYXJlX2RhdGEgdDEudHJlZSB0Mi50cmVlXG4gIGxldCBrZXlzIHQgPSBUcmVlMC5rZXlzIHQudHJlZVxuICBsZXQgZGF0YSB0ID0gVHJlZTAuZGF0YSB0LnRyZWVcbiAgbGV0IHRvX2FsaXN0ID9rZXlfb3JkZXIgdCA9IFRyZWUwLnRvX2FsaXN0ID9rZXlfb3JkZXIgdC50cmVlXG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSkgfmRhdGFfZXF1YWxcbiAgOztcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgdDEudHJlZVxuICAgICAgdDIudHJlZVxuICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSlcbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgOztcblxuICBsZXQgbWVyZ2UgdDEgdDIgfmYgPVxuICAgIGxpa2UgdDEgKFRyZWUwLm1lcmdlIHQxLnRyZWUgdDIudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBtZXJnZV9za2V3ZWQgdDEgdDIgfmNvbWJpbmUgPVxuICAgICgqIFRoaXMgaXMgb25seSBhIG5vLW9wIGluIHRoZSBjYXNlIHdoZXJlIGF0IGxlYXN0IG9uZSBvZiB0aGUgbWFwcyBpcyBlbXB0eS4gKilcbiAgICBsaWtlX21heWJlX25vX29wXG4gICAgICAoaWYgdDIubGVuZ3RoIDw9IHQxLmxlbmd0aCB0aGVuIHQxIGVsc2UgdDIpXG4gICAgICAoVHJlZTAubWVyZ2Vfc2tld2VkXG4gICAgICAgICB0MS50cmVlXG4gICAgICAgICB0Mi50cmVlXG4gICAgICAgICB+bGVuZ3RoMTp0MS5sZW5ndGhcbiAgICAgICAgIH5sZW5ndGgyOnQyLmxlbmd0aFxuICAgICAgICAgfmNvbWJpbmVcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpKVxuICA7O1xuXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHQudHJlZVxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHQudHJlZVxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0LnRyZWVcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0LnRyZWVcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdC50cmVlIH5mXG4gIGxldCBmb3JfYWxsaSB0IH5mID0gVHJlZTAuZm9yX2FsbGkgdC50cmVlIH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0LnRyZWUgfmZcbiAgbGV0IGV4aXN0c2kgdCB+ZiA9IFRyZWUwLmV4aXN0c2kgdC50cmVlIH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdC50cmVlIH5mXG4gIGxldCBjb3VudGkgdCB+ZiA9IFRyZWUwLmNvdW50aSB0LnRyZWUgfmZcblxuICBsZXQgc3BsaXQgdCBrID1cbiAgICBsZXQgbCwgbWF5YmUsIHIgPSBUcmVlMC5zcGxpdCB0LnRyZWUgayB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpIGluXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHQgaW5cbiAgICAoKiBUcnkgdG8gdHJhdmVyc2UgdGhlIGxlYXN0IGFtb3VudCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCxcbiAgICAgICB1c2luZyBoZWlnaHQgYXMgYSBoZXVyaXN0aWMuICopXG4gICAgbGV0IGJvdGhfbGVuID0gaWYgT3B0aW9uLmlzX3NvbWUgbWF5YmUgdGhlbiB0Lmxlbmd0aCAtIDEgZWxzZSB0Lmxlbmd0aCBpblxuICAgIGlmIFRyZWUwLmhlaWdodCBsIDwgVHJlZTAuaGVpZ2h0IHJcbiAgICB0aGVuIChcbiAgICAgIGxldCBsID0gb2ZfdHJlZSBsIH5jb21wYXJhdG9yIGluXG4gICAgICBsLCBtYXliZSwgb2ZfdHJlZV91bnNhZmUgciB+Y29tcGFyYXRvciB+bGVuZ3RoOihib3RoX2xlbiAtIGxlbmd0aCBsKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCByID0gb2ZfdHJlZSByIH5jb21wYXJhdG9yIGluXG4gICAgICBvZl90cmVlX3Vuc2FmZSBsIH5jb21wYXJhdG9yIH5sZW5ndGg6KGJvdGhfbGVuIC0gbGVuZ3RoIHIpLCBtYXliZSwgcilcbiAgOztcblxuICBsZXQgc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG8gayA9XG4gICAgbGV0IGwsIHIgPVxuICAgICAgVHJlZTAuc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQudHJlZSB+aW50byBrIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICBpblxuICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvciB0IGluXG4gICAgKCogVHJ5IHRvIHRyYXZlcnNlIHRoZSBsZWFzdCBhbW91bnQgcG9zc2libGUgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGgsXG4gICAgICAgdXNpbmcgaGVpZ2h0IGFzIGEgaGV1cmlzdGljLiAqKVxuICAgIGlmIFRyZWUwLmhlaWdodCBsIDwgVHJlZTAuaGVpZ2h0IHJcbiAgICB0aGVuIChcbiAgICAgIGxldCBsID0gb2ZfdHJlZSBsIH5jb21wYXJhdG9yIGluXG4gICAgICBsLCBvZl90cmVlX3Vuc2FmZSByIH5jb21wYXJhdG9yIH5sZW5ndGg6KHQubGVuZ3RoIC0gbGVuZ3RoIGwpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHIgPSBvZl90cmVlIHIgfmNvbXBhcmF0b3IgaW5cbiAgICAgIG9mX3RyZWVfdW5zYWZlIGwgfmNvbXBhcmF0b3Igfmxlbmd0aDoodC5sZW5ndGggLSBsZW5ndGggciksIHIpXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2xlX2d0IHQgayA9IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB0IH5pbnRvOmBMZWZ0IGtcbiAgbGV0IHNwbGl0X2x0X2dlIHQgayA9IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB0IH5pbnRvOmBSaWdodCBrXG5cbiAgbGV0IHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbGV0IGxlZnQsIG1pZCwgcmlnaHQgPVxuICAgICAgVHJlZTAuc3BsaXRfcmFuZ2UgdC50cmVlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgIGluXG4gICAgKCogVHJ5IHRvIHRyYXZlcnNlIHRoZSBsZWFzdCBhbW91bnQgcG9zc2libGUgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGgsXG4gICAgICAgdXNpbmcgaGVpZ2h0IGFzIGEgaGV1cmlzdGljLiAqKVxuICAgIGxldCBvdXRlcl9qb2luZWRfaGVpZ2h0ID1cbiAgICAgIGxldCBoX2wgPSBUcmVlMC5oZWlnaHQgbGVmdFxuICAgICAgYW5kIGhfciA9IFRyZWUwLmhlaWdodCByaWdodCBpblxuICAgICAgaWYgaF9sID0gaF9yIHRoZW4gaF9sICsgMSBlbHNlIG1heCBoX2wgaF9yXG4gICAgaW5cbiAgICBpZiBvdXRlcl9qb2luZWRfaGVpZ2h0IDwgVHJlZTAuaGVpZ2h0IG1pZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IG1pZF9sZW5ndGggPSB0Lmxlbmd0aCAtIChUcmVlMC5sZW5ndGggbGVmdCArIFRyZWUwLmxlbmd0aCByaWdodCkgaW5cbiAgICAgIG9mX3RyZWVfdW5zYWZlIG1pZCB+Y29tcGFyYXRvcjooY29tcGFyYXRvciB0KSB+bGVuZ3RoOm1pZF9sZW5ndGgpXG4gICAgZWxzZSBvZl90cmVlIG1pZCB+Y29tcGFyYXRvcjooY29tcGFyYXRvciB0KVxuICA7O1xuXG4gIGxldCBhcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgPVxuICAgIG1hdGNoXG4gICAgICBUcmVlMC5hcHBlbmRcbiAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSBsb3dlcl9wYXJ0KVxuICAgICAgICB+bG93ZXJfcGFydDpsb3dlcl9wYXJ0LnRyZWVcbiAgICAgICAgfnVwcGVyX3BhcnQ6dXBwZXJfcGFydC50cmVlXG4gICAgd2l0aFxuICAgIHwgYE9rIHRyZWUgLT5cbiAgICAgIGBPa1xuICAgICAgICAob2ZfdHJlZV91bnNhZmVcbiAgICAgICAgICAgdHJlZVxuICAgICAgICAgICB+Y29tcGFyYXRvcjooY29tcGFyYXRvciBsb3dlcl9wYXJ0KVxuICAgICAgICAgICB+bGVuZ3RoOihsb3dlcl9wYXJ0Lmxlbmd0aCArIHVwcGVyX3BhcnQubGVuZ3RoKSlcbiAgICB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIC0+IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3JhbmdlX2luY2x1c2l2ZSB0LnRyZWUgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggPVxuICAgIFRyZWUwLnJhbmdlX3RvX2FsaXN0IHQudHJlZSB+bWluIH5tYXggfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCBjbG9zZXN0X2tleSB0IGRpciBrZXkgPVxuICAgIFRyZWUwLmNsb3Nlc3Rfa2V5IHQudHJlZSBkaXIga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgOztcblxuICBsZXQgbnRoIHQgbiA9IFRyZWUwLm50aCB0LnRyZWUgblxuICBsZXQgbnRoX2V4biB0IG4gPSBPcHRpb24udmFsdWVfZXhuIChudGggdCBuKVxuICBsZXQgcmFuayB0IGtleSA9IFRyZWUwLnJhbmsgdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0LnRyZWVcblxuICBsZXQgdG9fc2VxdWVuY2UgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZVxuICAgICAgdC5jb21wYXJhdG9yXG4gICAgICA/b3JkZXJcbiAgICAgID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgIHQudHJlZVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQudHJlZSB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmVlIH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgdCA9XG4gICAgVHJlZTAuaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9rZXkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgdC50cmVlXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBtYXRjaFxuICAgICAgVHJlZTAuYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIHQudHJlZSB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gICAgd2l0aFxuICAgIHwgU29tZSAobG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kKSAtPiBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgICB8IE5vbmUgLT4gbGlrZV9tYXliZV9ub19vcCB0ICh3aXRoX2xlbmd0aCBUcmVlMC5FbXB0eSAwKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpID0gc3RydWN0XG4gICAgbW9kdWxlIFRyZWVfdHJhdmVyc2FscyA9IFRyZWUwLk1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSlcblxuICAgIGxldCBtYXBpIHQgfmYgPVxuICAgICAgQS5tYXAgKFRyZWVfdHJhdmVyc2Fscy5tYXBpIHQudHJlZSB+ZikgfmY6KGZ1biBuZXdfdHJlZSAtPlxuICAgICAgICB3aXRoX3NhbWVfbGVuZ3RoIHQgbmV3X3RyZWUpXG4gICAgOztcblxuICAgIGxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgICAgIEEubWFwIChUcmVlX3RyYXZlcnNhbHMuZmlsdGVyX21hcGkgdC50cmVlIH5mKSB+ZjooZnVuIG5ld190cmVlX3dpdGhfbGVuZ3RoIC0+XG4gICAgICAgIGxpa2UgdCBuZXdfdHJlZV93aXRoX2xlbmd0aClcbiAgICA7O1xuICBlbmRcbmVuZFxuXG4oKiBbMF0gaXMgdXNlZCBhcyB0aGUgW2xlbmd0aF0gYXJndW1lbnQgZXZlcnl3aGVyZSBpbiB0aGlzIG1vZHVsZSwgc2luY2UgdHJlZXMgZG8gbm90XG4gICBoYXZlIHRoZWlyIGxlbmd0aHMgc3RvcmVkIGF0IHRoZSByb290LCB1bmxpa2UgbWFwcy4gVGhlIHZhbHVlcyBhcmUgZGlzY2FyZGVkIGFsd2F5cy4gKilcbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHQgPSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdHJlZVxuXG4gIGxldCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uID0gVHJlZTAuZW1wdHlcbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yOl8gPSBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yOl8gdHJlZSA9IHRyZWVcbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvcjpfIGsgdiA9IFRyZWUwLnNpbmdsZXRvbiBrIHZcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgKFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgIC50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjooZnVuICh4IDogKCdrLCAndikgVHJlZTAudCBXaXRoX2xlbmd0aC50KSAtPiB4LnRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0IH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBtYXRjaCBUcmVlMC5vZl9hbGlzdCBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCA9IF8gfSAtPiBgT2sgdHJlZVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgVHJlZTAub2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgfmNvbXBhcmF0b3JcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYWxpc3QgPSAoVHJlZTAub2ZfYWxpc3RfZXhuIGFsaXN0IH5jb21wYXJhdG9yKS50cmVlXG5cbiAgbGV0IG9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICAoVHJlZTAub2ZfYWxpc3RfbXVsdGkgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmYgPVxuICAgIChUcmVlMC5vZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYWxpc3QgfmYgPVxuICAgIChUcmVlMC5vZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaSA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggPSBfIH0gLT4gYE9rIHRyZWVcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmkgPSAoVHJlZTAub2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvcikudHJlZVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvcjpfcmVxdWlyZWRfYnlfaW50ZiB+bGVuIH5mID1cbiAgICBUcmVlMC5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgICAgIChUcmVlMC5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgbWF0Y2ggVHJlZTAub2Zfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICAgIHwgYE9rIHsgdHJlZTsgbGVuZ3RoID0gXyB9IC0+IGBPayB0cmVlXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgVHJlZTAub2Zfc2VxdWVuY2Vfb3JfZXJyb3Igc2VxIH5jb21wYXJhdG9yXG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yIHNlcSA9IChUcmVlMC5vZl9zZXF1ZW5jZV9leG4gc2VxIH5jb21wYXJhdG9yKS50cmVlXG5cbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgKFRyZWUwLm9mX3NlcXVlbmNlX211bHRpIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzZXEgfmluaXQgfmYgPVxuICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9mb2xkIHNlcSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yIHNlcSB+ZiA9XG4gICAgKFRyZWUwLm9mX3NlcXVlbmNlX3JlZHVjZSBzZXEgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgbWF0Y2hcbiAgICAgIFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB3aXRoXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICAgIHwgYE9rIHsgdHJlZTsgbGVuZ3RoID0gXyB9IC0+IGBPayB0cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgVHJlZTAub2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsaXN0IH5nZXRfa2V5IH5jb21wYXJhdG9yXG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgKFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXlfZXhuIGxpc3QgfmdldF9rZXkgfmNvbXBhcmF0b3IpLnRyZWVcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICAoVHJlZTAub2ZfbGlzdF93aXRoX2tleV9tdWx0aVxuICAgICAgIGxpc3RcbiAgICAgICB+Z2V0X2tleVxuICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCB0b190cmVlIHQgPSB0XG5cbiAgbGV0IGludmFyaWFudHMgfmNvbXBhcmF0b3IgdCA9XG4gICAgVHJlZTAuaW52YXJpYW50cyB0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdFxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdFxuXG4gIGxldCBzZXQgfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICAoVHJlZTAuc2V0IHQgfmtleSB+ZGF0YSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IGFkZF9leG4gfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICAoVHJlZTAuYWRkX2V4blxuICAgICAgIHRcbiAgICAgICB+a2V5XG4gICAgICAgfmRhdGFcbiAgICAgICB+bGVuZ3RoOjBcbiAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICB+c2V4cF9vZl9rZXk6Y29tcGFyYXRvci5zZXhwX29mX3QpXG4gICAgLnRyZWVcbiAgOztcblxuICBsZXQgYWRkX2V4bl9pbnRlcm5hbCB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIChUcmVlMC5hZGRfZXhuX2ludGVybmFsXG4gICAgICAgdFxuICAgICAgIH5rZXlcbiAgICAgICB+ZGF0YVxuICAgICAgIH5sZW5ndGg6MFxuICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgIH5zZXhwX29mX2tleTpjb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCBhZGQgfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICB0cnkgYE9rIChhZGRfZXhuX2ludGVybmFsIHQgfmNvbXBhcmF0b3IgfmtleSB+ZGF0YSkgd2l0aFxuICAgIHwgXyAtPiBgRHVwbGljYXRlXG4gIDs7XG5cbiAgbGV0IGFkZF9tdWx0aSB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIChUcmVlMC5hZGRfbXVsdGkgdCB+a2V5IH5kYXRhIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gICAgLnRyZWVcbiAgOztcblxuICBsZXQgcmVtb3ZlX211bHRpIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICAoVHJlZTAucmVtb3ZlX211bHRpIHQga2V5IH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgZmluZF9tdWx0aSB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9tdWx0aSB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgY2hhbmdlIH5jb21wYXJhdG9yIHQga2V5IH5mID1cbiAgICAoVHJlZTAuY2hhbmdlIHQga2V5IH5mIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgdXBkYXRlIH5jb21wYXJhdG9yIHQga2V5IH5mID1cbiAgICBjaGFuZ2UgfmNvbXBhcmF0b3IgdCBrZXkgfmY6KGZ1biBkYXRhIC0+IFNvbWUgKGYgZGF0YSkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmluZF9leG4gfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIFRyZWUwLmZpbmRfZXhuXG4gICAgICB0XG4gICAgICBrZXlcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgZmluZCB+Y29tcGFyYXRvciB0IGtleSA9IFRyZWUwLmZpbmQgdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbiAgbGV0IHJlbW92ZSB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgKFRyZWUwLnJlbW92ZSB0IGtleSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG1lbSB+Y29tcGFyYXRvciB0IGtleSA9IFRyZWUwLm1lbSB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgbGV0IGl0ZXJfa2V5cyB0IH5mID0gVHJlZTAuaXRlcl9rZXlzIHQgfmZcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdCB+ZlxuICBsZXQgaXRlcmkgdCB+ZiA9IFRyZWUwLml0ZXJpIHQgfmZcbiAgbGV0IGl0ZXJpX3VudGlsIHQgfmYgPSBUcmVlMC5pdGVyaV91bnRpbCB0IH5mXG5cbiAgbGV0IGl0ZXIyIH5jb21wYXJhdG9yIHQxIHQyIH5mID1cbiAgICBUcmVlMC5pdGVyMiB0MSB0MiB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPSBUcmVlMC5tYXAgdCB+ZlxuICBsZXQgbWFwaSB0IH5mID0gVHJlZTAubWFwaSB0IH5mXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQgfmYgfmluaXRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gVHJlZTAuZm9sZF91bnRpbCB0IH5mIH5pbml0IH5maW5pc2hcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdCB+ZiB+aW5pdFxuXG4gIGxldCBmb2xkMiB+Y29tcGFyYXRvciB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZDIgdDEgdDIgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9rZXlzIHQgfmYgPSBUcmVlMC5maWx0ZXJfa2V5cyB0IH5mIH5sZW46KCAocmVmIDApKSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IFRyZWUwLmZpbHRlciB0IH5mIH5sZW46KCAocmVmIDApKSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXJpIHQgfmYgPSBUcmVlMC5maWx0ZXJpIHQgfmYgfmxlbjooIChyZWYgMCkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IFRyZWUwLmZpbHRlcl9tYXAgdCB+ZiB+bGVuOiggKHJlZiAwKSkgW0Bub250YWlsXVxuICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9IFRyZWUwLmZpbHRlcl9tYXBpIHQgfmYgfmxlbjooIChyZWYgMCkpIFtAbm9udGFpbF1cbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPSBUcmVlMC5wYXJ0aXRpb25fbWFwaSB0IH5mXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBUcmVlMC5wYXJ0aXRpb25fbWFwIHQgfmZcbiAgbGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbmlfdGYgdCB+ZlxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBUcmVlMC5wYXJ0aXRpb25fdGYgdCB+ZlxuXG4gIGxldCBjb21iaW5lX2Vycm9ycyB+Y29tcGFyYXRvciB0ID1cbiAgICBUcmVlMC5jb21iaW5lX2Vycm9ycyB0IH5zZXhwX29mX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IH5jb21wYXJhdG9yIGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgVHJlZTAuY29tcGFyZSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBjb21wYXJlX2RhdGEgdDEgdDJcbiAgOztcblxuICBsZXQgZXF1YWwgfmNvbXBhcmF0b3IgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5lcXVhbCBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBjb21wYXJlX2RhdGEgdDEgdDJcbiAgOztcblxuICBsZXQga2V5cyB0ID0gVHJlZTAua2V5cyB0XG4gIGxldCBkYXRhIHQgPSBUcmVlMC5kYXRhIHRcbiAgbGV0IHRvX2FsaXN0ID9rZXlfb3JkZXIgdCA9IFRyZWUwLnRvX2FsaXN0ID9rZXlfb3JkZXIgdFxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiB+ZGF0YV9lcXVhbCA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH5kYXRhX2VxdWFsXG4gIDs7XG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgfmNvbXBhcmF0b3IgdDEgdDIgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgIHQxXG4gICAgICB0MlxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICB+ZGF0YV9lcXVhbFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gIDs7XG5cbiAgbGV0IG1lcmdlIH5jb21wYXJhdG9yIHQxIHQyIH5mID1cbiAgICAoVHJlZTAubWVyZ2UgdDEgdDIgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCB+Y29tcGFyYXRvciB0MSB0MiB+Y29tYmluZSA9XG4gICAgKCogTGVuZ3RoIGNvbXB1dGF0aW9uIG1ha2VzIHRoaXMgc2lnbmlmaWNhbnRseSBzbG93ZXIgdGhhbiBbbWVyZ2Vfc2tld2VkXSBvbiBhIG1hcFxuICAgICAgIHdpdGggYSBbbGVuZ3RoXSBmaWVsZCwgYnV0IGRvZXMgcHJlc2VydmUgYW1vdW50IG9mIGFsbG9jYXRpb24uICopXG4gICAgKFRyZWUwLm1lcmdlX3NrZXdlZFxuICAgICAgIHQxXG4gICAgICAgdDJcbiAgICAgICB+bGVuZ3RoMToobGVuZ3RoIHQxKVxuICAgICAgIH5sZW5ndGgyOihsZW5ndGggdDIpXG4gICAgICAgfmNvbWJpbmVcbiAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gICAgLnRyZWVcbiAgOztcblxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0XG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdFxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0XG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdFxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0IH5mXG4gIGxldCBmb3JfYWxsaSB0IH5mID0gVHJlZTAuZm9yX2FsbGkgdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlMC5leGlzdHMgdCB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gVHJlZTAuZXhpc3RzaSB0IH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdCB+ZlxuICBsZXQgY291bnRpIHQgfmYgPSBUcmVlMC5jb3VudGkgdCB+ZlxuICBsZXQgc3BsaXQgfmNvbXBhcmF0b3IgdCBrID0gVHJlZTAuc3BsaXQgdCBrIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG4gIGxldCBzcGxpdF9sZV9ndCB+Y29tcGFyYXRvciB0IGsgPVxuICAgIFRyZWUwLnNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeVxuICAgICAgdFxuICAgICAgfmludG86YExlZnRcbiAgICAgIGtcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBzcGxpdF9sdF9nZSB+Y29tcGFyYXRvciB0IGsgPVxuICAgIFRyZWUwLnNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeVxuICAgICAgdFxuICAgICAgfmludG86YFJpZ2h0XG4gICAgICBrXG4gICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgYXBwZW5kIH5jb21wYXJhdG9yIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0ID1cbiAgICBUcmVlMC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IHN1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbGV0IF8sIHJldCwgXyA9XG4gICAgICBUcmVlMC5zcGxpdF9yYW5nZVxuICAgICAgICB0XG4gICAgICAgIH5sb3dlcl9ib3VuZFxuICAgICAgICB+dXBwZXJfYm91bmRcbiAgICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICByZXRcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgfmNvbXBhcmF0b3IgdCB+bWluIH5tYXggfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgICB0XG4gICAgICB+bWluXG4gICAgICB+bWF4XG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB+Y29tcGFyYXRvciB0IH5taW4gfm1heCA9XG4gICAgVHJlZTAucmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGNsb3Nlc3Rfa2V5IH5jb21wYXJhdG9yIHQgZGlyIGtleSA9XG4gICAgVHJlZTAuY2xvc2VzdF9rZXkgdCBkaXIga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBudGggdCBuID0gVHJlZTAubnRoIHQgblxuICBsZXQgbnRoX2V4biB0IG4gPSBPcHRpb24udmFsdWVfZXhuIChudGggdCBuKVxuICBsZXQgcmFuayB+Y29tcGFyYXRvciB0IGtleSA9IFRyZWUwLnJhbmsgdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3Iga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID1cbiAgICAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpLnRyZWVcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZSBjb21wYXJhdG9yID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yOl8gdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvcjpfIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbWF0Y2ggVHJlZTAuYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB3aXRoXG4gICAgfCBTb21lIChsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpIC0+IHN1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICAgIHwgTm9uZSAtPiBFbXB0eVxuICA7O1xuXG4gIG1vZHVsZSBNYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEgOiBBcHBsaWNhdGl2ZS5MYXp5X2FwcGxpY2F0aXZlKSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUcmVlMF90cmF2ZXJzYWxzID0gVHJlZTAuTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBKVxuXG4gICAgbGV0IG1hcGkgdCB+ZiA9IFRyZWUwX3RyYXZlcnNhbHMubWFwaSB0IH5mXG5cbiAgICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gICAgICBBLm1hcFxuICAgICAgICAoVHJlZTBfdHJhdmVyc2Fscy5maWx0ZXJfbWFwaSB0IH5mKVxuICAgICAgICB+ZjooZnVuICh4IDogKCdrLCAndikgVHJlZTAudCBXaXRoX2xlbmd0aC50KSAtPiB4LnRyZWUpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG1hdGNoIFRyZWUwLm1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgd2l0aFxuICAgIHwgYE9rIHsgdHJlZSA9IHQ7IGxlbmd0aCA9IF8gfSAtPiBgT2sgdFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkdXAgLT4gZHVwXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mID0gKFRyZWUwLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mKS50cmVlXG5cbiAgKCogVGhpcyBjYWxsaW5nIGNvbnZlbnRpb24gb2YgW35jb21wYXJhdG9yIH5jb21wYXJhdG9yXSBpcyBjb25mdXNpbmcuIEl0IGlzIHJlcXVpcmVkXG4gICAgIGJlY2F1c2UgW2FjY2Vzc19vcHRpb25zXSBhbmQgW2NyZWF0ZV9vcHRpb25zXSBib3RoIGRlbWFuZCBhIFt+Y29tcGFyYXRvcl0gYXJndW1lbnQgaW5cbiAgICAgW01hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWVdLlxuXG4gICAgIE1ha2luZyBpdCBsZXNzIGNvbmZ1c2luZyB3b3VsZCByZXF1aXJlIHNvbWUgdW5uZWNlc3NhcnkgY29tcGxleGl0eSBpbiBzaWduYXR1cmVzLlxuICAgICBCZXR0ZXIgdG8ganVzdCBsaXZlIHdpdGggYW4gdW5kZXNpcmFibGUgaW50ZXJmYWNlIGluIGEgZnVuY3Rpb24gdGhhdCB3aWxsIHByb2JhYmx5XG4gICAgIG5ldmVyIGJlIGNhbGxlZCBkaXJlY3RseS4gKilcbiAgbGV0IHRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yOm91dGVyX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3I6aW5uZXJfY29tcGFyYXRvciB0ID1cbiAgICAoVHJlZTAudHJhbnNwb3NlX2tleXMgfm91dGVyX2NvbXBhcmF0b3IgfmlubmVyX2NvbXBhcmF0b3IgdCkudHJlZVxuICAgIHw+IG1hcCB+ZjooZnVuICh4IDogKCdrLCAndikgVHJlZTAudCBXaXRoX2xlbmd0aC50KSAtPiB4LnRyZWUpXG4gIDs7XG5cbiAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlICgnaywgJ3YsICd3KSB0ID0gKCdrLCAndikgVHJlZTAuQnVpbGRfaW5jcmVhc2luZy50XG5cbiAgICBsZXQgZW1wdHkgPSBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLmVtcHR5XG5cbiAgICBsZXQgYWRkX2V4biB0IH5jb21wYXJhdG9yIH5rZXkgfmRhdGEgPVxuICAgICAgbWF0Y2ggVHJlZTAuQnVpbGRfaW5jcmVhc2luZy5tYXhfa2V5IHQgd2l0aFxuICAgICAgfCBTb21lIHByZXZfa2V5IHdoZW4gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgcHJldl9rZXkga2V5ID49IDAgLT5cbiAgICAgICAgRXJyb3IucmFpc2VfcyAoU2V4cC5BdG9tIFwiTWFwLkJ1aWxkX2luY3JlYXNpbmcuYWRkOiBub24taW5jcmVhc2luZyBrZXlcIilcbiAgICAgIHwgXyAtPiBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLmFkZF91bmNoZWNrZWQgdCB+a2V5IH5kYXRhXG4gICAgOztcblxuICAgIGxldCB0b190cmVlIHQgPSBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLnRvX3RyZWVfdW5jaGVja2VkIHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdrLCAndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXApIHRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvciA9IHsgdHJlZSA9IFRyZWUwLmVtcHR5OyBjb21wYXJhdG9yOyBsZW5ndGggPSAwIH1cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvciBrIHYgPSB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5zaW5nbGV0b24gayB2OyBsZW5ndGggPSAxIH1cblxuICBsZXQgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKHsgdHJlZTsgbGVuZ3RoIH0gOiBfIFdpdGhfbGVuZ3RoLnQpID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gIDs7XG5cbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKHdpdGhfbGVuZ3RoIHRyZWUgKFRyZWUwLmxlbmd0aCB0cmVlKSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCB0b190cmVlID0gdG9fdHJlZVxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICAoVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICAgIH5mOihmdW4gdHJlZSAtPiBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdCB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfYWxpc3QgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCB9IC0+IGBPayB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgUmVzdWx0Lm1hcCAoVHJlZTAub2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgfmNvbXBhcmF0b3IpIH5mOihmdW4gdHJlZSAtPlxuICAgICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfYWxpc3RfZXhuIGFsaXN0IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2ZfYWxpc3RfbXVsdGkgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGFsaXN0IH5pbml0IH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGFsaXN0IH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmkgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2l0ZXJpIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB+aXRlcmkgd2l0aFxuICAgIHwgYE9rIHRyZWVfbGVuZ3RoIC0+IGBPayAob2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZV9sZW5ndGgpXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaSlcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAod2l0aF9sZW5ndGggKFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYpIGxlbikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICB+ZjooZnVuIHggLT4gb2ZfdHJlZTAgfmNvbXBhcmF0b3IgeClcbiAgICAgIChUcmVlMC5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgbWF0Y2ggVHJlZTAub2Zfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggfSAtPiBgT2sgeyBjb21wYXJhdG9yOyB0cmVlOyBsZW5ndGggfVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyB6IC0+IHpcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBSZXN1bHQubWFwIChUcmVlMC5vZl9zZXF1ZW5jZV9vcl9lcnJvciBzZXEgfmNvbXBhcmF0b3IpIH5mOihmdW4gdHJlZSAtPlxuICAgICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX3NlcXVlbmNlX2V4biBzZXEgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfbXVsdGkgc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzZXEgfmluaXQgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yIHNlcSB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfcmVkdWNlIHNlcSB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgbWF0Y2hcbiAgICAgIFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB3aXRoXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggfSAtPiBgT2sgeyBjb21wYXJhdG9yOyB0cmVlOyBsZW5ndGggfVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyB6IC0+IHpcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBSZXN1bHQubWFwIChUcmVlMC5vZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGxpc3QgfmdldF9rZXkgfmNvbXBhcmF0b3IpIH5mOihmdW4gdHJlZSAtPlxuICAgICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXlfZXhuIGxpc3QgfmdldF9rZXkgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgVHJlZTAub2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHw+IG9mX3RyZWUwIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3Iga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG1hdGNoIFRyZWUwLm1hcF9rZXlzIHQudHJlZSB+ZiB+Y29tcGFyYXRvciB3aXRoXG4gICAgfCBgT2sgcGFpciAtPiBgT2sgKG9mX3RyZWUwIH5jb21wYXJhdG9yIHBhaXIpXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGR1cCAtPiBkdXBcbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5tYXBfa2V5c19leG4gdC50cmVlIH5mIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCB0cmFuc3Bvc2Vfa2V5cyB+Y29tcGFyYXRvcjppbm5lcl9jb21wYXJhdG9yIHQgPVxuICAgIGxldCBvdXRlcl9jb21wYXJhdG9yID0gdC5jb21wYXJhdG9yIGluXG4gICAgVHJlZTAudHJhbnNwb3NlX2tleXMgfm91dGVyX2NvbXBhcmF0b3IgfmlubmVyX2NvbXBhcmF0b3IgKFRyZWUwLm1hcCB0LnRyZWUgfmY6dG9fdHJlZSlcbiAgICB8PiBvZl90cmVlMCB+Y29tcGFyYXRvcjppbm5lcl9jb21wYXJhdG9yXG4gICAgfD4gbWFwIH5mOihmdW4geCAtPiBvZl90cmVlMCB+Y29tcGFyYXRvcjpvdXRlcl9jb21wYXJhdG9yIHgpXG4gIDs7XG5cbiAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEsgOiBDb21wYXJhdG9yLlMxKSA9IHN0cnVjdFxuICAgIGxldCBlbXB0eSA9IHsgdHJlZSA9IFRyZWUwLmVtcHR5OyBjb21wYXJhdG9yID0gSy5jb21wYXJhdG9yOyBsZW5ndGggPSAwIH1cbiAgZW5kXG5cbiAgbW9kdWxlIFRyZWUgPSBUcmVlXG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxudHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCBjb21wYXJhdG9yX3MgKHR5cGUgayBjbXApIHQgOiAoaywgY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXBcblxuICAgIGxldCBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIGNvbXBhcmF0b3IpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl90cmVlICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIGNvbXBhcmF0b3IpIHRyZWUgPVxuICBvZl90cmVlIH5jb21wYXJhdG9yOk0uY29tcGFyYXRvciB0cmVlXG47O1xuXG5sZXQgZW1wdHkgbSA9IFVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbmxldCBzaW5nbGV0b24gbSBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2FsaXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9hbGlzdF9tdWx0aSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IG9mX2FsaXN0X2ZvbGQgbSBhIH5pbml0IH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmluaXQgfmZcbjs7XG5cbmxldCBvZl9hbGlzdF9yZWR1Y2UgbSBhIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+ZlxuOztcblxubGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBvZl9zb3J0ZWRfYXJyYXkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2l0ZXJpIG0gfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcblxubGV0IG9mX2l0ZXJpX2V4biBtIH5pdGVyaSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuOztcblxubGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIG0gfmxlbiB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuOztcblxubGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgbSBzZXEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc2VxXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2UgbSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG5cbmxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBtIHMgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZV9leG4gbSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuXG5sZXQgb2Zfc2VxdWVuY2VfbXVsdGkgbSBzID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2VfZm9sZCBtIHMgfmluaXQgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgcyB+aW5pdCB+ZlxuOztcblxubGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBtIHMgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzIH5mXG47O1xuXG5sZXQgb2ZfbGlzdF93aXRoX2tleSBtIGwgfmdldF9rZXkgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgbCB+Z2V0X2tleVxuOztcblxubGV0IG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbSBsIH5nZXRfa2V5ID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGwgfmdldF9rZXlcbjs7XG5cbmxldCBvZl9saXN0X3dpdGhfa2V5X2V4biBtIGwgfmdldF9rZXkgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGwgfmdldF9rZXlcbjs7XG5cbmxldCBvZl9saXN0X3dpdGhfa2V5X211bHRpIG0gbCB+Z2V0X2tleSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9tdWx0aSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBsIH5nZXRfa2V5XG47O1xuXG5sZXQgbWFwX2tleXMgbSB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5cyB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0IH5mXG5sZXQgbWFwX2tleXNfZXhuIG0gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHQgfmZcbmxldCB0cmFuc3Bvc2Vfa2V5cyBtIHQgPSBVc2luZ19jb21wYXJhdG9yLnRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHRcblxubW9kdWxlIE0gKEsgOiBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBrKSAobW9kdWxlIEsgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBrKSBzZXhwX29mX3YgdCA9XG4gIHNleHBfb2ZfdCBLLnNleHBfb2ZfdCBzZXhwX29mX3YgKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cFxuICAgICAgKHR5cGUgayBjbXApXG4gICAgICAobW9kdWxlIEsgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgIHZfb2Zfc2V4cFxuICAgICAgc2V4cFxuICA9XG4gIFVzaW5nX2NvbXBhcmF0b3IudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvcjpLLmNvbXBhcmF0b3IgSy50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hclxuICAgICAgKHR5cGUgaylcbiAgICAgIChtb2R1bGUgSyA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gaylcbiAgICAgICh2X2dyYW1tYXIgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICB7IHVudHlwZWQgPVxuICAgICAgVGFnZ2VkXG4gICAgICAgIHsga2V5ID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX3RhZ1xuICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICA7IGdyYW1tYXIgPVxuICAgICAgICAgICAgTGlzdFxuICAgICAgICAgICAgICAoTWFueVxuICAgICAgICAgICAgICAgICAoTGlzdFxuICAgICAgICAgICAgICAgICAgICAoQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAoIFRhZ2dlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBrZXkgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2Nfa2V5X3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgOyB2YWx1ZSA9IExpc3QgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgZ3JhbW1hciA9IEsudF9zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAsIENvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggVGFnZ2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBrZXkgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2NfdmFsdWVfdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyB2YWx1ZSA9IExpc3QgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGdyYW1tYXIgPSB2X2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICwgRW1wdHkgKSApKSkpXG4gICAgICAgIH1cbiAgfVxuOztcblxubGV0IGNvbXBhcmVfbV9fdCAobW9kdWxlIF8gOiBDb21wYXJlX20pIGNvbXBhcmVfdiB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IGNvbXBhcmVfdiB0MSB0MlxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgZXF1YWxfdiB0MSB0MiA9IGVxdWFsIGVxdWFsX3YgdDEgdDJcblxubGV0IGhhc2hfZm9sZF9tX190ICh0eXBlIGspIChtb2R1bGUgSyA6IEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gaykgaGFzaF9mb2xkX3Ygc3RhdGUgPVxuICBoYXNoX2ZvbGRfZGlyZWN0IEsuaGFzaF9mb2xkX3QgaGFzaF9mb2xkX3Ygc3RhdGVcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnaywgJ3YpIHQgPSAoJ2ssICd2LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICgnaywgJ3YpIHRyZWUgPSAoJ2ssICd2KSBUcmVlMC50XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICBsZXQgb2ZfdHJlZSB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggPSBUcmVlMC5sZW5ndGggdHJlZSB9XG5cbiAgaW5jbHVkZSBVc2luZ19jb21wYXJhdG9yLkVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKENvbXBhcmF0b3IuUG9seSlcblxuICBsZXQgc2luZ2xldG9uIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9leG4gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X211bHRpIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X2ZvbGQgYSB+aW5pdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhIH5pbml0IH5mXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGEgfmZcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJhdG9yXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIHMgfmluaXQgfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzIH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3IgcyB+ZlxuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5IGwgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleSB+Y29tcGFyYXRvciBsIH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIH5jb21wYXJhdG9yIGwgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gbCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X2V4biB+Y29tcGFyYXRvciBsIH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X211bHRpIH5jb21wYXJhdG9yIGwgfmdldF9rZXlcbiAgOztcblxuICBsZXQgbWFwX2tleXMgdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCB0cmFuc3Bvc2Vfa2V5cyB0ID0gVXNpbmdfY29tcGFyYXRvci50cmFuc3Bvc2Vfa2V5cyB+Y29tcGFyYXRvciB0XG5lbmRcbiIsIm9wZW4hIEltcG9ydDBcblxudHlwZSAnYSB0ID0gJ2EgU3RkbGliLlF1ZXVlLnRcblxubGV0IGNyZWF0ZSA9IFN0ZGxpYi5RdWV1ZS5jcmVhdGVcbmxldCBjbGVhciA9IFN0ZGxpYi5RdWV1ZS5jbGVhclxubGV0IGNvcHkgPSBTdGRsaWIuUXVldWUuY29weVxubGV0IGlzX2VtcHR5ID0gU3RkbGliLlF1ZXVlLmlzX2VtcHR5XG5sZXQgbGVuZ3RoID0gU3RkbGliLlF1ZXVlLmxlbmd0aFxubGV0IHBlZWsgPSBTdGRsaWIuUXVldWUucGVla1xubGV0IHBvcCA9IFN0ZGxpYi5RdWV1ZS5wb3BcbmxldCBwdXNoID0gU3RkbGliLlF1ZXVlLnB1c2hcbmxldCB0cmFuc2ZlciA9IFN0ZGxpYi5RdWV1ZS50cmFuc2ZlclxuXG5sZXQgaXRlciB0IH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IGNhbWxfaXRlciA6ICgoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gJ2EgdCAtPiB1bml0ID1cbiAgICBTdGRsaWIuT2JqLm1hZ2ljIChTdGRsaWIuUXVldWUuaXRlciA6ICgnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXQpXG4gIGluXG4gIGNhbWxfaXRlciBmIHRcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBjYW1sX2ZvbGQgOiAoKCdiIC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiAtPiAnYSB0IC0+ICdiID1cbiAgICBTdGRsaWIuT2JqLm1hZ2ljIChTdGRsaWIuUXVldWUuZm9sZCA6ICgnYiAtPiAnYSAtPiAnYikgLT4gJ2IgLT4gJ2EgdCAtPiAnYilcbiAgaW5cbiAgY2FtbF9mb2xkIGYgaW5pdCB0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIExpbmtlZF9xdWV1ZTBcblxubGV0IGVucXVldWUgdCB4ID0gTGlua2VkX3F1ZXVlMC5wdXNoIHggdFxubGV0IGRlcXVldWUgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoTGlua2VkX3F1ZXVlMC5wb3AgdClcbmxldCBkZXF1ZXVlX2V4biA9IExpbmtlZF9xdWV1ZTAucG9wXG5sZXQgZGVxdWV1ZV9hbmRfaWdub3JlX2V4biAodHlwZSBlbHQpICh0IDogZWx0IHQpID0gaWdub3JlIChkZXF1ZXVlX2V4biB0IDogZWx0KVxubGV0IHBlZWsgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoTGlua2VkX3F1ZXVlMC5wZWVrIHQpXG5sZXQgcGVla19leG4gPSBMaW5rZWRfcXVldWUwLnBlZWtcblxubW9kdWxlIEMgPSBJbmRleGVkX2NvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgICBsZXQgZm9sZGkgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgICBsZXQgaXRlcmkgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgbWVtID0gQy5tZW1cbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgc3VtID0gQy5zdW1cbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgY291bnRpID0gQy5jb3VudGlcbmxldCBleGlzdHNpID0gQy5leGlzdHNpXG5sZXQgZmluZF9tYXBpID0gQy5maW5kX21hcGlcbmxldCBmaW5kaSA9IEMuZmluZGlcbmxldCBmb2xkaSA9IEMuZm9sZGlcbmxldCBmb3JfYWxsaSA9IEMuZm9yX2FsbGlcbmxldCBpdGVyaSA9IEMuaXRlcmlcbmxldCB0cmFuc2ZlciB+c3JjIH5kc3QgPSBMaW5rZWRfcXVldWUwLnRyYW5zZmVyIHNyYyBkc3RcblxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBMaXN0Lml0ZXIgKGYgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgcmVzIGIpKTtcbiAgcmVzXG47O1xuXG5sZXQgY29uY2F0X21hcGkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBMaXN0Lml0ZXIgKGYgaSBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSByZXMgYikpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT5cbiAgICBtYXRjaCBmIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgcmVzIGIpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+XG4gICAgbWF0Y2ggZiBpIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgcmVzIGIpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBlbnF1ZXVlIHJlcyBhKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IGlmIGYgaSBhIHRoZW4gZW5xdWV1ZSByZXMgYSk7XG4gIHJlc1xuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGVucXVldWUgcmVzIChmIGEpKTtcbiAgcmVzXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IGVucXVldWUgcmVzIChmIGkgYSkpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSBxIH5mID1cbiAgbGV0IHEnID0gZmlsdGVyIHEgfmYgaW5cbiAgY2xlYXIgcTtcbiAgdHJhbnNmZXIgfnNyYzpxJyB+ZHN0OnFcbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgcSB+ZiA9XG4gIGxldCBxJyA9IGZpbHRlcmkgcSB+ZiBpblxuICBjbGVhciBxO1xuICB0cmFuc2ZlciB+c3JjOnEnIH5kc3Q6cVxuOztcblxubGV0IGVucXVldWVfYWxsIHQgbGlzdCA9IExpc3QuaXRlciBsaXN0IH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeClcblxubGV0IG9mX2xpc3QgbGlzdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIExpc3QuaXRlciBsaXN0IH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeCk7XG4gIHRcbjs7XG5cbmxldCBvZl9hcnJheSBhcnJheSA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyYXkgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxubGV0IGluaXQgbGVuIH5mID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBlbnF1ZXVlIHQgKGYgaSlcbiAgZG9uZTtcbiAgdFxuOztcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCBsZW5ndGggdCB3aXRoXG4gIHwgMCAtPiBbfHxdXG4gIHwgbGVuIC0+XG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuIChwZWVrX2V4biB0KSBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biB2IC0+XG4gICAgICBhcnIuKCFpKSA8LSB2O1xuICAgICAgaW5jciBpKTtcbiAgICBhcnJcbjs7XG5cbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPSBvZl9saXN0IChsaXN0X29mX3NleHAgYV9vZl9zZXhwIHNleHApXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmxldCBzaW5nbGV0b24gYSA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGVucXVldWUgdCBhO1xuICB0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGRsaWIuSW50NjRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2ludDY0IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2ludDY0XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9pbnQ2NCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoaW50NjRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50NjQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50NjRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5cbiAgbGV0IGNvbXBhcmUgPSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZVxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgbGV0IG9mX3N0cmluZ19vcHQgPSBvZl9zdHJpbmdfb3B0XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxubGV0IG51bV9iaXRzID0gNjRcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X29mX2JpdHMgPSBmbG9hdF9vZl9iaXRzXG5sZXQgYml0c19vZl9mbG9hdCA9IGJpdHNfb2ZfZmxvYXRcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBsb2dub3RcbmxldCBiaXRfeG9yID0gbG9neG9yXG5sZXQgYml0X29yID0gbG9nb3JcbmxldCBiaXRfYW5kID0gbG9nYW5kXG5sZXQgbWluX3ZhbHVlID0gbWluX2ludFxubGV0IG1heF92YWx1ZSA9IG1heF9pbnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcG93ID0gSW50X21hdGguUHJpdmF0ZS5pbnQ2NF9wb3dcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtaW51c19vbmUgPSBtaW51c19vbmVcbmxldCBvbmUgPSBvbmVcbmxldCB6ZXJvID0gemVyb1xubGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBTdGRsaWIuSW50NjQub2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gU3RkbGliLkludDY0Lm9mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50NjQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5leHRlcm5hbCBic3dhcDY0IDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBic3dhcDE2IHggPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSA0OFxuXG5sZXRbQGlubGluZSBhbHdheXNdIGJzd2FwMzIgeCA9XG4gICgqIFRoaXMgaXMgc3RyaWN0bHkgYmV0dGVyIHRoYW4gY29lcmNpbmcgdG8gYW4gaW50MzIgdG8gcGVyZm9ybSBieXRlc3dhcC4gQ29lcmNpbmdcbiAgICAgZnJvbSBhbiBpbnQzMiB3aWxsIGFkZCB1bm5lY2Vzc2FyeSBzaGlmdCBvcGVyYXRpb25zIHRvIHNpZ24gZXh0ZW5kIHRoZSBudW1iZXJcbiAgICAgYXBwcm9wcmlhdGVseS5cbiAgKilcbiAgU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwNjQgeCkgMzJcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYnN3YXA0OCB4ID0gU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwNjQgeCkgMTZcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0IGluY3IgciA9IHIgOj0gYWRkICFyIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gc3ViICFyIG9uZVxuXG5leHRlcm5hbCBvZl9pbnQ2NCA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBvZl9pbnQ2NF9leG4gPSBvZl9pbnQ2NFxubGV0IHRvX2ludDY0IHQgPSB0XG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5pbnQ2NF9wb3Bjb3VudFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5leHRlcm5hbCB0b19pbnRfdHJ1bmMgOiAodFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIHRvX2ludDMyX3RydW5jIDogKGludDY0W0Bsb2NhbF9vcHRdKSAtPiAoaW50MzJbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfdG9faW50MzJcIlxuXG5leHRlcm5hbCB0b19uYXRpdmVpbnRfdHJ1bmNcbiAgOiAgKGludDY0W0Bsb2NhbF9vcHRdKVxuICAtPiAobmF0aXZlaW50W0Bsb2NhbF9vcHRdKVxuICA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIG9mX2ludCA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnQ2NFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgb2ZfaW50MzIgOiAoaW50MzJbQGxvY2FsX29wdF0pIC0+IChpbnQ2NFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG5cbmxldCBvZl9pbnRfZXhuID0gb2ZfaW50XG5sZXQgdG9faW50ID0gQ29udi5pbnQ2NF90b19pbnRcbmxldCB0b19pbnRfZXhuID0gQ29udi5pbnQ2NF90b19pbnRfZXhuXG5sZXQgb2ZfaW50MzJfZXhuID0gb2ZfaW50MzJcbmxldCB0b19pbnQzMiA9IENvbnYuaW50NjRfdG9faW50MzJcbmxldCB0b19pbnQzMl9leG4gPSBDb252LmludDY0X3RvX2ludDMyX2V4blxubGV0IG9mX25hdGl2ZWludCA9IENvbnYubmF0aXZlaW50X3RvX2ludDY0XG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IG9mX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X2V4blxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcbiAgb3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBTdGRsaWIuSW50NjQubG9nb3JcbiAgbGV0ICggbHNyICkgPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbFxuICBsZXQgKCBsYW5kICkgPSBTdGRsaWIuSW50NjQubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSBTdGRsaWIuSW50NjQucHJlZCB4IGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBTdGRsaWIuSW50NjQuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IFN0ZGxpYi5JbnQ2NC56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgU3RkbGliLkludDY0LnN1YiB4ICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kIFN0ZGxpYi5JbnQ2NC5wcmVkIHggPSBTdGRsaWIuSW50NjQuemVyb1xuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoaW50NjRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50NjRfY2x6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X2N0elwiIFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBpIDw9IFN0ZGxpYi5JbnQ2NC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiW0ludDY0LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDY0IGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgUG9seS4oIDw9ICkgaSBTdGRsaWIuSW50NjQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQ2NC5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDY0IGkgXSk7XG4gICAgaWYgU3RkbGliLkludDY0LmVxdWFsIGkgU3RkbGliLkludDY0Lm9uZVxuICAgIHRoZW4gMFxuICAgIGVsc2UgbnVtX2JpdHMgLSBjbHogKFN0ZGxpYi5JbnQ2NC5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50NjQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDY0XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50NjQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9IG5lZ1xuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIlTHhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJUx4XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjQuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2NFwiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGV4dGVybmFsICggKyApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9hZGRcIlxuICBleHRlcm5hbCAoIC0gKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfc3ViXCJcbiAgZXh0ZXJuYWwgKCAqICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X211bFwiXG4gIGV4dGVybmFsICggLyApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9kaXZcIlxuICBleHRlcm5hbCAoIH4tICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfbmVnXCJcblxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYWJzID0gYWJzXG5cbiAgZXh0ZXJuYWwgbmVnIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X25lZ1wiXG5cbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGV4dGVybmFsICggbGFuZCApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9hbmRcIlxuICBleHRlcm5hbCAoIGxvciApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9vclwiXG4gIGV4dGVybmFsICggbHhvciApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF94b3JcIlxuXG4gIGxldCBsbm90ID0gYml0X25vdFxuXG4gIGV4dGVybmFsICggbHNsIClcbiAgICA6ICAodFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICh0W0Bsb2NhbF9vcHRdKVxuICAgID0gXCIlaW50NjRfbHNsXCJcblxuICBleHRlcm5hbCAoIGFzciApXG4gICAgOiAgKHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAodFtAbG9jYWxfb3B0XSlcbiAgICA9IFwiJWludDY0X2FzclwiXG5cbiAgZXh0ZXJuYWwgKCBsc3IgKVxuICAgIDogICh0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKHRbQGxvY2FsX29wdF0pXG4gICAgPSBcIiVpbnQ2NF9sc3JcIlxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50NjRdIGFuZCBbSW50NjQuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIoKiBBIDYzYml0IGludGVnZXIgaXMgYSA2NGJpdCBpbnRlZ2VyIHdpdGggaXRzIGJpdHMgc2hpZnRlZCB0byB0aGUgbGVmdFxuICAgYW5kIGl0cyBsb3dlc3QgYml0IHNldCB0byAwLlxuICAgVGhpcyBpcyB0aGUgc2FtZSBraW5kIG9mIGVuY29kaW5nIGFzIE9DYW1sIGludCBvbiA2NGJpdCBhcmNoaXRlY3R1cmUuXG4gICBUaGUgb25seSBkaWZmZXJlbmNlIGJlaW5nIHRoZSBsb3dlc3QgYml0IChpbW1lZGlhdGUgYml0KSBzZXQgdG8gMS4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5cbm1vZHVsZSBUMCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50NjQgOiB0IC0+IHQgLT4gaW50KVxuICAgIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2ludDY0IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnQ2NFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludDY0IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChpbnQ2NF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludDY0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50NjRfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcblxubW9kdWxlIFcgOiBzaWdcblxuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgVDBcbiAgZW5kXG5cbiAgdHlwZSB0ID0gaW50NjRcblxuICB2YWwgd3JhcF9leG4gOiBTdGRsaWIuSW50NjQudCAtPiB0XG4gIHZhbCB3cmFwX21vZHVsbyA6IFN0ZGxpYi5JbnQ2NC50IC0+IHRcbiAgdmFsIHVud3JhcCA6IHQgLT4gU3RkbGliLkludDY0LnRcblxuICAoKiogUmV0dXJucyBhIG5vbi1uZWdhdGl2ZSBpbnQ2NCB0aGF0IGlzIGVxdWFsIHRvIHRoZSBpbnB1dCBpbnQ2MyBtb2R1bG8gMl42My4gKilcbiAgdmFsIHVud3JhcF91bnNpZ25lZCA6IHQgLT4gU3RkbGliLkludDY0LnRcblxuICB2YWwgaW52YXJpYW50IDogdCAtPiB1bml0XG4gIHZhbCBhZGQgOiB0IC0+IHQgLT4gdFxuICB2YWwgc3ViIDogdCAtPiB0IC0+IHRcbiAgdmFsIG5lZyA6IHQgLT4gdFxuICB2YWwgYWJzIDogdCAtPiB0XG4gIHZhbCBzdWNjIDogdCAtPiB0XG4gIHZhbCBwcmVkIDogdCAtPiB0XG4gIHZhbCBtdWwgOiB0IC0+IHQgLT4gdFxuICB2YWwgcG93IDogdCAtPiB0IC0+IHRcbiAgdmFsIGRpdiA6IHQgLT4gdCAtPiB0XG4gIHZhbCByZW0gOiB0IC0+IHQgLT4gdFxuICB2YWwgcG9wY291bnQgOiB0IC0+IGludFxuICB2YWwgYml0X25vdCA6IHQgLT4gdFxuICB2YWwgYml0X3hvciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBiaXRfb3IgOiB0IC0+IHQgLT4gdFxuICB2YWwgYml0X2FuZCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzaGlmdF9sZWZ0IDogdCAtPiBpbnQgLT4gdFxuICB2YWwgc2hpZnRfcmlnaHQgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogdCAtPiBpbnQgLT4gdFxuICB2YWwgbWluX3ZhbHVlIDogdFxuICB2YWwgbWF4X3ZhbHVlIDogdFxuICB2YWwgdG9faW50NjQgOiB0IC0+IFN0ZGxpYi5JbnQ2NC50XG4gIHZhbCBvZl9pbnQ2NCA6IFN0ZGxpYi5JbnQ2NC50IC0+IHQgb3B0aW9uXG4gIHZhbCBvZl9pbnQ2NF9leG4gOiBTdGRsaWIuSW50NjQudCAtPiB0XG4gIHZhbCBvZl9pbnQ2NF90cnVuYyA6IFN0ZGxpYi5JbnQ2NC50IC0+IHRcbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBjZWlsX3BvdzIgOiB0IC0+IHRcbiAgdmFsIGZsb29yX3BvdzIgOiB0IC0+IHRcbiAgdmFsIGNlaWxfbG9nMiA6IHQgLT4gaW50XG4gIHZhbCBmbG9vcl9sb2cyIDogdCAtPiBpbnRcbiAgdmFsIGlzX3BvdzIgOiB0IC0+IGJvb2xcbiAgdmFsIGNseiA6IHQgLT4gaW50XG4gIHZhbCBjdHogOiB0IC0+IGludFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgVDBcblxuICB0eXBlIHQgPSBpbnQ2NFxuXG4gIGxldCB3cmFwX2V4biB4ID1cbiAgICAoKiBSYWlzZXMgaWYgdGhlIGludDY0IHZhbHVlIGRvZXMgbm90IGZpdCBvbiBpbnQ2My4gKilcbiAgICBDb252LmludDY0X2ZpdF9vbl9pbnQ2M19leG4geDtcbiAgICBTdGRsaWIuSW50NjQubXVsIHggMkxcbiAgOztcblxuICBsZXQgd3JhcCB4ID1cbiAgICBpZiBDb252LmludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NjMgeCB0aGVuIFNvbWUgKFN0ZGxpYi5JbnQ2NC5tdWwgeCAyTCkgZWxzZSBOb25lXG4gIDs7XG5cbiAgbGV0IHdyYXBfbW9kdWxvIHggPSBTdGRsaWIuSW50NjQubXVsIHggMkxcbiAgbGV0IHVud3JhcCB4ID0gU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IHggMVxuICBsZXQgdW53cmFwX3Vuc2lnbmVkIHggPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IDFcblxuICAoKiBUaGlzIGRvZXMgbm90IHVzZSB3cmFwIG9yIHVud3JhcCB0byBhdm9pZCBnZW5lcmF0aW5nIGV4Y2VwdGlvbnMgaW4gdGhlIGNhc2Ugb2ZcbiAgICAgb3ZlcmZsb3dzLiBUaGlzIGlzIHRvIHByZXNlcnZlIHRoZSBzZW1hbnRpY3Mgb2YgaW50IHR5cGUgb24gNjQgYml0IGFyY2hpdGVjdHVyZS4gKilcbiAgbGV0IGYyIGYgYSBiID1cbiAgICBTdGRsaWIuSW50NjQubXVsIChmIChTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgYSAxKSAoU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IGIgMSkpIDJMXG4gIDs7XG5cbiAgbGV0IG1hc2sgPSAweGZmZmZfZmZmZl9mZmZmX2ZmZmVMXG4gIGxldCBtIHggPSBTdGRsaWIuSW50NjQubG9nYW5kIHggbWFza1xuICBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKG0gdCA9IHQpXG4gIGxldCBhZGQgeCB5ID0gU3RkbGliLkludDY0LmFkZCB4IHlcbiAgbGV0IHN1YiB4IHkgPSBTdGRsaWIuSW50NjQuc3ViIHggeVxuICBsZXQgbmVnIHggPSBTdGRsaWIuSW50NjQubmVnIHhcbiAgbGV0IGFicyB4ID0gU3RkbGliLkludDY0LmFicyB4XG4gIGxldCBvbmUgPSB3cmFwX2V4biAxTFxuICBsZXQgc3VjYyBhID0gYWRkIGEgb25lXG4gIGxldCBwcmVkIGEgPSBzdWIgYSBvbmVcbiAgbGV0IG1pbl92YWx1ZSA9IG0gU3RkbGliLkludDY0Lm1pbl9pbnRcbiAgbGV0IG1heF92YWx1ZSA9IG0gU3RkbGliLkludDY0Lm1heF9pbnRcbiAgbGV0IGJpdF9ub3QgeCA9IG0gKFN0ZGxpYi5JbnQ2NC5sb2dub3QgeClcbiAgbGV0IGJpdF9hbmQgPSBTdGRsaWIuSW50NjQubG9nYW5kXG4gIGxldCBiaXRfeG9yID0gU3RkbGliLkludDY0LmxvZ3hvclxuICBsZXQgYml0X29yID0gU3RkbGliLkludDY0LmxvZ29yXG4gIGxldCBzaGlmdF9sZWZ0IHggaSA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9sZWZ0IHggaVxuICBsZXQgc2hpZnRfcmlnaHQgeCBpID0gbSAoU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IHggaSlcbiAgbGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCBpID0gbSAoU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCBpKVxuICBsZXQgcG93ID0gZjIgSW50X21hdGguUHJpdmF0ZS5pbnQ2M19wb3dfb25faW50NjRcbiAgbGV0IG11bCBhIGIgPSBTdGRsaWIuSW50NjQubXVsIGEgKFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodCBiIDEpXG4gIGxldCBkaXYgYSBiID0gd3JhcF9tb2R1bG8gKFN0ZGxpYi5JbnQ2NC5kaXYgYSBiKVxuICBsZXQgcmVtIGEgYiA9IFN0ZGxpYi5JbnQ2NC5yZW0gYSBiXG4gIGxldCBwb3Bjb3VudCB4ID0gUG9wY291bnQuaW50NjRfcG9wY291bnQgeFxuICBsZXQgdG9faW50NjQgdCA9IHVud3JhcCB0XG4gIGxldCBvZl9pbnQ2NCB0ID0gd3JhcCB0XG4gIGxldCBvZl9pbnQ2NF9leG4gdCA9IHdyYXBfZXhuIHRcbiAgbGV0IG9mX2ludDY0X3RydW5jIHQgPSB3cmFwX21vZHVsbyB0XG4gIGxldCB0X29mX3NleHAgeCA9IHdyYXBfZXhuIChpbnQ2NF9vZl9zZXhwIHgpXG4gIGxldCBzZXhwX29mX3QgeCA9IHNleHBfb2ZfaW50NjQgKHVud3JhcCB4KVxuICBsZXQgY29tcGFyZSAoeCA6IHQpIHkgPSBjb21wYXJlIHggeVxuICBsZXQgaXNfcG93MiB4ID0gSW50NjQuaXNfcG93MiAodW53cmFwIHgpXG5cbiAgbGV0IGNseiB4ID1cbiAgICAoKiBXZSBydW4gSW50NjQuY2x6IGRpcmVjdGx5IG9uIHRoZSB3cmFwcGVkIGludDYzIHZhbHVlLiBUaGlzIGlzIGNvcnJlY3QgYmVjYXVzZSB0aGVcbiAgICAgICBiaXRzIG9mIHRoZSBpbnQ2M19lbXVsIGFyZSBsZWZ0LWFsaWduZWQgaW4gdGhlIEludDY0LiAqKVxuICAgIEludDY0LmNseiB4XG4gIDs7XG5cbiAgbGV0IGN0eiB4ID0gSW50NjQuY3R6ICh1bndyYXAgeClcbiAgbGV0IGZsb29yX3BvdzIgeCA9IEludDY0LmZsb29yX3BvdzIgKHVud3JhcCB4KSB8PiB3cmFwX2V4blxuICBsZXQgY2VpbF9wb3cyIHggPSBJbnQ2NC5mbG9vcl9wb3cyICh1bndyYXAgeCkgfD4gd3JhcF9leG5cbiAgbGV0IGZsb29yX2xvZzIgeCA9IEludDY0LmZsb29yX2xvZzIgKHVud3JhcCB4KVxuICBsZXQgY2VpbF9sb2cyIHggPSBJbnQ2NC5jZWlsX2xvZzIgKHVud3JhcCB4KVxuZW5kXG5cbm9wZW4gV1xuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBXLnQgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoVy5nbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBXLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gVy5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChXLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKFcuc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IFcudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFcuY29tcGFyYXRvclxuICBsZXQgY29tcGFyZSA9IFcuY29tcGFyZVxuICBsZXQgaW52YXJpYW50ID0gVy5pbnZhcmlhbnRcblxuICAoKiBXZSBkb24ndCBleHBlY3QgW2hhc2hdIHRvIGZvbGxvdyB0aGUgYmVoYXZpb3Igb2YgaW50IGluIDY0Yml0IGFyY2hpdGVjdHVyZSAqKVxuICBsZXQgXyA9IGhhc2hcbiAgbGV0IGhhc2ggKHggOiB0KSA9IFN0ZGxpYi5IYXNodGJsLmhhc2ggeFxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBpbnZhbGlkX3N0ciB4ID0gUHJpbnRmLmZhaWx3aXRoZiBcIkludDYzLm9mX3N0cmluZzogaW52YWxpZCBpbnB1dCAlU1wiIHggKClcblxuICAoKlxuICAgICBcInNpZ25cIiByZWZlcnMgdG8gd2hldGhlciB0aGUgbnVtYmVyIHN0YXJ0cyB3aXRoIGEgJy0nXG4gICAgIFwic2lnbmVkbmVzcyA9IGZhbHNlXCIgbWVhbnMgdGhlIHJlc3Qgb2YgdGhlIG51bWJlciBpcyBwYXJzZWQgYXMgdW5zaWduZWQgYW5kIHRoZW4gY2FzdFxuICAgICB0byBzaWduZWQgd2l0aCB3cmFwLWFyb3VuZCBtb2R1bG8gMl5pXG4gICAgIFwic2lnbmVkbmVzcyA9IHRydWVcIiBtZWFucyBubyBzdWNoIGNyYXppbmVzcyBoYXBwZW5zXG5cbiAgICAgVGhlIHRlcm1pbm9sb2d5IGFuZCB0aGUgbG9naWMgaXMgZHVlIHRvIHRoZSBjb2RlIGluIGJ5dGVydW4vaW50cy5jIGluIG9jYW1sIDQuMDNcbiAgICAgKFtwYXJzZV9zaWduX2FuZF9iYXNlXSBmdW5jdGlvbikuXG5cbiAgICAgU2lnbmVkbmVzcyBlcXVhbHMgdHJ1ZSBmb3IgcGxhaW4gZGVjaW1hbCBudW1iZXIgKGUuZy4gMTIzNSwgLTY3ODkpXG5cbiAgICAgU2lnbmVkbmVzcyBlcXVhbHMgZmFsc2UgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAgLSBbMHhmZmZmXSwgWy0weGZmZmZdIChoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMGIwMTAxXSwgWy0wYjAxMDFdIChiaW5hcnkgcmVwcmVzZW50YXRpb24pXG4gICAgIC0gWzBvMTIzN10sIFstMG8xMjM3XSAob2N0YWwgcmVwcmVzZW50YXRpb24pXG4gICAgIC0gWzB1OTgxMl0sIFstMHU5ODEyXSAodW5zaWduZWQgZGVjaW1hbCByZXByZXNlbnRhdGlvbiAtIGF2YWlsYWJsZSBmcm9tIE9DYW1sIDQuMDMpICopXG4gIGxldCBzaWduX2FuZF9zaWduZWRuZXNzIHggPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHggaW5cbiAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHBvcywgc2lnbiA9XG4gICAgICBpZiAwIDwgbGVuXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggeC5bMF0gd2l0aFxuICAgICAgICB8ICctJyAtPiAxLCBgTmVnXG4gICAgICAgIHwgJysnIC0+IDEsIGBQb3NcbiAgICAgICAgfCBfIC0+IDAsIGBQb3MpXG4gICAgICBlbHNlIDAsIGBQb3NcbiAgICBpblxuICAgIGlmIHBvcyArIDIgPCBsZW5cbiAgICB0aGVuIChcbiAgICAgIGxldCBjMSA9IHguW3Bvc10gaW5cbiAgICAgIGxldCBjMiA9IHguW3BvcyArIDFdIGluXG4gICAgICBtYXRjaCBjMSwgYzIgd2l0aFxuICAgICAgfCAnMCcsICcwJyAuLiAnOScgLT4gc2lnbiwgdHJ1ZVxuICAgICAgfCAnMCcsIF8gLT4gc2lnbiwgZmFsc2VcbiAgICAgIHwgXyAtPiBzaWduLCB0cnVlKVxuICAgIGVsc2Ugc2lnbiwgdHJ1ZVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgeCA9IFN0ZGxpYi5JbnQ2NC50b19zdHJpbmcgKHVud3JhcCB4KVxuXG4gIGxldCBvZl9zdHJpbmdfcmF3IHN0ciA9XG4gICAgbGV0IHNpZ24sIHNpZ25lZG5lc3MgPSBzaWduX2FuZF9zaWduZWRuZXNzIHN0ciBpblxuICAgIGlmIHNpZ25lZG5lc3NcbiAgICB0aGVuIG9mX2ludDY0X2V4biAoU3RkbGliLkludDY0Lm9mX3N0cmluZyBzdHIpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9zX3N0ciA9XG4gICAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgICB8IGBOZWcgLT4gU3RyaW5nLnN1YiBzdHIgfnBvczoxIH5sZW46KFN0cmluZy5sZW5ndGggc3RyIC0gMSlcbiAgICAgICAgfCBgUG9zIC0+IHN0clxuICAgICAgaW5cbiAgICAgIGxldCBpbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5vZl9zdHJpbmcgcG9zX3N0ciBpblxuICAgICAgKCogdW5zaWduZWQgNjMtYml0IGludCBtdXN0IHBhcnNlIGFzIGEgcG9zaXRpdmUgc2lnbmVkIDY0LWJpdCBpbnQgKilcbiAgICAgIGlmIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBpbnQ2NCAwTCB0aGVuIGludmFsaWRfc3RyIHN0cjtcbiAgICAgIGxldCBpbnQ2MyA9IHdyYXBfbW9kdWxvIGludDY0IGluXG4gICAgICBtYXRjaCBzaWduIHdpdGhcbiAgICAgIHwgYE5lZyAtPiBuZWcgaW50NjNcbiAgICAgIHwgYFBvcyAtPiBpbnQ2MylcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgdHJ5IG9mX3N0cmluZ19yYXcgc3RyIHdpdGhcbiAgICB8IF8gLT4gaW52YWxpZF9zdHIgc3RyXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZ19vcHQgc3RyID1cbiAgICBtYXRjaCBvZl9zdHJpbmdfcmF3IHN0ciB3aXRoXG4gICAgfCB0IC0+IFNvbWUgdFxuICAgIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuICA7O1xuXG4gIGxldCBic3dhcDE2IHQgPSB3cmFwX21vZHVsbyAoSW50NjQuYnN3YXAxNiAodW53cmFwIHQpKVxuICBsZXQgYnN3YXAzMiB0ID0gd3JhcF9tb2R1bG8gKEludDY0LmJzd2FwMzIgKHVud3JhcCB0KSlcbiAgbGV0IGJzd2FwNDggdCA9IHdyYXBfbW9kdWxvIChJbnQ2NC5ic3dhcDQ4ICh1bndyYXAgdCkpXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBudW1fYml0cyA9IDYzXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBiaXRfbm90XG5sZXQgYml0X3hvciA9IGJpdF94b3JcbmxldCBiaXRfb3IgPSBiaXRfb3JcbmxldCBiaXRfYW5kID0gYml0X2FuZFxubGV0IHBvcGNvdW50ID0gcG9wY291bnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcG93ID0gcG93XG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWF4X3ZhbHVlID0gbWF4X3ZhbHVlXG5sZXQgbWluX3ZhbHVlID0gbWluX3ZhbHVlXG5sZXQgbWludXNfb25lID0gd3JhcF9leG4gU3RkbGliLkludDY0Lm1pbnVzX29uZVxubGV0IG9uZSA9IHdyYXBfZXhuIFN0ZGxpYi5JbnQ2NC5vbmVcbmxldCB6ZXJvID0gd3JhcF9leG4gU3RkbGliLkludDY0Lnplcm9cbmxldCBpc19wb3cyID0gaXNfcG93MlxubGV0IGZsb29yX3BvdzIgPSBmbG9vcl9wb3cyXG5sZXQgY2VpbF9wb3cyID0gY2VpbF9wb3cyXG5sZXQgZmxvb3JfbG9nMiA9IGZsb29yX2xvZzJcbmxldCBjZWlsX2xvZzIgPSBjZWlsX2xvZzJcbmxldCBjbHogPSBjbHpcbmxldCBjdHogPSBjdHpcbmxldCB0b19mbG9hdCB4ID0gU3RkbGliLkludDY0LnRvX2Zsb2F0ICh1bndyYXAgeClcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgeCA9IHdyYXBfbW9kdWxvIChTdGRsaWIuSW50NjQub2ZfZmxvYXQgeClcblxubGV0IG9mX2Zsb2F0IHQgPVxuICBsZXQgb3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgdCA+PSBmbG9hdF9sb3dlcl9ib3VuZCAmJiB0IDw9IGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gd3JhcF9tb2R1bG8gKFN0ZGxpYi5JbnQ2NC5vZl9mbG9hdCB0KVxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQ2My5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAoKVxuOztcblxubGV0IG9mX2ludDY0ID0gb2ZfaW50NjRcbmxldCBvZl9pbnQ2NF9leG4gPSBvZl9pbnQ2NF9leG5cbmxldCBvZl9pbnQ2NF90cnVuYyA9IG9mX2ludDY0X3RydW5jXG5sZXQgdG9faW50NjQgPSB0b19pbnQ2NFxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5sZXQgaW5jciByID0gciA6PSAhciArIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gIXIgLSBvbmVcblxuKCogV2UgY2FuIHJldXNlIGNvbnZlcnNpb24gZnVuY3Rpb24gZnJvbS90byBpbnQ2NCBoZXJlLiAqKVxubGV0IG9mX2ludCB4ID0gd3JhcF9leG4gKENvbnYuaW50X3RvX2ludDY0IHgpXG5sZXQgb2ZfaW50X2V4biB4ID0gb2ZfaW50IHhcbmxldCB0b19pbnQgeCA9IENvbnYuaW50NjRfdG9faW50ICh1bndyYXAgeClcbmxldCB0b19pbnRfZXhuIHggPSBDb252LmludDY0X3RvX2ludF9leG4gKHVud3JhcCB4KVxubGV0IHRvX2ludF90cnVuYyB4ID0gQ29udi5pbnQ2NF90b19pbnRfdHJ1bmMgKHVud3JhcCB4KVxubGV0IG9mX2ludDMyIHggPSB3cmFwX2V4biAoQ29udi5pbnQzMl90b19pbnQ2NCB4KVxubGV0IG9mX2ludDMyX2V4biB4ID0gb2ZfaW50MzIgeFxubGV0IHRvX2ludDMyIHggPSBDb252LmludDY0X3RvX2ludDMyICh1bndyYXAgeClcbmxldCB0b19pbnQzMl9leG4geCA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuICh1bndyYXAgeClcbmxldCB0b19pbnQzMl90cnVuYyB4ID0gQ29udi5pbnQ2NF90b19pbnQzMl90cnVuYyAodW53cmFwIHgpXG5sZXQgb2ZfbmF0aXZlaW50IHggPSBvZl9pbnQ2NCAoQ29udi5uYXRpdmVpbnRfdG9faW50NjQgeClcbmxldCBvZl9uYXRpdmVpbnRfZXhuIHggPSB3cmFwX2V4biAoQ29udi5uYXRpdmVpbnRfdG9faW50NjQgeClcbmxldCBvZl9uYXRpdmVpbnRfdHJ1bmMgeCA9IG9mX2ludDY0X3RydW5jIChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IHRvX25hdGl2ZWludCB4ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnQgKHVud3JhcCB4KVxubGV0IHRvX25hdGl2ZWludF9leG4geCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X2V4biAodW53cmFwIHgpXG5sZXQgdG9fbmF0aXZlaW50X3RydW5jIHggPSBDb252LmludDY0X3RvX25hdGl2ZWludF90cnVuYyAodW53cmFwIHgpXG5cbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKFQuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBULmhhc2hfZm9sZF90XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IFQuaGFzaCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gKCB+LSApXG4gICAgbGV0ICggPCApID0gKCA8IClcblxuICAgIGxldCB0b19zdHJpbmcgaSA9XG4gICAgICAoKiB0aGUgdXNlIG9mIFt1bndyYXBfdW5zaWduZWRdIGhlcmUgaXMgaW1wb3J0YW50IGZvciB0aGUgY2FzZSBvZiBbbWluX3ZhbHVlXSAqKVxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlTHhcIiAodW53cmFwX3Vuc2lnbmVkIGkpXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgcyA9IG9mX3N0cmluZyAoXCIweFwiIF4gcylcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjMuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyB4ID0gdG9fc3RyaW5nIHhcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjNcIlxuICBlbmQpXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgbGV0ICggbGFuZCApID0gYml0X2FuZFxuICBsZXQgKCBsb3IgKSA9IGJpdF9vclxuICBsZXQgKCBseG9yICkgPSBiaXRfeG9yXG4gIGxldCBsbm90ID0gYml0X25vdFxuICBsZXQgKCBsc2wgKSA9IHNoaWZ0X2xlZnRcbiAgbGV0ICggYXNyICkgPSBzaGlmdF9yaWdodFxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludDYzXSBhbmQgW0ludDYzLk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxubW9kdWxlIFJlcHIgPSBzdHJ1Y3RcbiAgdHlwZSBlbXVsYXRlZCA9IHRcblxuICB0eXBlICgndW5kZXJseWluZ190eXBlLCAnaW50ZXJtZWRpYXRlX3R5cGUpIHQgPVxuICAgIHwgSW50IDogKGludCwgaW50KSB0XG4gICAgfCBJbnQ2NCA6IChpbnQ2NCwgZW11bGF0ZWQpIHRcbmVuZFxuXG5sZXQgcmVwciA9IFJlcHIuSW50NjRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGRsaWIuSW50MzJcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2ludDMyIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2ludDMyXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoaW50MzJfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50MzIgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50MzJfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nX29wdCA9IG9mX3N0cmluZ19vcHRcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5sZXQgbnVtX2JpdHMgPSAzMlxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfb2ZfYml0cyA9IGZsb2F0X29mX2JpdHNcbmxldCBiaXRzX29mX2Zsb2F0ID0gYml0c19vZl9mbG9hdFxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGxvZ25vdFxubGV0IGJpdF94b3IgPSBsb2d4b3JcbmxldCBiaXRfb3IgPSBsb2dvclxubGV0IGJpdF9hbmQgPSBsb2dhbmRcbmxldCBtaW5fdmFsdWUgPSBtaW5faW50XG5sZXQgbWF4X3ZhbHVlID0gbWF4X2ludFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtaW51c19vbmUgPSBtaW51c19vbmVcbmxldCBvbmUgPSBvbmVcbmxldCB6ZXJvID0gemVyb1xubGV0IGNvbXBhcmUgPSBjb21wYXJlXG5sZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IG9mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIG9mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50MzIub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIEluZml4X2NvbXBhcmUgPSBzdHJ1Y3RcbiAgb3BlbiBQb2x5XG5cbiAgbGV0ICggPj0gKSAoeCA6IHQpIHkgPSB4ID49IHlcbiAgbGV0ICggPD0gKSAoeCA6IHQpIHkgPSB4IDw9IHlcbiAgbGV0ICggPSApICh4IDogdCkgeSA9IHggPSB5XG4gIGxldCAoID4gKSAoeCA6IHQpIHkgPSB4ID4geVxuICBsZXQgKCA8ICkgKHggOiB0KSB5ID0geCA8IHlcbiAgbGV0ICggPD4gKSAoeCA6IHQpIHkgPSB4IDw+IHlcbmVuZFxuXG5tb2R1bGUgQ29tcGFyZSA9IHN0cnVjdFxuICBpbmNsdWRlIEluZml4X2NvbXBhcmVcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IGFzY2VuZGluZyA9IGNvbXBhcmVcbiAgbGV0IGRlc2NlbmRpbmcgeCB5ID0gY29tcGFyZSB5IHhcbiAgbGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5XG4gIGxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgZXF1YWwgKHggOiB0KSB5ID0geCA9IHlcbiAgbGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG4gIGxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbiAgbGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbiAgOztcblxuICBsZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBDb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgKCAvICkgPSBkaXZcbmxldCAoICogKSA9IG11bFxubGV0ICggLSApID0gc3ViXG5sZXQgKCArICkgPSBhZGRcbmxldCAoIH4tICkgPSBuZWdcbmxldCBpbmNyIHIgPSByIDo9ICFyICsgb25lXG5sZXQgZGVjciByID0gciA6PSAhciAtIG9uZVxubGV0IG9mX2ludDMyIHQgPSB0XG5sZXQgb2ZfaW50MzJfZXhuID0gb2ZfaW50MzJcbmxldCB0b19pbnQzMiB0ID0gdFxubGV0IHRvX2ludDMyX2V4biA9IHRvX2ludDMyXG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5pbnQzMl9wb3Bjb3VudFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5sZXQgb2ZfaW50ID0gQ29udi5pbnRfdG9faW50MzJcbmxldCBvZl9pbnRfZXhuID0gQ29udi5pbnRfdG9faW50MzJfZXhuXG5sZXQgb2ZfaW50X3RydW5jID0gQ29udi5pbnRfdG9faW50MzJfdHJ1bmNcbmxldCB0b19pbnQgPSBDb252LmludDMyX3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252LmludDMyX3RvX2ludF9leG5cbmxldCB0b19pbnRfdHJ1bmMgPSBDb252LmludDMyX3RvX2ludF90cnVuY1xubGV0IG9mX2ludDY0ID0gQ29udi5pbnQ2NF90b19pbnQzMlxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuXG5sZXQgb2ZfaW50NjRfdHJ1bmMgPSBDb252LmludDY0X3RvX2ludDMyX3RydW5jXG5sZXQgdG9faW50NjQgPSBDb252LmludDMyX3RvX2ludDY0XG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfZXhuXG5sZXQgb2ZfbmF0aXZlaW50X3RydW5jID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfdHJ1bmNcbmxldCB0b19uYXRpdmVpbnQgPSBDb252LmludDMyX3RvX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBwb3cgYiBlID0gb2ZfaW50X2V4biAoSW50X21hdGguUHJpdmF0ZS5pbnRfcG93ICh0b19pbnRfZXhuIGIpICh0b19pbnRfZXhuIGUpKVxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbmV4dGVybmFsIGJzd2FwMzIgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlYnN3YXBfaW50MzJcIlxuXG5sZXQgYnN3YXAxNiB4ID0gU3RkbGliLkludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwMzIgeCkgMTZcblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG4gIG9wZW4gSW50MzJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG4gIGxldCAoIGxvciApID0gU3RkbGliLkludDMyLmxvZ29yXG4gIGxldCAoIGxzciApID0gU3RkbGliLkludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbiAgbGV0ICggbGFuZCApID0gU3RkbGliLkludDMyLmxvZ2FuZFxuXG4gICgqKiBcImNlaWxpbmcgcG93ZXIgb2YgMlwiIC0gTGVhc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGNlaWxfcG93MiB4ID1cbiAgICBpZiB4IDw9IFN0ZGxpYi5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0gU3RkbGliLkludDMyLnByZWQgeCBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgU3RkbGliLkludDMyLnN1Y2MgeFxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBTdGRsaWIuSW50MzIuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIFN0ZGxpYi5JbnQzMi5zdWIgeCAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IFN0ZGxpYi5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCBTdGRsaWIuSW50MzIucHJlZCB4ID0gU3RkbGliLkludDMyLnplcm9cbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBpbnQzMiBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoaW50MzJbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50MzJfY2x6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChpbnQzMltAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDMyX2N0elwiIFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBpIDw9IFN0ZGxpYi5JbnQzMi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiW0ludDMyLmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDMyIGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBjZWlsX2xvZzIgaSA9XG4gICAgaWYgaSA8PSBTdGRsaWIuSW50MzIuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQzMi5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludDMyIGkgXSk7XG4gICAgKCogVGhlIFtpID0gMV0gY2hlY2sgaXMgbmVlZGVkIGJlY2F1c2UgY2x6KDApIGlzIHVuZGVmaW5lZCAqKVxuICAgIGlmIFN0ZGxpYi5JbnQzMi5lcXVhbCBpIFN0ZGxpYi5JbnQzMi5vbmVcbiAgICB0aGVuIDBcbiAgICBlbHNlIG51bV9iaXRzIC0gY2x6IChTdGRsaWIuSW50MzIucHJlZCBpKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgdHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludDMyIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnQzMlxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludDMyIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSAoIH4tIClcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJWx4XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIiVseFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDMyLkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50MzJcIlxuICBlbmQpXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChDb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGxldCAoIGxhbmQgKSA9IGJpdF9hbmRcbiAgbGV0ICggbG9yICkgPSBiaXRfb3JcbiAgbGV0ICggbHhvciApID0gYml0X3hvclxuICBsZXQgbG5vdCA9IGJpdF9ub3RcbiAgbGV0ICggbHNsICkgPSBzaGlmdF9sZWZ0XG4gIGxldCAoIGFzciApID0gc2hpZnRfcmlnaHRcbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnQzMl0gYW5kIFtJbnQzMi5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbm1vZHVsZSBSZXByID0gSW50NjNfZW11bC5SZXByXG5cbigqIEluIGEgd29ybGQgd2hlcmUgdGhlIGNvbXBpbGVyIHdvdWxkIHVuZGVyc3RhbmQgW0BAaW1tZWRpYXRlNjRdIGF0dHJpYnV0ZXMgb24gdHlwZVxuICAgZGVjbGFyYXRpb25zLCB0aGlzIG1vZHVsZSBpcyBob3cgb25lIHdvdWxkIHByb2R1Y2UgYSBbdHlwZSB0XSB3aXRoIHRoaXMgYXR0cmlidXRlLiAqKVxubW9kdWxlIEltbWVkaWF0ZTY0IDogc2lnXG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkgKE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlKSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGU2NF1cblxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG5cbiAgICB2YWwgcmVwciA6IHQgcmVwclxuICBlbmRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBOb25faW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChJbW1lZGlhdGUgOiBJbW1lZGlhdGUpIChOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZSkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlNjRdXG5cbiAgICB0eXBlICdhIHJlcHIgPVxuICAgICAgfCBJbW1lZGlhdGUgOiBJbW1lZGlhdGUudCByZXByXG4gICAgICB8IE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlLnQgcmVwclxuXG4gICAgZXh0ZXJuYWwgdHJhbnNwYXJlbnRfbWFnaWMgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYltAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG5cbiAgICBsZXQgcmVwciA9XG4gICAgICAoKiBbT2JqLm1hZ2ljXSBpbnZvbHZlcyBvcGFxdWVuZXNzIHVuZGVyIEZsYW1iZGEgMiB3aGljaCB3aWxsIGluaGliaXRcbiAgICAgICAgIGF2YWlsYWJpbGl0eSBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSBmb3IgbGF0ZXIgaW5saW5pbmdcbiAgICAgICAgIChlLmcuIGludG8gZmxvYXQubWwpLiBBcyBzdWNoIHdlIGV4cGxpY2l0bHkgdXNlICVpZGVudGl0eSBoZXJlLiAqKVxuICAgICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgICB8IFc2NCAtPiAodHJhbnNwYXJlbnRfbWFnaWMgSW1tZWRpYXRlIDogdCByZXByKVxuICAgICAgfCBXMzIgLT4gKHRyYW5zcGFyZW50X21hZ2ljIE5vbl9pbW1lZGlhdGUgOiB0IHJlcHIpXG4gICAgOztcbiAgZW5kXG4gIFtAQGlubGluZSBhbHdheXNdXG5lbmRcblxuaW5jbHVkZSBJbW1lZGlhdGU2NC5NYWtlIChJbnQpIChJbnQ2M19lbXVsKVxuXG5tb2R1bGUgQmFja2VuZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICBpbmNsdWRlIEludF9pbnRmLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gICAgdmFsIHRvX2ludCA6IHQgLT4gaW50IG9wdGlvblxuICAgIHZhbCB0b19pbnRfdHJ1bmMgOiB0IC0+IGludFxuICAgIHZhbCBvZl9pbnQzMiA6IGludDMyIC0+IHRcbiAgICB2YWwgdG9faW50MzIgOiB0IC0+IEludDMyLnQgb3B0aW9uXG4gICAgdmFsIHRvX2ludDMyX3RydW5jIDogdCAtPiBJbnQzMi50XG4gICAgdmFsIG9mX2ludDY0IDogSW50NjQudCAtPiB0IG9wdGlvblxuICAgIHZhbCBvZl9pbnQ2NF90cnVuYyA6IEludDY0LnQgLT4gdFxuICAgIHZhbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gdCBvcHRpb25cbiAgICB2YWwgdG9fbmF0aXZlaW50IDogdCAtPiBuYXRpdmVpbnQgb3B0aW9uXG4gICAgdmFsIG9mX25hdGl2ZWludF90cnVuYyA6IG5hdGl2ZWludCAtPiB0XG4gICAgdmFsIHRvX25hdGl2ZWludF90cnVuYyA6IHQgLT4gbmF0aXZlaW50XG4gICAgdmFsIG9mX2Zsb2F0X3VuY2hlY2tlZCA6IGZsb2F0IC0+IHRcbiAgICB2YWwgcmVwciA6ICh0LCB0KSBJbnQ2M19lbXVsLlJlcHIudFxuICAgIHZhbCBic3dhcDE2IDogdCAtPiB0XG4gICAgdmFsIGJzd2FwMzIgOiB0IC0+IHRcbiAgICB2YWwgYnN3YXA0OCA6IHQgLT4gdFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBOYXRpdmUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IHRvX2ludCB4ID0gU29tZSB4XG4gICAgbGV0IHRvX2ludF90cnVuYyB4ID0geFxuXG4gICAgKCogW29mX2ludDMyX2V4bl0gaXMgYSBzYWZlIG9wZXJhdGlvbiBvbiBwbGF0Zm9ybXMgd2l0aCA2NC1iaXQgd29yZCBzaXplcy4gKilcbiAgICBsZXQgb2ZfaW50MzIgPSBvZl9pbnQzMl9leG5cbiAgICBsZXQgdG9fbmF0aXZlaW50X3RydW5jIHggPSB0b19uYXRpdmVpbnQgeFxuICAgIGxldCB0b19uYXRpdmVpbnQgeCA9IFNvbWUgKHRvX25hdGl2ZWludCB4KVxuICAgIGxldCByZXByID0gSW50NjNfZW11bC5SZXByLkludFxuICAgIGxldCBic3dhcDMyIHQgPSBJbnQ2NC50b19pbnRfdHJ1bmMgKEludDY0LmJzd2FwMzIgKEludDY0Lm9mX2ludCB0KSlcbiAgICBsZXQgYnN3YXA0OCB0ID0gSW50NjQudG9faW50X3RydW5jIChJbnQ2NC5ic3dhcDQ4IChJbnQ2NC5vZl9pbnQgdCkpXG4gIGVuZFxuXG4gIGxldCBpbXBsIDogKG1vZHVsZSBTKSA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gKG1vZHVsZSBOYXRpdmUgOiBTKVxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiAobW9kdWxlIEludDYzX2VtdWwgOiBTKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgKHZhbCBCYWNrZW5kLmltcGwgOiBCYWNrZW5kLlMpXG5cbm1vZHVsZSBPdmVyZmxvd19leG4gPSBzdHJ1Y3RcbiAgbGV0ICggKyApIHQgdSA9XG4gICAgbGV0IHN1bSA9IHQgKyB1IGluXG4gICAgaWYgYml0X29yIChiaXRfeG9yIHQgdSkgKGJpdF94b3IgdCAoYml0X25vdCBzdW0pKSA8IHplcm9cbiAgICB0aGVuIHN1bVxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggKyApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJzdW1cIiwgc2V4cF9vZl90IHN1bSBdKVxuICA7O1xuXG4gIGxldCAoIC0gKSB0IHUgPVxuICAgIGxldCBkaWZmID0gdCAtIHUgaW5cbiAgICBsZXQgcG9zX2RpZmYgPSB0ID4gdSBpblxuICAgIGlmIHQgPD4gdSAmJiBCb29sLiggPD4gKSBwb3NfZGlmZiAoaXNfcG9zaXRpdmUgZGlmZilcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoIC0gKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwiZGlmZlwiLCBzZXhwX29mX3QgZGlmZiBdKVxuICAgIGVsc2UgZGlmZlxuICA7O1xuXG4gIGxldCBuZWdhdGl2ZV9vbmUgPSBvZl9pbnQgKC0xKVxuICBsZXQgZGl2X3dvdWxkX292ZXJmbG93IHQgdSA9IHQgPSBtaW5fdmFsdWUgJiYgdSA9IG5lZ2F0aXZlX29uZVxuXG4gIGxldCAoICogKSB0IHUgPVxuICAgIGxldCBwcm9kdWN0ID0gdCAqIHUgaW5cbiAgICBpZiB1IDw+IHplcm8gJiYgKGRpdl93b3VsZF9vdmVyZmxvdyBwcm9kdWN0IHUgfHwgcHJvZHVjdCAvIHUgPD4gdClcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoICogKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwicHJvZHVjdFwiLCBzZXhwX29mX3QgcHJvZHVjdCBdKVxuICAgIGVsc2UgcHJvZHVjdFxuICA7O1xuXG4gIGxldCAoIC8gKSB0IHUgPVxuICAgIGlmIGRpdl93b3VsZF9vdmVyZmxvdyB0IHVcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoIC8gKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwicHJvZHVjdFwiLCBzZXhwX29mX3QgKHQgLyB1KSBdKVxuICAgIGVsc2UgdCAvIHVcbiAgOztcblxuICBsZXQgYWJzIHQgPSBpZiB0ID0gbWluX3ZhbHVlIHRoZW4gZmFpbHdpdGggXCJhYnMgb3ZlcmZsb3dcIiBlbHNlIGFicyB0XG4gIGxldCBuZWcgdCA9IGlmIHQgPSBtaW5fdmFsdWUgdGhlbiBmYWlsd2l0aCBcIm5lZyBvdmVyZmxvd1wiIGVsc2UgbmVnIHRcbmVuZFxuXG5sZXQgKCkgPSBhc3NlcnQgKEludC4oID0gKSBudW1fYml0cyA2MylcblxubGV0IHJhbmRvbV9vZl9pbnQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBib3VuZCA9XG4gIG9mX2ludCAoUmFuZG9tLlN0YXRlLmludCBzdGF0ZSAodG9faW50X2V4biBib3VuZCkpXG47O1xuXG5sZXQgcmFuZG9tX29mX2ludDY0ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgYm91bmQgPVxuICBvZl9pbnQ2NF9leG4gKFJhbmRvbS5TdGF0ZS5pbnQ2NCBzdGF0ZSAodG9faW50NjQgYm91bmQpKVxuOztcblxubGV0IHJhbmRvbSA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiByYW5kb21fb2ZfaW50XG4gIHwgVzMyIC0+IHJhbmRvbV9vZl9pbnQ2NFxuOztcblxubGV0IHJhbmRvbV9pbmNsX29mX2ludCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxvIGhpID1cbiAgb2ZfaW50IChSYW5kb20uU3RhdGUuaW50X2luY2wgc3RhdGUgKHRvX2ludF9leG4gbG8pICh0b19pbnRfZXhuIGhpKSlcbjs7XG5cbmxldCByYW5kb21faW5jbF9vZl9pbnQ2NCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxvIGhpID1cbiAgb2ZfaW50NjRfZXhuIChSYW5kb20uU3RhdGUuaW50NjRfaW5jbCBzdGF0ZSAodG9faW50NjQgbG8pICh0b19pbnQ2NCBoaSkpXG47O1xuXG5sZXQgcmFuZG9tX2luY2wgPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gcmFuZG9tX2luY2xfb2ZfaW50XG4gIHwgVzMyIC0+IHJhbmRvbV9pbmNsX29mX2ludDY0XG47O1xuXG5sZXQgZmxvb3JfbG9nMiB0ID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IHQgfD4gdG9faW50X2V4biB8PiBJbnQuZmxvb3JfbG9nMlxuICB8IFczMiAtPlxuICAgIGlmIHQgPD0gemVyb1xuICAgIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl90IHQgXSk7XG4gICAgbGV0IGZsb29yX2xvZzIgPSByZWYgKEludC4oIC0gKSBudW1fYml0cyAyKSBpblxuICAgIHdoaWxlIGVxdWFsIHplcm8gKGJpdF9hbmQgdCAoc2hpZnRfbGVmdCBvbmUgIWZsb29yX2xvZzIpKSBkb1xuICAgICAgZmxvb3JfbG9nMiA6PSBJbnQuKCAtICkgIWZsb29yX2xvZzIgMVxuICAgIGRvbmU7XG4gICAgIWZsb29yX2xvZzJcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBSZXByID0gUmVwclxuXG4gIGxldCByZXByID0gcmVwclxuXG4gIG1vZHVsZSBFbXVsID0gSW50NjNfZW11bFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNodGJsLktleSAqKVxubW9kdWxlIEtleSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgICgqKiBUd28gW3RdcyB0aGF0IFtjb21wYXJlXSBlcXVhbCBtdXN0IGhhdmUgZXF1YWwgaGFzaGVzIGZvciB0aGUgaGFzaHRhYmxlXG4gICAgICAgIHRvIGJlaGF2ZSBwcm9wZXJseS4gKilcbiAgICB2YWwgaGFzaCA6IHQgLT4gaW50XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuZW5kXG5cbigqKiBAY2Fub25pY2FsIEJhc2UuSGFzaHRibC5NZXJnZV9pbnRvX2FjdGlvbiAqKVxubW9kdWxlIE1lcmdlX2ludG9fYWN0aW9uID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBSZW1vdmVcbiAgICB8IFNldF90byBvZiAnYVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29ycyA9IHNpZ1xuICAoKiogezIgQWNjZXNzb3JzfSAqKVxuXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdhIGtleVxuXG4gIHZhbCBzZXhwX29mX2tleSA6ICgnYSwgXykgdCAtPiAnYSBrZXkgLT4gU2V4cC50XG4gIHZhbCBjbGVhciA6IChfLCBfKSB0IC0+IHVuaXRcbiAgdmFsIGNvcHkgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHRcblxuICAoKiogQXR0ZW1wdGluZyB0byBtb2RpZnkgKFtzZXRdLCBbcmVtb3ZlXSwgZXRjLikgdGhlIGhhc2h0YWJsZSBkdXJpbmcgaXRlcmF0aW9uIChbZm9sZF0sXG4gICAgICBbaXRlcl0sIFtpdGVyX2tleXNdLCBbaXRlcmldKSB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbi4gKilcbiAgdmFsIGZvbGRcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGtleSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIEl0ZXJhdGVzIG92ZXIgYm90aCBrZXlzIGFuZCB2YWx1ZXMuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBIYXNodGJsLml0ZXJpIGggfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIHByaW50X2VuZGxpbmUgKFByaW50Zi5zcHJpbnRmIFwiJWQtJWRcIiBrZXkgZGF0YSkpOztcbiAgICAgIDEtNFxuICAgICAgNS02XG4gICAgICAtIDogdW5pdCA9ICgpXG4gICAgICB2fSAqKVxuICB2YWwgaXRlcmkgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gIHZhbCBleGlzdHNpIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgY291bnRpIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuICB2YWwgY291bnQgOiAoXywgJ2IpIHQgLT4gZjooKCdiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSBrZXkgLT4gYm9vbFxuICB2YWwgcmVtb3ZlIDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiB1bml0XG5cbiAgKCoqIENob29zZSBhbiBhcmJpdHJhcnkga2V5L3ZhbHVlIHBhaXIgb2YgYSBoYXNoIHRhYmxlLiBSZXR1cm5zIFtOb25lXSBpZiBbdF0gaXMgZW1wdHkuXG5cbiAgICAgIFRoZSBjaG9pY2UgaXMgZGV0ZXJtaW5pc3RpYy4gQ2FsbGluZyBbY2hvb3NlXSBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSB0YWJsZVxuICAgICAgcmV0dXJucyB0aGUgc2FtZSBrZXkvdmFsdWUgcGFpciwgc28gbG9uZyBhcyB0aGUgdGFibGUgaXMgbm90IG11dGF0ZWQgaW4gYmV0d2Vlbi5cbiAgICAgIEJleW9uZCBkZXRlcm1pbmlzbSwgbm8gZ3VhcmFudGVlcyBhcmUgbWFkZSBhYm91dCBob3cgdGhlIGNob2ljZSBpcyBtYWRlLiBFeHBlY3RcbiAgICAgIGJpYXMgdG93YXJkIGNlcnRhaW4gaGFzaCB2YWx1ZXMuXG5cbiAgICAgIFRoaXMgaGFzaCBiaWFzIGNhbiBsZWFkIHRvIGRlZ2VuZXJhdGUgcGVyZm9ybWFuY2UgaW4gc29tZSBjYXNlcywgc3VjaCBhcyBjbGVhcmluZ1xuICAgICAgYSBoYXNoIHRhYmxlIHVzaW5nIHJlcGVhdGVkIFtjaG9vc2VdIGFuZCBbcmVtb3ZlXS4gQXQgZWFjaCBpdGVyYXRpb24sIGZpbmRpbmcgdGhlXG4gICAgICBuZXh0IGVsZW1lbnQgbWF5IGhhdmUgdG8gc2NhbiBmYXJ0aGVyIGZyb20gaXRzIGluaXRpYWwgaGFzaCB2YWx1ZS4gKilcbiAgdmFsIGNob29zZSA6ICgnYSwgJ2IpIHQgLT4gKCdhIGtleSAqICdiKSBvcHRpb25cblxuICAoKiogTGlrZSBbY2hvb3NlXS4gUmFpc2VzIGlmIFt0XSBpcyBlbXB0eS4gKilcbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAqICdiXG5cbiAgKCoqIENob29zZXMgYSByYW5kb20ga2V5L3ZhbHVlIHBhaXIgb2YgYSBoYXNoIHRhYmxlLiBSZXR1cm5zIFtOb25lXSBpZiBbdF0gaXMgZW1wdHkuXG5cbiAgICAgIFRoZSBjaG9pY2UgaXMgZGlzdHJpYnV0ZWQgdW5pZm9ybWx5IGFjcm9zcyBoYXNoIHZhbHVlcywgcmF0aGVyIHRoYW4gYWNyb3NzIGtleXNcbiAgICAgIHRoZW1zZWx2ZXMuIEFzIGEgY29uc2VxdWVuY2UsIHRoZSBjbG9zZXIgdGhlIGtleXMgYXJlIHRvIGV2ZW5seSBzcGFjZWQgb3V0IGluIHRoZVxuICAgICAgdGFibGUsIHRoZSBjbG9zZXIgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHRvIGEgdW5pZm9ybSBjaG9pY2Ugb2Yga2V5cy5cblxuICAgICAgVGhpcyBmdW5jdGlvbiBtYXkgYmUgcHJlZmVyYWJsZSB0byBbY2hvb3NlXSB3aGVuIG5vbmRldGVybWluaXN0aWMgY2hvaWNlIGlzXG4gICAgICBhY2NlcHRhYmxlLCBhbmQgYmlhcyB0b3dhcmQgY2VydGFpbiBoYXNoIHZhbHVlcyBpcyB1bmRlc2lyYWJsZS4gKilcbiAgdmFsIGNob29zZV9yYW5kb21seVxuICAgIDogID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgKCoqIGRlZmF1bHQ6IFtSYW5kb20uU3RhdGUuZGVmYXVsdF0gKilcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gKCdhIGtleSAqICdiKSBvcHRpb25cblxuICAoKiogTGlrZSBbY2hvb3NlX3JhbmRvbWx5XS4gUmFpc2VzIGlmIFt0XSBpcyBlbXB0eS4gKilcbiAgdmFsIGNob29zZV9yYW5kb21seV9leG5cbiAgICA6ICA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50ICgqKiBkZWZhdWx0OiBbUmFuZG9tLlN0YXRlLmRlZmF1bHRdICopXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleSAqICdiXG5cbiAgKCoqIFNldHMgdGhlIGdpdmVuIFtrZXldIHRvIFtkYXRhXS4gKilcbiAgdmFsIHNldCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW2FkZF0gYW5kIFthZGRfZXhuXSBsZWF2ZSB0aGUgdGFibGUgdW5jaGFuZ2VkIGlmIHRoZSBrZXkgd2FzIGFscmVhZHkgcHJlc2VudC4gKilcbiAgdmFsIGFkZCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IFsgYE9rIHwgYER1cGxpY2F0ZSBdXG5cbiAgdmFsIGFkZF9leG4gOiAoJ2EsICdiKSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0XG5cbiAgKCoqIFtjaGFuZ2UgdCBrZXkgfmZdIGNoYW5nZXMgW3RdJ3MgdmFsdWUgZm9yIFtrZXldIHRvIGJlIFtmIChmaW5kIHQga2V5KV0uICopXG4gIHZhbCBjaGFuZ2UgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBmOigoJ2Igb3B0aW9uIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbdXBkYXRlIHQga2V5IH5mXSBpcyBbY2hhbmdlIHQga2V5IH5mOihmdW4gbyAtPiBTb21lIChmIG8pKV0uICopXG4gIHZhbCB1cGRhdGUgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBmOigoJ2Igb3B0aW9uIC0+ICdiKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFt1cGRhdGVfYW5kX3JldHVybiB0IGtleSB+Zl0gaXMgW3VwZGF0ZV0sIGJ1dCByZXR1cm5zIHRoZSByZXN1bHQgb2YgW2Ygb10uICopXG4gIHZhbCB1cGRhdGVfYW5kX3JldHVybiA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCgnYiBvcHRpb24gLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiXG5cbiAgKCoqIFttYXAgdCBmXSByZXR1cm5zIGEgbmV3IHRhYmxlIHdpdGggdmFsdWVzIHJlcGxhY2VkIGJ5IHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgW2ZdXG4gICAgICB0byB0aGUgY3VycmVudCB2YWx1ZXMuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBsZXQgaCcgPSBIYXNodGJsLm1hcCBoIH5mOigoZnVuIHggLT4geCAqIDIpW0Bsb2NhbF0pIGluXG4gICAgICBIYXNodGJsLnRvX2FsaXN0IGgnOztcbiAgICAgIC0gOiAoaW50ICogaW50KSBsaXN0ID0gWyg1LCAxMik7ICgxLCA4KV1cbiAgICAgIHZ9ICopXG4gIHZhbCBtYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYiAtPiAnYylbQGxvY2FsXSkgLT4gKCdhLCAnYykgdFxuXG4gICgqKiBMaWtlIFttYXBdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBtYXBpIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjKVtAbG9jYWxdKSAtPiAoJ2EsICdjKSB0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgdGFibGUgYnkgZmlsdGVyaW5nIHRoZSBnaXZlbiB0YWJsZSdzIHZhbHVlcyBieSBbZl06IHRoZSBrZXlzIGZvciB3aGljaFxuICAgICAgW2ZdIGFwcGxpZWQgdG8gdGhlIGN1cnJlbnQgdmFsdWUgcmV0dXJucyBbU29tZV0gYXJlIGtlcHQsIGFuZCB0aG9zZSBmb3Igd2hpY2ggaXRcbiAgICAgIHJldHVybnMgW05vbmVdIGFyZSBkaXNjYXJkZWQuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBIYXNodGJsLmZpbHRlcl9tYXAgaCB+ZjooKGZ1biB4IC0+IGlmIHggPiA1IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlbQGxvY2FsXSlcbiAgICAgIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgLSA6IChpbnQgKiBpbnQpIGxpc3QgPSBbKDUsIDYpXVxuICAgICAgdn0gKilcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYiAtPiAnYyBvcHRpb24pW0Bsb2NhbF0pIC0+ICgnYSwgJ2MpIHRcblxuICAoKiogTGlrZSBbZmlsdGVyX21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2Mgb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2MpIHRcblxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYSBrZXkgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyIDogKCdhLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyaSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIFJldHVybnMgbmV3IHRhYmxlcyB3aXRoIGJvdW5kIHZhbHVlcyBwYXJ0aXRpb25lZCBieSBbZl0gYXBwbGllZCB0byB0aGUgYm91bmRcbiAgICAgIHZhbHVlcy4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooKCdiIC0+ICgnYywgJ2QpIEVpdGhlci50KVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2MpIHQgKiAoJ2EsICdkKSB0XG5cbiAgKCoqIExpa2UgW3BhcnRpdGlvbl9tYXBdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICgnYywgJ2QpIEVpdGhlci50KVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2MpIHQgKiAoJ2EsICdkKSB0XG5cbiAgKCoqIFJldHVybnMgYSBwYWlyIG9mIHRhYmxlcyBbKHQxLCB0MildLCB3aGVyZSBbdDFdIGNvbnRhaW5zIGFsbCB0aGUgZWxlbWVudHMgb2YgdGhlXG4gICAgICBpbml0aWFsIHRhYmxlIHdoaWNoIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBbZl0sIGFuZCBbdDJdIGNvbnRhaW5zIHRoZSByZXN0LiAqKVxuICB2YWwgcGFydGl0aW9uX3RmIDogKCdhLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnYikgdCAqICgnYSwgJ2IpIHRcblxuICAoKiogTGlrZSBbcGFydGl0aW9uX3RmXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYikgdCAqICgnYSwgJ2IpIHRcblxuICAoKiogW2ZpbmRfb3JfYWRkIHQgayB+ZGVmYXVsdF0gcmV0dXJucyB0aGUgZGF0YSBhc3NvY2lhdGVkIHdpdGgga2V5IFtrXSBpZiBpdCBpcyBpbiB0aGVcbiAgICAgIHRhYmxlIFt0XSwgYW5kIG90aGVyd2lzZSBhc3NpZ25zIFtrXSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgW2RlZmF1bHQgKCldLiAqKVxuICB2YWwgZmluZF9vcl9hZGQgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBkZWZhdWx0OigodW5pdCAtPiAnYilbQGxvY2FsXSkgLT4gJ2JcblxuICAoKiogTGlrZSBbZmluZF9vcl9hZGRdIGJ1dCBbZGVmYXVsdF0gdGFrZXMgdGhlIGtleSBhcyBhbiBhcmd1bWVudC4gKilcbiAgdmFsIGZpbmRpX29yX2FkZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGRlZmF1bHQ6KCgnYSBrZXkgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiXG5cbiAgKCoqIFtmaW5kIHQga10gcmV0dXJucyBbU29tZV0gKHRoZSBjdXJyZW50IGJpbmRpbmcpIG9mIFtrXSBpbiBbdF0sIG9yIFtOb25lXSBpZiBubyBzdWNoXG4gICAgICBiaW5kaW5nIGV4aXN0cy4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiAnYiBvcHRpb25cblxuICAoKiogW2ZpbmRfZXhuIHQga10gcmV0dXJucyB0aGUgY3VycmVudCBiaW5kaW5nIG9mIFtrXSBpbiBbdF0sIG9yIHJhaXNlcyBbU3RkbGliLk5vdF9mb3VuZF1cbiAgICAgIG9yIFtOb3RfZm91bmRfc10gaWYgbm8gc3VjaCBiaW5kaW5nIGV4aXN0cy4gKilcbiAgdmFsIGZpbmRfZXhuIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gJ2JcblxuICAoKiogW2ZpbmRfYW5kX2NhbGwgdCBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXVxuXG4gICAgICBpcyBlcXVpdmFsZW50IHRvOlxuXG4gICAgICBbbWF0Y2ggZmluZCB0IGsgd2l0aCBTb21lIHYgLT4gaWZfZm91bmQgdiB8IE5vbmUgLT4gaWZfbm90X2ZvdW5kIGtdXG5cbiAgICAgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYWxsb2NhdGUgdGhlIG9wdGlvbi4gKilcbiAgdmFsIGZpbmRfYW5kX2NhbGxcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gaWZfZm91bmQ6KCgnYiAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCgnYSBrZXkgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICAoKiogSnVzdCBsaWtlIFtmaW5kX2FuZF9jYWxsXSwgYnV0IHRha2VzIGFuIGV4dHJhIGFyZ3VtZW50IHdoaWNoIGlzIHBhc3NlZCB0byBbaWZfZm91bmRdXG4gICAgICBhbmQgW2lmX25vdF9mb3VuZF0sIHNvIHRoYXQgdGhlIGNsaWVudCBjb2RlIGNhbiBhdm9pZCBhbGxvY2F0aW5nIGNsb3N1cmVzIG9yIHVzaW5nXG4gICAgICByZWZzIHRvIHBhc3MgdGhpcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWZ1bCBpbiBjb2RlXG4gICAgICB3aGljaCB0cmllcyB0byBtaW5pbWl6ZSBoZWFwIGFsbG9jYXRpb24uICopXG4gIHZhbCBmaW5kX2FuZF9jYWxsMVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gaWZfZm91bmQ6KCgnYiAtPiAnZCAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCgnYSBrZXkgLT4gJ2QgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZF9hbmRfY2FsbDJcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGI6J2VcbiAgICAtPiBpZl9mb3VuZDooKCdiIC0+ICdkIC0+ICdlIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnZCAtPiAnZSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBpZl9mb3VuZDooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCgnYSBrZXkgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZGlfYW5kX2NhbGwxXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBpZl9mb3VuZDooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnZCAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCgnYSBrZXkgLT4gJ2QgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZGlfYW5kX2NhbGwyXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBiOidlXG4gICAgLT4gaWZfZm91bmQ6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2QgLT4gJ2UgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gaWZfbm90X2ZvdW5kOigoJ2Ega2V5IC0+ICdkIC0+ICdlIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICdjXG5cbiAgKCoqIFtmaW5kX2FuZF9yZW1vdmUgdCBrXSByZXR1cm5zIFNvbWUgKHRoZSBjdXJyZW50IGJpbmRpbmcpIG9mIGsgaW4gdCBhbmQgcmVtb3ZlcyBpdCxcbiAgICAgIG9yIE5vbmUgaXMgbm8gc3VjaCBiaW5kaW5nIGV4aXN0cy4gKilcbiAgdmFsIGZpbmRfYW5kX3JlbW92ZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+ICdiIG9wdGlvblxuXG4gICgqKiBNZXJnZXMgdHdvIGhhc2h0YWJsZXMuXG5cbiAgICAgIFRoZSByZXN1bHQgb2YgW21lcmdlIGYgaDEgaDJdIGhhcyBhcyBrZXlzIHRoZSBzZXQgb2YgYWxsIFtrXSBpbiB0aGUgdW5pb24gb2YgdGhlXG4gICAgICBzZXRzIG9mIGtleXMgb2YgW2gxXSBhbmQgW2gyXSBmb3Igd2hpY2ggW2QoayldIGlzIG5vdCBOb25lLCB3aGVyZTpcblxuICAgICAgZChrKSA9XG4gICAgICAtIFtmIH5rZXk6ayAoYExlZnQgZDEpXVxuICAgICAgICBpZiBba10gaW4gW2gxXSBtYXBzIHRvIGQxLCBhbmQgW2gyXSBkb2VzIG5vdCBoYXZlIGRhdGEgZm9yIFtrXTtcblxuICAgICAgLSBbZiB+a2V5OmsgKGBSaWdodCBkMildXG4gICAgICAgIGlmIFtrXSBpbiBbaDJdIG1hcHMgdG8gZDIsIGFuZCBbaDFdIGRvZXMgbm90IGhhdmUgZGF0YSBmb3IgW2tdO1xuXG4gICAgICAtIFtmIH5rZXk6ayAoYEJvdGggKGQxLCBkMikpXVxuICAgICAgICBvdGhlcndpc2UsIHdoZXJlIFtrXSBpbiBbaDFdIG1hcHMgdG8gW2QxXSBhbmQgW2tdIGluIFtoMl0gbWFwcyB0byBbZDJdLlxuXG4gICAgICBFYWNoIGtleSBba10gaXMgbWFwcGVkIHRvIGEgc2luZ2xlIHBpZWNlIG9mIGRhdGEgW3hdLCB3aGVyZSBbZChrKSA9IFNvbWUgeF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaDEgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA1KTsgKDIsIDMyMzIpXSBpblxuICAgICAgbGV0IGgyID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgMyldIGluXG4gICAgICBIYXNodGJsLm1lcmdlIGgxIGgyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgYExlZnQgeCAtPiBTb21lIChgTGVmdCB4KVxuICAgICAgICB8IGBSaWdodCB4IC0+IFNvbWUgKGBSaWdodCB4KVxuICAgICAgICB8IGBCb3RoICh4LCB5KSAtPiBpZiB4PXkgdGhlbiBOb25lIGVsc2UgU29tZSAoYEJvdGggKHgseSkpXG4gICAgICApIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgLSA6IChpbnQgKiBbPiBgQm90aCBvZiBpbnQgKiBpbnQgfCBgTGVmdCBvZiBpbnQgfCBgUmlnaHQgb2YgaW50IF0pIGxpc3QgPVxuICAgICAgWygyLCBgTGVmdCAzMjMyKTsgKDEsIGBCb3RoICg1LCAzKSldXG4gICAgICB2fSAqKVxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2ssICdhKSB0XG4gICAgLT4gKCdrLCAnYikgdFxuICAgIC0+IGY6XG4gICAgICAgICAoKGtleTonayBrZXkgLT4gWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYiB8IGBCb3RoIG9mICdhICogJ2IgXSAtPiAnYyBvcHRpb24pXG4gICAgICAgICAgW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAnYykgdFxuXG5cbiAgKCoqIEV2ZXJ5IFtrZXldIGluIFtzcmNdIHdpbGwgYmUgcmVtb3ZlZCBvciBzZXQgaW4gW2RzdF0gYWNjb3JkaW5nIHRvIHRoZSByZXR1cm4gdmFsdWVcbiAgICAgIG9mIFtmXS4gKilcbiAgdmFsIG1lcmdlX2ludG9cbiAgICA6ICBzcmM6KCdrLCAnYSkgdFxuICAgIC0+IGRzdDooJ2ssICdiKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gJ2EgLT4gJ2Igb3B0aW9uIC0+ICdiIE1lcmdlX2ludG9fYWN0aW9uLnQpW0Bsb2NhbF0pXG4gICAgLT4gdW5pdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBrZXlzIGZvciBnaXZlbiBoYXNodGFibGUuICopXG4gIHZhbCBrZXlzIDogKCdhLCBfKSB0IC0+ICdhIGtleSBsaXN0XG5cbiAgKCoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIGRhdGEgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIGRhdGEgOiAoXywgJ2IpIHQgLT4gJ2IgbGlzdFxuXG4gICgqKiBbZmlsdGVyX2lucGxhY2UgdCB+Zl0gcmVtb3ZlcyBhbGwgdGhlIGVsZW1lbnRzIGZyb20gW3RdIHRoYXQgZG9uJ3Qgc2F0aXNmeSBbZl0uICopXG4gIHZhbCBmaWx0ZXJfa2V5c19pbnBsYWNlIDogKCdhLCBfKSB0IC0+IGY6KCgnYSBrZXkgLT4gYm9vbClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXJfaW5wbGFjZSA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgZmlsdGVyaV9pbnBsYWNlIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW21hcF9pbnBsYWNlIHQgfmZdIGFwcGxpZXMgW2ZdIHRvIGFsbCBlbGVtZW50cyBpbiBbdF0sIHRyYW5zZm9ybWluZyB0aGVtIGluXG4gICAgICBwbGFjZS4gKilcbiAgdmFsIG1hcF9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiAnYilbQGxvY2FsXSkgLT4gdW5pdFxuXG4gIHZhbCBtYXBpX2lucGxhY2UgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2IpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW2ZpbHRlcl9tYXBfaW5wbGFjZV0gY29tYmluZXMgdGhlIGVmZmVjdHMgb2YgW21hcF9pbnBsYWNlXSBhbmQgW2ZpbHRlcl9pbnBsYWNlXS4gKilcbiAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZSA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIGZpbHRlcl9tYXBpX2lucGxhY2VcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbZXF1YWwgZiB0MSB0Ml0gYW5kIFtzaW1pbGFyIGYgdDEgdDJdIGJvdGggcmV0dXJuIHRydWUgaWZmIFt0MV0gYW5kIFt0Ml0gaGF2ZSB0aGVcbiAgICAgIHNhbWUga2V5cyBhbmQgZm9yIGFsbCBrZXlzIFtrXSwgW2YgKGZpbmRfZXhuIHQxIGspIChmaW5kX2V4biB0MiBrKV0uICBbZXF1YWxdIGFuZFxuICAgICAgW3NpbWlsYXJdIG9ubHkgZGlmZmVyIGluIHRoZWlyIHR5cGVzLiAqKVxuICB2YWwgZXF1YWwgOiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGJvb2xcblxuICB2YWwgc2ltaWxhciA6ICgnYjEgLT4gJ2IyIC0+IGJvb2wpIC0+ICgnYSwgJ2IxKSB0IC0+ICgnYSwgJ2IyKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgKGtleSwgZGF0YSkgcGFpcnMgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIHRvX2FsaXN0IDogKCdhLCAnYikgdCAtPiAoJ2Ega2V5ICogJ2IpIGxpc3RcblxuXG4gICgqKiBbcmVtb3ZlX2lmX3plcm9dJ3MgZGVmYXVsdCBpcyBbZmFsc2VdLiAqKVxuICB2YWwgaW5jciA6ID9ieTppbnQgLT4gP3JlbW92ZV9pZl96ZXJvOmJvb2wgLT4gKCdhLCBpbnQpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcblxuICB2YWwgZGVjciA6ID9ieTppbnQgLT4gP3JlbW92ZV9pZl96ZXJvOmJvb2wgLT4gKCdhLCBpbnQpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNdWx0aSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXlcblxuICAoKiogW2FkZF9tdWx0aSB0IH5rZXkgfmRhdGFdIGlmIFtrZXldIGlzIHByZXNlbnQgaW4gdGhlIHRhYmxlIHRoZW4gY29uc1xuICAgICAgW2RhdGFdIG9uIHRoZSBsaXN0LCBvdGhlcndpc2UgYWRkIFtrZXldIHdpdGggYSBzaW5nbGUgZWxlbWVudCBsaXN0LiAqKVxuICB2YWwgYWRkX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0XG5cbiAgKCoqIFtyZW1vdmVfbXVsdGkgdCBrZXldIHVwZGF0ZXMgdGhlIHRhYmxlLCByZW1vdmluZyB0aGUgaGVhZCBvZiB0aGUgbGlzdCBib3VuZCB0b1xuICAgICAgW2tleV0uIElmIHRoZSBsaXN0IGhhcyBvbmx5IG9uZSBlbGVtZW50IChvciBpcyBlbXB0eSkgdGhlbiB0aGUgYmluZGluZyBpc1xuICAgICAgcmVtb3ZlZC4gKilcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICgnYSwgXyBsaXN0KSB0IC0+ICdhIGtleSAtPiB1bml0XG5cbiAgKCoqIFtmaW5kX211bHRpIHQga2V5XSByZXR1cm5zIHRoZSBlbXB0eSBsaXN0IGlmIFtrZXldIGlzIG5vdCBwcmVzZW50IGluIHRoZSB0YWJsZSxcbiAgICAgIHJldHVybnMgW3RdJ3MgdmFsdWVzIGZvciBba2V5XSBvdGhlcndpc2UuICopXG4gIHZhbCBmaW5kX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+ICdhIGtleSAtPiAnYiBsaXN0XG5lbmRcblxudHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA9XG4gID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gIC0+ICdrZXkgS2V5LnRcbiAgLT4gJ3pcblxudHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZSA9XG4gID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gIC0+ICd6XG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5XG4gIHR5cGUgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlIDogKCdhIGtleSwgJ2IsIHVuaXQgLT4gKCdhLCAnYikgdCkgY3JlYXRlX29wdGlvbnNcblxuXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgKCdhIGtleSAqICdiKSBsaXN0IC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBrZXkgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc1xuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgKCdhIGtleSAqICdiKSBsaXN0IC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2Ega2V5IGxpc3QgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAoJ2Ega2V5LCAnYiwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdhIGtleSwgJ2IsICgnYSBrZXkgKiAnYikgbGlzdCAtPiAoJ2EsICdiKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9tdWx0aVxuICAgIDogKCdhIGtleSwgJ2IgbGlzdCwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IgbGlzdCkgdCkgY3JlYXRlX29wdGlvbnNcblxuXG4gICgqKiB7WyBjcmVhdGVfbWFwcGVkIGdldF9rZXkgZ2V0X2RhdGEgW3gxLC4uLix4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIGdldF9kYXRhIHgxOyAuLi47IGdldF9rZXkgeG4sIGdldF9kYXRhIHhuXSBdfSAqKVxuICB2YWwgY3JlYXRlX21hcHBlZFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgZ2V0X2tleTooKCdyIC0+ICdhIGtleSlbQGxvY2FsXSlcbiAgICAgICAgLT4gZ2V0X2RhdGE6KCgnciAtPiAnYilbQGxvY2FsXSlcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGtleSBsaXN0IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgKCoqIHtbIGNyZWF0ZV93aXRoX2tleSB+Z2V0X2tleSBbeDEsLi4uLHhuXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgeDE7IC4uLjsgZ2V0X2tleSB4biwgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdyXG4gICAgICAsIGdldF9rZXk6KCgnciAtPiAnYSBrZXkpW0Bsb2NhbF0pXG4gICAgICAgIC0+ICdyIGxpc3RcbiAgICAgICAgLT4gWyBgT2sgb2YgKCdhLCAncikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBrZXkgbGlzdCBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnclxuICAgICAgLCBnZXRfa2V5OigoJ3IgLT4gJ2Ega2V5KVtAbG9jYWxdKSAtPiAnciBsaXN0IC0+ICgnYSwgJ3IpIHQgT3JfZXJyb3IudCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9leG5cbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdyXG4gICAgICAsIGdldF9rZXk6KCgnciAtPiAnYSBrZXkpW0Bsb2NhbF0pIC0+ICdyIGxpc3QgLT4gKCdhLCAncikgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cblxuICB2YWwgZ3JvdXBcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdiXG4gICAgICAsIGdldF9rZXk6KCgnciAtPiAnYSBrZXkpW0Bsb2NhbF0pXG4gICAgICAgIC0+IGdldF9kYXRhOigoJ3IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgICAgIC0+IGNvbWJpbmU6KCgnYiAtPiAnYiAtPiAnYilbQGxvY2FsXSlcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiAoJ2EsICdiKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9ycyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICAoKiogezIgQ3JlYXRvcnN9ICopXG5cbiAgKCoqIFRoZSBtb2R1bGUgeW91IHBhc3MgdG8gW2NyZWF0ZV0gbXVzdCBoYXZlIGEgdHlwZSB0aGF0IGlzIGhhc2hhYmxlLCBzZXhwYWJsZSwgYW5kXG4gICAgICBjb21wYXJhYmxlLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIEludCk7O1xuICAgICAgICAtIDogKGludCwgJ19hKSBIYXNodGJsLnQgPSA8YWJzdHI+OztcbiAgICAgIHZ9ICopXG4gIHZhbCBjcmVhdGVcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgICBIYXNodGJsLm9mX2FsaXN0IChtb2R1bGUgSW50KSBbKDMsIFwic29tZXRoaW5nXCIpOyAoMiwgXCJ3aGF0ZXZlclwiKV1cbiAgICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5IG9mIGludCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYE9rIDxhYnN0cj5cbiAgICAgIHZ9ICopXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogV2hlcmVhcyBbb2ZfYWxpc3RdIHdpbGwgcmVwb3J0IFtEdXBsaWNhdGVfa2V5XSBubyBtYXR0ZXIgaG93IG1hbnkgZHVwcyB0aGVyZSBhcmUgaW5cbiAgICAgIHlvdXIgbGlzdCwgW29mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc10gd2lsbCByZXBvcnQgZWFjaCBhbmQgZXZlcnkgZHVwbGljYXRlIGVudHJ5LlxuXG4gICAgICBGb3IgZXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgSGFzaHRibC5vZl9hbGlzdCAobW9kdWxlIEludCkgWygxLCBcImZvb1wiKTsgKDEsIFwiYmFyXCIpOyAoMiwgXCJmb29cIik7ICgyLCBcImJhclwiKV07O1xuICAgICAgICAtIDogWyBgRHVwbGljYXRlX2tleSBvZiBpbnQgfCBgT2sgb2YgKGludCwgc3RyaW5nKSBIYXNodGJsLnQgXSA9IGBEdXBsaWNhdGVfa2V5IDFcblxuICAgICAgICBIYXNodGJsLm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyAobW9kdWxlIEludCkgWygxLCBcImZvb1wiKTsgKDEsIFwiYmFyXCIpOyAoMiwgXCJmb29cIik7ICgyLCBcImJhclwiKV07O1xuICAgICAgICAtIDogWyBgRHVwbGljYXRlX2tleXMgb2YgaW50IGxpc3QgfCBgT2sgb2YgKGludCwgc3RyaW5nKSBIYXNodGJsLnQgXSA9IGBEdXBsaWNhdGVfa2V5cyBbMTsgMl1cbiAgICAgIHZ9ICopXG4gIHZhbCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHNcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2EgbGlzdCBdXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2ZfYWxpc3RfZXhuXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSB7eyFNdWx0aX0gXCJtdWx0aVwifSBoYXNodGFibGUsIGkuZS4sIGEgaGFzaHRhYmxlIHdoZXJlIGVhY2gga2V5IHBvaW50cyB0byBhXG4gICAgICBsaXN0IHBvdGVudGlhbGx5IGNvbnRhaW5pbmcgbXVsdGlwbGUgdmFsdWVzLiBTbyBpbnN0ZWFkIG9mIHNob3J0LWNpcmN1aXRpbmcgd2l0aCBhXG4gICAgICBbYER1cGxpY2F0ZV9rZXldIHZhcmlhbnQgb24gZHVwbGljYXRlcywgYXMgaW4gW29mX2FsaXN0XSwgW29mX2FsaXN0X211bHRpXSBmb2xkc1xuICAgICAgdGhvc2UgdmFsdWVzIGludG8gYSBsaXN0IGZvciB0aGUgZ2l2ZW4ga2V5OlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X211bHRpIChtb2R1bGUgSW50KSBbKDEsIFwiYVwiKTsgKDEsIFwiYlwiKTsgKDIsIFwiY1wiKTsgKDIsIFwiZFwiKV07O1xuICAgICAgdmFsIGggOiAoaW50LCBzdHJpbmcgbGlzdCkgSGFzaHRibC50ID0gPGFic3RyPlxuXG4gICAgICBIYXNodGJsLmZpbmRfZXhuIGggMTs7XG4gICAgICAtIDogc3RyaW5nIGxpc3QgPSBbXCJiXCI7IFwiYVwiXVxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiIGxpc3QpIHRcblxuICAoKiogQXBwbGllcyB0aGUgW2dldF9rZXldIGFuZCBbZ2V0X2RhdGFdIGZ1bmN0aW9ucyB0byB0aGUgWydyIGxpc3RdIHRvIGNyZWF0ZSB0aGVcbiAgICAgIGluaXRpYWwga2V5cyBhbmQgdmFsdWVzLCByZXNwZWN0aXZlbHksIGZvciB0aGUgbmV3IGhhc2h0YWJsZS5cblxuICAgICAge1sgY3JlYXRlX21hcHBlZCBnZXRfa2V5IGdldF9kYXRhIFt4MTsuLi47eG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCBnZXRfZGF0YSB4MTsgLi4uOyBnZXRfa2V5IHhuLCBnZXRfZGF0YSB4bl1cbiAgICAgIF19XG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgIGxldCBoID1cbiAgICAgICAgICBIYXNodGJsLmNyZWF0ZV9tYXBwZWQgKG1vZHVsZSBJbnQpXG4gICAgICAgICAgICB+Z2V0X2tleTooKGZ1biB4IC0+IHgpW0Bsb2NhbF0pXG4gICAgICAgICAgICB+Z2V0X2RhdGE6KChmdW4geCAtPiB4ICsgMSlbQGxvY2FsXSlcbiAgICAgICAgICAgWzE7IDI7IDNdOztcbiAgICAgICAgdmFsIGggOiBbIGBEdXBsaWNhdGVfa2V5cyBvZiBpbnQgbGlzdCB8IGBPayBvZiAoaW50LCBpbnQpIEhhc2h0YmwudCBdID0gYE9rIDxhYnN0cj5cblxuICAgICAgICBsZXQgaCA9XG4gICAgICAgICAgbWF0Y2ggaCB3aXRoXG4gICAgICAgICAgfCBgT2sgeCAtPiB4XG4gICAgICAgICAgfCBgRHVwbGljYXRlX2tleXMgXyAtPiBmYWlsd2l0aCBcIlwiXG4gICAgICAgIGluXG4gICAgICAgIEhhc2h0YmwuZmluZF9leG4gaCAxOztcbiAgICAgICAgLSA6IGludCA9IDJcbiAgICAgIHZ9ICopXG4gIHZhbCBjcmVhdGVfbWFwcGVkXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooKCdyIC0+ICdhKVtAbG9jYWxdKVxuICAgIC0+IGdldF9kYXRhOigoJ3IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2EgbGlzdCBdXG5cbiAgKCoqIHtbIGNyZWF0ZV93aXRoX2tleSB+Z2V0X2tleSBbeDE7Li4uO3huXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgeDE7IC4uLjsgZ2V0X2tleSB4biwgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OigoJ3IgLT4gJ2EpW0Bsb2NhbF0pXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ3IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2EgbGlzdCBdXG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvclxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCgnciAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAncikgdCBPcl9lcnJvci50XG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9leG5cbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OigoJ3IgLT4gJ2EpW0Bsb2NhbF0pXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+ICgnYSwgJ3IpIHRcblxuICAoKiogTGlrZSBbY3JlYXRlX21hcHBlZF0sIGFwcGxpZXMgdGhlIFtnZXRfa2V5XSBhbmQgW2dldF9kYXRhXSBmdW5jdGlvbnMgdG8gdGhlIFsnclxuICAgICAgbGlzdF0gdG8gY3JlYXRlIHRoZSBpbml0aWFsIGtleXMgYW5kIHZhbHVlcywgcmVzcGVjdGl2ZWx5LCBmb3IgdGhlIG5ldyBoYXNodGFibGUgLS1cbiAgICAgIGFuZCB0aGVuLCBsaWtlIFthZGRfbXVsdGldLCBmb2xkcyB0b2dldGhlciB2YWx1ZXMgYmVsb25naW5nIHRvIHRoZSBzYW1lIGtleXMuIEhlcmUsXG4gICAgICB0aG91Z2gsIHRoZSBmdW5jdGlvbiB1c2VkIGZvciB0aGUgZm9sZGluZyBpcyBnaXZlbiBieSBbY29tYmluZV0gKGluc3RlYWQgb2YganVzdFxuICAgICAgYmVpbmcgYSBbY29uc10pLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICAgSGFzaHRibC5ncm91cCAobW9kdWxlIEludClcbiAgICAgICAgICAgfmdldF9rZXk6KChmdW4geCAtPiB4IC8gMilbQGxvY2FsXSlcbiAgICAgICAgICAgfmdldF9kYXRhOigoZnVuIHggLT4geClbQGxvY2FsXSlcbiAgICAgICAgICAgfmNvbWJpbmU6KChmdW4geCB5IC0+IHggKiB5KVtAbG9jYWxdKVxuICAgICAgICAgICAgWyAxOyAyOyAzOyA0XVxuICAgICAgICAgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAgICAtIDogKGludCAqIGludCkgbGlzdCA9IFsoMiwgNCk7ICgxLCA2KTsgKDAsIDEpXVxuICAgICAgIHZ9ICopXG4gIHZhbCBncm91cFxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCgnciAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiBnZXRfZGF0YTooKCdyIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+IGNvbWJpbmU6KCgnYiAtPiAnYiAtPiAnYilbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAnYikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfd2l0aG91dF9zdWJtb2R1bGVzID0gc2lnXG4gIHZhbCBoYXNoIDogJ2EgLT4gaW50XG4gIHZhbCBoYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiAnYSAtPiBpbnRcblxuICB0eXBlICghJ2EsICEnYikgdFxuXG4gICgqKiBXZSBwcm92aWRlIGEgW3NleHBfb2ZfdF0gYnV0IG5vdCBhIFt0X29mX3NleHBdIGZvciB0aGlzIHR5cGUgYmVjYXVzZSBvbmUgbmVlZHMgdG8gYmVcbiAgICAgIGV4cGxpY2l0IGFib3V0IHRoZSBoYXNoIGFuZCBjb21wYXJpc29uIGZ1bmN0aW9ucyB1c2VkIHdoZW4gY3JlYXRpbmcgYSBoYXNodGFibGUuXG4gICAgICBOb3RlIHRoYXQgW0hhc2h0YmwuUG9seS50XSBkb2VzIGhhdmUgW1tAQGRlcml2aW5nIHNleHBdXSwgYW5kIHVzZXMgT0NhbWwncyBidWlsdC1pblxuICAgICAgcG9seW1vcnBoaWMgY29tcGFyaXNvbiBhbmQgYW5kIHBvbHltb3JwaGljIGhhc2hpbmcuICopXG4gIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cC50KSAtPiAoJ2IgLT4gU2V4cC50KSAtPiAoJ2EsICdiKSB0IC0+IFNleHAudFxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCAoKiogQGlubGluZSAqKVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA9ICdhXG4gICgqKiBAaW5saW5lICopXG5cblxuICBpbmNsdWRlIE11bHRpIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgKCoqIEBpbmxpbmUgKilcblxuICB2YWwgaGFzaGFibGVfcyA6ICgna2V5LCBfKSB0IC0+ICdrZXkgS2V5LnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hclxuICAgIDogICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cblxuICB2YWwgaGFzaGFibGUgOiAnYSBIYXNoYWJsZS50XG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAnYSBrZXkgPSAnYVxuICAgIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICBpbmNsdWRlIEFjY2Vzc29ycyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gIGluY2x1ZGUgTXVsdGkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICB0eXBlICgnaywgJ3YpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgS2V5LlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcblxuICB2YWwgc2V4cF9vZl9tX190XG4gICAgOiAgKG1vZHVsZSBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoJ3YgLT4gU2V4cC50KVxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBTZXhwLnRcblxuICB2YWwgbV9fdF9vZl9zZXhwXG4gICAgOiAgKG1vZHVsZSBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgIC0+IFNleHAudFxuICAgIC0+ICgnaywgJ3YpIHRcblxuICB2YWwgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAobW9kdWxlIE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2ssICd2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGVxdWFsX21fX3RcbiAgICA6ICAobW9kdWxlIEVxdWFsX20pXG4gICAgLT4gKCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBib29sXG5lbmRcblxubW9kdWxlIHR5cGUgSGFzaHRibCA9IHNpZ1xuICAoKiogQSBoYXNoIHRhYmxlIGlzIGEgbXV0YWJsZSBkYXRhIHN0cnVjdHVyZSBpbXBsZW1lbnRpbmcgYSBtYXAgYmV0d2VlbiBrZXlzIGFuZCB2YWx1ZXMuXG4gICAgICBJdCBzdXBwb3J0cyBjb25zdGFudC10aW1lIGxvb2t1cCBhbmQgaW4tcGxhY2UgbW9kaWZpY2F0aW9uLlxuXG4gICAgICB7MSBVc2FnZX1cblxuICAgICAgQXMgYSBzaW1wbGUgZXhhbXBsZSwgd2UnbGwgY3JlYXRlIGEgaGFzaCB0YWJsZSB3aXRoIHN0cmluZyBrZXlzIHVzaW5nIHRoZVxuICAgICAge3shY3JlYXRlfVtjcmVhdGVdfSBjb25zdHJ1Y3Rvciwgd2hpY2ggZXhwZWN0cyBhIG1vZHVsZSBkZWZpbmluZyB0aGUga2V5J3MgdHlwZTpcblxuICAgICAge1tcbiAgICAgICAgbGV0IGggPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIFN0cmluZyk7O1xuICAgICAgICB2YWwgaCA6IChzdHJpbmcsICdfYSkgSGFzaHRibC50ID0gPGFic3RyPlxuICAgICAgXX1cblxuICAgICAgV2UgY2FuIHNldCB0aGUgdmFsdWVzIG9mIGluZGl2aWR1YWwga2V5cyB3aXRoIHt7IXNldH1bc2V0XX0uIElmIHRoZSBrZXkgYWxyZWFkeSBoYXNcbiAgICAgIGEgdmFsdWUsIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLnNldCBoIH5rZXk6XCJmb29cIiB+ZGF0YTo1OztcbiAgICAgIC0gOiB1bml0ID0gKClcblxuICAgICAgSGFzaHRibC5zZXQgaCB+a2V5OlwiZm9vXCIgfmRhdGE6Njs7XG4gICAgICAtIDogdW5pdCA9ICgpXG5cbiAgICAgIEhhc2h0Ymwuc2V0IGggfmtleTpcImJhclwiIH5kYXRhOjY7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuICAgICAgdn1cblxuICAgICAgV2UgY2FuIGFjY2VzcyB2YWx1ZXMgYnkga2V5LCBvciBkdW1wIGFsbCBvZiB0aGUgaGFzaCB0YWJsZSdzIGRhdGE6XG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLmZpbmQgaCBcImZvb1wiOztcbiAgICAgIC0gOiBpbnQgb3B0aW9uID0gU29tZSA2XG5cbiAgICAgIEhhc2h0YmwuZmluZF9leG4gaCBcImZvb1wiOztcbiAgICAgIC0gOiBpbnQgPSA2XG5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaDs7XG4gICAgICAtIDogKHN0cmluZyAqIGludCkgbGlzdCA9IFsoXCJmb29cIiwgNik7IChcImJhclwiLCA2KV1cbiAgICAgIHZ9XG5cbiAgICAgIHt7IWNoYW5nZX1bY2hhbmdlXX0gbGV0cyB1cyBjaGFuZ2UgYSBrZXkncyB2YWx1ZSBieSBhcHBseWluZyB0aGUgZ2l2ZW4gZnVuY3Rpb246XG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLmNoYW5nZSBoIFwiZm9vXCIgKGZ1biB4IC0+XG4gICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgfCBTb21lIHggLT4gU29tZSAoeCAqIDIpXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICk7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuXG4gICAgICBIYXNodGJsLnRvX2FsaXN0IGg7O1xuICAgICAgLSA6IChzdHJpbmcgKiBpbnQpIGxpc3QgPSBbKFwiZm9vXCIsIDEyKTsgKFwiYmFyXCIsIDYpXVxuICAgICAgdn1cblxuXG4gICAgICBXZSBjYW4gdXNlIHt7IW1lcmdlfVttZXJnZV19IHRvIG1lcmdlIHR3byBoYXNodGFibGVzIHdpdGggZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlclxuICAgICAgaG93IHdlIGNob29zZSB2YWx1ZXMgd2hlbiBhIGtleSBpcyBwcmVzZW50IGluIHRoZSBmaXJzdCAoXCJsZWZ0XCIpIGhhc2h0YWJsZSwgdGhlXG4gICAgICBzZWNvbmQgKFwicmlnaHRcIiksIG9yIGJvdGguIEhlcmUsIHdlJ2xsIGNvbnMgdGhlIHZhbHVlcyB3aGVuIGJvdGggaGFzaHRhYmxlcyBoYXZlIGFcbiAgICAgIGtleTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoMSA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDUpOyAoMiwgMzIzMildIGluXG4gICAgICBsZXQgaDIgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCAzKV0gaW5cbiAgICAgIEhhc2h0YmwubWVyZ2UgaDEgaDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBgTGVmdCB4IC0+IFNvbWUgKGBMZWZ0IHgpXG4gICAgICAgIHwgYFJpZ2h0IHggLT4gU29tZSAoYFJpZ2h0IHgpXG4gICAgICAgIHwgYEJvdGggKHgsIHkpIC0+IGlmIHg9eSB0aGVuIE5vbmUgZWxzZSBTb21lIChgQm90aCAoeCx5KSlcbiAgICAgICkgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIFs+IGBCb3RoIG9mIGludCAqIGludCB8IGBMZWZ0IG9mIGludCB8IGBSaWdodCBvZiBpbnQgXSkgbGlzdCA9XG4gICAgICBbKDIsIGBMZWZ0IDMyMzIpOyAoMSwgYEJvdGggKDUsIDMpKV1cbiAgICAgIHZ9XG5cbiAgICAgIHsxIEludGVyZmFjZX0gKilcblxuICBpbmNsdWRlIFNfd2l0aG91dF9zdWJtb2R1bGVzICgqKiBAaW5saW5lICopXG5cbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzID0gQWNjZXNzb3JzXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzID0gQ3JlYXRvcnNcbiAgbW9kdWxlIHR5cGUgTXVsdGkgPSBNdWx0aVxuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgU193aXRob3V0X3N1Ym1vZHVsZXMgPSBTX3dpdGhvdXRfc3VibW9kdWxlc1xuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcblxuICBtb2R1bGUgS2V5ID0gS2V5XG4gIG1vZHVsZSBNZXJnZV9pbnRvX2FjdGlvbiA9IE1lcmdlX2ludG9fYWN0aW9uXG5cbiAgdHlwZSBub25yZWMgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnMgPSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc1xuXG4gIG1vZHVsZSBDcmVhdG9ycyAoS2V5IDogc2lnXG4gICAgICB0eXBlICdhIHRcblxuICAgICAgdmFsIGhhc2hhYmxlIDogJ2EgdCBIYXNoYWJsZS50XG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdF8gPSAoJ2EgS2V5LnQsICdiKSB0XG5cbiAgICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBLZXkudCkgLT4gKFNleHAudCAtPiAnYikgLT4gU2V4cC50IC0+ICgnYSwgJ2IpIHRfXG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X1xuICAgICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgICAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAgICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG4gIGVuZFxuXG4gIG1vZHVsZSBQb2x5IDogU19wb2x5IHdpdGggdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF90YWJsZSA9IGludCBIYXNodGJsLk0oU3RyaW5nKS50XG4gICAgICBdfVxuXG4gICAgICB3aGljaCBzdGFuZHMgZm9yOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfdGFibGUgPSAoU3RyaW5nLnQsIGludCkgSGFzaHRibC50XG4gICAgICBdfVxuXG4gICAgICBUaGUgcG9pbnQgaXMgdGhhdCBbaW50IEhhc2h0YmwuTShTdHJpbmcpLnRdIHN1cHBvcnRzIGRlcml2aW5nLCB3aGVyZWFzIHRoZSBzZWNvbmRcbiAgICAgIHN5bnRheCBkb2Vzbid0IChiZWNhdXNlIFt0X29mX3NleHBdIGRvZXNuJ3Qga25vdyB3aGF0IGNvbXBhcmlzb24vaGFzaCBmdW5jdGlvbiB0b1xuICAgICAgdXNlKS4gKilcbiAgbW9kdWxlIE0gKEsgOiBULlQpIDogc2lnXG4gICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2KSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAoKiovKiopXG5cbiAgKCpfIFNlZSB0aGUgSmFuZSBTdHJlZXQgU3R5bGUgR3VpZGUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIFtQcml2YXRlXSBzdWJtb2R1bGVzOlxuXG4gICAgaHR0cHM6Ly9vcGVuc291cmNlLmphbmVzdHJlZXQuY29tL3N0YW5kYXJkcy8jcHJpdmF0ZS1zdWJtb2R1bGVzICopXG4gIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcblxuICAgIHR5cGUgbm9ucmVjICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlID1cbiAgICAgICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiAoJ2tleSwgXykgdCAtPiAna2V5IEhhc2hhYmxlLnRcbiAgZW5kXG5lbmRcbiIsIigqIEEgZmV3IHNtYWxsIHRoaW5ncyBjb3BpZWQgZnJvbSBvdGhlciBwYXJ0cyBvZiBCYXNlIGJlY2F1c2UgdGhleSBkZXBlbmQgb24gdXMsIHNvIHdlXG4gICBjYW4ndCB1c2UgdGhlbS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbigqIEl0cyBpbXBvcnRhbnQgdGhhdCBFbXB0eSBoYXZlIG5vIGFyZ3MuIEl0J3MgdGVtcHRpbmcgdG8gbWFrZSB0aGlzIHR5cGUgYSByZWNvcmRcbiAgIChlLmcuIHRvIGhvbGQgdGhlIGNvbXBhcmUgZnVuY3Rpb24pLCBidXQgYSBsb3Qgb2YgbWVtb3J5IGlzIHNhdmVkIGJ5IEVtcHR5IGJlaW5nIGFuXG4gICBpbW1lZGlhdGUsIHNpbmNlIGFsbCB1bnVzZWQgYnVja2V0cyBpbiB0aGUgaGFzaHRibCBkb24ndCB1c2UgYW55IG1lbW9yeSAoYmVzaWRlcyB0aGVcbiAgIGFycmF5IGNlbGwpICopXG50eXBlICgnaywgJ3YpIHQgPVxuICB8IEVtcHR5XG4gIHwgTm9kZSBvZlxuICAgICAgeyBtdXRhYmxlIGxlZnQgOiAoJ2ssICd2KSB0XG4gICAgICA7IGtleSA6ICdrXG4gICAgICA7IG11dGFibGUgdmFsdWUgOiAndlxuICAgICAgOyBtdXRhYmxlIGhlaWdodCA6IGludFxuICAgICAgOyBtdXRhYmxlIHJpZ2h0IDogKCdrLCAndikgdFxuICAgICAgfVxuICB8IExlYWYgb2ZcbiAgICAgIHsga2V5IDogJ2tcbiAgICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICd2XG4gICAgICB9XG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gdHJ1ZVxuICB8IExlYWYgXyB8IE5vZGUgXyAtPiBmYWxzZVxuOztcblxubGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMFxuICB8IExlYWYgXyAtPiAxXG4gIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodDsgcmlnaHQgPSBfIH0gLT4gaGVpZ2h0XG47O1xuXG5sZXQgaW52YXJpYW50IGNvbXBhcmUgPVxuICBsZXQgbGVnYWxfbGVmdF9rZXkga2V5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmIHsga2V5ID0gbGVmdF9rZXk7IHZhbHVlID0gXyB9XG4gICAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IGxlZnRfa2V5OyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+XG4gICAgICBhc3NlcnQgKGNvbXBhcmUgbGVmdF9rZXkga2V5IDwgMClcbiAgaW5cbiAgbGV0IGxlZ2FsX3JpZ2h0X2tleSBrZXkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgeyBrZXkgPSByaWdodF9rZXk7IHZhbHVlID0gXyB9XG4gICAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IHJpZ2h0X2tleTsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPlxuICAgICAgYXNzZXJ0IChjb21wYXJlIHJpZ2h0X2tleSBrZXkgPiAwKVxuICBpblxuICBsZXQgcmVjIGludiA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSB8IExlYWYgXyAtPiAoKVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IGs7IHZhbHVlID0gXzsgaGVpZ2h0ID0gaDsgcmlnaHQgfSAtPlxuICAgICAgbGV0IGhsLCBociA9IGhlaWdodCBsZWZ0LCBoZWlnaHQgcmlnaHQgaW5cbiAgICAgIGludiBsZWZ0O1xuICAgICAgaW52IHJpZ2h0O1xuICAgICAgbGVnYWxfbGVmdF9rZXkgayBsZWZ0O1xuICAgICAgbGVnYWxfcmlnaHRfa2V5IGsgcmlnaHQ7XG4gICAgICBhc3NlcnQgKGggPSBJbnQubWF4IGhsIGhyICsgMSk7XG4gICAgICBhc3NlcnQgKGFicyAoaGwgLSBocikgPD0gMilcbiAgaW5cbiAgaW52XG47O1xuXG5sZXQgaW52YXJpYW50IHQgfmNvbXBhcmUgPSBpbnZhcmlhbnQgY29tcGFyZSB0XG5cbigqIEluIHRoZSBmb2xsb3dpbmcgY29tbWVudHMsXG4gICAndCBpcyBiYWxhbmNlZCcgbWVhbnMgdGhhdCAnaW52YXJpYW50IHQnIGRvZXMgbm90XG4gICByYWlzZSBhbiBleGNlcHRpb24uICBUaGlzIGltcGxpZXMgb2YgY291cnNlIHRoYXQgZWFjaCBub2RlJ3MgaGVpZ2h0IGZpZWxkIGlzXG4gICBjb3JyZWN0LlxuICAgJ3QgaXMgYmFsYW5jZWFibGUnIG1lYW5zIHRoYXQgaGVpZ2h0IG9mIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBvZiB0XG4gICBkaWZmZXIgYnkgYXQgbW9zdCAzLiAqKVxuXG4oKiBAcHJlOiBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBoYXZlIGNvcnJlY3QgaGVpZ2h0c1xuICAgQHBvc3Q6IG91dHB1dCBoYXMgdGhlIGNvcnJlY3QgaGVpZ2h0ICopXG5sZXQgdXBkYXRlX2hlaWdodCA9IGZ1bmN0aW9uXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IG9sZF9oZWlnaHQ7IHJpZ2h0IH0gYXMgeCkgLT5cbiAgICBsZXQgbmV3X2hlaWdodCA9IEludC5tYXggKGhlaWdodCBsZWZ0KSAoaGVpZ2h0IHJpZ2h0KSArIDEgaW5cbiAgICBpZiBuZXdfaGVpZ2h0IDw+IG9sZF9oZWlnaHQgdGhlbiB4LmhlaWdodCA8LSBuZXdfaGVpZ2h0XG4gIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBhcmUgYmFsYW5jZWRcbiAgIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwb3N0OiBvdXRwdXQgaXMgYmFsYW5jZWQgKGluIHBhcnRpY3VsYXIsIGhlaWdodCBpcyBjb3JyZWN0KSAqKVxubGV0IGJhbGFuY2UgdHJlZSA9XG4gIG1hdGNoIHRyZWUgd2l0aFxuICB8IEVtcHR5IHwgTGVhZiBfIC0+IHRyZWVcbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyByb290X25vZGUpIC0+XG4gICAgbGV0IGhsID0gaGVpZ2h0IGxlZnRcbiAgICBhbmQgaHIgPSBoZWlnaHQgcmlnaHQgaW5cbiAgICAoKiArIDIgaXMgY3JpdGljYWxseSBpbXBvcnRhbnQsIGxvd2VyaW5nIGl0IHRvIDEgd2lsbCBicmVhayB0aGUgTGVhZlxuICAgICAgIGFzc3VtcHRpb25zIGluIHRoZSBjb2RlIGJlbG93LCBhbmQgd2lsbCBmb3JjZSB1cyB0byBwcm9tb3RlIGxlYWYgbm9kZXMgaW5cbiAgICAgICB0aGUgYmFsYW5jZSByb3V0aW5lLiBJdCdzIGFsc28gZmFzdGVyLCBzaW5jZSBpdCB3aWxsIGJhbGFuY2UgbGVzcyBvZnRlbi5cbiAgICAgICBOb3RlIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIGlzIGRlbGljYXRlLiAgVGhlIHVwZGF0ZV9oZWlnaHQgY2FsbHMgbXVzdFxuICAgICAgIG9jY3VyIGluIHRoZSBjb3JyZWN0IG9yZGVyLCBzaW5jZSB1cGRhdGVfaGVpZ2h0IGFzc3VtZXMgaXRzIGNoaWxkcmVuIGhhdmVcbiAgICAgICB0aGUgY29ycmVjdCBoZWlnaHRzLiAgKilcbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbGVmdCB3aXRoXG4gICAgICAoKiBJdCBjYW5ub3QgYmUgYSBsZWFmLCBiZWNhdXNlIGV2ZW4gaWYgcmlnaHQgaXMgZW1wdHksIGEgbGVhZlxuICAgICAgICAgaXMgb25seSBoZWlnaHQgMSAqKVxuICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTm9kZVxuICAgICAgICAgICh7IGxlZnQgPSBsZWZ0X25vZGVfbGVmdFxuICAgICAgICAgICA7IGtleSA9IF9cbiAgICAgICAgICAgOyB2YWx1ZSA9IF9cbiAgICAgICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICAgICAgIDsgcmlnaHQgPSBsZWZ0X25vZGVfcmlnaHRcbiAgICAgICAgICAgfSBhcyBsZWZ0X25vZGUpIC0+XG4gICAgICAgIGlmIGhlaWdodCBsZWZ0X25vZGVfbGVmdCA+PSBoZWlnaHQgbGVmdF9ub2RlX3JpZ2h0XG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJvb3Rfbm9kZS5sZWZ0IDwtIGxlZnRfbm9kZV9yaWdodDtcbiAgICAgICAgICBsZWZ0X25vZGUucmlnaHQgPC0gdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0O1xuICAgICAgICAgIGxlZnQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGlmIHJpZ2h0IGlzIGEgbGVhZiwgdGhlbiBsZWZ0IG11c3QgYmUgZW1wdHkuIFRoYXQgbWVhbnNcbiAgICAgICAgICAgICBoZWlnaHQgaXMgMi4gRXZlbiBpZiBociBpcyBlbXB0eSB3ZSBzdGlsbCBjYW4ndCBnZXQgaGVyZS4gKilcbiAgICAgICAgICBtYXRjaCBsZWZ0X25vZGVfcmlnaHQgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBOb2RlXG4gICAgICAgICAgICAgICh7IGxlZnQgPSBscl9sZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gbHJfcmlnaHQgfSBhc1xuICAgICAgICAgICAgICAgbHJfbm9kZSkgLT5cbiAgICAgICAgICAgIGxlZnRfbm9kZS5yaWdodCA8LSBscl9sZWZ0O1xuICAgICAgICAgICAgcm9vdF9ub2RlLmxlZnQgPC0gbHJfcmlnaHQ7XG4gICAgICAgICAgICBscl9ub2RlLnJpZ2h0IDwtIHRyZWU7XG4gICAgICAgICAgICBscl9ub2RlLmxlZnQgPC0gbGVmdDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgbGVmdDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgbGVmdF9ub2RlX3JpZ2h0O1xuICAgICAgICAgICAgbGVmdF9ub2RlX3JpZ2h0KSlcbiAgICBlbHNlIGlmIGhyID4gaGwgKyAyXG4gICAgdGhlbiAoXG4gICAgICAoKiBzZWUgYWJvdmUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSByaWdodCBjYW5ub3QgYmUgYSBsZWFmICopXG4gICAgICBtYXRjaCByaWdodCB3aXRoXG4gICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBOb2RlXG4gICAgICAgICAgKHsgbGVmdCA9IHJpZ2h0X25vZGVfbGVmdFxuICAgICAgICAgICA7IGtleSA9IF9cbiAgICAgICAgICAgOyB2YWx1ZSA9IF9cbiAgICAgICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICAgICAgIDsgcmlnaHQgPSByaWdodF9ub2RlX3JpZ2h0XG4gICAgICAgICAgIH0gYXMgcmlnaHRfbm9kZSkgLT5cbiAgICAgICAgaWYgaGVpZ2h0IHJpZ2h0X25vZGVfcmlnaHQgPj0gaGVpZ2h0IHJpZ2h0X25vZGVfbGVmdFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByb290X25vZGUucmlnaHQgPC0gcmlnaHRfbm9kZV9sZWZ0O1xuICAgICAgICAgIHJpZ2h0X25vZGUubGVmdCA8LSB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHJpZ2h0O1xuICAgICAgICAgIHJpZ2h0KVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBzZWUgYWJvdmUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIGNhbm5vdCBiZSBhIGxlYWYgKilcbiAgICAgICAgICBtYXRjaCByaWdodF9ub2RlX2xlZnQgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBOb2RlXG4gICAgICAgICAgICAgICh7IGxlZnQgPSBybF9sZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gcmxfcmlnaHQgfSBhc1xuICAgICAgICAgICAgICAgcmxfbm9kZSkgLT5cbiAgICAgICAgICAgIHJpZ2h0X25vZGUubGVmdCA8LSBybF9yaWdodDtcbiAgICAgICAgICAgIHJvb3Rfbm9kZS5yaWdodCA8LSBybF9sZWZ0O1xuICAgICAgICAgICAgcmxfbm9kZS5sZWZ0IDwtIHRyZWU7XG4gICAgICAgICAgICBybF9ub2RlLnJpZ2h0IDwtIHJpZ2h0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCByaWdodDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgcmlnaHRfbm9kZV9sZWZ0O1xuICAgICAgICAgICAgcmlnaHRfbm9kZV9sZWZ0KSlcbiAgICBlbHNlIChcbiAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgIHRyZWUpXG47O1xuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAocmlnaHQgbm9kZSkgLSBoZWlnaHQgKGJhbGFuY2UgdHJlZSkpIDw9IDNcbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWFibGUgKilcblxuKCogQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHByZTogYWJzIChoZWlnaHQgKHJpZ2h0IG5vZGUpIC0gaGVpZ2h0IChiYWxhbmNlIHRyZWUpKSA8PSAzXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VhYmxlICopXG5sZXQgc2V0X2xlZnQgbm9kZSB0cmVlID1cbiAgbGV0IHRyZWUgPSBiYWxhbmNlIHRyZWUgaW5cbiAgbWF0Y2ggbm9kZSB3aXRoXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIHIpIC0+XG4gICAgaWYgcGh5c19lcXVhbCBsZWZ0IHRyZWUgdGhlbiAoKSBlbHNlIHIubGVmdCA8LSB0cmVlO1xuICAgIHVwZGF0ZV9oZWlnaHQgbm9kZVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAobGVmdCBub2RlKSAtIGhlaWdodCAoYmFsYW5jZSB0cmVlKSkgPD0gM1xuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlYWJsZSAqKVxubGV0IHNldF9yaWdodCBub2RlIHRyZWUgPVxuICBsZXQgdHJlZSA9IGJhbGFuY2UgdHJlZSBpblxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBOb2RlICh7IGxlZnQgPSBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgcikgLT5cbiAgICBpZiBwaHlzX2VxdWFsIHJpZ2h0IHRyZWUgdGhlbiAoKSBlbHNlIHIucmlnaHQgPC0gdHJlZTtcbiAgICB1cGRhdGVfaGVpZ2h0IG5vZGVcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxuKCogQHByZTogdCBpcyBiYWxhbmNlZC5cbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWQsIHdpdGggbmV3IG5vZGUgaW5zZXJ0ZWRcbiAgIEBwb3N0OiAhYWRkZWQgPSB0cnVlIGlmZiB0aGUgc2hhcGUgb2YgdGhlIGlucHV0IHRyZWUgY2hhbmdlZC4gICopXG5sZXQgYWRkID1cbiAgbGV0IHJlYyBhZGQgdCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICBhZGRlZCA6PSB0cnVlO1xuICAgICAgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gICAgfCBMZWFmICh7IGtleSA9IGsnOyB2YWx1ZSA9IF8gfSBhcyByKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsnIGsgaW5cbiAgICAgICgqIFRoaXMgY29tcGFyZSBpcyByZXZlcnNlZCBvbiBwdXJwb3NlLCB3ZSBhcmUgcHJldGVuZGluZ1xuICAgICAgICAgdGhhdCB0aGUgbGVhZiB3YXMganVzdCBpbnNlcnRlZCBpbnN0ZWFkIG9mIHRoZSBvdGhlciB3YXlcbiAgICAgICAgIHJvdW5kLCB0aGF0IHdheSB3ZSBvbmx5IGFsbG9jYXRlIG9uZSBub2RlLiAqKVxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRlZCA6PSBmYWxzZTtcbiAgICAgICAgaWYgcmVwbGFjZSB0aGVuIHIudmFsdWUgPC0gdjtcbiAgICAgICAgdClcbiAgICAgIGVsc2UgKFxuICAgICAgICBhZGRlZCA6PSB0cnVlO1xuICAgICAgICBpZiBjIDwgMFxuICAgICAgICB0aGVuIE5vZGUgeyBsZWZ0ID0gdDsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSAyOyByaWdodCA9IEVtcHR5IH1cbiAgICAgICAgZWxzZSBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IDI7IHJpZ2h0ID0gdCB9KVxuICAgIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgayBrJyBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRlZCA6PSBmYWxzZTtcbiAgICAgICAgaWYgcmVwbGFjZSB0aGVuIHIudmFsdWUgPC0gdilcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gc2V0X2xlZnQgdCAoYWRkIGxlZnQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGsgdilcbiAgICAgIGVsc2Ugc2V0X3JpZ2h0IHQgKGFkZCByaWdodCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2KTtcbiAgICAgIHRcbiAgaW5cbiAgZnVuIHQgfnJlcGxhY2UgfmNvbXBhcmUgfmFkZGVkIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQgdCA9IGFkZCB0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrZXkgZGF0YSBpblxuICAgIGlmICFhZGRlZCB0aGVuIGJhbGFuY2UgdCBlbHNlIHRcbjs7XG5cbmxldCByZWMgZmlyc3QgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgfCBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IFNvbWUgKGssIHYpXG4gIHwgTm9kZSB7IGxlZnQgPSBsOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IGZpcnN0IGxcbjs7XG5cbmxldCByZWMgbGFzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCA9IEVtcHR5IH0gLT4gU29tZSAoaywgdilcbiAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSByIH0gLT4gbGFzdCByXG47O1xuXG5cbmxldFtAaW5saW5lIGFsd2F5c10gcmVjIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y29tcGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBrXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMlxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmlmX2ZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5pZl9ub3RfZm91bmRcbiAgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGsgYXJnMSBhcmcyXG4gIHwgTGVhZiB7IGtleSA9IGsnOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmUgayBrJyA9IDBcbiAgICB0aGVuIGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6aycgfmRhdGE6diBhcmcxIGFyZzJcbiAgICBlbHNlIGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQgayBhcmcxIGFyZzJcbiAgfCBOb2RlIHsgbGVmdDsga2V5ID0gayc7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgIGxldCBjID0gY29tcGFyZSBrIGsnIGluXG4gICAgaWYgYyA9IDBcbiAgICB0aGVuIGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6aycgfmRhdGE6diBhcmcxIGFyZzJcbiAgICBlbHNlXG4gICAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICAgIChpZiBjIDwgMCB0aGVuIGxlZnQgZWxzZSByaWdodClcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAga1xuICAgICAgICBhcmcxXG4gICAgICAgIGFyZzJcbiAgICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICAgIH5pZl9mb3VuZFxuICAgICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbCA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5Ol8gfmRhdGEgKCkgKCkgPSBpZl9mb3VuZCBkYXRhIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSAoKSAoKSA9IGlmX25vdF9mb3VuZCBrZXkgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICAoKVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXkgfmRhdGEgKCkgKCkgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSAoKSAoKSA9IGlmX25vdF9mb3VuZCBrZXkgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICAoKVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwxID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSBhcmcgKCkgPSBpZl9mb3VuZCBkYXRhIGFyZyBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnICgpID0gaWZfbm90X2ZvdW5kIGtleSBhcmcgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwxID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnICgpID0gaWZfZm91bmQgfmtleSB+ZGF0YSBhcmcgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZyAoKSA9IGlmX25vdF9mb3VuZCBrZXkgYXJnIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwyID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSBhcmcxIGFyZzIgPSBpZl9mb3VuZCBkYXRhIGFyZzEgYXJnMiBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyID0gaWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICBiXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDIgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSBhcmcxIGFyZzIgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGFyZzEgYXJnMiBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyID0gaWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICBiXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kID1cbiAgbGV0IGlmX2ZvdW5kIHYgPSBTb21lIHYgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBfID0gTm9uZSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIC0+IGZpbmRfYW5kX2NhbGwgdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgbWVtID1cbiAgbGV0IGlmX2ZvdW5kIF8gPSB0cnVlIGluXG4gIGxldCBpZl9ub3RfZm91bmQgXyA9IGZhbHNlIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgLT4gZmluZF9hbmRfY2FsbCB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCByZW1vdmUgPVxuICBsZXQgcmVjIG1pbl9lbHQgdHJlZSA9XG4gICAgbWF0Y2ggdHJlZSB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiBfIC0+IHRyZWVcbiAgICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gdHJlZVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gbWluX2VsdCBsZWZ0XG4gIGluXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgdHJlZSA9XG4gICAgbWF0Y2ggdHJlZSB3aXRoXG4gICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IExlYWYgXyAtPiBFbXB0eSAoKiBUaGlzIG11c3QgYmUgdGhlIHJvb3QgKilcbiAgICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPiByaWdodFxuICAgIHwgTm9kZSB7IGxlZnQgPSBMZWFmIF87IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBFbXB0eSB9IC0+XG4gICAgICBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gTGVhZiBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIG5vZGUgLT5cbiAgICAgIHNldF9sZWZ0IG5vZGUgRW1wdHk7XG4gICAgICB0cmVlXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSBhcyBub2RlIC0+XG4gICAgICBzZXRfbGVmdCBub2RlIChyZW1vdmVfbWluX2VsdCBsZWZ0KTtcbiAgICAgIHRyZWVcbiAgaW5cbiAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPlxuICAgICAgbGV0IHRyZWUgPSBtaW5fZWx0IHQyIGluXG4gICAgICAobWF0Y2ggdHJlZSB3aXRoXG4gICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgICAgICAgbGV0IHQyID0gYmFsYW5jZSAocmVtb3ZlX21pbl9lbHQgdDIpIGluXG4gICAgICAgICBOb2RlXG4gICAgICAgICAgIHsgbGVmdCA9IHQxXG4gICAgICAgICAgIDsga2V5ID0ga1xuICAgICAgICAgICA7IHZhbHVlID0gdlxuICAgICAgICAgICA7IGhlaWdodCA9IEludC5tYXggKGhlaWdodCB0MSkgKGhlaWdodCB0MikgKyAxXG4gICAgICAgICAgIDsgcmlnaHQgPSB0MlxuICAgICAgICAgICB9XG4gICAgICAgfCBOb2RlIF8gYXMgbm9kZSAtPlxuICAgICAgICAgc2V0X3JpZ2h0IG5vZGUgKHJlbW92ZV9taW5fZWx0IHQyKTtcbiAgICAgICAgIHNldF9sZWZ0IG5vZGUgdDE7XG4gICAgICAgICBub2RlKVxuICBpblxuICBsZXQgcmVjIHJlbW92ZSB0IHJlbW92ZWQgY29tcGFyZSBrID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICByZW1vdmVkIDo9IGZhbHNlO1xuICAgICAgRW1wdHlcbiAgICB8IExlYWYgeyBrZXkgPSBrJzsgdmFsdWUgPSBfIH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrJyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZW1vdmVkIDo9IHRydWU7XG4gICAgICAgIEVtcHR5KVxuICAgICAgZWxzZSAoXG4gICAgICAgIHJlbW92ZWQgOj0gZmFsc2U7XG4gICAgICAgIHQpXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gayc7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsgaycgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgcmVtb3ZlZCA6PSB0cnVlO1xuICAgICAgICBtZXJnZSBsZWZ0IHJpZ2h0KVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHNldF9sZWZ0IHQgKHJlbW92ZSBsZWZ0IHJlbW92ZWQgY29tcGFyZSBrKTtcbiAgICAgICAgdClcbiAgICAgIGVsc2UgKFxuICAgICAgICBzZXRfcmlnaHQgdCAocmVtb3ZlIHJpZ2h0IHJlbW92ZWQgY29tcGFyZSBrKTtcbiAgICAgICAgdClcbiAgaW5cbiAgZnVuIHQgfnJlbW92ZWQgfmNvbXBhcmUgayAtPiBiYWxhbmNlIChyZW1vdmUgdCByZW1vdmVkIGNvbXBhcmUgaylcbjs7XG5cbmxldCByZWMgZm9sZCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gaW5pdFxuICB8IExlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YSBpbml0XG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gTGVhZiB7IGtleSA9IGxrZXk7IHZhbHVlID0gbGRhdGEgfVxuICAgICAgOyBrZXlcbiAgICAgIDsgdmFsdWUgPSBkYXRhXG4gICAgICA7IGhlaWdodCA9IF9cbiAgICAgIDsgcmlnaHQgPSBMZWFmIHsga2V5ID0gcmtleTsgdmFsdWUgPSByZGF0YSB9XG4gICAgICB9IC0+IGYgfmtleTpya2V5IH5kYXRhOnJkYXRhIChmIH5rZXkgfmRhdGEgKGYgfmtleTpsa2V5IH5kYXRhOmxkYXRhIGluaXQpKVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IExlYWYgeyBrZXkgPSBsa2V5OyB2YWx1ZSA9IGxkYXRhIH1cbiAgICAgIDsga2V5XG4gICAgICA7IHZhbHVlID0gZGF0YVxuICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICA7IHJpZ2h0ID0gRW1wdHlcbiAgICAgIH0gLT4gZiB+a2V5IH5kYXRhIChmIH5rZXk6bGtleSB+ZGF0YTpsZGF0YSBpbml0KVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IEVtcHR5XG4gICAgICA7IGtleVxuICAgICAgOyB2YWx1ZSA9IGRhdGFcbiAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgOyByaWdodCA9IExlYWYgeyBrZXkgPSBya2V5OyB2YWx1ZSA9IHJkYXRhIH1cbiAgICAgIH0gLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSBpbml0KVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdDsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0ID0gTGVhZiB7IGtleSA9IHJrZXk7IHZhbHVlID0gcmRhdGEgfSB9XG4gICAgLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSAoZm9sZCBsZWZ0IH5pbml0IH5mKSlcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBMZWFmIHsga2V5ID0gbGtleTsgdmFsdWUgPSBsZGF0YSB9OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgfVxuICAgIC0+IGZvbGQgcmlnaHQgfmluaXQ6KGYgfmtleSB+ZGF0YSAoZiB+a2V5OmxrZXkgfmRhdGE6bGRhdGEgaW5pdCkpIH5mXG4gIHwgTm9kZSB7IGxlZnQ7IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgZm9sZCByaWdodCB+aW5pdDooZiB+a2V5IH5kYXRhIChmb2xkIGxlZnQgfmluaXQgfmYpKSB+ZlxuOztcblxubGV0IHJlYyBpdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiAoKVxuICB8IExlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YVxuICB8IE5vZGUgeyBsZWZ0OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgIGl0ZXIgbGVmdCB+ZjtcbiAgICBmIH5rZXkgfmRhdGE7XG4gICAgaXRlciByaWdodCB+ZlxuOztcblxubGV0IHJlYyBtYXBpX2lucGxhY2UgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTGVhZiAoeyBrZXk7IHZhbHVlIH0gYXMgdCkgLT4gdC52YWx1ZSA8LSBmIH5rZXkgfmRhdGE6dmFsdWVcbiAgfCBOb2RlICh7IGxlZnQ7IGtleTsgdmFsdWU7IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgdCkgLT5cbiAgICBtYXBpX2lucGxhY2UgfmYgbGVmdDtcbiAgICB0LnZhbHVlIDwtIGYgfmtleSB+ZGF0YTp2YWx1ZTtcbiAgICBtYXBpX2lucGxhY2UgfmYgcmlnaHRcbjs7XG5cbmxldCBjaG9vc2VfZXhuID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbQXZsdHJlZS5jaG9vc2VfZXhuXSBvZiBlbXB0eSBoYXNodGJsXCIgW10pXG4gIHwgTGVhZiB7IGtleTsgdmFsdWU7IF8gfSB8IE5vZGUgeyBrZXk7IHZhbHVlOyBfIH0gLT4ga2V5LCB2YWx1ZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNodGJsX2ludGZcblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5LlNcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cbmxldCBoYXNoX3BhcmFtID0gSGFzaGFibGUuaGFzaF9wYXJhbVxubGV0IGhhc2ggPSBIYXNoYWJsZS5oYXNoXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxudHlwZSAoJ2ssICd2KSB0ID1cbiAgeyBtdXRhYmxlIHRhYmxlIDogKCdrLCAndikgQXZsdHJlZS50IGFycmF5XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBncm93dGhfYWxsb3dlZCA6IGJvb2xcbiAgOyBoYXNoYWJsZSA6ICdrIEhhc2hhYmxlLnRcbiAgOyBtdXRhYmxlIG11dGF0aW9uX2FsbG93ZWQgOiBib29sICgqIFNldCBkdXJpbmcgYWxsIGl0ZXJhdGlvbiBvcGVyYXRpb25zICopXG4gIH1cblxudHlwZSAnYSBrZXkgPSAnYVxuXG5sZXQgc2V4cF9vZl9rZXkgdCA9IHQuaGFzaGFibGUuSGFzaGFibGUuc2V4cF9vZl90XG5sZXQgY29tcGFyZV9rZXkgdCA9IHQuaGFzaGFibGUuSGFzaGFibGUuY29tcGFyZVxuXG5sZXQgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdCA9XG4gIGlmIG5vdCB0Lm11dGF0aW9uX2FsbG93ZWQgdGhlbiBmYWlsd2l0aCBcIkhhc2h0Ymw6IG11dGF0aW9uIG5vdCBhbGxvd2VkIGR1cmluZyBpdGVyYXRpb25cIlxuOztcblxubGV0IHdpdGhvdXRfbXV0YXRpbmcgdCBmID1cbiAgaWYgdC5tdXRhdGlvbl9hbGxvd2VkXG4gIHRoZW4gKFxuICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBmYWxzZTtcbiAgICBtYXRjaCBmICgpIHdpdGhcbiAgICB8IHggLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSB0cnVlO1xuICAgICAgeFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIHRydWU7XG4gICAgICByYWlzZSBleG4pXG4gIGVsc2UgZiAoKVxuOztcblxuKCoqIEludGVybmFsbHkgdXNlIGEgbWF4aW11bSBzaXplIHRoYXQgaXMgYSBwb3dlciBvZiAyLiBSZXZlcnNlcyB0aGUgYWJvdmUgdG8gZmluZCB0aGVcbiAgICBmbG9vciBwb3dlciBvZiAyIGJlbG93IHRoZSBzeXN0ZW0gbWF4IGFycmF5IGxlbmd0aCAqKVxubGV0IG1heF90YWJsZV9sZW5ndGggPSBJbnQuZmxvb3JfcG93MiBBcnJheS5tYXhfbGVuZ3RoXG5cbigqIFRoZSBkZWZhdWx0IHNpemUgaXMgY2hvc2VuIHRvIGJlIDAgKGFzIG9wcG9zZWQgdG8gMTI4IGFzIGl0IHdhcyBiZWZvcmUpIGJlY2F1c2U6XG4gICAtIDEyOCBjYW4gY3JlYXRlIHN1YnN0YW50aWFsIG1lbW9yeSBvdmVyaGVhZCAoeDEwKSB3aGVuIGNyZWF0aW5nIG1hbnkgdGFibGVzLCBtb3N0XG4gICAgIG9mIHdoaWNoIGFyZSBub3QgYmlnIChzYXksIGlmIHlvdSBoYXZlIGEgaGFzaHRibCBvZiBoYXNodGJsKS4gQW5kIG1lbW9yeSBvdmVyaGVhZCBpc1xuICAgICBub3QgdGhhdCBlYXN5IHRvIHByb2ZpbGUuXG4gICAtIGlmIGEgaGFzaHRibCBpcyBnb2luZyB0byBncm93LCBpdCdzIG5vdCBjbGVhciB3aHkgMTI4IGlzIG1hcmtlZGx5IGJldHRlciB0aGFuIG90aGVyXG4gICAgIHNpemVzIChpZiB5b3UgZ29pbmcgdG8gc3RpY2sgMTAwMCBlbGVtZW50cywgeW91J3JlIGdvaW5nIHRvIGdyb3cgdGhlIGhhc2h0YWJsZSBvbmNlXG4gICAgIG9yIHR3aWNlIGFueXdheSlcbiAgIC0gaW4gb3RoZXIgbGFuZ3VhZ2VzIChsaWtlIHJ1c3QsIHB5dGhvbiwgYW5kIGFwcGFyZW50bHkgZ28pLCB0aGUgZGVmYXVsdCBpcyBhbHNvIGFcbiAgICAgc21hbGwgc2l6ZS4gKilcbmxldCBjcmVhdGUgPyhncm93dGhfYWxsb3dlZCA9IHRydWUpID8oc2l6ZSA9IDApIH5oYXNoYWJsZSAoKSA9XG4gIGxldCBzaXplID0gSW50Lm1pbiAoSW50Lm1heCAxIHNpemUpIG1heF90YWJsZV9sZW5ndGggaW5cbiAgbGV0IHNpemUgPSBJbnQuY2VpbF9wb3cyIHNpemUgaW5cbiAgeyB0YWJsZSA9IEFycmF5LmNyZWF0ZSB+bGVuOnNpemUgQXZsdHJlZS5lbXB0eVxuICA7IGxlbmd0aCA9IDBcbiAgOyBncm93dGhfYWxsb3dlZFxuICA7IGhhc2hhYmxlXG4gIDsgbXV0YXRpb25fYWxsb3dlZCA9IHRydWVcbiAgfVxuOztcblxuKCoqIFN1cHBsZW1lbnRhbCBoYXNoLiBUaGlzIG1heSBub3QgYmUgbmVjZXNzYXJ5LCBpdCBpcyBpbnRlbmRlZCBhcyBhIGRlZmVuc2UgYWdhaW5zdCBwb29yXG4gICAgaGFzaCBmdW5jdGlvbnMsIGZvciB3aGljaCB0aGUgcG93ZXIgb2YgMiBzaXplZCB0YWJsZSB3aWxsIGJlIGVzcGVjaWFsbHkgc2Vuc2l0aXZlLlxuICAgIFdpdGggc29tZSB0ZXN0aW5nIHdlIG1heSBjaG9vc2UgdG8gYWRkIGl0LCBidXQgdGhpcyB0YWJsZSBpcyBkZXNpZ25lZCB0byBiZSByb2J1c3QgdG9cbiAgICBjb2xsaXNpb25zLCBhbmQgaW4gbW9zdCBvZiBteSB0ZXN0aW5nIHRoaXMgZGVncmFkZXMgcGVyZm9ybWFuY2UuICopXG5sZXQgX3N1cHBsZW1lbnRhbF9oYXNoIGggPVxuICBsZXQgaCA9IGggbHhvciAoKGggbHNyIDIwKSBseG9yIChoIGxzciAxMikpIGluXG4gIGggbHhvciAoaCBsc3IgNykgbHhvciAoaCBsc3IgNClcbjs7XG5cbmxldCBzbG90IHQga2V5ID1cbiAgbGV0IGhhc2ggPSB0Lmhhc2hhYmxlLkhhc2hhYmxlLmhhc2gga2V5IGluXG4gICgqIHRoaXMgaXMgYWx3YXlzIG5vbi1uZWdhdGl2ZSBiZWNhdXNlIHdlIGRvIFtsYW5kXSB3aXRoIG5vbi1uZWdhdGl2ZSBudW1iZXIgKilcbiAgaGFzaCBsYW5kIChBcnJheS5sZW5ndGggdC50YWJsZSAtIDEpXG47O1xuXG5sZXQgYWRkX3dvcmtlciB0IH5yZXBsYWNlIH5rZXkgfmRhdGEgPVxuICBsZXQgaSA9IHNsb3QgdCBrZXkgaW5cbiAgbGV0IHJvb3QgPSB0LnRhYmxlLihpKSBpblxuICBsZXQgYWRkZWQgPSAgKHJlZiBmYWxzZSkgaW5cbiAgbGV0IG5ld19yb290ID1cbiAgICAoKiBUaGUgYXZsIHRyZWUgbWlnaHQgcmVwbGFjZSB0aGUgdmFsdWUgW3JlcGxhY2U9dHJ1ZV0gb3IgZG8gbm90aGluZyBbcmVwbGFjZT1mYWxzZV1cbiAgICAgICB0byB0aGUgZW50cnksIGluIHRoYXQgY2FzZSB0aGUgdGFibGUgZGlkIG5vdCBnZXQgYmlnZ2VyLCBzbyB3ZSBzaG91bGQgbm90XG4gICAgICAgaW5jcmVtZW50IGxlbmd0aCwgd2UgcGFzcyBpbiB0aGUgYm9vbCByZWYgdC5hZGRlZCBzbyB0aGF0IGl0IGNhbiB0ZWxsIHVzIHdoZXRoZXJcbiAgICAgICBpdCBhZGRlZCBvciByZXBsYWNlZC4gV2UgZG8gaXQgdGhpcyB3YXkgdG8gYXZvaWQgZXh0cmEgYWxsb2NhdGlvbi4gU2luY2UgdGhlIGJvb2xcbiAgICAgICBpcyBhbiBpbW1lZGlhdGUgaXQgZG9lcyBub3QgZ28gdGhyb3VnaCB0aGUgd3JpdGUgYmFycmllci4gKilcbiAgICBBdmx0cmVlLmFkZCB+cmVwbGFjZSByb290IH5jb21wYXJlOihjb21wYXJlX2tleSB0KSB+YWRkZWQgfmtleSB+ZGF0YVxuICBpblxuICBpZiAhYWRkZWQgdGhlbiB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gICgqIFRoaXMgbGl0dGxlIG9wdGltaXphdGlvbiBzYXZlcyBhIGNhbWxfbW9kaWZ5IHdoZW4gdGhlIHRyZWVcbiAgICAgaGFzbid0IGJlZW4gcmViYWxhbmNlZC4gKilcbiAgaWYgbm90IChwaHlzX2VxdWFsIG5ld19yb290IHJvb3QpIHRoZW4gdC50YWJsZS4oaSkgPC0gbmV3X3Jvb3Q7XG4gICFhZGRlZFxuOztcblxubGV0IG1heWJlX3Jlc2l6ZV90YWJsZSB0ID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gIGxldCBzaG91bGRfZ3JvdyA9IHQubGVuZ3RoID4gbGVuIGluXG4gIGlmIHNob3VsZF9ncm93ICYmIHQuZ3Jvd3RoX2FsbG93ZWRcbiAgdGhlbiAoXG4gICAgbGV0IG5ld19hcnJheV9sZW5ndGggPSBJbnQubWluIChsZW4gKiAyKSBtYXhfdGFibGVfbGVuZ3RoIGluXG4gICAgaWYgbmV3X2FycmF5X2xlbmd0aCA+IGxlblxuICAgIHRoZW4gKFxuICAgICAgbGV0IG5ld190YWJsZSA9IEFycmF5LmNyZWF0ZSB+bGVuOm5ld19hcnJheV9sZW5ndGggQXZsdHJlZS5lbXB0eSBpblxuICAgICAgbGV0IG9sZF90YWJsZSA9IHQudGFibGUgaW5cbiAgICAgIHQudGFibGUgPC0gbmV3X3RhYmxlO1xuICAgICAgdC5sZW5ndGggPC0gMDtcbiAgICAgIGxldCBmIH5rZXkgfmRhdGEgPSBpZ25vcmUgKGFkZF93b3JrZXIgfnJlcGxhY2U6dHJ1ZSB0IH5rZXkgfmRhdGEgOiBib29sKSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvbGRfdGFibGUgLSAxIGRvXG4gICAgICAgIEF2bHRyZWUuaXRlciBvbGRfdGFibGUuKGkpIH5mXG4gICAgICBkb25lKSlcbjs7XG5cbmxldCBzZXQgdCB+a2V5IH5kYXRhID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgaWdub3JlIChhZGRfd29ya2VyIH5yZXBsYWNlOnRydWUgdCB+a2V5IH5kYXRhIDogYm9vbCk7XG4gIG1heWJlX3Jlc2l6ZV90YWJsZSB0XG47O1xuXG5sZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIGxldCBhZGRlZCA9IGFkZF93b3JrZXIgfnJlcGxhY2U6ZmFsc2UgdCB+a2V5IH5kYXRhIGluXG4gIGlmIGFkZGVkXG4gIHRoZW4gKFxuICAgIG1heWJlX3Jlc2l6ZV90YWJsZSB0O1xuICAgIGBPaylcbiAgZWxzZSBgRHVwbGljYXRlXG47O1xuXG5sZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGhcbiAgfCBgT2sgLT4gKClcbiAgfCBgRHVwbGljYXRlIC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gc2V4cF9vZl9rZXkgdCBpblxuICAgIGxldCBlcnJvciA9IEVycm9yLmNyZWF0ZSBcIkhhc2h0YmwuYWRkX2V4biBnb3Qga2V5IGFscmVhZHkgcHJlc2VudFwiIGtleSBzZXhwX29mX2tleSBpblxuICAgIEVycm9yLnJhaXNlIGVycm9yXG47O1xuXG5sZXQgY2xlYXIgdCA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICB0LnRhYmxlLihpKSA8LSBBdmx0cmVlLmVtcHR5XG4gIGRvbmU7XG4gIHQubGVuZ3RoIDwtIDBcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsIHQga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgKCogd2l0aCBhIGdvb2QgaGFzaCBmdW5jdGlvbiB0aGVzZSBmaXJzdCB0d28gY2FzZXMgd2lsbCBiZSB0aGUgb3ZlcndoZWxtaW5nIG1ham9yaXR5LFxuICAgICBhbmQgQXZsdHJlZS5maW5kIGlzIHJlY3Vyc2l2ZSwgc28gaXQgY2FuJ3QgYmUgaW5saW5lZCwgc28gZG9pbmcgdGhpcyBhdm9pZHMgYVxuICAgICBmdW5jdGlvbiBjYWxsIGluIG1vc3QgY2FzZXMuICopXG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXlcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgdiBlbHNlIGlmX25vdF9mb3VuZCBrZXlcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kX2FuZF9jYWxsIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwxIHQga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIHYgYSBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRfYW5kX2NhbGwxIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwyIHQga2V5IH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgdiBhIGIgZWxzZSBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRfYW5kX2NhbGwyIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsIHQga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgKCogd2l0aCBhIGdvb2QgaGFzaCBmdW5jdGlvbiB0aGVzZSBmaXJzdCB0d28gY2FzZXMgd2lsbCBiZSB0aGUgb3ZlcndoZWxtaW5nIG1ham9yaXR5LFxuICAgICBhbmQgQXZsdHJlZS5maW5kIGlzIHJlY3Vyc2l2ZSwgc28gaXQgY2FuJ3QgYmUgaW5saW5lZCwgc28gZG9pbmcgdGhpcyBhdm9pZHMgYVxuICAgICBmdW5jdGlvbiBjYWxsIGluIG1vc3QgY2FzZXMuICopXG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXlcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgfmtleTprIH5kYXRhOnYgZWxzZSBpZl9ub3RfZm91bmQga2V5XG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZGlfYW5kX2NhbGwgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwxIHQga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIH5rZXk6ayB+ZGF0YTp2IGEgZWxzZSBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kaV9hbmRfY2FsbDEgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwyIHQga2V5IH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgfmtleTprIH5kYXRhOnYgYSBiIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kaV9hbmRfY2FsbDJcbiAgICAgIHRyZWVcbiAgICAgIH5jb21wYXJlOihjb21wYXJlX2tleSB0KVxuICAgICAga2V5XG4gICAgICB+YVxuICAgICAgfmJcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmQgPVxuICBsZXQgaWZfZm91bmQgdiA9IFNvbWUgdiBpblxuICBsZXQgaWZfbm90X2ZvdW5kIF8gPSBOb25lIGluXG4gIGZ1biB0IGtleSAtPiBmaW5kX2FuZF9jYWxsIHQga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgbWVtIHQga2V5ID1cbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gZmFsc2VcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IF8gfSAtPiBjb21wYXJlX2tleSB0IGsga2V5ID0gMFxuICB8IHRyZWUgLT4gQXZsdHJlZS5tZW0gdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5XG47O1xuXG5sZXQgcmVtb3ZlIHQga2V5ID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgbGV0IGkgPSBzbG90IHQga2V5IGluXG4gIGxldCByb290ID0gdC50YWJsZS4oaSkgaW5cbiAgbGV0IGFkZGVkX29yX3JlbW92ZWQgPSAgKHJlZiBmYWxzZSkgaW5cbiAgbGV0IG5ld19yb290ID1cbiAgICBBdmx0cmVlLnJlbW92ZSByb290IH5yZW1vdmVkOmFkZGVkX29yX3JlbW92ZWQgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleVxuICBpblxuICBpZiBub3QgKHBoeXNfZXF1YWwgcm9vdCBuZXdfcm9vdCkgdGhlbiB0LnRhYmxlLihpKSA8LSBuZXdfcm9vdDtcbiAgaWYgIWFkZGVkX29yX3JlbW92ZWQgdGhlbiB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDFcbjs7XG5cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgaWYgbGVuZ3RoIHQgPSAwXG4gIHRoZW4gaW5pdFxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gICAgbGV0IG0gPSB0Lm11dGF0aW9uX2FsbG93ZWQgaW5cbiAgICBtYXRjaFxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoIEFycmF5LnVuc2FmZV9nZXQgdC50YWJsZSBpIHdpdGhcbiAgICAgICAgfCBBdmx0cmVlLkVtcHR5IC0+ICgpXG4gICAgICAgIHwgQXZsdHJlZS5MZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBhY2MgOj0gZiB+a2V5IH5kYXRhICFhY2NcbiAgICAgICAgfCBidWNrZXQgLT4gYWNjIDo9IEF2bHRyZWUuZm9sZCBidWNrZXQgfmluaXQ6IWFjYyB+ZlxuICAgICAgZG9uZVxuICAgIHdpdGhcbiAgICB8ICgpIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbTtcbiAgICAgICFhY2NcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgcmFpc2UgZXhuKVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBpZiB0Lmxlbmd0aCA9IDBcbiAgdGhlbiAoKVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IG0gPSB0Lm11dGF0aW9uX2FsbG93ZWQgaW5cbiAgICBtYXRjaFxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoIEFycmF5LnVuc2FmZV9nZXQgdC50YWJsZSBpIHdpdGhcbiAgICAgICAgfCBBdmx0cmVlLkVtcHR5IC0+ICgpXG4gICAgICAgIHwgQXZsdHJlZS5MZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBmIH5rZXkgfmRhdGFcbiAgICAgICAgfCBidWNrZXQgLT4gQXZsdHJlZS5pdGVyIGJ1Y2tldCB+ZlxuICAgICAgZG9uZVxuICAgIHdpdGhcbiAgICB8ICgpIC0+IHQubXV0YXRpb25fYWxsb3dlZCA8LSBtXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbTtcbiAgICAgIHJhaXNlIGV4bilcbjs7XG5cbmxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxubGV0IGl0ZXJfa2V5cyB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSkgW0Bub250YWlsXVxuXG5sZXQgcmVjIGNob29zZV9ub25lbXB0eSB0YWJsZSBpID1cbiAgbGV0IGF2bHRyZWUgPSBBcnJheS51bnNhZmVfZ2V0IHRhYmxlIGkgaW5cbiAgaWYgQXZsdHJlZS5pc19lbXB0eSBhdmx0cmVlXG4gIHRoZW4gY2hvb3NlX25vbmVtcHR5IHRhYmxlICgoaSArIDEpIGxhbmQgKEFycmF5Lmxlbmd0aCB0YWJsZSAtIDEpKVxuICBlbHNlIEF2bHRyZWUuY2hvb3NlX2V4biBhdmx0cmVlXG47O1xuXG5sZXQgY2hvb3NlX2V4biB0ID1cbiAgaWYgdC5sZW5ndGggPSAwIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0hhc2h0YmwuY2hvb3NlX2V4bl0gb2YgZW1wdHkgaGFzaHRibFwiIFtdKTtcbiAgY2hvb3NlX25vbmVtcHR5IHQudGFibGUgMFxuOztcblxubGV0IGNob29zZSB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChjaG9vc2Vfbm9uZW1wdHkgdC50YWJsZSAwKVxuXG5sZXQgY2hvb3NlX3JhbmRvbWx5X25vbmVtcHR5IH5yYW5kb21fc3RhdGUgdCA9XG4gIGxldCBzdGFydF9pZHggPSBSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAoQXJyYXkubGVuZ3RoIHQudGFibGUpIGluXG4gIGNob29zZV9ub25lbXB0eSB0LnRhYmxlIHN0YXJ0X2lkeFxuOztcblxubGV0IGNob29zZV9yYW5kb21seSA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0ID1cbiAgaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChjaG9vc2VfcmFuZG9tbHlfbm9uZW1wdHkgfnJhbmRvbV9zdGF0ZSB0KVxuOztcblxubGV0IGNob29zZV9yYW5kb21seV9leG4gPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltIYXNodGJsLmNob29zZV9yYW5kb21seV9leG5dIG9mIGVtcHR5IGhhc2h0YmxcIiBbXSk7XG4gIGNob29zZV9yYW5kb21seV9ub25lbXB0eSB+cmFuZG9tX3N0YXRlIHRcbjs7XG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2tleSBpbnZhcmlhbnRfZGF0YSB0ID1cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgIEF2bHRyZWUuaW52YXJpYW50IHQudGFibGUuKGkpIH5jb21wYXJlOihjb21wYXJlX2tleSB0KVxuICBkb25lO1xuICBsZXQgcmVhbF9sZW4gPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBpIC0+XG4gICAgICBpbnZhcmlhbnRfa2V5IGtleTtcbiAgICAgIGludmFyaWFudF9kYXRhIGRhdGE7XG4gICAgICBpICsgMSlcbiAgaW5cbiAgYXNzZXJ0IChyZWFsX2xlbiA9IHQubGVuZ3RoKVxuOztcblxubGV0IGZpbmRfZXhuID1cbiAgbGV0IGlmX2ZvdW5kIHYgXyA9IHYgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBrIHQgPVxuICAgIHJhaXNlXG4gICAgICAoTm90X2ZvdW5kX3MgKExpc3QgWyBBdG9tIFwiSGFzaHRibC5maW5kX2V4bjogbm90IGZvdW5kXCI7IHQuaGFzaGFibGUuc2V4cF9vZl90IGsgXSkpXG4gIGluXG4gIGxldCBmaW5kX2V4biB0IGtleSA9IGZpbmRfYW5kX2NhbGwxIHQga2V5IH5hOnQgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX2V4blxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgIGZhbHNlKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IG5vdCAoZXhpc3RzaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBub3QgKGYgfmtleSB+ZGF0YSkpKVxubGV0IGZvcl9hbGwgdCB+ZiA9IG5vdCAoZXhpc3RzaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IG5vdCAoZiBkYXRhKSkpXG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYykgW0Bub250YWlsXG4gIF1cbjs7XG5cbmxldCBjb3VudCB0IH5mID1cbiAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgYWNjIC0+IGlmIGYgZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgbmV3X3QgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBzZXQgbmV3X3QgfmtleSB+ZGF0YTooZiB+a2V5IH5kYXRhKSk7XG4gIG5ld190XG47O1xuXG5sZXQgbWFwIHQgfmYgPSBtYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5sZXQgY29weSB0ID0gbWFwIHQgfmY6Rm4uaWRcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgbmV3X3QgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgfCBTb21lIG5ld19kYXRhIC0+IHNldCBuZXdfdCB+a2V5IH5kYXRhOm5ld19kYXRhXG4gICAgfCBOb25lIC0+ICgpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgZmlsdGVyX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxubGV0IGZpbHRlcl9rZXlzIHQgfmYgPSBmaWx0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOl8gLT4gZiBrZXkpIFtAbm9udGFpbF1cblxubGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICBsZXQgdDAgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBsZXQgdDEgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIG1hdGNoIChmIH5rZXkgfmRhdGEgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgfCBGaXJzdCBuZXdfZGF0YSAtPiBzZXQgdDAgfmtleSB+ZGF0YTpuZXdfZGF0YVxuICAgIHwgU2Vjb25kIG5ld19kYXRhIC0+IHNldCB0MSB+a2V5IH5kYXRhOm5ld19kYXRhKTtcbiAgdDAsIHQxXG47O1xuXG5sZXQgcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxubGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gIHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIEZpcnN0IGRhdGEgZWxzZSBTZWNvbmQgZGF0YSkgXG4gIFtAbm9udGFpbF1cbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxuXG5sZXQgZmluZF9vcl9hZGQgdCBpZCB+ZGVmYXVsdDooZGVmYXVsdCBbQGxvY2FsXSkgPVxuICBmaW5kX2FuZF9jYWxsXG4gICAgdFxuICAgIGlkXG4gICAgfmlmX2ZvdW5kOihmdW4gZGF0YSAtPiBkYXRhKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biBrZXkgLT5cbiAgICAgIGxldCBkZWZhdWx0ID0gZGVmYXVsdCAoKSBpblxuICAgICAgc2V0IHQgfmtleSB+ZGF0YTpkZWZhdWx0O1xuICAgICAgZGVmYXVsdCkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRpX29yX2FkZCB0IGlkIH5kZWZhdWx0ID1cbiAgZmluZF9hbmRfY2FsbFxuICAgIHRcbiAgICBpZFxuICAgIH5pZl9mb3VuZDooZnVuIGRhdGEgLT4gZGF0YSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4ga2V5IC0+XG4gICAgICBsZXQgZGVmYXVsdCA9IGRlZmF1bHQga2V5IGluXG4gICAgICBzZXQgdCB+a2V5IH5kYXRhOmRlZmF1bHQ7XG4gICAgICBkZWZhdWx0KSBbQG5vbnRhaWxdXG47O1xuXG4oKiBTb21lIGhhc2h0YmwgaW1wbGVtZW50YXRpb25zIG1heSBiZSBhYmxlIHRvIHBlcmZvcm0gdGhpcyBtb3JlIGVmZmljaWVudGx5IHRoYW4gdHdvXG4gICBzZXBhcmF0ZSBsb29rdXBzICopXG5sZXQgZmluZF9hbmRfcmVtb3ZlIHQgaWQgPVxuICBsZXQgcmVzdWx0ID0gZmluZCB0IGlkIGluXG4gIGlmIE9wdGlvbi5pc19zb21lIHJlc3VsdCB0aGVuIHJlbW92ZSB0IGlkO1xuICByZXN1bHRcbjs7XG5cblxubGV0IGNoYW5nZSB0IGlkIH5mID1cbiAgbWF0Y2ggZiAoZmluZCB0IGlkKSB3aXRoXG4gIHwgTm9uZSAtPiByZW1vdmUgdCBpZFxuICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5OmlkIH5kYXRhXG47O1xuXG5sZXQgdXBkYXRlX2FuZF9yZXR1cm4gdCBpZCB+ZiA9XG4gIGxldCBkYXRhID0gZiAoZmluZCB0IGlkKSBpblxuICBzZXQgdCB+a2V5OmlkIH5kYXRhO1xuICBkYXRhXG47O1xuXG5sZXQgdXBkYXRlIHQgaWQgfmYgPSBpZ25vcmUgKHVwZGF0ZV9hbmRfcmV0dXJuIHQgaWQgfmYgOiBfKVxuXG5sZXQgaW5jcl9ieSB+cmVtb3ZlX2lmX3plcm8gdCBrZXkgYnkgPVxuICBpZiByZW1vdmVfaWZfemVyb1xuICB0aGVuXG4gICAgY2hhbmdlIHQga2V5IH5mOihmdW4gb3B0IC0+XG4gICAgICBtYXRjaCBieSArIE9wdGlvbi52YWx1ZSBvcHQgfmRlZmF1bHQ6MCB3aXRoXG4gICAgICB8IDAgLT4gTm9uZVxuICAgICAgfCBuIC0+IFNvbWUgbilcbiAgZWxzZVxuICAgIHVwZGF0ZSB0IGtleSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBieVxuICAgICAgfCBTb21lIGkgLT4gYnkgKyBpKVxuOztcblxubGV0IGluY3IgPyhieSA9IDEpID8ocmVtb3ZlX2lmX3plcm8gPSBmYWxzZSkgdCBrZXkgPSBpbmNyX2J5IH5yZW1vdmVfaWZfemVybyB0IGtleSBieVxubGV0IGRlY3IgPyhieSA9IDEpID8ocmVtb3ZlX2lmX3plcm8gPSBmYWxzZSkgdCBrZXkgPSBpbmNyX2J5IH5yZW1vdmVfaWZfemVybyB0IGtleSAoLWJ5KVxuXG5sZXQgYWRkX211bHRpIHQgfmtleSB+ZGF0YSA9XG4gIHVwZGF0ZSB0IGtleSB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gWyBkYXRhIF1cbiAgICB8IFNvbWUgbCAtPiBkYXRhIDo6IGwpXG47O1xuXG5sZXQgcmVtb3ZlX211bHRpIHQga2V5ID1cbiAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgW10gfCBTb21lIFsgXyBdIC0+IHJlbW92ZSB0IGtleVxuICB8IFNvbWUgKF8gOjogdGwpIC0+IHNldCB0IH5rZXkgfmRhdGE6dGxcbjs7XG5cbmxldCBmaW5kX211bHRpIHQga2V5ID1cbiAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gIHwgTm9uZSAtPiBbXVxuICB8IFNvbWUgbCAtPiBsXG47O1xuXG5sZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSByb3dzID1cbiAgbGV0IHNpemUgPVxuICAgIG1hdGNoIHNpemUgd2l0aFxuICAgIHwgU29tZSBzIC0+IHNcbiAgICB8IE5vbmUgLT4gTGlzdC5sZW5ndGggcm93c1xuICBpblxuICBsZXQgcmVzID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgfnNpemUgKCkgaW5cbiAgbGV0IGR1cGVzID0gcmVmIFtdIGluXG4gIExpc3QuaXRlciByb3dzIH5mOihmdW4gciAtPlxuICAgIGxldCBrZXkgPSBnZXRfa2V5IHIgaW5cbiAgICBsZXQgZGF0YSA9IGdldF9kYXRhIHIgaW5cbiAgICBpZiBtZW0gcmVzIGtleSB0aGVuIGR1cGVzIDo9IGtleSA6OiAhZHVwZXMgZWxzZSBzZXQgcmVzIH5rZXkgfmRhdGEpO1xuICBtYXRjaCAhZHVwZXMgd2l0aFxuICB8IFtdIC0+IGBPayByZXNcbiAgfCBrZXlzIC0+IGBEdXBsaWNhdGVfa2V5cyAoTGlzdC5kZWR1cF9hbmRfc29ydCB+Y29tcGFyZTpoYXNoYWJsZS5IYXNoYWJsZS5jb21wYXJlIGtleXMpXG47O1xuXG5sZXQgY3JlYXRlX21hcHBlZF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSByb3dzID1cbiAgbGV0IHNpemUgPVxuICAgIG1hdGNoIHNpemUgd2l0aFxuICAgIHwgU29tZSBzIC0+IHNcbiAgICB8IE5vbmUgLT4gTGlzdC5sZW5ndGggcm93c1xuICBpblxuICBsZXQgcmVzID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCB+c2l6ZSB+aGFzaGFibGUgKCkgaW5cbiAgTGlzdC5pdGVyIHJvd3MgfmY6KGZ1biByIC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgciBpblxuICAgIGxldCBkYXRhID0gZ2V0X2RhdGEgciBpblxuICAgIGFkZF9tdWx0aSByZXMgfmtleSB+ZGF0YSk7XG4gIHJlc1xuOztcblxubGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgbWF0Y2ggY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5OmZzdCB+Z2V0X2RhdGE6c25kIGxzdCB3aXRoXG4gIHwgYE9rIHQgLT4gYE9rIHRcbiAgfCBgRHVwbGljYXRlX2tleXMgayAtPiBgRHVwbGljYXRlX2tleSAoTGlzdC5oZF9leG4gaylcbjs7XG5cbmxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXk6ZnN0IH5nZXRfZGF0YTpzbmQgbHN0XG47O1xuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCB3aXRoXG4gIHwgYE9rIHYgLT4gUmVzdWx0Lk9rIHZcbiAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBoYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3QgaW5cbiAgICBPcl9lcnJvci5lcnJvciBcIkhhc2h0Ymwub2ZfYWxpc3RfZXhuOiBkdXBsaWNhdGUga2V5XCIga2V5IHNleHBfb2Zfa2V5XG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgbWF0Y2ggb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3Qgd2l0aFxuICB8IFJlc3VsdC5PayB2IC0+IHZcbiAgfCBSZXN1bHQuRXJyb3IgZSAtPiBFcnJvci5yYWlzZSBlXG47O1xuXG5sZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBjcmVhdGVfbWFwcGVkX211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXk6ZnN0IH5nZXRfZGF0YTpzbmQgbHN0XG47O1xuXG5sZXQgdG9fYWxpc3QgdCA9IGZvbGQgfmY6KGZ1biB+a2V5IH5kYXRhIGxpc3QgLT4gKGtleSwgZGF0YSkgOjogbGlzdCkgfmluaXQ6W10gdFxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSB0ID1cbiAgdFxuICB8PiB0b19hbGlzdFxuICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6KGZ1biAoazEsIF8pIChrMiwgXykgLT4gdC5oYXNoYWJsZS5jb21wYXJlIGsxIGsyKVxuICB8PiBzZXhwX29mX2xpc3QgKHNleHBfb2ZfcGFpciBzZXhwX29mX2tleSBzZXhwX29mX2RhdGEpXG47O1xuXG5sZXQgdF9vZl9zZXhwIH5oYXNoYWJsZSBrX29mX3NleHAgZF9vZl9zZXhwIHNleHAgPVxuICBsZXQgYWxpc3QgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBrX29mX3NleHAgZF9vZl9zZXhwKSBzZXhwIGluXG4gIG1hdGNoIG9mX2FsaXN0IH5oYXNoYWJsZSBhbGlzdCB+c2l6ZTooTGlzdC5sZW5ndGggYWxpc3QpIHdpdGhcbiAgfCBgT2sgdiAtPiB2XG4gIHwgYER1cGxpY2F0ZV9rZXkgayAtPlxuICAgICgqIGZpbmQgdGhlIHNleHAgb2YgYSBkdXBsaWNhdGUga2V5LCBzbyB0aGUgZXJyb3IgaXMgbmFycm93ZWQgdG8gYSBrZXkgYW5kIG5vdFxuICAgICAgIHRoZSB3aG9sZSBtYXAgKilcbiAgICBsZXQgYWxpc3Rfc2V4cHMgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBGbi5pZCBGbi5pZCkgc2V4cCBpblxuICAgIGxldCBmb3VuZF9maXJzdF9rID0gcmVmIGZhbHNlIGluXG4gICAgTGlzdC5pdGVyMl9leG4gYWxpc3QgYWxpc3Rfc2V4cHMgfmY6KGZ1biAoazIsIF8pIChrMl9zZXhwLCBfKSAtPlxuICAgICAgaWYgaGFzaGFibGUuY29tcGFyZSBrIGsyID0gMFxuICAgICAgdGhlblxuICAgICAgICBpZiAhZm91bmRfZmlyc3Rfa1xuICAgICAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJIYXNodGJsLnRfb2Zfc2V4cDogZHVwbGljYXRlIGtleVwiIGsyX3NleHBcbiAgICAgICAgZWxzZSBmb3VuZF9maXJzdF9rIDo9IHRydWUpO1xuICAgIGFzc2VydCBmYWxzZVxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyXG4gICAgICAodHlwZSBrIHYpXG4gICAgICAoa19ncmFtbWFyIDogayBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICAgICh2X2dyYW1tYXIgOiB2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IChrLCB2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC5Bc3NvYy50X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyKVxuOztcblxubGV0IGtleXMgdCA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGE6XyBhY2MgLT4ga2V5IDo6IGFjYylcbmxldCBkYXRhIHQgPSBmb2xkIH5mOihmdW4gfmtleTpfIH5kYXRhIGxpc3QgLT4gZGF0YSA6OiBsaXN0KSB+aW5pdDpbXSB0XG5cbmxldCBhZGRfdG9fZ3JvdXBzIGdyb3VwcyB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgfnJvd3MgPVxuICBMaXN0Lml0ZXIgcm93cyB+ZjooZnVuIHJvdyAtPlxuICAgIGxldCBrZXkgPSBnZXRfa2V5IHJvdyBpblxuICAgIGxldCBkYXRhID0gZ2V0X2RhdGEgcm93IGluXG4gICAgbGV0IGRhdGEgPVxuICAgICAgbWF0Y2ggZmluZCBncm91cHMga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkYXRhXG4gICAgICB8IFNvbWUgb2xkIC0+IGNvbWJpbmUgb2xkIGRhdGFcbiAgICBpblxuICAgIHNldCBncm91cHMgfmtleSB+ZGF0YSkgW0Bub250YWlsXVxuOztcblxubGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIHJvd3MgPVxuICBsZXQgcmVzID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKCkgaW5cbiAgYWRkX3RvX2dyb3VwcyByZXMgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIH5yb3dzO1xuICByZXNcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YTpGbi5pZCByb3dzXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyA9XG4gIG1hdGNoIGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3Mgd2l0aFxuICB8IGBPayB0IC0+IFJlc3VsdC5PayB0XG4gIHwgYER1cGxpY2F0ZV9rZXlzIGtleXMgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBoYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3QgaW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIkhhc2h0YmwuY3JlYXRlX3dpdGhfa2V5OiBkdXBsaWNhdGUga2V5c1wiXG4gICAgICAgICBbIFwia2V5c1wiLCBzZXhwX29mX2xpc3Qgc2V4cF9vZl9rZXkga2V5cyBdKVxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgT3JfZXJyb3Iub2tfZXhuIChjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzKVxuOztcblxubGV0IG1lcmdlID1cbiAgbGV0IG1heWJlX3NldCB0IH5rZXkgfmYgZCA9XG4gICAgbWF0Y2ggZiB+a2V5IGQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB2IC0+IHNldCB0IH5rZXkgfmRhdGE6dlxuICBpblxuICBmdW4gdF9sZWZ0IHRfcmlnaHQgfmYgLT5cbiAgICBpZiBub3QgKEhhc2hhYmxlLmVxdWFsIHRfbGVmdC5oYXNoYWJsZSB0X3JpZ2h0Lmhhc2hhYmxlKVxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJIYXNodGJsLm1lcmdlOiBkaWZmZXJlbnQgJ2hhc2hhYmxlJyB2YWx1ZXNcIjtcbiAgICBsZXQgbmV3X3QgPVxuICAgICAgY3JlYXRlXG4gICAgICAgIH5ncm93dGhfYWxsb3dlZDp0X2xlZnQuZ3Jvd3RoX2FsbG93ZWRcbiAgICAgICAgfmhhc2hhYmxlOnRfbGVmdC5oYXNoYWJsZVxuICAgICAgICB+c2l6ZTp0X2xlZnQubGVuZ3RoXG4gICAgICAgICgpXG4gICAgaW5cbiAgICB3aXRob3V0X211dGF0aW5nIHRfbGVmdCAoZnVuICgpIC0+XG4gICAgICB3aXRob3V0X211dGF0aW5nIHRfcmlnaHQgKGZ1biAoKSAtPlxuICAgICAgICBpdGVyaSB0X2xlZnQgfmY6KGZ1biB+a2V5IH5kYXRhOmxlZnQgLT5cbiAgICAgICAgICBtYXRjaCBmaW5kIHRfcmlnaHQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBMZWZ0IGxlZnQpXG4gICAgICAgICAgfCBTb21lIHJpZ2h0IC0+IG1heWJlX3NldCBuZXdfdCB+a2V5IH5mIChgQm90aCAobGVmdCwgcmlnaHQpKSk7XG4gICAgICAgIGl0ZXJpIHRfcmlnaHQgfmY6KGZ1biB+a2V5IH5kYXRhOnJpZ2h0IC0+XG4gICAgICAgICAgbWF0Y2ggZmluZCB0X2xlZnQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBSaWdodCByaWdodClcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICAgICgqIGFscmVhZHkgZG9uZSBhYm92ZSAqKSkgW0Bub250YWlsXSkgW0Bub250YWlsXSk7XG4gICAgbmV3X3Rcbjs7XG5cbmxldCBtZXJnZV9pbnRvIH5zcmMgfmRzdCB+ZiA9XG4gIGl0ZXJpIHNyYyB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQgZHN0X2RhdGEgPSBmaW5kIGRzdCBrZXkgaW5cbiAgICBsZXQgYWN0aW9uID0gd2l0aG91dF9tdXRhdGluZyBkc3QgKGZ1biAoKSAtPiBmIH5rZXkgZGF0YSBkc3RfZGF0YSkgaW5cbiAgICBtYXRjaCAoYWN0aW9uIDogXyBNZXJnZV9pbnRvX2FjdGlvbi50KSB3aXRoXG4gICAgfCBSZW1vdmUgLT4gcmVtb3ZlIGRzdCBrZXlcbiAgICB8IFNldF90byBkYXRhIC0+XG4gICAgICAobWF0Y2ggZHN0X2RhdGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBzZXQgZHN0IH5rZXkgfmRhdGFcbiAgICAgICB8IFNvbWUgZHN0X2RhdGEgLT4gaWYgbm90IChwaHlzX2VxdWFsIGRzdF9kYXRhIGRhdGEpIHRoZW4gc2V0IGRzdCB+a2V5IH5kYXRhKSkgW0Bub250YWlsXG4gIF1cbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgYWMgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWMgZWxzZSBrZXkgOjogYWMpXG4gIGluXG4gIExpc3QuaXRlciB0b19yZW1vdmUgfmY6KGZ1biBrZXkgLT4gcmVtb3ZlIHQga2V5KVxuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPSBmaWx0ZXJpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbmxldCBmaWx0ZXJfa2V5c19pbnBsYWNlIHQgfmYgPSBmaWx0ZXJpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSkgW0Bub250YWlsXVxuXG5sZXQgZmlsdGVyX21hcGlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IG1hcF9yZXN1bHRzID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhYyAtPiAoa2V5LCBmIH5rZXkgfmRhdGEpIDo6IGFjKSBpblxuICBMaXN0Lml0ZXIgbWFwX3Jlc3VsdHMgfmY6KGZ1biAoa2V5LCByZXN1bHQpIC0+XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmVtb3ZlIHQga2V5XG4gICAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleSB+ZGF0YSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtYXBpX2lucGxhY2UgdCB+ZiA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIHdpdGhvdXRfbXV0YXRpbmcgdCAoZnVuICgpIC0+XG4gICAgQXJyYXkuaXRlciB0LnRhYmxlIH5mOihBdmx0cmVlLm1hcGlfaW5wbGFjZSB+ZikgW0Bub250YWlsXSkgW0Bub250YWlsXVxuOztcblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPSBtYXBpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxubGV0IGVxdWFsIGVxdWFsIHQgdCcgPVxuICBsZW5ndGggdCA9IGxlbmd0aCB0J1xuICAmJiAod2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgd2l0aG91dF9tdXRhdGluZyB0JyAoZnVuICgpIC0+XG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICBtYXRjaCBmaW5kIHQnIGtleSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByLnJldHVybiBmYWxzZVxuICAgICAgICB8IFNvbWUgZGF0YScgLT4gaWYgbm90IChlcXVhbCBkYXRhIGRhdGEnKSB0aGVuIHIucmV0dXJuIGZhbHNlKSBbQG5vbnRhaWxdKTtcbiAgICB0cnVlKSBbQG5vbnRhaWxdKVxuOztcblxubGV0IHNpbWlsYXIgPSBlcXVhbFxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGNob29zZSA9IGNob29zZVxuICBsZXQgY2hvb3NlX2V4biA9IGNob29zZV9leG5cbiAgbGV0IGNob29zZV9yYW5kb21seSA9IGNob29zZV9yYW5kb21seVxuICBsZXQgY2hvb3NlX3JhbmRvbWx5X2V4biA9IGNob29zZV9yYW5kb21seV9leG5cbiAgbGV0IGNsZWFyID0gY2xlYXJcbiAgbGV0IGNvcHkgPSBjb3B5XG4gIGxldCByZW1vdmUgPSByZW1vdmVcbiAgbGV0IHNldCA9IHNldFxuICBsZXQgYWRkID0gYWRkXG4gIGxldCBhZGRfZXhuID0gYWRkX2V4blxuICBsZXQgY2hhbmdlID0gY2hhbmdlXG4gIGxldCB1cGRhdGUgPSB1cGRhdGVcbiAgbGV0IHVwZGF0ZV9hbmRfcmV0dXJuID0gdXBkYXRlX2FuZF9yZXR1cm5cbiAgbGV0IGFkZF9tdWx0aSA9IGFkZF9tdWx0aVxuICBsZXQgcmVtb3ZlX211bHRpID0gcmVtb3ZlX211bHRpXG4gIGxldCBmaW5kX211bHRpID0gZmluZF9tdWx0aVxuICBsZXQgbWVtID0gbWVtXG4gIGxldCBpdGVyX2tleXMgPSBpdGVyX2tleXNcbiAgbGV0IGl0ZXIgPSBpdGVyXG4gIGxldCBpdGVyaSA9IGl0ZXJpXG4gIGxldCBleGlzdHMgPSBleGlzdHNcbiAgbGV0IGV4aXN0c2kgPSBleGlzdHNpXG4gIGxldCBmb3JfYWxsID0gZm9yX2FsbFxuICBsZXQgZm9yX2FsbGkgPSBmb3JfYWxsaVxuICBsZXQgY291bnQgPSBjb3VudFxuICBsZXQgY291bnRpID0gY291bnRpXG4gIGxldCBmb2xkID0gZm9sZFxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGxldCBpc19lbXB0eSA9IGlzX2VtcHR5XG4gIGxldCBtYXAgPSBtYXBcbiAgbGV0IG1hcGkgPSBtYXBpXG4gIGxldCBmaWx0ZXJfbWFwID0gZmlsdGVyX21hcFxuICBsZXQgZmlsdGVyX21hcGkgPSBmaWx0ZXJfbWFwaVxuICBsZXQgZmlsdGVyX2tleXMgPSBmaWx0ZXJfa2V5c1xuICBsZXQgZmlsdGVyID0gZmlsdGVyXG4gIGxldCBmaWx0ZXJpID0gZmlsdGVyaVxuICBsZXQgcGFydGl0aW9uX21hcCA9IHBhcnRpdGlvbl9tYXBcbiAgbGV0IHBhcnRpdGlvbl9tYXBpID0gcGFydGl0aW9uX21hcGlcbiAgbGV0IHBhcnRpdGlvbl90ZiA9IHBhcnRpdGlvbl90ZlxuICBsZXQgcGFydGl0aW9uaV90ZiA9IHBhcnRpdGlvbmlfdGZcbiAgbGV0IGZpbmRfb3JfYWRkID0gZmluZF9vcl9hZGRcbiAgbGV0IGZpbmRpX29yX2FkZCA9IGZpbmRpX29yX2FkZFxuICBsZXQgZmluZCA9IGZpbmRcbiAgbGV0IGZpbmRfZXhuID0gZmluZF9leG5cbiAgbGV0IGZpbmRfYW5kX2NhbGwgPSBmaW5kX2FuZF9jYWxsXG4gIGxldCBmaW5kX2FuZF9jYWxsMSA9IGZpbmRfYW5kX2NhbGwxXG4gIGxldCBmaW5kX2FuZF9jYWxsMiA9IGZpbmRfYW5kX2NhbGwyXG4gIGxldCBmaW5kaV9hbmRfY2FsbCA9IGZpbmRpX2FuZF9jYWxsXG4gIGxldCBmaW5kaV9hbmRfY2FsbDEgPSBmaW5kaV9hbmRfY2FsbDFcbiAgbGV0IGZpbmRpX2FuZF9jYWxsMiA9IGZpbmRpX2FuZF9jYWxsMlxuICBsZXQgZmluZF9hbmRfcmVtb3ZlID0gZmluZF9hbmRfcmVtb3ZlXG4gIGxldCB0b19hbGlzdCA9IHRvX2FsaXN0XG4gIGxldCBtZXJnZSA9IG1lcmdlXG4gIGxldCBtZXJnZV9pbnRvID0gbWVyZ2VfaW50b1xuICBsZXQga2V5cyA9IGtleXNcbiAgbGV0IGRhdGEgPSBkYXRhXG4gIGxldCBmaWx0ZXJfa2V5c19pbnBsYWNlID0gZmlsdGVyX2tleXNfaW5wbGFjZVxuICBsZXQgZmlsdGVyX2lucGxhY2UgPSBmaWx0ZXJfaW5wbGFjZVxuICBsZXQgZmlsdGVyaV9pbnBsYWNlID0gZmlsdGVyaV9pbnBsYWNlXG4gIGxldCBtYXBfaW5wbGFjZSA9IG1hcF9pbnBsYWNlXG4gIGxldCBtYXBpX2lucGxhY2UgPSBtYXBpX2lucGxhY2VcbiAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSA9IGZpbHRlcl9tYXBfaW5wbGFjZVxuICBsZXQgZmlsdGVyX21hcGlfaW5wbGFjZSA9IGZpbHRlcl9tYXBpX2lucGxhY2VcbiAgbGV0IGVxdWFsID0gZXF1YWxcbiAgbGV0IHNpbWlsYXIgPSBzaW1pbGFyXG4gIGxldCBpbmNyID0gaW5jclxuICBsZXQgZGVjciA9IGRlY3JcbiAgbGV0IHNleHBfb2Zfa2V5ID0gc2V4cF9vZl9rZXlcbmVuZFxuXG5tb2R1bGUgQ3JlYXRvcnMgKEtleSA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGhhc2hhYmxlIDogJ2EgdCBIYXNoYWJsZS50XG4gIGVuZCkgOiBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XyA9ICgnYSBLZXkudCwgJ2IpIHRcblxuICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBLZXkudCkgLT4gKFNleHAudCAtPiAnYikgLT4gU2V4cC50IC0+ICgnYSwgJ2IpIHRfXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X1xuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICB3aXRoIHR5cGUgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gS2V5Lmhhc2hhYmxlXG5cbiAgdHlwZSAoJ2EsICdiKSB0XyA9ICgnYSBLZXkudCwgJ2IpIHRcblxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKSA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlICgpXG4gIGxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuXG4gIGxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGtfb2Zfc2V4cCBkX29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCB+aGFzaGFibGUga19vZl9zZXhwIGRfb2Zfc2V4cCBzZXhwXG5cbiAgbGV0IG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIGwgPVxuICAgIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbCA9XG4gICAgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbFxuICA7O1xuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5ID0gJ2FcblxuICBsZXQgaGFzaGFibGUgPSBIYXNoYWJsZS5wb2x5XG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICAgIGVuZClcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBIYXNoYWJsZSA9IEhhc2hhYmxlLkhhc2hhYmxlXG5cbiAgdHlwZSBub25yZWMgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGUgPVxuICAgICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5cbiAgbGV0IGhhc2hhYmxlIHQgPSB0Lmhhc2hhYmxlXG5lbmRcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9XG4gIGNyZWF0ZSB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKClcbjs7XG5cbmxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3Qgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9vcl9lcnJvciB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfZXhuIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X211bHRpIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gIGNyZWF0ZV9tYXBwZWQgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSBsXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IGwgPVxuICBjcmVhdGVfd2l0aF9rZXkgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGxcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgbCA9XG4gIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgbCA9XG4gIGNyZWF0ZV93aXRoX2tleV9leG4gfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGxcbjs7XG5cbmxldCBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbCA9XG4gIGdyb3VwIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbFxuOztcblxubGV0IGhhc2hhYmxlX3MgdCA9IEhhc2hhYmxlLnRvX2tleSB0Lmhhc2hhYmxlXG5cbm1vZHVsZSBNIChLIDogVC5UKSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgS2V5LlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgaykgKG1vZHVsZSBLIDogU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gaykgc2V4cF9vZl92IHQgPVxuICBzZXhwX29mX3QgSy5zZXhwX29mX3Qgc2V4cF9vZl92IHRcbjs7XG5cbmxldCBtX190X29mX3NleHAgKHR5cGUgaykgKG1vZHVsZSBLIDogTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gaykgdl9vZl9zZXhwIHNleHAgPVxuICB0X29mX3NleHAgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgKG1vZHVsZSBLKSkgSy50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hciAodHlwZSBrKSAobW9kdWxlIEsgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGspIHZfZ3JhbW1hciA9XG4gIHRfc2V4cF9ncmFtbWFyIEsudF9zZXhwX2dyYW1tYXIgdl9ncmFtbWFyXG47O1xuXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSBlcXVhbF92IHQxIHQyID0gZXF1YWwgZXF1YWxfdiB0MSB0MlxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2hfc2V0X2ludGZcblxubGV0IGhhc2hhYmxlX3MgPSBIYXNodGJsLmhhc2hhYmxlX3NcbmxldCBoYXNoYWJsZSA9IEhhc2h0YmwuUHJpdmF0ZS5oYXNoYWJsZVxubGV0IHBvbHlfaGFzaGFibGUgPSBIYXNodGJsLlBvbHkuaGFzaGFibGVcbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbnR5cGUgJ2EgdCA9ICgnYSwgdW5pdCkgSGFzaHRibC50XG50eXBlICdhIGhhc2hfc2V0ID0gJ2EgdFxudHlwZSAnYSBlbHQgPSAnYVxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gIGxldCBjbGVhciA9IEhhc2h0YmwuY2xlYXJcbiAgbGV0IGxlbmd0aCA9IEhhc2h0YmwubGVuZ3RoXG4gIGxldCBtZW0gPSBIYXNodGJsLm1lbVxuICBsZXQgaXNfZW1wdHkgdCA9IEhhc2h0YmwuaXNfZW1wdHkgdFxuXG4gIGxldCBmaW5kX21hcCB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIEhhc2h0YmwuaXRlcl9rZXlzIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgbWF0Y2ggZiBlbHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIF8gYXMgbyAtPiByLnJldHVybiBvKTtcbiAgICAgIE5vbmUpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmluZCB0IH5mID0gZmluZF9tYXAgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gU29tZSBhIGVsc2UgTm9uZSkgW0Bub250YWlsXVxuICBsZXQgYWRkIHQgayA9IEhhc2h0Ymwuc2V0IHQgfmtleTprIH5kYXRhOigpXG5cbiAgbGV0IHN0cmljdF9hZGQgdCBrID1cbiAgICBpZiBtZW0gdCBrXG4gICAgdGhlbiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJlbGVtZW50IGFscmVhZHkgZXhpc3RzXCJcbiAgICBlbHNlIChcbiAgICAgIEhhc2h0Ymwuc2V0IHQgfmtleTprIH5kYXRhOigpO1xuICAgICAgUmVzdWx0Lk9rICgpKVxuICA7O1xuXG4gIGxldCBzdHJpY3RfYWRkX2V4biB0IGsgPSBPcl9lcnJvci5va19leG4gKHN0cmljdF9hZGQgdCBrKVxuICBsZXQgcmVtb3ZlID0gSGFzaHRibC5yZW1vdmVcblxuICBsZXQgc3RyaWN0X3JlbW92ZSB0IGsgPVxuICAgIGlmIG1lbSB0IGtcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZSB0IGs7XG4gICAgICBSZXN1bHQuT2sgKCkpXG4gICAgZWxzZSBPcl9lcnJvci5lcnJvciBcImVsZW1lbnQgbm90IGluIHNldFwiIGsgKEhhc2h0Ymwuc2V4cF9vZl9rZXkgdClcbiAgOztcblxuICBsZXQgc3RyaWN0X3JlbW92ZV9leG4gdCBrID0gT3JfZXJyb3Iub2tfZXhuIChzdHJpY3RfcmVtb3ZlIHQgaylcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICBIYXNodGJsLmZvbGQgdCB+aW5pdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgYWNjIC0+IGYgYWNjIGtleSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBpdGVyIHQgfmYgPSBIYXNodGJsLml0ZXJfa2V5cyB0IH5mXG4gIGxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxuICBsZXQgdG9fbGlzdCA9IEhhc2h0Ymwua2V5c1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lIHQgPVxuICAgIHNleHBfb2ZfbGlzdCBzZXhwX29mX2UgKHRvX2xpc3QgdCB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6KGhhc2hhYmxlIHQpLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IHRvX2FycmF5IHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBpbmRleCA9IHJlZiAobGVuIC0gMSkgaW5cbiAgICBmb2xkIHQgfmluaXQ6W3x8XSB+ZjooZnVuIGFjYyBrZXkgLT5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCBhY2MgPSAwXG4gICAgICB0aGVuIEFycmF5LmNyZWF0ZSB+bGVuIGtleVxuICAgICAgZWxzZSAoXG4gICAgICAgIGluZGV4IDo9ICFpbmRleCAtIDE7XG4gICAgICAgIGFjYy4oIWluZGV4KSA8LSBrZXk7XG4gICAgICAgIGFjYykpXG4gIDs7XG5cbiAgbGV0IGV4aXN0cyB0IH5mOihmIFtAbG9jYWxdKSA9XG4gICAgSGFzaHRibC5leGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IGYga2V5KSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IG5vdCAoSGFzaHRibC5leGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IG5vdCAoZiBrZXkpKSlcbiAgbGV0IGVxdWFsIHQxIHQyID0gSGFzaHRibC5lcXVhbCAoZnVuICgpICgpIC0+IHRydWUpIHQxIHQyXG4gIGxldCBjb3B5IHQgPSBIYXNodGJsLmNvcHkgdFxuICBsZXQgZmlsdGVyIHQgfmYgPSBIYXNodGJsLmZpbHRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gZiBrZXkpIFtAbm9udGFpbF1cbiAgbGV0IHVuaW9uIHQxIHQyID0gSGFzaHRibC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXk6XyBfIC0+IFNvbWUgKCkpXG4gIGxldCBkaWZmIHQxIHQyID0gZmlsdGVyIHQxIH5mOihmdW4ga2V5IC0+IG5vdCAoSGFzaHRibC5tZW0gdDIga2V5KSlcblxuICBsZXQgaW50ZXIgdDEgdDIgPVxuICAgIGxldCBzbWFsbGVyLCBsYXJnZXIgPSBpZiBsZW5ndGggdDEgPiBsZW5ndGggdDIgdGhlbiB0MiwgdDEgZWxzZSB0MSwgdDIgaW5cbiAgICBIYXNodGJsLmZpbHRlcmkgc21hbGxlciB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gSGFzaHRibC5tZW0gbGFyZ2VyIGtleSlcbiAgOztcblxuICBsZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gICAgbGV0IHRvX3JlbW92ZSA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjIHggLT4gaWYgZiB4IHRoZW4gYWMgZWxzZSB4IDo6IGFjKSBpblxuICAgIExpc3QuaXRlciB0b19yZW1vdmUgfmY6KGZ1biB4IC0+IHJlbW92ZSB0IHgpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoYXNodGJsID0gSGFzaHRibC5tYXAgaGFzaHRibCB+ZjppZ25vcmVcbiAgbGV0IHRvX2hhc2h0YmwgdCB+ZiA9IEhhc2h0YmwubWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBmIGtleSkgW0Bub250YWlsXVxuZW5kXG5cbmluY2x1ZGUgQWNjZXNzb3JzXG5cbmxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gPSBIYXNodGJsLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbVxuXG5sZXQgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgbGV0IHNpemUgPVxuICAgIG1hdGNoIHNpemUgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gTGlzdC5sZW5ndGggbFxuICBpblxuICBsZXQgdCA9IEhhc2h0YmwuY3JlYXRlID9ncm93dGhfYWxsb3dlZCB+c2l6ZSBtIGluXG4gIExpc3QuaXRlciBsIH5mOihmdW4gayAtPiBhZGQgdCBrKTtcbiAgdFxuOztcblxubGV0IHRfb2Zfc2V4cCBtIGVfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgU2V4cC5BdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcIkhhc2hfc2V0LnRfb2Zfc2V4cCByZXF1aXJlcyBhIGxpc3RcIiBzZXhwXG4gIHwgU2V4cC5MaXN0IGxpc3QgLT5cbiAgICBsZXQgdCA9IGNyZWF0ZSBtIH5zaXplOihMaXN0Lmxlbmd0aCBsaXN0KSBpblxuICAgIExpc3QuaXRlciBsaXN0IH5mOihmdW4gc2V4cCAtPlxuICAgICAgbGV0IGUgPSBlX29mX3NleHAgc2V4cCBpblxuICAgICAgbWF0Y2ggc3RyaWN0X2FkZCB0IGUgd2l0aFxuICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgfCBFcnJvciBfIC0+IG9mX3NleHBfZXJyb3IgXCJIYXNoX3NldC50X29mX3NleHAgZ290IGEgZHVwbGljYXRlIGVsZW1lbnRcIiBzZXhwKTtcbiAgICB0XG47O1xuXG5tb2R1bGUgQ3JlYXRvcnMgKEVsdCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGhhc2hhYmxlIDogJ2EgdCBIYXNoYWJsZS50XG4gIGVuZCkgOiBzaWdcbiAgdmFsIHRfb2Zfc2V4cCA6IChTZXhwLnQgLT4gJ2EgRWx0LnQpIC0+IFNleHAudCAtPiAnYSBFbHQudCB0XG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBFbHQudCB0XG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBFbHQudFxuICAgIHdpdGggdHlwZSAoJ2VsdCwgJ3opIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2VsdCwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKCkgPVxuICAgIGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2hhYmxlLnRvX2tleSBFbHQuaGFzaGFibGUpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIChIYXNoYWJsZS50b19rZXkgRWx0Lmhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBlX29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCAoSGFzaGFibGUudG9fa2V5IEVsdC5oYXNoYWJsZSkgZV9vZl9zZXhwIHNleHBcbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBoYXNoX3NldFxuICB0eXBlICdhIGVsdCA9ICdhXG5cbiAgbGV0IGhhc2hhYmxlID0gcG9seV9oYXNoYWJsZVxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuZW5kXG5cbm1vZHVsZSBNIChFbHQgOiBULlQpID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSBFbHQudCB0XG5lbmRcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gZWx0KSB0ID1cbiAgc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gZWx0KSBzZXhwID1cbiAgdF9vZl9zZXhwIChtb2R1bGUgRWx0KSBFbHQudF9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hciAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBlbHQpID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAobGlzdF9zZXhwX2dyYW1tYXIgRWx0LnRfc2V4cF9ncmFtbWFyKVxuOztcblxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgdDEgdDIgPSBlcXVhbCB0MSB0MlxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBIYXNodGJsLlByaXZhdGUuaGFzaGFibGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBQcmludGZcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxuaW5jbHVkZSBGbG9hdDBcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2Zsb2F0XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9mbG9hdCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2Zsb2F0IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcbiAgbGV0IHRfb2Zfc2V4cCA9IChmbG9hdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9mbG9hdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBmbG9hdF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgdG9fZmxvYXQgeCA9IHhcbmxldCBvZl9mbG9hdCB4ID0geFxuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICB0cnkgZmxvYXRfb2Zfc3RyaW5nIHMgd2l0aFxuICB8IF8gLT4gaW52YWxpZF9hcmdmIFwiRmxvYXQub2Zfc3RyaW5nICVzXCIgcyAoKVxuOztcblxubGV0IG9mX3N0cmluZ19vcHQgPSBmbG9hdF9vZl9zdHJpbmdfb3B0XG5cbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuKCogU3RvbGVuIGZyb20gW3BlcnZhc2l2ZXMubWxdLiAgQWRkcyBhIFwiLlwiIGF0IHRoZSBlbmQgaWYgbmVlZGVkLiAgSXQgaXMgaW5cbiAgIFtwZXJ2YXNpdmVzLm1saV0sIGJ1dCBpdCBhbHNvIHNheXMgbm90IHRvIHVzZSBpdCBkaXJlY3RseSwgc28gd2UgY29weSBhbmQgcGFzdGUgdGhlXG4gICBjb2RlLiBJdCBtYWtlcyB0aGUgYXNzdW1wdGlvbiBvbiB0aGUgc3RyaW5nIHBhc3NlZCBpbiBhcmd1bWVudCB0aGF0IGl0IHdhcyByZXR1cm5lZCBieVxuICAgW2Zvcm1hdF9mbG9hdF0uICopXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBpIGxcbiAgICB0aGVuIHMgXiBcIi5cIlxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgfCBfIC0+IHMpXG4gIGluXG4gIGxvb3AgMFxuOztcblxuKCogTGV0IFt5XSBiZSBhIHBvd2VyIG9mIDIuICBUaGVuIHRoZSBuZXh0IHJlcHJlc2VudGFibGUgZmxvYXQgaXM6XG4gICBbeiA9IHkgKiAoMSArIDIgKiogLTUyKV1cbiAgIGFuZCB0aGUgcHJldmlvdXMgb25lIGlzXG4gICBbeCA9IHkgKiAoMSAtIDIgKiogLTUzKV1cblxuICAgSW4gZ2VuZXJhbCwgZXZlcnkgdHdvIGFkamFjZW50IGZsb2F0cyBhcmUgd2l0aGluIGEgZmFjdG9yIG9mIGJldHdlZW4gWzEgKyAyKiotNTNdXG4gICBhbmQgWzEgKyAyKiotNTJdIGZyb20gZWFjaCBvdGhlciwgdGhhdCBpcyB3aXRoaW4gWzEgKyAxLjFlLTE2XSBhbmQgWzEgKyAyLjNlLTE2XS5cblxuICAgU28gaWYgdGhlIGRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYSBmbG9hdCBzdGFydHMgd2l0aCBcIjFcIiwgdGhlbiBpdHMgYWRqYWNlbnQgZmxvYXRzXG4gICB3aWxsIHVzdWFsbHkgZGlmZmVyIGZyb20gaXQgYnkgMSwgYW5kIHNvbWV0aW1lcyBieSAyLCBhdCB0aGUgMTd0aCBzaWduaWZpY2FudCBkaWdpdFxuICAgKGNvdW50aW5nIGZyb20gMSkuXG5cbiAgIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBzdGFydHMgd2l0aCBcIjlcIiwgdGhlbiB0aGUgYWRqYWNlbnRcbiAgIGZsb2F0cyB3aWxsIGJlIG9mZiBieSBubyBtb3JlIHRoYW4gMjMgYXQgdGhlIDE2dGggYW5kIDE3dGggc2lnbmlmaWNhbnQgZGlnaXRzLlxuXG4gICBFLmcuOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiICgxMDI0LiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExXG4gICAgICAgICAgICAgICAgICAgMTIzNCA1Njc4OTAxMjM0NTY3XG4gICAgIC0gOiBzdHJpbmcgPSBcIjEwMjMuOTk5OTk5OTk5OTk5OVwiXG4gICB2fVxuICAgUHJpbnRpbmcgYSBjb3VwbGUgb2YgZXh0cmEgZGlnaXRzIHJldmVhbHMgdGhhdCB0aGUgZGlmZmVyZW5jZSBpbmRlZWQgaXMgcm91Z2hseSAxMSBhdFxuICAgZGlnaXRzIDE3dGggYW5kIDE4dGggKHRoYXQgaXMsIDEzdGggYW5kIDE0dGggYWZ0ZXIgXCIuXCIpOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE5Z1wiICgxMDI0LiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAtIDogc3RyaW5nID0gXCIxMDIzLjk5OTk5OTk5OTk5OTg4NlwiXG4gICB2fVxuXG4gICBUaGUgdWxwICh0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGFkamFjZW50IGZsb2F0cykgaXMgdHdpY2UgYXMgYmlnIG9uIHRoZSBvdGhlciBzaWRlIG9mXG4gICAxMDI0LjpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xOWdcIiAoMTAyNC4gKi4gKDEuICsuIDIuKiogKC01Mi4pKSk7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMTExXG4gICAgICAgICAgICAgICAgICAgMTIzNCA1Njc4OTAxMjM0NTY3ODlcbiAgICAgLSA6IHN0cmluZyA9IFwiMTAyNC4wMDAwMDAwMDAwMDAyMjdcIlxuICAgdn1cblxuICAgTm93IHRha2UgYSBwb3dlciBvZiAyIHdoaWNoIHN0YXJ0cyB3aXRoIDk5OlxuXG4gICB7dlxuICAgICAjIDIuKio5My4gOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTExMVxuICAgICAgICAgICAgICAgICAxIDIzNDU2Nzg5MDEyMzQ1Njc4XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQyMmUrMjdcblxuICAgICAjIDIuKio5My4gKi4gKDEuICsuIDIuKiogKC01Mi4pKTs7XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQ0NGUrMjdcblxuICAgICAjIDIuKio5My4gKi4gKDEuIC0uIDIuKiogKC01My4pKTs7XG4gICAgIC0gOiBmbG9hdCA9IDkuOTAzNTIwMzE0MjgzMDQxMWUrMjdcbiAgIHZ9XG5cbiAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gMioqOTMgYW5kIGl0cyB0d28gbmVpZ2hib3JzIGlzIHNsaWdodGx5IG1vcmUgdGhhbiwgcmVzcGVjdGl2ZWx5LFxuICAgMSBhbmQgMiBhdCBzaWduaWZpY2FudCBkaWdpdCAxNi5cblxuICAgVGhvc2UgZXhhbXBsZXMgc2hvdyB0aGF0OlxuICAgLSAxNyBzaWduaWZpY2FudCBkaWdpdHMgaXMgYWx3YXlzIHN1ZmZpY2llbnQgdG8gcmVwcmVzZW50IGEgZmxvYXQgd2l0aG91dCBhbWJpZ3VpdHlcbiAgIC0gMTV0aCBzaWduaWZpY2FudCBkaWdpdCBjYW4gYWx3YXlzIGJlIHJlcHJlc2VudGVkIGFjY3VyYXRlbHlcbiAgIC0gY29udmVydGluZyBhIGRlY2ltYWwgbnVtYmVyIHdpdGggMTYgc2lnbmlmaWNhbnQgZGlnaXRzIHRvIGl0cyBuZWFyZXN0IGZsb2F0IGFuZCBiYWNrXG4gICAgIGNhbiBjaGFuZ2UgdGhlIGxhc3QgZGVjaW1hbCBkaWdpdCBieSBubyBtb3JlIHRoYW4gMVxuXG4gICBUbyBtYWtlIHN1cmUgdGhhdCBmbG9hdHMgb2J0YWluZWQgYnkgY29udmVyc2lvbiBmcm9tIGRlY2ltYWwgZnJhY3Rpb25zIChlLmcuIFwiMy4xNFwiKVxuICAgYXJlIHByaW50ZWQgd2l0aG91dCB0cmFpbGluZyBub24temVybyBkaWdpdHMsIG9uZSBzaG91bGQgY2hvb3NlIHRoZSBmaXJzdCBhbW9uZyB0aGVcbiAgICclLjE1ZycsICclLjE2ZycsIGFuZCAnJS4xN2cnIHJlcHJlc2VudGF0aW9ucyB3aGljaCBkb2VzIHJvdW5kLXRyaXA6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTVnXCIgMy4xNDs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjMuMTRcIiAgICAgICAgICAgICAgICAgICAgICgqIHBpY2sgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNFwiXG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgMy4xNDs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjMuMTQwMDAwMDAwMDAwMDAwMVwiICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lICopXG5cbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjhcIiAgICAgICAgICAgICAgICAgICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lLS1kb2VzIG5vdCByb3VuZC10cmlwICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTZnXCIgOC4wMDAwMDAwMDAwMDAwMDI7O1xuICAgICAtIDogc3RyaW5nID0gXCI4LjAwMDAwMDAwMDAwMDAwMlwiICAgICAgICAoKiBwcmVmZXIgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjguMDAwMDAwMDAwMDAwMDAxOFwiICAgICAgICgqIHRoaXMgb25lIGhhcyBvbmUgZGlnaXQgb2YganVuayBhdCB0aGUgZW5kICopXG4gICB2fVxuXG4gICBTa2lwcGluZyB0aGUgJyUuMTZnJyBpbiB0aGUgYWJvdmUgcHJvY2VkdXJlIHNhdmVzIHVzIHNvbWUgdGltZSwgYnV0IGl0IG1lYW5zIHRoYXQsIGFzXG4gICBzZWVuIGluIHRoZSBzZWNvbmQgZXhhbXBsZSBhYm92ZSwgb2NjYXNpb25hbGx5IG51bWJlcnMgd2l0aCBleGFjdGx5IDE2IHNpZ25pZmljYW50XG4gICBkaWdpdHMgd2lsbCBoYXZlIGFuIGVycm9yIGludHJvZHVjZWQgYXQgdGhlIDE3dGggZGlnaXQuICBUaGF0IGlzIHByb2JhYmx5IE9LIGZvclxuICAgdHlwaWNhbCB1c2UsIGJlY2F1c2UgYSBudW1iZXIgd2l0aCAxNiBzaWduaWZpY2FudCBkaWdpdHMgaXMgXCJ1Z2x5XCIgYWxyZWFkeS4gIEFkZGluZyBvbmVcbiAgIG1vcmUgZG9lc24ndCBtYWtlIGl0IG11Y2ggd29yc2UgZm9yIGEgaHVtYW4gcmVhZGVyLlxuXG4gICBPbiB0aGUgb3RoZXIgaGFuZCwgd2UgY2Fubm90IHNraXAgJyUuMTVnJyBhbmQgb25seSBsb29rIGF0ICclLjE2ZycgYW5kICclLjE3ZycsIHNpbmNlXG4gICB0aGUgaW5hY2N1cmFjeSBhdCB0aGUgMTZ0aCBkaWdpdCBtaWdodCBpbnRyb2R1Y2UgdGhlIG5vaXNlIHdlIHdhbnQgdG8gYXZvaWQ6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTVnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MlwiICAgICAgICAgICAgICAgICAgICAoKiBwaWNrIHRoaXMgb25lICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTZnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MjAwMDAwMDAwMDAwMVwiICAgICAgICAoKiBkbyBub3QgcGljayB0aGlzIG9uZS0tanVuayBhdCB0aGUgZW5kICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgOS45OTI7O1xuICAgICAtIDogc3RyaW5nID0gXCI5Ljk5MjAwMDAwMDAwMDAwMDlcIlxuICAgdn1cbiopXG5sZXQgdG9fc3RyaW5nIHggPVxuICB2YWxpZF9mbG9hdF9sZXhlbVxuICAgIChsZXQgeSA9IGZvcm1hdF9mbG9hdCBcIiUuMTVnXCIgeCBpblxuICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgeSA9IHggdGhlbiB5IGVsc2UgZm9ybWF0X2Zsb2F0IFwiJS4xN2dcIiB4KVxuOztcblxubGV0IG1heF92YWx1ZSA9IGluZmluaXR5XG5sZXQgbWluX3ZhbHVlID0gbmVnX2luZmluaXR5XG5sZXQgbWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZSA9IDIuICoqIC0xMDc0LlxubGV0IG1pbl9wb3NpdGl2ZV9ub3JtYWxfdmFsdWUgPSAyLiAqKiAtMTAyMi5cbmxldCB6ZXJvID0gMC5cbmxldCBvbmUgPSAxLlxubGV0IG1pbnVzX29uZSA9IC0xLlxubGV0IHBpID0gMHgzLjI0M0Y2QTg4ODVBMzA4RDMxMzE5OEEyRTAzNzA3M1xubGV0IHNxcnRfcGkgPSAweDEuQzVCRjg5MUI0RUY2QUE3OUMzQjA1MjBENURCOTM4XG5sZXQgc3FydF8ycGkgPSAweDIuODFCMjYzRkVDNEUwQjJDQUY5NDgzRjVDRTQ1OURDXG5sZXQgZXVsZXIgPSAweDAuOTNDNDY3RTM3REIwQzdBNEQxQkUzRjgxMDE1MkNCXG5sZXQgb2ZfaW50ID0gSW50LnRvX2Zsb2F0XG5sZXQgdG9faW50ID0gSW50Lm9mX2Zsb2F0XG5sZXQgb2ZfaW50NjMgaSA9IEludDYzLnRvX2Zsb2F0IGlcbmxldCBvZl9pbnQ2NCBpID0gU3RkbGliLkludDY0LnRvX2Zsb2F0IGlcbmxldCB0b19pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5vZl9mbG9hdFxubGV0IGlyb3VuZF9sYm91bmQgPSBsb3dlcl9ib3VuZF9mb3JfaW50IEludC5udW1fYml0c1xubGV0IGlyb3VuZF91Ym91bmQgPSB1cHBlcl9ib3VuZF9mb3JfaW50IEludC5udW1fYml0c1xuXG4oKiBUaGUgcGVyZm9ybWFuY2Ugb2YgdGhlIFwiZXhuXCIgcm91bmRpbmcgZnVuY3Rpb25zIGlzIGltcG9ydGFudCwgc28gdGhleSBhcmUgd3JpdHRlblxuICAgb3V0IHNlcGFyYXRlbHksIGFuZCB0dW5lZCBpbmRpdmlkdWFsbHkuICAoV2UgY291bGQgaGF2ZSB0aGUgb3B0aW9uIHZlcnNpb25zIGNhbGxcbiAgIHRoZSBcImV4blwiIHZlcnNpb25zLCBidXQgdGhhdCBpbXBvc2VzIGFyZ3VhYmx5IGdyYXR1aXRvdXMgb3ZlcmhlYWQtLS1lc3BlY2lhbGx5XG4gICBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgY2FwdHVyZSBvZiBiYWNrdHJhY2VzIGlzIGVuYWJsZWQgdXBvbiBcIndpdGhcIi0tLWFuZCB0aGF0IHNlZW1zXG4gICBub3Qgd29ydGggaXQgd2hlbiBjb21wYXJlZCB0byB0aGUgcmVsYXRpdmVseSBzbWFsbCBhbW91bnQgb2YgY29kZSBkdXBsaWNhdGlvbi4pICopXG5cbigqIEVycm9yIHJlcG9ydGluZyBiZWxvdyBpcyB2ZXJ5IGNhcmVmdWxseSBhcnJhbmdlZCBzbyB0aGF0LCBlLmcuLCBbaXJvdW5kX25lYXJlc3RfZXhuXVxuICAgaXRzZWxmIGNhbiBiZSBpbmxpbmVkIGludG8gY2FsbGVycyBzdWNoIHRoYXQgdGhleSBkb24ndCBuZWVkIHRvIGFsbG9jYXRlIGEgYm94IGZvciB0aGVcbiAgIFtmbG9hdF0gYXJndW1lbnQuICBUaGlzIGlzIGRvbmUgd2l0aCBhIGJveCBbYm94XSBmdW5jdGlvbiBjYXJlZnVsbHkgY2hvc2VuIHRvIGFsbG93IHRoZVxuICAgY29tcGlsZXIgdG8gY3JlYXRlIGEgc2VwYXJhdGUgYm94IGZvciB0aGUgZmxvYXQgb25seSBpbiBlcnJvciBjYXNlcy4gIFNlZSwgZS5nLixcbiAgIFsuLi8uLi96ZXJvL3Rlc3QvcHJpY2VfdGVzdC5tbF0gZm9yIGEgbWVjaGFuaWNhbCB0ZXN0IG9mIHRoaXMgcHJvcGVydHkgd2hlbiBidWlsZGluZ1xuICAgd2l0aCBbWF9MSUJSQVJZX0lOTElOSU5HPXRydWVdLiAqKVxuXG5sZXQgaXJvdW5kX3VwIHQgPVxuICBpZiB0ID4gMC4wXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGNlaWwgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX3VwX2V4biB0ID1cbiAgaWYgdCA+IDAuMFxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBjZWlsIHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKCkpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCIgKGJveCB0KSAoKVxuOztcblxubGV0IGlyb3VuZF9kb3duIHQgPVxuICBpZiB0ID49IDAuMFxuICB0aGVuIGlmIHQgPD0gaXJvdW5kX3Vib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCkgZWxzZSBOb25lXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yIHQgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfZG93bl9leG4gdCA9XG4gIGlmIHQgPj0gMC4wXG4gIHRoZW5cbiAgICBpZiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKClcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiIChib3ggdCkgKCkpXG47O1xuXG5sZXQgaXJvdW5kX3Rvd2FyZHNfemVybyB0ID1cbiAgaWYgdCA+PSBpcm91bmRfbGJvdW5kICYmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF90b3dhcmRzX3plcm9fZXhuIHQgPVxuICBpZiB0ID49IGlyb3VuZF9sYm91bmQgJiYgdCA8PSBpcm91bmRfdWJvdW5kXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQuaXJvdW5kX3Rvd2FyZHNfemVyb19leG46IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoYm94IHQpXG4gICAgICAoKVxuOztcblxuKCogT3V0c2lkZSBvZiB0aGUgcmFuZ2UgKHJvdW5kX25lYXJlc3RfbGIuLnJvdW5kX25lYXJlc3RfdWIpLCBhbGwgcmVwcmVzZW50YWJsZSBkb3VibGVzXG4gICBhcmUgaW50ZWdlcnMgaW4gdGhlIG1hdGhlbWF0aWNhbCBzZW5zZSwgYW5kIFtyb3VuZF9uZWFyZXN0XSBzaG91bGQgYmUgaWRlbnRpdHkuXG5cbiAgIEhvd2V2ZXIsIGZvciBvZGQgbnVtYmVycyB3aXRoIHRoZSBhYnNvbHV0ZSB2YWx1ZSBiZXR3ZWVuIDIqKjUyIGFuZCAyKio1MywgdGhlIGZvcm11bGFcbiAgIFtyb3VuZF9uZWFyZXN0IHggPSBmbG9vciAoeCArIDAuNSldIGRvZXMgbm90IGhvbGQ6XG5cbiAgIHt2XG4gICAgICMgbGV0IG5haXZlX3JvdW5kX25lYXJlc3QgeCA9IGZsb29yICh4ICsuIDAuNSk7O1xuICAgICAjIGxldCB4ID0gMi4gKiogNTIuICsuIDEuOztcbiAgICAgdmFsIHggOiBmbG9hdCA9IDQ1MDM1OTk2MjczNzA0OTcuXG4gICAgICMgbmFpdmVfcm91bmRfbmVhcmVzdCB4OztcbiAgICAgLSA6ICAgICBmbG9hdCA9IDQ1MDM1OTk2MjczNzA0OTguXG4gICB2fVxuKilcblxubGV0IHJvdW5kX25lYXJlc3RfbGIgPSAtLigyLiAqKiA1Mi4pXG5sZXQgcm91bmRfbmVhcmVzdF91YiA9IDIuICoqIDUyLlxuXG4oKiBGb3IgW3ggPSBvbmVfdWxwIGBEb3duIDAuNV0sIHRoZSBmb3JtdWxhIFtmbG9vciAoeCArLiAwLjUpXSBmb3Igcm91bmRpbmcgdG8gbmVhcmVzdFxuICAgZG9lcyBub3Qgd29yaywgYmVjYXVzZSB0aGUgZXhhY3QgcmVzdWx0IGlzIGhhbGZ3YXkgYmV0d2VlbiBbb25lX3VscCBgRG93biAxLl0gYW5kIFsxLl0sXG4gICBhbmQgaXQgZ2V0cyByb3VuZGVkIHVwIHRvIFsxLl0gZHVlIHRvIHRoZSByb3VuZC10aWVzLXRvLWV2ZW4gcnVsZS4gKilcbmxldCBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmID0gb25lX3VscCBgRG93biAwLjVcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0ID1cbiAgdFxuICArLlxuICBpZiB0ID0gb25lX3VscF9sZXNzX3RoYW5faGFsZlxuICB0aGVuIG9uZV91bHBfbGVzc190aGFuX2hhbGYgKCogc2luY2UgdCA8IDAuNSwgbWFrZSBzdXJlIHRoZSByZXN1bHQgaXMgPCAxLjAgKilcbiAgZWxzZSAwLjVcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF8zMiB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgKHQgKy4gMC41KSBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfNjQgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlblxuICAgIGlmIHQgPCByb3VuZF9uZWFyZXN0X3ViXG4gICAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0KSlcbiAgICBlbHNlIGlmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICAgIGVsc2UgTm9uZVxuICBlbHNlIGlmIHQgPiByb3VuZF9uZWFyZXN0X2xiXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoZmxvb3IgKHQgKy4gMC41KSkpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdCA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiBpcm91bmRfbmVhcmVzdF82NFxuICB8IFczMiAtPiBpcm91bmRfbmVhcmVzdF8zMlxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0X2V4bl8zMiB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKCkpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yICh0ICsuIDAuNSkgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsXCIgKGJveCB0KSAoKSlcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX25lYXJlc3RfZXhuXzY0IHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW5cbiAgICBpZiB0IDwgcm91bmRfbmVhcmVzdF91YlxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdClcbiAgICBlbHNlIGlmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKVxuICBlbHNlIGlmIHQgPiByb3VuZF9uZWFyZXN0X2xiXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoZmxvb3IgKHQgKy4gMC41KSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCIgKGJveCB0KSAoKVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0X2V4biA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiBpcm91bmRfbmVhcmVzdF9leG5fNjRcbiAgfCBXMzIgLT4gaXJvdW5kX25lYXJlc3RfZXhuXzMyXG47O1xuXG4oKiBUaGUgZm9sbG93aW5nIFtpcm91bmRfZXhuXSBhbmQgW2lyb3VuZF0gZnVuY3Rpb25zIGFyZSBzbG93ZXIgdGhhbiB0aGUgb25lcyBhYm92ZS5cbiAgIFRoZWlyIGVxdWl2YWxlbmNlIHRvIHRob3NlIGZ1bmN0aW9ucyBpcyB0ZXN0ZWQgaW4gdGhlIHVuaXQgdGVzdHMgYmVsb3cuICopXG5cbmxldFtAaW5saW5lXSBpcm91bmRfZXhuID8oZGlyID0gYE5lYXJlc3QpIHQgPVxuICBtYXRjaCBkaXIgd2l0aFxuICB8IGBaZXJvIC0+IGlyb3VuZF90b3dhcmRzX3plcm9fZXhuIHRcbiAgfCBgTmVhcmVzdCAtPiBpcm91bmRfbmVhcmVzdF9leG4gdFxuICB8IGBVcCAtPiBpcm91bmRfdXBfZXhuIHRcbiAgfCBgRG93biAtPiBpcm91bmRfZG93bl9leG4gdFxuOztcblxubGV0IGlyb3VuZCA/KGRpciA9IGBOZWFyZXN0KSB0ID1cbiAgdHJ5IFNvbWUgKGlyb3VuZF9leG4gfmRpciB0KSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgaXNfaW5mIHQgPSAxLiAvLiB0ID0gMC5cbmxldCBpc19maW5pdGUgdCA9IHQgLS4gdCA9IDAuXG5cbmxldCBtaW5faW5hbiAoeCA6IHQpIHkgPVxuICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5XG47O1xuXG5sZXQgbWF4X2luYW4gKHggOiB0KSB5ID1cbiAgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgaWYgeCA+IHkgdGhlbiB4IGVsc2UgeVxuOztcblxubGV0IGFkZCA9ICggKy4gKVxubGV0IHN1YiA9ICggLS4gKVxubGV0IG5lZyA9ICggfi0uIClcbmxldCBhYnMgPSBhYnNfZmxvYXRcbmxldCBzY2FsZSA9ICggKi4gKVxubGV0IHNxdWFyZSB4ID0geCAqLiB4XG5cbm1vZHVsZSBQYXJ0cyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZnJhY3Rpb25hbCA6IHQgLT4gZmxvYXRcbiAgdmFsIGludGVncmFsIDogdCAtPiBmbG9hdFxuICB2YWwgbW9kZiA6IGZsb2F0IC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdCAqIGZsb2F0XG5cbiAgbGV0IGZyYWN0aW9uYWwgdCA9IGZzdCB0XG4gIGxldCBpbnRlZ3JhbCB0ID0gc25kIHRcbiAgbGV0IG1vZGYgPSBtb2RmXG5lbmRcblxubGV0IG1vZGYgPSBQYXJ0cy5tb2RmXG5sZXQgcm91bmRfZG93biA9IGZsb29yXG5sZXQgcm91bmRfdXAgPSBjZWlsXG5sZXQgcm91bmRfdG93YXJkc196ZXJvIHQgPSBpZiB0ID49IDAuIHRoZW4gcm91bmRfZG93biB0IGVsc2Ugcm91bmRfdXAgdFxuXG4oKiBzZWUgdGhlIGNvbW1lbnQgYWJvdmUgW3JvdW5kX25lYXJlc3RfbGJdIGFuZCBbcm91bmRfbmVhcmVzdF91Yl0gZm9yIGFuIGV4cGxhbmF0aW9uICopXG5sZXRbQG9jYW1sLmlubGluZV0gcm91bmRfbmVhcmVzdF9pbmxpbmUgdCA9XG4gIGlmIHQgPiByb3VuZF9uZWFyZXN0X2xiICYmIHQgPCByb3VuZF9uZWFyZXN0X3ViXG4gIHRoZW4gZmxvb3IgKGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQpXG4gIGVsc2UgdCArLiAwLlxuOztcblxubGV0IHJvdW5kX25lYXJlc3QgdCA9IChyb3VuZF9uZWFyZXN0X2lubGluZSBbQG9jYW1sLmlubGluZWQgYWx3YXlzXSkgdFxuXG5sZXQgcm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4gdCA9XG4gIGlmIHQgPD0gcm91bmRfbmVhcmVzdF9sYiB8fCB0ID49IHJvdW5kX25lYXJlc3RfdWJcbiAgdGhlbiB0ICsuIDAuXG4gIGVsc2UgKFxuICAgIGxldCBmbG9vciA9IGZsb29yIHQgaW5cbiAgICAoKiBbY2VpbF9vcl9zdWNjID0gaWYgdCBpcyBhbiBpbnRlZ2VyIHRoZW4gdCArLiAxLiBlbHNlIGNlaWwgdF0uICBGYXN0ZXIgdGhhbiBbY2VpbF0uICopXG4gICAgbGV0IGNlaWxfb3Jfc3VjYyA9IGZsb29yICsuIDEuIGluXG4gICAgbGV0IGRpZmZfZmxvb3IgPSB0IC0uIGZsb29yIGluXG4gICAgbGV0IGRpZmZfY2VpbCA9IGNlaWxfb3Jfc3VjYyAtLiB0IGluXG4gICAgaWYgZGlmZl9mbG9vciA8IGRpZmZfY2VpbFxuICAgIHRoZW4gZmxvb3JcbiAgICBlbHNlIGlmIGRpZmZfZmxvb3IgPiBkaWZmX2NlaWxcbiAgICB0aGVuIGNlaWxfb3Jfc3VjY1xuICAgIGVsc2UgaWYgKCogZXhhY3QgdGllLCBwaWNrIHRoZSBldmVuICopXG4gICAgICBtb2RfZmxvYXQgZmxvb3IgMi4gPSAwLlxuICAgIHRoZW4gZmxvb3JcbiAgICBlbHNlIGNlaWxfb3Jfc3VjYylcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9sYm91bmQgPSBsb3dlcl9ib3VuZF9mb3JfaW50IEludDYzLm51bV9iaXRzXG5sZXQgaW50NjNfcm91bmRfdWJvdW5kID0gdXBwZXJfYm91bmRfZm9yX2ludCBJbnQ2My5udW1fYml0c1xuXG5sZXQgaW50NjNfcm91bmRfdXBfZXhuIHQgPVxuICBpZiB0ID4gMC4wXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGNlaWwgdCBpblxuICAgIGlmIHQnIDw9IGludDYzX3JvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiXG4gICAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAgICgpKVxuICBlbHNlIGlmIHQgPj0gaW50NjNfcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgKClcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9kb3duX2V4biB0ID1cbiAgaWYgdCA+PSAwLjBcbiAgdGhlblxuICAgIGlmIHQgPD0gaW50NjNfcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiXG4gICAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yIHQgaW5cbiAgICBpZiB0JyA+PSBpbnQ2M19yb3VuZF9sYm91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIlxuICAgICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgICAoKSlcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4biB0MCA9XG4gIGxldCB0ID0gKHJvdW5kX25lYXJlc3RfaW5saW5lIFtAb2NhbWwuaW5saW5lZCBhbHdheXNdKSB0MCBpblxuICBpZiB0ID4gMC5cbiAgdGhlblxuICAgIGlmIHQgPD0gaW50NjNfcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiXG4gICAgICAgIChib3ggdDApXG4gICAgICAgICgpXG4gIGVsc2UgaWYgdCA+PSBpbnQ2M19yb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIlxuICAgICAgKGJveCB0MClcbiAgICAgICgpXG47O1xuXG5sZXQgaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG4gZiA9IEludDYzLm9mX2ludCAoaXJvdW5kX25lYXJlc3RfZXhuIGYpXG5cbmxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X2V4biA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4blxuICB8IFczMiAtPiBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4blxuOztcblxubGV0IHJvdW5kID8oZGlyID0gYE5lYXJlc3QpIHQgPVxuICBtYXRjaCBkaXIgd2l0aFxuICB8IGBOZWFyZXN0IC0+IHJvdW5kX25lYXJlc3QgdFxuICB8IGBEb3duIC0+IHJvdW5kX2Rvd24gdFxuICB8IGBVcCAtPiByb3VuZF91cCB0XG4gIHwgYFplcm8gLT4gcm91bmRfdG93YXJkc196ZXJvIHRcbjs7XG5cbm1vZHVsZSBDbGFzcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgSW5maW5pdGVcbiAgICB8IE5hblxuICAgIHwgTm9ybWFsXG4gICAgfCBTdWJub3JtYWxcbiAgICB8IFplcm9cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogdCAtPiB0IC0+IGludClcbiAgbGV0IGFsbCA9IChbIEluZmluaXRlOyBOYW47IE5vcm1hbDsgU3Vibm9ybWFsOyBaZXJvIF0gOiB0IGxpc3QpXG5cbiAgbGV0IHRfb2Zfc2V4cCA9XG4gICAgKGxldCBlcnJvcl9zb3VyY2VfXzAwN18gPSBcImZsb2F0Lm1sLkNsYXNzLnRcIiBpblxuICAgICBmdW5jdGlvblxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbmZpbml0ZVwiIHwgXCJJbmZpbml0ZVwiKSAtPiBJbmZpbml0ZVxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIC0+IE5hblxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJub3JtYWxcIiB8IFwiTm9ybWFsXCIpIC0+IE5vcm1hbFxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJzdWJub3JtYWxcIiB8IFwiU3Vibm9ybWFsXCIpIC0+IFN1Ym5vcm1hbFxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgLT4gWmVyb1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImluZmluaXRlXCIgfCBcIkluZmluaXRlXCIpIDo6IF8pIGFzXG4gICAgICAgc2V4cF9fMDA4XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDhfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSA6OiBfKSBhcyBzZXhwX18wMDhfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwN18gc2V4cF9fMDA4X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5vcm1hbFwiIHwgXCJOb3JtYWxcIikgOjogXykgYXMgc2V4cF9fMDA4XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwOF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJzdWJub3JtYWxcIiB8IFwiU3Vibm9ybWFsXCIpIDo6IF8pIGFzXG4gICAgICAgc2V4cF9fMDA4XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDhfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwOF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDhfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDZfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwN18gc2V4cF9fMDA2X1xuICAgICB8IHNleHBfXzAwNl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDZfXG4gICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgSW5maW5pdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiSW5maW5pdGVcIlxuICAgICAgfCBOYW4gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmFuXCJcbiAgICAgIHwgTm9ybWFsIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5vcm1hbFwiXG4gICAgICB8IFN1Ym5vcm1hbCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJTdWJub3JtYWxcIlxuICAgICAgfCBaZXJvIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlplcm9cIlxuICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICB7IHVudHlwZWQgPVxuICAgICAgICBWYXJpYW50XG4gICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiSW5maW5pdGVcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTmFuXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIk5vcm1hbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJTdWJub3JtYWxcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSBzdHJpbmdfb2Zfc2V4cCAoc2V4cF9vZl90IHQpXG4gIGxldCBvZl9zdHJpbmcgcyA9IHRfb2Zfc2V4cCAoc2V4cF9vZl9zdHJpbmcgcylcbmVuZFxuXG5sZXQgY2xhc3NpZnkgdCA9XG4gIGxldCBtb2R1bGUgQyA9IENsYXNzIGluXG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHQgd2l0aFxuICB8IEZQX25vcm1hbCAtPiBDLk5vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbCAtPiBDLlN1Ym5vcm1hbFxuICB8IEZQX3plcm8gLT4gQy5aZXJvXG4gIHwgRlBfaW5maW5pdGUgLT4gQy5JbmZpbml0ZVxuICB8IEZQX25hbiAtPiBDLk5hblxuOztcblxubGV0IGluc2VydF91bmRlcnNjb3JlcyA/KGRlbGltaXRlciA9ICdfJykgPyhzdHJpcF96ZXJvID0gZmFsc2UpIHN0cmluZyA9XG4gIG1hdGNoIFN0cmluZy5sc3BsaXQyIHN0cmluZyB+b246Jy4nIHdpdGhcbiAgfCBOb25lIC0+IEludF9jb252ZXJzaW9ucy5pbnNlcnRfZGVsaW1pdGVyIHN0cmluZyB+ZGVsaW1pdGVyXG4gIHwgU29tZSAobGVmdCwgcmlnaHQpIC0+XG4gICAgbGV0IGxlZnQgPSBJbnRfY29udmVyc2lvbnMuaW5zZXJ0X2RlbGltaXRlciBsZWZ0IH5kZWxpbWl0ZXIgaW5cbiAgICBsZXQgcmlnaHQgPVxuICAgICAgaWYgc3RyaXBfemVybyB0aGVuIFN0cmluZy5yc3RyaXAgcmlnaHQgfmRyb3A6KGZ1biBjIC0+IENoYXIuKCA9ICkgYyAnMCcpIGVsc2UgcmlnaHRcbiAgICBpblxuICAgIChtYXRjaCByaWdodCB3aXRoXG4gICAgIHwgXCJcIiAtPiBsZWZ0XG4gICAgIHwgXyAtPiBsZWZ0IF4gXCIuXCIgXiByaWdodClcbjs7XG5cbmxldCB0b19zdHJpbmdfaHVtID9kZWxpbWl0ZXIgPyhkZWNpbWFscyA9IDMpID9zdHJpcF96ZXJvID8oZXhwbGljaXRfcGx1cyA9IGZhbHNlKSBmID1cbiAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBkZWNpbWFscyAwXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwidG9fc3RyaW5nX2h1bTogaW52YWxpZCBhcmd1bWVudCB+ZGVjaW1hbHM9JWRcIiBkZWNpbWFscyAoKTtcbiAgbWF0Y2ggY2xhc3NpZnkgZiB3aXRoXG4gIHwgQ2xhc3MuSW5maW5pdGUgLT4gaWYgZiA+IDAuIHRoZW4gXCJpbmZcIiBlbHNlIFwiLWluZlwiXG4gIHwgQ2xhc3MuTmFuIC0+IFwibmFuXCJcbiAgfCBDbGFzcy5Ob3JtYWwgfCBDbGFzcy5TdWJub3JtYWwgfCBDbGFzcy5aZXJvIC0+XG4gICAgbGV0IHMgPVxuICAgICAgaWYgZXhwbGljaXRfcGx1cyB0aGVuIHNwcmludGYgXCIlKy4qZlwiIGRlY2ltYWxzIGYgZWxzZSBzcHJpbnRmIFwiJS4qZlwiIGRlY2ltYWxzIGZcbiAgICBpblxuICAgIGluc2VydF91bmRlcnNjb3JlcyBzID9kZWxpbWl0ZXIgP3N0cmlwX3plcm9cbjs7XG5cbmxldCBzZXhwX29mX3QgdCA9XG4gIGxldCBzZXhwID0gc2V4cF9vZl90IHQgaW5cbiAgbWF0Y2ggIVNleHAub2ZfZmxvYXRfc3R5bGUgd2l0aFxuICB8IGBOb191bmRlcnNjb3JlcyAtPiBzZXhwXG4gIHwgYFVuZGVyc2NvcmVzIC0+XG4gICAgKG1hdGNoIHNleHAgd2l0aFxuICAgICB8IExpc3QgXyAtPlxuICAgICAgIHJhaXNlX3NcbiAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgIFwiW3NleHBfb2ZfZmxvYXRdIHByb2R1Y2VkIHN0cmFuZ2Ugc2V4cFwiXG4gICAgICAgICAgICBbIFwic2V4cFwiLCBTZXhwLnNleHBfb2ZfdCBzZXhwIF0pXG4gICAgIHwgQXRvbSBzdHJpbmcgLT5cbiAgICAgICBpZiBTdHJpbmcuY29udGFpbnMgc3RyaW5nICdFJyB0aGVuIHNleHAgZWxzZSBBdG9tIChpbnNlcnRfdW5kZXJzY29yZXMgc3RyaW5nKSlcbjs7XG5cbmxldCB0b19wYWRkZWRfY29tcGFjdF9zdHJpbmdfY3VzdG9tIHQgPyhwcmVmaXggPSBcIlwiKSB+a2lsbyB+bWVnYSB+Z2lnYSB+dGVyYSA/cGV0YSAoKSA9XG4gICgqIFJvdW5kIGEgcmF0aW8gdG93YXJkIHRoZSBuZWFyZXN0IGludGVnZXIsIHJlc29sdmluZyB0aWVzIHRvd2FyZCB0aGUgbmVhcmVzdCBldmVuXG4gICAgIG51bWJlci4gIEZvciBzYW5lIGlucHV0cyAoaW4gcGFydGljdWxhciwgd2hlbiBbZGVub21pbmF0b3JdIGlzIGFuIGludGVnZXIgYW5kXG4gICAgIFthYnMgbnVtZXJhdG9yIDwgMmU1Ml0pIHRoaXMgc2hvdWxkIGJlIGFjY3VyYXRlLiAgT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IG1pZ2h0IGJlIGFcbiAgICAgbGl0dGxlIGJpdCBvZmYsIGJ1dCB3ZSBkb24ndCByZWFsbHkgdXNlIHRoYXQgY2FzZS4gKilcbiAgbGV0IGlyb3VuZF9yYXRpb19leG4gfm51bWVyYXRvciB+ZGVub21pbmF0b3IgPVxuICAgIGxldCBrID0gZmxvb3IgKG51bWVyYXRvciAvLiBkZW5vbWluYXRvcikgaW5cbiAgICAoKiBpZiBbYWJzIGsgPCAyZTUzXSwgdGhlbiBib3RoIFtrXSBhbmQgW2sgKy4gMS5dIGFyZSBhY2N1cmF0ZWx5IHJlcHJlc2VudGVkLCBhbmQgaW5cbiAgICAgICBwYXJ0aWN1bGFyIFtrICsuIDEuID4ga10uICBJZiBbZGVub21pbmF0b3JdIGlzIGFsc28gYW4gaW50ZWdlciwgYW5kXG4gICAgICAgW2FicyAoZGVub21pbmF0b3IgKi4gKGsgKy4gMSkpIDwgMmU1M10gKGFuZCBpbiBzb21lIG90aGVyIGNhc2VzLCB0b28pLCB0aGVuIFtsb3dlcl1cbiAgICAgICBhbmQgW2hpZ2hlcl0gYXJlIGFjdHVhbGx5IGJvdGggYWNjdXJhdGUuICBTaW5jZSAocm91Z2hseSlcbiAgICAgICBbbnVtZXJhdG9yID0gZGVub21pbmF0b3IgKi4ga10gdGhlbiBmb3IgW2FicyBudW1lcmF0b3IgPCAyZTUyXSB3ZSBzaG91bGQgYmVcbiAgICAgICBmaW5lLiAqKVxuICAgIGxldCBsb3dlciA9IGRlbm9taW5hdG9yICouIGsgaW5cbiAgICBsZXQgaGlnaGVyID0gZGVub21pbmF0b3IgKi4gKGsgKy4gMS4pIGluXG4gICAgKCogU3VidHJhY3RpbmcgbnVtYmVycyB3aXRoaW4gYSBmYWN0b3Igb2YgdHdvIGZyb20gZWFjaCBvdGhlciBpcyBhY2N1cmF0ZS5cbiAgICAgICBTbyBlaXRoZXIgdGhlIHR3byBzdWJ0cmFjdGlvbnMgYmVsb3cgYXJlIGFjY3VyYXRlLCBvciBrID0gMCwgb3IgayA9IC0xLlxuICAgICAgIEluIGNhc2Ugb2YgYSB0aWUsIHJvdW5kIHRvIGV2ZW4uICopXG4gICAgbGV0IGRpZmZfcmlnaHQgPSBoaWdoZXIgLS4gbnVtZXJhdG9yIGluXG4gICAgbGV0IGRpZmZfbGVmdCA9IG51bWVyYXRvciAtLiBsb3dlciBpblxuICAgIGxldCBrID0gaXJvdW5kX25lYXJlc3RfZXhuIGsgaW5cbiAgICBpZiBkaWZmX3JpZ2h0IDwgZGlmZl9sZWZ0XG4gICAgdGhlbiBrICsgMVxuICAgIGVsc2UgaWYgZGlmZl9yaWdodCA+IGRpZmZfbGVmdFxuICAgIHRoZW4ga1xuICAgIGVsc2UgaWYgKCogYSB0aWUgKilcbiAgICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKGsgbW9kIDIpIDBcbiAgICB0aGVuIGtcbiAgICBlbHNlIGsgKyAxXG4gIGluXG4gIG1hdGNoIGNsYXNzaWZ5IHQgd2l0aFxuICB8IENsYXNzLkluZmluaXRlIC0+IGlmIHQgPCAwLjAgdGhlbiBcIi1pbmYgIFwiIGVsc2UgXCJpbmYgIFwiXG4gIHwgQ2xhc3MuTmFuIC0+IFwibmFuICBcIlxuICB8IENsYXNzLlN1Ym5vcm1hbCB8IENsYXNzLk5vcm1hbCB8IENsYXNzLlplcm8gLT5cbiAgICBsZXQgZ28gdCA9XG4gICAgICBsZXQgY29udl9vbmUgdCA9XG4gICAgICAgIGFzc2VydCAoMC4gPD0gdCAmJiB0IDwgOTk5Ljk1KTtcbiAgICAgICAgbGV0IHggPSBwcmVmaXggXiBmb3JtYXRfZmxvYXQgXCIlLjFmXCIgdCBpblxuICAgICAgICAoKiBGaXggdGhlIFwiLjBcIiBzdWZmaXggKilcbiAgICAgICAgaWYgU3RyaW5nLmlzX3N1ZmZpeCB4IH5zdWZmaXg6XCIuMFwiXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB4ID0gQnl0ZXMub2Zfc3RyaW5nIHggaW5cbiAgICAgICAgICBsZXQgbiA9IEJ5dGVzLmxlbmd0aCB4IGluXG4gICAgICAgICAgQnl0ZXMuc2V0IHggKG4gLSAxKSAnICc7XG4gICAgICAgICAgQnl0ZXMuc2V0IHggKG4gLSAyKSAnICc7XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp4KVxuICAgICAgICBlbHNlIHhcbiAgICAgIGluXG4gICAgICBsZXQgY29udiBtYWcgdCBkZW5vbWluYXRvciA9XG4gICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgKGRlbm9taW5hdG9yID0gMTAwLiAmJiB0ID49IDk5OS45NSlcbiAgICAgICAgICB8fCAoZGVub21pbmF0b3IgPj0gMTAwXzAwMC4gJiYgdCA+PSByb3VuZF9uZWFyZXN0IChkZW5vbWluYXRvciAqLiA5Ljk5OV81KSkpO1xuICAgICAgICBhc3NlcnQgKHQgPCByb3VuZF9uZWFyZXN0IChkZW5vbWluYXRvciAqLiA5Xzk5OS41KSk7XG4gICAgICAgIGxldCBpLCBkID1cbiAgICAgICAgICBsZXQgayA9IGlyb3VuZF9yYXRpb19leG4gfm51bWVyYXRvcjp0IH5kZW5vbWluYXRvciBpblxuICAgICAgICAgICgqIFttb2RdIGlzIG9rYXkgaGVyZSBiZWNhdXNlIHdlIGtub3cgaSA+PSAwLiAqKVxuICAgICAgICAgIGsgLyAxMCwgayBtb2QgMTBcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgICAgICBhc3NlcnQgKDAgPD0gaSAmJiBpIDwgMTAwMCk7XG4gICAgICAgIGFzc2VydCAoMCA8PSBkICYmIGQgPCAxMCk7XG4gICAgICAgIGlmIGQgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIiVzJWQlcyBcIiBwcmVmaXggaSBtYWdcbiAgICAgICAgZWxzZSBzcHJpbnRmIFwiJXMlZCVzJWRcIiBwcmVmaXggaSBtYWcgZFxuICAgICAgaW5cbiAgICAgICgqIFdoaWxlIHRoZSBzdGFuZGFyZCBtZXRyaWMgcHJlZml4ZXMgKGUuZy4gY2FwaXRhbCBcIk1cIiByYXRoZXIgdGhhbiBcIm1cIiwgWzFdKSBhcmVcbiAgICAgICAgIG5vbWluYWxseSBtb3JlIGNvcnJlY3QsIHRoaXMgaGluZGVycyByZWFkYWJpbGl0eSBpbiBvdXIgY2FzZS4gIEUuZy4sIDEwRzYgYW5kXG4gICAgICAgICAxMDY2IGxvb2sgdG9vIHNpbWlsYXIuICBUaGF0J3MgYW4gZXh0cmVtZSBleGFtcGxlLCBidXQgaW4gZ2VuZXJhbCBrLG0sZyx0LHBcbiAgICAgICAgIHByb2JhYmx5IHN0YW5kIG91dCBiZXR0ZXIgdGhhbiBLLE0sRyxULFAgd2hlbiBpbnRlcnNwZXJzZWQgd2l0aCBkaWdpdHMuXG5cbiAgICAgICAgIFsxXSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01ldHJpY19wcmVmaXggKilcbiAgICAgICgqIFRoZSB0cmljayBoZXJlIGlzIHRoYXQ6XG4gICAgICAgICAtIHRoZSBmaXJzdCBib3VuZGFyeSAoOTk5Ljk1KSBhcyBhIGZsb2F0IGlzIHNsaWdodGx5IG92ZXItcmVwcmVzZW50ZWQgKHNvIGl0IGlzXG4gICAgICAgICAgIGJldHRlciBhcHByb3hpbWF0ZWQgYXMgXCIxa1wiIHRoYW4gYXMgXCI5OTkuOVwiKSxcbiAgICAgICAgIC0gdGhlIG90aGVyIGJvdW5kYXJpZXMgYXJlIGFjY3VyYXRlbHkgcmVwcmVzZW50ZWQsIGJlY2F1c2UgdGhleSBhcmUgaW50ZWdlcnMuXG4gICAgICAgICAgIFRoYXQncyB3aHkgdGhlIHN0cmljdCBlcXVhbGl0aWVzIGJlbG93IGRvIGV4YWN0bHkgd2hhdCB3ZSB3YW50LiAqKVxuICAgICAgaWYgdCA8IDk5OS45NUUwXG4gICAgICB0aGVuIGNvbnZfb25lIHRcbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUUzXG4gICAgICB0aGVuIGNvbnYga2lsbyB0IDEwMC5cbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUU2XG4gICAgICB0aGVuIGNvbnYgbWVnYSB0IDEwMF8wMDAuXG4gICAgICBlbHNlIGlmIHQgPCA5OTkuOTVFOVxuICAgICAgdGhlbiBjb252IGdpZ2EgdCAxMDBfMDAwXzAwMC5cbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUUxMlxuICAgICAgdGhlbiBjb252IHRlcmEgdCAxMDBfMDAwXzAwMF8wMDAuXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcGV0YSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzcHJpbnRmIFwiJXMlLjFlXCIgcHJlZml4IHRcbiAgICAgICAgfCBTb21lIHBldGEgLT5cbiAgICAgICAgICBpZiB0IDwgOTk5Ljk1RTE1XG4gICAgICAgICAgdGhlbiBjb252IHBldGEgdCAxMDBfMDAwXzAwMF8wMDBfMDAwLlxuICAgICAgICAgIGVsc2Ugc3ByaW50ZiBcIiVzJS4xZVwiIHByZWZpeCB0KVxuICAgIGluXG4gICAgaWYgdCA+PSAwLiB0aGVuIGdvIHQgZWxzZSBcIi1cIiBeIGdvIH4tLnRcbjs7XG5cbmxldCB0b19wYWRkZWRfY29tcGFjdF9zdHJpbmcgdCA9XG4gIHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0b20gdCB+a2lsbzpcImtcIiB+bWVnYTpcIm1cIiB+Z2lnYTpcImdcIiB+dGVyYTpcInRcIiB+cGV0YTpcInBcIiAoKVxuOztcblxuKCogUGVyZm9ybWFuY2Ugbm90ZTogSW5pdGlhbGl6aW5nIHRoZSBhY2N1bXVsYXRvciB0byAxIHJlc3VsdHMgaW4gb25lIGV4dHJhXG4gICBtdWx0aXBseTsgZS5nLiwgdG8gY29tcHV0ZSB4ICoqIDQsIHdlIGluIHByaW5jaXBsZSBvbmx5IG5lZWQgMiBtdWx0aXBsaWVzLFxuICAgYnV0IHRoaXMgZnVuY3Rpb24gd2lsbCBoYXZlIDMgbXVsdGlwbGllcy4gIEhvd2V2ZXIsIGF0dGVtcHRzIHRvIGF2b2lkIHRoaXNcbiAgIChsaWtlIGRlY3JlbWVudGluZyBuIGFuZCBpbml0aWFsaXppbmcgYWNjdW0gdG8gYmUgeCwgb3IgaGFuZGxpbmcgc21hbGxcbiAgIGV4cG9uZW50cyBhcyBhIHNwZWNpYWwgY2FzZSkgaGF2ZSBub3QgeWllbGRlZCBhbnl0aGluZyB0aGF0IGlzIGEgbmV0XG4gICBpbXByb3ZlbWVudC5cbiopXG5sZXQgaW50X3BvdyB4IG4gPVxuICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gMS5cbiAgZWxzZSAoXG4gICAgKCogVXNpbmcgW3ggKy4gKC0wLildIG9uIHRoZSBmb2xsb3dpbmcgbGluZSBjb252aW5jZXMgdGhlIGNvbXBpbGVyIHRvIGF2b2lkIGEgY2VydGFpblxuICAgICAgIGJveGluZyAodGhhdCB3b3VsZCByZXN1bHQgaW4gYWxsb2NhdGlvbiBpbiBlYWNoIGl0ZXJhdGlvbikuICBTb29uLCB0aGUgY29tcGlsZXJcbiAgICAgICBzaG91bGRuJ3QgbmVlZCB0aGlzIFwiaGludFwiIHRvIGF2b2lkIHRoZSBib3hpbmcuICBUaGUgcmVhc29uIHdlIGFkZCAtMCByYXRoZXIgdGhhbiAwXG4gICAgICAgaXMgdGhhdCBbeCArLiAoLTAuKV0gaXMgYXBwYXJlbnRseSBhbHdheXMgdGhlIHNhbWUgYXMgW3hdLCB3aGVyZWFzIFt4ICsuIDAuXSBpc1xuICAgICAgIG5vdCwgaW4gdGhhdCBpdCBzZW5kcyBbLTAuXSB0byBbMC5dLiAgVGhpcyBtYWtlcyBhIGRpZmZlcmVuY2UgYmVjYXVzZSB3ZSB3YW50XG4gICAgICAgW2ludF9wb3cgKC0wLikgKC0xKV0gdG8gcmV0dXJuIG5lZ19pbmZpbml0eSBqdXN0IGxpa2UgWy0wLiAqKiAtMS5dIHdvdWxkLiAgKilcbiAgICBsZXQgeCA9IHJlZiAoeCArLiAtMC4pIGluXG4gICAgbGV0IG4gPSByZWYgbiBpblxuICAgIGxldCBhY2N1bSA9IHJlZiAxLiBpblxuICAgIGlmICFuIDwgMFxuICAgIHRoZW4gKFxuICAgICAgKCogeCAqKiBuID0gKDEveCkgKiogLW4gKilcbiAgICAgIHggOj0gMS4gLy4gIXg7XG4gICAgICBuIDo9IH4tICghbik7XG4gICAgICBpZiAhbiA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBuIG11c3QgaGF2ZSBiZWVuIG1pbl9pbnQsIHNvIGl0IGlzIG5vdyBzbyBiaWcgdGhhdCBpdCBoYXMgd3JhcHBlZCBhcm91bmQuXG4gICAgICAgICAgIFdlIGRlY3JlbWVudCBpdCBzbyB0aGF0IGl0IGxvb2tzIHBvc2l0aXZlIGFnYWluLCBidXQgYWNjb3JkaW5nbHkgaGF2ZVxuICAgICAgICAgICB0byBwdXQgYW4gZXh0cmEgZmFjdG9yIG9mIHggaW4gdGhlIGFjY3VtdWxhdG9yLlxuICAgICAgICAqKVxuICAgICAgICBhY2N1bSA6PSAheDtcbiAgICAgICAgZGVjciBuKSk7XG4gICAgKCogTGV0dGluZyBbYV0gZGVub3RlICh0aGUgb3JpZ2luYWwgdmFsdWUgb2YpIFt4ICoqIG5dLCB3ZSBtYWludGFpblxuICAgICAgIHRoZSBpbnZhcmlhbnQgdGhhdCBbKHggKiogbikgKi4gYWNjdW0gPSBhXS4gKilcbiAgICB3aGlsZSAhbiA+IDEgZG9cbiAgICAgIGlmICFuIGxhbmQgMSA8PiAwIHRoZW4gYWNjdW0gOj0gIXggKi4gIWFjY3VtO1xuICAgICAgeCA6PSAheCAqLiAheDtcbiAgICAgIG4gOj0gIW4gbHNyIDFcbiAgICBkb25lO1xuICAgICgqIG4gaXMgbmVjZXNzYXJpbHkgMSBhdCB0aGlzIHBvaW50LCBzbyB0aGVyZSBpcyBvbmUgYWRkaXRpb25hbFxuICAgICAgIG11bHRpcGxpY2F0aW9uIGJ5IHguICopXG4gICAgIXggKi4gIWFjY3VtKVxuOztcblxubGV0IHJvdW5kX2dlbiB4IH5ob3cgPVxuICBpZiB4ID0gMC5cbiAgdGhlbiAwLlxuICBlbHNlIGlmIG5vdCAoaXNfZmluaXRlIHgpXG4gIHRoZW4geFxuICBlbHNlIChcbiAgICAoKiBTaWduaWZpY2FudCBkaWdpdHMgYW5kIGRlY2ltYWwgZGlnaXRzLiAqKVxuICAgIGxldCBzZCwgZGQgPVxuICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgIHwgYHNpZ25pZmljYW50X2RpZ2l0cyBzZCAtPlxuICAgICAgICBsZXQgZGQgPSBzZCAtIHRvX2ludCAocm91bmRfdXAgKGxvZzEwIChhYnMgeCkpKSBpblxuICAgICAgICBzZCwgZGRcbiAgICAgIHwgYGRlY2ltYWxfZGlnaXRzIGRkIC0+XG4gICAgICAgIGxldCBzZCA9IGRkICsgdG9faW50IChyb3VuZF91cCAobG9nMTAgKGFicyB4KSkpIGluXG4gICAgICAgIHNkLCBkZFxuICAgIGluXG4gICAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGlmIHNkIDwgMFxuICAgIHRoZW4gMC5cbiAgICBlbHNlIGlmIHNkID49IDE3XG4gICAgdGhlbiB4XG4gICAgZWxzZSAoXG4gICAgICAoKiBDaG9vc2UgdGhlIG9yZGVyIHRoYXQgaXMgZXhhY3RseSByZXByZXNlbnRhYmxlIGFzIGEgZmxvYXQuIFNtYWxsIHBvc2l0aXZlXG4gICAgICAgICBpbnRlZ2VycyBhcmUsIGJ1dCB0aGVpciBpbnZlcnNlcyBpbiBtb3N0IGNhc2VzIGFyZSBub3QuICopXG4gICAgICBsZXQgYWJzX2RkID0gSW50LmFicyBkZCBpblxuICAgICAgaWYgYWJzX2RkID4gMjIgfHwgc2QgPj0gMTZcbiAgICAgICgqIDEwKioyMiBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYSBmbG9hdCwgYnV0IDEwKioyMyBpcyBub3QsIHNvIHVzZSB0aGUgc2xvd1xuICAgICAgICAgcGF0aC4gIFNpbWlsYXJseSwgaWYgd2UgbmVlZCAxNiBzaWduaWZpY2FudCBkaWdpdHMgaW4gdGhlIHJlc3VsdCwgdGhlbiB0aGUgaW50ZWdlclxuICAgICAgICAgW3JvdW5kX25lYXJlc3QgKHggPG9wPiBvcmRlcildIG1pZ2h0IG5vdCBiZSBleGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYSBmbG9hdCwgc2luY2VcbiAgICAgICAgIGZvciBzb21lIHJhbmdlcyB3ZSBvbmx5IGhhdmUgMTUgZGlnaXRzIG9mIHByZWNpc2lvbiBndWFyYW50ZWVkLlxuXG4gICAgICAgICBUaGF0IHNhaWQsIHdlIGFyZSBzdGlsbCByb3VuZGluZyB0d2ljZSBoZXJlOlxuXG4gICAgICAgICAxKSBmaXJzdCB0aW1lIHdoZW4gcm91bmRpbmcgW3ggKi4gb3JkZXJdIG9yIFt4IC8uIG9yZGVyXSB0byB0aGUgbmVhcmVzdCBmbG9hdFxuICAgICAgICAgKGp1c3QgdGhlIG5vcm1hbCB3YXkgZmxvYXRpbmctcG9pbnQgbXVsdGlwbGljYXRpb24gb3IgZGl2aXNpb24gd29ya3MpLFxuXG4gICAgICAgICAyKSBzZWNvbmQgdGltZSB3aGVuIGFwcGx5aW5nIFtyb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbl0gdG8gdGhlIHJlc3VsdCBvZiB0aGVcbiAgICAgICAgIGFib3ZlIG9wZXJhdGlvblxuXG4gICAgICAgICBTbyBmb3IgYXJndW1lbnRzIHdpdGhpbiBhbiB1bHAgZnJvbSBhIHRpZSB3ZSBtaWdodCBzdGlsbCBwcm9kdWNlIGFuIG9mZi1ieS1vbmVcbiAgICAgICAgIHJlc3VsdC4gKilcbiAgICAgIHRoZW4gb2Zfc3RyaW5nIChzcHJpbnRmIFwiJS4qZ1wiIHNkIHgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG9yZGVyID0gaW50X3BvdyAxMC4gYWJzX2RkIGluXG4gICAgICAgIGlmIGRkID49IDBcbiAgICAgICAgdGhlbiByb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbiAoeCAqLiBvcmRlcikgLy4gb3JkZXJcbiAgICAgICAgZWxzZSByb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbiAoeCAvLiBvcmRlcikgKi4gb3JkZXIpKSlcbjs7XG5cbmxldCByb3VuZF9zaWduaWZpY2FudCB4IH5zaWduaWZpY2FudF9kaWdpdHMgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBzaWduaWZpY2FudF9kaWdpdHMgMFxuICB0aGVuXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0LnJvdW5kX3NpZ25pZmljYW50OiBpbnZhbGlkIGFyZ3VtZW50IHNpZ25pZmljYW50X2RpZ2l0czolZFwiXG4gICAgICBzaWduaWZpY2FudF9kaWdpdHNcbiAgICAgICgpXG4gIGVsc2Ugcm91bmRfZ2VuIHggfmhvdzooYHNpZ25pZmljYW50X2RpZ2l0cyBzaWduaWZpY2FudF9kaWdpdHMpXG47O1xuXG5sZXQgcm91bmRfZGVjaW1hbCB4IH5kZWNpbWFsX2RpZ2l0cyA9IHJvdW5kX2dlbiB4IH5ob3c6KGBkZWNpbWFsX2RpZ2l0cyBkZWNpbWFsX2RpZ2l0cylcbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgKCogQWxzbyBmYWlscyBpZiBbbWluXSBvciBbbWF4XSBpcyBuYW4gKilcbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgKCogY2xhbXBfdW5jaGVja2VkIGlzIGluIGZsb2F0MC5tbCAqKVxuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICgqIEFsc28gZmFpbHMgaWYgW21pbl0gb3IgW21heF0gaXMgbmFuICopXG4gIGlmIG1pbiA8PSBtYXhcbiAgdGhlbiBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICBlbHNlXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuOztcblxubGV0ICggKyApID0gKCArLiApXG5sZXQgKCAtICkgPSAoIC0uIClcbmxldCAoICogKSA9ICggKi4gKVxubGV0ICggKiogKSA9ICggKiogKVxubGV0ICggLyApID0gKCAvLiApXG5sZXQgKCAlICkgPSAoICUuIClcbmxldCAoIH4tICkgPSAoIH4tLiApXG5cbmxldCBzaWduX2V4biB0IDogU2lnbi50ID1cbiAgaWYgdCA+IDAuXG4gIHRoZW4gUG9zXG4gIGVsc2UgaWYgdCA8IDAuXG4gIHRoZW4gTmVnXG4gIGVsc2UgaWYgdCA9IDAuXG4gIHRoZW4gWmVyb1xuICBlbHNlIEVycm9yLnJhaXNlX3MgKFNleHAubWVzc2FnZSBcIkZsb2F0LnNpZ25fZXhuIG9mIE5BTlwiIFsgXCJcIiwgc2V4cF9vZl90IHQgXSlcbjs7XG5cbmxldCBzaWduX29yX25hbiB0IDogU2lnbl9vcl9uYW4udCA9XG4gIGlmIHQgPiAwLiB0aGVuIFBvcyBlbHNlIGlmIHQgPCAwLiB0aGVuIE5lZyBlbHNlIGlmIHQgPSAwLiB0aGVuIFplcm8gZWxzZSBOYW5cbjs7XG5cbmxldCBpZWVlX25lZ2F0aXZlIHQgPVxuICBsZXQgYml0cyA9IFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQgaW5cbiAgUG9seS4oYml0cyA8IFN0ZGxpYi5JbnQ2NC56ZXJvKVxuOztcblxubGV0IGV4cG9uZW50X2JpdHMgPSAxMVxubGV0IG1hbnRpc3NhX2JpdHMgPSA1MlxubGV0IGV4cG9uZW50X21hc2s2NCA9IEludDY0LihzaGlmdF9sZWZ0IG9uZSBleHBvbmVudF9iaXRzIC0gb25lKVxubGV0IGV4cG9uZW50X21hc2sgPSBJbnQ2NC50b19pbnRfZXhuIGV4cG9uZW50X21hc2s2NFxubGV0IG1hbnRpc3NhX21hc2sgPSBJbnQ2My4oc2hpZnRfbGVmdCBvbmUgbWFudGlzc2FfYml0cyAtIG9uZSlcbmxldCBtYW50aXNzYV9tYXNrNjQgPSBJbnQ2My50b19pbnQ2NCBtYW50aXNzYV9tYXNrXG5cbmxldCBpZWVlX2V4cG9uZW50IHQgPVxuICBsZXQgYml0cyA9IFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQgaW5cbiAgSW50NjQuKGJpdF9hbmQgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgYml0cyBtYW50aXNzYV9iaXRzKSBleHBvbmVudF9tYXNrNjQpXG4gIHw+IFN0ZGxpYi5JbnQ2NC50b19pbnRcbjs7XG5cbmxldCBpZWVlX21hbnRpc3NhIHQgPVxuICBsZXQgYml0cyA9IFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQgaW5cbiAgKCogVGhpcyBpcyBzYWZlIGJlY2F1c2UgbWFudGlzc2FfbWFzazY0IDwgSW50NjMubWF4X3ZhbHVlICopXG4gIChJbnQ2My5vZl9pbnQ2NF90cnVuYykgU3RkbGliLkludDY0Lihsb2dhbmQgYml0cyBtYW50aXNzYV9tYXNrNjQpXG47O1xuXG5sZXQgY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhID1cbiAgaWYgSW50LihiaXRfYW5kIGV4cG9uZW50IGV4cG9uZW50X21hc2sgPD4gZXhwb25lbnQpXG4gIHRoZW4gZmFpbHdpdGhmIFwiZXhwb25lbnQgJWQgb3V0IG9mIHJhbmdlIFswLCAlZF1cIiBleHBvbmVudCBleHBvbmVudF9tYXNrICgpXG4gIGVsc2UgaWYgSW50NjMuKGJpdF9hbmQgbWFudGlzc2EgbWFudGlzc2FfbWFzayA8PiBtYW50aXNzYSlcbiAgdGhlblxuICAgIGZhaWx3aXRoZlxuICAgICAgXCJtYW50aXNzYSAlcyBvdXQgb2YgcmFuZ2UgWzAsICVzXVwiXG4gICAgICAoSW50NjMudG9fc3RyaW5nIG1hbnRpc3NhKVxuICAgICAgKEludDYzLnRvX3N0cmluZyBtYW50aXNzYV9tYXNrKVxuICAgICAgKClcbiAgZWxzZSAoXG4gICAgbGV0IHNpZ25fYml0cyA9IGlmIG5lZ2F0aXZlIHRoZW4gU3RkbGliLkludDY0Lm1pbl9pbnQgZWxzZSBTdGRsaWIuSW50NjQuemVybyBpblxuICAgIGxldCBleHB0X2JpdHMgPVxuICAgICAgU3RkbGliLkludDY0LnNoaWZ0X2xlZnQgKFN0ZGxpYi5JbnQ2NC5vZl9pbnQgZXhwb25lbnQpIG1hbnRpc3NhX2JpdHNcbiAgICBpblxuICAgIGxldCBtYW50X2JpdHMgPSBJbnQ2My50b19pbnQ2NCBtYW50aXNzYSBpblxuICAgIGxldCBiaXRzID0gU3RkbGliLkludDY0Lihsb2dvciBzaWduX2JpdHMgKGxvZ29yIGV4cHRfYml0cyBtYW50X2JpdHMpKSBpblxuICAgIFN0ZGxpYi5JbnQ2NC5mbG9hdF9vZl9iaXRzIGJpdHMpXG47O1xuXG5sZXQgY3JlYXRlX2llZWUgfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2EgPVxuICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYSlcbjs7XG5cbm1vZHVsZSBUZXJzZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgbGV0IHRvX3N0cmluZyB4ID0gUHJpbnRmLnNwcmludGYgXCIlLjhHXCIgeFxuICBsZXQgc2V4cF9vZl90IHggPSBTZXhwLkF0b20gKHRvX3N0cmluZyB4KVxuICBsZXQgb2Zfc3RyaW5nIHggPSBvZl9zdHJpbmcgeFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuZW5kXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxuKCogVGhlc2UgYXJlIHBhcnRseSBoZXJlIGFzIGEgcGVyZm9ybWFuY2UgaGFjayB0byBhdm9pZCBzb21lIGJveGluZyB3ZSdyZSBnZXR0aW5nIHdpdGhcbiAgIHRoZSB2ZXJzaW9ucyB3ZSBnZXQgZnJvbSBbV2l0aF96ZXJvXS4gIFRoZXkgYWxzbyBtYWtlIFtGbG9hdC5pc19uZWdhdGl2ZSBuYW5dIGFuZFxuICAgW0Zsb2F0LmlzX25vbl9wb3NpdGl2ZSBuYW5dIHJldHVybiBbZmFsc2VdOyB0aGUgdmVyc2lvbnMgd2UgZ2V0IGZyb20gW1dpdGhfemVyb10gcmV0dXJuXG4gICBbdHJ1ZV0uICopXG5sZXQgaXNfcG9zaXRpdmUgdCA9IHQgPiAwLlxubGV0IGlzX25vbl9uZWdhdGl2ZSB0ID0gdCA+PSAwLlxubGV0IGlzX25lZ2F0aXZlIHQgPSB0IDwgMC5cbmxldCBpc19ub25fcG9zaXRpdmUgdCA9IHQgPD0gMC5cblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuRmxvYXRcIlxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgZW5kKVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCAlICkgPSAoICUgKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludCA9IG9mX2ludFxuICBsZXQgb2ZfZmxvYXQgeCA9IHhcbmVuZFxuXG5tb2R1bGUgT19kb3QgPSBzdHJ1Y3RcbiAgbGV0ICggKi4gKSA9ICggKiApXG4gIGxldCAoICsuICkgPSAoICsgKVxuICBsZXQgKCAtLiApID0gKCAtIClcbiAgbGV0ICggLy4gKSA9ICggLyApXG4gIGxldCAoICUuICkgPSAoICUgKVxuICBsZXQgKCB+LS4gKSA9ICggfi0gKVxuICBsZXQgKCAqKi4gKSA9ICggKiogKVxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBib3ggPSBib3hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCA9IGNsYW1wX3VuY2hlY2tlZFxuICBsZXQgbG93ZXJfYm91bmRfZm9yX2ludCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnRcbiAgbGV0IHVwcGVyX2JvdW5kX2Zvcl9pbnQgPSB1cHBlcl9ib3VuZF9mb3JfaW50XG4gIGxldCBzcGVjaWFsaXplZF9oYXNoID0gaGFzaF9mbG9hdFxuICBsZXQgb25lX3VscF9sZXNzX3RoYW5faGFsZiA9IG9uZV91bHBfbGVzc190aGFuX2hhbGZcbiAgbGV0IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuID0gaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG5cbiAgbGV0IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuID0gaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG5cbiAgbGV0IGlyb3VuZF9uZWFyZXN0X2V4bl82NCA9IGlyb3VuZF9uZWFyZXN0X2V4bl82NFxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuKCogVGhlc2UgZnVuY3Rpb25zIHNwZWNpZmljYWxseSByZXBsYWNlIGRlZmF1bHRzIGluIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5cblxuICAgVGhlIGRlc2lyZWQgYmVoYXZpb3IgaGVyZSBpcyB0byBwcm9wYWdhdGUgYSBuYW4gaWYgZWl0aGVyIGFyZ3VtZW50IGlzIG5hbi4gQmVjYXVzZSB0aGVcbiAgIGZpcnN0IGNvbXBhcmlzb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGlmIGVpdGhlciBhcmd1bWVudCBpcyBuYW4sIGl0IHN1ZmZpY2VzIHRvXG4gICBjaGVjayBpZiB4IGlzIG5hbi4gVGhlbiwgd2hlbiB4IGlzIG5hbiBvciBib3RoIHggYW5kIHkgYXJlIG5hbiwgd2UgcmV0dXJuIHggPSBuYW47IGFuZFxuICAgd2hlbiB5IGlzIG5hbiBidXQgbm90IHgsIHdlIHJldHVybiB5ID0gbmFuLlxuXG4gICBUaGVyZSBhcmUgdmFyaW91cyB3YXlzIHRvIGltcGxlbWVudCB0aGVzZSBmdW5jdGlvbnMuICBUaGUgYmVuY2htYXJrIGJlbG93IHNob3dzIGEgZmV3XG4gICBkaWZmZXJlbnQgdmVyc2lvbnMuICBUaGlzIGJlbmNobWFyayB3YXMgcnVuIG92ZXIgYW4gYXJyYXkgb2YgcmFuZG9tIGZsb2F0cyAobm9uZSBvZlxuICAgd2hpY2ggYXJlIG5hbikuXG5cbiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAg4pSCIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pSCIFRpbWUvUnVuIOKUglxuICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkXG4gICDilIIgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgaWYgeCA8IHkgdGhlbiB4IGVsc2UgeSDilIIgICAyLjQydXMg4pSCXG4gICDilIIgaWYgaXNfbmFuIHggfHwgeCA8IHkgdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAyLjAydXMg4pSCXG4gICDilIIgaWYgeCA8IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAxLjg4dXMg4pSCXG4gICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcblxuICAgVGhlIGJlbmNobWFyayBiZWxvdyB3YXMgcnVuIHdoZW4geCA+IHkgaXMgYWx3YXlzIHRydWUgKGFnYWluLCBubyBuYW4gdmFsdWVzKS5cblxuICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICDilIIgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgVGltZS9SdW4g4pSCXG4gICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbiAgIOKUgiBpZiBpc19uYW4geCB0aGVuIHggZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5IOKUgiAgIDIuODN1cyDilIJcbiAgIOKUgiBpZiBpc19uYW4geCB8fCB4IDwgeSB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuOTd1cyDilIJcbiAgIOKUgiBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuNTZ1cyDilIJcbiAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuKilcbmxldCBtaW4gKHggOiB0KSB5ID0gaWYgeCA8IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxubGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQnVmZmVyX2ludGZcbmluY2x1ZGUgU3RkbGliLkJ1ZmZlclxuXG5sZXQgY29udGVudHNfYnl0ZXMgPSB0b19ieXRlc1xubGV0IGFkZF9zdWJzdHJpbmcgdCBzIH5wb3MgfmxlbiA9IGFkZF9zdWJzdHJpbmcgdCBzIHBvcyBsZW5cbmxldCBhZGRfc3ViYnl0ZXMgdCBzIH5wb3MgfmxlbiA9IGFkZF9zdWJieXRlcyB0IHMgcG9zIGxlblxubGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl9zdHJpbmcgKGNvbnRlbnRzIHQpXG5cbmxldCBjYW1sX2J1ZmZlcl9sZW5ndGggPVxuICAoU3RkbGliLk9iai5tYWdpYyAoU3RkbGliLkJ1ZmZlci5sZW5ndGggOiB0IC0+IGludCkgOiAodFtAbG9jYWxdKSAtPiBpbnQpXG47O1xuXG5sZXQgY2FtbF9idWZmZXJfYmxpdCA9XG4gIChTdGRsaWIuT2JqLm1hZ2ljXG4gICAgIChTdGRsaWIuQnVmZmVyLmJsaXQgOiBTdGRsaWIuQnVmZmVyLnQgLT4gaW50IC0+IEJ5dGVzLnQgLT4gaW50IC0+IGludCAtPiB1bml0KVxuICAgOiAoU3RkbGliLkJ1ZmZlci50W0Bsb2NhbF0pIC0+IGludCAtPiAoQnl0ZXMudFtAbG9jYWxdKSAtPiBpbnQgLT4gaW50IC0+IHVuaXQpXG47O1xuXG5tb2R1bGUgVG9fYnl0ZXMgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbGVuZ3RoID0gY2FtbF9idWZmZXJfbGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJ5dGVzLnRcblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gQnl0ZXMuY3JlYXRlIGxlblxuICAgICAgbGV0IGxlbmd0aCA9IEJ5dGVzLmxlbmd0aFxuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgICAgICBjYW1sX2J1ZmZlcl9ibGl0IHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuICAgICAgOztcbiAgICBlbmQpXG5cbmluY2x1ZGUgVG9fYnl0ZXNcbm1vZHVsZSBUb19zdHJpbmcgPSBCbGl0Lk1ha2VfdG9fc3RyaW5nIChTdGRsaWIuQnVmZmVyKSAoVG9fYnl0ZXMpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbnR5cGUgdCA9IFN0ZGxpYi5QcmludGV4Yy5yYXdfYmFja3RyYWNlXG5cbmxldCBlbGlkZSA9IHJlZiBmYWxzZVxubGV0IGVsaWRlZF9tZXNzYWdlID0gXCI8YmFja3RyYWNlIGVsaWRlZCBpbiB0ZXN0PlwiXG5cbmxldCBnZXQgPyhhdF9tb3N0X251bV9mcmFtZXMgPSBJbnQubWF4X3ZhbHVlKSAoKSA9XG4gIFN0ZGxpYi5QcmludGV4Yy5nZXRfY2FsbHN0YWNrIGF0X21vc3RfbnVtX2ZyYW1lc1xuOztcblxubGV0IHRvX3N0cmluZyB0ID1cbiAgaWYgIWVsaWRlIHRoZW4gZWxpZGVkX21lc3NhZ2UgZWxzZSBTdGRsaWIuUHJpbnRleGMucmF3X2JhY2t0cmFjZV90b19zdHJpbmcgdFxuOztcblxubGV0IHRvX3N0cmluZ19saXN0IHQgPSBTdHJpbmcuc3BsaXRfbGluZXMgKHRvX3N0cmluZyB0KVxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5MaXN0IChMaXN0Lm1hcCAodG9fc3RyaW5nX2xpc3QgdCkgfmY6KGZ1biB4IC0+IFNleHAuQXRvbSB4KSlcblxubW9kdWxlIEV4biA9IHN0cnVjdFxuICBsZXQgc2V0X3JlY29yZGluZyA9IFN0ZGxpYi5QcmludGV4Yy5yZWNvcmRfYmFja3RyYWNlXG4gIGxldCBhbV9yZWNvcmRpbmcgPSBTdGRsaWIuUHJpbnRleGMuYmFja3RyYWNlX3N0YXR1c1xuICBsZXQgbW9zdF9yZWNlbnQgKCkgPSBTdGRsaWIuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKClcblxuICBsZXQgbW9zdF9yZWNlbnRfZm9yX2V4biBleG4gPVxuICAgIGlmIEV4bi5pc19waHlzX2VxdWFsX21vc3RfcmVjZW50IGV4biB0aGVuIFNvbWUgKG1vc3RfcmVjZW50ICgpKSBlbHNlIE5vbmVcbiAgOztcblxuICAoKiBXZSB0dXJuIG9uIGJhY2t0cmFjZXMgYnkgZGVmYXVsdCBpZiBPQ0FNTFJVTlBBUkFNIGRvZXNuJ3QgZXhwbGljaXRseSBtZW50aW9uIHRoZW0uICopXG4gIGxldCBtYXliZV9zZXRfcmVjb3JkaW5nICgpID1cbiAgICBsZXQgb2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhY2VzID1cbiAgICAgIG1hdGNoIFN5cy5nZXRlbnYgXCJPQ0FNTFJVTlBBUkFNXCIgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgeCAtPiBMaXN0LmV4aXN0cyAoU3RyaW5nLnNwbGl0IHggfm9uOicsJykgfmY6KFN0cmluZy5pc19wcmVmaXggfnByZWZpeDpcImJcIilcbiAgICBpblxuICAgIGlmIG5vdCBvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmFjZXMgdGhlbiBzZXRfcmVjb3JkaW5nIHRydWVcbiAgOztcblxuICAoKiB0aGUgY2FsbGVyIHNldCBzb21ldGhpbmcsIHRoZXkgYXJlIHJlc3BvbnNpYmxlICopXG5cbiAgbGV0IHdpdGhfcmVjb3JkaW5nIGIgfmYgPVxuICAgIGxldCBzYXZlZCA9IGFtX3JlY29yZGluZyAoKSBpblxuICAgIHNldF9yZWNvcmRpbmcgYjtcbiAgICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IHNldF9yZWNvcmRpbmcgc2F2ZWQpXG4gIDs7XG5lbmRcblxubGV0IGluaXRpYWxpemVfbW9kdWxlICgpID0gRXhuLm1heWJlX3NldF9yZWNvcmRpbmcgKClcbiIsIigqKiBUaGlzIG1vZHVsZSBpcyB0aGUgdG9wbGV2ZWwgb2YgdGhlIEJhc2UgbGlicmFyeTsgaXQncyB3aGF0IHlvdSBnZXQgd2hlbiB5b3Ugd3JpdGVcbiAgICBbb3BlbiBCYXNlXS5cblxuICAgIFRoZSBnb2FsIG9mIEJhc2UgaXMgYm90aCB0byBiZSBhIG1vcmUgY29tcGxldGUgc3RhbmRhcmQgbGlicmFyeSwgd2l0aCByaWNoZXIgQVBJcyxcbiAgICBhbmQgdG8gYmUgbW9yZSBjb25zaXN0ZW50IGluIGl0cyBkZXNpZ24uIEZvciBpbnN0YW5jZSwgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnlcbiAgICBzb21lIHRoaW5ncyBoYXZlIG1vZHVsZXMgYW5kIG90aGVycyBkb24ndDsgaW4gQmFzZSwgZXZlcnl0aGluZyBpcyBhIG1vZHVsZS5cblxuICAgIEJhc2UgZXh0ZW5kcyBzb21lIG1vZHVsZXMgYW5kIGRhdGEgc3RydWN0dXJlcyBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCBsaWtlIFtBcnJheV0sXG4gICAgW0J1ZmZlcl0sIFtCeXRlc10sIFtDaGFyXSwgW0hhc2h0YmxdLCBbSW50MzJdLCBbSW50NjRdLCBbTGF6eV0sIFtMaXN0XSwgW01hcF0sXG4gICAgW05hdGl2ZWludF0sIFtQcmludGZdLCBbUmFuZG9tXSwgW1NldF0sIFtTdHJpbmddLCBbU3lzXSwgYW5kIFtVY2hhcl0uIE9uZSBrZXlcbiAgICBkaWZmZXJlbmNlIGlzIHRoYXQgQmFzZSBkb2Vzbid0IHVzZSBleGNlcHRpb25zIGFzIG11Y2ggYXMgdGhlIHN0YW5kYXJkIGxpYnJhcnkgYW5kXG4gICAgaW5zdGVhZCBtYWtlcyBoZWF2eSB1c2Ugb2YgdGhlIFtSZXN1bHRdIHR5cGUsIGFzIGluOlxuXG4gICAge1sgdHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2IgXX1cblxuICAgIEJhc2UgYWxzbyBhZGRzIGVudGlyZWx5IG5ldyBtb2R1bGVzLCBtb3N0IG5vdGFibHk6XG5cbiAgICAtIFtDb21wYXJhYmxlXSwgW0NvbXBhcmF0b3JdLCBhbmQgW0NvbXBhcmlzb25zXSBpbiBsaWV1IG9mIHBvbHltb3JwaGljIGNvbXBhcmUuXG4gICAgLSBbQ29udGFpbmVyXSwgd2hpY2ggcHJvdmlkZXMgYSBjb25zaXN0ZW50IGludGVyZmFjZSBhY3Jvc3MgY29udGFpbmVyLWxpa2UgZGF0YVxuICAgICAgc3RydWN0dXJlcyAoYXJyYXlzLCBsaXN0cywgc3RyaW5ncykuXG4gICAgLSBbUmVzdWx0XSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0sIHN1cHBvcnRpbmcgdGhlIG9yLWVycm9yIHBhdHRlcm4uXG4qKVxuXG4oKl8gV2UgaGlkZSB0aGlzIGZyb20gdGhlIHdlYiBkb2NzIGJlY2F1c2UgdGhlIGxpbmUgd3JhcHBpbmcgaXMgYmFkLCBtYWtpbmcgaXRcbiAgcHJldHR5IG11Y2ggaW5zY3J1dGFibGUuICopXG4oKiovKiopXG5cbigqIFRoZSBpbnRlbnQgaXMgdG8gc2hhZG93IGFsbCBvZiBJTlJJQSdzIHN0YW5kYXJkIGxpYnJhcnkuICBNb2R1bGVzIGJlbG93IHdvdWxkIGNhdXNlXG4gICBjb21waWxhdGlvbiBlcnJvcnMgd2l0aG91dCBiZWluZyByZW1vdmVkIGZyb20gW1NoYWRvd19zdGRsaWJdIGJlZm9yZSBpbmNsdXNpb24uICopXG5cbmluY2x1ZGUgKFxuICBTaGFkb3dfc3RkbGliIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNoYWRvd19zdGRsaWJcbiAgZW5kXG4gICgqIE1vZHVsZXMgZGVmaW5lZCBpbiBCYXNlICopXG4gIHdpdGggbW9kdWxlIEFycmF5IDo9IFNoYWRvd19zdGRsaWIuQXJyYXlcbiAgd2l0aCBtb2R1bGUgQXRvbWljIDo9IFNoYWRvd19zdGRsaWIuQXRvbWljXG4gIHdpdGggbW9kdWxlIEJvb2wgOj0gU2hhZG93X3N0ZGxpYi5Cb29sXG4gIHdpdGggbW9kdWxlIEJ1ZmZlciA6PSBTaGFkb3dfc3RkbGliLkJ1ZmZlclxuICB3aXRoIG1vZHVsZSBCeXRlcyA6PSBTaGFkb3dfc3RkbGliLkJ5dGVzXG4gIHdpdGggbW9kdWxlIENoYXIgOj0gU2hhZG93X3N0ZGxpYi5DaGFyXG4gIHdpdGggbW9kdWxlIEVpdGhlciA6PSBTaGFkb3dfc3RkbGliLkVpdGhlclxuICB3aXRoIG1vZHVsZSBGbG9hdCA6PSBTaGFkb3dfc3RkbGliLkZsb2F0XG4gIHdpdGggbW9kdWxlIEhhc2h0YmwgOj0gU2hhZG93X3N0ZGxpYi5IYXNodGJsXG4gIHdpdGggbW9kdWxlIEluX2NoYW5uZWwgOj0gU2hhZG93X3N0ZGxpYi5Jbl9jaGFubmVsXG4gIHdpdGggbW9kdWxlIEludCA6PSBTaGFkb3dfc3RkbGliLkludFxuICB3aXRoIG1vZHVsZSBJbnQzMiA6PSBTaGFkb3dfc3RkbGliLkludDMyXG4gIHdpdGggbW9kdWxlIEludDY0IDo9IFNoYWRvd19zdGRsaWIuSW50NjRcbiAgd2l0aCBtb2R1bGUgTGF6eSA6PSBTaGFkb3dfc3RkbGliLkxhenlcbiAgd2l0aCBtb2R1bGUgTGlzdCA6PSBTaGFkb3dfc3RkbGliLkxpc3RcbiAgd2l0aCBtb2R1bGUgTWFwIDo9IFNoYWRvd19zdGRsaWIuTWFwXG4gIHdpdGggbW9kdWxlIE5hdGl2ZWludCA6PSBTaGFkb3dfc3RkbGliLk5hdGl2ZWludFxuICB3aXRoIG1vZHVsZSBPcHRpb24gOj0gU2hhZG93X3N0ZGxpYi5PcHRpb25cbiAgd2l0aCBtb2R1bGUgT3V0X2NoYW5uZWwgOj0gU2hhZG93X3N0ZGxpYi5PdXRfY2hhbm5lbFxuICB3aXRoIG1vZHVsZSBQcmludGYgOj0gU2hhZG93X3N0ZGxpYi5QcmludGZcbiAgd2l0aCBtb2R1bGUgUXVldWUgOj0gU2hhZG93X3N0ZGxpYi5RdWV1ZVxuICB3aXRoIG1vZHVsZSBSYW5kb20gOj0gU2hhZG93X3N0ZGxpYi5SYW5kb21cbiAgd2l0aCBtb2R1bGUgUmVzdWx0IDo9IFNoYWRvd19zdGRsaWIuUmVzdWx0XG4gIHdpdGggbW9kdWxlIFNldCA6PSBTaGFkb3dfc3RkbGliLlNldFxuICB3aXRoIG1vZHVsZSBTdGFjayA6PSBTaGFkb3dfc3RkbGliLlN0YWNrXG4gIHdpdGggbW9kdWxlIFN0cmluZyA6PSBTaGFkb3dfc3RkbGliLlN0cmluZ1xuICB3aXRoIG1vZHVsZSBTeXMgOj0gU2hhZG93X3N0ZGxpYi5TeXNcbiAgd2l0aCBtb2R1bGUgVWNoYXIgOj0gU2hhZG93X3N0ZGxpYi5VY2hhclxuICB3aXRoIG1vZHVsZSBVbml0IDo9IFNoYWRvd19zdGRsaWIuVW5pdFxuICAoKiBTdXBwb3J0IGZvciBnZW5lcmF0ZWQgbGV4ZXJzICopXG4gIHdpdGggbW9kdWxlIExleGluZyA6PSBTaGFkb3dfc3RkbGliLkxleGluZ1xuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA6PSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgOj0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA6PSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICB3aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZilcbiAgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuKCoqLyoqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlXG5tb2R1bGUgQXJyYXkgPSBBcnJheVxubW9kdWxlIEF2bHRyZWUgPSBBdmx0cmVlXG5tb2R1bGUgQmFja3RyYWNlID0gQmFja3RyYWNlXG5tb2R1bGUgQmluYXJ5X3NlYXJjaCA9IEJpbmFyeV9zZWFyY2hcbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IEJpbmFyeV9zZWFyY2hhYmxlXG5tb2R1bGUgQmxpdCA9IEJsaXRcbm1vZHVsZSBCb29sID0gQm9vbFxubW9kdWxlIEJ1ZmZlciA9IEJ1ZmZlclxubW9kdWxlIEJ5dGVzID0gQnl0ZXNcbm1vZHVsZSBDaGFyID0gQ2hhclxubW9kdWxlIENvbXBhcmFibGUgPSBDb21wYXJhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3Jcbm1vZHVsZSBDb21wYXJpc29ucyA9IENvbXBhcmlzb25zXG5tb2R1bGUgQ29udGFpbmVyID0gQ29udGFpbmVyXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyXG5tb2R1bGUgRXF1YWwgPSBFcXVhbFxubW9kdWxlIEVycm9yID0gRXJyb3Jcbm1vZHVsZSBFeG4gPSBFeG5cbm1vZHVsZSBGaWVsZCA9IEZpZWxkXG5tb2R1bGUgRmxvYXQgPSBGbG9hdFxubW9kdWxlIEZsb2F0YWJsZSA9IEZsb2F0YWJsZVxubW9kdWxlIEZuID0gRm5cbm1vZHVsZSBGb3JtYXR0ZXIgPSBGb3JtYXR0ZXJcbm1vZHVsZSBIYXNoID0gSGFzaFxubW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXRcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlXG5tb2R1bGUgSGFzaGVyID0gSGFzaGVyXG5tb2R1bGUgSGFzaHRibCA9IEhhc2h0Ymxcbm1vZHVsZSBJZGVudGlmaWFibGUgPSBJZGVudGlmaWFibGVcbm1vZHVsZSBJbmRleGVkX2NvbnRhaW5lciA9IEluZGV4ZWRfY29udGFpbmVyXG5tb2R1bGUgSW5mbyA9IEluZm9cbm1vZHVsZSBJbnQgPSBJbnRcbm1vZHVsZSBJbnRfY29udmVyc2lvbnMgPSBJbnRfY29udmVyc2lvbnNcbm1vZHVsZSBJbnQzMiA9IEludDMyXG5tb2R1bGUgSW50NjMgPSBJbnQ2M1xubW9kdWxlIEludDY0ID0gSW50NjRcbm1vZHVsZSBJbnRhYmxlID0gSW50YWJsZVxubW9kdWxlIEludF9tYXRoID0gSW50X21hdGhcbm1vZHVsZSBJbnZhcmlhbnQgPSBJbnZhcmlhbnRcbm1vZHVsZSBMYXp5ID0gTGF6eVxubW9kdWxlIExpc3QgPSBMaXN0XG5tb2R1bGUgTWFwID0gTWFwXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZFxubW9kdWxlIE1vbmFkID0gTW9uYWRcbm1vZHVsZSBOYXRpdmVpbnQgPSBOYXRpdmVpbnRcbm1vZHVsZSBOb3RoaW5nID0gTm90aGluZ1xubW9kdWxlIE9wdGlvbiA9IE9wdGlvblxubW9kdWxlIE9wdGlvbl9hcnJheSA9IE9wdGlvbl9hcnJheVxubW9kdWxlIE9yX2Vycm9yID0gT3JfZXJyb3Jcbm1vZHVsZSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vblxubW9kdWxlIE9yZGVyaW5nID0gT3JkZXJpbmdcbm1vZHVsZSBQb2x5ID0gUG9seVxuXG5tb2R1bGUgUG9wY291bnQgPSBQb3Bjb3VudFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTEwXSB1c2UgW3BvcGNvdW50XSBmdW5jdGlvbnMgaW4gdGhlIGluZGl2aWR1YWwgaW50IG1vZHVsZXNcIl1cblxubW9kdWxlIFByZXR0eV9wcmludGVyID0gUHJldHR5X3ByaW50ZXJcbm1vZHVsZSBQcmludGYgPSBQcmludGZcbm1vZHVsZSBMaW5rZWRfcXVldWUgPSBMaW5rZWRfcXVldWVcbm1vZHVsZSBRdWV1ZSA9IFF1ZXVlXG5tb2R1bGUgUmFuZG9tID0gUmFuZG9tXG5tb2R1bGUgUmVmID0gUmVmXG5tb2R1bGUgUmVzdWx0ID0gUmVzdWx0XG5tb2R1bGUgU2VxdWVuY2UgPSBTZXF1ZW5jZVxubW9kdWxlIFNldCA9IFNldFxubW9kdWxlIFNleHBhYmxlID0gU2V4cGFibGVcbm1vZHVsZSBTaWduID0gU2lnblxubW9kdWxlIFNpZ25fb3JfbmFuID0gU2lnbl9vcl9uYW5cbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5tb2R1bGUgU3RhY2sgPSBTdGFja1xubW9kdWxlIFN0YWdlZCA9IFN0YWdlZFxubW9kdWxlIFN0cmluZyA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ2FibGUgPSBTdHJpbmdhYmxlXG5tb2R1bGUgU3lzID0gU3lzXG5tb2R1bGUgVCA9IFRcbm1vZHVsZSBUeXBlX2VxdWFsID0gVHlwZV9lcXVhbFxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBVbmlmb3JtX2FycmF5XG5tb2R1bGUgVW5pdCA9IFVuaXRcbm1vZHVsZSBVY2hhciA9IFVjaGFyXG5tb2R1bGUgVmFyaWFudCA9IFZhcmlhbnRcbm1vZHVsZSBXaXRoX3JldHVybiA9IFdpdGhfcmV0dXJuXG5tb2R1bGUgV29yZF9zaXplID0gV29yZF9zaXplXG5cbigqIEF2b2lkIGEgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gZm9yIHVzZXMgb2YgdGhlIHNpZ25hdHVyZXMgZGVmaW5lZCBpbiBbVF0uICopXG5pbmNsdWRlIFRcblxuKCogVGhpcyBpcyBhIGhhY2sgc28gdGhhdCBvZG9jIGNyZWF0ZXMgYmV0dGVyIGRvY3VtZW50YXRpb24uICopXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBfd2l0aF9jb21wYXJhYmxlICgqKiBAaW5saW5lICopXG5lbmRcblxuKCoqLyoqKVxuXG5tb2R1bGUgRXhwb3J0ZWRfZm9yX3NwZWNpZmljX3VzZXMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZpZWxkc2xpYiA9IEZpZWxkc2xpYlxuICBtb2R1bGUgR2xvYmFsaXplID0gR2xvYmFsaXplXG4gIG1vZHVsZSBPYmpfbG9jYWwgPSBPYmpfbG9jYWxcbiAgbW9kdWxlIFBweF9jb21wYXJlX2xpYiA9IFBweF9jb21wYXJlX2xpYlxuICBtb2R1bGUgUHB4X2VudW1lcmF0ZV9saWIgPSBQcHhfZW51bWVyYXRlX2xpYlxuICBtb2R1bGUgUHB4X2hhc2hfbGliID0gUHB4X2hhc2hfbGliXG4gIG1vZHVsZSBWYXJpYW50c2xpYiA9IFZhcmlhbnRzbGliXG5cbiAgbGV0IGFtX3Rlc3RpbmcgPSBhbV90ZXN0aW5nXG5lbmRcblxuKCoqLyoqKVxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gICgqIFtkZXJpdmluZyBoYXNoXSBpcyBtaXNzaW5nIGZvciBbYXJyYXldIGFuZCBbcmVmXSBzaW5jZSB0aGVzZSB0eXBlcyBhcmUgbXV0YWJsZS4gKilcbiAgdHlwZSAnYSBhcnJheSA9ICdhIEFycmF5LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9hcnJheSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiBpbnQgPSBBcnJheS5jb21wYXJlXG4gIGxldCBlcXVhbF9hcnJheSA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgLT4gYm9vbCA9IEFycmF5LmVxdWFsXG5cbiAgbGV0IGdsb2JhbGl6ZV9hcnJheSA6XG4gICAgJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSBhcnJheVtAb2NhbWwubG9jYWxdKSAtPiAnYSBhcnJheVxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDA5XylcbiAgICAgICAgOiAgKCgoYV9fMDA5X1tAb2NhbWwubG9jYWxdKSAtPiBhX18wMDlfKSAtPiAoYV9fMDA5XyBhcnJheVtAb2NhbWwubG9jYWxdKVxuICAgICAgICAgICAgLT4gYV9fMDA5XyBhcnJheSkgLT5cbiAgICAgIEFycmF5Lmdsb2JhbGl6ZVxuICA7O1xuXG4gIGxldCBhcnJheV9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBhcnJheSA9XG4gICAgQXJyYXkudF9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfYXJyYXkgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgYXJyYXkgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBBcnJheS5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgYXJyYXlfc2V4cF9ncmFtbWFyIDpcbiAgICAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgYXJyYXkgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gQXJyYXkudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBib29sID0gQm9vbC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfYm9vbCA9IChCb29sLmNvbXBhcmUgOiBib29sIC0+IGJvb2wgLT4gaW50KVxuICBsZXQgZXF1YWxfYm9vbCA9IChCb29sLmVxdWFsIDogYm9vbCAtPiBib29sIC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfYm9vbCA6IChib29sW0BvY2FtbC5sb2NhbF0pIC0+IGJvb2wpID1cbiAgICAoQm9vbC5nbG9iYWxpemUgOiAoYm9vbFtAb2NhbWwubG9jYWxdKSAtPiBib29sKVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX2Jvb2wgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGJvb2wgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBCb29sLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2Jvb2wgOiBib29sIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBCb29sLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgYm9vbF9vZl9zZXhwID0gKEJvb2wudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGJvb2wpXG4gIGxldCBzZXhwX29mX2Jvb2wgPSAoQm9vbC5zZXhwX29mX3QgOiBib29sIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChib29sX3NleHBfZ3JhbW1hciA6IGJvb2wgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gQm9vbC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBjaGFyID0gQ2hhci50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfY2hhciA9IChDaGFyLmNvbXBhcmUgOiBjaGFyIC0+IGNoYXIgLT4gaW50KVxuICBsZXQgZXF1YWxfY2hhciA9IChDaGFyLmVxdWFsIDogY2hhciAtPiBjaGFyIC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfY2hhciA6IChjaGFyW0BvY2FtbC5sb2NhbF0pIC0+IGNoYXIpID1cbiAgICAoQ2hhci5nbG9iYWxpemUgOiAoY2hhcltAb2NhbWwubG9jYWxdKSAtPiBjaGFyKVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX2NoYXIgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGNoYXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBDaGFyLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2NoYXIgOiBjaGFyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBDaGFyLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgY2hhcl9vZl9zZXhwID0gKENoYXIudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGNoYXIpXG4gIGxldCBzZXhwX29mX2NoYXIgPSAoQ2hhci5zZXhwX29mX3QgOiBjaGFyIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChjaGFyX3NleHBfZ3JhbW1hciA6IGNoYXIgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gQ2hhci50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBleG4gPSBFeG4udCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl9leG4gPSAoRXhuLnNleHBfb2ZfdCA6IGV4biAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGZsb2F0ID0gRmxvYXQudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2Zsb2F0ID0gKEZsb2F0LmNvbXBhcmUgOiBmbG9hdCAtPiBmbG9hdCAtPiBpbnQpXG4gIGxldCBlcXVhbF9mbG9hdCA9IChGbG9hdC5lcXVhbCA6IGZsb2F0IC0+IGZsb2F0IC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfZmxvYXQgOiAoZmxvYXRbQG9jYW1sLmxvY2FsXSkgLT4gZmxvYXQpID1cbiAgICAoRmxvYXQuZ2xvYmFsaXplIDogKGZsb2F0W0BvY2FtbC5sb2NhbF0pIC0+IGZsb2F0KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX2Zsb2F0IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBmbG9hdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEZsb2F0Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2Zsb2F0IDogZmxvYXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEZsb2F0Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgZmxvYXRfb2Zfc2V4cCA9IChGbG9hdC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gZmxvYXQpXG4gIGxldCBzZXhwX29mX2Zsb2F0ID0gKEZsb2F0LnNleHBfb2ZfdCA6IGZsb2F0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChmbG9hdF9zZXhwX2dyYW1tYXIgOiBmbG9hdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBGbG9hdC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBpbnQgPSBJbnQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludCA9IChJbnQuY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50KVxuICBsZXQgZXF1YWxfaW50ID0gKEludC5lcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9pbnQgOiAoaW50W0BvY2FtbC5sb2NhbF0pIC0+IGludCkgPVxuICAgIChJbnQuZ2xvYmFsaXplIDogKGludFtAb2NhbWwubG9jYWxdKSAtPiBpbnQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfaW50IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBJbnQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfaW50IDogaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBJbnQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBpbnRfb2Zfc2V4cCA9IChJbnQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGludClcbiAgbGV0IHNleHBfb2ZfaW50ID0gKEludC5zZXhwX29mX3QgOiBpbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGludF9zZXhwX2dyYW1tYXIgOiBpbnQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gSW50LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludDMyID0gSW50MzIudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludDMyID0gKEludDMyLmNvbXBhcmUgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQzMiA9IChJbnQzMi5lcXVhbCA6IGludDMyIC0+IGludDMyIC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfaW50MzIgOiAoaW50MzJbQG9jYW1sLmxvY2FsXSkgLT4gaW50MzIpID1cbiAgICAoSW50MzIuZ2xvYmFsaXplIDogKGludDMyW0BvY2FtbC5sb2NhbF0pIC0+IGludDMyKVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX2ludDMyIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnQzMiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEludDMyLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2ludDMyIDogaW50MzIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludDMyLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgaW50MzJfb2Zfc2V4cCA9IChJbnQzMi50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50MzIpXG4gIGxldCBzZXhwX29mX2ludDMyID0gKEludDMyLnNleHBfb2ZfdCA6IGludDMyIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChpbnQzMl9zZXhwX2dyYW1tYXIgOiBpbnQzMiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQzMi50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBpbnQ2NCA9IEludDY0LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9pbnQ2NCA9IChJbnQ2NC5jb21wYXJlIDogaW50NjQgLT4gaW50NjQgLT4gaW50KVxuICBsZXQgZXF1YWxfaW50NjQgPSAoSW50NjQuZXF1YWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX2ludDY0IDogKGludDY0W0BvY2FtbC5sb2NhbF0pIC0+IGludDY0KSA9XG4gICAgKEludDY0Lmdsb2JhbGl6ZSA6IChpbnQ2NFtAb2NhbWwubG9jYWxdKSAtPiBpbnQ2NClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF9pbnQ2NCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50NjQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBJbnQ2NC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9pbnQ2NCA6IGludDY0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBJbnQ2NC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGludDY0X29mX3NleHAgPSAoSW50NjQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGludDY0KVxuICBsZXQgc2V4cF9vZl9pbnQ2NCA9IChJbnQ2NC5zZXhwX29mX3QgOiBpbnQ2NCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoaW50NjRfc2V4cF9ncmFtbWFyIDogaW50NjQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gSW50NjQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2EgbGlzdCA9ICdhIExpc3QudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2xpc3QgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0IC0+IGludCA9IExpc3QuY29tcGFyZVxuICBsZXQgZXF1YWxfbGlzdCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0IC0+IGJvb2wgPSBMaXN0LmVxdWFsXG5cbiAgbGV0IGdsb2JhbGl6ZV9saXN0IDpcbiAgICAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIGxpc3RbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgbGlzdFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDYyXylcbiAgICAgICAgOiAgKCgoYV9fMDYyX1tAb2NhbWwubG9jYWxdKSAtPiBhX18wNjJfKSAtPiAoYV9fMDYyXyBsaXN0W0BvY2FtbC5sb2NhbF0pXG4gICAgICAgICAgICAtPiBhX18wNjJfIGxpc3QpIC0+XG4gICAgICBMaXN0Lmdsb2JhbGl6ZVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfbGlzdCA6XG4gICAgJ2EuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gJ2EgbGlzdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBMaXN0Lmhhc2hfZm9sZF90XG4gIDs7XG5cbiAgbGV0IGxpc3Rfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgbGlzdCA9XG4gICAgTGlzdC50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9saXN0IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIGxpc3QgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBMaXN0LnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBsaXN0X3NleHBfZ3JhbW1hciA6XG4gICAgJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIGxpc3QgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gTGlzdC50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIG5hdGl2ZWludCA9IE5hdGl2ZWludC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfbmF0aXZlaW50ID0gKE5hdGl2ZWludC5jb21wYXJlIDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBpbnQpXG4gIGxldCBlcXVhbF9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LmVxdWFsIDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX25hdGl2ZWludCA6IChuYXRpdmVpbnRbQG9jYW1sLmxvY2FsXSkgLT4gbmF0aXZlaW50KSA9XG4gICAgKE5hdGl2ZWludC5nbG9iYWxpemUgOiAobmF0aXZlaW50W0BvY2FtbC5sb2NhbF0pIC0+IG5hdGl2ZWludClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF9uYXRpdmVpbnQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IG5hdGl2ZWludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIE5hdGl2ZWludC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IE5hdGl2ZWludC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IG5hdGl2ZWludF9vZl9zZXhwID0gKE5hdGl2ZWludC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gbmF0aXZlaW50KVxuICBsZXQgc2V4cF9vZl9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LnNleHBfb2ZfdCA6IG5hdGl2ZWludCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgbGV0IChuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIDogbmF0aXZlaW50IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgTmF0aXZlaW50LnRfc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIG9wdGlvbiA9ICdhIE9wdGlvbi50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfb3B0aW9uIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gLT4gaW50ID1cbiAgICBPcHRpb24uY29tcGFyZVxuICA7O1xuXG4gIGxldCBlcXVhbF9vcHRpb24gOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gLT4gYm9vbCA9XG4gICAgT3B0aW9uLmVxdWFsXG4gIDs7XG5cbiAgbGV0IGdsb2JhbGl6ZV9vcHRpb24gOlxuICAgICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2Egb3B0aW9uW0BvY2FtbC5sb2NhbF0pIC0+ICdhIG9wdGlvblxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDg1XylcbiAgICAgICAgOiAgKCgoYV9fMDg1X1tAb2NhbWwubG9jYWxdKSAtPiBhX18wODVfKSAtPiAoYV9fMDg1XyBvcHRpb25bQG9jYW1sLmxvY2FsXSlcbiAgICAgICAgICAgIC0+IGFfXzA4NV8gb3B0aW9uKSAtPlxuICAgICAgT3B0aW9uLmdsb2JhbGl6ZVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfb3B0aW9uIDpcbiAgICAnYS5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAnYSBvcHRpb25cbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgT3B0aW9uLmhhc2hfZm9sZF90XG4gIDs7XG5cbiAgbGV0IG9wdGlvbl9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBvcHRpb24gPVxuICAgIE9wdGlvbi50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9vcHRpb24gOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2Egb3B0aW9uIC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgT3B0aW9uLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBvcHRpb25fc2V4cF9ncmFtbWFyIDpcbiAgICAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2Egb3B0aW9uIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IE9wdGlvbi50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIHJlZiA9ICdhIFJlZi50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfcmVmIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHJlZiAtPiAnYSByZWYgLT4gaW50ID0gUmVmLmNvbXBhcmVcbiAgbGV0IGVxdWFsX3JlZiA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgcmVmIC0+ICdhIHJlZiAtPiBib29sID0gUmVmLmVxdWFsXG5cbiAgbGV0IGdsb2JhbGl6ZV9yZWYgOiAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHJlZltAb2NhbWwubG9jYWxdKSAtPiAnYSByZWYgPVxuICAgIGZ1biAodHlwZSBhX18xMDJfKVxuICAgICAgICA6ICAoKChhX18xMDJfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzEwMl8pIC0+IChhX18xMDJfIHJlZltAb2NhbWwubG9jYWxdKVxuICAgICAgICAgICAgLT4gYV9fMTAyXyByZWYpIC0+XG4gICAgICBSZWYuZ2xvYmFsaXplXG4gIDs7XG5cbiAgbGV0IHJlZl9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSByZWYgPVxuICAgIFJlZi50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9yZWYgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgcmVmIC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgUmVmLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCByZWZfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHJlZiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gUmVmLnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgc3RyaW5nID0gU3RyaW5nLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9zdHJpbmcgPSAoU3RyaW5nLmNvbXBhcmUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGludClcbiAgbGV0IGVxdWFsX3N0cmluZyA9IChTdHJpbmcuZXF1YWwgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfc3RyaW5nIDogKHN0cmluZ1tAb2NhbWwubG9jYWxdKSAtPiBzdHJpbmcpID1cbiAgICAoU3RyaW5nLmdsb2JhbGl6ZSA6IChzdHJpbmdbQG9jYW1sLmxvY2FsXSkgLT4gc3RyaW5nKVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX3N0cmluZyA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gc3RyaW5nIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgU3RyaW5nLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX3N0cmluZyA6IHN0cmluZyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gU3RyaW5nLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgc3RyaW5nX29mX3NleHAgPSAoU3RyaW5nLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBzdHJpbmcpXG4gIGxldCBzZXhwX29mX3N0cmluZyA9IChTdHJpbmcuc2V4cF9vZl90IDogc3RyaW5nIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChzdHJpbmdfc2V4cF9ncmFtbWFyIDogc3RyaW5nIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IFN0cmluZy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBieXRlcyA9IEJ5dGVzLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9ieXRlcyA9IChCeXRlcy5jb21wYXJlIDogYnl0ZXMgLT4gYnl0ZXMgLT4gaW50KVxuICBsZXQgZXF1YWxfYnl0ZXMgPSAoQnl0ZXMuZXF1YWwgOiBieXRlcyAtPiBieXRlcyAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX2J5dGVzIDogKGJ5dGVzW0BvY2FtbC5sb2NhbF0pIC0+IGJ5dGVzKSA9XG4gICAgKEJ5dGVzLmdsb2JhbGl6ZSA6IChieXRlc1tAb2NhbWwubG9jYWxdKSAtPiBieXRlcylcbiAgOztcblxuICBsZXQgYnl0ZXNfb2Zfc2V4cCA9IChCeXRlcy50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gYnl0ZXMpXG4gIGxldCBzZXhwX29mX2J5dGVzID0gKEJ5dGVzLnNleHBfb2ZfdCA6IGJ5dGVzIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChieXRlc19zZXhwX2dyYW1tYXIgOiBieXRlcyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBCeXRlcy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSB1bml0ID0gVW5pdC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfdW5pdCA9IChVbml0LmNvbXBhcmUgOiB1bml0IC0+IHVuaXQgLT4gaW50KVxuICBsZXQgZXF1YWxfdW5pdCA9IChVbml0LmVxdWFsIDogdW5pdCAtPiB1bml0IC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfdW5pdCA6ICh1bml0W0BvY2FtbC5sb2NhbF0pIC0+IHVuaXQpID1cbiAgICAoVW5pdC5nbG9iYWxpemUgOiAodW5pdFtAb2NhbWwubG9jYWxdKSAtPiB1bml0KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX3VuaXQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHVuaXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBVbml0Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX3VuaXQgOiB1bml0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBVbml0Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdW5pdF9vZl9zZXhwID0gKFVuaXQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHVuaXQpXG4gIGxldCBzZXhwX29mX3VuaXQgPSAoVW5pdC5zZXhwX29mX3QgOiB1bml0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh1bml0X3NleHBfZ3JhbW1hciA6IHVuaXQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gVW5pdC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgKCoqIEZvcm1hdCBzdHVmZiAqKVxuXG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG5cbiAgKCoqIExpc3Qgb3BlcmF0b3JzICopXG5cbiAgaW5jbHVkZSBMaXN0LkluZml4XG5cbiAgKCoqIEludCBvcGVyYXRvcnMgYW5kIGNvbXBhcmlzb25zICopXG5cbiAgaW5jbHVkZSBJbnQuT1xuICBpbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICAoKiogRmxvYXQgb3BlcmF0b3JzICopXG5cbiAgaW5jbHVkZSBGbG9hdC5PX2RvdFxuXG4gICgqIFRoaXMgaXMgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgdG8gYmUgb3B0aW1pemVkIGF3YXkgaW4gbW9yZSBjb250ZXh0cy4gKilcblxuICAoKiogUmV2ZXJzZSBhcHBsaWNhdGlvbiBvcGVyYXRvci4gW3ggfD4gZyB8PiBmXSBpcyBlcXVpdmFsZW50IHRvIFtmIChnICh4KSldLiAqKVxuICBleHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoKCdhIC0+ICdiKVtAbG9jYWxfb3B0XSkgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5cbiAgKCoqIEFwcGxpY2F0aW9uIG9wZXJhdG9yLiBbZyBAQCBmIEBAIHhdIGlzIGVxdWl2YWxlbnQgdG8gW2cgKGYgKHgpKV0uICopXG4gIGV4dGVybmFsICggQEAgKSA6ICgoJ2EgLT4gJ2IpW0Bsb2NhbF9vcHRdKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcblxuICAoKiogQm9vbGVhbiBvcGVyYXRpb25zICopXG5cbiAgKCogVGhlc2UgbmVlZCB0byBiZSBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBnZXQgdGhlIGxhenkgYmVoYXZpb3IgKilcbiAgZXh0ZXJuYWwgKCAmJiApIDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlc2VxdWFuZFwiXG4gIGV4dGVybmFsICggfHwgKSA6IChib29sW0Bsb2NhbF9vcHRdKSAtPiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG4gIGV4dGVybmFsIG5vdCA6IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5cbiAgKCogVGhpcyBtdXN0IGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIGZvciB0aGUgd2FybmluZ3MgdG8gd29yayBwcm9wZXJseS4gKilcbiAgZXh0ZXJuYWwgaWdub3JlIDogKF9bQGxvY2FsX29wdF0pIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4gICgqKiBDb21tb24gc3RyaW5nIG9wZXJhdGlvbnMgKilcbiAgbGV0ICggXiApID0gU3RyaW5nLiggXiApXG5cbiAgKCoqIFJlZmVyZW5jZSBvcGVyYXRpb25zICopXG5cbiAgKCogRGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWxzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIHNraXBzIHRoZSBjYW1sX21vZGlmeSB3aGVuIHBvc3NpYmxlIGFuZFxuICAgICB0byBrZWVwIHJlZmVyZW5jZSB1bmJveGluZyB3b3JraW5nICopXG4gIGV4dGVybmFsICggISApIDogKCdhIHJlZltAbG9jYWxfb3B0XSkgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuICBleHRlcm5hbCByZWYgOiAnYSAtPiAoJ2EgcmVmW0Bsb2NhbF9vcHRdKSA9IFwiJW1ha2VtdXRhYmxlXCJcbiAgZXh0ZXJuYWwgKCA6PSApIDogKCdhIHJlZltAbG9jYWxfb3B0XSkgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5cbiAgKCoqIFBhaXIgb3BlcmF0aW9ucyAqKVxuXG4gIGxldCBmc3QgPSBmc3RcbiAgbGV0IHNuZCA9IHNuZFxuXG4gICgqKiBFeGNlcHRpb25zIHN0dWZmICopXG5cbiAgKCogRGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgc28gdGhhdCB0aGUgY29tcGlsZXIgbWF5IHJld3JpdGUgJyVyYWlzZScgYXMgJyVyZXJhaXNlJy4gKilcbiAgZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gXyA9IFwiJXJhaXNlXCJcblxuICBsZXQgZmFpbHdpdGggPSBmYWlsd2l0aFxuICBsZXQgaW52YWxpZF9hcmcgPSBpbnZhbGlkX2FyZ1xuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICAoKiogTWlzYyAqKVxuXG4gIGV4dGVybmFsIHBoeXNfZXF1YWwgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxXCJcbiAgZXh0ZXJuYWwgZm9yY2UgOiAoJ2EgTGF6eS50W0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWxhenlfZm9yY2VcIlxuZW5kXG5cbmluY2x1ZGUgRXhwb3J0XG5cbmluY2x1ZGUgQ29udGFpbmVyX2ludGYuRXhwb3J0ICgqKiBAaW5saW5lICopXG5cbmV4Y2VwdGlvbiBOb3RfZm91bmRfcyA9IE5vdF9mb3VuZF9zXG5cbigqIFdlIHBlcmZvcm0gdGhlc2Ugc2lkZSBlZmZlY3RzIGhlcmUgYmVjYXVzZSB3ZSB3YW50IHRoZW0gdG8gcnVuIGZvciBhbnkgY29kZSB0aGF0IHVzZXNcbiAgIFtCYXNlXS4gIElmIHRoaXMgd2VyZSBpbiBhbm90aGVyIG1vZHVsZSBpbiBbQmFzZV0gdGhhdCB3YXMgbm90IHVzZWQgaW4gc29tZSBwcm9ncmFtLFxuICAgdGhlbiB0aGUgc2lkZSBlZmZlY3RzIG1pZ2h0IG5vdCBiZSBydW4gaW4gdGhhdCBwcm9ncmFtLiAgVGhpcyB3aWxsIHJ1biBhcyBsb25nIGFzIHRoZVxuICAgcHJvZ3JhbSByZWZlcnMgdG8gYXQgbGVhc3Qgb25lIHZhbHVlIGRpcmVjdGx5IGluIFtCYXNlXTsgcmVmZXJyaW5nIHRvIHZhbHVlcyBpblxuICAgW0Jhc2UuQm9vbF0sIGZvciBleGFtcGxlLCBpcyBub3Qgc3VmZmljaWVudC4gKilcbmxldCAoKSA9IEJhY2t0cmFjZS5pbml0aWFsaXplX21vZHVsZSAoKVxuIiwibW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmVuZFxuIiwiaW5jbHVkZSBPY2FtbF9jb21tb24uTG9jYXRpb25cblxubGV0IHNldF9pbnB1dF9uYW1lIG5hbWUgPSBpbnB1dF9uYW1lIDo9IG5hbWVcbmxldCBzZXRfaW5wdXRfbGV4YnVmIGxleGJ1Zl9vcHQgPSBpbnB1dF9sZXhidWYgOj0gbGV4YnVmX29wdFxuXG5tb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgW0BAQHdhcm5pbmcgXCItMzdcIl1cblxuICB0eXBlIG9sZF90ICgqSUZfTk9UX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5lcnJvciAqKSA9IHtcbiAgICBsb2M6IHQ7XG4gICAgbXNnOiBzdHJpbmc7XG4gICAgc3ViOiBvbGRfdCBsaXN0O1xuICAgIGlmX2hpZ2hsaWdodDogc3RyaW5nO1xuICB9XG5cbiAgdHlwZSBsb2NhdGlvbl9yZXBvcnRfa2luZCAoKklGX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5yZXBvcnRfa2luZCAqKSA9XG4gIHwgUmVwb3J0X2Vycm9yXG4gIHwgUmVwb3J0X3dhcm5pbmcgb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X3dhcm5pbmdfYXNfZXJyb3Igb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X2FsZXJ0IG9mIHN0cmluZ1xuICB8IFJlcG9ydF9hbGVydF9hc19lcnJvciBvZiBzdHJpbmdcblxuICB0eXBlIGxvY2F0aW9uX21zZyA9IChGb3JtYXQuZm9ybWF0dGVyIC0+IHVuaXQpIGxvY1xuXG4gIHR5cGUgbG9jYXRpb25fcmVwb3J0ICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLnJlcG9ydCAqKSA9IHtcbiAgICBraW5kIDogbG9jYXRpb25fcmVwb3J0X2tpbmQ7XG4gICAgbWFpbiA6IGxvY2F0aW9uX21zZztcbiAgICBzdWIgOiBsb2NhdGlvbl9tc2cgbGlzdDtcbiAgfVxuXG4gIHR5cGUgdCAoKklGX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5lcnJvciAqKSAoKklGX05PVF9BVF9MRUFTVCA0MDggPSBvbGRfdCAqKVxuICAoKiogT24gb2NhbWwgPj0gNC4wODogW3RdIGlzIGEgW2xvY2F0aW9uX3JlcG9ydF0gZm9yIHdoaWNoIFtsb2NhdGlvbl9yZXBvcnRfa2luZF0gbXVzdCBiZSBbUmVwb3J0X2Vycm9yXS4gKilcblxuICB0eXBlIHZlcnNpb25fc3BlY2lmaWNfdCA9IFtgTmV3X2Vycm9yIG9mIGxvY2F0aW9uX3JlcG9ydCB8IGBPbGRfZXJyb3Igb2Ygb2xkX3RdXG5cbiAgbGV0IHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IDogdCAtPiB2ZXJzaW9uX3NwZWNpZmljX3QgPSBmdW4geCAtPlxuICAgICgqSUZfQVRfTEVBU1QgNDA4IGBOZXdfZXJyb3IgeCAqKVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBgT2xkX2Vycm9yIHggKilcblxuICBsZXQgaXNfd2VsbF9mb3JtZWQgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBraW5kID0gUmVwb3J0X2Vycm9yOyBfIH0gLT4gdHJ1ZVxuICAgIHwgYE5ld19lcnJvciBfIC0+IGZhbHNlXG4gICAgfCBgT2xkX2Vycm9yIF8gLT4gdHJ1ZVxuXG4gIGxldCBzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIChtc2cgOiBsb2NhdGlvbl9tc2cpID0gRm9ybWF0LmFzcHJpbnRmIFwiJXRcIiBtc2cudHh0XG5cbiAgbGV0IG1haW5fbXNnIGVycm9yID1cbiAgICBtYXRjaCB2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCBlcnJvciB3aXRoXG4gICAgfCBgTmV3X2Vycm9yIHsgbWFpbjsgXyB9IC0+XG4gICAgICAgIHsgdHh0ID0gc3RyaW5nX29mX2xvY2F0aW9uX21zZyBtYWluOyBsb2MgPSBtYWluLmxvYyB9XG4gICAgfCBgT2xkX2Vycm9yIHsgbXNnOyBsb2M7IF8gfSAtPiB7IHR4dCA9IG1zZzsgbG9jIH1cblxuICBsZXQgc3ViX21zZ3MgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBzdWI7IF8gfSAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gZXJyIC0+IHsgdHh0ID0gc3RyaW5nX29mX2xvY2F0aW9uX21zZyBlcnI7IGxvYyA9IGVyci5sb2MgfSlcbiAgICAgICAgICBzdWJcbiAgICB8IGBPbGRfZXJyb3IgeyBzdWI7IF8gfSAtPlxuICAgICAgICBsZXQgcmVjIGRlZXBseV9mbGF0dGVuZWRfc3ViX21zZ3MgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICAgIHwgeyBsb2M7IG1zZzsgc3ViOyBfIH0gOjogdGFpbCAtPlxuICAgICAgICAgICAgICBkZWVwbHlfZmxhdHRlbmVkX3N1Yl9tc2dzICh7IHR4dCA9IG1zZzsgbG9jIH0gOjogYWNjKSAoc3ViIEAgdGFpbClcbiAgICAgICAgaW5cbiAgICAgICAgZGVlcGx5X2ZsYXR0ZW5lZF9zdWJfbXNncyBbXSBzdWJcblxuICBsZXQgb2ZfZXhuIGV4biA9XG4gICAgKCpJRl9BVF9MRUFTVCA0MDYgbWF0Y2ggZXJyb3Jfb2ZfZXhuIGV4biB3aXRoIHwgU29tZSAoYE9rIGUpIC0+IFNvbWUgZSB8IE5vbmUgfCBTb21lIGBBbHJlYWR5X2Rpc3BsYXllZCAtPiBOb25lICopXG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA2IGVycm9yX29mX2V4biBleG4qKVxuXG4gIGxldCBfc2V0X21haW5fbXNnX29sZCBlcnJvciBtc2cgPSB7IGVycm9yIHdpdGggbXNnIH1cblxuICBsZXQgX3NldF9tYWluX21zZ19uZXcgZXJyb3IgbXNnID1cbiAgICBsZXQgdHh0IHBwZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIG1zZyBpblxuICAgIGxldCBtYWluID0geyBlcnJvci5tYWluIHdpdGggdHh0IH0gaW5cbiAgICB7IGVycm9yIHdpdGggbWFpbiB9XG5cbiAgbGV0IHNldF9tYWluX21zZyBlcnJvciBtc2cgPVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbXNnX29sZCBlcnJvciBtc2cqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9tc2dfbmV3IGVycm9yIG1zZyopXG5cbiAgbGV0IF9tYWtlX2Vycm9yX29mX21lc3NhZ2Vfb2xkIH5zdWIgeyBsb2M7IHR4dCB9ID1cbiAgICBsZXQgc3ViID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geyBsb2M7IHR4dCB9IC0+IHsgbG9jOyBtc2cgPSB0eHQ7IHN1YiA9IFtdOyBpZl9oaWdobGlnaHQgPSB0eHQgfSlcbiAgICAgICAgc3ViXG4gICAgaW5cbiAgICB7IGxvYzsgbXNnID0gdHh0OyBzdWI7IGlmX2hpZ2hsaWdodCA9IHR4dCB9XG5cbiAgbGV0IF9tYWtlX2Vycm9yX29mX21lc3NhZ2VfbmV3IH5zdWIgeyBsb2M7IHR4dCB9ID1cbiAgICBsZXQgbWtfdHh0IHggcHBmID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgeCBpblxuICAgIGxldCBtayBsb2MgeCA9IHsgbG9jOyB0eHQgPSBta190eHQgeCB9IGluXG4gICAge1xuICAgICAga2luZCA9IFJlcG9ydF9lcnJvcjtcbiAgICAgIG1haW4gPSBtayBsb2MgdHh0O1xuICAgICAgc3ViID0gTGlzdC5tYXAgKGZ1biB7IGxvYzsgdHh0IH0gLT4gbWsgbG9jIHR4dCkgc3ViO1xuICAgIH1cblxuICBsZXQgbWFrZSB+c3ViIG1zZyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9tYWtlX2Vycm9yX29mX21lc3NhZ2Vfb2xkIH5zdWIgbXNnKilcbiAgICAoKklGX0FUX0xFQVNUIDQwOCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX25ldyB+c3ViIG1zZyopXG5cbiAgbGV0IF9zZXRfbWFpbl9sb2Nfb2xkIGVycm9yIGxvYyA9IHsgZXJyb3Igd2l0aCBsb2MgfVxuXG4gIGxldCBfc2V0X21haW5fbG9jX25ldyBlcnJvciBsb2MgPVxuICAgIGxldCBtYWluID0geyBlcnJvci5tYWluIHdpdGggbG9jIH0gaW5cbiAgICB7IGVycm9yIHdpdGggbWFpbiB9XG5cbiAgbGV0IHNldF9tYWluX2xvYyBlcnJvciBsb2MgPVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbG9jX29sZCBlcnJvciBsb2MqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9sb2NfbmV3IGVycm9yIGxvYyopXG5lbmRcblxubGV0IHJhaXNlX2Vycm9yZiA/bG9jIG1zZyA9IHJhaXNlX2Vycm9yZiA/bG9jIG1zZ1xuIiwiaW5jbHVkZSBPY2FtbF9jb21tb24uTG9uZ2lkZW50XG5cbmxldCBwYXJzZSBzID1cbiAgKCpJRl9OT1RfQVRfTEVBU1QgNDExIHBhcnNlIHMgKilcbiAgKCpJRl9BVF9MRUFTVCA0MTEgT2NhbWxfY29tbW9uLlBhcnNlLmxvbmdpZGVudCBAQCBMZXhpbmcuZnJvbV9zdHJpbmcgQEAgcyAqKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgIHwgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBleGNlcHQgWydsJ10sIFsnTCddIGFuZCBbJ24nXSBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgICBbe2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfV0uXG5cbiAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiogQXR0cmlidXRlcyBzdWNoIGFzIFtbXFxAaWQgQVJHXV0gYW5kIFtbXFxAXFxAaWQgQVJHXV0uXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqKiBFeHRlbnNpb24gcG9pbnRzIHN1Y2ggYXMgW1slaWQgQVJHXSBhbmQgWyUlaWQgQVJHXV0uXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCoqIFs6IFRdIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbPyBQXSAgb3IgIFs/IFAgd2hlbiBFXSwgaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55ICAoKiogW19dICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1B0eXBfYXJyb3cobGJsLCBUMSwgVDIpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUMSAtPiBUMl0gICAgd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX3R1cGxlKFtUMSA7IC4uLiA7IFRuXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCB0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gICAgIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jbGFzcyh0Y29uc3RyLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbI3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgI3Rjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSAjdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgICgqKiBbVCBhcyAnYV0uICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICgqKiBbUHR5cF92YXJpYW50KFtgQTtgQl0sIGZsYWcsIGxhYmVscyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1sgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPiBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogWydhMSAuLi4gJ2FuLiBUXVxuXG4gICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1bUHBhdF9jb25zdHJhaW50XX0gbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzpcblxuICAgICAgICAgICAge1tsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUID0gZSAuLi5dfVxuICAgICAgICAgICAgIC0gVW5kZXIge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgICB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9W1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfVtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH1bUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9W3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dLiAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICgqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuICAgICAgICAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAgICAgICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLlxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbYEFdICAgICAgICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFRdICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCoqIHsyIFBhdHRlcm5zfSAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sIFsxbl0gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbQyBQXSAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW10sIFApXVxuICAgICAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFthOyBiXSwgUCldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2BBIFBdIHdoZW4gW3BhdF0gaXMgW1NvbWUgUF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQcGF0X3JlY29yZChbKGwxLCBQMSkgOyAuLi4gOyAobG4sIFBuKV0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfVxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuOyBffV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX1cblxuICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0ICAoKiogUGF0dGVybiBbW3wgUDE7IC4uLjsgUG4gfF1dICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogUGF0dGVybiBbWyVpZF1dICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBjb25zdGFudCBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLFxuICAgICAgICAgICAgICBbMUxdLCBbMW5dICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3QgICgqKiBbZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2Z1bihsYmwsIGV4cDAsIFAsIEUxKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seVxuICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBbZnVuIFAxIFAyIC4uIFBuIC0+IEUxXSBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgICAtIFtsZXQgZiBQID0gRV0gaXMgcmVwcmVzZW50ZWQgdXNpbmdcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGV4cF9hcHBseShFMCwgWyhsMSwgRTEpIDsgLi4uIDsgKGxuLCBFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmVcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19ICAgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSxcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0gKGxhYmVsbGVkIGFyZ3VtZW50cykgb3JcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgIC0gW0MgRV0gICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dICAgICAgICAgd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICAoKiogW0UubF0gKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICAgIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b31bVXB0b119XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99W0Rvd250b119XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFsoRSA6PiBUKV0gICAgICB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW25ldyBNLmNdICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICAgICB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9XG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqKiB7MiBWYWx1ZSBkZXNjcmlwdGlvbnN9ICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IXZhbHVlX2Rlc2NyaXB0aW9ufSByZXByZXNlbnRzOlxuICAgICAgLSBbdmFsIHg6IFRdLFxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV1cbiAgKilcblxuICAoKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiogWygnYTEsLi4uJ2FuKSB0XSAqKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKipcbiAgICAgSGVyZSBhcmUgdHlwZSBkZWNsYXJhdGlvbnMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uLFxuICAgICBmb3IgdmFyaW91cyB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9W3B0eXBlX2tpbmRdfVxuICAgICAgICAgICAgIGFuZCB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX21hbmlmZXN0fVtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcbiAgIC0gW3R5cGUgdF0gICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn1bUHR5cGVfb3Blbl19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdCAgKCoqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtsIDogVCBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKlxuICAgICAtIFt7IC4uLjsgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfSxcbiAgICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19LlxuXG4gICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX3ZhcnM6IHN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbn1cbiAgICAgIHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBvZjpcbiAgICAtIFtDIG9mIFQxICogLi4uICogVG5dICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0M6IFQwXSAgICAgICAgICAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDIG9mIHsuLi59XSAgICAgICAgICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAtIFtDOiB7Li4ufSAtPiBUMF0gICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS5cbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiAuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl0gKilcbiAgICB9XG4gICgqKlxuICAgICBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAgKFt0eXBlIHQgKz0gLi4uXSkuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQ6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBbUGV4dF9kZWNsKGV4aXN0ZW50aWFscywgY19hcmdzLCB0X29wdCldXG4gICAgICAgICAgICBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG4gICAgICAgICAgICAtIFtDIG9mIFQxICogLi4uICogVG5dIHdoZW46XG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtOb25lXS59fVxuICAgICAgICAgICAgLSBbQzogVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6ICdhLi4uIC4gVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1snYTsuLi5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi4gOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogLSBbY11cbiAgICAgICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3Nfc2lnbmF0dXJlXSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9W3Bjc2lnX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9W1B0eXBfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGUgICgqKiBbaW5oZXJpdCBDVF0gKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gICAgfCBQY3RmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICAgVGhleSBhcmUgYWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbY10gYW5kIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2Z1bihsYmwsIGV4cDAsIFAsIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoIFs/XVxuICAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGUgICgqKiBbKENFIDogQ1QpXSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNsYXNzX3N0cnVjdHVyZX0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdChzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9W3Bjc3RyX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fVtQcGF0X2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRV1cbiAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XVxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdmFsIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX0pXG4gICAgICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByICAoKiogW21vZHVsZSB0eXBlIG9mIE1FXSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbKG1vZHVsZSBNKV0gKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXQgICgqKiBbKCldICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbTmFtZWQobmFtZSwgTVQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgICAgIC0gWyhfIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbTm9uZV0gKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSBYID0gTV0gYW5kIFttb2R1bGUgWCA6IE1UXSAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG5dICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9zdWJzdGl0dXRpb25dIHJlcHJlc2VudHMgW1MgOj0gTV0gKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV90eXBlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAtIFtTID0gTVRdLFxuICAgICAtIFtTXSBmb3IgYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sXG4gICAgICAgd2hlbiB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9W3BtdGRfdHlwZV19IGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgKHNpbGVuY2VzIHRoZSBcInVzZWQgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgICAgLSBbb3BlbiAgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZXNjcmlwdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbWF0gKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZSAgKCoqIFtzdHJ1Y3QgLi4uIGVuZF0gKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwciAgKCoqIFtNRTEoTUUyKV0gKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmc6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMxXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMxXCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgVGhvbWFzIEdhemFnbmFpcmUsIE9DYW1sUHJvICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgRmFicmljZSBMZSBGZXNzYW50LCBJTlJJQSBTYWNsYXkgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBIb25nYm8gWmhhbmcsIFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBPcmlnaW5hbCBDb2RlIGZyb20gQmVyLW1ldGFvY2FtbCwgbW9kaWZpZWQgZm9yIDMuMTIuMCBhbmQgZml4ZWQgKilcbigqIFByaW50aW5nIGNvZGUgZXhwcmVzc2lvbnMgKilcbigqIEF1dGhvcnM6ICBFZCBQaXp6aSwgRmFicmljZSBMZSBGZXNzYW50ICopXG4oKiBFeHRlbnNpdmUgUmV3cml0ZTogSG9uZ2JvIFpoYW5nOiBVbml2ZXJzaXR5IG9mIFBlbm5zeWx2YW5pYSAqKVxuKCogVE9ETyBtb3JlIGZpbmUtZ3JhaW5lZCBwcmVjZWRlbmNlIHByZXR0eS1wcmludGluZyAqKVxuXG5vcGVuIEFzdF80MTRcbm9wZW4gQXN0dHlwZXNcbm9wZW4gRm9ybWF0XG5vcGVuIExvY2F0aW9uXG5vcGVuIExvbmdpZGVudFxub3BlbiBQYXJzZXRyZWVcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IGRlZmF1bHQgfCBTb21lIHggLT4geFxuZW5kXG5cbmxldCB2YXJpZnlfdHlwZV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICBsZXQgY2hlY2tfdmFyaWFibGUgdmwgbG9jIHYgPVxuICAgIGlmIExpc3QubWVtIHYgdmwgdGhlblxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ2YXJpYWJsZSBpbiBzY29wZSBzeW50YXggZXJyb3I6ICVzXCIgdlxuICBpblxuICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB2YXJfbmFtZXMgaW5cbiAgbGV0IHJlYyBsb29wIHQgPVxuICAgIGxldCBkZXNjID1cbiAgICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgIHwgUHR5cF92YXIgeCAtPlxuICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHg7XG4gICAgICAgICAgUHR5cF92YXIgeFxuICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKSB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzXG4gICAgICAgIC0+XG4gICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+IFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPiBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT5cbiAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyBzdHJpbmc7XG4gICAgICAgICAgUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAoTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKVxuICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW4gdiAtPiBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB2LnR4dClcbiAgICAgICAgICAgIHN0cmluZ19sc3Q7XG4gICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgaW5cbiAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgfCBSdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPiBSdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICBpblxuICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgbGV0IHBvZl9kZXNjID1cbiAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgIHwgT3RhZyAobGFiZWwsIHQpIC0+IE90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICBpblxuICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gIGluXG4gIGxvb3AgdFxuXG5sZXQgcHJlZml4X3N5bWJvbHMgPSBbICchJzsgJz8nOyAnficgXVxuXG5sZXQgaW5maXhfc3ltYm9scyA9XG4gIFsgJz0nOyAnPCc7ICc+JzsgJ0AnOyAnXic7ICd8JzsgJyYnOyAnKyc7ICctJzsgJyonOyAnLyc7ICckJzsgJyUnOyAnIycgXVxuXG4oKiB0eXBlIGZpeGl0eSA9IEluZml4fCBQcmVmaXggICopXG5sZXQgc3BlY2lhbF9pbmZpeF9zdHJpbmdzID1cbiAgWyBcImFzclwiOyBcImxhbmRcIjsgXCJsb3JcIjsgXCJsc2xcIjsgXCJsc3JcIjsgXCJseG9yXCI7IFwibW9kXCI7IFwib3JcIjsgXCI6PVwiOyBcIiE9XCI7IFwiOjpcIiBdXG5cbmxldCBsZXRvcCBzID1cbiAgU3RyaW5nLmxlbmd0aCBzID4gM1xuICAmJiBzLlswXSA9ICdsJ1xuICAmJiBzLlsxXSA9ICdlJ1xuICAmJiBzLlsyXSA9ICd0J1xuICAmJiBMaXN0Lm1lbSBzLlszXSBpbmZpeF9zeW1ib2xzXG5cbmxldCBhbmRvcCBzID1cbiAgU3RyaW5nLmxlbmd0aCBzID4gM1xuICAmJiBzLlswXSA9ICdhJ1xuICAmJiBzLlsxXSA9ICduJ1xuICAmJiBzLlsyXSA9ICdkJ1xuICAmJiBMaXN0Lm1lbSBzLlszXSBpbmZpeF9zeW1ib2xzXG5cbigqIGRldGVybWluZXMgaWYgdGhlIHN0cmluZyBpcyBhbiBpbmZpeCBzdHJpbmcuXG4gICBjaGVja3MgYmFja3dhcmRzLCBmaXJzdCBhbGxvd2luZyBhIHJlbmFtaW5nIHBvc3RmaXggKFwiXzEwMlwiKSB3aGljaFxuICAgbWF5IGhhdmUgcmVzdWx0ZWQgZnJvbSBQZXhwIC0+IFRleHAgLT4gUGV4cCB0cmFuc2xhdGlvbiwgdGhlbiBjaGVja2luZ1xuICAgaWYgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBhcmUgdmFsaWQgaW5maXhcbiAgIGNoYXJhY3RlcnMuICopXG5sZXQgZml4aXR5X29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJcIiAtPiBgTm9ybWFsXG4gIHwgcyB3aGVuIExpc3QubWVtIHMgc3BlY2lhbF9pbmZpeF9zdHJpbmdzIC0+IGBJbmZpeCBzXG4gIHwgcyB3aGVuIExpc3QubWVtIHMuWzBdIGluZml4X3N5bWJvbHMgLT4gYEluZml4IHNcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcy5bMF0gcHJlZml4X3N5bWJvbHMgLT4gYFByZWZpeCBzXG4gIHwgcyB3aGVuIHMuWzBdID0gJy4nIC0+IGBNaXhmaXggc1xuICB8IHMgd2hlbiBsZXRvcCBzIC0+IGBMZXRvcCBzXG4gIHwgcyB3aGVuIGFuZG9wIHMgLT4gYEFuZG9wIHNcbiAgfCBfIC0+IGBOb3JtYWxcblxubGV0IHZpZXdfZml4aXR5X29mX2V4cCA9IGZ1bmN0aW9uXG4gIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGw7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgZml4aXR5X29mX3N0cmluZyBsXG4gIHwgXyAtPiBgTm9ybWFsXG5cbmxldCBpc19pbmZpeCA9IGZ1bmN0aW9uIGBJbmZpeCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgaXNfbWl4Zml4ID0gZnVuY3Rpb24gYE1peGZpeCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgaXNfa3dkb3AgPSBmdW5jdGlvbiBgTGV0b3AgXyB8IGBBbmRvcCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgZmlyc3RfaXMgYyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBzdHIuWzBdID0gY1xubGV0IGxhc3RfaXMgYyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBzdHIuW1N0cmluZy5sZW5ndGggc3RyIC0gMV0gPSBjXG5sZXQgZmlyc3RfaXNfaW4gY3Mgc3RyID0gc3RyIDw+IFwiXCIgJiYgTGlzdC5tZW0gc3RyLlswXSBjc1xuXG4oKiB3aGljaCBpZGVudGlmaWVycyBhcmUgaW4gZmFjdCBvcGVyYXRvcnMgbmVlZGluZyBwYXJlbnRoZXNlcyAqKVxubGV0IG5lZWRzX3BhcmVucyB0eHQgPVxuICBsZXQgZml4ID0gZml4aXR5X29mX3N0cmluZyB0eHQgaW5cbiAgaXNfaW5maXggZml4IHx8IGlzX21peGZpeCBmaXggfHwgaXNfa3dkb3AgZml4XG4gIHx8IGZpcnN0X2lzX2luIHByZWZpeF9zeW1ib2xzIHR4dFxuXG4oKiBzb21lIGluZml4ZXMgbmVlZCBzcGFjZXMgYXJvdW5kIHBhcmVucyB0byBhdm9pZCBjbGFzaGVzIHdpdGggY29tbWVudFxuICAgc3ludGF4ICopXG5sZXQgbmVlZHNfc3BhY2VzIHR4dCA9IGZpcnN0X2lzICcqJyB0eHQgfHwgbGFzdF9pcyAnKicgdHh0XG5sZXQgc3RyaW5nX2xvYyBwcGYgeCA9IGZwcmludGYgcHBmIFwiJXNcIiB4LnR4dFxuXG4oKiBhZGQgcGFyZW50aGVzZXMgdG8gYmluZGVycyB3aGVuIHRoZXkgYXJlIGluIGZhY3QgaW5maXggb3IgcHJlZml4IG9wZXJhdG9ycyAqKVxubGV0IHByb3RlY3RfaWRlbnQgcHBmIHR4dCA9XG4gIGxldCBmb3JtYXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICBpZiBub3QgKG5lZWRzX3BhcmVucyB0eHQpIHRoZW4gXCIlc1wiXG4gICAgZWxzZSBpZiBuZWVkc19zcGFjZXMgdHh0IHRoZW4gXCIoQDslc0A7KVwiXG4gICAgZWxzZSBcIiglcylcIlxuICBpblxuICBmcHJpbnRmIHBwZiBmb3JtYXQgdHh0XG5cbmxldCBwcm90ZWN0X2xvbmdpZGVudCBwcGYgcHJpbnRfbG9uZ2lkZW50IGxvbmdwcmVmaXggdHh0ID1cbiAgbGV0IGZvcm1hdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgIGlmIG5vdCAobmVlZHNfcGFyZW5zIHR4dCkgdGhlbiBcIiVhLiVzXCJcbiAgICBlbHNlIGlmIG5lZWRzX3NwYWNlcyB0eHQgdGhlbiBcIiVhLihAOyVzQDspXCJcbiAgICBlbHNlIFwiJWEuKCVzKVwiXG4gIGluXG4gIGZwcmludGYgcHBmIGZvcm1hdCBwcmludF9sb25naWRlbnQgbG9uZ3ByZWZpeCB0eHRcblxudHlwZSBzcGFjZV9mb3JtYXR0ZXIgPSAodW5pdCwgRm9ybWF0LmZvcm1hdHRlciwgdW5pdCkgZm9ybWF0XG5cbmxldCBvdmVycmlkZSA9IGZ1bmN0aW9uIE92ZXJyaWRlIC0+IFwiIVwiIHwgRnJlc2ggLT4gXCJcIlxuXG4oKiB2YXJpYW5jZSBlbmNvZGluZzogbmVlZCB0byBzeW5jIHVwIHdpdGggdGhlIFtwYXJzZXIubWx5XSAqKVxubGV0IHR5cGVfdmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IE5vVmFyaWFuY2UgLT4gXCJcIlxuICB8IENvdmFyaWFudCAtPiBcIitcIlxuICB8IENvbnRyYXZhcmlhbnQgLT4gXCItXCJcblxubGV0IHR5cGVfaW5qZWN0aXZpdHkgPSBmdW5jdGlvbiBOb0luamVjdGl2aXR5IC0+IFwiXCIgfCBJbmplY3RpdmUgLT4gXCIhXCJcblxudHlwZSBjb25zdHJ1Y3QgPVxuICBbIGBjb25zIG9mIGV4cHJlc3Npb24gbGlzdFxuICB8IGBsaXN0IG9mIGV4cHJlc3Npb24gbGlzdFxuICB8IGBuaWxcbiAgfCBgbm9ybWFsXG4gIHwgYHNpbXBsZSBvZiBMb25naWRlbnQudFxuICB8IGB0dXBsZSBdXG5cbmxldCB2aWV3X2V4cHIgeCA9XG4gIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCIoKVwiOyBfIH0sIF8pIC0+IGB0dXBsZVxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgXykgLT4gYG5pbFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSwgU29tZSBfKSAtPlxuICAgICAgbGV0IHJlYyBsb29wIGV4cCBhY2MgPVxuICAgICAgICBtYXRjaCBleHAgd2l0aFxuICAgICAgICB8IHtcbiAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgXyk7XG4gICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgfSAtPlxuICAgICAgICAgICAgKExpc3QucmV2IGFjYywgdHJ1ZSlcbiAgICAgICAgfCB7XG4gICAgICAgICBwZXhwX2Rlc2MgPVxuICAgICAgICAgICBQZXhwX2NvbnN0cnVjdFxuICAgICAgICAgICAgICggeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sXG4gICAgICAgICAgICAgICBTb21lIHsgcGV4cF9kZXNjID0gUGV4cF90dXBsZSBbIGUxOyBlMiBdOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAgICAgICAgKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICBsb29wIGUyIChlMSA6OiBhY2MpXG4gICAgICAgIHwgZSAtPiAoTGlzdC5yZXYgKGUgOjogYWNjKSwgZmFsc2UpXG4gICAgICBpblxuICAgICAgbGV0IGxzLCBiID0gbG9vcCB4IFtdIGluXG4gICAgICBpZiBiIHRoZW4gYGxpc3QgbHMgZWxzZSBgY29ucyBsc1xuICB8IFBleHBfY29uc3RydWN0ICh4LCBOb25lKSAtPiBgc2ltcGxlIHgudHh0XG4gIHwgXyAtPiBgbm9ybWFsXG5cbmxldCBpc19zaW1wbGVfY29uc3RydWN0IDogY29uc3RydWN0IC0+IGJvb2wgPSBmdW5jdGlvblxuICB8IGBuaWwgfCBgdHVwbGUgfCBgbGlzdCBfIHwgYHNpbXBsZSBfIC0+IHRydWVcbiAgfCBgY29ucyBfIHwgYG5vcm1hbCAtPiBmYWxzZVxuXG5sZXQgcHAgPSBmcHJpbnRmXG5cbnR5cGUgY3R4dCA9IHsgcGlwZSA6IGJvb2w7IHNlbWkgOiBib29sOyBpZnRoZW5lbHNlIDogYm9vbCB9XG5cbmxldCByZXNldF9jdHh0ID0geyBwaXBlID0gZmFsc2U7IHNlbWkgPSBmYWxzZTsgaWZ0aGVuZWxzZSA9IGZhbHNlIH1cbmxldCB1bmRlcl9waXBlIGN0eHQgPSB7IGN0eHQgd2l0aCBwaXBlID0gdHJ1ZSB9XG5sZXQgdW5kZXJfc2VtaSBjdHh0ID0geyBjdHh0IHdpdGggc2VtaSA9IHRydWUgfVxubGV0IHVuZGVyX2lmdGhlbmVsc2UgY3R4dCA9IHsgY3R4dCB3aXRoIGlmdGhlbmVsc2UgPSB0cnVlIH1cbigqXG5sZXQgcmVzZXRfc2VtaSBjdHh0ID0geyBjdHh0IHdpdGggc2VtaT1mYWxzZSB9XG5sZXQgcmVzZXRfaWZ0aGVuZWxzZSBjdHh0ID0geyBjdHh0IHdpdGggaWZ0aGVuZWxzZT1mYWxzZSB9XG5sZXQgcmVzZXRfcGlwZSBjdHh0ID0geyBjdHh0IHdpdGggcGlwZT1mYWxzZSB9XG4qKVxuXG5sZXQgbGlzdCA6XG4gICAgICAnYS5cbiAgICAgID9zZXA6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/Zmlyc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/bGFzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+XG4gICAgICBGb3JtYXQuZm9ybWF0dGVyIC0+XG4gICAgICAnYSBsaXN0IC0+XG4gICAgICB1bml0ID1cbiBmdW4gP3NlcCA/Zmlyc3QgP2xhc3QgZnUgZiB4cyAtPlxuICBsZXQgZmlyc3QgPSBtYXRjaCBmaXJzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NilcbiAgYW5kIGxhc3QgPSBtYXRjaCBsYXN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgc2VwID0gbWF0Y2ggc2VwIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIkAgXCIgOiBfIGZvcm1hdDYpIGluXG4gIGxldCBhdXggZiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgWyB4IF0gLT4gZnUgZiB4XG4gICAgfCB4cyAtPlxuICAgICAgICBsZXQgcmVjIGxvb3AgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBbIHggXSAtPiBmdSBmIHhcbiAgICAgICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgICAgICAgZnUgZiB4O1xuICAgICAgICAgICAgICBwcCBmIHNlcDtcbiAgICAgICAgICAgICAgbG9vcCBmIHhzXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIGZpcnN0O1xuICAgICAgICBsb29wIGYgeHM7XG4gICAgICAgIHBwIGYgbGFzdFxuICBpblxuICBhdXggZiB4c1xuXG5sZXQgb3B0aW9uIDpcbiAgICAgICdhLlxuICAgICAgP2ZpcnN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2xhc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICAoRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0KSAtPlxuICAgICAgRm9ybWF0LmZvcm1hdHRlciAtPlxuICAgICAgJ2Egb3B0aW9uIC0+XG4gICAgICB1bml0ID1cbiBmdW4gP2ZpcnN0ID9sYXN0IGZ1IGYgYSAtPlxuICBsZXQgZmlyc3QgPSBtYXRjaCBmaXJzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NilcbiAgYW5kIGxhc3QgPSBtYXRjaCBsYXN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KSBpblxuICBtYXRjaCBhIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB4IC0+XG4gICAgICBwcCBmIGZpcnN0O1xuICAgICAgZnUgZiB4O1xuICAgICAgcHAgZiBsYXN0XG5cbmxldCBwYXJlbiA6XG4gICAgICAnYS5cbiAgICAgID9maXJzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9sYXN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgYm9vbCAtPlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT5cbiAgICAgIEZvcm1hdC5mb3JtYXR0ZXIgLT5cbiAgICAgICdhIC0+XG4gICAgICB1bml0ID1cbiBmdW4gPyhmaXJzdCA9IChcIlwiIDogXyBmb3JtYXQ2KSkgPyhsYXN0ID0gKFwiXCIgOiBfIGZvcm1hdDYpKSBiIGZ1IGYgeCAtPlxuICBpZiBiIHRoZW4gKFxuICAgIHBwIGYgXCIoXCI7XG4gICAgcHAgZiBmaXJzdDtcbiAgICBmdSBmIHg7XG4gICAgcHAgZiBsYXN0O1xuICAgIHBwIGYgXCIpXCIpXG4gIGVsc2UgZnUgZiB4XG5cbmxldCByZWMgbG9uZ2lkZW50IGYgPSBmdW5jdGlvblxuICB8IExpZGVudCBzIC0+IHByb3RlY3RfaWRlbnQgZiBzXG4gIHwgTGRvdCAoeSwgcykgLT4gcHJvdGVjdF9sb25naWRlbnQgZiBsb25naWRlbnQgeSBzXG4gIHwgTGFwcGx5ICh5LCBzKSAtPiBwcCBmIFwiJWEoJWEpXCIgbG9uZ2lkZW50IHkgbG9uZ2lkZW50IHNcblxubGV0IGxvbmdpZGVudF9sb2MgZiB4ID0gcHAgZiBcIiVhXCIgbG9uZ2lkZW50IHgudHh0XG5cbmxldCBjb25zdGFudCBmID0gZnVuY3Rpb25cbiAgfCBQY29uc3RfY2hhciBpIC0+IHBwIGYgXCIlQ1wiIGlcbiAgfCBQY29uc3Rfc3RyaW5nIChpLCBfLCBOb25lKSAtPiBwcCBmIFwiJVNcIiBpXG4gIHwgUGNvbnN0X3N0cmluZyAoaSwgXywgU29tZSBkZWxpbSkgLT4gcHAgZiBcInslc3wlc3wlc31cIiBkZWxpbSBpIGRlbGltXG4gIHwgUGNvbnN0X2ludGVnZXIgKGksIE5vbmUpIC0+IHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIC0+IHBwIGYgXCIlc1wiKSBmIGlcbiAgfCBQY29uc3RfaW50ZWdlciAoaSwgU29tZSBtKSAtPlxuICAgICAgcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgKGksIG0pIC0+IHBwIGYgXCIlcyVjXCIgaSBtKSBmIChpLCBtKVxuICB8IFBjb25zdF9mbG9hdCAoaSwgTm9uZSkgLT4gcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgLT4gcHAgZiBcIiVzXCIpIGYgaVxuICB8IFBjb25zdF9mbG9hdCAoaSwgU29tZSBtKSAtPlxuICAgICAgcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgKGksIG0pIC0+IHBwIGYgXCIlcyVjXCIgaSBtKSBmIChpLCBtKVxuXG4oKiB0cmFpbGluZyBzcGFjZSopXG5sZXQgbXV0YWJsZV9mbGFnIGYgPSBmdW5jdGlvbiBJbW11dGFibGUgLT4gKCkgfCBNdXRhYmxlIC0+IHBwIGYgXCJtdXRhYmxlQDtcIlxubGV0IHZpcnR1YWxfZmxhZyBmID0gZnVuY3Rpb24gQ29uY3JldGUgLT4gKCkgfCBWaXJ0dWFsIC0+IHBwIGYgXCJ2aXJ0dWFsQDtcIlxuXG4oKiB0cmFpbGluZyBzcGFjZSBhZGRlZCAqKVxubGV0IHJlY19mbGFnIGYgcmYgPVxuICBtYXRjaCByZiB3aXRoIE5vbnJlY3Vyc2l2ZSAtPiAoKSB8IFJlY3Vyc2l2ZSAtPiBwcCBmIFwicmVjIFwiXG5cbmxldCBub25yZWNfZmxhZyBmIHJmID1cbiAgbWF0Y2ggcmYgd2l0aCBOb25yZWN1cnNpdmUgLT4gcHAgZiBcIm5vbnJlYyBcIiB8IFJlY3Vyc2l2ZSAtPiAoKVxuXG5sZXQgZGlyZWN0aW9uX2ZsYWcgZiA9IGZ1bmN0aW9uXG4gIHwgVXB0byAtPiBwcCBmIFwidG9AIFwiXG4gIHwgRG93bnRvIC0+IHBwIGYgXCJkb3dudG9AIFwiXG5cbmxldCBwcml2YXRlX2ZsYWcgZiA9IGZ1bmN0aW9uIFB1YmxpYyAtPiAoKSB8IFByaXZhdGUgLT4gcHAgZiBcInByaXZhdGVAIFwiXG5sZXQgaXRlcl9sb2MgZiBjdHh0IHsgdHh0OyBsb2MgPSBfIH0gPSBmIGN0eHQgdHh0XG5sZXQgY29uc3RhbnRfc3RyaW5nIGYgcyA9IHBwIGYgXCIlU1wiIHNcblxubGV0IHR5dmFyIHBwZiBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzID49IDIgJiYgcy5bMV0gPSAnXFwnJyB0aGVuXG4gICAgKCogd2l0aG91dCB0aGUgc3BhY2UsIHRoaXMgd291bGQgYmUgcGFyc2VkIGFzXG4gICAgICAgYSBjaGFyYWN0ZXIgbGl0ZXJhbCAqKVxuICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIicgJXNcIiBzXG4gIGVsc2UgRm9ybWF0LmZwcmludGYgcHBmIFwiJyVzXCIgc1xuXG5sZXQgdHl2YXJfbG9jIGYgc3RyID0gdHl2YXIgZiBzdHIudHh0XG5sZXQgc3RyaW5nX3F1b3QgZiB4ID0gcHAgZiBcImAlc1wiIHhcblxuKCogYyBbJ2EsJ2JdICopXG5sZXQgcmVjIGNsYXNzX3BhcmFtc19kZWYgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGwgLT4gcHAgZiBcIlslYV0gXCIgKCogc3BhY2UgKikgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfnNlcDpcIixcIikgbFxuXG5hbmQgdHlwZV93aXRoX2xhYmVsIGN0eHQgZiAobGFiZWwsIGMpID1cbiAgbWF0Y2ggbGFiZWwgd2l0aFxuICB8IE5vbGFiZWwgLT4gY29yZV90eXBlMSBjdHh0IGYgYyAoKiBvdGhlcndpc2UgcGFyZW50aGVzaXplICopXG4gIHwgTGFiZWxsZWQgcyAtPiBwcCBmIFwiJXM6JWFcIiBzIChjb3JlX3R5cGUxIGN0eHQpIGNcbiAgfCBPcHRpb25hbCBzIC0+IHBwIGYgXCI/JXM6JWFcIiBzIChjb3JlX3R5cGUxIGN0eHQpIGNcblxuYW5kIGNvcmVfdHlwZSBjdHh0IGYgeCA9XG4gIGlmIHgucHR5cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAoY29yZV90eXBlIGN0eHQpXG4gICAgICB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnB0eXBfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wdHlwX2Rlc2Mgd2l0aFxuICAgIHwgUHR5cF9hcnJvdyAobCwgY3QxLCBjdDIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhQDstPkA7JWFAXVwiICgqIEZJWE1FIHJlbW92ZSBwYXJlbnMgbGF0ZXIgKilcbiAgICAgICAgICAodHlwZV93aXRoX2xhYmVsIGN0eHQpIChsLCBjdDEpIChjb3JlX3R5cGUgY3R4dCkgY3QyXG4gICAgfCBQdHlwX2FsaWFzIChjdCwgcykgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAO2FzQDslYUBdXCIgKGNvcmVfdHlwZTEgY3R4dCkgY3QgdHl2YXIgc1xuICAgIHwgUHR5cF9wb2x5IChbXSwgY3QpIC0+IGNvcmVfdHlwZSBjdHh0IGYgY3RcbiAgICB8IFB0eXBfcG9seSAoc2wsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYSVhQF1cIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBwcCBmIFwiJWFcIlxuICAgICAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICAgICB8IF8gLT4gcHAgZiBcIiVhQDsuQDtcIiAobGlzdCB0eXZhcl9sb2MgfnNlcDpcIkA7XCIpIGwpXG4gICAgICAgICAgICAgIGwpXG4gICAgICAgICAgc2wgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgXyAtPiBwcCBmIFwiQFs8Mj4lYUBdXCIgKGNvcmVfdHlwZTEgY3R4dCkgeFxuXG5hbmQgY29yZV90eXBlMSBjdHh0IGYgeCA9XG4gIGlmIHgucHR5cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gY29yZV90eXBlIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2FueSAtPiBwcCBmIFwiX1wiXG4gICAgfCBQdHlwX3ZhciBzIC0+IHR5dmFyIGYgc1xuICAgIHwgUHR5cF90dXBsZSBsIC0+IHBwIGYgXCIoJWEpXCIgKGxpc3QgKGNvcmVfdHlwZTEgY3R4dCkgfnNlcDpcIkA7KkA7XCIpIGxcbiAgICB8IFB0eXBfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgICAgcHAgZiAoKiBcIiVhJWFAO1wiICopIFwiJWElYVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgfCBbIHggXSAtPiBwcCBmIFwiJWFAO1wiIChjb3JlX3R5cGUxIGN0eHQpIHhcbiAgICAgICAgICAgIHwgXyAtPiBsaXN0IH5maXJzdDpcIihcIiB+bGFzdDpcIilAO1wiIChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixAO1wiIGYgbClcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFB0eXBfdmFyaWFudCAobCwgY2xvc2VkLCBsb3cpIC0+XG4gICAgICAgIGxldCBmaXJzdF9pc19pbmhlcml0ID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IHsgUGFyc2V0cmVlLnByZl9kZXNjID0gUmluaGVyaXQgXyB9IDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgdHlwZV92YXJpYW50X2hlbHBlciBmIHggPVxuICAgICAgICAgIG1hdGNoIHgucHJmX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUnRhZyAobCwgXywgY3RsKSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSVhQDslYUBdXCIgKGl0ZXJfbG9jIHN0cmluZ19xdW90KSBsXG4gICAgICAgICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IHBwIGYgXCJAO29mQDslYVwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIiZcIikgY3RsKVxuICAgICAgICAgICAgICAgIGN0bCAoYXR0cmlidXRlcyBjdHh0KSB4LnByZl9hdHRyaWJ1dGVzXG4gICAgICAgICAgfCBSaW5oZXJpdCBjdCAtPiBjb3JlX3R5cGUgY3R4dCBmIGN0XG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzwyPlslYSVhXUBdXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgbWF0Y2ggKGwsIGNsb3NlZCkgd2l0aFxuICAgICAgICAgICAgfCBbXSwgQ2xvc2VkIC0+ICgpXG4gICAgICAgICAgICB8IFtdLCBPcGVuIC0+IHBwIGYgXCI+XCIgKCogQ2YgIzcyMDA6IHByaW50IFs+XSBjb3JyZWN0bHkgKilcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIlc0A7JWFcIlxuICAgICAgICAgICAgICAgICAgKG1hdGNoIChjbG9zZWQsIGxvdykgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBDbG9zZWQsIE5vbmUgLT4gaWYgZmlyc3RfaXNfaW5oZXJpdCB0aGVuIFwiIHxcIiBlbHNlIFwiXCJcbiAgICAgICAgICAgICAgICAgIHwgQ2xvc2VkLCBTb21lIF8gLT4gXCI8XCIgKCogRklYTUUgZGVzdWdhciB0aGUgc3ludGF4IHN1Z2FyKilcbiAgICAgICAgICAgICAgICAgIHwgT3BlbiwgXyAtPiBcIj5cIilcbiAgICAgICAgICAgICAgICAgIChsaXN0IHR5cGVfdmFyaWFudF9oZWxwZXIgfnNlcDpcIkA7PDEgLTI+fCBcIilcbiAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgbFxuICAgICAgICAgIChmdW4gZiBsb3cgLT5cbiAgICAgICAgICAgIG1hdGNoIGxvdyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgW10gfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgeHMgLT4gcHAgZiBcIj5AICVhXCIgKGxpc3Qgc3RyaW5nX3F1b3QpIHhzKVxuICAgICAgICAgIGxvd1xuICAgIHwgUHR5cF9vYmplY3QgKGwsIG8pIC0+XG4gICAgICAgIGxldCBjb3JlX2ZpZWxkX3R5cGUgZiB4ID1cbiAgICAgICAgICBtYXRjaCB4LnBvZl9kZXNjIHdpdGhcbiAgICAgICAgICB8IE90YWcgKGwsIGN0KSAtPlxuICAgICAgICAgICAgICAoKiBDZiAjNzIwMCAqKVxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lczogJWFAICVhQCBAXVwiIGwudHh0IChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgICAgICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBvZl9hdHRyaWJ1dGVzXG4gICAgICAgICAgfCBPaW5oZXJpdCBjdCAtPiBwcCBmIFwiQFs8aG92Mj4lYUAgQF1cIiAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBmaWVsZF92YXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBBc3R0eXBlcy5DbG9zZWQgLT4gKClcbiAgICAgICAgICB8IEFzdHR5cGVzLk9wZW4gLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGggW10gLT4gcHAgZiBcIi4uXCIgfCBfIC0+IHBwIGYgXCIgOy4uXCIpXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxob3YyPjxAICVhJWFAID4gQF1cIlxuICAgICAgICAgIChsaXN0IGNvcmVfZmllbGRfdHlwZSB+c2VwOlwiO1wiKVxuICAgICAgICAgIGwgZmllbGRfdmFyIG9cbiAgICAgICAgKCogQ2YgIzcyMDAgKilcbiAgICB8IFB0eXBfY2xhc3MgKGxpLCBsKSAtPlxuICAgICAgICAoKkZJWE1FKilcbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWEjJWFAXVwiXG4gICAgICAgICAgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIilcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFB0eXBfcGFja2FnZSAobGlkLCBjc3RycykgLT4gKFxuICAgICAgICBsZXQgYXV4IGYgKHMsIGN0KSA9XG4gICAgICAgICAgcHAgZiBcInR5cGUgJWFAID1AICVhXCIgbG9uZ2lkZW50X2xvYyBzIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggY3N0cnMgd2l0aFxuICAgICAgICB8IFtdIC0+IHBwIGYgXCJAWzxob3YyPihtb2R1bGVAICVhKUBdXCIgbG9uZ2lkZW50X2xvYyBsaWRcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4obW9kdWxlQCAlYUAgd2l0aEAgJWEpQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICAgICAgICAobGlzdCBhdXggfnNlcDpcIkAgYW5kQCBcIikgY3N0cnMpXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChjb3JlX3R5cGUgY3R4dCkgZiB4XG5cbigqKioqKioqKioqKioqKioqKioqKnBhdHRlcm4qKioqKioqKioqKioqKioqKioqKilcbigqIGJlIGNhdXRpb3VzIHdoZW4gdXNlIFtwYXR0ZXJuXSwgW3BhdHRlcm4xXSBpcyBwcmVmZXJyZWQgKilcbmFuZCBwYXR0ZXJuIGN0eHQgZiB4ID1cbiAgaWYgeC5wcGF0X2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChwYXR0ZXJuIGN0eHQpXG4gICAgICB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBwYXRfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF9hbGlhcyAocCwgcykgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAO2FzQDslYUBdXCIgKHBhdHRlcm4gY3R4dCkgcCBwcm90ZWN0X2lkZW50IHMudHh0XG4gICAgfCBfIC0+IHBhdHRlcm5fb3IgY3R4dCBmIHhcblxuYW5kIHBhdHRlcm5fb3IgY3R4dCBmIHggPVxuICBsZXQgcmVjIGxlZnRfYXNzb2NpYXRpdmUgeCBhY2MgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X29yIChwMSwgcDIpOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgIGxlZnRfYXNzb2NpYXRpdmUgcDEgKHAyIDo6IGFjYylcbiAgICB8IHggLT4geCA6OiBhY2NcbiAgaW5cbiAgbWF0Y2ggbGVmdF9hc3NvY2lhdGl2ZSB4IFtdIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBbIHggXSAtPiBwYXR0ZXJuMSBjdHh0IGYgeFxuICB8IG9ycGF0cyAtPiBwcCBmIFwiQFs8aG92MD4lYUBdXCIgKGxpc3QgfnNlcDpcIkAgfCBcIiAocGF0dGVybjEgY3R4dCkpIG9ycGF0c1xuXG5hbmQgcGF0dGVybjEgY3R4dCAoZiA6IEZvcm1hdC5mb3JtYXR0ZXIpICh4IDogcGF0dGVybikgOiB1bml0ID1cbiAgbGV0IHJlYyBwYXR0ZXJuX2xpc3RfaGVscGVyIGYgPSBmdW5jdGlvblxuICAgIHwge1xuICAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgIFBwYXRfY29uc3RydWN0XG4gICAgICAgICAgICAoIHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LFxuICAgICAgICAgICAgICBTb21lIChbXSwgeyBwcGF0X2Rlc2MgPSBQcGF0X3R1cGxlIFsgcGF0MTsgcGF0MiBdOyBfIH0pICk7XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICBwcCBmIFwiJWE6OiVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBhdDEgcGF0dGVybl9saXN0X2hlbHBlciBwYXQyICgqUkEqKVxuICAgIHwgcCAtPiBwYXR0ZXJuMSBjdHh0IGYgcFxuICBpblxuICBpZiB4LnBwYXRfYXR0cmlidXRlcyA8PiBbXSB0aGVuIHBhdHRlcm4gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucHBhdF9kZXNjIHdpdGhcbiAgICB8IFBwYXRfdmFyaWFudCAobCwgU29tZSBwKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5gJXNAOyVhQF1cIiBsIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKFwiKClcIiB8IFwiW11cIik7IF8gfSwgXykgLT5cbiAgICAgICAgc2ltcGxlX3BhdHRlcm4gY3R4dCBmIHhcbiAgICB8IFBwYXRfY29uc3RydWN0ICgoeyB0eHQ7IF8gfSBhcyBsaSksIHBvKSAtPiAoXG4gICAgICAgIGlmICgqIEZJWE1FIFRoZSB0aGlyZCBmaWVsZCBhbHdheXMgZmFsc2UgKilcbiAgICAgICAgICAgdHh0ID0gTGlkZW50IFwiOjpcIiB0aGVuIHBwIGYgXCIlYVwiIHBhdHRlcm5fbGlzdF9oZWxwZXIgeFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggcG8gd2l0aFxuICAgICAgICAgIHwgU29tZSAoW10sIHgpIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7JWFcIiBsb25naWRlbnRfbG9jIGxpIChzaW1wbGVfcGF0dGVybiBjdHh0KSB4XG4gICAgICAgICAgfCBTb21lICh2bCwgeCkgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQCAodHlwZSAlYSlAOyVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgICAgICAgIChsaXN0IH5zZXA6XCJAIFwiIHN0cmluZ19sb2MpXG4gICAgICAgICAgICAgICAgdmwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHhcbiAgICAgICAgICB8IE5vbmUgLT4gcHAgZiBcIiVhXCIgbG9uZ2lkZW50X2xvYyBsaSlcbiAgICB8IF8gLT4gc2ltcGxlX3BhdHRlcm4gY3R4dCBmIHhcblxuYW5kIHNpbXBsZV9wYXR0ZXJuIGN0eHQgKGYgOiBGb3JtYXQuZm9ybWF0dGVyKSAoeCA6IHBhdHRlcm4pIDogdW5pdCA9XG4gIGlmIHgucHBhdF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcGF0dGVybiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50ICgoXCIoKVwiIHwgXCJbXVwiKSBhcyB4KTsgXyB9LCBOb25lKSAtPlxuICAgICAgICBwcCBmIFwiJXNcIiB4XG4gICAgfCBQcGF0X2FueSAtPiBwcCBmIFwiX1wiXG4gICAgfCBQcGF0X3ZhciB7IHR4dDsgXyB9IC0+IHByb3RlY3RfaWRlbnQgZiB0eHRcbiAgICB8IFBwYXRfYXJyYXkgbCAtPiBwcCBmIFwiQFs8Mj5bfCVhfF1AXVwiIChsaXN0IChwYXR0ZXJuMSBjdHh0KSB+c2VwOlwiO1wiKSBsXG4gICAgfCBQcGF0X3VucGFjayB7IHR4dCA9IE5vbmUgfSAtPiBwcCBmIFwiKG1vZHVsZUAgXylAIFwiXG4gICAgfCBQcGF0X3VucGFjayB7IHR4dCA9IFNvbWUgcyB9IC0+IHBwIGYgXCIobW9kdWxlQCAlcylAIFwiIHNcbiAgICB8IFBwYXRfdHlwZSBsaSAtPiBwcCBmIFwiIyVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHBhdF9yZWNvcmQgKGwsIGNsb3NlZCkgLT4gKFxuICAgICAgICBsZXQgbG9uZ2lkZW50X3hfcGF0dGVybiBmIChsaSwgcCkgPVxuICAgICAgICAgIG1hdGNoIChsaSwgcCkgd2l0aFxuICAgICAgICAgIHwgKCB7IHR4dCA9IExpZGVudCBzOyBfIH0sXG4gICAgICAgICAgICAgIHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQ7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW107IF8gfSApXG4gICAgICAgICAgICB3aGVuIHMgPSB0eHQgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICB8IF8gLT4gcHAgZiBcIkBbPDI+JWFAOz1AOyVhQF1cIiBsb25naWRlbnRfbG9jIGxpIChwYXR0ZXJuMSBjdHh0KSBwXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNsb3NlZCB3aXRoXG4gICAgICAgIHwgQ2xvc2VkIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8Mj57QDslYUA7fUBdXCIgKGxpc3QgbG9uZ2lkZW50X3hfcGF0dGVybiB+c2VwOlwiO0A7XCIpIGxcbiAgICAgICAgfCBfIC0+IHBwIGYgXCJAWzwyPntAOyVhO199QF1cIiAobGlzdCBsb25naWRlbnRfeF9wYXR0ZXJuIH5zZXA6XCI7QDtcIikgbClcbiAgICB8IFBwYXRfdHVwbGUgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8MT4oJWEpQF1cIiAobGlzdCB+c2VwOlwiLEA7XCIgKHBhdHRlcm4xIGN0eHQpKSBsICgqIGxldmVsMSopXG4gICAgfCBQcGF0X2NvbnN0YW50IGMgLT4gcHAgZiBcIiVhXCIgY29uc3RhbnQgY1xuICAgIHwgUHBhdF9pbnRlcnZhbCAoYzEsIGMyKSAtPiBwcCBmIFwiJWEuLiVhXCIgY29uc3RhbnQgYzEgY29uc3RhbnQgYzJcbiAgICB8IFBwYXRfdmFyaWFudCAobCwgTm9uZSkgLT4gcHAgZiBcImAlc1wiIGxcbiAgICB8IFBwYXRfY29uc3RyYWludCAocCwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiglYUA7OkA7JWEpQF1cIiAocGF0dGVybjEgY3R4dCkgcCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQcGF0X2xhenkgcCAtPiBwcCBmIFwiQFs8Mj4obGF6eUA7JWEpQF1cIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgIHwgUHBhdF9leGNlcHRpb24gcCAtPiBwcCBmIFwiQFs8Mj5leGNlcHRpb25AOyVhQF1cIiAocGF0dGVybjEgY3R4dCkgcFxuICAgIHwgUHBhdF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IFBwYXRfb3BlbiAobGlkLCBwKSAtPlxuICAgICAgICBsZXQgd2l0aF9wYXJlbiA9XG4gICAgICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHBhdF9hcnJheSBfIHwgUHBhdF9yZWNvcmQgX1xuICAgICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IChcIigpXCIgfCBcIltdXCIpOyBfIH0sIE5vbmUpIC0+XG4gICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgfCBfIC0+IHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWEuJWEgQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICAgIChwYXJlbiB3aXRoX3BhcmVuIEBAIHBhdHRlcm4xIGN0eHQpXG4gICAgICAgICAgcFxuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChwYXR0ZXJuIGN0eHQpIGYgeFxuXG5hbmQgbGFiZWxfZXhwIGN0eHQgZiAobCwgb3B0LCBwKSA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IE5vbGFiZWwgLT5cbiAgICAgICgqIHNpbmdsZSBjYXNlIHBhdHRlcm4gcGFyZW5zIG5lZWRlZCBoZXJlICopXG4gICAgICBwcCBmIFwiJWFAIFwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gIHwgT3B0aW9uYWwgcmVzdCAtPiAoXG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dDsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAgIHdoZW4gdHh0ID0gcmVzdCAtPiAoXG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgbyAtPiBwcCBmIFwiPyglcz1AOyVhKUA7XCIgcmVzdCAoZXhwcmVzc2lvbiBjdHh0KSBvXG4gICAgICAgICAgfCBOb25lIC0+IHBwIGYgXCI/JXNAIFwiIHJlc3QpXG4gICAgICB8IF8gLT4gKFxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBTb21lIG8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIj8lczooJWE9QDslYSlAO1wiIHJlc3QgKHBhdHRlcm4xIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgb1xuICAgICAgICAgIHwgTm9uZSAtPiBwcCBmIFwiPyVzOiVhQDtcIiByZXN0IChzaW1wbGVfcGF0dGVybiBjdHh0KSBwKSlcbiAgfCBMYWJlbGxlZCBsIC0+IChcbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0OyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gd2hlbiB0eHQgPSBsXG4gICAgICAgIC0+XG4gICAgICAgICAgcHAgZiBcIn4lc0A7XCIgbFxuICAgICAgfCBfIC0+IHBwIGYgXCJ+JXM6JWFAO1wiIGwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHApXG5cbmFuZCBzdWdhcl9leHByIGN0eHQgZiBlID1cbiAgaWYgZS5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBmYWxzZVxuICBlbHNlXG4gICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9hcHBseVxuICAgICAgICAoIHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IGlkOyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0sXG4gICAgICAgICAgYXJncyApXG4gICAgICB3aGVuIExpc3QuZm9yX2FsbCAoZnVuIChsYWIsIF8pIC0+IGxhYiA9IE5vbGFiZWwpIGFyZ3MgLT4gKFxuICAgICAgICBsZXQgcHJpbnRfaW5kZXhvcCBhIHBhdGhfcHJlZml4IGFzc2lnbiBsZWZ0IHNlcCByaWdodCBwcmludF9pbmRleFxuICAgICAgICAgICAgaW5kaWNlcyByZW1fYXJncyA9XG4gICAgICAgICAgbGV0IHByaW50X3BhdGggcHBmID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIG0gLT4gcHAgcHBmIFwiLiVhXCIgbG9uZ2lkZW50IG1cbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIChhc3NpZ24sIHJlbV9hcmdzKSB3aXRoXG4gICAgICAgICAgfCBmYWxzZSwgW10gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbJWElYSVzJWElc0BdXCIgKHNpbXBsZV9leHByIGN0eHQpIGEgcHJpbnRfcGF0aCBwYXRoX3ByZWZpeFxuICAgICAgICAgICAgICAgIGxlZnQgKGxpc3QgfnNlcCBwcmludF9pbmRleCkgaW5kaWNlcyByaWdodDtcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgdHJ1ZSwgWyB2IF0gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbJWElYSVzJWElc0AgPC1AOzwxIDI+JWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBhIHByaW50X3BhdGhcbiAgICAgICAgICAgICAgICBwYXRoX3ByZWZpeCBsZWZ0IChsaXN0IH5zZXAgcHJpbnRfaW5kZXgpIGluZGljZXMgcmlnaHRcbiAgICAgICAgICAgICAgICAoc2ltcGxlX2V4cHIgY3R4dCkgdjtcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCAoaWQsIExpc3QubWFwIHNuZCBhcmdzKSB3aXRoXG4gICAgICAgIHwgTGlkZW50IFwiIVwiLCBbIGUgXSAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdj4hJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlO1xuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICB8IExkb3QgKHBhdGgsICgoXCJnZXRcIiB8IFwic2V0XCIpIGFzIGZ1bmMpKSwgYSA6OiBvdGhlcl9hcmdzIC0+IChcbiAgICAgICAgICAgIGxldCBhc3NpZ24gPSBmdW5jID0gXCJzZXRcIiBpblxuICAgICAgICAgICAgbGV0IHByaW50ID0gcHJpbnRfaW5kZXhvcCBhIE5vbmUgYXNzaWduIGluXG4gICAgICAgICAgICBtYXRjaCAocGF0aCwgb3RoZXJfYXJncykgd2l0aFxuICAgICAgICAgICAgfCBMaWRlbnQgXCJBcnJheVwiLCBpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi4oXCIgXCJcIiBcIilcIiAoZXhwcmVzc2lvbiBjdHh0KSBbIGkgXSByZXN0XG4gICAgICAgICAgICB8IExpZGVudCBcIlN0cmluZ1wiLCBpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi5bXCIgXCJcIiBcIl1cIiAoZXhwcmVzc2lvbiBjdHh0KSBbIGkgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkxXCIpLCBpMSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxIF0gcmVzdFxuICAgICAgICAgICAgfCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkFycmF5MlwiKSwgaTEgOjogaTIgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgWyBpMTsgaTIgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkzXCIpLCBpMSA6OiBpMiA6OiBpMyA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxOyBpMjsgaTMgXSByZXN0XG4gICAgICAgICAgICB8ICggTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJHZW5hcnJheVwiKSxcbiAgICAgICAgICAgICAgICB7IHBleHBfZGVzYyA9IFBleHBfYXJyYXkgaW5kZXhlczsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSA6OiByZXN0XG4gICAgICAgICAgICAgICkgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIGluZGV4ZXMgcmVzdFxuICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICB8IChMaWRlbnQgcyB8IExkb3QgKF8sIHMpKSwgYSA6OiBpIDo6IHJlc3Qgd2hlbiBmaXJzdF9pcyAnLicgcyAtPlxuICAgICAgICAgICAgKCogZXh0cmFjdCBvcGVyYXRvcjpcbiAgICAgICAgICAgICAgIGFzc2lnbm1lbnQgb3BlcmF0b3JzIGVuZCB3aXRoIFtyaWdodF9icmFja2V0IF4gXCI8LVwiXSxcbiAgICAgICAgICAgICAgIGFjY2VzcyBvcGVyYXRvcnMgZW5kIHdpdGggW3JpZ2h0X2JyYWNrZXRdIGRpcmVjdGx5XG4gICAgICAgICAgICAqKVxuICAgICAgICAgICAgbGV0IG11bHRpX2luZGljZXMgPSBTdHJpbmcuY29udGFpbnMgcyAnOycgaW5cbiAgICAgICAgICAgIGxldCBpID1cbiAgICAgICAgICAgICAgbWF0Y2ggaS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXJyYXkgbCB3aGVuIG11bHRpX2luZGljZXMgLT4gbFxuICAgICAgICAgICAgICB8IF8gLT4gWyBpIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYXNzaWduID0gbGFzdF9pcyAnLScgcyBpblxuICAgICAgICAgICAgbGV0IGtpbmQgPVxuICAgICAgICAgICAgICAoKiBleHRyYWN0IHRoZSByaWdodCBlbmQgYnJhY2tldCAqKVxuICAgICAgICAgICAgICBsZXQgbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgICBpZiBhc3NpZ24gdGhlbiBzLltuIC0gM10gZWxzZSBzLltuIC0gMV1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbGVmdCwgcmlnaHQgPVxuICAgICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICAgfCAnKScgLT4gKCcoJywgXCIpXCIpXG4gICAgICAgICAgICAgIHwgJ10nIC0+ICgnWycsIFwiXVwiKVxuICAgICAgICAgICAgICB8ICd9JyAtPiAoJ3snLCBcIn1cIilcbiAgICAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwYXRoX3ByZWZpeCA9XG4gICAgICAgICAgICAgIG1hdGNoIGlkIHdpdGggTGRvdCAobSwgXykgLT4gU29tZSBtIHwgXyAtPiBOb25lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxlZnQgPSBTdHJpbmcuc3ViIHMgMCAoMSArIFN0cmluZy5pbmRleCBzIGxlZnQpIGluXG4gICAgICAgICAgICBwcmludF9pbmRleG9wIGEgcGF0aF9wcmVmaXggYXNzaWduIGxlZnQgXCI7XCIgcmlnaHRcbiAgICAgICAgICAgICAgKGlmIG11bHRpX2luZGljZXMgdGhlbiBleHByZXNzaW9uIGN0eHQgZWxzZSBzaW1wbGVfZXhwciBjdHh0KVxuICAgICAgICAgICAgICBpIHJlc3RcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgXyAtPiBmYWxzZVxuXG5hbmQgZXhwcmVzc2lvbiBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSlALCVhKVwiIChleHByZXNzaW9uIGN0eHQpXG4gICAgICB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBleHBfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9mdW5jdGlvbiBfIHwgUGV4cF9mdW4gXyB8IFBleHBfbWF0Y2ggXyB8IFBleHBfdHJ5IF8gfCBQZXhwX3NlcXVlbmNlIF9cbiAgICB8IFBleHBfbmV3dHlwZSBfXG4gICAgICB3aGVuIGN0eHQucGlwZSB8fCBjdHh0LnNlbWkgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IChQZXhwX2lmdGhlbmVsc2UgXyB8IFBleHBfc2VxdWVuY2UgXykgd2hlbiBjdHh0LmlmdGhlbmVsc2UgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IFBleHBfbGV0IF8gfCBQZXhwX2xldG1vZHVsZSBfIHwgUGV4cF9vcGVuIF8gfCBQZXhwX2xldGV4Y2VwdGlvbiBfXG4gICAgfCBQZXhwX2xldG9wIF9cbiAgICAgIHdoZW4gY3R4dC5zZW1pIC0+XG4gICAgICAgIHBhcmVuIHRydWUgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgZiB4XG4gICAgfCBQZXhwX2Z1biAobCwgZTAsIHAsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmZ1bkA7JWEtPkA7JWFAXVwiIChsYWJlbF9leHAgY3R4dCkgKGwsIGUwLCBwKVxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfbmV3dHlwZSAobGlkLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5mdW5AOyh0eXBlQDslcylAOy0+QDslYUBdXCIgbGlkLnR4dCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2Z1bmN0aW9uIGwgLT4gcHAgZiBcIkBbPGh2PmZ1bmN0aW9uJWFAXVwiIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF9tYXRjaCAoZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGh2MD5AWzxodjA+QFs8Mj5tYXRjaCAlYUBdQCB3aXRoQF0lYUBdXCIgKGV4cHJlc3Npb24gcmVzZXRfY3R4dClcbiAgICAgICAgICBlIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF90cnkgKGUsIGwpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwwPkBbPGh2Mj50cnlAICVhQF1AIEBbPDA+d2l0aCVhQF1AXVwiXG4gICAgICAgICAgKCogXCJ0cnlAO0BbPDI+JWFAXUBcXG53aXRoQFxcbiVhXCIqKVxuICAgICAgICAgIChleHByZXNzaW9uIHJlc2V0X2N0eHQpXG4gICAgICAgICAgZSAoY2FzZV9saXN0IGN0eHQpIGxcbiAgICB8IFBleHBfbGV0IChyZiwgbCwgZSkgLT5cbiAgICAgICAgKCogcHAgZiBcIkBbPDI+bGV0ICVhJWEgaW5AOzwxIC0yPiVhQF1cIlxuICAgICAgICAgICAoKm5vIGluZGVudGF0aW9uIGhlcmUsIGEgbmV3IGxpbmUqKSAqKVxuICAgICAgICAoKiAgIHJlY19mbGFnIHJmICopXG4gICAgICAgIHBwIGYgXCJAWzwyPiVhIGluQDs8MSAtMj4lYUBdXCIgKGJpbmRpbmdzIHJlc2V0X2N0eHQpIChyZiwgbClcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2FwcGx5IChlLCBsKSAtPiAoXG4gICAgICAgIGlmIG5vdCAoc3VnYXJfZXhwciBjdHh0IGYgeCkgdGhlblxuICAgICAgICAgIG1hdGNoIHZpZXdfZml4aXR5X29mX2V4cCBlIHdpdGhcbiAgICAgICAgICB8IGBJbmZpeCBzIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgWyAoKE5vbGFiZWwsIF8pIGFzIGFyZzEpOyAoKE5vbGFiZWwsIF8pIGFzIGFyZzIpIF0gLT5cbiAgICAgICAgICAgICAgICAgICgqIEZJWE1FIGFzc29jaWF0aXZpdHkgbGFiZWxfeF9leHByZXNzaW9uX3BhcmFtICopXG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7JXNAOyVhQF1cIlxuICAgICAgICAgICAgICAgICAgICAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIHJlc2V0X2N0eHQpXG4gICAgICAgICAgICAgICAgICAgIGFyZzEgc1xuICAgICAgICAgICAgICAgICAgICAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpXG4gICAgICAgICAgICAgICAgICAgIGFyZzJcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICB8IGBQcmVmaXggcyAtPiAoXG4gICAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgTGlzdC5tZW0gcyBbIFwifitcIjsgXCJ+LVwiOyBcIn4rLlwiOyBcIn4tLlwiIF1cbiAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgICAgICgqIFNlZSAjNzIwMDogYXZvaWQgdHVybmluZyAofi0gMSkgaW50byAoLSAxKSB3aGljaCBpc1xuICAgICAgICAgICAgICAgICAgICAgcGFyc2VkIGFzIGFuIGludCBsaXRlcmFsICopXG4gICAgICAgICAgICAgICAgICB8IFsgKF8sIHsgcGV4cF9kZXNjID0gUGV4cF9jb25zdGFudCBfIH0pIF0gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgdGhlbiBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICAgICAgICAgICAgICBlbHNlIHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgWyAoTm9sYWJlbCwgeCkgXSAtPiBwcCBmIFwiQFs8Mj4lc0A7JWFAXVwiIHMgKHNpbXBsZV9leHByIGN0eHQpIHhcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAXVwiXG4gICAgICAgICAgICAgICAgKGZ1biBmIChlLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChleHByZXNzaW9uMiBjdHh0KSBlXG4gICAgICAgICAgICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gcmVzZXRfY3R4dCkpXG4gICAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgICAgICgqIHJlc2V0IGhlcmUgb25seSBiZWNhdXNlIFtmdW5jdGlvbixtYXRjaCx0cnksc2VxdWVuY2VdXG4gICAgICAgICAgICAgICAgICAgICBhcmUgbG93ZXIgcHJpb3JpdHkgKikpXG4gICAgICAgICAgICAgICAgKGUsIGwpKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGxpLCBTb21lIGVvKSB3aGVuIG5vdCAoaXNfc2ltcGxlX2NvbnN0cnVjdCAodmlld19leHByIHgpKVxuICAgICAgLT4gKFxuICAgICAgICAoKiBOb3QgZWZmaWNpZW50IEZJWE1FKilcbiAgICAgICAgbWF0Y2ggdmlld19leHByIHggd2l0aFxuICAgICAgICB8IGBjb25zIGxzIC0+IGxpc3QgKHNpbXBsZV9leHByIGN0eHQpIGYgbHMgfnNlcDpcIkA7OjpAO1wiXG4gICAgICAgIHwgYG5vcm1hbCAtPiBwcCBmIFwiQFs8Mj4lYUA7JWFAXVwiIGxvbmdpZGVudF9sb2MgbGkgKHNpbXBsZV9leHByIGN0eHQpIGVvXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgfCBQZXhwX3NldGZpZWxkIChlMSwgbGksIGUyKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYS4lYUAgPC1AICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZTEgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgIChzaW1wbGVfZXhwciBjdHh0KSBlMlxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIChlMSwgZTIsIGVvKSAtPlxuICAgICAgICAoKiBAO0BbPDI+ZWxzZUAgJWFAXUBdICopXG4gICAgICAgIGxldCBmbXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICAgICAgICBcIkBbPGh2MD5AWzwyPmlmQCAlYUBdQDtAWzwyPnRoZW5AICVhQF0lYUBdXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSA9IGV4cHJlc3Npb24gKHVuZGVyX2lmdGhlbmVsc2UgY3R4dCkgaW5cbiAgICAgICAgcHAgZiBmbXQgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIGUxIGV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSBlMlxuICAgICAgICAgIChmdW4gZiBlbyAtPlxuICAgICAgICAgICAgbWF0Y2ggZW8gd2l0aFxuICAgICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiQDtAWzwyPmVsc2VAOyVhQF1cIiAoZXhwcmVzc2lvbiAodW5kZXJfc2VtaSBjdHh0KSkgeFxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAoKiBwcCBmIFwiKClcIiAqKSlcbiAgICAgICAgICBlb1xuICAgIHwgUGV4cF9zZXF1ZW5jZSBfIC0+XG4gICAgICAgIGxldCByZWMgc2VxdWVuY2VfaGVscGVyIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfc2VxdWVuY2UgKGUxLCBlMik7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgc2VxdWVuY2VfaGVscGVyIChlMSA6OiBhY2MpIGUyXG4gICAgICAgICAgfCB2IC0+IExpc3QucmV2ICh2IDo6IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxzdCA9IHNlcXVlbmNlX2hlbHBlciBbXSB4IGluXG4gICAgICAgIHBwIGYgXCJAWzxodj4lYUBdXCIgKGxpc3QgKGV4cHJlc3Npb24gKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7QDtcIikgbHN0XG4gICAgfCBQZXhwX25ldyBsaSAtPiBwcCBmIFwiQFs8aG92Mj5uZXdAICVhQF1cIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQZXhwX3NldGluc3R2YXIgKHMsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVzQCA8LUAgJWFAXVwiIHMudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfb3ZlcnJpZGUgbCAtPlxuICAgICAgICAoKiBGSVhNRSAqKVxuICAgICAgICBsZXQgc3RyaW5nX3hfZXhwcmVzc2lvbiBmIChzLCBlKSA9XG4gICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JXNAID1AICVhQF1cIiBzLnR4dCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxob3YyPns8JWE+fUBdXCIgKGxpc3Qgc3RyaW5nX3hfZXhwcmVzc2lvbiB+c2VwOlwiO1wiKSBsXG4gICAgfCBQZXhwX2xldG1vZHVsZSAocywgbWUsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmxldEAgbW9kdWxlQCAlc0AgPUAgJWFAIGluQCAlYUBdXCJcbiAgICAgICAgICAoT3B0aW9uLnZhbHVlIHMudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgIChtb2R1bGVfZXhwciByZXNldF9jdHh0KSBtZSAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoY2QsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmxldEAgZXhjZXB0aW9uQCAlYUAgaW5AICVhQF1cIlxuICAgICAgICAgIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dClcbiAgICAgICAgICBjZCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2Fzc2VydCBlIC0+IHBwIGYgXCJAWzxob3YyPmFzc2VydEAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgfCBQZXhwX2xhenkgZSAtPiBwcCBmIFwiQFs8aG92Mj5sYXp5QCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAoKiBQZXhwX3BvbHk6IGltcG9zc2libGUgYnV0IHdlIHNob3VsZCBwcmludCBpdCBhbnl3YXksIHJhdGhlciB0aGFuXG4gICAgICAgYXNzZXJ0IGZhbHNlICopXG4gICAgfCBQZXhwX3BvbHkgKGUsIE5vbmUpIC0+IHBwIGYgXCJAWzxob3YyPiFwb2x5IUAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgfCBQZXhwX3BvbHkgKGUsIFNvbWUgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPighcG9seSFAICVhQCA6ICVhKUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQZXhwX29wZW4gKG8sIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAgIChvdmVycmlkZSBvLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBvLnBvcGVuX2V4cHIgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF92YXJpYW50IChsLCBTb21lIGVvKSAtPiBwcCBmIFwiQFs8Mj5gJXNAOyVhQF1cIiBsIChzaW1wbGVfZXhwciBjdHh0KSBlb1xuICAgIHwgUGV4cF9sZXRvcCB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5AWzx2PiVhQCwlYUBdIGluQDs8MSAtMj4lYUBdXCIgKGJpbmRpbmdfb3AgY3R4dCkgbGV0X1xuICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChiaW5kaW5nX29wIGN0eHQpKVxuICAgICAgICAgIGFuZHMgKGV4cHJlc3Npb24gY3R4dCkgYm9keVxuICAgIHwgUGV4cF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gcHAgZiBcIi5cIlxuICAgIHwgXyAtPiBleHByZXNzaW9uMSBjdHh0IGYgeFxuXG5hbmQgZXhwcmVzc2lvbjEgY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGV4cHJlc3Npb24gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfb2JqZWN0IGNzIC0+IHBwIGYgXCIlYVwiIChjbGFzc19zdHJ1Y3R1cmUgY3R4dCkgY3NcbiAgICB8IF8gLT4gZXhwcmVzc2lvbjIgY3R4dCBmIHhcbigqIHVzZWQgaW4gW1BleHBfYXBwbHldICopXG5cbmFuZCBleHByZXNzaW9uMiBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9maWVsZCAoZSwgbGkpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVhLiVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZSBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQZXhwX3NlbmQgKGUsIHMpIC0+IHBwIGYgXCJAWzxob3YyPiVhIyVzQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZSBzLnR4dFxuICAgIHwgXyAtPiBzaW1wbGVfZXhwciBjdHh0IGYgeFxuXG5hbmQgc2ltcGxlX2V4cHIgY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGV4cHJlc3Npb24gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfY29uc3RydWN0IF8gd2hlbiBpc19zaW1wbGVfY29uc3RydWN0ICh2aWV3X2V4cHIgeCkgLT4gKFxuICAgICAgICBtYXRjaCB2aWV3X2V4cHIgeCB3aXRoXG4gICAgICAgIHwgYG5pbCAtPiBwcCBmIFwiW11cIlxuICAgICAgICB8IGB0dXBsZSAtPiBwcCBmIFwiKClcIlxuICAgICAgICB8IGBsaXN0IHhzIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aHYwPlslYV1AXVwiXG4gICAgICAgICAgICAgIChsaXN0IChleHByZXNzaW9uICh1bmRlcl9zZW1pIGN0eHQpKSB+c2VwOlwiO0A7XCIpXG4gICAgICAgICAgICAgIHhzXG4gICAgICAgIHwgYHNpbXBsZSB4IC0+IGxvbmdpZGVudCBmIHhcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICB8IFBleHBfaWRlbnQgbGkgLT4gbG9uZ2lkZW50X2xvYyBmIGxpXG4gICAgKCogKG1hdGNoIHZpZXdfZml4aXR5X29mX2V4cCB4IHdpdGggKilcbiAgICAoKiB8YE5vcm1hbCAtPiBsb25naWRlbnRfbG9jIGYgbGkgKilcbiAgICAoKiB8IGBQcmVmaXggXyB8IGBJbmZpeCBfIC0+IHBwIGYgXCIoICVhIClcIiBsb25naWRlbnRfbG9jIGxpKSAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBjIC0+IGNvbnN0YW50IGYgY1xuICAgIHwgUGV4cF9wYWNrIG1lIC0+IHBwIGYgXCIobW9kdWxlQDslYSlcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBleHBfdHVwbGUgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4oJWEpQF1cIiAobGlzdCAoc2ltcGxlX2V4cHIgY3R4dCkgfnNlcDpcIixAO1wiKSBsXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiKCVhIDogJWEpXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQZXhwX2NvZXJjZSAoZSwgY3RvMSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWElYSA6PiAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgICAgICAgKG9wdGlvbiAoY29yZV90eXBlIGN0eHQpIH5maXJzdDpcIiA6IFwiIH5sYXN0OlwiIFwiKVxuICAgICAgICAgIGN0bzFcbiAgICAgICAgICAoKiBubyBzZXAgaGludCopIChjb3JlX3R5cGUgY3R4dClcbiAgICAgICAgICBjdFxuICAgIHwgUGV4cF92YXJpYW50IChsLCBOb25lKSAtPiBwcCBmIFwiYCVzXCIgbFxuICAgIHwgUGV4cF9yZWNvcmQgKGwsIGVvKSAtPlxuICAgICAgICBsZXQgbG9uZ2lkZW50X3hfZXhwcmVzc2lvbiBmIChsaSwgZSkgPVxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0OyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH1cbiAgICAgICAgICAgIHdoZW4gbGkudHh0ID0gdHh0IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQF1cIiBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQDs9QDslYUBdXCIgbG9uZ2lkZW50X2xvYyBsaSAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj57QDslYSVhQF1AO31AXVwiICgqIFwiQFs8aG92Mj57JWElYX1AXVwiICopXG4gICAgICAgICAgKG9wdGlvbiB+bGFzdDpcIiB3aXRoQDtcIiAoc2ltcGxlX2V4cHIgY3R4dCkpXG4gICAgICAgICAgZW9cbiAgICAgICAgICAobGlzdCBsb25naWRlbnRfeF9leHByZXNzaW9uIH5zZXA6XCI7QDtcIilcbiAgICAgICAgICBsXG4gICAgfCBQZXhwX2FycmF5IGwgLT5cbiAgICAgICAgcHAgZiBcIkBbPDA+QFs8Mj5bfCVhfF1AXUBdXCJcbiAgICAgICAgICAobGlzdCAoc2ltcGxlX2V4cHIgKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7XCIpXG4gICAgICAgICAgbFxuICAgIHwgUGV4cF93aGlsZSAoZTEsIGUyKSAtPlxuICAgICAgICBsZXQgZm10IDogKF8sIF8sIF8pIGZvcm1hdCA9IFwiQFs8Mj53aGlsZUA7JWFAO2RvQDslYUA7ZG9uZUBdXCIgaW5cbiAgICAgICAgcHAgZiBmbXQgKGV4cHJlc3Npb24gY3R4dCkgZTEgKGV4cHJlc3Npb24gY3R4dCkgZTJcbiAgICB8IFBleHBfZm9yIChzLCBlMSwgZTIsIGRmLCBlMykgLT5cbiAgICAgICAgbGV0IGZtdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgICAgICAgIFwiQFs8aHYwPkBbPGh2Mj5AWzwyPmZvciAlYSA9QDslYUA7JWElYUA7ZG9AXUA7JWFAXUA7ZG9uZUBdXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHJlc3Npb24gPSBleHByZXNzaW9uIGN0eHQgaW5cbiAgICAgICAgcHAgZiBmbXQgKHBhdHRlcm4gY3R4dCkgcyBleHByZXNzaW9uIGUxIGRpcmVjdGlvbl9mbGFnIGRmIGV4cHJlc3Npb24gZTJcbiAgICAgICAgICBleHByZXNzaW9uIGUzXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKGV4cHJlc3Npb24gY3R4dCkgZiB4XG5cbmFuZCBhdHRyaWJ1dGVzIGN0eHQgZiBsID0gTGlzdC5pdGVyIChhdHRyaWJ1dGUgY3R4dCBmKSBsXG5hbmQgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiBsID0gTGlzdC5pdGVyIChpdGVtX2F0dHJpYnV0ZSBjdHh0IGYpIGxcblxuYW5kIGF0dHJpYnV0ZSBjdHh0IGYgYSA9XG4gIHBwIGYgXCJAWzwyPltAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgaXRlbV9hdHRyaWJ1dGUgY3R4dCBmIGEgPVxuICBwcCBmIFwiQFs8Mj5bQEBAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhID1cbiAgcHAgZiBcIkBbPDI+W0BAQEBAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgdmFsdWVfZGVzY3JpcHRpb24gY3R4dCBmIHggPVxuICAoKiBub3RlOiB2YWx1ZV9kZXNjcmlwdGlvbiBoYXMgYW4gYXR0cmlidXRlIGZpZWxkLFxuICAgICAgICAgICBidXQgdGhleSdyZSBhbHJlYWR5IHByaW50ZWQgYnkgdGhlIGNhbGxlcnMgdGhpcyBtZXRob2QgKilcbiAgcHAgZiBcIkBbPGhvdjI+JWElYUBdXCIgKGNvcmVfdHlwZSBjdHh0KSB4LnB2YWxfdHlwZVxuICAgIChmdW4gZiB4IC0+XG4gICAgICBpZiB4LnB2YWxfcHJpbSA8PiBbXSB0aGVuXG4gICAgICAgIHBwIGYgXCJAID1AICVhXCIgKGxpc3QgY29uc3RhbnRfc3RyaW5nKSB4LnB2YWxfcHJpbSlcbiAgICB4XG5cbmFuZCBleHRlbnNpb24gY3R4dCBmIChzLCBlKSA9IHBwIGYgXCJAWzwyPlslJSVzQCAlYV1AXVwiIHMudHh0IChwYXlsb2FkIGN0eHQpIGVcblxuYW5kIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiAocywgZSkgPVxuICBwcCBmIFwiQFs8Mj5bJSUlJSVzQCAlYV1AXVwiIHMudHh0IChwYXlsb2FkIGN0eHQpIGVcblxuYW5kIGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgeCA9XG4gIHBwIGYgXCJAWzxob3YyPmV4Y2VwdGlvbkAgJWFAXSVhXCJcbiAgICAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQpXG4gICAgeC5wdHlleG5fY29uc3RydWN0b3IgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB0eWV4bl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY3RmX2Rlc2Mgd2l0aFxuICB8IFBjdGZfaW5oZXJpdCBjdCAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5oZXJpdEAgJWFAXSVhXCIgKGNsYXNzX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfdmFsIChzLCBtZiwgdmYsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+dmFsIEAgJWElYSVzQCA6QCAlYUBdJWFcIiBtdXRhYmxlX2ZsYWcgbWYgdmlydHVhbF9mbGFnIHZmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfbWV0aG9kIChzLCBwZiwgdmYsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kICVhICVhJXMgOkA7JWFAXSVhXCIgcHJpdmF0ZV9mbGFnIHBmIHZpcnR1YWxfZmxhZyB2ZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX2NvbnN0cmFpbnQgKGN0MSwgY3QyKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+Y29uc3RyYWludEAgJWFAID1AICVhQF0lYVwiIChjb3JlX3R5cGUgY3R4dCkgY3QxXG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QyIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBjdGZfZXh0ZW5zaW9uIGUgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdGZfYXR0cmlidXRlc1xuXG5hbmQgY2xhc3Nfc2lnbmF0dXJlIGN0eHQgZiB7IHBjc2lnX3NlbGYgPSBjdDsgcGNzaWdfZmllbGRzID0gbDsgXyB9ID1cbiAgcHAgZiBcIkBbPGh2MD5AWzxodjI+b2JqZWN0QFs8MT4lYUBdQCAlYUBdQCBlbmRAXVwiXG4gICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbnk7IHB0eXBfYXR0cmlidXRlcyA9IFtdOyBfIH0gLT4gKClcbiAgICAgIHwgY3QgLT4gcHAgZiBcIiAoJWEpXCIgKGNvcmVfdHlwZSBjdHh0KSBjdClcbiAgICBjdFxuICAgIChsaXN0IChjbGFzc190eXBlX2ZpZWxkIGN0eHQpIH5zZXA6XCJAO1wiKVxuICAgIGxcblxuKCogY2FsbCBbY2xhc3Nfc2lnbmF0dXJlXSBjYWxsZWQgYnkgW2NsYXNzX3NpZ25hdHVyZV0gKilcbmFuZCBjbGFzc190eXBlIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY3R5X2Rlc2Mgd2l0aFxuICB8IFBjdHlfc2lnbmF0dXJlIGNzIC0+XG4gICAgICBjbGFzc19zaWduYXR1cmUgY3R4dCBmIGNzO1xuICAgICAgYXR0cmlidXRlcyBjdHh0IGYgeC5wY3R5X2F0dHJpYnV0ZXNcbiAgfCBQY3R5X2NvbnN0ciAobGksIGwpIC0+XG4gICAgICBwcCBmIFwiJWElYSVhXCJcbiAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IHBwIGYgXCJbJWFdQCBcIiAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIpIGwpXG4gICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaSAoYXR0cmlidXRlcyBjdHh0KSB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfYXJyb3cgKGwsIGNvLCBjbCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVhQDstPkA7JWFAXVwiICgqIEZJWE1FIHJlbW92ZSBwYXJlbnMgbGF0ZXIgKilcbiAgICAgICAgKHR5cGVfd2l0aF9sYWJlbCBjdHh0KSAobCwgY28pIChjbGFzc190eXBlIGN0eHQpIGNsXG4gIHwgUGN0eV9leHRlbnNpb24gZSAtPlxuICAgICAgZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgYXR0cmlidXRlcyBjdHh0IGYgeC5wY3R5X2F0dHJpYnV0ZXNcbiAgfCBQY3R5X29wZW4gKG8sIGUpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5sZXQgb3BlbiVzICVhIGluQDslYUBdXCJcbiAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIGxvbmdpZGVudF9sb2Mgby5wb3Blbl9leHByIChjbGFzc190eXBlIGN0eHQpIGVcblxuKCogW2NsYXNzIHR5cGUgYSA9IG9iamVjdCBlbmRdICopXG5hbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsID1cbiAgbGV0IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24ga3dkIGYgeCA9XG4gICAgbGV0IHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSA9IHggaW5cbiAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXNAID1AICVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgKGNsYXNzX3BhcmFtc19kZWYgY3R4dCkgbHMgdHh0IChjbGFzc190eXBlIGN0eHQpIHgucGNpX2V4cHJcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2lfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IFsgeCBdIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gXCJjbGFzcyB0eXBlXCIgZiB4XG4gIHwgeCA6OiB4cyAtPlxuICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAoY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImNsYXNzIHR5cGVcIilcbiAgICAgICAgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImFuZFwiKSlcbiAgICAgICAgeHNcblxuYW5kIGNsYXNzX2ZpZWxkIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY2ZfZGVzYyB3aXRoXG4gIHwgUGNmX2luaGVyaXQgKG92ZiwgY2UsIHNvKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5oZXJpdEAgJXNAICVhJWFAXSVhXCIgKG92ZXJyaWRlIG92ZikgKGNsYXNzX2V4cHIgY3R4dCkgY2VcbiAgICAgICAgKGZ1biBmIHNvIC0+XG4gICAgICAgICAgbWF0Y2ggc28gd2l0aCBOb25lIC0+ICgpIHwgU29tZSBzIC0+IHBwIGYgXCJAIGFzICVzXCIgcy50eHQpXG4gICAgICAgIHNvIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl92YWwgKHMsIG1mLCBDZmtfY29uY3JldGUgKG92ZiwgZSkpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj52YWwlcyAlYSVzID1AOyVhQF0lYVwiIChvdmVycmlkZSBvdmYpIG11dGFibGVfZmxhZyBtZiBzLnR4dFxuICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9tZXRob2QgKHMsIHBmLCBDZmtfdmlydHVhbCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPm1ldGhvZCB2aXJ0dWFsICVhICVzIDpAOyVhQF0lYVwiIHByaXZhdGVfZmxhZyBwZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl92YWwgKHMsIG1mLCBDZmtfdmlydHVhbCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPnZhbCB2aXJ0dWFsICVhJXMgOkAgJWFAXSVhXCIgbXV0YWJsZV9mbGFnIG1mIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX21ldGhvZCAocywgcGYsIENma19jb25jcmV0ZSAob3ZmLCBlKSkgLT5cbiAgICAgIGxldCBiaW5kIGUgPVxuICAgICAgICBiaW5kaW5nIGN0eHQgZlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB2Yl9wYXQgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gUHBhdF92YXIgcztcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHB2Yl9leHByID0gZTtcbiAgICAgICAgICAgIHB2Yl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdmJfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kJXMgJWElYUBdJWFcIiAob3ZlcnJpZGUgb3ZmKSBwcml2YXRlX2ZsYWcgcGZcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfcG9seSAoZSwgU29tZSBjdCk7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVzIDpAOyVhPUA7JWFcIiBzLnR4dCAoY29yZV90eXBlIGN0eHQpIGN0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9wb2x5IChlLCBOb25lKTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPlxuICAgICAgICAgICAgICBiaW5kIGVcbiAgICAgICAgICB8IF8gLT4gYmluZCBlKVxuICAgICAgICBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9jb25zdHJhaW50IChjdDEsIGN0MikgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmNvbnN0cmFpbnQgJWEgPUA7JWFAXSVhXCIgKGNvcmVfdHlwZSBjdHh0KSBjdDEgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgICBjdDIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2luaXRpYWxpemVyIGUgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmluaXRpYWxpemVyQCAlYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQY2ZfZXh0ZW5zaW9uIGUgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiB4LnBjZl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc19zdHJ1Y3R1cmUgY3R4dCBmIHsgcGNzdHJfc2VsZiA9IHA7IHBjc3RyX2ZpZWxkcyA9IGwgfSA9XG4gIHBwIGYgXCJAWzxodjA+QFs8aHYyPm9iamVjdCVhQDslYUBdQDtlbmRAXVwiXG4gICAgKGZ1biBmIHAgLT5cbiAgICAgIG1hdGNoIHAucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF9hbnkgLT4gKClcbiAgICAgIHwgUHBhdF9jb25zdHJhaW50IF8gLT4gcHAgZiBcIiAlYVwiIChwYXR0ZXJuIGN0eHQpIHBcbiAgICAgIHwgXyAtPiBwcCBmIFwiICglYSlcIiAocGF0dGVybiBjdHh0KSBwKVxuICAgIHBcbiAgICAobGlzdCAoY2xhc3NfZmllbGQgY3R4dCkpXG4gICAgbFxuXG5hbmQgY2xhc3NfZXhwciBjdHh0IGYgeCA9XG4gIGlmIHgucGNsX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChjbGFzc19leHByIGN0eHQpXG4gICAgICB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucGNsX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucGNsX2Rlc2Mgd2l0aFxuICAgIHwgUGNsX3N0cnVjdHVyZSBjcyAtPiBjbGFzc19zdHJ1Y3R1cmUgY3R4dCBmIGNzXG4gICAgfCBQY2xfZnVuIChsLCBlbywgcCwgZSkgLT5cbiAgICAgICAgcHAgZiBcImZ1bkAgJWFAIC0+QCAlYVwiIChsYWJlbF9leHAgY3R4dCkgKGwsIGVvLCBwKSAoY2xhc3NfZXhwciBjdHh0KSBlXG4gICAgfCBQY2xfbGV0IChyZiwgbCwgY2UpIC0+XG4gICAgICAgIHBwIGYgXCIlYUAgaW5AICVhXCIgKGJpbmRpbmdzIGN0eHQpIChyZiwgbCkgKGNsYXNzX2V4cHIgY3R4dCkgY2VcbiAgICB8IFBjbF9hcHBseSAoY2UsIGwpIC0+XG4gICAgICAgIHBwIGYgXCIoKCVhKUAgJWEpXCJcbiAgICAgICAgICAoKiBDZjogIzcyMDAgKikgKGNsYXNzX2V4cHIgY3R4dClcbiAgICAgICAgICBjZVxuICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCkpXG4gICAgICAgICAgbFxuICAgIHwgUGNsX2NvbnN0ciAobGksIGwpIC0+XG4gICAgICAgIHBwIGYgXCIlYSVhXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgaWYgbCA8PiBbXSB0aGVuIHBwIGYgXCJbJWFdQCBcIiAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIpIGwpXG4gICAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQY2xfY29uc3RyYWludCAoY2UsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiKCVhQCA6QCAlYSlcIiAoY2xhc3NfZXhwciBjdHh0KSBjZSAoY2xhc3NfdHlwZSBjdHh0KSBjdFxuICAgIHwgUGNsX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUGNsX29wZW4gKG8sIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAgIChvdmVycmlkZSBvLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICAgIGxvbmdpZGVudF9sb2Mgby5wb3Blbl9leHByIChjbGFzc19leHByIGN0eHQpIGVcblxuYW5kIG1vZHVsZV90eXBlIGN0eHQgZiB4ID1cbiAgaWYgeC5wbXR5X2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChtb2R1bGVfdHlwZSBjdHh0KVxuICAgICAgeyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wbXR5X2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucG10eV9kZXNjIHdpdGhcbiAgICB8IFBtdHlfZnVuY3RvciAoVW5pdCwgbXQyKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5mdW5jdG9yICgpIC0+QCAlYUBdXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10MlxuICAgIHwgUG10eV9mdW5jdG9yIChOYW1lZCAocywgbXQxKSwgbXQyKSAtPiAoXG4gICAgICAgIG1hdGNoIHMudHh0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUAgLT5AICVhQF1cIiAobW9kdWxlX3R5cGUxIGN0eHQpIG10MVxuICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQyXG4gICAgICAgIHwgU29tZSBuYW1lIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5mdW5jdG9yQCAoJXNAIDpAICVhKUAgLT5AICVhQF1cIiBuYW1lXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdDEgKG1vZHVsZV90eXBlIGN0eHQpIG10MilcbiAgICB8IFBtdHlfd2l0aCAobXQsIFtdKSAtPiBtb2R1bGVfdHlwZSBjdHh0IGYgbXRcbiAgICB8IFBtdHlfd2l0aCAobXQsIGwpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQCB3aXRoQCAlYUBdXCIgKG1vZHVsZV90eXBlMSBjdHh0KSBtdFxuICAgICAgICAgIChsaXN0ICh3aXRoX2NvbnN0cmFpbnQgY3R4dCkgfnNlcDpcIkAgYW5kQCBcIilcbiAgICAgICAgICBsXG4gICAgfCBfIC0+IG1vZHVsZV90eXBlMSBjdHh0IGYgeFxuXG5hbmQgd2l0aF9jb25zdHJhaW50IGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgUHdpdGhfdHlwZSAobGksICh7IHB0eXBlX3BhcmFtcyA9IGxzOyBfIH0gYXMgdGQpKSAtPlxuICAgICAgbGV0IGxzID0gTGlzdC5tYXAgZnN0IGxzIGluXG4gICAgICBwcCBmIFwidHlwZUAgJWEgJWEgPUAgJWFcIlxuICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICBscyBsb25naWRlbnRfbG9jIGxpICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHRkXG4gIHwgUHdpdGhfbW9kdWxlIChsaSwgbGkyKSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSAlYSA9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgbG9uZ2lkZW50X2xvYyBsaTJcbiAgfCBQd2l0aF9tb2R0eXBlIChsaSwgbXR5KSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSB0eXBlICVhID1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSAobW9kdWxlX3R5cGUgY3R4dCkgbXR5XG4gIHwgUHdpdGhfdHlwZXN1YnN0IChsaSwgKHsgcHR5cGVfcGFyYW1zID0gbHM7IF8gfSBhcyB0ZCkpIC0+XG4gICAgICBsZXQgbHMgPSBMaXN0Lm1hcCBmc3QgbHMgaW5cbiAgICAgIHBwIGYgXCJ0eXBlQCAlYSAlYSA6PUAgJWFcIlxuICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICBscyBsb25naWRlbnRfbG9jIGxpICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHRkXG4gIHwgUHdpdGhfbW9kc3Vic3QgKGxpLCBsaTIpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlICVhIDo9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgbG9uZ2lkZW50X2xvYyBsaTJcbiAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGxpLCBtdHkpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlIHR5cGUgJWEgOj1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSAobW9kdWxlX3R5cGUgY3R4dCkgbXR5XG5cbmFuZCBtb2R1bGVfdHlwZTEgY3R4dCBmIHggPVxuICBpZiB4LnBtdHlfYXR0cmlidXRlcyA8PiBbXSB0aGVuIG1vZHVsZV90eXBlIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBtdHlfZGVzYyB3aXRoXG4gICAgfCBQbXR5X2lkZW50IGxpIC0+IHBwIGYgXCIlYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBtdHlfYWxpYXMgbGkgLT4gcHAgZiBcIihtb2R1bGUgJWEpXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUG10eV9zaWduYXR1cmUgcyAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj5zaWdAICVhQF1AIGVuZEBdXCIgKCogXCJAWzxob3Y+c2lnQCAlYUAgZW5kQF1cIiAqKVxuICAgICAgICAgIChsaXN0IChzaWduYXR1cmVfaXRlbSBjdHh0KSlcbiAgICAgICAgICBzXG4gICAgICAgICgqIEZJWE1FIHdyb25nIGluZGVudGF0aW9uKilcbiAgICB8IFBtdHlfdHlwZW9mIG1lIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgb2ZAICVhQF1cIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKG1vZHVsZV90eXBlIGN0eHQpIGYgeFxuXG5hbmQgc2lnbmF0dXJlIGN0eHQgZiB4ID0gbGlzdCB+c2VwOlwiQFxcblwiIChzaWduYXR1cmVfaXRlbSBjdHh0KSBmIHhcblxuYW5kIHNpZ25hdHVyZV9pdGVtIGN0eHQgZiB4IDogdW5pdCA9XG4gIG1hdGNoIHgucHNpZ19kZXNjIHdpdGhcbiAgfCBQc2lnX3R5cGUgKHJmLCBsKSAtPiB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIHRydWUsIGwpXG4gIHwgUHNpZ190eXBlc3Vic3QgbCAtPlxuICAgICAgKCogUHNpZ190eXBlc3Vic3QgaXMgbmV2ZXIgcmVjdXJzaXZlLCBidXQgd2Ugc3BlY2lmeSBbUmVjdXJzaXZlXSBoZXJlIHRvXG4gICAgICAgICBhdm9pZCBwcmludGluZyBhIFtub25yZWNdIGZsYWcsIHdoaWNoIHdvdWxkIGJlIHJlamVjdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAqKVxuICAgICAgdHlwZV9kZWZfbGlzdCBjdHh0IGYgKFJlY3Vyc2l2ZSwgZmFsc2UsIGwpXG4gIHwgUHNpZ192YWx1ZSB2ZCAtPlxuICAgICAgbGV0IGludHJvID0gaWYgdmQucHZhbF9wcmltID0gW10gdGhlbiBcInZhbFwiIGVsc2UgXCJleHRlcm5hbFwiIGluXG4gICAgICBwcCBmIFwiQFs8Mj4lc0AgJWFAIDpAICVhQF0lYVwiIGludHJvIHByb3RlY3RfaWRlbnQgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb24gY3R4dCkgdmQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB2ZC5wdmFsX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX3R5cGV4dCB0ZSAtPiB0eXBlX2V4dGVuc2lvbiBjdHh0IGYgdGVcbiAgfCBQc2lnX2V4Y2VwdGlvbiBlZCAtPiBleGNlcHRpb25fZGVjbGFyYXRpb24gY3R4dCBmIGVkXG4gIHwgUHNpZ19jbGFzcyBsIC0+IChcbiAgICAgIGxldCBjbGFzc19kZXNjcmlwdGlvbiBrd2QgZlxuICAgICAgICAgICh7IHBjaV9wYXJhbXMgPSBsczsgcGNpX25hbWUgPSB7IHR4dDsgXyB9OyBfIH0gYXMgeCkgPVxuICAgICAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXNAOzpAOyVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgICAgIChjbGFzc19wYXJhbXNfZGVmIGN0eHQpIGxzIHR4dCAoY2xhc3NfdHlwZSBjdHh0KSB4LnBjaV9leHByXG4gICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjaV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IFsgeCBdIC0+IGNsYXNzX2Rlc2NyaXB0aW9uIFwiY2xhc3NcIiBmIHhcbiAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCJcbiAgICAgICAgICAgIChjbGFzc19kZXNjcmlwdGlvbiBcImNsYXNzXCIpXG4gICAgICAgICAgICB4XG4gICAgICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoY2xhc3NfZGVzY3JpcHRpb24gXCJhbmRcIikpXG4gICAgICAgICAgICB4cylcbiAgfCBQc2lnX21vZHVsZVxuICAgICAgKHtcbiAgICAgICAgIHBtZF90eXBlID0geyBwbXR5X2Rlc2MgPSBQbXR5X2FsaWFzIGFsaWFzOyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHBtZCkgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgPUAgJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICBsb25naWRlbnRfbG9jIGFsaWFzIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1kLnBtZF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2R1bGUgcG1kIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Pm1vZHVsZUAgJXNAIDpAICVhQF0lYVwiXG4gICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHBtZC5wbWRfdHlwZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHBtZC5wbWRfYXR0cmlidXRlc1xuICB8IFBzaWdfbW9kc3Vic3QgcG1zIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Pm1vZHVsZUAgJXNAIDo9QCAlYUBdJWFcIiBwbXMucG1zX25hbWUudHh0IGxvbmdpZGVudF9sb2NcbiAgICAgICAgcG1zLnBtc19tYW5pZmVzdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtcy5wbXNfYXR0cmlidXRlc1xuICB8IFBzaWdfb3BlbiBvZCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+b3BlbiVzQCAlYUBdJWFcIlxuICAgICAgICAob3ZlcnJpZGUgb2QucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIGxvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIG9kLnBvcGVuX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX2luY2x1ZGUgaW5jbCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+aW5jbHVkZUAgJWFAXSVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIGluY2wucGluY2xfbW9kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgaW5jbC5waW5jbF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2R0eXBlIHsgcG10ZF9uYW1lID0gczsgcG10ZF90eXBlID0gbWQ7IHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgJXMlYUBdJWFcIiBzLnR4dFxuICAgICAgICAoZnVuIGYgbWQgLT5cbiAgICAgICAgICBtYXRjaCBtZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIHBwX3ByaW50X3NwYWNlIGYgKCk7XG4gICAgICAgICAgICAgIHBwIGYgXCJAID1AICVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10KVxuICAgICAgICBtZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHNpZ19tb2R0eXBlc3Vic3QgeyBwbXRkX25hbWUgPSBzOyBwbXRkX3R5cGUgPSBtZDsgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIC0+XG4gICAgICBsZXQgbWQgPVxuICAgICAgICBtYXRjaCBtZCB3aXRoIE5vbmUgLT4gYXNzZXJ0IGZhbHNlICgqIGFzdCBpbnZhcmlhbnQgKikgfCBTb21lIG10IC0+IG10XG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCAlc0AgOj1AICVhQF0lYVwiIHMudHh0IChtb2R1bGVfdHlwZSBjdHh0KSBtZFxuICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHNpZ19jbGFzc190eXBlIGwgLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsXG4gIHwgUHNpZ19yZWNtb2R1bGUgZGVjbHMgLT5cbiAgICAgIGxldCByZWMgc3RyaW5nX3hfbW9kdWxlX3R5cGVfbGlzdCBmID8oZmlyc3QgPSB0cnVlKSBsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBwbWQgOjogdGwgLT5cbiAgICAgICAgICAgIGlmIG5vdCBmaXJzdCB0aGVuXG4gICAgICAgICAgICAgIHBwIGYgXCJAIEBbPGhvdjI+YW5kQCAlczpAICVhQF0lYVwiXG4gICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAgIChtb2R1bGVfdHlwZTEgY3R4dCkgcG1kLnBtZF90eXBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgICAgICBwbWQucG1kX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCByZWNAICVzOkAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgKG1vZHVsZV90eXBlMSBjdHh0KSBwbWQucG1kX3R5cGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICAgIHBtZC5wbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHN0cmluZ194X21vZHVsZV90eXBlX2xpc3QgZiB+Zmlyc3Q6ZmFsc2UgdGxcbiAgICAgIGluXG4gICAgICBzdHJpbmdfeF9tb2R1bGVfdHlwZV9saXN0IGYgZGVjbHNcbiAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBzaWdfZXh0ZW5zaW9uIChlLCBhKSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGFcblxuYW5kIG1vZHVsZV9leHByIGN0eHQgZiB4ID1cbiAgaWYgeC5wbW9kX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChtb2R1bGVfZXhwciBjdHh0KVxuICAgICAgeyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wbW9kX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucG1vZF9kZXNjIHdpdGhcbiAgICB8IFBtb2Rfc3RydWN0dXJlIHMgLT5cbiAgICAgICAgcHAgZiBcIkBbPGh2Mj5zdHJ1Y3RAO0BbPDA+JWFAXUA7PDEgLTI+ZW5kQF1cIlxuICAgICAgICAgIChsaXN0IChzdHJ1Y3R1cmVfaXRlbSBjdHh0KSB+c2VwOlwiQFxcblwiKVxuICAgICAgICAgIHNcbiAgICB8IFBtb2RfY29uc3RyYWludCAobWUsIG10KSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4oJWFAIDpAICVhKUBdXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lIChtb2R1bGVfdHlwZSBjdHh0KSBtdFxuICAgIHwgUG1vZF9pZGVudCBsaSAtPiBwcCBmIFwiJWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQbW9kX2Z1bmN0b3IgKFVuaXQsIG1lKSAtPiBwcCBmIFwiZnVuY3RvciAoKUA7LT5AOyVhXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQbW9kX2Z1bmN0b3IgKE5hbWVkIChzLCBtdCksIG1lKSAtPlxuICAgICAgICBwcCBmIFwiZnVuY3RvckAgKCVzQCA6QCAlYSlAOy0+QDslYVwiXG4gICAgICAgICAgKE9wdGlvbi52YWx1ZSBzLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQbW9kX2FwcGx5IChtZTEsIG1lMikgLT5cbiAgICAgICAgcHAgZiBcIiglYSkoJWEpXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lMSAobW9kdWxlX2V4cHIgY3R4dCkgbWUyXG4gICAgICAgICgqIENmOiAjNzIwMCAqKVxuICAgIHwgUG1vZF91bnBhY2sgZSAtPiBwcCBmIFwiKHZhbEAgJWEpXCIgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUG1vZF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcblxuYW5kIHN0cnVjdHVyZSBjdHh0IGYgeCA9IGxpc3QgfnNlcDpcIkBcXG5cIiAoc3RydWN0dXJlX2l0ZW0gY3R4dCkgZiB4XG5cbmFuZCBwYXlsb2FkIGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgUFN0ciBbIHsgcHN0cl9kZXNjID0gUHN0cl9ldmFsIChlLCBhdHRycykgfSBdIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQU3RyIHggLT4gc3RydWN0dXJlIGN0eHQgZiB4XG4gIHwgUFR5cCB4IC0+XG4gICAgICBwcCBmIFwiOkAgXCI7XG4gICAgICBjb3JlX3R5cGUgY3R4dCBmIHhcbiAgfCBQU2lnIHggLT5cbiAgICAgIHBwIGYgXCI6QCBcIjtcbiAgICAgIHNpZ25hdHVyZSBjdHh0IGYgeFxuICB8IFBQYXQgKHgsIE5vbmUpIC0+XG4gICAgICBwcCBmIFwiP0AgXCI7XG4gICAgICBwYXR0ZXJuIGN0eHQgZiB4XG4gIHwgUFBhdCAoeCwgU29tZSBlKSAtPlxuICAgICAgcHAgZiBcIj9AIFwiO1xuICAgICAgcGF0dGVybiBjdHh0IGYgeDtcbiAgICAgIHBwIGYgXCIgd2hlbiBcIjtcbiAgICAgIGV4cHJlc3Npb24gY3R4dCBmIGVcblxuKCogdHJhbnNmb3JtIFtmID0gZnVuIGcgaCAtPiAuLl0gdG8gW2YgZyBoID0gLi4uIF0gY291bGQgYmUgaW1wcm92ZWQgKilcbmFuZCBiaW5kaW5nIGN0eHQgZiB7IHB2Yl9wYXQgPSBwOyBwdmJfZXhwciA9IHg7IF8gfSA9XG4gICgqIC5wdmJfYXR0cmlidXRlcyBoYXZlIGFscmVhZHkgYmVlbiBwcmludGVkIGJ5IHRoZSBjYWxsZXIsICNiaW5kaW5ncyAqKVxuICBsZXQgcmVjIHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZiB4ID1cbiAgICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIHBwIGYgXCI9QDslYVwiIChleHByZXNzaW9uIGN0eHQpIHhcbiAgICBlbHNlXG4gICAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfZnVuIChsYWJlbCwgZW8sIHAsIGUpIC0+XG4gICAgICAgICAgaWYgbGFiZWwgPSBOb2xhYmVsIHRoZW5cbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIGVcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKGxhYmVsX2V4cCBjdHh0KSAobGFiZWwsIGVvLCBwKSBwcF9wcmludF9wZXhwX2Z1bmN0aW9uXG4gICAgICAgICAgICAgIGVcbiAgICAgIHwgUGV4cF9uZXd0eXBlIChzdHIsIGUpIC0+XG4gICAgICAgICAgcHAgZiBcIih0eXBlQCAlcylAICVhXCIgc3RyLnR4dCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIGVcbiAgICAgIHwgXyAtPiBwcCBmIFwiPUA7JWFcIiAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gIGluXG4gIGxldCB0eXZhcnNfc3RyIHR5dmFycyA9IExpc3QubWFwIChmdW4gdiAtPiB2LnR4dCkgdHl2YXJzIGluXG4gIGxldCBpc19kZXN1Z2FyZWRfZ2FkdCBwIGUgPVxuICAgIGxldCBnYWR0X3BhdHRlcm4gPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHtcbiAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICAgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKGFyZ3NfdHl2YXJzLCBydCkgfSApO1xuICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIFNvbWUgKHBhdCwgYXJnc190eXZhcnMsIHJ0KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCByZWMgZ2FkdF9leHAgdHl2YXJzIGUgPVxuICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9uZXd0eXBlICh0eXZhciwgZSk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICBnYWR0X2V4cCAodHl2YXIgOjogdHl2YXJzKSBlXG4gICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJhaW50IChlLCBjdCk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICBTb21lIChMaXN0LnJldiB0eXZhcnMsIGUsIGN0KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCBnYWR0X2V4cCA9IGdhZHRfZXhwIFtdIGUgaW5cbiAgICBtYXRjaCAoZ2FkdF9wYXR0ZXJuLCBnYWR0X2V4cCkgd2l0aFxuICAgIHwgU29tZSAocCwgcHRfdHl2YXJzLCBwdF9jdCksIFNvbWUgKGVfdHl2YXJzLCBlLCBlX2N0KVxuICAgICAgd2hlbiB0eXZhcnNfc3RyIHB0X3R5dmFycyA9IHR5dmFyc19zdHIgZV90eXZhcnMgLT5cbiAgICAgICAgbGV0IGV0eSA9IHZhcmlmeV90eXBlX2NvbnN0cnVjdG9ycyBlX3R5dmFycyBlX2N0IGluXG4gICAgICAgIGlmIGV0eSA9IHB0X2N0IHRoZW4gU29tZSAocCwgcHRfdHl2YXJzLCBlX2N0LCBlKSBlbHNlIE5vbmVcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCB7XG4gICAgIHBwYXRfZGVzYyA9XG4gICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAoICh7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IF8gfSBhcyBwYXQpLFxuICAgICAgICAgICAoeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgXyB9IGFzIHR5cCkgKTtcbiAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgIF87XG4gICAgfSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogJWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBhdCAoY29yZV90eXBlIGN0eHQpIHR5cFxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIHhcbiAgICB8IF8gLT4gcHAgZiBcIiVhQDs9QDslYVwiIChwYXR0ZXJuIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgeFxuICBlbHNlXG4gICAgbWF0Y2ggaXNfZGVzdWdhcmVkX2dhZHQgcCB4IHdpdGhcbiAgICB8IFNvbWUgKHAsIFtdLCBjdCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIiVhQDs6ICVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBTb21lIChwLCB0eXZhcnMsIGN0LCBlKSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogdHlwZUA7JWEuQDslYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgICAgICAgIChsaXN0IHBwX3ByaW50X3N0cmluZyB+c2VwOlwiQDtcIilcbiAgICAgICAgICAodHl2YXJzX3N0ciB0eXZhcnMpIChjb3JlX3R5cGUgY3R4dCkgY3QgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF9jb25zdHJhaW50IChwLCB0eSk7IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT4gKFxuICAgICAgICAgICAgKCogc3BlY2lhbCBjYXNlIGZvciB0aGUgZmlyc3QqKVxuICAgICAgICAgICAgbWF0Y2ggdHkgd2l0aFxuICAgICAgICAgICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBwdHlwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiVhQDs6QDslYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCAoY29yZV90eXBlIGN0eHQpXG4gICAgICAgICAgICAgICAgICB0eSAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiKCVhQDs6QDslYSlAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICAgICAgICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgdHkgKGV4cHJlc3Npb24gY3R4dCkgeClcbiAgICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIHhcbiAgICAgICAgfCBfIC0+IHBwIGYgXCIlYUA7PUA7JWFcIiAocGF0dGVybiBjdHh0KSBwIChleHByZXNzaW9uIGN0eHQpIHgpXG5cbigqIFtpbl0gaXMgbm90IHByaW50ZWQgKilcbmFuZCBiaW5kaW5ncyBjdHh0IGYgKHJmLCBsKSA9XG4gIGxldCBiaW5kaW5nIGt3ZCByZiBmIHggPVxuICAgIHBwIGYgXCJAWzwyPiVzICVhJWFAXSVhXCIga3dkIHJlY19mbGFnIHJmIChiaW5kaW5nIGN0eHQpIHhcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdmJfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IFsgeCBdIC0+IGJpbmRpbmcgXCJsZXRcIiByZiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiIChiaW5kaW5nIFwibGV0XCIgcmYpIHhcbiAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGJpbmRpbmcgXCJhbmRcIiBOb25yZWN1cnNpdmUpKVxuICAgICAgICB4c1xuXG5hbmQgYmluZGluZ19vcCBjdHh0IGYgeCA9XG4gIG1hdGNoICh4LnBib3BfcGF0LCB4LnBib3BfZXhwKSB3aXRoXG4gIHwgKCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0ID0gcHZhcjsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXTsgXyB9LFxuICAgICAge1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGV2YXI7IF8gfTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIF87XG4gICAgICB9IClcbiAgICB3aGVuIHB2YXIgPSBldmFyIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lcyAlc0BdXCIgeC5wYm9wX29wLnR4dCBldmFyXG4gIHwgcGF0LCBleHAgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVzICVhQDs9QDslYUBdXCIgeC5wYm9wX29wLnR4dCAocGF0dGVybiBjdHh0KSBwYXRcbiAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZXhwXG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbSBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucHN0cl9kZXNjIHdpdGhcbiAgfCBQc3RyX2V2YWwgKGUsIGF0dHJzKSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+OzslYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc3RyX3R5cGUgKF8sIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBQc3RyX3R5cGUgKHJmLCBsKSAtPiB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIHRydWUsIGwpXG4gIHwgUHN0cl92YWx1ZSAocmYsIGwpIC0+XG4gICAgICAoKiBwcCBmIFwiQFs8aG92Mj5sZXQgJWElYUBdXCIgIHJlY19mbGFnIHJmIGJpbmRpbmdzIGwgKilcbiAgICAgIHBwIGYgXCJAWzwyPiVhQF1cIiAoYmluZGluZ3MgY3R4dCkgKHJmLCBsKVxuICB8IFBzdHJfdHlwZXh0IHRlIC0+IHR5cGVfZXh0ZW5zaW9uIGN0eHQgZiB0ZVxuICB8IFBzdHJfZXhjZXB0aW9uIGVkIC0+IGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgZWRcbiAgfCBQc3RyX21vZHVsZSB4IC0+XG4gICAgICBsZXQgcmVjIG1vZHVsZV9oZWxwZXIgPSBmdW5jdGlvblxuICAgICAgICB8IHsgcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChhcmdfb3B0LCBtZScpOyBwbW9kX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAobWF0Y2ggYXJnX29wdCB3aXRoXG4gICAgICAgICAgICB8IFVuaXQgLT4gcHAgZiBcIigpXCJcbiAgICAgICAgICAgIHwgTmFtZWQgKHMsIG10KSAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIoJXM6JWEpXCJcbiAgICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcy50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQpO1xuICAgICAgICAgICAgbW9kdWxlX2hlbHBlciBtZSdcbiAgICAgICAgfCBtZSAtPiBtZVxuICAgICAgaW5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZSAlcyVhQF0lYVwiXG4gICAgICAgIChPcHRpb24udmFsdWUgeC5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgIChmdW4gZiBtZSAtPlxuICAgICAgICAgIGxldCBtZSA9IG1vZHVsZV9oZWxwZXIgbWUgaW5cbiAgICAgICAgICBtYXRjaCBtZSB3aXRoXG4gICAgICAgICAgfCB7XG4gICAgICAgICAgIHBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgUG1vZF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAobWUnLCAoeyBwbXR5X2Rlc2MgPSBQbXR5X2lkZW50IF8gfCBQbXR5X3NpZ25hdHVyZSBfOyBfIH0gYXMgbXQpKTtcbiAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiIDpAOyVhQDs9QDslYUA7XCIgKG1vZHVsZV90eXBlIGN0eHQpIG10IChtb2R1bGVfZXhwciBjdHh0KVxuICAgICAgICAgICAgICAgIG1lJ1xuICAgICAgICAgIHwgXyAtPiBwcCBmIFwiID1AICVhXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lKVxuICAgICAgICB4LnBtYl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wbWJfYXR0cmlidXRlc1xuICB8IFBzdHJfb3BlbiBvZCAtPlxuICAgICAgcHAgZiBcIkBbPDI+b3BlbiVzQDslYUBdJWFcIlxuICAgICAgICAob3ZlcnJpZGUgb2QucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBvZC5wb3Blbl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgb2QucG9wZW5fYXR0cmlidXRlc1xuICB8IFBzdHJfbW9kdHlwZSB7IHBtdGRfbmFtZSA9IHM7IHBtdGRfdHlwZSA9IG1kOyBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAICVzJWFAXSVhXCIgcy50eHRcbiAgICAgICAgKGZ1biBmIG1kIC0+XG4gICAgICAgICAgbWF0Y2ggbWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBwcF9wcmludF9zcGFjZSBmICgpO1xuICAgICAgICAgICAgICBwcCBmIFwiQCA9QCAlYVwiIChtb2R1bGVfdHlwZSBjdHh0KSBtdClcbiAgICAgICAgbWQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzdHJfY2xhc3MgbCAtPiAoXG4gICAgICBsZXQgZXh0cmFjdF9jbGFzc19hcmdzIGNsID1cbiAgICAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBjbF9kZXNjID0gUGNsX2Z1biAobCwgZW8sIHAsIGNsJyk7IHBjbF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICBsb29wICgobCwgZW8sIHApIDo6IGFjYykgY2wnXG4gICAgICAgICAgfCBjbCAtPiAoTGlzdC5yZXYgYWNjLCBjbClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFyZ3MsIGNsID0gbG9vcCBbXSBjbCBpblxuICAgICAgICBsZXQgY29uc3RyLCBjbCA9XG4gICAgICAgICAgbWF0Y2ggY2wgd2l0aFxuICAgICAgICAgIHwgeyBwY2xfZGVzYyA9IFBjbF9jb25zdHJhaW50IChjbCcsIGN0KTsgcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgIChTb21lIGN0LCBjbCcpXG4gICAgICAgICAgfCBfIC0+IChOb25lLCBjbClcbiAgICAgICAgaW5cbiAgICAgICAgKGFyZ3MsIGNvbnN0ciwgY2wpXG4gICAgICBpblxuICAgICAgbGV0IGNsYXNzX2NvbnN0cmFpbnQgZiBjdCA9IHBwIGYgXCI6IEBbJWFAXSBcIiAoY2xhc3NfdHlwZSBjdHh0KSBjdCBpblxuICAgICAgbGV0IGNsYXNzX2RlY2xhcmF0aW9uIGt3ZCBmXG4gICAgICAgICAgKHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSBhcyB4KSA9XG4gICAgICAgIGxldCBhcmdzLCBjb25zdHIsIGNsID0gZXh0cmFjdF9jbGFzc19hcmdzIHgucGNpX2V4cHIgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzICVhJWE9QDslYUBdJWFcIiBrd2QgdmlydHVhbF9mbGFnIHgucGNpX3ZpcnRcbiAgICAgICAgICAoY2xhc3NfcGFyYW1zX2RlZiBjdHh0KSBscyB0eHRcbiAgICAgICAgICAobGlzdCAobGFiZWxfZXhwIGN0eHQpKVxuICAgICAgICAgIGFyZ3MgKG9wdGlvbiBjbGFzc19jb25zdHJhaW50KSBjb25zdHIgKGNsYXNzX2V4cHIgY3R4dCkgY2xcbiAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNpX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgWyB4IF0gLT4gY2xhc3NfZGVjbGFyYXRpb24gXCJjbGFzc1wiIGYgeFxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAgICAgKGNsYXNzX2RlY2xhcmF0aW9uIFwiY2xhc3NcIilcbiAgICAgICAgICAgIHhcbiAgICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc19kZWNsYXJhdGlvbiBcImFuZFwiKSlcbiAgICAgICAgICAgIHhzKVxuICB8IFBzdHJfY2xhc3NfdHlwZSBsIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCBjdHh0IGYgbFxuICB8IFBzdHJfcHJpbWl0aXZlIHZkIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5leHRlcm5hbEAgJWFAIDpAICVhQF0lYVwiIHByb3RlY3RfaWRlbnQgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb24gY3R4dCkgdmQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB2ZC5wdmFsX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX2luY2x1ZGUgaW5jbCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+aW5jbHVkZUAgJWFAXSVhXCIgKG1vZHVsZV9leHByIGN0eHQpIGluY2wucGluY2xfbW9kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgaW5jbC5waW5jbF9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9yZWNtb2R1bGUgZGVjbHMgLT4gKFxuICAgICAgKCogMy4wNyAqKVxuICAgICAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICAgICAgfCB7IHBtYl9leHByID0geyBwbW9kX2Rlc2MgPSBQbW9kX2NvbnN0cmFpbnQgKGV4cHIsIHR5cCkgfSB9IGFzIHBtYiAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBhbmRAICVzOiVhQCA9QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSB0eXAgKG1vZHVsZV9leHByIGN0eHQpIGV4cHJcbiAgICAgICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgfCBwbWIgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPkAgYW5kQCAlc0AgPUAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgcG1iLnBtYl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgICAgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbWF0Y2ggZGVjbHMgd2l0aFxuICAgICAgfCAoeyBwbWJfZXhwciA9IHsgcG1vZF9kZXNjID0gUG1vZF9jb25zdHJhaW50IChleHByLCB0eXApIH0gfSBhcyBwbWIpXG4gICAgICAgIDo6IGwyIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPGh2PkBbPGhvdjI+bW9kdWxlQCByZWNAICVzOiVhQCA9QCAlYUBdJWFAICVhQF1cIlxuICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHR5cCAobW9kdWxlX2V4cHIgY3R4dCkgZXhwclxuICAgICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIChmdW4gZiBsMiAtPiBMaXN0Lml0ZXIgKGF1eCBmKSBsMilcbiAgICAgICAgICAgIGwyXG4gICAgICB8IHBtYiA6OiBsMiAtPlxuICAgICAgICAgIHBwIGYgXCJAWzxodj5AWzxob3YyPm1vZHVsZUAgcmVjQCAlc0AgPUAgJWFAXSVhQCAlYUBdXCJcbiAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBwbWIucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICAgICAgICAoZnVuIGYgbDIgLT4gTGlzdC5pdGVyIChhdXggZikgbDIpXG4gICAgICAgICAgICBsMlxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBzdHJfZXh0ZW5zaW9uIChlLCBhKSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGFcblxuYW5kIHR5cGVfcGFyYW0gY3R4dCBmIChjdCwgKGEsIGIpKSA9XG4gIHBwIGYgXCIlcyVzJWFcIiAodHlwZV92YXJpYW5jZSBhKSAodHlwZV9pbmplY3Rpdml0eSBiKSAoY29yZV90eXBlIGN0eHQpIGN0XG5cbmFuZCB0eXBlX3BhcmFtcyBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgbCAtPiBwcCBmIFwiJWEgXCIgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiIH5zZXA6XCIsQDtcIikgbFxuXG5hbmQgdHlwZV9kZWZfbGlzdCBjdHh0IGYgKHJmLCBleHBvcnRlZCwgbCkgPVxuICBsZXQgdHlwZV9kZWNsIGt3ZCByZiBmIHggPVxuICAgIGxldCBlcSA9XG4gICAgICBpZiB4LnB0eXBlX2tpbmQgPSBQdHlwZV9hYnN0cmFjdCAmJiB4LnB0eXBlX21hbmlmZXN0ID0gTm9uZSB0aGVuIFwiXCJcbiAgICAgIGVsc2UgaWYgZXhwb3J0ZWQgdGhlbiBcIiA9XCJcbiAgICAgIGVsc2UgXCIgOj1cIlxuICAgIGluXG4gICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzJXMlYUBdJWFcIiBrd2Qgbm9ucmVjX2ZsYWcgcmYgKHR5cGVfcGFyYW1zIGN0eHQpXG4gICAgICB4LnB0eXBlX3BhcmFtcyB4LnB0eXBlX25hbWUudHh0IGVxICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHhcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdHlwZV9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IFsgeCBdIC0+IHR5cGVfZGVjbCBcInR5cGVcIiByZiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiICh0eXBlX2RlY2wgXCJ0eXBlXCIgcmYpIHhcbiAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKHR5cGVfZGVjbCBcImFuZFwiIFJlY3Vyc2l2ZSkpXG4gICAgICAgIHhzXG5cbmFuZCByZWNvcmRfZGVjbGFyYXRpb24gY3R4dCBmIGxibHMgPVxuICBsZXQgdHlwZV9yZWNvcmRfZmllbGQgZiBwbGQgPVxuICAgIHBwIGYgXCJAWzwyPiVhJXM6QDslYUA7JWFAXVwiIG11dGFibGVfZmxhZyBwbGQucGxkX211dGFibGUgcGxkLnBsZF9uYW1lLnR4dFxuICAgICAgKGNvcmVfdHlwZSBjdHh0KSBwbGQucGxkX3R5cGUgKGF0dHJpYnV0ZXMgY3R4dCkgcGxkLnBsZF9hdHRyaWJ1dGVzXG4gIGluXG4gIHBwIGYgXCJ7QFxcbiVhfVwiIChsaXN0IHR5cGVfcmVjb3JkX2ZpZWxkIH5zZXA6XCI7QFxcblwiKSBsYmxzXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9uIGN0eHQgZiB4ID1cbiAgKCogdHlwZV9kZWNsYXJhdGlvbiBoYXMgYW4gYXR0cmlidXRlIGZpZWxkLFxuICAgICBidXQgaXQncyBiZWVuIHByaW50ZWQgYnkgdGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCAqKVxuICBsZXQgcHJpdiBmID1cbiAgICBtYXRjaCB4LnB0eXBlX3ByaXZhdGUgd2l0aCBQdWJsaWMgLT4gKCkgfCBQcml2YXRlIC0+IHBwIGYgXCJAO3ByaXZhdGVcIlxuICBpblxuICBsZXQgbWFuaWZlc3QgZiA9XG4gICAgbWF0Y2ggeC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHkgLT5cbiAgICAgICAgaWYgeC5wdHlwZV9raW5kID0gUHR5cGVfYWJzdHJhY3QgdGhlblxuICAgICAgICAgIHBwIGYgXCIldEA7JWFcIiBwcml2IChjb3JlX3R5cGUgY3R4dCkgeVxuICAgICAgICBlbHNlIHBwIGYgXCJAOyVhXCIgKGNvcmVfdHlwZSBjdHh0KSB5XG4gIGluXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBmIHBjZCA9XG4gICAgcHAgZiBcInxAO1wiO1xuICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZlxuICAgICAgKCBwY2QucGNkX25hbWUudHh0LFxuICAgICAgICBwY2QucGNkX3ZhcnMsXG4gICAgICAgIHBjZC5wY2RfYXJncyxcbiAgICAgICAgcGNkLnBjZF9yZXMsXG4gICAgICAgIHBjZC5wY2RfYXR0cmlidXRlcyApXG4gIGluXG4gIGxldCByZXByIGYgPVxuICAgIGxldCBpbnRybyBmID0gaWYgeC5wdHlwZV9tYW5pZmVzdCA9IE5vbmUgdGhlbiAoKSBlbHNlIHBwIGYgXCJAOz1cIiBpblxuICAgIG1hdGNoIHgucHR5cGVfa2luZCB3aXRoXG4gICAgfCBQdHlwZV92YXJpYW50IHhzIC0+XG4gICAgICAgIGxldCB2YXJpYW50cyBmbXQgeHMgPVxuICAgICAgICAgIGlmIHhzID0gW10gdGhlbiBwcCBmbXQgXCIgfFwiXG4gICAgICAgICAgZWxzZSBwcCBmbXQgXCJAXFxuJWFcIiAobGlzdCB+c2VwOlwiQFxcblwiIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uKSB4c1xuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiJXQldCVhXCIgaW50cm8gcHJpdiB2YXJpYW50cyB4c1xuICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKClcbiAgICB8IFB0eXBlX3JlY29yZCBsIC0+IHBwIGYgXCIldCV0QDslYVwiIGludHJvIHByaXYgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsXG4gICAgfCBQdHlwZV9vcGVuIC0+IHBwIGYgXCIldCV0QDsuLlwiIGludHJvIHByaXZcbiAgaW5cbiAgbGV0IGNvbnN0cmFpbnRzIGYgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoY3QxLCBjdDIsIF8pIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPkAgY29uc3RyYWludEAgJWFAID1AICVhQF1cIiAoY29yZV90eXBlIGN0eHQpIGN0MVxuICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QyKVxuICAgICAgeC5wdHlwZV9jc3Ryc1xuICBpblxuICBwcCBmIFwiJXQldCV0XCIgbWFuaWZlc3QgcmVwciBjb25zdHJhaW50c1xuXG5hbmQgdHlwZV9leHRlbnNpb24gY3R4dCBmIHggPVxuICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGYgeCA9XG4gICAgcHAgZiBcIkBcXG58QDslYVwiIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dCkgeFxuICBpblxuICBwcCBmIFwiQFs8Mj50eXBlICVhJWEgKz0gJWFAICVhQF0lYVwiXG4gICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IGwgLT5cbiAgICAgICAgICBwcCBmIFwiJWFAO1wiIChsaXN0ICh0eXBlX3BhcmFtIGN0eHQpIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIiB+c2VwOlwiLFwiKSBsKVxuICAgIHgucHR5ZXh0X3BhcmFtcyBsb25naWRlbnRfbG9jIHgucHR5ZXh0X3BhdGggcHJpdmF0ZV9mbGFnXG4gICAgeC5wdHlleHRfcHJpdmF0ZSAoKiBDZjogIzcyMDAgKilcbiAgICAobGlzdCB+c2VwOlwiXCIgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yKVxuICAgIHgucHR5ZXh0X2NvbnN0cnVjdG9ycyAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHR5ZXh0X2F0dHJpYnV0ZXNcblxuYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZiAobmFtZSwgdmFycywgYXJncywgcmVzLCBhdHRycykgPVxuICBsZXQgbmFtZSA9IG1hdGNoIG5hbWUgd2l0aCBcIjo6XCIgLT4gXCIoOjopXCIgfCBzIC0+IHMgaW5cbiAgbGV0IHBwX3ZhcnMgZiB2cyA9XG4gICAgbWF0Y2ggdnMgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IHZzIC0+IHBwIGYgXCIlYUA7LkA7XCIgKGxpc3QgdHl2YXJfbG9jIH5zZXA6XCJAO1wiKSB2c1xuICBpblxuICBtYXRjaCByZXMgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIHBwIGYgXCIlcyVhQDslYVwiIG5hbWVcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBbXSAtPiAoKVxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQDtvZkA7JWFcIiAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIikgbFxuICAgICAgICAgIHwgUGNzdHJfcmVjb3JkIGwgLT4gcHAgZiBcIkA7b2ZAOyVhXCIgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsKVxuICAgICAgICBhcmdzIChhdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgU29tZSByIC0+XG4gICAgICBwcCBmIFwiJXM6QDslYSVhQDslYVwiIG5hbWUgcHBfdmFycyB2YXJzXG4gICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgW10gLT4gY29yZV90eXBlMSBjdHh0IGYgclxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAOy0+QDslYVwiXG4gICAgICAgICAgICAgICAgKGxpc3QgKGNvcmVfdHlwZTEgY3R4dCkgfnNlcDpcIkA7KkA7XCIpXG4gICAgICAgICAgICAgICAgbCAoY29yZV90eXBlMSBjdHh0KSByXG4gICAgICAgICAgfCBQY3N0cl9yZWNvcmQgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAOy0+QDslYVwiIChyZWNvcmRfZGVjbGFyYXRpb24gY3R4dCkgbCAoY29yZV90eXBlMSBjdHh0KSByKVxuICAgICAgICBhcmdzIChhdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG5cbmFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dCBmIHggPVxuICAoKiBDZjogIzcyMDAgKilcbiAgbWF0Y2ggeC5wZXh0X2tpbmQgd2l0aFxuICB8IFBleHRfZGVjbCAodiwgbCwgcikgLT5cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZlxuICAgICAgICAoeC5wZXh0X25hbWUudHh0LCB2LCBsLCByLCB4LnBleHRfYXR0cmlidXRlcylcbiAgfCBQZXh0X3JlYmluZCBsaSAtPlxuICAgICAgcHAgZiBcIiVzQDs9QDslYSVhXCIgeC5wZXh0X25hbWUudHh0IGxvbmdpZGVudF9sb2MgbGkgKGF0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgeC5wZXh0X2F0dHJpYnV0ZXNcblxuYW5kIGNhc2VfbGlzdCBjdHh0IGYgbCA6IHVuaXQgPVxuICBsZXQgYXV4IGYgeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSA9XG4gICAgcHAgZiBcIkA7fCBAWzwyPiVhJWFAOy0+QDslYUBdXCIgKHBhdHRlcm4gY3R4dCkgcGNfbGhzXG4gICAgICAob3B0aW9uIChleHByZXNzaW9uIGN0eHQpIH5maXJzdDpcIkA7d2hlbkA7XCIpXG4gICAgICBwY19ndWFyZFxuICAgICAgKGV4cHJlc3Npb24gKHVuZGVyX3BpcGUgY3R4dCkpXG4gICAgICBwY19yaHNcbiAgaW5cbiAgbGlzdCBhdXggZiBsIH5zZXA6XCJcIlxuXG5hbmQgbGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQgZiAobCwgZSkgPVxuICBsZXQgc2ltcGxlX25hbWUgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGw7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICBTb21lIGxcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBOb2xhYmVsIC0+IGV4cHJlc3Npb24yIGN0eHQgZiBlICgqIGxldmVsIDIqKVxuICB8IE9wdGlvbmFsIHN0ciAtPlxuICAgICAgaWYgU29tZSBzdHIgPSBzaW1wbGVfbmFtZSB0aGVuIHBwIGYgXCI/JXNcIiBzdHJcbiAgICAgIGVsc2UgcHAgZiBcIj8lczolYVwiIHN0ciAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICB8IExhYmVsbGVkIGxibCAtPlxuICAgICAgaWYgU29tZSBsYmwgPSBzaW1wbGVfbmFtZSB0aGVuIHBwIGYgXCJ+JXNcIiBsYmxcbiAgICAgIGVsc2UgcHAgZiBcIn4lczolYVwiIGxibCAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuXG5hbmQgZGlyZWN0aXZlX2FyZ3VtZW50IGYgeCA9XG4gIG1hdGNoIHgucGRpcmFfZGVzYyB3aXRoXG4gIHwgUGRpcl9zdHJpbmcgcyAtPiBwcCBmIFwiQCAlU1wiIHNcbiAgfCBQZGlyX2ludCAobiwgTm9uZSkgLT4gcHAgZiBcIkAgJXNcIiBuXG4gIHwgUGRpcl9pbnQgKG4sIFNvbWUgbSkgLT4gcHAgZiBcIkAgJXMlY1wiIG4gbVxuICB8IFBkaXJfaWRlbnQgbGkgLT4gcHAgZiBcIkAgJWFcIiBsb25naWRlbnQgbGlcbiAgfCBQZGlyX2Jvb2wgYiAtPiBwcCBmIFwiQCAlc1wiIChzdHJpbmdfb2ZfYm9vbCBiKVxuXG5sZXQgdG9wbGV2ZWxfcGhyYXNlIGYgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFB0b3BfZGVmIHMgLT4gcHAgZiBcIkBbPGhvdjA+JWFAXVwiIChsaXN0IChzdHJ1Y3R1cmVfaXRlbSByZXNldF9jdHh0KSkgc1xuICAoKiBwcF9vcGVuX2h2Ym94IGYgMDsgKilcbiAgKCogcHBfcHJpbnRfbGlzdCBzdHJ1Y3R1cmVfaXRlbSBmIHMgOyAqKVxuICAoKiBwcF9jbG9zZV9ib3ggZiAoKTsgKilcbiAgfCBQdG9wX2RpciB7IHBkaXJfbmFtZTsgcGRpcl9hcmcgPSBOb25lOyBfIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPiMlc0BdXCIgcGRpcl9uYW1lLnR4dFxuICB8IFB0b3BfZGlyIHsgcGRpcl9uYW1lOyBwZGlyX2FyZyA9IFNvbWUgcGRpcl9hcmc7IF8gfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+IyVzQCAlYUBdXCIgcGRpcl9uYW1lLnR4dCBkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmdcblxubGV0IGV4cHJlc3Npb24gZiB4ID0gcHAgZiBcIkBbJWFAXVwiIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIHhcblxubGV0IHN0cmluZ19vZl9leHByZXNzaW9uIHggPVxuICBpZ25vcmUgKGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpO1xuICBsZXQgZiA9IHN0cl9mb3JtYXR0ZXIgaW5cbiAgZXhwcmVzc2lvbiBmIHg7XG4gIGZsdXNoX3N0cl9mb3JtYXR0ZXIgKClcblxubGV0IHN0cmluZ19vZl9zdHJ1Y3R1cmUgeCA9XG4gIGlnbm9yZSAoZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSk7XG4gIGxldCBmID0gc3RyX2Zvcm1hdHRlciBpblxuICBzdHJ1Y3R1cmUgcmVzZXRfY3R4dCBmIHg7XG4gIGZsdXNoX3N0cl9mb3JtYXR0ZXIgKClcblxubGV0IHRvcF9waHJhc2UgZiB4ID1cbiAgcHBfcHJpbnRfbmV3bGluZSBmICgpO1xuICB0b3BsZXZlbF9waHJhc2UgZiB4O1xuICBwcCBmIFwiOztcIjtcbiAgcHBfcHJpbnRfbmV3bGluZSBmICgpXG5cbmxldCBjb3JlX3R5cGUgPSBjb3JlX3R5cGUgcmVzZXRfY3R4dFxubGV0IHBhdHRlcm4gPSBwYXR0ZXJuIHJlc2V0X2N0eHRcbmxldCBzaWduYXR1cmUgPSBzaWduYXR1cmUgcmVzZXRfY3R4dFxubGV0IHN0cnVjdHVyZSA9IHN0cnVjdHVyZSByZXNldF9jdHh0XG5sZXQgY2xhc3NfZXhwciA9IGNsYXNzX2V4cHIgcmVzZXRfY3R4dFxubGV0IGNsYXNzX2ZpZWxkID0gY2xhc3NfZmllbGQgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3R5cGUgPSBjbGFzc190eXBlIHJlc2V0X2N0eHRcbmxldCBjbGFzc19zaWduYXR1cmUgPSBjbGFzc19zaWduYXR1cmUgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3R5cGVfZmllbGQgPSBjbGFzc190eXBlX2ZpZWxkIHJlc2V0X2N0eHRcbmxldCBtb2R1bGVfZXhwciA9IG1vZHVsZV9leHByIHJlc2V0X2N0eHRcbmxldCBtb2R1bGVfdHlwZSA9IG1vZHVsZV90eXBlIHJlc2V0X2N0eHRcbmxldCBzaWduYXR1cmVfaXRlbSA9IHNpZ25hdHVyZV9pdGVtIHJlc2V0X2N0eHRcbmxldCBzdHJ1Y3R1cmVfaXRlbSA9IHN0cnVjdHVyZV9pdGVtIHJlc2V0X2N0eHRcbmxldCB0eXBlX2RlY2xhcmF0aW9uID0gdHlwZV9kZWNsYXJhdGlvbiByZXNldF9jdHh0XG4iLCJtb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhciAgKCoqIENoYXJhY3RlciBzdWNoIGFzIFsnYyddLiAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICAgICAoKiogQ29uc3RhbnQgc3RyaW5nIHN1Y2ggYXMgW1wiY29uc3RhbnRcIl0gb3JcbiAgICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tcXEBpZCBBUkddXSBhbmQgW1tcXEBcXEBpZCBBUkddXS5cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFs/IFBdICBvciAgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QxIC0+IFQyXSAgICB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19LFxuICAgICAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGUgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS5cbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUIHRjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSAgICAgd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsjdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCAjdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyAgKCoqIFtUIGFzICdhXS4gKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbWyBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s+IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAgICB7W2xldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLl19XG4gICAgICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAgIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1bUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9W3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fVtQdHlwX29iamVjdF19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX1bcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG4gICAgICAgICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgICAgICAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtgQV0gICAgICAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVF0gICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiogezIgUGF0dGVybnN9ICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtDIFBdICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfVxuXG4gICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sXG4gICAgICAgICAgICAgIFsxTF0sIFsxbl0gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdCAgKCoqIFtmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZnVuKGxibCwgZXhwMCwgUCwgRTEpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5XG4gICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFtmdW4gUDEgUDIgLi4gUG4gLT4gRTFdIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZFxuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZ1xuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtFMCB+bDE6RTEgLi4uIH5sbjpFbl1cblxuICAgICAgICAgICAgICBbbGldIGNhbiBiZVxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0gICAobm9uIGxhYmVsZWQgYXJndW1lbnQpLFxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSAobGFiZWxsZWQgYXJndW1lbnRzKSBvclxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgLSBbQyBFXSAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbYEEgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfcmVjb3JkKFsobDEsUDEpIDsgLi4uIDsgKGxuLFBuKV0sIGV4cDApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gICAgICAgICB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgICgqKiBbRS5sXSAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW0UxLmwgPC0gRTJdICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbaWYgRTEgdGhlbiBFMiBlbHNlIEUzXSAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gICAgfCBQZXhwX2ZvciBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfVtVcHRvXX1cbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLkRvd250b31bRG93bnRvXX1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gWyhFIDo+IFQpXSAgICAgIHdoZW4gW2Zyb21dIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2MgICgqKiBbRSAjIG1dICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbbmV3IE0uY10gKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uICAoKiogW3ggPC0gMl0gKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IGV4Y2VwdGlvbiBDIGluIEVdICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXJcbiAgICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgICAgIHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbZnVuICh0eXBlIHQpIC0+IEVdICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiBNIGluIEVdXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAgICAgLSBbbGV0KiBQMCA9IEUwMCBhbmQqIFAxID0gRTAxIGluIEUxXSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID1cbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjYXNlfSByZXByZXNlbnRzIFsoUCAtPiBFKV0gb3IgWyhQIHdoZW4gRTAgLT4gRSldICopXG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG4gICAgICAtIFt2YWwgeDogVF0sXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXVxuICAqKVxuXG4gICgqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKlxuICAgICBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sXG4gICAgIGZvciB2YXJpb3VzIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH1bcHR5cGVfa2luZF19XG4gICAgICAgICAgICAgYW5kIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9W3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuICAgLSBbdHlwZSB0XSAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDBdXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSAuLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufVtQdHlwZV9vcGVuXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19LFxuICAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX0uXG5cbiAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfdmFyczogc3RyaW5nIGxvYyBsaXN0O1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufVxuICAgICAgcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mOlxuICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQzogVDBdICAgICAgICAgICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0Mgb2Ygey4uLn1dICAgICAgICAgICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgIC0gW0M6IHsuLi59IC0+IFQwXSAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLlxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgICAoW3R5cGUgdCArPSAuLi5dKS5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV1cbiAgICAgICAgICAgIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb24gY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcbiAgICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbjpcbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW05vbmVdLn19XG4gICAgICAgICAgICAtIFtDOiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiAtIFtjXVxuICAgICAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn1bcGNzaWdfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX1bUHR5cF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdLlxuICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLlxuICAgICAgICAgICAgICBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggWz9dXG4gICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn1bcGNzdHJfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9W1BwYXRfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFXVxuICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRV1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdXG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt2YWwgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfSlcbiAgICAgICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgIC0gW1MgPSBNVF0sXG4gICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbixcbiAgICAgICB3aGVuIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX1bcG10ZF90eXBlXX0gaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAoc2lsZW5jZXMgdGhlIFwidXNlZCBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT10gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT11cbiAgICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtYXSAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICAgIHwgUG1vZF9hcHBseV91bml0IG9mIG1vZHVsZV9leHByICgqKiBbTUUxKCldICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZSAgKCoqIFsoTUUgOiBNVCldICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAgICAgLSBbZXhjZXB0aW9uIEMgPSBNLlhdICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW5dICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIHZhbHVlX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHZjX2NvbnN0cmFpbnQgb2Yge1xuICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOnN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHR5cDpjb3JlX3R5cGU7XG4gICAgICB9XG4gICAgfCBQdmNfY29lcmNpb24gb2Yge2dyb3VuZDpjb3JlX3R5cGUgb3B0aW9uOyBjb2VyY2lvbjpjb3JlX3R5cGUgfVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfY29uc3RyYWludDogdmFsdWVfY29uc3RyYWludCBvcHRpb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZzogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2M6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzNcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzNcIlxuZW5kXG4iLCJtb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhciAgKCoqIENoYXJhY3RlciBzdWNoIGFzIFsnYyddLiAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICAgICAoKiogQ29uc3RhbnQgc3RyaW5nIHN1Y2ggYXMgW1wiY29uc3RhbnRcIl0gb3JcbiAgICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tcXEBpZCBBUkddXSBhbmQgW1tcXEBcXEBpZCBBUkddXS5cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFs/IFBdICBvciAgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QxIC0+IFQyXSAgICB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19LFxuICAgICAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGUgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS5cbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUIHRjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSAgICAgd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsjdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCAjdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyBsb2MgICgqKiBbVCBhcyAnYV0uICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICgqKiBbUHR5cF92YXJpYW50KFtgQTtgQl0sIGZsYWcsIGxhYmVscyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1sgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPiBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogWydhMSAuLi4gJ2FuLiBUXVxuXG4gICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1bUHBhdF9jb25zdHJhaW50XX0gbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzpcblxuICAgICAgICAgICAge1tsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUID0gZSAuLi5dfVxuICAgICAgICAgICAgIC0gVW5kZXIge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgICB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9W1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfVtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH1bUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9W3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gICAgfCBQdHlwX29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlICgqKiBbTS4oVCldICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dLiAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICgqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuICAgICAgICAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAgICAgICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLlxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbYEFdICAgICAgICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFRdICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCoqIHsyIFBhdHRlcm5zfSAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sIFsxbl0gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbQyBQXSAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW10sIFApXVxuICAgICAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFthOyBiXSwgUCldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2BBIFBdIHdoZW4gW3BhdF0gaXMgW1NvbWUgUF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQcGF0X3JlY29yZChbKGwxLCBQMSkgOyAuLi4gOyAobG4sIFBuKV0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfVxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuOyBffV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX1cblxuICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0ICAoKiogUGF0dGVybiBbW3wgUDE7IC4uLjsgUG4gfF1dICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogUGF0dGVybiBbWyVpZF1dICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBjb25zdGFudCBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLFxuICAgICAgICAgICAgICBbMUxdLCBbMW5dICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZlxuICAgICAgICBmdW5jdGlvbl9wYXJhbSBsaXN0ICogdHlwZV9jb25zdHJhaW50IG9wdGlvbiAqIGZ1bmN0aW9uX2JvZHlcbiAgICAoKiogW1BleHBfZnVuY3Rpb24gKFtQMTsgLi4uOyBQbl0sIEMsIGJvZHkpXSByZXByZXNlbnRzIGFueSBjb25zdHJ1Y3RcbiAgICAgICAgaW52b2x2aW5nIFtmdW5dIG9yIFtmdW5jdGlvbl0sIGluY2x1ZGluZzpcbiAgICAgICAgLSBbZnVuIFAxIC4uLiBQbiAtPiBFXVxuICAgICAgICAgIHdoZW4gW2JvZHkgPSBQZnVuY3Rpb25fYm9keSBFXVxuICAgICAgICAtIFtmdW4gUDEgLi4uIFBuIC0+IGZ1bmN0aW9uIHAxIC0+IGUxIHwgLi4uIHwgcG0gLT4gZW1dXG4gICAgICAgICAgd2hlbiBbYm9keSA9IFBmdW5jdGlvbl9jYXNlcyBbIHAxIC0+IGUxOyAuLi47IHBtIC0+IGVtIF1dXG4gICAgICAgIFtDXSByZXByZXNlbnRzIGEgdHlwZSBjb25zdHJhaW50IG9yIGNvZXJjaW9uIHBsYWNlZCBpbW1lZGlhdGVseSBiZWZvcmUgdGhlXG4gICAgICAgIGFycm93LCBlLmcuIFtmdW4gUDEgLi4uIFBuIDogdHkgLT4gLi4uXSB3aGVuIFtDID0gU29tZSAoUGNvbnN0cmFpbnQgdHkpXS5cbiAgICAgICAgQSBmdW5jdGlvbiBtdXN0IGhhdmUgcGFyYW1ldGVycy4gW1BleHBfZnVuY3Rpb24gKHBhcmFtcywgXywgYm9keSldIG11c3RcbiAgICAgICAgaGF2ZSBub24tZW1wdHkgW3BhcmFtc10gb3IgYSBbUGZ1bmN0aW9uX2Nhc2VzIF9dIGJvZHkuXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXVxuICAgICAgICAgICAgICAgIHJlcHJlc2VudHMgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgICAgICAgW2xpXSBjYW4gYmVcbiAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0gICAobm9uIGxhYmVsZWQgYXJndW1lbnQpLFxuICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19IChsYWJlbGxlZCBhcmd1bWVudHMpIG9yXG4gICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAtIFtDIEVdICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSAgICAgICAgIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAgKCoqIFtFLmxdICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99W1VwdG9dfVxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfVtEb3dudG9dfVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbKEUgOj4gVCldICAgICAgd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgICAgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZnVuY3Rpb25fcGFyYW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rpb25fcGFyYW1fZGVzYyAqKSA9XG4gICAgfCBQcGFyYW1fdmFsIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVyblxuICAgICgqKiBbUHBhcmFtX3ZhbCAobGJsLCBleHAwLCBQKV0gcmVwcmVzZW50cyB0aGUgcGFyYW1ldGVyOlxuICAgICAgICAtIFtQXVxuICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgIC0gW35sOlBdXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgIC0gWz9sOlBdXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgIC0gWz9sOihQID0gRTApXVxuICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgIE5vdGU6IElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHlcbiAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgKilcbiAgICB8IFBwYXJhbV9uZXd0eXBlIG9mIHN0cmluZyBsb2NcbiAgICAoKiogW1BwYXJhbV9uZXd0eXBlIHhdIHJlcHJlc2VudHMgdGhlIHBhcmFtZXRlciBbKHR5cGUgeCldLlxuICAgICAgICBbeF0gY2FycmllcyB0aGUgbG9jYXRpb24gb2YgdGhlIGlkZW50aWZpZXIsIHdoZXJlYXMgdGhlIFtwcGFyYW1fbG9jXVxuICAgICAgICBvbiB0aGUgZW5jbG9zaW5nIFtmdW5jdGlvbl9wYXJhbV0gbm9kZSBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIFsodHlwZSB4KV1cbiAgICAgICAgYXMgYSB3aG9sZS5cblxuICAgICAgICBNdWx0aXBsZSBwYXJhbWV0ZXJzIFsodHlwZSBhIGIgYyldIGFyZSByZXByZXNlbnRlZCBhcyBtdWx0aXBsZVxuICAgICAgICBbUHBhcmFtX25ld3R5cGVdIG5vZGVzLCBsZXQncyBzYXk6XG5cbiAgICAgICAge1sgWyB7IHBwYXJhbV9raW5kID0gUHBhcmFtX25ld3R5cGUgYTsgcHBhcmFtX2xvYyA9IGxvYzEgfTtcbiAgICAgICAgICAgICB7IHBwYXJhbV9raW5kID0gUHBhcmFtX25ld3R5cGUgYjsgcHBhcmFtX2xvYyA9IGxvYzIgfTtcbiAgICAgICAgICAgICB7IHBwYXJhbV9raW5kID0gUHBhcmFtX25ld3R5cGUgYzsgcHBhcmFtX2xvYyA9IGxvYzMgfTtcbiAgICAgICAgICAgXVxuICAgICAgICBdfVxuXG4gICAgICAgIEhlcmUsIHRoZSBmaXJzdCBsb2MgW2xvYzFdIGlzIHRoZSBsb2NhdGlvbiBvZiBbKHR5cGUgYSBiIGMpXSwgYW5kIHRoZVxuICAgICAgICBzdWJzZXF1ZW50IGxvY3MgW2xvYzJdIGFuZCBbbG9jM10gYXJlIHRoZSBzYW1lIGFzIFtsb2MxXSwgZXhjZXB0IG1hcmtlZCBhc1xuICAgICAgICBnaG9zdCBsb2NhdGlvbnMuIFRoZSBsb2NhdGlvbnMgb24gW2FdLCBbYl0sIFtjXSwgY29ycmVzcG9uZCB0byB0aGVcbiAgICAgICAgdmFyaWFibGVzIFthXSwgW2JdLCBhbmQgW2NdIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgICAqKVxuXG4gIGFuZCBmdW5jdGlvbl9wYXJhbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rpb25fcGFyYW0gKikgPVxuICAgIHsgcHBhcmFtX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwcGFyYW1fZGVzYyA6IGZ1bmN0aW9uX3BhcmFtX2Rlc2M7XG4gICAgfVxuXG4gIGFuZCBmdW5jdGlvbl9ib2R5ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdGlvbl9ib2R5ICopID1cbiAgICB8IFBmdW5jdGlvbl9ib2R5IG9mIGV4cHJlc3Npb25cbiAgICB8IFBmdW5jdGlvbl9jYXNlcyBvZiBjYXNlIGxpc3QgKiBMb2NhdGlvbi50ICogYXR0cmlidXRlc1xuICAgICgqKiBJbiBbUGZ1bmN0aW9uX2Nhc2VzIChfLCBsb2MsIGF0dHJzKV0sIHRoZSBsb2NhdGlvbiBleHRlbmRzIGZyb20gdGhlXG4gICAgICAgIHN0YXJ0IG9mIHRoZSBbZnVuY3Rpb25dIGtleXdvcmQgdG8gdGhlIGVuZCBvZiB0aGUgbGFzdCBjYXNlLiBUaGUgY29tcGlsZXJcbiAgICAgICAgd2lsbCBvbmx5IHVzZSB0eXBlY2hlY2tpbmctcmVsYXRlZCBhdHRyaWJ1dGVzIGZyb20gW2F0dHJzXSwgZS5nLiBlbmFibGluZ1xuICAgICAgICBvciBkaXNhYmxpbmcgYSB3YXJuaW5nLlxuICAgICopXG4gICgqKiBTZWUgdGhlIGNvbW1lbnQgb24ge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVuY3Rpb259W1BleHBfZnVuY3Rpb25dfS4gKilcblxuICBhbmQgdHlwZV9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUGNvbnN0cmFpbnQgb2YgY29yZV90eXBlXG4gICAgfCBQY29lcmNlIG9mIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgKCoqIFNlZSB0aGUgY29tbWVudCBvbiB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW5jdGlvbn1bUGV4cF9mdW5jdGlvbl19LiAqKVxuXG4gICgqKiB7MiBWYWx1ZSBkZXNjcmlwdGlvbnN9ICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IXZhbHVlX2Rlc2NyaXB0aW9ufSByZXByZXNlbnRzOlxuICAgICAgLSBbdmFsIHg6IFRdLFxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV1cbiAgKilcblxuICAoKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiogWygnYTEsLi4uJ2FuKSB0XSAqKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKipcbiAgICAgSGVyZSBhcmUgdHlwZSBkZWNsYXJhdGlvbnMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uLFxuICAgICBmb3IgdmFyaW91cyB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9W3B0eXBlX2tpbmRdfVxuICAgICAgICAgICAgIGFuZCB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX21hbmlmZXN0fVtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcbiAgIC0gW3R5cGUgdF0gICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn1bUHR5cGVfb3Blbl19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdCAgKCoqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtsIDogVCBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKlxuICAgICAtIFt7IC4uLjsgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfSxcbiAgICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19LlxuXG4gICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX3ZhcnM6IHN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbn1cbiAgICAgIHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBvZjpcbiAgICAtIFtDIG9mIFQxICogLi4uICogVG5dICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0M6IFQwXSAgICAgICAgICAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDIG9mIHsuLi59XSAgICAgICAgICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAtIFtDOiB7Li4ufSAtPiBUMF0gICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS5cbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiAuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl0gKilcbiAgICB9XG4gICgqKlxuICAgICBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAgKFt0eXBlIHQgKz0gLi4uXSkuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQ6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBbUGV4dF9kZWNsKGV4aXN0ZW50aWFscywgY19hcmdzLCB0X29wdCldXG4gICAgICAgICAgICBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG4gICAgICAgICAgICAtIFtDIG9mIFQxICogLi4uICogVG5dIHdoZW46XG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtOb25lXS59fVxuICAgICAgICAgICAgLSBbQzogVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6ICdhLi4uIC4gVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1snYTsuLi5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi4gOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogLSBbY11cbiAgICAgICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3Nfc2lnbmF0dXJlXSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9W3Bjc2lnX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9W1B0eXBfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGUgICgqKiBbaW5oZXJpdCBDVF0gKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gICAgfCBQY3RmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICAgVGhleSBhcmUgYWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbY10gYW5kIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2Z1bihsYmwsIGV4cDAsIFAsIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoIFs/XVxuICAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGUgICgqKiBbKENFIDogQ1QpXSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNsYXNzX3N0cnVjdHVyZX0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdChzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9W3Bjc3RyX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fVtQcGF0X2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRV1cbiAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XVxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdmFsIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX0pXG4gICAgICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByICAoKiogW21vZHVsZSB0eXBlIG9mIE1FXSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbKG1vZHVsZSBNKV0gKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXQgICgqKiBbKCldICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbTmFtZWQobmFtZSwgTVQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgICAgIC0gWyhfIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbTm9uZV0gKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSBYID0gTV0gYW5kIFttb2R1bGUgWCA6IE1UXSAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG5dICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9zdWJzdGl0dXRpb25dIHJlcHJlc2VudHMgW1MgOj0gTV0gKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV90eXBlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAtIFtTID0gTVRdLFxuICAgICAtIFtTXSBmb3IgYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sXG4gICAgICAgd2hlbiB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9W3BtdGRfdHlwZV19IGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgKHNpbGVuY2VzIHRoZSBcInVzZWQgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgICAgLSBbb3BlbiAgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZXNjcmlwdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbWF0gKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZSAgKCoqIFtzdHJ1Y3QgLi4uIGVuZF0gKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwciAgKCoqIFtNRTEoTUUyKV0gKilcbiAgICB8IFBtb2RfYXBwbHlfdW5pdCBvZiBtb2R1bGVfZXhwciAoKiogW01FMSgpXSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvbiAgKCoqIFsodmFsIEUpXSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW1BzdHJfdmFsdWUocmVjLCBbKFAxLCBFMSA7IC4uLiA7IChQbiwgRW4pKV0pXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICAgKCoqIC0gW2V4Y2VwdGlvbiBDIG9mIFRdXG4gICAgICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgICgqKiBbbW9kdWxlIFggPSBNRV0gKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uICAoKiogW2luY2x1ZGUgTUVdICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCB2YWx1ZV9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50ICopID1cbiAgICB8IFB2Y19jb25zdHJhaW50IG9mIHtcbiAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczpzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICB0eXA6Y29yZV90eXBlO1xuICAgICAgfVxuICAgIHwgUHZjX2NvZXJjaW9uIG9mIHtncm91bmQ6Y29yZV90eXBlIG9wdGlvbjsgY29lcmNpb246Y29yZV90eXBlIH1cblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2NvbnN0cmFpbnQ6IHZhbHVlX2NvbnN0cmFpbnQgb3B0aW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmc6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDM0XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDM0XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF81MDJcbm1vZHVsZSBUbyA9IEFzdF81MDFcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNS4wMlwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgbWtfZ2hvc3RfYXR0ciBuYW1lID1cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IHsgTG9jYXRpb24udHh0ID0gbmFtZTsgbG9jID0gTG9jYXRpb24ubm9uZSB9O1xuICAgIGF0dHJfcGF5bG9hZCA9IFBTdHIgW107XG4gICAgYXR0cl9sb2MgPSBMb2NhdGlvbi5ub25lO1xuICB9XG5cbmxldCByZWMgY29uY2F0X2xpc3RfbGl0IGxlZnQgcmlnaHQgPVxuICBsZXQgb3BlbiBBc3RfNTAyLlBhcnNldHJlZSBpblxuICBsZXQgb3BlbiBBc3RfNTAyLkFzdHR5cGVzIGluXG4gIG1hdGNoIChsZWZ0LnBleHBfZGVzYywgcmlnaHQucGV4cF9kZXNjKSB3aXRoXG4gIHwgXywgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKSAtPiBsZWZ0XG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKSwgXyAtPiByaWdodFxuICB8ICggUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IGxvYyB9LFxuICAgICAgICAgIFNvbWUgKHsgcGV4cF9kZXNjID0gUGV4cF90dXBsZSBbIGhkOyB0bCBdOyBfIH0gYXMgYXJnX2V4cHIpICksXG4gICAgICBfICkgLT5cbiAgICAgIHtcbiAgICAgICAgbGVmdCB3aXRoXG4gICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICAgUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgICAgICggeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBsb2MgfSxcbiAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGFyZ19leHByIHdpdGhcbiAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfdHVwbGUgWyBoZDsgY29uY2F0X2xpc3RfbGl0IHRsIHJpZ2h0IF07XG4gICAgICAgICAgICAgICAgfSApO1xuICAgICAgfVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJJbnZhbGlkIG9jYW1sLnBweC5jb250ZXh0J3MgbG9hZF9wYXRoXCJcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfbG9hZF9wYXRoIGV4cHIgPVxuICBsZXQgb3BlbiBBc3RfNTAyLlBhcnNldHJlZSBpblxuICBsZXQgbG9jID0gZXhwci5wZXhwX2xvYyBpblxuICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF90dXBsZSBbIHZpc2libGU7IGhpZGRlbiBdIC0+XG4gICAgICBsZXQgbWlncmF0aW9uX2F0dHIgPVxuICAgICAgICB7XG4gICAgICAgICAgYXR0cl9uYW1lID0geyBMb2NhdGlvbi50eHQgPSBcInBweGxpYi5taWdyYXRpb24ubG9hZF9wYXRoXCI7IGxvYyB9O1xuICAgICAgICAgIGF0dHJfbG9jID0gbG9jO1xuICAgICAgICAgIGF0dHJfcGF5bG9hZCA9XG4gICAgICAgICAgICBQU3RyIFsgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gUHN0cl9ldmFsIChleHByLCBbXSkgfSBdO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGV4cHInID0gY29uY2F0X2xpc3RfbGl0IHZpc2libGUgaGlkZGVuIGluXG4gICAgICB7IGV4cHInIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gbWlncmF0aW9uX2F0dHIgOjogZXhwci5wZXhwX2F0dHJpYnV0ZXMgfVxuICB8IF8gLT4gZXhwclxuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9maWVsZHMgZmllbGRzID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuIChsaWRlbnRfbG9jLCBleHByKSAtPlxuICAgICAgbWF0Y2ggbGlkZW50X2xvYy5Bc3RfNTAyLkFzdHR5cGVzLnR4dCB3aXRoXG4gICAgICB8IExvbmdpZGVudC5MaWRlbnQgXCJsb2FkX3BhdGhcIiAtPlxuICAgICAgICAgIChsaWRlbnRfbG9jLCBtaWdyYXRlX3BweF9jb250ZXh0X2xvYWRfcGF0aCBleHByKVxuICAgICAgfCBfIC0+IChsaWRlbnRfbG9jLCBleHByKSlcbiAgICBmaWVsZHNcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBwYXlsb2FkID1cbiAgbGV0IG9wZW4gQXN0XzUwMi5QYXJzZXRyZWUgaW5cbiAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gIHwgUFN0clxuICAgICAgW1xuICAgICAgICAoe1xuICAgICAgICAgICBwc3RyX2Rlc2MgPVxuICAgICAgICAgICAgIFBzdHJfZXZhbFxuICAgICAgICAgICAgICAgKCh7IHBleHBfZGVzYyA9IFBleHBfcmVjb3JkIChmaWVsZHMsIE5vbmUpIH0gYXMgZXhwciksIGF0dHJpYnV0ZXMpO1xuICAgICAgICAgfSBhcyBzdHJpKTtcbiAgICAgIF0gLT5cbiAgICAgIGxldCBuZXdfZmllbGRzID0gbWlncmF0ZV9wcHhfY29udGV4dF9maWVsZHMgZmllbGRzIGluXG4gICAgICBsZXQgbmV3X2V4cHIgPSB7IGV4cHIgd2l0aCBwZXhwX2Rlc2MgPSBQZXhwX3JlY29yZCAobmV3X2ZpZWxkcywgTm9uZSkgfSBpblxuICAgICAgUFN0ciBbIHsgc3RyaSB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAobmV3X2V4cHIsIGF0dHJpYnV0ZXMpIH0gXVxuICB8IF8gLT4gcGF5bG9hZFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAyLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAocGFyYW1zLCB0Y29uc3RyYWludCwgYm9keSkgLT5cbiAgICAgIGxldCBleHByID1cbiAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgIHwgUGZ1bmN0aW9uX2JvZHkgZXhwciAtPiAoXG4gICAgICAgICAgICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgICB8IFBleHBfZnVuY3Rpb24gXyAtPlxuICAgICAgICAgICAgICAgICgqIFdlIGRvbid0IHdhbnQgdGhpcyBbZnVuXSB0byBiZSBtZXJnZWQgd2l0aCB0aGUgcGFyZW50IGR1cmluZ1xuICAgICAgICAgICAgICAgICAgIHRoZSByb3VuZC10cmlwLiBUaGlzIGF0dHJpYnV0ZSBzaWduYWxzIHRoYXQgdGhpcyBleHByZXNzaW9uXG4gICAgICAgICAgICAgICAgICAgcmVhbGx5IGlzIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbi4gKilcbiAgICAgICAgICAgICAgICBsZXQgYXR0ciA9IG1rX2dob3N0X2F0dHIgXCJwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXCIgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBleHByIGluXG4gICAgICAgICAgICAgICAgeyBleHByIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gYXR0ciA6OiBleHByLnBleHBfYXR0cmlidXRlcyB9XG4gICAgICAgICAgICB8IF8gLT4gY29weV9leHByZXNzaW9uIGV4cHIpXG4gICAgICAgIHwgUGZ1bmN0aW9uX2Nhc2VzIChjYXNlcywgbG9jLCBhdHRycykgLT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgY2FzZXMpO1xuICAgICAgICAgICAgICBwZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gbG9jO1xuICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgYXR0cnM7XG4gICAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGV4cHIgPVxuICAgICAgICBtYXRjaCB0Y29uc3RyYWludCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBleHByXG4gICAgICAgIHwgU29tZSAoUGNvbnN0cmFpbnQgYykgLT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGV4cHIsIGNvcHlfY29yZV90eXBlIGMpO1xuICAgICAgICAgICAgICBwZXhwX2xvYyA9IGV4cHIucGV4cF9sb2M7XG4gICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB8IFNvbWUgKFBjb2VyY2UgKGMxLCBjMikpIC0+XG4gICAgICAgICAgICBsZXQgYzEgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGMxIGluXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKGV4cHIsIGMxLCBjb3B5X2NvcmVfdHlwZSBjMik7XG4gICAgICAgICAgICAgIHBleHBfbG9jID0gZXhwci5wZXhwX2xvYztcbiAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGV4cHIgPVxuICAgICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAgICAoZnVuIHBhcmFtIGV4cHIgLT5cbiAgICAgICAgICAgIG1hdGNoIHBhcmFtIHdpdGhcbiAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXJhbV9kZXNjID0gUHBhcmFtX3ZhbCAobGJsLCBleHAwLCBwKTtcbiAgICAgICAgICAgICBwcGFyYW1fbG9jO1xuICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgIGxldCBwZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgICAgICAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCBsYmwsXG4gICAgICAgICAgICAgICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gZXhwMCxcbiAgICAgICAgICAgICAgICAgICAgICBjb3B5X3BhdHRlcm4gcCxcbiAgICAgICAgICAgICAgICAgICAgICBleHByIClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gcHBhcmFtX2xvYztcbiAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB8IHsgcHBhcmFtX2Rlc2MgPSBQcGFyYW1fbmV3dHlwZSB4OyBwcGFyYW1fbG9jIH0gLT5cbiAgICAgICAgICAgICAgICBsZXQgcGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgsIGV4cHIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IHBwYXJhbV9sb2M7XG4gICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBwYXJhbXMgZXhwclxuICAgICAgaW5cbiAgICAgIGV4cHIucGV4cF9kZXNjXG4gICAgICAoKiBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApICopXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF81MDIuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5sZXRfOyBBc3RfNTAyLlBhcnNldHJlZS5hbmRzOyBBc3RfNTAyLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuVXB0byAtPiBBc3RfNTAxLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNTAxLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzUwMi5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludCA9XG4gICAgICBPcHRpb24ubWFwIGNvcHlfdmFsdWVfY29uc3RyYWludCBwdmJfY29uc3RyYWludDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAyLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfdmFsdWVfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczsgdHlwIH0gLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50XG4gICAgICAgIHtcbiAgICAgICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPVxuICAgICAgICAgICAgTGlzdC5tYXAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzO1xuICAgICAgICAgIHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cDtcbiAgICAgICAgfVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb2VyY2lvbiB7IGdyb3VuZDsgY29lcmNpb24gfSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uXG4gICAgICAgIHtcbiAgICAgICAgICBncm91bmQgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGdyb3VuZDtcbiAgICAgICAgICBjb2VyY2lvbiA9IGNvcHlfY29yZV90eXBlIGNvZXJjaW9uO1xuICAgICAgICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF81MDIuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfbG9jIHB0eXBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgbG9jIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEudHh0KVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcIm1vZHVsZSBvcGVuIGluIHR5cGVzXCJcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAyLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID1cbiAgICAgIChtYXRjaCBhdHRyX25hbWUudHh0IHdpdGhcbiAgICAgIHwgXCJvY2FtbC5wcHguY29udGV4dFwiIC0+XG4gICAgICAgICAgY29weV9wYXlsb2FkIChtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQgYXR0cl9wYXlsb2FkKVxuICAgICAgfCBfIC0+IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQpO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMi5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMi5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAxLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAxLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMi5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAxLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDIuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMi5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMi5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDIuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAyLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDIuQXN0dHlwZXMudHh0OyBBc3RfNTAyLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAxXG5tb2R1bGUgVG8gPSBBc3RfNTAyXG5cbigqKiBMb29rIGZvciBhIHBhcnRpY3VsYXIgYXR0cmlidXRlIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgbGlzdC4gQXR0cmlidXRlcyBhcmVcbiAgICB1c2VkIHRvIG1ha2UgY2VydGFpbiBtaWdyYXRpb25zIHJvdW5kLXRyaXAuIFJldHVybnMgW05vbmVdIGlmIHRoZSBzcGVjaWZpZWRcbiAgICBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLiAqKVxubGV0IGV4dHJhY3RfYXR0ciBuYW1lIChhdHRycyA6IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMpID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoTm9uZSwgTGlzdC5yZXYgYWNjKVxuICAgIHwgeyBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWUgPSB7IHR4dDsgXyB9OyBhdHRyX3BheWxvYWQ7IF8gfSA6OiBxXG4gICAgICB3aGVuIHR4dCA9IG5hbWUgLT5cbiAgICAgICAgKFNvbWUgYXR0cl9wYXlsb2FkLCBMaXN0LnJldl9hcHBlbmQgYWNjIHEpXG4gICAgfCBoZCA6OiB0bCAtPiBsb29wIChoZCA6OiBhY2MpIHRsXG4gIGluXG4gIGxvb3AgW10gYXR0cnNcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfbG9hZF9wYXRoIGV4cHIgPVxuICBsZXQgb3BlbiBBc3RfNTAxLlBhcnNldHJlZSBpblxuICBsZXQgcGF5bG9hZCwgb3RoZXJfYXR0cnMgPVxuICAgIGV4dHJhY3RfYXR0ciBcInBweGxpYi5taWdyYXRpb24ubG9hZF9wYXRoXCIgZXhwci5wZXhwX2F0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgbGV0IHBleHBfZGVzYyA9XG4gICAgICAgIFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IGxvYyA9IGV4cHIucGV4cF9sb2MgfSwgTm9uZSlcbiAgICAgIGluXG4gICAgICBsZXQgaGlkZGVuID0geyBleHByIHdpdGggcGV4cF9kZXNjOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICBsZXQgdmlzaWJsZSA9IGV4cHIgaW5cbiAgICAgIHtcbiAgICAgICAgZXhwciB3aXRoXG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IG90aGVyX2F0dHJzO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX3R1cGxlIFsgdmlzaWJsZTsgaGlkZGVuIF07XG4gICAgICB9XG4gIHwgU29tZSAoUFN0ciBbIHsgcHN0cl9kZXNjID0gUHN0cl9ldmFsIChleHByLCBbXSk7IF8gfSBdKSAtPiBleHByXG4gIHwgU29tZSBfIC0+IGludmFsaWRfYXJnIFwiSW52YWxpZCBwcHhsaWIubWlncmF0aW9uLmxvYWRfcGF0aCBwYXlsb2FkXCJcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfZmllbGRzIGZpZWxkcyA9XG4gIExpc3QubWFwXG4gICAgKGZ1biAobGlkZW50X2xvYywgZXhwcikgLT5cbiAgICAgIG1hdGNoIGxpZGVudF9sb2MuQXN0XzUwMS5Bc3R0eXBlcy50eHQgd2l0aFxuICAgICAgfCBMb25naWRlbnQuTGlkZW50IFwibG9hZF9wYXRoXCIgLT5cbiAgICAgICAgICAobGlkZW50X2xvYywgbWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGggZXhwcilcbiAgICAgIHwgXyAtPiAobGlkZW50X2xvYywgZXhwcikpXG4gICAgZmllbGRzXG5cbmxldCBtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQgcGF5bG9hZCA9XG4gIGxldCBvcGVuIEFzdF81MDEuUGFyc2V0cmVlIGluXG4gIG1hdGNoIHBheWxvYWQgd2l0aFxuICB8IFBTdHJcbiAgICAgIFtcbiAgICAgICAgKHtcbiAgICAgICAgICAgcHN0cl9kZXNjID1cbiAgICAgICAgICAgICBQc3RyX2V2YWxcbiAgICAgICAgICAgICAgICgoeyBwZXhwX2Rlc2MgPSBQZXhwX3JlY29yZCAoZmllbGRzLCBOb25lKSB9IGFzIGV4cHIpLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgIH0gYXMgc3RyaSk7XG4gICAgICBdIC0+XG4gICAgICBsZXQgbmV3X2ZpZWxkcyA9IG1pZ3JhdGVfcHB4X2NvbnRleHRfZmllbGRzIGZpZWxkcyBpblxuICAgICAgbGV0IG5ld19leHByID0geyBleHByIHdpdGggcGV4cF9kZXNjID0gUGV4cF9yZWNvcmQgKG5ld19maWVsZHMsIE5vbmUpIH0gaW5cbiAgICAgIFBTdHIgWyB7IHN0cmkgd2l0aCBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKG5ld19leHByLCBhdHRyaWJ1dGVzKSB9IF1cbiAgfCBfIC0+IHBheWxvYWRcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNTAyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIGxldCBwZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2MgaW5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfbG9jIHBleHBfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgbG9jIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvblxuICAgICAgICAoIFtdLFxuICAgICAgICAgIE5vbmUsXG4gICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGZ1bmN0aW9uX2Nhc2VzIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDAsIGxvYywgW10pIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1biAoYXJnX2xhYmVsLCBvcHRfZGVmYXVsdCwgcGF0LCBleHByKSAtPlxuICAgICAgbGV0IHRha2VfYm9keSAoZSA6IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24pID1cbiAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gY2FzZV9saXN0IC0+XG4gICAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZnVuY3Rpb25fY2FzZXNcbiAgICAgICAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X2Nhc2UgY2FzZV9saXN0LFxuICAgICAgICAgICAgICAgIGUucGV4cF9sb2MsXG4gICAgICAgICAgICAgICAgY29weV9hdHRyaWJ1dGVzIGUucGV4cF9hdHRyaWJ1dGVzIClcbiAgICAgICAgfCBfIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9ib2R5IChjb3B5X2V4cHJlc3Npb24gZSlcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIHRha2VfYXJndW1lbnRzIGFjYyAoZSA6IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24pID1cbiAgICAgICAgaWYgZS5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgICAgICAgICgqIFRoZSBhdHRyaWJ1dGUgbGlzdCBpcyBub3QgZW1wdHksIG5vbmUgb2YgdGhlc2Ugbm9kZXMgY291bGQgaGF2ZVxuICAgICAgICAgICAgIGJlZW4gY3JlYXRlZCBieSB0aGUgZG93bndhcmQgbWlncmF0aW9uLiBFeGNlcHQgZm9yIFtQZXhwX2Z1bl0sIGZvclxuICAgICAgICAgICAgIHdoaWNoIHdlIGFkZCBhIGdob3N0IGF0dHJpYnV0ZSB0byBoZWxwIHVzIHJvdW5kdHJpcC4gKilcbiAgICAgICAgICBsZXQgXywgYXR0cnMgPVxuICAgICAgICAgICAgZXh0cmFjdF9hdHRyIFwicHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1wiIGUucGV4cF9hdHRyaWJ1dGVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgIE5vbmUsXG4gICAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZnVuY3Rpb25fYm9keVxuICAgICAgICAgICAgICAoY29weV9leHByZXNzaW9uIHsgZSB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGF0dHJzIH0pIClcbiAgICAgICAgZWxzZVxuICAgICAgICAgICgqIFRoZXNlIG5vZGVzIGFyZSBsaWtlbHkgdG8gaGF2ZSBiZWVuIHN5bnRoZXRpemVkIGR1cmluZyB0aGVcbiAgICAgICAgICAgICBkb3dud2FyZCBtaWdyYXRpb24uICopXG4gICAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW4gKGFyZ19sYWJlbCwgb3B0X2RlZmF1bHQsIHBhdCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgdGFrZV9hcmd1bWVudHNfZnVuIGFjYyBhcmdfbGFiZWwgb3B0X2RlZmF1bHQgcGF0IGV4cHJcbiAgICAgICAgICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAodCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhcmFtX2xvYyA9IHQubG9jO1xuICAgICAgICAgICAgICAgICAgcHBhcmFtX2Rlc2MgPSBQcGFyYW1fbmV3dHlwZSB0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6OiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgdGFrZV9hcmd1bWVudHMgYWNjIGV4cHJcbiAgICAgICAgICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoZXhwLCBjdCkgLT5cbiAgICAgICAgICAgICAgKCogVGhlc2UgdHdvIGV4cHJlc3Npb24gYXJlIHJlcHJlc2VudGVkIHRoZSBzYW1lIG9uIDUuMSBidXRcbiAgICAgICAgICAgICAgICAgZGlmZmVyZW50bHkgb24gNS4yOlxuICAgICAgICAgICAgICAgICB7W1xuICAgICAgICAgICAgICAgICAgIGxldCBfID0gZnVuIHggOiAoXyAtPiBpbnQpIC0+IGZ1biB5IC0+IHgreVxuICAgICAgICAgICAgICAgICAgIGxldCBfID0gZnVuIHggLT4gKChmdW4geSAtPiB4K3kpIDogXyAtPiBpbnQpXG4gICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAgICAgIFdlIG5vcm1hbGl6ZSB0aGUgc2Vjb25kIGludG8gdGhlIGZpcnN0IHdoZW4gbWlncmF0aW5nIHRvIDUuMixcbiAgICAgICAgICAgICAgICAgbWFraW5nIHRoZSBtaWdyYXRpb24gNS4yLT41LjEtPjUuMiBub3Qgcm91bmR0cmlwIGJ1dCBob3BlZnVsbHlcbiAgICAgICAgICAgICAgICAgd2l0aG91dCBjaGFuZ2UgaW4gc2VtYW50aWNzLiAqKVxuICAgICAgICAgICAgICBsZXQgY3QgPVxuICAgICAgICAgICAgICAgIFNvbWUgKEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdHJhaW50IChjb3B5X2NvcmVfdHlwZSBjdCkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhY2MsIGN0LCB0YWtlX2JvZHkgZXhwKVxuICAgICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKGV4cCwgYzEsIGMyKSAtPlxuICAgICAgICAgICAgICAoKiBTYW1lIGFzIGFib3ZlLCBtaWdodCBub3Qgcm91bmR0cmlwIGJ1dCBob3BlZnVsbHkgT0suICopXG4gICAgICAgICAgICAgIGxldCBjMSA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgYzFcbiAgICAgICAgICAgICAgYW5kIGMyID0gY29weV9jb3JlX3R5cGUgYzIgaW5cbiAgICAgICAgICAgICAgKGFjYywgU29tZSAoQXN0XzUwMi5QYXJzZXRyZWUuUGNvZXJjZSAoYzEsIGMyKSksIHRha2VfYm9keSBleHApXG4gICAgICAgICAgfCBfIC0+IChhY2MsIE5vbmUsIHRha2VfYm9keSBlKVxuICAgICAgYW5kIHRha2VfYXJndW1lbnRzX2Z1biBhY2MgYXJnX2xhYmVsIG9wdF9kZWZhdWx0IHBhdCBleHByID1cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgbGV0IHBwYXJhbV9kZXNjID1cbiAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXJhbV92YWxcbiAgICAgICAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCBhcmdfbGFiZWwsXG4gICAgICAgICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gb3B0X2RlZmF1bHQsXG4gICAgICAgICAgICAgICAgY29weV9wYXR0ZXJuIHBhdCApXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBCZXN0LWVmZm9ydCBsb2NhdGlvbi4gKilcbiAgICAgICAgICB7IEFzdF81MDIuUGFyc2V0cmVlLnBwYXJhbV9sb2MgPSBwYXQucHBhdF9sb2M7IHBwYXJhbV9kZXNjIH0gOjogYWNjXG4gICAgICAgIGluXG4gICAgICAgIHRha2VfYXJndW1lbnRzIGFjYyBleHByXG4gICAgICBpblxuICAgICAgKCogVGhlIGFyZ3VtZW50IGxpc3QgcmV0dXJuZWQgYnkgW3Rha2VfYXJndW1lbnRzXSBpcyByZXZlcnNlZCAqKVxuICAgICAgbGV0IGFyZ19saXN0LCB0eXBlX2NvbnN0cmFpbnQsIGJvZHkgPVxuICAgICAgICB0YWtlX2FyZ3VtZW50c19mdW4gW10gYXJnX2xhYmVsIG9wdF9kZWZhdWx0IHBhdCBleHByXG4gICAgICBpblxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5yZXYgYXJnX2xpc3QsIHR5cGVfY29uc3RyYWludCwgYm9keSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMi5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLmxldF87IEFzdF81MDEuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAyLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDIuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDIuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50ID1cbiAgICAgIE9wdGlvbi5tYXAgY29weV92YWx1ZV9jb25zdHJhaW50IHB2Yl9jb25zdHJhaW50O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMi5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV92YWx1ZV9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOyB0eXAgfSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnRcbiAgICAgICAge1xuICAgICAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7XG4gICAgICAgICAgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwO1xuICAgICAgICB9XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9IC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdmNfY29lcmNpb25cbiAgICAgICAge1xuICAgICAgICAgIGdyb3VuZCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgZ3JvdW5kO1xuICAgICAgICAgIGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNpb247XG4gICAgICAgIH1cblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hbGlhc1xuICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIHsgQXN0XzUwMi5Bc3R0eXBlcy50eHQgPSB4MTsgbG9jID0geDAucHR5cF9sb2MgfSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID1cbiAgICAgIChtYXRjaCBhdHRyX25hbWUudHh0IHdpdGhcbiAgICAgIHwgXCJvY2FtbC5wcHguY29udGV4dFwiIC0+XG4gICAgICAgICAgY29weV9wYXlsb2FkIChtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQgYXR0cl9wYXlsb2FkKVxuICAgICAgfCBfIC0+IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQpO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAyLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAyLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDIuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDIuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMi5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDIuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMi5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDIuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMi5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAyLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDIuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDIuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMi5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMi5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAyLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMi5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDEuQXN0dHlwZXMudHh0OyBBc3RfNTAxLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMi5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDIuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiA0LjE0IGFuZCA1LjAgZnJvbSBhIFBhcnNldHJlZSBwb2ludCBvZiB2aWV3IGFyZSB0aGUgbWFnaWMgbnVtYmVycyAqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RfNDE0LkFzdHR5cGVzXG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdF80MTQuUGFyc2V0cmVlXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzJcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzJcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMVxubW9kdWxlIFRvID0gQXN0XzUwMFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF81MDEuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF81MDAuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5sZXRfOyBBc3RfNTAxLlBhcnNldHJlZS5hbmRzOyBBc3RfNTAxLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuVXB0byAtPiBBc3RfNTAwLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNTAwLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzUwMS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAgbGV0IG1lcmdlX2xvYyBsZWZ0IHJpZ2h0ID1cbiAgICBMb2NhdGlvbi5cbiAgICAgIHsgbG9jX3N0YXJ0ID0gbGVmdC5sb2Nfc3RhcnQ7IGxvY19lbmQgPSByaWdodC5sb2NfZW5kOyBsb2NfZ2hvc3QgPSBmYWxzZSB9XG4gIGluXG4gIGxldCBnaG9zdF9sb2MgbG9jID0geyBsb2Mgd2l0aCBMb2NhdGlvbi5sb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgbGV0IGdob3N0X2NvbnN0cmFpbnQgcGF0IHR5cCA9XG4gICAgbGV0IHBwYXRfbG9jID1cbiAgICAgIGdob3N0X2xvY1xuICAgICAgICAobWVyZ2VfbG9jIHBhdC5Bc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvYyB0eXAuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2MpXG4gICAgaW5cbiAgICB7XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIHBwYXRfbG9jO1xuICAgICAgcHBhdF9kZXNjID0gQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChwYXQsIHR5cCk7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgIH1cbiAgaW5cbiAgbGV0IHB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdCBhbmQgcHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgbGV0IGNvbnN0cmFpbl9wYXQgcGF0IHR5cCBleHByID1cbiAgICBsZXQgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwIGluXG4gICAgbGV0IHB2Yl9wYXQgPSBnaG9zdF9jb25zdHJhaW50IHBhdCB0eXAgaW5cbiAgICAocHZiX3BhdCwgcHZiX2V4cHIpXG4gIGluXG4gIGxldCBwdmJfcGF0LCBwdmJfZXhwciA9XG4gICAgbWF0Y2ggKHB2Yl9jb25zdHJhaW50LCBwdmJfcGF0KSB3aXRoXG4gICAgfCAoIFNvbWVcbiAgICAgICAgICAoUHZjX2NvbnN0cmFpbnRcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID0gW107XG4gICAgICAgICAgICAgIHR5cCA9IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IF8gfSBhcyB0eXA7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgeyBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBQcGF0X3ZhciBfOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9ICkgLT5cbiAgICAgICAgKCogdGhlIHN1Z2FyaW5nIG9mIFtsZXQgeDogdW5pdmFycyAuIHR5cCA9IGV4cCBdIHdhcyBkZXN1Z2FyZWQgdG9cbiAgICAgICAgICAgW2xldCAoeDp1bml2YXJzIC4gdHlwKSA9IGV4cF0gaW4gNS4wIHdoaWNoIGRvZXNuJ3QgZml0IHRoZSBjYXNlIGJlbG93ICopXG4gICAgICAgIGNvbnN0cmFpbl9wYXQgcHZiX3BhdCB0eXAgcHZiX2V4cHJcbiAgICB8ICggU29tZSAoUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7IHR5cCB9KSxcbiAgICAgICAgeyBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBQcGF0X3ZhciBfOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9ICkgLT5cbiAgICAgICAgKCogQ29waWVkIGFuZCBhZGFwdGVkIGZyb20gT0NhbWwgNS4wIEFzdF9oZWxwZXIgKilcbiAgICAgICAgbGV0IHZhcmlmeV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICAgICAgICAgIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi5Mb2NhdGlvbi50eHQpIHZhcl9uYW1lcyBpblxuICAgICAgICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgICAgICAgIGxldCBkZXNjID1cbiAgICAgICAgICAgICAgbWF0Y2ggdC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gICAgICAgICAgICAgIHwgUHR5cF92YXIgeCAtPiBQdHlwX3ZhciB4XG4gICAgICAgICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICAgICAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICAgICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgICAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgICAgICAgICAoIExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgIGZsYWcsXG4gICAgICAgICAgICAgICAgICAgICAgbGJsX2xzdF9vcHRpb24gKVxuICAgICAgICAgICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgICAgICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9wYWNrYWdlXG4gICAgICAgICAgICAgICAgICAgIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gICAgICAgICAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICAgICAgICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICAgICAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPlxuICAgICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICAgICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICAgICAgICAgIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgICAgICAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgICAgICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIHQpIC0+XG4gICAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgbG9vcCB0KVxuICAgICAgICAgICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IGZpZWxkIHdpdGggcG9mX2Rlc2MgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgbG9vcCB0XG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXAgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gbWVyZ2VfbG9jIHB2Yl9wYXQucHBhdF9sb2MgcHZiX2V4cHIucGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID1cbiAgICAgICAgICBtYXRjaCBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgd2l0aFxuICAgICAgICAgIHwgW10gLT4gZ2hvc3RfbG9jIHR5cC5wdHlwX2xvY1xuICAgICAgICAgIHwgXyA6OiBfIC0+IGdob3N0X2xvYyBwZXhwX2xvY1xuICAgICAgICBpblxuICAgICAgICBsZXQgdHlwX3BvbHkgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cCB3aXRoXG4gICAgICAgICAgICBwdHlwX2xvYztcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9kZXNjID1cbiAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgICAgICAgICAgKCBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMsXG4gICAgICAgICAgICAgICAgICB2YXJpZnlfY29uc3RydWN0b3JzIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyB0eXAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG5cbiAgICAgICAgbGV0IHBwYXRfbG9jID1cbiAgICAgICAgICBnaG9zdF9sb2NcbiAgICAgICAgICAgIChtZXJnZV9sb2MgcHZiX3BhdC5Bc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY1xuICAgICAgICAgICAgICAgdHlwLkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHZiX3BhdCA9IHsgKGdob3N0X2NvbnN0cmFpbnQgcHZiX3BhdCB0eXBfcG9seSkgd2l0aCBwcGF0X2xvYyB9XG4gICAgICAgIGFuZCBwdmJfZXhwciA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gZXhwciB2YXIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGV4cHIgd2l0aFxuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jO1xuICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHZhciwgZXhwcik7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHB2Yl9leHByIHdpdGhcbiAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgIHBleHBfbG9jO1xuICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cmFpbnQgKHB2Yl9leHByLCB0eXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKExpc3QucmV2IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycylcbiAgICAgICAgaW5cbiAgICAgICAgKHB2Yl9wYXQsIHB2Yl9leHByKVxuICAgIHwgU29tZSAoUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSBbXTsgdHlwIH0pLCBfIC0+XG4gICAgICAgIGNvbnN0cmFpbl9wYXQgcHZiX3BhdCB0eXAgcHZiX2V4cHJcbiAgICB8IFNvbWUgKFB2Y19jb2VyY2lvbiB7IGdyb3VuZDsgY29lcmNpb24gfSksIF8gLT5cbiAgICAgICAgbGV0IGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNpb24gaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gZ2hvc3RfbG9jIGNvZXJjaW9uLnB0eXBfbG9jIGluXG4gICAgICAgIGxldCB0eXAgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvZXJjaW9uIHdpdGhcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHkgKFtdLCBjb2VyY2lvbik7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHZiX3BhdCA9IGdob3N0X2NvbnN0cmFpbnQgcHZiX3BhdCB0eXAgaW5cbiAgICAgICAgbGV0IGdyb3VuZCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgZ3JvdW5kIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IG1lcmdlX2xvYyBwdmJfcGF0LnBwYXRfbG9jIHB2Yl9leHByLnBleHBfbG9jIGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHZiX2V4cHIgd2l0aFxuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29lcmNlIChwdmJfZXhwciwgZ3JvdW5kLCBjb2VyY2lvbik7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICAocHZiX3BhdCwgcHZiX2V4cHIpXG4gICAgfCBfIC0+IChwdmJfcGF0LCBwdmJfZXhwcilcbiAgaW5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF81MDAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF81MDEuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzUwMC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbGV0IGxvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2MgaW5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBsb2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfbG9jID0gbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBsb2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4MSA9IGNvcHlfbW9kdWxlX2V4cHIgeDEgaW5cbiAgICAgIGxldCB4MSA9XG4gICAgICAgIG1hdGNoIHgxLnBtb2RfZGVzYyB3aXRoXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgW10gLT5cbiAgICAgICAgICAgIGxldCBsb2MgPSB7IHgxLnBtb2RfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9XG4gICAgICAgICAgICAgICAgICB7IHR4dCA9IFwicHB4bGliLm1pZ3JhdGlvbi5rZWVwX3N0cnVjdHVyZVwiOyBsb2MgfTtcbiAgICAgICAgICAgICAgICBhdHRyX3BheWxvYWQgPSBBc3RfNTAwLlBhcnNldHJlZS5QU3RyIFtdO1xuICAgICAgICAgICAgICAgIGF0dHJfbG9jID0gbG9jO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDo6IHgxLnBtb2RfYXR0cmlidXRlc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgeDEgd2l0aCBwbW9kX2F0dHJpYnV0ZXMgfVxuICAgICAgICB8IF8gLT4geDFcbiAgICAgIGluXG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgeDAgLT5cbiAgICAgIGxldCBlbXB0eV9zdHJ1Y3QgPVxuICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSBQbW9kX3N0cnVjdHVyZSBbXTtcbiAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGVtcHR5X3N0cnVjdClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzUwMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF81MDAuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF81MDAuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzUwMC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3ZhcnMgPVxuICAgICAgTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSBwY2RfdmFycztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF81MDAuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF81MDAuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNTAwLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNTAxLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF81MDAuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF81MDAuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF81MDAuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF81MDEuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF81MDAuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNTAwLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNTAwLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF81MDAuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF81MDAuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF81MDEuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNTAxLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF81MDAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNTAxLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW5jdGlvblxuICB8IExvbmdpZGVudC5MaWRlbnQgeDAgLT4gTG9uZ2lkZW50LkxpZGVudCB4MFxuICB8IExvbmdpZGVudC5MZG90ICh4MCwgeDEpIC0+IExvbmdpZGVudC5MZG90IChjb3B5X0xvbmdpZGVudF90IHgwLCB4MSlcbiAgfCBMb25naWRlbnQuTGFwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBMb25naWRlbnQuTGFwcGx5IChjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF81MDAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNTAxLkFzdHR5cGVzLnR4dDsgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF81MDAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNTAwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPVxuIGZ1biB7IExvY2F0aW9uLmxvY19zdGFydDsgTG9jYXRpb24ubG9jX2VuZDsgTG9jYXRpb24ubG9jX2dob3N0IH0gLT5cbiAge1xuICAgIExvY2F0aW9uLmxvY19zdGFydCA9IGNvcHlfcG9zaXRpb24gbG9jX3N0YXJ0O1xuICAgIExvY2F0aW9uLmxvY19lbmQgPSBjb3B5X3Bvc2l0aW9uIGxvY19lbmQ7XG4gICAgTG9jYXRpb24ubG9jX2dob3N0O1xuICB9XG5cbmFuZCBjb3B5X3Bvc2l0aW9uIDogTGV4aW5nLnBvc2l0aW9uIC0+IExleGluZy5wb3NpdGlvbiA9XG4gZnVuIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH0gLT5cbiAgeyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfVxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF81MDBcbm1vZHVsZSBUbyA9IEFzdF81MDFcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzUwMC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNTAwLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNTAxLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUubGV0XzsgQXN0XzUwMC5QYXJzZXRyZWUuYW5kczsgQXN0XzUwMC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF81MDEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gICgqIENvcGllZCBhbmQgYWRhcHRlZCBmcm9tIE9DYW1sIDUuMCBBc3RfaGVscGVyICopXG4gIGxldCB2YXJpZnlfY29uc3RydWN0b3JzIHZhcl9uYW1lcyB0ID1cbiAgICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYuTG9jYXRpb24udHh0KSB2YXJfbmFtZXMgaW5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBsZXQgZGVzYyA9XG4gICAgICAgIG1hdGNoIHQuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIHggLT4gUHR5cF92YXIgeFxuICAgICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pXG4gICAgICAgICAgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lcyAtPlxuICAgICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+IFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPiBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pXG4gICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX3BhY2thZ2VcbiAgICAgICAgICAgICAgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICAgIGluXG4gICAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgICAgbGV0IHByZl9kZXNjID1cbiAgICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+XG4gICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgdCkgLT5cbiAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gICAgaW5cbiAgICBsb29wIHRcbiAgaW5cbiAgKCogTWF0Y2ggdGhlIGZvcm0gb2YgdGhlIGV4cHIgYW5kIHBhdHRlcm4gdG8gZGVjaWRlIHRoZSB2YWx1ZSBvZlxuICAgICBbcHZiX2NvbnN0cmFpbnRdLiBBZGFwdGVkIGZyb20gT0NhbWwgNS4wIFBQcmludGVyLiAqKVxuICBsZXQgdHl2YXJzX3N0ciB0eXZhcnMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi5Mb2NhdGlvbi50eHQpIHR5dmFycyBpblxuICBsZXQgcmVzdWdhcmFibGVfdmFsdWVfYmluZGluZyBwIGUgPVxuICAgIGxldCB2YWx1ZV9wYXR0ZXJuID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID1cbiAgICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAoICh7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF8gfSBhcyBwYXQpLFxuICAgICAgICAgICAgICh7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoYXJnc190eXZhcnMsIHJ0KSB9IGFzIHR5X2V4dCkgKTtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICBhc3NlcnQgKG1hdGNoIHJ0LnB0eXBfZGVzYyB3aXRoIFB0eXBfcG9seSBfIC0+IGZhbHNlIHwgXyAtPiB0cnVlKTtcbiAgICAgICAgICBsZXQgdHkgPSBtYXRjaCBhcmdzX3R5dmFycyB3aXRoIFtdIC0+IHJ0IHwgXyAtPiB0eV9leHQgaW5cbiAgICAgICAgICBgVmFyIChwYXQsIGFyZ3NfdHl2YXJzLCBydCwgdHkpXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cmFpbnQgKHBhdCwgcnQpO1xuICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIGBOb25WYXIgKHBhdCwgcnQpXG4gICAgICB8IF8gLT4gYE5vbmVcbiAgICBpblxuICAgIGxldCByZWMgdmFsdWVfZXhwIHR5dmFycyBlID1cbiAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgfCB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gUGV4cF9uZXd0eXBlICh0eXZhciwgZSk7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgdmFsdWVfZXhwICh0eXZhciA6OiB0eXZhcnMpIGVcbiAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgIFNvbWUgKExpc3QucmV2IHR5dmFycywgZSwgY3QpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IHZhbHVlX2V4cCA9IHZhbHVlX2V4cCBbXSBlIGluXG4gICAgbWF0Y2ggKHZhbHVlX3BhdHRlcm4sIHZhbHVlX2V4cCkgd2l0aFxuICAgIHwgYFZhciAocCwgcHRfdHl2YXJzLCBwdF9jdCwgZXh0ZXJuX2N0KSwgU29tZSAoZV90eXZhcnMsIGlubmVyX2UsIGVfY3QpXG4gICAgICB3aGVuIHR5dmFyc19zdHIgcHRfdHl2YXJzID0gdHl2YXJzX3N0ciBlX3R5dmFycyAtPlxuICAgICAgICBsZXQgZXR5ID0gdmFyaWZ5X2NvbnN0cnVjdG9ycyBlX3R5dmFycyBlX2N0IGluXG4gICAgICAgIGlmIGV0eSA9IHB0X2N0IHRoZW5cbiAgICAgICAgICBgRGVzdWdhcmVkX2xvY2FsbHlfYWJzdHJhY3QgKHAsIHB0X3R5dmFycywgZV9jdCwgaW5uZXJfZSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgICgqIHRoZSBleHByZXNzaW9uIGNvbnN0cmFpbnQgYW5kIHRoZSBwYXR0ZXJuIGNvbnN0cmFpbnQsXG4gICAgICAgICAgICAgZG9uJ3QgbWF0Y2gsIGJ1dCB3ZSBzdGlsbCBoYXZlIGEgUHR5cF9wb2x5IHBhdHRlcm4gY29uc3RyYWludCB0aGF0XG4gICAgICAgICAgICAgc2hvdWxkIGJlIHJlc3VnYXJlZCB0byBhIHZhbHVlIGJpbmRpbmcgKilcbiAgICAgICAgICBgVW5pdmFycyAocCwgcHRfdHl2YXJzLCBleHRlcm5fY3QsIGUpXG4gICAgfCBgVmFyIChwLCBwdF90eXZhcnMsIHB0X2N0LCBleHRlcm5fY3QpLCBfIC0+XG4gICAgICAgIGBVbml2YXJzIChwLCBwdF90eXZhcnMsIGV4dGVybl9jdCwgZSlcbiAgICB8IGBOb25WYXIgKHBhdCwgY3QpLCBfIC0+IGBOb25WYXIgKHBhdCwgY3QsIGUpXG4gICAgfCBfIC0+IGBOb25lXG4gIGluXG4gIGxldCB3aXRoX2NvbnN0cmFpbnQgdHlfdmFycyB0eXAgPVxuICAgIGxldCB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXAgaW5cbiAgICBTb21lXG4gICAgICAoQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnRcbiAgICAgICAgIHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID0gdHlfdmFyczsgdHlwIH0pXG4gIGluXG4gIGxldCBwdmJfcGF0LCBwdmJfZXhwciwgcHZiX2NvbnN0cmFpbnQgPVxuICAgIG1hdGNoIHJlc3VnYXJhYmxlX3ZhbHVlX2JpbmRpbmcgcHZiX3BhdCBwdmJfZXhwciB3aXRoXG4gICAgfCBgRGVzdWdhcmVkX2xvY2FsbHlfYWJzdHJhY3QgKHAsIHR5X3ZhcnMsIHR5cCwgZSkgLT5cbiAgICAgICAgKHAsIGUsIHdpdGhfY29uc3RyYWludCB0eV92YXJzIHR5cClcbiAgICB8IGBVbml2YXJzIChwYXQsIFtdLCBjdCwgZXhwcikgLT4gKFxuICAgICAgICAoKiBjaGVjayBpZiB3ZSBhcmUgaW4gdGhlIFtsZXQgeCA6IHR5PyA6PiBjb2VyID0gZXhwciBdIGNhc2UgKilcbiAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvZXJjZSAoZXhwciwgZ3IsIGNvZXJjZSk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgICAgICAtPlxuICAgICAgICAgICAgbGV0IGdyb3VuZCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgZ3IgaW5cbiAgICAgICAgICAgIGxldCBjb2VyY2lvbiA9IGNvcHlfY29yZV90eXBlIGNvZXJjZSBpblxuICAgICAgICAgICAgbGV0IHB2Yl9jb25zdHJhaW50ID1cbiAgICAgICAgICAgICAgU29tZSAoQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChwYXQsIGV4cHIsIHB2Yl9jb25zdHJhaW50KVxuICAgICAgICB8IF8gLT4gKHBhdCwgZXhwciwgd2l0aF9jb25zdHJhaW50IFtdIGN0KSlcbiAgICB8IGBVbml2YXJzIChwYXQsIF8sIGN0LCBleHByKSAtPiAocGF0LCBleHByLCB3aXRoX2NvbnN0cmFpbnQgW10gY3QpXG4gICAgfCBgTm9uVmFyIChwLCB0eXAsIGUpIC0+IChwLCBlLCB3aXRoX2NvbnN0cmFpbnQgW10gdHlwKVxuICAgIHwgYE5vbmUgLT4gKHB2Yl9wYXQsIHB2Yl9leHByLCBOb25lKVxuICBpblxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAxLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAwLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4MSwgaXNfdW5pdCA9XG4gICAgICAgIG1hdGNoIHgxLnBtb2RfZGVzYyB3aXRoXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgW10gLT5cbiAgICAgICAgICAgIGxldCByZWMgZXh0cmFjdF9hdHRyIGFjYyA6IEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gXyA9XG4gICAgICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgW10gLT4gKExpc3QucmV2IGFjYywgdHJ1ZSlcbiAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICBhdHRyX25hbWUgPSB7IHR4dCA9IFwicHB4bGliLm1pZ3JhdGlvbi5rZWVwX3N0cnVjdHVyZVwiOyBfIH07XG4gICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6OiBxIC0+XG4gICAgICAgICAgICAgICAgICAoTGlzdC5yZXZfYXBwZW5kIGFjYyBxLCBmYWxzZSlcbiAgICAgICAgICAgICAgfCBoZCA6OiB0bCAtPiBleHRyYWN0X2F0dHIgKGhkIDo6IGFjYykgdGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzLCBiID0gZXh0cmFjdF9hdHRyIFtdIHgxLnBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICAgICAgKHsgeDEgd2l0aCBwbW9kX2F0dHJpYnV0ZXMgfSwgYilcbiAgICAgICAgfCBfIC0+ICh4MSwgZmFsc2UpXG4gICAgICBpblxuICAgICAgaWYgaXNfdW5pdCB0aGVuIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgICAgIGVsc2VcbiAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF81MDEuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF81MDEuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzUwMS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3ZhcnMgPVxuICAgICAgTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSBwY2RfdmFycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF81MDEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF81MDEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNTAxLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNTAwLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF81MDEuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF81MDEuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF81MDEuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF81MDAuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNTAxLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNTAxLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF81MDEuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF81MDEuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF81MDAuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNTAwLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNTAwLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW5jdGlvblxuICB8IExvbmdpZGVudC5MaWRlbnQgeDAgLT4gTG9uZ2lkZW50LkxpZGVudCB4MFxuICB8IExvbmdpZGVudC5MZG90ICh4MCwgeDEpIC0+IExvbmdpZGVudC5MZG90IChjb3B5X0xvbmdpZGVudF90IHgwLCB4MSlcbiAgfCBMb25naWRlbnQuTGFwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBMb25naWRlbnQuTGFwcGx5IChjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF81MDEuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNTAwLkFzdHR5cGVzLnR4dDsgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF81MDEuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNTAxLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPVxuIGZ1biB7IExvY2F0aW9uLmxvY19zdGFydDsgTG9jYXRpb24ubG9jX2VuZDsgTG9jYXRpb24ubG9jX2dob3N0IH0gLT5cbiAge1xuICAgIExvY2F0aW9uLmxvY19zdGFydCA9IGNvcHlfcG9zaXRpb24gbG9jX3N0YXJ0O1xuICAgIExvY2F0aW9uLmxvY19lbmQgPSBjb3B5X3Bvc2l0aW9uIGxvY19lbmQ7XG4gICAgTG9jYXRpb24ubG9jX2dob3N0O1xuICB9XG5cbmFuZCBjb3B5X3Bvc2l0aW9uIDogTGV4aW5nLnBvc2l0aW9uIC0+IExleGluZy5wb3NpdGlvbiA9XG4gZnVuIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH0gLT5cbiAgeyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNTAwXG5tb2R1bGUgVG8gPSBBc3RfNDE0XG5cbigqJCBvcGVuIEFzdGxpYl9jaW5hcHNfaGVscGVycyAkKilcblxuKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgUHJpbnRmLnByaW50ZlxuICAgICAgICBcImxldCBjb3B5XyVzXFxuXFxcbiAgICAgICAgXFwgIDogQXN0XzUwMC5QYXJzZXRyZWUuJXMgLT4gQXN0XzQxNC5QYXJzZXRyZWUuJXNcXG5cXFxuICAgICAgICBcXCAgPSBmdW4geCAtPiB4XFxuXFxuXCJcbiAgICAgICAgcyBzIHNcbiAgKVxuKilcbmxldCBjb3B5X3N0cnVjdHVyZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3RvcGxldmVsX3BocmFzZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NvcmVfdHlwZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHJlc3Npb25cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3BhdHRlcm5cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm5cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2Nhc2VcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3JcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2V4cHJcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2ZpZWxkXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV9leHByXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV90eXBlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3N0cnVjdHVyZV9pdGVtXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbigqJCopXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MTRcbm1vZHVsZSBUbyA9IEFzdF81MDBcblxuKCokIG9wZW4gQXN0bGliX2NpbmFwc19oZWxwZXJzICQqKVxuXG4oKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBQcmludGYucHJpbnRmXG4gICAgICAgIFwibGV0IGNvcHlfJXNcXG5cXFxuICAgICAgICBcXCAgOiBBc3RfNDE0LlBhcnNldHJlZS4lcyAtPiBBc3RfNTAwLlBhcnNldHJlZS4lc1xcblxcXG4gICAgICAgIFxcICA9IGZ1biB4IC0+IHhcXG5cXG5cIlxuICAgICAgICBzIHMgc1xuICApXG4qKVxubGV0IGNvcHlfc3RydWN0dXJlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY29yZV90eXBlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwcmVzc2lvblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfcGF0dGVyblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVyblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2FzZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2FzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZXhwclxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZmllbGRcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX2V4cHJcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX3R5cGVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc3RydWN0dXJlX2l0ZW1cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxuKCokKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuXG4gICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIChbXSwgUClcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgQyAodHlwZSBhIGIpIFAgICBTb21lIChbYTsgYl0sIFApXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAoKiAobW9kdWxlIFApICAgICAgICBTb21lIFwiUFwiXG4gICAgICAgKG1vZHVsZSBfKSAgICAgICAgTm9uZVxuXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXRcbiAgICAoKiAoKSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIChYIDogTVQpICAgICAgICAgIFNvbWUgWCwgTVRcbiAgICAgICAoXyA6IE1UKSAgICAgICAgICBOb25lLCBNVCAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTIDo9ICAuLi4gICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiB3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIHdpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmQgKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzBcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzBcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxNFxubW9kdWxlIFRvID0gQXN0XzQxM1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjEzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxNC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLmxldF87IEFzdF80MTQuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTQuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTMuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTQuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxNC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDE0LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPiAoXG4gICAgICBtYXRjaCB4MCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gICAgICB8IGhkIDo6IF8gLT5cbiAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgaGQubG9jIFwidHlwZSBwYXJhbWV0ZXJzIGluIGV4dGVuc2lvbiBjb25zdHJ1Y3RvcnNcIilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIG1hdGNoIHBjZF92YXJzIHdpdGhcbiAgfCBbXSAtPlxuICAgICAge1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gICAgICB9XG4gIHwgaGQgOjogXyAtPiBtaWdyYXRpb25fZXJyb3IgaGQubG9jIFwicGNkX3ZhcnMgaW4gY29uc3RydWN0b3IgZGVjbGFyYXRpb25zXCJcblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxNC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDE0LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTQuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTQuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTQuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDE0LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxNC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTMuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDE0LkFzdHR5cGVzLnR4dDsgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTMuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxM1xubW9kdWxlIFRvID0gQXN0XzQxNFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTMuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTQuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEzLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEzLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDE0LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDE0LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxNC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxNC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTQuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTQuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChbXSwgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxNC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3ZhcnMgPSBbXTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTQuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTQuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDE0LkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTQuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTQuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTQuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTQuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDE0LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDE0LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTQuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTQuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTQuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTMuQXN0dHlwZXMudHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxNC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTQuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuXG4gICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAoKiAobW9kdWxlIFApICAgICAgICBTb21lIFwiUFwiXG4gICAgICAgKG1vZHVsZSBfKSAgICAgICAgTm9uZVxuXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXRcbiAgICAoKiAoKSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIChYIDogTVQpICAgICAgICAgIFNvbWUgWCwgTVRcbiAgICAgICAoXyA6IE1UKSAgICAgICAgICBOb25lLCBNVCAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI5XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI5XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTNcbm1vZHVsZSBUbyA9IEFzdF80MTJcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4xM1wiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTMuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEzLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEzLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEyLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEyLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAobWF0Y2ggeDAgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICAgIHwgdHkgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgbWlncmF0aW9uX2Vycm9yIHR5LkFzdF80MTMuQXN0dHlwZXMubG9jXG4gICAgICAgICAgICAgICAgICAgIFwiZXhpc3RlbnRpYWxzIGluIHBhdHRlcm4tbWF0Y2hpbmdcIik7XG4gICAgICAgICAgICAgIGNvcHlfcGF0dGVybiB4MSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEyLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlIChfeDAsIHgxKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgxLkFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jIFwibW9kdWxlIHR5cGUgc3Vic3RpdHV0aW9uXCJcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKF94MCwgeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDEuQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2NcbiAgICAgICAgXCJkZXN0cnVjdGl2ZSBtb2R1bGUgdHlwZSBzdWJzdGl0dXRpb25cIlxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5Bc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvY1xuICAgICAgICBcImxvY2FsIG1vZHVsZSB0eXBlIHN1YnN0aXR1dGlvblwiXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEyLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxMi5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTIuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTIuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMlxubW9kdWxlIFRvID0gQXN0XzQxM1xuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTIuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEyLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEyLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEzLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEzLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IChbXSwgY29weV9wYXR0ZXJuIHgpKSB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTMuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTMuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEyLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTIuQXN0dHlwZXMudHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjhcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjhcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMlxubW9kdWxlIFRvID0gQXN0XzQxMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTIuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEyLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEyLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDExLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDExLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDExLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgXyA9IHgxIGluXG4gICAgICAgICAgICBjb3B5X3ZhcmlhbmNlIHgwICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgXyA9IHgxIGluXG4gICAgICAgICAgICBjb3B5X3ZhcmlhbmNlIHgwICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIF8gPSB4MSBpblxuICAgICAgICAgICAgY29weV92YXJpYW5jZSB4MCApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTEuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEyLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTIuQXN0dHlwZXMudHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDExXG5tb2R1bGUgVG8gPSBBc3RfNDEyXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLmxldF87IEFzdF80MTEuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTIuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIChjb3B5X3ZhcmlhbmNlIHgxLCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkpKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEyLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIChjb3B5X3ZhcmlhbmNlIHgxLCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkpKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCAoY29weV92YXJpYW5jZSB4MSwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5KSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMS5Bc3R0eXBlcy50eHQ7IEFzdF80MTEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAoKiAobW9kdWxlIFApICAgICAgICBTb21lIFwiUFwiXG4gICAgICAgKG1vZHVsZSBfKSAgICAgICAgTm9uZVxuXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXRcbiAgICAoKiAoKSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIChYIDogTVQpICAgICAgICAgIFNvbWUgWCwgTVRcbiAgICAgICAoXyA6IE1UKSAgICAgICAgICBOb25lLCBNVCAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjdcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjdcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMVxubW9kdWxlIFRvID0gQXN0XzQxMFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwciB4ID0gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5sZXRfOyBBc3RfNDExLlBhcnNldHJlZS5hbmRzOyBBc3RfNDExLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEwLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEwLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSBsaXN0IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdCB4ID0gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXAgeCA9IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEwLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEwLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTAuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgXywgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMS5Bc3R0eXBlcy50eHQ7IEFzdF80MTEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEwLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTBcbm1vZHVsZSBUbyA9IEFzdF80MTFcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHIgeCA9IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMC5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgbGlzdCAtPiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXQgeCA9IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwIHggPSBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTEuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDExLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIExvY2F0aW9uLm5vbmUsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTAuQXN0dHlwZXMudHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcblxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCB0eXAgPSBjb3JlX3R5cGVcblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgIChtb2R1bGUgUylcbiAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdCA9IHBhdHRlcm5cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgKCogKG1vZHVsZSBQKVxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHIgPSBleHByZXNzaW9uXG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzXG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGNhc2VzID0gY2FzZSBsaXN0XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgfCBDID0gRFxuICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgdmFsIHg6IFRcbiAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyNlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyNlwiXG5lbmRcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQxMFxubW9kdWxlIFRvID0gQXN0XzQwOVxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjEwXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCBtYXBfb3B0aW9uIGYgeCA9IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZyA9IG1hcF9vcHRpb24gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBOb25lIC0+IG1pZ3JhdGlvbl9lcnJvciB4MC5sb2MgXCJhbm9ueW1vdXMgbGV0IG1vZHVsZVwiXG4gICAgICAgICAgICAgIHwgU29tZSB4IC0+IHgpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEwLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDA5LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDA5LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0IC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2NcbiAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBOb25lIC0+IG1pZ3JhdGlvbl9lcnJvciB4MC5sb2MgXCJhbnlueW1vdXMgdW5wYWNrXCIgfCBTb21lIHggLT4geClcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDogQXN0XzQxMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gTG9jYXRpb24udCBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvY1xuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgfCBOb25lIC0+IG1pZ3JhdGlvbl9lcnJvciBwbWJfbmFtZS5sb2MgXCJhbm9ueW1vdXMgbW9kdWxlIGJpbmRpbmdcIilcbiAgICAgICAgcG1iX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeCwgeSA9IGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAgaW5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeCwgeSwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPlxuICAgIHN0cmluZyBBc3RfNDA5LkFzdHR5cGVzLmxvYyAqIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlIG9wdGlvbiA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuVW5pdCAtPiAoeyBsb2MgPSBMb2NhdGlvbi5ub25lOyB0eHQgPSBcIipcIiB9LCBOb25lKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICAoIGNvcHlfbG9jIChmdW5jdGlvbiBOb25lIC0+IFwiX1wiIHwgU29tZSB4IC0+IHgpIHgwLFxuICAgICAgICBTb21lIChjb3B5X21vZHVsZV90eXBlIHgxKSApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgsIHkgPSBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwIGluXG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgsIHksIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MDkuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlID0gbWFwX29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvY1xuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHBtZF9uYW1lLmxvYyBcImFub255bW91cyBtb2R1bGUgZGVjbGFyYXRpb25cIlxuICAgICAgICAgIHwgU29tZSB4IC0+IHgpXG4gICAgICAgIHBtZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MDkuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX3JlcyA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTAuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MDkuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEwLkFzdHR5cGVzLnR4dDsgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MDkuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQwOVxubW9kdWxlIFRvID0gQXN0XzQxMFxuXG5sZXQgbWFwX29wdGlvbiBmIHggPSBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmcgPSBtYXBfb3B0aW9uIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5sZXRfOyBBc3RfNDA5LlBhcnNldHJlZS5hbmRzOyBBc3RfNDA5LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEwLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEwLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkID0gbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCAobWF0Y2ggKHgwLnR4dCwgeDEpIHdpdGhcbiAgICAgICAgICB8IFwiKlwiLCBOb25lIC0+IFVuaXRcbiAgICAgICAgICB8IFwiX1wiLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIF8gLT4gTm9uZSkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIChtYXRjaCAoeDAudHh0LCB4MSkgd2l0aFxuICAgICAgICAgIHwgXCIqXCIsIE5vbmUgLT4gVW5pdFxuICAgICAgICAgIHwgXCJfXCIsIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4gXyAtPiBOb25lKSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8sIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IG1hcF9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXMgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEwLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTAuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MDkuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEwLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBc3QgcG9ydGVkIG9uIFRodSBNYXIgMjEgMDk6NTA6NDIgR01UIDIwMTlcbiAgIE9DYW1sIHdhczpcbiAgIGNvbW1pdCA1NWM5YmE0NjYzNjJmMzAzZWI0ZDVlZDUxMWY2ZmRhMTQyODc5MTM3IChIRUFEIC0+IDQuMDgsIG9yaWdpbi80LjA4KVxuICAgICBBdXRob3I6IE5pY29sw6FzIE9qZWRhIELDpHIgPG4ub2plLmJhckBnbWFpbC5jb20+XG4gICAgIERhdGU6ICAgVHVlIE1hciAxOSAwODoxMTowMiAyMDE5ICswMTAwXG5cbiAgICAgICAgIE1lcmdlIHB1bGwgcmVxdWVzdCAjODUyMSBmcm9tIG5vamIvZml4X3VuaXhfdGVzdHNfNDA4XG5cbiAgICAgICAgIEFjdHVhbGx5IHJ1biBhbGwgbGliLXVuaXggdGVzdHMgWzQuMDhdXG4qKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5cbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgdHlwID0gY29yZV90eXBlXG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAobW9kdWxlIFMpXG4gICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXQgPSBwYXR0ZXJuXG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICgqIChtb2R1bGUgUClcbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByID0gZXhwcmVzc2lvblxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlc1xuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBjYXNlcyA9IGNhc2UgbGlzdFxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgIHwgQyA9IERcbiAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgIHZhbCB4OiBUXG4gICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjVcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjVcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQwOVxubW9kdWxlIFRvID0gQXN0XzQwOFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfdHlwIDogQXN0XzQwOS5QYXJzZXRyZWUudHlwIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cCA9XG4gZnVuIHggLT4gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9wYXQgOiBBc3RfNDA5LlBhcnNldHJlZS5wYXQgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF0ID1cbiBmdW4geCAtPiBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9leHByIDogQXN0XzQwOS5QYXJzZXRyZWUuZXhwciAtPiBBc3RfNDA4LlBhcnNldHJlZS5leHByID1cbiBmdW4geCAtPiBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChjb3B5X2Nhc2VzIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQwOC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLmxldF87IEFzdF80MDkuUGFyc2V0cmVlLmFuZHM7IEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDA4LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MDguQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MDguQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2FzZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDA4LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MDguQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDguUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQwOC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MDguQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MDguQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDA4LkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDA4LkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDA4LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDA4LkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDA4LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MDguQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MDguQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQwOC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDA4LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MDguUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MDguQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MDguQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDA4LkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQwOFxubW9kdWxlIFRvID0gQXN0XzQwOVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfdHlwIDogQXN0XzQwOC5QYXJzZXRyZWUudHlwIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cCA9XG4gZnVuIHggLT4gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9wYXQgOiBBc3RfNDA4LlBhcnNldHJlZS5wYXQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0ID1cbiBmdW4geCAtPiBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9leHByIDogQXN0XzQwOC5QYXJzZXRyZWUuZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByID1cbiBmdW4geCAtPiBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChjb3B5X2Nhc2VzIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQwOC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLmxldF87IEFzdF80MDguUGFyc2V0cmVlLmFuZHM7IEFzdF80MDguUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MDkuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MDguQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQwOC5QYXJzZXRyZWUuY2FzZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MDguUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MDguQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MDguQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MDkuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQwOC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MDguQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQwOC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQwOC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MDguQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MDguUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MDkuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDA4LkFzdHR5cGVzLnR4dDsgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MDkuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBc3QgcG9ydGVkIG9uIFdlZCBBcHIgMTggMTA6MzM6MjkgQlNUIDIwMThcbiAgIE9DYW1sIHRydW5rIHdhczpcbiAgICAgY29tbWl0IGMwYmQ2YTI3ZTEzODkxMTU2MGY0M2RjNzVkNWZkZTJhZGU0ZDZjZmUgKEhFQUQsIHRhZzogNC4wNy4wK2JldGEyKVxuICAgICBBdXRob3I6IERhbWllbiBEb2xpZ2V6IDxkYW1pZW4uZG9saWdlekBpbnJpYS5mcj5cbiAgICAgRGF0ZTogICBUdWUgQXByIDEwIDE0OjUwOjQ4IDIwMTggKzAyMDBcblxuICAgICAgICAgY2hhbmdlIFZFUlNJT04gZm9yIDQuMDcuMCtiZXRhMlxuKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICAgICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIE0uKEUpXG4gICAgICAgICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyM1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyM1wiXG5lbmRcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQwOFxubW9kdWxlIFRvID0gQXN0XzQwN1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjA4XCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyXG4gICAgICB7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBkaXJfbG9jID0gXztcbiAgICAgIH0gLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpclxuICAgICAgICAoIHBkaXJfbmFtZS5Mb2NhdGlvbi50eHQsXG4gICAgICAgICAgbWF0Y2ggcGRpcl9hcmcgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBhcmcgKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBGcm9tLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBfcGRpcmFfbG9jIH0gLT5cbiAgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT4gKFxuICAgICAgbWF0Y2ggeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwci5Gcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgfCBQbW9kX2lkZW50IGxpZCAtPlxuICAgICAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlLFxuICAgICAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsaWQsXG4gICAgICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gICAgICB8IFBtb2Rfc3RydWN0dXJlIF8gfCBQbW9kX2Z1bmN0b3IgXyB8IFBtb2RfYXBwbHkgXyB8IFBtb2RfY29uc3RyYWludCBfXG4gICAgICB8IFBtb2RfdW5wYWNrIF8gfCBQbW9kX2V4dGVuc2lvbiBfIC0+XG4gICAgICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYyBcImNvbXBsZXggb3BlblwiKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0b3AgeyBsZXRfOyBhbmRzID0gXzsgYm9keSA9IF8gfSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxldF8ucGJvcF9vcC5sb2MgXCJsZXQgb3BlcmF0b3JzXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnByZl9sb2MgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIG1hdGNoIHByZl9kZXNjIHdpdGhcbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDEsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9mX2xvYyA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcG9mX2Rlc2Mgd2l0aFxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMsXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBfO1xuICAgICB9IC0+XG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lLCBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb25cbiAgICAgICAgKGxldCBlID1cbiAgICAgICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAuRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgICBpblxuICAgICAgICAge1xuICAgICAgICAgICBlIHdpdGhcbiAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID1cbiAgICAgICAgICAgICBlLnBleHRfYXR0cmlidXRlcyBAIGNvcHlfYXR0cmlidXRlcyB4MC5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgIH0pXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT4gKFxuICAgICAgbWF0Y2ggeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwci5Gcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgfCBQbW9kX2lkZW50IGxpZCAtPlxuICAgICAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxpZDtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID1cbiAgICAgICAgICAgICAgICBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgfVxuICAgICAgfCBQbW9kX3N0cnVjdHVyZSBfIHwgUG1vZF9mdW5jdG9yIF8gfCBQbW9kX2FwcGx5IF8gfCBQbW9kX2NvbnN0cmFpbnQgX1xuICAgICAgfCBQbW9kX3VucGFjayBfIHwgUG1vZF9leHRlbnNpb24gXyAtPlxuICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9sb2MgXCJjb21wbGV4IG9wZW5cIilcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwcixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEgKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgbGV0IHgwX2xvYyA9XG4gICAgICAgIG1hdGNoIHgwIHdpdGhcbiAgICAgICAgfCBbXSAtPiBMb2NhdGlvbi5ub25lXG4gICAgICAgIHwgeyBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7IF8gfSA6OiBfIC0+IHB0eXBlX2xvY1xuICAgICAgaW5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MF9sb2MgXCJ0eXBlIHN1YnN0aXR1dGlvbiBpbiBzaWduYXR1cmVzXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb25cbiAgICAgICAgKGxldCBlID1cbiAgICAgICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAuRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgICBpblxuICAgICAgICAge1xuICAgICAgICAgICBlIHdpdGhcbiAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID1cbiAgICAgICAgICAgICBlLnBleHRfYXR0cmlidXRlcyBAIGNvcHlfYXR0cmlidXRlcyB4MC5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgIH0pXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLnBtc19sb2MgXCJtb2R1bGUgc3Vic3RpdHV0aW9uIGluIHNpZ25hdHVyZXNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIsXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgxIClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIGxldCB4MSA9XG4gICAgbWF0Y2ggeDAudHh0IHdpdGhcbiAgICB8IFwib2NhbWwuZXJyb3JcIiB8IFwiZXJyb3JcIiAtPiAoXG4gICAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgICAgfCBQU3RyIChoZCA6OiB0bCkgLT4gRnJvbS5QYXJzZXRyZWUuUFN0ciAoaGQgOjogaGQgOjogdGwpXG4gICAgICAgIHwgXyAtPiB4MSlcbiAgICB8IF8gLT4geDFcbiAgaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuKCogYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiAgIGZ1blxuICAgICB7IEZyb20uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9IHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleG5fbG9jID0gcHR5ZXhuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IHB0eWV4bl9hdHRyaWJ1dGVzIH1cbiAgICAgIC0+XG4gICAgIHtcbiAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3IpO1xuICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fbG9jID0gKGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYyk7XG4gICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID1cbiAgICAgICAgIChjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMpXG4gICAgIH0qKVxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQwN1xubW9kdWxlIFRvID0gQXN0XzQwOFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucGRpcl9uYW1lID1cbiAgICAgICAgICAgIHsgTG9jYXRpb24udHh0ID0geDA7IExvY2F0aW9uLmxvYyA9IExvY2F0aW9uLm5vbmUgfTtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucGRpcl9hcmcgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MTtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucGRpcl9sb2MgPSBMb2NhdGlvbi5ub25lO1xuICAgICAgICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uXG4gICAgPVxuICBsZXQgd3JhcCBwZGlyYV9kZXNjID1cbiAgICBTb21lIHsgVG8uUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IFRvLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBMb2NhdGlvbi5ub25lIH1cbiAgaW5cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gTm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSkgfD4gd3JhcFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MCkgfD4gd3JhcFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApIHw+IHdyYXBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IFtdO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPVxuICAgICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKTtcbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHgwO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IFtdO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IFtdO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9kZXNjID1cbiAgICAgICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfYm9vbCB4MiwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMpO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2xvYyA9IHgwLkxvY2F0aW9uLmxvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHgxO1xuICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfZGVzYyA9IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9kZXNjID1cbiAgICAgICAgICBUby5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDIpO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2xvYyA9IHgwLkxvY2F0aW9uLmxvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHgxO1xuICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfZGVzYyA9IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIHtcbiAgICBUby5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwO1xuICAgIFRvLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgeDE7XG4gICAgVG8uUGFyc2V0cmVlLmF0dHJfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIGxldCBhdGF0LCBhdCA9XG4gICAgICAgIExpc3QucGFydGl0aW9uXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IHsgTG9jYXRpb24udHh0ID0gXCJvY2FtbC5kZXByZWNhdGVkXCIgfCBcImRlcHJlY2F0ZWRcIjsgXyB9LCBfIC0+XG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgIHwgXyAtPiB0cnVlKVxuICAgICAgICAgIHgwLnBleHRfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIGxldCB4MCA9IHsgeDAgd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBhdCB9IGluXG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb25cbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MDtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBhdGF0O1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW5cbiAgICAgIHtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgfSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID1cbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkKTtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gcG9wZW5fbG9jO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHgwO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDIgKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICBsZXQgZmllbGRzID1cbiAgICBMaXN0LnNvcnRcbiAgICAgIChmdW4gKGEgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCkgKGIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCkgLT5cbiAgICAgICAgY29tcGFyZSBhLnBjZl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtIGIucGNmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0pXG4gICAgICBwY3N0cl9maWVsZHNcbiAgaW5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgbGV0IGF0YXQsIGF0ID1cbiAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgeyBMb2NhdGlvbi50eHQgPSBcIm9jYW1sLmRlcHJlY2F0ZWRcIiB8IFwiZGVwcmVjYXRlZFwiOyBfIH0sIF8gLT5cbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgfCBfIC0+IHRydWUpXG4gICAgICAgICAgeDAucGV4dF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbGV0IHgwID0geyB4MCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IGF0IH0gaW5cblxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDA7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgYXRhdDtcbiAgICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID0gY29weV9sb2MgY29weV9sb25naWRlbnQgeDE7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSB4MiApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIGxldCBmaWVsZHMgPVxuICAgIExpc3Quc29ydFxuICAgICAgKGZ1biAoYSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQpXG4gICAgICAgICAgIChiIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCkgLT5cbiAgICAgICAgY29tcGFyZSBhLnBjdGZfbG9jLmxvY19zdGFydC5wb3NfY251bSBiLnBjdGZfbG9jLmxvY19zdGFydC5wb3NfY251bSlcbiAgICAgIHBjc2lnX2ZpZWxkc1xuICBpblxuXG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBmaWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICBsZXQgeDEgPVxuICAgIG1hdGNoIHgwLnR4dCB3aXRoXG4gICAgfCBcIm9jYW1sLmVycm9yXCIgfCBcImVycm9yXCIgLT4gKFxuICAgICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICAgIHwgUFN0ciAoaGQgOjogXyA6OiB0bCkgLT4gRnJvbS5QYXJzZXRyZWUuUFN0ciAoaGQgOjogdGwpXG4gICAgICAgIHwgXyAtPiB4MSlcbiAgICB8IF8gLT4geDFcbiAgaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBwdHlleHRfcGF0aC5Mb2NhdGlvbi5sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQXN0IHBvcnRlZCBvbiBNb24gT2N0ICAyIDExOjI1OjU3IENFU1QgMjAxN1xuICAgT0NhbWwgdHJ1bmsgd2FzOlxuICAgICBjb21taXQgNjU5NDBhMmM2YmU0M2M0MmY3NWM2YzZiMjU1OTc0ZjdlNmRlMDNjYSAoSEVBRCAtPiA0LjA2LCBvcmlnaW4vNC4wNilcbiAgICAgQXV0aG9yOiBDaHJpc3RvcGhlIFJhZmZhbGxpIDxjaHJpc3RvcGhlQHJhZmZhbGxpLmV1PlxuICAgICBEYXRlOiAgIFN1biBPY3QgMSAxODoyNzowNyAyMDE3ICswMjAwXG5cbiAgICAgICAgIGZpeGVkIHBvc2l0aW9uIG9mIGxhc3Qgb3B0aW9uYWwgbGFzdCBzZW1pY29sdW1uIGluIHNlcXVlbmNlICgjMTM4NylcbiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBNLihFKVxuICAgICAgICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjJcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjJcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA3XG5tb2R1bGUgVG8gPSBBc3RfNDA2XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IHggLT4gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4KVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAob3ZmLCBsb2MsIGNlKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsIGNvcHlfY2xhc3NfZXhwciBjZSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAob3ZmLCBsb2MsIGN0eSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYyxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgY3R5IClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDZcbm1vZHVsZSBUbyA9IEFzdF80MDdcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeCAtPiBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgpXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChvdmYsIGxvYywgY2UpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYywgY29weV9jbGFzc19leHByIGNlKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuIChvdmYsIGxvYywgY3R5KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSBjdHkgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiAoc3RyaW5nIGxvYyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgICAgICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogTS4oRSlcbiAgICAgICAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgW0BpZDFdIFtAaWQyXSA6IFQgKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjBcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA2XG5tb2R1bGUgVG8gPSBBc3RfNDA1XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDZcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MiApXG4gICAgICAgICAgICAgIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgXyAtPlxuICAgICAgICAgICAgICAgICAgbWlncmF0aW9uX2Vycm9yIExvY2F0aW9uLm5vbmUgXCJpbmhlcml0YW5jZSBpbiBvYmplY3QgdHlwZVwiKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLnR4dCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAoXywgbG9jLCBfKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYy5Mb2NhdGlvbi5sb2MgXCJtb2R1bGUgb3BlbiBpbiBjbGFzcyBleHByZXNzaW9uXCJcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgXzsgXyB9LCB4MCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHgwOyBsb2MgfSwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHsgdHh0ID0geDA7IGxvYyB9LCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHsgbG9jOyBfIH0sIF94MCkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJ0eXBlIHN1YnN0aXR1dGlvbiBpbnNpZGUgYSBzdWJtb2R1bGVcIlxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh7IGxvYzsgXyB9LCBfeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwibW9kdWxlIHN1YnN0aXR1dGlvbiBpbnNpZGUgYSBzdWJtb2R1bGVcIlxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuIChfLCBsb2MsIF8pIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jLkxvY2F0aW9uLmxvYyBcIm1vZHVsZSBvcGVuIGluIGNsYXNzIHR5cGVcIlxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNVxubW9kdWxlIFRvID0gQXN0XzQwNlxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCB7IHR4dCA9IGNvcHlfbGFiZWwgeDA7IGxvYyA9IExvY2F0aW9uLm5vbmUgfSxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeDAuRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZSxcbiAgICAgICAgICBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDAgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBMb25naWRlbnQuTGlkZW50IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiAoc3RyaW5nICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmdcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgW0BpZDFdIFtAaWQyXSA6IFQgKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKHN0cmluZyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIwXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE4XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNVxubW9kdWxlIFRvID0gQXN0XzQwNFxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEuRnJvbS5Bc3R0eXBlcy50eHQpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MC5Gcm9tLkFzdHR5cGVzLnR4dCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLkZyb20uQXN0dHlwZXMudHh0LCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4geC5Gcm9tLkFzdHR5cGVzLnR4dCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IHguRnJvbS5Bc3R0eXBlcy50eHQpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIHgwLkZyb20uQXN0dHlwZXMudHh0LFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggeDAuRnJvbS5Bc3R0eXBlcy50eHQsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDRcbm1vZHVsZSBUbyA9IEFzdF80MDVcblxubGV0IG5vbG9jIHggPSB7IExvY2F0aW9uLnR4dCA9IHg7IGxvYyA9IExvY2F0aW9uLm5vbmUgfVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbm9sb2MgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChub2xvYyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKG5vbG9jIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4gbm9sb2MgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IG5vbG9jIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIG5vbG9jIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggbm9sb2MgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiBBdXhpbGlhcnkgYS5zLnQuIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiAoc3RyaW5nICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZ1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgW0BpZDFdIFtAaWQyXSA6IFQgKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKHN0cmluZyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDE5XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE4XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNFxubW9kdWxlIFRvID0gQXN0XzQwM1xuXG5sZXQgZnJvbV9sb2MgeyBMb2NhdGlvbi50eHQgPSBfOyBsb2MgfSA9IGxvY1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjA0XCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9sb2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwibG9jYWwgZXhjZXB0aW9uc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9sb2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwibW9kdWxlIG9wZW4gaW4gcGF0dGVybnNcIlxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwM1xubW9kdWxlIFRvID0gQXN0XzQwNFxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqIEF1eGlsaWFyeSBhLnMudC4gdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGxhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgKGxhYmVsID0gXCJcIilcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICAobGFiZWwgPSBcImxcIilcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICAobGFiZWwgPSBcIj9sXCIpXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiAoc3RyaW5nICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwibFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgbGFiIG11c3Qgc3RhcnQgd2l0aCAnPycuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChsYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZ1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG5cbiAgICBOb3RlOiB3aGVuIHVzZWQgdW5kZXIgUHN0cl9wcmltaXRpdmUsIHByaW0gY2Fubm90IGJlIGVtcHR5XG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29yZV90eXBlIGxpc3Q7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoYXJncyA9IFtdLCByZXMgPSBTb21lIFQwKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvcmVfdHlwZSBsaXN0ICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGxhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgKGxhYmVsID0gXCJcIilcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIChsYWJlbCA9IFwibFwiKVxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgKGxhYmVsID0gXCI/bFwiKVxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIlwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJsXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChsYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBpbnRcbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMTZcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMTVcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDAzXG5tb2R1bGUgVG8gPSBBc3RfNDAyXG5cbmxldCBpbmplY3RfcHJlZGVmX29wdGlvbiBsYWJlbCBkID1cbiAgbGV0IG9wZW4gVG8gaW5cbiAgbGV0IG9wZW4gUGFyc2V0cmVlIGluXG4gIG1hdGNoIGxhYmVsIHdpdGhcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIF8gLT5cbiAgICAgIGxldCBsb2MgPSB7IGQucHR5cF9sb2Mgd2l0aCBMb2NhdGlvbi5sb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgIGxldCB0eHQgPSBMb25naWRlbnQuTGRvdCAoTG9uZ2lkZW50LkxpZGVudCBcIipwcmVkZWYqXCIsIFwib3B0aW9uXCIpIGluXG4gICAgICBsZXQgaWRlbnQgPSB7IExvY2F0aW9uLnR4dDsgbG9jIH0gaW5cbiAgICAgIHtcbiAgICAgICAgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkZW50LCBbIGQgXSk7XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH1cbiAgfCBfIC0+IGRcblxubGV0IGZyb21fbG9jIHsgTG9jYXRpb24udHh0ID0gXzsgbG9jIH0gPSBsb2NcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wM1wiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfbG9jIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgbG9jIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwidW5yZWFjaGFibGUgcGF0dGVybnNcIlxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9sb2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgbG9jIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IGxvYyB4MCwgY29weV9jb25zdGFudCBsb2MgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgaW5qZWN0X3ByZWRlZl9vcHRpb24geDAgKGNvcHlfY29yZV90eXBlIHgxKSxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgKGZyb21fbG9jIHgwKSB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCBsb2MgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIF94MCAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwic2lnbmF0dXJlcyBpbiBhdHRyaWJ1dGVcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlICh0eXBlX2RlY2xhcmF0aW9ucyB4MCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZSAodHlwZV9kZWNsYXJhdGlvbnMgeDAgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBpbmplY3RfcHJlZGVmX29wdGlvbiB4MCAoY29weV9jb3JlX3R5cGUgeDEpLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIChmcm9tX2xvYyB4MCkgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKGZyb21fbG9jIHBleHRfbmFtZSkgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBsb2MgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID1cbiAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIChmcm9tX2xvYyBwY2RfbmFtZSkgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSBsaXN0ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPiBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCBfeDAgLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImlubGluZSByZWNvcmRzXCJcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFwiXCJcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBcIj9cIiBeIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCBsb2MgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5Bc3R0eXBlcy5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT4gKFxuICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgfCBOb25lIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2ludCAoaW50X29mX3N0cmluZyB4MClcbiAgICAgIHwgU29tZSAnbCcgLT4gVG8uQXN0dHlwZXMuQ29uc3RfaW50MzIgKEludDMyLm9mX3N0cmluZyB4MClcbiAgICAgIHwgU29tZSAnTCcgLT4gVG8uQXN0dHlwZXMuQ29uc3RfaW50NjQgKEludDY0Lm9mX3N0cmluZyB4MClcbiAgICAgIHwgU29tZSAnbicgLT4gVG8uQXN0dHlwZXMuQ29uc3RfbmF0aXZlaW50IChOYXRpdmVpbnQub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImN1c3RvbSBpbnRlZ2VyIGxpdGVyYWxzXCIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uQXN0dHlwZXMuQ29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT4gVG8uQXN0dHlwZXMuQ29uc3Rfc3RyaW5nICh4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+IChcbiAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBUby5Bc3R0eXBlcy5Db25zdF9mbG9hdCB4MFxuICAgICAgfCBTb21lIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImN1c3RvbSBmbG9hdCBsaXRlcmFsc1wiKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9ucyByZWNmbGFnIHR5cGVzID1cbiAgbWF0Y2ggKHJlY2ZsYWcsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB0eXBlcykgd2l0aFxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlLCB0eXBlcyAtPiB0eXBlc1xuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlLCBbXSAtPiBbXVxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlLCB4IDo6IHhzIC0+XG4gICAgICBsZXQgcG9zID1cbiAgICAgICAge1xuICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIl9ub25lX1wiO1xuICAgICAgICAgIHBvc19sbnVtID0gMTtcbiAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICBwb3NfY251bSA9IC0xO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGxvYyA9IHsgTG9jYXRpb24ubG9jX3N0YXJ0ID0gcG9zOyBsb2NfZW5kID0gcG9zOyBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID1cbiAgICAgICAgKHsgVG8uQXN0dHlwZXMudHh0ID0gXCJub25yZWNcIjsgbG9jIH0sIFRvLlBhcnNldHJlZS5QU3RyIFtdKVxuICAgICAgICA6OiB4LlRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgeyB4IHdpdGggVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgfSA6OiB4c1xuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBfeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKGludF9vZl9zdHJpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDAyXG5tb2R1bGUgVG8gPSBBc3RfNDAzXG5cbmxldCBleHRyYWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgdHlwID1cbiAgbGV0IG9wZW4gRnJvbSBpblxuICBsZXQgb3BlbiBMb25naWRlbnQgaW5cbiAgbWF0Y2ggKGxhYmVsLCB0eXAuUGFyc2V0cmVlLnB0eXBfZGVzYykgd2l0aFxuICB8ICggVG8uQXN0dHlwZXMuT3B0aW9uYWwgXyxcbiAgICAgIEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgICh7IExvY2F0aW9uLnR4dCA9IExkb3QgKExpZGVudCBcIipwcmVkZWYqXCIsIFwib3B0aW9uXCIpOyBfIH0sIFsgZCBdKSApIC0+XG4gICAgICBkXG4gIHwgXyAtPiB0eXBcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgbGV0IGxhYmVsID0gY29weV9hcmdfbGFiZWwgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgICggbGFiZWwsXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgKGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB4MSksXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgeDAgLT5cbiAgICAgIGxldCByZWNmbGFnLCB0eXBlcyA9IHR5cGVfZGVjbGFyYXRpb25zIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlIChyZWNmbGFnLCB0eXBlcylcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSB4MCAtPlxuICAgICAgbGV0IHJlY2ZsYWcsIHR5cGVzID0gdHlwZV9kZWNsYXJhdGlvbnMgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHJlY2ZsYWcsIHR5cGVzKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIGxldCBsYWJlbCA9IGNvcHlfYXJnX2xhYmVsIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoIGxhYmVsLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIChleHRyYWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgeDEpLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKSxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPVxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfYXJncyk7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID1cbiBmdW4geCAtPlxuICBpZiB4IDw+IFwiXCIgdGhlblxuICAgIGlmIHguWzBdID0gJz8nIHRoZW5cbiAgICAgIFRvLkFzdHR5cGVzLk9wdGlvbmFsIChTdHJpbmcuc3ViIHggMSAoU3RyaW5nLmxlbmd0aCB4IC0gMSkpXG4gICAgZWxzZSBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4XG4gIGVsc2UgVG8uQXN0dHlwZXMuTm9sYWJlbFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uQXN0dHlwZXMuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2ludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChzdHJpbmdfb2ZfaW50IHgwLCBOb25lKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9mbG9hdCB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgTm9uZSlcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2ludDMyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKEludDMyLnRvX3N0cmluZyB4MCwgU29tZSAnbCcpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9pbnQ2NCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChJbnQ2NC50b19zdHJpbmcgeDAsIFNvbWUgJ0wnKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfbmF0aXZlaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKE5hdGl2ZWludC50b19zdHJpbmcgeDAsIFNvbWUgJ24nKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9ucyB0eXBlcyA9XG4gIGxldCBpc19ub25yZWMgKGF0dHIsIF8pID0gYXR0ci5Mb2NhdGlvbi50eHQgPSBcIm5vbnJlY1wiIGluXG4gIG1hdGNoIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB0eXBlcyB3aXRoXG4gIHwgeCA6OiB4cyB3aGVuIExpc3QuZXhpc3RzIGlzX25vbnJlYyB4LlRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzIC0+XG4gICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9XG4gICAgICAgIExpc3QuZmlsdGVyIChmdW4geCAtPiBub3QgKGlzX25vbnJlYyB4KSkgeC5Uby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIChUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIHsgeCB3aXRoIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzIH0gOjogeHMpXG4gIHwgdHlwZXMgLT4gKFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZSwgdHlwZXMpXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHN0cmluZ19vZl9pbnQgeDAsIE5vbmUpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCJsZXQgaXNfa2V5d29yZCA9IGZ1bmN0aW9uXG4gIHwgXCJhbmRcIiAtPiB0cnVlXG4gIHwgXCJhc1wiIC0+IHRydWVcbiAgfCBcImFzc2VydFwiIC0+IHRydWVcbiAgfCBcImJlZ2luXCIgLT4gdHJ1ZVxuICB8IFwiY2xhc3NcIiAtPiB0cnVlXG4gIHwgXCJjb25zdHJhaW50XCIgLT4gdHJ1ZVxuICB8IFwiZG9cIiAtPiB0cnVlXG4gIHwgXCJkb25lXCIgLT4gdHJ1ZVxuICB8IFwiZG93bnRvXCIgLT4gdHJ1ZVxuICB8IFwiZWxzZVwiIC0+IHRydWVcbiAgfCBcImVuZFwiIC0+IHRydWVcbiAgfCBcImV4Y2VwdGlvblwiIC0+IHRydWVcbiAgfCBcImV4dGVybmFsXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiB0cnVlXG4gIHwgXCJmb3JcIiAtPiB0cnVlXG4gIHwgXCJmdW5cIiAtPiB0cnVlXG4gIHwgXCJmdW5jdGlvblwiIC0+IHRydWVcbiAgfCBcImZ1bmN0b3JcIiAtPiB0cnVlXG4gIHwgXCJpZlwiIC0+IHRydWVcbiAgfCBcImluXCIgLT4gdHJ1ZVxuICB8IFwiaW5jbHVkZVwiIC0+IHRydWVcbiAgfCBcImluaGVyaXRcIiAtPiB0cnVlXG4gIHwgXCJpbml0aWFsaXplclwiIC0+IHRydWVcbiAgfCBcImxhenlcIiAtPiB0cnVlXG4gIHwgXCJsZXRcIiAtPiB0cnVlXG4gIHwgXCJtYXRjaFwiIC0+IHRydWVcbiAgfCBcIm1ldGhvZFwiIC0+IHRydWVcbiAgfCBcIm1vZHVsZVwiIC0+IHRydWVcbiAgfCBcIm11dGFibGVcIiAtPiB0cnVlXG4gIHwgXCJuZXdcIiAtPiB0cnVlXG4gIHwgXCJub25yZWNcIiAtPiB0cnVlXG4gIHwgXCJvYmplY3RcIiAtPiB0cnVlXG4gIHwgXCJvZlwiIC0+IHRydWVcbiAgfCBcIm9wZW5cIiAtPiB0cnVlXG4gIHwgXCJvclwiIC0+IHRydWVcbiAgKCogfCBcInBhcnNlclwiIC0+IHRydWUgKilcbiAgfCBcInByaXZhdGVcIiAtPiB0cnVlXG4gIHwgXCJyZWNcIiAtPiB0cnVlXG4gIHwgXCJzaWdcIiAtPiB0cnVlXG4gIHwgXCJzdHJ1Y3RcIiAtPiB0cnVlXG4gIHwgXCJ0aGVuXCIgLT4gdHJ1ZVxuICB8IFwidG9cIiAtPiB0cnVlXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwidHJ5XCIgLT4gdHJ1ZVxuICB8IFwidHlwZVwiIC0+IHRydWVcbiAgfCBcInZhbFwiIC0+IHRydWVcbiAgfCBcInZpcnR1YWxcIiAtPiB0cnVlXG4gIHwgXCJ3aGVuXCIgLT4gdHJ1ZVxuICB8IFwid2hpbGVcIiAtPiB0cnVlXG4gIHwgXCJ3aXRoXCIgLT4gdHJ1ZVxuICB8IFwibG9yXCIgLT4gdHJ1ZVxuICB8IFwibHhvclwiIC0+IHRydWVcbiAgfCBcIm1vZFwiIC0+IHRydWVcbiAgfCBcImxhbmRcIiAtPiB0cnVlXG4gIHwgXCJsc2xcIiAtPiB0cnVlXG4gIHwgXCJsc3JcIiAtPiB0cnVlXG4gIHwgXCJhc3JcIiAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCokIG9wZW4gQXN0bGliX2NpbmFwc19oZWxwZXJzXG4gICAgb3BlbiBQcmludGYgJCopXG5cbigqIENvcHkgb2YgT0NhbWwgcGFyc2V0cmVlcyAqKVxuKCokXG4gIGZvcmVhY2hfdmVyc2lvbiAoZnVuIHN1ZmZpeCBfIC0+XG4gICAgICBwcmludGYgXCJtb2R1bGUgQXN0XyVzID0gQXN0XyVzXFxuXCIgc3VmZml4IHN1ZmZpeClcbiopXG5tb2R1bGUgQXN0XzQwMiA9IEFzdF80MDJcbm1vZHVsZSBBc3RfNDAzID0gQXN0XzQwM1xubW9kdWxlIEFzdF80MDQgPSBBc3RfNDA0XG5tb2R1bGUgQXN0XzQwNSA9IEFzdF80MDVcbm1vZHVsZSBBc3RfNDA2ID0gQXN0XzQwNlxubW9kdWxlIEFzdF80MDcgPSBBc3RfNDA3XG5tb2R1bGUgQXN0XzQwOCA9IEFzdF80MDhcbm1vZHVsZSBBc3RfNDA5ID0gQXN0XzQwOVxubW9kdWxlIEFzdF80MTAgPSBBc3RfNDEwXG5tb2R1bGUgQXN0XzQxMSA9IEFzdF80MTFcbm1vZHVsZSBBc3RfNDEyID0gQXN0XzQxMlxubW9kdWxlIEFzdF80MTMgPSBBc3RfNDEzXG5tb2R1bGUgQXN0XzQxNCA9IEFzdF80MTRcbm1vZHVsZSBBc3RfNTAwID0gQXN0XzUwMFxubW9kdWxlIEFzdF81MDEgPSBBc3RfNTAxXG5tb2R1bGUgQXN0XzUwMiA9IEFzdF81MDJcbigqJCopXG5cbigqIE1hbnVhbCBtaWdyYXRpb24gYmV0d2VlbiB2ZXJzaW9ucyAqKVxuKCokXG4gIGZvcmVhY2hfdmVyc2lvbl9wYWlyIChmdW4geCB5IC0+XG4gICAgICBwcmludGYgXCJtb2R1bGUgTWlncmF0ZV8lc18lcyA9IE1pZ3JhdGVfJXNfJXNcXG5cIiB4IHkgeCB5O1xuICAgICAgcHJpbnRmIFwibW9kdWxlIE1pZ3JhdGVfJXNfJXMgPSBNaWdyYXRlXyVzXyVzXFxuXCIgeSB4IHkgeClcbiopXG5tb2R1bGUgTWlncmF0ZV80MDJfNDAzID0gTWlncmF0ZV80MDJfNDAzXG5tb2R1bGUgTWlncmF0ZV80MDNfNDAyID0gTWlncmF0ZV80MDNfNDAyXG5tb2R1bGUgTWlncmF0ZV80MDNfNDA0ID0gTWlncmF0ZV80MDNfNDA0XG5tb2R1bGUgTWlncmF0ZV80MDRfNDAzID0gTWlncmF0ZV80MDRfNDAzXG5tb2R1bGUgTWlncmF0ZV80MDRfNDA1ID0gTWlncmF0ZV80MDRfNDA1XG5tb2R1bGUgTWlncmF0ZV80MDVfNDA0ID0gTWlncmF0ZV80MDVfNDA0XG5tb2R1bGUgTWlncmF0ZV80MDVfNDA2ID0gTWlncmF0ZV80MDVfNDA2XG5tb2R1bGUgTWlncmF0ZV80MDZfNDA1ID0gTWlncmF0ZV80MDZfNDA1XG5tb2R1bGUgTWlncmF0ZV80MDZfNDA3ID0gTWlncmF0ZV80MDZfNDA3XG5tb2R1bGUgTWlncmF0ZV80MDdfNDA2ID0gTWlncmF0ZV80MDdfNDA2XG5tb2R1bGUgTWlncmF0ZV80MDdfNDA4ID0gTWlncmF0ZV80MDdfNDA4XG5tb2R1bGUgTWlncmF0ZV80MDhfNDA3ID0gTWlncmF0ZV80MDhfNDA3XG5tb2R1bGUgTWlncmF0ZV80MDhfNDA5ID0gTWlncmF0ZV80MDhfNDA5XG5tb2R1bGUgTWlncmF0ZV80MDlfNDA4ID0gTWlncmF0ZV80MDlfNDA4XG5tb2R1bGUgTWlncmF0ZV80MDlfNDEwID0gTWlncmF0ZV80MDlfNDEwXG5tb2R1bGUgTWlncmF0ZV80MTBfNDA5ID0gTWlncmF0ZV80MTBfNDA5XG5tb2R1bGUgTWlncmF0ZV80MTBfNDExID0gTWlncmF0ZV80MTBfNDExXG5tb2R1bGUgTWlncmF0ZV80MTFfNDEwID0gTWlncmF0ZV80MTFfNDEwXG5tb2R1bGUgTWlncmF0ZV80MTFfNDEyID0gTWlncmF0ZV80MTFfNDEyXG5tb2R1bGUgTWlncmF0ZV80MTJfNDExID0gTWlncmF0ZV80MTJfNDExXG5tb2R1bGUgTWlncmF0ZV80MTJfNDEzID0gTWlncmF0ZV80MTJfNDEzXG5tb2R1bGUgTWlncmF0ZV80MTNfNDEyID0gTWlncmF0ZV80MTNfNDEyXG5tb2R1bGUgTWlncmF0ZV80MTNfNDE0ID0gTWlncmF0ZV80MTNfNDE0XG5tb2R1bGUgTWlncmF0ZV80MTRfNDEzID0gTWlncmF0ZV80MTRfNDEzXG5tb2R1bGUgTWlncmF0ZV80MTRfNTAwID0gTWlncmF0ZV80MTRfNTAwXG5tb2R1bGUgTWlncmF0ZV81MDBfNDE0ID0gTWlncmF0ZV81MDBfNDE0XG5tb2R1bGUgTWlncmF0ZV81MDBfNTAxID0gTWlncmF0ZV81MDBfNTAxXG5tb2R1bGUgTWlncmF0ZV81MDFfNTAwID0gTWlncmF0ZV81MDFfNTAwXG5tb2R1bGUgTWlncmF0ZV81MDFfNTAyID0gTWlncmF0ZV81MDFfNTAyXG5tb2R1bGUgTWlncmF0ZV81MDJfNTAxID0gTWlncmF0ZV81MDJfNTAxXG4oKiQqKVxuXG4oKiBDb21waWxlciBtb2R1bGVzICopXG5tb2R1bGUgQXN0X21ldGFkYXRhID0gQXN0X21ldGFkYXRhXG5tb2R1bGUgQ29uZmlnID0gQ29uZmlnXG5tb2R1bGUgS2V5d29yZCA9IEtleXdvcmRcbm1vZHVsZSBMb2NhdGlvbiA9IExvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gTG9uZ2lkZW50XG5tb2R1bGUgUGFyc2UgPSBQYXJzZVxubW9kdWxlIFBwcmludGFzdCA9IFBwcmludGFzdFxuXG5sZXQgaW5pdF9lcnJvcl9yZXBvcnRpbmdfc3R5bGVfdXNpbmdfZW52X3ZhcnMgKCkgPVxuICAoKklGX0FUX0xFQVNUIDQwOCBPY2FtbF9jb21tb24uQ29tcG1pc2MucmVhZF9jbGZsYWdzX2Zyb21fZW52ICgpICopXG4gICgqSUZfTk9UX0FUX0xFQVNUIDQwOCAoKSAqKVxuKCoqIEFkanVzdCB0aGUgcmVwb3J0aW5nIHN0eWxlIG9mIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgT0NBTUxfQ09MT1IgYW5kIE9DQU1MX0VSUk9SX1NUWUxFLiAqKVxuIiwibW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUT0RPOiByZW1vdmUgdGhpcyBvcGVuICopXG5vcGVuIFN0ZGxpYjBcbm1vZHVsZSBMb2NhdGlvbiA9IEFzdGxpYi5Mb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IEFzdGxpYi5Mb25naWRlbnRcbm9wZW4gQXN0bGliLkFzdF81MDBcblxuW0BAQHdhcm5pbmcgXCItOVwiXVxuXG5vcGVuIEFzdHR5cGVzXG5vcGVuIFBhcnNldHJlZVxuXG50eXBlICdhIHdpdGhfbG9jID0gJ2EgTG9jYXRpb24ubG9jXG50eXBlIGxvYyA9IExvY2F0aW9uLnRcbnR5cGUgbGlkID0gTG9uZ2lkZW50LnQgd2l0aF9sb2NcbnR5cGUgc3RyID0gc3RyaW5nIHdpdGhfbG9jXG50eXBlIHN0cl9vcHQgPSBzdHJpbmcgb3B0aW9uIHdpdGhfbG9jXG50eXBlIGF0dHJzID0gYXR0cmlidXRlIGxpc3RcblxubGV0IGRlZmF1bHRfbG9jID0gcmVmIExvY2F0aW9uLm5vbmVcblxudHlwZSByZWZfYW5kX3ZhbHVlID0gUiA6ICdhIHJlZiAqICdhIC0+IHJlZl9hbmRfdmFsdWVcblxubGV0IHByb3RlY3RfcmVmID1cbiAgbGV0IHNldF9yZWYgKFIgKHIsIHYpKSA9IHIgOj0gdiBpblxuICBmdW4gcmVmIGYgLT5cbiAgICBsZXQgKFIgKHIsIF8pKSA9IHJlZiBpblxuICAgIGxldCBiYWNrdXAgPSBSIChyLCAhcikgaW5cbiAgICBzZXRfcmVmIHJlZjtcbiAgICBtYXRjaCBmICgpIHdpdGhcbiAgICB8IHggLT5cbiAgICAgICAgc2V0X3JlZiBiYWNrdXA7XG4gICAgICAgIHhcbiAgICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICAgIHNldF9yZWYgYmFja3VwO1xuICAgICAgICByYWlzZSBlXG5cbmxldCB3aXRoX2RlZmF1bHRfbG9jIGwgZiA9IHByb3RlY3RfcmVmIChSIChkZWZhdWx0X2xvYywgbCkpIGZcblxubW9kdWxlIENvbnN0ID0gc3RydWN0XG4gIGxldCBpbnRlZ2VyID9zdWZmaXggaSA9IFBjb25zdF9pbnRlZ2VyIChpLCBzdWZmaXgpXG4gIGxldCBpbnQgP3N1ZmZpeCBpID0gaW50ZWdlciA/c3VmZml4IChJbnQudG9fc3RyaW5nIGkpXG4gIGxldCBpbnQzMiA/KHN1ZmZpeCA9ICdsJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoSW50MzIudG9fc3RyaW5nIGkpXG4gIGxldCBpbnQ2NCA/KHN1ZmZpeCA9ICdMJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoSW50NjQudG9fc3RyaW5nIGkpXG4gIGxldCBuYXRpdmVpbnQgPyhzdWZmaXggPSAnbicpIGkgPSBpbnRlZ2VyIH5zdWZmaXggKE5hdGl2ZWludC50b19zdHJpbmcgaSlcbiAgbGV0IGZsb2F0ID9zdWZmaXggZiA9IFBjb25zdF9mbG9hdCAoZiwgc3VmZml4KVxuICBsZXQgY2hhciBjID0gUGNvbnN0X2NoYXIgY1xuXG4gIGxldCBzdHJpbmcgP3F1b3RhdGlvbl9kZWxpbWl0ZXIgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIHMgPVxuICAgIFBjb25zdF9zdHJpbmcgKHMsIGxvYywgcXVvdGF0aW9uX2RlbGltaXRlcilcbmVuZFxuXG5tb2R1bGUgQXR0ciA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIG5hbWUgcGF5bG9hZCA9XG4gICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIFR5cCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjID0gZDtcbiAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHB0eXBfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBkLnB0eXBfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGFueSA/bG9jID9hdHRycyAoKSA9IG1rID9sb2MgP2F0dHJzIFB0eXBfYW55XG4gIGxldCB2YXIgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3ZhciBhKVxuICBsZXQgYXJyb3cgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUHR5cF9hcnJvdyAoYSwgYiwgYykpXG4gIGxldCB0dXBsZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfdHVwbGUgYSlcbiAgbGV0IGNvbnN0ciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9jb25zdHIgKGEsIGIpKVxuICBsZXQgb2JqZWN0XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9vYmplY3QgKGEsIGIpKVxuICBsZXQgY2xhc3NfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2NsYXNzIChhLCBiKSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2FsaWFzIChhLCBiKSlcbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUHR5cF92YXJpYW50IChhLCBiLCBjKSlcbiAgbGV0IHBvbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfcG9seSAoYSwgYikpXG4gIGxldCBwYWNrYWdlID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3BhY2thZ2UgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHR5cF9leHRlbnNpb24gYSlcblxuICBsZXQgZm9yY2VfcG9seSB0ID1cbiAgICBtYXRjaCB0LnB0eXBfZGVzYyB3aXRoIFB0eXBfcG9seSBfIC0+IHQgfCBfIC0+IHBvbHkgfmxvYzp0LnB0eXBfbG9jIFtdIHRcbiAgKCogLT4gZ2hvc3Q/ICopXG5cbiAgbGV0IHZhcmlmeV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICAgIGxldCBjaGVja192YXJpYWJsZSB2bCBsb2MgdiA9XG4gICAgICBpZiBMaXN0Lm1lbSB2IHZsIHRoZW5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ2YXJpYWJsZSBpbiBzY29wZSBzeW50YXggZXJyb3I6ICVzXCIgdlxuICAgIGluXG4gICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LnR4dCkgdmFyX25hbWVzIGluXG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgbGV0IGRlc2MgPVxuICAgICAgICBtYXRjaCB0LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgICAgfCBQdHlwX3ZhciB4IC0+XG4gICAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB4O1xuICAgICAgICAgICAgUHR5cF92YXIgeFxuICAgICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pXG4gICAgICAgICAgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lcyAtPlxuICAgICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+IFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPlxuICAgICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2Mgc3RyaW5nO1xuICAgICAgICAgICAgUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgICAoTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKVxuICAgICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gdiAtPiBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB2LnR4dClcbiAgICAgICAgICAgICAgc3RyaW5nX2xzdDtcbiAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgaW5cbiAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgIHwgUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT4gUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICAgIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgIHwgT3RhZyAobGFiZWwsIHQpIC0+IE90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gICAgaW5cbiAgICBsb29wIHRcbmVuZFxuXG5tb2R1bGUgUGF0ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2MgPSBkO1xuICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGQucHBhdF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgYW55ID9sb2MgP2F0dHJzICgpID0gbWsgP2xvYyA/YXR0cnMgUHBhdF9hbnlcbiAgbGV0IHZhciA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdmFyIGEpXG4gIGxldCBhbGlhcyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9hbGlhcyAoYSwgYikpXG4gIGxldCBjb25zdGFudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfY29uc3RhbnQgYSlcbiAgbGV0IGludGVydmFsID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2ludGVydmFsIChhLCBiKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF90dXBsZSBhKVxuXG4gIGxldCBjb25zdHJ1Y3QgP2xvYyA/YXR0cnMgYSBiID1cbiAgICBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdHJ1Y3QgKGEsIE9wdGlvbi5tYXAgKGZ1biBiIC0+IChbXSwgYikpIGIpKVxuXG4gIGxldCB2YXJpYW50ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3ZhcmlhbnQgKGEsIGIpKVxuICBsZXQgcmVjb3JkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3JlY29yZCAoYSwgYikpXG4gIGxldCBhcnJheSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfYXJyYXkgYSlcbiAgbGV0IG9yXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9vciAoYSwgYikpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IHR5cGVfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF90eXBlIGEpXG4gIGxldCBsYXp5XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfbGF6eSBhKVxuICBsZXQgdW5wYWNrID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF91bnBhY2sgYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X29wZW4gKGEsIGIpKVxuICBsZXQgZXhjZXB0aW9uXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfZXhjZXB0aW9uIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2V4dGVuc2lvbiBhKVxuZW5kXG5cbm1vZHVsZSBFeHAgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYyA9IGQ7XG4gICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gZC5wZXhwX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfaWRlbnQgYSlcbiAgbGV0IGNvbnN0YW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb25zdGFudCBhKVxuICBsZXQgbGV0XyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xldCAoYSwgYiwgYykpXG4gIGxldCBmdW5fID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mdW4gKGEsIGIsIGMsIGQpKVxuICBsZXQgZnVuY3Rpb25fID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mdW5jdGlvbiBhKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfYXBwbHkgKGEsIGIpKVxuICBsZXQgbWF0Y2hfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX21hdGNoIChhLCBiKSlcbiAgbGV0IHRyeV8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfdHJ5IChhLCBiKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF90dXBsZSBhKVxuICBsZXQgY29uc3RydWN0ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0cnVjdCAoYSwgYikpXG4gIGxldCB2YXJpYW50ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3ZhcmlhbnQgKGEsIGIpKVxuICBsZXQgcmVjb3JkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3JlY29yZCAoYSwgYikpXG4gIGxldCBmaWVsZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9maWVsZCAoYSwgYikpXG4gIGxldCBzZXRmaWVsZCA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3NldGZpZWxkIChhLCBiLCBjKSlcbiAgbGV0IGFycmF5ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9hcnJheSBhKVxuICBsZXQgaWZ0aGVuZWxzZSA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpKVxuICBsZXQgc2VxdWVuY2UgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2VxdWVuY2UgKGEsIGIpKVxuICBsZXQgd2hpbGVfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3doaWxlIChhLCBiKSlcbiAgbGV0IGZvcl8gP2xvYyA/YXR0cnMgYSBiIGMgZCBlID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgY29lcmNlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29lcmNlIChhLCBiLCBjKSlcbiAgbGV0IHNlbmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2VuZCAoYSwgYikpXG4gIGxldCBuZXdfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9uZXcgYSlcbiAgbGV0IHNldGluc3R2YXIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2V0aW5zdHZhciAoYSwgYikpXG4gIGxldCBvdmVycmlkZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfb3ZlcnJpZGUgYSlcbiAgbGV0IGxldG1vZHVsZSA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykpXG4gIGxldCBsZXRleGNlcHRpb24gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSlcbiAgbGV0IGFzc2VydF8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Fzc2VydCBhKVxuICBsZXQgbGF6eV8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xhenkgYSlcbiAgbGV0IHBvbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfcG9seSAoYSwgYikpXG4gIGxldCBvYmplY3RfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vYmplY3QgYSlcbiAgbGV0IG5ld3R5cGUgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbmV3dHlwZSAoYSwgYikpXG4gIGxldCBwYWNrID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9wYWNrIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vcGVuIChhLCBiKSlcblxuICBsZXQgbGV0b3AgP2xvYyA/YXR0cnMgbGV0XyBhbmRzIGJvZHkgPVxuICAgIG1rID9sb2MgP2F0dHJzIChQZXhwX2xldG9wIHsgbGV0XzsgYW5kczsgYm9keSB9KVxuXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2V4dGVuc2lvbiBhKVxuICBsZXQgdW5yZWFjaGFibGUgP2xvYyA/YXR0cnMgKCkgPSBtayA/bG9jID9hdHRycyBQZXhwX3VucmVhY2hhYmxlXG4gIGxldCBjYXNlIGxocyA/Z3VhcmQgcmhzID0geyBwY19saHMgPSBsaHM7IHBjX2d1YXJkID0gZ3VhcmQ7IHBjX3JocyA9IHJocyB9XG5cbiAgbGV0IGJpbmRpbmdfb3Agb3AgcGF0IGV4cCBsb2MgPVxuICAgIHsgcGJvcF9vcCA9IG9wOyBwYm9wX3BhdCA9IHBhdDsgcGJvcF9leHAgPSBleHA7IHBib3BfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgTXR5ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBtdHlfZGVzYyA9IGQ7IHBtdHlfbG9jID0gbG9jOyBwbXR5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcG10eV9hdHRyaWJ1dGVzID0gZC5wbXR5X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfaWRlbnQgYSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9hbGlhcyBhKVxuICBsZXQgc2lnbmF0dXJlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9zaWduYXR1cmUgYSlcbiAgbGV0IGZ1bmN0b3JfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2Z1bmN0b3IgKGEsIGIpKVxuICBsZXQgd2l0aF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfd2l0aCAoYSwgYikpXG4gIGxldCB0eXBlb2ZfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV90eXBlb2YgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIE1vZCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwbW9kX2Rlc2MgPSBkOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IGQucG1vZF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgaWRlbnQgP2xvYyA/YXR0cnMgeCA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2lkZW50IHgpXG4gIGxldCBzdHJ1Y3R1cmUgP2xvYyA/YXR0cnMgeCA9IG1rID9sb2MgP2F0dHJzIChQbW9kX3N0cnVjdHVyZSB4KVxuICBsZXQgZnVuY3Rvcl8gP2xvYyA/YXR0cnMgYXJnIGJvZHkgPSBtayA/bG9jID9hdHRycyAoUG1vZF9mdW5jdG9yIChhcmcsIGJvZHkpKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgbTEgbTIgPSBtayA/bG9jID9hdHRycyAoUG1vZF9hcHBseSAobTEsIG0yKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIG0gbXR5ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfY29uc3RyYWludCAobSwgbXR5KSlcbiAgbGV0IHVucGFjayA/bG9jID9hdHRycyBlID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfdW5wYWNrIGUpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2V4dGVuc2lvbiBhKVxuZW5kXG5cbm1vZHVsZSBTaWcgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSBkID0geyBwc2lnX2Rlc2MgPSBkOyBwc2lnX2xvYyA9IGxvYyB9XG4gIGxldCB2YWx1ZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3ZhbHVlIGEpXG4gIGxldCB0eXBlXyA/bG9jIHJlY19mbGFnIGEgPSBtayA/bG9jIChQc2lnX3R5cGUgKHJlY19mbGFnLCBhKSlcbiAgbGV0IHR5cGVfc3Vic3QgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ190eXBlc3Vic3QgYSlcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfdHlwZXh0IGEpXG4gIGxldCBleGNlcHRpb25fID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfZXhjZXB0aW9uIGEpXG4gIGxldCBtb2R1bGVfID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfbW9kdWxlIGEpXG4gIGxldCBtb2Rfc3Vic3QgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19tb2RzdWJzdCBhKVxuICBsZXQgcmVjX21vZHVsZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3JlY21vZHVsZSBhKVxuICBsZXQgbW9kdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX21vZHR5cGUgYSlcbiAgbGV0IG9wZW5fID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfb3BlbiBhKVxuICBsZXQgaW5jbHVkZV8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19pbmNsdWRlIGEpXG4gIGxldCBjbGFzc18gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19jbGFzcyBhKVxuICBsZXQgY2xhc3NfdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2NsYXNzX3R5cGUgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzaWdfZXh0ZW5zaW9uIChhLCBhdHRycykpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19hdHRyaWJ1dGUgYSlcbmVuZFxuXG5tb2R1bGUgU3RyID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgZCA9IHsgcHN0cl9kZXNjID0gZDsgcHN0cl9sb2MgPSBsb2MgfVxuICBsZXQgZXZhbCA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzdHJfZXZhbCAoYSwgYXR0cnMpKVxuICBsZXQgdmFsdWUgP2xvYyBhIGIgPSBtayA/bG9jIChQc3RyX3ZhbHVlIChhLCBiKSlcbiAgbGV0IHByaW1pdGl2ZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3ByaW1pdGl2ZSBhKVxuICBsZXQgdHlwZV8gP2xvYyByZWNfZmxhZyBhID0gbWsgP2xvYyAoUHN0cl90eXBlIChyZWNfZmxhZywgYSkpXG4gIGxldCB0eXBlX2V4dGVuc2lvbiA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3R5cGV4dCBhKVxuICBsZXQgZXhjZXB0aW9uXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2V4Y2VwdGlvbiBhKVxuICBsZXQgbW9kdWxlXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX21vZHVsZSBhKVxuICBsZXQgcmVjX21vZHVsZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX3JlY21vZHVsZSBhKVxuICBsZXQgbW9kdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX21vZHR5cGUgYSlcbiAgbGV0IG9wZW5fID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfb3BlbiBhKVxuICBsZXQgY2xhc3NfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfY2xhc3MgYSlcbiAgbGV0IGNsYXNzX3R5cGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9jbGFzc190eXBlIGEpXG4gIGxldCBpbmNsdWRlXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2luY2x1ZGUgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID8oYXR0cnMgPSBbXSkgYSA9IG1rID9sb2MgKFBzdHJfZXh0ZW5zaW9uIChhLCBhdHRycykpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9hdHRyaWJ1dGUgYSlcbmVuZFxuXG5tb2R1bGUgQ2wgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGNsX2Rlc2MgPSBkOyBwY2xfbG9jID0gbG9jOyBwY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY2xfYXR0cmlidXRlcyA9IGQucGNsX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBjb25zdHIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9jb25zdHIgKGEsIGIpKVxuICBsZXQgc3RydWN0dXJlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNsX3N0cnVjdHVyZSBhKVxuICBsZXQgZnVuXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9mdW4gKGEsIGIsIGMsIGQpKVxuICBsZXQgYXBwbHkgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9hcHBseSAoYSwgYikpXG4gIGxldCBsZXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9sZXQgKGEsIGIsIGMpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9leHRlbnNpb24gYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2xfb3BlbiAoYSwgYikpXG5lbmRcblxubW9kdWxlIEN0eSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY3R5X2Rlc2MgPSBkOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IGQucGN0eV9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgY29uc3RyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2NvbnN0ciAoYSwgYikpXG4gIGxldCBzaWduYXR1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3R5X3NpZ25hdHVyZSBhKVxuICBsZXQgYXJyb3cgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGN0eV9hcnJvdyAoYSwgYiwgYykpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2V4dGVuc2lvbiBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfb3BlbiAoYSwgYikpXG5lbmRcblxubW9kdWxlIEN0ZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY3RmX2Rlc2MgPSBkOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBpbmhlcml0XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfaW5oZXJpdCBhKVxuICBsZXQgdmFsXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfdmFsIChhLCBiLCBjLCBkKSlcbiAgbGV0IG1ldGhvZF8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQY3RmX21ldGhvZCAoYSwgYiwgYywgZCkpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfZXh0ZW5zaW9uIGEpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUGN0Zl9hdHRyaWJ1dGUgYSlcbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gZC5wY3RmX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG5lbmRcblxubW9kdWxlIENmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjZl9kZXNjID0gZDsgcGNmX2xvYyA9IGxvYzsgcGNmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGluaGVyaXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9pbmhlcml0IChhLCBiLCBjKSlcbiAgbGV0IHZhbF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX3ZhbCAoYSwgYiwgYykpXG4gIGxldCBtZXRob2RfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9tZXRob2QgKGEsIGIsIGMpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGluaXRpYWxpemVyXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9pbml0aWFsaXplciBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNmX2V4dGVuc2lvbiBhKVxuICBsZXQgYXR0cmlidXRlID9sb2MgYSA9IG1rID9sb2MgKFBjZl9hdHRyaWJ1dGUgYSlcbiAgbGV0IHZpcnR1YWxfIGN0ID0gQ2ZrX3ZpcnR1YWwgY3RcbiAgbGV0IGNvbmNyZXRlIG8gZSA9IENma19jb25jcmV0ZSAobywgZSlcbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBkLnBjZl9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuZW5kXG5cbm1vZHVsZSBWYWwgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocHJpbSA9IFtdKSBuYW1lIHR5cCA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lID0gbmFtZTtcbiAgICAgIHB2YWxfdHlwZSA9IHR5cDtcbiAgICAgIHB2YWxfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcHZhbF9sb2MgPSBsb2M7XG4gICAgICBwdmFsX3ByaW0gPSBwcmltO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTWQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgdHlwID1cbiAgICB7IHBtZF9uYW1lID0gbmFtZTsgcG1kX3R5cGUgPSB0eXA7IHBtZF9hdHRyaWJ1dGVzID0gYXR0cnM7IHBtZF9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBNcyA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBzeW4gPVxuICAgIHtcbiAgICAgIHBtc19uYW1lID0gbmFtZTtcbiAgICAgIHBtc19tYW5pZmVzdCA9IHN5bjtcbiAgICAgIHBtc19hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwbXNfbG9jID0gbG9jO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTXRkID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/dHlwIG5hbWUgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZSA9IG5hbWU7XG4gICAgICBwbXRkX3R5cGUgPSB0eXA7XG4gICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBtdGRfbG9jID0gbG9jO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTWIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgZXhwciA9XG4gICAgeyBwbWJfbmFtZSA9IG5hbWU7IHBtYl9leHByID0gZXhwcjsgcG1iX2F0dHJpYnV0ZXMgPSBhdHRyczsgcG1iX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIE9wbiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhvdmVycmlkZSA9IEZyZXNoKSBleHByID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByID0gZXhwcjtcbiAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBJbmNsID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBtZXhwciA9XG4gICAgeyBwaW5jbF9tb2QgPSBtZXhwcjsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuZW5kXG5cbm1vZHVsZSBWYiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgcGF0IGV4cHIgPVxuICAgIHsgcHZiX3BhdCA9IHBhdDsgcHZiX2V4cHIgPSBleHByOyBwdmJfYXR0cmlidXRlcyA9IGF0dHJzOyBwdmJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgQ2kgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmlydCA9IENvbmNyZXRlKSA/KHBhcmFtcyA9IFtdKVxuICAgICAgbmFtZSBleHByID1cbiAgICB7XG4gICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICBwY2lfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgcGNpX25hbWUgPSBuYW1lO1xuICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBjaV9sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBUeXBlID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHBhcmFtcyA9IFtdKSA/KGNzdHJzID0gW10pXG4gICAgICA/KGtpbmQgPSBQdHlwZV9hYnN0cmFjdCkgPyhwcml2ID0gUHVibGljKSA/bWFuaWZlc3QgbmFtZSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwdHlwZV9jc3RycyA9IGNzdHJzO1xuICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlID0gcHJpdjtcbiAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwdHlwZV9sb2MgPSBsb2M7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3RvciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHZhcnMgPSBbXSlcbiAgICAgID8oYXJncyA9IFBjc3RyX3R1cGxlIFtdKSA/cmVzIG5hbWUgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gdmFycztcbiAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGZpZWxkID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8obXV0ID0gSW1tdXRhYmxlKSBuYW1lIHR5cCA9XG4gICAge1xuICAgICAgcGxkX25hbWUgPSBuYW1lO1xuICAgICAgcGxkX211dGFibGUgPSBtdXQ7XG4gICAgICBwbGRfdHlwZSA9IHR5cDtcbiAgICAgIHBsZF9sb2MgPSBsb2M7XG4gICAgICBwbGRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cbmVuZFxuXG4oKiogVHlwZSBleHRlbnNpb25zICopXG5tb2R1bGUgVGUgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocGFyYW1zID0gW10pID8ocHJpdiA9IFB1YmxpYylcbiAgICAgIHBhdGggY29uc3RydWN0b3JzID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICBwdHlleHRfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycztcbiAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdjtcbiAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICBwdHlleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgbWtfZXhjZXB0aW9uID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGNvbnN0cnVjdG9yID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3IgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBraW5kID1cbiAgICB7XG4gICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgcGV4dF9raW5kID0ga2luZDtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBkZWNsID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmFycyA9IFtdKVxuICAgICAgPyhhcmdzID0gUGNzdHJfdHVwbGUgW10pID9yZXMgbmFtZSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgIHBleHRfa2luZCA9IFBleHRfZGVjbCAodmFycywgYXJncywgcmVzKTtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCByZWJpbmQgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBsaWQgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICBwZXh0X2tpbmQgPSBQZXh0X3JlYmluZCBsaWQ7XG4gICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgQ3NpZyA9IHN0cnVjdFxuICBsZXQgbWsgc2VsZiBmaWVsZHMgPSB7IHBjc2lnX3NlbGYgPSBzZWxmOyBwY3NpZ19maWVsZHMgPSBmaWVsZHMgfVxuZW5kXG5cbm1vZHVsZSBDc3RyID0gc3RydWN0XG4gIGxldCBtayBzZWxmIGZpZWxkcyA9IHsgcGNzdHJfc2VsZiA9IHNlbGY7IHBjc3RyX2ZpZWxkcyA9IGZpZWxkcyB9XG5lbmRcblxuKCoqIFJvdyBmaWVsZHMgKilcbm1vZHVsZSBSZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZGVzYyA9XG4gICAgeyBwcmZfZGVzYyA9IGRlc2M7IHByZl9sb2MgPSBsb2M7IHByZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCB0YWcgP2xvYyA/YXR0cnMgbGFiZWwgY29uc3QgdHlzID1cbiAgICBtayA/bG9jID9hdHRycyAoUnRhZyAobGFiZWwsIGNvbnN0LCB0eXMpKVxuXG4gIGxldCBpbmhlcml0XyA/bG9jIHR5ID0gbWsgP2xvYyAoUmluaGVyaXQgdHkpXG5lbmRcblxuKCoqIE9iamVjdCBmaWVsZHMgKilcbm1vZHVsZSBPZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZGVzYyA9XG4gICAgeyBwb2ZfZGVzYyA9IGRlc2M7IHBvZl9sb2MgPSBsb2M7IHBvZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCB0YWcgP2xvYyA/YXR0cnMgbGFiZWwgdHkgPSBtayA/bG9jID9hdHRycyAoT3RhZyAobGFiZWwsIHR5KSlcbiAgbGV0IGluaGVyaXRfID9sb2MgdHkgPSBtayA/bG9jIChPaW5oZXJpdCB0eSlcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQkVHSU4gb2YgQkxBQ0sgTUFHSUMgKilcbigqJCBvcGVuIEFzdF9jaW5hcHNfaGVscGVycyAkKilcblxudHlwZSBfIHdpdG5lc3NlcyA9IC4uXG5cbnR5cGUgXyBtaWdyYXRpb24gPSAuLlxudHlwZSBfIG1pZ3JhdGlvbiArPSBVbmRlZmluZWQgOiBfIG1pZ3JhdGlvblxuXG50eXBlICdhIG1pZ3JhdGlvbl9pbmZvID0ge1xuICBtdXRhYmxlIG5leHRfdmVyc2lvbiA6ICdhIG1pZ3JhdGlvbjtcbiAgbXV0YWJsZSBwcmV2aW91c192ZXJzaW9uIDogJ2EgbWlncmF0aW9uO1xufVxuXG4oKiogQWJzdHJhY3QgdmlldyBvZiBhIHZlcnNpb24gb2YgYW4gT0NhbWwgQXN0ICopXG5tb2R1bGUgdHlwZSBBc3QgPSBzaWdcbiAgKCokIGZvcmVhY2hfbW9kdWxlIChmdW4gbSB0eXBlcyAtPlxuICAgICAgcHJpbnRmIFwiICBtb2R1bGUgJXMgOiBzaWdcXG5cIiBtO1xuICAgICAgTGlzdC5pdGVyIHR5cGVzIH5mOihwcmludGYgXCIgICAgdHlwZSAlc1xcblwiKTtcbiAgICAgIHByaW50ZiBcIiAgZW5kXFxuXCJcbiAgICApXG4gICopXG4gIG1vZHVsZSBQYXJzZXRyZWUgOiBzaWdcbiAgICB0eXBlIHN0cnVjdHVyZVxuICAgIHR5cGUgc2lnbmF0dXJlXG4gICAgdHlwZSB0b3BsZXZlbF9waHJhc2VcbiAgICB0eXBlIGNvcmVfdHlwZVxuICAgIHR5cGUgZXhwcmVzc2lvblxuICAgIHR5cGUgcGF0dGVyblxuICAgIHR5cGUgY2FzZVxuICAgIHR5cGUgdHlwZV9kZWNsYXJhdGlvblxuICAgIHR5cGUgdHlwZV9leHRlbnNpb25cbiAgICB0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgIHR5cGUgY2xhc3NfZXhwclxuICAgIHR5cGUgY2xhc3NfZmllbGRcbiAgICB0eXBlIGNsYXNzX3R5cGVcbiAgICB0eXBlIGNsYXNzX3NpZ25hdHVyZVxuICAgIHR5cGUgY2xhc3NfdHlwZV9maWVsZFxuICAgIHR5cGUgbW9kdWxlX2V4cHJcbiAgICB0eXBlIG1vZHVsZV90eXBlXG4gICAgdHlwZSBzaWduYXR1cmVfaXRlbVxuICAgIHR5cGUgc3RydWN0dXJlX2l0ZW1cbiAgZW5kXG4oKiQqKVxuICBtb2R1bGUgQ29uZmlnIDogc2lnXG4gICAgdmFsIGFzdF9pbXBsX21hZ2ljX251bWJlciA6IHN0cmluZ1xuICAgIHZhbCBhc3RfaW50Zl9tYWdpY19udW1iZXIgOiBzdHJpbmdcbiAgZW5kXG5lbmRcblxuKCogU2hvcnRjdXRzIGZvciB0YWxraW5nIGFib3V0IGFzdCB0eXBlcyBvdXRzaWRlIG9mIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxudHlwZSAnYSBfdHlwZXMgPSAnYSBjb25zdHJhaW50ICdhXG4gID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogXztcXG5cIiBzKSAqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IF87XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogXztcbiAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiBfO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IF87XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogXztcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBfO1xuICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IF87XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogXztcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBfO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IF87XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogXztcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBfO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IF87XG4gICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogXztcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBfO1xuICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IF87XG4gICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogXztcbiAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBfO1xuICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IF87XG4oKiQqKVxuICA+XG47O1xuXG4oKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgcHJpbnRmIFwidHlwZSAnYSBnZXRfJXMgPVxcblwiIHM7XG4gICAgcHJpbnRmIFwiICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgJXMgOiAneDsgLi4gPlxcblwiIHNcbiAgKSAqKVxudHlwZSAnYSBnZXRfc3RydWN0dXJlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHN0cnVjdHVyZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9zaWduYXR1cmUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc2lnbmF0dXJlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3RvcGxldmVsX3BocmFzZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCB0b3BsZXZlbF9waHJhc2UgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY29yZV90eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNvcmVfdHlwZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9leHByZXNzaW9uID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGV4cHJlc3Npb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfcGF0dGVybiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBwYXR0ZXJuIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2Nhc2UgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2FzZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF90eXBlX2RlY2xhcmF0aW9uID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHR5cGVfZGVjbGFyYXRpb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfdHlwZV9leHRlbnNpb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgdHlwZV9leHRlbnNpb24gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc19leHByID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX2V4cHIgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfZmllbGQgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfZmllbGQgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfdHlwZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc190eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX3NpZ25hdHVyZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc19zaWduYXR1cmUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfdHlwZV9maWVsZCA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc190eXBlX2ZpZWxkIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X21vZHVsZV9leHByID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IG1vZHVsZV9leHByIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X21vZHVsZV90eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IG1vZHVsZV90eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3NpZ25hdHVyZV9pdGVtID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHNpZ25hdHVyZV9pdGVtIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3N0cnVjdHVyZV9pdGVtID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHN0cnVjdHVyZV9pdGVtIDogJ3g7IC4uID5cbigqJCopXG5cbm1vZHVsZSB0eXBlIE9DYW1sX3ZlcnNpb24gPSBzaWdcbiAgbW9kdWxlIEFzdCA6IEFzdFxuICB2YWwgdmVyc2lvbiA6IGludFxuICB2YWwgc3RyaW5nX3ZlcnNpb24gOiBzdHJpbmdcbiAgdHlwZSB0eXBlcyA9IDxcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+IHByaW50ZiBcIiAgICAlLTIxcyA6IEFzdC4lcy4lcztcXG5cIiBzIG0gcykqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlO1xuICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY29yZV90eXBlO1xuICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnBhdHRlcm47XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jYXNlO1xuICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbjtcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwcjtcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZTtcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZTtcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQ7XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcjtcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW07XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gID4gX3R5cGVzXG4gIHR5cGUgXyB3aXRuZXNzZXMgKz0gVmVyc2lvbiA6IHR5cGVzIHdpdG5lc3Nlc1xuICB2YWwgbWlncmF0aW9uX2luZm8gOiB0eXBlcyBtaWdyYXRpb25faW5mb1xuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdG5lc3MoQXN0IDogQXN0KSA9XG5zdHJ1Y3RcbiAgdHlwZSB0eXBlcyA9IDxcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+IHByaW50ZiBcIiAgICAlLTIxcyA6IEFzdC4lcy4lcztcXG5cIiBzIG0gcykqKVxuICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlO1xuICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlO1xuICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY29yZV90eXBlO1xuICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnBhdHRlcm47XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jYXNlO1xuICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbjtcbiAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uO1xuICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwcjtcbiAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkO1xuICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZTtcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZTtcbiAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQ7XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcjtcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW07XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gID4gX3R5cGVzXG4gIHR5cGUgXyB3aXRuZXNzZXMgKz0gVmVyc2lvbiA6IHR5cGVzIHdpdG5lc3Nlc1xuICBsZXQgbWlncmF0aW9uX2luZm8gOiB0eXBlcyBtaWdyYXRpb25faW5mbyA9XG4gICAgeyBuZXh0X3ZlcnNpb24gPSBVbmRlZmluZWQ7IHByZXZpb3VzX3ZlcnNpb24gPSBVbmRlZmluZWQgfVxuZW5kXG5cbnR5cGUgJ3R5cGVzIG9jYW1sX3ZlcnNpb24gPVxuICAobW9kdWxlIE9DYW1sX3ZlcnNpb25cbiAgICAoKiQgbGV0IHNlcCA9IHdpdGhfdGhlbl9hbmQgKCkgaW5cbiAgICAgIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPlxuICAgICAgICAgIHByaW50ZiBcIiAgICAldCB0eXBlIEFzdC4lcy4lcyA9ICd0eXBlcyBnZXRfJXNcXG5cIiBzZXAgbSBzIHMpICopXG4gICAgd2l0aCB0eXBlIEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlID0gJ3R5cGVzIGdldF9zdHJ1Y3R1cmVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5zaWduYXR1cmUgPSAndHlwZXMgZ2V0X3NpZ25hdHVyZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9ICd0eXBlcyBnZXRfdG9wbGV2ZWxfcGhyYXNlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY29yZV90eXBlID0gJ3R5cGVzIGdldF9jb3JlX3R5cGVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5leHByZXNzaW9uID0gJ3R5cGVzIGdldF9leHByZXNzaW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUucGF0dGVybiA9ICd0eXBlcyBnZXRfcGF0dGVyblxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNhc2UgPSAndHlwZXMgZ2V0X2Nhc2VcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID0gJ3R5cGVzIGdldF90eXBlX2RlY2xhcmF0aW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPSAndHlwZXMgZ2V0X3R5cGVfZXh0ZW5zaW9uXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gJ3R5cGVzIGdldF9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc19leHByID0gJ3R5cGVzIGdldF9jbGFzc19leHByXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPSAndHlwZXMgZ2V0X2NsYXNzX2ZpZWxkXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9ICd0eXBlcyBnZXRfY2xhc3NfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9ICd0eXBlcyBnZXRfY2xhc3Nfc2lnbmF0dXJlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9ICd0eXBlcyBnZXRfY2xhc3NfdHlwZV9maWVsZFxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByID0gJ3R5cGVzIGdldF9tb2R1bGVfZXhwclxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlID0gJ3R5cGVzIGdldF9tb2R1bGVfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID0gJ3R5cGVzIGdldF9zaWduYXR1cmVfaXRlbVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID0gJ3R5cGVzIGdldF9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgKVxuXG50eXBlICgnZnJvbSwgJ3RvXykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgcHJpbnRmIFwiICBjb3B5XyVzOiAnZnJvbSBnZXRfJXMgLT4gJ3RvXyBnZXRfJXM7XFxuXCIgcyBzIHMpICopXG4gIGNvcHlfc3RydWN0dXJlOiAnZnJvbSBnZXRfc3RydWN0dXJlIC0+ICd0b18gZ2V0X3N0cnVjdHVyZTtcbiAgY29weV9zaWduYXR1cmU6ICdmcm9tIGdldF9zaWduYXR1cmUgLT4gJ3RvXyBnZXRfc2lnbmF0dXJlO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZTogJ2Zyb20gZ2V0X3RvcGxldmVsX3BocmFzZSAtPiAndG9fIGdldF90b3BsZXZlbF9waHJhc2U7XG4gIGNvcHlfY29yZV90eXBlOiAnZnJvbSBnZXRfY29yZV90eXBlIC0+ICd0b18gZ2V0X2NvcmVfdHlwZTtcbiAgY29weV9leHByZXNzaW9uOiAnZnJvbSBnZXRfZXhwcmVzc2lvbiAtPiAndG9fIGdldF9leHByZXNzaW9uO1xuICBjb3B5X3BhdHRlcm46ICdmcm9tIGdldF9wYXR0ZXJuIC0+ICd0b18gZ2V0X3BhdHRlcm47XG4gIGNvcHlfY2FzZTogJ2Zyb20gZ2V0X2Nhc2UgLT4gJ3RvXyBnZXRfY2FzZTtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uOiAnZnJvbSBnZXRfdHlwZV9kZWNsYXJhdGlvbiAtPiAndG9fIGdldF90eXBlX2RlY2xhcmF0aW9uO1xuICBjb3B5X3R5cGVfZXh0ZW5zaW9uOiAnZnJvbSBnZXRfdHlwZV9leHRlbnNpb24gLT4gJ3RvXyBnZXRfdHlwZV9leHRlbnNpb247XG4gIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yOiAnZnJvbSBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICd0b18gZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgY29weV9jbGFzc19leHByOiAnZnJvbSBnZXRfY2xhc3NfZXhwciAtPiAndG9fIGdldF9jbGFzc19leHByO1xuICBjb3B5X2NsYXNzX2ZpZWxkOiAnZnJvbSBnZXRfY2xhc3NfZmllbGQgLT4gJ3RvXyBnZXRfY2xhc3NfZmllbGQ7XG4gIGNvcHlfY2xhc3NfdHlwZTogJ2Zyb20gZ2V0X2NsYXNzX3R5cGUgLT4gJ3RvXyBnZXRfY2xhc3NfdHlwZTtcbiAgY29weV9jbGFzc19zaWduYXR1cmU6ICdmcm9tIGdldF9jbGFzc19zaWduYXR1cmUgLT4gJ3RvXyBnZXRfY2xhc3Nfc2lnbmF0dXJlO1xuICBjb3B5X2NsYXNzX3R5cGVfZmllbGQ6ICdmcm9tIGdldF9jbGFzc190eXBlX2ZpZWxkIC0+ICd0b18gZ2V0X2NsYXNzX3R5cGVfZmllbGQ7XG4gIGNvcHlfbW9kdWxlX2V4cHI6ICdmcm9tIGdldF9tb2R1bGVfZXhwciAtPiAndG9fIGdldF9tb2R1bGVfZXhwcjtcbiAgY29weV9tb2R1bGVfdHlwZTogJ2Zyb20gZ2V0X21vZHVsZV90eXBlIC0+ICd0b18gZ2V0X21vZHVsZV90eXBlO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtOiAnZnJvbSBnZXRfc2lnbmF0dXJlX2l0ZW0gLT4gJ3RvXyBnZXRfc2lnbmF0dXJlX2l0ZW07XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW06ICdmcm9tIGdldF9zdHJ1Y3R1cmVfaXRlbSAtPiAndG9fIGdldF9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG59XG5cbmxldCBpZCB4ID0geFxubGV0IG1pZ3JhdGlvbl9pZGVudGl0eSA6ICgnYSwgJ2EpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPSB7XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICBjb3B5XyVzID0gaWQ7XFxuXCIgcykgKilcbiAgY29weV9zdHJ1Y3R1cmUgPSBpZDtcbiAgY29weV9zaWduYXR1cmUgPSBpZDtcbiAgY29weV90b3BsZXZlbF9waHJhc2UgPSBpZDtcbiAgY29weV9jb3JlX3R5cGUgPSBpZDtcbiAgY29weV9leHByZXNzaW9uID0gaWQ7XG4gIGNvcHlfcGF0dGVybiA9IGlkO1xuICBjb3B5X2Nhc2UgPSBpZDtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uID0gaWQ7XG4gIGNvcHlfdHlwZV9leHRlbnNpb24gPSBpZDtcbiAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgPSBpZDtcbiAgY29weV9jbGFzc19leHByID0gaWQ7XG4gIGNvcHlfY2xhc3NfZmllbGQgPSBpZDtcbiAgY29weV9jbGFzc190eXBlID0gaWQ7XG4gIGNvcHlfY2xhc3Nfc2lnbmF0dXJlID0gaWQ7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA9IGlkO1xuICBjb3B5X21vZHVsZV9leHByID0gaWQ7XG4gIGNvcHlfbW9kdWxlX3R5cGUgPSBpZDtcbiAgY29weV9zaWduYXR1cmVfaXRlbSA9IGlkO1xuICBjb3B5X3N0cnVjdHVyZV9pdGVtID0gaWQ7XG4oKiQqKVxufVxuXG5sZXQgY29tcG9zZSBmIGcgeCA9IGYgKGcgeClcbmxldCBtaWdyYXRpb25fY29tcG9zZSAoYWIgOiAoJ2EsICdiKSBtaWdyYXRpb25fZnVuY3Rpb25zKSAoYmMgOiAoJ2IsICdjKSBtaWdyYXRpb25fZnVuY3Rpb25zKSA6ICgnYSwgJ2MpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPSB7XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIHByaW50ZiBcIiAgY29weV8lLTIxcyA9IGNvbXBvc2UgYmMuY29weV8lLTIxcyBhYi5jb3B5XyVzO1xcblwiIHMgcyBzKSAqKVxuICBjb3B5X3N0cnVjdHVyZSAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zdHJ1Y3R1cmUgICAgICAgICAgICAgYWIuY29weV9zdHJ1Y3R1cmU7XG4gIGNvcHlfc2lnbmF0dXJlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3NpZ25hdHVyZSAgICAgICAgICAgICBhYi5jb3B5X3NpZ25hdHVyZTtcbiAgY29weV90b3BsZXZlbF9waHJhc2UgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdG9wbGV2ZWxfcGhyYXNlICAgICAgIGFiLmNvcHlfdG9wbGV2ZWxfcGhyYXNlO1xuICBjb3B5X2NvcmVfdHlwZSAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jb3JlX3R5cGUgICAgICAgICAgICAgYWIuY29weV9jb3JlX3R5cGU7XG4gIGNvcHlfZXhwcmVzc2lvbiAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2V4cHJlc3Npb24gICAgICAgICAgICBhYi5jb3B5X2V4cHJlc3Npb247XG4gIGNvcHlfcGF0dGVybiAgICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3BhdHRlcm4gICAgICAgICAgICAgICBhYi5jb3B5X3BhdHRlcm47XG4gIGNvcHlfY2FzZSAgICAgICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2Nhc2UgICAgICAgICAgICAgICAgICBhYi5jb3B5X2Nhc2U7XG4gIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiAgICAgID0gY29tcG9zZSBiYy5jb3B5X3R5cGVfZGVjbGFyYXRpb24gICAgICBhYi5jb3B5X3R5cGVfZGVjbGFyYXRpb247XG4gIGNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3R5cGVfZXh0ZW5zaW9uICAgICAgICBhYi5jb3B5X3R5cGVfZXh0ZW5zaW9uO1xuICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IGNvbXBvc2UgYmMuY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgYWIuY29weV9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gIGNvcHlfY2xhc3NfZXhwciAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX2V4cHIgICAgICAgICAgICBhYi5jb3B5X2NsYXNzX2V4cHI7XG4gIGNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX2ZpZWxkICAgICAgICAgICBhYi5jb3B5X2NsYXNzX2ZpZWxkO1xuICBjb3B5X2NsYXNzX3R5cGUgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc190eXBlICAgICAgICAgICAgYWIuY29weV9jbGFzc190eXBlO1xuICBjb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc19zaWduYXR1cmUgICAgICAgYWIuY29weV9jbGFzc19zaWduYXR1cmU7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3R5cGVfZmllbGQgICAgICBhYi5jb3B5X2NsYXNzX3R5cGVfZmllbGQ7XG4gIGNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X21vZHVsZV9leHByICAgICAgICAgICBhYi5jb3B5X21vZHVsZV9leHByO1xuICBjb3B5X21vZHVsZV90eXBlICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9tb2R1bGVfdHlwZSAgICAgICAgICAgYWIuY29weV9tb2R1bGVfdHlwZTtcbiAgY29weV9zaWduYXR1cmVfaXRlbSAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc2lnbmF0dXJlX2l0ZW0gICAgICAgIGFiLmNvcHlfc2lnbmF0dXJlX2l0ZW07XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3N0cnVjdHVyZV9pdGVtICAgICAgICBhYi5jb3B5X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbn1cblxudHlwZSBfIG1pZ3JhdGlvbiArPSBNaWdyYXRpb24gOiAnZnJvbSBvY2FtbF92ZXJzaW9uICogKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zICogJ3RvXyBvY2FtbF92ZXJzaW9uIC0+ICdmcm9tIG1pZ3JhdGlvblxuXG5tb2R1bGUgdHlwZSBNaWdyYXRlX21vZHVsZSA9IHNpZ1xuICBtb2R1bGUgRnJvbSA6IEFzdFxuICBtb2R1bGUgVG8gOiBBc3RcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPlxuICAgICAgcHJpbnRmIFwiICB2YWwgY29weV8lLTIxczogRnJvbS4lcy4lcyAtPiBUby4lcy4lc1xcblwiIHMgbSBzIG0gcykgKilcbiAgdmFsIGNvcHlfc3RydWN0dXJlICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZVxuICB2YWwgY29weV9zaWduYXR1cmUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gIHZhbCBjb3B5X3RvcGxldmVsX3BocmFzZSAgICAgIDogRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2VcbiAgdmFsIGNvcHlfY29yZV90eXBlICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZVxuICB2YWwgY29weV9leHByZXNzaW9uICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25cbiAgdmFsIGNvcHlfcGF0dGVybiAgICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuXG4gIHZhbCBjb3B5X2Nhc2UgICAgICAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZVxuICB2YWwgY29weV90eXBlX2RlY2xhcmF0aW9uICAgICA6IEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb25cbiAgdmFsIGNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgOiBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb25cbiAgdmFsIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICB2YWwgY29weV9jbGFzc19leHByICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJcbiAgdmFsIGNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRcbiAgdmFsIGNvcHlfY2xhc3NfdHlwZSAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlXG4gIHZhbCBjb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmVcbiAgdmFsIGNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gIHZhbCBjb3B5X21vZHVsZV9leHByICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gIHZhbCBjb3B5X21vZHVsZV90eXBlICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gIHZhbCBjb3B5X3NpZ25hdHVyZV9pdGVtICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gIHZhbCBjb3B5X3N0cnVjdHVyZV9pdGVtICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4oKiQqKVxuZW5kXG5cbm1vZHVsZSBNaWdyYXRpb25fZnVuY3Rpb25zXG4gICAgKEEgOiBPQ2FtbF92ZXJzaW9uKSAoQiA6IE9DYW1sX3ZlcnNpb24pXG4gICAgKEFfdG9fQiA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBBLkFzdCBhbmQgbW9kdWxlIFRvID0gQi5Bc3QpXG49XG5zdHJ1Y3RcbiAgbGV0IG1pZ3JhdGlvbl9mdW5jdGlvbnMgOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9XG4gICAgbGV0IG9wZW4gQV90b19CIGluXG4gICAge1xuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgICBjb3B5XyVzO1xcblwiIHMpICopXG4gICAgICBjb3B5X3N0cnVjdHVyZTtcbiAgICAgIGNvcHlfc2lnbmF0dXJlO1xuICAgICAgY29weV90b3BsZXZlbF9waHJhc2U7XG4gICAgICBjb3B5X2NvcmVfdHlwZTtcbiAgICAgIGNvcHlfZXhwcmVzc2lvbjtcbiAgICAgIGNvcHlfcGF0dGVybjtcbiAgICAgIGNvcHlfY2FzZTtcbiAgICAgIGNvcHlfdHlwZV9kZWNsYXJhdGlvbjtcbiAgICAgIGNvcHlfdHlwZV9leHRlbnNpb247XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIGNvcHlfY2xhc3NfZXhwcjtcbiAgICAgIGNvcHlfY2xhc3NfZmllbGQ7XG4gICAgICBjb3B5X2NsYXNzX3R5cGU7XG4gICAgICBjb3B5X2NsYXNzX3NpZ25hdHVyZTtcbiAgICAgIGNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgICAgIGNvcHlfbW9kdWxlX2V4cHI7XG4gICAgICBjb3B5X21vZHVsZV90eXBlO1xuICAgICAgY29weV9zaWduYXR1cmVfaXRlbTtcbiAgICAgIGNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICAgIH1cbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXJfbWlncmF0aW9uIChBIDogT0NhbWxfdmVyc2lvbikgKEIgOiBPQ2FtbF92ZXJzaW9uKVxuICAgIChBX3RvX0IgOiBNaWdyYXRlX21vZHVsZSB3aXRoIG1vZHVsZSBGcm9tID0gQS5Bc3QgYW5kIG1vZHVsZSBUbyA9IEIuQXN0KVxuICAgIChCX3RvX0EgOiBNaWdyYXRlX21vZHVsZSB3aXRoIG1vZHVsZSBGcm9tID0gQi5Bc3QgYW5kIG1vZHVsZSBUbyA9IEEuQXN0KVxuPVxuc3RydWN0XG4gIGxldCAoKSA9IChcbiAgICBsZXQgaXNfdW5kZWZpbmVkIDogdHlwZSBhLiBhIG1pZ3JhdGlvbiAtPiBib29sID0gZnVuY3Rpb25cbiAgICAgIHwgVW5kZWZpbmVkIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgYXNzZXJ0IChBLnZlcnNpb24gPCBCLnZlcnNpb24pO1xuICAgIGFzc2VydCAoaXNfdW5kZWZpbmVkIEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uKTtcbiAgICBhc3NlcnQgKGlzX3VuZGVmaW5lZCBCLm1pZ3JhdGlvbl9pbmZvLnByZXZpb3VzX3ZlcnNpb24pO1xuICAgIGxldCBtb2R1bGUgQV90b19CX2Z1biA9IE1pZ3JhdGlvbl9mdW5jdGlvbnMoQSkoQikoQV90b19CKSBpblxuICAgIGxldCBtb2R1bGUgQl90b19BX2Z1biA9IE1pZ3JhdGlvbl9mdW5jdGlvbnMoQikoQSkoQl90b19BKSBpblxuICAgIEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uIDwtXG4gICAgICBNaWdyYXRpb24gKChtb2R1bGUgQSksIEFfdG9fQl9mdW4ubWlncmF0aW9uX2Z1bmN0aW9ucywgKG1vZHVsZSBCKSk7XG4gICAgQi5taWdyYXRpb25faW5mby5wcmV2aW91c192ZXJzaW9uIDwtXG4gICAgICBNaWdyYXRpb24gKChtb2R1bGUgQiksIEJfdG9fQV9mdW4ubWlncmF0aW9uX2Z1bmN0aW9ucywgKG1vZHVsZSBBKSk7XG4gIClcbmVuZFxuXG50eXBlICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb24gPVxuICB8IE5vX21pZ3JhdGlvbiA6ICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb25cbiAgfCBJbW1lZGlhdGVfbWlncmF0aW9uXG4gICAgOiAgKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zICogJ3RvXyBvY2FtbF92ZXJzaW9uXG4gICAgICAtPiAnZnJvbSBpbW1lZGlhdGVfbWlncmF0aW9uXG5cbmxldCBpbW1lZGlhdGVfbWlncmF0aW9uXG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgKHR5cGUgJXMpXFxuXCIgcykgKilcbiAgICAodHlwZSBzdHJ1Y3R1cmUpXG4gICAgKHR5cGUgc2lnbmF0dXJlKVxuICAgICh0eXBlIHRvcGxldmVsX3BocmFzZSlcbiAgICAodHlwZSBjb3JlX3R5cGUpXG4gICAgKHR5cGUgZXhwcmVzc2lvbilcbiAgICAodHlwZSBwYXR0ZXJuKVxuICAgICh0eXBlIGNhc2UpXG4gICAgKHR5cGUgdHlwZV9kZWNsYXJhdGlvbilcbiAgICAodHlwZSB0eXBlX2V4dGVuc2lvbilcbiAgICAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IpXG4gICAgKHR5cGUgY2xhc3NfZXhwcilcbiAgICAodHlwZSBjbGFzc19maWVsZClcbiAgICAodHlwZSBjbGFzc190eXBlKVxuICAgICh0eXBlIGNsYXNzX3NpZ25hdHVyZSlcbiAgICAodHlwZSBjbGFzc190eXBlX2ZpZWxkKVxuICAgICh0eXBlIG1vZHVsZV9leHByKVxuICAgICh0eXBlIG1vZHVsZV90eXBlKVxuICAgICh0eXBlIHNpZ25hdHVyZV9pdGVtKVxuICAgICh0eXBlIHN0cnVjdHVyZV9pdGVtKVxuKCokKilcbiAgICAoKG1vZHVsZSBBKSA6IDxcbiAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgIFwiICAgICAlLTIxcyA6ICVzO1xcblwiIHMgcykgKilcbiAgICAgc3RydWN0dXJlICAgICAgICAgICAgIDogc3RydWN0dXJlO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmU7XG4gICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IHRvcGxldmVsX3BocmFzZTtcbiAgICAgY29yZV90eXBlICAgICAgICAgICAgIDogY29yZV90eXBlO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uO1xuICAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBwYXR0ZXJuO1xuICAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBjYXNlO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uO1xuICAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiB0eXBlX2V4dGVuc2lvbjtcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByO1xuICAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBjbGFzc19maWVsZDtcbiAgICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogY2xhc3NfdHlwZTtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlO1xuICAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBjbGFzc190eXBlX2ZpZWxkO1xuICAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBtb2R1bGVfZXhwcjtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGU7XG4gICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IHNpZ25hdHVyZV9pdGVtO1xuICAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgICBkaXJlY3Rpb25cbiAgPVxuICBsZXQgdmVyc2lvbiA9IG1hdGNoIGRpcmVjdGlvbiB3aXRoXG4gICAgfCBgTmV4dCAtPiBBLm1pZ3JhdGlvbl9pbmZvLm5leHRfdmVyc2lvblxuICAgIHwgYFByZXZpb3VzIC0+IEEubWlncmF0aW9uX2luZm8ucHJldmlvdXNfdmVyc2lvblxuICBpblxuICBtYXRjaCB2ZXJzaW9uIHdpdGhcbiAgfCBVbmRlZmluZWQgLT4gTm9fbWlncmF0aW9uXG4gIHwgTWlncmF0aW9uIChfLCBmdW5zLCB0b18pIC0+IEltbWVkaWF0ZV9taWdyYXRpb24gKGZ1bnMsIHRvXylcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgbWlncmF0ZVxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICh0eXBlICVzMSkgKHR5cGUgJXMyKVxcblwiIHMgcykgKilcbiAgICAodHlwZSBzdHJ1Y3R1cmUxKSAodHlwZSBzdHJ1Y3R1cmUyKVxuICAgICh0eXBlIHNpZ25hdHVyZTEpICh0eXBlIHNpZ25hdHVyZTIpXG4gICAgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlMSkgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlMilcbiAgICAodHlwZSBjb3JlX3R5cGUxKSAodHlwZSBjb3JlX3R5cGUyKVxuICAgICh0eXBlIGV4cHJlc3Npb24xKSAodHlwZSBleHByZXNzaW9uMilcbiAgICAodHlwZSBwYXR0ZXJuMSkgKHR5cGUgcGF0dGVybjIpXG4gICAgKHR5cGUgY2FzZTEpICh0eXBlIGNhc2UyKVxuICAgICh0eXBlIHR5cGVfZGVjbGFyYXRpb24xKSAodHlwZSB0eXBlX2RlY2xhcmF0aW9uMilcbiAgICAodHlwZSB0eXBlX2V4dGVuc2lvbjEpICh0eXBlIHR5cGVfZXh0ZW5zaW9uMilcbiAgICAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IxKSAodHlwZSBleHRlbnNpb25fY29uc3RydWN0b3IyKVxuICAgICh0eXBlIGNsYXNzX2V4cHIxKSAodHlwZSBjbGFzc19leHByMilcbiAgICAodHlwZSBjbGFzc19maWVsZDEpICh0eXBlIGNsYXNzX2ZpZWxkMilcbiAgICAodHlwZSBjbGFzc190eXBlMSkgKHR5cGUgY2xhc3NfdHlwZTIpXG4gICAgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlMSkgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlMilcbiAgICAodHlwZSBjbGFzc190eXBlX2ZpZWxkMSkgKHR5cGUgY2xhc3NfdHlwZV9maWVsZDIpXG4gICAgKHR5cGUgbW9kdWxlX2V4cHIxKSAodHlwZSBtb2R1bGVfZXhwcjIpXG4gICAgKHR5cGUgbW9kdWxlX3R5cGUxKSAodHlwZSBtb2R1bGVfdHlwZTIpXG4gICAgKHR5cGUgc2lnbmF0dXJlX2l0ZW0xKSAodHlwZSBzaWduYXR1cmVfaXRlbTIpXG4gICAgKHR5cGUgc3RydWN0dXJlX2l0ZW0xKSAodHlwZSBzdHJ1Y3R1cmVfaXRlbTIpXG4oKiQqKVxuICAgICgobW9kdWxlIEEpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgJS0yMXMgOiAlczE7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmUxO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmUxO1xuICAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiB0b3BsZXZlbF9waHJhc2UxO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGUxO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uMTtcbiAgICAgcGF0dGVybiAgICAgICAgICAgICAgIDogcGF0dGVybjE7XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2UxO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uMTtcbiAgICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogdHlwZV9leHRlbnNpb24xO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IxO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByMTtcbiAgICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogY2xhc3NfZmllbGQxO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlMTtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlMTtcbiAgICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogY2xhc3NfdHlwZV9maWVsZDE7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByMTtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGUxO1xuICAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBzaWduYXR1cmVfaXRlbTE7XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtMTtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgICAoKG1vZHVsZSBCKSA6IDxcbiAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgICUtMjFzIDogJXMyO1xcblwiIHMgcykgKilcbiAgICAgc3RydWN0dXJlICAgICAgICAgICAgIDogc3RydWN0dXJlMjtcbiAgICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogc2lnbmF0dXJlMjtcbiAgICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogdG9wbGV2ZWxfcGhyYXNlMjtcbiAgICAgY29yZV90eXBlICAgICAgICAgICAgIDogY29yZV90eXBlMjtcbiAgICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogZXhwcmVzc2lvbjI7XG4gICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IHBhdHRlcm4yO1xuICAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBjYXNlMjtcbiAgICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogdHlwZV9kZWNsYXJhdGlvbjI7XG4gICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IHR5cGVfZXh0ZW5zaW9uMjtcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yMjtcbiAgICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogY2xhc3NfZXhwcjI7XG4gICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IGNsYXNzX2ZpZWxkMjtcbiAgICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogY2xhc3NfdHlwZTI7XG4gICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IGNsYXNzX3NpZ25hdHVyZTI7XG4gICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IGNsYXNzX3R5cGVfZmllbGQyO1xuICAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBtb2R1bGVfZXhwcjI7XG4gICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IG1vZHVsZV90eXBlMjtcbiAgICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogc2lnbmF0dXJlX2l0ZW0yO1xuICAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbTI7XG4oKiQqKVxuICAgICA+IG9jYW1sX3ZlcnNpb24pXG4gIDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnNcbiAgPVxuICBtYXRjaCBBLlZlcnNpb24gd2l0aFxuICB8IEIuVmVyc2lvbiAtPiBtaWdyYXRpb25faWRlbnRpdHlcbiAgfCBfIC0+XG4gICAgbGV0IGRpcmVjdGlvbiA9IGlmIEEudmVyc2lvbiA8IEIudmVyc2lvbiB0aGVuIGBOZXh0IGVsc2UgYFByZXZpb3VzIGluXG4gICAgbGV0IHJlYyBtaWdyYXRlIChtIDogQS50eXBlcyBpbW1lZGlhdGVfbWlncmF0aW9uKSA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgfCBOb19taWdyYXRpb24gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IEltbWVkaWF0ZV9taWdyYXRpb24gKGYsIChtb2R1bGUgVG8pKSAtPlxuICAgICAgICBtYXRjaCBUby5WZXJzaW9uIHdpdGhcbiAgICAgICAgfCBCLlZlcnNpb24gLT4gZlxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBtYXRjaCBpbW1lZGlhdGVfbWlncmF0aW9uIChtb2R1bGUgVG8pIGRpcmVjdGlvbiB3aXRoXG4gICAgICAgICAgfCBOb19taWdyYXRpb24gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBJbW1lZGlhdGVfbWlncmF0aW9uIChnLCB0bzIpIC0+XG4gICAgICAgICAgICBtaWdyYXRlIChJbW1lZGlhdGVfbWlncmF0aW9uIChtaWdyYXRpb25fY29tcG9zZSBmIGcsIHRvMikpXG4gICAgaW5cbiAgICBtaWdyYXRlIChpbW1lZGlhdGVfbWlncmF0aW9uIChtb2R1bGUgQSkgZGlyZWN0aW9uKVxuXG5tb2R1bGUgQ29udmVydCAoQSA6IE9DYW1sX3ZlcnNpb24pIChCIDogT0NhbWxfdmVyc2lvbikgPSBzdHJ1Y3RcbiAgbGV0IHtcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICBjb3B5XyVzO1xcblwiIHMpICopXG4gICAgY29weV9zdHJ1Y3R1cmU7XG4gICAgY29weV9zaWduYXR1cmU7XG4gICAgY29weV90b3BsZXZlbF9waHJhc2U7XG4gICAgY29weV9jb3JlX3R5cGU7XG4gICAgY29weV9leHByZXNzaW9uO1xuICAgIGNvcHlfcGF0dGVybjtcbiAgICBjb3B5X2Nhc2U7XG4gICAgY29weV90eXBlX2RlY2xhcmF0aW9uO1xuICAgIGNvcHlfdHlwZV9leHRlbnNpb247XG4gICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY29weV9jbGFzc19leHByO1xuICAgIGNvcHlfY2xhc3NfZmllbGQ7XG4gICAgY29weV9jbGFzc190eXBlO1xuICAgIGNvcHlfY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgICBjb3B5X21vZHVsZV9leHByO1xuICAgIGNvcHlfbW9kdWxlX3R5cGU7XG4gICAgY29weV9zaWduYXR1cmVfaXRlbTtcbiAgICBjb3B5X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgfSA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICBtaWdyYXRlIChtb2R1bGUgQSkgKG1vZHVsZSBCKVxuZW5kXG5cbigqJCBmb3JlYWNoX3ZlcnNpb24gKGZ1biBuIHZlcnNpb24gLT5cbiAgICBwcmludGYgXCJtb2R1bGUgT0NhbWxfJWQgPSBzdHJ1Y3RcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfJWRcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF8lZClcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgbGV0IHZlcnNpb24gPSAlZFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBsZXQgc3RyaW5nX3ZlcnNpb24gPSAlU1xcblwiIHZlcnNpb247XG4gICAgcHJpbnRmIFwiZW5kXFxuXCI7XG4gICAgcHJpbnRmIFwibGV0IG9jYW1sXyVkIDogT0NhbWxfJWQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfJWQpXFxuXCJcbiAgICAgIG4gbiBuO1xuICApXG4qKVxubW9kdWxlIE9DYW1sXzQwMiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDJcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDIpXG4gIGxldCB2ZXJzaW9uID0gNDAyXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wMlwiXG5lbmRcbmxldCBvY2FtbF80MDIgOiBPQ2FtbF80MDIudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDAyKVxubW9kdWxlIE9DYW1sXzQwMyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDNcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDMpXG4gIGxldCB2ZXJzaW9uID0gNDAzXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wM1wiXG5lbmRcbmxldCBvY2FtbF80MDMgOiBPQ2FtbF80MDMudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDAzKVxubW9kdWxlIE9DYW1sXzQwNCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDRcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDQpXG4gIGxldCB2ZXJzaW9uID0gNDA0XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNFwiXG5lbmRcbmxldCBvY2FtbF80MDQgOiBPQ2FtbF80MDQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA0KVxubW9kdWxlIE9DYW1sXzQwNSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDVcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDUpXG4gIGxldCB2ZXJzaW9uID0gNDA1XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNVwiXG5lbmRcbmxldCBvY2FtbF80MDUgOiBPQ2FtbF80MDUudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA1KVxubW9kdWxlIE9DYW1sXzQwNiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDZcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDYpXG4gIGxldCB2ZXJzaW9uID0gNDA2XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wNlwiXG5lbmRcbmxldCBvY2FtbF80MDYgOiBPQ2FtbF80MDYudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA2KVxubW9kdWxlIE9DYW1sXzQwNyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDdcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDcpXG4gIGxldCB2ZXJzaW9uID0gNDA3XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wN1wiXG5lbmRcbmxldCBvY2FtbF80MDcgOiBPQ2FtbF80MDcudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA3KVxubW9kdWxlIE9DYW1sXzQwOCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDhcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDgpXG4gIGxldCB2ZXJzaW9uID0gNDA4XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wOFwiXG5lbmRcbmxldCBvY2FtbF80MDggOiBPQ2FtbF80MDgudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA4KVxubW9kdWxlIE9DYW1sXzQwOSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MDlcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MDkpXG4gIGxldCB2ZXJzaW9uID0gNDA5XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4wOVwiXG5lbmRcbmxldCBvY2FtbF80MDkgOiBPQ2FtbF80MDkudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDA5KVxubW9kdWxlIE9DYW1sXzQxMCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTBcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTApXG4gIGxldCB2ZXJzaW9uID0gNDEwXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMFwiXG5lbmRcbmxldCBvY2FtbF80MTAgOiBPQ2FtbF80MTAudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEwKVxubW9kdWxlIE9DYW1sXzQxMSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTFcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTEpXG4gIGxldCB2ZXJzaW9uID0gNDExXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMVwiXG5lbmRcbmxldCBvY2FtbF80MTEgOiBPQ2FtbF80MTEudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDExKVxubW9kdWxlIE9DYW1sXzQxMiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTJcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTIpXG4gIGxldCB2ZXJzaW9uID0gNDEyXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xMlwiXG5lbmRcbmxldCBvY2FtbF80MTIgOiBPQ2FtbF80MTIudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEyKVxubW9kdWxlIE9DYW1sXzQxMyA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTNcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTMpXG4gIGxldCB2ZXJzaW9uID0gNDEzXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xM1wiXG5lbmRcbmxldCBvY2FtbF80MTMgOiBPQ2FtbF80MTMudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDEzKVxubW9kdWxlIE9DYW1sXzQxNCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF80MTRcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF80MTQpXG4gIGxldCB2ZXJzaW9uID0gNDE0XG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNC4xNFwiXG5lbmRcbmxldCBvY2FtbF80MTQgOiBPQ2FtbF80MTQudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNDE0KVxubW9kdWxlIE9DYW1sXzUwMCA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF81MDBcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF81MDApXG4gIGxldCB2ZXJzaW9uID0gNTAwXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNS4wXCJcbmVuZFxubGV0IG9jYW1sXzUwMCA6IE9DYW1sXzUwMC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF81MDApXG5tb2R1bGUgT0NhbWxfNTAxID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzUwMVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzUwMSlcbiAgbGV0IHZlcnNpb24gPSA1MDFcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI1LjFcIlxuZW5kXG5sZXQgb2NhbWxfNTAxIDogT0NhbWxfNTAxLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzUwMSlcbm1vZHVsZSBPQ2FtbF81MDIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNTAyXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNTAyKVxuICBsZXQgdmVyc2lvbiA9IDUwMlxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjUuMlwiXG5lbmRcbmxldCBvY2FtbF81MDIgOiBPQ2FtbF81MDIudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNTAyKVxuKCokKilcblxubGV0IGFsbF92ZXJzaW9ucyA6IChtb2R1bGUgT0NhbWxfdmVyc2lvbikgbGlzdCA9IFtcbiAgKCokZm9yZWFjaF92ZXJzaW9uIChmdW4gbiBfIC0+XG4gICAgICBwcmludGYgXCIobW9kdWxlIE9DYW1sXyVkIDogT0NhbWxfdmVyc2lvbik7XFxuXCIgbikqKVxuKG1vZHVsZSBPQ2FtbF80MDIgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDAzIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDUgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA2IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNyA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDggOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA5IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTEgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEyIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMyA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTQgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNTAwIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzUwMSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF81MDIgOiBPQ2FtbF92ZXJzaW9uKTtcbigqJCopXG5dXG5cbigqJGZvcmVhY2hfdmVyc2lvbl9wYWlyIChmdW4gYSBiIC0+XG4gICAgcHJpbnRmIFwiaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfJWQpKE9DYW1sXyVkKVxcblwiIGEgYjtcbiAgICBwcmludGYgXCIgICAgKEFzdGxpYi5NaWdyYXRlXyVkXyVkKShBc3RsaWIuTWlncmF0ZV8lZF8lZClcXG5cIiBhIGIgYiBhXG4gIClcbiopXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDIpKE9DYW1sXzQwMylcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDAyXzQwMykoQXN0bGliLk1pZ3JhdGVfNDAzXzQwMilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwMykoT0NhbWxfNDA0KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDNfNDA0KShBc3RsaWIuTWlncmF0ZV80MDRfNDAzKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA0KShPQ2FtbF80MDUpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwNF80MDUpKEFzdGxpYi5NaWdyYXRlXzQwNV80MDQpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDUpKE9DYW1sXzQwNilcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA1XzQwNikoQXN0bGliLk1pZ3JhdGVfNDA2XzQwNSlcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNikoT0NhbWxfNDA3KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDZfNDA3KShBc3RsaWIuTWlncmF0ZV80MDdfNDA2KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA3KShPQ2FtbF80MDgpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwN180MDgpKEFzdGxpYi5NaWdyYXRlXzQwOF80MDcpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDgpKE9DYW1sXzQwOSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA4XzQwOSkoQXN0bGliLk1pZ3JhdGVfNDA5XzQwOClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwOSkoT0NhbWxfNDEwKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDlfNDEwKShBc3RsaWIuTWlncmF0ZV80MTBfNDA5KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEwKShPQ2FtbF80MTEpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxMF80MTEpKEFzdGxpYi5NaWdyYXRlXzQxMV80MTApXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTEpKE9DYW1sXzQxMilcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDExXzQxMikoQXN0bGliLk1pZ3JhdGVfNDEyXzQxMSlcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMikoT0NhbWxfNDEzKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTJfNDEzKShBc3RsaWIuTWlncmF0ZV80MTNfNDEyKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEzKShPQ2FtbF80MTQpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxM180MTQpKEFzdGxpYi5NaWdyYXRlXzQxNF80MTMpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTQpKE9DYW1sXzUwMClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDE0XzUwMCkoQXN0bGliLk1pZ3JhdGVfNTAwXzQxNClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzUwMCkoT0NhbWxfNTAxKVxuICAgIChBc3RsaWIuTWlncmF0ZV81MDBfNTAxKShBc3RsaWIuTWlncmF0ZV81MDFfNTAwKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNTAxKShPQ2FtbF81MDIpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzUwMV81MDIpKEFzdGxpYi5NaWdyYXRlXzUwMl81MDEpXG4oKiQqKVxuXG5tb2R1bGUgT0NhbWxfY3VycmVudCA9IE9DYW1sX09DQU1MX1ZFUlNJT05cblxubW9kdWxlIEZpbmRfdmVyc2lvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbXBsIG9mIChtb2R1bGUgT0NhbWxfdmVyc2lvbikgfCBJbnRmIG9mIChtb2R1bGUgT0NhbWxfdmVyc2lvbikgfCBVbmtub3duXG5cbiAgbGV0IGZyb21fbWFnaWMgbWFnaWMgPVxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFVua25vd25cbiAgICAgIHwgKG1vZHVsZSBWZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgOjogdGFpbCAtPlxuICAgICAgICAgIGlmIFZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXIgPSBtYWdpYyB0aGVuXG4gICAgICAgICAgICBJbXBsIChtb2R1bGUgVmVyc2lvbilcbiAgICAgICAgICBlbHNlIGlmIFZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW50Zl9tYWdpY19udW1iZXIgPSBtYWdpYyB0aGVuXG4gICAgICAgICAgICBJbnRmIChtb2R1bGUgVmVyc2lvbilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsb29wIHRhaWxcbiAgICBpblxuICAgICgqIFRyYXZlcnNlIHRoZSB2ZXJzaW9ucyBmcm9tIGxhc3QgdG8gZmlyc3Q6XG4gICAgICAgaWYgdGhlIG1hZ2ljIG51bWJlcnMgYXJlbid0IHVuaXF1ZSBhbW9uZyB2ZXJzaW9ucyxcbiAgICAgICB3ZSB3YW50IHRoZSBsYXRlc3QgdmVyc2lvbiB3aXRoIGEgbWFnaWMgbnVtYmVyIG1hdGNoLlxuICAgICAgIFRoZSBzaXR1YXRpb24gaW4gbWluZCBpcyB0cnVuayBzdXBwb3J0LiAqKVxuICAgICAgbGV0IGFsbF92ZXJzaW9uc190b3BfZG93biA9IExpc3QucmV2IGFsbF92ZXJzaW9ucyBpblxuICAgICAgbG9vcCBhbGxfdmVyc2lvbnNfdG9wX2Rvd25cbmVuZFxuIiwiKCogVGhpcyBmaWxlIGlzIHVzZWQgdG8gY29udHJvbCB3aGF0IHdlIHVzZSBmcm9tIHRoZSBjdXJyZW50IGNvbXBpbGVyIGFuZCB3aGF0IGlzIGVtYmVkIGluXG4gICB0aGlzIGxpYnJhcnkuXG5cbiAgIEl0IG11c3QgYmUgb3BlbmVkIGluIGFsbCBtb2R1bGVzLCBlc3BlY2lhbGx5IHRoZSBvbmVzIGNvbWluZyBmcm9tIHRoZSBjb21waWxlci5cbiopXG5cbigqJCBvcGVuIEFzdF9jaW5hcHNfaGVscGVycyAkKilcblxubW9kdWxlIEpzID0gVmVyc2lvbnMuT0NhbWxfNTAwXG5tb2R1bGUgT2NhbWwgPSBWZXJzaW9ucy5PQ2FtbF9jdXJyZW50XG5cbm1vZHVsZSBTZWxlY3RfYXN0IChPY2FtbCA6IFZlcnNpb25zLk9DYW1sX3ZlcnNpb24pID0gc3RydWN0XG4gIGluY2x1ZGUgSnNcblxuICBtb2R1bGUgVHlwZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdqcywgJ29jYW1sKSB0ID1cbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXNcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS4lcyxcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS4lcyApXFxuXFxcbiAgICAgICAgICAgICAgXFwgICAgICAgICAgICB0XFxuXCJcbiAgICAgICAgICAgICAgKGNhcGl0YWxpemVfYXNjaWkgcykgcyBzXG4gICAgICAgICAgKVxuICAgICAgKilcbiAgICAgIHwgU3RydWN0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFNpZ25hdHVyZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zaWduYXR1cmUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBUb3BsZXZlbF9waHJhc2VcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ29yZV90eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY29yZV90eXBlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNvcmVfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IEV4cHJlc3Npb25cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5leHByZXNzaW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBQYXR0ZXJuXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUucGF0dGVybixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5wYXR0ZXJuIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2FzZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNhc2UsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2FzZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBUeXBlX2V4dGVuc2lvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX2V4cHJcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc19leHByLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc19maWVsZFxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfdHlwZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgTW9kdWxlX2V4cHJcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwciApXG4gICAgICAgICAgICB0XG4gICAgICB8IE1vZHVsZV90eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBTaWduYXR1cmVfaXRlbVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgU3RydWN0dXJlX2l0ZW1cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSApXG4gICAgICAgICAgICB0XG4oKiQqKVxuICAgICAgfCBMaXN0IDogKCdhLCAnYikgdCAtPiAoJ2EgbGlzdCwgJ2IgbGlzdCkgdFxuICAgICAgfCBQYWlyIDogKCdhLCAnYikgdCAqICgnYywgJ2QpIHQgLT4gKCdhICogJ2MsICdiICogJ2QpIHRcbiAgZW5kXG5cbiAgb3BlbiBUeXBlXG4gIG1vZHVsZSBPZl9vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKE9jYW1sKSAoSnMpXG4gIG1vZHVsZSBUb19vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKEpzKSAoT2NhbWwpXG5cbiAgbGV0IHJlYyBvZl9vY2FtbCA6IHR5cGUgb2NhbWwganMuIChqcywgb2NhbWwpIFR5cGUudCAtPiBvY2FtbCAtPiBqcyA9XG4gICAgbGV0IG9wZW4gT2Zfb2NhbWwgaW5cbiAgICBmdW4gbm9kZSAtPlxuICAgICAgbWF0Y2ggbm9kZSB3aXRoXG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICAgICAgICBwcmludGZcbiAgICAgICAgICAgICAgXCIgICAgICB8ICVzIC0+IGNvcHlfJXNcXG5cIlxuICAgICAgICAgICAgICAoY2FwaXRhbGl6ZV9hc2NpaSBzKSBzXG4gICAgICAgICAgKVxuICAgICAgKilcbiAgICAgIHwgU3RydWN0dXJlIC0+IGNvcHlfc3RydWN0dXJlXG4gICAgICB8IFNpZ25hdHVyZSAtPiBjb3B5X3NpZ25hdHVyZVxuICAgICAgfCBUb3BsZXZlbF9waHJhc2UgLT4gY29weV90b3BsZXZlbF9waHJhc2VcbiAgICAgIHwgQ29yZV90eXBlIC0+IGNvcHlfY29yZV90eXBlXG4gICAgICB8IEV4cHJlc3Npb24gLT4gY29weV9leHByZXNzaW9uXG4gICAgICB8IFBhdHRlcm4gLT4gY29weV9wYXR0ZXJuXG4gICAgICB8IENhc2UgLT4gY29weV9jYXNlXG4gICAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4gY29weV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICB8IENsYXNzX2V4cHIgLT4gY29weV9jbGFzc19leHByXG4gICAgICB8IENsYXNzX2ZpZWxkIC0+IGNvcHlfY2xhc3NfZmllbGRcbiAgICAgIHwgQ2xhc3NfdHlwZSAtPiBjb3B5X2NsYXNzX3R5cGVcbiAgICAgIHwgQ2xhc3Nfc2lnbmF0dXJlIC0+IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gICAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gY29weV9jbGFzc190eXBlX2ZpZWxkXG4gICAgICB8IE1vZHVsZV9leHByIC0+IGNvcHlfbW9kdWxlX2V4cHJcbiAgICAgIHwgTW9kdWxlX3R5cGUgLT4gY29weV9tb2R1bGVfdHlwZVxuICAgICAgfCBTaWduYXR1cmVfaXRlbSAtPiBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gICAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IGNvcHlfc3RydWN0dXJlX2l0ZW1cbigqJCopXG4gICAgICB8IExpc3QgdCAtPiBMaXN0Lm1hcCAob2Zfb2NhbWwgdClcbiAgICAgIHwgUGFpciAoYSwgYikgLT5cbiAgICAgICAgICBsZXQgZiA9IG9mX29jYW1sIGEgaW5cbiAgICAgICAgICBsZXQgZyA9IG9mX29jYW1sIGIgaW5cbiAgICAgICAgICBmdW4gKHgsIHkpIC0+IChmIHgsIGcgeSlcblxuICBsZXQgcmVjIHRvX29jYW1sIDogdHlwZSBvY2FtbCBqcy4gKGpzLCBvY2FtbCkgVHlwZS50IC0+IGpzIC0+IG9jYW1sID1cbiAgICBsZXQgb3BlbiBUb19vY2FtbCBpblxuICAgIGZ1biBub2RlIC0+XG4gICAgICBtYXRjaCBub2RlIHdpdGhcbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXMgLT4gY29weV8lc1xcblwiXG4gICAgICAgICAgICAgIChjYXBpdGFsaXplX2FzY2lpIHMpIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmUgLT4gY29weV9zdHJ1Y3R1cmVcbiAgICAgIHwgU2lnbmF0dXJlIC0+IGNvcHlfc2lnbmF0dXJlXG4gICAgICB8IFRvcGxldmVsX3BocmFzZSAtPiBjb3B5X3RvcGxldmVsX3BocmFzZVxuICAgICAgfCBDb3JlX3R5cGUgLT4gY29weV9jb3JlX3R5cGVcbiAgICAgIHwgRXhwcmVzc2lvbiAtPiBjb3B5X2V4cHJlc3Npb25cbiAgICAgIHwgUGF0dGVybiAtPiBjb3B5X3BhdHRlcm5cbiAgICAgIHwgQ2FzZSAtPiBjb3B5X2Nhc2VcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgIHwgVHlwZV9leHRlbnNpb24gLT4gY29weV90eXBlX2V4dGVuc2lvblxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgIHwgQ2xhc3NfZXhwciAtPiBjb3B5X2NsYXNzX2V4cHJcbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4gY29weV9jbGFzc19maWVsZFxuICAgICAgfCBDbGFzc190eXBlIC0+IGNvcHlfY2xhc3NfdHlwZVxuICAgICAgfCBDbGFzc19zaWduYXR1cmUgLT4gY29weV9jbGFzc19zaWduYXR1cmVcbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgICAgIHwgTW9kdWxlX2V4cHIgLT4gY29weV9tb2R1bGVfZXhwclxuICAgICAgfCBNb2R1bGVfdHlwZSAtPiBjb3B5X21vZHVsZV90eXBlXG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gY29weV9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgICAgIHwgTGlzdCB0IC0+IExpc3QubWFwICh0b19vY2FtbCB0KVxuICAgICAgfCBQYWlyIChhLCBiKSAtPlxuICAgICAgICAgIGxldCBmID0gdG9fb2NhbWwgYSBpblxuICAgICAgICAgIGxldCBnID0gdG9fb2NhbWwgYiBpblxuICAgICAgICAgIGZ1biAoeCwgeSkgLT4gKGYgeCwgZyB5KVxuXG4gIGxldCBvZl9vY2FtbF9tYXBwZXIgaXRlbSBmIGN0eHQgeCA9IHRvX29jYW1sIGl0ZW0geCB8PiBmIGN0eHQgfD4gb2Zfb2NhbWwgaXRlbVxuICBsZXQgdG9fb2NhbWxfbWFwcGVyIGl0ZW0gZiBjdHh0IHggPSBvZl9vY2FtbCBpdGVtIHggfD4gZiBjdHh0IHw+IHRvX29jYW1sIGl0ZW1cbmVuZFxuXG5tb2R1bGUgU2VsZWN0ZWRfYXN0ID0gU2VsZWN0X2FzdCAoT2NhbWwpXG5tb2R1bGUgQXN0X2hlbHBlciA9IEFzdF9oZWxwZXJfbGl0ZVxuXG4oKiBNb2R1bGVzIGZyb20gQXN0XzxuPiBvZiBBc3RsaWIsIHdoZXJlIDxuPiBpcyB0aGUgY29tcGlsZXIgdmVyc2lvbiB0aGUgcHB4bGliIGRyaXZlciBpcyBjb21waWxlZCB3aXRoICopXG5tb2R1bGUgUGFyc2V0cmVlID0gU2VsZWN0ZWRfYXN0LkFzdC5QYXJzZXRyZWVcbm1vZHVsZSBBc3R0eXBlcyA9IFNlbGVjdGVkX2FzdC5Bc3QuQXN0dHlwZXNcblxuKCogT3RoZXIgQXN0bGliIG1vZHVsZXMgKilcbm1vZHVsZSBMb2NhdGlvbiA9IEFzdGxpYi5Mb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IEFzdGxpYi5Mb25naWRlbnRcblxubW9kdWxlIFBhcnNlID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0bGliLlBhcnNlXG4gIG1vZHVsZSBPZl9vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKE9jYW1sKSAoSnMpXG5cbiAgbGV0IGltcGxlbWVudGF0aW9uIGxleGJ1ZiA9IGltcGxlbWVudGF0aW9uIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3N0cnVjdHVyZVxuICBsZXQgaW50ZXJmYWNlIGxleGJ1ZiA9IGludGVyZmFjZSBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9zaWduYXR1cmVcblxuICBsZXQgdG9wbGV2ZWxfcGhyYXNlIGxleGJ1ZiA9XG4gICAgdG9wbGV2ZWxfcGhyYXNlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3RvcGxldmVsX3BocmFzZVxuXG4gIGxldCB1c2VfZmlsZSBsZXhidWYgPVxuICAgIHVzZV9maWxlIGxleGJ1ZiB8PiBMaXN0Lm1hcCBPZl9vY2FtbC5jb3B5X3RvcGxldmVsX3BocmFzZVxuXG4gIGxldCBjb3JlX3R5cGUgbGV4YnVmID0gY29yZV90eXBlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X2NvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiBsZXhidWYgPSBleHByZXNzaW9uIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X2V4cHJlc3Npb25cbiAgbGV0IHBhdHRlcm4gbGV4YnVmID0gcGF0dGVybiBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9wYXR0ZXJuXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgZGVmYXVsdF9wcmludF93YXJuaW5nIF9sb2MgPSAoKVxubGV0IGFib3V0X2l0ZV9icmFuY2hfcmVmID0gcmVmIGRlZmF1bHRfcHJpbnRfd2FybmluZ1xubGV0IGNhcmVfYWJvdXRfaXRlX2JyYW5jaCA9IHJlZiBmYWxzZVxubGV0IGFib3V0X2l0ZV9icmFuY2ggbG9jID0gIWFib3V0X2l0ZV9icmFuY2hfcmVmIGxvY1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogRGVmaW5pdGlvbiBvZiB0aGUgT0NhbWwgQVNUICopXG5cbm9wZW4gSW1wb3J0XG5cbigqIFRoaXMgZmlsZSBpcyBvYnRhaW5lZCBieTpcblxuICAgLSBjb3B5aW5nIGEgc3Vic2V0IG9mIHRoZSBjb3JyZXNwb25kaW5nIGFzdF94eHgubWwgZmlsZSBmcm9tIEFzdGxpYlxuICAgKHN1Yi1tb2R1bGVzIEFzdHR5cGVzIGFuZCBQYXJzZXRyZWUpXG4gICAtIGFkZGluZyB0aGUgdHlwZSBkZWZpbml0aW9ucyBmb3IgcG9zaXRpb24sIGxvY2F0aW9uLCBsb2MgYW5kIGxvbmdpZGVudFxuICAgLSBmbGF0dGVuaW5nIGFsbCB0aGUgbW9kdWxlc1xuICAgLSByZW1vdmluZyBBc3R0eXBlcy5jb25zdGFudCAodW51c2VkIGFuZCBjb25mbGljdHMgd2l0aCBQYXJzZXRyZWUuY29uc3RhbnQpXG4gICAtIHJlbmFtaW5nIGEgZmV3IHR5cGVzOlxuICAgLSAtIExvY2F0aW9uLnQgLT4gbG9jYXRpb25cbiAgIC0gLSBMb25naWRlbnQudCAtPiBsb25naWRlbnRcbiAgIC0gYWRkaW5nIGEgdHlwZSBsb25naWRlbnRfbG9jID0gbG9uZ2lkZW50IGxvYyBhbmQgcmVwbGFjaW5nIGFsbCB0aGUgb2NjdXJyZW5jZXMgb2YgdGhlXG4gICBsYXR0ZXIgYnkgdGhlIGZvcm1lci4gVGhpcyBpcyBzbyB0aGF0IHdlIGNhbiBvdmVycmlkZSBpdGVyYXRpb24gYW4gdGhlIGxldmVsIG9mIGFcbiAgIGxvbmdpZGVudCBsb2NcbiAgIC0gYWRkaW5nIGEgdHlwZSBjYXNlcyA9IGNhc2UgbGlzdFxuICAgLSByZXBsYWNpbmcgYWxsIG9jY3VyZW5jZXMgb2YgXCJjYXNlIGxpc3RcIiBieSBcImNhc2VzXCJcbiAgIC0gcmVwbGFjaW5nIGFsbCB0aGUgKCpJRl9DVVJSRU5UID0gRm9vLmJhciopIGJ5OiA9IEZvby5iYXJcbiAgIC0gcmVtb3ZpbmcgdGhlIGV4dHJhIHZhbHVlcyBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlXG4gICAtIHJlcGxhY2luZyBhcHAgW3R5cGUgLi4uXSBieSBbYW5kIC4uLl0gdG8gbWFrZSBldmVyeXRoaW5nIG9uZSByZWN1cnNpdmUgYmxvY2tcbiAgIC0gYWRkaW5nIFtAQGRlcml2aW5nX2lubGluZSB0cmF2ZXJzZV1bQEBAZW5kXSBhdCB0aGUgZW5kXG5cbiAgIFRvIHVwZGF0ZSBpdCB0byBhIG5ld2VyIE9DYW1sIHZlcnNpb24sIGNyZWF0ZSBhIG5ldyBtb2R1bGUgd2l0aCB0aGUgYWJvdmUgZnJvbSB0aGVcbiAgIGxhdGVzdCBjb21waWxlciBhbmQgYWRkIHRoZSBmb2xsb3dpbmcgbW9kdWxlIGRlZmluaXRpb25zIGFuZCBvcGVucyB0byBnZXQgaXQgdG9cbiAgIGNvbXBpbGU6XG4gICBbe1xuICAgIG1vZHVsZSBBc3QgPSBWZXJzaW9ucy5PQ2FtbF80eHhcbiAgICBvcGVuIEFzdC5Bc3RcbiAgICBtb2R1bGUgTG9jYXRpb24gICA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvblxuICAgIG1vZHVsZSBMb25naWRlbnQgPSBPY2FtbF9jb21tb24uTG9uZ2lkZW50XG4gICB9XVxuXG4gICBPbmNlIHlvdSBoYXZlIGdlbmVyYXRlZCB0aGUgaW5saW5lZCBkZXJpdmVkIHRyYXZlcnNhbCBjbGFzc2VzIGJ5IHJ1bm5pbmdcbiAgIFt7IGR1bmUgYnVpbGQgQGxpbnQgfV0geW91IGNhbiByZXBsYWNlIHRoZSBhYm92ZSBtZW50aW9uZWQgbW9kdWxlIGRlZmluaXRpb25zIGJ5IGFcbiAgIFtvcGVuIEltcG9ydF0gYW5kIHVwZGF0ZSBbSW1wb3J0XSBzbyB0aGF0IHRoZSBbSnNdIG1vZHVsZSBwb2ludHMgdG9cbiAgIFtWZXJzaW9ucy5PQ2FtbF80eHhdLlxuKilcblxuKCogU291cmNlIGNvZGUgbG9jYXRpb25zIChyYW5nZXMgb2YgcG9zaXRpb25zKSwgdXNlZCBpbiBwYXJzZXRyZWUuICopXG5cbnR5cGUgcG9zaXRpb24gPSBMZXhpbmcucG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5hbmQgbG9jYXRpb24gPSBMb2NhdGlvbi50ID0ge1xuICBsb2Nfc3RhcnQgOiBwb3NpdGlvbjtcbiAgbG9jX2VuZCA6IHBvc2l0aW9uO1xuICBsb2NfZ2hvc3QgOiBib29sO1xufVxuXG5hbmQgbG9jYXRpb25fc3RhY2sgPSBsb2NhdGlvbiBsaXN0XG5cbigqIE5vdGUgb24gdGhlIHVzZSBvZiBMZXhpbmcucG9zaXRpb24gaW4gdGhpcyBtb2R1bGUuXG4gICBJZiBbcG9zX2ZuYW1lID0gXCJcIl0sIHRoZW4gdXNlIFshaW5wdXRfbmFtZV0gaW5zdGVhZC5cbiAgIElmIFtwb3NfbG51bSA9IC0xXSwgdGhlbiBbcG9zX2JvbCA9IDBdLiBVc2UgW3Bvc19jbnVtXSBhbmRcbiAgIHJlLXBhcnNlIHRoZSBmaWxlIHRvIGdldCB0aGUgbGluZSBhbmQgY2hhcmFjdGVyIG51bWJlcnMuXG4gICBFbHNlIGFsbCBmaWVsZHMgYXJlIGNvcnJlY3QuXG4qKVxuYW5kICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IGxvY2F0aW9uIH1cblxuKCogTG9uZyBpZGVudGlmaWVycywgdXNlZCBpbiBwYXJzZXRyZWUuICopXG5hbmQgbG9uZ2lkZW50ID0gTG9uZ2lkZW50LnQgPVxuICB8IExpZGVudCBvZiBzdHJpbmdcbiAgfCBMZG90IG9mIGxvbmdpZGVudCAqIHN0cmluZ1xuICB8IExhcHBseSBvZiBsb25naWRlbnQgKiBsb25naWRlbnRcblxuYW5kIGxvbmdpZGVudF9sb2MgPSBsb25naWRlbnQgbG9jXG5cbigqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbmFuZCByZWNfZmxhZyA9IEFzdHR5cGVzLnJlY19mbGFnID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbmFuZCBkaXJlY3Rpb25fZmxhZyA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gVXB0byB8IERvd250b1xuXG4oKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbmFuZCBwcml2YXRlX2ZsYWcgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBQcml2YXRlIHwgUHVibGljXG5hbmQgbXV0YWJsZV9mbGFnID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuYW5kIHZpcnR1YWxfZmxhZyA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuYW5kIG92ZXJyaWRlX2ZsYWcgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gT3ZlcnJpZGUgfCBGcmVzaFxuYW5kIGNsb3NlZF9mbGFnID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBDbG9zZWQgfCBPcGVuXG5hbmQgbGFiZWwgPSBzdHJpbmdcblxuYW5kIGFyZ19sYWJlbCA9IEFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIHwgTm9sYWJlbFxuICB8IExhYmVsbGVkIG9mIHN0cmluZyAgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgfCBPcHRpb25hbCBvZiBzdHJpbmcgICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG5hbmQgdmFyaWFuY2UgPSBBc3R0eXBlcy52YXJpYW5jZSA9IENvdmFyaWFudCB8IENvbnRyYXZhcmlhbnQgfCBOb1ZhcmlhbmNlXG5hbmQgaW5qZWN0aXZpdHkgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSA9IEluamVjdGl2ZSB8IE5vSW5qZWN0aXZpdHlcblxuKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuYW5kIGNvbnN0YW50ID0gUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLiBTdWZmaXhlcyBleGNlcHRcbiAgICAgICAgICBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIgKilcbiAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBsb2NhdGlvbiAqIHN0cmluZyBvcHRpb25cbiAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuICopXG4gIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLiBTdWZmaXhlcyBhcmUgcmVqZWN0ZWRcbiAgICAgICAgICBieSB0aGUgdHlwZWNoZWNrZXIuICopXG5cbigqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG5hbmQgYXR0cmlidXRlID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSA9IHtcbiAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgYXR0cl9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tAaWQgQVJHXV0gYW5kIFtbQEBpZCBBUkddXS5cblxuICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC4gVGhlIGNvbXBpbGVyIGlnbm9yZXNcbiAgICB1bmtub3duIGF0dHJpYnV0ZXMuICopXG5cbmFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuICopXG5cbmFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuYW5kIHBheWxvYWQgPSBQYXJzZXRyZWUucGF5bG9hZCA9XG4gIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogWz8gUF0gb3IgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbigqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbmFuZCBjb3JlX3R5cGUgPSBQYXJzZXRyZWUuY29yZV90eXBlID0ge1xuICBwdHlwX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYztcbiAgcHR5cF9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5cF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcHR5cF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjb3JlX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSxcbiAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWRdfSxcbiAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWxdfS4gKilcbiAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV0gcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZVxuICAgICAgICAgIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uICopXG4gIHwgUHR5cF9jb25zdHIgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt0Y29uc3RyXSB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAtIFtUIHRjb25zdHJdIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS4gKilcbiAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9IFtDbG9zZWRdfSxcbiAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfS4gKilcbiAgfCBQdHlwX2NsYXNzIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbI3Rjb25zdHJdIHdoZW4gW2w9W11dLFxuICAgICAgICAgIC0gW1QgI3Rjb25zdHJdIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uICopXG4gIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgICgqKiBbVCBhcyAnYV0uICopXG4gIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1sgYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW1s+IGBBfGBCIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59IFtPcGVuXX0sXG4gICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW1s8IGBBfGBCIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1cbiAgICAgICAgICAgIFtDbG9zZWRdfSwgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1cbiAgICAgICAgICAgIFtDbG9zZWRdfSwgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLiAqKVxuICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1cbiAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gYSBjb25zdHJhaW50IG9uIGFcbiAgICAgICAgICAgIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAge1tcbiAgICAgICAgICAgIGxldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLlxuICAgICAgICAgIF19XG4gICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfSBbQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVxuICAgICAgICAgICAgW1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9IFtQZXhwX3BvbHldfVxuICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfSBbcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH0gW1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9IFtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS4gKilcbiAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbmFuZCBwYWNrYWdlX3R5cGUgPSBsb25naWRlbnRfbG9jICogKGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUpIGxpc3RcbigqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuXG4gICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldIHJlcHJlc2VudHNcbiAgICAgIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLiAqKVxuXG5hbmQgcm93X2ZpZWxkID0gUGFyc2V0cmVlLnJvd19maWVsZCA9IHtcbiAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgcHJmX2xvYyA6IGxvY2F0aW9uO1xuICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG5cbmFuZCByb3dfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbYl0gaXMgW3RydWVdIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAtIFtgQSBvZiBUXSB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGEgY29uc3RhbnQgKGVtcHR5KVxuICAgICAgICAgICAgY29uc3RydWN0b3IuXG4gICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3IgKHNlZVxuICAgICAgICAgICAgNC4yIGluIHRoZSBtYW51YWwpICopXG4gIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbmFuZCBvYmplY3RfZmllbGQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkID0ge1xuICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICBwb2ZfbG9jIDogbG9jYXRpb247XG4gIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIG9iamVjdF9maWVsZF9kZXNjID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4oKiogezIgUGF0dGVybnN9ICopXG5cbmFuZCBwYXR0ZXJuID0gUGFyc2V0cmVlLnBhdHRlcm4gPSB7XG4gIHBwYXRfZGVzYyA6IHBhdHRlcm5fZGVzYztcbiAgcHBhdF9sb2MgOiBsb2NhdGlvbjtcbiAgcHBhdF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcHBhdF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBwYXR0ZXJuX2Rlc2MgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjID1cbiAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXIgYnV0IHJlamVjdGVkIGJ5XG4gICAgICAgICAgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0gKilcbiAgfCBQcGF0X2NvbnN0cnVjdCBvZiBsb25naWRlbnRfbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW0NdIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtDIFBdIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV0gKilcbiAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXSAqKVxuICB8IFBwYXRfcmVjb3JkIG9mIChsb25naWRlbnRfbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9IFtDbG9zZWRdfVxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gIHwgUHBhdF90eXBlIG9mIGxvbmdpZGVudF9sb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgfCBQcGF0X29wZW4gb2YgbG9uZ2lkZW50X2xvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG5hbmQgZXhwcmVzc2lvbiA9IFBhcnNldHJlZS5leHByZXNzaW9uID0ge1xuICBwZXhwX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2M7XG4gIHBleHBfbG9jIDogbG9jYXRpb247XG4gIHBleHBfbG9jX3N0YWNrIDogbG9jYXRpb25fc3RhY2s7XG4gIHBleHBfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgZXhwcmVzc2lvbl9kZXNjID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIHwgUGV4cF9pZGVudCBvZiBsb25naWRlbnRfbG9jICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdICopXG4gIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sXG4gICAgICAgICAgWzFuXSAqKVxuICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9IFtSZWN1cnNpdmVdfS4gKilcbiAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2Z1bihsYmwsIGV4cDAsIFAsIEUxKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVxuICAgICAgICAgICAgW05vbGFiZWxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBFMV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9IFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpc1xuICAgICAgICAgICAgW1NvbWUgRTBdXG5cbiAgICAgICAgICBOb3RlczpcblxuICAgICAgICAgIC0gSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seSB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59IFtQZXhwX2Z1bl19LlxuICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZyB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59XG4gICAgICAgICAgICBbUGV4cF9mdW5dfS4gKilcbiAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXSByZXByZXNlbnRzXG4gICAgICAgICAgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgW2xpXSBjYW4gYmUge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9IFtOb2xhYmVsXX0gKG5vbiBsYWJlbGVkXG4gICAgICAgICAgYXJndW1lbnQpLCB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9IFtMYWJlbGxlZF19IChsYWJlbGxlZFxuICAgICAgICAgIGFyZ3VtZW50cykgb3Ige3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfSBbT3B0aW9uYWxdfSAob3B0aW9uYWxcbiAgICAgICAgICBhcmd1bWVudCkuXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0gKilcbiAgfCBQZXhwX2NvbnN0cnVjdCBvZiBsb25naWRlbnRfbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW0NdIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW0MgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldICopXG4gIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdICopXG4gIHwgUGV4cF9yZWNvcmQgb2YgKGxvbmdpZGVudF9sb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogbG9uZ2lkZW50X2xvYyAgKCoqIFtFLmxdICopXG4gIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogbG9uZ2lkZW50X2xvYyAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXSB3aGVuIFtkaXJlY3Rpb25dIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfSBbVXB0b119XG4gICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV0gd2hlbiBbZGlyZWN0aW9uXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfSBbRG93bnRvXX0gKilcbiAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG5cbiAgICAgICAgICAtIFsoRSA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS4gKilcbiAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgfCBQZXhwX25ldyBvZiBsb25naWRlbnRfbG9jICAoKiogW25ldyBNLmNdICopXG4gIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfSBbQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgIHZhbHVlcykuICopXG4gIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuYW5kIGNhc2UgPSBQYXJzZXRyZWUuY2FzZSA9IHtcbiAgcGNfbGhzIDogcGF0dGVybjtcbiAgcGNfZ3VhcmQgOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgcGNfcmhzIDogZXhwcmVzc2lvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuYW5kIGxldG9wID0gUGFyc2V0cmVlLmxldG9wID0ge1xuICBsZXRfIDogYmluZGluZ19vcDtcbiAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgYm9keSA6IGV4cHJlc3Npb247XG59XG5cbmFuZCBiaW5kaW5nX29wID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgPSB7XG4gIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgcGJvcF9sb2MgOiBsb2NhdGlvbjtcbn1cblxuKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuYW5kIHZhbHVlX2Rlc2NyaXB0aW9uID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID0ge1xuICBwdmFsX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwdmFsX3R5cGUgOiBjb3JlX3R5cGU7XG4gIHB2YWxfcHJpbSA6IHN0cmluZyBsaXN0O1xuICBwdmFsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwdmFsX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG5cbiAgICAtIFt2YWwgeDogVF0sIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfSBbcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl0gd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19XG4gICAgICBbcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV0gKilcblxuKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID0ge1xuICBwdHlwZV9uYW1lIDogc3RyaW5nIGxvYztcbiAgcHR5cGVfcGFyYW1zIDogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gIHB0eXBlX2NzdHJzIDogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIGxvY2F0aW9uKSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgcHR5cGVfa2luZCA6IHR5cGVfa2luZDtcbiAgcHR5cGVfcHJpdmF0ZSA6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gIHB0eXBlX21hbmlmZXN0IDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gIHB0eXBlX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwdHlwZV9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sIGZvciB2YXJpb3VzXG4gICAge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfSBbcHR5cGVfa2luZF19IGFuZFxuICAgIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9IFtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcblxuICAgIC0gW3R5cGUgdF0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9XG4gICAgICBbUHR5cGVfYWJzdHJhY3RdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwXSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1cbiAgICAgIFtQdHlwZV9hYnN0cmFjdF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVxuICAgICAgW1B0eXBlX3ZhcmlhbnRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXSB3aGVuIFt0eXBlX2tpbmRdIGlzXG4gICAgICB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH0gW1B0eXBlX3ZhcmlhbnRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW1NvbWUgVDBdLFxuICAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9XG4gICAgICBbUHR5cGVfcmVjb3JkXX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXSxcbiAgICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV0gd2hlbiBbdHlwZV9raW5kXSBpc1xuICAgICAge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH0gW1B0eXBlX3JlY29yZF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0gLi5dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59IFtQdHlwZV9vcGVuXX0sXG4gICAgICBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0uICopXG5cbmFuZCB0eXBlX2tpbmQgPSBQYXJzZXRyZWUudHlwZV9raW5kID1cbiAgfCBQdHlwZV9hYnN0cmFjdFxuICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICB8IFB0eXBlX29wZW5cblxuYW5kIGxhYmVsX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID0ge1xuICBwbGRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBsZF9tdXRhYmxlIDogbXV0YWJsZV9mbGFnO1xuICBwbGRfdHlwZSA6IGNvcmVfdHlwZTtcbiAgcGxkX2xvYyA6IGxvY2F0aW9uO1xuICBwbGRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtAaWQxXSBbQGlkMl1dICopXG59XG4oKiogLSBbeyAuLi47IGw6IFQ7IC4uLiB9XSB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfSBbcGxkX211dGFibGVdfVxuICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX0gW0ltbXV0YWJsZV19LFxuICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XSB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVxuICAgICAgW3BsZF9tdXRhYmxlXX0gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9IFtNdXRhYmxlXX0uXG5cbiAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fSBbUHR5cF9wb2x5XX0uICopXG5cbmFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IHtcbiAgcGNkX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwY2RfdmFycyA6IHN0cmluZyBsb2MgbGlzdDtcbiAgcGNkX2FyZ3MgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gIHBjZF9yZXMgOiBjb3JlX3R5cGUgb3B0aW9uO1xuICBwY2RfbG9jIDogbG9jYXRpb247XG4gIHBjZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufSByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvclxuICAgICAgICAgIGFyZ3VtZW50cyBvZjpcblxuICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbiBbcmVzID0gTm9uZV0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgLSBbQzogVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLCBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgLSBbQyBvZiB7Li4ufV0gd2hlbiBbcmVzID0gTm9uZV0sIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgICAgICAgLSBbQzogey4uLn0gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLCBhbmRcbiAgICAgICAgICAgIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS4gKilcblxuYW5kIHR5cGVfZXh0ZW5zaW9uID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID0ge1xuICBwdHlleHRfcGF0aCA6IGxvbmdpZGVudF9sb2M7XG4gIHB0eWV4dF9wYXJhbXMgOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICBwdHlleHRfY29uc3RydWN0b3JzIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gIHB0eWV4dF9wcml2YXRlIDogcHJpdmF0ZV9mbGFnO1xuICBwdHlleHRfbG9jIDogbG9jYXRpb247XG4gIHB0eWV4dF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG59XG4oKiogRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgKFt0eXBlIHQgKz0gLi4uXSkuICopXG5cbmFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0ge1xuICBwZXh0X25hbWUgOiBzdHJpbmcgbG9jO1xuICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgcGV4dF9sb2MgOiBsb2NhdGlvbjtcbiAgcGV4dF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIHR5cGVfZXhjZXB0aW9uID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID0ge1xuICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gIHB0eWV4bl9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID1cbiAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV0gZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvblxuICAgICAgICAgIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG5cbiAgICAgICAgICB7dWxcbiAgICAgICAgICAgey0gW0Mgb2YgVDEgKiAuLi4gKiBUbl1cbiAgICAgICAgICAgICAgd2hlbjpcblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW05vbmVdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiBUMF1cbiAgICAgICAgICAgICAgd2hlblxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgICB7LSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICB9ICopXG4gIHwgUGV4dF9yZWJpbmQgb2YgbG9uZ2lkZW50X2xvY1xuICAgICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbigqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbigqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbmFuZCBjbGFzc190eXBlID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgPSB7XG4gIHBjdHlfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYztcbiAgcGN0eV9sb2MgOiBsb2NhdGlvbjtcbiAgcGN0eV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc190eXBlX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgfCBQY3R5X2NvbnN0ciBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiAtIFtjXVxuICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1QgLT4gQ1RdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9IFtOb2xhYmVsXX0sXG4gICAgICAgICAgLSBbfmw6VCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWQgbF19LFxuICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsIGxdfS4gKilcbiAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG5hbmQgY2xhc3Nfc2lnbmF0dXJlID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9IHtcbiAgcGNzaWdfc2VsZiA6IGNvcmVfdHlwZTtcbiAgcGNzaWdfZmllbGRzIDogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9IFtwY3NpZ19zZWxmXX0gaXNcbiAgICAgIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fSBbUHR5cF9hbnldfSAqKVxuXG5hbmQgY2xhc3NfdHlwZV9maWVsZCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID0ge1xuICBwY3RmX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gIHBjdGZfbG9jIDogbG9jYXRpb247XG4gIHBjdGZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX0gW1B0eXBfcG9seV19LiAqKVxuICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuYW5kICdhIGNsYXNzX2luZm9zID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zID0ge1xuICBwY2lfdmlydCA6IHZpcnR1YWxfZmxhZztcbiAgcGNpX3BhcmFtcyA6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gIHBjaV9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGNpX2V4cHIgOiAnYTtcbiAgcGNpX2xvYyA6IGxvY2F0aW9uO1xuICBwY2lfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLiAqKVxuXG5hbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5hbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbmFuZCBjbGFzc19leHByID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgPSB7XG4gIHBjbF9kZXNjIDogY2xhc3NfZXhwcl9kZXNjO1xuICBwY2xfbG9jIDogbG9jYXRpb247XG4gIHBjbF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc19leHByX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgfCBQY2xfY29uc3RyIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9XG4gICAgICAgICAgICBbTm9sYWJlbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH0gW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzXG4gICAgICAgICAgICBbU29tZSBFMF0uICopXG4gIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXSByZXByZXNlbnRzXG4gICAgICAgICAgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS4gW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvclxuICAgICAgICAgIHN0YXJ0IHdpdGggWz9dIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9IFtSZWN1cnNpdmVdfS4gKilcbiAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuYW5kIGNsYXNzX3N0cnVjdHVyZSA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPSB7XG4gIHBjc3RyX3NlbGYgOiBwYXR0ZXJuO1xuICBwY3N0cl9maWVsZHMgOiBjbGFzc19maWVsZCBsaXN0O1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuXG4gICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9IFtwY3N0cl9zZWxmXX0gaXNcbiAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX0gW1BwYXRfYW55XX0gKilcblxuYW5kIGNsYXNzX2ZpZWxkID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID0ge1xuICBwY2ZfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gIHBjZl9sb2MgOiBsb2NhdGlvbjtcbiAgcGNmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuXG5hbmQgY2xhc3NfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2luaGVyaXQgQ0VdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9XG4gICAgICAgICAgICBbRnJlc2hdfSBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9XG4gICAgICAgICAgICBbRnJlc2hdfSBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgIC0gW2luaGVyaXQhIENFXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVxuICAgICAgICAgICAgW092ZXJyaWRlXX0gYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9IFtPdmVycmlkZV19IGFuZCBbc10gaXMgW1NvbWUgeF0gKilcbiAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt2YWwgeCA9IEVdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9XG4gICAgICAgICAgICBbSW1tdXRhYmxlXX0gYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1cbiAgICAgICAgICAgIFtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX0gW0ltbXV0YWJsZV19IGFuZCBba2luZF0gaXNcbiAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVxuICAgICAgICAgICAgW011dGFibGVdfSBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVxuICAgICAgICAgICAgW0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfSBbTXV0YWJsZV19IGFuZCBba2luZF0gaXNcbiAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbChUKV19ICopXG4gIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1cbiAgICAgICAgICAgIFtQZXhwX3BvbHldfSlcbiAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXSAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1cbiAgICAgICAgICAgIFtQdHlwX3BvbHldfSkgKilcbiAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuYW5kIGNsYXNzX2ZpZWxkX2tpbmQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbmFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbigqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG5hbmQgbW9kdWxlX3R5cGUgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgPSB7XG4gIHBtdHlfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2M7XG4gIHBtdHlfbG9jIDogbG9jYXRpb247XG4gIHBtdHlfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgbW9kdWxlX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgfCBQbXR5X2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICB8IFBtdHlfYWxpYXMgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG5hbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICB8IFVuaXQgICgqKiBbKCldICopXG4gIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG5hbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG5hbmQgc2lnbmF0dXJlX2l0ZW0gPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPSB7XG4gIHBzaWdfZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gIHBzaWdfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBzaWduYXR1cmVfaXRlbV9kZXNjID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdICopXG4gIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICopXG4gIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAqKVxuICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPSB7XG4gIHBtZF9uYW1lIDogc3RyaW5nIG9wdGlvbiBsb2M7XG4gIHBtZF90eXBlIDogbW9kdWxlX3R5cGU7XG4gIHBtZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG1kX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9IHtcbiAgcG1zX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwbXNfbWFuaWZlc3QgOiBsb25naWRlbnRfbG9jO1xuICBwbXNfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHBtc19sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG5hbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSB7XG4gIHBtdGRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBtdGRfdHlwZSA6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgcG10ZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG10ZF9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtTID0gTVRdLFxuICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgd2hlblxuICAgICAge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfSBbcG10ZF90eXBlXX0gaXMgW05vbmVdLiAqKVxuXG5hbmQgJ2Egb3Blbl9pbmZvcyA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zID0ge1xuICBwb3Blbl9leHByIDogJ2E7XG4gIHBvcGVuX292ZXJyaWRlIDogb3ZlcnJpZGVfZmxhZztcbiAgcG9wZW5fbG9jIDogbG9jYXRpb247XG4gIHBvcGVuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfSBbcG9wZW5fb3ZlcnJpZGVdfSBpc1xuICAgICAge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX0gW092ZXJyaWRlXX0gKHNpbGVuY2VzIHRoZSBcInVzZWRcbiAgICAgIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9IFtwb3Blbl9vdmVycmlkZV19IGlzXG4gICAgICB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofSBbRnJlc2hdfSAqKVxuXG5hbmQgb3Blbl9kZXNjcmlwdGlvbiA9IGxvbmdpZGVudF9sb2Mgb3Blbl9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiBNLk5dXG4gICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbmFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiBNLk5dXG4gICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuYW5kICdhIGluY2x1ZGVfaW5mb3MgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9IHtcbiAgcGluY2xfbW9kIDogJ2E7XG4gIHBpbmNsX2xvYyA6IGxvY2F0aW9uO1xuICBwaW5jbF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbmFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG5hbmQgd2l0aF9jb25zdHJhaW50ID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIHwgUHdpdGhfdHlwZSBvZiBsb25naWRlbnRfbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaCB0aGUgbmFtZSBvZiB0aGVcbiAgICAgICAgICB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICB8IFB3aXRoX21vZHVsZSBvZiBsb25naWRlbnRfbG9jICogbG9uZ2lkZW50X2xvYyAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICB8IFB3aXRoX21vZHR5cGUgb2YgbG9uZ2lkZW50X2xvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gIHwgUHdpdGhfdHlwZXN1YnN0IG9mIGxvbmdpZGVudF9sb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gIHwgUHdpdGhfbW9kc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIGxvbmdpZGVudF9sb2NcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbigqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuYW5kIG1vZHVsZV9leHByID0gUGFyc2V0cmVlLm1vZHVsZV9leHByID0ge1xuICBwbW9kX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjO1xuICBwbW9kX2xvYyA6IGxvY2F0aW9uO1xuICBwbW9kX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIG1vZHVsZV9leHByX2Rlc2MgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIHwgUG1vZF9pZGVudCBvZiBsb25naWRlbnRfbG9jICAoKiogW1hdICopXG4gIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG5hbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG5hbmQgc3RydWN0dXJlX2l0ZW0gPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPSB7XG4gIHBzdHJfZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gIHBzdHJfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9IFtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuYW5kIHZhbHVlX2JpbmRpbmcgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyA9IHtcbiAgcHZiX3BhdCA6IHBhdHRlcm47XG4gIHB2Yl9leHByIDogZXhwcmVzc2lvbjtcbiAgcHZiX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICBwdmJfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBtb2R1bGVfYmluZGluZyA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9IHtcbiAgcG1iX25hbWUgOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgcG1iX2V4cHIgOiBtb2R1bGVfZXhwcjtcbiAgcG1iX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICBwbWJfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4oKiogezEgVG9wbGV2ZWx9ICopXG4oKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuYW5kIHRvcGxldmVsX3BocmFzZSA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgPSB7XG4gIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgcGRpcl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPSB7XG4gIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgcGRpcmFfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9XG4gIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgfCBQZGlyX2lkZW50IG9mIGxvbmdpZGVudFxuICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmFuZCBjYXNlcyA9IGNhc2UgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgdHJhdmVyc2VdXG5cbmNsYXNzIHZpcnR1YWwgbWFwID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+IGJvb2xcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiBjaGFyXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+IGludFxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+IHN0cmluZ1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gcG9zaXRpb24gPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBwb3NfY251bSBpblxuICAgICAgICB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+IGxvY2F0aW9uID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGluXG4gICAgICAgIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gbG9jYXRpb25fc3RhY2sgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBsb2MgLT4gJ2EgbG9jID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBsb2MgaW5cbiAgICAgICAgeyB0eHQ7IGxvYyB9XG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+IGxvbmdpZGVudCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBMaWRlbnQgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgTGRvdCAoYSwgYilcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgYiBpblxuICAgICAgICAgICAgTGFwcGx5IChhLCBiKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+IGxvbmdpZGVudF9sb2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+IHJlY19mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+IGRpcmVjdGlvbl9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gcHJpdmF0ZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gbXV0YWJsZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gdmlydHVhbF9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiBvdmVycmlkZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+IGNsb3NlZF9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+IGxhYmVsID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gYXJnX2xhYmVsID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gTm9sYWJlbFxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgTGFiZWxsZWQgYVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgT3B0aW9uYWwgYVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gdmFyaWFuY2UgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gaW5qZWN0aXZpdHkgPSBmdW4geCAtPiB4XG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiBjb25zdGFudCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgUGNvbnN0X2ludGVnZXIgKGEsIGIpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgYSBpblxuICAgICAgICAgICAgUGNvbnN0X2NoYXIgYVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgaW5cbiAgICAgICAgICAgIFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQY29uc3RfZmxvYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgaW5cbiAgICAgICAgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgYiBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiBhdHRyaWJ1dGVzID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gcGF5bG9hZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUFN0ciBhXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIFBTaWcgYVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQVHlwIGFcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUFBhdCAoYSwgYilcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gY29yZV90eXBlID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUHR5cF92YXIgYVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQdHlwX2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUHR5cF90dXBsZSBhXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBQdHlwX29iamVjdCAoYSwgYilcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHR5cF9jbGFzcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIFB0eXBfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGluXG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBhIGluXG4gICAgICAgICAgICBQdHlwX3BhY2thZ2UgYVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHR5cF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGJcbiAgICAgICAgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+IHJvd19maWVsZCA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFJ0YWcgKGEsIGIsIGMpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBSaW5oZXJpdCBhXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgT3RhZyAoYSwgYilcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIE9pbmhlcml0IGFcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiBwYXR0ZXJuID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiBwYXR0ZXJuX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gUHBhdF9hbnlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBQcGF0X2FsaWFzIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGIgaW5cbiAgICAgICAgICAgIFBwYXRfaW50ZXJ2YWwgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF90dXBsZSBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgUHBhdF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF9hcnJheSBhXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3IgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHlwZSBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfbGF6eSBhXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdW5wYWNrIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQcGF0X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24gPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHBfaWRlbnQgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBhIGluXG4gICAgICAgICAgICBQZXhwX2Z1bmN0aW9uIGFcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gZCBpblxuICAgICAgICAgICAgUGV4cF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgUGV4cF9tYXRjaCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBQZXhwX3RyeSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX3R1cGxlIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBQZXhwX2ZpZWxkIChhLCBiKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX3NldGZpZWxkIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfYXJyYXkgYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9zZXF1ZW5jZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF93aGlsZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgICBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSlcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQZXhwX2NvZXJjZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBpblxuICAgICAgICAgICAgUGV4cF9zZW5kIChhLCBiKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHBfbmV3IGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9zZXRpbnN0dmFyIChhLCBiKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9vdmVycmlkZSBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX2Fzc2VydCBhXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfbGF6eSBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQZXhwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQZXhwX29iamVjdCBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX25ld3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBQZXhwX3BhY2sgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfb3BlbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBhIGluXG4gICAgICAgICAgICBQZXhwX2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IFBleHBfdW5yZWFjaGFibGVcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiBjYXNlID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBpblxuICAgICAgICB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9XG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiBsZXRvcCA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGluXG4gICAgICAgIHsgbGV0XzsgYW5kczsgYm9keSB9XG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gYmluZGluZ19vcCA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBpblxuICAgICAgICB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gdmFsdWVfZGVzY3JpcHRpb24gPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGluXG4gICAgICAgIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9XG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjIGluXG4gICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gUHR5cGVfYWJzdHJhY3RcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHR5cGVfdmFyaWFudCBhXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHR5cGVfcmVjb3JkIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IFB0eXBlX29wZW5cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+IGxhYmVsX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUGNzdHJfdHVwbGUgYVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3JlY29yZCBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiB0eXBlX2V4dGVuc2lvbiA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGluXG4gICAgICAgIGxldCBwZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiB0eXBlX2V4Y2VwdGlvbiA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUGV4dF9kZWNsIChhLCBiLCBjKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHRfcmViaW5kIGFcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBjdHlfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgUGN0eV9zaWduYXR1cmUgYVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgYyBpblxuICAgICAgICAgICAgUGN0eV9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBQY3R5X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgYSBpblxuICAgICAgICAgICAgUGN0Zl9pbmhlcml0IGFcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfdmFsIGFcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfbWV0aG9kIGFcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBjdGZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjdGZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGNsYXNzX2luZm9zIC0+ICdhIGNsYXNzX2luZm9zID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiBjbGFzc19leHByID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2xfZGVzYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUGNsX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgZCBpblxuICAgICAgICAgICAgUGNsX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNsX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGMgaW5cbiAgICAgICAgICAgIFBjbF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGNsX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBQY2xfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiBjbGFzc19maWVsZCA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiBjbGFzc19maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgaW5cbiAgICAgICAgICAgIFBjZl9pbmhlcml0IChhLCBiLCBjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX3ZhbCBhXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfbWV0aG9kIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfY29uc3RyYWludCBhXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBjZl9pbml0aWFsaXplciBhXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBjZl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY2ZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiBjbGFzc19maWVsZF9raW5kID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgQ2ZrX3ZpcnR1YWwgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIENma19jb25jcmV0ZSAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+IGNsYXNzX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiBtb2R1bGVfdHlwZSA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiBtb2R1bGVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG10eV9pZGVudCBhXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBQbXR5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQbXR5X2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgaW5cbiAgICAgICAgICAgIFBtdHlfd2l0aCAoYSwgYilcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgUG10eV90eXBlb2YgYVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUG10eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG10eV9hbGlhcyBhXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiBmdW5jdG9yX3BhcmFtZXRlciA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IFVuaXRcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgTmFtZWQgKGEsIGIpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+IHNpZ25hdHVyZSA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiBzaWduYXR1cmVfaXRlbSA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBpblxuICAgICAgICB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ192YWx1ZSBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQc2lnX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHNpZ190eXBleHQgYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfb3BlbiBhXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfaW5jbHVkZSBhXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3MgYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBzaWdfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHNpZ19leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBpblxuICAgICAgICB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgaW5cbiAgICAgICAgeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgaW5cbiAgICAgICAgeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9XG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvcyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIG9wZW5faW5mb3MgLT4gJ2Egb3Blbl9pbmZvcyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAnYSBpbmNsdWRlX2luZm9zID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiB3aXRoX2NvbnN0cmFpbnQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdWxlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHN1YnN0IChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gbW9kdWxlX2V4cHIgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gbW9kdWxlX2V4cHJfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBtb2RfaWRlbnQgYVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUG1vZF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgUG1vZF9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIFBtb2RfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUG1vZF91bnBhY2sgYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUG1vZF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiBzdHJ1Y3R1cmUgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgaW5cbiAgICAgICAgeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXZhbCAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBQc3RyX3ZhbHVlIChhLCBiKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX3ByaW1pdGl2ZSBhXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQc3RyX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZXh0IGFcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBQc3RyX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHR5cGUgYVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX29wZW4gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2NsYXNzIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfaW5jbHVkZSBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBQc3RyX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+IHZhbHVlX2JpbmRpbmcgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGluXG4gICAgICAgIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGluXG4gICAgICAgIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9XG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+IHRvcGxldmVsX3BocmFzZSA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGVmIGFcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGlyIGFcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGluXG4gICAgICAgIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGluXG4gICAgICAgIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUGRpcl9zdHJpbmcgYVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQZGlyX2ludCAoYSwgYilcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgUGRpcl9pZGVudCBhXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGEgaW5cbiAgICAgICAgICAgIFBkaXJfYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiBjYXNlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgaXRlciA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgbGlzdCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBvcHRpb24gLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiB1bml0XG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgc2VsZiNzdHJpbmcgcG9zX2ZuYW1lO1xuICAgICAgICBzZWxmI2ludCBwb3NfbG51bTtcbiAgICAgICAgc2VsZiNpbnQgcG9zX2JvbDtcbiAgICAgICAgc2VsZiNpbnQgcG9zX2NudW1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydDtcbiAgICAgICAgc2VsZiNwb3NpdGlvbiBsb2NfZW5kO1xuICAgICAgICBzZWxmI2Jvb2wgbG9jX2dob3N0XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGxvYyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgX2EgdHh0O1xuICAgICAgICBzZWxmI2xvY2F0aW9uIGxvY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnQgYTtcbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGJcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnQgYlxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+IHVuaXQgPSBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiB1bml0ID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+ICgpXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPiBzZWxmI3N0cmluZyBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiB1bml0ID0gZnVuIF8gLT4gKClcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+IHNlbGYjY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI2xvY2F0aW9uIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lO1xuICAgICAgICBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBhO1xuICAgICAgICBzZWxmI3BheWxvYWQgYlxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUFNpZyBhIC0+IHNlbGYjc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQVHlwIGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+ICgpXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGJcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhO1xuICAgICAgICAgICAgc2VsZiNjbG9zZWRfZmxhZyBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPiBzZWxmI3BhY2thZ2VfdHlwZSBhXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYilcbiAgICAgICAgICBiXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwcmZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjYm9vbCBiO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IE9pbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwcGF0X2xvYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+ICgpXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPiBzZWxmI2xvYyBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGFcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb25zdGFudCBhO1xuICAgICAgICAgICAgc2VsZiNjb25zdGFudCBiXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGIpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYlxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGIpXG4gICAgICAgICAgICAgIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGJcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGJcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPiBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYlxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZXhwX2xvYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGFcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+IHNlbGYjY2FzZXMgYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGM7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZFxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGIpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2Nhc2VzIGJcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNjYXNlcyBiXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYztcbiAgICAgICAgICAgIHNlbGYjZGlyZWN0aW9uX2ZsYWcgZDtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGJcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfcGFjayBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT4gc2VsZiNsZXRvcCBhXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiAoKVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBjX2xocztcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkO1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcGNfcmhzXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBzZWxmI2JpbmRpbmdfb3AgbGV0XztcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzO1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gYm9keVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3A7XG4gICAgICAgIHNlbGYjcGF0dGVybiBwYm9wX3BhdDtcbiAgICAgICAgc2VsZiNleHByZXNzaW9uIHBib3BfZXhwO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBib3BfbG9jXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWU7XG4gICAgICAgIHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdmFsX2xvY1xuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZTtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI3ZhcmlhbmNlIGE7XG4gICAgICAgICAgICAgIHNlbGYjaW5qZWN0aXZpdHkgYilcbiAgICAgICAgICAgICAgYilcbiAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjbG9jYXRpb24gYylcbiAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvY1xuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+ICgpXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoKVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lO1xuICAgICAgICBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGxkX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWU7XG4gICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzO1xuICAgICAgICBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2RfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gdW5pdCA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjdmFyaWFuY2UgYTtcbiAgICAgICAgICAgICAgc2VsZiNpbmplY3Rpdml0eSBiKVxuICAgICAgICAgICAgICBiKVxuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZTtcbiAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPiBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNjbGFzc190eXBlIGNcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI29wZW5fZGVzY3JpcHRpb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfdHlwZSBiXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHNcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY3RmX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+IHNlbGYjY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI211dGFibGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBjO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBkKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBjO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBkKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiN2YXJpYW5jZSBhO1xuICAgICAgICAgICAgICBzZWxmI2luamVjdGl2aXR5IGIpXG4gICAgICAgICAgICAgIGIpXG4gICAgICAgICAgcGNpX3BhcmFtcztcbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWU7XG4gICAgICAgIF9hIHBjaV9leHByO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGM7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgZFxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGI7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgY1xuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX3R5cGUgYlxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI29wZW5fZGVzY3JpcHRpb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBiXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkc1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNmX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGNcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNtdXRhYmxlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiNjbGFzc19maWVsZF9raW5kIGMpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiNjbGFzc19maWVsZF9raW5kIGMpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI292ZXJyaWRlX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG10eV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNzaWduYXR1cmUgYVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPiBzZWxmI21vZHVsZV9leHByIGFcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwc2lnX2xvY1xuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT4gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPiBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHRlbnNpb24gYTtcbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBiXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWU7XG4gICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbWRfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lO1xuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0O1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1zX2xvY1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZTtcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG10ZF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBvcGVuX2luZm9zIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIF9hIHBvcGVuX2V4cHI7XG4gICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIF9hIHBpbmNsX21vZDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbW9kX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYlxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBiXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYlxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfYmluZGluZyBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT4gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4dGVuc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybiBwdmJfcGF0O1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdmJfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lO1xuICAgICAgICBzZWxmI21vZHVsZV9leHByIHBtYl9leHByO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1iX2xvY1xuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT4gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZGlyX2xvY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnQgYVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+IHNlbGYjYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2FjY10gZm9sZCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gJ2FjYyAtPiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBsaXN0IC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIG9wdGlvbiAtPiAnYWNjIC0+ICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiAnYWNjIC0+ICdhY2NcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNpbnQgcG9zX2xudW0gYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfYm9sIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNpbnQgcG9zX2NudW0gYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX2VuZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGxvYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IF9hIHR4dCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gYWNjXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IE9wdGlvbmFsIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+IHNlbGYjY2hhciBhIGFjY1xuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXlsb2FkIGIgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+IHNlbGYjc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUFNpZyBhIC0+IHNlbGYjc2lnbmF0dXJlIGEgYWNjXG4gICAgICAgIHwgUFR5cCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBhY2NcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+IHNlbGYjcGFja2FnZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBiIGFjY1xuICAgICAgICBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYm9vbCBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IE9pbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBhY2NcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYSBhY2NcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0YW50IGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT4gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjY1xuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT4gc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhIGFjY1xuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT4gc2VsZiNjYXNlcyBhIGFjY1xuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGQgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfbGF6eSBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhIGFjY1xuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPiBzZWxmI2xldG9wIGEgYWNjXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gYWNjXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBjX2xocyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwY19yaHMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGJvZHkgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBjIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwdHlwZV9jc3RycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBhY2NcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT4gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFB0eXBlX29wZW4gLT4gYWNjXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgYWNjXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+IHNlbGYjY2xhc3NfdHlwZSBhIGFjY1xuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBkIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuICAgICAgICAgIGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcGNpX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gX2EgcGNpX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGQgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNzaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2NcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IGFjY1xuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPiBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPiBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPiBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPiBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgcG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgcGluY2xfbW9kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPiBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2NcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPiBzZWxmI3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFB0b3BfZGlyIGEgLT4gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBhY2NcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50IGEgYWNjXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT4gc2VsZiNib29sIGEgYWNjXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnYWNjXSBmb2xkX21hcCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiAnYWNjIC0+IGJvb2wgKiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gJ2FjYyAtPiBjaGFyICogJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiAnYWNjIC0+IGludCAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3RcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPiAnYSBsaXN0IC0+ICdhY2MgLT4gJ2EgbGlzdCAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIG9wdGlvbiAtPiAnYWNjIC0+ICdhIG9wdGlvbiAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiAnYWNjIC0+IHN0cmluZyAqICdhY2NcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdhY2MgLT4gcG9zaXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gYWNjIC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUsIGFjYyA9IHNlbGYjc3RyaW5nIHBvc19mbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtLCBhY2MgPSBzZWxmI2ludCBwb3NfbG51bSBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19ib2wsIGFjYyA9IHNlbGYjaW50IHBvc19ib2wgYWNjIGluXG4gICAgICAgIGxldCBwb3NfY251bSwgYWNjID0gc2VsZiNpbnQgcG9zX2NudW0gYWNjIGluXG4gICAgICAgICh7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0sIGFjYylcblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+ICdhY2MgLT4gbG9jYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gYWNjIC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQsIGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGFjYyBpblxuICAgICAgICBsZXQgbG9jX2VuZCwgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGFjYyBpblxuICAgICAgICBsZXQgbG9jX2dob3N0LCBhY2MgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGFjYyBpblxuICAgICAgICAoeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9LCBhY2MpXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAnYWNjIC0+IGxvY2F0aW9uX3N0YWNrICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvY1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIGxvYyAtPiAnYWNjIC0+ICdhIGxvYyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHR4dCwgYWNjID0gX2EgdHh0IGFjYyBpblxuICAgICAgICBsZXQgbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBhY2MgaW5cbiAgICAgICAgKHsgdHh0OyBsb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAnYWNjIC0+IGxvbmdpZGVudCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChMaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgKExkb3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIChMYXBwbHkgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ2FjYyAtPiBsb25naWRlbnRfbG9jICogJ2FjYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gJ2FjYyAtPiByZWNfZmxhZyAqICdhY2MgPSBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdhY2MgLT4gZGlyZWN0aW9uX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiAnYWNjIC0+IHByaXZhdGVfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdhY2MgLT4gbXV0YWJsZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ2FjYyAtPiB2aXJ0dWFsX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+ICdhY2MgLT4gb3ZlcnJpZGVfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiAnYWNjIC0+IGNsb3NlZF9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+ICdhY2MgLT4gbGFiZWwgKiAnYWNjID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gJ2FjYyAtPiBhcmdfbGFiZWwgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IChOb2xhYmVsLCBhY2MpXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoTGFiZWxsZWQgYSwgYWNjKVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKE9wdGlvbmFsIGEsIGFjYylcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdhY2MgLT4gdmFyaWFuY2UgKiAnYWNjID0gZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAnYWNjIC0+IGluamVjdGl2aXR5ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdhY2MgLT4gY29uc3RhbnQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9pbnRlZ2VyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NoYXIgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3RfY2hhciBhLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9jYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X2Zsb2F0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiAnYWNjIC0+IGF0dHJpYnV0ZSAqICdhY2MgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCwgYWNjID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBhY2MgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGFjYyBpblxuICAgICAgICAoeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiAnYWNjIC0+IGV4dGVuc2lvbiAqICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BheWxvYWQgYiBhY2MgaW5cbiAgICAgICAgKChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+ICdhY2MgLT4gYXR0cmlidXRlcyAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ2FjYyAtPiBwYXlsb2FkICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQU3RyIGEsIGFjYylcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBTaWcgYSwgYWNjKVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUFR5cCBhLCBhY2MpXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQUGF0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiAnYWNjIC0+IGNvcmVfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiBjb3JlX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IChQdHlwX2FueSwgYWNjKVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfdmFyIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfYXJyb3cgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9jb25zdHIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfb2JqZWN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9jbGFzcyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2FsaWFzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfdmFyaWFudCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfcG9seSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGFja2FnZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9wYWNrYWdlIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2V4dGVuc2lvbiBhLCBhY2MpXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+ICdhY2MgLT4gcGFja2FnZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBiIGFjY1xuICAgICAgICBpblxuICAgICAgICAoKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+ICdhY2MgLT4gcm93X2ZpZWxkICogJ2FjYyA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHByZl9kZXNjLCBhY2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHJmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdhY2MgLT4gcm93X2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Jvb2wgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChSdGFnIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFJpbmhlcml0IGEsIGFjYylcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gJ2FjYyAtPiBvYmplY3RfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MsIGFjYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjXG4gICAgICAgIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBvYmplY3RfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoT3RhZyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChPaW5oZXJpdCBhLCBhY2MpXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gJ2FjYyAtPiBwYXR0ZXJuICogJ2FjYyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MsIGFjYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAnYWNjIC0+IHBhdHRlcm5fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IChQcGF0X2FueSwgYWNjKVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdmFyIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9hbGlhcyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdGFudCBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb25zdGFudCBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfaW50ZXJ2YWwgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdHJ1Y3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3ZhcmlhbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3JlY29yZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9hcnJheSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X29yIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2xhenkgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF91bnBhY2sgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X29wZW4gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ2FjYyAtPiBleHByZXNzaW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAnYWNjIC0+IGV4cHJlc3Npb25fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0YW50IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2FzZXMgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2Z1bmN0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBkIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZnVuIChhLCBiLCBjLCBkKSwgYWNjKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9hcHBseSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX21hdGNoIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3RyeSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb25zdHJ1Y3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3ZhcmlhbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcmVjb3JkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9maWVsZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfYXJyYXkgYSwgYWNjKVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NlcXVlbmNlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF93aGlsZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgYWNjIGluXG4gICAgICAgICAgICBsZXQgZSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvZXJjZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2VuZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9uZXcgYSwgYWNjKVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZXRpbnN0dmFyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9vdmVycmlkZSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG1vZHVsZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2Fzc2VydCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xhenkgYSwgYWNjKVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcG9seSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX29iamVjdCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9uZXd0eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcGFjayBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfb3BlbiAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xldG9wIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRvcCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gKFBleHBfdW5yZWFjaGFibGUsIGFjYylcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAnYWNjIC0+IGNhc2UgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNfbGhzLCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGFjYyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBhY2MgaW5cbiAgICAgICAgbGV0IHBjX3JocywgYWNjID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBhY2MgaW5cbiAgICAgICAgKHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0sIGFjYylcblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+ICdhY2MgLT4gbGV0b3AgKiAnYWNjID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSBhY2MgLT5cbiAgICAgICAgbGV0IGxldF8sIGFjYyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGFjYyBpblxuICAgICAgICBsZXQgYW5kcywgYWNjID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGFjYyBpblxuICAgICAgICBsZXQgYm9keSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGJvZHkgYWNjIGluXG4gICAgICAgICh7IGxldF87IGFuZHM7IGJvZHkgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+ICdhY2MgLT4gYmluZGluZ19vcCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGJvcF9vcCwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcCBhY2MgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0LCBhY2MgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgYWNjIGluXG4gICAgICAgIGxldCBwYm9wX2V4cCwgYWNjID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGFjYyBpblxuICAgICAgICBsZXQgcGJvcF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGJvcF9sb2MgYWNjIGluXG4gICAgICAgICh7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUsIGFjYyA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGFjYyBpblxuICAgICAgICAoeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IHR5cGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNsb2NhdGlvbiBjIGFjYyBpblxuICAgICAgICAgICAgICAoKGEsIGIsIGMpLCBhY2MpKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kLCBhY2MgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0LCBhY2MgPVxuICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0IGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGFjYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgYWNjIClcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ2FjYyAtPiB0eXBlX2tpbmQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoUHR5cGVfYWJzdHJhY3QsIGFjYylcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBlX3ZhcmlhbnQgYSwgYWNjKVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwZV9yZWNvcmQgYSwgYWNjKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gKFB0eXBlX29wZW4sIGFjYylcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvblxuICAgICAgICA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gbGFiZWxfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNkX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MsIGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX3JlcywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gJ2FjYyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNzdHJfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3N0cl9yZWNvcmQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ2FjYyAtPiB0eXBlX2V4dGVuc2lvbiAqICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGgsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBhY2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAnYWNjIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqICdhY2MgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9raW5kLCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAnYWNjIC0+IHR5cGVfZXhjZXB0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IsIGFjYyA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXh0X2RlY2wgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHRfcmViaW5kIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiAnYWNjIC0+IGNsYXNzX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc190eXBlX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X3NpZ25hdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc190eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9hcnJvdyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ2FjYyAtPiBjbGFzc19zaWduYXR1cmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgKHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIDogY2xhc3NfdHlwZV9maWVsZCAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdGZfaW5oZXJpdCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjLCBkKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY3RmX3ZhbCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjLCBkKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY3RmX21ldGhvZCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfY29uc3RyYWludCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdGZfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG4gICAgICAgICAgYWNjIC0+XG4gICAgICAgIGxldCBwY2lfdmlydCwgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgYWNjIGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBwY2lfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2V4cHIsIGFjYyA9IF9hIHBjaV9leHByIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKCB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0sXG4gICAgICAgICAgYWNjIClcblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvblxuICAgICAgICA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gY2xhc3NfZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+ICdhY2MgLT4gY2xhc3NfZXhwciAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2xfZGVzYywgYWNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX2V4cHJfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9zdHJ1Y3R1cmUgYSwgYWNjKVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgZCBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfZnVuIChhLCBiLCBjLCBkKSwgYWNjKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2xfYXBwbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBjIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9sZXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ2FjYyAtPiBjbGFzc19zdHJ1Y3R1cmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiwgYWNjID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgKHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+ICdhY2MgLT4gY2xhc3NfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzY1xuICAgICAgICA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc19maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9pbmhlcml0IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiwgYyksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX3ZhbCBhLCBhY2MpXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfbWV0aG9kIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfY29uc3RyYWludCBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfaW5pdGlhbGl6ZXIgYSwgYWNjKVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kXG4gICAgICAgIDogY2xhc3NfZmllbGRfa2luZCAtPiAnYWNjIC0+IGNsYXNzX2ZpZWxkX2tpbmQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChDZmtfdmlydHVhbCBhLCBhY2MpXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKENma19jb25jcmV0ZSAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gY2xhc3NfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAnYWNjIC0+IG1vZHVsZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYywgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2NcbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gbW9kdWxlX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfc2lnbmF0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2Z1bmN0b3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X3dpdGggKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X3R5cGVvZiBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfYWxpYXMgYSwgYWNjKVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyXG4gICAgICAgIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ2FjYyAtPiBmdW5jdG9yX3BhcmFtZXRlciAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gKFVuaXQsIGFjYylcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKE5hbWVkIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAnYWNjIC0+IHNpZ25hdHVyZSAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdhY2MgLT4gc2lnbmF0dXJlX2l0ZW0gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYywgYWNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGFjYyBpblxuICAgICAgICAoeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ192YWx1ZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBlc3Vic3QgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBleHQgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19leGNlcHRpb24gYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHN1YnN0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19yZWNtb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHR5cGVzdWJzdCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX29wZW4gYSwgYWNjKVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19pbmNsdWRlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfY2xhc3MgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfY2xhc3NfdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19leHRlbnNpb24gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gbW9kdWxlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG1zX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0LCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGFjYyBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtc19sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF90eXBlLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgKiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIsIGFjYyA9IF9hIHBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogb3Blbl9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IG9wZW5fZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uXG4gICAgICAgIDogb3Blbl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IG9wZW5fZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgKiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QsIGFjYyA9IF9hIHBpbmNsX21vZCBhY2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdhY2MgLT4gd2l0aF9jb25zdHJhaW50ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF90eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2R1bGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfdHlwZXN1YnN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHN1YnN0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gJ2FjYyAtPiBtb2R1bGVfZXhwciAqICdhY2MgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjXG4gICAgICAgIDogbW9kdWxlX2V4cHJfZGVzYyAtPiAnYWNjIC0+IG1vZHVsZV9leHByX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX3N0cnVjdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9mdW5jdG9yIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2FwcGx5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF91bnBhY2sgYSwgYWNjKVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ2FjYyAtPiBzdHJ1Y3R1cmUgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAnYWNjIC0+IHN0cnVjdHVyZV9pdGVtICogJ2FjYyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MsIGFjYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfZXZhbCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl92YWx1ZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfcHJpbWl0aXZlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3R5cGV4dCBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9yZWNtb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfbW9kdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX29wZW4gYSwgYWNjKVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9jbGFzcyBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9jbGFzc190eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfaW5jbHVkZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9leHRlbnNpb24gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ2FjYyAtPiB2YWx1ZV9iaW5kaW5nICogJ2FjYyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQsIGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICBsZXQgcHZiX2V4cHIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwdmJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgYWNjIGluXG4gICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiAnYWNjIC0+IG1vZHVsZV9iaW5kaW5nICogJ2FjYyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtYl9leHByLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdhY2MgLT4gdG9wbGV2ZWxfcGhyYXNlICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHRvcF9kZWYgYSwgYWNjKVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFB0b3BfZGlyIGEsIGFjYylcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAgICAgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ2FjYyAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgIDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+ICdhY2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50ICogJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MsIGFjYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgYWNjIGluXG4gICAgICAgICh7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAnYWNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9zdHJpbmcgYSwgYWNjKVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9pbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYm9vbCBhIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfYm9vbCBhLCBhY2MpXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAnYWNjIC0+IGNhc2VzICogJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydjdHhdIG1hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICdjdHggLT4gYm9vbCAtPiBib29sXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6ICdjdHggLT4gY2hhciAtPiBjaGFyXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogJ2N0eCAtPiBpbnQgLT4gaW50XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAnY3R4IC0+IHN0cmluZyAtPiBzdHJpbmdcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6ICdjdHggLT4gcG9zaXRpb24gLT4gcG9zaXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSA9IHNlbGYjc3RyaW5nIGN0eCBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgY3R4IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgY3R4IHBvc19ib2wgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtID0gc2VsZiNpbnQgY3R4IHBvc19jbnVtIGluXG4gICAgICAgIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogJ2N0eCAtPiBsb2NhdGlvbiAtPiBsb2NhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX2VuZCBpblxuICAgICAgICBsZXQgbG9jX2dob3N0ID0gc2VsZiNib29sIGN0eCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiAnY3R4IC0+IGxvY2F0aW9uX3N0YWNrIC0+IGxvY2F0aW9uX3N0YWNrID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGxvYyAtPiAnYSBsb2MgPVxuICAgICAgZnVuIF9hIGN0eCB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIGN0eCB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGxvYyBpblxuICAgICAgICB7IHR4dDsgbG9jIH1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiAnY3R4IC0+IGxvbmdpZGVudCAtPiBsb25naWRlbnQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBMaWRlbnQgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBMZG90IChhLCBiKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIExhcHBseSAoYSwgYilcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogJ2N0eCAtPiBsb25naWRlbnRfbG9jIC0+IGxvbmdpZGVudF9sb2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6ICdjdHggLT4gcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6ICdjdHggLT4gZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgPVxuICAgICAgZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogJ2N0eCAtPiBwcml2YXRlX2ZsYWcgLT4gcHJpdmF0ZV9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6ICdjdHggLT4gbXV0YWJsZV9mbGFnIC0+IG11dGFibGVfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiAnY3R4IC0+IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogJ2N0eCAtPiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgPVxuICAgICAgZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiAnY3R4IC0+IGNsb3NlZF9mbGFnIC0+IGNsb3NlZF9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIGxhYmVsIDogJ2N0eCAtPiBsYWJlbCAtPiBsYWJlbCA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogJ2N0eCAtPiBhcmdfbGFiZWwgLT4gYXJnX2xhYmVsID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IE5vbGFiZWxcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBMYWJlbGxlZCBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgT3B0aW9uYWwgYVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogJ2N0eCAtPiB2YXJpYW5jZSAtPiB2YXJpYW5jZSA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6ICdjdHggLT4gaW5qZWN0aXZpdHkgLT4gaW5qZWN0aXZpdHkgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBjb25zdGFudCA6ICdjdHggLT4gY29uc3RhbnQgLT4gY29uc3RhbnQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9pbnRlZ2VyIChhLCBiKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGN0eCBhIGluXG4gICAgICAgICAgICBQY29uc3RfY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjdHggYyBpblxuICAgICAgICAgICAgUGNvbnN0X3N0cmluZyAoYSwgYiwgYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGNvbnN0X2Zsb2F0IChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6ICdjdHggLT4gYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSA9XG4gICAgICBmdW4gY3R4IHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBjdHggYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGF0dHJfbG9jIGluXG4gICAgICAgIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiAnY3R4IC0+IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBjdHggYiBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogJ2N0eCAtPiBhdHRyaWJ1dGVzIC0+IGF0dHJpYnV0ZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6ICdjdHggLT4gcGF5bG9hZCAtPiBwYXlsb2FkID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBTdHIgYVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUFNpZyBhXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQVHlwIGFcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQUGF0IChhLCBiKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6ICdjdHggLT4gY29yZV90eXBlIC0+IGNvcmVfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIGN0eCBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiAnY3R4IC0+IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyIGFcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUHR5cF9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX3R1cGxlIGFcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX29iamVjdCAoYSwgYilcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2NsYXNzIChhLCBiKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2FsaWFzIChhLCBiKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjdHggYyBpblxuICAgICAgICAgICAgUHR5cF92YXJpYW50IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlIGFcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogJ2N0eCAtPiBwYWNrYWdlX3R5cGUgLT4gcGFja2FnZV90eXBlID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBiXG4gICAgICAgIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6ICdjdHggLT4gcm93X2ZpZWxkIC0+IHJvd19maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBjdHggcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogJ2N0eCAtPiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBSdGFnIChhLCBiLCBjKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFJpbmhlcml0IGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiAnY3R4IC0+IG9iamVjdF9maWVsZCAtPiBvYmplY3RfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgY3R4IHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIE90YWcgKGEsIGIpXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgT2luaGVyaXQgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiAnY3R4IC0+IHBhdHRlcm4gLT4gcGF0dGVybiA9XG4gICAgICBmdW4gY3R4IHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBjdHggcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6ICdjdHggLT4gcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gUHBhdF9hbnlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3ZhciBhXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X2FsaWFzIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0YW50IGFcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfaW50ZXJ2YWwgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHVwbGUgYVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2FycmF5IGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X29yIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3R5cGUgYVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9sYXp5IGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdW5wYWNrIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9leGNlcHRpb24gYVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogJ2N0eCAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24gPVxuICAgICAgZnVuIGN0eCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4IHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiAnY3R4IC0+IGV4cHJlc3Npb25fZGVzYyAtPiBleHByZXNzaW9uX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfaWRlbnQgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0YW50IGFcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfZnVuY3Rpb24gYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZCBpblxuICAgICAgICAgICAgUGV4cF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbWF0Y2ggKGEsIGIpXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3RyeSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF90dXBsZSBhXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX2ZpZWxkIChhLCBiKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX3NldGZpZWxkIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2FycmF5IGFcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9zZXF1ZW5jZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3doaWxlIChhLCBiKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGN0eCBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZSBpblxuICAgICAgICAgICAgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2NvZXJjZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlbmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfbmV3IGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NldGluc3R2YXIgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9vdmVycmlkZSBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2Fzc2VydCBhXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2xhenkgYVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9vYmplY3QgYVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX25ld3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9wYWNrIGFcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfb3BlbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9sZXRvcCBhXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9leHRlbnNpb24gYVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gUGV4cF91bnJlYWNoYWJsZVxuXG4gICAgbWV0aG9kIGNhc2UgOiAnY3R4IC0+IGNhc2UgLT4gY2FzZSA9XG4gICAgICBmdW4gY3R4IHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBjdHggcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfZ3VhcmQgaW5cbiAgICAgICAgbGV0IHBjX3JocyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfcmhzIGluXG4gICAgICAgIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH1cblxuICAgIG1ldGhvZCBsZXRvcCA6ICdjdHggLT4gbGV0b3AgLT4gbGV0b3AgPVxuICAgICAgZnVuIGN0eCB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBjdHggbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgY3R4IGFuZHMgaW5cbiAgICAgICAgbGV0IGJvZHkgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGJvZHkgaW5cbiAgICAgICAgeyBsZXRfOyBhbmRzOyBib2R5IH1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogJ2N0eCAtPiBiaW5kaW5nX29wIC0+IGJpbmRpbmdfb3AgPVxuICAgICAgZnVuIGN0eCB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBjdHggcGJvcF9wYXQgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwID0gc2VsZiNleHByZXNzaW9uIGN0eCBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwYm9wX2xvYyBpblxuICAgICAgICB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgY3R4IHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZhbF9sb2MgaW5cbiAgICAgICAgeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiB0eXBlX2RlY2xhcmF0aW9uIC0+IHR5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjdHggYyBpblxuICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICBjdHggcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBjdHggcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cGVfbG9jIGluXG4gICAgICAgIHtcbiAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiAnY3R4IC0+IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IFB0eXBlX2Fic3RyYWN0XG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwZV92YXJpYW50IGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHR5cGVfcmVjb3JkIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IFB0eXBlX29wZW5cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6ICdjdHggLT4gbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggcGNkX3ZhcnMgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2RfbG9jIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUGNzdHJfdHVwbGUgYVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY3N0cl9yZWNvcmQgYVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogJ2N0eCAtPiB0eXBlX2V4dGVuc2lvbiAtPiB0eXBlX2V4dGVuc2lvbiA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogJ2N0eCAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgICAgIGZ1biBjdHggeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGN0eCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogJ2N0eCAtPiB0eXBlX2V4Y2VwdGlvbiAtPiB0eXBlX2V4Y2VwdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6ICdjdHggLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHRfZGVjbCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4dF9yZWJpbmQgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiAnY3R4IC0+IGNsYXNzX3R5cGUgLT4gY2xhc3NfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIGN0eCBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVzYyAtPiBjbGFzc190eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY3R5X2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3R5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc190eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQY3R5X2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjdHlfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiAnY3R4IC0+IGNsYXNzX3NpZ25hdHVyZSAtPiBjbGFzc19zaWduYXR1cmUgPVxuICAgICAgZnVuIGN0eCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgY3R4IHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgY3R4IHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2luaGVyaXQgYVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl92YWwgYVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9tZXRob2QgYVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGN0Zl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGNsYXNzX2luZm9zIC0+ICdhIGNsYXNzX2luZm9zID1cbiAgICAgIGZ1biBfYSBjdHhcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgY3R4IHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiAnY3R4IC0+IGNsYXNzX2V4cHIgLT4gY2xhc3NfZXhwciA9XG4gICAgICBmdW4gY3R4IHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgY3R4IHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX2V4cHJfZGVzYyAtPiBjbGFzc19leHByX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQY2xfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBjdHggZCBpblxuICAgICAgICAgICAgUGNsX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2xfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjdHggYyBpblxuICAgICAgICAgICAgUGNsX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY2xfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUGNsX29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogJ2N0eCAtPiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlID1cbiAgICAgIGZ1biBjdHggeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBjdHggcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgY3R4IHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgY3R4IHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogJ2N0eCAtPiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjZl9pbmhlcml0IChhLCBiLCBjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfdmFsIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX21ldGhvZCBhXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9pbml0aWFsaXplciBhXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQY2ZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2tpbmQgLT4gY2xhc3NfZmllbGRfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgQ2ZrX3ZpcnR1YWwgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgQ2ZrX2NvbmNyZXRlIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBjbGFzc19kZWNsYXJhdGlvbiAtPiBjbGFzc19kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogJ2N0eCAtPiBtb2R1bGVfdHlwZSAtPiBtb2R1bGVfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBjdHggcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVzYyAtPiBtb2R1bGVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X2lkZW50IGFcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtdHlfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGN0eCBiIGluXG4gICAgICAgICAgICBQbXR5X3dpdGggKGEsIGIpXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X3R5cGVvZiBhXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfYWxpYXMgYVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogJ2N0eCAtPiBmdW5jdG9yX3BhcmFtZXRlciAtPiBmdW5jdG9yX3BhcmFtZXRlciA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiBVbml0XG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgTmFtZWQgKGEsIGIpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogJ2N0eCAtPiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiAnY3R4IC0+IHNpZ25hdHVyZV9pdGVtIC0+IHNpZ25hdHVyZV9pdGVtID1cbiAgICAgIGZ1biBjdHggeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBjdHggcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzaWdfbG9jIGluXG4gICAgICAgIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9XG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ192YWx1ZSBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXh0IGFcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2RzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R0eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19vcGVuIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfaW5jbHVkZSBhXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc2lnX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiAnY3R4IC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgPVxuICAgICAgZnVuIGN0eCB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1kX2xvYyBpblxuICAgICAgICB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXNfbG9jIGluXG4gICAgICAgIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXRkX2xvYyBpblxuICAgICAgICB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH1cblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIG9wZW5faW5mb3MgLT4gJ2Egb3Blbl9pbmZvcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgY3R4IHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6ICdjdHggLT4gb3Blbl9kZXNjcmlwdGlvbiAtPiBvcGVuX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ2EgaW5jbHVkZV9pbmZvc1xuICAgICAgICA9XG4gICAgICBmdW4gX2EgY3R4IHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgY3R4IHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6ICdjdHggLT4gd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHVsZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHN1YnN0IChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogJ2N0eCAtPiBtb2R1bGVfZXhwciAtPiBtb2R1bGVfZXhwciA9XG4gICAgICBmdW4gY3R4IHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBjdHggcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6ICdjdHggLT4gbW9kdWxlX2V4cHJfZGVzYyAtPiBtb2R1bGVfZXhwcl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX2lkZW50IGFcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF91bnBhY2sgYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2RfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiAnY3R4IC0+IHN0cnVjdHVyZSAtPiBzdHJ1Y3R1cmUgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gPVxuICAgICAgZnVuIGN0eCB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIGN0eCBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHN0cl9sb2MgaW5cbiAgICAgICAgeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl9ldmFsIChhLCBiKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl92YWx1ZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfcHJpbWl0aXZlIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl90eXBlIChhLCBiKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl90eXBleHQgYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9tb2R1bGUgYVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHR5cGUgYVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9vcGVuIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3MgYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2luY2x1ZGUgYVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogJ2N0eCAtPiB2YWx1ZV9iaW5kaW5nIC0+IHZhbHVlX2JpbmRpbmcgPVxuICAgICAgZnVuIGN0eCB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2Yl9sb2MgaW5cbiAgICAgICAgeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogJ2N0eCAtPiBtb2R1bGVfYmluZGluZyAtPiBtb2R1bGVfYmluZGluZyA9XG4gICAgICBmdW4gY3R4IHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWJfbG9jIGluXG4gICAgICAgIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9XG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogJ2N0eCAtPiB0b3BsZXZlbF9waHJhc2UgLT4gdG9wbGV2ZWxfcGhyYXNlID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQdG9wX2RlZiBhXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBjdHggYSBpblxuICAgICAgICAgICAgUHRvcF9kaXIgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6ICdjdHggLT4gdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICAgICA9XG4gICAgICBmdW4gY3R4IHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBjdHggcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcl9sb2MgaW5cbiAgICAgICAgeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgID1cbiAgICAgIGZ1biBjdHggeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgY3R4IHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJhX2xvYyBpblxuICAgICAgICB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQZGlyX3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGRpcl9pbnQgKGEsIGIpXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBQZGlyX2lkZW50IGFcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiAnY3R4IC0+IGNhc2VzIC0+IGNhc2VzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ3Jlc10gbGlmdCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIG9wdGlvbiAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdyZXNcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBwb3NfY251bSBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBvc19mbmFtZVwiLCBwb3NfZm5hbWUpO1xuICAgICAgICAgICAgKFwicG9zX2xudW1cIiwgcG9zX2xudW0pO1xuICAgICAgICAgICAgKFwicG9zX2JvbFwiLCBwb3NfYm9sKTtcbiAgICAgICAgICAgIChcInBvc19jbnVtXCIsIHBvc19jbnVtKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwibG9jX3N0YXJ0XCIsIGxvY19zdGFydCk7XG4gICAgICAgICAgICAoXCJsb2NfZW5kXCIsIGxvY19lbmQpO1xuICAgICAgICAgICAgKFwibG9jX2dob3N0XCIsIGxvY19naG9zdCk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBsb2MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwidHh0XCIsIHR4dCk7IChcImxvY1wiLCBsb2MpIF1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxpZGVudFwiIFsgYSBdXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxkb3RcIiBbIGE7IGIgXVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxhcHBseVwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ3JlcyA9IHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBzZWxmI2NvbnN0ciBcIk5vbnJlY3Vyc2l2ZVwiIFtdXG4gICAgICAgIHwgUmVjdXJzaXZlIC0+IHNlbGYjY29uc3RyIFwiUmVjdXJzaXZlXCIgW11cblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVXB0byAtPiBzZWxmI2NvbnN0ciBcIlVwdG9cIiBbXVxuICAgICAgICB8IERvd250byAtPiBzZWxmI2NvbnN0ciBcIkRvd250b1wiIFtdXG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZSAtPiBzZWxmI2NvbnN0ciBcIlByaXZhdGVcIiBbXVxuICAgICAgICB8IFB1YmxpYyAtPiBzZWxmI2NvbnN0ciBcIlB1YmxpY1wiIFtdXG5cbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgSW1tdXRhYmxlIC0+IHNlbGYjY29uc3RyIFwiSW1tdXRhYmxlXCIgW11cbiAgICAgICAgfCBNdXRhYmxlIC0+IHNlbGYjY29uc3RyIFwiTXV0YWJsZVwiIFtdXG5cbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVmlydHVhbCAtPiBzZWxmI2NvbnN0ciBcIlZpcnR1YWxcIiBbXVxuICAgICAgICB8IENvbmNyZXRlIC0+IHNlbGYjY29uc3RyIFwiQ29uY3JldGVcIiBbXVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3ZlcnJpZGUgLT4gc2VsZiNjb25zdHIgXCJPdmVycmlkZVwiIFtdXG4gICAgICAgIHwgRnJlc2ggLT4gc2VsZiNjb25zdHIgXCJGcmVzaFwiIFtdXG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENsb3NlZCAtPiBzZWxmI2NvbnN0ciBcIkNsb3NlZFwiIFtdXG4gICAgICAgIHwgT3BlbiAtPiBzZWxmI2NvbnN0ciBcIk9wZW5cIiBbXVxuXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gJ3JlcyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBzZWxmI2NvbnN0ciBcIk5vbGFiZWxcIiBbXVxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJMYWJlbGxlZFwiIFsgYSBdXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk9wdGlvbmFsXCIgWyBhIF1cblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ292YXJpYW50IC0+IHNlbGYjY29uc3RyIFwiQ292YXJpYW50XCIgW11cbiAgICAgICAgfCBDb250cmF2YXJpYW50IC0+IHNlbGYjY29uc3RyIFwiQ29udHJhdmFyaWFudFwiIFtdXG4gICAgICAgIHwgTm9WYXJpYW5jZSAtPiBzZWxmI2NvbnN0ciBcIk5vVmFyaWFuY2VcIiBbXVxuXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBJbmplY3RpdmUgLT4gc2VsZiNjb25zdHIgXCJJbmplY3RpdmVcIiBbXVxuICAgICAgICB8IE5vSW5qZWN0aXZpdHkgLT4gc2VsZiNjb25zdHIgXCJOb0luamVjdGl2aXR5XCIgW11cblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2ludGVnZXJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2NoYXJcIiBbIGEgXVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X3N0cmluZ1wiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjb25zdF9mbG9hdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwiYXR0cl9uYW1lXCIsIGF0dHJfbmFtZSk7XG4gICAgICAgICAgICAoXCJhdHRyX3BheWxvYWRcIiwgYXR0cl9wYXlsb2FkKTtcbiAgICAgICAgICAgIChcImF0dHJfbG9jXCIsIGF0dHJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgYiBpblxuICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFN0clwiIFsgYSBdXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFNpZ1wiIFsgYSBdXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFR5cFwiIFsgYSBdXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFBhdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlwX2Rlc2NcIiwgcHR5cF9kZXNjKTtcbiAgICAgICAgICAgIChcInB0eXBfbG9jXCIsIHB0eXBfbG9jKTtcbiAgICAgICAgICAgIChcInB0eXBfbG9jX3N0YWNrXCIsIHB0eXBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInB0eXBfYXR0cmlidXRlc1wiLCBwdHlwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gc2VsZiNjb25zdHIgXCJQdHlwX2FueVwiIFtdXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfdmFyXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2Fycm93XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfb2JqZWN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2NsYXNzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9hbGlhc1wiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfdmFyaWFudFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9wb2x5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfcGFja2FnZVwiIFsgYSBdXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIGJcbiAgICAgICAgaW5cbiAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHJmX2Rlc2NcIiwgcHJmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicHJmX2xvY1wiLCBwcmZfbG9jKTtcbiAgICAgICAgICAgIChcInByZl9hdHRyaWJ1dGVzXCIsIHByZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJSdGFnXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUmluaGVyaXRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9mX2Rlc2NcIiwgcG9mX2Rlc2MpO1xuICAgICAgICAgICAgKFwicG9mX2xvY1wiLCBwb2ZfbG9jKTtcbiAgICAgICAgICAgIChcInBvZl9hdHRyaWJ1dGVzXCIsIHBvZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk90YWdcIiBbIGE7IGIgXVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJPaW5oZXJpdFwiIFsgYSBdXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwcGF0X2Rlc2NcIiwgcHBhdF9kZXNjKTtcbiAgICAgICAgICAgIChcInBwYXRfbG9jXCIsIHBwYXRfbG9jKTtcbiAgICAgICAgICAgIChcInBwYXRfbG9jX3N0YWNrXCIsIHBwYXRfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInBwYXRfYXR0cmlidXRlc1wiLCBwcGF0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBzZWxmI2NvbnN0ciBcIlBwYXRfYW55XCIgW11cbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF92YXJcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9hbGlhc1wiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0YW50XCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfaW50ZXJ2YWxcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0cnVjdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF92YXJpYW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfcmVjb3JkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfYXJyYXlcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfb3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9sYXp5XCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3VucGFja1wiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfb3BlblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwZXhwX2Rlc2NcIiwgcGV4cF9kZXNjKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jXCIsIHBleHBfbG9jKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIHBleHBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInBleHBfYXR0cmlidXRlc1wiLCBwZXhwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0YW50XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Z1bmN0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gZCBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Z1blwiIFsgYTsgYjsgYzsgZCBdXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2FwcGx5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9tYXRjaFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3RyeVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb25zdHJ1Y3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdmFyaWFudFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfcmVjb3JkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2ZpZWxkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NldGZpZWxkXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfYXJyYXlcIiBbIGEgXVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9pZnRoZW5lbHNlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NlcXVlbmNlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3doaWxlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZm9yXCIgWyBhOyBiOyBjOyBkOyBlIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29lcmNlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NlbmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9uZXdcIiBbIGEgXVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2V0aW5zdHZhclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX292ZXJyaWRlXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldG1vZHVsZVwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sZXRleGNlcHRpb25cIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9hc3NlcnRcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGF6eVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfcG9seVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb2JqZWN0XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9uZXd0eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9wYWNrXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb3BlblwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldG9wXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gc2VsZiNjb25zdHIgXCJQZXhwX3VucmVhY2hhYmxlXCIgW11cblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFsgKFwicGNfbGhzXCIsIHBjX2xocyk7IChcInBjX2d1YXJkXCIsIHBjX2d1YXJkKTsgKFwicGNfcmhzXCIsIHBjX3JocykgXVxuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwibGV0X1wiLCBsZXRfKTsgKFwiYW5kc1wiLCBhbmRzKTsgKFwiYm9keVwiLCBib2R5KSBdXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBib3Bfb3BcIiwgcGJvcF9vcCk7XG4gICAgICAgICAgICAoXCJwYm9wX3BhdFwiLCBwYm9wX3BhdCk7XG4gICAgICAgICAgICAoXCJwYm9wX2V4cFwiLCBwYm9wX2V4cCk7XG4gICAgICAgICAgICAoXCJwYm9wX2xvY1wiLCBwYm9wX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdmFsX25hbWVcIiwgcHZhbF9uYW1lKTtcbiAgICAgICAgICAgIChcInB2YWxfdHlwZVwiLCBwdmFsX3R5cGUpO1xuICAgICAgICAgICAgKFwicHZhbF9wcmltXCIsIHB2YWxfcHJpbSk7XG4gICAgICAgICAgICAoXCJwdmFsX2F0dHJpYnV0ZXNcIiwgcHZhbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB2YWxfbG9jXCIsIHB2YWxfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGMgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGMgXSlcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlwZV9uYW1lXCIsIHB0eXBlX25hbWUpO1xuICAgICAgICAgICAgKFwicHR5cGVfcGFyYW1zXCIsIHB0eXBlX3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9jc3Ryc1wiLCBwdHlwZV9jc3Rycyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9raW5kXCIsIHB0eXBlX2tpbmQpO1xuICAgICAgICAgICAgKFwicHR5cGVfcHJpdmF0ZVwiLCBwdHlwZV9wcml2YXRlKTtcbiAgICAgICAgICAgIChcInB0eXBlX21hbmlmZXN0XCIsIHB0eXBlX21hbmlmZXN0KTtcbiAgICAgICAgICAgIChcInB0eXBlX2F0dHJpYnV0ZXNcIiwgcHR5cGVfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9sb2NcIiwgcHR5cGVfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gc2VsZiNjb25zdHIgXCJQdHlwZV9hYnN0cmFjdFwiIFtdXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cGVfdmFyaWFudFwiIFsgYSBdXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwZV9yZWNvcmRcIiBbIGEgXVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gc2VsZiNjb25zdHIgXCJQdHlwZV9vcGVuXCIgW11cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbGRfbmFtZVwiLCBwbGRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbGRfbXV0YWJsZVwiLCBwbGRfbXV0YWJsZSk7XG4gICAgICAgICAgICAoXCJwbGRfdHlwZVwiLCBwbGRfdHlwZSk7XG4gICAgICAgICAgICAoXCJwbGRfbG9jXCIsIHBsZF9sb2MpO1xuICAgICAgICAgICAgKFwicGxkX2F0dHJpYnV0ZXNcIiwgcGxkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNkX25hbWVcIiwgcGNkX25hbWUpO1xuICAgICAgICAgICAgKFwicGNkX3ZhcnNcIiwgcGNkX3ZhcnMpO1xuICAgICAgICAgICAgKFwicGNkX2FyZ3NcIiwgcGNkX2FyZ3MpO1xuICAgICAgICAgICAgKFwicGNkX3Jlc1wiLCBwY2RfcmVzKTtcbiAgICAgICAgICAgIChcInBjZF9sb2NcIiwgcGNkX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2RfYXR0cmlidXRlc1wiLCBwY2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNzdHJfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNzdHJfcmVjb3JkXCIgWyBhIF1cblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlleHRfcGF0aFwiLCBwdHlleHRfcGF0aCk7XG4gICAgICAgICAgICAoXCJwdHlleHRfcGFyYW1zXCIsIHB0eWV4dF9wYXJhbXMpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X2NvbnN0cnVjdG9yc1wiLCBwdHlleHRfY29uc3RydWN0b3JzKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9wcml2YXRlXCIsIHB0eWV4dF9wcml2YXRlKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9sb2NcIiwgcHR5ZXh0X2xvYyk7XG4gICAgICAgICAgICAoXCJwdHlleHRfYXR0cmlidXRlc1wiLCBwdHlleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHRfbmFtZVwiLCBwZXh0X25hbWUpO1xuICAgICAgICAgICAgKFwicGV4dF9raW5kXCIsIHBleHRfa2luZCk7XG4gICAgICAgICAgICAoXCJwZXh0X2xvY1wiLCBwZXh0X2xvYyk7XG4gICAgICAgICAgICAoXCJwZXh0X2F0dHJpYnV0ZXNcIiwgcGV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHR5ZXhuX2NvbnN0cnVjdG9yXCIsIHB0eWV4bl9jb25zdHJ1Y3Rvcik7XG4gICAgICAgICAgICAoXCJwdHlleG5fbG9jXCIsIHB0eWV4bl9sb2MpO1xuICAgICAgICAgICAgKFwicHR5ZXhuX2F0dHJpYnV0ZXNcIiwgcHR5ZXhuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXh0X2RlY2xcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4dF9yZWJpbmRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGN0eV9kZXNjXCIsIHBjdHlfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY3R5X2xvY1wiLCBwY3R5X2xvYyk7XG4gICAgICAgICAgICAoXCJwY3R5X2F0dHJpYnV0ZXNcIiwgcGN0eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9zaWduYXR1cmVcIiBbIGEgXVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X2Fycm93XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgWyAoXCJwY3NpZ19zZWxmXCIsIHBjc2lnX3NlbGYpOyAoXCJwY3NpZ19maWVsZHNcIiwgcGNzaWdfZmllbGRzKSBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY3RmX2Rlc2NcIiwgcGN0Zl9kZXNjKTtcbiAgICAgICAgICAgIChcInBjdGZfbG9jXCIsIHBjdGZfbG9jKTtcbiAgICAgICAgICAgIChcInBjdGZfYXR0cmlidXRlc1wiLCBwY3RmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2luaGVyaXRcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjOyBkIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl92YWxcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjOyBkIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9tZXRob2RcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2NvbnN0cmFpbnRcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2lfdmlydFwiLCBwY2lfdmlydCk7XG4gICAgICAgICAgICAoXCJwY2lfcGFyYW1zXCIsIHBjaV9wYXJhbXMpO1xuICAgICAgICAgICAgKFwicGNpX25hbWVcIiwgcGNpX25hbWUpO1xuICAgICAgICAgICAgKFwicGNpX2V4cHJcIiwgcGNpX2V4cHIpO1xuICAgICAgICAgICAgKFwicGNpX2xvY1wiLCBwY2lfbG9jKTtcbiAgICAgICAgICAgIChcInBjaV9hdHRyaWJ1dGVzXCIsIHBjaV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNsX2Rlc2NcIiwgcGNsX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGNsX2xvY1wiLCBwY2xfbG9jKTtcbiAgICAgICAgICAgIChcInBjbF9hdHRyaWJ1dGVzXCIsIHBjbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2NvbnN0clwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX3N0cnVjdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgZCBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfZnVuXCIgWyBhOyBiOyBjOyBkIF1cbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2FwcGx5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9sZXRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbIChcInBjc3RyX3NlbGZcIiwgcGNzdHJfc2VsZik7IChcInBjc3RyX2ZpZWxkc1wiLCBwY3N0cl9maWVsZHMpIF1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjZl9kZXNjXCIsIHBjZl9kZXNjKTtcbiAgICAgICAgICAgIChcInBjZl9sb2NcIiwgcGNmX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2ZfYXR0cmlidXRlc1wiLCBwY2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfaW5oZXJpdFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGMgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfdmFsXCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9tZXRob2RcIiBbIGEgXVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9jb25zdHJhaW50XCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfaW5pdGlhbGl6ZXJcIiBbIGEgXVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkNma192aXJ0dWFsXCIgWyBhIF1cbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkNma19jb25jcmV0ZVwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXR5X2Rlc2NcIiwgcG10eV9kZXNjKTtcbiAgICAgICAgICAgIChcInBtdHlfbG9jXCIsIHBtdHlfbG9jKTtcbiAgICAgICAgICAgIChcInBtdHlfYXR0cmlidXRlc1wiLCBwbXR5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9zaWduYXR1cmVcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2Z1bmN0b3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfd2l0aFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV90eXBlb2ZcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfYWxpYXNcIiBbIGEgXVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IHNlbGYjY29uc3RyIFwiVW5pdFwiIFtdXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTmFtZWRcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJwc2lnX2Rlc2NcIiwgcHNpZ19kZXNjKTsgKFwicHNpZ19sb2NcIiwgcHNpZ19sb2MpIF1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ192YWx1ZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBlc3Vic3RcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdHlwZXh0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2RzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3JlY21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R0eXBlc3Vic3RcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfb3BlblwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19pbmNsdWRlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2NsYXNzXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19jbGFzc190eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfZXh0ZW5zaW9uXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtZF9uYW1lXCIsIHBtZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBtZF90eXBlXCIsIHBtZF90eXBlKTtcbiAgICAgICAgICAgIChcInBtZF9hdHRyaWJ1dGVzXCIsIHBtZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtZF9sb2NcIiwgcG1kX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXNfbmFtZVwiLCBwbXNfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbXNfbWFuaWZlc3RcIiwgcG1zX21hbmlmZXN0KTtcbiAgICAgICAgICAgIChcInBtc19hdHRyaWJ1dGVzXCIsIHBtc19hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtc19sb2NcIiwgcG1zX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXRkX25hbWVcIiwgcG10ZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBtdGRfdHlwZVwiLCBwbXRkX3R5cGUpO1xuICAgICAgICAgICAgKFwicG10ZF9hdHRyaWJ1dGVzXCIsIHBtdGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwbXRkX2xvY1wiLCBwbXRkX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIG9wZW5faW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBvcGVuX2V4cHJcIiwgcG9wZW5fZXhwcik7XG4gICAgICAgICAgICAoXCJwb3Blbl9vdmVycmlkZVwiLCBwb3Blbl9vdmVycmlkZSk7XG4gICAgICAgICAgICAoXCJwb3Blbl9sb2NcIiwgcG9wZW5fbG9jKTtcbiAgICAgICAgICAgIChcInBvcGVuX2F0dHJpYnV0ZXNcIiwgcG9wZW5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdyZXMgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGluY2xfbW9kXCIsIHBpbmNsX21vZCk7XG4gICAgICAgICAgICAoXCJwaW5jbF9sb2NcIiwgcGluY2xfbG9jKTtcbiAgICAgICAgICAgIChcInBpbmNsX2F0dHJpYnV0ZXNcIiwgcGluY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R1bGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R0eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R0eXBlc3Vic3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfdHlwZXN1YnN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfbW9kc3Vic3RcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1vZF9kZXNjXCIsIHBtb2RfZGVzYyk7XG4gICAgICAgICAgICAoXCJwbW9kX2xvY1wiLCBwbW9kX2xvYyk7XG4gICAgICAgICAgICAoXCJwbW9kX2F0dHJpYnV0ZXNcIiwgcG1vZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2Rfc3RydWN0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9mdW5jdG9yXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF91bnBhY2tcIiBbIGEgXVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBzdHJfZGVzY1wiLCBwc3RyX2Rlc2MpOyAoXCJwc3RyX2xvY1wiLCBwc3RyX2xvYykgXVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V2YWxcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl92YWx1ZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9wcmltaXRpdmVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfdHlwZXh0XCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9tb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3JlY21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfbW9kdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9vcGVuXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2NsYXNzXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9jbGFzc190eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2luY2x1ZGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9leHRlbnNpb25cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHZiX3BhdFwiLCBwdmJfcGF0KTtcbiAgICAgICAgICAgIChcInB2Yl9leHByXCIsIHB2Yl9leHByKTtcbiAgICAgICAgICAgIChcInB2Yl9hdHRyaWJ1dGVzXCIsIHB2Yl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB2Yl9sb2NcIiwgcHZiX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBpblxuICAgICAgICBsZXQgcG1iX2V4cHIgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtYl9uYW1lXCIsIHBtYl9uYW1lKTtcbiAgICAgICAgICAgIChcInBtYl9leHByXCIsIHBtYl9leHByKTtcbiAgICAgICAgICAgIChcInBtYl9hdHRyaWJ1dGVzXCIsIHBtYl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtYl9sb2NcIiwgcG1iX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdG9wX2RlZlwiIFsgYSBdXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0b3BfZGlyXCIgWyBhIF1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBkaXJfbmFtZVwiLCBwZGlyX25hbWUpO1xuICAgICAgICAgICAgKFwicGRpcl9hcmdcIiwgcGRpcl9hcmcpO1xuICAgICAgICAgICAgKFwicGRpcl9sb2NcIiwgcGRpcl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJwZGlyYV9kZXNjXCIsIHBkaXJhX2Rlc2MpOyAoXCJwZGlyYV9sb2NcIiwgcGRpcmFfbG9jKSBdXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX3N0cmluZ1wiIFsgYSBdXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9pbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfYm9vbFwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2N0eCwgJ3Jlc10gbGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6ICdjdHggLT4gKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAnY3R4IC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICdjdHggLT4gYm9vbCAtPiBib29sICogJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAnY3R4IC0+IGNoYXIgLT4gY2hhciAqICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAnY3R4IC0+IGludCAtPiBpbnQgKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBsaXN0XG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT4gJ2N0eCAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAnY3R4IC0+IHN0cmluZyAtPiBzdHJpbmcgKiAncmVzXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiAnY3R4IC0+IHBvc2l0aW9uIC0+IHBvc2l0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgY3R4IHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBjdHggcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBjdHggcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBjdHggcG9zX2NudW0gaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb3NfZm5hbWUgPSBTdGRsaWIuZnN0IHBvc19mbmFtZTtcbiAgICAgICAgICAgIHBvc19sbnVtID0gU3RkbGliLmZzdCBwb3NfbG51bTtcbiAgICAgICAgICAgIHBvc19ib2wgPSBTdGRsaWIuZnN0IHBvc19ib2w7XG4gICAgICAgICAgICBwb3NfY251bSA9IFN0ZGxpYi5mc3QgcG9zX2NudW07XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG9zX2ZuYW1lXCIsIFN0ZGxpYi5zbmQgcG9zX2ZuYW1lKTtcbiAgICAgICAgICAgICAgKFwicG9zX2xudW1cIiwgU3RkbGliLnNuZCBwb3NfbG51bSk7XG4gICAgICAgICAgICAgIChcInBvc19ib2xcIiwgU3RkbGliLnNuZCBwb3NfYm9sKTtcbiAgICAgICAgICAgICAgKFwicG9zX2NudW1cIiwgU3RkbGliLnNuZCBwb3NfY251bSk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6ICdjdHggLT4gbG9jYXRpb24gLT4gbG9jYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgY3R4IGxvY19naG9zdCBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGxvY19zdGFydCA9IFN0ZGxpYi5mc3QgbG9jX3N0YXJ0O1xuICAgICAgICAgICAgbG9jX2VuZCA9IFN0ZGxpYi5mc3QgbG9jX2VuZDtcbiAgICAgICAgICAgIGxvY19naG9zdCA9IFN0ZGxpYi5mc3QgbG9jX2dob3N0O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImxvY19zdGFydFwiLCBTdGRsaWIuc25kIGxvY19zdGFydCk7XG4gICAgICAgICAgICAgIChcImxvY19lbmRcIiwgU3RkbGliLnNuZCBsb2NfZW5kKTtcbiAgICAgICAgICAgICAgKFwibG9jX2dob3N0XCIsIFN0ZGxpYi5zbmQgbG9jX2dob3N0KTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogJ2N0eCAtPiBsb2NhdGlvbl9zdGFjayAtPiBsb2NhdGlvbl9zdGFjayAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIGxvYyAtPiAnYSBsb2MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSBjdHggdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBsb2MgaW5cbiAgICAgICAgKCB7IHR4dCA9IFN0ZGxpYi5mc3QgdHh0OyBsb2MgPSBTdGRsaWIuZnN0IGxvYyB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eCBbIChcInR4dFwiLCBTdGRsaWIuc25kIHR4dCk7IChcImxvY1wiLCBTdGRsaWIuc25kIGxvYykgXVxuICAgICAgICApXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogJ2N0eCAtPiBsb25naWRlbnQgLT4gbG9uZ2lkZW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIChMaWRlbnQgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIkxpZGVudFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggTGRvdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMZG90XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGN0eCBiIGluXG4gICAgICAgICAgICAoIExhcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiAnY3R4IC0+IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyAqICdyZXMgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6ICdjdHggLT4gcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6ICdjdHggLT4gZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiAnY3R4IC0+IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiAnY3R4IC0+IG11dGFibGVfZmxhZyAtPiBtdXRhYmxlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiAnY3R4IC0+IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogJ2N0eCAtPiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6ICdjdHggLT4gY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBsYWJlbCA6ICdjdHggLT4gbGFiZWwgLT4gbGFiZWwgKiAncmVzID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiAnY3R4IC0+IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IChOb2xhYmVsLCBzZWxmI2NvbnN0ciBjdHggXCJOb2xhYmVsXCIgW10pXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBMYWJlbGxlZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTGFiZWxsZWRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIE9wdGlvbmFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPcHRpb25hbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogJ2N0eCAtPiB2YXJpYW5jZSAtPiB2YXJpYW5jZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogJ2N0eCAtPiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogJ2N0eCAtPiBjb25zdGFudCAtPiBjb25zdGFudCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNvbnN0X2ludGVnZXIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X2ludGVnZXJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjb25zdF9jaGFyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfY2hhclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNvbnN0X3N0cmluZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9zdHJpbmdcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY29uc3RfZmxvYXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X2Zsb2F0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiAnY3R4IC0+IGF0dHJpYnV0ZSAtPiBhdHRyaWJ1dGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGN0eCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggYXR0cl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBhdHRyX25hbWUgPSBTdGRsaWIuZnN0IGF0dHJfbmFtZTtcbiAgICAgICAgICAgIGF0dHJfcGF5bG9hZCA9IFN0ZGxpYi5mc3QgYXR0cl9wYXlsb2FkO1xuICAgICAgICAgICAgYXR0cl9sb2MgPSBTdGRsaWIuZnN0IGF0dHJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImF0dHJfbmFtZVwiLCBTdGRsaWIuc25kIGF0dHJfbmFtZSk7XG4gICAgICAgICAgICAgIChcImF0dHJfcGF5bG9hZFwiLCBTdGRsaWIuc25kIGF0dHJfcGF5bG9hZCk7XG4gICAgICAgICAgICAgIChcImF0dHJfbG9jXCIsIFN0ZGxpYi5zbmQgYXR0cl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogJ2N0eCAtPiBleHRlbnNpb24gLT4gZXh0ZW5zaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGN0eCBiIGluXG4gICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiAnY3R4IC0+IGF0dHJpYnV0ZXMgLT4gYXR0cmlidXRlcyAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6ICdjdHggLT4gcGF5bG9hZCAtPiBwYXlsb2FkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFN0ciAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFN0clwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFNpZyAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFNpZ1wiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFR5cCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFR5cFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQUGF0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBQYXRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6ICdjdHggLT4gY29yZV90eXBlIC0+IGNvcmVfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBjdHggcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IFN0ZGxpYi5mc3QgcHR5cF9kZXNjO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBTdGRsaWIuZnN0IHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHB0eXBfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5cF9kZXNjXCIsIFN0ZGxpYi5zbmQgcHR5cF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHR5cF9sb2NcIiwgU3RkbGliLnNuZCBwdHlwX2xvYyk7XG4gICAgICAgICAgICAgIChcInB0eXBfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcHR5cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwdHlwX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiAnY3R4IC0+IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKFB0eXBfYW55LCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2FueVwiIFtdKVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF92YXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfdmFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUHR5cF9hcnJvdyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYXJyb3dcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2NvbnN0clwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfb2JqZWN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfb2JqZWN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfY2xhc3MgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9jbGFzc1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9hbGlhcyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2FsaWFzXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgY3R4IGMgaW5cbiAgICAgICAgICAgICggUHR5cF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF92YXJpYW50XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX3BvbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9wb2x5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX3BhY2thZ2UgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfcGFja2FnZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogJ2N0eCAtPiBwYWNrYWdlX3R5cGUgLT4gcGFja2FnZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggYlxuICAgICAgICBpblxuICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiAnY3R4IC0+IHJvd19maWVsZCAtPiByb3dfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIGN0eCBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHByZl9kZXNjID0gU3RkbGliLmZzdCBwcmZfZGVzYztcbiAgICAgICAgICAgIHByZl9sb2MgPSBTdGRsaWIuZnN0IHByZl9sb2M7XG4gICAgICAgICAgICBwcmZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHJmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHJmX2Rlc2NcIiwgU3RkbGliLnNuZCBwcmZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInByZl9sb2NcIiwgU3RkbGliLnNuZCBwcmZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHJmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwcmZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6ICdjdHggLT4gcm93X2ZpZWxkX2Rlc2MgLT4gcm93X2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUnRhZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlJ0YWdcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFJpbmhlcml0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJSaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgY3R4IHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG9mX2Rlc2MgPSBTdGRsaWIuZnN0IHBvZl9kZXNjO1xuICAgICAgICAgICAgcG9mX2xvYyA9IFN0ZGxpYi5mc3QgcG9mX2xvYztcbiAgICAgICAgICAgIHBvZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwb2ZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb2ZfZGVzY1wiLCBTdGRsaWIuc25kIHBvZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG9mX2xvY1wiLCBTdGRsaWIuc25kIHBvZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwb2ZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBvZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggT3RhZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPdGFnXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIE9pbmhlcml0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiAnY3R4IC0+IHBhdHRlcm4gLT4gcGF0dGVybiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgY3R4IHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSBTdGRsaWIuZnN0IHBwYXRfZGVzYztcbiAgICAgICAgICAgIHBwYXRfbG9jID0gU3RkbGliLmZzdCBwcGF0X2xvYztcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gU3RkbGliLmZzdCBwcGF0X2xvY19zdGFjaztcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBwYXRfZGVzY1wiLCBTdGRsaWIuc25kIHBwYXRfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBwYXRfbG9jXCIsIFN0ZGxpYi5zbmQgcHBhdF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwcGF0X2xvY19zdGFja1wiLCBTdGRsaWIuc25kIHBwYXRfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgICAgKFwicHBhdF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHBhdF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6ICdjdHggLT4gcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IChQcGF0X2FueSwgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hbnlcIiBbXSlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdmFyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3ZhclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2FsaWFzIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfY29uc3RhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9pbnRlcnZhbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2ludGVydmFsXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RydWN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfY29uc3RydWN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfdmFyaWFudCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3ZhcmlhbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X3JlY29yZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3JlY29yZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9hcnJheSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hcnJheVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9vciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X29yXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF90eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfbGF6eSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9sYXp5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdW5wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3VucGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiAnY3R4IC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4IHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSBTdGRsaWIuZnN0IHBleHBfZGVzYztcbiAgICAgICAgICAgIHBleHBfbG9jID0gU3RkbGliLmZzdCBwZXhwX2xvYztcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gU3RkbGliLmZzdCBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBTdGRsaWIuc25kIHBleHBfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBleHBfbG9jXCIsIFN0ZGxpYi5zbmQgcGV4cF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwZXhwX2xvY19zdGFja1wiLCBTdGRsaWIuc25kIHBleHBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgICAgKFwicGV4cF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGV4cF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6ICdjdHggLT4gZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfY29uc3RhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29uc3RhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2xldCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9mdW5jdGlvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mdW5jdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZCBpblxuICAgICAgICAgICAgKCBQZXhwX2Z1biAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mdW5cIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF0gKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQZXhwX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfbWF0Y2ggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9tYXRjaFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfdHJ5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdHJ5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9jb25zdHJ1Y3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdHJ1Y3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdmFyaWFudFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9yZWNvcmQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9maWVsZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2ZpZWxkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX3NldGZpZWxkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZXRmaWVsZFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfYXJyYXkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfYXJyYXlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfaWZ0aGVuZWxzZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfaWZ0aGVuZWxzZVwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9zZXF1ZW5jZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NlcXVlbmNlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfd2hpbGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF93aGlsZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgY3R4IGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGN0eCBlIGluXG4gICAgICAgICAgICAoIFBleHBfZm9yXG4gICAgICAgICAgICAgICAgKCBTdGRsaWIuZnN0IGEsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGIsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGMsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGQsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGUgKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mb3JcIlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYTtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYjtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYztcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgZDtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgZTtcbiAgICAgICAgICAgICAgICBdIClcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2NvZXJjZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29lcmNlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3NlbmQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZW5kXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX25ldyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9uZXdcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfc2V0aW5zdHZhciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NldGluc3R2YXJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQZXhwX292ZXJyaWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX292ZXJyaWRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRtb2R1bGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldG1vZHVsZVwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRleGNlcHRpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRleGNlcHRpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2Fzc2VydCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hc3NlcnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9sYXp5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xhenlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3BvbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9wb2x5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfb2JqZWN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX29iamVjdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfbmV3dHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX25ld3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3BhY2tcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRvcCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRvcFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPlxuICAgICAgICAgICAgKFBleHBfdW5yZWFjaGFibGUsIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdW5yZWFjaGFibGVcIiBbXSlcblxuICAgIG1ldGhvZCBjYXNlIDogJ2N0eCAtPiBjYXNlIC0+IGNhc2UgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIGN0eCBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIGN0eCBwY19yaHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY19saHMgPSBTdGRsaWIuZnN0IHBjX2xocztcbiAgICAgICAgICAgIHBjX2d1YXJkID0gU3RkbGliLmZzdCBwY19ndWFyZDtcbiAgICAgICAgICAgIHBjX3JocyA9IFN0ZGxpYi5mc3QgcGNfcmhzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjX2xoc1wiLCBTdGRsaWIuc25kIHBjX2xocyk7XG4gICAgICAgICAgICAgIChcInBjX2d1YXJkXCIsIFN0ZGxpYi5zbmQgcGNfZ3VhcmQpO1xuICAgICAgICAgICAgICAoXCJwY19yaHNcIiwgU3RkbGliLnNuZCBwY19yaHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbGV0b3AgOiAnY3R4IC0+IGxldG9wIC0+IGxldG9wICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGN0eCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBjdHggYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYm9keSBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGxldF8gPSBTdGRsaWIuZnN0IGxldF87XG4gICAgICAgICAgICBhbmRzID0gU3RkbGliLmZzdCBhbmRzO1xuICAgICAgICAgICAgYm9keSA9IFN0ZGxpYi5mc3QgYm9keTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJsZXRfXCIsIFN0ZGxpYi5zbmQgbGV0Xyk7XG4gICAgICAgICAgICAgIChcImFuZHNcIiwgU3RkbGliLnNuZCBhbmRzKTtcbiAgICAgICAgICAgICAgKFwiYm9keVwiLCBTdGRsaWIuc25kIGJvZHkpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6ICdjdHggLT4gYmluZGluZ19vcCAtPiBiaW5kaW5nX29wICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBib3BfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGJvcF9vcCA9IFN0ZGxpYi5mc3QgcGJvcF9vcDtcbiAgICAgICAgICAgIHBib3BfcGF0ID0gU3RkbGliLmZzdCBwYm9wX3BhdDtcbiAgICAgICAgICAgIHBib3BfZXhwID0gU3RkbGliLmZzdCBwYm9wX2V4cDtcbiAgICAgICAgICAgIHBib3BfbG9jID0gU3RkbGliLmZzdCBwYm9wX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwYm9wX29wXCIsIFN0ZGxpYi5zbmQgcGJvcF9vcCk7XG4gICAgICAgICAgICAgIChcInBib3BfcGF0XCIsIFN0ZGxpYi5zbmQgcGJvcF9wYXQpO1xuICAgICAgICAgICAgICAoXCJwYm9wX2V4cFwiLCBTdGRsaWIuc25kIHBib3BfZXhwKTtcbiAgICAgICAgICAgICAgKFwicGJvcF9sb2NcIiwgU3RkbGliLnNuZCBwYm9wX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gdmFsdWVfZGVzY3JpcHRpb24gLT4gdmFsdWVfZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBjdHggcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmFsX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB2YWxfbmFtZSA9IFN0ZGxpYi5mc3QgcHZhbF9uYW1lO1xuICAgICAgICAgICAgcHZhbF90eXBlID0gU3RkbGliLmZzdCBwdmFsX3R5cGU7XG4gICAgICAgICAgICBwdmFsX3ByaW0gPSBTdGRsaWIuZnN0IHB2YWxfcHJpbTtcbiAgICAgICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHZhbF9sb2MgPSBTdGRsaWIuZnN0IHB2YWxfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB2YWxfbmFtZVwiLCBTdGRsaWIuc25kIHB2YWxfbmFtZSk7XG4gICAgICAgICAgICAgIChcInB2YWxfdHlwZVwiLCBTdGRsaWIuc25kIHB2YWxfdHlwZSk7XG4gICAgICAgICAgICAgIChcInB2YWxfcHJpbVwiLCBTdGRsaWIuc25kIHB2YWxfcHJpbSk7XG4gICAgICAgICAgICAgIChcInB2YWxfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB2YWxfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInB2YWxfbG9jXCIsIFN0ZGxpYi5zbmQgcHZhbF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gdHlwZV9kZWNsYXJhdGlvbiAtPiB0eXBlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjdHggYyBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApKVxuICAgICAgICAgICAgY3R4IHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgY3R4IHB0eXBlX2tpbmQgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBlX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBlX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWUgPSBTdGRsaWIuZnN0IHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXMgPSBTdGRsaWIuZnN0IHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzID0gU3RkbGliLmZzdCBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQgPSBTdGRsaWIuZnN0IHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlID0gU3RkbGliLmZzdCBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBTdGRsaWIuZnN0IHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYyA9IFN0ZGxpYi5mc3QgcHR5cGVfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eXBlX25hbWVcIiwgU3RkbGliLnNuZCBwdHlwZV9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcHR5cGVfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfY3N0cnNcIiwgU3RkbGliLnNuZCBwdHlwZV9jc3Rycyk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2tpbmRcIiwgU3RkbGliLnNuZCBwdHlwZV9raW5kKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfcHJpdmF0ZVwiLCBTdGRsaWIuc25kIHB0eXBlX3ByaXZhdGUpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9tYW5pZmVzdFwiLCBTdGRsaWIuc25kIHB0eXBlX21hbmlmZXN0KTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eXBlX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9sb2NcIiwgU3RkbGliLnNuZCBwdHlwZV9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogJ2N0eCAtPiB0eXBlX2tpbmQgLT4gdHlwZV9raW5kICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKFB0eXBlX2Fic3RyYWN0LCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9hYnN0cmFjdFwiIFtdKVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwZV92YXJpYW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV92YXJpYW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cGVfcmVjb3JkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IChQdHlwZV9vcGVuLCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9vcGVuXCIgW10pXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGxhYmVsX2RlY2xhcmF0aW9uIC0+IGxhYmVsX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBsZF9uYW1lID0gU3RkbGliLmZzdCBwbGRfbmFtZTtcbiAgICAgICAgICAgIHBsZF9tdXRhYmxlID0gU3RkbGliLmZzdCBwbGRfbXV0YWJsZTtcbiAgICAgICAgICAgIHBsZF90eXBlID0gU3RkbGliLmZzdCBwbGRfdHlwZTtcbiAgICAgICAgICAgIHBsZF9sb2MgPSBTdGRsaWIuZnN0IHBsZF9sb2M7XG4gICAgICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGxkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGxkX25hbWVcIiwgU3RkbGliLnNuZCBwbGRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBsZF9tdXRhYmxlXCIsIFN0ZGxpYi5zbmQgcGxkX211dGFibGUpO1xuICAgICAgICAgICAgICAoXCJwbGRfdHlwZVwiLCBTdGRsaWIuc25kIHBsZF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicGxkX2xvY1wiLCBTdGRsaWIuc25kIHBsZF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwbGRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBsZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjZF9uYW1lID0gU3RkbGliLmZzdCBwY2RfbmFtZTtcbiAgICAgICAgICAgIHBjZF92YXJzID0gU3RkbGliLmZzdCBwY2RfdmFycztcbiAgICAgICAgICAgIHBjZF9hcmdzID0gU3RkbGliLmZzdCBwY2RfYXJncztcbiAgICAgICAgICAgIHBjZF9yZXMgPSBTdGRsaWIuZnN0IHBjZF9yZXM7XG4gICAgICAgICAgICBwY2RfbG9jID0gU3RkbGliLmZzdCBwY2RfbG9jO1xuICAgICAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjZF9uYW1lXCIsIFN0ZGxpYi5zbmQgcGNkX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwY2RfdmFyc1wiLCBTdGRsaWIuc25kIHBjZF92YXJzKTtcbiAgICAgICAgICAgICAgKFwicGNkX2FyZ3NcIiwgU3RkbGliLnNuZCBwY2RfYXJncyk7XG4gICAgICAgICAgICAgIChcInBjZF9yZXNcIiwgU3RkbGliLnNuZCBwY2RfcmVzKTtcbiAgICAgICAgICAgICAgKFwicGNkX2xvY1wiLCBTdGRsaWIuc25kIHBjZF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2RfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjc3RyX3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3N0cl90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjc3RyX3JlY29yZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNzdHJfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiAnY3R4IC0+IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eWV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGggPSBTdGRsaWIuZnN0IHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBTdGRsaWIuZnN0IHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jID0gU3RkbGliLmZzdCBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eWV4dF9wYXRoXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X3BhdGgpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X3BhcmFtcyk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9jb25zdHJ1Y3RvcnNcIiwgU3RkbGliLnNuZCBwdHlleHRfY29uc3RydWN0b3JzKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X3ByaXZhdGVcIiwgU3RkbGliLnNuZCBwdHlleHRfcHJpdmF0ZSk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9sb2NcIiwgU3RkbGliLnNuZCBwdHlleHRfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiAnY3R4IC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGN0eCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGV4dF9uYW1lID0gU3RkbGliLmZzdCBwZXh0X25hbWU7XG4gICAgICAgICAgICBwZXh0X2tpbmQgPSBTdGRsaWIuZnN0IHBleHRfa2luZDtcbiAgICAgICAgICAgIHBleHRfbG9jID0gU3RkbGliLmZzdCBwZXh0X2xvYztcbiAgICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBleHRfbmFtZVwiLCBTdGRsaWIuc25kIHBleHRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBleHRfa2luZFwiLCBTdGRsaWIuc25kIHBleHRfa2luZCk7XG4gICAgICAgICAgICAgIChcInBleHRfbG9jXCIsIFN0ZGxpYi5zbmQgcGV4dF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwZXh0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiAnY3R4IC0+IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBTdGRsaWIuZnN0IHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICAgICAgIHB0eWV4bl9sb2MgPSBTdGRsaWIuZnN0IHB0eWV4bl9sb2M7XG4gICAgICAgICAgICBwdHlleG5fYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5ZXhuX2NvbnN0cnVjdG9yXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXhuX2xvY1wiLCBTdGRsaWIuc25kIHB0eWV4bl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwdHlleG5fYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eWV4bl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogJ2N0eCAtPlxuICAgICAgICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgICAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHRfZGVjbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHRfZGVjbFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHRfcmViaW5kIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXh0X3JlYmluZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiAnY3R4IC0+IGNsYXNzX3R5cGUgLT4gY2xhc3NfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBjdHggcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjdHlfZGVzYyA9IFN0ZGxpYi5mc3QgcGN0eV9kZXNjO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBTdGRsaWIuZnN0IHBjdHlfbG9jO1xuICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGN0eV9kZXNjXCIsIFN0ZGxpYi5zbmQgcGN0eV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGN0eV9sb2NcIiwgU3RkbGliLnNuZCBwY3R5X2xvYyk7XG4gICAgICAgICAgICAgIChcInBjdHlfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVzYyAtPiBjbGFzc190eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY3R5X2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X2NvbnN0clwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3R5X3NpZ25hdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9zaWduYXR1cmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGN0eV9hcnJvdyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfYXJyb3dcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdHlfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY3R5X29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiAnY3R4IC0+IGNsYXNzX3NpZ25hdHVyZSAtPiBjbGFzc19zaWduYXR1cmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIGN0eCBwY3NpZ19zZWxmIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIGN0eCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3NpZ19zZWxmID0gU3RkbGliLmZzdCBwY3NpZ19zZWxmO1xuICAgICAgICAgICAgcGNzaWdfZmllbGRzID0gU3RkbGliLmZzdCBwY3NpZ19maWVsZHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNzaWdfc2VsZlwiLCBTdGRsaWIuc25kIHBjc2lnX3NlbGYpO1xuICAgICAgICAgICAgICAoXCJwY3NpZ19maWVsZHNcIiwgU3RkbGliLnNuZCBwY3NpZ19maWVsZHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIGN0eCBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gU3RkbGliLmZzdCBwY3RmX2Rlc2M7XG4gICAgICAgICAgICBwY3RmX2xvYyA9IFN0ZGxpYi5mc3QgcGN0Zl9sb2M7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3RmX2Rlc2NcIiwgU3RkbGliLnNuZCBwY3RmX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY3RmX2xvY1wiLCBTdGRsaWIuc25kIHBjdGZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGN0Zl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGN0Zl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3RmX2luaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4XG4gICAgICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF1cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX3ZhbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl92YWxcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBjdHggZCBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eFxuICAgICAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGM7IFN0ZGxpYi5zbmQgZCBdXG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGN0Zl9tZXRob2QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfbWV0aG9kXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGN0Zl9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdGZfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0Zl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+XG4gICAgICAgICAgJ2N0eCAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zIC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHhcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IHBjaV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIGN0eCBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjaV9sb2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjaV92aXJ0ID0gU3RkbGliLmZzdCBwY2lfdmlydDtcbiAgICAgICAgICAgIHBjaV9wYXJhbXMgPSBTdGRsaWIuZnN0IHBjaV9wYXJhbXM7XG4gICAgICAgICAgICBwY2lfbmFtZSA9IFN0ZGxpYi5mc3QgcGNpX25hbWU7XG4gICAgICAgICAgICBwY2lfZXhwciA9IFN0ZGxpYi5mc3QgcGNpX2V4cHI7XG4gICAgICAgICAgICBwY2lfbG9jID0gU3RkbGliLmZzdCBwY2lfbG9jO1xuICAgICAgICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjaV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjaV92aXJ0XCIsIFN0ZGxpYi5zbmQgcGNpX3ZpcnQpO1xuICAgICAgICAgICAgICAoXCJwY2lfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcGNpX3BhcmFtcyk7XG4gICAgICAgICAgICAgIChcInBjaV9uYW1lXCIsIFN0ZGxpYi5zbmQgcGNpX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwY2lfZXhwclwiLCBTdGRsaWIuc25kIHBjaV9leHByKTtcbiAgICAgICAgICAgICAgKFwicGNpX2xvY1wiLCBTdGRsaWIuc25kIHBjaV9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2lfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjaV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6ICdjdHggLT4gY2xhc3NfZXhwciAtPiBjbGFzc19leHByICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgY3R4IHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNsX2Rlc2MgPSBTdGRsaWIuZnN0IHBjbF9kZXNjO1xuICAgICAgICAgICAgcGNsX2xvYyA9IFN0ZGxpYi5mc3QgcGNsX2xvYztcbiAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2xfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2xfZGVzY1wiLCBTdGRsaWIuc25kIHBjbF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGNsX2xvY1wiLCBTdGRsaWIuc25kIHBjbF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2xfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6ICdjdHggLT4gY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNsX2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNsX3N0cnVjdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX3N0cnVjdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGN0eCBkIGluXG4gICAgICAgICAgICAoIFBjbF9mdW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9mdW5cIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF0gKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjbF9hcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNsX2xldCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9sZXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjbF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogJ2N0eCAtPiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gY3R4IHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIGN0eCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3N0cl9zZWxmID0gU3RkbGliLmZzdCBwY3N0cl9zZWxmO1xuICAgICAgICAgICAgcGNzdHJfZmllbGRzID0gU3RkbGliLmZzdCBwY3N0cl9maWVsZHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNzdHJfc2VsZlwiLCBTdGRsaWIuc25kIHBjc3RyX3NlbGYpO1xuICAgICAgICAgICAgICAoXCJwY3N0cl9maWVsZHNcIiwgU3RkbGliLnNuZCBwY3N0cl9maWVsZHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIGN0eCBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjZl9kZXNjID0gU3RkbGliLmZzdCBwY2ZfZGVzYztcbiAgICAgICAgICAgIHBjZl9sb2MgPSBTdGRsaWIuZnN0IHBjZl9sb2M7XG4gICAgICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNmX2Rlc2NcIiwgU3RkbGliLnNuZCBwY2ZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjZl9sb2NcIiwgU3RkbGliLnNuZCBwY2ZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGNmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBjZl9pbmhlcml0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2luaGVyaXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl92YWwgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIlBjZl92YWxcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjZl9tZXRob2QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9tZXRob2RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjZl9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2ZfaW5pdGlhbGl6ZXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9pbml0aWFsaXplclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2ZfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19maWVsZF9raW5kIC0+IGNsYXNzX2ZpZWxkX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIENma192aXJ0dWFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJDZmtfdmlydHVhbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBDZmtfY29uY3JldGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiQ2ZrX2NvbmNyZXRlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfZGVjbGFyYXRpb24gLT4gY2xhc3NfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiAnY3R4IC0+IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBjdHggcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IFN0ZGxpYi5mc3QgcG10eV9kZXNjO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBTdGRsaWIuZnN0IHBtdHlfbG9jO1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG10eV9kZXNjXCIsIFN0ZGxpYi5zbmQgcG10eV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG10eV9sb2NcIiwgU3RkbGliLnNuZCBwbXR5X2xvYyk7XG4gICAgICAgICAgICAgIChcInBtdHlfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfc2lnbmF0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X3NpZ25hdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtdHlfZnVuY3RvciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2Z1bmN0b3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG10eV93aXRoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfd2l0aFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfdHlwZW9mIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X3R5cGVvZlwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X2FsaWFzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2FsaWFzXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXJcbiAgICAgICAgOiAnY3R4IC0+IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoVW5pdCwgc2VsZiNjb25zdHIgY3R4IFwiVW5pdFwiIFtdKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggTmFtZWQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTmFtZWRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6ICdjdHggLT4gc2lnbmF0dXJlIC0+IHNpZ25hdHVyZSAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW0gLT4gc2lnbmF0dXJlX2l0ZW0gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBjdHggcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzaWdfbG9jIGluXG4gICAgICAgICggeyBwc2lnX2Rlc2MgPSBTdGRsaWIuZnN0IHBzaWdfZGVzYzsgcHNpZ19sb2MgPSBTdGRsaWIuZnN0IHBzaWdfbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBzaWdfZGVzY1wiLCBTdGRsaWIuc25kIHBzaWdfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBzaWdfbG9jXCIsIFN0ZGxpYi5zbmQgcHNpZ19sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ192YWx1ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ192YWx1ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzaWdfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3R5cGVzdWJzdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ190eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ190eXBleHQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdHlwZXh0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19tb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHN1YnN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19yZWNtb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfcmVjbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHR5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHR5cGVzdWJzdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R0eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19vcGVuIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX29wZW5cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19pbmNsdWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2luY2x1ZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19jbGFzcyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19jbGFzc1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19jbGFzc190eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2NsYXNzX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHNpZ19leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1kX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtZF9uYW1lID0gU3RkbGliLmZzdCBwbWRfbmFtZTtcbiAgICAgICAgICAgIHBtZF90eXBlID0gU3RkbGliLmZzdCBwbWRfdHlwZTtcbiAgICAgICAgICAgIHBtZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtZF9sb2MgPSBTdGRsaWIuZnN0IHBtZF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1kX25hbWVcIiwgU3RkbGliLnNuZCBwbWRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtZF90eXBlXCIsIFN0ZGxpYi5zbmQgcG1kX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbWRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG1kX2xvY1wiLCBTdGRsaWIuc25kIHBtZF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXNfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1zX25hbWUgPSBTdGRsaWIuZnN0IHBtc19uYW1lO1xuICAgICAgICAgICAgcG1zX21hbmlmZXN0ID0gU3RkbGliLmZzdCBwbXNfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbXNfbG9jID0gU3RkbGliLmZzdCBwbXNfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtc19uYW1lXCIsIFN0ZGxpYi5zbmQgcG1zX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbXNfbWFuaWZlc3RcIiwgU3RkbGliLnNuZCBwbXNfbWFuaWZlc3QpO1xuICAgICAgICAgICAgICAoXCJwbXNfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtc19hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG1zX2xvY1wiLCBTdGRsaWIuc25kIHBtc19sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXRkX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtdGRfbmFtZSA9IFN0ZGxpYi5mc3QgcG10ZF9uYW1lO1xuICAgICAgICAgICAgcG10ZF90eXBlID0gU3RkbGliLmZzdCBwbXRkX3R5cGU7XG4gICAgICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtdGRfbG9jID0gU3RkbGliLmZzdCBwbXRkX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbXRkX25hbWVcIiwgU3RkbGliLnNuZCBwbXRkX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbXRkX3R5cGVcIiwgU3RkbGliLnNuZCBwbXRkX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbXRkX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbXRkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbXRkX2xvY1wiLCBTdGRsaWIuc25kIHBtdGRfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+XG4gICAgICAgICAgJ2N0eCAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zICogJ3JlcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgY3R4IHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG9wZW5fZXhwciA9IFN0ZGxpYi5mc3QgcG9wZW5fZXhwcjtcbiAgICAgICAgICAgIHBvcGVuX292ZXJyaWRlID0gU3RkbGliLmZzdCBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICAgIHBvcGVuX2xvYyA9IFN0ZGxpYi5mc3QgcG9wZW5fbG9jO1xuICAgICAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb3Blbl9leHByXCIsIFN0ZGxpYi5zbmQgcG9wZW5fZXhwcik7XG4gICAgICAgICAgICAgIChcInBvcGVuX292ZXJyaWRlXCIsIFN0ZGxpYi5zbmQgcG9wZW5fb3ZlcnJpZGUpO1xuICAgICAgICAgICAgICAoXCJwb3Blbl9sb2NcIiwgU3RkbGliLnNuZCBwb3Blbl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwb3Blbl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG9wZW5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBjdHggcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwaW5jbF9tb2QgPSBTdGRsaWIuZnN0IHBpbmNsX21vZDtcbiAgICAgICAgICAgIHBpbmNsX2xvYyA9IFN0ZGxpYi5mc3QgcGluY2xfbG9jO1xuICAgICAgICAgICAgcGluY2xfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGluY2xfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwaW5jbF9tb2RcIiwgU3RkbGliLnNuZCBwaW5jbF9tb2QpO1xuICAgICAgICAgICAgICAoXCJwaW5jbF9sb2NcIiwgU3RkbGliLnNuZCBwaW5jbF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwaW5jbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGluY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6ICdjdHggLT4gd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF90eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdWxlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHVsZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2R0eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHR5cGVzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2R0eXBlc3Vic3RcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX3R5cGVzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF90eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2RzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2RzdWJzdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiAnY3R4IC0+IG1vZHVsZV9leHByIC0+IG1vZHVsZV9leHByICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBjdHggcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IFN0ZGxpYi5mc3QgcG1vZF9kZXNjO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBTdGRsaWIuZnN0IHBtb2RfbG9jO1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1vZF9kZXNjXCIsIFN0ZGxpYi5zbmQgcG1vZF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG1vZF9sb2NcIiwgU3RkbGliLnNuZCBwbW9kX2xvYyk7XG4gICAgICAgICAgICAgIChcInBtb2RfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtb2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfZXhwcl9kZXNjIC0+IG1vZHVsZV9leHByX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2Rfc3RydWN0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX3N0cnVjdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfZnVuY3RvciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2Z1bmN0b3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgKCBQbW9kX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQbW9kX3VucGFjayAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF91bnBhY2tcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6ICdjdHggLT4gc3RydWN0dXJlIC0+IHN0cnVjdHVyZSAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBjdHggcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzdHJfbG9jIGluXG4gICAgICAgICggeyBwc3RyX2Rlc2MgPSBTdGRsaWIuZnN0IHBzdHJfZGVzYzsgcHN0cl9sb2MgPSBTdGRsaWIuZnN0IHBzdHJfbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBzdHJfZGVzY1wiLCBTdGRsaWIuc25kIHBzdHJfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBzdHJfbG9jXCIsIFN0ZGxpYi5zbmQgcHN0cl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfZXZhbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V2YWxcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX3ZhbHVlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfdmFsdWVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX3ByaW1pdGl2ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9wcmltaXRpdmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX3R5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl90eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl90eXBleHQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfdHlwZXh0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9tb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfcmVjbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3JlY21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9tb2R0eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX21vZHR5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9vcGVuIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX29wZW5cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9jbGFzcyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9jbGFzc1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9jbGFzc190eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2NsYXNzX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9pbmNsdWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2luY2x1ZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiAnY3R4IC0+IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2Yl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdmJfcGF0ID0gU3RkbGliLmZzdCBwdmJfcGF0O1xuICAgICAgICAgICAgcHZiX2V4cHIgPSBTdGRsaWIuZnN0IHB2Yl9leHByO1xuICAgICAgICAgICAgcHZiX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHZiX2xvYyA9IFN0ZGxpYi5mc3QgcHZiX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdmJfcGF0XCIsIFN0ZGxpYi5zbmQgcHZiX3BhdCk7XG4gICAgICAgICAgICAgIChcInB2Yl9leHByXCIsIFN0ZGxpYi5zbmQgcHZiX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwdmJfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB2Yl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBTdGRsaWIuc25kIHB2Yl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiAnY3R4IC0+IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWJfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1iX25hbWUgPSBTdGRsaWIuZnN0IHBtYl9uYW1lO1xuICAgICAgICAgICAgcG1iX2V4cHIgPSBTdGRsaWIuZnN0IHBtYl9leHByO1xuICAgICAgICAgICAgcG1iX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtYl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG1iX2xvYyA9IFN0ZGxpYi5mc3QgcG1iX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbWJfbmFtZVwiLCBTdGRsaWIuc25kIHBtYl9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG1iX2V4cHJcIiwgU3RkbGliLnNuZCBwbWJfZXhwcik7XG4gICAgICAgICAgICAgIChcInBtYl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1iX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbWJfbG9jXCIsIFN0ZGxpYi5zbmQgcG1iX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiAnY3R4IC0+IHRvcGxldmVsX3BocmFzZSAtPiB0b3BsZXZlbF9waHJhc2UgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0b3BfZGVmIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdG9wX2RlZlwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHRvcF9kaXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0b3BfZGlyXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgICAgIDogJ2N0eCAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBjdHggcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZGlyX25hbWUgPSBTdGRsaWIuZnN0IHBkaXJfbmFtZTtcbiAgICAgICAgICAgIHBkaXJfYXJnID0gU3RkbGliLmZzdCBwZGlyX2FyZztcbiAgICAgICAgICAgIHBkaXJfbG9jID0gU3RkbGliLmZzdCBwZGlyX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZGlyX25hbWVcIiwgU3RkbGliLnNuZCBwZGlyX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwZGlyX2FyZ1wiLCBTdGRsaWIuc25kIHBkaXJfYXJnKTtcbiAgICAgICAgICAgICAgKFwicGRpcl9sb2NcIiwgU3RkbGliLnNuZCBwZGlyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgY3R4IHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJhX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBkaXJhX2Rlc2MgPSBTdGRsaWIuZnN0IHBkaXJhX2Rlc2M7XG4gICAgICAgICAgICBwZGlyYV9sb2MgPSBTdGRsaWIuZnN0IHBkaXJhX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZGlyYV9kZXNjXCIsIFN0ZGxpYi5zbmQgcGRpcmFfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBkaXJhX2xvY1wiLCBTdGRsaWIuc25kIHBkaXJhX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfc3RyaW5nIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX3N0cmluZ1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGRpcl9pbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9pbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZGlyX2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfYm9vbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9ib29sXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2FzZXMgOiAnY3R4IC0+IGNhc2VzIC0+IGNhc2VzICogJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbltAQEBlbmRdXG5bQEBAZW5kXVxuIiwib3BlbiBJbXBvcnRcblxudHlwZSB0ID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnRcblxubGV0IHRvX2V4dGVuc2lvbiAoZXJyb3IgOiBBc3RsaWIuTG9jYXRpb24uRXJyb3IudCkgPVxuICBsZXQgb3BlbiBBc3RsaWIuTG9jYXRpb24uRXJyb3IgaW5cbiAgbGV0IG9wZW4gQXN0X2hlbHBlciBpblxuICBpZiBub3QgKGlzX3dlbGxfZm9ybWVkIGVycm9yKSB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJ0b19leHRlbnNpb246IGV4cGVjdGVkIGtpbmQgUmVwb3J0X2Vycm9yXCIpO1xuICBsZXQgc3ViX21zZ3MgPSBzdWJfbXNncyBlcnJvciBpblxuICBsZXQgbWFpbl9tc2cgPSBtYWluX21zZyBlcnJvciBpblxuICBsZXQgZXJyX2V4dGVuc2lvbl9uYW1lIGxvYyA9IHsgTG9jYXRpb24ubG9jOyB0eHQgPSBcIm9jYW1sLmVycm9yXCIgfSBpblxuICBsZXQgbWtfc3RyaW5nX2NvbnN0YW50IHggPSBTdHIuZXZhbCAoRXhwLmNvbnN0YW50IChDb25zdC5zdHJpbmcgeCkpIGluXG4gIGxldCBleHRlbnNpb25fb2Zfc3ViX21zZyAoc3ViX21zZyA6IHN0cmluZyBMb2NhdGlvbi5sb2MpID1cbiAgICBTdHIuZXh0ZW5zaW9uXG4gICAgICAoZXJyX2V4dGVuc2lvbl9uYW1lIHN1Yl9tc2cubG9jLCBQU3RyIFsgbWtfc3RyaW5nX2NvbnN0YW50IHN1Yl9tc2cudHh0IF0pXG4gIGluXG4gICggZXJyX2V4dGVuc2lvbl9uYW1lIG1haW5fbXNnLmxvYyxcbiAgICBQYXJzZXRyZWUuUFN0clxuICAgICAgKG1rX3N0cmluZ19jb25zdGFudCBtYWluX21zZy50eHQgOjogTGlzdC5tYXAgZXh0ZW5zaW9uX29mX3N1Yl9tc2cgc3ViX21zZ3MpXG4gIClcblxubGV0IHJlZ2lzdGVyX2Vycm9yX29mX2V4biA9IEFzdGxpYi5Mb2NhdGlvbi5yZWdpc3Rlcl9lcnJvcl9vZl9leG5cblxubGV0IG1lc3NhZ2UgZXJyb3IgPVxuICBsZXQgeyBBc3RsaWIuTG9jYXRpb24udHh0OyBfIH0gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IubWFpbl9tc2cgZXJyb3IgaW5cbiAgdHh0XG5cbmxldCBzZXRfbWVzc2FnZSA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5zZXRfbWFpbl9tc2dcblxubGV0IG1ha2UgfmxvYyB0eHQgfnN1YiA9XG4gIGxldCBzdWIgPSBMaXN0Lm1hcCAoZnVuIChsb2MsIHR4dCkgLT4geyBBc3RsaWIuTG9jYXRpb24ubG9jOyB0eHQgfSkgc3ViIGluXG4gIEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5tYWtlIH5zdWIgeyBsb2M7IHR4dCB9XG5cbmxldCB1cGRhdGVfbG9jID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnNldF9tYWluX2xvY1xuXG5sZXQgZ2V0X2xvY2F0aW9uIGVycm9yID1cbiAgbGV0IHsgQXN0bGliLkxvY2F0aW9uLmxvYzsgXyB9ID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLm1haW5fbXNnIGVycm9yIGluXG4gIGxvY1xuXG5sZXQgb2ZfZXhuID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLm9mX2V4blxubGV0IHJhaXNlIGVycm9yID0gcmFpc2UgKEFzdGxpYi5Mb2NhdGlvbi5FcnJvciBlcnJvcilcbiIsIm1vZHVsZSBEb19ub3RfdXNlX2RpcmVjdGx5ID0gc3RydWN0IGVuZFxubW9kdWxlIEFmbF9pbnN0cnVtZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFmbF9pbnN0cnVtZW50IGluc3RlYWRcIl1cbm1vZHVsZSBBbGlhc19hbmFseXNpcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BbGlhc19hbmFseXNpcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQWxsb2NhdGVkX2NvbnN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFsbG9jYXRlZF9jb25zdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQW5ub3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEFyY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXJjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgQXJnX2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFyZ19oZWxwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzbWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21nZW4gaW5zdGVhZFwiXVxubW9kdWxlIEFzbWxpYnJhcmlhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21saWJyYXJpYW4gaW5zdGVhZFwiXVxubW9kdWxlIEFzbWxpbmsgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtbGluayBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtcGFja2FnZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtcGFja2FnZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9oZWxwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfaGVscGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfaW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfaXRlcmF0b3IgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfaXRlcmF0b3IgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9tYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfbWFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBc3R0eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQXR0cl9oZWxwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5BdHRyX2hlbHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXVnbWVudF9zcGVjaWFsaXNlZF9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkF1Z21lbnRfc3BlY2lhbGlzZWRfYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgQmFja2VuZF9pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBCYWNrZW5kX3ZhciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CYWNrZW5kX3ZhciBpbnN0ZWFkXCJdXG5tb2R1bGUgQmludXRpbHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CaW51dGlscyBpbnN0ZWFkXCJdXG5tb2R1bGUgQnJhbmNoX3JlbGF4YXRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnJhbmNoX3JlbGF4YXRpb24gaW5zdGVhZFwiXVxubW9kdWxlIEJyYW5jaF9yZWxheGF0aW9uX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEJ0eXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnR5cGUgaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWxkX2V4cG9ydF9pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkJ1aWxkX2V4cG9ydF9pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBCdWlsZF9wYXRoX3ByZWZpeF9tYXAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CdWlsZF9wYXRoX3ByZWZpeF9tYXAgaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWx0aW5fYXR0cmlidXRlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ1aWx0aW5fYXR0cmlidXRlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZWxpYnJhcmlhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWxpYnJhcmlhbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZWxpbmsgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkJ5dGVsaW5rIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlcGFja2FnZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkJ5dGVwYWNrYWdlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZXNlY3Rpb25zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnl0ZXNlY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBDU0UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ1NFIGluc3RlYWRcIl1cbm1vZHVsZSBDU0VnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ1NFZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBDYW1saW50ZXJuYWxNZW5oaXJMaWIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DYW1saW50ZXJuYWxNZW5oaXJMaWIgaW5zdGVhZFwiXVxubW9kdWxlIENjb21wID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ2NvbXAgaW5zdGVhZFwiXVxubW9kdWxlIENsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xhbWJkYV9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsYW1iZGFfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xmbGFncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNsZmxhZ3MgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9jb252ZXJzaW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfY29udmVyc2lvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9jb252ZXJzaW9uX2F1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2NvbnZlcnNpb25fYXV4IGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2VsZW1lbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9lbGVtZW50IGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2lkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfaWQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfbWlkZGxlX2VuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX21pZGRsZV9lbmQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfb2Zmc2V0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX29mZnNldHMgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfb3JpZ2luID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfb3JpZ2luIGluc3RlYWRcIl1cbm1vZHVsZSBDbWlfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ21pX2Zvcm1hdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tX2hlbHBlcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tX2hlbHBlcnMgaW5zdGVhZFwiXVxubW9kdWxlIENtbV9pbnZhcmlhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbV9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1nZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1nZW5fc3RhdGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tZ2VuX3N0YXRlIGluc3RlYWRcIl1cbm1vZHVsZSBDbW9fZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDbXQyYW5ub3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbXQyYW5ub3QgaW5zdGVhZFwiXVxubW9kdWxlIENtdF9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbXRfZm9ybWF0IGluc3RlYWRcIl1cbm1vZHVsZSBDbXhfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDbXhzX2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ29sb3JpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29sb3JpbmcgaW5zdGVhZFwiXVxubW9kdWxlIENvbWJhbGxvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db21iYWxsb2MgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBlbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21wZW52IGluc3RlYWRcIl1cbm1vZHVsZSBDb21waWxhdGlvbl91bml0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbXBpbGF0aW9uX3VuaXQgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkNvbXBpbGUgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGVfY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29tcGlsZV9jb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db21waWxlbnYgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBtaXNjID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29tcG1pc2MgaW5zdGVhZFwiXVxubW9kdWxlIENvbXByZXNzaW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29tcHJlc3Npb24gaW5zdGVhZFwiXVxubW9kdWxlIENvbmZpZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbmZpZyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29uZmlnX2Jvb3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENvbmZpZ19tYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDb25zaXN0YmwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db25zaXN0YmwgaW5zdGVhZFwiXVxubW9kdWxlIENvbnZlcnRfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db252ZXJ0X3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIEN0eXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ3R5cGUgaW5zdGVhZFwiXVxubW9kdWxlIERhdGFmbG93ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkRhdGFmbG93IGluc3RlYWRcIl1cbm1vZHVsZSBEYXRhcmVwciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRhdGFyZXByIGluc3RlYWRcIl1cbm1vZHVsZSBEZWFkY29kZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5EZWFkY29kZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRGVidWdpbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGVidWdpbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBEZXBlbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EZXBlbmQgaW5zdGVhZFwiXVxubW9kdWxlIERpZmZpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EaWZmaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBEaWZmaW5nX3dpdGhfa2V5cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRpZmZpbmdfd2l0aF9rZXlzIGluc3RlYWRcIl1cbm1vZHVsZSBEbGwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EbGwgaW5zdGVhZFwiXVxubW9kdWxlIERvY3N0cmluZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Eb2NzdHJpbmdzIGluc3RlYWRcIl1cbm1vZHVsZSBEb21haW5zdGF0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRvbWFpbnN0YXRlIGluc3RlYWRcIl1cbm1vZHVsZSBFZmZlY3RfYW5hbHlzaXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRWZmZWN0X2FuYWx5c2lzIGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkVtaXQgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXRhdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRW1pdGF1eCBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdGNvZGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkVtaXRjb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0ZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBFbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5FbnYgaW5zdGVhZFwiXVxubW9kdWxlIEVudmF1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVudmF1eCBpbnN0ZWFkXCJdXG5tb2R1bGUgRXJyb3JzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5FcnJvcnMgaW5zdGVhZFwiXVxubW9kdWxlIEVycm9ydHJhY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5FcnJvcnRyYWNlIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXhwb3J0X2lkIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwb3J0X2luZm9fZm9yX3BhY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXhwb3J0X2luZm9fZm9yX3BhY2sgaW5zdGVhZFwiXVxubW9kdWxlIEV4cHVuZ2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEV4dHJhY3RfcHJvamVjdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXh0cmFjdF9wcm9qZWN0aW9ucyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmluZF9yZWN1cnNpdmVfZnVuY3Rpb25zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZpbmRfcmVjdXJzaXZlX2Z1bmN0aW9ucyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX2ludmFyaWFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX2l0ZXJhdG9ycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX2l0ZXJhdG9ycyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV9taWRkbGVfZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfbWlkZGxlX2VuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV90b19jbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfdG9fY2xhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV91dGlscyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX3V0aWxzIGluc3RlYWRcIl1cbm1vZHVsZSBGcmVzaGVuaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZyZXNoZW5pbmcgaW5zdGVhZFwiXVxubW9kdWxlIEdlbnByaW50dmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5HZW5wcmludHZhbCBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRfdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSWRfdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIElkZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSWRlbnQgaW5zdGVhZFwiXVxubW9kdWxlIElkZW50aWZpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLklkZW50aWZpYWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW1wb3J0X2FwcHJveCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbXBvcnRfYXBwcm94IGluc3RlYWRcIl1cbm1vZHVsZSBJbmNsdWRlY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVjb3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZWNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVtb2QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlbW9kIGluc3RlYWRcIl1cbm1vZHVsZSBJbmNsdWRlbW9kX2Vycm9ycHJpbnRlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVtb2RfZXJyb3JwcmludGVyIGluc3RlYWRcIl1cbm1vZHVsZSBJbmNvbnN0YW50X2lkZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmNvbnN0YW50X2lkZW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5pdGlhbGl6ZV9zeW1ib2xfdG9fbGV0X3N5bWJvbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Jbml0aWFsaXplX3N5bWJvbF90b19sZXRfc3ltYm9sIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmVfYW5kX3NpbXBsaWZ5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluZV9hbmRfc2ltcGxpZnkgaW5zdGVhZFwiXVxubW9kdWxlIElubGluZV9hbmRfc2ltcGxpZnlfYXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluZV9hbmRfc2ltcGxpZnlfYXV4IGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19jb3N0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX2Nvc3QgaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2RlY2lzaW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX2RlY2lzaW9uIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19kZWNpc2lvbl9pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBJbmxpbmluZ19zdGF0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19zdGF0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfc3RhdHNfdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfc3RhdHNfdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX3RyYW5zZm9ybXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfdHJhbnNmb3JtcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5zdHJ1Y3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkluc3RydWN0IGluc3RlYWRcIl1cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludGVyZiBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJuYWxfdmFyaWFibGVfbmFtZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJuYWxfdmFyaWFibGVfbmFtZXMgaW5zdGVhZFwiXVxubW9kdWxlIEludGVydmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludGVydmFsIGluc3RlYWRcIl1cbm1vZHVsZSBJbnZhcmlhbnRfcGFyYW1zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludmFyaWFudF9wYXJhbXMgaW5zdGVhZFwiXVxubW9kdWxlIExhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGF6eV9iYWNrdHJhY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5MYXp5X2JhY2t0cmFjayBpbnN0ZWFkXCJdXG5tb2R1bGUgTGV4ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5MZXhlciBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9jb2RlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpZnRfY29kZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9jb25zdGFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9jb25zdGFudHMgaW5zdGVhZFwiXVxubW9kdWxlIExpZnRfbGV0X3RvX2luaXRpYWxpemVfc3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpZnRfbGV0X3RvX2luaXRpYWxpemVfc3ltYm9sIGluc3RlYWRcIl1cbm1vZHVsZSBMaW5lYXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluZWFyIGluc3RlYWRcIl1cbm1vZHVsZSBMaW5lYXJfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmVhcl9mb3JtYXQgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhcml6ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5lYXJpemUgaW5zdGVhZFwiXVxubW9kdWxlIExpbmthZ2VfbmFtZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5rYWdlX25hbWUgaW5zdGVhZFwiXVxubW9kdWxlIExpbnNjYW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluc2NhbiBpbnN0ZWFkXCJdXG5tb2R1bGUgTGl2ZW5lc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGl2ZW5lc3MgaW5zdGVhZFwiXVxubW9kdWxlIExvYWRfcGF0aCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvYWRfcGF0aCBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9jYWxfc3RvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb2NhbF9zdG9yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9jYXRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb2NhdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9uZ2lkZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9uZ2lkZW50IGluc3RlYWRcIl1cbm1vZHVsZSBNYWNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk1hY2ggaW5zdGVhZFwiXVxubW9kdWxlIE1haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIE1haW5fYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1haW5fYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFpbmRyaXZlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuTWFpbmRyaXZlciBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFrZWRlcGVuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1ha2VkZXBlbmQgaW5zdGVhZFwiXVxubW9kdWxlIE1hdGNoaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWF0Y2hpbmcgaW5zdGVhZFwiXVxubW9kdWxlIE1ldGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NZXRhIGluc3RlYWRcIl1cbm1vZHVsZSBNaXNjID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWlzYyBpbnN0ZWFkXCJdXG5tb2R1bGUgTXR5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTXV0YWJsZV92YXJpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5NdXRhYmxlX3ZhcmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBOdW1iZXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTnVtYmVycyBpbnN0ZWFkXCJdXG5tb2R1bGUgT3Bjb2RlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk9wY29kZXMgaW5zdGVhZFwiXVxubW9kdWxlIE9wcmludCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk9wcmludCBpbnN0ZWFkXCJdXG5tb2R1bGUgT3B0Y29tcGlsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5PcHRjb21waWxlIGluc3RlYWRcIl1cbm1vZHVsZSBPcHRlcnJvcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuT3B0ZXJyb3JzIGluc3RlYWRcIl1cbm1vZHVsZSBPcHRtYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBPcHRtYWluZHJpdmVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk9wdG1haW5kcml2ZXIgaW5zdGVhZFwiXVxubW9kdWxlIE91dGNvbWV0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBQYXJhbWV0ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUGFyYW1ldGVyIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJtYXRjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcm1hdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJzZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcnNlIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJzZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXJzZXIgaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNldHJlZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgUGFzc193cmFwcGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlBhc3Nfd3JhcHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgUGF0aCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhdGggaW5zdGVhZFwiXVxubW9kdWxlIFBhdHRlcm5zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGF0dGVybnMgaW5zdGVhZFwiXVxubW9kdWxlIFBlcnNpc3RlbnRfZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGVyc2lzdGVudF9lbnYgaW5zdGVhZFwiXVxubW9kdWxlIFBvbGxpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUG9sbGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgUHBhcnNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHBhcnNlIGluc3RlYWRcIl1cbm1vZHVsZSBQcHJpbnRhc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcHJpbnRhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFByZWRlZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByZWRlZiBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbWl0aXZlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbWl0aXZlIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50YXN0IGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRjbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNsYW1iZGFfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNsYW1iZGFfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRjbW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRjbW0gaW5zdGVhZFwiXVxubW9kdWxlIFByaW50aW5zdHIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLlByaW50aW5zdHIgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bGluZWFyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50bGluZWFyIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludG1hY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRtYWNoIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHBhdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50cGF0IGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHR5cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50dHlwIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludHR5cGVkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnR0eXBlZCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qcm9jIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9maWxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJvZmlsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJvamVjdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qcm9qZWN0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBSZWZfdG9fdmFyaWFibGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlZl90b192YXJpYWJsZXMgaW5zdGVhZFwiXVxubW9kdWxlIFJlZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZWcgaW5zdGVhZFwiXVxubW9kdWxlIFJlbG9hZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZWxvYWQgaW5zdGVhZFwiXVxubW9kdWxlIFJlbG9hZGdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZWxvYWRnZW4gaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV9mcmVlX3ZhcnNfZXF1YWxfdG9fYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfZnJlZV92YXJzX2VxdWFsX3RvX2FyZ3MgaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV91bnVzZWRfYXJndW1lbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV91bnVzZWRfYXJndW1lbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfdW51c2VkX2Nsb3N1cmVfdmFycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfdW51c2VkX2Nsb3N1cmVfdmFycyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX3VudXNlZF9wcm9ncmFtX2NvbnN0cnVjdHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX3VudXNlZF9wcm9ncmFtX2NvbnN0cnVjdHMgaW5zdGVhZFwiXVxubW9kdWxlIFJ1bnRpbWVkZWYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5SdW50aW1lZGVmIGluc3RlYWRcIl1cbm1vZHVsZSBTY2hlZGdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TY2hlZGdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2NoZWR1bGluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TY2hlZHVsaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBTZWxlY3RnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2VsZWN0Z2VuIGluc3RlYWRcIl1cbm1vZHVsZSBTZWxlY3Rpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2VsZWN0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBTZW1hbnRpY3Nfb2ZfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZW1hbnRpY3Nfb2ZfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2V0X29mX2Nsb3N1cmVzX2lkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNldF9vZl9jbG9zdXJlc19pZCBpbnN0ZWFkXCJdXG5tb2R1bGUgU2V0X29mX2Nsb3N1cmVzX29yaWdpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZXRfb2ZfY2xvc3VyZXNfb3JpZ2luIGluc3RlYWRcIl1cbm1vZHVsZSBTaGFwZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlNoYXBlIGluc3RlYWRcIl1cbm1vZHVsZSBTaGFwZV9yZWR1Y2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TaGFwZV9yZWR1Y2UgaW5zdGVhZFwiXVxubW9kdWxlIFNoYXJlX2NvbnN0YW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaGFyZV9jb25zdGFudHMgaW5zdGVhZFwiXVxubW9kdWxlIFNpZ25hdHVyZV9ncm91cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlNpZ25hdHVyZV9ncm91cCBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxlX3ZhbHVlX2FwcHJveCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGVfdmFsdWVfYXBwcm94IGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2ltcGxpZiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHMgaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWZ5X2JveGVkX2ludGVnZXJfb3BzX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFNpbXBsaWZ5X2NvbW1vbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9jb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWZ5X3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2ltcGxpZnlfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU3BpbGwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3BpbGwgaW5zdGVhZFwiXVxubW9kdWxlIFNwbGl0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNwbGl0IGluc3RlYWRcIl1cbm1vZHVsZSBTdGFja2ZyYW1lID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0YWNrZnJhbWUgaW5zdGVhZFwiXVxubW9kdWxlIFN0YWNrZnJhbWVnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3RhY2tmcmFtZWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU3RhdGljX2V4Y2VwdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TdGF0aWNfZXhjZXB0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBTdHJtYXRjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TdHJtYXRjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3Ryb25nbHlfY29ubmVjdGVkX2NvbXBvbmVudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TdHJvbmdseV9jb25uZWN0ZWRfY29tcG9uZW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgU3R5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3R5cGVzIGluc3RlYWRcIl1cbm1vZHVsZSBTdWJzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN1YnN0IGluc3RlYWRcIl1cbm1vZHVsZSBTd2l0Y2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Td2l0Y2ggaW5zdGVhZFwiXVxubW9kdWxlIFN5bWJvbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIFN5bXRhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3ltdGFibGUgaW5zdGVhZFwiXVxubW9kdWxlIFN5bnRheGVyciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN5bnRheGVyciBpbnN0ZWFkXCJdXG5tb2R1bGUgVGFnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlRhZyBpbnN0ZWFkXCJdXG5tb2R1bGUgVGFyZ2V0aW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGFyZ2V0aW50IGluc3RlYWRcIl1cbm1vZHVsZSBUYXN0X2l0ZXJhdG9yID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGFzdF9pdGVyYXRvciBpbnN0ZWFkXCJdXG5tb2R1bGUgVGFzdF9tYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXN0X21hcHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgVGVybWluZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UZXJtaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgVGhyZWFkX3Nhbml0aXplciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5UaHJlYWRfc2FuaXRpemVyIGluc3RlYWRcIl1cbm1vZHVsZSBUbWMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UbWMgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGNvbW1vbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wY29tbW9uIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BkaXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BkaXJzIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BldmFsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BldmFsIGluc3RlYWRcIl1cbm1vZHVsZSBUb3Bob29rcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgVG9wbG9vcCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wbG9vcCBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wbWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wbWFpbiBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wcHJpbnRlcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcHByaW50ZXJzIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BzdGFydCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgVHJhY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRyYWNlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xhdHRyaWJ1dGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xhdHRyaWJ1dGUgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGNsYXNzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xjb3JlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xtb2QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xtb2QgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbG9iaiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbG9iaiBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNscHJpbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbHByaW0gaW5zdGVhZFwiXVxubW9kdWxlIFRyYXZlcnNlX2Zvcl9leHBvcnRlZF9zeW1ib2xzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlRyYXZlcnNlX2Zvcl9leHBvcnRlZF9zeW1ib2xzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlX2ltbWVkaWFjeSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVfaW1tZWRpYWN5IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVjb3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2wgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX2ltbWVkaWFjeSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX2ltbWVkaWFjeSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfcHJvcGVydGllcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3Byb3BlcnRpZXMgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3NlcGFyYWJpbGl0eSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3NlcGFyYWJpbGl0eSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfdW5ib3hlZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3VuYm94ZWQgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3ZhcmlhbmNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfdmFyaWFuY2UgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkdHJlZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkdHJlZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZW1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVtb2QgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVvcHQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlb3B0IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBldGV4cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGV0ZXhwIGluc3RlYWRcIl1cbm1vZHVsZSBVbl9hbmYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5fYW5mIGluc3RlYWRcIl1cbm1vZHVsZSBVbmJveF9jbG9zdXJlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9jbG9zdXJlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfZnJlZV92YXJzX29mX2Nsb3N1cmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuYm94X2ZyZWVfdmFyc19vZl9jbG9zdXJlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfc3BlY2lhbGlzZWRfYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9zcGVjaWFsaXNlZF9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBVbml0X2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Vbml0X2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIFVudHlwZWFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlVudHlwZWFzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgVmFsdWVfcmVjX2NoZWNrID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVmFsdWVfcmVjX2NoZWNrIGluc3RlYWRcIl1cbm1vZHVsZSBWYWx1ZV9yZWNfY29tcGlsZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5WYWx1ZV9yZWNfY29tcGlsZXIgaW5zdGVhZFwiXVxubW9kdWxlIFZhbHVlX3JlY190eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgVmFyX3dpdGhpbl9jbG9zdXJlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlZhcl93aXRoaW5fY2xvc3VyZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVmFyaWFibGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVmFyaWFibGUgaW5zdGVhZFwiXVxubW9kdWxlIFdhcm5pbmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uV2FybmluZ3MgaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9hc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFg4Nl9kc2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X2RzbCBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X2dhcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfZ2FzIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfbWFzbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfbWFzbSBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X3Byb2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X3Byb2MgaW5zdGVhZFwiXVxuIiwib3BlbiBTdGRMYWJlbHNcblxubGV0IHBhdGRpZmZfY21kIH51c2VfY29sb3IgfmV4dHJhX3BhdGRpZmZfYXJncyA9XG4gIGxldCBhcmdzID1cbiAgICBMaXN0LmNvbmNhdFxuICAgICAgW1xuICAgICAgICBbIFwiLWtlZXAtd2hpdGVzcGFjZVwiIF07XG4gICAgICAgIFsgXCItbG9jYXRpb24tc3R5bGUgb21ha2VcIiBdO1xuICAgICAgICAoaWYgdXNlX2NvbG9yIHRoZW4gW10gZWxzZSBbIFwiLWFzY2lpXCIgXSk7XG4gICAgICAgIGV4dHJhX3BhdGRpZmZfYXJncztcbiAgICAgIF1cbiAgaW5cbiAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIChcInBhdGRpZmZcIiA6OiBhcmdzKVxuXG5sZXQgcHJpbnQgP2RpZmZfY29tbWFuZCA/KGV4dHJhX3BhdGRpZmZfYXJncyA9IFtdKSA/KHVzZV9jb2xvciA9IGZhbHNlKSB+ZmlsZTFcbiAgICB+ZmlsZTIgKCkgPVxuICBsZXQgZXhlYyBjbWQgPVxuICAgIGxldCBjbWQgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlcyAlcyAlcyAxPiYyXCIgY21kIChGaWxlbmFtZS5xdW90ZSBmaWxlMSlcbiAgICAgICAgKEZpbGVuYW1lLnF1b3RlIGZpbGUyKVxuICAgIGluXG4gICAgbWF0Y2ggU3lzLmNvbW1hbmQgY21kIHdpdGhcbiAgICB8IDAgLT4gYFNhbWVcbiAgICB8IDEgLT4gYERpZmZlcmVudFxuICAgIHwgbiAtPiBgRXJyb3IgKG4sIGNtZClcbiAgaW5cbiAgbWF0Y2ggZGlmZl9jb21tYW5kIHdpdGhcbiAgfCBTb21lIHMgLT4gaWdub3JlIChleGVjIHMgOiBbPiBgU2FtZSB8IGBEaWZmZXJlbnQgfCBgRXJyb3Igb2YgaW50ICogc3RyaW5nIF0pXG4gIHwgTm9uZSAtPiAoXG4gICAgICBtYXRjaCBleGVjIChwYXRkaWZmX2NtZCB+dXNlX2NvbG9yIH5leHRyYV9wYXRkaWZmX2FyZ3MpIHdpdGhcbiAgICAgIHwgYFNhbWUgLT5cbiAgICAgICAgICAoKiBwYXRkaWZmIHByb2R1Y2VkIG5vIG91dHB1dCwgZmFsbGJhY2sgdG8gZGlmZiAtdSAqKVxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lIDEsIGNoYXJhY3RlcnMgMC0wOlxcbiUhXCIgZmlsZTE7XG4gICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAoZXhlYyBcImRpZmYgLXVcIiA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSlcbiAgICAgIHwgYERpZmZlcmVudCAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgc3VjY2Vzc2Z1bGx5IGZvdW5kIGEgZGlmZmVyZW5jZSAqKVxuICAgICAgICAgICgpXG4gICAgICB8IGBFcnJvciAoZXJyX2NvZGUsIGNtZCkgLT5cbiAgICAgICAgICAoKiBwYXRkaWZmIHRocmV3IGFuIGVycm9yLi4uIHBlcmhhcHMgaXQgd2Fzbid0IGluc3RhbGxlZD8gZmFsbGJhY2sgdG8gZGlmZiAtdSAqKVxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICBcIkVycm9yOlxcblxcXG4gICAgICAgICAgICAgPiAlUyBleGl0ZWQgd2l0aCBjb2RlICVkXFxuXFxcbiAgICAgICAgICAgICA+IFBlcmhhcHMgcGF0ZGlmZiBpcyBub3QgaW5zdGFsbGVkPyBIaW50LCB0cnk6IG9wYW0gaW5zdGFsbCBwYXRkaWZmXFxuXFxcbiAgICAgICAgICAgICA+IEZhbGxpbmcgYmFjayB0byBkaWZmIC11XFxuXFxuXCJcbiAgICAgICAgICAgIGNtZCBlcnJfY29kZTtcbiAgICAgICAgICBQcmludGYuZXByaW50ZiBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAxLCBjaGFyYWN0ZXJzIDAtMDpcXG4lIVwiIGZpbGUxO1xuICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgKGV4ZWMgXCJkaWZmIC11XCIgOiBbPiBgU2FtZSB8IGBEaWZmZXJlbnQgfCBgRXJyb3Igb2YgaW50ICogc3RyaW5nIF0pKVxuIiwidHlwZSBkZXJpdmVyID0gLi5cblxubGV0IGFsbCA9IEhhc2h0YmwuY3JlYXRlIDQyXG5cbmxldCByZWdpc3RlciBuYW1lIGRlcml2ZXIgPVxuICBpZiBIYXNodGJsLm1lbSBhbGwgbmFtZSB0aGVuXG4gICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICBcIlBweF9kZXJpdmllcnMucmVnaXN0ZXI6ICVTIGlzIGFscmVhZHkgcmVnaXN0ZXJlZFwiIG5hbWU7XG4gIEhhc2h0YmwuYWRkIGFsbCBuYW1lIGRlcml2ZXJcblxubGV0IGxvb2t1cCBuYW1lID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIGFsbCBuYW1lIHdpdGhcbiAgfCBkcnYgLT4gU29tZSBkcnZcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxubGV0IGRlcml2ZXJzICgpID1cbiAgSGFzaHRibC5mb2xkIChmdW4gbmFtZSBkcnYgYWNjIC0+IChuYW1lLCBkcnYpIDo6IGFjYykgYWxsIFtdXG4iLCJtb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIG1hcCA9ICdhIC0+ICdhXG4gIHR5cGUgJ2EgaXRlciA9ICdhIC0+IHVuaXRcbiAgdHlwZSAoJ2EsICdhY2MpIGZvbGQgPSAnYSAtPiAnYWNjIC0+ICdhY2NcbiAgdHlwZSAoJ2EsICdhY2MpIGZvbGRfbWFwID0gJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2NcbiAgdHlwZSAoJ2N0eCwgJ2EpIG1hcF93aXRoX2NvbnRleHQgPSAnY3R4IC0+ICdhIC0+ICdhXG4gIHR5cGUgKCdhLCAncmVzKSBsaWZ0ID0gJ2EgLT4gJ3Jlc1xuICB0eXBlICgnY3R4LCAnYSwgJ3JlcykgbGlmdF9tYXBfd2l0aF9jb250ZXh0ID0gJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXNcbmVuZFxuXG5jbGFzcyBtYXAgPVxuICBsZXQgYW55IHggPSB4IGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiBpbnQgVC5tYXAgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogc3RyaW5nIFQubWFwID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiBib29sIFQubWFwID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiBjaGFyIFQubWFwID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICdhIFQubWFwIC0+ICdhIG9wdGlvbiBULm1hcCA9XG4gICAgICBmdW4gZiB4IC0+IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gJ2EgVC5tYXAgLT4gJ2EgbGlzdCBULm1hcCA9IExpc3QubWFwXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICdhIFQubWFwIC0+ICdhIGFycmF5IFQubWFwID0gQXJyYXkubWFwXG4gIGVuZFxuXG5jbGFzcyBpdGVyID1cbiAgbGV0IGFueSA9IGlnbm9yZSBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogaW50IFQuaXRlciA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiBzdHJpbmcgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiBib29sIFQuaXRlciA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogY2hhciBULml0ZXIgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gJ2EgVC5pdGVyIC0+ICdhIG9wdGlvbiBULml0ZXIgPVxuICAgICAgZnVuIGYgeCAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiAoKSB8IFNvbWUgeCAtPiBmIHhcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICdhIFQuaXRlciAtPiAnYSBsaXN0IFQuaXRlciA9IExpc3QuaXRlclxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAnYSBULml0ZXIgLT4gJ2EgYXJyYXkgVC5pdGVyID0gQXJyYXkuaXRlclxuICBlbmRcblxuY2xhc3MgWydhY2NdIGZvbGQgPVxuICBsZXQgYW55IF8gYWNjID0gYWNjIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiAoaW50LCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogKHN0cmluZywgJ2FjYykgVC5mb2xkID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiAoYm9vbCwgJ2FjYykgVC5mb2xkID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiAoY2hhciwgJ2FjYykgVC5mb2xkID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkIC0+ICgnYSBvcHRpb24sICdhY2MpIFQuZm9sZCA9XG4gICAgICBmdW4gZiB4IGFjYyAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiBhY2MgfCBTb21lIHggLT4gZiB4IGFjY1xuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIGxpc3QsICdhY2MpIFQuZm9sZCA9XG4gICAgICBsZXQgcmVjIGxvb3AgZiBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBhY2MgfCB4IDo6IGwgLT4gbG9vcCBmIGwgKGYgeCBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcFxuXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkIC0+ICgnYSBhcnJheSwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGZ1biBmIGEgYWNjIC0+XG4gICAgICAgIGxldCByID0gcmVmIGFjYyBpblxuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgICAgciA6PSBmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkgIXJcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIXJcbiAgZW5kXG5cbmNsYXNzIFsnYWNjXSBmb2xkX21hcCA9XG4gIGxldCBhbnkgeCBhY2MgPSAoeCwgYWNjKSBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogKGludCwgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiAoYm9vbCwgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogKGNoYXIsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAnYWNjKSBULmZvbGRfbWFwIC0+ICgnYSBvcHRpb24sICdhY2MpIFQuZm9sZF9tYXAgPVxuICAgICAgZnVuIGYgeCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoTm9uZSwgYWNjKVxuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgbGV0IHgsIGFjYyA9IGYgeCBhY2MgaW5cbiAgICAgICAgICAgIChTb21lIHgsIGFjYylcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkX21hcCAtPiAoJ2EgbGlzdCwgJ2FjYykgVC5mb2xkX21hcCA9XG4gICAgICBsZXQgcmVjIGxvb3AgZiBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IChbXSwgYWNjKVxuICAgICAgICB8IHggOjogbCAtPlxuICAgICAgICAgICAgbGV0IHgsIGFjYyA9IGYgeCBhY2MgaW5cbiAgICAgICAgICAgIGxldCBsLCBhY2MgPSBsb29wIGYgbCBhY2MgaW5cbiAgICAgICAgICAgICh4IDo6IGwsIGFjYylcbiAgICAgIGluXG4gICAgICBsb29wXG5cbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGRfbWFwIC0+ICgnYSBhcnJheSwgJ2FjYykgVC5mb2xkX21hcCA9XG4gICAgICBmdW4gZiBhIGFjYyAtPlxuICAgICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICAgICAgaWYgbGVuID0gMCB0aGVuIChhLCBhY2MpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgeCwgYWNjID0gZiAoQXJyYXkudW5zYWZlX2dldCBhIDApIGFjYyBpblxuICAgICAgICAgIGxldCBhJyA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiBhY2MgaW5cbiAgICAgICAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgICAgbGV0IHgsIGFjYyA9IGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSAhciBpblxuICAgICAgICAgICAgQXJyYXkudW5zYWZlX3NldCBhJyBpIHg7XG4gICAgICAgICAgICByIDo9IGFjY1xuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgKGEnLCAhcilcbiAgZW5kXG5cbmNsYXNzIFsnY3R4XSBtYXBfd2l0aF9jb250ZXh0ID1cbiAgbGV0IGFueSBfIHggPSB4IGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiAoJ2N0eCwgaW50KSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogKCdjdHgsIHN0cmluZykgVC5tYXBfd2l0aF9jb250ZXh0ID0gYW55XG4gICAgbWV0aG9kIGJvb2wgOiAoJ2N0eCwgYm9vbCkgVC5tYXBfd2l0aF9jb250ZXh0ID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiAoJ2N0eCwgY2hhcikgVC5tYXBfd2l0aF9jb250ZXh0ID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhKSBULm1hcF93aXRoX2NvbnRleHQgLT4gKCdjdHgsICdhIG9wdGlvbikgVC5tYXBfd2l0aF9jb250ZXh0XG4gICAgICAgID1cbiAgICAgIGZ1biBmIGN0eCB4IC0+IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiBjdHggeClcblxuICAgIG1ldGhvZCBsaXN0XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhKSBULm1hcF93aXRoX2NvbnRleHQgLT4gKCdjdHgsICdhIGxpc3QpIFQubWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggbCAtPiBMaXN0Lm1hcCAoZiBjdHgpIGxcblxuICAgIG1ldGhvZCBhcnJheVxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSkgVC5tYXBfd2l0aF9jb250ZXh0IC0+ICgnY3R4LCAnYSBhcnJheSkgVC5tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCBhIC0+IEFycmF5Lm1hcCAoZiBjdHgpIGFcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydyZXNdIGxpZnQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gKCdhLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAoaW50LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAoc3RyaW5nLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogKGJvb2wsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAoY2hhciwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgYXJyYXkgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGFycmF5LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBmbG9hdCA6IChmbG9hdCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50MzIgOiAoaW50MzIsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDY0IDogKGludDY0LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBuYXRpdmVpbnQgOiAobmF0aXZlaW50LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCB1bml0IDogKHVuaXQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdyZXMgbGlzdCAtPiAncmVzXG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBvcHRpb24sICdyZXMpIFQubGlmdCA9XG4gICAgICBmdW4gZiB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc2VsZiNjb25zdHIgXCJOb25lXCIgW11cbiAgICAgICAgfCBTb21lIHggLT4gc2VsZiNjb25zdHIgXCJTb21lXCIgWyBmIHggXVxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGxpc3QsICdyZXMpIFQubGlmdCA9XG4gICAgICBmdW4gZiBsIC0+XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHNlbGYjY29uc3RyIFwiW11cIiBbXVxuICAgICAgICB8IHggOjogbCAtPiBzZWxmI2NvbnN0ciBcIjo6XCIgWyBmIHg7IHNlbGYjbGlzdCBmIGwgXVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2N0eCwgJ3Jlc10gbGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIG90aGVyIDogJ2EuICdjdHggLT4gJ2EgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6ICgnY3R4LCBpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogKCdjdHgsIHN0cmluZywgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogKCdjdHgsIGJvb2wsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6ICgnY3R4LCBjaGFyLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gICAgbWV0aG9kIHZpcnR1YWwgYXJyYXlcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgICAgICAgKCdjdHgsICdhIGFycmF5LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gICAgbWV0aG9kIHZpcnR1YWwgZmxvYXQgOiAoJ2N0eCwgZmxvYXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50MzIgOiAoJ2N0eCwgaW50MzIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50NjQgOiAoJ2N0eCwgaW50NjQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgbmF0aXZlaW50IDogKCdjdHgsIG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCB1bml0IDogKCdjdHgsIHVuaXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogJ2N0eCAtPiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogJ2N0eCAtPiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdjdHggLT4gJ3JlcyBsaXN0IC0+ICdyZXNcblxuICAgIG1ldGhvZCBvcHRpb25cbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgICAgICAgKCdjdHgsICdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoTm9uZSwgc2VsZiNjb25zdHIgY3R4IFwiTm9uZVwiIFtdKVxuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgbGV0IHgsIHJlcyA9IGYgY3R4IHggaW5cbiAgICAgICAgICAgIChTb21lIHgsIHNlbGYjY29uc3RyIGN0eCBcIlNvbWVcIiBbIHJlcyBdKVxuXG4gICAgbWV0aG9kIGxpc3RcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgICAgICAgKCdjdHgsICdhIGxpc3QsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCBsIC0+XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IChbXSwgc2VsZiNjb25zdHIgY3R4IFwiW11cIiBbXSlcbiAgICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgICAgIGxldCB4LCByZXNfaGVhZCA9IGYgY3R4IHggaW5cbiAgICAgICAgICAgIGxldCBsLCByZXNfdGFpbCA9IHNlbGYjbGlzdCBmIGN0eCBsIGluXG4gICAgICAgICAgICAoeCA6OiBsLCBzZWxmI2NvbnN0ciBjdHggXCI6OlwiIFsgcmVzX2hlYWQ7IHJlc190YWlsIF0pXG4gIGVuZFxuXG5jbGFzcyB0eXBlIFsncmVzXSBzdGRfbGlmdGVycyA9IG9iamVjdFxuICBtZXRob2Qgb3RoZXIgOiAnYS4gKCdhLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGludCA6IChpbnQsICdyZXMpIFQubGlmdFxuICBtZXRob2Qgc3RyaW5nIDogKHN0cmluZywgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBib29sIDogKGJvb2wsICdyZXMpIFQubGlmdFxuICBtZXRob2QgY2hhciA6IChjaGFyLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBhcnJheSwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCByZWNvcmQgOiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCBjb25zdHIgOiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIHR1cGxlIDogJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGZsb2F0IDogKGZsb2F0LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGludDMyIDogKGludDMyLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGludDY0IDogKGludDY0LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIG5hdGl2ZWludCA6IChuYXRpdmVpbnQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgdW5pdCA6ICh1bml0LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2Egb3B0aW9uLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGxpc3QsICdyZXMpIFQubGlmdFxuZW5kXG5cbmNsYXNzIHR5cGUgWydjdHgsICdyZXNdIHN0ZF9saWZ0X21hcHBlcnNfd2l0aF9jb250ZXh0ID0gb2JqZWN0XG4gIG1ldGhvZCBvdGhlciA6ICdhLiAnY3R4IC0+ICdhIC0+ICdyZXNcbiAgbWV0aG9kIGludCA6ICgnY3R4LCBpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgYm9vbCA6ICgnY3R4LCBib29sLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgY2hhciA6ICgnY3R4LCBjaGFyLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCBhcnJheSA6XG4gICAgJ2EuXG4gICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICgnY3R4LCAnYSBhcnJheSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2QgcmVjb3JkIDogJ2N0eCAtPiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCBjb25zdHIgOiAnY3R4IC0+IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgdHVwbGUgOiAnY3R4IC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCBmbG9hdCA6ICgnY3R4LCBmbG9hdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGludDMyIDogKCdjdHgsIGludDMyLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgaW50NjQgOiAoJ2N0eCwgaW50NjQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBuYXRpdmVpbnQgOiAoJ2N0eCwgbmF0aXZlaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgdW5pdCA6ICgnY3R4LCB1bml0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCBvcHRpb24gOlxuICAgICdhLlxuICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAoJ2N0eCwgJ2Egb3B0aW9uLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCBsaXN0IDpcbiAgICAnYS5cbiAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgKCdjdHgsICdhIGxpc3QsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5lbmRcbiIsIm1vZHVsZSBDYW1sID0gU3RkbGliIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMy0wNl0gdXNlIFN0ZGxpYiBpbnN0ZWFkXCJdXG5vcGVuIFN0ZGxpYlxub3BlbiBTdGRMYWJlbHNcbm1vZHVsZSBTZXhwID0gU2V4cGxpYjAuU2V4cFxubW9kdWxlIFNleHBhYmxlID0gU2V4cGxpYjAuU2V4cGFibGVcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cF9jb252XG5cbm1vZHVsZSB0eXBlIENvbXBhcmlzb25zID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA9ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA8ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA+ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA8PiApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPD0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID49ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgbWluIDogdCAtPiB0IC0+IHRcbiAgdmFsIG1heCA6IHQgLT4gdCAtPiB0XG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBlcXVhbCA9ICggPSApXG4gIGxldCAoID0gKSA9ICggPSApXG4gIGxldCAoIDwgKSA9ICggPCApXG4gIGxldCAoID4gKSA9ICggPiApXG4gIGxldCAoIDw+ICkgPSAoIDw+IClcbiAgbGV0ICggPD0gKSA9ICggPD0gKVxuICBsZXQgKCA+PSApID0gKCA+PSApXG4gIGxldCBtaW4gPSBtaW5cbiAgbGV0IG1heCA9IG1heFxuZW5kXG5cbmluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBpbnQpXG5tb2R1bGUgQXJyYXkgPSBBcnJheVxuXG5tb2R1bGUgQm9vbCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2Jvb2xcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gYm9vbClcbmVuZFxuXG5tb2R1bGUgQnl0ZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCeXRlc1xuXG4gIGxldCBzdWJfc3RyaW5nIHQgfnBvcyB+bGVuID0gU3RkbGliLkJ5dGVzLnN1Yl9zdHJpbmcgdCBwb3MgbGVuXG5cbiAgbGV0IGJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgICBTdGRsaWIuQnl0ZXMuYmxpdF9zdHJpbmcgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG5lbmRcblxubW9kdWxlIENoYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDaGFyXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBjaGFyKVxuZW5kXG5cbm1vZHVsZSBFeG4gPSBzdHJ1Y3RcbiAgbGV0IHByb3RlY3R4IHggfmYgfmZpbmFsbHkgPVxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgfCB5IC0+XG4gICAgICAgIGZpbmFsbHkgeDtcbiAgICAgICAgeVxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICBmaW5hbGx5IHg7XG4gICAgICAgIHJhaXNlIGV4blxuZW5kXG5cbm1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2Zsb2F0XG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGZsb2F0KVxuZW5kXG5cbm1vZHVsZSBGbiA9IHN0cnVjdFxuICBsZXQgaWQgeCA9IHhcbmVuZFxuXG5tb2R1bGUgSGFzaHRibCA9IHN0cnVjdFxuICBpbmNsdWRlIEhhc2h0YmxcblxuICBsZXQgc2V0IHQgfmtleSB+ZGF0YSA9XG4gICAgd2hpbGUgbWVtIHQga2V5IGRvXG4gICAgICByZW1vdmUgdCBrZXlcbiAgICBkb25lO1xuICAgIGFkZCB0IGtleSBkYXRhXG5cbiAgbGV0IGFkZCB0IH5rZXkgfmRhdGEgPVxuICAgIGlmIG1lbSB0IGtleSB0aGVuIEVycm9yIChJbnZhbGlkX2FyZ3VtZW50IFwiSGFzaHRibC5hZGRfZXhuXCIpXG4gICAgZWxzZSAoXG4gICAgICBhZGQgdCBrZXkgZGF0YTtcbiAgICAgIE9rICgpKVxuXG4gIGxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoIE9rICgpIC0+ICgpIHwgRXJyb3IgZXhuIC0+IHJhaXNlIGV4blxuXG4gIGxldCBmaW5kX29wdCB0IGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoIGRhdGEgLT4gU29tZSBkYXRhIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IGZpbmRfb3JfYWRkIHQga2V5IH5kZWZhdWx0ID1cbiAgICBtYXRjaCBmaW5kX29wdCB0IGtleSB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gZGF0YVxuICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgZGF0YSA9IGRlZmF1bHQgKCkgaW5cbiAgICAgICAgYWRkX2V4biB0IH5rZXkgfmRhdGE7XG4gICAgICAgIGRhdGFcblxuICBsZXQgcmVjIGFkZF9hbGlzdCB0IGFsaXN0ID1cbiAgICBtYXRjaCBhbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBPayAoKVxuICAgIHwgKGtleSwgZGF0YSkgOjogdGFpbCAtPiAoXG4gICAgICAgIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aFxuICAgICAgICB8IE9rICgpIC0+IGFkZF9hbGlzdCB0IHRhaWxcbiAgICAgICAgfCBFcnJvciAoXyA6IGV4bikgLT4gRXJyb3Iga2V5KVxuXG4gIGxldCBvZl9hbGlzdCA/c2l6ZSBhbGlzdCA9XG4gICAgbGV0IHNpemUgPVxuICAgICAgbWF0Y2ggc2l6ZSB3aXRoIFNvbWUgc2l6ZSAtPiBzaXplIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCBhbGlzdFxuICAgIGluXG4gICAgbGV0IHQgPSBjcmVhdGUgc2l6ZSBpblxuICAgIG1hdGNoIGFkZF9hbGlzdCB0IGFsaXN0IHdpdGggT2sgKCkgLT4gT2sgdCB8IEVycm9yIF8gYXMgZXJyb3IgLT4gZXJyb3JcblxuICBsZXQgb2ZfYWxpc3RfZXhuID9zaXplIGFsaXN0ID1cbiAgICBtYXRjaCBvZl9hbGlzdCA/c2l6ZSBhbGlzdCB3aXRoXG4gICAgfCBPayB0IC0+IHRcbiAgICB8IEVycm9yIF8gLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJIYXNodGJsLm9mX2FsaXN0X2V4blwiKVxuZW5kXG5cbm1vZHVsZSBJbl9jaGFubmVsID0gc3RydWN0XG4gIGxldCBjcmVhdGUgPyhiaW5hcnkgPSB0cnVlKSBmaWxlID1cbiAgICBsZXQgZmxhZ3MgPSBbIE9wZW5fcmRvbmx5IF0gaW5cbiAgICBsZXQgZmxhZ3MgPSBpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSA6OiBmbGFncyBlbHNlIGZsYWdzIGluXG4gICAgb3Blbl9pbl9nZW4gZmxhZ3MgMG8wMDAgZmlsZVxuXG4gIGxldCB3aXRoX2ZpbGUgP2JpbmFyeSBmaWxlbmFtZSB+ZiA9XG4gICAgbGV0IHQgPSBjcmVhdGUgP2JpbmFyeSBmaWxlbmFtZSBpblxuICAgIEV4bi5wcm90ZWN0eCB0IH5mIH5maW5hbGx5OmNsb3NlX2luXG5cbiAgbGV0IGlucHV0X2FsbCB0ID1cbiAgICBsZXQgcmVjIHJlYWRfYWxsX2ludG8gdCBidWYgPVxuICAgICAgbWF0Y2ggaW5wdXRfY2hhciB0IHdpdGhcbiAgICAgIHwgY2hhciAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgY2hhcjtcbiAgICAgICAgICByZWFkX2FsbF9pbnRvIHQgYnVmXG4gICAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiAoKVxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICByZWFkX2FsbF9pbnRvIHQgYnVmO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgcmVhZF9hbGwgZmlsZW5hbWUgPSB3aXRoX2ZpbGUgZmlsZW5hbWUgfmY6aW5wdXRfYWxsXG5lbmRcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgbWF4X2ludCA9IG1heF9pbnRcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9pbnRcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gaW50KVxuZW5kXG5cbm1vZHVsZSBFaXRoZXIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gTGVmdCBvZiAnYSB8IFJpZ2h0IG9mICdiXG5lbmRcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBMaXN0XG5cbiAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAoKiBzaGFkb3cgbm9uLXRhaWwtcmVjdXJzaXZlIGZ1bmN0aW9ucyAqKVxuICAgIGxldCBtZXJnZSA9IGBub3RfdGFpbF9yZWN1cnNpdmVcbiAgICBsZXQgcmVtb3ZlX2Fzc29jID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuICAgIGxldCByZW1vdmVfYXNzcSA9IGBub3RfdGFpbF9yZWN1cnNpdmVcblxuICAgIGxldCByZXZfbWFwaSBsaXN0IH5mID1cbiAgICAgIGxldCByZWMgcmV2X21hcGlfYXQgbGlzdCBpIH5mIH5hY2MgPVxuICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT4gcmV2X21hcGlfYXQgdGFpbCAoaSArIDEpIH5mIH5hY2M6KGYgaSBoZWFkIDo6IGFjYylcbiAgICAgIGluXG4gICAgICByZXZfbWFwaV9hdCBsaXN0IDAgfmYgfmFjYzpbXVxuXG4gICAgbGV0IGZvbGRfcmlnaHQyIGxpc3QxIGxpc3QyIH5pbml0IH5mID1cbiAgICAgIGZvbGRfbGVmdDIgKHJldiBsaXN0MSkgKHJldiBsaXN0MikgfmluaXQgfmY6KGZ1biBhY2MgeCB5IC0+IGYgeCB5IGFjYylcblxuICAgIGxldCBtYXAgbGlzdCB+ZiA9IHJldiAocmV2X21hcCBsaXN0IH5mKVxuICAgIGxldCBtYXBpIGxpc3QgfmYgPSByZXYgKHJldl9tYXBpIGxpc3QgfmYpXG5cbiAgICBsZXQgZm9sZF9yaWdodCBsaXN0IH5pbml0IH5mID1cbiAgICAgIGZvbGRfbGVmdCAoTGlzdC5yZXYgbGlzdCkgfmluaXQgfmY6KGZ1biBhY2MgeCAtPiBmIHggYWNjKVxuXG4gICAgbGV0IGFwcGVuZCB4IHkgPSByZXZfYXBwZW5kIChyZXYgeCkgeVxuICAgIGxldCBjb25jYXQgbGlzdCA9IGZvbGRfcmlnaHQgbGlzdCB+aW5pdDpbXSB+ZjphcHBlbmRcblxuICAgIGxldCByZXZfY29tYmluZSBsaXN0MSBsaXN0MiA9XG4gICAgICBmb2xkX2xlZnQyIGxpc3QxIGxpc3QyIH5pbml0OltdIH5mOihmdW4gYWNjIHggeSAtPiAoeCwgeSkgOjogYWNjKVxuXG4gICAgbGV0IGNvbWJpbmUgbGlzdDEgbGlzdDIgPSByZXYgKHJldl9jb21iaW5lIGxpc3QxIGxpc3QyKVxuXG4gICAgbGV0IHNwbGl0IGxpc3QgPVxuICAgICAgZm9sZF9yaWdodCBsaXN0IH5pbml0OihbXSwgW10pIH5mOihmdW4gKHgsIHkpICh4cywgeXMpIC0+XG4gICAgICAgICAgKHggOjogeHMsIHkgOjogeXMpKVxuXG4gICAgbGV0IG1hcDIgbGlzdDEgbGlzdDIgfmYgPVxuICAgICAgcmV2IChmb2xkX2xlZnQyIGxpc3QxIGxpc3QyIH5pbml0OltdIH5mOihmdW4gYWNjIHggeSAtPiBmIHggeSA6OiBhY2MpKVxuICBlbmRcblxuICBsZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICAgIGxldCByZWMgcGFydCBsZWZ0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gICAgICB8IHggOjogbCAtPiAoXG4gICAgICAgICAgbWF0Y2ggcCB4IHdpdGhcbiAgICAgICAgICB8IEVpdGhlci5MZWZ0IHYgLT4gcGFydCAodiA6OiBsZWZ0KSByaWdodCBsXG4gICAgICAgICAgfCBFaXRoZXIuUmlnaHQgdiAtPiBwYXJ0IGxlZnQgKHYgOjogcmlnaHQpIGwpXG4gICAgaW5cbiAgICBwYXJ0IFtdIFtdIGxcblxuICBsZXQgaW5pdCB+bGVuIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgfmxlbiB+cG9zIH5mIH5hY2MgPVxuICAgICAgaWYgcG9zID49IGxlbiB0aGVuIExpc3QucmV2IGFjY1xuICAgICAgZWxzZSBsb29wIH5sZW4gfnBvczoocG9zICsgMSkgfmYgfmFjYzooZiBwb3MgOjogYWNjKVxuICAgIGluXG4gICAgbG9vcCB+bGVuIH5wb3M6MCB+ZiB+YWNjOltdXG5cbiAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gW10gLT4gdHJ1ZSB8IF8gOjogXyAtPiBmYWxzZVxuXG4gIGxldCByZXZfZmlsdGVyX29wdCBsaXN0ID1cbiAgICBmb2xkX2xlZnQgbGlzdCB+aW5pdDpbXSB+ZjooZnVuIHRhaWwgb3B0aW9uIC0+XG4gICAgICAgIG1hdGNoIG9wdGlvbiB3aXRoIE5vbmUgLT4gdGFpbCB8IFNvbWUgaGVhZCAtPiBoZWFkIDo6IHRhaWwpXG5cbiAgbGV0IGZpbHRlcl9vcHQgbGlzdCA9IHJldiAocmV2X2ZpbHRlcl9vcHQgbGlzdClcbiAgbGV0IGZpbHRlcl9tYXAgbGlzdCB+ZiA9IHJldl9maWx0ZXJfb3B0IChyZXZfbWFwIGxpc3QgfmYpXG4gIGxldCBjb25jYXRfbWFwIGxpc3QgfmYgPSBjb25jYXQgKG1hcCBsaXN0IH5mKVxuXG4gIGxldCByZWMgZmluZF9tYXAgbGlzdCB+ZiA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBoZWFkIDo6IHRhaWwgLT4gKFxuICAgICAgICBtYXRjaCBmIGhlYWQgd2l0aCBTb21lIF8gYXMgc29tZSAtPiBzb21lIHwgTm9uZSAtPiBmaW5kX21hcCB0YWlsIH5mKVxuXG4gIGxldCBmaW5kX21hcF9leG4gbGlzdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXAgbGlzdCB+ZiB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcblxuICBsZXQgcmVjIGxhc3QgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgWyB4IF0gLT4gU29tZSB4XG4gICAgfCBfIDo6IChfIDo6IF8gYXMgcmVzdCkgLT4gbGFzdCByZXN0XG5cbiAgbGV0IHNwbGl0X3doaWxlIGxpc3QgfmYgPVxuICAgIGxldCByZWMgc3BsaXRfd2hpbGVfaW50byBsaXN0IH5mIH5hY2MgPVxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IGhlYWQgOjogdGFpbCB3aGVuIGYgaGVhZCAtPiBzcGxpdF93aGlsZV9pbnRvIHRhaWwgfmYgfmFjYzooaGVhZCA6OiBhY2MpXG4gICAgICB8IF8gOjogXyB8IFtdIC0+IChMaXN0LnJldiBhY2MsIGxpc3QpXG4gICAgaW5cbiAgICBzcGxpdF93aGlsZV9pbnRvIGxpc3QgfmYgfmFjYzpbXVxuXG4gIGxldCBmaW5kX2FfZHVwICh0eXBlIGVsdCkgbGlzdCB+Y29tcGFyZSA9XG4gICAgbGV0IG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGVsdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBlbmQgaW5cbiAgICBsZXQgbW9kdWxlIEVsdF9zZXQgPSBTZXQuTWFrZSAoRWx0KSBpblxuICAgIGxldCByZWMgZmluZF9hX2R1cF9pbiBsaXN0IH5zZXQgPVxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgaWYgRWx0X3NldC5tZW0gaGVhZCBzZXQgdGhlbiBTb21lIGhlYWRcbiAgICAgICAgICBlbHNlIGZpbmRfYV9kdXBfaW4gdGFpbCB+c2V0OihFbHRfc2V0LmFkZCBoZWFkIHNldClcbiAgICBpblxuICAgIGZpbmRfYV9kdXBfaW4gbGlzdCB+c2V0OkVsdF9zZXQuZW1wdHlcblxuICBsZXQgYXNzb2Nfb3B0IGtleSBhbGlzdCA9XG4gICAgbWF0Y2ggYXNzb2Mga2V5IGFsaXN0IHdpdGggeCAtPiBTb21lIHggfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICAoKiByZW9yZGVycyBhcmd1bWVudHMgdG8gaW1wcm92ZSB0eXBlIGluZmVyZW5jZSAqKVxuICBsZXQgaXRlciBsaXN0IH5mID0gaXRlciBsaXN0IH5mXG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgaXNfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gZmFsc2UgfCBTb21lIF8gLT4gdHJ1ZVxuICBsZXQgaXRlciB0IH5mID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gKCkgfCBTb21lIHggLT4gZiB4XG4gIGxldCBtYXAgdCB+ZiA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IGRlZmF1bHQgfCBTb21lIHggLT4geFxuICBsZXQgdG9fbGlzdCB0ID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gW10gfCBTb21lIHggLT4gWyB4IF1cbmVuZFxuXG5tb2R1bGUgUmVzdWx0ID0gc3RydWN0XG4gIGxldCBiaW5kIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBmIGEgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgbGV0IG1hcCB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gT2sgKGYgYSkgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgbGV0IG1hcF9lcnJvciB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gT2sgKGYgYSkgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBoYW5kbGVfZXJyb3IgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IGEgfCBFcnJvciBlIC0+IGYgZVxuZW5kXG5cbm1vZHVsZSBOb25FbXB0eUxpc3QgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgKiAnYSBsaXN0XG5cbiAgbGV0ICggQCApICh0MSwgcTEpICh0MiwgcTIpID0gKHQxLCBxMSBAICh0MiA6OiBxMikpXG4gIGxldCBoZCA9IGZzdFxuICBsZXQgdG9fbGlzdCAodCwgcSkgPSB0IDo6IHFcbiAgbGV0IG1hcCB+ZiAodCwgcSkgPSAoZiB0LCBMaXN0Lm1hcCB+ZiBxKVxuZW5kXG5cbm1vZHVsZSBPdXRfY2hhbm5lbCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID8oYmluYXJ5ID0gdHJ1ZSkgPyhhcHBlbmQgPSBmYWxzZSkgPyhmYWlsX2lmX2V4aXN0cyA9IGZhbHNlKVxuICAgICAgPyhwZXJtID0gMG82NjYpIGZpbGUgPVxuICAgIGxldCBmbGFncyA9IFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQgXSBpblxuICAgIGxldCBmbGFncyA9IChpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSBlbHNlIE9wZW5fdGV4dCkgOjogZmxhZ3MgaW5cbiAgICBsZXQgZmxhZ3MgPSAoaWYgYXBwZW5kIHRoZW4gT3Blbl9hcHBlbmQgZWxzZSBPcGVuX3RydW5jKSA6OiBmbGFncyBpblxuICAgIGxldCBmbGFncyA9IGlmIGZhaWxfaWZfZXhpc3RzIHRoZW4gT3Blbl9leGNsIDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgICBvcGVuX291dF9nZW4gZmxhZ3MgcGVybSBmaWxlXG5cbiAgbGV0IHdpdGhfZmlsZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUgfmYgPVxuICAgIGxldCB0ID0gY3JlYXRlID9iaW5hcnkgP2FwcGVuZCA/ZmFpbF9pZl9leGlzdHMgP3Blcm0gZmlsZSBpblxuICAgIEV4bi5wcm90ZWN0eCB0IH5mIH5maW5hbGx5OmNsb3NlX291dFxuXG4gIGxldCB3cml0ZV9hbGwgZmlsZW5hbWUgfmRhdGEgPVxuICAgIHdpdGhfZmlsZSBmaWxlbmFtZSB+ZjooZnVuIHQgLT4gb3V0cHV0X3N0cmluZyB0IGRhdGEpXG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBpc19lbXB0eSAodCA6IHQpID0gbGVuZ3RoIHQgPSAwXG4gIGxldCBwcmVmaXggdCBsZW4gPSBzdWIgdCB+cG9zOjAgfmxlblxuICBsZXQgc3VmZml4IHQgbGVuID0gc3ViIHQgfnBvczoobGVuZ3RoIHQgLSBsZW4pIH5sZW5cbiAgbGV0IGRyb3BfcHJlZml4IHQgbGVuID0gc3ViIHQgfnBvczpsZW4gfmxlbjoobGVuZ3RoIHQgLSBsZW4pXG4gIGxldCBkcm9wX3N1ZmZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6MCB+bGVuOihsZW5ndGggdCAtIGxlbilcblxuICBsZXQgaXNfcHJlZml4IHQgfnByZWZpeCA9XG4gICAgbGV0IHJlYyBpc19wcmVmaXhfZnJvbSB0IH5wcmVmaXggfnBvcyB+bGVuID1cbiAgICAgIHBvcyA+PSBsZW5cbiAgICAgIHx8IENoYXIuZXF1YWwgKGdldCB0IHBvcykgKGdldCBwcmVmaXggcG9zKVxuICAgICAgICAgJiYgaXNfcHJlZml4X2Zyb20gdCB+cHJlZml4IH5wb3M6KHBvcyArIDEpIH5sZW5cbiAgICBpblxuICAgIGxlbmd0aCB0ID49IGxlbmd0aCBwcmVmaXhcbiAgICAmJiBpc19wcmVmaXhfZnJvbSB0IH5wcmVmaXggfnBvczowIH5sZW46KGxlbmd0aCBwcmVmaXgpXG5cbiAgbGV0IGlzX3N1ZmZpeCB0IH5zdWZmaXggPVxuICAgIGxldCByZWMgaXNfc3VmZml4X3VwX3RvIHQgfnN1ZmZpeCB+cG9zIH5zdWZmaXhfb2Zmc2V0ID1cbiAgICAgIHBvcyA8IDBcbiAgICAgIHx8IENoYXIuZXF1YWwgKGdldCB0IChzdWZmaXhfb2Zmc2V0ICsgcG9zKSkgKGdldCBzdWZmaXggcG9zKVxuICAgICAgICAgJiYgaXNfc3VmZml4X3VwX3RvIHQgfnN1ZmZpeCB+cG9zOihwb3MgLSAxKSB+c3VmZml4X29mZnNldFxuICAgIGluXG4gICAgbGVuZ3RoIHQgPj0gbGVuZ3RoIHN1ZmZpeFxuICAgICYmIGlzX3N1ZmZpeF91cF90byB0IH5zdWZmaXhcbiAgICAgICAgIH5wb3M6KGxlbmd0aCBzdWZmaXggLSAxKVxuICAgICAgICAgfnN1ZmZpeF9vZmZzZXQ6KGxlbmd0aCB0IC0gbGVuZ3RoIHN1ZmZpeClcblxuICBsZXQgZXhpc3RzIHQgfmYgPVxuICAgIGxldCByZWMgZXhpc3RzX2F0IHQgfmYgfnBvcyB+bGVuID1cbiAgICAgIHBvcyA8IGxlbiAmJiAoZiAoZ2V0IHQgcG9zKSB8fCBleGlzdHNfYXQgdCB+ZiB+cG9zOihwb3MgKyAxKSB+bGVuKVxuICAgIGluXG4gICAgZXhpc3RzX2F0IHQgfmYgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuXG4gIGxldCBmb3JfYWxsIHQgfmYgPVxuICAgIGxldCByZWMgZm9yX2FsbF9hdCB0IH5mIH5wb3MgfmxlbiA9XG4gICAgICBwb3MgPj0gbGVuIHx8IChmIChnZXQgdCBwb3MpICYmIGZvcl9hbGxfYXQgdCB+ZiB+cG9zOihwb3MgKyAxKSB+bGVuKVxuICAgIGluXG4gICAgZm9yX2FsbF9hdCB0IH5mIH5wb3M6MCB+bGVuOihsZW5ndGggdClcblxuICBsZXQgaW5kZXhfb3B0IHQgY2hhciA9XG4gICAgbWF0Y2ggaW5kZXggdCBjaGFyIHdpdGggaSAtPiBTb21lIGkgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgcmluZGV4X29wdCB0IGNoYXIgPVxuICAgIG1hdGNoIHJpbmRleCB0IGNoYXIgd2l0aCBpIC0+IFNvbWUgaSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCBpbmRleF9mcm9tX29wdCB0IGNoYXIgcG9zID1cbiAgICBtYXRjaCBpbmRleF9mcm9tIHQgY2hhciBwb3Mgd2l0aCBpIC0+IFNvbWUgaSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCByaW5kZXhfZnJvbV9vcHQgdCBjaGFyIHBvcyA9XG4gICAgbWF0Y2ggcmluZGV4X2Zyb20gdCBjaGFyIHBvcyB3aXRoXG4gICAgfCBpIC0+IFNvbWUgaVxuICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IGxzcGxpdDIgdCB+b24gPVxuICAgIG1hdGNoIGluZGV4X29wdCB0IG9uIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBpIC0+XG4gICAgICAgIFNvbWUgKHN1YiB0IH5wb3M6MCB+bGVuOmksIHN1YiB0IH5wb3M6KGkgKyAxKSB+bGVuOihsZW5ndGggdCAtIGkgLSAxKSlcblxuICBsZXQgY2FwaXRhbGl6ZV9hc2NpaSA9IFN0ZGxpYi5TdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaVxuICBsZXQgbG93ZXJjYXNlX2FzY2lpID0gU3RkbGliLlN0cmluZy5sb3dlcmNhc2VfYXNjaWlcbiAgbGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSA9IFN0ZGxpYi5TdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpXG4gIGxldCBzcGxpdF9vbl9jaGFyIHQgfnNlcCA9IFN0ZGxpYi5TdHJpbmcuc3BsaXRfb25fY2hhciBzZXAgdFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBzdHJpbmcpXG5cbiAgbW9kdWxlIE1hcCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFwLk1ha2UgKFN0cmluZylcblxuICAgIGxldCBmaW5kX29wdCBrZXkgdCA9XG4gICAgICBtYXRjaCBmaW5kIGtleSB0IHdpdGggeCAtPiBTb21lIHggfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcbiAgZW5kXG5cbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlIChTdHJpbmcpXG5lbmRcblxubGV0ICggQCApID0gTGlzdC5hcHBlbmRcbmxldCBvdXRwdXQgb2MgYnl0ZXMgfnBvcyB+bGVuID0gb3V0cHV0IG9jIGJ5dGVzIHBvcyBsZW5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIG9jIHN0cmluZyB+cG9zIH5sZW4gPSBvdXRwdXRfc3Vic3RyaW5nIG9jIHN0cmluZyBwb3MgbGVuXG4iLCJvcGVuIEltcG9ydFxubW9kdWxlIEwgPSBBc3RsaWIuTG9jYXRpb25cblxudHlwZSB0ID0gbG9jYXRpb24gPSB7XG4gIGxvY19zdGFydCA6IExleGluZy5wb3NpdGlvbjtcbiAgbG9jX2VuZCA6IExleGluZy5wb3NpdGlvbjtcbiAgbG9jX2dob3N0IDogYm9vbDtcbn1cblxubGV0IGluX2ZpbGUgbmFtZSA9XG4gIGxldCBsb2MgPSB7IHBvc19mbmFtZSA9IG5hbWU7IHBvc19sbnVtID0gMTsgcG9zX2JvbCA9IDA7IHBvc19jbnVtID0gLTEgfSBpblxuICB7IGxvY19zdGFydCA9IGxvYzsgbG9jX2VuZCA9IGxvYzsgbG9jX2dob3N0ID0gdHJ1ZSB9XG5cbmxldCBzZXRfZmlsZW5hbWUgbG9jIGZuID1cbiAgbGV0IGxvY19zdGFydCA9IHsgbG9jLmxvY19zdGFydCB3aXRoIHBvc19mbmFtZSA9IGZuIH0gaW5cbiAgbGV0IGxvY19lbmQgPSB7IGxvYy5sb2NfZW5kIHdpdGggcG9zX2ZuYW1lID0gZm4gfSBpblxuICB7IGxvYyB3aXRoIGxvY19zdGFydDsgbG9jX2VuZCB9XG5cbmxldCBub25lID0gaW5fZmlsZSBcIl9ub25lX1wiXG5cbmxldCBpbml0IGxleGJ1ZiBmbmFtZSA9XG4gIGxldCBvcGVuIExleGluZyBpblxuICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgIHsgcG9zX2ZuYW1lID0gZm5hbWU7IHBvc19sbnVtID0gMTsgcG9zX2JvbCA9IDA7IHBvc19jbnVtID0gMCB9XG5cbmxldCByYWlzZV9lcnJvcmYgP2xvYyBmbXQgPSBMLnJhaXNlX2Vycm9yZiA/bG9jIGZtdFxubGV0IHJlcG9ydF9leGNlcHRpb24gPSBMLnJlcG9ydF9leGNlcHRpb25cblxubGV0IG9mX2xleGJ1ZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICB7XG4gICAgbG9jX3N0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wO1xuICAgIGxvY19lbmQgPSBsZXhidWYubGV4X2N1cnJfcDtcbiAgICBsb2NfZ2hvc3QgPSBmYWxzZTtcbiAgfVxuXG5sZXQgcHJpbnQgcHBmIHQgPVxuICBTdGRsaWIuRm9ybWF0LmZwcmludGYgcHBmIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOlwiXG4gICAgdC5sb2Nfc3RhcnQucG9zX2ZuYW1lIHQubG9jX3N0YXJ0LnBvc19sbnVtXG4gICAgKHQubG9jX3N0YXJ0LnBvc19jbnVtIC0gdC5sb2Nfc3RhcnQucG9zX2JvbClcbiAgICAodC5sb2NfZW5kLnBvc19jbnVtIC0gdC5sb2Nfc3RhcnQucG9zX2JvbClcblxudHlwZSBub25yZWMgJ2EgbG9jID0gJ2EgbG9jID0geyB0eHQgOiAnYTsgbG9jIDogdCB9XG5cbmxldCBjb21wYXJlX3BvcyBwMSBwMiA9XG4gIGxldCBvcGVuIExleGluZyBpblxuICBsZXQgY29sdW1uIHAgPVxuICAgICgqIE1hbnVhbCBleHRyYWN0OlxuICAgICAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gcG9zX2NudW0gYW5kIHBvc19ib2wgaXMgdGhlIGNoYXJhY3RlciBvZmZzZXRcbiAgICAgICB3aXRoaW4gdGhlIGxpbmUgKGkuZS4gdGhlIGNvbHVtbiBudW1iZXIsIGFzc3VtaW5nIGVhY2ggY2hhcmFjdGVyIGlzXG4gICAgICAgb25lIGNvbHVtbiB3aWRlKS4gKilcbiAgICBwLnBvc19jbnVtIC0gcC5wb3NfYm9sXG4gIGluXG4gIG1hdGNoIEludC5jb21wYXJlIHAxLnBvc19sbnVtIHAyLnBvc19sbnVtIHdpdGhcbiAgfCAwIC0+IEludC5jb21wYXJlIChjb2x1bW4gcDEpIChjb2x1bW4gcDIpXG4gIHwgbiAtPiBuXG5cbmxldCBtaW5fcG9zIHAxIHAyID0gaWYgY29tcGFyZV9wb3MgcDEgcDIgPD0gMCB0aGVuIHAxIGVsc2UgcDJcbmxldCBtYXhfcG9zIHAxIHAyID0gaWYgY29tcGFyZV9wb3MgcDEgcDIgPj0gMCB0aGVuIHAxIGVsc2UgcDJcblxubGV0IGNvbXBhcmUgbG9jMSBsb2MyID1cbiAgbWF0Y2ggY29tcGFyZV9wb3MgbG9jMS5sb2Nfc3RhcnQgbG9jMi5sb2Nfc3RhcnQgd2l0aFxuICB8IDAgLT4gY29tcGFyZV9wb3MgbG9jMS5sb2NfZW5kIGxvYzIubG9jX2VuZFxuICB8IG4gLT4gblxuXG5tb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcHhsaWJfYXN0LkxvY2F0aW9uX2Vycm9yXG5cbiAgbGV0IGNyZWF0ZWYgfmxvYyBmbXQgPSBGb3JtYXQua2FzcHJpbnRmIChmdW4gc3RyIC0+IG1ha2UgfmxvYyB+c3ViOltdIHN0cikgZm10XG5lbmRcblxubGV0IGVycm9yX2V4dGVuc2lvbmYgfmxvYyBmbXQgPVxuICBGb3JtYXQua2FzcHJpbnRmXG4gICAgKGZ1biBzdHIgLT4gRXJyb3IudG9fZXh0ZW5zaW9uIEBAIEVycm9yLm1ha2UgfmxvYyB+c3ViOltdIHN0cilcbiAgICBmbXRcblxuZXhjZXB0aW9uIEVycm9yID0gTC5FcnJvclxuXG5sZXQgKCkgPVxuICBTdGRsaWIuUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuY3Rpb25cbiAgICB8IEVycm9yIGUgLT4gU29tZSAoRXJyb3IubWVzc2FnZSBlKVxuICAgIHwgXyAtPiBOb25lKVxuIiwib3BlbiEgSW1wb3J0XG5cbmV4Y2VwdGlvbiBFeHBlY3RlZCBvZiBMb2NhdGlvbi50ICogc3RyaW5nXG5cbmxldCBmYWlsIGxvYyBleHBlY3RlZCA9IHJhaXNlIChFeHBlY3RlZCAobG9jLCBleHBlY3RlZCkpXG5cbnR5cGUgY29udGV4dCA9IHtcbiAgKCogW21hdGNoZWRdIGNvdW50cyBob3cgbWFueSBjb25zdHJ1Y3RvcnMgaGF2ZSBiZWVuIG1hdGNoZWQuIFRoaXMgaXMgdXNlZCB0byBmaW5kIHdoYXRcbiAgICAgcGF0dGVybiBtYXRjaGVzIHRoZSBtb3N0IHNvbWUgcGllY2Ugb2YgYXN0IGluIFtBc3RfcGF0dGVybi5hbHRdLiBJbiB0aGUgY2FzZSB3aGVyZVxuICAgICBhbGwgYnJhbmNoZXMgZmFpbCB0byBtYXRjaCwgd2UgcmVwb3J0IHRoZSBlcnJvciBmcm9tIHRoZSBvbmUgdGhhdCBtYXRjaGVzIHRoZVxuICAgICBtb3N0LlxuXG4gICAgIFRoaXMgaXMgb25seSBpbmNyZW1lbnRlZCBieSBjb21iaW5hdG9ycyB0aGF0IGNhbiBmYWlsLiAqKVxuICBtdXRhYmxlIG1hdGNoZWQgOiBpbnQ7XG59XG5cbnR5cGUgKCdtYXRjaGVkX3ZhbHVlLCAnaywgJ2tfcmVzdWx0KSB0ID1cbiAgfCBUIG9mIChjb250ZXh0IC0+IExvY2F0aW9uLnQgLT4gJ21hdGNoZWRfdmFsdWUgLT4gJ2sgLT4gJ2tfcmVzdWx0KVxuIiwib3BlbiBJbXBvcnRcbm1vZHVsZSBNID1cbiAgc3RydWN0XG4gICAgbGV0IGF0dHJpYnV0ZSB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5wYXlsb2FkIC0+XG4gICAgICAgICAgICAgIHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgYXR0cl9sb2MgPSBsb2MgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGJpbmRpbmdfb3AgfmxvYyAgPVxuICAgICAgKChmdW4gfm9wIC0+XG4gICAgICAgICAgKChmdW4gfnBhdCAtPlxuICAgICAgICAgICAgICAoKGZ1biB+ZXhwIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBib3Bfb3AgPSBvcDtcbiAgICAgICAgICAgICAgICAgICAgcGJvcF9wYXQgPSBwYXQ7XG4gICAgICAgICAgICAgICAgICAgIHBib3BfZXhwID0gZXhwO1xuICAgICAgICAgICAgICAgICAgICBwYm9wX2xvYyA9IGxvY1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY2FzZSB+bGhzICA9XG4gICAgICAoKGZ1biB+Z3VhcmQgLT5cbiAgICAgICAgICAoKGZ1biB+cmhzIC0+IHsgcGNfbGhzID0gbGhzOyBwY19ndWFyZCA9IGd1YXJkOyBwY19yaHMgPSByaHMgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2NvbnN0ciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX3N0cnVjdHVyZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX3N0cnVjdHVyZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2Z1biB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9hcHBseSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfbGV0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9jb25zdHJhaW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX29wZW4gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfaW5oZXJpdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBjZl9kZXNjID0gKFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX3ZhbCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX3ZhbCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9tZXRob2QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9tZXRob2QgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfY29uc3RyYWludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY2ZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGNmX2Rlc2MgPSAoUGNmX2NvbnN0cmFpbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9pbml0aWFsaXplciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY2ZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGNmX2Rlc2MgPSAoUGNmX2luaXRpYWxpemVyIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfYXR0cmlidXRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfYXR0cmlidXRlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjbGFzc19pbmZvcyB+bG9jICA9XG4gICAgICAoKGZ1biB+dmlydCAtPlxuICAgICAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX3ZpcnQgPSB2aXJ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9leHByID0gZXhwcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZiAgPVxuICAgICAgKChmdW4gfmZpZWxkcyAtPiB7IHBjc2lnX3NlbGYgPSBzZWxmOyBwY3NpZ19maWVsZHMgPSBmaWVsZHMgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjbGFzc19zdHJ1Y3R1cmUgfnNlbGYgID1cbiAgICAgICgoZnVuIH5maWVsZHMgLT4geyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9jb25zdHIgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X3NpZ25hdHVyZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9zaWduYXR1cmUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfYXJyb3cgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X29wZW4gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9pbmhlcml0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3RmX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2luaGVyaXQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdGZfdmFsIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX3ZhbCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdGZfbWV0aG9kIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3RmX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX21ldGhvZCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9jb25zdHJhaW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3RmX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2NvbnN0cmFpbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdGZfYXR0cmlidXRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3RmX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2F0dHJpYnV0ZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH52YXJzIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5hcmdzIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB+cmVzIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfYW55IH5sb2MgID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSBQdHlwX2FueVxuICAgICAgfVxuICAgIGxldCBwdHlwX3ZhciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdmFyIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2Fycm93IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfdHVwbGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3R1cGxlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2NvbnN0ciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9vYmplY3QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9vYmplY3QgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfY2xhc3MgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jbGFzcyAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9hbGlhcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2FsaWFzICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX3ZhcmlhbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX3BvbHkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX3BhY2thZ2UgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BhY2thZ2UgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBkaXJfc3RyaW5nIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfc3RyaW5nIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGRpcl9pbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPiB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2ludCAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGRpcl9pZGVudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2lkZW50IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGRpcl9ib29sIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfYm9vbCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfaWRlbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lkZW50IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvbnN0YW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdGFudCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sZXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZnVuY3Rpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1bmN0aW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2Z1biB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9hcHBseSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX21hdGNoIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbWF0Y2ggKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdHJ5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHJ5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3R1cGxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90dXBsZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9jb25zdHJ1Y3QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdmFyaWFudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcmVjb3JkIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2ZpZWxkIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZmllbGQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfc2V0ZmllbGQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9hcnJheSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXJyYXkgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfaWZ0aGVuZWxzZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfc2VxdWVuY2UgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF93aGlsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3doaWxlICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2ZvciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHg0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvZXJjZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29lcmNlICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZW5kIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VuZCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9uZXcgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ldyB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZXRpbnN0dmFyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9vdmVycmlkZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3ZlcnJpZGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbGV0bW9kdWxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xldGV4Y2VwdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9hc3NlcnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Fzc2VydCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sYXp5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sYXp5IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3BvbHkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX29iamVjdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb2JqZWN0IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX25ld3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXd0eXBlICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3BhY2sgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BhY2sgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbGV0b3AgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG9wIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3VucmVhY2hhYmxlIH5sb2MgID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX3VucmVhY2hhYmxlXG4gICAgICB9XG4gICAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5raW5kIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBleHRfa2luZCA9IGtpbmQ7XG4gICAgICAgICAgICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGluY2x1ZGVfaW5mb3MgfmxvYyAgPVxuICAgICAgKChmdW4gbW9kXyAtPlxuICAgICAgICAgIHsgcGluY2xfbW9kID0gbW9kXzsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfm11dGFibGVfIC0+XG4gICAgICAgICAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHBsZF9tdXRhYmxlID0gbXV0YWJsZV87XG4gICAgICAgICAgICAgICAgICAgIHBsZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgICAgIHBsZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBsZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGxldG9wIH5sZXRfICA9XG4gICAgICAoKGZ1biB+YW5kcyAtPiAoKGZ1biB+Ym9keSAtPiB7IGxldF87IGFuZHM7IGJvZHkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbG9jYXRpb24gfnN0YXJ0ICA9XG4gICAgICAoKGZ1biB+ZW5kXyAtPlxuICAgICAgICAgICgoZnVuIH5naG9zdCAtPlxuICAgICAgICAgICAgICB7IGxvY19zdGFydCA9IHN0YXJ0OyBsb2NfZW5kID0gZW5kXzsgbG9jX2dob3N0ID0gZ2hvc3QgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX2JpbmRpbmcgfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1iX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBtYl9leHByID0gZXhwcjtcbiAgICAgICAgICAgICAgICBwbWJfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtYl9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG1vZHVsZV9kZWNsYXJhdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1kX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBtZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgcG1kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbWRfbG9jID0gbG9jXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2lkZW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2lkZW50IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX3N0cnVjdHVyZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9zdHJ1Y3R1cmUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfZnVuY3RvciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9mdW5jdG9yICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2FwcGx5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF91bnBhY2sgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfdW5wYWNrIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+bWFuaWZlc3QgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtc19uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwbXNfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtc19sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfaWRlbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfaWRlbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfc2lnbmF0dXJlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X3NpZ25hdHVyZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9mdW5jdG9yIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfd2l0aCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV93aXRoICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X3R5cGVvZiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV90eXBlb2YgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9hbGlhcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9hbGlhcyB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtdGRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcG10ZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgcG10ZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG10ZF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG90YWcgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9mX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwb2ZfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBvZl9kZXNjID0gKE90YWcgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG9pbmhlcml0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPaW5oZXJpdCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG9wZW5faW5mb3MgfmxvYyAgPVxuICAgICAgKChmdW4gfmV4cHIgLT5cbiAgICAgICAgICAoKGZ1biB+b3ZlcnJpZGUgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvcGVuX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICAgICAgICAgICAgcG9wZW5fbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9hbnkgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfYW55XG4gICAgICB9XG4gICAgbGV0IHBwYXRfdmFyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXIgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfYWxpYXMgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9jb25zdGFudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RhbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfaW50ZXJ2YWwgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF90dXBsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHVwbGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfY29uc3RydWN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3ZhcmlhbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3JlY29yZCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3JlY29yZCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9hcnJheSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYXJyYXkgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfb3IgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9vciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9jb25zdHJhaW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF90eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90eXBlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2xhenkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2xhenkgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfdW5wYWNrIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF91bnBhY2sgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfZXhjZXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leGNlcHRpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBvc2l0aW9uIH5mbmFtZSAgPVxuICAgICAgKChmdW4gfmxudW0gLT5cbiAgICAgICAgICAoKGZ1biB+Ym9sIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5jbnVtIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBvc19mbmFtZSA9IGZuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwb3NfbG51bSA9IGxudW07XG4gICAgICAgICAgICAgICAgICAgIHBvc19ib2wgPSBib2w7XG4gICAgICAgICAgICAgICAgICAgIHBvc19jbnVtID0gY251bVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBydGFnIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHJmX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcHJmX2Rlc2MgPSAoUnRhZyAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHJpbmhlcml0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwcmZfYXR0cmlidXRlcyA9IFtdOyBwcmZfbG9jID0gbG9jOyBwcmZfZGVzYyA9IChSaW5oZXJpdCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdmFsdWUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdmFsdWUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX3R5cGVzdWJzdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlc3Vic3QgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX3R5cGV4dCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBleHQgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX2V4Y2VwdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leGNlcHRpb24geDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX21vZHVsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R1bGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX21vZHN1YnN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHN1YnN0IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19yZWNtb2R1bGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfcmVjbW9kdWxlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19tb2R0eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX21vZHR5cGVzdWJzdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlc3Vic3QgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX29wZW4gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfb3BlbiB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfaW5jbHVkZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19pbmNsdWRlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19jbGFzcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzcyB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfY2xhc3NfdHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzc190eXBlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19hdHRyaWJ1dGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfYXR0cmlidXRlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leHRlbnNpb24gKHgwLCB4MSkpIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfZXZhbCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V2YWwgKHgwLCB4MSkpIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfdmFsdWUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl92YWx1ZSAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9wcmltaXRpdmUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcHJpbWl0aXZlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl90eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdHlwZSAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl90eXBleHQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdHlwZXh0IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9leGNlcHRpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXhjZXB0aW9uIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9tb2R1bGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdWxlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9yZWNtb2R1bGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcmVjbW9kdWxlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9tb2R0eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHR5cGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX29wZW4gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfb3BlbiB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfY2xhc3MgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3MgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2NsYXNzX3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3NfdHlwZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfaW5jbHVkZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9pbmNsdWRlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9hdHRyaWJ1dGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfYXR0cmlidXRlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leHRlbnNpb24gKHgwLCB4MSkpIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHRvcGxldmVsX2RpcmVjdGl2ZSB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5hcmcgLT4geyBwZGlyX25hbWUgPSBuYW1lOyBwZGlyX2FyZyA9IGFyZzsgcGRpcl9sb2MgPSBsb2MgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHR5cGVfZGVjbGFyYXRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+cGFyYW1zIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5jc3RycyAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4gfmtpbmQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB+cHJpdmF0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gfm1hbmlmZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2tpbmQgPSBraW5kO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbG9jID0gbG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB0eXBlX2V4Y2VwdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biBjb25zdHJ1Y3RvciAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICAgICAgICAgICAgcHR5ZXhuX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdHlwZV9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfnBhdGggLT5cbiAgICAgICAgICAoKGZ1biB+cGFyYW1zIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5jb25zdHJ1Y3RvcnMgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9wYXRoID0gcGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHZhbHVlX2JpbmRpbmcgfmxvYyAgPVxuICAgICAgKChmdW4gfnBhdCAtPlxuICAgICAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdmJfcGF0ID0gcGF0O1xuICAgICAgICAgICAgICAgIHB2Yl9leHByID0gZXhwcjtcbiAgICAgICAgICAgICAgICBwdmJfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB2Yl9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5wcmltIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHB2YWxfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHB2YWxfdHlwZSA9IHR5cGVfO1xuICAgICAgICAgICAgICAgICAgICBwdmFsX3ByaW0gPSBwcmltO1xuICAgICAgICAgICAgICAgICAgICBwdmFsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHZhbF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gIGVuZFxubW9kdWxlIE1ha2UoTG9jOnNpZyB2YWwgbG9jIDogTG9jYXRpb24udCBlbmQpID1cbiAgc3RydWN0XG4gICAgbGV0IGxvYyA9IExvYy5sb2NcbiAgICBsZXQgYXR0cmlidXRlIH5uYW1lICA9XG4gICAgICAoKGZ1biB+cGF5bG9hZCAtPlxuICAgICAgICAgIHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgYXR0cl9sb2MgPSBsb2MgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBiaW5kaW5nX29wIH5vcCAgPVxuICAgICAgKChmdW4gfnBhdCAtPlxuICAgICAgICAgICgoZnVuIH5leHAgLT5cbiAgICAgICAgICAgICAgeyBwYm9wX29wID0gb3A7IHBib3BfcGF0ID0gcGF0OyBwYm9wX2V4cCA9IGV4cDsgcGJvcF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY2FzZSB+bGhzICA9XG4gICAgICAoKGZ1biB+Z3VhcmQgLT5cbiAgICAgICAgICAoKGZ1biB+cmhzIC0+IHsgcGNfbGhzID0gbGhzOyBwY19ndWFyZCA9IGd1YXJkOyBwY19yaHMgPSByaHMgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2NvbnN0ciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX3N0cnVjdHVyZSB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9zdHJ1Y3R1cmUgeDApIH1cbiAgICBsZXQgcGNsX2Z1biB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgzIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2FwcGx5IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9sZXQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9sZXQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfY29uc3RyYWludCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9leHRlbnNpb24geDAgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfZXh0ZW5zaW9uIHgwKSB9XG4gICAgbGV0IHBjbF9vcGVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX2luaGVyaXQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY2ZfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjZl9kZXNjID0gKFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX3ZhbCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl92YWwgeDApIH1cbiAgICBsZXQgcGNmX21ldGhvZCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGNmX2NvbnN0cmFpbnQgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfY29uc3RyYWludCB4MCkgfVxuICAgIGxldCBwY2ZfaW5pdGlhbGl6ZXIgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfaW5pdGlhbGl6ZXIgeDApIH1cbiAgICBsZXQgcGNmX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcGNmX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9leHRlbnNpb24geDApIH1cbiAgICBsZXQgY2xhc3NfaW5mb3MgfnZpcnQgID1cbiAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICAgICAgICAgICAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgIHBjaV9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgICAgICBwY2lfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZiAgPVxuICAgICAgKChmdW4gfmZpZWxkcyAtPiB7IHBjc2lnX3NlbGYgPSBzZWxmOyBwY3NpZ19maWVsZHMgPSBmaWVsZHMgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjbGFzc19zdHJ1Y3R1cmUgfnNlbGYgID1cbiAgICAgICgoZnVuIH5maWVsZHMgLT4geyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9jb25zdHIgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X3NpZ25hdHVyZSB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X2Fycm93IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9leHRlbnNpb24geDAgPVxuICAgICAgeyBwY3R5X2F0dHJpYnV0ZXMgPSBbXTsgcGN0eV9sb2MgPSBsb2M7IHBjdHlfZGVzYyA9IChQY3R5X2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9vcGVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdGZfaW5oZXJpdCB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfaW5oZXJpdCB4MCkgfVxuICAgIGxldCBwY3RmX3ZhbCB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfdmFsIHgwKSB9XG4gICAgbGV0IHBjdGZfbWV0aG9kIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGN0Zl9jb25zdHJhaW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICBwY3RmX2Rlc2MgPSAoUGN0Zl9jb25zdHJhaW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfYXR0cmlidXRlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3RmX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfnZhcnMgLT5cbiAgICAgICAgICAoKGZ1biB+YXJncyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+cmVzIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgICAgICAgICAgICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICAgICAgICAgICAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICAgICAgICAgICAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9hbnkgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfYW55XG4gICAgICB9XG4gICAgbGV0IHB0eXBfdmFyIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXIgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYXJyb3cgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfdHVwbGUgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2NvbnN0ciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX29iamVjdCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfb2JqZWN0ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2NsYXNzIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jbGFzcyAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9hbGlhcyB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYWxpYXMgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfdmFyaWFudCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX3BvbHkgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BvbHkgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfcGFja2FnZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcGFja2FnZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9leHRlbnNpb24geDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGRpcl9zdHJpbmcgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX3N0cmluZyB4MCkgfVxuICAgIGxldCBwZGlyX2ludCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPiB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2ludCAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBkaXJfaWRlbnQgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2lkZW50IHgwKSB9XG4gICAgbGV0IHBkaXJfYm9vbCB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfYm9vbCB4MCkgfVxuICAgIGxldCBwZXhwX2lkZW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZGVudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdGFudCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9mdW5jdGlvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuY3Rpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZnVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgKChmdW4geDMgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9hcHBseSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbWF0Y2ggeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX21hdGNoICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3RyeSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHJ5ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdHJ1Y3QgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF92YXJpYW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3JlY29yZCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2ZpZWxkIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9maWVsZCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZXRmaWVsZCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9hcnJheSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXJyYXkgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfaWZ0aGVuZWxzZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NlcXVlbmNlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF93aGlsZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfd2hpbGUgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZm9yIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgKChmdW4geDMgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIHg0IC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkpXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9jb25zdHJhaW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvZXJjZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfc2VuZCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VuZCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9uZXcgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ldyB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXRpbnN0dmFyIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX292ZXJyaWRlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vdmVycmlkZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRtb2R1bGUgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xldGV4Y2VwdGlvbiB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2Fzc2VydCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXNzZXJ0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xhenkgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfcG9seSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcG9seSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9vYmplY3QgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29iamVjdCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9uZXd0eXBlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXd0eXBlICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3BhY2sgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfb3BlbiB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sZXRvcCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0b3AgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfdW5yZWFjaGFibGUgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdW5yZWFjaGFibGVcbiAgICAgIH1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIH5uYW1lICA9XG4gICAgICAoKGZ1biB+a2luZCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgaW5jbHVkZV9pbmZvcyBtb2RfID1cbiAgICAgIHsgcGluY2xfbW9kID0gbW9kXzsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfVxuICAgIGxldCBsYWJlbF9kZWNsYXJhdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfm11dGFibGVfIC0+XG4gICAgICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcGxkX211dGFibGUgPSBtdXRhYmxlXztcbiAgICAgICAgICAgICAgICBwbGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICAgICAgICAgIHBsZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGxkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBsZXRvcCB+bGV0XyAgPVxuICAgICAgKChmdW4gfmFuZHMgLT4gKChmdW4gfmJvZHkgLT4geyBsZXRfOyBhbmRzOyBib2R5IH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGxvY2F0aW9uIH5zdGFydCAgPVxuICAgICAgKChmdW4gfmVuZF8gLT5cbiAgICAgICAgICAoKGZ1biB+Z2hvc3QgLT5cbiAgICAgICAgICAgICAgeyBsb2Nfc3RhcnQgPSBzdGFydDsgbG9jX2VuZCA9IGVuZF87IGxvY19naG9zdCA9IGdob3N0IH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG1vZHVsZV9iaW5kaW5nIH5uYW1lICA9XG4gICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtYl9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIHBtYl9leHByID0gZXhwcjtcbiAgICAgICAgICAgIHBtYl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbWJfbG9jID0gbG9jXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBtb2R1bGVfZGVjbGFyYXRpb24gfm5hbWUgID1cbiAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIHBtZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICBwbWRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1kX2xvYyA9IGxvY1xuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9pZGVudCB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfaWRlbnQgeDApIH1cbiAgICBsZXQgcG1vZF9zdHJ1Y3R1cmUgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX3N0cnVjdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9mdW5jdG9yIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfYXBwbHkgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfY29uc3RyYWludCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX3VucGFjayB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfdW5wYWNrIHgwKSB9XG4gICAgbGV0IHBtb2RfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfm5hbWUgID1cbiAgICAgICgoZnVuIH5tYW5pZmVzdCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtc19uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIHBtc19tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtc19sb2MgPSBsb2NcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfaWRlbnQgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2lkZW50IHgwKSB9XG4gICAgbGV0IHBtdHlfc2lnbmF0dXJlIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9zaWduYXR1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBtdHlfZnVuY3RvciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV9mdW5jdG9yICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X3dpdGggeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfd2l0aCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV90eXBlb2YgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3R5cGVvZiB4MCkgfVxuICAgIGxldCBwbXR5X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2FsaWFzIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9hbGlhcyB4MCkgfVxuICAgIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIHBtdGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICAgICAgcG10ZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXRkX2xvYyA9IGxvY1xuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb3RhZyB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHsgcG9mX2F0dHJpYnV0ZXMgPSBbXTsgcG9mX2xvYyA9IGxvYzsgcG9mX2Rlc2MgPSAoT3RhZyAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG9pbmhlcml0IHgwID1cbiAgICAgIHsgcG9mX2F0dHJpYnV0ZXMgPSBbXTsgcG9mX2xvYyA9IGxvYzsgcG9mX2Rlc2MgPSAoT2luaGVyaXQgeDApIH1cbiAgICBsZXQgb3Blbl9pbmZvcyB+ZXhwciAgPVxuICAgICAgKChmdW4gfm92ZXJyaWRlIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG9wZW5fZXhwciA9IGV4cHI7XG4gICAgICAgICAgICBwb3Blbl9vdmVycmlkZSA9IG92ZXJyaWRlO1xuICAgICAgICAgICAgcG9wZW5fbG9jID0gbG9jO1xuICAgICAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2FueSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gUHBhdF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXIgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9hbGlhcyB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYWxpYXMgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfY29uc3RhbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0YW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2ludGVydmFsIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF90dXBsZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RydWN0IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfdmFyaWFudCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyaWFudCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9yZWNvcmQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3JlY29yZCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9hcnJheSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYXJyYXkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3IgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29yICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2NvbnN0cmFpbnQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfdHlwZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHlwZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9sYXp5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9sYXp5IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3VucGFjayB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdW5wYWNrIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfZXhjZXB0aW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X29wZW4geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBvc2l0aW9uIH5mbmFtZSAgPVxuICAgICAgKChmdW4gfmxudW0gLT5cbiAgICAgICAgICAoKGZ1biB+Ym9sIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5jbnVtIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBvc19mbmFtZSA9IGZuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwb3NfbG51bSA9IGxudW07XG4gICAgICAgICAgICAgICAgICAgIHBvc19ib2wgPSBib2w7XG4gICAgICAgICAgICAgICAgICAgIHBvc19jbnVtID0gY251bVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBydGFnIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHJmX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcmZfZGVzYyA9IChSdGFnICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcmluaGVyaXQgeDAgPVxuICAgICAgeyBwcmZfYXR0cmlidXRlcyA9IFtdOyBwcmZfbG9jID0gbG9jOyBwcmZfZGVzYyA9IChSaW5oZXJpdCB4MCkgfVxuICAgIGxldCBwc2lnX3ZhbHVlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdmFsdWUgeDApIH1cbiAgICBsZXQgcHNpZ190eXBlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGUgKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX3R5cGVzdWJzdCB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ190eXBleHQgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBleHQgeDApIH1cbiAgICBsZXQgcHNpZ19leGNlcHRpb24geDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdWxlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kc3Vic3QgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2RzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3JlY21vZHVsZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19yZWNtb2R1bGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2R0eXBlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGVzdWJzdCB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ19vcGVuIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfb3BlbiB4MCkgfVxuICAgIGxldCBwc2lnX2luY2x1ZGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19pbmNsdWRlIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3MgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzcyB4MCkgfVxuICAgIGxldCBwc2lnX2NsYXNzX3R5cGUgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHNpZ19leHRlbnNpb24geDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9ldmFsIHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V2YWwgKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3ZhbHVlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3ZhbHVlICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9wcmltaXRpdmUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcHJpbWl0aXZlIHgwKSB9XG4gICAgbGV0IHBzdHJfdHlwZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBlICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl90eXBleHQgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBleHQgeDApIH1cbiAgICBsZXQgcHN0cl9leGNlcHRpb24geDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzdHJfbW9kdWxlIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzdHJfcmVjbW9kdWxlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX21vZHR5cGUgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzdHJfb3BlbiB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX29wZW4geDApIH1cbiAgICBsZXQgcHN0cl9jbGFzcyB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzIHgwKSB9XG4gICAgbGV0IHBzdHJfY2xhc3NfdHlwZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzc190eXBlIHgwKSB9XG4gICAgbGV0IHBzdHJfaW5jbHVkZSB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHN0cl9hdHRyaWJ1dGUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBzdHJfZXh0ZW5zaW9uIHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHRvcGxldmVsX2RpcmVjdGl2ZSB+bmFtZSAgPVxuICAgICAgKChmdW4gfmFyZyAtPiB7IHBkaXJfbmFtZSA9IG5hbWU7IHBkaXJfYXJnID0gYXJnOyBwZGlyX2xvYyA9IGxvYyB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHR5cGVfZGVjbGFyYXRpb24gfm5hbWUgID1cbiAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAoKGZ1biB+Y3N0cnMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmtpbmQgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICgoZnVuIH5tYW5pZmVzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2xvYyA9IGxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB0eXBlX2V4Y2VwdGlvbiBjb25zdHJ1Y3RvciA9XG4gICAgICB7XG4gICAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICAgICAgICBwdHlleG5fbG9jID0gbG9jO1xuICAgICAgICBwdHlleG5fYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHR5cGVfZXh0ZW5zaW9uIH5wYXRoICA9XG4gICAgICAoKGZ1biB+cGFyYW1zIC0+XG4gICAgICAgICAgKChmdW4gfmNvbnN0cnVjdG9ycyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+cHJpdmF0ZV8gLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X3BhdGggPSBwYXRoO1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHZhbHVlX2JpbmRpbmcgfnBhdCAgPVxuICAgICAgKChmdW4gfmV4cHIgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdmJfcGF0ID0gcGF0O1xuICAgICAgICAgICAgcHZiX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgcHZiX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB2Yl9sb2MgPSBsb2NcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICAoKGZ1biB+cHJpbSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHZhbF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwdmFsX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgICAgICBwdmFsX3ByaW0gPSBwcmltO1xuICAgICAgICAgICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB2YWxfbG9jID0gbG9jXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gIGVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIGxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IExvY2F0aW9uLnQgfVxuXG5sZXQgdHh0IHQgPSB0LnR4dFxubGV0IGxvYyB0ID0gdC5sb2NcbmxldCBtYWtlIH5sb2MgdHh0ID0geyBsb2M7IHR4dCB9XG5sZXQgbWFwIHQgfmYgPSB7IHQgd2l0aCB0eHQgPSBmIHQudHh0IH1cbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBsb25naWRlbnQgPSBMaWRlbnQgb2Ygc3RyaW5nIHwgTGRvdCBvZiB0ICogc3RyaW5nIHwgTGFwcGx5IG9mIHQgKiB0XG5cbiAgbGV0IGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50ID0gUG9seS5jb21wYXJlXG5cbiAgbGV0IGlzX25vcm1hbF9pZGVudF9jaGFyID0gZnVuY3Rpb25cbiAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIHwgJzAnIC4uICc5JyB8ICdfJyB8ICdcXCcnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICBsZXQgaXNfbm9ybWFsX2lkZW50ID0gZnVuY3Rpb25cbiAgICB8IFwiYXNyXCIgfCBcImxhbmRcIiB8IFwibG9yXCIgfCBcImxzbFwiIHwgXCJsc3JcIiB8IFwibHhvclwiIHwgXCJtb2RcIiB8IFwib3JcIiAtPiBmYWxzZVxuICAgIHwgc3RyaW5nIC0+IFN0cmluZy5mb3JfYWxsIHN0cmluZyB+Zjppc19ub3JtYWxfaWRlbnRfY2hhclxuXG4gIGxldCBzaG9ydF9uYW1lIHN0cmluZyA9XG4gICAgaWYgaXNfbm9ybWFsX2lkZW50IHN0cmluZyB0aGVuIHN0cmluZyBlbHNlIFwiKCBcIiBeIHN0cmluZyBeIFwiIClcIlxuXG4gIGxldCByZWMgbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBMaWRlbnQgcyAtPiBzaG9ydF9uYW1lIHNcbiAgICB8IExkb3QgKGEsIGIpIC0+IG5hbWUgYSBeIFwiLlwiIF4gc2hvcnRfbmFtZSBiXG4gICAgfCBMYXBwbHkgKGEsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwiJXMoJXMpXCIgKG5hbWUgYSkgKG5hbWUgYilcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKG5hbWUgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IHJlYyBmbGF0IGFjY3UgPSBmdW5jdGlvblxuICB8IExpZGVudCBzIC0+IHMgOjogYWNjdVxuICB8IExkb3QgKGxpZCwgcykgLT4gZmxhdCAocyA6OiBhY2N1KSBsaWRcbiAgfCBMYXBwbHkgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkxvbmdpZGVudC5mbGF0dGVuXCJcblxubGV0IGZsYXR0ZW5fZXhuIGxpZCA9IGZsYXQgW10gbGlkXG5cbmxldCBsYXN0X2V4biA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gc1xuICB8IExkb3QgKF8sIHMpIC0+IHNcbiAgfCBMYXBwbHkgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkxvbmdpZGVudC5mbGF0dGVuXCJcblxubGV0IHVuZmxhdHRlbiB+aW5pdCBsID0gTGlzdC5mb2xkX2xlZnQgbCB+aW5pdCB+ZjooZnVuIGFjYyBzIC0+IExkb3QgKGFjYywgcykpXG5cbigqIGZvciBjYXNlcyB3aXRob3V0IGRvdHRlZCBvcGVyYXRvcnMgKGUuZy4gW3BhcnNlIFwiQS5CLkNcIl0pICopXG5sZXQgcGFyc2Vfc2ltcGxlIHMgPVxuICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciBzIH5zZXA6Jy4nIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBzIDo6IGwgLT4gdW5mbGF0dGVuIH5pbml0OihMaWRlbnQgcykgbFxuXG4oKiBoYW5kbGUgW1wiQS5CLigrLispXCJdIG9yIFtcIlZlYy4oLiUuKCk8LSlcIl0gKilcbmxldCBwYXJzZSBzID1cbiAgbGV0IGludmFsaWQgKCkgPVxuICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIlBweGxpYi5Mb25naWRlbnQucGFyc2U6ICVTXCIgcylcbiAgaW5cbiAgaWYgU3RyaW5nLmxlbmd0aCBzIDwgMSB0aGVuIGludmFsaWQgKCk7XG4gIGxldCBvcGVuX3BhciA9IFN0cmluZy5pbmRleF9vcHQgcyAnKCcgaW5cbiAgbGV0IGNsb3NlX3BhciA9IFN0cmluZy5pbmRleF9vcHQgcyAnKScgaW5cbiAgbWF0Y2ggKHMuWzBdLCBvcGVuX3BhciwgY2xvc2VfcGFyKSB3aXRoXG4gIHwgKCdBJyAuLiAnWicgfCAnYScgLi4gJ3onIHwgJ18nKSwgTm9uZSwgTm9uZSAtPiBwYXJzZV9zaW1wbGUgc1xuICB8IF8sIE5vbmUsIE5vbmUgLT4gTGlkZW50IHMgKCogVGhpcyBpcyBhIHJhdyBvcGVyYXRvciwgbm8gbW9kdWxlIHBhdGggKilcbiAgfCBfLCBOb25lLCBfIHwgXywgXywgTm9uZSAtPiBpbnZhbGlkICgpXG4gIHwgXywgU29tZSBsLCBTb21lIHIgLT4gKFxuICAgICAgaWYgSW50LihyIDw+IFN0cmluZy5sZW5ndGggcyAtIDEpIHRoZW4gaW52YWxpZCAoKTtcbiAgICAgIGxldCBncm91cCA9XG4gICAgICAgIGlmIEludC4ociA9IGwgKyAxKSB0aGVuIFwiKClcIlxuICAgICAgICBlbHNlIFN0cmluZy50cmltIChTdHJpbmcuc3ViIHMgfnBvczoobCArIDEpIH5sZW46KHIgLSBsIC0gMSkpXG4gICAgICBpblxuICAgICAgaWYgSW50LihsID0gMCkgdGhlbiBMaWRlbnQgZ3JvdXBcbiAgICAgIGVsc2UgaWYgQ2hhci4ocy5bbCAtIDFdIDw+ICcuJykgdGhlbiBpbnZhbGlkICgpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBiZWZvcmUgPSBTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46KGwgLSAxKSBpblxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciBiZWZvcmUgfnNlcDonLicgd2l0aFxuICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IHMgOjogbCAtPiBMZG90ICh1bmZsYXR0ZW4gfmluaXQ6KExpZGVudCBzKSBsLCBncm91cCkpXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZSAoVClcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZSAoVClcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRGVmYXVsdCA9IHN0cnVjdFxuICBtb2R1bGUgTG9jYXRlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIExvYy50XG5cbiAgICBsZXQgbG9jICh4IDogXyB0KSA9IHgubG9jXG4gICAgbGV0IG1rIH5sb2MgeCA9IHsgbG9jOyB0eHQgPSB4IH1cbiAgICBsZXQgbWFwIGYgdCA9IHsgdCB3aXRoIHR4dCA9IGYgdC50eHQgfVxuICAgIGxldCBtYXBfbGlkZW50IHggPSBtYXAgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeFxuICAgIGxldCBsaWRlbnQgfmxvYyB4ID0gbWsgfmxvYyAoTG9uZ2lkZW50LnBhcnNlIHgpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1cblxuICBtb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gICAgbGV0IHBwYXRfY29uc3RydWN0ID0gcHBhdF9jb25zdHJ1Y3RcblxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH52YXJzIH5hcmdzIH5yZXMgKCkgPVxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+dmFycyB+YXJncyB+cmVzXG4gIGVuZFxuXG4gICgqLS0tLS0tIHN0YWJsZSBsYXllciBhYm92ZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTSAtLS0tLSopXG4gIGxldCBwcGF0X2NvbnN0cnVjdCB+bG9jIGxpZCBwID1cbiAgICB7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfZGVzYyA9IFBwYXRfY29uc3RydWN0IChsaWQsIE9wdGlvbi5tYXAgcCB+ZjooZnVuIHAgLT4gKFtdLCBwKSkpO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+YXJncyB+cmVzID1cbiAgICB7XG4gICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICBwY2RfdmFycyA9IFtdO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IFtdO1xuICAgIH1cblxuICAoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4gIGxldCBwc3RyX3ZhbHVlX2xpc3QgfmxvYyByZWNfZmxhZyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgdmJzIC0+IFsgcHN0cl92YWx1ZSB+bG9jIHJlY19mbGFnIHZicyBdXG5cbiAgbGV0IG5vbnJlY190eXBlX2RlY2xhcmF0aW9uIH5sb2M6XyB+bmFtZTpfIH5wYXJhbXM6XyB+Y3N0cnM6XyB+a2luZDpfXG4gICAgICB+cHJpdmF0ZV86XyB+bWFuaWZlc3Q6XyA9XG4gICAgZmFpbHdpdGhcbiAgICAgIFwiUHB4bGliLkFzdF9idWlsZGVyLm5vbnJlY190eXBlX2RlY2xhcmF0aW9uOiBkb24ndCB1c2UgdGhpcyBmdW5jdGlvblwiXG5cbiAgbGV0IGVpbnQgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50LnRvX3N0cmluZyB0LCBOb25lKSlcbiAgbGV0IGVjaGFyIH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2NoYXIgdClcbiAgbGV0IGVzdHJpbmcgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3Rfc3RyaW5nICh0LCBsb2MsIE5vbmUpKVxuICBsZXQgZWZsb2F0IH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2Zsb2F0ICh0LCBOb25lKSlcblxuICBsZXQgZWludDMyIH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHQsIFNvbWUgJ2wnKSlcblxuICBsZXQgZWludDY0IH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50NjQudG9fc3RyaW5nIHQsIFNvbWUgJ0wnKSlcblxuICBsZXQgZW5hdGl2ZWludCB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKE5hdGl2ZWludC50b19zdHJpbmcgdCwgU29tZSAnbicpKVxuXG4gIGxldCBwaW50IH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludC50b19zdHJpbmcgdCwgTm9uZSkpXG4gIGxldCBwY2hhciB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9jaGFyIHQpXG4gIGxldCBwc3RyaW5nIH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X3N0cmluZyAodCwgbG9jLCBOb25lKSlcbiAgbGV0IHBmbG9hdCB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9mbG9hdCAodCwgTm9uZSkpXG5cbiAgbGV0IHBpbnQzMiB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDMyLnRvX3N0cmluZyB0LCBTb21lICdsJykpXG5cbiAgbGV0IHBpbnQ2NCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB0LCBTb21lICdMJykpXG5cbiAgbGV0IHBuYXRpdmVpbnQgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChOYXRpdmVpbnQudG9fc3RyaW5nIHQsIFNvbWUgJ24nKSlcblxuICBsZXQgZWJvb2wgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIChCb29sLnRvX3N0cmluZyB0KSkgTm9uZVxuXG4gIGxldCBwYm9vbCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgKEJvb2wudG9fc3RyaW5nIHQpKSBOb25lXG5cbiAgbGV0IGV2YXIgfmxvYyB2ID0gcGV4cF9pZGVudCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5wYXJzZSB2KSlcbiAgbGV0IHB2YXIgfmxvYyB2ID0gcHBhdF92YXIgfmxvYyAoTG9jYXRlZC5tayB+bG9jIHYpXG4gIGxldCBldW5pdCB+bG9jID0gcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIpIE5vbmVcbiAgbGV0IHB1bml0IH5sb2MgPSBwcGF0X2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIFwiKClcIikgTm9uZVxuICBsZXQgcGV4cF90dXBsZSB+bG9jIGwgPSBtYXRjaCBsIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gcGV4cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGUgfmxvYyBsID0gbWF0Y2ggbCB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBsXG4gIGxldCBwdHlwX3R1cGxlIH5sb2MgbCA9IG1hdGNoIGwgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBwdHlwX3R1cGxlIH5sb2MgbFxuXG4gIGxldCBwZXhwX3R1cGxlX29wdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBOb25lIHwgXyA6OiBfIC0+IFNvbWUgKHBleHBfdHVwbGUgfmxvYyBsKVxuXG4gIGxldCBwcGF0X3R1cGxlX29wdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBOb25lIHwgXyA6OiBfIC0+IFNvbWUgKHBwYXRfdHVwbGUgfmxvYyBsKVxuXG4gIGxldCBwdHlwX3BvbHkgfmxvYyB2YXJzIHR5ID1cbiAgICBtYXRjaCB2YXJzIHdpdGggW10gLT4gdHkgfCBfIC0+IHB0eXBfcG9seSB+bG9jIHZhcnMgdHlcblxuICBsZXQgcGV4cF9hcHBseSB+bG9jIGUgZWwgPVxuICAgIG1hdGNoIChlLCBlbCkgd2l0aFxuICAgIHwgXywgW10gLT4gZVxuICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChlLCBhcmdzKTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSwgXyAtPlxuICAgICAgICB7IGUgd2l0aCBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChlLCBhcmdzIEAgZWwpIH1cbiAgICB8IF8gLT4gcGV4cF9hcHBseSB+bG9jIGUgZWxcblxuICBsZXQgZWFwcGx5IH5sb2MgZSBlbCA9XG4gICAgcGV4cF9hcHBseSB+bG9jIGUgKExpc3QubWFwIGVsIH5mOihmdW4gZSAtPiAoQXN0dHlwZXMuTm9sYWJlbCwgZSkpKVxuXG4gIGxldCBlYWJzdHJhY3QgfmxvYyBwcyBlID1cbiAgICBMaXN0LmZvbGRfcmlnaHQgcHMgfmluaXQ6ZSB+ZjooZnVuIHAgZSAtPlxuICAgICAgICBwZXhwX2Z1biB+bG9jIEFzdHR5cGVzLk5vbGFiZWwgTm9uZSBwIGUpXG5cbiAgbGV0IGVzZXF1ZW5jZSB+bG9jIGVsID1cbiAgICBtYXRjaCBMaXN0LnJldiBlbCB3aXRoXG4gICAgfCBbXSAtPiBldW5pdCB+bG9jXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdCB0bCB+aW5pdDpoZCB+ZjooZnVuIGFjYyBlIC0+IHBleHBfc2VxdWVuY2UgfmxvYyBlIGFjYylcblxuICBsZXQgcGNvbnN0cnVjdCBjZCBhcmcgPVxuICAgIHBwYXRfY29uc3RydWN0IH5sb2M6Y2QucGNkX2xvYyAoTG9jYXRlZC5tYXBfbGlkZW50IGNkLnBjZF9uYW1lKSBhcmdcblxuICBsZXQgZWNvbnN0cnVjdCBjZCBhcmcgPVxuICAgIHBleHBfY29uc3RydWN0IH5sb2M6Y2QucGNkX2xvYyAoTG9jYXRlZC5tYXBfbGlkZW50IGNkLnBjZF9uYW1lKSBhcmdcblxuICBsZXQgcmVjIGVsaXN0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCJbXVwiKSkgTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIHBleHBfY29uc3RydWN0IH5sb2NcbiAgICAgICAgICAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiOjpcIikpXG4gICAgICAgICAgKFNvbWUgKHBleHBfdHVwbGUgfmxvYyBbIHg7IGVsaXN0IH5sb2MgbCBdKSlcblxuICBsZXQgcmVjIHBsaXN0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBwcGF0X2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCJbXVwiKSkgTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIHBwYXRfY29uc3RydWN0IH5sb2NcbiAgICAgICAgICAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiOjpcIikpXG4gICAgICAgICAgKFNvbWUgKHBwYXRfdHVwbGUgfmxvYyBbIHg7IHBsaXN0IH5sb2MgbCBdKSlcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnZfd2l0aG91dF9hcHBseSB+bG9jIChpZGVudCA6IExvbmdpZGVudC50KSB+ZiA9XG4gICAgbWF0Y2ggaWRlbnQgd2l0aFxuICAgIHwgTGlkZW50IG4gLT4gcGV4cF9pZGVudCB+bG9jIHsgdHh0ID0gTGlkZW50IChmIG4pOyBsb2MgfVxuICAgIHwgTGRvdCAocGF0aCwgbikgLT4gcGV4cF9pZGVudCB+bG9jIHsgdHh0ID0gTGRvdCAocGF0aCwgZiBuKTsgbG9jIH1cbiAgICB8IExhcHBseSBfIC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidW5leHBlY3RlZCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVcIlxuXG4gIGxldCB0eXBlX2NvbnN0cl9jb252IH5sb2M6YXBwbHlfbG9jIHsgTG9jLmxvYzsgdHh0ID0gbG9uZ2lkZW50IH0gfmYgYXJncyA9XG4gICAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbWF0Y2ggKGxvbmdpZGVudCA6IExvbmdpZGVudC50KSB3aXRoXG4gICAgfCBMaWRlbnQgXyB8IExkb3QgKChMaWRlbnQgXyB8IExkb3QgXyksIF8pIHwgTGFwcGx5IF8gLT4gKFxuICAgICAgICBsZXQgaWRlbnQgPVxuICAgICAgICAgIHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgbG9uZ2lkZW50IH5sb2MgfmZcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gaWRlbnRcbiAgICAgICAgfCBfIDo6IF8gLT4gZWFwcGx5IH5sb2M6YXBwbHlfbG9jIGlkZW50IGFyZ3MpXG4gICAgfCBMZG90ICgoTGFwcGx5IF8gYXMgbW9kdWxlX3BhdGgpLCBuKSAtPlxuICAgICAgICBsZXQgc3VmZml4X24gZnVuY3Rvcl8gPSBTdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpIGZ1bmN0b3JfIF4gXCJfX1wiIF4gbiBpblxuICAgICAgICBsZXQgcmVjIGdhdGhlcl9sYXBwbHkgZnVuY3Rvcl9hcmdzIDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgKiBfID1cbiAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgIHwgTGFwcGx5IChyZXN0LCBhcmcpIC0+IGdhdGhlcl9sYXBwbHkgKGFyZyA6OiBmdW5jdG9yX2FyZ3MpIHJlc3RcbiAgICAgICAgICB8IExpZGVudCBmdW5jdG9yXyAtPiAoTGlkZW50IChzdWZmaXhfbiBmdW5jdG9yXyksIGZ1bmN0b3JfYXJncylcbiAgICAgICAgICB8IExkb3QgKGZ1bmN0b3JfcGF0aCwgZnVuY3Rvcl8pIC0+XG4gICAgICAgICAgICAgIChMZG90IChmdW5jdG9yX3BhdGgsIHN1ZmZpeF9uIGZ1bmN0b3JfKSwgZnVuY3Rvcl9hcmdzKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaWRlbnQsIGZ1bmN0b3JfYXJncyA9IGdhdGhlcl9sYXBwbHkgW10gbW9kdWxlX3BhdGggaW5cbiAgICAgICAgZWFwcGx5IH5sb2M6YXBwbHlfbG9jXG4gICAgICAgICAgKHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgaWRlbnQgfmxvYyB+ZilcbiAgICAgICAgICAoTGlzdC5tYXAgZnVuY3Rvcl9hcmdzIH5mOihmdW4gcGF0aCAtPlxuICAgICAgICAgICAgICAgcGV4cF9wYWNrIH5sb2MgKHBtb2RfaWRlbnQgfmxvYyB7IHR4dCA9IHBhdGg7IGxvYyB9KSlcbiAgICAgICAgICBAIGFyZ3MpXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IH5sb2MgbG9uZ2lkZW50IH5mID1cbiAgICB0eXBlX2NvbnN0cl9jb252IGxvbmdpZGVudCB+bG9jIH5mIFtdXG5cbiAgbGV0IGV0YV9yZWR1Y2UgPVxuICAgIGxldCByZWMgZ2F0aGVyX3BhcmFtcyBhY2MgZXhwciA9XG4gICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgIHwge1xuICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICBQZXhwX2Z1biAobGFiZWwsIE5vbmUgKCogbm8gZGVmYXVsdCBleHByZXNzaW9uICopLCBzdWJwYXQsIGJvZHkpO1xuICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgIHBleHBfbG9jID0gXztcbiAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICB9IC0+IChcbiAgICAgICAgICBtYXRjaCBzdWJwYXQgd2l0aFxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBuYW1lO1xuICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICBnYXRoZXJfcGFyYW1zICgobGFiZWwsIG5hbWUsIE5vbmUpIDo6IGFjYykgYm9keVxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gUHBhdF92YXIgbmFtZTtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IF87XG4gICAgICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICB0eSApO1xuICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAoKiBXZSByZWR1Y2UgW2Z1biAoeCA6IHR5KSAtPiBmIHhdIGJ5IHJld3JpdGluZyBpdCBbKGYgOiB0eSAtPiBfKV0uICopXG4gICAgICAgICAgICAgIGdhdGhlcl9wYXJhbXMgKChsYWJlbCwgbmFtZSwgU29tZSB0eSkgOjogYWNjKSBib2R5XG4gICAgICAgICAgfCBfIC0+IChMaXN0LnJldiBhY2MsIGV4cHIpKVxuICAgICAgfCBfIC0+IChMaXN0LnJldiBhY2MsIGV4cHIpXG4gICAgaW5cbiAgICBsZXQgYW5ub3RhdGUgfmxvYyBleHByIHBhcmFtcyA9XG4gICAgICBpZiBMaXN0LmV4aXN0cyBwYXJhbXMgfmY6KGZ1biAoXywgXywgdHkpIC0+IE9wdGlvbi5pc19zb21lIHR5KSB0aGVuXG4gICAgICAgIGxldCB0eSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IHBhcmFtcyB+aW5pdDoocHR5cF9hbnkgfmxvYylcbiAgICAgICAgICAgIH5mOihmdW4gKHBhcmFtX2xhYmVsLCBwYXJhbSwgdHlfb3B0KSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGxvYyA9IHBhcmFtLmxvYyBpblxuICAgICAgICAgICAgICBsZXQgdHkgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHR5X29wdCB3aXRoIE5vbmUgLT4gcHR5cF9hbnkgfmxvYyB8IFNvbWUgdHkgLT4gdHlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgcHR5cF9hcnJvdyB+bG9jIHBhcmFtX2xhYmVsIHR5IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgcGV4cF9jb25zdHJhaW50IH5sb2MgZXhwciB0eVxuICAgICAgZWxzZSBleHByXG4gICAgaW5cbiAgICBsZXQgcmVjIGdhdGhlcl9hcmdzIG4geCA9XG4gICAgICBpZiBuID0gMCB0aGVuIFNvbWUgKHgsIFtdKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCB7XG4gICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChib2R5LCBhcmdzKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICBpZiBMaXN0Lmxlbmd0aCBhcmdzIDw9IG4gdGhlblxuICAgICAgICAgICAgICBtYXRjaCBnYXRoZXJfYXJncyAobiAtIExpc3QubGVuZ3RoIGFyZ3MpIGJvZHkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgKGJvZHksIGFyZ3MnKSAtPiBTb21lIChib2R5LCBhcmdzJyBAIGFyZ3MpXG4gICAgICAgICAgICBlbHNlIE5vbmVcbiAgICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGZ1biBleHByIC0+XG4gICAgICBsZXQgcGFyYW1zLCBib2R5ID0gZ2F0aGVyX3BhcmFtcyBbXSBleHByIGluXG4gICAgICBtYXRjaCBnYXRoZXJfYXJncyAoTGlzdC5sZW5ndGggcGFyYW1zKSBib2R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgKCh7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgXzsgXyB9IGFzIGZfaWRlbnQpLCBhcmdzKSAtPiAoXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIExpc3QuZm9yX2FsbDIgYXJncyBwYXJhbXNcbiAgICAgICAgICAgICAgfmY6KGZ1biAoYXJnX2xhYmVsLCBhcmcpIChwYXJhbV9sYWJlbCwgcGFyYW0sIF8pIC0+XG4gICAgICAgICAgICAgICAgUG9seS4oID0gKSAoYXJnX2xhYmVsIDogYXJnX2xhYmVsKSBwYXJhbV9sYWJlbFxuICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBuYW1lJzsgXyB9O1xuICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgICBTdHJpbmcuKCA9ICkgbmFtZScgcGFyYW0udHh0XG4gICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgICAgICB8IHRydWUgLT4gU29tZSAoYW5ub3RhdGUgfmxvYzpleHByLnBleHBfbG9jIGZfaWRlbnQgcGFyYW1zKSlcbiAgICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgZXhwciA9IE9wdGlvbi52YWx1ZSAoZXRhX3JlZHVjZSBleHByKSB+ZGVmYXVsdDpleHByXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyBleHByIH5yZWNfZmxhZyA9XG4gICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgIHwgUmVjdXJzaXZlIC0+IGV4cHJcbiAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIGV4cHJcbmVuZFxuXG5tb2R1bGUgdHlwZSBMb2MgPSBBc3RfYnVpbGRlcl9pbnRmLkxvY1xuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfaW50Zi5TXG5cbiAgbW9kdWxlIExhdGVzdCA6IHNpZ1xuICAgIHZhbCBwcGF0X2NvbnN0cnVjdCA6XG4gICAgICBsb25naWRlbnQgbG9jIC0+IChsYWJlbCBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvbiAtPiBwYXR0ZXJuXG5cbiAgICB2YWwgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgICAgbmFtZTpsYWJlbCBsb2MgLT5cbiAgICAgIHZhcnM6bGFiZWwgbG9jIGxpc3QgLT5cbiAgICAgIGFyZ3M6Y29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgICByZXM6Y29yZV90eXBlIG9wdGlvbiAtPlxuICAgICAgdW5pdCAtPlxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgZW5kXG5cbiAgdmFsIHBwYXRfY29uc3RydWN0IDogbG9uZ2lkZW50IGxvYyAtPiBwYXR0ZXJuIG9wdGlvbiAtPiBwYXR0ZXJuXG5cbiAgdmFsIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBuYW1lOmxhYmVsIGxvYyAtPlxuICAgIGFyZ3M6Y29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgcmVzOmNvcmVfdHlwZSBvcHRpb24gLT5cbiAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuZW5kXG5cbm1vZHVsZSBNYWtlIChMb2MgOiBzaWdcbiAgdmFsIGxvYyA6IExvY2F0aW9uLnRcbmVuZCkgOiBTID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1ha2UgKExvYylcblxuICBtb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gICAgbGV0IHBwYXRfY29uc3RydWN0ID0gcHBhdF9jb25zdHJ1Y3RcblxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSB+dmFycyB+YXJncyB+cmVzICgpID1cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH52YXJzIH5hcmdzIH5yZXNcbiAgZW5kXG5cbiAgKCotLS0tLSBzdGFibGUgbGF5ZXIgYWJvdmUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1ha2UgKExvYykgLS0tLS0qKVxuXG4gIGxldCBwcGF0X2NvbnN0cnVjdCBsaWQgcCA9XG4gICAge1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cnVjdCAobGlkLCBPcHRpb24ubWFwIHAgfmY6KGZ1biBwIC0+IChbXSwgcCkpKTtcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH5hcmdzIH5yZXMgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gW107XG4gICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW107XG4gICAgfVxuXG4gICgqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuICBsZXQgcHN0cl92YWx1ZV9saXN0ID0gRGVmYXVsdC5wc3RyX3ZhbHVlX2xpc3RcblxuICBsZXQgbm9ucmVjX3R5cGVfZGVjbGFyYXRpb24gfm5hbWUgfnBhcmFtcyB+Y3N0cnMgfmtpbmQgfnByaXZhdGVfIH5tYW5pZmVzdCA9XG4gICAgRGVmYXVsdC5ub25yZWNfdHlwZV9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH5wYXJhbXMgfmNzdHJzIH5raW5kIH5wcml2YXRlX1xuICAgICAgfm1hbmlmZXN0XG5cbiAgbW9kdWxlIExvY2F0ZWQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERlZmF1bHQuTG9jYXRlZFxuXG4gICAgbGV0IGxvYyBfID0gTG9jLmxvY1xuICAgIGxldCBtayB4ID0gbWsgfmxvYzpMb2MubG9jIHhcbiAgICBsZXQgbGlkZW50IHggPSBsaWRlbnQgfmxvYzpMb2MubG9jIHhcbiAgZW5kXG5cbiAgbGV0IHBleHBfdHVwbGUgbCA9IERlZmF1bHQucGV4cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGUgbCA9IERlZmF1bHQucHBhdF90dXBsZSB+bG9jIGxcbiAgbGV0IHB0eXBfdHVwbGUgbCA9IERlZmF1bHQucHR5cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBleHBfdHVwbGVfb3B0IGwgPSBEZWZhdWx0LnBleHBfdHVwbGVfb3B0IH5sb2MgbFxuICBsZXQgcHBhdF90dXBsZV9vcHQgbCA9IERlZmF1bHQucHBhdF90dXBsZV9vcHQgfmxvYyBsXG4gIGxldCBwdHlwX3BvbHkgdmFycyB0eSA9IERlZmF1bHQucHR5cF9wb2x5IH5sb2MgdmFycyB0eVxuICBsZXQgcGV4cF9hcHBseSBlIGVsID0gRGVmYXVsdC5wZXhwX2FwcGx5IH5sb2MgZSBlbFxuICBsZXQgZWludCB0ID0gRGVmYXVsdC5laW50IH5sb2MgdFxuICBsZXQgZWNoYXIgdCA9IERlZmF1bHQuZWNoYXIgfmxvYyB0XG4gIGxldCBlc3RyaW5nIHQgPSBEZWZhdWx0LmVzdHJpbmcgfmxvYyB0XG4gIGxldCBlZmxvYXQgdCA9IERlZmF1bHQuZWZsb2F0IH5sb2MgdFxuICBsZXQgZWludDMyIHQgPSBEZWZhdWx0LmVpbnQzMiB+bG9jIHRcbiAgbGV0IGVpbnQ2NCB0ID0gRGVmYXVsdC5laW50NjQgfmxvYyB0XG4gIGxldCBlbmF0aXZlaW50IHQgPSBEZWZhdWx0LmVuYXRpdmVpbnQgfmxvYyB0XG4gIGxldCBlYm9vbCB0ID0gRGVmYXVsdC5lYm9vbCB+bG9jIHRcbiAgbGV0IGV2YXIgdCA9IERlZmF1bHQuZXZhciB+bG9jIHRcbiAgbGV0IHBpbnQgdCA9IERlZmF1bHQucGludCB+bG9jIHRcbiAgbGV0IHBjaGFyIHQgPSBEZWZhdWx0LnBjaGFyIH5sb2MgdFxuICBsZXQgcHN0cmluZyB0ID0gRGVmYXVsdC5wc3RyaW5nIH5sb2MgdFxuICBsZXQgcGZsb2F0IHQgPSBEZWZhdWx0LnBmbG9hdCB+bG9jIHRcbiAgbGV0IHBpbnQzMiB0ID0gRGVmYXVsdC5waW50MzIgfmxvYyB0XG4gIGxldCBwaW50NjQgdCA9IERlZmF1bHQucGludDY0IH5sb2MgdFxuICBsZXQgcG5hdGl2ZWludCB0ID0gRGVmYXVsdC5wbmF0aXZlaW50IH5sb2MgdFxuICBsZXQgcGJvb2wgdCA9IERlZmF1bHQucGJvb2wgfmxvYyB0XG4gIGxldCBwdmFyIHQgPSBEZWZhdWx0LnB2YXIgfmxvYyB0XG4gIGxldCBldW5pdCA9IERlZmF1bHQuZXVuaXQgfmxvY1xuICBsZXQgcHVuaXQgPSBEZWZhdWx0LnB1bml0IH5sb2NcbiAgbGV0IGVjb25zdHJ1Y3QgPSBEZWZhdWx0LmVjb25zdHJ1Y3RcbiAgbGV0IHBjb25zdHJ1Y3QgPSBEZWZhdWx0LnBjb25zdHJ1Y3RcbiAgbGV0IGVhcHBseSBlIGVsID0gRGVmYXVsdC5lYXBwbHkgfmxvYyBlIGVsXG4gIGxldCBlYWJzdHJhY3QgcHMgZSA9IERlZmF1bHQuZWFic3RyYWN0IH5sb2MgcHMgZVxuICBsZXQgZXNlcXVlbmNlIGVsID0gRGVmYXVsdC5lc2VxdWVuY2UgfmxvYyBlbFxuICBsZXQgZWxpc3QgbCA9IERlZmF1bHQuZWxpc3QgfmxvYyBsXG4gIGxldCBwbGlzdCBsID0gRGVmYXVsdC5wbGlzdCB+bG9jIGxcblxuICBsZXQgdHlwZV9jb25zdHJfY29udiBpZGVudCB+ZiBhcmdzID1cbiAgICBEZWZhdWx0LnR5cGVfY29uc3RyX2NvbnYgfmxvYyBpZGVudCB+ZiBhcmdzXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IGlkZW50IH5mID1cbiAgICBEZWZhdWx0LnVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IH5sb2MgaWRlbnQgfmZcblxuICBsZXQgZXRhX3JlZHVjZSA9IERlZmF1bHQuZXRhX3JlZHVjZVxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSA9IERlZmF1bHQuZXRhX3JlZHVjZV9pZl9wb3NzaWJsZVxuXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgPVxuICAgIERlZmF1bHQuZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjXG5lbmRcblxubGV0IG1ha2UgbG9jID1cbiAgKG1vZHVsZSBNYWtlIChzdHJ1Y3RcbiAgICBsZXQgbG9jID0gbG9jXG4gIGVuZCkgOiBTKVxuIiwiKCoqIFNtYWxsIGhlbHBlciB0byBmaW5kIG91dCB3aG8gaXMgdGhlIGNhbGxlciBvZiBhIGZ1bmN0aW9uICopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFByaW50ZXhjID0gU3RkbGliLlByaW50ZXhjXG5cbnR5cGUgdCA9IFByaW50ZXhjLmxvY2F0aW9uIG9wdGlvblxuXG5sZXQgZ2V0IH5za2lwID1cbiAgbGV0IHNraXAgPSBfX0ZJTEVfXyA6OiBza2lwIGluXG4gIGxldCBzdGFjayA9IFByaW50ZXhjLmdldF9jYWxsc3RhY2sgMTYgaW5cbiAgbGV0IGxlbiA9IFByaW50ZXhjLnJhd19iYWNrdHJhY2VfbGVuZ3RoIHN0YWNrIGluXG4gIGxldCByZWMgbG9vcCBwb3MgPVxuICAgIGlmIHBvcyA9IGxlbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaFxuICAgICAgICBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZV9zbG90IHN0YWNrIHBvc1xuICAgICAgICB8PiBQcmludGV4Yy5jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCB8PiBQcmludGV4Yy5TbG90LmxvY2F0aW9uXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGxvYyAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIH5zZXQ6c2tpcCBsb2MuZmlsZW5hbWUgdGhlbiBsb29wIChwb3MgKyAxKSBlbHNlIFNvbWUgbG9jXG4gIGluXG4gIGxvb3AgMFxuIiwiKCoqIEhlbHBlcnMgdG8gcHJvdmlkZSBoaW50cyB0byBQUFggdXNlcnMgZm9yIHR5cG9zIG9yIHNwZWxsY2hlY2tzLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuZXhjZXB0aW9uIEN1dG9mZl9tZXRcblxuKCogQXMgZm91bmQgaGVyZSBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvTGV2ZW5zaHRlaW5fZGlzdGFuY2UjT0NhbWwgKilcbmxldCBsZXZlbnNodGVpbl9kaXN0YW5jZSBzIHQgY3V0b2ZmID1cbiAgbGV0IG0gPSBTdHJpbmcubGVuZ3RoIHMgYW5kIG4gPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgaWYgY3V0b2ZmID0gMCB8fCBhYnMgKG0gLSBuKSA+PSBjdXRvZmYgdGhlbiBOb25lXG4gIGVsc2VcbiAgICAoKiBmb3IgYWxsIGkgYW5kIGosIGQuKGkpLihqKSB3aWxsIGhvbGQgdGhlIExldmVuc2h0ZWluIGRpc3RhbmNlIGJldHdlZW4gdGhlXG4gICAgICAgZmlyc3QgaSBjaGFyYWN0ZXJzIG9mIHMgYW5kIHRoZSBmaXJzdCBqIGNoYXJhY3RlcnMgb2YgdCAqKVxuICAgIGxldCBkID0gQXJyYXkubWFrZV9tYXRyaXggfmRpbXg6KG0gKyAxKSB+ZGlteToobiArIDEpIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbSBkb1xuICAgICAgKCogdGhlIGRpc3RhbmNlIG9mIGFueSBmaXJzdCBzdHJpbmcgdG8gYW4gZW1wdHkgc2Vjb25kIHN0cmluZyAqKVxuICAgICAgZC4oaSkuKDApIDwtIGlcbiAgICBkb25lO1xuICAgIGZvciBqID0gMCB0byBuIGRvXG4gICAgICAoKiB0aGUgZGlzdGFuY2Ugb2YgYW55IHNlY29uZCBzdHJpbmcgdG8gYW4gZW1wdHkgZmlyc3Qgc3RyaW5nICopXG4gICAgICBkLigwKS4oaikgPC0galxuICAgIGRvbmU7XG4gICAgKCogdGhlIG1pbmltdW0gb2YgZWFjaCBsaW5lIHRvZ2V0aGVyIHdpdGggdGhlIGNvbHVtbiBpbmRleCB3aWxsIGJlIHVzZWRcbiAgICAgICB0byBub3RpY2UgY3V0b2ZmIGV4Y2VlZGluZyBhbmQgcmV0dXJuIGVhcmx5IGluIHRoYXQgY2FzZSAqKVxuICAgIGxldCBsaW5lX21pbiA9IHJlZiAwIGluXG4gICAgbGV0IGRpc3RhbmNlID1cbiAgICAgIHRyeVxuICAgICAgICBmb3IgaiA9IDEgdG8gbiBkb1xuICAgICAgICAgIGlmICFsaW5lX21pbiA+PSBjdXRvZmYgLSAxICYmIGogPj0gY3V0b2ZmIC0gMSB0aGVuIHJhaXNlIEN1dG9mZl9tZXQ7XG4gICAgICAgICAgbGluZV9taW4gOj0gbWF4IG0gbjtcbiAgICAgICAgICBmb3IgaSA9IDEgdG8gbSBkb1xuICAgICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgICAgaWYgQ2hhci5lcXVhbCBzLltpIC0gMV0gdC5baiAtIDFdIHRoZW4gZC4oaSAtIDEpLihqIC0gMSlcbiAgICAgICAgICAgICAgICAoKiBubyBvcGVyYXRpb24gcmVxdWlyZWQgKilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1pblxuICAgICAgICAgICAgICAgICAgKGQuKGkgLSAxKS4oaikgKyAxKSAoKiBhIGRlbGV0aW9uICopXG4gICAgICAgICAgICAgICAgICAobWluXG4gICAgICAgICAgICAgICAgICAgICAoZC4oaSkuKGogLSAxKSArIDEpICgqIGFuIGluc2VydGlvbiAqKVxuICAgICAgICAgICAgICAgICAgICAgKGQuKGkgLSAxKS4oaiAtIDEpICsgMSkgKCogYSBzdWJzdGl0dXRpb24gKikpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZC4oaSkuKGopIDwtIHZhbHVlO1xuICAgICAgICAgICAgbGluZV9taW4gOj0gbWluICFsaW5lX21pbiB2YWx1ZVxuICAgICAgICAgIGRvbmVcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaWYgZC4obSkuKG4pIDwgY3V0b2ZmIHRoZW4gU29tZSBkLihtKS4obikgZWxzZSBOb25lXG4gICAgICB3aXRoIEN1dG9mZl9tZXQgLT4gTm9uZVxuICAgIGluXG4gICAgZGlzdGFuY2VcblxubGV0IHNwZWxsY2hlY2sgbmFtZXMgbmFtZSA9XG4gIGxldCBjdXRvZmYgPVxuICAgIG1hdGNoIFN0cmluZy5sZW5ndGggbmFtZSB3aXRoXG4gICAgfCAxIHwgMiAtPiAwXG4gICAgfCAzIHwgNCAtPiAxXG4gICAgfCA1IHwgNiAtPiAyXG4gICAgfCBfIC0+IDNcbiAgaW5cbiAgbGV0IF8sIHN1Z2dlc3Rpb25zID1cbiAgICBMaXN0LmZvbGRfbGVmdCBuYW1lcyB+aW5pdDooSW50Lm1heF9pbnQsIFtdKVxuICAgICAgfmY6KGZ1blxuICAgICAgICAgICgoYmVzdF9kaXN0YW5jZSwgbmFtZXNfYXRfYmVzdF9kaXN0YW5jZSkgYXMgYWNjKSByZWdpc3RlcmVkX25hbWUgLT5cbiAgICAgICAgbWF0Y2ggbGV2ZW5zaHRlaW5fZGlzdGFuY2UgbmFtZSByZWdpc3RlcmVkX25hbWUgY3V0b2ZmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgZGlzdCAtPlxuICAgICAgICAgICAgaWYgZGlzdCA8IGJlc3RfZGlzdGFuY2UgdGhlbiAoZGlzdCwgWyByZWdpc3RlcmVkX25hbWUgXSlcbiAgICAgICAgICAgIGVsc2UgaWYgZGlzdCA+IGJlc3RfZGlzdGFuY2UgdGhlbiBhY2NcbiAgICAgICAgICAgIGVsc2UgKGRpc3QsIHJlZ2lzdGVyZWRfbmFtZSA6OiBuYW1lc19hdF9iZXN0X2Rpc3RhbmNlKSlcbiAgaW5cbiAgbWF0Y2ggTGlzdC5yZXYgc3VnZ2VzdGlvbnMgfD4gTGlzdC5maWx0ZXIgfmY6KFN0cmluZy4oIDw+ICkgbmFtZSkgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBsYXN0IDo6IHJldl9yZXN0IC0+XG4gICAgICBTb21lXG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcIkhpbnQ6IERpZCB5b3UgbWVhbiAlcyVzJXM/XCJcbiAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKExpc3QucmV2IHJldl9yZXN0KSlcbiAgICAgICAgICAgKGlmIExpc3QuaXNfZW1wdHkgcmV2X3Jlc3QgdGhlbiBcIlwiIGVsc2UgXCIgb3IgXCIpXG4gICAgICAgICAgIGxhc3QpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5cbmxldCBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFjYyB+ZiA9XG4gIGxldCByZWMgY29sbGFwc2VfYWZ0ZXJfYXQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IHBhcnQgOjogcGFydHMgLT5cbiAgICAgICAgaWYgKG5vdCAoU3RyaW5nLmlzX2VtcHR5IHBhcnQpKSAmJiBDaGFyLmVxdWFsIHBhcnQuWzBdICdAJyB0aGVuXG4gICAgICAgICAgWyBTdHJpbmcuY29uY2F0IChTdHJpbmcuZHJvcF9wcmVmaXggcGFydCAxIDo6IHBhcnRzKSB+c2VwOlwiLlwiIF1cbiAgICAgICAgZWxzZSBwYXJ0IDo6IGNvbGxhcHNlX2FmdGVyX2F0IHBhcnRzXG4gIGluXG4gIGxldCByZWMgbG9vcCBhY2MgcGFydHMgPVxuICAgIG1hdGNoIHBhcnRzIHdpdGhcbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgcGFydCA6OiBwYXJ0cyAtPlxuICAgICAgICBsb29wIChmIChTdHJpbmcuY29uY2F0IChwYXJ0IDo6IHBhcnRzKSB+c2VwOlwiLlwiKSBhY2MpIHBhcnRzXG4gIGluXG4gIFN0cmluZy5zcGxpdF9vbl9jaGFyIG5hbWUgfnNlcDonLicgfD4gY29sbGFwc2VfYWZ0ZXJfYXQgfD4gbG9vcCBhY2NcblxubGV0IGRvdF9zdWZmaXhlcyBuYW1lID1cbiAgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDpbXSB+ZjooZnVuIHggYWNjIC0+IHggOjogYWNjKVxuXG5sZXQgc3BsaXRfcGF0aCA9XG4gIGxldCByZWMgbG9vcCBzIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlbiAocywgTm9uZSlcbiAgICBlbHNlIG1hdGNoIHMuW2ldIHdpdGggJy4nIC0+IGFmdGVyX2RvdCBzIChpICsgMSkgfCBfIC0+IGxvb3AgcyAoaSArIDEpXG4gIGFuZCBhZnRlcl9kb3QgcyBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gKHMsIE5vbmUpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnQScgLi4gJ1onIC0+IChTdHJpbmcucHJlZml4IHMgKGkgLSAxKSwgU29tZSAoU3RyaW5nLmRyb3BfcHJlZml4IHMgaSkpXG4gICAgICB8ICcuJyAtPiBhZnRlcl9kb3QgcyAoaSArIDEpXG4gICAgICB8IF8gLT4gbG9vcCBzIChpICsgMSlcbiAgaW5cbiAgZnVuIHMgLT4gbG9vcCBzIDBcblxubW9kdWxlIFBhdHRlcm4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBuYW1lIDogc3RyaW5nOyBkb3Rfc3VmZml4ZXMgOiBTdHJpbmcuU2V0LnQgfVxuXG4gIGxldCBtYWtlIG5hbWUgPVxuICAgIHsgbmFtZTsgZG90X3N1ZmZpeGVzID0gU3RyaW5nLlNldC5vZl9saXN0IChkb3Rfc3VmZml4ZXMgbmFtZSkgfVxuXG4gIGxldCBuYW1lIHQgPSB0Lm5hbWVcbiAgbGV0IG1hdGNoZXMgdCBtYXRjaGVkID0gU3RyaW5nLlNldC5tZW0gbWF0Y2hlZCB0LmRvdF9zdWZmaXhlc1xuZW5kXG5cbigqIE9uIHRoZSBuYW1lc3BhY2UgXCJhLk5BTUVTUEFDRVwiLCByZXR1cm4gdGhlIHBhaXIgKFwiYVwiLCBOQU1FU1BBQ0UpICopXG5sZXQgc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5hbWUgPVxuICBtYXRjaCBTdHJpbmcuaW5kZXhfb3B0IG5hbWUgJy4nIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGkgLT5cbiAgICAgIGxldCBuID0gU3RyaW5nLmxlbmd0aCBuYW1lIGluXG4gICAgICBsZXQgYmVmb3JlX2RvdCA9IFN0cmluZy5zdWIgbmFtZSB+cG9zOjAgfmxlbjppIGluXG4gICAgICBsZXQgYWZ0ZXJfZG90ID0gU3RyaW5nLnN1YiBuYW1lIH5wb3M6KGkgKyAxKSB+bGVuOihuIC0gaSAtIDEpIGluXG4gICAgICBTb21lIChiZWZvcmVfZG90LCBhZnRlcl9kb3QpXG5cbm1vZHVsZSBBbGxvd2xpc3RlZCA9IHN0cnVjdFxuICAoKiBBbGxvdyBsaXN0IHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcywgYXMgd2VsbCBhcyBhbGwgdGhlaXIgZG90IHN1ZmZpeGVzLlxuXG4gICAgIFNpbmNlIHRoZXNlIGF0dHJpYnV0ZXMgYXJlIGludGVycHJldGVkIGJ5IHRoZSBjb21waWxlciBpdHNlbGYsIHdlIGNhbm5vdCBjaGVja1xuICAgICBhdCB0aGUgbGV2ZWwgb2YgYSBwcHggcmV3cml0ZXIgdGhhdCB0aGV5IGhhdmUgYmVlbiBwcm9wZXJseSBpbnRlcnByZXRlZCwgc29cbiAgICAgd2UganVzdCBhY2NlcHQgdGhlbSBhbnl3aGVyZS5cblxuICAgICBTYWRseSwgdGhlIGNvbXBpbGVyIHNpbGVudGx5IGlnbm9yZXMgdGhlbSBpZiB0aGV5IGFyZSBtaXNwbGFjZWQuLi5cbiAgKilcbiAgbGV0IGNyZWF0ZV9zZXQgZnVsbHlfcXVhbGlmaWVkX25hbWVzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgfmY6KGZ1biBhY2MgbmFtZSAtPlxuICAgICAgICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFjYyB+ZjooZnVuIHggYWNjIC0+IFN0cmluZy5TZXQuYWRkIHggYWNjKSlcbiAgICAgIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgZnVsbHlfcXVhbGlmaWVkX25hbWVzXG5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIGNyZWF0ZV9zZXRcbiAgICAgIFtcbiAgICAgICAgXCJvY2FtbC5hbGVydFwiO1xuICAgICAgICBcIm9jYW1sLmJveGVkXCI7XG4gICAgICAgIFwib2NhbWwuZGVwcmVjYXRlZFwiO1xuICAgICAgICBcIm9jYW1sLmRlcHJlY2F0ZWRfbXV0YWJsZVwiO1xuICAgICAgICBcIm9jYW1sLmRvY1wiO1xuICAgICAgICBcIm9jYW1sLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiO1xuICAgICAgICBcIm9jYW1sLmltbWVkaWF0ZVwiO1xuICAgICAgICBcIm9jYW1sLmltbWVkaWF0ZTY0XCI7XG4gICAgICAgIFwib2NhbWwuaW5saW5lXCI7XG4gICAgICAgIFwib2NhbWwuaW5saW5lZFwiO1xuICAgICAgICBcIm9jYW1sLmxvY2FsXCI7XG4gICAgICAgIFwib2NhbWwubm9hbGxvY1wiO1xuICAgICAgICBcIm9jYW1sLnBwd2FybmluZ1wiO1xuICAgICAgICBcIm9jYW1sLnJlbW92ZV9hbGlhc2VzXCI7XG4gICAgICAgIFwib2NhbWwuc3BlY2lhbGlzZVwiO1xuICAgICAgICBcIm9jYW1sLnNwZWNpYWxpc2VkXCI7XG4gICAgICAgIFwib2NhbWwudGFpbGNhbGxcIjtcbiAgICAgICAgXCJvY2FtbC50ZXh0XCI7XG4gICAgICAgIFwib2NhbWwudW5ib3hlZFwiO1xuICAgICAgICBcIm9jYW1sLnVucm9sbFwiO1xuICAgICAgICBcIm9jYW1sLnVucm9sbGVkXCI7XG4gICAgICAgIFwib2NhbWwudW50YWdnZWRcIjtcbiAgICAgICAgXCJvY2FtbC53YXJuX29uX2xpdGVyYWxfcGF0dGVyblwiO1xuICAgICAgICBcIm9jYW1sLndhcm5lcnJvclwiO1xuICAgICAgICBcIm9jYW1sLndhcm5pbmdcIjtcbiAgICAgICAgXCJvY2FtbC50b3BsZXZlbF9wcmludGVyXCIgKCpJbnRlcnByZXRlZCBieSB0aGUgdG9wbGV2ZWwvdXRvcCopO1xuICAgICAgICBcInRvcGxldmVsX3ByaW50ZXJcIiAoKkludGVycHJldGVkIGJ5IHRoZSB0b3BsZXZlbC91dG9wKik7XG4gICAgICBdXG5cbiAgKCogQWxsb3cgbGlzdCB0aGUgZm9sbG93aW5nIGV4dGVuc2lvbnMuXG5cbiAgICAgU2luY2UgdGhlc2UgZXh0ZW5zaW9ucyBhcmUgaW50ZXJwcmV0ZWQgYnkgdGhlIGNvbXBpbGVyIGl0c2VsZiwgd2UgY2Fubm90IGNoZWNrXG4gICAgIGF0IHRoZSBsZXZlbCBvZiBhIHBweCByZXdyaXRlciB0aGF0IHRoZXkgaGF2ZSBiZWVuIHByb3Blcmx5IGludGVycHJldGVkLCBzb1xuICAgICB3ZSBqdXN0IGFjY2VwdCB0aGVtIGFueXdoZXJlLlxuICAqKVxuICBsZXQgZXh0ZW5zaW9ucyA9IGNyZWF0ZV9zZXQgWyBcIm9jYW1sLmVycm9yXCI7IFwib2NhbWwuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCIgXVxuXG4gIGxldCBpc19hbGxvd2xpc3RlZCB+a2luZCBuYW1lID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IGBBdHRyaWJ1dGUgLT4gU3RyaW5nLlNldC5tZW0gbmFtZSBhdHRyaWJ1dGVzXG4gICAgfCBgRXh0ZW5zaW9uIC0+IFN0cmluZy5TZXQubWVtIG5hbWUgZXh0ZW5zaW9uc1xuXG4gIGxldCBnZXRfYXR0cmlidXRlX2xpc3QgKCkgPSBTdHJpbmcuU2V0LmVsZW1lbnRzIGF0dHJpYnV0ZXNcbiAgbGV0IGdldF9leHRlbnNpb25fbGlzdCAoKSA9IFN0cmluZy5TZXQuZWxlbWVudHMgZXh0ZW5zaW9uc1xuZW5kXG5cbm1vZHVsZSBSZXNlcnZlZF9uYW1lc3BhY2VzID0gc3RydWN0XG4gIHR5cGUgcmVzZXJ2ZWQgPSAoc3RyaW5nLCBzdWJfbmFtZXNwYWNlcykgSGFzaHRibC50XG4gIGFuZCBzdWJfbmFtZXNwYWNlcyA9IEFsbCB8IFN1Yl9uYW1lc3BhY2VzIG9mIHJlc2VydmVkXG5cbiAgKCogSWYgW3RibF0gY29udGFpbnMgYSBtYXBwaW5nIGZyb20gXCJ4XCIgdG8gW0FsbF0sIHRoZW4gXCJ4XCIgYW5kIGFsbCBwYXRocyB0aGF0XG4gICAqIHN0YXJ0IHdpdGggXCJ4LlwiIGFyZSByZXNlcnZlZCB3aXRoIHJlc3BlY3QgdG8gW3RibF1cbiAgICpcbiAgICogSWYgW3RibF0gY29udGFpbnMgYSBtYXBwaW5nIGZyb20gXCJ4XCIgdG8gW1N1Yl9uYW1lc3BhY2VzIHRibCddLCBhbmQgUCBpc1xuICAgKiByZXNlcnZlZCB3aXRoIHJlc3BlY3QgdG8gW3RibCddLCB0aGVuIGFsbCBwYXRocyBcInguUFwiIGFyZSByZXNlcnZlZCB3aXRoXG4gICAqIHJlc3BlY3QgdG8gW3RibF0uXG4gICAqKVxuICBsZXQgY3JlYXRlX3Jlc2VydmVkICgpIDogcmVzZXJ2ZWQgPSBIYXNodGJsLmNyZWF0ZSAxNlxuXG4gIGxldCByZWMgcmVzZXJ2ZSBucyB0YmwgPVxuICAgIG1hdGNoIHNwbGl0X291dGVyX25hbWVzcGFjZSBucyB3aXRoXG4gICAgfCBOb25lIC0+IEhhc2h0YmwuYWRkX2V4biB0YmwgfmtleTpucyB+ZGF0YTpBbGxcbiAgICB8IFNvbWUgKG91dGVyX25zLCByZXN0X25zKSAtPiAoXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgSGFzaHRibC5maW5kX29yX2FkZCB0Ymwgb3V0ZXJfbnMgfmRlZmF1bHQ6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICBTdWJfbmFtZXNwYWNlcyAoY3JlYXRlX3Jlc2VydmVkICgpKSlcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFN1Yl9uYW1lc3BhY2VzIHJlc3RfdGJsIC0+IHJlc2VydmUgcmVzdF9ucyByZXN0X3RibFxuICAgICAgICB8IEFsbCAtPiAoKSlcblxuICBsZXQgcmVjIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0YmwgPVxuICAgIG1hdGNoIHNwbGl0X291dGVyX25hbWVzcGFjZSBuYW1lIHdpdGhcbiAgICB8IFNvbWUgKG5zLCByZXN0KSAtPiAoXG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgdGJsIG5zIHdpdGhcbiAgICAgICAgfCBTb21lIChTdWJfbmFtZXNwYWNlcyByZXN0X3RibCkgLT5cbiAgICAgICAgICAgIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgcmVzdCByZXN0X3RibFxuICAgICAgICB8IFNvbWUgQWxsIC0+IHRydWVcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlKVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgdGJsIG5hbWUgd2l0aFxuICAgICAgICB8IFNvbWUgQWxsIC0+IHRydWVcbiAgICAgICAgfCBTb21lIChTdWJfbmFtZXNwYWNlcyBfKSB8IE5vbmUgLT4gZmFsc2UpXG5cbiAgbGV0IHRibCA9IGNyZWF0ZV9yZXNlcnZlZCAoKVxuICBsZXQgcmVzZXJ2ZSBucyA9IHJlc2VydmUgbnMgdGJsXG4gIGxldCBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgPSBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgdGJsXG4gIGxldCAoKSA9IHJlc2VydmUgXCJtZXJsaW5cIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicmVhc29uXCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInJlZm10XCIgKCogcmVhc29uICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJuc1wiICgqIHJlc2NyaXB0ICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJyZXNcIiAoKiByZXNjcmlwdCAqKVxuICBsZXQgKCkgPSByZXNlcnZlIFwibWV0YW9jYW1sXCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm9jYW1sZm9ybWF0XCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInBweGxpYi5taWdyYXRpb25cIlxuXG4gIGxldCBjaGVja19ub3RfcmVzZXJ2ZWQgfmtpbmQgbmFtZSA9XG4gICAgbGV0IGtpbmQsIGxpc3QgPVxuICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICB8IGBBdHRyaWJ1dGUgLT4gKFwiYXR0cmlidXRlXCIsIEFsbG93bGlzdGVkLmF0dHJpYnV0ZXMpXG4gICAgICB8IGBFeHRlbnNpb24gLT4gKFwiZXh0ZW5zaW9uXCIsIEFsbG93bGlzdGVkLmV4dGVuc2lvbnMpXG4gICAgaW5cbiAgICBpZiBTdHJpbmcuU2V0Lm1lbSBuYW1lIGxpc3QgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICAgIFwiQ2Fubm90IHJlZ2lzdGVyICVzIHdpdGggbmFtZSAnJXMnIGFzIGl0IG1hdGNoZXMgYW4gJXMgcmVzZXJ2ZWQgYnkgdGhlIFxcXG4gICAgICAgICBjb21waWxlclwiXG4gICAgICAgIGtpbmQgbmFtZSBraW5kXG4gICAgZWxzZSBpZiBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICAgIFwiQ2Fubm90IHJlZ2lzdGVyICVzIHdpdGggbmFtZSAnJXMnIGFzIGl0cyBuYW1lc3BhY2UgaXMgbWFya2VkIGFzIFxcXG4gICAgICAgICByZXNlcnZlZFwiXG4gICAgICAgIGtpbmQgbmFtZVxuZW5kXG5cbmxldCBpZ25vcmVfY2hlY2tzIG5hbWUgPVxuICBSZXNlcnZlZF9uYW1lc3BhY2VzLmlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZVxuICB8fCBTdHJpbmcuaXNfcHJlZml4IG5hbWUgfnByZWZpeDpcIl9cIlxuXG5tb2R1bGUgUmVnaXN0cmFyID0gc3RydWN0XG4gIHR5cGUgZWxlbWVudCA9IHsgZnVsbHlfcXVhbGlmaWVkX25hbWUgOiBzdHJpbmc7IGRlY2xhcmVkX2F0IDogQ2FsbGVyX2lkLnQgfVxuICB0eXBlIGFsbF9mb3JfY29udGV4dCA9IHsgbXV0YWJsZSBhbGwgOiBlbGVtZW50IFN0cmluZy5NYXAudCB9XG5cbiAgdHlwZSAnYSB0ID0ge1xuICAgIGFsbF9ieV9jb250ZXh0IDogKCdhLCBhbGxfZm9yX2NvbnRleHQpIEhhc2h0YmwudDtcbiAgICBza2lwIDogc3RyaW5nIGxpc3Q7XG4gICAga2luZCA6IHN0cmluZztcbiAgICBzdHJpbmdfb2ZfY29udGV4dCA6ICdhIC0+IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgY3JlYXRlIH5raW5kIH5jdXJyZW50X2ZpbGUgfnN0cmluZ19vZl9jb250ZXh0ID1cbiAgICB7XG4gICAgICBhbGxfYnlfY29udGV4dCA9IEhhc2h0YmwuY3JlYXRlIDE2O1xuICAgICAgc2tpcCA9IFsgY3VycmVudF9maWxlOyBfX0ZJTEVfXyBdO1xuICAgICAga2luZDtcbiAgICAgIHN0cmluZ19vZl9jb250ZXh0O1xuICAgIH1cblxuICBsZXQgZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgPVxuICAgIEhhc2h0YmwuZmluZF9vcl9hZGQgdC5hbGxfYnlfY29udGV4dCBjb250ZXh0IH5kZWZhdWx0OihmdW4gKCkgLT5cbiAgICAgICAgeyBhbGwgPSBTdHJpbmcuTWFwLmVtcHR5IH0pXG5cbiAgbGV0IGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBuYW1lID1cbiAgICBtYXRjaCBTdHJpbmcuTWFwLmZpbmRfb3B0IG5hbWUgYWxsX2Zvcl9jb250ZXh0LmFsbCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGUgLT5cbiAgICAgICAgbGV0IGRlY2xhcmVkX2F0ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSAobG9jIDogU3RkbGliLlByaW50ZXhjLmxvY2F0aW9uKSAtPlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIiBkZWNsYXJlZCBhdCAlczolZFwiIGxvYy5maWxlbmFtZSBsb2MubGluZV9udW1iZXJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvbnRleHQgPVxuICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY29udGV4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICB8IFNvbWUgcyAtPiBcIiBvbiBcIiBeIHMgXiBcInNcIlxuICAgICAgICBpblxuICAgICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgICBcIlNvbWUgcHB4LWVzIHRyaWVkIHRvIHJlZ2lzdGVyIGNvbmZsaWN0aW5nIHRyYW5zZm9ybWF0aW9uczogJXMgXFxcbiAgICAgICAgICAgJyVzJyVzJXMgbWF0Y2hlcyAlcyAnJXMnJXNcIlxuICAgICAgICAgIChTdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaSB0LmtpbmQpXG4gICAgICAgICAgbmFtZSBjb250ZXh0IChkZWNsYXJlZF9hdCBjYWxsZXIpIHQua2luZCBlLmZ1bGx5X3F1YWxpZmllZF9uYW1lXG4gICAgICAgICAgKGRlY2xhcmVkX2F0IGUuZGVjbGFyZWRfYXQpXG5cbiAgbGV0IGNoZWNrX2NvbGxpc2lvbnMgdCBjb250ZXh0IG5hbWUgPVxuICAgIGxldCBjYWxsZXIgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOnQuc2tpcCBpblxuICAgIGxldCBhbGxfZm9yX2NvbnRleHQgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBuYW1lXG5cbiAgbGV0IHJlZ2lzdGVyIH5raW5kIHQgY29udGV4dCBuYW1lID1cbiAgICBSZXNlcnZlZF9uYW1lc3BhY2VzLmNoZWNrX25vdF9yZXNlcnZlZCB+a2luZCBuYW1lO1xuICAgIGxldCBjYWxsZXIgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOnQuc2tpcCBpblxuICAgIGxldCBhbGwgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0OmFsbCB0IGNvbnRleHQgbmFtZTtcbiAgICBsZXQgdCA9IHsgZnVsbHlfcXVhbGlmaWVkX25hbWUgPSBuYW1lOyBkZWNsYXJlZF9hdCA9IGNhbGxlciB9IGluXG4gICAgYWxsLmFsbCA8LVxuICAgICAgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDphbGwuYWxsIH5mOihmdW4gbmFtZSBhY2MgLT5cbiAgICAgICAgICBTdHJpbmcuTWFwLmFkZCBuYW1lIHQgYWNjKVxuXG4gIGxldCBzcGVsbGNoZWNrIHQgY29udGV4dCA/KGFsbG93bGlzdCA9IFtdKSBuYW1lID1cbiAgICBsZXQgYWxsX2Zvcl9jb250ZXh0ID0gZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgaW5cbiAgICBsZXQgYWxsID1cbiAgICAgIFN0cmluZy5NYXAuZm9sZCAoZnVuIGtleSBfIGFjYyAtPiBrZXkgOjogYWNjKSBhbGxfZm9yX2NvbnRleHQuYWxsIFtdXG4gICAgaW5cbiAgICBtYXRjaCBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKGFsbCBAIGFsbG93bGlzdCkgbmFtZSB3aXRoXG4gICAgfCBTb21lIF8gYXMgeCAtPiB4XG4gICAgfCBOb25lIHdoZW4gU3RyaW5nLk1hcC5tZW0gbmFtZSBhbGxfZm9yX2NvbnRleHQuYWxsIC0+IE5vbmVcbiAgICB8IE5vbmUgLT4gKFxuICAgICAgICBsZXQgb3RoZXJfY29udGV4dHMgPVxuICAgICAgICAgIEhhc2h0YmwuZm9sZFxuICAgICAgICAgICAgKGZ1biBjdHggYWxsX2Zyb21fY29udGV4dCBhY2MgLT5cbiAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICBQb2x5LiggPD4gKSBjb250ZXh0IGN0eFxuICAgICAgICAgICAgICAgICYmIFN0cmluZy5NYXAubWVtIG5hbWUgYWxsX2Zyb21fY29udGV4dC5hbGxcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY3R4IHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBTb21lIHMgLT4gKHMgXiBcInNcIikgOjogYWNjXG4gICAgICAgICAgICAgIGVsc2UgYWNjKVxuICAgICAgICAgICAgdC5hbGxfYnlfY29udGV4dCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHBfdGV4dCA9IEZvcm1hdC5wcF9wcmludF90ZXh0IGluXG4gICAgICAgIGxldCBjdXJyZW50X2NvbnRleHQgcHBmID1cbiAgICAgICAgICBtYXRjaCB0LnN0cmluZ19vZl9jb250ZXh0IGNvbnRleHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSB8IFNvbWUgXCJcIiAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgIGxldCBhX29yX2FuID1cbiAgICAgICAgICAgICAgICBtYXRjaCBzLlswXSB3aXRoXG4gICAgICAgICAgICAgICAgfCAnYScgfCAnZScgfCAnaScgfCAnbycgfCAndScgfCAneScgLT4gXCJhblwiXG4gICAgICAgICAgICAgICAgfCBfIC0+IFwiYVwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZlxuICAgICAgICAgICAgICAgIFwiQCBidXRAIGlzQCB1c2VkQCBoZXJlQCBpbkAgdGhlQCBjb250ZXh0QCBvZkAgJXNAICVhXCIgYV9vcl9hblxuICAgICAgICAgICAgICAgIHBwX3RleHQgc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIExpc3Quc29ydCB+Y21wOihmdW4geCB5IC0+IC1TdHJpbmcuY29tcGFyZSB4IHkpIG90aGVyX2NvbnRleHRzXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgIHwgWyBjIF0gLT5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkBbSGludDpAIGAlcydAIGlzQCBhdmFpbGFibGVAIGZvckAgJWEldC5AXUBcXG5cXFxuICAgICAgICAgICAgICAgICAgRGlkIHlvdSBwdXQgaXQgYXQgdGhlIHdyb25nIGxldmVsP1wiIG5hbWUgcHBfdGV4dCBjXG4gICAgICAgICAgICAgICAgIGN1cnJlbnRfY29udGV4dClcbiAgICAgICAgfCBsYXN0IDo6IHJldl9vdGhlcnMgLT5cbiAgICAgICAgICAgIGxldCBvdGhlcnMgPSBMaXN0LnJldiByZXZfb3RoZXJzIGluXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJAW0hpbnQ6QCBgJXMnQCBpc0AgYXZhaWxhYmxlQCBmb3JAICVhQCBhbmRAICVhJXQuQF1AXFxuXFxcbiAgICAgICAgICAgICAgICAgIERpZCB5b3UgcHV0IGl0IGF0IHRoZSB3cm9uZyBsZXZlbD9cIiBuYW1lXG4gICAgICAgICAgICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdCBwcF90ZXh0IH5wcF9zZXA6KGZ1biBwcGYgKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIsQCBcIikpXG4gICAgICAgICAgICAgICAgIG90aGVycyBwcF90ZXh0IGxhc3QgY3VycmVudF9jb250ZXh0KSlcblxuICBtb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgICAoKiBUT0RPOiBoaW50IHNwZWxsaW5nIGVycm9ycyByZWdhcmRpbmcgcmVzZXJ2ZWQgbmFtZXNwYWNlcyBuYW1lcyBhbmQgYWxsb3dsaXN0ZWRcbiAgICAgICBuYW1lcyBpbnN0ZWFkIG9mIHRha2luZyBhbiBvcHRpb25hbCBbYWxsb3dsaXN0XSBwYXJhbWV0ZXIuICopXG4gICAgbGV0IGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IChuYW1lIDogc3RyaW5nIExvYy50KSA9XG4gICAgICBQcmludGYua3NwcmludGZcbiAgICAgICAgKGZ1biBtc2cgLT5cbiAgICAgICAgICBtYXRjaCBzcGVsbGNoZWNrIHQgY29udGV4dCBuYW1lLnR4dCA/YWxsb3dsaXN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jIFwiJXNcIiBtc2dcbiAgICAgICAgICB8IFNvbWUgcyAtPiBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCIlcy5cXG4lc1wiIG1zZyBzKVxuICAgICAgICBmbXQgbmFtZS50eHRcblxuICAgIGxldCByYWlzZV9lcnJvcmYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IChuYW1lIDogc3RyaW5nIExvYy50KSA9XG4gICAgICBMb2NhdGlvbi5FcnJvci5yYWlzZSBAQCBjcmVhdGVmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCBuYW1lXG5cbiAgICBsZXQgZXJyb3JfZXh0ZW5zaW9uZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBAQCBjcmVhdGVmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCBuYW1lXG4gIGVuZFxuXG4gIGxldCByYWlzZV9lcnJvcmYgPSBFcnJvci5yYWlzZV9lcnJvcmZcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcbm1vZHVsZSBCdWZmZXIgPSBTdGRsaWIuQnVmZmVyXG5tb2R1bGUgRm9ybWF0ID0gU3RkbGliLkZvcm1hdFxuXG5sZXQgbGlkZW50IHggPSBMb25naWRlbnQuTGlkZW50IHhcblxubGV0IGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkID1cbiAgbGV0IGxvYyA9IHRkLnB0eXBlX25hbWUubG9jIGluXG4gIHB0eXBfY29uc3RyIH5sb2NcbiAgICAoTG9jYXRlZC5tYXAgbGlkZW50IHRkLnB0eXBlX25hbWUpXG4gICAgKExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+Zjpmc3QpXG5cbmxldCBzdHJpcF9nZW5fc3ltYm9sX3N1ZmZpeCA9XG4gIGxldCBjaG9wIG4gfm9yX21vcmUgc3RyaW5nIHBvcyBmID1cbiAgICBsZXQgdGFyZ2V0ID0gIXBvcyAtIG4gaW5cbiAgICB3aGlsZSAhcG9zID4gMCAmJiAob3JfbW9yZSB8fCAhcG9zID4gdGFyZ2V0KSAmJiBmIHN0cmluZy5bIXBvcyAtIDFdIGRvXG4gICAgICBwb3MgOj0gIXBvcyAtIDFcbiAgICBkb25lO1xuICAgICFwb3MgPD0gdGFyZ2V0XG4gIGluXG4gIGZ1biBzdHJpbmcgLT5cbiAgICBsZXQgcG9zID0gcmVmIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBpZlxuICAgICAgY2hvcCAxIH5vcl9tb3JlOmZhbHNlIHN0cmluZyBwb3MgKENoYXIuZXF1YWwgJ18nKVxuICAgICAgJiYgY2hvcCAzIH5vcl9tb3JlOnRydWUgc3RyaW5nIHBvcyAoZnVuY3Rpb25cbiAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgJiYgY2hvcCAyIH5vcl9tb3JlOmZhbHNlIHN0cmluZyBwb3MgKENoYXIuZXF1YWwgJ18nKVxuICAgIHRoZW4gU3RyaW5nLnByZWZpeCBzdHJpbmcgIXBvc1xuICAgIGVsc2Ugc3RyaW5nXG5cbmxldCBnZW5fc3ltYm9sID1cbiAgbGV0IGNudCA9IHJlZiAwIGluXG4gIGZ1biA/KHByZWZpeCA9IFwiX3hcIikgKCkgLT5cbiAgICBjbnQgOj0gIWNudCArIDE7XG4gICAgbGV0IHByZWZpeCA9IHN0cmlwX2dlbl9zeW1ib2xfc3VmZml4IHByZWZpeCBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXNfXyUwM2lfXCIgcHJlZml4ICFjbnRcblxubGV0IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGRfcmVzICh0ZCA6IHR5cGVfZGVjbGFyYXRpb24pIDpcbiAgICAodHlwZV9kZWNsYXJhdGlvbiwgXykgcmVzdWx0ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBwcmVmaXhfc3RyaW5nIGkgPVxuICAgICgqIGEsIGIsIC4uLiwgeSwgeiwgYWEsIGJiLCAuLi4gKilcbiAgICBTdHJpbmcubWFrZSAoKGkgLyAyNikgKyAxKSAoQ2hhci5jaHIgKENoYXIuY29kZSAnYScgKyAoaSBtb2QgMjYpKSlcbiAgaW5cbiAgbGV0IG5hbWVfcGFyYW0gaSAodHAsIHZhcmlhbmNlKSA9XG4gICAgKG1hdGNoIHRwLnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2FueSAtPiBPayAoUHR5cF92YXIgKGdlbl9zeW1ib2wgfnByZWZpeDoocHJlZml4X3N0cmluZyBpKSAoKSkpXG4gICAgfCBQdHlwX3ZhciBfIGFzIHYgLT4gT2sgdlxuICAgIHwgXyAtPlxuICAgICAgICBFcnJvciAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOnRwLnB0eXBfbG9jIFwibm90IGEgdHlwZSBwYXJhbWV0ZXJcIikpXG4gICAgPj58IGZ1biBwdHlwX2Rlc2MgLT4gKHsgdHAgd2l0aCBwdHlwX2Rlc2MgfSwgdmFyaWFuY2UpXG4gIGluXG4gIGxldCBwdHlwZV9wYXJhbXMsIGVycm9ycyA9XG4gICAgdGQucHR5cGVfcGFyYW1zIHw+IExpc3QubWFwaSB+ZjpuYW1lX3BhcmFtXG4gICAgfD4gTGlzdC5wYXJ0aXRpb25fbWFwIChmdW5jdGlvblxuICAgICAgICAgfCBPayBvIC0+IEVpdGhlci5MZWZ0IG9cbiAgICAgICAgIHwgRXJyb3IgZSAtPiBFaXRoZXIuUmlnaHQgZSlcbiAgaW5cbiAgbWF0Y2ggZXJyb3JzIHdpdGggW10gLT4gT2sgeyB0ZCB3aXRoIHB0eXBlX3BhcmFtcyB9IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKVxuXG5sZXQgbmFtZV90eXBlX3BhcmFtc19pbl90ZCAodGQgOiB0eXBlX2RlY2xhcmF0aW9uKSA6IHR5cGVfZGVjbGFyYXRpb24gPVxuICBtYXRjaCBuYW1lX3R5cGVfcGFyYW1zX2luX3RkX3JlcyB0ZCB3aXRoXG4gIHwgT2sgcmVzIC0+IHJlc1xuICB8IEVycm9yIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmYgPVxuICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gIGxldCByZXN1bHRfdHlwZSA9XG4gICAgZiB+bG9jOnRkLnB0eXBlX25hbWUubG9jIChjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZClcbiAgaW5cbiAgTGlzdC5mb2xkX3JpZ2h0IHRkLnB0eXBlX3BhcmFtcyB+aW5pdDpyZXN1bHRfdHlwZVxuICAgIH5mOihmdW4gKHRwLCBfdmFyaWFuY2UpIGFjYyAtPlxuICAgICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgICBwdHlwX2Fycm93IH5sb2MgTm9sYWJlbCAoZiB+bG9jIHRwKSBhY2MpXG5cbmxldCBzdHJpbmdfb2ZfY29yZV90eXBlIGN0ID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gIGxldCBwcGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgUHByaW50YXN0LmNvcmVfdHlwZSBwcGYgY3Q7XG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IGdldF90eXBlX3BhcmFtX25hbWVfcmVzICh0eSwgXykgPVxuICBsZXQgbG9jID0gdHkucHR5cF9sb2MgaW5cbiAgbWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgfCBQdHlwX3ZhciBuYW1lIC0+IE9rIChMb2NhdGVkLm1rIH5sb2MgbmFtZSlcbiAgfCBfIC0+IEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJub3QgYSB0eXBlIHBhcmFtZXRlclwiLCBbXSlcblxubGV0IGdldF90eXBlX3BhcmFtX25hbWUgdCA9XG4gIG1hdGNoIGdldF90eXBlX3BhcmFtX25hbWVfcmVzIHQgd2l0aFxuICB8IE9rIGUgLT4gZVxuICB8IEVycm9yIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5leGNlcHRpb24gVHlwZV9pc19yZWN1cnNpdmVcblxuY2xhc3MgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG4gICAgdmFsIHR5cGVfbmFtZXMgOiBzdHJpbmcgbGlzdCA9IExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+IHRkLnB0eXBlX25hbWUudHh0KVxuICAgIG1ldGhvZCByZXR1cm5fdHJ1ZSAoKSA9IHJhaXNlX25vdHJhY2UgVHlwZV9pc19yZWN1cnNpdmVcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGN0eXBlID1cbiAgICAgIG1hdGNoIGN0eXBlLnB0eXBfZGVzYyB3aXRoXG4gICAgICB8IFB0eXBfYXJyb3cgXyAtPiAoKVxuICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IGlkOyBfIH0sIF8pXG4gICAgICAgIHdoZW4gTGlzdC5tZW0gfnNldDp0eXBlX25hbWVzIGlkIC0+XG4gICAgICAgICAgc2VsZiNyZXR1cm5fdHJ1ZSAoKVxuICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSBjdHlwZVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjZCA9XG4gICAgICAoKiBEb24ndCByZWN1cnNlIHRocm91Z2ggY2QucGNkX3JlcyAqKVxuICAgICAgbWF0Y2ggY2QucGNkX2FyZ3Mgd2l0aFxuICAgICAgfCBQY3N0cl90dXBsZSBhcmdzIC0+IExpc3QuaXRlciBhcmdzIH5mOnNlbGYjY29yZV90eXBlXG4gICAgICB8IFBjc3RyX3JlY29yZCBmaWVsZHMgLT4gTGlzdC5pdGVyIGZpZWxkcyB+ZjpzZWxmI2xhYmVsX2RlY2xhcmF0aW9uXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZXMgXyA9ICgqIERvbid0IHJlY3Vyc2UgdGhyb3VnaCBhdHRyaWJ1dGVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKVxuXG4gICAgbWV0aG9kIGdvICgpID1cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IE5vbnJlY3Vyc2l2ZVxuICAgICAgfCBSZWN1cnNpdmUgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuaXRlciB0ZHMgfmY6c2VsZiN0eXBlX2RlY2xhcmF0aW9uIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBUeXBlX2lzX3JlY3Vyc2l2ZSAtPiBSZWN1cnNpdmVcbiAgICAgICAgICB8ICgpIC0+IE5vbnJlY3Vyc2l2ZSlcbiAgZW5kXG5cbmxldCByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyA9IChuZXcgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzKSNnbyAoKVxubGV0IHJlYyBsYXN0IHggbCA9IG1hdGNoIGwgd2l0aCBbXSAtPiB4IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbmxldCBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBuYW1lIHBheWxvYWQgPVxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBQU3RyIFtdIC0+IG5hbWUubG9jXG4gIHwgUFN0ciAoeCA6OiBsKSAtPiB7IHgucHN0cl9sb2Mgd2l0aCBsb2NfZW5kID0gKGxhc3QgeCBsKS5wc3RyX2xvYy5sb2NfZW5kIH1cbiAgfCBQU2lnIFtdIC0+IG5hbWUubG9jXG4gIHwgUFNpZyAoeCA6OiBsKSAtPiB7IHgucHNpZ19sb2Mgd2l0aCBsb2NfZW5kID0gKGxhc3QgeCBsKS5wc2lnX2xvYy5sb2NfZW5kIH1cbiAgfCBQVHlwIHQgLT4gdC5wdHlwX2xvY1xuICB8IFBQYXQgKHgsIE5vbmUpIC0+IHgucHBhdF9sb2NcbiAgfCBQUGF0ICh4LCBTb21lIGUpIC0+IHsgeC5wcGF0X2xvYyB3aXRoIGxvY19lbmQgPSBlLnBleHBfbG9jLmxvY19lbmQgfVxuXG5sZXQgbG9jX29mX3BheWxvYWQgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgPSBfIH0gPVxuICBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkXG5cbmxldCBsb2Nfb2ZfYXR0cmlidXRlIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jID0gXyB9ID1cbiAgKCogVE9ETzogZml4IHRoaXMgaW4gdGhlIGNvbXBpbGVyLCBhbmQgbW92ZSB0aGUgbG9naWMgdG8gb21wIHdoZW4gY29udmVydGluZ1xuICAgICBmcm9tIG9sZGVyIGFzdHMuICopXG4gICgqIFwib2NhbWwuZG9jXCIgYXR0cmlidXRlcyBhcmUgZ2VuZXJhdGVkIHdpdGggW0xvY2F0aW9uLm5vbmVdLCB3aGljaCBpcyBub3QgaGVscGZ1bCBmb3JcbiAgICAgZXJyb3IgbWVzc2FnZXMuICopXG4gIGlmIFBvbHkuKCA9ICkgYXR0cl9uYW1lLmxvYyBMb2NhdGlvbi5ub25lIHRoZW5cbiAgICBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkXG4gIGVsc2VcbiAgICB7XG4gICAgICBhdHRyX25hbWUubG9jIHdpdGhcbiAgICAgIGxvY19lbmQgPSAobG9jX29mX25hbWVfYW5kX3BheWxvYWQgYXR0cl9uYW1lIGF0dHJfcGF5bG9hZCkubG9jX2VuZDtcbiAgICB9XG5cbmxldCBsb2Nfb2ZfZXh0ZW5zaW9uIChuYW1lLCBwYXlsb2FkKSA9XG4gIGlmIFBvbHkuKCA9ICkgbmFtZS5sb2MgTG9jYXRpb24ubm9uZSB0aGVuIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIG5hbWUgcGF5bG9hZFxuICBlbHNlXG4gICAgeyBuYW1lLmxvYyB3aXRoIGxvY19lbmQgPSAobG9jX29mX25hbWVfYW5kX3BheWxvYWQgbmFtZSBwYXlsb2FkKS5sb2NfZW5kIH1cblxubGV0IGN1cnJ5X2FwcGxpY2F0aW9ucyBleHByID1cbiAgbGV0IG9wZW4gQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk0gaW5cbiAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfYXBwbHkgKGYsIG9yaWdfZm9yd2FyZF9hcmdzKSAtPlxuICAgICAgbGV0IGxvYyA9IGV4cHIucGV4cF9sb2MgaW5cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gZlxuICAgICAgICB8IGxhc3RfYXJnIDo6IHJldl9mcm9udF9hcmdzIC0+XG4gICAgICAgICAgICBwZXhwX2FwcGx5IH5sb2MgKGxvb3AgcmV2X2Zyb250X2FyZ3MpIFsgbGFzdF9hcmcgXVxuICAgICAgaW5cbiAgICAgIGxvb3AgKExpc3QucmV2IG9yaWdfZm9yd2FyZF9hcmdzKVxuICB8IF8gLT4gZXhwclxuXG5sZXQgYXR0cmlidXRlc19lcnJvcnMgPVxuICBMaXN0LmZpbHRlcl9tYXAgfmY6KGZ1bmN0aW9uXG4gICAgfCB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfbG9jID0gXzsgYXR0cl9wYXlsb2FkID0gXyB9XG4gICAgICB3aGVuIE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLkxvY2F0aW9uLnR4dCAtPlxuICAgICAgICBOb25lXG4gICAgfCBhdHRyIC0+XG4gICAgICAgIGxldCBsb2MgPSBsb2Nfb2ZfYXR0cmlidXRlIGF0dHIgaW5cbiAgICAgICAgU29tZSAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiQXR0cmlidXRlcyBub3QgYWxsb3dlZCBoZXJlXCIpKVxuXG5sZXQgY29sbGVjdF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlMC5mb2xkXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgYSBhY2MgPSBhdHRyaWJ1dGVzX2Vycm9ycyBbIGEgXSBAIGFjY1xuICBlbmRcblxubGV0IGFzc2VydF9ub19hdHRyaWJ1dGVzIGwgPVxuICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgYXNzZXJ0X25vX2F0dHJpYnV0ZXNfaW4gPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlclxuICAgIG1ldGhvZCEgYXR0cmlidXRlIGEgPSBhc3NlcnRfbm9fYXR0cmlidXRlcyBbIGEgXVxuICBlbmRcblxubGV0IGF0dHJpYnV0ZV9vZl93YXJuaW5nIGxvYyBzID1cbiAge1xuICAgIGF0dHJfbmFtZSA9IHsgbG9jOyB0eHQgPSBcIm9jYW1sLnBwd2FybmluZ1wiIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2MgcykgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG5sZXQgaXNfcG9seW1vcnBoaWNfdmFyaWFudCA9XG4gIGxldCByZWMgY2hlY2sgPSBmdW5jdGlvblxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhcmlhbnQgXzsgXyB9IC0+IGBEZWZpbml0ZWx5XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKHR5cCwgXyk7IF8gfSAtPiBjaGVjayB0eXBcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgXzsgXyB9IC0+IGBNYXliZVxuICAgIHwgXyAtPiBgU3VyZWx5X25vdFxuICAgICgqIFR5cGUgdmFycyBnbyBoZXJlIGV2ZW4gdGhvdWdoIHRoZXkgY291bGQgYmUgcG9seW1vcnBoaWNcbiAgICAgICB2YXJpYW50cywgaG93ZXZlciB3ZSBkb24ndCBoYW5kbGUgaXQgaWYgdGhleSBnZXQgc3Vic3RpdHV0ZWRcbiAgICAgICBieSBhIHBvbHltb3JwaGljIHZhcmlhbnQgdGhhdCBpcyB0aGVuIGluY2x1ZGVkLiAqKVxuICBpblxuICBmdW4gdGQgfnNpZ18gLT5cbiAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICB8IFB0eXBlX3ZhcmlhbnQgXyB8IFB0eXBlX3JlY29yZCBfIHwgUHR5cGVfb3BlbiAtPiBgU3VyZWx5X25vdFxuICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKFxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpZiBzaWdfIHRoZW4gYE1heWJlIGVsc2UgYFN1cmVseV9ub3RcbiAgICAgICAgfCBTb21lIHR5cCAtPiBjaGVjayB0eXApXG5cbmxldCBta19uYW1lZF9zaWcgfmxvYyB+c2dfbmFtZSB+aGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQgPSBmdW5jdGlvblxuICB8IFsgdGQgXVxuICAgIHdoZW4gU3RyaW5nLmVxdWFsIHRkLnB0eXBlX25hbWUudHh0IFwidFwiICYmIExpc3QuaXNfZW1wdHkgdGQucHR5cGVfY3N0cnMgLT5cbiAgICAgIGlmXG4gICAgICAgIChub3QgaGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQpXG4gICAgICAgICYmIFBvbHkuKCA9ICkgKGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgdGQgfnNpZ186dHJ1ZSkgYERlZmluaXRlbHlcbiAgICAgIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgYXJpdHkgPSBMaXN0Lmxlbmd0aCB0ZC5wdHlwZV9wYXJhbXMgaW5cbiAgICAgICAgaWYgYXJpdHkgPj0gNCB0aGVuIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtdHkgPVxuICAgICAgICAgICAgaWYgYXJpdHkgPSAwIHRoZW4gc2dfbmFtZSBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJXMlZFwiIHNnX25hbWUgYXJpdHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICAgICAgICBsZXQgZm9yX3N1YnN0ID1cbiAgICAgICAgICAgIEFzdF9oZWxwZXIuVHlwZS5tayB+bG9jIHRkLnB0eXBlX25hbWUgfnBhcmFtczp0ZC5wdHlwZV9wYXJhbXNcbiAgICAgICAgICAgICAgfm1hbmlmZXN0OlxuICAgICAgICAgICAgICAgIChwdHlwX2NvbnN0ciB+bG9jXG4gICAgICAgICAgICAgICAgICAgKExvY2F0ZWQubWFwX2xpZGVudCB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcCB+Zjpmc3QgdGQucHR5cGVfcGFyYW1zKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChpbmNsdWRlX2luZm9zIH5sb2NcbiAgICAgICAgICAgICAgIChwbXR5X3dpdGggfmxvY1xuICAgICAgICAgICAgICAgICAgKHBtdHlfaWRlbnQgfmxvYyAoTG9jYXRlZC5saWRlbnQgbXR5IH5sb2MpKVxuICAgICAgICAgICAgICAgICAgWyBQd2l0aF90eXBlc3Vic3QgKExvY2F0ZWQubGlkZW50IH5sb2MgXCJ0XCIsIGZvcl9zdWJzdCkgXSkpXG4gIHwgXyAtPiBOb25lXG5cbmxldCBleG5fdG9fbG9jX2Vycm9yIGV4biA9XG4gIG1hdGNoIExvY2F0aW9uLkVycm9yLm9mX2V4biBleG4gd2l0aCBTb21lIGVycm9yIC0+IGVycm9yIHwgTm9uZSAtPiByYWlzZSBleG5cblxubW9kdWxlIFdpdGhfZXJyb3JzID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhICogTG9jYXRpb24uRXJyb3IudCBsaXN0XG5cbiAgbGV0IHJldHVybiBlID0gKGUsIFtdKVxuXG4gIGxldCAoID4+PSApICh4LCBlcnJvcnMxKSBmID1cbiAgICBsZXQgeSwgZXJyb3JzMiA9IGYgeCBpblxuICAgICh5LCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICBsZXQgKCA+PnwgKSAoeCwgZXJyb3JzKSBmID0gKGYgeCwgZXJyb3JzKVxuXG4gIGxldCBvZl9yZXN1bHQgcmVzdWx0IH5kZWZhdWx0ID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgT2sgeCAtPiAoeCwgW10pXG4gICAgfCBFcnJvciBlcnJvcnMgLT4gKGRlZmF1bHQsIE5vbkVtcHR5TGlzdC50b19saXN0IGVycm9ycylcblxuICBsZXQgY29tYmluZV9lcnJvcnMgbGlzdCA9IChMaXN0Lm1hcCBsaXN0IH5mOmZzdCwgTGlzdC5jb25jYXRfbWFwIGxpc3QgfmY6c25kKVxuZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBBc3RfcGF0dGVybjBcbmxldCBub2xhYmVsID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbGFiZWwgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vbGFiZWxcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBsYWJlbGxlZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTGFiZWxsZWQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxhYmVsbGVkXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBvcHRpb25hbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgT3B0aW9uYWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk9wdGlvbmFsXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBhdHRyaWJ1dGUgfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfnBheWxvYWQ6KFQgcGF5bG9hZCkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IG5hbWUgY3R4ICh4LmF0dHJfbmFtZSkubG9jICh4LmF0dHJfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwYXlsb2FkIGN0eCBsb2MgeC5hdHRyX3BheWxvYWQgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgYmluZGluZ19vcCB+b3A6KFQgb3ApICA9XG4gICgoZnVuIH5wYXQ6KFQgcGF0KSAtPlxuICAgICAgKChmdW4gfmV4cDooVCBleHApIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBvcCBjdHggKHgucGJvcF9vcCkubG9jICh4LnBib3Bfb3ApLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHBhdCBjdHggbG9jIHgucGJvcF9wYXQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBleHAgY3R4IGxvYyB4LnBib3BfZXhwIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNhc2UgfmxoczooVCBsaHMpICA9XG4gICgoZnVuIH5ndWFyZDooVCBndWFyZCkgLT5cbiAgICAgICgoZnVuIH5yaHM6KFQgcmhzKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gbGhzIGN0eCBsb2MgeC5wY19saHMgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBndWFyZCBjdHggbG9jIHgucGNfZ3VhcmQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSByaHMgY3R4IGxvYyB4LnBjX3JocyBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY2xfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY2xfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjbF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY2xfY29uc3RyIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9zdHJ1Y3R1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cnVjdHVyZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjbF9mdW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICAoKGZ1biAoVCBmMykgLT5cbiAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9hcHBseSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcHBseVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY2xfbGV0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY2xfY29uc3RyYWludCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNsX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNsX29wZW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjZl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjZl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjZl9pbmhlcml0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluaGVyaXRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjZl92YWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjZl92YWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjZl9tZXRob2QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjZl9tZXRob2QgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1ldGhvZFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjZl9jb25zdHJhaW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjZl9pbml0aWFsaXplciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbml0aWFsaXplclwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjZl9hdHRyaWJ1dGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjZl9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGNma192aXJ0dWFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBDZmtfdmlydHVhbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmlydHVhbFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY2ZrX2NvbmNyZXRlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IENma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uY3JldGVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBjbGFzc19pbmZvc19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2lfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNpX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNpX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGNsYXNzX2luZm9zIH52aXJ0OihUIHZpcnQpICA9XG4gICgoZnVuIH5wYXJhbXM6KFQgcGFyYW1zKSAtPlxuICAgICAgKChmdW4gfm5hbWU6KFQgbmFtZSkgLT5cbiAgICAgICAgICAoKGZ1biB+ZXhwcjooVCBleHByKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjaV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IHZpcnQgY3R4IGxvYyB4LnBjaV92aXJ0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwYXJhbXMgY3R4IGxvYyB4LnBjaV9wYXJhbXMgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucGNpX25hbWUpLmxvYyAoeC5wY2lfbmFtZSkudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucGNpX2V4cHIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBjbGFzc19zaWduYXR1cmUgfnNlbGY6KFQgc2VsZikgID1cbiAgKChmdW4gfmZpZWxkczooVCBmaWVsZHMpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBzZWxmIGN0eCBsb2MgeC5wY3NpZ19zZWxmIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmaWVsZHMgY3R4IGxvYyB4LnBjc2lnX2ZpZWxkcyBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBjbGFzc19zdHJ1Y3R1cmUgfnNlbGY6KFQgc2VsZikgID1cbiAgKChmdW4gfmZpZWxkczooVCBmaWVsZHMpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBzZWxmIGN0eCBsb2MgeC5wY3N0cl9zZWxmIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmaWVsZHMgY3R4IGxvYyB4LnBjc3RyX2ZpZWxkcyBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY3R5X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdHlfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY3R5X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3R5X2NvbnN0ciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGN0eV9zaWduYXR1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzaWduYXR1cmVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3R5X2Fycm93IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyb3dcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjdHlfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGN0eV9vcGVuIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGN0Zl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3RmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGN0Zl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGN0Zl9pbmhlcml0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluaGVyaXRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3RmX3ZhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGN0Zl92YWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdGZfbWV0aG9kIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX21ldGhvZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWV0aG9kXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGN0Zl9jb25zdHJhaW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3RmX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdGZfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY2xvc2VkID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IENsb3NlZCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ2xvc2VkXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgb3Blbl8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgT3BlbiAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3BlblwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjb25zdF9pbnRlZ2VyIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRlZ2VyXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNvbnN0X2NoYXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBjb25zdF9jaGFyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjaGFyXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY29uc3Rfc3RyaW5nIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cmluZ1wiKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY29uc3RfZmxvYXQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmbG9hdFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjc3RyX3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQY3N0cl90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjc3RyX3JlY29yZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2RfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2RfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfnZhcnM6KFQgdmFycykgLT5cbiAgICAgICgoZnVuIH5hcmdzOihUIGFyZ3MpIC0+XG4gICAgICAgICAgKChmdW4gfnJlczooVCByZXMpIC0+XG4gICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGN0eCAoeC5wY2RfbmFtZSkubG9jICh4LnBjZF9uYW1lKS50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSB2YXJzIGN0eCBsb2MgeC5wY2RfdmFycyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gYXJncyBjdHggbG9jIHgucGNkX2FyZ3MgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHJlcyBjdHggbG9jIHgucGNkX3JlcyBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHR5cF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eXBfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHB0eXBfYW55ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfYW55IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYW55XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB0eXBfdmFyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQdHlwX3ZhciB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cF9hcnJvdyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycm93XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQdHlwX3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB0eXBfY29uc3RyIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0clwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX29iamVjdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9iamVjdFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX2NsYXNzIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cF9hbGlhcyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cF92YXJpYW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX3BvbHkgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicG9seVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX3BhY2thZ2UgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicGFja2FnZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB0eXBfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgdXB0byA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBVcHRvIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJVcHRvXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgZG93bnRvXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBEb3dudG8gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkRvd250b1wiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBkaXJhX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwZGlyX3N0cmluZyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGRpcl9zdHJpbmcgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cmluZ1wiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGRpcl9pbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW50XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGRpcl9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGRpcl9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBkaXJfYm9vbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGRpcl9ib29sIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJib29sXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBleHBfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wZXhwX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwZXhwX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2NvbnN0YW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdGFudFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfbGV0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9mdW5jdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuY3Rpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2Z1biAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgICgoZnVuIChUIGYzKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfYXBwbHkgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfbWF0Y2ggKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1hdGNoXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfdHJ5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHJ5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfdHVwbGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR1cGxlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9jb25zdHJ1Y3QgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RydWN0XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfdmFyaWFudCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfcmVjb3JkIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfZmllbGQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmaWVsZFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3NldGZpZWxkIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNldGZpZWxkXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2FycmF5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2FycmF5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJheVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfaWZ0aGVuZWxzZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWZ0aGVuZWxzZVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9zZXF1ZW5jZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2VxdWVuY2VcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF93aGlsZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwid2hpbGVcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9mb3IgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICAoKGZ1biAoVCBmMykgLT5cbiAgICAgICAgICAgICAgKChmdW4gKFQgZjQpIC0+XG4gICAgICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGY0IGN0eCBsb2MgeDQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZvclwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9jb25zdHJhaW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9jb2VyY2UgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29lcmNlXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3NlbmQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNlbmRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9uZXcgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfbmV3IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibmV3XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9zZXRpbnN0dmFyIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXRpbnN0dmFyXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfb3ZlcnJpZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm92ZXJyaWRlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9sZXRtb2R1bGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldG1vZHVsZVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9sZXRleGNlcHRpb24gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRleGNlcHRpb25cIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9hc3NlcnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhc3NlcnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2xhenkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfbGF6eSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGF6eVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfcG9seSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwb2x5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfb2JqZWN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX29iamVjdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib2JqZWN0XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9uZXd0eXBlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJuZXd0eXBlXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfcGFjayAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9wYWNrIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwYWNrXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9vcGVuIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9sZXRvcCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0b3BcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfdW5yZWFjaGFibGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ1bnJlYWNoYWJsZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBleHRlbnNpb25fY29uc3RydWN0b3JfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGV4dF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wZXh0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBleHRlbnNpb25fY29uc3RydWN0b3Igfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfmtpbmQ6KFQga2luZCkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnBleHRfbmFtZSkubG9jICh4LnBleHRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0ga2luZCBjdHggbG9jIHgucGV4dF9raW5kIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXh0X2RlY2wgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkZWNsXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHRfcmViaW5kIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQZXh0X3JlYmluZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlYmluZFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgdW5pdCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBVbml0IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJVbml0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbmFtZWQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOYW1lZFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGluY2x1ZGVfaW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGluY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGluY2xfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBpbmNsdWRlX2luZm9zIH5tb2RfOihUIG1vZF8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGluY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBtb2RfIGN0eCBsb2MgeC5waW5jbF9tb2QgayBpbiBrKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBpbmplY3RpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgSW5qZWN0aXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJJbmplY3RpdmVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBub2luamVjdGl2aXR5ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vSW5qZWN0aXZpdHkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vSW5qZWN0aXZpdHlcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBsYWJlbF9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbGRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGxkX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGxkX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH5tdXRhYmxlXzooVCBtdXRhYmxlXykgLT5cbiAgICAgICgoZnVuIH50eXBlXzooVCB0eXBlXykgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGN0eCAoeC5wbGRfbmFtZSkubG9jICh4LnBsZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gbXV0YWJsZV8gY3R4IGxvYyB4LnBsZF9tdXRhYmxlIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wbGRfdHlwZSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbGV0b3AgfmxldF86KFQgbGV0XykgID1cbiAgKChmdW4gfmFuZHM6KFQgYW5kcykgLT5cbiAgICAgICgoZnVuIH5ib2R5OihUIGJvZHkpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBsZXRfIGN0eCBsb2MgeC5sZXRfIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gYW5kcyBjdHggbG9jIHguYW5kcyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGJvZHkgY3R4IGxvYyB4LmJvZHkgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbG9jYXRpb24gfnN0YXJ0OihUIHN0YXJ0KSAgPVxuICAoKGZ1biB+ZW5kXzooVCBlbmRfKSAtPlxuICAgICAgKChmdW4gfmdob3N0OihUIGdob3N0KSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gc3RhcnQgY3R4IGxvYyB4LmxvY19zdGFydCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGVuZF8gY3R4IGxvYyB4LmxvY19lbmQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBnaG9zdCBjdHggbG9jIHgubG9jX2dob3N0IGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGxpZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTGlkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMaWRlbnRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGxkb3QgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgTGRvdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGRvdFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGxhcHBseSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBMYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxhcHBseVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IG1vZHVsZV9iaW5kaW5nX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtYl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbWJfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbWJfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX2JpbmRpbmcgfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfmV4cHI6KFQgZXhwcikgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbWJfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1iX25hbWUpLmxvYyAoeC5wbWJfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucG1iX2V4cHIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IG1vZHVsZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbWRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1kX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1kX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+dHlwZV86KFQgdHlwZV8pIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBtZF9uYW1lKS5sb2MgKHgucG1kX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wbWRfdHlwZSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG1vZF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbW9kX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1vZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG1vZF9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG1vZF9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlkZW50XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG1vZF9zdHJ1Y3R1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJ1Y3R1cmVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbW9kX2Z1bmN0b3IgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuY3RvclwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbW9kX2FwcGx5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcHBseVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbW9kX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbW9kX3VucGFjayAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucGFja1wiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtb2RfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbW9kdWxlX3N1YnN0aXR1dGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXNfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1zX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1zX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfm1hbmlmZXN0OihUIG1hbmlmZXN0KSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXNfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1zX25hbWUpLmxvYyAoeC5wbXNfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3QgY3R4ICh4LnBtc19tYW5pZmVzdCkubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHgucG1zX21hbmlmZXN0KS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbXR5X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtdHlfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbXR5X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbXR5X2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbXR5X2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbXR5X3NpZ25hdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNpZ25hdHVyZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtdHlfZnVuY3RvciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdG9yXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtdHlfd2l0aCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ3aXRoXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtdHlfdHlwZW9mIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZW9mXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG10eV9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbXR5X2FsaWFzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbXR5X2FsaWFzIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXRkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtdGRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXRkX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH50eXBlXzooVCB0eXBlXykgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnBtdGRfbmFtZSkubG9jICh4LnBtdGRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnBtdGRfdHlwZSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgaW1tdXRhYmxlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IEltbXV0YWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiSW1tdXRhYmxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbXV0YWJsZV8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTXV0YWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTXV0YWJsZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBvZl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBvZl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG9mX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG9mX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG90YWcgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBvZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPdGFnXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IG9pbmhlcml0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wb2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBPaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT2luaGVyaXRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBvcGVuX2luZm9zX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvcGVuX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBvcGVuX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG9wZW5fYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgb3Blbl9pbmZvcyB+ZXhwcjooVCBleHByKSAgPVxuICAoKGZ1biB+b3ZlcnJpZGU6KFQgb3ZlcnJpZGUpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZXhwciBjdHggbG9jIHgucG9wZW5fZXhwciBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IG92ZXJyaWRlIGN0eCBsb2MgeC5wb3Blbl9vdmVycmlkZSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgb3ZlcnJpZGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgT3ZlcnJpZGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk92ZXJyaWRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgZnJlc2ggPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgRnJlc2ggLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkZyZXNoXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcGF0X2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHBhdF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHBhdF9hbnkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9hbnkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbnlcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF92YXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfdmFyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9hbGlhcyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFsaWFzXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBwYXRfY29uc3RhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0YW50XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9pbnRlcnZhbCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW50ZXJ2YWxcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2NvbnN0cnVjdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJ1Y3RcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF92YXJpYW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF9yZWNvcmQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF9hcnJheSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9hcnJheSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyYXlcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X29yIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvclwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X2NvbnN0cmFpbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2xhenkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfbGF6eSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGF6eVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfdW5wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X3VucGFjayB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucGFja1wiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfZXhjZXB0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXhjZXB0aW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X29wZW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHN0ciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUFN0ciB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFN0clwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUFNpZyB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFNpZ1wiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUFR5cCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFR5cFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQUGF0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQUGF0XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG9zaXRpb24gfmZuYW1lOihUIGZuYW1lKSAgPVxuICAoKGZ1biB+bG51bTooVCBsbnVtKSAtPlxuICAgICAgKChmdW4gfmJvbDooVCBib2wpIC0+XG4gICAgICAgICAgKChmdW4gfmNudW06KFQgY251bSkgLT5cbiAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGZuYW1lIGN0eCBsb2MgeC5wb3NfZm5hbWUgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gbG51bSBjdHggbG9jIHgucG9zX2xudW0gayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gYm9sIGN0eCBsb2MgeC5wb3NfYm9sIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGNudW0gY3R4IGxvYyB4LnBvc19jbnVtIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcml2YXRlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQcml2YXRlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQcml2YXRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHVibGljID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB1YmxpYyAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUHVibGljXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbm9ucmVjdXJzaXZlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9ucmVjdXJzaXZlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcmVjdXJzaXZlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFJlY3Vyc2l2ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUmVjdXJzaXZlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHJmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHJmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wcmZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwcmZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcnRhZyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcmZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnByZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJSdGFnXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCByaW5oZXJpdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcmZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHJmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUmluaGVyaXQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlJpbmhlcml0XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwc2lnX3ZhbHVlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsdWVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfdHlwZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc2lnX3R5cGVzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlc3Vic3RcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfdHlwZXh0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ190eXBleHQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGV4dFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19leGNlcHRpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXhjZXB0aW9uXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfbW9kc3Vic3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2RzdWJzdFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19yZWNtb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjbW9kdWxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX21vZHR5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfbW9kdHlwZXN1YnN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVzdWJzdFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19vcGVuIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19vcGVuIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2luY2x1ZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluY2x1ZGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfY2xhc3MgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX2NsYXNzIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc1wiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19jbGFzc190eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc190eXBlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfZXh0ZW5zaW9uIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBzdHJfZXZhbCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV2YWxcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyX3ZhbHVlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbHVlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHN0cl9wcmltaXRpdmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicHJpbWl0aXZlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX3R5cGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHN0cl90eXBleHQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXh0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfbW9kdWxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHVsZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9yZWNtb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjbW9kdWxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX21vZHR5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfb3BlbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfb3BlbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9jbGFzcyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfY2xhc3MgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2NsYXNzX3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzX3R5cGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfaW5jbHVkZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5jbHVkZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9hdHRyaWJ1dGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2V4dGVuc2lvbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH5hcmc6KFQgYXJnKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gbmFtZSBjdHggKHgucGRpcl9uYW1lKS5sb2MgKHgucGRpcl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGFyZyBjdHggbG9jIHgucGRpcl9hcmcgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHRvcF9kZWYgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB0b3BfZGVmIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkZWZcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB0b3BfZGlyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdG9wX2RpciB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZGlyXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB0eXBlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBlX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eXBlX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5cGVfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+cGFyYW1zOihUIHBhcmFtcykgLT5cbiAgICAgICgoZnVuIH5jc3RyczooVCBjc3RycykgLT5cbiAgICAgICAgICAoKGZ1biB+a2luZDooVCBraW5kKSAtPlxuICAgICAgICAgICAgICAoKGZ1biB+cHJpdmF0ZV86KFQgcHJpdmF0ZV8pIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB+bWFuaWZlc3Q6KFQgbWFuaWZlc3QpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGN0eCAoeC5wdHlwZV9uYW1lKS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHgucHR5cGVfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMgY3R4IGxvYyB4LnB0eXBlX3BhcmFtcyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBjc3RycyBjdHggbG9jIHgucHR5cGVfY3N0cnMgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0ga2luZCBjdHggbG9jIHgucHR5cGVfa2luZCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZV8gY3R4IGxvYyB4LnB0eXBlX3ByaXZhdGUgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0IGN0eCBsb2MgeC5wdHlwZV9tYW5pZmVzdCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCB0eXBlX2V4Y2VwdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlleG5fbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5ZXhuX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5ZXhuX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHR5cGVfZXhjZXB0aW9uIH5jb25zdHJ1Y3RvcjooVCBjb25zdHJ1Y3RvcikgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBjb25zdHJ1Y3RvciBjdHggbG9jIHgucHR5ZXhuX2NvbnN0cnVjdG9yIGsgaW4gaykpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgdHlwZV9leHRlbnNpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5ZXh0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eWV4dF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eWV4dF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB0eXBlX2V4dGVuc2lvbiB+cGF0aDooVCBwYXRoKSAgPVxuICAoKGZ1biB+cGFyYW1zOihUIHBhcmFtcykgLT5cbiAgICAgICgoZnVuIH5jb25zdHJ1Y3RvcnM6KFQgY29uc3RydWN0b3JzKSAtPlxuICAgICAgICAgICgoZnVuIH5wcml2YXRlXzooVCBwcml2YXRlXykgLT5cbiAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoIGN0eCAoeC5wdHlleHRfcGF0aCkubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeC5wdHlleHRfcGF0aCkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwYXJhbXMgY3R4IGxvYyB4LnB0eWV4dF9wYXJhbXMgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3JzIGN0eCBsb2MgeC5wdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcHJpdmF0ZV8gY3R4IGxvYyB4LnB0eWV4dF9wcml2YXRlIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cGVfYWJzdHJhY3QgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFic3RyYWN0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cGVfdmFyaWFudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyaWFudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cGVfcmVjb3JkIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cGVfb3BlbiA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdHlwZV9vcGVuIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgdmFsdWVfYmluZGluZ19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdmJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHZiX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHZiX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHZhbHVlX2JpbmRpbmcgfnBhdDooVCBwYXQpICA9XG4gICgoZnVuIH5leHByOihUIGV4cHIpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IHBhdCBjdHggbG9jIHgucHZiX3BhdCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnB2Yl9leHByIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCB2YWx1ZV9kZXNjcmlwdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdmFsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB2YWxfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdmFsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH50eXBlXzooVCB0eXBlXykgLT5cbiAgICAgICgoZnVuIH5wcmltOihUIHByaW0pIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnB2YWxfbmFtZSkubG9jICh4LnB2YWxfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wdmFsX3R5cGUgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcHJpbSBjdHggbG9jIHgucHZhbF9wcmltIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBjb3ZhcmlhbnQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgQ292YXJpYW50IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDb3ZhcmlhbnRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBjb250cmF2YXJpYW50ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IENvbnRyYXZhcmlhbnQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNvbnRyYXZhcmlhbnRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBub3ZhcmlhbmNlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vVmFyaWFuY2UgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vVmFyaWFuY2VcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB2aXJ0dWFsXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBWaXJ0dWFsIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJWaXJ0dWFsXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY29uY3JldGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgQ29uY3JldGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNvbmNyZXRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHdpdGhfdHlwZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB3aXRoX21vZHVsZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdWxlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHdpdGhfbW9kdHlwZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB3aXRoX21vZHR5cGVzdWJzdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlc3Vic3RcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwd2l0aF90eXBlc3Vic3QgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXN1YnN0XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHdpdGhfbW9kc3Vic3QgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kc3Vic3RcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBc3RfcGF0dGVybjBcblxubGV0IHNhdmVfY29udGV4dCBjdHggPSBjdHgubWF0Y2hlZFxubGV0IHJlc3RvcmVfY29udGV4dCBjdHggYmFja3VwID0gY3R4Lm1hdGNoZWQgPC0gYmFja3VwXG5sZXQgaW5jcl9tYXRjaGVkIGMgPSBjLm1hdGNoZWQgPC0gYy5tYXRjaGVkICsgMVxuXG5sZXQgcGFyc2VfcmVzIChUIGYpIGxvYyA/b25fZXJyb3IgeCBrID1cbiAgdHJ5IE9rIChmIHsgbWF0Y2hlZCA9IDAgfSBsb2MgeCBrKVxuICB3aXRoIEV4cGVjdGVkIChsb2MsIGV4cGVjdGVkKSAtPiAoXG4gICAgbWF0Y2ggb25fZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiBFcnJvciAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiJXMgZXhwZWN0ZWRcIiBleHBlY3RlZCwgW10pXG4gICAgfCBTb21lIGYgLT4gT2sgKGYgKCkpKVxuXG5sZXQgcGFyc2UgKFQgZikgbG9jID9vbl9lcnJvciB4IGsgPVxuICBtYXRjaCBwYXJzZV9yZXMgKFQgZikgbG9jID9vbl9lcnJvciB4IGsgd2l0aFxuICB8IE9rIHIgLT4gclxuICB8IEVycm9yIChyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSByXG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybjAudCAqICdiIC0+ICgnYSwgJ2MpIHRcblxuICBsZXQgY3JlYXRlIHQgZiA9IFQgKHQsIGYpXG4gIGxldCBwYXJzZV9yZXMgKFQgKHQsIGYpKSBsb2MgeCA9IHBhcnNlX3JlcyB0IGxvYyB4IGZcbiAgbGV0IHBhcnNlIChUICh0LCBmKSkgbG9jIHggPSBwYXJzZSB0IGxvYyB4IGZcbmVuZFxuXG5sZXQgX18gPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyB4IGsgLT5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrIHgpXG5cbmxldCBfXycgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGsgeyBsb2M7IHR4dCA9IHggfSlcblxubGV0IGRyb3AgPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyBfIGsgLT5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrKVxuXG5sZXQgYXNfXyAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHggKGsgeCkgaW5cbiAgICAgIGspXG5cbmxldCBjc3QgfnRvX3N0cmluZyA/KGVxdWFsID0gUG9seS5lcXVhbCkgdiA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBpZiBlcXVhbCB4IHYgdGhlbiAoXG4gICAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICAgIGspXG4gICAgICBlbHNlIGZhaWwgbG9jICh0b19zdHJpbmcgdikpXG5cbmxldCBpbnQgdiA9IGNzdCB+dG9fc3RyaW5nOkludC50b19zdHJpbmcgdlxubGV0IGNoYXIgdiA9IGNzdCB+dG9fc3RyaW5nOihQcmludGYuc3ByaW50ZiBcIiVDXCIpIHZcbmxldCBzdHJpbmcgdiA9IGNzdCB+dG9fc3RyaW5nOihQcmludGYuc3ByaW50ZiBcIiVTXCIpIHZcbmxldCBmbG9hdCB2ID0gY3N0IH50b19zdHJpbmc6RmxvYXQudG9fc3RyaW5nIHZcbmxldCBpbnQzMiB2ID0gY3N0IH50b19zdHJpbmc6SW50MzIudG9fc3RyaW5nIHZcbmxldCBpbnQ2NCB2ID0gY3N0IH50b19zdHJpbmc6SW50NjQudG9fc3RyaW5nIHZcbmxldCBuYXRpdmVpbnQgdiA9IGNzdCB+dG9fc3RyaW5nOk5hdGl2ZWludC50b19zdHJpbmcgdlxubGV0IGJvb2wgdiA9IGNzdCB+dG9fc3RyaW5nOkJvb2wudG9fc3RyaW5nIHZcblxubGV0IGJvb2wnIChUIGZ1bmMpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBcInRydWVcIiAtPiBmdW5jIGN0eCBsb2MgdHJ1ZSBrXG4gICAgICB8IFwiZmFsc2VcIiAtPiBmdW5jIGN0eCBsb2MgZmFsc2Uga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQm9vbFwiKVxuXG5sZXQgZmFsc2VfID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmYWxzZVwiKVxuXG5sZXQgdHJ1ZV8gPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHJ1ZVwiKVxuXG5sZXQgbmlsID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJbXVwiKVxuXG5sZXQgKCBeOjogKSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCB4MCA6OiB4MSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiOjpcIilcblxubGV0IG5vbmUgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9uZVwiKVxuXG5sZXQgc29tZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFNvbWUgeDAgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAgbGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJTb21lXCIpXG5cbmxldCBwYWlyIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jICh4MSwgeDIpIGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgaylcblxubGV0ICggKiogKSA9IHBhaXJcblxubGV0IHRyaXBsZSAoVCBmMSkgKFQgZjIpIChUIGYzKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgKHgxLCB4MiwgeDMpIGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW5cbiAgICAgIGspXG5cbmxldCBhbHQgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBsZXQgYmFja3VwID0gc2F2ZV9jb250ZXh0IGN0eCBpblxuICAgICAgdHJ5IGYxIGN0eCBsb2MgeCBrXG4gICAgICB3aXRoIGUxIC0+IChcbiAgICAgICAgbGV0IG0xID0gc2F2ZV9jb250ZXh0IGN0eCBpblxuICAgICAgICByZXN0b3JlX2NvbnRleHQgY3R4IGJhY2t1cDtcbiAgICAgICAgdHJ5IGYyIGN0eCBsb2MgeCBrXG4gICAgICAgIHdpdGggZTIgLT5cbiAgICAgICAgICBsZXQgbTIgPSBzYXZlX2NvbnRleHQgY3R4IGluXG4gICAgICAgICAgaWYgbTEgPj0gbTIgdGhlbiAoXG4gICAgICAgICAgICByZXN0b3JlX2NvbnRleHQgY3R4IG0xO1xuICAgICAgICAgICAgcmFpc2UgZTEpXG4gICAgICAgICAgZWxzZSByYWlzZSBlMikpXG5cbmxldCAoIHx8fCApID0gYWx0XG5sZXQgbWFwIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmIGspKVxubGV0IG1hcCcgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGYgbG9jIGspKVxubGV0IG1hcF9yZXN1bHQgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiAoZnVuYyBjdHggbG9jIHggaykpXG5sZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxubGV0IG1hcDAgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGsgZikpXG5sZXQgbWFwMSAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgLT4gayAoZiBhKSkpXG5cbmxldCBtYXAyIChUIGZ1bmMpIH5mID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSBiIC0+IGsgKGYgYSBiKSkpXG5cbmxldCBtYXAwJyAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoayAoZiBsb2MpKSlcblxubGV0IG1hcDEnIChUIGZ1bmMpIH5mID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSAtPiBrIChmIGxvYyBhKSkpXG5cbmxldCBtYXAyJyAoVCBmdW5jKSB+ZiA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgYiAtPiBrIChmIGxvYyBhIGIpKSlcblxubGV0IG1hcF92YWx1ZSAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgKGYgeCkgaylcbmxldCBtYXBfdmFsdWUnIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyAoZiBsb2MgeCkgaylcblxubGV0IGFsdF9vcHRpb24gc29tZSBub25lID1cbiAgYWx0IChtYXAxIHNvbWUgfmY6KGZ1biB4IC0+IFNvbWUgeCkpIChtYXAwIG5vbmUgfmY6Tm9uZSlcblxubGV0IG1hbnkgKFQgZikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIGwgayAtPlxuICAgICAgbGV0IHJlYyBhdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gayAoTGlzdC5yZXYgYWNjdSlcbiAgICAgICAgfCB4IDo6IHhzIC0+IGYgY3R4IGxvYyB4IChmdW4geCAtPiBhdXggKHggOjogYWNjdSkgeHMpXG4gICAgICBpblxuICAgICAgYXV4IFtdIGwpXG5cbmxldCBsb2MgKFQgZikgPSBUIChmdW4gY3R4IF9sb2MgKHggOiBfIExvYy50KSBrIC0+IGYgY3R4IHgubG9jIHgudHh0IGspXG5sZXQgcGFjazAgdCA9IG1hcCB0IH5mOihmdW4gZiAtPiBmICgpKVxubGV0IHBhY2syIHQgPSBtYXAgdCB+ZjooZnVuIGYgeCB5IC0+IGYgKHgsIHkpKVxubGV0IHBhY2szIHQgPSBtYXAgdCB+ZjooZnVuIGYgeCB5IHogLT4gZiAoeCwgeSwgeikpXG5cbmluY2x1ZGUgQXN0X3BhdHRlcm5fZ2VuZXJhdGVkXG5cbmxldCBlY2hhciB0ID0gcGV4cF9jb25zdGFudCAocGNvbnN0X2NoYXIgdClcbmxldCBlc3RyaW5nIHQgPSBwZXhwX2NvbnN0YW50IChwY29uc3Rfc3RyaW5nIHQgZHJvcCBkcm9wKVxubGV0IGVmbG9hdCB0ID0gcGV4cF9jb25zdGFudCAocGNvbnN0X2Zsb2F0IHQgZHJvcClcbmxldCBwY2hhciB0ID0gcHBhdF9jb25zdGFudCAocGNvbnN0X2NoYXIgdClcbmxldCBwc3RyaW5nIHQgPSBwcGF0X2NvbnN0YW50IChwY29uc3Rfc3RyaW5nIHQgZHJvcCBkcm9wKVxubGV0IHBmbG9hdCB0ID0gcHBhdF9jb25zdGFudCAocGNvbnN0X2Zsb2F0IHQgZHJvcClcbmxldCBpbnQnIChUIGYpID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoaW50X29mX3N0cmluZyB4KSBrKVxubGV0IGludDMyJyAoVCBmKSA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKEludDMyLm9mX3N0cmluZyB4KSBrKVxubGV0IGludDY0JyAoVCBmKSA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKEludDY0Lm9mX3N0cmluZyB4KSBrKVxuXG5sZXQgbmF0aXZlaW50JyAoVCBmKSA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKE5hdGl2ZWludC5vZl9zdHJpbmcgeCkgaylcblxubGV0IGNvbnN0X2ludCB0ID0gcGNvbnN0X2ludGVnZXIgKGludCcgdCkgbm9uZVxubGV0IGNvbnN0X2ludDMyIHQgPSBwY29uc3RfaW50ZWdlciAoaW50MzInIHQpIChzb21lIChjaGFyICdsJykpXG5sZXQgY29uc3RfaW50NjQgdCA9IHBjb25zdF9pbnRlZ2VyIChpbnQ2NCcgdCkgKHNvbWUgKGNoYXIgJ0wnKSlcbmxldCBjb25zdF9uYXRpdmVpbnQgdCA9IHBjb25zdF9pbnRlZ2VyIChuYXRpdmVpbnQnIHQpIChzb21lIChjaGFyICduJykpXG5sZXQgZWludCB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfaW50IHQpXG5sZXQgZWludDMyIHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9pbnQzMiB0KVxubGV0IGVpbnQ2NCB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfaW50NjQgdClcbmxldCBlbmF0aXZlaW50IHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9uYXRpdmVpbnQgdClcbmxldCBwaW50IHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9pbnQgdClcbmxldCBwaW50MzIgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X2ludDMyIHQpXG5sZXQgcGludDY0IHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9pbnQ2NCB0KVxubGV0IHBuYXRpdmVpbnQgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X25hdGl2ZWludCB0KVxubGV0IHNpbmdsZV9leHByX3BheWxvYWQgdCA9IHBzdHIgKHBzdHJfZXZhbCB0IG5pbCBeOjogbmlsKVxubGV0IG5vX2xhYmVsIHQgPSBjc3QgQXN0dHlwZXMuTm9sYWJlbCB+dG9fc3RyaW5nOihmdW4gXyAtPiBcIk5vbGFiZWxcIikgKiogdFxubGV0IGVib29sIHQgPSBwZXhwX2NvbnN0cnVjdCAobGlkZW50IChib29sJyB0KSkgbm9uZVxubGV0IHBib29sIHQgPSBwcGF0X2NvbnN0cnVjdCAobGlkZW50IChib29sJyB0KSkgbm9uZVxuXG5sZXQgZXh0ZW5zaW9uIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jICgobmFtZSA6IF8gTG9jLnQpLCBwYXlsb2FkKSBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBuYW1lLmxvYyBuYW1lLnR4dCBrIGluXG4gICAgICBsZXQgayA9IGYyIGN0eCBsb2MgcGF5bG9hZCBrIGluXG4gICAgICBrKVxuXG5sZXQgcmVjIHBhcnNlX2VsaXN0IChlIDogUGFyc2V0cmVlLmV4cHJlc3Npb24pIGFjYyA9XG4gIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyBlLnBleHBfYXR0cmlidXRlcztcbiAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgTm9uZSkgLT4gTGlzdC5yZXYgYWNjXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LCBTb21lIGFyZykgLT4gKFxuICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIGFyZy5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICBtYXRjaCBhcmcucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF90dXBsZSBbIGhkOyB0bCBdIC0+IHBhcnNlX2VsaXN0IHRsIChoZCA6OiBhY2MpXG4gICAgICB8IF8gLT4gZmFpbCBhcmcucGV4cF9sb2MgXCJsaXN0XCIpXG4gIHwgXyAtPiBmYWlsIGUucGV4cF9sb2MgXCJsaXN0XCJcblxubGV0IGVsaXN0IChUIGYpID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgZSBrIC0+XG4gICAgICBsZXQgbCA9IHBhcnNlX2VsaXN0IGUgW10gaW5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrIChMaXN0Lm1hcCBsIH5mOihmdW4geCAtPiBmIGN0eCB4LlBhcnNldHJlZS5wZXhwX2xvYyB4IChmdW4geCAtPiB4KSkpKVxuXG5sZXQgZXNlcXVlbmNlIChUIGYpID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgZSBrIC0+XG4gICAgICBsZXQgcmVjIHBhcnNlX3NlcSBleHByIGFjYyA9XG4gICAgICAgIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChleHByLCBuZXh0KSAtPiBwYXJzZV9zZXEgbmV4dCAoZXhwciA6OiBhY2MpXG4gICAgICAgIHwgXyAtPiBleHByIDo6IGFjY1xuICAgICAgaW5cbiAgICAgIGtcbiAgICAgICAgKExpc3QucmV2X21hcCAocGFyc2Vfc2VxIGUgW10pIH5mOihmdW4gZXhwciAtPlxuICAgICAgICAgICAgIGYgY3R4IGV4cHIucGV4cF9sb2MgZXhwciAoZnVuIHggLT4geCkpKSlcblxubGV0IG9mX2Z1bmMgZiA9IFQgZlxubGV0IHRvX2Z1bmMgKFQgZikgPSBmXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHBvbHlfZXF1YWwgYSBiID1cbiAgbGV0IG1vZHVsZSBQb2x5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVCA6IF8gLT4gdFxuICBlbmQgaW5cbiAgU3RkcHB4LlBvbHkuZXF1YWwgKFBvbHkuVCBhKSAoUG9seS5UIGIpXG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIHRcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gdFxuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gdFxuICAgIHwgVHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiB0XG4gICAgfCBUeXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIHRcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB0XG4gICAgfCBQYXR0ZXJuIDogcGF0dGVybiB0XG4gICAgfCBDb3JlX3R5cGUgOiBjb3JlX3R5cGUgdFxuICAgIHwgRXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gdFxuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiB0XG4gICAgfCBDbGFzc190eXBlIDogY2xhc3NfdHlwZSB0XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCB0XG4gICAgfCBDbGFzc19pbmZvcyA6IF8gY2xhc3NfaW5mb3MgdFxuICAgIHwgQ2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgdFxuICAgIHwgQ2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCB0XG4gICAgfCBNb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIHRcbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiB0XG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHRcbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIHRcbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIHRcbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIHRcbiAgICB8IEluY2x1ZGVfaW5mb3MgOiBfIGluY2x1ZGVfaW5mb3MgdFxuICAgIHwgTW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciB0XG4gICAgfCBWYWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyB0XG4gICAgfCBNb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIHRcbiAgICB8IFBzdHJfZXZhbCA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgUHNpZ19leHRlbnNpb24gOiBzaWduYXR1cmVfaXRlbSB0XG4gICAgfCBSdGFnIDogcm93X2ZpZWxkIHRcbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIDogb2JqZWN0X2ZpZWxkIHRcblxuICBsZXQgbGFiZWxfZGVjbGFyYXRpb24gPSBMYWJlbF9kZWNsYXJhdGlvblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPSBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICBsZXQgdHlwZV9kZWNsYXJhdGlvbiA9IFR5cGVfZGVjbGFyYXRpb25cbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID0gVHlwZV9leHRlbnNpb25cbiAgbGV0IHR5cGVfZXhjZXB0aW9uID0gVHlwZV9leGNlcHRpb25cbiAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IEV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICBsZXQgcGF0dGVybiA9IFBhdHRlcm5cbiAgbGV0IGNvcmVfdHlwZSA9IENvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiA9IEV4cHJlc3Npb25cbiAgbGV0IHZhbHVlX2Rlc2NyaXB0aW9uID0gVmFsdWVfZGVzY3JpcHRpb25cbiAgbGV0IGNsYXNzX3R5cGUgPSBDbGFzc190eXBlXG4gIGxldCBjbGFzc190eXBlX2ZpZWxkID0gQ2xhc3NfdHlwZV9maWVsZFxuICBsZXQgY2xhc3NfaW5mb3MgPSBDbGFzc19pbmZvc1xuICBsZXQgY2xhc3NfZXhwciA9IENsYXNzX2V4cHJcbiAgbGV0IGNsYXNzX2ZpZWxkID0gQ2xhc3NfZmllbGRcbiAgbGV0IG1vZHVsZV90eXBlID0gTW9kdWxlX3R5cGVcbiAgbGV0IG1vZHVsZV9kZWNsYXJhdGlvbiA9IE1vZHVsZV9kZWNsYXJhdGlvblxuICBsZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICBsZXQgb3Blbl9kZXNjcmlwdGlvbiA9IE9wZW5fZGVzY3JpcHRpb25cbiAgbGV0IGluY2x1ZGVfaW5mb3MgPSBJbmNsdWRlX2luZm9zXG4gIGxldCBtb2R1bGVfZXhwciA9IE1vZHVsZV9leHByXG4gIGxldCB2YWx1ZV9iaW5kaW5nID0gVmFsdWVfYmluZGluZ1xuICBsZXQgbW9kdWxlX2JpbmRpbmcgPSBNb2R1bGVfYmluZGluZ1xuICBsZXQgcHN0cl9ldmFsID0gUHN0cl9ldmFsXG4gIGxldCBwc3RyX2V4dGVuc2lvbiA9IFBzdHJfZXh0ZW5zaW9uXG4gIGxldCBwc2lnX2V4dGVuc2lvbiA9IFBzaWdfZXh0ZW5zaW9uXG4gIGxldCBydGFnID0gUnRhZ1xuICBsZXQgb2JqZWN0X3R5cGVfZmllbGQgPSBPYmplY3RfdHlwZV9maWVsZFxuXG4gIGxldCBnZXRfcHN0cl9ldmFsIHN0ID1cbiAgICBtYXRjaCBzdC5wc3RyX2Rlc2Mgd2l0aFxuICAgIHwgUHN0cl9ldmFsIChlLCBsKSAtPiAoZSwgbClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuQ29udGV4dC5nZXRfcHN0cl9ldmFsXCJcblxuICBsZXQgZ2V0X3BzdHJfZXh0ZW5zaW9uIHN0ID1cbiAgICBtYXRjaCBzdC5wc3RyX2Rlc2Mgd2l0aFxuICAgIHwgUHN0cl9leHRlbnNpb24gKGUsIGwpIC0+IChlLCBsKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5Db250ZXh0LmdldF9wc3RyX2V4dGVuc2lvblwiXG5cbiAgbGV0IGdldF9wc2lnX2V4dGVuc2lvbiBzdCA9XG4gICAgbWF0Y2ggc3QucHNpZ19kZXNjIHdpdGhcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIChlLCBsKSAtPiAoZSwgbClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuQ29udGV4dC5nZXRfcHNpZ19leHRlbnNpb25cIlxuXG4gIGxldCBnZXRfYXR0cmlidXRlcyA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlcyA9XG4gICBmdW4gdCB4IC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAtPiB4LnBsZF9hdHRyaWJ1dGVzXG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB4LnBjZF9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IHgucHR5cGVfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9leHRlbnNpb24gLT4geC5wdHlleHRfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9leGNlcHRpb24gLT4geC5wdHlleG5fYXR0cmlidXRlc1xuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IHgucGV4dF9hdHRyaWJ1dGVzXG4gICAgfCBQYXR0ZXJuIC0+IHgucHBhdF9hdHRyaWJ1dGVzXG4gICAgfCBDb3JlX3R5cGUgLT4geC5wdHlwX2F0dHJpYnV0ZXNcbiAgICB8IEV4cHJlc3Npb24gLT4geC5wZXhwX2F0dHJpYnV0ZXNcbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIC0+IHgucHZhbF9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc190eXBlIC0+IHgucGN0eV9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IHgucGN0Zl9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc19pbmZvcyAtPiB4LnBjaV9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc19leHByIC0+IHgucGNsX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX2ZpZWxkIC0+IHgucGNmX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV90eXBlIC0+IHgucG10eV9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gLT4geC5wbWRfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4geC5wbXRkX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gLT4geC5wbXNfYXR0cmlidXRlc1xuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiAtPiB4LnBvcGVuX2F0dHJpYnV0ZXNcbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gLT4geC5wb3Blbl9hdHRyaWJ1dGVzXG4gICAgfCBJbmNsdWRlX2luZm9zIC0+IHgucGluY2xfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX2V4cHIgLT4geC5wbW9kX2F0dHJpYnV0ZXNcbiAgICB8IFZhbHVlX2JpbmRpbmcgLT4geC5wdmJfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX2JpbmRpbmcgLT4geC5wbWJfYXR0cmlidXRlc1xuICAgIHwgUHN0cl9ldmFsIC0+IHNuZCAoZ2V0X3BzdHJfZXZhbCB4KVxuICAgIHwgUHN0cl9leHRlbnNpb24gLT4gc25kIChnZXRfcHN0cl9leHRlbnNpb24geClcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIC0+IHNuZCAoZ2V0X3BzaWdfZXh0ZW5zaW9uIHgpXG4gICAgfCBSdGFnIC0+IHgucHJmX2F0dHJpYnV0ZXNcbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIC0+IHgucG9mX2F0dHJpYnV0ZXNcblxuICBsZXQgc2V0X2F0dHJpYnV0ZXMgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgLT4gYSA9XG4gICBmdW4gdCB4IGF0dHJzIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwbGRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBjZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwdHlwZV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVHlwZV9leHRlbnNpb24gLT4geyB4IHdpdGggcHR5ZXh0X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBUeXBlX2V4Y2VwdGlvbiAtPiB7IHggd2l0aCBwdHlleG5fYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiB7IHggd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBQYXR0ZXJuIC0+IHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENvcmVfdHlwZSAtPiB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBFeHByZXNzaW9uIC0+IHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIC0+IHsgeCB3aXRoIHB2YWxfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGUgLT4geyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiB7IHggd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc19pbmZvcyAtPiB7IHggd2l0aCBwY2lfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX2V4cHIgLT4geyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc19maWVsZCAtPiB7IHggd2l0aCBwY2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV90eXBlIC0+IHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwbWRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gLT4geyB4IHdpdGggcG1zX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIC0+IHsgeCB3aXRoIHBvcGVuX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBvcGVuX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBJbmNsdWRlX2luZm9zIC0+IHsgeCB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfZXhwciAtPiB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBWYWx1ZV9iaW5kaW5nIC0+IHsgeCB3aXRoIHB2Yl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX2JpbmRpbmcgLT4geyB4IHdpdGggcG1iX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBQc3RyX2V2YWwgLT5cbiAgICAgICAgeyB4IHdpdGggcHN0cl9kZXNjID0gUHN0cl9ldmFsIChnZXRfcHN0cl9ldmFsIHggfD4gZnN0LCBhdHRycykgfVxuICAgIHwgUHN0cl9leHRlbnNpb24gLT5cbiAgICAgICAge1xuICAgICAgICAgIHggd2l0aFxuICAgICAgICAgIHBzdHJfZGVzYyA9IFBzdHJfZXh0ZW5zaW9uIChnZXRfcHN0cl9leHRlbnNpb24geCB8PiBmc3QsIGF0dHJzKTtcbiAgICAgICAgfVxuICAgIHwgUHNpZ19leHRlbnNpb24gLT5cbiAgICAgICAge1xuICAgICAgICAgIHggd2l0aFxuICAgICAgICAgIHBzaWdfZGVzYyA9IFBzaWdfZXh0ZW5zaW9uIChnZXRfcHNpZ19leHRlbnNpb24geCB8PiBmc3QsIGF0dHJzKTtcbiAgICAgICAgfVxuICAgIHwgUnRhZyAtPiB7IHggd2l0aCBwcmZfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIC0+IHsgeCB3aXRoIHBvZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBkZXNjIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIC0+IFwibGFiZWwgZGVjbGFyYXRpb25cIlxuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gXCJjb25zdHJ1Y3RvciBkZWNsYXJhdGlvblwiXG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IFwidHlwZSBkZWNsYXJhdGlvblwiXG4gICAgfCBUeXBlX2V4dGVuc2lvbiAtPiBcInR5cGUgZXh0ZW5zaW9uXCJcbiAgICB8IFR5cGVfZXhjZXB0aW9uIC0+IFwidHlwZSBleGNlcHRpb25cIlxuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFwiZXh0ZW5zaW9uIGNvbnN0cnVjdG9yXCJcbiAgICB8IFBhdHRlcm4gLT4gXCJwYXR0ZXJuXCJcbiAgICB8IENvcmVfdHlwZSAtPiBcImNvcmUgdHlwZVwiXG4gICAgfCBFeHByZXNzaW9uIC0+IFwiZXhwcmVzc2lvblwiXG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiAtPiBcInZhbHVlXCJcbiAgICB8IENsYXNzX3R5cGUgLT4gXCJjbGFzcyB0eXBlXCJcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gXCJjbGFzcyB0eXBlIGZpZWxkXCJcbiAgICB8IENsYXNzX2luZm9zIC0+IFwiY2xhc3MgZGVjbGFyYXRpb25cIlxuICAgIHwgQ2xhc3NfZXhwciAtPiBcImNsYXNzIGV4cHJlc3Npb25cIlxuICAgIHwgQ2xhc3NfZmllbGQgLT4gXCJjbGFzcyBmaWVsZFwiXG4gICAgfCBNb2R1bGVfdHlwZSAtPiBcIm1vZHVsZSB0eXBlXCJcbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiAtPiBcIm1vZHVsZSBkZWNsYXJhdGlvblwiXG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBcIm1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uXCJcbiAgICB8IE1vZHVsZV9zdWJzdGl0dXRpb24gLT4gXCJtb2R1bGUgc3Vic3RpdHV0aW9uXCJcbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gLT4gXCJvcGVuXCJcbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gLT4gXCJvcGVuXCJcbiAgICB8IEluY2x1ZGVfaW5mb3MgLT4gXCJpbmNsdWRlXCJcbiAgICB8IE1vZHVsZV9leHByIC0+IFwibW9kdWxlIGV4cHJlc3Npb25cIlxuICAgIHwgVmFsdWVfYmluZGluZyAtPiBcInZhbHVlIGJpbmRpbmdcIlxuICAgIHwgTW9kdWxlX2JpbmRpbmcgLT4gXCJtb2R1bGUgYmluZGluZ1wiXG4gICAgfCBQc3RyX2V2YWwgLT4gXCJ0b3BsZXZlbCBleHByZXNzaW9uXCJcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIC0+IFwidG9wbGV2ZWwgZXh0ZW5zaW9uXCJcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIC0+IFwidG9wbGV2ZWwgc2lnbmF0dXJlIGV4dGVuc2lvblwiXG4gICAgfCBSdGFnIC0+IFwicG9seW1vcnBoaWMgdmFyaWFudCB0YWdcIlxuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgLT4gXCJvYmplY3QgdHlwZSBmaWVsZFwiXG5cbiAgKCpcbiAgbGV0IHBhdHRlcm4gOiB0eXBlIGEgYiBjIGQuIGEgdFxuICAgIC0+IChhdHRyaWJ1dGVzLCBiLCBjKSBBc3RfcGF0dGVybi50XG4gICAgLT4gKGEsIGMsIGQpIEFzdF9wYXR0ZXJuLnRcbiAgICAtPiAoYSwgYiwgZCkgQXN0X3BhdHRlcm4udCA9IGZ1bmN0aW9uXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAgICAgICAtPiBBc3RfcGF0dGVybi5wbGRfYXR0cmlidXRlc1xuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gQXN0X3BhdHRlcm4ucGNkX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gICAgICAgIC0+IEFzdF9wYXR0ZXJuLnB0eXBlX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZXh0ZW5zaW9uICAgICAgICAgIC0+IEFzdF9wYXR0ZXJuLnB0eWV4dF9hdHRyaWJ1dGVzXG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgICAtPiBBc3RfcGF0dGVybi5wZXh0X2F0dHJpYnV0ZXNcbiopXG5cbiAgbGV0IGVxdWFsIDogXyB0IC0+IF8gdCAtPiBib29sID0gcG9seV9lcXVhbFxuZW5kXG5cbm1vZHVsZSBGbG9hdGluZ19jb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gdFxuICAgIHwgQ2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCB0XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCB0XG5cbiAgbGV0IHN0cnVjdHVyZV9pdGVtID0gU3RydWN0dXJlX2l0ZW1cbiAgbGV0IHNpZ25hdHVyZV9pdGVtID0gU2lnbmF0dXJlX2l0ZW1cbiAgbGV0IGNsYXNzX2ZpZWxkID0gQ2xhc3NfZmllbGRcbiAgbGV0IGNsYXNzX3R5cGVfZmllbGQgPSBDbGFzc190eXBlX2ZpZWxkXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGVfaWZfaXNfZmxvYXRpbmdfbm9kZSA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlIG9wdGlvbiA9XG4gICBmdW4gdCB4IC0+XG4gICAgbWF0Y2ggKHQsIHgpIHdpdGhcbiAgICB8IFN0cnVjdHVyZV9pdGVtLCB7IHBzdHJfZGVzYyA9IFBzdHJfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IFNpZ25hdHVyZV9pdGVtLCB7IHBzaWdfZGVzYyA9IFBzaWdfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IENsYXNzX2ZpZWxkLCB7IHBjZl9kZXNjID0gUGNmX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkLCB7IHBjdGZfZGVzYyA9IFBjdGZfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBnZXRfYXR0cmlidXRlIHQgeCA9XG4gICAgbWF0Y2ggZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19ub2RlIHQgeCB3aXRoXG4gICAgfCBTb21lIGEgLT4gYVxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0LmdldF9hdHRyaWJ1dGVcIlxuXG4gIGxldCByZXBsYWNlX2J5X2R1bW15IDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhID1cbiAgICBsZXQgZHVtbXlfZXh0ID0gKHsgdHh0ID0gXCJcIjsgbG9jID0gTG9jYXRpb24ubm9uZSB9LCBQU3RyIFtdKSBpblxuICAgIGZ1biB0IHggLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiB7IHggd2l0aCBwc3RyX2Rlc2MgPSBQc3RyX2V4dGVuc2lvbiAoZHVtbXlfZXh0LCBbXSkgfVxuICAgICAgfCBTaWduYXR1cmVfaXRlbSAtPiB7IHggd2l0aCBwc2lnX2Rlc2MgPSBQc2lnX2V4dGVuc2lvbiAoZHVtbXlfZXh0LCBbXSkgfVxuICAgICAgfCBDbGFzc19maWVsZCAtPiB7IHggd2l0aCBwY2ZfZGVzYyA9IFBjZl9leHRlbnNpb24gZHVtbXlfZXh0IH1cbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiB7IHggd2l0aCBwY3RmX2Rlc2MgPSBQY3RmX2V4dGVuc2lvbiBkdW1teV9leHQgfVxuXG4gIGxldCBkZXNjIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IFwic3RydWN0dXJlIGl0ZW1cIlxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gXCJzaWduYXR1cmUgaXRlbVwiXG4gICAgfCBDbGFzc19maWVsZCAtPiBcImNsYXNzIGZpZWxkXCJcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gXCJjbGFzcyB0eXBlIGZpZWxkXCJcblxuICBsZXQgZXF1YWwgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBwb2x5X2VxdWFsXG5lbmRcblxudHlwZSBwYWNrZWRfY29udGV4dCA9XG4gIHwgT25faXRlbSA6IF8gQ29udGV4dC50IC0+IHBhY2tlZF9jb250ZXh0XG4gIHwgRmxvYXRpbmcgOiBfIEZsb2F0aW5nX2NvbnRleHQudCAtPiBwYWNrZWRfY29udGV4dFxuXG50eXBlIF8gcGF5bG9hZF9wYXJzZXIgPVxuICB8IFBheWxvYWRfcGFyc2VyIDpcbiAgICAgIChwYXlsb2FkLCAnYSwgJ2IpIEFzdF9wYXR0ZXJuLnRcbiAgICAgICogKGF0dHJfbG9jOkxvY2F0aW9uLnQgLT4gbmFtZV9sb2M6TG9jYXRpb24udCAtPiAnYSlcbiAgICAgIC0+ICdiIHBheWxvYWRfcGFyc2VyXG5cbnR5cGUgKCdhLCAnYikgdCA9IHtcbiAgbmFtZSA6IE5hbWUuUGF0dGVybi50O1xuICBjb250ZXh0IDogJ2EgQ29udGV4dC50O1xuICBwYXlsb2FkIDogJ2IgcGF5bG9hZF9wYXJzZXI7XG59XG5cbnR5cGUgcGFja2VkID0gVCA6IChfLCBfKSB0IC0+IHBhY2tlZFxuXG5sZXQgbmFtZSB0ID0gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lXG5sZXQgY29udGV4dCB0ID0gdC5jb250ZXh0XG5cbmxldCByZWdpc3RyYXIgPVxuICBOYW1lLlJlZ2lzdHJhci5jcmVhdGUgfmtpbmQ6XCJhdHRyaWJ1dGVcIiB+Y3VycmVudF9maWxlOl9fRklMRV9fXG4gICAgfnN0cmluZ19vZl9jb250ZXh0OihmdW5jdGlvblxuICAgIHwgT25faXRlbSB0IC0+IFNvbWUgKENvbnRleHQuZGVzYyB0KVxuICAgIHwgRmxvYXRpbmcgdCAtPiBTb21lIChGbG9hdGluZ19jb250ZXh0LmRlc2MgdCBeIFwiIChmbG9hdGluZylcIikpXG5cbmxldCBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIE5hbWUuUmVnaXN0cmFyLnJlZ2lzdGVyIH5raW5kOmBBdHRyaWJ1dGUgcmVnaXN0cmFyIChPbl9pdGVtIGNvbnRleHQpIG5hbWU7XG4gIHtcbiAgICBuYW1lID0gTmFtZS5QYXR0ZXJuLm1ha2UgbmFtZTtcbiAgICBjb250ZXh0O1xuICAgIHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgayk7XG4gIH1cblxubGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5hdHRyX2xvYzpfIH5uYW1lX2xvYzpfIC0+IGspXG5cbmxldCBkZWNsYXJlX3dpdGhfbmFtZV9sb2MgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5hdHRyX2xvYzpfIH5uYW1lX2xvYyAtPlxuICAgICAgayB+bmFtZV9sb2MpXG5cbmxldCBkZWNsYXJlX3dpdGhfYXR0cl9sb2MgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5hdHRyX2xvYyB+bmFtZV9sb2M6XyAtPlxuICAgICAgayB+YXR0cl9sb2MpXG5cbnR5cGUgJ2EgZmxhZyA9ICgnYSwgdW5pdCkgdFxuXG5sZXQgZGVjbGFyZV9mbGFnIG5hbWUgY29udGV4dCA9XG4gIGxldCBwYXlsb2FkX3BhdHRlcm4gPSBBc3RfcGF0dGVybi4ocHN0ciBuaWwpIGluXG4gIGxldCBjb250aW51YXRpb24gfmF0dHJfbG9jOl8gfm5hbWVfbG9jOl8gPSAoKSBpblxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBheWxvYWRfcGF0dGVybiBjb250aW51YXRpb25cblxubW9kdWxlIEF0dHJpYnV0ZV90YWJsZSA9IFN0ZGxpYi5IYXNodGJsLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgbG9jXG5cbiAgbGV0IG5vcm1hbGl6ZSB0ID0geyB0IHdpdGggbG9jID0geyB0LmxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSB9XG4gIGxldCBoYXNoIHQgPSBIYXNodGJsLmhhc2ggKG5vcm1hbGl6ZSB0KVxuICBsZXQgZXF1YWwgeCB5ID0gUG9seS5lcXVhbCAobm9ybWFsaXplIHgpIChub3JtYWxpemUgeSlcbmVuZClcblxubGV0IG5vdF9zZWVuID0gQXR0cmlidXRlX3RhYmxlLmNyZWF0ZSAxMjhcbmxldCBtYXJrX2FzX3NlZW4geyBhdHRyX25hbWU7IF8gfSA9IEF0dHJpYnV0ZV90YWJsZS5yZW1vdmUgbm90X3NlZW4gYXR0cl9uYW1lXG5sZXQgbWFya19hc19oYW5kbGVkX21hbnVhbGx5ID0gbWFya19hc19zZWVuXG5cbmxldCBleHBsaWNpdGx5X2Ryb3AgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlclxuICAgIG1ldGhvZCEgYXR0cmlidXRlID0gbWFya19hc19zZWVuXG4gIGVuZFxuXG5sZXQgZ2V0X2ludGVybmFsID1cbiAgbGV0IHJlYyBmaW5kX2Jlc3RfbWF0Y2ggdCBhdHRyaWJ1dGVzIGxvbmdlc3RfbWF0Y2ggPVxuICAgIG1hdGNoIGF0dHJpYnV0ZXMgd2l0aFxuICAgIHwgW10gLT4gT2sgbG9uZ2VzdF9tYXRjaFxuICAgIHwgKHsgYXR0cl9uYW1lID0gbmFtZTsgXyB9IGFzIGF0dHIpIDo6IHJlc3QgLT5cbiAgICAgICAgaWYgTmFtZS5QYXR0ZXJuLm1hdGNoZXMgdC5uYW1lIG5hbWUudHh0IHRoZW5cbiAgICAgICAgICBtYXRjaCBsb25nZXN0X21hdGNoIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmluZF9iZXN0X21hdGNoIHQgcmVzdCAoU29tZSBhdHRyKVxuICAgICAgICAgIHwgU29tZSB7IGF0dHJfbmFtZSA9IG5hbWUnOyBfIH0gLT5cbiAgICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggbmFtZS50eHQgaW5cbiAgICAgICAgICAgICAgbGV0IGxlbicgPSBTdHJpbmcubGVuZ3RoIG5hbWUnLnR4dCBpblxuICAgICAgICAgICAgICBpZiBsZW4gPiBsZW4nIHRoZW4gZmluZF9iZXN0X21hdGNoIHQgcmVzdCAoU29tZSBhdHRyKVxuICAgICAgICAgICAgICBlbHNlIGlmIGxlbiA8IGxlbicgdGhlbiBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IGxvbmdlc3RfbWF0Y2hcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvYyBcIkR1cGxpY2F0ZWQgYXR0cmlidXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIFtdIClcbiAgICAgICAgZWxzZSBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IGxvbmdlc3RfbWF0Y2hcbiAgaW5cbiAgZnVuIHQgYXR0cmlidXRlcyAtPiBmaW5kX2Jlc3RfbWF0Y2ggdCBhdHRyaWJ1dGVzIE5vbmVcblxubGV0IGNvbnZlcnQgPyhkb19tYXJrX2FzX3NlZW4gPSB0cnVlKSBwYXR0ZXJuIGF0dHIgPVxuICBpZiBkb19tYXJrX2FzX3NlZW4gdGhlbiBtYXJrX2FzX3NlZW4gYXR0cjtcbiAgbGV0IChQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgaykpID0gcGF0dGVybiBpblxuICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVyblxuICAgIChDb21tb24ubG9jX29mX3BheWxvYWQgYXR0cilcbiAgICBhdHRyLmF0dHJfcGF5bG9hZFxuICAgIChrIH5hdHRyX2xvYzphdHRyLmF0dHJfbG9jIH5uYW1lX2xvYzphdHRyLmF0dHJfbmFtZS5sb2MpXG5cbmxldCBnZXRfcmVzIHQgP21hcmtfYXNfc2Vlbjpkb19tYXJrX2FzX3NlZW4geCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIHQuY29udGV4dCB4IGluXG4gIGdldF9pbnRlcm5hbCB0IGF0dHJzID4+PSBmdW4gcmVzIC0+XG4gIG1hdGNoIHJlcyB3aXRoXG4gIHwgTm9uZSAtPiBPayBOb25lXG4gIHwgU29tZSBhdHRyIC0+XG4gICAgICBjb252ZXJ0IHQucGF5bG9hZCBhdHRyID9kb19tYXJrX2FzX3NlZW4gPj58IGZ1biB2YWx1ZSAtPiBTb21lIHZhbHVlXG5cbmxldCBnZXQgdCA/bWFya19hc19zZWVuOmRvX21hcmtfYXNfc2VlbiB4ID1cbiAgZ2V0X3JlcyB0ID9tYXJrX2FzX3NlZW46ZG9fbWFya19hc19zZWVuIHhcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IGhhc19mbGFnX3JlcyB0ID9tYXJrX2FzX3NlZW4geCA9XG4gIG1hdGNoIGdldF9yZXMgP21hcmtfYXNfc2VlbiB0IHggd2l0aFxuICB8IE9rIChTb21lICgpKSAtPiBPayB0cnVlXG4gIHwgT2sgTm9uZSAtPiBPayBmYWxzZVxuICB8IEVycm9yIF8gYXMgZSAtPiBlXG5cbmxldCBoYXNfZmxhZyB0ID9tYXJrX2FzX3NlZW4geCA9XG4gIGhhc19mbGFnX3JlcyB0ID9tYXJrX2FzX3NlZW4geFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgY29uc3VtZV9yZXMgdCB4ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgdC5jb250ZXh0IHggaW5cbiAgZ2V0X2ludGVybmFsIHQgYXR0cnMgPj49IGZ1biByZXMgLT5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgfCBOb25lIC0+IE9rIE5vbmVcbiAgfCBTb21lIGF0dHIgLT5cbiAgICAgIGxldCBhdHRycyA9IExpc3QuZmlsdGVyIGF0dHJzIH5mOihmdW4gYXR0cicgLT4gbm90IChhdHRyID09IGF0dHInKSkgaW5cbiAgICAgIGxldCB4ID0gQ29udGV4dC5zZXRfYXR0cmlidXRlcyB0LmNvbnRleHQgeCBhdHRycyBpblxuICAgICAgY29udmVydCB0LnBheWxvYWQgYXR0ciA+PnwgZnVuIHZhbHVlIC0+IFNvbWUgKHgsIHZhbHVlKVxuXG5sZXQgY29uc3VtZSB0IHggPVxuICBjb25zdW1lX3JlcyB0IHhcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IHJlbW92ZV9zZWVuX3JlcyAodHlwZSBhKSAoY29udGV4dCA6IGEgQ29udGV4dC50KSBwYWNrZWRzICh4IDogYSkgPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyBjb250ZXh0IHggaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBPayBhY2NcbiAgICB8IFQgdCA6OiByZXN0IC0+XG4gICAgICAgIGlmIENvbnRleHQuZXF1YWwgdC5jb250ZXh0IGNvbnRleHQgdGhlblxuICAgICAgICAgIGdldF9pbnRlcm5hbCB0IGF0dHJzID4+PSBmdW4gcmVzIC0+XG4gICAgICAgICAgbWF0Y2ggcmVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCBhY2MgcmVzdFxuICAgICAgICAgIHwgU29tZSBhdHRyIC0+XG4gICAgICAgICAgICAgIGxldCBuYW1lID0gYXR0ci5hdHRyX25hbWUgaW5cbiAgICAgICAgICAgICAgaWYgQXR0cmlidXRlX3RhYmxlLm1lbSBub3Rfc2VlbiBuYW1lIHRoZW4gbG9vcCBhY2MgcmVzdFxuICAgICAgICAgICAgICBlbHNlIGxvb3AgKGF0dHIgOjogYWNjKSByZXN0XG4gICAgICAgIGVsc2UgbG9vcCBhY2MgcmVzdFxuICBpblxuICBsb29wIFtdIHBhY2tlZHMgPj58IGZ1biBtYXRjaGVkIC0+XG4gIGxldCBhdHRycyA9XG4gICAgTGlzdC5maWx0ZXIgYXR0cnMgfmY6KGZ1biBhdHRyJyAtPiBub3QgKExpc3QubWVtcSB+c2V0Om1hdGNoZWQgYXR0cicpKVxuICBpblxuICBDb250ZXh0LnNldF9hdHRyaWJ1dGVzIGNvbnRleHQgeCBhdHRyc1xuXG5sZXQgcmVtb3ZlX3NlZW4gKHR5cGUgYSkgKGNvbnRleHQgOiBhIENvbnRleHQudCkgcGFja2VkcyAoeCA6IGEpID1cbiAgcmVtb3ZlX3NlZW5fcmVzIChjb250ZXh0IDogYSBDb250ZXh0LnQpIHBhY2tlZHMgKHggOiBhKVxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgcGF0dGVybl9yZXMgdCBwID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBmID0gQXN0X3BhdHRlcm4udG9fZnVuYyBwIGluXG4gIEFzdF9wYXR0ZXJuLm9mX2Z1bmMgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgY29uc3VtZV9yZXMgdCB4ID4+fCBmdW4gcmVzIC0+XG4gICAgICBtYXRjaCByZXMgd2l0aFxuICAgICAgfCBOb25lIC0+IGYgY3R4IGxvYyB4IChrIE5vbmUpXG4gICAgICB8IFNvbWUgKHgsIHYpIC0+IGYgY3R4IGxvYyB4IChrIChTb21lIHYpKSlcblxubGV0IHBhdHRlcm4gdCBwID1cbiAgcGF0dGVybl9yZXMgdCBwIHw+IEFzdF9wYXR0ZXJuLnRvX2Z1bmNcbiAgfD4gKGZ1biBmIGEgYiBjIGQgLT5cbiAgICAgICBmIGEgYiBjIGRcbiAgICAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKSlcbiAgfD4gQXN0X3BhdHRlcm4ub2ZfZnVuY1xuXG5tb2R1bGUgRmxvYXRpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbnRleHQgPSBGbG9hdGluZ19jb250ZXh0XG5cbiAgdHlwZSAoJ2EsICdiKSB0ID0ge1xuICAgIG5hbWUgOiBOYW1lLlBhdHRlcm4udDtcbiAgICBjb250ZXh0IDogJ2EgQ29udGV4dC50O1xuICAgIHBheWxvYWQgOiAnYiBwYXlsb2FkX3BhcnNlcjtcbiAgfVxuXG4gIGxldCBuYW1lIHQgPSBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWVcblxuICBsZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBOYW1lLlJlZ2lzdHJhci5yZWdpc3RlciB+a2luZDpgQXR0cmlidXRlIHJlZ2lzdHJhciAoRmxvYXRpbmcgY29udGV4dCkgbmFtZTtcbiAgICB7XG4gICAgICBuYW1lID0gTmFtZS5QYXR0ZXJuLm1ha2UgbmFtZTtcbiAgICAgIGNvbnRleHQ7XG4gICAgICBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGZ1biB+YXR0cl9sb2M6XyB+bmFtZV9sb2M6XyAtPiBrKTtcbiAgICB9XG5cbiAgbGV0IGNvbnZlcnRfcmVzIHRzIHggPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIG1hdGNoIHRzIHdpdGhcbiAgICB8IFtdIC0+IE9rIE5vbmVcbiAgICB8IHsgY29udGV4dDsgXyB9IDo6IF8gLT4gKFxuICAgICAgICBhc3NlcnQgKExpc3QuZm9yX2FsbCB0cyB+ZjooZnVuIHQgLT4gQ29udGV4dC5lcXVhbCB0LmNvbnRleHQgY29udGV4dCkpO1xuICAgICAgICBsZXQgYXR0ciA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZSBjb250ZXh0IHggaW5cbiAgICAgICAgbGV0IG5hbWUgPSBhdHRyLmF0dHJfbmFtZSBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIExpc3QuZmlsdGVyIHRzIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubWF0Y2hlcyB0Lm5hbWUgbmFtZS50eHQpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBbXSAtPiBPayBOb25lXG4gICAgICAgIHwgWyB0IF0gLT4gY29udmVydCB0LnBheWxvYWQgYXR0ciA+PnwgZnVuIHZhbHVlIC0+IFNvbWUgdmFsdWVcbiAgICAgICAgfCBsIC0+XG4gICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgICAgICAgXCJNdWx0aXBsZSBtYXRjaCBmb3IgZmxvYXRpbmcgYXR0cmlidXRlczogJXNcIlxuICAgICAgICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWUpKSksXG4gICAgICAgICAgICAgICAgW10gKSlcblxuICBsZXQgY29udmVydCB0cyB4ID1cbiAgICBjb252ZXJ0X3JlcyB0cyB4XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG5sZXQgY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciBjb250ZXh0IG5hbWUgPVxuICBpZlxuICAgIChub3RcbiAgICAgICAoTmFtZS5BbGxvd2xpc3RlZC5pc19hbGxvd2xpc3RlZCB+a2luZDpgQXR0cmlidXRlIG5hbWUudHh0XG4gICAgICAgfHwgTmFtZS5pZ25vcmVfY2hlY2tzIG5hbWUudHh0KSlcbiAgICAmJiBBdHRyaWJ1dGVfdGFibGUubWVtIG5vdF9zZWVuIG5hbWVcbiAgdGhlblxuICAgIGxldCBhbGxvd2xpc3QgPSBOYW1lLkFsbG93bGlzdGVkLmdldF9hdHRyaWJ1dGVfbGlzdCAoKSBpblxuICAgIFtcbiAgICAgIE5hbWUuUmVnaXN0cmFyLkVycm9yLmNyZWF0ZWYgcmVnaXN0cmFyIGNvbnRleHQgfmFsbG93bGlzdFxuICAgICAgICBcIkF0dHJpYnV0ZSBgJXMnIHdhcyBub3QgdXNlZFwiIG5hbWU7XG4gICAgXVxuICBlbHNlIFtdXG5cbmxldCBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IFtMb2NhdGlvbi5FcnJvci50IGxpc3RdIEFzdF90cmF2ZXJzZTAuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSBuYW1lOyBfIH0gXyA9XG4gICAgICBbXG4gICAgICAgIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgIFwiYXR0cmlidXRlIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuQXR0cmlidXRlIG5lZWRzIHVwZGF0aW5nIVwiO1xuICAgICAgXVxuXG4gICAgbWV0aG9kIHByaXZhdGUgY2hlY2tfbm9kZSA6IHR5cGUgYS5cbiAgICAgICAgYSBDb250ZXh0LnQgLT4gYSAtPiBhICogTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBjb250ZXh0IG5vZGUgLT5cbiAgICAgICAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgaW5cbiAgICAgICAgbWF0Y2ggYXR0cnMgd2l0aFxuICAgICAgICB8IFtdIC0+IChub2RlLCBbXSlcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgICAgICAgTGlzdC5tYXAgYXR0cnNcbiAgICAgICAgICAgICAgICB+ZjooZnVuXG4gICAgICAgICAgICAgICAgICAgICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGNvbGxlY3RlZF9lcnJvcnMgPVxuICAgICAgICAgICAgICAgICAgICBzZWxmI3BheWxvYWQgcGF5bG9hZCBbXVxuICAgICAgICAgICAgICAgICAgICBAIGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgKE9uX2l0ZW0gY29udGV4dCkgbmFtZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICgqIElmIHdlIGFsbG93IHRoZSBhdHRyaWJ1dGUgdG8gcGFzcyB0aHJvdWdoLCBtYXJrIGl0IGFzIHNlZW4gKilcbiAgICAgICAgICAgICAgICAgIG1hcmtfYXNfc2VlbiBhdHRyO1xuICAgICAgICAgICAgICAgICAgY29sbGVjdGVkX2Vycm9ycylcbiAgICAgICAgICAgICAgfD4gTGlzdC5jb25jYXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoQ29udGV4dC5zZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgW10sIGVycm9ycylcblxuICAgIG1ldGhvZCBwcml2YXRlIGNoZWNrX2Zsb2F0aW5nIDogdHlwZSBhLlxuICAgICAgICBhIEZsb2F0aW5nLkNvbnRleHQudCAtPiBhIC0+IGEgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIGNvbnRleHQgbm9kZSAtPlxuICAgICAgICBtYXRjaFxuICAgICAgICAgIEZsb2F0aW5nLkNvbnRleHQuZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19ub2RlIGNvbnRleHQgbm9kZVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAobm9kZSwgW10pXG4gICAgICAgIHwgU29tZSAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgIGxldCBjb2xsZWN0ZWRfZXJyb3JzID1cbiAgICAgICAgICAgICAgc2VsZiNwYXlsb2FkIHBheWxvYWQgW11cbiAgICAgICAgICAgICAgQCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIChGbG9hdGluZyBjb250ZXh0KSBuYW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWFya19hc19zZWVuIGF0dHI7XG4gICAgICAgICAgICAoRmxvYXRpbmcuQ29udGV4dC5yZXBsYWNlX2J5X2R1bW15IGNvbnRleHQgbm9kZSwgY29sbGVjdGVkX2Vycm9ycylcblxuICAgIG1ldGhvZCEgbGFiZWxfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIExhYmVsX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI2xhYmVsX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFR5cGVfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjdHlwZV9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdHlwZV9leHRlbnNpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFR5cGVfZXh0ZW5zaW9uIHggaW5cbiAgICAgIHN1cGVyI3R5cGVfZXh0ZW5zaW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB0eXBlX2V4Y2VwdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVHlwZV9leGNlcHRpb24geCBpblxuICAgICAgc3VwZXIjdHlwZV9leGNlcHRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggaW5cbiAgICAgIHN1cGVyI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgcGF0dGVybiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgUGF0dGVybiB4IGluXG4gICAgICBzdXBlciNwYXR0ZXJuIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENvcmVfdHlwZSB4IGluXG4gICAgICBzdXBlciNjb3JlX3R5cGUgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIEV4cHJlc3Npb24geCBpblxuICAgICAgc3VwZXIjZXhwcmVzc2lvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFZhbHVlX2Rlc2NyaXB0aW9uIHggaW5cbiAgICAgIHN1cGVyI3ZhbHVlX2Rlc2NyaXB0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc190eXBlIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX3R5cGUgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX2luZm9zIGYgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENsYXNzX2luZm9zIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX2luZm9zIGYgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENsYXNzX2V4cHIgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfZXhwciByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGUgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV90eXBlIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgb3Blbl9kZXNjcmlwdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgT3Blbl9kZXNjcmlwdGlvbiB4IGluXG4gICAgICBzdXBlciNvcGVuX2Rlc2NyaXB0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBvcGVuX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBPcGVuX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI29wZW5fZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGluY2x1ZGVfaW5mb3MgZiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgSW5jbHVkZV9pbmZvcyB4IGluXG4gICAgICBzdXBlciNpbmNsdWRlX2luZm9zIGYgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfZXhwciB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfZXhwciByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVmFsdWVfYmluZGluZyB4IGluXG4gICAgICBzdXBlciN2YWx1ZV9iaW5kaW5nIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX2JpbmRpbmcgeCBpblxuICAgICAgc3VwZXIjbW9kdWxlX2JpbmRpbmcgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMxID0gc2VsZiNjaGVja19ub2RlIENsYXNzX2ZpZWxkIHggaW5cbiAgICAgIGxldCB4LCBlcnJvcnMyID0gc2VsZiNjaGVja19mbG9hdGluZyBDbGFzc19maWVsZCB4IGluXG4gICAgICBzdXBlciNjbGFzc19maWVsZCB4IChhY2MgQCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzMSA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc190eXBlX2ZpZWxkIHggaW5cbiAgICAgIGxldCB4LCBlcnJvcnMyID0gc2VsZiNjaGVja19mbG9hdGluZyBDbGFzc190eXBlX2ZpZWxkIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX3R5cGVfZmllbGQgeCAoYWNjIEAgZXJyb3JzMSBAIGVycm9yczIpXG5cbiAgICBtZXRob2QhIHJvd19maWVsZCB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzID1cbiAgICAgICAgbWF0Y2ggeC5wcmZfZGVzYyB3aXRoIFJ0YWcgXyAtPiBzZWxmI2NoZWNrX25vZGUgUnRhZyB4IHwgXyAtPiAoeCwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjcm93X2ZpZWxkIHggKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9ycyA9XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfb2JqZWN0IChmaWVsZHMsIGNsb3NlZF9mbGFnKSAtPlxuICAgICAgICAgICAgbGV0IGZpZWxkcywgZXJyb3JzID1cbiAgICAgICAgICAgICAgTGlzdC5tYXAgZmllbGRzIH5mOihzZWxmI2NoZWNrX25vZGUgT2JqZWN0X3R5cGVfZmllbGQpXG4gICAgICAgICAgICAgIHw+IExpc3Quc3BsaXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUHR5cF9vYmplY3QgKGZpZWxkcywgY2xvc2VkX2ZsYWcpLCBMaXN0LmNvbmNhdCBlcnJvcnMpXG4gICAgICAgIHwgXyAtPiAoeCwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjY29yZV90eXBlX2Rlc2MgeCAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBpdGVtIGFjYyA9XG4gICAgICBsZXQgaXRlbSwgZXJyb3JzID0gc2VsZiNjaGVja19mbG9hdGluZyBTdHJ1Y3R1cmVfaXRlbSBpdGVtIGluXG4gICAgICBsZXQgaXRlbSwgZXJyb3JzMiA9XG4gICAgICAgIG1hdGNoIGl0ZW0ucHN0cl9kZXNjIHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgXyAtPiBzZWxmI2NoZWNrX25vZGUgUHN0cl9ldmFsIGl0ZW1cbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiBfIC0+IHNlbGYjY2hlY2tfbm9kZSBQc3RyX2V4dGVuc2lvbiBpdGVtXG4gICAgICAgIHwgXyAtPiAoaXRlbSwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gaXRlbSAoYWNjIEAgZXJyb3JzIEAgZXJyb3JzMilcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0gaXRlbSBhY2MgPVxuICAgICAgbGV0IGl0ZW0sIGVycm9ycyA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgU2lnbmF0dXJlX2l0ZW0gaXRlbSBpblxuICAgICAgbGV0IGl0ZW0sIGVycm9yczIgPVxuICAgICAgICBtYXRjaCBpdGVtLnBzaWdfZGVzYyB3aXRoXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gXyAtPiBzZWxmI2NoZWNrX25vZGUgUHNpZ19leHRlbnNpb24gaXRlbVxuICAgICAgICB8IF8gLT4gKGl0ZW0sIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGl0ZW0gKGFjYyBAIGVycm9ycyBAIGVycm9yczIpXG4gIGVuZFxuXG5sZXQgY2hlY2tfYXR0cmlidXRlIHJlZ2lzdHJhciBjb250ZXh0IG5hbWUgPVxuICBtYXRjaCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIGNvbnRleHQgbmFtZSB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IHJhaXNlX2lmX25vbl9lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IGNoZWNrX3VudXNlZCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuXG4gICAgbWV0aG9kIHByaXZhdGUgY2hlY2tfbm9kZSA6IHR5cGUgYS4gYSBDb250ZXh0LnQgLT4gYSAtPiBhID1cbiAgICAgIGZ1biBjb250ZXh0IG5vZGUgLT5cbiAgICAgICAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgaW5cbiAgICAgICAgbWF0Y2ggYXR0cnMgd2l0aFxuICAgICAgICB8IFtdIC0+IG5vZGVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBMaXN0Lml0ZXIgYXR0cnNcbiAgICAgICAgICAgICAgfmY6KGZ1blxuICAgICAgICAgICAgICAgICAgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNwYXlsb2FkIHBheWxvYWQ7XG4gICAgICAgICAgICAgICAgY2hlY2tfYXR0cmlidXRlIHJlZ2lzdHJhciAoT25faXRlbSBjb250ZXh0KSBuYW1lO1xuICAgICAgICAgICAgICAgICgqIElmIHdlIGFsbG93IHRoZSBhdHRyaWJ1dGUgdG8gcGFzcyB0aHJvdWdoLCBtYXJrIGl0IGFzIHNlZW4gKilcbiAgICAgICAgICAgICAgICBtYXJrX2FzX3NlZW4gYXR0cik7XG4gICAgICAgICAgICBDb250ZXh0LnNldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBbXVxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSBuYW1lOyBfIH0gPVxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgXCJhdHRyaWJ1dGUgbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5BdHRyaWJ1dGUgbmVlZHMgdXBkYXRpbmchXCJcblxuICAgIG1ldGhvZCEgbGFiZWxfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNsYWJlbF9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3R5cGVfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHR5cGVfZXh0ZW5zaW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdHlwZV9leHRlbnNpb24geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdHlwZV9leGNlcHRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN0eXBlX2V4Y2VwdGlvbiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBleHRlbnNpb25fY29uc3RydWN0b3IgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNleHRlbnNpb25fY29uc3RydWN0b3IgeCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHBhdHRlcm4geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNwYXR0ZXJuIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NvcmVfdHlwZSB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjZXhwcmVzc2lvbiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3ZhbHVlX2Rlc2NyaXB0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfdHlwZSB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc19pbmZvcyBmIHggPVxuICAgICAgc3VwZXIjY2xhc3NfaW5mb3MgZiAoc2VsZiNjaGVja19ub2RlIENsYXNzX2luZm9zIHgpXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc19leHByIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX3R5cGUgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBvcGVuX2Rlc2NyaXB0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjb3Blbl9kZXNjcmlwdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgb3Blbl9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI29wZW5fZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGluY2x1ZGVfaW5mb3MgZiB4ID1cbiAgICAgIHN1cGVyI2luY2x1ZGVfaW5mb3MgZiAoc2VsZiNjaGVja19ub2RlIEluY2x1ZGVfaW5mb3MgeClcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfZXhwciB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdmFsdWVfYmluZGluZyB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV9iaW5kaW5nIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfZmllbGQgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX3R5cGVfZmllbGQgeCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHJvd19maWVsZCB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3Jvd19maWVsZCB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NvcmVfdHlwZV9kZXNjIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIGl0ZW0gPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc3RydWN0dXJlX2l0ZW0gaXRlbSBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGl0ZW0gPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc2lnbmF0dXJlX2l0ZW0gaXRlbSBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG4gIGVuZFxuXG5sZXQgcmVzZXRfY2hlY2tzICgpID0gQXR0cmlidXRlX3RhYmxlLmNsZWFyIG5vdF9zZWVuXG5cbmxldCBjb2xsZWN0ID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKVxuICAgICAgICA9XG4gICAgICBsZXQgbG9jID0gQ29tbW9uLmxvY19vZl9hdHRyaWJ1dGUgYXR0ciBpblxuICAgICAgc3VwZXIjcGF5bG9hZCBwYXlsb2FkO1xuICAgICAgQXR0cmlidXRlX3RhYmxlLmFkZCBub3Rfc2VlbiBuYW1lIGxvY1xuICBlbmRcblxubGV0IGNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSA9XG4gIGxldCBmYWlsIG5hbWUgbG9jIGFjYyA9XG4gICAgbGV0IHR4dCA9IG5hbWUudHh0IGluXG4gICAgaWYgbm90IChOYW1lLmlnbm9yZV9jaGVja3MgdHh0KSB0aGVuXG4gICAgICBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJBdHRyaWJ1dGUgYCVzJyB3YXMgc2lsZW50bHkgZHJvcHBlZFwiIHR4dFxuICAgICAgOjogYWNjXG4gICAgZWxzZSBhY2NcbiAgaW5cbiAgQXR0cmlidXRlX3RhYmxlLmZvbGQgZmFpbCBub3Rfc2VlbiBbXVxuXG5sZXQgY2hlY2tfYWxsX3NlZW4gKCkgPVxuICBtYXRjaCBjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCByZW1vdmVfYXR0cmlidXRlc19wcmVzZW50X2luIHRhYmxlID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9ID1cbiAgICAgIHN1cGVyI3BheWxvYWQgcGF5bG9hZDtcbiAgICAgIEF0dHJpYnV0ZV90YWJsZS5yZW1vdmUgdGFibGUgbmFtZVxuICBlbmRcblxubGV0IGNvcHlfb2Zfbm90X3NlZW4gKCkgPVxuICBsZXQgY29weSA9IEF0dHJpYnV0ZV90YWJsZS5jcmVhdGUgKEF0dHJpYnV0ZV90YWJsZS5sZW5ndGggbm90X3NlZW4pIGluXG4gIEF0dHJpYnV0ZV90YWJsZS5pdGVyIChBdHRyaWJ1dGVfdGFibGUuYWRkIGNvcHkpIG5vdF9zZWVuO1xuICBjb3B5XG5cbmxldCBkcm9wcGVkX3NvX2Zhcl9zdHJ1Y3R1cmUgc3QgPVxuICBsZXQgdGFibGUgPSBjb3B5X29mX25vdF9zZWVuICgpIGluXG4gIChyZW1vdmVfYXR0cmlidXRlc19wcmVzZW50X2luIHRhYmxlKSNzdHJ1Y3R1cmUgc3Q7XG4gIEF0dHJpYnV0ZV90YWJsZS5mb2xkXG4gICAgKGZ1biBuYW1lIGxvYyBhY2MgLT4geyB0eHQgPSBuYW1lLnR4dDsgbG9jIH0gOjogYWNjKVxuICAgIHRhYmxlIFtdXG5cbmxldCBkcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUgc2cgPVxuICBsZXQgdGFibGUgPSBjb3B5X29mX25vdF9zZWVuICgpIGluXG4gIChyZW1vdmVfYXR0cmlidXRlc19wcmVzZW50X2luIHRhYmxlKSNzaWduYXR1cmUgc2c7XG4gIEF0dHJpYnV0ZV90YWJsZS5mb2xkXG4gICAgKGZ1biBuYW1lIGxvYyBhY2MgLT4geyB0eHQgPSBuYW1lLnR4dDsgbG9jIH0gOjogYWNjKVxuICAgIHRhYmxlIFtdXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0ge1xuICBmaWxlX3BhdGggOiBzdHJpbmc7XG4gIG1haW5fbW9kdWxlX25hbWUgOiBzdHJpbmc7XG4gIHN1Ym1vZHVsZV9wYXRoIDogc3RyaW5nIGxvYyBsaXN0O1xuICBlbmNsb3NpbmdfbW9kdWxlIDogc3RyaW5nO1xuICBlbmNsb3NpbmdfdmFsdWUgOiBzdHJpbmcgb3B0aW9uO1xuICB2YWx1ZSA6IHN0cmluZyBsb2Mgb3B0aW9uO1xuICBpbl9leHByIDogYm9vbDtcbn1cblxubGV0IHRvcF9sZXZlbCB+ZmlsZV9wYXRoID1cbiAgbGV0IG1haW5fbW9kdWxlX25hbWUgPVxuICAgIGZpbGVfcGF0aCB8PiBTdGRsaWIuRmlsZW5hbWUuYmFzZW5hbWUgfD4gU3RkbGliLkZpbGVuYW1lLnJlbW92ZV9leHRlbnNpb25cbiAgICB8PiBTdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaVxuICBpblxuICB7XG4gICAgZmlsZV9wYXRoO1xuICAgIG1haW5fbW9kdWxlX25hbWU7XG4gICAgc3VibW9kdWxlX3BhdGggPSBbXTtcbiAgICBlbmNsb3NpbmdfbW9kdWxlID0gbWFpbl9tb2R1bGVfbmFtZTtcbiAgICBlbmNsb3NpbmdfdmFsdWUgPSBOb25lO1xuICAgIHZhbHVlID0gTm9uZTtcbiAgICBpbl9leHByID0gZmFsc2U7XG4gIH1cblxubGV0IGZpbGVfcGF0aCB0ID0gdC5maWxlX3BhdGhcbmxldCBtYWluX21vZHVsZV9uYW1lIHQgPSB0Lm1haW5fbW9kdWxlX25hbWVcbmxldCBlbmNsb3NpbmdfbW9kdWxlIHQgPSB0LmVuY2xvc2luZ19tb2R1bGVcbmxldCBlbmNsb3NpbmdfdmFsdWUgdCA9IHQuZW5jbG9zaW5nX3ZhbHVlXG5cbmxldCBzdWJtb2R1bGVfcGF0aCB0ID1cbiAgTGlzdC5yZXZfbWFwIH5mOihmdW4gbG9jYXRlZCAtPiBsb2NhdGVkLnR4dCkgdC5zdWJtb2R1bGVfcGF0aFxuXG5sZXQgdmFsdWUgdCA9IE9wdGlvbi5tYXAgfmY6KGZ1biBsb2NhdGVkIC0+IGxvY2F0ZWQudHh0KSB0LnZhbHVlXG5cbmxldCBmdWxseV9xdWFsaWZpZWRfcGF0aCB0ID1cbiAgbGV0IHZhbHVlID0gdmFsdWUgdCBpblxuICBsZXQgc3VibW9kdWxlX3BhdGggPVxuICAgIExpc3QucmV2X21hcCB+ZjooZnVuIGxvY2F0ZWQgLT4gU29tZSBsb2NhdGVkLnR4dCkgdC5zdWJtb2R1bGVfcGF0aFxuICBpblxuICBsZXQgbmFtZXMgPSAoU29tZSB0Lm1haW5fbW9kdWxlX25hbWUgOjogc3VibW9kdWxlX3BhdGgpIEAgWyB2YWx1ZSBdIGluXG4gIFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiBAQCBMaXN0LmZpbHRlcl9vcHQgbmFtZXNcblxubGV0IGVudGVyX2V4cHIgdCA9IHsgdCB3aXRoIGluX2V4cHIgPSB0cnVlIH1cblxubGV0IGVudGVyX21vZHVsZSB+bG9jIG1vZHVsZV9uYW1lIHQgPVxuICBpZiB0LmluX2V4cHIgdGhlbiB7IHQgd2l0aCBlbmNsb3NpbmdfbW9kdWxlID0gbW9kdWxlX25hbWUgfVxuICBlbHNlXG4gICAge1xuICAgICAgdCB3aXRoXG4gICAgICBzdWJtb2R1bGVfcGF0aCA9IHsgdHh0ID0gbW9kdWxlX25hbWU7IGxvYyB9IDo6IHQuc3VibW9kdWxlX3BhdGg7XG4gICAgICBlbmNsb3NpbmdfbW9kdWxlID0gbW9kdWxlX25hbWU7XG4gICAgfVxuXG5sZXQgZW50ZXJfdmFsdWUgfmxvYyB2YWx1ZV9uYW1lIHQgPVxuICBpZiB0LmluX2V4cHIgdGhlbiB7IHQgd2l0aCBlbmNsb3NpbmdfdmFsdWUgPSBTb21lIHZhbHVlX25hbWUgfVxuICBlbHNlXG4gICAge1xuICAgICAgdCB3aXRoXG4gICAgICB2YWx1ZSA9IFNvbWUgeyB0eHQgPSB2YWx1ZV9uYW1lOyBsb2MgfTtcbiAgICAgIGVuY2xvc2luZ192YWx1ZSA9IFNvbWUgdmFsdWVfbmFtZTtcbiAgICB9XG5cbmxldCB0b19zdHJpbmdfcGF0aCB0ID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiICh0LmZpbGVfcGF0aCA6OiBzdWJtb2R1bGVfcGF0aCB0KVxubGV0IHdpdGhfc3RyaW5nX3BhdGggZiB+bG9jIH5wYXRoID0gZiB+bG9jIH5wYXRoOih0b19zdHJpbmdfcGF0aCBwYXRoKTs7XG5cbmxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICBsZXQgYSA9IFwibG9sXCJcbmVuZCBpblxuTS5hXG4iLCJtb2R1bGUgQmFzZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IHRvb2xfbmFtZSA6IHN0cmluZzsgY29kZV9wYXRoIDogQ29kZV9wYXRoLnQ7IGlucHV0X25hbWUgOiBzdHJpbmcgfVxuXG4gIGxldCB0b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lID1cbiAgICBsZXQgY29kZV9wYXRoID0gQ29kZV9wYXRoLnRvcF9sZXZlbCB+ZmlsZV9wYXRoIGluXG4gICAgeyB0b29sX25hbWU7IGNvZGVfcGF0aDsgaW5wdXRfbmFtZSB9XG5cbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5jb2RlX3BhdGhcbiAgbGV0IGlucHV0X25hbWUgdCA9IHQuaW5wdXRfbmFtZVxuICBsZXQgdG9vbF9uYW1lIHQgPSB0LnRvb2xfbmFtZVxuICBsZXQgZW50ZXJfZXhwciB0ID0geyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX2V4cHIgdC5jb2RlX3BhdGggfVxuXG4gIGxldCBlbnRlcl9tb2R1bGUgfmxvYyBuYW1lIHQgPVxuICAgIHsgdCB3aXRoIGNvZGVfcGF0aCA9IENvZGVfcGF0aC5lbnRlcl9tb2R1bGUgfmxvYyBuYW1lIHQuY29kZV9wYXRoIH1cblxuICBsZXQgZW50ZXJfdmFsdWUgfmxvYyBuYW1lIHQgPVxuICAgIHsgdCB3aXRoIGNvZGVfcGF0aCA9IENvZGVfcGF0aC5lbnRlcl92YWx1ZSB+bG9jIG5hbWUgdC5jb2RlX3BhdGggfVxuZW5kXG5cbm1vZHVsZSBFeHRlbnNpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBleHRlbnNpb25fcG9pbnRfbG9jIDogTG9jYXRpb24udDsgYmFzZSA6IEJhc2UudCB9XG5cbiAgbGV0IG1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2MgfmJhc2UgKCkgPSB7IGV4dGVuc2lvbl9wb2ludF9sb2M7IGJhc2UgfVxuICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyB0ID0gdC5leHRlbnNpb25fcG9pbnRfbG9jXG4gIGxldCBjb2RlX3BhdGggdCA9IHQuYmFzZS5jb2RlX3BhdGhcbiAgbGV0IGlucHV0X25hbWUgdCA9IHQuYmFzZS5pbnB1dF9uYW1lXG4gIGxldCB0b29sX25hbWUgdCA9IHQuYmFzZS50b29sX25hbWVcblxuICBsZXQgd2l0aF9sb2NfYW5kX3BhdGggZiB+Y3R4dCA9XG4gICAgZiB+bG9jOmN0eHQuZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgfnBhdGg6KENvZGVfcGF0aC50b19zdHJpbmdfcGF0aCBjdHh0LmJhc2UuY29kZV9wYXRoKVxuZW5kXG5cbm1vZHVsZSBEZXJpdmVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZGVyaXZlZF9pdGVtX2xvYyA6IExvY2F0aW9uLnQ7IGlubGluZSA6IGJvb2w7IGJhc2UgOiBCYXNlLnQgfVxuXG4gIGxldCBtYWtlIH5kZXJpdmVkX2l0ZW1fbG9jIH5pbmxpbmUgfmJhc2UgKCkgPVxuICAgIHsgZGVyaXZlZF9pdGVtX2xvYzsgYmFzZTsgaW5saW5lIH1cblxuICBsZXQgZGVyaXZlZF9pdGVtX2xvYyB0ID0gdC5kZXJpdmVkX2l0ZW1fbG9jXG4gIGxldCBjb2RlX3BhdGggdCA9IHQuYmFzZS5jb2RlX3BhdGhcbiAgbGV0IGlucHV0X25hbWUgdCA9IHQuYmFzZS5pbnB1dF9uYW1lXG4gIGxldCB0b29sX25hbWUgdCA9IHQuYmFzZS50b29sX25hbWVcbiAgbGV0IGlubGluZSB0ID0gdC5pbmxpbmVcblxuICBsZXQgd2l0aF9sb2NfYW5kX3BhdGggZiB+Y3R4dCA9XG4gICAgZiB+bG9jOmN0eHQuZGVyaXZlZF9pdGVtX2xvY1xuICAgICAgfnBhdGg6KENvZGVfcGF0aC50b19zdHJpbmdfcGF0aCBjdHh0LmJhc2UuY29kZV9wYXRoKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQ29tbW9uLldpdGhfZXJyb3JzXG5pbmNsdWRlIEFzdF90cmF2ZXJzZTBcblxuY2xhc3MgdmlydHVhbCBbJ2N0eCwgJ3Jlc10gbGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbJ2N0eCwgJ3Jlc10gUHB4bGliX3RyYXZlcnNlX2J1aWx0aW5zLmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIGluaGVyaXQgWydjdHgsICdyZXNdIEFzdC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgZW5kXG5cbmxldCBtb2R1bGVfbmFtZSA9IGZ1bmN0aW9uIE5vbmUgLT4gXCJfXCIgfCBTb21lIG5hbWUgLT4gbmFtZVxubGV0IGVudGVyIG5hbWUgcGF0aCA9IGlmIFN0cmluZy5pc19lbXB0eSBwYXRoIHRoZW4gbmFtZSBlbHNlIHBhdGggXiBcIi5cIiBeIG5hbWVcbmxldCBlbnRlcl9vcHQgbmFtZV9vcHQgcGF0aCA9IGVudGVyIChtb2R1bGVfbmFtZSBuYW1lX29wdCkgcGF0aFxuXG5jbGFzcyBtYXBfd2l0aF9wYXRoID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbc3RyaW5nXSBtYXBfd2l0aF9jb250ZXh0IGFzIHN1cGVyXG5cbiAgICAoKiBXQVM6XG4gICAgICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBhdGggeCA9XG4gICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgfCBQc3RyX21vZHVsZSBtYiAtPiBzdXBlciNzdHJ1Y3R1cmVfaXRlbV9kZXNjIChlbnRlciBtYi5wbWJfbmFtZS50eHQgcGF0aCkgeFxuICAgICAgIHwgXyAtPiBzdXBlciNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBhdGggeFxuXG4gICAgICAgT3ZlcnJpZGluZyBbbW9kdWxlX2JpbmRpbmddIHNlZW1zIHRvIGJlIE9LIGJlY2F1c2UgaXQgZG9lcyBub3QgY2F0Y2hcbiAgICAgICBsb2NhbCBtb2R1bGUgYmluZGluZ3MgYmVjYXVzZSBhdCB0aGUgbW9tZW50IHRoZSBwYXJzZXRyZWUgZG9lc24ndCBtYWtlXG4gICAgICAgdXNlIG9mIFttb2R1bGVfYmluZGluZ10gZm9yIGxvY2FsIG1vZHVsZXMsIGJ1dCB0aGF0IG1pZ2h0IGNoYW5nZSBpbiB0aGVcbiAgICAgICBmdXR1cmUsIHNvIHRoaXMgbWlnaHQgYmUgc29tZXRoaW5nIHRvIGtlZXAgaW4gbWluZC5cblxuICAgICAgIFRoZSBmb2xsb3dpbmc6XG5cbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG4gICAgICAgICAgIG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZFxuXG4gICAgICAgaXMgZGlzYWxsb3dlZCwgYnV0XG5cbiAgICAgICAgICAgbGV0IF8gPSAuLiBsZXQgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kIGluIC4uXG4gICAgICAgICAgIG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZFxuICAgICAgICAgICBsZXQgXyA9IC4uIGxldCBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmQgaW4gLi5cblxuICAgICAgIGlzbid0LCBhbmQgdGhlIFwicGF0aFwiIGNvbnN0cnVjdGVkIGhlcmUgd291bGQgYmUgYWJsZSB0byBkaWZmZXJlbnRpYXRlXG4gICAgICAgYmV0d2VlbiB0aGVtLiAqKVxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgcGF0aCBtYiA9XG4gICAgICBzdXBlciNtb2R1bGVfYmluZGluZyAoZW50ZXJfb3B0IG1iLnBtYl9uYW1lLnR4dCBwYXRoKSBtYlxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gcGF0aCBtZCA9XG4gICAgICBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gKGVudGVyX29wdCBtZC5wbWRfbmFtZS50eHQgcGF0aCkgbWRcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gcGF0aCBtdGQgPVxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKGVudGVyIG10ZC5wbXRkX25hbWUudHh0IHBhdGgpIG10ZFxuICBlbmRcblxubGV0IHZhcl9uYW1lc19vZiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW3N0cmluZyBsaXN0XSBmb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIHBhdHRlcm4gcCBhY2MgPVxuICAgICAgbGV0IGFjYyA9IHN1cGVyI3BhdHRlcm4gcCBhY2MgaW5cbiAgICAgIG1hdGNoIHAucHBhdF9kZXNjIHdpdGggUHBhdF92YXIgeyB0eHQ7IF8gfSAtPiB0eHQgOjogYWNjIHwgXyAtPiBhY2NcbiAgZW5kXG5cbmxldCBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2MgbmFtZV9vcHQgY3R4dCA9XG4gIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfbW9kdWxlIH5sb2MgKG1vZHVsZV9uYW1lIG5hbWVfb3B0KSBjdHh0XG5cbmxldCBlbnRlcl92YWx1ZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmVudGVyX3ZhbHVlXCIgRXhwcmVzc2lvblxuICAgIEFzdF9wYXR0ZXJuLihzaW5nbGVfZXhwcl9wYXlsb2FkIChwZXhwX2lkZW50IChsaWRlbnQgX18nKSkpXG4gICAgRm4uaWRcblxubGV0IGVudGVyX21vZHVsZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmVudGVyX21vZHVsZVwiIE1vZHVsZV9leHByXG4gICAgQXN0X3BhdHRlcm4uKHNpbmdsZV9leHByX3BheWxvYWQgKHBleHBfY29uc3RydWN0IChsaWRlbnQgX18nKSBub25lKSlcbiAgICBGbi5pZFxuXG5sZXQgZG9fbm90X2VudGVyX3ZhbHVlX2JpbmRpbmcgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfdmFsdWVcIiBWYWx1ZV9iaW5kaW5nXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfdmFsdWVfZGVzY3JpcHRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfdmFsdWVcIiBWYWx1ZV9kZXNjcmlwdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX21vZHVsZV9iaW5kaW5nID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIE1vZHVsZV9iaW5kaW5nXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX2RlY2xhcmF0aW9uID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIE1vZHVsZV9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbGV0X21vZHVsZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBFeHByZXNzaW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmNsYXNzIG1hcF93aXRoX2V4cGFuc2lvbl9jb250ZXh0X2FuZF9lcnJvcnMgPVxuICBsZXQgcmV0dXJuIF9jdHggeCA9ICh4LCBbXSkgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXRcbiAgICAgIFtFeHBhbnNpb25fY29udGV4dC5CYXNlLnQsIExvY2F0aW9uLkVycm9yLnQgbGlzdF0gbGlmdF9tYXBfd2l0aF9jb250ZXh0IGFzIHN1cGVyXG5cbiAgICBtZXRob2QgaW50ID0gcmV0dXJuXG4gICAgbWV0aG9kIHN0cmluZyA9IHJldHVyblxuICAgIG1ldGhvZCBib29sID0gcmV0dXJuXG4gICAgbWV0aG9kIGNoYXIgPSByZXR1cm5cbiAgICBtZXRob2QgZmxvYXQgPSByZXR1cm5cbiAgICBtZXRob2QgaW50MzIgPSByZXR1cm5cbiAgICBtZXRob2QgaW50NjQgPSByZXR1cm5cbiAgICBtZXRob2QgbmF0aXZlaW50ID0gcmV0dXJuXG4gICAgbWV0aG9kIHVuaXQgPSByZXR1cm5cblxuICAgIG1ldGhvZCBhcnJheVxuICAgICAgICA6ICdhLlxuICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gJ2EgLT4gJ2EgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QpIC0+XG4gICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICAgICAgJ2EgYXJyYXkgLT5cbiAgICAgICAgICAnYSBhcnJheSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gZiBjdHggYSAtPlxuICAgICAgICBsZXQgbGlzdCwgZXJyb3JzID0gc2VsZiNsaXN0IGYgY3R4IChBcnJheS50b19saXN0IGEpIGluXG4gICAgICAgIChBcnJheS5vZl9saXN0IGxpc3QsIGVycm9ycylcblxuICAgIG1ldGhvZCBvdGhlciA6ICdhLiBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gJ2EgLT4gTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBfIF8gLT4gW11cblxuICAgIG1ldGhvZCByZWNvcmQgX2N0eCBmaWVsZHMgPSBMaXN0LmNvbmNhdF9tYXAgZmllbGRzIH5mOnNuZFxuICAgIG1ldGhvZCBjb25zdHIgX2N0eCBfdGFnIGFyZ3MgPSBMaXN0LmNvbmNhdCBhcmdzXG4gICAgbWV0aG9kIHR1cGxlIF9jdHggbCA9IExpc3QuY29uY2F0IGxcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiBjdHh0XG4gICAgICAgICh7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSBhcyBleHByKSA9XG4gICAgICBsZXQgd2l0aF92YWx1ZSA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGVudGVyX3ZhbHVlIGV4cHIgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBjdHh0XG4gICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT4gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl92YWx1ZSB+bG9jIHR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF92YWx1ZSA+Pj0gZnVuIGN0eHQgLT5cbiAgICAgIGxldCBjdHh0ID0gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9leHByIGN0eHQgaW5cbiAgICAgIGxldCBwZXhwX2Rlc2MsIGRlc2NfZXJyb3JzID1cbiAgICAgICAgbWF0Y2ggcGV4cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAobmFtZSwgbW9kdWxlX2V4cHIsIGJvZHkpIC0+XG4gICAgICAgICAgICBsZXQgbmFtZSwgbmFtZV9lcnJvcnMgPVxuICAgICAgICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eHQgbmFtZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBtb2R1bGVfZXhwciwgbW9kdWxlX2V4cHJfZXJyb3JzID1cbiAgICAgICAgICAgICAgbGV0IHdpdGhfbGV0X21vZHVsZSA9XG4gICAgICAgICAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX2xldF9tb2R1bGUgZXhwclxuICAgICAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jOm1vZHVsZV9leHByLnBtb2RfbG9jIG5hbWUudHh0IGN0eHRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgd2l0aF9sZXRfbW9kdWxlID4+PSBmdW4gY3R4dCAtPiBzZWxmI21vZHVsZV9leHByIGN0eHQgbW9kdWxlX2V4cHJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYm9keSwgYm9keV9lcnJvcnMgPSBzZWxmI2V4cHJlc3Npb24gY3R4dCBib2R5IGluXG4gICAgICAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4dCBcIlBleHBfbGV0bW9kdWxlXCJcbiAgICAgICAgICAgICAgICBbIG5hbWVfZXJyb3JzOyBtb2R1bGVfZXhwcl9lcnJvcnM7IGJvZHlfZXJyb3JzIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRtb2R1bGUgKG5hbWUsIG1vZHVsZV9leHByLCBib2R5KSwgZXJyb3JzKVxuICAgICAgICB8IF8gLT4gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4dCBwZXhwX2Rlc2NcbiAgICAgIGluXG4gICAgICBsZXQgcGV4cF9sb2MsIGxvY19lcnJvcnMgPSBzZWxmI2xvY2F0aW9uIGN0eHQgcGV4cF9sb2MgaW5cbiAgICAgIGxldCBwZXhwX2xvY19zdGFjaywgbG9jX3N0YWNrX2Vycm9ycyA9XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uIGN0eHQgcGV4cF9sb2Nfc3RhY2tcbiAgICAgIGluXG4gICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBjdHh0IHBleHBfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgICggeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0sXG4gICAgICAgIHNlbGYjcmVjb3JkIGN0eHRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwZXhwX2Rlc2NcIiwgZGVzY19lcnJvcnMpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2NcIiwgbG9jX2Vycm9ycyk7XG4gICAgICAgICAgICAoXCJwZXhwX2xvY19zdGFja1wiLCBsb2Nfc3RhY2tfZXJyb3JzKTtcbiAgICAgICAgICAgIChcImF0dHJpYnV0ZXNcIiwgYXR0cmlidXRlc19lcnJvcnMpO1xuICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciBjdHh0IG1lID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV9leHByID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZW50ZXJfbW9kdWxlIG1lIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gY3R4dFxuICAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfbW9kdWxlIH5sb2MgdHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV9leHByID4+PSBmdW4gY3R4dCAtPiBzdXBlciNtb2R1bGVfZXhwciBjdHh0IG1lXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIGN0eHQgbWIgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX2JpbmRpbmcgPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX2JpbmRpbmcgbWJcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPiBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2M6bWIucG1iX2xvYyBtYi5wbWJfbmFtZS50eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX2JpbmRpbmcgPj49IGZ1biBjdHh0IC0+IHN1cGVyI21vZHVsZV9iaW5kaW5nIGN0eHQgbWJcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIGN0eHQgbWQgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX2RlY2xhcmF0aW9uID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX21vZHVsZV9kZWNsYXJhdGlvbiBtZFxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYzptZC5wbWRfbG9jIG1kLnBtZF9uYW1lLnR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfZGVjbGFyYXRpb24gPj49IGZ1biBjdHh0IC0+IHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiBjdHh0IG1kXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eHQgbXRkID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIG10ZFxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jOm10ZC5wbXRkX2xvY1xuICAgICAgICAgICAgICBtdGQucG10ZF9uYW1lLnR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA+Pj0gZnVuIGN0eHQgLT5cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eHQgbXRkXG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQgdmQgPVxuICAgICAgbGV0IHdpdGhfdmFsdWVfZGVzY3JpcHRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfdmFsdWVfZGVzY3JpcHRpb24gdmRcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl92YWx1ZSB+bG9jOnZkLnB2YWxfbG9jIHZkLnB2YWxfbmFtZS50eHRcbiAgICAgICAgICAgICAgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfdmFsdWVfZGVzY3JpcHRpb24gPj49IGZ1biBjdHh0IC0+IHN1cGVyI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQgdmRcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyBjdHh0XG4gICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IGFzIHZiKSA9XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyB2YiB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICB8IFNvbWUgKCkgLT4gc3VwZXIjdmFsdWVfYmluZGluZyBjdHh0IHZiXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgaW5fYmluZGluZ19jdHh0ID1cbiAgICAgICAgICAgIG1hdGNoIHZhcl9uYW1lc19vZiNwYXR0ZXJuIHB2Yl9wYXQgW10gd2l0aFxuICAgICAgICAgICAgfCBbXSB8IF8gOjogXyA6OiBfIC0+IGN0eHRcbiAgICAgICAgICAgIHwgWyB2YXJfbmFtZSBdIC0+XG4gICAgICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl92YWx1ZSB+bG9jOnB2Yl9sb2MgdmFyX25hbWUgY3R4dFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHB2Yl9wYXQsIHBhdF9lcnJvcnMgPSBzZWxmI3BhdHRlcm4gY3R4dCBwdmJfcGF0IGluXG4gICAgICAgICAgbGV0IHB2Yl9leHByLCBleHByX2Vycm9ycyA9XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gaW5fYmluZGluZ19jdHh0IHB2Yl9leHByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMsIGF0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBpbl9iaW5kaW5nX2N0eHQgcHZiX2F0dHJpYnV0ZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwdmJfbG9jLCBsb2NfZXJyb3JzID0gc2VsZiNsb2NhdGlvbiBjdHh0IHB2Yl9sb2MgaW5cbiAgICAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eHRcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIChcInB2Yl9wYXRcIiwgcGF0X2Vycm9ycyk7XG4gICAgICAgICAgICAgICAgKFwicHZiX2V4cHJcIiwgZXhwcl9lcnJvcnMpO1xuICAgICAgICAgICAgICAgIChcInB2Yl9hdHRyaWJ1dGVzXCIsIGF0dHJpYnV0ZXNfZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAoXCJwdmJfbG9jXCIsIGxvY19lcnJvcnMpO1xuICAgICAgICAgICAgICBdXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSwgZXJyb3JzKVxuICBlbmRcblxuY2xhc3Mgc2V4cF9vZiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW1NleHAudF0gQXN0LmxpZnRcbiAgICBtZXRob2QgaW50ID0gc2V4cF9vZl9pbnRcbiAgICBtZXRob2Qgc3RyaW5nID0gc2V4cF9vZl9zdHJpbmdcbiAgICBtZXRob2QgYm9vbCA9IHNleHBfb2ZfYm9vbFxuICAgIG1ldGhvZCBjaGFyID0gc2V4cF9vZl9jaGFyXG4gICAgbWV0aG9kIGZsb2F0ID0gc2V4cF9vZl9mbG9hdFxuICAgIG1ldGhvZCBpbnQzMiA9IHNleHBfb2ZfaW50MzJcbiAgICBtZXRob2QgaW50NjQgPSBzZXhwX29mX2ludDY0XG4gICAgbWV0aG9kIG5hdGl2ZWludCA9IHNleHBfb2ZfbmF0aXZlaW50XG4gICAgbWV0aG9kIHVuaXQgPSBzZXhwX29mX3VuaXRcbiAgICBtZXRob2Qgb3B0aW9uID0gc2V4cF9vZl9vcHRpb25cbiAgICBtZXRob2QgbGlzdCA9IHNleHBfb2ZfbGlzdFxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EgLT4gU2V4cC50KSAtPiAnYSBhcnJheSAtPiBTZXhwLnQgPSBzZXhwX29mX2FycmF5XG4gICAgbWV0aG9kIG90aGVyIDogJ2EuICdhIC0+IFNleHAudCA9IGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIlxuXG4gICAgbWV0aG9kIHJlY29yZCBmaWVsZHMgPVxuICAgICAgTGlzdFxuICAgICAgICAoTGlzdC5tYXAgZmllbGRzIH5mOihmdW4gKGxhYmVsLCBzZXhwKSAtPlxuICAgICAgICAgICAgIFNleHAuTGlzdCBbIEF0b20gbGFiZWw7IHNleHAgXSkpXG5cbiAgICBtZXRob2QgY29uc3RyIHRhZyBhcmdzID1cbiAgICAgIG1hdGNoIGFyZ3Mgd2l0aCBbXSAtPiBBdG9tIHRhZyB8IF8gLT4gTGlzdCAoQXRvbSB0YWcgOjogYXJncylcblxuICAgIG1ldGhvZCB0dXBsZSBsID0gTGlzdCBsXG4gIGVuZFxuXG5sZXQgc2V4cF9vZiA9IG5ldyBzZXhwX29mXG4iLCIjIDEgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiBcbm9wZW4gTGV4aW5nXG5cbmxldCB1cGRhdGVfbG9jIGxleGJ1ZiBsaW5lc190b19za2lwID1cbiAgbGV0IHBvcyA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHsgcG9zIHdpdGhcbiAgICBwb3NfbG51bSA9IHBvcy5wb3NfbG51bSArIGxpbmVzX3RvX3NraXA7XG4gICAgcG9zX2JvbCA9IHBvcy5wb3NfY251bTtcbiAgfVxuXG4jIDEzIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwNlxcMDAwXFwwMDFcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHNraXBfaGFzaF9iYW5nIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2hhc2hfYmFuZ19yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9za2lwX2hhc2hfYmFuZ19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxNCBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuICAgICAgKCB1cGRhdGVfbG9jIGxleGJ1ZiAzIClcbiMgMTEzIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IDEgLT5cbiMgMTYgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiAgICAgICggdXBkYXRlX2xvYyBsZXhidWYgMSApXG4jIDExOCBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5cbiAgfCAyIC0+XG4jIDE3IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gICAgICAgKCAoKSApXG4jIDEyMyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIiwib3BlbiBJbXBvcnRcblxubGV0IHdpdGhfb3V0cHV0IGZuIH5iaW5hcnkgfmYgPVxuICBtYXRjaCBmbiB3aXRoXG4gIHwgTm9uZSB8IFNvbWUgXCItXCIgLT5cbiAgICAgICgqIEZsaXBwaW5nIGJhY2sgYW5kIGZvcnRoIGZyb20gYmluYXJ5IHRvIHRleHQgaXMgbm90XG4gICAgICAgICBhIGdvb2QgaWRlYSwgc28gd2UnbGwgbWFrZSB0d28gc2ltcGxpZnlpbmcgYXNzdW1wdGlvbnM6XG4gICAgICAgICAxLiBBc3N1bWUgdGhhdCBub3RoaW5nIGlzIGJ1ZmZlcmVkIG9uIHN0ZG91dCBiZWZvcmVcbiAgICAgICAgICAgIGVudGVyaW5nIFt3aXRoX291dHB1dF0uIFRoYXQgbWVhbnMgd2UgZG9uJ3QgbmVlZCB0b1xuICAgICAgICAgICAgZmx1c2ggdGhlIHN0ZG91dCBvbiBlbnRyeS5cbiAgICAgICAgIDIuIEFzc3VtZSB0aGF0IG5vdGhpbmcgZWxzZSBpcyBzZW50IHRvIHN0ZG91dCBhZnRlclxuICAgICAgICAgICAgW3dpdGhfb3V0cHV0XS4gVGhhdCBtZWFucyBpdCBpcyBzYWZlIHRvIGxlYXZlIHN0ZG91dFxuICAgICAgICAgICAgY2hhbm5lbCBpbiBiaW5hcnkgbW9kZSAob3IgdGV4dCBtb2RlIGlmIFtiaW5hcnk9dHJ1ZV0pXG4gICAgICAgICAgICBhZnRlciB0aGUgZnVuY3Rpb24gaXMgZG9uZS4gKilcbiAgICAgIHNldF9iaW5hcnlfbW9kZV9vdXQgc3Rkb3V0IGJpbmFyeTtcbiAgICAgIGYgc3Rkb3V0XG4gIHwgU29tZSBmbiAtPiBPdXRfY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmJpbmFyeSB+ZlxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnRmIHwgSW1wbFxuXG4gIGxldCBvZl9maWxlbmFtZSBmbiA6IHQgb3B0aW9uID1cbiAgICBpZiBTdGRsaWIuRmlsZW5hbWUuY2hlY2tfc3VmZml4IGZuIFwiLm1sXCIgdGhlbiBTb21lIEltcGxcbiAgICBlbHNlIGlmIFN0ZGxpYi5GaWxlbmFtZS5jaGVja19zdWZmaXggZm4gXCIubWxpXCIgdGhlbiBTb21lIEludGZcbiAgICBlbHNlIE5vbmVcblxuICBsZXQgZGVzY3JpYmUgPSBmdW5jdGlvbiBJbXBsIC0+IFwiaW1wbGVtZW50YXRpb25cIiB8IEludGYgLT4gXCJpbnRlcmZhY2VcIlxuICBsZXQgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFBvbHkuZXF1YWxcbmVuZFxuXG5tb2R1bGUgSW50Zl9vcl9pbXBsID0gc3RydWN0XG4gIHR5cGUgdCA9IEludGYgb2Ygc2lnbmF0dXJlIHwgSW1wbCBvZiBzdHJ1Y3R1cmVcblxuICBsZXQgbWFwIHQgKG1hcCA6IEFzdF90cmF2ZXJzZS5tYXApID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltcGwgeCAtPiBJbXBsIChtYXAjc3RydWN0dXJlIHgpXG4gICAgfCBJbnRmIHggLT4gSW50ZiAobWFwI3NpZ25hdHVyZSB4KVxuXG4gIGxldCBtYXBfd2l0aF9jb250ZXh0IHQgKG1hcCA6IF8gQXN0X3RyYXZlcnNlLm1hcF93aXRoX2NvbnRleHQpIGN0eCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBJbXBsIHggLT4gSW1wbCAobWFwI3N0cnVjdHVyZSBjdHggeClcbiAgICB8IEludGYgeCAtPiBJbnRmIChtYXAjc2lnbmF0dXJlIGN0eCB4KVxuXG4gIGxldCBraW5kIDogXyAtPiBLaW5kLnQgPSBmdW5jdGlvbiBJbnRmIF8gLT4gSW50ZiB8IEltcGwgXyAtPiBJbXBsXG5lbmRcblxubW9kdWxlIEFzdF9pbyA9IHN0cnVjdFxuICB0eXBlIGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sX3ZlcnNpb24pXG5cbiAgbGV0IGZhbGxfYmFja19pbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBDb21waWxlcl92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbilcbiAgKCogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHdoZW4gdGhlIGlucHV0IHZlcnNpb24gY2FuJ3QgYmUgZGV0ZXJtaW5lZCBkdWUgdG9cbiAgICAgIGxvYWRpbmcgb3IgcHJlcHJvY2Vzc2luZyBlcnJvcnMgKilcblxuICB0eXBlIHQgPSB7XG4gICAgaW5wdXRfbmFtZSA6IHN0cmluZztcbiAgICBpbnB1dF92ZXJzaW9uIDogaW5wdXRfdmVyc2lvbjtcbiAgICBhc3QgOiBJbnRmX29yX2ltcGwudDtcbiAgfVxuXG4gIHR5cGUgcmVhZF9lcnJvciA9XG4gICAgfCBOb3RfYV9iaW5hcnlfYXN0XG4gICAgfCBVbmtub3duX3ZlcnNpb24gb2Ygc3RyaW5nICogaW5wdXRfdmVyc2lvblxuICAgIHwgU291cmNlX3BhcnNlX2Vycm9yIG9mIExvY2F0aW9uLkVycm9yLnQgKiBpbnB1dF92ZXJzaW9uXG4gICAgfCBTeXN0ZW1fZXJyb3Igb2YgTG9jYXRpb24uRXJyb3IudCAqIGlucHV0X3ZlcnNpb25cblxuICB0eXBlIGlucHV0X3NvdXJjZSA9IFN0ZGluIHwgRmlsZSBvZiBzdHJpbmdcbiAgdHlwZSBpbnB1dF9raW5kID0gUG9zc2libHlfc291cmNlIG9mIEtpbmQudCAqIHN0cmluZyB8IE5lY2Vzc2FyaWx5X2JpbmFyeVxuXG4gIGxldCByZWFkX2Vycm9yX3RvX3N0cmluZyAoZXJyb3IgOiByZWFkX2Vycm9yKSA9XG4gICAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm90X2FfYmluYXJ5X2FzdCAtPiBcIkVycm9yOiBOb3QgYSBiaW5hcnkgYXN0XCJcbiAgICB8IFVua25vd25fdmVyc2lvbiAocywgXykgLT4gXCJFcnJvcjogVW5rbm93biB2ZXJzaW9uIFwiIF4gc1xuICAgIHwgU291cmNlX3BhcnNlX2Vycm9yIChsb2MsIF8pIC0+XG4gICAgICAgIFwiU291cmNlIHBhcnNlIGVycm9yOlwiIF4gTG9jYXRpb24uRXJyb3IubWVzc2FnZSBsb2NcbiAgICB8IFN5c3RlbV9lcnJvciAobG9jLCBfKSAtPiBcIlN5c3RlbSBlcnJvcjogXCIgXiBMb2NhdGlvbi5FcnJvci5tZXNzYWdlIGxvY1xuXG4gIGxldCBwYXJzZV9zb3VyY2VfY29kZSB+KGtpbmQgOiBLaW5kLnQpIH5pbnB1dF9uYW1lIH5wcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSBpY1xuICAgICAgPVxuICAgICgqIFRoZSBpbnB1dCB2ZXJzaW9uIGlzIGRldGVybWluZWQgYnkgdGhlIGZhY3QgdGhhdCB0aGUgaW5wdXQgd2lsbCBnZXQgcGFyc2VkIGJ5XG4gICAgICAgdGhlIGN1cnJlbnQgY29tcGlsZXIgUGFyc2UgbW9kdWxlICopXG4gICAgbGV0IGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIENvbXBpbGVyX3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSBpblxuICAgIHRyeVxuICAgICAgKCogVG8gdGVzdCBpZiBhIGZpbGUgaXMgYW4gQVNUIGZpbGUsIHdlIGhhdmUgdG8gcmVhZCB0aGUgZmlyc3QgZmV3IGJ5dGVzIG9mIHRoZVxuICAgICAgICAgZmlsZS4gSWYgaXQgaXMgbm90LCB3ZSBoYXZlIHRvIHBhcnNlIHRoZXNlIGJ5dGVzIGFuZCB0aGUgcmVzdCBvZiB0aGUgZmlsZSBhc1xuICAgICAgICAgc291cmNlIGNvZGUuXG4gICAgICAgICBUaGUgY29tcGlsZXIganVzdCBkb2VzIFtzZWVrX29uIDBdIGluIHRoaXMgY2FzZSwgaG93ZXZlciB0aGlzIGRvZXNuJ3Qgd29ya1xuICAgICAgICAgd2hlbiB0aGUgaW5wdXQgaXMgYSBwaXBlLlxuICAgICAgICAgV2hhdCB3ZSBkbyBpcyB3ZSBidWlsZCBhIHN0cmluZyBvZiB0aGUgd2hvbGUgc291cmNlLCBhcHBlbmQgdGhlIHByZWZpeFxuICAgICAgICAgYW5kIGJ1aWx0IGEgbGV4aW5nIGJ1ZmZlciBmcm9tIHRoYXQuXG4gICAgICAgICBXZSBoYXZlIHRvIHB1dCBhbGwgdGhlIHNvdXJjZSBpbnRvIHRoZSBsZXhpbmcgYnVmZmVyIGF0IG9uY2UgdGhpcyB3YXlcbiAgICAgICAgIGZvciBzb3VyY2UgcXVvdGF0aW9uIHRvIHdvcmsgaW4gZXJyb3IgbWVzc2FnZXMuXG4gICAgICAgICBTZWUgb2NhbWwjMTIyMzggYW5kIG9jYW1sL2RyaXZlci9wcGFyc2UubWwuICopXG4gICAgICBsZXQgYWxsX3NvdXJjZSA9IHByZWZpeF9yZWFkX2Zyb21fc291cmNlIF4gSW5fY2hhbm5lbC5pbnB1dF9hbGwgaWMgaW5cbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgYWxsX3NvdXJjZSBpblxuICAgICAgbGV4YnVmLmxleF9jdXJyX3AgPC0geyBsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGlucHV0X25hbWUgfTtcbiAgICAgIEFzdGxpYi5Mb2NhdGlvbi5zZXRfaW5wdXRfbGV4YnVmIChTb21lIGxleGJ1Zik7XG4gICAgICBTa2lwX2hhc2hfYmFuZy5za2lwX2hhc2hfYmFuZyBsZXhidWY7XG4gICAgICBsZXQgYXN0IDogSW50Zl9vcl9pbXBsLnQgPVxuICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgfCBJbnRmIC0+IEludGYgKFBhcnNlLmludGVyZmFjZSBsZXhidWYpXG4gICAgICAgIHwgSW1wbCAtPiBJbXBsIChQYXJzZS5pbXBsZW1lbnRhdGlvbiBsZXhidWYpXG4gICAgICBpblxuICAgICAgT2sgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfVxuICAgIHdpdGggZXhuIC0+IChcbiAgICAgIG1hdGNoIExvY2F0aW9uLkVycm9yLm9mX2V4biBleG4gd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIGV4blxuICAgICAgfCBTb21lIGVycm9yIC0+IEVycm9yIChTb3VyY2VfcGFyc2VfZXJyb3IgKGVycm9yLCBpbnB1dF92ZXJzaW9uKSkpXG5cbiAgbGV0IG1hZ2ljX2xlbmd0aCA9IFN0cmluZy5sZW5ndGggQXN0bGliLkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXJcblxuICBsZXQgcmVhZF9tYWdpYyBpYyA9XG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBtYWdpY19sZW5ndGggaW5cbiAgICBsZXQgbGVuID0gaW5wdXQgaWMgYnVmIDAgbWFnaWNfbGVuZ3RoIGluXG4gICAgbGV0IHMgPSBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiB+cG9zOjAgfmxlbiBpblxuICAgIGlmIGxlbiA9IG1hZ2ljX2xlbmd0aCB0aGVuIE9rIHMgZWxzZSBFcnJvciBzXG5cbiAgbGV0IHNldF9pbnB1dF9sZXhidWYgaW5wdXRfbmFtZSA9XG4gICAgbGV0IHNldF9pbnB1dF9sZXhidWYgaWMgPVxuICAgICAgKCogc2V0IGlucHV0IGxleGJ1ZiBmb3IgZXJyb3IgbWVzc2FnZXMuICopXG4gICAgICBsZXQgc291cmNlID0gSW5fY2hhbm5lbC5pbnB1dF9hbGwgaWMgaW5cbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgc291cmNlIGluXG4gICAgICBBc3RsaWIuTG9jYXRpb24uc2V0X2lucHV0X2xleGJ1ZiAoU29tZSBsZXhidWYpO1xuICAgICAgbGV4YnVmXG4gICAgaW5cbiAgICBtYXRjaCBJbl9jaGFubmVsLndpdGhfZmlsZSB+YmluYXJ5OnRydWUgaW5wdXRfbmFtZSB+ZjpzZXRfaW5wdXRfbGV4YnVmIHdpdGhcbiAgICB8IChfIDogTGV4aW5nLmxleGJ1ZikgLT4gKClcbiAgICB8IGV4Y2VwdGlvbiBTeXNfZXJyb3IgXyAtPiAoKVxuXG4gIGxldCBmcm9tX2NoYW5uZWwgY2ggfmlucHV0X2tpbmQgPVxuICAgIGxldCBoYW5kbGVfbm9uX2JpbmFyeSBwcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSA9XG4gICAgICBtYXRjaCBpbnB1dF9raW5kIHdpdGhcbiAgICAgIHwgUG9zc2libHlfc291cmNlIChraW5kLCBpbnB1dF9uYW1lKSAtPlxuICAgICAgICAgIHBhcnNlX3NvdXJjZV9jb2RlIH5raW5kIH5pbnB1dF9uYW1lIH5wcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSBjaFxuICAgICAgfCBOZWNlc3NhcmlseV9iaW5hcnkgLT4gRXJyb3IgTm90X2FfYmluYXJ5X2FzdFxuICAgIGluXG4gICAgKCogTWFyc2hhbGxlZCBBU1QgbXVzdCBiZSByZWFkIGluIGJpbmFyeSBtb2RlLiBFdmVuIHRob3VnaCB3ZSBkb24ndCBrbm93XG4gICAgICAgYmVmb3JlIHJlYWRpbmcgdGhlIG1hZ2ljIG51bWJlciB3aGVuIHRoZSBmaWxlIGhhcyBhIG1hcnNoYWxsZWQgQVNULFxuICAgICAgIGl0IGlzIHNhZmUgdG8gcmVhZCBzb3VyY2UgZmlsZXMgaW4gYmluYXJ5IG1vZGUuICopXG4gICAgc2V0X2JpbmFyeV9tb2RlX2luIGNoIHRydWU7XG4gICAgbWF0Y2ggcmVhZF9tYWdpYyBjaCB3aXRoXG4gICAgfCBFcnJvciBzIC0+IGhhbmRsZV9ub25fYmluYXJ5IHNcbiAgICB8IE9rIHMgLT4gKFxuICAgICAgICBtYXRjaCBGaW5kX3ZlcnNpb24uZnJvbV9tYWdpYyBzIHdpdGhcbiAgICAgICAgfCBJbnRmIChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIC0+XG4gICAgICAgICAgICBsZXQgaW5wdXRfbmFtZSA6IHN0cmluZyA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgYXN0ID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBtb2R1bGUgSW5wdXRfdG9fcHB4bGliID0gQ29udmVydCAoSW5wdXRfdmVyc2lvbikgKEpzKSBpblxuICAgICAgICAgICAgc2V0X2lucHV0X2xleGJ1ZiBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgbGV0IGFzdCA9IEludGZfb3JfaW1wbC5JbnRmIChJbnB1dF90b19wcHhsaWIuY29weV9zaWduYXR1cmUgYXN0KSBpblxuICAgICAgICAgICAgT2tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlucHV0X25hbWU7XG4gICAgICAgICAgICAgICAgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pO1xuICAgICAgICAgICAgICAgIGFzdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICB8IEltcGwgKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgLT5cbiAgICAgICAgICAgIGxldCBpbnB1dF9uYW1lIDogc3RyaW5nID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBhc3QgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZSBJbnB1dF90b19wcHhsaWIgPSBDb252ZXJ0IChJbnB1dF92ZXJzaW9uKSAoSnMpIGluXG4gICAgICAgICAgICBzZXRfaW5wdXRfbGV4YnVmIGlucHV0X25hbWU7XG4gICAgICAgICAgICBsZXQgYXN0ID0gSW50Zl9vcl9pbXBsLkltcGwgKElucHV0X3RvX3BweGxpYi5jb3B5X3N0cnVjdHVyZSBhc3QpIGluXG4gICAgICAgICAgICBPa1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgICAgICBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgYXN0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgIHwgVW5rbm93biAtPlxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgU3RyaW5nLmVxdWFsXG4gICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIEFzdGxpYi5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICAgIHx8IFN0cmluZy5lcXVhbFxuICAgICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBBc3RsaWIuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlciB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgdGhlbiBFcnJvciAoVW5rbm93bl92ZXJzaW9uIChzLCBmYWxsX2JhY2tfaW5wdXRfdmVyc2lvbikpXG4gICAgICAgICAgICBlbHNlIGhhbmRsZV9ub25fYmluYXJ5IHMpXG5cbiAgbGV0IHJlYWQgaW5wdXRfc291cmNlIH5pbnB1dF9raW5kID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIGlucHV0X3NvdXJjZSB3aXRoXG4gICAgICB8IFN0ZGluIC0+XG4gICAgICAgICAgc2V0X2JpbmFyeV9tb2RlX2luIHN0ZGluIHRydWU7XG4gICAgICAgICAgZnJvbV9jaGFubmVsIHN0ZGluIH5pbnB1dF9raW5kXG4gICAgICB8IEZpbGUgZm4gLT4gSW5fY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmY6KGZyb21fY2hhbm5lbCB+aW5wdXRfa2luZClcbiAgICB3aXRoIGV4biAtPiAoXG4gICAgICBtYXRjaCBMb2NhdGlvbi5FcnJvci5vZl9leG4gZXhuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBleG5cbiAgICAgIHwgU29tZSBlcnJvciAtPiBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24pKSlcblxuICBsZXQgd3JpdGUgb2MgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uKTsgYXN0IH1cbiAgICAgIH5hZGRfcHB4X2NvbnRleHQgPVxuICAgIGxldCBtb2R1bGUgUHB4bGliX3RvX2lucHV0ID0gQ29udmVydCAoSnMpIChJbnB1dF92ZXJzaW9uKSBpblxuICAgIGxldCBtb2R1bGUgT2NhbWxfdG9faW5wdXQgPSBDb252ZXJ0IChDb21waWxlcl92ZXJzaW9uKSAoSW5wdXRfdmVyc2lvbikgaW5cbiAgICBtYXRjaCBhc3Qgd2l0aFxuICAgIHwgSW50ZiBzZyAtPlxuICAgICAgICBsZXQgc2cgPVxuICAgICAgICAgIGlmIGFkZF9wcHhfY29udGV4dCB0aGVuXG4gICAgICAgICAgICBTZWxlY3RlZF9hc3QuVG9fb2NhbWwuY29weV9zaWduYXR1cmUgc2dcbiAgICAgICAgICAgIHw+IEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3NpZyB+dG9vbF9uYW1lOlwicHB4X2RyaXZlclwiXG4gICAgICAgICAgICB8PiBPY2FtbF90b19pbnB1dC5jb3B5X3NpZ25hdHVyZVxuICAgICAgICAgIGVsc2UgUHB4bGliX3RvX2lucHV0LmNvcHlfc2lnbmF0dXJlIHNnXG4gICAgICAgIGluXG4gICAgICAgIG91dHB1dF9zdHJpbmcgb2MgSW5wdXRfdmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlcjtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIGlucHV0X25hbWU7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBzZ1xuICAgIHwgSW1wbCBzdCAtPlxuICAgICAgICBsZXQgc3QgPVxuICAgICAgICAgIGlmIGFkZF9wcHhfY29udGV4dCB0aGVuXG4gICAgICAgICAgICBTZWxlY3RlZF9hc3QuVG9fb2NhbWwuY29weV9zdHJ1Y3R1cmUgc3RcbiAgICAgICAgICAgIHw+IEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3N0ciB+dG9vbF9uYW1lOlwicHB4X2RyaXZlclwiXG4gICAgICAgICAgICB8PiBPY2FtbF90b19pbnB1dC5jb3B5X3N0cnVjdHVyZVxuICAgICAgICAgIGVsc2UgUHB4bGliX3RvX2lucHV0LmNvcHlfc3RydWN0dXJlIHN0XG4gICAgICAgIGluXG4gICAgICAgIG91dHB1dF9zdHJpbmcgb2MgSW5wdXRfdmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlcjtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIGlucHV0X25hbWU7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBzdFxuXG4gIG1vZHVsZSBSZWFkX2JpbiA9IHN0cnVjdFxuICAgIHR5cGUgYXN0ID0gSW50ZiBvZiBzaWduYXR1cmUgfCBJbXBsIG9mIHN0cnVjdHVyZVxuICAgIHR5cGUgdCA9IHsgYXN0IDogYXN0OyBpbnB1dF9uYW1lIDogc3RyaW5nIH1cblxuICAgIGxldCByZWFkX2JpbmFyeSBmbiA9XG4gICAgICBtYXRjaFxuICAgICAgICBJbl9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnJvbV9jaGFubmVsIH5pbnB1dF9raW5kOk5lY2Vzc2FyaWx5X2JpbmFyeSlcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgeyBhc3Q7IGlucHV0X25hbWU7IF8gfSAtPlxuICAgICAgICAgIGxldCBhc3QgPVxuICAgICAgICAgICAgbWF0Y2ggYXN0IHdpdGhcbiAgICAgICAgICAgIHwgSW1wbCBzdHJ1Y3R1cmUgLT4gSW1wbCBzdHJ1Y3R1cmVcbiAgICAgICAgICAgIHwgSW50ZiBzaWduYXR1cmUgLT4gSW50ZiBzaWduYXR1cmVcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIHsgYXN0OyBpbnB1dF9uYW1lIH1cbiAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciAocmVhZF9lcnJvcl90b19zdHJpbmcgZSlcblxuICAgIGxldCBnZXRfYXN0IHQgPSB0LmFzdFxuICAgIGxldCBnZXRfaW5wdXRfbmFtZSB0ID0gdC5pbnB1dF9uYW1lXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTeXN0ZW0gPSBzdHJ1Y3RcbiAgbGV0IHJ1bl9wcmVwcm9jZXNzb3IgfnBwIH5pbnB1dCB+b3V0cHV0ID1cbiAgICBsZXQgY29tbWFuZCA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzID4gJXNcIiBwcFxuICAgICAgICAoaWYgU3RyaW5nLmVxdWFsIGlucHV0IFwiLVwiIHRoZW4gXCJcIiBlbHNlIFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSBpbnB1dClcbiAgICAgICAgKFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSBvdXRwdXQpXG4gICAgaW5cbiAgICBpZiBTdGRsaWIuU3lzLmNvbW1hbmQgY29tbWFuZCA9IDAgdGhlbiBPayAoKVxuICAgIGVsc2UgRXJyb3IgKGNvbW1hbmQsIEFzdF9pby5mYWxsX2JhY2tfaW5wdXRfdmVyc2lvbilcbmVuZFxuIiwiKCokIG9wZW4gUHB4bGliX2NpbmFwc19oZWxwZXJzICQqKVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRm9ybWF0ID0gU3RkbGliLkZvcm1hdFxubW9kdWxlIEZpbGVuYW1lID0gU3RkbGliLkZpbGVuYW1lXG5cbigqIFRPRE86IG1ha2UgdGhlIFwiZGVyaXZpbmcuXCIgZGVwZW5kIG9uIHRoZSBtYXRjaGluZyBhdHRyaWJ1dGUgbmFtZS4gKilcbmxldCBlbmRfbWFya2VyX3NpZyA9XG4gIEF0dHJpYnV0ZS5GbG9hdGluZy5kZWNsYXJlIFwiZGVyaXZpbmcuZW5kXCIgU2lnbmF0dXJlX2l0ZW1cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGVuZF9tYXJrZXJfc3RyID1cbiAgQXR0cmlidXRlLkZsb2F0aW5nLmRlY2xhcmUgXCJkZXJpdmluZy5lbmRcIiBTdHJ1Y3R1cmVfaXRlbVxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5tb2R1bGUgdHlwZSBUMSA9IHNpZ1xuICB0eXBlICdhIHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZ2V0X2xvYyA6IHQgLT4gTG9jYXRpb24udFxuICB2YWwgZW5kX21hcmtlciA6ICh0LCB1bml0KSBBdHRyaWJ1dGUuRmxvYXRpbmcudFxuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgOiBzaWdcbiAgICB2YWwgYXBwbHkgOlxuICAgICAgPCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIFQudFxuICAgICAgOyBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIFQudFxuICAgICAgOyAuLiA+IC0+XG4gICAgICB0IFQudFxuICBlbmRcblxuICB2YWwgcGFyc2UgOiBMZXhpbmcubGV4YnVmIC0+IHQgbGlzdFxuICB2YWwgcHAgOiBGb3JtYXQuZm9ybWF0dGVyIC0+IHQgLT4gdW5pdFxuICB2YWwgdG9fc2V4cCA6IHQgLT4gU2V4cC50XG5lbmQpID1cbnN0cnVjdFxuICBsZXQgZXh0cmFjdF9wcmVmaXggfnBvcyBsID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICAgIHsgTG9jYXRpb24ubG9jX3N0YXJ0ID0gcG9zOyBsb2NfZW5kID0gcG9zOyBsb2NfZ2hvc3QgPSBmYWxzZSB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJwcHhsaWI6IFtAQEBAQEAlc10gYXR0cmlidXRlIG1pc3NpbmdcIlxuICAgICAgICAgICAgICAgIChBdHRyaWJ1dGUuRmxvYXRpbmcubmFtZSBNLmVuZF9tYXJrZXIpLFxuICAgICAgICAgICAgICBbXSApXG4gICAgICB8IHggOjogbCAtPiAoXG4gICAgICAgICAgbWF0Y2ggQXR0cmlidXRlLkZsb2F0aW5nLmNvbnZlcnRfcmVzIFsgTS5lbmRfbWFya2VyIF0geCB3aXRoXG4gICAgICAgICAgfCBPayBOb25lIC0+IGxvb3AgKHggOjogYWNjKSBsXG4gICAgICAgICAgfCBPayAoU29tZSAoKSkgLT4gT2sgKExpc3QucmV2IGFjYywgKE0uZ2V0X2xvYyB4KS5sb2Nfc3RhcnQpXG4gICAgICAgICAgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBGYWlsdXJlIF8gLT4gbG9vcCAoeCA6OiBhY2MpIGwpXG4gICAgaW5cbiAgICBsb29wIFtdIGxcblxuICBsZXQgcmVtb3ZlX2xvYyA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXBcbiAgICAgIG1ldGhvZCEgbG9jYXRpb24gXyA9IExvY2F0aW9uLm5vbmVcbiAgICAgIG1ldGhvZCEgbG9jYXRpb25fc3RhY2sgXyA9IFtdXG4gICAgZW5kXG5cbiAgbW9kdWxlIE1fbWFwID0gTS5UcmFuc2Zvcm0gKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIC0+ICdhXG4gIGVuZClcblxuICBsZXQgcmVtb3ZlX2xvYyB4ID0gTV9tYXAuYXBwbHkgcmVtb3ZlX2xvYyB4XG4gIGxldCByZWMgbGFzdCBwcmV2ID0gZnVuY3Rpb24gW10gLT4gcHJldiB8IHggOjogbCAtPiBsYXN0IHggbFxuXG4gIGxldCBkaWZmX2FzdHMgfmdlbmVyYXRlZCB+cm91bmRfdHJpcCA9XG4gICAgbGV0IHdpdGhfdGVtcF9maWxlIGYgPVxuICAgICAgRXhuLnByb3RlY3R4XG4gICAgICAgIChGaWxlbmFtZS50ZW1wX2ZpbGUgXCJwcHhsaWJcIiBcIlwiKVxuICAgICAgICB+ZmluYWxseTpTdGRsaWIuU3lzLnJlbW92ZSB+ZlxuICAgIGluXG4gICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBmbjEgLT5cbiAgICAgICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBmbjIgLT5cbiAgICAgICAgICAgIHdpdGhfdGVtcF9maWxlIChmdW4gb3V0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGR1bXAgZm4gYXN0ID1cbiAgICAgICAgICAgICAgICAgIE91dF9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHBwZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICBTZXhwLnBwX2h1bSBwcGYgKE0udG9fc2V4cCBhc3QpO1xuICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9mbHVzaCBwcGYgKCkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBkdW1wIGZuMSBnZW5lcmF0ZWQ7XG4gICAgICAgICAgICAgICAgZHVtcCBmbjIgcm91bmRfdHJpcDtcbiAgICAgICAgICAgICAgICBsZXQgY21kID1cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIFwicGF0ZGlmZiAtYXNjaWkgLWFsdC1vbGQgZ2VuZXJhdGVkIC1hbHQtbmV3IFxcXG4gICAgICAgICAgICAgICAgICAgICAnZ2VuZXJhdGVkLT5wcmludGVkLT5wYXJzZWQnICVzICVzICY+ICVzXCJcbiAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIGZuMSkgKEZpbGVuYW1lLnF1b3RlIGZuMilcbiAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIG91dClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBvayA9XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuU3lzLmNvbW1hbmQgY21kID0gMVxuICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgIGxldCBjbWQgPVxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIFwiZGlmZiAtLWxhYmVsIGdlbmVyYXRlZCAtLWxhYmVsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICdnZW5lcmF0ZWQtPnByaW50ZWQtPnBhcnNlZCcgJXMgJXMgJj4gJXNcIlxuICAgICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBmbjEpIChGaWxlbmFtZS5xdW90ZSBmbjIpXG4gICAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIG91dClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuU3lzLmNvbW1hbmQgY21kID0gMVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgaWYgb2sgdGhlbiBJbl9jaGFubmVsLnJlYWRfYWxsIG91dFxuICAgICAgICAgICAgICAgIGVsc2UgXCI8bm8gZGlmZmVyZW5jZXMgcHJvZHVjZWQgYnkgZGlmZj5cIikpKVxuXG4gIGxldCBwYXJzZV9zdHJpbmcgcyA9XG4gICAgbWF0Y2ggTS5wYXJzZSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IHJlYyBtYXRjaF9sb29wIH5lbmRfcG9zIH5taXNtYXRjaF9oYW5kbGVyIH5leHBlY3RlZCB+c291cmNlID1cbiAgICBtYXRjaCAoZXhwZWN0ZWQsIHNvdXJjZSkgd2l0aFxuICAgIHwgW10sIFtdIC0+ICgpXG4gICAgfCBbXSwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgIHsgKE0uZ2V0X2xvYyB4KSB3aXRoIGxvY19lbmQgPSAoTS5nZXRfbG9jIChsYXN0IHggbCkpLmxvY19lbmQgfVxuICAgICAgICBpblxuICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBbXVxuICAgIHwgXywgW10gLT5cbiAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgeyBMb2NhdGlvbi5sb2NfZ2hvc3QgPSBmYWxzZTsgbG9jX3N0YXJ0ID0gZW5kX3BvczsgbG9jX2VuZCA9IGVuZF9wb3MgfVxuICAgICAgICBpblxuICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBleHBlY3RlZFxuICAgIHwgeCA6OiBleHBlY3RlZCwgeSA6OiBzb3VyY2UgLT5cbiAgICAgICAgbGV0IGxvYyA9IE0uZ2V0X2xvYyB5IGluXG4gICAgICAgIGxldCB4ID0gcmVtb3ZlX2xvYyB4IGluXG4gICAgICAgIGxldCB5ID0gcmVtb3ZlX2xvYyB5IGluXG4gICAgICAgIGlmIFBvbHkuKCA8PiApIHggeSB0aGVuIChcbiAgICAgICAgICBsZXQgcm91bmRfdHJpcCA9XG4gICAgICAgICAgICByZW1vdmVfbG9jIChwYXJzZV9zdHJpbmcgKEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiBNLnBwIHgpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgUG9seS4oIDw+ICkgeCByb3VuZF90cmlwIHRoZW5cbiAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgICAgICAgICAgIFwicHB4bGliOiB0aGUgY29ycmVjdGVkIGNvZGUgZG9lc24ndCByb3VuZC10cmlwLlxcblxcXG4gICAgICAgICAgICAgICBUaGlzIGlzIHByb2JhYmx5IGEgYnVnIGluIHRoZSBPQ2FtbCBwcmludGVyOlxcblxcXG4gICAgICAgICAgICAgICAlc1wiXG4gICAgICAgICAgICAgIChkaWZmX2FzdHMgfmdlbmVyYXRlZDp4IH5yb3VuZF90cmlwKTtcbiAgICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBbIHggXSk7XG4gICAgICAgIG1hdGNoX2xvb3AgfmVuZF9wb3Mgfm1pc21hdGNoX2hhbmRsZXIgfmV4cGVjdGVkIH5zb3VyY2VcblxuICBsZXQgZG9fbWF0Y2ggfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgc291cmNlID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBleHRyYWN0X3ByZWZpeCB+cG9zIHNvdXJjZSA+PnwgZnVuIChzb3VyY2UsIGVuZF9wb3MpIC0+XG4gICAgbWF0Y2hfbG9vcCB+ZW5kX3BvcyB+bWlzbWF0Y2hfaGFuZGxlciB+ZXhwZWN0ZWQgfnNvdXJjZVxuZW5kXG5cbigqJCopXG5tb2R1bGUgU3RyID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHN0cnVjdHVyZV9pdGVtXG5cbiAgbGV0IGdldF9sb2MgeCA9IHgucHN0cl9sb2NcbiAgbGV0IGVuZF9tYXJrZXIgPSBlbmRfbWFya2VyX3N0clxuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgPSBzdHJ1Y3RcbiAgICBsZXQgYXBwbHkgbyA9IG8jc3RydWN0dXJlX2l0ZW1cbiAgZW5kXG5cbiAgbGV0IHBhcnNlID0gUGFyc2UuaW1wbGVtZW50YXRpb25cbiAgbGV0IHBwID0gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gIGxldCB0b19zZXhwID0gQXN0X3RyYXZlcnNlLnNleHBfb2Yjc3RydWN0dXJlX2l0ZW1cbmVuZClcblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxubW9kdWxlIFNpZyA9IE1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzaWduYXR1cmVfaXRlbVxuXG4gIGxldCBnZXRfbG9jIHggPSB4LnBzaWdfbG9jXG4gIGxldCBlbmRfbWFya2VyID0gZW5kX21hcmtlcl9zaWdcblxuICBtb2R1bGUgVHJhbnNmb3JtIChUIDogVDEpID0gc3RydWN0XG4gICAgbGV0IGFwcGx5IG8gPSBvI3NpZ25hdHVyZV9pdGVtXG4gIGVuZFxuXG4gIGxldCBwYXJzZSA9IFBhcnNlLmludGVyZmFjZVxuICBsZXQgcHAgPSBQcHJpbnRhc3Quc2lnbmF0dXJlX2l0ZW1cbiAgbGV0IHRvX3NleHAgPSBBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzaWduYXR1cmVfaXRlbVxuZW5kKVxuXG4oKiQqKVxuXG5sZXQgbWF0Y2hfc3RydWN0dXJlX3JlcyA9IFN0ci5kb19tYXRjaFxuXG5sZXQgbWF0Y2hfc3RydWN0dXJlIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGwgPVxuICBtYXRjaF9zdHJ1Y3R1cmVfcmVzIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGxcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IG1hdGNoX3NpZ25hdHVyZV9yZXMgPSBTaWcuZG9fbWF0Y2hcblxubGV0IG1hdGNoX3NpZ25hdHVyZSB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsID1cbiAgbWF0Y2hfc2lnbmF0dXJlX3JlcyB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsXG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQ29tbW9uXG5cbnR5cGUgKF8sIF8pIGVxdWFsaXR5ID0gRXEgOiAoJ2EsICdhKSBlcXVhbGl0eSB8IE5lIDogKF8sIF8pIGVxdWFsaXR5XG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBDbGFzc19leHByIDogY2xhc3NfZXhwciB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IENsYXNzX3R5cGUgOiBjbGFzc190eXBlIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcbiAgICB8IENvcmVfdHlwZSA6IGNvcmVfdHlwZSB0XG4gICAgfCBFeHByZXNzaW9uIDogZXhwcmVzc2lvbiB0XG4gICAgfCBNb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIHRcbiAgICB8IE1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgdFxuICAgIHwgUGF0dGVybiA6IHBhdHRlcm4gdFxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSB0XG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFBweF9pbXBvcnQgOiB0eXBlX2RlY2xhcmF0aW9uIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiBfIHQgLT4gcGFja2VkXG5cbiAgbGV0IGNsYXNzX2V4cHIgPSBDbGFzc19leHByXG4gIGxldCBjbGFzc19maWVsZCA9IENsYXNzX2ZpZWxkXG4gIGxldCBjbGFzc190eXBlID0gQ2xhc3NfdHlwZVxuICBsZXQgY2xhc3NfdHlwZV9maWVsZCA9IENsYXNzX3R5cGVfZmllbGRcbiAgbGV0IGNvcmVfdHlwZSA9IENvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiA9IEV4cHJlc3Npb25cbiAgbGV0IG1vZHVsZV9leHByID0gTW9kdWxlX2V4cHJcbiAgbGV0IG1vZHVsZV90eXBlID0gTW9kdWxlX3R5cGVcbiAgbGV0IHBhdHRlcm4gPSBQYXR0ZXJuXG4gIGxldCBzaWduYXR1cmVfaXRlbSA9IFNpZ25hdHVyZV9pdGVtXG4gIGxldCBzdHJ1Y3R1cmVfaXRlbSA9IFN0cnVjdHVyZV9pdGVtXG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgQ2xhc3NfZXhwciAtPiBcImNsYXNzIGV4cHJlc3Npb25cIlxuICAgIHwgQ2xhc3NfZmllbGQgLT4gXCJjbGFzcyBmaWVsZFwiXG4gICAgfCBDbGFzc190eXBlIC0+IFwiY2xhc3MgdHlwZVwiXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IFwiY2xhc3MgdHlwZSBmaWVsZFwiXG4gICAgfCBDb3JlX3R5cGUgLT4gXCJjb3JlIHR5cGVcIlxuICAgIHwgRXhwcmVzc2lvbiAtPiBcImV4cHJlc3Npb25cIlxuICAgIHwgTW9kdWxlX2V4cHIgLT4gXCJtb2R1bGUgZXhwcmVzc2lvblwiXG4gICAgfCBNb2R1bGVfdHlwZSAtPiBcIm1vZHVsZSB0eXBlXCJcbiAgICB8IFBhdHRlcm4gLT4gXCJwYXR0ZXJuXCJcbiAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IFwic2lnbmF0dXJlIGl0ZW1cIlxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gXCJzdHJ1Y3R1cmUgaXRlbVwiXG4gICAgfCBQcHhfaW1wb3J0IC0+IFwidHlwZSBkZWNsYXJhdGlvblwiXG5cbiAgbGV0IGVxIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIGVxdWFsaXR5ID1cbiAgIGZ1biBhIGIgLT5cbiAgICBtYXRjaCAoYSwgYikgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciwgQ2xhc3NfZXhwciAtPiBFcVxuICAgIHwgQ2xhc3NfZmllbGQsIENsYXNzX2ZpZWxkIC0+IEVxXG4gICAgfCBDbGFzc190eXBlLCBDbGFzc190eXBlIC0+IEVxXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkLCBDbGFzc190eXBlX2ZpZWxkIC0+IEVxXG4gICAgfCBDb3JlX3R5cGUsIENvcmVfdHlwZSAtPiBFcVxuICAgIHwgRXhwcmVzc2lvbiwgRXhwcmVzc2lvbiAtPiBFcVxuICAgIHwgTW9kdWxlX2V4cHIsIE1vZHVsZV9leHByIC0+IEVxXG4gICAgfCBNb2R1bGVfdHlwZSwgTW9kdWxlX3R5cGUgLT4gRXFcbiAgICB8IFBhdHRlcm4sIFBhdHRlcm4gLT4gRXFcbiAgICB8IFNpZ25hdHVyZV9pdGVtLCBTaWduYXR1cmVfaXRlbSAtPiBFcVxuICAgIHwgU3RydWN0dXJlX2l0ZW0sIFN0cnVjdHVyZV9pdGVtIC0+IEVxXG4gICAgfCBQcHhfaW1wb3J0LCBQcHhfaW1wb3J0IC0+IEVxXG4gICAgfCBfIC0+XG4gICAgICAgIGFzc2VydCAoUG9seS4oIDw+ICkgKFQgYSkgKFQgYikpO1xuICAgICAgICBOZVxuXG4gIGxldCBnZXRfcHB4X2ltcG9ydF9leHRlbnNpb24gdHlwZV9kZWNsID1cbiAgICBtYXRjaCB0eXBlX2RlY2wgd2l0aFxuICAgIHwgeyBwdHlwZV9tYW5pZmVzdCA9IFNvbWUgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiAobmFtZSwgXyk7IF8gfTsgXyB9XG4gICAgICAtPlxuICAgICAgICBsZXQgdmlydHVhbF9wYXlsb2FkID1cbiAgICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfdHlwZSB+bG9jOnR5cGVfZGVjbC5wdHlwZV9sb2MgUmVjdXJzaXZlXG4gICAgICAgICAgICBbIHR5cGVfZGVjbCBdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhdHRyID0gW10gaW5cbiAgICAgICAgU29tZSAoKG5hbWUsIFBTdHIgWyB2aXJ0dWFsX3BheWxvYWQgXSksIGF0dHIpXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgZ2V0X2V4dGVuc2lvbiA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gKGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMpIG9wdGlvbiA9XG4gICBmdW4gdCB4IC0+XG4gICAgbWF0Y2ggKHQsIHgpIHdpdGhcbiAgICB8IENsYXNzX2V4cHIsIHsgcGNsX2Rlc2MgPSBQY2xfZXh0ZW5zaW9uIGU7IHBjbF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDbGFzc19maWVsZCwgeyBwY2ZfZGVzYyA9IFBjZl9leHRlbnNpb24gZTsgcGNmX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX3R5cGUsIHsgcGN0eV9kZXNjID0gUGN0eV9leHRlbnNpb24gZTsgcGN0eV9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkLCB7IHBjdGZfZGVzYyA9IFBjdGZfZXh0ZW5zaW9uIGU7IHBjdGZfYXR0cmlidXRlcyA9IGE7IF8gfVxuICAgICAgLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENvcmVfdHlwZSwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBlOyBwdHlwX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IEV4cHJlc3Npb24sIHsgcGV4cF9kZXNjID0gUGV4cF9leHRlbnNpb24gZTsgcGV4cF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBNb2R1bGVfZXhwciwgeyBwbW9kX2Rlc2MgPSBQbW9kX2V4dGVuc2lvbiBlOyBwbW9kX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IE1vZHVsZV90eXBlLCB7IHBtdHlfZGVzYyA9IFBtdHlfZXh0ZW5zaW9uIGU7IHBtdHlfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgUGF0dGVybiwgeyBwcGF0X2Rlc2MgPSBQcGF0X2V4dGVuc2lvbiBlOyBwcGF0X2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IFNpZ25hdHVyZV9pdGVtLCB7IHBzaWdfZGVzYyA9IFBzaWdfZXh0ZW5zaW9uIChlLCBhKTsgXyB9IC0+IFNvbWUgKGUsIGEpXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSwgeyBwc3RyX2Rlc2MgPSBQc3RyX2V4dGVuc2lvbiAoZSwgYSk7IF8gfSAtPiBTb21lIChlLCBhKVxuICAgIHwgUHB4X2ltcG9ydCwgdHlwZV9kZWNsIC0+IGdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbiB0eXBlX2RlY2xcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBtZXJnZV9hdHRyaWJ1dGVzX3JlcyA6XG4gICAgICB0eXBlIGEuXG4gICAgICBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzIC0+IChhLCBMb2NhdGlvbi5FcnJvci50IE5vbkVtcHR5TGlzdC50KSByZXN1bHQgPVxuICAgZnVuIHQgeCBhdHRycyAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciAtPiBPayB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IHgucGNsX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc19maWVsZCAtPiBPayB7IHggd2l0aCBwY2ZfYXR0cmlidXRlcyA9IHgucGNmX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlIC0+IE9rIHsgeCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IHgucGN0eV9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPlxuICAgICAgICBPayB7IHggd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSB4LnBjdGZfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENvcmVfdHlwZSAtPiBPayB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSB4LnB0eXBfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IEV4cHJlc3Npb24gLT4gT2sgeyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0geC5wZXhwX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBNb2R1bGVfZXhwciAtPiBPayB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSB4LnBtb2RfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IE1vZHVsZV90eXBlIC0+IE9rIHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IHgucG10eV9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgUGF0dGVybiAtPiBPayB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSB4LnBwYXRfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IChcbiAgICAgICAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgYXR0cnMgd2l0aCBbXSAtPiBPayB4IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKSlcbiAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IChcbiAgICAgICAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgYXR0cnMgd2l0aCBbXSAtPiBPayB4IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKSlcbiAgICB8IFBweF9pbXBvcnQgLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuXG4gIGxldCBtZXJnZV9hdHRyaWJ1dGVzIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzIC0+IGEgPVxuICAgZnVuIHQgeCBhdHRycyAtPlxuICAgIG1lcmdlX2F0dHJpYnV0ZXNfcmVzIHQgeCBhdHRyc1xuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxubGV0IHJlZ2lzdHJhciA9XG4gIE5hbWUuUmVnaXN0cmFyLmNyZWF0ZSB+a2luZDpcImV4dGVuc2lvblwiIH5jdXJyZW50X2ZpbGU6X19GSUxFX19cbiAgICB+c3RyaW5nX29mX2NvbnRleHQ6KGZ1biAoQ29udGV4dC5UIGN0eCkgLT4gU29tZSAoQ29udGV4dC5kZXNjIGN0eCkpXG5cbm1vZHVsZSBNYWtlIChDYWxsYmFjayA6IHNpZ1xuICB0eXBlICdhIHRcbmVuZCkgPVxuc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgcGF5bG9hZF9wYXJzZXIgPVxuICAgIHwgUGF5bG9hZF9wYXJzZXIgOlxuICAgICAgICAoJ2EsICdiLCAnYykgQXN0X3BhdHRlcm4udCAqICdiIENhbGxiYWNrLnRcbiAgICAgICAgLT4gKCdhLCAnYykgcGF5bG9hZF9wYXJzZXJcblxuICB0eXBlICgnY29udGV4dCwgJ3BheWxvYWQpIHQgPSB7XG4gICAgbmFtZSA6IE5hbWUuUGF0dGVybi50O1xuICAgIGNvbnRleHQgOiAnY29udGV4dCBDb250ZXh0LnQ7XG4gICAgcGF5bG9hZCA6IChwYXlsb2FkLCAncGF5bG9hZCkgcGF5bG9hZF9wYXJzZXI7XG4gICAgd2l0aF9hcmcgOiBib29sO1xuICB9XG5cbiAgbGV0IGRlY2xhcmUgOlxuICAgICAgdHlwZSBhLlxuICAgICAgd2l0aF9hcmc6Ym9vbCAtPlxuICAgICAgc3RyaW5nIC0+XG4gICAgICBhIENvbnRleHQudCAtPlxuICAgICAgKHBheWxvYWQsICdiLCAncGF5bG9hZCkgQXN0X3BhdHRlcm4udCAtPlxuICAgICAgJ2IgQ2FsbGJhY2sudCAtPlxuICAgICAgKGEsICdwYXlsb2FkKSB0ID1cbiAgIGZ1biB+d2l0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayAtPlxuICAgICgqIENoZWNrIHRoYXQgdGhlcmUgaXMgbm8gY29sbGlzaW9ucyBiZXR3ZWVuIHBweF9pbXBvcnQgYW5kIGNvcmVfdHlwZVxuICAgICAgIGV4dGVuc2lvbnMgKilcbiAgICAobWF0Y2ggY29udGV4dCB3aXRoXG4gICAgfCBDb250ZXh0LlBweF9pbXBvcnQgLT5cbiAgICAgICAgTmFtZS5SZWdpc3RyYXIuY2hlY2tfY29sbGlzaW9ucyByZWdpc3RyYXIgKENvbnRleHQuVCBDb3JlX3R5cGUpIG5hbWVcbiAgICB8IENvbnRleHQuQ29yZV90eXBlIC0+XG4gICAgICAgIE5hbWUuUmVnaXN0cmFyLmNoZWNrX2NvbGxpc2lvbnMgcmVnaXN0cmFyIChDb250ZXh0LlQgUHB4X2ltcG9ydCkgbmFtZVxuICAgIHwgXyAtPiAoKSk7XG4gICAgTmFtZS5SZWdpc3RyYXIucmVnaXN0ZXIgfmtpbmQ6YEV4dGVuc2lvbiByZWdpc3RyYXIgKENvbnRleHQuVCBjb250ZXh0KSBuYW1lO1xuICAgIHtcbiAgICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgICAgY29udGV4dDtcbiAgICAgIHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgayk7XG4gICAgICB3aXRoX2FyZztcbiAgICB9XG5cbiAgbGV0IGZpbmQgdHMgKGV4dCA6IGV4dGVuc2lvbikgPVxuICAgIGxldCB7IHR4dCA9IG5hbWU7IGxvYyB9ID0gZnN0IGV4dCBpblxuICAgIGxldCBuYW1lLCBhcmcgPSBOYW1lLnNwbGl0X3BhdGggbmFtZSBpblxuICAgIG1hdGNoIExpc3QuZmlsdGVyIHRzIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubWF0Y2hlcyB0Lm5hbWUgbmFtZSkgd2l0aFxuICAgIHwgW10gLT4gT2sgTm9uZVxuICAgIHwgXyA6OiBfIDo6IF8gYXMgbCAtPlxuICAgICAgICBFcnJvclxuICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiTXVsdGlwbGUgbWF0Y2ggZm9yIGV4dGVuc2lvbnM6ICVzXCJcbiAgICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgICAgICAgICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZSkpKSxcbiAgICAgICAgICAgIFtdIClcbiAgICB8IFsgdCBdIC0+XG4gICAgICAgIGlmIChub3QgdC53aXRoX2FyZykgJiYgT3B0aW9uLmlzX3NvbWUgYXJnIHRoZW5cbiAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2NcbiAgICAgICAgICAgICAgICBcIkV4dGVuc2lvbiAlcyBkb2Vzbid0IGV4cGVjdCBhIHBhdGggYXJndW1lbnRcIiBuYW1lLFxuICAgICAgICAgICAgICBbXSApXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgYXJnID1cbiAgICAgICAgICAgIE9wdGlvbi5tYXAgYXJnIH5mOihmdW4gcyAtPlxuICAgICAgICAgICAgICAgIGxldCBzaGlmdCA9IFN0cmluZy5sZW5ndGggbmFtZSArIDEgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBsb2MubG9jX3N0YXJ0IGluXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHh0ID0gTG9uZ2lkZW50LnBhcnNlIHM7XG4gICAgICAgICAgICAgICAgICBsb2MgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbG9jIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICBsb2Nfc3RhcnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGFydCB3aXRoIHBvc19jbnVtID0gc3RhcnQucG9zX2NudW0gKyBzaGlmdCB9O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBPayAoU29tZSAodCwgYXJnKSlcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gYXJnOkxvbmdpZGVudC50IExvYy50IG9wdGlvbiAtPiAnYVxuICBlbmQpXG5cbiAgbGV0IGRlY2xhcmVfd2l0aF9wYXRoX2FyZyBuYW1lIGN0eCBwYXR0IGYgPVxuICAgIGRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjdHggcGF0dCBmXG5cbiAgbGV0IGRlY2xhcmUgbmFtZSBjdHggcGF0dCBmID1cbiAgICBkZWNsYXJlIH53aXRoX2FyZzpmYWxzZSBuYW1lIGN0eCBwYXR0IChmdW4gfmFyZzpfIC0+IGYpXG5cbiAgbGV0IGNvbnZlcnRfcmVzIHRzIH5sb2MgZXh0ID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBmaW5kIHRzIGV4dCA+Pj0gZnVuIHIgLT5cbiAgICBtYXRjaCByIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGYpOyBfIH0sIGFyZykgLT5cbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gbG9jIChzbmQgZXh0KSAoZiB+YXJnKSA+PnwgZnVuIHBheWxvYWQgLT5cbiAgICAgICAgU29tZSBwYXlsb2FkXG5cbiAgbGV0IGNvbnZlcnQgdHMgfmxvYyBleHQgPVxuICAgIGNvbnZlcnRfcmVzIHRzIH5sb2MgZXh0XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG5tb2R1bGUgTSA9IE1ha2UgKHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLnQgLT4gYXJnOkxvbmdpZGVudC50IExvYy50IG9wdGlvbiAtPiAnYVxuZW5kKVxuXG50eXBlICdhIGV4cGFuZGVyX3Jlc3VsdCA9IFNpbXBsZSBvZiAnYSB8IElubGluZSBvZiAnYSBsaXN0XG5cbm1vZHVsZSBGb3JfY29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsICdhIGV4cGFuZGVyX3Jlc3VsdCkgTS50XG5cbiAgbGV0IGNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dCA9XG4gICAgbGV0IGxvYyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5leHRlbnNpb25fcG9pbnRfbG9jIGN0eHQgaW5cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBNLmZpbmQgdHMgZXh0ID4+PSBmdW4gZm91bmQgLT5cbiAgICBtYXRjaCBmb3VuZCB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKHsgcGF5bG9hZCA9IE0uUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGYpOyBfIH0sIGFyZykgLT4gKFxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBsb2MgKHNuZCBleHQpIChmIH5jdHh0IH5hcmcpXG4gICAgICAgID4+fCBmdW4gcGF5bG9hZCAtPlxuICAgICAgICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgICAgICAgfCBTaW1wbGUgeCAtPiBTb21lIHhcbiAgICAgICAgfCBJbmxpbmUgXyAtPiBmYWlsd2l0aCBcIkV4dGVuc2lvbi5jb252ZXJ0XCIpXG5cbiAgbGV0IGNvbnZlcnQgdHMgfmN0eHQgZXh0ID1cbiAgICBjb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG4gIGxldCBjb252ZXJ0X2lubGluZV9yZXMgdHMgfmN0eHQgZXh0ID1cbiAgICBsZXQgbG9jID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLmV4dGVuc2lvbl9wb2ludF9sb2MgY3R4dCBpblxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIE0uZmluZCB0cyBleHQgPj49IGZ1biBmb3VuZCAtPlxuICAgIG1hdGNoIGZvdW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gTS5QYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPiAoXG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGxvYyAoc25kIGV4dCkgKGYgfmN0eHQgfmFyZylcbiAgICAgICAgPj58IGZ1biBwYXlsb2FkIC0+XG4gICAgICAgIG1hdGNoIHBheWxvYWQgd2l0aCBTaW1wbGUgeCAtPiBTb21lIFsgeCBdIHwgSW5saW5lIGwgLT4gU29tZSBsKVxuXG4gIGxldCBjb252ZXJ0X2lubGluZSB0cyB+Y3R4dCBleHQgPVxuICAgIGNvbnZlcnRfaW5saW5lX3JlcyB0cyB+Y3R4dCBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbnR5cGUgdCA9IFQgOiBfIEZvcl9jb250ZXh0LnQgLT4gdFxuXG5sZXQgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIDogdHlwZSBhLiBmdW5jOnN0cmluZyAtPiBhIENvbnRleHQudCAtPiB1bml0ID1cbiBmdW4gfmZ1bmMgY3R4IC0+XG4gIG1hdGNoIGN0eCB3aXRoXG4gIHwgQ29udGV4dC5DbGFzc19maWVsZCAtPiAoKVxuICB8IENvbnRleHQuQ2xhc3NfdHlwZV9maWVsZCAtPiAoKVxuICB8IENvbnRleHQuU2lnbmF0dXJlX2l0ZW0gLT4gKClcbiAgfCBDb250ZXh0LlN0cnVjdHVyZV9pdGVtIC0+ICgpXG4gIHwgY29udGV4dCAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnIFwiJXM6ICVzIGNhbid0IGJlIGlubGluZWRcIiBmdW5jXG4gICAgICAgIChDb250ZXh0LmRlc2MgY29udGV4dClcblxubGV0IHJlYyBmaWx0ZXJfYnlfY29udGV4dCA6XG4gICAgdHlwZSBhLiBhIENvbnRleHQudCAtPiB0IGxpc3QgLT4gYSBGb3JfY29udGV4dC50IGxpc3QgPVxuIGZ1biBjb250ZXh0IGV4cGFuZGVycyAtPlxuICBtYXRjaCBleHBhbmRlcnMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgVCB0IDo6IHJlc3QgLT4gKFxuICAgICAgbWF0Y2ggQ29udGV4dC5lcSBjb250ZXh0IHQuY29udGV4dCB3aXRoXG4gICAgICB8IEVxIC0+IHQgOjogZmlsdGVyX2J5X2NvbnRleHQgY29udGV4dCByZXN0XG4gICAgICB8IE5lIC0+IGZpbHRlcl9ieV9jb250ZXh0IGNvbnRleHQgcmVzdClcblxubGV0IHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgY3R4IChuYW1lLCBfKSA9XG4gIGlmXG4gICAgbm90XG4gICAgICAoTmFtZS5BbGxvd2xpc3RlZC5pc19hbGxvd2xpc3RlZCB+a2luZDpgRXh0ZW5zaW9uIG5hbWUudHh0XG4gICAgICB8fCBOYW1lLmlnbm9yZV9jaGVja3MgbmFtZS50eHQpXG4gIHRoZW5cbiAgICBbXG4gICAgICBOYW1lLlJlZ2lzdHJhci5FcnJvci5jcmVhdGVmIHJlZ2lzdHJhciAoQ29udGV4dC5UIGN0eClcbiAgICAgICAgXCJFeHRlbnNpb24gYCVzJyB3YXMgbm90IHRyYW5zbGF0ZWRcIiBuYW1lO1xuICAgIF1cbiAgZWxzZSBbXVxuXG5sZXQgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uIChuYW1lLCBfKSBhY2MgPVxuICAgICAgYWNjXG4gICAgICBAIFtcbiAgICAgICAgICBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgIFwiZXh0ZW5zaW9uIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuRXh0ZW5zaW9uIG5lZWRzIHVwZGF0aW5nIVwiO1xuICAgICAgICBdXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQdHlwX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDb3JlX3R5cGUgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgcGF0dGVybl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQcGF0X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBQYXR0ZXJuIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI3BhdHRlcm5fZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBleHByZXNzaW9uX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBleHBfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIEV4cHJlc3Npb24gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGN0eV9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc190eXBlX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3RmX2V4dGVuc2lvbiBleHQgLT5cbiAgICAgICAgICBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX3R5cGVfZmllbGQgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGNsX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc19leHByIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZF9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX2ZpZWxkIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX2ZpZWxkX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUG10eV9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgTW9kdWxlX3R5cGUgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjbW9kdWxlX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoZXh0LCBfKSAtPlxuICAgICAgICAgIGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgU2lnbmF0dXJlX2l0ZW0gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjc2lnbmF0dXJlX2l0ZW1fZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbW9kX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBNb2R1bGVfZXhwciBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNtb2R1bGVfZXhwcl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBzdHJfZXh0ZW5zaW9uIChleHQsIF8pIC0+XG4gICAgICAgICAgYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBTdHJ1Y3R1cmVfaXRlbSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggYWNjXG4gIGVuZFxuXG5sZXQgZXJyb3JfbGlzdF90b19leGNlcHRpb24gPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBjaGVja191bnVzZWQgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5pdGVyXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbiAobmFtZSwgXykgPVxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgXCJleHRlbnNpb24gbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5FeHRlbnNpb24gbmVlZHMgdXBkYXRpbmchXCJcblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NvcmVfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIHBhdHRlcm5fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjcGF0dGVybl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjZXhwcmVzc2lvbl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGRfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHJfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfZXhwcl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX2ZpZWxkX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjbW9kdWxlX3R5cGVfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzaWduYXR1cmVfaXRlbV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI21vZHVsZV9leHByX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW1fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc3RydWN0dXJlX2l0ZW1fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuICBlbmRcblxubW9kdWxlIFYzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICAgIFRcbiAgICAgIChNLmRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmN0eHQgfmFyZzpfIC0+XG4gICAgICAgICAgIGsgfmN0eHQpKVxuXG4gIGxldCBkZWNsYXJlX2lubGluZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dCB+ZnVuYzpcIkV4dGVuc2lvbi5kZWNsYXJlX2lubGluZVwiO1xuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBJbmxpbmUgeCkgaW5cbiAgICBUXG4gICAgICAoTS5kZWNsYXJlIH53aXRoX2FyZzpmYWxzZSBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5jdHh0IH5hcmc6XyAtPlxuICAgICAgICAgICBrIH5jdHh0KSlcblxuICBsZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBTaW1wbGUgeCkgaW5cbiAgICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaylcblxuICBsZXQgZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dFxuICAgICAgfmZ1bmM6XCJFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZ1wiO1xuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBJbmxpbmUgeCkgaW5cbiAgICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaylcbmVuZFxuXG5sZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBmID1cbiAgVjMuZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVyblxuICAgIChFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggZilcblxubGV0IGRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuIGYgPVxuICBWMy5kZWNsYXJlX2lubGluZSBuYW1lIGNvbnRleHQgcGF0dGVyblxuICAgIChFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggZilcblxubGV0IGRlY2xhcmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgbGV0IGsnID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGsgaW5cbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaycpXG5cbmxldCBkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBsZXQgaycgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggayBpblxuICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dFxuICAgIH5mdW5jOlwiRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmdcIjtcbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaycpXG5cbmxldCBfX2RlY2xhcmVfcHB4X2ltcG9ydCBuYW1lIGV4cGFuZCA9XG4gICgqIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIHVud3JhcCB0aGUgdHlwZSBkZWNsYXJhdGlvbiBmcm9tIHRoZSBwYXlsb2FkXG4gICAgIGFzc2VtYmxlZCBieSBbQ29udGV4dC5nZXRfcHB4X2ltcG9ydF9leHRlbnNpb25dICopXG4gIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfdHlwZSByZWN1cnNpdmUgKF9fIF46OiBuaWwpIF46OiBuaWwpKSBpblxuICBWMy5kZWNsYXJlIG5hbWUgQ29udGV4dC5QcHhfaW1wb3J0IHBhdHRlcm4gZXhwYW5kXG5cbm1vZHVsZSBWMiA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCBkZWNsYXJlID0gZGVjbGFyZVxuICBsZXQgZGVjbGFyZV9pbmxpbmUgPSBkZWNsYXJlX2lubGluZVxuZW5kXG4iLCIoKiQgb3BlbiBQcHhsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5vcGVuISBJbXBvcnRcbm9wZW4gQ29tbW9uXG5vcGVuIFdpdGhfZXJyb3JzXG5tb2R1bGUgRSA9IEV4dGVuc2lvblxubW9kdWxlIEVDID0gRXh0ZW5zaW9uLkNvbnRleHRcbm1vZHVsZSBBID0gQXR0cmlidXRlXG5tb2R1bGUgQUMgPSBBdHRyaWJ1dGUuQ29udGV4dFxuXG5tb2R1bGUgUnVsZSA9IHN0cnVjdFxuICBtb2R1bGUgQXR0cl9ncm91cF9pbmxpbmUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB1bnBhY2tlZCA9IHtcbiAgICAgIGF0dHJpYnV0ZSA6ICgnYiwgJ2MpIEF0dHJpYnV0ZS50O1xuICAgICAgZXhwZWN0IDogYm9vbDtcbiAgICAgIGV4cGFuZCA6XG4gICAgICAgIGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+XG4gICAgICAgIEFzdHR5cGVzLnJlY19mbGFnIC0+XG4gICAgICAgICdiIGxpc3QgLT5cbiAgICAgICAgJ2Mgb3B0aW9uIGxpc3QgLT5cbiAgICAgICAgJ2EgbGlzdDtcbiAgICB9XG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgXykgdW5wYWNrZWQgLT4gKCdhLCAnYikgdFxuXG4gICAgbGV0IGF0dHJfbmFtZSAoVCB0KSA9IEF0dHJpYnV0ZS5uYW1lIHQuYXR0cmlidXRlXG5cbiAgICBsZXQgc3BsaXRfbm9ybWFsX2FuZF9leHBlY3QgbCA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiBsIH5mOihmdW4gKFQgdCkgLT4gbm90IHQuZXhwZWN0KVxuICBlbmRcblxuICBtb2R1bGUgQXR0cl9pbmxpbmUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB1bnBhY2tlZCA9IHtcbiAgICAgIGF0dHJpYnV0ZSA6ICgnYiwgJ2MpIEF0dHJpYnV0ZS50O1xuICAgICAgZXhwZWN0IDogYm9vbDtcbiAgICAgIGV4cGFuZCA6IGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjIC0+ICdhIGxpc3Q7XG4gICAgfVxuXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2IsIF8pIHVucGFja2VkIC0+ICgnYSwgJ2IpIHRcblxuICAgIGxldCBhdHRyX25hbWUgKFQgdCkgPSBBdHRyaWJ1dGUubmFtZSB0LmF0dHJpYnV0ZVxuXG4gICAgbGV0IHNwbGl0X25vcm1hbF9hbmRfZXhwZWN0IGwgPVxuICAgICAgTGlzdC5wYXJ0aXRpb24gbCB+ZjooZnVuIChUIHQpIC0+IG5vdCB0LmV4cGVjdClcbiAgZW5kXG5cbiAgbW9kdWxlIFNwZWNpYWxfZnVuY3Rpb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAgaWRlbnQgOiBMb25naWRlbnQudDtcbiAgICAgIGV4cGFuZCA6IFBhcnNldHJlZS5leHByZXNzaW9uIC0+IFBhcnNldHJlZS5leHByZXNzaW9uIG9wdGlvbjtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBDb25zdGFudF9raW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRmxvYXQgfCBJbnRlZ2VyXG4gIGVuZFxuXG4gIG1vZHVsZSBDb25zdGFudCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIHN1ZmZpeCA6IGNoYXI7XG4gICAgICBraW5kIDogQ29uc3RhbnRfa2luZC50O1xuICAgICAgZXhwYW5kIDogTG9jYXRpb24udCAtPiBzdHJpbmcgLT4gUGFyc2V0cmVlLmV4cHJlc3Npb247XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgRmllbGQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBFeHRlbnNpb24gOiBFeHRlbnNpb24udCB0XG4gICAgICB8IFNwZWNpYWxfZnVuY3Rpb24gOiBTcGVjaWFsX2Z1bmN0aW9uLnQgdFxuICAgICAgfCBDb25zdGFudCA6IENvbnN0YW50LnQgdFxuICAgICAgfCBBdHRyX3N0cl90eXBlX2RlY2xcbiAgICAgICAgICA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9ncm91cF9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2dyb3VwX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHN0cnVjdHVyZV9pdGVtLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICAgICAgICA6IChzaWduYXR1cmVfaXRlbSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl90eXBlX2V4dCA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9leHRlbnNpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ190eXBlX2V4dCA6IChzaWduYXR1cmVfaXRlbSwgdHlwZV9leHRlbnNpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl9leGNlcHRpb24gOiAoc3RydWN0dXJlX2l0ZW0sIHR5cGVfZXhjZXB0aW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfZXhjZXB0aW9uIDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2V4Y2VwdGlvbikgQXR0cl9pbmxpbmUudCB0XG5cbiAgICB0eXBlIChfLCBfKSBlcXVhbGl0eSA9IEVxIDogKCdhLCAnYSkgZXF1YWxpdHkgfCBOZSA6IChfLCBfKSBlcXVhbGl0eVxuXG4gICAgbGV0IGVxIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIGVxdWFsaXR5ID1cbiAgICAgZnVuIGEgYiAtPlxuICAgICAgbWF0Y2ggKGEsIGIpIHdpdGhcbiAgICAgIHwgRXh0ZW5zaW9uLCBFeHRlbnNpb24gLT4gRXFcbiAgICAgIHwgU3BlY2lhbF9mdW5jdGlvbiwgU3BlY2lhbF9mdW5jdGlvbiAtPiBFcVxuICAgICAgfCBDb25zdGFudCwgQ29uc3RhbnQgLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9kZWNsLCBBdHRyX3N0cl90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9kZWNsLCBBdHRyX3NpZ190eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9leHQsIEF0dHJfc3RyX3R5cGVfZXh0IC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZXh0LCBBdHRyX3NpZ190eXBlX2V4dCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl9leGNlcHRpb24sIEF0dHJfc3RyX2V4Y2VwdGlvbiAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ19leGNlcHRpb24sIEF0dHJfc2lnX2V4Y2VwdGlvbiAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsLCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wsIEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgXyAtPiBOZVxuICBlbmRcblxuICB0eXBlIHQgPSBUIDogJ2EgRmllbGQudCAqICdhIC0+IHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSBhdHRyX2dyb3VwX2lubGluZSA9XG4gICAgKCdiLCAnYykgQXR0cmlidXRlLnQgLT5cbiAgICAoY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT5cbiAgICBBc3R0eXBlcy5yZWNfZmxhZyAtPlxuICAgICdiIGxpc3QgLT5cbiAgICAnYyBvcHRpb24gbGlzdCAtPlxuICAgICdhIGxpc3QpIC0+XG4gICAgdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGF0dHJfaW5saW5lID1cbiAgICAoJ2IsICdjKSBBdHRyaWJ1dGUudCAtPlxuICAgIChjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPiAnYiAtPiAnYyAtPiAnYSBsaXN0KSAtPlxuICAgIHRcblxuICBsZXQgcmVjIGZpbHRlciA6IHR5cGUgYS4gYSBGaWVsZC50IC0+IHQgbGlzdCAtPiBhIGxpc3QgPVxuICAgZnVuIGZpZWxkIGwgLT5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCBUIChmaWVsZCcsIHgpIDo6IGwgLT4gKFxuICAgICAgICBtYXRjaCBGaWVsZC5lcSBmaWVsZCBmaWVsZCcgd2l0aFxuICAgICAgICB8IEZpZWxkLkVxIC0+IHggOjogZmlsdGVyIGZpZWxkIGxcbiAgICAgICAgfCBGaWVsZC5OZSAtPiBmaWx0ZXIgZmllbGQgbClcblxuICBsZXQgZXh0ZW5zaW9uIGV4dCA9IFQgKEV4dGVuc2lvbiwgZXh0KVxuXG4gIGxldCBzcGVjaWFsX2Z1bmN0aW9uIGlkIGYgPVxuICAgIFQgKFNwZWNpYWxfZnVuY3Rpb24sIHsgbmFtZSA9IGlkOyBpZGVudCA9IExvbmdpZGVudC5wYXJzZSBpZDsgZXhwYW5kID0gZiB9KVxuXG4gIGxldCBjb25zdGFudCBraW5kIHN1ZmZpeCBleHBhbmQgPSBUIChDb25zdGFudCwgeyBzdWZmaXg7IGtpbmQ7IGV4cGFuZCB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb24gYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbiBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19leGNlcHRpb25fZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5lbmRcblxubW9kdWxlIEdlbmVyYXRlZF9jb2RlX2hvb2sgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBzaW5nbGVfb3JfbWFueSA9IFNpbmdsZSBvZiAnYSB8IE1hbnkgb2YgJ2EgbGlzdFxuXG4gIHR5cGUgdCA9IHtcbiAgICBmIDogJ2EuICdhIEV4dGVuc2lvbi5Db250ZXh0LnQgLT4gTG9jYXRpb24udCAtPiAnYSBzaW5nbGVfb3JfbWFueSAtPiB1bml0O1xuICB9XG5cbiAgbGV0IG5vcCA9IHsgZiA9IChmdW4gXyBfIF8gLT4gKCkpIH1cbiAgbGV0IHJlcGxhY2UgdCBjb250ZXh0IGxvYyB4ID0gdC5mIGNvbnRleHQgbG9jIHhcblxuICBsZXQgaW5zZXJ0X2FmdGVyIHQgY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBNYW55IFtdIC0+ICgpXG4gICAgfCBfIC0+IHQuZiBjb250ZXh0IHsgbG9jIHdpdGggbG9jX3N0YXJ0ID0gbG9jLmxvY19lbmQgfSB4XG5lbmRcblxuKCogVXNlZCB0byBpbnNlcnQgZXJyb3IgZXh0ZW5zaW9ucyAqKVxubGV0IHdyYXBfZXh0ZW5zaW9uIDogdHlwZSBhLiBsb2M6TG9jYXRpb24udCAtPiBhIEVDLnQgLT4gYSAtPiBleHRlbnNpb24gLT4gYSA9XG4gZnVuIH5sb2MgdCBvcmlnaW5hbF9ub2RlIGV4dGVuc2lvbiAtPlxuICAoKiBQcmVmaXhpbmcgY29uc3RydWN0b3JzIHdpdGggdGhlIG1vZHVsZSBwYXRoIGlzIG5lY2Vzc2FyeSBmb3IgT0NhbWwgPCA0LjA3LFxuICAgICBzZWUgaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vlcy82ODUyICopXG4gIG1hdGNoIHQgd2l0aFxuICB8IEVDLkNsYXNzX2V4cHIgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wY2xfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuQ2xhc3NfZmllbGQgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wY2ZfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuQ2xhc3NfdHlwZSAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjdHlfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuQ2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjdGZfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuQ29yZV90eXBlIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucHR5cF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5FeHByZXNzaW9uIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucGV4cF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5Nb2R1bGVfZXhwciAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBtb2RfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuTW9kdWxlX3R5cGUgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wbXR5X2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLlBhdHRlcm4gLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wcGF0X2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLlNpZ25hdHVyZV9pdGVtIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYyBleHRlbnNpb24gW11cbiAgfCBFQy5TdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uIFtdXG4gIHwgRUMuUHB4X2ltcG9ydCAtPlxuICAgICAgKCogSW5zZXJ0IHRoZSBlcnJvciBpbiB0aGUgdHlwZSBkZWNsIG1hbmlmZXN0ICopXG4gICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPVxuICAgICAgICBTb21lIChBc3RfYnVpbGRlci5EZWZhdWx0LnB0eXBfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uKVxuICAgICAgaW5cbiAgICAgIHsgb3JpZ2luYWxfbm9kZSB3aXRoIHB0eXBlX21hbmlmZXN0IH1cblxubGV0IGV4bl90b19leHRlbnNpb24gZXhuID1cbiAgbGV0IGVycm9yID0gZXhuX3RvX2xvY19lcnJvciBleG4gaW5cbiAgbGV0IGxvYyA9IExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvciBpblxuICBsZXQgZXh0ZW5zaW9uID0gTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yIGluXG4gIChleHRlbnNpb24sIGxvYylcblxubGV0IGV4bl90b19lcnJvcl9leHRlbnNpb24gY29udGV4dCBvcmlnaW5hbF9ub2RlIGV4biA9XG4gIGxldCBleHRlbnNpb24sIGxvYyA9IGV4bl90b19leHRlbnNpb24gZXhuIGluXG4gIHdyYXBfZXh0ZW5zaW9uIH5sb2MgY29udGV4dCBvcmlnaW5hbF9ub2RlIGV4dGVuc2lvblxuXG5sZXQgZXhuX3RvX3N0cmkgZXhuID1cbiAgbGV0IGV4dGVuc2lvbiwgbG9jID0gZXhuX3RvX2V4dGVuc2lvbiBleG4gaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvbiBbXVxuXG5sZXQgZXhuX3RvX3NpZ2kgZXhuID1cbiAgbGV0IGV4dGVuc2lvbiwgbG9jID0gZXhuX3RvX2V4dGVuc2lvbiBleG4gaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvbiBbXVxuXG5sZXQgcmVjIG1hcF9ub2RlX3JlYyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgbG9jIGJhc2VfY3R4dCB4IH5lbWJlZF9lcnJvcnMgPVxuICBsZXQgY3R4dCA9XG4gICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2M6bG9jIH5iYXNlOmJhc2VfY3R4dCAoKVxuICBpblxuICBtYXRjaCBFQy5nZXRfZXh0ZW5zaW9uIGNvbnRleHQgeCB3aXRoXG4gIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gIHwgU29tZSAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgKHRyeVxuICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHRcbiAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgIFdpdGhfZXJyb3JzLnJldHVybiAoU29tZSAoZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBjb250ZXh0IHggZXhuKSkpXG4gICAgICA+Pj0gZnVuIGNvbnZlcnRlZCAtPlxuICAgICAgbWF0Y2ggY29udmVydGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIEVDLm1lcmdlX2F0dHJpYnV0ZXNfcmVzIGNvbnRleHQgeCBhdHRyc1xuICAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDp4XG4gICAgICAgICAgPj49IGZ1biB4IC0+XG4gICAgICAgICAgbWFwX25vZGVfcmVjIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0IHggfmVtYmVkX2Vycm9ycylcblxubGV0IG1hcF9ub2RlIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0IHggfmhvb2sgfmVtYmVkX2Vycm9ycyA9XG4gIGxldCBjdHh0ID1cbiAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYzpsb2MgfmJhc2U6YmFzZV9jdHh0ICgpXG4gIGluXG4gIG1hdGNoIEVDLmdldF9leHRlbnNpb24gY29udGV4dCB4IHdpdGhcbiAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgfCBTb21lIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAodHJ5XG4gICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgV2l0aF9lcnJvcnMucmV0dXJuIChTb21lIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIGNvbnRleHQgeCBleG4pKSlcbiAgICAgID4+PSBmdW4gY29udmVydGVkIC0+XG4gICAgICBtYXRjaCBjb252ZXJ0ZWQgd2l0aFxuICAgICAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgbWFwX25vZGVfcmVjIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0XG4gICAgICAgICAgICAoRUMubWVyZ2VfYXR0cmlidXRlcyBjb250ZXh0IHggYXR0cnMpXG4gICAgICAgICAgICB+ZW1iZWRfZXJyb3JzXG4gICAgICAgICAgPj58IGZ1biBnZW5lcmF0ZWRfY29kZSAtPlxuICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIGNvbnRleHQgbG9jIChTaW5nbGUgZ2VuZXJhdGVkX2NvZGUpO1xuICAgICAgICAgIGdlbmVyYXRlZF9jb2RlKVxuXG5sZXQgcmVjIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9vayB+ZW1iZWRfZXJyb3JzXG4gICAgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmV0dXJuIFtdXG4gIHwgeCA6OiBsIC0+IChcbiAgICAgIG1hdGNoIEVDLmdldF9leHRlbnNpb24gY29udGV4dCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIFRoZXNlIHR3byBsZXRzIGZvcmNlIHRoZSBldmFsdWF0aW9uIG9yZGVyLCBzbyB0aGF0IGVycm9ycyBhcmUgcmVwb3J0ZWQgaW4gdGhlXG4gICAgICAgICAgICAgc2FtZSBvcmRlciBhcyB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGZpbGUuICopXG4gICAgICAgICAgc3VwZXJfY2FsbCBiYXNlX2N0eHQgeCA+Pj0gZnVuIHggLT5cbiAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2tcbiAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgPj58IGZ1biBsIC0+IHggOjogbFxuICAgICAgfCBTb21lIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAgICAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgPSBnZXRfbG9jIHggaW5cbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICBpblxuICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfaW5saW5lX3JlcyB0cyB+Y3R4dCBleHRcbiAgICAgICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgIFdpdGhfZXJyb3JzLnJldHVybiAoU29tZSBbIGV4bl90b19lcnJvcl9leHRlbnNpb24gY29udGV4dCB4IGV4biBdKSlcbiAgICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgc3VwZXJfY2FsbCBiYXNlX2N0eHQgeCA+Pj0gZnVuIHggLT5cbiAgICAgICAgICAgICAgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rXG4gICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgPj58IGZ1biBsIC0+IHggOjogbFxuICAgICAgICAgIHwgU29tZSBjb252ZXJ0ZWQgLT5cbiAgICAgICAgICAgICAgKCgpLCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycykgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGNvbnZlcnRlZCB+aG9va1xuICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlOnRydWVcbiAgICAgICAgICAgICAgPj49IGZ1biBnZW5lcmF0ZWRfY29kZSAtPlxuICAgICAgICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIGNvbnRleHQgZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICAgICAgKE1hbnkgZ2VuZXJhdGVkX2NvZGUpO1xuICAgICAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2tcbiAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICA+PnwgZnVuIGNvZGUgLT4gZ2VuZXJhdGVkX2NvZGUgQCBjb2RlKSlcblxubGV0IG1hcF9ub2RlcyA9IG1hcF9ub2RlcyB+aW5fZ2VuZXJhdGVkX2NvZGU6ZmFsc2VcblxubGV0IHRhYmxlX29mX3NwZWNpYWxfZnVuY3Rpb25zIHNwZWNpYWxfZnVuY3Rpb25zID1cbiAgbWF0Y2hcbiAgICBMaXN0Lm1hcCBzcGVjaWFsX2Z1bmN0aW9uc1xuICAgICAgfmY6KGZ1biB7IFJ1bGUuU3BlY2lhbF9mdW5jdGlvbi5pZGVudDsgZXhwYW5kOyBfIH0gLT4gKGlkZW50LCBleHBhbmQpKVxuICAgICgqIFdlIGV4cGVjdCB0aGUgbG9va3VwIHRvIGZhaWwgbW9zdCBvZiB0aGUgdGltZSwgYnkgbWFraW5nIHRoZSB0YWJsZSBiaWcgKGFuZFxuICAgICAgIHNwYXJzZSksIHdlIG1ha2UgaXQgbW9yZSBsaWtlbHkgdG8gZmFpbCBxdWlja2x5ICopXG4gICAgfD4gSGFzaHRibC5vZl9hbGlzdCB+c2l6ZToobWF4IDEwMjQgKExpc3QubGVuZ3RoIHNwZWNpYWxfZnVuY3Rpb25zICogMikpXG4gIHdpdGhcbiAgfCBPayB0YWJsZSAtPiB0YWJsZVxuICB8IEVycm9yIGlkZW50IC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgICAgXCJDb250ZXh0X2ZyZWUuVjEubWFwX3RvcF9kb3duOiAlcyBwcmVzZW50IHR3aWNlIGluIGxpc3Qgb2Ygc3BlY2lhbCBcXFxuICAgICAgICAgZnVuY3Rpb25zXCJcbiAgICAgICAgKExpc3QuZmluZF9tYXBfZXhuIHNwZWNpYWxfZnVuY3Rpb25zIH5mOihmdW4gciAtPlxuICAgICAgICAgICAgIGlmIFBvbHkuZXF1YWwgci5pZGVudCBpZGVudCB0aGVuIFNvbWUgci5uYW1lIGVsc2UgTm9uZSkpXG5cbigqIFtnZXRfZ3JvdXAgYXR0ciBsXSByZXR1cm5zIHRoZSBsaXN0IG9mIHRoZSBhdHRyaWJ1dGVzIGZvciBlYWNoXG4gICBub2RlIGluIFtsXS5cbiAgIElmIFtsXSBpcyBlbXB0eSBvciBpZiBub25lIG9mIHRoZSBub2RlcyBpbiBbbF0gaGF2ZSBhbiBhdHRyaWJ1dGUgYXR0YWNoZWQsXG4gICBbZ2V0X2dyb3VwXSByZXR1cm5zIFtOb25lXS5cbiAgIElmIFtsXSBpcyBub3QgZW1wdHkgYW5kIGF0IGxlYXN0IG9uZSBvZiB0aGUgbm9kZXMgaW4gW2xdIGhhcyBhbiBhdHRyaWJ1ZVxuICAgYXR0YWNoZWQsIFtnZXRfZ3JvdXBdIHJldHVybnMgdGhlIGVxdWl2YWxlbnQgb2ZcbiAgIFtTb21lIChMaXN0Lm1hcCB+ZjooQXR0cmlidXRlLmdldCBhdHRyKSBsKV0uICopXG5sZXQgcmVjIGdldF9ncm91cCBhdHRyIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICB8IHggOjogbCAtPiAoXG4gICAgICBnZXRfZ3JvdXAgYXR0ciBsID4+PSBmdW4gZ3JvdXAgLT5cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGF0dHIgeCB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZSA+PnwgZnVuIGF0dHIyIC0+XG4gICAgICBtYXRjaCAoYXR0cjIsIGdyb3VwKSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgICAgfCBOb25lLCBTb21lIHZhbHMgLT4gU29tZSAoTm9uZSA6OiB2YWxzKVxuICAgICAgfCBTb21lIHZhbHVlLCBOb25lIC0+IFNvbWUgKFNvbWUgdmFsdWUgOjogTGlzdC5tYXAgbCB+ZjooZnVuIF8gLT4gTm9uZSkpXG4gICAgICB8IFNvbWUgdmFsdWUsIFNvbWUgdmFscyAtPiBTb21lIChTb21lIHZhbHVlIDo6IHZhbHMpKVxuXG4oKiBTYW1lIGFzIFtMaXN0LnJldl0gdGhlbiBbTGlzdC5jb25jYXRdIGJ1dCBleHBlY3RpbmcgdGhlIGlucHV0IHRvIGJlIG9mIGxlbmd0aCA8PSAyICopXG5sZXQgcmV2X2NvbmNhdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCBbIHggXSAtPiB4XG4gIHwgWyB4OyB5IF0gLT4geSBAIHhcbiAgfCBsIC0+IExpc3QuY29uY2F0IChMaXN0LnJldiBsKVxuXG5sZXQgc29ydF9hdHRyX2dyb3VwX2lubGluZSBsID1cbiAgTGlzdC5zb3J0IGwgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgU3RyaW5nLmNvbXBhcmVcbiAgICAgICAgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuYXR0cl9uYW1lIGEpXG4gICAgICAgIChSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLmF0dHJfbmFtZSBiKSlcblxubGV0IHNvcnRfYXR0cl9pbmxpbmUgbCA9XG4gIExpc3Quc29ydCBsIH5jbXA6KGZ1biBhIGIgLT5cbiAgICAgIFN0cmluZy5jb21wYXJlXG4gICAgICAgIChSdWxlLkF0dHJfaW5saW5lLmF0dHJfbmFtZSBhKVxuICAgICAgICAoUnVsZS5BdHRyX2lubGluZS5hdHRyX25hbWUgYikpXG5cbmxldCBjb250ZXh0X2ZyZWVfYXR0cmlidXRlX21vZGlmaWNhdGlvbiB+bG9jID1cbiAgRXJyb3JcbiAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvY1xuICAgICAgICBcIkEgY29udGV4dC1mcmVlIHJ1bGUgZGVsZXRlZCBvciBhZGRlZCBhdHRyaWJ1ZXMgb2YgYSBzdHIvc2lnIGl0ZW1cIixcbiAgICAgIFtdIClcblxuKCogUmV0dXJucyB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgYXR0cmlidXRlIGhhbmRsZXJzLiBXZSBkb24ndCByZW1vdmUgdGhlc2UgYXR0cmlidXRlcywgYXNcbiAgIGFub3RoZXIgcGFzcyBtaWdodCBpbnRlcnByZXQgdGhlbSBsYXRlci4gRm9yIGluc3RhbmNlIGJvdGggcHB4X2Rlcml2aW5nIGFuZFxuICAgcHB4bGliX2Rlcml2aW5nIGludGVycHJldHMgW0BAZGVyaXZpbmddIGF0dHJpYnV0ZXMuXG5cbiAgIFRoaXMgY29tcGxleGl0eSBpcyBob3JyaWJsZSwgYnV0IGluIHByYWN0aWNlIHdlIGRvbid0IGNhcmUgYXMgW2F0dHJzXSBpcyBhbHdheXMgYSBsaXN0XG4gICBvZiBvbmUgZWxlbWVudDsgaXQgb25seSBoYXMgW0BAZGVyaXZpbmddLlxuKilcbmxldCBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cnMgcmYgfml0ZW1zIH5leHBhbmRlZF9pdGVtcyB+bG9jIH5iYXNlX2N0eHRcbiAgICB+ZW1iZWRfZXJyb3JzIH5jb252ZXJ0X2V4biA9XG4gIExpc3QuZm9sZF9sZWZ0IGF0dHJzIH5pbml0OihyZXR1cm4gW10pXG4gICAgfmY6KGZ1biBhY2MgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuVCBncm91cCkgLT5cbiAgICAgIGFjYyA+Pj0gZnVuIGFjYyAtPlxuICAgICAgZ2V0X2dyb3VwIGdyb3VwLmF0dHJpYnV0ZSBpdGVtcyA+Pj0gZnVuIGcxIC0+XG4gICAgICBnZXRfZ3JvdXAgZ3JvdXAuYXR0cmlidXRlIGV4cGFuZGVkX2l0ZW1zID4+PSBmdW4gZzIgLT5cbiAgICAgIG1hdGNoIChnMSwgZzIpIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiByZXR1cm4gYWNjXG4gICAgICB8IE5vbmUsIFNvbWUgXyB8IFNvbWUgXywgTm9uZSAtPlxuICAgICAgICAgIGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OmFjY1xuICAgICAgfCBTb21lIHZhbHVlcywgU29tZSBfIC0+IChcbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLm1ha2UgfmRlcml2ZWRfaXRlbV9sb2M6bG9jXG4gICAgICAgICAgICAgIH5pbmxpbmU6Z3JvdXAuZXhwZWN0IH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZXhwZWN0X2l0ZW1zID0gZ3JvdXAuZXhwYW5kIH5jdHh0IHJmIGV4cGFuZGVkX2l0ZW1zIHZhbHVlcyBpblxuICAgICAgICAgICAgcmV0dXJuIChleHBlY3RfaXRlbXMgOjogYWNjKVxuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3JfaXRlbSA9IFsgY29udmVydF9leG4gZXhuIF0gaW5cbiAgICAgICAgICAgIHJldHVybiAoZXJyb3JfaXRlbSA6OiBhY2MpKSlcblxubGV0IGhhbmRsZV9hdHRyX2lubGluZSBhdHRycyB+Y29udmVydF9leG4gfml0ZW0gfmV4cGFuZGVkX2l0ZW0gfmxvYyB+YmFzZV9jdHh0XG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIExpc3QuZm9sZF9sZWZ0IGF0dHJzIH5pbml0OihyZXR1cm4gW10pIH5mOihmdW4gYWNjIChSdWxlLkF0dHJfaW5saW5lLlQgYSkgLT5cbiAgICAgIGFjYyA+Pj0gZnVuIGFjYyAtPlxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgYS5hdHRyaWJ1dGUgaXRlbSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgPj49IGZ1biBnMSAtPlxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgYS5hdHRyaWJ1dGUgZXhwYW5kZWRfaXRlbSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgPj49IGZ1biBnMiAtPlxuICAgICAgbWF0Y2ggKGcxLCBnMikgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IHJldHVybiBhY2NcbiAgICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+XG4gICAgICAgICAgY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljYXRpb24gfmxvYyB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6YWNjXG4gICAgICB8IFNvbWUgdmFsdWUsIFNvbWUgXyAtPiAoXG4gICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5tYWtlIH5kZXJpdmVkX2l0ZW1fbG9jOmxvY1xuICAgICAgICAgICAgICB+aW5saW5lOmEuZXhwZWN0IH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZXhwZWN0X2l0ZW1zID0gYS5leHBhbmQgfmN0eHQgZXhwYW5kZWRfaXRlbSB2YWx1ZSBpblxuICAgICAgICAgICAgcmV0dXJuIChleHBlY3RfaXRlbXMgOjogYWNjKVxuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3JfaXRlbSA9IFsgY29udmVydF9leG4gZXhuIF0gaW5cbiAgICAgICAgICAgIHJldHVybiAoZXJyb3JfaXRlbSA6OiBhY2MpKSlcblxubW9kdWxlIEV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBmIDogJ2EuICdhIEF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0LnQgLT4gTG9jYXRpb24udCAtPiAnYSBsaXN0IC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgbm9wID0geyBmID0gKGZ1biBfIF8gXyAtPiAoKSkgfVxuZW5kXG5cbmNsYXNzIG1hcF90b3BfZG93biA/KGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wKVxuICA/KGdlbmVyYXRlZF9jb2RlX2hvb2sgPSBHZW5lcmF0ZWRfY29kZV9ob29rLm5vcCkgPyhlbWJlZF9lcnJvcnMgPSBmYWxzZSkgcnVsZXNcbiAgPVxuICBsZXQgaG9vayA9IGdlbmVyYXRlZF9jb2RlX2hvb2sgaW5cblxuICBsZXQgc3BlY2lhbF9mdW5jdGlvbnMgPVxuICAgIFJ1bGUuZmlsdGVyIFNwZWNpYWxfZnVuY3Rpb24gcnVsZXMgfD4gdGFibGVfb2Zfc3BlY2lhbF9mdW5jdGlvbnNcbiAgaW5cbiAgbGV0IGNvbnN0YW50cyA9XG4gICAgUnVsZS5maWx0ZXIgQ29uc3RhbnQgcnVsZXNcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIChjIDogUnVsZS5Db25zdGFudC50KSAtPiAoKGMuc3VmZml4LCBjLmtpbmQpLCBjLmV4cGFuZCkpXG4gICAgfD4gSGFzaHRibC5vZl9hbGlzdF9leG5cbiAgaW5cbiAgbGV0IGV4dGVuc2lvbnMgPSBSdWxlLmZpbHRlciBFeHRlbnNpb24gcnVsZXMgaW5cbiAgbGV0IGNsYXNzX2V4cHIgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX2V4cHIgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfZmllbGQgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX2ZpZWxkIGV4dGVuc2lvbnNcbiAgYW5kIGNsYXNzX3R5cGUgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX3R5cGUgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfdHlwZV9maWVsZCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfdHlwZV9maWVsZCBleHRlbnNpb25zXG4gIGFuZCBjb3JlX3R5cGUgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNvcmVfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBleHByZXNzaW9uID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5leHByZXNzaW9uIGV4dGVuc2lvbnNcbiAgYW5kIG1vZHVsZV9leHByID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5tb2R1bGVfZXhwciBleHRlbnNpb25zXG4gIGFuZCBtb2R1bGVfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMubW9kdWxlX3R5cGUgZXh0ZW5zaW9uc1xuICBhbmQgcGF0dGVybiA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMucGF0dGVybiBleHRlbnNpb25zXG4gIGFuZCBzaWduYXR1cmVfaXRlbSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuc2lnbmF0dXJlX2l0ZW0gZXh0ZW5zaW9uc1xuICBhbmQgc3RydWN0dXJlX2l0ZW0gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLnN0cnVjdHVyZV9pdGVtIGV4dGVuc2lvbnNcbiAgYW5kIHBweF9pbXBvcnQgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLlBweF9pbXBvcnQgZXh0ZW5zaW9ucyBpblxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2xzLCBhdHRyX3N0cl90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2dyb3VwX2lubGluZSB8PiBSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ190eXBlX2RlY2xzLCBhdHRyX3NpZ190eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2dyb3VwX2lubGluZSB8PiBSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzLCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzLCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgYXR0cl9zdHJfdHlwZV9leHRzLCBhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl90eXBlX2V4dCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfdHlwZV9leHRzLCBhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ190eXBlX2V4dCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb25zLCBhdHRyX3N0cl9leGNlcHRpb25zX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfZXhjZXB0aW9uIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ19leGNlcHRpb25zLCBhdHRyX3NpZ19leGNlcHRpb25zX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfZXhjZXB0aW9uIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IG1hcF9ub2RlID0gbWFwX25vZGUgfmhvb2sgfmVtYmVkX2Vycm9ycyBpblxuICBsZXQgbWFwX25vZGVzID0gbWFwX25vZGVzIH5ob29rIH5lbWJlZF9lcnJvcnMgaW5cbiAgbGV0IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSA9IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSB+ZW1iZWRfZXJyb3JzIGluXG4gIGxldCBoYW5kbGVfYXR0cl9pbmxpbmUgPSBoYW5kbGVfYXR0cl9pbmxpbmUgfmVtYmVkX2Vycm9ycyBpblxuXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXBfd2l0aF9leHBhbnNpb25fY29udGV4dF9hbmRfZXJyb3JzIGFzIHN1cGVyXG5cbiAgICAoKiBObyBwb2ludCByZWN1cnNpbmcgaW50byBldmVyeSBsb2NhdGlvbiAqKVxuICAgIG1ldGhvZCEgbG9jYXRpb24gXyB4ID0gcmV0dXJuIHhcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNvcmVfdHlwZSBjb3JlX3R5cGUgc3VwZXIjY29yZV90eXBlIHgucHR5cF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgcGF0dGVybiBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5wYXR0ZXJuIHBhdHRlcm4gc3VwZXIjcGF0dGVybiB4LnBwYXRfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24gYmFzZV9jdHh0IGUgPVxuICAgICAgbGV0IHdpdGhfY29udGV4dCA9XG4gICAgICAgICgqIE1ha2Ugc3VyZSBjb2RlLXBhdGggYXR0cmlidXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cGFuZGluZy4gKilcbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgQXN0X3RyYXZlcnNlLmVudGVyX3ZhbHVlIGUgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj49IGZ1biBvcHRpb24gLT5cbiAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJldHVybiAoYmFzZV9jdHh0LCBlKVxuICAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+XG4gICAgICAgICAgICBBdHRyaWJ1dGUucmVtb3ZlX3NlZW5fcmVzIEV4cHJlc3Npb25cbiAgICAgICAgICAgICAgWyBUIEFzdF90cmF2ZXJzZS5lbnRlcl92YWx1ZSBdXG4gICAgICAgICAgICAgIGVcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDplXG4gICAgICAgICAgICA+PnwgZnVuIGUgLT5cbiAgICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2MgdHh0IGJhc2VfY3R4dCwgZSlcbiAgICAgIGluXG4gICAgICB3aXRoX2NvbnRleHQgPj49IGZ1biAoYmFzZV9jdHh0LCBlKSAtPlxuICAgICAgbGV0IGV4cGFuZGVkID1cbiAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICAgIG1hcF9ub2RlIEVDLmV4cHJlc3Npb24gZXhwcmVzc2lvblxuICAgICAgICAgICAgICAoZnVuIF8gZSAtPiByZXR1cm4gZSlcbiAgICAgICAgICAgICAgZS5wZXhwX2xvYyBiYXNlX2N0eHQgZVxuICAgICAgICB8IF8gLT4gcmV0dXJuIGVcbiAgICAgIGluXG4gICAgICBleHBhbmRlZCA+Pj0gZnVuIGUgLT5cbiAgICAgIGxldCBleHBhbmRfY29uc3RhbnQga2luZCBjaGFyIHRleHQgPVxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IGNvbnN0YW50cyAoY2hhciwga2luZCkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZVxuICAgICAgICB8IFNvbWUgZXhwYW5kIC0+IHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgKGV4cGFuZCBlLnBleHBfbG9jIHRleHQpXG4gICAgICBpblxuICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX2FwcGx5ICgoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IGlkOyBfIH0gYXMgZnVuYyksIGFyZ3MpIC0+IChcbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHNwZWNpYWxfZnVuY3Rpb25zIGlkLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHNlbGYjcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuYyBhcmdzXG4gICAgICAgICAgfCBTb21lIHBhdHRlcm4gLT4gKFxuICAgICAgICAgICAgICBsZXQgZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICAgICAgICAgIHRyeSByZXR1cm4gKHBhdHRlcm4gZSlcbiAgICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChTb21lIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIEVDLmV4cHJlc3Npb24gZSBleG4pKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBnZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgc2VsZiNwZXhwX2FwcGx5X3dpdGhvdXRfdHJhdmVyc2luZ19mdW5jdGlvbiBiYXNlX2N0eHQgZSBmdW5jXG4gICAgICAgICAgICAgICAgICAgIGFyZ3NcbiAgICAgICAgICAgICAgfCBTb21lIGUgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBlKSlcbiAgICAgIHwgUGV4cF9pZGVudCBpZCAtPiAoXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCBzcGVjaWFsX2Z1bmN0aW9ucyBpZC50eHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgICAgfCBTb21lIHBhdHRlcm4gLT4gKFxuICAgICAgICAgICAgICBsZXQgZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICAgICAgICAgIHRyeSByZXR1cm4gKHBhdHRlcm4gZSlcbiAgICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChTb21lIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIEVDLmV4cHJlc3Npb24gZSBleG4pKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBnZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgICAgICAgIHwgU29tZSBlIC0+IHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZSkpXG4gICAgICB8IFBleHBfY29uc3RhbnQgKFBjb25zdF9pbnRlZ2VyIChzLCBTb21lIGMpKSAtPiAoXG4gICAgICAgICAgdHJ5IGV4cGFuZF9jb25zdGFudCBJbnRlZ2VyIGMgc1xuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICByZXR1cm4gKGV4bl90b19lcnJvcl9leHRlbnNpb24gRUMuZXhwcmVzc2lvbiBlIGV4bikpXG4gICAgICB8IFBleHBfY29uc3RhbnQgKFBjb25zdF9mbG9hdCAocywgU29tZSBjKSkgLT4gKFxuICAgICAgICAgIHRyeSBleHBhbmRfY29uc3RhbnQgRmxvYXQgYyBzXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIHJldHVybiAoZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBFQy5leHByZXNzaW9uIGUgZXhuKSlcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG5cbiAgICAoKiBQcmUtY29uZGl0aW9uczpcbiAgICAgICAtIGUucGV4cF9kZXNjID0gUGV4cF9hcHBseShmdW5jLCBhcmdzKVxuICAgICAgIC0gZnVuYy5wZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF9cbiAgICAqKVxuICAgIG1ldGhvZCBwcml2YXRlIHBleHBfYXBwbHlfd2l0aG91dF90cmF2ZXJzaW5nX2Z1bmN0aW9uIGJhc2VfY3R4dCBlIGZ1bmMgYXJnc1xuICAgICAgICA9XG4gICAgICBsZXQgeyBwZXhwX2Rlc2MgPSBfOyBwZXhwX2xvYzsgcGV4cF9hdHRyaWJ1dGVzOyBwZXhwX2xvY19zdGFjayB9ID0gZSBpblxuICAgICAgbGV0IGZ1bmMgPVxuICAgICAgICBsZXQgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2F0dHJpYnV0ZXM7IHBleHBfbG9jX3N0YWNrIH0gPSBmdW5jIGluXG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBiYXNlX2N0eHQgcGV4cF9hdHRyaWJ1dGVzID4+fCBmdW4gcGV4cF9hdHRyaWJ1dGVzIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBwZXhwX2Rlc2M7XG4gICAgICAgICAgcGV4cF9sb2MgKCogbG9jYXRpb24gZG9lc24ndCBuZWVkIHRvIGJlIHRyYXZlcnNlZCAqKTtcbiAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBmdW5jID4+PSBmdW4gZnVuYyAtPlxuICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICBMaXN0Lm1hcCBhcmdzIH5mOihmdW4gKGxhYiwgZXhwKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBleHAgPj58IGZ1biBleHAgLT4gKGxhYiwgZXhwKSlcbiAgICAgICAgfD4gY29tYmluZV9lcnJvcnNcbiAgICAgIGluXG4gICAgICBhcmdzID4+PSBmdW4gYXJncyAtPlxuICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJhc2VfY3R4dCBwZXhwX2F0dHJpYnV0ZXMgPj58IGZ1biBwZXhwX2F0dHJpYnV0ZXMgLT5cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgIHBleHBfYXR0cmlidXRlcztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoZnVuYywgYXJncyk7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrO1xuICAgICAgfVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX3R5cGUgY2xhc3NfdHlwZSBzdXBlciNjbGFzc190eXBlIHgucGN0eV9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc190eXBlX2ZpZWxkIGNsYXNzX3R5cGVfZmllbGQgc3VwZXIjY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICB4LnBjdGZfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfZXhwciBjbGFzc19leHByIHN1cGVyI2NsYXNzX2V4cHIgeC5wY2xfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX2ZpZWxkIGNsYXNzX2ZpZWxkIHN1cGVyI2NsYXNzX2ZpZWxkIHgucGNmX2xvYyBiYXNlX2N0eHRcbiAgICAgICAgeFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5tb2R1bGVfdHlwZSBtb2R1bGVfdHlwZSBzdXBlciNtb2R1bGVfdHlwZSB4LnBtdHlfbG9jIGJhc2VfY3R4dFxuICAgICAgICB4XG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIGJhc2VfY3R4dCB4ID1cbiAgICAgICgoKiBNYWtlIHN1cmUgY29kZS1wYXRoIGF0dHJpYnV0ZSBpcyBhcHBsaWVkIGJlZm9yZSBleHBhbmRpbmcuICopXG4gICAgICAgQXR0cmlidXRlLmdldF9yZXMgQXN0X3RyYXZlcnNlLmVudGVyX21vZHVsZSB4IHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgfCBOb25lIC0+IHJldHVybiAoYmFzZV9jdHh0LCB4KVxuICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT5cbiAgICAgICAgICAgQXR0cmlidXRlLnJlbW92ZV9zZWVuX3JlcyBNb2R1bGVfZXhwclxuICAgICAgICAgICAgIFsgVCBBc3RfdHJhdmVyc2UuZW50ZXJfbW9kdWxlIF1cbiAgICAgICAgICAgICB4XG4gICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDp4XG4gICAgICAgICAgID4+fCBmdW4geCAtPlxuICAgICAgICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyB0eHQgYmFzZV9jdHh0LCB4KSlcbiAgICAgID4+PSBmdW4gKGJhc2VfY3R4dCwgeCkgLT5cbiAgICAgIG1hcF9ub2RlIEVDLm1vZHVsZV9leHByIG1vZHVsZV9leHByIHN1cGVyI21vZHVsZV9leHByIHgucG1vZF9sb2MgYmFzZV9jdHh0XG4gICAgICAgIHhcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuc3RydWN0dXJlX2l0ZW0gc3RydWN0dXJlX2l0ZW0gc3VwZXIjc3RydWN0dXJlX2l0ZW0geC5wc3RyX2xvY1xuICAgICAgICBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5zaWduYXR1cmVfaXRlbSBzaWduYXR1cmVfaXRlbSBzdXBlciNzaWduYXR1cmVfaXRlbSB4LnBzaWdfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX3N0cnVjdHVyZSBiYXNlX2N0eHQgeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSA9XG4gICAgICBzZWxmI3BhdHRlcm4gYmFzZV9jdHh0IHBjc3RyX3NlbGYgPj49IGZ1biBwY3N0cl9zZWxmIC0+XG4gICAgICBtYXBfbm9kZXMgRUMuY2xhc3NfZmllbGQgY2xhc3NfZmllbGQgc3VwZXIjY2xhc3NfZmllbGRcbiAgICAgICAgKGZ1biB4IC0+IHgucGNmX2xvYylcbiAgICAgICAgYmFzZV9jdHh0IHBjc3RyX2ZpZWxkc1xuICAgICAgPj58IGZ1biBwY3N0cl9maWVsZHMgLT4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfVxuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLlBweF9pbXBvcnQgcHB4X2ltcG9ydCBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHgucHR5cGVfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX3NpZ25hdHVyZSBiYXNlX2N0eHQgeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSA9XG4gICAgICBzZWxmI2NvcmVfdHlwZSBiYXNlX2N0eHQgcGNzaWdfc2VsZiA+Pj0gZnVuIHBjc2lnX3NlbGYgLT5cbiAgICAgIG1hcF9ub2RlcyBFQy5jbGFzc190eXBlX2ZpZWxkIGNsYXNzX3R5cGVfZmllbGQgc3VwZXIjY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICAoZnVuIHggLT4geC5wY3RmX2xvYylcbiAgICAgICAgYmFzZV9jdHh0IHBjc2lnX2ZpZWxkc1xuICAgICAgPj58IGZ1biBwY3NpZ19maWVsZHMgLT4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfVxuXG4gICAgKCogVE9ETzogdHJ5IHRvIGZhY3Rvcml6ZSAjc3RydWN0dXJlIGFuZCAjc2lnbmF0dXJlIHdpdGhvdXQgbWV0YS1wcm9ncmFtbWluZyAqKVxuICAgICgqJCopXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmUgYmFzZV9jdHh0IHN0ID1cbiAgICAgIGxldCByZWMgd2l0aF9leHRyYV9pdGVtcyBpdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zIH5yZXN0XG4gICAgICAgICAgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbG9vcCAocmV2X2NvbmNhdCBleHRyYV9pdGVtcykgfmluX2dlbmVyYXRlZF9jb2RlOnRydWVcbiAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2suaW5zZXJ0X2FmdGVyIGhvb2sgU3RydWN0dXJlX2l0ZW0gaXRlbS5wc3RyX2xvY1xuICAgICAgICAgICAgKE1hbnkgZXh0cmFfaXRlbXMpO1xuICAgICAgICBsZXQgb3JpZ2luYWxfcmVzdCA9IHJlc3QgaW5cbiAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIGV4cGVjdF9pdGVtcyB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IGV4cGVjdGVkID0gcmV2X2NvbmNhdCBleHBlY3RfaXRlbXMgaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSBpdGVtLnBzdHJfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICAgIENvZGVfbWF0Y2hlci5tYXRjaF9zdHJ1Y3R1cmVfcmVzIG9yaWdpbmFsX3Jlc3QgfnBvcyB+ZXhwZWN0ZWRcbiAgICAgICAgICAgICAgfm1pc21hdGNoX2hhbmRsZXI6KGZ1biBsb2MgcmVwbCAtPlxuICAgICAgICAgICAgICAgIGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLmYgU3RydWN0dXJlX2l0ZW0gbG9jIHJlcGwpXG4gICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6KCkpXG4gICAgICAgID4+fCBmdW4gKCkgLT4gaXRlbSA6OiAoZXh0cmFfaXRlbXMgQCByZXN0KVxuICAgICAgYW5kIGxvb3Agc3QgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbWF0Y2ggc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiBbXVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiAoXG4gICAgICAgICAgICBsZXQgbG9jID0gaXRlbS5wc3RyX2xvYyBpblxuICAgICAgICAgICAgbWF0Y2ggaXRlbS5wc3RyX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb25fcG9pbnRfbG9jID0gaXRlbS5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X2lubGluZV9yZXMgc3RydWN0dXJlX2l0ZW0gfmN0eHQgZXh0XG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBpdGVtIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc3RydWN0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPiBpdGVtIDo6IHJlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgKCgpLCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycykgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBhc3NlcnRfbm9fYXR0cmlidXRlcyBhdHRyczsgKilcbiAgICAgICAgICAgICAgICAgICAgbG9vcCBpdGVtcyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZSA+Pj0gZnVuIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgU3RydWN0dXJlX2l0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHN0cl9sb2MgKE1hbnkgaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+fCBmdW4gcmVzdCAtPiBpdGVtcyBAIHJlc3QpXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gZXhwYW5kZWRfaXRlbSAtPlxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X2V4biA9IGV4bl90b19zdHJpIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggKGl0ZW0ucHN0cl9kZXNjLCBleHBhbmRlZF9pdGVtLnBzdHJfZGVzYykgd2l0aFxuICAgICAgICAgICAgICAgIHwgUHN0cl90eXBlIChyZiwgdGRzKSwgUHN0cl90eXBlIChleHBfcmYsIGV4cF90ZHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIE5vIGNvbnRleHQtZnJlZSBydWxlIGNhbiByZXdyaXRlIHJlYyBmbGFncyBhdG0sIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGFjdHMgYXMgYSBmYWlsc2FmZSBpbiBjYXNlIGl0IGV2ZXIgY2hhbmdlcyAqKVxuICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFBvbHkuKHJmID0gZXhwX3JmKSk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3N0cl90eXBlX2RlY2xzIHJmIH5pdGVtczp0ZHNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0IHJmXG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW1zOnRkcyB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgICB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc3RyX21vZHR5cGUgbXRkLCBQc3RyX21vZHR5cGUgZXhwX210ZCAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMgfml0ZW06bXRkXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdFxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtOm10ZCB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICAgIH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfdHlwZXh0IHRlLCBQc3RyX3R5cGV4dCBleHBfdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX3R5cGVfZXh0cyB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3Qgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGVjLCBQc3RyX2V4Y2VwdGlvbiBleHBfZWMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX2V4Y2VwdGlvbnMgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9leGNlcHRpb25zX2V4cGVjdCB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3N0cnVjdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWRfaXRlbSA6OiByZXN0KSlcbiAgICAgIGluXG4gICAgICBsb29wIHN0IH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG4gICAgKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuICAgIG1ldGhvZCEgc2lnbmF0dXJlIGJhc2VfY3R4dCBzZyA9XG4gICAgICBsZXQgcmVjIHdpdGhfZXh0cmFfaXRlbXMgaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtcyB+cmVzdFxuICAgICAgICAgIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIGxvb3AgKHJldl9jb25jYXQgZXh0cmFfaXRlbXMpIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlXG4gICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLmluc2VydF9hZnRlciBob29rIFNpZ25hdHVyZV9pdGVtIGl0ZW0ucHNpZ19sb2NcbiAgICAgICAgICAgIChNYW55IGV4dHJhX2l0ZW1zKTtcbiAgICAgICAgbGV0IG9yaWdpbmFsX3Jlc3QgPSByZXN0IGluXG4gICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj49IGZ1biByZXN0IC0+XG4gICAgICAgIChtYXRjaCBleHBlY3RfaXRlbXMgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBleHBlY3RlZCA9IHJldl9jb25jYXQgZXhwZWN0X2l0ZW1zIGluXG4gICAgICAgICAgICBsZXQgcG9zID0gaXRlbS5wc2lnX2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgICBDb2RlX21hdGNoZXIubWF0Y2hfc2lnbmF0dXJlX3JlcyBvcmlnaW5hbF9yZXN0IH5wb3MgfmV4cGVjdGVkXG4gICAgICAgICAgICAgIH5taXNtYXRjaF9oYW5kbGVyOihmdW4gbG9jIHJlcGwgLT5cbiAgICAgICAgICAgICAgICBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5mIFNpZ25hdHVyZV9pdGVtIGxvYyByZXBsKVxuICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OigpKVxuICAgICAgICA+PnwgZnVuICgpIC0+IGl0ZW0gOjogKGV4dHJhX2l0ZW1zIEAgcmVzdClcbiAgICAgIGFuZCBsb29wIHNnIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIG1hdGNoIHNnIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gW11cbiAgICAgICAgfCBpdGVtIDo6IHJlc3QgLT4gKFxuICAgICAgICAgICAgbGV0IGxvYyA9IGl0ZW0ucHNpZ19sb2MgaW5cbiAgICAgICAgICAgIG1hdGNoIGl0ZW0ucHNpZ19kZXNjIHdpdGhcbiAgICAgICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICAgICAgICAgICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyA9IGl0ZW0ucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICAgICAgICB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9pbmxpbmVfcmVzIHNpZ25hdHVyZV9pdGVtIH5jdHh0IGV4dFxuICAgICAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gaXRlbSAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3NpZ25hdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT4gaXRlbSA6OiByZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgICgoKSwgYXR0cmlidXRlc19lcnJvcnMgYXR0cnMpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogYXNzZXJ0X25vX2F0dHJpYnV0ZXMgYXR0cnM7ICopXG4gICAgICAgICAgICAgICAgICAgIGxvb3AgaXRlbXMgfmluX2dlbmVyYXRlZF9jb2RlOnRydWUgPj49IGZ1biBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIFNpZ25hdHVyZV9pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBzaWdfbG9jIChNYW55IGl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+PnwgZnVuIHJlc3QgLT4gaXRlbXMgQCByZXN0KVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGV4cGFuZGVkX2l0ZW0gLT5cbiAgICAgICAgICAgICAgICBsZXQgY29udmVydF9leG4gPSBleG5fdG9fc2lnaSBpblxuICAgICAgICAgICAgICAgIG1hdGNoIChpdGVtLnBzaWdfZGVzYywgZXhwYW5kZWRfaXRlbS5wc2lnX2Rlc2MpIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZSAocmYsIHRkcyksIFBzaWdfdHlwZSAoZXhwX3JmLCBleHBfdGRzKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBObyBjb250ZXh0LWZyZWUgcnVsZSBjYW4gcmV3cml0ZSByZWMgZmxhZ3MgYXRtLCB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBhY3RzIGFzIGEgZmFpbHNhZmUgaW4gY2FzZSBpdCBldmVyIGNoYW5nZXMgKilcbiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChQb2x5LihyZiA9IGV4cF9yZikpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zaWdfdHlwZV9kZWNscyByZiB+aXRlbXM6dGRzXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW1zOmV4cF90ZHMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3NpZ190eXBlX2RlY2xzX2V4cGVjdCByZlxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtczp0ZHMgfmV4cGFuZGVkX2l0ZW1zOmV4cF90ZHMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgICAgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHNpZ19tb2R0eXBlIG10ZCwgUHNpZ19tb2R0eXBlIGV4cF9tdGQgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzIH5pdGVtOm10ZFxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHBlY3RcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbTptdGQgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgICB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX3R5cGV4dCB0ZSwgUHNpZ190eXBleHQgZXhwX3RlIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ190eXBlX2V4dHMgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0IH5pdGVtOnRlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX3RlIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBlYywgUHNpZ19leGNlcHRpb24gZXhwX2VjIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19leGNlcHRpb25zIH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfZXhjZXB0aW9uc19leHBlY3Qgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IF8sIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzaWduYXR1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkX2l0ZW0gOjogcmVzdCkpXG4gICAgICBpblxuICAgICAgbG9vcCBzZyB+aW5fZ2VuZXJhdGVkX2NvZGU6ZmFsc2VcblxuICAgICgqJCopXG4gIGVuZFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gVXRpbHNcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEV4dGVuc2lvbiBvZiAnYSBFeHRlbnNpb24uQ29udGV4dC50XG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgb2YgJ2EgQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQudFxuXG4gIGxldCBwYXJlbiBwcCBwcGYgeCA9IFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBwcGYgXCIoJWEpXCIgcHAgeFxuXG4gIGxldCBwcmludGVyIDogdHlwZSBhLiBhIHQgLT4gU3RkbGliLkZvcm1hdC5mb3JtYXR0ZXIgLT4gYSAtPiB1bml0ID1cbiAgICBsZXQgb3BlbiBFeHRlbnNpb24uQ29udGV4dCBpblxuICAgIGxldCBvcGVuIEF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0IGluXG4gICAgZnVuY3Rpb25cbiAgICB8IEV4dGVuc2lvbiBDbGFzc19leHByIC0+IFBwcmludGFzdC5jbGFzc19leHByXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX2ZpZWxkXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfdHlwZSAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZVxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX3R5cGVfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX3R5cGVfZmllbGRcbiAgICB8IEV4dGVuc2lvbiBDb3JlX3R5cGUgLT4gcGFyZW4gUHByaW50YXN0LmNvcmVfdHlwZVxuICAgIHwgRXh0ZW5zaW9uIEV4cHJlc3Npb24gLT4gcGFyZW4gUHByaW50YXN0LmV4cHJlc3Npb25cbiAgICB8IEV4dGVuc2lvbiBNb2R1bGVfZXhwciAtPiBQcHJpbnRhc3QubW9kdWxlX2V4cHJcbiAgICB8IEV4dGVuc2lvbiBNb2R1bGVfdHlwZSAtPiBQcHJpbnRhc3QubW9kdWxlX3R5cGVcbiAgICB8IEV4dGVuc2lvbiBQYXR0ZXJuIC0+IHBhcmVuIFBwcmludGFzdC5wYXR0ZXJuXG4gICAgfCBFeHRlbnNpb24gU2lnbmF0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnNpZ25hdHVyZV9pdGVtXG4gICAgfCBFeHRlbnNpb24gU3RydWN0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gICAgfCBFeHRlbnNpb24gUHB4X2ltcG9ydCAtPiBQcHJpbnRhc3QudHlwZV9kZWNsYXJhdGlvblxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIFN0cnVjdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zdHJ1Y3R1cmVfaXRlbVxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIFNpZ25hdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zaWduYXR1cmVfaXRlbVxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIENsYXNzX2ZpZWxkIC0+IFBwcmludGFzdC5jbGFzc19maWVsZFxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIENsYXNzX3R5cGVfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX3R5cGVfZmllbGRcbmVuZFxuXG5tb2R1bGUgUmVwbGFjZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSBkYXRhID1cbiAgICB8IFZhbHVlcyA6XG4gICAgICAgICdhIENvbnRleHQudCAqICdhIENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLnNpbmdsZV9vcl9tYW55XG4gICAgICAgIC0+IGRhdGFcbiAgICB8IFRleHQgb2Ygc3RyaW5nXG5cbiAgdHlwZSB0ID0geyBzdGFydCA6IExleGluZy5wb3NpdGlvbjsgc3RvcCA6IExleGluZy5wb3NpdGlvbjsgZGF0YSA6IGRhdGEgfVxuXG4gIGxldCBtYWtlIH5jb250ZXh0IH5zdGFydCB+c3RvcCB+cmVwbCAoKSA9XG4gICAgeyBzdGFydDsgc3RvcDsgZGF0YSA9IFZhbHVlcyAoY29udGV4dCwgcmVwbCkgfVxuXG4gIGxldCBtYWtlX3RleHQgfnN0YXJ0IH5zdG9wIH5yZXBsICgpID0geyBzdGFydDsgc3RvcDsgZGF0YSA9IFRleHQgcmVwbCB9XG5cbiAgbGV0IHRleHQgYmxvY2sgPVxuICAgIG1hdGNoIGJsb2NrLmRhdGEgd2l0aFxuICAgIHwgVGV4dCBzIC0+IHNcbiAgICB8IFZhbHVlcyAoY29udGV4dCwgZ2VuZXJhdGVkKSAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IHByaW50ZXIgPSBDb250ZXh0LnByaW50ZXIgY29udGV4dCBpblxuICAgICAgICAgIG1hdGNoIGdlbmVyYXRlZCB3aXRoXG4gICAgICAgICAgfCBTaW5nbGUgeCAtPiBTdGRsaWIuRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcmludGVyIHhcbiAgICAgICAgICB8IE1hbnkgbCAtPlxuICAgICAgICAgICAgICBTdGRsaWIuRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAgICAgIChmdW4gcHBmIGwgLT5cbiAgICAgICAgICAgICAgICAgIExpc3QuaXRlciBsIH5mOihmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgIHByaW50ZXIgcHBmIHg7XG4gICAgICAgICAgICAgICAgICAgICAgU3RkbGliLkZvcm1hdC5wcF9wcmludF9uZXdsaW5lIHBwZiAoKSkpXG4gICAgICAgICAgICAgICAgbFxuICAgICAgICBpblxuICAgICAgICBsZXQgaXNfd3MgPSBmdW5jdGlvbiAnICcgfCAnXFx0JyB8ICdcXHInIC0+IHRydWUgfCBfIC0+IGZhbHNlIGluXG4gICAgICAgIGxldCBzdHJpcF93cyBzIGkgbGVuID1cbiAgICAgICAgICBsZXQgbGVuID0gcmVmIGxlbiBpblxuICAgICAgICAgIHdoaWxlICFsZW4gPiAwICYmIGlzX3dzIHMuW2kgKyAhbGVuIC0gMV0gZG9cbiAgICAgICAgICAgIGxlbiA6PSAhbGVuIC0gMVxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgU3RyaW5nLnN1YiBzIH5wb3M6aSB+bGVuOiFsZW5cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyBsb29wIHMgcG9zID1cbiAgICAgICAgICBpZiBwb3MgPj0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gW11cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgaWR4ID1cbiAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmluZGV4X2Zyb21fb3B0IHMgcG9zICdcXG4nIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc3RyaXBfd3MgcyBwb3MgKGlkeCAtIHBvcykgOjogXCJcXG5cIiA6OiBsb29wIHMgKGlkeCArIDEpXG4gICAgICAgIGluXG4gICAgICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIChsb29wIHMgMClcbmVuZFxuXG5vcGVuIFJlcGxhY2VtZW50XG5cbm1vZHVsZSBSZXBsYWNlbWVudHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUmVwbGFjZW1lbnQudCBsaXN0XG5cbiAgKCogTWVyZ2UgbG9jYXRpb25zIG9mIHRoZSBnZW5lcmF0ZWQgY29kZS4gT3ZlcmxhcHBpbmcgbG9jYXRpb25zIGFyZSBtZXJnZWQgaW50byBvbmUuIFRoZVxuICAgICByZXN1bHQgaXMgc29ydGVkIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSB0byB0aGUgZW5kLiAqKVxuICBsZXQgY2hlY2tfYW5kX3NvcnQgfmlucHV0X2ZpbGVuYW1lIH5pbnB1dF9uYW1lIHJlcGxzID1cbiAgICBMaXN0Lml0ZXIgcmVwbHMgfmY6KGZ1biByZXBsIC0+XG4gICAgICAgIGlmXG4gICAgICAgICAgU3RyaW5nLiggPD4gKSByZXBsLnN0YXJ0LnBvc19mbmFtZSBpbnB1dF9uYW1lXG4gICAgICAgICAgfHwgU3RyaW5nLiggPD4gKSByZXBsLnN0b3AucG9zX2ZuYW1lIGlucHV0X25hbWVcbiAgICAgICAgdGhlblxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBpbnB1dF9maWxlbmFtZSlcbiAgICAgICAgICAgIFwicHB4bGliX2RyaXZlcjogdGhlIHJld3JpdGluZyBjb250YWlucyBwYXJ0cyBmcm9tIGFub3RoZXIgZmlsZS5cXG5cXFxuICAgICAgICAgICAgIEl0IGlzIHRvbyBjb21wbGljYXRlZCB0byByZWNvbmNpbGUgaXQgd2l0aCB0aGUgc291cmNlOiAlcyBvciAlcyBcXFxuICAgICAgICAgICAgIGFuZCAlc1wiXG4gICAgICAgICAgICByZXBsLnN0YXJ0LnBvc19mbmFtZSByZXBsLnN0b3AucG9zX2ZuYW1lIGlucHV0X25hbWU7XG4gICAgICAgIGFzc2VydCAocmVwbC5zdGFydC5wb3NfY251bSA8PSByZXBsLnN0b3AucG9zX2NudW0pKTtcbiAgICBsZXQgcmVwbHMgPVxuICAgICAgTGlzdC5zb3J0IHJlcGxzIH5jbXA6KGZ1biBhIGIgLT5cbiAgICAgICAgICBsZXQgZCA9IGNvbXBhcmUgYS5zdGFydC5wb3NfY251bSBiLnN0b3AucG9zX2NudW0gaW5cbiAgICAgICAgICBpZiBkID0gMCB0aGVuXG4gICAgICAgICAgICAoKiBQdXQgdGhlIGxhcmdlc3QgZmlyc3QsIHNvIHRoYXQgdGhlIGZvbGxvd2luZyBbZmlsdGVyXSBmdW5jdGlvbnMgYWx3YXlzIHBpY2tzIHVwXG4gICAgICAgICAgICAgICB0aGUgbGFydGVzdCBmaXJzdCB3aGVuIHNldmVyYWwgZ2VuZXJhdGVkIHJlcGxzIHN0YXJ0IGF0IHRoZSBzYW1lIHBvc2l0aW9uICopXG4gICAgICAgICAgICBjb21wYXJlIGIuc3RvcC5wb3NfY251bSBhLnN0b3AucG9zX2NudW1cbiAgICAgICAgICBlbHNlIGQpXG4gICAgaW5cbiAgICBsZXQgcmVjIGZpbHRlciBwcmV2IHJlcGxzIH5hY2MgPVxuICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgfCBbXSAtPiBMaXN0LnJldiAocHJldiA6OiBhY2MpXG4gICAgICB8IHJlcGwgOjogcmVwbHMgLT5cbiAgICAgICAgICBpZiBwcmV2LnN0b3AucG9zX2NudW0gPiByZXBsLnN0YXJ0LnBvc19jbnVtIHRoZW5cbiAgICAgICAgICAgIGlmIHByZXYuc3RvcC5wb3NfY251bSA+PSByZXBsLnN0b3AucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgICAoKiBbcmVwbF0gaXMgaW5jbHVkZWQgaW4gW3ByZXZdID0+IHNraXAgW3JlcGxdICopXG4gICAgICAgICAgICAgIGZpbHRlciBwcmV2IHJlcGxzIH5hY2NcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICAgICAgXCJwcHhsaWJfZHJpdmVyOiBsb2NhdGlvbnMgb2YgZ2VuZXJhdGVkIGNvZGUgYXJlIG92ZXJsYXBwaW5nLCBcXFxuICAgICAgICAgICAgICAgICBjYW5ub3QgcmVjb25jaWxlXCJcbiAgICAgICAgICAgICAgICB+bG9jOlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsb2Nfc3RhcnQgPSByZXBsLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBsb2NfZW5kID0gcHJldi5zdG9wO1xuICAgICAgICAgICAgICAgICAgICBsb2NfZ2hvc3QgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGZpbHRlciByZXBsIHJlcGxzIH5hY2M6KHByZXYgOjogYWNjKVxuICAgIGluXG4gICAgbWF0Y2ggcmVwbHMgd2l0aCBbXSAtPiBbXSB8IHJlcGwgOjogcmVwbHMgLT4gZmlsdGVyIHJlcGwgcmVwbHMgfmFjYzpbXVxuZW5kXG5cbmxldCBjb3VudF9uZXdsaW5lcyBzID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBTdHJpbmcuaXRlciBzIH5mOihmdW5jdGlvbiAnXFxuJyAtPiBuIDo9ICFuICsgMSB8IF8gLT4gKCkpO1xuICAhblxuXG5sZXQgZ2VuZXJhdGVkX2NvZGVfYmVnaW4gPVxuICBcIigqIC0tLS0teyBHRU5FUkFURUQgQ09ERSBCRUdJTiB9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVwiXG5cbmxldCBnZW5lcmF0ZWRfY29kZV9lbmQgPVxuICBcIigqIC0tLS0teyBHRU5FUkFURUQgQ09ERSBFTkQgICB9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVwiXG5cbnR5cGUgbW9kZSA9IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2Nrc1xudHlwZSB0YXJnZXQgPSBPdXRwdXQgb2YgbW9kZSB8IENvcnJlY3RlZFxuXG5sZXQgc2tpcF9ibGFua19lb2wgY29udGVudHMgKHBvcyA6IExleGluZy5wb3NpdGlvbikgPVxuICBsZXQgcmVjIGxvb3AgY251bSA9XG4gICAgaWYgY251bSA9IFN0cmluZy5sZW5ndGggY29udGVudHMgdGhlbiB7IHBvcyB3aXRoIHBvc19jbnVtID0gY251bSB9XG4gICAgZWxzZVxuICAgICAgbWF0Y2ggY29udGVudHMuW2NudW1dIHdpdGhcbiAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxyJyAtPiBsb29wIChjbnVtICsgMSlcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb3Mgd2l0aFxuICAgICAgICAgICAgcG9zX2NudW0gPSBjbnVtICsgMTtcbiAgICAgICAgICAgIHBvc19sbnVtID0gcG9zLnBvc19sbnVtICsgMTtcbiAgICAgICAgICAgIHBvc19ib2wgPSBjbnVtICsgMTtcbiAgICAgICAgICB9XG4gICAgICB8IF8gLT4gcG9zXG4gIGluXG4gIGxvb3AgcG9zLnBvc19jbnVtXG5cbmxldCB3aXRoX291dHB1dCB+c3R5bGVyIH4oa2luZCA6IEtpbmQudCkgZm4gfmYgPVxuICBtYXRjaCBzdHlsZXIgd2l0aFxuICB8IE5vbmUgLT4gd2l0aF9vdXRwdXQgZm4gfmJpbmFyeTpmYWxzZSB+ZlxuICB8IFNvbWUgY21kIC0+XG4gICAgICBsZXQgdG1wX2ZuLCBvYyA9XG4gICAgICAgIFN0ZGxpYi5GaWxlbmFtZS5vcGVuX3RlbXBfZmlsZSBcInBweGxpYl9kcml2ZXJcIlxuICAgICAgICAgIChtYXRjaCBraW5kIHdpdGggSW1wbCAtPiBcIi5tbFwiIHwgSW50ZiAtPiBcIi5tbGlcIilcbiAgICAgIGluXG4gICAgICBsZXQgY21kID1cbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCIlcyAlcyVzXCIgY21kXG4gICAgICAgICAgKFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSB0bXBfZm4pXG4gICAgICAgICAgKG1hdGNoIGZuIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSBmbiAtPiBcIiA+IFwiIF4gU3RkbGliLkZpbGVuYW1lLnF1b3RlIGZuKVxuICAgICAgaW5cbiAgICAgIGxldCBuID1cbiAgICAgICAgRXhuLnByb3RlY3R4IHRtcF9mbiB+ZmluYWxseTpTdGRsaWIuU3lzLnJlbW92ZSB+ZjooZnVuIF8gLT5cbiAgICAgICAgICAgIEV4bi5wcm90ZWN0eCBvYyB+ZmluYWxseTpjbG9zZV9vdXQgfmY7XG4gICAgICAgICAgICBTdGRsaWIuU3lzLmNvbW1hbmQgY21kKVxuICAgICAgaW5cbiAgICAgIGlmIG4gPD4gMCB0aGVuIChcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCJjb21tYW5kIGV4aXRlZCB3aXRoIGNvZGUgJWQ6ICVzXFxuXCIgbiBjbWQ7XG4gICAgICAgIFN0ZGxpYi5leGl0IDEpXG5cbmxldCByZWNvbmNpbGUgP3N0eWxlciAocmVwbHMgOiBSZXBsYWNlbWVudHMudCkgfmtpbmQgfmNvbnRlbnRzIH5pbnB1dF9maWxlbmFtZVxuICAgIH5vdXRwdXQgfmlucHV0X25hbWUgfnRhcmdldCA9XG4gIGxldCByZXBscyA9IFJlcGxhY2VtZW50cy5jaGVja19hbmRfc29ydCB+aW5wdXRfZmlsZW5hbWUgfmlucHV0X25hbWUgcmVwbHMgaW5cbiAgbGV0IG91dHB1dF9uYW1lID0gbWF0Y2ggb3V0cHV0IHdpdGggTm9uZSAtPiBcIjxzdGRvdXQ+XCIgfCBTb21lIGZuIC0+IGZuIGluXG4gIHdpdGhfb3V0cHV0IG91dHB1dCB+c3R5bGVyIH5raW5kIH5mOihmdW4gb2MgLT5cbiAgICAgIGxldCBjb3B5X2lucHV0IHBvcyB+dXBfdG8gfmxpbmUgfmxhc3RfaXNfdGV4dCB+aXNfdGV4dCA9XG4gICAgICAgIGxldCBwb3MgPSBpZiBsYXN0X2lzX3RleHQgdGhlbiBwb3MgZWxzZSBza2lwX2JsYW5rX2VvbCBjb250ZW50cyBwb3MgaW5cbiAgICAgICAgaWYgcG9zLnBvc19jbnVtIDwgdXBfdG8gdGhlbiAoXG4gICAgICAgICAgKG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiIyAlZCAlU1xcbiUqc1wiIHBvcy5wb3NfbG51bSBpbnB1dF9uYW1lXG4gICAgICAgICAgICAgICAgKHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKVxuICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgfCBDb3JyZWN0ZWQgLT4gKCkpO1xuICAgICAgICAgIG91dHB1dF9zdWJzdHJpbmcgb2MgY29udGVudHMgfnBvczpwb3MucG9zX2NudW1cbiAgICAgICAgICAgIH5sZW46KHVwX3RvIC0gcG9zLnBvc19jbnVtKTtcbiAgICAgICAgICBsZXQgbGluZSA9IHJlZiAobGluZSArIDEpIGluXG4gICAgICAgICAgZm9yIGkgPSBwb3MucG9zX2NudW0gdG8gdXBfdG8gLSAxIGRvXG4gICAgICAgICAgICBpZiBDaGFyLmVxdWFsIGNvbnRlbnRzLltpXSAnXFxuJyB0aGVuIGxpbmUgOj0gIWxpbmUgKyAxXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBsZXQgbGluZSA9ICFsaW5lIGluXG4gICAgICAgICAgaWYgKG5vdCBpc190ZXh0KSAmJiBDaGFyLiggPD4gKSBjb250ZW50cy5bdXBfdG8gLSAxXSAnXFxuJyB0aGVuIChcbiAgICAgICAgICAgIG91dHB1dF9jaGFyIG9jICdcXG4nO1xuICAgICAgICAgICAgbGluZSArIDEpXG4gICAgICAgICAgZWxzZSBsaW5lKVxuICAgICAgICBlbHNlIGxpbmVcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGxvb3AgbGluZSAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSByZXBscyB+bGFzdF9pc190ZXh0ID1cbiAgICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAgKGNvcHlfaW5wdXQgcG9zIH51cF90bzooU3RyaW5nLmxlbmd0aCBjb250ZW50cykgfmxpbmVcbiAgICAgICAgICAgICAgICAgfmxhc3RfaXNfdGV4dCB+aXNfdGV4dDpmYWxzZVxuICAgICAgICAgICAgICAgIDogaW50KVxuICAgICAgICB8IHJlcGwgOjogcmVwbHMgLT5cbiAgICAgICAgICAgIGxldCBpc190ZXh0ID1cbiAgICAgICAgICAgICAgbWF0Y2ggcmVwbC5kYXRhIHdpdGggVGV4dCBfIC0+IHRydWUgfCBWYWx1ZXMgXyAtPiBmYWxzZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsaW5lID1cbiAgICAgICAgICAgICAgY29weV9pbnB1dCBwb3MgfnVwX3RvOnJlcGwuc3RhcnQucG9zX2NudW0gfmxpbmUgfmxhc3RfaXNfdGV4dFxuICAgICAgICAgICAgICAgIH5pc190ZXh0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHMgPSBSZXBsYWNlbWVudC50ZXh0IHJlcGwgaW5cbiAgICAgICAgICAgIGxldCBsaW5lID1cbiAgICAgICAgICAgICAgbWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIC0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiMgJWQgJVNcXG5cIiAobGluZSArIDEpIG91dHB1dF9uYW1lO1xuICAgICAgICAgICAgICAgICAgbGluZSArIDFcbiAgICAgICAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiVzXFxuXCIgZ2VuZXJhdGVkX2NvZGVfYmVnaW47XG4gICAgICAgICAgICAgICAgICBsaW5lICsgMVxuICAgICAgICAgICAgICB8IENvcnJlY3RlZCAtPiBsaW5lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBzO1xuICAgICAgICAgICAgbGV0IGxpbmUgPSBsaW5lICsgY291bnRfbmV3bGluZXMgcyBpblxuICAgICAgICAgICAgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHJlcGwuc3RvcCByZXBscyB+bGFzdF9pc190ZXh0OmlzX3RleHRcbiAgICAgIGFuZCBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgKHBvcyA6IExleGluZy5wb3NpdGlvbikgcmVwbHNcbiAgICAgICAgICB+bGFzdF9pc190ZXh0ID1cbiAgICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgICB8IFtdIC0+IGVuZF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0XG4gICAgICAgIHwgcmVwbCA6OiByZXBscycgLT5cbiAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICBpZiBsYXN0X2lzX3RleHQgdGhlbiBwb3MgZWxzZSBza2lwX2JsYW5rX2VvbCBjb250ZW50cyBwb3NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBwb3MucG9zX2NudW0gPCByZXBsLnN0YXJ0LnBvc19jbnVtIHRoZW5cbiAgICAgICAgICAgICAgZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IHMgPSBSZXBsYWNlbWVudC50ZXh0IHJlcGwgaW5cbiAgICAgICAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBzO1xuICAgICAgICAgICAgICBsZXQgbGluZSA9IGxpbmUgKyBjb3VudF9uZXdsaW5lcyBzIGluXG4gICAgICAgICAgICAgIGxldCBsYXN0X2lzX3RleHQgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlcGwuZGF0YSB3aXRoIFRleHQgXyAtPiB0cnVlIHwgVmFsdWVzIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHJlcGwuc3RvcCByZXBscycgfmxhc3RfaXNfdGV4dFxuICAgICAgYW5kIGVuZF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0ID1cbiAgICAgICAgKG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IENvcnJlY3RlZCAtPiAoKVxuICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT5cbiAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9lbmQpO1xuICAgICAgICBsb29wIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHRcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID1cbiAgICAgICAge1xuICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBpbnB1dF9uYW1lO1xuICAgICAgICAgIHBvc19sbnVtID0gMTtcbiAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICBwb3NfY251bSA9IDA7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICB8IHsgc3RhcnQgPSB7IHBvc19jbnVtID0gMDsgXyB9OyBfIH0gOjogXyAtPlxuICAgICAgICAgIChtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IENvcnJlY3RlZCAtPiAoKVxuICAgICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPlxuICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiVzXFxuXCIgZ2VuZXJhdGVkX2NvZGVfYmVnaW4pO1xuICAgICAgICAgIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgMSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dDpmYWxzZVxuICAgICAgfCBfIC0+IGxvb3AgMSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dDpmYWxzZSlcbiIsIm9wZW4gSW1wb3J0XG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBuZXh0X2lkIDogaW50O1xuICBtdXRhYmxlIGJpbmRpbmdzIDogUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgbGlzdDtcbn1cblxubGV0IGNyZWF0ZSAoKSA9IHsgbmV4dF9pZCA9IDA7IGJpbmRpbmdzID0gW10gfVxuXG5sZXQgc2FuaXRpemUgdCBlID1cbiAgbWF0Y2ggdC5iaW5kaW5ncyB3aXRoXG4gIHwgW10gLT4gZVxuICB8IGJpbmRpbmdzIC0+XG4gICAgICBsZXQgKG1vZHVsZSBBc3QpID0gQXN0X2J1aWxkZXIubWFrZSBlLnBleHBfbG9jIGluXG4gICAgICBBc3QucGV4cF9sZXQgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGVcblxubGV0IHF1b3RlIHQgKGUgOiBleHByZXNzaW9uKSA9XG4gIGxldCBsb2MgPSBlLnBleHBfbG9jIGluXG4gIGxldCAobW9kdWxlIEFzdCkgPSBBc3RfYnVpbGRlci5tYWtlIGxvYyBpblxuICBsZXQgbmFtZSA9IFwiX19cIiBeIEludC50b19zdHJpbmcgdC5uZXh0X2lkIGluXG4gIGxldCBiaW5kaW5nX2V4cHIsIHF1b3RlZF9leHByID1cbiAgICBtYXRjaCBlIHdpdGhcbiAgICAoKiBPcHRpbWl6ZSBpZGVudGlmaWVyIHF1b3RpbmcgYnkgYXZvaWRpbmcgY2xvc3VyZS5cbiAgICAgICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL29jYW1sLXBweC9wcHhfZGVyaXZpbmcvcHVsbC8yNTIuICopXG4gICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgXzsgXyB9IC0+IChlLCBBc3QuZXZhciBuYW1lKVxuICAgIHwgXyAtPlxuICAgICAgICBsZXQgYmluZGluZ19leHByID1cbiAgICAgICAgICBBc3QucGV4cF9mdW4gTm9sYWJlbCBOb25lXG4gICAgICAgICAgICAobGV0IHVuaXQgPSBBc3RfYnVpbGRlci5EZWZhdWx0LkxvY2F0ZWQubGlkZW50IH5sb2MgXCIoKVwiIGluXG4gICAgICAgICAgICAgQXN0LnBwYXRfY29uc3RydWN0IHVuaXQgTm9uZSlcbiAgICAgICAgICAgIGVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHF1b3RlZF9leHByID0gQXN0LmVhcHBseSAoQXN0LmV2YXIgbmFtZSkgWyBBc3QuZXVuaXQgXSBpblxuICAgICAgICAoYmluZGluZ19leHByLCBxdW90ZWRfZXhwcilcbiAgaW5cbiAgbGV0IGJpbmRpbmcgPVxuICAgIGxldCBwYXQgPSBBc3QucHZhciBuYW1lIGluXG4gICAgQXN0LnZhbHVlX2JpbmRpbmcgfnBhdCB+ZXhwcjpiaW5kaW5nX2V4cHJcbiAgaW5cbiAgdC5iaW5kaW5ncyA8LSBiaW5kaW5nIDo6IHQuYmluZGluZ3M7XG4gIHQubmV4dF9pZCA8LSB0Lm5leHRfaWQgKyAxO1xuICBxdW90ZWRfZXhwclxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBta19hdHRyX25vbG9jIHR4dCA9IEFzdF9oZWxwZXIuQXR0ci5tayBMb2NhdGlvbi57IHR4dDsgbG9jID0gbm9uZSB9XG5sZXQgaGlkZV9hdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgPSBta19hdHRyX25vbG9jIFwibWVybGluLmhpZGVcIiAoUFN0ciBbXSlcbmxldCBmb2N1c19hdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgPSBta19hdHRyX25vbG9jIFwibWVybGluLmZvY3VzXCIgKFBTdHIgW10pXG5cbmxldCBoaWRlX3BhdHRlcm4gKHsgcHBhdF9hdHRyaWJ1dGVzOyBfIH0gYXMgcCkgPVxuICB7IHAgd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBoaWRlX2F0dHJpYnV0ZSA6OiBwcGF0X2F0dHJpYnV0ZXMgfVxuXG5sZXQgZm9jdXNfcGF0dGVybiAoeyBwcGF0X2F0dHJpYnV0ZXM7IF8gfSBhcyBwKSA9XG4gIHsgcCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGZvY3VzX2F0dHJpYnV0ZSA6OiBwcGF0X2F0dHJpYnV0ZXMgfVxuXG5sZXQgaGlkZV9leHByZXNzaW9uICh7IHBleHBfYXR0cmlidXRlczsgXyB9IGFzIGUpID1cbiAgeyBlIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gaGlkZV9hdHRyaWJ1dGUgOjogcGV4cF9hdHRyaWJ1dGVzIH1cblxubGV0IGZvY3VzX2V4cHJlc3Npb24gKHsgcGV4cF9hdHRyaWJ1dGVzOyBfIH0gYXMgZSkgPVxuICB7IGUgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBmb2N1c19hdHRyaWJ1dGUgOjogcGV4cF9hdHRyaWJ1dGVzIH1cbiIsIm9wZW4gSW1wb3J0XG5cbm1vZHVsZSBOb25faW50ZXJzZWN0aW5nX3JhbmdlcyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBpbnNlcnQgOiBub2RlX25hbWU6c3RyaW5nIC0+IExvY2F0aW9uLnQgLT4gdCAtPiB0XG4gIHZhbCB1bmlvbiA6IHQgLT4gdCAtPiB0XG5cbiAgdmFsIGNvdmVyZWRfYnkgOiB0IC0+IGxvYzpMb2NhdGlvbi50IC0+IGJvb2xcbiAgKCoqIFtjb3ZlcmVkX2J5IHQgfmxvYyA9IHRydWVdIGlmZiBbdF0gaXMgY292ZXJlZCBieSBbbG9jXSAqKVxuXG4gIHZhbCBmaW5kX291dHNpZGUgOiBMb2NhdGlvbi50IC0+IHQgLT4gc3RyaW5nICogTG9jYXRpb24udFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBtaW5fcG9zIDogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbjtcbiAgICBtYXhfcG9zIDogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbjtcbiAgICByYW5nZXMgOiAoc3RyaW5nICogTG9jYXRpb24udCkgbGlzdDtcbiAgfVxuXG4gIGxldCBlbXB0eSA9IHsgbWluX3BvcyA9IE5vbmU7IG1heF9wb3MgPSBOb25lOyByYW5nZXMgPSBbXSB9XG5cbiAgbGV0IHJlYyBpbnNlcnQgcmFuZ2VzICgobm9kZV9uYW1lLCBub2RlX2xvYykgYXMgbm9kZSkgPVxuICAgIG1hdGNoIHJhbmdlcyB3aXRoXG4gICAgfCBbXSAtPiBbIG5vZGUgXVxuICAgIHwgKCh4X25hbWUsIHhfbG9jKSBhcyB4KSA6OiB4cyAtPlxuICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbiBpblxuICAgICAgICBpZiBjb21wYXJlX3BvcyBub2RlX2xvYy5sb2Nfc3RhcnQgeF9sb2MubG9jX2VuZCA+PSAwIHRoZW5cbiAgICAgICAgICBub2RlIDo6IHggOjogeHNcbiAgICAgICAgZWxzZSBpZiBjb21wYXJlX3BvcyB4X2xvYy5sb2Nfc3RhcnQgbm9kZV9sb2MubG9jX2VuZCA+PSAwIHRoZW5cbiAgICAgICAgICB4IDo6IGluc2VydCB4cyBub2RlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICByYWlzZV9lcnJvcmYgfmxvYzpub2RlX2xvY1xuICAgICAgICAgICAgXCJpbnZhbGlkIG91dHB1dCBmcm9tIHBweCwgJXMgb3ZlcmxhcHMgd2l0aCAlcyBhdCBsb2NhdGlvbjpALiVhXCJcbiAgICAgICAgICAgIG5vZGVfbmFtZSB4X25hbWUgTG9jYXRpb24ucHJpbnQgeF9sb2NcblxuICBsZXQgbWluX3BvcyBwMSBwMiA9XG4gICAgbWF0Y2ggKHAxLCBwMikgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCAoU29tZSBfIGFzIHApLCBOb25lIHwgTm9uZSwgKFNvbWUgXyBhcyBwKSAtPiBwXG4gICAgfCBTb21lIHAxLCBTb21lIHAyIC0+IFNvbWUgKExvY2F0aW9uLm1pbl9wb3MgcDEgcDIpXG5cbiAgbGV0IG1heF9wb3MgcDEgcDIgPVxuICAgIG1hdGNoIChwMSwgcDIpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgKFNvbWUgXyBhcyBwKSwgTm9uZSB8IE5vbmUsIChTb21lIF8gYXMgcCkgLT4gcFxuICAgIHwgU29tZSBwMSwgU29tZSBwMiAtPiBTb21lIChMb2NhdGlvbi5tYXhfcG9zIHAxIHAyKVxuXG4gIGxldCBsb25nZXN0X2ZpcnN0IGwxIGwyIH5zdG9wX2FmdGVyID1cbiAgICBsZXQgcmVjIGxvb3AgeHMgeXMgbiA9XG4gICAgICBtYXRjaCAoeHMsIHlzLCBuKSB3aXRoXG4gICAgICB8IFtdLCBfLCBfIHwgXywgXywgMCAtPiAobDIsIGwxKVxuICAgICAgfCBfLCBbXSwgXyAtPiAobDEsIGwyKVxuICAgICAgfCBfIDo6IHhzLCBfIDo6IHlzLCBuIC0+IGxvb3AgeHMgeXMgKG4gLSAxKVxuICAgIGluXG4gICAgbG9vcCBsMSBsMiBzdG9wX2FmdGVyXG5cbiAgbGV0IHVuaW9uIHQxIHQyID1cbiAgICBsZXQgaW5pdCwgbCA9IGxvbmdlc3RfZmlyc3QgdDEucmFuZ2VzIHQyLnJhbmdlcyB+c3RvcF9hZnRlcjo0MiBpblxuICAgIGxldCByYW5nZXMgPSBMaXN0LmZvbGRfbGVmdCBsIH5pbml0IH5mOmluc2VydCBpblxuICAgIHtcbiAgICAgIG1pbl9wb3MgPSBtaW5fcG9zIHQxLm1pbl9wb3MgdDIubWluX3BvcztcbiAgICAgIG1heF9wb3MgPSBtYXhfcG9zIHQxLm1heF9wb3MgdDIubWF4X3BvcztcbiAgICAgIHJhbmdlcztcbiAgICB9XG5cbiAgbGV0IGluc2VydCB+bm9kZV9uYW1lIGxvYyB0ID1cbiAgICB7XG4gICAgICBtaW5fcG9zID0gbWluX3BvcyAoU29tZSBsb2MubG9jX3N0YXJ0KSB0Lm1pbl9wb3M7XG4gICAgICBtYXhfcG9zID0gbWF4X3BvcyAoU29tZSBsb2MubG9jX2VuZCkgdC5tYXhfcG9zO1xuICAgICAgcmFuZ2VzID0gaW5zZXJ0IHQucmFuZ2VzIChub2RlX25hbWUsIGxvYyk7XG4gICAgfVxuXG4gIGxldCBjb3ZlcmVkX2J5IHQgfmxvYyA9XG4gICAgbWF0Y2ggKHQubWluX3BvcywgdC5tYXhfcG9zKSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgbWluX3BvcywgU29tZSBtYXhfcG9zIC0+XG4gICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIG1pbl9wb3MgbG9jLmxvY19zdGFydCA+PSAwXG4gICAgICAgICYmIExvY2F0aW9uLmNvbXBhcmVfcG9zIG1heF9wb3MgbG9jLmxvY19lbmQgPD0gMFxuICAgIHwgXywgXyAtPlxuICAgICAgICAoKiB0aGVyZSBhcmUgbm8gb3BlbiByYW5nZXMgKilcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGZpbmRfb3V0c2lkZSBsb2MgdCA9XG4gICAgTGlzdC5maW5kIHQucmFuZ2VzIH5mOihmdW4gKF8sIGwpIC0+XG4gICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxvYy5sb2Nfc3RhcnQgbC5sb2Nfc3RhcnQgPiAwXG4gICAgICAgIHx8IExvY2F0aW9uLmNvbXBhcmVfcG9zIGxvYy5sb2NfZW5kIGwubG9jX2VuZCA8IDApXG5lbmRcblxubGV0IHJlbG9jX3BtdHlfZnVuY3RvcnMgeCA9XG4gIGxldCBvdXRtb3N0X2xvYyA9IHgucG10eV9sb2MgaW5cbiAgbGV0IHJlYyBhdXggeCA9XG4gICAgbWF0Y2ggeC5wbXR5X2Rlc2Mgd2l0aFxuICAgIHwgUG10eV9mdW5jdG9yIChVbml0LCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG10eV9kZXNjID0gUG10eV9mdW5jdG9yIChVbml0LCByZXMpIH1cbiAgICB8IFBtdHlfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIG91dG1vc3RfbG9jIHJlcy5wbXR5X2xvYyA9IDAgdGhlblxuICAgICAgICAgIGxldCBsb2Nfc3RhcnQgPSBtdHkucG10eV9sb2MubG9jX2VuZCBpblxuICAgICAgICAgIGxldCByZXMgPSB7IHJlcyB3aXRoIHBtdHlfbG9jID0geyByZXMucG10eV9sb2Mgd2l0aCBsb2Nfc3RhcnQgfSB9IGluXG4gICAgICAgICAgeyB4IHdpdGggcG10eV9kZXNjID0gUG10eV9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgICAgICBlbHNlIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgfCBfIC0+IHhcbiAgaW5cbiAgYXV4IHhcblxubGV0IHJlbG9jX3Btb2RfZnVuY3RvcnMgeCA9XG4gIGxldCBvdXRtb3N0X2xvYyA9IHgucG1vZF9sb2MgaW5cbiAgbGV0IHJlYyBhdXggeCA9XG4gICAgbWF0Y2ggeC5wbW9kX2Rlc2Mgd2l0aFxuICAgIHwgUG1vZF9mdW5jdG9yIChVbml0LCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChVbml0LCByZXMpIH1cbiAgICB8IFBtb2RfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCBpbml0aWFsX3JlcykgLT5cbiAgICAgICAgbGV0IHJlcyA9IGF1eCBpbml0aWFsX3JlcyBpblxuICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIG91dG1vc3RfbG9jIHJlcy5wbW9kX2xvYyA9IDAgdGhlblxuICAgICAgICAgIGxldCBsb2Nfc3RhcnQgPSBtdHkucG10eV9sb2MubG9jX2VuZCBpblxuICAgICAgICAgIGxldCByZXMgPSB7IHJlcyB3aXRoIHBtb2RfbG9jID0geyByZXMucG1vZF9sb2Mgd2l0aCBsb2Nfc3RhcnQgfSB9IGluXG4gICAgICAgICAgeyB4IHdpdGggcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgICAgICBlbHNlIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgfCBfIC0+IHhcbiAgaW5cbiAgYXV4IHhcblxubGV0IGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2MgPVxuICBMaXN0LmZvcl9hbGwgfmY6KGZ1biBhdHRyIC0+XG4gICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsb2MubG9jX2VuZCBhdHRyLmF0dHJfbG9jLmxvY19lbmQgPj0gMClcblxubGV0IGZpbGUgOiBzdHJpbmcgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG5sZXQgc2FtZV9maWxlX3NvX2ZhciA9IHJlZiB0cnVlXG5cbmxldCBzdGF5ZWRfaW5fdGhlX3NhbWVfZmlsZSBmbmFtZSA9XG4gICgqIFRPRE86IHJlbW92ZSB1c2VzIG9mIExvY2F0aW9uLm5vbmUgZnJvbSB0aGUgcHB4ZXMuICopXG4gIGlmIFN0cmluZy5lcXVhbCBmbmFtZSBcIl9ub25lX1wiIHRoZW4gdHJ1ZSAoKiBkbyBub3RoaW5nIGZvciBub3cuICopXG4gIGVsc2VcbiAgICBtYXRjaCAhZmlsZSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIGZpbGUgOj0gU29tZSBmbmFtZTtcbiAgICAgICAgdHJ1ZVxuICAgIHwgU29tZSBvcmlnX2ZuYW1lIC0+XG4gICAgICAgIFN0cmluZy5lcXVhbCBvcmlnX2ZuYW1lIGZuYW1lXG4gICAgICAgIHx8XG4gICAgICAgIChzYW1lX2ZpbGVfc29fZmFyIDo9IGZhbHNlO1xuICAgICAgICAgZmFsc2UpXG5cbmxldCBzaG91bGRfaWdub3JlIGxvYyBhdHRycyA9XG4gICgqIElmIHRoZSBmaWxlbmFtZSBjaGFuZ2VkLCB0aGVuIHRoZXJlIHdlcmUgbGluZSBkaXJlY3RpdmVzLCBhbmQgdGhlIGxvY2F0aW9uc1xuICAgICBhcmUgYWxsIG1lc3NlZCB1cC4gKilcbiAgKG5vdCAoc3RheWVkX2luX3RoZV9zYW1lX2ZpbGUgbG9jLmxvY19zdGFydC5wb3NfZm5hbWUpKVxuICB8fCAoKiBJZ25vcmUgdGhpbmdzIGV4cGxpY2l0bHkgbWFya2VkLiAqKVxuICBMaXN0LmV4aXN0c1xuICAgIH5mOihmdW4gYXR0ciAtPlxuICAgICAgU3RyaW5nLmVxdWFsIGF0dHIuYXR0cl9uYW1lLnR4dFxuICAgICAgICBNZXJsaW5faGVscGVycy5oaWRlX2F0dHJpYnV0ZS5hdHRyX25hbWUudHh0KVxuICAgIGF0dHJzXG5cbmxldCByZWMgZXh0cmFjdF9jb25zdHJhaW50IGUgPVxuICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9jb25zdHJhaW50IChlLCBjdCkgfCBQZXhwX2NvZXJjZSAoZSwgXywgY3QpIC0+IFNvbWUgKGUsIGN0KVxuICB8IFBleHBfbmV3dHlwZSAobmFtZSwgZXhwKSAtPlxuICAgICAgT3B0aW9uLm1hcCAoZXh0cmFjdF9jb25zdHJhaW50IGV4cCkgfmY6KGZ1biAoZXhwLCBjdCkgLT5cbiAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgZSB3aXRoXG4gICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfbmV3dHlwZSAobmFtZSwgZXhwKTtcbiAgICAgICAgICAgICAgcGV4cF9sb2MgPSB7IGUucGV4cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3QgKSlcbiAgfCBfIC0+IE5vbmVcblxubGV0IGRvX2NoZWNrIH5ub2RlX25hbWUgbm9kZV9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jcyA9XG4gIGlmIG5vdCAhc2FtZV9maWxlX3NvX2ZhciB0aGVuIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gIGVsc2UgaWYgbm9kZV9sb2MubG9jX2dob3N0IHRoZW5cbiAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy51bmlvbiBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG4gIGVsc2UgaWYgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuY292ZXJlZF9ieSBjaGlsZHJlbnNfbG9jcyB+bG9jOm5vZGVfbG9jIHRoZW5cbiAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5pbnNlcnQgfm5vZGVfbmFtZSBub2RlX2xvYyBzaWJsaW5nc19sb2NzXG4gIGVsc2VcbiAgICBsZXQgY2hpbGRfbmFtZSwgY2hpbGRfbG9jID1cbiAgICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmZpbmRfb3V0c2lkZSBub2RlX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgIGluXG4gICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6bm9kZV9sb2NcbiAgICAgIFwiaW52YWxpZCBvdXRwdXQgZnJvbSBwcHg6QCB0aGlzICVzIGlzIGJ1aWx0IGZyb20gYSVzIHdob3NlIGxvY2F0aW9uIGlzIFxcXG4gICAgICAgb3V0c2lkZSBvZiB0aGlzIG5vZGUncy5ALkNoaWxkICVzIGZvdW5kIGF0OkAgJWFcIlxuICAgICAgbm9kZV9uYW1lXG4gICAgICAoKG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IGNoaWxkX25hbWUgMCB3aXRoXG4gICAgICAgfCAnYScgfCAnZScgfCAnaScgfCAnbycgfCAndScgLT4gXCJuIFwiXG4gICAgICAgfCBfIC0+IFwiIFwiKVxuICAgICAgXiBjaGlsZF9uYW1lKVxuICAgICAgY2hpbGRfbmFtZSBMb2NhdGlvbi5wcmludCBjaGlsZF9sb2NcblxubGV0IGVuZm9yY2VfaW52YXJpYW50cyBmbmFtZSA9XG4gIGxldCAoKSA9IGZpbGUgOj0gZm5hbWUgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgW05vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnRdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICAoKiBUT0RPOiB3ZSBzaG91bGQgZ2VuZXJhdGUgYSBjbGFzcyB3aGljaCBlbmZvcmNlcyB0aGUgbG9jYXRpb24gaW52YXJpYW50LlxuICAgICAgIEFuZCB0aGVuIHdlIHNob3VsZCBvbmx5IG92ZXJyaWRlIHRoZSBtZXRob2RzIHdoZXJlIHdlIG5lZWQgYW4gZXNjYXBlXG4gICAgICAgaGF0Y2ggYmVjYXVzZSB0aGUgcGFyc2VyIGlzbid0IGRvaW5nIHRoZSByaWdodCB0aGluZy5cblxuICAgICAgIFRoYXQgd291bGQgZW5zdXJlIHRoYXQgd2Ugc3RheSB1cCB0byBkYXRlIGFzIHRoZSBBU1QgY2hhbmdlcy4gKilcblxuICAgIG1ldGhvZCEgbG9uZ2lkZW50X2xvYyB4IHNpYmxpbmdzID1cbiAgICAgIGlmIHgubG9jLmxvY19naG9zdCB0aGVuIHNpYmxpbmdzXG4gICAgICBlbHNlIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmluc2VydCB+bm9kZV9uYW1lOlwiaWRlbnRcIiB4LmxvYyBzaWJsaW5nc1xuXG4gICAgbWV0aG9kISByb3dfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wcmZfbG9jIHgucHJmX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI3Jvd19maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJyb3cgZmllbGRcIiB4LnByZl9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBvYmplY3RfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wb2ZfbG9jIHgucG9mX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjb2JqZWN0X2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm9iamVjdCBmaWVsZFwiIHgucG9mX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgYmluZGluZ19vcCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjYmluZGluZ19vcCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiYmluZGluZyBvcGVyYXRvclwiIHgucGJvcF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB2YWxfbG9jIHgucHZhbF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3ZhbHVlX2Rlc2NyaXB0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInZhbHVlIGRlc2NyaXB0aW9uXCIgeC5wdmFsX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eXBlX2xvYyB4LnB0eXBlX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjdHlwZV9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ0eXBlIGRlY2xhcmF0aW9uXCIgeC5wdHlwZV9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGxhYmVsX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGxkX2xvYyB4LnBsZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2xhYmVsX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImxhYmVsIGRlY2xhcmF0aW9uXCIgeC5wbGRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjZF9sb2MgeC5wY2RfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjb25zdHJ1Y3RvciBkZWNsYXJhdGlvblwiIHgucGNkX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgdHlwZV9leHRlbnNpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdHlleHRfbG9jIHgucHR5ZXh0X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjdHlwZV9leHRlbnNpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidHlwZSBleHRlbnNpb25cIiB4LnB0eWV4dF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBleHRfbG9jIHgucGV4dF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleHRlbnNpb24gY29uc3RydWN0b3JcIiB4LnBleHRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGN0eV9sb2MgeC5wY3R5X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI2NsYXNzX3R5cGUgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3MgdHlwZVwiIHgucGN0eV9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGN0Zl9sb2MgeC5wY3RmX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjY2xhc3NfdHlwZV9maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyB0eXBlIGZpZWxkXCIgeC5wY3RmX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfaW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjaV9sb2MgeC5wY2lfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjbGFzc19pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzXCIgeC5wY2lfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjbF9sb2MgeC5wY2xfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjY2xhc3NfZXhwciB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyBleHByZXNzaW9uXCIgeC5wY2xfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjZl9sb2MgeC5wY2ZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjbGFzc19maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyBmaWVsZFwiIHgucGNmX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHNpZ19sb2MgW10gdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwic2lnbmF0dXJlIGl0ZW1cIiB4LnBzaWdfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbWRfbG9jIHgucG1kX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBkZWNsYXJhdGlvblwiIHgucG1kX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3N1YnN0aXR1dGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtc19sb2MgeC5wbXNfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfc3Vic3RpdHV0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBzdWJzdGl0dXRpb25cIiB4LnBtc19sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG10ZF9sb2MgeC5wbXRkX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIHR5cGUgZGVjbGFyYXRpb25cIiB4LnBtdGRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBvcGVuX2luZm9zIGYgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wb3Blbl9sb2MgeC5wb3Blbl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI29wZW5faW5mb3MgZiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJvcGVuXCIgeC5wb3Blbl9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBpbmNsdWRlX2luZm9zIGYgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5waW5jbF9sb2MgeC5waW5jbF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2luY2x1ZGVfaW5mb3MgZiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJpbmNsdWRlXCIgeC5waW5jbF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBzdHJfbG9jIFtdIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInN0cnVjdHVyZSBpdGVtXCIgeC5wc3RyX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbWJfbG9jIHgucG1iX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX2JpbmRpbmcgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIGJpbmRpbmdcIiB4LnBtYl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlICopXG4gICAgKCogdGhlIHR5cGUgY29uc3RyYWludCBpcyBkdXBsaWNhdGVkLiAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHZiX2xvYyB4LnB2Yl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIG1hdGNoICh4LnB2Yl9wYXQucHBhdF9kZXNjLCBleHRyYWN0X2NvbnN0cmFpbnQgeC5wdmJfZXhwcikgd2l0aFxuICAgICAgICAgICgqIGxldCB4IDogdHlwZSBhIGIgYy4gY3QgPSBlICopXG4gICAgICAgICAgfCAoIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAgICAgIChwdmJfcGF0LCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoXyA6OiBfLCBjdHApOyBfIH0pLFxuICAgICAgICAgICAgICBTb21lIChwdmJfZXhwciwgY3RlKSApXG4gICAgICAgICAgKCogbGV0IHggOiAgY3QgPSBlXG4gICAgICAgICAgICAgbGV0IHggOj4gY3QgPSBlICopXG4gICAgICAgICAgfCAoIFBwYXRfY29uc3RyYWludCAocHZiX3BhdCwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKFtdLCBjdHApOyBfIH0pLFxuICAgICAgICAgICAgICBTb21lIChwdmJfZXhwciwgY3RlKSApXG4gICAgICAgICAgICB3aGVuIExvY2F0aW9uLmNvbXBhcmUgY3RwLnB0eXBfbG9jIGN0ZS5wdHlwX2xvYyA9IDAgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IF9hY2MgPSBzZWxmI2NvcmVfdHlwZSBjdHAgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgeC5wdmJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI3ZhbHVlX2JpbmRpbmcgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidmFsdWUgYmluZGluZ1wiIHgucHZiX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlIG9mOiAqKVxuICAgICgqICAgICBNVCBbQGF0dHIgcGF5bG9hZF0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgcGF5bG9hZCBpcyBvdXRzaWRlIHRoZSAgICAqKVxuICAgICgqIGxvYyBvZiB0aGUgbW9kdWxlIHR5cGUuLi4uICAgICAgICAgICAgICAgICAqKVxuICAgICgqIGFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqICAgICBmdW5jdG9yIChBIDogUykgKEIgOiBTKSAuLi4gICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgWyhCIDogUykgLi4uXSBpcyB0aGUgc2FtZSAqKVxuICAgICgqIGFzIHRoZSBsb2Mgb2YgdGhlIG91dGVybW9zdCBtb2R1bGUgdHlwZS4gICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtdHlfbG9jIHgucG10eV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgeCA9IHJlbG9jX3BtdHlfZnVuY3RvcnMgeCBpblxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wbXR5X2xvYyB4LnBtdHlfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNtb2R1bGVfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGVfZGVzYyB4LnBtdHlfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgdHlwZVwiIHgucG10eV9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSBvZjogKilcbiAgICAoKiAgICAgTUUgW0BhdHRyIHBheWxvYWRdICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIHBheWxvYWQgaXMgb3V0c2lkZSB0aGUgICAgKilcbiAgICAoKiBsb2Mgb2YgdGhlIG1vZHVsZSBleHByLi4uLiAgICAgICAgICAgICAgICAgKilcbiAgICAoKiBhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAgICAgZnVuY3RvciAoQSA6IFMpIChCIDogUykgLi4uICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIFsoQiA6IFMpIC4uLl0gaXMgdGhlIHNhbWUgKilcbiAgICAoKiBhcyB0aGUgbG9jIG9mIHRoZSBvdXRlcm1vc3QgbW9kdWxlIGV4cHIuICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbW9kX2xvYyB4LnBtb2RfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHggPSByZWxvY19wbW9kX2Z1bmN0b3JzIHggaW5cbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucG1vZF9sb2MgeC5wbW9kX2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjbW9kdWxlX2V4cHIgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI21vZHVsZV9leHByX2Rlc2MgeC5wbW9kX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIGV4cHJlc3Npb25cIiB4LnBtb2RfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBTYW1lIGFzIGFib3ZlIC4uLiAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eXBfbG9jIHgucHR5cF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wdHlwX2xvYyB4LnB0eXBfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNjb3JlX3R5cGUgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZV9kZXNjIHgucHR5cF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNvcmUgdHlwZVwiIHgucHR5cF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuICAgICgqIEFuZCBhZ2FpbiAuLi4gKilcbiAgICAoKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wZXhwX2xvYyB4LnBleHBfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucGV4cF9sb2MgeC5wZXhwX2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjZXhwcmVzc2lvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbl9kZXNjIHgucGV4cF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4cHJlc3Npb25cIiB4LnBleHBfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKilcbiAgICAoKiAuLi4gYW5kIGFnYWluICopXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHBhdF9sb2MgeC5wcGF0X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBwYXRfbG9jIHgucHBhdF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI3BhdHRlcm4geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI3BhdHRlcm5fZGVzYyB4LnBwYXRfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJwYXR0ZXJuXCIgeC5wcGF0X2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2UgdGhlIGxvY2F0aW9uIG9mICAqKVxuICAgICgqIHRoZSBjb25zdHJ1Y3QgZXF1YWxzIHRoZSBsb2NhdGlvbiBvZiB0aGUgdHlwZV9leGNlcHRpb24gKilcbiAgICAoKiAoYW5kIHNvIGNvdmVycyB0aGUgbG9jYXRpb24gb2YgdGhlIGF0dHJpYnV0ZXMpLiAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISB0eXBlX2V4Y2VwdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eWV4bl9sb2MgeC5wdHlleG5fYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGluaXQgPSBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBsZXQgY2hpbGRzX2xvY3MgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgucHR5ZXhuX2NvbnN0cnVjdG9yIGluaXRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGF0dHJzX2xvY3MgPSBzZWxmI2F0dHJpYnV0ZXMgeC5wdHlleG5fYXR0cmlidXRlcyBpbml0IGluXG4gICAgICAgIGlnbm9yZVxuICAgICAgICAgIChkb19jaGVjayB+bm9kZV9uYW1lOlwiZXhjZXB0aW9uXCIgeC5wdHlleG5fbG9jIGF0dHJzX2xvY3Mgc2libGluZ3NfbG9jcyk7XG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleGNlcHRpb25cIiB4LnB0eWV4bl9sb2MgY2hpbGRzX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgdGhlICopXG4gICAgKCogbGhzIGlzIHNvbWV0aW1lcyBpbmNsdWRlZCBpbiB0aGUgcmhzLiAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHdpdGhfY29uc3RyYWludCB4IHNpYmxpbmdzX2xvYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHdpdGhfdHlwZSAoXywgdGRlY2wpIHwgUHdpdGhfdHlwZXN1YnN0IChfLCB0ZGVjbCkgLT5cbiAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gdGRlY2wgc2libGluZ3NfbG9jXG4gICAgICB8IF8gLT4gc3VwZXIjd2l0aF9jb25zdHJhaW50IHggc2libGluZ3NfbG9jXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIG9mOiopXG4gICAgKCogLSBGb28ueyBiYXI7IC4uLiB9ICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIEZvby5bIGJhcjsgLi4uIF0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gRm9vLiggYmFyOyAuLi4gKSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBtZXRob2QgeCA6IHR5cGUgYS4gLi4uID0gLi4uICAgICAgICAgKilcbiAgICAoKiAtIGZvby5AKGJhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLkAoYmFyKSA8LSBiYXogICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS57YmFyfSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLntiYXJ9IDwtIGJheiAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUuW2Jhcl0gICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS5bYmFyXSA8LSBiYXogICAgICAgICAgICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBleHBfcmVjb3JkIChsYWJlbHMsIGV4cHJfbykgLT5cbiAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChsaWQsIGUpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsaWQubG9jLmxvY19zdGFydCBlLnBleHBfbG9jLmxvY19zdGFydFxuICAgICAgICAgICAgICAgICAgPSAwXG4gICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBsaWQubG9jIGUucGV4cF9sb2MgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKCogcHVubmluZy4gKilcbiAgICAgICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2NcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfY29uc3RyYWludCAoZSwgYykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIHsgZm9vIDogaW50IH0gYW5kIHsgZm9vIDogaW50ID0geCB9IC4uLiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGUgYWNjXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogTm8gaWRlYSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuICopXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZSBhY2NcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgbGFiZWxzIGFjY1xuICAgICAgICAgIGluXG4gICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGV4cHJfbyBhY2NcbiAgICAgIHwgUGV4cF9vcGVuXG4gICAgICAgICAgKCh7IHBvcGVuX2V4cHIgPSB7IHBtb2RfZGVzYyA9IFBtb2RfaWRlbnQgbGlkOyBfIH07IF8gfSBhcyBvcG4pLCBlKVxuICAgICAgICB3aGVuIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX3N0YXJ0IGUucGV4cF9sb2MubG9jX3N0YXJ0ID0gMFxuICAgICAgICAgICAgICYmIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX2VuZCBlLnBleHBfbG9jLmxvY19lbmQgPD4gMCAtPlxuICAgICAgICAgICgqIGxldCdzIHJlbG9jYXRlIC4uLiAqKVxuICAgICAgICAgIGxldCBlX2xvYyA9IHsgZS5wZXhwX2xvYyB3aXRoIGxvY19zdGFydCA9IGxpZC5sb2MubG9jX2VuZCB9IGluXG4gICAgICAgICAgc3VwZXIjZXhwcmVzc2lvbl9kZXNjXG4gICAgICAgICAgICAoUGV4cF9vcGVuIChvcG4sIHsgZSB3aXRoIHBleHBfbG9jID0gZV9sb2MgfSkpXG4gICAgICAgICAgICBhY2NcbiAgICAgIHwgUGV4cF9wb2x5IChlLCBTb21lIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChfLCBjdCk7IF8gfSkgLT4gKFxuICAgICAgICAgIG1hdGNoIGV4dHJhY3RfY29uc3RyYWludCBlIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKGUsIGN0ZSkgd2hlbiBMb2NhdGlvbi5jb21wYXJlIGN0ZS5wdHlwX2xvYyBjdC5wdHlwX2xvYyA9IDAgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgY3QgYWNjIGluXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2MpXG4gICAgICB8IFBleHBfYXBwbHkgKHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IGxpZDsgXyB9OyBfIH0sIGFyZ3MpIC0+IChcbiAgICAgICAgICBtYXRjaCBMb25naWRlbnQubGFzdF9leG4gbGlkIHdpdGhcbiAgICAgICAgICB8IGlkXG4gICAgICAgICAgICB3aGVuIFN0cmluZy5pc19wcmVmaXggaWQgfnByZWZpeDpcIi5cIlxuICAgICAgICAgICAgICAgICAmJiAoU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiKClcIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCIoKTwtXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiW11cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJbXTwtXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4Olwie31cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJ7fTwtXCIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbGlzdCAoZnVuIChfLCBlKSAtPiBzZWxmI2V4cHJlc3Npb24gZSkgYXJncyBhY2NcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjY1xuICAgICAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2MpXG4gICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSBvZjogICAgICAgICAgICAgKilcbiAgICAoKiAtIHB1bm5pbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIHJlY29yZCBmaWVsZCB3aXRoIHR5cGUgY29uc3RyYWludC4gICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIHVucGFjayBsb2NhdGlvbnMgYmVpbmcgaW5jb3JyZWN0IHdoZW4gY29uc3RyYWluZWQgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgcGF0dGVybl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQcGF0X3JlY29yZCAobGFiZWxzLCBfKSAtPlxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAobGlkLCBwYXQpIGFjYyAtPlxuICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX3N0YXJ0IHBhdC5wcGF0X2xvYy5sb2Nfc3RhcnRcbiAgICAgICAgICAgICAgICA9IDBcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgbGlkLmxvYyBwYXQucHBhdF9sb2MgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICgqIHNpbXBsZSBwdW5uaW5nISAqKVxuICAgICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2NcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBtYXRjaCBwYXQucHBhdF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChwLCBjKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICgqIHsgZm9vIDogaW50IH0gYW5kIHsgZm9vIDogaW50ID0geCB9IC4uLiAqKVxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gcCBhY2NcbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICgqIE5vIGlkZWEgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiAqKVxuICAgICAgICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBwYXQgYWNjXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGxpZCBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBhdCBhY2MgaW5cbiAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBsYWJlbHMgYWNjXG4gICAgICB8IFBwYXRfY29uc3RyYWludCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3VucGFjayBhOyBfIH0sIGIpIC0+XG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI3BhdHRlcm5fZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIHRoZSBsb2NhdGlvbiBvZiB0aGUgKilcbiAgICAoKiBmYWtlIHN0cnVjdHVyZSBmb3IgYSBnZW5lcmF0aXZlIGFyZ3VtZW50IGNvdmVycyB0aGUgICAgICopXG4gICAgKCogbG9jYXRpb24gb2YgdGhlIGZ1bmN0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUG1vZF9hcHBseSAobSwgeyBwbW9kX2Rlc2MgPSBQbW9kX3N0cnVjdHVyZSBbXTsgcG1vZF9sb2M7IF8gfSlcbiAgICAgICAgd2hlbiBMb2NhdGlvbi5jb21wYXJlX3BvcyBtLnBtb2RfbG9jLmxvY19zdGFydCBwbW9kX2xvYy5sb2Nfc3RhcnQgPSAwIC0+XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX2V4cHIgbSBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNtb2R1bGVfZXhwcl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgdGhlIGxvY2F0aW9uIG9mIHRoZSAqKVxuICAgICgqIG9wZW5faW5mb3MgZm9yIFBjbF9vcGVuIG9ubHkgY292ZXJzIHRoZSBcIm9wZW5cIiBrZXl3b3JkICAqKVxuICAgICgqIGFuZCBub3QgdGhlIG1vZHVsZSBvcGVuZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGNsX29wZW4gKG9kLCBjZSkgLT5cbiAgICAgICAgICAoKiBpbmxpbmUgb2Ygb3Blbl9kZXNjcmlwdGlvbiAod2hpY2ggZWZmZWN0aXZlbHkgbWFrZXMgdGhhdCBub2RlXG4gICAgICAgICAgICAgZGlzYXBwZWFyKSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIG9kLnBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIG9kLnBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIG9kLnBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgKCogY29udGludWUgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGNlIGFjYyBpblxuICAgICAgICAgIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI2NsYXNzX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBTYW1lIGFzIGFib3ZlIC4uLiAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGN0eV9vcGVuIChvZCwgY3QpIC0+XG4gICAgICAgICAgKCogaW5saW5lIG9mIG9wZW5fZGVzY3JpcHRpb24gKHdoaWNoIGVmZmVjdGl2ZWx5IG1ha2VzIHRoYXQgbm9kZVxuICAgICAgICAgICAgIGRpc2FwcGVhcikgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIG9kLnBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBvZC5wb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBvZC5wb3Blbl9sb2MgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBvZC5wb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICgqIGNvbnRpbnVlICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBjdCBhY2MgaW5cbiAgICAgICAgICBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNjbGFzc190eXBlX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIGRvY3N0cmluZ3MgaGF2ZSAgICAqKVxuICAgICgqIHRoZSBzYW1lIGxvY2F0aW9uIGFzIHRoZSBpdGVtIHRoZXkgZ2V0IGF0dGFjaGVkIHRvLiAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeCBhY2MgPVxuICAgICAgbWF0Y2ggeC5hdHRyX25hbWUudHh0IHdpdGhcbiAgICAgIHwgXCJvY2FtbC5kb2NcIiB8IFwib2NhbWwudGV4dFwiIC0+IGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI2F0dHJpYnV0ZSB4IGFjY1xuICBlbmRcbiIsIigqJCBvcGVuIFBweGxpYl9jaW5hcHNfaGVscGVycyAkKilcbm9wZW4gSW1wb3J0XG5vcGVuIFV0aWxzXG5vcGVuIENvbW1vblxub3BlbiBXaXRoX2Vycm9yc1xubW9kdWxlIEFyZyA9IFN0ZGxpYi5BcmdcblxubGV0IGV4ZV9uYW1lID0gU3RkbGliLkZpbGVuYW1lLmJhc2VuYW1lIFN0ZGxpYi5TeXMuZXhlY3V0YWJsZV9uYW1lXG5sZXQgYXJncyA9IHJlZiBbXVxubGV0IGFkZF9hcmcga2V5IHNwZWMgfmRvYyA9IGFyZ3MgOj0gKGtleSwgc3BlYywgZG9jKSA6OiAhYXJnc1xubGV0IGxvY19mbmFtZSA9IHJlZiBOb25lXG5sZXQgcGVyZm9ybV9jaGVja3MgPSByZWYgT3B0aW9ucy5wZXJmb3JtX2NoZWNrc1xubGV0IHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgPSByZWYgT3B0aW9ucy5wZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zXG5sZXQgcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgPSByZWYgT3B0aW9ucy5wZXJmb3JtX2xvY2F0aW9uc19jaGVja1xubGV0IGRlYnVnX2F0dHJpYnV0ZV9kcm9wID0gcmVmIGZhbHNlXG5sZXQgYXBwbHlfbGlzdCA9IHJlZiBOb25lXG5sZXQgcHJlcHJvY2Vzc29yID0gcmVmIE5vbmVcbmxldCBub19tZXJnZSA9IHJlZiBmYWxzZVxubGV0IHJlcXVlc3RfcHJpbnRfcGFzc2VzID0gcmVmIGZhbHNlXG5sZXQgcmVxdWVzdF9wcmludF90cmFuc2Zvcm1hdGlvbnMgPSByZWYgZmFsc2VcbmxldCB1c2VfY29sb3IgPSByZWYgdHJ1ZVxubGV0IGRpZmZfY29tbWFuZCA9IHJlZiBPcHRpb25zLmRpZmZfY29tbWFuZFxubGV0IHByZXR0eSA9IHJlZiBmYWxzZVxubGV0IHN0eWxlciA9IHJlZiBOb25lXG5sZXQgb3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lID0gcmVmIE5vbmVcbmxldCBjb3JyZWN0ZWRfc3VmZml4ID0gcmVmIFwiLnBweC1jb3JyZWN0ZWRcIlxuXG5sZXQgZ2hvc3QgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXBcbiAgICBtZXRob2QhIGxvY2F0aW9uIGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9XG4gIGVuZFxuXG5sZXQgY2hvcF9wcmVmaXggfnByZWZpeCB4ID1cbiAgaWYgU3RyaW5nLmlzX3ByZWZpeCB+cHJlZml4IHggdGhlblxuICAgIFNvbWUgKFN0cmluZy5kcm9wX3ByZWZpeCB4IChTdHJpbmcubGVuZ3RoIHByZWZpeCkpXG4gIGVsc2UgTm9uZVxuXG5sZXQgZ2V0X2RlZmF1bHRfcGF0aCAobG9jIDogTG9jYXRpb24udCkgPVxuICBsZXQgZm5hbWUgPSBsb2MubG9jX3N0YXJ0LnBvc19mbmFtZSBpblxuICBtYXRjaCBjaG9wX3ByZWZpeCB+cHJlZml4OlwiLi9cIiBmbmFtZSB3aXRoXG4gIHwgU29tZSBmbmFtZSAtPiBmbmFtZVxuICB8IE5vbmUgLT4gZm5hbWVcblxubGV0IGdldF9kZWZhdWx0X3BhdGhfc3RyIDogc3RydWN0dXJlIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gXCJcIlxuICB8IHsgcHN0cl9sb2MgPSBsb2M7IF8gfSA6OiBfIC0+IGdldF9kZWZhdWx0X3BhdGggbG9jXG5cbmxldCBnZXRfZGVmYXVsdF9wYXRoX3NpZyA6IHNpZ25hdHVyZSAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IFtdIC0+IFwiXCJcbiAgfCB7IHBzaWdfbG9jID0gbG9jOyBfIH0gOjogXyAtPiBnZXRfZGVmYXVsdF9wYXRoIGxvY1xuXG5tb2R1bGUgTGludF9lcnJvciA9IHN0cnVjdFxuICB0eXBlIHQgPSBMb2NhdGlvbi50ICogc3RyaW5nXG5cbiAgbGV0IG9mX3N0cmluZyBsb2MgcyA9IChsb2MsIHMpXG5lbmRcblxubW9kdWxlIENvb2tpZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVFxuXG4gIGxldCBnaXZlbl90aHJvdWdoX2NsaSA9IHJlZiBbXVxuXG4gIGxldCBnZXQgVCBuYW1lIHBhdHRlcm4gPVxuICAgIE9wdGlvbi5tYXAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZ2V0X2Nvb2tpZSBuYW1lKSB+ZjooZnVuIGUgLT5cbiAgICAgICAgbGV0IGUgPSBTZWxlY3RlZF9hc3Qub2Zfb2NhbWwgRXhwcmVzc2lvbiBlIGluXG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlIHBhdHRlcm4gZS5wZXhwX2xvYyBlIEZuLmlkKVxuXG4gIGxldCBnZXRfcmVzIFQgbmFtZSBwYXR0ZXJuID1cbiAgICBtYXRjaFxuICAgICAgT3B0aW9uLm1hcCAoQXN0bGliLkFzdF9tZXRhZGF0YS5nZXRfY29va2llIG5hbWUpIH5mOihmdW4gZSAtPlxuICAgICAgICAgIGxldCBlID0gU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIEV4cHJlc3Npb24gZSBpblxuICAgICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGUucGV4cF9sb2MgZSBGbi5pZClcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKE9rIGUpIC0+IE9rIChTb21lIGUpXG4gICAgfCBTb21lIChFcnJvciBlKSAtPiBFcnJvciBlXG5cbiAgbGV0IHNldCBUIG5hbWUgZXhwciA9XG4gICAgQXN0bGliLkFzdF9tZXRhZGF0YS5zZXRfY29va2llIG5hbWUgKFNlbGVjdGVkX2FzdC50b19vY2FtbCBFeHByZXNzaW9uIGV4cHIpXG5cbiAgbGV0IGhhbmRsZXJzID0gcmVmIFtdXG4gIGxldCBhZGRfaGFuZGxlciBmID0gaGFuZGxlcnMgOj0gIWhhbmRsZXJzIEAgWyBmIF1cblxuICBsZXQgYWRkX3NpbXBsZV9oYW5kbGVyIG5hbWUgcGF0dGVybiB+ZiA9XG4gICAgYWRkX2hhbmRsZXIgKGZ1biBUIC0+IGYgKGdldCBUIG5hbWUgcGF0dGVybikpXG5cbiAgbGV0IGFja25vd2xlZGdlX2Nvb2tpZXMgVCA9IExpc3QuaXRlciAhaGFuZGxlcnMgfmY6KGZ1biBmIC0+IGYgVClcbiAgbGV0IHBvc3RfaGFuZGxlcnMgPSByZWYgW11cbiAgbGV0IGFkZF9wb3N0X2hhbmRsZXIgZiA9IHBvc3RfaGFuZGxlcnMgOj0gIXBvc3RfaGFuZGxlcnMgQCBbIGYgXVxuICBsZXQgY2FsbF9wb3N0X2hhbmRsZXJzIFQgPSBMaXN0Lml0ZXIgIXBvc3RfaGFuZGxlcnMgfmY6KGZ1biBmIC0+IGYgVClcbmVuZFxuXG5tb2R1bGUgSW5zdHJ1bWVudCA9IHN0cnVjdFxuICB0eXBlIHBvcyA9IEJlZm9yZSB8IEFmdGVyXG5cbiAgdHlwZSB0ID0ge1xuICAgIHRyYW5zZm9ybWF0aW9uIDpcbiAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50O1xuICAgIHBvc2l0aW9uIDogcG9zO1xuICB9XG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgbGV0IG1ha2UgdHJhbnNmb3JtYXRpb24gfnBvc2l0aW9uID1cbiAgICAgIGxldCB0cmFuc2Zvcm1hdGlvbiBjdHggc3QgPSByZXR1cm4gKHRyYW5zZm9ybWF0aW9uIGN0eCBzdCkgaW5cbiAgICAgIHsgdHJhbnNmb3JtYXRpb247IHBvc2l0aW9uIH1cbiAgZW5kXG5cbiAgbGV0IG1ha2UgdHJhbnNmb3JtYXRpb24gfnBvc2l0aW9uID1cbiAgICBsZXQgdHJhbnNmb3JtYXRpb24gXyBzdCA9IHRyYW5zZm9ybWF0aW9uIHN0IGluXG4gICAgVjIubWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb25cbmVuZFxuXG5tb2R1bGUgVHJhbnNmb3JtID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBuYW1lIDogc3RyaW5nO1xuICAgIGFsaWFzZXMgOiBzdHJpbmcgbGlzdDtcbiAgICBpbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgV2l0aF9lcnJvcnMudClcbiAgICAgIG9wdGlvbjtcbiAgICBpbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgV2l0aF9lcnJvcnMudClcbiAgICAgIG9wdGlvbjtcbiAgICBsaW50X2ltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiBQYXJzZXRyZWUuc3RydWN0dXJlIC0+IExpbnRfZXJyb3IudCBsaXN0KVxuICAgICAgb3B0aW9uO1xuICAgIGxpbnRfaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+IFBhcnNldHJlZS5zaWduYXR1cmUgLT4gTGludF9lcnJvci50IGxpc3QpXG4gICAgICBvcHRpb247XG4gICAgcHJlcHJvY2Vzc19pbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgV2l0aF9lcnJvcnMudClcbiAgICAgIG9wdGlvbjtcbiAgICBwcmVwcm9jZXNzX2ludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGVuY2xvc2VfaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBMb2NhdGlvbi50IG9wdGlvbiAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAqIFBhcnNldHJlZS5zdHJ1Y3R1cmUpXG4gICAgICBvcHRpb247XG4gICAgZW5jbG9zZV9pbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIExvY2F0aW9uLnQgb3B0aW9uIC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlICogUGFyc2V0cmVlLnNpZ25hdHVyZSlcbiAgICAgIG9wdGlvbjtcbiAgICBpbnN0cnVtZW50IDogSW5zdHJ1bWVudC50IG9wdGlvbjtcbiAgICBydWxlcyA6IENvbnRleHRfZnJlZS5SdWxlLnQgbGlzdDtcbiAgICByZWdpc3RlcmVkX2F0IDogQ2FsbGVyX2lkLnQ7XG4gIH1cblxuICBsZXQgaGFzX25hbWUgdCBuYW1lID1cbiAgICBTdHJpbmcuZXF1YWwgbmFtZSB0Lm5hbWUgfHwgTGlzdC5leGlzdHMgfmY6KFN0cmluZy5lcXVhbCBuYW1lKSB0LmFsaWFzZXNcblxuICBsZXQgYWxsIDogdCBsaXN0IHJlZiA9IHJlZiBbXVxuXG4gIGxldCBwcmludF9jYWxsZXJfaWQgb2MgKGNhbGxlcl9pZCA6IENhbGxlcl9pZC50KSA9XG4gICAgbWF0Y2ggY2FsbGVyX2lkIHdpdGhcbiAgICB8IE5vbmUgLT4gb3V0cHV0X3N0cmluZyBvYyBcIjx1bmtub3duIGxvY2F0aW9uPlwiXG4gICAgfCBTb21lIGxvYyAtPiBQcmludGYuZnByaW50ZiBvYyBcIiVzOiVkXCIgbG9jLmZpbGVuYW1lIGxvYy5saW5lX251bWJlclxuXG4gIGxldCByZWdpc3RlciA/KGV4dGVuc2lvbnMgPSBbXSkgPyhydWxlcyA9IFtdKSA/ZW5jbG9zZV9pbXBsID9lbmNsb3NlX2ludGZcbiAgICAgID9pbXBsID9pbnRmID9saW50X2ltcGwgP2xpbnRfaW50ZiA/cHJlcHJvY2Vzc19pbXBsID9wcmVwcm9jZXNzX2ludGZcbiAgICAgID9pbnN0cnVtZW50ID8oYWxpYXNlcyA9IFtdKSBuYW1lID1cbiAgICBsZXQgcnVsZXMgPSBMaXN0Lm1hcCBleHRlbnNpb25zIH5mOkNvbnRleHRfZnJlZS5SdWxlLmV4dGVuc2lvbiBAIHJ1bGVzIGluXG4gICAgbGV0IGNhbGxlcl9pZCA9IENhbGxlcl9pZC5nZXQgfnNraXA6WyBTdGRsaWIuX19GSUxFX18gXSBpblxuICAgIChtYXRjaCBMaXN0LmZpbHRlciAhYWxsIH5mOihmdW4gY3QgLT4gaGFzX25hbWUgY3QgbmFtZSkgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IGN0IDo6IF8gLT5cbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCJXYXJuaW5nOiBjb2RlIHRyYW5zZm9ybWF0aW9uICVzIHJlZ2lzdGVyZWQgdHdpY2UuXFxuXCJcbiAgICAgICAgICBuYW1lO1xuICAgICAgICBQcmludGYuZXByaW50ZiBcIiAgLSBmaXJzdCB0aW1lIHdhcyBhdCAlYVxcblwiIHByaW50X2NhbGxlcl9pZFxuICAgICAgICAgIGN0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiICAtIHNlY29uZCB0aW1lIGlzIGF0ICVhXFxuXCIgcHJpbnRfY2FsbGVyX2lkIGNhbGxlcl9pZCk7XG4gICAgbGV0IGltcGwgPSBPcHRpb24ubWFwIGltcGwgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKSBpblxuICAgIGxldCBpbnRmID0gT3B0aW9uLm1hcCBpbnRmIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSkgaW5cbiAgICBsZXQgcHJlcHJvY2Vzc19pbXBsID1cbiAgICAgIE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbXBsIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSlcbiAgICBpblxuICAgIGxldCBwcmVwcm9jZXNzX2ludGYgPVxuICAgICAgT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ludGYgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKVxuICAgIGluXG4gICAgbGV0IGN0ID1cbiAgICAgIHtcbiAgICAgICAgbmFtZTtcbiAgICAgICAgYWxpYXNlcztcbiAgICAgICAgcnVsZXM7XG4gICAgICAgIGVuY2xvc2VfaW1wbDtcbiAgICAgICAgZW5jbG9zZV9pbnRmO1xuICAgICAgICBpbXBsO1xuICAgICAgICBpbnRmO1xuICAgICAgICBsaW50X2ltcGw7XG4gICAgICAgIHByZXByb2Nlc3NfaW1wbDtcbiAgICAgICAgcHJlcHJvY2Vzc19pbnRmO1xuICAgICAgICBsaW50X2ludGY7XG4gICAgICAgIGluc3RydW1lbnQ7XG4gICAgICAgIHJlZ2lzdGVyZWRfYXQgPSBjYWxsZXJfaWQ7XG4gICAgICB9XG4gICAgaW5cbiAgICBhbGwgOj0gY3QgOjogIWFsbFxuXG4gIGxldCByZWMgbGFzdCBwcmV2IGwgPSBtYXRjaCBsIHdpdGggW10gLT4gcHJldiB8IHggOjogbCAtPiBsYXN0IHggbFxuXG4gIGxldCBsb2Nfb2ZfbGlzdCB+Z2V0X2xvYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBsZXQgZmlyc3QgOiBMb2NhdGlvbi50ID0gZ2V0X2xvYyB4IGluXG4gICAgICAgIGxldCBsYXN0ID0gZ2V0X2xvYyAobGFzdCB4IGwpIGluXG4gICAgICAgIFNvbWUgeyBmaXJzdCB3aXRoIGxvY19lbmQgPSBsYXN0LmxvY19lbmQgfVxuXG4gIGxldCBtZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyB0IH5lbWJlZF9lcnJvcnMgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICB+dG9vbF9uYW1lIH5pbnB1dF9uYW1lID1cbiAgICBsZXQgeyBydWxlczsgZW5jbG9zZV9pbXBsOyBlbmNsb3NlX2ludGY7IGltcGw7IGludGY7IF8gfSA9IHQgaW5cbiAgICBsZXQgbWFwID1cbiAgICAgIG5ldyBDb250ZXh0X2ZyZWUubWFwX3RvcF9kb3duXG4gICAgICAgIHJ1bGVzIH5lbWJlZF9lcnJvcnMgfmdlbmVyYXRlZF9jb2RlX2hvb2s6aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICBpblxuICAgIGxldCBnZW5faGVhZGVyX2FuZF9mb290ZXIgY29udGV4dCB3aG9sZV9sb2MgZiA9XG4gICAgICBsZXQgaGVhZGVyLCBmb290ZXIgPSBmIHdob2xlX2xvYyBpblxuICAgICAgKG1hdGNoIHdob2xlX2xvYyB3aXRoXG4gICAgICB8IFNvbWUgKGxvYyA6IExvY2F0aW9uLnQpIC0+IChcbiAgICAgICAgICBsZXQgbG9jX2hlYWRlciA9IHsgbG9jIHdpdGggbG9jX2VuZCA9IGxvYy5sb2Nfc3RhcnQgfSBpblxuICAgICAgICAgIGxldCBsb2NfZm9vdGVyID0geyBsb2Mgd2l0aCBsb2Nfc3RhcnQgPSBsb2MubG9jX2VuZCB9IGluXG4gICAgICAgICAgKG1hdGNoIGhlYWRlciB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiBob29rLmYgY29udGV4dCBsb2NfaGVhZGVyIChNYW55IGhlYWRlcikpO1xuICAgICAgICAgIG1hdGNoIGZvb3RlciB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiBob29rLmYgY29udGV4dCBsb2NfZm9vdGVyIChNYW55IGZvb3RlcikpXG4gICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgIG1hdGNoIGhlYWRlciBAIGZvb3RlciB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgbCAtPlxuICAgICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBMZXhpbmcucG9zX2ZuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgIHBvc19sbnVtID0gMTtcbiAgICAgICAgICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgICAgICAgICAgcG9zX2NudW0gPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgICAgICAgeyBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBwb3M7IGxvY19lbmQgPSBwb3M7IGxvY19naG9zdCA9IGZhbHNlIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaG9vay5mIGNvbnRleHQgbG9jIChNYW55IGwpKSk7XG4gICAgICAoaGVhZGVyLCBmb290ZXIpXG4gICAgaW5cbiAgICBsZXQgaW5wdXRfbmFtZSA9XG4gICAgICBtYXRjaCBpbnB1dF9uYW1lIHdpdGggU29tZSBpbnB1dF9uYW1lIC0+IGlucHV0X25hbWUgfCBOb25lIC0+IFwiX25vbmVfXCJcbiAgICBpblxuICAgIGxldCBtYXBfaW1wbCBjdHh0IHN0X3dpdGhfYXR0cnMgPVxuICAgICAgbGV0IGF0dHJzLCBzdCA9XG4gICAgICAgIExpc3Quc3BsaXRfd2hpbGUgc3Rfd2l0aF9hdHRycyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcHN0cl9kZXNjID0gUHN0cl9hdHRyaWJ1dGUgXzsgXyB9IC0+IHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICBpblxuICAgICAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc3RyIHN0IGluXG4gICAgICBsZXQgYmFzZV9jdHh0ID1cbiAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICBpblxuICAgICAgbGV0IGhlYWRlciwgZm9vdGVyID1cbiAgICAgICAgbWF0Y2ggZW5jbG9zZV9pbXBsIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChbXSwgW10pXG4gICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICBsZXQgd2hvbGVfbG9jID1cbiAgICAgICAgICAgICAgbG9jX29mX2xpc3Qgc3QgfmdldF9sb2M6KGZ1biBzdCAtPiBzdC5QYXJzZXRyZWUucHN0cl9sb2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIFN0cnVjdHVyZV9pdGVtIHdob2xlX2xvYyAoZiBiYXNlX2N0eHQpXG4gICAgICBpblxuICAgICAgbWFwI3N0cnVjdHVyZSBiYXNlX2N0eHQgKExpc3QuY29uY2F0IFsgYXR0cnM7IGhlYWRlcjsgc3Q7IGZvb3RlciBdKVxuICAgICAgPj49IGZ1biBzdCAtPiBtYXRjaCBpbXBsIHdpdGggTm9uZSAtPiByZXR1cm4gc3QgfCBTb21lIGYgLT4gZiBjdHh0IHN0XG4gICAgaW5cbiAgICBsZXQgbWFwX2ludGYgY3R4dCBzZ193aXRoX2F0dHJzID1cbiAgICAgIGxldCBhdHRycywgc2cgPVxuICAgICAgICBMaXN0LnNwbGl0X3doaWxlIHNnX3dpdGhfYXR0cnMgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBzaWdfZGVzYyA9IFBzaWdfYXR0cmlidXRlIF87IF8gfSAtPiB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3NpZyBzZyBpblxuICAgICAgbGV0IGJhc2VfY3R4dCA9XG4gICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZVxuICAgICAgaW5cbiAgICAgIGxldCBoZWFkZXIsIGZvb3RlciA9XG4gICAgICAgIG1hdGNoIGVuY2xvc2VfaW50ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoW10sIFtdKVxuICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgbGV0IHdob2xlX2xvYyA9XG4gICAgICAgICAgICAgIGxvY19vZl9saXN0IHNnIH5nZXRfbG9jOihmdW4gc2cgLT4gc2cuUGFyc2V0cmVlLnBzaWdfbG9jKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGdlbl9oZWFkZXJfYW5kX2Zvb3RlciBTaWduYXR1cmVfaXRlbSB3aG9sZV9sb2MgKGYgYmFzZV9jdHh0KVxuICAgICAgaW5cbiAgICAgIG1hcCNzaWduYXR1cmUgYmFzZV9jdHh0IChMaXN0LmNvbmNhdCBbIGF0dHJzOyBoZWFkZXI7IHNnOyBmb290ZXIgXSlcbiAgICAgID4+PSBmdW4gc2cgLT4gbWF0Y2ggaW50ZiB3aXRoIE5vbmUgLT4gcmV0dXJuIHNnIHwgU29tZSBmIC0+IGYgY3R4dCBzZ1xuICAgIGluXG4gICAgeyB0IHdpdGggaW1wbCA9IFNvbWUgbWFwX2ltcGw7IGludGYgPSBTb21lIG1hcF9pbnRmIH1cblxuICBsZXQgYnVpbHRpbl9vZl9jb250ZXh0X2ZyZWVfcmV3cml0ZXJzIH5ob29rIH5ydWxlcyB+ZW5jbG9zZV9pbXBsIH5lbmNsb3NlX2ludGZcbiAgICAgIH5pbnB1dF9uYW1lID1cbiAgICBtZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyB+aG9vayB+aW5wdXRfbmFtZVxuICAgICAge1xuICAgICAgICBuYW1lID0gXCI8YnVpbHRpbjpjb250ZXh0LWZyZWU+XCI7XG4gICAgICAgIGFsaWFzZXMgPSBbXTtcbiAgICAgICAgaW1wbCA9IE5vbmU7XG4gICAgICAgIGludGYgPSBOb25lO1xuICAgICAgICBsaW50X2ltcGwgPSBOb25lO1xuICAgICAgICBsaW50X2ludGYgPSBOb25lO1xuICAgICAgICBwcmVwcm9jZXNzX2ltcGwgPSBOb25lO1xuICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICBlbmNsb3NlX2ltcGw7XG4gICAgICAgIGVuY2xvc2VfaW50ZjtcbiAgICAgICAgaW5zdHJ1bWVudCA9IE5vbmU7XG4gICAgICAgIHJ1bGVzO1xuICAgICAgICByZWdpc3RlcmVkX2F0ID0gQ2FsbGVyX2lkLmdldCB+c2tpcDpbXTtcbiAgICAgIH1cblxuICBsZXQgcGFydGl0aW9uX3RyYW5zZm9ybWF0aW9ucyB0cyA9XG4gICAgbGV0IGJlZm9yZV9pbnN0cnMsIGFmdGVyX2luc3RycywgcmVzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB0cyB+aW5pdDooW10sIFtdLCBbXSkgfmY6KGZ1biAoYmVmX2ksIGFmdF9pLCByZXN0KSB0IC0+XG4gICAgICAgICAgbGV0IHJlZHVjZWRfdCA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHQgd2l0aFxuICAgICAgICAgICAgICBsaW50X2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICBsaW50X2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGYgaW5zdHIgPVxuICAgICAgICAgICAgKGluc3RyLkluc3RydW1lbnQucG9zaXRpb24sIGluc3RyLkluc3RydW1lbnQudHJhbnNmb3JtYXRpb24pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBPcHRpb24ubWFwIHQuaW5zdHJ1bWVudCB+ZiB3aXRoXG4gICAgICAgICAgfCBTb21lIChCZWZvcmUsIHRyYW5zZikgLT5cbiAgICAgICAgICAgICAgKCB7IHJlZHVjZWRfdCB3aXRoIGltcGwgPSBTb21lIHRyYW5zZjsgcnVsZXMgPSBbXSB9IDo6IGJlZl9pLFxuICAgICAgICAgICAgICAgIGFmdF9pLFxuICAgICAgICAgICAgICAgIHJlZHVjZWRfdCA6OiByZXN0IClcbiAgICAgICAgICB8IFNvbWUgKEFmdGVyLCB0cmFuc2YpIC0+XG4gICAgICAgICAgICAgICggYmVmX2ksXG4gICAgICAgICAgICAgICAgeyByZWR1Y2VkX3Qgd2l0aCBpbXBsID0gU29tZSB0cmFuc2Y7IHJ1bGVzID0gW10gfSA6OiBhZnRfaSxcbiAgICAgICAgICAgICAgICByZWR1Y2VkX3QgOjogcmVzdCApXG4gICAgICAgICAgfCBOb25lIC0+IChiZWZfaSwgYWZ0X2ksIHJlZHVjZWRfdCA6OiByZXN0KSlcbiAgICBpblxuICAgICggYExpbnRlcnNcbiAgICAgICAgKExpc3QuZmlsdGVyX21hcCB0cyB+ZjooZnVuIHQgLT5cbiAgICAgICAgICAgICBpZiBPcHRpb24uaXNfc29tZSB0LmxpbnRfaW1wbCB8fCBPcHRpb24uaXNfc29tZSB0LmxpbnRfaW50ZiB0aGVuXG4gICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBuYW1lID0gUHJpbnRmLnNwcmludGYgXCI8bGludDolcz5cIiB0Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgYWxpYXNlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIGltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW1wbCA9IHQubGludF9pbXBsO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW50ZiA9IHQubGludF9pbnRmO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcnVsZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkX2F0ID0gdC5yZWdpc3RlcmVkX2F0O1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgZWxzZSBOb25lKSksXG4gICAgICBgUHJlcHJvY2Vzc1xuICAgICAgICAoTGlzdC5maWx0ZXJfbWFwIHRzIH5mOihmdW4gdCAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICBPcHRpb24uaXNfc29tZSB0LnByZXByb2Nlc3NfaW1wbFxuICAgICAgICAgICAgICAgfHwgT3B0aW9uLmlzX3NvbWUgdC5wcmVwcm9jZXNzX2ludGZcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBuYW1lID0gUHJpbnRmLnNwcmludGYgXCI8cHJlcHJvY2Vzczolcz5cIiB0Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgYWxpYXNlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIGltcGwgPSB0LnByZXByb2Nlc3NfaW1wbDtcbiAgICAgICAgICAgICAgICAgICBpbnRmID0gdC5wcmVwcm9jZXNzX2ludGY7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcnVsZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkX2F0ID0gdC5yZWdpc3RlcmVkX2F0O1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgZWxzZSBOb25lKSksXG4gICAgICBgQmVmb3JlX2luc3RycyBiZWZvcmVfaW5zdHJzLFxuICAgICAgYEFmdGVyX2luc3RycyBhZnRlcl9pbnN0cnMsXG4gICAgICBgUmVzdCByZXN0IClcbmVuZFxuXG5tb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgbGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID0gVHJhbnNmb3JtLnJlZ2lzdGVyXG5cbiAgbGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nX29jYW1sX2N1cnJlbnRfYXN0ID9pbXBsID9pbnRmID9hbGlhc2VzIG5hbWVcbiAgICAgID1cbiAgICBsZXQgaW1wbCA9XG4gICAgICBPcHRpb24ubWFwIGltcGwgfmY6KFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sX21hcHBlciBTdHJ1Y3R1cmUpXG4gICAgaW5cbiAgICBsZXQgaW50ZiA9XG4gICAgICBPcHRpb24ubWFwIGludGYgfmY6KFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sX21hcHBlciBTaWduYXR1cmUpXG4gICAgaW5cbiAgICByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA/aW1wbCA/aW50ZiA/YWxpYXNlcyBuYW1lXG5lbmRcblxubGV0IGFkZF9jdHh0X2FyZyAoZiA6ICdhIC0+ICdiKSA6IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiAnYiA9XG4gZnVuIF8geCAtPiBmIHhcblxubGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9leHRlbnNpb25zID9ydWxlcyA/ZW5jbG9zZV9pbXBsID9lbmNsb3NlX2ludGYgP2ltcGxcbiAgICA/aW50ZiA/bGludF9pbXBsID9saW50X2ludGYgP3ByZXByb2Nlc3NfaW1wbCA/cHJlcHJvY2Vzc19pbnRmID1cbiAgbGV0IGltcGwgPSBPcHRpb24ubWFwIGltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBpbnRmID0gT3B0aW9uLm1hcCBpbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgcHJlcHJvY2Vzc19pbXBsID0gT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBwcmVwcm9jZXNzX2ludGYgPSBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGxpbnRfaW1wbCA9IE9wdGlvbi5tYXAgbGludF9pbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgbGludF9pbnRmID0gT3B0aW9uLm1hcCBsaW50X2ludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBlbmNsb3NlX2ltcGwgPSBPcHRpb24ubWFwIGVuY2xvc2VfaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGVuY2xvc2VfaW50ZiA9IE9wdGlvbi5tYXAgZW5jbG9zZV9pbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBWMi5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA/ZXh0ZW5zaW9ucyA/cnVsZXMgP2VuY2xvc2VfaW1wbCA/ZW5jbG9zZV9pbnRmXG4gICAgP2ltcGwgP2ludGYgP2xpbnRfaW1wbCA/bGludF9pbnRmID9wcmVwcm9jZXNzX2ltcGwgP3ByZXByb2Nlc3NfaW50ZlxuXG5sZXQgcmVnaXN0ZXJfY29kZV90cmFuc2Zvcm1hdGlvbiB+bmFtZSA/KGFsaWFzZXMgPSBbXSkgfmltcGwgfmludGYgPVxuICByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiBuYW1lIH5pbXBsIH5pbnRmIH5hbGlhc2VzXG5bQEB3YXJuaW5nIFwiLTE2XCJdXG4oKiBUaGlzIGZ1bmN0aW9uIHRyaWdnZXJzIGEgd2FybmluZyAxNiBhcyBvZiBvY2FtbCA0LjEyICopXG5cbmxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ19vY2FtbF9jdXJyZW50X2FzdCA/aW1wbCA/aW50ZiA9XG4gIGxldCBpbXBsID0gT3B0aW9uLm1hcCBpbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgaW50ZiA9IE9wdGlvbi5tYXAgaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgVjIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfb2NhbWxfY3VycmVudF9hc3QgP2ltcGwgP2ludGZcblxubGV0IGRlYnVnX2Ryb3BwZWRfYXR0cmlidXRlIG5hbWUgfm9sZF9kcm9wcGVkIH5uZXdfZHJvcHBlZCA9XG4gIGxldCBwcmludF9kaWZmIHdoYXQgYSBiID1cbiAgICBsZXQgZGlmZiA9XG4gICAgICBMaXN0LmZpbHRlciBhIH5mOihmdW4gKG5hbWUgOiBfIExvYy50KSAtPlxuICAgICAgICAgIG5vdFxuICAgICAgICAgICAgKExpc3QuZXhpc3RzIGIgfmY6KGZ1biAobmFtZScgOiBfIExvY2F0aW9uLmxvYykgLT5cbiAgICAgICAgICAgICAgICAgbmFtZS50eHQgPT0gbmFtZScudHh0KSkpXG4gICAgaW5cbiAgICBpZiBub3QgKExpc3QuaXNfZW1wdHkgZGlmZikgdGhlbiAoXG4gICAgICBQcmludGYuZXByaW50ZiBcIlRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyAlcyBhZnRlciBhcHBseWluZyAlczpcXG5cIiB3aGF0XG4gICAgICAgIG5hbWU7XG4gICAgICBMaXN0Lml0ZXIgZGlmZiB+ZjooZnVuIHsgTG9jYXRpb24udHh0OyBsb2MgfSAtPlxuICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQuZXByaW50ZiBcIi0gJWE6ICVzXFxuXCIgTG9jYXRpb24ucHJpbnQgbG9jIHR4dCk7XG4gICAgICBTdGRsaWIuRm9ybWF0LmVwcmludGYgXCJALlwiKVxuICBpblxuICBwcmludF9kaWZmIFwiZGlzYXBwZWFyZWRcIiBuZXdfZHJvcHBlZCBvbGRfZHJvcHBlZDtcbiAgcHJpbnRfZGlmZiBcInJlYXBwZWFyZWRcIiBvbGRfZHJvcHBlZCBuZXdfZHJvcHBlZFxuXG5sZXQgZ2V0X3dob2xlX2FzdF9wYXNzZXMgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfnRvb2xfbmFtZVxuICAgIH5pbnB1dF9uYW1lID1cbiAgbGV0IGN0cyA9XG4gICAgbWF0Y2ggIWFwcGx5X2xpc3Qgd2l0aFxuICAgIHwgTm9uZSAtPiBMaXN0LnJldiAhVHJhbnNmb3JtLmFsbFxuICAgIHwgU29tZSBuYW1lcyAtPlxuICAgICAgICBMaXN0Lm1hcCBuYW1lcyB+ZjooZnVuIG5hbWUgLT5cbiAgICAgICAgICAgIExpc3QuZmluZCAhVHJhbnNmb3JtLmFsbCB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgICAgIFRyYW5zZm9ybS5oYXNfbmFtZSBjdCBuYW1lKSlcbiAgaW5cbiAgbGV0ICggYExpbnRlcnMgbGludGVycyxcbiAgICAgICAgYFByZXByb2Nlc3MgcHJlcHJvY2VzcyxcbiAgICAgICAgYEJlZm9yZV9pbnN0cnMgYmVmb3JlX2luc3RycyxcbiAgICAgICAgYEFmdGVyX2luc3RycyBhZnRlcl9pbnN0cnMsXG4gICAgICAgIGBSZXN0IGN0cyApID1cbiAgICBUcmFuc2Zvcm0ucGFydGl0aW9uX3RyYW5zZm9ybWF0aW9ucyBjdHNcbiAgaW5cbiAgKCogQWxsb3cgb25seSBvbmUgcHJlcHJvY2Vzc29yIHRvIGFzc3VyZSBkZXRlcm1pbmlzdGljIG9yZGVyICopXG4gIChpZiBMaXN0Lmxlbmd0aCBwcmVwcm9jZXNzID4gMSB0aGVuXG4gICAgIGxldCBwcCA9XG4gICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoTGlzdC5tYXAgcHJlcHJvY2VzcyB+ZjooZnVuIHQgLT4gdC5uYW1lKSlcbiAgICAgaW5cbiAgICAgbGV0IGVyciA9XG4gICAgICAgUHJpbnRmLnNwcmludGYgXCJBdCBtb3N0IG9uZSBwcmVwcm9jZXNzb3IgaXMgYWxsb3dlZCwgd2hpbGUgZ290OiAlc1wiIHBwXG4gICAgIGluXG4gICAgIGZhaWx3aXRoIGVycik7XG4gIGxldCBtYWtlX2dlbmVyaWMgdHJhbnNmb3JtcyA9XG4gICAgaWYgIW5vX21lcmdlIHRoZW5cbiAgICAgIExpc3QubWFwIHRyYW5zZm9ybXNcbiAgICAgICAgfmY6XG4gICAgICAgICAgKFRyYW5zZm9ybS5tZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyB+ZW1iZWRfZXJyb3JzIH5ob29rIH50b29sX25hbWVcbiAgICAgICAgICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWUpXG4gICAgZWxzZVxuICAgICAgKGxldCBnZXRfZW5jbG9zZXJzIH5mID1cbiAgICAgICAgIExpc3QuZmlsdGVyX21hcCB0cmFuc2Zvcm1zIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggZiBjdCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChjdC5uYW1lLCB4KSlcbiAgICAgICAgICgqIFNvcnQgdGhlbSB0byBlbnN1cmUgZGV0ZXJtaW5pc3RpYyBvcmRlcmluZyAqKVxuICAgICAgICAgfD4gTGlzdC5zb3J0IH5jbXA6KGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYilcbiAgICAgICAgIHw+IExpc3QubWFwIH5mOnNuZFxuICAgICAgIGluXG5cbiAgICAgICBsZXQgcnVsZXMgPVxuICAgICAgICAgTGlzdC5tYXAgdHJhbnNmb3JtcyB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5ydWxlcylcbiAgICAgICAgIHw+IExpc3QuY29uY2F0XG4gICAgICAgYW5kIGltcGxfZW5jbG9zZXJzID0gZ2V0X2VuY2xvc2VycyB+ZjooZnVuIGN0IC0+IGN0LmVuY2xvc2VfaW1wbClcbiAgICAgICBhbmQgaW50Zl9lbmNsb3NlcnMgPSBnZXRfZW5jbG9zZXJzIH5mOihmdW4gY3QgLT4gY3QuZW5jbG9zZV9pbnRmKSBpblxuICAgICAgIG1hdGNoIChydWxlcywgaW1wbF9lbmNsb3NlcnMsIGludGZfZW5jbG9zZXJzKSB3aXRoXG4gICAgICAgfCBbXSwgW10sIFtdIC0+IHRyYW5zZm9ybXNcbiAgICAgICB8IF8gLT5cbiAgICAgICAgICAgbGV0IG1lcmdlX2VuY2xvc2VyID0gZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgICAgICB8IGVuY2xvc2VycyAtPlxuICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgKGZ1biBjdHh0IGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IGhlYWRlcnMsIGZvb3RlcnMgPVxuICAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcCBlbmNsb3NlcnMgfmY6KGZ1biBmIC0+IGYgY3R4dCBsb2MpIHw+IExpc3Quc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgaGVhZGVycyA9IExpc3QuY29uY2F0IGhlYWRlcnMgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBmb290ZXJzID0gTGlzdC5jb25jYXQgKExpc3QucmV2IGZvb3RlcnMpIGluXG4gICAgICAgICAgICAgICAgICAgICAoaGVhZGVycywgZm9vdGVycykpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIFRyYW5zZm9ybS5idWlsdGluX29mX2NvbnRleHRfZnJlZV9yZXdyaXRlcnMgfnJ1bGVzIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgICAgICB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgICB+ZW5jbG9zZV9pbXBsOihtZXJnZV9lbmNsb3NlciBpbXBsX2VuY2xvc2VycylcbiAgICAgICAgICAgICB+ZW5jbG9zZV9pbnRmOihtZXJnZV9lbmNsb3NlciBpbnRmX2VuY2xvc2VycylcbiAgICAgICAgICAgICB+dG9vbF9uYW1lIH5pbnB1dF9uYW1lXG4gICAgICAgICAgIDo6IHRyYW5zZm9ybXMpXG4gICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgIG1hdGNoIChjdC5pbXBsLCBjdC5pbnRmKSB3aXRoIE5vbmUsIE5vbmUgLT4gZmFsc2UgfCBfIC0+IHRydWUpXG4gIGluXG4gIGxpbnRlcnMgQCBwcmVwcm9jZXNzIEAgYmVmb3JlX2luc3RycyBAIG1ha2VfZ2VuZXJpYyBjdHMgQCBhZnRlcl9pbnN0cnNcblxubGV0IGFwcGx5X3RyYW5zZm9ybXMgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5maWVsZCB+bGludF9maWVsZCB+ZHJvcHBlZF9zb19mYXJcbiAgICB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWUgfmVtYmVkX2Vycm9ycyBhc3QgPVxuICBsZXQgY3RzID1cbiAgICBnZXRfd2hvbGVfYXN0X3Bhc3NlcyB+dG9vbF9uYW1lIH5lbWJlZF9lcnJvcnMgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICB+aW5wdXRfbmFtZVxuICBpblxuICBsZXQgZmluaXNoIChhc3QsIF9kcm9wcGVkLCBsaW50X2Vycm9ycywgZXJyb3JzKSA9XG4gICAgKCBhc3QsXG4gICAgICBMaXN0Lm1hcCBsaW50X2Vycm9ycyB+ZjooZnVuIChsb2MsIHMpIC0+XG4gICAgICAgICAgQ29tbW9uLmF0dHJpYnV0ZV9vZl93YXJuaW5nIGxvYyBzKSxcbiAgICAgIGVycm9ycyApXG4gIGluXG4gIGxldCBhY2MgPVxuICAgIExpc3QuZm9sZF9sZWZ0IGN0cyB+aW5pdDooYXN0LCBbXSwgW10sIFtdKVxuICAgICAgfmY6KGZ1blxuICAgICAgICAgIChhc3QsIGRyb3BwZWQsIChsaW50X2Vycm9ycyA6IF8gbGlzdCksIGVycm9ycykgKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgIGxldCBpbnB1dF9uYW1lID1cbiAgICAgICAgICBtYXRjaCBpbnB1dF9uYW1lIHdpdGhcbiAgICAgICAgICB8IFNvbWUgaW5wdXRfbmFtZSAtPiBpbnB1dF9uYW1lXG4gICAgICAgICAgfCBOb25lIC0+IFwiX25vbmVfXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZVxuICAgICAgICBpblxuXG4gICAgICAgIGxldCBsaW50X2Vycm9ycywgZXJyb3JzID1cbiAgICAgICAgICBtYXRjaCBsaW50X2ZpZWxkIGN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKGxpbnRfZXJyb3JzLCBlcnJvcnMpXG4gICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICB0cnkgKGxpbnRfZXJyb3JzIEAgZiBjdHh0IGFzdCwgZXJyb3JzKVxuICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgICAgIChsaW50X2Vycm9ycywgZXhuX3RvX2xvY19lcnJvciBleG4gOjogZXJyb3JzKSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZmllbGQgY3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKGFzdCwgZHJvcHBlZCwgbGludF9lcnJvcnMsIGVycm9ycylcbiAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgIGxldCAoYXN0LCBtb3JlX2Vycm9ycyksIGVycm9ycyA9XG4gICAgICAgICAgICAgIHRyeSAoZiBjdHh0IGFzdCwgZXJyb3JzKVxuICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgICAgICgoYXN0LCBbXSksIGV4bl90b19sb2NfZXJyb3IgZXhuIDo6IGVycm9ycylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZHJvcHBlZCA9XG4gICAgICAgICAgICAgIGlmICFkZWJ1Z19hdHRyaWJ1dGVfZHJvcCB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgbmV3X2Ryb3BwZWQgPSBkcm9wcGVkX3NvX2ZhciBhc3QgaW5cbiAgICAgICAgICAgICAgICBkZWJ1Z19kcm9wcGVkX2F0dHJpYnV0ZSBjdC5uYW1lIH5vbGRfZHJvcHBlZDpkcm9wcGVkXG4gICAgICAgICAgICAgICAgICB+bmV3X2Ryb3BwZWQ7XG4gICAgICAgICAgICAgICAgbmV3X2Ryb3BwZWQpXG4gICAgICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoYXN0LCBkcm9wcGVkLCBsaW50X2Vycm9ycywgZXJyb3JzIEAgbW9yZV9lcnJvcnMpKVxuICBpblxuICBmaW5pc2ggYWNjXG5cbigqJCopXG5cbmxldCBlcnJvcl90b19zdHJfZXh0ZW5zaW9uIGVycm9yID1cbiAgbGV0IGxvYyA9IExvY2F0aW9uLm5vbmUgaW5cbiAgbGV0IGV4dCA9IExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvciBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2MgZXh0IFtdXG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcblxubGV0IGVycm9yX3RvX3NpZ19leHRlbnNpb24gZXJyb3IgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgZXh0ID0gTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yIGluXG4gIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYyBleHQgW11cblxuKCokKilcblxubGV0IGVycm9yX3RvX2V4dGVuc2lvbiBlcnJvciB+KGtpbmQgOiBLaW5kLnQpID1cbiAgbWF0Y2gga2luZCB3aXRoXG4gIHwgSW50ZiAtPiBJbnRmX29yX2ltcGwuSW50ZiBbIGVycm9yX3RvX3NpZ19leHRlbnNpb24gZXJyb3IgXVxuICB8IEltcGwgLT4gSW50Zl9vcl9pbXBsLkltcGwgWyBlcnJvcl90b19zdHJfZXh0ZW5zaW9uIGVycm9yIF1cblxubGV0IGV4bl90b19leHRlbnNpb24gZXhuIH4oa2luZCA6IEtpbmQudCkgPVxuICBleG5fdG9fbG9jX2Vycm9yIGV4biB8PiBlcnJvcl90b19leHRlbnNpb24gfmtpbmRcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBBY3R1YWwgcmV3cml0aW5nIG9mIHN0cnVjdHVyZS9zaWduYXR1cmVzICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgcHJpbnRfcGFzc2VzICgpID1cbiAgbGV0IHRvb2xfbmFtZSA9IFwicHB4bGliX2RyaXZlclwiIGluXG4gIGxldCBlbWJlZF9lcnJvcnMgPSBmYWxzZSBpblxuICBsZXQgaG9vayA9IENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcCBpblxuICBsZXQgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wIGluXG4gIGxldCBjdHMgPVxuICAgIGdldF93aG9sZV9hc3RfcGFzc2VzIH5lbWJlZF9lcnJvcnMgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH50b29sX25hbWVcbiAgICAgIH5pbnB1dF9uYW1lOk5vbmVcbiAgaW5cbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW5cbiAgICBQcmludGYucHJpbnRmIFwiPGJ1aWx0aW46ZnJlc2hlbi1hbmQtY29sbGVjdC1hdHRyaWJ1dGVzPlxcblwiO1xuICBMaXN0Lml0ZXIgY3RzIH5mOihmdW4gY3QgLT4gUHJpbnRmLnByaW50ZiBcIiVzXFxuXCIgY3QuVHJhbnNmb3JtLm5hbWUpO1xuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgUHJpbnRmLnByaW50ZiBcIjxidWlsdGluOmNoZWNrLXVudXNlZC1hdHRyaWJ1dGVzPlxcblwiO1xuICAgIGlmICFwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIHRoZW5cbiAgICAgIFByaW50Zi5wcmludGYgXCI8YnVpbHRpbjpjaGVjay11bnVzZWQtZXh0ZW5zaW9ucz5cXG5cIilcblxubGV0IHNvcnRfZXJyb3JzX2J5X2xvYyBlcnJvcnMgPVxuICBMaXN0LnNvcnQgZXJyb3JzIH5jbXA6KGZ1biBlcnJvciBlcnJvcicgLT5cbiAgICAgIGxldCBsb2MgPSBMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3IgaW5cbiAgICAgIGxldCBsb2MnID0gTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yJyBpblxuICAgICAgTG9jYXRpb24uY29tcGFyZSBsb2MgbG9jJylcblxuKCokKilcblxubGV0IG1hcF9zdHJ1Y3R1cmVfZ2VuIHN0IH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lXG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIENvb2tpZXMuYWNrbm93bGVkZ2VfY29va2llcyBUO1xuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgQXR0cmlidXRlLnJlc2V0X2NoZWNrcyAoKTtcbiAgICBBdHRyaWJ1dGUuY29sbGVjdCNzdHJ1Y3R1cmUgc3QpO1xuICBsZXQgbGludCBsaW50X2Vycm9ycyBzdCA9XG4gICAgbGV0IHN0ID1cbiAgICAgIG1hdGNoIGxpbnRfZXJyb3JzIHdpdGhcbiAgICAgIHwgW10gLT4gc3RcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzXG4gICAgICAgICAgICB+ZjooZnVuICh7IGF0dHJfbmFtZSA9IHsgbG9jOyBfIH07IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfYXR0cmlidXRlIH5sb2MgYXR0cilcbiAgICAgICAgICBAIHN0XG4gICAgaW5cbiAgICBzdFxuICBpblxuICBsZXQgd2l0aF9lcnJvcnMgZXJyb3JzIHN0ID1cbiAgICBsZXQgc29ydGVkID0gc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyBpblxuICAgIExpc3QubWFwIHNvcnRlZCB+ZjooZnVuIGVycm9yIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICAgICAgICB+bG9jOihMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3IpXG4gICAgICAgICAgKExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvcilcbiAgICAgICAgICBbXVxuICAgICAgICB8PiBnaG9zdCNzdHJ1Y3R1cmVfaXRlbSlcbiAgICBAIHN0XG4gIGluXG4gIGxldCBjb29raWVzX2FuZF9jaGVjayBzdCA9XG4gICAgQ29va2llcy5jYWxsX3Bvc3RfaGFuZGxlcnMgVDtcbiAgICBsZXQgZXJyb3JzID1cbiAgICAgIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHdvIHBhc3NlcyBjb3VsZCBiZSBtZXJnZWQsIHdlIG5vdyBoYXZlIG1vcmUgcGFzc2VzIGZvclxuICAgICAgICAgICBjaGVja3MgdGhhbiBmb3IgYWN0dWFsIHJld3JpdGluZy4gKilcbiAgICAgICAgbGV0IHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgICAgQXR0cmlidXRlLmNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3N0cnVjdHVyZSBzdCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgPVxuICAgICAgICAgIGlmICFwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIHRoZW5cbiAgICAgICAgICAgIEV4dGVuc2lvbi5jb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3N0cnVjdHVyZSBzdCBbXVxuICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vdF9zZWVuX2Vycm9ycyA9IEF0dHJpYnV0ZS5jb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgaW5cbiAgICAgICAgKGlmICFwZXJmb3JtX2xvY2F0aW9uc19jaGVjayB0aGVuXG4gICAgICAgICAgIGxldCBvcGVuIExvY2F0aW9uX2NoZWNrIGluXG4gICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICgoZW5mb3JjZV9pbnZhcmlhbnRzICFsb2NfZm5hbWUpI3N0cnVjdHVyZSBzdFxuICAgICAgICAgICAgICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICAgICA6IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnQpKTtcbiAgICAgICAgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIEAgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgQCBub3Rfc2Vlbl9lcnJvcnMpXG4gICAgICBlbHNlIFtdXG4gICAgaW5cbiAgICB3aXRoX2Vycm9ycyBlcnJvcnMgc3RcbiAgaW5cbiAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc3RyIHN0IGluXG4gIGxldCBzdCwgbGludF9lcnJvcnMsIGVycm9ycyA9XG4gICAgYXBwbHlfdHJhbnNmb3JtcyBzdCB+dG9vbF9uYW1lIH5maWxlX3BhdGhcbiAgICAgIH5maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5pbXBsKVxuICAgICAgfmxpbnRfZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QubGludF9pbXBsKVxuICAgICAgfmRyb3BwZWRfc29fZmFyOkF0dHJpYnV0ZS5kcm9wcGVkX3NvX2Zhcl9zdHJ1Y3R1cmUgfmhvb2tcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzXG4gIGluXG4gIHN0IHw+IGxpbnQgbGludF9lcnJvcnMgfD4gY29va2llc19hbmRfY2hlY2sgfD4gd2l0aF9lcnJvcnMgKExpc3QucmV2IGVycm9ycylcblxubGV0IG1hcF9zdHJ1Y3R1cmUgc3QgPVxuICBtYXRjaFxuICAgIG1hcF9zdHJ1Y3R1cmVfZ2VuIHN0XG4gICAgICB+dG9vbF9uYW1lOihBc3RsaWIuQXN0X21ldGFkYXRhLnRvb2xfbmFtZSAoKSlcbiAgICAgIH5ob29rOkNvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcFxuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyOkNvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3BcbiAgICAgIH5pbnB1dF9uYW1lOk5vbmUgfmVtYmVkX2Vycm9yczpmYWxzZVxuICB3aXRoXG4gIHwgYXN0IC0+IGFzdFxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5cbmxldCBtYXBfc2lnbmF0dXJlX2dlbiBzZyB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZVxuICAgIH5lbWJlZF9lcnJvcnMgPVxuICBDb29raWVzLmFja25vd2xlZGdlX2Nvb2tpZXMgVDtcbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgIEF0dHJpYnV0ZS5yZXNldF9jaGVja3MgKCk7XG4gICAgQXR0cmlidXRlLmNvbGxlY3Qjc2lnbmF0dXJlIHNnKTtcbiAgbGV0IGxpbnQgbGludF9lcnJvcnMgc2cgPVxuICAgIGxldCBzZyA9XG4gICAgICBtYXRjaCBsaW50X2Vycm9ycyB3aXRoXG4gICAgICB8IFtdIC0+IHNnXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBMaXN0Lm1hcCBsaW50X2Vycm9yc1xuICAgICAgICAgICAgfmY6KGZ1biAoeyBhdHRyX25hbWUgPSB7IGxvYzsgXyB9OyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2F0dHJpYnV0ZSB+bG9jIGF0dHIpXG4gICAgICAgICAgQCBzZ1xuICAgIGluXG4gICAgc2dcbiAgaW5cbiAgbGV0IHdpdGhfZXJyb3JzIGVycm9ycyBzZyA9XG4gICAgbGV0IHNvcnRlZCA9IHNvcnRfZXJyb3JzX2J5X2xvYyBlcnJvcnMgaW5cbiAgICBMaXN0Lm1hcCBzb3J0ZWQgfmY6KGZ1biBlcnJvciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgICAgICAgfmxvYzooTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yKVxuICAgICAgICAgIChMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IpXG4gICAgICAgICAgW11cbiAgICAgICAgfD4gZ2hvc3Qjc2lnbmF0dXJlX2l0ZW0pXG4gICAgQCBzZ1xuICBpblxuICBsZXQgY29va2llc19hbmRfY2hlY2sgc2cgPVxuICAgIENvb2tpZXMuY2FsbF9wb3N0X2hhbmRsZXJzIFQ7XG4gICAgbGV0IGVycm9ycyA9XG4gICAgICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR3byBwYXNzZXMgY291bGQgYmUgbWVyZ2VkLCB3ZSBub3cgaGF2ZSBtb3JlIHBhc3NlcyBmb3JcbiAgICAgICAgICAgY2hlY2tzIHRoYW4gZm9yIGFjdHVhbCByZXdyaXRpbmcuICopXG4gICAgICAgIGxldCB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICAgIEF0dHJpYnV0ZS5jb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzaWduYXR1cmUgc2cgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHVudXNlZF9leHRlbnNpb25fZXJyb3JzID1cbiAgICAgICAgICBpZiAhcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyB0aGVuXG4gICAgICAgICAgICBFeHRlbnNpb24uY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzaWduYXR1cmUgc2cgW11cbiAgICAgICAgICBlbHNlIFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub3Rfc2Vlbl9lcnJvcnMgPSBBdHRyaWJ1dGUuY29sbGVjdF91bnNlZW5fZXJyb3JzICgpIGluXG4gICAgICAgIChpZiAhcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgdGhlblxuICAgICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbl9jaGVjayBpblxuICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAoKGVuZm9yY2VfaW52YXJpYW50cyAhbG9jX2ZuYW1lKSNzaWduYXR1cmUgc2dcbiAgICAgICAgICAgICAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgICAgOiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy50KSk7XG4gICAgICAgIHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyBAIHVudXNlZF9leHRlbnNpb25fZXJyb3JzIEAgbm90X3NlZW5fZXJyb3JzKVxuICAgICAgZWxzZSBbXVxuICAgIGluXG4gICAgd2l0aF9lcnJvcnMgZXJyb3JzIHNnXG4gIGluXG4gIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3NpZyBzZyBpblxuICBsZXQgc2csIGxpbnRfZXJyb3JzLCBlcnJvcnMgPVxuICAgIGFwcGx5X3RyYW5zZm9ybXMgc2cgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoXG4gICAgICB+ZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QuaW50ZilcbiAgICAgIH5saW50X2ZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmxpbnRfaW50ZilcbiAgICAgIH5kcm9wcGVkX3NvX2ZhcjpBdHRyaWJ1dGUuZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIH5ob29rXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWUgfmVtYmVkX2Vycm9yc1xuICBpblxuICBzZyB8PiBsaW50IGxpbnRfZXJyb3JzIHw+IGNvb2tpZXNfYW5kX2NoZWNrIHw+IHdpdGhfZXJyb3JzIChMaXN0LnJldiBlcnJvcnMpXG5cbmxldCBtYXBfc2lnbmF0dXJlIHNnID1cbiAgbWF0Y2hcbiAgICBtYXBfc2lnbmF0dXJlX2dlbiBzZ1xuICAgICAgfnRvb2xfbmFtZTooQXN0bGliLkFzdF9tZXRhZGF0YS50b29sX25hbWUgKCkpXG4gICAgICB+aG9vazpDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3BcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlcjpDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wXG4gICAgICB+aW5wdXRfbmFtZTpOb25lIH5lbWJlZF9lcnJvcnM6ZmFsc2VcbiAgd2l0aFxuICB8IGFzdCAtPiBhc3RcblxuKCokKilcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBFbnRyeSBwb2ludHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgc3RyaW5nX2NvbnRhaW5zX2JpbmFyeV9hc3QgcyA9XG4gIGxldCB0ZXN0IG1hZ2ljX251bWJlciA9XG4gICAgU3RyaW5nLmlzX3ByZWZpeCBzIH5wcmVmaXg6KFN0cmluZy5zdWIgbWFnaWNfbnVtYmVyIH5wb3M6MCB+bGVuOjkpXG4gIGluXG4gIHRlc3QgQXN0X21hZ2ljLmFzdF9pbnRmX21hZ2ljX251bWJlciB8fCB0ZXN0IEFzdF9tYWdpYy5hc3RfaW1wbF9tYWdpY19udW1iZXJcblxubGV0IHZlcnNpb25lZF9lcnJvcmYgaW5wdXRfdmVyc2lvbiBpbnB1dF9maWxlX25hbWUgPVxuICBQcmludGYua3NwcmludGYgKGZ1biBtc2cgLT5cbiAgICAgIGxldCBlcnIgPVxuICAgICAgICBMb2NhdGlvbi5FcnJvci5tYWtlIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgaW5wdXRfZmlsZV9uYW1lKSBtc2cgfnN1YjpbXVxuICAgICAgaW5cbiAgICAgIEVycm9yIChlcnIsIGlucHV0X3ZlcnNpb24pKVxuXG5sZXQgcmVtb3ZlX25vX2Vycm9yIGZuID0gdHJ5IFN0ZGxpYi5TeXMucmVtb3ZlIGZuIHdpdGggU3lzX2Vycm9yIF8gLT4gKClcblxubGV0IHByb3RlY3R4IHggfmYgfmZpbmFsbHkgPVxuICBtYXRjaCBmIHggd2l0aFxuICB8IHYgLT5cbiAgICAgIGZpbmFsbHkgeDtcbiAgICAgIHZcbiAgfCBleGNlcHRpb24gZSAtPlxuICAgICAgZmluYWxseSB4O1xuICAgICAgcmFpc2UgZVxuXG5sZXQgd2l0aF9wcmVwcm9jZXNzZWRfZmlsZSBmbiB+ZiA9XG4gIG1hdGNoICFwcmVwcm9jZXNzb3Igd2l0aFxuICB8IE5vbmUgLT4gZiBmblxuICB8IFNvbWUgcHAgLT5cbiAgICAgIHByb3RlY3R4IChTdGRsaWIuRmlsZW5hbWUudGVtcF9maWxlIFwib2NhbWxwcFwiIFwiXCIpIH5maW5hbGx5OnJlbW92ZV9ub19lcnJvclxuICAgICAgICB+ZjooZnVuIHRtcGZpbGUgLT5cbiAgICAgICAgICBtYXRjaCBTeXN0ZW0ucnVuX3ByZXByb2Nlc3NvciB+cHAgfmlucHV0OmZuIH5vdXRwdXQ6dG1wZmlsZSB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBmIHRtcGZpbGVcbiAgICAgICAgICB8IEVycm9yIChmYWlsZWRfY29tbWFuZCwgZmFsbF9iYWNrX3ZlcnNpb24pIC0+XG4gICAgICAgICAgICAgIHZlcnNpb25lZF9lcnJvcmYgZmFsbF9iYWNrX3ZlcnNpb24gZm5cbiAgICAgICAgICAgICAgICBcIkVycm9yIHdoaWxlIHJ1bm5pbmcgZXh0ZXJuYWwgcHJlcHJvY2Vzc29yXFxuQ29tbWFuZCBsaW5lOiAlc1xcblwiXG4gICAgICAgICAgICAgICAgZmFpbGVkX2NvbW1hbmQpXG5cbmxldCByZWxvY2F0ZV9tYXBwZXIgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtzdHJpbmcgKiBzdHJpbmddIEFzdF90cmF2ZXJzZS5tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QhIHBvc2l0aW9uIChvbGRfZm4sIG5ld19mbikgcG9zID1cbiAgICAgIGlmIFN0cmluZy5lcXVhbCBwb3MucG9zX2ZuYW1lIG9sZF9mbiB0aGVuIHsgcG9zIHdpdGggcG9zX2ZuYW1lID0gbmV3X2ZuIH1cbiAgICAgIGVsc2UgcG9zXG4gIGVuZFxuXG4oKiBTZXQgdGhlIGlucHV0IG5hbWUgZ2xvYmFsbHkuIFRoaXMgaXMgdXNlZCBieSBzb21lIHBweCByZXdyaXRlcnNcbiAgIHN1Y2ggYXMgYmlzZWN0X3BweC4gKilcbmxldCBzZXRfaW5wdXRfbmFtZSA9IEFzdGxpYi5Mb2NhdGlvbi5zZXRfaW5wdXRfbmFtZVxuXG5sZXQgbG9hZF9pbnB1dCB+KGtpbmQgOiBLaW5kLnQpIH5pbnB1dF9uYW1lIH5yZWxvY2F0ZSBmbiA9XG4gIHNldF9pbnB1dF9uYW1lIGlucHV0X25hbWU7XG4gIGxldCBpbnB1dF9zb3VyY2UgPSBpZiBTdHJpbmcuZXF1YWwgZm4gXCItXCIgdGhlbiBBc3RfaW8uU3RkaW4gZWxzZSBGaWxlIGZuIGluXG4gIGxldCBpbnB1dF9raW5kID0gQXN0X2lvLlBvc3NpYmx5X3NvdXJjZSAoa2luZCwgaW5wdXRfbmFtZSkgaW5cbiAgbWF0Y2ggQXN0X2lvLnJlYWQgaW5wdXRfc291cmNlIH5pbnB1dF9raW5kIHdpdGhcbiAgfCBPayB7IGlucHV0X25hbWUgPSBhc3RfaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH0gLT5cbiAgICAgIGxldCBhc3Rfa2luZCA9IEludGZfb3JfaW1wbC5raW5kIGFzdCBpblxuICAgICAgaWYgbm90IChLaW5kLmVxdWFsIGtpbmQgYXN0X2tpbmQpIHRoZW5cbiAgICAgICAgdmVyc2lvbmVkX2Vycm9yZiBpbnB1dF92ZXJzaW9uIGZuXG4gICAgICAgICAgXCJGaWxlIGNvbnRhaW5zIGEgYmluYXJ5ICVzIEFTVCBidXQgYW4gJXMgd2FzIGV4cGVjdGVkXCJcbiAgICAgICAgICAoS2luZC5kZXNjcmliZSBhc3Rfa2luZCkgKEtpbmQuZGVzY3JpYmUga2luZClcbiAgICAgIGVsc2UgaWYgU3RyaW5nLmVxdWFsIGFzdF9pbnB1dF9uYW1lIGlucHV0X25hbWUgfHwgbm90IHJlbG9jYXRlIHRoZW4gKFxuICAgICAgICBzZXRfaW5wdXRfbmFtZSBhc3RfaW5wdXRfbmFtZTtcbiAgICAgICAgT2sgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBPa1xuICAgICAgICAgICggaW5wdXRfbmFtZSxcbiAgICAgICAgICAgIGlucHV0X3ZlcnNpb24sXG4gICAgICAgICAgICBJbnRmX29yX2ltcGwubWFwX3dpdGhfY29udGV4dCBhc3QgcmVsb2NhdGVfbWFwcGVyXG4gICAgICAgICAgICAgIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfbmFtZSkgKVxuICB8IEVycm9yIChVbmtub3duX3ZlcnNpb24gKHVua25vd25fbWFnaWMsIGZhbGxfYmFja192ZXJzaW9uKSkgLT5cbiAgICAgIHZlcnNpb25lZF9lcnJvcmYgZmFsbF9iYWNrX3ZlcnNpb24gZm5cbiAgICAgICAgXCJGaWxlIGlzIGEgYmluYXJ5IGFzdCBmb3IgYW4gdW5rbm93biB2ZXJzaW9uIG9mIE9DYW1sIHdpdGggbWFnaWMgXFxcbiAgICAgICAgIG51bWJlciAnJXMnXCJcbiAgICAgICAgdW5rbm93bl9tYWdpY1xuICB8IEVycm9yIChTeXN0ZW1fZXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfdmVyc2lvbikpXG4gIHwgRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIGZhbGxfYmFja192ZXJzaW9uKSkgLT5cbiAgICAgIEVycm9yIChlcnJvciwgZmFsbF9iYWNrX3ZlcnNpb24pXG4gIHwgRXJyb3IgTm90X2FfYmluYXJ5X2FzdCAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGxvYWRfaW5wdXRfcnVuX2FzX3BweCBmbiA9XG4gICgqIElmIHRoZXJlJ3MgYW4gZXJyb3Igd2hpbGUgbG9hZGluZyBpbiBydW5fYXNfcHB4IG1vZGUsIHRoZSBraW5kIG9mIEFTVCAoaW1wbC9pbnRmKSBpcyBzdGlsbCB1bmtub3duLlxuICAgICBUaGF0J3Mgd2h5LCBhcyBvcHBvc2VkIHRvIGxvYWRfaW5wdXQsIHRoaXMgZnVuY3Rpb24gcmFpc2VzIGVycm9ycyBpbnN0ZWFkIG9mIHJldHVybmluZyBhIHJlc3VsdDpcbiAgICAgaGFuZGxpbmcgYW4gZXJyb3IgYnkgcmV0dXJuaW5nIGFuIEFTVCB3aXRoIHRoZSBlcnJvciBwYWNrZWQgYXMgZXh0ZW5zaW9uIG5vZGUgd291bGRuJ3QgYmUgcG9zc2libGUuICopXG4gIG1hdGNoIEFzdF9pby5yZWFkIChGaWxlIGZuKSB+aW5wdXRfa2luZDpBc3RfaW8uTmVjZXNzYXJpbHlfYmluYXJ5IHdpdGhcbiAgfCBPayB7IGlucHV0X25hbWUgPSBhc3RfaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH0gLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaCAhbG9jX2ZuYW1lIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBzZXRfaW5wdXRfbmFtZSBhc3RfaW5wdXRfbmFtZTtcbiAgICAgICAgICAgIGFzdFxuICAgICAgICB8IFNvbWUgaW5wdXRfbmFtZSAtPlxuICAgICAgICAgICAgc2V0X2lucHV0X25hbWUgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgIGlmIFN0cmluZy5lcXVhbCBhc3RfaW5wdXRfbmFtZSBpbnB1dF9uYW1lIHRoZW4gYXN0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIEludGZfb3JfaW1wbC5tYXBfd2l0aF9jb250ZXh0IGFzdCByZWxvY2F0ZV9tYXBwZXJcbiAgICAgICAgICAgICAgICAoYXN0X2lucHV0X25hbWUsIGlucHV0X25hbWUpXG4gICAgICBpblxuICAgICAgKCogV2l0aCBgLS1hcy1wcHhgLCBvY2FtbCBjYWxscyB0aGUgc3RhbmRhbG9uZSBzZXBhcmF0ZWx5IGZvciBldmVyeSBzdHJ1Y3R1cmUvc2lnbmF0dXJlIGl0ZW1cbiAgICAgICAgIHdpdGggdGhlIGZpbGVuYW1lIGFzIG1ldGFkYXRhIHRoYXQgaXQgZ2V0cyBmcm9tIHRoZSBwcmV2aW91cyBjYWxsLiByZWxvY2F0ZV9tYXBwZXIgb25seVxuICAgICAgICAgcmVsb2NhdGVzIHBvc2l0aW9ucyB3aG9zZSBwb3NpdGlvbiBmaWxlbmFtZSBjb2luY2lkZXMgd2l0aCB0aGF0IG1ldGFkYXRhIGZpbGVuYW1lLlxuICAgICAgICAgU28gYWx3YXlzIHJldHVybiB0aGUgbWV0YWRhdGEgZmlsZW5hbWUgaXRzZWxmLCBldmVuIGlmIGAtbG9jLWZpbGVuYW1lYCBpcyBwcm92aWRlZC4gKilcbiAgICAgIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KVxuICB8IEVycm9yIChVbmtub3duX3ZlcnNpb24gKHVua25vd25fbWFnaWMsIF8pKSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgZm4pXG4gICAgICAgIFwiVGhlIGlucHV0IGlzIGEgYmluYXJ5IGFzdCBmb3IgYW4gdW5rbm93biB2ZXJzaW9uIG9mIE9DYW1sIHdpdGggbWFnaWMgXFxcbiAgICAgICAgIG51bWJlciAnJXMnXCJcbiAgICAgICAgdW5rbm93bl9tYWdpY1xuICB8IEVycm9yIE5vdF9hX2JpbmFyeV9hc3QgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGZuKVxuICAgICAgICBcIkV4cGVjdGVkIGEgYmluYXJ5IEFTVCBhcyBpbnB1dFwiXG4gIHwgRXJyb3IgKFN5c3RlbV9lcnJvciAoZXJyb3IsIF8pKSB8IEVycm9yIChTb3VyY2VfcGFyc2VfZXJyb3IgKGVycm9yLCBfKSkgLT5cbiAgICAgIGxldCBvcGVuIExvY2F0aW9uLkVycm9yIGluXG4gICAgICBMb2NhdGlvbi5zZXRfZmlsZW5hbWUgKGdldF9sb2NhdGlvbiBlcnJvcikgZm4gfD4gdXBkYXRlX2xvYyBlcnJvciB8PiByYWlzZVxuXG5sZXQgbG9hZF9zb3VyY2VfZmlsZSBmbiA9XG4gIGxldCBzID0gSW5fY2hhbm5lbC5yZWFkX2FsbCBmbiBpblxuICBpZiBzdHJpbmdfY29udGFpbnNfYmluYXJ5X2FzdCBzIHRoZW5cbiAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBmbilcbiAgICAgIFwicHB4bGliX2RyaXZlcjogY2Fubm90IHVzZSAtcmVjb25jaWxlIHdpdGggYmluYXJ5IEFTVCBmaWxlc1wiO1xuICBzXG5cbnR5cGUgb3V0cHV0X21vZGUgPVxuICB8IFByZXR0eV9wcmludFxuICB8IER1bXBfYXN0XG4gIHwgRHBhcnNldHJlZVxuICB8IFJlY29uY2lsZSBvZiBSZWNvbmNpbGUubW9kZVxuICB8IE51bGxcblxuKCokKilcbmxldCBleHRyYWN0X2Nvb2tpZXNfc3RyIHN0ID1cbiAgbGV0IHN0ID1cbiAgICBtYXRjaCBzdCB3aXRoXG4gICAgfCAoe1xuICAgICAgICAgcHN0cl9kZXNjID1cbiAgICAgICAgICAgUHN0cl9hdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwucHB4LmNvbnRleHRcIjsgXyB9OyBfIH07XG4gICAgICAgICBfO1xuICAgICAgIH0gYXMgcHJlZml4KVxuICAgICAgOjogc3QgLT5cbiAgICAgICAgbGV0IHByZWZpeCA9IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0LnRvX29jYW1sIFN0cnVjdHVyZSBbIHByZWZpeCBdIGluXG4gICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgTGlzdC5pc19lbXB0eVxuICAgICAgICAgICAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZHJvcF9wcHhfY29udGV4dF9zdHIgfnJlc3RvcmU6dHJ1ZSBwcmVmaXgpKTtcbiAgICAgICAgc3RcbiAgICB8IF8gLT4gc3RcbiAgaW5cbiAgKCogVGhlIGNsaSBjb29raWVzIGhhdmUgdG8gYmUgc2V0IGFmdGVyIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQsXG4gICAgIHNpbmNlIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQgcmVzZXRzIHRoZSBjb29raWVzICopXG4gIExpc3QuaXRlciAhQ29va2llcy5naXZlbl90aHJvdWdoX2NsaSB+ZjooZnVuIChuYW1lLCBleHByKSAtPlxuICAgICAgQ29va2llcy5zZXQgVCBuYW1lIGV4cHIpO1xuICBzdFxuXG5sZXQgYWRkX2Nvb2tpZXNfc3RyIHN0ID1cbiAgbGV0IHByZWZpeCA9XG4gICAgQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc3RyIH50b29sX25hbWU6XCJwcHhsaWJfZHJpdmVyXCIgW11cbiAgICB8PiBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbCBTdHJ1Y3R1cmVcbiAgaW5cbiAgcHJlZml4IEAgc3RcblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxubGV0IGV4dHJhY3RfY29va2llc19zaWcgc2cgPVxuICBsZXQgc2cgPVxuICAgIG1hdGNoIHNnIHdpdGhcbiAgICB8ICh7XG4gICAgICAgICBwc2lnX2Rlc2MgPVxuICAgICAgICAgICBQc2lnX2F0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC5wcHguY29udGV4dFwiOyBfIH07IF8gfTtcbiAgICAgICAgIF87XG4gICAgICAgfSBhcyBwcmVmaXgpXG4gICAgICA6OiBzZyAtPlxuICAgICAgICBsZXQgcHJlZml4ID0gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3QudG9fb2NhbWwgU2lnbmF0dXJlIFsgcHJlZml4IF0gaW5cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICBMaXN0LmlzX2VtcHR5XG4gICAgICAgICAgICAoQXN0bGliLkFzdF9tZXRhZGF0YS5kcm9wX3BweF9jb250ZXh0X3NpZyB+cmVzdG9yZTp0cnVlIHByZWZpeCkpO1xuICAgICAgICBzZ1xuICAgIHwgXyAtPiBzZ1xuICBpblxuICAoKiBUaGUgY2xpIGNvb2tpZXMgaGF2ZSB0byBiZSBzZXQgYWZ0ZXIgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCxcbiAgICAgc2luY2UgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCByZXNldHMgdGhlIGNvb2tpZXMgKilcbiAgTGlzdC5pdGVyICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpIH5mOihmdW4gKG5hbWUsIGV4cHIpIC0+XG4gICAgICBDb29raWVzLnNldCBUIG5hbWUgZXhwcik7XG4gIHNnXG5cbmxldCBhZGRfY29va2llc19zaWcgc2cgPVxuICBsZXQgcHJlZml4ID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zaWcgfnRvb2xfbmFtZTpcInBweGxpYl9kcml2ZXJcIiBbXVxuICAgIHw+IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIFNpZ25hdHVyZVxuICBpblxuICBwcmVmaXggQCBzZ1xuXG4oKiQqKVxuXG5sZXQgZXh0cmFjdF9jb29raWVzIChhc3QgOiBJbnRmX29yX2ltcGwudCkgOiBJbnRmX29yX2ltcGwudCA9XG4gIG1hdGNoIGFzdCB3aXRoXG4gIHwgSW50ZiB4IC0+IEludGYgKGV4dHJhY3RfY29va2llc19zaWcgeClcbiAgfCBJbXBsIHggLT4gSW1wbCAoZXh0cmFjdF9jb29raWVzX3N0ciB4KVxuXG5sZXQgYWRkX2Nvb2tpZXMgKGFzdCA6IEludGZfb3JfaW1wbC50KSA6IEludGZfb3JfaW1wbC50ID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT4gSW50ZiAoYWRkX2Nvb2tpZXNfc2lnIHgpXG4gIHwgSW1wbCB4IC0+IEltcGwgKGFkZF9jb29raWVzX3N0ciB4KVxuXG5sZXQgY29ycmVjdGlvbnMgPSByZWYgW11cbmxldCBhZGRfdG9fbGlzdCByIHggPSByIDo9IHggOjogIXJcblxubGV0IHJlZ2lzdGVyX2NvcnJlY3Rpb24gfmxvYyB+cmVwbCA9XG4gIGFkZF90b19saXN0IGNvcnJlY3Rpb25zXG4gICAgKFJlY29uY2lsZS5SZXBsYWNlbWVudC5tYWtlX3RleHQgKCkgfnN0YXJ0OmxvYy5sb2Nfc3RhcnQgfnN0b3A6bG9jLmxvY19lbmRcbiAgICAgICB+cmVwbClcblxubGV0IHByb2Nlc3NfZmlsZV9ob29rcyA9IHJlZiBbXVxubGV0IHJlZ2lzdGVyX3Byb2Nlc3NfZmlsZV9ob29rIGYgPSBhZGRfdG9fbGlzdCBwcm9jZXNzX2ZpbGVfaG9va3MgZlxuXG5tb2R1bGUgRmlsZV9wcm9wZXJ0eSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSB7XG4gICAgbmFtZSA6IHN0cmluZztcbiAgICBtdXRhYmxlIGRhdGEgOiAnYSBvcHRpb247XG4gICAgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50O1xuICB9XG5cbiAgdHlwZSBwYWNrZWQgPSBUIDogXyB0IC0+IHBhY2tlZFxuXG4gIGxldCBhbGwgPSByZWYgW11cbiAgbGV0IHJlZ2lzdGVyIHQgPSBhZGRfdG9fbGlzdCBhbGwgKFQgdClcbiAgbGV0IHJlc2V0X2FsbCAoKSA9IExpc3QuaXRlciAhYWxsIH5mOihmdW4gKFQgdCkgLT4gdC5kYXRhIDwtIE5vbmUpXG5cbiAgbGV0IGR1bXBfYW5kX3Jlc2V0X2FsbCAoKSA9XG4gICAgTGlzdC5maWx0ZXJfbWFwIChMaXN0LnJldiAhYWxsKSB+ZjooZnVuIChUIHQpIC0+XG4gICAgICAgIG1hdGNoIHQuZGF0YSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICAgICB0LmRhdGEgPC0gTm9uZTtcbiAgICAgICAgICAgIFNvbWUgKHQubmFtZSwgdC5zZXhwX29mX3QgdikpXG5lbmRcblxubW9kdWxlIENyZWF0ZV9maWxlX3Byb3BlcnR5XG4gICAgKE5hbWUgOiBzaWdcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kKVxuICAgIChUIDogU2V4cGFibGUuUykgPVxuc3RydWN0XG4gIGxldCB0IDogXyBGaWxlX3Byb3BlcnR5LnQgPVxuICAgIHsgbmFtZSA9IE5hbWUubmFtZTsgZGF0YSA9IE5vbmU7IHNleHBfb2ZfdCA9IFQuc2V4cF9vZl90IH1cblxuICBsZXQgKCkgPSBGaWxlX3Byb3BlcnR5LnJlZ2lzdGVyIHRcbiAgbGV0IHNldCB4ID0gdC5kYXRhIDwtIFNvbWUgeFxuZW5kXG5cbmxldCBwcm9jZXNzX2FzdCAoYXN0IDogSW50Zl9vcl9pbXBsLnQpIH5pbnB1dF9uYW1lIH50b29sX25hbWUgfmhvb2tcbiAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmVtYmVkX2Vycm9ycyA9XG4gIG1hdGNoIGFzdCB3aXRoXG4gIHwgSW50ZiB4IC0+XG4gICAgICBsZXQgYXN0ID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBtYXBfc2lnbmF0dXJlX2dlbiB4IH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICB+aW5wdXRfbmFtZTooU29tZSBpbnB1dF9uYW1lKSB+ZW1iZWRfZXJyb3JzXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBhc3QgLT4gYXN0XG4gICAgICBpblxuICAgICAgSW50Zl9vcl9pbXBsLkludGYgYXN0XG4gIHwgSW1wbCB4IC0+XG4gICAgICBsZXQgYXN0ID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBtYXBfc3RydWN0dXJlX2dlbiB4IH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICB+aW5wdXRfbmFtZTooU29tZSBpbnB1dF9uYW1lKSB+ZW1iZWRfZXJyb3JzXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBhc3QgLT4gYXN0XG4gICAgICBpblxuICAgICAgSW50Zl9vcl9pbXBsLkltcGwgYXN0XG5cbmxldCBwcm9jZXNzX2ZpbGUgKGtpbmQgOiBLaW5kLnQpIGZuIH5pbnB1dF9uYW1lIH5yZWxvY2F0ZSB+b3V0cHV0X21vZGVcbiAgICB+ZW1iZWRfZXJyb3JzIH5vdXRwdXQgPVxuICBGaWxlX3Byb3BlcnR5LnJlc2V0X2FsbCAoKTtcbiAgTGlzdC5pdGVyIChMaXN0LnJldiAhcHJvY2Vzc19maWxlX2hvb2tzKSB+ZjooZnVuIGYgLT4gZiAoKSk7XG4gIGNvcnJlY3Rpb25zIDo9IFtdO1xuICBsZXQgcmVwbGFjZW1lbnRzID0gcmVmIFtdIGluXG4gIGxldCB0b29sX25hbWUgPSBcInBweF9kcml2ZXJcIiBpblxuICBsZXQgaG9vayA6IENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLnQgPVxuICAgIG1hdGNoIG91dHB1dF9tb2RlIHdpdGhcbiAgICB8IFJlY29uY2lsZSAoVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzKSAtPlxuICAgICAgICB7XG4gICAgICAgICAgZiA9XG4gICAgICAgICAgICAoZnVuIGNvbnRleHQgKGxvYyA6IExvY2F0aW9uLnQpIGdlbmVyYXRlZCAtPlxuICAgICAgICAgICAgICBhZGRfdG9fbGlzdCByZXBsYWNlbWVudHNcbiAgICAgICAgICAgICAgICAoUmVjb25jaWxlLlJlcGxhY2VtZW50Lm1ha2UgKCkgfmNvbnRleHQ6KEV4dGVuc2lvbiBjb250ZXh0KVxuICAgICAgICAgICAgICAgICAgIH5zdGFydDpsb2MubG9jX3N0YXJ0IH5zdG9wOmxvYy5sb2NfZW5kIH5yZXBsOmdlbmVyYXRlZCkpO1xuICAgICAgICB9XG4gICAgfCBfIC0+IENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcFxuICBpblxuICBsZXQgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgOiBDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIudCA9XG4gICAge1xuICAgICAgZiA9XG4gICAgICAgIChmdW4gY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgZ2VuZXJhdGVkIC0+XG4gICAgICAgICAgYWRkX3RvX2xpc3QgY29ycmVjdGlvbnNcbiAgICAgICAgICAgIChSZWNvbmNpbGUuUmVwbGFjZW1lbnQubWFrZSAoKSB+Y29udGV4dDooRmxvYXRpbmdfYXR0cmlidXRlIGNvbnRleHQpXG4gICAgICAgICAgICAgICB+c3RhcnQ6bG9jLmxvY19zdGFydCB+c3RvcDpsb2MubG9jX2VuZCB+cmVwbDooTWFueSBnZW5lcmF0ZWQpKSk7XG4gICAgfVxuICBpblxuXG4gIGxldCBpbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QgPVxuICAgIGxldCBwcmVwcm9jZXNzZWRfYW5kX2xvYWRlZCA9XG4gICAgICB3aXRoX3ByZXByb2Nlc3NlZF9maWxlIGZuIH5mOihsb2FkX2lucHV0IH5raW5kIH5pbnB1dF9uYW1lIH5yZWxvY2F0ZSlcbiAgICBpblxuICAgIG1hdGNoIHByZXByb2Nlc3NlZF9hbmRfbG9hZGVkIHdpdGhcbiAgICB8IE9rIChpbnB1dF9mbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KSAtPiAoXG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBhc3QgPVxuICAgICAgICAgICAgZXh0cmFjdF9jb29raWVzIGFzdFxuICAgICAgICAgICAgfD4gcHJvY2Vzc19hc3QgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9yc1xuICAgICAgICAgIGluXG4gICAgICAgICAgKGlucHV0X2ZuYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpXG4gICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgKGlucHV0X2ZuYW1lLCBpbnB1dF92ZXJzaW9uLCBleG5fdG9fZXh0ZW5zaW9uIGV4biB+a2luZCkpXG4gICAgfCBFcnJvciAoZXJyb3IsIGlucHV0X3ZlcnNpb24pIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgIChpbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBlcnJvcl90b19leHRlbnNpb24gZXJyb3IgfmtpbmQpXG4gICAgfCBFcnJvciAoZXJyb3IsIF8pIC0+XG4gICAgICAgIGxldCBvcGVuIExvY2F0aW9uLkVycm9yIGluXG4gICAgICAgIExvY2F0aW9uLnNldF9maWxlbmFtZSAoZ2V0X2xvY2F0aW9uIGVycm9yKSBmblxuICAgICAgICB8PiB1cGRhdGVfbG9jIGVycm9yIHw+IHJhaXNlXG4gIGluXG4gIE9wdGlvbi5pdGVyICFvdXRwdXRfbWV0YWRhdGFfZmlsZW5hbWUgfmY6KGZ1biBmbiAtPlxuICAgICAgbGV0IG1ldGFkYXRhID0gRmlsZV9wcm9wZXJ0eS5kdW1wX2FuZF9yZXNldF9hbGwgKCkgaW5cbiAgICAgIE91dF9jaGFubmVsLndyaXRlX2FsbCBmblxuICAgICAgICB+ZGF0YTpcbiAgICAgICAgICAoTGlzdC5tYXAgbWV0YWRhdGEgfmY6KGZ1biAocywgc2V4cCkgLT5cbiAgICAgICAgICAgICAgIFNleHAudG9fc3RyaW5nX2h1bSAoU2V4cC5MaXN0IFsgQXRvbSBzOyBzZXhwIF0pIF4gXCJcXG5cIilcbiAgICAgICAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIikpO1xuXG4gIGxldCBpbnB1dF9jb250ZW50cyA9IGxhenkgKGxvYWRfc291cmNlX2ZpbGUgZm4pIGluXG4gIGxldCBjb3JyZWN0ZWQgPSBmbiBeICFjb3JyZWN0ZWRfc3VmZml4IGluXG4gIGxldCBtaXNtYXRjaGVzX2ZvdW5kID1cbiAgICBtYXRjaCAhY29ycmVjdGlvbnMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgICAgaWYgU3RkbGliLlN5cy5maWxlX2V4aXN0cyBjb3JyZWN0ZWQgdGhlbiBTdGRsaWIuU3lzLnJlbW92ZSBjb3JyZWN0ZWQ7XG4gICAgICAgIGZhbHNlXG4gICAgfCBjb3JyZWN0aW9ucyAtPlxuICAgICAgICBSZWNvbmNpbGUucmVjb25jaWxlIGNvcnJlY3Rpb25zXG4gICAgICAgICAgfmNvbnRlbnRzOihMYXp5LmZvcmNlIGlucHV0X2NvbnRlbnRzKVxuICAgICAgICAgIH5vdXRwdXQ6KFNvbWUgY29ycmVjdGVkKSB+aW5wdXRfZmlsZW5hbWU6Zm4gfmlucHV0X25hbWVcbiAgICAgICAgICB+dGFyZ2V0OkNvcnJlY3RlZCA/c3R5bGVyOiFzdHlsZXIgfmtpbmQ7XG4gICAgICAgIHRydWVcbiAgaW5cblxuICAobWF0Y2ggb3V0cHV0X21vZGUgd2l0aFxuICB8IE51bGwgLT4gKClcbiAgfCBQcmV0dHlfcHJpbnQgLT5cbiAgICAgIHdpdGhfb3V0cHV0IG91dHB1dCB+YmluYXJ5OmZhbHNlIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICBsZXQgcHBmID0gU3RkbGliLkZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgICAgICAgICAobWF0Y2ggYXN0IHdpdGhcbiAgICAgICAgICB8IEludGYgYXN0IC0+IFBwcmludGFzdC5zaWduYXR1cmUgcHBmIGFzdFxuICAgICAgICAgIHwgSW1wbCBhc3QgLT4gUHByaW50YXN0LnN0cnVjdHVyZSBwcGYgYXN0KTtcbiAgICAgICAgICBsZXQgbnVsbF9hc3QgPVxuICAgICAgICAgICAgbWF0Y2ggYXN0IHdpdGggSW50ZiBbXSB8IEltcGwgW10gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIG5vdCBudWxsX2FzdCB0aGVuIFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfbmV3bGluZSBwcGYgKCkpXG4gIHwgRHVtcF9hc3QgLT5cbiAgICAgIHdpdGhfb3V0cHV0IG91dHB1dCB+YmluYXJ5OnRydWUgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIEFzdF9pby53cml0ZSBvY1xuICAgICAgICAgICAgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfVxuICAgICAgICAgICAgfmFkZF9wcHhfY29udGV4dDp0cnVlKVxuICB8IERwYXJzZXRyZWUgLT5cbiAgICAgIHdpdGhfb3V0cHV0IG91dHB1dCB+YmluYXJ5OmZhbHNlIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICBsZXQgcHBmID0gU3RkbGliLkZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgICAgICAgICBsZXQgYXN0ID0gYWRkX2Nvb2tpZXMgYXN0IGluXG4gICAgICAgICAgKG1hdGNoIGFzdCB3aXRoXG4gICAgICAgICAgfCBJbnRmIGFzdCAtPiBTZXhwLnBwX2h1bSBwcGYgKEFzdF90cmF2ZXJzZS5zZXhwX29mI3NpZ25hdHVyZSBhc3QpXG4gICAgICAgICAgfCBJbXBsIGFzdCAtPiBTZXhwLnBwX2h1bSBwcGYgKEFzdF90cmF2ZXJzZS5zZXhwX29mI3N0cnVjdHVyZSBhc3QpKTtcbiAgICAgICAgICBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgcHBmICgpKVxuICB8IFJlY29uY2lsZSBtb2RlIC0+XG4gICAgICBSZWNvbmNpbGUucmVjb25jaWxlICFyZXBsYWNlbWVudHNcbiAgICAgICAgfmNvbnRlbnRzOihMYXp5LmZvcmNlIGlucHV0X2NvbnRlbnRzKVxuICAgICAgICB+b3V0cHV0IH5pbnB1dF9maWxlbmFtZTpmbiB+aW5wdXRfbmFtZSB+dGFyZ2V0OihPdXRwdXQgbW9kZSlcbiAgICAgICAgP3N0eWxlcjohc3R5bGVyIH5raW5kKTtcblxuICBpZlxuICAgIG1pc21hdGNoZXNfZm91bmQgJiYgbWF0Y2ggIWRpZmZfY29tbWFuZCB3aXRoIFNvbWUgXCItXCIgLT4gZmFsc2UgfCBfIC0+IHRydWVcbiAgdGhlbiAoXG4gICAgUHB4bGliX3ByaW50X2RpZmYucHJpbnQgKCkgfmZpbGUxOmZuIH5maWxlMjpjb3JyZWN0ZWQgfnVzZV9jb2xvcjohdXNlX2NvbG9yXG4gICAgICA/ZGlmZl9jb21tYW5kOiFkaWZmX2NvbW1hbmQ7XG4gICAgU3RkbGliLmV4aXQgMSlcblxubGV0IG91dHB1dF9tb2RlID0gcmVmIFByZXR0eV9wcmludFxubGV0IG91dHB1dCA9IHJlZiBOb25lXG5sZXQga2luZCA9IHJlZiBOb25lXG5sZXQgaW5wdXQgPSByZWYgTm9uZVxubGV0IGVtYmVkX2Vycm9ycyA9IHJlZiBmYWxzZVxuXG5sZXQgc2V0X2lucHV0IGZuID1cbiAgbWF0Y2ggIWlucHV0IHdpdGhcbiAgfCBOb25lIC0+IGlucHV0IDo9IFNvbWUgZm5cbiAgfCBTb21lIF8gLT4gcmFpc2UgKEFyZy5CYWQgXCJ0b28gbWFueSBpbnB1dCBmaWxlc1wiKVxuXG5sZXQgc2V0X2tpbmQgayA9XG4gIG1hdGNoICFraW5kIHdpdGhcbiAgfCBTb21lIGsnIHdoZW4gbm90IChLaW5kLmVxdWFsIGsgaycpIC0+XG4gICAgICByYWlzZSAoQXJnLkJhZCBcIm11c3Qgc3BlY2lmeSBhdCBtb3N0IG9uZSBvZiAtaW1wbCBvciAtaW50ZlwiKVxuICB8IF8gLT4ga2luZCA6PSBTb21lIGtcblxubGV0IHNldF9vdXRwdXRfbW9kZSBtb2RlID1cbiAgbWF0Y2ggKCFvdXRwdXRfbW9kZSwgbW9kZSkgd2l0aFxuICB8IFByZXR0eV9wcmludCwgXyAtPiBvdXRwdXRfbW9kZSA6PSBtb2RlXG4gIHwgXywgUHJldHR5X3ByaW50IC0+IGFzc2VydCBmYWxzZVxuICB8IER1bXBfYXN0LCBEdW1wX2FzdCB8IERwYXJzZXRyZWUsIERwYXJzZXRyZWUgLT4gKClcbiAgfCBSZWNvbmNpbGUgYSwgUmVjb25jaWxlIGIgd2hlbiBQb2x5LmVxdWFsIGEgYiAtPiAoKVxuICB8IHgsIHkgLT5cbiAgICAgIGxldCBhcmdfb2Zfb3V0cHV0X21vZGUgPSBmdW5jdGlvblxuICAgICAgICB8IFByZXR0eV9wcmludCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBEdW1wX2FzdCAtPiBcIi1kdW1wLWFzdFwiXG4gICAgICAgIHwgRHBhcnNldHJlZSAtPiBcIi1kcGFyc2V0cmVlXCJcbiAgICAgICAgfCBSZWNvbmNpbGUgVXNpbmdfbGluZV9kaXJlY3RpdmVzIC0+IFwiLXJlY29uY2lsZVwiXG4gICAgICAgIHwgUmVjb25jaWxlIERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPiBcIi1yZWNvbmNpbGUtd2l0aC1jb21tZW50c1wiXG4gICAgICAgIHwgTnVsbCAtPiBcIi1udWxsXCJcbiAgICAgIGluXG4gICAgICByYWlzZVxuICAgICAgICAoQXJnLkJhZFxuICAgICAgICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyBhbmQgJXMgYXJlIGluY29tcGF0aWJsZVwiIChhcmdfb2Zfb3V0cHV0X21vZGUgeClcbiAgICAgICAgICAgICAgKGFyZ19vZl9vdXRwdXRfbW9kZSB5KSkpXG5cbmxldCBwcmludF90cmFuc2Zvcm1hdGlvbnMgKCkgPVxuICBMaXN0Lml0ZXIgIVRyYW5zZm9ybS5hbGwgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgIFByaW50Zi5wcmludGYgXCIlc1xcblwiIGN0Lm5hbWUpXG5cbmxldCBwYXJzZV9hcHBseV9saXN0IHMgPVxuICBsZXQgbmFtZXMgPVxuICAgIGlmIFN0cmluZy5lcXVhbCBzIFwiXCIgdGhlbiBbXSBlbHNlIFN0cmluZy5zcGxpdF9vbl9jaGFyIHMgfnNlcDonLCdcbiAgaW5cbiAgTGlzdC5pdGVyIG5hbWVzIH5mOihmdW4gbmFtZSAtPlxuICAgICAgaWZcbiAgICAgICAgbm90XG4gICAgICAgICAgKExpc3QuZXhpc3RzICFUcmFuc2Zvcm0uYWxsIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgICBUcmFuc2Zvcm0uaGFzX25hbWUgY3QgbmFtZSkpXG4gICAgICB0aGVuXG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKFN0ZGxpYi5BcmcuQmFkXG4gICAgICAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiY29kZSB0cmFuc2Zvcm1hdGlvbiAnJXMnIGRvZXMgbm90IGV4aXN0XCIgbmFtZSkpKTtcbiAgbmFtZXNcblxudHlwZSBtYXNrID0ge1xuICBtdXRhYmxlIGFwcGx5IDogc3RyaW5nIGxpc3Qgb3B0aW9uO1xuICBtdXRhYmxlIGRvbnRfYXBwbHkgOiBzdHJpbmcgbGlzdCBvcHRpb247XG59XG5cbmxldCBtYXNrID0geyBhcHBseSA9IE5vbmU7IGRvbnRfYXBwbHkgPSBOb25lIH1cblxubGV0IGhhbmRsZV9hcHBseSBzID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5hcHBseSB0aGVuXG4gICAgcmFpc2UgKEFyZy5CYWQgXCItYXBwbHkgY2FsbGVkIHRvbyBtYW55IHRpbWVzXCIpO1xuICAoKiBUaGlzIGlzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0J3MgbW9yZSBpbnR1aXRpdmUgKilcbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgLWRvbnQtYXBwbHlcIik7XG4gIG1hc2suYXBwbHkgPC0gU29tZSAocGFyc2VfYXBwbHlfbGlzdCBzKVxuXG5sZXQgaGFuZGxlX2RvbnRfYXBwbHkgcyA9XG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suZG9udF9hcHBseSB0aGVuXG4gICAgcmFpc2UgKEFyZy5CYWQgXCItYXBwbHkgY2FsbGVkIHRvbyBtYW55IHRpbWVzXCIpO1xuICBtYXNrLmRvbnRfYXBwbHkgPC0gU29tZSAocGFyc2VfYXBwbHlfbGlzdCBzKVxuXG5sZXQgaW50ZXJwcmV0X21hc2sgKCkgPVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmFwcGx5IHx8IE9wdGlvbi5pc19zb21lIG1hc2suZG9udF9hcHBseSB0aGVuXG4gICAgbGV0IHNlbGVjdGVkX3RyYW5zZm9ybV9uYW1lIGN0ID1cbiAgICAgIGxldCBpc19jYW5kaWRhdGUgPVxuICAgICAgICBtYXRjaCBtYXNrLmFwcGx5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIG5hbWVzIC0+IExpc3QuZXhpc3RzIG5hbWVzIH5mOihUcmFuc2Zvcm0uaGFzX25hbWUgY3QpXG4gICAgICBpblxuICAgICAgbGV0IGlzX3NlbGVjdGVkID1cbiAgICAgICAgbWF0Y2ggbWFzay5kb250X2FwcGx5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGlzX2NhbmRpZGF0ZVxuICAgICAgICB8IFNvbWUgbmFtZXMgLT5cbiAgICAgICAgICAgIGlzX2NhbmRpZGF0ZSAmJiBub3QgKExpc3QuZXhpc3RzIG5hbWVzIH5mOihUcmFuc2Zvcm0uaGFzX25hbWUgY3QpKVxuICAgICAgaW5cbiAgICAgIGlmIGlzX3NlbGVjdGVkIHRoZW4gU29tZSBjdC5uYW1lIGVsc2UgTm9uZVxuICAgIGluXG4gICAgYXBwbHlfbGlzdCA6PVxuICAgICAgU29tZSAoTGlzdC5maWx0ZXJfbWFwICFUcmFuc2Zvcm0uYWxsIH5mOnNlbGVjdGVkX3RyYW5zZm9ybV9uYW1lKVxuXG5sZXQgc2V0X2Nvb2tpZSBzID1cbiAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246Jz0nIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICByYWlzZSAoQXJnLkJhZCBcImludmFsaWQgY29va2llLCBtdXN0IGJlIG9mIHRoZSBmb3JtIFxcXCI8bmFtZT49PGV4cHI+XFxcIlwiKVxuICB8IFNvbWUgKG5hbWUsIHZhbHVlKSAtPlxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyB2YWx1ZSBpblxuICAgICAgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIDwtXG4gICAgICAgIHtcbiAgICAgICAgICBMZXhpbmcucG9zX2ZuYW1lID0gXCI8Y29tbWFuZC1saW5lPlwiO1xuICAgICAgICAgIHBvc19sbnVtID0gMTtcbiAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICBwb3NfY251bSA9IDA7XG4gICAgICAgIH07XG4gICAgICBsZXQgZXhwciA9IFBhcnNlLmV4cHJlc3Npb24gbGV4YnVmIGluXG4gICAgICBDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpIDo9IChuYW1lLCBleHByKSA6OiAhQ29va2llcy5naXZlbl90aHJvdWdoX2NsaVxuXG5sZXQgc2hhcmVkX2FyZ3MgPVxuICBbXG4gICAgKCBcIi1sb2MtZmlsZW5hbWVcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IGxvY19mbmFtZSA6PSBTb21lIHMpLFxuICAgICAgXCI8c3RyaW5nPiBGaWxlIG5hbWUgdG8gdXNlIGluIGxvY2F0aW9uc1wiICk7XG4gICAgKCBcIi1yZXNlcnZlLW5hbWVzcGFjZVwiLFxuICAgICAgQXJnLlN0cmluZyBOYW1lLlJlc2VydmVkX25hbWVzcGFjZXMucmVzZXJ2ZSxcbiAgICAgIFwiPHN0cmluZz4gTWFyayB0aGUgZ2l2ZW4gbmFtZXNwYWNlIGFzIHJlc2VydmVkXCIgKTtcbiAgICAoXCItbm8tY2hlY2tcIiwgQXJnLkNsZWFyIHBlcmZvcm1fY2hlY2tzLCBcIiBEaXNhYmxlIGNoZWNrcyAodW5zYWZlKVwiKTtcbiAgICAoXCItY2hlY2tcIiwgQXJnLlNldCBwZXJmb3JtX2NoZWNrcywgXCIgRW5hYmxlIGNoZWNrc1wiKTtcbiAgICAoIFwiLW5vLWNoZWNrLW9uLWV4dGVuc2lvbnNcIixcbiAgICAgIEFyZy5DbGVhciBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zLFxuICAgICAgXCIgRGlzYWJsZSBjaGVja3Mgb24gZXh0ZW5zaW9uIHBvaW50IG9ubHlcIiApO1xuICAgICggXCItY2hlY2stb24tZXh0ZW5zaW9uc1wiLFxuICAgICAgQXJnLlNldCBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zLFxuICAgICAgXCIgRW5hYmxlIGNoZWNrcyBvbiBleHRlbnNpb24gcG9pbnQgb25seVwiICk7XG4gICAgKCBcIi1uby1sb2NhdGlvbnMtY2hlY2tcIixcbiAgICAgIEFyZy5DbGVhciBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayxcbiAgICAgIFwiIERpc2FibGUgbG9jYXRpb25zIGNoZWNrIG9ubHlcIiApO1xuICAgICggXCItbG9jYXRpb25zLWNoZWNrXCIsXG4gICAgICBBcmcuU2V0IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrLFxuICAgICAgXCIgRW5hYmxlIGxvY2F0aW9ucyBjaGVjayBvbmx5XCIgKTtcbiAgICAoIFwiLWFwcGx5XCIsXG4gICAgICBBcmcuU3RyaW5nIGhhbmRsZV9hcHBseSxcbiAgICAgIFwiPG5hbWVzPiBBcHBseSB0aGVzZSB0cmFuc2Zvcm1hdGlvbnMgaW4gb3JkZXIgKGNvbW1hLXNlcGFyYXRlZCBsaXN0KVwiICk7XG4gICAgKCBcIi1kb250LWFwcGx5XCIsXG4gICAgICBBcmcuU3RyaW5nIGhhbmRsZV9kb250X2FwcGx5LFxuICAgICAgXCI8bmFtZXM+IEV4Y2x1ZGUgdGhlc2UgdHJhbnNmb3JtYXRpb25zXCIgKTtcbiAgICAoIFwiLW5vLW1lcmdlXCIsXG4gICAgICBBcmcuU2V0IG5vX21lcmdlLFxuICAgICAgXCIgRG8gbm90IG1lcmdlIGNvbnRleHQgZnJlZSB0cmFuc2Zvcm1hdGlvbnMgKGJldHRlciBmb3IgZGVidWdnaW5nIFxcXG4gICAgICAgcmV3cml0ZXJzKS4gQXMgYSByZXN1bHQsIHRoZSBjb250ZXh0LWZyZWUgdHJhbnNmb3JtYXRpb25zIGFyZSBub3QgYWxsIFxcXG4gICAgICAgYXBwbGllZCBiZWZvcmUgYWxsIGltcGwgYW5kIGludGYuXCIgKTtcbiAgICAoXCItY29va2llXCIsIEFyZy5TdHJpbmcgc2V0X2Nvb2tpZSwgXCJOQU1FPUVYUFIgU2V0IHRoZSBjb29raWUgTkFNRSB0byBFWFBSXCIpO1xuICAgIChcIi0tY29va2llXCIsIEFyZy5TdHJpbmcgc2V0X2Nvb2tpZSwgXCIgU2FtZSBhcyAtY29va2llXCIpO1xuICBdXG5cbmxldCAoKSA9XG4gIExpc3QuaXRlciBzaGFyZWRfYXJncyB+ZjooZnVuIChrZXksIHNwZWMsIGRvYykgLT4gYWRkX2FyZyBrZXkgc3BlYyB+ZG9jKVxuXG5sZXQgYXNfcHAgKCkgPVxuICBzZXRfb3V0cHV0X21vZGUgRHVtcF9hc3Q7XG4gIGVtYmVkX2Vycm9ycyA6PSB0cnVlXG5cbmxldCBzdGFuZGFsb25lX2FyZ3MgPVxuICBbXG4gICAgKCBcIi1hcy1wcHhcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gcmFpc2UgKEFyZy5CYWQgXCItYXMtcHB4IG11c3QgYmUgdGhlIGZpcnN0IGFyZ3VtZW50XCIpKSxcbiAgICAgIFwiIFJ1biBhcyBhIC1wcHggcmV3cml0ZXIgKG11c3QgYmUgdGhlIGZpcnN0IGFyZ3VtZW50KVwiICk7XG4gICAgKCBcIi0tYXMtcHB4XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHJhaXNlIChBcmcuQmFkIFwiLS1hcy1wcHggbXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnRcIikpLFxuICAgICAgXCIgU2FtZSBhcyAtYXMtcHB4XCIgKTtcbiAgICAoXCItYXMtcHBcIiwgQXJnLlVuaXQgYXNfcHAsIFwiIFNob3J0aGFuZCBmb3I6IC1kdW1wLWFzdCAtZW1iZWQtZXJyb3JzXCIpO1xuICAgIChcIi0tYXMtcHBcIiwgQXJnLlVuaXQgYXNfcHAsIFwiIFNhbWUgYXMgLWFzLXBwXCIpO1xuICAgICggXCItb1wiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gb3V0cHV0IDo9IFNvbWUgcyksXG4gICAgICBcIjxmaWxlbmFtZT4gT3V0cHV0IGZpbGUgKHVzZSAnLScgZm9yIHN0ZG91dClcIiApO1xuICAgIChcIi1cIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfaW5wdXQgXCItXCIpLCBcIiBSZWFkIGlucHV0IGZyb20gc3RkaW5cIik7XG4gICAgKCBcIi1kdW1wLWFzdFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHVtcF9hc3QpLFxuICAgICAgXCIgRHVtcCB0aGUgbWFyc2hhbGVkIGFzdCB0byB0aGUgb3V0cHV0IGZpbGUgaW5zdGVhZCBvZiBwcmV0dHktcHJpbnRpbmcgaXRcIlxuICAgICk7XG4gICAgKCBcIi0tZHVtcC1hc3RcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIER1bXBfYXN0KSxcbiAgICAgIFwiIFNhbWUgYXMgLWR1bXAtYXN0XCIgKTtcbiAgICAoIFwiLWRwYXJzZXRyZWVcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIERwYXJzZXRyZWUpLFxuICAgICAgXCIgUHJpbnQgdGhlIHBhcnNldHJlZSAoc2FtZSBhcyBvY2FtbGMgLWRwYXJzZXRyZWUpXCIgKTtcbiAgICAoIFwiLWVtYmVkLWVycm9yc1wiLFxuICAgICAgQXJnLlNldCBlbWJlZF9lcnJvcnMsXG4gICAgICBcIiBFbWJlZCBlcnJvcnMgaW4gdGhlIG91dHB1dCBBU1QgKGRlZmF1bHQ6IHRydWUgd2hlbiAtYXMtcHAsIGZhbHNlIFxcXG4gICAgICAgb3RoZXJ3aXNlKVwiICk7XG4gICAgKCBcIi1udWxsXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBOdWxsKSxcbiAgICAgIFwiIFByb2R1Y2Ugbm8gb3V0cHV0LCBleGNlcHQgZm9yIGVycm9yc1wiICk7XG4gICAgKCBcIi1pbXBsXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEltcGwpLFxuICAgICAgXCI8ZmlsZT4gVHJlYXQgdGhlIGlucHV0IGFzIGEgLm1sIGZpbGVcIiApO1xuICAgIChcIi0taW1wbFwiLCBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEltcGwpLCBcIjxmaWxlPiBTYW1lIGFzIC1pbXBsXCIpO1xuICAgICggXCItaW50ZlwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbnRmKSxcbiAgICAgIFwiPGZpbGU+IFRyZWF0IHRoZSBpbnB1dCBhcyBhIC5tbGkgZmlsZVwiICk7XG4gICAgKFwiLS1pbnRmXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW50ZiksIFwiPGZpbGU+IFNhbWUgYXMgLWludGZcIik7XG4gICAgKCBcIi1kZWJ1Zy1hdHRyaWJ1dGUtZHJvcFwiLFxuICAgICAgQXJnLlNldCBkZWJ1Z19hdHRyaWJ1dGVfZHJvcCxcbiAgICAgIFwiIERlYnVnIGF0dHJpYnV0ZSBkcm9wcGluZ1wiICk7XG4gICAgKCBcIi1wcmludC10cmFuc2Zvcm1hdGlvbnNcIixcbiAgICAgIEFyZy5TZXQgcmVxdWVzdF9wcmludF90cmFuc2Zvcm1hdGlvbnMsXG4gICAgICBcIiBQcmludCBsaW5rZWQtaW4gY29kZSB0cmFuc2Zvcm1hdGlvbnMsIGluIHRoZSBvcmRlciB0aGV5IGFyZSBhcHBsaWVkXCIgKTtcbiAgICAoIFwiLXByaW50LXBhc3Nlc1wiLFxuICAgICAgQXJnLlNldCByZXF1ZXN0X3ByaW50X3Bhc3NlcyxcbiAgICAgIFwiIFByaW50IHRoZSBhY3R1YWwgcGFzc2VzIG92ZXIgdGhlIHdob2xlIEFTVCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgXFxcbiAgICAgICBhcHBsaWVkXCIgKTtcbiAgICAoIFwiLWl0ZS1jaGVja1wiLFxuICAgICAgQXJnLlVuaXRcbiAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICBcIldhcm5pbmc6IHRoZSAtaXRlLWNoZWNrIGZsYWcgaXMgZGVwcmVjYXRlZCBhbmQgaGFzIG5vIGVmZmVjdC5cXG4lIVwiO1xuICAgICAgICAgIEV4dHJhX3dhcm5pbmdzLmNhcmVfYWJvdXRfaXRlX2JyYW5jaCA6PSB0cnVlKSxcbiAgICAgIFwiIChubyBlZmZlY3QgLS0ga2VwdCBmb3IgY29tcGF0aWJpbGl0eSlcIiApO1xuICAgICggXCItcHBcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IHByZXByb2Nlc3NvciA6PSBTb21lIHMpLFxuICAgICAgXCI8Y29tbWFuZD4gIFBpcGUgc291cmNlcyB0aHJvdWdoIHByZXByb2Nlc3NvciA8Y29tbWFuZD4gKGluY29tcGF0aWJsZSBcXFxuICAgICAgIHdpdGggLWFzLXBweClcIiApO1xuICAgICggXCItcmVjb25jaWxlXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSAoUmVjb25jaWxlIFVzaW5nX2xpbmVfZGlyZWN0aXZlcykpLFxuICAgICAgXCIgKFdJUCkgUHJldHR5IHByaW50IHRoZSBvdXRwdXQgdXNpbmcgYSBtaXggb2YgdGhlIGlucHV0IHNvdXJjZSBhbmQgdGhlIFxcXG4gICAgICAgZ2VuZXJhdGVkIGNvZGVcIiApO1xuICAgICggXCItcmVjb25jaWxlLXdpdGgtY29tbWVudHNcIixcbiAgICAgIEFyZy5Vbml0XG4gICAgICAgIChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIChSZWNvbmNpbGUgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzKSksXG4gICAgICBcIiAoV0lQKSBzYW1lIGFzIC1yZWNvbmNpbGUgYnV0IHVzZXMgY29tbWVudHMgdG8gZW5jbG9zZSB0aGUgZ2VuZXJhdGVkIFxcXG4gICAgICAgY29kZVwiICk7XG4gICAgKFwiLW5vLWNvbG9yXCIsIEFyZy5DbGVhciB1c2VfY29sb3IsIFwiIERvbid0IHVzZSBjb2xvcnMgd2hlbiBwcmludGluZyBlcnJvcnNcIik7XG4gICAgKCBcIi1kaWZmLWNtZFwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gZGlmZl9jb21tYW5kIDo9IFNvbWUgcyksXG4gICAgICBcIiBEaWZmIGNvbW1hbmQgd2hlbiB1c2luZyBjb2RlIGV4cGVjdGF0aW9ucyAodXNlIC0gdG8gZGlzYWJsZSBkaWZmaW5nKVwiICk7XG4gICAgKCBcIi1wcmV0dHlcIixcbiAgICAgIEFyZy5TZXQgcHJldHR5LFxuICAgICAgXCIgSW5zdHJ1Y3QgY29kZSBnZW5lcmF0b3JzIHRvIGltcHJvdmUgdGhlIHByZXR0aW5lc3Mgb2YgdGhlIGdlbmVyYXRlZCBcXFxuICAgICAgIGNvZGVcIiApO1xuICAgIChcIi1zdHlsZXJcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT4gc3R5bGVyIDo9IFNvbWUgcyksIFwiIENvZGUgc3R5bGVyXCIpO1xuICAgICggXCItb3V0cHV0LW1ldGFkYXRhXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBvdXRwdXRfbWV0YWRhdGFfZmlsZW5hbWUgOj0gU29tZSBzKSxcbiAgICAgIFwiRklMRSBXaGVyZSB0byBzdG9yZSB0aGUgb3V0cHV0IG1ldGFkYXRhXCIgKTtcbiAgICAoIFwiLWNvcnJlY3RlZC1zdWZmaXhcIixcbiAgICAgIEFyZy5TZXRfc3RyaW5nIGNvcnJlY3RlZF9zdWZmaXgsXG4gICAgICBcIlNVRkZJWCBTdWZmaXggdG8gYXBwZW5kIHRvIGNvcnJlY3RlZCBmaWxlc1wiICk7XG4gIF1cblxubGV0IGdldF9hcmdzID8oc3RhbmRhbG9uZV9hcmdzID0gc3RhbmRhbG9uZV9hcmdzKSAoKSA9XG4gIHN0YW5kYWxvbmVfYXJncyBAIExpc3QucmV2ICFhcmdzXG5cbmxldCBzdGFuZGFsb25lX21haW4gKCkgPVxuICBsZXQgdXNhZ2UgPSBQcmludGYuc3ByaW50ZiBcIiVzIFtleHRyYV9hcmdzXSBbPGZpbGVzPl1cIiBleGVfbmFtZSBpblxuICBsZXQgYXJncyA9IGdldF9hcmdzICgpIGluXG4gIEFyZy5wYXJzZSAoQXJnLmFsaWduIGFyZ3MpIHNldF9pbnB1dCB1c2FnZTtcbiAgaW50ZXJwcmV0X21hc2sgKCk7XG4gIGlmICFyZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyB0aGVuIChcbiAgICBwcmludF90cmFuc2Zvcm1hdGlvbnMgKCk7XG4gICAgU3RkbGliLmV4aXQgMCk7XG4gIGlmICFyZXF1ZXN0X3ByaW50X3Bhc3NlcyB0aGVuIChcbiAgICBwcmludF9wYXNzZXMgKCk7XG4gICAgU3RkbGliLmV4aXQgMCk7XG4gIG1hdGNoICFpbnB1dCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCIlczogbm8gaW5wdXQgZmlsZSBnaXZlblxcbiUhXCIgZXhlX25hbWU7XG4gICAgICBTdGRsaWIuZXhpdCAyXG4gIHwgU29tZSBmbiAtPlxuICAgICAgbGV0IGtpbmQgPVxuICAgICAgICBtYXRjaCAha2luZCB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+IGtcbiAgICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICAgIG1hdGNoIEtpbmQub2ZfZmlsZW5hbWUgZm4gd2l0aFxuICAgICAgICAgICAgfCBTb21lIGsgLT4ga1xuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgICAgICAgIFwiJXM6IGRvbid0IGtub3cgd2hhdCB0byBkbyB3aXRoICclcycsIHVzZSAtaW1wbCBvciAtaW50Zi5cXG5cIlxuICAgICAgICAgICAgICAgICAgZXhlX25hbWUgZm47XG4gICAgICAgICAgICAgICAgU3RkbGliLmV4aXQgMilcbiAgICAgIGluXG4gICAgICBsZXQgaW5wdXRfbmFtZSwgcmVsb2NhdGUgPVxuICAgICAgICBtYXRjaCAhbG9jX2ZuYW1lIHdpdGggTm9uZSAtPiAoZm4sIGZhbHNlKSB8IFNvbWUgZm4gLT4gKGZuLCB0cnVlKVxuICAgICAgaW5cbiAgICAgIHByb2Nlc3NfZmlsZSBraW5kIGZuIH5pbnB1dF9uYW1lIH5yZWxvY2F0ZSB+b3V0cHV0X21vZGU6IW91dHB1dF9tb2RlXG4gICAgICAgIH5vdXRwdXQ6IW91dHB1dCB+ZW1iZWRfZXJyb3JzOiFlbWJlZF9lcnJvcnNcblxubGV0IHJld3JpdGVfYmluYXJ5X2FzdF9maWxlIGlucHV0X2ZuIG91dHB1dF9mbiA9XG4gIGxldCBpbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QgPSBsb2FkX2lucHV0X3J1bl9hc19wcHggaW5wdXRfZm4gaW5cbiAgbGV0IGFzdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgYXN0ID0gZXh0cmFjdF9jb29raWVzIGFzdCBpblxuICAgICAgbGV0IHRvb2xfbmFtZSA9IEFzdGxpYi5Bc3RfbWV0YWRhdGEudG9vbF9uYW1lICgpIGluXG4gICAgICBsZXQgaG9vayA9IENvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcCBpblxuICAgICAgbGV0IGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gQ29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcCBpblxuICAgICAgcHJvY2Vzc19hc3QgYXN0IH5pbnB1dF9uYW1lIH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgIH5lbWJlZF9lcnJvcnM6dHJ1ZVxuICAgIHdpdGggZXhuIC0+IGV4bl90b19leHRlbnNpb24gZXhuIH5raW5kOihJbnRmX29yX2ltcGwua2luZCBhc3QpXG4gIGluXG4gIHdpdGhfb3V0cHV0IChTb21lIG91dHB1dF9mbikgfmJpbmFyeTp0cnVlIH5mOihmdW4gb2MgLT5cbiAgICAgIEFzdF9pby53cml0ZSBvYyB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9IH5hZGRfcHB4X2NvbnRleHQ6dHJ1ZSlcblxubGV0IHBhcnNlX2lucHV0IHBhc3NlZF9pbl9hcmdzIH52YWxpZF9hcmdzIH5pbmNvcnJlY3RfaW5wdXRfbXNnID1cbiAgdHJ5XG4gICAgQXJnLnBhcnNlX2FyZ3YgcGFzc2VkX2luX2FyZ3MgKEFyZy5hbGlnbiB2YWxpZF9hcmdzKVxuICAgICAgKGZ1biBfIC0+IHJhaXNlIChBcmcuQmFkIFwiYW5vbnltb3VzIGFyZ3VtZW50cyBub3QgYWNjZXB0ZWRcIikpXG4gICAgICBpbmNvcnJlY3RfaW5wdXRfbXNnXG4gIHdpdGhcbiAgfCBBcmcuQmFkIG1zZyAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZztcbiAgICAgIFN0ZGxpYi5leGl0IDJcbiAgfCBBcmcuSGVscCBtc2cgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXNcIiBtc2c7XG4gICAgICBTdGRsaWIuZXhpdCAwXG5cbmxldCBydW5fYXNfcHB4X3Jld3JpdGVyX21haW4gfnN0YW5kYWxvbmVfYXJncyB+dXNhZ2UgaW5wdXQgPVxuICBsZXQgdmFsaWRfYXJncyA9IGdldF9hcmdzIH5zdGFuZGFsb25lX2FyZ3MgKCkgaW5cbiAgbWF0Y2ggTGlzdC5yZXYgQEAgQXJyYXkudG9fbGlzdCBAQCBpbnB1dCB3aXRoXG4gIHwgb3V0cHV0X2ZuIDo6IGlucHV0X2ZuIDo6IGZsYWdzX2FuZF9wcm9nX25hbWVcbiAgICB3aGVuIExpc3QubGVuZ3RoIGZsYWdzX2FuZF9wcm9nX25hbWUgPiAwIC0+XG4gICAgICBsZXQgcHJvZ19uYW1lX2FuZF9mbGFncyA9IExpc3QucmV2IGZsYWdzX2FuZF9wcm9nX25hbWUgfD4gQXJyYXkub2ZfbGlzdCBpblxuICAgICAgcGFyc2VfaW5wdXQgcHJvZ19uYW1lX2FuZF9mbGFncyB+dmFsaWRfYXJncyB+aW5jb3JyZWN0X2lucHV0X21zZzp1c2FnZTtcbiAgICAgIGludGVycHJldF9tYXNrICgpO1xuICAgICAgcmV3cml0ZV9iaW5hcnlfYXN0X2ZpbGUgaW5wdXRfZm4gb3V0cHV0X2ZuO1xuICAgICAgU3RkbGliLmV4aXQgMFxuICB8IFsgaGVscDsgXyBdIHdoZW4gU3RyaW5nLmVxdWFsIGhlbHAgXCItaGVscFwiIHx8IFN0cmluZy5lcXVhbCBoZWxwIFwiLS1oZWxwXCIgLT5cbiAgICAgIHBhcnNlX2lucHV0IGlucHV0IH52YWxpZF9hcmdzIH5pbmNvcnJlY3RfaW5wdXRfbXNnOnVzYWdlO1xuICAgICAgYXNzZXJ0IGZhbHNlXG4gIHwgXyAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCJVc2FnZTogJXNcXG4lIVwiIHVzYWdlO1xuICAgICAgU3RkbGliLmV4aXQgMlxuXG5sZXQgc3RhbmRhbG9uZV9ydW5fYXNfcHB4X3Jld3JpdGVyICgpID1cbiAgbGV0IG4gPSBBcnJheS5sZW5ndGggU3RkbGliLlN5cy5hcmd2IGluXG4gIGxldCB1c2FnZSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCIlcyAtYXMtcHB4IFtleHRyYV9hcmdzXSA8aW5maWxlPiA8b3V0ZmlsZT5cIiBleGVfbmFtZVxuICBpblxuICBsZXQgYXJndiA9IEFycmF5Lm1ha2UgKG4gLSAxKSBcIlwiIGluXG4gIGFyZ3YuKDApIDwtIFN0ZGxpYi5TeXMuYXJndi4oMCk7XG4gIGZvciBpID0gMSB0byBuIC0gMiBkb1xuICAgIGFyZ3YuKGkpIDwtIFN0ZGxpYi5TeXMuYXJndi4oaSArIDEpXG4gIGRvbmU7XG4gIGxldCBzdGFuZGFsb25lX2FyZ3MgPVxuICAgIExpc3QubWFwIHN0YW5kYWxvbmVfYXJncyB+ZjooZnVuIChhcmcsIHNwZWMsIF9kb2MpIC0+XG4gICAgICAgIChhcmcsIHNwZWMsIFwiIFVudXNlZCB3aXRoIC1hcy1wcHhcIikpXG4gIGluXG4gIHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzIH51c2FnZSBhcmd2XG5cbmxldCBzdGFuZGFsb25lICgpID1cbiAgQXN0bGliLmluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaW5nX2Vudl92YXJzICgpO1xuICB0cnlcbiAgICBpZlxuICAgICAgQXJyYXkubGVuZ3RoIFN0ZGxpYi5TeXMuYXJndiA+PSAyXG4gICAgICAmJlxuICAgICAgbWF0Y2ggU3RkbGliLlN5cy5hcmd2LigxKSB3aXRoXG4gICAgICB8IFwiLWFzLXBweFwiIHwgXCItLWFzLXBweFwiIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIHRoZW4gc3RhbmRhbG9uZV9ydW5fYXNfcHB4X3Jld3JpdGVyICgpXG4gICAgZWxzZSBzdGFuZGFsb25lX21haW4gKCk7XG4gICAgU3RkbGliLmV4aXQgMFxuICB3aXRoIGV4biAtPlxuICAgIExvY2F0aW9uLnJlcG9ydF9leGNlcHRpb24gU3RkbGliLkZvcm1hdC5lcnJfZm9ybWF0dGVyIGV4bjtcbiAgICBTdGRsaWIuZXhpdCAxXG5cbmxldCBydW5fYXNfcHB4X3Jld3JpdGVyICgpID1cbiAgbGV0IHVzYWdlID0gUHJpbnRmLnNwcmludGYgXCIlcyBbZXh0cmFfYXJnc10gPGluZmlsZT4gPG91dGZpbGU+XCIgZXhlX25hbWUgaW5cbiAgbGV0IGlucHV0ID0gU3RkbGliLlN5cy5hcmd2IGluXG4gIHRyeSBydW5fYXNfcHB4X3Jld3JpdGVyX21haW4gfnN0YW5kYWxvbmVfYXJnczpbXSB+dXNhZ2UgaW5wdXRcbiAgd2l0aCBleG4gLT5cbiAgICBMb2NhdGlvbi5yZXBvcnRfZXhjZXB0aW9uIFN0ZGxpYi5Gb3JtYXQuZXJyX2Zvcm1hdHRlciBleG47XG4gICAgU3RkbGliLmV4aXQgMVxuXG5sZXQgcHJldHR5ICgpID0gIXByZXR0eVxuXG5sZXQgZW5hYmxlX2NoZWNrcyAoKSA9XG4gICgqIFdlIGRvIG5vdCBlbmFibGUgdGhlIGxvY2F0aW9ucyBjaGVjayBoZXJlLCB3ZSBjdXJyZW50bHkgcmVxdWlyZSB0aGF0IG9uZVxuICAgICB0byBiZSBzcGVjaWZpY2FsbHkgZW5hYmxlZC4gKilcbiAgcGVyZm9ybV9jaGVja3MgOj0gdHJ1ZTtcbiAgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyA6PSB0cnVlXG5cbmxldCBlbmFibGVfbG9jYXRpb25fY2hlY2sgKCkgPSBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayA6PSB0cnVlXG5sZXQgZGlzYWJsZV9sb2NhdGlvbl9jaGVjayAoKSA9IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIDo9IGZhbHNlXG5sZXQgbWFwX3N0cnVjdHVyZSBzdCA9IG1hcF9zdHJ1Y3R1cmUgc3RcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcblxubGV0IHVuZGVyc2NvcmVfYmluZGluZyBleHAgPVxuICBsZXQgbG9jID0gZXhwLnBleHBfbG9jIGluXG4gIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OihwcGF0X2FueSB+bG9jKSB+ZXhwcjpleHBcblxubGV0IHZhcnNfb2YgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtMb25naWRlbnQudCBMb2NhdGVkLnQgbGlzdF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgcGF0dGVybiBwYXR0IGFjYyA9XG4gICAgICBtYXRjaCBwYXR0LnBwYXRfZGVzYyB3aXRoXG4gICAgICB8IFBwYXRfdmFyIHYgLT4gTG9jYXRlZC5tYXAgKGZ1biB2YXIgLT4gTG9uZ2lkZW50LkxpZGVudCB2YXIpIHYgOjogYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjcGF0dGVybiBwYXR0IGFjY1xuICBlbmRcblxuKCogRm9yIGV2ZXJ5IFtsZXQgeCA9IC4uLl0gc3RydWN0dXJlIGl0ZW0sIGFkZCBhIFtsZXQgXyA9IHhdICopXG5sZXQgYWRkX2R1bW15X3VzZXJfZm9yX3ZhbHVlcyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmUgc3QgPVxuICAgICAgbGV0IHJlYyBsb29wIHN0IGFjYyA9XG4gICAgICAgIG1hdGNoIHN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgICAgICAgfCAoeyBwc3RyX2Rlc2MgPSBQc3RyX3ZhbHVlIChfLCB2YnMpOyBwc3RyX2xvYyA9IGxvYyB9IGFzIGl0ZW0pIDo6IHJlc3RcbiAgICAgICAgICAtPlxuICAgICAgICAgICAgbGV0IHZhcnMgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdCB2YnMgfmluaXQ6W10gfmY6KGZ1biBhY2MgdmIgLT5cbiAgICAgICAgICAgICAgICAgIHZhcnNfb2YjcGF0dGVybiB2Yi5wdmJfcGF0IGFjYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgaWduID1cbiAgICAgICAgICAgICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgICAgICAgKExpc3QucmV2X21hcCB2YXJzIH5mOihmdW4gdiAtPlxuICAgICAgICAgICAgICAgICAgICAgdW5kZXJzY29yZV9iaW5kaW5nIChwZXhwX2lkZW50IH5sb2M6di5sb2MgdikpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxvb3AgcmVzdCAoaWduIEAgKGl0ZW0gOjogYWNjKSlcbiAgICAgICAgfCBpdGVtIDo6IHJlc3QgLT4gbG9vcCByZXN0IChpdGVtIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wIChzdXBlciNzdHJ1Y3R1cmUgc3QpIFtdXG4gIGVuZFxuXG5sZXQgYmluZHNfbW9kdWxlX25hbWVzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbYm9vbF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgbWIgYWNjID1cbiAgICAgIG1hdGNoIG1iLnBtYl9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgIHwgTm9uZSAtPiBzdXBlciNtb2R1bGVfYmluZGluZyBtYiBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIG1kIGFjYyA9XG4gICAgICBtYXRjaCBtZC5wbWRfbmFtZS50eHQgd2l0aFxuICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICB8IE5vbmUgLT4gc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIG1kIGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfc3Vic3RpdHV0aW9uIG1zIF8gPVxuICAgICAgbWF0Y2ggbXMucG1zX25hbWUudHh0IHdpdGggKF8gOiBzdHJpbmcpIC0+IHRydWVcblxuICAgIG1ldGhvZCEgZnVuY3Rvcl9wYXJhbWV0ZXIgZnAgYWNjID1cbiAgICAgIG1hdGNoIGZwIHdpdGhcbiAgICAgIHwgVW5pdCAtPiBhY2NcbiAgICAgIHwgTmFtZWQgKG5hbWUsIF8pIC0+IChcbiAgICAgICAgICBtYXRjaCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2Z1bmN0b3JfcGFyYW1ldGVyIGZwIGFjYylcblxuICAgIG1ldGhvZCEgcGF0dGVybiBwYXQgYWNjID1cbiAgICAgIG1hdGNoIHBhdC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgfCBQcGF0X3VucGFjayBuYW1lIC0+IChcbiAgICAgICAgICBtYXRjaCBuYW1lLnR4dCB3aXRoIFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWUgfCBOb25lIC0+IGFjYylcbiAgICAgIHwgXyAtPiBzdXBlciNwYXR0ZXJuIHBhdCBhY2NcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiBleHByIGFjYyA9XG4gICAgICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfbGV0bW9kdWxlIChuYW1lLCBfLCBfKSAtPiAoXG4gICAgICAgICAgbWF0Y2ggbmFtZS50eHQgd2l0aFxuICAgICAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGV4cHIgYWNjKVxuICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb24gZXhwciBhY2NcbiAgZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBBc3RfYnVpbGRlci5EZWZhdWx0XG5cbigqIFtkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlXSAtLSBJZiB0cnVlLCBnZW5lcmF0ZWQgY29kZVxuICAgY29udGFpbnMgY29tcGlsZXIgYXR0cmlidXRlIHRvIGRpc2FibGUgdW51c2VkIHdhcm5pbmdzLCBpbnN0ZWFkIG9mXG4gICBpbnNlcnRpbmcgW2xldCBfID0gLi4uIF0uICopXG5sZXQgZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA9IHJlZiBmYWxzZVxubGV0IGtlZXBfdzMyX2ltcGwgPSByZWYgZmFsc2VcbmxldCBrZWVwX3czMl9pbnRmID0gcmVmIGZhbHNlXG5cbmxldCAoKSA9XG4gIGxldCBrZWVwX3czMl9zcGVjID1cbiAgICBTdGRsaWIuQXJnLlN5bWJvbFxuICAgICAgKCBbIFwiaW1wbFwiOyBcImludGZcIjsgXCJib3RoXCIgXSxcbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBcImltcGxcIiAtPiBrZWVwX3czMl9pbXBsIDo9IHRydWVcbiAgICAgICAgfCBcImludGZcIiAtPiBrZWVwX3czMl9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBcImJvdGhcIiAtPlxuICAgICAgICAgICAga2VlcF93MzJfaW1wbCA6PSB0cnVlO1xuICAgICAgICAgICAga2VlcF93MzJfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICBpblxuICBsZXQgY29udl93MzJfc3BlYyA9XG4gICAgU3RkbGliLkFyZy5TeW1ib2xcbiAgICAgICggWyBcImNvZGVcIjsgXCJhdHRyaWJ1dGVcIiBdLFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFwiY29kZVwiIC0+IGRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgOj0gZmFsc2VcbiAgICAgICAgfCBcImF0dHJpYnV0ZVwiIC0+IGRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgOj0gdHJ1ZVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgaW5cbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmcta2VlcC13MzJcIiBrZWVwX3czMl9zcGVjXG4gICAgfmRvYzpcIiBEbyBub3QgdHJ5IHRvIGRpc2FibGUgd2FybmluZyAzMiBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCI7XG4gIERyaXZlci5hZGRfYXJnIFwiLWRlcml2aW5nLWRpc2FibGUtdzMyLW1ldGhvZFwiIGNvbnZfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIEhvdyB0byBkaXNhYmxlIHdhcm5pbmcgMzIgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZVwiO1xuICBEcml2ZXIuYWRkX2FyZyBcIi10eXBlLWNvbnYta2VlcC13MzJcIiBrZWVwX3czMl9zcGVjXG4gICAgfmRvYzpcIiBEZXByZWNhdGVkLCB1c2UgLWRlcml2aW5nLWtlZXAtdzMyXCI7XG4gIERyaXZlci5hZGRfYXJnIFwiLXR5cGUtY29udi13MzJcIiBjb252X3czMl9zcGVjXG4gICAgfmRvYzpcIiBEZXByZWNhdGVkLCB1c2UgLWRlcml2aW5nLWRpc2FibGUtdzMyLW1ldGhvZFwiXG5cbmxldCBrZWVwX3czMl9pbXBsICgpID0gIWtlZXBfdzMyX2ltcGwgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGtlZXBfdzMyX2ludGYgKCkgPSAha2VlcF93MzJfaW50ZiB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93NjBfaW1wbCA9IHJlZiBmYWxzZVxubGV0IGtlZXBfdzYwX2ludGYgPSByZWYgZmFsc2VcblxubGV0ICgpID1cbiAgbGV0IGtlZXBfdzYwX3NwZWMgPVxuICAgIFN0ZGxpYi5BcmcuU3ltYm9sXG4gICAgICAoIFsgXCJpbXBsXCI7IFwiaW50ZlwiOyBcImJvdGhcIiBdLFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFwiaW1wbFwiIC0+IGtlZXBfdzYwX2ltcGwgOj0gdHJ1ZVxuICAgICAgICB8IFwiaW50ZlwiIC0+IGtlZXBfdzYwX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IFwiYm90aFwiIC0+XG4gICAgICAgICAgICBrZWVwX3c2MF9pbXBsIDo9IHRydWU7XG4gICAgICAgICAgICBrZWVwX3c2MF9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gIGluXG4gIERyaXZlci5hZGRfYXJnIFwiLWRlcml2aW5nLWtlZXAtdzYwXCIga2VlcF93NjBfc3BlY1xuICAgIH5kb2M6XCIgRG8gbm90IHRyeSB0byBkaXNhYmxlIHdhcm5pbmcgNjAgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZVwiXG5cbmxldCBrZWVwX3c2MF9pbXBsICgpID0gIWtlZXBfdzYwX2ltcGwgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGtlZXBfdzYwX2ludGYgKCkgPSAha2VlcF93NjBfaW50ZiB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgPSByZWYgT3B0aW9ucy5kZWZhdWx0X2FsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzXG5cbmxldCAoKSA9XG4gIERyaXZlci5hZGRfYXJnIFwiLXVudXNlZC1jb2RlLXdhcm5pbmdzXCJcbiAgICAoQm9vbCAoKCA6PSApIGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzKSlcbiAgICB+ZG9jOlwiXyBBbGxvdyBwcHggZGVyaXZlcnMgdG8gZW5hYmxlIHVudXNlZCBjb2RlIHdhcm5pbmdzXCJcblxubGV0IGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzICgpID0gIWFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzXG5cbm1vZHVsZSBBcmdzID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIEFzdF9wYXR0ZXJuIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEFzdF9wYXR0ZXJuXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgQXN0X3BhdHRlcm4udClcblxuICB0eXBlICdhIHBhcmFtID0ge1xuICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgcGF0dGVybiA6IChleHByZXNzaW9uLCAnYSkgQXN0X3BhdHRlcm4uUGFja2VkLnQ7XG4gICAgZGVmYXVsdCA6ICdhO1xuICB9XG5cbiAgbGV0IGFyZyBuYW1lIHBhdHRlcm4gPVxuICAgIHtcbiAgICAgIG5hbWU7XG4gICAgICBkZWZhdWx0ID0gTm9uZTtcbiAgICAgIHBhdHRlcm4gPSBBc3RfcGF0dGVybi5QYWNrZWQuY3JlYXRlIHBhdHRlcm4gKGZ1biB4IC0+IFNvbWUgeCk7XG4gICAgfVxuXG4gIGxldCBmbGFnIG5hbWUgPVxuICAgIGxldCBwYXR0ZXJuID0gcGV4cF9pZGVudCAobGlkZW50IChzdHJpbmcgbmFtZSkpIGluXG4gICAgeyBuYW1lOyBkZWZhdWx0ID0gZmFsc2U7IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5QYWNrZWQuY3JlYXRlIHBhdHRlcm4gdHJ1ZSB9XG5cbiAgdHlwZSAoXywgXykgdCA9XG4gICAgfCBOaWwgOiAoJ20sICdtKSB0XG4gICAgfCBDb25zIDogKCdtMSwgJ2EgLT4gJ20yKSB0ICogJ2EgcGFyYW0gLT4gKCdtMSwgJ20yKSB0XG5cbiAgbGV0IGVtcHR5ID0gTmlsXG4gIGxldCAoICs+ICkgYSBiID0gQ29ucyAoYSwgYilcblxuICBsZXQgcmVjIG5hbWVzIDogdHlwZSBhIGIuIChhLCBiKSB0IC0+IHN0cmluZyBsaXN0ID0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBbXVxuICAgIHwgQ29ucyAodCwgcCkgLT4gcC5uYW1lIDo6IG5hbWVzIHRcblxuICBtb2R1bGUgSW5zdGFuY2UgPSBzdHJ1Y3RcbiAgICB0eXBlIChfLCBfKSBpbnN0YW5jZSA9XG4gICAgICB8IElfbmlsIDogKCdtLCAnbSkgaW5zdGFuY2VcbiAgICAgIHwgSV9jb25zIDogKCdtMSwgJ2EgLT4gJ20yKSBpbnN0YW5jZSAqICdhIC0+ICgnbTEsICdtMikgaW5zdGFuY2VcblxuICAgIGxldCByZWMgY3JlYXRlIDpcbiAgICAgICAgdHlwZSBhIGIuIChhLCBiKSB0IC0+IChzdHJpbmcgKiBleHByZXNzaW9uKSBsaXN0IC0+IChhLCBiKSBpbnN0YW5jZSA9XG4gICAgIGZ1biBzcGVjIGFyZ3MgLT5cbiAgICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgICAgfCBOaWwgLT4gSV9uaWxcbiAgICAgIHwgQ29ucyAodCwgcCkgLT5cbiAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvY19vcHQgcC5uYW1lIGFyZ3Mgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHAuZGVmYXVsdFxuICAgICAgICAgICAgfCBTb21lIGV4cHIgLT4gQXN0X3BhdHRlcm4uUGFja2VkLnBhcnNlIHAucGF0dGVybiBleHByLnBleHBfbG9jIGV4cHJcbiAgICAgICAgICBpblxuICAgICAgICAgIElfY29ucyAoY3JlYXRlIHQgYXJncywgdmFsdWUpXG5cbiAgICBsZXQgcmVjIGFwcGx5IDogdHlwZSBhIGIuIChhLCBiKSBpbnN0YW5jZSAtPiBhIC0+IGIgPVxuICAgICBmdW4gdCBmIC0+IG1hdGNoIHQgd2l0aCBJX25pbCAtPiBmIHwgSV9jb25zICh0LCB4KSAtPiBhcHBseSB0IGYgeFxuICBlbmRcblxuICBsZXQgYXBwbHkgdCBhcmdzIGYgPSBJbnN0YW5jZS5hcHBseSAoSW5zdGFuY2UuY3JlYXRlIHQgYXJncykgZlxuZW5kXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgR2VuZXJhdG9ycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBpZ25vcmUgKF8gOiB0KSA9ICgpXG5cbnR5cGUgcGFyc2VkX2FyZ3MgPVxuICB8IEFyZ3Mgb2YgKHN0cmluZyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgfCBVbmtub3duX3N5bnRheCBvZiBMb2NhdGlvbi50ICogc3RyaW5nXG5cbnR5cGUgJ2l0ZW0gZGVyaXZlZF9jb2RlID0geyBpdGVtcyA6ICdpdGVtIGxpc3Q7IHVudXNlZF9jb2RlX3dhcm5pbmdzIDogYm9vbCB9XG5cbm1vZHVsZSBHZW5lcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSBkZXJpdmVyID0gdFxuXG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBUIDoge1xuICAgICAgICBzcGVjIDogKCdjLCAnYSkgQXJncy50O1xuICAgICAgICBnZW4gOiBjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPiAnYiAtPiAnYztcbiAgICAgICAgYXJnX25hbWVzIDogU3RyaW5nLlNldC50O1xuICAgICAgICBkZXBzIDogZGVyaXZlciBsaXN0O1xuICAgICAgICB1bnVzZWRfY29kZV93YXJuaW5ncyA6IGJvb2w7XG4gICAgICB9XG4gICAgICAgIC0+ICgnYSwgJ2IpIHRcblxuICBsZXQgZGVwcyAoVCB0KSA9IHQuZGVwc1xuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIGxldCBtYWtlID9hdHRyaWJ1dGVzOihfID0gW10pID8oZGVwcyA9IFtdKSA/KHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UpXG4gICAgICAgIHNwZWMgZ2VuID1cbiAgICAgIGxldCBhcmdfbmFtZXMgPSBTdHJpbmcuU2V0Lm9mX2xpc3QgKEFyZ3MubmFtZXMgc3BlYykgaW5cbiAgICAgIFQgeyBzcGVjOyBnZW47IGFyZ19uYW1lczsgZGVwczsgdW51c2VkX2NvZGVfd2FybmluZ3MgfVxuXG4gICAgbGV0IG1ha2Vfbm9hcmcgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIGdlbiA9XG4gICAgICBtYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBBcmdzLmVtcHR5IGdlblxuICBlbmRcblxuICBsZXQgbWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3Mgc3BlYyBnZW4gPVxuICAgIFYyLm1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIHNwZWNcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLndpdGhfbG9jX2FuZF9wYXRoIGdlbilcblxuICBsZXQgbWFrZV9ub2FyZyA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgZ2VuID1cbiAgICBtYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBBcmdzLmVtcHR5IGdlblxuXG4gIGxldCBtZXJnZV9hY2NlcHRlZF9hcmdzIGwgPVxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIHwgVCB0IDo6IHJlc3QgLT4gbG9vcCAoU3RyaW5nLlNldC51bmlvbiBhY2MgdC5hcmdfbmFtZXMpIHJlc3RcbiAgICBpblxuICAgIGxvb3AgU3RyaW5nLlNldC5lbXB0eSBsXG5cbiAgbGV0IGNoZWNrX2FyZ3VtZW50cyBuYW1lIGdlbmVyYXRvcnMgKGFyZ3MgOiAoc3RyaW5nICogZXhwcmVzc2lvbikgbGlzdCkgPVxuICAgIGxldCBlbXB0eV9sYWJlbF9lcnJvciA9XG4gICAgICBMaXN0LmZpbHRlcl9tYXAgYXJncyB+ZjooZnVuIChsYWJlbCwgZSkgLT5cbiAgICAgICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgbGFiZWwgdGhlblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6IGdlbmVyYXRvciBhcmd1bWVudHMgbXVzdCBiZSBsYWJlbGxlZFwiKVxuICAgICAgICAgIGVsc2UgTm9uZSlcbiAgICBpblxuICAgIGxldCBkdXBsaWNhdGVfYXJndW1lbnRfZXJyb3IgPVxuICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAoTGlzdC5maW5kX2FfZHVwIGFyZ3MgfmNvbXBhcmU6KGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikpXG4gICAgICAgIH5mOihmdW4gKGxhYmVsLCBlKSAtPlxuICAgICAgICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzplLnBleHBfbG9jXG4gICAgICAgICAgICBcIlBweGxpYi5EZXJpdmluZzogYXJndW1lbnQgbGFiZWxsZWQgJyVzJyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlXCJcbiAgICAgICAgICAgIGxhYmVsKVxuICAgICAgfD4gT3B0aW9uLnRvX2xpc3RcbiAgICBpblxuICAgIGxldCBhY2NlcHRlZF9hcmdzID0gbWVyZ2VfYWNjZXB0ZWRfYXJncyBnZW5lcmF0b3JzIGluXG4gICAgbGV0IHVuYWNjZXB0ZWRfYXJndW1lbnQgPVxuICAgICAgTGlzdC5maWx0ZXJfbWFwIGFyZ3MgfmY6KGZ1biAobGFiZWwsIGUpIC0+XG4gICAgICAgICAgaWYgbm90IChTdHJpbmcuU2V0Lm1lbSBsYWJlbCBhY2NlcHRlZF9hcmdzKSB0aGVuXG4gICAgICAgICAgICBsZXQgc3BlbGxjaGVja19tc2cgPVxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFNwZWxsY2hlY2suc3BlbGxjaGVjayAoU3RyaW5nLlNldC5lbGVtZW50cyBhY2NlcHRlZF9hcmdzKSBsYWJlbFxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgIHwgU29tZSBzIC0+IFwiLlxcblwiIF4gc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzplLnBleHBfbG9jXG4gICAgICAgICAgICAgICAgIFwiUHB4bGliLkRlcml2aW5nOiBnZW5lcmF0b3IgJyVzJyBkb2Vzbid0IGFjY2VwdCBhcmd1bWVudCBcXFxuICAgICAgICAgICAgICAgICAgJyVzJyVzXCJcbiAgICAgICAgICAgICAgICAgbmFtZSBsYWJlbCBzcGVsbGNoZWNrX21zZylcbiAgICAgICAgICBlbHNlIE5vbmUpXG4gICAgaW5cbiAgICBsZXQgZXJyb3JzID1cbiAgICAgIGVtcHR5X2xhYmVsX2Vycm9yIEAgZHVwbGljYXRlX2FyZ3VtZW50X2Vycm9yIEAgdW5hY2NlcHRlZF9hcmd1bWVudFxuICAgIGluXG4gICAgaWYgTGlzdC5sZW5ndGggZXJyb3JzID0gMCB0aGVuIE9rICgpIGVsc2UgRXJyb3IgZXJyb3JzXG5cbiAgbGV0IGFwcGx5IChUIHQpIH5uYW1lOl8gfmN0eHQgeCBhcmdzID0gQXJncy5hcHBseSB0LnNwZWMgYXJncyAodC5nZW4gfmN0eHQgeClcblxuICBsZXQgYXBwbHlfYWxsIH5jdHh0IGVudHJ5IChuYW1lLCBnZW5lcmF0b3JzLCBhcmdzKSA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgY2hlY2tfYXJndW1lbnRzIG5hbWUudHh0IGdlbmVyYXRvcnMgYXJncyA+PnwgZnVuICgpIC0+XG4gICAgTGlzdC5tYXAgZ2VuZXJhdG9ycyB+ZjooZnVuIChUIHQpIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBpdGVtcyA9IGFwcGx5IChUIHQpIH5uYW1lOm5hbWUudHh0IH5jdHh0IGVudHJ5IGFyZ3M7XG4gICAgICAgICAgdW51c2VkX2NvZGVfd2FybmluZ3MgPSB0LnVudXNlZF9jb2RlX3dhcm5pbmdzO1xuICAgICAgICB9KVxuXG4gIGxldCBhcHBseV9hbGwgfmN0eHQgZW50cnkgZ2VuZXJhdG9ycyBleHRfdG9faXRlbSA9XG4gICAgbGV0IGwgPSBMaXN0Lm1hcCBnZW5lcmF0b3JzIH5mOihhcHBseV9hbGwgfmN0eHQgZW50cnkpIGluXG4gICAgbGV0IGwxLCBsZXJyID1cbiAgICAgIExpc3QucGFydGl0aW9uX21hcCAoZnVuY3Rpb24gT2sgZSAtPiBMZWZ0IGUgfCBFcnJvciBlIC0+IFJpZ2h0IGUpIGxcbiAgICBpblxuICAgIGxldCBsZXJyID1cbiAgICAgIExpc3QuY29uY2F0IGxlcnJcbiAgICAgIHw+IExpc3QubWFwIH5mOihmdW4gZXJyIC0+IGV4dF90b19pdGVtIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgaW5cbiAgICBMaXN0LmNvbmNhdCBsMSBAIFsgeyBpdGVtcyA9IGxlcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfSBdXG5lbmRcblxubW9kdWxlIERlcml2ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFjdHVhbF9kZXJpdmVyID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgbmFtZSA6IHN0cmluZztcbiAgICAgIHN0cl90eXBlX2RlY2wgOlxuICAgICAgICAoc3RydWN0dXJlLCByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdCkgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc3RyX3R5cGVfZXh0IDogKHN0cnVjdHVyZSwgdHlwZV9leHRlbnNpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHN0cl9leGNlcHRpb24gOiAoc3RydWN0dXJlLCB0eXBlX2V4Y2VwdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc3RyX21vZHVsZV90eXBlX2RlY2wgOlxuICAgICAgICAoc3RydWN0dXJlLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX3R5cGVfZGVjbCA6XG4gICAgICAgIChzaWduYXR1cmUsIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0KSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfdHlwZV9leHQgOiAoc2lnbmF0dXJlLCB0eXBlX2V4dGVuc2lvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX2V4Y2VwdGlvbiA6IChzaWduYXR1cmUsIHR5cGVfZXhjZXB0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbCA6XG4gICAgICAgIChzaWduYXR1cmUsIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBleHRlbnNpb24gOlxuICAgICAgICAobG9jOkxvY2F0aW9uLnQgLT4gcGF0aDpzdHJpbmcgLT4gY29yZV90eXBlIC0+IGV4cHJlc3Npb24pIG9wdGlvbjtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBBbGlhcyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIHN0cl90eXBlX2RlY2wgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHN0cl90eXBlX2V4dCA6IHN0cmluZyBsaXN0O1xuICAgICAgc3RyX2V4Y2VwdGlvbiA6IHN0cmluZyBsaXN0O1xuICAgICAgc3RyX21vZHVsZV90eXBlX2RlY2wgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ190eXBlX2RlY2wgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ190eXBlX2V4dCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX2V4Y2VwdGlvbiA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2wgOiBzdHJpbmcgbGlzdDtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBGaWVsZCA9IHN0cnVjdFxuICAgIHR5cGUga2luZCA9IFN0ciB8IFNpZ1xuXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0ge1xuICAgICAgbmFtZSA6IHN0cmluZztcbiAgICAgIGtpbmQgOiBraW5kO1xuICAgICAgZ2V0IDogQWN0dWFsX2Rlcml2ZXIudCAtPiAoJ2EsICdiKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBnZXRfc2V0IDogQWxpYXMudCAtPiBzdHJpbmcgbGlzdDtcbiAgICB9XG5cbiAgICBsZXQgc3RyX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcInR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzdHJfdHlwZV9leHQgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJ0eXBlIGV4dGVuc2lvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9leHQpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZXh0KTtcbiAgICAgIH1cblxuICAgIGxldCBzdHJfZXhjZXB0aW9uID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwiZXhjZXB0aW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl9leGNlcHRpb24pO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX2V4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICBsZXQgc3RyX21vZHVsZV90eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJtb2R1bGUgdHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSB0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZGVjbCk7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX3R5cGVfZXh0ID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIHR5cGUgZXh0ZW5zaW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2V4dCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9leHQpO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ19leGNlcHRpb24gPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgZXhjZXB0aW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnNpZ19leGNlcHRpb24pO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc2lnX2V4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX21vZHVsZV90eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgbW9kdWxlIHR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc2lnX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgfVxuICBlbmRcblxuICB0eXBlIHQgPSBBY3R1YWxfZGVyaXZlciBvZiBBY3R1YWxfZGVyaXZlci50IHwgQWxpYXMgb2YgQWxpYXMudFxuICB0eXBlIFBweF9kZXJpdmVycy5kZXJpdmVyICs9IFQgb2YgdFxuXG4gIGxldCBkZXJpdmVycyAoKSA9XG4gICAgTGlzdC5maWx0ZXJfbWFwIChQcHhfZGVyaXZlcnMuZGVyaXZlcnMgKCkpIH5mOihmdW5jdGlvblxuICAgICAgfCBuYW1lLCBUIHQgLT4gU29tZSAobmFtZSwgdClcbiAgICAgIHwgXyAtPiBOb25lKVxuXG4gIGV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkIG9mIHN0cmluZ1xuXG4gIGxldCByZXNvbHZlX2FjdHVhbF9kZXJpdmVycyAoZmllbGQgOiAoXywgXykgRmllbGQudCkgbmFtZSA9XG4gICAgbGV0IHJlYyBsb29wIG5hbWUgY29sbGVjdGVkID1cbiAgICAgIGlmXG4gICAgICAgIExpc3QuZXhpc3RzIGNvbGxlY3RlZCB+ZjooZnVuIChkIDogQWN0dWFsX2Rlcml2ZXIudCkgLT5cbiAgICAgICAgICAgIFN0cmluZy5lcXVhbCBkLm5hbWUgbmFtZSlcbiAgICAgIHRoZW4gY29sbGVjdGVkXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIFBweF9kZXJpdmVycy5sb29rdXAgbmFtZSB3aXRoXG4gICAgICAgIHwgU29tZSAoVCAoQWN0dWFsX2Rlcml2ZXIgZHJ2KSkgLT4gZHJ2IDo6IGNvbGxlY3RlZFxuICAgICAgICB8IFNvbWUgKFQgKEFsaWFzIGFsaWFzKSkgLT5cbiAgICAgICAgICAgIGxldCBzZXQgPSBmaWVsZC5nZXRfc2V0IGFsaWFzIGluXG4gICAgICAgICAgICBMaXN0LmZvbGRfcmlnaHQgc2V0IH5pbml0OmNvbGxlY3RlZCB+Zjpsb29wXG4gICAgICAgIHwgXyAtPiByYWlzZSAoTm90X3N1cHBvcnRlZCBuYW1lKVxuICAgIGluXG4gICAgTGlzdC5yZXYgKGxvb3AgbmFtZSBbXSlcblxuICBsZXQgcmVzb2x2ZV9pbnRlcm5hbCAoZmllbGQgOiAoXywgXykgRmllbGQudCkgbmFtZSA9XG4gICAgTGlzdC5tYXAgKHJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIGZpZWxkIG5hbWUpIH5mOihmdW4gZHJ2IC0+XG4gICAgICAgIG1hdGNoIGZpZWxkLmdldCBkcnYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKE5vdF9zdXBwb3J0ZWQgbmFtZSlcbiAgICAgICAgfCBTb21lIGcgLT4gKGRydi5uYW1lLCBnKSlcblxuICBsZXQgc3VwcG9ydGVkX2ZvciBmaWVsZCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKGRlcml2ZXJzICgpKSB+aW5pdDpTdHJpbmcuU2V0LmVtcHR5IH5mOihmdW4gYWNjIChuYW1lLCBfKSAtPlxuICAgICAgICBtYXRjaCByZXNvbHZlX2ludGVybmFsIGZpZWxkIG5hbWUgd2l0aFxuICAgICAgICB8IF8gLT4gU3RyaW5nLlNldC5hZGQgbmFtZSBhY2NcbiAgICAgICAgfCBleGNlcHRpb24gTm90X3N1cHBvcnRlZCBfIC0+IGFjYylcbiAgICB8PiBTdHJpbmcuU2V0LmVsZW1lbnRzXG5cbiAgbGV0IG5vdF9zdXBwb3J0ZWQgKGZpZWxkIDogKF8sIF8pIEZpZWxkLnQpID8oc3BlbGxjaGVjayA9IHRydWUpIG5hbWUgPVxuICAgIGxldCBzcGVsbGNoZWNrX21zZyA9XG4gICAgICBpZiBzcGVsbGNoZWNrIHRoZW5cbiAgICAgICAgbWF0Y2ggU3BlbGxjaGVjay5zcGVsbGNoZWNrIChzdXBwb3J0ZWRfZm9yIGZpZWxkKSBuYW1lLnR4dCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBzIC0+IFwiLlxcblwiIF4gc1xuICAgICAgZWxzZSBcIlwiXG4gICAgaW5cbiAgICBMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6bmFtZS5sb2NcbiAgICAgIFwiUHB4bGliLkRlcml2aW5nOiAnJXMnIGlzIG5vdCBhIHN1cHBvcnRlZCAlcyBkZXJpdmluZyBnZW5lcmF0b3Ilc1wiXG4gICAgICBuYW1lLnR4dCBmaWVsZC5uYW1lIHNwZWxsY2hlY2tfbXNnXG5cbiAgbGV0IHJlc29sdmUgZmllbGQgbmFtZSA9XG4gICAgdHJ5IE9rIChyZXNvbHZlX2ludGVybmFsIGZpZWxkIG5hbWUudHh0KVxuICAgIHdpdGggTm90X3N1cHBvcnRlZCBuYW1lJyAtPlxuICAgICAgRXJyb3IgKG5vdF9zdXBwb3J0ZWQgZmllbGQgfnNwZWxsY2hlY2s6KFN0cmluZy5lcXVhbCBuYW1lLnR4dCBuYW1lJykgbmFtZSlcblxuICBsZXQgcmVzb2x2ZV9hbGwgZmllbGQgZGVyaXZlcnMgPVxuICAgIGxldCBkZXJpdmVyc19hbmRfYXJncywgZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzID1cbiAgICAgIExpc3QucGFydGl0aW9uX21hcFxuICAgICAgICAoZnVuIChuYW1lLCBhcmdzKSAtPlxuICAgICAgICAgIG1hdGNoIFBweF9kZXJpdmVycy5sb29rdXAgbmFtZS50eHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFaXRoZXIuUmlnaHQgKG5vdF9zdXBwb3J0ZWQgZmllbGQgbmFtZSlcbiAgICAgICAgICB8IFNvbWUgKFQgXykgLT4gKFxuICAgICAgICAgICAgICAoKiBJdCdzIG9uZSBvZiBvdXJzLCBwYXJzZSB0aGUgYXJndW1lbnRzIG5vdy4gV2UgY2FuJ3QgZG8gaXQgYmVmb3JlIHNpbmNlXG4gICAgICAgICAgICAgICAgIHBweF9kZXJpdmluZyB1c2VzIGEgZGlmZmVyZW50IHN5bnRheCBmb3IgYXJndW1lbnRzLiAqKVxuICAgICAgICAgICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgICAgICAgfCBBcmdzIGwgLT4gRWl0aGVyLkxlZnQgKFNvbWUgKG5hbWUsIGwpKVxuICAgICAgICAgICAgICB8IFVua25vd25fc3ludGF4IChsb2MsIG1zZykgLT5cbiAgICAgICAgICAgICAgICAgIEVpdGhlci5SaWdodFxuICAgICAgICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jIFwiUHB4bGliLkRlcml2aW5nOiAlc1wiIG1zZykpXG4gICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgKCogSXQncyBub3Qgb25lIG9mIG91cnMsIGlnbm9yZSBpdC4gKilcbiAgICAgICAgICAgICAgRWl0aGVyLkxlZnQgTm9uZSlcbiAgICAgICAgZGVyaXZlcnNcbiAgICAgIHw+IGZ1biAobDEsIGwyKSAtPiAoTGlzdC5maWx0ZXJfb3B0IGwxLCBsMilcbiAgICBpblxuICAgICgqIFNldCBvZiBhY3R1YWwgZGVyaXZlciBuYW1lcyAqKVxuICAgIGxldCBzZWVuID0gSGFzaHRibC5jcmVhdGUgMTYgaW5cbiAgICBsZXQgcmVzdWx0LCBkZXBfZXJyb3JzID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IH5pbml0OihbXSwgW10pIGRlcml2ZXJzX2FuZF9hcmdzXG4gICAgICAgIH5mOihmdW4gKHJlc3VsdCwgZXJyb3JzKSAobmFtZSwgYXJncykgLT5cbiAgICAgICAgICBtYXRjaCByZXNvbHZlIGZpZWxkIG5hbWUgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgZSAtPiAocmVzdWx0LCBlcnJvcnMgQCBbIGUgXSlcbiAgICAgICAgICB8IE9rIG5hbWVkX2dlbmVyYXRvcnMgLT5cbiAgICAgICAgICAgICAgbGV0IGxfZXJyID1cbiAgICAgICAgICAgICAgICBMaXN0LmNvbmNhdF9tYXAgbmFtZWRfZ2VuZXJhdG9yc1xuICAgICAgICAgICAgICAgICAgfmY6KGZ1biAoYWN0dWFsX2Rlcml2ZXJfbmFtZSwgZ2VuKSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZHVwX2Vycm9yID1cbiAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9ucy5mYWlsX29uX2R1cGxpY2F0ZV9kZXJpdmVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgJiYgSGFzaHRibC5tZW0gc2VlbiBhY3R1YWxfZGVyaXZlcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRlcml2ZXIgJXMgYXBwZWFycyB0d2ljZVwiIGFjdHVhbF9kZXJpdmVyX25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBbXVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbF9lcnIgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuY29uY2F0X21hcCAoR2VuZXJhdG9yLmRlcHMgZ2VuKSB+ZjooZnVuIGRlcCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZpbHRlcl9tYXAgKHJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIGZpZWxkIGRlcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuIGRydiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRlcF9uYW1lID0gZHJ2Lm5hbWUgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAoSGFzaHRibC5tZW0gc2VlbiBkZXBfbmFtZSkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGVyaXZlciAlcyBpcyBuZWVkZWQgZm9yICVzLCB5b3UgbmVlZCB0byBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgaXQgYmVmb3JlIGluIHRoZSBsaXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBfbmFtZSBuYW1lLnR4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgTm9uZSkpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIEhhc2h0Ymwuc2V0IHNlZW4gfmtleTphY3R1YWxfZGVyaXZlcl9uYW1lIH5kYXRhOigpO1xuICAgICAgICAgICAgICAgICAgICBkdXBfZXJyb3IgQCBsX2VycilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCByZXN1bHQgQCBbIChuYW1lLCBMaXN0Lm1hcCBuYW1lZF9nZW5lcmF0b3JzIH5mOnNuZCwgYXJncykgXSxcbiAgICAgICAgICAgICAgICBlcnJvcnMgQCBsX2VyciApKVxuICAgIGluXG4gICAgKHJlc3VsdCwgZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIEAgZGVwX2Vycm9ycylcblxuICBsZXQgYWRkID9zdHJfdHlwZV9kZWNsID9zdHJfdHlwZV9leHQgP3N0cl9leGNlcHRpb24gP3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgICA/c2lnX3R5cGVfZGVjbCA/c2lnX3R5cGVfZXh0ID9zaWdfZXhjZXB0aW9uID9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgP2V4dGVuc2lvbiBuYW1lID1cbiAgICBsZXQgYWN0dWFsX2Rlcml2ZXIgOiBBY3R1YWxfZGVyaXZlci50ID1cbiAgICAgIHtcbiAgICAgICAgbmFtZTtcbiAgICAgICAgc3RyX3R5cGVfZGVjbDtcbiAgICAgICAgc3RyX3R5cGVfZXh0O1xuICAgICAgICBzdHJfZXhjZXB0aW9uO1xuICAgICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZXh0O1xuICAgICAgICBzaWdfZXhjZXB0aW9uO1xuICAgICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgICAgZXh0ZW5zaW9uO1xuICAgICAgfVxuICAgIGluXG4gICAgUHB4X2Rlcml2ZXJzLnJlZ2lzdGVyIG5hbWUgKFQgKEFjdHVhbF9kZXJpdmVyIGFjdHVhbF9kZXJpdmVyKSk7XG4gICAgKG1hdGNoIGV4dGVuc2lvbiB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGYgLT5cbiAgICAgICAgbGV0IGV4dGVuc2lvbiA9XG4gICAgICAgICAgRXh0ZW5zaW9uLmRlY2xhcmUgbmFtZSBFeHByZXNzaW9uIEFzdF9wYXR0ZXJuLihwdHlwIF9fKSBmXG4gICAgICAgIGluXG4gICAgICAgIERyaXZlci5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvblxuICAgICAgICAgIChcIlBweGxpYi5EZXJpdmluZy5cIiBeIG5hbWUpXG4gICAgICAgICAgfnJ1bGVzOlsgQ29udGV4dF9mcmVlLlJ1bGUuZXh0ZW5zaW9uIGV4dGVuc2lvbiBdKTtcbiAgICBuYW1lXG5cbiAgbGV0IGFkZF9hbGlhcyBuYW1lID9zdHJfdHlwZV9kZWNsID9zdHJfdHlwZV9leHQgP3N0cl9leGNlcHRpb25cbiAgICAgID9zdHJfbW9kdWxlX3R5cGVfZGVjbCA/c2lnX3R5cGVfZGVjbCA/c2lnX3R5cGVfZXh0ID9zaWdfZXhjZXB0aW9uXG4gICAgICA/c2lnX21vZHVsZV90eXBlX2RlY2wgc2V0ID1cbiAgICBsZXQgYWxpYXMgOiBBbGlhcy50ID1cbiAgICAgIGxldCBnZXQgPSBmdW5jdGlvbiBOb25lIC0+IHNldCB8IFNvbWUgc2V0IC0+IHNldCBpblxuICAgICAge1xuICAgICAgICBzdHJfdHlwZV9kZWNsID0gZ2V0IHN0cl90eXBlX2RlY2w7XG4gICAgICAgIHN0cl90eXBlX2V4dCA9IGdldCBzdHJfdHlwZV9leHQ7XG4gICAgICAgIHN0cl9leGNlcHRpb24gPSBnZXQgc3RyX2V4Y2VwdGlvbjtcbiAgICAgICAgc3RyX21vZHVsZV90eXBlX2RlY2wgPSBnZXQgc3RyX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2RlY2wgPSBnZXQgc2lnX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZXh0ID0gZ2V0IHNpZ190eXBlX2V4dDtcbiAgICAgICAgc2lnX2V4Y2VwdGlvbiA9IGdldCBzaWdfZXhjZXB0aW9uO1xuICAgICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbCA9IGdldCBzaWdfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgIH1cbiAgICBpblxuICAgIFBweF9kZXJpdmVycy5yZWdpc3RlciBuYW1lIChUIChBbGlhcyBhbGlhcykpO1xuICAgIG5hbWVcbmVuZFxuXG5sZXQgYWRkID0gRGVyaXZlci5hZGRcbmxldCBhZGRfYWxpYXMgPSBEZXJpdmVyLmFkZF9hbGlhc1xuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFtAQGRlcml2aW5nIF0gcGFyc2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBpbnZhbGlkX3dpdGggfmxvYyA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiaW52YWxpZCBbQEBkZXJpdmluZyBdIGF0dHJpYnV0ZSBzeW50YXhcIlxuXG5sZXQgZ2VuZXJhdG9yX25hbWVfb2ZfaWQgbG9jIGlkID1cbiAgbWF0Y2ggTG9uZ2lkZW50LmZsYXR0ZW5fZXhuIGlkIHdpdGhcbiAgfCBsIC0+IHsgbG9jOyB0eHQgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgbCB9XG4gIHwgZXhjZXB0aW9uIF8gLT4gaW52YWxpZF93aXRoIH5sb2NcblxuZXhjZXB0aW9uIFVua25vd25fc3ludGF4IG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxubGV0IHBhcnNlX2FyZ3VtZW50cyBsID1cbiAgdHJ5XG4gICAgQXJnc1xuICAgICAgKG1hdGNoIGwgd2l0aFxuICAgICAgfCBbIChOb2xhYmVsLCBlKSBdIC0+IChcbiAgICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQZXhwX3JlY29yZCAoZmllbGRzLCBOb25lKSAtPlxuICAgICAgICAgICAgICBMaXN0Lm1hcCBmaWVsZHMgfmY6KGZ1biAoaWQsIGV4cHIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgbmFtZSA9XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGlkLnR4dCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTGlkZW50IHMgLT4gc1xuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFVua25vd25fc3ludGF4IChpZC5sb2MsIFwic2ltcGxlIGlkZW50aWZpZXIgZXhwZWN0ZWRcIikpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKG5hbWUsIGV4cHIpKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICByYWlzZV9ub3RyYWNlXG4gICAgICAgICAgICAgICAgKFVua25vd25fc3ludGF4XG4gICAgICAgICAgICAgICAgICAgKCBlLnBleHBfbG9jLFxuICAgICAgICAgICAgICAgICAgICAgXCJub24tb3B0aW9uYWwgbGFiZWxsZWQgYXJndW1lbnQgb3IgcmVjb3JkIGV4cGVjdGVkXCIgKSkpXG4gICAgICB8IGwgLT5cbiAgICAgICAgICBMaXN0Lm1hcCBsIH5mOihmdW4gKGxhYmVsLCBleHByKSAtPlxuICAgICAgICAgICAgICBtYXRjaCBsYWJlbCB3aXRoXG4gICAgICAgICAgICAgIHwgTGFiZWxsZWQgcyAtPiAocywgZXhwcilcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICByYWlzZV9ub3RyYWNlXG4gICAgICAgICAgICAgICAgICAgIChVbmtub3duX3N5bnRheFxuICAgICAgICAgICAgICAgICAgICAgICAoZXhwci5wZXhwX2xvYywgXCJub24tb3B0aW9uYWwgbGFiZWxsZWQgYXJndW1lbnQgZXhwZWN0ZWRcIikpKSlcbiAgd2l0aCBVbmtub3duX3N5bnRheCAobG9jLCBtc2cpIC0+IFVua25vd25fc3ludGF4IChsb2MsIG1zZylcblxubGV0IG1rX2Rlcml2aW5nX2F0dHIgY29udGV4dCB+cHJlZml4IH5zdWZmaXggPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIChwcmVmaXggXiBcImRlcml2aW5nXCIgXiBzdWZmaXgpXG4gICAgY29udGV4dFxuICAgIEFzdF9wYXR0ZXJuLihcbiAgICAgIGxldCBnZW5lcmF0b3JfbmFtZSAoKSA9XG4gICAgICAgIG1hcCcgKHBleHBfaWRlbnQgX18pIH5mOihmdW4gbG9jIGYgaWQgLT5cbiAgICAgICAgICAgIGYgKGdlbmVyYXRvcl9uYW1lX29mX2lkIGxvYyBpZCkpXG4gICAgICBpblxuICAgICAgbGV0IGdlbmVyYXRvciAoKSA9XG4gICAgICAgIG1hcCAoZ2VuZXJhdG9yX25hbWUgKCkpIH5mOihmdW4gZiB4IC0+IGYgKHgsIEFyZ3MgW10pKVxuICAgICAgICB8fHwgcGFjazJcbiAgICAgICAgICAgICAgKHBleHBfYXBwbHkgKGdlbmVyYXRvcl9uYW1lICgpKVxuICAgICAgICAgICAgICAgICAobWFwMSAobWFueSBfXykgfmY6cGFyc2VfYXJndW1lbnRzKSlcbiAgICAgIGluXG4gICAgICBsZXQgZ2VuZXJhdG9ycyA9XG4gICAgICAgIHBleHBfdHVwbGUgKG1hbnkgKGdlbmVyYXRvciAoKSkpXG4gICAgICAgIHx8fCBtYXAgKGdlbmVyYXRvciAoKSkgfmY6KGZ1biBmIHggLT4gZiBbIHggXSlcbiAgICAgIGluXG4gICAgICBwc3RyIChwc3RyX2V2YWwgZ2VuZXJhdG9ycyBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVW51c2VkIHdhcm5pbmcgc3R1ZmYgKyBsb2NhdGlvbnMgY2hlY2sgc2lsZW5jaW5nICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IGRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIHdhcm5pbmdzID1cbiAgbGV0IGxvYyA9IExvY2F0aW9uLm5vbmUgaW5cbiAgbGV0IHN0cmluZyA9XG4gICAgTGlzdC5zb3J0IHdhcm5pbmdzIH5jbXA6SW50LmNvbXBhcmVcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHdhcm5pbmcgLT4gXCItXCIgXiBJbnQudG9fc3RyaW5nIHdhcm5pbmcpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCJcbiAgaW5cbiAge1xuICAgIGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC53YXJuaW5nXCI7IGxvYyB9O1xuICAgIGF0dHJfcGF5bG9hZCA9IFBTdHIgWyBwc3RyX2V2YWwgfmxvYyAoZXN0cmluZyB+bG9jIHN0cmluZykgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG5sZXQgaW5saW5lX2RvY19hdHRyID1cbiAgbGV0IGxvYyA9IExvY2F0aW9uLm5vbmUgaW5cbiAge1xuICAgIGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC5kb2NcIjsgbG9jIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2MgXCJAaW5saW5lXCIpIFtdIF07XG4gICAgYXR0cl9sb2MgPSBsb2M7XG4gIH1cblxuKCogd3JhcCBhIHN0cnVjdHVyZSBpbiBleHRyYSBhdHRyaWJ1dGVzICopXG5sZXQgd3JhcF9zdHIgfmxvYyB+aGlkZSBzdCA9XG4gIGxldCBpbmNsdWRlX2luZm9zID0gaW5jbHVkZV9pbmZvcyB+bG9jIChwbW9kX3N0cnVjdHVyZSB+bG9jIHN0KSBpblxuICBsZXQgcGluY2xfYXR0cmlidXRlcyA9XG4gICAgaWYgaGlkZSB0aGVuIFsgaW5saW5lX2RvY19hdHRyOyBNZXJsaW5faGVscGVycy5oaWRlX2F0dHJpYnV0ZSBdXG4gICAgZWxzZSBbIGlubGluZV9kb2NfYXR0ciBdXG4gIGluXG4gIFsgcHN0cl9pbmNsdWRlIH5sb2MgeyBpbmNsdWRlX2luZm9zIHdpdGggcGluY2xfYXR0cmlidXRlcyB9IF1cblxuKCogZGVjaWRlIHdoYXQgdG8gd3JhcCBhIHN0cnVjdHVyZSBpbiwgdGhlbiBjYWxsIGFib3ZlIFt3cmFwX3N0cl0gKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBzdCA9XG4gIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgdW51c2VkX2NvZGVfd2FybmluZ3MgPVxuICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzICYmIGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzICgpXG4gIGluXG4gIGxldCB3YXJuaW5ncywgc3QgPVxuICAgIGlmIGtlZXBfdzMyX2ltcGwgKCkgfHwgdW51c2VkX2NvZGVfd2FybmluZ3MgdGhlbiAoW10sIHN0KVxuICAgIGVsc2UgaWYgbm90ICFkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlIHRoZW5cbiAgICAgIChbXSwgSWdub3JlX3VudXNlZF93YXJuaW5nLmFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMjc3RydWN0dXJlIHN0KVxuICAgIGVsc2UgKFsgMzIgXSwgc3QpXG4gIGluXG4gIGxldCB3YXJuaW5ncywgc3QgPVxuICAgIGlmXG4gICAgICBrZWVwX3c2MF9pbXBsICgpIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzXG4gICAgICB8fCBub3QgKElnbm9yZV91bnVzZWRfd2FybmluZy5iaW5kc19tb2R1bGVfbmFtZXMjc3RydWN0dXJlIHN0IGZhbHNlKVxuICAgIHRoZW4gKHdhcm5pbmdzLCBzdClcbiAgICBlbHNlICg2MCA6OiB3YXJuaW5ncywgc3QpXG4gIGluXG4gIGxldCB3cmFwLCBzdCA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSB3YXJuaW5ncyB0aGVuIChoaWRlLCBzdClcbiAgICBlbHNlICh0cnVlLCBwc3RyX2F0dHJpYnV0ZSB+bG9jIChkaXNhYmxlX3dhcm5pbmdzX2F0dHJpYnV0ZSB3YXJuaW5ncykgOjogc3QpXG4gIGluXG4gIGlmIHdyYXAgdGhlbiB3cmFwX3N0ciB+bG9jIH5oaWRlIHN0IGVsc2Ugc3RcblxuKCogd3JhcCBibG9ja3MgdGhhdCBzaGFyZSBbdW51c2VkX2NvZGVfd2FybmluZ3NdLCB1c2luZyBhYm92ZSBbd3JhcF9zdHJdIGFib3ZlICopXG5sZXQgd3JhcF9zdHIgfmxvYyB+aGlkZSBsaXN0ID1cbiAgTGlzdC5jb25jYXRfbWFwIGxpc3QgfmY6KGZ1biB7IGl0ZW1zOyB1bnVzZWRfY29kZV93YXJuaW5ncyB9IC0+XG4gICAgICBpZiBMaXN0LmlzX2VtcHR5IGl0ZW1zIHRoZW4gW11cbiAgICAgIGVsc2Ugd3JhcF9zdHIgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3MgaXRlbXMpXG5cbigqIHdyYXAgYSBzaWduYXR1cmUgaW4gZXh0cmEgYXR0cmlidXRlcyAqKVxubGV0IHdyYXBfc2lnIH5sb2MgfmhpZGUgc3QgPVxuICBsZXQgaW5jbHVkZV9pbmZvcyA9IGluY2x1ZGVfaW5mb3MgfmxvYyAocG10eV9zaWduYXR1cmUgfmxvYyBzdCkgaW5cbiAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPVxuICAgIGlmIGhpZGUgdGhlbiBbIGlubGluZV9kb2NfYXR0cjsgTWVybGluX2hlbHBlcnMuaGlkZV9hdHRyaWJ1dGUgXVxuICAgIGVsc2UgWyBpbmxpbmVfZG9jX2F0dHIgXVxuICBpblxuICBbIHBzaWdfaW5jbHVkZSB+bG9jIHsgaW5jbHVkZV9pbmZvcyB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgfSBdXG5cbigqIGRlY2lkZSB3aGF0IHRvIHdyYXAgYSBzaWduYXR1cmUgaW4sIHRoZW4gY2FsbCBhYm92ZSBbd3JhcF9zaWddICopXG5sZXQgd3JhcF9zaWcgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3Mgc2cgPVxuICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgbGV0IHVudXNlZF9jb2RlX3dhcm5pbmdzID1cbiAgICB1bnVzZWRfY29kZV93YXJuaW5ncyAmJiBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyAoKVxuICBpblxuICBsZXQgd2FybmluZ3MgPVxuICAgIGlmIGtlZXBfdzMyX2ludGYgKCkgfHwgdW51c2VkX2NvZGVfd2FybmluZ3MgdGhlbiBbXSBlbHNlIFsgMzIgXVxuICBpblxuICBsZXQgd2FybmluZ3MgPVxuICAgIGlmXG4gICAgICBrZWVwX3c2MF9pbnRmICgpXG4gICAgICB8fCAobm90IChJZ25vcmVfdW51c2VkX3dhcm5pbmcuYmluZHNfbW9kdWxlX25hbWVzI3NpZ25hdHVyZSBzZyBmYWxzZSkpXG4gICAgICB8fCB1bnVzZWRfY29kZV93YXJuaW5nc1xuICAgIHRoZW4gd2FybmluZ3NcbiAgICBlbHNlIDYwIDo6IHdhcm5pbmdzXG4gIGluXG4gIGxldCB3cmFwLCBzZyA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSB3YXJuaW5ncyB0aGVuIChoaWRlLCBzZylcbiAgICBlbHNlICh0cnVlLCBwc2lnX2F0dHJpYnV0ZSB+bG9jIChkaXNhYmxlX3dhcm5pbmdzX2F0dHJpYnV0ZSB3YXJuaW5ncykgOjogc2cpXG4gIGluXG4gIGlmIHdyYXAgdGhlbiB3cmFwX3NpZyB+bG9jIH5oaWRlIHNnIGVsc2Ugc2dcblxuKCogd3JhcCBibG9ja3MgdGhhdCBzaGFyZSBbdW51c2VkX2NvZGVfd2FybmluZ3NdLCB1c2luZyBhYm92ZSBbd3JhcF9zaWddIGFib3ZlICopXG5sZXQgd3JhcF9zaWcgfmxvYyB+aGlkZSBsaXN0ID1cbiAgTGlzdC5jb25jYXRfbWFwIGxpc3QgfmY6KGZ1biB7IGl0ZW1zOyB1bnVzZWRfY29kZV93YXJuaW5ncyB9IC0+XG4gICAgICBpZiBMaXN0LmlzX2VtcHR5IGl0ZW1zIHRoZW4gW11cbiAgICAgIGVsc2Ugd3JhcF9zaWcgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3MgaXRlbXMpXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTWFpbiBleHBhbnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IHR5cGVzX3VzZWRfYnlfZGVyaXZpbmcgKHRkcyA6IHR5cGVfZGVjbGFyYXRpb24gbGlzdCkgOiBzdHJ1Y3R1cmVfaXRlbSBsaXN0ID1cbiAgaWYga2VlcF93MzJfaW1wbCAoKSB0aGVuIFtdXG4gIGVsc2VcbiAgICBMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICBsZXQgdHlwID0gQ29tbW9uLmNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIGluXG4gICAgICAgIGxldCBsb2MgPSB0ZC5wdHlwZV9sb2MgaW5cbiAgICAgICAgcHN0cl92YWx1ZSB+bG9jIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OihwcGF0X2FueSB+bG9jKVxuICAgICAgICAgICAgICB+ZXhwcjpcbiAgICAgICAgICAgICAgICAocGV4cF9mdW4gfmxvYyBOb2xhYmVsIE5vbmVcbiAgICAgICAgICAgICAgICAgICAocHBhdF9jb25zdHJhaW50IH5sb2MgKHBwYXRfYW55IH5sb2MpIHR5cClcbiAgICAgICAgICAgICAgICAgICAoZXVuaXQgfmxvYykpO1xuICAgICAgICAgIF0pXG5cbmxldCBtZXJnZV9nZW5lcmF0b3JzIGZpZWxkIGwgPVxuICBMaXN0LmZpbHRlcl9tYXAgbCB+ZjooZnVuIHggLT4geCkgfD4gTGlzdC5jb25jYXQgfD4gRGVyaXZlci5yZXNvbHZlX2FsbCBmaWVsZFxuXG4oKiBUaGlzIGZ1bmN0aW9uIG1lcmdlcyBbJ2EgZGVyaXZlZF0gaWYgdGhleSBoYXZlIHRoZSBzYW1lIFt1bnVzZWRfY29kZV93YXJuaW5nc10uIFRoaXNcbiAgIHJlZHVjZXMgdGhlIG51bWJlciBvZiB0aW1lcyB3ZSBhZGQgW2luY2x1ZGUgc3RydWN0IC4uLiBlbmRdIHRvIGRpc2FibGUgd2FybmluZ3MuICopXG5sZXQgbWVyZ2VfZGVyaXZlZCBsaXN0cyA9XG4gIExpc3QuZm9sZF9yaWdodCBsaXN0cyB+aW5pdDpbXSB+ZjooZnVuIGRlcml2ZWQgYWNjIC0+XG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBvdGhlciA6OiBvdGhlcnNcbiAgICAgICAgd2hlbiBCb29sLmVxdWFsIGRlcml2ZWQudW51c2VkX2NvZGVfd2FybmluZ3Mgb3RoZXIudW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICAgICAgLT5cbiAgICAgICAgICB7IG90aGVyIHdpdGggaXRlbXMgPSBkZXJpdmVkLml0ZW1zIEAgb3RoZXIuaXRlbXMgfSA6OiBvdGhlcnNcbiAgICAgIHwgXyAtPiBkZXJpdmVkIDo6IGFjYylcblxubGV0IGV4cGFuZF9zdHJfdHlwZV9kZWNscyB+Y3R4dCByZWNfZmxhZyB0ZHMgdmFsdWVzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID0gbWVyZ2VfZ2VuZXJhdG9ycyBEZXJpdmVyLkZpZWxkLnN0cl90eXBlX2RlY2wgdmFsdWVzIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gICgqIFRPRE86IGluc3RlYWQgb2YgZGlzYWJsaW5nIHRoZSB1bnVzZWQgd2FybmluZyBmb3IgdHlwZXMgdGhlbXNlbHZlcywgd2VcbiAgICAgc2hvdWxkIGFkZCBhIHRhZyBbQEB1bnVzZWRdLiAqKVxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gdHlwZXNfdXNlZF9ieV9kZXJpdmluZyB0ZHMgQCBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCAocmVjX2ZsYWcsIHRkcykgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX3R5cGVfZGVjbHMgfmN0eHQgcmVjX2ZsYWcgdGRzIHZhbHVlcyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9IG1lcmdlX2dlbmVyYXRvcnMgRGVyaXZlci5GaWVsZC5zaWdfdHlwZV9kZWNsIHZhbHVlcyBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgKHJlY19mbGFnLCB0ZHMpIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3N0cl9tb2R1bGVfdHlwZV9kZWNsIH5jdHh0IG10ZCBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc3RyX21vZHVsZV90eXBlX2RlY2wgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgbXRkIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ19tb2R1bGVfdHlwZV9kZWNsIH5jdHh0IG10ZCBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc2lnX21vZHVsZV90eXBlX2RlY2wgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgbXRkIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3N0cl9leGNlcHRpb24gfmN0eHQgZWMgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnN0cl9leGNlcHRpb24gZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgZWMgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX2V4Y2VwdGlvbiB+Y3R4dCBlYyBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc2lnX2V4Y2VwdGlvbiBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBlYyBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zdHJfdHlwZV9leHQgfmN0eHQgdGUgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnN0cl90eXBlX2V4dCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCB0ZSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfdHlwZV9leHQgfmN0eHQgdGUgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnNpZ190eXBlX2V4dCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCB0ZSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IHJ1bGVzIH50eXAgfmV4cGFuZF9zaWcgfmV4cGFuZF9zdHIgfnJ1bGVfc3RyIH5ydWxlX3NpZyB+cnVsZV9zdHJfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdCA9XG4gIGxldCBwcmVmaXggPSBcInBweGxpYi5cIiBpblxuICBsZXQgZGVyaXZpbmdfYXR0ciA9IG1rX2Rlcml2aW5nX2F0dHIgfnN1ZmZpeDpcIlwiIH5wcmVmaXggdHlwIGluXG4gIGxldCBkZXJpdmluZ19hdHRyX2V4cGVjdCA9IG1rX2Rlcml2aW5nX2F0dHIgfnN1ZmZpeDpcIl9pbmxpbmVcIiB+cHJlZml4IHR5cCBpblxuICBbXG4gICAgcnVsZV9zaWcgZGVyaXZpbmdfYXR0ciBleHBhbmRfc2lnO1xuICAgIHJ1bGVfc3RyIGRlcml2aW5nX2F0dHIgZXhwYW5kX3N0cjtcbiAgICBydWxlX3N0cl9leHBlY3QgZGVyaXZpbmdfYXR0cl9leHBlY3QgZXhwYW5kX3N0cjtcbiAgICBydWxlX3NpZ19leHBlY3QgZGVyaXZpbmdfYXR0cl9leHBlY3QgZXhwYW5kX3NpZztcbiAgXVxuXG5sZXQgcnVsZXNfdHlwZV9kZWNsID1cbiAgcnVsZXMgfnR5cDpUeXBlX2RlY2xhcmF0aW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfdHlwZV9kZWNsc1xuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfdHlwZV9kZWNsc1xuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2RlY2xcbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2RlY2xfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0XG5cbmxldCBydWxlc190eXBlX2V4dCA9XG4gIHJ1bGVzIH50eXA6VHlwZV9leHRlbnNpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl90eXBlX2V4dFxuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfdHlwZV9leHRcbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9leHRcbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9leHRcbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZXh0X2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0XG5cbmxldCBydWxlc19leGNlcHRpb24gPVxuICBydWxlcyB+dHlwOlR5cGVfZXhjZXB0aW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfZXhjZXB0aW9uXG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ19leGNlcHRpb25cbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfZXhjZXB0aW9uXG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX2V4Y2VwdGlvblxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfZXhjZXB0aW9uX2V4cGVjdFxuXG5sZXQgcnVsZXNfbW9kdWxlX3R5cGVfZGVjbCA9XG4gIHJ1bGVzIH50eXA6TW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0XG5cbmxldCAoKSA9XG4gIGxldCBydWxlcyA9XG4gICAgWyBydWxlc190eXBlX2RlY2w7IHJ1bGVzX3R5cGVfZXh0OyBydWxlc19leGNlcHRpb247IHJ1bGVzX21vZHVsZV90eXBlX2RlY2wgXVxuICAgIHw+IExpc3QuY29uY2F0XG4gIGluXG4gIERyaXZlci5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiBcImRlcml2aW5nXCIgfmFsaWFzZXM6WyBcInR5cGVfY29udlwiIF0gfnJ1bGVzXG4iLCJvcGVuIEltcG9ydFxuXG50eXBlIGFmZml4ID1cbiAgfCBQcmVmaXggb2Ygc3RyaW5nXG4gIHwgU3VmZml4IG9mIHN0cmluZ1xuICB8IFByZWZpeFN1ZmZpeCBvZiBzdHJpbmcgKiBzdHJpbmdcblxubGV0IG1hbmdsZSA/KGZpeHBvaW50ID0gXCJ0XCIpIGFmZml4IG5hbWUgPVxuICBtYXRjaCAoU3RyaW5nLihuYW1lID0gZml4cG9pbnQpLCBhZmZpeCkgd2l0aFxuICB8IHRydWUsIChQcmVmaXggeCB8IFN1ZmZpeCB4KSAtPiB4XG4gIHwgdHJ1ZSwgUHJlZml4U3VmZml4IChwLCBzKSAtPiBwIF4gXCJfXCIgXiBzXG4gIHwgZmFsc2UsIFByZWZpeFN1ZmZpeCAocCwgcykgLT4gcCBeIFwiX1wiIF4gbmFtZSBeIFwiX1wiIF4gc1xuICB8IGZhbHNlLCBQcmVmaXggeCAtPiB4IF4gXCJfXCIgXiBuYW1lXG4gIHwgZmFsc2UsIFN1ZmZpeCB4IC0+IG5hbWUgXiBcIl9cIiBeIHhcblxubGV0IG1hbmdsZV90eXBlX2RlY2wgP2ZpeHBvaW50IGFmZml4IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gbmFtZTsgXyB9OyBfIH0gPVxuICBtYW5nbGUgP2ZpeHBvaW50IGFmZml4IG5hbWVcblxubGV0IG1hbmdsZV9saWQgP2ZpeHBvaW50IGFmZml4IGxpZCA9XG4gIG1hdGNoIGxpZCB3aXRoXG4gIHwgTGlkZW50IHMgLT4gTGlkZW50IChtYW5nbGUgP2ZpeHBvaW50IGFmZml4IHMpXG4gIHwgTGRvdCAocCwgcykgLT4gTGRvdCAocCwgbWFuZ2xlID9maXhwb2ludCBhZmZpeCBzKVxuICB8IExhcHBseSBfIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkV4cGFuc2lvbl9oZWxwZXJzLm1hbmdsZV9saWQ6IExhcHBseVwiXG5cbm1vZHVsZSBRdW90ZXIgPSBRdW90ZXJcbiIsIigqKiBTdGFuZGFyZCBsaWJyYXJ5IGZvciBwcHggcmV3cml0ZXJzICopXG5cbigqKiBbcHB4bGliXSBpcyBtZWFudCB0byBiZSBvcGVuZWQgZ2xvYmFsbHkgaW4geW91ciBQUFggc291cmNlIGZpbGVzLlxuXG4gICAgT3BlbmluZyBpdCBjb21lcyB3aXRoIHR3byBhZHZhbnRhZ2VzLiBGaXJzdCwgaXQgd2lsbCBzaGFkb3cgdGhlXG4gICAgW2NvbXBpbGVyLWxpYnNdIG1vZHVsZXMuIFRoZSBbY29tcGlsZXItbGlic10gbW9kdWxlcyBhcmUgdW5zdGFibGUgYW5kIGFyZW4ndFxuICAgIG1lYW50IHRvIGJlIHVzZWQsIHNvIHNoYWRvd2luZyB0aGVtIGlzIGEgZ29vZCBwcm90ZWN0aW9uIG1lY2hhbmlzbS4gSW4gY2FzZVxuICAgIHlvdSBkb24ndCB3YW50IHRvIG9wZW4gW1BweGxpYl0sIHlvdSBjYW4gb3BlbiBbT2NhbWxfc2hhZG93XSB0byBnZXQgdGhlIHNhbWVcbiAgICBwcm90ZWN0aW9uLiBTZWNvbmQsIGl0IHdpbGwgYnJpbmcgc2V2ZXJhbCBtb2R1bGVzIGluIHNjb3BlLCB0aGF0IGFyZSB1c2VmdWxcbiAgICB0byBoYXZlIHdoZW4gd3JpdGluZyBhIHJld3JpdGVyOlxuXG4gICAgLSBUaGUgbWFpbiBbcHB4bGliXSBtb2R1bGVzLCBzdWNoIGFzIG1vZHVsZXMgdG8gaGVscCBtYW5pcHVsYXRlIHRoZSBBU1RcbiAgICAgICh7IUFzdF9idWlsZGVyfSwgeyFBc3RfcGF0dGVybn0pLCBhbmQgYSBmZXcgZnVuY3Rpb25zLlxuICAgIC0gTW9kdWxlcyBmcm9tIG90aGVyIGxpYnJhcmllcywgc3VjaCBhcyB7IUFzdF9oZWxwZXJ9IG9yIHshUHByaW50YXN0fSxcbiAgICAtIFRoZSB3aG9sZSBBU1QgdHlwZXMgKGJ5IFtpbmNsdWRpbmddIHRoZSB7IUFzdH0gbW9kdWxlKS5cblxuICAgIHsxIFRoZSBjb3JlIFtwcHhsaWJdIGVudHJpZXN9ICopXG5cbigqKiB7MiBNYW5pcHVsYXRpbmcgdGhlIEFTVH0gKilcblxubW9kdWxlIEFzdF9idWlsZGVyID0gQXN0X2J1aWxkZXJcbm1vZHVsZSBBc3RfcGF0dGVybiA9IEFzdF9wYXR0ZXJuXG5tb2R1bGUgQXN0X3RyYXZlcnNlID0gQXN0X3RyYXZlcnNlXG5cbigqKiB7MiBDb250ZXh0LWZyZWUgcmV3cml0aW5nfSAqKVxuXG5tb2R1bGUgQ29udGV4dF9mcmVlID0gQ29udGV4dF9mcmVlXG5tb2R1bGUgRGVyaXZpbmcgPSBEZXJpdmluZ1xubW9kdWxlIEV4dGVuc2lvbiA9IEV4dGVuc2lvblxubW9kdWxlIEV4cGFuc2lvbl9jb250ZXh0ID0gRXhwYW5zaW9uX2NvbnRleHRcbm1vZHVsZSBDb2RlX3BhdGggPSBDb2RlX3BhdGhcblxuKCoqIHsyIE90aGVyIGhlbHBlcnN9ICopXG5cbm1vZHVsZSBFeHBhbnNpb25faGVscGVycyA9IEV4cGFuc2lvbl9oZWxwZXJzXG5tb2R1bGUgTWVybGluX2hlbHBlcnMgPSBNZXJsaW5faGVscGVyc1xubW9kdWxlIFNwZWxsY2hlY2sgPSBTcGVsbGNoZWNrXG5tb2R1bGUgS2V5d29yZCA9IEtleXdvcmRcblxuKCoqIHsyIERyaXZlci1yZWxhdGVkIG1vZHVsZXN9ICopXG5cbm1vZHVsZSBEcml2ZXIgPSBEcml2ZXJcbm1vZHVsZSBDYWxsZXJfaWQgPSBDYWxsZXJfaWRcbm1vZHVsZSBBc3RfaW8gPSBVdGlscy5Bc3RfaW8uUmVhZF9iaW5cblxuKCoqIHsyIENoZWNrc30gKilcblxubW9kdWxlIEF0dHJpYnV0ZSA9IEF0dHJpYnV0ZVxubW9kdWxlIFJlc2VydmVkX25hbWVzcGFjZXMgPSBOYW1lLlJlc2VydmVkX25hbWVzcGFjZXNcblxuKCoqIHsyIENvbW1vbiBoZWxwZXIgZnVuY3Rpb25zfSAqKVxuXG5pbmNsdWRlIENvbW1vblxuXG4oKiogezEgTW9kdWxlcyBmcm9tIG90aGVyIGxpYnJhcmllc31cblxuICAgIEV4cG9zZSBzb21lIG1vZHVsZXMgZnJvbSB7IVBweGxpYl9hc3R9LiAqKVxuXG5tb2R1bGUgQXN0ID0gUHB4bGliX2FzdC5Bc3Rcbm1vZHVsZSBBc3RfaGVscGVyID0gUHB4bGliX2FzdC5Bc3RfaGVscGVyXG5tb2R1bGUgQXN0dHlwZXMgPSBQcHhsaWJfYXN0LkFzdHR5cGVzXG5tb2R1bGUgUGFyc2UgPSBQcHhsaWJfYXN0LlBhcnNlXG5tb2R1bGUgUGFyc2V0cmVlID0gUHB4bGliX2FzdC5QYXJzZXRyZWVcbm1vZHVsZSBQcHJpbnRhc3QgPSBQcHhsaWJfYXN0LlBwcmludGFzdFxubW9kdWxlIFNlbGVjdGVkX2FzdCA9IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0XG5tb2R1bGUgTG9jYXRpb24gPSBMb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IExvbmdpZGVudFxubW9kdWxlIExvYyA9IExvY1xuXG4oKiogezEgVGhlIHdob2xlIEFTVCB0eXBlc30gKilcblxuaW5jbHVkZSBBc3RcbigqKiBJbmNsdWRlIGFsbCB0aGUgQXN0IGRlZmluaXRpb25zIHNpbmNlIHdlIG5lZWQgdGhlbSBpbiBldmVyeSBzaW5nbGUgcHB4XG5cbiAgICBAY2xvc2VkICopXG5cbigqKiBNYWtlIHN1cmUgY29kZSB1c2luZyBQcHhsaWIgZG9lc24ndCByZWZlciB0byBjb21waWxlci1saWJzIHdpdGhvdXQgYmVpbmdcbiAgICBleHBsaWNpdCBhYm91dCBpdDpcblxuICAgIEBjbG9zZWQgKilcbmluY2x1ZGUgc3RydWN0XG4gIFtAQEB3YXJuaW5nIFwiLTNcIl1cblxuICBvcGVuIE9jYW1sX3NoYWRvd1xuXG4gIGluY2x1ZGUgKFxuICAgIE9jYW1sX3NoYWRvdyA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBPY2FtbF9zaGFkb3dcbiAgICAgIGVuZFxuICAgICAgd2l0aCBtb2R1bGUgQXN0X2hlbHBlciA6PSBBc3RfaGVscGVyXG4gICAgICB3aXRoIG1vZHVsZSBBc3R0eXBlcyA6PSBBc3R0eXBlc1xuICAgICAgd2l0aCBtb2R1bGUgRG9jc3RyaW5ncyA6PSBEb2NzdHJpbmdzXG4gICAgICB3aXRoIG1vZHVsZSBJZGVudGlmaWFibGUgOj0gSWRlbnRpZmlhYmxlXG4gICAgICB3aXRoIG1vZHVsZSBMZXhlciA6PSBMZXhlclxuICAgICAgd2l0aCBtb2R1bGUgTG9jYXRpb24gOj0gTG9jYXRpb25cbiAgICAgIHdpdGggbW9kdWxlIExvbmdpZGVudCA6PSBMb25naWRlbnRcbiAgICAgIHdpdGggbW9kdWxlIFBhcnNlIDo9IFBhcnNlXG4gICAgICB3aXRoIG1vZHVsZSBQYXJzZXRyZWUgOj0gUGFyc2V0cmVlXG4gICAgICB3aXRoIG1vZHVsZSBQcHJpbnRhc3QgOj0gUHByaW50YXN0XG4gICAgICB3aXRoIG1vZHVsZSBTeW50YXhlcnIgOj0gU3ludGF4ZXJyKVxuZW5kXG5cbigqKi8qKilcblxuKCogRm9yIHRlc3RzIGFuZCBQcHhfY29yZSBjb21wYXRpYmlsaXR5IGxheWVyICopXG5tb2R1bGUgUHB4bGliX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbW1vbiA9IENvbW1vblxuICBtb2R1bGUgTmFtZSA9IE5hbWVcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgUHB4bGliXG5cbmxldCBkZWZhdWx0ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5kZWZhdWx0XCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgX18gbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IGRyb3BfZGVmYXVsdCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ueW9qc29uX2Ryb3BfZGVmYXVsdFwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAoYWx0X29wdGlvbiAocHN0cl9ldmFsIF9fIG5pbCBeOjogbmlsKSBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IGRyb3BfZGVmYXVsdF9lcXVhbCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uQHlvanNvbl9kcm9wX2RlZmF1bHQuZXF1YWxcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0X2NvbXBhcmUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLkB5b2pzb25fZHJvcF9kZWZhdWx0LmNvbXBhcmVcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0X3lvanNvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGRyb3BfaWYgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLnlvanNvbl9kcm9wX2lmXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgX18gbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IG9wYXF1ZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwieW9qc29uLm9wYXF1ZVwiIEF0dHJpYnV0ZS5Db250ZXh0LmNvcmVfdHlwZSBBc3RfcGF0dGVybi4ocHN0ciBuaWwpICgpXG47O1xuXG5sZXQgb3B0aW9uID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5vcHRpb25cIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgYWxsb3dfZXh0cmFfZmllbGRzX3RkID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5hbGxvd19leHRyYV9maWVsZHNcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LnR5cGVfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBhbGxvd19leHRyYV9maWVsZHNfY2QgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmFsbG93X2V4dHJhX2ZpZWxkc1wiXG4gICAgQXR0cmlidXRlLkNvbnRleHQuY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCB5b2pzb25fa2V5ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5rZXlcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCAoZXN0cmluZyBfXykgbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IHlvanNvbl92YXJpYW50X25hbWUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLm5hbWVcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCAoZXN0cmluZyBfXykgbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IHlvanNvbl9wb2x5bW9ycGhpY192YXJpYW50X25hbWUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLm5hbWVcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LnJ0YWdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIChlc3RyaW5nIF9fKSBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgaW52YWxpZF9hdHRyaWJ1dGUgfmxvYyBhdHRyIGRlc2NyaXB0aW9uID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgfmxvY1xuICAgIFwicHB4X3lvanNvbl9jb252OiBbQCVzXSBpcyBvbmx5IGFsbG93ZWQgb24gdHlwZSBbJXNdLlwiXG4gICAgKEF0dHJpYnV0ZS5uYW1lIGF0dHIpXG4gICAgZGVzY3JpcHRpb25cbjs7XG5cbmxldCBmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIH5sb2MgeCA9XG4gIGlmIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IGFsbG93X2V4dHJhX2ZpZWxkc19jZCB4KVxuICB0aGVuXG4gICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICB+bG9jXG4gICAgICBcInBweF95b2pzb25fY29udjogW0BAYWxsb3dfZXh0cmFfZmllbGRzXSBpcyBvbmx5IGFsbG93ZWQgb24gaW5saW5lIHJlY29yZHMuXCJcbjs7XG5cbmxldCBmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX3RkIH5sb2MgeCA9XG4gIGlmIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IGFsbG93X2V4dHJhX2ZpZWxkc190ZCB4KVxuICB0aGVuIChcbiAgICBtYXRjaCB4LnB0eXBlX2tpbmQgd2l0aFxuICAgIHwgUHR5cGVfdmFyaWFudCBjZHNcbiAgICAgIHdoZW4gTGlzdC5leGlzdHMgY2RzIH5mOihmdW4gY2QgLT5cbiAgICAgICAgbWF0Y2ggY2QucGNkX2FyZ3Mgd2l0aFxuICAgICAgICB8IFBjc3RyX3JlY29yZCBfIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgIH5sb2NcbiAgICAgICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAQEBAYWxsb3dfZXh0cmFfZmllbGRzXSBvbmx5IHdvcmtzIG9uIHJlY29yZHMuIEZvciBpbmxpbmUgXFxcbiAgICAgICAgIHJlY29yZHMsIGRvOiB0eXBlIHQgPSBBIG9mIHsgYSA6IGludCB9IFtAQGFsbG93X2V4dHJhX2ZpZWxkc10gfCBCIFtAQEBAZGVyaXZpbmcgXFxcbiAgICAgICAgIHlvanNvbl1cIlxuICAgIHwgXyAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgIH5sb2NcbiAgICAgICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAQEBAYWxsb3dfZXh0cmFfZmllbGRzXSBpcyBvbmx5IGFsbG93ZWQgb24gcmVjb3Jkcy5cIilcbjs7XG5cbm1vZHVsZSBSZWNvcmRfZmllbGRfaGFuZGxlciA9IHN0cnVjdFxuICB0eXBlIGNvbW1vbiA9IFsgYHlvanNvbl9vcHRpb24gb2YgY29yZV90eXBlIF1cblxuICBsZXQgZ2V0X2F0dHJpYnV0ZSBhdHRyIGxkIH5mID1cbiAgICBPcHRpb24ubWFwIChBdHRyaWJ1dGUuZ2V0IGF0dHIgbGQpIH5mOihmdW4geCAtPiBmIHgsIEF0dHJpYnV0ZS5uYW1lIGF0dHIpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB+bG9jIGdldHRlcnMgbGQgPVxuICAgIGxldCBjb21tb25fZ2V0dGVycyA9XG4gICAgICBbIChmdW4gbGQgLT5cbiAgICAgICAgICBtYXRjaCBBdHRyaWJ1dGUuZ2V0IG9wdGlvbiBsZCB3aXRoXG4gICAgICAgICAgfCBTb21lICgpIC0+XG4gICAgICAgICAgICAobWF0Y2ggbGQucGxkX3R5cGUgd2l0aFxuICAgICAgICAgICAgIHwgWyV0eXBlOiBbJXQ/IHR5XSBvcHRpb25dIC0+IFNvbWUgKGB5b2pzb25fb3B0aW9uIHR5LCBcIltAeW9qc29uLm9wdGlvbl1cIilcbiAgICAgICAgICAgICB8IF8gLT4gaW52YWxpZF9hdHRyaWJ1dGUgfmxvYyBvcHRpb24gXCJfIG9wdGlvblwiKVxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgXVxuICAgIGluXG4gICAgbWF0Y2ggTGlzdC5maWx0ZXJfbWFwIChnZXR0ZXJzIEAgY29tbW9uX2dldHRlcnMpIH5mOihmdW4gZiAtPiBmIGxkKSB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBbICh2LCBfKSBdIC0+IFNvbWUgdlxuICAgIHwgXyA6OiBfIDo6IF8gYXMgYXR0cmlidXRlcyAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgIH5sb2NcbiAgICAgICAgXCJUaGUgZm9sbG93aW5nIGVsZW1lbnRzIGFyZSBtdXR1YWxseSBleGNsdXNpdmU6ICVzXCJcbiAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAoTGlzdC5tYXAgYXR0cmlidXRlcyB+ZjpzbmQpKVxuICA7O1xuXG4gIG1vZHVsZSBPZl95b2pzb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBjb21tb25cbiAgICAgIHwgYGRlZmF1bHQgb2YgZXhwcmVzc2lvblxuICAgICAgXVxuXG4gICAgbGV0IGNyZWF0ZSB+bG9jIGxkID1cbiAgICAgIGNyZWF0ZSB+bG9jIFsgZ2V0X2F0dHJpYnV0ZSBkZWZhdWx0IH5mOihmdW4gZGVmYXVsdCAtPiBgZGVmYXVsdCBkZWZhdWx0KSBdIGxkXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFlvanNvbl9vZiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICBbIGNvbW1vblxuICAgICAgfCBgZHJvcF9kZWZhdWx0IG9mIFsgYG5vX2FyZyB8IGBjb21wYXJlIHwgYGVxdWFsIHwgYHlvanNvbiB8IGBmdW5jIG9mIGV4cHJlc3Npb24gXVxuICAgICAgfCBgZHJvcF9pZiBvZiBleHByZXNzaW9uXG4gICAgICB8IGBrZWVwXG4gICAgICBdXG5cbiAgICBsZXQgY3JlYXRlIH5sb2MgbGQgPVxuICAgICAgY3JlYXRlXG4gICAgICAgIH5sb2NcbiAgICAgICAgWyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPiBgZHJvcF9kZWZhdWx0IGBub19hcmdcbiAgICAgICAgICAgIHwgU29tZSBlIC0+IGBkcm9wX2RlZmF1bHQgKGBmdW5jIGUpKVxuICAgICAgICA7IGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0X2VxdWFsIH5mOihmdW4gKCkgLT4gYGRyb3BfZGVmYXVsdCBgZXF1YWwpXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHRfY29tcGFyZSB+ZjooZnVuICgpIC0+IGBkcm9wX2RlZmF1bHQgYGNvbXBhcmUpXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHRfeW9qc29uIH5mOihmdW4gKCkgLT4gYGRyb3BfZGVmYXVsdCBgeW9qc29uKVxuICAgICAgICA7IGdldF9hdHRyaWJ1dGUgZHJvcF9pZiB+ZjooZnVuIHggLT4gYGRyb3BfaWYgeClcbiAgICAgICAgXVxuICAgICAgICBsZFxuICAgICAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OmBrZWVwXG4gICAgOztcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEJhc2VcblxudHlwZSB0ID1cbiAgeyBsYWJlbCA6IHN0cmluZ1xuICA7IG5hbWVfb3ZlcnJpZGUgOiBzdHJpbmcgb3B0aW9uXG4gIH1cblxubGV0IGNyZWF0ZSB+bGFiZWwgfm5hbWVfb3ZlcnJpZGUgPSB7IGxhYmVsOyBuYW1lX292ZXJyaWRlIH1cblxubGV0IG9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIChjZCA6IFBweGxpYi5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbikgPVxuICBsZXQgbGFiZWwgPSBjZC5wY2RfbmFtZS50eHQgaW5cbiAgbGV0IG5hbWVfb3ZlcnJpZGUgPSBQcHhsaWIuQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fdmFyaWFudF9uYW1lIGNkIGluXG4gIGNyZWF0ZSB+bGFiZWwgfm5hbWVfb3ZlcnJpZGVcbjs7XG5cbmxldCBsYWJlbCB0ID0gdC5sYWJlbFxubGV0IG5hbWUgdCA9IE9wdGlvbi52YWx1ZSB0Lm5hbWVfb3ZlcnJpZGUgfmRlZmF1bHQ6dC5sYWJlbFxuIiwib3BlbiBCYXNlXG5vcGVuIFBweGxpYlxub3BlbiBBc3RfYnVpbGRlci5EZWZhdWx0XG5tb2R1bGUgQXR0cnMgPSBBdHRyc1xuXG5sZXQgKCAtLT4gKSBsaHMgcmhzID0gY2FzZSB+Z3VhcmQ6Tm9uZSB+bGhzIH5yaHNcblxuKCogU2ltcGxpZmllcyBtYXRjaCBjYXNlcywgZm9yIHJlYWRhYmlsaXR5IG9mIHRoZSBnZW5lcmF0ZWQgY29kZS4gSXQncyBub3Qgb2J2aW91cyB3ZSBjYW5cbiAgIHN0aWNrIHRoaXMgaW4gcHB4X2NvcmUsIGFzIChtYXRjaCBlMSB3aXRoIHAgLT4gZTIpIGFuZCAobGV0IHAgPSBlMSBpbiBlMikgYXJlIG5vdCB0eXBlZFxuICAgZXhhY3RseSB0aGUgc2FtZSAodHlwZSBpbmZlcmVuY2UgZ29lcyBpbiBkaWZmZXJlbnQgb3JkZXIsIG1lYW5pbmcgdHlwZSBkaXNhbWJpZ3VhdGlvblxuICAgZGlmZmVycykuICopXG5sZXQgcGV4cF9tYXRjaCB+bG9jIGV4cHIgY2FzZXMgPVxuICBtYXRjaCBjYXNlcyB3aXRoXG4gIHwgWyB7IHBjX2xoczsgcGNfZ3VhcmQgPSBOb25lOyBwY19yaHMgfSBdIC0+XG4gICAgKG1hdGNoIHBjX2xocywgZXhwciB3aXRoXG4gICAgIHwgKCB7IHBwYXRfYXR0cmlidXRlcyA9IFtdOyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dCA9IGlkZW50OyBfIH07IF8gfVxuICAgICAgICwgeyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBpZGVudCc7IF8gfTsgXyB9IClcbiAgICAgICB3aGVuIFN0cmluZy5lcXVhbCBpZGVudCBpZGVudCcgLT4gcGNfcmhzXG4gICAgIHwgXyAtPiBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBbIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OnBjX2xocyB+ZXhwciBdIHBjX3JocylcbiAgfCBfIC0+IHBleHBfbWF0Y2ggfmxvYyBleHByIGNhc2VzXG47O1xuXG5tb2R1bGUgRnVuX29yX21hdGNoID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBGdW4gb2YgZXhwcmVzc2lvblxuICAgIHwgTWF0Y2ggb2YgY2FzZSBsaXN0XG5cbiAgbGV0IGV4cHIgfmxvYyB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEZ1biBmIC0+IGZcbiAgICB8IE1hdGNoIGNhc2VzIC0+IHBleHBfZnVuY3Rpb24gfmxvYyBjYXNlc1xuICA7O1xuXG4gIGxldCB1bnJvbGwgfmxvYyBlIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRnVuIGYgLT4gZWFwcGx5IH5sb2MgZiBbIGUgXVxuICAgIHwgTWF0Y2ggY2FzZXMgLT4gcGV4cF9tYXRjaCB+bG9jIGUgY2FzZXNcbiAgOztcblxuICBsZXQgbWFwX3RtcF92YXJzIH5sb2MgdHMgPVxuICAgIGxldCB2YXJzID0gTGlzdC5tYXBpIHRzIH5mOihmdW4gaSBfIC0+IFwidlwiIF4gSW50LnRvX3N0cmluZyBpKSBpblxuICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICBMaXN0Lm1hcDJfZXhuIHZhcnMgdHMgfmY6KGZ1biB2YXIgdCAtPlxuICAgICAgICBsZXQgZXhwciA9IHVucm9sbCB+bG9jIChldmFyIH5sb2MgdmFyKSB0IGluXG4gICAgICAgIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OihwdmFyIH5sb2MgdmFyKSB+ZXhwcilcbiAgICBpblxuICAgIGJpbmRpbmdzLCBMaXN0Lm1hcCB2YXJzIH5mOihwdmFyIH5sb2MpLCBMaXN0Lm1hcCB2YXJzIH5mOihldmFyIH5sb2MpXG4gIDs7XG5lbmRcblxuKCogQSByZW5hbWluZyBpcyBhIG1hcHBpbmcgZnJvbSB0eXBlIHZhcmlhYmxlIG5hbWUgdG8gdHlwZSB2YXJpYWJsZSBuYW1lLlxuICAgSW4gZGVmaW5pdGlvbnMgc3VjaCBhczpcblxuICAgdHlwZSAnYSB0ID1cbiAgIHwgQSA6IDx0eXBlPiAtPiAnYiB0XG4gICB8IEIgb2YgJ2FcblxuICAgd2UgZ2VuZXJhdGUgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFuIHlvanNvbl9vZiBwYXJhbWV0ZXIgbmFtZWQgYWZ0ZXIgJ2EsIGJ1dCAnYSBpcyBub3QgaW5cbiAgIHNjb3BlIGluIDx0eXBlPiB3aGVuIGhhbmRsaW5nIHRoZSBjb25zdHJ1Y3RvciBBIChiZWNhdXNlIEEgaXMgYSBnYWR0IGNvbnN0cnVjdG9yKS5cbiAgIEluc3RlYWQgdGhlIHR5cGUgdmFyaWFibGVzIGluIHNjb3BlIGFyZSB0aGUgb25lcyBkZWZpbmVkIGluIHRoZSByZXR1cm4gdHlwZSBvZiBBLFxuICAgbmFtZWx5ICdiLiBUaGVyZSBjb3VsZCBiZSBsZXNzIG9yIG1vcmUgdHlwZSB2YXJpYWJsZSBpbiBjYXNlcyBzdWNoIGFzOlxuXG4gICB0eXBlIF8gbGVzcyA9IExlc3MgOiBpbnQgbGVzc1xuICAgdHlwZSBfIG1vcmUgPSBNb3JlIDogKCdhICogJ2EpIG1vcmVcblxuICAgSWYgZm9yIGluc3RhbmNlLCA8dHlwZT4gaXMgWydiICogJ2NdLCB3aGVuIHdlIGZpbmQgJ2IsIHdlIHdpbGwgbG9vayBmb3IgWydiXSBpbiB0aGVcbiAgIHJlbmFtaW5nIGFuZCBmaW5kIFsnYV0gKG9ubHkgaW4gdGhhdCBnYWR0IGJyYW5jaCwgaXQgY291bGQgYmUgc29tZXRoaW5nIGVsc2UgaW4gb3RoZXJcbiAgIGJyYW5jaGVzKSwgYXQgd2hpY2ggcG9pbnQgd2UgY2FuIGNhbGwgdGhlIHByZXZpb3VzbHkgYm91bmQgeW9qc29uX29mIHBhcmFtZXRlciBuYW1lZFxuICAgYWZ0ZXIgJ2EuXG4gICBJZiB3ZSBjYW4ndCBmaW5kIGEgcmVzdWx0aW5nIG5hbWUsIGxpa2Ugd2hlbiBsb29raW5nIHVwIFsnY10gaW4gdGhlIHJlbmFtaW5nLCB0aGVuIHdlXG4gICBhc3N1bWUgdGhlIHZhcmlhYmxlIGlzIGV4aXN0ZW50aWFsbHkgcXVhbnRpZmllZCBhbmQgdHJlYXQgaXQgYXMgW19dICh3aGljaCBpcyBvayxcbiAgIGFzc3VtaW5nIHRoZXJlIGFyZSBubyBjb25zdHJhaW50cykuICopXG5tb2R1bGUgUmVuYW1pbmcgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGlkZW50aXR5IDogdFxuICB2YWwgYWRkX3VuaXZlcnNhbGx5X2JvdW5kIDogdCAtPiBzdHJpbmcgbG9jIC0+IHRcblxuICB0eXBlIGJpbmRpbmdfa2luZCA9XG4gICAgfCBVbml2ZXJzYWxseV9ib3VuZCBvZiBzdHJpbmdcbiAgICB8IEV4aXN0ZW50aWFsbHlfYm91bmRcblxuICB2YWwgYmluZGluZ19raW5kIDogdCAtPiBzdHJpbmcgLT4gYmluZGluZ19raW5kXG4gIHZhbCBvZl9nYWR0IDogc3RyaW5nIGxpc3QgLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgZXJyb3IgPSBzdHJpbmcgTG9jLnRcbiAgdHlwZSB0ID0gKHN0cmluZywgZXJyb3IpIFJlc3VsdC50IE1hcC5NKFN0cmluZykudCBvcHRpb25cblxuICBsZXQgaWRlbnRpdHkgPSBOb25lXG5cbiAgdHlwZSBiaW5kaW5nX2tpbmQgPVxuICAgIHwgVW5pdmVyc2FsbHlfYm91bmQgb2Ygc3RyaW5nXG4gICAgfCBFeGlzdGVudGlhbGx5X2JvdW5kXG5cbiAgbGV0IGFkZF91bml2ZXJzYWxseV9ib3VuZCAodCA6IHQpIG5hbWUgOiB0ID1cbiAgICBsZXQgbmFtZSA9IG5hbWUudHh0IGluXG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbWFwIC0+IFNvbWUgKE1hcC5zZXQgfmtleTpuYW1lIH5kYXRhOihPayBuYW1lKSBtYXApXG4gIDs7XG5cbiAgbGV0IGJpbmRpbmdfa2luZCB0IHZhciA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBOb25lIC0+IFVuaXZlcnNhbGx5X2JvdW5kIHZhclxuICAgIHwgU29tZSBtYXAgLT5cbiAgICAgIChtYXRjaCBNYXAuZmluZCBtYXAgdmFyIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gRXhpc3RlbnRpYWxseV9ib3VuZFxuICAgICAgIHwgU29tZSAoT2sgdmFsdWUpIC0+IFVuaXZlcnNhbGx5X2JvdW5kIHZhbHVlXG4gICAgICAgfCBTb21lIChFcnJvciB7IGxvYzsgdHh0IH0pIC0+IExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiJXNcIiB0eHQpXG4gIDs7XG5cbiAgKCogUmV0dXJuIGEgbWFwIHRyYW5zbGF0aW5nIHR5cGUgdmFyaWFibGVzIGFwcGVhcmluZyBpbiB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQURUXG4gICAgIGNvbnN0cnVjdG9yIHRvIHRoZWlyIG5hbWUgaW4gdGhlIHR5cGUgcGFyYW1ldGVyIGxpc3QuXG5cbiAgICAgRm9yIGluc3RhbmNlOlxuXG4gICAgIHtbXG4gICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gWCA6ICd4ICogJ3kgLT4gKCd4LCAneSkgdFxuICAgICBdfVxuXG4gICAgIHdpbGwgcHJvZHVjZTpcblxuICAgICB7W1xuICAgICAgIFwieFwiIC0+IE9rIFwiYVwiXG4gICAgICAgICAgICAgICAgXCJ5XCIgLT4gT2sgXCJiXCJcbiAgICAgXX1cblxuICAgICBJZiBhIHZhcmlhYmxlIGFwcGVhcnMgdHdpY2UgaW4gdGhlIHJldHVybiB0eXBlIGl0IHdpbGwgbWFwIHRvIFtFcnJvciBfXS4gSWYgYVxuICAgICB2YXJpYWJsZSBjYW5ub3QgYmUgbWFwcGVkIHRvIGEgcGFyYW1ldGVyIG9mIHRoZSB0eXBlIGRlY2xhcmF0aW9uLCBpdCB3aWxsIG1hcCB0b1xuICAgICBbRXJyb3JdIChmb3IgaW5zdGFuY2UgW0EgOiAnYSAtPiAnYSBsaXN0IHRdKS5cblxuICAgICBJdCByZXR1cm5zIE5vbmUgb24gdXNlciBlcnJvciwgdG8gbGV0IHRoZSB0eXBlciBnaXZlIHRoZSBlcnJvciBtZXNzYWdlICopXG4gIGxldCBvZl9nYWR0ID1cbiAgICAoKiBBZGQgYWxsIHR5cGUgdmFyaWFibGVzIG9mIGEgdHlwZSB0byBhIG1hcC4gKilcbiAgICBsZXQgYWRkX3R5cGV2YXJzID1cbiAgICAgIG9iamVjdFxuICAgICAgICBpbmhlcml0IFsoc3RyaW5nLCBlcnJvcikgUmVzdWx0LnQgTWFwLk0oU3RyaW5nKS50XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgICAgIG1ldGhvZCEgY29yZV90eXBlIHR5IG1hcCA9XG4gICAgICAgICAgbWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFB0eXBfdmFyIHZhciAtPlxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgeyBsb2MgPSB0eS5wdHlwX2xvY1xuICAgICAgICAgICAgICA7IHR4dCA9XG4gICAgICAgICAgICAgICAgICBcInBweF95b2pzb25fY29udjogdmFyaWFibGUgaXMgbm90IGEgcGFyYW1ldGVyIG9mIHRoZSB0eXBlIGNvbnN0cnVjdG9yXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIE1hcC5zZXQgbWFwIH5rZXk6dmFyIH5kYXRhOihFcnJvciBlcnJvcilcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIHR5IG1hcFxuICAgICAgZW5kXG4gICAgaW5cbiAgICBsZXQgYXV4IG1hcCB0cF9uYW1lIHRwX2luX3JldHVybl90eXBlID1cbiAgICAgIG1hdGNoIHRwX2luX3JldHVybl90eXBlLnB0eXBfZGVzYyB3aXRoXG4gICAgICB8IFB0eXBfdmFyIHZhciAtPlxuICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgaWYgTWFwLm1lbSBtYXAgdmFyXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbG9jID0gdHBfaW5fcmV0dXJuX3R5cGUucHR5cF9sb2MgaW5cbiAgICAgICAgICAgIEVycm9yIHsgbG9jOyB0eHQgPSBcInBweF95b2pzb25fY29udjogZHVwbGljYXRlIHZhcmlhYmxlXCIgfSlcbiAgICAgICAgICBlbHNlIE9rIHRwX25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgTWFwLnNldCBtYXAgfmtleTp2YXIgfmRhdGFcbiAgICAgIHwgXyAtPiBhZGRfdHlwZXZhcnMjY29yZV90eXBlIHRwX2luX3JldHVybl90eXBlIG1hcFxuICAgIGluXG4gICAgZnVuIHRwcyBjZCAtPlxuICAgICAgbWF0Y2ggY2QucGNkX3JlcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHR5IC0+XG4gICAgICAgIChtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgfCBQdHlwX2NvbnN0ciAoXywgcGFyYW1zKSAtPlxuICAgICAgICAgICBpZiBMaXN0Lmxlbmd0aCBwYXJhbXMgPD4gTGlzdC5sZW5ndGggdHBzXG4gICAgICAgICAgIHRoZW4gTm9uZVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgKFN0ZGxpYi5MaXN0TGFiZWxzLmZvbGRfbGVmdDJcbiAgICAgICAgICAgICAgICAgIHRwc1xuICAgICAgICAgICAgICAgICAgcGFyYW1zXG4gICAgICAgICAgICAgICAgICB+aW5pdDooTWFwLmVtcHR5IChtb2R1bGUgU3RyaW5nKSlcbiAgICAgICAgICAgICAgICAgIH5mOmF1eClcbiAgICAgICAgIHwgXyAtPiBOb25lKVxuICA7O1xuZW5kXG5cbigqIFV0aWxpdHkgZnVuY3Rpb25zICopXG5cbmxldCByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyA9XG4gIGxldCBtYXAgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwIGFzIHN1cGVyXG5cbiAgICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgPVxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFB0eXBfdmFyIF8gLT4gUHR5cF9hbnlcbiAgICAgICAgfCB0IC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIHRcbiAgICBlbmRcbiAgaW5cbiAgbWFwI2NvcmVfdHlwZVxuOztcblxubGV0IHJpZ2lkX3R5cGVfdmFyIH50eXBlX25hbWUgeCA9XG4gIGxldCBwcmVmaXggPSBcInJpZ2lkX1wiIGluXG4gIGlmIFN0cmluZy5lcXVhbCB4IHR5cGVfbmFtZSB8fCBTdHJpbmcuaXNfcHJlZml4IHggfnByZWZpeFxuICB0aGVuIHByZWZpeCBeIHggXiBcIl9vZl90eXBlX1wiIF4gdHlwZV9uYW1lXG4gIGVsc2UgeFxuOztcblxubGV0IG1ha2VfdHlwZV9yaWdpZCB+dHlwZV9uYW1lID1cbiAgbGV0IG1hcCA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXAgYXMgc3VwZXJcblxuICAgICAgbWV0aG9kISBjb3JlX3R5cGUgdHkgPVxuICAgICAgICBsZXQgcHR5cF9kZXNjID1cbiAgICAgICAgICBtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF92YXIgcyAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKExvY2F0ZWQubGlkZW50IH5sb2M6dHkucHR5cF9sb2MgKHJpZ2lkX3R5cGVfdmFyIH50eXBlX25hbWUgcyksIFtdKVxuICAgICAgICAgIHwgZGVzYyAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyBkZXNjXG4gICAgICAgIGluXG4gICAgICAgIHsgdHkgd2l0aCBwdHlwX2Rlc2MgfVxuICAgIGVuZFxuICBpblxuICBtYXAjY29yZV90eXBlXG47O1xuXG4oKiBHZW5lcmF0ZXMgdGhlIHF1YW50aWZpZWQgdHlwZSBbICEgJ2EgLi4gJ3ogLiAobWFrZV9tb25vX3R5cGUgdCAoJ2EgLi4gJ3opKSBdIG9yXG4gICBbdHlwZSBhIC4uIHouIG1ha2VfbW9ub190eXBlIHQgKGEgLi4geildIHdoZW4gW3VzZV9yaWdpZF92YXJpYWJsZXNdIGlzIHRydWUuXG4gICBBbm5vdGF0aW9uIGFyZSBuZWVkZWQgZm9yIG5vbiByZWd1bGFyIHJlY3Vyc2l2ZSBkYXRhdHlwZXMgYW5kIGdhZHQgd2hlbiB0aGUgcmV0dXJuIHR5cGVcbiAgIG9mIGNvbnN0cnVjdG9ycyBhcmUgY29uc3RyYWluZWQuIFVuZm9ydHVuYXRlbHksIHB1dHRpbmcgcmlnaWQgdmFyaWFibGVzIGV2ZXJ5d2hlcmUgZG9lc1xuICAgbm90IHdvcmsgYmVjYXVzZSBvZiBjZXJ0YWlucyB0eXBlcyB3aXRoIGNvbnN0cmFpbnRzLiBXZSB0aHVzIG9ubHkgdXNlIHJpZ2lkIHZhcmlhYmxlc1xuICAgZm9yIHN1bSB0eXBlcywgd2hpY2ggaW5jbHVkZXMgYWxsIEdBRFRzLiAqKVxuXG5sZXQgdHZhcnNfb2ZfY29yZV90eXBlIDogY29yZV90eXBlIC0+IHN0cmluZyBsaXN0ID1cbiAgbGV0IHR2YXJzID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgW3N0cmluZyBsaXN0XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgICBtZXRob2QhIGNvcmVfdHlwZSB4IGFjYyA9XG4gICAgICAgIG1hdGNoIHgucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQdHlwX3ZhciB4IC0+IGlmIExpc3QubWVtIGFjYyB4IH5lcXVhbDpTdHJpbmcuZXF1YWwgdGhlbiBhY2MgZWxzZSB4IDo6IGFjY1xuICAgICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIHggYWNjXG4gICAgZW5kXG4gIGluXG4gIGZ1biB0eXAgLT4gTGlzdC5yZXYgKHR2YXJzI2NvcmVfdHlwZSB0eXAgW10pXG47O1xuXG5sZXQgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZ1xuICAgICAgKCogcGxhY2luZyBhIHN1aXRhYmx5IHBvbHltb3JwaGljIG9yIHJpZ2lkIHR5cGUgY29uc3RyYWludCBvbiB0aGUgcGF0dGVybiBvciBib2R5ICopXG4gICAgICAobG9jIDogTG9jYXRpb24udClcbiAgICAgICh0ZCA6IHR5cGVfZGVjbGFyYXRpb24pXG4gICAgICAodHlwIDogY29yZV90eXBlKVxuICAgICAgfih0cHMgOiBzdHJpbmcgbG9jIGxpc3QpXG4gICAgICB+KGZ1bmNfbmFtZSA6IHN0cmluZylcbiAgICAgIChib2R5IDogZXhwcmVzc2lvbilcbiAgPVxuICBsZXQgdmFycyA9IHR2YXJzX29mX2NvcmVfdHlwZSB0eXAgaW5cbiAgbGV0IGhhc192YXJzID1cbiAgICBtYXRjaCB2YXJzIHdpdGhcbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBfIDo6IF8gLT4gdHJ1ZVxuICBpblxuICBsZXQgcGF0ID1cbiAgICBsZXQgcGF0ID0gcHZhciB+bG9jIGZ1bmNfbmFtZSBpblxuICAgIGlmIG5vdCBoYXNfdmFyc1xuICAgIHRoZW4gcGF0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgdmFycyA9IExpc3QubWFwIH5mOihmdW4gdHh0IC0+IHsgdHh0OyBsb2MgfSkgdmFycyBpblxuICAgICAgcHBhdF9jb25zdHJhaW50IH5sb2MgcGF0IChwdHlwX3BvbHkgfmxvYyB2YXJzIHR5cCkpXG4gIGluXG4gIGxldCBib2R5ID1cbiAgICBsZXQgdXNlX3JpZ2lkX3ZhcmlhYmxlcyA9XG4gICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICAgIHwgUHR5cGVfdmFyaWFudCBfIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgaWYgdXNlX3JpZ2lkX3ZhcmlhYmxlc1xuICAgIHRoZW4gKFxuICAgICAgbGV0IHR5cGVfbmFtZSA9IHRkLnB0eXBlX25hbWUudHh0IGluXG4gICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAgdHBzXG4gICAgICAgIH5mOihmdW4gdHAgYm9keSAtPlxuICAgICAgICAgIHBleHBfbmV3dHlwZSB+bG9jIHsgdHh0ID0gcmlnaWRfdHlwZV92YXIgfnR5cGVfbmFtZSB0cC50eHQ7IGxvYyA9IHRwLmxvYyB9IGJvZHkpXG4gICAgICAgIH5pbml0OihwZXhwX2NvbnN0cmFpbnQgfmxvYyBib2R5IChtYWtlX3R5cGVfcmlnaWQgfnR5cGVfbmFtZSB0eXApKSlcbiAgICBlbHNlIGlmIGhhc192YXJzXG4gICAgdGhlbiBib2R5XG4gICAgZWxzZSBwZXhwX2NvbnN0cmFpbnQgfmxvYyBib2R5IHR5cFxuICBpblxuICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdCB+ZXhwcjpib2R5XG47O1xuXG5sZXQgcmVhbGx5X3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgPVxuICAob2JqZWN0XG4gICAgaW5oZXJpdCB0eXBlX2lzX3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGN0eXBlID1cbiAgICAgIG1hdGNoIGN0eXBlIHdpdGhcbiAgICAgIHwgXyB3aGVuIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IH5tYXJrX2FzX3NlZW46ZmFsc2UgQXR0cnMub3BhcXVlIGN0eXBlKSAtPlxuICAgICAgICAoKVxuICAgICAgfCBbJXR5cGU6IFsldD8gX10geW9qc29uX29wYXF1ZV0gLT4gKClcbiAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgY3R5cGVcbiAgZW5kKVxuICAjZ29cbiAgICAoKVxuOztcblxuKCogR2VuZXJhdGVzIHRoZSBzaWduYXR1cmUgZm9yIHR5cGUgY29udmVyc2lvbiB0byBZb2pzb25zICopXG5tb2R1bGUgU2lnX2dlbmVyYXRlX3lvanNvbl9vZiA9IHN0cnVjdFxuICBsZXQgdHlwZV9vZl95b2pzb25fb2YgfmxvYyB0ID0gWyV0eXBlOiBbJXQgdF0gLT4gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb24uU2FmZS50XVxuICBsZXQgbWtfdHlwZSB0ZCA9IGNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIH5mOnR5cGVfb2ZfeW9qc29uX29mXG5cbiAgbGV0IG1rX3NpZyB+bG9jOl8gfnBhdGg6XyAoX3JmLCB0ZHMpID1cbiAgICBMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgbGV0IGxvYyA9IHRkLnB0eXBlX2xvYyBpblxuICAgICAgcHNpZ192YWx1ZVxuICAgICAgICB+bG9jXG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIH5uYW1lOihMb2NhdGVkLm1hcCAoKCBeICkgXCJ5b2pzb25fb2ZfXCIpIHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgIH50eXBlXzoobWtfdHlwZSB0ZClcbiAgICAgICAgICAgfnByaW06W10pKVxuICA7O1xuZW5kXG5cbigqIEdlbmVyYXRlcyB0aGUgc2lnbmF0dXJlIGZvciB0eXBlIGNvbnZlcnNpb24gZnJvbSBZb2pzb25zICopXG5tb2R1bGUgU2lnX2dlbmVyYXRlX29mX3lvanNvbiA9IHN0cnVjdFxuICBsZXQgdHlwZV9vZl9vZl95b2pzb24gfmxvYyB0ID0gWyV0eXBlOiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbi5TYWZlLnQgLT4gWyV0IHRdXVxuICBsZXQgbWtfdHlwZSB0ZCA9IGNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIH5mOnR5cGVfb2Zfb2ZfeW9qc29uXG5cbiAgbGV0IHNpZ19vZl90ZCB3aXRoX3BvbHkgdGQgPVxuICAgIGxldCBvZl95b2pzb25fdHlwZSA9IG1rX3R5cGUgdGQgaW5cbiAgICBsZXQgbG9jID0geyB0ZC5wdHlwZV9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBsZXQgb2ZfeW9qc29uX2l0ZW0gPVxuICAgICAgcHNpZ192YWx1ZVxuICAgICAgICB+bG9jXG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIH5uYW1lOihMb2NhdGVkLm1hcCAoZnVuIHMgLT4gcyBeIFwiX29mX3lvanNvblwiKSB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICB+dHlwZV86b2ZfeW9qc29uX3R5cGVcbiAgICAgICAgICAgfnByaW06W10pXG4gICAgaW5cbiAgICBtYXRjaCB3aXRoX3BvbHksIGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgdGQgfnNpZ186dHJ1ZSB3aXRoXG4gICAgfCB0cnVlLCBgU3VyZWx5X25vdCAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgIH5sb2NcbiAgICAgICAgXCJTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLnNpZ19vZl90ZDogeW9qc29uX3BvbHkgYW5ub3RhdGlvbiBidXQgdHlwZSBpcyBzdXJlbHkgbm90IFxcXG4gICAgICAgICBhIHBvbHltb3JwaGljIHZhcmlhbnRcIlxuICAgIHwgZmFsc2UsIChgU3VyZWx5X25vdCB8IGBNYXliZSkgLT4gWyBvZl95b2pzb25faXRlbSBdXG4gICAgfCAodHJ1ZSB8IGZhbHNlKSwgYERlZmluaXRlbHkgfCB0cnVlLCBgTWF5YmUgLT5cbiAgICAgIFsgb2ZfeW9qc29uX2l0ZW1cbiAgICAgIDsgcHNpZ192YWx1ZVxuICAgICAgICAgIH5sb2NcbiAgICAgICAgICAodmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgfm5hbWU6KExvY2F0ZWQubWFwIChmdW4gcyAtPiBcIl9fXCIgXiBzIF4gXCJfb2ZfeW9qc29uX19cIikgdGQucHR5cGVfbmFtZSlcbiAgICAgICAgICAgICB+dHlwZV86b2ZfeW9qc29uX3R5cGVcbiAgICAgICAgICAgICB+cHJpbTpbXSlcbiAgICAgIF1cbiAgOztcblxuICBsZXQgbWtfc2lnIH5wb2x5IH5sb2M6XyB+cGF0aDpfIChfcmYsIHRkcykgPSBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOihzaWdfb2ZfdGQgcG9seSlcbmVuZFxuXG5tb2R1bGUgU3RyX2dlbmVyYXRlX3lvanNvbl9vZiA9IHN0cnVjdFxuICAoKiBIYW5kbGluZyBvZiByZWNvcmQgZGVmYXVsdHMgKilcblxuICBsZXQgeW9qc29uX29mX3R5cGVfY29uc3RyIH5sb2MgaWQgYXJncyA9XG4gICAgdHlwZV9jb25zdHJfY29udiB+bG9jIGlkIH5mOihmdW4gcyAtPiBcInlvanNvbl9vZl9cIiBeIHMpIGFyZ3NcbiAgOztcblxuICAoKiBDb252ZXJzaW9uIG9mIHR5cGVzICopXG4gIGxldCByZWMgeW9qc29uX29mX3R5cGVcbiAgICAgICAgICAgIH4odHlwZXZhcl9oYW5kbGluZyA6IFsgYG9rIG9mIFJlbmFtaW5nLnQgfCBgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgXSlcbiAgICAgICAgICAgIHR5cFxuICAgIDogRnVuX29yX21hdGNoLnRcbiAgICA9XG4gICAgbGV0IGxvYyA9IHsgdHlwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbWF0Y2ggdHlwIHdpdGhcbiAgICB8IF8gd2hlbiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBBdHRycy5vcGFxdWUgdHlwKSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9vcGFxdWVdXG4gICAgfCBbJXR5cGU6IF9dIC0+IEZ1biBbJWV4cHIgZnVuIF8gLT4gYFN0cmluZyBcIl9cIl1cbiAgICB8IFsldHlwZTogWyV0PyBfXSB5b2pzb25fb3BhcXVlXSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9vcGFxdWVdXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdHVwbGUgdHA7IF8gfSAtPlxuICAgICAgTWF0Y2ggWyB5b2pzb25fb2ZfdHVwbGUgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHApIF1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXIgcGFybTsgXyB9IC0+XG4gICAgICAobWF0Y2ggdHlwZXZhcl9oYW5kbGluZyB3aXRoXG4gICAgICAgfCBgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgLT5cbiAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIFwiVHlwZSB2YXJpYWJsZXMgbm90IGFsbG93ZWQgaW4gWyUleW9qc29uX29mOiBdLiBQbGVhc2UgdXNlIGxvY2FsbHkgYWJzdHJhY3QgXFxcbiAgICAgICAgICAgIHR5cGVzIGluc3RlYWQuXCJcbiAgICAgICB8IGBvayByZW5hbWluZyAtPlxuICAgICAgICAgKG1hdGNoIFJlbmFtaW5nLmJpbmRpbmdfa2luZCByZW5hbWluZyBwYXJtIHdpdGhcbiAgICAgICAgICB8IFVuaXZlcnNhbGx5X2JvdW5kIHBhcm0gLT4gRnVuIChldmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybSkpXG4gICAgICAgICAgfCBFeGlzdGVudGlhbGx5X2JvdW5kIC0+IHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIFsldHlwZTogX10pKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIGFyZ3MpOyBfIH0gLT5cbiAgICAgIEZ1blxuICAgICAgICAoeW9qc29uX29mX3R5cGVfY29uc3RyXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgaWRcbiAgICAgICAgICAgKExpc3QubWFwIGFyZ3MgfmY6KGZ1biB0cCAtPlxuICAgICAgICAgICAgICBGdW5fb3JfbWF0Y2guZXhwciB+bG9jICh5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZyB0cCkpKSlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hcnJvdyAoXywgXywgXyk7IF8gfSAtPlxuICAgICAgRnVuXG4gICAgICAgIFslZXhwclxuICAgICAgICAgIGZ1biBfZiAtPlxuICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi55b2pzb25fb2ZfZnVuIFBweF95b2pzb25fY29udl9saWIuaWdub3JlXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZHMsIF8sIF8pOyBfIH0gLT5cbiAgICAgIHlvanNvbl9vZl92YXJpYW50IH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHJvd19maWVsZHMpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAocGFybXMsIHBvbHlfdHApOyBfIH0gLT5cbiAgICAgIHlvanNvbl9vZl9wb2x5IH50eXBldmFyX2hhbmRsaW5nIHBhcm1zIHBvbHlfdHBcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9vYmplY3QgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jbGFzcyAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2FsaWFzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcGFja2FnZSBfOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9leHRlbnNpb24gXzsgXyB9IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIlR5cGUgdW5zdXBwb3J0ZWQgZm9yIHBweCBbeW9qc29uX29mXSBjb252ZXJzaW9uXCJcblxuICAoKiBDb252ZXJzaW9uIG9mIHR1cGxlcyAqKVxuICBhbmQgeW9qc29uX29mX3R1cGxlIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHRwcykgPVxuICAgIGxldCBmcHMgPSBMaXN0Lm1hcCB+ZjooZnVuIHRwIC0+IHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIHRwKSB0cHMgaW5cbiAgICBsZXQgYmluZGluZ3MsIHB2YXJzLCBldmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyBmcHMgaW5cbiAgICBsZXQgaW5fZXhwciA9IFslZXhwciBgTGlzdCBbJWUgZWxpc3QgfmxvYyBldmFyc11dIGluXG4gICAgbGV0IGV4cHIgPSBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBpbl9leHByIGluXG4gICAgcHBhdF90dXBsZSB+bG9jIHB2YXJzIC0tPiBleHByXG5cbiAgKCogQ29udmVyc2lvbiBvZiB2YXJpYW50IHR5cGVzICopXG4gIGFuZCB5b2pzb25fb2ZfdmFyaWFudFxuICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAoKGxvYywgcm93X2ZpZWxkcykgOiBMb2NhdGlvbi50ICogcm93X2ZpZWxkIGxpc3QpXG4gICAgOiBGdW5fb3JfbWF0Y2gudFxuICAgID1cbiAgICBsZXQgaXRlbSByb3cgPVxuICAgICAgbGV0IG5hbWVfb3ZlcnJpZGUgPSBBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9wb2x5bW9ycGhpY192YXJpYW50X25hbWUgcm93IGluXG4gICAgICBtYXRjaCByb3cucHJmX2Rlc2Mgd2l0aFxuICAgICAgfCBSdGFnIChjbnN0ciwgdHJ1ZSwgW10pIC0+XG4gICAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgICBwcGF0X3ZhcmlhbnQgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsKSBOb25lXG4gICAgICAgIC0tPiBbJWV4cHIgYExpc3QgWyBgU3RyaW5nIFslZSBlc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKV0gXV1cbiAgICAgIHwgUnRhZyAoY25zdHIsIGZhbHNlLCBbIHRwIF0pIC0+XG4gICAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgICBsZXQgYXJncyA9XG4gICAgICAgICAgbWF0Y2ggdHAucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFB0eXBfdHVwbGUgdHBzIC0+IHRwc1xuICAgICAgICAgIHwgXyAtPiBbIHRwIF1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNuc3RyX2V4cHIgPSBbJWV4cHIgYFN0cmluZyBbJWUgZXN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCldXSBpblxuICAgICAgICBsZXQgeW9qc29uX29mX2FyZ3MgPSBMaXN0Lm1hcCB+ZjooeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcpIGFyZ3MgaW5cbiAgICAgICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyB5b2pzb25fb2ZfYXJncyBpblxuICAgICAgICBsZXQgcGF0dCA9XG4gICAgICAgICAgbWF0Y2ggcGF0dHMgd2l0aFxuICAgICAgICAgIHwgWyBwYXR0IF0gLT4gcGF0dFxuICAgICAgICAgIHwgXyAtPiBwcGF0X3R1cGxlIH5sb2MgcGF0dHNcbiAgICAgICAgaW5cbiAgICAgICAgcHBhdF92YXJpYW50IChMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwpIH5sb2MgKFNvbWUgcGF0dClcbiAgICAgICAgLS0+IHBleHBfbGV0XG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgICAgIGJpbmRpbmdzXG4gICAgICAgICAgICAgIFslZXhwciBgTGlzdCBbJWUgZWxpc3QgfmxvYyAoY25zdHJfZXhwciA6OiB2YXJzKV1dXG4gICAgICB8IFJpbmhlcml0IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBbXSk7IF8gfSAtPlxuICAgICAgICBwcGF0X2FsaWFzIH5sb2MgKHBwYXRfdHlwZSB+bG9jIGlkKSAoTG9jLm1ha2UgXCJ2XCIgfmxvYylcbiAgICAgICAgLS0+IHlvanNvbl9vZl90eXBlX2NvbnN0ciB+bG9jIGlkIFsgWyVleHByIHZdIF1cbiAgICAgIHwgUnRhZyAoXywgdHJ1ZSwgWyBfIF0pIHwgUnRhZyAoXywgXywgXyA6OiBfIDo6IF8pIC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidW5zdXBwb3J0ZWQ6IHlvanNvbl9vZl92YXJpYW50L1J0YWcvJlwiXG4gICAgICB8IFJpbmhlcml0ICh7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgXyA6OiBfKTsgXyB9IGFzIHR5cCkgLT5cbiAgICAgICAgbGV0IGNhbGwgPSBGdW5fb3JfbWF0Y2guZXhwciB+bG9jICh5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZyB0eXApIGluXG4gICAgICAgIHBwYXRfYWxpYXMgfmxvYyAocHBhdF90eXBlIH5sb2MgaWQpIChMb2MubWFrZSBcInZcIiB+bG9jKSAtLT4gWyVleHByIFslZSBjYWxsXSB2XVxuICAgICAgfCBSaW5oZXJpdCBfIC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidW5zdXBwb3J0ZWQ6IHlvanNvbl9vZl92YXJpYW50L1Jpbmhlcml0L25vbi1pZFwiXG4gICAgICAoKiBpbXBvc3NpYmxlPyopXG4gICAgICB8IFJ0YWcgKF8sIGZhbHNlLCBbXSkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgaW5cbiAgICBNYXRjaCAoTGlzdC5tYXAgfmY6aXRlbSByb3dfZmllbGRzKVxuXG4gICgqIFBvbHltb3JwaGljIHJlY29yZCBmaWVsZHMgKilcbiAgYW5kIHlvanNvbl9vZl9wb2x5IH50eXBldmFyX2hhbmRsaW5nIHBhcm1zIHRwID1cbiAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICBtYXRjaCB0eXBldmFyX2hhbmRsaW5nIHdpdGhcbiAgICB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciAtPlxuICAgICAgKCogU2hvdWxkIGJlIGltcG9zc2libGUgYmVjYXVzZSBbeW9qc29uX29mX3BvbHldIGlzIG9ubHkgY2FsbGVkIG9uIHBvbHltb3JwaGljIHJlY29yZFxuICAgICAgICAgZmllbGRzIGFuZCByZWNvcmQgdHlwZSBkZWZpbml0aW9ucyBjYW4ndCBvY2N1ciBpbiB0eXBlIGV4cHJlc3Npb25zLiAqKVxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwb2x5bW9ycGhpYyB0eXBlIGluIGEgdHlwZSBleHByZXNzaW9uXCJcbiAgICB8IGBvayByZW5hbWluZyAtPlxuICAgICAgbGV0IGJpbmRpbmdzID1cbiAgICAgICAgbGV0IG1rX2JpbmRpbmcgcGFybSA9XG4gICAgICAgICAgdmFsdWVfYmluZGluZ1xuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgfnBhdDoocHZhciB+bG9jIChcIl9vZl9cIiBeIHBhcm0udHh0KSlcbiAgICAgICAgICAgIH5leHByOlslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9vcGFxdWVdXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIH5mOm1rX2JpbmRpbmcgcGFybXNcbiAgICAgIGluXG4gICAgICBsZXQgcmVuYW1pbmcgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdCBwYXJtcyB+aW5pdDpyZW5hbWluZyB+ZjpSZW5hbWluZy5hZGRfdW5pdmVyc2FsbHlfYm91bmRcbiAgICAgIGluXG4gICAgICAobWF0Y2ggeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHAgd2l0aFxuICAgICAgIHwgRnVuIGZ1bl9leHByIC0+IEZ1biAocGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgZnVuX2V4cHIpXG4gICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT5cbiAgICAgICAgIE1hdGNoXG4gICAgICAgICAgIFsgWyVwYXQ/IGFyZ11cbiAgICAgICAgICAgICAtLT4gcGV4cF9sZXRcbiAgICAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgICAgICAgICAgYmluZGluZ3NcbiAgICAgICAgICAgICAgICAgICAocGV4cF9tYXRjaCB+bG9jIFslZXhwciBhcmddIG1hdGNoaW5ncylcbiAgICAgICAgICAgXSlcbiAgOztcblxuICAoKiBDb252ZXJzaW9uIG9mIHJlY29yZCB0eXBlcyAqKVxuXG4gIGxldCBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lID1cbiAgICBsZXQgcCA9IExvYy5tYWtlIChMb25naWRlbnQuTGlkZW50IG5hbWUpIH5sb2MsIHB2YXIgfmxvYyAoXCJ2X1wiIF4gbmFtZSkgaW5cbiAgICBwYXR0IEAgWyBwIF1cbiAgOztcblxuICB0eXBlIGlzX2VtcHR5X2V4cHIgPVxuICAgIHwgSW5zcGVjdF92YWx1ZSBvZiAobG9jYXRpb24gLT4gZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uKVxuICAgIHwgSW5zcGVjdF95b2pzb24gb2YgKGNudl9leHByOmV4cHJlc3Npb24gLT4gbG9jYXRpb24gLT4gZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uKVxuXG4gIGxldCB5b2pzb25fb2ZfcmVjb3JkX2ZpZWxkIH5yZW5hbWluZyBwYXR0IGV4cHIgbmFtZSB0cCA/eW9qc29uX29mIGlzX2VtcHR5X2V4cHIga2V5ID1cbiAgICBsZXQgbG9jID0geyB0cC5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIGxldCBwYXR0ID0gbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSBpblxuICAgIGxldCBjbnZfZXhwciA9XG4gICAgICBtYXRjaCB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cCB3aXRoXG4gICAgICB8IEZ1biBleHAgLT4gZXhwXG4gICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBbJWV4cHIgZnVuIGVsIC0+IFslZSBwZXhwX21hdGNoIH5sb2MgWyVleHByIGVsXSBtYXRjaGluZ3NdXVxuICAgIGluXG4gICAgbGV0IGNudl9leHByID1cbiAgICAgIG1hdGNoIHlvanNvbl9vZiB3aXRoXG4gICAgICB8IE5vbmUgLT4gY252X2V4cHJcbiAgICAgIHwgU29tZSB5b2pzb25fb2YgLT4gWyVleHByIFslZSB5b2pzb25fb2ZdIFslZSBjbnZfZXhwcl1dXG4gICAgaW5cbiAgICBsZXQgZXhwciA9XG4gICAgICBsZXQgdl9uYW1lID0gXCJ2X1wiIF4gbmFtZSBpblxuICAgICAgWyVleHByXG4gICAgICAgIGxldCBibmRzID1cbiAgICAgICAgICBbJWVcbiAgICAgICAgICAgIG1hdGNoIGlzX2VtcHR5X2V4cHIgd2l0aFxuICAgICAgICAgICAgfCBJbnNwZWN0X3ZhbHVlIGlzX2VtcHR5X2V4cHIgLT5cbiAgICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICAgaWYgWyVlIGlzX2VtcHR5X2V4cHIgbG9jIChldmFyIH5sb2Mgdl9uYW1lKV1cbiAgICAgICAgICAgICAgICB0aGVuIGJuZHNcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIGxldCBhcmcgPSBbJWUgY252X2V4cHJdIFslZSBldmFyIH5sb2Mgdl9uYW1lXSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGJuZCA9IFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnIGluXG4gICAgICAgICAgICAgICAgICBibmQgOjogYm5kcyldXG4gICAgICAgICAgICB8IEluc3BlY3RfeW9qc29uIGlzX2VtcHR5X2V4cHIgLT5cbiAgICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gWyVlIGV2YXIgfmxvYyB2X25hbWVdIGluXG4gICAgICAgICAgICAgICAgaWYgWyVlIGlzX2VtcHR5X2V4cHIgfmNudl9leHByIGxvYyBbJWV4cHIgYXJnXV1cbiAgICAgICAgICAgICAgICB0aGVuIGJuZHNcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIGxldCBibmQgPSBbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZyBpblxuICAgICAgICAgICAgICAgICAgYm5kIDo6IGJuZHMpXV1cbiAgICAgICAgaW5cbiAgICAgICAgWyVlIGV4cHJdXVxuICAgIGluXG4gICAgcGF0dCwgZXhwclxuICA7O1xuXG4gIGxldCBkaXNhbGxvd190eXBlX3ZhcmlhYmxlc19hbmRfcmVjdXJzaXZlX29jY3VycmVuY2VzIH50eXBlc19iZWluZ19kZWZpbmVkIH5sb2MgfndoeSB0cCA9XG4gICAgbGV0IGRpc2FsbG93X3ZhcmlhYmxlcyA9XG4gICAgICBsZXQgaXRlciA9XG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLml0ZXIgYXMgc3VwZXJcblxuICAgICAgICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgPVxuICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgIHwgUHR5cF92YXIgdiAtPlxuICAgICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgXCJbQHlvanNvbl9kcm9wX2RlZmF1bHQuJXNdIHdhcyB1c2VkLCBidXQgdGhlIHR5cGUgb2YgdGhlIGZpZWxkIGNvbnRhaW5zIFxcXG4gICAgICAgICAgICAgICAgIGEgdHlwZSB2YXJpYWJsZTogJyVzLlxcblxcXG4gICAgICAgICAgICAgICAgIENvbXBhcmlzb24gaXMgbm90IGF2YWlhYmxlIGZvciB0eXBlIHZhcmlhYmxlcy5cXG5cXFxuICAgICAgICAgICAgICAgICBDb25zaWRlciB1c2luZyBbQHlvanNvbl9kcm9wX2lmIF9dIG9yIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25dIFxcXG4gICAgICAgICAgICAgICAgIGluc3RlYWQuXCJcbiAgICAgICAgICAgICAgICAobWF0Y2ggd2h5IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgY29tcGFyZSAtPiBcImNvbXBhcmVcIlxuICAgICAgICAgICAgICAgICB8IGBlcXVhbCAtPiBcImVxdWFsXCIpXG4gICAgICAgICAgICAgICAgdlxuICAgICAgICAgICAgfCB0IC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIHRcbiAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgaXRlciNjb3JlX3R5cGVcbiAgICBpblxuICAgIGxldCBkaXNhbGxvd19yZWN1cnNpdmVfb2NjdXJyZW5jZXMgPVxuICAgICAgbWF0Y2ggdHlwZXNfYmVpbmdfZGVmaW5lZCB3aXRoXG4gICAgICB8IGBOb25yZWN1cnNpdmUgLT4gZnVuIF8gLT4gKClcbiAgICAgIHwgYFJlY3Vyc2l2ZSB0eXBlc19iZWluZ19kZWZpbmVkIC0+XG4gICAgICAgIGxldCBpdGVyID1cbiAgICAgICAgICBvYmplY3RcbiAgICAgICAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLml0ZXIgYXMgc3VwZXJcblxuICAgICAgICAgICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKHsgbG9jID0gXzsgdHh0ID0gTGlkZW50IHMgfSwgXykgYXMgdCAtPlxuICAgICAgICAgICAgICAgIGlmIFNldC5tZW0gdHlwZXNfYmVpbmdfZGVmaW5lZCBzXG4gICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICAgICAgXCJbQHlvanNvbl9kcm9wX2RlZmF1bHQuJXNdIHdhcyB1c2VkLCBidXQgdGhlIHR5cGUgb2YgdGhlIGZpZWxkIFxcXG4gICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhIHR5cGUgZGVmaW5lZCBpbiB0aGUgY3VycmVudCByZWN1cnNpdmUgYmxvY2s6ICVzLlxcblxcXG4gICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQuXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIHVzaW5nIFtAeW9qc29uX2Ryb3BfaWYgX10gb3IgW0B5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvbl0gXFxcbiAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQuXCJcbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHdoeSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IGBjb21wYXJlIC0+IFwiY29tcGFyZVwiXG4gICAgICAgICAgICAgICAgICAgICB8IGBlcXVhbCAtPiBcImVxdWFsXCIpXG4gICAgICAgICAgICAgICAgICAgIHM7XG4gICAgICAgICAgICAgICAgc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgICAgICAgICAgICB8IHQgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgICAgICAgIGVuZFxuICAgICAgICBpblxuICAgICAgICBpdGVyI2NvcmVfdHlwZVxuICAgIGluXG4gICAgZGlzYWxsb3dfdmFyaWFibGVzIHRwO1xuICAgIGRpc2FsbG93X3JlY3Vyc2l2ZV9vY2N1cnJlbmNlcyB0cFxuICA7O1xuXG4gIGxldCB5b2pzb25fb2ZfZGVmYXVsdF9maWVsZFxuICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICBob3dcbiAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgIHBhdHRcbiAgICAgICAgZXhwclxuICAgICAgICBuYW1lXG4gICAgICAgIHRwXG4gICAgICAgID95b2pzb25fb2ZcbiAgICAgICAgZGVmYXVsdFxuICAgICAgICBrZXlcbiAgICA9XG4gICAgbGV0IGlzX2VtcHR5ID1cbiAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICB8IGB5b2pzb24gLT5cbiAgICAgICAgSW5zcGVjdF95b2pzb25cbiAgICAgICAgICAoZnVuIH5jbnZfZXhwciBsb2MgeW9qc29uX2V4cHIgLT5cbiAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIucG9seV9lcXVhbCAoWyVlIGNudl9leHByXSBbJWUgZGVmYXVsdF0pIFslZSB5b2pzb25fZXhwcl1dKVxuICAgICAgfCAoYG5vX2FyZyB8IGBmdW5jIF8gfCBgY29tcGFyZSB8IGBlcXVhbCkgYXMgaG93IC0+XG4gICAgICAgIGxldCBlcXVhbGl0eV9mIGxvYyA9XG4gICAgICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgICAgICB8IGBub19hcmcgLT5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLnBvbHlfZXF1YWwgW0BvY2FtbC5wcHdhcm5pbmdcbiAgICAgICAgICAgICAgICBcIltAeW9qc29uX2Ryb3BfZGVmYXVsdF0gaXMgZGVwcmVjYXRlZDogXFxcbiAgICAgICAgICAgICAgICAgcGxlYXNlIHVzZSBvbmUgb2Y6XFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQgZl0gYW5kIGdpdmUgYW4gXFxcbiAgICAgICAgICAgICAgICAgZXhwbGljaXQgZXF1YWxpdHkgZnVuY3Rpb24gKFtmID0gXFxcbiAgICAgICAgICAgICAgICAgUG9seS4oPSldIGNvcnJlc3BvbmRzIHRvIHRoZSBvbGQgXFxcbiAgICAgICAgICAgICAgICAgYmVoYXZpb3IpXFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQuY29tcGFyZV0gaWYgdGhlIFxcXG4gICAgICAgICAgICAgICAgIHR5cGUgc3VwcG9ydHMgWyVjb21wYXJlXVxcblxcXG4gICAgICAgICAgICAgICAgIC0gW0B5b2pzb25fZHJvcF9kZWZhdWx0LmVxdWFsXSBpZiB0aGUgXFxcbiAgICAgICAgICAgICAgICAgdHlwZSBzdXBwb3J0cyBbJWVxdWFsXVxcblxcXG4gICAgICAgICAgICAgICAgIC0gW0B5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvbl0gaWYgeW91IFxcXG4gICAgICAgICAgICAgICAgIHdhbnQgdG8gY29tcGFyZSB0aGUgeW9qc29uIFxcXG4gICAgICAgICAgICAgICAgIHJlcHJlc2VudGF0aW9uc1xcblwiXV1cbiAgICAgICAgICB8IGBmdW5jIGYgLT4gZlxuICAgICAgICAgIHwgYGNvbXBhcmUgLT5cbiAgICAgICAgICAgIGRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZWN1cnNpdmVfb2NjdXJyZW5jZXNcbiAgICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICAgfndoeTpgY29tcGFyZVxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIHRwO1xuICAgICAgICAgICAgWyVleHByIFslY29tcGFyZS5lcXVhbDogWyV0IHRwXV1dXG4gICAgICAgICAgfCBgZXF1YWwgLT5cbiAgICAgICAgICAgIGRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZWN1cnNpdmVfb2NjdXJyZW5jZXNcbiAgICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICAgfndoeTpgZXF1YWxcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICB0cDtcbiAgICAgICAgICAgIFslZXhwciBbJWVxdWFsOiBbJXQgdHBdXV1cbiAgICAgICAgaW5cbiAgICAgICAgSW5zcGVjdF92YWx1ZSAoZnVuIGxvYyBleHByIC0+IFslZXhwciBbJWUgZXF1YWxpdHlfZiBsb2NdIFslZSBkZWZhdWx0XSBbJWUgZXhwcl1dKVxuICAgIGluXG4gICAgeW9qc29uX29mX3JlY29yZF9maWVsZCB+cmVuYW1pbmcgcGF0dCBleHByIG5hbWUgdHAgP3lvanNvbl9vZiBpc19lbXB0eSBrZXlcbiAgOztcblxuICBsZXQgeW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3QgfnR5cGVzX2JlaW5nX2RlZmluZWQgfnJlbmFtaW5nIGxvYyBmbGRzIH53cmFwX2V4cHIgPVxuICAgIGxldCBjb2xsICgocGF0dCA6IChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0KSwgZXhwcikgbGQgPVxuICAgICAgbGV0IG5hbWUgPSBsZC5wbGRfbmFtZS50eHQgaW5cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6bGQucGxkX25hbWUudHh0IChBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9rZXkgbGQpXG4gICAgICBpblxuICAgICAgbGV0IGxvYyA9IHsgbGQucGxkX25hbWUubG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICBtYXRjaCBBdHRycy5SZWNvcmRfZmllbGRfaGFuZGxlci5Zb2pzb25fb2YuY3JlYXRlIH5sb2MgbGQgd2l0aFxuICAgICAgfCBgeW9qc29uX29wdGlvbiB0cCAtPlxuICAgICAgICBsZXQgcGF0dCA9IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgaW5cbiAgICAgICAgbGV0IHZuYW1lID0gWyVleHByIHZdIGluXG4gICAgICAgIGxldCBjbnZfZXhwciA9XG4gICAgICAgICAgRnVuX29yX21hdGNoLnVucm9sbFxuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgdm5hbWVcbiAgICAgICAgICAgICh5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgbGV0IGJuZHMgPVxuICAgICAgICAgICAgICBtYXRjaCBbJWUgZXZhciB+bG9jIChcInZfXCIgXiBuYW1lKV0gd2l0aFxuICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmUgLT4gYm5kc1xuICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgdiAtPlxuICAgICAgICAgICAgICAgIGxldCBhcmcgPSBbJWUgY252X2V4cHJdIGluXG4gICAgICAgICAgICAgICAgbGV0IGJuZCA9IFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnIGluXG4gICAgICAgICAgICAgICAgYm5kIDo6IGJuZHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBbJWUgZXhwcl1dXG4gICAgICAgIGluXG4gICAgICAgIHBhdHQsIGV4cHJcbiAgICAgIHwgYGRyb3BfZGVmYXVsdCBob3cgLT5cbiAgICAgICAgbGV0IHRwID0gbGQucGxkX3R5cGUgaW5cbiAgICAgICAgKG1hdGNoIEF0dHJpYnV0ZS5nZXQgQXR0cnMuZGVmYXVsdCBsZCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJubyBkZWZhdWx0IHRvIGRyb3BcIlxuICAgICAgICAgfCBTb21lIGRlZmF1bHQgLT5cbiAgICAgICAgICAgeW9qc29uX29mX2RlZmF1bHRfZmllbGRcbiAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgIGhvd1xuICAgICAgICAgICAgIH5yZW5hbWluZ1xuICAgICAgICAgICAgIHBhdHRcbiAgICAgICAgICAgICBleHByXG4gICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgIHRwXG4gICAgICAgICAgICAgZGVmYXVsdFxuICAgICAgICAgICAgIGtleSlcbiAgICAgIHwgYGRyb3BfaWYgdGVzdCAtPlxuICAgICAgICBsZXQgdHAgPSBsZC5wbGRfdHlwZSBpblxuICAgICAgICB5b2pzb25fb2ZfcmVjb3JkX2ZpZWxkXG4gICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgcGF0dFxuICAgICAgICAgIGV4cHJcbiAgICAgICAgICBuYW1lXG4gICAgICAgICAgdHBcbiAgICAgICAgICAoSW5zcGVjdF92YWx1ZSAoZnVuIGxvYyBleHByIC0+IFslZXhwciBbJWUgdGVzdF0gWyVlIGV4cHJdXSkpXG4gICAgICAgICAga2V5XG4gICAgICB8IGBrZWVwIGFzIHRlc3QgLT5cbiAgICAgICAgbGV0IHRwID0gbGQucGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBhdHQgPSBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lIGluXG4gICAgICAgIGxldCB2bmFtZSA9IGV2YXIgfmxvYyAoXCJ2X1wiIF4gbmFtZSkgaW5cbiAgICAgICAgbGV0IGNudl9leHByID1cbiAgICAgICAgICBGdW5fb3JfbWF0Y2gudW5yb2xsXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB2bmFtZVxuICAgICAgICAgICAgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kcyA9XG4gICAgICAgICAgbWF0Y2ggdGVzdCB3aXRoXG4gICAgICAgICAgfCBga2VlcCAtPlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIGxldCBhcmcgPSBbJWUgY252X2V4cHJdIGluXG4gICAgICAgICAgICAgIChbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZykgOjogYm5kc11cbiAgICAgICAgICB8IGBvbWl0X25pbCAtPlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIG1hdGNoIFslZSBjbnZfZXhwcl0gd2l0aFxuICAgICAgICAgICAgICB8IGBOdWxsIC0+IGJuZHNcbiAgICAgICAgICAgICAgfCBhcmcgLT4gKFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnKSA6OiBibmRzXVxuICAgICAgICBpblxuICAgICAgICAoIHBhdHRcbiAgICAgICAgLCBbJWV4cHJcbiAgICAgICAgICBsZXQgYm5kcyA9IFslZSBibmRzXSBpblxuICAgICAgICAgIFslZSBleHByXV0gKVxuICAgIGluXG4gICAgbGV0IGluaXRfZXhwciA9IHdyYXBfZXhwciBbJWV4cHIgYm5kc10gaW5cbiAgICBsZXQgcGF0dCwgZXhwciA9IExpc3QuZm9sZF9sZWZ0IH5mOmNvbGwgfmluaXQ6KFtdLCBpbml0X2V4cHIpIGZsZHMgaW5cbiAgICAoIHBwYXRfcmVjb3JkIH5sb2MgcGF0dCBDbG9zZWRcbiAgICAsIFslZXhwclxuICAgICAgbGV0IGJuZHMgOiAoc3RyaW5nICogUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb24uU2FmZS50KSBsaXN0ID0gW10gaW5cbiAgICAgIFslZSBleHByXV0gKVxuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2Ygc3VtIHR5cGVzICopXG5cbiAgbGV0IGJyYW5jaF9zdW0gfnR5cGVzX2JlaW5nX2RlZmluZWQgcmVuYW1pbmcgfmxvYyBjb25zdHJfbGlkIGNvbnN0cl9zdHIgYXJncyA9XG4gICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgfCBQY3N0cl9yZWNvcmQgbGRzIC0+XG4gICAgICBsZXQgY25zdHJfZXhwciA9IFslZXhwciBgU3RyaW5nIFslZSBjb25zdHJfc3RyXV0gaW5cbiAgICAgIGxldCBwYXR0LCBleHByID1cbiAgICAgICAgeW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3RcbiAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgIH5yZW5hbWluZ1xuICAgICAgICAgIGxvY1xuICAgICAgICAgIGxkc1xuICAgICAgICAgIH53cmFwX2V4cHI6KGZ1biBleHByIC0+IFslZXhwciBgTGlzdCBbIFslZSBjbnN0cl9leHByXTsgYEFzc29jIFslZSBleHByXSBdXSlcbiAgICAgIGluXG4gICAgICBwcGF0X2NvbnN0cnVjdCB+bG9jIGNvbnN0cl9saWQgKFNvbWUgcGF0dCkgLS0+IGV4cHJcbiAgICB8IFBjc3RyX3R1cGxlIHBjZF9hcmdzIC0+XG4gICAgICAobWF0Y2ggcGNkX2FyZ3Mgd2l0aFxuICAgICAgIHwgW10gLT5cbiAgICAgICAgIHBwYXRfY29uc3RydWN0IH5sb2MgY29uc3RyX2xpZCBOb25lIC0tPiBbJWV4cHIgYExpc3QgWyBgU3RyaW5nIFslZSBjb25zdHJfc3RyXSBdXVxuICAgICAgIHwgYXJncyAtPlxuICAgICAgICAgbGV0IHlvanNvbl9vZl9hcmdzID1cbiAgICAgICAgICAgTGlzdC5tYXAgfmY6KHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpKSBhcmdzXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IGNuc3RyX2V4cHIgPSBbJWV4cHIgYFN0cmluZyBbJWUgY29uc3RyX3N0cl1dIGluXG4gICAgICAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIHlvanNvbl9vZl9hcmdzIGluXG4gICAgICAgICBsZXQgcGF0dCA9XG4gICAgICAgICAgIG1hdGNoIHBhdHRzIHdpdGhcbiAgICAgICAgICAgfCBbIHBhdHQgXSAtPiBwYXR0XG4gICAgICAgICAgIHwgXyAtPiBwcGF0X3R1cGxlIH5sb2MgcGF0dHNcbiAgICAgICAgIGluXG4gICAgICAgICBwcGF0X2NvbnN0cnVjdCB+bG9jIGNvbnN0cl9saWQgKFNvbWUgcGF0dClcbiAgICAgICAgIC0tPiBwZXhwX2xldFxuICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgICAgICBiaW5kaW5nc1xuICAgICAgICAgICAgICAgWyVleHByIGBMaXN0IFslZSBlbGlzdCB+bG9jIChjbnN0cl9leHByIDo6IHZhcnMpXV0pXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl9zdW0gfnR5cGVzX2JlaW5nX2RlZmluZWQgdHBzIGNkcyA9XG4gICAgRnVuX29yX21hdGNoLk1hdGNoXG4gICAgICAoTGlzdC5tYXAgY2RzIH5mOihmdW4gY2QgLT5cbiAgICAgICAgIGxldCByZW5hbWluZyA9IFJlbmFtaW5nLm9mX2dhZHQgdHBzIGNkIGluXG4gICAgICAgICBsZXQgY29uc3RyX2xpZCA9IExvY2F0ZWQubWFwIGxpZGVudCBjZC5wY2RfbmFtZSBpblxuICAgICAgICAgbGV0IGNvbnN0cl9uYW1lID1cbiAgICAgICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGNkIGluXG4gICAgICAgICAgIExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsIHw+IGVzdHJpbmcgfmxvYzpjZC5wY2RfbmFtZS5sb2NcbiAgICAgICAgIGluXG4gICAgICAgICBicmFuY2hfc3VtXG4gICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgIHJlbmFtaW5nXG4gICAgICAgICAgIH5sb2M6Y2QucGNkX2xvY1xuICAgICAgICAgICBjb25zdHJfbGlkXG4gICAgICAgICAgIGNvbnN0cl9uYW1lXG4gICAgICAgICAgIGNkLnBjZF9hcmdzKSlcbiAgOztcblxuICAoKiBFbXB0eSB0eXBlICopXG4gIGxldCB5b2pzb25fb2ZfbmlsIGxvYyA9IEZ1bl9vcl9tYXRjaC5GdW4gWyVleHByIGZ1biBfdiAtPiBhc3NlcnQgZmFsc2VdXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmcm9tIHR5cGUgZGVmaW5pdGlvbnMgKilcblxuICBsZXQgeW9qc29uX29mX3RkIH50eXBlc19iZWluZ19kZWZpbmVkIHRkID1cbiAgICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gICAgbGV0IHRwcyA9IExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+ZjpnZXRfdHlwZV9wYXJhbV9uYW1lIGluXG4gICAgbGV0IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gdHlwZV9uYW1lOyBsb2MgPSBfIH07IHB0eXBlX2xvYyA9IGxvYzsgXyB9ID0gdGQgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgYm9keSA9XG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgY2RzIC0+XG4gICAgICAgICAgeW9qc29uX29mX3N1bSB+dHlwZXNfYmVpbmdfZGVmaW5lZCAoTGlzdC5tYXAgdHBzIH5mOihmdW4geCAtPiB4LnR4dCkpIGNkc1xuICAgICAgICB8IFB0eXBlX3JlY29yZCBsZHMgLT5cbiAgICAgICAgICBsZXQgcmVuYW1pbmcgPSBSZW5hbWluZy5pZGVudGl0eSBpblxuICAgICAgICAgIGxldCBwYXR0LCBleHByID1cbiAgICAgICAgICAgIHlvanNvbl9vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0XG4gICAgICAgICAgICAgIH5yZW5hbWluZ1xuICAgICAgICAgICAgICBsb2NcbiAgICAgICAgICAgICAgbGRzXG4gICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgIH53cmFwX2V4cHI6KGZ1biBleHByIC0+IFslZXhwciBgQXNzb2MgWyVlIGV4cHJdXSlcbiAgICAgICAgICBpblxuICAgICAgICAgIE1hdGNoIFsgcGF0dCAtLT4gZXhwciBdXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPlxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwicHB4X3lvanNvbl9jb252OiBvcGVuIHR5cGVzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+XG4gICAgICAgICAgKG1hdGNoIHRkLnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IHlvanNvbl9vZl9uaWwgbG9jXG4gICAgICAgICAgIHwgU29tZSB0eSAtPiB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIFJlbmFtaW5nLmlkZW50aXR5KSB0eSlcbiAgICAgIGluXG4gICAgICBsZXQgaXNfcHJpdmF0ZV9hbGlhcyA9XG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQsIHRkLnB0eXBlX21hbmlmZXN0LCB0ZC5wdHlwZV9wcml2YXRlIHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCwgU29tZSBfLCBQcml2YXRlIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICBpblxuICAgICAgaWYgaXNfcHJpdmF0ZV9hbGlhc1xuICAgICAgdGhlbiAoXG4gICAgICAgICgqIFJlcGxhY2UgYWxsIHR5cGUgdmFyaWFibGUgYnkgXyB0byBhdm9pZCBnZW5lcmFsaXphdGlvbiBwcm9ibGVtcyAqKVxuICAgICAgICBsZXQgdHlfc3JjID1cbiAgICAgICAgICBjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB8PiByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3Jlc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbWFuaWZlc3QgPVxuICAgICAgICAgIG1hdGNoIHRkLnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgbWFuaWZlc3QgLT4gbWFuaWZlc3RcbiAgICAgICAgICB8IE5vbmUgLT4gTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ5b2pzb25fb2ZfdGQvbm8tbWFuaWZlc3RcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgdHlfZHN0ID0gcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IGNvZXJjaW9uID0gWyVleHByICh2IDogWyV0IHR5X3NyY10gOj4gWyV0IHR5X2RzdF0pXSBpblxuICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIGZ1biB2IC0+IFslZSBlYXBwbHkgfmxvYyBmdW5fZXhwciBbIGNvZXJjaW9uIF1dXVxuICAgICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBbJWV4cHIgZnVuIHYgLT4gWyVlIHBleHBfbWF0Y2ggfmxvYyBjb2VyY2lvbiBtYXRjaGluZ3NdXSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgKCogUHJldmVudCB2aW9sYXRpb24gb2YgdmFsdWUgcmVzdHJpY3Rpb24gYW5kIHByb2JsZW1zIHdpdGggcmVjdXJzaXZlIHR5cGVzIGJ5XG4gICAgICAgICAgIGV0YS1leHBhbmRpbmcgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKilcbiAgICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIGZ1biB2IC0+IFslZSBlYXBwbHkgfmxvYyBmdW5fZXhwciBbIFslZXhwciB2XSBdXV1cbiAgICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gcGV4cF9mdW5jdGlvbiB+bG9jIG1hdGNoaW5ncylcbiAgICBpblxuICAgIGxldCB0eXAgPSBTaWdfZ2VuZXJhdGVfeW9qc29uX29mLm1rX3R5cGUgdGQgaW5cbiAgICBsZXQgZnVuY19uYW1lID0gXCJ5b2pzb25fb2ZfXCIgXiB0eXBlX25hbWUgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgcGF0dHMgPSBMaXN0Lm1hcCB0cHMgfmY6KGZ1biBpZCAtPiBwdmFyIH5sb2MgKFwiX29mX1wiIF4gaWQudHh0KSkgaW5cbiAgICAgIGxldCByZWNfZmxhZyA9XG4gICAgICAgIG1hdGNoIHR5cGVzX2JlaW5nX2RlZmluZWQgd2l0aFxuICAgICAgICB8IGBSZWN1cnNpdmUgXyAtPiBSZWN1cnNpdmVcbiAgICAgICAgfCBgTm9ucmVjdXJzaXZlIC0+IE5vbnJlY3Vyc2l2ZVxuICAgICAgaW5cbiAgICAgIGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyB+cmVjX2ZsYWcgKGVhYnN0cmFjdCB+bG9jIHBhdHRzIGJvZHkpXG4gICAgaW5cbiAgICBbIGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmcgbG9jIHRkIHR5cCB+dHBzIH5mdW5jX25hbWUgYm9keSBdXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl90ZHMgfmxvYyB+cGF0aDpfIChyZWNfZmxhZywgdGRzKSA9XG4gICAgbGV0IHJlY19mbGFnID0gcmVhbGx5X3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgaW5cbiAgICBsZXQgdHlwZXNfYmVpbmdfZGVmaW5lZCA9XG4gICAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBgTm9ucmVjdXJzaXZlXG4gICAgICB8IFJlY3Vyc2l2ZSAtPlxuICAgICAgICBgUmVjdXJzaXZlXG4gICAgICAgICAgKFNldC5vZl9saXN0IChtb2R1bGUgU3RyaW5nKSAoTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT4gdGQucHR5cGVfbmFtZS50eHQpKSlcbiAgICBpblxuICAgIGxldCBiaW5kaW5ncyA9IExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KHlvanNvbl9vZl90ZCB+dHlwZXNfYmVpbmdfZGVmaW5lZCkgaW5cbiAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyByZWNfZmxhZyBiaW5kaW5nc1xuICA7O1xuZW5kXG5cbm1vZHVsZSBTdHJfZ2VuZXJhdGVfeW9qc29uX2ZpZWxkcyA9IHN0cnVjdFxuICBsZXQgeW9qc29uX2ZpZWxkc19vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0IGxvYyBmbGRzID1cbiAgICBsZXQgY29sbCBsZCA9XG4gICAgICBsZXQga2V5ID1cbiAgICAgICAgT3B0aW9uLnZhbHVlIH5kZWZhdWx0OmxkLnBsZF9uYW1lLnR4dCAoQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fa2V5IGxkKVxuICAgICAgaW5cbiAgICAgIGxldCBsb2MgPSBsZC5wbGRfbmFtZS5sb2MgaW5cbiAgICAgIGVzdHJpbmcgfmxvYyBrZXlcbiAgICBpblxuICAgIGVsaXN0IH5sb2MgKExpc3QubWFwIH5mOmNvbGwgZmxkcylcbiAgOztcblxuICBsZXQgeW9qc29uX2ZpZWxkc19vZl90ZCB0ZCA9XG4gICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgIGxldCB0cHMgPSBMaXN0Lm1hcCB0ZC5wdHlwZV9wYXJhbXMgfmY6Z2V0X3R5cGVfcGFyYW1fbmFtZSBpblxuICAgIGxldCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IHR5cGVfbmFtZTsgbG9jID0gXyB9OyBwdHlwZV9sb2MgPSBsb2M7IF8gfSA9IHRkIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICB8IFB0eXBlX3JlY29yZCBsZHMgLT4geW9qc29uX2ZpZWxkc19vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0IGxvYyBsZHNcbiAgICAgIHwgUHR5cGVfdmFyaWFudCBfIHwgUHR5cGVfb3BlbiB8IFB0eXBlX2Fic3RyYWN0IC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwicHB4X3lvanNvbl9jb252OiB5b2pzb25fZmllbGRzIG9ubHkgd29ya3Mgb24gcmVjb3Jkc1wiXG4gICAgaW5cbiAgICBsZXQgdHlwID0gWyV0eXBlOiBzdHJpbmcgbGlzdF0gaW5cbiAgICBsZXQgZnVuY19uYW1lID0gXCJ5b2pzb25fZmllbGRzX29mX1wiIF4gdHlwZV9uYW1lIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbGV0IHBhdHRzID0gTGlzdC5tYXAgdHBzIH5mOihmdW4gaWQgLT4gcHZhciB+bG9jIChcIl9maWVsZHNfb2ZfXCIgXiBpZC50eHQpKSBpblxuICAgICAgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSAoZWFic3RyYWN0IH5sb2MgcGF0dHMgYm9keSlcbiAgICBpblxuICAgIGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmcgbG9jIHRkIHR5cCB+dHBzIH5mdW5jX25hbWUgYm9keVxuICA7O1xuXG4gIGxldCB5b2pzb25fZmllbGRzX29mX3RkcyB+bG9jIH5wYXRoOl8gKF8sIHRkcykgPVxuICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZSAoTGlzdC5tYXAgdGRzIH5mOnlvanNvbl9maWVsZHNfb2ZfdGQpXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0cl9nZW5lcmF0ZV9vZl95b2pzb24gPSBzdHJ1Y3RcbiAgKCogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIHBvbHltb3JwaGljIHZhcmlhbnRzICopXG5cbiAgKCogSGFuZGxlIGJhY2t0cmFja2luZyB3aGVuIHZhcmlhbnRzIGRvIG5vdCBtYXRjaCAqKVxuICBsZXQgaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2ggbG9jIGV4cHIgPVxuICAgIFsgWyVwYXQ/IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaF0gLS0+IGV4cHIgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdG8gZ2VuZXJhdGUgYSBtYXRjaCBmb3IgdGhlIGxhc3RcbiAgICAgY2FzZSBvZiBtYXRjaGluZyBhIHZhcmlhbnQgKilcbiAgbGV0IGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG1hdGNoZXMgPVxuICAgIG1hdGNoIG1hdGNoX2xhc3QsIG1hdGNoZXMgd2l0aFxuICAgIHwgdHJ1ZSwgWyB7IHBjX2xocyA9IF87IHBjX2d1YXJkID0gTm9uZTsgcGNfcmhzID0gZXhwciB9IF1cbiAgICB8IF8sIFsgeyBwY19saHMgPSBbJXBhdD8gX107IHBjX2d1YXJkID0gTm9uZTsgcGNfcmhzID0gZXhwciB9IF0gLT4gZXhwclxuICAgIHwgXyAtPiBwZXhwX21hdGNoIH5sb2MgWyVleHByIGF0b21dIG1hdGNoZXNcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBtYWxmb3JtZWQgWW9qc29ucyAqKVxuICBsZXQgbWtfdmFyaWFudF9vdGhlcl9tYXRjaGVzIGxvYyB+cmV2X2VscyBjYWxsID1cbiAgICBsZXQgY29sbF9zdHJ1Y3RzIGFjYyAobG9jLCBsYWJlbCkgPVxuICAgICAgKHBzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXG4gICAgICAgLS0+XG4gICAgICAgbWF0Y2ggY2FsbCB3aXRoXG4gICAgICAgfCBgcHRhZ19ub19hcmdzIC0+XG4gICAgICAgICBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5wdGFnX25vX2FyZ3MgX3RwX2xvYyBfeW9qc29uXVxuICAgICAgIHwgYHB0YWdfdGFrZXNfYXJncyAtPlxuICAgICAgICAgWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIF90cF9sb2MgX3lvanNvbl0pXG4gICAgICA6OiBhY2NcbiAgICBpblxuICAgIGxldCBleGNfbm9fdmFyaWFudF9tYXRjaCA9XG4gICAgICBbJXBhdD8gX10gLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5vX3ZhcmlhbnRfbWF0Y2ggKCldXG4gICAgaW5cbiAgICBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsX3N0cnVjdHMgfmluaXQ6WyBleGNfbm9fdmFyaWFudF9tYXRjaCBdIHJldl9lbHNcbiAgOztcblxuICAoKiBTcGxpdCB0aGUgcm93IGZpZWxkcyBvZiBhIHZhcmlhbnQgdHlwZSBpbnRvIGxpc3RzIG9mIGF0b21pYyB2YXJpYW50cyxcbiAgICAgc3RydWN0dXJlZCB2YXJpYW50cywgYXRvbWljIHZhcmlhbnRzICsgaW5jbHVkZWQgdmFyaWFudCB0eXBlcyxcbiAgICAgYW5kIHN0cnVjdHVyZWQgdmFyaWFudHMgKyBpbmNsdWRlZCB2YXJpYW50IHR5cGVzLiAqKVxuICBsZXQgc3BsaXRfcm93X2ZpZWxkIH5sb2MgKGF0b21zLCBzdHJ1Y3RzLCBhaW5ocywgc2luaHMpIHJvd19maWVsZCA9XG4gICAgbGV0IG5hbWVfb3ZlcnJpZGUgPSBBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9wb2x5bW9ycGhpY192YXJpYW50X25hbWUgcm93X2ZpZWxkIGluXG4gICAgbWF0Y2ggcm93X2ZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICB8IFJ0YWcgKGNuc3RyLCB0cnVlLCBbXSkgLT5cbiAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgbGV0IHRwbCA9IGxvYywgbGFiZWwgaW5cbiAgICAgIHRwbCA6OiBhdG9tcywgc3RydWN0cywgYEEgdHBsIDo6IGFpbmhzLCBzaW5oc1xuICAgIHwgUnRhZyAoY25zdHIsIGZhbHNlLCBbIHRwIF0pIC0+XG4gICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUuY3JlYXRlIH5sYWJlbDpjbnN0ci50eHQgfm5hbWVfb3ZlcnJpZGUgaW5cbiAgICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgICAgYXRvbXMsIChsb2MsIGxhYmVsKSA6OiBzdHJ1Y3RzLCBhaW5ocywgYFMgKGxvYywgbGFiZWwsIHRwLCByb3dfZmllbGQpIDo6IHNpbmhzXG4gICAgfCBSaW5oZXJpdCBpbmggLT5cbiAgICAgIGxldCBpaW5oID0gYEkgaW5oIGluXG4gICAgICBhdG9tcywgc3RydWN0cywgaWluaCA6OiBhaW5ocywgaWluaCA6OiBzaW5oc1xuICAgIHwgUnRhZyAoXywgdHJ1ZSwgWyBfIF0pIHwgUnRhZyAoXywgXywgXyA6OiBfIDo6IF8pIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInNwbGl0X3Jvd19maWVsZC8mXCJcbiAgICB8IFJ0YWcgKF8sIGZhbHNlLCBbXSkgLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHR5cGVfY29uc3RyX29mX3lvanNvbiA/KGludGVybmFsID0gZmFsc2UpIH5sb2MgaWQgYXJncyA9XG4gICAgdHlwZV9jb25zdHJfY29udiBpZCBhcmdzIH5sb2MgfmY6KGZ1biBzIC0+XG4gICAgICBsZXQgcyA9IHMgXiBcIl9vZl95b2pzb25cIiBpblxuICAgICAgaWYgaW50ZXJuYWwgdGhlbiBcIl9fXCIgXiBzIF4gXCJfX1wiIGVsc2UgcylcbiAgOztcblxuICAoKiBDb252ZXJzaW9uIG9mIHR5cGVzICopXG4gIGxldCByZWMgdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgP2Z1bGxfdHlwZSA/KGludGVybmFsID0gZmFsc2UpIHR5cFxuICAgIDogRnVuX29yX21hdGNoLnRcbiAgICA9XG4gICAgbGV0IGxvYyA9IHsgdHlwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbWF0Y2ggdHlwIHdpdGhcbiAgICB8IF8gd2hlbiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBBdHRycy5vcGFxdWUgdHlwKSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252Lm9wYXF1ZV9vZl95b2pzb25dXG4gICAgfCBbJXR5cGU6IFsldD8gX10geW9qc29uX29wYXF1ZV0gfCBbJXR5cGU6IF9dIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYub3BhcXVlX29mX3lvanNvbl1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF90dXBsZSB0cDsgXyB9IC0+XG4gICAgICBNYXRjaCAodHVwbGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHRwKSlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXIgcGFybTsgXyB9IC0+XG4gICAgICAobWF0Y2ggdHlwZXZhcl9oYW5kbGluZyB3aXRoXG4gICAgICAgfCBgb2sgLT4gRnVuIChldmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybSkpXG4gICAgICAgfCBgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgLT5cbiAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIFwiVHlwZSB2YXJpYWJsZXMgbm90IGFsbG93ZWQgaW4gWyUlb2ZfeW9qc29uOiBdLiBQbGVhc2UgdXNlIGxvY2FsbHkgYWJzdHJhY3QgXFxcbiAgICAgICAgICAgIHR5cGVzIGluc3RlYWQuXCIpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgYXJncyk7IF8gfSAtPlxuICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICBMaXN0Lm1hcCBhcmdzIH5mOihmdW4gYXJnIC0+XG4gICAgICAgICAgRnVuX29yX21hdGNoLmV4cHIgfmxvYyAodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgYXJnKSlcbiAgICAgIGluXG4gICAgICBGdW4gKHR5cGVfY29uc3RyX29mX3lvanNvbiB+bG9jIH5pbnRlcm5hbCBpZCBhcmdzKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2Fycm93IChfLCBfLCBfKTsgXyB9IC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYuZnVuX29mX3lvanNvbl1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXJpYW50IChyb3dfZmllbGRzLCBfLCBfKTsgXyB9IC0+XG4gICAgICB2YXJpYW50X29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyA/ZnVsbF90eXBlIChsb2MsIHJvd19maWVsZHMpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAocGFybXMsIHBvbHlfdHApOyBfIH0gLT5cbiAgICAgIHBvbHlfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIHBhcm1zIHBvbHlfdHBcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9vYmplY3QgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jbGFzcyAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2FsaWFzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcGFja2FnZSBfOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9leHRlbnNpb24gXzsgXyB9IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIlR5cGUgdW5zdXBwb3J0ZWQgZm9yIHBweCBbb2ZfeW9qc29uXSBjb252ZXJzaW9uXCJcblxuICAoKiBDb252ZXJzaW9uIG9mIHR1cGxlcyAqKVxuICBhbmQgdHVwbGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHRwcykgPVxuICAgIGxldCBmcHMgPSBMaXN0Lm1hcCB+ZjoodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcpIHRwcyBpblxuICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgZnBzIGluXG4gICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBmcHMgaW5cbiAgICBbIFslcGF0PyBgTGlzdCBbJXAgcGxpc3QgfmxvYyBwYXR0c11dXG4gICAgICAtLT4gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgKHBleHBfdHVwbGUgfmxvYyB2YXJzKVxuICAgIDsgWyVwYXQ/IHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWRcbiAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgWyVlIGVpbnQgfmxvYyBuXVxuICAgICAgICAgIHlvanNvbl1cbiAgICBdXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgbWF0Y2hpbmcgaW5jbHVkZWQgdmFyaWFudCB0eXBlcyAqKVxuICBhbmQgaGFuZGxlX3ZhcmlhbnRfaW5oIH50eXBldmFyX2hhbmRsaW5nIGZ1bGxfdHlwZSB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzIGluaCA9XG4gICAgbGV0IGxvYyA9IGluaC5wdHlwX2xvYyBpblxuICAgIGxldCBmdW5jX2V4cHIgPSB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+aW50ZXJuYWw6dHJ1ZSBpbmggaW5cbiAgICBsZXQgYXBwIDogRnVuX29yX21hdGNoLnQgPVxuICAgICAgbGV0IGZ1bl9leHByID0gRnVuX29yX21hdGNoLmV4cHIgfmxvYyBmdW5jX2V4cHIgaW5cbiAgICAgIEZ1biBbJWV4cHIgWyVlIGZ1bl9leHByXSBfeW9qc29uXVxuICAgIGluXG4gICAgbGV0IG1hdGNoX2V4YyA9XG4gICAgICBoYW5kbGVfbm9fdmFyaWFudF9tYXRjaFxuICAgICAgICBsb2NcbiAgICAgICAgKGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMpXG4gICAgaW5cbiAgICBsZXQgbmV3X290aGVyX21hdGNoZXMgPVxuICAgICAgWyBbJXBhdD8gX11cbiAgICAgICAgLS0+IHBleHBfdHJ5XG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICAgKFslZSBGdW5fb3JfbWF0Y2guZXhwciB+bG9jIGFwcF1cbiAgICAgICAgICAgICAgICAgOj4gWyV0IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzIGZ1bGxfdHlwZV0pXVxuICAgICAgICAgICAgICBtYXRjaF9leGNcbiAgICAgIF1cbiAgICBpblxuICAgIG5ld19vdGhlcl9tYXRjaGVzLCB0cnVlXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgbWF0Y2hpbmcgYXRvbWljIHZhcmlhbnRzICopXG4gIGFuZCBta192YXJpYW50X21hdGNoX2F0b20gfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSB+cmV2X2F0b21zX2luaHMgfnJldl9zdHJ1Y3RzID1cbiAgICBsZXQgY29sbCAob3RoZXJfbWF0Y2hlcywgbWF0Y2hfbGFzdCkgPSBmdW5jdGlvblxuICAgICAgfCBgQSAobG9jLCBsYWJlbCkgLT5cbiAgICAgICAgbGV0IG5ld19tYXRjaCA9XG4gICAgICAgICAgcHN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbClcbiAgICAgICAgICAtLT4gcGV4cF92YXJpYW50IH5sb2MgKExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCkgTm9uZVxuICAgICAgICBpblxuICAgICAgICBuZXdfbWF0Y2ggOjogb3RoZXJfbWF0Y2hlcywgZmFsc2VcbiAgICAgIHwgYEkgaW5oIC0+XG4gICAgICAgIGhhbmRsZV92YXJpYW50X2luaCB+dHlwZXZhcl9oYW5kbGluZyBmdWxsX3R5cGUgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcyBpbmhcbiAgICBpblxuICAgIGxldCBvdGhlcl9tYXRjaGVzID1cbiAgICAgIG1rX3ZhcmlhbnRfb3RoZXJfbWF0Y2hlcyBsb2MgfnJldl9lbHM6cmV2X3N0cnVjdHMgYHB0YWdfdGFrZXNfYXJnc1xuICAgIGluXG4gICAgbGV0IG1hdGNoX2F0b21zX2luaHMsIG1hdGNoX2xhc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmY6Y29sbCB+aW5pdDoob3RoZXJfbWF0Y2hlcywgZmFsc2UpIHJldl9hdG9tc19pbmhzXG4gICAgaW5cbiAgICBoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IGxvYyB+bWF0Y2hfbGFzdCBtYXRjaF9hdG9tc19pbmhzXG5cbiAgKCogVmFyaWFudCBjb252ZXJzaW9ucyAqKVxuXG4gICgqIE1hdGNoIGFyZ3VtZW50cyBvZiBjb25zdHJ1Y3RvcnMgKHZhcmlhbnRzIG9yIHN1bSB0eXBlcykgKilcbiAgYW5kIG1rX2Nuc3RyX2FyZ3NfbWF0Y2ggfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+aXNfdmFyaWFudCBsYWJlbCB0cHMgPVxuICAgIGxldCBjbnN0cl9sYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCBpblxuICAgIGxldCBjbnN0ciB2YXJzX2V4cHIgPVxuICAgICAgaWYgaXNfdmFyaWFudFxuICAgICAgdGhlbiBwZXhwX3ZhcmlhbnQgfmxvYyBjbnN0cl9sYWJlbCAoU29tZSB2YXJzX2V4cHIpXG4gICAgICBlbHNlIHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgY25zdHJfbGFiZWwpIChTb21lIHZhcnNfZXhwcilcbiAgICBpblxuICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIGdvb2RfYXJnX21hdGNoID1cbiAgICAgIGxldCBmcHMgPSBMaXN0Lm1hcCB+ZjoodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcpIHRwcyBpblxuICAgICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyBmcHMgaW5cbiAgICAgIGxldCBnb29kX2FyZ19tYXRjaCA9XG4gICAgICAgIGxldCB2YXJzX2V4cHIgPVxuICAgICAgICAgIG1hdGNoIHZhcnMgd2l0aFxuICAgICAgICAgIHwgWyB2YXJfZXhwciBdIC0+IHZhcl9leHByXG4gICAgICAgICAgfCBfIC0+IHBleHBfdHVwbGUgfmxvYyB2YXJzXG4gICAgICAgIGluXG4gICAgICAgIGNuc3RyIHZhcnNfZXhwclxuICAgICAgaW5cbiAgICAgIGJpbmRpbmdzLCBwYXR0cywgZ29vZF9hcmdfbWF0Y2hcbiAgICBpblxuICAgIFslZXhwclxuICAgICAgbWF0Y2ggeW9qc29uX2FyZ3Mgd2l0aFxuICAgICAgfCBbJXAgcGxpc3QgfmxvYyBwYXR0c10gLT4gWyVlIHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGdvb2RfYXJnX21hdGNoXVxuICAgICAgfCBfIC0+XG4gICAgICAgIFslZVxuICAgICAgICAgIGlmIGlzX3ZhcmlhbnRcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgX3RhZ1xuICAgICAgICAgICAgICAgIF95b2pzb25dXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgIF90YWdcbiAgICAgICAgICAgICAgICBfeW9qc29uXV1dXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgbWF0Y2hpbmcgc3RydWN0dXJlZCB2YXJpYW50cyAqKVxuICBhbmQgbWtfdmFyaWFudF9tYXRjaF9zdHJ1Y3QgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSB+cmV2X3N0cnVjdHNfaW5ocyB+cmV2X2F0b21zXG4gICAgPVxuICAgIGxldCBoYXNfc3RydWN0c19yZWYgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgY29sbCAob3RoZXJfbWF0Y2hlcywgbWF0Y2hfbGFzdCkgPSBmdW5jdGlvblxuICAgICAgfCBgUyAobG9jLCBsYWJlbCwgdHAsIF9yb3cpIC0+XG4gICAgICAgIGhhc19zdHJ1Y3RzX3JlZiA6PSB0cnVlO1xuICAgICAgICBsZXQgYXJncyA9XG4gICAgICAgICAgbWF0Y2ggdHAucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFB0eXBfdHVwbGUgdHBzIC0+IHRwc1xuICAgICAgICAgIHwgXyAtPiBbIHRwIF1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgIG1rX2Nuc3RyX2FyZ3NfbWF0Y2hcbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICB+bG9jOnRwLnB0eXBfbG9jXG4gICAgICAgICAgICB+aXNfdmFyaWFudDp0cnVlXG4gICAgICAgICAgICBsYWJlbFxuICAgICAgICAgICAgYXJnc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbmV3X21hdGNoID1cbiAgICAgICAgICBbJXBhdD8gWyVwIHBzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXSBhcyBfdGFnXSAtLT4gZXhwclxuICAgICAgICBpblxuICAgICAgICBuZXdfbWF0Y2ggOjogb3RoZXJfbWF0Y2hlcywgZmFsc2VcbiAgICAgIHwgYEkgaW5oIC0+XG4gICAgICAgIGhhbmRsZV92YXJpYW50X2luaCB+dHlwZXZhcl9oYW5kbGluZyBmdWxsX3R5cGUgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcyBpbmhcbiAgICBpblxuICAgIGxldCBvdGhlcl9tYXRjaGVzID0gbWtfdmFyaWFudF9vdGhlcl9tYXRjaGVzIGxvYyB+cmV2X2VsczpyZXZfYXRvbXMgYHB0YWdfbm9fYXJncyBpblxuICAgIGxldCBtYXRjaF9zdHJ1Y3RzX2luaHMsIG1hdGNoX2xhc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmY6Y29sbCB+aW5pdDoob3RoZXJfbWF0Y2hlcywgZmFsc2UpIHJldl9zdHJ1Y3RzX2luaHNcbiAgICBpblxuICAgIGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG1hdGNoX3N0cnVjdHNfaW5ocywgIWhhc19zdHJ1Y3RzX3JlZlxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGhhbmRsaW5nIGF0b21pYyBhbmQgc3RydWN0dXJlZCB2YXJpYW50cyAoaS5lLiBub3RcbiAgICAgaW5jbHVkZWQgdmFyaWFudCB0eXBlcykgKilcbiAgYW5kIGhhbmRsZV92YXJpYW50X3RhZyB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIHJvd19maWVsZF9saXN0ID1cbiAgICBsZXQgcmV2X2F0b21zLCByZXZfc3RydWN0cywgcmV2X2F0b21zX2luaHMsIHJldl9zdHJ1Y3RzX2luaHMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmY6KHNwbGl0X3Jvd19maWVsZCB+bG9jKSB+aW5pdDooW10sIFtdLCBbXSwgW10pIHJvd19maWVsZF9saXN0XG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfc3RydWN0LCBoYXNfc3RydWN0cyA9XG4gICAgICBta192YXJpYW50X21hdGNoX3N0cnVjdCB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIH5yZXZfc3RydWN0c19pbmhzIH5yZXZfYXRvbXNcbiAgICBpblxuICAgIGxldCBtYXliZV95b2pzb25fYXJnc19wYXR0ID0gaWYgaGFzX3N0cnVjdHMgdGhlbiBbJXBhdD8geW9qc29uX2FyZ3NdIGVsc2UgWyVwYXQ/IF9dIGluXG4gICAgWyBbJXBhdD8gYExpc3QgWyBgU3RyaW5nIGF0b20gXSBhcyBfeW9qc29uXVxuICAgICAgLS0+IG1rX3ZhcmlhbnRfbWF0Y2hfYXRvbVxuICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgZnVsbF90eXBlXG4gICAgICAgICAgICB+cmV2X2F0b21zX2luaHNcbiAgICAgICAgICAgIH5yZXZfc3RydWN0c1xuICAgIDsgWyVwYXQ/IGBMaXN0IChgU3RyaW5nIGF0b20gOjogWyVwIG1heWJlX3lvanNvbl9hcmdzX3BhdHRdKSBhcyBfeW9qc29uXVxuICAgICAgLS0+IG1hdGNoX3N0cnVjdFxuICAgIDsgWyVwYXQ/IGBMaXN0IChgTGlzdCBfIDo6IF8pIGFzIHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyXG4gICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgIHlvanNvbl1cbiAgICA7IFslcGF0PyBgTGlzdCBbXSBhcyB5b2pzb25dXG4gICAgICAtLT4gWyVleHByXG4gICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyXG4gICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgIHlvanNvbl1cbiAgICA7IFslcGF0PyBfIGFzIHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgX3RwX2xvYyB5b2pzb25dXG4gICAgXVxuXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIHZhcmlhbnRzICopXG4gIGFuZCB2YXJpYW50X29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyA/ZnVsbF90eXBlIChsb2MsIHJvd19maWVsZHMpID1cbiAgICBsZXQgaXNfY29udGFpbmVkLCBmdWxsX3R5cGUgPVxuICAgICAgbWF0Y2ggZnVsbF90eXBlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlLCBwdHlwX3ZhcmlhbnQgfmxvYyByb3dfZmllbGRzIENsb3NlZCBOb25lXG4gICAgICB8IFNvbWUgZnVsbF90eXBlIC0+IGZhbHNlLCBmdWxsX3R5cGVcbiAgICBpblxuICAgIGxldCB0b3BfbWF0Y2ggPVxuICAgICAgbWF0Y2ggcm93X2ZpZWxkcyB3aXRoXG4gICAgICB8IHsgcHJmX2Rlc2MgPSBSaW5oZXJpdCBpbmg7IF8gfSA6OiByZXN0IC0+XG4gICAgICAgIGxldCByZWMgbG9vcCBpbmggcm93X2ZpZWxkcyA9XG4gICAgICAgICAgbGV0IGNhbGwgPVxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIChbJWVcbiAgICAgICAgICAgICAgICBGdW5fb3JfbWF0Y2guZXhwclxuICAgICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgICAgKHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5pbnRlcm5hbDp0cnVlIGluaCldXG4gICAgICAgICAgICAgICAgIHlvanNvblxuICAgICAgICAgICAgICAgOj4gWyV0IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzIGZ1bGxfdHlwZV0pXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggcm93X2ZpZWxkcyB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBjYWxsXG4gICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgIGxldCBleHByID1cbiAgICAgICAgICAgICAgbWF0Y2ggaC5wcmZfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgUmluaGVyaXQgaW5oIC0+IGxvb3AgaW5oIHRcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJmdGFnX21hdGNoZXMgPVxuICAgICAgICAgICAgICAgICAgaGFuZGxlX3ZhcmlhbnRfdGFnIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgcm93X2ZpZWxkc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcGV4cF9tYXRjaCB+bG9jIFslZXhwciB5b2pzb25dIHJmdGFnX21hdGNoZXNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBwZXhwX3RyeSB+bG9jIGNhbGwgKGhhbmRsZV9ub192YXJpYW50X21hdGNoIGxvYyBleHByKVxuICAgICAgICBpblxuICAgICAgICBbIFslcGF0PyB5b2pzb25dIC0tPiBsb29wIGluaCByZXN0IF1cbiAgICAgIHwgXyA6OiBfIC0+IGhhbmRsZV92YXJpYW50X3RhZyB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIHJvd19maWVsZHNcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAoKiBpbXBvc3NpYmxlICopXG4gICAgaW5cbiAgICBpZiBpc19jb250YWluZWRcbiAgICB0aGVuXG4gICAgICBGdW5cbiAgICAgICAgWyVleHByXG4gICAgICAgICAgZnVuIHlvanNvbiAtPlxuICAgICAgICAgICAgdHJ5IFslZSBwZXhwX21hdGNoIH5sb2MgWyVleHByIHlvanNvbl0gdG9wX21hdGNoXSB3aXRoXG4gICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaCAtPlxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmRcbiAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgeW9qc29uXVxuICAgIGVsc2UgTWF0Y2ggdG9wX21hdGNoXG5cbiAgYW5kIHBvbHlfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIHBhcm1zIHRwID1cbiAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgbGV0IG1rX2JpbmRpbmcgcGFybSA9XG4gICAgICAgIHZhbHVlX2JpbmRpbmdcbiAgICAgICAgICB+bG9jXG4gICAgICAgICAgfnBhdDoocHZhciB+bG9jIChcIl9vZl9cIiBeIHBhcm0udHh0KSlcbiAgICAgICAgICB+ZXhwcjpcbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBmdW4geW9qc29uIC0+XG4gICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfcG9seV9maWVsZF92YWx1ZVxuICAgICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgaW5cbiAgICAgIExpc3QubWFwIH5mOm1rX2JpbmRpbmcgcGFybXNcbiAgICBpblxuICAgIG1hdGNoIHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIHRwIHdpdGhcbiAgICB8IEZ1biBmdW5fZXhwciAtPiBGdW4gKHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGZ1bl9leHByKVxuICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+XG4gICAgICBNYXRjaFxuICAgICAgICBbIFslcGF0PyBhcmddXG4gICAgICAgICAgLS0+IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIChwZXhwX21hdGNoIH5sb2MgWyVleHByIGFyZ10gbWF0Y2hpbmdzKVxuICAgICAgICBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgZXh0cmFjdGluZyByZWNvcmQgZmllbGRzICopXG4gIGxldCBta19leHRyYWN0X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIChsb2MsIGZsZHMpID1cbiAgICBsZXQgcmVjIGxvb3AgaW5pdHMgbm9fYXJncyBhcmdzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gaW5pdHMsIG5vX2FyZ3MsIGFyZ3NcbiAgICAgIHwgbGQgOjogbW9yZV9mbGRzIC0+XG4gICAgICAgIGxldCBsb2MgPSBsZC5wbGRfbmFtZS5sb2MgaW5cbiAgICAgICAgbGV0IG5tID0gbGQucGxkX25hbWUudHh0IGluXG4gICAgICAgIGxldCBrZXkgPSBPcHRpb24udmFsdWUgfmRlZmF1bHQ6bm0gKEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX2tleSBsZCkgaW5cbiAgICAgICAgKG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLk9mX3lvanNvbi5jcmVhdGUgfmxvYyBsZCwgbGQucGxkX3R5cGUgd2l0aFxuICAgICAgICAgfCBTb21lIChgeW9qc29uX29wdGlvbiB0cCksIF8gfCAoTm9uZSB8IFNvbWUgKGBkZWZhdWx0IF8pKSwgdHAgLT5cbiAgICAgICAgICAgbGV0IGluaXRzID0gWyVleHByIFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmVdIDo6IGluaXRzIGluXG4gICAgICAgICAgIGxldCB1bnJvbGxlZCA9XG4gICAgICAgICAgICAgRnVuX29yX21hdGNoLnVucm9sbFxuICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgWyVleHByIF9maWVsZF95b2pzb25dXG4gICAgICAgICAgICAgICAodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgdHApXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICAgICAocHN0cmluZyB+bG9jIGtleVxuICAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBbJWUgZXZhciB+bG9jIChubSBeIFwiX2ZpZWxkXCIpXSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgZnZhbHVlID0gWyVlIHVucm9sbGVkXSBpblxuICAgICAgICAgICAgICAgICAgWyVlIGV2YXIgfmxvYyAobm0gXiBcIl9maWVsZFwiKV1cbiAgICAgICAgICAgICAgICAgIDo9IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgZnZhbHVlXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZXMgOj0gZmllbGRfbmFtZSA6OiBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGR1cGxpY2F0ZXNdKVxuICAgICAgICAgICAgIDo6IGFyZ3NcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbG9vcCBpbml0cyBub19hcmdzIGFyZ3MgbW9yZV9mbGRzKVxuICAgIGluXG4gICAgbGV0IGhhbmRsZV9leHRyYSA9XG4gICAgICBbIChbJXBhdD8gX11cbiAgICAgICAgIC0tPlxuICAgICAgICAgaWYgYWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICAgICB0aGVuIFslZXhwciAoKV1cbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgaWYgUHB4X3lvanNvbl9jb252X2xpYi4oICEgKVxuICAgICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5yZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzXG4gICAgICAgICAgICAgdGhlbiBleHRyYSA6PSBmaWVsZF9uYW1lIDo6IFBweF95b2pzb25fY29udl9saWIuKCAhICkgZXh0cmFcbiAgICAgICAgICAgICBlbHNlICgpXSlcbiAgICAgIF1cbiAgICBpblxuICAgIGxvb3AgW10gaGFuZGxlX2V4dHJhIGhhbmRsZV9leHRyYSAoTGlzdC5yZXYgZmxkcylcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBoYW5kbGluZyB0aGUgcmVzdWx0IG9mIG1hdGNoaW5nIHJlY29yZCBmaWVsZHMgKilcbiAgbGV0IG1rX2hhbmRsZV9yZWNvcmRfbWF0Y2hfcmVzdWx0IGhhc19wb2x5IChsb2MsIGZsZHMpIH53cmFwX2V4cHIgPVxuICAgIGxldCBoYXNfbm9ub3B0X2ZpZWxkcyA9IHJlZiBmYWxzZSBpblxuICAgIGxldCByZXNfdHBscywgYmlfbHN0LCBnb29kX3BhdHRzID1cbiAgICAgIGxldCByZWMgbG9vcCAoKHJlc190cGxzLCBiaV9sc3QsIGdvb2RfcGF0dHMpIGFzIGFjYykgPSBmdW5jdGlvblxuICAgICAgICB8ICh7IHBsZF9uYW1lID0geyB0eHQgPSBubTsgbG9jIH07IF8gfSBhcyBsZCkgOjogbW9yZV9mbGRzIC0+XG4gICAgICAgICAgbGV0IGZsZCA9IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfZmllbGRcIildXSBpblxuICAgICAgICAgIGxldCBta19kZWZhdWx0IGxvYyA9XG4gICAgICAgICAgICBiaV9sc3QsIFslcGF0PyBbJXAgcHZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXV0gOjogZ29vZF9wYXR0c1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG5ld19iaV9sc3QsIG5ld19nb29kX3BhdHRzID1cbiAgICAgICAgICAgIG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLk9mX3lvanNvbi5jcmVhdGUgfmxvYyBsZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGBkZWZhdWx0IF8gfCBgeW9qc29uX29wdGlvbiBfKSAtPiBta19kZWZhdWx0IGxvY1xuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGhhc19ub25vcHRfZmllbGRzIDo9IHRydWU7XG4gICAgICAgICAgICAgICggWyVleHByXG4gICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5wb2x5X2VxdWFsIFslZSBmbGRdIFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmVcbiAgICAgICAgICAgICAgLCBbJWUgZXN0cmluZyB+bG9jIG5tXV1cbiAgICAgICAgICAgICAgICA6OiBiaV9sc3RcbiAgICAgICAgICAgICAgLCBbJXBhdD8gUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSBbJXAgcHZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXV1cbiAgICAgICAgICAgICAgICA6OiBnb29kX3BhdHRzIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBhY2MgPSBbJWV4cHIgWyVlIGZsZF1dIDo6IHJlc190cGxzLCBuZXdfYmlfbHN0LCBuZXdfZ29vZF9wYXR0cyBpblxuICAgICAgICAgIGxvb3AgYWNjIG1vcmVfZmxkc1xuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgaW5cbiAgICAgIGxvb3AgKFtdLCBbXSwgW10pIChMaXN0LnJldiBmbGRzKVxuICAgIGluXG4gICAgbGV0IG1hdGNoX2dvb2RfZXhwciA9XG4gICAgICBpZiBoYXNfcG9seVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBjbnZ0ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGxkX25hbWUgPSB7IHR4dCA9IG5tOyBfIH07IF8gfSAtPiBldmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIilcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggTGlzdC5tYXAgfmY6Y252dCBmbGRzIHdpdGhcbiAgICAgICAgfCBbIG1hdGNoX2dvb2RfZXhwciBdIC0+IG1hdGNoX2dvb2RfZXhwclxuICAgICAgICB8IG1hdGNoX2dvb2RfZXhwcnMgLT4gcGV4cF90dXBsZSB+bG9jIG1hdGNoX2dvb2RfZXhwcnMpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGNudnQgbGQgPVxuICAgICAgICAgIGxldCBubSA9IGxkLnBsZF9uYW1lLnR4dCBpblxuICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICBtYXRjaCBBdHRycy5SZWNvcmRfZmllbGRfaGFuZGxlci5PZl95b2pzb24uY3JlYXRlIH5sb2MgbGQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChgZGVmYXVsdCBkZWZhdWx0KSAtPlxuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICBtYXRjaCBbJWUgZXZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lIC0+IFslZSBkZWZhdWx0XVxuICAgICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSB2IC0+IHZdXG4gICAgICAgICAgICB8IFNvbWUgKGB5b2pzb25fb3B0aW9uIF8pIHwgTm9uZSAtPiBldmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIilcbiAgICAgICAgICBpblxuICAgICAgICAgIExvY2F0ZWQubGlkZW50IH5sb2Mgbm0sIHZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIHdyYXBfZXhwciAocGV4cF9yZWNvcmQgfmxvYyAoTGlzdC5tYXAgfmY6Y252dCBmbGRzKSBOb25lKSlcbiAgICBpblxuICAgIGxldCBleHByLCBwYXR0ID1cbiAgICAgIG1hdGNoIHJlc190cGxzLCBnb29kX3BhdHRzIHdpdGhcbiAgICAgIHwgWyByZXNfZXhwciBdLCBbIHJlc19wYXR0IF0gLT4gcmVzX2V4cHIsIHJlc19wYXR0XG4gICAgICB8IF8gLT4gcGV4cF90dXBsZSB+bG9jIHJlc190cGxzLCBwcGF0X3R1cGxlIH5sb2MgZ29vZF9wYXR0c1xuICAgIGluXG4gICAgaWYgIWhhc19ub25vcHRfZmllbGRzXG4gICAgdGhlblxuICAgICAgcGV4cF9tYXRjaFxuICAgICAgICB+bG9jXG4gICAgICAgIGV4cHJcbiAgICAgICAgWyBwYXR0IC0tPiBtYXRjaF9nb29kX2V4cHJcbiAgICAgICAgOyBbJXBhdD8gX11cbiAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF91bmRlZmluZWRfZWxlbWVudHNcbiAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICB5b2pzb25cbiAgICAgICAgICAgICAgWyVlIGVsaXN0IH5sb2MgYmlfbHN0XV1cbiAgICAgICAgXVxuICAgIGVsc2UgcGV4cF9tYXRjaCB+bG9jIGV4cHIgWyBwYXR0IC0tPiBtYXRjaF9nb29kX2V4cHIgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGNvbnZlcnRpbmcgcmVjb3JkIGZpZWxkcyAqKVxuXG4gIGxldCBta19jbnZfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwciA9XG4gICAgbGV0IGV4cHJfcmVmX2luaXRzLCBfbWNfbm9fYXJnc19maWVsZHMsIG1jX2ZpZWxkc193aXRoX2FyZ3MgPVxuICAgICAgbWtfZXh0cmFjdF9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyAobG9jLCBmbGRzKVxuICAgIGluXG4gICAgbGV0IGZpZWxkX3JlZnMgPVxuICAgICAgTGlzdC5tYXAyX2V4blxuICAgICAgICBmbGRzXG4gICAgICAgIGV4cHJfcmVmX2luaXRzXG4gICAgICAgIH5mOihmdW4geyBwbGRfbmFtZSA9IHsgdHh0ID0gbmFtZTsgbG9jIH07IF8gfSBpbml0IC0+XG4gICAgICAgICAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHB2YXIgfmxvYyAobmFtZSBeIFwiX2ZpZWxkXCIpKSB+ZXhwcjpbJWV4cHIgcmVmIFslZSBpbml0XV0pXG4gICAgaW5cbiAgICBwZXhwX2xldFxuICAgICAgfmxvY1xuICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAoZmllbGRfcmVmc1xuICAgICAgIEAgWyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpbJXBhdD8gZHVwbGljYXRlc10gfmV4cHI6WyVleHByIHJlZiBbXV1cbiAgICAgICAgIDsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6WyVwYXQ/IGV4dHJhXSB+ZXhwcjpbJWV4cHIgcmVmIFtdXVxuICAgICAgICAgXSlcbiAgICAgIFslZXhwclxuICAgICAgICBsZXQgcmVjIGl0ZXIgPVxuICAgICAgICAgIFslZVxuICAgICAgICAgICAgcGV4cF9mdW5jdGlvblxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIFsgWyVwYXQ/IChmaWVsZF9uYW1lLCBfZmllbGRfeW9qc29uKSA6OiB0YWlsXVxuICAgICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgICAgIFslZSBwZXhwX21hdGNoIH5sb2MgWyVleHByIGZpZWxkX25hbWVdIG1jX2ZpZWxkc193aXRoX2FyZ3NdO1xuICAgICAgICAgICAgICAgICAgaXRlciB0YWlsXVxuICAgICAgICAgICAgICA7IFslcGF0PyBbXV0gLS0+IFslZXhwciAoKV1cbiAgICAgICAgICAgICAgXV1cbiAgICAgICAgaW5cbiAgICAgICAgaXRlciBmaWVsZF95b2pzb25zO1xuICAgICAgICBtYXRjaCBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGR1cGxpY2F0ZXMgd2l0aFxuICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX2R1cGxpY2F0ZV9maWVsZHNcbiAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgIChQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGR1cGxpY2F0ZXMpXG4gICAgICAgICAgICB5b2pzb25cbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIChtYXRjaCBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGV4dHJhIHdpdGhcbiAgICAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9leHRyYV9maWVsZHNcbiAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgIChQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGV4dHJhKVxuICAgICAgICAgICAgICAgeW9qc29uXG4gICAgICAgICAgIHwgW10gLT4gWyVlIG1rX2hhbmRsZV9yZWNvcmRfbWF0Y2hfcmVzdWx0IGhhc19wb2x5IChsb2MsIGZsZHMpIH53cmFwX2V4cHJdKV1cbiAgOztcblxuICBsZXQgaXNfcG9seSAoXywgZmxkcykgPVxuICAgIExpc3QuZXhpc3RzIGZsZHMgfmY6KGZ1bmN0aW9uXG4gICAgICB8IHsgcGxkX3R5cGUgPSB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBfIH07IF8gfSAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2UpXG4gIDs7XG5cbiAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qc29uXG4gICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgIH5hbGxvd19leHRyYV9maWVsZHNcbiAgICAgICAgbG9jXG4gICAgICAgIGZsZHNcbiAgICAgICAgfndyYXBfZXhwclxuICAgID1cbiAgICBsZXQgaGFzX3BvbHkgPSBpc19wb2x5IChsb2MsIGZsZHMpIGluXG4gICAgbGV0IGNudl9maWVsZHMgPVxuICAgICAgbWtfY252X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIGhhc19wb2x5IChsb2MsIGZsZHMpIH53cmFwX2V4cHJcbiAgICBpblxuICAgIGlmIGhhc19wb2x5XG4gICAgdGhlbiAoXG4gICAgICBsZXQgcGF0dCA9XG4gICAgICAgIGxldCBwYXRzID1cbiAgICAgICAgICBMaXN0Lm1hcCBmbGRzIH5mOihmdW4geyBwbGRfbmFtZSA9IHsgdHh0ID0gbmFtZTsgbG9jIH07IF8gfSAtPiBwdmFyIH5sb2MgbmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggcGF0cyB3aXRoXG4gICAgICAgIHwgWyBwYXQgXSAtPiBwYXRcbiAgICAgICAgfCBwYXRzIC0+IHBwYXRfdHVwbGUgfmxvYyBwYXRzXG4gICAgICBpblxuICAgICAgbGV0IHJlY29yZF9kZWYgPVxuICAgICAgICB3cmFwX2V4cHJcbiAgICAgICAgICAocGV4cF9yZWNvcmRcbiAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgKExpc3QubWFwIGZsZHMgfmY6KGZ1biB7IHBsZF9uYW1lID0geyB0eHQgPSBuYW1lOyBsb2MgfTsgXyB9IC0+XG4gICAgICAgICAgICAgICAgTG9jYXRlZC5saWRlbnQgfmxvYyBuYW1lLCBldmFyIH5sb2MgbmFtZSkpXG4gICAgICAgICAgICAgTm9uZSlcbiAgICAgIGluXG4gICAgICBwZXhwX2xldFxuICAgICAgICB+bG9jXG4gICAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgICBbIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OnBhdHQgfmV4cHI6Y252X2ZpZWxkcyBdXG4gICAgICAgIHJlY29yZF9kZWYpXG4gICAgZWxzZSBjbnZfZmllbGRzXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3IgcmVjb3JkcyAqKVxuICBsZXQgcmVjb3JkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIChsb2MsIGZsZHMpIDogRnVuX29yX21hdGNoLnQgPVxuICAgIE1hdGNoXG4gICAgICBbIFslcGF0PyBgQXNzb2MgZmllbGRfeW9qc29ucyBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBsYWJlbF9kZWNsYXJhdGlvbl9saXN0X29mX3lvanNvblxuICAgICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgICBmbGRzXG4gICAgICAgICAgICAgIH53cmFwX2V4cHI6KGZ1biB4IC0+IHgpXG4gICAgICA7IFslcGF0PyBfIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tXG4gICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICB5b2pzb25dXG4gICAgICBdXG4gIDs7XG5cbiAgKCogU3VtIHR5cGUgY29udmVyc2lvbnMgKilcbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3Igd2VsbC1mb3JtZWQgWW9qc29ucyB3cnQuIHN1bSB0eXBlcyAqKVxuICBsZXQgbWtfZ29vZF9zdW1fbWF0Y2hlcyB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCBjZHMpID1cbiAgICBMaXN0Lm1hcCBjZHMgfmY6KGZ1biAoY2QsIGxhYmVsKSAtPlxuICAgICAgbGV0IGNuc3RyX2xhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsIGluXG4gICAgICBsZXQgY25zdHJfbmFtZSA9IExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsIGluXG4gICAgICBtYXRjaCBjZCB3aXRoXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl9yZWNvcmQgZmllbGRzOyBfIH0gLT5cbiAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgIGxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qc29uXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkczpcbiAgICAgICAgICAgICAgKE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLmFsbG93X2V4dHJhX2ZpZWxkc19jZCBjZCkpXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIGZpZWxkc1xuICAgICAgICAgICAgfndyYXBfZXhwcjooZnVuIGUgLT5cbiAgICAgICAgICAgICAgcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBjbnN0cl9sYWJlbCkgKFNvbWUgZSkpXG4gICAgICAgIGluXG4gICAgICAgIFslcGF0P1xuICAgICAgICAgICAgICAgYExpc3QgWyBgU3RyaW5nIChbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIGFzIF90YWcpOyBgQXNzb2MgZmllbGRfeW9qc29ucyBdXG4gICAgICAgICAgYXMgeW9qc29uXVxuICAgICAgICAtLT4gZXhwclxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfdHVwbGUgW107IF8gfSAtPlxuICAgICAgICBBdHRycy5mYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIH5sb2MgY2Q7XG4gICAgICAgIFslcGF0PyBgTGlzdCBbIGBTdHJpbmcgWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSBdXVxuICAgICAgICAtLT4gcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBjbnN0cl9sYWJlbCkgTm9uZVxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfdHVwbGUgKF8gOjogXyBhcyB0cHMpOyBfIH0gLT5cbiAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF9jZCB+bG9jIGNkO1xuICAgICAgICBbJXBhdD9cbiAgICAgICAgICAgICAgIGBMaXN0IChgU3RyaW5nIChbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIGFzIF90YWcpIDo6IHlvanNvbl9hcmdzKSBhcyBfeW9qc29uXVxuICAgICAgICAtLT4gbWtfY25zdHJfYXJnc19tYXRjaCB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5pc192YXJpYW50OmZhbHNlIGxhYmVsIHRwcylcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciBtYWxmb3JtZWQgWW9qc29ucyB3aXRoIGdvb2QgdGFnc1xuICAgICB3cnQuIHN1bSB0eXBlcyAqKVxuICBsZXQgbWtfYmFkX3N1bV9tYXRjaGVzIChsb2MsIGNkcykgPVxuICAgIExpc3QubWFwIGNkcyB+ZjooZnVuIChjZCwgbGFiZWwpIC0+XG4gICAgICBsZXQgY25zdHJfbmFtZSA9IExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsIGluXG4gICAgICBtYXRjaCBjZCB3aXRoXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSBbXTsgXyB9IC0+XG4gICAgICAgIFslcGF0PyBgTGlzdCAoYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIDo6IF8pIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBfdHBfbG9jIHlvanNvbl1cbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIChfIDo6IF8pIHwgUGNzdHJfcmVjb3JkIF87IF8gfSAtPlxuICAgICAgICBbJXBhdD8gYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBfdHBfbG9jIHlvanNvbl0pXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3Igc3VtIHR5cGVzICopXG4gIGxldCBzdW1fb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGFsdHMpIDogRnVuX29yX21hdGNoLnQgPVxuICAgIGxldCBhbHRzID1cbiAgICAgIExpc3QubWFwIGFsdHMgfmY6KGZ1biBjZCAtPiBjZCwgTGFiZWxfd2l0aF9uYW1lLm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGNkKVxuICAgIGluXG4gICAgTWF0Y2hcbiAgICAgIChMaXN0LmNvbmNhdFxuICAgICAgICAgWyBta19nb29kX3N1bV9tYXRjaGVzIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGFsdHMpXG4gICAgICAgICA7IG1rX2JhZF9zdW1fbWF0Y2hlcyAobG9jLCBhbHRzKVxuICAgICAgICAgOyBbIFslcGF0PyBgTGlzdCAoYExpc3QgXyA6OiBfKSBhcyB5b2pzb25dXG4gICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bVxuICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgOyBbJXBhdD8gYExpc3QgW10gYXMgeW9qc29uXVxuICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bVxuICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgOyBbJXBhdD8gXyBhcyB5b2pzb25dXG4gICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgX3RwX2xvYyB5b2pzb25dXG4gICAgICAgICAgIF1cbiAgICAgICAgIF0pXG4gIDs7XG5cbiAgKCogRW1wdHkgdHlwZSAqKVxuICBsZXQgbmlsX29mX3lvanNvbiBsb2MgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgRnVuXG4gICAgICBbJWV4cHJcbiAgICAgICAgZnVuIHlvanNvbiAtPiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLmVtcHR5X3R5cGUgX3RwX2xvYyB5b2pzb25dXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmcm9tIHR5cGUgZGVmaW5pdGlvbnMgKilcblxuICBsZXQgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5sb2M6XyB+cG9seSB+cGF0aCB+cmVjX2ZsYWcgdGQgPVxuICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICBsZXQgdHBzID0gTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmdldF90eXBlX3BhcmFtX25hbWUgaW5cbiAgICBsZXQgeyBwdHlwZV9uYW1lID0geyB0eHQgPSB0eXBlX25hbWU7IGxvYyA9IF8gfTsgcHR5cGVfbG9jID0gbG9jOyBfIH0gPSB0ZCBpblxuICAgIGxldCBmdWxsX3R5cGUgPVxuICAgICAgY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfD4gcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXNcbiAgICBpblxuICAgIGxldCBpc19wcml2YXRlID1cbiAgICAgIG1hdGNoIHRkLnB0eXBlX3ByaXZhdGUgd2l0aFxuICAgICAgfCBQcml2YXRlIC0+IHRydWVcbiAgICAgIHwgUHVibGljIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiBpc19wcml2YXRlXG4gICAgdGhlbiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIm9mX3lvanNvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBwcml2YXRlIHR5cGVcIjtcbiAgICBsZXQgY3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uID1cbiAgICAgIG1hdGNoIGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgdGQgfnNpZ186ZmFsc2Ugd2l0aFxuICAgICAgfCBgRGVmaW5pdGVseSAtPiB0cnVlXG4gICAgICB8IGBNYXliZSAtPiBwb2x5XG4gICAgICB8IGBTdXJlbHlfbm90IC0+XG4gICAgICAgIGlmIHBvbHlcbiAgICAgICAgdGhlblxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgXCJ5b2pzb25fcG9seSBhbm5vdGF0aW9uIG9uIGEgdHlwZSB0aGF0IGlzIHN1cmVseSBub3QgYSBwb2x5bW9ycGhpYyB2YXJpYW50XCI7XG4gICAgICAgIGZhbHNlXG4gICAgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgYm9keSA9XG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYWx0cyAtPlxuICAgICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB0ZDtcbiAgICAgICAgICBzdW1fb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nICh0ZC5wdHlwZV9sb2MsIGFsdHMpXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGxibHMgLT5cbiAgICAgICAgICByZWNvcmRfb2ZfeW9qc29uXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkczpcbiAgICAgICAgICAgICAgKE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLmFsbG93X2V4dHJhX2ZpZWxkc190ZCB0ZCkpXG4gICAgICAgICAgICAobG9jLCBsYmxzKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBweF95b2pzb25fY29udjogb3BlbiB0eXBlcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPlxuICAgICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB0ZDtcbiAgICAgICAgICAobWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbmlsX29mX3lvanNvbiB0ZC5wdHlwZV9sb2NcbiAgICAgICAgICAgfCBTb21lIHR5IC0+XG4gICAgICAgICAgICAgdHlwZV9vZl95b2pzb25cbiAgICAgICAgICAgICAgIH5mdWxsX3R5cGVcbiAgICAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICAgICB+aW50ZXJuYWw6Y3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uXG4gICAgICAgICAgICAgICB0eSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICgqIFByZXZlbnQgdmlvbGF0aW9uIG9mIHZhbHVlIHJlc3RyaWN0aW9uIGFuZCBwcm9ibGVtcyB3aXRoXG4gICAgICAgICByZWN1cnNpdmUgdHlwZXMgYnkgZXRhLWV4cGFuZGluZyBmdW5jdGlvbiBkZWZpbml0aW9ucyAqKVxuICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIGZ1biB0IC0+IFslZSBlYXBwbHkgfmxvYyBmdW5fZXhwciBbIFslZXhwciB0XSBdXV1cbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IHBleHBfZnVuY3Rpb24gfmxvYyBtYXRjaGluZ3NcbiAgICBpblxuICAgIGxldCBleHRlcm5hbF9uYW1lID0gdHlwZV9uYW1lIF4gXCJfb2ZfeW9qc29uXCIgaW5cbiAgICBsZXQgaW50ZXJuYWxfbmFtZSA9IFwiX19cIiBeIHR5cGVfbmFtZSBeIFwiX29mX3lvanNvbl9fXCIgaW5cbiAgICBsZXQgYXJnX3BhdHRzLCBhcmdfZXhwcnMgPVxuICAgICAgTGlzdC51bnppcFxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgfmY6KGZ1biB0cCAtPlxuICAgICAgICAgICAgIGxldCBuYW1lID0gXCJfb2ZfXCIgXiB0cC50eHQgaW5cbiAgICAgICAgICAgICBwdmFyIH5sb2MgbmFtZSwgZXZhciB+bG9jIG5hbWUpXG4gICAgICAgICAgIHRwcylcbiAgICBpblxuICAgIGxldCBiaW5kX3RwX2xvY19pbiA9XG4gICAgICBsZXQgZnVsbF90eXBlX25hbWUgPSBQcmludGYuc3ByaW50ZiBcIiVzLiVzXCIgcGF0aCB0eXBlX25hbWUgaW5cbiAgICAgIGZ1biBlIC0+XG4gICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gLT5cbiAgICAgICAgICAoKiB3ZSBkZWZpbml0ZWx5IGRvbid0IHVzZSB0aGUgc3RyaW5nLCBzbyBjbGVhbiB1cCB0aGUgZ2VuZXJhdGVkIGNvZGUgYSBiaXQgKilcbiAgICAgICAgICBlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgbGV0IF90cF9sb2MgPSBbJWUgZXN0cmluZyB+bG9jIGZ1bGxfdHlwZV9uYW1lXSBpblxuICAgICAgICAgICAgWyVlIGVdXVxuICAgIGluXG4gICAgbGV0IGludGVybmFsX2Z1bl9ib2R5ID1cbiAgICAgIGlmIGNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvblxuICAgICAgdGhlblxuICAgICAgICBTb21lXG4gICAgICAgICAgKGJpbmRfdHBfbG9jX2luXG4gICAgICAgICAgICAgKGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyB+cmVjX2ZsYWcgKGVhYnN0cmFjdCB+bG9jIGFyZ19wYXR0cyBib2R5KSkpXG4gICAgICBlbHNlIE5vbmVcbiAgICBpblxuICAgIGxldCBleHRlcm5hbF9mdW5fYm9keSA9XG4gICAgICBsZXQgbmVlZF90cF9sb2MsIGJvZHlfYmVsb3dfbGFtYmRhcyA9XG4gICAgICAgIGlmIGNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbm9fdmFyaWFudF9tYXRjaF9tYyA9XG4gICAgICAgICAgICBbIFslcGF0PyBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2hdXG4gICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmRcbiAgICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBpbnRlcm5hbF9jYWxsID1cbiAgICAgICAgICAgIGxldCBpbnRlcm5hbF9leHByID0gZXZhciB+bG9jIGludGVybmFsX25hbWUgaW5cbiAgICAgICAgICAgIGVhcHBseSB+bG9jIGludGVybmFsX2V4cHIgKGFyZ19leHBycyBAIFsgWyVleHByIHlvanNvbl0gXSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cnlfd2l0aCA9IHBleHBfdHJ5IH5sb2MgaW50ZXJuYWxfY2FsbCBub192YXJpYW50X21hdGNoX21jIGluXG4gICAgICAgICAgZmFsc2UsIGJpbmRfdHBfbG9jX2luIFslZXhwciBmdW4geW9qc29uIC0+IFslZSB0cnlfd2l0aF1dKVxuICAgICAgICBlbHNlIHRydWUsIGJvZHlcbiAgICAgIGluXG4gICAgICBsZXQgYm9keV93aXRoX2xhbWJkYXMgPVxuICAgICAgICBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWNcbiAgICAgICAgICB+cmVjX2ZsYWdcbiAgICAgICAgICAoZWFic3RyYWN0IH5sb2MgYXJnX3BhdHRzIGJvZHlfYmVsb3dfbGFtYmRhcylcbiAgICAgIGluXG4gICAgICBpZiBuZWVkX3RwX2xvYyB0aGVuIGJpbmRfdHBfbG9jX2luIGJvZHlfd2l0aF9sYW1iZGFzIGVsc2UgYm9keV93aXRoX2xhbWJkYXNcbiAgICBpblxuICAgIGxldCBta19iaW5kaW5nIGZ1bmNfbmFtZSBib2R5ID1cbiAgICAgIGxldCB0eXAgPSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLm1rX3R5cGUgdGQgaW5cbiAgICAgIGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmcgbG9jIHRkIHR5cCB+dHBzIH5mdW5jX25hbWUgYm9keVxuICAgIGluXG4gICAgbGV0IGludGVybmFsX2JpbmRpbmdzID1cbiAgICAgIG1hdGNoIGludGVybmFsX2Z1bl9ib2R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIGJvZHkgLT4gWyBta19iaW5kaW5nIGludGVybmFsX25hbWUgYm9keSBdXG4gICAgaW5cbiAgICBsZXQgZXh0ZXJuYWxfYmluZGluZyA9IG1rX2JpbmRpbmcgZXh0ZXJuYWxfbmFtZSBleHRlcm5hbF9mdW5fYm9keSBpblxuICAgIGludGVybmFsX2JpbmRpbmdzLCBbIGV4dGVybmFsX2JpbmRpbmcgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZnJvbSB0eXBlIGRlZmluaXRpb25zICopXG4gIGxldCB0ZHNfb2ZfeW9qc29uIH5sb2MgfnBvbHkgfnBhdGggKHJlY19mbGFnLCB0ZHMpID1cbiAgICBsZXQgdHlwZXZhcl9oYW5kbGluZyA9IGBvayBpblxuICAgIGxldCBzaW5nbGV0b24gPVxuICAgICAgbWF0Y2ggdGRzIHdpdGhcbiAgICAgIHwgWyBfIF0gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiBzaW5nbGV0b25cbiAgICB0aGVuIChcbiAgICAgIGxldCByZWNfZmxhZyA9IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzIGluXG4gICAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgICB8IFJlY3Vyc2l2ZSAtPlxuICAgICAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgICAgIExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICAgICAgbGV0IGludGVybmFscywgZXh0ZXJuYWxzID1cbiAgICAgICAgICAgICAgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfnBvbHkgfnBhdGggfnJlY19mbGFnIHRkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaW50ZXJuYWxzIEAgZXh0ZXJuYWxzKVxuICAgICAgICBpblxuICAgICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBSZWN1cnNpdmUgYmluZGluZ3NcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+XG4gICAgICAgIExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICAgIGxldCBpbnRlcm5hbHMsIGV4dGVybmFscyA9XG4gICAgICAgICAgICB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+cG9seSB+cGF0aCB+cmVjX2ZsYWcgdGRcbiAgICAgICAgICBpblxuICAgICAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZSBpbnRlcm5hbHNcbiAgICAgICAgICBAIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZSBleHRlcm5hbHMpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGJpbmRpbmdzID1cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgICAgbGV0IGludGVybmFscywgZXh0ZXJuYWxzID1cbiAgICAgICAgICAgIHRkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+cG9seSB+bG9jIH5wYXRoIH5yZWNfZmxhZyB0ZFxuICAgICAgICAgIGluXG4gICAgICAgICAgaW50ZXJuYWxzIEAgZXh0ZXJuYWxzKVxuICAgICAgaW5cbiAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIHJlY19mbGFnIGJpbmRpbmdzKVxuICA7O1xuXG4gIGxldCB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+cGF0aCBjdHlwID1cbiAgICBsZXQgbG9jID0geyBjdHlwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbGV0IGZwID0gdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgY3R5cCBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIG1hdGNoIGZwIHdpdGhcbiAgICAgIHwgRnVuIGZ1bl9leHByIC0+IFslZXhwciBbJWUgZnVuX2V4cHJdIHlvanNvbl1cbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgeW9qc29uXSBtYXRjaGluZ3NcbiAgICBpblxuICAgIGxldCBmdWxsX3R5cGVfbmFtZSA9XG4gICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICBcIiVzIGxpbmUgJWk6ICVzXCJcbiAgICAgICAgcGF0aFxuICAgICAgICBsb2MubG9jX3N0YXJ0LnBvc19sbnVtXG4gICAgICAgIChzdHJpbmdfb2ZfY29yZV90eXBlIGN0eXApXG4gICAgaW5cbiAgICBbJWV4cHJcbiAgICAgIGZ1biB5b2pzb24gLT5cbiAgICAgICAgbGV0IF90cF9sb2MgPSBbJWUgZXN0cmluZyB+bG9jIGZ1bGxfdHlwZV9uYW1lXSBpblxuICAgICAgICBbJWUgYm9keV1dXG4gIDs7XG5lbmRcblxubW9kdWxlIFlvanNvbl9vZiA9IHN0cnVjdFxuICBsZXQgdHlwZV9leHRlbnNpb24gdHkgPVxuICAgIFNpZ19nZW5lcmF0ZV95b2pzb25fb2YudHlwZV9vZl95b2pzb25fb2YgfmxvYzp7IHR5LnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IHR5XG4gIDs7XG5cbiAgbGV0IGNvcmVfdHlwZSB0eSA9XG4gICAgU3RyX2dlbmVyYXRlX3lvanNvbl9vZi55b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzpgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgdHlcbiAgICB8PiBGdW5fb3JfbWF0Y2guZXhwciB+bG9jOnsgdHkucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH1cbiAgOztcblxuICBsZXQgc2lnX3R5cGVfZGVjbCA9IFNpZ19nZW5lcmF0ZV95b2pzb25fb2YubWtfc2lnXG4gIGxldCBzdHJfdHlwZV9kZWNsID0gU3RyX2dlbmVyYXRlX3lvanNvbl9vZi55b2pzb25fb2ZfdGRzXG5lbmRcblxubW9kdWxlIFlvanNvbl9maWVsZHMgPSBzdHJ1Y3RcbiAgbGV0IHN0cl90eXBlX2RlY2wgPSBTdHJfZ2VuZXJhdGVfeW9qc29uX2ZpZWxkcy55b2pzb25fZmllbGRzX29mX3Rkc1xuZW5kXG5cbm1vZHVsZSBPZl95b2pzb24gPSBzdHJ1Y3RcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uIHR5ID1cbiAgICBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLnR5cGVfb2Zfb2ZfeW9qc29uIH5sb2M6eyB0eS5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSB0eVxuICA7O1xuXG4gIGxldCBjb3JlX3R5cGUgPVxuICAgIFN0cl9nZW5lcmF0ZV9vZl95b2pzb24udHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmc6YGRpc2FsbG93ZWRfaW5fdHlwZV9leHByXG4gIDs7XG5cbiAgbGV0IHNpZ190eXBlX2RlY2wgPSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLm1rX3NpZ1xuICBsZXQgc3RyX3R5cGVfZGVjbCA9IFN0cl9nZW5lcmF0ZV9vZl95b2pzb24udGRzX29mX3lvanNvblxuZW5kXG5cbm1vZHVsZSBTaWdfeW9qc29uID0gc3RydWN0XG4gIGxldCBta19zaWcgfmxvYyB+cGF0aCBkZWNscyA9XG4gICAgU2lnX2dlbmVyYXRlX3lvanNvbl9vZi5ta19zaWcgfmxvYyB+cGF0aCBkZWNsc1xuICAgIEAgU2lnX2dlbmVyYXRlX29mX3lvanNvbi5ta19zaWcgfnBvbHk6ZmFsc2UgfmxvYyB+cGF0aCBkZWNsc1xuICA7O1xuXG4gIGxldCBzaWdfdHlwZV9kZWNsIH5sb2MgfnBhdGggKChfcmYsIHRkcykgYXMgZGVjbHMpID1cbiAgICBtYXRjaFxuICAgICAgbWtfbmFtZWRfc2lnXG4gICAgICAgIH5sb2NcbiAgICAgICAgfnNnX25hbWU6XCJQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbmFibGUuU1wiXG4gICAgICAgIH5oYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudDpmYWxzZVxuICAgICAgICB0ZHNcbiAgICB3aXRoXG4gICAgfCBTb21lIGluY2x1ZGVfaW5mb3MgLT4gWyBwc2lnX2luY2x1ZGUgfmxvYyBpbmNsdWRlX2luZm9zIF1cbiAgICB8IE5vbmUgLT4gbWtfc2lnIH5sb2MgfnBhdGggZGVjbHNcbiAgOztcbmVuZFxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNvb19ydW50aW1lLlJ1bnRpbWVfdmVyc2lvbiAqKVxubW9kdWxlIFJ1bnRpbWVfdmVyc2lvbiA9IEpzb29fcnVudGltZV9fUnVudGltZV92ZXJzaW9uXG5cbm1vZHVsZSBKc29vX3J1bnRpbWVfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwibW9kdWxlIEpzID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIHR5cGUgJ2EganNfYXJyYXkgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrID0gdFxuXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBleHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNieXRlc19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbiAgZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG4gIGV4dGVybmFsIHRvX2Jvb2wgOiB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2FycmF5IDogdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuICBleHRlcm5hbCBmbG9hdF9vZl9udW1iZXIgOiB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfaW50MzIgOiBpbnQzMiAtPiB0ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG4gIGV4dGVybmFsIGludDMyX29mX251bWJlciA6IHQgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgbmF0aXZlaW50X29mX251bWJlciA6IHQgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgdHlwZW9mIDogdCAtPiB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5cbiAgZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgZXh0ZXJuYWwgZ2V0IDogdCAtPiB0IC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcblxuICBleHRlcm5hbCBzZXQgOiB0IC0+IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgZXh0ZXJuYWwgZGVsZXRlIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICBleHRlcm5hbCBjYWxsIDogdCAtPiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19jYWxsXCJcblxuICBleHRlcm5hbCBmdW5fY2FsbCA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGwgOiB0IC0+IHN0cmluZyAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuICBleHRlcm5hbCBuZXdfb2JqIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbmV3XCJcblxuICBleHRlcm5hbCBuZXdfb2JqX2FyciA6IHQgLT4gdCBqc19hcnJheSAtPiB0ID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxuICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogdCkgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gIGV4dGVybmFsIGVxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHB1cmVfZXhwciA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9qc19wdXJlX2V4cHJcIlxuXG4gIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAodCBqc19hcnJheSAtPiAnYikgLT4gKCdjLCB0IGpzX2FycmF5IC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKCdiIC0+IHQganNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgdCBqc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuZW5kXG5cbm1vZHVsZSBTeXMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBjYWxsYmFjayA9ICdhXG5cbiAgZXh0ZXJuYWwgY3JlYXRlX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBjb250ZW50OnN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2NyZWF0ZV9maWxlXCJcblxuICBleHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG4gIGV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOiBvdXRfY2hhbm5lbCAtPiAoanNfc3RyaW5nOkpzLnQgLT4gdW5pdCkgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfaW5wdXQnIDogaW5fY2hhbm5lbCAtPiAodW5pdCAtPiBzdHJpbmcpIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG4gIGV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuICBleHRlcm5hbCBtb3VudF9hdXRvbG9hZCA6IHN0cmluZyAtPiAoc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG4gIGV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxuICB0eXBlIHJlZGlyZWN0aW9uXG5cbiAgZXh0ZXJuYWwgcmVkaXJlY3RfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IGludG86b3V0X2NoYW5uZWwgLT4gcmVkaXJlY3Rpb25cbiAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3JlZGlyZWN0XCJcblxuICBleHRlcm5hbCByZXN0b3JlX2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiByZWRpcmVjdGlvbiAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfY2hhbm5lbF9yZXN0b3JlXCJcblxuICBtb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gICAgZXh0ZXJuYWwgdXNlX2pzX3N0cmluZyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmdcIlxuXG4gICAgZXh0ZXJuYWwgZWZmZWN0cyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHNcIlxuICBlbmRcblxuICBsZXQgdmVyc2lvbiA9IFJ1bnRpbWVfdmVyc2lvbi5zXG5cbiAgbGV0IGdpdF92ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLmdpdF92ZXJzaW9uXG5lbmRcblxubW9kdWxlIEVycm9yIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCByYWlzZV8gOiB0IC0+ICdhXG5cbiAgdmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG5cbiAgKCoqIEF0dGFjaCBhIEphdmFzU2NyaXB0IGVycm9yIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbi4gIGlmIFtmb3JjZSA9IGZhbHNlXSBhbmQgYVxuICAgIEphdmFzU2NyaXB0IGVycm9yIGlzIGFscmVhZHkgYXR0YWNoZWQsIGl0IHdpbGwgZG8gbm90aGluZy4gVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgdG9cbiAgICBzdG9yZSBhbmQgcmV0cmlldmUgaW5mb3JtYXRpb24gYWJvdXQgSmF2YVNjcmlwdCBzdGFjayB0cmFjZXMuXG5cbiAgICBBdHRhY2hpbmcgSmF2YXNTY3JpcHQgZXJyb3JzIHdpbGwgaGFwcGVuIGF1dG9tYXRpY2FsbHkgd2hlbiBjb21waWxpbmcgd2l0aFxuICAgIFstLWVuYWJsZSB3aXRoLWpzLWVycm9yXS4gKilcblxuICB2YWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uXG4gICgqKiBFeHRyYWN0IGEgSmF2YVNjcmlwdCBlcnJvciBhdHRhY2hlZCB0byBhbiBPQ2FtbCBleGNlcHRpb24sIGlmIGFueS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICAgICBpbnNwZWN0IGFuIGV2ZW50dWFsIHN0YWNrIHN0cmFjZSwgZXNwZWNpYWxseSB3aGVuIHNvdXJjZW1hcCBpcyBlbmFibGVkLiAqKVxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuICAoKiogVGhlIFtFcnJvcl0gZXhjZXB0aW9uIHdyYXAgamF2YXNjcmlwdCBleGNlcHRpb25zIHdoZW4gY2F1Z2h0IGJ5IE9DYW1sIGNvZGUuXG4gICAgICBJbiBjYXNlIHRoZSBqYXZhc2NyaXB0IGV4Y2VwdGlvbiBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgamF2YXNjcmlwdCBbRXJyb3JdLFxuICAgICAgaXQgd2lsbCBiZSBzZXJpYWxpemVkIGFuZCB3cmFwcGVkIGludG8gYSBbRmFpbHVyZV0gZXhjZXB0aW9uLlxuICAqKVxuZW5kID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuXG4gIGxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwianNFcnJvclwiIChFeG4gKE9iai5tYWdpYyBbfHxdKSlcblxuICBsZXQgcmFpc2VfIDogdCAtPiAnYSA9IEpzLmpzX2V4cHIgXCIoZnVuY3Rpb24gKGV4bikgeyB0aHJvdyBleG4gfSlcIlxuXG4gIGV4dGVybmFsIG9mX2V4biA6IGV4biAtPiB0IG9wdGlvbiA9IFwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXCJcblxuICBleHRlcm5hbCBhdHRhY2hfanNfYmFja3RyYWNlIDogZXhuIC0+IGZvcmNlOmJvb2wgLT4gZXhuID0gXCJjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVwiXG5lbmRcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzItNjBcIl1cblxubW9kdWxlIEZvcl9jb21wYXRpYmlsaXR5X29ubHkgPSBzdHJ1Y3RcbiAgKCogQWRkIHByaW1pdGl2ZXMgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucy4gRXhpc3RpbmcgdXNlcnMgbWlnaHRcbiAgICAgZGVwZW5kIG9uIGl0IChlLmcuIGdlbl9qc19hcGkpLCB3ZSBkb250IHdhbnQgdGhlIG9jYW1sIGNvbXBpbGVyXG4gICAgIHRvIGNvbXBsYWluIGFib3V0IHRoZXNlcyBtaXNzaW5nIHByaW1pdGl2ZXMuICopXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc19mcm9tX3N0cmluZyA6IHN0cmluZyAtPiBKcy50ID0gXCJjYW1sX2pzX2Zyb21fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fYnl0ZV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgOiAnYSBKcy5qc19hcnJheSAtPiAnYSBsaXN0ID0gXCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF90b19qc19hcnJheSA6ICdhIGxpc3QgLT4gJ2EgSnMuanNfYXJyYXkgPSBcImNhbWxfbGlzdF90b19qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbmVuZFxuXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0eXBlZEFycmF5ID0gSnMudFxuXG4gIHR5cGUgYXJyYXlCdWZmZXIgPSBKcy50XG5cbiAgdHlwZSB1aW50OEFycmF5ID0gSnMudFxuXG4gIGV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IpIEJpZ2FycmF5LmtpbmRcbiAgICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5XG4gICAgPSBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gICAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbiAgbW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgPSBcImJpZ3N0cmluZ190b19hcnJheV9idWZmZXJcIlxuXG4gICAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSA9IFwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5XCJcblxuICAgIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgLT4gdCA9IFwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcIlxuICBlbmRcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgSW50NjQgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlX2ludDY0X2xvX21pX2hpIDogaW50IC0+IGludCAtPiBpbnQgLT4gSW50NjQudFxuICAgID0gXCJjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVwiXG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkNTUyAqKVxubW9kdWxlIENTUyA9IEpzX29mX29jYW1sX19DU1NcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tICopXG5tb2R1bGUgRG9tID0gSnNfb2Zfb2NhbWxfX0RvbVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21fZXZlbnRzICopXG5tb2R1bGUgRG9tX2V2ZW50cyA9IEpzX29mX29jYW1sX19Eb21fZXZlbnRzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9odG1sICopXG5tb2R1bGUgRG9tX2h0bWwgPSBKc19vZl9vY2FtbF9fRG9tX2h0bWxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX3N2ZyAqKVxubW9kdWxlIERvbV9zdmcgPSBKc19vZl9vY2FtbF9fRG9tX3N2Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5FdmVudFNvdXJjZSAqKVxubW9kdWxlIEV2ZW50U291cmNlID0gSnNfb2Zfb2NhbWxfX0V2ZW50U291cmNlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZpbGUgKilcbm1vZHVsZSBGaWxlID0gSnNfb2Zfb2NhbWxfX0ZpbGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRmlyZWJ1ZyAqKVxubW9kdWxlIEZpcmVidWcgPSBKc19vZl9vY2FtbF9fRmlyZWJ1Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Gb3JtICopXG5tb2R1bGUgRm9ybSA9IEpzX29mX29jYW1sX19Gb3JtXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkdlb2xvY2F0aW9uICopXG5tb2R1bGUgR2VvbG9jYXRpb24gPSBKc19vZl9vY2FtbF9fR2VvbG9jYXRpb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW1wb3J0ICopXG5tb2R1bGUgSW1wb3J0ID0gSnNfb2Zfb2NhbWxfX0ltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbnRlcnNlY3Rpb25PYnNlcnZlciAqKVxubW9kdWxlIEludGVyc2VjdGlvbk9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX0ludGVyc2VjdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkludGwgKilcbm1vZHVsZSBJbnRsID0gSnNfb2Zfb2NhbWxfX0ludGxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnMgKilcbm1vZHVsZSBKcyA9IEpzX29mX29jYW1sX19Kc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Kc29uICopXG5tb2R1bGUgSnNvbiA9IEpzX29mX29jYW1sX19Kc29uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzdGFibGUgKilcbm1vZHVsZSBKc3RhYmxlID0gSnNfb2Zfb2NhbWxfX0pzdGFibGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuTGliX3ZlcnNpb24gKilcbm1vZHVsZSBMaWJfdmVyc2lvbiA9IEpzX29mX29jYW1sX19MaWJfdmVyc2lvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5NdXRhdGlvbk9ic2VydmVyICopXG5tb2R1bGUgTXV0YXRpb25PYnNlcnZlciA9IEpzX29mX29jYW1sX19NdXRhdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlBlcmZvcm1hbmNlT2JzZXJ2ZXIgKilcbm1vZHVsZSBQZXJmb3JtYW5jZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUmVnZXhwICopXG5tb2R1bGUgUmVnZXhwID0gSnNfb2Zfb2NhbWxfX1JlZ2V4cFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5SZXNpemVPYnNlcnZlciAqKVxubW9kdWxlIFJlc2l6ZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1Jlc2l6ZU9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlN5c19qcyAqKVxubW9kdWxlIFN5c19qcyA9IEpzX29mX29jYW1sX19TeXNfanNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuVHlwZWRfYXJyYXkgKilcbm1vZHVsZSBUeXBlZF9hcnJheSA9IEpzX29mX29jYW1sX19UeXBlZF9hcnJheVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5VcmwgKilcbm1vZHVsZSBVcmwgPSBKc19vZl9vY2FtbF9fVXJsXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldlYkdMICopXG5tb2R1bGUgV2ViR0wgPSBKc19vZl9vY2FtbF9fV2ViR0xcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV2ViU29ja2V0cyAqKVxubW9kdWxlIFdlYlNvY2tldHMgPSBKc19vZl9vY2FtbF9fV2ViU29ja2V0c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Xb3JrZXIgKilcbm1vZHVsZSBXb3JrZXIgPSBKc19vZl9vY2FtbF9fV29ya2VyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlhtbEh0dHBSZXF1ZXN0ICopXG5tb2R1bGUgWG1sSHR0cFJlcXVlc3QgPSBKc19vZl9vY2FtbF9fWG1sSHR0cFJlcXVlc3RcblxubW9kdWxlIEpzX29mX29jYW1sX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIigqIEpzX29mX29jYW1sXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5lbmRcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuICBsZXQgbWluICh4IDogaW50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSAoeSA6IHN0cmluZykgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuXG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpICh5IDogY2hhcikgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVGhpcyBsb2NhbCBtb2R1bGUgW0pzXSBpcyBuZWVkZWQgc28gdGhhdCB0aGUgcHB4X2pzIGV4dGVuc2lvbiB3b3JrIHdpdGhpbiB0aGF0IGZpbGUuICopXG5tb2R1bGUgSnMgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdFxuXG4gIHR5cGUgKC0nYSwgKydiKSBtZXRoX2NhbGxiYWNrXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIHR5cGUgdG9wXG5cbiAgICB0eXBlIGFueSA9IHRvcCB0XG5cbiAgICB0eXBlIGFueV9qc19hcnJheSA9IGFueVxuXG4gICAgZXh0ZXJuYWwgaW5qZWN0IDogJ2EgLT4gYW55ID0gXCIlaWRlbnRpdHlcIlxuXG4gICAgZXh0ZXJuYWwgY29lcmNlIDogXyB0IC0+IF8gdCA9IFwiJWlkZW50aXR5XCJcblxuICAgIGV4dGVybmFsIGdldCA6ICdhIC0+ICdiIC0+ICdjID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgICBleHRlcm5hbCBzZXQgOiAnYSAtPiAnYiAtPiAnYyAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgICBleHRlcm5hbCBkZWxldGUgOiAnYSAtPiAnYiAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbiAgICBleHRlcm5hbCBjYWxsIDogJ2EgLT4gJ2IgLT4gYW55IGFycmF5IC0+ICdjID0gXCJjYW1sX2pzX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgZnVuX2NhbGwgOiAnYSAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsIDogJ2EgLT4gc3RyaW5nIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29iaiA6ICdhIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19uZXdcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29ial9hcnIgOiAnYSAtPiBhbnlfanNfYXJyYXkgLT4gJ2IgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG4gICAgZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIGFueSkgYXJyYXkgLT4gJ2EgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuICAgIGV4dGVybmFsIGVxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9leHByIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2pzX3B1cmVfZXhwclwiXG5cbiAgICBleHRlcm5hbCBldmFsX3N0cmluZyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19ldmFsX3N0cmluZ1wiXG5cbiAgICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbiAgICBsZXQgZ2xvYmFsID0gcHVyZV9qc19leHByIFwiZ2xvYmFsVGhpc1wiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICAgKGFueV9qc19hcnJheSAtPiAnYikgLT4gKCdjLCBhbnlfanNfYXJyYXkgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3RcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgICAoJ2IgLT4gYW55X2pzX2FycmF5IC0+ICdhKSAtPiAoJ2IsIGFueV9qc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgICAoKiBERVBSRUNBVEVEICopXG4gICAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbiAgZW5kXG5cbiAgKCoqKiopXG5cbiAgdHlwZSAnYSBvcHQgPSAnYVxuXG4gIHR5cGUgJ2Egb3B0ZGVmID0gJ2FcblxuICBleHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuXG4gIGxldCBudWxsIDogJ2Egb3B0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIm51bGxcIlxuXG4gIGV4dGVybmFsIHNvbWUgOiAnYSAtPiAnYSBvcHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IHVuZGVmaW5lZCA6ICdhIG9wdGRlZiA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ1bmRlZmluZWRcIlxuXG4gIGV4dGVybmFsIGRlZiA6ICdhIC0+ICdhIG9wdGRlZiA9IFwiJWlkZW50aXR5XCJcblxuICBtb2R1bGUgdHlwZSBPUFQgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlbXB0eSA6ICdhIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgICB2YWwgbWFwIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcblxuICAgIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuXG4gICAgdmFsIHRlc3QgOiAnYSB0IC0+IGJvb2xcblxuICAgIHZhbCBpdGVyIDogJ2EgdCAtPiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICAgdmFsIGNhc2UgOiAnYSB0IC0+ICh1bml0IC0+ICdiKSAtPiAoJ2EgLT4gJ2IpIC0+ICdiXG5cbiAgICB2YWwgZ2V0IDogJ2EgdCAtPiAodW5pdCAtPiAnYSkgLT4gJ2FcblxuICAgIHZhbCBvcHRpb24gOiAnYSBvcHRpb24gLT4gJ2EgdFxuXG4gICAgdmFsIHRvX29wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHQgOiBPUFQgd2l0aCB0eXBlICdhIHQgPSAnYSBvcHQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBvcHRcblxuICAgIGxldCBlbXB0eSA9IG51bGxcblxuICAgIGxldCByZXR1cm4gPSBzb21lXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBsZXQgbWFwIHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBudWxsIGVsc2UgcmV0dXJuIChmIHgpXG5cbiAgICBsZXQgYmluZCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gbnVsbCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoZXF1YWxzIHggbnVsbClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoZXF1YWxzIHggbnVsbCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICBtb2R1bGUgT3B0ZGVmIDogT1BUIHdpdGggdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmXG5cbiAgICBsZXQgZW1wdHkgPSB1bmRlZmluZWRcblxuICAgIGxldCByZXR1cm4gPSBkZWZcblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGxldCBtYXAgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIHJldHVybiAoZiB4KVxuXG4gICAgbGV0IGJpbmQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICAoKioqKilcblxuICBsZXQgY29lcmNlIHggZiBnID0gT3B0LmdldCAoZiB4KSAoZnVuICgpIC0+IGcgeClcblxuICBsZXQgY29lcmNlX29wdCB4IGYgZyA9IE9wdC5nZXQgKE9wdC5iaW5kIHggZikgKGZ1biAoKSAtPiBnIHgpXG5cbiAgKCoqKiopXG5cbiAgdHlwZSArJ2EgbWV0aFxuXG4gIHR5cGUgKydhIGdlbl9wcm9wXG5cbiAgdHlwZSAnYSByZWFkb25seV9wcm9wID0gPCBnZXQgOiAnYSA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSB3cml0ZW9ubHlfcHJvcCA9IDwgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSBwcm9wID0gPCBnZXQgOiAnYSA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2Egb3B0ZGVmX3Byb3AgPSA8IGdldCA6ICdhIG9wdGRlZiA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgKydhIGNvbnN0clxuXG4gICgqKioqKVxuXG4gIHR5cGUgJ2EgY2FsbGJhY2sgPSAodW5pdCwgJ2EpIG1ldGhfY2FsbGJhY2tcblxuICBleHRlcm5hbCB3cmFwX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9tZXRoX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrXCJcblxuICAoKioqKilcblxuICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICgqKioqKVxuXG4gIGxldCBfdHJ1ZSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ0cnVlXCJcblxuICBsZXQgX2ZhbHNlID0gVW5zYWZlLnB1cmVfanNfZXhwciBcImZhbHNlXCJcblxuICB0eXBlIG1hdGNoX3Jlc3VsdF9oYW5kbGVcblxuICB0eXBlIHN0cmluZ19hcnJheVxuXG4gIHR5cGUgbnVtYmVyX3QgPSBmbG9hdFxuXG4gIGNsYXNzIHR5cGUgbnVtYmVyID0gb2JqZWN0XG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvU3RyaW5nX3JhZGl4IDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0ZpeGVkIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0V4cG9uZW50aWFsIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRXhwb25lbnRpYWxfZGlnaXRzIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1ByZWNpc2lvbiA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG4gIGVuZFxuXG4gIGFuZCBqc19zdHJpbmcgPSBvYmplY3RcbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdmFsdWVPZiA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjaGFyQXQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNoYXJDb2RlQXQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gICAgKCogVGhpcyBtYXkgcmV0dXJuIE5hTi4uLiAqKVxuICAgIG1ldGhvZCBjb25jYXQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzQgOlxuICAgICAganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2YgOiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2ZfZnJvbSA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleE9mIDoganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsYXN0SW5kZXhPZl9mcm9tIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbG9jYWxlQ29tcGFyZSA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IG1ldGhcblxuICAgIG1ldGhvZCBfbWF0Y2ggOiByZWdFeHAgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCBub3JtYWxpemUgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgbm9ybWFsaXplX2Zvcm0gOiBub3JtYWxpemF0aW9uIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHJlcGxhY2UgOiByZWdFeHAgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgcmVwbGFjZV9zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc2VhcmNoIDogcmVnRXhwIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNsaWNlX2VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXQgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfbGltaXRlZCA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfcmVnRXhwIDogcmVnRXhwIHQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X3JlZ0V4cExpbWl0ZWQgOiByZWdFeHAgdCAtPiBpbnQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZyA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZ190b0VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVMb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9VcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVVcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdHJpbSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBhbmQgcmVnRXhwID0gb2JqZWN0XG4gICAgbWV0aG9kIGV4ZWMgOiBqc19zdHJpbmcgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCB0ZXN0IDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzb3VyY2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZ2xvYmFsIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVDYXNlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtdWx0aWxpbmUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleCA6IGludCBwcm9wXG4gIGVuZFxuXG4gIGFuZCBub3JtYWxpemF0aW9uID0ganNfc3RyaW5nXG5cbiAgKCogc3RyaW5nIGlzIHVzZWQgYnkgcHB4X2pzLCBpdCBuZWVkcyB0byBjb21lIGJlZm9yZSBhbnkgdXNlIG9mIHRoZVxuICAgICBuZXcgc3ludGF4IGluIHRoaXMgZmlsZSAqKVxuICBleHRlcm5hbCBzdHJpbmcgOiBzdHJpbmcgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBsZXQgbmZjID0gc3RyaW5nIFwiTkZDXCJcblxuICBsZXQgbmZkID0gc3RyaW5nIFwiTkZEXCJcblxuICBsZXQgbmZrYyA9IHN0cmluZyBcIk5GS0NcIlxuXG4gIGxldCBuZmtkID0gc3RyaW5nIFwiTkZLRFwiXG5lbmRcblxuaW5jbHVkZSBKc1xuXG5jbGFzcyB0eXBlIHN0cmluZ19jb25zdHIgPSBvYmplY3RcbiAgbWV0aG9kIGZyb21DaGFyQ29kZSA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IHN0cmluZ19jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX1N0cmluZ1xuXG5sZXQgcmVnRXhwID0gVW5zYWZlLmdsb2JhbCMjLl9SZWdFeHBcblxubGV0IHJlZ0V4cF9jb3B5ID0gcmVnRXhwXG5cbmxldCByZWdFeHBfd2l0aEZsYWdzID0gcmVnRXhwXG5cbmNsYXNzIHR5cGUgWydhXSBqc19hcnJheSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25jYXQgOiAnYSBqc19hcnJheSB0IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBqb2luIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBwb3AgOiAnYSBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBwdXNoIDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcmV2ZXJzZSA6ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzaGlmdCA6ICdhIG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfZW5kIDogaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzb3J0IDogKCdhIC0+ICdhIC0+IG51bWJlcl90KSBjYWxsYmFjayAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc29ydF9hc1N0cmluZ3MgOiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzEgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMiA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8zIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzQgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0IDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2Qgc29tZSA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGV2ZXJ5IDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZm9yRWFjaCA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbWFwIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZmlsdGVyIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZV9pbml0IDogKCdiIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZSA6ICgnYSAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYSkgY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VSaWdodF9pbml0IDpcbiAgICAoJ2IgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIC0+ICdiIG1ldGhcblxuICBtZXRob2QgcmVkdWNlUmlnaHQgOiAoJ2EgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2EpIGNhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHByb3BcbmVuZFxuXG5sZXQgb2JqZWN0X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IG9iamVjdF9rZXlzIG8gOiBqc19zdHJpbmcgdCBqc19hcnJheSB0ID0gb2JqZWN0X2NvbnN0cnVjdG9yIyNrZXlzIG9cblxubGV0IGFycmF5X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9BcnJheVxuXG5sZXQgYXJyYXlfZW1wdHkgPSBhcnJheV9jb25zdHJ1Y3RvclxuXG5sZXQgYXJyYXlfbGVuZ3RoID0gYXJyYXlfY29uc3RydWN0b3JcblxubGV0IGFycmF5X2dldCA6ICdhICNqc19hcnJheSB0IC0+IGludCAtPiAnYSBvcHRkZWYgPSBVbnNhZmUuZ2V0XG5cbmxldCBhcnJheV9zZXQgOiAnYSAjanNfYXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFVuc2FmZS5zZXRcblxubGV0IGFycmF5X21hcF9wb2x5IDpcbiAgICAnYSAjanNfYXJyYXkgdCAtPiAoJ2EgLT4gaW50IC0+ICdhICNqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAjanNfYXJyYXkgdCA9XG4gZnVuIGEgY2IgLT4gKFVuc2FmZS5jb2VyY2UgYSkjI21hcCBjYlxuXG5sZXQgYXJyYXlfbWFwIGYgYSA9IGFycmF5X21hcF9wb2x5IGEgKHdyYXBfY2FsbGJhY2sgKGZ1biB4IF9pZHggXyAtPiBmIHgpKVxuXG5sZXQgYXJyYXlfbWFwaSBmIGEgPSBhcnJheV9tYXBfcG9seSBhICh3cmFwX2NhbGxiYWNrIChmdW4geCBpZHggXyAtPiBmIGlkeCB4KSlcblxuY2xhc3MgdHlwZSBtYXRjaF9yZXN1bHQgPSBvYmplY3RcbiAgaW5oZXJpdCBbanNfc3RyaW5nIHRdIGpzX2FycmF5XG5cbiAgbWV0aG9kIGluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5wdXQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHN0cl9hcnJheSA6IHN0cmluZ19hcnJheSB0IC0+IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgPSBVbnNhZmUuY29lcmNlXG5cbmxldCBtYXRjaF9yZXN1bHQgOiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgLT4gbWF0Y2hfcmVzdWx0IHQgPSBVbnNhZmUuY29lcmNlXG5cbmNsYXNzIHR5cGUgZGF0ZSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0ZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9UaW1lU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVEYXRlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVRpbWVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHZhbHVlT2YgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZ1bGxZZWFyIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRnVsbFllYXIgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNb250aCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01vbnRoIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0ZSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0RhdGUgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENEYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRIb3VycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0hvdXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TWludXRlcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbnV0ZXMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDU2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWV6b25lT2Zmc2V0IDogaW50IG1ldGhcblxuICBtZXRob2Qgc2V0VGltZSA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RnVsbFllYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENGdWxsWWVhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1vbnRoIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTW9udGggOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXRlIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRGF0ZSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldERheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0RheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEhvdXJzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDSG91cnMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNaW51dGVzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWludXRlcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENTZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdG9VVENTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvSVNPU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0pTT04gOiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkYXRlX2NvbnN0ciA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbW9udGggOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19kYXkgOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19ob3VyIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19taW4gOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19zZWMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbXMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBub3cgOiBudW1iZXJfdCBtZXRoXG5lbmRcblxubGV0IGRhdGVfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9EYXRlXG5cbmxldCBkYXRlIDogZGF0ZV9jb25zdHIgdCA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX25vdyA6IGRhdGUgdCBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9mcm9tVGltZVZhbHVlIDogKG51bWJlcl90IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbW9udGggOiAoaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2RheSA6IChpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2hvdXIgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbWluIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9zZWMgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9tcyA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPVxuICBkYXRlX2NvbnN0clxuXG5jbGFzcyB0eXBlIG1hdGggPSBvYmplY3RcbiAgbWV0aG9kIF9FIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4yIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4xMCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPRzJFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9HMTBFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUEkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUVJUMV8yXyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NRUlQyIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFzaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjZWlsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGV4cCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZmxvb3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGxvZyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXhfMyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4XzQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbiA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluXzMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbl80IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBwb3cgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHJhbmRvbSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgcm91bmQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNpbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc3FydCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdGFuIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbmxldCBtYXRoID0gVW5zYWZlLmdsb2JhbCMjLl9NYXRoXG5cbmNsYXNzIHR5cGUgZXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0YWNrIDoganNfc3RyaW5nIHQgb3B0ZGVmIHByb3BcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGVycm9yX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRXJyb3JcblxubW9kdWxlIEpzX2Vycm9yID0gc3RydWN0XG4gIHR5cGUgZXJyb3JfdCA9IGVycm9yIHRcblxuICBpbmNsdWRlIEpzb29fcnVudGltZS5FcnJvclxuXG4gIGV4dGVybmFsIG9mX2Vycm9yIDogZXJyb3JfdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGV4dGVybmFsIHRvX2Vycm9yIDogdCAtPiBlcnJvcl90ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBuYW1lIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubmFtZVxuXG4gIGxldCBtZXNzYWdlIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubWVzc2FnZVxuXG4gIGxldCBzdGFjayAoZSA6IHQpIDogc3RyaW5nIG9wdGlvbiA9XG4gICAgT3B0LnRvX29wdGlvbiAoT3B0Lm1hcCAodG9fZXJyb3IgZSkjIy5zdGFjayB0b19zdHJpbmcpXG5cbiAgbGV0IHRvX3N0cmluZyBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjdG9TdHJpbmdcbmVuZFxuXG5tb2R1bGUgTWFnaWMgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIGV4Y2VwdGlvbiBFcnJvciBvZiBlcnJvciB0XG4gIGVuZFxuXG4gIHR5cGUgKCdhLCAnYikgZXEgPSBFcSA6ICgnYSwgJ2EpIGVxXG5cbiAgbGV0IChlcSA6IChlcnJvciB0LCBKc19lcnJvci50KSBlcSkgPSBPYmoubWFnaWMgRXFcblxuICBsZXQgbSA9XG4gICAgbWF0Y2ggZXEgd2l0aFxuICAgIHwgRXEgLT5cbiAgICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgICBleGNlcHRpb24gRXJyb3IgPSBKc19lcnJvci5FeG5cbiAgICAgICAgZW5kIDogVClcblxuICBtb2R1bGUgRXJyb3IgPSAodmFsIG0gOiBUKVxuZW5kXG5cbmluY2x1ZGUgTWFnaWMuRXJyb3JcblxubGV0IHJhaXNlX2pzX2Vycm9yIGUgPSBKc19lcnJvci5yYWlzZV8gKEpzX2Vycm9yLm9mX2Vycm9yIGUpXG5cbmxldCBzdHJpbmdfb2ZfZXJyb3IgZSA9IEpzX2Vycm9yLnRvX3N0cmluZyAoSnNfZXJyb3Iub2ZfZXJyb3IgZSlcblxubGV0IGV4bl93aXRoX2pzX2JhY2t0cmFjZSA9IEpzX2Vycm9yLmF0dGFjaF9qc19iYWNrdHJhY2VcblxuZXh0ZXJuYWwganNfZXJyb3Jfb2ZfZXhuIDogZXhuIC0+IGVycm9yIHQgb3B0ID0gXCJjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvblwiXG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeSA6ICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgX0pTT04gOiBqc29uIHQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGRlY29kZVVSSSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5kZWNvZGVVUkkgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBkZWNvZGVVUklDb21wb25lbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZGVjb2RlVVJJQ29tcG9uZW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZW5jb2RlVVJJIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVuY29kZVVSSSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVuY29kZVVSSUNvbXBvbmVudCAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lbmNvZGVVUklDb21wb25lbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZXNjYXBlIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgdW5lc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMudW5lc2NhcGUgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmV4dGVybmFsIGJvb2wgOiBib29sIC0+IGJvb2wgdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG5leHRlcm5hbCB0b19ib29sIDogYm9vbCB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbmV4dGVybmFsIGFycmF5IDogJ2EgYXJyYXkgLT4gJ2EganNfYXJyYXkgdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcblxuZXh0ZXJuYWwgdG9fYXJyYXkgOiAnYSBqc19hcnJheSB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuZXh0ZXJuYWwgYnl0ZXN0cmluZyA6IHN0cmluZyAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuXG5leHRlcm5hbCBmbG9hdCA6IGZsb2F0IC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG5leHRlcm5hbCB0b19mbG9hdCA6IG51bWJlcl90IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gbnVtYmVyIHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbmV4dGVybmFsIGZsb2F0X29mX251bWJlciA6IG51bWJlciB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgaW50MzIgOiBpbnQzMiAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBudW1iZXJfdCAtPiBpbnQzMiA9IFwiY2FtbF9qc190b19pbnQzMlwiXG5cbmV4dGVybmFsIG5hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IG51bWJlcl90IC0+IG5hdGl2ZWludCA9IFwiY2FtbF9qc190b19uYXRpdmVpbnRcIlxuXG5leHRlcm5hbCB0eXBlb2YgOiBfIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IF8gdCAtPiBfIGNvbnN0ciAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG5sZXQgaXNOYU4gKGkgOiAnYSkgOiBib29sID1cbiAgdG9fYm9vbCAoVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5pc05hTiBbfCBVbnNhZmUuaW5qZWN0IGkgfF0pXG5cbmxldCBwYXJzZUludCAocyA6IGpzX3N0cmluZyB0KSA6IGludCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUludCBbfCBVbnNhZmUuaW5qZWN0IHMgfF0gaW5cbiAgaWYgaXNOYU4gcyB0aGVuIGZhaWx3aXRoIFwicGFyc2VJbnRcIiBlbHNlIHNcblxubGV0IHBhcnNlRmxvYXQgKHMgOiBqc19zdHJpbmcgdCkgOiBudW1iZXJfdCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUZsb2F0IFt8IFVuc2FmZS5pbmplY3QgcyB8XSBpblxuICBpZiBpc05hTiBzIHRoZW4gZmFpbHdpdGggXCJwYXJzZUZsb2F0XCIgZWxzZSBzXG5cbmxldCBfID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuY3Rpb25cbiAgICAgIHwgSnNfZXJyb3IuRXhuIGUgLT4gU29tZSAoSnNfZXJyb3IudG9fc3RyaW5nIGUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IF8gPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW4gZSAtPlxuICAgICAgbGV0IGUgOiA8IC4uID4gdCA9IE9iai5tYWdpYyBlIGluXG4gICAgICBpZiBpbnN0YW5jZW9mIGUgYXJyYXlfY29uc3RydWN0b3IgdGhlbiBOb25lIGVsc2UgU29tZSAodG9fc3RyaW5nIGUjI3RvU3RyaW5nKSlcblxubGV0IGV4cG9ydF9qcyAoZmllbGQgOiBqc19zdHJpbmcgdCkgeCA9XG4gIFVuc2FmZS5zZXRcbiAgICAoVW5zYWZlLnB1cmVfanNfZXhwciBcImpzb29fZXhwb3J0c1wiKVxuICAgIGZpZWxkXG4gICAgKGlmIFN0cmluZy5lcXVhbCAoSnMudG9fc3RyaW5nICh0eXBlb2YgKE9iai5tYWdpYyB4KSkpIFwiZnVuY3Rpb25cIlxuICAgICAgICAoKiBmdW5jdGlvbiB3aXRoIGFyaXR5L2xlbmd0aCBlcXVhbCB0byB6ZXJvIGFyZSBhbHJlYWR5IHdyYXBwZWQgKilcbiAgICAgICAgJiYgVW5zYWZlLmdldCAoT2JqLm1hZ2ljIHgpIChKcy5zdHJpbmcgXCJsZW5ndGhcIikgPiAwXG4gICAgIHRoZW4gT2JqLm1hZ2ljICh3cmFwX2NhbGxiYWNrIChPYmoubWFnaWMgeCkpXG4gICAgIGVsc2UgeClcblxubGV0IGV4cG9ydCBmaWVsZCB4ID0gZXhwb3J0X2pzIChzdHJpbmcgZmllbGQpIHhcblxubGV0IGV4cG9ydF9hbGwgb2JqID1cbiAgbGV0IGtleXMgPSBvYmplY3Rfa2V5cyBvYmogaW5cbiAga2V5cyMjZm9yRWFjaFxuICAgICh3cmFwX2NhbGxiYWNrIChmdW4gKGtleSA6IGpzX3N0cmluZyB0KSBfIF8gLT4gZXhwb3J0X2pzIGtleSAoVW5zYWZlLmdldCBvYmoga2V5KSkpXG5cbigqKioqKVxuXG4oKiBERVBSRUNBVEVEICopXG5cbnR5cGUgZmxvYXRfcHJvcCA9IG51bWJlcl90IHByb3BcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIG5vZGVMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbGlzdF9vZl9ub2RlTGlzdCAobm9kZUxpc3QgOiAnYSBub2RlTGlzdCB0KSA9XG4gIGxldCBsZW5ndGggPSBub2RlTGlzdCMjLmxlbmd0aCBpblxuICBsZXQgcmVjIGFkZF9pdGVtIGFjYyBpID1cbiAgICBpZiBpIDwgbGVuZ3RoXG4gICAgdGhlblxuICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAobm9kZUxpc3QjI2l0ZW0gaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGFkZF9pdGVtIGFjYyAoaSArIDEpXG4gICAgICB8IFNvbWUgZSAtPiBhZGRfaXRlbSAoZSA6OiBhY2MpIChpICsgMSlcbiAgICBlbHNlIExpc3QucmV2IGFjY1xuICBpblxuICBhZGRfaXRlbSBbXSAwXG5cbnR5cGUgbm9kZVR5cGUgPVxuICB8IE9USEVSXG4gICgqIFdpbGwgbm90IGhhcHBlbiAqKVxuICB8IEVMRU1FTlRcbiAgfCBBVFRSSUJVVEVcbiAgfCBURVhUXG4gIHwgQ0RBVEFfU0VDVElPTlxuICB8IEVOVElUWV9SRUZFUkVOQ0VcbiAgfCBFTlRJVFlcbiAgfCBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OXG4gIHwgQ09NTUVOVFxuICB8IERPQ1VNRU5UXG4gIHwgRE9DVU1FTlRfVFlQRVxuICB8IERPQ1VNRU5UX0ZSQUdNRU5UXG4gIHwgTk9UQVRJT05cblxubW9kdWxlIERvY3VtZW50UG9zaXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgdHlwZSBtYXNrID0gaW50XG5cbiAgbGV0IGRpc2Nvbm5lY3RlZCA9IDB4MDFcblxuICBsZXQgcHJlY2VkaW5nID0gMHgwMlxuXG4gIGxldCBmb2xsb3dpbmcgPSAweDA0XG5cbiAgbGV0IGNvbnRhaW5zID0gMHgwOFxuXG4gIGxldCBjb250YWluZWRfYnkgPSAweDEwXG5cbiAgbGV0IGltcGxlbWVudGF0aW9uX3NwZWNpZmljID0gMHgyMFxuXG4gIGxldCBoYXMgdCBtYXNrID0gdCBsYW5kIG1hc2sgPSBtYXNrXG5cbiAgbGV0IGFkZCB4IHkgPSB4IGxvciB5XG5cbiAgbGV0ICggKyApID0gYWRkXG5lbmRcblxuY2xhc3MgdHlwZSBub2RlID0gb2JqZWN0XG4gIG1ldGhvZCBub2RlTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVR5cGUgOiBub2RlVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudE5vZGUgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IG5vZGUgbm9kZUxpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbGFzdENoaWxkIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lc3BhY2VVUkkgOiBqc19zdHJpbmcgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRCZWZvcmUgOiBub2RlIHQgLT4gbm9kZSB0IG9wdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUNoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZENoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0NoaWxkTm9kZXMgOiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZU5vZGUgOiBib29sIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgY29tcGFyZURvY3VtZW50UG9zaXRpb24gOiBub2RlIHQgLT4gRG9jdW1lbnRQb3NpdGlvbi50IG1ldGhcblxuICBtZXRob2QgbG9va3VwTmFtZXNwYWNlVVJJIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbG9va3VwUHJlZml4IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgYXBwZW5kQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNhcHBlbmRDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVtb3ZlQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNyZW1vdmVDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVwbGFjZUNoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQpID1cbiAgaWdub3JlIChwIyNyZXBsYWNlQ2hpbGQgKG4gOj4gbm9kZSB0KSAobyA6PiBub2RlIHQpKVxuXG5sZXQgaW5zZXJ0QmVmb3JlIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQgb3B0KSA9XG4gIGlnbm9yZSAocCMjaW5zZXJ0QmVmb3JlIChuIDo+IG5vZGUgdCkgKG8gOj4gbm9kZSB0IG9wdCkpXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtBdHRyXSBvYmplY3RzLiAqKVxuY2xhc3MgdHlwZSBhdHRyID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGVjaWZpZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3duZXJFbGVtZW50IDogZWxlbWVudCB0IHByb3BcbmVuZFxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbTmFtZWROb2RlTWFwXSBvYmplY3RzLiAqKVxuYW5kIFsnbm9kZV0gbmFtZWROb2RlTWFwID0gb2JqZWN0XG4gIG1ldGhvZCBnZXROYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldE5hbWVkSXRlbSA6ICdub2RlIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVOYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtFbGVtZW50XSBvYmplY3RzLiAqKVxuYW5kIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIHRhZ05hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaGFzQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBoYXNBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5vZGUgOiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOb2RlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZU5TIDogYXR0ciB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5VGFnTmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgbm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyIG5hbWVkTm9kZU1hcCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGNoYXJhY3RlckRhdGEgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1YmpzX3N0cmluZ0RhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kRGF0YSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnREYXRhIDogaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVEYXRhIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZURhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgY29tbWVudCA9IGNoYXJhY3RlckRhdGFcblxuY2xhc3MgdHlwZSB0ZXh0ID0gY2hhcmFjdGVyRGF0YVxuXG5jbGFzcyB0eXBlIGRvY3VtZW50RnJhZ21lbnQgPSBub2RlXG5cbmNsYXNzIHR5cGUgWydlbGVtZW50XSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgZG9jdW1lbnRFbGVtZW50IDogJ2VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQgOiBkb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVFbGVtZW50IDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUVsZW1lbnROUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0Tm9kZSA6IGpzX3N0cmluZyB0IC0+IHRleHQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUNvbW1lbnQgOiBqc19zdHJpbmcgdCAtPiBjb21tZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeVRhZ05hbWUgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCBub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgaW1wb3J0Tm9kZSA6IGVsZW1lbnQgdCAtPiBib29sIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGFkb3B0Tm9kZSA6IGVsZW1lbnQgdCAtPiAnZWxlbWVudCB0IG1ldGhcbmVuZFxuXG50eXBlIG5vZGVfdHlwZSA9XG4gIHwgRWxlbWVudCBvZiBlbGVtZW50IHRcbiAgfCBBdHRyIG9mIGF0dHIgdFxuICB8IFRleHQgb2YgdGV4dCB0XG4gIHwgT3RoZXIgb2Ygbm9kZSB0XG5cbmxldCBub2RlVHlwZSBlID1cbiAgbWF0Y2ggZSMjLm5vZGVUeXBlIHdpdGhcbiAgfCBFTEVNRU5UIC0+IEVsZW1lbnQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBBVFRSSUJVVEUgLT4gQXR0ciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IENEQVRBX1NFQ1RJT04gfCBURVhUIC0+IFRleHQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBfIC0+IE90aGVyIChlIDo+IG5vZGUgdClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBjYXN0IChlIDogI25vZGUgSnMudCkgdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IHQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBlbGVtZW50IGUgOiBlbGVtZW50IEpzLnQgSnMub3B0ID0gY2FzdCBlIEVMRU1FTlRcblxuICBsZXQgdGV4dCBlIDogdGV4dCBKcy50IEpzLm9wdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IFRFWFQgfHwgZSMjLm5vZGVUeXBlID09IENEQVRBX1NFQ1RJT05cbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYXR0ciBlIDogYXR0ciBKcy50IEpzLm9wdCA9IGNhc3QgZSBBVFRSSUJVVEVcbmVuZFxuXG50eXBlICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gKCdhLCAnYiAtPiBib29sIHQpIG1ldGhfY2FsbGJhY2sgb3B0XG4oKiogVGhlIHR5cGUgb2YgZXZlbnQgbGlzdGVuZXIgZnVuY3Rpb25zLiAgVGhlIGZpcnN0IHR5cGUgcGFyYW1ldGVyXG4gICAgICBbJ2FdIGlzIHRoZSB0eXBlIG9mIHRoZSB0YXJnZXQgb2JqZWN0OyB0aGUgc2Vjb25kIHBhcmFtZXRlclxuICAgICAgWydiXSBpcyB0aGUgdHlwZSBvZiB0aGUgZXZlbnQgb2JqZWN0LiAqKVxuXG5jbGFzcyB0eXBlIFsnYV0gZXZlbnQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUYXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgKCogTGVnYWN5IG1ldGhvZHMgKilcbiAgbWV0aG9kIHNyY0VsZW1lbnQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gZXZlbnRcblxuICBtZXRob2QgZGV0YWlsIDogJ2IgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gSnMubnVsbFxuXG5sZXQgd2luZG93X2V2ZW50ICgpIDogJ2EgI2V2ZW50IHQgPSBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiZXZlbnRcIlxuXG4oKiBUaGUgZnVuY3Rpb24gcHJldmVudERlZmF1bHQgbXVzdCBiZSBjYWxsZWQgZXhwbGljaXRseSB3aGVuXG4gICB1c2luZyBhZGRFdmVudExpc3RlbmVyLi4uICopXG5sZXQgaGFuZGxlciBmID1cbiAgSnMuc29tZVxuICAgIChKcy5VbnNhZmUuY2FsbGJhY2sgKGZ1biBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkLiAqKVxuICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCAoc29tZSBlKSlcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBsZXQgZSA9IHdpbmRvd19ldmVudCAoKSBpblxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gZSMjLnJldHVyblZhbHVlIDo9IHJlcztcbiAgICAgICAgICAgcmVzKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgZnVsbF9oYW5kbGVyIGYgPVxuICBKcy5zb21lXG4gICAgKEpzLlVuc2FmZS5tZXRoX2NhbGxiYWNrIChmdW4gdGhpcyBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkICopXG4gICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IChzb21lIGUpKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIGxldCBlID0gd2luZG93X2V2ZW50ICgpIGluXG4gICAgICAgICAgIGxldCByZXMgPSBmIHRoaXMgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIGUjIy5yZXR1cm5WYWx1ZSA6PSByZXM7XG4gICAgICAgICAgIHJlcylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbGV0IHJlcyA9IGYgdGhpcyBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgaW52b2tlX2hhbmRsZXIgKGYgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lcikgKHRoaXMgOiAnYSkgKGV2ZW50IDogJ2IpIDogYm9vbCB0ID1cbiAgSnMuVW5zYWZlLmNhbGwgZiB0aGlzIFt8IEpzLlVuc2FmZS5pbmplY3QgZXZlbnQgfF1cblxubGV0IGV2ZW50VGFyZ2V0IChlIDogKDwgLi4gPiBhcyAnYSkgI2V2ZW50IHQpIDogJ2EgdCA9XG4gIGxldCB0YXJnZXQgPVxuICAgIE9wdC5nZXQgZSMjLnRhcmdldCAoZnVuICgpIC0+IE9wdC5nZXQgZSMjLnNyY0VsZW1lbnQgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpKVxuICBpblxuICBpZiBKcy5pbnN0YW5jZW9mIHRhcmdldCBKcy5VbnNhZmUuZ2xvYmFsIyMuX05vZGVcbiAgdGhlblxuICAgICgqIFdvcmthcm91bmQgZm9yIFNhZmFyaSBidWcgKilcbiAgICBsZXQgdGFyZ2V0JyA6IG5vZGUgSnMudCA9IEpzLlVuc2FmZS5jb2VyY2UgdGFyZ2V0IGluXG4gICAgaWYgdGFyZ2V0JyMjLm5vZGVUeXBlID09IFRFWFRcbiAgICB0aGVuIEpzLlVuc2FmZS5jb2VyY2UgKE9wdC5nZXQgdGFyZ2V0JyMjLnBhcmVudE5vZGUgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICAgIGVsc2UgdGFyZ2V0XG4gIGVsc2UgdGFyZ2V0XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlICdhIHR5cCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IG1ha2UgcyA9IEpzLnN0cmluZyBzXG5lbmRcblxudHlwZSBldmVudF9saXN0ZW5lcl9pZCA9IHVuaXQgLT4gdW5pdFxuXG5jbGFzcyB0eXBlIGV2ZW50X2xpc3RlbmVyX29wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGNhcHR1cmUgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXNzaXZlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBoID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmFkZEV2ZW50TGlzdGVuZXIpXG4gIHRoZW5cbiAgICBsZXQgZXYgPSAoSnMuc3RyaW5nIFwib25cIikjI2NvbmNhdCB0eXAgaW5cbiAgICBsZXQgY2FsbGJhY2sgZSA9IEpzLlVuc2FmZS5jYWxsIChoLCBlLCBbfHxdKSBpblxuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhdHRhY2hFdmVudCBldiBjYWxsYmFjayBpblxuICAgIGZ1biAoKSAtPiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjZGV0YWNoRXZlbnQgZXYgY2FsbGJhY2tcbiAgZWxzZVxuICAgIGxldCBvcHRzIDogZXZlbnRfbGlzdGVuZXJfb3B0aW9ucyB0ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gICAgbGV0IGl0ZXIgdCBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgYiAtPiBmIGJcbiAgICBpblxuICAgIGl0ZXIgY2FwdHVyZSAoZnVuIGIgLT4gb3B0cyMjLmNhcHR1cmUgOj0gYik7XG4gICAgaXRlciBvbmNlIChmdW4gYiAtPiBvcHRzIyMub25jZSA6PSBiKTtcbiAgICBpdGVyIHBhc3NpdmUgKGZ1biBiIC0+IG9wdHMjIy5wYXNzaXZlIDo9IGIpO1xuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhZGRFdmVudExpc3RlbmVyIHR5cCBoIG9wdHMgaW5cbiAgICBmdW4gKCkgLT4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3JlbW92ZUV2ZW50TGlzdGVuZXIgdHlwIGggb3B0c1xuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCBoIGNhcHQgPVxuICBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgZSB0eXAgfmNhcHR1cmU6Y2FwdCBoXG5cbmxldCByZW1vdmVFdmVudExpc3RlbmVyIGlkID0gaWQgKClcblxubGV0IHByZXZlbnREZWZhdWx0IGV2ID1cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyMucHJldmVudERlZmF1bHQgKCogSUUgaGFjayAqKVxuICB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGV2KSMjcHJldmVudERlZmF1bHRcbiAgZWxzZSAoSnMuVW5zYWZlLmNvZXJjZSBldikjIy5yZXR1cm5WYWx1ZSA6PSBKcy5ib29sIGZhbHNlXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA/YnViYmxlcyA/Y2FuY2VsYWJsZSA/ZGV0YWlsIHR5cCA9XG4gIGxldCBvcHRfaXRlciBmID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgbGV0IG9wdHMgPSBVbnNhZmUub2JqIFt8fF0gaW5cbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5idWJibGVzIDo9IGJvb2wgeCkgYnViYmxlcztcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5jYW5jZWxhYmxlIDo9IGJvb2wgeCkgY2FuY2VsYWJsZTtcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5kZXRhaWwgOj0gc29tZSB4KSBkZXRhaWw7XG4gIGxldCBjb25zdHIgOlxuICAgICAgKCAgICgnYSwgJ2IpICNjdXN0b21FdmVudCBKcy50IEV2ZW50LnR5cFxuICAgICAgIC0+IDwgZGV0YWlsIDogJ2Igb3B0IHByb3AgPiB0XG4gICAgICAgLT4gKCdhLCAnYikgY3VzdG9tRXZlbnQgdClcbiAgICAgIGNvbnN0ciA9XG4gICAgVW5zYWZlLmdsb2JhbCMjLl9DdXN0b21FdmVudFxuICBpblxuICBuZXclanMgY29uc3RyIHR5cCBvcHRzXG5cbigqIElFIDwgOSAqKVxuXG5jbGFzcyB0eXBlIHN0cmluZ0xpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGFpbnMgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxub3BlbiBKc1xuXG50eXBlIHVpbnQzMiA9IGZsb2F0XG5cbmNsYXNzIHR5cGUgYXJyYXlCdWZmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGJ5dGVMZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gYXJyYXlCdWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+IGFycmF5QnVmZmVyIHQgbWV0aFxuZW5kXG5cbmxldCBhcnJheUJ1ZmZlciA6IChpbnQgLT4gYXJyYXlCdWZmZXIgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9BcnJheUJ1ZmZlclxuXG5jbGFzcyB0eXBlIGFycmF5QnVmZmVyVmlldyA9IG9iamVjdFxuICBtZXRob2QgYnVmZmVyIDogYXJyYXlCdWZmZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ5dGVPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBieXRlTGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHR5cGVkQXJyYXkgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgX0JZVEVTX1BFUl9FTEVNRU5UIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0X2Zyb21BcnJheSA6ICdhIGpzX2FycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRfZnJvbVR5cGVkQXJyYXkgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdWJhcnJheSA6IGludCAtPiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3ViYXJyYXlfdG9FbmQgOiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgKCogVGhpcyBmYWtlIG1ldGhvZCBpcyBuZWVkZWQgZm9yIHR5cGluZyBwdXJwb3Nlcy5cbiAgICAgV2l0aG91dCBpdCwgWydiXSB3b3VsZCBub3QgYmUgY29uc3RyYWluZWQuICopXG4gIG1ldGhvZCBfY29udGVudF90eXBlXyA6ICdiIG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxudHlwZSBpbnQ4QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3NpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50OEFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfdW5zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgaW50MzJBcnJheSA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDMyQXJyYXkgPSAoaW50MzIsIEJpZ2FycmF5LmludDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGZsb2F0MzJBcnJheSA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBmbG9hdDY0QXJyYXkgPSAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0NjRfZWx0KSB0eXBlZEFycmF5XG5cbmV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuZXh0ZXJuYWwgZnJvbV9nZW5hcnJheSA6XG4gICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdFxuICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbmV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gID0gXCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXlcIlxuXG5sZXQgaW50OEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tQXJyYXkgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21CdWZmZXIgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9pbkJ1ZmZlciA9IGludDhBcnJheVxuXG5sZXQgdWludDhBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQXJyYXkgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQnVmZmVyID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9pbkJ1ZmZlciA9IHVpbnQ4QXJyYXlcblxubGV0IGludDE2QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUFycmF5ID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUJ1ZmZlciA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfaW5CdWZmZXIgPSBpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21BcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2luQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IGludDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUFycmF5ID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUJ1ZmZlciA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfaW5CdWZmZXIgPSBpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21BcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2luQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbUFycmF5ID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfaW5CdWZmZXIgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0NjRBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbUFycmF5ID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfaW5CdWZmZXIgPSBmbG9hdDY0QXJyYXlcblxubGV0IHNldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9XG4gZnVuIGEgaSB2IC0+IGFycmF5X3NldCAoVW5zYWZlLmNvZXJjZSBhKSBpIHZcblxubGV0IGdldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2Egb3B0ZGVmID0gZnVuIGEgaSAtPiBKcy5VbnNhZmUuZ2V0IGEgaVxuXG5sZXQgdW5zYWZlX2dldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgPSBmdW4gYSBpIC0+IEpzLlVuc2FmZS5nZXQgYSBpXG5cbmNsYXNzIHR5cGUgZGF0YVZpZXcgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgZ2V0SW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MTZfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQzMiA6IGludCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MzJfIDogaW50IC0+IGJvb2wgdCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQ2NCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0NjRfIDogaW50IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDggOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50OCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDE2IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MTZfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MzIgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQzMl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyIDogaW50IC0+IHVpbnQzMiAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyXyA6IGludCAtPiB1aW50MzIgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyXyA6IGludCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjQgOiBpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjRfIDogaW50IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgZGF0YVZpZXcgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0RhdGFWaWV3XG5cbmxldCBkYXRhVmlld19pbkJ1ZmZlciA9IGRhdGFWaWV3XG5cbm1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgSnMudCA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSBKcy50ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgSnMudCAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuXG4gIGxldCBvZl9hcnJheUJ1ZmZlciBhYiA9XG4gICAgbGV0IHVpbnQ4ID0gbmV3JWpzIHVpbnQ4QXJyYXlfZnJvbUJ1ZmZlciBhYiBpblxuICAgIG9mX3VpbnQ4QXJyYXkgdWludDhcbmVuZFxuXG5tb2R1bGUgQnl0ZXMgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgSnMudCAtPiBieXRlcyA9IFwiY2FtbF9ieXRlc19vZl9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IGJ5dGVzIC0+IHVpbnQ4QXJyYXkgSnMudCA9IFwiY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1wiXG5cbiAgbGV0IG9mX2FycmF5QnVmZmVyIGFiID1cbiAgICBsZXQgdWludDggPSBuZXclanMgdWludDhBcnJheV9mcm9tQnVmZmVyIGFiIGluXG4gICAgb2ZfdWludDhBcnJheSB1aW50OFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBibG9iID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBibG9iIHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV93aXRoQ29udGVudFR5cGUgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IC0+IGJsb2IgdCBtZXRoXG5lbmRcblxubGV0IGJsb2JfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9CbG9iXG5cbnR5cGUgJ2EgbWFrZV9ibG9iID1cbiAgP2NvbnRlbnRUeXBlOnN0cmluZyAtPiA/ZW5kaW5nczpbIGBUcmFuc3BhcmVudCB8IGBOYXRpdmUgXSAtPiAnYSAtPiBibG9iIHRcblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgdiA6OiBxIC0+IChcbiAgICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIHFcbiAgICAgIHwgU29tZSB2JyAtPiB2JyA6OiBmaWx0ZXJfbWFwIGYgcSlcblxubGV0IG1ha2VfYmxvYl9vcHRpb25zIGNvbnRlbnRUeXBlIGVuZGluZ3MgPVxuICBsZXQgb3B0aW9ucyA9XG4gICAgZmlsdGVyX21hcFxuICAgICAgKGZ1biAobmFtZSwgdikgLT5cbiAgICAgICAgbWF0Y2ggdiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSB2IC0+IFNvbWUgKG5hbWUsIFVuc2FmZS5pbmplY3QgKHN0cmluZyB2KSkpXG4gICAgICBbIFwidHlwZVwiLCBjb250ZW50VHlwZVxuICAgICAgOyAoIFwiZW5kaW5nc1wiXG4gICAgICAgICwgbWF0Y2ggZW5kaW5ncyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgYFRyYW5zcGFyZW50IC0+IFNvbWUgXCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgfCBTb21lIGBOYXRpdmUgLT4gU29tZSBcIm5hdGl2ZVwiIClcbiAgICAgIF1cbiAgaW5cbiAgbWF0Y2ggb3B0aW9ucyB3aXRoXG4gIHwgW10gLT4gdW5kZWZpbmVkXG4gIHwgbCAtPiBVbnNhZmUub2JqIChBcnJheS5vZl9saXN0IGwpXG5cbmxldCBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgYSA9XG4gIGxldCBvcHRpb25zID0gbWFrZV9ibG9iX29wdGlvbnMgY29udGVudFR5cGUgZW5kaW5ncyBpblxuICBuZXclanMgYmxvYl9jb25zdHIgKGFycmF5IGEpIG9wdGlvbnNcblxubGV0IGJsb2JfZnJvbV9zdHJpbmcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIHMgPVxuICBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgW3wgc3RyaW5nIHMgfF1cblxubGV0IGJsb2JfZnJvbV9hbnkgP2NvbnRlbnRUeXBlID9lbmRpbmdzIGwgPVxuICBsZXQgbCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IGBhcnJheUJ1ZmZlciBhIC0+IFVuc2FmZS5pbmplY3QgYVxuICAgICAgICB8IGBhcnJheUJ1ZmZlclZpZXcgYSAtPiBVbnNhZmUuaW5qZWN0IGFcbiAgICAgICAgfCBgc3RyaW5nIHMgLT4gVW5zYWZlLmluamVjdCAoc3RyaW5nIHMpXG4gICAgICAgIHwgYGpzX3N0cmluZyBzIC0+IFVuc2FmZS5pbmplY3Qgc1xuICAgICAgICB8IGBibG9iIGIgLT4gVW5zYWZlLmluamVjdCBiKVxuICAgICAgbFxuICBpblxuICBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgKEFycmF5Lm9mX2xpc3QgbClcblxuY2xhc3MgdHlwZSBmaWxlID0gb2JqZWN0XG4gIGluaGVyaXQgYmxvYlxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0TW9kaWZpZWREYXRlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGluIGZpcmVmb3ggMy4wLTMuNSBmaWxlLm5hbWUgaXMgbm90IGF2YWlsYWJsZSwgd2UgdXNlIHRoZSBub25zdGFuZGFyZCBmaWxlTmFtZSBpbnN0ZWFkICopXG5jbGFzcyB0eXBlIGZpbGVfbmFtZV9vbmx5ID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsZU5hbWUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBmaWxlbmFtZSBmaWxlID1cbiAgbGV0IGZpbGUgOiBmaWxlX25hbWVfb25seSB0ID0gSnMuVW5zYWZlLmNvZXJjZSBmaWxlIGluXG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZmlsZSMjLm5hbWUgd2l0aFxuICB8IE5vbmUgLT4gKFxuICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBmaWxlIyMuZmlsZU5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiY2FuJ3QgcmV0cmlldmUgZmlsZSBuYW1lOiBub3QgaW1wbGVtZW50ZWRcIlxuICAgICAgfCBTb21lIG5hbWUgLT4gbmFtZSlcbiAgfCBTb21lIG5hbWUgLT4gbmFtZVxuXG50eXBlIGZpbGVfYW55ID0gPCA+IHRcblxubGV0IGRvY19jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0RvY3VtZW50XG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBleHRlcm5hbCBqc29uIDogZmlsZV9hbnkgLT4gJ2EgT3B0LnQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IGRvY3VtZW50IChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgZG9jX2NvbnN0clxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogZWxlbWVudCBkb2N1bWVudCB0KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBibG9iIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgYmxvYl9jb25zdHIgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiAjYmxvYiB0KSBlbHNlIEpzLm51bGxcblxuICBsZXQgc3RyaW5nIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBKcy5lcXVhbHMgKHR5cGVvZiBlKSAoc3RyaW5nIFwic3RyaW5nXCIpXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBqc19zdHJpbmcgdClcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYXJyYXlCdWZmZXIgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdClcbiAgICBlbHNlIEpzLm51bGxcbmVuZFxuXG5jbGFzcyB0eXBlIGZpbGVMaXN0ID0gb2JqZWN0XG4gIGluaGVyaXQgW2ZpbGVdIERvbS5ub2RlTGlzdFxuZW5kXG5cbmNsYXNzIHR5cGUgZmlsZUVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBjb2RlIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gcHJvZ3Jlc3NFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gZXZlbnRcblxuICBtZXRob2QgbGVuZ3RoQ29tcHV0YWJsZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvYWRlZCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvdGFsIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHByb2dyZXNzRXZlbnRUYXJnZXQgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25sb2Fkc3RhcnQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnByb2dyZXNzIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hYm9ydCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlbmQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgRU1QVFlcbiAgfCBMT0FESU5HXG4gIHwgRE9ORVxuXG5jbGFzcyB0eXBlIGZpbGVSZWFkZXIgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2QgcmVhZEFzQXJyYXlCdWZmZXIgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNCaW5hcnlTdHJpbmcgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNUZXh0IDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzVGV4dF93aXRoRW5jb2RpbmcgOiAjYmxvYiB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNEYXRhVVJMIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXN1bHQgOiBmaWxlX2FueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVycm9yIDogZmlsZUVycm9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIGluaGVyaXQgcHJvZ3Jlc3NFdmVudFRhcmdldFxuZW5kXG5cbm1vZHVsZSBSZWFkZXJFdmVudCA9IHN0cnVjdFxuICB0eXBlIHR5cCA9IGZpbGVSZWFkZXIgcHJvZ3Jlc3NFdmVudCB0IERvbS5FdmVudC50eXBcblxuICBsZXQgbG9hZHN0YXJ0ID0gRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IHByb2dyZXNzID0gRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgYWJvcnQgPSBFdmVudC5tYWtlIFwiYWJvcnRcIlxuXG4gIGxldCBlcnJvciA9IEV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGxvYWQgPSBFdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IGxvYWRlbmQgPSBFdmVudC5tYWtlIFwibG9hZGVuZFwiXG5lbmRcblxubGV0IGZpbGVSZWFkZXIgOiBmaWxlUmVhZGVyIHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GaWxlUmVhZGVyXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuZXh0ZXJuYWwgY2FtbF9qc19vbl9pZSA6IHVuaXQgLT4gYm9vbCB0ID0gXCJjYW1sX2pzX29uX2llXCJcblxubGV0IG9uSUUgPSBKcy50b19ib29sIChjYW1sX2pzX29uX2llICgpKVxuXG5leHRlcm5hbCBodG1sX2VzY2FwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX2h0bWxfZXNjYXBlXCJcblxuZXh0ZXJuYWwgZGVjb2RlX2h0bWxfZW50aXRpZXMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc19odG1sX2VudGl0aWVzXCJcblxuY2xhc3MgdHlwZSBjc3NTdHlsZURlY2xhcmF0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBzZXRQcm9wZXJ0eSA6XG4gICAganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0ZGVmIC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvcGVydHlWYWx1ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvcGVydHlQcmlvcml0eSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlUHJvcGVydHkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGFuaW1hdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRGVsYXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRHVyYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkZpbGxNb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25JdGVyYXRpb25Db3VudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uTmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uUGxheVN0YXRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25UaW1pbmdGdW5jdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZEF0dGFjaG1lbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZEltYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kUG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRSZXBlYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21Db2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJDb2xsYXBzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJhZGl1cyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlcldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNhcHRpb25TaWRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGVhciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xpcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvdW50ZXJJbmNyZW1lbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvdW50ZXJSZXNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3NzRmxvYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNzc1RleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnNvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXNwbGF5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlbXB0eUNlbGxzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250RmFtaWx5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250U2l6ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250VmFyaWFudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFdlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZXR0ZXJTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaW5lSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZUltYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVQb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5Cb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpblJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5Ub3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1heEhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWF4V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWluV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9wYWNpdHkgOiBqc19zdHJpbmcgdCBvcHRkZWYgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVPZmZzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvdyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3dYIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvd1kgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdCb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdMZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdUb3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZ2VCcmVha0FmdGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWdlQnJlYWtCZWZvcmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBvaW50ZXJFdmVudHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFibGVMYXlvdXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFuY2hvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dERlY29yYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRJbmRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRUcmFuc2Zvcm0gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdHJhbnNmb3JtIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2ZXJ0aWNhbEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2aXNpYmlsaXR5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aGl0ZVNwYWNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd29yZFNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHpJbmRleCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG50eXBlICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gKCdhLCAnYikgRG9tLmV2ZW50X2xpc3RlbmVyXG5cbnR5cGUgbW91c2VfYnV0dG9uID1cbiAgfCBOb19idXR0b25cbiAgfCBMZWZ0X2J1dHRvblxuICB8IE1pZGRsZV9idXR0b25cbiAgfCBSaWdodF9idXR0b25cblxudHlwZSBkZWx0YV9tb2RlID1cbiAgfCBEZWx0YV9waXhlbFxuICB8IERlbHRhX2xpbmVcbiAgfCBEZWx0YV9wYWdlXG5cbmNsYXNzIHR5cGUgZXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmV2ZW50XG5lbmRcblxuYW5kIFsnYV0gY3VzdG9tRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudCwgJ2FdIERvbS5jdXN0b21FdmVudFxuZW5kXG5cbmFuZCBmb2N1c0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBidXR0b24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGljaCA6IG1vdXNlX2J1dHRvbiBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmcm9tRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG9FbGVtZW50IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBrZXlib2FyZEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvY2F0aW9uIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5IDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoaWNoIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJDb2RlIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleUNvZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRNb2RpZmllclN0YXRlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2Qga2V5SWRlbnRpZmllciA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNld2hlZWxFdmVudCA9IG9iamVjdFxuICAoKiBBbGwgbW9kZXJuIGJyb3dzZXJzICopXG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hlZWxEZWx0YVggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hlZWxEZWx0YVkgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFNb2RlIDogZGVsdGFfbW9kZSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNlU2Nyb2xsRXZlbnQgPSBvYmplY3RcbiAgKCogRmlyZWZveCAqKVxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgZGV0YWlsIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXhpcyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSE9SSVpPTlRBTF9BWElTIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJUSUNBTF9BWElTIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRvdWNoRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCB0b3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXRUb3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFuZ2VkVG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRvdWNoTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiB0b3VjaCB0IG9wdGRlZiBtZXRoXG5lbmRcblxuYW5kIHRvdWNoID0gb2JqZWN0XG4gIG1ldGhvZCBpZGVudGlmaWVyIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogZWxlbWVudCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5ZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VZIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3VibWl0RXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBzdWJtaXR0ZXIgOiBlbGVtZW50IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZHJhZ0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBkYXRhVHJhbnNmZXIgOiBkYXRhVHJhbnNmZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNsaXBib2FyZEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgY2xpcGJvYXJkRGF0YSA6IGRhdGFUcmFuc2ZlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZGF0YVRyYW5zZmVyID0gb2JqZWN0XG4gIG1ldGhvZCBkcm9wRWZmZWN0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlZmZlY3RBbGxvd2VkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHR5cGVzIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFkZEVsZW1lbnQgOiBlbGVtZW50IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGF0YSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRhdGFfYWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldERhdGEgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHNldERhdGEgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RHJhZ0ltYWdlIDogZWxlbWVudCB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIGV2ZW50VGFyZ2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9uY2xpY2sgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRibGNsaWNrIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZWRvd24gOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNldXAgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlb3ZlciA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2Vtb3ZlIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW91dCA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5cHJlc3MgOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleWRvd24gOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleXVwIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zY3JvbGwgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253aGVlbCA6ICgnc2VsZiB0LCBtb3VzZXdoZWVsRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnc3RhcnQgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2VuZCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnZW50ZXIgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ292ZXIgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2xlYXZlIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWcgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJvcCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25zdGFydCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbmVuZCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbml0ZXJhdGlvbiA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbmNhbmNlbCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25ydW4gOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbnN0YXJ0IDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25lbmQgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbmNhbmNlbCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25nb3Rwb2ludGVyY2FwdHVyZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb3N0cG9pbnRlcmNhcHR1cmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmVudGVyIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJjYW5jZWwgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmRvd24gOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmxlYXZlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJtb3ZlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJvdXQgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm92ZXIgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcnVwIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkaXNwYXRjaEV2ZW50IDogZXZlbnQgdCAtPiBib29sIHQgbWV0aFxuZW5kXG5cbmFuZCBwb3BTdGF0ZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgc3RhdGUgOiBKcy5VbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgcG9pbnRlckV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBwb2ludGVySWQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzc3VyZSA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFuZ2VudGlhbFByZXNzdXJlIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aWx0WCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbHRZIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHdpc3QgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb2ludGVyVHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNQcmltYXJ5IDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3RvcmFnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qga2V5IDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2xkVmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVybCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RvcmFnZUFyZWEgOiBzdG9yYWdlIHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3RvcmFnZSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5IDogaW50IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEl0ZW0gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJdGVtIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUl0ZW0gOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXIgOiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgaGFzaENoYW5nZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgb2xkVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXdVUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGFuaW1hdGlvbkV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgYW5pbWF0aW9uTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZWxhcHNlZFRpbWUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBzZXVkb0VsZW1lbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRyYW5zaXRpb25FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHByb3BlcnR5TmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZWxhcHNlZFRpbWUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBzZXVkb0VsZW1lbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1lZGlhRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuZW5kXG5cbmFuZCBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogVW5zYWZlLmFueSBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzb3VyY2UgOiBVbnNhZmUuYW55IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG5vZGVTZWxlY3RvciA9IG9iamVjdFxuICBtZXRob2QgcXVlcnlTZWxlY3RvciA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBxdWVyeVNlbGVjdG9yQWxsIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5lbmRcblxuYW5kIHRva2VuTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBjb250YWlucyA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGFkZCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdG9nZ2xlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZpZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuYW5kIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb20uZWxlbWVudFxuXG4gIGluaGVyaXQgbm9kZVNlbGVjdG9yXG5cbiAgbWV0aG9kIGlkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGFzc05hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsYXNzTGlzdCA6IHRva2VuTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2VzdCA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzdHlsZSA6IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBwcm9wXG5cbiAgbWV0aG9kIGlubmVySFRNTCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0ZXJIVE1MIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0Q29udGVudCA6IGpzX3N0cmluZyB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGlubmVyVGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xpZW50TGVmdCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFRvcCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50SGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0TGVmdCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFRvcCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFBhcmVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcm9sbExlZnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxUb3AgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxXaWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbEhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGdldENsaWVudFJlY3RzIDogY2xpZW50UmVjdExpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEJvdW5kaW5nQ2xpZW50UmVjdCA6IGNsaWVudFJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbEludG9WaWV3IDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGljayA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb2N1cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibHVyIDogdW5pdCBtZXRoXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbmFuZCBjbGllbnRSZWN0ID0gb2JqZWN0XG4gIG1ldGhvZCB0b3AgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJpZ2h0IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3R0b20gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlZnQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3Qgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3Qgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2xpZW50UmVjdExpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gY2xpZW50UmVjdCB0IG9wdCBtZXRoXG5lbmRcblxubGV0IG5vX2hhbmRsZXIgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9IERvbS5ub19oYW5kbGVyXG5cbmxldCBoYW5kbGVyID0gRG9tLmhhbmRsZXJcblxubGV0IGZ1bGxfaGFuZGxlciA9IERvbS5mdWxsX2hhbmRsZXJcblxubGV0IGludm9rZV9oYW5kbGVyID0gRG9tLmludm9rZV9oYW5kbGVyXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlICdhIHR5cCA9ICdhIERvbS5FdmVudC50eXBcblxuICBsZXQgY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJjYW5jZWxcIlxuXG4gIGxldCBjbGljayA9IERvbS5FdmVudC5tYWtlIFwiY2xpY2tcIlxuXG4gIGxldCBjbG9zZSA9IERvbS5FdmVudC5tYWtlIFwiY2xvc2VcIlxuXG4gIGxldCBjb3B5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjb3B5XCJcblxuICBsZXQgY3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJjdXRcIlxuXG4gIGxldCBwYXN0ZSA9IERvbS5FdmVudC5tYWtlIFwicGFzdGVcIlxuXG4gIGxldCBkYmxjbGljayA9IERvbS5FdmVudC5tYWtlIFwiZGJsY2xpY2tcIlxuXG4gIGxldCBtb3VzZWRvd24gPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlZG93blwiXG5cbiAgbGV0IG1vdXNldXAgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNldXBcIlxuXG4gIGxldCBtb3VzZW92ZXIgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3ZlclwiXG5cbiAgbGV0IG1vdXNlbW92ZSA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vtb3ZlXCJcblxuICBsZXQgbW91c2VvdXQgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3V0XCJcblxuICBsZXQga2V5cHJlc3MgPSBEb20uRXZlbnQubWFrZSBcImtleXByZXNzXCJcblxuICBsZXQga2V5ZG93biA9IERvbS5FdmVudC5tYWtlIFwia2V5ZG93blwiXG5cbiAgbGV0IGtleXVwID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXl1cFwiXG5cbiAgbGV0IG1vdXNld2hlZWwgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNld2hlZWxcIlxuXG4gIGxldCB3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwid2hlZWxcIlxuXG4gIGxldCBfRE9NTW91c2VTY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcIkRPTU1vdXNlU2Nyb2xsXCJcblxuICBsZXQgdG91Y2hzdGFydCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hzdGFydFwiXG5cbiAgbGV0IHRvdWNobW92ZSA9IERvbS5FdmVudC5tYWtlIFwidG91Y2htb3ZlXCJcblxuICBsZXQgdG91Y2hlbmQgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoZW5kXCJcblxuICBsZXQgdG91Y2hjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoY2FuY2VsXCJcblxuICBsZXQgZHJhZ3N0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnc3RhcnRcIlxuXG4gIGxldCBkcmFnZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW5kXCJcblxuICBsZXQgZHJhZ2VudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW50ZXJcIlxuXG4gIGxldCBkcmFnb3ZlciA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ292ZXJcIlxuXG4gIGxldCBkcmFnbGVhdmUgPSBEb20uRXZlbnQubWFrZSBcImRyYWdsZWF2ZVwiXG5cbiAgbGV0IGRyYWcgPSBEb20uRXZlbnQubWFrZSBcImRyYWdcIlxuXG4gIGxldCBkcm9wID0gRG9tLkV2ZW50Lm1ha2UgXCJkcm9wXCJcblxuICBsZXQgaGFzaGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiaGFzaGNoYW5nZVwiXG5cbiAgbGV0IGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiY2hhbmdlXCJcblxuICBsZXQgaW5wdXQgPSBEb20uRXZlbnQubWFrZSBcImlucHV0XCJcblxuICBsZXQgdGltZXVwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwidGltZXVwZGF0ZVwiXG5cbiAgbGV0IHN1Ym1pdCA9IERvbS5FdmVudC5tYWtlIFwic3VibWl0XCJcblxuICBsZXQgc2Nyb2xsID0gRG9tLkV2ZW50Lm1ha2UgXCJzY3JvbGxcIlxuXG4gIGxldCBmb2N1cyA9IERvbS5FdmVudC5tYWtlIFwiZm9jdXNcIlxuXG4gIGxldCBibHVyID0gRG9tLkV2ZW50Lm1ha2UgXCJibHVyXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHVubG9hZCA9IERvbS5FdmVudC5tYWtlIFwidW5sb2FkXCJcblxuICBsZXQgYmVmb3JldW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJiZWZvcmV1bmxvYWRcIlxuXG4gIGxldCByZXNpemUgPSBEb20uRXZlbnQubWFrZSBcInJlc2l6ZVwiXG5cbiAgbGV0IG9yaWVudGF0aW9uY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJvcmllbnRhdGlvbmNoYW5nZVwiXG5cbiAgbGV0IHBvcHN0YXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb3BzdGF0ZVwiXG5cbiAgbGV0IGVycm9yID0gRG9tLkV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGFib3J0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IHNlbGVjdCA9IERvbS5FdmVudC5tYWtlIFwic2VsZWN0XCJcblxuICBsZXQgb25saW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvbmxpbmVcIlxuXG4gIGxldCBvZmZsaW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvZmZsaW5lXCJcblxuICBsZXQgY2hlY2tpbmcgPSBEb20uRXZlbnQubWFrZSBcImNoZWNraW5nXCJcblxuICBsZXQgbm91cGRhdGUgPSBEb20uRXZlbnQubWFrZSBcIm5vdXBkYXRlXCJcblxuICBsZXQgZG93bmxvYWRpbmcgPSBEb20uRXZlbnQubWFrZSBcImRvd25sb2FkaW5nXCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgdXBkYXRlcmVhZHkgPSBEb20uRXZlbnQubWFrZSBcInVwZGF0ZXJlYWR5XCJcblxuICBsZXQgY2FjaGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJjYWNoZWRcIlxuXG4gIGxldCBvYnNvbGV0ZSA9IERvbS5FdmVudC5tYWtlIFwib2Jzb2xldGVcIlxuXG4gIGxldCBkb21Db250ZW50TG9hZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJET01Db250ZW50TG9hZGVkXCJcblxuICBsZXQgYW5pbWF0aW9uc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbnN0YXJ0XCJcblxuICBsZXQgYW5pbWF0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25lbmRcIlxuXG4gIGxldCBhbmltYXRpb25pdGVyYXRpb24gPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbml0ZXJhdGlvblwiXG5cbiAgbGV0IGFuaW1hdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uY2FuY2VsXCJcblxuICBsZXQgdHJhbnNpdGlvbnJ1biA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnJ1blwiXG5cbiAgbGV0IHRyYW5zaXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnN0YXJ0XCJcblxuICBsZXQgdHJhbnNpdGlvbmVuZCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmVuZFwiXG5cbiAgbGV0IHRyYW5zaXRpb25jYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25jYW5jZWxcIlxuXG4gIGxldCBjYW5wbGF5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjYW5wbGF5XCJcblxuICBsZXQgY2FucGxheXRocm91Z2ggPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXl0aHJvdWdoXCJcblxuICBsZXQgZHVyYXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcImR1cmF0aW9uY2hhbmdlXCJcblxuICBsZXQgZW1wdGllZCA9IERvbS5FdmVudC5tYWtlIFwiZW1wdGllZFwiXG5cbiAgbGV0IGVuZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbmRlZFwiXG5cbiAgbGV0IGdvdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiXG5cbiAgbGV0IGxvYWRlZGRhdGEgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlZGRhdGFcIlxuXG4gIGxldCBsb2FkZWRtZXRhZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkbWV0YWRhdGFcIlxuXG4gIGxldCBsb2Fkc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IGxvc3Rwb2ludGVyY2FwdHVyZSA9IERvbS5FdmVudC5tYWtlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbWVzc2FnZSA9IERvbS5FdmVudC5tYWtlIFwibWVzc2FnZVwiXG5cbiAgbGV0IHBhdXNlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXVzZVwiXG5cbiAgbGV0IHBsYXkgPSBEb20uRXZlbnQubWFrZSBcInBsYXlcIlxuXG4gIGxldCBwbGF5aW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJwbGF5aW5nXCJcblxuICBsZXQgcG9pbnRlcmVudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyZW50ZXJcIlxuXG4gIGxldCBwb2ludGVyY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyY2FuY2VsXCJcblxuICBsZXQgcG9pbnRlcmRvd24gPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJkb3duXCJcblxuICBsZXQgcG9pbnRlcmxlYXZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybGVhdmVcIlxuXG4gIGxldCBwb2ludGVybW92ZSA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm1vdmVcIlxuXG4gIGxldCBwb2ludGVyb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyb3V0XCJcblxuICBsZXQgcG9pbnRlcm92ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdmVyXCJcblxuICBsZXQgcG9pbnRlcnVwID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVydXBcIlxuXG4gIGxldCByYXRlY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJyYXRlY2hhbmdlXCJcblxuICBsZXQgc2Vla2VkID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVrZWRcIlxuXG4gIGxldCBzZWVraW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVraW5nXCJcblxuICBsZXQgc3RhbGxlZCA9IERvbS5FdmVudC5tYWtlIFwic3RhbGxlZFwiXG5cbiAgbGV0IHN1c3BlbmQgPSBEb20uRXZlbnQubWFrZSBcInN1c3BlbmRcIlxuXG4gIGxldCB2b2x1bWVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInZvbHVtZWNoYW5nZVwiXG5cbiAgbGV0IHdhaXRpbmcgPSBEb20uRXZlbnQubWFrZSBcIndhaXRpbmdcIlxuXG4gIGxldCBtYWtlID0gRG9tLkV2ZW50Lm1ha2VcbmVuZFxuXG50eXBlIGV2ZW50X2xpc3RlbmVyX2lkID0gRG9tLmV2ZW50X2xpc3RlbmVyX2lkXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyA9IERvbS5hZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcblxubGV0IHJlbW92ZUV2ZW50TGlzdGVuZXIgPSBEb20ucmVtb3ZlRXZlbnRMaXN0ZW5lclxuXG5sZXQgY3JlYXRlQ3VzdG9tRXZlbnQgPSBEb20uY3JlYXRlQ3VzdG9tRXZlbnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIGNvbGxlY3Rpb24gPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBuYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBodG1sRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBoZWFkRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgcHJvZmlsZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxpbmtFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyb3Nzb3JpZ2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmV2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGl0bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbWV0YUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNvbnRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGh0dHBFcXVpdiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2NoZW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYmFzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHN0eWxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBib2R5RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBmb3JtRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZWxlbWVudHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdENoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZW5jdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX21ldGhvZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdWJtaXQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVzZXQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25zdWJtaXQgOiAoJ3NlbGYgdCwgc3VibWl0RXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdEdyb3VwRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBsYWJlbCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBvcHRHcm91cEVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVmYXVsdFNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2VsZWN0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VsZWN0ZWRJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcHRpb25zIDogb3B0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2l6ZSA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgYWRkIDogI29wdEdyb3VwRWxlbWVudCB0IC0+ICNvcHRHcm91cEVsZW1lbnQgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jaGFuZ2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmlucHV0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGlucHV0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmF1bHRDaGVja2VkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2NlcHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hlY2tlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWF4TGVuZ3RoIDogaW50IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvblN0YXJ0IDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0ZXh0QXJlYUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGVmYXVsdFZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbHMgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWRPbmx5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYWNlaG9sZGVyIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBidXR0b25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBsYWJlbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHRtbEZvciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZpZWxkU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxlZ2VuZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHVMaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBvTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgZExpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGxpRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkaWFsb2dFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZV9yZXR1cm5WYWx1ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvcGVuXyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHJldHVyblZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzaG93IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNob3dNb2RhbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbmNhbmNlbCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2xvc2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZGl2RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBwYXJhZ3JhcGhFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhlYWRpbmdFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHF1b3RlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2l0ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHByZUVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgYnJFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhyRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBtb2RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjaXRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkYXRlVGltZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFuY2hvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29vcmRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkb3dubG9hZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZmxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmV2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzaGFwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW1hZ2VFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGlzTWFwIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBuYXR1cmFsV2lkdGggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmF0dXJhbEhlaWdodCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb21wbGV0ZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmFib3J0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9iamVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFyY2hpdmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvZGVCYXNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2RlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVjbGFyZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3RhbmRieSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdXNlTWFwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGFyYW1FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFyZWFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29vcmRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBub0hyZWYgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzaGFwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtYXBFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhcmVhcyA6IGFyZWFFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzY3JpcHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWZlciA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFzeW5jIDogYm9vbCB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGVtYmVkRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ2VsbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNlbGxJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFiYnIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBheGlzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbFNwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWFkZXJzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dTcGFuIDogaW50IHByb3BcblxuICBtZXRob2Qgc2NvcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlUm93RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgcm93SW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWN0aW9uUm93SW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjZWxscyA6IHRhYmxlQ2VsbEVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRDZWxsIDogaW50IC0+IHRhYmxlQ2VsbEVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNlbGwgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNvbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVTZWN0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogdGFibGVSb3dFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGluc2VydFJvdyA6IGludCAtPiB0YWJsZVJvd0VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJvdyA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ2FwdGlvbkVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgdGFibGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjYXB0aW9uIDogdGFibGVDYXB0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgdEhlYWQgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCB0Rm9vdCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiB0YWJsZVJvd0VsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdEJvZGllcyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2VsbFBhZGRpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNlbGxTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmcmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcnVsZXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN1bW1hcnkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVUSGVhZCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRIZWFkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRGb290IDogdGFibGVTZWN0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVEZvb3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQ2FwdGlvbiA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNhcHRpb24gOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0Um93IDogaW50IC0+IHRhYmxlUm93RWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUm93IDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGltZVJhbmdlcyA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBlbmRfIDogaW50IC0+IG51bWJlcl90IG1ldGhcbmVuZFxuXG50eXBlIG5ldHdvcmtTdGF0ZSA9XG4gIHwgTkVUV09SS19FTVBUWVxuICB8IE5FVFdPUktfSURMRVxuICB8IE5FVFdPUktfTE9BRElOR1xuICB8IE5FVFdPUktfTk9fU09VUkNFXG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgSEFWRV9OT1RISU5HXG4gIHwgSEFWRV9NRVRBREFUQVxuICB8IEhBVkVfQ1VSUkVOVF9EQVRBXG4gIHwgSEFWRV9GVVRVUkVfREFUQVxuICB8IEhBVkVfRU5PVUdIX0RBVEFcblxuKCogaHR0cDovL3d3dy53M3NjaG9vbHMuY29tL3RhZ3MvcmVmX2F2X2RvbS5hc3AgKilcbigqIG9ubHkgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IGFsbCBicm93c2VyLiAoSUU5KykgKilcbmNsYXNzIHR5cGUgbWVkaWFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjYW5QbGF5VHlwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgbG9hZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwbGF5IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBhdXNlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGF1dG9wbGF5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgYnVmZmVyZWQgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250cm9scyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRTcmMgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUaW1lIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkdXJhdGlvbiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb29wIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWVkaWFncm91cCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbXV0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXR3b3JrU3RhdGVfaW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV0d29ya1N0YXRlIDogbmV0d29ya1N0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGF1c2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxheWJhY2tSYXRlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBwbGF5ZWQgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVsb2FkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlX2ludCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Vla2FibGUgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWVraW5nIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2b2x1bWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIG9uY2FucGxheSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2FucGxheXRocm91Z2ggOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmR1cmF0aW9uY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lbXB0aWVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lbmRlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVkZGF0YSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVkbWV0YWRhdGEgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRzdGFydCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGF1c2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBsYXkgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBsYXlpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnJhdGVjaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlZWtlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Vla2luZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc3RhbGxlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc3VzcGVuZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udm9sdW1lY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253YWl0aW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGF1ZGlvRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG1lZGlhRWxlbWVudFxuZW5kXG5cbmNsYXNzIHR5cGUgdmlkZW9FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbWVkaWFFbGVtZW50XG5lbmRcblxudHlwZSBjb250ZXh0ID0ganNfc3RyaW5nIHRcblxubGV0IF8yZF8gPSBKcy5zdHJpbmcgXCIyZFwiXG5cbnR5cGUgY2FudmFzUGF0dGVyblxuXG5jbGFzcyB0eXBlIGNhbnZhc0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgdG9EYXRhVVJMIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGFVUkxfdHlwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRhVVJMX3R5cGVfY29tcHJlc3Npb24gOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbnRleHQgOiBqc19zdHJpbmcgdCAtPiBjYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgdCBtZXRoXG5lbmRcblxuYW5kIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCA9IG9iamVjdFxuICBtZXRob2QgY2FudmFzIDogY2FudmFzRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2F2ZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXN0b3JlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhbnNmb3JtIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VHJhbnNmb3JtIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2xvYmFsQWxwaGEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGUgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZV9ncmFkaWVudCA6IGNhbnZhc0dyYWRpZW50IHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGVfcGF0dGVybiA6IGNhbnZhc1BhdHRlcm4gdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGUgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGVfZ3JhZGllbnQgOiBjYW52YXNHcmFkaWVudCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZV9wYXR0ZXJuIDogY2FudmFzUGF0dGVybiB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZUxpbmVhckdyYWRpZW50IDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBjYW52YXNHcmFkaWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmFkaWFsR3JhZGllbnQgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGNhbnZhc0dyYWRpZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuIDogaW1hZ2VFbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybl9mcm9tQ2FudmFzIDogY2FudmFzRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm5fZnJvbVZpZGVvIDogdmlkZW9FbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgbGluZVdpZHRoIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBsaW5lQ2FwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaW5lSm9pbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWl0ZXJMaW1pdCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93T2Zmc2V0WCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93T2Zmc2V0WSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93Qmx1ciA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsZWFyUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJlZ2luUGF0aCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZVBhdGggOiB1bml0IG1ldGhcblxuICBtZXRob2QgbW92ZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBxdWFkcmF0aWNDdXJ2ZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJlemllckN1cnZlVG8gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcmNUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFyYyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbGxpcHNlIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGlwIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGlzUG9pbnRJblBhdGggOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3Rm9jdXNSaW5nIDogI2VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZm9udCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QmFzZWxpbmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGxUZXh0IDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGxUZXh0X3dpdGhXaWR0aCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VUZXh0IDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVRleHRfd2l0aFdpZHRoIDpcbiAgICBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbWVhc3VyZVRleHQgOiBqc19zdHJpbmcgdCAtPiB0ZXh0TWV0cmljcyB0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlIDogaW1hZ2VFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV93aXRoU2l6ZSA6XG4gICAgaW1hZ2VFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsIDpcbiAgICAgICBpbWFnZUVsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21DYW52YXMgOiBjYW52YXNFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tQ2FudmFzV2l0aFNpemUgOlxuICAgIGNhbnZhc0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGxGcm9tQ2FudmFzIDpcbiAgICAgICBjYW52YXNFbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tVmlkZW9XaXRoVmlkZW8gOlxuICAgIHZpZGVvRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbVZpZGVvV2l0aFNpemUgOlxuICAgIHZpZGVvRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbEZyb21WaWRlbyA6XG4gICAgICAgdmlkZW9FbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUltYWdlRGF0YSA6IGludCAtPiBpbnQgLT4gaW1hZ2VEYXRhIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbWFnZURhdGEgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBpbWFnZURhdGEgdCBtZXRoXG5cbiAgbWV0aG9kIHB1dEltYWdlRGF0YSA6IGltYWdlRGF0YSB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBjYW52YXNHcmFkaWVudCA9IG9iamVjdFxuICBtZXRob2QgYWRkQ29sb3JTdG9wIDogbnVtYmVyX3QgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIHRleHRNZXRyaWNzID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgaW1hZ2VEYXRhID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGEgOiBjYW52YXNQaXhlbEFycmF5IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjYW52YXNQaXhlbEFycmF5ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmV4dGVybmFsIHBpeGVsX2dldCA6IGNhbnZhc1BpeGVsQXJyYXkgdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX2pzX2dldFwiXG5cbmV4dGVybmFsIHBpeGVsX3NldCA6IGNhbnZhc1BpeGVsQXJyYXkgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuY2xhc3MgdHlwZSByYW5nZSA9IG9iamVjdFxuICBtZXRob2QgY29sbGFwc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydENvbnRhaW5lciA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRDb250YWluZXIgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0U3RhcnQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kIDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFN0YXJ0QmVmb3JlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kQmVmb3JlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U3RhcnRBZnRlciA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZEFmdGVyIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0Tm9kZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdE5vZGVDb250ZW50cyA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZUNvbnRlbnRzIDogRG9tLmRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGV4dHJhY3RDb250ZW50cyA6IERvbS5kb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDb250ZW50cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnROb2RlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Vycm91bmRDb250ZW50cyA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lUmFuZ2UgOiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuKCoqIEluZm9ybWF0aW9uIG9uIGN1cnJlbnQgc2VsZWN0aW9uICopXG5jbGFzcyB0eXBlIHNlbGVjdGlvbiA9IG9iamVjdFxuICBtZXRob2QgYW5jaG9yTm9kZSA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmNob3JPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb2N1c05vZGUgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9jdXNPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc0NvbGxhcHNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJhbmdlQ291bnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRSYW5nZUF0IDogaW50IC0+IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZSA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXh0ZW5kIDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1vZGlmeSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZVRvU3RhcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2VUb0VuZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3RBbGxDaGlsZHJlbiA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFkZFJhbmdlIDogcmFuZ2UgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlUmFuZ2UgOiByYW5nZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBbGxSYW5nZXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRnJvbURvY3VtZW50IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnRhaW5zTm9kZSA6IERvbS5ub2RlIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmRvY3VtZW50XG5cbiAgaW5oZXJpdCBub2RlU2VsZWN0b3JcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWZlcnJlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZG9tYWluIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWFkIDogaGVhZEVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIGJvZHkgOiBib2R5RWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgZG9jdW1lbnRFbGVtZW50IDogaHRtbEVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGltYWdlcyA6IGltYWdlRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBsZXRzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW5rcyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9ybXMgOiBmb3JtRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmNob3JzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb29raWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlc2lnbk1vZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9wZW5fIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdyaXRlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGV4ZWNDb21tYW5kIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmFuZ2UgOiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5TmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBhY3RpdmVFbGVtZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhpZGRlbiA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZnVsbHNjcmVlbmNoYW5nZSA6IChkb2N1bWVudCB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UgOiAoZG9jdW1lbnQgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxudHlwZSBpbnRlcnZhbF9pZFxuXG50eXBlIHRpbWVvdXRfaWRcblxudHlwZSBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZFxuXG5jbGFzcyB0eXBlIGxvY2F0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwcm90b2NvbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaG9zdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaG9zdG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9yaWdpbiA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvcnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhdGhuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWFyY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhhc2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFzc2lnbiA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbG9hZCA6IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBsb2NhdGlvbl9vcmlnaW4gKGxvYyA6IGxvY2F0aW9uIHQpID1cbiAgT3B0ZGVmLmNhc2VcbiAgICBsb2MjIy5vcmlnaW5cbiAgICAoZnVuICgpIC0+XG4gICAgICBsZXQgcHJvdG9jb2wgPSBsb2MjIy5wcm90b2NvbCBpblxuICAgICAgbGV0IGhvc3RuYW1lID0gbG9jIyMuaG9zdG5hbWUgaW5cbiAgICAgIGxldCBwb3J0ID0gbG9jIyMucG9ydCBpblxuICAgICAgaWYgcHJvdG9jb2wjIy5sZW5ndGggPSAwICYmIGhvc3RuYW1lIyMubGVuZ3RoID0gMFxuICAgICAgdGhlbiBKcy5zdHJpbmcgXCJcIlxuICAgICAgZWxzZVxuICAgICAgICBsZXQgb3JpZ2luID0gcHJvdG9jb2wjI2NvbmNhdF8yIChKcy5zdHJpbmcgXCIvL1wiKSBob3N0bmFtZSBpblxuICAgICAgICBpZiBwb3J0IyMubGVuZ3RoID4gMCB0aGVuIG9yaWdpbiMjY29uY2F0XzIgKEpzLnN0cmluZyBcIjpcIikgbG9jIyMucG9ydCBlbHNlIG9yaWdpbilcbiAgICAoZnVuIG8gLT4gbylcblxuY2xhc3MgdHlwZSBoaXN0b3J5ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGF0ZSA6IEpzLlVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnbyA6IGludCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJhY2sgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9yd2FyZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoU3RhdGUgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlU3RhdGUgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdW5kb01hbmFnZXIgPSBvYmplY3QgZW5kXG5cbmNsYXNzIHR5cGUgbmF2aWdhdG9yID0gb2JqZWN0XG4gIG1ldGhvZCBhcHBDb2RlTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwVmVyc2lvbiA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29va2llRW5hYmxlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uTGluZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYXRmb3JtIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2ZW5kb3IgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZXJBZ2VudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFuZ3VhZ2UgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VyTGFuZ3VhZ2UgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXhUb3VjaFBvaW50cyA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzY3JlZW4gPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXZhaWxXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF2YWlsSGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFwcGxpY2F0aW9uQ2FjaGUgPSBvYmplY3RcbiAgbWV0aG9kIHN0YXR1cyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVwZGF0ZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzd2FwQ2FjaGUgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25jaGVja2luZyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25lcnJvciA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ub3VwZGF0ZSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25kb3dubG9hZGluZyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25wcm9ncmVzcyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb251cGRhdGVyZWFkeSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jYWNoZWQgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub2Jzb2xldGUgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbmNsYXNzIHR5cGUgX1VSTCA9IG9iamVjdFxuICBtZXRob2QgY3JlYXRlT2JqZWN0VVJMIDogI0ZpbGUuYmxvYiB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmV2b2tlT2JqZWN0VVJMIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB3aW5kb3cgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCBkb2N1bWVudCA6IGRvY3VtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBsaWNhdGlvbkNhY2hlIDogYXBwbGljYXRpb25DYWNoZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGlzdG9yeSA6IGhpc3RvcnkgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVuZG9NYW5hZ2VyIDogdW5kb01hbmFnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hdmlnYXRvciA6IG5hdmlnYXRvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0U2VsZWN0aW9uIDogc2VsZWN0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdG9wIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsdXIgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsQnkgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXNzaW9uU3RvcmFnZSA6IHN0b3JhZ2UgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2NhbFN0b3JhZ2UgOiBzdG9yYWdlIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG9wIDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnQgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZyYW1lRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcGVuXyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB3aW5kb3cgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBhbGVydCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb25maXJtIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgcHJvbXB0IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcHJpbnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50ZXJ2YWwgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBudW1iZXJfdCAtPiBpbnRlcnZhbF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFySW50ZXJ2YWwgOiBpbnRlcnZhbF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VGltZW91dCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IG51bWJlcl90IC0+IHRpbWVvdXRfaWQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhclRpbWVvdXQgOiB0aW1lb3V0X2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOlxuICAgIChudW1iZXJfdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNhbmNlbEFuaW1hdGlvbkZyYW1lIDogYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcmVlbiA6IHNjcmVlbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5uZXJXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlubmVySGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3V0ZXJXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG91dGVySGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRTdHlsZSA6ICNlbGVtZW50IHQgLT4gY3NzU3R5bGVEZWNsYXJhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRTdHlsZV9wc2V1ZG9FbHQgOlxuICAgICNlbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY3NzU3R5bGVEZWNsYXJhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgYXRvYiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYnRvYSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgb25sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9udW5sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmVmb3JldW5sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICh3aW5kb3cgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAod2luZG93IHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnJlc2l6ZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9yaWVudGF0aW9uY2hhbmdlIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucG9wc3RhdGUgOiAod2luZG93IHQsIHBvcFN0YXRlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmhhc2hjaGFuZ2UgOiAod2luZG93IHQsIGhhc2hDaGFuZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub25saW5lIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm9mZmxpbmUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBfVVJMIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZXZpY2VQaXhlbFJhdGlvIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCB3aW5kb3cgOiB3aW5kb3cgdCA9IEpzLlVuc2FmZS5nbG9iYWxcblxuKCogVGhlIHRvcGxldmVsIG9iamVjdCAqKVxuXG5sZXQgZG9jdW1lbnQgPSB3aW5kb3cjIy5kb2N1bWVudFxuXG5sZXQgZ2V0RWxlbWVudEJ5SWQgaWQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgKGZ1biBwbm9kZSAtPiBwbm9kZSlcblxubGV0IGdldEVsZW1lbnRCeUlkX2V4biBpZCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiBcImdldEVsZW1lbnRCeUlkX2V4bjogJVMgbm90IGZvdW5kXCIgaWQpKVxuICAgIChmdW4gcG5vZGUgLT4gcG5vZGUpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9vcHQgaWQgPSBKcy5PcHQudG9fb3B0aW9uIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9jb2VyY2UgaWQgY29lcmNlID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAoZnVuIGUgLT4gSnMuT3B0LnRvX29wdGlvbiAoY29lcmNlIGUpKVxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBmcmFtZVNldEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNvbHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBmcmFtZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZyYW1lQm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb25nRGVzYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgbm9SZXNpemUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudERvY3VtZW50IDogZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaUZyYW1lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZnJhbWVCb3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvbmdEZXNjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudERvY3VtZW50IDogZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50V2luZG93IDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKioqKVxuXG4oKlhYWCBTaG91bGQgcHJvdmlkZSBjcmVhdGlvbiBmdW5jdGlvbnMgYSBsYSBsYWJsZ3RrLi4uICopXG5cbmxldCBvcHRfaXRlciB4IGYgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB2IC0+IGYgdlxuXG5sZXQgY3JlYXRlRWxlbWVudCAoZG9jIDogZG9jdW1lbnQgdCkgbmFtZSA9IGRvYyMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIG5hbWUpXG5cbmxldCB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBuYW1lID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgbmFtZSlcblxubGV0IGNyZWF0ZUVsZW1lbnRTeW50YXggPSByZWYgYFVua25vd25cblxubGV0IHJlYyB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBlbHQgPVxuICBpZiBQb2x5LihfdHlwZSA9IE5vbmUpICYmIFBvbHkuKG5hbWUgPSBOb25lKVxuICB0aGVuIEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIGVsdClcbiAgZWxzZVxuICAgIG1hdGNoICFjcmVhdGVFbGVtZW50U3ludGF4IHdpdGhcbiAgICB8IGBTdGFuZGFyZCAtPlxuICAgICAgICBsZXQgcmVzID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgZWx0KSBpblxuICAgICAgICBvcHRfaXRlciBfdHlwZSAoZnVuIHQgLT4gcmVzIyMuX3R5cGUgOj0gdCk7XG4gICAgICAgIG9wdF9pdGVyIG5hbWUgKGZ1biBuIC0+IHJlcyMjLm5hbWUgOj0gbik7XG4gICAgICAgIHJlc1xuICAgIHwgYEV4dGVuZGVkIC0+XG4gICAgICAgIGxldCBhID0gbmV3JWpzIEpzLmFycmF5X2VtcHR5IGluXG4gICAgICAgIGlnbm9yZSAoYSMjcHVzaF8yIChKcy5zdHJpbmcgXCI8XCIpIChKcy5zdHJpbmcgZWx0KSk7XG4gICAgICAgIG9wdF9pdGVyIF90eXBlIChmdW4gdCAtPlxuICAgICAgICAgICAgaWdub3JlIChhIyNwdXNoXzMgKEpzLnN0cmluZyBcIiB0eXBlPVxcXCJcIikgKGh0bWxfZXNjYXBlIHQpIChKcy5zdHJpbmcgXCJcXFwiXCIpKSk7XG4gICAgICAgIG9wdF9pdGVyIG5hbWUgKGZ1biBuIC0+XG4gICAgICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMyAoSnMuc3RyaW5nIFwiIG5hbWU9XFxcIlwiKSAoaHRtbF9lc2NhcGUgbikgKEpzLnN0cmluZyBcIlxcXCJcIikpKTtcbiAgICAgICAgaWdub3JlIChhIyNwdXNoIChKcy5zdHJpbmcgXCI+XCIpKTtcbiAgICAgICAgSnMuVW5zYWZlLmNvZXJjZSAoZG9jIyNjcmVhdGVFbGVtZW50IChhIyNqb2luIChKcy5zdHJpbmcgXCJcIikpKVxuICAgIHwgYFVua25vd24gLT5cbiAgICAgICAgY3JlYXRlRWxlbWVudFN5bnRheCA6PVxuICAgICAgICAgIGlmIHRyeVxuICAgICAgICAgICAgICAgbGV0IGVsIDogaW5wdXRFbGVtZW50IEpzLnQgPVxuICAgICAgICAgICAgICAgICBKcy5VbnNhZmUuY29lcmNlXG4gICAgICAgICAgICAgICAgICAgKGRvY3VtZW50IyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgXCI8aW5wdXQgbmFtZT1cXFwieFxcXCI+XCIpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIEpzLmVxdWFscyBlbCMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgXCJpbnB1dFwiKVxuICAgICAgICAgICAgICAgJiYgSnMuZXF1YWxzIGVsIyMubmFtZSAoSnMuc3RyaW5nIFwieFwiKVxuICAgICAgICAgICAgIHdpdGggXyAtPiBmYWxzZVxuICAgICAgICAgIHRoZW4gYEV4dGVuZGVkXG4gICAgICAgICAgZWxzZSBgU3RhbmRhcmQ7XG4gICAgICAgIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIGVsdFxuXG5sZXQgY3JlYXRlSHRtbCBkb2MgOiBodG1sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJodG1sXCJcblxubGV0IGNyZWF0ZUhlYWQgZG9jIDogaGVhZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaGVhZFwiXG5cbmxldCBjcmVhdGVMaW5rIGRvYyA6IGxpbmtFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmtcIlxuXG5sZXQgY3JlYXRlVGl0bGUgZG9jIDogdGl0bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRpdGxlXCJcblxubGV0IGNyZWF0ZU1ldGEgZG9jIDogbWV0YUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWV0YVwiXG5cbmxldCBjcmVhdGVCYXNlIGRvYyA6IGJhc2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJhc2VcIlxuXG5sZXQgY3JlYXRlU3R5bGUgZG9jIDogc3R5bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0eWxlXCJcblxubGV0IGNyZWF0ZUJvZHkgZG9jIDogYm9keUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYm9keVwiXG5cbmxldCBjcmVhdGVGb3JtIGRvYyA6IGZvcm1FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvcm1cIlxuXG5sZXQgY3JlYXRlT3B0Z3JvdXAgZG9jIDogb3B0R3JvdXBFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9wdGdyb3VwXCJcblxubGV0IGNyZWF0ZU9wdGlvbiBkb2MgOiBvcHRpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9wdGlvblwiXG5cbmxldCBjcmVhdGVTZWxlY3QgP190eXBlID9uYW1lIGRvYyA6IHNlbGVjdEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwic2VsZWN0XCJcblxubGV0IGNyZWF0ZUlucHV0ID9fdHlwZSA/bmFtZSBkb2MgOiBpbnB1dEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwiaW5wdXRcIlxuXG5sZXQgY3JlYXRlVGV4dGFyZWEgP190eXBlID9uYW1lIGRvYyA6IHRleHRBcmVhRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJ0ZXh0YXJlYVwiXG5cbmxldCBjcmVhdGVCdXR0b24gP190eXBlID9uYW1lIGRvYyA6IGJ1dHRvbkVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwiYnV0dG9uXCJcblxubGV0IGNyZWF0ZUxhYmVsIGRvYyA6IGxhYmVsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsYWJlbFwiXG5cbmxldCBjcmVhdGVGaWVsZHNldCBkb2MgOiBmaWVsZFNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZmllbGRzZXRcIlxuXG5sZXQgY3JlYXRlTGVnZW5kIGRvYyA6IGxlZ2VuZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGVnZW5kXCJcblxubGV0IGNyZWF0ZVVsIGRvYyA6IHVMaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ1bFwiXG5cbmxldCBjcmVhdGVPbCBkb2MgOiBvTGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib2xcIlxuXG5sZXQgY3JlYXRlRGwgZG9jIDogZExpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRsXCJcblxubGV0IGNyZWF0ZUxpIGRvYyA6IGxpRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaVwiXG5cbmxldCBjcmVhdGVEaWFsb2cgZG9jIDogZGlhbG9nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkaWFsb2dcIlxuXG5sZXQgY3JlYXRlRGl2IGRvYyA6IGRpdkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGl2XCJcblxubGV0IGNyZWF0ZUVtYmVkIGRvYyA6IGVtYmVkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJlbWJlZFwiXG5cbmxldCBjcmVhdGVQIGRvYyA6IHBhcmFncmFwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicFwiXG5cbmxldCBjcmVhdGVIMSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMVwiXG5cbmxldCBjcmVhdGVIMiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMlwiXG5cbmxldCBjcmVhdGVIMyBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoM1wiXG5cbmxldCBjcmVhdGVINCBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNFwiXG5cbmxldCBjcmVhdGVINSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNVwiXG5cbmxldCBjcmVhdGVINiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNlwiXG5cbmxldCBjcmVhdGVRIGRvYyA6IHF1b3RlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJxXCJcblxubGV0IGNyZWF0ZUJsb2NrcXVvdGUgZG9jIDogcXVvdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJsb2NrcXVvdGVcIlxuXG5sZXQgY3JlYXRlUHJlIGRvYyA6IHByZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicHJlXCJcblxubGV0IGNyZWF0ZUJyIGRvYyA6IGJyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJiclwiXG5cbmxldCBjcmVhdGVIciBkb2MgOiBockVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaHJcIlxuXG5sZXQgY3JlYXRlSW5zIGRvYyA6IG1vZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW5zXCJcblxubGV0IGNyZWF0ZURlbCBkb2MgOiBtb2RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlbFwiXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFuY2hvckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYVwiXG5cbmxldCBjcmVhdGVJbWcgZG9jIDogaW1hZ2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImltZ1wiXG5cbmxldCBjcmVhdGVPYmplY3QgZG9jIDogb2JqZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvYmplY3RcIlxuXG5sZXQgY3JlYXRlUGFyYW0gZG9jIDogcGFyYW1FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhcmFtXCJcblxubGV0IGNyZWF0ZU1hcCBkb2MgOiBtYXBFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1hcFwiXG5cbmxldCBjcmVhdGVBcmVhIGRvYyA6IGFyZWFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFyZWFcIlxuXG5sZXQgY3JlYXRlU2NyaXB0IGRvYyA6IHNjcmlwdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2NyaXB0XCJcblxubGV0IGNyZWF0ZVRhYmxlIGRvYyA6IHRhYmxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0YWJsZVwiXG5cbmxldCBjcmVhdGVDYXB0aW9uIGRvYyA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2FwdGlvblwiXG5cbmxldCBjcmVhdGVDb2wgZG9jIDogdGFibGVDb2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbFwiXG5cbmxldCBjcmVhdGVDb2xncm91cCBkb2MgOiB0YWJsZUNvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sZ3JvdXBcIlxuXG5sZXQgY3JlYXRlVGhlYWQgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aGVhZFwiXG5cbmxldCBjcmVhdGVUZm9vdCBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRmb290XCJcblxubGV0IGNyZWF0ZVRib2R5IGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGJvZHlcIlxuXG5sZXQgY3JlYXRlVHIgZG9jIDogdGFibGVSb3dFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRyXCJcblxubGV0IGNyZWF0ZVRoIGRvYyA6IHRhYmxlQ2VsbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGhcIlxuXG5sZXQgY3JlYXRlVGQgZG9jIDogdGFibGVDZWxsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZFwiXG5cbmxldCBjcmVhdGVTdWIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdWJcIlxuXG5sZXQgY3JlYXRlU3VwIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3VwXCJcblxubGV0IGNyZWF0ZVNwYW4gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzcGFuXCJcblxubGV0IGNyZWF0ZVR0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwidHRcIlxuXG5sZXQgY3JlYXRlSSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImlcIlxuXG5sZXQgY3JlYXRlQiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImJcIlxuXG5sZXQgY3JlYXRlQmlnIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYmlnXCJcblxubGV0IGNyZWF0ZVNtYWxsIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic21hbGxcIlxuXG5sZXQgY3JlYXRlRW0gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJlbVwiXG5cbmxldCBjcmVhdGVTdHJvbmcgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdHJvbmdcIlxuXG5sZXQgY3JlYXRlQ2l0ZSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImNpdGVcIlxuXG5sZXQgY3JlYXRlRGZuIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZGZuXCJcblxubGV0IGNyZWF0ZUNvZGUgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJjb2RlXCJcblxubGV0IGNyZWF0ZVNhbXAgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzYW1wXCJcblxubGV0IGNyZWF0ZUtiZCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImtiZFwiXG5cbmxldCBjcmVhdGVWYXIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJ2YXJcIlxuXG5sZXQgY3JlYXRlQWJiciBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFiYnJcIlxuXG5sZXQgY3JlYXRlRGQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkZFwiXG5cbmxldCBjcmVhdGVEdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImR0XCJcblxubGV0IGNyZWF0ZU5vc2NyaXB0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwibm9zY3JpcHRcIlxuXG5sZXQgY3JlYXRlQWRkcmVzcyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFkZHJlc3NcIlxuXG5sZXQgY3JlYXRlRnJhbWVzZXQgZG9jIDogZnJhbWVTZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZyYW1lc2V0XCJcblxubGV0IGNyZWF0ZUZyYW1lIGRvYyA6IGZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmcmFtZVwiXG5cbmxldCBjcmVhdGVJZnJhbWUgZG9jIDogaUZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpZnJhbWVcIlxuXG5sZXQgY3JlYXRlQXVkaW8gZG9jIDogYXVkaW9FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImF1ZGlvXCJcblxubGV0IGNyZWF0ZVZpZGVvIGRvYyA6IGF1ZGlvRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWRlb1wiXG5cbmV4Y2VwdGlvbiBDYW52YXNfbm90X2F2YWlsYWJsZVxuXG5sZXQgY3JlYXRlQ2FudmFzIGRvYyA6IGNhbnZhc0VsZW1lbnQgdCA9XG4gIGxldCBjID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjYW52YXNcIiBpblxuICBpZiBub3QgKE9wdC50ZXN0IGMjIy5nZXRDb250ZXh0KSB0aGVuIHJhaXNlIENhbnZhc19ub3RfYXZhaWxhYmxlO1xuICBjXG5cbmxldCBodG1sX2VsZW1lbnQgOiBodG1sRWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSFRNTEVsZW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IDogI0RvbS5ub2RlIEpzLnQgLT4gZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoZGVmIGh0bWxfZWxlbWVudCkpXG4gICAgdGhlblxuICAgICAgKCogaWUgPCA5IGRvZXMgbm90IGhhdmUgSFRNTEVsZW1lbnQ6IHdlIGhhdmUgdG8gY2hlYXQgdG8gY2hlY2tcbiAgICAgICAgIHRoYXQgc29tZXRoaW5nIGlzIGFuIGh0bWwgZWxlbWVudCAqKVxuICAgICAgZnVuIGUgLT5cbiAgICAgIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKGRlZiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmlubmVySFRNTCkpXG4gICAgICB0aGVuIEpzLm51bGxcbiAgICAgIGVsc2UgSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2VcbiAgICAgIGZ1biBlIC0+XG4gICAgICBpZiBKcy5pbnN0YW5jZW9mIGUgaHRtbF9lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIHRhZyAoZSA6ICNlbGVtZW50IHQpID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgPSB1bnNhZmVDb2VyY2UgXCJhXCIgZVxuXG4gIGxldCBhcmVhIGUgPSB1bnNhZmVDb2VyY2UgXCJhcmVhXCIgZVxuXG4gIGxldCBiYXNlIGUgPSB1bnNhZmVDb2VyY2UgXCJiYXNlXCIgZVxuXG4gIGxldCBibG9ja3F1b3RlIGUgPSB1bnNhZmVDb2VyY2UgXCJibG9ja3F1b3RlXCIgZVxuXG4gIGxldCBib2R5IGUgPSB1bnNhZmVDb2VyY2UgXCJib2R5XCIgZVxuXG4gIGxldCBiciBlID0gdW5zYWZlQ29lcmNlIFwiYnJcIiBlXG5cbiAgbGV0IGJ1dHRvbiBlID0gdW5zYWZlQ29lcmNlIFwiYnV0dG9uXCIgZVxuXG4gIGxldCBjYW52YXMgZSA9IHVuc2FmZUNvZXJjZSBcImNhbnZhc1wiIGVcblxuICBsZXQgY2FwdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwiY2FwdGlvblwiIGVcblxuICBsZXQgY29sIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xcIiBlXG5cbiAgbGV0IGNvbGdyb3VwIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xncm91cFwiIGVcblxuICBsZXQgZGVsIGUgPSB1bnNhZmVDb2VyY2UgXCJkZWxcIiBlXG5cbiAgbGV0IGRpdiBlID0gdW5zYWZlQ29lcmNlIFwiZGl2XCIgZVxuXG4gIGxldCBkbCBlID0gdW5zYWZlQ29lcmNlIFwiZGxcIiBlXG5cbiAgbGV0IGZpZWxkc2V0IGUgPSB1bnNhZmVDb2VyY2UgXCJmaWVsZHNldFwiIGVcblxuICBsZXQgZW1iZWQgZSA9IHVuc2FmZUNvZXJjZSBcImVtYmVkXCIgZVxuXG4gIGxldCBmb3JtIGUgPSB1bnNhZmVDb2VyY2UgXCJmb3JtXCIgZVxuXG4gIGxldCBmcmFtZXNldCBlID0gdW5zYWZlQ29lcmNlIFwiZnJhbWVzZXRcIiBlXG5cbiAgbGV0IGZyYW1lIGUgPSB1bnNhZmVDb2VyY2UgXCJmcmFtZVwiIGVcblxuICBsZXQgaDEgZSA9IHVuc2FmZUNvZXJjZSBcImgxXCIgZVxuXG4gIGxldCBoMiBlID0gdW5zYWZlQ29lcmNlIFwiaDJcIiBlXG5cbiAgbGV0IGgzIGUgPSB1bnNhZmVDb2VyY2UgXCJoM1wiIGVcblxuICBsZXQgaDQgZSA9IHVuc2FmZUNvZXJjZSBcImg0XCIgZVxuXG4gIGxldCBoNSBlID0gdW5zYWZlQ29lcmNlIFwiaDVcIiBlXG5cbiAgbGV0IGg2IGUgPSB1bnNhZmVDb2VyY2UgXCJoNlwiIGVcblxuICBsZXQgaGVhZCBlID0gdW5zYWZlQ29lcmNlIFwiaGVhZFwiIGVcblxuICBsZXQgaHIgZSA9IHVuc2FmZUNvZXJjZSBcImhyXCIgZVxuXG4gIGxldCBodG1sIGUgPSB1bnNhZmVDb2VyY2UgXCJodG1sXCIgZVxuXG4gIGxldCBpZnJhbWUgZSA9IHVuc2FmZUNvZXJjZSBcImlmcmFtZVwiIGVcblxuICBsZXQgaW1nIGUgPSB1bnNhZmVDb2VyY2UgXCJpbWdcIiBlXG5cbiAgbGV0IGlucHV0IGUgPSB1bnNhZmVDb2VyY2UgXCJpbnB1dFwiIGVcblxuICBsZXQgaW5zIGUgPSB1bnNhZmVDb2VyY2UgXCJpbnNcIiBlXG5cbiAgbGV0IGxhYmVsIGUgPSB1bnNhZmVDb2VyY2UgXCJsYWJlbFwiIGVcblxuICBsZXQgbGVnZW5kIGUgPSB1bnNhZmVDb2VyY2UgXCJsZWdlbmRcIiBlXG5cbiAgbGV0IGxpIGUgPSB1bnNhZmVDb2VyY2UgXCJsaVwiIGVcblxuICBsZXQgbGluayBlID0gdW5zYWZlQ29lcmNlIFwibGlua1wiIGVcblxuICBsZXQgbWFwIGUgPSB1bnNhZmVDb2VyY2UgXCJtYXBcIiBlXG5cbiAgbGV0IG1ldGEgZSA9IHVuc2FmZUNvZXJjZSBcIm1ldGFcIiBlXG5cbiAgbGV0IF9vYmplY3QgZSA9IHVuc2FmZUNvZXJjZSBcIm9iamVjdFwiIGVcblxuICBsZXQgb2wgZSA9IHVuc2FmZUNvZXJjZSBcIm9sXCIgZVxuXG4gIGxldCBvcHRncm91cCBlID0gdW5zYWZlQ29lcmNlIFwib3B0Z3JvdXBcIiBlXG5cbiAgbGV0IG9wdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwib3B0aW9uXCIgZVxuXG4gIGxldCBwIGUgPSB1bnNhZmVDb2VyY2UgXCJwXCIgZVxuXG4gIGxldCBwYXJhbSBlID0gdW5zYWZlQ29lcmNlIFwicGFyYW1cIiBlXG5cbiAgbGV0IHByZSBlID0gdW5zYWZlQ29lcmNlIFwicHJlXCIgZVxuXG4gIGxldCBxIGUgPSB1bnNhZmVDb2VyY2UgXCJxXCIgZVxuXG4gIGxldCBzY3JpcHQgZSA9IHVuc2FmZUNvZXJjZSBcInNjcmlwdFwiIGVcblxuICBsZXQgc2VsZWN0IGUgPSB1bnNhZmVDb2VyY2UgXCJzZWxlY3RcIiBlXG5cbiAgbGV0IHN0eWxlIGUgPSB1bnNhZmVDb2VyY2UgXCJzdHlsZVwiIGVcblxuICBsZXQgdGFibGUgZSA9IHVuc2FmZUNvZXJjZSBcInRhYmxlXCIgZVxuXG4gIGxldCB0Ym9keSBlID0gdW5zYWZlQ29lcmNlIFwidGJvZHlcIiBlXG5cbiAgbGV0IHRkIGUgPSB1bnNhZmVDb2VyY2UgXCJ0ZFwiIGVcblxuICBsZXQgdGV4dGFyZWEgZSA9IHVuc2FmZUNvZXJjZSBcInRleHRhcmVhXCIgZVxuXG4gIGxldCB0Zm9vdCBlID0gdW5zYWZlQ29lcmNlIFwidGZvb3RcIiBlXG5cbiAgbGV0IHRoIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aFwiIGVcblxuICBsZXQgdGhlYWQgZSA9IHVuc2FmZUNvZXJjZSBcInRoZWFkXCIgZVxuXG4gIGxldCB0aXRsZSBlID0gdW5zYWZlQ29lcmNlIFwidGl0bGVcIiBlXG5cbiAgbGV0IHRyIGUgPSB1bnNhZmVDb2VyY2UgXCJ0clwiIGVcblxuICBsZXQgdWwgZSA9IHVuc2FmZUNvZXJjZSBcInVsXCIgZVxuXG4gIGxldCBhdWRpbyBlID0gdW5zYWZlQ29lcmNlIFwiYXVkaW9cIiBlXG5cbiAgbGV0IHZpZGVvIGUgPSB1bnNhZmVDb2VyY2UgXCJ2aWRlb1wiIGVcblxuICBsZXQgdW5zYWZlQ29lcmNlRXZlbnQgY29uc3RyIChldiA6ICNldmVudCB0KSA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKGRlZiBjb25zdHIpICYmIEpzLmluc3RhbmNlb2YgZXYgY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGV2KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBtb3VzZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZUV2ZW50IGV2XG5cbiAgbGV0IGtleWJvYXJkRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX0tleWJvYXJkRXZlbnQgZXZcblxuICBsZXQgd2hlZWxFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2hlZWxFdmVudCBldlxuXG4gIGxldCBtb3VzZVNjcm9sbEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZVNjcm9sbEV2ZW50IGV2XG5cbiAgbGV0IHBvcFN0YXRlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BvcFN0YXRlRXZlbnQgZXZcblxuICBsZXQgbWVzc2FnZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9NZXNzYWdlRXZlbnQgZXZcbmVuZFxuXG4oKioqKilcblxubGV0IGV2ZW50VGFyZ2V0ID0gRG9tLmV2ZW50VGFyZ2V0XG5cbmxldCBldmVudFJlbGF0ZWRUYXJnZXQgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIE9wdGRlZi5nZXQgZSMjLnJlbGF0ZWRUYXJnZXQgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggSnMudG9fc3RyaW5nIGUjIy5fdHlwZSB3aXRoXG4gICAgICB8IFwibW91c2VvdmVyXCIgLT4gT3B0ZGVmLmdldCBlIyMuZnJvbUVsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IFwibW91c2VvdXRcIiAtPiBPcHRkZWYuZ2V0IGUjIy50b0VsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IF8gLT4gSnMubnVsbClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCBlIyMuY2xpZW50WCArIGJvZHkjIy5zY3JvbGxMZWZ0ICsgaHRtbCMjLnNjcm9sbExlZnRcbiAgLCBlIyMuY2xpZW50WSArIGJvZHkjIy5zY3JvbGxUb3AgKyBodG1sIyMuc2Nyb2xsVG9wIClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbiAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMucGFnZVhcbiAgICAoZnVuICgpIC0+IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgZSlcbiAgICAoZnVuIHggLT4gT3B0ZGVmLmNhc2UgZSMjLnBhZ2VZIChmdW4gKCkgLT4gZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyBlKSAoZnVuIHkgLT4geCwgeSkpXG5cbmxldCBlbGVtZW50Q2xpZW50UG9zaXRpb24gKGUgOiAjZWxlbWVudCB0KSA9XG4gIGxldCByID0gZSMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGluXG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCB0cnVuY2F0ZSAoSnMudG9fZmxvYXQgciMjLmxlZnQpIC0gYm9keSMjLmNsaWVudExlZnQgLSBodG1sIyMuY2xpZW50TGVmdFxuICAsIHRydW5jYXRlIChKcy50b19mbG9hdCByIyMudG9wKSAtIGJvZHkjIy5jbGllbnRUb3AgLSBodG1sIyMuY2xpZW50VG9wIClcblxubGV0IGdldERvY3VtZW50U2Nyb2xsICgpID1cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICBib2R5IyMuc2Nyb2xsTGVmdCArIGh0bWwjIy5zY3JvbGxMZWZ0LCBib2R5IyMuc2Nyb2xsVG9wICsgaHRtbCMjLnNjcm9sbFRvcFxuXG5sZXQgYnV0dG9uUHJlc3NlZCAoZXYgOiAjbW91c2VFdmVudCBKcy50KSA9XG4gIEpzLk9wdGRlZi5jYXNlXG4gICAgZXYjIy53aGljaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIGV2IyMuYnV0dG9uIHdpdGhcbiAgICAgIHwgMSAtPiBMZWZ0X2J1dHRvblxuICAgICAgfCAyIC0+IFJpZ2h0X2J1dHRvblxuICAgICAgfCA0IC0+IE1pZGRsZV9idXR0b25cbiAgICAgIHwgXyAtPiBOb19idXR0b24pXG4gICAgKGZ1biB4IC0+IHgpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIGUgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgaCA9XG4gIGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuICAgID9jYXB0dXJlXG4gICAgP29uY2VcbiAgICA/cGFzc2l2ZVxuICAgIGVcbiAgICBFdmVudC53aGVlbFxuICAgIChoYW5kbGVyIChmdW4gKGUgOiBtb3VzZXdoZWVsRXZlbnQgdCkgLT5cbiAgICAgICAgIGxldCBkeCA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWCAoZnVuICgpIC0+IDApIC8gNDAgaW5cbiAgICAgICAgIGxldCBkeSA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWSAoZnVuICgpIC0+IGUjIy53aGVlbERlbHRhKSAvIDQwIGluXG4gICAgICAgICBoIChlIDo+IG1vdXNlRXZlbnQgdCkgfmR4IH5keSkpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lciBlIGggY2FwdCA9XG4gIGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgfmNhcHR1cmU6Y2FwdCBlIGhcblxuKCoqKioqKVxuXG5tb2R1bGUgS2V5Ym9hcmRfY29kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVW5pZGVudGlmaWVkXG4gICAgKCogQWxwaGFiZXRpYyBDaGFyYWN0ZXJzICopXG4gICAgfCBLZXlBXG4gICAgfCBLZXlCXG4gICAgfCBLZXlDXG4gICAgfCBLZXlEXG4gICAgfCBLZXlFXG4gICAgfCBLZXlGXG4gICAgfCBLZXlHXG4gICAgfCBLZXlIXG4gICAgfCBLZXlJXG4gICAgfCBLZXlKXG4gICAgfCBLZXlLXG4gICAgfCBLZXlMXG4gICAgfCBLZXlNXG4gICAgfCBLZXlOXG4gICAgfCBLZXlPXG4gICAgfCBLZXlQXG4gICAgfCBLZXlRXG4gICAgfCBLZXlSXG4gICAgfCBLZXlTXG4gICAgfCBLZXlUXG4gICAgfCBLZXlVXG4gICAgfCBLZXlWXG4gICAgfCBLZXlXXG4gICAgfCBLZXlYXG4gICAgfCBLZXlZXG4gICAgfCBLZXlaXG4gICAgKCogRGlnaXRzICopXG4gICAgfCBEaWdpdDBcbiAgICB8IERpZ2l0MVxuICAgIHwgRGlnaXQyXG4gICAgfCBEaWdpdDNcbiAgICB8IERpZ2l0NFxuICAgIHwgRGlnaXQ1XG4gICAgfCBEaWdpdDZcbiAgICB8IERpZ2l0N1xuICAgIHwgRGlnaXQ4XG4gICAgfCBEaWdpdDlcbiAgICB8IE1pbnVzXG4gICAgfCBFcXVhbFxuICAgICgqIFdoaXRlc3BhY2UgKilcbiAgICB8IFRhYlxuICAgIHwgRW50ZXJcbiAgICB8IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgRXNjYXBlXG4gICAgfCBCYWNrc3BhY2VcbiAgICB8IEluc2VydFxuICAgIHwgRGVsZXRlXG4gICAgfCBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBCcmFja2V0TGVmdFxuICAgIHwgQnJhY2tldFJpZ2h0XG4gICAgfCBTZW1pY29sb25cbiAgICB8IFF1b3RlXG4gICAgfCBCYWNrcXVvdGVcbiAgICB8IEJhY2tzbGFzaFxuICAgIHwgQ29tbWFcbiAgICB8IFBlcmlvZFxuICAgIHwgU2xhc2hcbiAgICAoKiBGdW5jdGlvbiBrZXlzICopXG4gICAgfCBGMVxuICAgIHwgRjJcbiAgICB8IEYzXG4gICAgfCBGNFxuICAgIHwgRjVcbiAgICB8IEY2XG4gICAgfCBGN1xuICAgIHwgRjhcbiAgICB8IEY5XG4gICAgfCBGMTBcbiAgICB8IEYxMVxuICAgIHwgRjEyXG4gICAgKCogTnVtcGFkIGtleXMgKilcbiAgICB8IE51bXBhZDBcbiAgICB8IE51bXBhZDFcbiAgICB8IE51bXBhZDJcbiAgICB8IE51bXBhZDNcbiAgICB8IE51bXBhZDRcbiAgICB8IE51bXBhZDVcbiAgICB8IE51bXBhZDZcbiAgICB8IE51bXBhZDdcbiAgICB8IE51bXBhZDhcbiAgICB8IE51bXBhZDlcbiAgICB8IE51bXBhZE11bHRpcGx5XG4gICAgfCBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgTnVtcGFkQWRkXG4gICAgfCBOdW1wYWREZWNpbWFsXG4gICAgfCBOdW1wYWRFcXVhbFxuICAgIHwgTnVtcGFkRW50ZXJcbiAgICB8IE51bXBhZERpdmlkZVxuICAgIHwgTnVtTG9ja1xuICAgICgqIE1vZGlmaWVyIGtleXMgKilcbiAgICB8IENvbnRyb2xMZWZ0XG4gICAgfCBDb250cm9sUmlnaHRcbiAgICB8IE1ldGFMZWZ0XG4gICAgfCBNZXRhUmlnaHRcbiAgICB8IFNoaWZ0TGVmdFxuICAgIHwgU2hpZnRSaWdodFxuICAgIHwgQWx0TGVmdFxuICAgIHwgQWx0UmlnaHRcbiAgICAoKiBBcnJvdyBrZXlzICopXG4gICAgfCBBcnJvd0xlZnRcbiAgICB8IEFycm93UmlnaHRcbiAgICB8IEFycm93VXBcbiAgICB8IEFycm93RG93blxuICAgICgqIE5hdmlnYXRpb24gKilcbiAgICB8IFBhZ2VVcFxuICAgIHwgUGFnZURvd25cbiAgICB8IEhvbWVcbiAgICB8IEVuZFxuICAgICgqIFNvdW5kICopXG4gICAgfCBWb2x1bWVNdXRlXG4gICAgfCBWb2x1bWVEb3duXG4gICAgfCBWb2x1bWVVcFxuICAgICgqIE1lZGlhICopXG4gICAgfCBNZWRpYVRyYWNrUHJldmlvdXNcbiAgICB8IE1lZGlhVHJhY2tOZXh0XG4gICAgfCBNZWRpYVBsYXlQYXVzZVxuICAgIHwgTWVkaWFTdG9wXG4gICAgKCogQnJvd3NlciBzcGVjaWFsICopXG4gICAgfCBDb250ZXh0TWVudVxuICAgIHwgQnJvd3NlclNlYXJjaFxuICAgIHwgQnJvd3NlckhvbWVcbiAgICB8IEJyb3dzZXJGYXZvcml0ZXNcbiAgICB8IEJyb3dzZXJSZWZyZXNoXG4gICAgfCBCcm93c2VyU3RvcFxuICAgIHwgQnJvd3NlckZvcndhcmRcbiAgICB8IEJyb3dzZXJCYWNrXG4gICAgKCogTWlzYyAqKVxuICAgIHwgT1NMZWZ0XG4gICAgfCBPU1JpZ2h0XG4gICAgfCBTY3JvbGxMb2NrXG4gICAgfCBQcmludFNjcmVlblxuICAgIHwgSW50bEJhY2tzbGFzaFxuICAgIHwgSW50bFllblxuICAgIHwgUGF1c2VcblxuICBsZXQgdHJ5X2NvZGUgdiA9XG4gICAgbWF0Y2ggSnMudG9fc3RyaW5nIHYgd2l0aFxuICAgICgqIEFscGhhYmV0aWMgQ2hhcmFjdGVycyAqKVxuICAgIHwgXCJLZXlBXCIgLT4gS2V5QVxuICAgIHwgXCJLZXlCXCIgLT4gS2V5QlxuICAgIHwgXCJLZXlDXCIgLT4gS2V5Q1xuICAgIHwgXCJLZXlEXCIgLT4gS2V5RFxuICAgIHwgXCJLZXlFXCIgLT4gS2V5RVxuICAgIHwgXCJLZXlGXCIgLT4gS2V5RlxuICAgIHwgXCJLZXlHXCIgLT4gS2V5R1xuICAgIHwgXCJLZXlIXCIgLT4gS2V5SFxuICAgIHwgXCJLZXlJXCIgLT4gS2V5SVxuICAgIHwgXCJLZXlKXCIgLT4gS2V5SlxuICAgIHwgXCJLZXlLXCIgLT4gS2V5S1xuICAgIHwgXCJLZXlMXCIgLT4gS2V5TFxuICAgIHwgXCJLZXlNXCIgLT4gS2V5TVxuICAgIHwgXCJLZXlOXCIgLT4gS2V5TlxuICAgIHwgXCJLZXlPXCIgLT4gS2V5T1xuICAgIHwgXCJLZXlQXCIgLT4gS2V5UFxuICAgIHwgXCJLZXlRXCIgLT4gS2V5UVxuICAgIHwgXCJLZXlSXCIgLT4gS2V5UlxuICAgIHwgXCJLZXlTXCIgLT4gS2V5U1xuICAgIHwgXCJLZXlUXCIgLT4gS2V5VFxuICAgIHwgXCJLZXlVXCIgLT4gS2V5VVxuICAgIHwgXCJLZXlWXCIgLT4gS2V5VlxuICAgIHwgXCJLZXlXXCIgLT4gS2V5V1xuICAgIHwgXCJLZXlYXCIgLT4gS2V5WFxuICAgIHwgXCJLZXlZXCIgLT4gS2V5WVxuICAgIHwgXCJLZXlaXCIgLT4gS2V5WlxuICAgICgqIERpZ2l0cyAqKVxuICAgIHwgXCJEaWdpdDBcIiAtPiBEaWdpdDBcbiAgICB8IFwiRGlnaXQxXCIgLT4gRGlnaXQxXG4gICAgfCBcIkRpZ2l0MlwiIC0+IERpZ2l0MlxuICAgIHwgXCJEaWdpdDNcIiAtPiBEaWdpdDNcbiAgICB8IFwiRGlnaXQ0XCIgLT4gRGlnaXQ0XG4gICAgfCBcIkRpZ2l0NVwiIC0+IERpZ2l0NVxuICAgIHwgXCJEaWdpdDZcIiAtPiBEaWdpdDZcbiAgICB8IFwiRGlnaXQ3XCIgLT4gRGlnaXQ3XG4gICAgfCBcIkRpZ2l0OFwiIC0+IERpZ2l0OFxuICAgIHwgXCJEaWdpdDlcIiAtPiBEaWdpdDlcbiAgICB8IFwiTWludXNcIiAtPiBNaW51c1xuICAgIHwgXCJFcXVhbFwiIC0+IEVxdWFsXG4gICAgKCogV2hpdGVzcGFjZSAqKVxuICAgIHwgXCJUYWJcIiAtPiBUYWJcbiAgICB8IFwiRW50ZXJcIiAtPiBFbnRlclxuICAgIHwgXCJTcGFjZVwiIC0+IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgXCJFc2NhcGVcIiAtPiBFc2NhcGVcbiAgICB8IFwiQmFja3NwYWNlXCIgLT4gQmFja3NwYWNlXG4gICAgfCBcIkluc2VydFwiIC0+IEluc2VydFxuICAgIHwgXCJEZWxldGVcIiAtPiBEZWxldGVcbiAgICB8IFwiQ2Fwc0xvY2tcIiAtPiBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBcIkJyYWNrZXRMZWZ0XCIgLT4gQnJhY2tldExlZnRcbiAgICB8IFwiQnJhY2tldFJpZ2h0XCIgLT4gQnJhY2tldFJpZ2h0XG4gICAgfCBcIlNlbWljb2xvblwiIC0+IFNlbWljb2xvblxuICAgIHwgXCJRdW90ZVwiIC0+IFF1b3RlXG4gICAgfCBcIkJhY2txdW90ZVwiIC0+IEJhY2txdW90ZVxuICAgIHwgXCJCYWNrc2xhc2hcIiAtPiBCYWNrc2xhc2hcbiAgICB8IFwiQ29tbWFcIiAtPiBDb21tYVxuICAgIHwgXCJQZXJpb2RcIiAtPiBQZXJpb2RcbiAgICB8IFwiU2xhc2hcIiAtPiBTbGFzaFxuICAgICgqIEZ1bmN0aW9uIGtleXMgKilcbiAgICB8IFwiRjFcIiAtPiBGMVxuICAgIHwgXCJGMlwiIC0+IEYyXG4gICAgfCBcIkYzXCIgLT4gRjNcbiAgICB8IFwiRjRcIiAtPiBGNFxuICAgIHwgXCJGNVwiIC0+IEY1XG4gICAgfCBcIkY2XCIgLT4gRjZcbiAgICB8IFwiRjdcIiAtPiBGN1xuICAgIHwgXCJGOFwiIC0+IEY4XG4gICAgfCBcIkY5XCIgLT4gRjlcbiAgICB8IFwiRjEwXCIgLT4gRjEwXG4gICAgfCBcIkYxMVwiIC0+IEYxMVxuICAgIHwgXCJGMTJcIiAtPiBGMTJcbiAgICAoKiBOdW1wYWQga2V5cyAqKVxuICAgIHwgXCJOdW1wYWQwXCIgLT4gTnVtcGFkMFxuICAgIHwgXCJOdW1wYWQxXCIgLT4gTnVtcGFkMVxuICAgIHwgXCJOdW1wYWQyXCIgLT4gTnVtcGFkMlxuICAgIHwgXCJOdW1wYWQzXCIgLT4gTnVtcGFkM1xuICAgIHwgXCJOdW1wYWQ0XCIgLT4gTnVtcGFkNFxuICAgIHwgXCJOdW1wYWQ1XCIgLT4gTnVtcGFkNVxuICAgIHwgXCJOdW1wYWQ2XCIgLT4gTnVtcGFkNlxuICAgIHwgXCJOdW1wYWQ3XCIgLT4gTnVtcGFkN1xuICAgIHwgXCJOdW1wYWQ4XCIgLT4gTnVtcGFkOFxuICAgIHwgXCJOdW1wYWQ5XCIgLT4gTnVtcGFkOVxuICAgIHwgXCJOdW1wYWRNdWx0aXBseVwiIC0+IE51bXBhZE11bHRpcGx5XG4gICAgfCBcIk51bXBhZFN1YnRyYWN0XCIgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IFwiTnVtcGFkQWRkXCIgLT4gTnVtcGFkQWRkXG4gICAgfCBcIk51bXBhZERlY2ltYWxcIiAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCBcIk51bXBhZEVxdWFsXCIgLT4gTnVtcGFkRXF1YWxcbiAgICB8IFwiTnVtcGFkRW50ZXJcIiAtPiBOdW1wYWRFbnRlclxuICAgIHwgXCJOdW1wYWREaXZpZGVcIiAtPiBOdW1wYWREaXZpZGVcbiAgICB8IFwiTnVtTG9ja1wiIC0+IE51bUxvY2tcbiAgICAoKiBNb2RpZmllciBrZXlzICopXG4gICAgfCBcIkNvbnRyb2xMZWZ0XCIgLT4gQ29udHJvbExlZnRcbiAgICB8IFwiQ29udHJvbFJpZ2h0XCIgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCBcIk1ldGFMZWZ0XCIgLT4gTWV0YUxlZnRcbiAgICB8IFwiTWV0YVJpZ2h0XCIgLT4gTWV0YVJpZ2h0XG4gICAgfCBcIlNoaWZ0TGVmdFwiIC0+IFNoaWZ0TGVmdFxuICAgIHwgXCJTaGlmdFJpZ2h0XCIgLT4gU2hpZnRSaWdodFxuICAgIHwgXCJBbHRMZWZ0XCIgLT4gQWx0TGVmdFxuICAgIHwgXCJBbHRSaWdodFwiIC0+IEFsdFJpZ2h0XG4gICAgKCogQXJyb3cga2V5cyAqKVxuICAgIHwgXCJBcnJvd0xlZnRcIiAtPiBBcnJvd0xlZnRcbiAgICB8IFwiQXJyb3dSaWdodFwiIC0+IEFycm93UmlnaHRcbiAgICB8IFwiQXJyb3dVcFwiIC0+IEFycm93VXBcbiAgICB8IFwiQXJyb3dEb3duXCIgLT4gQXJyb3dEb3duXG4gICAgKCogTmF2aWdhdGlvbiAqKVxuICAgIHwgXCJQYWdlVXBcIiAtPiBQYWdlVXBcbiAgICB8IFwiUGFnZURvd25cIiAtPiBQYWdlRG93blxuICAgIHwgXCJIb21lXCIgLT4gSG9tZVxuICAgIHwgXCJFbmRcIiAtPiBFbmRcbiAgICAoKiBTb3VuZCAqKVxuICAgIHwgXCJWb2x1bWVNdXRlXCIgLT4gVm9sdW1lTXV0ZVxuICAgIHwgXCJWb2x1bWVEb3duXCIgLT4gVm9sdW1lRG93blxuICAgIHwgXCJWb2x1bWVVcFwiIC0+IFZvbHVtZVVwXG4gICAgKCogTWVkaWEgKilcbiAgICB8IFwiTWVkaWFUcmFja1ByZXZpb3VzXCIgLT4gTWVkaWFUcmFja1ByZXZpb3VzXG4gICAgfCBcIk1lZGlhVHJhY2tOZXh0XCIgLT4gTWVkaWFUcmFja05leHRcbiAgICB8IFwiTWVkaWFQbGF5UGF1c2VcIiAtPiBNZWRpYVBsYXlQYXVzZVxuICAgIHwgXCJNZWRpYVN0b3BcIiAtPiBNZWRpYVN0b3BcbiAgICAoKiBCcm93c2VyIHNwZWNpYWwgKilcbiAgICB8IFwiQ29udGV4dE1lbnVcIiAtPiBDb250ZXh0TWVudVxuICAgIHwgXCJCcm93c2VyU2VhcmNoXCIgLT4gQnJvd3NlclNlYXJjaFxuICAgIHwgXCJCcm93c2VySG9tZVwiIC0+IEJyb3dzZXJIb21lXG4gICAgfCBcIkJyb3dzZXJGYXZvcml0ZXNcIiAtPiBCcm93c2VyRmF2b3JpdGVzXG4gICAgfCBcIkJyb3dzZXJSZWZyZXNoXCIgLT4gQnJvd3NlclJlZnJlc2hcbiAgICB8IFwiQnJvd3NlclN0b3BcIiAtPiBCcm93c2VyU3RvcFxuICAgIHwgXCJCcm93c2VyRm9yd2FyZFwiIC0+IEJyb3dzZXJGb3J3YXJkXG4gICAgfCBcIkJyb3dzZXJCYWNrXCIgLT4gQnJvd3NlckJhY2tcbiAgICAoKiBNaXNjICopXG4gICAgfCBcIk9TTGVmdFwiIC0+IE9TTGVmdFxuICAgIHwgXCJPU1JpZ2h0XCIgLT4gT1NSaWdodFxuICAgIHwgXCJTY3JvbGxMb2NrXCIgLT4gU2Nyb2xsTG9ja1xuICAgIHwgXCJQcmludFNjcmVlblwiIC0+IFByaW50U2NyZWVuXG4gICAgfCBcIkludGxCYWNrc2xhc2hcIiAtPiBJbnRsQmFja3NsYXNoXG4gICAgfCBcIkludGxZZW5cIiAtPiBJbnRsWWVuXG4gICAgfCBcIlBhdXNlXCIgLT4gUGF1c2VcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9sZWZ0ID0gZnVuY3Rpb25cbiAgICB8IDE2IC0+IFNoaWZ0TGVmdFxuICAgIHwgMTcgLT4gQ29udHJvbExlZnRcbiAgICB8IDE4IC0+IEFsdExlZnRcbiAgICB8IDkxIC0+IE1ldGFMZWZ0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfcmlnaHQgPSBmdW5jdGlvblxuICAgIHwgMTYgLT4gU2hpZnRSaWdodFxuICAgIHwgMTcgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCAxOCAtPiBBbHRSaWdodFxuICAgIHwgOTEgLT4gTWV0YVJpZ2h0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbnVtcGFkID0gZnVuY3Rpb25cbiAgICB8IDQ2IC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDQ1IC0+IE51bXBhZDBcbiAgICB8IDM1IC0+IE51bXBhZDFcbiAgICB8IDQwIC0+IE51bXBhZDJcbiAgICB8IDM0IC0+IE51bXBhZDNcbiAgICB8IDM3IC0+IE51bXBhZDRcbiAgICB8IDEyIC0+IE51bXBhZDVcbiAgICB8IDM5IC0+IE51bXBhZDZcbiAgICB8IDM2IC0+IE51bXBhZDdcbiAgICB8IDM4IC0+IE51bXBhZDhcbiAgICB8IDMzIC0+IE51bXBhZDlcbiAgICB8IDEzIC0+IE51bXBhZEVudGVyXG4gICAgfCAxMTEgLT4gTnVtcGFkRGl2aWRlXG4gICAgfCAxMDcgLT4gTnVtcGFkQWRkXG4gICAgfCAxMDkgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IDEwNiAtPiBOdW1wYWRNdWx0aXBseVxuICAgIHwgMTEwIC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDk2IC0+IE51bXBhZDBcbiAgICB8IDk3IC0+IE51bXBhZDFcbiAgICB8IDk4IC0+IE51bXBhZDJcbiAgICB8IDk5IC0+IE51bXBhZDNcbiAgICB8IDEwMCAtPiBOdW1wYWQ0XG4gICAgfCAxMDEgLT4gTnVtcGFkNVxuICAgIHwgMTAyIC0+IE51bXBhZDZcbiAgICB8IDEwMyAtPiBOdW1wYWQ3XG4gICAgfCAxMDQgLT4gTnVtcGFkOFxuICAgIHwgMTA1IC0+IE51bXBhZDlcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9ub3JtYWwgPSBmdW5jdGlvblxuICAgIHwgMjcgLT4gRXNjYXBlXG4gICAgfCAxMTIgLT4gRjFcbiAgICB8IDExMyAtPiBGMlxuICAgIHwgMTE0IC0+IEYzXG4gICAgfCAxMTUgLT4gRjRcbiAgICB8IDExNiAtPiBGNVxuICAgIHwgMTE3IC0+IEY2XG4gICAgfCAxMTggLT4gRjdcbiAgICB8IDExOSAtPiBGOFxuICAgIHwgMTIwIC0+IEY5XG4gICAgfCAxMjEgLT4gRjEwXG4gICAgfCAxMjIgLT4gRjExXG4gICAgfCAxMjMgLT4gRjEyXG4gICAgfCA0MiAtPiBQcmludFNjcmVlblxuICAgIHwgMTQ1IC0+IFNjcm9sbExvY2tcbiAgICB8IDE5IC0+IFBhdXNlXG4gICAgfCAxOTIgLT4gQmFja3F1b3RlXG4gICAgfCA0OSAtPiBEaWdpdDFcbiAgICB8IDUwIC0+IERpZ2l0MlxuICAgIHwgNTEgLT4gRGlnaXQzXG4gICAgfCA1MiAtPiBEaWdpdDRcbiAgICB8IDUzIC0+IERpZ2l0NVxuICAgIHwgNTQgLT4gRGlnaXQ2XG4gICAgfCA1NSAtPiBEaWdpdDdcbiAgICB8IDU2IC0+IERpZ2l0OFxuICAgIHwgNTcgLT4gRGlnaXQ5XG4gICAgfCA0OCAtPiBEaWdpdDBcbiAgICB8IDE4OSAtPiBNaW51c1xuICAgIHwgMTg3IC0+IEVxdWFsXG4gICAgfCA4IC0+IEJhY2tzcGFjZVxuICAgIHwgOSAtPiBUYWJcbiAgICB8IDgxIC0+IEtleVFcbiAgICB8IDg3IC0+IEtleVdcbiAgICB8IDY5IC0+IEtleUVcbiAgICB8IDgyIC0+IEtleVJcbiAgICB8IDg0IC0+IEtleVRcbiAgICB8IDg5IC0+IEtleVlcbiAgICB8IDg1IC0+IEtleVVcbiAgICB8IDczIC0+IEtleUlcbiAgICB8IDc5IC0+IEtleU9cbiAgICB8IDgwIC0+IEtleVBcbiAgICB8IDIxOSAtPiBCcmFja2V0TGVmdFxuICAgIHwgMjIxIC0+IEJyYWNrZXRSaWdodFxuICAgIHwgMjIwIC0+IEJhY2tzbGFzaFxuICAgIHwgMjAgLT4gQ2Fwc0xvY2tcbiAgICB8IDY1IC0+IEtleUFcbiAgICB8IDgzIC0+IEtleVNcbiAgICB8IDY4IC0+IEtleURcbiAgICB8IDcwIC0+IEtleUZcbiAgICB8IDcxIC0+IEtleUdcbiAgICB8IDcyIC0+IEtleUhcbiAgICB8IDc0IC0+IEtleUpcbiAgICB8IDc1IC0+IEtleUtcbiAgICB8IDc2IC0+IEtleUxcbiAgICB8IDE4NiAtPiBTZW1pY29sb25cbiAgICB8IDIyMiAtPiBRdW90ZVxuICAgIHwgMTMgLT4gRW50ZXJcbiAgICB8IDkwIC0+IEtleVpcbiAgICB8IDg4IC0+IEtleVhcbiAgICB8IDY3IC0+IEtleUNcbiAgICB8IDg2IC0+IEtleVZcbiAgICB8IDY2IC0+IEtleUJcbiAgICB8IDc4IC0+IEtleU5cbiAgICB8IDc3IC0+IEtleU1cbiAgICB8IDE4OCAtPiBDb21tYVxuICAgIHwgMTkwIC0+IFBlcmlvZFxuICAgIHwgMTkxIC0+IFNsYXNoXG4gICAgfCAzMiAtPiBTcGFjZVxuICAgIHwgOTMgLT4gQ29udGV4dE1lbnVcbiAgICB8IDQ1IC0+IEluc2VydFxuICAgIHwgMzYgLT4gSG9tZVxuICAgIHwgMzMgLT4gUGFnZVVwXG4gICAgfCA0NiAtPiBEZWxldGVcbiAgICB8IDM1IC0+IEVuZFxuICAgIHwgMzQgLT4gUGFnZURvd25cbiAgICB8IDM3IC0+IEFycm93TGVmdFxuICAgIHwgNDAgLT4gQXJyb3dEb3duXG4gICAgfCAzOSAtPiBBcnJvd1JpZ2h0XG4gICAgfCAzOCAtPiBBcnJvd1VwXG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCBtYWtlX3VuaWRlbnRpZmllZCBfID0gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9uZXh0IHZhbHVlIGYgPSBmdW5jdGlvblxuICAgIHwgVW5pZGVudGlmaWVkIC0+IE9wdGRlZi5jYXNlIHZhbHVlIG1ha2VfdW5pZGVudGlmaWVkIGZcbiAgICB8IHYgLT4gdlxuXG4gIGxldCBydW5fbmV4dCB2YWx1ZSBmID0gZnVuY3Rpb25cbiAgICB8IFVuaWRlbnRpZmllZCAtPiBmIHZhbHVlXG4gICAgfCB2IC0+IHZcblxuICBsZXQgZ2V0X2tleV9jb2RlIGV2dCA9IGV2dCMjLmtleUNvZGVcblxuICBsZXQgdHJ5X2tleV9sb2NhdGlvbiBldnQgPVxuICAgIG1hdGNoIGV2dCMjLmxvY2F0aW9uIHdpdGhcbiAgICB8IDEgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9sZWZ0XG4gICAgfCAyIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfcmlnaHRcbiAgICB8IDMgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9udW1wYWRcbiAgICB8IF8gLT4gbWFrZV91bmlkZW50aWZpZWRcblxuICBsZXQgKCB8PiApIHggZiA9IGYgeFxuXG4gIGxldCBvZl9ldmVudCBldnQgPVxuICAgIFVuaWRlbnRpZmllZFxuICAgIHw+IHRyeV9uZXh0IGV2dCMjLmNvZGUgdHJ5X2NvZGVcbiAgICB8PiB0cnlfa2V5X2xvY2F0aW9uIGV2dFxuICAgIHw+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbm9ybWFsXG5cbiAgbGV0IG9mX2tleV9jb2RlID0gdHJ5X2tleV9jb2RlX25vcm1hbFxuZW5kXG5cbm1vZHVsZSBLZXlib2FyZF9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVWNoYXIudCBvcHRpb25cblxuICBsZXQgY2hhcl9vZl9pbnQgdmFsdWUgPVxuICAgIGlmIDAgPCB2YWx1ZSB0aGVuIHRyeSBTb21lIChVY2hhci5vZl9pbnQgdmFsdWUpIHdpdGggXyAtPiBOb25lIGVsc2UgTm9uZVxuXG4gIGxldCBlbXB0eV9zdHJpbmcgXyA9IEpzLnN0cmluZyBcIlwiXG5cbiAgbGV0IG5vbmUgXyA9IE5vbmVcblxuICBsZXQgb2ZfZXZlbnQgZXZ0ID1cbiAgICBsZXQga2V5ID0gT3B0ZGVmLmdldCBldnQjIy5rZXkgZW1wdHlfc3RyaW5nIGluXG4gICAgbWF0Y2gga2V5IyMubGVuZ3RoIHdpdGhcbiAgICB8IDAgLT4gT3B0ZGVmLmNhc2UgZXZ0IyMuY2hhckNvZGUgbm9uZSBjaGFyX29mX2ludFxuICAgIHwgMSAtPiBjaGFyX29mX2ludCAoaW50X29mX2Zsb2F0IChKcy50b19mbG9hdCAoa2V5IyNjaGFyQ29kZUF0IDApKSlcbiAgICB8IF8gLT4gTm9uZVxuZW5kXG5cbigqKioqKilcblxubGV0IGVsZW1lbnQgOiAjRG9tLmVsZW1lbnQgdCAtPiBlbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlXG5cbnR5cGUgdGFnZ2VkRWxlbWVudCA9XG4gIHwgQSBvZiBhbmNob3JFbGVtZW50IHRcbiAgfCBBcmVhIG9mIGFyZWFFbGVtZW50IHRcbiAgfCBBdWRpbyBvZiBhdWRpb0VsZW1lbnQgdFxuICB8IEJhc2Ugb2YgYmFzZUVsZW1lbnQgdFxuICB8IEJsb2NrcXVvdGUgb2YgcXVvdGVFbGVtZW50IHRcbiAgfCBCb2R5IG9mIGJvZHlFbGVtZW50IHRcbiAgfCBCciBvZiBickVsZW1lbnQgdFxuICB8IEJ1dHRvbiBvZiBidXR0b25FbGVtZW50IHRcbiAgfCBDYW52YXMgb2YgY2FudmFzRWxlbWVudCB0XG4gIHwgQ2FwdGlvbiBvZiB0YWJsZUNhcHRpb25FbGVtZW50IHRcbiAgfCBDb2wgb2YgdGFibGVDb2xFbGVtZW50IHRcbiAgfCBDb2xncm91cCBvZiB0YWJsZUNvbEVsZW1lbnQgdFxuICB8IERlbCBvZiBtb2RFbGVtZW50IHRcbiAgfCBEaWFsb2cgb2YgZGlhbG9nRWxlbWVudCB0XG4gIHwgRGl2IG9mIGRpdkVsZW1lbnQgdFxuICB8IERsIG9mIGRMaXN0RWxlbWVudCB0XG4gIHwgRW1iZWQgb2YgZW1iZWRFbGVtZW50IHRcbiAgfCBGaWVsZHNldCBvZiBmaWVsZFNldEVsZW1lbnQgdFxuICB8IEZvcm0gb2YgZm9ybUVsZW1lbnQgdFxuICB8IEZyYW1lc2V0IG9mIGZyYW1lU2V0RWxlbWVudCB0XG4gIHwgRnJhbWUgb2YgZnJhbWVFbGVtZW50IHRcbiAgfCBIMSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDIgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEgzIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINCBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDUgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg2IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIZWFkIG9mIGhlYWRFbGVtZW50IHRcbiAgfCBIciBvZiBockVsZW1lbnQgdFxuICB8IEh0bWwgb2YgaHRtbEVsZW1lbnQgdFxuICB8IElmcmFtZSBvZiBpRnJhbWVFbGVtZW50IHRcbiAgfCBJbWcgb2YgaW1hZ2VFbGVtZW50IHRcbiAgfCBJbnB1dCBvZiBpbnB1dEVsZW1lbnQgdFxuICB8IElucyBvZiBtb2RFbGVtZW50IHRcbiAgfCBMYWJlbCBvZiBsYWJlbEVsZW1lbnQgdFxuICB8IExlZ2VuZCBvZiBsZWdlbmRFbGVtZW50IHRcbiAgfCBMaSBvZiBsaUVsZW1lbnQgdFxuICB8IExpbmsgb2YgbGlua0VsZW1lbnQgdFxuICB8IE1hcCBvZiBtYXBFbGVtZW50IHRcbiAgfCBNZXRhIG9mIG1ldGFFbGVtZW50IHRcbiAgfCBPYmplY3Qgb2Ygb2JqZWN0RWxlbWVudCB0XG4gIHwgT2wgb2Ygb0xpc3RFbGVtZW50IHRcbiAgfCBPcHRncm91cCBvZiBvcHRHcm91cEVsZW1lbnQgdFxuICB8IE9wdGlvbiBvZiBvcHRpb25FbGVtZW50IHRcbiAgfCBQIG9mIHBhcmFncmFwaEVsZW1lbnQgdFxuICB8IFBhcmFtIG9mIHBhcmFtRWxlbWVudCB0XG4gIHwgUHJlIG9mIHByZUVsZW1lbnQgdFxuICB8IFEgb2YgcXVvdGVFbGVtZW50IHRcbiAgfCBTY3JpcHQgb2Ygc2NyaXB0RWxlbWVudCB0XG4gIHwgU2VsZWN0IG9mIHNlbGVjdEVsZW1lbnQgdFxuICB8IFN0eWxlIG9mIHN0eWxlRWxlbWVudCB0XG4gIHwgVGFibGUgb2YgdGFibGVFbGVtZW50IHRcbiAgfCBUYm9keSBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUZCBvZiB0YWJsZUNlbGxFbGVtZW50IHRcbiAgfCBUZXh0YXJlYSBvZiB0ZXh0QXJlYUVsZW1lbnQgdFxuICB8IFRmb290IG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRoIG9mIHRhYmxlQ2VsbEVsZW1lbnQgdFxuICB8IFRoZWFkIG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRpdGxlIG9mIHRpdGxlRWxlbWVudCB0XG4gIHwgVHIgb2YgdGFibGVSb3dFbGVtZW50IHRcbiAgfCBVbCBvZiB1TGlzdEVsZW1lbnQgdFxuICB8IFZpZGVvIG9mIHZpZGVvRWxlbWVudCB0XG4gIHwgT3RoZXIgb2YgZWxlbWVudCB0XG5cbmxldCBvdGhlciBlID0gT3RoZXIgKGUgOiAjZWxlbWVudCB0IDo+IGVsZW1lbnQgdClcblxubGV0IHRhZ2dlZCAoZSA6ICNlbGVtZW50IHQpID1cbiAgbGV0IHRhZyA9IEpzLnRvX2J5dGVzdHJpbmcgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIGluXG4gIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMFxuICB0aGVuIG90aGVyIGVcbiAgZWxzZVxuICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHRhZyAwIHdpdGhcbiAgICB8ICdhJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJhXCIgLT4gQSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYXJlYVwiIC0+IEFyZWEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImF1ZGlvXCIgLT4gQXVkaW8gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnYicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiYmFzZVwiIC0+IEJhc2UgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJsb2NrcXVvdGVcIiAtPiBCbG9ja3F1b3RlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJib2R5XCIgLT4gQm9keSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYnJcIiAtPiBCciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYnV0dG9uXCIgLT4gQnV0dG9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2MnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImNhbnZhc1wiIC0+IENhbnZhcyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY2FwdGlvblwiIC0+IENhcHRpb24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNvbFwiIC0+IENvbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY29sZ3JvdXBcIiAtPiBDb2xncm91cCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdkJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJkZWxcIiAtPiBEZWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImRpdlwiIC0+IERpdiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZGxcIiAtPiBEbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdlJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJlbWJlZFwiIC0+IEVtYmVkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2YnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImZpZWxkc2V0XCIgLT4gRmllbGRzZXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZvcm1cIiAtPiBGb3JtIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmcmFtZXNldFwiIC0+IEZyYW1lc2V0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmcmFtZVwiIC0+IEZyYW1lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2gnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImgxXCIgLT4gSDEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImgyXCIgLT4gSDIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImgzXCIgLT4gSDMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg0XCIgLT4gSDQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg1XCIgLT4gSDUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg2XCIgLT4gSDYgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImhlYWRcIiAtPiBIZWFkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoclwiIC0+IEhyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJodG1sXCIgLT4gSHRtbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdpJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJpZnJhbWVcIiAtPiBJZnJhbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImltZ1wiIC0+IEltZyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW5wdXRcIiAtPiBJbnB1dCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW5zXCIgLT4gSW5zIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2wnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImxhYmVsXCIgLT4gTGFiZWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxlZ2VuZFwiIC0+IExlZ2VuZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGlcIiAtPiBMaSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGlua1wiIC0+IExpbmsgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwibWFwXCIgLT4gTWFwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJtZXRhXCIgLT4gTWV0YSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdvJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJvYmplY3RcIiAtPiBPYmplY3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9sXCIgLT4gT2wgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9wdGdyb3VwXCIgLT4gT3B0Z3JvdXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9wdGlvblwiIC0+IE9wdGlvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdwJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJwXCIgLT4gUCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwicGFyYW1cIiAtPiBQYXJhbSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwicHJlXCIgLT4gUHJlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3EnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInFcIiAtPiBRIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3MnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInNjcmlwdFwiIC0+IFNjcmlwdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwic2VsZWN0XCIgLT4gU2VsZWN0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJzdHlsZVwiIC0+IFN0eWxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3QnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInRhYmxlXCIgLT4gVGFibGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRib2R5XCIgLT4gVGJvZHkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRkXCIgLT4gVGQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRleHRhcmVhXCIgLT4gVGV4dGFyZWEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRmb290XCIgLT4gVGZvb3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRoXCIgLT4gVGggKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRoZWFkXCIgLT4gVGhlYWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRpdGxlXCIgLT4gVGl0bGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRyXCIgLT4gVHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidWxcIiAtPiBVbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd2JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ2aWRlb1wiIC0+IFZpZGVvIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgXyAtPiBvdGhlciBlXG5cbmxldCBvcHRfdGFnZ2VkIGUgPSBPcHQuY2FzZSBlIChmdW4gKCkgLT4gTm9uZSkgKGZ1biBlIC0+IFNvbWUgKHRhZ2dlZCBlKSlcblxudHlwZSB0YWdnZWRFdmVudCA9XG4gIHwgTW91c2VFdmVudCBvZiBtb3VzZUV2ZW50IHRcbiAgfCBLZXlib2FyZEV2ZW50IG9mIGtleWJvYXJkRXZlbnQgdFxuICB8IE1lc3NhZ2VFdmVudCBvZiBtZXNzYWdlRXZlbnQgdFxuICB8IE1vdXNld2hlZWxFdmVudCBvZiBtb3VzZXdoZWVsRXZlbnQgdFxuICB8IE1vdXNlU2Nyb2xsRXZlbnQgb2YgbW91c2VTY3JvbGxFdmVudCB0XG4gIHwgUG9wU3RhdGVFdmVudCBvZiBwb3BTdGF0ZUV2ZW50IHRcbiAgfCBPdGhlckV2ZW50IG9mIGV2ZW50IHRcblxubGV0IHRhZ2dlZEV2ZW50IChldiA6ICNldmVudCBKcy50KSA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKENvZXJjZVRvLm1vdXNlRXZlbnQgZXYpXG4gICAgKGZ1biAoKSAtPlxuICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgKENvZXJjZVRvLmtleWJvYXJkRXZlbnQgZXYpXG4gICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKENvZXJjZVRvLndoZWVsRXZlbnQgZXYpXG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgKENvZXJjZVRvLm1vdXNlU2Nyb2xsRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAgICAgKENvZXJjZVRvLnBvcFN0YXRlRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKENvZXJjZVRvLm1lc3NhZ2VFdmVudCBldilcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT4gT3RoZXJFdmVudCAoZXYgOj4gZXZlbnQgdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IE1lc3NhZ2VFdmVudCBldikpXG4gICAgICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gUG9wU3RhdGVFdmVudCBldikpXG4gICAgICAgICAgICAgICAgKGZ1biBldiAtPiBNb3VzZVNjcm9sbEV2ZW50IGV2KSlcbiAgICAgICAgICAgIChmdW4gZXYgLT4gTW91c2V3aGVlbEV2ZW50IGV2KSlcbiAgICAgICAgKGZ1biBldiAtPiBLZXlib2FyZEV2ZW50IGV2KSlcbiAgICAoZnVuIGV2IC0+IE1vdXNlRXZlbnQgZXYpXG5cbmxldCBvcHRfdGFnZ2VkRXZlbnQgZXYgPSBPcHQuY2FzZSBldiAoZnVuICgpIC0+IE5vbmUpIChmdW4gZXYgLT4gU29tZSAodGFnZ2VkRXZlbnQgZXYpKVxuXG5sZXQgc3RvcFByb3BhZ2F0aW9uIGV2ID1cbiAgbGV0IGUgPSBKcy5VbnNhZmUuY29lcmNlIGV2IGluXG4gIE9wdGRlZi5jYXNlXG4gICAgZSMjLnN0b3BQcm9wYWdhdGlvblxuICAgIChmdW4gKCkgLT4gZSMjLmNhbmNlbEJ1YmJsZSA6PSBKcy5fdHJ1ZSlcbiAgICAoZnVuIF8gLT4gZSMjX3N0b3BQcm9wYWdhdGlvbilcblxubGV0IF9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiB1bml0ID1cbiAgSnMuVW5zYWZlLnB1cmVfZXhwciAoZnVuIF8gLT5cbiAgICAgIGxldCB3ID0gSnMuVW5zYWZlLmNvZXJjZSB3aW5kb3cgaW5cbiAgICAgIGxldCBsID1cbiAgICAgICAgWyB3IyMucmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm1velJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMub1JlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICBdXG4gICAgICBpblxuICAgICAgdHJ5XG4gICAgICAgIGxldCByZXEgPSBMaXN0LmZpbmQgKGZ1biBjIC0+IEpzLk9wdGRlZi50ZXN0IGMpIGwgaW5cbiAgICAgICAgZnVuIGNhbGxiYWNrIC0+IEpzLlVuc2FmZS5mdW5fY2FsbCByZXEgW3wgSnMuVW5zYWZlLmluamVjdCBjYWxsYmFjayB8XVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgbGV0IG5vdyAoKSA9IEpzLnRvX2Zsb2F0IChuZXclanMgSnMuZGF0ZV9ub3cpIyNnZXRUaW1lIGluXG4gICAgICAgIGxldCBsYXN0ID0gcmVmIChub3cgKCkpIGluXG4gICAgICAgIGZ1biBjYWxsYmFjayAtPlxuICAgICAgICAgIGxldCB0ID0gbm93ICgpIGluXG4gICAgICAgICAgbGV0IGR0ID0gIWxhc3QgKy4gKDEwMDAuIC8uIDYwLikgLS4gdCBpblxuICAgICAgICAgIGxldCBkdCA9IGlmIFBvbHkuKGR0IDwgMC4pIHRoZW4gMC4gZWxzZSBkdCBpblxuICAgICAgICAgIGxhc3QgOj0gdDtcbiAgICAgICAgICBpZ25vcmUgKHdpbmRvdyMjc2V0VGltZW91dCBjYWxsYmFjayAoSnMuZmxvYXQgZHQpKSlcblxuKCoqKiopXG5cbmxldCBoYXNQdXNoU3RhdGUgKCkgPSBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSB3aW5kb3cjIy5oaXN0b3J5KSMjLnB1c2hTdGF0ZVxuXG5sZXQgaGFzUGxhY2Vob2xkZXIgKCkgPVxuICBsZXQgaSA9IGNyZWF0ZUlucHV0IGRvY3VtZW50IGluXG4gIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGkpIyMucGxhY2Vob2xkZXJcblxubGV0IGhhc1JlcXVpcmVkICgpID1cbiAgbGV0IGkgPSBjcmVhdGVJbnB1dCBkb2N1bWVudCBpblxuICBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBpKSMjLnJlcXVpcmVkXG5cbmxldCBvdmVyZmxvd19saW1pdCA9IDIxNDc0ODNfMDAwLlxuXG4oKiBtcyAqKVxuXG50eXBlIHRpbWVvdXRfaWRfc2FmZSA9IHRpbWVvdXRfaWQgb3B0aW9uIHJlZlxuXG5sZXQgc2V0VGltZW91dCBjYWxsYmFjayBkIDogdGltZW91dF9pZF9zYWZlID1cbiAgbGV0IGlkID0gcmVmIE5vbmUgaW5cbiAgbGV0IHJlYyBsb29wIGQgKCkgPVxuICAgIGxldCBzdGVwLCByZW1haW4gPVxuICAgICAgaWYgUG9seS4oZCA+IG92ZXJmbG93X2xpbWl0KSB0aGVuIG92ZXJmbG93X2xpbWl0LCBkIC0uIG92ZXJmbG93X2xpbWl0IGVsc2UgZCwgMC5cbiAgICBpblxuICAgIGxldCBjYiA9IGlmIFBvbHkuKHJlbWFpbiA9IDAuKSB0aGVuIGNhbGxiYWNrIGVsc2UgbG9vcCByZW1haW4gaW5cbiAgICBpZCA6PSBTb21lICh3aW5kb3cjI3NldFRpbWVvdXQgKEpzLndyYXBfY2FsbGJhY2sgY2IpIChKcy5mbG9hdCBzdGVwKSlcbiAgaW5cbiAgbG9vcCBkICgpO1xuICBpZFxuXG5sZXQgY2xlYXJUaW1lb3V0IChpZCA6IHRpbWVvdXRfaWRfc2FmZSkgPVxuICBtYXRjaCAhaWQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHggLT5cbiAgICAgIGlkIDo9IE5vbmU7XG4gICAgICB3aW5kb3cjI2NsZWFyVGltZW91dCB4XG5cbmxldCBqc19hcnJheV9vZl9jb2xsZWN0aW9uIChjIDogI2VsZW1lbnQgY29sbGVjdGlvbiBKcy50KSA6ICNlbGVtZW50IEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgID1cbiAgSnMuVW5zYWZlLihtZXRoX2NhbGwgKGpzX2V4cHIgXCJbXS5zbGljZVwiKSBcImNhbGxcIiBbfCBpbmplY3QgYyB8XSlcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21faHRtbFxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgZm9ybURhdGEgPSBvYmplY3RcbiAgbWV0aG9kIGFwcGVuZCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRfYmxvYiA6IGpzX3N0cmluZyB0IC0+IEZpbGUuYmxvYiB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBmb3JtRGF0YSA6IGZvcm1EYXRhIHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9Gb3JtRGF0YVxuXG5sZXQgZm9ybURhdGFfZm9ybSA6IChmb3JtRWxlbWVudCB0IC0+IGZvcm1EYXRhIHQpIGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRm9ybURhdGFcblxudHlwZSBmb3JtX2VsdCA9XG4gIFsgYFN0cmluZyBvZiBqc19zdHJpbmcgdFxuICB8IGBGaWxlIG9mIEZpbGUuZmlsZSB0XG4gIF1cblxudHlwZSBmb3JtX2NvbnRlbnRzID1cbiAgWyBgRmllbGRzIG9mIChzdHJpbmcgKiBmb3JtX2VsdCkgbGlzdCByZWZcbiAgfCBgRm9ybURhdGEgb2YgZm9ybURhdGEgdFxuICBdXG5cbmxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHYgOjogcSAtPiAoXG4gICAgICBtYXRjaCBmIHYgd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBxXG4gICAgICB8IFNvbWUgdicgLT4gdicgOjogZmlsdGVyX21hcCBmIHEpXG5cbmNsYXNzIHR5cGUgc3VibWl0dGFibGVFbGVtZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmxldCBoYXZlX2NvbnRlbnQgKGVsdCA6IHN1Ym1pdHRhYmxlRWxlbWVudCB0KSA9XG4gIGVsdCMjLm5hbWUjIy5sZW5ndGggPiAwICYmIG5vdCAoSnMudG9fYm9vbCBlbHQjIy5kaXNhYmxlZClcblxubGV0IGdldF90ZXh0YXJlYV92YWwgKGVsdCA6IHRleHRBcmVhRWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIFsgbmFtZSwgYFN0cmluZyBlbHQjIy52YWx1ZSBdXG4gIGVsc2UgW11cblxubGV0IGdldF9zZWxlY3RfdmFsIChlbHQgOiBzZWxlY3RFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgaWYgdG9fYm9vbCBlbHQjIy5tdWx0aXBsZVxuICAgIHRoZW5cbiAgICAgIGxldCBvcHRpb25zID1cbiAgICAgICAgQXJyYXkuaW5pdCBlbHQjIy5vcHRpb25zIyMubGVuZ3RoIChmdW4gaSAtPiBPcHQudG9fb3B0aW9uIChlbHQjIy5vcHRpb25zIyNpdGVtIGkpKVxuICAgICAgaW5cbiAgICAgIGZpbHRlcl9tYXBcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgZSAtPlxuICAgICAgICAgICAgICBpZiBKcy50b19ib29sIGUjIy5zZWxlY3RlZCB0aGVuIFNvbWUgKG5hbWUsIGBTdHJpbmcgZSMjLnZhbHVlKSBlbHNlIE5vbmUpXG4gICAgICAgIChBcnJheS50b19saXN0IG9wdGlvbnMpXG4gICAgZWxzZSBbIG5hbWUsIGBTdHJpbmcgZWx0IyMudmFsdWUgXVxuICBlbHNlIFtdXG5cbmNsYXNzIHR5cGUgZmlsZV9pbnB1dCA9IG9iamVjdFxuICBpbmhlcml0IGlucHV0RWxlbWVudFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBsZSA6IGJvb2wgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgZ2V0X2lucHV0X3ZhbCA/KGdldCA9IGZhbHNlKSAoZWx0IDogaW5wdXRFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgbGV0IHZhbHVlID0gZWx0IyMudmFsdWUgaW5cbiAgICBtYXRjaCB0b19ieXRlc3RyaW5nIGVsdCMjLl90eXBlIyN0b0xvd2VyQ2FzZSB3aXRoXG4gICAgfCBcImNoZWNrYm94XCIgfCBcInJhZGlvXCIgLT5cbiAgICAgICAgaWYgdG9fYm9vbCBlbHQjIy5jaGVja2VkIHRoZW4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF0gZWxzZSBbXVxuICAgIHwgXCJzdWJtaXRcIiB8IFwicmVzZXRcIiAtPiBbXVxuICAgIHwgXCJ0ZXh0XCIgfCBcInBhc3N3b3JkXCIgLT4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgICB8IFwiZmlsZVwiIC0+IChcbiAgICAgICAgaWYgZ2V0XG4gICAgICAgIHRoZW4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBlbHQgOiBmaWxlX2lucHV0IHQgPSBVbnNhZmUuY29lcmNlIGVsdCBpblxuICAgICAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZWx0IyMuZmlsZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBsaXN0IC0+IChcbiAgICAgICAgICAgICAgaWYgbGlzdCMjLmxlbmd0aCA9IDBcbiAgICAgICAgICAgICAgdGhlbiBbIG5hbWUsIGBTdHJpbmcgKEpzLnN0cmluZyBcIlwiKSBdXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGVsdCMjLm11bHRpcGxlIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIGZhbHNlIC0+IChcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAobGlzdCMjaXRlbSAwKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZmlsZSAtPiBbIG5hbWUsIGBGaWxlIGZpbGUgXSlcbiAgICAgICAgICAgICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIGYgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBmaWxlIC0+IFNvbWUgKG5hbWUsIGBGaWxlIGZpbGUpKVxuICAgICAgICAgICAgICAgICAgICAgIChBcnJheS50b19saXN0IChBcnJheS5pbml0IGxpc3QjIy5sZW5ndGggKGZ1biBpIC0+IGxpc3QjI2l0ZW0gaSkpKSkpXG4gICAgfCBfIC0+IFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gIGVsc2UgW11cblxubGV0IGdldF9mb3JtX2VsZW1lbnRzIChmb3JtIDogZm9ybUVsZW1lbnQgdCkgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPVxuICAgIGlmIGkgPCAwXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlXG4gICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChmb3JtIyMuZWxlbWVudHMjI2l0ZW0gaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgYWNjIChpIC0gaSlcbiAgICAgIHwgU29tZSB4IC0+IGxvb3AgKHggOjogYWNjKSAoaSAtIDEpXG4gIGluXG4gIGxvb3AgW10gKGZvcm0jIy5lbGVtZW50cyMjLmxlbmd0aCAtIDEpXG5cbmxldCBnZXRfZWxlbWVudF9jb250ZW50ID9nZXQgdiA9XG4gIG1hdGNoIHRhZ2dlZCB2IHdpdGhcbiAgfCBTZWxlY3QgdiAtPiBnZXRfc2VsZWN0X3ZhbCB2XG4gIHwgSW5wdXQgdiAtPiBnZXRfaW5wdXRfdmFsID9nZXQgdlxuICB8IFRleHRhcmVhIHYgLT4gZ2V0X3RleHRhcmVhX3ZhbCB2XG4gIHwgXyAtPiBbXVxuXG5sZXQgZm9ybV9lbGVtZW50cyA/Z2V0IChmb3JtIDogZm9ybUVsZW1lbnQgdCkgPVxuICBMaXN0LmZsYXR0ZW4gKExpc3QubWFwIChmdW4gdiAtPiBnZXRfZWxlbWVudF9jb250ZW50ID9nZXQgdikgKGdldF9mb3JtX2VsZW1lbnRzIGZvcm0pKVxuXG5sZXQgYXBwZW5kIChmb3JtX2NvbnRlbnRzIDogZm9ybV9jb250ZW50cykgKGZvcm1fZWx0IDogc3RyaW5nICogZm9ybV9lbHQpID1cbiAgbWF0Y2ggZm9ybV9jb250ZW50cyB3aXRoXG4gIHwgYEZpZWxkcyBsaXN0IC0+IGxpc3QgOj0gZm9ybV9lbHQgOjogIWxpc3RcbiAgfCBgRm9ybURhdGEgZiAtPiAoXG4gICAgICBtYXRjaCBmb3JtX2VsdCB3aXRoXG4gICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBmIyNhcHBlbmQgKHN0cmluZyBuYW1lKSBzXG4gICAgICB8IG5hbWUsIGBGaWxlIGZpbGUgLT4gZiMjYXBwZW5kX2Jsb2IgKHN0cmluZyBuYW1lKSAoZmlsZSA6PiBGaWxlLmJsb2IgdCkpXG5cbmxldCBlbXB0eV9mb3JtX2NvbnRlbnRzICgpID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiAoSnMuZGVmIGZvcm1EYXRhKSB3aXRoXG4gIHwgTm9uZSAtPiBgRmllbGRzIChyZWYgW10pXG4gIHwgU29tZSBjb25zdHIgLT4gYEZvcm1EYXRhIChuZXclanMgY29uc3RyKVxuXG5sZXQgcG9zdF9mb3JtX2NvbnRlbnRzIGZvcm0gPVxuICBsZXQgY29udGVudHMgPSBlbXB0eV9mb3JtX2NvbnRlbnRzICgpIGluXG4gIExpc3QuaXRlciAoYXBwZW5kIGNvbnRlbnRzKSAoZm9ybV9lbGVtZW50cyBmb3JtKTtcbiAgY29udGVudHNcblxubGV0IGdldF9mb3JtX2NvbnRlbnRzIGZvcm0gPVxuICBMaXN0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBuYW1lLCBgU3RyaW5nIHMgLT4gbmFtZSwgdG9fc3RyaW5nIHNcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgKGZvcm1fZWxlbWVudHMgfmdldDp0cnVlIGZvcm0pXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgVU5TRU5UXG4gIHwgT1BFTkVEXG4gIHwgSEVBREVSU19SRUNFSVZFRFxuICB8IExPQURJTkdcbiAgfCBET05FXG5cbnR5cGUgXyByZXNwb25zZSA9XG4gIHwgQXJyYXlCdWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IE9wdC50IHJlc3BvbnNlXG4gIHwgQmxvYiA6ICNGaWxlLmJsb2IgdCBPcHQudCByZXNwb25zZVxuICB8IERvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBKU09OIDogJ2EgT3B0LnQgcmVzcG9uc2VcbiAgfCBUZXh0IDoganNfc3RyaW5nIHQgcmVzcG9uc2VcbiAgfCBEZWZhdWx0IDogc3RyaW5nIHJlc3BvbnNlXG5cbmNsYXNzIHR5cGUgeG1sSHR0cFJlcXVlc3QgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25yZWFkeXN0YXRlY2hhbmdlIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfb3BlbiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgX29wZW5fZnVsbCA6XG4gICAgICAganNfc3RyaW5nIHRcbiAgICAtPiBqc19zdHJpbmcgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGpzX3N0cmluZyB0IG9wdFxuICAgIC0+IGpzX3N0cmluZyB0IG9wdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSZXF1ZXN0SGVhZGVyIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG92ZXJyaWRlTWltZVR5cGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZCA6IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9ibG9iIDogI0ZpbGUuYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2RvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfZm9ybURhdGEgOiBGb3JtLmZvcm1EYXRhIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0YXR1cyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXR1c1RleHQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFJlc3BvbnNlSGVhZGVyIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZXNwb25zZSA6IEZpbGUuZmlsZV9hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVRleHQgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVhNTCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgaW5oZXJpdCBGaWxlLnByb2dyZXNzRXZlbnRUYXJnZXRcblxuICBtZXRob2Qgb250aW1lb3V0IDpcbiAgICAoJ3NlbGYgdCwgJ3NlbGYgRmlsZS5wcm9ncmVzc0V2ZW50IHQpIERvbS5ldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cGxvYWQgOiB4bWxIdHRwUmVxdWVzdFVwbG9hZCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHhtbEh0dHBSZXF1ZXN0VXBsb2FkID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBGaWxlLnByb2dyZXNzRXZlbnRUYXJnZXRcbmVuZFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0eXAgPSB4bWxIdHRwUmVxdWVzdCBGaWxlLnByb2dyZXNzRXZlbnQgdCBEb20uRXZlbnQudHlwXG5cbiAgbGV0IHJlYWR5c3RhdGVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInJlYWR5c3RhdGVjaGFuZ2VcIlxuXG4gIGxldCBsb2Fkc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IHByb2dyZXNzID0gRG9tLkV2ZW50Lm1ha2UgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IGFib3J0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IGVycm9yID0gRG9tLkV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGxvYWQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRcIlxuXG4gIGxldCB0aW1lb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0aW1lb3V0XCJcblxuICBsZXQgbG9hZGVuZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVuZFwiXG5lbmRcblxuZXh0ZXJuYWwgY3JlYXRlIDogdW5pdCAtPiB4bWxIdHRwUmVxdWVzdCBKcy50ID0gXCJjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZVwiXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IE9DYW1sUHJvOiBHcsOpZ29pcmUgSGVucnksIMOHYcSfZGHFnyBCb3ptYW4uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tX2h0bWxcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHdvcmtlciA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCBlcnJvckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6ICgnc2VsZiB0LCAnYiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcG9zdE1lc3NhZ2UgOiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGVybWluYXRlIDogdW5pdCBtZXRoXG5lbmRcblxuYW5kIGVycm9yRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBtZXNzYWdlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxlbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGluZW5vIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29sbm8gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlcnJvciA6IFVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiAnYSByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHdvcmtlciA9IFVuc2FmZS5nbG9iYWwjIy5fV29ya2VyXG5cbmxldCBjcmVhdGUgc2NyaXB0ID0gbmV3JWpzIHdvcmtlciAoc3RyaW5nIHNjcmlwdClcblxubGV0IGltcG9ydF9zY3JpcHRzIHNjcmlwdHMgOiB1bml0ID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMuaW1wb3J0U2NyaXB0cylcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5pbXBvcnRfc2NyaXB0cyBpcyB1bmRlZmluZWRcIjtcbiAgVW5zYWZlLmZ1bl9jYWxsXG4gICAgVW5zYWZlLmdsb2JhbCMjLmltcG9ydFNjcmlwdHNcbiAgICAoQXJyYXkubWFwIChmdW4gcyAtPiBVbnNhZmUuaW5qZWN0IChzdHJpbmcgcykpIChBcnJheS5vZl9saXN0IHNjcmlwdHMpKVxuXG5sZXQgc2V0X29ubWVzc2FnZSBoYW5kbGVyID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMub25tZXNzYWdlKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLm9ubWVzc2FnZSBpcyB1bmRlZmluZWRcIjtcbiAgbGV0IGpzX2hhbmRsZXIgKGV2IDogJ2EgbWVzc2FnZUV2ZW50IEpzLnQpID0gaGFuZGxlciBldiMjLmRhdGEgaW5cbiAgVW5zYWZlLmdsb2JhbCMjLm9ubWVzc2FnZSA6PSB3cmFwX2NhbGxiYWNrIGpzX2hhbmRsZXJcblxubGV0IHBvc3RfbWVzc2FnZSBtc2cgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5wb3N0TWVzc2FnZSlcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5vbm1lc3NhZ2UgaXMgdW5kZWZpbmVkXCI7XG4gIFVuc2FmZS5nbG9iYWwjI3Bvc3RNZXNzYWdlIG1zZ1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKYWNxdWVzLVBhc2NhbCBEZXBsYWl4XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgQ09OTkVDVElOR1xuICB8IE9QRU5cbiAgfCBDTE9TSU5HXG4gIHwgQ0xPU0VEXG5cbmNsYXNzIHR5cGUgWydhXSBjbG9zZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgY29kZSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYXNvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2FzQ2xlYW4gOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhX2J1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhX2Jsb2IgOiBGaWxlLmJsb2IgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB3ZWJTb2NrZXQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHVybCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBidWZmZXJlZEFtb3VudCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ub3BlbiA6ICgnc2VsZiBKcy50LCAnc2VsZiBEb20uZXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2xvc2UgOlxuICAgICgnc2VsZiBKcy50LCAnc2VsZiBjbG9zZUV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIEpzLnQsICdzZWxmIERvbS5ldmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZXh0ZW5zaW9ucyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJvdG9jb2wgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3dpdGhDb2RlIDogaW50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbG9zZV93aXRoQ29kZUFuZFJlYXNvbiA6IGludCAtPiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25tZXNzYWdlIDpcbiAgICAoJ3NlbGYgSnMudCwgJ3NlbGYgbWVzc2FnZUV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBiaW5hcnlUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gIG1ldGhvZCBzZW5kIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHNlbmRfYnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgc2VuZF9ibG9iIDogRmlsZS5ibG9iIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IHdlYlNvY2tldCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2ViU29ja2V0XG5cbmxldCB3ZWJTb2NrZXRfd2l0aFByb3RvY29sID0gd2ViU29ja2V0XG5cbmxldCB3ZWJTb2NrZXRfd2l0aFByb3RvY29scyA9IHdlYlNvY2tldFxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3Qgd2ViU29ja2V0XG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbigqKiA1LjEgVHlwZXMgKilcblxudHlwZSBzaXplaSA9IGludFxuXG50eXBlIHNpemVpcHRyID0gaW50XG5cbnR5cGUgaW50cHRyID0gaW50XG5cbnR5cGUgdWludCA9IGludFxuXG50eXBlIGNsYW1wZiA9IG51bWJlcl90XG5cbnR5cGUgdm9pZFxuXG50eXBlIGNsZWFyQnVmZmVyTWFzayA9IGludFxuXG50eXBlIGJlZ2luTW9kZVxuXG50eXBlIGJsZW5kaW5nRmFjdG9yXG5cbnR5cGUgYmxlbmRNb2RlXG5cbnR5cGUgYnVmZmVyVGFyZ2V0XG5cbnR5cGUgYnVmZmVyVXNhZ2VcblxudHlwZSBjdWxsRmFjZU1vZGVcblxudHlwZSBkZXB0aEZ1bmN0aW9uXG5cbnR5cGUgZW5hYmxlQ2FwXG5cbnR5cGUgZXJyb3JDb2RlXG5cbnR5cGUgZnJvbnRGYWNlRGlyXG5cbnR5cGUgaGludFRhcmdldFxuXG50eXBlIGhpbnRNb2RlXG5cbnR5cGUgdGV4dHVyZVVuaXQgPSBpbnRcblxudHlwZSAnYSBwaXhlbFN0b3JlUGFyYW1cblxudHlwZSBzdGVuY2lsT3BcblxudHlwZSBmYlRhcmdldFxuXG50eXBlIGF0dGFjaG1lbnRQb2ludFxuXG50eXBlIHJiVGFyZ2V0XG5cbnR5cGUgdGV4VGFyZ2V0XG5cbnR5cGUgJ2EgcGFyYW1ldGVyXG5cbnR5cGUgJ2EgYnVmZmVyUGFyYW1ldGVyXG5cbnR5cGUgJ2EgdmVydGV4QXR0cmliUGFyYW1cblxudHlwZSB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW1cblxudHlwZSAnYSBhdHRhY2hQYXJhbVxuXG50eXBlIGZyYW1lYnVmZmVyU3RhdHVzXG5cbnR5cGUgJ2EgcmVuZGVyYnVmZmVyUGFyYW1cblxudHlwZSBmb3JtYXRcblxudHlwZSBwaXhlbEZvcm1hdFxuXG50eXBlIHBpeGVsVHlwZVxuXG50eXBlICdhIHRleFBhcmFtXG5cbnR5cGUgZGF0YVR5cGVcblxudHlwZSBzaGFkZXJUeXBlXG5cbnR5cGUgJ2EgcHJvZ3JhbVBhcmFtXG5cbnR5cGUgJ2Egc2hhZGVyUGFyYW1cblxudHlwZSB0ZXh0dXJlRmlsdGVyXG5cbnR5cGUgd3JhcE1vZGVcblxudHlwZSB0ZXhGaWx0ZXJcblxudHlwZSB1bmlmb3JtVHlwZVxuXG50eXBlIGNvbG9yc3BhY2VDb252ZXJzaW9uXG5cbnR5cGUgc2hhZGVyUHJlY2lzaW9uVHlwZVxuXG50eXBlIG9iamVjdFR5cGVcblxuKCoqIDUuMiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzICopXG5jbGFzcyB0eXBlIGNvbnRleHRBdHRyaWJ1dGVzID0gb2JqZWN0XG4gIG1ldGhvZCBhbHBoYSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGRlcHRoIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3RlbmNpbCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGFudGlhbGlhcyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZW11bHRpcGxpZWRBbHBoYSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlRHJhd2luZ0J1ZmZlciA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZWZlckxvd1Bvd2VyVG9IaWdoUGVyZm9ybWFuY2UgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0IDogYm9vbCB0IHByb3BcbmVuZFxuXG5sZXQgZGVmYXVsdENvbnRleHRBdHRyaWJ1dGVzID1cbiAgSnMuVW5zYWZlLihcbiAgICBvYmpcbiAgICAgIFt8IFwiYWxwaGFcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcImRlcHRoXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJzdGVuY2lsXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwiYW50aWFsaWFzXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJwcmVtdWx0aXBsaWVkQWxwaGFcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXJcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJwcmVmZXJMb3dQb3dlclRvSGlnaFBlcmZvcm1hbmNlXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwiZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdFwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICB8XSlcblxudHlwZSBidWZmZXJcblxudHlwZSBmcmFtZWJ1ZmZlclxuXG50eXBlIHByb2dyYW1cblxudHlwZSByZW5kZXJidWZmZXJcblxudHlwZSBzaGFkZXJcblxudHlwZSB0ZXh0dXJlXG5cbnR5cGUgJ2EgdW5pZm9ybUxvY2F0aW9uXG5cbmNsYXNzIHR5cGUgYWN0aXZlSW5mbyA9IG9iamVjdFxuICBtZXRob2Qgc2l6ZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF90eXBlIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2hhZGVyUHJlY2lzaW9uRm9ybWF0ID0gb2JqZWN0XG4gIG1ldGhvZCByYW5nZU1pbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJhbmdlTWF4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlY2lzaW9uIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlbmRlcmluZ0NvbnRleHQgPSBvYmplY3RcbiAgKCoqIDUuMTMuMSBBdHRyaWJ1dGVzICopXG5cbiAgbWV0aG9kIGNhbnZhcyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRyYXdpbmdCdWZmZXJXaWR0aCA6IHNpemVpIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHJhd2luZ0J1ZmZlckhlaWdodCA6IHNpemVpIHJlYWRvbmx5X3Byb3BcblxuICAoKiogNS4xMy4yIEdldHRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbnRleHQgKilcblxuICBtZXRob2QgZ2V0Q29udGV4dEF0dHJpYnV0ZXMgOiBjb250ZXh0QXR0cmlidXRlcyB0IG1ldGhcblxuICAoKiogNS4xMy4zIFNldHRpbmcgYW5kIGdldHRpbmcgc3RhdGUgKilcblxuICBtZXRob2QgYWN0aXZlVGV4dHVyZSA6IHRleHR1cmVVbml0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZENvbG9yIDogY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEVxdWF0aW9uIDogYmxlbmRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUgOiBibGVuZE1vZGUgLT4gYmxlbmRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEZ1bmMgOiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRGdW5jU2VwYXJhdGUgOlxuICAgIGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckNvbG9yIDogY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRlcHRoIDogY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhclN0ZW5jaWwgOiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbG9yTWFzayA6IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3VsbEZhY2UgOiBjdWxsRmFjZU1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoRnVuYyA6IGRlcHRoRnVuY3Rpb24gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoTWFzayA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhSYW5nZSA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpc2FibGUgOiBlbmFibGVDYXAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVuYWJsZSA6IGVuYWJsZUNhcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJvbnRGYWNlIDogZnJvbnRGYWNlRGlyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQYXJhbWV0ZXIgOiAnYS4gJ2EgcGFyYW1ldGVyIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0RXJyb3IgOiBlcnJvckNvZGUgbWV0aFxuXG4gIG1ldGhvZCBoaW50IDogaGludFRhcmdldCAtPiBoaW50TW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaXNFbmFibGVkIDogZW5hYmxlQ2FwIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVXaWR0aCA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwaXhlbFN0b3JlaSA6ICdhLiAnYSBwaXhlbFN0b3JlUGFyYW0gLT4gJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBvbHlnb25PZmZzZXQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2FtcGxlQ292ZXJhZ2UgOiBjbGFtcGYgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsRnVuYyA6IGRlcHRoRnVuY3Rpb24gLT4gaW50IC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxGdW5jU2VwYXJhdGUgOiBjdWxsRmFjZU1vZGUgLT4gZGVwdGhGdW5jdGlvbiAtPiBpbnQgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE1hc2sgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsTWFza1NlcGFyYXRlIDogY3VsbEZhY2VNb2RlIC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxPcCA6IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsT3BTZXBhcmF0ZSA6XG4gICAgY3VsbEZhY2VNb2RlIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjQgVmlld2luZyBhbmQgY2xpcHBpbmcgKilcblxuICBtZXRob2Qgc2Npc3NvciA6IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZpZXdwb3J0IDogaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy41IEJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRCdWZmZXIgOiBidWZmZXJUYXJnZXQgLT4gYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRCdWZmZXJfIDogYnVmZmVyVGFyZ2V0IC0+IGJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YV9jcmVhdGUgOiBidWZmZXJUYXJnZXQgLT4gc2l6ZWlwdHIgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGEgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHQgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGFfcmF3IDpcbiAgICBidWZmZXJUYXJnZXQgLT4gVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyU3ViRGF0YSA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IGludHB0ciAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlclN1YkRhdGFfcmF3IDpcbiAgICBidWZmZXJUYXJnZXQgLT4gaW50cHRyIC0+IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUJ1ZmZlciA6IGJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQnVmZmVyIDogYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEJ1ZmZlclBhcmFtZXRlciA6ICdhLiBidWZmZXJUYXJnZXQgLT4gJ2EgYnVmZmVyUGFyYW1ldGVyIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNCdWZmZXIgOiBidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjYgRnJhbWVidWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kRnJhbWVidWZmZXIgOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kRnJhbWVidWZmZXJfIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMgOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlclN0YXR1cyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgOlxuICAgIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJhbWVidWZmZXJUZXh0dXJlMkQgOlxuICAgIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyIDpcbiAgICAnYS4gZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+ICdhIGF0dGFjaFBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy43IFJlbmRlcmJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRSZW5kZXJidWZmZXIgOiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZFJlbmRlcmJ1ZmZlcl8gOiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlciA6ICdhLiByYlRhcmdldCAtPiAnYSByZW5kZXJidWZmZXJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgcmVuZGVyYnVmZmVyU3RvcmFnZSA6IHJiVGFyZ2V0IC0+IGZvcm1hdCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy44IFRleHR1cmUgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kVGV4dHVyZSA6IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRUZXh0dXJlXyA6IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21wcmVzc2VkVGV4SW1hZ2UyRCA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29weVRleEltYWdlMkQgOlxuICAgIHRleFRhcmdldCAtPiBpbnQgLT4gcGl4ZWxGb3JtYXQgLT4gaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvcHlUZXhTdWJJbWFnZTJEIDpcbiAgICB0ZXhUYXJnZXQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVGV4dHVyZSA6IHRleHR1cmUgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRleHR1cmUgOiB0ZXh0dXJlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdlbmVyYXRlTWlwbWFwIDogdGV4VGFyZ2V0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUZXhQYXJhbWV0ZXIgOiB0ZXhUYXJnZXQgLT4gJ2EgdGV4UGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc1RleHR1cmUgOiB0ZXh0dXJlIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9uZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gdm9pZCBvcHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tVmlldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tSW1hZ2VEYXRhIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VEYXRhIHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tSW1hZ2UgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZUVsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21DYW52YXMgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5jYW52YXNFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tVmlkZW8gOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC52aWRlb0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqIHtbXG4gICAgICBtZXRob2QgdGV4UGFyYW1ldGVyZiA6IHRleFRhcmdldCAtPiB0ZXhQYXJhbSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbiAgICAgXX1cbiAgKilcbiAgbWV0aG9kIHRleFBhcmFtZXRlcmkgOiB0ZXhUYXJnZXQgLT4gJ2EgdGV4UGFyYW0gLT4gJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbVZpZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21JbWFnZURhdGEgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VEYXRhIHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tSW1hZ2UgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tQ2FudmFzIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21WaWRlbyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC52aWRlb0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjkgUHJvZ3JhbXMgYW5kIFNoYWRlcnMgKilcblxuICBtZXRob2QgYXR0YWNoU2hhZGVyIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kQXR0cmliTG9jYXRpb24gOiBwcm9ncmFtIHQgLT4gdWludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcGlsZVNoYWRlciA6IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQcm9ncmFtIDogcHJvZ3JhbSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU2hhZGVyIDogc2hhZGVyVHlwZSAtPiBzaGFkZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVNoYWRlciA6IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXRhY2hTaGFkZXIgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dGFjaGVkU2hhZGVycyA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvZ3JhbVBhcmFtZXRlciA6ICdhLiBwcm9ncmFtIHQgLT4gJ2EgcHJvZ3JhbVBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0UHJvZ3JhbUluZm9Mb2cgOiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJQYXJhbWV0ZXIgOiAnYS4gc2hhZGVyIHQgLT4gJ2Egc2hhZGVyUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQgOlxuICAgIHNoYWRlclR5cGUgLT4gc2hhZGVyUHJlY2lzaW9uVHlwZSAtPiBzaGFkZXJQcmVjaXNpb25Gb3JtYXQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlckluZm9Mb2cgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclNvdXJjZSA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgaXNQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGlzU2hhZGVyIDogc2hhZGVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgbGlua1Byb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNoYWRlclNvdXJjZSA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1c2VQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2YWxpZGF0ZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTAgVW5pZm9ybXMgYW5kIGF0dHJpYnV0ZXMgKilcblxuICBtZXRob2QgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5IDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBY3RpdmVBdHRyaWIgOiBwcm9ncmFtIHQgLT4gdWludCAtPiBhY3RpdmVJbmZvIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBY3RpdmVVbmlmb3JtIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4gYWN0aXZlSW5mbyB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmliTG9jYXRpb24gOiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VW5pZm9ybSA6ICdhICdiLiBwcm9ncmFtIHQgLT4gJ2EgdW5pZm9ybUxvY2F0aW9uIHQgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCBnZXRVbmlmb3JtTG9jYXRpb24gOiAnYS4gcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IC0+ICdhIHVuaWZvcm1Mb2NhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgZ2V0VmVydGV4QXR0cmliIDogJ2EuIHVpbnQgLT4gJ2EgdmVydGV4QXR0cmliUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQgOiB1aW50IC0+IHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbSAtPiBzaXplaXB0ciBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZiA6IG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWZ2X3R5cGVkIDpcbiAgICBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmdiA6IG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaSA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaXZfdHlwZWQgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWl2IDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmYgOiBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZnZfdHlwZWQgOlxuICAgIFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmdiA6IFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmkgOiBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaXYgOiBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMml2X3R5cGVkIDpcbiAgICBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmIDpcbiAgICBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZnZfdHlwZWQgOlxuICAgIFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmdiA6IFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2kgOiBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2l2IDogWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpdl90eXBlZCA6XG4gICAgWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZiA6XG4gICAgICAgWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmdl90eXBlZCA6XG4gICAgWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGZ2IDogWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aSA6IFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGl2IDogWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpdl90eXBlZCA6XG4gICAgWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgyZnYgOlxuICAgIFsgYG1hdDIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDJmdl90eXBlZCA6XG4gICAgWyBgbWF0MiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDNmdiA6XG4gICAgWyBgbWF0MyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4M2Z2X3R5cGVkIDpcbiAgICBbIGBtYXQzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4NGZ2IDpcbiAgICBbIGBtYXQ0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXg0ZnZfdHlwZWQgOlxuICAgIFsgYG1hdDQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmIDogdWludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2YgOiB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmIDpcbiAgICB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYlBvaW50ZXIgOlxuICAgIHVpbnQgLT4gaW50IC0+IGRhdGFUeXBlIC0+IGJvb2wgdCAtPiBzaXplaSAtPiBpbnRwdHIgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTEgV3JpdGluZyB0byB0aGUgZHJhd2luZyBidWZmZXIgKilcblxuICBtZXRob2QgY2xlYXIgOiBjbGVhckJ1ZmZlck1hc2sgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdBcnJheXMgOiBiZWdpbk1vZGUgLT4gaW50IC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3RWxlbWVudHMgOiBiZWdpbk1vZGUgLT4gc2l6ZWkgLT4gZGF0YVR5cGUgLT4gaW50cHRyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaW5pc2ggOiB1bml0IG1ldGhcblxuICBtZXRob2QgZmx1c2ggOiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMiBSZWFkaW5nIGJhY2sgcGl4ZWxzICopXG5cbiAgbWV0aG9kIHJlYWRQaXhlbHMgOlxuICAgICAgIGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEzIERldGVjdGluZyBjb250ZXh0IGxvc3QgZXZlbnRzICopXG5cbiAgbWV0aG9kIGlzQ29udGV4dExvc3QgOiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjE0IERldGVjdGluZyBhbmQgZW5hYmxpbmcgZXh0ZW5zaW9ucyAqKVxuXG4gIG1ldGhvZCBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEV4dGVuc2lvbiA6ICdhLiBqc19zdHJpbmcgdCAtPiAnYSB0IG9wdCBtZXRoXG5cbiAgKCogVW50eXBlZCEgKilcbiAgKCoqIENvbnN0YW50cyAqKVxuXG4gIG1ldGhvZCBfREVQVEhfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0lOVFMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORVMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9MT09QXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX1NUUklQXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRVMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVfU1RSSVBfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFX0ZBTl8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfWkVSTyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORSA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfU1JDX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RTVF9DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfRFNUX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19BTFBIQV9TQVRVUkFURV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX0FERF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19TVUJUUkFDVF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19SRVZFUlNFX1NVQlRSQUNUXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05TVEFOVF9DT0xPUl8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05TVEFOVF9BTFBIQV8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BUlJBWV9CVUZGRVJfIDogYnVmZmVyVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VMRU1FTlRfQVJSQVlfQlVGRkVSXyA6IGJ1ZmZlclRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVFJFQU1fRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEFUSUNfRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EWU5BTUlDX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlQgOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkFDSyA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVF9BTkRfQkFDS18gOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORCA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ESVRIRVIgOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZJTExfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT19FUlJPUl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9FTlVNXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX1ZBTFVFXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX09QRVJBVElPTl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT1VUX09GX01FTU9SWV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OVEVYVF9MT1NUX1dFQkdMXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1cgOiBmcm9udEZhY2VEaXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ0NXIDogZnJvbnRGYWNlRGlyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RPTlRfQ0FSRV8gOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GQVNURVNUIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTklDRVNUIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VORVJBVEVfTUlQTUFQX0hJTlRfIDogaGludFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OX1JHQl8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OX0FMUEhBXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRFNUX1JHQl8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfU1JDX1JHQl8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0NPTE9SXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BUlJBWV9CVUZGRVJfQklORElOR18gOiBidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDogYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ESVRIRVJfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GSUxMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX1dJRFRIXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMSUFTRURfTElORV9XSURUSF9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFX01PREVfIDogY3VsbEZhY2VNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVF9GQUNFXyA6IGZyb250RmFjZURpciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1dSSVRFTUFTS18gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NMRUFSX1ZBTFVFXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9GVU5DXyA6IGRlcHRoRnVuY3Rpb24gcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQ0xFQVJfVkFMVUVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0ZVTkNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9SRUZfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1ZBTFVFX01BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1dSSVRFTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19GVU5DXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19SRUZfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19XUklURU1BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WSUVXUE9SVCA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9CT1hfIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9DTEVBUl9WQUxVRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfV1JJVEVNQVNLXyA6IGJvb2wgdCBqc19hcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQUxJR05NRU5UX1BBUkFNIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QQUNLX0FMSUdOTUVOVF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9URVhUVVJFX1NJWkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVklFV1BPUlRfRElNU18gOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NVQlBJWEVMX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRURfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dSRUVOX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTFVFX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFBIQV9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX1VOSVRTXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GQUNUT1JfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQklORElOR18yRF8gOiB0ZXh0dXJlIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfIDogdGV4dHVyZSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0JVRkZFUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFX1ZBTFVFXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJUXyA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNfIDogVHlwZWRfYXJyYXkudWludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VORVJBVEVfTUlQTUFQX0hJTlRfUEFSQU1fIDogaGludE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JVRkZFUl9TSVpFXyA6IGludCBidWZmZXJQYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlVGRkVSX1VTQUdFXyA6IGJ1ZmZlclVzYWdlIGJ1ZmZlclBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CWVRFIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfQllURV9EVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIT1JUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfSU5UXyA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfQllURV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNF80XzRfNF8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNV81XzVfMV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNV82XzVfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMUEhBIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCQSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xVTUlOQU5DRSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xVTUlOQU5DRV9BTFBIQV8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0lOREVYXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1NURU5DSUxfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ09NUE9ORU5UXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQUdNRU5UX1NIQURFUl8gOiBzaGFkZXJUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9TSEFERVJfIDogc2hhZGVyVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX0FUVFJJQlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WQVJZSU5HX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIQURFUl9UWVBFXyA6IHNoYWRlclR5cGUgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVMRVRFX1NUQVRVU18gOiBib29sIHQgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09NUElMRV9TVEFUVVNfIDogYm9vbCB0IHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFTEVURV9TVEFUVVNfUFJPRyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElOS19TVEFUVVNfIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WQUxJREFURV9TVEFUVVNfIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BVFRBQ0hFRF9TSEFERVJTXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX1VOSUZPUk1TXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX0FUVFJJQlVURVNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSEFESU5HX0xBTkdVQUdFX1ZFUlNJT05fIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVUlJFTlRfUFJPR1JBTV8gOiBwcm9ncmFtIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRU5ET1IgOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSRVIgOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSU0lPTiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX1RFWFRVUkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9CSU5ESU5HXyA6IGZyYW1lYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQklORElOR18gOiByZW5kZXJidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9SRU5ERVJCVUZGRVJfU0laRSA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVWRVIgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xFU1MgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dSRUFURVIgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PVEVRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMV0FZUyA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfS0VFUCA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRVBMQUNFIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOQ1IgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVDUiA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZFUlQgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5DUl9XUkFQXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUNSX1dSQVBfIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1pFUk9fIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1QgOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1RfTUlQTUFQX05FQVJFU1RfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUl9NSVBNQVBfTkVBUkVTVF8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVF9NSVBNQVBfTElORUFSXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVJfTUlQTUFQX0xJTkVBUl8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9NQUdfRklMVEVSXyA6IHRleEZpbHRlciB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX01JTl9GSUxURVJfIDogdGV4RmlsdGVyIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfV1JBUF9TXyA6IHdyYXBNb2RlIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfV1JBUF9UXyA6IHdyYXBNb2RlIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PTkVfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV8yRF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1hfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWV8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1pfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWl8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMzAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMzEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRVBFQVQgOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DTEFNUF9UT19FREdFXyA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01JUlJPUkVEX1JFUEVBVF8gOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVSXzJEXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVJfQ1VCRV8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRURfIDogYm9vbCB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEXyA6IGJvb2wgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVJfIDogdmVydGV4QXR0cmliUG9pbnRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDpcbiAgICBidWZmZXIgdCBvcHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VSUkVOVF9WRVJURVhfQVRUUklCXyA6XG4gICAgVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9XX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUVESVVNX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSElHSF9GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPV19JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NRURJVU1fSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSElHSF9JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUiA6IGZiVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUiA6IHJiVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQkE0IDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQjVfQTFfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQjU2NSA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DT01QT05FTlQxNl8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9JTkRFWDhfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9XSURUSF8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0hFSUdIVF8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVF8gOiBmb3JtYXQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1JFRF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfR1JFRU5fU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0JMVUVfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0FMUEhBX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9ERVBUSF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFXyA6IG9iamVjdFR5cGUgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRV9SRU5ERVJCVUZGRVIgOlxuICAgIHJlbmRlcmJ1ZmZlciB0IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUVfVEVYVFVSRSA6IHRleHR1cmUgdCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUxfIDogaW50IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFXyA6IGludCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9BVFRBQ0hNRU5UMF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0NPTVBMRVRFXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlNfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfVU5TVVBQT1JURURfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0ZMSVBfWV9XRUJHTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMX1BBUkFNIDpcbiAgICBjb2xvcnNwYWNlQ29udmVyc2lvbiBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9ORSA6IGNvbG9yc3BhY2VDb252ZXJzaW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JST1dTRVJfREVGQVVMVF9XRUJHTF8gOiBjb2xvcnNwYWNlQ29udmVyc2lvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQUxJR05NRU5UXyA6IGludCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0ZMSVBfWV9XRUJHTF8gOiBib29sIHQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTF8gOiBib29sIHQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xfIDogaW50IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqIDUuMTQgV2ViR0xDb250ZXh0RXZlbnQgKilcblxuY2xhc3MgdHlwZSBjb250ZXh0RXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFxuXG4gIG1ldGhvZCBzdGF0dXNNZXNzYWdlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBsZXQgd2ViZ2xjb250ZXh0bG9zdCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRsb3N0XCJcblxuICBsZXQgd2ViZ2xjb250ZXh0cmVzdG9yZWQgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0cmVzdG9yZWRcIlxuXG4gIGxldCB3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JcIlxuZW5kXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIGNhbnZhc0VsZW1lbnQgPSBvYmplY3RcbiAgbWV0aG9kIGdldENvbnRleHQgOiBqc19zdHJpbmcgdCAtPiByZW5kZXJpbmdDb250ZXh0IHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29udGV4dF8gOiBqc19zdHJpbmcgdCAtPiBjb250ZXh0QXR0cmlidXRlcyB0IC0+IHJlbmRlcmluZ0NvbnRleHQgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBnZXRDb250ZXh0IChjIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0KSA9XG4gIGxldCBjIDogY2FudmFzRWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZSBjIGluXG4gIGxldCBjdHggPSBjIyNnZXRDb250ZXh0IChKcy5zdHJpbmcgXCJ3ZWJnbFwiKSBpblxuICBpZiBPcHQudGVzdCBjdHggdGhlbiBjdHggZWxzZSBjICMjIChnZXRDb250ZXh0IChKcy5zdHJpbmcgXCJleHBlcmltZW50YWwtd2ViZ2xcIikpXG5cbmxldCBnZXRDb250ZXh0V2l0aEF0dHJpYnV0ZXMgKGMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQpIGF0dHJpYnMgPVxuICBsZXQgYyA6IGNhbnZhc0VsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2UgYyBpblxuICBsZXQgY3R4ID0gYyMjZ2V0Q29udGV4dF8gKEpzLnN0cmluZyBcIndlYmdsXCIpIGF0dHJpYnMgaW5cbiAgaWYgT3B0LnRlc3QgY3R4IHRoZW4gY3R4IGVsc2UgYyMjZ2V0Q29udGV4dF8gKEpzLnN0cmluZyBcImV4cGVyaW1lbnRhbC13ZWJnbFwiKSBhdHRyaWJzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdCwgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVnZXhwID0gSnMucmVnRXhwIEpzLnRcblxudHlwZSByZXN1bHQgPSBKcy5tYXRjaF9yZXN1bHQgSnMudFxuXG5sZXQgcmVnZXhwIHMgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgcmVnZXhwX2Nhc2VfZm9sZCBzID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyBcImdpXCIpXG5cbmxldCByZWdleHBfd2l0aF9mbGFnIHMgZiA9XG4gIG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgKFwiZ1wiIF4gZikpXG5cbmxldCBibHVudF9zdHJfYXJyYXlfZ2V0IGEgaSA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCBhIGkpIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcblxubGV0IHN0cmluZ19tYXRjaCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gaTtcbiAgSnMuT3B0LnRvX29wdGlvbiAoSnMuT3B0Lm1hcCAociMjZXhlYyAoSnMuYnl0ZXN0cmluZyBzKSkgSnMubWF0Y2hfcmVzdWx0KVxuXG5sZXQgc2VhcmNoIHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSBpO1xuICBKcy5PcHQudG9fb3B0aW9uXG4gICAgKEpzLk9wdC5tYXBcbiAgICAgICAociMjZXhlYyAoSnMuYnl0ZXN0cmluZyBzKSlcbiAgICAgICAoZnVuIHJlc19wcmUgLT5cbiAgICAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgcmVzX3ByZSBpblxuICAgICAgICAgcmVzIyMuaW5kZXgsIHJlcykpXG5cbmxldCBzZWFyY2hfZm9yd2FyZCA9IHNlYXJjaFxuXG5sZXQgbWF0Y2hlZF9zdHJpbmcgciA9IGJsdW50X3N0cl9hcnJheV9nZXQgciAwXG5cbmxldCBtYXRjaGVkX2dyb3VwIHIgaSA9XG4gIEpzLk9wdGRlZi50b19vcHRpb24gKEpzLk9wdGRlZi5tYXAgKEpzLmFycmF5X2dldCByIGkpIEpzLnRvX2J5dGVzdHJpbmcpXG5cbmxldCBxdW90ZV9yZXBsX3JlID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLnN0cmluZyBcIlskXVwiKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgcXVvdGVfcmVwbCBzID0gKEpzLmJ5dGVzdHJpbmcgcykjI3JlcGxhY2UgcXVvdGVfcmVwbF9yZSAoSnMuc3RyaW5nIFwiJCQkJFwiKVxuXG5sZXQgZ2xvYmFsX3JlcGxhY2UgciBzIHNfYnkgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgciAocXVvdGVfcmVwbCBzX2J5KSlcblxubGV0IHJlcGxhY2VfZmlyc3QgciBzIHNfYnkgPVxuICBsZXQgZmxhZ3MgPVxuICAgIG1hdGNoIEpzLnRvX2Jvb2wgciMjLmlnbm9yZUNhc2UsIEpzLnRvX2Jvb2wgciMjLm11bHRpbGluZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gSnMuc3RyaW5nIFwiXCJcbiAgICB8IGZhbHNlLCB0cnVlIC0+IEpzLnN0cmluZyBcIm1cIlxuICAgIHwgdHJ1ZSwgZmFsc2UgLT4gSnMuc3RyaW5nIFwiaVwiXG4gICAgfCB0cnVlLCB0cnVlIC0+IEpzLnN0cmluZyBcIm1pXCJcbiAgaW5cbiAgbGV0IHInID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgciMjLnNvdXJjZSBmbGFncyBpblxuICBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHInIChxdW90ZV9yZXBsIHNfYnkpKVxuXG5sZXQgbGlzdF9vZl9qc19hcnJheSBhID1cbiAgbGV0IHJlYyBhdXggYWNjdSBpZHggPVxuICAgIGlmIGlkeCA8IDAgdGhlbiBhY2N1IGVsc2UgYXV4IChibHVudF9zdHJfYXJyYXlfZ2V0IGEgaWR4IDo6IGFjY3UpIChpZHggLSAxKVxuICBpblxuICBhdXggW10gKGEjIy5sZW5ndGggLSAxKVxuXG5sZXQgc3BsaXQgciBzID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBsaXN0X29mX2pzX2FycmF5IChKcy5zdHJfYXJyYXkgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHNwbGl0X3JlZ0V4cCByKSlcblxubGV0IGJvdW5kZWRfc3BsaXQgciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIGxpc3Rfb2ZfanNfYXJyYXkgKEpzLnN0cl9hcnJheSAoSnMuYnl0ZXN0cmluZyBzKSAjIyAoc3BsaXRfcmVnRXhwTGltaXRlZCByIGkpKVxuXG4oKiBNb3JlIGNvbnN0cnVjdG9ycyAqKVxuXG5sZXQgcXVvdGVfcmUgPSByZWdleHAgXCJbXFxcXF1bKClcXFxcXFxcXHwrKi4/e31eJF1cIlxuXG5sZXQgcXVvdGUgcyA9IEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgcXVvdGVfcmUgKEpzLnN0cmluZyBcIlxcXFwkJlwiKSlcblxubGV0IHJlZ2V4cF9zdHJpbmcgcyA9IHJlZ2V4cCAocXVvdGUgcylcblxubGV0IHJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIHMgPSByZWdleHBfY2FzZV9mb2xkIChxdW90ZSBzKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3RcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbigqIFVybCB0YW1wZXJpbmcuICopXG5cbmxldCBzcGxpdCBjIHMgPSBKcy5zdHJfYXJyYXkgKHMjI3NwbGl0IChKcy5zdHJpbmcgKFN0cmluZy5tYWtlIDEgYykpKVxuXG5sZXQgc3BsaXRfMiBjIHMgPVxuICBsZXQgaW5kZXggPSBzIyNpbmRleE9mIChKcy5zdHJpbmcgKFN0cmluZy5tYWtlIDEgYykpIGluXG4gIGlmIGluZGV4IDwgMCB0aGVuIEpzLnVuZGVmaW5lZCBlbHNlIEpzLmRlZiAocyMjc2xpY2UgMCBpbmRleCwgcyMjc2xpY2VfZW5kIChpbmRleCArIDEpKVxuXG5leGNlcHRpb24gTG9jYWxfZXhuXG5cbmxldCBpbnRlcnJ1cHQgKCkgPSByYWlzZSBMb2NhbF9leG5cblxuKCogdXJsIChBS0EgcGVyY2VudCkgZW5jb2RpbmcvZGVjb2RpbmcgKilcblxubGV0IHBsdXNfcmUgPSBSZWdleHAucmVnZXhwX3N0cmluZyBcIitcIlxuXG5sZXQgZXNjYXBlX3BsdXMgcyA9IFJlZ2V4cC5nbG9iYWxfcmVwbGFjZSBwbHVzX3JlIHMgXCIlMkJcIlxuXG5sZXQgdW5lc2NhcGVfcGx1cyBzID0gUmVnZXhwLmdsb2JhbF9yZXBsYWNlIHBsdXNfcmUgcyBcIiBcIlxuXG5sZXQgcGx1c19yZV9qc19zdHJpbmcgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuc3RyaW5nIFwiXFxcXCtcIikgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHVuZXNjYXBlX3BsdXNfanNfc3RyaW5nIHMgPVxuICBwbHVzX3JlX2pzX3N0cmluZyMjLmxhc3RJbmRleCA6PSAwO1xuICBzIyNyZXBsYWNlIHBsdXNfcmVfanNfc3RyaW5nIChKcy5zdHJpbmcgXCIgXCIpXG5cbmxldCB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBzID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMudW5lc2NhcGUgKHVuZXNjYXBlX3BsdXNfanNfc3RyaW5nIHMpKVxuXG5sZXQgdXJsZGVjb2RlIHMgPSBKcy50b19ieXRlc3RyaW5nIChKcy51bmVzY2FwZSAoSnMuYnl0ZXN0cmluZyAodW5lc2NhcGVfcGx1cyBzKSkpXG5cbigqbGV0IHVybGVuY29kZV9qc19zdHJpbmdfc3RyaW5nIHMgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgcykqKVxuXG5sZXQgdXJsZW5jb2RlID8od2l0aF9wbHVzID0gdHJ1ZSkgcyA9XG4gIGlmIHdpdGhfcGx1c1xuICB0aGVuIGVzY2FwZV9wbHVzIChKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgcykpKVxuICBlbHNlIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSAoSnMuYnl0ZXN0cmluZyBzKSlcblxudHlwZSBodHRwX3VybCA9XG4gIHsgaHVfaG9zdCA6IHN0cmluZyAgKCoqIFRoZSBob3N0IHBhcnQgb2YgdGhlIHVybC4gKilcbiAgOyBodV9wb3J0IDogaW50ICAoKiogVGhlIHBvcnQgZm9yIHRoZSBjb25uZWN0aW9uIGlmIGFueS4gKilcbiAgOyBodV9wYXRoIDogc3RyaW5nIGxpc3QgICgqKiBUaGUgcGF0aCBzcGxpdCBvbiBbJy8nXSBjaGFyYWN0ZXJzLiAqKVxuICA7IGh1X3BhdGhfc3RyaW5nIDogc3RyaW5nICAoKiogVGhlIG9yaWdpbmFsIGVudGlyZSBwYXRoLiAqKVxuICA7IGh1X2FyZ3VtZW50cyA6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbiAgICAgICAgKCoqIEFyZ3VtZW50cyBhcyBhIGZpZWxkLXZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGlvbiBsaXN0LiopXG4gIDsgaHVfZnJhZ21lbnQgOiBzdHJpbmcgICgqKiBUaGUgZnJhZ21lbnQgcGFydCAoYWZ0ZXIgdGhlIFsnIyddIGNoYXJhY3RlcikuICopXG4gIH1cbigqKiBUaGUgdHlwZSBmb3IgSFRUUCB1cmwuICopXG5cbnR5cGUgZmlsZV91cmwgPVxuICB7IGZ1X3BhdGggOiBzdHJpbmcgbGlzdFxuICA7IGZ1X3BhdGhfc3RyaW5nIDogc3RyaW5nXG4gIDsgZnVfYXJndW1lbnRzIDogKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICA7IGZ1X2ZyYWdtZW50IDogc3RyaW5nXG4gIH1cbigqKiBUaGUgdHlwZSBmb3IgbG9jYWwgZmlsZSB1cmxzLiAqKVxuXG50eXBlIHVybCA9XG4gIHwgSHR0cCBvZiBodHRwX3VybFxuICB8IEh0dHBzIG9mIGh0dHBfdXJsXG4gIHwgRmlsZSBvZiBmaWxlX3VybFxuICAgICAgKCoqIFRoZSB0eXBlIGZvciB1cmxzLiBbRmlsZV0gaXMgZm9yIGxvY2FsIGZpbGVzIGFuZCBbRXhvdGljIHNdIGlzIGZvclxuICAgIHVua25vd24vdW5zdXBwb3J0ZWQgcHJvdG9jb2xzLiAqKVxuXG5leGNlcHRpb24gTm90X2FuX2h0dHBfcHJvdG9jb2xcblxubGV0IGlzX3NlY3VyZSBwcm90X3N0cmluZyA9XG4gIG1hdGNoIEpzLnRvX2J5dGVzdHJpbmcgcHJvdF9zdHJpbmcjI3RvTG93ZXJDYXNlIHdpdGhcbiAgfCBcImh0dHBzOlwiIHwgXCJodHRwc1wiIC0+IHRydWVcbiAgfCBcImh0dHA6XCIgfCBcImh0dHBcIiAtPiBmYWxzZVxuICB8IFwiZmlsZTpcIiB8IFwiZmlsZVwiIHwgXyAtPiByYWlzZSBOb3RfYW5faHR0cF9wcm90b2NvbFxuXG4oKiBwb3J0IG51bWJlciAqKVxubGV0IGRlZmF1bHRfaHR0cF9wb3J0ID0gODBcblxubGV0IGRlZmF1bHRfaHR0cHNfcG9ydCA9IDQ0M1xuXG4oKiBwYXRoICopXG5sZXQgcGF0aF9vZl9wYXRoX3N0cmluZyBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgbGV0IGogPSB0cnkgU3RyaW5nLmluZGV4X2Zyb20gcyBpICcvJyB3aXRoIE5vdF9mb3VuZCAtPiBsIGluXG4gICAgbGV0IHdvcmQgPSBTdHJpbmcuc3ViIHMgaSAoaiAtIGkpIGluXG4gICAgaWYgaiA+PSBsIHRoZW4gWyB3b3JkIF0gZWxzZSB3b3JkIDo6IGF1eCAoaiArIDEpXG4gIGluXG4gIG1hdGNoIGF1eCAwIHdpdGhcbiAgfCBbIFwiXCIgXSAtPiBbXVxuICB8IFsgXCJcIjsgXCJcIiBdIC0+IFsgXCJcIiBdXG4gIHwgYSAtPiBhXG5cbigqIEFyZ3VtZW50cyAqKVxubGV0IGVuY29kZV9hcmd1bWVudHMgbCA9XG4gIFN0cmluZy5jb25jYXQgXCImXCIgKExpc3QubWFwIChmdW4gKG4sIHYpIC0+IHVybGVuY29kZSBuIF4gXCI9XCIgXiB1cmxlbmNvZGUgdikgbClcblxubGV0IGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIHMgPVxuICBsZXQgYXJyID0gc3BsaXQgJyYnIHMgaW5cbiAgbGV0IGxlbiA9IGFyciMjLmxlbmd0aCBpblxuICBsZXQgbmFtZV92YWx1ZV9zcGxpdCBzID0gc3BsaXRfMiAnPScgcyBpblxuICBsZXQgcmVjIGF1eCBhY2MgaWR4ID1cbiAgICBpZiBpZHggPCAwXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgYXV4XG4gICAgICAgICAgKEpzLk9wdGRlZi5jYXNlIChKcy5hcnJheV9nZXQgYXJyIGlkeCkgaW50ZXJydXB0IChmdW4gcyAtPlxuICAgICAgICAgICAgICAgSnMuT3B0ZGVmLmNhc2UgKG5hbWVfdmFsdWVfc3BsaXQgcykgaW50ZXJydXB0IChmdW4gKHgsIHkpIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGdldCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGluXG4gICAgICAgICAgICAgICAgICAgZ2V0IHgsIGdldCB5KSlcbiAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgKHByZWQgaWR4KVxuICAgICAgd2l0aCBMb2NhbF9leG4gLT4gYXV4IGFjYyAocHJlZCBpZHgpXG4gIGluXG4gIGF1eCBbXSAobGVuIC0gMSlcblxubGV0IGRlY29kZV9hcmd1bWVudHMgcyA9IGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpXG5cbmxldCB1cmxfcmUgPVxuICBuZXclanMgSnMucmVnRXhwXG4gICAgKEpzLmJ5dGVzdHJpbmdcbiAgICAgICBcIl4oW0hoXVtUdF1bVHRdW1BwXVtTc10/KTovLyhbMC05YS16QS1aLi1dK3xcXFxcW1swLTlhLXpBLVouLV0rXFxcXF18XFxcXFtbMC05QS1GYS1mOi5dK1xcXFxdKT8oOihbMC05XSspKT8oLyhbXlxcXFw/I10qKShcXFxcPyhbXiNdKikpPygjKC4qKSk/KT8kXCIpXG5cbmxldCBmaWxlX3JlID1cbiAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgIChKcy5ieXRlc3RyaW5nIFwiXihbRmZdW0lpXVtMbF1bRWVdKTovLyhbXlxcXFw/I10qKShcXFxcPyhbXiNdKikpPygjKC4qKSk/JFwiKVxuXG5sZXQgdXJsX29mX2pzX3N0cmluZyBzID1cbiAgSnMuT3B0LmNhc2VcbiAgICAodXJsX3JlIyNleGVjIHMpXG4gICAgKGZ1biAoKSAtPlxuICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgKGZpbGVfcmUjI2V4ZWMgcylcbiAgICAgICAgKGZ1biAoKSAtPiBOb25lKVxuICAgICAgICAoZnVuIGhhbmRsZSAtPlxuICAgICAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgaGFuZGxlIGluXG4gICAgICAgICAgbGV0IHBhdGhfc3RyID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDIpIGludGVycnVwdClcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChGaWxlXG4gICAgICAgICAgICAgICB7IGZ1X3BhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyXG4gICAgICAgICAgICAgICA7IGZ1X3BhdGhfc3RyaW5nID0gcGF0aF9zdHJcbiAgICAgICAgICAgICAgIDsgZnVfYXJndW1lbnRzID1cbiAgICAgICAgICAgICAgICAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICAgICAgICAgOyBmdV9mcmFnbWVudCA9XG4gICAgICAgICAgICAgICAgICAgSnMudG9fYnl0ZXN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNikgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICAgICAgICAgfSkpKVxuICAgIChmdW4gaGFuZGxlIC0+XG4gICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IGhhbmRsZSBpblxuICAgICAgbGV0IHNzbCA9IGlzX3NlY3VyZSAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAxKSBpbnRlcnJ1cHQpIGluXG4gICAgICBsZXQgcG9ydF9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgICAgICB8IFwiXCIgLT4gaWYgc3NsIHRoZW4gNDQzIGVsc2UgODBcbiAgICAgICAgfCBzIC0+IGludF9vZl9zdHJpbmcgc1xuICAgICAgaW5cbiAgICAgIGxldCBwYXRoX3N0ciA9XG4gICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nXG4gICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNikgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgaW5cbiAgICAgIGxldCB1cmwgPVxuICAgICAgICB7IGh1X2hvc3QgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMikgaW50ZXJydXB0KVxuICAgICAgICA7IGh1X3BvcnQgPVxuICAgICAgICAgICAgcG9ydF9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLnRvX2J5dGVzdHJpbmdcbiAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKSlcbiAgICAgICAgOyBodV9wYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0clxuICAgICAgICA7IGh1X3BhdGhfc3RyaW5nID0gcGF0aF9zdHJcbiAgICAgICAgOyBodV9hcmd1bWVudHMgPVxuICAgICAgICAgICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgOCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICA7IGh1X2ZyYWdtZW50ID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDEwKSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBTb21lIChpZiBzc2wgdGhlbiBIdHRwcyB1cmwgZWxzZSBIdHRwIHVybCkpXG5cbmxldCB1cmxfb2Zfc3RyaW5nIHMgPSB1cmxfb2ZfanNfc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpXG5cbmxldCBzdHJpbmdfb2ZfdXJsID0gZnVuY3Rpb25cbiAgfCBGaWxlIHsgZnVfcGF0aCA9IHBhdGg7IGZ1X2FyZ3VtZW50cyA9IGFyZ3M7IGZ1X2ZyYWdtZW50ID0gZnJhZzsgXyB9IC0+IChcbiAgICAgIFwiZmlsZTovL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG4gIHwgSHR0cFxuICAgICAgeyBodV9ob3N0ID0gaG9zdFxuICAgICAgOyBodV9wb3J0ID0gcG9ydFxuICAgICAgOyBodV9wYXRoID0gcGF0aFxuICAgICAgOyBodV9hcmd1bWVudHMgPSBhcmdzXG4gICAgICA7IGh1X2ZyYWdtZW50ID0gZnJhZ1xuICAgICAgOyBfXG4gICAgICB9IC0+IChcbiAgICAgIFwiaHR0cDovL1wiXG4gICAgICBeIHVybGVuY29kZSBob3N0XG4gICAgICBeIChtYXRjaCBwb3J0IHdpdGhcbiAgICAgICAgfCA4MCAtPiBcIlwiXG4gICAgICAgIHwgbiAtPiBcIjpcIiBeIHN0cmluZ19vZl9pbnQgbilcbiAgICAgIF4gXCIvXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcbiAgfCBIdHRwc1xuICAgICAgeyBodV9ob3N0ID0gaG9zdFxuICAgICAgOyBodV9wb3J0ID0gcG9ydFxuICAgICAgOyBodV9wYXRoID0gcGF0aFxuICAgICAgOyBodV9hcmd1bWVudHMgPSBhcmdzXG4gICAgICA7IGh1X2ZyYWdtZW50ID0gZnJhZ1xuICAgICAgOyBfXG4gICAgICB9IC0+IChcbiAgICAgIFwiaHR0cHM6Ly9cIlxuICAgICAgXiB1cmxlbmNvZGUgaG9zdFxuICAgICAgXiAobWF0Y2ggcG9ydCB3aXRoXG4gICAgICAgIHwgNDQzIC0+IFwiXCJcbiAgICAgICAgfCBuIC0+IFwiOlwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgXiBcIi9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuXG5tb2R1bGUgQ3VycmVudCA9IHN0cnVjdFxuICBsZXQgbCA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLk9wdGRlZi5yZXR1cm4gRG9tX2h0bWwud2luZG93IyMubG9jYXRpb24pXG4gICAgdGhlbiBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvblxuICAgIGVsc2VcbiAgICAgIGxldCBlbXB0eSA9IEpzLnN0cmluZyBcIlwiIGluXG4gICAgICBvYmplY3QlanNcbiAgICAgICAgdmFsIG11dGFibGUgaHJlZiA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcHJvdG9jb2wgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhvc3QgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhvc3RuYW1lID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwb3J0ID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwYXRobmFtZSA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgc2VhcmNoID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBoYXNoID0gZW1wdHlcblxuICAgICAgICB2YWwgb3JpZ2luID0gSnMudW5kZWZpbmVkXG5cbiAgICAgICAgbWV0aG9kIHJlbG9hZCA9ICgpXG5cbiAgICAgICAgbWV0aG9kIHJlcGxhY2UgXyA9ICgpXG5cbiAgICAgICAgbWV0aG9kIGFzc2lnbiBfID0gKClcbiAgICAgIGVuZFxuXG4gIGxldCBob3N0ID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLmhvc3RuYW1lXG5cbiAgbGV0IHByb3RvY29sID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLnByb3RvY29sXG5cbiAgbGV0IHBvcnQgPVxuICAgIChmdW4gKCkgLT5cbiAgICAgIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIChKcy50b19ieXRlc3RyaW5nIGwjIy5wb3J0KSkgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZSlcbiAgICAgICgpXG5cbiAgbGV0IHBhdGhfc3RyaW5nID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLnBhdGhuYW1lXG5cbiAgbGV0IHBhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyaW5nXG5cbiAgbGV0IGFyZ3VtZW50cyA9XG4gICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgIChpZiBKcy5lcXVhbHMgKGwjIy5zZWFyY2gjI2NoYXJBdCAwKSAoSnMuc3RyaW5nIFwiP1wiKVxuICAgICAgIHRoZW4gbCMjLnNlYXJjaCMjc2xpY2VfZW5kIDFcbiAgICAgICBlbHNlIGwjIy5zZWFyY2gpXG5cbiAgbGV0IGdldF9mcmFnbWVudCAoKSA9XG4gICAgbGV0IHMgPSBKcy50b19ieXRlc3RyaW5nIGwjIy5oYXNoIGluXG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzID4gMCAmJiBDaGFyLmVxdWFsIHMuWzBdICcjJ1xuICAgIHRoZW4gU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgZWxzZSBzXG5cbiAgbGV0IHNldF9mcmFnbWVudCBzID0gbCMjLmhhc2ggOj0gSnMuYnl0ZXN0cmluZyBzXG5cbiAgbGV0IGdldCAoKSA9IHVybF9vZl9qc19zdHJpbmcgbCMjLmhyZWZcblxuICBsZXQgc2V0IHUgPSBsIyMuaHJlZiA6PSBKcy5ieXRlc3RyaW5nIChzdHJpbmdfb2ZfdXJsIHUpXG5cbiAgbGV0IGFzX3N0cmluZyA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5ocmVmXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuZXh0ZXJuYWwgY3JlYXRlX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBjb250ZW50OnN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2NyZWF0ZV9maWxlXCJcblxuZXh0ZXJuYWwgcmVhZF9maWxlIDogbmFtZTpzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3JlYWRfZmlsZV9jb250ZW50XCJcblxubGV0IHVwZGF0ZV9maWxlIH5uYW1lIH5jb250ZW50ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgbmFtZSBpblxuICBvdXRwdXRfc3RyaW5nIG9jIGNvbnRlbnQ7XG4gIGNsb3NlX291dCBvY1xuXG5leHRlcm5hbCBzZXRfY2hhbm5lbF9vdXRwdXQnIDpcbiAgb3V0X2NoYW5uZWwgLT4gKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgc2V0X2NoYW5uZWxfaW5wdXQnIDogaW5fY2hhbm5lbCAtPiAodW5pdCAtPiBzdHJpbmcpIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXCJcblxubGV0IHNldF9jaGFubmVsX2ZsdXNoZXIgKG91dF9jaGFubmVsIDogb3V0X2NoYW5uZWwpIChmIDogc3RyaW5nIC0+IHVuaXQpID1cbiAgbGV0IGYnIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrID1cbiAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gcyAtPiBmIChKcy50b19ieXRlc3RyaW5nIHMpKVxuICBpblxuICBzZXRfY2hhbm5lbF9vdXRwdXQnIG91dF9jaGFubmVsIGYnXG5cbmxldCBzZXRfY2hhbm5lbF9maWxsZXIgKGluX2NoYW5uZWwgOiBpbl9jaGFubmVsKSAoZiA6IHVuaXQgLT4gc3RyaW5nKSA9XG4gIGxldCBmJyA6ICh1bml0IC0+IHN0cmluZykgSnMuY2FsbGJhY2sgPSBKcy53cmFwX2NhbGxiYWNrIGYgaW5cbiAgc2V0X2NoYW5uZWxfaW5wdXQnIGluX2NoYW5uZWwgZidcblxuZXh0ZXJuYWwgbW91bnRfcG9pbnQgOiB1bml0IC0+IHN0cmluZyBsaXN0ID0gXCJjYW1sX2xpc3RfbW91bnRfcG9pbnRcIlxuXG5leHRlcm5hbCBtb3VudF9hdXRvbG9hZCA6XG4gIHN0cmluZyAtPiAoc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21vdW50X2F1dG9sb2FkXCJcblxuZXh0ZXJuYWwgdW5tb3VudCA6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3VubW91bnRcIlxuXG5sZXQgbW91bnQgfnBhdGggZiA9XG4gIG1vdW50X2F1dG9sb2FkIHBhdGggKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBwcmVmaXggcGF0aCAtPiBmIH5wcmVmaXggfnBhdGgpKVxuXG5sZXQgdW5tb3VudCB+cGF0aCA9IHVubW91bnQgcGF0aFxuXG5sZXQganNfb2Zfb2NhbWxfdmVyc2lvbiA9XG4gIGlmIFN0cmluZy5lcXVhbCBMaWJfdmVyc2lvbi5naXRfdmVyc2lvbiBcIlwiXG4gIHRoZW4gTGliX3ZlcnNpb24uc1xuICBlbHNlIExpYl92ZXJzaW9uLnMgXiBcIitcIiBeIExpYl92ZXJzaW9uLmdpdF92ZXJzaW9uXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE5IEFsZXhhbmRlciBZYW5pblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJTaXplID0gb2JqZWN0XG4gIG1ldGhvZCBpbmxpbmVTaXplIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBibG9ja1NpemUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlckVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3hTaXplIDogcmVzaXplT2JzZXJ2ZXJTaXplIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRCb3hTaXplIDogcmVzaXplT2JzZXJ2ZXJTaXplIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlck9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGJveCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvYnNlcnZlX3dpdGhPcHRpb25zIDpcbiAgICAjRG9tLm5vZGUgSnMudCAtPiByZXNpemVPYnNlcnZlck9wdGlvbnMgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdW5vYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMgKCkgOiByZXNpemVPYnNlcnZlck9wdGlvbnMgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgcmVzaXplT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1Jlc2l6ZU9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCByZXNpemVPYnNlcnZlclxuXG5sZXQgcmVzaXplT2JzZXJ2ZXIgOlxuICAgICggICAocmVzaXplT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgICAgICBKcy5jYWxsYmFja1xuICAgICAtPiByZXNpemVPYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIHJlc2l6ZU9ic2VydmVyXG5cbmxldCBvYnNlcnZlXG4gICAgfihub2RlIDogI0RvbS5ub2RlIEpzLnQpXG4gICAgfihmIDogcmVzaXplT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgID8oYm94IDogSnMuanNfc3RyaW5nIEpzLnQgb3B0aW9uKVxuICAgICgpIDogcmVzaXplT2JzZXJ2ZXIgSnMudCA9XG4gIGxldCBvYnMgPSBuZXclanMgcmVzaXplT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgKG1hdGNoIGJveCB3aXRoXG4gIHwgTm9uZSAtPiBvYnMjI29ic2VydmUgbm9kZVxuICB8IFNvbWUgYm94IC0+XG4gICAgICBsZXQgb3B0cyA9IGVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zICgpIGluXG4gICAgICBvcHRzIyMuYm94IDo9IGJveDtcbiAgICAgIG9icyMjb2JzZXJ2ZV93aXRoT3B0aW9ucyBub2RlIG9wdHMpO1xuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjEgUGhpbGlwIFdoaXRlXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0ID0gb2JqZWN0XG4gIG1ldGhvZCBlbnRyeVR5cGVzIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW50cnlUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydFRpbWUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR1cmF0aW9uIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdCA9IG9iamVjdFxuICBtZXRob2QgZ2V0RW50cmllcyA6IHBlcmZvcm1hbmNlRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogcGVyZm9ybWFuY2VFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBwZXJmb3JtYW5jZU9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9QZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBwZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBwZXJmb3JtYW5jZU9ic2VydmVyIDpcbiAgICAoICAgKHBlcmZvcm1hbmNlT2JzZXJ2ZXJFbnRyeUxpc3QgSnMudCAtPiBwZXJmb3JtYW5jZU9ic2VydmVyIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgLT4gcGVyZm9ybWFuY2VPYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIHBlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IG9ic2VydmUgfmVudHJ5X3R5cGVzIH5mID1cbiAgbGV0IGVudHJ5X3R5cGVzID0gZW50cnlfdHlwZXMgfD4gTGlzdC5tYXAgSnMuc3RyaW5nIHw+IEFycmF5Lm9mX2xpc3QgfD4gSnMuYXJyYXkgaW5cbiAgbGV0IHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQgOiBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gIGxldCAoKSA9IHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQjIy5lbnRyeVR5cGVzIDo9IGVudHJ5X3R5cGVzIGluXG4gIGxldCBvYnMgPSBuZXclanMgcGVyZm9ybWFuY2VPYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICBsZXQgKCkgPSBvYnMjI29ic2VydmUgcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCBpblxuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uT2JzZXJ2ZXJJbml0ID0gb2JqZWN0XG4gIG1ldGhvZCBjaGlsZExpc3QgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJhY3RlckRhdGEgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1YnRyZWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU9sZFZhbHVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyYWN0ZXJEYXRhT2xkVmFsdWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZUZpbHRlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uUmVjb3JkID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFkZGVkTm9kZXMgOiBEb20ubm9kZSBEb20ubm9kZUxpc3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlbW92ZWROb2RlcyA6IERvbS5ub2RlIERvbS5ub2RlTGlzdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU5hbWVzcGFjZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9sZFZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVySW5pdCBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogbXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCAoKSA6IG11dGF0aW9uT2JzZXJ2ZXJJbml0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IG11dGF0aW9uT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX011dGF0aW9uT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IG11dGF0aW9uT2JzZXJ2ZXJcblxubGV0IG11dGF0aW9uT2JzZXJ2ZXIgOlxuICAgICggICAobXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgbXV0YXRpb25PYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZVxuICAgIH4obm9kZSA6ICNEb20ubm9kZSBKcy50KVxuICAgIH4oZiA6IG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICA/KGNoaWxkX2xpc3QgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZXMgOiBib29sIG9wdGlvbilcbiAgICA/KGNoYXJhY3Rlcl9kYXRhIDogYm9vbCBvcHRpb24pXG4gICAgPyhzdWJ0cmVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVfb2xkX3ZhbHVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZV9maWx0ZXIgOiBKcy5qc19zdHJpbmcgSnMudCBsaXN0IG9wdGlvbilcbiAgICAoKSA6IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCA9XG4gIGxldCBvcHRfaXRlciB4IGYgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICBpblxuICBsZXQgb2JzID0gbmV3JWpzIG11dGF0aW9uT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgbGV0IGNmZyA9IGVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQgKCkgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgY2hpbGRfbGlzdCAoZnVuIHYgLT4gY2ZnIyMuY2hpbGRMaXN0IDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGF0dHJpYnV0ZXMgKGZ1biB2IC0+IGNmZyMjLmF0dHJpYnV0ZXMgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgY2hhcmFjdGVyX2RhdGEgKGZ1biB2IC0+IGNmZyMjLmNoYXJhY3RlckRhdGEgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgc3VidHJlZSAoZnVuIHYgLT4gY2ZnIyMuc3VidHJlZSA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBhdHRyaWJ1dGVfb2xkX3ZhbHVlIChmdW4gdiAtPiBjZmcjIy5hdHRyaWJ1dGVPbGRWYWx1ZSA6PSB2KSBpblxuICBsZXQgKCkgPVxuICAgIG9wdF9pdGVyIGNoYXJhY3Rlcl9kYXRhX29sZF92YWx1ZSAoZnVuIHYgLT4gY2ZnIyMuY2hhcmFjdGVyRGF0YU9sZFZhbHVlIDo9IHYpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgb3B0X2l0ZXIgYXR0cmlidXRlX2ZpbHRlciAoZnVuIGwgLT5cbiAgICAgICAgY2ZnIyMuYXR0cmlidXRlRmlsdGVyIDo9IEpzLmFycmF5IChBcnJheS5vZl9saXN0IGwpKVxuICBpblxuICBsZXQgKCkgPSBvYnMjI29ic2VydmUgbm9kZSBjZmcgaW5cbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IFBpZXJyZSBDaGFtYmFydCAyMDEyLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9IDwgPiBKcy50XG5cbmxldCBvYmogPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxuXG5sZXQgY3JlYXRlICgpIDogJ2EgdCA9IG5ldyVqcyBvYmpcblxubGV0IGFkZCAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpICh2IDogJ2EpID1cbiAgKCogJ18nIGlzIGFkZGVkIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG9iamVjdHMgbWV0aG9kcyAqKVxuICBKcy5VbnNhZmUuc2V0IHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSkgdlxuXG5sZXQgcmVtb3ZlICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgPVxuICBKcy5VbnNhZmUuZGVsZXRlIHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSlcblxubGV0IGZpbmQgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSA6ICdhIEpzLk9wdGRlZi50ID1cbiAgSnMuVW5zYWZlLmdldCB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpXG5cbmxldCBrZXlzICh0IDogJ2EgdCkgOiBKcy5qc19zdHJpbmcgSnMudCBsaXN0ID1cbiAgbGV0IGtleV9hcnJheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgPVxuICAgIEpzLlVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0IyNrZXlzIHRcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZiBbXSBpblxuICBmb3IgaSA9IDAgdG8gcHJlZCBrZXlfYXJyYXkjIy5sZW5ndGggZG9cbiAgICBsZXQga2V5ID1cbiAgICAgIEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCBrZXlfYXJyYXkgaSkgKGZ1biAoKSAtPiBmYWlsd2l0aCBcIkpzdGFibGUua2V5c1wiKVxuICAgIGluXG4gICAgcmVzIDo9IGtleSMjc3Vic3RyaW5nIDAgKHByZWQga2V5IyMubGVuZ3RoKSA6OiAhcmVzXG4gIGRvbmU7XG4gIExpc3QucmV2ICFyZXNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgR3LDqWdvaXJlIEhlbnJ5IDIwMTAuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGpzb24gPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDogJ2EuIGpzX3N0cmluZyB0IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcGFyc2VfIDpcbiAgICAnYSAnYiAnYyAnZC4ganNfc3RyaW5nIHQgLT4gKCdiIHQsIGpzX3N0cmluZyB0IC0+ICdjIC0+ICdkKSBtZXRoX2NhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5IDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5XyA6XG4gICAgJ2EgJ2IgJ2MgJ2QuICdhIC0+ICgnYiwganNfc3RyaW5nIHQgLT4gJ2MgLT4gJ2QpIG1ldGhfY2FsbGJhY2sgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBqc29uIDoganNvbiBKcy50ID0gVW5zYWZlLmdsb2JhbCMjLl9KU09OXG5cbmxldCBpbnB1dF9yZXZpdmVyID1cbiAgbGV0IHJldml2ZXIgX3RoaXMgX2tleSAodmFsdWUgOiBVbnNhZmUuYW55KSA6IE9iai50ID1cbiAgICBpZiBKcy5lcXVhbHMgKHR5cGVvZiB2YWx1ZSkgKHN0cmluZyBcInN0cmluZ1wiKVxuICAgIHRoZW4gT2JqLnJlcHIgKHRvX2J5dGVzdHJpbmcgKFVuc2FmZS5jb2VyY2UgdmFsdWUpKVxuICAgIGVsc2UgaWYgaW5zdGFuY2VvZiB2YWx1ZSBKcy5hcnJheV9lbXB0eVxuICAgICAgICAgICAgJiYgKFVuc2FmZS5jb2VyY2UgdmFsdWUpIyMubGVuZ3RoID09IDRcbiAgICAgICAgICAgICYmIFVuc2FmZS5nZXQgdmFsdWUgMCA9PSAyNTVcbiAgICB0aGVuXG4gICAgICBPYmoucmVwclxuICAgICAgICAoSnNvb19ydW50aW1lLkludDY0LmNyZWF0ZV9pbnQ2NF9sb19taV9oaVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAxKVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAyKVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAzKSlcbiAgICBlbHNlIE9iai5yZXByIHZhbHVlXG4gIGluXG4gIHdyYXBfbWV0aF9jYWxsYmFjayByZXZpdmVyXG5cbmxldCB1bnNhZmVfaW5wdXQgcyA9IGpzb24jI3BhcnNlXyBzIGlucHV0X3Jldml2ZXJcblxuY2xhc3MgdHlwZSBvYmogPSBvYmplY3RcbiAgbWV0aG9kIGNvbnN0cnVjdG9yIDogJ2EuICdhIGNvbnN0ciBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxubGV0IG1sSW50NjRfY29uc3RyID1cbiAgbGV0IGR1bW15X2ludDY0ID0gMUwgaW5cbiAgbGV0IGR1bW15X29iaiA6IG9iaiB0ID0gT2JqLm1hZ2ljIGR1bW15X2ludDY0IGluXG4gIGR1bW15X29iaiMjLmNvbnN0cnVjdG9yXG5cbmxldCBvdXRwdXRfcmV2aXZlciBfa2V5ICh2YWx1ZSA6IFVuc2FmZS5hbnkpIDogT2JqLnQgPVxuICBpZiBPYmoudGFnIChPYmoucmVwciB2YWx1ZSkgPSBPYmouc3RyaW5nX3RhZ1xuICB0aGVuIE9iai5yZXByIChieXRlc3RyaW5nIChPYmoubWFnaWMgdmFsdWUgOiBzdHJpbmcpKVxuICBlbHNlIGlmIGluc3RhbmNlb2YgdmFsdWUgbWxJbnQ2NF9jb25zdHJcbiAgdGhlblxuICAgIGxldCB2YWx1ZSA9IFVuc2FmZS5jb2VyY2UgdmFsdWUgaW5cbiAgICBPYmoucmVwciAoYXJyYXkgW3wgMjU1OyB2YWx1ZSMjLmxvOyB2YWx1ZSMjLm1pOyB2YWx1ZSMjLmhpIHxdKVxuICBlbHNlIE9iai5yZXByIHZhbHVlXG5cbmxldCBvdXRwdXQgb2JqID0ganNvbiMjc3RyaW5naWZ5XyBvYmogKEpzLndyYXBfY2FsbGJhY2sgb3V0cHV0X3Jldml2ZXIpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQ29sb3IgPSBzdHJ1Y3RcbiAgKCogVGhlIHR5cGUgb2YgQ1NTIGNvbG9ycy4gRmlyc3QgYnkgbmFtZSBhbmQgdGhlbiBieSBjb25zdHJ1Y3Rvci4gKilcbiAgdHlwZSBuYW1lID1cbiAgICB8IEFsaWNlYmx1ZVxuICAgIHwgQW50aXF1ZXdoaXRlXG4gICAgfCBBcXVhXG4gICAgfCBBcXVhbWFyaW5lXG4gICAgfCBBenVyZVxuICAgIHwgQmVpZ2VcbiAgICB8IEJpc3F1ZVxuICAgIHwgQmxhY2tcbiAgICB8IEJsYW5jaGVkYWxtb25kXG4gICAgfCBCbHVlXG4gICAgfCBCbHVldmlvbGV0XG4gICAgfCBCcm93blxuICAgIHwgQnVybHl3b29kXG4gICAgfCBDYWRldGJsdWVcbiAgICB8IENoYXJ0cmV1c2VcbiAgICB8IENob2NvbGF0ZVxuICAgIHwgQ29yYWxcbiAgICB8IENvcm5mbG93ZXJibHVlXG4gICAgfCBDb3Juc2lsa1xuICAgIHwgQ3JpbXNvblxuICAgIHwgQ3lhblxuICAgIHwgRGFya2JsdWVcbiAgICB8IERhcmtjeWFuXG4gICAgfCBEYXJrZ29sZGVucm9kXG4gICAgfCBEYXJrZ3JheVxuICAgIHwgRGFya2dyZWVuXG4gICAgfCBEYXJrZ3JleVxuICAgIHwgRGFya2toYWtpXG4gICAgfCBEYXJrbWFnZW50YVxuICAgIHwgRGFya29saXZlZ3JlZW5cbiAgICB8IERhcmtvcmFuZ2VcbiAgICB8IERhcmtvcmNoaWRcbiAgICB8IERhcmtyZWRcbiAgICB8IERhcmtzYWxtb25cbiAgICB8IERhcmtzZWFncmVlblxuICAgIHwgRGFya3NsYXRlYmx1ZVxuICAgIHwgRGFya3NsYXRlZ3JheVxuICAgIHwgRGFya3NsYXRlZ3JleVxuICAgIHwgRGFya3R1cnF1b2lzZVxuICAgIHwgRGFya3Zpb2xldFxuICAgIHwgRGVlcHBpbmtcbiAgICB8IERlZXBza3libHVlXG4gICAgfCBEaW1ncmF5XG4gICAgfCBEaW1ncmV5XG4gICAgfCBEb2RnZXJibHVlXG4gICAgfCBGaXJlYnJpY2tcbiAgICB8IEZsb3JhbHdoaXRlXG4gICAgfCBGb3Jlc3RncmVlblxuICAgIHwgRnVjaHNpYVxuICAgIHwgR2FpbnNib3JvXG4gICAgfCBHaG9zdHdoaXRlXG4gICAgfCBHb2xkXG4gICAgfCBHb2xkZW5yb2RcbiAgICB8IEdyYXlcbiAgICB8IEdyZXlcbiAgICB8IEdyZWVuXG4gICAgfCBHcmVlbnllbGxvd1xuICAgIHwgSG9uZXlkZXdcbiAgICB8IEhvdHBpbmtcbiAgICB8IEluZGlhbnJlZFxuICAgIHwgSW5kaWdvXG4gICAgfCBJdm9yeVxuICAgIHwgS2hha2lcbiAgICB8IExhdmVuZGVyXG4gICAgfCBMYXZlbmRlcmJsdXNoXG4gICAgfCBMYXduZ3JlZW5cbiAgICB8IExlbW9uY2hpZmZvblxuICAgIHwgTGlnaHRibHVlXG4gICAgfCBMaWdodGNvcmFsXG4gICAgfCBMaWdodGN5YW5cbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93XG4gICAgfCBMaWdodGdyYXlcbiAgICB8IExpZ2h0Z3JlZW5cbiAgICB8IExpZ2h0Z3JleVxuICAgIHwgTGlnaHRwaW5rXG4gICAgfCBMaWdodHNhbG1vblxuICAgIHwgTGlnaHRzZWFncmVlblxuICAgIHwgTGlnaHRza3libHVlXG4gICAgfCBMaWdodHNsYXRlZ3JheVxuICAgIHwgTGlnaHRzbGF0ZWdyZXlcbiAgICB8IExpZ2h0c3RlZWxibHVlXG4gICAgfCBMaWdodHllbGxvd1xuICAgIHwgTGltZVxuICAgIHwgTGltZWdyZWVuXG4gICAgfCBMaW5lblxuICAgIHwgTWFnZW50YVxuICAgIHwgTWFyb29uXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lXG4gICAgfCBNZWRpdW1ibHVlXG4gICAgfCBNZWRpdW1vcmNoaWRcbiAgICB8IE1lZGl1bXB1cnBsZVxuICAgIHwgTWVkaXVtc2VhZ3JlZW5cbiAgICB8IE1lZGl1bXNsYXRlYmx1ZVxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW5cbiAgICB8IE1lZGl1bXR1cnF1b2lzZVxuICAgIHwgTWVkaXVtdmlvbGV0cmVkXG4gICAgfCBNaWRuaWdodGJsdWVcbiAgICB8IE1pbnRjcmVhbVxuICAgIHwgTWlzdHlyb3NlXG4gICAgfCBNb2NjYXNpblxuICAgIHwgTmF2YWpvd2hpdGVcbiAgICB8IE5hdnlcbiAgICB8IE9sZGxhY2VcbiAgICB8IE9saXZlXG4gICAgfCBPbGl2ZWRyYWJcbiAgICB8IE9yYW5nZVxuICAgIHwgT3JhbmdlcmVkXG4gICAgfCBPcmNoaWRcbiAgICB8IFBhbGVnb2xkZW5yb2RcbiAgICB8IFBhbGVncmVlblxuICAgIHwgUGFsZXR1cnF1b2lzZVxuICAgIHwgUGFsZXZpb2xldHJlZFxuICAgIHwgUGFwYXlhd2hpcFxuICAgIHwgUGVhY2hwdWZmXG4gICAgfCBQZXJ1XG4gICAgfCBQaW5rXG4gICAgfCBQbHVtXG4gICAgfCBQb3dkZXJibHVlXG4gICAgfCBQdXJwbGVcbiAgICB8IFJlZFxuICAgIHwgUm9zeWJyb3duXG4gICAgfCBSb3lhbGJsdWVcbiAgICB8IFNhZGRsZWJyb3duXG4gICAgfCBTYWxtb25cbiAgICB8IFNhbmR5YnJvd25cbiAgICB8IFNlYWdyZWVuXG4gICAgfCBTZWFzaGVsbFxuICAgIHwgU2llbm5hXG4gICAgfCBTaWx2ZXJcbiAgICB8IFNreWJsdWVcbiAgICB8IFNsYXRlYmx1ZVxuICAgIHwgU2xhdGVncmF5XG4gICAgfCBTbGF0ZWdyZXlcbiAgICB8IFNub3dcbiAgICB8IFNwcmluZ2dyZWVuXG4gICAgfCBTdGVlbGJsdWVcbiAgICB8IFRhblxuICAgIHwgVGVhbFxuICAgIHwgVGhpc3RsZVxuICAgIHwgVG9tYXRvXG4gICAgfCBUdXJxdW9pc2VcbiAgICB8IFZpb2xldFxuICAgIHwgV2hlYXRcbiAgICB8IFdoaXRlXG4gICAgfCBXaGl0ZXNtb2tlXG4gICAgfCBZZWxsb3dcbiAgICB8IFllbGxvd2dyZWVuXG5cbiAgbGV0IHN0cmluZ19vZl9uYW1lID0gZnVuY3Rpb25cbiAgICB8IEFsaWNlYmx1ZSAtPiBcImFsaWNlYmx1ZVwiXG4gICAgfCBBbnRpcXVld2hpdGUgLT4gXCJhbnRpcXVld2hpdGVcIlxuICAgIHwgQXF1YSAtPiBcImFxdWFcIlxuICAgIHwgQXF1YW1hcmluZSAtPiBcImFxdWFtYXJpbmVcIlxuICAgIHwgQXp1cmUgLT4gXCJhenVyZVwiXG4gICAgfCBCZWlnZSAtPiBcImJlaWdlXCJcbiAgICB8IEJpc3F1ZSAtPiBcImJpc3F1ZVwiXG4gICAgfCBCbGFjayAtPiBcImJsYWNrXCJcbiAgICB8IEJsYW5jaGVkYWxtb25kIC0+IFwiYmxhbmNoZWRhbG1vbmRcIlxuICAgIHwgQmx1ZSAtPiBcImJsdWVcIlxuICAgIHwgQmx1ZXZpb2xldCAtPiBcImJsdWV2aW9sZXRcIlxuICAgIHwgQnJvd24gLT4gXCJicm93blwiXG4gICAgfCBCdXJseXdvb2QgLT4gXCJidXJseXdvb2RcIlxuICAgIHwgQ2FkZXRibHVlIC0+IFwiY2FkZXRibHVlXCJcbiAgICB8IENoYXJ0cmV1c2UgLT4gXCJjaGFydHJldXNlXCJcbiAgICB8IENob2NvbGF0ZSAtPiBcImNob2NvbGF0ZVwiXG4gICAgfCBDb3JhbCAtPiBcImNvcmFsXCJcbiAgICB8IENvcm5mbG93ZXJibHVlIC0+IFwiY29ybmZsb3dlcmJsdWVcIlxuICAgIHwgQ29ybnNpbGsgLT4gXCJjb3Juc2lsa1wiXG4gICAgfCBDcmltc29uIC0+IFwiY3JpbXNvblwiXG4gICAgfCBDeWFuIC0+IFwiY3lhblwiXG4gICAgfCBEYXJrYmx1ZSAtPiBcImRhcmtibHVlXCJcbiAgICB8IERhcmtjeWFuIC0+IFwiZGFya2N5YW5cIlxuICAgIHwgRGFya2dvbGRlbnJvZCAtPiBcImRhcmtnb2xkZW5yb2RcIlxuICAgIHwgRGFya2dyYXkgLT4gXCJkYXJrZ3JheVwiXG4gICAgfCBEYXJrZ3JlZW4gLT4gXCJkYXJrZ3JlZW5cIlxuICAgIHwgRGFya2dyZXkgLT4gXCJkYXJrZ3JleVwiXG4gICAgfCBEYXJra2hha2kgLT4gXCJkYXJra2hha2lcIlxuICAgIHwgRGFya21hZ2VudGEgLT4gXCJkYXJrbWFnZW50YVwiXG4gICAgfCBEYXJrb2xpdmVncmVlbiAtPiBcImRhcmtvbGl2ZWdyZWVuXCJcbiAgICB8IERhcmtvcmFuZ2UgLT4gXCJkYXJrb3JhbmdlXCJcbiAgICB8IERhcmtvcmNoaWQgLT4gXCJkYXJrb3JjaGlkXCJcbiAgICB8IERhcmtyZWQgLT4gXCJkYXJrcmVkXCJcbiAgICB8IERhcmtzYWxtb24gLT4gXCJkYXJrc2FsbW9uXCJcbiAgICB8IERhcmtzZWFncmVlbiAtPiBcImRhcmtzZWFncmVlblwiXG4gICAgfCBEYXJrc2xhdGVibHVlIC0+IFwiZGFya3NsYXRlYmx1ZVwiXG4gICAgfCBEYXJrc2xhdGVncmF5IC0+IFwiZGFya3NsYXRlZ3JheVwiXG4gICAgfCBEYXJrc2xhdGVncmV5IC0+IFwiZGFya3NsYXRlZ3JleVwiXG4gICAgfCBEYXJrdHVycXVvaXNlIC0+IFwiZGFya3R1cnF1b2lzZVwiXG4gICAgfCBEYXJrdmlvbGV0IC0+IFwiZGFya3Zpb2xldFwiXG4gICAgfCBEZWVwcGluayAtPiBcImRlZXBwaW5rXCJcbiAgICB8IERlZXBza3libHVlIC0+IFwiZGVlcHNreWJsdWVcIlxuICAgIHwgRGltZ3JheSAtPiBcImRpbWdyYXlcIlxuICAgIHwgRGltZ3JleSAtPiBcImRpbWdyZXlcIlxuICAgIHwgRG9kZ2VyYmx1ZSAtPiBcImRvZGdlcmJsdWVcIlxuICAgIHwgRmlyZWJyaWNrIC0+IFwiZmlyZWJyaWNrXCJcbiAgICB8IEZsb3JhbHdoaXRlIC0+IFwiZmxvcmFsd2hpdGVcIlxuICAgIHwgRm9yZXN0Z3JlZW4gLT4gXCJmb3Jlc3RncmVlblwiXG4gICAgfCBGdWNoc2lhIC0+IFwiZnVjaHNpYVwiXG4gICAgfCBHYWluc2Jvcm8gLT4gXCJnYWluc2Jvcm9cIlxuICAgIHwgR2hvc3R3aGl0ZSAtPiBcImdob3N0d2hpdGVcIlxuICAgIHwgR29sZCAtPiBcImdvbGRcIlxuICAgIHwgR29sZGVucm9kIC0+IFwiZ29sZGVucm9kXCJcbiAgICB8IEdyYXkgLT4gXCJncmF5XCJcbiAgICB8IEdyZWVuIC0+IFwiZ3JlZW5cIlxuICAgIHwgR3JlZW55ZWxsb3cgLT4gXCJncmVlbnllbGxvd1wiXG4gICAgfCBHcmV5IC0+IFwiZ3JleVwiXG4gICAgfCBIb25leWRldyAtPiBcImhvbmV5ZGV3XCJcbiAgICB8IEhvdHBpbmsgLT4gXCJob3RwaW5rXCJcbiAgICB8IEluZGlhbnJlZCAtPiBcImluZGlhbnJlZFwiXG4gICAgfCBJbmRpZ28gLT4gXCJpbmRpZ29cIlxuICAgIHwgSXZvcnkgLT4gXCJpdm9yeVwiXG4gICAgfCBLaGFraSAtPiBcImtoYWtpXCJcbiAgICB8IExhdmVuZGVyIC0+IFwibGF2ZW5kZXJcIlxuICAgIHwgTGF2ZW5kZXJibHVzaCAtPiBcImxhdmVuZGVyYmx1c2hcIlxuICAgIHwgTGF3bmdyZWVuIC0+IFwibGF3bmdyZWVuXCJcbiAgICB8IExlbW9uY2hpZmZvbiAtPiBcImxlbW9uY2hpZmZvblwiXG4gICAgfCBMaWdodGJsdWUgLT4gXCJsaWdodGJsdWVcIlxuICAgIHwgTGlnaHRjb3JhbCAtPiBcImxpZ2h0Y29yYWxcIlxuICAgIHwgTGlnaHRjeWFuIC0+IFwibGlnaHRjeWFuXCJcbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93IC0+IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIlxuICAgIHwgTGlnaHRncmF5IC0+IFwibGlnaHRncmF5XCJcbiAgICB8IExpZ2h0Z3JlZW4gLT4gXCJsaWdodGdyZWVuXCJcbiAgICB8IExpZ2h0Z3JleSAtPiBcImxpZ2h0Z3JleVwiXG4gICAgfCBMaWdodHBpbmsgLT4gXCJsaWdodHBpbmtcIlxuICAgIHwgTGlnaHRzYWxtb24gLT4gXCJsaWdodHNhbG1vblwiXG4gICAgfCBMaWdodHNlYWdyZWVuIC0+IFwibGlnaHRzZWFncmVlblwiXG4gICAgfCBMaWdodHNreWJsdWUgLT4gXCJsaWdodHNreWJsdWVcIlxuICAgIHwgTGlnaHRzbGF0ZWdyYXkgLT4gXCJsaWdodHNsYXRlZ3JheVwiXG4gICAgfCBMaWdodHNsYXRlZ3JleSAtPiBcImxpZ2h0c2xhdGVncmV5XCJcbiAgICB8IExpZ2h0c3RlZWxibHVlIC0+IFwibGlnaHRzdGVlbGJsdWVcIlxuICAgIHwgTGlnaHR5ZWxsb3cgLT4gXCJsaWdodHllbGxvd1wiXG4gICAgfCBMaW1lIC0+IFwibGltZVwiXG4gICAgfCBMaW1lZ3JlZW4gLT4gXCJsaW1lZ3JlZW5cIlxuICAgIHwgTGluZW4gLT4gXCJsaW5lblwiXG4gICAgfCBNYWdlbnRhIC0+IFwibWFnZW50YVwiXG4gICAgfCBNYXJvb24gLT4gXCJtYXJvb25cIlxuICAgIHwgTWVkaXVtYXF1YW1hcmluZSAtPiBcIm1lZGl1bWFxdWFtYXJpbmVcIlxuICAgIHwgTWVkaXVtYmx1ZSAtPiBcIm1lZGl1bWJsdWVcIlxuICAgIHwgTWVkaXVtb3JjaGlkIC0+IFwibWVkaXVtb3JjaGlkXCJcbiAgICB8IE1lZGl1bXB1cnBsZSAtPiBcIm1lZGl1bXB1cnBsZVwiXG4gICAgfCBNZWRpdW1zZWFncmVlbiAtPiBcIm1lZGl1bXNlYWdyZWVuXCJcbiAgICB8IE1lZGl1bXNsYXRlYmx1ZSAtPiBcIm1lZGl1bXNsYXRlYmx1ZVwiXG4gICAgfCBNZWRpdW1zcHJpbmdncmVlbiAtPiBcIm1lZGl1bXNwcmluZ2dyZWVuXCJcbiAgICB8IE1lZGl1bXR1cnF1b2lzZSAtPiBcIm1lZGl1bXR1cnF1b2lzZVwiXG4gICAgfCBNZWRpdW12aW9sZXRyZWQgLT4gXCJtZWRpdW12aW9sZXRyZWRcIlxuICAgIHwgTWlkbmlnaHRibHVlIC0+IFwibWlkbmlnaHRibHVlXCJcbiAgICB8IE1pbnRjcmVhbSAtPiBcIm1pbnRjcmVhbVwiXG4gICAgfCBNaXN0eXJvc2UgLT4gXCJtaXN0eXJvc2VcIlxuICAgIHwgTW9jY2FzaW4gLT4gXCJtb2NjYXNpblwiXG4gICAgfCBOYXZham93aGl0ZSAtPiBcIm5hdmFqb3doaXRlXCJcbiAgICB8IE5hdnkgLT4gXCJuYXZ5XCJcbiAgICB8IE9sZGxhY2UgLT4gXCJvbGRsYWNlXCJcbiAgICB8IE9saXZlIC0+IFwib2xpdmVcIlxuICAgIHwgT2xpdmVkcmFiIC0+IFwib2xpdmVkcmFiXCJcbiAgICB8IE9yYW5nZSAtPiBcIm9yYW5nZVwiXG4gICAgfCBPcmFuZ2VyZWQgLT4gXCJvcmFuZ2VyZWRcIlxuICAgIHwgT3JjaGlkIC0+IFwib3JjaGlkXCJcbiAgICB8IFBhbGVnb2xkZW5yb2QgLT4gXCJwYWxlZ29sZGVucm9kXCJcbiAgICB8IFBhbGVncmVlbiAtPiBcInBhbGVncmVlblwiXG4gICAgfCBQYWxldHVycXVvaXNlIC0+IFwicGFsZXR1cnF1b2lzZVwiXG4gICAgfCBQYWxldmlvbGV0cmVkIC0+IFwicGFsZXZpb2xldHJlZFwiXG4gICAgfCBQYXBheWF3aGlwIC0+IFwicGFwYXlhd2hpcFwiXG4gICAgfCBQZWFjaHB1ZmYgLT4gXCJwZWFjaHB1ZmZcIlxuICAgIHwgUGVydSAtPiBcInBlcnVcIlxuICAgIHwgUGluayAtPiBcInBpbmtcIlxuICAgIHwgUGx1bSAtPiBcInBsdW1cIlxuICAgIHwgUG93ZGVyYmx1ZSAtPiBcInBvd2RlcmJsdWVcIlxuICAgIHwgUHVycGxlIC0+IFwicHVycGxlXCJcbiAgICB8IFJlZCAtPiBcInJlZFwiXG4gICAgfCBSb3N5YnJvd24gLT4gXCJyb3N5YnJvd25cIlxuICAgIHwgUm95YWxibHVlIC0+IFwicm95YWxibHVlXCJcbiAgICB8IFNhZGRsZWJyb3duIC0+IFwic2FkZGxlYnJvd25cIlxuICAgIHwgU2FsbW9uIC0+IFwic2FsbW9uXCJcbiAgICB8IFNhbmR5YnJvd24gLT4gXCJzYW5keWJyb3duXCJcbiAgICB8IFNlYWdyZWVuIC0+IFwic2VhZ3JlZW5cIlxuICAgIHwgU2Vhc2hlbGwgLT4gXCJzZWFzaGVsbFwiXG4gICAgfCBTaWVubmEgLT4gXCJzaWVubmFcIlxuICAgIHwgU2lsdmVyIC0+IFwic2lsdmVyXCJcbiAgICB8IFNreWJsdWUgLT4gXCJza3libHVlXCJcbiAgICB8IFNsYXRlYmx1ZSAtPiBcInNsYXRlYmx1ZVwiXG4gICAgfCBTbGF0ZWdyYXkgLT4gXCJzbGF0ZWdyYXlcIlxuICAgIHwgU2xhdGVncmV5IC0+IFwic2xhdGVncmV5XCJcbiAgICB8IFNub3cgLT4gXCJzbm93XCJcbiAgICB8IFNwcmluZ2dyZWVuIC0+IFwic3ByaW5nZ3JlZW5cIlxuICAgIHwgU3RlZWxibHVlIC0+IFwic3RlZWxibHVlXCJcbiAgICB8IFRhbiAtPiBcInRhblwiXG4gICAgfCBUZWFsIC0+IFwidGVhbFwiXG4gICAgfCBUaGlzdGxlIC0+IFwidGhpc3RsZVwiXG4gICAgfCBUb21hdG8gLT4gXCJ0b21hdG9cIlxuICAgIHwgVHVycXVvaXNlIC0+IFwidHVycXVvaXNlXCJcbiAgICB8IFZpb2xldCAtPiBcInZpb2xldFwiXG4gICAgfCBXaGVhdCAtPiBcIndoZWF0XCJcbiAgICB8IFdoaXRlIC0+IFwid2hpdGVcIlxuICAgIHwgV2hpdGVzbW9rZSAtPiBcIndoaXRlc21va2VcIlxuICAgIHwgWWVsbG93IC0+IFwieWVsbG93XCJcbiAgICB8IFllbGxvd2dyZWVuIC0+IFwieWVsbG93Z3JlZW5cIlxuXG4gIGxldCBuYW1lX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBcImFsaWNlYmx1ZVwiIC0+IEFsaWNlYmx1ZVxuICAgIHwgXCJhbnRpcXVld2hpdGVcIiAtPiBBbnRpcXVld2hpdGVcbiAgICB8IFwiYXF1YVwiIC0+IEFxdWFcbiAgICB8IFwiYXF1YW1hcmluZVwiIC0+IEFxdWFtYXJpbmVcbiAgICB8IFwiYXp1cmVcIiAtPiBBenVyZVxuICAgIHwgXCJiZWlnZVwiIC0+IEJlaWdlXG4gICAgfCBcImJpc3F1ZVwiIC0+IEJpc3F1ZVxuICAgIHwgXCJibGFja1wiIC0+IEJsYWNrXG4gICAgfCBcImJsYW5jaGVkYWxtb25kXCIgLT4gQmxhbmNoZWRhbG1vbmRcbiAgICB8IFwiYmx1ZVwiIC0+IEJsdWVcbiAgICB8IFwiYmx1ZXZpb2xldFwiIC0+IEJsdWV2aW9sZXRcbiAgICB8IFwiYnJvd25cIiAtPiBCcm93blxuICAgIHwgXCJidXJseXdvb2RcIiAtPiBCdXJseXdvb2RcbiAgICB8IFwiY2FkZXRibHVlXCIgLT4gQ2FkZXRibHVlXG4gICAgfCBcImNoYXJ0cmV1c2VcIiAtPiBDaGFydHJldXNlXG4gICAgfCBcImNob2NvbGF0ZVwiIC0+IENob2NvbGF0ZVxuICAgIHwgXCJjb3JhbFwiIC0+IENvcmFsXG4gICAgfCBcImNvcm5mbG93ZXJibHVlXCIgLT4gQ29ybmZsb3dlcmJsdWVcbiAgICB8IFwiY29ybnNpbGtcIiAtPiBDb3Juc2lsa1xuICAgIHwgXCJjcmltc29uXCIgLT4gQ3JpbXNvblxuICAgIHwgXCJjeWFuXCIgLT4gQ3lhblxuICAgIHwgXCJkYXJrYmx1ZVwiIC0+IERhcmtibHVlXG4gICAgfCBcImRhcmtjeWFuXCIgLT4gRGFya2N5YW5cbiAgICB8IFwiZGFya2dvbGRlbnJvZFwiIC0+IERhcmtnb2xkZW5yb2RcbiAgICB8IFwiZGFya2dyYXlcIiAtPiBEYXJrZ3JheVxuICAgIHwgXCJkYXJrZ3JlZW5cIiAtPiBEYXJrZ3JlZW5cbiAgICB8IFwiZGFya2dyZXlcIiAtPiBEYXJrZ3JleVxuICAgIHwgXCJkYXJra2hha2lcIiAtPiBEYXJra2hha2lcbiAgICB8IFwiZGFya21hZ2VudGFcIiAtPiBEYXJrbWFnZW50YVxuICAgIHwgXCJkYXJrb2xpdmVncmVlblwiIC0+IERhcmtvbGl2ZWdyZWVuXG4gICAgfCBcImRhcmtvcmFuZ2VcIiAtPiBEYXJrb3JhbmdlXG4gICAgfCBcImRhcmtvcmNoaWRcIiAtPiBEYXJrb3JjaGlkXG4gICAgfCBcImRhcmtyZWRcIiAtPiBEYXJrcmVkXG4gICAgfCBcImRhcmtzYWxtb25cIiAtPiBEYXJrc2FsbW9uXG4gICAgfCBcImRhcmtzZWFncmVlblwiIC0+IERhcmtzZWFncmVlblxuICAgIHwgXCJkYXJrc2xhdGVibHVlXCIgLT4gRGFya3NsYXRlYmx1ZVxuICAgIHwgXCJkYXJrc2xhdGVncmF5XCIgLT4gRGFya3NsYXRlZ3JheVxuICAgIHwgXCJkYXJrc2xhdGVncmV5XCIgLT4gRGFya3NsYXRlZ3JleVxuICAgIHwgXCJkYXJrdHVycXVvaXNlXCIgLT4gRGFya3R1cnF1b2lzZVxuICAgIHwgXCJkYXJrdmlvbGV0XCIgLT4gRGFya3Zpb2xldFxuICAgIHwgXCJkZWVwcGlua1wiIC0+IERlZXBwaW5rXG4gICAgfCBcImRlZXBza3libHVlXCIgLT4gRGVlcHNreWJsdWVcbiAgICB8IFwiZGltZ3JheVwiIC0+IERpbWdyYXlcbiAgICB8IFwiZGltZ3JleVwiIC0+IERpbWdyZXlcbiAgICB8IFwiZG9kZ2VyYmx1ZVwiIC0+IERvZGdlcmJsdWVcbiAgICB8IFwiZmlyZWJyaWNrXCIgLT4gRmlyZWJyaWNrXG4gICAgfCBcImZsb3JhbHdoaXRlXCIgLT4gRmxvcmFsd2hpdGVcbiAgICB8IFwiZm9yZXN0Z3JlZW5cIiAtPiBGb3Jlc3RncmVlblxuICAgIHwgXCJmdWNoc2lhXCIgLT4gRnVjaHNpYVxuICAgIHwgXCJnYWluc2Jvcm9cIiAtPiBHYWluc2Jvcm9cbiAgICB8IFwiZ2hvc3R3aGl0ZVwiIC0+IEdob3N0d2hpdGVcbiAgICB8IFwiZ29sZFwiIC0+IEdvbGRcbiAgICB8IFwiZ29sZGVucm9kXCIgLT4gR29sZGVucm9kXG4gICAgfCBcImdyYXlcIiAtPiBHcmF5XG4gICAgfCBcImdyZWVuXCIgLT4gR3JlZW5cbiAgICB8IFwiZ3JlZW55ZWxsb3dcIiAtPiBHcmVlbnllbGxvd1xuICAgIHwgXCJncmV5XCIgLT4gR3JleVxuICAgIHwgXCJob25leWRld1wiIC0+IEhvbmV5ZGV3XG4gICAgfCBcImhvdHBpbmtcIiAtPiBIb3RwaW5rXG4gICAgfCBcImluZGlhbnJlZFwiIC0+IEluZGlhbnJlZFxuICAgIHwgXCJpbmRpZ29cIiAtPiBJbmRpZ29cbiAgICB8IFwiaXZvcnlcIiAtPiBJdm9yeVxuICAgIHwgXCJraGFraVwiIC0+IEtoYWtpXG4gICAgfCBcImxhdmVuZGVyXCIgLT4gTGF2ZW5kZXJcbiAgICB8IFwibGF2ZW5kZXJibHVzaFwiIC0+IExhdmVuZGVyYmx1c2hcbiAgICB8IFwibGF3bmdyZWVuXCIgLT4gTGF3bmdyZWVuXG4gICAgfCBcImxlbW9uY2hpZmZvblwiIC0+IExlbW9uY2hpZmZvblxuICAgIHwgXCJsaWdodGJsdWVcIiAtPiBMaWdodGJsdWVcbiAgICB8IFwibGlnaHRjb3JhbFwiIC0+IExpZ2h0Y29yYWxcbiAgICB8IFwibGlnaHRjeWFuXCIgLT4gTGlnaHRjeWFuXG4gICAgfCBcImxpZ2h0Z29sZGVucm9keWVsbG93XCIgLT4gTGlnaHRnb2xkZW5yb2R5ZWxsb3dcbiAgICB8IFwibGlnaHRncmF5XCIgLT4gTGlnaHRncmF5XG4gICAgfCBcImxpZ2h0Z3JlZW5cIiAtPiBMaWdodGdyZWVuXG4gICAgfCBcImxpZ2h0Z3JleVwiIC0+IExpZ2h0Z3JleVxuICAgIHwgXCJsaWdodHBpbmtcIiAtPiBMaWdodHBpbmtcbiAgICB8IFwibGlnaHRzYWxtb25cIiAtPiBMaWdodHNhbG1vblxuICAgIHwgXCJsaWdodHNlYWdyZWVuXCIgLT4gTGlnaHRzZWFncmVlblxuICAgIHwgXCJsaWdodHNreWJsdWVcIiAtPiBMaWdodHNreWJsdWVcbiAgICB8IFwibGlnaHRzbGF0ZWdyYXlcIiAtPiBMaWdodHNsYXRlZ3JheVxuICAgIHwgXCJsaWdodHNsYXRlZ3JleVwiIC0+IExpZ2h0c2xhdGVncmV5XG4gICAgfCBcImxpZ2h0c3RlZWxibHVlXCIgLT4gTGlnaHRzdGVlbGJsdWVcbiAgICB8IFwibGlnaHR5ZWxsb3dcIiAtPiBMaWdodHllbGxvd1xuICAgIHwgXCJsaW1lXCIgLT4gTGltZVxuICAgIHwgXCJsaW1lZ3JlZW5cIiAtPiBMaW1lZ3JlZW5cbiAgICB8IFwibGluZW5cIiAtPiBMaW5lblxuICAgIHwgXCJtYWdlbnRhXCIgLT4gTWFnZW50YVxuICAgIHwgXCJtYXJvb25cIiAtPiBNYXJvb25cbiAgICB8IFwibWVkaXVtYXF1YW1hcmluZVwiIC0+IE1lZGl1bWFxdWFtYXJpbmVcbiAgICB8IFwibWVkaXVtYmx1ZVwiIC0+IE1lZGl1bWJsdWVcbiAgICB8IFwibWVkaXVtb3JjaGlkXCIgLT4gTWVkaXVtb3JjaGlkXG4gICAgfCBcIm1lZGl1bXB1cnBsZVwiIC0+IE1lZGl1bXB1cnBsZVxuICAgIHwgXCJtZWRpdW1zZWFncmVlblwiIC0+IE1lZGl1bXNlYWdyZWVuXG4gICAgfCBcIm1lZGl1bXNsYXRlYmx1ZVwiIC0+IE1lZGl1bXNsYXRlYmx1ZVxuICAgIHwgXCJtZWRpdW1zcHJpbmdncmVlblwiIC0+IE1lZGl1bXNwcmluZ2dyZWVuXG4gICAgfCBcIm1lZGl1bXR1cnF1b2lzZVwiIC0+IE1lZGl1bXR1cnF1b2lzZVxuICAgIHwgXCJtZWRpdW12aW9sZXRyZWRcIiAtPiBNZWRpdW12aW9sZXRyZWRcbiAgICB8IFwibWlkbmlnaHRibHVlXCIgLT4gTWlkbmlnaHRibHVlXG4gICAgfCBcIm1pbnRjcmVhbVwiIC0+IE1pbnRjcmVhbVxuICAgIHwgXCJtaXN0eXJvc2VcIiAtPiBNaXN0eXJvc2VcbiAgICB8IFwibW9jY2FzaW5cIiAtPiBNb2NjYXNpblxuICAgIHwgXCJuYXZham93aGl0ZVwiIC0+IE5hdmFqb3doaXRlXG4gICAgfCBcIm5hdnlcIiAtPiBOYXZ5XG4gICAgfCBcIm9sZGxhY2VcIiAtPiBPbGRsYWNlXG4gICAgfCBcIm9saXZlXCIgLT4gT2xpdmVcbiAgICB8IFwib2xpdmVkcmFiXCIgLT4gT2xpdmVkcmFiXG4gICAgfCBcIm9yYW5nZVwiIC0+IE9yYW5nZVxuICAgIHwgXCJvcmFuZ2VyZWRcIiAtPiBPcmFuZ2VyZWRcbiAgICB8IFwib3JjaGlkXCIgLT4gT3JjaGlkXG4gICAgfCBcInBhbGVnb2xkZW5yb2RcIiAtPiBQYWxlZ29sZGVucm9kXG4gICAgfCBcInBhbGVncmVlblwiIC0+IFBhbGVncmVlblxuICAgIHwgXCJwYWxldHVycXVvaXNlXCIgLT4gUGFsZXR1cnF1b2lzZVxuICAgIHwgXCJwYWxldmlvbGV0cmVkXCIgLT4gUGFsZXZpb2xldHJlZFxuICAgIHwgXCJwYXBheWF3aGlwXCIgLT4gUGFwYXlhd2hpcFxuICAgIHwgXCJwZWFjaHB1ZmZcIiAtPiBQZWFjaHB1ZmZcbiAgICB8IFwicGVydVwiIC0+IFBlcnVcbiAgICB8IFwicGlua1wiIC0+IFBpbmtcbiAgICB8IFwicGx1bVwiIC0+IFBsdW1cbiAgICB8IFwicG93ZGVyYmx1ZVwiIC0+IFBvd2RlcmJsdWVcbiAgICB8IFwicHVycGxlXCIgLT4gUHVycGxlXG4gICAgfCBcInJlZFwiIC0+IFJlZFxuICAgIHwgXCJyb3N5YnJvd25cIiAtPiBSb3N5YnJvd25cbiAgICB8IFwicm95YWxibHVlXCIgLT4gUm95YWxibHVlXG4gICAgfCBcInNhZGRsZWJyb3duXCIgLT4gU2FkZGxlYnJvd25cbiAgICB8IFwic2FsbW9uXCIgLT4gU2FsbW9uXG4gICAgfCBcInNhbmR5YnJvd25cIiAtPiBTYW5keWJyb3duXG4gICAgfCBcInNlYWdyZWVuXCIgLT4gU2VhZ3JlZW5cbiAgICB8IFwic2Vhc2hlbGxcIiAtPiBTZWFzaGVsbFxuICAgIHwgXCJzaWVubmFcIiAtPiBTaWVubmFcbiAgICB8IFwic2lsdmVyXCIgLT4gU2lsdmVyXG4gICAgfCBcInNreWJsdWVcIiAtPiBTa3libHVlXG4gICAgfCBcInNsYXRlYmx1ZVwiIC0+IFNsYXRlYmx1ZVxuICAgIHwgXCJzbGF0ZWdyYXlcIiAtPiBTbGF0ZWdyYXlcbiAgICB8IFwic2xhdGVncmV5XCIgLT4gU2xhdGVncmV5XG4gICAgfCBcInNub3dcIiAtPiBTbm93XG4gICAgfCBcInNwcmluZ2dyZWVuXCIgLT4gU3ByaW5nZ3JlZW5cbiAgICB8IFwic3RlZWxibHVlXCIgLT4gU3RlZWxibHVlXG4gICAgfCBcInRhblwiIC0+IFRhblxuICAgIHwgXCJ0ZWFsXCIgLT4gVGVhbFxuICAgIHwgXCJ0aGlzdGxlXCIgLT4gVGhpc3RsZVxuICAgIHwgXCJ0b21hdG9cIiAtPiBUb21hdG9cbiAgICB8IFwidHVycXVvaXNlXCIgLT4gVHVycXVvaXNlXG4gICAgfCBcInZpb2xldFwiIC0+IFZpb2xldFxuICAgIHwgXCJ3aGVhdFwiIC0+IFdoZWF0XG4gICAgfCBcIndoaXRlXCIgLT4gV2hpdGVcbiAgICB8IFwid2hpdGVzbW9rZVwiIC0+IFdoaXRlc21va2VcbiAgICB8IFwieWVsbG93XCIgLT4gWWVsbG93XG4gICAgfCBcInllbGxvd2dyZWVuXCIgLT4gWWVsbG93Z3JlZW5cbiAgICB8IHMgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvciBuYW1lXCIpKVxuXG4gIGxldCByZ2Jfb2ZfbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBBbGljZWJsdWUgLT4gMjQwLCAyNDgsIDI1NVxuICAgIHwgQW50aXF1ZXdoaXRlIC0+IDI1MCwgMjM1LCAyMTVcbiAgICB8IEFxdWEgLT4gMCwgMjU1LCAyNTVcbiAgICB8IEFxdWFtYXJpbmUgLT4gMTI3LCAyNTUsIDIxMlxuICAgIHwgQXp1cmUgLT4gMjQwLCAyNTUsIDI1NVxuICAgIHwgQmVpZ2UgLT4gMjQ1LCAyNDUsIDIyMFxuICAgIHwgQmlzcXVlIC0+IDI1NSwgMjI4LCAxOTZcbiAgICB8IEJsYWNrIC0+IDAsIDAsIDBcbiAgICB8IEJsYW5jaGVkYWxtb25kIC0+IDI1NSwgMjM1LCAyMDVcbiAgICB8IEJsdWUgLT4gMCwgMCwgMjU1XG4gICAgfCBCbHVldmlvbGV0IC0+IDEzOCwgNDMsIDIyNlxuICAgIHwgQnJvd24gLT4gMTY1LCA0MiwgNDJcbiAgICB8IEJ1cmx5d29vZCAtPiAyMjIsIDE4NCwgMTM1XG4gICAgfCBDYWRldGJsdWUgLT4gOTUsIDE1OCwgMTYwXG4gICAgfCBDaGFydHJldXNlIC0+IDEyNywgMjU1LCAwXG4gICAgfCBDaG9jb2xhdGUgLT4gMjEwLCAxMDUsIDMwXG4gICAgfCBDb3JhbCAtPiAyNTUsIDEyNywgODBcbiAgICB8IENvcm5mbG93ZXJibHVlIC0+IDEwMCwgMTQ5LCAyMzdcbiAgICB8IENvcm5zaWxrIC0+IDI1NSwgMjQ4LCAyMjBcbiAgICB8IENyaW1zb24gLT4gMjIwLCAyMCwgNjBcbiAgICB8IEN5YW4gLT4gMCwgMjU1LCAyNTVcbiAgICB8IERhcmtibHVlIC0+IDAsIDAsIDEzOVxuICAgIHwgRGFya2N5YW4gLT4gMCwgMTM5LCAxMzlcbiAgICB8IERhcmtnb2xkZW5yb2QgLT4gMTg0LCAxMzQsIDExXG4gICAgfCBEYXJrZ3JheSAtPiAxNjksIDE2OSwgMTY5XG4gICAgfCBEYXJrZ3JlZW4gLT4gMCwgMTAwLCAwXG4gICAgfCBEYXJrZ3JleSAtPiAxNjksIDE2OSwgMTY5XG4gICAgfCBEYXJra2hha2kgLT4gMTg5LCAxODMsIDEwN1xuICAgIHwgRGFya21hZ2VudGEgLT4gMTM5LCAwLCAxMzlcbiAgICB8IERhcmtvbGl2ZWdyZWVuIC0+IDg1LCAxMDcsIDQ3XG4gICAgfCBEYXJrb3JhbmdlIC0+IDI1NSwgMTQwLCAwXG4gICAgfCBEYXJrb3JjaGlkIC0+IDE1MywgNTAsIDIwNFxuICAgIHwgRGFya3JlZCAtPiAxMzksIDAsIDBcbiAgICB8IERhcmtzYWxtb24gLT4gMjMzLCAxNTAsIDEyMlxuICAgIHwgRGFya3NlYWdyZWVuIC0+IDE0MywgMTg4LCAxNDNcbiAgICB8IERhcmtzbGF0ZWJsdWUgLT4gNzIsIDYxLCAxMzlcbiAgICB8IERhcmtzbGF0ZWdyYXkgLT4gNDcsIDc5LCA3OVxuICAgIHwgRGFya3NsYXRlZ3JleSAtPiA0NywgNzksIDc5XG4gICAgfCBEYXJrdHVycXVvaXNlIC0+IDAsIDIwNiwgMjA5XG4gICAgfCBEYXJrdmlvbGV0IC0+IDE0OCwgMCwgMjExXG4gICAgfCBEZWVwcGluayAtPiAyNTUsIDIwLCAxNDdcbiAgICB8IERlZXBza3libHVlIC0+IDAsIDE5MSwgMjU1XG4gICAgfCBEaW1ncmF5IC0+IDEwNSwgMTA1LCAxMDVcbiAgICB8IERpbWdyZXkgLT4gMTA1LCAxMDUsIDEwNVxuICAgIHwgRG9kZ2VyYmx1ZSAtPiAzMCwgMTQ0LCAyNTVcbiAgICB8IEZpcmVicmljayAtPiAxNzgsIDM0LCAzNFxuICAgIHwgRmxvcmFsd2hpdGUgLT4gMjU1LCAyNTAsIDI0MFxuICAgIHwgRm9yZXN0Z3JlZW4gLT4gMzQsIDEzOSwgMzRcbiAgICB8IEZ1Y2hzaWEgLT4gMjU1LCAwLCAyNTVcbiAgICB8IEdhaW5zYm9ybyAtPiAyMjAsIDIyMCwgMjIwXG4gICAgfCBHaG9zdHdoaXRlIC0+IDI0OCwgMjQ4LCAyNTVcbiAgICB8IEdvbGQgLT4gMjU1LCAyMTUsIDBcbiAgICB8IEdvbGRlbnJvZCAtPiAyMTgsIDE2NSwgMzJcbiAgICB8IEdyYXkgLT4gMTI4LCAxMjgsIDEyOFxuICAgIHwgR3JlZW4gLT4gMCwgMTI4LCAwXG4gICAgfCBHcmVlbnllbGxvdyAtPiAxNzMsIDI1NSwgNDdcbiAgICB8IEdyZXkgLT4gMTI4LCAxMjgsIDEyOFxuICAgIHwgSG9uZXlkZXcgLT4gMjQwLCAyNTUsIDI0MFxuICAgIHwgSG90cGluayAtPiAyNTUsIDEwNSwgMTgwXG4gICAgfCBJbmRpYW5yZWQgLT4gMjA1LCA5MiwgOTJcbiAgICB8IEluZGlnbyAtPiA3NSwgMCwgMTMwXG4gICAgfCBJdm9yeSAtPiAyNTUsIDI1NSwgMjQwXG4gICAgfCBLaGFraSAtPiAyNDAsIDIzMCwgMTQwXG4gICAgfCBMYXZlbmRlciAtPiAyMzAsIDIzMCwgMjUwXG4gICAgfCBMYXZlbmRlcmJsdXNoIC0+IDI1NSwgMjQwLCAyNDVcbiAgICB8IExhd25ncmVlbiAtPiAxMjQsIDI1MiwgMFxuICAgIHwgTGVtb25jaGlmZm9uIC0+IDI1NSwgMjUwLCAyMDVcbiAgICB8IExpZ2h0Ymx1ZSAtPiAxNzMsIDIxNiwgMjMwXG4gICAgfCBMaWdodGNvcmFsIC0+IDI0MCwgMTI4LCAxMjhcbiAgICB8IExpZ2h0Y3lhbiAtPiAyMjQsIDI1NSwgMjU1XG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvdyAtPiAyNTAsIDI1MCwgMjEwXG4gICAgfCBMaWdodGdyYXkgLT4gMjExLCAyMTEsIDIxMVxuICAgIHwgTGlnaHRncmVlbiAtPiAxNDQsIDIzOCwgMTQ0XG4gICAgfCBMaWdodGdyZXkgLT4gMjExLCAyMTEsIDIxMVxuICAgIHwgTGlnaHRwaW5rIC0+IDI1NSwgMTgyLCAxOTNcbiAgICB8IExpZ2h0c2FsbW9uIC0+IDI1NSwgMTYwLCAxMjJcbiAgICB8IExpZ2h0c2VhZ3JlZW4gLT4gMzIsIDE3OCwgMTcwXG4gICAgfCBMaWdodHNreWJsdWUgLT4gMTM1LCAyMDYsIDI1MFxuICAgIHwgTGlnaHRzbGF0ZWdyYXkgLT4gMTE5LCAxMzYsIDE1M1xuICAgIHwgTGlnaHRzbGF0ZWdyZXkgLT4gMTE5LCAxMzYsIDE1M1xuICAgIHwgTGlnaHRzdGVlbGJsdWUgLT4gMTc2LCAxOTYsIDIyMlxuICAgIHwgTGlnaHR5ZWxsb3cgLT4gMjU1LCAyNTUsIDIyNFxuICAgIHwgTGltZSAtPiAwLCAyNTUsIDBcbiAgICB8IExpbWVncmVlbiAtPiA1MCwgMjA1LCA1MFxuICAgIHwgTGluZW4gLT4gMjUwLCAyNDAsIDIzMFxuICAgIHwgTWFnZW50YSAtPiAyNTUsIDAsIDI1NVxuICAgIHwgTWFyb29uIC0+IDEyOCwgMCwgMFxuICAgIHwgTWVkaXVtYXF1YW1hcmluZSAtPiAxMDIsIDIwNSwgMTcwXG4gICAgfCBNZWRpdW1ibHVlIC0+IDAsIDAsIDIwNVxuICAgIHwgTWVkaXVtb3JjaGlkIC0+IDE4NiwgODUsIDIxMVxuICAgIHwgTWVkaXVtcHVycGxlIC0+IDE0NywgMTEyLCAyMTlcbiAgICB8IE1lZGl1bXNlYWdyZWVuIC0+IDYwLCAxNzksIDExM1xuICAgIHwgTWVkaXVtc2xhdGVibHVlIC0+IDEyMywgMTA0LCAyMzhcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuIC0+IDAsIDI1MCwgMTU0XG4gICAgfCBNZWRpdW10dXJxdW9pc2UgLT4gNzIsIDIwOSwgMjA0XG4gICAgfCBNZWRpdW12aW9sZXRyZWQgLT4gMTk5LCAyMSwgMTMzXG4gICAgfCBNaWRuaWdodGJsdWUgLT4gMjUsIDI1LCAxMTJcbiAgICB8IE1pbnRjcmVhbSAtPiAyNDUsIDI1NSwgMjUwXG4gICAgfCBNaXN0eXJvc2UgLT4gMjU1LCAyMjgsIDIyNVxuICAgIHwgTW9jY2FzaW4gLT4gMjU1LCAyMjgsIDE4MVxuICAgIHwgTmF2YWpvd2hpdGUgLT4gMjU1LCAyMjIsIDE3M1xuICAgIHwgTmF2eSAtPiAwLCAwLCAxMjhcbiAgICB8IE9sZGxhY2UgLT4gMjUzLCAyNDUsIDIzMFxuICAgIHwgT2xpdmUgLT4gMTI4LCAxMjgsIDBcbiAgICB8IE9saXZlZHJhYiAtPiAxMDcsIDE0MiwgMzVcbiAgICB8IE9yYW5nZSAtPiAyNTUsIDE2NSwgMFxuICAgIHwgT3JhbmdlcmVkIC0+IDI1NSwgNjksIDBcbiAgICB8IE9yY2hpZCAtPiAyMTgsIDExMiwgMjE0XG4gICAgfCBQYWxlZ29sZGVucm9kIC0+IDIzOCwgMjMyLCAxNzBcbiAgICB8IFBhbGVncmVlbiAtPiAxNTIsIDI1MSwgMTUyXG4gICAgfCBQYWxldHVycXVvaXNlIC0+IDE3NSwgMjM4LCAyMzhcbiAgICB8IFBhbGV2aW9sZXRyZWQgLT4gMjE5LCAxMTIsIDE0N1xuICAgIHwgUGFwYXlhd2hpcCAtPiAyNTUsIDIzOSwgMjEzXG4gICAgfCBQZWFjaHB1ZmYgLT4gMjU1LCAyMTgsIDE4NVxuICAgIHwgUGVydSAtPiAyMDUsIDEzMywgNjNcbiAgICB8IFBpbmsgLT4gMjU1LCAxOTIsIDIwM1xuICAgIHwgUGx1bSAtPiAyMjEsIDE2MCwgMjIxXG4gICAgfCBQb3dkZXJibHVlIC0+IDE3NiwgMjI0LCAyMzBcbiAgICB8IFB1cnBsZSAtPiAxMjgsIDAsIDEyOFxuICAgIHwgUmVkIC0+IDI1NSwgMCwgMFxuICAgIHwgUm9zeWJyb3duIC0+IDE4OCwgMTQzLCAxNDNcbiAgICB8IFJveWFsYmx1ZSAtPiA2NSwgMTA1LCAyMjVcbiAgICB8IFNhZGRsZWJyb3duIC0+IDEzOSwgNjksIDE5XG4gICAgfCBTYWxtb24gLT4gMjUwLCAxMjgsIDExNFxuICAgIHwgU2FuZHlicm93biAtPiAyNDQsIDE2NCwgOTZcbiAgICB8IFNlYWdyZWVuIC0+IDQ2LCAxMzksIDg3XG4gICAgfCBTZWFzaGVsbCAtPiAyNTUsIDI0NSwgMjM4XG4gICAgfCBTaWVubmEgLT4gMTYwLCA4MiwgNDVcbiAgICB8IFNpbHZlciAtPiAxOTIsIDE5MiwgMTkyXG4gICAgfCBTa3libHVlIC0+IDEzNSwgMjA2LCAyMzVcbiAgICB8IFNsYXRlYmx1ZSAtPiAxMDYsIDkwLCAyMDVcbiAgICB8IFNsYXRlZ3JheSAtPiAxMTIsIDEyOCwgMTQ0XG4gICAgfCBTbGF0ZWdyZXkgLT4gMTEyLCAxMjgsIDE0NFxuICAgIHwgU25vdyAtPiAyNTUsIDI1MCwgMjUwXG4gICAgfCBTcHJpbmdncmVlbiAtPiAwLCAyNTUsIDEyN1xuICAgIHwgU3RlZWxibHVlIC0+IDcwLCAxMzAsIDE4MFxuICAgIHwgVGFuIC0+IDIxMCwgMTgwLCAxNDBcbiAgICB8IFRlYWwgLT4gMCwgMTI4LCAxMjhcbiAgICB8IFRoaXN0bGUgLT4gMjE2LCAxOTEsIDIxNlxuICAgIHwgVG9tYXRvIC0+IDI1NSwgOTksIDcxXG4gICAgfCBUdXJxdW9pc2UgLT4gNjQsIDIyNCwgMjA4XG4gICAgfCBWaW9sZXQgLT4gMjM4LCAxMzAsIDIzOFxuICAgIHwgV2hlYXQgLT4gMjQ1LCAyMjIsIDE3OVxuICAgIHwgV2hpdGUgLT4gMjU1LCAyNTUsIDI1NVxuICAgIHwgV2hpdGVzbW9rZSAtPiAyNDUsIDI0NSwgMjQ1XG4gICAgfCBZZWxsb3cgLT4gMjU1LCAyNTUsIDBcbiAgICB8IFllbGxvd2dyZWVuIC0+IDE1NCwgMjA1LCA1MFxuXG4gIHR5cGUgdCA9XG4gICAgfCBOYW1lIG9mIG5hbWVcbiAgICB8IFJHQiBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogUmVkLCBHcmVlbiBhbmQgQmx1ZSB2YWx1ZXMuIENsaXBwZWQgdG8gW1swLi4yNTVdXSBieSBtb3N0IChBbGw/KVxuICAgICAgICAgICAgYnJvd3NlcnMuICopXG4gICAgfCBSR0JfcGVyY2VudCBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogUkdCIGNoYW5uZWxzIGFyZSBzcGVjaWZpZWQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZWlyIG1heGltYWwgdmFsdWUuICopXG4gICAgfCBSR0JBIG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFNhbWUgYXMgUkdCIHdpdGggYWRkaXRpb25hbCB0cmFuc3BhcmVuY3kgYXJndW1lbnQuIE9wYWNpdHkgc2hvdWxkIGJlIGluXG4gICAgICAgICAgICBbMC5dIChjb21wbGV0ZWx5IHRyYW5zcGFyZW50KSBhbmQgWzEuXSAoY29tcGxldGVseSBvcGFxdWUpLiAqKVxuICAgIHwgUkdCQV9wZXJjZW50IG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFJHQiBjaGFubmVscyBzcGVjaWZpZWQgYXMgcGVyY2VudGFnZSBvZiB0aGVpciBtYXhpbWFsIHZhbHVlLiBBbHBoYVxuICAgICAgICAgICAgY2hhbm5lbCAob3BhY2l0eSkgaXMgc3RpbGwgYSBbMC5dIHRvIFsxLl0gZmxvYXQuICopXG4gICAgfCBIU0wgb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIEh1ZSwgU2F0dXJhdGlvbiBhbmQgTGlnaHRuZXNzIHZhbHVlcy4gSHVlIGlzIGFuIGFuZ2xlIGluIGRlZ3JlZSAoaW5cbiAgICAgICAgICAgIGludGVydmFsIFtbMC4uMzYwW10pLiBTYXR1cmF0aW9uIGlzIGEgcGVyY2VudGFnZSAoW1swLi4xMDBdXSkgd2l0aCBbMF1cbiAgICAgICAgICAgIGJlaW5nIGNvbG9ybGVzcy4gTGlnaHRuZXNzIGlzIGFsc28gYSBwZXJjZW50YWdlIChbWzAuLjEwMF1dKSB3aXRoIFswXVxuICAgICAgICAgICAgYmVpbmcgYmxhY2suICopXG4gICAgfCBIU0xBIG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFNhbWUgYXMgSFNMIHdpdGggYW4gb3BhY2l0eSBhcmd1bWVudCBiZXR3ZWVuIFswLl0gYW5kIFsxLl0uICopXG5cbiAgbGV0IHJnYiA/YSByIGcgYiA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBOb25lIC0+IFJHQiAociwgZywgYilcbiAgICB8IFNvbWUgYSAtPiBSR0JBIChyLCBnLCBiLCBhKVxuXG4gIGxldCBoc2wgP2EgaCBzIGwgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgTm9uZSAtPiBIU0wgKGgsIHMsIGwpXG4gICAgfCBTb21lIGEgLT4gSFNMQSAoaCwgcywgbCwgYSlcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgTmFtZSBuIC0+IHN0cmluZ19vZl9uYW1lIG5cbiAgICB8IFJHQiAociwgZywgYikgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2IoJWQsJWQsJWQpXCIgciBnIGJcbiAgICB8IFJHQl9wZXJjZW50IChyLCBnLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYiglZCUlLCVkJSUsJWQlJSlcIiByIGcgYlxuICAgIHwgUkdCQSAociwgZywgYiwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2JhKCVkLCVkLCVkLCVmKVwiIHIgZyBiIGFcbiAgICB8IFJHQkFfcGVyY2VudCAociwgZywgYiwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2JhKCVkJSUsJWQlJSwlZCUlLCVmKVwiIHIgZyBiIGFcbiAgICB8IEhTTCAoaCwgcywgbCkgLT4gUHJpbnRmLnNwcmludGYgXCJoc2woJWQsJWQlJSwlZCUlKVwiIGggcyBsXG4gICAgfCBIU0xBIChoLCBzLCBsLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcImhzbGEoJWQsJWQlJSwlZCUlLCVmKVwiIGggcyBsIGFcblxuICBsZXQgaGV4X29mX3JnYiAocmVkLCBncmVlbiwgYmx1ZSkgPVxuICAgIGxldCBpbl9yYW5nZSBpID1cbiAgICAgIGlmIGkgPCAwIHx8IGkgPiAyNTVcbiAgICAgIHRoZW4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHN0cmluZ19vZl9pbnQgaSBeIFwiIGlzIG91dCBvZiB2YWxpZCByYW5nZVwiKSlcbiAgICBpblxuICAgIGluX3JhbmdlIHJlZDtcbiAgICBpbl9yYW5nZSBncmVlbjtcbiAgICBpbl9yYW5nZSBibHVlO1xuICAgIFByaW50Zi5zcHJpbnRmIFwiIyUwMlglMDJYJTAyWFwiIHJlZCBncmVlbiBibHVlXG5cbiAgKCogT2NhbWwgPC0+IEpTIHJlcHJlc2VudGF0aW9uICopXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgKCogVE9ETz8gYmUgbW9yZSByZXN0cmljdGl2ZSwgY2xpcCB2YWx1ZXMgaW50byBzdGFuZGFyZCByYW5nZSAqKVxuICBsZXQganNfdF9vZl9qc19zdHJpbmcgcyA9XG4gICAgbGV0IHJnYl9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXnJnYlxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JfcGN0X3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiXFxcXChcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJVxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYmFfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JhXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JhX3BjdF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXnJnYmFcXFxcKFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IGhzbF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXmhzbFxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJVxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IGhzbGFfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5oc2xhXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgaWYgSnMudG9fYm9vbCAocmdiX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiYV9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYl9wY3RfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JhX3BjdF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKGhzbF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKGhzbGFfcmUjI3Rlc3QgcylcbiAgICB0aGVuIHNcbiAgICBlbHNlIGlmIExpc3QubWVtXG4gICAgICAgICAgICAgIChKcy50b19zdHJpbmcgcylcbiAgICAgICAgICAgICAgWyBcImFsaWNlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJhbnRpcXVld2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiYXF1YVwiXG4gICAgICAgICAgICAgIDsgXCJhcXVhbWFyaW5lXCJcbiAgICAgICAgICAgICAgOyBcImF6dXJlXCJcbiAgICAgICAgICAgICAgOyBcImJlaWdlXCJcbiAgICAgICAgICAgICAgOyBcImJpc3F1ZVwiXG4gICAgICAgICAgICAgIDsgXCJibGFja1wiXG4gICAgICAgICAgICAgIDsgXCJibGFuY2hlZGFsbW9uZFwiXG4gICAgICAgICAgICAgIDsgXCJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImJsdWV2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwiYnJvd25cIlxuICAgICAgICAgICAgICA7IFwiYnVybHl3b29kXCJcbiAgICAgICAgICAgICAgOyBcImNhZGV0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJjaGFydHJldXNlXCJcbiAgICAgICAgICAgICAgOyBcImNob2NvbGF0ZVwiXG4gICAgICAgICAgICAgIDsgXCJjb3JhbFwiXG4gICAgICAgICAgICAgIDsgXCJjb3JuZmxvd2VyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJjb3Juc2lsa1wiXG4gICAgICAgICAgICAgIDsgXCJjcmltc29uXCJcbiAgICAgICAgICAgICAgOyBcImN5YW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2JsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGFya2N5YW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2dvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyZXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya2toYWtpXCJcbiAgICAgICAgICAgICAgOyBcImRhcmttYWdlbnRhXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvbGl2ZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvcmFuZ2VcIlxuICAgICAgICAgICAgICA7IFwiZGFya29yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrcmVkXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwiZGFya3NlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmt0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwiZGFya3Zpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJkZWVwcGlua1wiXG4gICAgICAgICAgICAgIDsgXCJkZWVwc2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkaW1ncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRpbWdyZXlcIlxuICAgICAgICAgICAgICA7IFwiZG9kZ2VyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJmaXJlYnJpY2tcIlxuICAgICAgICAgICAgICA7IFwiZmxvcmFsd2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiZm9yZXN0Z3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZnVjaHNpYVwiXG4gICAgICAgICAgICAgIDsgXCJnYWluc2Jvcm9cIlxuICAgICAgICAgICAgICA7IFwiZ2hvc3R3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJnb2xkXCJcbiAgICAgICAgICAgICAgOyBcImdvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJncmF5XCJcbiAgICAgICAgICAgICAgOyBcImdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImdyZWVueWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImdyZXlcIlxuICAgICAgICAgICAgICA7IFwiaG9uZXlkZXdcIlxuICAgICAgICAgICAgICA7IFwiaG90cGlua1wiXG4gICAgICAgICAgICAgIDsgXCJpbmRpYW5yZWRcIlxuICAgICAgICAgICAgICA7IFwiaW5kaWdvXCJcbiAgICAgICAgICAgICAgOyBcIml2b3J5XCJcbiAgICAgICAgICAgICAgOyBcImtoYWtpXCJcbiAgICAgICAgICAgICAgOyBcImxhdmVuZGVyXCJcbiAgICAgICAgICAgICAgOyBcImxhdmVuZGVyYmx1c2hcIlxuICAgICAgICAgICAgICA7IFwibGF3bmdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxlbW9uY2hpZmZvblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRjb3JhbFwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGN5YW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmF5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmV5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0cGlua1wiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHN0ZWVsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJsaW1lXCJcbiAgICAgICAgICAgICAgOyBcImxpbWVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaW5lblwiXG4gICAgICAgICAgICAgIDsgXCJtYWdlbnRhXCJcbiAgICAgICAgICAgICAgOyBcIm1hcm9vblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1hcXVhbWFyaW5lXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtb3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXB1cnBsZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc3ByaW5nZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtdHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXZpb2xldHJlZFwiXG4gICAgICAgICAgICAgIDsgXCJtaWRuaWdodGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWludGNyZWFtXCJcbiAgICAgICAgICAgICAgOyBcIm1pc3R5cm9zZVwiXG4gICAgICAgICAgICAgIDsgXCJtb2NjYXNpblwiXG4gICAgICAgICAgICAgIDsgXCJuYXZham93aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJuYXZ5XCJcbiAgICAgICAgICAgICAgOyBcIm9sZGxhY2VcIlxuICAgICAgICAgICAgICA7IFwib2xpdmVcIlxuICAgICAgICAgICAgICA7IFwib2xpdmVkcmFiXCJcbiAgICAgICAgICAgICAgOyBcIm9yYW5nZVwiXG4gICAgICAgICAgICAgIDsgXCJvcmFuZ2VyZWRcIlxuICAgICAgICAgICAgICA7IFwib3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcInBhbGVnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwicGFsZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInBhbGV0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwicGFsZXZpb2xldHJlZFwiXG4gICAgICAgICAgICAgIDsgXCJwYXBheWF3aGlwXCJcbiAgICAgICAgICAgICAgOyBcInBlYWNocHVmZlwiXG4gICAgICAgICAgICAgIDsgXCJwZXJ1XCJcbiAgICAgICAgICAgICAgOyBcInBpbmtcIlxuICAgICAgICAgICAgICA7IFwicGx1bVwiXG4gICAgICAgICAgICAgIDsgXCJwb3dkZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcInB1cnBsZVwiXG4gICAgICAgICAgICAgIDsgXCJyZWRcIlxuICAgICAgICAgICAgICA7IFwicm9zeWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInJveWFsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzYWRkbGVicm93blwiXG4gICAgICAgICAgICAgIDsgXCJzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwic2FuZHlicm93blwiXG4gICAgICAgICAgICAgIDsgXCJzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJzZWFzaGVsbFwiXG4gICAgICAgICAgICAgIDsgXCJzaWVubmFcIlxuICAgICAgICAgICAgICA7IFwic2lsdmVyXCJcbiAgICAgICAgICAgICAgOyBcInNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwic25vd1wiXG4gICAgICAgICAgICAgIDsgXCJzcHJpbmdncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJzdGVlbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwidGFuXCJcbiAgICAgICAgICAgICAgOyBcInRlYWxcIlxuICAgICAgICAgICAgICA7IFwidGhpc3RsZVwiXG4gICAgICAgICAgICAgIDsgXCJ0b21hdG9cIlxuICAgICAgICAgICAgICA7IFwidHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcInZpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJ3aGVhdFwiXG4gICAgICAgICAgICAgIDsgXCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJ3aGl0ZXNtb2tlXCJcbiAgICAgICAgICAgICAgOyBcInllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJ5ZWxsb3dncmVlblwiXG4gICAgICAgICAgICAgIF1cbiAgICB0aGVuIHNcbiAgICBlbHNlIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChKcy50b19zdHJpbmcgcyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yXCIpKVxuXG4gIGxldCBuYW1lIGNuID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfbmFtZSBjbilcblxuICBsZXQganMgPSBmdW5jdGlvblxuICAgIHwgTmFtZSBuIC0+IG5hbWUgblxuICAgIHwgKFJHQiBfIHwgUkdCX3BlcmNlbnQgXyB8IFJHQkEgXyB8IFJHQkFfcGVyY2VudCBfIHwgSFNMIF8gfCBIU0xBIF8pIGFzIGMgLT5cbiAgICAgICAgSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCBjKVxuXG4gIGxldCBtbCBjID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyBjIGluXG4gICAgdHJ5IE5hbWUgKG5hbWVfb2Zfc3RyaW5nIHMpXG4gICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gKFxuICAgICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yXCIpKSBpblxuICAgICAgbGV0IHJlX3JnYiA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIocmdiYT8pXFxcXCgoPzooXFxcXGQqKSwoXFxcXGQqKSwoXFxcXGQqKSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IHJlX3JnYl9wY3QgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKHJnYmE/KVxcXFwoKD86KFxcXFxkKiklLChcXFxcZCopJSwoXFxcXGQqKSUoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCByZV9oc2wgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKGhzbGE/KVxcXFwoKD86KFxcXFxkKiksKFxcXFxkKiklLChcXFxcZCopJSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IGlfb2Zfc19vID0gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgfCBTb21lIGkgLT4gKFxuICAgICAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgaVxuICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgfCBGYWlsdXJlIHMgLT5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiY29sb3IgY29udmVyc2lvbiBlcnJvciAoXCIgXiBpIF4gXCIpOiBcIiBeIHMpKSlcbiAgICAgIGluXG4gICAgICBsZXQgZl9vZl9zIGYgPVxuICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgfCBGYWlsdXJlIHMgLT5cbiAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJjb2xvciBjb252ZXJzaW9uIGVycm9yIChcIiBeIGYgXiBcIik6IFwiIF4gcykpXG4gICAgICBpblxuICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9yZ2IgcyAwIHdpdGhcbiAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgIHwgU29tZSBcInJnYlwiIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBSR0IgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgIHwgU29tZSBcInJnYmFcIiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgfCBTb21lIGEgLT4gUkdCQSAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpKVxuICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX3JnYl9wY3QgcyAwIHdpdGhcbiAgICAgICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXCJyZ2JcIiAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gUkdCX3BlcmNlbnQgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgICAgICB8IFNvbWUgXCJyZ2JhXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAgICAgICAgICAgUkdCQV9wZXJjZW50IChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9oc2wgcyAwIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBTb21lIFwiaHNsXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IEhTTCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXCJoc2xhXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEhTTEEgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKSkpKVxuZW5kXG5cbm1vZHVsZSBMZW5ndGggPSBzdHJ1Y3RcbiAgKCogaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy12YWx1ZXMvI2xlbmd0aHMgKilcblxuICAoKiBUT0RPOlxuICAgICB7W1xuICAgICAgIHR5cGUganNfdCA9IHByaXZhdGUgSnMuc3RyaW5nIEpzLnRcbiAgICAgICB2YWwganNfdF9vZl90XG4gICAgICAgdmFsIHRfb2ZfanNfdFxuICAgICAgIHZhbCB0X29mX3N0cmluZ1xuICAgICBdfVxuICAqKVxuXG4gIHR5cGUgdCA9XG4gICAgfCBaZXJvXG4gICAgKCogcmVsYXRpdmUgKilcbiAgICB8IEVtIG9mIGZsb2F0XG4gICAgfCBFeCBvZiBmbG9hdFxuICAgIHwgUHggb2YgZmxvYXRcbiAgICB8IEdkIG9mIGZsb2F0XG4gICAgfCBSZW0gb2YgZmxvYXRcbiAgICB8IFZ3IG9mIGZsb2F0XG4gICAgfCBWaCBvZiBmbG9hdFxuICAgIHwgVm0gb2YgZmxvYXRcbiAgICB8IENoIG9mIGZsb2F0XG4gICAgKCogYWJzb2x1dGUgKilcbiAgICB8IE1tIG9mIGZsb2F0XG4gICAgfCBDbSBvZiBmbG9hdFxuICAgIHwgSW4gb2YgZmxvYXRcbiAgICB8IFB0IG9mIGZsb2F0XG4gICAgfCBQYyBvZiBmbG9hdFxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBaZXJvIC0+IFwiMFwiXG4gICAgfCBFbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJlbVwiXG4gICAgfCBFeCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJleFwiXG4gICAgfCBQeCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJweFwiXG4gICAgfCBHZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJnZFwiXG4gICAgfCBSZW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicmVtXCJcbiAgICB8IFZ3IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZ3XCJcbiAgICB8IFZoIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZoXCJcbiAgICB8IFZtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZtXCJcbiAgICB8IENoIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImNoXCJcbiAgICB8IE1tIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcIm1tXCJcbiAgICB8IENtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImNtXCJcbiAgICB8IEluIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImluXCJcbiAgICB8IFB0IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInB0XCJcbiAgICB8IFBjIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInBjXCJcblxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBqcyB0ID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCB0KVxuXG4gIGxldCBtbCB0ID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyB0IGluXG4gICAgaWYgU3RyaW5nLmVxdWFsIHMgXCIwXCJcbiAgICB0aGVuIFplcm9cbiAgICBlbHNlXG4gICAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgbGVuZ3RoXCIpKSBpblxuICAgICAgbGV0IHJlID0gUmVnZXhwLnJlZ2V4cCBcIl4oXFxcXGQqKD86XFxcXC5cXFxcZCopPylcXFxccyooXFxcXFMqKSRcIiBpblxuICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZSBzIDAgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwibGVuZ3RoIGNvbnZlcnNpb24gZXJyb3I6IFwiIF4gcykpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgIHwgU29tZSBcImVtXCIgLT4gRW0gZlxuICAgICAgICAgIHwgU29tZSBcImV4XCIgLT4gRXggZlxuICAgICAgICAgIHwgU29tZSBcInB4XCIgLT4gUHggZlxuICAgICAgICAgIHwgU29tZSBcImdkXCIgLT4gR2QgZlxuICAgICAgICAgIHwgU29tZSBcInJlbVwiIC0+IFJlbSBmXG4gICAgICAgICAgfCBTb21lIFwidndcIiAtPiBWdyBmXG4gICAgICAgICAgfCBTb21lIFwidmhcIiAtPiBWaCBmXG4gICAgICAgICAgfCBTb21lIFwidm1cIiAtPiBWbSBmXG4gICAgICAgICAgfCBTb21lIFwiY2hcIiAtPiBDaCBmXG4gICAgICAgICAgfCBTb21lIFwibW1cIiAtPiBNbSBmXG4gICAgICAgICAgfCBTb21lIFwiY21cIiAtPiBDbSBmXG4gICAgICAgICAgfCBTb21lIFwiaW5cIiAtPiBJbiBmXG4gICAgICAgICAgfCBTb21lIFwicHRcIiAtPiBQdCBmXG4gICAgICAgICAgfCBTb21lIFwicGNcIiAtPiBQYyBmXG4gICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKSlcbmVuZFxuXG5tb2R1bGUgQW5nbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IERlZyBvZiBmbG9hdFxuICAgIHwgR3JhZCBvZiBmbG9hdFxuICAgIHwgUmFkIG9mIGZsb2F0XG4gICAgfCBUdXJucyBvZiBmbG9hdFxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBEZWcgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZGVnXCJcbiAgICB8IEdyYWQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZ3JhZFwiXG4gICAgfCBSYWQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicmFkXCJcbiAgICB8IFR1cm5zIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInR1cm5zXCJcblxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBqcyB0ID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCB0KVxuXG4gIGxldCBtbCBqID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyBqIGluXG4gICAgbGV0IHJlID0gUmVnZXhwLnJlZ2V4cCBcIl4oXFxcXGQqKD86XFxcXC5cXFxcZCopKShkZWd8Z3JhZHxyYWR8dHVybnMpJFwiIGluXG4gICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGxlbmd0aFwiKSkgaW5cbiAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlIHMgMCB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgLT5cbiAgICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJsZW5ndGggY29udmVyc2lvbiBlcnJvcjogXCIgXiBzKSkpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiB3aXRoXG4gICAgICAgIHwgU29tZSBcImRlZ1wiIC0+IERlZyBmXG4gICAgICAgIHwgU29tZSBcImdyYWRcIiAtPiBHcmFkIGZcbiAgICAgICAgfCBTb21lIFwicmFkXCIgLT4gUmFkIGZcbiAgICAgICAgfCBTb21lIFwidHVybnNcIiAtPiBUdXJucyBmXG4gICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxuKCoqIEphdmFzY3JpcHQgZXZlbnRzLiAqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBUeXAgPSBEb21faHRtbC5FdmVudFxuXG50eXBlIGxpc3RlbmVyID0gRG9tX2h0bWwuZXZlbnRfbGlzdGVuZXJfaWRcblxubGV0IGxpc3RlbiA/KGNhcHR1cmUgPSBmYWxzZSkgdGFyZ2V0IHR5cCBjYiA9XG4gIERvbV9odG1sLmFkZEV2ZW50TGlzdGVuZXJcbiAgICB0YXJnZXRcbiAgICB0eXBcbiAgICAoRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gbiBlIC0+IEpzLmJvb2wgKGNiIG4gZSkpKVxuICAgIChKcy5ib29sIGNhcHR1cmUpXG5cbmxldCBzdG9wX2xpc3RlbiA9IERvbV9odG1sLnJlbW92ZUV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb25cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmxldCB4bWxucyA9IEpzLnN0cmluZyBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcblxuKCogdHJhbnNsYXRlIHNwZWMgZnJvbSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvaWRsLmh0bWwgKilcbigqIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9zdHJ1Y3QuaHRtbCAqKVxuXG50eXBlIGVycm9yX2NvZGUgPVxuICB8IFdST05HX1RZUEVfRVJSXG4gIHwgSU5WQUxJRF9WQUxVRV9FUlJcbiAgfCBNQVRSSVhfTk9UX0lOVkVSVEFCTEVcblxuY2xhc3MgdHlwZSBzdmdfZXJyb3IgPSBvYmplY3RcbiAgaW5oZXJpdCBKcy5lcnJvclxuXG4gIG1ldGhvZCBjb2RlIDogZXJyb3JfY29kZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5leGNlcHRpb24gU1ZHRXJyb3Igb2Ygc3ZnX2Vycm9yXG5cbnR5cGUgbGVuZ3RoVW5pdFR5cGUgPVxuICB8IExFTkdUSFRZUEVfVU5LTk9XTlxuICB8IExFTkdUSFRZUEVfTlVNQkVSXG4gIHwgTEVOR1RIVFlQRV9QRVJDRU5UQUdFXG4gIHwgTEVOR1RIVFlQRV9FTVNcbiAgfCBMRU5HVEhUWVBFX0VYU1xuICB8IExFTkdUSFRZUEVfUFhcbiAgfCBMRU5HVEhUWVBFX0NNXG4gIHwgTEVOR1RIVFlQRV9NTVxuICB8IExFTkdUSFRZUEVfSU5cbiAgfCBMRU5HVEhUWVBFX1BUXG4gIHwgTEVOR1RIVFlQRV9QQ1xuXG50eXBlIGFuZ2xlVW5pdFR5cGUgPVxuICB8IEFOR0xFVFlQRV9VTktOT1dOXG4gIHwgQU5HTEVUWVBFX1VOU1BFQ0lGSUVEXG4gIHwgQU5HTEVUWVBFX0RFR1xuICB8IEFOR0xFVFlQRV9SQURcbiAgfCBBTkdMRVRZUEVfR1JBRFxuXG50eXBlIGNvbG9yVHlwZSA9XG4gIHwgQ09MT1JUWVBFX1VOS05PV05cbiAgfCBDT0xPUlRZUEVfUkdCQ09MT1JcbiAgfCBDT0xPUlRZUEVfUkdCQ09MT1JfSUNDQ09MT1JcbiAgfCBDT0xPUlRZUEVfQ1VSUkVOVENPTE9SXG5cbnR5cGUgYWxpZ25tZW50VHlwZSA9XG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19VTktOT1dOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1BWFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNQVhcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYXG5cbnR5cGUgbWVldE9yU2xpY2VUeXBlID1cbiAgfCBNRUVUT1JTTElDRV9VTktOT1dOXG4gIHwgTUVFVE9SU0xJQ0VfTUVFVFxuICB8IE1FRVRPUlNMSUNFX1NMSUNFXG5cbnR5cGUgdHJhbnNmb3JtVHlwZSA9XG4gIHwgVFJBTlNGT1JNX1VOS05PV05cbiAgfCBUUkFOU0ZPUk1fTUFUUklYXG4gIHwgVFJBTlNGT1JNX1RSQU5TTEFURVxuICB8IFRSQU5TRk9STV9TQ0FMRVxuICB8IFRSQU5TRk9STV9ST1RBVEVcbiAgfCBUUkFOU0ZPUk1fU0tFV1hcbiAgfCBUUkFOU0ZPUk1fU0tFV1lcblxudHlwZSB6b29tQW5kUGFuVHlwZSA9XG4gIHwgWk9PTUFORFBBTl9VTktOT1dOXG4gIHwgWk9PTUFORFBBTl9ESVNBQkxFXG4gIHwgWk9PTUFORFBBTl9NQUdOSUZZXG5cbnR5cGUgbGVuZ3RoQWRqdXN0ID1cbiAgfCBMRU5HVEhBREpVU1RfVU5LTk9XTlxuICB8IExFTkdUSEFESlVTVF9TUEFDSU5HXG4gIHwgTEVOR1RIQURKVVNUX1NQQUNJTkdBTkRHTFlQSFNcblxudHlwZSB1bml0VHlwZSA9XG4gIHwgVU5JVF9UWVBFX1VOS05PV05cbiAgfCBVTklUX1RZUEVfVVNFUlNQQUNFT05VU0VcbiAgfCBVTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1hcblxuKCogaW50ZXJmYWNlIFNWR1JlbmRlcmluZ0ludGVudCAqKVxudHlwZSBpbnRlbnRUeXBlID1cbiAgfCBSRU5ERVJJTkdfSU5URU5UX1VOS05PV05cbiAgfCBSRU5ERVJJTkdfSU5URU5UX0FVVE9cbiAgfCBSRU5ERVJJTkdfSU5URU5UX1BFUkNFUFRVQUxcbiAgfCBSRU5ERVJJTkdfSU5URU5UX1JFTEFUSVZFX0NPTE9SSU1FVFJJQ1xuICB8IFJFTkRFUklOR19JTlRFTlRfU0FUVVJBVElPTlxuICB8IFJFTkRFUklOR19JTlRFTlRfQUJTT0xVVEVfQ09MT1JJTUVUUklDXG5cbigqIFBhdGggU2VnbWVudCBUeXBlcyAqKVxudHlwZSBwYXRoU2VnbWVudFR5cGUgPVxuICB8IFBBVEhTRUdfVU5LTk9XTlxuICB8IFBBVEhTRUdfQ0xPU0VQQVRIXG4gIHwgUEFUSFNFR19NT1ZFVE9fQUJTXG4gIHwgUEFUSFNFR19NT1ZFVE9fUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfUkVMXG4gIHwgUEFUSFNFR19BUkNfQUJTXG4gIHwgUEFUSFNFR19BUkNfUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9SRUxcblxuKCogdGV4dFBhdGggTWV0aG9kIFR5cGVzICopXG50eXBlIHRleHRQYXRoTWV0aG9kVHlwZSA9XG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9VTktOT1dOXG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTlxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfU1RSRVRDSFxuXG4oKiB0ZXh0UGF0aCBTcGFjaW5nIFR5cGVzICopXG50eXBlIHRleHRQYXRoU3BhY2luZ1R5cGUgPVxuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX1VOS05PV05cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9BVVRPXG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1RcblxuKCogU3ByZWFkIE1ldGhvZCBUeXBlcyAqKVxudHlwZSBzcHJlYWRNZXRob2RUeXBlID1cbiAgfCBTUFJFQURNRVRIT0RfVU5LTk9XTlxuICB8IFNQUkVBRE1FVEhPRF9QQURcbiAgfCBTUFJFQURNRVRIT0RfUkVGTEVDVFxuICB8IFNQUkVBRE1FVEhPRF9SRVBFQVRcblxudHlwZSBzdXNwZW5kSGFuZGxlSURcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgWydhXSBhbmltYXRlZCA9IG9iamVjdFxuICBtZXRob2QgYmFzZVZhbCA6ICdhIHByb3BcblxuICBtZXRob2QgYW5pbVZhbCA6ICdhIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gbGlzdCA9IG9iamVjdFxuICBtZXRob2QgbnVtYmVyT2ZJdGVtcyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsZWFyIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluaXRpYWxpemUgOiAnYSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldEl0ZW0gOiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnRJdGVtQmVmb3JlIDogJ2EgLT4gaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVwbGFjZUl0ZW0gOiAnYSAtPiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVJdGVtIDogaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgYXBwZW5kSXRlbSA6ICdhIC0+ICdhIG1ldGhcbmVuZFxuXG4oKioqKilcblxuKCogaW50ZXJmYWNlIFNWR0VsZW1lbnQgKilcbmNsYXNzIHR5cGUgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbS5lbGVtZW50XG5cbiAgbWV0aG9kIGlkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4bWxiYXNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvd25lclNWR0VsZW1lbnQgOiBzdmdFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFN0cmluZyAqKVxuYW5kIGFuaW1hdGVkU3RyaW5nID0gW2pzX3N0cmluZyB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRCb29sZWFuICopXG5hbmQgYW5pbWF0ZWRCb29sZWFuID0gW2Jvb2wgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1N0cmluZ0xpc3QgKilcbmFuZCBzdHJpbmdMaXN0ID0gW2pzX3N0cmluZyB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uICopXG5hbmQgYW5pbWF0ZWRFbnVtZXJhdGlvbiA9IFtpbnQgKCpzaG9ydCopXSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRJbnRlZ2VyICopXG5hbmQgYW5pbWF0ZWRJbnRlZ2VyID0gW2ludF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTnVtYmVyICopXG5hbmQgYW5pbWF0ZWROdW1iZXIgPSBbbnVtYmVyX3RdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdOdW1iZXJMaXN0ICopXG5hbmQgbnVtYmVyTGlzdCA9IFtudW1iZXIgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0ICopXG5hbmQgYW5pbWF0ZWROdW1iZXJMaXN0ID0gW251bWJlckxpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0xlbmd0aCAqKVxuYW5kIGxlbmd0aCA9IG9iamVjdFxuICBtZXRob2QgdW5pdFR5cGUgOiBsZW5ndGhVbml0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlQXNTdHJpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMgOiBsZW5ndGhVbml0VHlwZSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udmVydFRvU3BlY2lmaWVkVW5pdHMgOiBsZW5ndGhVbml0VHlwZSAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRMZW5ndGggKilcbmFuZCBhbmltYXRlZExlbmd0aCA9IFtsZW5ndGggdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0xlbmd0aExpc3QgKilcbmFuZCBsZW5ndGhMaXN0ID0gW2xlbmd0aCB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZExlbmd0aExpc3QgKilcbmFuZCBhbmltYXRlZExlbmd0aExpc3QgPSBbbGVuZ3RoTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5nbGUgKilcbmFuZCBhbmdsZSA9IG9iamVjdFxuICBtZXRob2QgdW5pdFR5cGUgOiBhbmdsZVVuaXRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlSW5TcGVjaWZpZWRVbml0cyA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVBc1N0cmluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyA6IGFuZ2xlVW5pdFR5cGUgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzIDogYW5nbGVVbml0VHlwZSAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRBbmdsZSAqKVxuYW5kIGFuaW1hdGVkQW5nbGUgPSBbYW5nbGUgdF0gYW5pbWF0ZWRcblxuKCogWFhYWFggTW92ZSBpdCAqKVxuYW5kIHJnYkNvbG9yID0gb2JqZWN0IGVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3IgKilcbmFuZCBjb2xvciA9IG9iamVjdFxuICAoKiBYWFggaW5oZXJpdCBjc3NWYWx1ZSAqKVxuICBtZXRob2QgY29sb3JUeXBlIDogY29sb3JUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmdiQ29sb3IgOiByZ2JDb2xvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaWNjQ29sb3IgOiBpY2NDb2xvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0UkdCQ29sb3IgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0UkdCQ29sb3JJQ0NDb2xvciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRDb2xvciA6IGNvbG9yVHlwZSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSUNDQ29sb3IgKilcbmFuZCBpY2NDb2xvciA9IG9iamVjdFxuICBtZXRob2QgY29sb3JQcm9maWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xvcnMgOiBudW1iZXJMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSZWN0ICopXG5hbmQgcmVjdCA9IG9iamVjdFxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRSZWN0ICopXG5hbmQgYW5pbWF0ZWRSZWN0ID0gW3JlY3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1N0eWxhYmxlICopXG5hbmQgc3R5bGFibGUgPSBvYmplY3RcbiAgbWV0aG9kIGNsYXNzTmFtZSA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHlsZSA6IERvbV9odG1sLmNzc1N0eWxlRGVjbGFyYXRpb24gdCByZWFkb25seV9wcm9wXG4gICgqICAgQ1NTVmFsdWUgZ2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lKTsgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTG9jYXRhYmxlICopXG5hbmQgbG9jYXRhYmxlID0gb2JqZWN0XG4gIG1ldGhvZCBuZWFyZXN0Vmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRCQm94IDogcmVjdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q1RNIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTY3JlZW5DVE0gOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRyYW5zZm9ybVRvRWxlbWVudCA6IGVsZW1lbnQgdCAtPiBtYXRyaXggdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybWFibGUgKilcbmFuZCB0cmFuc2Zvcm1hYmxlID0gb2JqZWN0XG4gIGluaGVyaXQgbG9jYXRhYmxlXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGVzdHMgKilcbmFuZCB0ZXN0cyA9IG9iamVjdFxuICBtZXRob2QgcmVxdWlyZWRGZWF0dXJlcyA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlcXVpcmVkRXh0ZW5zaW9ucyA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN5c3RlbUxhbmd1YWdlIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGFzRXh0ZW5zaW9uIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGFuZ1NwYWNlICopXG5hbmQgbGFuZ1NwYWNlID0gb2JqZWN0XG4gIG1ldGhvZCB4bWxsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4bWxzcGFjZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCAqKVxuYW5kIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgPSBvYmplY3RcbiAgbWV0aG9kIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgOiBhbmltYXRlZEJvb2xlYW4gdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpdFRvVmlld0JveCAqKVxuYW5kIGZpdFRvVmlld0JveCA9IG9iamVjdFxuICBtZXRob2Qgdmlld0JveCA6IGFuaW1hdGVkUmVjdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc2VydmVBc3BlY3RSYXRpbyA6IGFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHWm9vbUFuZFBhbiAqKVxuYW5kIHpvb21BbmRQYW4gPSBvYmplY3RcbiAgbWV0aG9kIHpvb21BbmRQYW4gOiB6b29tQW5kUGFuVHlwZSBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1ZpZXdTcGVjICopXG5hbmQgdmlld1NwZWMgPSBvYmplY3RcbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBtZXRob2QgdHJhbnNmb3JtIDogdHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld1RhcmdldCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdCb3hTdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlQXNwZWN0UmF0aW9TdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRyYW5zZm9ybVN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld1RhcmdldFN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVVJJUmVmZXJlbmNlICopXG5hbmQgdXJpUmVmZXJlbmNlID0gb2JqZWN0XG4gIG1ldGhvZCBocmVmIDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NTU1J1bGUgOiBDU1NSdWxlICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENPTE9SX1BST0ZJTEVfUlVMRSA9IDc7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRG9jdW1lbnQgKilcbmFuZCBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZG9jdW1lbnRcblxuICAoKlhYWCBpbmhlcml0IGRvY3VtZW50RXZlbnQgKilcbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWZlcnJlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZG9tYWluIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290RWxlbWVudCA6IHN2Z0VsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuICAoKiByb290RWxlbWVudCB3aWxsIGJlIG51bGwgb3IgdW5kZWZpbmVkIGluIGFuIGh0bWwgY29udGV4dCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTVkdFbGVtZW50ICopXG5hbmQgc3ZnRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBsb2NhdGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gICgqWFhYIGluaGVyaXQgZG9jdW1lbnRldmVudCwgdmlld2NzcywgZG9jdW1lbnRjc3MgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFNjcmlwdFR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRTdHlsZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZpZXdwb3J0IDogcmVjdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGl4ZWxVbml0VG9NaWxsaW1ldGVyWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGl4ZWxVbml0VG9NaWxsaW1ldGVyWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuUGl4ZWxVbml0VG9NaWxsaW1ldGVyWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuUGl4ZWxVbml0VG9NaWxsaW1ldGVyWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlQ3VycmVudFZpZXcgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VmlldyA6IHZpZXdTcGVjIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50U2NhbGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUcmFuc2xhdGUgOiBwb2ludCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VzcGVuZFJlZHJhdyA6IGludCAtPiBzdXNwZW5kSGFuZGxlSUQgbWV0aFxuXG4gIG1ldGhvZCB1bnN1c3BlbmRSZWRyYXcgOiBzdXNwZW5kSGFuZGxlSUQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuc3VzcGVuZFJlZHJhd0FsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb3JjZVJlZHJhdyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwYXVzZUFuaW1hdGlvbnMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5wYXVzZUFuaW1hdGlvbnMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYW5pbWF0aW9uc1BhdXNlZCA6IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEN1cnJlbnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRDdXJyZW50VGltZSA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0SW50ZXJzZWN0aW9uTGlzdCA6IHJlY3QgdCAtPiBlbGVtZW50IHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVuY2xvc3VyZUxpc3QgOiByZWN0IHQgLT4gZWxlbWVudCB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBjaGVja0ludGVyc2VjdGlvbiA6IGVsZW1lbnQgdCAtPiByZWN0IHQgLT4gYm9vbCB0XG5cbiAgbWV0aG9kIGNoZWNrRW5jbG9zdXJlIDogZWxlbWVudCB0IC0+IHJlY3QgdCAtPiBib29sIHRcblxuICBtZXRob2QgZGVzZWxlY3RBbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTnVtYmVyIDogbnVtYmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdMZW5ndGggOiBsZW5ndGggdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR0FuZ2xlIDogYW5nbGUgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BvaW50IDogcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR01hdHJpeCA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUmVjdCA6IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybSA6IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCA6IG1hdHJpeCB0IC0+IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudEJ5SWQgOiBqc19zdHJpbmcgdCAtPiBEb20uZWxlbWVudCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHR0VsZW1lbnQgKilcbmFuZCBnRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdEZWZzRWxlbWVudCAqKVxuYW5kIGRlZnNFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbiAgKCogWFhYWFhYWCA/IGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRGVzY0VsZW1lbnQgKilcbmFuZCBkZXNjRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcbiAgKCogWFhYWFhYWCA/IGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGl0bGVFbGVtZW50ICopXG5hbmQgdGl0bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTeW1ib2xFbGVtZW50ICopXG5hbmQgc3ltYm9sRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVXNlRWxlbWVudCAqKVxuYW5kIHVzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5zdGFuY2VSb290IDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZEluc3RhbmNlUm9vdCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZWxlbWVudEluc3RhbmNlID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgY29ycmVzcG9uZGluZ0VsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb3JyZXNwb25kaW5nVXNlRWxlbWVudCA6IHVzZUVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudE5vZGUgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoaWxkTm9kZXMgOiBlbGVtZW50SW5zdGFuY2VMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaXJzdENoaWxkIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0Q2hpbGQgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0VsZW1lbnRJbnN0YW5jZUxpc3QgKilcbmFuZCBlbGVtZW50SW5zdGFuY2VMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGVsZW1lbnRJbnN0YW5jZSB0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ltYWdlRWxlbWVudCAqKVxuYW5kIGltYWdlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuICAoKiByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmVuZFxuXG5hbmQgc3dpdGNoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5lbmRcblxuKCogWFhYIGRlcHJlY2F0ZWQgPT4gaW50ZXJmYWNlIEdldFNWR0RvY3VtZW50ID0+IFNWR0RvY3VtZW50IGdldFNWR0RvY3VtZW50KCkgKilcblxuKCogaW50ZXJmYWNlIFNWR1N0eWxlRWxlbWVudCAqKVxuYW5kIHN0eWxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIG1ldGhvZCB0eXBlXyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2ludCAqKVxuYW5kIHBvaW50ID0gb2JqZWN0XG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXRyaXhUcmFuc2Zvcm0gOiBtYXRyaXggdCAtPiBwb2ludCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9pbnRMaXN0ICopXG5hbmQgcG9pbnRMaXN0ID0gW3BvaW50IHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR01hdHJpeCAqKVxuYW5kIG1hdHJpeCA9IG9iamVjdFxuICBtZXRob2QgYSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbXVsdGlwbHkgOiBtYXRyaXggdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGludmVyc2UgOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2NhbGUgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlTm9uVW5pZm9ybSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGVGcm9tVmVjdG9yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBmbGlwWCA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZmxpcFkgOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNrZXdYIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBza2V3WSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtICopXG5hbmQgdHJhbnNmb3JtID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IHRyYW5zZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXRyaXggOiBtYXRyaXggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuZ2xlIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRNYXRyaXggOiBtYXRyaXggdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNjYWxlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJvdGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTa2V3WCA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTa2V3WSA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm1MaXN0ICopXG5hbmQgdHJhbnNmb3JtTGlzdCA9IG9iamVjdFxuICBpbmhlcml0IFt0cmFuc2Zvcm0gdF0gbGlzdFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4IDogbWF0cml4IC0+IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgY29uc29saWRhdGUgOiB0cmFuc2Zvcm0gdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCAqKVxuYW5kIGFuaW1hdGVkVHJhbnNmb3JtTGlzdCA9IFt0cmFuc2Zvcm1MaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5hbmQgcHJlc2VydmVBc3BlY3RSYXRpbyA9IG9iamVjdFxuICBtZXRob2QgYWxpZ24gOiBhbGlnbm1lbnRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWVldE9yU2xpY2UgOiBtZWV0T3JTbGljZVR5cGUgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmFuZCBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gPSBbcHJlc2VydmVBc3BlY3RSYXRpbyB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZyAqKVxuYW5kIHBhdGhTZWcgPSBvYmplY3RcbiAgbWV0aG9kIHBhdGhTZWdUeXBlIDogcGF0aFNlZ21lbnRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGF0aFNlZ1R5cGVBc0xldHRlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0Nsb3NlUGF0aCAqKVxuYW5kIHBhdGhTZWdDbG9zZVBhdGggPSBwYXRoU2VnXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTW92ZXRvQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ01vdmV0b1JlbCAqKVxuYW5kIHBhdGhTZWdNb3ZldG8gPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9BYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0byA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwgKilcbmFuZCBwYXRoU2VnQ3VydmV0b0N1YmljID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MiA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbCAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTEgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdBcmNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQXJjUmVsKilcbmFuZCBwYXRoU2VnQXJjID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCByMSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcjIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGFuZ2xlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBsYXJnZUFyY0ZsYWcgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzd2VlcEZsYWcgOiBib29sIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvVmVydGljYWwgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuZW5kXG5cbmFuZCBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHgyIDogbnVtYmVyX3RcblxuICBtZXRob2QgeTIgOiBudW1iZXJfdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsICAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5lbmRcblxuYW5kIHBhdGhTZWdMaXN0ID0gW3BhdGhTZWcgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQYXRoRGF0YSAqKVxuYW5kIGFuaW1hdGVkUGF0aERhdGEgPSBvYmplY3RcbiAgbWV0aG9kIHBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIG5vcm1hbGl6ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkTm9ybWFsaXplZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhFbGVtZW50ICopXG5hbmQgcGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQYXRoRGF0YVxuXG4gIG1ldGhvZCBwYXRoTGVuZ3RoIDogYW5pbWF0ZWROdW1iZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFRvdGFsTGVuZ3RoIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRQb2ludEF0TGVuZ3RoIDogbnVtYmVyX3QgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBhdGhTZWdBdExlbmd0aCA6IG51bWJlcl90IC0+IGludFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ2xvc2VQYXRoIDogcGF0aFNlZ0Nsb3NlUGF0aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9BYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTW92ZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b1JlbCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdNb3ZldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvQWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9SZWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gcGF0aFNlZ0N1cnZldG9DdWJpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQXJjQWJzIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gcGF0aFNlZ0FyYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdBcmNSZWwgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBwYXRoU2VnQXJjIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvVmVydGljYWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvVmVydGljYWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JlY3RFbGVtZW50ICopXG5hbmQgcmVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NpcmNsZUVsZW1lbnQgKilcbmFuZCBjaXJjbGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgciA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFbGxpcHNlRWxlbWVudCAqKVxuYW5kIGVsbGlwc2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGluZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgbGluZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgeDEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeDIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQb2ludHMgKilcbmFuZCBhbmltYXRlZFBvaW50cyA9IG9iamVjdFxuICBtZXRob2QgcG9pbnRzIDogcG9pbnRMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZHBvaW50cyA6IHBvaW50TGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9seWxpbmVFbGVtZW50ICopXG5hbmQgcG9seUxpbmVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUG9pbnRzXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvbHlnb25FbGVtZW50ICopXG5hbmQgcG9seWdvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQb2ludHNcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dENvbnRlbnRFbGVtZW50ICopXG5hbmQgdGV4dENvbnRlbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHRleHRMZW5ndGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoQWRqdXN0IDogbGVuZ3RoQWRqdXN0IGFuaW1hdGVkIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXROdW1iZXJPZkNoYXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTdWJTdHJpbmdMZW5ndGggOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhciA6IGludCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RW5kUG9zaXRpb25PZkNoYXIgOiBpbnQgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEV4dGVudE9mQ2hhciA6IGludCAtPiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRSb3RhdGlvbk9mQ2hhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldENoYXJOdW1BdFBvc2l0aW9uIDogcG9pbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0U3ViU3RyaW5nIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCAqKVxuYW5kIHRleHRQb3NpdGlvbmluZ0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0Q29udGVudEVsZW1lbnRcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHggOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR5IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb3RhdGUgOiBhbmltYXRlZE51bWJlckxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRFbGVtZW50ICopXG5hbmQgdGV4dEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5lbmRcblxuYW5kIHRzcGFuRWxlbWVudCA9IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuYW5kIHRyZWZFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRQYXRoRWxlbWVudCAqKVxuYW5kIHRleHRQYXRoRWxlbWVudE1ldGhvZCA9IFt0ZXh0UGF0aE1ldGhvZFR5cGVdIGFuaW1hdGVkXG5cbmFuZCB0ZXh0UGF0aEVsZW1lbnRTcGFjaW5nID0gW3RleHRQYXRoU3BhY2luZ1R5cGVdIGFuaW1hdGVkXG5cbmFuZCB0ZXh0UGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0Q29udGVudEVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIG1ldGhvZCBzdGFydE9mZnNldCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRob2RfIDogdGV4dFBhdGhFbGVtZW50TWV0aG9kIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BhY2luZyA6IHRleHRQYXRoRWxlbWVudFNwYWNpbmcgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaEVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBtZXRob2QgZ2x5cGhSZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm1hdCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhEZWZFbGVtZW50ICopXG5hbmQgYWx0R2x5cGhEZWZFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhJdGVtRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoSXRlbUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdHbHlwaFJlZkVsZW1lbnQgKilcbmFuZCBnbHlwaFJlZkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgbWV0aG9kIGdseXBoUmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGFpbnQgOiBTVkdDb2xvciB7ICopXG5cbigqICAgLy8gUGFpbnQgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfUkdCQ09MT1JfSUNDQ09MT1IgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX05PTkUgPSAxMDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SID0gMTAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9OT05FID0gMTAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9DVVJSRU5UQ09MT1IgPSAxMDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SID0gMTA1OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUl9JQ0NDT0xPUiA9IDEwNjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUkkgPSAxMDc7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHBhaW50VHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1cmk7ICopXG5cbigqICAgdm9pZCBzZXRVcmkoaW4gRE9NU3RyaW5nIHVyaSk7ICopXG4oKiAgIHZvaWQgc2V0UGFpbnQoaW4gdW5zaWduZWQgc2hvcnQgcGFpbnRUeXBlLCBpbiBET01TdHJpbmcgdXJpLCBpbiBET01TdHJpbmcgcmdiQ29sb3IsIGluIERPTVN0cmluZyBpY2NDb2xvcikgcmFpc2VzKFNWR0V4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHTWFya2VyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0xhbmdTcGFjZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHU3R5bGFibGUsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpdFRvVmlld0JveCB7ICopXG5cbigqICAgLy8gTWFya2VyIFVuaXQgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfVVNFUlNQQUNFT05VU0UgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lEVEggPSAyOyAqKVxuXG4oKiAgIC8vIE1hcmtlciBPcmllbnRhdGlvbiBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfQVVUTyA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX0FOR0xFID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggcmVmWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHJlZlk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hcmtlclVuaXRzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggbWFya2VyV2lkdGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBtYXJrZXJIZWlnaHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9yaWVudFR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEFuZ2xlIG9yaWVudEFuZ2xlOyAqKVxuXG4oKiAgIHZvaWQgc2V0T3JpZW50VG9BdXRvKCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIHZvaWQgc2V0T3JpZW50VG9BbmdsZShpbiBTVkdBbmdsZSBhbmdsZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3JQcm9maWxlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1VSSVJlZmVyZW5jZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHUmVuZGVyaW5nSW50ZW50IHsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBsb2NhbDsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOyAqKVxuKCogICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVuZGVyaW5nSW50ZW50OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yUHJvZmlsZVJ1bGUgOiBTVkdDU1NSdWxlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdSZW5kZXJpbmdJbnRlbnQgeyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNyYyBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lIHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVuZGVyaW5nSW50ZW50IHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0dyYWRpZW50RWxlbWVudCAqKVxuYW5kIGFuaW1hdGVkU3ByZWFkTWV0aG9kID0gW3NwcmVhZE1ldGhvZFR5cGVdIGFuaW1hdGVkXG5cbmFuZCBncmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBncmFkaWVudFVuaXRzOyAqKVxuICBtZXRob2QgZ3JhZGllbnRUcmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwcmVhZE1ldGhvZCA6IGFuaW1hdGVkU3ByZWFkTWV0aG9kIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQgKilcbmFuZCBsaW5lYXJHcmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBncmFkaWVudEVsZW1lbnRcblxuICBtZXRob2QgeDEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeDIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50ICopXG5hbmQgcmFkaWFsR3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZ3JhZGllbnRFbGVtZW50XG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3RvcEVsZW1lbnQgKilcbmFuZCBzdG9wRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgbWV0aG9kIG9mZnNldCA6IGFuaW1hdGVkTnVtYmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXR0ZXJuRWxlbWVudCAqKVxuYW5kIHBhdHRlcm5FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwYXR0ZXJuVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcGF0dGVybkNvbnRlbnRVbml0czsgKilcbiAgbWV0aG9kIHBhdHRlcm5UcmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ2xpcFBhdGhFbGVtZW50ICopXG5hbmQgY2xpcFBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBjbGlwUGF0aFVuaXRzOyAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdNYXNrRWxlbWVudCAqKVxuYW5kIG1hc2tFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hc2tVbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXNrQ29udGVudFVuaXRzOyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaWx0ZXJFbGVtZW50ICopXG5hbmQgZmlsdGVyRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZmlsdGVyVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcHJpbWl0aXZlVW5pdHM7ICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbHRlclJlc1ggOiBhbmltYXRlZEludGVnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbHRlclJlc1kgOiBhbmltYXRlZEludGVnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldEZpbHRlclJlcyA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyA6IFNWR1N0eWxhYmxlIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggd2lkdGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBoZWlnaHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyByZXN1bHQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVCbGVuZEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBCbGVuZCBNb2RlIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTk9STUFMID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9NVUxUSVBMWSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfU0NSRUVOID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9EQVJLRU4gPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX0xJR0hURU4gPSA1OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1vZGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDb2xvciBNYXRyaXggVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVggPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEUgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0xVTUlOQU5DRVRPQUxQSEEgPSA0OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3QgdmFsdWVzOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcblxuKCogICAvLyBDb21wb25lbnQgVHJhbnNmZXIgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9JREVOVElUWSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVEFCTEUgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0RJU0NSRVRFID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVIgPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0dBTU1BID0gNTsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IHRhYmxlVmFsdWVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2xvcGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBpbnRlcmNlcHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBhbXBsaXR1ZGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBleHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIG9mZnNldDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNSRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNHRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNCRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNBRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ29tcG9zaXRlIE9wZXJhdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0lOID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX09VVCA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9BVE9QID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX1hPUiA9IDU7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9BUklUSE1FVElDID0gNjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcGVyYXRvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGsxOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMzsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGs0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gRWRnZSBNb2RlIFZhbHVlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9EVVBMSUNBVEUgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfV1JBUCA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9OT05FID0gMzsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG9yZGVyWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBvcmRlclk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3Qga2VybmVsTWF0cml4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZGl2aXNvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJpYXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgdGFyZ2V0WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciB0YXJnZXRZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBlZGdlTW9kZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEJvb2xlYW4gcHJlc2VydmVBbHBoYTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdXJmYWNlU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkaWZmdXNlQ29uc3RhbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYXppbXV0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGVsZXZhdGlvbjsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVBvaW50TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHo7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVTcG90TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHo7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFo7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgbGltaXRpbmdDb25lQW5nbGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENoYW5uZWwgU2VsZWN0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9SID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfRyA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0IgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9BID0gNDsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHhDaGFubmVsU2VsZWN0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHlDaGFubmVsU2VsZWN0b3I7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGbG9vZEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN0ZERldmlhdGlvblg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdGREZXZpYXRpb25ZOyAqKVxuXG4oKiAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uKGluIGZsb2F0IHN0ZERldmlhdGlvblgsIGluIGZsb2F0IHN0ZERldmlhdGlvblkpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFSW1hZ2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1VSSVJlZmVyZW5jZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0xhbmdTcGFjZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0aW87ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNZXJnZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1lcmdlTm9kZUVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1vcnBob2xvZ3lFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBNb3JwaG9sb2d5IE9wZXJhdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfRVJPREUgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9ESUxBVEUgPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9wZXJhdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcmFkaXVzWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHJhZGl1c1k7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVPZmZzZXRFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkeTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN1cmZhY2VTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyQ29uc3RhbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVRpbGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBUdXJidWxlbmNlIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfRlJBQ1RBTE5PSVNFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9UVVJCVUxFTkNFID0gMjsgKilcblxuKCogICAvLyBTdGl0Y2ggT3B0aW9ucyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfU1RJVENIID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfTk9TVElUQ0ggPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiYXNlRnJlcXVlbmN5WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJhc2VGcmVxdWVuY3lZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG51bU9jdGF2ZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzZWVkOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBzdGl0Y2hUaWxlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDdXJzb3JFbGVtZW50ICopXG5hbmQgY3Vyc29yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FFbGVtZW50ICopXG5hbmQgYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHRhcmdldCA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdWaWV3RWxlbWVudCAqKVxuYW5kIHZpZXdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXQgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTY3JpcHRFbGVtZW50ICopXG5hbmQgc2NyaXB0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIG1ldGhvZCB0eXBlXyA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHWm9vbUV2ZW50IDogVUlFdmVudCAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUmVjdCB6b29tUmVjdFNjcmVlbjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IHByZXZpb3VzU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdQb2ludCBwcmV2aW91c1RyYW5zbGF0ZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IG5ld1NjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUG9pbnQgbmV3VHJhbnNsYXRlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGlvbkVsZW1lbnQgKilcbmFuZCBhbmltYXRpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICAoKiBpbmhlcml0IGVsZW1lbnRUaW1lQ29udHJvbCAqKVxuICBtZXRob2QgdGFyZ2V0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFN0YXJ0VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0Q3VycmVudFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNpbXBsZUR1cmF0aW9uIDogbnVtYmVyX3QgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgYW5pbWF0aW9uRWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU2V0RWxlbWVudCAqKVxuYW5kIHNldEVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlTW90aW9uRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVNb3Rpb25FbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHTVBhdGhFbGVtZW50ICopXG5hbmQgbVBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQgKilcbmFuZCBhbmltYXRlQ29sb3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgYW5pbWF0aW9uRWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgKilcbmFuZCBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRFbGVtZW50ICopXG5hbmQgZm9udEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdHbHlwaEVsZW1lbnQgKilcbigqIGludGVyZmFjZSBTVkdNaXNzaW5nR2x5cGhFbGVtZW50KilcbmFuZCBnbHlwaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdIS2VybkVsZW1lbnQgOiBTVkdFbGVtZW50ICopXG4oKiBpbnRlcmZhY2UgU1ZHVktlcm5FbGVtZW50IDogU1ZHRWxlbWVudCAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlU3JjRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZVNyY0VsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZVVyaUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VVcmlFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlRm9ybWF0RWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VOYW1lRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR01ldGFkYXRhRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBtZXRhZGF0YUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb3JlaWduT2JqZWN0RWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb3JlaWduT2JqZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgY3JlYXRlRWxlbWVudCAoZG9jIDogZG9jdW1lbnQgdCkgbmFtZSA9IGRvYyMjY3JlYXRlRWxlbWVudE5TIHhtbG5zIChKcy5zdHJpbmcgbmFtZSlcblxubGV0IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBuYW1lKVxuXG5sZXQgY3JlYXRlQSBkb2MgOiBhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoIGRvYyA6IGFsdEdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaFwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaERlZiBkb2MgOiBhbHRHbHlwaERlZkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhkZWZcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGhJdGVtIGRvYyA6IGFsdEdseXBoSXRlbUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhpdGVtXCJcblxubGV0IGNyZWF0ZUFuaW1hdGUgZG9jIDogYW5pbWF0ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZVwiXG5cbmxldCBjcmVhdGVBbmltYXRlQ29sb3IgZG9jIDogYW5pbWF0ZUNvbG9yRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlY29sb3JcIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZU1vdGlvbiBkb2MgOiBhbmltYXRlTW90aW9uRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlbW90aW9uXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVUcmFuc2Zvcm0gZG9jIDogYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZXRyYW5zZm9ybVwiXG5cbmxldCBjcmVhdGVDaXJjbGUgZG9jIDogY2lyY2xlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjaXJjbGVcIlxuXG5sZXQgY3JlYXRlQ2xpcFBhdGggZG9jIDogY2xpcFBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNsaXBwYXRoXCJcblxuKCogbGV0IGNyZWF0ZUNvbG9yUHJvZmlsZSBkb2MgOiBjb2xvclByb2ZpbGUgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sb3ItcHJvZmlsZVwiICopXG5sZXQgY3JlYXRlQ3Vyc29yIGRvYyA6IGN1cnNvckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY3Vyc29yXCJcblxubGV0IGNyZWF0ZURlZnMgZG9jIDogZGVmc0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVmc1wiXG5cbmxldCBjcmVhdGVEZXNjIGRvYyA6IGRlc2NFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlc2NcIlxuXG5sZXQgY3JlYXRlRWxsaXBzZSBkb2MgOiBlbGxpcHNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJlbGxpcHNlXCJcblxuKCogbGV0IGNyZWF0ZUZlKiAqKVxubGV0IGNyZWF0ZUZpbHRlciBkb2MgOiBmaWx0ZXJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZpbHRlclwiXG5cbmxldCBjcmVhdGVGb250IGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnRcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2UgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlRm9ybWF0IGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1mb3JtYXRcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VOYW1lIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1uYW1lXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlU3JjIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1zcmNcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VVcmkgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLXVyaVwiXG5cbmxldCBjcmVhdGVGb3JlaWduT2JqZWN0IGRvYyA6IGZvcmVpZ25PYmplY3RFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvcmVpZ25PYmplY3RcIlxuXG5sZXQgY3JlYXRlRyBkb2MgOiBnRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnXCJcblxubGV0IGNyZWF0ZUdseXBoIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnbHlwaFwiXG5cbmxldCBjcmVhdGVHbHlwaFJlZiBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ2x5cGhyZWZcIlxuXG5sZXQgY3JlYXRlaGtlcm4gZG9jIDogZWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoa2VyblwiXG5cbmxldCBjcmVhdGVJbWFnZSBkb2MgOiBpbWFnZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW1hZ2VcIlxuXG5sZXQgY3JlYXRlTGluZUVsZW1lbnQgZG9jIDogbGluZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGluZVwiXG5cbmxldCBjcmVhdGVMaW5lYXJFbGVtZW50IGRvYyA6IGxpbmVhckdyYWRpZW50RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5lYXJncmFkaWVudFwiXG5cbigqIGxldCBjcmVhdGVNYXJrZXIgZG9jIDogbWFya2VyRWxlbWVudCAqKVxubGV0IGNyZWF0ZU1hc2sgZG9jIDogbWFza0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWFza1wiXG5cbmxldCBjcmVhdGVNZXRhRGF0YSBkb2MgOiBtZXRhZGF0YUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWV0YWRhdGFcIlxuXG5sZXQgY3JlYXRlTWlzc2luZ0dseXBoIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtaXNzaW5nLWdseXBoXCJcblxubGV0IGNyZWF0ZU1QYXRoIGRvYyA6IG1QYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtcGF0aFwiXG5cbmxldCBjcmVhdGVQYXRoIGRvYyA6IHBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhdGhcIlxuXG5sZXQgY3JlYXRlUGF0dGVybiBkb2MgOiBwYXR0ZXJuRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXR0ZXJuXCJcblxubGV0IGNyZWF0ZVBvbHlnb24gZG9jIDogcG9seWdvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicG9seWdvblwiXG5cbmxldCBjcmVhdGVQb2x5bGluZSBkb2MgOiBwb2x5TGluZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicG9seWxpbmVcIlxuXG5sZXQgY3JlYXRlUmFkaWFsZ3JhZGllbnQgZG9jIDogcmFkaWFsR3JhZGllbnRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInJhZGlhbGdyYWRpZW50XCJcblxubGV0IGNyZWF0ZVJlY3QgZG9jIDogcmVjdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicmVjdFwiXG5cbmxldCBjcmVhdGVTY3JpcHQgZG9jIDogc2NyaXB0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzY3JpcHRcIlxuXG5sZXQgY3JlYXRlU2V0IGRvYyA6IHNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2V0XCJcblxubGV0IGNyZWF0ZVN0b3AgZG9jIDogc3RvcEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3RvcFwiXG5cbmxldCBjcmVhdGVTdHlsZSBkb2MgOiBzdHlsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3R5bGVcIlxuXG5sZXQgY3JlYXRlU3ZnIGRvYyA6IHN2Z0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3ZnXCJcblxubGV0IGNyZWF0ZVN3aXRjaCBkb2MgOiBzd2l0Y2hFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN3aXRjaFwiXG5cbmxldCBjcmVhdGVTeW1ib2wgZG9jIDogc3ltYm9sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzeW1ib2xcIlxuXG5sZXQgY3JlYXRlVGV4dEVsZW1lbnQgZG9jIDogdGV4dEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGV4dFwiXG5cbmxldCBjcmVhdGVUZXh0cGF0aCBkb2MgOiB0ZXh0UGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGV4dHBhdGhcIlxuXG5sZXQgY3JlYXRlVGl0bGUgZG9jIDogdGl0bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRpdGxlXCJcblxubGV0IGNyZWF0ZVRyZWYgZG9jIDogdHJlZkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHJlZlwiXG5cbmxldCBjcmVhdGVUc3BhbiBkb2MgOiB0c3BhbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHNwYW5cIlxuXG5sZXQgY3JlYXRlVXNlIGRvYyA6IHVzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidXNlXCJcblxubGV0IGNyZWF0ZVZpZXcgZG9jIDogdmlld0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmlld1wiXG5cbmxldCBjcmVhdGV2a2VybiBkb2MgOiBlbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZrZXJuXCJcblxuKCoqKiopXG5cbmxldCBzdmdfZWxlbWVudCA6IGVsZW1lbnQgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1NWR0VsZW1lbnRcblxubGV0IGRvY3VtZW50ID0gSnMuVW5zYWZlLmdsb2JhbCMjLmRvY3VtZW50XG5cbmxldCBnZXRFbGVtZW50QnlJZCBpZCA6IGVsZW1lbnQgdCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKEpzLlVuc2FmZS5nbG9iYWwjIy5kb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgKGZ1biBlIC0+IGlmIEpzLmluc3RhbmNlb2YgZSBzdmdfZWxlbWVudCB0aGVuIGUgZWxzZSByYWlzZSBOb3RfZm91bmQpXG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgZWxlbWVudCAoZSA6ICNEb20ubm9kZSBKcy50KSA6IGVsZW1lbnQgSnMudCBKcy5vcHQgPVxuICAgIGlmIEpzLmluc3RhbmNlb2YgZSBzdmdfZWxlbWVudCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHVuc2FmZUNvZXJjZSAoZSA6ICNlbGVtZW50IHQpIHRhZyA9XG4gICAgaWYgSnMuZXF1YWxzIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIHRhZylcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYSBlIDogYUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFcIlxuXG4gIGxldCBhbHRHbHlwaCBlIDogYWx0R2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaFwiXG5cbiAgbGV0IGFsdEdseXBoRGVmIGUgOiBhbHRHbHlwaERlZkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoZGVmXCJcblxuICBsZXQgYWx0R2x5cGhJdGVtIGUgOiBhbHRHbHlwaEl0ZW1FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaGl0ZW1cIlxuXG4gIGxldCBhbmltYXRlIGUgOiBhbmltYXRlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZVwiXG5cbiAgbGV0IGFuaW1hdGVDb2xvciBlIDogYW5pbWF0ZUNvbG9yRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZWNvbG9yXCJcblxuICBsZXQgYW5pbWF0ZU1vdGlvbiBlIDogYW5pbWF0ZU1vdGlvbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVtb3Rpb25cIlxuXG4gIGxldCBhbmltYXRlVHJhbnNmb3JtIGUgOiBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCB0IG9wdCA9XG4gICAgdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRldHJhbnNmb3JtXCJcblxuICBsZXQgY2lyY2xlIGUgOiBjaXJjbGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjaXJjbGVcIlxuXG4gIGxldCBjbGlwUGF0aCBlIDogY2xpcFBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjbGlwcGF0aFwiXG5cbiAgKCogbGV0IENvbG9yUHJvZmlsZSBlIDogY29sb3JQcm9maWxlIHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjb2xvci1wcm9maWxlXCIgKilcbiAgbGV0IGN1cnNvciBlIDogY3Vyc29yRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY3Vyc29yXCJcblxuICBsZXQgZGVmcyBlIDogZGVmc0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImRlZnNcIlxuXG4gIGxldCBkZXNjIGUgOiBkZXNjRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZGVzY1wiXG5cbiAgbGV0IGVsbGlwc2UgZSA6IGVsbGlwc2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJlbGxpcHNlXCJcblxuICAoKiBsZXQgRmUqICopXG4gIGxldCBmaWx0ZXIgZSA6IGZpbHRlckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZpbHRlclwiXG5cbiAgbGV0IGZvbnQgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250XCJcblxuICBsZXQgZm9udEZhY2UgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2VcIlxuXG4gIGxldCBmb250RmFjZUZvcm1hdCBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1mb3JtYXRcIlxuXG4gIGxldCBmb250RmFjZU5hbWUgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtbmFtZVwiXG5cbiAgbGV0IGZvbnRGYWNlU3JjIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLXNyY1wiXG5cbiAgbGV0IGZvbnRGYWNlVXJpIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLXVyaVwiXG5cbiAgbGV0IGZvcmVpZ25PYmplY3QgZSA6IGZvcmVpZ25PYmplY3RFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb3JlaWdub2JqZWN0XCJcblxuICBsZXQgZyBlIDogZ0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdcIlxuXG4gIGxldCBnbHlwaCBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnbHlwaFwiXG5cbiAgbGV0IGdseXBoUmVmIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdseXBocmVmXCJcblxuICBsZXQgaGtlcm4gZSA6IGVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImhrZXJuXCJcblxuICBsZXQgaW1hZ2UgZSA6IGltYWdlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiaW1hZ2VcIlxuXG4gIGxldCBsaW5lRWxlbWVudCBlIDogbGluZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImxpbmVcIlxuXG4gIGxldCBsaW5lYXJFbGVtZW50IGUgOiBsaW5lYXJHcmFkaWVudEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImxpbmVhcmdyYWRpZW50XCJcblxuICAoKiBsZXQgTWFya2VyIGUgOiBtYXJrZXJFbGVtZW50ICopXG4gIGxldCBtYXNrIGUgOiBtYXNrRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWFza1wiXG5cbiAgbGV0IG1ldGFEYXRhIGUgOiBtZXRhZGF0YUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1ldGFkYXRhXCJcblxuICBsZXQgbWlzc2luZ0dseXBoIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1pc3NpbmctZ2x5cGhcIlxuXG4gIGxldCBtUGF0aCBlIDogbVBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtcGF0aFwiXG5cbiAgbGV0IHBhdGggZSA6IHBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwYXRoXCJcblxuICBsZXQgcGF0dGVybiBlIDogcGF0dGVybkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBhdHRlcm5cIlxuXG4gIGxldCBwb2x5Z29uIGUgOiBwb2x5Z29uRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicG9seWdvblwiXG5cbiAgbGV0IHBvbHlsaW5lIGUgOiBwb2x5TGluZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBvbHlsaW5lXCJcblxuICBsZXQgcmFkaWFsZ3JhZGllbnQgZSA6IHJhZGlhbEdyYWRpZW50RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicmFkaWFsZ3JhZGllbnRcIlxuXG4gIGxldCByZWN0IGUgOiByZWN0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicmVjdFwiXG5cbiAgbGV0IHNjcmlwdCBlIDogc2NyaXB0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic2NyaXB0XCJcblxuICBsZXQgc2V0IGUgOiBzZXRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzZXRcIlxuXG4gIGxldCBzdG9wIGUgOiBzdG9wRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3RvcFwiXG5cbiAgbGV0IHN0eWxlIGUgOiBzdHlsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN0eWxlXCJcblxuICBsZXQgc3ZnIGUgOiBzdmdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdmdcIlxuXG4gIGxldCBzd2l0Y2ggZSA6IHN3aXRjaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN3aXRjaFwiXG5cbiAgbGV0IHN5bWJvbCBlIDogc3ltYm9sRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3ltYm9sXCJcblxuICBsZXQgdGV4dEVsZW1lbnQgZSA6IHRleHRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0ZXh0XCJcblxuICBsZXQgdGV4dHBhdGggZSA6IHRleHRQYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGV4dHBhdGhcIlxuXG4gIGxldCB0aXRsZSBlIDogdGl0bGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0aXRsZVwiXG5cbiAgbGV0IHRyZWYgZSA6IHRyZWZFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0cmVmXCJcblxuICBsZXQgdHNwYW4gZSA6IHRzcGFuRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidHNwYW5cIlxuXG4gIGxldCB1c2UgZSA6IHVzZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInVzZVwiXG5cbiAgbGV0IHZpZXcgZSA6IHZpZXdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ2aWV3XCJcblxuICBsZXQgdmtlcm4gZSA6IGVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInZrZXJuXCJcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxuKCogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50U291cmNlICopXG5vcGVuIEpzXG5vcGVuIERvbVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgc3RhdGUgPVxuICB8IENPTk5FQ1RJTkdcbiAgfCBPUEVOXG4gIHwgQ0xPU0VEXG5cbmNsYXNzIHR5cGUgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcmlnaW4gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RFdmVudElkIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuICAoKiBtZXRob2Qgc291cmNlIDogdW5pdCAqKVxuZW5kXG5cbmNsYXNzIHR5cGUgZXZlbnRTb3VyY2UgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2QgdXJsIDogc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogc3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbm9wZW4gOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmxldCB3aXRoQ3JlZGVudGlhbHMgYiA6IG9wdGlvbnMgdCA9XG4gIGxldCBpbml0ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gIGluaXQjIy53aXRoQ3JlZGVudGlhbHMgOj0gSnMuYm9vbCBiO1xuICBpbml0XG5cbmxldCBldmVudFNvdXJjZSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRXZlbnRTb3VyY2VcblxubGV0IGV2ZW50U291cmNlX29wdGlvbnMgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0V2ZW50U291cmNlXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBjb25zb2xlID0gb2JqZWN0XG4gIG1ldGhvZCBsb2cgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzYgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzcgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfOCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWcgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvciA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8gOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8xIDogYm9vbCB0IC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8yIDogYm9vbCB0IC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzMgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF80IDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF81IDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlyIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlyeG1sIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhY2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXAgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZCA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwRW5kIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRpbWUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGltZUVuZCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmV4dGVybmFsIGdldF9jb25zb2xlIDogdW5pdCAtPiBjb25zb2xlIHQgPSBcImNhbWxfanNfZ2V0X2NvbnNvbGVcIlxuXG5sZXQgY29uc29sZSA9IGdldF9jb25zb2xlICgpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSBwb3NpdGlvbkVycm9yQ29kZVxuXG50eXBlIHdhdGNoSWRcblxuY2xhc3MgdHlwZSBjb29yZGluYXRlcyA9IG9iamVjdFxuICBtZXRob2QgbGF0aXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvbmdpdHVkZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0aXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2N1cmFjeSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0aXR1ZGVBY2N1cmFjeSA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlYWRpbmcgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGVlZCA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbiA9IG9iamVjdFxuICBtZXRob2QgY29vcmRzIDogY29vcmRpbmF0ZXMgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWVzdGFtcCA6IEpzLmRhdGUgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb25PcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBlbmFibGVIaWdoQWNjdXJhY3kgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWVvdXQgOiBpbnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgbWF4aW11bUFnZSA6IGludCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb25FcnJvciA9IG9iamVjdFxuICBtZXRob2QgX1BFUk1JU1NJT05fREVOSUVEXyA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPU0lUSU9OX1VOQVZBSUxBQkxFXyA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RJTUVPVVQgOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBnZW9sb2NhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgZ2V0Q3VycmVudFBvc2l0aW9uIDpcbiAgICAgICAocG9zaXRpb24gSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IChwb3NpdGlvbkVycm9yIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiBwb3NpdGlvbk9wdGlvbnMgSnMudFxuICAgIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB3YXRjaFBvc2l0aW9uIDpcbiAgICAgICAocG9zaXRpb24gSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IChwb3NpdGlvbkVycm9yIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiBwb3NpdGlvbk9wdGlvbnMgSnMudFxuICAgIC0+IHdhdGNoSWQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbGVhcldhdGNoIDogd2F0Y2hJZCAtPiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfcG9zaXRpb25fb3B0aW9ucyAoKSA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgZ2VvbG9jYXRpb24gPVxuICBsZXQgeCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5uYXZpZ2F0b3IgaW5cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgeCB0aGVuIHgjIy5nZW9sb2NhdGlvbiBlbHNlIHhcblxuKCogdW5kZWZpbmVkICopXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBnZW9sb2NhdGlvblxuIiwiY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm91bmRpbmdDbGllbnRSZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdEJvdW5kcyA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnRlcnNlY3Rpb25SZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW50ZXJzZWN0aW9uUmF0aW8gOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzSW50ZXJzZWN0aW5nIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2Qgcm9vdCA6IERvbS5ub2RlIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdE1hcmdpbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHRocmVzaG9sZCA6IEpzLm51bWJlcl90IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCByb290IDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290TWFyZ2luIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aHJlc2hvbGRzIDogSnMubnVtYmVyX3QgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdW5vYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9pbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfb3B0aW9ucyAoKSA6IGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyBKcy50ID1cbiAgSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmUgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGVyc2VjdGlvbk9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmVcblxubGV0IGludGVyc2VjdGlvbk9ic2VydmVyIDpcbiAgICAoICAgKCAgIGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlciBKcy50XG4gICAgICAgICAtPiB1bml0KVxuICAgICAgICBKcy5jYWxsYmFja1xuICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgSnMudFxuICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxOCBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFNoYXJlZCA9IHNpZ1xuICBjbGFzcyB0eXBlIG9iamVjdF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIHZhbCBvYmplY3Rfb3B0aW9ucyA6IHVuaXQgLT4gb2JqZWN0X29wdGlvbnMgSnMudFxuXG4gIGNsYXNzIHR5cGUgX29iamVjdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzdXBwb3J0ZWRMb2NhbGVzT2YgOlxuICAgICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgLT4gb2JqZWN0X29wdGlvbnMgSnMudCBKcy5vcHRkZWZcbiAgICAgIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU2hhcmVkIDogU2hhcmVkID0gc3RydWN0XG4gIGNsYXNzIHR5cGUgb2JqZWN0X29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9iamVjdF9vcHRpb25zICgpID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBfb2JqZWN0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHN1cHBvcnRlZExvY2FsZXNPZiA6XG4gICAgICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAtPiBvYmplY3Rfb3B0aW9ucyBKcy50IEpzLm9wdGRlZlxuICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDb2xsYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgdXNhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc2Vuc2l0aXZpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlUHVuY3R1YXRpb24gOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNvbGxhdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1lcmljIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjYXNlRmlyc3QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNlbnNpdGl2aXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZVB1bmN0dWF0aW9uIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1lcmljIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBjYXNlRmlyc3QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVzYWdlID0gSnMuc3RyaW5nIFwic29ydFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNlbnNpdGl2aXR5ID0gSnMuc3RyaW5nIFwidmFyaWFudFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIGlnbm9yZVB1bmN0dWF0aW9uID0gSnMuX2ZhbHNlXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWVyaWMgPSBKcy5fZmFsc2VcblxuICAgICAgdmFsIG11dGFibGUgY2FzZUZpcnN0ID0gSnMuc3RyaW5nIFwiZmFsc2VcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBjb21wYXJlIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IGludCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIERhdGVUaW1lRm9ybWF0ID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjYWxlbmRhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaG91cjEyIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB3ZWVrZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBlcmEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHllYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1vbnRoIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGhvdXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbnV0ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2Qgc2Vjb25kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgZGF0ZVN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lU3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGNhbGVuZGFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBkYXlQZXJpb2QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91cjEyIDogYm9vbCBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91ckN5Y2xlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBmb3JtYXRNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHdlZWtkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGVyYSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgeWVhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbW9udGggOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGRheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91ciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWludXRlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzZWNvbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGZyYWN0aW9uYWxTZWNvbmREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBkYXRlU3R5bGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdGltZVN0eWxlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGNhbGVuZGFyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGRheVBlcmlvZCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1iZXJpbmdTeXN0ZW0gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgdGltZVpvbmUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91cjEyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXJDeWNsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBmb3JtYXRNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB3ZWVrZGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGVyYSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB5ZWFyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1vbnRoID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGRheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbnV0ZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzZWNvbmQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZnJhY3Rpb25hbFNlY29uZERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lWm9uZU5hbWUgPSBKcy51bmRlZmluZWRcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIGZvcm1hdF9wYXJ0ID0gb2JqZWN0XG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF92YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGZvcm1hdCA6IChKcy5kYXRlIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBmb3JtYXRUb1BhcnRzIDpcbiAgICAgIEpzLmRhdGUgSnMudCBKcy5vcHRkZWYgLT4gZm9ybWF0X3BhcnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBOdW1iZXJGb3JtYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lEaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB1c2VHcm91cGluZyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGNvbXBhY3REaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lEaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeVNpZ24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgbm90YXRpb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2lnbkRpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVuaXQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVuaXREaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB1c2VHcm91cGluZyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdNb2RlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ1ByaW9yaXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ0luY3JlbWVudCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdHJhaWxpbmdaZXJvRGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgY29tcGFjdERpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3kgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3lEaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5U2lnbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBub3RhdGlvbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1iZXJpbmdTeXN0ZW0gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc2lnbkRpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc3R5bGUgPSBKcy5zdHJpbmcgXCJkZWNpbWFsXCJcblxuICAgICAgdmFsIG11dGFibGUgdW5pdCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB1bml0RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB1c2VHcm91cGluZyA9IEpzLl90cnVlXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nTW9kZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ1ByaW9yaXR5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nSW5jcmVtZW50ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRyYWlsaW5nWmVyb0Rpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bUludGVnZXJEaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gSnMudW5kZWZpbmVkXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBmb3JtYXRfcGFydCA9IG9iamVjdFxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBmb3JtYXQgOiAoSnMubnVtYmVyIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBmb3JtYXRUb1BhcnRzIDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLm9wdGRlZiAtPiBmb3JtYXRfcGFydCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBsdXJhbFJ1bGVzID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBwbHVyYWxDYXRlZ29yaWVzIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIF90eXBlID0gSnMuc3RyaW5nIFwiY2FyZGluYWxcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzZWxlY3QgOiBKcy5udW1iZXIgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5jbGFzcyB0eXBlIGludGwgPSBvYmplY3RcbiAgbWV0aG9kIF9Db2xsYXRvciA6IENvbGxhdG9yLl9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EYXRlVGltZUZvcm1hdCA6IERhdGVUaW1lRm9ybWF0Ll9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OdW1iZXJGb3JtYXQgOiBOdW1iZXJGb3JtYXQuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BsdXJhbFJ1bGVzIDogUGx1cmFsUnVsZXMuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0Q2Fub25pY2FsTG9jYWxlcyA6XG4gICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgaW50bCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bFxuXG5sZXQgY29sbGF0b3JfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX0NvbGxhdG9yXG5cbmxldCBkYXRlVGltZUZvcm1hdF9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fRGF0ZVRpbWVGb3JtYXRcblxubGV0IG51bWJlckZvcm1hdF9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fTnVtYmVyRm9ybWF0XG5cbmxldCBwbHVyYWxSdWxlc19jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fUGx1cmFsUnVsZXNcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGludGxcbiIsImluY2x1ZGUgSnNfb2Zfb2NhbWwuSnNcbm1vZHVsZSBVcmwgPSBKc19vZl9vY2FtbC5Vcmxcbm1vZHVsZSBEb21faHRtbCA9IEpzX29mX29jYW1sLkRvbV9odG1sXG5tb2R1bGUgRmlyZWJ1ZyA9IEpzX29mX29jYW1sLkZpcmVidWdcbm1vZHVsZSBGaWxlID0gSnNfb2Zfb2NhbWwuRmlsZVxubW9kdWxlIERvbSA9IEpzX29mX29jYW1sLkRvbVxubW9kdWxlIFR5cGVkX2FycmF5ID0gSnNfb2Zfb2NhbWwuVHlwZWRfYXJyYXlcbm1vZHVsZSBSZWdleHAgPSBKc19vZl9vY2FtbC5SZWdleHBcblxudHlwZSAoJ2EsICdiKSByZXN1bHQgPSAoJ2EsICdiKSBTdGRsaWIucmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYlxuXG50eXBlIHdpbmRvdyA9IERvbV9odG1sLndpbmRvd1xuXG5sZXQgdG9fYXJyYXlmIGYgYSA9IEFycmF5Lm1hcCBmICh0b19hcnJheSBhKVxuXG5sZXQgb2ZfYXJyYXlmIGYgYSA9IGFycmF5IChBcnJheS5tYXAgZiBhKVxuXG5sZXQgdG9fbGlzdCBhID0gQXJyYXkudG9fbGlzdCBAQCB0b19hcnJheSBhXG5cbmxldCBvZl9saXN0IGwgPSBhcnJheSBAQCBBcnJheS5vZl9saXN0IEBAIGxcblxubGV0IHRvX2xpc3RmIGYgYSA9IEFycmF5LnRvX2xpc3QgQEAgdG9fYXJyYXlmIGYgYVxuXG5sZXQgb2ZfbGlzdGYgZiBhID0gb2ZfYXJyYXlmIGYgQEAgQXJyYXkub2ZfbGlzdCBhXG5cbmxldCBvcHRkZWYgZiA9IGZ1bmN0aW9uIE5vbmUgLT4gdW5kZWZpbmVkIHwgU29tZSB4IC0+IGRlZiAoZiB4KVxuXG5sZXQgdG9fb3B0ZGVmIGYgeCA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCB1bm9wdGRlZl9mIGRlZiBmIHggPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IGRlZiB8IFNvbWUgeCAtPiBmIHhcblxubGV0IHVub3B0ZGVmIGRlZiB4ID0gbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBkZWYgfCBTb21lIHggLT4geFxuXG5sZXQgY29udmRlZiBmIHggPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IHVuZGVmaW5lZCB8IFNvbWUgeCAtPiBkZWYgKGYgeClcblxubGV0IHRvX29wdCBmIHggPVxuICBtYXRjaCBPcHQudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgb3B0IGYgPSBmdW5jdGlvbiBOb25lIC0+IG51bGwgfCBTb21lIHggLT4gc29tZSAoZiB4KVxuXG5sZXQgY29udm9wdCBmIHggPVxuICBtYXRjaCBPcHQudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IG51bGwgfCBTb21lIHggLT4gc29tZSAoZiB4KVxuXG5sZXQganNfbG9nIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyBvXG5cbmxldCBsb2dfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoc3RyaW5nIHMpXG5cbmxldCBsb2cgZm10ID1cbiAgRm9ybWF0LmtmcHJpbnRmXG4gICAgKGZ1biBfZm10IC0+IGpzX2xvZyAoc3RyaW5nIChGb3JtYXQuZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSkpKVxuICAgIEZvcm1hdC5zdHJfZm9ybWF0dGVyIGZtdFxuXG5sZXQgZXJyb3Jfb2Zfc3RyaW5nIHMgPSBuZXclanMgZXJyb3JfY29uc3RyIChzdHJpbmcgcylcbmxldCBjYXRjaF9leG4gZiA9IGZ1bmN0aW9uXG4gIHwgSnNfZXJyb3IuRXhuIGUgLT4gZiAoSnNfZXJyb3IudG9fZXJyb3IgZSlcbiAgfCBleG4gLT4gZiBAQCBlcnJvcl9vZl9zdHJpbmcgQEAgUHJpbnRleGMudG9fc3RyaW5nIGV4blxuXG5tb2R1bGUgQU9wdCA9IHN0cnVjdFxuICB0eXBlICsnYSB0XG4gIGxldCBudWxsIDogJ2EgdCA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJudWxsXCJcbiAgZXh0ZXJuYWwgc29tZSA6ICdhIC0+ICdhIHQgPSBcIiVpZGVudGl0eVwiXG4gIGxldCB1bmRlZmluZWQgOiAnYSB0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInVuZGVmaW5lZFwiXG4gIGV4dGVybmFsIGRlZiA6ICdhIC0+ICdhIHQgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIHJldHVybiA6ICdhIC0+ICdhIHQgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIGNvZXJjZSA6ICdhIHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIGpzX2VxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcbiAgbGV0IGlzX25vbmUgKHggOiAnYSB0KSA6IGJvb2wgPSB4ID09IHVuZGVmaW5lZCB8fCBqc19lcXVhbHMgeCBudWxsXG4gIGxldCBtYXAgPyhub25lPXVuZGVmaW5lZCkgKHggOiAnYSB0KSAoZiA6ICdhIC0+ICdiKSA6ICdiIHQgPVxuICAgIGlmIGlzX25vbmUgeCB0aGVuIG5vbmUgZWxzZSByZXR1cm4gKGYgKGNvZXJjZSB4KSlcbiAgbGV0IGJpbmQgPyhub25lPXVuZGVmaW5lZCkgKHggOiAnYSB0KSAoZiA6ICdhIC0+ICdiIHQpIDogJ2IgdCA9XG4gICAgaWYgaXNfbm9uZSB4IHRoZW4gbm9uZSBlbHNlIGYgKGNvZXJjZSB4KVxuICBsZXQgdGVzdCAoeCA6ICdhIHQpIDogYm9vbCA9IG5vdCAoaXNfbm9uZSB4KVxuICBsZXQgaXRlciAoeCA6ICdhIHQpIChmIDogJ2EgLT4gdW5pdCkgOiB1bml0ID0gaWYgbm90IChpc19ub25lIHgpIHRoZW4gZiAoY29lcmNlIHgpXG4gIGxldCBjYXNlICh4IDogJ2EgdCkgKGYgOiB1bml0IC0+ICdiKSAoZyA6ICdhIC0+ICdiKSA6ICdiID0gaWYgaXNfbm9uZSB4IHRoZW4gZiAoKSBlbHNlIGcgKGNvZXJjZSB4KVxuICBsZXQgZ2V0ICh4IDogJ2EgdCkgKGYgOiB1bml0IC0+ICdhKSA6ICdhID0gaWYgaXNfbm9uZSB4IHRoZW4gZiAoKSBlbHNlIChjb2VyY2UgeClcbiAgbGV0IG9wdGlvbiA/KG5vbmU9dW5kZWZpbmVkKSAoeCA6ICdhIG9wdGlvbikgOiAnYSB0ID0gbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IG5vbmVcbiAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuICBsZXQgdG9fb3B0aW9uICh4IDogJ2EgdCkgOiAnYSBvcHRpb24gPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBsZXQgYW9wdCA/KG5vbmU9KHVuZGVmaW5lZCA6ICdiIHQpKSAoZiA6ICdhIC0+ICdiKSA6ICdhIG9wdGlvbiAtPiAnYiB0ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gbm9uZVxuICAgIHwgU29tZSB4IC0+IHJldHVybiAoZiB4KVxuICBsZXQgdG9fYW9wdCAoZiA6ICdhIC0+ICdiKSAoeCA6ICdhIHQpIDogJ2Igb3B0aW9uID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgKGYgeCkpXG5lbmRcbnR5cGUgJ2EgYW9wdCA9ICdhIEFPcHQudFxuXG50eXBlICdhIGNhc2VfcHJvcCA9IDwgZ2V0IDogJ2Egb3B0ZGVmID4gZ2VuX3Byb3BcblxubGV0IHJlYyBjaG9vc2VfY2FzZV9vcHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IHVuZGVmaW5lZFxuICB8IGggOjogdCAtPiBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGggd2l0aCBOb25lIC0+IGNob29zZV9jYXNlX29wdCB0IHwgU29tZSBfIC0+IGhcblxubGV0IGNob29zZV9jYXNlIGwgPSBjaG9vc2VfY2FzZV9vcHQgKExpc3QubWFwIE9wdGRlZi5yZXR1cm4gbClcblxubGV0IG9iamVjdF9jcyA9IFVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5sZXQgYXNzaWduIChvMSA6IF8gdCkgKG8yIDogXyB0KSA9IFVuc2FmZS5jb2VyY2UgKG9iamVjdF9jcyMjYXNzaWduIG8xIG8yKVxubGV0IGFzc2lnbl9saXN0IGwgPSBVbnNhZmUuY29lcmNlIChVbnNhZmUubWV0aF9jYWxsIG9iamVjdF9jcyBcImFzc2lnblwiIChBcnJheS5vZl9saXN0IGwpKVxuXG5sZXQgcmVtb3ZlX3VuZGVmaW5lZCBvID1cbiAgbGV0IGtleXMgPSBvYmplY3Rfa2V5cyBvIGluXG4gIGtleXMjI2ZvckVhY2ggKHdyYXBfY2FsbGJhY2sgKGZ1biBrIF8gXyAtPlxuICAgICAgaWYgbm90IChPcHRkZWYudGVzdCAoVW5zYWZlLmdldCBvIGspKSB0aGVuIFVuc2FmZS5kZWxldGUgbyBrKSlcbiIsIm9wZW4gSnNcblxudHlwZSBub25yZWMgJ2EgdCA9IDwgPiB0XG5cbmxldCBvYmogPSBVbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxuXG5sZXQgY3JlYXRlICgpIDogJ2EgdCA9IG5ldyVqcyBvYmpcblxubGV0IGFkZCAodCA6ICdhIHQpIChrIDogc3RyaW5nKSAodiA6ICdhKSA9IFVuc2FmZS5zZXQgdCAoc3RyaW5nIGspIHZcblxubGV0IGFkZF9saXN0ICh0IDogJ2EgdCkgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpID1cbiAgTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IGFkZCB0IGsgdikgbFxuXG5sZXQgYWRkX2xpc3RmICh0IDogJ2IgdCkgKGYgOiAoJ2EgLT4gJ2IpKSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgPVxuICBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gYWRkIHQgayAoZiB2KSkgbFxuXG5sZXQgbWFrZSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgOiAnYSB0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgYWRkX2xpc3QgdCBsO1xuICB0XG5cbmxldCBtYWtlZiAoZiA6ICgnYSAtPiAnYikpIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA6ICdiIHQgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBhZGRfbGlzdGYgdCBmIGw7XG4gIHRcblxubGV0IHJlbW92ZSAodCA6ICdhIHQpIChrIDogc3RyaW5nKSA9IFVuc2FmZS5kZWxldGUgdCAoc3RyaW5nIGspXG5cbmxldCBmaW5kICh0IDogJ2EgdCkgKGsgOiBzdHJpbmcpIDogJ2Egb3B0aW9uID1cbiAgT3B0ZGVmLnRvX29wdGlvbiAoVW5zYWZlLmdldCB0IChzdHJpbmcgaykpXG5cbmxldCBrZXlzICh0IDogJ2EgdCkgOiBzdHJpbmcgbGlzdCA9XG4gIHRvX2xpc3RmIHRvX3N0cmluZyBAQCBvYmojI2tleXMgdFxuXG5sZXQgaXRlbXMgKHQgOiAnYSB0KSA6IChzdHJpbmcgKiAnYSkgbGlzdCA9XG4gIHRvX2xpc3RmIChmdW4gayAtPiB0b19zdHJpbmcgaywgVW5zYWZlLmdldCB0IGspIEBAIG9iaiMja2V5cyB0XG5cbmxldCBpdGVtc2YgKGYgOiAoJ2EgLT4gJ2IpKSAodCA6ICdhIHQpIDogKHN0cmluZyAqICdiKSBsaXN0ID1cbiAgdG9fbGlzdGYgKGZ1biBrIC0+IHRvX3N0cmluZyBrLCBmIEBAIFVuc2FmZS5nZXQgdCBrKSBAQCBvYmojI2tleXMgdFxuXG5sZXQgbGVuZ3RoICh0IDogJ2EgdCkgPSAob2JqIyNrZXlzIHQpIyMubGVuZ3RoXG5cbmxldCBtZXJnZSAobCA6ICdhIHQgbGlzdCkgOiAnYSB0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgTGlzdC5pdGVyIChmdW4geCAtPiBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gYWRkIHQgayB2KSAoaXRlbXMgeCkpIGw7XG4gIHRcbiIsIm9wZW4gSnNcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSBwcm9taXNlMCA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCB0aGVuXyA6ICgnYSAtPiB1bml0KSBjYWxsYmFjayAtPiAoJ2EsICdiKSBwcm9taXNlMCB0IG1ldGhcbiAgICBtZXRob2QgY2F0Y2ggOiAoJ2IgLT4gdW5pdCkgY2FsbGJhY2sgLT4gKCdhLCAnYikgcHJvbWlzZTAgdCBtZXRoXG4gIGVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gcHJvbWlzZSA9IFsnYSwgZXJyb3IgdF0gcHJvbWlzZTBcblxudHlwZSAoJ2EsICdiKSBwcm9taXNlX2NzID1cbiAgKCgoJ2EgLT4gdW5pdCkgLT4gKCdiIC0+IHVuaXQpIC0+IHVuaXQpIGNhbGxiYWNrIC0+ICgnYSwgJ2IpIHByb21pc2UwIHQpXG4gIGNvbnN0clxuXG5sZXQgcHJvbWlzZSBmID1cbiAgbGV0IGNzIDogKCdhLCAnYikgcHJvbWlzZV9jcyA9IFVuc2FmZS5nbG9iYWwjIy5fUHJvbWlzZSBpblxuICBuZXclanMgY3MgKHdyYXBfY2FsbGJhY2sgZilcblxubGV0IGp0aGVuMCA/ZXJyb3IgKHByb20gOiAoJ2EsICdiIHQpIHByb21pc2UwIHQpIGYgPVxuICBsZXQgY2F0Y2hfZXhuIGV4biA9XG4gICAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlZiAtPiBjYXRjaF9leG4gKGZ1biB4IC0+IGVmIChVbnNhZmUuY29lcmNlIHgpKSBleG4gaW5cbiAgbGV0IHAgPSBwcm9tIyN0aGVuXyAod3JhcF9jYWxsYmFjayAoZnVuIHggLT4gdHJ5IGYgeCB3aXRoIGV4biAtPiBjYXRjaF9leG4gZXhuKSkgaW5cbiAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlcnJvciAtPiBpZ25vcmUgKHAjI2NhdGNoICh3cmFwX2NhbGxiYWNrIGVycm9yKSlcblxubGV0IGp0aGVuID9lcnJvciAocHJvbSA6ICdhIHByb21pc2UgdCkgZiA9XG4gIGxldCBjYXRjaF9leG4gZXhuID0gbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlZiAtPiBjYXRjaF9leG4gZWYgZXhuIGluXG4gIGxldCBwID0gcHJvbSMjdGhlbl8gKHdyYXBfY2FsbGJhY2sgKGZ1biB4IC0+IHRyeSBmIHggd2l0aCBleG4gLT4gY2F0Y2hfZXhuIGV4bikpIGluXG4gIG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZXJyb3IgLT4gaWdub3JlIChwIyNjYXRjaCAod3JhcF9jYWxsYmFjayBlcnJvcikpXG5cbmxldCBqdGhlbjBfb3B0IHByb20gPSBmdW5jdGlvbiBOb25lIC0+IGlnbm9yZSBwcm9tIHwgU29tZSBmIC0+IGp0aGVuMCBwcm9tIGZcbmxldCBqdGhlbl9vcHQgcHJvbSA9IGZ1bmN0aW9uIE5vbmUgLT4gaWdub3JlIHByb20gfCBTb21lIGYgLT4ganRoZW4gcHJvbSBmXG5cbmxldCBydGhlbiBwcm9tIGYgPVxuICBqdGhlbiB+ZXJyb3I6KGZ1biBlIC0+IGYgQEAgRXJyb3IgZSkgcHJvbSAoZnVuIHggLT4gZiAoT2sgeCkpXG4iLCJvcGVuIEpzX29mX29jYW1sXG5cbmxldCBsb2cgbyA9IEZpcmVidWcuY29uc29sZSMjbG9nIG9cblxubGV0IGxvZzIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZ18yIG8xIG8yXG5cbmxldCBsb2czIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMyBvMSBvMiBvM1xuXG5sZXQgbG9nX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyBzKVxuXG5sZXQgbG9nX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZ18yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCBsb2dfc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjbG9nXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcblxubGV0IGRlYnVnIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnIG9cblxubGV0IGRlYnVnMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjZGVidWdfMiBvMSBvMlxuXG5sZXQgZGVidWczIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18zIG8xIG8yIG8zXG5cbmxldCBkZWJ1Z19zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjZGVidWcgKEpzLnN0cmluZyBzKVxuXG5sZXQgZGVidWdfc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjZGVidWdfMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgZGVidWdfc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjZGVidWdfMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuXG5sZXQgd2FybiBvID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuIG9cblxubGV0IHdhcm4yIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzIgbzEgbzJcblxubGV0IHdhcm4zIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzMgbzEgbzIgbzNcblxubGV0IHdhcm5fc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm4gKEpzLnN0cmluZyBzKVxuXG5sZXQgd2Fybl9zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IHdhcm5fc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjd2Fybl8zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG5cbmxldCBlcnJvciBvID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciBvXG5cbmxldCBlcnJvcjIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzIgbzEgbzJcblxubGV0IGVycm9yMyBvMSBvMiBvMyA9IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMyBvMSBvMiBvM1xuXG5sZXQgZXJyb3Jfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIChKcy5zdHJpbmcgcylcblxubGV0IGVycm9yX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IGVycm9yX3N0cjMgczEgczIgczMgPVxuICBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcbiIsIm9wZW4gSnNcblxuY2xhc3MgdHlwZSBiaWdJbnQgPSBvYmplY3RcbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgb3B0ZGVmIC0+IF8gdCBvcHRkZWYgLT4ganNfc3RyaW5nIHQgbWV0aFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG4gIG1ldGhvZCB2YWx1ZU9mIDogYmlnSW50IHQgbWV0aFxuZW5kXG5cbnR5cGUgbm9ucmVjIHQgPSBiaWdJbnQgdFxuXG5sZXQgYmlnSW50IDogKFVuc2FmZS5hbnkgLT4gdCkgPSBVbnNhZmUucHVyZV9qc19leHByIFwiQmlnSW50XCJcblxubGV0IG9mX3N0cmluZyBzID0gYmlnSW50IChVbnNhZmUuaW5qZWN0IEBAIHN0cmluZyBzKVxubGV0IG9mX2ludCAoaSA6IGludCkgPSBiaWdJbnQgKFVuc2FmZS5pbmplY3QgQEAgaSlcbmxldCBvZl9pbnQ2NCAoaSA6IGludDY0KSA9IG9mX3N0cmluZyAoSW50NjQudG9fc3RyaW5nIGkpXG5sZXQgb2ZfbmF0aXZlIChpIDogbmF0aXZlaW50KSA9IG9mX3N0cmluZyAoTmF0aXZlaW50LnRvX3N0cmluZyBpKVxubGV0IG9mX2Zsb2F0IGYgPSBiaWdJbnQgKFVuc2FmZS5pbmplY3QgQEAgbnVtYmVyX29mX2Zsb2F0IGYpXG5cbmxldCB0b19sb2NhbGVfc3RyaW5nID9mbXQgP29wdGlvbnMgKG4gOiB0KSA9XG4gIHRvX3N0cmluZyAobiMjdG9Mb2NhbGVTdHJpbmcgKG9wdGRlZiBzdHJpbmcgZm10KSAoT3B0ZGVmLm9wdGlvbiBvcHRpb25zKSlcbmxldCB0b19zdHJpbmcgKG4gOiB0KSA9IHRvX3N0cmluZyBuIyN0b1N0cmluZ1xuIiwib3BlbiBKc1xuXG5sZXQgc2V0SW5uZXJIdG1sIGVsdCBzID0gZWx0IyMuaW5uZXJIVE1MIDo9IHN0cmluZyBzXG5cbmxldCBzZXRUZXh0IGVsdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPlxuICAgICAgKClcbiAgfCBTb21lIHMgLT5cbiAgICAgIGVsdCMjLnRleHRDb250ZW50IDo9IHNvbWUgKHN0cmluZyBzKVxuXG5sZXQgYWRkQ2xhc3MgZWx0IHMgPSBlbHQjIy5jbGFzc0xpc3QjI2FkZCAoc3RyaW5nIHMpXG5cbmxldCBhZGRDbGFzc2VzIGVsdCBsID0gTGlzdC5pdGVyIChhZGRDbGFzcyBlbHQpIGxcblxubGV0IHJlbW92ZUNsYXNzIGVsdCBzID0gZWx0IyMuY2xhc3NMaXN0IyNyZW1vdmUgKHN0cmluZyBzKVxuXG5sZXQgY29udGFpbnNDbGFzcyBlbHQgcyA9IGVsdCMjLmNsYXNzTGlzdCMjY29udGFpbnMgKHN0cmluZyBzKVxuXG5sZXQgc2V0QXR0cmlidXRlIGVsdCBrZXkgdmFsdWUgPSBlbHQjI3NldEF0dHJpYnV0ZSAoc3RyaW5nIGtleSkgKHN0cmluZyB2YWx1ZSlcblxubGV0IHJlbW92ZUF0dHJpYnV0ZSBlbHQga2V5ID0gZWx0IyNyZW1vdmVBdHRyaWJ1dGUgKHN0cmluZyBrZXkpXG5cbmxldCBnZXRBdHRyaWJ1dGUgZWx0IGtleSA9IE9wdC50b19vcHRpb24gKGVsdCMjZ2V0QXR0cmlidXRlIChzdHJpbmcga2V5KSlcblxubGV0IHNldENTUyBlbHQgc3R5bGVzID1cbiAgbGV0IHN0eWxlcyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIjsgXCIgKExpc3QubWFwIChmdW4gKGssIHYpIC0+IGsgXiBcIjogXCIgXiB2KSBzdHlsZXMpXG4gIGluXG4gIHNldEF0dHJpYnV0ZSBlbHQgXCJzdHlsZVwiIHN0eWxlc1xuXG5sZXQgYWRkQ1NTIGVsdCBzdHlsZXMgPVxuICBsZXQgc3R5bGVzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiOyBcIiAoTGlzdC5tYXAgKGZ1biAoaywgdikgLT4gayBeIFwiOiBcIiBeIHYpIHN0eWxlcylcbiAgaW5cbiAgbGV0IHN0eWxlcyA9XG4gICAgbWF0Y2ggZ2V0QXR0cmlidXRlIGVsdCBcInN0eWxlXCIgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgICBzdHlsZXNcbiAgICB8IFNvbWUgb2xkX3N0eWxlcyAtPlxuICAgICAgICBvbGRfc3R5bGVzIF4gXCI7IFwiIF4gc3R5bGVzXG4gIGluXG4gIHNldEF0dHJpYnV0ZSBlbHQgXCJzdHlsZVwiIHN0eWxlc1xuXG5sZXQgYXBwZW5kQ2hpbGQgPSBEb20uYXBwZW5kQ2hpbGRcblxubGV0IHJlbW92ZUNoaWxkID0gRG9tLnJlbW92ZUNoaWxkXG5cbmxldCBhcHBlbmRDaGlsZHJlbiBwYXJlbnQgY2hpbGRyZW4gPSBMaXN0Lml0ZXIgKERvbS5hcHBlbmRDaGlsZCBwYXJlbnQpIGNoaWxkcmVuXG5cbmxldCBjaGlsZHJlbiBwYXJlbnQgPSBEb20ubGlzdF9vZl9ub2RlTGlzdCBwYXJlbnQjIy5jaGlsZE5vZGVzXG5cbmxldCByZW1vdmVDaGlsZGkgcGFyZW50IGkgPVxuICBtYXRjaCBMaXN0Lm50aF9vcHQgKGNoaWxkcmVuIHBhcmVudCkgaSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgKClcbiAgfCBTb21lIGNoaWxkIC0+XG4gICAgICByZW1vdmVDaGlsZCBwYXJlbnQgY2hpbGRcblxubGV0IHJlbW92ZUNoaWxkcmVuIHBhcmVudCA9IExpc3QuaXRlciAocmVtb3ZlQ2hpbGQgcGFyZW50KSAoY2hpbGRyZW4gcGFyZW50KVxuXG5sZXQgcmVwbGFjZUNoaWxkcmVuIHBhcmVudCBjaGlsZHJlbiA9XG4gIHJlbW92ZUNoaWxkcmVuIHBhcmVudCA7XG4gIGFwcGVuZENoaWxkcmVuIHBhcmVudCBjaGlsZHJlblxuXG5sZXQgYnlfaWQgcyA9IERvbV9odG1sLmdldEVsZW1lbnRCeUlkIHNcblxubGV0IGFkZExpc3RlbmVyID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGVsdCBldiBmID1cbiAgbGV0IGNhcHR1cmUgPSBPcHRpb24ubWFwIGJvb2wgY2FwdHVyZSBpblxuICBsZXQgb25jZSA9IE9wdGlvbi5tYXAgYm9vbCBvbmNlIGluXG4gIGxldCBwYXNzaXZlID0gT3B0aW9uLm1hcCBib29sIHBhc3NpdmUgaW5cbiAgaWdub3JlIEBAXG4gIERvbS5hZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgZWx0IChEb20uRXZlbnQubWFrZSBldilcbiAgICAoRG9tLmhhbmRsZXIgKGZ1biBlIC0+IGJvb2wgKGYgZSkpKVxuXG5tb2R1bGUgRWwgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/KGNsYXNzZXMgPSBbXSkgPyhzdHlsZXMgPSBbXSkgPyhsaXN0ZW4gPSBbXSkgPyhhdHRyID0gW10pID90ZXh0IGZcbiAgICAgIGNoaWxkcmVuID1cbiAgICBsZXQgZWx0ID0gZiBEb21faHRtbC5kb2N1bWVudCBpblxuICAgIExpc3QuaXRlciAoZnVuIChldiwgZikgLT4gYWRkTGlzdGVuZXIgZWx0IGV2IGYpIGxpc3RlbiA7XG4gICAgYWRkQ2xhc3NlcyBlbHQgY2xhc3NlcyA7XG4gICAgc2V0Q1NTIGVsdCBzdHlsZXMgO1xuICAgIExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBzZXRBdHRyaWJ1dGUgZWx0IGsgdikgYXR0ciA7XG4gICAgc2V0VGV4dCBlbHQgdGV4dCA7XG4gICAgYXBwZW5kQ2hpbGRyZW4gZWx0IGNoaWxkcmVuIDtcbiAgICBlbHRcblxuICBsZXQgYnV0dG9uID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVCdXR0b24gY2hpbGRyZW5cblxuICBsZXQgZGl2ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVEaXYgY2hpbGRyZW5cblxuICBsZXQgYSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlQSBjaGlsZHJlblxuXG4gIGxldCBzcGFuID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVTcGFuIGNoaWxkcmVuXG5cbiAgbGV0IGZvcm0gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUZvcm0gY2hpbGRyZW5cblxuICBsZXQgb3B0aW9uID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVPcHRpb24gY2hpbGRyZW5cblxuICBsZXQgc2VsZWN0ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVTZWxlY3QgY2hpbGRyZW5cblxuICBsZXQgaW5wdXQgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0ICgpID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUlucHV0IFtdXG5cbiAgbGV0IGlmcmFtZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlSWZyYW1lIGNoaWxkcmVuXG5cbiAgbGV0IGxhYmVsID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVMYWJlbCBjaGlsZHJlblxuXG4gIGxldCB1bCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVWwgY2hpbGRyZW5cblxuICBsZXQgbGkgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUxpIGNoaWxkcmVuXG5cbiAgbGV0IGltZyA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlSW1nIGNoaWxkcmVuXG5cbiAgbGV0IHNjcmlwdCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlU2NyaXB0IGNoaWxkcmVuXG5cbiAgbGV0IHRhYmxlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUYWJsZSBjaGlsZHJlblxuXG4gIGxldCB0ciA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVHIgY2hpbGRyZW5cblxuICBsZXQgdGggP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRoIGNoaWxkcmVuXG5cbiAgbGV0IHRkID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUZCBjaGlsZHJlblxuZW5kXG5cbmxldCBlbmNhcHNlIHMgPSBcIlxcXCJcIiBeIHMgXiBcIlxcXCJcIlxuXG5sZXQgc3RyaW5nc190b19hcnJheSBsID0gXCJbXCIgXiBTdHJpbmcuY29uY2F0IFwiLFwiIGwgXiBcIl1cIlxuXG5sZXQgc3RyaW5nc190b19vYmplY3QgbCA9XG4gIGxldCBzID1cbiAgICBcIntcIlxuICAgIF4gU3RyaW5nLmNvbmNhdCBcIixcIiAoTGlzdC5tYXAgKGZ1biAoaywgdikgLT4gZW5jYXBzZSBrIF4gXCI6XCIgXiB2KSBsKVxuICAgIF4gXCJ9XCJcbiAgaW5cbiAgdHJ5IF9KU09OIyNwYXJzZSAoc3RyaW5nIHMpXG4gIHdpdGggXyAtPlxuICAgIGxvZ19zdHIgKFwiY2Fubm90IHBhcnNlIGpzb24gXCIgXiBzKSA7XG4gICAgVW5zYWZlLm9iaiBbfHxdXG4iLCJvcGVuIEV6anNfbWluXG5cbm1vZHVsZSBUeXBlcyA9IEV6anNfaWRiX3R5cGVzXG5vcGVuIFR5cGVzXG5cbnR5cGUgbW9kZSA9IFJFQURPTkxZIHwgUkVBRFdSSVRFIHwgVkVSU0lPTkNIQU5HRVxudHlwZSBkaXJlY3Rpb24gPSBORVhUIHwgUFJFViB8IE5FWFRVTklRVUUgfCBQUkVWVU5JUVVFXG5cbnR5cGUgZGJfb3B0aW9ucyA9IHsga2V5X3BhdGggOiBzdHJpbmcgb3B0aW9uOyBhdXRvX2luY3JlbWVudCA6IGJvb2wgb3B0aW9uIH1cblxudHlwZSBkYl91cGdyYWRlID0geyBvbGRfdmVyc2lvbiA6IGludDsgbmV3X3ZlcnNpb24gOiBpbnQgfVxuXG50eXBlIGluZGV4X29wdGlvbnMgPSB7IHVuaXF1ZSA6IGJvb2wgb3B0aW9uOyBtdWx0aV9lbnRyeSA6IGJvb2wgb3B0aW9uOyBsb2NhbGUgOiBib29sIG9wdGlvbiB9XG5cbm1vZHVsZSB0eXBlIFRyX3NpZyA9IHNpZ1xuICB0eXBlIHRcbiAgdHlwZSBqc1xuICB2YWwgdG9fanMgOiB0IC0+IGpzXG4gIHZhbCBvZl9qcyA6IGpzIC0+IHRcbmVuZFxuXG5sZXQgc3RyX29mX21vZGUgPSBmdW5jdGlvblxuICB8IFJFQURPTkxZIC0+IHN0cmluZyBcInJlYWRvbmx5XCJcbiAgfCBSRUFEV1JJVEUgLT4gc3RyaW5nIFwicmVhZHdyaXRlXCJcbiAgfCBWRVJTSU9OQ0hBTkdFIC0+IHN0cmluZyBcInZlcnNpb25jaGFuZ2VcIlxuXG5sZXQgc3RyX29mX2RpcmVjdGlvbiA9IGZ1bmN0aW9uXG4gIHwgTkVYVCAtPiBzdHJpbmcgXCJuZXh0XCJcbiAgfCBQUkVWIC0+IHN0cmluZyBcInByZXZcIlxuICB8IE5FWFRVTklRVUUgLT4gc3RyaW5nIFwibmV4dHVuaXF1ZVwiXG4gIHwgUFJFVlVOSVFVRSAtPiBzdHJpbmcgXCJwcmV2dW5pcXVlXCJcblxubGV0IGlEQktleVJhbmdlIDogVW5zYWZlLmFueSBpREJLZXlSYW5nZSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwiSURCS2V5UmFuZ2VcIlxubGV0IGluZGV4ZWREQiA6IGpzX3N0cmluZyB0IGlEQkZhY3RvcnkgdCA9IFVuc2FmZS52YXJpYWJsZSBcIndpbmRvdy5pbmRleGVkREJcIlxuXG5sZXQgcmVzdWx0IHIgPSByIyMucmVzdWx0XG5cbmxldCB3cmFwID9lcnJvciA/Y2FsbGJhY2sgciA9XG4gIHRyeVxuICAgIGxldCByID0gTGF6eS5mb3JjZSByIGluXG4gICAgciMjLm9uc3VjY2VzcyA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIChyZXN1bHQgcikpKSBjYWxsYmFjaztcbiAgICByIyMub25lcnJvciA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIHIpKSBlcnJvclxuICB3aXRoIGV4biAtPlxuICAgIG1hdGNoIGVycm9yIHdpdGggTm9uZSAtPiByYWlzZSBleG4gfCBTb21lIGYgLT4gY2F0Y2hfZXhuIChmdW4gZSAtPiBmIChVbnNhZmUuY29lcmNlIGUpKSBleG5cblxubGV0IHdyYXBmID9lcnJvciA/Y2FsbGJhY2sgZyByID1cbiAgdHJ5XG4gICAgbGV0IHIgPSBMYXp5LmZvcmNlIHIgaW5cbiAgICByIyMub25zdWNjZXNzIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgKGcgQEAgcmVzdWx0IHIpKSkgY2FsbGJhY2s7XG4gICAgciMjLm9uZXJyb3IgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiByKSkgZXJyb3JcbiAgd2l0aCBleG4gLT5cbiAgICBtYXRjaCBlcnJvciB3aXRoIE5vbmUgLT4gcmFpc2UgZXhuIHwgU29tZSBmIC0+IGNhdGNoX2V4biAoZnVuIGUgLT4gZiAoVW5zYWZlLmNvZXJjZSBlKSkgZXhuXG5cbmxldCBkYl91cGdyYWRlX2V2ZW50IChlIDogaURCVmVyc2lvbkNoYW5nZUV2ZW50IHQpID0ge1xuICBvbGRfdmVyc2lvbiA9IGUjIy5vbGRWZXJzaW9uO1xuICBuZXdfdmVyc2lvbiA9IGUjIy5uZXdWZXJzaW9uO1xufVxuXG5sZXQgb3BlbkRCID91cGdyYWRlID9lcnJvciA/dmVyc2lvbiBuYW1lIGNhbGxiYWNrID1cbiAgbGV0IGluZGV4ZWREQiA6IF8gaURCRmFjdG9yeSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwid2luZG93LmluZGV4ZWREQlwiIGluXG4gIGxldCByID0gbGF6eSAoaW5kZXhlZERCIyNfb3BlbiAoc3RyaW5nIG5hbWUpIChBT3B0Lm9wdGlvbiB2ZXJzaW9uKSkgaW5cbiAgd3JhcCA/ZXJyb3IgfmNhbGxiYWNrIHI7XG4gIGxldCByID0gTGF6eS5mb3JjZSByIGluXG4gIHIjIy5vbnVwZ3JhZGVuZWVkZWQgOj1cbiAgICBBT3B0LmFvcHQgKGZ1biB1IC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBlIC0+XG4gICAgICAgIGxldCB2ID0gZGJfdXBncmFkZV9ldmVudCBlIGluXG4gICAgICAgIGxldCBkYiA9IHJlc3VsdCByIGluXG4gICAgICAgIHUgZGIgdikpIHVwZ3JhZGVcblxubGV0IHRyYW5zYWN0aW9uIHIgOiBpREJUcmFuc2FjdGlvbiB0ID0gciMjLnRyYW5zYWN0aW9uXG5cbmxldCBjcmVhdGVfZGJfb3B0aW9ucyB7a2V5X3BhdGg7IGF1dG9faW5jcmVtZW50fSA6IGNyZWF0ZV9kYl9vcHRpb25zIHQgPSBvYmplY3QlanNcbiAgdmFsIGtleVBhdGggPSBBT3B0LmFvcHQgc3RyaW5nIGtleV9wYXRoXG4gIHZhbCBhdXRvSW5jcmVtZW50ID0gQU9wdC5hb3B0IGJvb2wgYXV0b19pbmNyZW1lbnRcbmVuZFxuXG5sZXQgY3JlYXRlX3N0b3JlID9vcHRpb25zIChkYiA6IGlEQkRhdGFiYXNlIHQpIG5hbWUgPVxuICBVbnNhZmUuY29lcmNlIEBAXG4gIGRiIyNjcmVhdGVPYmplY3RTdG9yZSAoc3RyaW5nIG5hbWUpIChBT3B0LmFvcHQgY3JlYXRlX2RiX29wdGlvbnMgb3B0aW9ucylcblxubGV0IGdldF9zdG9yZSA/bW9kZSAoZGIgOiBpREJEYXRhYmFzZSB0KSBuYW1lIDogKF8sIF8pIGlEQk9iamVjdFN0b3JlIHQgPVxuICBsZXQgdHIgPSBkYiMjdHJhbnNhY3Rpb24gKGFycmF5IFt8IHN0cmluZyBuYW1lIHxdKSAoQU9wdC5hb3B0IHN0cl9vZl9tb2RlIG1vZGUpIGluXG4gIFVuc2FmZS5jb2VyY2UgQEAgdHIjI29iamVjdFN0b3JlIChzdHJpbmcgbmFtZSlcblxubW9kdWxlIFN0b3JlKEsgOiBUcl9zaWcpKEQgOiBUcl9zaWcpID0gc3RydWN0XG5cbiAgdHlwZSBzdG9yZSA9IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0XG4gIHR5cGUga2V5cyA9IEsgb2YgSy50IHwgS1Igb2YgSy5qcyBpREJLZXlSYW5nZSB0XG5cbiAgbGV0IGNyZWF0ZSA/b3B0aW9ucyBkYiBuYW1lIDogc3RvcmUgPVxuICAgIGNyZWF0ZV9zdG9yZSA/b3B0aW9ucyBkYiBuYW1lXG5cbiAgbGV0IHN0b3JlID9tb2RlIGRiIG5hbWUgOiBzdG9yZSA9XG4gICAgZ2V0X3N0b3JlID9tb2RlIGRiIG5hbWVcblxuICBsZXQgYWRkID9jYWxsYmFjayA/ZXJyb3IgP2tleSAoc3QgOiBzdG9yZSkgKHggOiBELnQpID1cbiAgICB3cmFwZiA/Y2FsbGJhY2sgP2Vycm9yIEsub2ZfanMgQEAgbGF6eSAoc3QjI2FkZCAoRC50b19qcyB4KSAoQU9wdC5hb3B0IEsudG9fanMga2V5KSlcblxuICBsZXQgcHV0ID9jYWxsYmFjayA/ZXJyb3IgP2tleSAoc3QgOiBzdG9yZSkgKHggOiBELnQpID1cbiAgICB3cmFwID9jYWxsYmFjayA/ZXJyb3IgQEAgbGF6eSAoc3QjI3B1dCAoRC50b19qcyB4KSAoQU9wdC5hb3B0IEsudG9fanMga2V5KSlcblxuICBsZXQgcmFuZ2UgP29sb3dlciA/b3VwcGVyID9sb3dlciA/dXBwZXIgKCkgPVxuICAgIGxldCBpREJLZXlSYW5nZSA6IEsuanMgaURCS2V5UmFuZ2UgdCA9IFVuc2FmZS52YXJpYWJsZSBcIklEQktleVJhbmdlXCIgaW5cbiAgICBtYXRjaCBsb3dlciwgdXBwZXIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFNvbWUgbG93ZXIsIE5vbmUgLT5cbiAgICAgIEtSIChpREJLZXlSYW5nZSMjbG93ZXJCb3VuZCAoSy50b19qcyBsb3dlcikgKEFPcHQuYW9wdCBib29sIG9sb3dlcikpXG4gICAgfCBOb25lLCBTb21lIHVwcGVyIC0+XG4gICAgICBLUiAoaURCS2V5UmFuZ2UjI3VwcGVyQm91bmQgKEsudG9fanMgdXBwZXIpIChBT3B0LmFvcHQgYm9vbCBvdXBwZXIpKVxuICAgIHwgU29tZSBsb3dlciwgU29tZSB1cHBlciAtPlxuICAgICAgS1IgKGlEQktleVJhbmdlIyNib3VuZFxuICAgICAgICAgICAgKEsudG9fanMgbG93ZXIpIChLLnRvX2pzIHVwcGVyKVxuICAgICAgICAgICAgKEFPcHQuYW9wdCBib29sIG9sb3dlcikgKEFPcHQuYW9wdCBib29sIG91cHBlcikpXG5cbiAgbGV0IGNvdW50ID9lcnJvciA/a2V5IChzdCA6IHN0b3JlKSAoY2FsbGJhY2sgOiBpbnQgLT4gdW5pdCkgPVxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjY291bnQgQU9wdC51bmRlZmluZWQpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjY291bnQgKEFPcHQuZGVmIChLLnRvX2pzIGspKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjY291bnRfcmFuZ2UgKEFPcHQuZGVmIHIpKVxuXG4gIGxldCBnZXQgP2Vycm9yIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBELnQgb3B0aW9uIC0+IHVuaXQpIGsgPVxuICAgIGxldCBvZl9qcyBqcyA9IG1hdGNoIEFPcHQudG9fb3B0aW9uIGpzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUganMgLT4gU29tZSAoRC5vZl9qcyBqcykgaW5cbiAgICBtYXRjaCBrIHdpdGhcbiAgICB8IEsga2V5IC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldCAoSy50b19qcyBrZXkpKVxuICAgIHwgS1IgcmFuZ2UgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0X3JhbmdlIHJhbmdlKVxuXG4gIGxldCBnZXRfYWxsID9lcnJvciA/a2V5ID9jb3VudCAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgKGNhbGxiYWNrIDogRC50IGxpc3QgLT4gdW5pdCkgPVxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEQub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGwgQU9wdC51bmRlZmluZWQgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgRC5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbCAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBELm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5vcHRpb24gY291bnQpKVxuXG4gIGxldCBnZXRfa2V5ID9lcnJvciAoc3QgOiAoSy5qcywgXykgaURCT2JqZWN0U3RvcmUgdCkgKGNhbGxiYWNrIDogSy50IG9wdGlvbiAtPiB1bml0KSBrID1cbiAgICBsZXQgb2ZfanMganMgPSBtYXRjaCBBT3B0LnRvX29wdGlvbiBqcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGpzIC0+IFNvbWUgKEsub2ZfanMganMpIGluXG4gICAgbWF0Y2ggayB3aXRoXG4gICAgfCBLIGtleSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXRLZXkgKEsudG9fanMga2V5KSlcbiAgICB8IEtSIHJhbmdlIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldEtleV9yYW5nZSByYW5nZSlcblxuICBsZXQgZ2V0X2FsbF9rZXlzID9lcnJvciA/a2V5ID9jb3VudCAoc3QgOiAoSy5qcywgXykgaURCT2JqZWN0U3RvcmUgdCkgKGNhbGxiYWNrIDogSy50IGxpc3QgLT4gdW5pdCkgPVxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEsub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxLZXlzIEFPcHQudW5kZWZpbmVkIChBT3B0Lm9wdGlvbiBjb3VudCkpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEsub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxLZXlzIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEsub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxLZXlzX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5vcHRpb24gY291bnQpKVxuXG4gIGxldCBkZWxldGUgP2NhbGxiYWNrID9lcnJvciAoc3QgOiAoSy5qcywgXykgaURCT2JqZWN0U3RvcmUgdCkgPSBmdW5jdGlvblxuICAgIHwgSyBrZXkgLT4gd3JhcCA/ZXJyb3IgP2NhbGxiYWNrIEBAIGxhenkgKHN0IyNkZWxldGUgKEsudG9fanMga2V5KSlcbiAgICB8IEtSIHJhbmdlIC0+IHdyYXAgP2Vycm9yID9jYWxsYmFjayBAQCBsYXp5IChzdCMjZGVsZXRlX3JhbmdlIHJhbmdlKVxuXG4gIGxldCBpdGVyID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiBELnQgLT4gdW5pdCkgPVxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBmIGsgKEQub2ZfanMgYyMjLnZhbHVlKTtcbiAgICAgICAgICBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZFxuICAgICAgICB8IE5vbmUgLT4gYyMjY29udGludWUgQU9wdC51bmRlZmluZWQgaW5cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yIEFPcHQudW5kZWZpbmVkIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcblxuICBsZXQgZm9sZCA/ZXJyb3IgP2tleSA/ZGlyZWN0aW9uIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KVxuICAgICAgKGYgOiBLLnQgLT4gRC50IC0+ICdhIC0+ICdhKSAoc3RhcnQgOiAnYSkgKGNhbGxiYWNrIDogJ2EgLT4gdW5pdCkgPVxuICAgIGxldCBhY2MgPSByZWYgc3RhcnQgaW5cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjYWxsYmFjayAhYWNjXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBhY2MgOj0gZiBrIChELm9mX2pzIGMjIy52YWx1ZSkgIWFjYztcbiAgICAgICAgICBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZFxuICAgICAgICB8IE5vbmUgLT4gYyMjY29udGludWUgQU9wdC51bmRlZmluZWQgaW5cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yIEFPcHQudW5kZWZpbmVkIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuQ3Vyc29yX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcblxuICBsZXQgaXRlcl9rZXlzID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiB1bml0KSA9XG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGYgaztcbiAgICAgICAgICBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZFxuICAgICAgICB8IE5vbmUgLT4gYyMjY29udGludWUgQU9wdC51bmRlZmluZWQgaW5cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yIEFPcHQudW5kZWZpbmVkIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcblxuICBsZXQgZm9sZF9rZXlzID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiAnYSAtPiAnYSkgKHN0YXJ0IDogJ2EpIChjYWxsYmFjayA6ICdhIC0+IHVuaXQpID1cbiAgICBsZXQgYWNjID0gcmVmIHN0YXJ0IGluXG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY2FsbGJhY2sgIWFjY1xuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgYWNjIDo9IGYgayAhYWNjO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBjbGVhciA/ZXJyb3IgP2NhbGxiYWNrIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSA9XG4gICAgd3JhcGYgP2NhbGxiYWNrID9lcnJvciAoZnVuIF8gLT4gKCkpIEBAIGxhenkgc3QjI2NsZWFyXG5cbiAgbGV0IGNyZWF0ZV9pbmRleF9vcHRpb25zIHt1bmlxdWU7IG11bHRpX2VudHJ5OyBsb2NhbGV9IDogY3JlYXRlX2luZGV4X29wdGlvbnMgdCA9IG9iamVjdCVqc1xuICAgIHZhbCB1bmlxdWUgPSBBT3B0LmFvcHQgYm9vbCB1bmlxdWVcbiAgICB2YWwgbXVsdGlFbnRyeSA9IEFPcHQuYW9wdCBib29sIG11bHRpX2VudHJ5XG4gICAgdmFsIGxvY2FsZSA9IEFPcHQuYW9wdCBib29sIGxvY2FsZVxuICBlbmRcblxuICBsZXQgY3JlYXRlX2luZGV4ID9vcHRpb25zIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSBuYW1lIGtleV9wYXRoID1cbiAgICBsZXQgb3B0aW9ucyA9IEFPcHQuYW9wdCBjcmVhdGVfaW5kZXhfb3B0aW9ucyBvcHRpb25zIGluXG4gICAgc3QjI2NyZWF0ZUluZGV4IChzdHJpbmcgbmFtZSkgKHN0cmluZyBrZXlfcGF0aCkgb3B0aW9uc1xuXG4gIGxldCBkZWxldGVfaW5kZXggKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIG5hbWUgPVxuICAgIGlnbm9yZSBAQCBzdCMjZGVsZXRlSW5kZXggKHN0cmluZyBuYW1lKVxuXG4gIGxldCBnZXRfaW5kZXggKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIG5hbWUgPVxuICAgIHN0IyNpbmRleCAoc3RyaW5nIG5hbWUpXG5cbmVuZFxuXG5tb2R1bGUgTm9UcihTIDogc2lnIHR5cGUgdCBlbmQpIDogVHJfc2lnIHdpdGggdHlwZSB0ID0gUy50IGFuZCB0eXBlIGpzID0gUy50ID0gc3RydWN0XG4gIHR5cGUgdCA9IFMudFxuICB0eXBlIGpzID0gUy50XG4gIGxldCB0b19qcyB4ID0geFxuICBsZXQgb2ZfanMgeCA9IHhcbmVuZFxuXG5tb2R1bGUgSW50VHIgOiAoVHJfc2lnIHdpdGggdHlwZSBqcyA9IGludCBhbmQgdHlwZSB0ID0gaW50KSA9IE5vVHIoc3RydWN0IHR5cGUgdCA9IGludCBlbmQpXG5cbm1vZHVsZSBTdHJpbmdUciA6IFRyX3NpZyB3aXRoIHR5cGUganMgPSBqc19zdHJpbmcgdCBhbmQgdHlwZSB0ID0gc3RyaW5nID0gc3RydWN0XG4gIHR5cGUganMgPSBqc19zdHJpbmcgdFxuICB0eXBlIHQgPSBzdHJpbmdcbiAgbGV0IHRvX2pzIHggPSBzdHJpbmcgeFxuICBsZXQgb2ZfanMgeCA9IHRvX3N0cmluZyB4XG5lbmRcblxubW9kdWxlIE51bWJlclRyIDogVHJfc2lnIHdpdGggdHlwZSBqcyA9IG51bWJlciB0IGFuZCB0eXBlIHQgPSBmbG9hdCA9IHN0cnVjdFxuICB0eXBlIGpzID0gbnVtYmVyIHRcbiAgdHlwZSB0ID0gZmxvYXRcbiAgbGV0IHRvX2pzIHggPSBudW1iZXJfb2ZfZmxvYXQgeFxuICBsZXQgb2ZfanMgeCA9IGZsb2F0X29mX251bWJlciB4XG5lbmRcblxubW9kdWxlIERhdGVUciA6IFRyX3NpZyB3aXRoIHR5cGUganMgPSBkYXRlIHQgYW5kIHR5cGUgdCA9IHN0cmluZyA9IHN0cnVjdFxuICB0eXBlIGpzID0gZGF0ZSB0XG4gIHR5cGUgdCA9IHN0cmluZ1xuICBsZXQgdG9fanMgeCA9IG5ldyVqcyBkYXRlX2Zyb21UaW1lVmFsdWUgKGRhdGUjI3BhcnNlIChzdHJpbmcgeCkpXG4gIGxldCBvZl9qcyB4ID0gdG9fc3RyaW5nIHgjI3RvTG9jYWxlU3RyaW5nXG5lbmRcbiIsIm9wZW4hIEJhc2VcblxudHlwZSB0ID0gU3RkbGliLmluX2NoYW5uZWxcblxubGV0IGVxdWFsICh0MSA6IHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfaW5cbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19pblxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUuaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBzdGRpbiA9IFN0ZGxpYi5zdGRpblxuXG5sZXQgY3JlYXRlID8oYmluYXJ5ID0gdHJ1ZSkgZmlsZSA9XG4gIGxldCBmbGFncyA9IFsgT3Blbl9yZG9ubHkgXSBpblxuICBsZXQgZmxhZ3MgPSBpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSA6OiBmbGFncyBlbHNlIGZsYWdzIGluXG4gIFN0ZGxpYi5vcGVuX2luX2dlbiBmbGFncyAwbzAwMCBmaWxlXG47O1xuXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2VfaW5cbmxldCB3aXRoX2ZpbGUgP2JpbmFyeSBmaWxlIH5mID0gRXhuLnByb3RlY3R4IChjcmVhdGUgP2JpbmFyeSBmaWxlKSB+ZiB+ZmluYWxseTpjbG9zZVxuXG5sZXQgbWF5X2VvZiBmID1cbiAgdHJ5IFNvbWUgKGYgKCkpIHdpdGhcbiAgfCBFbmRfb2ZfZmlsZSAtPiBOb25lXG47O1xuXG5sZXQgaW5wdXQgdCB+YnVmIH5wb3MgfmxlbiA9IFN0ZGxpYi5pbnB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgcmVhbGx5X2lucHV0IHQgfmJ1ZiB+cG9zIH5sZW4gPSBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLnJlYWxseV9pbnB1dCB0IGJ1ZiBwb3MgbGVuKVxubGV0IHJlYWxseV9pbnB1dF9leG4gdCB+YnVmIH5wb3MgfmxlbiA9IFN0ZGxpYi5yZWFsbHlfaW5wdXQgdCBidWYgcG9zIGxlblxubGV0IGlucHV0X2J5dGUgdCA9IG1heV9lb2YgKGZ1biAoKSAtPiBTdGRsaWIuaW5wdXRfYnl0ZSB0KVxubGV0IGlucHV0X2NoYXIgdCA9IG1heV9lb2YgKGZ1biAoKSAtPiBTdGRsaWIuaW5wdXRfY2hhciB0KVxubGV0IGlucHV0X2JpbmFyeV9pbnQgdCA9IG1heV9lb2YgKGZ1biAoKSAtPiBTdGRsaWIuaW5wdXRfYmluYXJ5X2ludCB0KVxubGV0IHVuc2FmZV9pbnB1dF92YWx1ZSB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF92YWx1ZSB0KVxubGV0IGlucHV0X2J1ZmZlciB0IGJ1ZiB+bGVuID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5CdWZmZXIuYWRkX2NoYW5uZWwgYnVmIHQgbGVuKVxubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfaW5cblxubGV0IGlucHV0X2FsbCB0ID1cbiAgKCogV2UgdXNlIDY1NTM2IGJlY2F1c2UgdGhhdCBpcyB0aGUgc2l6ZSBvZiBPQ2FtbCdzIElPIGJ1ZmZlcnMuICopXG4gIGxldCBjaHVua19zaXplID0gNjU1MzYgaW5cbiAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgY2h1bmtfc2l6ZSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIFN0ZGxpYi5CdWZmZXIuYWRkX2NoYW5uZWwgYnVmZmVyIHQgY2h1bmtfc2l6ZTtcbiAgICBsb29wICgpXG4gIGluXG4gIHRyeSBsb29wICgpIHdpdGhcbiAgfCBFbmRfb2ZfZmlsZSAtPiBCdWZmZXIuY29udGVudHMgYnVmZmVyXG47O1xuXG5sZXQgdHJpbSB+Zml4X3dpbl9lb2wgbGluZSA9XG4gIGlmIGZpeF93aW5fZW9sXG4gIHRoZW4gKFxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGxpbmUgaW5cbiAgICBpZiBsZW4gPiAwICYmIENoYXIuZXF1YWwgKFN0cmluZy5nZXQgbGluZSAobGVuIC0gMSkpICdcXHInXG4gICAgdGhlbiBTdHJpbmcuc3ViIGxpbmUgfnBvczowIH5sZW46KGxlbiAtIDEpXG4gICAgZWxzZSBsaW5lKVxuICBlbHNlIGxpbmVcbjs7XG5cbmxldCBpbnB1dF9saW5lID8oZml4X3dpbl9lb2wgPSB0cnVlKSB0ID1cbiAgbWF0Y2ggbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF9saW5lIHQpIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGxpbmUgLT4gU29tZSAodHJpbSB+Zml4X3dpbl9lb2wgbGluZSlcbjs7XG5cbmxldCBpbnB1dF9saW5lX2V4biA/KGZpeF93aW5fZW9sID0gdHJ1ZSkgdCA9XG4gIGxldCBsaW5lID0gU3RkbGliLmlucHV0X2xpbmUgdCBpblxuICB0cmltIH5maXhfd2luX2VvbCBsaW5lXG47O1xuXG5sZXQgZm9sZF9saW5lcyA/Zml4X3dpbl9lb2wgdCB+aW5pdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBhYyA9XG4gICAgbWF0Y2ggaW5wdXRfbGluZSA/Zml4X3dpbl9lb2wgdCB3aXRoXG4gICAgfCBOb25lIC0+IGFjXG4gICAgfCBTb21lIGxpbmUgLT4gbG9vcCAoZiBhYyBsaW5lKVxuICBpblxuICBsb29wIGluaXRcbjs7XG5cbmxldCBpbnB1dF9saW5lcyA/Zml4X3dpbl9lb2wgdCA9XG4gIExpc3QucmV2IChmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0OltdIH5mOihmdW4gbGluZXMgbGluZSAtPiBsaW5lIDo6IGxpbmVzKSlcbjs7XG5cbmxldCBpdGVyX2xpbmVzID9maXhfd2luX2VvbCB0IH5mID1cbiAgZm9sZF9saW5lcyA/Zml4X3dpbl9lb2wgdCB+aW5pdDooKSB+ZjooZnVuICgpIGxpbmUgLT4gZiBsaW5lKVxuOztcblxubGV0IHJlYWRfbGluZXMgP2ZpeF93aW5fZW9sIGZuYW1lID0gd2l0aF9maWxlIGZuYW1lIH5mOihpbnB1dF9saW5lcyA/Zml4X3dpbl9lb2wpXG5sZXQgcmVhZF9hbGwgZm5hbWUgPSB3aXRoX2ZpbGUgZm5hbWUgfmY6aW5wdXRfYWxsXG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgdCA9IFN0ZGxpYi5vdXRfY2hhbm5lbFxuXG5sZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgc2VlayA9IFN0ZGxpYi5MYXJnZUZpbGUuc2Vla19vdXRcbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19vdXRcbmxldCBsZW5ndGggPSBTdGRsaWIuTGFyZ2VGaWxlLm91dF9jaGFubmVsX2xlbmd0aFxubGV0IHN0ZG91dCA9IFN0ZGxpYi5zdGRvdXRcbmxldCBzdGRlcnIgPSBTdGRsaWIuc3RkZXJyXG5cbmxldCBzZXhwX29mX3QgdCA9XG4gIGlmIHBoeXNfZXF1YWwgdCBzdGRlcnJcbiAgdGhlbiBTZXhwLkF0b20gXCI8c3RkZXJyPlwiXG4gIGVsc2UgaWYgcGh5c19lcXVhbCB0IHN0ZG91dFxuICB0aGVuIFNleHAuQXRvbSBcIjxzdGRvdXQ+XCJcbiAgZWxzZSBTZXhwLkF0b20gXCI8T3V0X2NoYW5uZWwudD5cIlxuOztcblxudHlwZSAnYSB3aXRoX2NyZWF0ZV9hcmdzID1cbiAgP2JpbmFyeTpib29sIC0+ID9hcHBlbmQ6Ym9vbCAtPiA/ZmFpbF9pZl9leGlzdHM6Ym9vbCAtPiA/cGVybTppbnQgLT4gJ2FcblxubGV0IGNyZWF0ZVxuICAgICAgPyhiaW5hcnkgPSB0cnVlKVxuICAgICAgPyhhcHBlbmQgPSBmYWxzZSlcbiAgICAgID8oZmFpbF9pZl9leGlzdHMgPSBmYWxzZSlcbiAgICAgID8ocGVybSA9IDBvNjY2KVxuICAgICAgZmlsZVxuICA9XG4gIGxldCBmbGFncyA9IFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQgXSBpblxuICBsZXQgZmxhZ3MgPSAoaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgZWxzZSBPcGVuX3RleHQpIDo6IGZsYWdzIGluXG4gIGxldCBmbGFncyA9IChpZiBhcHBlbmQgdGhlbiBPcGVuX2FwcGVuZCBlbHNlIE9wZW5fdHJ1bmMpIDo6IGZsYWdzIGluXG4gIGxldCBmbGFncyA9IGlmIGZhaWxfaWZfZXhpc3RzIHRoZW4gT3Blbl9leGNsIDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgU3RkbGliLm9wZW5fb3V0X2dlbiBmbGFncyBwZXJtIGZpbGVcbjs7XG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX291dFxubGV0IGZsdXNoID0gU3RkbGliLmZsdXNoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfbm9fZXJyID0gU3RkbGliLmNsb3NlX291dF9ub2VyclxubGV0IG91dHB1dCB0IH5idWYgfnBvcyB+bGVuID0gU3RkbGliLm91dHB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyB0IH5idWYgfnBvcyB+bGVuID0gU3RkbGliLm91dHB1dF9zdWJzdHJpbmcgdCBidWYgcG9zIGxlblxubGV0IG91dHB1dF9zdHJpbmcgPSBTdGRsaWIub3V0cHV0X3N0cmluZ1xubGV0IG91dHB1dF9ieXRlcyA9IFN0ZGxpYi5vdXRwdXRfYnl0ZXNcbmxldCBvdXRwdXRfY2hhciA9IFN0ZGxpYi5vdXRwdXRfY2hhclxubGV0IG91dHB1dF9ieXRlID0gU3RkbGliLm91dHB1dF9ieXRlXG5sZXQgb3V0cHV0X2JpbmFyeV9pbnQgPSBTdGRsaWIub3V0cHV0X2JpbmFyeV9pbnRcbmxldCBvdXRwdXRfYnVmZmVyID0gU3RkbGliLkJ1ZmZlci5vdXRwdXRfYnVmZmVyXG5sZXQgb3V0cHV0X3ZhbHVlID0gU3RkbGliLm91dHB1dF92YWx1ZVxubGV0IG5ld2xpbmUgdCA9IG91dHB1dF9zdHJpbmcgdCBcIlxcblwiXG5cbmxldCBvdXRwdXRfbGluZXMgdCBsaW5lcyA9XG4gIExpc3QuaXRlciBsaW5lcyB+ZjooZnVuIGxpbmUgLT5cbiAgICBvdXRwdXRfc3RyaW5nIHQgbGluZTtcbiAgICBuZXdsaW5lIHQpXG47O1xuXG5sZXQgcHJpbnRmID0gU3RkbGliLlByaW50Zi5wcmludGZcbmxldCBlcHJpbnRmID0gU3RkbGliLlByaW50Zi5lcHJpbnRmXG5sZXQgZnByaW50ZiA9IFN0ZGxpYi5QcmludGYuZnByaW50ZlxubGV0IGtmcHJpbnRmID0gU3RkbGliLlByaW50Zi5rZnByaW50ZlxubGV0IHByaW50X3N0cmluZyA9IFN0ZGxpYi5wcmludF9zdHJpbmdcbmxldCBwcmludF9lbmRsaW5lID0gU3RkbGliLnByaW50X2VuZGxpbmVcbmxldCBwcmVycl9lbmRsaW5lID0gU3RkbGliLnByZXJyX2VuZGxpbmVcblxubGV0IHByaW50X3MgP21hY2ggc2V4cCA9XG4gIHByaW50X2VuZGxpbmVcbiAgICAobWF0Y2ggbWFjaCB3aXRoXG4gICAgIHwgU29tZSAoKSAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHBcbiAgICAgfCBOb25lIC0+IFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKVxuOztcblxubGV0IGVwcmludF9zID9tYWNoIHNleHAgPVxuICBwcmVycl9lbmRsaW5lXG4gICAgKG1hdGNoIG1hY2ggd2l0aFxuICAgICB8IFNvbWUgKCkgLT4gU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwXG4gICAgIHwgTm9uZSAtPiBTZXhwLnRvX3N0cmluZ19odW0gc2V4cClcbjs7XG5cbmxldCB3aXRoX2ZpbGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlIH5mID1cbiAgRXhuLnByb3RlY3R4IChjcmVhdGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlKSB+ZiB+ZmluYWxseTpjbG9zZVxuOztcblxubGV0IHdyaXRlX2xpbmVzIGZpbGUgbGluZXMgPSB3aXRoX2ZpbGUgZmlsZSB+ZjooZnVuIHQgLT4gb3V0cHV0X2xpbmVzIHQgbGluZXMpXG5sZXQgd3JpdGVfYWxsIGZpbGUgfmRhdGEgPSB3aXRoX2ZpbGUgZmlsZSB+ZjooZnVuIHQgLT4gb3V0cHV0X3N0cmluZyB0IGRhdGEpXG4iLCJtb2R1bGUgQ29udiA9IFNleHBsaWIwLlNleHBfY29udlxubW9kdWxlIENvbnZfZXJyb3IgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Jcbm1vZHVsZSBTZXhwX2dyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXJcblxubW9kdWxlIFNleHAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwXG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG5lbmRcblxubW9kdWxlIFNleHBhYmxlID0gU2V4cGxpYjAuU2V4cGFibGVcbiIsIm1vZHVsZSBMaXN0ID0gTGlzdFxuXG5tb2R1bGUgRW51bWVyYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgYWxsIDogdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gKCdhLCAnYikgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAnYyBsaXN0IC0+ICgnYSwgJ2IsICdjKSB0IGxpc3RcbiAgZW5kXG5lbmRcbiIsIm9wZW4gQmFzZVxuXG50eXBlICdhIHRlc3RfcHJlZFxuICA9ID9oZXJlOkxleGluZy5wb3NpdGlvbiBsaXN0XG4gIC0+ID9tZXNzYWdlOnN0cmluZ1xuICAtPiAoJ2EgLT4gYm9vbClcbiAgLT4gJ2FcbiAgLT4gdW5pdFxuXG50eXBlICdhIHRlc3RfZXFcbiAgPSA/aGVyZTpMZXhpbmcucG9zaXRpb24gbGlzdFxuICAtPiA/bWVzc2FnZTpzdHJpbmdcbiAgLT4gP2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAtPiAnYVxuICAtPiAnYVxuICAtPiB1bml0XG5cbnR5cGUgJ2EgdGVzdF9yZXN1bHRcbiAgPSA/aGVyZTpMZXhpbmcucG9zaXRpb24gbGlzdFxuICAtPiA/bWVzc2FnZTpzdHJpbmdcbiAgLT4gP2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAtPiBleHBlY3Q6J2FcbiAgLT4gJ2FcbiAgLT4gdW5pdFxuXG5leGNlcHRpb24gRSBvZiBzdHJpbmcgKiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZyBib2R5ID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIG1hdGNoIG1lc3NhZ2Ugd2l0aFxuICAgIHwgTm9uZSAtPiB0YWdcbiAgICB8IFNvbWUgcyAtPiBzIF4gXCI6IFwiIF4gdGFnXG4gIGluXG4gIGxldCBzZXhwID1cbiAgICBTZXhwLkxpc3QgKFxuICAgICAgYm9keVxuICAgICAgQCBbIFNleHAuTGlzdCBbIFNleHAuQXRvbSBcIkxvY1wiOyBTZXhwLkF0b20gcG9zIF0gXVxuICAgICAgQCBiZWdpbiBtYXRjaCBoZXJlIHdpdGhcbiAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICB8IF8gLT4gWyBTZXhwLkxpc3QgWyBTZXhwLkF0b20gXCJTdGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IFslc2V4cF9vZjogU291cmNlX2NvZGVfcG9zaXRpb24udCBsaXN0XSBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBdIF1cbiAgICAgIGVuZFxuICAgIClcbiAgaW5cbiAgKCogSGVyZSBhbmQgaW4gb3RoZXIgcGxhY2VzIHdlIHJldHVybiBleGNlcHRpb25zLCByYXRoZXIgdGhhbiBkaXJlY3RseSByYWlzaW5nLCBhbmRcbiAgICAgaW5zdGVhZCByYWlzZSBhdCB0aGUgbGF0ZXN0IG1vbWVudCBwb3NzaWJsZSwgc28gYmFja3RyYWNlIGRvbid0IGluY2x1ZGUgbm9pc2UgZnJvbVxuICAgICB0aGVzZSBmdW5jdGlvbnMgdGhhdCBjb25zdHJ1Y3QgZXhjZXB0aW9ucy4gKilcbiAgRSAobWVzc2FnZSwgc2V4cClcblxubGV0IFtAY29sZF0gZXhuX3Rlc3RfcHJlZCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5zZXhwaWZpZXIgdCA9XG4gIGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZzpcInByZWRpY2F0ZSBmYWlsZWRcIiBbXG4gICAgU2V4cC5MaXN0IFtTZXhwLkF0b20gXCJWYWx1ZVwiOyBzZXhwaWZpZXIgdF1cbiAgXVxuXG5sZXQgdGVzdF9wcmVkIH5wb3MgfnNleHBpZmllciB+aGVyZSA/bWVzc2FnZSBwcmVkaWNhdGUgdCA9XG4gIGlmIG5vdCAocHJlZGljYXRlIHQpIHRoZW5cbiAgICByYWlzZSAoZXhuX3Rlc3RfcHJlZCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5zZXhwaWZpZXIgdClcblxubGV0IHJfZGlmZiA6IChmcm9tXzpzdHJpbmcgLT4gdG9fOnN0cmluZyAtPiB1bml0KSBvcHRpb24gcmVmID0gcmVmICAgTm9uZVxubGV0IHNldF9kaWZmX2Z1bmN0aW9uIGYgPSByX2RpZmYgOj0gZlxuXG5sZXQgW0Bjb2xkXSB0ZXN0X3Jlc3VsdF9vcl9lcV9mYWlsZWQgfnNleHBpZmllciB+ZXhwZWN0IH5nb3QgPVxuICBsZXQgZ290ID0gc2V4cGlmaWVyIGdvdCBpblxuICBsZXQgZXhwZWN0ID0gc2V4cGlmaWVyIGV4cGVjdCBpblxuICBiZWdpbiBtYXRjaCAhcl9kaWZmIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBkaWZmIC0+XG4gICAgbGV0IGZyb21fID0gU2V4cC50b19zdHJpbmdfaHVtIGV4cGVjdCBpblxuICAgIGxldCB0b18gICA9IFNleHAudG9fc3RyaW5nX2h1bSBnb3QgaW5cbiAgICBkaWZmIH5mcm9tXyB+dG9fXG4gIGVuZDtcbiAgYEZhaWwgKGV4cGVjdCwgZ290KVxuXG5sZXQgdGVzdF9yZXN1bHRfb3JfZXEgfnNleHBpZmllciB+Y29tcGFyYXRvciB+ZXF1YWwgfmV4cGVjdCB+Z290ID1cbiAgbGV0IHBhc3MgPVxuICAgIG1hdGNoIGVxdWFsIHdpdGhcbiAgICB8IE5vbmUgLT4gY29tcGFyYXRvciBnb3QgZXhwZWN0ID0gMFxuICAgIHwgU29tZSBmIC0+IGYgZ290IGV4cGVjdFxuICBpblxuICBpZiBwYXNzXG4gIHRoZW4gYFBhc3NcbiAgZWxzZSB0ZXN0X3Jlc3VsdF9vcl9lcV9mYWlsZWQgfnNleHBpZmllciB+ZXhwZWN0IH5nb3RcblxubGV0IFtAY29sZF0gZXhuX3Rlc3RfZXEgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dDEgfnQyID1cbiAgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnOlwiY29tcGFyaXNvbiBmYWlsZWRcIiBbXG4gICAgdDE7XG4gICAgU2V4cC5BdG9tIFwidnNcIjtcbiAgICB0MjtcbiAgXVxuXG5sZXQgdGVzdF9lcSB+cG9zIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmhlcmUgP21lc3NhZ2UgP2VxdWFsIHQxIHQyID1cbiAgbWF0Y2ggdGVzdF9yZXN1bHRfb3JfZXEgfnNleHBpZmllciB+Y29tcGFyYXRvciB+ZXF1YWwgfmV4cGVjdDp0MSB+Z290OnQyIHdpdGhcbiAgfCBgUGFzcyAtPiAoKVxuICB8IGBGYWlsICh0MSwgdDIpIC0+IHJhaXNlIChleG5fdGVzdF9lcSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50MSB+dDIpXG5cbmxldCBbQGNvbGRdIGV4bl90ZXN0X3Jlc3VsdCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5leHBlY3QgfmdvdCA9XG4gIGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZzpcImdvdCB1bmV4cGVjdGVkIHJlc3VsdFwiIFtcbiAgICBTZXhwLkxpc3QgW1NleHAuQXRvbSBcImV4cGVjdGVkXCI7IGV4cGVjdF07XG4gICAgU2V4cC5MaXN0IFtTZXhwLkF0b20gXCJnb3RcIjsgZ290XTtcbiAgXVxuXG5sZXRbQHdhcm5pbmcgXCItMTZcIl0gdGVzdF9yZXN1bHQgfnBvcyB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5oZXJlID9tZXNzYWdlID9lcXVhbCB+ZXhwZWN0IH5nb3QgPVxuICBtYXRjaCB0ZXN0X3Jlc3VsdF9vcl9lcSB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5lcXVhbCB+ZXhwZWN0IH5nb3Qgd2l0aFxuICB8IGBQYXNzIC0+ICgpXG4gIHwgYEZhaWwgKGV4cGVjdCwgZ290KSAtPiByYWlzZSAoZXhuX3Rlc3RfcmVzdWx0IH5tZXNzYWdlIH5wb3MgfmhlcmUgfmV4cGVjdCB+Z290KVxuIiwibGV0IHVuaXF1ZV9pZCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuXG4oKiBVc2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IGxpYm5hbWUgaW4gc3VjaCBhIHdheSB0aGF0IGZvciBmdW5jdG9yIGFwcGxpY2F0aW9ucywgaXQgaXNcbiAgIHRoZSBjYWxsaW5nIGxpYnJhcmllcyBuYW1lIHRoYXQgZ2V0cyByZWdpc3RlcmVkLiAqKVxubW9kdWxlIEN1cnJlbnRfbGlibmFtZSA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiPHVua25vd24+XCJcbiAgbGV0IGxpYm5hbWVfcmVmID0gcmVmIG51bGxcbiAgbGV0IHNldCBzdHIgPSBsaWJuYW1lX3JlZiA6PSBzdHJcbiAgbGV0IHVuc2V0ICgpID0gbGlibmFtZV9yZWYgOj0gbnVsbFxuICBsZXQgZ2V0ICgpID0gIWxpYm5hbWVfcmVmXG5lbmRcblxubW9kdWxlIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrID0gc3RydWN0XG4gIGxldCB0ID0gcmVmIFtdXG4gIGxldCBwdXNoIHMgPSB0IDo9IHMgOjogIXRcbiAgbGV0IHBvcF9leG4gKCkgPSB0IDo9IExpc3QudGwgIXRcblxuICBsZXQgdG9fbmFtZSAoKSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgbXMgLT4gU29tZSAoU3RyaW5nLmNvbmNhdCBcIi5cIiAoTGlzdC5yZXYgbXMpKVxuICA7O1xuZW5kXG5cbigqIFRoaXMgaXMgdGhlIG1haW4gZGF0YSBzdHJ1Y3R1cmUgb2YgdGhpcyBtb2R1bGUuIEFuIFtFbnRyeS50XSByZXByZXNlbnRzIGEgYmVuY2htYXJrXG4gICBhbG9uZyB3aXRoIHNvbWUgbWV0YWRhdGEgYWJvdXQgaXMgcG9zaXRpb24sIGFyZ3VtZW50cyBldGMuICopXG5tb2R1bGUgRW50cnkgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3BhcmFtLCAnYSkgcGFyYW1ldGVyaXNlZF9zcGVjID1cbiAgICB7IGFyZ19uYW1lIDogc3RyaW5nXG4gICAgOyBwYXJhbXMgOiAoc3RyaW5nICogJ3BhcmFtKSBsaXN0XG4gICAgOyB0aHVuayA6ICdwYXJhbSAtPiB1bml0IC0+ICdhXG4gICAgfVxuXG4gIHR5cGUgdGVzdF9zcGVjID1cbiAgICB8IFJlZ3VsYXJfdGh1bmsgOiAoWyBgaW5pdCBdIC0+IHVuaXQgLT4gJ2EpIC0+IHRlc3Rfc3BlY1xuICAgIHwgUGFyYW1ldGVyaXNlZF90aHVuayA6ICgncGFyYW0sICdhKSBwYXJhbWV0ZXJpc2VkX3NwZWMgLT4gdGVzdF9zcGVjXG5cbiAgdHlwZSB0ID1cbiAgICB7IHVuaXF1ZV9pZCA6IGludFxuICAgIDsgY29kZSA6IHN0cmluZ1xuICAgIDsgdHlwZV9jb252X3BhdGggOiBzdHJpbmdcbiAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICA7IGZpbGVuYW1lIDogc3RyaW5nXG4gICAgOyBsaW5lIDogaW50XG4gICAgOyBzdGFydHBvcyA6IGludFxuICAgIDsgZW5kcG9zIDogaW50XG4gICAgOyB0ZXN0X3NwZWMgOiB0ZXN0X3NwZWNcbiAgICA7IGJlbmNoX21vZHVsZV9uYW1lIDogc3RyaW5nIG9wdGlvblxuICAgIH1cblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmUgdDEudW5pcXVlX2lkIHQyLnVuaXF1ZV9pZFxuXG4gICgqIEV4dHJhY3RzIG1vZHVsZSBuYW1lIGZyb20gW1wiZmlsZW5hbWUubWwuTW9kdWxlXCJdLCB3aGljaCBpcyB0aGUgZm9ybWF0IG9mIFtleHRfbmFtZV1cbiAgICAgYXMgc2V0IGJ5IFt0eXBlY29udl0uICopXG4gIGxldCBnZXRfbW9kdWxlX25hbWVfb3B0IHQgPVxuICAgIGxldCBzdHIgPSB0LnR5cGVfY29udl9wYXRoIGluXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSArIDQgPD0gbGVuXG4gICAgICB0aGVuXG4gICAgICAgIGlmIFN0cmluZy5zdWIgc3RyIGkgNCA9IFwiLm1sLlwiXG4gICAgICAgIHRoZW4gU29tZSAoU3RyaW5nLnN1YiBzdHIgKGkgKyA0KSAobGVuIC0gaSAtIDQpKVxuICAgICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBOb25lXG4gICAgaW5cbiAgICBsb29wIDBcbiAgOztcblxuICBsZXQgd2l0aF90ZXN0X3NwZWMgdCB0ZXN0X3NwZWMgPSB7IHQgd2l0aCB0ZXN0X3NwZWMgfVxuZW5kXG5cbigqIEluc3BlY3Qgc3lzdGVtIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBkZWNpZGUgaWYgYmVuY2htYXJrcyBhcmUgYmVpbmcgcnVuLiBUaGlzIGlzXG4gICBjYWxsZWQgYnkgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBbcGFfYmVuY2hdIHN5bnRheCB0byBkZWNpZGUgaWYgdGhlIGdsb2JhbCBoYXNodGFibGVcbiAgIHNob3VsZCBiZSBwb3B1bGF0ZWQuICopXG5sZXQgYWRkX2Vudmlyb25tZW50X3ZhciA9XG4gIGxldCB2ID1cbiAgICB0cnkgU3lzLmdldGVudiBcIkJFTkNITUFSS1NfUlVOTkVSXCIgd2l0aFxuICAgIHwgTm90X2ZvdW5kIC0+IFwiXCJcbiAgaW5cbiAgdiA9IFwiVFJVRVwiXG47O1xuXG4oKiBUaGlzIGhhc2h0YWJsZSBjb250YWlucyBhbGwgdGhlIGJlbmNobWFya3MgZnJvbSBhbGwgdGhlIG9mIGxpYnJhcmllcyB0aGF0IGhhdmUgYmVlblxuICAgbG9hZGVkLiBBdCB0aGUgdGltZSB0aGUgYmVuY2htYXJrcyBhcmUgcmVnaXN0ZXJpbmcgdGhlbXNlbHZlcyB3aXRoIFtwcHhfYmVuY2hfbGliXSB3ZVxuICAgZG9uJ3QgeWV0IGtub3cgd2hpY2ggbGlicmFyaWVzIHdpbGwgbmVlZCB0byBiZSBydW4uICAqKVxubGV0IGxpYnNfdG9fZW50cmllcyA6IChzdHJpbmcsIEVudHJ5LnQgbGlzdCkgSGFzaHRibC50ID0gSGFzaHRibC5jcmVhdGUgMTBcblxubGV0IGxvb2t1cF9yZXZfbGliIH5saWJuYW1lID1cbiAgdHJ5IEhhc2h0YmwuZmluZCBsaWJzX3RvX2VudHJpZXMgbGlibmFtZSB3aXRoXG4gIHwgTm90X2ZvdW5kIC0+IFtdXG47O1xuXG5sZXQgbG9va3VwX2xpYiB+bGlibmFtZSA9IExpc3QucmV2IChsb29rdXBfcmV2X2xpYiB+bGlibmFtZSlcblxubGV0IGZvcmNlX2Ryb3AgPVxuICAoKiBVc2VmdWwgZm9yIGpzX29mX29jYW1sIHRvIHBlcmZvcm0gZGVhZGNvZGUgZWxpbWluYXRpb24uXG4gICAgIHNlZSBwcHgvcHB4X2lubGluZV90ZXN0L3J1bnRpbWUtbGliL3J1bnRpbWUubWwgW0FjdGlvbi5nZXRdIGZvciBtb3JlIGRldGFpbHMgKilcbiAgdHJ5XG4gICAgaWdub3JlIChTeXMuZ2V0ZW52IFwiRk9SQ0VfRFJPUF9CRU5DSFwiIDogc3RyaW5nKTtcbiAgICB0cnVlXG4gIHdpdGhcbiAgfCBOb3RfZm91bmQgLT4gZmFsc2Vcbjs7XG5cbmxldCBnZXRfbW9kZSAoKSA9IGlmIGZvcmNlX2Ryb3AgdGhlbiBgSWdub3JlIGVsc2UgYENvbGxlY3RcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGFkZF9iZW5jaFxuICAgICAgICAgICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH5jb2RlXG4gICAgICAgICAgICAgICAgICAgICB+ZmlsZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH50eXBlX2NvbnZfcGF0aFxuICAgICAgICAgICAgICAgICAgICAgfmxpbmVcbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydHBvc1xuICAgICAgICAgICAgICAgICAgICAgfmVuZHBvc1xuICAgICAgICAgICAgICAgICAgICAgdGVzdF9zcGVjXG4gID1cbiAgbWF0Y2ggZ2V0X21vZGUgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgQ29sbGVjdCAtPlxuICAgIGxldCBsaWJuYW1lID0gQ3VycmVudF9saWJuYW1lLmdldCAoKSBpblxuICAgIGxldCBlbnRyeSA9XG4gICAgICB7IEVudHJ5LmNvZGVcbiAgICAgIDsgdW5pcXVlX2lkID0gdW5pcXVlX2lkICgpXG4gICAgICA7IHR5cGVfY29udl9wYXRoXG4gICAgICA7IGJlbmNoX21vZHVsZV9uYW1lID0gQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sudG9fbmFtZSAoKVxuICAgICAgOyBuYW1lXG4gICAgICA7IGZpbGVuYW1lXG4gICAgICA7IGxpbmVcbiAgICAgIDsgc3RhcnRwb3NcbiAgICAgIDsgZW5kcG9zXG4gICAgICA7IHRlc3Rfc3BlY1xuICAgICAgfVxuICAgIGluXG4gICAgSGFzaHRibC5hZGQgbGlic190b19lbnRyaWVzIGxpYm5hbWUgKGVudHJ5IDo6IGxvb2t1cF9yZXZfbGliIH5saWJuYW1lKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGFkZF9iZW5jaF9tb2R1bGVcbiAgICAgICAgICAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICAgICAgICAgICB+Y29kZTpfXG4gICAgICAgICAgICAgICAgICAgICB+dHlwZV9jb252X3BhdGg6X1xuICAgICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lOl9cbiAgICAgICAgICAgICAgICAgICAgIH5saW5lOl9cbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydHBvczpfXG4gICAgICAgICAgICAgICAgICAgICB+ZW5kcG9zOl9cbiAgICAgICAgICAgICAgICAgICAgIGZcbiAgPVxuICBtYXRjaCBnZXRfbW9kZSAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPiAoKVxuICB8IGBDb2xsZWN0IC0+XG4gICAgKCogUnVubmluZyBmIHJlZ2lzdGVycyB0aGUgYmVuY2htYXJrcyB1c2luZyBCRU5DSCAqKVxuICAgIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnB1c2ggbmFtZTtcbiAgICAodHJ5XG4gICAgICAgZiAoKTtcbiAgICAgICBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjay5wb3BfZXhuICgpXG4gICAgIHdpdGhcbiAgICAgfCBleCAtPlxuICAgICAgIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnBvcF9leG4gKCk7XG4gICAgICAgcmFpc2UgZXgpXG47O1xuIiwidHlwZSB0ID0gc3RyaW5nXG5cbigqIFNoYXJlIHRoZSBkaWdlc3Qgb2YgdGhlIGVtcHR5IHN0cmluZyAqKVxubGV0IGVtcHR5ID0gRGlnZXN0LnN0cmluZyBcIlwiXG5sZXQgbWFrZSBzID1cbiAgaWYgcyA9IGVtcHR5IHRoZW5cbiAgICBlbXB0eVxuICBlbHNlXG4gICAgc1xuXG5sZXQgY29tcGFyZSA9IGNvbXBhcmVcblxubGV0IGxlbmd0aCA9IDE2XG5cbmxldCB0b19iaW5hcnkgcyA9IHNcbmxldCBvZl9iaW5hcnlfZXhuIHMgPSBhc3NlcnQgKFN0cmluZy5sZW5ndGggcyA9IGxlbmd0aCk7IG1ha2Ugc1xubGV0IHVuc2FmZV9vZl9iaW5hcnkgPSBtYWtlXG5cbmxldCB0b19oZXggPSBEaWdlc3QudG9faGV4XG5sZXQgb2ZfaGV4X2V4biBzID0gbWFrZSAoRGlnZXN0LmZyb21faGV4IHMpXG5cbmxldCBzdHJpbmcgcyA9IG1ha2UgKERpZ2VzdC5zdHJpbmcgcylcblxubGV0IGJ5dGVzIHMgPSBtYWtlIChEaWdlc3QuYnl0ZXMgcylcblxubGV0IHN1YmJ5dGVzIGJ5dGVzIH5wb3MgfmxlbiA9IG1ha2UgKERpZ2VzdC5zdWJieXRlcyBieXRlcyBwb3MgbGVuKVxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgTG9jYXRpb24gOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubW9kdWxlIFV1aWQgOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubGV0IGV2YWxfZmFpbCBsb2MgZm10ID1cbiAgUHJpbnRmLmtzcHJpbnRmIChmdW4gcyAtPiBmYWlsd2l0aCAoUHJpbnRmLnNwcmludGYgIVwiJXtMb2NhdGlvbn06ICVzXCIgbG9jIHMpKSBmbXRcbjs7XG5cbmxldCBlcXVhbF9vcHRpb24gZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgU29tZSBfLCBOb25lIHwgTm9uZSwgU29tZSBfIC0+IGZhbHNlXG4gIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG47O1xuXG5tb2R1bGUgU29ydGVkX3RhYmxlIDogc2lnXG4gIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBjcmVhdGUgOiBMb2NhdGlvbi50IC0+IGVxOignYSAtPiAnYSAtPiBib29sKSAtPiAoc3RyaW5nICogJ2EpIGxpc3QgLT4gJ2EgdFxuICB2YWwgZXhwb3NlIDogJ2EgdCAtPiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSB7IHNvcnRlZCA6IChzdHJpbmcgKiAnYSkgbGlzdCB9IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IG1lcmdlX2NoZWNrX2FkamFjZW50X2R1cHNcbiAgICA6ICBlcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKHN0cmluZyAqICdhKSBsaXN0XG4gICAgICAtPiBbIGBPayBvZiAoc3RyaW5nICogJ2EpIGxpc3QgfCBgTWlzbWF0Y2ggb2Ygc3RyaW5nIF1cbiAgICA9XG4gICAgZnVuIH5lcSAtPlxuICAgIGxldCByZWMgbG9vcCBhY2Mgfmxhc3Rfa2V5IH5sYXN0X3ZhbHVlID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYE9rIChMaXN0LnJldiBhY2MpXG4gICAgICB8IChrZXksIHZhbHVlKSA6OiB4cyAtPlxuICAgICAgICBpZiBTdHJpbmcuKGxhc3Rfa2V5ID0ga2V5KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgaWYgZXEgbGFzdF92YWx1ZSB2YWx1ZSB0aGVuIGxvb3AgYWNjIH5sYXN0X2tleSB+bGFzdF92YWx1ZSB4cyBlbHNlIGBNaXNtYXRjaCBrZXlcbiAgICAgICAgZWxzZSBsb29wICgoa2V5LCB2YWx1ZSkgOjogYWNjKSB+bGFzdF9rZXk6a2V5IH5sYXN0X3ZhbHVlOnZhbHVlIHhzXG4gICAgaW5cbiAgICBmdW5jdGlvblxuICAgIHwgW10gLT4gYE9rIFtdXG4gICAgfCAoa2V5LCB2YWx1ZSkgOjogeHMgLT4gbG9vcCBbIGtleSwgdmFsdWUgXSB+bGFzdF9rZXk6a2V5IH5sYXN0X3ZhbHVlOnZhbHVlIHhzXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBsb2MgfmVxIHhzID1cbiAgICBsZXQgc29ydGVkID0gTGlzdC5zb3J0IH5jb21wYXJlOihmdW4gKHMxLCBfKSAoczIsIF8pIC0+IFN0cmluZy5jb21wYXJlIHMxIHMyKSB4cyBpblxuICAgIG1hdGNoIG1lcmdlX2NoZWNrX2FkamFjZW50X2R1cHMgfmVxIHNvcnRlZCB3aXRoXG4gICAgfCBgT2sgc29ydGVkIC0+IHsgc29ydGVkIH1cbiAgICB8IGBNaXNtYXRjaCBzIC0+XG4gICAgICBldmFsX2ZhaWwgbG9jIFwiRGlmZmVyZW50IHNoYXBlcyBmb3IgZHVwbGljYXRlZCBwb2x5bW9ycGhpYyBjb25zdHJ1Y3RvcjogYCVzXCIgcyAoKVxuICA7O1xuXG4gIGxldCBleHBvc2UgdCA9IHQuc29ydGVkXG4gIGxldCBtYXAgdCB+ZiA9IHsgc29ydGVkID0gTGlzdC5tYXAgdC5zb3J0ZWQgfmY6KGZ1biAoaywgdikgLT4gaywgZiB2KSB9XG5lbmRcblxubW9kdWxlIERpZ2VzdCA6IHNpZ1xuICB0eXBlIHQgPSBNZDVfbGliLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgdG9fbWQ1IDogdCAtPiBNZDVfbGliLnRcbiAgdmFsIG9mX21kNSA6IE1kNV9saWIudCAtPiB0XG4gIHZhbCB0b19oZXggOiB0IC0+IHN0cmluZ1xuICB2YWwgY29uc3RydWN0b3IgOiBzdHJpbmcgLT4gdCBsaXN0IC0+IHRcbiAgdmFsIGxpc3QgOiB0IGxpc3QgLT4gdFxuICB2YWwgcGFpciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzdHJpbmcgOiBzdHJpbmcgLT4gdFxuICB2YWwgdXVpZCA6IFV1aWQudCAtPiB0XG4gIHZhbCBpbnQgOiBpbnQgLT4gdFxuICB2YWwgb3B0aW9uIDogdCBvcHRpb24gLT4gdFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgTWQ1X2xpYlxuXG4gIGxldCB0b19tZDUgdCA9IHRcbiAgbGV0IG9mX21kNSB0ID0gdFxuICBsZXQgc2V4cF9vZl90IHQgPSB0IHw+IHRvX2hleCB8PiBzZXhwX29mX3N0cmluZ1xuICBsZXQgdF9vZl9zZXhwIHMgPSBzIHw+IHN0cmluZ19vZl9zZXhwIHw+IG9mX2hleF9leG5cbiAgbGV0IHV1aWQgdSA9IHN0cmluZyAoVXVpZC50b19zdHJpbmcgdSlcbiAgbGV0IGludCB4ID0gc3RyaW5nIChJbnQudG9fc3RyaW5nIHgpXG4gIGxldCBwYWlyIHggeSA9IHN0cmluZyAodG9fYmluYXJ5IHggXiB0b19iaW5hcnkgeSlcbiAgbGV0IGxpc3QgbCA9IHN0cmluZyAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgKExpc3QubWFwIH5mOnRvX2JpbmFyeSBsKSlcbiAgbGV0IGNvbnN0cnVjdG9yIHMgbCA9IHN0cmluZyAocyBeIHRvX2JpbmFyeSAobGlzdCBsKSlcblxuICBsZXQgb3B0aW9uID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gY29uc3RydWN0b3IgXCJub25lXCIgW11cbiAgICB8IFNvbWUgeCAtPiBjb25zdHJ1Y3RvciBcInNvbWVcIiBbIHggXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yID0gc3RydWN0XG4gICgqIFsnYSB0XSBpcyBhIG5vbi1yZWN1cnNpdmUgdHlwZSwgdXNlZCB0byByZXByZXNlbnQgMS1sYXllciBvZiBleHByZXNzaW9uLiAgVGhlXG4gICAgIHJlY3Vyc2l2ZSBrbm90IGlzIHRpZWQgYmVsb3cgaW4gW0Nhbm9uaWNhbF9mdWxsLkV4cC50XS4gKilcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEFubm90YXRlIG9mIFV1aWQudCAqICdhXG4gICAgfCBCYXNlIG9mIFV1aWQudCAqICdhIGxpc3RcbiAgICB8IFR1cGxlIG9mICdhIGxpc3RcbiAgICB8IFJlY29yZCBvZiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgICB8IFZhcmlhbnQgb2YgKHN0cmluZyAqICdhIGxpc3QpIGxpc3RcbiAgICAoKiBQb2x5bW9ycGhpYyB2YXJpYW50cyBhcmUgaW5zZW5zaXRpdmUgdG8gdGhlIG9yZGVyIHRoZSBjb25zdHJ1Y3RvcnMgYXJlIGxpc3RlZCAqKVxuICAgIHwgUG9seV92YXJpYW50IG9mICdhIG9wdGlvbiBTb3J0ZWRfdGFibGUudFxuICAgICgqIExlZnQtaGFuZC1zaWRlIG9mIFtBcHBsaWNhdGlvbl0gaXMgYSBwb3RlbnRpYWxseSByZWN1cnNpdmUgZGVmaW5pdGlvbjogaXRcbiAgICAgICBjYW4gcmVmZXIgdG8gaXRzZWxmIHVzaW5nIFtSZWNfYXBwIChpLCBfKV0gd2hlcmUgW2ldIGlzIHRoZSBkZXB0aCBvZiB0aGlzXG4gICAgICAgYXBwbGljYXRpb24gbm9kZSAoaG93IG1hbnkgYXBwbGljYXRpb24gbm9kZXMgYXJlIGFib3ZlIGl0KS5cbiAgICAgICBJdCBhbHNvIGhhcyBpdHMgb3duIHNjb3BlIG9mIHR5cGUgdmFyaWFibGVzIHNvIGl0IGNhbiBub3QgcmVmZXIgdG8gdHlwZSB2YXJpYWJsZXNcbiAgICAgICBvZiB0aGUgZW5jbG9zaW5nIHNjb3BlLlxuICAgICopXG4gICAgfCBBcHBsaWNhdGlvbiBvZiAnYSAqICdhIGxpc3RcbiAgICB8IFJlY19hcHAgb2YgaW50ICogJ2EgbGlzdFxuICAgIHwgVmFyIG9mIGludFxuICBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlXVxuXG4gIGxldCBtYXAgeCB+ZiA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBbm5vdGF0ZSAodSwgeCkgLT4gQW5ub3RhdGUgKHUsIGYgeClcbiAgICB8IEJhc2UgKHMsIHhzKSAtPiBCYXNlIChzLCBMaXN0Lm1hcCB+ZiB4cylcbiAgICB8IFR1cGxlIHhzIC0+IFR1cGxlIChMaXN0Lm1hcCB+ZiB4cylcbiAgICB8IFJlY29yZCBsIC0+IFJlY29yZCAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCB4KSAtPiBzLCBmIHgpKVxuICAgIHwgVmFyaWFudCBsIC0+IFZhcmlhbnQgKExpc3QubWFwIGwgfmY6KGZ1biAocywgeHMpIC0+IHMsIExpc3QubWFwIH5mIHhzKSlcbiAgICB8IFBvbHlfdmFyaWFudCB0IC0+IFBvbHlfdmFyaWFudCAoU29ydGVkX3RhYmxlLm1hcCB0IH5mOihPcHRpb24ubWFwIH5mKSlcbiAgICB8IEFwcGxpY2F0aW9uICh4LCBsKSAtPiBBcHBsaWNhdGlvbiAoZiB4LCBMaXN0Lm1hcCB+ZiBsKVxuICAgIHwgUmVjX2FwcCAodCwgbCkgLT4gUmVjX2FwcCAodCwgTGlzdC5tYXAgfmYgbClcbiAgICB8IFZhciB2IC0+IFZhciB2XG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCAoZnVuIF8gLT4gQXRvbSBcIi4uLlwiKSB0KVxuZW5kXG5cbm1vZHVsZSBDcmVhdGVfZGlnZXN0IDogc2lnXG4gICgqIERpZ2VzdCB2YXJpb3VzIGV4cHJlc3Npb24gZm9ybXMgKilcblxuICB2YWwgZGlnZXN0X2xheWVyIDogRGlnZXN0LnQgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci50IC0+IERpZ2VzdC50XG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGRpZ2VzdF9sYXllciA9IGZ1bmN0aW9uXG4gICAgfCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLkFubm90YXRlICh1LCB4KSAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yIFwiYW5ub3RhdGVcIiBbIERpZ2VzdC51dWlkIHU7IHggXVxuICAgIHwgQmFzZSAodSwgbCkgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwiYmFzZVwiIFsgRGlnZXN0LnV1aWQgdTsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBUdXBsZSBsIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcInR1cGxlXCIgWyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFJlY29yZCBsIC0+XG4gICAgICBEaWdlc3QuY29uc3RydWN0b3JcbiAgICAgICAgXCJyZWNvcmRcIlxuICAgICAgICBbIERpZ2VzdC5saXN0IChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIHQpIC0+IERpZ2VzdC5wYWlyIChEaWdlc3Quc3RyaW5nIHMpIHQpKSBdXG4gICAgfCBWYXJpYW50IGwgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvclxuICAgICAgICBcInZhcmlhbnRcIlxuICAgICAgICBbIERpZ2VzdC5saXN0XG4gICAgICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCBsKSAtPiBEaWdlc3QucGFpciAoRGlnZXN0LnN0cmluZyBzKSAoRGlnZXN0Lmxpc3QgbCkpKVxuICAgICAgICBdXG4gICAgfCBQb2x5X3ZhcmlhbnQgdGFibGUgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvclxuICAgICAgICBcInBvbHlfdmFyaWFudFwiXG4gICAgICAgIFsgRGlnZXN0Lmxpc3RcbiAgICAgICAgICAgIChMaXN0Lm1hcCAoU29ydGVkX3RhYmxlLmV4cG9zZSB0YWJsZSkgfmY6KGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgIERpZ2VzdC5wYWlyIChEaWdlc3Quc3RyaW5nIHgpIChEaWdlc3Qub3B0aW9uIHkpKSlcbiAgICAgICAgXVxuICAgIHwgQXBwbGljYXRpb24gKHgsIGwpIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcImFwcGxpY2F0aW9uXCIgWyB4OyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFJlY19hcHAgKG4sIGwpIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcInJlY19hcHBcIiBbIERpZ2VzdC5pbnQgbjsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBWYXIgbiAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJ2YXJcIiBbIERpZ2VzdC5pbnQgbiBdXG4gIDs7XG5lbmRcblxubW9kdWxlIFZpc2liaWxpdHkgPSBzdHJ1Y3RcbiAgdHlwZSB2aXNpYmxlID0gVmlzaWJsZVxuICB0eXBlIG9wYXF1ZSA9IE9wYXF1ZVxuXG4gIGxldCBfID0gVmlzaWJsZVxuICBsZXQgXyA9IE9wYXF1ZVxuZW5kXG5cbm1vZHVsZSB0eXBlIENhbm9uaWNhbCA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdG9fZGlnZXN0IDogdCAtPiBEaWdlc3QudFxuXG4gIG1vZHVsZSBFeHAxIDogc2lnXG4gICAgdHlwZSBfIHRcblxuICAgIHZhbCB2YXIgOiBpbnQgLT4gXyB0XG4gICAgdmFsIHJlY3Vyc2UgOiBpbnQgLT4gXyB0IGxpc3QgLT4gXyB0XG4gICAgdmFsIGFwcGx5IDogJ2EgdCAtPiAnYSB0IGxpc3QgLT4gXyB0XG4gICAgdmFsIG9wYXF1ZSA6IF8gdCAtPiBWaXNpYmlsaXR5Lm9wYXF1ZSB0XG5cbiAgICB2YWwgZ2V0X3BvbHlfdmFyaWFudFxuICAgICAgOiAgVmlzaWJpbGl0eS52aXNpYmxlIHRcbiAgICAgIC0+IChWaXNpYmlsaXR5Lm9wYXF1ZSB0IG9wdGlvbiBTb3J0ZWRfdGFibGUudCwgc3RyaW5nKSBSZXN1bHQudFxuICBlbmRcblxuICBtb2R1bGUgRGVmIDogc2lnXG4gICAgdHlwZSB0ID0gVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudFxuICBlbmRcblxuICBtb2R1bGUgQ3JlYXRlIDogc2lnXG4gICAgdmFsIGFubm90YXRlIDogVXVpZC50IC0+IF8gRXhwMS50IC0+IF8gRXhwMS50XG4gICAgdmFsIGJhc2V0eXBlIDogVXVpZC50IC0+IF8gRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgdHVwbGUgOiBfIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHBvbHlfdmFyaWFudCA6IExvY2F0aW9uLnQgLT4gKHN0cmluZyAqIF8gRXhwMS50IG9wdGlvbikgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCB2YXIgOiBpbnQgLT4gXyBFeHAxLnRcbiAgICB2YWwgcmVjdXJzZSA6IGludCAtPiBfIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIGFwcGx5IDogJ2EgRXhwMS50IC0+ICdhIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIGRlZmluZSA6IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnQgLT4gRGVmLnRcbiAgICB2YWwgcmVjb3JkIDogKHN0cmluZyAqIF8gRXhwMS50KSBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHZhcmlhbnQgOiAoc3RyaW5nICogXyBFeHAxLnQgbGlzdCkgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCBjcmVhdGUgOiBfIEV4cDEudCAtPiB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWxfZGlnZXN0IDogQ2Fub25pY2FsID0gc3RydWN0XG4gIHR5cGUgdCA9IENhbm9uaWNhbCBvZiBEaWdlc3QudFxuXG4gIGxldCB0b19kaWdlc3QgKENhbm9uaWNhbCB4KSA9IHhcblxuICBtb2R1bGUgQ0QgPSBDcmVhdGVfZGlnZXN0XG5cbiAgbW9kdWxlIEV4cDEgPSBzdHJ1Y3RcbiAgICB0eXBlIG9wYXF1ZSA9IERpZ2VzdC50XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBQb2x5X3ZhcmlhbnQgb2Ygb3BhcXVlIG9wdGlvbiBTb3J0ZWRfdGFibGUudFxuICAgICAgfCBOb25fcG9seV92YXJpYW50IG9mIChzdHJpbmcgKiBvcGFxdWUpXG4gICAgICB8IE9wYXF1ZSA6IG9wYXF1ZSAtPiBWaXNpYmlsaXR5Lm9wYXF1ZSB0XG5cbiAgICBsZXQgdG9fZGlnZXN0ICh0eXBlIGEpICh4IDogYSB0KSA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgT3BhcXVlIHggLT4geFxuICAgICAgfCBOb25fcG9seV92YXJpYW50IChfLCB4KSAtPiB4XG4gICAgICB8IFBvbHlfdmFyaWFudCB4IC0+IENELmRpZ2VzdF9sYXllciAoUG9seV92YXJpYW50IHgpXG4gICAgOztcblxuICAgIGxldCBlcXVhbCAodHlwZSBhKSAoeCA6IGEgdCkgKHkgOiBhIHQpID1cbiAgICAgIERpZ2VzdC5jb21wYXJlICh0b19kaWdlc3QgeCkgKHRvX2RpZ2VzdCB5KSA9IDBcbiAgICA7O1xuXG4gICAgbGV0IG9wYXF1ZSB4ID0gT3BhcXVlICh0b19kaWdlc3QgeClcblxuICAgIGxldCBjcmVhdGUgeCA9XG4gICAgICBsZXQgeCA9IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IubWFwIH5mOnRvX2RpZ2VzdCB4IGluXG4gICAgICBsZXQgZGVzYyA9IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudG9fc3RyaW5nIHggaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlBvbHlfdmFyaWFudCBsIC0+IFBvbHlfdmFyaWFudCBsXG4gICAgICB8IEJhc2UgXyAtPiBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgQW5ub3RhdGUgXyAtPlxuICAgICAgICAoKiBJdCdzIHVuc2FmZSB0byB1c2UgZGVyaXZpbmcgYmluX2lvIHdoZW4gaW5oZXJpdGluZyBmcm9tIGEgcG9seW1vcnBoaWMgdmFyaWFudFxuICAgICAgICAgICB0aGF0IGhhcyBhIGN1c3RvbSBiaW5faW8uICBJZiB3ZSBmb3JiaWQgdGhhdCwgd2UgY2FuIGhhcHBpbHkgcmVqZWN0IGhlcmVcbiAgICAgICAgICAgYW55dGhpbmcgdGhhdCdzIGFubm90YXRlZC4gKilcbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IEFwcGxpY2F0aW9uIF8gLT5cbiAgICAgICAgKCogQXBwbGljYXRpb24gY2FuIHJlYWxseSBiZSBhIHBvbHktdmFyaWFudCB5b3UgY2FuIGluaGVyaXQgZnJvbSEgIEJ1dCBpdCdzIGFcbiAgICAgICAgICAgcmFyZSBzaXR1YXRpb24gdGhhdCBtb3N0bHkgKG9ubHk/KSBhcmlzZXMgd2l0aCBpbmhlcml0YW5jZSBmcm9tIHJlY3Vyc2l2ZVxuICAgICAgICAgICBwb2x5bW9ycGljIHZhcmlhbnRzLCB3aGljaCB3ZSd2ZSBub3Qgc2VlbiBhbnl3aGVyZSB5ZXQuICBTbyB3ZSByZWplY3QgaXQuICopXG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgICAgfCBSZWNfYXBwIF8gLT5cbiAgICAgICAgKCogWW91IGNhbiBvbmx5IGdldCB0aGUgW1JlY19hcHBdIGNvbnN0cnVjdG9yIGZvciB0eXBlLXJlZmVyZW5jZXMgd2l0aGluIHRoZVxuICAgICAgICAgICBtdXR1YWwgZ3JvdXAgYmVpbmcgZGVmaW5lZC4gUmVmZXJlbmNlcyB3aGljaFxuICAgICAgICAgICBmb2xsb3cgYWZ0ZXIgdGhlIGN1cnJlbnQgZ3JvdXAgd2lsbCBhbHdheXMgYmUgW0FwcGxpY2F0aW9uXXMuXG5cbiAgICAgICAgICAgQW5kIHNpbmNlIG9jYW1sIHJlamVjdHMgcmVmZXJlbmNlcyBpbiBgaW5oZXJpdGFuY2UnIHBvc2l0aW9uIHRvIHR5cGVzIHdpdGhpblxuICAgICAgICAgICB0aGUgY3VycmVudCBncm91cCAoc2VlIGV4YW1wbGUpIHdpdGg6XG5cbiAgICAgICAgICAgRXJyb3I6IFRoZSB0eXBlIGNvbnN0cnVjdG9yIHRcbiAgICAgICAgICAgaXMgbm90IHlldCBjb21wbGV0ZWx5IGRlZmluZWRcblxuICAgICAgICAgICB0aGVuIGl0cyBvayB0byBzYXkgdGhhdCBhIHJlYy1hcHAgaXMgc29tZXRoaW5nIHRoYXQgY2FuJ3QgYmUgaW5oZXJpdGVkIGZyb20gYW5kXG4gICAgICAgICAgIHJldHVybiBbTm9uX3BvbHlfdmFyaWFudF0uXG5cbiAgICAgICAgICAgQW5kIHVubGlrZSB0aGUgW0FwcGxpY2F0aW9uXSBjYXNlLCBpdCBzaG91bGQgbmV2ZXIgYmUgcG9zc2libGUgdG8gc2VlXG4gICAgICAgICAgIGFuIGVycm9yIG1lc3NhZ2Ugd2l0aCB0aGUgW2Rlc2NdID0gW1JlY19hcHBdLlxuXG4gICAgICAgICAgIEV4YW1wbGU6IFt0eXBlIHQgPSBbYGEgb2YgWyB8IHRdIF1dXG4gICAgICAgICAgIEhlcmUsIFt8IHRdIHdvdWxkIGJlIGFuIGV4YW1wbGUgb2YgaW5oZXJpdGFuY2UgZnJvbSBhIFJlY19hcHAsIHdoaWNoXG4gICAgICAgICAgIGlzIHJlamVjdGVkIGJ5IHRoZSBjb21waWxlci5cbiAgICAgICAgKilcbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IFZhciBfIHwgVHVwbGUgXyB8IFJlY29yZCBfIHwgVmFyaWFudCBfIC0+XG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgIDs7XG5cbiAgICBsZXQgdmFyIHggPSBjcmVhdGUgKFZhciB4KVxuICAgIGxldCBhcHBseSBkZWYgbCA9IGNyZWF0ZSAoQXBwbGljYXRpb24gKGRlZiwgbCkpXG4gICAgbGV0IHJlY3Vyc2UgdGlkIGwgPSBjcmVhdGUgKFJlY19hcHAgKHRpZCwgbCkpXG5cbiAgICBsZXQgZ2V0X3BvbHlfdmFyaWFudCAoeCA6IFZpc2liaWxpdHkudmlzaWJsZSB0KSA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgXykgLT4gRXJyb3IgZGVzY1xuICAgICAgfCBQb2x5X3ZhcmlhbnQgbCAtPiBPayAoU29ydGVkX3RhYmxlLm1hcCB+ZjooT3B0aW9uLm1hcCB+ZjooZnVuIHggLT4gT3BhcXVlIHgpKSBsKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWYgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50XG4gIGVuZFxuXG4gIG1vZHVsZSBDcmVhdGUgPSBzdHJ1Y3RcbiAgICBsZXQgYW5ub3RhdGUgdSB4ID0gRXhwMS5jcmVhdGUgKEFubm90YXRlICh1LCB4KSlcbiAgICBsZXQgYmFzZXR5cGUgdSBsID0gRXhwMS5jcmVhdGUgKEJhc2UgKHUsIGwpKVxuICAgIGxldCB0dXBsZSBsID0gRXhwMS5jcmVhdGUgKFR1cGxlIGwpXG5cbiAgICBsZXQgcG9seV92YXJpYW50IGxvYyBsID1cbiAgICAgIEV4cDEuY3JlYXRlIChQb2x5X3ZhcmlhbnQgKFNvcnRlZF90YWJsZS5jcmVhdGUgbG9jIH5lcTooZXF1YWxfb3B0aW9uIEV4cDEuZXF1YWwpIGwpKVxuICAgIDs7XG5cbiAgICBsZXQgdmFyIHggPSBFeHAxLmNyZWF0ZSAoVmFyIHgpXG4gICAgbGV0IGFwcGx5IHggbCA9IEV4cDEuY3JlYXRlIChBcHBsaWNhdGlvbiAoeCwgbCkpXG4gICAgbGV0IHJlY3Vyc2UgdCBsID0gRXhwMS5jcmVhdGUgKFJlY19hcHAgKHQsIGwpKVxuICAgIGxldCBkZWZpbmUgeCA9IHhcbiAgICBsZXQgcmVjb3JkIGwgPSBFeHAxLmNyZWF0ZSAoUmVjb3JkIGwpXG4gICAgbGV0IHZhcmlhbnQgbCA9IEV4cDEuY3JlYXRlIChWYXJpYW50IGwpXG4gICAgbGV0IGNyZWF0ZSBlID0gQ2Fub25pY2FsIChFeHAxLnRvX2RpZ2VzdCBlKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ2Fub25pY2FsX2Z1bGwgPSBzdHJ1Y3RcbiAgbW9kdWxlIENEID0gQ3JlYXRlX2RpZ2VzdFxuXG4gIG1vZHVsZSBFeHAxID0gc3RydWN0XG4gICAgdHlwZSB0MCA9IEV4cCBvZiB0MCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBlcXVhbF90MCB4IHkgPSBjb21wYXJlX3QwIHggeSA9IDBcblxuICAgIHR5cGUgJ2EgdCA9IHQwIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgdmFyIHggPSBFeHAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuVmFyIHgpXG4gICAgbGV0IGFwcGx5IGQgeHMgPSBFeHAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuQXBwbGljYXRpb24gKGQsIHhzKSlcbiAgICBsZXQgcmVjdXJzZSByIHhzID0gRXhwIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlJlY19hcHAgKHIsIHhzKSlcblxuICAgIGxldCBwb2x5X3ZhcmlhbnQgbG9jIHhzID1cbiAgICAgIEV4cFxuICAgICAgICAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5Qb2x5X3ZhcmlhbnRcbiAgICAgICAgICAgKFNvcnRlZF90YWJsZS5jcmVhdGUgbG9jIH5lcTooZXF1YWxfb3B0aW9uIGVxdWFsX3QwKSB4cykpXG4gICAgOztcblxuICAgIGxldCBnZXRfcG9seV92YXJpYW50ID0gZnVuY3Rpb25cbiAgICAgIHwgRXhwIChQb2x5X3ZhcmlhbnQgdGFiKSAtPiBPayB0YWJcbiAgICAgIHwgRXhwIGNjIC0+IEVycm9yIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnRvX3N0cmluZyBjYylcbiAgICA7O1xuXG4gICAgbGV0IG9wYXF1ZSB0ID0gdFxuXG4gICAgbGV0IHJlYyB0b19kaWdlc3QgPSBmdW5jdGlvblxuICAgICAgfCBFeHAgZSAtPiBDRC5kaWdlc3RfbGF5ZXIgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IubWFwIH5mOnRvX2RpZ2VzdCBlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWYgPSBzdHJ1Y3RcbiAgICAoKiBBIFtEZWYudF0gaXMgYW4gZXhwcmVzc2lvbiB3aGljaCBtYXkgYmUgYXBwbGllZCAqKVxuICAgIHR5cGUgdCA9IEV4cDEudDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5cbiAgKCogQSBjYW5vbmljYWwgc2hhcGUgW3RdIGlzIGFuIFtFeHAxLnRdLiAqKVxuICB0eXBlIHQgPSBFeHAxLnQwIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IHRvX2RpZ2VzdCBlID0gRXhwMS50b19kaWdlc3QgZVxuXG4gIG1vZHVsZSBDcmVhdGUgPSBzdHJ1Y3RcbiAgICBsZXQgYW5ub3RhdGUgdSB4ID0gRXhwMS5FeHAgKEFubm90YXRlICh1LCB4KSlcbiAgICBsZXQgYmFzZXR5cGUgdSB4cyA9IEV4cDEuRXhwIChCYXNlICh1LCB4cykpXG4gICAgbGV0IHR1cGxlIHhzID0gRXhwMS5FeHAgKFR1cGxlIHhzKVxuICAgIGxldCBwb2x5X3ZhcmlhbnQgbG9jIHhzID0gRXhwMS5wb2x5X3ZhcmlhbnQgbG9jIHhzXG4gICAgbGV0IHZhciBuID0gRXhwMS5FeHAgKFZhciBuKVxuICAgIGxldCByZWN1cnNlIHIgeHMgPSBFeHAxLnJlY3Vyc2UgciB4c1xuICAgIGxldCBhcHBseSBkIHhzID0gRXhwMS5hcHBseSBkIHhzXG4gICAgbGV0IGRlZmluZSB4ID0geFxuICAgIGxldCByZWNvcmQgeHMgPSBFeHAxLkV4cCAoUmVjb3JkIHhzKVxuICAgIGxldCB2YXJpYW50IHhzID0gRXhwMS5FeHAgKFZhcmlhbnQgeHMpXG4gICAgbGV0IGNyZWF0ZSBleHAgPSBleHBcbiAgZW5kXG5cbiAgbGV0IHRvX3N0cmluZ19odW0gdCA9IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl90IHQpXG5lbmRcblxubW9kdWxlIFRpZCA6IHNpZ1xuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcbmVuZFxuXG5tb2R1bGUgVmlkIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbm1vZHVsZSBHaWQgOiBzaWdcbiAgKCogdW5pcXVlIGdyb3VwLWlkLCB1c2VkIGFzIGtleSBmb3IgVGVudiBiZWxvdyAqKVxuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBdXG5cbiAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICBsZXQgciA9IHJlZiAwXG5cbiAgbGV0IGNyZWF0ZSAoKSA9XG4gICAgbGV0IHUgPSAhciBpblxuICAgIHIgOj0gMSArIHU7XG4gICAgdVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFeHByZXNzaW9uID0gc3RydWN0XG4gIHR5cGUgJ3QgcG9seV9jb25zdHIgPVxuICAgIFsgYENvbnN0ciBvZiBzdHJpbmcgKiAndCBvcHRpb25cbiAgICB8IGBJbmhlcml0IG9mIExvY2F0aW9uLnQgKiAndFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBdXG5cbiAgbW9kdWxlIEdyb3VwIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwXVxuXG4gICAgdmFsIGNyZWF0ZSA6IExvY2F0aW9uLnQgLT4gKFRpZC50ICogVmlkLnQgbGlzdCAqICdhKSBsaXN0IC0+ICdhIHRcbiAgICB2YWwgaWQgOiAnYSB0IC0+IEdpZC50XG4gICAgdmFsIGxvb2t1cCA6ICdhIHQgLT4gVGlkLnQgLT4gVmlkLnQgbGlzdCAqICdhXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IGdpZCA6IEdpZC50XG4gICAgICA7IGxvYyA6IExvY2F0aW9uLnRcbiAgICAgIDsgbWVtYmVycyA6IChUaWQudCAqIChWaWQudCBsaXN0ICogJ2EpKSBsaXN0XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBdXG5cbiAgICBsZXQgY3JlYXRlIGxvYyB0cmlwcyA9XG4gICAgICBsZXQgZ2lkID0gR2lkLmNyZWF0ZSAoKSBpblxuICAgICAgbGV0IG1lbWJlcnMgPSBMaXN0Lm1hcCB0cmlwcyB+ZjooZnVuICh4LCB2cywgdCkgLT4geCwgKHZzLCB0KSkgaW5cbiAgICAgIHsgZ2lkOyBsb2M7IG1lbWJlcnMgfVxuICAgIDs7XG5cbiAgICBsZXQgaWQgZyA9IGcuZ2lkXG5cbiAgICBsZXQgbG9va3VwIGcgdGlkID1cbiAgICAgIG1hdGNoIExpc3QuQXNzb2MuZmluZCBnLm1lbWJlcnMgfmVxdWFsOlRpZC4oID0gKSB0aWQgd2l0aFxuICAgICAgfCBTb21lIHNjaGVtZSAtPiBzY2hlbWVcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBldmFsX2ZhaWxcbiAgICAgICAgICBnLmxvY1xuICAgICAgICAgICFcImltcG9zc2libGU6IGxvb2t1cF9ncm91cCwgdW5ib3VuZCB0eXBlLWlkZW50aWZpZXI6ICV7VGlkfVwiXG4gICAgICAgICAgdGlkXG4gICAgICAgICAgKClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEFubm90YXRlIG9mIFV1aWQudCAqIHRcbiAgICAgICAgfCBCYXNlIG9mIFV1aWQudCAqIHQgbGlzdFxuICAgICAgICB8IFJlY29yZCBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgICAgICB8IFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgbGlzdCkgbGlzdFxuICAgICAgICB8IFR1cGxlIG9mIHQgbGlzdFxuICAgICAgICB8IFBvbHlfdmFyaWFudCBvZiAoTG9jYXRpb24udCAqIHQgcG9seV9jb25zdHIgbGlzdClcbiAgICAgICAgfCBWYXIgb2YgKExvY2F0aW9uLnQgKiBWaWQudClcbiAgICAgICAgfCBSZWNfYXBwIG9mIFRpZC50ICogdCBsaXN0XG4gICAgICAgIHwgVG9wX2FwcCBvZiB0IEdyb3VwLnQgKiBUaWQudCAqIHQgbGlzdFxuICAgICAgW0BAZGVyaXZpbmcgZXF1YWwsIHNleHAsIHZhcmlhbnRzXVxuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gIHR5cGUgZ3JvdXAgPSB0IEdyb3VwLnRcblxuICBsZXQgZ3JvdXAgPSBHcm91cC5jcmVhdGVcblxuICB0eXBlIHBvbHlfdmFyaWFudF9yb3cgPSB0IHBvbHlfY29uc3RyXG5cbiAgbGV0IGNvbnN0ciBzIHQgPSBgQ29uc3RyIChzLCB0KVxuICBsZXQgaW5oZXJpdF8gbG9jIHQgPSBgSW5oZXJpdCAobG9jLCB0KVxuICBsZXQgdmFyIGxvYyB0ID0gVmFyIChsb2MsIHQpXG4gIGxldCBwb2x5X3ZhcmlhbnQgbG9jIHhzID0gUG9seV92YXJpYW50IChsb2MsIHhzKVxuICBsZXQgYmFzZXR5cGUgPSBiYXNlXG5cbiAgKCogXCJWUlwiIHN0YW5kcyBmb3IgXCJ2YXJpYW50IG9yIHJlY29yZFwiICopXG5cbiAgbGV0IGlzX2N5Y2xpY18wIH4odmlhX1ZSIDogYm9vbCkgOiBncm91cCAtPiBUaWQudCAtPiBib29sID1cbiAgICBmdW4gZ3JvdXAgdGlkIC0+XG4gICAgbGV0IHNldCA9IHJlZiBbXSBpblxuICAgIGxldCB2aXNpdGVkIHRpZCA9IExpc3QubWVtICFzZXQgdGlkIH5lcXVhbDpUaWQuZXF1YWwgaW5cbiAgICBsZXQgYWRkIHRpZCA9IHNldCA6PSB0aWQgOjogIXNldCBpblxuICAgIGxldCByZWMgdHJhdiA9IGZ1bmN0aW9uXG4gICAgICAoKiBXZSBsb29rIGZvciBjeWNsZXMgYnkgdHJhdmVyc2luZyB0aGUgc3RydWN0dXJlIG9mIHR5cGUtZXhwcmVzc2lvbnMgKilcbiAgICAgIHwgQW5ub3RhdGUgKF8sIHQpIC0+IHRyYXYgdFxuICAgICAgfCBCYXNlIChfLCB0cykgfCBUdXBsZSB0cyB8IFRvcF9hcHAgKF8sIF8sIHRzKSAtPiBMaXN0Lml0ZXIgdHMgfmY6dHJhdlxuICAgICAgKCogLi5pbmNsdWRpbmcgcG9seS12YXJpYW50cyAqKVxuICAgICAgfCBQb2x5X3ZhcmlhbnQgKF8sIGNzKSAtPlxuICAgICAgICBMaXN0Lml0ZXIgY3MgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBgQ29uc3RyIChfLCBOb25lKSAtPiAoKVxuICAgICAgICAgIHwgYENvbnN0ciAoXywgU29tZSB0KSAtPiB0cmF2IHRcbiAgICAgICAgICB8IGBJbmhlcml0IChfbG9jLCB0KSAtPiB0cmF2IHQpXG4gICAgICAoKiAuLiBhbmQgcmVjb3JkcyAmIChub3JtYWwpIHZhcmlhbnRzICopXG4gICAgICB8IFJlY29yZCB4cyAtPiBpZiB2aWFfVlIgdGhlbiBMaXN0Lml0ZXIgeHMgfmY6KGZ1biAoXywgdCkgLT4gdHJhdiB0KSBlbHNlICgpXG4gICAgICB8IFZhcmlhbnQgeHMgLT5cbiAgICAgICAgaWYgdmlhX1ZSIHRoZW4gTGlzdC5pdGVyIHhzIH5mOihmdW4gKF8sIHRzKSAtPiBMaXN0Lml0ZXIgfmY6dHJhdiB0cykgZWxzZSAoKVxuICAgICAgKCogV2UgZG9udCBmb2xsb3cgdHlwZS12YXJzICopXG4gICAgICB8IFZhciBfIC0+ICgpXG4gICAgICAoKiB0cmF2ZXJzZSAocmVjdXJzaXZlKSB0eXBlLWFwcHMgd2hlbiBmaXJzdCBlbmNvdW50ZXJlZCAqKVxuICAgICAgfCBSZWNfYXBwICh0aWQsIHRzKSAtPlxuICAgICAgICBpZiB2aXNpdGVkIHRpZFxuICAgICAgICB0aGVuICgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGFkZCB0aWQ7XG4gICAgICAgICAgdHJhdl90aWQgdGlkKTtcbiAgICAgICAgTGlzdC5pdGVyIHRzIH5mOnRyYXZcbiAgICBhbmQgdHJhdl90aWQgdGlkID1cbiAgICAgIGxldCBfLCBib2R5ID0gR3JvdXAubG9va3VwIGdyb3VwIHRpZCBpblxuICAgICAgdHJhdiBib2R5XG4gICAgaW5cbiAgICB0cmF2X3RpZCB0aWQ7XG4gICAgbGV0IHJlcyA9IHZpc2l0ZWQgdGlkIGluXG4gICAgKCpsZXQgX3NzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIChMaXN0Lm1hcCAoIXNldCkgfmY6KHNwcmludGYgIVwiJXtUaWR9XCIpKSBpbiopXG4gICAgKCpQcmludGYucHJpbnRmICFcImlzX2N5bGljOiAle1RpZH0gLS0+ICglcykgJWIgIC0tICVzJSFcIiB0aWQgX3NzIHJlcyAoR3JvdXAubG9jIGdyb3VwKTsqKVxuICAgIHJlc1xuICA7O1xuXG4gIGxldCBpc19jeWNsaWMgPSBpc19jeWNsaWNfMCB+dmlhX1ZSOnRydWVcbiAgbGV0IGlzX2N5Y2xpY193aXRoX25vX2ludGVydmVuaW5nX1ZSID0gaXNfY3ljbGljXzAgfnZpYV9WUjpmYWxzZVxuZW5kXG5cbmluY2x1ZGUgRXhwcmVzc2lvblxuXG5tb2R1bGUgRXZhbHVhdGlvbiAoQ2Fub25pY2FsIDogQ2Fub25pY2FsKSA9IHN0cnVjdFxuICAoKiBbVmVudi50XVxuICAgICBFbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIHR5cGUtdmFycyAqKVxuICBtb2R1bGUgVmVudiA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGxvb2t1cCA6IHQgLT4gVmlkLnQgLT4gVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQgb3B0aW9uXG4gICAgdmFsIGNyZWF0ZSA6IChWaWQudCAqIFZpc2liaWxpdHkudmlzaWJsZSBDYW5vbmljYWwuRXhwMS50KSBsaXN0IC0+IHRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQgTWFwLk0oVmlkKS50XG5cbiAgICBsZXQgY3JlYXRlID1cbiAgICAgIExpc3QuZm9sZFxuICAgICAgICB+aW5pdDooTWFwLmVtcHR5IChtb2R1bGUgVmlkKSlcbiAgICAgICAgfmY6KGZ1biB0IChrLCB2KSAtPiBNYXAuc2V0IH5rZXk6ayB+ZGF0YTp2IHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXAgdCBrID0gTWFwLmZpbmQgdCBrXG4gIGVuZFxuXG4gIG1vZHVsZSBBcHBsaWNhbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBSZWN1cnNpb25fbGV2ZWwgb2YgaW50XG4gICAgICB8IERlZmluaXRpb24gb2YgQ2Fub25pY2FsLkRlZi50XG4gIGVuZFxuXG4gICgqIFtUZW52LnRdXG4gICAgIEVudmlyb25tZW50IGZvciByZXNvbHZpbmcgdHlwZS1kZWZpbml0aW9ucyAqKVxuICBtb2R1bGUgVGVudiA6IHNpZ1xuICAgIHR5cGUga2V5ID0gR2lkLnQgKiBUaWQudFxuICAgIHR5cGUgdFxuXG4gICAgdmFsIGZpbmQgOiB0IC0+IGtleSAtPiBbIGBSZWN1cnNpb25fbGV2ZWwgb2YgaW50IF0gb3B0aW9uXG4gICAgdmFsIGVtcHR5IDogdFxuICAgIHZhbCBleHRlbmQgOiB0IC0+IGtleSAtPiBbIGBSZWN1cnNpb25fbGV2ZWwgb2YgaW50IF0gLT4gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBHaWQudCAqIFRpZC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgICBlbmRcblxuICAgIHR5cGUga2V5ID0gS2V5LnRcbiAgICB0eXBlIHQgPSBbIGBSZWN1cnNpb25fbGV2ZWwgb2YgaW50IF0gTWFwLk0oS2V5KS50XG5cbiAgICBsZXQgZmluZCB0IGsgPSBNYXAuZmluZCB0IGtcbiAgICBsZXQgZW1wdHkgPSBNYXAuZW1wdHkgKG1vZHVsZSBLZXkpXG4gICAgbGV0IGV4dGVuZCB0IGsgdiA9IE1hcC5zZXQgfmtleTprIH5kYXRhOnYgdFxuICBlbmRcblxuICAoKiBbRGVmaW5pbmcudF1cbiAgICAgTW9uYWQgZm9yIG1hbmFnaW5nIHVuLXJvbGxpbmcgZGVwdGgsIGFuZCBtYWludGFpbmcgYSBbVGVudi50XSAqKVxuICBtb2R1bGUgRGVmaW5pbmcgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG4gICAgdmFsIGxvb2tfZW52IDogVGVudi5rZXkgLT4gQXBwbGljYW5kLnQgb3B0aW9uIHRcbiAgICB2YWwgZXh0ZW5kX25ld190aWQgOiBUZW52LmtleSAtPiBDYW5vbmljYWwuRGVmLnQgdCAtPiBBcHBsaWNhbmQudCB0XG4gICAgdmFsIGV4ZWMgOiAnYSB0IC0+ICdhXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IGRlcHRoOmludCAtPiBUZW52LnQgLT4gJ2FcblxuICAgIGxldCByZXR1cm4geCB+ZGVwdGg6XyBfdGVudiA9IHhcblxuICAgIGxldCBiaW5kIHQgZiB+ZGVwdGggdGVudiA9XG4gICAgICBsZXQgeCA9IHQgfmRlcHRoIHRlbnYgaW5cbiAgICAgIChmIHgpIH5kZXB0aCB0ZW52XG4gICAgOztcblxuICAgIGxldCBsb29rX2VudiBrZXkgfmRlcHRoOl8gdGVudiA9XG4gICAgICBsZXQgcmVzdWx0ID0gVGVudi5maW5kIHRlbnYga2V5IGluXG4gICAgICBPcHRpb24ubWFwIH5mOihmdW4gKGBSZWN1cnNpb25fbGV2ZWwgeCkgLT4gQXBwbGljYW5kLlJlY3Vyc2lvbl9sZXZlbCB4KSByZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IGV4dGVuZF9uZXdfdGlkIGtleSBkZWZfdCB+ZGVwdGggdGVudiA9XG4gICAgICBBcHBsaWNhbmQuRGVmaW5pdGlvblxuICAgICAgICAobGV0IHZhbHVlID0gYFJlY3Vyc2lvbl9sZXZlbCBkZXB0aCBpblxuICAgICAgICAgbGV0IHRlbnYgPSBUZW52LmV4dGVuZCB0ZW52IGtleSB2YWx1ZSBpblxuICAgICAgICAgZGVmX3QgfmRlcHRoOihkZXB0aCArIDEpIHRlbnYpXG4gICAgOztcblxuICAgIGxldCBleGVjIHQgPSB0IH5kZXB0aDowIFRlbnYuZW1wdHlcbiAgZW5kXG5cbiAgdHlwZSAnYSBkZWZpbmluZyA9ICdhIERlZmluaW5nLnRcblxuICBsZXQgKCA+Pj0gKSA9IERlZmluaW5nLmJpbmRcbiAgbGV0IHJldHVybiA9IERlZmluaW5nLnJldHVyblxuXG4gIGxldCBzZXF1ZW5jZV9kZWZpbmluZyA6ICdhIGxpc3QgLT4gZjooJ2EgLT4gJ2IgZGVmaW5pbmcpIC0+ICdiIGxpc3QgZGVmaW5pbmcgPVxuICAgIGZ1biB4cyB+ZiAtPlxuICAgIGxldCByZWMgbG9vcCBhY2NfeXMgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKExpc3QucmV2IGFjY195cylcbiAgICAgIHwgeCA6OiB4cyAtPiBmIHggPj49IGZ1biB5IC0+IGxvb3AgKHkgOjogYWNjX3lzKSB4c1xuICAgIGluXG4gICAgbG9vcCBbXSB4c1xuICA7O1xuXG4gICgqXG4gICAgIFNoYXBlIGV2YWx1YXRpb24uXG5cbiAgICAgU2hhcGVzIGFyZSBldmFsdWF0ZWQgdG8gY2Fub25pY2FsLXNoYXBlIChleHByZXNzaW9ucyksIHdpdGggYWRkaXRpb25hbCBkZWZzIGNvbGxlY3RlZFxuICAgICBpbiB0aGUgW2RlZmluaW5nXSBtb25hZCwgd2hpY2ggYWxzbyBtYW5hZ2VzIGdlbmVyYXRpb24vbWFwcGluZyB0byBbQ2Fub25pY2FsLlRpZC50XVxuXG4gICAgIFRoZXJlIGlzIGRvd253YXJkcyBjb250ZXh0IG9mIFtncm91cF0gYW5kIFtWZW52LnRdXG4gICAgIFRoZSAoY3VycmVudCkgW2dyb3VwXSBjaGFuZ2VzIHdoZW4gdGhlIGNhc2UgZm9yIFtUb3BfYXBwXSBjYWxscyBbZXZhbF9hcHBdLlxuXG4gICAgIFRoZSBjdXJyZW50IFtWZW52LnRdIGlzIGFiYW5kb25lZCB3aGVuIFtldmFsX2FwcF0gaXMgY2FsbGVkLCBhbmQgdGhlbiByZS1jcmVhdGVkIGFmdGVyXG4gICAgIHRoZSBkZWNpc2lvbiBoYXMgYmVlbiBtYWRlIHRvIGVpdGhlciBpbmxpbmUgdGhlIHR5cGUtYXBwbGljYXRpb24sIG9yIG1ha2UgYSByZWZlcmVuY2VcbiAgICAgdG8gYSB0eXBlLWRlZmluaXRpb24sIHdoaWNoIGlzIGNyZWF0ZWQgYXQgbW9zdCBvbmNlIGZvciBlYWNoIChHaWQudCAqIFRpZC50KS5cblxuICAgICBXZSBtYWtlIGEgdHlwZS1kZWZpbml0aW9uIGFsd2F5cyBmb3IgUmVjb3JkcyBhbmQgVmFyaWFudHMsIGFuZCBpbiBhZGRpdGlvbiBmb3IgYW55XG4gICAgIG90aGVyIGN5Y2xpYyB0eXBlLWRlZmluaXRpb24uXG4gICopXG5cbiAgbGV0IHJlYyBldmFsIDogZ3JvdXAgLT4gVmVudi50IC0+IHQgLT4gVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCB2ZW52IHQgLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBSZWNvcmQgYmluZHMgLT5cbiAgICAgICAgc2VxdWVuY2VfZGVmaW5pbmcgYmluZHMgfmY6KGZ1biAocywgeCkgLT5cbiAgICAgICAgICBldmFsIGdyb3VwIHZlbnYgeCA+Pj0gZnVuIHkgLT4gcmV0dXJuIChzLCB5KSlcbiAgICAgICAgPj49IGZ1biBiaW5kcyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUucmVjb3JkIGJpbmRzKVxuICAgICAgfCBWYXJpYW50IGFsdHMgLT5cbiAgICAgICAgc2VxdWVuY2VfZGVmaW5pbmcgYWx0cyB+ZjooZnVuIChzLCB4cykgLT5cbiAgICAgICAgICBldmFsX2xpc3QgZ3JvdXAgdmVudiB4cyA+Pj0gZnVuIHlzIC0+IHJldHVybiAocywgeXMpKVxuICAgICAgICA+Pj0gZnVuIGFsdHMgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnZhcmlhbnQgYWx0cylcbiAgICAgIHwgVmFyIChsb2MsIHZpZCkgLT5cbiAgICAgICAgKG1hdGNoIFZlbnYubG9va3VwIHZlbnYgdmlkIHdpdGhcbiAgICAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gICAgICAgICB8IE5vbmUgLT4gZXZhbF9mYWlsIGxvYyAhXCJGcmVlIHR5cGUgdmFyaWFibGU6ICcle1ZpZH1cIiB2aWQgKCkpXG4gICAgICB8IEFubm90YXRlIChzLCB0KSAtPlxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgdCA+Pj0gZnVuIHYgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLmFubm90YXRlIHMgdilcbiAgICAgIHwgQmFzZSAocywgdHMpIC0+XG4gICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IHRzID4+PSBmdW4gdnMgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLmJhc2V0eXBlIHMgdnMpXG4gICAgICB8IFR1cGxlIHRzIC0+IGV2YWxfbGlzdCBncm91cCB2ZW52IHRzID4+PSBmdW4gdnMgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnR1cGxlIHZzKVxuICAgICAgfCBUb3BfYXBwIChpbl9ncm91cCwgdGlkLCBhcmdzKSAtPlxuICAgICAgICBldmFsX2xpc3QgZ3JvdXAgdmVudiBhcmdzXG4gICAgICAgID4+PSBmdW4gYXJncyAtPlxuICAgICAgICAoKiBhcmdzIGV2YWx1YXRlZCBpbiBjdXJyZW50IGdyb3VwICopXG4gICAgICAgIGV2YWxfYXBwIGluX2dyb3VwIHRpZCBhcmdzXG4gICAgICAoKiBncm91cCBjaGFuZ2VkIGhlcmUgKilcbiAgICAgIHwgUmVjX2FwcCAodGlkLCBhcmdzKSAtPlxuICAgICAgICBldmFsX2xpc3QgZ3JvdXAgdmVudiBhcmdzID4+PSBmdW4gYXJncyAtPiBldmFsX2FwcCBncm91cCB0aWQgYXJnc1xuICAgICAgfCBQb2x5X3ZhcmlhbnQgKGxvYywgY3MpIC0+XG4gICAgICAgIHNlcXVlbmNlX2RlZmluaW5nIH5mOihldmFsX3BvbHlfY29uc3RyIGdyb3VwIHZlbnYpIGNzXG4gICAgICAgID4+PSBmdW4geHNzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5wb2x5X3ZhcmlhbnQgbG9jIChMaXN0LmNvbmNhdCB4c3MpKVxuXG4gIGFuZCBldmFsX2xpc3QgOiBncm91cCAtPiBWZW52LnQgLT4gdCBsaXN0IC0+IF8gQ2Fub25pY2FsLkV4cDEudCBsaXN0IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgdmVudiB0cyAtPiBzZXF1ZW5jZV9kZWZpbmluZyB0cyB+ZjooZXZhbCBncm91cCB2ZW52KVxuXG4gIGFuZCBldmFsX3BvbHlfY29uc3RyXG4gICAgOiAgZ3JvdXAgLT4gVmVudi50IC0+IHQgcG9seV9jb25zdHJcbiAgICAgIC0+IChzdHJpbmcgKiBWaXNpYmlsaXR5Lm9wYXF1ZSBDYW5vbmljYWwuRXhwMS50IG9wdGlvbikgbGlzdCBkZWZpbmluZ1xuICAgID1cbiAgICBmdW4gZ3JvdXAgdmVudiBjIC0+XG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgYENvbnN0ciAocywgTm9uZSkgLT4gcmV0dXJuIFsgcywgTm9uZSBdXG4gICAgICB8IGBDb25zdHIgKHMsIFNvbWUgdCkgLT5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IHQgPj49IGZ1biB2IC0+IHJldHVybiBbIHMsIFNvbWUgKENhbm9uaWNhbC5FeHAxLm9wYXF1ZSB2KSBdXG4gICAgICB8IGBJbmhlcml0IChsb2MsIHQpIC0+XG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiB0XG4gICAgICAgID4+PSBmdW4gdiAtPlxuICAgICAgICAobWF0Y2ggQ2Fub25pY2FsLkV4cDEuZ2V0X3BvbHlfdmFyaWFudCB2IHdpdGhcbiAgICAgICAgIHwgT2sgdGFiIC0+IHJldHVybiAoU29ydGVkX3RhYmxlLmV4cG9zZSB0YWIpXG4gICAgICAgICB8IEVycm9yIGRlc2MgLT5cbiAgICAgICAgICAgZXZhbF9mYWlsXG4gICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICAgXCJUaGUgc2hhcGUgZm9yIGFuIGluaGVyaXRlZCB0eXBlIGlzIG5vdCBkZXNjcmliZWQgYXMgYSBwb2x5bW9ycGhpYy12YXJpYW50OiAlc1wiXG4gICAgICAgICAgICAgZGVzY1xuICAgICAgICAgICAgICgpKVxuXG4gIGFuZCBldmFsX2RlZmluaXRpb24gOiBncm91cCAtPiBWaWQudCBsaXN0IC0+IHQgLT4gQ2Fub25pY2FsLkRlZi50IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgZm9ybWFscyBib2R5IC0+XG4gICAgICBsZXQgdmVudiA9IFZlbnYuY3JlYXRlIChMaXN0Lm1hcGkgZm9ybWFscyB+ZjooZnVuIGkgeCAtPiB4LCBDYW5vbmljYWwuRXhwMS52YXIgaSkpIGluXG4gICAgICBldmFsIGdyb3VwIHZlbnYgYm9keSA+Pj0gZnVuIHYgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLmRlZmluZSB2KVxuXG4gIGFuZCBldmFsX2FwcCA6IGdyb3VwIC0+IFRpZC50IC0+IF8gQ2Fub25pY2FsLkV4cDEudCBsaXN0IC0+IF8gQ2Fub25pY2FsLkV4cDEudCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIHRpZCBhcmdzIC0+XG4gICAgICBsZXQgZ2lkID0gR3JvdXAuaWQgZ3JvdXAgaW5cbiAgICAgIGxldCBmb3JtYWxzLCBib2R5ID0gR3JvdXAubG9va3VwIGdyb3VwIHRpZCBpblxuICAgICAgbGV0IHJlY29yZF9vcl9ub3JtYWxfdmFyaWFudCA9XG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICB8IFJlY29yZCBfIHwgVmFyaWFudCBfIC0+IHRydWVcbiAgICAgICAgfCBUdXBsZSBfIHwgQW5ub3RhdGUgXyB8IEJhc2UgXyB8IFBvbHlfdmFyaWFudCBfIHwgVmFyIF8gfCBSZWNfYXBwIF8gfCBUb3BfYXBwIF8gLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgaW5cbiAgICAgIGxldCBjeWNsaWMgPSBpc19jeWNsaWMgZ3JvdXAgdGlkIGluXG4gICAgICBsZXQgY3ljbGljX25vX1ZSID0gaXNfY3ljbGljX3dpdGhfbm9faW50ZXJ2ZW5pbmdfVlIgZ3JvdXAgdGlkIGluXG4gICAgICBpZiAocmVjb3JkX29yX25vcm1hbF92YXJpYW50ICYmIGN5Y2xpYykgfHwgY3ljbGljX25vX1ZSXG4gICAgICB0aGVuXG4gICAgICAgIERlZmluaW5nLmxvb2tfZW52IChnaWQsIHRpZClcbiAgICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSByZWN1cnNlIC0+IHJldHVybiByZWN1cnNlXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBEZWZpbmluZy5leHRlbmRfbmV3X3RpZCAoZ2lkLCB0aWQpIChldmFsX2RlZmluaXRpb24gZ3JvdXAgZm9ybWFscyBib2R5KSlcbiAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgIHwgUmVjdXJzaW9uX2xldmVsIHIgLT4gcmV0dXJuIChDYW5vbmljYWwuRXhwMS5yZWN1cnNlIHIgYXJncylcbiAgICAgICAgfCBEZWZpbml0aW9uIGRlZiAtPiByZXR1cm4gKENhbm9uaWNhbC5FeHAxLmFwcGx5IGRlZiBhcmdzKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCB2ZW52ID1cbiAgICAgICAgICBtYXRjaCBMaXN0LnppcCBmb3JtYWxzIGFyZ3Mgd2l0aFxuICAgICAgICAgIHwgT2sgeCAtPiBWZW52LmNyZWF0ZSB4XG4gICAgICAgICAgfCBVbmVxdWFsX2xlbmd0aHMgLT4gZmFpbHdpdGggXCJhcHBseSwgaW5jb3JyZWN0IHR5cGUgYXBwbGljYXRpb24gYXJpdHlcIlxuICAgICAgICBpblxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgYm9keSlcbiAgOztcblxuICAoKiB0b3AgbGV2ZWwgZW50cnkgcG9pbnQgZm9yIGV2YWx1YXRpb24gKilcbiAgbGV0IGV2YWwgOiB0IC0+IENhbm9uaWNhbC50ID1cbiAgICBmdW4gdCAtPlxuICAgICAgbGV0IGdyb3VwID0gZ3JvdXAgKExvY2F0aW9uLm9mX3N0cmluZyBcInRvcC1sZXZlbFwiKSBbXSBpblxuICAgICAgbGV0IHZlbnYgPSBWZW52LmNyZWF0ZSBbXSBpblxuICAgICAgbGV0IHYgPSBEZWZpbmluZy5leGVjIChldmFsIGdyb3VwIHZlbnYgdCkgaW5cbiAgICAgIENhbm9uaWNhbC5DcmVhdGUuY3JlYXRlIHZcbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2Fub25pY2FsID0gc3RydWN0XG4gIGluY2x1ZGUgQ2Fub25pY2FsX2Z1bGxcblxuICBtb2R1bGUgRXhwID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEV2YWx1YXRpb24gKENhbm9uaWNhbF9mdWxsKVxubW9kdWxlIENhbm9uaWNhbF9zZWxlY3RlZCA9IENhbm9uaWNhbF9kaWdlc3Rcbm1vZHVsZSBFdmFsdWF0aW9uX3RvX2RpZ2VzdCA9IEV2YWx1YXRpb24gKENhbm9uaWNhbF9zZWxlY3RlZClcblxubGV0IGV2YWxfdG9fZGlnZXN0IGV4cCA9IENhbm9uaWNhbF9zZWxlY3RlZC50b19kaWdlc3QgKEV2YWx1YXRpb25fdG9fZGlnZXN0LmV2YWwgZXhwKVxubGV0IGV2YWxfdG9fZGlnZXN0X3N0cmluZyBleHAgPSBEaWdlc3QudG9faGV4IChldmFsX3RvX2RpZ2VzdCBleHApXG5cbm1vZHVsZSBGb3JfdHlwZXJlcCA9IHN0cnVjdFxuICBleGNlcHRpb24gTm90X2FfdHVwbGUgb2YgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBkZWNvbnN0cnVjdF90dXBsZV9leG4gdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBUdXBsZSB0cyAtPiB0c1xuICAgIHwgXyAtPiByYWlzZSAoTm90X2FfdHVwbGUgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIG1vZHVsZSBTb3J0ZWRfdGFibGUgPSBTb3J0ZWRfdGFibGVcbiAgbW9kdWxlIENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IgPSBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yXG4gIG1vZHVsZSBDYW5vbmljYWwgPSBDYW5vbmljYWxcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBOT1RFOlxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZ0xhYmVscy5tbGksIHJ1biB0b29scy9zeW5jX3N0ZGxpYl9kb2NzIGFmdGVyIGVkaXRpbmdcbiAgIGl0IHRvIGdlbmVyYXRlIHN0cmluZy5tbGkuXG5cbiAgIElmIHRoaXMgZmlsZSBpcyBzdHJpbmcubWxpLCBkbyBub3QgZWRpdCBpdCBkaXJlY3RseSAtLSBlZGl0XG4gICBzdHJpbmdMYWJlbHMubWxpIGluc3RlYWQuXG4gKilcblxuKCoqIFN0cmluZ3MuXG5cbiAgICBBIHN0cmluZyBbc10gb2YgbGVuZ3RoIFtuXSBpcyBhbiBpbmRleGFibGUgYW5kIGltbXV0YWJsZSBzZXF1ZW5jZVxuICAgIG9mIFtuXSBieXRlcy4gRm9yIGhpc3RvcmljYWwgcmVhc29ucyB0aGVzZSBieXRlcyBhcmUgcmVmZXJyZWQgdG9cbiAgICBhcyBjaGFyYWN0ZXJzLlxuXG4gICAgVGhlIHNlbWFudGljcyBvZiBzdHJpbmcgZnVuY3Rpb25zIGlzIGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgICBpbmRpY2VzIGFuZCBwb3NpdGlvbnMuIFRoZXNlIGFyZSBkZXBpY3RlZCBhbmQgZGVzY3JpYmVkXG4gICAgYXMgZm9sbG93cy5cblxue3ZcbnBvc2l0aW9ucyAgMCAgIDEgICAyICAgMyAgIDQgICAgbi0xICAgIG5cbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbiAgaW5kaWNlcyAgfCAwIHwgMSB8IDIgfCAzIHwgLi4uIHwgbi0xIHxcbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbnZ9XG4gICAge3VsXG4gICAgey0gQW4ge2UgaW5kZXh9IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgXFxbWzBdO1tuLTFdXFxdLlxuICAgICAgIEl0IHJlcHJlc2VudHMgdGhlIFtpXXRoIGJ5dGUgKGNoYXJhY3Rlcikgb2YgW3NdIHdoaWNoIGNhbiBiZVxuICAgICAgIGFjY2Vzc2VkIHVzaW5nIHRoZSBjb25zdGFudCB0aW1lIHN0cmluZyBpbmRleGluZyBvcGVyYXRvclxuICAgICAgIFtzLltpXV0ufVxuICAgIHstIEEge2UgcG9zaXRpb259IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2VcbiAgICAgICBcXFtbMF07W25dXFxdLiBJdCByZXByZXNlbnRzIGVpdGhlciB0aGUgcG9pbnQgYXQgdGhlIGJlZ2lubmluZyBvZlxuICAgICAgIHRoZSBzdHJpbmcsIG9yIHRoZSBwb2ludCBiZXR3ZWVuIHR3byBpbmRpY2VzLCBvciB0aGUgcG9pbnQgYXRcbiAgICAgICB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuIFRoZSBbaV10aCBieXRlIGluZGV4IGlzIGJldHdlZW4gcG9zaXRpb25cbiAgICAgICBbaV0gYW5kIFtpKzFdLn19XG5cbiAgICBUd28gaW50ZWdlcnMgW3N0YXJ0XSBhbmQgW2xlbl0gYXJlIHNhaWQgdG8gZGVmaW5lIGEge2UgdmFsaWRcbiAgICBzdWJzdHJpbmd9IG9mIFtzXSBpZiBbbGVuID49IDBdIGFuZCBbc3RhcnRdLCBbc3RhcnQrbGVuXSBhcmVcbiAgICBwb3NpdGlvbnMgb2YgW3NdLlxuXG4gICAge2IgVW5pY29kZSB0ZXh0Ln0gU3RyaW5ncyBiZWluZyBhcmJpdHJhcnkgc2VxdWVuY2VzIG9mIGJ5dGVzLCB0aGV5XG4gICAgY2FuIGhvbGQgYW55IGtpbmQgb2YgdGV4dHVhbCBlbmNvZGluZy4gSG93ZXZlciB0aGUgcmVjb21tZW5kZWRcbiAgICBlbmNvZGluZyBmb3Igc3RvcmluZyBVbmljb2RlIHRleHQgaW4gT0NhbWwgc3RyaW5ncyBpcyBVVEYtOC4gVGhpc1xuICAgIGlzIHRoZSBlbmNvZGluZyB1c2VkIGJ5IFVuaWNvZGUgZXNjYXBlcyBpbiBzdHJpbmcgbGl0ZXJhbHMuIEZvclxuICAgIGV4YW1wbGUgdGhlIHN0cmluZyBbXCJcXHV7MUY0MkJ9XCJdIGlzIHRoZSBVVEYtOCBlbmNvZGluZyBvZiB0aGVcbiAgICBVbmljb2RlIGNoYXJhY3RlciBVKzFGNDJCLlxuXG4gICAge2IgUGFzdCBtdXRhYmlsaXR5Ln0gQmVmb3JlIE9DYW1sIDQuMDIsIHN0cmluZ3MgdXNlZCB0byBiZSBtb2RpZmlhYmxlIGluXG4gICAgcGxhY2UgbGlrZSB7IUJ5dGVzLnR9IG11dGFibGUgc2VxdWVuY2VzIG9mIGJ5dGVzLlxuICAgIE9DYW1sIDQgaGFkIHZhcmlvdXMgY29tcGlsZXIgZmxhZ3MgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBzdXBwb3J0IHRoZVxuICAgIHRyYW5zaXRpb24gcGVyaW9kIGZyb20gbXV0YWJsZSB0byBpbW11dGFibGUgc3RyaW5ncy5cbiAgICBUaG9zZSBvcHRpb25zIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlLCBhbmQgc3RyaW5ncyBhcmUgbm93IGFsd2F5c1xuICAgIGltbXV0YWJsZS5cblxuICAgIFRoZSBsYWJlbGVkIHZlcnNpb24gb2YgdGhpcyBtb2R1bGUgY2FuIGJlIHVzZWQgYXMgZGVzY3JpYmVkIGluIHRoZVxuICAgIHshU3RkTGFiZWxzfSBtb2R1bGUuXG4qKVxuXG4oKiogezE6c3RyaW5ncyBTdHJpbmdzfSAqKVxuXG50eXBlIHQgPSBzdHJpbmdcbigqKiBUaGUgdHlwZSBmb3Igc3RyaW5ncy4gKilcblxudmFsIG1ha2UgOiBpbnQgLT4gY2hhciAtPiBzdHJpbmdcbigqKiBbbWFrZSBuIGNdIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbl0gd2l0aCBlYWNoIGluZGV4IGhvbGRpbmcgdGhlXG4gICAgY2hhcmFjdGVyIFtjXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtuIDwgMF0gb3IgW24gPiBdeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9LiAqKVxuXG52YWwgaW5pdCA6IGludCAtPiAoaW50IC0+IGNoYXIpIC0+IHN0cmluZ1xuKCoqIFtpbml0IG4gZl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGluZGV4XG4gICAgW2ldIGhvbGRpbmcgdGhlIGNoYXJhY3RlciBbZiBpXSAoY2FsbGVkIGluIGluY3JlYXNpbmcgaW5kZXggb3JkZXIpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uXG4gICAgQHNpbmNlIDQuMDIgKilcblxudmFsIGVtcHR5IDogc3RyaW5nXG4oKiogVGhlIGVtcHR5IHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG4oKiogW2xlbmd0aCBzXSBpcyB0aGUgbGVuZ3RoIChudW1iZXIgb2YgYnl0ZXMvY2hhcmFjdGVycykgb2YgW3NdLiAqKVxuXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuKCoqIFtnZXQgcyBpXSBpcyB0aGUgY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpbiBbc10uIFRoaXMgaXMgdGhlIHNhbWVcbiAgICBhcyB3cml0aW5nIFtzLltpXV0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gbm90IGFuIGluZGV4IG9mIFtzXS4gKilcblxudmFsIG9mX2J5dGVzIDogYnl0ZXMgLT4gc3RyaW5nXG4oKiogUmV0dXJuIGEgbmV3IHN0cmluZyB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlbiBieXRlXG4gICAgc2VxdWVuY2UuXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIHRvX2J5dGVzIDogc3RyaW5nIC0+IGJ5dGVzXG4oKiogUmV0dXJuIGEgbmV3IGJ5dGUgc2VxdWVuY2UgdGhhdCBjb250YWlucyB0aGUgc2FtZSBieXRlcyBhcyB0aGUgZ2l2ZW5cbiAgICBzdHJpbmcuXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGJsaXQgOlxuICBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuKCoqIFNhbWUgYXMgeyFCeXRlcy5ibGl0X3N0cmluZ30gd2hpY2ggc2hvdWxkIGJlIHByZWZlcnJlZC4gKilcblxuKCoqIHsxOmNvbmNhdCBDb25jYXRlbmF0aW5nfVxuXG4gICAge2IgTm90ZS59IFRoZSB7IVN0ZGxpYi4oIF4gKX0gYmluYXJ5IG9wZXJhdG9yIGNvbmNhdGVuYXRlcyB0d29cbiAgICBzdHJpbmdzLiAqKVxuXG52YWwgY29uY2F0IDogc3RyaW5nIC0+IHN0cmluZyBsaXN0IC0+IHN0cmluZ1xuKCoqIFtjb25jYXQgc2VwIHNzXSBjb25jYXRlbmF0ZXMgdGhlIGxpc3Qgb2Ygc3RyaW5ncyBbc3NdLCBpbnNlcnRpbmdcbiAgICB0aGUgc2VwYXJhdG9yIHN0cmluZyBbc2VwXSBiZXR3ZWVuIGVhY2guXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgY2F0IDogc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2F0IHMxIHMyXSBjb25jYXRlbmF0ZXMgczEgYW5kIHMyIChbczEgXiBzMl0pLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG4oKiogezE6cHJlZGljYXRlcyBQcmVkaWNhdGVzIGFuZCBjb21wYXJpc29uc30gKilcblxudmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbigqKiBbZXF1YWwgczAgczFdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbczBdIGFuZCBbczFdIGFyZSBjaGFyYWN0ZXItd2lzZVxuICAgIGVxdWFsLlxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4oKiogW2NvbXBhcmUgczAgczFdIHNvcnRzIFtzMF0gYW5kIFtzMV0gaW4gbGV4aWNvZ3JhcGhpY2FsIG9yZGVyLiBbY29tcGFyZV1cbiAgICBiZWhhdmVzIGxpa2UgeyFTdGRsaWIuY29tcGFyZX0gb24gc3RyaW5ncyBidXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50LiAqKVxuXG52YWwgc3RhcnRzX3dpdGggOlxuICBwcmVmaXggKCogY29tbWVudCB0aHdhcnRzIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgKikgOnN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtzdGFydHNfd2l0aCBdW35wcmVmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBzdGFydHMgd2l0aFxuICAgIFtwcmVmaXhdLlxuXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGVuZHNfd2l0aCA6XG4gIHN1ZmZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2VuZHNfd2l0aCBdW35zdWZmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBlbmRzIHdpdGggW3N1ZmZpeF0uXG5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW2NvbnRhaW5zX2Zyb20gcyBzdGFydCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYWZ0ZXIgcG9zaXRpb24gW3N0YXJ0XS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdGFydF0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgcmNvbnRhaW5zX2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtyY29udGFpbnNfZnJvbSBzIHN0b3AgY10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtjXSBhcHBlYXJzIGluIFtzXVxuICAgIGJlZm9yZSBwb3NpdGlvbiBbc3RvcCsxXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdG9wIDwgMF0gb3IgW3N0b3ArMV0gaXMgbm90IGEgdmFsaWRcbiAgICBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCBjb250YWlucyA6IHN0cmluZyAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnMgcyBjXSBpcyB7IVN0cmluZy5jb250YWluc19mcm9tfVsgcyAwIGNdLiAqKVxuXG4oKiogezE6ZXh0cmFjdCBFeHRyYWN0aW5nIHN1YnN0cmluZ3N9ICopXG5cbnZhbCBzdWIgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiBzdHJpbmdcbigqKiBbc3ViIHMgcG9zIGxlbl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtsZW5dLCBjb250YWluaW5nIHRoZVxuICAgIHN1YnN0cmluZyBvZiBbc10gdGhhdCBzdGFydHMgYXQgcG9zaXRpb24gW3Bvc10gYW5kIGhhcyBsZW5ndGhcbiAgICBbbGVuXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtwb3NdIGFuZCBbbGVuXSBkbyBub3QgZGVzaWduYXRlIGEgdmFsaWRcbiAgICBzdWJzdHJpbmcgb2YgW3NdLiAqKVxuXG52YWwgc3BsaXRfb25fY2hhciA6IGNoYXIgLT4gc3RyaW5nIC0+IHN0cmluZyBsaXN0XG4oKiogW3NwbGl0X29uX2NoYXIgc2VwIHNdIGlzIHRoZSBsaXN0IG9mIGFsbCAocG9zc2libHkgZW1wdHkpXG4gICAgc3Vic3RyaW5ncyBvZiBbc10gdGhhdCBhcmUgZGVsaW1pdGVkIGJ5IHRoZSBjaGFyYWN0ZXIgW3NlcF0uXG4gICAgSWYgW3NdIGlzIGVtcHR5LCB0aGUgcmVzdWx0IGlzIHRoZSBzaW5nbGV0b24gbGlzdCBbW1wiXCJdXS5cblxuICAgIFRoZSBmdW5jdGlvbidzIHJlc3VsdCBpcyBzcGVjaWZpZWQgYnkgdGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzOlxuICAgIHt1bFxuICAgIHstIFRoZSBsaXN0IGlzIG5vdCBlbXB0eS59XG4gICAgey0gQ29uY2F0ZW5hdGluZyBpdHMgZWxlbWVudHMgdXNpbmcgW3NlcF0gYXMgYSBzZXBhcmF0b3IgcmV0dXJucyBhXG4gICAgICBzdHJpbmcgZXF1YWwgdG8gdGhlIGlucHV0IChbY29uY2F0IChtYWtlIDEgc2VwKVxuICAgICAgKHNwbGl0X29uX2NoYXIgc2VwIHMpID0gc10pLn1cbiAgICB7LSBObyBzdHJpbmcgaW4gdGhlIHJlc3VsdCBjb250YWlucyB0aGUgW3NlcF0gY2hhcmFjdGVyLn19XG5cbiAgICBAc2luY2UgNC4wNCAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmFuc2Zvcm1pbmcgVHJhbnNmb3JtaW5nfSAqKVxuXG52YWwgbWFwIDogKGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXAgZiBzXSBpcyB0aGUgc3RyaW5nIHJlc3VsdGluZyBmcm9tIGFwcGx5aW5nIFtmXSB0byBhbGwgdGhlXG4gICAgY2hhcmFjdGVycyBvZiBbc10gaW4gaW5jcmVhc2luZyBvcmRlci5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbnZhbCBtYXBpIDogKGludCAtPiBjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwaSBmIHNdIGlzIGxpa2UgeyFtYXB9IGJ1dCB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBpcyBhbHNvXG4gICAgcGFzc2VkIHRvIFtmXS5cblxuICAgIEBzaW5jZSA0LjAyICopXG5cbnZhbCBmb2xkX2xlZnQgOiAoJ2FjYyAtPiBjaGFyIC0+ICdhY2MpIC0+ICdhY2MgLT4gc3RyaW5nIC0+ICdhY2NcbigqKiBbZm9sZF9sZWZ0IGYgeCBzXSBjb21wdXRlcyBbZiAoLi4uIChmIChmIHggcy5bMF0pIHMuWzFdKSAuLi4pIHMuW24tMV1dLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBmb2xkX3JpZ2h0IDogKGNoYXIgLT4gJ2FjYyAtPiAnYWNjKSAtPiBzdHJpbmcgLT4gJ2FjYyAtPiAnYWNjXG4oKiogW2ZvbGRfcmlnaHQgZiBzIHhdIGNvbXB1dGVzIFtmIHMuWzBdIChmIHMuWzFdICggLi4uIChmIHMuW24tMV0geCkgLi4uKSldLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBmb3JfYWxsIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZm9yX2FsbCBwIHNdIGNoZWNrcyBpZiBhbGwgY2hhcmFjdGVycyBpbiBbc10gc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtwXS5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZXhpc3RzIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZXhpc3RzIHAgc10gY2hlY2tzIGlmIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgb2YgW3NdIHNhdGlzZmllcyB0aGUgcHJlZGljYXRlXG4gICAgW3BdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCB0cmltIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt0cmltIHNdIGlzIFtzXSB3aXRob3V0IGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuIFdoaXRlc3BhY2VcbiAgICBjaGFyYWN0ZXJzIGFyZTogWycgJ10sIFsnXFx4MEMnXSAoZm9ybSBmZWVkKSwgWydcXG4nXSwgWydcXHInXSwgYW5kIFsnXFx0J10uXG5cbiAgICBAc2luY2UgNC4wMCAqKVxuXG52YWwgZXNjYXBlZCA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbZXNjYXBlZCBzXSBpcyBbc10gd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMgcmVwcmVzZW50ZWQgYnkgZXNjYXBlXG4gICAgc2VxdWVuY2VzLCBmb2xsb3dpbmcgdGhlIGxleGljYWwgY29udmVudGlvbnMgb2YgT0NhbWwuXG5cbiAgICBBbGwgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBVUy1BU0NJSSBwcmludGFibGUgcmFuZ2UgXFxbMHgyMDsweDdFXFxdIGFyZVxuICAgIGVzY2FwZWQsIGFzIHdlbGwgYXMgYmFja3NsYXNoICgweDJGKSBhbmQgZG91YmxlLXF1b3RlICgweDIyKS5cblxuICAgIFRoZSBmdW5jdGlvbiB7IVNjYW5mLnVuZXNjYXBlZH0gaXMgYSBsZWZ0IGludmVyc2Ugb2YgW2VzY2FwZWRdLFxuICAgIGkuZS4gW1NjYW5mLnVuZXNjYXBlZCAoZXNjYXBlZCBzKSA9IHNdIGZvciBhbnkgc3RyaW5nIFtzXSAodW5sZXNzXG4gICAgW2VzY2FwZWQgc10gZmFpbHMpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy4gKilcblxudmFsIHVwcGVyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdXBwZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCBsb3dlcmNhc2UgbGV0dGVyc1xuICAgIHRyYW5zbGF0ZWQgdG8gdXBwZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGxvd2VyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbG93ZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCB1cHBlcmNhc2UgbGV0dGVycyB0cmFuc2xhdGVkXG4gICAgdG8gbG93ZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2NhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG9cbiAgICB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgdW5jYXBpdGFsaXplX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1bmNhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG8gbG93ZXJjYXNlLFxuICAgIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhdmVyc2luZyBUcmF2ZXJzaW5nfSAqKVxuXG52YWwgaXRlciA6IChjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXIgZiBzXSBhcHBsaWVzIGZ1bmN0aW9uIFtmXSBpbiB0dXJuIHRvIGFsbCB0aGUgY2hhcmFjdGVycyBvZiBbc10uXG4gICAgSXQgaXMgZXF1aXZhbGVudCB0byBbZiBzLlswXTsgZiBzLlsxXTsgLi4uOyBmIHMuW2xlbmd0aCBzIC0gMV07ICgpXS4gKilcblxudmFsIGl0ZXJpIDogKGludCAtPiBjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXJpXSBpcyBsaWtlIHshaXRlcn0sIGJ1dCB0aGUgZnVuY3Rpb24gaXMgYWxzbyBnaXZlbiB0aGVcbiAgICBjb3JyZXNwb25kaW5nIGNoYXJhY3RlciBpbmRleC5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbigqKiB7MTpzZWFyY2hpbmcgU2VhcmNoaW5nfSAqKVxuXG52YWwgaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXhfZnJvbSBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cblxudmFsIGluZGV4X2Zyb21fb3B0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBbY11cbiAgICBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldIChpZiBhbnkpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4X2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBbY10gaW5cbiAgICBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuXG4gICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBbY10gZG9lcyBub3Qgb2NjdXIgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXS5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtyaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIGluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW2luZGV4IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbX1bIHMgMCBjXS4gKilcblxudmFsIGluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfb3B0IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbV9vcHR9WyBzIDAgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tfVsgcyAobGVuZ3RoIHMgLSAxKSBjXS4gKilcblxudmFsIHJpbmRleF9vcHQgOiBzdHJpbmcgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5yaW5kZXhfZnJvbV9vcHR9WyBzIChsZW5ndGggcyAtIDEpIGNdLlxuXG4gICAgQHNpbmNlIDQuMDUgKilcblxuKCoqIHsxIFN0cmluZ3MgYW5kIFNlcXVlbmNlc30gKilcblxudmFsIHRvX3NlcSA6IHQgLT4gY2hhciBTZXEudFxuKCoqIFt0b19zZXEgc10gaXMgYSBzZXF1ZW5jZSBtYWRlIG9mIHRoZSBzdHJpbmcncyBjaGFyYWN0ZXJzIGluXG4gICAgaW5jcmVhc2luZyBvcmRlci4gSW4gW1widW5zYWZlLXN0cmluZ1wiXSBtb2RlLCBtb2RpZmljYXRpb25zIG9mIHRoZSBzdHJpbmdcbiAgICBkdXJpbmcgaXRlcmF0aW9uIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZSBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCB0b19zZXFpIDogdCAtPiAoaW50ICogY2hhcikgU2VxLnRcbigqKiBbdG9fc2VxaSBzXSBpcyBsaWtlIHshdG9fc2VxfSBidXQgYWxzbyB0dXBsZXMgdGhlIGNvcnJlc3BvbmRpbmcgaW5kZXguXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG52YWwgb2Zfc2VxIDogY2hhciBTZXEudCAtPiB0XG4oKiogW29mX3NlcSBzXSBpcyBhIHN0cmluZyBtYWRlIG9mIHRoZSBzZXF1ZW5jZSdzIGNoYXJhY3RlcnMuXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG4oKiogezE6dXRmIFVURiBkZWNvZGluZyBhbmQgdmFsaWRhdGlvbnN9XG5cbiAgICBAc2luY2UgNC4xNCAqKVxuXG4oKiogezI6dXRmXzggVVRGLTh9ICopXG5cbnZhbCBnZXRfdXRmXzhfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfOF91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTggY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpblxuICAgIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl84IDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl84IGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtOCBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2YmUgVVRGLTE2QkV9ICopXG5cbnZhbCBnZXRfdXRmXzE2YmVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZiZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2QkUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmJlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmJlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZCRSBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2bGUgVVRGLTE2TEV9ICopXG5cbnZhbCBnZXRfdXRmXzE2bGVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZsZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2TEUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmxlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmxlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZMRSBkYXRhLiAqKVxuXG4oKiogezEgQmluYXJ5IGRlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG4oKiogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gYmluYXJ5IGRlY29kZSBpbnRlZ2VycyBmcm9tIHN0cmluZ3MuXG5cbiAgICBBbGwgZm9sbG93aW5nIGZ1bmN0aW9ucyByYWlzZSBbSW52YWxpZF9hcmd1bWVudF0gaWYgdGhlIGNoYXJhY3RlcnNcbiAgICBuZWVkZWQgYXQgaW5kZXggW2ldIHRvIGRlY29kZSB0aGUgaW50ZWdlciBhcmUgbm90IGF2YWlsYWJsZS5cblxuICAgIExpdHRsZS1lbmRpYW4gKHJlc3AuIGJpZy1lbmRpYW4pIGVuY29kaW5nIG1lYW5zIHRoYXQgbGVhc3RcbiAgICAocmVzcC4gbW9zdCkgc2lnbmlmaWNhbnQgYnl0ZXMgYXJlIHN0b3JlZCBmaXJzdC4gIEJpZy1lbmRpYW4gaXNcbiAgICBhbHNvIGtub3duIGFzIG5ldHdvcmsgYnl0ZSBvcmRlci4gIE5hdGl2ZS1lbmRpYW4gZW5jb2RpbmcgaXNcbiAgICBlaXRoZXIgbGl0dGxlLWVuZGlhbiBvciBiaWctZW5kaWFuIGRlcGVuZGluZyBvbiB7IVN5cy5iaWdfZW5kaWFufS5cblxuICAgIDMyLWJpdCBhbmQgNjQtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludDMyXSBhbmRcbiAgICBbaW50NjRdIHR5cGVzLCB3aGljaCBjYW4gYmUgaW50ZXJwcmV0ZWQgZWl0aGVyIGFzIHNpZ25lZCBvclxuICAgIHVuc2lnbmVkIG51bWJlcnMuXG5cbiAgICA4LWJpdCBhbmQgMTYtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludF0gdHlwZSxcbiAgICB3aGljaCBoYXMgbW9yZSBiaXRzIHRoYW4gdGhlIGJpbmFyeSBlbmNvZGluZy4gIFRoZXNlIGV4dHJhIGJpdHNcbiAgICBhcmUgc2lnbi1leHRlbmRlZCAob3IgemVyby1leHRlbmRlZCkgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZWNvZGUgOC1iaXRcbiAgICBvciAxNi1iaXQgaW50ZWdlcnMgYW5kIHJlcHJlc2VudGVkIHRoZW0gd2l0aCBbaW50XSB2YWx1ZXMuXG4qKVxuXG52YWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQ4IGIgaV0gaXMgW2JdJ3MgdW5zaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDggYiBpXSBpcyBbYl0ncyBzaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDE2X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLmhhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRcbiAgICB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZX0uXG5cbiAgICBAc2luY2UgNS4wICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLnNlZWRlZF9oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzXG4gICAgYXJndW1lbnQgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2VTZWVkZWR9LlxuXG4gICAgQHNpbmNlIDUuMCAqKVxuXG52YWwgZ2V0X2ludDMyX2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDMyX2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG4oKiovKiopXG5cbigqIFRoZSBmb2xsb3dpbmcgaXMgZm9yIHN5c3RlbSB1c2Ugb25seS4gRG8gbm90IGNhbGwgZGlyZWN0bHkuICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPlxuICAgIHVuaXQgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuIiwiaW5jbHVkZSBTdGFibGVfd2l0bmVzc19pbnRmXG5cbigqIFRoZSBydW50aW1lIHJlcHJlc2VudGF0aW9uIG9mIHN0YWJsZSB3aXRuZXNzZXMgZG9lcyBub3QgbWF0dGVyLiAqKVxudHlwZSBfIHQgPSB1bml0XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2FycmF5ICgpID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2Jvb2wgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfYnl0ZXMgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfY2hhciA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19leG4gPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfZmxvYXQgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfaW50ID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2ludDMyID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2ludDY0ID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2xhenlfdCAoKSA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19saXN0ICgpID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX25hdGl2ZWludCA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19vcHRpb24gKCkgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfcmVmICgpID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX3N0cmluZyA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc191bml0ID0gKClcbmVuZFxuXG5sZXQgb2Zfc2VyaWFsaXphYmxlICgpIF8gXyA9ICgpXG5cbm1vZHVsZSBPZl9zZXJpYWxpemFibGUxIChfIDogVDEpIChfIDogVDEpID0gc3RydWN0XG4gIGxldCBvZl9zZXJpYWxpemFibGUgXyBfIF8gKCkgPSAoKVxuZW5kXG5cbm1vZHVsZSBPZl9zZXJpYWxpemFibGUyIChfIDogVDIpIChfIDogVDIpID0gc3RydWN0XG4gIGxldCBvZl9zZXJpYWxpemFibGUgXyBfIF8gKCkgKCkgPSAoKVxuZW5kXG5cbm1vZHVsZSBPZl9zZXJpYWxpemFibGUzIChfIDogVDMpIChfIDogVDMpID0gc3RydWN0XG4gIGxldCBvZl9zZXJpYWxpemFibGUgXyBfIF8gXyAoKSAoKSA9ICgpXG5lbmRcblxubGV0IGFzc2VydF9zdGFibGUgPSAoKVxuIiwiKCogQ29tbW9uOiBjb21tb24gZGVmaW5pdGlvbnMgdXNlZCBieSBiaW5hcnkgcHJvdG9jb2wgY29udmVydGVycyAqKVxuXG5vcGVuIEJhc2Vcbm9wZW4gUHJpbnRmXG5vcGVuIEJpZ2FycmF5XG5cbnR5cGUgcG9zID0gaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbigqIEVycm9ycyBhbmQgZXhjZXB0aW9ucyAqKVxuXG5leGNlcHRpb24gQnVmZmVyX3Nob3J0XG5leGNlcHRpb24gTm9fdmFyaWFudF9tYXRjaFxuXG5tb2R1bGUgUmVhZEVycm9yID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZWdfaW50OFxuICAgIHwgSW50X2NvZGVcbiAgICB8IEludF9vdmVyZmxvd1xuICAgIHwgTmF0MF9jb2RlXG4gICAgfCBOYXQwX292ZXJmbG93XG4gICAgfCBJbnQzMl9jb2RlXG4gICAgfCBJbnQ2NF9jb2RlXG4gICAgfCBOYXRpdmVpbnRfY29kZVxuICAgIHwgVW5pdF9jb2RlXG4gICAgfCBCb29sX2NvZGVcbiAgICB8IE9wdGlvbl9jb2RlXG4gICAgfCBTdHJpbmdfdG9vX2xvbmdcbiAgICB8IFZhcmlhbnRfdGFnXG4gICAgfCBBcnJheV90b29fbG9uZ1xuICAgIHwgTGlzdF90b29fbG9uZyBvZlxuICAgICAgICB7IGxlbiA6IGludFxuICAgICAgICA7IG1heF9sZW4gOiBpbnRcbiAgICAgICAgfVxuICAgIHwgSGFzaHRibF90b29fbG9uZ1xuICAgIHwgU3VtX3RhZyBvZiBzdHJpbmdcbiAgICB8IFZhcmlhbnQgb2Ygc3RyaW5nXG4gICAgfCBQb2x5X3JlY19ib3VuZCBvZiBzdHJpbmdcbiAgICB8IFZhcmlhbnRfd3JvbmdfdHlwZSBvZiBzdHJpbmdcbiAgICB8IFNpbGx5X3R5cGUgb2Ygc3RyaW5nXG4gICAgfCBFbXB0eV90eXBlIG9mIHN0cmluZ1xuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgTmVnX2ludDggLT4gXCJOZWdfaW50OFwiXG4gICAgfCBJbnRfY29kZSAtPiBcIkludF9jb2RlXCJcbiAgICB8IEludF9vdmVyZmxvdyAtPiBcIkludF9vdmVyZmxvd1wiXG4gICAgfCBOYXQwX2NvZGUgLT4gXCJOYXQwX2NvZGVcIlxuICAgIHwgTmF0MF9vdmVyZmxvdyAtPiBcIk5hdDBfb3ZlcmZsb3dcIlxuICAgIHwgSW50MzJfY29kZSAtPiBcIkludDMyX2NvZGVcIlxuICAgIHwgSW50NjRfY29kZSAtPiBcIkludDY0X2NvZGVcIlxuICAgIHwgTmF0aXZlaW50X2NvZGUgLT4gXCJOYXRpdmVpbnRfY29kZVwiXG4gICAgfCBVbml0X2NvZGUgLT4gXCJVbml0X2NvZGVcIlxuICAgIHwgQm9vbF9jb2RlIC0+IFwiQm9vbF9jb2RlXCJcbiAgICB8IE9wdGlvbl9jb2RlIC0+IFwiT3B0aW9uX2NvZGVcIlxuICAgIHwgU3RyaW5nX3Rvb19sb25nIC0+IFwiU3RyaW5nX3Rvb19sb25nXCJcbiAgICB8IFZhcmlhbnRfdGFnIC0+IFwiVmFyaWFudF90YWdcIlxuICAgIHwgQXJyYXlfdG9vX2xvbmcgLT4gXCJBcnJheV90b29fbG9uZ1wiXG4gICAgfCBMaXN0X3Rvb19sb25nIHsgbGVuOyBtYXhfbGVuIH0gLT4gc3ByaW50ZiBcIkxpc3RfdG9vX2xvbmcgLyAlZCAobWF4ICVkKVwiIGxlbiBtYXhfbGVuXG4gICAgfCBIYXNodGJsX3Rvb19sb25nIC0+IFwiSGFzaHRibF90b29fbG9uZ1wiXG4gICAgfCBTdW1fdGFnIGxvYyAtPiBcIlN1bV90YWcgLyBcIiBeIGxvY1xuICAgIHwgVmFyaWFudCBsb2MgLT4gXCJWYXJpYW50IC8gXCIgXiBsb2NcbiAgICB8IFBvbHlfcmVjX2JvdW5kIGxvYyAtPiBcIlBvbHlfcmVjX2JvdW5kIC8gXCIgXiBsb2NcbiAgICB8IFZhcmlhbnRfd3JvbmdfdHlwZSBsb2MgLT4gXCJWYXJpYW50X3dyb25nX3R5cGUgLyBcIiBeIGxvY1xuICAgIHwgU2lsbHlfdHlwZSBsb2MgLT4gXCJTaWxseV90eXBlIC8gXCIgXiBsb2NcbiAgICB8IEVtcHR5X3R5cGUgbG9jIC0+IFwiRW1wdHlfdHlwZSAvIFwiIF4gbG9jXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbmVuZFxuXG5leGNlcHRpb24gUmVhZF9lcnJvciBvZiBSZWFkRXJyb3IudCAqIHBvcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuZXhjZXB0aW9uIFBvbHlfcmVjX3dyaXRlIG9mIHN0cmluZ1xuZXhjZXB0aW9uIEVtcHR5X3R5cGUgb2Ygc3RyaW5nXG5cbmxldCByYWlzZV9yZWFkX2Vycm9yIGVyciBwb3MgPSByYWlzZSAoUmVhZF9lcnJvciAoZXJyLCBwb3MpKVxuXG5sZXQgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIG5hbWUgcG9zID1cbiAgcmFpc2UgKFJlYWRfZXJyb3IgKFJlYWRFcnJvci5WYXJpYW50X3dyb25nX3R5cGUgbmFtZSwgcG9zKSlcbjs7XG5cbmxldCByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiBsb2MgPSBmYWlsd2l0aCAobG9jIF4gXCI6IGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uXCIpXG5sZXQgYXJyYXlfYm91bmRfZXJyb3IgKCkgPSBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIlxuXG4oKiBCdWZmZXJzICopXG5cbnR5cGUgcG9zX3JlZiA9IHBvcyByZWZcbnR5cGUgYnVmID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxubGV0IGNyZWF0ZV9idWYgbiA9IEFycmF5MS5jcmVhdGUgQmlnYXJyYXkuY2hhciBjX2xheW91dCBuXG5sZXQgYnVmX2xlbiBidWYgPSBBcnJheTEuZGltIGJ1ZlxubGV0IGFzc2VydF9wb3MgcG9zID0gaWYgcG9zIDwgMCB0aGVuIGFycmF5X2JvdW5kX2Vycm9yICgpXG5sZXQgY2hlY2tfcG9zIChidWYgOiBidWYpIHBvcyA9IGlmIHBvcyA+PSBBcnJheTEuZGltIGJ1ZiB0aGVuIHJhaXNlIEJ1ZmZlcl9zaG9ydFxuXG5sZXQgc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICBwb3Ncbjs7XG5cbmxldCBjaGVja19uZXh0IChidWYgOiBidWYpIG5leHQgPSBpZiBuZXh0ID4gQXJyYXkxLmRpbSBidWYgdGhlbiByYWlzZSBCdWZmZXJfc2hvcnRcblxubGV0IGdldF9vcHRfcG9zIH5sb2MgfnZhciA9IGZ1bmN0aW9uXG4gIHwgU29tZSBwb3MgLT5cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJCaW5fcHJvdC5Db21tb24uJXM6ICVzIDwgMFwiIGxvYyB2YXIpO1xuICAgIHBvc1xuICB8IE5vbmUgLT4gMFxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IHNyYzpidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gZHN0OmJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX3N0dWJcIlxuXG5sZXQgYmxpdF9idWYgP3NyY19wb3MgfnNyYyA/ZHN0X3BvcyB+ZHN0IGxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfYnVmXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1ZjogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQXJyYXkxLmRpbSBzcmNcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBzcmNfcG9zID4gc3JjX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBBcnJheTEuZGltIGRzdFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IGRzdF9wb3MgPiBkc3RfbGVuXCIpXG4gIGVsc2UgaWYgc3JjX3BvcyArIGxlbiA+IEFycmF5MS5kaW0gc3JjXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IHNyY19wb3MgKyBsZW4gPiBzcmNfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBkc3RcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1ZjogZHN0X3BvcyArIGxlbiA+IGRzdF9sZW5cIlxuICBlbHNlIHVuc2FmZV9ibGl0X2J1ZiB+c3JjX3BvcyB+c3JjIH5kc3RfcG9zIH5kc3QgfmxlblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nX2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBzdHJpbmdcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnl0ZXNfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ5dGVzXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnl0ZXNfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IGJsaXRfc3RyaW5nX2J1ZiA/c3JjX3BvcyBzdHIgP2RzdF9wb3MgYnVmIH5sZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X3N0cmluZ19idWZcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1ZjogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gU3RyaW5nLmxlbmd0aCBzdHJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyA+IHN0cl9sZW5cIjtcbiAgICBpZiBkc3RfcG9zID4gQXJyYXkxLmRpbSBidWZcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyA+IGJ1ZlwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHN0clxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyArIGxlbiA+IHN0cl9sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBBcnJheTEuZGltIGJ1ZlxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfc3RyaW5nX2J1Zjogc3JjX3BvcyArIGxlbiA+IGJ1ZlwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvcyBzdHIgfmRzdF9wb3MgYnVmIH5sZW5cbjs7XG5cbmxldCBibGl0X2J5dGVzX2J1ZiA/c3JjX3BvcyBzdHIgP2RzdF9wb3MgYnVmIH5sZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X2J5dGVzX2J1ZlwiIGluXG4gIGxldCBzcmNfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwic3JjX3Bvc1wiIHNyY19wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJkc3RfcG9zXCIgZHN0X3BvcyBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IGxlbiA8IDBcIlxuICBlbHNlIGlmIGxlbiA9IDBcbiAgdGhlbiAoXG4gICAgaWYgc3JjX3BvcyA+IEJ5dGVzLmxlbmd0aCBzdHJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnl0ZXNfYnVmOiBzcmNfcG9zID4gc3RyX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBBcnJheTEuZGltIGJ1ZlxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgPiBidWZcIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gQnl0ZXMubGVuZ3RoIHN0clxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnl0ZXNfYnVmOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgaWYgZHN0X3BvcyArIGxlbiA+IEFycmF5MS5kaW0gYnVmXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgKyBsZW4gPiBidWZcIlxuICBlbHNlIHVuc2FmZV9ibGl0X2J5dGVzX2J1ZiB+c3JjX3BvcyBzdHIgfmRzdF9wb3MgYnVmIH5sZW5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9zdHJpbmdcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ5dGVzXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZfYnl0ZXNcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ5dGVzXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgYmxpdF9idWZfYnl0ZXMgP3NyY19wb3MgYnVmID9kc3RfcG9zIHN0ciB+bGVuID1cbiAgbGV0IGxvYyA9IFwiYmxpdF9idWZfc3RyaW5nXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IGxlbiA8IDBcIlxuICBlbHNlIGlmIGxlbiA9IDBcbiAgdGhlbiAoXG4gICAgaWYgc3JjX3BvcyA+IEFycmF5MS5kaW0gYnVmXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IHNyY19wb3MgPiBidWZfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEJ5dGVzLmxlbmd0aCBzdHJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyA+IHN0cl9sZW5cIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBidWZcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IHNyY19wb3MgKyBsZW4gPiBidWZfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQnl0ZXMubGVuZ3RoIHN0clxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyArIGxlbiA+IHN0cl9sZW5cIlxuICBlbHNlIHVuc2FmZV9ibGl0X2J1Zl9ieXRlcyB+c3JjX3BvcyBidWYgfmRzdF9wb3Mgc3RyIH5sZW5cbjs7XG5cbmxldCBibGl0X2J1Zl9zdHJpbmcgPSBibGl0X2J1Zl9ieXRlc1xuXG4oKiBNaXNjZWxsYW5lb3VzICopXG5cbmxldCByZWMgY29weV9odGJsX2xpc3QgaHRibCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gaHRibFxuICB8IChrLCB2KSA6OiByZXN0IC0+XG4gICAgU3RkbGliLkhhc2h0YmwuYWRkIGh0YmwgayB2O1xuICAgIGNvcHlfaHRibF9saXN0IGh0YmwgcmVzdFxuOztcblxuKCogQmlnYXJyYXlzICopXG5cbnR5cGUgdmVjMzIgPSAoZmxvYXQsIGZsb2F0MzJfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgdmVjNjQgPSAoZmxvYXQsIGZsb2F0NjRfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgdmVjID0gdmVjNjRcbnR5cGUgbWF0MzIgPSAoZmxvYXQsIGZsb2F0MzJfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkyLnRcbnR5cGUgbWF0NjQgPSAoZmxvYXQsIGZsb2F0NjRfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkyLnRcbnR5cGUgbWF0ID0gbWF0NjRcblxuKCogRmxvYXQgYXJyYXlzICopXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zsb2F0X2FycmF5X2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBmbG9hdCBhcnJheVxuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9mbG9hdF9hcnJheVxuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gZmxvYXQgYXJyYXlcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zsb2F0YXJyYXlfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGZsb2F0YXJyYXlcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZfZmxvYXRhcnJheVxuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gZmxvYXRhcnJheVxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWJcIlxuW0BAbm9hbGxvY11cblxuKCoqKilcblxubGV0ICggKyApID0gKCArIClcbiIsIigqIE5hdDA6IG5hdHVyYWwgbnVtYmVycyAoaW5jbHVkaW5nIHplcm8pICopXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB0aGVuIGZhaWx3aXRoIFwiQmluX3Byb3QuTmF0MC5vZl9pbnQ6IG4gPCAwXCI7XG4gIG5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9vZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbiIsIigqIFdyaXRlX21sOiB3cml0aW5nIHZhbHVlcyB0byB0aGUgYmluYXJ5IHByb3RvY29sIHVzaW5nIChtb3N0bHkpIE9DYW1sLiAqKVxuXG4oKiBOb3RlOiB0aGUgY29kZSBpcyB0aGlzIGZpbGUgaXMgY2FyZWZ1bGx5IHdyaXR0ZW4gdG8gYXZvaWQgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbnMuIFdoZW5cbiAgIHRvdWNoaW5nIHRoaXMgY29kZSwgYmUgc3VyZSB0byBydW4gdGhlIGJlbmNobWFya3MgdG8gY2hlY2sgZm9yIHJlZ3Jlc3Npb25zLiAqKVxuXG5vcGVuIEJpZ2FycmF5XG5vcGVuIENvbW1vblxuXG50eXBlICdhIHdyaXRlciA9IGJ1ZiAtPiBwb3M6cG9zIC0+ICdhIC0+IHBvc1xudHlwZSAoJ2EsICdiKSB3cml0ZXIxID0gJ2Egd3JpdGVyIC0+ICdiIHdyaXRlclxudHlwZSAoJ2EsICdiLCAnYykgd3JpdGVyMiA9ICdhIHdyaXRlciAtPiAoJ2IsICdjKSB3cml0ZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgd3JpdGVyMyA9ICdhIHdyaXRlciAtPiAoJ2IsICdjLCAnZCkgd3JpdGVyMlxuXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnVmIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OCA6IGJ1ZiAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0MTYgOiBidWYgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQzMiA6IGJ1ZiAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0NjQgOiBidWYgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NHVcIlxuZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIGJzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIGJzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuKCokIG9wZW4gQmluX3Byb3RfY2luYXBzICQqKVxuXG5sZXQgY29kZV9ORUdfSU5UOCA9ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKikgJ1xceGZmJyAoKiQqKVxubGV0IGNvZGVfSU5UMTYgPSAoKiQgQ29kZS5jaGFyIElOVDE2ICopICdcXHhmZScgKCokKilcbmxldCBjb2RlX0lOVDMyID0gKCokIENvZGUuY2hhciBJTlQzMiAqKSAnXFx4ZmQnICgqJCopXG5sZXQgY29kZV9JTlQ2NCA9ICgqJCBDb2RlLmNoYXIgSU5UNjQgKikgJ1xceGZjJyAoKiQqKVxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZSA9IDY0XG5sZXQgYXJjaF9iaWdfZW5kaWFuID0gU3lzLmJpZ19lbmRpYW5cblxubGV0IHVuc2FmZV9zZXQxNmJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldDE2XG4gIGVsc2UgZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MTYgYnVmIHBvcyAoYnN3YXAxNiB4KVxuOztcblxubGV0IHVuc2FmZV9zZXQzMmJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldDMyXG4gIGVsc2UgZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MzIgYnVmIHBvcyAoYnN3YXAzMiB4KVxuOztcblxubGV0IHVuc2FmZV9zZXQ2NGJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldDY0XG4gIGVsc2UgZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0NjQgYnVmIHBvcyAoYnN3YXA2NCB4KVxuOztcblxubGV0IHVuc2FmZV9zZXQxNmxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MTYgYnVmIHBvcyAoYnN3YXAxNiB4KVxuICBlbHNlIHVuc2FmZV9zZXQxNlxuOztcblxubGV0IHVuc2FmZV9zZXQzMmxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0MzIgYnVmIHBvcyAoYnN3YXAzMiB4KVxuICBlbHNlIHVuc2FmZV9zZXQzMlxuOztcblxubGV0IHVuc2FmZV9zZXQ2NGxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuXG4gIHRoZW4gZnVuIGJ1ZiBwb3MgeCAtPiB1bnNhZmVfc2V0NjQgYnVmIHBvcyAoYnN3YXA2NCB4KVxuICBlbHNlIHVuc2FmZV9zZXQ2NFxuOztcblxubGV0IGJpbl93cml0ZV91bml0IGJ1ZiB+cG9zICgpID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgJ1xcMDAwJztcbiAgcG9zICsgMVxuOztcblxubGV0IGJpbl93cml0ZV9ib29sIGJ1ZiB+cG9zIGIgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyAoaWYgYiB0aGVuICdcXDAwMScgZWxzZSAnXFwwMDAnKTtcbiAgcG9zICsgMVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfc21hbGxfaW50IGJ1ZiBwb3MgbiA9XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0OCBidWYgcG9zIG47XG4gIHBvcyArIDFcbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX25lZ19pbnQ4IGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9ORUdfSU5UODtcbiAgdW5zYWZlX3NldDggYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9pbnQxNiBidWYgcG9zIG4gPVxuICBsZXQgbmV4dCA9IHBvcyArIDMgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldCBidWYgcG9zIGNvZGVfSU5UMTY7XG4gIHVuc2FmZV9zZXQxNmxlIGJ1ZiAocG9zICsgMSkgbjtcbiAgbmV4dFxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyA1IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX0lOVDMyO1xuICB1bnNhZmVfc2V0MzJsZSBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbltAQGlubGluZV1cbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgOSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9JTlQ2NDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX2NoYXIgYnVmIH5wb3MgYyA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldCBidWYgcG9zIGM7XG4gIHBvcyArIDFcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgaWYgbiA+PSAwXG4gIHRoZW5cbiAgICBpZiBuIDwgMHgwMDAwMDA4MFxuICAgIHRoZW4gYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuXG4gICAgZWxzZSBpZiBuIDwgMHgwMDAwODAwMFxuICAgIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQxNiBidWYgcG9zIG5cbiAgICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gMSBsc2wgMzFcbiAgICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pXG4gICAgZWxzZSBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKVxuICBlbHNlIGlmIG4gPj0gLTB4MDAwMDAwODBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX25lZ19pbnQ4IGJ1ZiBwb3MgblxuICBlbHNlIGlmIG4gPj0gLTB4MDAwMDgwMDBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPCAtKDEgbHNsIDMxKVxuICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pXG4gIGVsc2UgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChJbnQzMi5vZl9pbnQgbilcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBuYXQwID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuID0gKG5hdDAgOiBOYXQwLnQgOj4gaW50KSBpblxuICBpZiBuIDwgMHgwMDAwMDA4MFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfc21hbGxfaW50IGJ1ZiBwb3MgblxuICBlbHNlIGlmIG4gPCAweDAwMDEwMDAwXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQxNiBidWYgcG9zIG5cbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuID49IDEgbHNsIDMyXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgZWxzZSBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKVxuOztcblxubGV0IGJpbl93cml0ZV9zdHJpbmcgYnVmIH5wb3Mgc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgbmV3X3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IG5leHQgPSBuZXdfcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICgqIFRPRE86IG9wdGltaXplIGZvciBzbWFsbCBzdHJpbmdzICopXG4gIHVuc2FmZV9ibGl0X3N0cmluZ19idWYgfnNyY19wb3M6MCBzdHIgfmRzdF9wb3M6bmV3X3BvcyBidWYgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9ieXRlcyBidWYgfnBvcyBzdHIgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIHN0ciBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IG5ld19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBuZXh0ID0gbmV3X3BvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAoKiBUT0RPOiBvcHRpbWl6ZSBmb3Igc21hbGwgYnl0ZXMgKilcbiAgdW5zYWZlX2JsaXRfYnl0ZXNfYnVmIH5zcmNfcG9zOjAgc3RyIH5kc3RfcG9zOm5ld19wb3MgYnVmIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXQgYnVmIH5wb3MgeCA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIHBvcyAoSW50NjQuYml0c19vZl9mbG9hdCB4KTtcbiAgbmV4dFxuW0BAaW5saW5lXVxuOztcblxubGV0IGJpbl93cml0ZV9pbnQzMiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIFtAaW5saW5lXSBidWYgfnBvcyBuIC0+IGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgKEludDMyLnRvX2ludCBuKVxuICBlbHNlXG4gICAgZnVuIFtAaW5saW5lXSBidWYgfnBvcyBuIC0+XG4gICAgICBpZiBuID49IDB4MDAwMDgwMDBsIHx8IG4gPCAtMHgwMDAwODAwMGxcbiAgICAgIHRoZW4gKFxuICAgICAgICBhc3NlcnRfcG9zIHBvcztcbiAgICAgICAgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIG4pXG4gICAgICBlbHNlIGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgKEludDMyLnRvX2ludCBuKVxuOztcblxubGV0IGJpbl93cml0ZV9pbnQ2NCBidWYgfnBvcyBuID1cbiAgaWYgbiA+PSAweDgwMDAwMDAwTCB8fCBuIDwgLTB4ODAwMDAwMDBMXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyBuKVxuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50NjQudG9faW50IG4pXG4gIGVsc2UgaWYgbiA+PSAweDAwMDA4MDAwTCB8fCBuIDwgLTB4MDAwMDgwMDBMXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50NjQudG9faW50MzIgbikpXG4gIGVsc2UgYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50NjQudG9faW50IG4pXG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX25hdGl2ZWludCBidWYgfnBvcyBuID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgJiYgKG4gPj0gKCogMHg4MDAwMDAwMG4gKikgTmF0aXZlaW50LnNoaWZ0X2xlZnQgMW4gMzFcbiAgICAgIHx8IG4gPCAoKiAtMHg4MDAwMDAwMG4gKikgTmF0aXZlaW50Lm5lZyAoTmF0aXZlaW50LnNoaWZ0X2xlZnQgMW4gMzEpKVxuICB0aGVuIChcbiAgICBhc3NlcnRfcG9zIHBvcztcbiAgICBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgKEludDY0Lm9mX25hdGl2ZWludCBuKSlcbiAgZWxzZSBpZiAoKG5vdCBhcmNoX3NpeHR5Zm91cikgJiYgbiA+PSAweDgwMDBuKSB8fCBuIDwgLTB4ODAwMG5cbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChOYXRpdmVpbnQudG9faW50MzIgbikpXG4gIGVsc2UgYmluX3dyaXRlX2ludCBidWYgfnBvcyAoTmF0aXZlaW50LnRvX2ludCBuKVxuW0BAaW5saW5lXVxuOztcblxubGV0IGJpbl93cml0ZV9yZWYgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIHIgPSBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgIXJcblxubGV0IGJpbl93cml0ZV9sYXp5IGJpbl93cml0ZV9lbCBidWYgfnBvcyBsdiA9XG4gIGxldCB2ID0gTGF6eS5mb3JjZSBsdiBpblxuICBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgdlxuOztcblxubGV0IGJpbl93cml0ZV9vcHRpb24gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGJpbl93cml0ZV9ib29sIGJ1ZiB+cG9zIGZhbHNlXG4gIHwgU29tZSB2IC0+XG4gICAgbGV0IG5leHQgPSBiaW5fd3JpdGVfYm9vbCBidWYgfnBvcyB0cnVlIGluXG4gICAgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOm5leHQgdlxuOztcblxubGV0IGJpbl93cml0ZV9wYWlyIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJ1ZiB+cG9zIChhLCBiKSA9XG4gIGxldCBuZXh0ID0gYmluX3dyaXRlX2EgYnVmIH5wb3MgYSBpblxuICBiaW5fd3JpdGVfYiBidWYgfnBvczpuZXh0IGJcbjs7XG5cbmxldCBiaW5fd3JpdGVfdHJpcGxlIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJpbl93cml0ZV9jIGJ1ZiB+cG9zIChhLCBiLCBjKSA9XG4gIGxldCBuZXh0MSA9IGJpbl93cml0ZV9hIGJ1ZiB+cG9zIGEgaW5cbiAgbGV0IG5leHQyID0gYmluX3dyaXRlX2IgYnVmIH5wb3M6bmV4dDEgYiBpblxuICBiaW5fd3JpdGVfYyBidWYgfnBvczpuZXh0MiBjXG47O1xuXG5sZXQgYmluX3dyaXRlX2xpc3QgPVxuICBsZXQgcmVjIGxvb3AgfmJpbl93cml0ZV9lbCB+YnVmIH5lbHNfcG9zIGxzdCA9XG4gICAgbWF0Y2ggbHN0IHdpdGhcbiAgICB8IFtdIC0+IGVsc19wb3NcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBsZXQgbmV3X2Vsc19wb3MgPSBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6ZWxzX3BvcyBoZCBpblxuICAgICAgbG9vcCB+YmluX3dyaXRlX2VsIH5idWYgfmVsc19wb3M6bmV3X2Vsc19wb3MgdGxcbiAgaW5cbiAgZnVuIGJpbl93cml0ZV9lbCBidWYgfnBvcyBsc3QgLT5cbiAgICBsZXQgbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IChMaXN0Lmxlbmd0aCBsc3QpIGluXG4gICAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBsZW4gaW5cbiAgICBsb29wIH5iaW5fd3JpdGVfZWwgfmJ1ZiB+ZWxzX3BvcyBsc3Rcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlbiB+bGVuZ3RoIH5ibGl0IGJ1ZiB+cG9zIGEgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgYmxpdCB+c3JjX3BvczowIGEgfmRzdF9wb3M6cG9zIGJ1ZiB+bGVuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0YXJyYXkgYnVmIH5wb3MgYSA9XG4gIGJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW5cbiAgICB+bGVuZ3RoOkZsb2F0LkFycmF5Lmxlbmd0aFxuICAgIH5ibGl0OnVuc2FmZV9ibGl0X2Zsb2F0YXJyYXlfYnVmXG4gICAgYnVmXG4gICAgfnBvc1xuICAgIGFcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXRfYXJyYXkgYnVmIH5wb3MgYSA9XG4gIGJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW5cbiAgICB+bGVuZ3RoOkFycmF5Lmxlbmd0aFxuICAgIH5ibGl0OnVuc2FmZV9ibGl0X2Zsb2F0X2FycmF5X2J1ZlxuICAgIGJ1ZlxuICAgIH5wb3NcbiAgICBhXG47O1xuXG5sZXQgYmluX3dyaXRlX2FycmF5X2xvb3AgYmluX3dyaXRlX2VsIGJ1ZiB+ZWxzX3BvcyB+biBhciA9XG4gIGxldCBlbHNfcG9zX3JlZiA9IHJlZiBlbHNfcG9zIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIGVsc19wb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBidWYgfnBvczohZWxzX3Bvc19yZWYgKEFycmF5LnVuc2FmZV9nZXQgYXIgaSlcbiAgZG9uZTtcbiAgIWVsc19wb3NfcmVmXG47O1xuXG5sZXQgYmluX3dyaXRlX2FycmF5ICh0eXBlIGEpIGJpbl93cml0ZV9lbCBidWYgfnBvcyBhciA9XG4gIGlmIChPYmoubWFnaWMgKGJpbl93cml0ZV9lbCA6IGEgd3JpdGVyKSA6IGZsb2F0IHdyaXRlcikgPT0gYmluX3dyaXRlX2Zsb2F0XG4gIHRoZW4gYmluX3dyaXRlX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zIChPYmoubWFnaWMgKGFyIDogYSBhcnJheSkgOiBmbG9hdCBhcnJheSlcbiAgZWxzZSAoXG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggYXIgaW5cbiAgICBsZXQgcG4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbiBpblxuICAgIGxldCBlbHNfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcG4gaW5cbiAgICBiaW5fd3JpdGVfYXJyYXlfbG9vcCBiaW5fd3JpdGVfZWwgYnVmIH5lbHNfcG9zIH5uIGFyKVxuOztcblxubGV0IGJpbl93cml0ZV9oYXNodGJsIGJpbl93cml0ZV9rZXkgYmluX3dyaXRlX3ZhbCBidWYgfnBvcyBodGJsID1cbiAgbGV0IGxlbiA9IEhhc2h0YmwubGVuZ3RoIGh0YmwgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBlbHNfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gIGxldCBjb2xsX2h0YmwgayB2IGVsc19wb3MgPVxuICAgIGluY3IgY250X3JlZjtcbiAgICBsZXQgbmV3X2Vsc19wb3MgPSBiaW5fd3JpdGVfa2V5IGJ1ZiB+cG9zOmVsc19wb3MgayBpblxuICAgIGJpbl93cml0ZV92YWwgYnVmIH5wb3M6bmV3X2Vsc19wb3MgdlxuICBpblxuICBsZXQgcmVzX3BvcyA9IEhhc2h0YmwuZm9sZCBjb2xsX2h0YmwgaHRibCBlbHNfcG9zIGluXG4gIGlmICFjbnRfcmVmIDw+IGxlbiB0aGVuIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIFwiYmluX3dyaXRlX2hhc2h0YmxcIjtcbiAgcmVzX3Bvc1xuOztcblxuZXh0ZXJuYWwgYnVmX29mX3ZlYzMyIDogdmVjMzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX3ZlYzY0IDogdmVjNjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDMyIDogbWF0MzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDY0IDogbWF0NjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfdmVjIGJ1ZiB+cG9zIHYgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSB2IGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDQgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfdmVjMzIgdikgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfdmVjIGJ1ZiB+cG9zIHYgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSB2IGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfdmVjNjQgdikgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX3ZlYyA9IGJpbl93cml0ZV9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfbWF0IGJ1ZiB+cG9zIG0gPVxuICBsZXQgbGVuMSA9IEFycmF5Mi5kaW0xIG0gaW5cbiAgbGV0IGxlbjIgPSBBcnJheTIuZGltMiBtIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjEpIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjIpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA0IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzooYnVmX29mX21hdDMyIG0pIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdDY0X21hdCBidWYgfnBvcyBtID1cbiAgbGV0IGxlbjEgPSBBcnJheTIuZGltMSBtIGluXG4gIGxldCBsZW4yID0gQXJyYXkyLmRpbTIgbSBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgKE5hdDAudW5zYWZlX29mX2ludCBsZW4xKSBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgKE5hdDAudW5zYWZlX29mX2ludCBsZW4yKSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogOCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl9tYXQ2NCBtKSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbWF0ID0gYmluX3dyaXRlX2Zsb2F0NjRfbWF0XG5cbmxldCBiaW5fd3JpdGVfYmlnc3RyaW5nIGJ1ZiB+cG9zIHMgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSBzIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgbmV4dCA9IHBvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpzIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfdmFyaWFudF9pbnQgYnVmIH5wb3MgeCA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMybGUgYnVmIHBvcyAoSW50MzIubG9nb3IgKEludDMyLnNoaWZ0X2xlZnQgKEludDMyLm9mX2ludCB4KSAxKSAxbCk7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzhiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldDggYnVmIHBvcyBuO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludF8xNmJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MTZsZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzMyYml0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQzMmxlIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfNjRiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDY0X2JpdHMgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0bGUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcmsxNl9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDE2YmUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcmszMl9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMyYmUgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcmszMl9pbnQzMiBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJiZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazY0X2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRiZSBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazY0X2ludDY0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGJlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZ19nZXQzMiA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZ19nZXQ2NCA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NHVcIlxuXG5sZXQgYmluX3dyaXRlX21kNSBidWYgfnBvcyB4ID1cbiAgbGV0IHggPSBNZDVfbGliLnRvX2JpbmFyeSB4IGluXG4gIGFzc2VydCAoU3RyaW5nLmxlbmd0aCB4ID0gMTYpO1xuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAxNiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIChcbiAgICBsZXQgYSA9IHVuc2FmZV9zdHJpbmdfZ2V0NjQgeCAwIGluXG4gICAgbGV0IGIgPSB1bnNhZmVfc3RyaW5nX2dldDY0IHggOCBpblxuICAgIHVuc2FmZV9zZXQ2NCBidWYgcG9zIGE7XG4gICAgdW5zYWZlX3NldDY0IGJ1ZiAocG9zICsgOCkgYilcbiAgZWxzZSAoXG4gICAgbGV0IGEgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggMCBpblxuICAgIGxldCBiID0gdW5zYWZlX3N0cmluZ19nZXQzMiB4IDQgaW5cbiAgICBsZXQgYyA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCA4IGluXG4gICAgbGV0IGQgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggMTIgaW5cbiAgICB1bnNhZmVfc2V0MzIgYnVmIHBvcyBhO1xuICAgIHVuc2FmZV9zZXQzMiBidWYgKHBvcyArIDQpIGI7XG4gICAgdW5zYWZlX3NldDMyIGJ1ZiAocG9zICsgOCkgYztcbiAgICB1bnNhZmVfc2V0MzIgYnVmIChwb3MgKyAxMikgZCk7XG4gIG5leHRcbjs7XG4iLCIoKiBSZWFkX21sOiByZWFkaW5nIHZhbHVlcyBmcm9tIHRoZSBiaW5hcnkgcHJvdG9jb2wgdXNpbmcgKG1vc3RseSkgT0NhbWwuICopXG5cbigqIE5vdGU6IHRoZSBjb2RlIGlzIHRoaXMgZmlsZSBpcyBjYXJlZnVsbHkgd3JpdHRlbiB0byBhdm9pZCB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9ucy4gV2hlblxuICAgdG91Y2hpbmcgdGhpcyBjb2RlLCBiZSBzdXJlIHRvIHJ1biB0aGUgYmVuY2htYXJrcyB0byBjaGVjayBmb3IgcmVncmVzc2lvbnMuICopXG5cbm9wZW4gQmlnYXJyYXlcbm9wZW4gQ29tbW9uXG5cbnR5cGUgJ2EgcmVhZGVyID0gYnVmIC0+IHBvc19yZWY6cG9zX3JlZiAtPiAnYVxudHlwZSAoJ2EsICdiKSByZWFkZXIxID0gJ2EgcmVhZGVyIC0+ICdiIHJlYWRlclxudHlwZSAoJ2EsICdiLCAnYykgcmVhZGVyMiA9ICdhIHJlYWRlciAtPiAoJ2IsICdjKSByZWFkZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgcmVhZGVyMyA9ICdhIHJlYWRlciAtPiAoJ2IsICdjLCAnZCkgcmVhZGVyMlxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogYnVmIC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDggOiBidWYgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcblxubGV0IHVuc2FmZV9nZXQ4X3NpZ25lZCBidWYgcG9zID1cbiAgbGV0IGMgPSB1bnNhZmVfZ2V0OCBidWYgcG9zIGluXG4gIGlmIGMgPj0gMTI4IHRoZW4gYyAtIDI1NiBlbHNlIGNcbjs7XG5cbigqJCBvcGVuIEJpbl9wcm90X2NpbmFwcyAkKilcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZSA9IDY0XG5sZXQgYXJjaF9iaWdfZW5kaWFuID0gU3lzLmJpZ19lbmRpYW5cbmxldCBtYXhfaW50X2ludDMyID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiBJbnQzMi5tYXhfaW50IGVsc2UgSW50MzIub2ZfaW50IG1heF9pbnRcbmxldCBtaW5faW50X2ludDMyID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiBJbnQzMi5tYXhfaW50IGVsc2UgSW50MzIub2ZfaW50IG1pbl9pbnRcbmxldCBtYXhfaW50X2ludDY0ID0gSW50NjQub2ZfaW50IG1heF9pbnRcbmxldCBtaW5faW50X2ludDY0ID0gSW50NjQub2ZfaW50IG1pbl9pbnRcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzYWZlX2ludF9vZl9pbnQzMiBwb3MgeCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gSW50MzIudG9faW50IHhcbiAgZWxzZSBpZiB4ID49IG1pbl9pbnRfaW50MzIgJiYgeCA8PSBtYXhfaW50X2ludDMyXG4gIHRoZW4gSW50MzIudG9faW50IHhcbiAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfb3ZlcmZsb3cgcG9zXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHNhZmVfaW50X29mX2ludDY0IHBvcyB4ID1cbiAgaWYgeCA+PSBtaW5faW50X2ludDY0ICYmIHggPD0gbWF4X2ludF9pbnQ2NFxuICB0aGVuIEludDY0LnRvX2ludCB4XG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuOztcblxubGV0IHNhZmVfbmF0aXZlaW50X29mX2ludDY0ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gX3BvcyB4IC0+IEludDY0LnRvX25hdGl2ZWludCB4XG4gIGVsc2VcbiAgICBmdW4gW0BpbmxpbmUgYWx3YXlzXSBwb3MgeCAtPlxuICAgICAgaWYgeCA+PSBJbnQ2NC5vZl9uYXRpdmVpbnQgTmF0aXZlaW50Lm1pbl9pbnRcbiAgICAgICYmIHggPD0gSW50NjQub2ZfbmF0aXZlaW50IE5hdGl2ZWludC5tYXhfaW50XG4gICAgICB0aGVuIEludDY0LnRvX25hdGl2ZWludCB4XG4gICAgICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3Ncbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9nZXQxNiA6IGJ1ZiAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQzMiA6IGJ1ZiAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDY0IDogYnVmIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0dVwiXG5leHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgYnN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgYnN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXQgdW5zYWZlX2dldDE2YmVfdW5zaWduZWQgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0MTYgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MTYgYnVmIHBvcyB8PiBic3dhcDE2XG47O1xuXG5sZXQgdW5zYWZlX2dldDMyYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0MzIgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MzIgYnVmIHBvcyB8PiBic3dhcDMyXG47O1xuXG5sZXQgdW5zYWZlX2dldDY0YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0NjQgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0NjQgYnVmIHBvcyB8PiBic3dhcDY0XG47O1xuXG5sZXQgdW5zYWZlX2dldDE2bGVfdW5zaWduZWQgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MTYgYnVmIHBvcyB8PiBic3dhcDE2IGVsc2UgdW5zYWZlX2dldDE2XG47O1xuXG5sZXQgdW5zYWZlX2dldDMybGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MzIgYnVmIHBvcyB8PiBic3dhcDMyIGVsc2UgdW5zYWZlX2dldDMyXG47O1xuXG5sZXQgdW5zYWZlX2dldDY0bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0NjQgYnVmIHBvcyB8PiBic3dhcDY0IGVsc2UgdW5zYWZlX2dldDY0XG47O1xuXG5sZXQgdW5zYWZlX2dldDE2bGVfc2lnbmVkIGJ1ZiBwb3MgPVxuICBsZXQgeCA9IHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIGJ1ZiBwb3MgaW5cbiAgaWYgeCA+IDMyNzY3IHRoZW4geCAtIDY1NTM2IGVsc2UgeFxuOztcblxubGV0IGJpbl9yZWFkX3VuaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgaWYgdW5zYWZlX2dldCBidWYgcG9zID0gJ1xcMDAwJ1xuICB0aGVuIHBvc19yZWYgOj0gcG9zICsgMVxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLlVuaXRfY29kZSBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9ib29sIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xcMDAwJyAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBmYWxzZVxuICB8ICdcXDAwMScgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgdHJ1ZVxuICB8IF8gLT4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQm9vbF9jb2RlIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDEgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0OF9zaWduZWQgYnVmIHBvcyBpblxuICBpZiBuID49IDAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OZWdfaW50OCAhcG9zX3JlZjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIENhbiBiZSBhYm92ZSBuZXh0IGxpbmUgKG5vIGVycm9ycyBwb3NzaWJsZSB3aXRoIDE2Yml0KS5cbiAgICAgVGhpcyBzaG91bGQgaW1wcm92ZSB0aGUgZ2VuZXJhdGVkIGNvZGUuICopXG4gIHVuc2FmZV9nZXQxNmxlX3NpZ25lZCBidWYgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMiBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIE5vIGVycm9yIHBvc3NpYmxlIGVpdGhlci4gKilcbiAgdW5zYWZlX2dldDMybGUgYnVmIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50NjQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICAoKiBObyBlcnJvciBwb3NzaWJsZSBlaXRoZXIuICopXG4gIHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3Ncbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgbGV0IG4gPSBzYWZlX2ludF9vZl9pbnQzMiAhcG9zX3JlZiBuIGluXG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50NjRfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBsZXQgbiA9IHNhZmVfaW50X29mX2ludDY0ICFwb3NfcmVmIG4gaW5cbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQ2NCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBJbnQ2NC5vZl9pbnQzMiBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgTmF0aXZlaW50Lm9mX2ludDMyIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDY0X2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgbGV0IG4gPSBzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCBwb3MgbiBpblxuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX25hdDBfMTYgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBOYXQwLnVuc2FmZV9vZl9pbnQgKHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIGJ1ZiBwb3MpXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uYXQwXzMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiAoXG4gICAgbGV0IG1hc2tfMzJiaXQgPSBJbnQ2NC50b19pbnQgMHhmZmZmX2ZmZmZMIGluXG4gICAgZnVuIGJ1ZiB+cG9zX3JlZiB+cG9zIC0+XG4gICAgICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgICAgIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBwb3NfcmVmIDo9IG5leHQ7XG4gICAgICBsZXQgbiA9IEludDMyLnRvX2ludCAodW5zYWZlX2dldDMybGUgYnVmIHBvcykgaW5cbiAgICAgIGlmIG4gPj0gMFxuICAgICAgdGhlbiBOYXQwLnVuc2FmZV9vZl9pbnQgblxuICAgICAgZWxzZVxuICAgICAgICAoKiBFcmFzZSB0aGUgdXBwZXIgYml0cyB0aGF0IHdlcmUgc2V0IHRvIDEgZHVyaW5nIHRoZSBpbnQzMiAtPiBpbnQgY29udmVyc2lvbi4gKilcbiAgICAgICAgTmF0MC51bnNhZmVfb2ZfaW50IChuIGxhbmQgbWFza18zMmJpdCkpXG4gIGVsc2VcbiAgICBmdW4gYnVmIH5wb3NfcmVmIH5wb3MgLT5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgICAgIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICAgICAgaWYgbiA+PSAwbCAmJiBuIDw9IG1heF9pbnRfaW50MzJcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbiA9IE5hdDAudW5zYWZlX29mX2ludCAoSW50MzIudG9faW50IG4pIGluXG4gICAgICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICAgICAgbilcbiAgICAgIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0MF9vdmVyZmxvdyAhcG9zX3JlZlxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmF0MF82NCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgaWYgbiA+PSAwTCAmJiBuIDw9IG1heF9pbnRfaW50NjRcbiAgdGhlbiAoXG4gICAgbGV0IG4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgKEludDY0LnRvX2ludCBuKSBpblxuICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICBuKVxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfb3ZlcmZsb3cgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBOYXQwLnVuc2FmZV9vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9uYXQwXzE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX25hdDBfMzIgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSAtPlxuICAgIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW5cbiAgICAgIHNhZmVfYmluX3JlYWRfbmF0MF82NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgICBlbHNlXG4gICAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX292ZXJmbG93IHBvc1xuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2J5dGVzIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBzdGFydF9wb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgaWYgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuU3RyaW5nX3Rvb19sb25nIHN0YXJ0X3BvcztcbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfYnVmX2J5dGVzIH5zcmNfcG9zOnBvcyBidWYgfmRzdF9wb3M6MCBzdHIgfmxlbjtcbiAgc3RyXG47O1xuXG5sZXQgYmluX3JlYWRfc3RyaW5nIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBzdHIgPSBiaW5fcmVhZF9ieXRlcyBidWYgfnBvc19yZWYgaW5cbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbjs7XG5cbmxldCBiaW5fcmVhZF9jaGFyIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgdW5zYWZlX2dldCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBDaGFyLmNvZGUgY2hcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSAtPlxuICAgIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW5cbiAgICAgIHNhZmVfYmluX3JlYWRfaW50NjRfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3NcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2Zsb2F0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIE5vIGVycm9yIHBvc3NpYmxlIGVpdGhlci4gKilcbiAgSW50NjQuZmxvYXRfb2ZfYml0cyAodW5zYWZlX2dldDY0bGUgYnVmIHBvcylcbjs7XG5cbmxldCBiaW5fcmVhZF9pbnQzMiBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgSW50MzIub2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIEludDMyLm9mX2ludCAoc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIEludDMyLm9mX2ludCAoc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MzIgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludDMyX2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2ludDY0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBJbnQ2NC5vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgSW50NjQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgSW50NjQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQ2NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQ2NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50NjRfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBOYXRpdmVpbnQub2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIE5hdGl2ZWludC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBOYXRpdmVpbnQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSB3aGVuIGFyY2hfc2l4dHlmb3VyIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdGl2ZWludF9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9yZWYgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gIHJlZiBlbFxuOztcblxubGV0IGJpbl9yZWFkX2xhenkgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gIExhenkuZnJvbV92YWwgZWxcbjs7XG5cbmxldCBiaW5fcmVhZF9vcHRpb24gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFwwMDAnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIE5vbmVcbiAgfCAnXFwwMDEnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICAgIFNvbWUgZWxcbiAgfCBfIC0+IHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk9wdGlvbl9jb2RlIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX3BhaXIgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBhID0gYmluX3JlYWRfYSBidWYgfnBvc19yZWYgaW5cbiAgbGV0IGIgPSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiBpblxuICBhLCBiXG47O1xuXG5sZXQgYmluX3JlYWRfdHJpcGxlIGJpbl9yZWFkX2EgYmluX3JlYWRfYiBiaW5fcmVhZF9jIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBhID0gYmluX3JlYWRfYSBidWYgfnBvc19yZWYgaW5cbiAgbGV0IGIgPSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiBpblxuICBsZXQgYyA9IGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmIGluXG4gIGEsIGIsIGNcbjs7XG5cbmxldCBiaW5fcmVhZF9uX3Jldl9saXN0IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBsZW4gPVxuICBsZXQgcmVjIGxvb3AgbiBhY2MgPVxuICAgIGlmIG4gPSAwIHRoZW4gYWNjIGVsc2UgbG9vcCAobiAtIDEpIChiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgOjogYWNjKVxuICBpblxuICBsb29wIGxlbiBbXVxuOztcblxubGV0IGJpbl9yZWFkX2xpc3Rfd2l0aF9tYXhfbGVuIH5tYXhfbGVuIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBpZiBsZW4gPiBtYXhfbGVuIHRoZW4gcmFpc2VfcmVhZF9lcnJvciAoTGlzdF90b29fbG9uZyB7IGxlbjsgbWF4X2xlbiB9KSAhcG9zX3JlZjtcbiAgbGV0IHJldl9sc3QgPSBiaW5fcmVhZF9uX3Jldl9saXN0IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBsZW4gaW5cbiAgTGlzdC5yZXYgcmV2X2xzdFxuOztcblxubGV0IGJpbl9yZWFkX2xpc3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4gfm1heF9sZW46bWF4X2ludCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWZcbjs7XG5cbmxldCBkdW1teV9mbG9hdF9idWYgPSBjcmVhdGVfYnVmIDhcbmxldCAoKSA9IGlnbm9yZSAoV3JpdGUuYmluX3dyaXRlX2Zsb2F0IGR1bW15X2Zsb2F0X2J1ZiB+cG9zOjAgMy4xKVxuXG5sZXQgbWF4X2Zsb2F0X2FycmF5X2xlbmd0aCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBTeXMubWF4X2FycmF5X2xlbmd0aCAvIDJcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYmluX3JlYWRfZmxvYXRfYXJyYXlfZ2VuIH5jcmVhdGUgfmJsaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBpZiBsZW4gPiBtYXhfZmxvYXRfYXJyYXlfbGVuZ3RoIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgcG9zO1xuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgYXJyID0gY3JlYXRlIGxlbiBpblxuICBibGl0IH5zcmNfcG9zOnBvcyBidWYgfmRzdF9wb3M6MCBhcnIgfmxlbjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBhcnJcbjs7XG5cbmxldCBiaW5fcmVhZF9mbG9hdGFycmF5IGJ1ZiB+cG9zX3JlZiA9XG4gIGJpbl9yZWFkX2Zsb2F0X2FycmF5X2dlblxuICAgIH5jcmVhdGU6RmxvYXQuQXJyYXkuY3JlYXRlXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfYnVmX2Zsb2F0YXJyYXlcbiAgICBidWZcbiAgICB+cG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zX3JlZiA9XG4gIGJpbl9yZWFkX2Zsb2F0X2FycmF5X2dlblxuICAgIH5jcmVhdGU6QXJyYXkuY3JlYXRlX2Zsb2F0XG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfYnVmX2Zsb2F0X2FycmF5XG4gICAgYnVmXG4gICAgfnBvc19yZWZcbjs7XG5cbmxldCBiaW5fcmVhZF9hcnJheSAodHlwZSBhKSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBpZiAoT2JqLm1hZ2ljIChiaW5fcmVhZF9lbCA6IGEgcmVhZGVyKSA6IGZsb2F0IHJlYWRlcikgPT0gYmluX3JlYWRfZmxvYXRcbiAgdGhlbiAoT2JqLm1hZ2ljIChiaW5fcmVhZF9mbG9hdF9hcnJheSBidWYgfnBvc19yZWYgOiBmbG9hdCBhcnJheSkgOiBhIGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgc3RhcnRfcG9zID0gIXBvc19yZWYgaW5cbiAgICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiBbfHxdXG4gICAgZWxzZSAoXG4gICAgICBpZiBhcmNoX3NpeHR5Zm91clxuICAgICAgdGhlbiAoXG4gICAgICAgIGlmIGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gICAgICAgIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgc3RhcnRfcG9zKVxuICAgICAgZWxzZSBpZiBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aCAvIDJcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbWF5YmVfZmxvYXQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGVsID0gYmluX3JlYWRfZWwgZHVtbXlfZmxvYXRfYnVmIH5wb3NfcmVmOihyZWYgMCkgaW5cbiAgICAgICAgICAgIFNvbWUgZWxcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggbWF5YmVfZmxvYXQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aFxuICAgICAgICAgIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgc3RhcnRfcG9zXG4gICAgICAgIHwgU29tZSBlbCAtPlxuICAgICAgICAgIGlmIE9iai50YWcgKE9iai5yZXByIGVsKSA9IE9iai5kb3VibGVfdGFnIHx8IGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBzdGFydF9wb3MpO1xuICAgICAgbGV0IGZpcnN0ID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gICAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBsZW4gZmlyc3QgaW5cbiAgICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHJlcyBpIGVsXG4gICAgICBkb25lO1xuICAgICAgcmVzKSlcbjs7XG5cbmxldCBiaW5fcmVhZF9oYXNodGJsIGJpbl9yZWFkX2tleSBiaW5fcmVhZF92YWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBodGJsID0gSGFzaHRibC5jcmVhdGUgbGVuIGluXG4gIGxldCByZWFkX2t2X3BhaXIgPSBiaW5fcmVhZF9wYWlyIGJpbl9yZWFkX2tleSBiaW5fcmVhZF92YWwgaW5cbiAgbGV0IGVscyA9IGJpbl9yZWFkX25fcmV2X2xpc3QgcmVhZF9rdl9wYWlyIGJ1ZiB+cG9zX3JlZiBsZW4gaW5cbiAgY29weV9odGJsX2xpc3QgaHRibCBlbHNcbjs7XG5cbmV4dGVybmFsIGJ1Zl9vZl92ZWMzMiA6IHZlYzMyIC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl92ZWM2NCA6IHZlYzY0IC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl9tYXQzMiA6IG1hdDMyIC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl9tYXQ2NCA6IG1hdDY0IC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcblxubGV0IGJpbl9yZWFkX2Zsb2F0MzJfdmVjIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDQgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0IGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl92ZWMzMiB2ZWMpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHZlY1xuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0NjRfdmVjIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDY0IGZvcnRyYW5fbGF5b3V0IGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl92ZWM2NCB2ZWMpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHZlY1xuOztcblxubGV0IGJpbl9yZWFkX3ZlYyA9IGJpbl9yZWFkX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fcmVhZF9mbG9hdDMyX21hdCBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuMSA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBsZW4yID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDQgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbWF0ID0gQXJyYXkyLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0IGxlbjEgbGVuMiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl9tYXQzMiBtYXQpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG1hdFxuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0NjRfbWF0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4xID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IGxlbjIgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogOCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBtYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXQgbGVuMSBsZW4yIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX21hdDY0IG1hdCkgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbWF0XG47O1xuXG5sZXQgYmluX3JlYWRfbWF0ID0gYmluX3JlYWRfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl9yZWFkX2JpZ3N0cmluZyBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBzdHIgPSBjcmVhdGVfYnVmIGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6c3RyIH5kc3RfcG9zOjAgfmxlbjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBzdHJcbjs7XG5cbmxldCBiaW5fcmVhZF92YXJpYW50X2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgKCogW25dIG11c3QgY29udGFpbiBhbiBpbnRlZ2VyIGFscmVhZHkgZW5jb2RlZCwgaS5lLiBbbiA9IDIgKiBrICsgMV0uICopXG4gIGlmIEludDMyLmxvZ2FuZCBuIDFsID0gMGxcbiAgdGhlbiByYWlzZSAoUmVhZF9lcnJvciAoUmVhZEVycm9yLlZhcmlhbnRfdGFnLCBwb3MpKVxuICBlbHNlIChcbiAgICAoKiBXZSBzaGlmdCBpdCBieSBvbmUgYml0IHRvIHRoZSByaWdodCBzZSB3ZSBnZXQgYmFjayBbMiAqIGsgKyAxXSBpbiB0aGUgZW5kLiAqKVxuICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICBJbnQzMi50b19pbnQgKEludDMyLnNoaWZ0X3JpZ2h0IG4gMSkpXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzhiaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICB1bnNhZmVfZ2V0OCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzE2Yml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDE2bGVfdW5zaWduZWQgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX2ludF8zMmJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQzMiBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX2ludF82NGJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQ2NCBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX2ludDY0X2JpdHMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazE2X2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrMzJfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJiZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDMyIHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazMyX2ludDMyIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDMyYmUgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcms2NF9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGJlIGJ1ZiBwb3MgaW5cbiAgc2FmZV9pbnRfb2ZfaW50NjQgcG9zIG5cbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrNjRfaW50NjQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0NjRiZSBidWYgcG9zXG47O1xuXG5bJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDA3LCAwKV1cblxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDMyIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX3N0cmluZ19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX3N0cmluZ19zZXQ2NHVcIlxuXG5bJSVlbHNlXVxuXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9ieXRlc19zZXQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuXG5bJSVlbmRpZl1cblxubGV0IGJpbl9yZWFkX21kNSBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMTYgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gKFxuICAgIGxldCBhID0gdW5zYWZlX2dldDY0IGJ1ZiBwb3MgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9nZXQ2NCBidWYgKHBvcyArIDgpIGluXG4gICAgdW5zYWZlX2J5dGVzX3NldDY0IHJlcyAwIGE7XG4gICAgdW5zYWZlX2J5dGVzX3NldDY0IHJlcyA4IGIpXG4gIGVsc2UgKFxuICAgIGxldCBhID0gdW5zYWZlX2dldDMyIGJ1ZiBwb3MgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9nZXQzMiBidWYgKHBvcyArIDQpIGluXG4gICAgbGV0IGMgPSB1bnNhZmVfZ2V0MzIgYnVmIChwb3MgKyA4KSBpblxuICAgIGxldCBkID0gdW5zYWZlX2dldDMyIGJ1ZiAocG9zICsgMTIpIGluXG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyAwIGE7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyA0IGI7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyA4IGM7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyAxMiBkKTtcbiAgTWQ1X2xpYi51bnNhZmVfb2ZfYmluYXJ5IChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlcylcbjs7XG4iLCJpbmNsdWRlIEJpbl9zaGFwZVxuXG4oKiBuZXcgYmFzZSBzaGFwZXMgKilcbmxldCBiaW5fc2hhcGVfdW5pdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInVuaXRcIikgW11cbmxldCBiaW5fc2hhcGVfYm9vbCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImJvb2xcIikgW11cbmxldCBiaW5fc2hhcGVfc3RyaW5nID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwic3RyaW5nXCIpIFtdXG5sZXQgYmluX3NoYXBlX2J5dGVzID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYnl0ZXNcIikgW11cbmxldCBiaW5fc2hhcGVfY2hhciA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImNoYXJcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50MzIgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQzMlwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQ2MyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludDYzXCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDY0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50NjRcIikgW11cbmxldCBiaW5fc2hhcGVfbmF0aXZlaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmF0aXZlaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25hdDAgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuYXQwXCIpIFtdXG5sZXQgYmluX3NoYXBlX2RpZ2VzdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImRpZ2VzdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdDMyX3ZlYyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0MzJfdmVjXCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfdmVjID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQ2NF92ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfdmVjID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwidmVjXCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfbWF0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQzMl9tYXRcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDY0X21hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9tYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJtYXRcIikgW11cbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYmlnc3RyaW5nXCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0YXJyYXkgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdGFycmF5XCIpIFtdXG5sZXQgYmluX3NoYXBlX3ZhcmlhbnRfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwidmFyaWFudF9pbnRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzhiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfOGJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfMTZiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfMTZiaXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzMyYml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XzMyYml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludF82NGJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF82NGJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQ2NF9iaXRzID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50NjRfYml0c1wiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMTZfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazE2X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazMyX2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzIgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMzJfaW50MzJcIikgW11cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcms2NF9pbnRcIikgW11cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazY0X2ludDY0XCIpIFtdXG5cbigqIG5ldyBzaGFwZSBjb25zdHJ1Y3RvcnMgKilcbmxldCBiaW5fc2hhcGVfcmVmIHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJyZWZcIikgWyB4IF1cbmxldCBiaW5fc2hhcGVfb3B0aW9uIHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJvcHRpb25cIikgWyB4IF1cbmxldCBiaW5fc2hhcGVfbGlzdCB4ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibGlzdFwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9hcnJheSB4ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYXJyYXlcIikgWyB4IF1cbmxldCBiaW5fc2hhcGVfaGFzaHRibCB4IHkgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJoYXNodGJsXCIpIFsgeDsgeSBdXG5cbigqIHNoYXBlLWNvbnN0cnVjdG9yIGFsaWFzZXMgKilcbmxldCBiaW5fc2hhcGVfbGF6eSB4ID0geFxubGV0IGJpbl9zaGFwZV9wYWlyIHggeSA9IHR1cGxlIFsgeDsgeSBdXG5sZXQgYmluX3NoYXBlX3RyaXBsZSB4IHkgeiA9IHR1cGxlIFsgeDsgeTsgeiBdXG4iLCIoKiBTaXplOiBjb21wdXRlIHNpemUgb2YgdmFsdWVzIGluIHRoZSBiaW5hcnkgcHJvdG9jb2wuICopXG5cbm9wZW4gQmlnYXJyYXlcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZSA9IDY0XG5cbm9wZW4gQ29tbW9uXG5cbm1vZHVsZSBNYXhpbXVtID0gc3RydWN0XG4gIGxldCBiaW5fc2l6ZV91bml0ID0gMVxuICBsZXQgYmluX3NpemVfYm9vbCA9IDFcbiAgbGV0IGJpbl9zaXplX2NoYXIgPSAxXG4gIGxldCBiaW5fc2l6ZV9tZDUgPSAxNlxuICBsZXQgYmluX3NpemVfaW50X25hdDAgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIDkgZWxzZSA1XG4gIGxldCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIDkgZWxzZSA1XG4gIGxldCBiaW5fc2l6ZV9pbnQgPSBtYXggYmluX3NpemVfaW50X25hdDAgYmluX3NpemVfaW50X25lZ2F0aXZlXG4gIGxldCBiaW5fc2l6ZV9mbG9hdCA9IDhcbiAgbGV0IGJpbl9zaXplX2ludDMyID0gNVxuICBsZXQgYmluX3NpemVfaW50NjQgPSA5XG4gIGxldCBiaW5fc2l6ZV9uYXRpdmVpbnQgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX25hdDAgPSBiaW5fc2l6ZV9pbnRfbmF0MFxuICBsZXQgYmluX3NpemVfdmFyaWFudF9pbnQgPSA0XG4gIGxldCBiaW5fc2l6ZV9pbnRfOGJpdCA9IDFcbiAgbGV0IGJpbl9zaXplX2ludF8xNmJpdCA9IDJcbiAgbGV0IGJpbl9zaXplX2ludF8zMmJpdCA9IDRcbiAgbGV0IGJpbl9zaXplX2ludF82NGJpdCA9IDhcbiAgbGV0IGJpbl9zaXplX2ludDY0X2JpdHMgPSA4XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMTZfaW50ID0gMlxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludCA9IDRcbiAgbGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQzMiA9IDRcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQgPSA4XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQgPSA4XG5lbmRcblxubW9kdWxlIE1pbmltdW0gPSBzdHJ1Y3RcbiAgbGV0IGJpbl9zaXplX3VuaXQgPSBNYXhpbXVtLmJpbl9zaXplX3VuaXRcbiAgbGV0IGJpbl9zaXplX2Jvb2wgPSBNYXhpbXVtLmJpbl9zaXplX2Jvb2xcbiAgbGV0IGJpbl9zaXplX2NoYXIgPSBNYXhpbXVtLmJpbl9zaXplX2NoYXJcbiAgbGV0IGJpbl9zaXplX21kNSA9IDE2XG4gIGxldCBiaW5fc2l6ZV9pbnRfbmF0MCA9IDFcbiAgbGV0IGJpbl9zaXplX2ludF9uZWdhdGl2ZSA9IDJcbiAgbGV0IGJpbl9zaXplX2ludCA9IG1pbiBiaW5fc2l6ZV9pbnRfbmF0MCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmVcbiAgbGV0IGJpbl9zaXplX2Zsb2F0ID0gTWF4aW11bS5iaW5fc2l6ZV9mbG9hdFxuICBsZXQgYmluX3NpemVfaW50MzIgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX2ludDY0ID0gYmluX3NpemVfaW50XG4gIGxldCBiaW5fc2l6ZV9uYXRpdmVpbnQgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX25hdDAgPSAxXG4gIGxldCBiaW5fc2l6ZV9yZWYgPSAxXG4gIGxldCBiaW5fc2l6ZV9sYXp5X3QgPSAxXG4gIGxldCBiaW5fc2l6ZV9vcHRpb24gPSAxXG4gIGxldCBiaW5fc2l6ZV9wYWlyID0gMSArIDFcbiAgbGV0IGJpbl9zaXplX3RyaXBsZSA9IDEgKyAxICsgMVxuICBsZXQgYmluX3NpemVfbGVuID0gYmluX3NpemVfbmF0MFxuICBsZXQgYmluX3NpemVfbGlzdCA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfYXJyYXkgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2hhc2h0YmwgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX3N0cmluZyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfYnl0ZXMgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX3ZlYyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfZmxvYXQzMl92ZWMgPSBiaW5fc2l6ZV92ZWNcbiAgbGV0IGJpbl9zaXplX2Zsb2F0NjRfdmVjID0gYmluX3NpemVfdmVjXG4gIGxldCBiaW5fc2l6ZV9tYXQgPSBiaW5fc2l6ZV9sZW4gKyBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0MzJfbWF0ID0gYmluX3NpemVfbWF0XG4gIGxldCBiaW5fc2l6ZV9mbG9hdDY0X21hdCA9IGJpbl9zaXplX21hdFxuICBsZXQgYmluX3NpemVfYmlnc3RyaW5nID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdGFycmF5ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdF9hcnJheSA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfdmFyaWFudF9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX3ZhcmlhbnRfaW50XG4gIGxldCBiaW5fc2l6ZV9pbnRfOGJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzhiaXRcbiAgbGV0IGJpbl9zaXplX2ludF8xNmJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzE2Yml0XG4gIGxldCBiaW5fc2l6ZV9pbnRfMzJiaXQgPSBNYXhpbXVtLmJpbl9zaXplX2ludF8zMmJpdFxuICBsZXQgYmluX3NpemVfaW50XzY0Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfNjRiaXRcbiAgbGV0IGJpbl9zaXplX2ludDY0X2JpdHMgPSBNYXhpbXVtLmJpbl9zaXplX2ludDY0X2JpdHNcbiAgbGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcmsxNl9pbnRcbiAgbGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcmszMl9pbnRcbiAgbGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQzMiA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazMyX2ludDMyXG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50ID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrNjRfaW50XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcms2NF9pbnQ2NFxuZW5kXG5cbnR5cGUgJ2Egc2l6ZXIgPSAnYSAtPiBpbnRcbnR5cGUgKCdhLCAnYikgc2l6ZXIxID0gJ2Egc2l6ZXIgLT4gJ2Igc2l6ZXJcbnR5cGUgKCdhLCAnYiwgJ2MpIHNpemVyMiA9ICdhIHNpemVyIC0+ICgnYiwgJ2MpIHNpemVyMVxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNpemVyMyA9ICdhIHNpemVyIC0+ICgnYiwgJ2MsICdkKSBzaXplcjJcblxubGV0IGJpbl9zaXplX3VuaXQgKCkgPSAxXG5sZXQgYmluX3NpemVfYm9vbCBfID0gMVxuXG5sZXQgYmluX3NpemVfaW50X25hdDAgbiA9XG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIG4gPCAweDAwMDA4MDAwXG4gIHRoZW4gM1xuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gKCogMHg4MDAwMDAwMCAqKSAxIGxzbCAzMVxuICB0aGVuIDlcbiAgZWxzZSA1XG47O1xuXG5sZXQgYmluX3NpemVfaW50X25lZ2F0aXZlIG4gPVxuICBpZiBuID49IC0weDAwMDAwMDgwXG4gIHRoZW4gMlxuICBlbHNlIGlmIG4gPj0gLTB4MDAwMDgwMDBcbiAgdGhlbiAzXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA8ICgqIC0weDgwMDAwMDAwICopIC0oMSBsc2wgMzEpXG4gIHRoZW4gOVxuICBlbHNlIDVcbjs7XG5cbmxldCBiaW5fc2l6ZV9jaGFyIF8gPSAxXG5sZXQgYmluX3NpemVfaW50IG4gPSBpZiBuID49IDAgdGhlbiBiaW5fc2l6ZV9pbnRfbmF0MCBuIGVsc2UgYmluX3NpemVfaW50X25lZ2F0aXZlIG5cblxubGV0IGJpbl9zaXplX25hdDAgbmF0MCA9XG4gIGxldCBuID0gKG5hdDAgOiBOYXQwLnQgOj4gaW50KSBpblxuICBpZiBuIDwgMHgwMDAwMDA4MFxuICB0aGVuIDFcbiAgZWxzZSBpZiBuIDwgMHgwMDAxMDAwMFxuICB0aGVuIDNcbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuID49ICgqIDB4MTAwMDAwMDAwICopIDEgbHNsIDMyXG4gIHRoZW4gOVxuICBlbHNlIDVcbjs7XG5cbmxldCBiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMgbGVuID1cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBzaXplX2xlbiA9IGJpbl9zaXplX25hdDAgcGxlbiBpblxuICBzaXplX2xlbiArIGxlblxuOztcblxubGV0IGJpbl9zaXplX3N0cmluZyBzdHIgPSBiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMgKFN0cmluZy5sZW5ndGggc3RyKVxubGV0IGJpbl9zaXplX2J5dGVzIHN0ciA9IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyAoQnl0ZXMubGVuZ3RoIHN0cilcbmxldCBiaW5fc2l6ZV9tZDUgXyA9IDE2XG5cbmxldCBiaW5fc2l6ZV9mbG9hdCBmID1cbiAgKCogSWYgd2UganVzdCBpZ25vcmUgdGhlIGFyZ3VtZW50IHRoZSBjb21waWxlciB3aWxsIHN0aWxsIHJlcXVpcmUgaXQgdG8gZXhpc3QgYW5kIGJlXG4gICAgIGJveGVkLiBUaGlzIG1lYW5zIHRoYXQgaWYgZm9yIGluc3RhbmNlIHdlIGNhbGwgdGhpcyBmb3IgYSBmaWVsZCBvZiBhIGZsb2F0IHJlY29yZCxcbiAgICAgdGhlIGNvbXBpbGVyIHdpbGwgYWxsb2NhdGUgdGhlIGZsb2F0IGZvciBub3RoaW5nLlxuXG4gICAgIFdpdGggdGhpcyBsaW5lIHRoZSBjb21waWxlciByZWFsbHkgaWdub3JlcyB0aGUgZmxvYXQuICopXG4gIGlnbm9yZSAodHJ1bmNhdGUgZik7XG4gIDhcbjs7XG5cbmxldCBiaW5fc2l6ZV9pbnQzMiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIG4gLT4gYmluX3NpemVfaW50IChJbnQzMi50b19pbnQgbilcbiAgZWxzZVxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4MDAwMDgwMDBsIHx8IG4gPCAtMHgwMDAwODAwMGwgdGhlbiA1IGVsc2UgYmluX3NpemVfaW50IChJbnQzMi50b19pbnQgbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9pbnQ2NCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBmdW4gbiAtPlxuICAgICAgaWYgbiA+PSAweDgwMDAwMDAwTCB8fCBuIDwgLTB4ODAwMDAwMDBMIHRoZW4gOSBlbHNlIGJpbl9zaXplX2ludCAoSW50NjQudG9faW50IG4pXG4gIGVsc2VcbiAgICBmdW4gbiAtPlxuICAgICAgaWYgbiA+PSAweDgwMDAwMDAwTCB8fCBuIDwgLTB4ODAwMDAwMDBMIHRoZW4gOSBlbHNlIGJpbl9zaXplX2ludDMyIChJbnQ2NC50b19pbnQzMiBuKVxuOztcblxubGV0IGJpbl9zaXplX25hdGl2ZWludCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIG4gLT4gYmluX3NpemVfaW50NjQgKEludDY0Lm9mX25hdGl2ZWludCBuKVxuICBlbHNlIGZ1biBuIC0+IGJpbl9zaXplX2ludDMyIChOYXRpdmVpbnQudG9faW50MzIgbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9yZWYgYmluX3NpemVfZWwgciA9IGJpbl9zaXplX2VsICFyXG5sZXQgYmluX3NpemVfbGF6eV90IGJpbl9zaXplX2VsIGx2ID0gYmluX3NpemVfZWwgKExhenkuZm9yY2UgbHYpXG5sZXQgYmluX3NpemVfbGF6eSA9IGJpbl9zaXplX2xhenlfdFxuXG5sZXQgYmluX3NpemVfb3B0aW9uIGJpbl9zaXplX2VsID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IDFcbiAgfCBTb21lIHYgLT4gMSArIGJpbl9zaXplX2VsIHZcbjs7XG5cbmxldCBiaW5fc2l6ZV9wYWlyIGJpbl9zaXplX2EgYmluX3NpemVfYiAoYSwgYikgPSBiaW5fc2l6ZV9hIGEgKyBiaW5fc2l6ZV9iIGJcblxubGV0IGJpbl9zaXplX3RyaXBsZSBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgYmluX3NpemVfYyAoYSwgYiwgYykgPVxuICBiaW5fc2l6ZV9hIGEgKyBiaW5fc2l6ZV9iIGIgKyBiaW5fc2l6ZV9jIGNcbjs7XG5cbmxldCBiaW5fc2l6ZV9saXN0ID1cbiAgbGV0IHJlYyBsb29wIH5iaW5fc2l6ZV9lbCB+c2l6ZV9hY2Mgfmxlbl9hY2MgbHN0ID1cbiAgICBtYXRjaCBsc3Qgd2l0aFxuICAgIHwgW10gLT4gc2l6ZV9hY2MgKyBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuX2FjYylcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBsb29wIH5iaW5fc2l6ZV9lbCB+c2l6ZV9hY2M6KHNpemVfYWNjICsgYmluX3NpemVfZWwgaGQpIH5sZW5fYWNjOihsZW5fYWNjICsgMSkgdGxcbiAgaW5cbiAgZnVuIGJpbl9zaXplX2VsIGxzdCAtPiBsb29wIH5iaW5fc2l6ZV9lbCB+c2l6ZV9hY2M6MCB+bGVuX2FjYzowIGxzdFxuOztcblxubGV0IGJpbl9zaXplX2xlbiBsZW4gPVxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgYmluX3NpemVfbmF0MCBwbGVuXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXRhcnJheSBhciA9XG4gIGxldCBsZW4gPSBGbG9hdC5BcnJheS5sZW5ndGggYXIgaW5cbiAgYmluX3NpemVfbGVuIGxlbiArICg4ICogbGVuKVxuOztcblxubGV0IGJpbl9zaXplX2Zsb2F0X2FycmF5IGFyID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKDggKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfYXJyYXlfbG9vcCBiaW5fc2l6ZV9lbCBhciB+dG90YWxfbGVuIH5uID1cbiAgbGV0IHRvdGFsX2xlbl9yZWYgPSByZWYgdG90YWxfbGVuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIGxldCBlbCA9IEFycmF5LnVuc2FmZV9nZXQgYXIgaSBpblxuICAgIHRvdGFsX2xlbl9yZWYgOj0gIXRvdGFsX2xlbl9yZWYgKyBiaW5fc2l6ZV9lbCBlbFxuICBkb25lO1xuICAhdG90YWxfbGVuX3JlZlxuOztcblxubGV0IGJpbl9zaXplX2FycmF5ICh0eXBlIGEpIGJpbl9zaXplX2VsIGFyID1cbiAgaWYgKE9iai5tYWdpYyAoYmluX3NpemVfZWwgOiBhIHNpemVyKSA6IGZsb2F0IHNpemVyKSA9PSBiaW5fc2l6ZV9mbG9hdFxuICB0aGVuIGJpbl9zaXplX2Zsb2F0X2FycmF5IChPYmoubWFnaWMgKGFyIDogYSBhcnJheSkgOiBmbG9hdCBhcnJheSlcbiAgZWxzZSAoXG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggYXIgaW5cbiAgICBsZXQgdG90YWxfbGVuID0gYmluX3NpemVfbGVuIG4gaW5cbiAgICBiaW5fc2l6ZV9hcnJheV9sb29wIGJpbl9zaXplX2VsIGFyIH50b3RhbF9sZW4gfm4pXG47O1xuXG5sZXQgYmluX3NpemVfaGFzaHRibCBiaW5fc2l6ZV9rZXkgYmluX3NpemVfdmFsIGh0YmwgPVxuICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gIGxldCBjb2xsX2h0YmwgayB2IHRvdGFsX2xlbiA9XG4gICAgaW5jciBjbnRfcmVmO1xuICAgIHRvdGFsX2xlbiArIGJpbl9zaXplX2tleSBrICsgYmluX3NpemVfdmFsIHZcbiAgaW5cbiAgbGV0IGxlbiA9IEhhc2h0YmwubGVuZ3RoIGh0YmwgaW5cbiAgbGV0IHRvdGFsX2xlbiA9IEhhc2h0YmwuZm9sZCBjb2xsX2h0YmwgaHRibCAoYmluX3NpemVfbGVuIGxlbikgaW5cbiAgaWYgIWNudF9yZWYgPD4gbGVuIHRoZW4gcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gXCJiaW5fc2l6ZV9oYXNodGJsXCI7XG4gIHRvdGFsX2xlblxuOztcblxubGV0IGJpbl9zaXplX2dlbl92ZWMgdmVjIG11bHRpcGxpZXIgPVxuICBsZXQgbGVuID0gQXJyYXkxLmRpbSB2ZWMgaW5cbiAgYmluX3NpemVfbGVuIGxlbiArIChtdWx0aXBsaWVyICogbGVuKVxuOztcblxubGV0IGJpbl9zaXplX2Zsb2F0MzJfdmVjIHZlYyA9IGJpbl9zaXplX2dlbl92ZWMgdmVjIDRcbmxldCBiaW5fc2l6ZV9mbG9hdDY0X3ZlYyB2ZWMgPSBiaW5fc2l6ZV9nZW5fdmVjIHZlYyA4XG5sZXQgYmluX3NpemVfdmVjID0gYmluX3NpemVfZmxvYXQ2NF92ZWNcblxubGV0IGJpbl9zaXplX2dlbl9tYXQgbWF0IG11bHRpcGxpZXIgPVxuICBsZXQgZGltMSA9IEFycmF5Mi5kaW0xIG1hdCBpblxuICBsZXQgZGltMiA9IEFycmF5Mi5kaW0yIG1hdCBpblxuICBsZXQgc2l6ZSA9IGRpbTEgKiBkaW0yIGluXG4gIGJpbl9zaXplX2xlbiBkaW0xICsgYmluX3NpemVfbGVuIGRpbTIgKyAobXVsdGlwbGllciAqIHNpemUpXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXQzMl9tYXQgbWF0ID0gYmluX3NpemVfZ2VuX21hdCBtYXQgNFxubGV0IGJpbl9zaXplX2Zsb2F0NjRfbWF0IG1hdCA9IGJpbl9zaXplX2dlbl9tYXQgbWF0IDhcbmxldCBiaW5fc2l6ZV9tYXQgPSBiaW5fc2l6ZV9mbG9hdDY0X21hdFxubGV0IGJpbl9zaXplX2JpZ3N0cmluZyBidWYgPSBiaW5fc2l6ZV9nZW5fdmVjIGJ1ZiAxXG5sZXQgYmluX3NpemVfdmFyaWFudF9pbnQgXyA9IDRcbmxldCBiaW5fc2l6ZV9pbnRfOGJpdCBfID0gMVxubGV0IGJpbl9zaXplX2ludF8xNmJpdCBfID0gMlxubGV0IGJpbl9zaXplX2ludF8zMmJpdCBfID0gNFxubGV0IGJpbl9zaXplX2ludF82NGJpdCBfID0gOFxubGV0IGJpbl9zaXplX2ludDY0X2JpdHMgXyA9IDhcbmxldCBiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IF8gPSAyXG5sZXQgYmluX3NpemVfbmV0d29yazMyX2ludCBfID0gNFxubGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQzMiBfID0gNFxubGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQgXyA9IDhcbmxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQgXyA9IDhcbiIsIigqIFRwX2NsYXNzOiBzaXplcnMsIHdyaXRlcnMsIGFuZCByZWFkZXJzIGluIHJlY29yZHMgKilcblxudHlwZSAnYSB3cml0ZXIgPVxuICB7IHNpemUgOiAnYSBTaXplLnNpemVyXG4gIDsgd3JpdGUgOiAnYSBXcml0ZS53cml0ZXJcbiAgfVxuXG50eXBlICdhIHJlYWRlciA9XG4gIHsgcmVhZCA6ICdhIFJlYWQucmVhZGVyXG4gIDsgdnRhZ19yZWFkIDogKGludCAtPiAnYSkgUmVhZC5yZWFkZXJcbiAgfVxuXG50eXBlICdhIHQgPVxuICB7IHNoYXBlIDogU2hhcGUudFxuICA7IHdyaXRlciA6ICdhIHdyaXRlclxuICA7IHJlYWRlciA6ICdhIHJlYWRlclxuICB9XG5cbnR5cGUgJ2Egd3JpdGVyMCA9ICdhIHdyaXRlclxudHlwZSAnYSByZWFkZXIwID0gJ2EgcmVhZGVyXG50eXBlICdhIHQwID0gJ2EgdFxuXG5tb2R1bGUgUzEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB3cml0ZXIgPSAnYSB3cml0ZXIwIC0+ICdiIHdyaXRlcjBcbiAgdHlwZSAoJ2EsICdiKSByZWFkZXIgPSAnYSByZWFkZXIwIC0+ICdiIHJlYWRlcjBcbiAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgdDAgLT4gJ2IgdDBcbmVuZFxuXG5tb2R1bGUgUzIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgd3JpdGVyID0gJ2Egd3JpdGVyMCAtPiAoJ2IsICdjKSBTMS53cml0ZXJcbiAgdHlwZSAoJ2EsICdiLCAnYykgcmVhZGVyID0gJ2EgcmVhZGVyMCAtPiAoJ2IsICdjKSBTMS5yZWFkZXJcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdhIHQwIC0+ICgnYiwgJ2MpIFMxLnRcbmVuZFxuXG5tb2R1bGUgUzMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHdyaXRlciA9ICdhIHdyaXRlcjAgLT4gKCdiLCAnYywgJ2QpIFMyLndyaXRlclxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgcmVhZGVyID0gJ2EgcmVhZGVyMCAtPiAoJ2IsICdjLCAnZCkgUzIucmVhZGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ID0gJ2EgdDAgLT4gKCdiLCAnYywgJ2QpIFMyLnRcbmVuZFxuXG5sZXQgdmFyaWFudF93cm9uZ190eXBlIG5hbWUgX2J1ZiB+cG9zX3JlZiBfeCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgbmFtZSAhcG9zX3JlZlxuOztcblxuKCokIG9wZW4gQmluX3Byb3RfY2luYXBzLlN0ciAqKVxuKCokIG1rX2Jhc2UgXCJ1bml0XCIgKilcbmxldCBiaW5fd3JpdGVyX3VuaXQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX3VuaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3VuaXQgfVxubGV0IGJpbl9yZWFkZXJfdW5pdCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfdW5pdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidW5pdFwiIH1cbmxldCBiaW5fc2hhcGVfdW5pdCA9IFNoYXBlLmJpbl9zaGFwZV91bml0XG5cbmxldCBiaW5fdW5pdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfdW5pdDsgd3JpdGVyID0gYmluX3dyaXRlcl91bml0OyByZWFkZXIgPSBiaW5fcmVhZGVyX3VuaXQgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJib29sXCIgKilcbmxldCBiaW5fd3JpdGVyX2Jvb2wgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Jvb2w7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Jvb2wgfVxubGV0IGJpbl9yZWFkZXJfYm9vbCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfYm9vbDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiYm9vbFwiIH1cbmxldCBiaW5fc2hhcGVfYm9vbCA9IFNoYXBlLmJpbl9zaGFwZV9ib29sXG5cbmxldCBiaW5fYm9vbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYm9vbDsgd3JpdGVyID0gYmluX3dyaXRlcl9ib29sOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Jvb2wgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJzdHJpbmdcIiAqKVxubGV0IGJpbl93cml0ZXJfc3RyaW5nID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9zdHJpbmc7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3N0cmluZyB9XG5cbmxldCBiaW5fcmVhZGVyX3N0cmluZyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfc3RyaW5nOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJzdHJpbmdcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3N0cmluZyA9IFNoYXBlLmJpbl9zaGFwZV9zdHJpbmdcblxubGV0IGJpbl9zdHJpbmcgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3N0cmluZzsgd3JpdGVyID0gYmluX3dyaXRlcl9zdHJpbmc7IHJlYWRlciA9IGJpbl9yZWFkZXJfc3RyaW5nIH1cbjs7XG5cbigqJCBta19iYXNlIFwiYnl0ZXNcIiAqKVxubGV0IGJpbl93cml0ZXJfYnl0ZXMgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2J5dGVzOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9ieXRlcyB9XG5cbmxldCBiaW5fcmVhZGVyX2J5dGVzID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9ieXRlczsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiYnl0ZXNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2J5dGVzID0gU2hhcGUuYmluX3NoYXBlX2J5dGVzXG5cbmxldCBiaW5fYnl0ZXMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2J5dGVzOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2J5dGVzOyByZWFkZXIgPSBiaW5fcmVhZGVyX2J5dGVzIH1cbjs7XG5cbigqJCBta19iYXNlIFwiY2hhclwiICopXG5sZXQgYmluX3dyaXRlcl9jaGFyID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9jaGFyOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9jaGFyIH1cbmxldCBiaW5fcmVhZGVyX2NoYXIgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2NoYXI7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImNoYXJcIiB9XG5sZXQgYmluX3NoYXBlX2NoYXIgPSBTaGFwZS5iaW5fc2hhcGVfY2hhclxuXG5sZXQgYmluX2NoYXIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2NoYXI7IHdyaXRlciA9IGJpbl93cml0ZXJfY2hhcjsgcmVhZGVyID0gYmluX3JlYWRlcl9jaGFyIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQgfVxubGV0IGJpbl9yZWFkZXJfaW50ID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludFwiIH1cbmxldCBiaW5fc2hhcGVfaW50ID0gU2hhcGUuYmluX3NoYXBlX2ludFxubGV0IGJpbl9pbnQgPSB7IHNoYXBlID0gYmluX3NoYXBlX2ludDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50IH1cblxuKCokIG1rX2Jhc2UgXCJmbG9hdFwiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0IH1cblxubGV0IGJpbl9yZWFkZXJfZmxvYXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXRcblxubGV0IGJpbl9mbG9hdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQ7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnQzMlwiICopXG5sZXQgYmluX3dyaXRlcl9pbnQzMiA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50MzI7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludDMyIH1cblxubGV0IGJpbl9yZWFkZXJfaW50MzIgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDMyOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnQzMlwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50MzIgPSBTaGFwZS5iaW5fc2hhcGVfaW50MzJcblxubGV0IGJpbl9pbnQzMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50MzI7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50MzI7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50MzIgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnQ2NFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnQ2NCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50NjQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludDY0IH1cblxubGV0IGJpbl9yZWFkZXJfaW50NjQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDY0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnQ2NFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50NjQgPSBTaGFwZS5iaW5fc2hhcGVfaW50NjRcblxubGV0IGJpbl9pbnQ2NCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50NjQ7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50NjQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50NjQgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuYXRpdmVpbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmF0aXZlaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uYXRpdmVpbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25hdGl2ZWludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uYXRpdmVpbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25hdGl2ZWludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmF0aXZlaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uYXRpdmVpbnQgPSBTaGFwZS5iaW5fc2hhcGVfbmF0aXZlaW50XG5cbmxldCBiaW5fbmF0aXZlaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uYXRpdmVpbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25hdGl2ZWludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmF0aXZlaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmF0MFwiICopXG5sZXQgYmluX3dyaXRlcl9uYXQwID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uYXQwOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uYXQwIH1cbmxldCBiaW5fcmVhZGVyX25hdDAgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25hdDA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5hdDBcIiB9XG5sZXQgYmluX3NoYXBlX25hdDAgPSBTaGFwZS5iaW5fc2hhcGVfbmF0MFxuXG5sZXQgYmluX25hdDAgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25hdDA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmF0MDsgcmVhZGVyID0gYmluX3JlYWRlcl9uYXQwIH1cbjs7XG5cbigqJCBta19iYXNlMSBcInJlZlwiICopXG5sZXQgYmluX3dyaXRlcl9yZWYgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX3JlZiBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfcmVmIGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfcmVmIGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX3JlZiBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInJlZlwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfcmVmIHgxID0gU2hhcGUuYmluX3NoYXBlX3JlZiB4MVxuXG5sZXQgYmluX3JlZiBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3JlZiBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3JlZiBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9yZWYgYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJsYXp5XCIgKilcbmxldCBiaW5fd3JpdGVyX2xhenkgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2xhenkgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX2xhenkgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9sYXp5IGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX2xhenkgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJsYXp5XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9sYXp5IHgxID0gU2hhcGUuYmluX3NoYXBlX2xhenkgeDFcblxubGV0IGJpbl9sYXp5IGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbGF6eSBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2xhenkgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbGF6eSBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcIm9wdGlvblwiICopXG5sZXQgYmluX3dyaXRlcl9vcHRpb24gYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX29wdGlvbiBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfb3B0aW9uIGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfb3B0aW9uIGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX29wdGlvbiBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm9wdGlvblwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfb3B0aW9uIHgxID0gU2hhcGUuYmluX3NoYXBlX29wdGlvbiB4MVxuXG5sZXQgYmluX29wdGlvbiBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX29wdGlvbiBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX29wdGlvbiBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9vcHRpb24gYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTIgXCJwYWlyXCIgKilcbmxldCBiaW5fd3JpdGVyX3BhaXIgYmluX3dyaXRlcl9lbDEgYmluX3dyaXRlcl9lbDIgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9wYWlyIGJpbl93cml0ZXJfZWwxLnNpemUgYmluX3dyaXRlcl9lbDIuc2l6ZSB2KVxuICA7IHdyaXRlID1cbiAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgV3JpdGUuYmluX3dyaXRlX3BhaXIgYmluX3dyaXRlcl9lbDEud3JpdGUgYmluX3dyaXRlcl9lbDIud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfcGFpciBiaW5fcmVhZGVyX2VsMSBiaW5fcmVhZGVyX2VsMiA9XG4gIHsgcmVhZCA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgUmVhZC5iaW5fcmVhZF9wYWlyIGJpbl9yZWFkZXJfZWwxLnJlYWQgYmluX3JlYWRlcl9lbDIucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwicGFpclwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfcGFpciB4MSB4MiA9IFNoYXBlLmJpbl9zaGFwZV9wYWlyIHgxIHgyXG5cbmxldCBiaW5fcGFpciBiaW5fZWwxIGJpbl9lbDIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3BhaXIgYmluX2VsMS5zaGFwZSBiaW5fZWwyLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9wYWlyIGJpbl9lbDEud3JpdGVyIGJpbl9lbDIud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9wYWlyIGJpbl9lbDEucmVhZGVyIGJpbl9lbDIucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMyBcInRyaXBsZVwiICopXG5sZXQgYmluX3dyaXRlcl90cmlwbGUgYmluX3dyaXRlcl9lbDEgYmluX3dyaXRlcl9lbDIgYmluX3dyaXRlcl9lbDMgPVxuICB7IHNpemUgPVxuICAgICAgKGZ1biB2IC0+XG4gICAgICAgICBTaXplLmJpbl9zaXplX3RyaXBsZSBiaW5fd3JpdGVyX2VsMS5zaXplIGJpbl93cml0ZXJfZWwyLnNpemUgYmluX3dyaXRlcl9lbDMuc2l6ZSB2KVxuICA7IHdyaXRlID1cbiAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgV3JpdGUuYmluX3dyaXRlX3RyaXBsZVxuICAgICAgICAgICBiaW5fd3JpdGVyX2VsMS53cml0ZVxuICAgICAgICAgICBiaW5fd3JpdGVyX2VsMi53cml0ZVxuICAgICAgICAgICBiaW5fd3JpdGVyX2VsMy53cml0ZVxuICAgICAgICAgICBidWZcbiAgICAgICAgICAgfnBvc1xuICAgICAgICAgICB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl90cmlwbGUgYmluX3JlYWRlcl9lbDEgYmluX3JlYWRlcl9lbDIgYmluX3JlYWRlcl9lbDMgPVxuICB7IHJlYWQgPVxuICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgIFJlYWQuYmluX3JlYWRfdHJpcGxlXG4gICAgICAgICAgIGJpbl9yZWFkZXJfZWwxLnJlYWRcbiAgICAgICAgICAgYmluX3JlYWRlcl9lbDIucmVhZFxuICAgICAgICAgICBiaW5fcmVhZGVyX2VsMy5yZWFkXG4gICAgICAgICAgIGJ1ZlxuICAgICAgICAgICB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ0cmlwbGVcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3RyaXBsZSB4MSB4MiB4MyA9IFNoYXBlLmJpbl9zaGFwZV90cmlwbGUgeDEgeDIgeDNcblxubGV0IGJpbl90cmlwbGUgYmluX2VsMSBiaW5fZWwyIGJpbl9lbDMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3RyaXBsZSBiaW5fZWwxLnNoYXBlIGJpbl9lbDIuc2hhcGUgYmluX2VsMy5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdHJpcGxlIGJpbl9lbDEud3JpdGVyIGJpbl9lbDIud3JpdGVyIGJpbl9lbDMud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl90cmlwbGUgYmluX2VsMS5yZWFkZXIgYmluX2VsMi5yZWFkZXIgYmluX2VsMy5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwibGlzdFwiICopXG5sZXQgYmluX3dyaXRlcl9saXN0IGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9saXN0IGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9saXN0IGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbGlzdCBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9saXN0IGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibGlzdFwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbGlzdCB4MSA9IFNoYXBlLmJpbl9zaGFwZV9saXN0IHgxXG5cbmxldCBiaW5fbGlzdCBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2xpc3QgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9saXN0IGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2xpc3QgYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJhcnJheVwiICopXG5sZXQgYmluX3dyaXRlcl9hcnJheSBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfYXJyYXkgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX2FycmF5IGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfYXJyYXkgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfYXJyYXkgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJhcnJheVwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfYXJyYXkgeDEgPSBTaGFwZS5iaW5fc2hhcGVfYXJyYXkgeDFcblxubGV0IGJpbl9hcnJheSBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2FycmF5IGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfYXJyYXkgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfYXJyYXkgYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTIgXCJoYXNodGJsXCIgKilcbmxldCBiaW5fd3JpdGVyX2hhc2h0YmwgYmluX3dyaXRlcl9lbDEgYmluX3dyaXRlcl9lbDIgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9oYXNodGJsIGJpbl93cml0ZXJfZWwxLnNpemUgYmluX3dyaXRlcl9lbDIuc2l6ZSB2KVxuICA7IHdyaXRlID1cbiAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgV3JpdGUuYmluX3dyaXRlX2hhc2h0YmwgYmluX3dyaXRlcl9lbDEud3JpdGUgYmluX3dyaXRlcl9lbDIud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaGFzaHRibCBiaW5fcmVhZGVyX2VsMSBiaW5fcmVhZGVyX2VsMiA9XG4gIHsgcmVhZCA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgUmVhZC5iaW5fcmVhZF9oYXNodGJsIGJpbl9yZWFkZXJfZWwxLnJlYWQgYmluX3JlYWRlcl9lbDIucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaGFzaHRibFwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaGFzaHRibCB4MSB4MiA9IFNoYXBlLmJpbl9zaGFwZV9oYXNodGJsIHgxIHgyXG5cbmxldCBiaW5faGFzaHRibCBiaW5fZWwxIGJpbl9lbDIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2hhc2h0YmwgYmluX2VsMS5zaGFwZSBiaW5fZWwyLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9oYXNodGJsIGJpbl9lbDEud3JpdGVyIGJpbl9lbDIud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9oYXNodGJsIGJpbl9lbDEucmVhZGVyIGJpbl9lbDIucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiZmxvYXQzMl92ZWNcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQzMl92ZWMgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0MzJfdmVjOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDMyX3ZlYyB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX3ZlYyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQzMl92ZWM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0MzJfdmVjXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdDMyX3ZlYyA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdDMyX3ZlY1xuXG5sZXQgYmluX2Zsb2F0MzJfdmVjID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDMyX3ZlY1xuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQzMl92ZWNcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0MzJfdmVjXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiZmxvYXQ2NF92ZWNcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF92ZWMgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0NjRfdmVjOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDY0X3ZlYyB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQ2NF92ZWM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0NjRfdmVjXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X3ZlYyA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX2Zsb2F0NjRfdmVjID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDY0X3ZlY1xuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQ2NF92ZWNcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0NjRfdmVjXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwidmVjXCIgKilcbmxldCBiaW5fd3JpdGVyX3ZlYyA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfdmVjOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV92ZWMgfVxubGV0IGJpbl9yZWFkZXJfdmVjID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF92ZWM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInZlY1wiIH1cbmxldCBiaW5fc2hhcGVfdmVjID0gU2hhcGUuYmluX3NoYXBlX3ZlY1xubGV0IGJpbl92ZWMgPSB7IHNoYXBlID0gYmluX3NoYXBlX3ZlYzsgd3JpdGVyID0gYmluX3dyaXRlcl92ZWM7IHJlYWRlciA9IGJpbl9yZWFkZXJfdmVjIH1cblxuKCokIG1rX2Jhc2UgXCJmbG9hdDMyX21hdFwiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDMyX21hdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQzMl9tYXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfbWF0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfbWF0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX21hdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl9tYXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfbWF0ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0MzJfbWF0XG5cbmxldCBiaW5fZmxvYXQzMl9tYXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0MzJfbWF0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDMyX21hdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQzMl9tYXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdDY0X21hdFwiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDY0X21hdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQ2NF9tYXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfbWF0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfbWF0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X21hdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF9tYXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfbWF0ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0NjRfbWF0XG5cbmxldCBiaW5fZmxvYXQ2NF9tYXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0NjRfbWF0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDY0X21hdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQ2NF9tYXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJtYXRcIiAqKVxubGV0IGJpbl93cml0ZXJfbWF0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9tYXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX21hdCB9XG5sZXQgYmluX3JlYWRlcl9tYXQgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX21hdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibWF0XCIgfVxubGV0IGJpbl9zaGFwZV9tYXQgPSBTaGFwZS5iaW5fc2hhcGVfbWF0XG5sZXQgYmluX21hdCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfbWF0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX21hdDsgcmVhZGVyID0gYmluX3JlYWRlcl9tYXQgfVxuXG4oKiQgbWtfYmFzZSBcImJpZ3N0cmluZ1wiICopXG5sZXQgYmluX3dyaXRlcl9iaWdzdHJpbmcgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2JpZ3N0cmluZzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfYmlnc3RyaW5nIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2JpZ3N0cmluZyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfYmlnc3RyaW5nOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJiaWdzdHJpbmdcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2JpZ3N0cmluZyA9IFNoYXBlLmJpbl9zaGFwZV9iaWdzdHJpbmdcblxubGV0IGJpbl9iaWdzdHJpbmcgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2JpZ3N0cmluZ1xuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfYmlnc3RyaW5nXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9iaWdzdHJpbmdcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdGFycmF5XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0YXJyYXkgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0YXJyYXk7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0YXJyYXkgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXRhcnJheSA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXRhcnJheTsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRhcnJheVwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXRhcnJheSA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdGFycmF5XG5cbmxldCBiaW5fZmxvYXRhcnJheSA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXRhcnJheVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXRhcnJheVxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXRhcnJheVxuICB9XG47O1xuXG4oKiQqKVxuXG4oKiQgbWtfYmFzZSBcInZhcmlhbnRfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX3ZhcmlhbnRfaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV92YXJpYW50X2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfdmFyaWFudF9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfdmFyaWFudF9pbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3ZhcmlhbnRfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ2YXJpYW50X2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfdmFyaWFudF9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfdmFyaWFudF9pbnRcblxubGV0IGJpbl92YXJpYW50X2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfdmFyaWFudF9pbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3ZhcmlhbnRfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl92YXJpYW50X2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF84Yml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF84Yml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfOGJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzhiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzhiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF84Yml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfOGJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzhiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzhiaXRcblxubGV0IGJpbl9pbnRfOGJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzhiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF84Yml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfOGJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF8xNmJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfMTZiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF8xNmJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzE2Yml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF8xNmJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzE2Yml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfMTZiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF8xNmJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfMTZiaXRcblxubGV0IGJpbl9pbnRfMTZiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF8xNmJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzE2Yml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfMTZiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfMzJiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzMyYml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfMzJiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF8zMmJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfMzJiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF8zMmJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzMyYml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfMzJiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzMyYml0XG5cbmxldCBiaW5faW50XzMyYml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfMzJiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF8zMmJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzMyYml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzY0Yml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF82NGJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzY0Yml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfNjRiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzY0Yml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfNjRiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF82NGJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzY0Yml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF82NGJpdFxuXG5sZXQgYmluX2ludF82NGJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzY0Yml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfNjRiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF82NGJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludDY0X2JpdHNcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50NjRfYml0cyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50NjRfYml0czsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50NjRfYml0cyB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnQ2NF9iaXRzID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnQ2NF9iaXRzOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnQ2NF9iaXRzXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnQ2NF9iaXRzID0gU2hhcGUuYmluX3NoYXBlX2ludDY0X2JpdHNcblxubGV0IGJpbl9pbnQ2NF9iaXRzID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQ2NF9iaXRzXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQ2NF9iaXRzXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQ2NF9iaXRzXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazE2X2ludFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrMTZfaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrMTZfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrMTZfaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcmsxNl9pbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcmsxNl9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcmsxNl9pbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcmsxNl9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazE2X2ludFxuXG5sZXQgYmluX25ldHdvcmsxNl9pbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcmsxNl9pbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcmsxNl9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcmsxNl9pbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrMzJfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcmszMl9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcmszMl9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazMyX2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazMyX2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazMyX2ludCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrMzJfaW50XG5cbmxldCBiaW5fbmV0d29yazMyX2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazMyX2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazMyX2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcmszMl9pbnQzMlwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50MzIgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcmszMl9pbnQzMjsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazMyX2ludDMyIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQzMiA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazMyX2ludDMyXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazMyX2ludDMyXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzIgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazMyX2ludDMyXG5cbmxldCBiaW5fbmV0d29yazMyX2ludDMyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzJcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMlxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazY0X2ludFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrNjRfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrNjRfaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcms2NF9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcms2NF9pbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcms2NF9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazY0X2ludFxuXG5sZXQgYmluX25ldHdvcms2NF9pbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcms2NF9pbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrNjRfaW50NjRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazY0X2ludDY0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcms2NF9pbnQ2NCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50NjQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcms2NF9pbnQ2NFxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcms2NF9pbnQ2NFwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NFxuXG5sZXQgYmluX25ldHdvcms2NF9pbnQ2NCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NFxuICB9XG47O1xuXG4oKiQqKVxuXG4oKiBDb252ZXJzaW9uIG9mIGJpbmFibGUgdHlwZXMgKilcblxubGV0IGNudl93cml0ZXIgY252IHRwX2NsYXNzID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IHRwX2NsYXNzLnNpemUgKGNudiB2KSlcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiB0cF9jbGFzcy53cml0ZSBidWYgfnBvcyAoY252IHYpKVxuICB9XG47O1xuXG5sZXQgY252X3JlYWRlciBjbnYgdHBfY2xhc3MgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBjbnYgKHRwX2NsYXNzLnJlYWQgYnVmIH5wb3NfcmVmKSlcbiAgOyB2dGFnX3JlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiB2dGFnIC0+IGNudiAodHBfY2xhc3MudnRhZ19yZWFkIGJ1ZiB+cG9zX3JlZiB2dGFnKSlcbiAgfVxuOztcblxubGV0IGNudiBmb3Jfc2hhcGUgZm9yX3dyaXRlciBmb3JfcmVhZGVyIHRwX2NsYXNzID1cbiAgeyBzaGFwZSA9IGZvcl9zaGFwZSB0cF9jbGFzcy5zaGFwZVxuICA7IHdyaXRlciA9IGNudl93cml0ZXIgZm9yX3dyaXRlciB0cF9jbGFzcy53cml0ZXJcbiAgOyByZWFkZXIgPSBjbnZfcmVhZGVyIGZvcl9yZWFkZXIgdHBfY2xhc3MucmVhZGVyXG4gIH1cbjs7XG4iLCIoKiBCaW5hYmxlOiBzaWduYXR1cmVzIGRlZmluaW5nIGdlbmVyYXRlZCBmdW5jdGlvbnMgZm9yIHRoZSBiaW5hcnkgcHJvdG9jb2wuXG4gICBbUywgUzEsIGV0Y10gYXJlIHRoZSBzaWduYXR1cmVzIHNhdGlzZmllZCBieSB0aGUgZ2VuZXJhdGVkIGNvZGUgYW5kXG4gICBbTWluaW1hbC5TLCBNaW5pbWFsLlMxLCBldGNdIGFyZSB0aGUgc2lnbmF0dXJlcyB0aGF0IGdlbmVyYXRlZCBjb2RlIHVzZXMuICopXG5cbigqIHRoZSBzdWJzZXQgb2YgUyBjb250YWluaW5nIG9ubHkgZnVuY3Rpb25zLCBzbyB0aGF0IG9uZSBjYW4gcmVjdXJzaXZlbHkgZGVmaW5lIG1vZHVsZXNcbiAgIGltcGxlbWVudGluZyB0aGlzIGludGVyZmFjZSAqKVxubW9kdWxlIHR5cGUgU19vbmx5X2Z1bmN0aW9ucyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgYmluX3NpemVfdCA6IHQgU2l6ZS5zaXplclxuICB2YWwgYmluX3dyaXRlX3QgOiB0IFdyaXRlLndyaXRlclxuICB2YWwgYmluX3JlYWRfdCA6IHQgUmVhZC5yZWFkZXJcblxuICAoKipcbiAgICAgVGhpcyBmdW5jdGlvbiBvbmx5IG5lZWRzIGltcGxlbWVudGF0aW9uIGlmIFt0XSBleHBvc2VkIHRvIGJlIGEgcG9seW1vcnBoaWMgdmFyaWFudC5cbiAgICAgRGVzcGl0ZSB3aGF0IHRoZSB0eXBlIHJlYWRzLCB0aGlzIGRvZXMgKm5vdCogcHJvZHVjZSBhIGZ1bmN0aW9uIGFmdGVyIHJlYWRpbmc7XG4gICAgIGluc3RlYWQgaXQgdGFrZXMgdGhlIGNvbnN0cnVjdG9yIHRhZyAoaW50KSBiZWZvcmUgcmVhZGluZyBhbmQgcmVhZHMgdGhlIHJlc3Qgb2YgdGhlXG4gICAgIHZhcmlhbnQgW3RdIGFmdGVyd2FyZHMuXG4gICopXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6IChpbnQgLT4gdCkgUmVhZC5yZWFkZXJcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdFxuXG4gIGluY2x1ZGUgU19vbmx5X2Z1bmN0aW9ucyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICB2YWwgYmluX3dyaXRlcl90IDogdCBUeXBlX2NsYXNzLndyaXRlclxuICB2YWwgYmluX3JlYWRlcl90IDogdCBUeXBlX2NsYXNzLnJlYWRlclxuICB2YWwgYmluX3QgOiB0IFR5cGVfY2xhc3MudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudFxuICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2EgdCkgU2l6ZS5zaXplcjFcbiAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYSB0KSBXcml0ZS53cml0ZXIxXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCBpbnQgLT4gJ2EgdCkgUmVhZC5yZWFkZXIxXG4gIHZhbCBiaW5fd3JpdGVyX3QgOiAoJ2EsICdhIHQpIFR5cGVfY2xhc3MuUzEud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdhIHQpIFR5cGVfY2xhc3MuUzEucmVhZGVyXG4gIHZhbCBiaW5fdCA6ICgnYSwgJ2EgdCkgVHlwZV9jbGFzcy5TMS50XG5lbmRcblxubW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBTaXplLnNpemVyMlxuICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBXcml0ZS53cml0ZXIyXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsIGludCAtPiAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgdmFsIGJpbl93cml0ZXJfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFR5cGVfY2xhc3MuUzIud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBUeXBlX2NsYXNzLlMyLnJlYWRlclxuICB2YWwgYmluX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBUeXBlX2NsYXNzLlMyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgU2l6ZS5zaXplcjNcbiAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBXcml0ZS53cml0ZXIzXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCAnYiwgJ2MsIGludCAtPiAoJ2EsICdiLCAnYykgdCkgUmVhZC5yZWFkZXIzXG4gIHZhbCBiaW5fd3JpdGVyX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFR5cGVfY2xhc3MuUzMud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFR5cGVfY2xhc3MuUzMucmVhZGVyXG4gIHZhbCBiaW5fdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgVHlwZV9jbGFzcy5TMy50XG5lbmRcblxubW9kdWxlIE1pbmltYWwgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogdCBTaXplLnNpemVyXG4gICAgdmFsIGJpbl93cml0ZV90IDogdCBXcml0ZS53cml0ZXJcbiAgICB2YWwgYmluX3JlYWRfdCA6IHQgUmVhZC5yZWFkZXJcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoaW50IC0+IHQpIFJlYWQucmVhZGVyXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2EgdCkgU2l6ZS5zaXplcjFcbiAgICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdhIHQpIFdyaXRlLndyaXRlcjFcbiAgICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2EgdCkgUmVhZC5yZWFkZXIxXG4gICAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCBpbnQgLT4gJ2EgdCkgUmVhZC5yZWFkZXIxXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgU2l6ZS5zaXplcjJcbiAgICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBXcml0ZS53cml0ZXIyXG4gICAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCBpbnQgLT4gKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBTaXplLnNpemVyM1xuICAgIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgV3JpdGUud3JpdGVyM1xuICAgIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCAnYywgaW50IC0+ICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgZW5kXG5lbmRcbiIsIigqIFV0aWxzOiB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgdXNlciBjb252ZW5pZW5jZSAqKVxuXG5vcGVuIENvbW1vblxub3BlbiBTaXplXG5vcGVuIFR5cGVfY2xhc3NcbmluY2x1ZGUgVXRpbHNfaW50ZlxuXG5sZXQgc2l6ZV9oZWFkZXJfbGVuZ3RoID0gOFxubGV0IGJpbl93cml0ZV9zaXplX2hlYWRlciA9IFdyaXRlLmJpbl93cml0ZV9pbnRfNjRiaXRcbmxldCBiaW5fcmVhZF9zaXplX2hlYWRlciA9IFJlYWQuYmluX3JlYWRfaW50XzY0Yml0XG5cbmxldCBiaW5fZHVtcCA/KGhlYWRlciA9IGZhbHNlKSB3cml0ZXIgdiA9XG4gIGxldCBidWYsIHBvcywgcG9zX2xlbiA9XG4gICAgbGV0IHZfbGVuID0gd3JpdGVyLnNpemUgdiBpblxuICAgIGlmIGhlYWRlclxuICAgIHRoZW4gKFxuICAgICAgbGV0IHRvdF9sZW4gPSB2X2xlbiArIHNpemVfaGVhZGVyX2xlbmd0aCBpblxuICAgICAgbGV0IGJ1ZiA9IGNyZWF0ZV9idWYgdG90X2xlbiBpblxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9zaXplX2hlYWRlciBidWYgfnBvczowIHZfbGVuIGluXG4gICAgICBidWYsIHBvcywgcG9zICsgdl9sZW4pXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYnVmID0gY3JlYXRlX2J1ZiB2X2xlbiBpblxuICAgICAgYnVmLCAwLCB2X2xlbilcbiAgaW5cbiAgbGV0IHBvcyA9IHdyaXRlci53cml0ZSBidWYgfnBvcyB2IGluXG4gIGlmIHBvcyA9IHBvc19sZW5cbiAgdGhlbiBidWZcbiAgZWxzZSBmYWlsd2l0aCBcIkJpbl9wcm90LlV0aWxzLmJpbl9kdW1wOiBzaXplIGNoYW5nZWQgZHVyaW5nIHdyaXRpbmdcIlxuOztcblxuKCogUmVhZGluZyBmcm9tIHN0cmVhbXMgKilcblxubGV0IGJpbl9yZWFkX3N0cmVhbSA/bWF4X3NpemUgfnJlYWQgcmVhZGVyID1cbiAgbGV0IGJ1ZiA9IGNyZWF0ZV9idWYgc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gIHJlYWQgYnVmIH5wb3M6MCB+bGVuOnNpemVfaGVhZGVyX2xlbmd0aDtcbiAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICBsZXQgbGVuID0gYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gIG1hdGNoIG1heF9zaXplIHdpdGhcbiAgfCBTb21lIG1heF9zaXplIHdoZW4gbGVuID4gbWF4X3NpemUgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICBcIkJpbl9wcm90LlV0aWxzLmJpbl9yZWFkX3N0cmVhbTogc2l6ZSBleGNlZWRzIG1heF9zaXplOiAlZCA+ICVkXCJcbiAgICAgICAgIGxlblxuICAgICAgICAgbWF4X3NpemUpXG4gIHwgXyAtPlxuICAgIGxldCBidWYgPSBpZiBsZW4gPiBzaXplX2hlYWRlcl9sZW5ndGggdGhlbiBjcmVhdGVfYnVmIGxlbiBlbHNlIGJ1ZiBpblxuICAgIHJlYWQgYnVmIH5wb3M6MCB+bGVuO1xuICAgIHBvc19yZWYgOj0gMDtcbiAgICBsZXQgcmVzID0gcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgaWYgIXBvc19yZWYgPSBsZW5cbiAgICB0aGVuIHJlc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IG1zZyA9XG4gICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgXCJCaW5fcHJvdC5VdGlscy5iaW5fcmVhZF9zdHJlYW06IHByb3RvY29sIGxpZWQgYWJvdXQgbGVuZ3RoIG9mIHZhbHVlOiBleHBlY3RlZCBcXFxuICAgICAgICAgICAlZCwgcmVjZWl2ZWQgJWRcIlxuICAgICAgICAgIGxlblxuICAgICAgICAgICFwb3NfcmVmXG4gICAgICBpblxuICAgICAgZmFpbHdpdGggbXNnKVxuOztcblxuKCogQ29udmVyc2lvbiBvZiBiaW5hYmxlIHR5cGVzICopXG5cbm1vZHVsZSBPZl9taW5pbWFsIChTIDogQmluYWJsZS5NaW5pbWFsLlMpIDogQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IFMudCA9IHN0cnVjdFxuICBpbmNsdWRlIFNcblxuICBsZXQgYmluX3dyaXRlcl90ID0geyBzaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG4gIGxldCBiaW5fcmVhZGVyX3QgPSB7IHJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gIGxldCBiaW5fdCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfdDsgd3JpdGVyID0gYmluX3dyaXRlcl90OyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgfVxuZW5kXG5cbmxldCBtYXliZV9hbm5vdGF0ZV9zaGFwZSBtYXliZV91dWlkIHNoYXBlID1cbiAgbWF0Y2ggbWF5YmVfdXVpZCB3aXRoXG4gIHwgTm9uZSAtPiBzaGFwZVxuICB8IFNvbWUgdXVpZCAtPiBTaGFwZS5hbm5vdGF0ZSB1dWlkIHNoYXBlXG47O1xuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE9mX21pbmltYWwgKHN0cnVjdFxuICAgICAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICAgICAgdHlwZSB0ID0gUy50XG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IG1heWJlX2Fubm90YXRlX3NoYXBlIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5IEIuYmluX3NoYXBlX3RcbiAgICAgIGxldCBiaW5fc2l6ZV90IHQgPSBCLmJpbl9zaXplX3QgKFMudG9fYmluYWJsZSB0KVxuICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPSBCLmJpbl93cml0ZV90IGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9IFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZilcbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBidWYgfnBvc19yZWYgbiA9IFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBidWYgfnBvc19yZWYgbilcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZTFfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gIGxldCBiaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwgPVxuICAgIG1heWJlX2Fubm90YXRlX3NoYXBlIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5IChCLmJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbClcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbCB0ID0gQi5iaW5fc2l6ZV90IGJpbl9zaXplX2VsIChTLnRvX2JpbmFibGUgdClcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIHQgPVxuICAgIEIuYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICAgIFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZilcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgbilcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlci53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIgPVxuICAgIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IGJpbl9yZWFkX3QgYmluX3JlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gX2J1ZiB+cG9zX3JlZiBfbiAtPlxuICAgICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxLmJpbl9yZWFkZXJfdFwiICFwb3NfcmVmKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzcyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3Muc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUyX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWRfc3BlY1xuXG4gICAgdmFsIG1heWJlX2NhbGxlcl9pZGVudGl0eSA6IFNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICBsZXQgYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsMSBiaW5fc2hhcGVfZWwyID1cbiAgICBtYXliZV9hbm5vdGF0ZV9zaGFwZVxuICAgICAgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHlcbiAgICAgIChCLmJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMilcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIHQgPVxuICAgIEIuYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJ1ZiB+cG9zIHQgPVxuICAgIEIuYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBidWYgfnBvc19yZWYpXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZiBuKVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBfYnVmIH5wb3NfcmVmIF9uIC0+XG4gICAgICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTIuYmluX3JlYWRlcl90XCIgIXBvc19yZWYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZTNfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gIGxldCBiaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIgYmluX3NoYXBlX2VsMyA9XG4gICAgbWF5YmVfYW5ub3RhdGVfc2hhcGVcbiAgICAgIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5XG4gICAgICAoQi5iaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIgYmluX3NoYXBlX2VsMylcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIGJpbl9zaXplX2VsMyB0ID1cbiAgICBCLmJpbl9zaXplX3QgYmluX3NpemVfZWwxIGJpbl9zaXplX2VsMiBiaW5fc2l6ZV9lbDMgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYmluX3dyaXRlX2VsMyBidWYgfnBvcyB0ID1cbiAgICBCLmJpbl93cml0ZV90IGJpbl93cml0ZV9lbDEgYmluX3dyaXRlX2VsMiBiaW5fd3JpdGVfZWwzIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYgPVxuICAgIFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZilcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBiaW5fcmVhZF9lbDMgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYgbilcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIxIGJpbl93cml0ZXIyIGJpbl93cml0ZXIzID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyMS5zaXplIGJpbl93cml0ZXIyLnNpemUgYmluX3dyaXRlcjMuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgICAgYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYmluX3dyaXRlcjMud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiBiaW5fcmVhZGVyMyA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgICAgYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYmluX3JlYWRlcjMucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIF9idWYgfnBvc19yZWYgX24gLT5cbiAgICAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMy5iaW5fcmVhZGVyX3RcIiAhcG9zX3JlZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyIHR5cGVfY2xhc3MzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGUgdHlwZV9jbGFzczMuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyIHR5cGVfY2xhc3MzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXIgdHlwZV9jbGFzczMucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlX3dpdGhfdXVpZF9zcGVjKSA9IE1ha2VfYmluYWJsZV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMV93aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGUxX3dpdGhfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTFfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBTb21lIFMuY2FsbGVyX2lkZW50aXR5XG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTJfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlMl93aXRoX3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUyX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUzX3dpdGhfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTNfd2l0aF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlM19nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZV93aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGVfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUxX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUyX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlMl9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWQgKFMgOiBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTNfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubGV0IHdpdGhfbW9kdWxlX25hbWUgZiB+bW9kdWxlX25hbWUgZnVuY3Rpb25fbmFtZSA9XG4gIG1hdGNoIG1vZHVsZV9uYW1lIHdpdGhcbiAgfCBOb25lIC0+IGYgZnVuY3Rpb25fbmFtZVxuICB8IFNvbWUgbW9kdWxlX25hbWUgLT4gUHJpbnRmLmtzcHJpbnRmIGYgXCIlcy4lc1wiIG1vZHVsZV9uYW1lIGZ1bmN0aW9uX25hbWVcbjs7XG5cbmxldCByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiA9IHdpdGhfbW9kdWxlX25hbWUgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb25cblxubGV0IHJhaXNlX3JlYWRfdG9vX211Y2ggPVxuICB3aXRoX21vZHVsZV9uYW1lXG4gICAgKFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aCBcIiVzOiB0cmllZCB0byByZWFkIG1vcmUgZWxlbWVudHMgdGhhbiBhdmFpbGFibGVcIilcbjs7XG5cbmxldCByYWlzZV9yZWFkX25vdF9lbm91Z2ggPVxuICB3aXRoX21vZHVsZV9uYW1lIChQcmludGYua3NwcmludGYgZmFpbHdpdGggXCIlczogZGlkbid0IHJlYWQgYWxsIGVsZW1lbnRzXCIpXG47O1xuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcIjY1OTIzNzFhLTQ5OTQtMTFlNi05MjNhLTc3NDhlNDE4Mjc2NFwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgX24gPSByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbiAgbGV0IGJpbl93cml0ZXJfdCA9IHsgc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuICBsZXQgYmluX3JlYWRlcl90ID0geyByZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICBsZXQgYmluX3QgPSB7IHNoYXBlID0gYmluX3NoYXBlX3Q7IHdyaXRlciA9IGJpbl93cml0ZXJfdDsgcmVhZGVyID0gYmluX3JlYWRlcl90IH1cbmVuZFxuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZTFfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQgPVxuICAgIFNoYXBlLihcbiAgICAgIGJhc2V0eXBlXG4gICAgICAgIGNhbGxlcl9pZGVudGl0eVxuICAgICAgICBbIGJhc2V0eXBlXG4gICAgICAgICAgICAoVXVpZC5vZl9zdHJpbmcgXCJhYzhhOWZmNC00OTk0LTExZTYtOWExYi05ZmI0ZTkzM2JkOWRcIilcbiAgICAgICAgICAgIFsgUy5iaW5fc2hhcGVfZWwgdCBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgYmluX3NpemVfYSBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBiaW5fd3JpdGVfYSBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYmluX3JlYWRfYSBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2Jpbl9yZWFkX2EgX2J1ZiB+cG9zX3JlZiBfbiA9IHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlciA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlci5zaXplIHYpXG4gICAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlciA9XG4gICAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID0gKGZ1biBidWYgfnBvc19yZWYgX24gLT4gX19iaW5fcmVhZF90X18gYmluX3JlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZiBfbilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzcy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlMiAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZTJfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQxIHQyID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiYjRlNTRhZDItNDk5NC0xMWU2LWI4ZGYtODdjMjk5N2Y5ZjUyXCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIHQxIHQyIF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGJpbl9zaXplX2EgYmluX3NpemVfYiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9iaW5fcmVhZF9hIF9iaW5fcmVhZF9iIF9idWYgfnBvc19yZWYgX24gPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgbiAtPlxuICAgICAgICAgICBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmIG4pXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaXRlcmFibGVfYmluYWJsZTMgKFMgOiBNYWtlX2l0ZXJhYmxlX2JpbmFibGUzX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCB0MSB0MiB0MyA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcImYyMTEyZWRhLWU3ZDctMTFlNi1iYjM2LTA3MmU5Y2UxNTlkYlwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCB0MSB0MiB0MyBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGJpbl9zaXplX2MgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGJpbl9zaXplX2EgYmluX3NpemVfYiBiaW5fc2l6ZV9jIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBiaW5fd3JpdGVfYyBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJpbl93cml0ZV9jIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYmluX3JlYWRfYyBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9iaW5fcmVhZF9hIF9iaW5fcmVhZF9iIF9iaW5fcmVhZF9jIF9idWYgfnBvc19yZWYgX24gPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgYmluX3dyaXRlcjMgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSBiaW5fd3JpdGVyMy5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgICBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBiaW5fd3JpdGVyMy53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyIGJpbl9yZWFkZXIzID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgICBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBiaW5fcmVhZGVyMy5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIG4gLT5cbiAgICAgICAgICAgX19iaW5fcmVhZF90X18gYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJpbl9yZWFkZXIzLnJlYWQgYnVmIH5wb3NfcmVmIG4pXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiB0eXBlX2NsYXNzMyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlIHR5cGVfY2xhc3MzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlciB0eXBlX2NsYXNzMy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzMS5yZWFkZXIgdHlwZV9jbGFzczIucmVhZGVyIHR5cGVfY2xhc3MzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuIiwiKCoqXG4gICBUaGlzIG1vZHVsZSBkZWZpbmVzIGRlZmF1bHQgY29udmVydGVycyBmb3IgdGhlIHR5cGVzIGRlZmluZWQgaW4gdGhlIE9DYW1sXG4gICBzdGFuZGFyZCBsaWJyYXJ5LlxuKilcblxuaW5jbHVkZSBTaXplXG5cbmxldCBiaW5fdW5pdCA9IFR5cGVfY2xhc3MuYmluX3VuaXRcbmxldCBiaW5fc2hhcGVfdW5pdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX3VuaXRcbmxldCBiaW5fd3JpdGVyX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfdW5pdFxubGV0IGJpbl93cml0ZV91bml0ID0gV3JpdGUuYmluX3dyaXRlX3VuaXRcbmxldCBiaW5fcmVhZGVyX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfdW5pdFxubGV0IGJpbl9yZWFkX3VuaXQgPSBSZWFkLmJpbl9yZWFkX3VuaXRcblxubGV0IF9fYmluX3JlYWRfdW5pdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidW5pdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl9ib29sXG5sZXQgYmluX3NoYXBlX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9ib29sXG5sZXQgYmluX3dyaXRlcl9ib29sID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Jvb2xcbmxldCBiaW5fd3JpdGVfYm9vbCA9IFdyaXRlLmJpbl93cml0ZV9ib29sXG5sZXQgYmluX3JlYWRlcl9ib29sID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Jvb2xcbmxldCBiaW5fcmVhZF9ib29sID0gUmVhZC5iaW5fcmVhZF9ib29sXG5cbmxldCBfX2Jpbl9yZWFkX2Jvb2xfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJvb2xcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9zdHJpbmdcbmxldCBiaW5fc2hhcGVfc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfc3RyaW5nXG5sZXQgYmluX3dyaXRlcl9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfc3RyaW5nXG5sZXQgYmluX3dyaXRlX3N0cmluZyA9IFdyaXRlLmJpbl93cml0ZV9zdHJpbmdcbmxldCBiaW5fcmVhZGVyX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9zdHJpbmdcbmxldCBiaW5fcmVhZF9zdHJpbmcgPSBSZWFkLmJpbl9yZWFkX3N0cmluZ1xuXG5sZXQgX19iaW5fcmVhZF9zdHJpbmdfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInN0cmluZ1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fYnl0ZXNcbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9ieXRlc1xubGV0IGJpbl93cml0ZXJfYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYnl0ZXNcbmxldCBiaW5fd3JpdGVfYnl0ZXMgPSBXcml0ZS5iaW5fd3JpdGVfYnl0ZXNcbmxldCBiaW5fcmVhZGVyX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2J5dGVzXG5sZXQgYmluX3JlYWRfYnl0ZXMgPSBSZWFkLmJpbl9yZWFkX2J5dGVzXG5cbmxldCBfX2Jpbl9yZWFkX2J5dGVzX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJieXRlc1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl9jaGFyXG5sZXQgYmluX3NoYXBlX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9jaGFyXG5sZXQgYmluX3dyaXRlcl9jaGFyID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2NoYXJcbmxldCBiaW5fd3JpdGVfY2hhciA9IFdyaXRlLmJpbl93cml0ZV9jaGFyXG5sZXQgYmluX3JlYWRlcl9jaGFyID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2NoYXJcbmxldCBiaW5fcmVhZF9jaGFyID0gUmVhZC5iaW5fcmVhZF9jaGFyXG5cbmxldCBfX2Jpbl9yZWFkX2NoYXJfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImNoYXJcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9pbnQgPSBUeXBlX2NsYXNzLmJpbl9pbnRcbmxldCBiaW5fc2hhcGVfaW50ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50XG5sZXQgYmluX3dyaXRlcl9pbnQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfaW50XG5sZXQgYmluX3dyaXRlX2ludCA9IFdyaXRlLmJpbl93cml0ZV9pbnRcbmxldCBiaW5fcmVhZGVyX2ludCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnRcbmxldCBiaW5fcmVhZF9pbnQgPSBSZWFkLmJpbl9yZWFkX2ludFxubGV0IF9fYmluX3JlYWRfaW50X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9IENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJpbnRcIiAhcG9zX3JlZlxubGV0IGJpbl9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0XG5sZXQgYmluX3NoYXBlX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXRcbmxldCBiaW5fd3JpdGVyX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0XG5sZXQgYmluX3dyaXRlX2Zsb2F0ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0XG5sZXQgYmluX3JlYWRlcl9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdFxubGV0IGJpbl9yZWFkX2Zsb2F0ID0gUmVhZC5iaW5fcmVhZF9mbG9hdFxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXRhcnJheVxubGV0IGJpbl9zaGFwZV9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXRhcnJheVxubGV0IGJpbl93cml0ZXJfZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdGFycmF5XG5sZXQgYmluX3dyaXRlX2Zsb2F0YXJyYXkgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRhcnJheVxubGV0IGJpbl9yZWFkZXJfZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdGFycmF5XG5sZXQgYmluX3JlYWRfZmxvYXRhcnJheSA9IFJlYWQuYmluX3JlYWRfZmxvYXRhcnJheVxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdGFycmF5X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdGFycmF5XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5faW50MzIgPSBUeXBlX2NsYXNzLmJpbl9pbnQzMlxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2ludDMyXG5sZXQgYmluX3dyaXRlcl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9pbnQzMlxubGV0IGJpbl93cml0ZV9pbnQzMiA9IFdyaXRlLmJpbl93cml0ZV9pbnQzMlxubGV0IGJpbl9yZWFkZXJfaW50MzIgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfaW50MzJcbmxldCBiaW5fcmVhZF9pbnQzMiA9IFJlYWQuYmluX3JlYWRfaW50MzJcblxubGV0IF9fYmluX3JlYWRfaW50MzJfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImludDMyXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5faW50NjQgPSBUeXBlX2NsYXNzLmJpbl9pbnQ2NFxubGV0IGJpbl9zaGFwZV9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2ludDY0XG5sZXQgYmluX3dyaXRlcl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9pbnQ2NFxubGV0IGJpbl93cml0ZV9pbnQ2NCA9IFdyaXRlLmJpbl93cml0ZV9pbnQ2NFxubGV0IGJpbl9yZWFkZXJfaW50NjQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfaW50NjRcbmxldCBiaW5fcmVhZF9pbnQ2NCA9IFJlYWQuYmluX3JlYWRfaW50NjRcblxubGV0IF9fYmluX3JlYWRfaW50NjRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImludDY0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fbmF0aXZlaW50XG5sZXQgYmluX3NoYXBlX25hdGl2ZWludCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX25hdGl2ZWludFxubGV0IGJpbl93cml0ZXJfbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX25hdGl2ZWludFxubGV0IGJpbl93cml0ZV9uYXRpdmVpbnQgPSBXcml0ZS5iaW5fd3JpdGVfbmF0aXZlaW50XG5sZXQgYmluX3JlYWRlcl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbmF0aXZlaW50XG5sZXQgYmluX3JlYWRfbmF0aXZlaW50ID0gUmVhZC5iaW5fcmVhZF9uYXRpdmVpbnRcblxubGV0IF9fYmluX3JlYWRfbmF0aXZlaW50X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJuYXRpdmVpbnRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWYgPSBUeXBlX2NsYXNzLmJpbl9yZWZcbmxldCBiaW5fc2hhcGVfcmVmID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfcmVmXG5sZXQgYmluX3dyaXRlcl9yZWYgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfcmVmXG5sZXQgYmluX3dyaXRlX3JlZiA9IFdyaXRlLmJpbl93cml0ZV9yZWZcbmxldCBiaW5fcmVhZGVyX3JlZiA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9yZWZcbmxldCBiaW5fcmVhZF9yZWYgPSBSZWFkLmJpbl9yZWFkX3JlZlxuXG5sZXQgX19iaW5fcmVhZF9yZWZfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInJlZlwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2xhenlfdCA9IFR5cGVfY2xhc3MuYmluX2xhenlcbmxldCBiaW5fc2hhcGVfbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbGF6eVxubGV0IGJpbl93cml0ZXJfbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2xhenlcbmxldCBiaW5fd3JpdGVfbGF6eV90ID0gV3JpdGUuYmluX3dyaXRlX2xhenlcbmxldCBiaW5fcmVhZGVyX2xhenlfdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9sYXp5XG5sZXQgYmluX3JlYWRfbGF6eV90ID0gUmVhZC5iaW5fcmVhZF9sYXp5XG5cbmxldCBfX2Jpbl9yZWFkX2xhenlfdF9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGF6eVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2xhenkgPSBUeXBlX2NsYXNzLmJpbl9sYXp5XG5sZXQgYmluX3NoYXBlX2xhenkgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9sYXp5XG5sZXQgYmluX3dyaXRlcl9sYXp5ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2xhenlcbmxldCBiaW5fd3JpdGVfbGF6eSA9IFdyaXRlLmJpbl93cml0ZV9sYXp5XG5sZXQgYmluX3JlYWRlcl9sYXp5ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2xhenlcbmxldCBiaW5fcmVhZF9sYXp5ID0gUmVhZC5iaW5fcmVhZF9sYXp5XG5cbmxldCBfX2Jpbl9yZWFkX2xhenlfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImxhenlcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl9vcHRpb25cbmxldCBiaW5fc2hhcGVfb3B0aW9uID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfb3B0aW9uXG5sZXQgYmluX3dyaXRlcl9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfb3B0aW9uXG5sZXQgYmluX3dyaXRlX29wdGlvbiA9IFdyaXRlLmJpbl93cml0ZV9vcHRpb25cbmxldCBiaW5fcmVhZGVyX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9vcHRpb25cbmxldCBiaW5fcmVhZF9vcHRpb24gPSBSZWFkLmJpbl9yZWFkX29wdGlvblxuXG5sZXQgX19iaW5fcmVhZF9vcHRpb25fXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm9wdGlvblwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl9saXN0XG5sZXQgYmluX3NoYXBlX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9saXN0XG5sZXQgYmluX3dyaXRlcl9saXN0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2xpc3RcbmxldCBiaW5fd3JpdGVfbGlzdCA9IFdyaXRlLmJpbl93cml0ZV9saXN0XG5sZXQgYmluX3JlYWRlcl9saXN0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2xpc3RcbmxldCBiaW5fcmVhZF9saXN0ID0gUmVhZC5iaW5fcmVhZF9saXN0XG5cbmxldCBfX2Jpbl9yZWFkX2xpc3RfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImxpc3RcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9hcnJheSA9IFR5cGVfY2xhc3MuYmluX2FycmF5XG5sZXQgYmluX3NoYXBlX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYXJyYXlcbmxldCBiaW5fd3JpdGVyX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2FycmF5XG5sZXQgYmluX3dyaXRlX2FycmF5ID0gV3JpdGUuYmluX3dyaXRlX2FycmF5XG5sZXQgYmluX3JlYWRlcl9hcnJheSA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9hcnJheVxubGV0IGJpbl9yZWFkX2FycmF5ID0gUmVhZC5iaW5fcmVhZF9hcnJheVxuXG5sZXQgX19iaW5fcmVhZF9hcnJheV9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiYXJyYXlcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5faGFzaHRibFxubGV0IGJpbl9zaGFwZV9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaGFzaHRibFxubGV0IGJpbl93cml0ZXJfaGFzaHRibCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9oYXNodGJsXG5sZXQgYmluX3dyaXRlX2hhc2h0YmwgPSBXcml0ZS5iaW5fd3JpdGVfaGFzaHRibFxubGV0IGJpbl9yZWFkZXJfaGFzaHRibCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9oYXNodGJsXG5sZXQgYmluX3JlYWRfaGFzaHRibCA9IFJlYWQuYmluX3JlYWRfaGFzaHRibFxuXG5sZXQgX19iaW5fcmVhZF9oYXNodGJsX18gX2YgX2cgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJoYXNodGJsXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fYmlnc3RyaW5nXG5sZXQgYmluX3NoYXBlX2JpZ3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2JpZ3N0cmluZ1xubGV0IGJpbl93cml0ZXJfYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2JpZ3N0cmluZ1xubGV0IGJpbl93cml0ZV9iaWdzdHJpbmcgPSBXcml0ZS5iaW5fd3JpdGVfYmlnc3RyaW5nXG5sZXQgYmluX3JlYWRlcl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfYmlnc3RyaW5nXG5sZXQgYmluX3JlYWRfYmlnc3RyaW5nID0gUmVhZC5iaW5fcmVhZF9iaWdzdHJpbmdcblxubGV0IF9fYmluX3JlYWRfYmlnc3RyaW5nX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJiaWdzdHJpbmdcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9tYXRcbmxldCBiaW5fc2hhcGVfbWF0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbWF0XG5sZXQgYmluX3dyaXRlcl9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbWF0XG5sZXQgYmluX3dyaXRlX21hdCA9IFdyaXRlLmJpbl93cml0ZV9tYXRcbmxldCBiaW5fcmVhZGVyX21hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9tYXRcbmxldCBiaW5fcmVhZF9tYXQgPSBSZWFkLmJpbl9yZWFkX21hdFxubGV0IF9fYmluX3JlYWRfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9IENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJtYXRcIiAhcG9zX3JlZlxubGV0IGJpbl9mbG9hdDMyX21hdCA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQzMl9tYXRcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfbWF0ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX21hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDMyX21hdFxubGV0IGJpbl9yZWFkX2Zsb2F0MzJfbWF0ID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX21hdFxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDMyX21hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl9tYXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9mbG9hdDY0X21hdCA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQ2NF9tYXRcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfbWF0ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X21hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDY0X21hdFxubGV0IGJpbl9yZWFkX2Zsb2F0NjRfbWF0ID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X21hdFxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDY0X21hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF9tYXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl92ZWMgPSBUeXBlX2NsYXNzLmJpbl92ZWNcbmxldCBiaW5fc2hhcGVfdmVjID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfdmVjXG5sZXQgYmluX3dyaXRlcl92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfdmVjXG5sZXQgYmluX3dyaXRlX3ZlYyA9IFdyaXRlLmJpbl93cml0ZV92ZWNcbmxldCBiaW5fcmVhZGVyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl92ZWNcbmxldCBiaW5fcmVhZF92ZWMgPSBSZWFkLmJpbl9yZWFkX3ZlY1xubGV0IF9fYmluX3JlYWRfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9IENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ2ZWNcIiAhcG9zX3JlZlxubGV0IGJpbl9mbG9hdDMyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQzMl92ZWNcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3dyaXRlX2Zsb2F0MzJfdmVjID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDMyX3ZlY1xubGV0IGJpbl9yZWFkX2Zsb2F0MzJfdmVjID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX3ZlY1xuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDMyX3ZlY19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl92ZWNcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9mbG9hdDY0X3ZlYyA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXQ2NF92ZWNcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfdmVjID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdDY0X3ZlY1xubGV0IGJpbl9yZWFkX2Zsb2F0NjRfdmVjID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X3ZlY1xuXG5sZXQgX19iaW5fcmVhZF9mbG9hdDY0X3ZlY19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF92ZWNcIiAhcG9zX3JlZlxuOztcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSBNZDVfbGliXG5cbiAgICBsZXQgYmluX3NoYXBlX3QgPVxuICAgICAgU2hhcGUuYmFzZXR5cGUgKFNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiZjZiZGNkZDAtOWY3NS0xMWU2LTlhN2UtZDMwMjA0MjhlZmVkXCIpIFtdXG4gICAgOztcblxuICAgIGxldCBiaW5fc2l6ZV90ID0gU2l6ZS5iaW5fc2l6ZV9tZDVcbiAgICBsZXQgYmluX3dyaXRlX3QgPSBXcml0ZS5iaW5fd3JpdGVfbWQ1XG4gICAgbGV0IGJpbl9yZWFkX3QgPSBSZWFkLmJpbl9yZWFkX21kNVxuXG4gICAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgX3ZkaWdlc3QgPVxuICAgICAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIlNoYXBlLk1kNS50XCIgIXBvc19yZWZcbiAgICA7O1xuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgICgqIHdlIGFzc3VtZSB0aGlzIHR5cGUgdG8gaGF2ZSBhIHN0YWJsZSBmb3JtYXQgKilcbiAgICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuIiwib3BlbiBDb21tb25cblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgYmluX3NoYXBlX3QgdCA9XG4gICAgU2hhcGUuKGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIjg1YTI1NTdlLTQ5MGEtMTFlNi05OGFjLTRiODk1M2Q1MjVmZVwiKSBbIHQgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIGEgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBiaW5fc2l6ZV9hIGFcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYnVmIH5wb3MgYSA9XG4gICAgbGV0IHN0YXJ0X2EgPSBwb3MgKyBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgICBsZXQgZW5kX2EgPSBiaW5fd3JpdGVfYSBidWYgfnBvczpzdGFydF9hIGEgaW5cbiAgICBsZXQgc2l6ZSA9IGVuZF9hIC0gc3RhcnRfYSBpblxuICAgIGxldCB3cml0dGVuID0gVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zIHNpemUgaW5cbiAgICBhc3NlcnQgKHdyaXR0ZW4gPSBzdGFydF9hKTtcbiAgICBlbmRfYVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgZXhwZWN0ZWRfc2l6ZSA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGxldCBzdGFydF9hID0gIXBvc19yZWYgaW5cbiAgICBsZXQgYSA9IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmIGluXG4gICAgbGV0IGVuZF9hID0gIXBvc19yZWYgaW5cbiAgICBpZiBlbmRfYSAtIHN0YXJ0X2EgPD4gZXhwZWN0ZWRfc2l6ZVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgICBcIkJpbl9wcm90LkJsb2IuYmluX3JlYWRfdDogc2l6ZSAoJWQpIDw+IGV4cGVjdGVkICglZClcIlxuICAgICAgICAgICAoZW5kX2EgLSBzdGFydF9hKVxuICAgICAgICAgICBleHBlY3RlZF9zaXplKTtcbiAgICBhXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF8gXyB+cG9zX3JlZiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi50XCIgIXBvc19yZWZcbiAgOztcbmVuZFxuXG50eXBlICdhIGlkID0gJ2FcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgIG1vZHVsZSBCaW5hYmxlID0gVFxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgb2ZfYmluYWJsZSB0ID0gdFxuICAgIGxldCB0b19iaW5hYmxlIHQgPSB0XG4gIGVuZClcblxubW9kdWxlIE9wYXF1ZSA9IHN0cnVjdFxuICAoKiBbQmlnc3RyaW5nXSBhbmQgW1N0cmluZ10gc2hhcmUgW2Jpbl9zaGFwZV90XSBiZWNhdXNlIHRoZXkgaGF2ZSBleGFjdGx5IHRoZSBzYW1lXG4gICAgIHNlcmlhbGl6YXRpb24gZm9ybWF0IGFuZCB0aGV5IGRlbm90ZSB0aGUgc2FtZSB2YWx1ZXMuXG5cbiAgICAgSW4gZmFjdCBhbG1vc3QgY2VydGFpbmx5IFtCbG9iLnRdIGl0c2VsZiBzaG91bGQgaGF2ZSB0aGUgc2FtZSBiaW5fc2hhcGVfdCBhcyB3ZWxsLiAqKVxuICBsZXQgYmluX3NoYXBlX3QgPVxuICAgIFNoYXBlLihiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCI4NWExZjc2ZS00OTBhLTExZTYtODZhOS01YmVmNTg1ZjI2MDJcIikgW10pXG4gIDs7XG5cbiAgbW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICAgICgqIFtidWZdIGlzIHRoZSBiaW4taW8gZGF0YSBleGNsdWRpbmcgdGhlIHNpemUgaGVhZGVyLiBXaGVuIChkZS0pc2VyaWFsaXplZCwgdGhlIHNpemVcbiAgICAgICBoZWFkZXIgaXMgaW5jbHVkZWQuICopXG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGJ1ZlxuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPSBiaW5fc2hhcGVfdFxuICAgICAgbGV0IGJpbl9zaXplX3QgdCA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIGJ1Zl9sZW4gdFxuXG4gICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgICAgIGxldCBzaXplID0gYnVmX2xlbiB0IGluXG4gICAgICAgIGxldCBwb3MgPSBVdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3Mgc2l6ZSBpblxuICAgICAgICBibGl0X2J1ZiB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3Mgc2l6ZTtcbiAgICAgICAgcG9zICsgc2l6ZVxuICAgICAgOztcblxuICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICAgICAgbGV0IHNpemUgPSBVdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgbGV0IHQgPSBjcmVhdGVfYnVmIHNpemUgaW5cbiAgICAgICAgYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6IXBvc19yZWYgfmRzdDp0IH5kc3RfcG9zOjAgc2l6ZTtcbiAgICAgICAgcG9zX3JlZiA6PSAhcG9zX3JlZiArIHNpemU7XG4gICAgICAgIHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfIH5wb3NfcmVmID1cbiAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5PcGFxdWUudFwiICFwb3NfcmVmXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBVdGlscy5PZl9taW5pbWFsIChUKVxuXG4gICAgbGV0IHRvX29wYXF1ZSBibG9iIGJpbl93cml0ZXIgPSBVdGlscy5iaW5fZHVtcCBiaW5fd3JpdGVyIGJsb2JcbiAgICBsZXQgb2Zfb3BhcXVlX2V4biAodCA6IHQpIGJpbl9yZWFkZXIgPSBiaW5fcmVhZGVyLlR5cGVfY2xhc3MucmVhZCB0IH5wb3NfcmVmOihyZWYgMClcblxuICAgICgqIEJpZ3N0cmluZ3MgYXJlIGEgcHJpbWl0aXZlIHR5cGUgdGhhdCBwb2x5bW9ycGhpYyBjb21wYXJlIGhhbmRsZXMgd2VsbC4gKilcbiAgICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IGJ1ZiAtPiBidWYgLT4gaW50KVxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgIFBweF9zZXhwX2NvbnZfbGliLlNleHAuQXRvbSAob2Zfb3BhcXVlX2V4biB0IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9zdHJpbmcpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID0gYmluX3NoYXBlX3RcbiAgICAgIGxldCBiaW5fc2l6ZV90IHQgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBTdHJpbmcubGVuZ3RoIHRcblxuICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPVxuICAgICAgICBsZXQgc2l6ZSA9IFN0cmluZy5sZW5ndGggdCBpblxuICAgICAgICBsZXQgcG9zID0gVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zIHNpemUgaW5cbiAgICAgICAgQ29tbW9uLmJsaXRfc3RyaW5nX2J1ZiB0IH5zcmNfcG9zOjAgYnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gICAgICAgIHBvcyArIHNpemVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdHJpbmdfb2ZfYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgICBibGl0X2J1Zl9ieXRlcyB+c3JjX3Bvczpwb3MgYnVmIH5kc3RfcG9zOjAgc3RyIH5sZW47XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG4gICAgICA7O1xuXG4gICAgICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgICAgICBsZXQgbGVuID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIGxldCB0ID0gc3RyaW5nX29mX2JpZ3N0cmluZyBidWYgfnBvczohcG9zX3JlZiB+bGVuIGluXG4gICAgICAgIHBvc19yZWYgOj0gIXBvc19yZWYgKyBsZW47XG4gICAgICAgIHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfIH5wb3NfcmVmID1cbiAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5PcGFxdWUudFwiICFwb3NfcmVmXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBVdGlscy5PZl9taW5pbWFsIChUKVxuXG4gICAgbGV0IGxlbmd0aCB0ID0gU3RyaW5nLmxlbmd0aCB0XG5cbiAgICBsZXQgdG9fb3BhcXVlIH5idWYgdiBiaW5fd3JpdGVyX3YgOiB0ID1cbiAgICAgIGxldCBwb3MgPSAwIGluXG4gICAgICBsZXQgbGVuID0gYmluX3dyaXRlcl92LlR5cGVfY2xhc3Mud3JpdGUgYnVmIH5wb3MgdiBpblxuICAgICAgc3RyaW5nX29mX2JpZ3N0cmluZyBidWYgfnBvcyB+bGVuXG4gICAgOztcblxuICAgIGxldCBvZl9vcGFxdWVfZXhuIH5idWYgKHQgOiB0KSBiaW5fcmVhZGVyX3YgPVxuICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggdCBpblxuICAgICAgQ29tbW9uLmJsaXRfc3RyaW5nX2J1ZiB0IGJ1ZiB+bGVuO1xuICAgICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgICAgbGV0IHJlcyA9IGJpbl9yZWFkZXJfdi5UeXBlX2NsYXNzLnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgICBpZiAhcG9zX3JlZiA8PiBsZW5cbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICBcIk9wYXF1ZSBibG9iIGhhcyAlZCBieXRlcyBidXQgW29mX29wYXF1ZV9leG5dIHJlYWQgJWRcIlxuICAgICAgICAgICAgbGVuXG4gICAgICAgICAgICAhcG9zX3JlZlxuICAgICAgICBpblxuICAgICAgICBmYWlsd2l0aCBlcnJvcilcbiAgICAgIGVsc2UgcmVzXG4gICAgOztcblxuICAgICgqIFN0cmluZ3MgYXJlIGEgcHJpbWl0aXZlIHR5cGUgdGhhdCBwb2x5bW9ycGhpYyBjb21wYXJlIGhhbmRsZXMgd2VsbC4gKilcbiAgICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50KVxuICAgIGxldCBzZXhwX29mX3QgPSBQcHhfc2V4cF9jb252X2xpYi5Db252LnNleHBfb2Zfc3RyaW5nXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBJZ25vcmVkID0gc3RydWN0XG4gICgqIFRoZSByZXByZXNlbnRhdGlvbiBvZiBhbiBpZ25vcmVkIHZhbHVlIGlzIGp1c3QgdGhlIHNpemUgb2YgdGhlIHZhbHVlIGl0IHdhcyBjcmVhdGVkXG4gICAgIGZyb20gKGkuZS4sIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB3ZXJlIGlnbm9yZWQgZnJvbSB0aGUgYnVmZmVyIHdlIHdlcmUgcmVhZGluZ1xuICAgICAtLSB3ZSBleGNsdWRlIHRoZSA4IGJ5dGUgc2l6ZSBoZWFkZXIgZnJvbSB3aGljaCB0aGUgc2l6ZSB3YXMgcmVhZCkuICopXG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBiaW5fc2l6ZV90IHNpemUgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBzaXplXG5cbiAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgc2l6ZSA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgIHBvc19yZWYgOj0gIXBvc19yZWYgKyBzaXplO1xuICAgIHNpemVcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gXyB+cG9zX3JlZiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5JZ25vcmVkLnRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgPSB7IFR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbmVuZFxuIiwibW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB2YWwgcHJlX3Rlc3RfaG9vayA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbmxldCBwcmVfdGVzdF9ob29rID0gaWdub3JlXG4iLCJbJSVpbXBvcnQgXCJjb25maWcuaFwiXVxuXG5vcGVuISBCYXNlXG5cblslJWlmZGVmIEpTQ19BUkNIX1NJWFRZRk9VUl1cblxuZXh0ZXJuYWwgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXG4gIDogIHVuaXRcbiAgLT4gSW50NjMudFxuICA9IFwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXCJcbltAQG5vYWxsb2NdXG5cblslJWVsc2VdXG5cbmV4dGVybmFsIG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuICA6ICB1bml0XG4gIC0+IEludDYzLnRcbiAgPSBcInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1wiXG5cblslJWVuZGlmXVxuWyUlaWZkZWYgSlNDX1BPU0lYX1RJTUVSU11cblxubGV0W0Bjb2xkXSBnZXR0aW1lX2ZhaWxlZCAoKSA9IGZhaWx3aXRoIFwiY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSkgZmFpbGVkXCJcblxuWyUlZWxzZV1cblxubGV0W0Bjb2xkXSBnZXR0aW1lX2ZhaWxlZCAoKSA9IGZhaWx3aXRoIFwiZ2V0dGltZW9mZGF5IGZhaWxlZFwiXG5cblslJWVuZGlmXVxuXG5sZXQgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSA9XG4gIGxldCB0ID0gbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvICgpIGluXG4gIGlmIEludDYzLiggPD4gKSB0IEludDYzLnplcm8gdGhlbiB0IGVsc2UgZ2V0dGltZV9mYWlsZWQgKClcbjs7XG4iLCJtb2R1bGUgVGVzdF9yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFN1Y2Nlc3NcbiAgICB8IEZhaWx1cmVcbiAgICB8IEVycm9yXG5cbiAgbGV0IHRvX2V4aXRfY29kZSA9IGZ1bmN0aW9uXG4gICAgfCBTdWNjZXNzIC0+IDBcbiAgICB8IEZhaWx1cmUgLT4gMlxuICAgIHwgRXJyb3IgLT4gMVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3VjY2VzcyAtPiBcInN1Y2Nlc3NcIlxuICAgIHwgRmFpbHVyZSAtPiBcImZhaWx1cmVcIlxuICAgIHwgRXJyb3IgLT4gXCJlcnJvclwiXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmUgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBTdWNjZXNzLCBTdWNjZXNzIC0+IFN1Y2Nlc3NcbiAgICB8IEVycm9yLCBfIHwgXywgRXJyb3IgLT4gRXJyb3JcbiAgICB8IEZhaWx1cmUsIF8gfCBfLCBGYWlsdXJlIC0+IEZhaWx1cmVcbiAgOztcblxuICBsZXQgY29tYmluZV9hbGwgdHMgPSBMaXN0LmZvbGRfbGVmdCBjb21iaW5lIFN1Y2Nlc3MgdHNcbmVuZFxuXG5sZXQgcGFyc2VfYXJndiBhcmd2IGwgZiBtc2cgPVxuICB0cnkgQXJnLnBhcnNlX2FyZ3YgYXJndiBsIGYgbXNnIHdpdGhcbiAgfCBBcmcuQmFkIG1zZyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwiJXNcIiBtc2c7XG4gICAgZXhpdCAxXG4gIHwgQXJnLkhlbHAgbXNnIC0+XG4gICAgUHJpbnRmLnByaW50ZiBcIiVzXCIgbXNnO1xuICAgIGV4aXQgMFxuOztcblxudHlwZSBkZXNjciA9IHN0cmluZ1xuXG5sZXQgdGVzdF9tb2R1bGVzX3JhbiA9IHJlZiAwXG5sZXQgdGVzdF9tb2R1bGVzX2ZhaWxlZCA9IHJlZiAwXG5sZXQgdGVzdHNfcmFuID0gcmVmIDBcbmxldCB0ZXN0c19mYWlsZWQgPSByZWYgMFxubGV0IGR5bmFtaWNfbGliIDogc3RyaW5nIG9wdGlvbiByZWYgPSByZWYgTm9uZVxuXG50eXBlIGZpbGVuYW1lID0gc3RyaW5nXG50eXBlIGxpbmVfbnVtYmVyID0gaW50XG50eXBlIHN0YXJ0X3BvcyA9IGludFxudHlwZSBlbmRfcG9zID0gaW50XG50eXBlIGNvbmZpZyA9IChtb2R1bGUgSW5saW5lX3Rlc3RfY29uZmlnLlMpXG5cbnR5cGUgJ2EgdGVzdF9mdW5jdGlvbl9hcmdzID1cbiAgY29uZmlnOmNvbmZpZ1xuICAtPiBkZXNjcjpkZXNjciBMYXp5LnRcbiAgLT4gdGFnczpzdHJpbmcgbGlzdFxuICAtPiBmaWxlbmFtZTpmaWxlbmFtZVxuICAtPiBsaW5lX251bWJlcjpsaW5lX251bWJlclxuICAtPiBzdGFydF9wb3M6c3RhcnRfcG9zXG4gIC0+IGVuZF9wb3M6ZW5kX3Bvc1xuICAtPiAnYVxuXG5tb2R1bGUgVGFnX3ByZWRpY2F0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcmVxdWlyZWRfdGFncyA6IHN0cmluZyBsaXN0XG4gICAgOyBkcm9wcGVkX3RhZ3MgOiBzdHJpbmcgbGlzdFxuICAgIH1cblxuICBsZXQgaW5pdGlhbCA9IHsgcmVxdWlyZWRfdGFncyA9IFtdOyBkcm9wcGVkX3RhZ3MgPSBbIFwiZGlzYWJsZWRcIiBdIH1cblxuICBsZXQgZHJvcCB0IHRhZyA9XG4gICAgeyBkcm9wcGVkX3RhZ3MgPSB0YWcgOjogdC5kcm9wcGVkX3RhZ3NcbiAgICA7IHJlcXVpcmVkX3RhZ3MgPSBMaXN0LmZpbHRlciAoKCA8PiApIHRhZykgdC5yZXF1aXJlZF90YWdzXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXF1aXJlIHQgdGFnID1cbiAgICB7IGRyb3BwZWRfdGFncyA9IExpc3QuZmlsdGVyICgoIDw+ICkgdGFnKSB0LmRyb3BwZWRfdGFnc1xuICAgIDsgcmVxdWlyZWRfdGFncyA9IHRhZyA6OiB0LnJlcXVpcmVkX3RhZ3NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGVudGlyZV9tb2R1bGVfZGlzYWJsZWQgdCB+cGFydGlhbF90YWdzOnRhZ3MgPVxuICAgIExpc3QuZXhpc3RzIChmdW4gZHJvcHBlZCAtPiBMaXN0Lm1lbSBkcm9wcGVkIHRhZ3MpIHQuZHJvcHBlZF90YWdzXG4gIDs7XG5cbiAgbGV0IGRpc2FibGVkIHQgfmNvbXBsZXRlX3RhZ3M6dGFncyA9XG4gICAgTGlzdC5leGlzdHMgKGZ1biByZXEgLT4gbm90IChMaXN0Lm1lbSByZXEgdGFncykpIHQucmVxdWlyZWRfdGFnc1xuICAgIHx8IExpc3QuZXhpc3RzIChmdW4gZHJvcHBlZCAtPiBMaXN0Lm1lbSBkcm9wcGVkIHRhZ3MpIHQuZHJvcHBlZF90YWdzXG4gIDs7XG5lbmRcblxudHlwZSB3aGljaF90ZXN0cyA9XG4gIHsgbGlibmFtZSA6IHN0cmluZ1xuICA7IG9ubHlfdGVzdF9sb2NhdGlvbiA6IChmaWxlbmFtZSAqIGxpbmVfbnVtYmVyIG9wdGlvbiAqIGJvb2wgcmVmKSBsaXN0XG4gIDsgbmFtZV9maWx0ZXIgOiBzdHJpbmcgbGlzdFxuICA7IHdoaWNoX3RhZ3MgOiBUYWdfcHJlZGljYXRlLnRcbiAgfVxuXG50eXBlIHRlc3RfbW9kZSA9XG4gIHsgd2hpY2hfdGVzdHMgOiB3aGljaF90ZXN0c1xuICA7IHdoYXRfdG9fZG8gOiBbIGBSdW5fcGFydGl0aW9uIG9mIHN0cmluZyBvcHRpb24gfCBgTGlzdF9wYXJ0aXRpb25zIF1cbiAgfVxuXG5tb2R1bGUgQWN0aW9uIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgWyBgSWdub3JlXG4gICAgfCBgVGVzdF9tb2RlIG9mIHRlc3RfbW9kZVxuICAgIF1cblxuICB2YWwgZ2V0IDogdW5pdCAtPiB0XG4gIHZhbCBzZXQgOiB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYElnbm9yZVxuICAgIHwgYFRlc3RfbW9kZSBvZiB0ZXN0X21vZGVcbiAgICBdXG5cbiAgbGV0IGFjdGlvbiA6IHQgcmVmID0gcmVmIGBJZ25vcmVcblxuICBsZXQgZm9yY2VfZHJvcCA9XG4gICAgdHJ5XG4gICAgICBpZ25vcmUgKFN5cy5nZXRlbnYgXCJGT1JDRV9EUk9QX0lOTElORV9URVNUXCIgOiBzdHJpbmcpO1xuICAgICAgdHJ1ZVxuICAgIHdpdGhcbiAgICB8IE5vdF9mb3VuZCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBnZXQgKCkgPVxuICAgICgqIFRoaXMgaXMgdXNlZnVsIHdoZW4gY29tcGlsaW5nIHRvIGphdmFzY3JpcHQuXG4gICAgICAgSnNfb2Zfb2NhbWwgY2FuIHN0YXRpY2FsbHkgZXZhbHVhdGUgW1N5cy5nZXRlbnYgXCJGT1JDRV9EUk9QX0lOTElORV9URVNUXCJdXG4gICAgICAgYW5kIGlubGluZSB0aGUgcmVzdWx0IChbYElnbm9yZV0pIHdoZW5ldmVyIFtnZXQgKCldIGlzIGNhbGxlZC5cbiAgICAgICBVbml0IHRlc3RzIGNhbiB0aGVuIGJlIHRyZWF0ZWQgYXMgZGVhZGNvZGUgc2luY2UgdGhlIGFyZ3VtZW50IFtmXSBvZiB0aGUgW3Rlc3RdXG4gICAgICAgZnVuY3Rpb24gYmVsb3cgaXMgbmV2ZXIgdXNlZC4gKilcbiAgICBpZiBmb3JjZV9kcm9wIHRoZW4gYElnbm9yZSBlbHNlICFhY3Rpb25cbiAgOztcblxuICBsZXQgc2V0IHYgPSBhY3Rpb24gOj0gdlxuZW5kXG5cbm1vZHVsZSBQYXJ0aXRpb24gOiBzaWdcbiAgdmFsIGZvdW5kX3Rlc3QgOiB1bml0IC0+IHVuaXRcbiAgdmFsIHNldF9jdXJyZW50IDogc3RyaW5nIC0+IHVuaXRcbiAgdmFsIGlzX2N1cnJlbnQgOiBzdHJpbmcgb3B0aW9uIC0+IGJvb2xcbiAgdmFsIGFsbCA6IHVuaXQgLT4gc3RyaW5nIGxpc3RcbmVuZCA9IHN0cnVjdFxuICBsZXQgYWxsID0gSGFzaHRibC5jcmVhdGUgMjNcbiAgbGV0IGN1cnJlbnQgPSByZWYgXCJcIlxuICBsZXQgc2V0X2N1cnJlbnQgeCA9IGN1cnJlbnQgOj0geFxuXG4gIGxldCBmb3VuZF90ZXN0ICgpID1cbiAgICBpZiAhY3VycmVudCA8PiBcIlwiICYmIG5vdCAoSGFzaHRibC5tZW0gYWxsICFjdXJyZW50KSB0aGVuIEhhc2h0YmwuYWRkIGFsbCAhY3VycmVudCAoKVxuICA7O1xuXG4gIGxldCBpc19jdXJyZW50ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBwIC0+IHAgPSAhY3VycmVudFxuICA7O1xuXG4gIGxldCBhbGwgKCkgPSBMaXN0LnNvcnQgU3RyaW5nLmNvbXBhcmUgKEhhc2h0YmwuZm9sZCAoZnVuIGsgKCkgYWNjIC0+IGsgOjogYWNjKSBhbGwgW10pXG5lbmRcblxubW9kdWxlIE1vZHVsZV9jb250ZXh0ID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSBvbmVfbW9kdWxlID1cbiAgICAgIHsgZGVzY3IgOiBzdHJpbmdcbiAgICAgIDsgdGFncyA6IHN0cmluZyBsaXN0XG4gICAgICB9XG5cbiAgICB0eXBlIHQgPSBvbmVfbW9kdWxlIGxpc3RcblxuICAgIGxldCBkZXNjciB0ID0gTGlzdC5tYXAgKGZ1biBtIC0+IG0uZGVzY3IpIHRcbiAgICBsZXQgdGFncyB0ID0gTGlzdC5jb25jYXQgKExpc3QubWFwIChmdW4gbSAtPiBtLnRhZ3MpIHQpXG4gIGVuZFxuXG4gIGxldCBjdXJyZW50IDogVC50IHJlZiA9IHJlZiBbXVxuXG4gIGxldCB3aXRoXyB+ZGVzY3IgfnRhZ3MgZiA9XG4gICAgbGV0IHByZXYgPSAhY3VycmVudCBpblxuICAgIGN1cnJlbnQgOj0geyBULmRlc2NyOyB0YWdzIH0gOjogcHJldjtcbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZiAoKSBpblxuICAgICAgY3VycmVudCA6PSBwcmV2O1xuICAgICAgeFxuICAgIHdpdGhcbiAgICB8IGUgLT5cbiAgICAgIGN1cnJlbnQgOj0gcHJldjtcbiAgICAgIHJhaXNlIGVcbiAgOztcblxuICBsZXQgY3VycmVudF9kZXNjciAoKSA9IFQuZGVzY3IgIWN1cnJlbnRcbiAgbGV0IGN1cnJlbnRfdGFncyAoKSA9IFQudGFncyAhY3VycmVudFxuZW5kXG5cbmxldCB2ZXJib3NlID0gcmVmIGZhbHNlXG5sZXQgc3RyaWN0ID0gcmVmIGZhbHNlXG5sZXQgc2hvd19jb3VudHMgPSByZWYgZmFsc2VcbmxldCBsaXN0X3Rlc3RfbmFtZXMgPSByZWYgZmFsc2VcbmxldCBkZWxheWVkX2Vycm9ycyA9IHJlZiBbXVxubGV0IHN0b3Bfb25fZXJyb3IgPSByZWYgZmFsc2VcbmxldCBsb2cgPSByZWYgTm9uZVxubGV0IHRpbWVfc2VjID0gcmVmIDAuXG5sZXQgdXNlX2NvbG9yID0gcmVmIHRydWVcbmxldCBpbl9wbGFjZSA9IHJlZiBmYWxzZVxubGV0IGRpZmZfY29tbWFuZCA9IHJlZiBOb25lXG5sZXQgc291cmNlX3RyZWVfcm9vdCA9IHJlZiBOb25lXG5sZXQgZGlmZl9wYXRoX3ByZWZpeCA9IHJlZiBOb25lXG5cbmxldCBkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZmlsZW5hbWUgbGluZSBzdGFydF9wb3MgZW5kX3BvcyA9XG4gIGxldCAobGF6eSBkZXNjcikgPSBkZXNjciBpblxuICBQcmludGYuc3ByaW50ZlxuICAgIFwiRmlsZSAlUywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZCVzXCJcbiAgICBmaWxlbmFtZVxuICAgIGxpbmVcbiAgICBzdGFydF9wb3NcbiAgICBlbmRfcG9zXG4gICAgKGlmIGRlc2NyID0gXCJcIiB0aGVuIFwiXCIgZWxzZSBcIjogXCIgXiBkZXNjcilcbjs7XG5cbmxldCBwYXJzZV9kZXNjciBzdHIgPVxuICB0cnlcbiAgICBTb21lXG4gICAgICAoU2NhbmYuc3NjYW5mXG4gICAgICAgICBzdHJcbiAgICAgICAgIFwiIEZpbGUgJVMgLCBsaW5lICVkICwgY2hhcmFjdGVycyAlZCAtICVkICUhXCJcbiAgICAgICAgIChmdW4gZmlsZSBsaW5lIF9zdGFydF9wb3MgX2VuZF9wb3MgLT4gZmlsZSwgU29tZSBsaW5lKSlcbiAgd2l0aFxuICB8IF8gLT5cbiAgICAodHJ5XG4gICAgICAgU29tZSAoU2NhbmYuc3NjYW5mIHN0ciBcIiBGaWxlICVTICwgbGluZSAlZCAlIVwiIChmdW4gZmlsZSBsaW5lIC0+IGZpbGUsIFNvbWUgbGluZSkpXG4gICAgIHdpdGhcbiAgICAgfCBfIC0+XG4gICAgICAgKHRyeSBTb21lIChTY2FuZi5zc2NhbmYgc3RyIFwiIEZpbGUgJVMgJSFcIiAoZnVuIGZpbGUgLT4gZmlsZSwgTm9uZSkpIHdpdGhcbiAgICAgICAgfCBfIC0+IE5vbmUpKVxuOztcblxubGV0ICgpID1cbiAgaWYgQmFzZS5FeHBvcnRlZF9mb3Jfc3BlY2lmaWNfdXNlcy5hbV90ZXN0aW5nXG4gIHRoZW4gKFxuICAgIG1hdGNoIEFycmF5LnRvX2xpc3QgU3lzLmFyZ3Ygd2l0aFxuICAgIHwgbmFtZSA6OiBcImlubGluZS10ZXN0LXJ1bm5lclwiIDo6IGxpYiA6OiByZXN0IC0+XG4gICAgICAoKiB3aGVuIHdlIHNlZSB0aGlzIGFyZ3VtZW50LCB3ZSBzd2l0Y2ggdG8gdGVzdCBtb2RlICopXG4gICAgICBsZXQgdGVzdHMgPSByZWYgW10gaW5cbiAgICAgIGxldCBsaXN0X3BhcnRpdGlvbnMgPSByZWYgZmFsc2UgaW5cbiAgICAgIGxldCBwYXJ0aXRpb24gPSByZWYgTm9uZSBpblxuICAgICAgbGV0IHRhZ19wcmVkaWNhdGUgPSByZWYgVGFnX3ByZWRpY2F0ZS5pbml0aWFsIGluXG4gICAgICBsZXQgbmFtZV9maWx0ZXIgPSByZWYgW10gaW5cbiAgICAgIHBhcnNlX2FyZ3ZcbiAgICAgICAgKEFycmF5Lm9mX2xpc3QgKG5hbWUgOjogcmVzdCkpXG4gICAgICAgIChBcmcuYWxpZ25cbiAgICAgICAgICAgWyAoIFwiLWxpc3QtdGVzdC1uYW1lc1wiXG4gICAgICAgICAgICAgLCBBcmcuVW5pdFxuICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgIGxpc3RfdGVzdF9uYW1lcyA6PSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB2ZXJib3NlIDo9IHRydWUpXG4gICAgICAgICAgICAgLCBcIiBEbyBub3QgcnVuIHRlc3RzIGJ1dCBzaG93IHdoYXQgd291bGQgaGF2ZSBiZWVuIHJ1blwiIClcbiAgICAgICAgICAgOyAoIFwiLWxpc3QtcGFydGl0aW9uc1wiXG4gICAgICAgICAgICAgLCBBcmcuVW5pdCAoZnVuICgpIC0+IGxpc3RfcGFydGl0aW9ucyA6PSB0cnVlKVxuICAgICAgICAgICAgICwgXCIgTGlzdHMgYWxsIHRoZSBwYXJ0aXRpb25zIHRoYXQgY29udGFpbiBhdCBsZWFzdCBvbmUgdGVzdCBvciB0ZXN0X21vZHVsZVwiIClcbiAgICAgICAgICAgOyAoIFwiLXBhcnRpdGlvblwiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nIChmdW4gaSAtPiBwYXJ0aXRpb24gOj0gU29tZSBpKVxuICAgICAgICAgICAgICwgXCIgT25seSBydW4gdGhlIHRlc3RzIGluIHRoZSBnaXZlbiBwYXJ0aXRpb25cIiApXG4gICAgICAgICAgIDsgXCItdmVyYm9zZVwiLCBBcmcuU2V0IHZlcmJvc2UsIFwiIFNob3cgdGhlIHRlc3RzIGFzIHRoZXkgcnVuXCJcbiAgICAgICAgICAgOyAoIFwiLXN0b3Atb24tZXJyb3JcIlxuICAgICAgICAgICAgICwgQXJnLlNldCBzdG9wX29uX2Vycm9yXG4gICAgICAgICAgICAgLCBcIiBSdW4gdGVzdHMgb25seSB1cCB0byB0aGUgZmlyc3QgZXJyb3IgKGRvZXNuJ3Qgd29yayBmb3IgZXhwZWN0IHRlc3RzKVwiIClcbiAgICAgICAgICAgOyBcIi1zdHJpY3RcIiwgQXJnLlNldCBzdHJpY3QsIFwiIEVuZCB3aXRoIGFuIGVycm9yIGlmIG5vIHRlc3RzIHdlcmUgcnVuXCJcbiAgICAgICAgICAgOyBcIi1zaG93LWNvdW50c1wiLCBBcmcuU2V0IHNob3dfY291bnRzLCBcIiBTaG93IHRoZSBudW1iZXIgb2YgdGVzdHMgcmFuXCJcbiAgICAgICAgICAgOyAoIFwiLWxvZ1wiXG4gICAgICAgICAgICAgLCBBcmcuVW5pdFxuICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICh0cnkgU3lzLnJlbW92ZSBcImlubGluZV90ZXN0cy5sb2dcIiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IF8gLT4gKCkpO1xuICAgICAgICAgICAgICAgICAgICBsb2cgOj0gU29tZSAob3Blbl9vdXQgXCJpbmxpbmVfdGVzdHMubG9nXCIpKVxuICAgICAgICAgICAgICwgXCIgTG9nIHRoZSB0ZXN0cyBydW4gaW4gaW5saW5lX3Rlc3RzLmxvZ1wiIClcbiAgICAgICAgICAgOyAoIFwiLWRyb3AtdGFnXCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IHRhZ19wcmVkaWNhdGUgOj0gVGFnX3ByZWRpY2F0ZS5kcm9wICF0YWdfcHJlZGljYXRlIHMpXG4gICAgICAgICAgICAgLCBcInRhZyBPbmx5IHJ1biB0ZXN0cyBub3QgdGFnZ2VkIHdpdGggW3RhZ10gKG92ZXJyaWRlcyBwcmV2aW91cyBcXFxuICAgICAgICAgICAgICAgIC1yZXF1aXJlLXRhZylcIiApXG4gICAgICAgICAgIDsgKCBcIi1yZXF1aXJlLXRhZ1wiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nXG4gICAgICAgICAgICAgICAgIChmdW4gcyAtPiB0YWdfcHJlZGljYXRlIDo9IFRhZ19wcmVkaWNhdGUucmVxdWlyZSAhdGFnX3ByZWRpY2F0ZSBzKVxuICAgICAgICAgICAgICwgXCJ0YWcgT25seSBydW4gdGVzdHMgdGFnZ2VkIHdpdGggW3RhZ10gKG92ZXJyaWRlcyBwcmV2aW91cyAtZHJvcC10YWcpXCIgKVxuICAgICAgICAgICA7ICggXCItbWF0Y2hpbmdcIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZyAoZnVuIHMgLT4gbmFtZV9maWx0ZXIgOj0gcyA6OiAhbmFtZV9maWx0ZXIpXG4gICAgICAgICAgICAgLCBcInN1YnN0cmluZyBPbmx5IHJ1biB0ZXN0cyB3aG9zZSBuYW1lcyBjb250YWluIHRoZSBnaXZlbiBzdWJzdHJpbmdcIiApXG4gICAgICAgICAgIDsgKCBcIi1vbmx5LXRlc3RcIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZ1xuICAgICAgICAgICAgICAgICAoZnVuIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGVuYW1lLCBpbmRleCA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcGFyc2VfZGVzY3IgcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChmaWxlLCBpbmRleCkgLT4gZmlsZSwgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy5jb250YWlucyBzICc6J1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gU3RyaW5nLmluZGV4IHMgJzonIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IFN0cmluZy5zdWIgcyAwIGkgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4X3N0cmluZyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nLnN1YiBzIChpICsgMSkgKFN0cmluZy5sZW5ndGggcyAtIGkgLSAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIGluZGV4X3N0cmluZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJndW1lbnQgJXMgZG9lc24ndCBmaXQgdGhlIGZvcm1hdCBmaWxlbmFtZVs6bGluZV9udW1iZXJdXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgU29tZSBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgcywgTm9uZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICB0ZXN0cyA6PSAoZmlsZW5hbWUsIGluZGV4LCByZWYgZmFsc2UpIDo6ICF0ZXN0cylcbiAgICAgICAgICAgICAsIFwibG9jYXRpb24gUnVuIG9ubHkgdGhlIHRlc3RzIHNwZWNpZmllZCBieSBhbGwgdGhlIC1vbmx5LXRlc3Qgb3B0aW9ucy5cXG5cXFxuICAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb25zIGNhbiBiZSBvbmUgb2YgdGhlc2UgZm9ybXM6XFxuXFxcbiAgICAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS5tbFxcblxcXG4gICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgICAgICAgICAtIGZpbGUubWw6bGluZV9udW1iZXJcXG5cXFxuICAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgICAgICAgICAgLSBGaWxlIFxcXCJmaWxlLm1sXFxcIlxcblxcXG4gICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgICAgICAgICAtIEZpbGUgXFxcImZpbGUubWxcXFwiLCBsaW5lIDIzXFxuXFxcbiAgICAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgIC0gRmlsZSBcXFwiZmlsZS5tbFxcXCIsIGxpbmUgMjMsIGNoYXJhY3RlcnMgMi0zXCIgKVxuICAgICAgICAgICA7IFwiLW5vLWNvbG9yXCIsIEFyZy5DbGVhciB1c2VfY29sb3IsIFwiIFN1bW1hcml6ZSB0ZXN0cyB3aXRob3V0IHVzaW5nIGNvbG9yXCJcbiAgICAgICAgICAgOyBcIi1pbi1wbGFjZVwiLCBBcmcuU2V0IGluX3BsYWNlLCBcIiBVcGRhdGUgZXhwZWN0IHRlc3RzIGluIHBsYWNlXCJcbiAgICAgICAgICAgOyAoIFwiLWRpZmYtY21kXCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IGRpZmZfY29tbWFuZCA6PSBTb21lIHMpXG4gICAgICAgICAgICAgLCBcIiBEaWZmIGNvbW1hbmQgZm9yIHRlc3RzIHRoYXQgcmVxdWlyZSBkaWZmaW5nICh1c2UgLSB0byBkaXNhYmxlIGRpZmZpbmcpXCIgKVxuICAgICAgICAgICA7ICggXCItc291cmNlLXRyZWUtcm9vdFwiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBzb3VyY2VfdHJlZV9yb290IDo9IFNvbWUgcylcbiAgICAgICAgICAgICAsIFwiIFBhdGggdG8gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlXCIgKVxuICAgICAgICAgICA7ICggXCItZGlmZi1wYXRoLXByZWZpeFwiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBkaWZmX3BhdGhfcHJlZml4IDo9IFNvbWUgcylcbiAgICAgICAgICAgICAsIFwiIFByZWZpeCB0byBwcmVwZW5kIHRvIGZpbGVwYXRocyBpbiB0ZXN0IG91dHB1dFwiIClcbiAgICAgICAgICAgXSlcbiAgICAgICAgKGZ1biBhbm9uIC0+XG4gICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXM6IHVuZXhwZWN0ZWQgYW5vbnltb3VzIGFyZ3VtZW50ICVzXFxuJSFcIiBuYW1lIGFub247XG4gICAgICAgICAgIGV4aXQgMSlcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgJXMgW2FyZ3NdXCIgbmFtZSBcImlubGluZS10ZXN0LXJ1bm5lclwiIGxpYik7XG4gICAgICBBY3Rpb24uc2V0XG4gICAgICAgIChgVGVzdF9tb2RlXG4gICAgICAgICAgIHsgd2hpY2hfdGVzdHMgPVxuICAgICAgICAgICAgICAgeyBsaWJuYW1lID0gbGliXG4gICAgICAgICAgICAgICA7IG9ubHlfdGVzdF9sb2NhdGlvbiA9ICF0ZXN0c1xuICAgICAgICAgICAgICAgOyB3aGljaF90YWdzID0gIXRhZ19wcmVkaWNhdGVcbiAgICAgICAgICAgICAgIDsgbmFtZV9maWx0ZXIgPSAhbmFtZV9maWx0ZXJcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgOyB3aGF0X3RvX2RvID1cbiAgICAgICAgICAgICAgIChpZiAhbGlzdF9wYXJ0aXRpb25zIHRoZW4gYExpc3RfcGFydGl0aW9ucyBlbHNlIGBSdW5fcGFydGl0aW9uICFwYXJ0aXRpb24pXG4gICAgICAgICAgIH0pXG4gICAgfCBfIC0+ICgpKVxuOztcblxubGV0IGFtX3Rlc3RfcnVubmVyID1cbiAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gIHwgYFRlc3RfbW9kZSBfIC0+IHRydWVcbiAgfCBgSWdub3JlIC0+IGZhbHNlXG47O1xuXG5sZXQgYW1fcnVubmluZ19lbnZfdmFyID1cbiAgKCogZm9yIGFwcHJveGltYXRlIGNvbXBhdGliaWxpdHksIGdpdmVuIHRoYXQgdGhlIHZhcmlhYmxlIGlzIG5vdCBleGFjdGx5IGVxdWl2YWxlbnRcbiAgICAgdG8gd2hhdCBQUFhfSU5MSU5FX1RFU1RfTElCX0FNX1JVTk5JTkdfSU5MSU5FX1RFU1QgdXNlZCB0byBiZSAqKVxuICBcIlRFU1RJTkdfRlJBTUVXT1JLXCJcbjs7XG5cbigqIFRoaXMgdmFsdWUgaXMgZGVwcmVjYXRlZCBpbiBwcmluY2lwbGUsIGluIGZhdm9yIG9mIENvcmUuYW1fcnVubmluZ190ZXN0LCBzb1xuICAgd2UncmUgZ29pbmcgdG8gbGl2ZSB3aXRoIHRoZSB1Z2x5IHBhdHRlcm4gbWF0Y2guICopXG5sZXQgYW1fcnVubmluZyA9XG4gIG1hdGNoIFN5cy5nZXRlbnYgXCJQUFhfSU5MSU5FX1RFU1RfTElCX0FNX1JVTk5JTkdfSU5MSU5FX1RFU1RcIiB3aXRoXG4gIHwgKF8gOiBzdHJpbmcpIC0+XG4gICAgdHJ1ZSAoKiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHBlb3BsZSBzZXR0aW5nIHRoaXMgdmFyaWFibGUgZGlyZWN0bHkgKilcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgKG1hdGNoIFN5cy5nZXRlbnYgYW1fcnVubmluZ19lbnZfdmFyIHdpdGhcbiAgICAgfCBcImlubGluZS10ZXN0XCIgLT4gdHJ1ZVxuICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gZmFsc2VcbiAgICAgfCBfIC0+IGZhbHNlKVxuOztcblxubGV0IHRlc3RpbmcgPVxuICBpZiBhbV90ZXN0X3J1bm5lclxuICB0aGVuIGBUZXN0aW5nIGBBbV90ZXN0X3J1bm5lclxuICBlbHNlIGlmIGFtX3J1bm5pbmdcbiAgdGhlbiBgVGVzdGluZyBgQW1fY2hpbGRfb2ZfdGVzdF9ydW5uZXJcbiAgZWxzZSBgTm90X3Rlc3Rpbmdcbjs7XG5cbmxldCB3YWxsX3RpbWVfY2xvY2tfbnMgKCkgPSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpXG5cbmxldCB3aGVyZV90b19jdXRfYmFja3RyYWNlID1cbiAgbGF6eVxuICAgIChCYXNlLlN0cmluZy5TZWFyY2hfcGF0dGVybi5jcmVhdGVcbiAgICAgICAoX19NT0RVTEVfXyBeIFwiLlwiIF4gXCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkc1wiKSlcbjs7XG5cbmxldCB0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkcyBmID1cbiAgbGV0IGJlZm9yZV9ucyA9IHdhbGxfdGltZV9jbG9ja19ucyAoKSBpblxuICBsZXQgcmVzID1cbiAgICAoKiBUbyBhdm9pZCBub2lzZSBpbiBiYWNrdHJhY2VzLCB3ZSBkbyB0d28gdGhpbmdzLlxuXG4gICAgICAgV2UgdXNlIFt3aGVyZV90b19jdXRfYmFja3RyYWNlXSBhYm92ZSB0byByZW1vdmUgdGhlIHN0YWNrIGZyYW1lcyBmb3IgdGhlIGN1cnJlbnRcbiAgICAgICBmdW5jdGlvbiBhbmQgYW55IGZ1bmN0aW9uIGl0IGdldHMgaW5saW5lZCBpbnRvLCBhcyBpdCdzIG5vdCBvZiBhbnkgaW50ZXJlc3QgdG8gdGhlXG4gICAgICAgdXNlciwgc2luY2UgaXQncyBub3QgdGFsa2luZyBhYm91dCB0aGVpciB0ZXN0IGJ1dCBpbnN0ZWFkIHRhbGtpbmcgYWJvdXQgdGhlXG4gICAgICAgcHB4X2lubGluZV90ZXN0IG1hY2hpbmVyeS5cblxuICAgICAgIFdlIGFsc28gYXZvaWQgaW5zZXJ0aW5nIGFueSBjb2RlIGJldHdlZW4gdGhlIFtmXSB0aGF0IGNvbWVzIGZyb20gdGhlIHVzZXIncyBmaWxlXG4gICAgICAgYW5kIGdyYWJiaW5nIHRoZSBiYWNrdHJhY2UgZnJvbSBpdHMgZXhjZXB0aW9ucyAobm8gd3JhcHBpbmcgb2YgW2ZdIHdpdGggaGlnaCBvcmRlclxuICAgICAgIGZ1bmN0aW9ucyBsaWtlIEV4bi5wcm90ZWN0LCBvciAoZnVuICgpIC0+IGYgKCk7IHRydWUpKS4gKilcbiAgICB0cnkgT2sgKGYgKCkpIHdpdGhcbiAgICB8IGV4biAtPiBFcnJvciAoZXhuLCBQcmludGV4Yy5nZXRfYmFja3RyYWNlICgpKVxuICBpblxuICB0aW1lX3NlYyA6PSBCYXNlLkludDYzLih3YWxsX3RpbWVfY2xvY2tfbnMgKCkgLSBiZWZvcmVfbnMgfD4gdG9fZmxvYXQpIC8uIDFlOTtcbiAgcmVzXG47O1xuXG5sZXQgc2F2ZWRfY2FtbF9yYW5kb21fc3RhdGUgPSBsYXp5IChTdGRsaWIuUmFuZG9tLlN0YXRlLm1ha2UgW3wgMTAwOyAyMDA7IDMwMCB8XSlcbmxldCBzYXZlZF9iYXNlX3JhbmRvbV9zdGF0ZSA9IGxhenkgKEJhc2UuUmFuZG9tLlN0YXRlLm1ha2UgW3wgMTExOyAyMjI7IDMzMyB8XSlcblxubGV0IHRpbWVfYW5kX3Jlc2V0X3JhbmRvbV9zZWVkcyBmID1cbiAgbGV0IGNhbWxfcmFuZG9tX3N0YXRlID0gU3RkbGliLlJhbmRvbS5nZXRfc3RhdGUgKCkgaW5cbiAgbGV0IGJhc2VfcmFuZG9tX3N0YXRlID0gQmFzZS5SYW5kb20uU3RhdGUuY29weSBCYXNlLlJhbmRvbS5TdGF0ZS5kZWZhdWx0IGluXG4gIFN0ZGxpYi5SYW5kb20uc2V0X3N0YXRlIChMYXp5LmZvcmNlIHNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlKTtcbiAgQmFzZS5SYW5kb20uc2V0X3N0YXRlIChMYXp5LmZvcmNlIHNhdmVkX2Jhc2VfcmFuZG9tX3N0YXRlKTtcbiAgbGV0IHJlc3VsdCA9IHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYgaW5cbiAgU3RkbGliLlJhbmRvbS5zZXRfc3RhdGUgY2FtbF9yYW5kb21fc3RhdGU7XG4gIEJhc2UuUmFuZG9tLnNldF9zdGF0ZSBiYXNlX3JhbmRvbV9zdGF0ZTtcbiAgcmVzdWx0XG47O1xuXG5sZXQgc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSA9XG4gIFN0cmluZy5jb25jYXRcbiAgICBcIlwiXG4gICAgKExpc3QubWFwXG4gICAgICAgKGZ1biBzIC0+IFwiICBpbiBURVNcIiBeIFwiVF9NT0RVTEUgYXQgXCIgXiBTdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpIHMgXiBcIlxcblwiKVxuICAgICAgIChNb2R1bGVfY29udGV4dC5jdXJyZW50X2Rlc2NyICgpKSlcbjs7XG5cbmxldCBwb3NpdGlvbl9tYXRjaCBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIGwgPVxuICBMaXN0LmV4aXN0c1xuICAgIChmdW4gKGZpbGVuYW1lLCBsaW5lX251bWJlcl9vcHQsIHVzZWQpIC0+XG4gICAgICAgbGV0IHBvc2l0aW9uX3N0YXJ0ID0gU3RyaW5nLmxlbmd0aCBkZWZfZmlsZW5hbWUgLSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgICAgbGV0IGZvdW5kID1cbiAgICAgICAgIHBvc2l0aW9uX3N0YXJ0ID49IDBcbiAgICAgICAgICYmXG4gICAgICAgICBsZXQgZW5kX29mX2RlZl9maWxlbmFtZSA9XG4gICAgICAgICAgIFN0cmluZy5zdWIgZGVmX2ZpbGVuYW1lIHBvc2l0aW9uX3N0YXJ0IChTdHJpbmcubGVuZ3RoIGZpbGVuYW1lKVxuICAgICAgICAgaW5cbiAgICAgICAgIGVuZF9vZl9kZWZfZmlsZW5hbWUgPSBmaWxlbmFtZVxuICAgICAgICAgJiYgKHBvc2l0aW9uX3N0YXJ0ID0gMCB8fCBkZWZfZmlsZW5hbWUuW3Bvc2l0aW9uX3N0YXJ0IC0gMV0gPSAnLycpXG4gICAgICAgICAmJlxuICAgICAgICAgbWF0Y2ggbGluZV9udW1iZXJfb3B0IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgICB8IFNvbWUgbGluZV9udW1iZXIgLT4gZGVmX2xpbmVfbnVtYmVyID0gbGluZV9udW1iZXJcbiAgICAgICBpblxuICAgICAgIGlmIGZvdW5kIHRoZW4gdXNlZCA6PSB0cnVlO1xuICAgICAgIGZvdW5kKVxuICAgIGxcbjs7XG5cbmxldCBuYW1lX2ZpbHRlcl9tYXRjaCB+bmFtZV9maWx0ZXIgZGVzY3IgPVxuICBtYXRjaCBuYW1lX2ZpbHRlciB3aXRoXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gOjogXyAtPlxuICAgIExpc3QuZXhpc3RzIChmdW4gc3Vic3RyaW5nIC0+IEJhc2UuU3RyaW5nLmlzX3N1YnN0cmluZyB+c3Vic3RyaW5nIGRlc2NyKSBuYW1lX2ZpbHRlclxuOztcblxubGV0IHByaW50X2RlbGF5ZWRfZXJyb3JzICgpID1cbiAgbWF0Y2ggTGlzdC5yZXYgIWRlbGF5ZWRfZXJyb3JzIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IF8gOjogXyBhcyBkZWxheWVkX2Vycm9ycyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwiXFxuJXNcXG4lIVwiIChTdHJpbmcubWFrZSA3MCAnPScpO1xuICAgIExpc3QuaXRlciAoZnVuIG1lc3NhZ2UgLT4gUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgbWVzc2FnZSkgZGVsYXllZF9lcnJvcnNcbjs7XG5cbmxldCBlcHJpbnRmX29yX2RlbGF5IGZtdCA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIChmdW4gcyAtPlxuICAgICAgIGlmICF2ZXJib3NlIHRoZW4gZGVsYXllZF9lcnJvcnMgOj0gcyA6OiAhZGVsYXllZF9lcnJvcnMgZWxzZSBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBzO1xuICAgICAgIGlmICFzdG9wX29uX2Vycm9yXG4gICAgICAgdGhlbiAoXG4gICAgICAgICBwcmludF9kZWxheWVkX2Vycm9ycyAoKTtcbiAgICAgICAgIGV4aXQgMikpXG4gICAgZm10XG47O1xuXG5sZXQgYWRkX2hvb2tzICgobW9kdWxlIEMpIDogY29uZmlnKSBmICgpID1cbiAgQy5wcmVfdGVzdF9ob29rICgpO1xuICBmICgpXG47O1xuXG5sZXQgaHVtX2JhY2t0cmFjZSBiYWNrdHJhY2UgPVxuICBsZXQgb3BlbiBCYXNlIGluXG4gIGJhY2t0cmFjZVxuICB8PiBTdHJpbmcuc3BsaXRfbGluZXNcbiAgfD4gTGlzdC50YWtlX3doaWxlIH5mOihmdW4gc3RyIC0+XG4gICAgbm90IChTdHJpbmcuU2VhcmNoX3BhdHRlcm4ubWF0Y2hlcyAoZm9yY2Ugd2hlcmVfdG9fY3V0X2JhY2t0cmFjZSkgc3RyKSlcbiAgfD4gTGlzdC5tYXAgfmY6KGZ1biBzdHIgLT4gXCIgIFwiIF4gc3RyIF4gXCJcXG5cIilcbiAgfD4gU3RyaW5nLmNvbmNhdFxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIHRlc3RfaW5uZXJcbiAgICAgICAgICAgICAgICAgICAgIH5jb25maWdcbiAgICAgICAgICAgICAgICAgICAgIH5kZXNjclxuICAgICAgICAgICAgICAgICAgICAgfnRhZ3NcbiAgICAgICAgICAgICAgICAgICAgIH5maWxlbmFtZTpkZWZfZmlsZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH5saW5lX251bWJlcjpkZWZfbGluZV9udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgICAgIH5lbmRfcG9zXG4gICAgICAgICAgICAgICAgICAgICBmXG4gICAgICAgICAgICAgICAgICAgICBib29sX29mX2ZcbiAgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYFRlc3RfbW9kZVxuICAgICAgeyB3aGljaF90ZXN0cyA9IHsgbGlibmFtZTsgb25seV90ZXN0X2xvY2F0aW9uOyB3aGljaF90YWdzOyBuYW1lX2ZpbHRlciB9XG4gICAgICA7IHdoYXRfdG9fZG9cbiAgICAgIH0gLT5cbiAgICBsZXQgZiA9IGFkZF9ob29rcyBjb25maWcgZiBpblxuICAgIGxldCBkZXNjciA9XG4gICAgICBsYXp5IChkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBzdGFydF9wb3MgZW5kX3BvcylcbiAgICBpblxuICAgIGxldCBjb21wbGV0ZV90YWdzID0gdGFncyBAIE1vZHVsZV9jb250ZXh0LmN1cnJlbnRfdGFncyAoKSBpblxuICAgIGxldCBzaG91bGRfcnVuID1cbiAgICAgIFNvbWUgbGlibmFtZSA9ICFkeW5hbWljX2xpYlxuICAgICAgJiYgKG1hdGNoIG9ubHlfdGVzdF9sb2NhdGlvbiB3aXRoXG4gICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICB8IF8gOjogXyAtPiBwb3NpdGlvbl9tYXRjaCBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIG9ubHlfdGVzdF9sb2NhdGlvbilcbiAgICAgICYmIChub3QgKFRhZ19wcmVkaWNhdGUuZGlzYWJsZWQgd2hpY2hfdGFncyB+Y29tcGxldGVfdGFncykpXG4gICAgICAmJiBuYW1lX2ZpbHRlcl9tYXRjaCB+bmFtZV9maWx0ZXIgKExhenkuZm9yY2UgZGVzY3IpXG4gICAgaW5cbiAgICBpZiBzaG91bGRfcnVuXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCB3aGF0X3RvX2RvIHdpdGhcbiAgICAgIHwgYExpc3RfcGFydGl0aW9ucyAtPiBQYXJ0aXRpb24uZm91bmRfdGVzdCAoKVxuICAgICAgfCBgUnVuX3BhcnRpdGlvbiBwYXJ0aXRpb24gLT5cbiAgICAgICAgaWYgUGFydGl0aW9uLmlzX2N1cnJlbnQgcGFydGl0aW9uXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBkZXNjciA9IExhenkuZm9yY2UgZGVzY3IgaW5cbiAgICAgICAgICBpbmNyIHRlc3RzX3JhbjtcbiAgICAgICAgICAobWF0Y2ggIWxvZyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICB8IFNvbWUgY2ggLT4gUHJpbnRmLmZwcmludGYgY2ggXCIlc1xcbiVzXCIgZGVzY3IgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpKTtcbiAgICAgICAgICBpZiAhdmVyYm9zZSB0aGVuIFByaW50Zi5wcmludGYgXCIlcyUhXCIgZGVzY3I7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICBpZiAhbGlzdF90ZXN0X25hbWVzXG4gICAgICAgICAgICB0aGVuIE9rIHRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKCogU2VlIFt0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkc10gZm9yIHdoeSB3ZSB1c2UgW2Jvb2xfb2ZfZl1cbiAgICAgICAgICAgICAgICAgcmF0aGVyIGhhdmUgdGhlIGNhbGxlciB3cmFwIFtmXSB0byBhZGp1c3QgaXRzIHJldHVybiB2YWx1ZS4gKilcbiAgICAgICAgICAgICAgUmVzdWx0Lm1hcCBib29sX29mX2YgKHRpbWVfYW5kX3Jlc2V0X3JhbmRvbV9zZWVkcyBmKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogSWYgIWxpc3RfdGVzdF9uYW1lcywgdGhpcyBpcyBpcyBhIGhhcm1sZXNzIHplcm8uICopXG4gICAgICAgICAgaWYgIXZlcmJvc2UgdGhlbiBQcmludGYucHJpbnRmIFwiICglLjNmIHNlYylcXG4lIVwiICF0aW1lX3NlYztcbiAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgT2sgdHJ1ZSAtPiAoKVxuICAgICAgICAgIHwgT2sgZmFsc2UgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdHNfZmFpbGVkO1xuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheSBcIiVzIGlzIGZhbHNlLlxcbiVzXFxuJSFcIiBkZXNjciAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgICB8IEVycm9yIChleG4sIGJhY2t0cmFjZSkgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdHNfZmFpbGVkO1xuICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IGh1bV9iYWNrdHJhY2UgYmFja3RyYWNlIGluXG4gICAgICAgICAgICBsZXQgZXhuX3N0ciA9IFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCBleG4gaW5cbiAgICAgICAgICAgIGxldCBzZXAgPSBpZiBTdHJpbmcuY29udGFpbnMgZXhuX3N0ciAnXFxuJyB0aGVuIFwiXFxuXCIgZWxzZSBcIiBcIiBpblxuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheVxuICAgICAgICAgICAgICBcIiVzIHRocmV3JXMlcy5cXG4lcyVzXFxuJSFcIlxuICAgICAgICAgICAgICBkZXNjclxuICAgICAgICAgICAgICBzZXBcbiAgICAgICAgICAgICAgZXhuX3N0clxuICAgICAgICAgICAgICBiYWNrdHJhY2VcbiAgICAgICAgICAgICAgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpKSlcbjs7XG5cbmxldCBzZXRfbGliX2FuZF9wYXJ0aXRpb24gc3RhdGljX2xpYiBwYXJ0aXRpb24gPVxuICBtYXRjaCAhZHluYW1pY19saWIgd2l0aFxuICB8IFNvbWUgXyAtPlxuICAgICgqIHBvc3NpYmxlIGlmIHRoZSBpbnRlcmZhY2UgaXMgdXNlZCBleHBsaWNpdGx5IG9yIGlmIHdlIGhhcHBlbiB0byBkeW5saW5rIHNvbWV0aGluZ1xuICAgICAgIHRoYXQgY29udGFpbiB0ZXN0cyAqKVxuICAgICgpXG4gIHwgTm9uZSAtPlxuICAgIGR5bmFtaWNfbGliIDo9IFNvbWUgc3RhdGljX2xpYjtcbiAgICAobWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gICAgIHwgYElnbm9yZSAtPiAoKVxuICAgICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0czsgd2hhdF90b19kbyB9IC0+XG4gICAgICAgaWYgd2hpY2hfdGVzdHMubGlibmFtZSA9IHN0YXRpY19saWJcbiAgICAgICB0aGVuIChcbiAgICAgICAgIGxldCByZXF1aXJlc19wYXJ0aXRpb24gPVxuICAgICAgICAgICBtYXRjaCB3aGF0X3RvX2RvIHdpdGhcbiAgICAgICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIHwgYFJ1bl9wYXJ0aXRpb24gKFNvbWUgXykgLT4gdHJ1ZVxuICAgICAgICAgICB8IGBSdW5fcGFydGl0aW9uIE5vbmUgLT4gZmFsc2VcbiAgICAgICAgIGluXG4gICAgICAgICBpZiBwYXJ0aXRpb24gPSBcIlwiICYmIHJlcXVpcmVzX3BhcnRpdGlvblxuICAgICAgICAgdGhlblxuICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgIFwicHB4X2lubGluZV90ZXN0OiBjYW5ub3QgdXNlIC1saXN0LXBhcnRpdGlvbiBvciAtcGFydGl0aW9uIHdpdGhvdXQgXFxcbiAgICAgICAgICAgICAgc3BlY2lmeWluZyBhIHBhcnRpdGlvbiBhdCBwcmVwcm9jZXNzaW5nIHRpbWVcIlxuICAgICAgICAgZWxzZSBQYXJ0aXRpb24uc2V0X2N1cnJlbnQgcGFydGl0aW9uKSlcbjs7XG5cbmxldCB1bnNldF9saWIgc3RhdGljX2xpYiA9XG4gIG1hdGNoICFkeW5hbWljX2xpYiB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICgqIG5vdCBnaXZpbmcgYW4gZXJyb3IsIGJlY2F1c2Ugd2hlbiBzb21lIGFubm95aW5nIHBlb3BsZSBwdXQgcGFfb3VuaXQgaW4gdGhlaXIgbGlzdFxuICAgICAgIG9mIHByZXByb2Nlc3NvcnMsIHBhX291bml0IGlzIHNldCB1cCB0d2ljZSBhbmQgd2UgaGF2ZSB0d28gY2FsbHMgdG8gdW5zZXRfbGliIGF0XG4gICAgICAgdGhlIGVuZCBvZiB0aGUgZmlsZSwgYW5kIHRoZSBzZWNvbmQgb25lIGNvbWVzIGluIHRoaXMgYnJhbmNoICopXG4gICAgKClcbiAgfCBTb21lIGxpYiAtPiBpZiBsaWIgPSBzdGF0aWNfbGliIHRoZW4gZHluYW1pY19saWIgOj0gTm9uZVxuOztcblxubGV0IHRlc3QgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmIChmdW4gYiAtPlxuICAgIGIpXG47O1xuXG5sZXQgdGVzdF91bml0IH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmID1cbiAgdGVzdF9pbm5lciB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWUgfmxpbmVfbnVtYmVyIH5zdGFydF9wb3MgfmVuZF9wb3MgZiAoZnVuICgpIC0+XG4gICAgdHJ1ZSlcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSB0ZXN0X21vZHVsZVxuICAgICAgICAgICAgICAgICAgICAgfmNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgfmRlc2NyXG4gICAgICAgICAgICAgICAgICAgICB+dGFnc1xuICAgICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lOmRlZl9maWxlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgfmxpbmVfbnVtYmVyOmRlZl9saW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgICAgfmVuZF9wb3NcbiAgICAgICAgICAgICAgICAgICAgIGZcbiAgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYFRlc3RfbW9kZVxuICAgICAgeyB3aGljaF90ZXN0cyA9IHsgbGlibmFtZTsgb25seV90ZXN0X2xvY2F0aW9uID0gXzsgbmFtZV9maWx0ZXIgPSBfOyB3aGljaF90YWdzIH1cbiAgICAgIDsgd2hhdF90b19kb1xuICAgICAgfSAtPlxuICAgIGxldCBmID0gYWRkX2hvb2tzIGNvbmZpZyBmIGluXG4gICAgbGV0IGRlc2NyICgpID0gZGlzcGxheWVkX2Rlc2NyIGRlc2NyIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgc3RhcnRfcG9zIGVuZF9wb3MgaW5cbiAgICBsZXQgcGFydGlhbF90YWdzID0gdGFncyBAIE1vZHVsZV9jb250ZXh0LmN1cnJlbnRfdGFncyAoKSBpblxuICAgIGxldCBzaG91bGRfcnVuID1cbiAgICAgIFNvbWUgbGlibmFtZSA9ICFkeW5hbWljX2xpYlxuICAgICAgKCogSWYsIG5vIG1hdHRlciB3aGF0IHRhZ3MgYSB0ZXN0IGRlZmluZXMsIHdlIGNlcnRhaW5seSB3aWxsIGRyb3AgYWxsIHRlc3RzIHdpdGhpblxuICAgICAgICAgdGhpcyBtb2R1bGUsIHRoZW4gZG9uJ3QgcnVuIHRoZSBtb2R1bGUgYXQgYWxsLiBUaGlzIG1lYW5zIHBlb3BsZSBjYW4gd3JpdGVcbiAgICAgICAgIHRoaW5ncyBsaWtlIHRoZSBmb2xsb3dpbmcgd2l0aG91dCBicmVha2luZyB0aGUgMzItYml0IGJ1aWxkOlxuICAgICAgICAgbGV0JXRlc3RfbW9kdWxlIFtAdGFncyBcIjY0LWJpdHMtb25seVwiXSA9IChtb2R1bGUgc3RydWN0XG4gICAgICAgICBsZXQgaSA9IEludDY0LnRvX2ludF9leG4gLi4uLlxuICAgICAgICAgZW5kKVxuICAgICAgICAgV2UgZG9uJ3Qgc2hvcnRjdXQgYmFzZWQgb24gcG9zaXRpb24sIGFzIHdlIGNhbid0IHRlbGwgd2hhdCBwb3NpdGlvbnMgdGhlXG4gICAgICAgICBpbm5lciB0ZXN0cyB3aWxsIGhhdmUuICopXG4gICAgICAmJiBub3QgKFRhZ19wcmVkaWNhdGUuZW50aXJlX21vZHVsZV9kaXNhYmxlZCB3aGljaF90YWdzIH5wYXJ0aWFsX3RhZ3MpXG4gICAgaW5cbiAgICBpZiBzaG91bGRfcnVuXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCB3aGF0X3RvX2RvIHdpdGhcbiAgICAgIHwgYExpc3RfcGFydGl0aW9ucyAtPiBQYXJ0aXRpb24uZm91bmRfdGVzdCAoKVxuICAgICAgfCBgUnVuX3BhcnRpdGlvbiBwYXJ0aXRpb24gLT5cbiAgICAgICAgaWYgUGFydGl0aW9uLmlzX2N1cnJlbnQgcGFydGl0aW9uXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGluY3IgdGVzdF9tb2R1bGVzX3JhbjtcbiAgICAgICAgICBsZXQgZGVzY3IgPSBkZXNjciAoKSBpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBNb2R1bGVfY29udGV4dC53aXRoXyB+ZGVzY3IgfnRhZ3MgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAoKiBXZSBkbyBub3QgcmVzZXQgcmFuZG9tIHN0YXRlcyB1cG9uIGVudGVyaW5nIFtsZXQldGVzdF9tb2R1bGVdLlxuXG4gICAgICAgICAgICAgICAgIENvbjogQ29kZSBpbiB0ZXN0IG1vZHVsZXMgY2FuIGFjY2lkZW50YWxseSBkZXBlbmQgb24gdG9wLWxldmVsIHJhbmRvbVxuICAgICAgICAgICAgICAgICBzdGF0ZSBlZmZlY3RzLlxuXG4gICAgICAgICAgICAgICAgIFByb3M6ICgxKSBXZSBkb24ndCByZXNldCB0byB0aGUgc2FtZSBzZWVkIG9uIGVudGVyaW5nIGEgW2xldCV0ZXN0X21vZHVsZV1cbiAgICAgICAgICAgICAgICAgYW5kIHRoZW4gYSBbbGV0JXRlc3RdIGluc2lkZSB0aGF0IG1vZHVsZSwgd2hpY2ggY291bGQgbGVhZCB0b1xuICAgICAgICAgICAgICAgICBhY2NpZGVudGFsbHkgcmFuZG9tbHkgZ2VuZXJhdGluZyB0aGUgc2FtZSB2YWx1ZXMgaW4gc29tZSB0ZXN0LiAoMikgTW92aW5nXG4gICAgICAgICAgICAgICAgIGNvZGUgaW50byBhbmQgb3V0IG9mIFtsZXQldGVzdF9tb2R1bGVdIGRvZXMgbm90IGNoYW5nZSBpdHMgcmFuZG9tIHNlZWQuXG4gICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgIHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gKClcbiAgICAgICAgICB8IEVycm9yIChleG4sIGJhY2t0cmFjZSkgLT5cbiAgICAgICAgICAgIGluY3IgdGVzdF9tb2R1bGVzX2ZhaWxlZDtcbiAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBodW1fYmFja3RyYWNlIGJhY2t0cmFjZSBpblxuICAgICAgICAgICAgbGV0IGV4bl9zdHIgPSBTZXhwbGliMC5TZXhwX2NvbnYucHJpbnRleGNfcHJlZmVyX3NleHAgZXhuIGluXG4gICAgICAgICAgICBsZXQgc2VwID0gaWYgU3RyaW5nLmNvbnRhaW5zIGV4bl9zdHIgJ1xcbicgdGhlbiBcIlxcblwiIGVsc2UgXCIgXCIgaW5cbiAgICAgICAgICAgIGVwcmludGZfb3JfZGVsYXlcbiAgICAgICAgICAgICAgKFwiVEVTXCIgXl4gXCJUX01PRFVMRSBhdCAlcyB0aHJldyVzJXMuXFxuJXMlc1xcbiUhXCIpXG4gICAgICAgICAgICAgIChTdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpIGRlc2NyKVxuICAgICAgICAgICAgICBzZXBcbiAgICAgICAgICAgICAgZXhuX3N0clxuICAgICAgICAgICAgICBiYWNrdHJhY2VcbiAgICAgICAgICAgICAgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpKSlcbjs7XG5cbmxldCBzdW1tYXJpemUgKCkgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+XG4gICAgaWYgU3lzLmFyZ3YgPD4gW3x8XSAmJiBGaWxlbmFtZS5iYXNlbmFtZSBTeXMuYXJndi4oMCkgPSBcImlubGluZV90ZXN0c19ydW5uZXIuZXhlXCJcbiAgICB0aGVuXG4gICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICBcImlubGluZV90ZXN0c19ydW5uZXIuZXhlIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBydW4gYnkgaGFuZCwgeW91IFxcblxcXG4gICAgICAgICBzaG91bGQgcnVuIHRoZSBpbmxpbmVfdGVzdHNfcnVubmVyIHNjcmlwdCBpbnN0ZWFkLlxcblxcXG4gICAgICAgICAlIVwiXG4gICAgZWxzZVxuICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgXCJZb3UgYXJlIGRvaW5nIHNvbWV0aGluZyB1bmV4cGVjdGVkIHdpdGggdGhlIHRlc3RzLiBObyB0ZXN0cyBoYXZlIFxcblxcXG4gICAgICAgICBiZWVuIHJ1bi4gWW91IHNob3VsZCB1c2UgdGhlIGlubGluZV90ZXN0c19ydW5uZXIgc2NyaXB0IHRvIHJ1biBcXG5cXFxuICAgICAgICAgdGVzdHMuXFxuXFxcbiAgICAgICAgICUhXCI7XG4gICAgVGVzdF9yZXN1bHQuRXJyb3JcbiAgfCBgVGVzdF9tb2RlIHsgd2hpY2hfdGVzdHMgPSBfOyB3aGF0X3RvX2RvID0gYExpc3RfcGFydGl0aW9ucyB9IC0+XG4gICAgTGlzdC5pdGVyIChQcmludGYucHJpbnRmIFwiJXNcXG5cIikgKFBhcnRpdGlvbi5hbGwgKCkpO1xuICAgIFRlc3RfcmVzdWx0LlN1Y2Nlc3NcbiAgfCBgVGVzdF9tb2RlIHsgd2hhdF90b19kbyA9IGBSdW5fcGFydGl0aW9uIF87IHdoaWNoX3Rlc3RzIH0gLT5cbiAgICAobWF0Y2ggIWxvZyB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgY2ggLT4gY2xvc2Vfb3V0IGNoKTtcbiAgICBwcmludF9kZWxheWVkX2Vycm9ycyAoKTtcbiAgICAobWF0Y2ggIXRlc3RzX2ZhaWxlZCwgIXRlc3RfbW9kdWxlc19mYWlsZWQgd2l0aFxuICAgICB8IDAsIDAgLT5cbiAgICAgICBpZiAhc2hvd19jb3VudHNcbiAgICAgICB0aGVuXG4gICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICBcIiVkIHRlc3RzIHJhbiwgJWQgdGVzdF9tb2R1bGVzIHJhblxcbiUhXCJcbiAgICAgICAgICAgIXRlc3RzX3JhblxuICAgICAgICAgICAhdGVzdF9tb2R1bGVzX3JhbjtcbiAgICAgICBsZXQgZXJyb3JzID1cbiAgICAgICAgIGxldCB1bnVzZWRfdGVzdHMgPVxuICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIChfLCBfLCB1c2VkKSAtPiBub3QgIXVzZWQpIHdoaWNoX3Rlc3RzLm9ubHlfdGVzdF9sb2NhdGlvblxuICAgICAgICAgaW5cbiAgICAgICAgIG1hdGNoIHVudXNlZF90ZXN0cyB3aXRoXG4gICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgIHwgXyA6OiBfIC0+IFNvbWUgdW51c2VkX3Rlc3RzXG4gICAgICAgaW5cbiAgICAgICAobWF0Y2ggZXJyb3JzIHdpdGhcbiAgICAgICAgfCBTb21lIHRlc3RzIC0+XG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwicHB4X2lubGluZV90ZXN0IGVycm9yOiB0aGUgZm9sbG93aW5nIC1vbmx5LXRlc3QgZmxhZ3MgbWF0Y2hlZCBub3RoaW5nOlwiO1xuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1biAoZmlsZW5hbWUsIGxpbmVfbnVtYmVyX29wdCwgXykgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIGxpbmVfbnVtYmVyX29wdCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gUHJpbnRmLmVwcmludGYgXCIgJXNcIiBmaWxlbmFtZVxuICAgICAgICAgICAgICAgfCBTb21lIGxpbmVfbnVtYmVyIC0+IFByaW50Zi5lcHJpbnRmIFwiICVzOiVkXCIgZmlsZW5hbWUgbGluZV9udW1iZXIpXG4gICAgICAgICAgICB0ZXN0cztcbiAgICAgICAgICBQcmludGYuZXByaW50ZiBcIi5cXG4lIVwiO1xuICAgICAgICAgIFRlc3RfcmVzdWx0LkVycm9yXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmICF0ZXN0c19yYW4gPSAwICYmICFzdHJpY3RcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwicHB4X2lubGluZV90ZXN0IGVycm9yOiBubyB0ZXN0cyBoYXZlIGJlZW4gcnVuLlxcbiUhXCI7XG4gICAgICAgICAgICBUZXN0X3Jlc3VsdC5FcnJvcilcbiAgICAgICAgICBlbHNlIFRlc3RfcmVzdWx0LlN1Y2Nlc3MpXG4gICAgIHwgY291bnQsIGNvdW50X3Rlc3RfbW9kdWxlcyAtPlxuICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICBcIkZBSUxFRCAlZCAvICVkIHRlc3RzJXNcXG4lIVwiXG4gICAgICAgICBjb3VudFxuICAgICAgICAgIXRlc3RzX3JhblxuICAgICAgICAgKGlmIGNvdW50X3Rlc3RfbW9kdWxlcyA9IDBcbiAgICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIChcIiwgJWQgVEVTXCIgXl4gXCJUX01PRFVMRVNcIikgY291bnRfdGVzdF9tb2R1bGVzKTtcbiAgICAgICBUZXN0X3Jlc3VsdC5GYWlsdXJlKVxuOztcblxubGV0IHVzZV9jb2xvciA9ICF1c2VfY29sb3JcbmxldCBpbl9wbGFjZSA9ICFpbl9wbGFjZVxubGV0IGRpZmZfY29tbWFuZCA9ICFkaWZmX2NvbW1hbmRcbmxldCBkaWZmX3BhdGhfcHJlZml4ID0gIWRpZmZfcGF0aF9wcmVmaXhcbmxldCBzb3VyY2VfdHJlZV9yb290ID0gIXNvdXJjZV90cmVlX3Jvb3RcbmxldCBldmFsdWF0b3JzID0gcmVmIFsgc3VtbWFyaXplIF1cbmxldCBhZGRfZXZhbHVhdG9yIH5mID0gZXZhbHVhdG9ycyA6PSBmIDo6ICFldmFsdWF0b3JzXG5cbmxldCBleGl0ICgpID1cbiAgTGlzdC5tYXAgKGZ1biBmIC0+IGYgKCkpIChMaXN0LnJldiAhZXZhbHVhdG9ycylcbiAgfD4gVGVzdF9yZXN1bHQuY29tYmluZV9hbGxcbiAgfD4gVGVzdF9yZXN1bHQudG9fZXhpdF9jb2RlXG4gIHw+IGV4aXRcbjs7XG4iLCJvcGVuISBCYXNlXG5tb2R1bGUgR2MgPSBTdGRsaWIuR2NcblxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuXG5sZXQgYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhYmxlID0gXCJQUFhfTU9EVUxFX1RJTUVSXCJcblxubGV0IGdldF9hbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgKCkgPVxuICAoKiBhdm9pZCBTdGRsaWIuU3lzLmdldGVudl9vcHQgdG8gcHJlc2VydmUgNC4wNC54IGNvbXBhdGliaWxpdHkgKilcbiAgbWF0Y2ggU3RkbGliLlN5cy5nZXRlbnYgYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhYmxlIHdpdGhcbiAgfCB2YWx1ZSAtPiBTb21lIHZhbHVlXG4gIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuOztcblxubGV0IGFtX3JlY29yZGluZ192YWx1ZSA9IGdldF9hbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgKClcbmxldCBhbV9yZWNvcmRpbmcgPSBPcHRpb24uaXNfc29tZSBhbV9yZWNvcmRpbmdfdmFsdWVcblxubW9kdWxlIER1cmF0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IEludDYzLnRcblxuICBsZXQgdG9fbmFub3NlY29uZHMgdCA9IHRcbiAgbGV0IG9mX25hbm9zZWNvbmRzIHQgPSB0XG5cbiAgbW9kdWxlIHR5cGUgRm9ybWF0ID0gc2lnXG4gICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgdmFsIHRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCA6IHQgbGlzdCAtPiBzdHJpbmcgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgRGVmYXVsdF9mb3JtYXQgPSBzdHJ1Y3RcbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9IFN0cmluZy5jaG9wX3N1ZmZpeF9leG4gc3RyaW5nIH5zdWZmaXg6XCJuc1wiIHw+IEludDYzLm9mX3N0cmluZ1xuICAgIGxldCB0b19zdHJpbmcgbmFub3MgPSBJbnQ2My50b19zdHJpbmcgbmFub3MgXiBcIm5zXCJcbiAgICBsZXQgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IGxpc3QgPSBMaXN0Lm1hcCBsaXN0IH5mOnRvX3N0cmluZ1xuICBlbmRcblxuICBsZXQgZm9ybWF0ID0gcmVmIChtb2R1bGUgRGVmYXVsdF9mb3JtYXQgOiBGb3JtYXQpXG5cbiAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgIGxldCAobW9kdWxlIEZvcm1hdCkgPSAhZm9ybWF0IGluXG4gICAgRm9ybWF0Lm9mX3N0cmluZyBzdHJpbmdcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IHN0cmluZyA9XG4gICAgbGV0IChtb2R1bGUgRm9ybWF0KSA9ICFmb3JtYXQgaW5cbiAgICBGb3JtYXQudG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IHN0cmluZ1xuICA7O1xuZW5kXG5cbm1vZHVsZSBHY19ldmVudHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICB9XG5lbmRcblxubW9kdWxlIFRpbWluZ19ldmVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZGVzY3JpcHRpb24gOiBzdHJpbmdcbiAgICA7IHJ1bnRpbWUgOiBEdXJhdGlvbi50XG4gICAgOyBnY19ldmVudHMgOiBHY19ldmVudHMudFxuICAgIDsgbmVzdGVkX3RpbWluZ19ldmVudHMgOiB0IGxpc3RcbiAgICB9XG5lbmRcblxubW9kdWxlIFRpbWVyID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIDogc3RyaW5nXG4gICAgOyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgOiBEdXJhdGlvbi50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX2djX3N0YXRzIDogR2Muc3RhdFxuICAgIDsgbXV0YWJsZSBuZXN0ZWRfdGltZXIgOiB0IG9wdGlvblxuICAgIDsgbXV0YWJsZSB0aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlciA6IFRpbWluZ19ldmVudC50IGxpc3RcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSA/bmVzdGVkX3RpbWVyICgpID1cbiAgICB7IGN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uID0gXCJcIlxuICAgIDsgY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSA9IEludDYzLnplcm9cbiAgICA7IGN1cnJlbnRseV9ydW5uaW5nX2djX3N0YXRzID0gR2MucXVpY2tfc3RhdCAoKVxuICAgIDsgbmVzdGVkX3RpbWVyXG4gICAgOyB0aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlciA9IFtdXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXNldCB0ID1cbiAgICB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIDwtIFwiXCI7XG4gICAgdC5jdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lIDwtIEludDYzLnplcm87XG4gICAgbWF0Y2ggdC5uZXN0ZWRfdGltZXIgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBuZXN0ZWQgLT4gbmVzdGVkLnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyIDwtIFtdXG4gIDs7XG5cbiAgbGV0IHJlY29yZF9zdGFydCB0IGRlc2NyaXB0aW9uID1cbiAgICBpZiBhbV9yZWNvcmRpbmdcbiAgICB0aGVuIChcbiAgICAgIGFzc2VydCAoU3RyaW5nLmlzX2VtcHR5IHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24pO1xuICAgICAgdC5jdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbiA8LSBkZXNjcmlwdGlvbjtcbiAgICAgIHQuY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgPC0gR2MucXVpY2tfc3RhdCAoKTtcbiAgICAgICgqIGNhbGwgW1RpbWVfbm93XSBhcyBsYXRlIGFzIHBvc3NpYmxlIGJlZm9yZSBydW5uaW5nIHRoZSBtb2R1bGUgYm9keSAqKVxuICAgICAgdC5jdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lIDwtIFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkpXG4gIDs7XG5cbiAgbGV0IHJlY29yZF91bnRpbCB0IGRlc2NyaXB0aW9uID1cbiAgICBpZiBhbV9yZWNvcmRpbmdcbiAgICB0aGVuIChcbiAgICAgICgqIGNvbXB1dGUgW1RpbWVfbm93XSBhcyBzb29uIGFzIHBvc3NpYmxlIGFmdGVyIHJ1bm5pbmcgdGhlIG1vZHVsZSBib2R5ICopXG4gICAgICBsZXQgdW50aWwgPSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpIGluXG4gICAgICBsZXQgc3RhcnQgPSB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgaW5cbiAgICAgIGxldCBnY19zdGF0c19hZnRlciA9IEdjLnF1aWNrX3N0YXQgKCkgaW5cbiAgICAgIGxldCBnY19zdGF0c19iZWZvcmUgPSB0LmN1cnJlbnRseV9ydW5uaW5nX2djX3N0YXRzIGluXG4gICAgICBsZXQgcnVudGltZSA9IEludDYzLiggLSApIHVudGlsIHN0YXJ0IGluXG4gICAgICBhc3NlcnQgKFN0cmluZy5lcXVhbCB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKTtcbiAgICAgIGxldCBnY19ldmVudHMgOiBHY19ldmVudHMudCA9XG4gICAgICAgIHsgbWlub3JfY29sbGVjdGlvbnMgPVxuICAgICAgICAgICAgZ2Nfc3RhdHNfYWZ0ZXIubWlub3JfY29sbGVjdGlvbnMgLSBnY19zdGF0c19iZWZvcmUubWlub3JfY29sbGVjdGlvbnNcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9XG4gICAgICAgICAgICBnY19zdGF0c19hZnRlci5tYWpvcl9jb2xsZWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5tYWpvcl9jb2xsZWN0aW9uc1xuICAgICAgICA7IGNvbXBhY3Rpb25zID0gZ2Nfc3RhdHNfYWZ0ZXIuY29tcGFjdGlvbnMgLSBnY19zdGF0c19iZWZvcmUuY29tcGFjdGlvbnNcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9XG4gICAgICAgIG1hdGNoIHQubmVzdGVkX3RpbWVyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSBuZXN0ZWQgLT4gTGlzdC5yZXYgbmVzdGVkLnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyXG4gICAgICBpblxuICAgICAgbGV0IHRpbWluZ19ldmVudCA6IFRpbWluZ19ldmVudC50ID1cbiAgICAgICAgeyBkZXNjcmlwdGlvbjsgcnVudGltZTsgZ2NfZXZlbnRzOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB9XG4gICAgICBpblxuICAgICAgdC50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlclxuICAgICAgPC0gdGltaW5nX2V2ZW50IDo6IHQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXI7XG4gICAgICByZXNldCB0KVxuICA7O1xuZW5kXG5cbmxldCBkZWZpbml0aW9uX3RpbWVyID0gVGltZXIuY3JlYXRlICgpXG5sZXQgbW9kdWxlX3RpbWVyID0gVGltZXIuY3JlYXRlIH5uZXN0ZWRfdGltZXI6ZGVmaW5pdGlvbl90aW1lciAoKVxubGV0IHJlY29yZF9zdGFydCBtb2R1bGVfbmFtZSA9IFRpbWVyLnJlY29yZF9zdGFydCBtb2R1bGVfdGltZXIgbW9kdWxlX25hbWVcbmxldCByZWNvcmRfdW50aWwgbW9kdWxlX25hbWUgPSBUaW1lci5yZWNvcmRfdW50aWwgbW9kdWxlX3RpbWVyIG1vZHVsZV9uYW1lXG5sZXQgcmVjb3JkX2RlZmluaXRpb25fc3RhcnQgbG9jID0gVGltZXIucmVjb3JkX3N0YXJ0IGRlZmluaXRpb25fdGltZXIgbG9jXG5sZXQgcmVjb3JkX2RlZmluaXRpb25fdW50aWwgbG9jID0gVGltZXIucmVjb3JkX3VudGlsIGRlZmluaXRpb25fdGltZXIgbG9jXG5cbmxldCBnY19ldmVudHNfc3VmZml4X3N0cmluZ1xuICAgICAgKHsgbWlub3JfY29sbGVjdGlvbnM7IG1ham9yX2NvbGxlY3Rpb25zOyBjb21wYWN0aW9ucyB9IDogR2NfZXZlbnRzLnQpXG4gID1cbiAgbGV0IHRvX2xpc3QgZGVzY3JpcHRpb24gY291bnQgPVxuICAgIGlmIGNvdW50ID0gMCB0aGVuIFtdIGVsc2UgWyBJbnQudG9fc3RyaW5nIGNvdW50IF4gXCIgXCIgXiBkZXNjcmlwdGlvbiBdXG4gIGluXG4gIGxldCBzdHJpbmdzID1cbiAgICB0b19saXN0IFwibWlub3IgY29sbGVjdGlvbnNcIiBtaW5vcl9jb2xsZWN0aW9uc1xuICAgIEAgdG9fbGlzdCBcIm1ham9yIGNvbGxlY3Rpb25zXCIgbWFqb3JfY29sbGVjdGlvbnNcbiAgICBAIHRvX2xpc3QgXCJjb21wYWN0aW9uc1wiIGNvbXBhY3Rpb25zXG4gIGluXG4gIGlmIExpc3QuaXNfZW1wdHkgc3RyaW5ncyB0aGVuIFwiXCIgZWxzZSBcIjsgR0M6IFwiIF4gU3RyaW5nLmNvbmNhdCBzdHJpbmdzIH5zZXA6XCIsIFwiXG47O1xuXG5sZXQgd2l0aF9sZWZ0X2NvbHVtbl9yaWdodF9qdXN0aWZpZWQgbGlzdCA9XG4gIGxldCBsZWZ0X2NvbHVtbl93aWR0aCA9XG4gICAgTGlzdC5mb2xkIGxpc3QgfmluaXQ6MCB+ZjooZnVuIHdpZHRoIChsZWZ0LCBfKSAtPiBJbnQubWF4IHdpZHRoIChTdHJpbmcubGVuZ3RoIGxlZnQpKVxuICBpblxuICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gKGxlZnQsIHJpZ2h0KSAtPlxuICAgIFByaW50Zi5zcHJpbnRmIFwiJSpzICVzXCIgbGVmdF9jb2x1bW5fd2lkdGggbGVmdCByaWdodClcbjs7XG5cbmxldCByZWMgdGltaW5nX2V2ZW50c190b19zdHJpbmdzIGxpc3QgfmluZGVudCA9XG4gIGxldCBkdXJhdGlvbl9zdHJpbmdzID1cbiAgICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gKHRpbWluZ19ldmVudCA6IFRpbWluZ19ldmVudC50KSAtPiB0aW1pbmdfZXZlbnQucnVudGltZSlcbiAgICB8PiBEdXJhdGlvbi50b19zdHJpbmdfd2l0aF9zYW1lX3VuaXRcbiAgaW5cbiAgbGV0IHByZWZpeCA9IFN0cmluZy5tYWtlIGluZGVudCAnICcgaW5cbiAgTGlzdC5tYXAyX2V4blxuICAgIGR1cmF0aW9uX3N0cmluZ3NcbiAgICBsaXN0XG4gICAgfmY6XG4gICAgICAoZnVuXG4gICAgICAgIGR1cmF0aW9uX3N0cmluZyB7IHJ1bnRpbWUgPSBfOyBkZXNjcmlwdGlvbjsgZ2NfZXZlbnRzOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB9IC0+XG4gICAgICAgICggZHVyYXRpb25fc3RyaW5nXG4gICAgICAgICwgZGVzY3JpcHRpb25cbiAgICAgICAgICBeIGdjX2V2ZW50c19zdWZmaXhfc3RyaW5nIGdjX2V2ZW50c1xuICAgICAgICAgIF4gU3RyaW5nLmNvbmNhdFxuICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgKHRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB+aW5kZW50OihpbmRlbnQgKyA0KSlcbiAgICAgICAgICAgICAgICAgfmY6KGZ1biBsaW5lIC0+IFwiXFxuXCIgXiBsaW5lKSkgKSlcbiAgfD4gd2l0aF9sZWZ0X2NvbHVtbl9yaWdodF9qdXN0aWZpZWRcbiAgfD4gTGlzdC5tYXAgfmY6KGZ1biBsaW5lIC0+IHByZWZpeCBeIGxpbmUpXG47O1xuXG5sZXQgZmFrZV90aW1pbmdfZXZlbnRzID1cbiAgbGV0IGdjX2V2ZW50cyBpIDogR2NfZXZlbnRzLnQgPVxuICAgIHsgbWlub3JfY29sbGVjdGlvbnMgPSAoaWYgaSAlIDIgPSAxIHRoZW4gMSBlbHNlIDApXG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9IChpZiBpICUgNCA9IDMgdGhlbiAxIGVsc2UgMClcbiAgICA7IGNvbXBhY3Rpb25zID0gKGlmIGkgJSA4ID0gNyB0aGVuIDEgZWxzZSAwKVxuICAgIH1cbiAgaW5cbiAgbGF6eVxuICAgIChMaXN0LmluaXQgMTIgfmY6KGZ1biBpIDogVGltaW5nX2V2ZW50LnQgLT5cbiAgICAgICB7IGRlc2NyaXB0aW9uID0gUHJpbnRmLnNwcmludGYgXCJGYWtlX19EZXBlbmRlbmN5XyVkXCIgKGkgKyAxKVxuICAgICAgIDsgcnVudGltZSA9IEludDYzLm9mX2ludCAoOTAwICogKGkgKyAxKSlcbiAgICAgICA7IGdjX2V2ZW50cyA9IGdjX2V2ZW50cyBpXG4gICAgICAgOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9XG4gICAgICAgICAgIChpZiAoaSArIDEpICUgNCA9IDBcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgTGlzdC5pbml0IChpICsgMSkgfmY6KGZ1biBqIDogVGltaW5nX2V2ZW50LnQgLT5cbiAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uID0gUHJpbnRmLnNwcmludGYgXCJMaW5lICVkXCIgKGogKyAxKVxuICAgICAgICAgICAgICAgIDsgcnVudGltZSA9IEludDYzLm9mX2ludCAoOTAwICogKGogKyAxKSlcbiAgICAgICAgICAgICAgICA7IGdjX2V2ZW50cyA9IGdjX2V2ZW50cyBqXG4gICAgICAgICAgICAgICAgOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9IFtdXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGVsc2UgW10pXG4gICAgICAgfSkpXG47O1xuXG5sZXQgcHJpbnRfcmVjb3JkZWRfdGltaW5nX2V2ZW50cyB0aW1pbmdfZXZlbnRzID1cbiAgbGV0IG5vdGlmeV9vZl9vdmVycmlkaW5nICgpID1cbiAgICBTdGRpby5wcmludF9lbmRsaW5lIFwicHB4X21vZHVsZV90aW1lcjogb3ZlcnJpZGluZyB0aW1lIG1lYXN1cmVtZW50cyBmb3IgdGVzdGluZ1wiXG4gIGluXG4gIGxldCB0aW1pbmdfZXZlbnRzID1cbiAgICBtYXRjaCBPcHRpb24udmFsdWVfZXhuIGFtX3JlY29yZGluZ192YWx1ZSB3aXRoXG4gICAgfCBcIkZBS0VfTU9EVUxFU1wiIC0+XG4gICAgICBub3RpZnlfb2Zfb3ZlcnJpZGluZyAoKTtcbiAgICAgIGZvcmNlIGZha2VfdGltaW5nX2V2ZW50c1xuICAgIHwgc3RyaW5nIC0+XG4gICAgICAobWF0Y2ggRHVyYXRpb24ub2Zfc3RyaW5nIHN0cmluZyB3aXRoXG4gICAgICAgfCBvdmVycmlkZSAtPlxuICAgICAgICAgbm90aWZ5X29mX292ZXJyaWRpbmcgKCk7XG4gICAgICAgICBMaXN0Lm1hcGkgdGltaW5nX2V2ZW50cyB+ZjooZnVuIGluZGV4ICh0aW1pbmdfZXZlbnQgOiBUaW1pbmdfZXZlbnQudCkgLT5cbiAgICAgICAgICAgbGV0IHJ1bnRpbWUgPSBJbnQ2My4oICogKSBvdmVycmlkZSAoSW50NjMub2ZfaW50IChpbmRleCArIDEpKSBpblxuICAgICAgICAgICBsZXQgbmVzdGVkX3RpbWluZ19ldmVudHMgPVxuICAgICAgICAgICAgIExpc3QubWFwaVxuICAgICAgICAgICAgICAgdGltaW5nX2V2ZW50Lm5lc3RlZF90aW1pbmdfZXZlbnRzXG4gICAgICAgICAgICAgICB+ZjooZnVuIGluZGV4IG5lc3RlZF90aW1pbmdfZXZlbnQgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHJ1bnRpbWUgPSBJbnQ2My4oICogKSBvdmVycmlkZSAoSW50NjMub2ZfaW50IChpbmRleCArIDEpKSBpblxuICAgICAgICAgICAgICAgICB7IG5lc3RlZF90aW1pbmdfZXZlbnQgd2l0aCBydW50aW1lIH0pXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHsgdGltaW5nX2V2ZW50IHdpdGggcnVudGltZTsgbmVzdGVkX3RpbWluZ19ldmVudHMgfSlcbiAgICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRpbWluZ19ldmVudHMpXG4gIGluXG4gIHRpbWluZ19ldmVudHMgfD4gdGltaW5nX2V2ZW50c190b19zdHJpbmdzIH5pbmRlbnQ6MCB8PiBMaXN0Lml0ZXIgfmY6U3RkaW8ucHJpbnRfZW5kbGluZVxuOztcblxubGV0ICgpID1cbiAgaWYgYW1fcmVjb3JkaW5nXG4gIHRoZW5cbiAgICBTdGRsaWIuYXRfZXhpdCAoZnVuICgpIC0+XG4gICAgICBwcmludF9yZWNvcmRlZF90aW1pbmdfZXZlbnRzXG4gICAgICAgIChMaXN0LnJldiBtb2R1bGVfdGltZXIudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXIpKVxuOztcbiIsInR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIEJhc2UuVHlwZV9lcXVhbC50ID0gVCA6ICgnYSwgJ2EpIHRcbnR5cGUgKCdhLCAnYikgZXF1YWwgPSAoJ2EsICdiKSB0XG5cbmxldCByZWZsID0gVFxubGV0IGNvbnYgOiB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gYSAtPiBiID0gZnVuIFQgeCAtPiB4XG5cbm1vZHVsZSBMaWZ0IChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYSBYLnQsIGIgWC50KSB0ID0gVFxuZW5kXG4iLCIoKiB0aGlzIGxpYiBzaG91bGQgbm90IGRlcGVuZCBvbiBjb3JlICopXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBpbmNsdWRlIExpc3RcblxuICBsZXQgY29tcGFyZSBjbXAgYSBiID1cbiAgICBsZXQgcmVjIGxvb3AgYSBiID1cbiAgICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCBbXSwgW10gLT4gMFxuICAgICAgfCBbXSwgXyAtPiAtMVxuICAgICAgfCBfLCBbXSAtPiAxXG4gICAgICB8IHggOjogeHMsIHkgOjogeXMgLT5cbiAgICAgICAgbGV0IG4gPSBjbXAgeCB5IGluXG4gICAgICAgIGlmIG4gPSAwIHRoZW4gbG9vcCB4cyB5cyBlbHNlIG5cbiAgICBpblxuICAgIGxvb3AgYSBiXG4gIDs7XG5lbmRcblxubW9kdWxlIFVpZCA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIG5leHQgOiBzdHJpbmcgLT4gdFxuICB2YWwgaGFzaCA6IHQgLT4gaW50XG4gIHZhbCBuYW1lIDogdCAtPiBzdHJpbmdcbiAgdmFsIHN0YXRpYyA6IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgY29kZSA6IGludFxuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIH1cblxuICBsZXQgY29tcGFyZSBhIGIgPSBjb21wYXJlIChhLmNvZGUgOiBpbnQpIGIuY29kZVxuICBsZXQgZXF1YWwgYSBiID0gKGEuY29kZSA6IGludCkgPSBiLmNvZGVcbiAgbGV0IHVpZCA9IHJlZiAwXG5cbiAgbGV0IG5leHQgbmFtZSA9XG4gICAgbGV0IGNvZGUgPSAhdWlkIGluXG4gICAgaW5jciB1aWQ7XG4gICAgeyBjb2RlOyBuYW1lIH1cbiAgOztcblxuICBsZXQgaGFzaCBhID0gSGFzaHRibC5oYXNoIGEuY29kZVxuICBsZXQgbmFtZSBhID0gYS5uYW1lXG4gIGxldCBzdGF0aWMgPSBuZXh0IFwic3RhdGljXCJcbmVuZFxuXG5tb2R1bGUgS2V5ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyB1aWQgOiBVaWQudFxuICAgIDsgcGFyYW1zIDogdCBsaXN0XG4gICAgfVxuXG4gIGxldCByZWMgY29tcGFyZSBrMSBrMiA9XG4gICAgaWYgazEgPT0gazJcbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIGxldCBjbXAgPSBVaWQuY29tcGFyZSBrMS51aWQgazIudWlkIGluXG4gICAgICBpZiBjbXAgPD4gMCB0aGVuIGNtcCBlbHNlIExpc3QuY29tcGFyZSBjb21wYXJlIGsxLnBhcmFtcyBrMi5wYXJhbXMpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIGEgYiA9IGNvbXBhcmUgYSBiID0gMFxuICBsZXQgaGFzaCA9IChIYXNodGJsLmhhc2ggOiB0IC0+IGludClcbiAgbGV0IHN0YXRpYyA9IHsgdWlkID0gVWlkLnN0YXRpYzsgcGFyYW1zID0gW10gfVxuZW5kXG5cbnR5cGUgJ2EgdCA9IEtleS50XG50eXBlICdhIHR5cGVuYW1lID0gJ2EgdFxuXG5sZXQga2V5IHQgPSB0XG5sZXQgdWlkIHQgPSB0LktleS51aWRcbmxldCBuYW1lIHQgPSBVaWQubmFtZSB0LktleS51aWRcbmxldCBzdGF0aWMgPSBLZXkuc3RhdGljXG5sZXQgY3JlYXRlID8obmFtZSA9IFwiVHlwZW5hbWUuY3JlYXRlXCIpICgpID0geyBLZXkudWlkID0gVWlkLm5leHQgbmFtZTsgcGFyYW1zID0gW10gfVxuXG5pbmNsdWRlIHN0cnVjdFxuICAoKiBUaGUgYXJndW1lbnQgZm9yIE9iai5tYWdpYyBoZXJlIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgaW4gY29yZS90eXBlX2VxdWFsICopXG5cbiAgbGV0IHNhbWUgKHR5cGUgYSBiKSAobm0xIDogYSB0KSAobm0yIDogYiB0KSA9IEtleS5jb21wYXJlIG5tMSBubTIgPSAwXG5cbiAgbGV0IHNhbWVfd2l0bmVzcyAodHlwZSBhIGIpIChubTEgOiBhIHQpIChubTIgOiBiIHQpID1cbiAgICBpZiBLZXkuY29tcGFyZSBubTEgbm0yID0gMFxuICAgIHRoZW4gU29tZSAoT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCA6IChhLCBiKSBUeXBlX2VxdWFsLnQpXG4gICAgZWxzZSBOb25lXG4gIDs7XG5cbiAgbGV0IHNhbWVfd2l0bmVzc19leG4gKHR5cGUgYSBiKSAobm0xIDogYSB0KSAobm0yIDogYiB0KSA9XG4gICAgaWYgS2V5LmNvbXBhcmUgbm0xIG5tMiA9IDBcbiAgICB0aGVuIChPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIDogKGEsIGIpIFR5cGVfZXF1YWwudClcbiAgICBlbHNlIGZhaWx3aXRoIFwiVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4blwiXG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgUzAgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0eXBlbmFtZSAtPiAnYSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0eXBlbmFtZSAtPiAnYiB0eXBlbmFtZSAtPiAoJ2EsICdiKSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdHlwZW5hbWUgLT4gJ2IgdHlwZW5hbWUgLT4gJ2MgdHlwZW5hbWUgLT4gKCdhLCAnYiwgJ2MpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90XG4gICAgOiAgJ2EgdHlwZW5hbWVcbiAgICAtPiAnYiB0eXBlbmFtZVxuICAgIC0+ICdjIHR5cGVuYW1lXG4gICAgLT4gJ2QgdHlwZW5hbWVcbiAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTNSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdFxuICAgIDogICdhIHR5cGVuYW1lXG4gICAgLT4gJ2IgdHlwZW5hbWVcbiAgICAtPiAnYyB0eXBlbmFtZVxuICAgIC0+ICdkIHR5cGVuYW1lXG4gICAgLT4gJ2UgdHlwZW5hbWVcbiAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIE1ha2UwIChYIDogTmFtZWRfaW50Zi5TMCkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHsgS2V5LnVpZDsgcGFyYW1zID0gW10gfVxuZW5kXG5cbm1vZHVsZSBNYWtlMSAoWCA6IE5hbWVkX2ludGYuUzEpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhIF0gfVxuZW5kXG5cbm1vZHVsZSBNYWtlMiAoWCA6IE5hbWVkX2ludGYuUzIpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSBiID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGIgXSB9XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogTmFtZWRfaW50Zi5TMykgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgYyA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhOyBiOyBjIF0gfVxuZW5kXG5cbm1vZHVsZSBNYWtlNCAoWCA6IE5hbWVkX2ludGYuUzQpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSBiIGMgZCA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhOyBiOyBjOyBkIF0gfVxuZW5kXG5cbm1vZHVsZSBNYWtlNSAoWCA6IE5hbWVkX2ludGYuUzUpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSBiIGMgZCBlID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGI7IGM7IGQ7IGUgXSB9XG5lbmRcblxubW9kdWxlIEtleV90YWJsZSA9IEhhc2h0YmwuTWFrZSAoS2V5KVxuXG5tb2R1bGUgVGFibGUgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBkYXRhID0gRGF0YSA6ICdhIHQgKiAnYSBYLnQgLT4gZGF0YVxuICB0eXBlIHQgPSBkYXRhIEtleV90YWJsZS50XG5cbiAgbGV0IGNyZWF0ZSBpbnQgPSBLZXlfdGFibGUuY3JlYXRlIGludFxuICBsZXQgbWVtIHRhYmxlIG5hbWUgPSBLZXlfdGFibGUubWVtIHRhYmxlIChrZXkgbmFtZSlcbiAgbGV0IHNldCB0YWJsZSBuYW1lIGRhdGEgPSBLZXlfdGFibGUucmVwbGFjZSB0YWJsZSAoa2V5IG5hbWUpIChEYXRhIChuYW1lLCBkYXRhKSlcblxuICBsZXQgZmluZCAodHlwZSBhKSB0YWJsZSAobmFtZSA6IGEgdHlwZW5hbWUpID1cbiAgICBsZXQgZGF0YSA9XG4gICAgICB0cnkgU29tZSAoS2V5X3RhYmxlLmZpbmQgdGFibGUgKGtleSBuYW1lKSkgd2l0aFxuICAgICAgfCBCYXNlLk5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbiAgICBpblxuICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChEYXRhIChuYW1lJywgZGF0YSkpIC0+XG4gICAgICAoZnVuICh0eXBlIGIpIChuYW1lJyA6IGIgdHlwZW5hbWUpIChkYXRhIDogYiBYLnQpIC0+XG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gKHNhbWVfd2l0bmVzc19leG4gbmFtZScgbmFtZSA6IChiLCBhKSBUeXBlX2VxdWFsLnQpIGluXG4gICAgICAgICBTb21lIChkYXRhIDogYSBYLnQpKVxuICAgICAgICBuYW1lJ1xuICAgICAgICBkYXRhXG4gIDs7XG5lbmRcblxubGV0IGZhaWwgdWlkX2EgdWlkX2IgPVxuICBsZXQgbXNnID1cbiAgICBQcmludGYuc3ByaW50ZiBcIlR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG4gJVMgJVNcIiAoVWlkLm5hbWUgdWlkX2EpIChVaWQubmFtZSB1aWRfYilcbiAgaW5cbiAgZmFpbHdpdGggbXNnXG47O1xuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8xIChBIDogUzEpIChCIDogUzEpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYS4gKCdhIEEudCwgJ2EgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fMiAoQSA6IFMyKSAoQiA6IFMyKSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EgJ2IuICgoJ2EsICdiKSBBLnQsICgnYSwgJ2IpIEIudCkgVHlwZV9lcXVhbC50IH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fMyAoQSA6IFMzKSAoQiA6IFMzKSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EgJ2IgJ2MuICgoJ2EsICdiLCAnYykgQS50LCAoJ2EsICdiLCAnYykgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBpZiBVaWQuZXF1YWwgdWlkX2EgdWlkX2IgdGhlbiB7IGVxID0gT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCB9IGVsc2UgZmFpbCB1aWRfYSB1aWRfYlxuICA7O1xuZW5kXG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzQgKEEgOiBTNCkgKEIgOiBTNCkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBlcSA6ICdhICdiICdjICdkLiAoKCdhLCAnYiwgJ2MsICdkKSBBLnQsICgnYSwgJ2IsICdjLCAnZCkgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fNSAoQSA6IFM1KSAoQiA6IFM1KSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZXEgOlxuICAgICAgICAnYSAnYiAnYyAnZCAnZS4gKCgnYSwgJ2IsICdjLCAnZCwgJ2UpIEEudCwgKCdhLCAnYiwgJ2MsICdkLCAnZSkgQi50KSBUeXBlX2VxdWFsLnRcbiAgICB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBpZiBVaWQuZXF1YWwgdWlkX2EgdWlkX2IgdGhlbiB7IGVxID0gT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCB9IGVsc2UgZmFpbCB1aWRfYSB1aWRfYlxuICA7O1xuZW5kXG4iLCIoKipcbiAgIFBsYWNlIGhvbGRlciBmb3IgY29tbW9uIFZhcmlhbnRzIGFuZCBGaWVsZHMgaW50ZXJmYWNlXG4qKVxuXG5tb2R1bGUgTSAoWCA6IHNpZ1xuICAgICgqKlxuICAgICAgIFRoaXMgZnVuY3RvciBpcyBlc3NlbnRpYWxseSB0aGVyZSBiZWNhdXNlIHdlIHVzZSB0aGlzIHNhbWUgaW50ZXJmYWNlIGluIGRpZmZlcmVudFxuICAgICAgIGNvbnRleHRzLCB3aXRoIGRpZmZlcmVudCB0eXBlcyBmb3IgWydhIHRdLlxuXG4gICAgICAgMSkgT25lIHVzZSBjYXNlIGZvciBpdCBpcyB3aGVyZSBbJ2EgWC50ID0gJ2EgVHlwZXJlcC50XS4gIFRoZXNlIGludGVyZmFjZXMgYXJlIHRoZW5cbiAgICAgICBwYXJ0IG9mIHRoZSB0eXBlIHdpdG5lc3MgYnVpbHQgZm9yIGEgdHlwZSBjb250YWluaW5nIGEgcmVjb3JkIG9yIGEgdmFyaWFudCBpbiBpdHNcbiAgICAgICBzdHJ1Y3R1cmUuIFt0cmF2ZXJzZV0gd2lsbCBnaXZlIGEgd2F5IG9mIGFjY2Vzc2luZyB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlXG4gICAgICAgYXJndW1lbnRzIG9mIGEgdmFyaWFudCBvciByZWNvcmQgdHlwZS5cblxuICAgICAgIDIpIEFub3RoZXIgdXNlIGNhc2UgaXMgZm9yIGJ1aWxkaW5nIFwic3RhZ2VkIGdlbmVyaWMgY29tcHV0YXRpb25zXCIuIEluIHRoYXQgY2FzZSwgdGhlXG4gICAgICAgdHlwZSBbJ2EgWC50XSBpcyB0aGUgdHlwZSBvZiB0aGUgY29tcHV0YXRpb24gdGhhdCBpcyBiZWluZyBidWlsdC4gIFt0cmF2ZXJzZV1cbiAgICAgICByZXR1cm5zIHRoZSBjb21wdXRhdGlvbiBidWlsdCBmb3IgdGhlIGFyZ3VtZW50LiBUaGUgaW50ZXJmYWNlIG5vIGxvbmdlciBleHBvcnRzXG4gICAgICAgdGhlIHR5cGVyZXAgb2YgdGhlIGFyZ3VtZW50cyBpbiBob3BlcyBvZiBlbmZvcmNpbmcgdGhhdCBubyB0eXBlcmVwIHRyYXZlcnNhbFxuICAgICAgIGhhcHBlbnMgYXQgcnVudGltZSBpZiB0aGUgY29tcHV0YXRpb24gaGFwcGVuIHRvIGJlIGEgZnVuY3Rpb24uXG4gICAgKilcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogVGhlIGZ1bmN0aW9ucyBwcmVmaXhlZCBieSBbaW50ZXJuYWxdIGFzIHdlbGwgYXMgdGhlIG1vZHVsZSBzdWZmaXhlZCBieSBbX2ludGVybmFsXVxuICAgICBhcmUgdXNlZCBieSB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gW3dpdGggdHlwZXJlcF0gYXMgd2VsbCBhcyBzb21lXG4gICAgIGludGVybmFscyBvZiB0aGUgdHlwZXJlcCBsaWJyYXJ5LiBEbyBub3QgY29uc2lkZXIgdXNpbmcgdGhlc2Ugc29tZXdoZXJlIGVsc2UuICBUaGV5XG4gICAgIHNob3VsZCBpZGVhbGx5IG5vdCBiZSBleHBvcnRlZCBvdXRzaWRlIHRoZSB0eXBlcmVwIGxpYnJhcnksIGJ1dCB0aGUgZ2VuZXJhdGVkIGNvZGVcbiAgICAgbmVlZHMgc29tZWhvdyB0byBhY2Nlc3MgdGhpcywgZXZlbiBvdXRzaWRlLiAqKVxuXG4gIG1vZHVsZSBUYWdfaW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIGNyZWF0ZSA9XG4gICAgICB8IEFyZ3Mgb2YgKCdhcmdzIC0+ICd2YXJpYW50KVxuICAgICAgfCBDb25zdCBvZiAndmFyaWFudFxuXG4gICAgdHlwZSAoJ3ZhcmlhbnQsICdhcmdzKSB0ID1cbiAgICAgIHsgbGFiZWwgOiBzdHJpbmdcbiAgICAgIDsgcmVwIDogJ2FyZ3MgWC50XG4gICAgICA7IGFyaXR5IDogaW50XG4gICAgICA7IGFyZ3NfbGFiZWxzIDogc3RyaW5nIGxpc3RcbiAgICAgIDsgaW5kZXggOiBpbnRcbiAgICAgIDsgb2NhbWxfcmVwciA6IGludFxuICAgICAgOyB0eWlkIDogJ2FyZ3MgVHlwZW5hbWUudFxuICAgICAgOyBjcmVhdGUgOiAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGVcbiAgICAgIH1cbiAgZW5kXG5cbiAgKCoqXG4gICAgIFdpdG5lc3Mgb2YgYSB0YWcsIHRoYXQgaXMgYW4gaXRlbSBpbiBhIHZhcmlhbnQgdHlwZSwgYWxzbyBjYWxsZWQgYW4gXCJhcHBsaWVkXG4gICAgIHZhcmlhbnQgQ29uc3RydWN0b3JcIlxuXG4gICAgIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHZhcmlhbnQgdHlwZSwgdGhlIHNlY29uZCBpcyB0aGUgdHlwZSBvZiB0aGUgdGFnXG4gICAgIHBhcmFtZXRlcnMuICBFeGFtcGxlOlxuXG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID1cbiAgICAgICAgIHwgQSBvZiAoaW50ICogc3RyaW5nKVxuICAgICAgICAgfCBCIG9mIHN0cmluZ1xuICAgICAgICAgfCBDIG9mIHsgeCA6IGludDsgeSA6IHN0cmluZyB9XG4gICAgIF19XG5cbiAgICAgdGhpcyB0eXBlIGhhcyB0aHJlZSBjb25zdHJ1Y3RvcnMuIEZvciBlYWNoIG9mIHRoZW0gd2UnbGwgaGF2ZSBhIGNvcnJlc3BvbmRpbmdcbiAgICAgW1RhZy50XTpcblxuICAgICB7W1xuICAgICAgIHZhbCB0YWdfQSA6ICh0LCAoaW50ICogc3RyaW5nKSkgVGFnLnRcbiAgICAgICB2YWwgdGFnX0IgOiAodCwgc3RyaW5nICAgICAgICApIFRhZy50XG4gICAgICAgdmFsIHRhZ19DIDogKHQsIChpbnQgKiBzdHJpbmcpKSBUYWcudFxuICAgICBdfVxuXG4gICAgIE5vdGUsIGlubGluZSByZWNvcmQgaW4gdmFyaWFudCBhcmUgdHlwZWQgYXMgaWYgdGhlaXIgZGVmaW5pdGlvbiB3YXMgdXNpbmcgdHVwbGVzLFxuICAgICB3aXRob3V0IHRoZSBwYXJlbnRoZXNpcy4gIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZWlyIHJ1bnRpbWUgcmVwcmVzZW50YXRpb24uICBCdXRcbiAgICAgdGhlIGRpc3RpbmN0aW9uIGlzIGNhcnJpZWQgYW5kIGF2YWlsYWJsZSBmb3IgaW50cm9zcGVjdGlvbiBhcyBwYXJ0IG9mIHRoZSBbVGFnLnRdLlxuICAgICBTZWUgW2FyZ3NfbGFiZWxzXS4gKilcbiAgbW9kdWxlIFRhZyA6IHNpZ1xuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgY3JlYXRlID1cbiAgICAgIHwgQXJncyBvZiAoJ2FyZ3MgLT4gJ3ZhcmlhbnQpXG4gICAgICB8IENvbnN0IG9mICd2YXJpYW50XG5cbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIHRcblxuICAgICgqKlxuICAgICAgIFRoZSBuYW1lIG9mIHRoZSBjb25zdHJ1Y3RvciBhcyBpdCBpcyBnaXZlbiBpbiB0aGUgY29uY3JldGUgc3ludGF4XG4gICAgICAgRXhhbXBsZXM6XG5cbiAgICAgICB7dlxuICAgICAgICAgQ29uc3RydWN0b3IgICAgICAgIHwgbGFiZWxcbiAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgIHwgQSBvZiBpbnQgICAgICAgICB8ICBcIkFcIlxuICAgICAgICAgfCBgYSBvZiBpbnQgICAgICAgIHwgIFwiYVwiXG4gICAgICAgICB8IGBBIG9mIGludCAgICAgICAgfCAgXCJBXCJcbiAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQgfSB8ICBcIkFcIlxuICAgICAgIHZ9XG5cbiAgICAgICBmb3Igc3RhbmRhcmQgdmFyaWFudCwgdGhlIG9jYW1sIHN5bnRheCBpbXBsaWVzIHRoYXQgdGhpcyBsYWJlbCB3aWxsIGFsd2F5cyBzdGFydHNcbiAgICAgICB3aXRoIGEgY2FwaXRhbCBsZXR0ZXIuIEZvciBwb2x5bW9ycGhpYyB2YXJpYW50cywgdGhpcyBtaWdodCBiZSBhIGxvd2VyY2FzZSBjaGFyLlxuICAgICAgIEZvciBwb2x5bW9ycGhpYyB2YXJpYW50LCB0aGlzIGxhYmVsIGRvZXMgbm90IGluY2x1ZGUgdGhlIFtgXSBjaGFyYWN0ZXIuXG4gICAgKilcbiAgICB2YWwgbGFiZWwgOiAoXywgXykgdCAtPiBzdHJpbmdcblxuICAgICgqKlxuICAgICAgIFRoZSBzaXplIG9mIHRoZSBvY2FtbCBoZWFwIGJsb2NrIGNvbnRhaW5pbmcgdGhlIGFyZ3VtZW50c1xuXG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge3ZcbiAgICAgICAgICAwOiB8IEEgfCAnQVxuICAgICAgICAgIDE6IHwgQSBvZiBpbnQgfCBgQSBvZiBpbnQgfCBBIG9mIChpbnQgKiBpbnQpIHwgYEEgb2YgKGludCAqIGludClcbiAgICAgICAgICAgICB8IGBBIG9mIGludCAqIGludFxuICAgICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnR9XG4gICAgICAgICAgMjogfCBBIG9mIGludCAqIGZsb2F0XG4gICAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludDsgeSA6IHN0cmluZyB9XG4gICAgICAgICAgZXRjLlxuICAgICAgIHZ9XG4gICAgKilcbiAgICB2YWwgYXJpdHkgOiAoXywgXykgdCAtPiBpbnRcblxuICAgICgqKiBUaGUgbGFiZWwgb2YgdGhlIGZpZWxkcyBmb3IgaW5saW5lIHJlY29yZHMuICBGb3Igb3RoZXIgZm9ybXMgb2YgdGFncywgdGhpcyBpcyB0aGVcbiAgICAgICAgZW1wdHkgbGlzdC4gIFdoZW4gdGhpcyByZXR1cm5zIGEgbm9uIGVtcHR5IGxpc3QsIHRoZSBsZW5ndGggb2YgdGhlIHJldHVybmVkIGxpc3RcbiAgICAgICAgaXMgZXF1YWwgdG8gdGhlIGFyaXR5LlxuXG4gICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICAge3ZcbiAgICAgICAgICgxKSBFbXB0eTpcblxuICAgICAgICAgICB8IEEgfCAnQVxuICAgICAgICAgICB8IEEgb2YgaW50IHwgYEEgb2YgaW50IHwgQSBvZiAoaW50ICogaW50KSB8IGBBIG9mIChpbnQgKiBpbnQpXG4gICAgICAgICAgIHwgYEEgb2YgaW50ICogaW50XG4gICAgICAgICAgIHwgQSBvZiBpbnQgKiBmbG9hdFxuXG4gICAgICAgICAoMikgTm9uIGVtcHR5OlxuXG4gICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQgfSAgICAgICAgICAgICAgIC0+IFsgXCJ4XCIgXVxuICAgICAgICAgICB8IEEgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH0gICAtPiBbIFwieFwiIDsgXCJ5XCIgXVxuICAgICAgIHZ9XG4gICAgKilcbiAgICB2YWwgYXJnc19sYWJlbHMgOiAoXywgXykgdCAtPiBzdHJpbmcgbGlzdFxuXG4gICAgKCoqXG4gICAgICAgVGhlIGluZGV4IG9mIHRoZSBjb25zdHJ1Y3RvciBpbiB0aGUgbGlzdCBvZiBhbGwgdGhlIHZhcmlhbnQgdHlwZSdzIGNvbnN0cnVjdG9yc1xuICAgICAgIEV4YW1wbGVzOlxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICB8IEEgb2YgaW50ICAgICAgICAgICgqIDAgKilcbiAgICAgICAgICAgfCBCICAgICAgICAgICAgICAgICAoKiAxICopXG4gICAgICAgICAgIHwgQyBvZiBpbnQgICAgICAgICAgKCogMiAqKVxuICAgICAgICAgICB8IEQgb2YgY2hhciAgICAgICAgICgqIDMgKilcbiAgICAgICAgICAgfCBFIG9mIHsgeCA6IGludCB9ICAoKiA0ICopXG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBpbmRleCA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqXG4gICAgICAgb2NhbWxfcmVwciBpcyByZWxhdGVkIHRvIHRoZSBydW50aW1lIG9mIG9iamVjdHMuIHRoaXMgaXMgZXNzZW50aWFsbHkgYSB3YXkgb2ZcbiAgICAgICBnaXZpbmcgb25lIHRoZSBhYmlsaXR5IHRvIHJlYnVpbGQgZHluYW1pY2FsbHkgYW4gW09iai50XSByZXByZXNlbnRpbmcgYSB0YWcuXG5cbiAgICAgICBQb2x5bW9ycGhpYyB2YXJpYW50czpcbiAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgIFtvY2FtbF9yZXByXSBpcyB0aGUgaGFzaCBvZiB0aGUgbGFiZWwsIGFzIGRvbmUgYnkgdGhlIGNvbXBpbGVyLlxuICAgICAgIEV4YW1wbGU6XG4gICAgICAgcHJpbnRfaW50IChPYmoubWFnaWMgYGJhcikgICgqIDQ4OTUxODcgKilcbiAgICAgICBwcmludF9pbnQgKE9iai5tYWdpYyAnZm9vKSAgKCogNTA5NzIyMiAqKVxuXG4gICAgICAgU3RhbmRhcmRzIHZhcmlhbnRzOlxuICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgICAgIFtvY2FtbF9yZXByXSBpcyB0aGUgdGFnIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbnN0cnVjdG9yIHdpdGhpbiB0aGUgdHlwZS5cbiAgICAgICB0aGUgd2F5IGl0IHdvcmtzIGluIHRoZSBvY2FtbCBydW50aW1lIGlzIGJ5IHBhcnRpdGlvbmluZyB0aGUgY29uc3RydWN0b3JzIHJlZ2FyZGluZ1xuICAgICAgIGlmIHRoZXkgaGF2ZSBzb21lIGFyZ3VtZW50cyBvciBub3QsIHByZXNlcnZpbmcgdGhlIG9yZGVyLCB0aGVuIGFzc2lnbiBpbmNyZWFzaW5nXG4gICAgICAgaW5kZXggd2l0aGluZyBlYWNoIHBhcnRpdGlvbi5cbiAgICAgICBFeGFtcGxlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9ICAgICAgICAgICAgICAgICAgKCogbm8gYXJnICopICAoKiBhcmdzICopXG4gICAgICAgICAgIHwgQSAgICAgICAgICAgICAgICAgICAgICAgKCogMCAqKVxuICAgICAgICAgICB8IEIgb2YgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogMCAqKVxuICAgICAgICAgICB8IEMgICAgICAgICAgICAgICAgICAgICAgICgqIDEgKilcbiAgICAgICAgICAgfCBEIG9mIChmbG9hdCAqIHN0cmluZykgICAgICAgICAgICAgICAgICgqIDEgKilcbiAgICAgICAgICAgfCBFICAgICAgICAgICAgICAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgRiAgICAgICAgICAgICAgICAgICAgICAgKCogMyAqKVxuICAgICAgICAgICB8IEcgb2Ygc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogMiAqKVxuICAgICAgICAgICB8IEggb2YgeyB4IDogaW50IH0gICAgICAgICAgICAgICAgICAgICAgKCogMyAqKVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgb2NhbWxfcmVwciA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqXG4gICAgICAgR2l2ZSBiYWNrIGEgd2F5IG9mIGNvbnN0cnVjdGluZyBhIHZhbHVlIG9mIHRoYXQgY29uc3RydWN0b3IgZnJvbSBpdHMgYXJndW1lbnRzLlxuXG4gICAgICAgRXhhbXBsZXM6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgfCBBIG9mIChpbnQgKiBzdHJpbmcpXG4gICAgICAgICAgIHwgQiBvZiBpbnQgKiBmbG9hdFxuICAgICAgICAgICB8IENcbiAgICAgICAgICAgfCBEIG9mIHsgeCA6IGludDsgeSA6IHN0cmluZyB9XG4gICAgICAgXX1cblxuICAgICAgIFtjcmVhdGVdIHdpbGwgcmV0dXJuIHNvbWV0aGluZyBlcXVpdmFsZW50IHRvOlxuICAgICAgIHRhZ19BIDogW0FyZ3MgKGZ1biAoZCA6IChpbnQgKiBzdHJpbmcpIC0+IEEgZCldXG4gICAgICAgdGFnX0IgOiBbQXJncyAoZnVuIChpLCBmKSAtPiBCIChpLCBmKSldXG4gICAgICAgdGFnX0MgOiBbQ29uc3QgQ11cbiAgICAgICB0YWdfRCA6IFtBcmdzIChmdW4gKHgsIHkpIC0+IEQgeyB4OyB5IH0pXVxuICAgICopXG4gICAgdmFsIGNyZWF0ZSA6ICgndmFyaWFudCwgJ2FyZ3MpIHQgLT4gKCd2YXJpYW50LCAnYXJncykgY3JlYXRlXG5cbiAgICAoKiogcmV0dXJuIHRoZSB0eXBlX25hbWUgb2YgdGhlIGFyZ3VtZW50cy4gbWlnaHQgYmUgdXNlZCB0byBwZXJmb3JtIHNvbWUgbG9va3VwIGJhc2VkXG4gICAgICAgIG9uIGl0IHdoaWxlIGJ1aWxkaW5nIGEgY29tcHV0YXRpb24gZm9yIGV4YW1wbGUgKilcbiAgICB2YWwgdHlpZCA6IChfLCAnYXJncykgdCAtPiAnYXJncyBUeXBlbmFtZS50XG5cbiAgICAoKiogZ2V0IHRoZSByZXByZXNlbnRhdGlvbi9jb21wdXRhdGlvbiBvZiB0aGUgYXJndW1lbnRzICopXG4gICAgdmFsIHRyYXZlcnNlIDogKF8sICdhcmdzKSB0IC0+ICdhcmdzIFgudFxuXG4gICAgKCogdXNlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiB0byBidWlsZCB0eXBlIHdpdG5lc3Nlcywgb3IgYnkgc29tZSBpbnRlcm5hbCBwYXJ0cyBvZlxuICAgICAgIHR5cGVyZXAuIHlvdSBzaG91bGQgZmVlbCBiYWQgaWYgeW91IG5lZWQgdG8gdXNlIGl0IGluIHNvbWUgdXNlciBjb2RlICopXG4gICAgdmFsIGludGVybmFsX3VzZV9vbmx5IDogKCdhLCAnYikgVGFnX2ludGVybmFsLnQgLT4gKCdhLCAnYikgdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRhZ19pbnRlcm5hbFxuXG4gICAgbGV0IGxhYmVsIHQgPSB0LmxhYmVsXG4gICAgbGV0IGFyaXR5IHQgPSB0LmFyaXR5XG4gICAgbGV0IGFyZ3NfbGFiZWxzIHQgPSB0LmFyZ3NfbGFiZWxzXG4gICAgbGV0IGluZGV4IHQgPSB0LmluZGV4XG4gICAgbGV0IG9jYW1sX3JlcHIgdCA9IHQub2NhbWxfcmVwclxuICAgIGxldCBjcmVhdGUgdCA9IHQuY3JlYXRlXG4gICAgbGV0IHR5aWQgdCA9IHQudHlpZFxuICAgIGxldCB0cmF2ZXJzZSB0ID0gdC5yZXBcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFZhcmlhbnRfaW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlIF8gdGFnID0gVGFnIDogKCd2YXJpYW50LCAnYSkgVGFnLnQgLT4gJ3ZhcmlhbnQgdGFnXG4gICAgdHlwZSBfIHZhbHVlID0gVmFsdWUgOiAoJ3ZhcmlhbnQsICdhKSBUYWcudCAqICdhIC0+ICd2YXJpYW50IHZhbHVlXG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyB0eXBlbmFtZSA6ICdhIFR5cGVuYW1lLnRcbiAgICAgIDsgdGFncyA6ICdhIHRhZyBhcnJheVxuICAgICAgOyBwb2x5bW9ycGhpYyA6IGJvb2xcbiAgICAgIDsgdmFsdWUgOiAnYSAtPiAnYSB2YWx1ZVxuICAgICAgfVxuICBlbmRcblxuICBtb2R1bGUgVmFyaWFudCA6IHNpZ1xuICAgICgqKlxuICAgICAgIEFuIGV4aXN0ZW50aWFsIHR5cGUgdXNlZCB0byBnYXRoZXIgYWxsIHRoZSB0YWdzIGNvbnN0aXR1aW5nIGEgdmFyaWFudFxuICAgICAgIHR5cGUuIHRoZSBbJ3ZhcmlhbnRdIHBhcmFtZXRlciBpcyB0aGUgdmFyaWFudCB0eXBlLCBpdCBpcyB0aGUgc2FtZSBmb3IgYWxsIHRoZVxuICAgICAgIGNvbnN0cnVjdG9ycyBvZiB0aGF0IHZhcmlhbnQgdHlwZS4gVGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlcnMgbWlnaHQgYmUgZGlmZmVyZW50XG4gICAgICAgZm9yIGVhY2ggY29uc3RydWN0b3IgYW5kIGlzIHRodXMgZXhpc3RlbnRpYWxcbiAgICAqKVxuICAgIHR5cGUgXyB0YWcgPSBUYWcgOiAoJ3ZhcmlhbnQsICdhcmdzKSBUYWcudCAtPiAndmFyaWFudCB0YWdcblxuICAgICgqKlxuICAgICAgIEEgc2ltaWxhciBleGlzdGVudGlhbCBjb25zdHJ1Y3RvciB0byBbXyB0YWddIGJ1dCB0aGlzIG9uZSBob2xkcyBhIHZhbHVlIHdob3NlIHR5cGVcbiAgICAgICBpcyB0aGUgYXJndW1lbnRzIG9mIHRoZSB0YWcgY29uc3RydWN0b3IuICBBIHZhbHVlIG9mIHR5cGUgWydhIHZhbHVlXSBpcyBhIHBhaXIgb2ZcbiAgICAgICAoMSkgYSB2YWx1ZSBvZiB2YXJpYW50IHR5cGUgWydhXSBhbG9uZyB3aXRoICgyKSBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuICAgICAgIGNvbnN0cnVjdG9yIHdpdGhpbiB0aGUgdHlwZSBbJ2FdXG4gICAgKilcbiAgICB0eXBlIF8gdmFsdWUgPSBWYWx1ZSA6ICgndmFyaWFudCwgJ2FyZ3MpIFRhZy50ICogJ2FyZ3MgLT4gJ3ZhcmlhbnQgdmFsdWVcblxuICAgICgqKlxuICAgICAgIFdpdG5lc3Mgb2YgYSB2YXJpYW50IHR5cGUuIFRoZSBwYXJhbWV0ZXIgaXMgdGhlIHR5cGUgb2YgdGhlIHZhcmlhbnQgdHlwZSB3aXRuZXNzZWQuXG4gICAgKilcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG5cbiAgICAoKipcbiAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGFncyBvZiB0aGlzIHZhcmlhbnQgdHlwZSBkZWZpbml0aW9uLlxuICAgICopXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBHZXQgdGhlIG50aCB0YWcgb2YgdGhpcyB2YXJpYW50IHR5cGUsIGluZGV4ZWQgZnJvbSAwLlxuICAgICopXG4gICAgdmFsIHRhZyA6ICdhIHQgLT4gaW50IC0+ICdhIHRhZ1xuXG4gICAgKCoqXG4gICAgICAgRGlzdGluZ3Vpc2ggcG9seW1vcnBoaWMgdmFyaWFudHMgYW5kIHN0YW5kYXJkIHZhcmlhbnRzLiBUeXBpY2FsbHksIHBvbHltb3JwaGljXG4gICAgICAgdmFyaWFudHMgdGFncyBzdGFydHMgd2l0aCB0aGUgW2BdIGNoYXJhY3Rlci5cbiAgICAgICBFeGFtcGxlXG4gICAgICAgcG9seW1vcnBoaWMgdmFyaWFudDogdHlwZSB0ID0gWyBgQSB8IGBCIF1cbiAgICAgICBzdGFuZGFyZCB2YXJpYW50OiAgICB0eXBlIHQgPSBBIHwgQlxuICAgICopXG4gICAgdmFsIGlzX3BvbHltb3JwaGljIDogXyB0IC0+IGJvb2xcblxuICAgICgqKlxuICAgICAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gYSB2YWx1ZSBvZiB0aGlzIHZhcmlhbnQgdHlwZS5cbiAgICAqKVxuICAgIHZhbCB2YWx1ZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgdmFsdWVcblxuICAgICgqKlxuICAgICAgIGZvbGRpbmcgYWxvbmcgdGhlIHRhZ3Mgb2YgdGhlIHZhcmlhbnQgdHlwZVxuICAgICopXG4gICAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjYyAtPiBmOignYWNjIC0+ICdhIHRhZyAtPiAnYWNjKSAtPiAnYWNjXG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAnYSBWYXJpYW50X2ludGVybmFsLnQgLT4gJ2EgdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFZhcmlhbnRfaW50ZXJuYWxcblxuICAgIGxldCB0eXBlbmFtZV9vZl90IHQgPSB0LnR5cGVuYW1lXG4gICAgbGV0IGxlbmd0aCB0ID0gQXJyYXkubGVuZ3RoIHQudGFnc1xuICAgIGxldCB0YWcgdCBpbmRleCA9IHQudGFncy4oaW5kZXgpXG4gICAgbGV0IGlzX3BvbHltb3JwaGljIHQgPSB0LnBvbHltb3JwaGljXG4gICAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IEFycmF5LmZvbGRfbGVmdCBmIGluaXQgdC50YWdzXG4gICAgbGV0IGludGVybmFsX3VzZV9vbmx5IHQgPSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBGaWVsZF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgKCdyZWNvcmQsICdmaWVsZCkgdCA9XG4gICAgICB7IGxhYmVsIDogc3RyaW5nXG4gICAgICA7IHJlcCA6ICdmaWVsZCBYLnRcbiAgICAgIDsgaW5kZXggOiBpbnRcbiAgICAgIDsgdHlpZCA6ICdmaWVsZCBUeXBlbmFtZS50XG4gICAgICA7IGdldCA6ICdyZWNvcmQgLT4gJ2ZpZWxkXG4gICAgICA7ICgqIHNldCA6ICgncmVjb3JkIC0+ICdmaWVsZCAtPiB1bml0KSBvcHRpb247IChcXCogbXV0YWJsZSBmaWVsZCAqXFwpICopXG4gICAgICAgIGlzX211dGFibGUgOiBib29sXG4gICAgICB9XG4gIGVuZFxuXG4gICgqKlxuICAgICBXaXRuZXNzIG9mIGEgZmllbGQsIHRoYXQgaXMgYW4gaXRlbSBpbiBhIHJlY29yZCB0eXBlLlxuICAgICBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIHRoZSByZWNvcmQgdHlwZSwgdGhlIHNlY29uZCBpcyB0aGUgdHlwZSBvZiB0aGUgZmllbGQuXG4gICAgIEV4YW1wbGU6XG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID0geyB4IDogaW50IDsgeSA6IHN0cmluZyB9XG4gICAgIF19XG4gICAgIFRoaXMgdHlwZSBoYXMgdHdvIGZpZWxkcy4gZm9yIGVhY2ggb2YgdGhlbSB3ZSdsbCBoYXZlIGEgY29ycmVzcG9uZGluZyBbRmllbGQudF1cblxuICAgICB2YWwgZmllbGRfeCA6ICh0LCBpbnQpIEZpZWxkLnRcbiAgICAgdmFsIGZpZWxkX3kgOiAodCwgc3RyaW5nKSBGaWVsZC50XG4gICopXG4gIG1vZHVsZSBGaWVsZCA6IHNpZ1xuICAgIHR5cGUgKCdyZWNvcmQsICdmaWVsZCkgdFxuXG5cbiAgICAoKipcbiAgICAgICBUaGUgbmFtZSBvZiB0aGUgZmllbGQgYXMgaXQgaXMgZ2l2ZW4gaW4gdGhlIGNvbmNyZXRlIHN5bnRheFxuICAgICAgIEV4YW1wbGVzOlxuICAgICAgIHtbXG4gICAgICAgICB7IHggICA6IGludDsgICAgICgqIFwieFwiICopXG4gICAgICAgICAgIGZvbyA6IHN0cmluZzsgICgqIFwiZm9vXCIgKilcbiAgICAgICAgICAgYmFyIDogZmxvYXQ7ICAgKCogXCJiYXJcIiAqKVxuICAgICAgICAgfVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgbGFiZWwgOiAoXywgXykgdCAtPiBzdHJpbmdcblxuICAgICgqKlxuICAgICAgIFRoZSAwLWJhc2VkIGluZGV4IG9mIHRoZSBmaWVsZCBpbiB0aGUgbGlzdCBvZiBhbGwgZmllbGRzIGZvciB0aGlzIHJlY29yZCB0eXBlLlxuICAgICAgIEV4YW1wbGU6XG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9IHtcbiAgICAgICAgICAgeCAgIDogaW50OyAgICAgKCogMCAqKVxuICAgICAgICAgICBmb28gOiBzdHJpbmc7ICAoKiAxICopXG4gICAgICAgICAgIGJhciA6IHN0cmluZzsgICgqIDIgKilcbiAgICAgICAgIH1cbiAgICAgICBdfVxuICAgICopXG4gICAgdmFsIGluZGV4IDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBGaWVsZCBhY2Nlc3NvcnMuIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhlIGRvdCBvcGVyYXRpb24uXG4gICAgICAgW0ZpZWxkLmdldCBiYXJfZmllbGQgdF0gcmV0dXJucyB0aGUgZmllbGQgW2Jhcl0gb2YgdGhlIHJlY29yZCB2YWx1ZSBbdF0sIGp1c3QgdGhlXG4gICAgICAgc2FtZSBhcyBbdC5iYXJdXG4gICAgKilcbiAgICB2YWwgZ2V0IDogKCdyZWNvcmQsICdmaWVsZCkgdCAtPiAncmVjb3JkIC0+ICdmaWVsZFxuXG4gICAgKCoqIHJldHVybiB3aGV0aGVyIHRoZSBmaWVsZCBpcyBtdXRhYmxlLCBpLmUuIHdoZXRoZXIgaXRzIGRlY2xhcmF0aW9uIGlzIHByZWZpeGVkIHdpdGhcbiAgICAgICAgdGhlIGtleXdvcmQgW211dGFibGVdICopXG4gICAgdmFsIGlzX211dGFibGUgOiAoXywgXykgdCAtPiBib29sXG5cbiAgICAoKiogcmV0dXJuIHRoZSB0eXBlX25hbWUgb2YgdGhlIGFyZ3VtZW50cy4gIE1pZ2h0IGJlIHVzZWQgdG8gcGVyZm9ybSBzb21lIGxvb2t1cCBiYXNlZFxuICAgICAgICBvbiBpdCAqKVxuICAgIHZhbCB0eWlkIDogKF8sICdmaWVsZCkgdCAtPiAnZmllbGQgVHlwZW5hbWUudFxuXG4gICAgKCoqIGdldCB0aGUgY29tcHV0YXRpb24gb2YgdGhlIGFyZ3VtZW50cyAqKVxuICAgIHZhbCB0cmF2ZXJzZSA6IChfLCAnZmllbGQpIHQgLT4gJ2ZpZWxkIFgudFxuXG4gICAgKCogdXNlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiB0byBidWlsZCB0eXBlIHdpdG5lc3Nlcywgb3IgYnkgc29tZSBpbnRlcm5hbCBwYXJ0cyBvZlxuICAgICAgIHR5cGVyZXAuIHlvdSBzaG91bGQgZmVlbCBiYWQgaWYgeW91IG5lZWQgdG8gdXNlIGl0IGluIHNvbWUgdXNlciBjb2RlICopXG4gICAgdmFsIGludGVybmFsX3VzZV9vbmx5IDogKCdhLCAnYikgRmllbGRfaW50ZXJuYWwudCAtPiAoJ2EsICdiKSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRmllbGRfaW50ZXJuYWxcblxuICAgIGxldCBsYWJlbCB0ID0gdC5sYWJlbFxuICAgIGxldCBpbmRleCB0ID0gdC5pbmRleFxuICAgIGxldCBnZXQgdCA9IHQuZ2V0XG4gICAgbGV0IGlzX211dGFibGUgdCA9IHQuaXNfbXV0YWJsZVxuICAgIGxldCB0eWlkIHQgPSB0LnR5aWRcbiAgICBsZXQgdHJhdmVyc2UgdCA9IHQucmVwXG4gICAgbGV0IGludGVybmFsX3VzZV9vbmx5IHQgPSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBSZWNvcmRfaW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlIF8gZmllbGQgPSBGaWVsZCA6ICgncmVjb3JkLCAnYSkgRmllbGQudCAtPiAncmVjb3JkIGZpZWxkXG4gICAgdHlwZSAncmVjb3JkIGZpZWxkcyA9IHsgZ2V0IDogJ2ZpZWxkLiAoJ3JlY29yZCwgJ2ZpZWxkKSBGaWVsZC50IC0+ICdmaWVsZCB9XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyB0eXBlbmFtZSA6ICdhIFR5cGVuYW1lLnRcbiAgICAgIDsgZmllbGRzIDogJ2EgZmllbGQgYXJyYXlcbiAgICAgIDsgaGFzX2RvdWJsZV9hcnJheV90YWcgOiBib29sXG4gICAgICA7IGNyZWF0ZSA6ICdhIGZpZWxkcyAtPiAnYVxuICAgICAgfVxuICBlbmRcblxuICBtb2R1bGUgUmVjb3JkIDogc2lnXG4gICAgKCoqXG4gICAgICAgQW4gZXhpc3RlbnRpYWwgdHlwZSB1c2VkIHRvIGdhdGhlciBhbGwgdGhlIGZpZWxkcyBjb25zdGl0dWluZyBhIHJlY29yZCB0eXBlLiB0aGVcbiAgICAgICBbJ3JlY29yZF0gcGFyYW1ldGVyIGlzIHRoZSByZWNvcmQgdHlwZSwgaXQgaXMgdGhlIHNhbWUgZm9yIGFsbCB0aGUgZmllbGQgb2YgdGhhdFxuICAgICAgIHJlY29yZCB0eXBlLiBUaGUgdHlwZSBvZiB0aGUgZmllbGRzIG1pZ2h0IGJlIGRpZmZlcmVudCBmb3IgZWFjaCBmaWVsZCBhbmQgaXMgdGh1c1xuICAgICAgIGV4aXN0ZW50aWFsLlxuICAgICopXG4gICAgdHlwZSBfIGZpZWxkID0gRmllbGQgOiAoJ3JlY29yZCwgJ2EpIEZpZWxkLnQgLT4gJ3JlY29yZCBmaWVsZFxuXG4gICAgKCoqXG4gICAgICAgWydyZWNvcmQgZmllbGRzXSBpcyBhIHR5cGUgaXNvbW9ycGhpYyB0byBbJ3JlY29yZF0uICBUaGlzIGdpdmVzIGEgd2F5IHRvIGdldCB0aGVcbiAgICAgICBmaWVsZCB2YWx1ZSBmb3IgZWFjaCBmaWVsZCBvZiB0aGUgcmVjb3JkLiAgVGhlIGFkdmFudGFnZSBvZiB0aGlzIHJlcHJlc2VudGF0aW9uIGlzXG4gICAgICAgdGhhdCBpdCBpcyBjb252ZW5pZW50IGZvciB3cml0aW5nIGdlbmVyaWMgY29tcHV0YXRpb25zLlxuICAgICopXG4gICAgdHlwZSAncmVjb3JkIGZpZWxkcyA9IHsgZ2V0IDogJ2ZpZWxkLiAoJ3JlY29yZCwgJ2ZpZWxkKSBGaWVsZC50IC0+ICdmaWVsZCB9XG5cbiAgICAoKipcbiAgICAgICBXaXRuZXNzIG9mIGEgcmVjb3JkIHR5cGUuIFRoZSBwYXJhbWV0ZXIgaXMgdGhlIHR5cGUgb2YgdGhlIHJlY29yZCB0eXBlIHdpdG5lc3NlZC5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcblxuICAgICgqKlxuICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBmaWVsZHMgb2YgdGhpcyByZWNvcmQgdHlwZSBkZWZpbml0aW9uLlxuICAgICopXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBHZXQgdGhlIG50aCBmaWVsZCBvZiB0aGlzIHJlY29yZCB0eXBlLCBpbmRleGVkIGZyb20gMC5cbiAgICAqKVxuICAgIHZhbCBmaWVsZCA6ICdhIHQgLT4gaW50IC0+ICdhIGZpZWxkXG5cbiAgICAoKipcbiAgICAgICBUaGlzIGlzIGEgbG93IGxldmVsIG1ldGFkYXRhIHJlZ2FyZGluZyB0aGUgd2F5IHRoZSBvY2FtbCBjb21waWxlciByZXByZXNlbnQgdGhlXG4gICAgICAgYXJyYXkgdW5kZXJuZWF0aCB0aGF0IGlzIHRoZSBydW50aW1lIHZhbHVlIG9mIGEgcmVjb3JkIG9mIHR5cGUgWydhXSBnaXZlbiBhIHdpdG5lc3NcbiAgICAgICBvZiB0eXBlIFsnYSB0XS4gW2hhc19kb3VibGVfYXJyYXlfdGFnIHddIHJldHVybnMgW3RydWVdIGlmIHRoZSBhcnJheSB0aGF0XG4gICAgICAgcmVwcmVzZW50cyBydW50aW1lIHZhbHVlcyBvZiB0aGlzIHR5cGUgaXMgYW4gb3B0aW1pemVkIG9jYW1sIGZsb2F0IGFycmF5LlxuICAgICAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGJlIHRydWUgZm9yIHJlY29yZCB3aGVyZSBhbGwgZmllbGRzIGFyZSBzdGF0aWNhbGx5IGtub3duIGFzIHRvXG4gICAgICAgYmUgW2Zsb2F0c10uXG5cbiAgICAgICBOb3RlIHRoYXQgeW91IGNhbid0IGdldCB0aGlzIGluZm9ybWF0aW9uIGR5bmFtaWNhbGx5IGJ5IGluc3BlY3RpbmcgdGhlIHR5cGVyZXAgb25jZVxuICAgICAgIGl0IGlzIGFwcGxpZWQsIGJlY2F1c2UgdGhlcmUgaXMgYXQgdGhpcyBwb2ludCBubyB3YXkgdG8gdGVsbCB3aGV0aGVyIG9uZSBvZiB0aGVcbiAgICAgICBmaWVsZCBpcyBwb2x5bW9ycGhpYyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuICAgICopXG4gICAgdmFsIGhhc19kb3VibGVfYXJyYXlfdGFnIDogXyB0IC0+IGJvb2xcblxuICAgICgqKlxuICAgICAgIEV4cG9zZSBvbmUgZGlyZWN0aW9uIG9mIHRoZSBpc29tb3JwaGlzbSBiZXR3ZWVuIGEgdmFsdWUgb2YgdHlwZSBbJ2FdIGFuZCBhIHZhbHVlIG9mXG4gICAgICAgdHlwZSBbJ2EgZmllbGRzXS4gQmFzaWNhbGx5LCBnaXZlbiBhbiBlbmNvZGluZyB3YXkgb2YgYWNjZXNzaW5nIHRoZSB2YWx1ZSBvZiBhbGxcbiAgICAgICB0aGUgZmllbGRzIG9mIGEgcmVjb3JkLCBjcmVhdGUgdGhhdCByZWNvcmQgYW5kIHJldHVybiBpdC5cbiAgICAqKVxuICAgIHZhbCBjcmVhdGUgOiAnYSB0IC0+ICdhIGZpZWxkcyAtPiAnYVxuXG4gICAgKCoqXG4gICAgICAgZm9sZGluZyBhbG9uZyB0aGUgdGFncyBvZiB0aGUgdmFyaWFudCB0eXBlXG4gICAgKilcbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCdhY2MgLT4gJ2EgZmllbGQgLT4gJ2FjYykgLT4gJ2FjY1xuXG4gICAgKCogdXNlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiB0byBidWlsZCB0eXBlIHdpdG5lc3Nlcywgb3IgYnkgc29tZSBpbnRlcm5hbCBwYXJ0cyBvZlxuICAgICAgIHR5cGVyZXAuIHlvdSBzaG91bGQgZmVlbCBiYWQgaWYgeW91IG5lZWQgdG8gdXNlIGl0IGluIHNvbWUgdXNlciBjb2RlICopXG4gICAgdmFsIGludGVybmFsX3VzZV9vbmx5IDogJ2EgUmVjb3JkX2ludGVybmFsLnQgLT4gJ2EgdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFJlY29yZF9pbnRlcm5hbFxuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgdCA9IHQudHlwZW5hbWVcbiAgICBsZXQgbGVuZ3RoIHQgPSBBcnJheS5sZW5ndGggdC5maWVsZHNcbiAgICBsZXQgZmllbGQgdCBpbmRleCA9IHQuZmllbGRzLihpbmRleClcbiAgICBsZXQgaGFzX2RvdWJsZV9hcnJheV90YWcgdCA9IHQuaGFzX2RvdWJsZV9hcnJheV90YWdcbiAgICBsZXQgY3JlYXRlIHQgPSB0LmNyZWF0ZVxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPSBBcnJheS5mb2xkX2xlZnQgZiBpbml0IHQuZmllbGRzXG4gICAgbGV0IGludGVybmFsX3VzZV9vbmx5IHQgPSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBNIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVwID0gJ2EgdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgcmVwXG4gICAgZW5kKVxuZW5kXG4iLCJtb2R1bGUgTmFtZV9vZiA9IHN0cnVjdFxuICBsZXQgdHlwZW5hbWVfb2ZfaW50ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICBsZXQgbmFtZSA9IFwiaW50XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9pbnQzMiA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gaW50MzJcblxuICAgICAgICBsZXQgbmFtZSA9IFwiaW50MzJcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2ludDY0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnQ2NFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnQ2NFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfbmF0aXZlaW50ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBuYXRpdmVpbnRcblxuICAgICAgICBsZXQgbmFtZSA9IFwibmF0aXZlaW50XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9jaGFyID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBjaGFyXG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImNoYXJcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2Zsb2F0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBmbG9hdFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJmbG9hdFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2Zfc3RyaW5nID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgICBsZXQgbmFtZSA9IFwic3RyaW5nXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9ieXRlcyA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYnl0ZXNcblxuICAgICAgICBsZXQgbmFtZSA9IFwiYnl0ZXNcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2Jvb2wgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGJvb2xcblxuICAgICAgICBsZXQgbmFtZSA9IFwiYm9vbFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfdW5pdCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gdW5pdFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJ1bml0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIG1vZHVsZSBNX29wdGlvbiA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGlvblxuXG4gICAgICBsZXQgbmFtZSA9IFwib3B0aW9uXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX29wdGlvbiA9IE1fb3B0aW9uLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9saXN0ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICBsZXQgbmFtZSA9IFwibGlzdFwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9saXN0ID0gTV9saXN0LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9hcnJheSA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGFycmF5XG5cbiAgICAgIGxldCBuYW1lID0gXCJhcnJheVwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9hcnJheSA9IE1fYXJyYXkudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2xhenlfdCA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG4gICAgICBsZXQgbmFtZSA9IFwibGF6eV90XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2xhenlfdCA9IE1fbGF6eV90LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9yZWYgPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSByZWZcblxuICAgICAgbGV0IG5hbWUgPSBcInJlZlwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9yZWYgPSBNX3JlZi50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fZnVuY3Rpb24gPSBUeXBlbmFtZS5NYWtlMiAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSAtPiAnYlxuXG4gICAgICBsZXQgbmFtZSA9IFwiZnVuY3Rpb25cIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfZnVuY3Rpb24gPSBNX2Z1bmN0aW9uLnR5cGVuYW1lX29mX3RcblxuICB0eXBlIHR1cGxlMCA9IHVuaXRcblxuICBtb2R1bGUgTV90dXBsZTAgPSBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICB0eXBlIHQgPSB0dXBsZTBcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlMFwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTAgPSBNX3R1cGxlMC50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGUyID0gVHlwZW5hbWUuTWFrZTIgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgKiAnYlxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGUyXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlMiA9IE1fdHVwbGUyLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTMgPSBUeXBlbmFtZS5NYWtlMyAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2EgKiAnYiAqICdjXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTNcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGUzID0gTV90dXBsZTMudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3R1cGxlNCA9IFR5cGVuYW1lLk1ha2U0IChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ID0gJ2EgKiAnYiAqICdjICogJ2RcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlNFwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTQgPSBNX3R1cGxlNC50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGU1ID0gVHlwZW5hbWUuTWFrZTUgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0ID0gJ2EgKiAnYiAqICdjICogJ2QgKiAnZVxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGU1XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlNSA9IE1fdHVwbGU1LnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgcmVjIFR5cGVyZXAgOiBzaWdcbiAgdHlwZSBfIHQgPVxuICAgIHwgSW50IDogaW50IHRcbiAgICB8IEludDMyIDogaW50MzIgdFxuICAgIHwgSW50NjQgOiBpbnQ2NCB0XG4gICAgfCBOYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHwgQ2hhciA6IGNoYXIgdFxuICAgIHwgRmxvYXQgOiBmbG9hdCB0XG4gICAgfCBTdHJpbmcgOiBzdHJpbmcgdFxuICAgIHwgQnl0ZXMgOiBieXRlcyB0XG4gICAgfCBCb29sIDogYm9vbCB0XG4gICAgfCBVbml0IDogdW5pdCB0XG4gICAgfCBPcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gICAgfCBMaXN0IDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgICB8IEFycmF5IDogJ2EgdCAtPiAnYSBhcnJheSB0XG4gICAgfCBMYXp5IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICAgIHwgUmVmIDogJ2EgdCAtPiAnYSByZWYgdFxuICAgIHwgRnVuY3Rpb24gOiAoJ2RvbSB0ICogJ3JuZyB0KSAtPiAoJ2RvbSAtPiAncm5nKSB0XG4gICAgfCBUdXBsZSA6ICdhIFR5cGVyZXAuVHVwbGUudCAtPiAnYSB0XG4gICAgfCBSZWNvcmQgOiAnYSBUeXBlcmVwLlJlY29yZC50IC0+ICdhIHRcbiAgICB8IFZhcmlhbnQgOiAnYSBUeXBlcmVwLlZhcmlhbnQudCAtPiAnYSB0XG4gICAgfCBOYW1lZCA6ICgnYSBUeXBlcmVwLk5hbWVkLnQgKiAnYSB0IGxhenlfdCBvcHRpb24pIC0+ICdhIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIG1vZHVsZSB0eXBlIFQwID0gc2lnXG4gICAgICB0eXBlIG5hbWVkXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQxID0gc2lnXG4gICAgICB0eXBlICdhIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgYSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMiA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2IgVHlwZW5hbWUudCAtPiAoJ2EsICdiKSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQzID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYykgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ0ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNSA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBlXG5cbiAgICAgIHZhbCBlIDogZSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdlIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQsIGUpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgICgqIHRoZXJlIHRoZSBtb2R1bGUgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0byBkZWFsIHdpdGggYSB0eXBlIFt0XSB3aXRoXG4gICAgICAgcGFyYW1ldGVycyB3aG9zZSBraW5kIGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgdHlwZSB2YXJpYWJsZTogWydhICd0XSwgZXZlbiB3aXRoXG4gICAgICAgYSBnYWR0LiAqKVxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFQwIG9mIChtb2R1bGUgVDAgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDEgb2YgKG1vZHVsZSBUMSB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMiBvZiAobW9kdWxlIFQyIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQzIG9mIChtb2R1bGUgVDMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDQgb2YgKG1vZHVsZSBUNCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNSBvZiAobW9kdWxlIFQ1IHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICB2YWwgYXJpdHkgOiBfIHQgLT4gaW50XG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcbiAgICB2YWwgbmFtZSA6IF8gdCAtPiBzdHJpbmdcbiAgZW5kXG5cbiAgbW9kdWxlIFR1cGxlIDogc2lnXG4gICAgKCogdGhlc2UgY29uc3RydWN0b3JzIGNvdWxkIGJlIHBsdW5nZWQgYXQgdG9wbGV2ZWwgb2YgVHlwZXJlcC50LCBob3dldmVyIGl0IGlzIGxlc3NcbiAgICAgICB2ZXJib3NlIHRoYXQgd2F5ICopXG4gICAgdHlwZSBfIHQgPVxuICAgICAgfCBUMiA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQpIC0+ICgnYSAqICdiKSB0XG4gICAgICB8IFQzIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCkgLT4gKCdhICogJ2IgKiAnYykgdFxuICAgICAgfCBUNCA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgICAgIHwgVDUgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQgKiAnZSBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkICogJ2UpIHRcblxuICAgIHZhbCBhcml0eSA6IF8gdCAtPiBpbnRcbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuICBlbmRcblxuICBpbmNsdWRlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVHlwZXJlcC50XG5cbiAgdmFsIHNhbWUgOiBfIHQgLT4gXyB0IC0+IGJvb2xcbiAgdmFsIHNhbWVfd2l0bmVzcyA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EsICdiKSBUeXBlX2VxdWFsLnQgb3B0aW9uXG4gIHZhbCBzYW1lX3dpdG5lc3NfZXhuIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSwgJ2IpIFR5cGVfZXF1YWwudFxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuICB2YWwgaGVhZCA6ICdhIHQgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgXyB0ID1cbiAgICB8IEludCA6IGludCB0XG4gICAgfCBJbnQzMiA6IGludDMyIHRcbiAgICB8IEludDY0IDogaW50NjQgdFxuICAgIHwgTmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgICB8IENoYXIgOiBjaGFyIHRcbiAgICB8IEZsb2F0IDogZmxvYXQgdFxuICAgIHwgU3RyaW5nIDogc3RyaW5nIHRcbiAgICB8IEJ5dGVzIDogYnl0ZXMgdFxuICAgIHwgQm9vbCA6IGJvb2wgdFxuICAgIHwgVW5pdCA6IHVuaXQgdFxuICAgIHwgT3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb24gdFxuICAgIHwgTGlzdCA6ICdhIHQgLT4gJ2EgbGlzdCB0XG4gICAgfCBBcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXkgdFxuICAgIHwgTGF6eSA6ICdhIHQgLT4gJ2EgbGF6eV90IHRcbiAgICB8IFJlZiA6ICdhIHQgLT4gJ2EgcmVmIHRcbiAgICB8IEZ1bmN0aW9uIDogKCdkb20gdCAqICdybmcgdCkgLT4gKCdkb20gLT4gJ3JuZykgdFxuICAgIHwgVHVwbGUgOiAnYSBUeXBlcmVwLlR1cGxlLnQgLT4gJ2EgdFxuICAgIHwgUmVjb3JkIDogJ2EgVHlwZXJlcC5SZWNvcmQudCAtPiAnYSB0XG4gICAgfCBWYXJpYW50IDogJ2EgVHlwZXJlcC5WYXJpYW50LnQgLT4gJ2EgdFxuICAgIHwgTmFtZWQgOiAoJ2EgVHlwZXJlcC5OYW1lZC50ICogJ2EgdCBsYXp5X3Qgb3B0aW9uKSAtPiAnYSB0XG5cbiAgdHlwZSBwYWNrZWQgPSBUIDogJ2EgdCAtPiBwYWNrZWRcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBUMCA9IHNpZ1xuICAgICAgdHlwZSBuYW1lZFxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6IG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMSA9IHNpZ1xuICAgICAgdHlwZSAnYSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIGEgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDIgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYikgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiAnYSBUeXBlbmFtZS50IC0+ICdiIFR5cGVuYW1lLnQgLT4gKCdhLCAnYikgbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMyA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNCA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGRcblxuICAgICAgdmFsIGQgOiBkIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdkIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYywgZCkgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDUgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZVxuXG4gICAgICB2YWwgZSA6IGUgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkLCBlKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICAoKiB0aGVyZSB0aGUgbW9kdWxlIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIG5lZWQgdG8gZGVhbCB3aXRoIGEgdHlwZSBbdF0gd2l0aFxuICAgICAgIHBhcmFtZXRlcnMgd2hvc2Uga2luZCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIHR5cGUgdmFyaWFibGU6IFsnYSAndF0sIGV2ZW4gd2l0aFxuICAgICAgIGEgZ2FkdC4gKilcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBUMCBvZiAobW9kdWxlIFQwIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQxIG9mIChtb2R1bGUgVDEgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDIgb2YgKG1vZHVsZSBUMiB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMyBvZiAobW9kdWxlIFQzIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQ0IG9mIChtb2R1bGUgVDQgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDUgb2YgKG1vZHVsZSBUNSB3aXRoIHR5cGUgdCA9ICdhKVxuXG4gICAgbGV0IGFyaXR5ID0gZnVuY3Rpb25cbiAgICAgIHwgVDAgXyAtPiAwXG4gICAgICB8IFQxIF8gLT4gMVxuICAgICAgfCBUMiBfIC0+IDJcbiAgICAgIHwgVDMgXyAtPiAzXG4gICAgICB8IFQ0IF8gLT4gNFxuICAgICAgfCBUNSBfIC0+IDVcbiAgICA7O1xuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgKHR5cGUgYSkgPSBmdW5jdGlvblxuICAgICAgfCBUMCByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUMSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUMiByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMiB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUMyByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUMyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUNCByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUNCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgICAgfCBUNSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUNSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICAgIFQudHlwZW5hbWVfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgbmFtZSByZXAgPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkICh0eXBlbmFtZV9vZl90IHJlcCkpXG4gIGVuZFxuXG4gIG1vZHVsZSBUdXBsZSA9IHN0cnVjdFxuICAgICgqIHRoZXNlIGNvbnN0cnVjdG9ycyBjb3VsZCBiZSBwbHVuZ2VkIGF0IHRvcGxldmVsIG9mIFR5cGVyZXAudCwgaG93ZXZlciBpdCBpcyBsZXNzXG4gICAgICAgdmVyYm9zZSB0aGlzIHdheSAqKVxuICAgIHR5cGUgXyB0ID1cbiAgICAgIHwgVDIgOiAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50KSAtPiAoJ2EgKiAnYikgdFxuICAgICAgfCBUMyA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQpIC0+ICgnYSAqICdiICogJ2MpIHRcbiAgICAgIHwgVDQgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkKSB0XG4gICAgICB8IFQ1IDpcbiAgICAgICAgICAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50ICogJ2QgVHlwZXJlcC50ICogJ2UgVHlwZXJlcC50KVxuICAgICAgICAgIC0+ICgnYSAqICdiICogJ2MgKiAnZCAqICdlKSB0XG5cbiAgICBsZXQgYXJpdHkgOiB0eXBlIGEuIGEgdCAtPiBpbnQgPSBmdW5jdGlvblxuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQyIF8gLT4gMlxuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQzIF8gLT4gM1xuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQ0IF8gLT4gNFxuICAgICAgfCBUeXBlcmVwLlR1cGxlLlQ1IF8gLT4gNVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA6IHR5cGUgYS4gYSB0IC0+IGEgVHlwZW5hbWUudCA9IGZ1bmN0aW9uXG4gICAgICB8IFQyIChhLCBiKSAtPlxuICAgICAgICBOYW1lX29mLnR5cGVuYW1lX29mX3R1cGxlMiAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgIHwgVDMgKGEsIGIsIGMpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGUzXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGMpXG4gICAgICB8IFQ0IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICBOYW1lX29mLnR5cGVuYW1lX29mX3R1cGxlNFxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYSlcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGIpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBjKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgZClcbiAgICAgIHwgVDUgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGU1XG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGMpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBkKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgZSlcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLk0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXAgPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSByZXBcbiAgICBlbmQpXG5cbiAgbGV0IHJlYyB0eXBlbmFtZV9vZl90IDogdHlwZSBhLiBhIHQgLT4gYSBUeXBlbmFtZS50ID0gZnVuY3Rpb25cbiAgICB8IEludCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludFxuICAgIHwgSW50MzIgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9pbnQzMlxuICAgIHwgSW50NjQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9pbnQ2NFxuICAgIHwgTmF0aXZlaW50IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfbmF0aXZlaW50XG4gICAgfCBDaGFyIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfY2hhclxuICAgIHwgRmxvYXQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9mbG9hdFxuICAgIHwgU3RyaW5nIC0+IE5hbWVfb2YudHlwZW5hbWVfb2Zfc3RyaW5nXG4gICAgfCBCeXRlcyAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2J5dGVzXG4gICAgfCBCb29sIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYm9vbFxuICAgIHwgVW5pdCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX3VuaXRcbiAgICB8IE9wdGlvbiByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9vcHRpb24gKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgTGlzdCByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9saXN0ICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IEFycmF5IHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2FycmF5ICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IExhenkgcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfbGF6eV90ICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IFJlZiByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9yZWYgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgRnVuY3Rpb24gKGRvbSwgcm5nKSAtPlxuICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl9mdW5jdGlvbiAodHlwZW5hbWVfb2ZfdCBkb20pICh0eXBlbmFtZV9vZl90IHJuZylcbiAgICB8IFR1cGxlIHJlcCAtPiBUeXBlcmVwLlR1cGxlLnR5cGVuYW1lX29mX3QgcmVwXG4gICAgfCBSZWNvcmQgcmVwIC0+IFR5cGVyZXAuUmVjb3JkLnR5cGVuYW1lX29mX3QgcmVwXG4gICAgfCBWYXJpYW50IHJlcCAtPiBUeXBlcmVwLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IE5hbWVkIChuYW1lLCBfKSAtPiBOYW1lZC50eXBlbmFtZV9vZl90IG5hbWVcbiAgOztcblxuICBsZXQgcmVjIHNhbWVfd2l0bmVzcyA6IHR5cGUgYSBiLiBhIHQgLT4gYiB0IC0+IChhLCBiKSBUeXBlX2VxdWFsLnQgb3B0aW9uID1cbiAgICBmdW4gdDEgdDIgLT5cbiAgICAgIGxldCBtb2R1bGUgRSA9IFR5cGVfZXF1YWwgaW5cbiAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICB8IE5hbWVkIChuYW1lMSwgcjEpLCBOYW1lZCAobmFtZTIsIHIyKSAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzIChOYW1lZC50eXBlbmFtZV9vZl90IG5hbWUxKSAoTmFtZWQudHlwZW5hbWVfb2ZfdCBuYW1lMilcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4XG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgKG1hdGNoIHIxLCByMiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGxhenkgdDEpLCBTb21lIChsYXp5IHQyKSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgICAgIHwgU29tZSAobGF6eSB0MSksIE5vbmUgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICAgICB8IE5vbmUsIFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgICAgfCBOb25lLCBOb25lIC0+IE5vbmUpKVxuICAgICAgfCBOYW1lZCAoXywgcjEpLCB0MiAtPlxuICAgICAgICAobWF0Y2ggcjEgd2l0aFxuICAgICAgICAgfCBTb21lIChsYXp5IHQxKSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCB0MSwgTmFtZWQgKF8sIHIyKSAtPlxuICAgICAgICAobWF0Y2ggcjIgd2l0aFxuICAgICAgICAgfCBTb21lIChsYXp5IHQyKSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCBJbnQsIEludCAtPiBTb21lIEUuVFxuICAgICAgfCBJbnQzMiwgSW50MzIgLT4gU29tZSBFLlRcbiAgICAgIHwgSW50NjQsIEludDY0IC0+IFNvbWUgRS5UXG4gICAgICB8IE5hdGl2ZWludCwgTmF0aXZlaW50IC0+IFNvbWUgRS5UXG4gICAgICB8IENoYXIsIENoYXIgLT4gU29tZSBFLlRcbiAgICAgIHwgRmxvYXQsIEZsb2F0IC0+IFNvbWUgRS5UXG4gICAgICB8IFN0cmluZywgU3RyaW5nIC0+IFNvbWUgRS5UXG4gICAgICB8IEJ5dGVzLCBCeXRlcyAtPiBTb21lIEUuVFxuICAgICAgfCBCb29sLCBCb29sIC0+IFNvbWUgRS5UXG4gICAgICB8IFVuaXQsIFVuaXQgLT4gU29tZSBFLlRcbiAgICAgIHwgT3B0aW9uIHIxLCBPcHRpb24gcjIgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyByMSByMiB3aXRoXG4gICAgICAgICB8IE5vbmUgYXMgeCAtPiB4XG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geClcbiAgICAgIHwgTGlzdCByMSwgTGlzdCByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBBcnJheSByMSwgQXJyYXkgcjIgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyByMSByMiB3aXRoXG4gICAgICAgICB8IE5vbmUgYXMgeCAtPiB4XG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geClcbiAgICAgIHwgTGF6eSByMSwgTGF6eSByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBSZWYgcjEsIFJlZiByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBGdW5jdGlvbiAoZG9tMSwgcm5nMSksIEZ1bmN0aW9uIChkb20yLCBybmcyKSAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIGRvbTEgZG9tMiwgc2FtZV93aXRuZXNzIHJuZzEgcm5nMiB3aXRoXG4gICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lKVxuICAgICAgfCBUdXBsZSB0MSwgVHVwbGUgdDIgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBUID0gVHlwZXJlcC5UdXBsZSBpblxuICAgICAgICAobWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgIHwgVC5UMiAoYTEsIGIxKSwgVC5UMiAoYTIsIGIyKSAtPlxuICAgICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIGExIGEyLCBzYW1lX3dpdG5lc3MgYjEgYjIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UMyAoYTEsIGIxLCBjMSksIFQuVDMgKGEyLCBiMiwgYzIpIC0+XG4gICAgICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgYTEgYTIsIHNhbWVfd2l0bmVzcyBiMSBiMiwgc2FtZV93aXRuZXNzIGMxIGMyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfLCBfIHwgXywgTm9uZSwgXyB8IF8sIF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UNCAoYTEsIGIxLCBjMSwgZDEpLCBULlQ0IChhMiwgYjIsIGMyLCBkMikgLT5cbiAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgIHNhbWVfd2l0bmVzcyBhMSBhMiwgc2FtZV93aXRuZXNzIGIxIGIyLCBzYW1lX3dpdG5lc3MgYzEgYzIsIHNhbWVfd2l0bmVzcyBkMSBkMlxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfLCBfLCBfIHwgXywgTm9uZSwgXywgXyB8IF8sIF8sIE5vbmUsIF8gfCBfLCBfLCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICAgICB8IFQuVDUgKGExLCBiMSwgYzEsIGQxLCBlMSksIFQuVDUgKGEyLCBiMiwgYzIsIGQyLCBlMikgLT5cbiAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICggc2FtZV93aXRuZXNzIGExIGEyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGIxIGIyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGMxIGMyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGQxIGQyXG4gICAgICAgICAgICAgICwgc2FtZV93aXRuZXNzIGUxIGUyIClcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8sIF8sIF9cbiAgICAgICAgICAgIHwgXywgTm9uZSwgXywgXywgX1xuICAgICAgICAgICAgfCBfLCBfLCBOb25lLCBfLCBfXG4gICAgICAgICAgICB8IF8sIF8sIF8sIE5vbmUsIF9cbiAgICAgICAgICAgIHwgXywgXywgXywgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQyIF8sIF8gLT4gTm9uZVxuICAgICAgICAgfCBULlQzIF8sIF8gLT4gTm9uZVxuICAgICAgICAgfCBULlQ0IF8sIF8gLT4gTm9uZVxuICAgICAgICAgfCBULlQ1IF8sIF8gLT4gTm9uZSlcbiAgICAgIHwgUmVjb3JkIHIxLCBSZWNvcmQgcjIgLT5cbiAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzXG4gICAgICAgICAgKFR5cGVyZXAuUmVjb3JkLnR5cGVuYW1lX29mX3QgcjEpXG4gICAgICAgICAgKFR5cGVyZXAuUmVjb3JkLnR5cGVuYW1lX29mX3QgcjIpXG4gICAgICB8IFZhcmlhbnQgcjEsIFZhcmlhbnQgcjIgLT5cbiAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzXG4gICAgICAgICAgKFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHIxKVxuICAgICAgICAgIChUeXBlcmVwLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCByMilcbiAgICAgIHwgSW50LCBfIC0+IE5vbmVcbiAgICAgIHwgSW50MzIsIF8gLT4gTm9uZVxuICAgICAgfCBJbnQ2NCwgXyAtPiBOb25lXG4gICAgICB8IE5hdGl2ZWludCwgXyAtPiBOb25lXG4gICAgICB8IENoYXIsIF8gLT4gTm9uZVxuICAgICAgfCBGbG9hdCwgXyAtPiBOb25lXG4gICAgICB8IFN0cmluZywgXyAtPiBOb25lXG4gICAgICB8IEJ5dGVzLCBfIC0+IE5vbmVcbiAgICAgIHwgQm9vbCwgXyAtPiBOb25lXG4gICAgICB8IFVuaXQsIF8gLT4gTm9uZVxuICAgICAgfCBPcHRpb24gXywgXyAtPiBOb25lXG4gICAgICB8IExpc3QgXywgXyAtPiBOb25lXG4gICAgICB8IEFycmF5IF8sIF8gLT4gTm9uZVxuICAgICAgfCBMYXp5IF8sIF8gLT4gTm9uZVxuICAgICAgfCBSZWYgXywgXyAtPiBOb25lXG4gICAgICB8IEZ1bmN0aW9uIF8sIF8gLT4gTm9uZVxuICAgICAgfCBUdXBsZSBfLCBfIC0+IE5vbmVcbiAgICAgIHwgUmVjb3JkIF8sIF8gLT4gTm9uZVxuICAgICAgfCBWYXJpYW50IF8sIF8gLT4gTm9uZVxuICA7O1xuXG4gIGxldCBzYW1lIGEgYiA9IHNhbWVfd2l0bmVzcyBhIGIgPD4gTm9uZVxuXG4gIGxldCBzYW1lX3dpdG5lc3NfZXhuIGEgYiA9XG4gICAgbWF0Y2ggc2FtZV93aXRuZXNzIGEgYiB3aXRoXG4gICAgfCBTb21lIHByb29mIC0+IHByb29mXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCByZWMgaGVhZCA9IGZ1bmN0aW9uXG4gICAgfCBUeXBlcmVwLk5hbWVkIChfLCBTb21lIChsYXp5IHQpKSAtPiBoZWFkIHRcbiAgICB8IHQgLT4gdFxuICA7O1xuZW5kXG5cbmxldCB0eXBlcmVwX29mX2ludCA9IFR5cGVyZXAuSW50XG5sZXQgdHlwZXJlcF9vZl9pbnQzMiA9IFR5cGVyZXAuSW50MzJcbmxldCB0eXBlcmVwX29mX2ludDY0ID0gVHlwZXJlcC5JbnQ2NFxubGV0IHR5cGVyZXBfb2ZfbmF0aXZlaW50ID0gVHlwZXJlcC5OYXRpdmVpbnRcbmxldCB0eXBlcmVwX29mX2NoYXIgPSBUeXBlcmVwLkNoYXJcbmxldCB0eXBlcmVwX29mX2Zsb2F0ID0gVHlwZXJlcC5GbG9hdFxubGV0IHR5cGVyZXBfb2Zfc3RyaW5nID0gVHlwZXJlcC5TdHJpbmdcbmxldCB0eXBlcmVwX29mX2J5dGVzID0gVHlwZXJlcC5CeXRlc1xubGV0IHR5cGVyZXBfb2ZfYm9vbCA9IFR5cGVyZXAuQm9vbFxubGV0IHR5cGVyZXBfb2ZfdW5pdCA9IFR5cGVyZXAuVW5pdFxubGV0IHR5cGVyZXBfb2Zfb3B0aW9uIHJlcCA9IFR5cGVyZXAuT3B0aW9uIHJlcFxubGV0IHR5cGVyZXBfb2ZfbGlzdCByZXAgPSBUeXBlcmVwLkxpc3QgcmVwXG5sZXQgdHlwZXJlcF9vZl9hcnJheSByZXAgPSBUeXBlcmVwLkFycmF5IHJlcFxubGV0IHR5cGVyZXBfb2ZfbGF6eV90IHJlcCA9IFR5cGVyZXAuTGF6eSByZXBcbmxldCB0eXBlcmVwX29mX3JlZiByZXAgPSBUeXBlcmVwLlJlZiByZXBcbmxldCB0eXBlcmVwX29mX2Z1bmN0aW9uIGRvbSBybmcgPSBUeXBlcmVwLkZ1bmN0aW9uIChkb20sIHJuZylcbmxldCB0eXBlcmVwX29mX3R1cGxlMCA9IFR5cGVyZXAuVW5pdFxubGV0IHR5cGVyZXBfb2ZfdHVwbGUyIGEgYiA9IFR5cGVyZXAuVHVwbGUgKFR5cGVyZXAuVHVwbGUuVDIgKGEsIGIpKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGUzIGEgYiBjID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UMyAoYSwgYiwgYykpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTQgYSBiIGMgZCA9IFR5cGVyZXAuVHVwbGUgKFR5cGVyZXAuVHVwbGUuVDQgKGEsIGIsIGMsIGQpKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGU1IGEgYiBjIGQgZSA9IFR5cGVyZXAuVHVwbGUgKFR5cGVyZXAuVHVwbGUuVDUgKGEsIGIsIGMsIGQsIGUpKVxuXG5pbmNsdWRlIE5hbWVfb2ZcblxubGV0IHZhbHVlX3R1cGxlMCA9ICgpXG5cbmxldCB0eXBlcmVwX29mX2ludDYzLCB0eXBlbmFtZV9vZl9pbnQ2MyA9XG4gIGxldCB0eXBlcmVwX2FuZF90eXBlbmFtZV9vZl9pbnQ2M19yZXByXG4gICAgOiB0eXBlIGEgYi4gKGEsIGIpIEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLnQgLT4gYSBUeXBlcmVwLnQgKiBhIFR5cGVuYW1lLnRcbiAgICA9IGZ1bmN0aW9uXG4gICAgICB8IEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLkludCAtPiB0eXBlcmVwX29mX2ludCwgdHlwZW5hbWVfb2ZfaW50XG4gICAgICB8IEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLkludDY0IC0+IHR5cGVyZXBfb2ZfaW50NjQsIHR5cGVuYW1lX29mX2ludDY0XG4gIGluXG4gIHR5cGVyZXBfYW5kX3R5cGVuYW1lX29mX2ludDYzX3JlcHIgQmFzZS5JbnQ2My5Qcml2YXRlLnJlcHJcbjs7XG4iLCIoKiB1c2luZyB0aGUgaGFzaF92YXJpYW50IG9mIHBhX3R5cGVfY29udiBhdCBjb21waWxlIHRpbWUgKilcbmxldCByZXByX29mX3BvbHlfdmFyaWFudCA6IFs+IF0gLT4gaW50ID1cbiAgZnVuIHZhcmlhbnQgLT5cbiAgbGV0IG9iaiA9IE9iai5yZXByIHZhcmlhbnQgaW5cbiAgaWYgT2JqLmlzX2ludCBvYmpcbiAgdGhlbiBPYmoub2JqIG9ialxuICBlbHNlIChcbiAgICBsZXQgc2l6ZSA9IE9iai5zaXplIG9iaiBpblxuICAgIGFzc2VydCAoc2l6ZSA9IDIpO1xuICAgIGxldCByZXByID0gT2JqLmZpZWxkIG9iaiAwIGluXG4gICAgYXNzZXJ0IChPYmouaXNfaW50IHJlcHIpO1xuICAgIE9iai5vYmogcmVwcilcbjs7XG5cbmxldCBoYXNoX3ZhcmlhbnQgcyA9XG4gIGxldCBhY2N1ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBhY2N1IDo9ICgyMjMgKiAhYWNjdSkgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgoMSBsc2wgMzEpIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgaWYgIWFjY3UgPiAweDNGRkZGRkZGIHRoZW4gIWFjY3UgLSAoMSBsc2wgMzEpIGVsc2UgIWFjY3Vcbjs7XG5cbigqIGEgZmV3IHVuaXQgdGVzdHMgb2YgY2FzZXMgdGhhdCBoYXZlIHRyaWdnZXJlZCBkaWZmcyBpbiB0aGUgcGFzdCBvZiB0aGlzXG4gICBsaWIgKilcbmxldCAoKSA9IGFzc2VydCAocmVwcl9vZl9wb2x5X3ZhcmlhbnQgYExhdGVuY3lfc3RhdHMgPSBoYXNoX3ZhcmlhbnQgXCJMYXRlbmN5X3N0YXRzXCIpXG5sZXQgKCkgPSBhc3NlcnQgKHJlcHJfb2ZfcG9seV92YXJpYW50IGB6ZXJvID0gaGFzaF92YXJpYW50IFwiemVyb1wiKVxubGV0W0BpbmxpbmUgbmV2ZXJdIGRvdWJsZV9hcnJheV92YWx1ZSAoKSA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgKE9iai5tYWdpYyAwLilcbmxldCBoYXNfZG91YmxlX2FycmF5X3RhZyBhID0gT2JqLmRvdWJsZV9hcnJheV90YWcgPSBPYmoudGFnIChPYmoucmVwciBhKVxuXG5sZXQgKCkgPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICB0eXBlIGRvdWJsZSA9XG4gICAgICB7IGEgOiBmbG9hdFxuICAgICAgOyBiIDogZmxvYXRcbiAgICAgIH1cblxuICAgIHR5cGUgc2ltcGxlID1cbiAgICAgIHsgYyA6IGZsb2F0XG4gICAgICA7IGQgOiBpbnRcbiAgICAgIH1cblxuICAgIGxldCBkb3VibGUgPSB7IGEgPSBkb3VibGVfYXJyYXlfdmFsdWUgKCk7IGIgPSBkb3VibGVfYXJyYXlfdmFsdWUgKCkgfVxuICAgIGxldCBzaW1wbGUgPSB7IGMgPSBkb3VibGVfYXJyYXlfdmFsdWUgKCk7IGQgPSBkb3VibGVfYXJyYXlfdmFsdWUgKCkgfVxuICBlbmRcbiAgaW5cbiAgYXNzZXJ0IChoYXNfZG91YmxlX2FycmF5X3RhZyBNLmRvdWJsZSk7XG4gIGFzc2VydCAobm90IChoYXNfZG91YmxlX2FycmF5X3RhZyBNLnNpbXBsZSkpXG47O1xuIiwibW9kdWxlIE0gKFggOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBjb21wdXRlIDogdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2EgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2IgWC50IC0+ICgnYSwgJ2IpIHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgWC50IC0+ICdiIFgudCAtPiAnYyBYLnQgLT4gKCdhLCAnYiwgJ2MpIHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzQgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA6PSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgWC50IC0+ICdiIFgudCAtPiAnYyBYLnQgLT4gJ2QgWC50IC0+ICgnYSwgJ2IsICdjLCAnZCkgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzUgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzUgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogICdhIFgudFxuICAgICAgLT4gJ2IgWC50XG4gICAgICAtPiAnYyBYLnRcbiAgICAgIC0+ICdkIFgudFxuICAgICAgLT4gJ2UgWC50XG4gICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IFgudFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgTSAoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbXB1dGF0aW9uID0gJ2EgdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgY29tcHV0YXRpb25cbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4gU3RkX2ludGVybmFsXG5tb2R1bGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYgPSBWYXJpYW50X2FuZF9yZWNvcmRfaW50ZlxuXG5tb2R1bGUgSGVscGVyIChBIDogVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUykgKEIgOiBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5TKSA9IHN0cnVjdFxuICB0eXBlIG1hcCA9IHsgbWFwIDogJ2EuICdhIEEudCAtPiAnYSBCLnQgfVxuXG4gIGxldCBtYXBfdmFyaWFudCAodHlwZSB2YXJpYW50KSB7IG1hcCB9ICh2YXJpYW50IDogdmFyaWFudCBBLlZhcmlhbnQudCkgPVxuICAgIGxldCBtYXBfY3JlYXRlID0gZnVuY3Rpb25cbiAgICAgIHwgQS5UYWcuQXJncyBmY3QgLT4gQi5UYWdfaW50ZXJuYWwuQXJncyBmY3RcbiAgICAgIHwgQS5UYWcuQ29uc3QgayAtPiBCLlRhZ19pbnRlcm5hbC5Db25zdCBrXG4gICAgaW5cbiAgICBsZXQgbWFwX3RhZyB0YWcgPVxuICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgIHwgQS5WYXJpYW50LlRhZyB0YWcgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gQS5UYWcubGFiZWwgdGFnIGluXG4gICAgICAgIGxldCByZXAgPSBtYXAgKEEuVGFnLnRyYXZlcnNlIHRhZykgaW5cbiAgICAgICAgbGV0IGFyaXR5ID0gQS5UYWcuYXJpdHkgdGFnIGluXG4gICAgICAgIGxldCBhcmdzX2xhYmVscyA9IEEuVGFnLmFyZ3NfbGFiZWxzIHRhZyBpblxuICAgICAgICBsZXQgaW5kZXggPSBBLlRhZy5pbmRleCB0YWcgaW5cbiAgICAgICAgbGV0IG9jYW1sX3JlcHIgPSBBLlRhZy5vY2FtbF9yZXByIHRhZyBpblxuICAgICAgICBsZXQgdHlpZCA9IEEuVGFnLnR5aWQgdGFnIGluXG4gICAgICAgIGxldCBjcmVhdGUgPSBtYXBfY3JlYXRlIChBLlRhZy5jcmVhdGUgdGFnKSBpblxuICAgICAgICBCLlZhcmlhbnRfaW50ZXJuYWwuVGFnXG4gICAgICAgICAgKEIuVGFnLmludGVybmFsX3VzZV9vbmx5XG4gICAgICAgICAgICAgeyBCLlRhZ19pbnRlcm5hbC5sYWJlbFxuICAgICAgICAgICAgIDsgcmVwXG4gICAgICAgICAgICAgOyBhcml0eVxuICAgICAgICAgICAgIDsgYXJnc19sYWJlbHNcbiAgICAgICAgICAgICA7IGluZGV4XG4gICAgICAgICAgICAgOyBvY2FtbF9yZXByXG4gICAgICAgICAgICAgOyB0eWlkXG4gICAgICAgICAgICAgOyBjcmVhdGVcbiAgICAgICAgICAgICB9KVxuICAgIGluXG4gICAgbGV0IHR5cGVuYW1lID0gQS5WYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudCBpblxuICAgIGxldCBwb2x5bW9ycGhpYyA9IEEuVmFyaWFudC5pc19wb2x5bW9ycGhpYyB2YXJpYW50IGluXG4gICAgbGV0IHRhZ3MgPVxuICAgICAgQXJyYXkuaW5pdCAoQS5WYXJpYW50Lmxlbmd0aCB2YXJpYW50KSAoZnVuIGluZGV4IC0+XG4gICAgICAgIG1hcF90YWcgKEEuVmFyaWFudC50YWcgdmFyaWFudCBpbmRleCkpXG4gICAgaW5cbiAgICBsZXQgdmFsdWUgKGEgOiB2YXJpYW50KSA9XG4gICAgICBtYXRjaCBBLlZhcmlhbnQudmFsdWUgdmFyaWFudCBhIHdpdGhcbiAgICAgIHwgQS5WYXJpYW50LlZhbHVlIChhdGFnLCBhKSAtPlxuICAgICAgICAoZnVuICh0eXBlIGFyZ3MpIChhdGFnIDogKHZhcmlhbnQsIGFyZ3MpIEEuVGFnLnQpIChhIDogYXJncykgLT5cbiAgICAgICAgICAgbGV0IChCLlZhcmlhbnRfaW50ZXJuYWwuVGFnIGJ0YWcpID0gdGFncy4oQS5UYWcuaW5kZXggYXRhZykgaW5cbiAgICAgICAgICAgKGZ1biAodHlwZSBleCkgKGJ0YWcgOiAodmFyaWFudCwgZXgpIEIuVGFnLnQpIC0+XG4gICAgICAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgICAgICAgIFR5cGVuYW1lLnNhbWVfd2l0bmVzc19leG4gKEEuVGFnLnR5aWQgYXRhZykgKEIuVGFnLnR5aWQgYnRhZylcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGJ0YWcgPSAoYnRhZyA6ICh2YXJpYW50LCBhcmdzKSBCLlRhZy50KSBpblxuICAgICAgICAgICAgICBCLlZhcmlhbnRfaW50ZXJuYWwuVmFsdWUgKGJ0YWcsIGEpKVxuICAgICAgICAgICAgIGJ0YWcpXG4gICAgICAgICAgYXRhZ1xuICAgICAgICAgIGFcbiAgICBpblxuICAgIEIuVmFyaWFudC5pbnRlcm5hbF91c2Vfb25seSB7IEIuVmFyaWFudF9pbnRlcm5hbC50eXBlbmFtZTsgdGFnczsgcG9seW1vcnBoaWM7IHZhbHVlIH1cbiAgOztcblxuICBsZXQgbWFwX3JlY29yZCAodHlwZSByZWNvcmQpIHsgbWFwIH0gKHJlY29yZCA6IHJlY29yZCBBLlJlY29yZC50KSA9XG4gICAgbGV0IG1hcF9maWVsZCBmaWVsZCA9XG4gICAgICBtYXRjaCBmaWVsZCB3aXRoXG4gICAgICB8IEEuUmVjb3JkLkZpZWxkIGZpZWxkIC0+XG4gICAgICAgIGxldCBsYWJlbCA9IEEuRmllbGQubGFiZWwgZmllbGQgaW5cbiAgICAgICAgbGV0IHJlcCA9IG1hcCAoQS5GaWVsZC50cmF2ZXJzZSBmaWVsZCkgaW5cbiAgICAgICAgbGV0IGluZGV4ID0gQS5GaWVsZC5pbmRleCBmaWVsZCBpblxuICAgICAgICBsZXQgaXNfbXV0YWJsZSA9IEEuRmllbGQuaXNfbXV0YWJsZSBmaWVsZCBpblxuICAgICAgICBsZXQgdHlpZCA9IEEuRmllbGQudHlpZCBmaWVsZCBpblxuICAgICAgICBsZXQgZ2V0ID0gQS5GaWVsZC5nZXQgZmllbGQgaW5cbiAgICAgICAgQi5SZWNvcmRfaW50ZXJuYWwuRmllbGRcbiAgICAgICAgICAoQi5GaWVsZC5pbnRlcm5hbF91c2Vfb25seVxuICAgICAgICAgICAgIHsgQi5GaWVsZF9pbnRlcm5hbC5sYWJlbDsgcmVwOyBpbmRleDsgaXNfbXV0YWJsZTsgdHlpZDsgZ2V0IH0pXG4gICAgaW5cbiAgICBsZXQgdHlwZW5hbWUgPSBBLlJlY29yZC50eXBlbmFtZV9vZl90IHJlY29yZCBpblxuICAgIGxldCBoYXNfZG91YmxlX2FycmF5X3RhZyA9IEEuUmVjb3JkLmhhc19kb3VibGVfYXJyYXlfdGFnIHJlY29yZCBpblxuICAgIGxldCBmaWVsZHMgPVxuICAgICAgQXJyYXkuaW5pdCAoQS5SZWNvcmQubGVuZ3RoIHJlY29yZCkgKGZ1biBpbmRleCAtPlxuICAgICAgICBtYXBfZmllbGQgKEEuUmVjb3JkLmZpZWxkIHJlY29yZCBpbmRleCkpXG4gICAgaW5cbiAgICBsZXQgY3JlYXRlIHsgQi5SZWNvcmRfaW50ZXJuYWwuZ2V0IH0gPVxuICAgICAgbGV0IGdldCAodHlwZSBhKSAoYWZpZWxkIDogKF8sIGEpIEEuRmllbGQudCkgPVxuICAgICAgICBtYXRjaCBmaWVsZHMuKEEuRmllbGQuaW5kZXggYWZpZWxkKSB3aXRoXG4gICAgICAgIHwgQi5SZWNvcmRfaW50ZXJuYWwuRmllbGQgYmZpZWxkIC0+XG4gICAgICAgICAgKGZ1biAodHlwZSBleCkgKGJmaWVsZCA6IChyZWNvcmQsIGV4KSBCLkZpZWxkLnQpIC0+XG4gICAgICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuIChBLkZpZWxkLnR5aWQgYWZpZWxkKSAoQi5GaWVsZC50eWlkIGJmaWVsZClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCBiZmllbGQgPSAoYmZpZWxkIDogKHJlY29yZCwgYSkgQi5GaWVsZC50KSBpblxuICAgICAgICAgICAgIGdldCBiZmllbGQpXG4gICAgICAgICAgICBiZmllbGRcbiAgICAgIGluXG4gICAgICBBLlJlY29yZC5jcmVhdGUgcmVjb3JkIHsgQS5SZWNvcmQuZ2V0IH1cbiAgICBpblxuICAgIEIuUmVjb3JkLmludGVybmFsX3VzZV9vbmx5XG4gICAgICB7IEIuUmVjb3JkX2ludGVybmFsLnR5cGVuYW1lOyBmaWVsZHM7IGhhc19kb3VibGVfYXJyYXlfdGFnOyBjcmVhdGUgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIE5hbWVkID0gc2lnXG4gIHR5cGUgJ2EgY29tcHV0YXRpb25cblxuICBtb2R1bGUgQ29udGV4dCA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdFxuICBlbmRcblxuICB0eXBlICdhIHRcblxuICB2YWwgaW5pdCA6IENvbnRleHQudCAtPiAnYSBUeXBlbmFtZS50IC0+ICdhIHRcbiAgdmFsIGdldF93aXBfY29tcHV0YXRpb24gOiAnYSB0IC0+ICdhIGNvbXB1dGF0aW9uXG4gIHZhbCBzZXRfZmluYWxfY29tcHV0YXRpb24gOiAnYSB0IC0+ICdhIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gIHZhbCBzaGFyZSA6IF8gVHlwZXJlcC50IC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wdXRhdGlvbiA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCBpbnQgOiBpbnQgdFxuICB2YWwgaW50MzIgOiBpbnQzMiB0XG4gIHZhbCBpbnQ2NCA6IGludDY0IHRcbiAgdmFsIG5hdGl2ZWludCA6IG5hdGl2ZWludCB0XG4gIHZhbCBjaGFyIDogY2hhciB0XG4gIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgdmFsIHN0cmluZyA6IHN0cmluZyB0XG4gIHZhbCBieXRlcyA6IGJ5dGVzIHRcbiAgdmFsIGJvb2wgOiBib29sIHRcbiAgdmFsIHVuaXQgOiB1bml0IHRcbiAgdmFsIG9wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgdmFsIGxpc3QgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICB2YWwgYXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5IHRcbiAgdmFsIGxhenlfdCA6ICdhIHQgLT4gJ2EgbGF6eV90IHRcbiAgdmFsIHJlZl8gOiAnYSB0IC0+ICdhIHJlZiB0XG4gIHZhbCBmdW5jdGlvbl8gOiAnYSB0IC0+ICdiIHQgLT4gKCdhIC0+ICdiKSB0XG4gIHZhbCB0dXBsZTIgOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcbiAgdmFsIHR1cGxlMyA6ICdhIHQgLT4gJ2IgdCAtPiAnYyB0IC0+ICgnYSAqICdiICogJ2MpIHRcbiAgdmFsIHR1cGxlNCA6ICdhIHQgLT4gJ2IgdCAtPiAnYyB0IC0+ICdkIHQgLT4gKCdhICogJ2IgKiAnYyAqICdkKSB0XG4gIHZhbCB0dXBsZTUgOiAnYSB0IC0+ICdiIHQgLT4gJ2MgdCAtPiAnZCB0IC0+ICdlIHQgLT4gKCdhICogJ2IgKiAnYyAqICdkICogJ2UpIHRcbiAgdmFsIHJlY29yZCA6ICdhIFJlY29yZC50IC0+ICdhIHRcbiAgdmFsIHZhcmlhbnQgOiAnYSBWYXJpYW50LnQgLT4gJ2EgdFxuXG4gIG1vZHVsZSBOYW1lZCA6IE5hbWVkIHdpdGggdHlwZSAnYSBjb21wdXRhdGlvbiA6PSAnYSB0XG5lbmRcblxuKCogc3BlY2lhbCBmdW5jdG9yIGFwcGxpY2F0aW9uIGZvciBjb21wdXRhdGlvbiBhcyBjbG9zdXJlIG9mIHRoZSBmb3JtIFthIC0+IGJdICopXG5tb2R1bGUgTWFrZV9uYW1lZF9mb3JfY2xvc3VyZSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgaW5wdXRcbiAgICB0eXBlICdhIG91dHB1dFxuICAgIHR5cGUgJ2EgdCA9ICdhIGlucHV0IC0+ICdhIG91dHB1dFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHVuaXRcblxuICAgIGxldCBjcmVhdGUgPSBpZ25vcmVcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHJ1bnRpbWVfZGVyZWZlcmVuY2UgOiAnYSBYLnRcbiAgICA7IHJ1bnRpbWVfcmVmZXJlbmNlIDogJ2EgWC50IHJlZlxuICAgIDsgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgOiAnYSBYLnQgb3B0aW9uIHJlZlxuICAgIH1cblxuICBleGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZ1xuXG4gIGxldCBpbml0ICgpIG5hbWUgPVxuICAgIGxldCBwYXRoID0gVHlwZW5hbWUuVWlkLm5hbWUgKFR5cGVuYW1lLnVpZCBuYW1lKSBpblxuICAgIGxldCByID0gcmVmIChmdW4gXyAtPiByYWlzZSAoVW5kZWZpbmVkIHBhdGgpKSBpblxuICAgIHsgcnVudGltZV9kZXJlZmVyZW5jZSA9IChmdW4gaW5wdXQgLT4gIXIgaW5wdXQpXG4gICAgOyBydW50aW1lX3JlZmVyZW5jZSA9IHJcbiAgICA7IGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlID0gcmVmIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGdldF93aXBfY29tcHV0YXRpb24gc2hhcmVkID1cbiAgICBtYXRjaCBzaGFyZWQuY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UuY29udGVudHMgd2l0aFxuICAgIHwgU29tZSBjbG9zIC0+IGNsb3NcbiAgICB8IE5vbmUgLT4gc2hhcmVkLnJ1bnRpbWVfZGVyZWZlcmVuY2VcbiAgOztcblxuICBsZXQgc2V0X2ZpbmFsX2NvbXB1dGF0aW9uIHNoYXJlZCBjb21wdXRhdGlvbiA9XG4gICAgbGV0IGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlID0gc2hhcmVkLmNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIGluXG4gICAgbWF0Y2ggY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UuY29udGVudHMgd2l0aFxuICAgIHwgU29tZSBfIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgTm9uZSAtPlxuICAgICAgaWYgQmFzZS5waHlzX2VxdWFsIHNoYXJlZC5ydW50aW1lX2RlcmVmZXJlbmNlIGNvbXB1dGF0aW9uIHRoZW4gYXNzZXJ0IGZhbHNlO1xuICAgICAgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgOj0gU29tZSBjb21wdXRhdGlvbjtcbiAgICAgIHNoYXJlZC5ydW50aW1lX3JlZmVyZW5jZSA6PSBjb21wdXRhdGlvbjtcbiAgICAgIGNvbXB1dGF0aW9uXG4gIDs7XG5cbiAgbGV0IHNoYXJlIF8gPSB0cnVlXG5lbmRcblxubW9kdWxlIElkZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBuYW1lIDogc3RyaW5nXG4gICAgOyBpbXBsZW1lbnRzIDogVHlwZW5hbWUuVWlkLnQgLT4gYm9vbFxuICAgIH1cblxuICBleGNlcHRpb24gQnJva2VuX2RlcGVuZGVuY3kgb2Ygc3RyaW5nXG5cbiAgbGV0IGNoZWNrX2RlcGVuZGVuY2llcyBuYW1lIHJlcXVpcmVkID1cbiAgICBtYXRjaCByZXF1aXJlZCB3aXRoXG4gICAgfCBbXSAtPiBmdW4gXyAtPiAoKVxuICAgIHwgXyAtPlxuICAgICAgZnVuIHVpZCAtPlxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIHsgbmFtZSA9IG5hbWUnOyBpbXBsZW1lbnRzIH0gLT5cbiAgICAgICAgICAgICBpZiBub3QgKGltcGxlbWVudHMgdWlkKVxuICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgKCogc29tZXRoaW5nIGlzIHdyb25nIHdpdGggdGhlIHNldCB1cCwgdGhpcyBpcyBhbiBlcnJvciBkdXJpbmcgdGhlXG4gICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBvZiB0aGUgcHJvZ3JhbSwgd2UgcmF0aGVyIGZhaWwgd2l0aCBhIGh1bWFuXG4gICAgICAgICAgICAgICAgICByZWFkYWJsZSBvdXRwdXQgKilcbiAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgICAgICBcIlR5cGVfZ2VuZXJpYyAlUyByZXF1aXJlcyAlUyBmb3IgdWlkICVTXFxuXCJcbiAgICAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgICAgbmFtZSdcbiAgICAgICAgICAgICAgICAgICAoVHlwZW5hbWUuVWlkLm5hbWUgdWlkKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIHByZXJyX2VuZGxpbmUgbWVzc2FnZTtcbiAgICAgICAgICAgICAgIHJhaXNlIChCcm9rZW5fZGVwZW5kZW5jeSBtZXNzYWdlKSkpXG4gICAgICAgICAgcmVxdWlyZWRcbiAgOztcbmVuZFxuXG4oKiBFeHRlbmRpbmcgYW4gZXhpc3RpbmcgZ2VuZXJpYyAqKVxubW9kdWxlIHR5cGUgRXh0ZW5kaW5nID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIGNvbXB1dGF0aW9uID0gJ2EgdFxuXG4gIHZhbCBpZGVudCA6IElkZW50LnRcblxuICAoKiBnZW5lcmljX2lkZW50ICogdHlwZW5hbWUgb3IgaW5mbyAqKVxuICBleGNlcHRpb24gTm90X2ltcGxlbWVudGVkIG9mIHN0cmluZyAqIHN0cmluZ1xuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6IHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBjb21wdXRhdGlvbiAtPiAnYSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgY29tcHV0YXRpb24gLT4gJ2IgY29tcHV0YXRpb24gLT4gKCdhLCAnYikgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgY29tcHV0YXRpb25cbiAgICAgIC0+ICdiIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYyBjb21wdXRhdGlvblxuICAgICAgLT4gKCdhLCAnYiwgJ2MpIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogICdhIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYiBjb21wdXRhdGlvblxuICAgICAgLT4gJ2MgY29tcHV0YXRpb25cbiAgICAgIC0+ICdkIGNvbXB1dGF0aW9uXG4gICAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzUgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzUgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogICdhIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYiBjb21wdXRhdGlvblxuICAgICAgLT4gJ2MgY29tcHV0YXRpb25cbiAgICAgIC0+ICdkIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnZSBjb21wdXRhdGlvblxuICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICB2YWwgcmVnaXN0ZXIwIDogKG1vZHVsZSBTKSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjEgOiAobW9kdWxlIFMxKSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjIgOiAobW9kdWxlIFMyKSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjMgOiAobW9kdWxlIFMzKSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjQgOiAobW9kdWxlIFM0KSAtPiB1bml0XG4gIHZhbCByZWdpc3RlcjUgOiAobW9kdWxlIFM1KSAtPiB1bml0XG5cbiAgKCogc3BlY2lhbCBsZXNzIHNjYXJ5IHR5cGUgd2hlbiB0aGUgdHlwZSBoYXMgbm8gcGFyYW1ldGVycyAqKVxuICB2YWwgcmVnaXN0ZXIgOiAnYSBUeXBlcmVwLnQgLT4gJ2EgY29tcHV0YXRpb24gLT4gdW5pdFxuXG4gICgqXG4gICAgIEVzc2VudGlhbGx5IGJlY2F1c2Ugd2UgY2Fubm90IHRhbGsgYWJvdXQgYSB2YXJpYWJsZSBvZiBraW5kICogLT4ga1xuICAgICB2YWwgcmVnaXN0ZXIxIDogJ2EgJ3QgVHlwZXJlcC50IC0+ICgnYSBjb21wdXRhdGlvbiAtPiAnYSAndCBjb21wdXRhdGlvbikgLT4gdW5pdFxuICAgICAuLi5cbiAgKilcbmVuZFxuXG4oKiBJbXBsZW1lbnRpbmcgYSBuZXcgZ2VuZXJpYyAqKVxubW9kdWxlIHR5cGUgU19pbXBsZW1lbnRhdGlvbiA9IHNpZ1xuICBpbmNsdWRlIEV4dGVuZGluZ1xuXG4gICgqIHJhaXNlIHVzaW5nIHRoZSBjdXJyZW50IGlkZW50ICopXG4gIHZhbCByYWlzZV9ub3RfaW1wbGVtZW50ZWQgOiBzdHJpbmcgLT4gJ2FcblxuICB0eXBlIGltcGxlbWVudGF0aW9uID0geyBnZW5lcmljIDogJ2EuICdhIFR5cGVyZXAudCAtPiAnYSBjb21wdXRhdGlvbiB9XG5cbiAgKCpcbiAgICAgU3RhbmRhcmQgY2FzZSwgZmluZCBhIGV4dGVuZGVkX2ltcGxlbWVudGF0aW9uLCBvciBsb29rIGluIHRoZSBjb250ZW50XG4gICopXG4gIHZhbCBfdXNpbmdfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb25cbiAgICA6ICBpbXBsZW1lbnRhdGlvblxuICAgIC0+ICdhIFR5cGVyZXAuTmFtZWQudFxuICAgIC0+ICdhIFR5cGVyZXAudCBsYXp5X3Qgb3B0aW9uXG4gICAgLT4gJ2EgY29tcHV0YXRpb25cblxuICAoKlxuICAgICBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgbW9yZSBjb250cm9sIG9uIHdoYXQgeW91IHdhbnQgdG8gZG9cbiAgKilcbiAgdmFsIGZpbmRfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb25cbiAgICA6ICBpbXBsZW1lbnRhdGlvblxuICAgIC0+ICdhIFR5cGVyZXAuTmFtZWQudFxuICAgIC0+ICdhIGNvbXB1dGF0aW9uIG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBFeHRlbmRpbmdcblxuICB2YWwgb2ZfdHlwZXJlcCA6ICdhIFR5cGVyZXAudCAtPiBbIGBnZW5lcmljIG9mICdhIGNvbXB1dGF0aW9uIF1cblxuICBtb2R1bGUgQ29tcHV0YXRpb24gOiBDb21wdXRhdGlvbiB3aXRoIHR5cGUgJ2EgdCA9ICdhIHRcbmVuZFxuXG5tb2R1bGUgTWFrZV9TX2ltcGxlbWVudGF0aW9uIChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIHZhbCByZXF1aXJlZCA6IElkZW50LnQgbGlzdFxuICBlbmQpIDogU19pbXBsZW1lbnRhdGlvbiB3aXRoIHR5cGUgJ2EgdCA9ICdhIFgudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBYLnRcbiAgdHlwZSAnYSBjb21wdXRhdGlvbiA9ICdhIHRcblxuICBpbmNsdWRlIFR5cGVfZ2VuZXJpY19pbnRmLk0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgY29tcHV0YXRpb25cbiAgICBlbmQpXG5cbiAgKCogd2UgZG8gbm90IHVzZSBjb3JlIHNpbmNlIHdlIGFyZSBlYXJsaWVyIGluIHRoZSBkZXBlbmRlbmNpZXMgZ3JhcGggKilcbiAgbW9kdWxlIFVpZF90YWJsZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSGFzaHRibC5NYWtlIChUeXBlbmFtZS5VaWQpXG5cbiAgICBsZXQgZmluZCB0YWJsZSBrZXkgPVxuICAgICAgaWYgTGF6eS5pc192YWwgdGFibGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdGFibGUgPSBMYXp5LmZvcmNlIHRhYmxlIGluXG4gICAgICAgIHRyeSBTb21lIChmaW5kIHRhYmxlIGtleSkgd2l0aFxuICAgICAgICB8IEJhc2UuTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZSlcbiAgICAgIGVsc2UgTm9uZVxuICAgIDs7XG5cbiAgICBsZXQgY2hlY2tfZGVwZW5kZW5jaWVzID0gSWRlbnQuY2hlY2tfZGVwZW5kZW5jaWVzIFgubmFtZSBYLnJlcXVpcmVkXG5cbiAgICBsZXQgcmVwbGFjZSB0YWJsZSBrZXkgdmFsdWUgPVxuICAgICAgY2hlY2tfZGVwZW5kZW5jaWVzIGtleTtcbiAgICAgIHJlcGxhY2UgKExhenkuZm9yY2UgdGFibGUpIGtleSB2YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgbWVtIHRhYmxlIGtleSA9XG4gICAgICBpZiBMYXp5LmlzX3ZhbCB0YWJsZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0YWJsZSA9IExhenkuZm9yY2UgdGFibGUgaW5cbiAgICAgICAgbWVtIHRhYmxlIGtleSlcbiAgICAgIGVsc2UgZmFsc2VcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2l6ZSA9IDI1NlxuICBsZXQgdGFibGUwID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGUxID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGUyID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGUzID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGU0ID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuICBsZXQgdGFibGU1ID0gbGF6eSAoVWlkX3RhYmxlLmNyZWF0ZSBzaXplKVxuXG4gIGxldCBpc19yZWdpc3RlcmVkIHVpZCA9XG4gICAgVWlkX3RhYmxlLm1lbSB0YWJsZTAgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTEgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTIgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTMgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTQgdWlkXG4gICAgfHwgVWlkX3RhYmxlLm1lbSB0YWJsZTUgdWlkXG4gIDs7XG5cbiAgbGV0IGlkZW50ID0geyBJZGVudC5uYW1lID0gWC5uYW1lOyBpbXBsZW1lbnRzID0gaXNfcmVnaXN0ZXJlZCB9XG5cbiAgbW9kdWxlIEZpbmQwIChUIDogVHlwZXJlcC5OYW1lZC5UMCkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZSA6IHVuaXQgLT4gVC5uYW1lZCBjb21wdXRhdGlvbiBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGUwIChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFMgPSAodmFsIHJlcCA6IFMpIGluXG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4biBTLnR5cGVuYW1lX29mX3QgVC50eXBlbmFtZV9vZl9uYW1lZCBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPSAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgd2l0bmVzcykgUy5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kMSAoVCA6IFR5cGVyZXAuTmFtZWQuVDEpIDogc2lnXG4gICAgdmFsIGNvbXB1dGUgOiB1bml0IC0+IChULmEgY29tcHV0YXRpb24gLT4gVC5hIFQubmFtZWQgY29tcHV0YXRpb24pIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTEgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzEgPSAodmFsIHJlcCA6IFMxKSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fMVxuICAgICAgICAgICAgKFMxKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICdhIHQgPSAnYSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9IFQuYSBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFMxLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQyIChUIDogVHlwZXJlcC5OYW1lZC5UMikgOiBzaWdcbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgdW5pdFxuICAgICAgLT4gKFQuYSBjb21wdXRhdGlvbiAtPiBULmIgY29tcHV0YXRpb24gLT4gKFQuYSwgVC5iKSBULm5hbWVkIGNvbXB1dGF0aW9uKSBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGUyIChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFMyID0gKHZhbCByZXAgOiBTMikgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzJcbiAgICAgICAgICAgIChTMilcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPSBULmEgY29tcHV0YXRpb24gLT4gVC5iIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzIuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDMgKFQgOiBUeXBlcmVwLk5hbWVkLlQzKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gKFQuYSwgVC5iLCBULmMpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTMgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzMgPSAodmFsIHJlcCA6IFMzKSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fM1xuICAgICAgICAgICAgKFMzKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgICAgICAgVC5hIGNvbXB1dGF0aW9uIC0+IFQuYiBjb21wdXRhdGlvbiAtPiBULmMgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTMy5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kNCAoVCA6IFR5cGVyZXAuTmFtZWQuVDQpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYywgVC5kKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgICBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGU0IChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFM0ID0gKHZhbCByZXAgOiBTNCkgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzRcbiAgICAgICAgICAgIChTNClcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAoJ2EsICdiLCAnYywgJ2QpIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgICAgICAgVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5kIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzQuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDUgKFQgOiBUeXBlcmVwLk5hbWVkLlQ1KSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5kIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5lIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gKFQuYSwgVC5iLCBULmMsIFQuZCwgVC5lKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgICBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGU1IChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFM1ID0gKHZhbCByZXAgOiBTNSkgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzVcbiAgICAgICAgICAgIChTNSlcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0ID0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5lIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzUuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdW5pdCA9IFR5cGVuYW1lLnN0YXRpY1xuXG4gIGxldCByZWdpc3RlcjAgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTID0gKHZhbCBjb21wdXRlIDogUykgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIFMudHlwZW5hbWVfb2ZfdCBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMCB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjEgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMSA9ICh2YWwgY29tcHV0ZSA6IFMxKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMxLnR5cGVuYW1lX29mX3QgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTEgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXIyIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzIgPSAodmFsIGNvbXB1dGUgOiBTMikgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTMi50eXBlbmFtZV9vZl90IHVuaXQgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTIgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXIzIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzMgPSAodmFsIGNvbXB1dGUgOiBTMykgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTMy50eXBlbmFtZV9vZl90IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMyB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjQgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTNCA9ICh2YWwgY29tcHV0ZSA6IFM0KSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFM0LnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTQgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXI1IGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzUgPSAodmFsIGNvbXB1dGUgOiBTNSkgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTNS50eXBlbmFtZV9vZl90IHVuaXQgdW5pdCB1bml0IHVuaXQgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTUgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXIgKHR5cGUgYSkgdHlwZXJlcF9vZl9hIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXAudHlwZW5hbWVfb2ZfdCB0eXBlcmVwX29mX2FcbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSB0eXBlcmVwX29mX2FcbiAgICAgIGxldCBjb21wdXRlID0gY29tcHV0ZVxuICAgIGVuZFxuICAgIGluXG4gICAgcmVnaXN0ZXIwIChtb2R1bGUgUyA6IFMpXG4gIDs7XG5cbiAgKCogSU1QTEVNRU5UQVRJT04gKilcblxuICB0eXBlIGltcGxlbWVudGF0aW9uID0geyBnZW5lcmljIDogJ2EuICdhIFR5cGVyZXAudCAtPiAnYSBjb21wdXRhdGlvbiB9XG5cbiAgbGV0IGZpbmRfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24gKHR5cGUgYSkgYXV4ID0gZnVuY3Rpb25cbiAgICB8IFR5cGVyZXAuTmFtZWQuVDAgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDAgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMCAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDEgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDEgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMSAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9IChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgOiBULmEgVC5uYW1lZCBjb21wdXRhdGlvbikgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQyIHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQyIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDIgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPVxuICAgICAgICAgICAoY3VzdG9tIChhdXguZ2VuZXJpYyBULmEpIChhdXguZ2VuZXJpYyBULmIpIDogKFQuYSwgVC5iKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQzIHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQzIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDMgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPVxuICAgICAgICAgICAoY3VzdG9tIChhdXguZ2VuZXJpYyBULmEpIChhdXguZ2VuZXJpYyBULmIpIChhdXguZ2VuZXJpYyBULmMpXG4gICAgICAgICAgICA6IChULmEsIFQuYiwgVC5jKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQ0IHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQ0IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDQgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPVxuICAgICAgICAgICAoY3VzdG9tIChhdXguZ2VuZXJpYyBULmEpIChhdXguZ2VuZXJpYyBULmIpIChhdXguZ2VuZXJpYyBULmMpIChhdXguZ2VuZXJpYyBULmQpXG4gICAgICAgICAgICA6IChULmEsIFQuYiwgVC5jLCBULmQpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDUgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDUgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kNSAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b21cbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuYSlcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuYilcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuYylcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuZClcbiAgICAgICAgICAgICAgKGF1eC5nZW5lcmljIFQuZSlcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMsIFQuZCwgVC5lKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gIDs7XG5cbiAgZXhjZXB0aW9uIE5vdF9pbXBsZW1lbnRlZCBvZiBzdHJpbmcgKiBzdHJpbmdcblxuICBsZXQgcmFpc2Vfbm90X2ltcGxlbWVudGVkIHN0cmluZyA9IHJhaXNlIChOb3RfaW1wbGVtZW50ZWQgKFgubmFtZSwgc3RyaW5nKSlcblxuICBsZXQgX3VzaW5nX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIGF1eCByZXAgY29udGVudCA9XG4gICAgbWF0Y2ggZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiBhdXggcmVwIHdpdGhcbiAgICB8IFNvbWUgY29tcHV0YXRpb24gLT4gY29tcHV0YXRpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIChtYXRjaCBjb250ZW50IHdpdGhcbiAgICAgICB8IFNvbWUgKGxhenkgY29udGVudCkgLT4gYXV4LmdlbmVyaWMgY29udGVudFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbGV0IHR5cGVuYW1lID0gVHlwZXJlcC5OYW1lZC50eXBlbmFtZV9vZl90IHJlcCBpblxuICAgICAgICAgbGV0IG5hbWUgPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIHR5cGVuYW1lKSBpblxuICAgICAgICAgcmFpc2Vfbm90X2ltcGxlbWVudGVkIG5hbWUpXG4gIDs7XG5lbmRcblxubW9kdWxlIF8gPSBIYXNodGJsLk1ha2UgKFR5cGVuYW1lLktleSlcblxubW9kdWxlIE1ha2UgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgdmFsIHJlcXVpcmVkIDogSWRlbnQudCBsaXN0XG5cbiAgICBpbmNsdWRlIENvbXB1dGF0aW9uIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIENvbXB1dGF0aW9uID0gWFxuICBpbmNsdWRlIE1ha2VfU19pbXBsZW1lbnRhdGlvbiAoWClcblxuICBtb2R1bGUgTWVtbyA9IFR5cGVuYW1lLlRhYmxlIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFguTmFtZWQudFxuICAgIGVuZClcblxuICBtb2R1bGUgSGVscGVyID0gSGVscGVyIChUeXBlcmVwKSAoQ29tcHV0YXRpb24pXG5cbiAgbGV0IG9mX3R5cGVyZXAgcmVwID1cbiAgICBsZXQgY29udGV4dCA9IFguTmFtZWQuQ29udGV4dC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbWVtb190YWJsZSA9IE1lbW8uY3JlYXRlIDMyIGluXG4gICAgbGV0IHJlYyBvZl90eXBlcmVwIDogdHlwZSBhLiBhIFR5cGVyZXAudCAtPiBhIHQgPSBmdW5jdGlvblxuICAgICAgfCBUeXBlcmVwLkludCAtPiBYLmludFxuICAgICAgfCBUeXBlcmVwLkludDMyIC0+IFguaW50MzJcbiAgICAgIHwgVHlwZXJlcC5JbnQ2NCAtPiBYLmludDY0XG4gICAgICB8IFR5cGVyZXAuTmF0aXZlaW50IC0+IFgubmF0aXZlaW50XG4gICAgICB8IFR5cGVyZXAuQ2hhciAtPiBYLmNoYXJcbiAgICAgIHwgVHlwZXJlcC5GbG9hdCAtPiBYLmZsb2F0XG4gICAgICB8IFR5cGVyZXAuU3RyaW5nIC0+IFguc3RyaW5nXG4gICAgICB8IFR5cGVyZXAuQnl0ZXMgLT4gWC5ieXRlc1xuICAgICAgfCBUeXBlcmVwLkJvb2wgLT4gWC5ib29sXG4gICAgICB8IFR5cGVyZXAuVW5pdCAtPiBYLnVuaXRcbiAgICAgIHwgVHlwZXJlcC5PcHRpb24gcmVwIC0+IFgub3B0aW9uIChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5MaXN0IHJlcCAtPiBYLmxpc3QgKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkFycmF5IHJlcCAtPiBYLmFycmF5IChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5MYXp5IHJlcCAtPiBYLmxhenlfdCAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuUmVmIHJlcCAtPiBYLnJlZl8gKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkZ1bmN0aW9uIChkb20sIHJuZykgLT4gWC5mdW5jdGlvbl8gKG9mX3R5cGVyZXAgZG9tKSAob2ZfdHlwZXJlcCBybmcpXG4gICAgICB8IFR5cGVyZXAuVHVwbGUgdHVwbGUgLT5cbiAgICAgICAgKCogZG8gTk9UIHdyaXRlIFtYLnR1cGxlMiAob2ZfdHlwZXJlcCBhKSAob2ZfdHlwZXJlcCBiKV1cbiAgICAgICAgICAgYmVjYXVzZSBvZl90eXBlcmVwIGNhbiBjb250YWluIGEgc2lkZSBlZmZlY3QgYW5kIFthXSBzaG91bGQgYmUgZXhlY3V0ZWRcbiAgICAgICAgICAgYmVmb3JlIFtiXSAqKVxuICAgICAgICAobWF0Y2ggdHVwbGUgd2l0aFxuICAgICAgICAgfCBUeXBlcmVwLlR1cGxlLlQyIChhLCBiKSAtPlxuICAgICAgICAgICBsZXQgcmEgPSBvZl90eXBlcmVwIGEgaW5cbiAgICAgICAgICAgbGV0IHJiID0gb2ZfdHlwZXJlcCBiIGluXG4gICAgICAgICAgIFgudHVwbGUyIHJhIHJiXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDMgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgbGV0IHJjID0gb2ZfdHlwZXJlcCBjIGluXG4gICAgICAgICAgIFgudHVwbGUzIHJhIHJiIHJjXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDQgKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgbGV0IHJjID0gb2ZfdHlwZXJlcCBjIGluXG4gICAgICAgICAgIGxldCByZCA9IG9mX3R5cGVyZXAgZCBpblxuICAgICAgICAgICBYLnR1cGxlNCByYSByYiByYyByZFxuICAgICAgICAgfCBUeXBlcmVwLlR1cGxlLlQ1IChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICBsZXQgcmEgPSBvZl90eXBlcmVwIGEgaW5cbiAgICAgICAgICAgbGV0IHJiID0gb2ZfdHlwZXJlcCBiIGluXG4gICAgICAgICAgIGxldCByYyA9IG9mX3R5cGVyZXAgYyBpblxuICAgICAgICAgICBsZXQgcmQgPSBvZl90eXBlcmVwIGQgaW5cbiAgICAgICAgICAgbGV0IHJlID0gb2ZfdHlwZXJlcCBlIGluXG4gICAgICAgICAgIFgudHVwbGU1IHJhIHJiIHJjIHJkIHJlKVxuICAgICAgfCBUeXBlcmVwLlJlY29yZCByZWNvcmQgLT5cbiAgICAgICAgWC5yZWNvcmQgKEhlbHBlci5tYXBfcmVjb3JkIHsgSGVscGVyLm1hcCA9IG9mX3R5cGVyZXAgfSByZWNvcmQpXG4gICAgICB8IFR5cGVyZXAuVmFyaWFudCB2YXJpYW50IC0+XG4gICAgICAgIFgudmFyaWFudCAoSGVscGVyLm1hcF92YXJpYW50IHsgSGVscGVyLm1hcCA9IG9mX3R5cGVyZXAgfSB2YXJpYW50KVxuICAgICAgfCBUeXBlcmVwLk5hbWVkIChuYW1lZCwgY29udGVudCkgLT5cbiAgICAgICAgbGV0IHR5cGVuYW1lID0gVHlwZXJlcC5OYW1lZC50eXBlbmFtZV9vZl90IG5hbWVkIGluXG4gICAgICAgIChtYXRjaCBNZW1vLmZpbmQgbWVtb190YWJsZSB0eXBlbmFtZSB3aXRoXG4gICAgICAgICB8IFNvbWUgc2hhcmVkIC0+IFguTmFtZWQuZ2V0X3dpcF9jb21wdXRhdGlvbiBzaGFyZWRcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiB7IGdlbmVyaWMgPSBvZl90eXBlcmVwIH0gbmFtZWQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGNvbXB1dGF0aW9uIC0+IGNvbXB1dGF0aW9uXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGNvbnRlbnQgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgIGxldCBuYW1lID0gVHlwZW5hbWUuVWlkLm5hbWUgKFR5cGVuYW1lLnVpZCB0eXBlbmFtZSkgaW5cbiAgICAgICAgICAgICAgICAgcmFpc2Vfbm90X2ltcGxlbWVudGVkIG5hbWVcbiAgICAgICAgICAgICAgIHwgU29tZSAobGF6eSBjb250ZW50KSAtPlxuICAgICAgICAgICAgICAgICBpZiBYLk5hbWVkLnNoYXJlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgbGV0IHNoYXJlZCA9IFguTmFtZWQuaW5pdCBjb250ZXh0IHR5cGVuYW1lIGluXG4gICAgICAgICAgICAgICAgICAgTWVtby5zZXQgbWVtb190YWJsZSB0eXBlbmFtZSBzaGFyZWQ7XG4gICAgICAgICAgICAgICAgICAgbGV0IGNvbXB1dGF0aW9uID0gb2ZfdHlwZXJlcCBjb250ZW50IGluXG4gICAgICAgICAgICAgICAgICAgWC5OYW1lZC5zZXRfZmluYWxfY29tcHV0YXRpb24gc2hhcmVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgICAgICAgICBlbHNlIG9mX3R5cGVyZXAgY29udGVudCkpKVxuICAgIGluXG4gICAgbGV0IGNvbXB1dGF0aW9uID0gb2ZfdHlwZXJlcCByZXAgaW5cbiAgICBgZ2VuZXJpYyBjb21wdXRhdGlvblxuICA7O1xuZW5kXG4iLCJvcGVuIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgTWFrZTAgKFggOiBOYW1lZF9pbnRmLlMwKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTAgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCA9XG4gICAgVHlwZXJlcC5OYW1lZC5UMFxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBuYW1lZCA9IFgudFxuICAgICAgICB0eXBlIHQgPSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDBcbiAgICAgICAgd2l0aCB0eXBlIHQgPSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2UxIChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEpIG9mX3AxID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90IChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UMVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSBuYW1lZCA9ICdhIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIHQgPSBwMSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDFcbiAgICAgICAgd2l0aCB0eXBlIHQgPSBwMSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogTmFtZWRfaW50Zi5TMikgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2UyIChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIpIG9mX3AxIG9mX3AyID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdCAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UMlxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiKSBuYW1lZCA9ICgnYSwgJ2IpIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIGIgPSBwMlxuXG4gICAgICAgIGxldCBiID0gb2ZfcDJcblxuICAgICAgICB0eXBlIHQgPSAocDEsIHAyKSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDJcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyKSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogTmFtZWRfaW50Zi5TMykgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2UzIChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIgcDMpIG9mX3AxIG9mX3AyIG9mX3AzID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AzKVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UM1xuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgbmFtZWQgPSAoJ2EsICdiLCAnYykgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgYyA9IHAzXG5cbiAgICAgICAgbGV0IGMgPSBvZl9wM1xuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIsIHAzKSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDNcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyLCBwMykgWC50KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlNCAoWCA6IE5hbWVkX2ludGYuUzQpID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlNCAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkICh0eXBlIHAxIHAyIHAzIHA0KSBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCA9XG4gICAgbGV0IHR5cGVuYW1lX29mX3QgPVxuICAgICAgTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSlcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMilcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMylcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wNClcbiAgICBpblxuICAgIFR5cGVyZXAuTmFtZWQuVDRcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBuYW1lZCA9ICgnYSwgJ2IsICdjLCAnZCkgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgYyA9IHAzXG5cbiAgICAgICAgbGV0IGMgPSBvZl9wM1xuXG4gICAgICAgIHR5cGUgZCA9IHA0XG5cbiAgICAgICAgbGV0IGQgPSBvZl9wNFxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCkgWC50XG5cbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX25hbWVkID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZV9lcXVhbC5yZWZsXG4gICAgICBlbmQgOiBUeXBlcmVwLk5hbWVkLlQ0XG4gICAgICAgIHdpdGggdHlwZSB0ID0gKHAxLCBwMiwgcDMsIHA0KSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2U1IChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIgcDMgcDQgcDUpIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0IG9mX3A1ID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AzKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3A0KVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3A1KVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UNVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZCA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIGIgPSBwMlxuXG4gICAgICAgIGxldCBiID0gb2ZfcDJcblxuICAgICAgICB0eXBlIGMgPSBwM1xuXG4gICAgICAgIGxldCBjID0gb2ZfcDNcblxuICAgICAgICB0eXBlIGQgPSBwNFxuXG4gICAgICAgIGxldCBkID0gb2ZfcDRcblxuICAgICAgICB0eXBlIGUgPSBwNVxuXG4gICAgICAgIGxldCBlID0gb2ZfcDVcblxuICAgICAgICB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQsIHA1KSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDVcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQsIHA1KSBYLnQpXG4gIDs7XG5lbmRcbiIsIm9wZW4gU3RkX2ludGVybmFsXG5cbm1vZHVsZSBNYWtlMCAoWCA6IE5hbWVkX2ludGYuUzApIDogVHlwZXJlcGFibGUuUyB3aXRoIHR5cGUgdCA6PSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UwIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlMSAoWCA6IE5hbWVkX2ludGYuUzEpIDogVHlwZXJlcGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlMSAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxID0gVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCBvZl9wMSwgTm9uZSlcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBOYW1lZF9pbnRmLlMyKSA6IFR5cGVyZXBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIFgudCA9XG5zdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UyIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IE5hbWVkX2ludGYuUzMpIDpcbiAgVHlwZXJlcGFibGUuUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UzIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgb2ZfcDMgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyIG9mX3AzLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlNCAoWCA6IE5hbWVkX2ludGYuUzQpIDpcbiAgVHlwZXJlcGFibGUuUzQgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA6PSAoJ2EsICdiLCAnYywgJ2QpIFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTQgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCA9XG4gICAgVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCwgTm9uZSlcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlNSAoWCA6IE5hbWVkX2ludGYuUzUpIDpcbiAgVHlwZXJlcGFibGUuUzUgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlNSAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0IG9mX3A1ID1cbiAgICBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0IG9mX3A1LCBOb25lKVxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4gSW1wb3J0XG5cbm1vZHVsZSBOYW1lIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgY29tcGFyZV1cblxuICBpbmNsdWRlIHNpZ1xuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuICBbQEBvY2FtbC5kb2MgXCJAaW5saW5lXCJdXG5cbiAgW0BAQGVuZF1cblxuICB2YWwgcmVsYXRpdmVfdG8gOiBkaXI6c3RyaW5nIC0+IHQgLT4gc3RyaW5nXG5cbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgcmVsYXRpdmVfdG8gfmRpciB0ID1cbiAgICBpZiBub3QgKFN0ZGxpYi5GaWxlbmFtZS5pc19yZWxhdGl2ZSB0KSB0aGVuIHQgZWxzZSBTdGRsaWIuRmlsZW5hbWUuY29uY2F0IGRpciB0XG4gIDs7XG5lbmRcblxubGV0IGluaXRpYWxfZGlyID1cbiAgbGV0IGRpcl9vcl9lcnJvciA9XG4gICAgbWF0Y2ggU3RkbGliLlN5cy5nZXRjd2QgKCkgd2l0aFxuICAgIHwgdiAtPiBgT2sgdlxuICAgIHwgZXhjZXB0aW9uIGV4biAtPiBgRXhuIGV4blxuICBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCBkaXJfb3JfZXJyb3Igd2l0aFxuICAgIHwgYE9rIHYgLT4gdlxuICAgIHwgYEV4biBleG4gLT4gcmFpc2UgZXhuXG47O1xuXG5tb2R1bGUgTG9jYXRpb24gPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBmaWxlbmFtZSA6IE5hbWUudFxuICAgICAgOyBsaW5lX251bWJlciA6IGludFxuICAgICAgOyBsaW5lX3N0YXJ0IDogaW50XG4gICAgICA7IHN0YXJ0X3BvcyA6IGludFxuICAgICAgOyBlbmRfcG9zIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIGNvbXBhcmVdXG5cbiAgICBsZXQgXyA9IGZ1biAoXyA6IHQpIC0+ICgpXG5cbiAgICBsZXQgdF9vZl9zZXhwID1cbiAgICAgIChsZXQgZXJyb3Jfc291cmNlX18wMDJfID0gXCJmaWxlLm1sLkxvY2F0aW9uLlQudFwiIGluXG4gICAgICAgZnVuIHhfXzAwM18gLT5cbiAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9yZWNvcmQucmVjb3JkX29mX3NleHBcbiAgICAgICAgICAgfmNhbGxlcjplcnJvcl9zb3VyY2VfXzAwMl9cbiAgICAgICAgICAgfmZpZWxkczpcbiAgICAgICAgICAgICAoRmllbGRcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImZpbGVuYW1lXCJcbiAgICAgICAgICAgICAgICA7IGtpbmQgPSBSZXF1aXJlZFxuICAgICAgICAgICAgICAgIDsgY29udiA9IE5hbWUudF9vZl9zZXhwXG4gICAgICAgICAgICAgICAgOyByZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImxpbmVfbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICA7IGtpbmQgPSBSZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgIDsgY29udiA9IGludF9vZl9zZXhwXG4gICAgICAgICAgICAgICAgICAgICAgOyByZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImxpbmVfc3RhcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjb252ID0gaW50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHJlc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwic3RhcnRfcG9zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGtpbmQgPSBSZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY29udiA9IGludF9vZl9zZXhwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyByZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImVuZF9wb3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjb252ID0gaW50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHJlc3QgPSBFbXB0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICB+aW5kZXhfb2ZfZmllbGQ6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBcImZpbGVuYW1lXCIgLT4gMFxuICAgICAgICAgICAgIHwgXCJsaW5lX251bWJlclwiIC0+IDFcbiAgICAgICAgICAgICB8IFwibGluZV9zdGFydFwiIC0+IDJcbiAgICAgICAgICAgICB8IFwic3RhcnRfcG9zXCIgLT4gM1xuICAgICAgICAgICAgIHwgXCJlbmRfcG9zXCIgLT4gNFxuICAgICAgICAgICAgIHwgXyAtPiAtMSlcbiAgICAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkczpmYWxzZVxuICAgICAgICAgICB+Y3JlYXRlOlxuICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgIChmaWxlbmFtZSwgKGxpbmVfbnVtYmVyLCAobGluZV9zdGFydCwgKHN0YXJ0X3BvcywgKGVuZF9wb3MsICgpKSkpKSkgOiB0IC0+XG4gICAgICAgICAgICAgICB7IGZpbGVuYW1lOyBsaW5lX251bWJlcjsgbGluZV9zdGFydDsgc3RhcnRfcG9zOyBlbmRfcG9zIH0pXG4gICAgICAgICAgIHhfXzAwM19cbiAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgOztcblxuICAgIGxldCBfID0gdF9vZl9zZXhwXG5cbiAgICBsZXQgc2V4cF9vZl90ID1cbiAgICAgIChmdW4geyBmaWxlbmFtZSA9IGZpbGVuYW1lX18wMDVfXG4gICAgICAgICAgIDsgbGluZV9udW1iZXIgPSBsaW5lX251bWJlcl9fMDA3X1xuICAgICAgICAgICA7IGxpbmVfc3RhcnQgPSBsaW5lX3N0YXJ0X18wMDlfXG4gICAgICAgICAgIDsgc3RhcnRfcG9zID0gc3RhcnRfcG9zX18wMTFfXG4gICAgICAgICAgIDsgZW5kX3BvcyA9IGVuZF9wb3NfXzAxM19cbiAgICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgYm5kc19fMDA0XyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAxNF8gPSBzZXhwX29mX2ludCBlbmRfcG9zX18wMTNfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVuZF9wb3NcIjsgYXJnX18wMTRfIF0gOjogYm5kc19fMDA0X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX2ludCBzdGFydF9wb3NfXzAxMV8gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhcnRfcG9zXCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwNF9cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDRfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9pbnQgbGluZV9zdGFydF9fMDA5XyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaW5lX3N0YXJ0XCI7IGFyZ19fMDEwXyBdXG4gICAgICAgICAgIDo6IGJuZHNfXzAwNF9cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDRfID1cbiAgICAgICAgICBsZXQgYXJnX18wMDhfID0gc2V4cF9vZl9pbnQgbGluZV9udW1iZXJfXzAwN18gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGluZV9udW1iZXJcIjsgYXJnX18wMDhfIF1cbiAgICAgICAgICAgOjogYm5kc19fMDA0X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAwNl8gPSBOYW1lLnNleHBfb2ZfdCBmaWxlbmFtZV9fMDA1XyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJmaWxlbmFtZVwiOyBhcmdfXzAwNl8gXSA6OiBibmRzX18wMDRfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDA0X1xuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIDs7XG5cbiAgICBsZXQgXyA9IHNleHBfb2ZfdFxuXG4gICAgbGV0IGNvbXBhcmUgPVxuICAgICAgKGZ1biBhX18wMTVfIGJfXzAxNl8gLT5cbiAgICAgICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDE1XyBiX18wMTZfXG4gICAgICAgICB0aGVuIDBcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBtYXRjaCBOYW1lLmNvbXBhcmUgYV9fMDE1Xy5maWxlbmFtZSBiX18wMTZfLmZpbGVuYW1lIHdpdGhcbiAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAxNV8ubGluZV9udW1iZXIgYl9fMDE2Xy5saW5lX251bWJlciB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMTVfLmxpbmVfc3RhcnQgYl9fMDE2Xy5saW5lX3N0YXJ0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAxNV8uc3RhcnRfcG9zIGJfXzAxNl8uc3RhcnRfcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAwIC0+IGNvbXBhcmVfaW50IGFfXzAxNV8uZW5kX3BvcyBiX18wMTZfLmVuZF9wb3NcbiAgICAgICAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgIDogdCAtPiB0IC0+IGludClcbiAgICA7O1xuXG4gICAgbGV0IF8gPSBjb21wYXJlXG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5cbiAgbGV0IGJlZ2lubmluZ19vZl9maWxlIGZpbGVuYW1lID1cbiAgICB7IGZpbGVuYW1lOyBsaW5lX251bWJlciA9IDE7IGxpbmVfc3RhcnQgPSAwOyBzdGFydF9wb3MgPSAwOyBlbmRfcG9zID0gMCB9XG4gIDs7XG5cbiAgbGV0IG9mX3NvdXJjZV9jb2RlX3Bvc2l0aW9uIChwb3MgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KSA9XG4gICAgeyBmaWxlbmFtZSA9IE5hbWUub2Zfc3RyaW5nIChTdGRsaWIuRmlsZW5hbWUuYmFzZW5hbWUgcG9zLnBvc19mbmFtZSlcbiAgICA7IGxpbmVfbnVtYmVyID0gcG9zLnBvc19sbnVtXG4gICAgOyBsaW5lX3N0YXJ0ID0gcG9zLnBvc19ib2xcbiAgICA7IHN0YXJ0X3BvcyA9IHBvcy5wb3NfY251bVxuICAgIDsgZW5kX3BvcyA9IHBvcy5wb3NfY251bVxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRGlnZXN0IDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZV1cblxuICBpbmNsdWRlIHNpZ1xuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuICBbQEBvY2FtbC5kb2MgXCJAaW5saW5lXCJdXG5cbiAgW0BAQGVuZF1cblxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3N0cmluZyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgXyA9IHNleHBfb2ZfdFxuICBsZXQgY29tcGFyZSA9IChjb21wYXJlX3N0cmluZyA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBfID0gY29tcGFyZVxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gdFxuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbGV0IGV4cGVjdGVkX2xlbmd0aCA9IDMyIGluXG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IGV4cGVjdGVkX2xlbmd0aFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuRmlsZS5EaWdlc3Qub2Zfc3RyaW5nLCB1bmV4cGVjdGVkIGxlbmd0aFwiO1xuICAgIGZvciBpID0gMCB0byBleHBlY3RlZF9sZW5ndGggLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIC0+ICgpXG4gICAgICB8IF8gLT4gaW52YWxpZF9hcmcgXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuRmlsZS5EaWdlc3Qub2Zfc3RyaW5nXCJcbiAgICBkb25lO1xuICAgIHNcbiAgOztcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBOT1RFOlxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZ0xhYmVscy5tbGksIHJ1biB0b29scy9zeW5jX3N0ZGxpYl9kb2NzIGFmdGVyIGVkaXRpbmdcbiAgIGl0IHRvIGdlbmVyYXRlIHN0cmluZy5tbGkuXG5cbiAgIElmIHRoaXMgZmlsZSBpcyBzdHJpbmcubWxpLCBkbyBub3QgZWRpdCBpdCBkaXJlY3RseSAtLSBlZGl0XG4gICBzdHJpbmdMYWJlbHMubWxpIGluc3RlYWQuXG4gKilcblxuKCoqIFN0cmluZ3MuXG5cbiAgICBBIHN0cmluZyBbc10gb2YgbGVuZ3RoIFtuXSBpcyBhbiBpbmRleGFibGUgYW5kIGltbXV0YWJsZSBzZXF1ZW5jZVxuICAgIG9mIFtuXSBieXRlcy4gRm9yIGhpc3RvcmljYWwgcmVhc29ucyB0aGVzZSBieXRlcyBhcmUgcmVmZXJyZWQgdG9cbiAgICBhcyBjaGFyYWN0ZXJzLlxuXG4gICAgVGhlIHNlbWFudGljcyBvZiBzdHJpbmcgZnVuY3Rpb25zIGlzIGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgICBpbmRpY2VzIGFuZCBwb3NpdGlvbnMuIFRoZXNlIGFyZSBkZXBpY3RlZCBhbmQgZGVzY3JpYmVkXG4gICAgYXMgZm9sbG93cy5cblxue3ZcbnBvc2l0aW9ucyAgMCAgIDEgICAyICAgMyAgIDQgICAgbi0xICAgIG5cbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbiAgaW5kaWNlcyAgfCAwIHwgMSB8IDIgfCAzIHwgLi4uIHwgbi0xIHxcbiAgICAgICAgICAgKy0tLSstLS0rLS0tKy0tLSsgICAgICstLS0tLStcbnZ9XG4gICAge3VsXG4gICAgey0gQW4ge2UgaW5kZXh9IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgXFxbWzBdO1tuLTFdXFxdLlxuICAgICAgIEl0IHJlcHJlc2VudHMgdGhlIFtpXXRoIGJ5dGUgKGNoYXJhY3Rlcikgb2YgW3NdIHdoaWNoIGNhbiBiZVxuICAgICAgIGFjY2Vzc2VkIHVzaW5nIHRoZSBjb25zdGFudCB0aW1lIHN0cmluZyBpbmRleGluZyBvcGVyYXRvclxuICAgICAgIFtzLltpXV0ufVxuICAgIHstIEEge2UgcG9zaXRpb259IFtpXSBvZiBbc10gaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2VcbiAgICAgICBcXFtbMF07W25dXFxdLiBJdCByZXByZXNlbnRzIGVpdGhlciB0aGUgcG9pbnQgYXQgdGhlIGJlZ2lubmluZyBvZlxuICAgICAgIHRoZSBzdHJpbmcsIG9yIHRoZSBwb2ludCBiZXR3ZWVuIHR3byBpbmRpY2VzLCBvciB0aGUgcG9pbnQgYXRcbiAgICAgICB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuIFRoZSBbaV10aCBieXRlIGluZGV4IGlzIGJldHdlZW4gcG9zaXRpb25cbiAgICAgICBbaV0gYW5kIFtpKzFdLn19XG5cbiAgICBUd28gaW50ZWdlcnMgW3N0YXJ0XSBhbmQgW2xlbl0gYXJlIHNhaWQgdG8gZGVmaW5lIGEge2UgdmFsaWRcbiAgICBzdWJzdHJpbmd9IG9mIFtzXSBpZiBbbGVuID49IDBdIGFuZCBbc3RhcnRdLCBbc3RhcnQrbGVuXSBhcmVcbiAgICBwb3NpdGlvbnMgb2YgW3NdLlxuXG4gICAge2IgVW5pY29kZSB0ZXh0Ln0gU3RyaW5ncyBiZWluZyBhcmJpdHJhcnkgc2VxdWVuY2VzIG9mIGJ5dGVzLCB0aGV5XG4gICAgY2FuIGhvbGQgYW55IGtpbmQgb2YgdGV4dHVhbCBlbmNvZGluZy4gSG93ZXZlciB0aGUgcmVjb21tZW5kZWRcbiAgICBlbmNvZGluZyBmb3Igc3RvcmluZyBVbmljb2RlIHRleHQgaW4gT0NhbWwgc3RyaW5ncyBpcyBVVEYtOC4gVGhpc1xuICAgIGlzIHRoZSBlbmNvZGluZyB1c2VkIGJ5IFVuaWNvZGUgZXNjYXBlcyBpbiBzdHJpbmcgbGl0ZXJhbHMuIEZvclxuICAgIGV4YW1wbGUgdGhlIHN0cmluZyBbXCJcXHV7MUY0MkJ9XCJdIGlzIHRoZSBVVEYtOCBlbmNvZGluZyBvZiB0aGVcbiAgICBVbmljb2RlIGNoYXJhY3RlciBVKzFGNDJCLlxuXG4gICAge2IgUGFzdCBtdXRhYmlsaXR5Ln0gQmVmb3JlIE9DYW1sIDQuMDIsIHN0cmluZ3MgdXNlZCB0byBiZSBtb2RpZmlhYmxlIGluXG4gICAgcGxhY2UgbGlrZSB7IUJ5dGVzLnR9IG11dGFibGUgc2VxdWVuY2VzIG9mIGJ5dGVzLlxuICAgIE9DYW1sIDQgaGFkIHZhcmlvdXMgY29tcGlsZXIgZmxhZ3MgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBzdXBwb3J0IHRoZVxuICAgIHRyYW5zaXRpb24gcGVyaW9kIGZyb20gbXV0YWJsZSB0byBpbW11dGFibGUgc3RyaW5ncy5cbiAgICBUaG9zZSBvcHRpb25zIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlLCBhbmQgc3RyaW5ncyBhcmUgbm93IGFsd2F5c1xuICAgIGltbXV0YWJsZS5cblxuICAgIFRoZSBsYWJlbGVkIHZlcnNpb24gb2YgdGhpcyBtb2R1bGUgY2FuIGJlIHVzZWQgYXMgZGVzY3JpYmVkIGluIHRoZVxuICAgIHshU3RkTGFiZWxzfSBtb2R1bGUuXG4qKVxuXG4oKiogezE6c3RyaW5ncyBTdHJpbmdzfSAqKVxuXG50eXBlIHQgPSBzdHJpbmdcbigqKiBUaGUgdHlwZSBmb3Igc3RyaW5ncy4gKilcblxudmFsIG1ha2UgOiBpbnQgLT4gY2hhciAtPiBzdHJpbmdcbigqKiBbbWFrZSBuIGNdIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbl0gd2l0aCBlYWNoIGluZGV4IGhvbGRpbmcgdGhlXG4gICAgY2hhcmFjdGVyIFtjXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtuIDwgMF0gb3IgW24gPiBdeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9LiAqKVxuXG52YWwgaW5pdCA6IGludCAtPiAoaW50IC0+IGNoYXIpIC0+IHN0cmluZ1xuKCoqIFtpbml0IG4gZl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGluZGV4XG4gICAgW2ldIGhvbGRpbmcgdGhlIGNoYXJhY3RlciBbZiBpXSAoY2FsbGVkIGluIGluY3JlYXNpbmcgaW5kZXggb3JkZXIpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uXG4gICAgQHNpbmNlIDQuMDIgKilcblxudmFsIGVtcHR5IDogc3RyaW5nXG4oKiogVGhlIGVtcHR5IHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG4oKiogW2xlbmd0aCBzXSBpcyB0aGUgbGVuZ3RoIChudW1iZXIgb2YgYnl0ZXMvY2hhcmFjdGVycykgb2YgW3NdLiAqKVxuXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuKCoqIFtnZXQgcyBpXSBpcyB0aGUgY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpbiBbc10uIFRoaXMgaXMgdGhlIHNhbWVcbiAgICBhcyB3cml0aW5nIFtzLltpXV0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gbm90IGFuIGluZGV4IG9mIFtzXS4gKilcblxudmFsIG9mX2J5dGVzIDogYnl0ZXMgLT4gc3RyaW5nXG4oKiogUmV0dXJuIGEgbmV3IHN0cmluZyB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlbiBieXRlXG4gICAgc2VxdWVuY2UuXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIHRvX2J5dGVzIDogc3RyaW5nIC0+IGJ5dGVzXG4oKiogUmV0dXJuIGEgbmV3IGJ5dGUgc2VxdWVuY2UgdGhhdCBjb250YWlucyB0aGUgc2FtZSBieXRlcyBhcyB0aGUgZ2l2ZW5cbiAgICBzdHJpbmcuXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGJsaXQgOlxuICBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuKCoqIFNhbWUgYXMgeyFCeXRlcy5ibGl0X3N0cmluZ30gd2hpY2ggc2hvdWxkIGJlIHByZWZlcnJlZC4gKilcblxuKCoqIHsxOmNvbmNhdCBDb25jYXRlbmF0aW5nfVxuXG4gICAge2IgTm90ZS59IFRoZSB7IVN0ZGxpYi4oIF4gKX0gYmluYXJ5IG9wZXJhdG9yIGNvbmNhdGVuYXRlcyB0d29cbiAgICBzdHJpbmdzLiAqKVxuXG52YWwgY29uY2F0IDogc3RyaW5nIC0+IHN0cmluZyBsaXN0IC0+IHN0cmluZ1xuKCoqIFtjb25jYXQgc2VwIHNzXSBjb25jYXRlbmF0ZXMgdGhlIGxpc3Qgb2Ygc3RyaW5ncyBbc3NdLCBpbnNlcnRpbmdcbiAgICB0aGUgc2VwYXJhdG9yIHN0cmluZyBbc2VwXSBiZXR3ZWVuIGVhY2guXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgY2F0IDogc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2F0IHMxIHMyXSBjb25jYXRlbmF0ZXMgczEgYW5kIHMyIChbczEgXiBzMl0pLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG4oKiogezE6cHJlZGljYXRlcyBQcmVkaWNhdGVzIGFuZCBjb21wYXJpc29uc30gKilcblxudmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbigqKiBbZXF1YWwgczAgczFdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbczBdIGFuZCBbczFdIGFyZSBjaGFyYWN0ZXItd2lzZVxuICAgIGVxdWFsLlxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4oKiogW2NvbXBhcmUgczAgczFdIHNvcnRzIFtzMF0gYW5kIFtzMV0gaW4gbGV4aWNvZ3JhcGhpY2FsIG9yZGVyLiBbY29tcGFyZV1cbiAgICBiZWhhdmVzIGxpa2UgeyFTdGRsaWIuY29tcGFyZX0gb24gc3RyaW5ncyBidXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50LiAqKVxuXG52YWwgc3RhcnRzX3dpdGggOlxuICBwcmVmaXggKCogY29tbWVudCB0aHdhcnRzIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgKikgOnN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtzdGFydHNfd2l0aCBdW35wcmVmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBzdGFydHMgd2l0aFxuICAgIFtwcmVmaXhdLlxuXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGVuZHNfd2l0aCA6XG4gIHN1ZmZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2VuZHNfd2l0aCBdW35zdWZmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBlbmRzIHdpdGggW3N1ZmZpeF0uXG5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW2NvbnRhaW5zX2Zyb20gcyBzdGFydCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYWZ0ZXIgcG9zaXRpb24gW3N0YXJ0XS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdGFydF0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgcmNvbnRhaW5zX2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtyY29udGFpbnNfZnJvbSBzIHN0b3AgY10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtjXSBhcHBlYXJzIGluIFtzXVxuICAgIGJlZm9yZSBwb3NpdGlvbiBbc3RvcCsxXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtzdG9wIDwgMF0gb3IgW3N0b3ArMV0gaXMgbm90IGEgdmFsaWRcbiAgICBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCBjb250YWlucyA6IHN0cmluZyAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnMgcyBjXSBpcyB7IVN0cmluZy5jb250YWluc19mcm9tfVsgcyAwIGNdLiAqKVxuXG4oKiogezE6ZXh0cmFjdCBFeHRyYWN0aW5nIHN1YnN0cmluZ3N9ICopXG5cbnZhbCBzdWIgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiBzdHJpbmdcbigqKiBbc3ViIHMgcG9zIGxlbl0gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtsZW5dLCBjb250YWluaW5nIHRoZVxuICAgIHN1YnN0cmluZyBvZiBbc10gdGhhdCBzdGFydHMgYXQgcG9zaXRpb24gW3Bvc10gYW5kIGhhcyBsZW5ndGhcbiAgICBbbGVuXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtwb3NdIGFuZCBbbGVuXSBkbyBub3QgZGVzaWduYXRlIGEgdmFsaWRcbiAgICBzdWJzdHJpbmcgb2YgW3NdLiAqKVxuXG52YWwgc3BsaXRfb25fY2hhciA6IGNoYXIgLT4gc3RyaW5nIC0+IHN0cmluZyBsaXN0XG4oKiogW3NwbGl0X29uX2NoYXIgc2VwIHNdIGlzIHRoZSBsaXN0IG9mIGFsbCAocG9zc2libHkgZW1wdHkpXG4gICAgc3Vic3RyaW5ncyBvZiBbc10gdGhhdCBhcmUgZGVsaW1pdGVkIGJ5IHRoZSBjaGFyYWN0ZXIgW3NlcF0uXG4gICAgSWYgW3NdIGlzIGVtcHR5LCB0aGUgcmVzdWx0IGlzIHRoZSBzaW5nbGV0b24gbGlzdCBbW1wiXCJdXS5cblxuICAgIFRoZSBmdW5jdGlvbidzIHJlc3VsdCBpcyBzcGVjaWZpZWQgYnkgdGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzOlxuICAgIHt1bFxuICAgIHstIFRoZSBsaXN0IGlzIG5vdCBlbXB0eS59XG4gICAgey0gQ29uY2F0ZW5hdGluZyBpdHMgZWxlbWVudHMgdXNpbmcgW3NlcF0gYXMgYSBzZXBhcmF0b3IgcmV0dXJucyBhXG4gICAgICBzdHJpbmcgZXF1YWwgdG8gdGhlIGlucHV0IChbY29uY2F0IChtYWtlIDEgc2VwKVxuICAgICAgKHNwbGl0X29uX2NoYXIgc2VwIHMpID0gc10pLn1cbiAgICB7LSBObyBzdHJpbmcgaW4gdGhlIHJlc3VsdCBjb250YWlucyB0aGUgW3NlcF0gY2hhcmFjdGVyLn19XG5cbiAgICBAc2luY2UgNC4wNCAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmFuc2Zvcm1pbmcgVHJhbnNmb3JtaW5nfSAqKVxuXG52YWwgbWFwIDogKGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXAgZiBzXSBpcyB0aGUgc3RyaW5nIHJlc3VsdGluZyBmcm9tIGFwcGx5aW5nIFtmXSB0byBhbGwgdGhlXG4gICAgY2hhcmFjdGVycyBvZiBbc10gaW4gaW5jcmVhc2luZyBvcmRlci5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbnZhbCBtYXBpIDogKGludCAtPiBjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwaSBmIHNdIGlzIGxpa2UgeyFtYXB9IGJ1dCB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBpcyBhbHNvXG4gICAgcGFzc2VkIHRvIFtmXS5cblxuICAgIEBzaW5jZSA0LjAyICopXG5cbnZhbCBmb2xkX2xlZnQgOiAoJ2FjYyAtPiBjaGFyIC0+ICdhY2MpIC0+ICdhY2MgLT4gc3RyaW5nIC0+ICdhY2NcbigqKiBbZm9sZF9sZWZ0IGYgeCBzXSBjb21wdXRlcyBbZiAoLi4uIChmIChmIHggcy5bMF0pIHMuWzFdKSAuLi4pIHMuW24tMV1dLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBmb2xkX3JpZ2h0IDogKGNoYXIgLT4gJ2FjYyAtPiAnYWNjKSAtPiBzdHJpbmcgLT4gJ2FjYyAtPiAnYWNjXG4oKiogW2ZvbGRfcmlnaHQgZiBzIHhdIGNvbXB1dGVzIFtmIHMuWzBdIChmIHMuWzFdICggLi4uIChmIHMuW24tMV0geCkgLi4uKSldLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBmb3JfYWxsIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZm9yX2FsbCBwIHNdIGNoZWNrcyBpZiBhbGwgY2hhcmFjdGVycyBpbiBbc10gc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtwXS5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZXhpc3RzIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZXhpc3RzIHAgc10gY2hlY2tzIGlmIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgb2YgW3NdIHNhdGlzZmllcyB0aGUgcHJlZGljYXRlXG4gICAgW3BdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCB0cmltIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt0cmltIHNdIGlzIFtzXSB3aXRob3V0IGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuIFdoaXRlc3BhY2VcbiAgICBjaGFyYWN0ZXJzIGFyZTogWycgJ10sIFsnXFx4MEMnXSAoZm9ybSBmZWVkKSwgWydcXG4nXSwgWydcXHInXSwgYW5kIFsnXFx0J10uXG5cbiAgICBAc2luY2UgNC4wMCAqKVxuXG52YWwgZXNjYXBlZCA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbZXNjYXBlZCBzXSBpcyBbc10gd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMgcmVwcmVzZW50ZWQgYnkgZXNjYXBlXG4gICAgc2VxdWVuY2VzLCBmb2xsb3dpbmcgdGhlIGxleGljYWwgY29udmVudGlvbnMgb2YgT0NhbWwuXG5cbiAgICBBbGwgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBVUy1BU0NJSSBwcmludGFibGUgcmFuZ2UgXFxbMHgyMDsweDdFXFxdIGFyZVxuICAgIGVzY2FwZWQsIGFzIHdlbGwgYXMgYmFja3NsYXNoICgweDJGKSBhbmQgZG91YmxlLXF1b3RlICgweDIyKS5cblxuICAgIFRoZSBmdW5jdGlvbiB7IVNjYW5mLnVuZXNjYXBlZH0gaXMgYSBsZWZ0IGludmVyc2Ugb2YgW2VzY2FwZWRdLFxuICAgIGkuZS4gW1NjYW5mLnVuZXNjYXBlZCAoZXNjYXBlZCBzKSA9IHNdIGZvciBhbnkgc3RyaW5nIFtzXSAodW5sZXNzXG4gICAgW2VzY2FwZWQgc10gZmFpbHMpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy4gKilcblxudmFsIHVwcGVyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdXBwZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCBsb3dlcmNhc2UgbGV0dGVyc1xuICAgIHRyYW5zbGF0ZWQgdG8gdXBwZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGxvd2VyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbG93ZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCB1cHBlcmNhc2UgbGV0dGVycyB0cmFuc2xhdGVkXG4gICAgdG8gbG93ZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2NhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG9cbiAgICB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgdW5jYXBpdGFsaXplX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1bmNhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG8gbG93ZXJjYXNlLFxuICAgIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhdmVyc2luZyBUcmF2ZXJzaW5nfSAqKVxuXG52YWwgaXRlciA6IChjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXIgZiBzXSBhcHBsaWVzIGZ1bmN0aW9uIFtmXSBpbiB0dXJuIHRvIGFsbCB0aGUgY2hhcmFjdGVycyBvZiBbc10uXG4gICAgSXQgaXMgZXF1aXZhbGVudCB0byBbZiBzLlswXTsgZiBzLlsxXTsgLi4uOyBmIHMuW2xlbmd0aCBzIC0gMV07ICgpXS4gKilcblxudmFsIGl0ZXJpIDogKGludCAtPiBjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXJpXSBpcyBsaWtlIHshaXRlcn0sIGJ1dCB0aGUgZnVuY3Rpb24gaXMgYWxzbyBnaXZlbiB0aGVcbiAgICBjb3JyZXNwb25kaW5nIGNoYXJhY3RlciBpbmRleC5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbigqKiB7MTpzZWFyY2hpbmcgU2VhcmNoaW5nfSAqKVxuXG52YWwgaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXhfZnJvbSBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cblxudmFsIGluZGV4X2Zyb21fb3B0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBbY11cbiAgICBpbiBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldIChpZiBhbnkpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4X2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBbY10gaW5cbiAgICBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuXG4gICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBbY10gZG9lcyBub3Qgb2NjdXIgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXS5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtyaW5kZXhfZnJvbV9vcHQgcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaSsxXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIGluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW2luZGV4IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbX1bIHMgMCBjXS4gKilcblxudmFsIGluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbaW5kZXhfb3B0IHMgY10gaXMgeyFTdHJpbmcuaW5kZXhfZnJvbV9vcHR9WyBzIDAgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgcmluZGV4IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50XG4oKiogW3JpbmRleCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tfVsgcyAobGVuZ3RoIHMgLSAxKSBjXS4gKilcblxudmFsIHJpbmRleF9vcHQgOiBzdHJpbmcgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5yaW5kZXhfZnJvbV9vcHR9WyBzIChsZW5ndGggcyAtIDEpIGNdLlxuXG4gICAgQHNpbmNlIDQuMDUgKilcblxuKCoqIHsxIFN0cmluZ3MgYW5kIFNlcXVlbmNlc30gKilcblxudmFsIHRvX3NlcSA6IHQgLT4gY2hhciBTZXEudFxuKCoqIFt0b19zZXEgc10gaXMgYSBzZXF1ZW5jZSBtYWRlIG9mIHRoZSBzdHJpbmcncyBjaGFyYWN0ZXJzIGluXG4gICAgaW5jcmVhc2luZyBvcmRlci4gSW4gW1widW5zYWZlLXN0cmluZ1wiXSBtb2RlLCBtb2RpZmljYXRpb25zIG9mIHRoZSBzdHJpbmdcbiAgICBkdXJpbmcgaXRlcmF0aW9uIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZSBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCB0b19zZXFpIDogdCAtPiAoaW50ICogY2hhcikgU2VxLnRcbigqKiBbdG9fc2VxaSBzXSBpcyBsaWtlIHshdG9fc2VxfSBidXQgYWxzbyB0dXBsZXMgdGhlIGNvcnJlc3BvbmRpbmcgaW5kZXguXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG52YWwgb2Zfc2VxIDogY2hhciBTZXEudCAtPiB0XG4oKiogW29mX3NlcSBzXSBpcyBhIHN0cmluZyBtYWRlIG9mIHRoZSBzZXF1ZW5jZSdzIGNoYXJhY3RlcnMuXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG4oKiogezE6dXRmIFVURiBkZWNvZGluZyBhbmQgdmFsaWRhdGlvbnN9XG5cbiAgICBAc2luY2UgNC4xNCAqKVxuXG4oKiogezI6dXRmXzggVVRGLTh9ICopXG5cbnZhbCBnZXRfdXRmXzhfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfOF91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTggY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpblxuICAgIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl84IDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl84IGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtOCBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2YmUgVVRGLTE2QkV9ICopXG5cbnZhbCBnZXRfdXRmXzE2YmVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZiZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2QkUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmJlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmJlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZCRSBkYXRhLiAqKVxuXG4oKiogezI6dXRmXzE2bGUgVVRGLTE2TEV9ICopXG5cbnZhbCBnZXRfdXRmXzE2bGVfdWNoYXIgOiB0IC0+IGludCAtPiBVY2hhci51dGZfZGVjb2RlXG4oKiogW2dldF91dGZfMTZsZV91Y2hhciBiIGldIGRlY29kZXMgYW4gVVRGLTE2TEUgY2hhcmFjdGVyIGF0IGluZGV4XG4gICAgW2ldIGluIFtiXS4gKilcblxudmFsIGlzX3ZhbGlkX3V0Zl8xNmxlIDogdCAtPiBib29sXG4oKiogW2lzX3ZhbGlkX3V0Zl8xNmxlIGJdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbYl0gY29udGFpbnMgdmFsaWRcbiAgICBVVEYtMTZMRSBkYXRhLiAqKVxuXG4oKiogezEgQmluYXJ5IGRlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG4oKiogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gYmluYXJ5IGRlY29kZSBpbnRlZ2VycyBmcm9tIHN0cmluZ3MuXG5cbiAgICBBbGwgZm9sbG93aW5nIGZ1bmN0aW9ucyByYWlzZSBbSW52YWxpZF9hcmd1bWVudF0gaWYgdGhlIGNoYXJhY3RlcnNcbiAgICBuZWVkZWQgYXQgaW5kZXggW2ldIHRvIGRlY29kZSB0aGUgaW50ZWdlciBhcmUgbm90IGF2YWlsYWJsZS5cblxuICAgIExpdHRsZS1lbmRpYW4gKHJlc3AuIGJpZy1lbmRpYW4pIGVuY29kaW5nIG1lYW5zIHRoYXQgbGVhc3RcbiAgICAocmVzcC4gbW9zdCkgc2lnbmlmaWNhbnQgYnl0ZXMgYXJlIHN0b3JlZCBmaXJzdC4gIEJpZy1lbmRpYW4gaXNcbiAgICBhbHNvIGtub3duIGFzIG5ldHdvcmsgYnl0ZSBvcmRlci4gIE5hdGl2ZS1lbmRpYW4gZW5jb2RpbmcgaXNcbiAgICBlaXRoZXIgbGl0dGxlLWVuZGlhbiBvciBiaWctZW5kaWFuIGRlcGVuZGluZyBvbiB7IVN5cy5iaWdfZW5kaWFufS5cblxuICAgIDMyLWJpdCBhbmQgNjQtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludDMyXSBhbmRcbiAgICBbaW50NjRdIHR5cGVzLCB3aGljaCBjYW4gYmUgaW50ZXJwcmV0ZWQgZWl0aGVyIGFzIHNpZ25lZCBvclxuICAgIHVuc2lnbmVkIG51bWJlcnMuXG5cbiAgICA4LWJpdCBhbmQgMTYtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludF0gdHlwZSxcbiAgICB3aGljaCBoYXMgbW9yZSBiaXRzIHRoYW4gdGhlIGJpbmFyeSBlbmNvZGluZy4gIFRoZXNlIGV4dHJhIGJpdHNcbiAgICBhcmUgc2lnbi1leHRlbmRlZCAob3IgemVyby1leHRlbmRlZCkgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZWNvZGUgOC1iaXRcbiAgICBvciAxNi1iaXQgaW50ZWdlcnMgYW5kIHJlcHJlc2VudGVkIHRoZW0gd2l0aCBbaW50XSB2YWx1ZXMuXG4qKVxuXG52YWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQ4IGIgaV0gaXMgW2JdJ3MgdW5zaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDggYiBpXSBpcyBbYl0ncyBzaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF91aW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDE2X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLmhhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRcbiAgICB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZX0uXG5cbiAgICBAc2luY2UgNS4wICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLnNlZWRlZF9oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzXG4gICAgYXJndW1lbnQgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2VTZWVkZWR9LlxuXG4gICAgQHNpbmNlIDUuMCAqKVxuXG52YWwgZ2V0X2ludDMyX2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDMyX2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDY0X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG4oKiovKiopXG5cbigqIFRoZSBmb2xsb3dpbmcgaXMgZm9yIHN5c3RlbSB1c2Ugb25seS4gRG8gbm90IGNhbGwgZGlyZWN0bHkuICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPlxuICAgIHVuaXQgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuIiwib3BlbiEgQmFzZVxub3BlbiBJbXBvcnRcbm9wZW4gUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbm9wZW4gU2V4cGxpYjAuU2V4cF9jb252XG5cbm1vZHVsZSBCb2R5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBFeGFjdCBvZiBzdHJpbmdcbiAgICB8IE91dHB1dFxuICAgIHwgUHJldHR5IG9mICdhXG4gICAgfCBVbnJlYWNoYWJsZVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZSwgZXF1YWxdXG5cbiAgbGV0IF8gPSBmdW4gKF8gOiAnYSB0KSAtPiAoKVxuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biAodHlwZSBhX18wMDZfKSA6ICgoYV9fMDA2XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAwNl8gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMDFfIC0+IGZ1bmN0aW9uXG4gICAgICB8IEV4YWN0IGFyZzBfXzAwMl8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwM18gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMDJfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkV4YWN0XCI7IHJlczBfXzAwM18gXVxuICAgICAgfCBPdXRwdXQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiT3V0cHV0XCJcbiAgICAgIHwgUHJldHR5IGFyZzBfXzAwNF8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwNV8gPSBfb2ZfYV9fMDAxXyBhcmcwX18wMDRfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlByZXR0eVwiOyByZXMwX18wMDVfIF1cbiAgICAgIHwgVW5yZWFjaGFibGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5yZWFjaGFibGVcIlxuICA7O1xuXG4gIGxldCBfID0gc2V4cF9vZl90XG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDA3XyBiX18wMDhfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDdfIGJfXzAwOF9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAwN18sIGJfXzAwOF8gd2l0aFxuICAgICAgfCBFeGFjdCBfYV9fMDA5XywgRXhhY3QgX2JfXzAxMF8gLT4gY29tcGFyZV9zdHJpbmcgX2FfXzAwOV8gX2JfXzAxMF9cbiAgICAgIHwgRXhhY3QgXywgXyAtPiAtMVxuICAgICAgfCBfLCBFeGFjdCBfIC0+IDFcbiAgICAgIHwgT3V0cHV0LCBPdXRwdXQgLT4gMFxuICAgICAgfCBPdXRwdXQsIF8gLT4gLTFcbiAgICAgIHwgXywgT3V0cHV0IC0+IDFcbiAgICAgIHwgUHJldHR5IF9hX18wMTFfLCBQcmV0dHkgX2JfXzAxMl8gLT4gX2NtcF9fYSBfYV9fMDExXyBfYl9fMDEyX1xuICAgICAgfCBQcmV0dHkgXywgXyAtPiAtMVxuICAgICAgfCBfLCBQcmV0dHkgXyAtPiAxXG4gICAgICB8IFVucmVhY2hhYmxlLCBVbnJlYWNoYWJsZSAtPiAwKVxuICA7O1xuXG4gIGxldCBfID0gY29tcGFyZVxuXG4gIGxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICAgIGZ1biBfY21wX19hIGFfXzAxM18gYl9fMDE0XyAtPlxuICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDEzXyBiX18wMTRfXG4gICAgdGhlbiB0cnVlXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMTNfLCBiX18wMTRfIHdpdGhcbiAgICAgIHwgRXhhY3QgX2FfXzAxNV8sIEV4YWN0IF9iX18wMTZfIC0+IGVxdWFsX3N0cmluZyBfYV9fMDE1XyBfYl9fMDE2X1xuICAgICAgfCBFeGFjdCBfLCBfIC0+IGZhbHNlXG4gICAgICB8IF8sIEV4YWN0IF8gLT4gZmFsc2VcbiAgICAgIHwgT3V0cHV0LCBPdXRwdXQgLT4gdHJ1ZVxuICAgICAgfCBPdXRwdXQsIF8gLT4gZmFsc2VcbiAgICAgIHwgXywgT3V0cHV0IC0+IGZhbHNlXG4gICAgICB8IFByZXR0eSBfYV9fMDE3XywgUHJldHR5IF9iX18wMThfIC0+IF9jbXBfX2EgX2FfXzAxN18gX2JfXzAxOF9cbiAgICAgIHwgUHJldHR5IF8sIF8gLT4gZmFsc2VcbiAgICAgIHwgXywgUHJldHR5IF8gLT4gZmFsc2VcbiAgICAgIHwgVW5yZWFjaGFibGUsIFVucmVhY2hhYmxlIC0+IHRydWUpXG4gIDs7XG5cbiAgbGV0IF8gPSBlcXVhbFxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1hcF9wcmV0dHkgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCAoRXhhY3QgXyB8IE91dHB1dCB8IFVucmVhY2hhYmxlKSBhcyB0IC0+IHRcbiAgICB8IFByZXR0eSB4IC0+IFByZXR0eSAoZiB4KVxuICA7O1xuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgdGFnIDogc3RyaW5nIG9wdGlvblxuICA7IGJvZHkgOiAnYSBCb2R5LnRcbiAgOyBleHRpZF9sb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICA7IGJvZHlfbG9jYXRpb24gOiBGaWxlLkxvY2F0aW9uLnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmUsIGVxdWFsXVxuXG5sZXQgXyA9IGZ1biAoXyA6ICdhIHQpIC0+ICgpXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAxOV9cbiAgICB7IHRhZyA9IHRhZ19fMDIxX1xuICAgIDsgYm9keSA9IGJvZHlfXzAyM19cbiAgICA7IGV4dGlkX2xvY2F0aW9uID0gZXh0aWRfbG9jYXRpb25fXzAyNV9cbiAgICA7IGJvZHlfbG9jYXRpb24gPSBib2R5X2xvY2F0aW9uX18wMjdfXG4gICAgfSAtPlxuICAgIGxldCBibmRzX18wMjBfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyOF8gPSBGaWxlLkxvY2F0aW9uLnNleHBfb2ZfdCBib2R5X2xvY2F0aW9uX18wMjdfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiYm9keV9sb2NhdGlvblwiOyBhcmdfXzAyOF8gXSA6OiBibmRzX18wMjBfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDIwXyA9XG4gICAgICBsZXQgYXJnX18wMjZfID0gRmlsZS5Mb2NhdGlvbi5zZXhwX29mX3QgZXh0aWRfbG9jYXRpb25fXzAyNV8gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJleHRpZF9sb2NhdGlvblwiOyBhcmdfXzAyNl8gXSA6OiBibmRzX18wMjBfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDIwXyA9XG4gICAgICBsZXQgYXJnX18wMjRfID0gQm9keS5zZXhwX29mX3QgX29mX2FfXzAxOV8gYm9keV9fMDIzXyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImJvZHlcIjsgYXJnX18wMjRfIF0gOjogYm5kc19fMDIwX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgbGV0IGJuZHNfXzAyMF8gPVxuICAgICAgbGV0IGFyZ19fMDIyXyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2Zfc3RyaW5nIHRhZ19fMDIxXyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInRhZ1wiOyBhcmdfXzAyMl8gXSA6OiBibmRzX18wMjBfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDIwX1xuOztcblxubGV0IF8gPSBzZXhwX29mX3RcblxubGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gIGZ1biBfY21wX19hIGFfXzAyOV8gYl9fMDMwXyAtPlxuICBpZiBTdGRsaWIuKCA9PSApIGFfXzAyOV8gYl9fMDMwX1xuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggY29tcGFyZV9vcHRpb24gY29tcGFyZV9zdHJpbmcgYV9fMDI5Xy50YWcgYl9fMDMwXy50YWcgd2l0aFxuICAgIHwgMCAtPlxuICAgICAgKG1hdGNoIEJvZHkuY29tcGFyZSBfY21wX19hIGFfXzAyOV8uYm9keSBiX18wMzBfLmJvZHkgd2l0aFxuICAgICAgIHwgMCAtPlxuICAgICAgICAgKG1hdGNoIEZpbGUuTG9jYXRpb24uY29tcGFyZSBhX18wMjlfLmV4dGlkX2xvY2F0aW9uIGJfXzAzMF8uZXh0aWRfbG9jYXRpb24gd2l0aFxuICAgICAgICAgIHwgMCAtPiBGaWxlLkxvY2F0aW9uLmNvbXBhcmUgYV9fMDI5Xy5ib2R5X2xvY2F0aW9uIGJfXzAzMF8uYm9keV9sb2NhdGlvblxuICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgIHwgbiAtPiBuKVxuICAgIHwgbiAtPiBuKVxuOztcblxubGV0IF8gPSBjb21wYXJlXG5cbmxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICBmdW4gX2NtcF9fYSBhX18wMzVfIGJfXzAzNl8gLT5cbiAgaWYgU3RkbGliLiggPT0gKSBhX18wMzVfIGJfXzAzNl9cbiAgdGhlbiB0cnVlXG4gIGVsc2VcbiAgICBTdGRsaWIuKCAmJiApXG4gICAgICAoZXF1YWxfb3B0aW9uIGVxdWFsX3N0cmluZyBhX18wMzVfLnRhZyBiX18wMzZfLnRhZylcbiAgICAgIChTdGRsaWIuKCAmJiApXG4gICAgICAgICAoQm9keS5lcXVhbCBfY21wX19hIGFfXzAzNV8uYm9keSBiX18wMzZfLmJvZHkpXG4gICAgICAgICAoU3RkbGliLiggJiYgKVxuICAgICAgICAgICAgKEZpbGUuTG9jYXRpb24uZXF1YWwgYV9fMDM1Xy5leHRpZF9sb2NhdGlvbiBiX18wMzZfLmV4dGlkX2xvY2F0aW9uKVxuICAgICAgICAgICAgKEZpbGUuTG9jYXRpb24uZXF1YWwgYV9fMDM1Xy5ib2R5X2xvY2F0aW9uIGJfXzAzNl8uYm9keV9sb2NhdGlvbikpKVxuOztcblxubGV0IF8gPSBlcXVhbFxuXG5bQEBAZW5kXVxuXG5tb2R1bGUgUmF3ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSBzdHJpbmcgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZV1cblxuICBsZXQgXyA9IGZ1biAoXyA6IHQpIC0+ICgpXG4gIGxldCBzZXhwX29mX3QgPSAoZnVuIHhfXzA0MV8gLT4gc2V4cF9vZl90IHNleHBfb2Zfc3RyaW5nIHhfXzA0MV8gOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IF8gPSBzZXhwX29mX3RcblxuICBsZXQgY29tcGFyZSA9XG4gICAgKGZ1biBhX18wNDJfIGJfXzA0M18gLT4gY29tcGFyZSBjb21wYXJlX3N0cmluZyBhX18wNDJfIGJfXzA0M18gOiB0IC0+IHQgLT4gaW50KVxuICA7O1xuXG4gIGxldCBfID0gY29tcGFyZVxuXG4gIFtAQEBlbmRdXG5lbmRcblxubGV0IG1hcF9wcmV0dHkgdCB+ZiA9IHsgdCB3aXRoIGJvZHkgPSBCb2R5Lm1hcF9wcmV0dHkgdC5ib2R5IH5mIH1cbiIsIm1vZHVsZSBTdGQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZpbGUgPSBGaWxlXG4gIG1vZHVsZSBFeHBlY3RhdGlvbiA9IEV4cGVjdGF0aW9uXG5lbmRcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMC0wM10gdXNlIFtFeHBlY3RfdGVzdF9jb21tb25dIGluc3RlYWRcIl1cblxuaW5jbHVkZSBTdGQgW0BAYWxlcnQgXCItZGVwcmVjYXRlZFwiXVxuIiwibW9kdWxlIFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgQ1IgKCoqIExlYXZlcyBhIENSLCBzbyB0aGF0IGZlYXR1cmVzIGNhbm5vdCBiZSByZWxlYXNlZC4gKilcbiAgICB8IGBXYXJuaW5nX2Zvcl9jb2xsZWN0b3JfdGVzdGluZyAoKiogT25seSBmb3IgcHB4X2V4cGVjdCB0ZXN0aW5nOyBkbyBub3QgdXNlLiAqKVxuICAgIF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIG1vZHVsZSBJTyA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgZW5kXG5cbiAgKCoqIFJ1biBhbiBJTyBvcGVyYXRpb24gdW50aWwgY29tcGxldGlvbiAqKVxuICB2YWwgcnVuIDogKHVuaXQgLT4gdW5pdCBJTy50KSAtPiB1bml0XG5cbiAgKCoqIFtzYW5pdGl6ZV0gY2FuIGJlIHVzZWQgdG8gbWFwIGFsbCBvdXRwdXQgc3RyaW5ncywgZS5nLiBmb3IgY2xlYW5zaW5nLiAqKVxuICB2YWwgc2FuaXRpemUgOiBzdHJpbmcgLT4gc3RyaW5nXG5cblxuICAoKiogW3Vwb25fdW5yZWxlYXNhYmxlX2lzc3VlXSBzcGVjaWZpZXMgaG93IHRvIGRlYWwgd2l0aCBvdXRwdXQgdGhhdCBzaG91bGQgbm90IGJlXG4gICAgICByZWxlYXNlZCBldmVuIGlmIGl0IGlzIGFjY2VwdGVkIChlLmcuIGJhY2t0cmFjZXMpLiBUaGUgZGVmYXVsdCBpcyBbYENSXS4gICopXG4gIHZhbCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA6IFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlLnRcbmVuZFxuXG4oKiogQ29uZmlndXJhdGlvbiBmb3IgcnVubmluZyBleHBlY3QgdGVzdHMgKilcbm1vZHVsZSB0eXBlIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcyA9IHNpZ1xuICAoKiogVG8gY29uZmlndXJlIGV4cGVjdF90ZXN0LCBhZGQgdGhlIGZvbGxvd2luZyBhdCB0aGUgdG9wIG9mIHlvdXIgLm1sIGZpbGUsIG9yIGluIHNvbWVcbiAgICAgIGltcG9ydC5tbDpcblxuICAgICAge1tcbiAgICAgICAgbW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZyA9IHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgRXhwZWN0X3Rlc3RfY29uZmlnXG4gICAgICAgICAgbGV0IHByZV9yZWRpcmVjdF9ob29rICgpID0gLi4uXG4gICAgICAgIGVuZFxuICAgICAgXX1cblxuICAgICAgTm90ZSB0aGF0IHNpbmNlIGFsbCBleHBlY3QgdGVzdCBhcmUgYWxzbyBpbmxpbmUgdGVzdHMsIHRoZSBpbmxpbmUgdGVzdCBjb25maWd1cmF0aW9uXG4gICAgICBhbHNvIGFwcGxpZXMgdG8gYWxsIGV4cGVjdCB0ZXN0LlxuICAqKVxuXG4gIG1vZHVsZSBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA6IHNpZ1xuICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgVXBvbl91bnJlbGVhc2FibGVfaXNzdWVcblxuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGNvbW1lbnRfcHJlZml4IDogdCAtPiBzdHJpbmdcblxuICAgICgqKiBNZXNzYWdlIHRvIHByaW50IHdoZW4gYW4gZXhwZWN0YXRpb24gY29udGFpbnMgYSBiYWNrdHJhY2UgKilcbiAgICB2YWwgbWVzc2FnZV93aGVuX2V4cGVjdGF0aW9uX2NvbnRhaW5zX2JhY2t0cmFjZSA6IHQgLT4gc3RyaW5nXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBTXG5lbmRcbiIsIm1vZHVsZSB0eXBlIFMgPSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXNfaW50Zi5TXG5cbm1vZHVsZSB0eXBlIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcyA9XG4gIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLkV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc1xuXG5tb2R1bGUgVXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXNfaW50Zi5VcG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuXG4gIGxldCBlcXVhbCB0MSB0MiA9IHQxID0gdDJcblxuICBsZXQgY29tbWVudF9wcmVmaXggPSBmdW5jdGlvblxuICAgIHwgYENSIC0+IFwiQ1IgXCJcbiAgICB8IGBXYXJuaW5nX2Zvcl9jb2xsZWN0b3JfdGVzdGluZyAtPiBcIlwiXG4gIDs7XG5cbiAgbGV0IG1lc3NhZ2Vfd2hlbl9leHBlY3RhdGlvbl9jb250YWluc19iYWNrdHJhY2UgdCA9XG4gICAgUHJpbnRmLnNwcmludGZcbiAgICAgIHt8XG4oKiAlc2V4cGVjdF90ZXN0X2NvbGxlY3RvcjogVGhpcyB0ZXN0IGV4cGVjdGF0aW9uIGFwcGVhcnMgdG8gY29udGFpbiBhIGJhY2t0cmFjZS5cbiAgIFRoaXMgaXMgc3Ryb25nbHkgZGlzY291cmFnZWQgYXMgYmFja3RyYWNlcyBhcmUgZnJhZ2lsZS5cbiAgIFBsZWFzZSBjaGFuZ2UgdGhpcyB0ZXN0IHRvIG5vdCBpbmNsdWRlIGEgYmFja3RyYWNlLiAqKVxuXG58fVxuICAgICAgKGNvbW1lbnRfcHJlZml4IHQpXG4gIDs7XG5lbmRcbiIsImxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDlcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDE3XFwwMDBcXDAxMlxcMDAwXFxcbiAgICBcXDAxNFxcMDAwXFwwMDRcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDI4XFwwMDBcXDAwNVxcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwwMTZcXDAwMFxcMDIwXFwwMDBcXDAyM1xcMDAwXFwwMDZcXDAwMFxcMDg1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNDBcXDAwMFxcMDMxXFwwMDBcXDA0NlxcMDAwXFwwNDhcXDAwMFxcMDA3XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwNjJcXDAwMFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMDY3XFwwMDBcXDA2N1xcMDAwXFwxMDNcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTA1XFwwMDBcXDA5NVxcMDAwXFwxMDdcXDAwMFxcMDk1XFwwMDBcXDExM1xcMDAwXFwwMTBcXDAwMFxcMTA0XFwwMDBcXFxuICAgIFxcMTA0XFwwMDBcXDExNlxcMDAwXFwxMDRcXDAwMFxcMTIyXFwwMDBcXDEwNFxcMDAwXFwxMTZcXDAwMFxcMTExXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwxMTZcXDAwMFxcMTE3XFwwMDBcXDEyNVxcMDAwXFwxMjdcXDAwMFxcMDEyXFwwMDBcXDEyNlxcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMTlcXDAwMFxcMTIyXFwwMDBcXDAxM1xcMDAwXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDhcXDAwMFxcMDEyXFwwMDBcXDAxNFxcMDAwXFwwMjRcXDAwMFxcMDEyXFwwMDBcXDAzOVxcMDAwXFwwMTJcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA2MVxcMDAwXFwwNzFcXDAwMFxcMDU5XFwwMDBcXDA4NlxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDAzXFwwMDBcXDAyOVxcMDAwXFwwMDdcXDAwMFxcMDA2XFwwMDBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDA0XFwwMDBcXDAxN1xcMDAwXFwwMTlcXDAwMFxcMDIxXFwwMDBcXDAxOFxcMDAwXFwwMjdcXDAwMFxcMDI1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAyNlxcMDAwXFwwMTZcXDAwMFxcMDA1XFwwMDBcXDAxMVxcMDAwXFwwMjBcXDAwMFxcMDIyXFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDAzMFxcMDAwXFwwMTNcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFwwMzdcXDAwMFxcXG4gICAgXFwwMzhcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDYwXFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU2XFwwMDBcXDA1OFxcMDAwXFwwNjJcXDAwMFxcMDQ2XFwwMDBcXDA2M1xcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODJcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAyM1xcMDAwXFwwMzNcXDAwMFxcMDM4XFwwMDBcXDA0M1xcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDYwXFwwMDBcXDA3MFxcMDAwXFwwODBcXDAwMFxcMDg1XFwwMDBcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDI4XFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMDNcXDAwMFxcMDE2XFwwMDBcXDAxOFxcMDAwXFwwMjBcXDAwMFxcMDE3XFwwMDBcXDAyNlxcMDAwXFwwMjRcXDAwMFxcXG4gICAgXFwwMTRcXDAwMFxcMDI1XFwwMDBcXDAxNVxcMDAwXFwwMDRcXDAwMFxcMDEwXFwwMDBcXDAxOVxcMDAwXFwwMjFcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMDI5XFwwMDBcXDAwOVxcMDAwXFwwMzBcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDAzN1xcMDAwXFwwMzlcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTZcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2MVxcMDAwXFwwNDRcXDAwMFxcMDYyXFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODJcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIGNoZWNrIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTYzIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgMSAtPlxuIyA1IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAoIG5vdF9hdF9ib3MgbGV4YnVmIClcbiMgMTY4IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBub3RfYXRfYm9zIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9ub3RfYXRfYm9zX3JlYyBsZXhidWYgNDRcbmFuZCBfX29jYW1sX2xleF9ub3RfYXRfYm9zX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDggXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTgwIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgMSAtPlxuIyA5IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICggbm90X2F0X2JvcyBsZXhidWYgKVxuIyAxODUgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAgKCBmYWxzZSApXG4jIDE5MCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbm90X2F0X2Jvc19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTIgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuIFxuICBsZXQgY29udGFpbnNfYmFja3RyYWNlcyBzID0gY2hlY2sgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4jIDIwMSBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcbiIsIm9wZW4gRXhwZWN0X3Rlc3RfY29tbW9uXG5tb2R1bGUgTGlzdCA9IExpc3RMYWJlbHNcblxubW9kdWxlIFRlc3Rfb3V0Y29tZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZmlsZV9kaWdlc3QgOiBGaWxlLkRpZ2VzdC50XG4gICAgOyBsb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICAgIDsgZXhwZWN0YXRpb25zIDogRXhwZWN0YXRpb24uUmF3LnQgbGlzdFxuICAgIDsgdW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIDogRXhwZWN0YXRpb24uUmF3LnQgb3B0aW9uXG4gICAgOyBzYXZlZF9vdXRwdXQgOiAoRmlsZS5Mb2NhdGlvbi50ICogc3RyaW5nKSBsaXN0XG4gICAgOyB0cmFpbGluZ19vdXRwdXQgOiBzdHJpbmdcbiAgICA7IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlIDogRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLlVwb25fdW5yZWxlYXNhYmxlX2lzc3VlLnRcbiAgICA7IHVuY2F1Z2h0X2V4biA6IChleG4gKiBQcmludGV4Yy5yYXdfYmFja3RyYWNlKSBvcHRpb25cbiAgICB9XG5lbmRcblxubGV0IHRlc3RzX3J1biA6IFRlc3Rfb3V0Y29tZS50IGxpc3QgcmVmID0gcmVmIFtdXG5cbmxldCBwcm90ZWN0IH5maW5hbGx5IH5mID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPlxuICAgIGZpbmFsbHkgKCk7XG4gICAgeFxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgZmluYWxseSAoKTtcbiAgICByYWlzZSBlXG47O1xuXG5tb2R1bGUgQ3VycmVudF9maWxlID0gc3RydWN0XG4gIGxldCBjdXJyZW50ID0gcmVmIE5vbmVcblxuICBsZXQgc2V0IH5hYnNvbHV0ZV9maWxlbmFtZSA9XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBjdXJyZW50IDo9IFNvbWUgYWJzb2x1dGVfZmlsZW5hbWVcbiAgICB8IFNvbWUgXyAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5zZXQ6IGFscmVhZHkgc2V0XCJcbiAgOztcblxuICBsZXQgdW5zZXQgKCkgPVxuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IFNvbWUgXyAtPiBjdXJyZW50IDo9IE5vbmVcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IudW5zZXQ6IG5vdCBzZXRcIlxuICA7O1xuXG4gIGxldCBnZXQgKCkgPVxuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IFNvbWUgZm4gLT4gZm5cbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuZ2V0OiBub3Qgc2V0XCJcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW5zdGFuY2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgc2F2ZWQgOiAoRmlsZS5Mb2NhdGlvbi50ICogaW50KSBsaXN0XG4gICAgOyBjaGFuIDogb3V0X2NoYW5uZWxcbiAgICA7IGZpbGVuYW1lIDogRmlsZS5OYW1lLnRcbiAgICB9XG5cbiAgZXh0ZXJuYWwgYmVmb3JlX3Rlc3RcbiAgICA6ICBvdXRwdXQ6b3V0X2NoYW5uZWxcbiAgICAtPiBzdGRvdXQ6b3V0X2NoYW5uZWxcbiAgICAtPiBzdGRlcnI6b3V0X2NoYW5uZWxcbiAgICAtPiB1bml0XG4gICAgPSBcImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdFwiXG5cbiAgZXh0ZXJuYWwgYWZ0ZXJfdGVzdFxuICAgIDogIHN0ZG91dDpvdXRfY2hhbm5lbFxuICAgIC0+IHN0ZGVycjpvdXRfY2hhbm5lbFxuICAgIC0+IHVuaXRcbiAgICA9IFwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3RcIlxuXG4gIGV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfb3V0X2NoYW5uZWxfcG9zX2ZkXCJcblxuICBsZXQgZ2V0X3Bvc2l0aW9uICgpID0gcG9zX291dCBzdGRvdXRcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICBsZXQgZmlsZW5hbWUgPSBGaWxlbmFtZS50ZW1wX2ZpbGUgXCJleHBlY3QtdGVzdFwiIFwib3V0cHV0XCIgaW5cbiAgICBsZXQgY2hhbiA9IG9wZW5fb3V0X2JpbiBmaWxlbmFtZSBpblxuICAgIGJlZm9yZV90ZXN0IH5vdXRwdXQ6Y2hhbiB+c3Rkb3V0IH5zdGRlcnI7XG4gICAgeyBjaGFuOyBmaWxlbmFtZSA9IEZpbGUuTmFtZS5vZl9zdHJpbmcgZmlsZW5hbWU7IHNhdmVkID0gW10gfVxuICA7O1xuXG4gIGxldCByZWxhdGl2ZV9maWxlbmFtZSB0ID0gRmlsZS5OYW1lLnJlbGF0aXZlX3RvIH5kaXI6KEZpbGUuaW5pdGlhbF9kaXIgKCkpIHQuZmlsZW5hbWVcblxuICBsZXQgd2l0aF9pYyBmbmFtZSB+ZiA9XG4gICAgbGV0IGljID0gb3Blbl9pbl9iaW4gZm5hbWUgaW5cbiAgICBwcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gY2xvc2VfaW4gaWMpIH5mOihmdW4gKCkgLT4gZiBpYylcbiAgOztcblxuICBsZXQgY3VycmVudF90ZXN0IDogKEZpbGUuTG9jYXRpb24udCAqIHQpIG9wdGlvbiByZWYgPSByZWYgTm9uZVxuICBsZXQgYW1fcnVubmluZ19leHBlY3RfdGVzdCAoKSA9IE9wdGlvbi5pc19zb21lICFjdXJyZW50X3Rlc3RcblxuICBsZXQgZ2V0X2N1cnJlbnQgKCkgPVxuICAgIG1hdGNoICFjdXJyZW50X3Rlc3Qgd2l0aFxuICAgIHwgU29tZSAoXywgdCkgLT4gdFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5JbnN0YW5jZS5nZXRfY3VycmVudCBjYWxsZWQgb3V0c2lkZSBhIHRlc3QuXCJcbiAgOztcblxuICBsZXQgc2F2ZV9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uID1cbiAgICBsZXQgcG9zID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgdC5zYXZlZCA8LSAobG9jYXRpb24sIHBvcykgOjogdC5zYXZlZFxuICA7O1xuXG4gIGxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvbiA9XG4gICAgbGV0IHBvcyA9IGdldF9wb3NpdGlvbiAoKSBpblxuICAgIGxldCBwcmV2X3BvcyA9XG4gICAgICBtYXRjaCB0LnNhdmVkIHdpdGhcbiAgICAgIHwgW10gLT4gMFxuICAgICAgfCAoXywgcHJldl9wb3MpIDo6IF8gLT4gcHJldl9wb3NcbiAgICBpblxuICAgIHQuc2F2ZWQgPC0gKGxvY2F0aW9uLCBwb3MpIDo6IHQuc2F2ZWQ7XG4gICAgZmx1c2ggdC5jaGFuO1xuICAgIGxldCBsZW4gPSBwb3MgLSBwcmV2X3BvcyBpblxuICAgIHdpdGhfaWMgKHJlbGF0aXZlX2ZpbGVuYW1lIHQpIH5mOihmdW4gaWMgLT5cbiAgICAgIHNlZWtfaW4gaWMgcHJldl9wb3M7XG4gICAgICByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbilcbiAgOztcbmVuZFxuXG5sZXQgYW1fcnVubmluZ19leHBlY3RfdGVzdCA9IEluc3RhbmNlLmFtX3J1bm5pbmdfZXhwZWN0X3Rlc3RcblxubGV0IGZsdXNoICgpID1cbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIEZvcm1hdC5zdGRfZm9ybWF0dGVyICgpO1xuICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggRm9ybWF0LmVycl9mb3JtYXR0ZXIgKCk7XG4gIFN0ZGxpYi5mbHVzaCBTdGRsaWIuc3Rkb3V0O1xuICBTdGRsaWIuZmx1c2ggU3RkbGliLnN0ZGVyclxuOztcblxubGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXQgbG9jYXRpb24gPVxuICBsZXQgaW5zdGFuY2UgPSBJbnN0YW5jZS5nZXRfY3VycmVudCAoKSBpblxuICBmbHVzaCAoKTtcbiAgSW5zdGFuY2Uuc2F2ZV9hbmRfcmV0dXJuX291dHB1dF93aXRob3V0X2ZsdXNoIGluc3RhbmNlIGxvY2F0aW9uXG47O1xuXG5tb2R1bGUgTWFrZSAoQyA6IEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5TKSA9IHN0cnVjdFxuICBtb2R1bGUgSW5zdGFuY2VfaW8gOiBzaWdcbiAgICB2YWwgc2F2ZV9vdXRwdXQgOiBGaWxlLkxvY2F0aW9uLnQgLT4gdW5pdFxuICAgIHZhbCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0IDogRmlsZS5Mb2NhdGlvbi50IC0+IHN0cmluZ1xuXG4gICAgdmFsIGV4ZWNcbiAgICAgIDogIGZpbGVfZGlnZXN0OkZpbGUuRGlnZXN0LnRcbiAgICAgIC0+IGxvY2F0aW9uOkZpbGUuTG9jYXRpb24udFxuICAgICAgLT4gZXhwZWN0YXRpb25zOkV4cGVjdGF0aW9uLlJhdy50IGxpc3RcbiAgICAgIC0+IHVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvbjpFeHBlY3RhdGlvbi5SYXcudCBvcHRpb25cbiAgICAgIC0+IGY6KHVuaXQgLT4gdW5pdCBDLklPLnQpXG4gICAgICAtPiB1bml0XG4gIGVuZCA9IHN0cnVjdFxuICAgIG9wZW4gSW5zdGFuY2VcblxuICAgIGxldCBleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUgaWMgbGVuID1cbiAgICAgIGxldCBzID0gcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gfD4gQy5zYW5pdGl6ZSBpblxuICAgICAgaWYgbm90IChDaGVja19iYWNrdHJhY2VzLmNvbnRhaW5zX2JhY2t0cmFjZXMgcylcbiAgICAgIHRoZW4gc1xuICAgICAgZWxzZVxuICAgICAgICBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMuVXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbiAgICAgICAgLm1lc3NhZ2Vfd2hlbl9leHBlY3RhdGlvbl9jb250YWluc19iYWNrdHJhY2VcbiAgICAgICAgICBDLnVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG4gICAgICAgIF4gc1xuICAgIDs7XG5cbiAgICBsZXQgZ2V0X291dHB1dHNfYW5kX2NsZWFudXAgdCA9XG4gICAgICBTeXMuY2hkaXIgKEZpbGUuaW5pdGlhbF9kaXIgKCkpO1xuICAgICAgbGV0IGxhc3Rfb2ZzID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgICBhZnRlcl90ZXN0IH5zdGRvdXQgfnN0ZGVycjtcbiAgICAgIGNsb3NlX291dCB0LmNoYW47XG4gICAgICBsZXQgZm5hbWUgPSByZWxhdGl2ZV9maWxlbmFtZSB0IGluXG4gICAgICBwcm90ZWN0XG4gICAgICAgIH5maW5hbGx5OihmdW4gKCkgLT4gU3lzLnJlbW92ZSBmbmFtZSlcbiAgICAgICAgfmY6KGZ1biAoKSAtPlxuICAgICAgICAgIHdpdGhfaWMgZm5hbWUgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgbGV0IG9mcywgb3V0cHV0cyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKExpc3QucmV2IHQuc2F2ZWQpXG4gICAgICAgICAgICAgICAgfmluaXQ6KDAsIFtdKVxuICAgICAgICAgICAgICAgIH5mOihmdW4gKG9mcywgYWNjKSAobG9jLCBuZXh0X29mcykgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIGljIChuZXh0X29mcyAtIG9mcykgaW5cbiAgICAgICAgICAgICAgICAgIG5leHRfb2ZzLCAobG9jLCBzKSA6OiBhY2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHRyYWlsaW5nX291dHB1dCA9IGV4dHJhY3Rfb3V0cHV0X2FuZF9zYW5pdGl6ZSBpYyAobGFzdF9vZnMgLSBvZnMpIGluXG4gICAgICAgICAgICBMaXN0LnJldiBvdXRwdXRzLCB0cmFpbGluZ19vdXRwdXQpKVxuICAgIDs7XG5cbiAgICBsZXQgc2F2ZV9vdXRwdXQgbG9jYXRpb24gPVxuICAgICAgbGV0IHQgPSBnZXRfY3VycmVudCAoKSBpblxuICAgICAgZmx1c2ggKCk7XG4gICAgICBzYXZlX291dHB1dF93aXRob3V0X2ZsdXNoIHQgbG9jYXRpb25cbiAgICA7O1xuXG4gICAgbGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXQgbG9jYXRpb24gPVxuICAgICAgbGV0IHQgPSBnZXRfY3VycmVudCAoKSBpblxuICAgICAgZmx1c2ggKCk7XG4gICAgICBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvblxuICAgIDs7XG5cbiAgICBsZXQgKCkgPVxuICAgICAgU3RkbGliLmF0X2V4aXQgKGZ1biAoKSAtPlxuICAgICAgICBtYXRjaCAhY3VycmVudF90ZXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSAobG9jLCB0KSAtPlxuICAgICAgICAgIGxldCBibG9ja3MsIHRyYWlsaW5nID0gZ2V0X291dHB1dHNfYW5kX2NsZWFudXAgdCBpblxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICBcIkZpbGUgJVMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XFxuXFxcbiAgICAgICAgICAgICBFcnJvcjogcHJvZ3JhbSBleGl0ZWQgd2hpbGUgZXhwZWN0IHRlc3Qgd2FzIHJ1bm5pbmchXFxuXFxcbiAgICAgICAgICAgICBPdXRwdXQgY2FwdHVyZWQgc28gZmFyOlxcblxcXG4gICAgICAgICAgICAgJSFcIlxuICAgICAgICAgICAgKEZpbGUuTmFtZS50b19zdHJpbmcgbG9jLmZpbGVuYW1lKVxuICAgICAgICAgICAgbG9jLmxpbmVfbnVtYmVyXG4gICAgICAgICAgICAobG9jLnN0YXJ0X3BvcyAtIGxvYy5saW5lX3N0YXJ0KVxuICAgICAgICAgICAgKGxvYy5lbmRfcG9zIC0gbG9jLmxpbmVfc3RhcnQpO1xuICAgICAgICAgIExpc3QuaXRlciBibG9ja3MgfmY6KGZ1biAoXywgcykgLT4gUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgcyk7XG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgdHJhaWxpbmcpXG4gICAgOztcblxuICAgIGxldCBleGVjIH5maWxlX2RpZ2VzdCB+bG9jYXRpb24gfmV4cGVjdGF0aW9ucyB+dW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIH5mID1cbiAgICAgIGxldCB0ID0gY3JlYXRlICgpIGluXG4gICAgICBjdXJyZW50X3Rlc3QgOj0gU29tZSAobG9jYXRpb24sIHQpO1xuICAgICAgbGV0IGZpbmFsbHkgdW5jYXVnaHRfZXhuID1cbiAgICAgICAgQy5ydW4gKGZ1biAoKSAtPlxuICAgICAgICAgIEMuSU8ucmV0dXJuXG4gICAgICAgICAgICAoZmx1c2ggKCk7XG4gICAgICAgICAgICAgY3VycmVudF90ZXN0IDo9IE5vbmU7XG4gICAgICAgICAgICAgbGV0IHNhdmVkX291dHB1dCwgdHJhaWxpbmdfb3V0cHV0ID0gZ2V0X291dHB1dHNfYW5kX2NsZWFudXAgdCBpblxuICAgICAgICAgICAgIHRlc3RzX3J1blxuICAgICAgICAgICAgIDo9IHsgZmlsZV9kaWdlc3RcbiAgICAgICAgICAgICAgICA7IGxvY2F0aW9uXG4gICAgICAgICAgICAgICAgOyBleHBlY3RhdGlvbnNcbiAgICAgICAgICAgICAgICA7IHVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvblxuICAgICAgICAgICAgICAgIDsgc2F2ZWRfb3V0cHV0XG4gICAgICAgICAgICAgICAgOyB0cmFpbGluZ19vdXRwdXRcbiAgICAgICAgICAgICAgICA7IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gQy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICAgICAgICAgICAgICAgIDsgdW5jYXVnaHRfZXhuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6ICF0ZXN0c19ydW4pKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIEMucnVuIGYgd2l0aFxuICAgICAgfCAoKSAtPiBmaW5hbGx5IE5vbmVcbiAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICBsZXQgYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgICBmaW5hbGx5IChTb21lIChleG4sIGJ0KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2F2ZV9vdXRwdXQgPSBJbnN0YW5jZV9pby5zYXZlX291dHB1dFxuICBsZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCA9IEluc3RhbmNlX2lvLnNhdmVfYW5kX3JldHVybl9vdXRwdXRcblxuICBsZXQgcnVuXG4gICAgICAgIH5maWxlX2RpZ2VzdFxuICAgICAgICB+KGxvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50KVxuICAgICAgICB+YWJzb2x1dGVfZmlsZW5hbWU6ZGVmaW5lZF9pblxuICAgICAgICB+ZGVzY3JpcHRpb25cbiAgICAgICAgfnRhZ3NcbiAgICAgICAgfmV4cGVjdGF0aW9uc1xuICAgICAgICB+dW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uXG4gICAgICAgIH5pbmxpbmVfdGVzdF9jb25maWdcbiAgICAgICAgZlxuICAgID1cbiAgICBQcHhfaW5saW5lX3Rlc3RfbGliLnRlc3RcbiAgICAgIH5jb25maWc6aW5saW5lX3Rlc3RfY29uZmlnXG4gICAgICB+ZGVzY3I6XG4gICAgICAgIChsYXp5XG4gICAgICAgICAgKG1hdGNoIGRlc2NyaXB0aW9uIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lIHMgLT4gcykpXG4gICAgICB+dGFnc1xuICAgICAgfmZpbGVuYW1lOihGaWxlLk5hbWUudG9fc3RyaW5nIGxvY2F0aW9uLmZpbGVuYW1lKVxuICAgICAgfmxpbmVfbnVtYmVyOmxvY2F0aW9uLmxpbmVfbnVtYmVyXG4gICAgICB+c3RhcnRfcG9zOihsb2NhdGlvbi5zdGFydF9wb3MgLSBsb2NhdGlvbi5saW5lX3N0YXJ0KVxuICAgICAgfmVuZF9wb3M6KGxvY2F0aW9uLmVuZF9wb3MgLSBsb2NhdGlvbi5saW5lX3N0YXJ0KVxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgbGV0IHJlZ2lzdGVyaW5nX3Rlc3RzX2ZvciA9IEN1cnJlbnRfZmlsZS5nZXQgKCkgaW5cbiAgICAgICAgIGlmIGRlZmluZWRfaW4gPD4gcmVnaXN0ZXJpbmdfdGVzdHNfZm9yXG4gICAgICAgICB0aGVuXG4gICAgICAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgXCJUcnlpbmcgdG8gcnVuIGFuIGV4cGVjdCB0ZXN0IGZyb20gdGhlIHdyb25nIGZpbGUuXFxuXFxcbiAgICAgICAgICAgICAgLSB0ZXN0IGRlY2xhcmVkIGF0ICVzOiVkXFxuXFxcbiAgICAgICAgICAgICAgLSB0cnlpbmcgdG8gcnVuIGl0IGZyb20gJXNcXG5cIlxuICAgICAgICAgICAgIGRlZmluZWRfaW5cbiAgICAgICAgICAgICBsb2NhdGlvbi5saW5lX251bWJlclxuICAgICAgICAgICAgIHJlZ2lzdGVyaW5nX3Rlc3RzX2ZvclxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICgqIFRvIGF2b2lkIGNhcHR1cmluZyBub3QteWV0IGZsdXNoZWQgZGF0YSBvZiB0aGUgc3Rkb3V0IGJ1ZmZlciAqKVxuICAgICAgICAgICBDLnJ1biAoZnVuICgpIC0+IEMuSU8ucmV0dXJuIChmbHVzaCAoKSkpO1xuICAgICAgICAgICBJbnN0YW5jZV9pby5leGVjXG4gICAgICAgICAgICAgfmZpbGVfZGlnZXN0XG4gICAgICAgICAgICAgfmxvY2F0aW9uXG4gICAgICAgICAgICAgfmV4cGVjdGF0aW9uc1xuICAgICAgICAgICAgIH51bmNhdWdodF9leG5fZXhwZWN0YXRpb25cbiAgICAgICAgICAgICB+ZjtcbiAgICAgICAgICAgdHJ1ZSkpXG4gIDs7XG5lbmRcbltAQGlubGluZSBuZXZlcl1cblxubGV0IHRlc3RzX3J1biAoKSA9XG4gICgqIFdlIHByZXBlbmQgdGVzdHMgd2hlbiB3ZSBlbmNvdW50ZXIgdGhlbSwgc28gcmV2ZXJzZSB0aGUgbGlzdCB0byByZWluc3RhdGUgb3JkZXIgKilcbiAgTGlzdC5yZXYgIXRlc3RzX3J1blxuOztcbiIsIm1vZHVsZSBJTyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGxldCByZXR1cm4geCA9IHhcbmVuZFxuXG5sZXQgc2FuaXRpemUgcyA9IHNcbmxldCBydW4gZiA9IGYgKClcbmxldCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IGBDUlxuIiwibW9kdWxlIFBweF9zZXhwX2NvbnZfbGliID0gc3RydWN0XG4gIG1vZHVsZSBDb252X2Vycm9yID0gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yXG4gIG1vZHVsZSBDb252ID0gU2V4cGxpYjAuU2V4cF9jb252XG4gIG1vZHVsZSBTZXhwID0gU2V4cGxpYjAuU2V4cFxuZW5kXG5cbm1vZHVsZSBTZXhwID0gU2V4cGxpYjAuU2V4cFxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcbm1vZHVsZSBMaXN0ID0gTGlzdExhYmVsc1xuIiwiKCogVGhpcyBtb2R1bGUgYnVpbGRzIGEgYnVmZmVyIG9mIFwiaW5zdHJ1Y3Rpb25zXCIsIGluIG9yZGVyIHRvIHJlcHJlc2VudCBhIGNvbXBhY3Qgc2VxdWVuY2VcbiAgIG9mIGRlbGltaXRpbmcgcG9zaXRpb25zIGFuZCBuZXdsaW5lcy4gVGhlIHBhcnNlciBzdG9yZXMgdGhlIHBvc2l0aW9ucyBvZiBlYWNoOlxuXG4gICAtIG5ld2xpbmVcbiAgIC0gYmVnaW5uaW5nIG9mIGF0b21cbiAgIC0gZW5kIG9mIGF0b21cbiAgIC0gbGVmdCBwYXJlbnRoZXNpc1xuICAgLSByaWdodCBwYXJlbnRoZXNpc1xuXG4gICBJbnN0cnVjdGlvbnMgYXJlIGVuY29kZWQgYXMgYSBzZXF1ZW5jZSBiaXRzLiBUaGUgbmV4dCBpbnN0cnVjdGlvbiBpcyBkZXRlcm1pbmVkIGJ5XG4gICBsb29raW5nIGF0IHRoZSBuZXh0IGZldyBiaXRzOlxuXG4gICAtIGJpdCAwIHJlcHJlc2VudHMgYSBzYXZlZCBwb3NpdGlvbiBmb2xsb3dlZCBieSBhbiBvZmZzZXQgaW5jcmVtZW50XG4gICAtIGJpdHMgMTAgcmVwcmVzZW50IGFuIG9mZnNldCBpbmNyZW1lbnRcbiAgIC0gYml0cyAxMTAgYXJlIGZvbGxvd2VkIGJ5IDUgYml0cyBvZiBwYXlsb2FkLiBUaGUgNS1iaXQgcGF5bG9hZHMgb2YgYW55IHN1YnNlcXVlbnQgMTEwLVxuICAgICBpbnN0cnVjdGlvbnMgYXJlIHNxdWFzaGVkIHRvIGZvcm0gYSBudW1iZXIgKGxlYXN0IHNpZ25pZmljYW50IDUtYml0IGNodW5rIGZpcnN0KS5cbiAgICAgVGhpcyBudW1iZXIgKyA1IHJlcHJlc2VudHMgYW4gb2Zmc2V0IGluY3JlbWVudFxuICAgLSBiaXRzIDExMTAgbWFya3MgdGhlIGJlZ2lubmluZyBvZiBhIG5ldyBsaW5lICh3aXRoIG9mZnNldCBpbmNyZW1lbnRlZClcbiAgIC0gYml0cyAxMTExIHJlcHJlc2VudCBhIHBvc2l0aW9uIHNhdmVkIHR3aWNlIGZvbGxvd2VkIGJ5IGFuIG9mZnNldCBpbmNyZW1lbnRcblxuICAgRm9yIGluc3RhbmNlIGxldCdzIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc2V4cDpcblxuICAge1tcbiAgICAge3xcbihhYmNcbiAgICAgIFwiZm9vXG4gYmFyXCJcbilcbnx9XG4gICBdfVxuXG4gICB0aGUgc2VxdWVuY2Ugb2YgaW5zdHJ1Y3Rpb25zIHRvIHJlY29yZCBpbiBvcmRlciB0byByZWNvbnN0cnVjdCB0aGUgcG9zaXRpb24gb2YgYW55XG4gICBzdWItc2V4cCBpczpcblxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBmaXJzdCAnKCdcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogc3RhcnQgb2YgXCJhYmNcIlxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGVuZCBvZiBcImFiY1wiXG4gICAtIDExMTAgICAgICBuZXdsaW5lXG4gICAtIDExMDBfMDAwMSBhZHZhbmNlIDZcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogc3RhcnQgb2YgXCJmb29cXG4gIGJhclwiXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMTAgICAgICAgIGFkdmFuY2UgMVxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDExMTAgICAgICBuZXdsaW5lXG4gICAtIDExMDBfMDAwMCBhZHZhbmNlIDVcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogZW5kIG9mIFwiZm9vXFxuICBiYXJcIlxuICAgLSAxMTEwICAgICAgbmV3bGluZVxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBsYXN0ICcpJ1xuXG4gICAod2Ugc2F2ZSB0aGUgcG9zaXRpb24gYWZ0ZXIgdGhlIGNsb3NpbmcgcGFyZW50aGVzaXMpXG5cbiAgIFRoZSB0b3RhbCBzZXF1ZW5jZSBpcyA0MiBiaXRzLCBzbyB3ZSBuZWVkIDYgYnl0ZXMgdG8gc3RvcmUgaXRcblxuICAgVGhlIHNlcXVlbmNlIG9mIGJpdHMgaXMgZW5jb2RlZCBhcyBhIHNlcXVlbmNlIG9mIDE2LWJpdCB2YWx1ZXMsIHdoZXJlIHRoZSBlYXJsaWVyIGJpdHNcbiAgIGFyZSBtb3N0IHNpZ25pZmljYW50LlxuXG4gICBOb3RlIHRoYXQgdGhlIHBhcnNlciBzdG9yZXMgdGhlIGVuZCBwb3NpdGlvbnMgYXMgaW5jbHVzaXZlLiBUaGlzIHdheSBvbmx5IHNpbmdsZVxuICAgY2hhcmFjdGVyIGF0b21zIHJlcXVpcmUgYSBkb3VibGUgcG9zaXRpb25zLiBJZiB3ZSB3ZXJlIHN0b3JpbmcgZW5kIHBvc2l0aW9ucyBhc1xuICAgZXhjbHVzaXZlLCB3ZSB3b3VsZCBuZWVkIGRvdWJsZSBwb3NpdGlvbnMgZm9yIFspKF0gYW5kIFthKF0sIHdoaWNoIGFyZSBsaWtlbHkgdG8gYmVcbiAgIGZyZXF1ZW50IGluIHMtZXhwcmVzc2lvbnMgcHJpbnRlZCB3aXRoIHRoZSBub24gW19odW1dIHByaW50ZXIuIFdlIGV4cGVjdCBzaW5nbGVcbiAgIGNoYXJhY3RlciBhdG9tcyB0byBiZSBsZXNzIGZyZXF1ZW50IHNvIGl0IG1ha2VzIHNlbnNlIHRvIHBlbmFsaXplIHRoZW0gaW5zdGVhZC5cbiopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHBvcyA9XG4gIHsgbGluZSA6IGludFxuICA7IGNvbCA6IGludFxuICA7IG9mZnNldCA6IGludFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfcG9zID1cbiAgKGZ1biB7IGxpbmUgPSBsaW5lX18wMDJfOyBjb2wgPSBjb2xfXzAwNF87IG9mZnNldCA9IG9mZnNldF9fMDA2XyB9IC0+XG4gICAgIGxldCBibmRzX18wMDFfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2ZfaW50IG9mZnNldF9fMDA2XyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJvZmZzZXRcIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwNV8gPSBzZXhwX29mX2ludCBjb2xfXzAwNF8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY29sXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDNfID0gc2V4cF9vZl9pbnQgbGluZV9fMDAyXyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaW5lXCI7IGFyZ19fMDAzXyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDFfXG4gICAgIDogcG9zIC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBjb21wYXJlX3BvcyA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgYmVnaW5uaW5nX29mX2ZpbGUgPSB7IGxpbmUgPSAxOyBjb2wgPSAwOyBvZmZzZXQgPSAwIH1cbmxldCBzaGlmdF9wb3MgcG9zIH5jb2xzID0geyBwb3Mgd2l0aCBjb2wgPSBwb3MuY29sICsgY29sczsgb2Zmc2V0ID0gcG9zLm9mZnNldCArIGNvbHMgfVxuXG50eXBlIHJhbmdlID1cbiAgeyBzdGFydF9wb3MgOiBwb3NcbiAgOyBlbmRfcG9zIDogcG9zXG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl9yYW5nZSA9XG4gIChmdW4geyBzdGFydF9wb3MgPSBzdGFydF9wb3NfXzAwOV87IGVuZF9wb3MgPSBlbmRfcG9zX18wMTFfIH0gLT5cbiAgICAgbGV0IGJuZHNfXzAwOF8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICBsZXQgYXJnX18wMTJfID0gc2V4cF9vZl9wb3MgZW5kX3Bvc19fMDExXyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbmRfcG9zXCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9wb3Mgc3RhcnRfcG9zX18wMDlfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInN0YXJ0X3Bvc1wiOyBhcmdfXzAxMF8gXSA6OiBibmRzX18wMDhfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDA4X1xuICAgICA6IHJhbmdlIC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBjb21wYXJlX3JhbmdlID0gU3RkbGliLmNvbXBhcmVcblxubGV0IG1ha2VfcmFuZ2VfaW5jbCB+c3RhcnRfcG9zIH5sYXN0X3BvcyA9XG4gIHsgc3RhcnRfcG9zOyBlbmRfcG9zID0gc2hpZnRfcG9zIGxhc3RfcG9zIH5jb2xzOjEgfVxuOztcblxubW9kdWxlIENodW5rIDogc2lnXG4gICgqKiBSZXByZXNlbnRzIGFuIGFycmF5IG9mIFtsZW5ndGgvMl0gc2lnbmVkIDE2LWJpdCB2YWx1ZXMgKilcbiAgdHlwZSB0XG5cbiAgKCoqIExlbmd0aCBpbiBieXRlcy4gKilcbiAgdmFsIGxlbmd0aCA6IGludFxuXG4gIHZhbCBhbGxvYyA6IHVuaXQgLT4gdFxuXG4gICgqKiBbZ2V0MTYgfnBvc10gYW5kIFtzZXQxNiB+cG9zXSBtYW5pcHVsYXRlIHRoZSBbcG9zLzJddGggc3RvcmVkIHZhbHVlLlxuICAgICAgW3Bvc10gbXVzdCBiZSBldmVuLlxuICAgICAgW3NldDE2IHhdIG9ubHkgdXNlcyB0aGUgMTYgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiBbeF0uICopXG4gIHZhbCBnZXQxNiA6IHQgLT4gcG9zOmludCAtPiBpbnRcblxuICB2YWwgc2V0MTYgOiB0IC0+IHBvczppbnQgLT4gaW50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBieXRlc1xuXG4gICgqIE9DYW1sIHN0cmluZ3MgYWx3YXlzIHdhc3RlIHR3byBieXRlcyBhdCB0aGUgZW5kLCBzbyB3ZSB0YWtlIGEgcG93ZXIgb2YgdHdvIG1pbnVzIHR3b1xuICAgICB0byBiZSBzdXJlIHdlIGRvbid0IHdhc3RlIHNwYWNlLiAqKVxuICBsZXQgbGVuZ3RoID0gNjJcbiAgbGV0IGFsbG9jICgpID0gQnl0ZXMuY3JlYXRlIGxlbmd0aFxuXG4gIGV4dGVybmFsIGdldDE2IDogYnl0ZXMgLT4gcG9zOmludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2XCJcbiAgZXh0ZXJuYWwgc2V0MTYgOiBieXRlcyAtPiBwb3M6aW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5cbiAgKCogSWYgd2Ugd2FudCB0byBtYWtlIGEgW1Bvc2l0aW9ucy50XSBzZXJpYWxpemFibGU6XG5cbiAgICAge1tcbiAgICAgICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIjs7XG5cbiAgICAgICBsZXQgZ2V0MTYgPVxuICAgICAgICAgaWYgQ2FtbC5TeXMuYXJjaF9iaWdfZW5kaWFuIHRoZW5cbiAgICAgICAgICAgZnVuIGJ1ZiB+cG9zIC0+IGdldDE2IGJ1ZiB+cG9zIHw+IGJzd2FwMTZcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZ2V0MTZcblxuICAgICAgIGxldCBzZXQxNiA9XG4gICAgICAgICBpZiBDYW1sLlN5cy5hcmNoX2JpZ19lbmRpYW4gdGhlblxuICAgICAgICAgICBmdW4gYnVmIH5wb3MgeCAtPiBzZXQxNiBidWYgfnBvcyAoYnN3YXAxNiB4KVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBzZXQxNlxuICAgICBdfVxuXG4gICopXG5lbmRcblxudHlwZSB0XyA9XG4gIHsgY2h1bmtzIDogQ2h1bmsudCBsaXN0XG4gIDsgKCogW251bV9ieXRlcyAqIDggKyBleHRyYV9iaXRzXSBpcyB0aGUgbnVtYmVyIG9mIGJpdHMgc3RvcmVkIGluIFtjaHVua3NdLlxuICAgICAgIFRoZSBsYXN0IFtleHRyYV9iaXRzXSBiaXRzIHdpbGwgYmUgc3RvcmVkIGFzIHRoZSAqbGVhc3QqIHNpZ25pZmljYW50IGJpdHNcbiAgICAgICBvZiB0aGUgYXBwcm9wcmlhdGUgcGFpciBvZiBieXRlcyBvZiB0aGUgbGFzdCBjaHVuay4gKilcbiAgICBudW1fYnl0ZXMgOiBpbnRcbiAgOyBleHRyYV9iaXRzIDogaW50XG4gIDsgaW5pdGlhbF9wb3MgOiBwb3NcbiAgfVxuXG50eXBlIHQgPSB0XyBMYXp5LnRcblxubGV0IG1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMgKGxhenkgdCkgPVxuICBsZXQgbnVtX2ZpZWxkcyA9IDQgaW5cbiAgbGV0IGhlYWRlcl93b3JkcyA9IDEgaW5cbiAgbGV0IHdvcmRfYnl0ZXMgPVxuICAgIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICAgIHwgMzIgLT4gNFxuICAgIHwgNjQgLT4gOFxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgbGV0IGNodW5rX3dvcmRzID1cbiAgICBsZXQgZGl2X2NlaWwgYSBiID0gKGEgKyBiIC0gMSkgLyBiIGluXG4gICAgbGV0IG4gPVxuICAgICAgZGl2X2NlaWxcbiAgICAgICAgKENodW5rLmxlbmd0aFxuICAgICAgICAgKyAxICgqIE5VTCB0ZXJtaW5hdGluZyBieXRlcyAqKVxuICAgICAgICAgKyAxICgqIG51bWJlciBvZiB3YXN0ZWQgYnl0ZXMgdG8gZmlsbCBhIHdvcmQgKikpXG4gICAgICAgIHdvcmRfYnl0ZXNcbiAgICBpblxuICAgIG4gKyBoZWFkZXJfd29yZHNcbiAgaW5cbiAgbGV0IHBvc19maWVsZHMgPSAzIGluXG4gIGxldCBwb3Nfd29yZHMgPSBoZWFkZXJfd29yZHMgKyBwb3NfZmllbGRzIGluXG4gIGxldCBsaXN0X2NvbnNfd29yZHMgPSBoZWFkZXJfd29yZHMgKyAyIGluXG4gIChoZWFkZXJfd29yZHNcbiAgICsgbnVtX2ZpZWxkc1xuICAgKyBwb3Nfd29yZHNcbiAgICsgKExpc3QubGVuZ3RoIHQuY2h1bmtzICogKGNodW5rX3dvcmRzICsgbGlzdF9jb25zX3dvcmRzKSkpXG4gICogd29yZF9ieXRlc1xuOztcblxubW9kdWxlIEJ1aWxkZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY2h1bmsgOiBDaHVuay50XG4gICAgOyBtdXRhYmxlIGNodW5rX3BvcyA6IGludFxuICAgIDsgbXV0YWJsZSBmaWxsZWRfY2h1bmtzIDogQ2h1bmsudCBsaXN0ICgqIEZpbGxlZCBjaHVua3MgaW4gcmV2ZXJzZSBvcmRlciAqKVxuICAgIDsgbXV0YWJsZSBvZmZzZXQgOiBpbnRcbiAgICAoKiBPZmZzZXQgb2YgdGhlIGxhc3Qgc2F2ZWQgcG9zaXRpb24gb3IgbmV3bGluZSBwbHVzXG4gICAgICAgb25lLCBvciBbaW5pdGlhbF9wb3NdICopXG4gICAgOyBtdXRhYmxlIGludF9idWYgOiBpbnRcbiAgICAoKiB0aGUgW251bV9iaXRzXSBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIFtpbnRfYnVmXVxuICAgICAgIGFyZSB0aGUgYml0cyBub3QgeWV0IHB1c2hlZCB0byBbY2h1bmtdLiAqKVxuICAgIDsgbXV0YWJsZSBudW1fYml0cyA6IGludCAoKiBudW1iZXIgb2YgYml0cyBzdG9yZWQgaW4gW2ludF9idWZdICopXG4gICAgOyBtdXRhYmxlIGluaXRpYWxfcG9zIDogcG9zXG4gICAgfVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgYXNzZXJ0ICh0LmNodW5rX3BvcyA+PSAwICYmIHQuY2h1bmtfcG9zIDw9IENodW5rLmxlbmd0aCk7XG4gICAgYXNzZXJ0ICh0Lm9mZnNldCA+PSB0LmluaXRpYWxfcG9zLm9mZnNldCk7XG4gICAgYXNzZXJ0ICh0Lm51bV9iaXRzIDw9IDE1KVxuICA7O1xuXG4gIGxldCBjaGVja19pbnZhcmlhbnQgPSBmYWxzZVxuICBsZXQgaW52YXJpYW50IHQgPSBpZiBjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdFxuXG4gIGxldCBjcmVhdGUgPyhpbml0aWFsX3BvcyA9IGJlZ2lubmluZ19vZl9maWxlKSAoKSA9XG4gICAgeyBjaHVuayA9IENodW5rLmFsbG9jICgpXG4gICAgOyBjaHVua19wb3MgPSAwXG4gICAgOyBmaWxsZWRfY2h1bmtzID0gW11cbiAgICA7IG9mZnNldCA9IGluaXRpYWxfcG9zLm9mZnNldFxuICAgIDsgaW50X2J1ZiA9IDBcbiAgICA7IG51bV9iaXRzID0gMFxuICAgIDsgaW5pdGlhbF9wb3NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0IHQgKHBvcyA6IHBvcykgPVxuICAgICgqIFdlIG5lZWQgYSBuZXcgY2h1bmsgYXMgW2NvbnRlbnRzXSBrZWVwcyB0aGUgY3VycmVudCBjaHVuayBpbiB0aGUgY2xvc3VyZSBvZiB0aGVcbiAgICAgICBsYXp5IHZhbHVlLiAqKVxuICAgIHQuY2h1bmsgPC0gQ2h1bmsuYWxsb2MgKCk7XG4gICAgdC5jaHVua19wb3MgPC0gMDtcbiAgICB0LmZpbGxlZF9jaHVua3MgPC0gW107XG4gICAgdC5vZmZzZXQgPC0gcG9zLm9mZnNldDtcbiAgICB0LmludF9idWYgPC0gMDtcbiAgICB0Lm51bV9iaXRzIDwtIDA7XG4gICAgdC5pbml0aWFsX3BvcyA8LSBwb3NcbiAgOztcblxuICBsZXRbQGlubGluZSBuZXZlcl0gYWxsb2NfbmV3X2NodW5rIHQgPVxuICAgIHQuZmlsbGVkX2NodW5rcyA8LSB0LmNodW5rIDo6IHQuZmlsbGVkX2NodW5rcztcbiAgICB0LmNodW5rIDwtIENodW5rLmFsbG9jICgpO1xuICAgIHQuY2h1bmtfcG9zIDwtIDBcbiAgOztcblxuICBsZXQgYWRkX3VpbnQxNiB0IG4gPVxuICAgIGlmIHQuY2h1bmtfcG9zID0gQ2h1bmsubGVuZ3RoIHRoZW4gYWxsb2NfbmV3X2NodW5rIHQ7XG4gICAgQ2h1bmsuc2V0MTYgdC5jaHVuayB+cG9zOnQuY2h1bmtfcG9zIG5cbiAgOztcblxuICBsZXQgYWRkX2JpdHMgdCBuIH5udW1fYml0cyA9XG4gICAgbGV0IGludF9idWYgPSAodC5pbnRfYnVmIGxzbCBudW1fYml0cykgbG9yIG4gaW5cbiAgICBsZXQgbnVtX2JpdHMgPSB0Lm51bV9iaXRzICsgbnVtX2JpdHMgaW5cbiAgICB0LmludF9idWYgPC0gaW50X2J1ZjtcbiAgICBpZiBudW1fYml0cyA8IDE2XG4gICAgdGhlbiB0Lm51bV9iaXRzIDwtIG51bV9iaXRzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbnVtX2JpdHMgPSBudW1fYml0cyAtIDE2IGluXG4gICAgICB0Lm51bV9iaXRzIDwtIG51bV9iaXRzO1xuICAgICAgYWRkX3VpbnQxNiB0IChpbnRfYnVmIGxzciBudW1fYml0cyk7XG4gICAgICB0LmNodW5rX3BvcyA8LSB0LmNodW5rX3BvcyArIDJcbiAgICAgICgqIG5vIG5lZWQgdG8gY2xlYXIgdGhlIGJpdHMgb2YgaW50X2J1ZiB3ZSBqdXN0IHdyb3RlLCBhcyBmdXJ0aGVyIHNldDE2IHdpbGwgaWdub3JlXG4gICAgICAgICB0aGVzZSBleHRyYSBiaXRzLiAqKSlcbiAgOztcblxuICBsZXQgY29udGVudHMgdCA9XG4gICAgKCogRmx1c2ggdGhlIGN1cnJlbnQgW3QuaW50X2J1Zl0gKilcbiAgICBhZGRfdWludDE2IHQgdC5pbnRfYnVmO1xuICAgIGxldCByZXZfY2h1bmtzID0gdC5jaHVuayA6OiB0LmZpbGxlZF9jaHVua3MgaW5cbiAgICBsZXQgY2h1bmtfcG9zID0gdC5jaHVua19wb3MgaW5cbiAgICBsZXQgZXh0cmFfYml0cyA9IHQubnVtX2JpdHMgaW5cbiAgICBsZXQgaW5pdGlhbF9wb3MgPSB0LmluaXRpYWxfcG9zIGluXG4gICAgbGF6eVxuICAgICAgeyBjaHVua3MgPSBMaXN0LnJldiByZXZfY2h1bmtzXG4gICAgICA7IG51bV9ieXRlcyA9ICgoTGlzdC5sZW5ndGggcmV2X2NodW5rcyAtIDEpICogQ2h1bmsubGVuZ3RoKSArIGNodW5rX3Bvc1xuICAgICAgOyBleHRyYV9iaXRzXG4gICAgICA7IGluaXRpYWxfcG9zXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGxvbmdfc2hpZnQgdCBuID1cbiAgICBsZXQgbiA9IHJlZiAobiAtIDUpIGluXG4gICAgd2hpbGUgIW4gPiAwIGRvXG4gICAgICBhZGRfYml0cyB0ICgwYjExMDBfMDAwMCBsb3IgKCFuIGxhbmQgMGIwMDAxXzExMTEpKSB+bnVtX2JpdHM6ODtcbiAgICAgIG4gOj0gIW4gbHNyIDVcbiAgICBkb25lXG4gIDs7XG5cbiAgKCogcHJlY29uZGl0aW9uOiBuID49IDUgKilcbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIGFkZF9nZW5fc2xvdyB0IG4gfmluc3RyIH5pbnN0cl9iaXRzID1cbiAgICBsb25nX3NoaWZ0IHQgbjtcbiAgICBhZGRfYml0cyB0IGluc3RyIH5udW1fYml0czppbnN0cl9iaXRzXG4gIDs7XG5cbiAgbGV0IHNoaWZ0NCA9IDBiMTBfMTBfMTBfMTBcblxuICBsZXRbQGlubGluZSBhbHdheXNdIGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0ciB+aW5zdHJfYml0cyA9XG4gICAgaW52YXJpYW50IHQ7XG4gICAgbGV0IG4gPSBvZmZzZXQgLSB0Lm9mZnNldCBpblxuICAgIHQub2Zmc2V0IDwtIG9mZnNldCArIDE7XG4gICAgbWF0Y2ggbiB3aXRoXG4gICAgfCAwIHwgMSB8IDIgfCAzIHwgNCAtPlxuICAgICAgbGV0IG51bV9iaXRzID0gKG4gbHNsIDEpICsgaW5zdHJfYml0cyBpblxuICAgICAgYWRkX2JpdHMgdCAoKHNoaWZ0NCBsc2wgaW5zdHJfYml0cykgbG9yIGluc3RyIGxhbmQgKCgxIGxzbCBudW1fYml0cykgLSAxKSkgfm51bV9iaXRzXG4gICAgfCA1XG4gICAgfCA2XG4gICAgfCA3XG4gICAgfCA4XG4gICAgfCA5XG4gICAgfCAxMFxuICAgIHwgMTFcbiAgICB8IDEyXG4gICAgfCAxM1xuICAgIHwgMTRcbiAgICB8IDE1XG4gICAgfCAxNlxuICAgIHwgMTdcbiAgICB8IDE4XG4gICAgfCAxOVxuICAgIHwgMjBcbiAgICB8IDIxXG4gICAgfCAyMlxuICAgIHwgMjNcbiAgICB8IDI0XG4gICAgfCAyNVxuICAgIHwgMjZcbiAgICB8IDI3XG4gICAgfCAyOFxuICAgIHwgMjlcbiAgICB8IDMwXG4gICAgfCAzMVxuICAgIHwgMzJcbiAgICB8IDMzXG4gICAgfCAzNFxuICAgIHwgMzVcbiAgICB8IDM2IC0+XG4gICAgICBhZGRfYml0c1xuICAgICAgICB0XG4gICAgICAgICgoKDBiMTEwMF8wMDAwIGxvciAobiAtIDUpKSBsc2wgaW5zdHJfYml0cykgbG9yIGluc3RyKVxuICAgICAgICB+bnVtX2JpdHM6KDggKyBpbnN0cl9iaXRzKVxuICAgIHwgXyAtPlxuICAgICAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuUG9zaXRpb25zLmFkZF9nZW5cIjtcbiAgICAgIGFkZF9nZW5fc2xvdyB0IG4gfmluc3RyIH5pbnN0cl9iaXRzXG4gIDs7XG5cbiAgbGV0IGFkZCB0IH5vZmZzZXQgPSBhZGRfZ2VuIHQgfm9mZnNldCB+aW5zdHI6MGIwIH5pbnN0cl9iaXRzOjFcbiAgbGV0IGFkZF90d2ljZSB0IH5vZmZzZXQgPSBhZGRfZ2VuIHQgfm9mZnNldCB+aW5zdHI6MGIxMTExIH5pbnN0cl9iaXRzOjRcbiAgbGV0IGFkZF9uZXdsaW5lIHQgfm9mZnNldCA9IGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0cjowYjExMTAgfmluc3RyX2JpdHM6NFxuZW5kXG5cbnR5cGUgcG9zaXRpb25zID0gdFxuXG5tb2R1bGUgSXRlcmF0b3IgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6IHBvc2l0aW9ucyAtPiB0XG5cbiAgZXhjZXB0aW9uIE5vX21vcmVcblxuICAoKiBbYWR2YW5jZSB0IH5za2lwXSBpZ25vcmVzIFtza2lwXSBzYXZlZCBwb3NpdGlvbnMgYW5kIHJldHVybnMgdGhlIG5leHQgc2F2ZWQgcG9zaXRpb24uXG4gICAgIFJhaXNlcyBbTm9fbW9yZV0gd2hlbiByZWFjaGluZyB0aGUgZW5kIG9mIHRoZSBwb3NpdGlvbiBzZXQuICopXG4gIHZhbCBhZHZhbmNlX2V4biA6IHQgLT4gc2tpcDppbnQgLT4gcG9zXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY2h1bmsgOiBDaHVuay50XG4gICAgOyBtdXRhYmxlIGNodW5rcyA6IENodW5rLnQgbGlzdFxuICAgIDsgKCogW251bV9ieXRlcyAqIDggKyBleHRyYV9iaXRzXSBpcyB0aGUgbnVtYmVyIG9mIGJpdHMgYXZhaWxhYmxlIGZyb20gW2luc3RyX3Bvc10gaW5cbiAgICAgICAgIFtjaHVuayA6OiBjaHVua3NdLiAqKVxuICAgICAgbXV0YWJsZSBudW1fYnl0ZXMgOiBpbnRcbiAgICA7IGV4dHJhX2JpdHMgOiBpbnRcbiAgICA7IG11dGFibGUgaW5zdHJfcG9zIDogaW50ICgqIHBvc2l0aW9uIGluIFtjaHVua10gKilcbiAgICA7IG11dGFibGUgb2Zmc2V0IDogaW50XG4gICAgOyBtdXRhYmxlIGxpbmUgOiBpbnRcbiAgICA7IG11dGFibGUgYm9sIDogaW50XG4gICAgOyBtdXRhYmxlIGludF9idWYgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX2JpdHMgOiBpbnQgKCogTnVtYmVyIG9mIGJpdHMgbm90IHlldCBjb25zdW1lZCBpbiBbaW50X2J1Zl0gKilcbiAgICA7IG11dGFibGUgcGVuZGluZyA6IHBvcyBvcHRpb25cbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSAoKGxhenkgcCkgOiBwb3NpdGlvbnMpID1cbiAgICBtYXRjaCBwLmNodW5rcyB3aXRoXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IGNodW5rIDo6IGNodW5rcyAtPlxuICAgICAgeyBjaHVua1xuICAgICAgOyBjaHVua3NcbiAgICAgIDsgbnVtX2J5dGVzID0gcC5udW1fYnl0ZXNcbiAgICAgIDsgZXh0cmFfYml0cyA9IHAuZXh0cmFfYml0c1xuICAgICAgOyBpbnN0cl9wb3MgPSAwXG4gICAgICA7IG9mZnNldCA9IHAuaW5pdGlhbF9wb3Mub2Zmc2V0XG4gICAgICA7IGxpbmUgPSBwLmluaXRpYWxfcG9zLmxpbmVcbiAgICAgIDsgYm9sID0gcC5pbml0aWFsX3Bvcy5vZmZzZXQgLSBwLmluaXRpYWxfcG9zLmNvbFxuICAgICAgOyBpbnRfYnVmID0gMFxuICAgICAgOyBudW1fYml0cyA9IDBcbiAgICAgIDsgcGVuZGluZyA9IE5vbmVcbiAgICAgIH1cbiAgOztcblxuICBleGNlcHRpb24gTm9fbW9yZVxuXG4gIGxldCBub19tb3JlICgpID0gcmFpc2Vfbm90cmFjZSBOb19tb3JlXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIGZldGNoX2NodW5rIHQgPVxuICAgIG1hdGNoIHQuY2h1bmtzIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgY2h1bmsgOjogY2h1bmtzIC0+XG4gICAgICB0Lmluc3RyX3BvcyA8LSAwO1xuICAgICAgdC5udW1fYnl0ZXMgPC0gdC5udW1fYnl0ZXMgLSBDaHVuay5sZW5ndGg7XG4gICAgICB0LmNodW5rIDwtIGNodW5rO1xuICAgICAgdC5jaHVua3MgPC0gY2h1bmtzXG4gIDs7XG5cbiAgbGV0IGZldGNoIHQgPVxuICAgIGlmIHQuaW5zdHJfcG9zID4gdC5udW1fYnl0ZXMgdGhlbiBub19tb3JlICgpO1xuICAgIGlmIHQuaW5zdHJfcG9zID0gQ2h1bmsubGVuZ3RoIHRoZW4gZmV0Y2hfY2h1bmsgdDtcbiAgICBsZXQgdiA9IENodW5rLmdldDE2IHQuY2h1bmsgfnBvczp0Lmluc3RyX3BvcyBpblxuICAgIGxldCBhZGRlZF9iaXRzID0gaWYgdC5pbnN0cl9wb3MgPSB0Lm51bV9ieXRlcyB0aGVuIHQuZXh0cmFfYml0cyBlbHNlIDE2IGluXG4gICAgdC5pbnRfYnVmIDwtICh0LmludF9idWYgbHNsIGFkZGVkX2JpdHMpIGxvciAodiBsYW5kICgoMSBsc2wgYWRkZWRfYml0cykgLSAxKSk7XG4gICAgdC5udW1fYml0cyA8LSB0Lm51bV9iaXRzICsgYWRkZWRfYml0cztcbiAgICB0Lmluc3RyX3BvcyA8LSB0Lmluc3RyX3BvcyArIDJcbiAgOztcblxuICBsZXQgbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzID1cbiAgICBpZiB0Lm51bV9iaXRzIDwgbnVtX2JpdHNcbiAgICB0aGVuIChcbiAgICAgIGZldGNoIHQ7XG4gICAgICBpZiB0Lm51bV9iaXRzIDwgbnVtX2JpdHMgdGhlbiBub19tb3JlICgpKTtcbiAgICBsZXQgbiA9ICh0LmludF9idWYgbHNyICh0Lm51bV9iaXRzIC0gbnVtX2JpdHMpKSBsYW5kICgoMSBsc2wgbnVtX2JpdHMpIC0gMSkgaW5cbiAgICB0Lm51bV9iaXRzIDwtIHQubnVtX2JpdHMgLSBudW1fYml0cztcbiAgICBuXG4gIDs7XG5cbiAgKCogW29mZnNldF9zaGlmdF0gYW5kIFtvZmZzZXRfc2hpZnRfbnVtX2JpdHNdIGVuY29kZSB0aGUgb2Zmc2V0IG51bWJlclxuICAgICBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZWx5IHByZWNlZGluZyBbMTEwXSBpbnN0cnVjdGlvbnMuICopXG4gIGxldCByZWMgYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQgfm9mZnNldF9zaGlmdF9udW1fYml0cyA9XG4gICAgbWF0Y2ggbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjEgd2l0aFxuICAgIHwgMCAtPlxuICAgICAgKCogYml0IHNlcSAwIC0+IG5ldyBpdGVtICopXG4gICAgICBsZXQgb2Zmc2V0ID0gdC5vZmZzZXQgKyBvZmZzZXRfc2hpZnQgaW5cbiAgICAgIHQub2Zmc2V0IDwtIG9mZnNldCArIDE7XG4gICAgICBpZiBza2lwID0gMFxuICAgICAgdGhlbiB7IGxpbmUgPSB0LmxpbmU7IGNvbCA9IG9mZnNldCAtIHQuYm9sOyBvZmZzZXQgfVxuICAgICAgZWxzZSBhZHZhbmNlIHQgfnNraXA6KHNraXAgLSAxKSB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgfCBfIC0+XG4gICAgICAobWF0Y2ggbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjEgd2l0aFxuICAgICAgIHwgMCAtPlxuICAgICAgICAgKCogYml0IHNlcSAxMCAtPiBzaGlmdCAqKVxuICAgICAgICAgdC5vZmZzZXQgPC0gdC5vZmZzZXQgKyBvZmZzZXRfc2hpZnQgKyAxO1xuICAgICAgICAgYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICAgICB8IF8gLT5cbiAgICAgICAgIChtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAoKiBiaXQgc2VxIDExMCAtPiBsb25nIHNoaWZ0ICopXG4gICAgICAgICAgICBsZXQgbiA9IG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czo1IGluXG4gICAgICAgICAgICBsZXQgb2Zmc2V0X3NoaWZ0ID0gaWYgb2Zmc2V0X3NoaWZ0X251bV9iaXRzID0gMCB0aGVuIDUgZWxzZSBvZmZzZXRfc2hpZnQgaW5cbiAgICAgICAgICAgIGFkdmFuY2VcbiAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICB+c2tpcFxuICAgICAgICAgICAgICB+b2Zmc2V0X3NoaWZ0OihvZmZzZXRfc2hpZnQgKyAobiBsc2wgb2Zmc2V0X3NoaWZ0X251bV9iaXRzKSlcbiAgICAgICAgICAgICAgfm9mZnNldF9zaGlmdF9udW1fYml0czoob2Zmc2V0X3NoaWZ0X251bV9iaXRzICsgNSlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIChtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgICAoKiBiaXQgc2VxIDExMTAgLT4gbmV3bGluZSAqKVxuICAgICAgICAgICAgICAgdC5vZmZzZXQgPC0gdC5vZmZzZXQgKyBvZmZzZXRfc2hpZnQgKyAxO1xuICAgICAgICAgICAgICAgdC5ib2wgPC0gdC5vZmZzZXQ7XG4gICAgICAgICAgICAgICB0LmxpbmUgPC0gdC5saW5lICsgMTtcbiAgICAgICAgICAgICAgIGFkdmFuY2UgdCB+c2tpcCB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAoKiBiaXQgc2VxIDExMTEgLT4gMiBuZXcgaXRlbXMgKilcbiAgICAgICAgICAgICAgIGxldCBvZmZzZXQgPSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCBpblxuICAgICAgICAgICAgICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICAgICAgICAgICAgIGlmIHNraXAgPD0gMVxuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgIGxldCBwb3MgPSB7IGxpbmUgPSB0LmxpbmU7IGNvbCA9IG9mZnNldCAtIHQuYm9sOyBvZmZzZXQgfSBpblxuICAgICAgICAgICAgICAgICBpZiBza2lwID0gMCB0aGVuIHQucGVuZGluZyA8LSBTb21lIHBvcztcbiAgICAgICAgICAgICAgICAgcG9zKVxuICAgICAgICAgICAgICAgZWxzZSBhZHZhbmNlIHQgfnNraXA6KHNraXAgLSAyKSB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowKSkpXG4gIDs7XG5cbiAgbGV0IGFkdmFuY2VfZXhuIHQgfnNraXAgPVxuICAgIG1hdGNoIHQucGVuZGluZyB3aXRoXG4gICAgfCBTb21lIHBvcyAtPlxuICAgICAgdC5wZW5kaW5nIDwtIE5vbmU7XG4gICAgICBpZiBza2lwID0gMFxuICAgICAgdGhlbiBwb3NcbiAgICAgIGVsc2UgYWR2YW5jZSB0IH5za2lwOihza2lwIC0gMSkgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICAgIHwgTm9uZSAtPiBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICA7O1xuZW5kXG5cbmxldCBmaW5kIHQgYSBiID1cbiAgaWYgYSA8IDAgfHwgYiA8PSBhIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLlBvc2l0aW9ucy5maW5kXCI7XG4gIGxldCBpdGVyID0gSXRlcmF0b3IuY3JlYXRlIHQgaW5cbiAgdHJ5XG4gICAgbGV0IHN0YXJ0X3BvcyA9IEl0ZXJhdG9yLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6YSBpblxuICAgIGxldCBsYXN0X3BvcyA9IEl0ZXJhdG9yLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6KGIgLSBhIC0gMSkgaW5cbiAgICBtYWtlX3JhbmdlX2luY2wgfnN0YXJ0X3BvcyB+bGFzdF9wb3NcbiAgd2l0aFxuICB8IEl0ZXJhdG9yLk5vX21vcmUgLT4gZmFpbHdpdGggXCJQYXJzZXhwLlBvc2l0aW9uLmZpbmRcIlxuOztcblxubGV0IHJlYyBzdWJfc2V4cF9jb3VudCAoc2V4cCA6IFNleHAudCkgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIF8gLT4gMVxuICB8IExpc3QgbCAtPiBMaXN0LmZvbGRfbGVmdCBsIH5pbml0OjEgfmY6KGZ1biBhY2MgeCAtPiBhY2MgKyBzdWJfc2V4cF9jb3VudCB4KVxuOztcblxubW9kdWxlIFNleHBfc2VhcmNoID0gc3RydWN0XG4gIGV4Y2VwdGlvbiBGb3VuZCBvZiBpbnRcblxuICBsZXQgcmVjIGxvb3AgfnN1YiBpbmRleCAoc2V4cCA6IFNleHAudCkgPVxuICAgIGlmIHNleHAgPT0gc3ViXG4gICAgdGhlbiByYWlzZV9ub3RyYWNlIChGb3VuZCBpbmRleClcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBBdG9tIF8gLT4gaW5kZXggKyAyXG4gICAgICB8IExpc3QgbCAtPlxuICAgICAgICBsZXQgaW5kZXggPSBsb29wX2xpc3QgfnN1YiAoaW5kZXggKyAxKSBsIGluXG4gICAgICAgIGluZGV4ICsgMSlcblxuICBhbmQgbG9vcF9saXN0IH5zdWIgaW5kZXggKHNleHBzIDogU2V4cC50IGxpc3QpID1cbiAgICBMaXN0LmZvbGRfbGVmdCBzZXhwcyB+aW5pdDppbmRleCB+ZjoobG9vcCB+c3ViKVxuICA7O1xuXG4gIGxldCBmaW5hbGl6ZSB0IH5zdWIgYSA9XG4gICAgbGV0IGIgPSBhICsgKHN1Yl9zZXhwX2NvdW50IHN1YiAqIDIpIC0gMSBpblxuICAgIFNvbWUgKGZpbmQgdCBhIGIpXG4gIDs7XG5cbiAgbGV0IGZpbmRfc3ViX3NleHBfcGh5cyB0IHNleHAgfnN1YiA9XG4gICAgbWF0Y2ggbG9vcCB+c3ViIDAgc2V4cCB3aXRoXG4gICAgfCAoXyA6IGludCkgLT4gTm9uZVxuICAgIHwgZXhjZXB0aW9uIEZvdW5kIG4gLT4gZmluYWxpemUgdCB+c3ViIG5cbiAgOztcblxuICBsZXQgZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXMgdCBzZXhwcyB+c3ViID1cbiAgICBtYXRjaCBsb29wX2xpc3QgfnN1YiAwIHNleHBzIHdpdGhcbiAgICB8IChfIDogaW50KSAtPiBOb25lXG4gICAgfCBleGNlcHRpb24gRm91bmQgbiAtPiBmaW5hbGl6ZSB0IH5zdWIgblxuICA7O1xuZW5kXG5cbmxldCBmaW5kX3N1Yl9zZXhwX3BoeXMgPSBTZXhwX3NlYXJjaC5maW5kX3N1Yl9zZXhwX3BoeXNcbmxldCBmaW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5cyA9IFNleHBfc2VhcmNoLmZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzXG5cbmxldCB0b19saXN0IHQgPVxuICBsZXQgaXRlciA9IEl0ZXJhdG9yLmNyZWF0ZSB0IGluXG4gIGxldCByZWMgbG9vcCBhY2MgPVxuICAgIG1hdGNoIEl0ZXJhdG9yLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCB3aXRoXG4gICAgfCBleGNlcHRpb24gSXRlcmF0b3IuTm9fbW9yZSAtPiBMaXN0LnJldiBhY2NcbiAgICB8IHBvcyAtPiBsb29wIChwb3MgOjogYWNjKVxuICBpblxuICBsb29wIFtdXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IHRvX2xpc3QgdCB8PiBBcnJheS5vZl9saXN0XG5sZXQgY29tcGFyZSB0MSB0MiA9IFN0ZGxpYi5jb21wYXJlICh0b19hcnJheSB0MSkgKHRvX2FycmF5IHQyKVxubGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl9hcnJheSBzZXhwX29mX3BvcyAodG9fYXJyYXkgdClcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IEF0b20gb2ZcbiAgICAgIHsgbG9jIDogUG9zaXRpb25zLnJhbmdlXG4gICAgICA7IGF0b20gOiBzdHJpbmdcbiAgICAgIDsgdW5lc2NhcGVkIDogc3RyaW5nIG9wdGlvblxuICAgICAgfVxuICB8IExpc3Qgb2ZcbiAgICAgIHsgbG9jIDogUG9zaXRpb25zLnJhbmdlXG4gICAgICA7IGVsZW1lbnRzIDogdF9vcl9jb21tZW50IGxpc3RcbiAgICAgIH1cblxuYW5kIHRfb3JfY29tbWVudCA9XG4gIHwgU2V4cCBvZiB0XG4gIHwgQ29tbWVudCBvZiBjb21tZW50XG5cbmFuZCBjb21tZW50ID1cbiAgfCBQbGFpbl9jb21tZW50IG9mXG4gICAgICB7IGxvYyA6IFBvc2l0aW9ucy5yYW5nZVxuICAgICAgOyBjb21tZW50IDogc3RyaW5nXG4gICAgICB9XG4gIHwgU2V4cF9jb21tZW50IG9mXG4gICAgICB7IGhhc2hfc2VtaV9wb3MgOiBQb3NpdGlvbnMucG9zXG4gICAgICA7IGNvbW1lbnRzIDogY29tbWVudCBsaXN0XG4gICAgICA7IHNleHAgOiB0XG4gICAgICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHJlYyBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IEF0b20geyBsb2MgPSBsb2NfXzAwMl87IGF0b20gPSBhdG9tX18wMDRfOyB1bmVzY2FwZWQgPSB1bmVzY2FwZWRfXzAwNl8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwMV8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX29wdGlvbiBzZXhwX29mX3N0cmluZyB1bmVzY2FwZWRfXzAwNl8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInVuZXNjYXBlZFwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDFfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgIGxldCBhcmdfXzAwNV8gPSBzZXhwX29mX3N0cmluZyBhdG9tX18wMDRfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJhdG9tXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICAgbGV0IGFyZ19fMDAzXyA9IFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY19fMDAyXyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDAzXyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiQXRvbVwiIDo6IGJuZHNfXzAwMV8pXG4gICAgfCBMaXN0IHsgbG9jID0gbG9jX18wMDlfOyBlbGVtZW50cyA9IGVsZW1lbnRzX18wMTFfIH0gLT5cbiAgICAgIGxldCBibmRzX18wMDhfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgICBsZXQgYXJnX18wMTJfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfdF9vcl9jb21tZW50IGVsZW1lbnRzX18wMTFfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbGVtZW50c1wiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDhfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDA4XyA9XG4gICAgICAgIGxldCBhcmdfXzAxMF8gPSBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NfXzAwOV8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY1wiOyBhcmdfXzAxMF8gXSA6OiBibmRzX18wMDhfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIkxpc3RcIiA6OiBibmRzX18wMDhfKVxuICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuYW5kIHNleHBfb2ZfdF9vcl9jb21tZW50ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBTZXhwIGFyZzBfXzAxM18gLT5cbiAgICAgIGxldCByZXMwX18wMTRfID0gc2V4cF9vZl90IGFyZzBfXzAxM18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlNleHBcIjsgcmVzMF9fMDE0XyBdXG4gICAgfCBDb21tZW50IGFyZzBfXzAxNV8gLT5cbiAgICAgIGxldCByZXMwX18wMTZfID0gc2V4cF9vZl9jb21tZW50IGFyZzBfXzAxNV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkNvbW1lbnRcIjsgcmVzMF9fMDE2XyBdXG4gICAgICA6IHRfb3JfY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbmFuZCBzZXhwX29mX2NvbW1lbnQgPVxuICAoZnVuY3Rpb25cbiAgICB8IFBsYWluX2NvbW1lbnQgeyBsb2MgPSBsb2NfXzAxOF87IGNvbW1lbnQgPSBjb21tZW50X18wMjBfIH0gLT5cbiAgICAgIGxldCBibmRzX18wMTdfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgbGV0IGJuZHNfXzAxN18gPVxuICAgICAgICBsZXQgYXJnX18wMjFfID0gc2V4cF9vZl9zdHJpbmcgY29tbWVudF9fMDIwXyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY29tbWVudFwiOyBhcmdfXzAyMV8gXSA6OiBibmRzX18wMTdfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDE3XyA9XG4gICAgICAgIGxldCBhcmdfXzAxOV8gPSBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NfXzAxOF8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY1wiOyBhcmdfXzAxOV8gXSA6OiBibmRzX18wMTdfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIlBsYWluX2NvbW1lbnRcIiA6OiBibmRzX18wMTdfKVxuICAgIHwgU2V4cF9jb21tZW50XG4gICAgICAgIHsgaGFzaF9zZW1pX3BvcyA9IGhhc2hfc2VtaV9wb3NfXzAyM19cbiAgICAgICAgOyBjb21tZW50cyA9IGNvbW1lbnRzX18wMjVfXG4gICAgICAgIDsgc2V4cCA9IHNleHBfXzAyN19cbiAgICAgICAgfSAtPlxuICAgICAgbGV0IGJuZHNfXzAyMl8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDIyXyA9XG4gICAgICAgIGxldCBhcmdfXzAyOF8gPSBzZXhwX29mX3Qgc2V4cF9fMDI3XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V4cFwiOyBhcmdfXzAyOF8gXSA6OiBibmRzX18wMjJfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDIyXyA9XG4gICAgICAgIGxldCBhcmdfXzAyNl8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9jb21tZW50IGNvbW1lbnRzX18wMjVfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb21tZW50c1wiOyBhcmdfXzAyNl8gXSA6OiBibmRzX18wMjJfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDIyXyA9XG4gICAgICAgIGxldCBhcmdfXzAyNF8gPSBQb3NpdGlvbnMuc2V4cF9vZl9wb3MgaGFzaF9zZW1pX3Bvc19fMDIzXyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiaGFzaF9zZW1pX3Bvc1wiOyBhcmdfXzAyNF8gXSA6OiBibmRzX18wMjJfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIlNleHBfY29tbWVudFwiIDo6IGJuZHNfXzAyMl8pXG4gICAgICA6IGNvbW1lbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IGNvbXBhcmUgPSBTdGRsaWIuY29tcGFyZVxubGV0IGNvbXBhcmVfdF9vcl9jb21tZW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBjb21wYXJlX2NvbW1lbnQgPSBTdGRsaWIuY29tcGFyZVxuXG5tb2R1bGUgRm9yZ2V0ID0gc3RydWN0XG4gICgqIEluIGNwcyB0byBwcmV2ZW50IG5vbi10YWlsIHJlY3Vyc2lvbi5cbiAgICAgVGhlIHBvbHltb3JwaGlzbSBpbiB0aGUgc2lnbmF0dXJlIGVuc3VyZXMgdGhhdCBlYWNoIGZ1bmN0aW9uIHJldHVybnNcbiAgICAgb25seSB0aHJvdWdoIHRoZSBjb250aW51YXRpb24uICopXG4gIG1vZHVsZSBDcHMgOiBzaWdcbiAgICB2YWwgZm9yZ2V0X3QgOiB0IC0+IChTZXhwLnQgLT4gJ3IpIC0+ICdyXG4gICAgdmFsIGZvcmdldF90b2MgOiB0X29yX2NvbW1lbnQgLT4gKFNleHAudCBvcHRpb24gLT4gJ3IpIC0+ICdyXG4gICAgdmFsIGZvcmdldF90b2NzIDogdF9vcl9jb21tZW50IGxpc3QgLT4gKFNleHAudCBsaXN0IC0+ICdyKSAtPiAnclxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgcmVjIGZvcmdldF90IHQgayA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgQXRvbSB7IGF0b207IF8gfSAtPiBrIChTZXhwLkF0b20gYXRvbSlcbiAgICAgIHwgTGlzdCB7IGVsZW1lbnRzOyBfIH0gLT4gZm9yZ2V0X3RvY3MgZWxlbWVudHMgKGZ1biB4cyAtPiBrIChTZXhwLkxpc3QgeHMpKVxuXG4gICAgYW5kIGZvcmdldF90b2NzIHRvY3MgayA9XG4gICAgICBtYXRjaCB0b2NzIHdpdGhcbiAgICAgIHwgW10gLT4gayBbXVxuICAgICAgfCB0b2MgOjogdG9jcyAtPlxuICAgICAgICBmb3JnZXRfdG9jIHRvYyAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gZm9yZ2V0X3RvY3MgdG9jcyBrXG4gICAgICAgICAgfCBTb21lIHggLT4gZm9yZ2V0X3RvY3MgdG9jcyAoZnVuIHhzIC0+IGsgKHggOjogeHMpKSlcblxuICAgIGFuZCBmb3JnZXRfdG9jIHRvYyBrID1cbiAgICAgIG1hdGNoIHRvYyB3aXRoXG4gICAgICB8IENvbW1lbnQgXyAtPiBrIE5vbmVcbiAgICAgIHwgU2V4cCB0IC0+IGZvcmdldF90IHQgKGZ1biB4IC0+IGsgKFNvbWUgeCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHQgeCA9IENwcy5mb3JnZXRfdCB4IChmdW4geSAtPiB5KVxuICBsZXQgdF9vcl9jb21tZW50IHggPSBDcHMuZm9yZ2V0X3RvYyB4IChmdW4geSAtPiB5KVxuICBsZXQgdF9vcl9jb21tZW50cyB4ID0gQ3BzLmZvcmdldF90b2NzIHggKGZ1biB5IC0+IHkpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBdXRvbWF0b25fc3RhY2tfaW50ZlxuXG5tb2R1bGUgRm9yX2NzdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRW1wdHlcbiAgICB8IFRfb3JfY29tbWVudCBvZiBDc3QudF9vcl9jb21tZW50ICogdFxuICAgIHwgT3BlbiBvZiBQb3NpdGlvbnMucG9zICogdFxuICAgIHwgSW5fc2V4cF9jb21tZW50IG9mXG4gICAgICAgIHsgaGFzaF9zZW1pX3BvcyA6IFBvc2l0aW9ucy5wb3NcbiAgICAgICAgOyByZXZfY29tbWVudHMgOiBDc3QuY29tbWVudCBsaXN0XG4gICAgICAgIDsgc3RhY2sgOiB0XG4gICAgICAgIH1cblxuICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gIGxldCBnZXRfbWFueSA9XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY1xuICAgICAgfCBUX29yX2NvbW1lbnQgKHQsIHN0YWNrKSAtPiBsb29wICh0IDo6IGFjYykgc3RhY2tcbiAgICAgIHwgT3BlbiBfIHwgSW5fc2V4cF9jb21tZW50IF8gLT4gZmFpbHdpdGggXCJBdXRvbWF0b25fc3RhY2suRm9yX2NzdC5nZXRfbWFueVwiXG4gICAgaW5cbiAgICBmdW4gc3RhY2sgLT4gbG9vcCBbXSBzdGFja1xuICA7O1xuZW5kXG5cbm1vZHVsZSBKdXN0X3Bvc2l0aW9ucyA9IHN0cnVjdFxuICB0eXBlIHQgPSB1bml0XG5cbiAgbGV0IGVtcHR5ID0gKClcbmVuZFxuXG50eXBlIHQgPVxuICB8IEVtcHR5XG4gIHwgT3BlbiBvZiB0XG4gIHwgU2V4cCBvZiBTZXhwLnQgKiB0XG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBnZXRfc2luZ2xlID0gZnVuY3Rpb25cbiAgfCBTZXhwIChzZXhwLCBFbXB0eSkgLT4gc2V4cFxuICB8IF8gLT4gZmFpbHdpdGggXCJBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZVwiXG47O1xuXG5sZXQgZ2V0X21hbnkgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGFjY1xuICAgIHwgT3BlbiBfIC0+IGZhaWx3aXRoIFwiQXV0b21hdG9uX3N0YWNrLmdldF9tYW55XCJcbiAgICB8IFNleHAgKHNleHAsIHN0YWNrKSAtPiBsb29wIChzZXhwIDo6IGFjYykgc3RhY2tcbiAgaW5cbiAgZnVuIHN0YWNrIC0+IGxvb3AgW10gc3RhY2tcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFNleHBfY29tbWVudFxuICAgIHwgU2V4cFxuZW5kXG5cbm1vZHVsZSBGb3JfY3N0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyB0b2tlbl9idWZmZXIgOiBCdWZmZXIudCAoKiogU3RhcnRpbmcgcG9zaXRpb25zIG9mIHRoZSBjdXJyZW50IHRva2VuICoqKVxuICAgIDsgbXV0YWJsZSB0b2tlbl9zdGFydF9wb3MgOiBQb3NpdGlvbnMucG9zXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSBLaW5kID0gc3RydWN0XG4gIHR5cGUgKCd1LCAncykgdCA9XG4gICAgfCBQb3NpdGlvbnMgOiAoUG9zaXRpb25zLkJ1aWxkZXIudCwgdW5pdCkgdFxuICAgIHwgU2V4cCA6ICh1bml0LCBBdXRvbWF0b25fc3RhY2sudCkgdFxuICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyA6IChQb3NpdGlvbnMuQnVpbGRlci50LCBBdXRvbWF0b25fc3RhY2sudCkgdFxuICAgIHwgQ3N0IDogKEZvcl9jc3QudCwgQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudCkgdFxuZW5kXG5cbm1vZHVsZSByZWMgU3RhdGUgOiBzaWdcbiAgdHlwZSAoJ3UsICdzKSB0ID1cbiAgICB7IG11dGFibGUgYXV0b21hdG9uX3N0YXRlIDogaW50XG4gICAgOyBraW5kIDogKCd1LCAncykgS2luZC50XG4gICAgOyBtdXRhYmxlIGRlcHRoIDogaW50ICgqKiBOdW1iZXIgb2Ygb3BlbmVkICN8IHdoZW4gcGFyc2luZyBhIGJsb2NrIGNvbW1lbnQgKilcbiAgICA7IG11dGFibGUgYmxvY2tfY29tbWVudF9kZXB0aCA6IGludFxuICAgICgqKiBTdGFjayBvZiBpZ25vcmluZyBkZXB0aHM7IHRoZSBjdXJyZW50IGRlcHRoIGlzIHB1c2hlZFxuICAgICAgICBlYWNoIHRpbWUgYSAjOyBjb21tZW50IGlzIGVudGVyZWQuICopXG4gICAgOyBtdXRhYmxlIGlnbm9yaW5nX3N0YWNrIDogaW50IGxpc3RcbiAgICAoKiogV2hlbiBwYXJzaW5nIGFuIGVzY2FwZSBzZXF1ZW5jZSBvZiB0aGUgZm9ybSBcIlxcXFxOTk5cIiBvciBcIlxcXFxYWFwiLCB0aGlzIGFjY3VtdWxhdGVzXG4gICAgICAgIHRoZSBjb21wdXRlZCBudW1iZXIgKilcbiAgICA7IG11dGFibGUgZXNjYXBlZF92YWx1ZSA6IGludCAoKiogQnVmZmVyIGZvciBhY2N1bXVsYXRpbmcgYXRvbXMgKilcbiAgICA7IGF0b21fYnVmZmVyIDogQnVmZmVyLnRcbiAgICA7IHVzZXJfc3RhdGUgOiAndVxuICAgIDsgbW9kZSA6ICgndSwgJ3MpIE1vZGUudFxuICAgIDsgbXV0YWJsZSBmdWxsX3NleHBzIDogaW50XG4gICAgOyBtdXRhYmxlIG9mZnNldCA6IGludCAoKiogZ2xvYmFsIG9mZnNldCAqKilcbiAgICA7IG11dGFibGUgbGluZV9udW1iZXIgOiBpbnRcbiAgICA7IG11dGFibGUgYm9sX29mZnNldCA6IGludCAoKiogb2Zmc2V0IG9mIGJlZ2lubmluZyBvZiBsaW5lICoqKVxuICAgIH1cbmVuZCA9XG4gIFN0YXRlXG5cbmFuZCBNb2RlIDogc2lnXG4gIHR5cGUgKCd1LCAncykgdCA9XG4gICAgfCBTaW5nbGVcbiAgICB8IE1hbnlcbiAgICB8IEVhZ2VyIG9mXG4gICAgICAgIHsgZ290X3NleHAgOiAoJ3UsICdzKSBTdGF0ZS50IC0+ICdzIC0+ICdzXG4gICAgICAgIDsgbXV0YWJsZSBub19zZXhwX2lzX2Vycm9yIDogYm9vbFxuICAgICAgICB9XG5lbmQgPVxuICBNb2RlXG5cbm1vZHVsZSB0eXBlIEF1dG9tYXRvbl9zdGF0ZSA9IHNpZ1xuICBtb2R1bGUgQ29udGV4dCA9IENvbnRleHRcbiAgbW9kdWxlIEZvcl9jc3QgPSBGb3JfY3N0XG4gIG1vZHVsZSBLaW5kID0gS2luZFxuICBtb2R1bGUgTW9kZSA9IE1vZGVcbiAgbW9kdWxlIFN0YXRlID0gU3RhdGVcblxuICB0eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBTdGF0ZS50XG5cbiAgdmFsIGNyZWF0ZVxuICAgIDogID9pbml0aWFsX3BvczpQb3NpdGlvbnMucG9zXG4gICAgLT4gKCd1LCAncykgTW9kZS50XG4gICAgLT4gKCd1LCAncykgS2luZC50XG4gICAgLT4gKCd1LCAncykgdFxuXG4gIHZhbCByZXNldCA6ID9wb3M6UG9zaXRpb25zLnBvcyAtPiBfIHQgLT4gdW5pdFxuICB2YWwgcG9zaXRpb25zIDogKFBvc2l0aW9ucy5CdWlsZGVyLnQsIF8pIHQgLT4gUG9zaXRpb25zLnRcbiAgdmFsIG1vZGUgOiAoJ3UsICdzKSB0IC0+ICgndSwgJ3MpIE1vZGUudFxuXG4gICgqKiBOdW1iZXIgb2YgY2hhcmFjdGVycyBmZWQgdG8gdGhlIHBhcnNlciAqKVxuICB2YWwgb2Zmc2V0IDogXyB0IC0+IGludFxuXG4gICgqKiBQb3NpdGlvbiBpbiB0aGUgdGV4dCAqKVxuICB2YWwgbGluZSA6IF8gdCAtPiBpbnRcblxuICB2YWwgY29sdW1uIDogXyB0IC0+IGludFxuXG4gICgqKiBXaGV0aGVyIHRoZXJlIGFyZSBzb21lIHVuY2xvc2VkIHBhcmVudGhlc2VzICopXG4gIHZhbCBoYXNfdW5jbG9zZWRfcGFyZW4gOiAoJ3UsICdzKSB0IC0+IGJvb2xcblxuICB2YWwgc2V0X2Vycm9yX3N0YXRlIDogXyB0IC0+IHVuaXRcblxuICAoKiovKiopXG5cbiAgKCpfIE9ubHkgZm9yIGNvbnZlcnRpbmcgZXJyb3JzIHRvIHRoZSBvbGQgcGFyc2VyIGVycm9ycyAqKVxuICB2YWwgYXRvbV9idWZmZXIgOiBfIHQgLT4gQnVmZmVyLnRcblxuICAoKl8gRm9yIGNvdmVyYXRlIHRlc3RzICopXG4gIHZhbCBhdXRvbWF0b25fc3RhdGUgOiAoJ3UsICdzKSB0IC0+IGludFxuICB2YWwgY29udGV4dCA6IF8gdCAtPiBDb250ZXh0LnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEF1dG9tYXRvbl9zdGF0ZV9pbnRmXG5cbnR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIFN0YXRlLnRcblxub3BlbiBTdGF0ZVxuXG5sZXQgaW5pdGlhbF91c2VyX3N0YXRlIDogdHlwZSB1IHMuICh1LCBzKSBLaW5kLnQgLT4gUG9zaXRpb25zLnBvcyAtPiB1ID1cbiAgZnVuIGtpbmQgaW5pdGlhbF9wb3MgLT5cbiAgbWF0Y2gga2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLmNyZWF0ZSB+aW5pdGlhbF9wb3MgKClcbiAgfCBTZXhwIC0+ICgpXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5jcmVhdGUgfmluaXRpYWxfcG9zICgpXG4gIHwgQ3N0IC0+XG4gICAgKCogW3Rva2VuX3N0YXJ0X3Bvc10gaXMgc2V0IHRvIGEgZHVtbXkgbG9jYXRpb24gaGVyZS4gSXQgaXMgcHJvcGVybHkgc2V0IHdoZW4gd2VcbiAgICAgICBzdGFydCB0byBjYXB0dXJlIGEgdG9rZW4gZnJvbSB0aGUgaW5wdXQgKilcbiAgICB7IHRva2VuX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgMTI4OyB0b2tlbl9zdGFydF9wb3MgPSBQb3NpdGlvbnMuYmVnaW5uaW5nX29mX2ZpbGUgfVxuOztcblxuKCokIFBhcnNleHBfY2luYXBzX2hlbHBlcnMuR2VuX2F1dG9tYXRvbl9zdGF0ZS5wcmludF9jb25zdGFudHMgKCkgKilcbmxldCBpbml0aWFsX3N0YXRlID0gMFxubGV0IGVycm9yX3N0YXRlID0gMVxuXG4oKiQqKVxuXG5sZXQgY3JlYXRlID8oaW5pdGlhbF9wb3MgPSBQb3NpdGlvbnMuYmVnaW5uaW5nX29mX2ZpbGUpIG1vZGUga2luZCA9XG4gIHsga2luZFxuICA7IGRlcHRoID0gMFxuICA7IGF1dG9tYXRvbl9zdGF0ZSA9IGluaXRpYWxfc3RhdGVcbiAgOyBibG9ja19jb21tZW50X2RlcHRoID0gMFxuICA7IGlnbm9yaW5nX3N0YWNrID0gW11cbiAgOyBlc2NhcGVkX3ZhbHVlID0gMFxuICA7IGF0b21fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAxMjhcbiAgOyB1c2VyX3N0YXRlID0gaW5pdGlhbF91c2VyX3N0YXRlIGtpbmQgaW5pdGlhbF9wb3NcbiAgOyBtb2RlXG4gIDsgZnVsbF9zZXhwcyA9IDBcbiAgOyBvZmZzZXQgPSBpbml0aWFsX3Bvcy5vZmZzZXRcbiAgOyBsaW5lX251bWJlciA9IGluaXRpYWxfcG9zLmxpbmVcbiAgOyBib2xfb2Zmc2V0ID0gaW5pdGlhbF9wb3Mub2Zmc2V0IC0gaW5pdGlhbF9wb3MuY29sXG4gIH1cbjs7XG5cbmxldCBtb2RlIHQgPSB0Lm1vZGVcbmxldCBwb3NpdGlvbnMgdCA9IFBvc2l0aW9ucy5CdWlsZGVyLmNvbnRlbnRzIHQudXNlcl9zdGF0ZVxubGV0IGF0b21fYnVmZmVyIHQgPSB0LmF0b21fYnVmZmVyXG5sZXQgb2Zmc2V0IHN0YXRlID0gc3RhdGUub2Zmc2V0XG5sZXQgbGluZSBzdGF0ZSA9IHN0YXRlLmxpbmVfbnVtYmVyXG5sZXQgY29sdW1uIHN0YXRlID0gc3RhdGUub2Zmc2V0IC0gc3RhdGUuYm9sX29mZnNldFxubGV0IHBvc2l0aW9uIHQgPSB7IFBvc2l0aW9ucy5jb2wgPSBjb2x1bW4gdDsgbGluZSA9IGxpbmUgdDsgb2Zmc2V0ID0gb2Zmc2V0IHQgfVxuXG5sZXQgcmVzZXRfdXNlcl9zdGF0ZSA6IHR5cGUgdSBzLiAodSwgcykgdCAtPiB1bml0ID1cbiAgZnVuIHQgLT5cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIucmVzZXQgdC51c2VyX3N0YXRlIChwb3NpdGlvbiB0KVxuICB8IFNleHAgLT4gKClcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLnJlc2V0IHQudXNlcl9zdGF0ZSAocG9zaXRpb24gdClcbiAgfCBDc3QgLT4gQnVmZmVyLmNsZWFyIHQudXNlcl9zdGF0ZS50b2tlbl9idWZmZXJcbjs7XG5cbmxldCByZXNldCA/KHBvcyA9IFBvc2l0aW9ucy5iZWdpbm5pbmdfb2ZfZmlsZSkgdCA9XG4gIHQuZGVwdGggPC0gMDtcbiAgdC5hdXRvbWF0b25fc3RhdGUgPC0gaW5pdGlhbF9zdGF0ZTtcbiAgdC5ibG9ja19jb21tZW50X2RlcHRoIDwtIDA7XG4gIHQuaWdub3Jpbmdfc3RhY2sgPC0gW107XG4gIHQuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICB0LmZ1bGxfc2V4cHMgPC0gMDtcbiAgdC5vZmZzZXQgPC0gcG9zLm9mZnNldDtcbiAgdC5saW5lX251bWJlciA8LSBwb3MubGluZTtcbiAgdC5ib2xfb2Zmc2V0IDwtIHBvcy5vZmZzZXQgLSBwb3MuY29sO1xuICByZXNldF91c2VyX3N0YXRlIHQ7XG4gIEJ1ZmZlci5jbGVhciB0LmF0b21fYnVmZmVyXG47O1xuXG5sZXQgY29udGV4dCBzdGF0ZSA6IENvbnRleHQudCA9XG4gIG1hdGNoIHN0YXRlLmlnbm9yaW5nX3N0YWNrIHdpdGhcbiAgfCBfIDo6IF8gLT4gU2V4cF9jb21tZW50XG4gIHwgW10gLT4gU2V4cFxuOztcblxubGV0IGhhc191bmNsb3NlZF9wYXJlbiBzdGF0ZSA9IHN0YXRlLmRlcHRoID4gMFxubGV0IHNldF9lcnJvcl9zdGF0ZSBzdGF0ZSA9IHN0YXRlLmF1dG9tYXRvbl9zdGF0ZSA8LSBlcnJvcl9zdGF0ZVxubGV0IGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA9IHN0YXRlLmF1dG9tYXRvbl9zdGF0ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBSZWFzb24gPSBzdHJ1Y3RcbiAgKCpfIFNvbWUgb2YgdGhlc2UgY29tZSBmcm9tIFtQYXJzZXhwX3N5bWJvbGljX2F1dG9tYXRvbi5QYXJzZV9lcnJvcl9yZWFzb25dLiAqKVxuICB0eXBlIHQgPVxuICAgICgqJCBQYXJzZXhwX2NpbmFwc19oZWxwZXJzLkdlbl9wYXJzZV9lcnJvci5wcmludF9jb25zdHJ1Y3RvcnMgKCkgKilcbiAgICB8IEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZVxuICAgIHwgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19kZWNfZXNjYXBlXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19oZXhfZXNjYXBlXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJhY3Rlcl9hZnRlcl9jclxuICAgIHwgVW50ZXJtaW5hdGVkX2Jsb2NrX2NvbW1lbnRcbiAgICB8IFVudGVybWluYXRlZF9xdW90ZWRfc3RyaW5nXG4gICAgKCokKilcbiAgICB8IENsb3NlZF9wYXJlbl93aXRob3V0X29wZW5lZFxuICAgIHwgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZVxuICAgIHwgTm9fc2V4cF9mb3VuZF9pbl9pbnB1dFxuICAgIHwgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cFxuICAgIHwgVG9vX21hbnlfc2V4cHNcbiAgICB8IFVuY2xvc2VkX3BhcmVuXG5lbmRcblxubW9kdWxlIHR5cGUgUGFyc2VfZXJyb3IgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuICBlbmRcbiAgW0BAb2NhbWwuZG9jIFwiQGlubGluZVwiXVxuXG4gIFtAQEBlbmRdXG5cbiAgdmFsIHBvc2l0aW9uIDogdCAtPiBQb3NpdGlvbnMucG9zXG4gIHZhbCBtZXNzYWdlIDogdCAtPiBzdHJpbmdcblxuICAoKiogUmVwb3J0IGFuIGVycm9yIGluIGEgc3R5bGUgc2ltaWxhciB0byBPQ2FtbCwgZm9yIGluc3RhbmNlOlxuXG4gICAgICBGaWxlIFwiYmxhaFwiLCBsaW5lIDQyLCBjaGFyYWN0ZXIgMTA6XG4gICAgICBFcnJvcjogcy1leHByZXNzaW9uIHBhcnNpbmcgZXJyb3I7XG4gICAgICB1bnRlcm1pbmF0ZWQgcXVvdGVkIHN0cmluZy5cbiAgKilcbiAgdmFsIHJlcG9ydCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gZmlsZW5hbWU6c3RyaW5nIC0+IHQgLT4gdW5pdFxuXG4gIGV4Y2VwdGlvbiBQYXJzZV9lcnJvciBvZiB0XG5cbiAgKCoqLyoqKVxuXG4gIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgbW9kdWxlIFJlYXNvbiA9IFJlYXNvblxuXG4gICAgKCoqIFRvIG1hdGNoIHRoZSBvbGQgYmVoYXZpb3IsIHRoZSBvbGQgcGFyc2VyIHNvbWV0aW1lcyByYWlzZWQgW0ZhaWx1cmVdIGFuZCBzb21ldGltZXNcbiAgICAgICAgcmFpc2VkIFtQYXJzZV9lcnJvcl0gKilcbiAgICB2YWwgb2xkX3BhcnNlcl9leG4gOiB0IC0+IFsgYFBhcnNlX2Vycm9yIHwgYEZhaWx1cmUgXVxuXG4gICAgdmFsIHJhaXNlIDogUmVhc29uLnQgLT4gUG9zaXRpb25zLnBvcyAtPiBhdF9lb2Y6Ym9vbCAtPiBhdG9tX2J1ZmZlcjpCdWZmZXIudCAtPiAnYVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFBhcnNlX2Vycm9yX2ludGZcblxudHlwZSB0ID1cbiAgeyBwb3NpdGlvbiA6IFBvc2l0aW9ucy5wb3NcbiAgOyBtZXNzYWdlIDogc3RyaW5nXG4gIDsgb2xkX3BhcnNlcl9leG4gOiBbIGBQYXJzZV9lcnJvciB8IGBGYWlsdXJlIF1cbiAgfVxuXG5sZXQgc2V4cF9vZl90IHsgcG9zaXRpb247IG1lc3NhZ2U7IG9sZF9wYXJzZXJfZXhuID0gXyB9IDogU2V4cC50ID1cbiAgTGlzdFxuICAgIFsgTGlzdCBbIEF0b20gXCJwb3NpdGlvblwiOyBQb3NpdGlvbnMuc2V4cF9vZl9wb3MgcG9zaXRpb24gXVxuICAgIDsgTGlzdCBbIEF0b20gXCJtZXNzYWdlXCI7IHNleHBfb2Zfc3RyaW5nIG1lc3NhZ2UgXVxuICAgIF1cbjs7XG5cbmxldCBwb3NpdGlvbiB0ID0gdC5wb3NpdGlvblxubGV0IG1lc3NhZ2UgdCA9IHQubWVzc2FnZVxubGV0IG9sZF9wYXJzZXJfZXhuIHQgPSB0Lm9sZF9wYXJzZXJfZXhuXG5cbmxldCByZXBvcnQgcHBmIH5maWxlbmFtZSB0ID1cbiAgbGV0IHBvcyA9IHBvc2l0aW9uIHQgaW5cbiAgbGV0IG1zZyA9IG1lc3NhZ2UgdCBpblxuICBGb3JtYXQuZnByaW50ZlxuICAgIHBwZlxuICAgIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXIgJWQ6XFxuRXJyb3I6IHMtZXhwcmVzc2lvbiBwYXJzaW5nIGVycm9yO1xcbiVzXFxuXCJcbiAgICBmaWxlbmFtZVxuICAgIHBvcy5saW5lXG4gICAgcG9zLmNvbFxuICAgIG1zZ1xuOztcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yIG9mIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBQYXJzZV9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBQYXJzZV9lcnJvciBhcmcwX18wMDFfIC0+XG4gICAgICBsZXQgcmVzMF9fMDAyXyA9IHNleHBfb2ZfdCBhcmcwX18wMDFfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwYXJzZV9lcnJvci5tbC5QYXJzZV9lcnJvclwiOyByZXMwX18wMDJfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxubGV0IHJhaXNlIChyZWFzb24gOiBSZWFzb24udCkgcG9zaXRpb24gfmF0X2VvZiB+YXRvbV9idWZmZXIgPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgKCogVGhlc2UgbWVzc2FnZXMgd2hlcmUgY2hvb3NlbiBzdWNoIHRoYXQgd2UgY2FuIGJ1aWxkIHRoZSB2YXJpb3VzIFNleHBsaWIgcGFyc2luZ1xuICAgICAgIGZ1bmN0aW9ucyBvbiB0b3Agb2YgUGFyc2V4cCBhbmQga2VlcCB0aGUgc2FtZSBleGNlcHRpb25zLlxuXG4gICAgICAgQXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGlzLCBhIHNpbXBsZSBsYXllciBvbiB0b3Agb2YgcGFyc2V4cCB0byBpbXBsZW1lbnQgdGhlXG4gICAgICAgc2V4cGxpYiBBUEkgaXMgcGFzc2luZyBhbGwgdGhlIHNleHBsaWIgdGVzdHMuXG5cbiAgICAgICBOb3RlIHRoYXQgcGFyc2V4cCBtYXRjaGVzIHRoZSBzZW1hbnRpYyBvZiBTZXhwLnBhcnNlIHdoaWNoIGlzIHNsaWdodGx5XG4gICAgICAgZGlmZmVyZW50IGZyb20gdGhlIG9jYW1sbGV4L29jYW1seWFjYyBiYXNlZCBwYXJzZXIgb2YgU2V4cGxpYi4gVGhlIGxhdHRlciBvbmVcbiAgICAgICBpcyBsZXNzIHRlc3RlZCBhbmQgYXNzdW1lZCB0byBiZSBsZXNzIHVzZWQuICopXG4gICAgbWF0Y2ggcmVhc29uIHdpdGhcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2hleF9lc2NhcGUgLT4gXCJ1bnRlcm1pbmF0ZWQgaGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlXCJcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2RlY19lc2NhcGUgLT4gXCJ1bnRlcm1pbmF0ZWQgZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2VcIlxuICAgIHwgVW50ZXJtaW5hdGVkX3F1b3RlZF9zdHJpbmcgLT4gXCJ1bnRlcm1pbmF0ZWQgcXVvdGVkIHN0cmluZ1wiXG4gICAgfCBVbnRlcm1pbmF0ZWRfYmxvY2tfY29tbWVudCAtPiBcInVudGVybWluYXRlZCBibG9jayBjb21tZW50XCJcbiAgICB8IEVzY2FwZV9zZXF1ZW5jZV9vdXRfb2ZfcmFuZ2UgLT4gXCJlc2NhcGUgc2VxdWVuY2UgaW4gcXVvdGVkIHN0cmluZyBvdXQgb2YgcmFuZ2VcIlxuICAgIHwgVW5jbG9zZWRfcGFyZW4gLT4gXCJ1bmNsb3NlZCBwYXJlbnRoZXNlcyBhdCBlbmQgb2YgaW5wdXRcIlxuICAgIHwgVG9vX21hbnlfc2V4cHMgLT4gXCJzLWV4cHJlc3Npb24gZm9sbG93ZWQgYnkgZGF0YVwiXG4gICAgfCBDbG9zZWRfcGFyZW5fd2l0aG91dF9vcGVuZWQgLT4gXCJ1bmV4cGVjdGVkIGNoYXJhY3RlcjogJyknXCJcbiAgICB8IENvbW1lbnRfdG9rZW5faW5fdW5xdW90ZWRfYXRvbSAtPlxuICAgICAgaWYgU3RyaW5nLmVxdWFsIChCdWZmZXIuY29udGVudHMgYXRvbV9idWZmZXIpIFwifFwiXG4gICAgICB0aGVuIFwiaWxsZWdhbCBlbmQgb2YgY29tbWVudFwiXG4gICAgICBlbHNlIFwiY29tbWVudCB0b2tlbnMgaW4gdW5xdW90ZWQgYXRvbVwiXG4gICAgfCBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwIC0+IFwidW50ZXJtaW5hdGVkIHNleHAgY29tbWVudFwiXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJhY3Rlcl9hZnRlcl9jciAtPlxuICAgICAgaWYgYXRfZW9mXG4gICAgICB0aGVuIFwidW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgYWZ0ZXIgY2FycmlhZ2UgcmV0dXJuXCJcbiAgICAgIGVsc2UgXCJ1bmV4cGVjdGVkIGNoYXJhY3RlciBhZnRlciBjYXJyaWFnZSByZXR1cm5cIlxuICAgIHwgTm9fc2V4cF9mb3VuZF9pbl9pbnB1dCAtPiBcIm5vIHMtZXhwcmVzc2lvbiBmb3VuZCBpbiBpbnB1dFwiXG4gICAgfCBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGUgLT4gZmFpbHdpdGggXCJQYXJzZXhwLlBhcnNlcl9hdXRvbWF0b246IHBhcnNlciBpcyBkZWFkXCJcbiAgaW5cbiAgbGV0IG9sZF9wYXJzZXJfZXhuID1cbiAgICBtYXRjaCByZWFzb24sIGF0X2VvZiB3aXRoXG4gICAgfCBUb29fbWFueV9zZXhwcywgXyB8IF8sIHRydWUgLT4gYEZhaWx1cmVcbiAgICB8IENvbW1lbnRfdG9rZW5faW5fdW5xdW90ZWRfYXRvbSwgX1xuICAgICAgd2hlbiBTdHJpbmcuZXF1YWwgKEJ1ZmZlci5jb250ZW50cyBhdG9tX2J1ZmZlcikgXCJ8XCIgLT4gYEZhaWx1cmVcbiAgICB8IF8gLT4gYFBhcnNlX2Vycm9yXG4gIGluXG4gIHJhaXNlIChQYXJzZV9lcnJvciB7IHBvc2l0aW9uOyBtZXNzYWdlOyBvbGRfcGFyc2VyX2V4biB9KVxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlYXNvbiA9IFJlYXNvblxuXG4gIGxldCBvbGRfcGFyc2VyX2V4biA9IG9sZF9wYXJzZXJfZXhuXG4gIGxldCByYWlzZSA9IHJhaXNlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBBdXRvbWF0b25fc3RhdGVcbm9wZW4gU3RhdGVcblxubGV0IHJhaXNlX2Vycm9yIDogdHlwZSBhIGIuIChhLCBiKSBBdXRvbWF0b25fc3RhdGUudCAtPiBfID1cbiAgZnVuIHN0YXRlIH5hdF9lb2YgcmVhc29uIC0+XG4gIHNldF9lcnJvcl9zdGF0ZSBzdGF0ZTtcbiAgUGFyc2VfZXJyb3IuUHJpdmF0ZS5yYWlzZVxuICAgIHJlYXNvblxuICAgIHsgbGluZSA9IHN0YXRlLmxpbmVfbnVtYmVyXG4gICAgOyBjb2wgPSBzdGF0ZS5vZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0XG4gICAgOyBvZmZzZXQgPSBzdGF0ZS5vZmZzZXRcbiAgICB9XG4gICAgfmF0X2VvZlxuICAgIH5hdG9tX2J1ZmZlcjpzdGF0ZS5hdG9tX2J1ZmZlclxuOztcblxudHlwZSBub25yZWMgY29udGV4dCA9IEF1dG9tYXRvbl9zdGF0ZS5Db250ZXh0LnQgPVxuICB8IFNleHBfY29tbWVudFxuICB8IFNleHBcblxubGV0IGNvbnRleHQgPSBBdXRvbWF0b25fc3RhdGUuY29udGV4dFxuXG50eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+ICdzIC0+ICdzXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB7IGYgOiAndSAncy4gKCd1LCAncykgdCB9IFtAQHVuYm94ZWRdXG5lbmRcblxubW9kdWxlIEVwc2lsb24gPSBzdHJ1Y3RcbiAgdHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgQXV0b21hdG9uX3N0YXRlLnQgLT4gJ3MgLT4gJ3NcblxuICBtb2R1bGUgUG9seSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB7IGYgOiAndSAncy4gKCd1LCAncykgdCB9IFtAQHVuYm94ZWRdXG4gIGVuZFxuZW5kXG5cbmxldCBjdXJyZW50X3BvcyA/KGRlbHRhID0gMCkgc3RhdGUgOiBQb3NpdGlvbnMucG9zID1cbiAgbGV0IG9mZnNldCA9IHN0YXRlLm9mZnNldCArIGRlbHRhIGluXG4gIHsgbGluZSA9IHN0YXRlLmxpbmVfbnVtYmVyOyBjb2wgPSBvZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0OyBvZmZzZXQgfVxuOztcblxubGV0IHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgeCA9IHN0YXRlLmF1dG9tYXRvbl9zdGF0ZSA8LSB4XG5sZXQgYWR2YW5jZSBzdGF0ZSA9IHN0YXRlLm9mZnNldCA8LSBzdGF0ZS5vZmZzZXQgKyAxXG5cbmxldCBhZHZhbmNlX2VvbCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gdW5pdCA9XG4gIGZ1biBzdGF0ZSAtPlxuICBsZXQgbmV3bGluZV9vZmZzZXQgPSBzdGF0ZS5vZmZzZXQgaW5cbiAgc3RhdGUub2Zmc2V0IDwtIG5ld2xpbmVfb2Zmc2V0ICsgMTtcbiAgc3RhdGUuYm9sX29mZnNldCA8LSBzdGF0ZS5vZmZzZXQ7XG4gIHN0YXRlLmxpbmVfbnVtYmVyIDwtIHN0YXRlLmxpbmVfbnVtYmVyICsgMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLmFkZF9uZXdsaW5lIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDpuZXdsaW5lX29mZnNldFxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICBQb3NpdGlvbnMuQnVpbGRlci5hZGRfbmV3bGluZSBzdGF0ZS51c2VyX3N0YXRlIH5vZmZzZXQ6bmV3bGluZV9vZmZzZXRcbiAgfCBfIC0+ICgpXG47O1xuXG5sZXQgYmxvY2tfY29tbWVudF9kZXB0aCBzdGF0ZSA9IHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGhcblxubGV0IGFkZF90b2tlbl9jaGFyIDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgQ3N0IC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGNoYXI7XG4gICAgc3RhY2tcbiAgfCBfIC0+IHN0YWNrXG47O1xuXG5sZXQgYWRkX2F0b21fY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGM7XG4gIHN0YWNrXG47O1xuXG5sZXQgYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciBjO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgaXNfaWdub3Jpbmcgc3RhdGUgPVxuICBtYXRjaCBjb250ZXh0IHN0YXRlIHdpdGhcbiAgfCBTZXhwIC0+IGZhbHNlXG4gIHwgU2V4cF9jb21tZW50IC0+IHRydWVcbjs7XG5cbmxldCBpc19ub3RfaWdub3Jpbmcgc3RhdGUgPSBub3QgKGlzX2lnbm9yaW5nIHN0YXRlKVxuXG5sZXQgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZSA9XG4gIGxldCBpc19zaW5nbGUgPVxuICAgIG1hdGNoIHN0YXRlLm1vZGUgd2l0aFxuICAgIHwgU2luZ2xlIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgaWYgaXNfc2luZ2xlICYmIHN0YXRlLmZ1bGxfc2V4cHMgPiAwICYmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgVG9vX21hbnlfc2V4cHNcbjs7XG5cbmxldCBhZGRfcG9zIHN0YXRlIH5kZWx0YSA9XG4gIFBvc2l0aW9ucy5CdWlsZGVyLmFkZCBzdGF0ZS51c2VyX3N0YXRlIH5vZmZzZXQ6KHN0YXRlLm9mZnNldCArIGRlbHRhKVxuOztcblxubGV0IGFkZF9maXJzdF9jaGFyIDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGNoYXI7XG4gICgqIEZvciBub24tcXVvdGVkIGF0b21zLCB3ZSBzYXZlIGJvdGggcG9zaXRpb25zIGF0IHRoZSBlbmQuIFdlIGNhbiBhbHdheXMgZGV0ZXJtaW5lIHRoZVxuICAgICBzdGFydCBwb3NpdGlvbiBmcm9tIHRoZSBlbmQgcG9zaXRpb24gYW5kIHRoZSBhdG9tIGxlbmd0aCBmb3Igbm9uLXF1b3RlZCBhdG9tcy5cblxuICAgICBEb2luZyBpdCB0aGlzIHdheSBhbGxvd3MgdXMgdG8gZGV0ZWN0IHNpbmdsZSBjaGFyYWNhdGVyIGF0b21zIGZvciB3aGljaCB3ZSBuZWVkIHRvXG4gICAgIHNhdmUgdGhlIHBvc2l0aW9uIHR3aWNlLiAqKVxuICBzdGFja1xuOztcblxubGV0IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyICcjJztcbiAgc3RhY2tcbjs7XG5cbmxldCBzdGFydF9xdW90ZWRfc3RyaW5nIDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGU7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICBzdGFja1xuICB8IENzdCAtPlxuICAgIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zIDwtIGN1cnJlbnRfcG9zIHN0YXRlO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciAnXCInO1xuICAgIHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuOztcblxubGV0IGFkZF9lc2NhcGVkIHN0YXRlIGMgc3RhY2sgPVxuICBsZXQgYycgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ24nIC0+ICdcXG4nXG4gICAgfCAncicgLT4gJ1xccidcbiAgICB8ICdiJyAtPiAnXFxiJ1xuICAgIHwgJ3QnIC0+ICdcXHQnXG4gICAgfCAnXFxcXCcgfCAnXFwnJyB8ICdcIicgLT4gY1xuICAgIHwgXyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyICdcXFxcJztcbiAgICAgIGNcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGMnO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgZXBzX2FkZF9lc2NhcGVkX2NyIHN0YXRlIHN0YWNrID1cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyICdcXHInO1xuICBzdGFja1xuOztcblxubGV0IGRlY192YWwgYyA9IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuXG5sZXQgaGV4X3ZhbCBjID1cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCdcbiAgfCAnYScgLi4gJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gIHwgXyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnQScgKyAxMFxuOztcblxubGV0IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgKiAxMCkgKyBkZWNfdmFsIGM7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBhZGRfbGFzdF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIGxldCB2YWx1ZSA9IChzdGF0ZS5lc2NhcGVkX3ZhbHVlICogMTApICsgZGVjX3ZhbCBjIGluXG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgaWYgdmFsdWUgPiAyNTUgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIEVzY2FwZV9zZXF1ZW5jZV9vdXRfb2ZfcmFuZ2U7XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAoQ2hhci5jaHIgdmFsdWUpO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIGxldCB2YWx1ZSA9IChzdGF0ZS5lc2NhcGVkX3ZhbHVlICogMTApICsgZGVjX3ZhbCBjIGluXG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgaWYgdmFsdWUgPiAyNTUgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIEVzY2FwZV9zZXF1ZW5jZV9vdXRfb2ZfcmFuZ2U7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBhZGRfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIChzdGF0ZS5lc2NhcGVkX3ZhbHVlIGxzbCA0KSBsb3IgaGV4X3ZhbCBjO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgYWRkX2xhc3RfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBsZXQgdmFsdWUgPSAoc3RhdGUuZXNjYXBlZF92YWx1ZSBsc2wgNCkgbG9yIGhleF92YWwgYyBpblxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAoQ2hhci5jaHIgdmFsdWUpO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgb3BlbmluZyA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgc3RhdGUuZGVwdGggPC0gc3RhdGUuZGVwdGggKyAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgIHN0YWNrXG4gIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBPcGVuIHN0YWNrIGVsc2Ugc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gICAgdGhlbiAoXG4gICAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgT3BlbiBzdGFjaylcbiAgICBlbHNlIHN0YWNrXG4gIHwgQ3N0IC0+IE9wZW4gKGN1cnJlbnRfcG9zIHN0YXRlLCBzdGFjaylcbjs7XG5cbmxldCBkb19yZXNldF9wb3NpdGlvbnMgc3RhdGUgPVxuICBQb3NpdGlvbnMuQnVpbGRlci5yZXNldFxuICAgIHN0YXRlLnVzZXJfc3RhdGVcbiAgICB7IGxpbmUgPSBzdGF0ZS5saW5lX251bWJlclxuICAgIDsgY29sID0gc3RhdGUub2Zmc2V0IC0gc3RhdGUuYm9sX29mZnNldFxuICAgIDsgb2Zmc2V0ID0gc3RhdGUub2Zmc2V0XG4gICAgfVxuOztcblxubGV0IHJlc2V0X3Bvc2l0aW9ucyA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gdW5pdCA9XG4gIGZ1biBzdGF0ZSAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gZG9fcmVzZXRfcG9zaXRpb25zIHN0YXRlXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBkb19yZXNldF9wb3NpdGlvbnMgc3RhdGVcbiAgfCBTZXhwIC0+ICgpXG4gIHwgQ3N0IC0+ICgpXG47O1xuXG5sZXQgdG9wbGV2ZWxfc2V4cF9vcl9jb21tZW50X2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YSA9XG4gIG1hdGNoIHN0YXRlLm1vZGUgd2l0aFxuICB8IFNpbmdsZSB8IE1hbnkgLT4gc3RhY2tcbiAgfCBFYWdlciB7IGdvdF9zZXhwID0gZjsgXyB9IC0+XG4gICAgKCogTW9kaWZ5IHRoZSBvZmZzZXQgc28gdGhhdCBbZl0gZ2V0IGEgc3RhdGUgcG9pbnRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgY3VycmVudFxuICAgICAgIHMtZXhwcmVzc2lvbiAqKVxuICAgIGxldCBzYXZlZF9vZmZzZXQgPSBzdGF0ZS5vZmZzZXQgaW5cbiAgICBzdGF0ZS5vZmZzZXQgPC0gc3RhdGUub2Zmc2V0ICsgZGVsdGE7XG4gICAgbGV0IHNhdmVkX2Z1bGxfc2V4cHMgPSBzdGF0ZS5mdWxsX3NleHBzIGluXG4gICAgKG1hdGNoIGYgc3RhdGUgc3RhY2sgd2l0aFxuICAgICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICAgc2V0X2Vycm9yX3N0YXRlIHN0YXRlO1xuICAgICAgIHJhaXNlIGVcbiAgICAgfCBzdGFjayAtPlxuICAgICAgICgqIFRoaXMgYXNzZXJ0IGlzIG5vdCBhIGZ1bGwgcHJvdGVjdGlvbiBhZ2FpbnN0IHRoZSB1c2VyIG11dGF0aW5nIHRoZSBzdGF0ZSBidXRcbiAgICAgICAgICBpdCBzaG91bGQgY2F0Y2ggbW9zdCBjYXNlcy4gKilcbiAgICAgICBhc3NlcnQgKHN0YXRlLm9mZnNldCA9IHNhdmVkX29mZnNldCArIGRlbHRhICYmIHN0YXRlLmZ1bGxfc2V4cHMgPSBzYXZlZF9mdWxsX3NleHBzKTtcbiAgICAgICBzdGF0ZS5vZmZzZXQgPC0gc2F2ZWRfb2Zmc2V0O1xuICAgICAgIHJlc2V0X3Bvc2l0aW9ucyBzdGF0ZTtcbiAgICAgICBzdGFjaylcbjs7XG5cbmxldCBpc190b3BfbGV2ZWwgc3RhdGUgPSBpc19ub3RfaWdub3Jpbmcgc3RhdGUgJiYgc3RhdGUuZGVwdGggPSAwXG5cbmxldCBjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCBzdGF0ZSBzdGFjayB+ZGVsdGEgPVxuICBpZiBpc190b3BfbGV2ZWwgc3RhdGUgdGhlbiB0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCBtYXliZV9wb3BfaWdub3Jpbmdfc3RhY2sgc3RhdGUgPVxuICBtYXRjaCBzdGF0ZS5pZ25vcmluZ19zdGFjayB3aXRoXG4gIHwgaW5uZXJfY29tbWVudF9kZXB0aCA6OiBfdGwgd2hlbiBpbm5lcl9jb21tZW50X2RlcHRoID4gc3RhdGUuZGVwdGggLT5cbiAgICByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIFNleHBfY29tbWVudF93aXRob3V0X3NleHBcbiAgfCBpbm5lcl9jb21tZW50X2RlcHRoIDo6IHRsIHdoZW4gaW5uZXJfY29tbWVudF9kZXB0aCA9IHN0YXRlLmRlcHRoIC0+XG4gICAgc3RhdGUuaWdub3Jpbmdfc3RhY2sgPC0gdGw7XG4gICAgdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBzZXhwX2FkZGVkIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBzIC0+IGRlbHRhOmludCAtPiBzID1cbiAgZnVuIHN0YXRlIHN0YWNrIH5kZWx0YSAtPlxuICBsZXQgaXNfY29tbWVudCA9IG1heWJlX3BvcF9pZ25vcmluZ19zdGFjayBzdGF0ZSBpblxuICBpZiBpc190b3BfbGV2ZWwgc3RhdGVcbiAgdGhlbiAoXG4gICAgaWYgbm90IGlzX2NvbW1lbnQgdGhlbiBzdGF0ZS5mdWxsX3NleHBzIDwtIHN0YXRlLmZ1bGxfc2V4cHMgKyAxO1xuICAgIGlmIChub3QgaXNfY29tbWVudClcbiAgICAgICB8fFxuICAgICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgICAgIHwgQ3N0IC0+IHRydWVcbiAgICAgICB8IF8gLT4gZmFsc2VcbiAgICB0aGVuIHRvcGxldmVsX3NleHBfb3JfY29tbWVudF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGFcbiAgICBlbHNlIHN0YWNrKVxuICBlbHNlIHN0YWNrXG47O1xuXG5sZXQgcmVjIG1ha2VfbGlzdCBhY2MgOiBBdXRvbWF0b25fc3RhY2sudCAtPiBBdXRvbWF0b25fc3RhY2sudCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgT3BlbiBzdGFjayAtPiBTZXhwIChMaXN0IGFjYywgc3RhY2spXG4gIHwgU2V4cCAoc2V4cCwgc3RhY2spIC0+IG1ha2VfbGlzdCAoc2V4cCA6OiBhY2MpIHN0YWNrXG47O1xuXG5sZXQgYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IGNvbW1lbnQgKHN0YWNrIDogQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudClcbiAgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50XG4gID1cbiAgbWF0Y2ggc3RhY2sgd2l0aFxuICB8IEluX3NleHBfY29tbWVudCByIC0+XG4gICAgSW5fc2V4cF9jb21tZW50IHsgciB3aXRoIHJldl9jb21tZW50cyA9IGNvbW1lbnQgOjogci5yZXZfY29tbWVudHMgfVxuICB8IF8gLT4gVF9vcl9jb21tZW50IChDb21tZW50IGNvbW1lbnQsIHN0YWNrKVxuOztcblxubGV0IGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIDogQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudCAtPiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50XG4gID0gZnVuY3Rpb25cbiAgICB8IEluX3NleHBfY29tbWVudCB7IGhhc2hfc2VtaV9wb3M7IHJldl9jb21tZW50czsgc3RhY2sgfSAtPlxuICAgICAgbGV0IGNvbW1lbnQgOiBDc3QuY29tbWVudCA9XG4gICAgICAgIFNleHBfY29tbWVudCB7IGhhc2hfc2VtaV9wb3M7IGNvbW1lbnRzID0gTGlzdC5yZXYgcmV2X2NvbW1lbnRzOyBzZXhwIH1cbiAgICAgIGluXG4gICAgICBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCBzdGFja1xuICAgIHwgc3RhY2sgLT4gVF9vcl9jb21tZW50IChTZXhwIHNleHAsIHN0YWNrKVxuOztcblxubGV0IHJlYyBtYWtlX2xpc3RfY3N0IGVuZF9wb3MgYWNjIDogQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudCAtPiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50XG4gID0gZnVuY3Rpb25cbiAgICB8IFRfb3JfY29tbWVudCAodCwgc3RhY2spIC0+IG1ha2VfbGlzdF9jc3QgZW5kX3BvcyAodCA6OiBhY2MpIHN0YWNrXG4gICAgfCBPcGVuIChzdGFydF9wb3MsIHN0YWNrKSAtPlxuICAgICAgbGV0IHNleHAgOiBDc3QudCA9IExpc3QgeyBsb2MgPSB7IHN0YXJ0X3BvczsgZW5kX3BvcyB9OyBlbGVtZW50cyA9IGFjYyB9IGluXG4gICAgICBhZGRfc2V4cF90b19zdGFja19jc3Qgc2V4cCBzdGFja1xuICAgIHwgRW1wdHkgfCBJbl9zZXhwX2NvbW1lbnQgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbmxldCBjbG9zaW5nIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBpZiBzdGF0ZS5kZXB0aCA+IDBcbiAgdGhlbiAoXG4gICAgbGV0IHN0YWNrIDogcyA9XG4gICAgICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgICAgIHwgUG9zaXRpb25zIC0+XG4gICAgICAgICgqIE5vdGUgd2Ugc3RvcmUgZW5kIHBvc2l0aW9ucyBhcyBpbmNsdXNpdmUgaW4gW1Bvc2l0aW9ucy50XSwgc28gd2UgdXNlIFtkZWx0YTowXSxcbiAgICAgICAgICAgd2hpbGUgaW4gdGhlIFtDc3RdIGNhc2Ugd2Ugc2F2ZSBkaXJlY3RseSB0aGUgZmluYWwgcmFuZ2VzLCBzbyB3ZSB1c2VcbiAgICAgICAgICAgW2RlbHRhOjFdLiAqKVxuICAgICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgICBzdGFja1xuICAgICAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIG1ha2VfbGlzdCBbXSBzdGFjayBlbHNlIHN0YWNrXG4gICAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICAgICAgbWFrZV9saXN0IFtdIHN0YWNrKVxuICAgICAgICBlbHNlIHN0YWNrXG4gICAgICB8IENzdCAtPiBtYWtlX2xpc3RfY3N0IChjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6MSkgW10gc3RhY2tcbiAgICBpblxuICAgIHN0YXRlLmRlcHRoIDwtIHN0YXRlLmRlcHRoIC0gMTtcbiAgICBzZXhwX2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YToxKVxuICBlbHNlIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgQ2xvc2VkX3BhcmVuX3dpdGhvdXRfb3BlbmVkXG47O1xuXG5sZXQgbWFrZV9sb2MgPyhkZWx0YSA9IDApIChzdGF0ZSA6IChBdXRvbWF0b25fc3RhdGUuRm9yX2NzdC50LCBfKSBBdXRvbWF0b25fc3RhdGUudClcbiAgOiBQb3NpdGlvbnMucmFuZ2VcbiAgPVxuICB7IHN0YXJ0X3BvcyA9IHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zOyBlbmRfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhIH1cbjs7XG5cbigqIFRoaXMgaXMgYWx3YXlzIGNhbGxlZCBvbiB0aGUgcG9zaXRpb24gZXhhY3RseSBmb2xsb3dpbmcgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIGFcbiAgIG5vbi1xdW90ZWQgYXRvbSAqKVxubGV0IGFkZF9ub25fcXVvdGVkX2F0b21fcG9zIHN0YXRlIH5hdG9tID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggYXRvbSBpblxuICBpZiBsZW4gPSAxXG4gIHRoZW4gUG9zaXRpb25zLkJ1aWxkZXIuYWRkX3R3aWNlIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDooc3RhdGUub2Zmc2V0IC0gMSlcbiAgZWxzZSAoXG4gICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6KC1sZW4pO1xuICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOigtMSkpXG47O1xuXG5sZXQgZXBzX3B1c2hfYXRvbSA6IHR5cGUgdSBzLiAodSwgcykgRXBzaWxvbi50ID1cbiAgZnVuIHN0YXRlIHN0YWNrIC0+XG4gIGxldCBzdHIgPSBCdWZmZXIuY29udGVudHMgc3RhdGUuYXRvbV9idWZmZXIgaW5cbiAgQnVmZmVyLmNsZWFyIHN0YXRlLmF0b21fYnVmZmVyO1xuICBsZXQgc3RhY2sgOiBzID1cbiAgICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgICB8IFBvc2l0aW9ucyAtPlxuICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX25vbl9xdW90ZWRfYXRvbV9wb3Mgc3RhdGUgfmF0b206c3RyO1xuICAgICAgc3RhY2tcbiAgICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSBlbHNlIHN0YWNrXG4gICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyBzdGF0ZSB+YXRvbTpzdHI7XG4gICAgICAgIFNleHAgKEF0b20gc3RyLCBzdGFjaykpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgfCBDc3QgLT5cbiAgICAgIGxldCBsb2MgOiBQb3NpdGlvbnMucmFuZ2UgPVxuICAgICAgICB7IHN0YXJ0X3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTooLVN0cmluZy5sZW5ndGggc3RyKVxuICAgICAgICA7IGVuZF9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6MFxuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IHNleHAgOiBDc3QudCA9IEF0b20geyBsb2M7IGF0b20gPSBzdHI7IHVuZXNjYXBlZCA9IFNvbWUgc3RyIH0gaW5cbiAgICAgIGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIHN0YWNrXG4gIGluXG4gIHNleHBfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhOjBcbjs7XG5cbmxldCBwdXNoX3F1b3RlZF9hdG9tIDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGxldCBzdHIgPSBCdWZmZXIuY29udGVudHMgc3RhdGUuYXRvbV9idWZmZXIgaW5cbiAgQnVmZmVyLmNsZWFyIHN0YXRlLmF0b21fYnVmZmVyO1xuICBsZXQgc3RhY2sgOiBzID1cbiAgICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgICB8IFBvc2l0aW9ucyAtPlxuICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgIHN0YWNrXG4gICAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIFNleHAgKEF0b20gc3RyLCBzdGFjaykgZWxzZSBzdGFja1xuICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgICAgU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICB8IENzdCAtPlxuICAgICAgbGV0IGJ1ZiA9IHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGluXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdcIic7XG4gICAgICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICBsZXQgc2V4cCA6IENzdC50ID1cbiAgICAgICAgQXRvbSB7IGxvYyA9IG1ha2VfbG9jIHN0YXRlIH5kZWx0YToxOyBhdG9tID0gc3RyOyB1bmVzY2FwZWQgPSBTb21lIHMgfVxuICAgICAgaW5cbiAgICAgIGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIHN0YWNrXG4gIGluXG4gIHNleHBfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhOjFcbjs7XG5cbmxldCBzdGFydF9zZXhwX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgc3RhdGUuaWdub3Jpbmdfc3RhY2sgPC0gc3RhdGUuZGVwdGggOjogc3RhdGUuaWdub3Jpbmdfc3RhY2s7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IENzdCAtPlxuICAgIEluX3NleHBfY29tbWVudFxuICAgICAgeyBoYXNoX3NlbWlfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOigtMSk7IHJldl9jb21tZW50cyA9IFtdOyBzdGFjayB9XG4gIHwgXyAtPiBzdGFja1xuOztcblxubGV0IHN0YXJ0X2Jsb2NrX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA8LSBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoICsgMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBpZiBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoID0gMVxuICAgIHRoZW4gKFxuICAgICAgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3MgPC0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOigtMSk7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgJyMnKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgY2hhcjtcbiAgICBzdGFja1xuOztcblxubGV0IGVuZF9ibG9ja19jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPC0gc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCAtIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBzdGFja1xuICB8IFNleHAgLT4gc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgbGV0IGJ1ZiA9IHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGluXG4gICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjaGFyO1xuICAgIGlmIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPSAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICBsZXQgY29tbWVudCA6IENzdC5jb21tZW50ID1cbiAgICAgICAgUGxhaW5fY29tbWVudCB7IGxvYyA9IG1ha2VfbG9jIHN0YXRlIH5kZWx0YToxOyBjb21tZW50ID0gcyB9XG4gICAgICBpblxuICAgICAgbGV0IHN0YWNrID0gYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IGNvbW1lbnQgc3RhY2sgaW5cbiAgICAgIGNvbW1lbnRfYWRkZWRfYXNzdW1pbmdfY3N0IHN0YXRlIHN0YWNrIH5kZWx0YToxKVxuICAgIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCBzdGFydF9saW5lX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBDc3QgLT5cbiAgICBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvcyA8LSBjdXJyZW50X3BvcyBzdGF0ZTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgY2hhcjtcbiAgICBzdGFja1xuICB8IF8gLT4gc3RhY2tcbjs7XG5cbmxldCBlbmRfbGluZV9jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBsZXQgYnVmID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgaW5cbiAgICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgIGxldCBjb21tZW50IDogQ3N0LmNvbW1lbnQgPSBQbGFpbl9jb21tZW50IHsgbG9jID0gbWFrZV9sb2Mgc3RhdGU7IGNvbW1lbnQgPSBzIH0gaW5cbiAgICBsZXQgc3RhY2sgPSBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCBzdGFjayBpblxuICAgIGNvbW1lbnRfYWRkZWRfYXNzdW1pbmdfY3N0IHN0YXRlIHN0YWNrIH5kZWx0YTowXG47O1xuXG5sZXQgZXBzX2VvaV9jaGVjayA6IHR5cGUgdSBzLiAodSwgcykgRXBzaWxvbi50ID1cbiAgZnVuIHN0YXRlIHN0YWNrIC0+XG4gIGlmIHN0YXRlLmRlcHRoID4gMCB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbmNsb3NlZF9wYXJlbjtcbiAgaWYgaXNfaWdub3Jpbmcgc3RhdGUgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOnRydWUgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cDtcbiAgaWYgc3RhdGUuZnVsbF9zZXhwcyA9IDBcbiAgdGhlbiAoXG4gICAgbWF0Y2ggc3RhdGUubW9kZSB3aXRoXG4gICAgfCBNYW55IHwgRWFnZXIgeyBub19zZXhwX2lzX2Vycm9yID0gZmFsc2U7IF8gfSAtPiAoKVxuICAgIHwgU2luZ2xlIHwgRWFnZXIgeyBub19zZXhwX2lzX2Vycm9yID0gdHJ1ZTsgXyB9IC0+XG4gICAgICByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOnRydWUgTm9fc2V4cF9mb3VuZF9pbl9pbnB1dCk7XG4gIHN0YWNrXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gIHwgUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZVxuICB8IFBhcnNpbmdfYXRvbVxuICB8IFBhcnNpbmdfbGlzdFxuICB8IFBhcnNpbmdfc2V4cF9jb21tZW50XG4gIHwgUGFyc2luZ19ibG9ja19jb21tZW50XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVwiXG4gICAgfCBQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2VcIlxuICAgIHwgUGFyc2luZ19hdG9tIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfYXRvbVwiXG4gICAgfCBQYXJzaW5nX2xpc3QgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19saXN0XCJcbiAgICB8IFBhcnNpbmdfc2V4cF9jb21tZW50IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfc2V4cF9jb21tZW50XCJcbiAgICB8IFBhcnNpbmdfYmxvY2tfY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdG9fc3RyaW5nIHQgPVxuICBtYXRjaCBzZXhwX29mX3QgdCB3aXRoXG4gIHwgQXRvbSBzIC0+IHNcbiAgfCBMaXN0IF8gLT4gZmFpbHdpdGggXCJCVUc6IFtzZXhwX29mX3RdIHJldHVybmVkIGEgW0xpc3QgX11cIlxuOztcbiIsIm9wZW4gQXV0b21hdG9uX2FjdGlvblxuXG5sZXQgcmFpc2UgPSBBdXRvbWF0b25fYWN0aW9uLnJhaXNlX2Vycm9yXG5cbnR5cGUgdSdcbnR5cGUgcydcblxuKCokIFBhcnNleHBfY2luYXBzX2hlbHBlcnMuR2VuX2F1dG9tYXRvbl90YWJsZXMucHJpbnRfY29kZSAoKSAqKVxubGV0IHRyXzAwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9maXJzdF9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wMF9mIH1cblxubGV0IHRyXzAxX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAxX2YgfVxuXG5sZXQgdHJfMDJfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAyX2YgfVxuXG5sZXQgdHJfMDNfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDNfZiB9XG5cbmxldCB0cl8wNF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9xdW90ZWRfc3RyaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wNF9mIH1cblxubGV0IHRyXzA1X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDc7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA1X2YgfVxuXG5sZXQgdHJfMDZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gb3BlbmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDZfZiB9XG5cbmxldCB0cl8wN19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBjbG9zaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wN19mIH1cblxubGV0IHRyXzA4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X2xpbmVfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDhfZiB9XG5cbmxldCB0cl8wOV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZmlyc3RfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wOSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDlfZiB9XG5sZXQgdHJfMTBfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID0gcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlXG5sZXQgdHJfMTAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzEwX2YgfVxubGV0IHRyXzExX2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9IHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyXG5sZXQgdHJfMTEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzExX2YgfVxuXG5sZXQgdHJfMTJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTJfZiB9XG5cbmxldCB0cl8xM19mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzEzX2YgfVxuXG5sZXQgdHJfMTRfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTRfZiB9XG5cbmxldCB0cl8xNV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE1X2YgfVxuXG5sZXQgdHJfMTZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBzdGFydF9xdW90ZWRfc3RyaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xNl9mIH1cblxubGV0IHRyXzE3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE3X2YgfVxuXG5sZXQgdHJfMThfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBvcGVuaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xOF9mIH1cblxubGV0IHRyXzE5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gY2xvc2luZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xOSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTlfZiB9XG5cbmxldCB0cl8yMF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHN0YXJ0X2xpbmVfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjBfZiB9XG5cbmxldCB0cl8yMV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzIxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yMV9mIH1cblxubGV0IHRyXzIyX2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9XG4gIHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIENvbW1lbnRfdG9rZW5faW5fdW5xdW90ZWRfYXRvbVxuOztcblxubGV0IHRyXzIyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yMl9mIH1cblxubGV0IHRyXzIzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzIzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yM19mIH1cblxubGV0IHRyXzI0X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfbGluZV9jb21tZW50IHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI0X2YgfVxuXG5sZXQgdHJfMjVfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9saW5lX2NvbW1lbnQgc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yNV9mIH1cblxubGV0IHRyXzI2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI2X2YgfVxuXG5sZXQgdHJfMjdfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yN19mIH1cblxubGV0IHRyXzI4X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI4X2YgfVxuXG5sZXQgdHJfMjlfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yOV9mIH1cblxubGV0IHRyXzMwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gc3RhcnRfcXVvdGVkX3N0cmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzBfZiB9XG5cbmxldCB0cl8zMV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zMV9mIH1cblxubGV0IHRyXzMyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gb3BlbmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzJfZiB9XG5cbmxldCB0cl8zM19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGNsb3Npbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMzX2YgfVxuXG5sZXQgdHJfMzRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfc2V4cF9jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zNF9mIH1cblxubGV0IHRyXzM1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X2Jsb2NrX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zNV9mIH1cblxubGV0IHRyXzM2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zNl9mIH1cblxubGV0IHRyXzM3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzdfZiB9XG5cbmxldCB0cl8zOF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBwdXNoX3F1b3RlZF9hdG9tIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zOF9mIH1cblxubGV0IHRyXzM5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zOV9mIH1cblxubGV0IHRyXzQwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9lc2NhcGVkIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80MF9mIH1cblxubGV0IHRyXzQxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNTtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQxX2YgfVxuXG5sZXQgdHJfNDJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDEwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80Ml9mIH1cblxubGV0IHRyXzQzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDExO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80M19mIH1cblxubGV0IHRyXzQ0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDRfZiB9XG5cbmxldCB0cl80NV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ1X2YgfVxuXG5sZXQgdHJfNDZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9lc2NhcGVkX2NyIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHB1c2hfcXVvdGVkX2F0b20gc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ2X2YgfVxuXG5sZXQgdHJfNDdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9lc2NhcGVkX2NyIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80N19mIH1cblxubGV0IHRyXzQ4X2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9XG4gIHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2RlY19lc2NhcGVcbjs7XG5cbmxldCB0cl80OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDhfZiB9XG5cbmxldCB0cl80OV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80OSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDlfZiB9XG5cbmxldCB0cl81MF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfbGFzdF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUwX2YgfVxuXG5sZXQgdHJfNTFfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID1cbiAgcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfaGV4X2VzY2FwZVxuOztcblxubGV0IHRyXzUxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81MV9mIH1cblxubGV0IHRyXzUyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzUyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81Ml9mIH1cblxubGV0IHRyXzUzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTNfZiB9XG5cbmxldCB0cl81NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTRfZiB9XG5cbmxldCB0cl81NV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU1X2YgfVxuXG5sZXQgdHJfNTZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81Nl9mIH1cblxubGV0IHRyXzU3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHB1c2hfcXVvdGVkX2F0b20gc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU3X2YgfVxuXG5sZXQgdHJfNThfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU4X2YgfVxuXG5sZXQgdHJfNTlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81OV9mIH1cblxubGV0IHRyXzYwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNjtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYwX2YgfVxuXG5sZXQgdHJfNjFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82MV9mIH1cblxubGV0IHRyXzYyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjJfZiB9XG5cbmxldCB0cl82M19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTc7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYzX2YgfVxuXG5sZXQgdHJfNjRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2Jsb2NrX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIChpZiBibG9ja19jb21tZW50X2RlcHRoIHN0YXRlIDw+IDAgdGhlbiAxNiBlbHNlIDApO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82NF9mIH1cblxubGV0IHRyXzY1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY1X2YgfVxuXG5sZXQgdHJfNjZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82Nl9mIH1cblxubGV0IHRyXzY3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyNjtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY3X2YgfVxuXG5sZXQgdHJfNjhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIxO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82OF9mIH1cblxubGV0IHRyXzY5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82OV9mIH1cblxubGV0IHRyXzcwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzBfZiB9XG5cbmxldCB0cl83MV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzcxX2YgfVxuXG5sZXQgdHJfNzJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzcyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83Ml9mIH1cblxubGV0IHRyXzczX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzNfZiB9XG5cbmxldCB0cl83NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzRfZiB9XG5cbmxldCB0cl83NV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBjb21tZW50X2FkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc1X2YgfVxuXG5sZXQgdHJfNzZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83Nl9mIH1cblxubGV0IHRyXzc3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzdfZiB9XG5cbmxldCB0cl83OF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83OF9mIH1cbmxldCB0cl9lb2lfMDBfZiBzdGF0ZSBzdGFjayA9IGVwc19lb2lfY2hlY2sgc3RhdGUgc3RhY2tcbmxldCB0cl9lb2lfMDAgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzAwX2YgfVxubGV0IHRyX2VvaV8wMV9mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGVcbmxldCB0cl9lb2lfMDEgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzAxX2YgfVxubGV0IHRyX2VvaV8wMl9mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbmV4cGVjdGVkX2NoYXJhY3Rlcl9hZnRlcl9jclxubGV0IHRyX2VvaV8wMiA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDJfZiB9XG5cbmxldCB0cl9lb2lfMDNfZiBzdGF0ZSBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xuOztcblxubGV0IHRyX2VvaV8wMyA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDNfZiB9XG5cbmxldCB0cl9lb2lfMDRfZiBzdGF0ZSBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9saW5lX2NvbW1lbnQgc3RhdGUgc3RhY2sgaW5cbiAgZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xuOztcblxubGV0IHRyX2VvaV8wNCA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDRfZiB9XG5cbmxldCB0cl9lb2lfMDVfZiBzdGF0ZSBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xuOztcblxubGV0IHRyX2VvaV8wNSA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDVfZiB9XG5sZXQgdHJfZW9pXzA2X2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIFVudGVybWluYXRlZF9xdW90ZWRfc3RyaW5nXG5sZXQgdHJfZW9pXzA2IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wNl9mIH1cbmxldCB0cl9lb2lfMDdfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgVW50ZXJtaW5hdGVkX2Jsb2NrX2NvbW1lbnRcbmxldCB0cl9lb2lfMDcgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA3X2YgfVxuXG5sZXQgdHJhbnNpdGlvbnMgPVxuICBbfCB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMVxuICAgOyB0cl8wMlxuICAgOyB0cl8wMFxuICAgOyB0cl8wMVxuICAgOyB0cl8wM1xuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMVxuICAgOyB0cl8wMFxuICAgOyB0cl8wNFxuICAgOyB0cl8wNVxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wNlxuICAgOyB0cl8wN1xuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wOFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wOVxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8wMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMFxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8wMlxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNFxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xMlxuICAgOyB0cl8xNlxuICAgOyB0cl8xN1xuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xOFxuICAgOyB0cl8xOVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMFxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNFxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xMlxuICAgOyB0cl8xNlxuICAgOyB0cl8xN1xuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xOFxuICAgOyB0cl8xOVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMFxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNFxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xNVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xM1xuICAgOyB0cl8xMlxuICAgOyB0cl8xNlxuICAgOyB0cl8yMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xOFxuICAgOyB0cl8xOVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMFxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yMVxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8xMlxuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yNFxuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yNVxuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yM1xuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yN1xuICAgOyB0cl8yOFxuICAgOyB0cl8yNlxuICAgOyB0cl8yN1xuICAgOyB0cl8yOVxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yN1xuICAgOyB0cl8yNlxuICAgOyB0cl8zMFxuICAgOyB0cl8zMVxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8zMlxuICAgOyB0cl8zM1xuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8zNFxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8zNVxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8yNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zN1xuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zOFxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zOVxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl8zNlxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MVxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MlxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80M1xuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80NFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80MFxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80MVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NlxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80N1xuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80NVxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OVxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl81MFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81M1xuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NVxuICAgOyB0cl81NlxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NVxuICAgOyB0cl81NFxuICAgOyB0cl81N1xuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81OFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81NFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82MlxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82M1xuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82NFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82M1xuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MFxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82MlxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl8zNVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82NVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl81OVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82NlxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82N1xuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82OFxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82OVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl83MFxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl82N1xuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MlxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83M1xuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl83NFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl83NVxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl80OFxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl83NlxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl82MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl81MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83N1xuICAgOyB0cl83OFxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83N1xuICAgOyB0cl83MVxuICAgOyB0cl83MlxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83M1xuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICAgOyB0cl83MVxuICB8XVxuOztcblxubGV0IHRyYW5zaXRpb25zX2VvaSA9XG4gIFt8IHRyX2VvaV8wMFxuICAgOyB0cl9lb2lfMDFcbiAgIDsgdHJfZW9pXzAyXG4gICA7IHRyX2VvaV8wM1xuICAgOyB0cl9lb2lfMDNcbiAgIDsgdHJfZW9pXzAzXG4gICA7IHRyX2VvaV8wNFxuICAgOyB0cl9lb2lfMDVcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gIHxdXG47O1xuXG5sZXQgb2xkX3BhcnNlcl9hcHByb3hfY29udF9zdGF0ZXMgOiBPbGRfcGFyc2VyX2NvbnRfc3RhdGUudCBhcnJheSA9XG4gIFt8IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgIDsgUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICB8XVxuOztcbigqJCopXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTdGFjayA9IEF1dG9tYXRvbl9zdGFja1xuaW5jbHVkZSBBdXRvbWF0b25fc3RhdGVcblxubGV0IGZlZWQgKHR5cGUgdSBzKSAoc3RhdGUgOiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQpIGNoYXIgKHN0YWNrIDogcykgOiBzID1cbiAgbGV0IGlkeCA9IChhdXRvbWF0b25fc3RhdGUgc3RhdGUgbHNsIDgpIGxvciBDaGFyLmNvZGUgY2hhciBpblxuICBBdXRvbWF0b25fdGFibGVzLnRyYW5zaXRpb25zLihpZHgpLmYgc3RhdGUgY2hhciBzdGFja1xuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBmZWVkX2VvaSAodHlwZSB1IHMpIChzdGF0ZSA6ICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCkgKHN0YWNrIDogcykgOiBzID1cbiAgbGV0IHN0YWNrID0gQXV0b21hdG9uX3RhYmxlcy50cmFuc2l0aW9uc19lb2kuKGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSkuZiBzdGF0ZSBzdGFjayBpblxuICBzZXRfZXJyb3Jfc3RhdGUgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgb2xkX3BhcnNlcl9jb250X3N0YXRlIHN0YXRlIDogT2xkX3BhcnNlcl9jb250X3N0YXRlLnQgPVxuICBtYXRjaCBjb250ZXh0IHN0YXRlIHdpdGhcbiAgfCBTZXhwX2NvbW1lbnQgLT4gUGFyc2luZ19zZXhwX2NvbW1lbnRcbiAgfCBTZXhwIC0+XG4gICAgKG1hdGNoXG4gICAgICAgKCBBdXRvbWF0b25fdGFibGVzLm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzLihhdXRvbWF0b25fc3RhdGUgc3RhdGUpXG4gICAgICAgLCBoYXNfdW5jbG9zZWRfcGFyZW4gc3RhdGUgKVxuICAgICB3aXRoXG4gICAgIHwgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlLCB0cnVlIC0+IFBhcnNpbmdfbGlzdFxuICAgICB8IHMsIF8gLT4gcylcbjs7XG5cbmxldCByZWMgZmVlZF9zdWJzdHJpbmdfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayBpIHN0b3AgPVxuICBpZiBpIDwgc3RvcFxuICB0aGVuIChcbiAgICBsZXQgYyA9IFN0cmluZy51bnNhZmVfZ2V0IHN0ciBpIGluXG4gICAgbGV0IHN0YWNrID0gZmVlZCBzdGF0ZSBjIHN0YWNrIGluXG4gICAgZmVlZF9zdWJzdHJpbmdfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayAoaSArIDEpIHN0b3ApXG4gIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCByZWMgZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIGkgc3RvcCA9XG4gIGlmIGkgPCBzdG9wXG4gIHRoZW4gKFxuICAgIGxldCBjID0gQnl0ZXMudW5zYWZlX2dldCBzdHIgaSBpblxuICAgIGxldCBzdGFjayA9IGZlZWQgc3RhdGUgYyBzdGFjayBpblxuICAgIGZlZWRfc3ViYnl0ZXNfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayAoaSArIDEpIHN0b3ApXG4gIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCBmZWVkX3N1YnN0cmluZyBzdGF0ZSBzdHIgfnBvcyB+bGVuIHN0YWNrID1cbiAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zID4gc3RyX2xlbiAtIGxlbiB0aGVuIGludmFsaWRfYXJnIFwiUGFyc2V4cC5mZWVkX3N1YnN0cmluZ1wiO1xuICBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIHBvcyAocG9zICsgbGVuKVxuOztcblxubGV0IGZlZWRfc3ViYnl0ZXMgc3RhdGUgc3RyIH5wb3MgfmxlbiBzdGFjayA9XG4gIGxldCBzdHJfbGVuID0gQnl0ZXMubGVuZ3RoIHN0ciBpblxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zID4gc3RyX2xlbiAtIGxlbiB0aGVuIGludmFsaWRfYXJnIFwiUGFyc2V4cC5mZWVkX3N1YmJ5dGVzXCI7XG4gIGZlZWRfc3ViYnl0ZXNfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayBwb3MgKHBvcyArIGxlbilcbjs7XG5cbmxldCBmZWVkX3N0cmluZyBzdGF0ZSBzdHIgc3RhY2sgPVxuICBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuOztcblxubGV0IGZlZWRfYnl0ZXMgc3RhdGUgc3RyIHN0YWNrID0gZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIDAgKEJ5dGVzLmxlbmd0aCBzdHIpXG5cbmxldCBlbXB0eV9zdGFjayA6IHR5cGUgdSBzLiAodSwgcykgS2luZC50IC0+IHMgPSBmdW5jdGlvblxuICB8IFNleHAgLT4gU3RhY2suZW1wdHlcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IFN0YWNrLmVtcHR5XG4gIHwgUG9zaXRpb25zIC0+IFN0YWNrLkp1c3RfcG9zaXRpb25zLmVtcHR5XG4gIHwgQ3N0IC0+IFN0YWNrLkZvcl9jc3QuZW1wdHlcbjs7XG5cbmxldCBvZl9zdWJzdHJpbmcgKHR5cGUgdSBzKSAobW9kZSA6ICh1LCBzKSBNb2RlLnQpIChraW5kIDogKHUsIHMpIEtpbmQudCkgcyB+cG9zIH5sZW4gPVxuICBsZXQgc3RhdGUgPSBjcmVhdGUgbW9kZSBraW5kIGluXG4gIGxldCBzdGFjayA9IGZlZWRfc3Vic3RyaW5nIHN0YXRlIHMgfnBvcyB+bGVuIChlbXB0eV9zdGFjayBraW5kKSBpblxuICBzdGF0ZSwgc3RhY2tcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgeyB1c2VyX2V4biA6IGV4blxuICA7IHN1Yl9zZXhwIDogU2V4cC50XG4gIDsgbG9jYXRpb24gOiBQb3NpdGlvbnMucmFuZ2Ugb3B0aW9uXG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1biB7IHVzZXJfZXhuID0gdXNlcl9leG5fXzAwMl87IHN1Yl9zZXhwID0gc3ViX3NleHBfXzAwNF87IGxvY2F0aW9uID0gbG9jYXRpb25fXzAwNl8gfSAtPlxuICAgICBsZXQgYm5kc19fMDAxXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX29wdGlvbiBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NhdGlvbl9fMDA2XyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsb2NhdGlvblwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDFfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA1XyA9IFNleHAuc2V4cF9vZl90IHN1Yl9zZXhwX18wMDRfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInN1Yl9zZXhwXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDNfID0gc2V4cF9vZl9leG4gdXNlcl9leG5fXzAwMl8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidXNlcl9leG5cIjsgYXJnX18wMDNfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMV9cbiAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB1c2VyX2V4biB0ID0gdC51c2VyX2V4blxubGV0IHN1Yl9zZXhwIHQgPSB0LnN1Yl9zZXhwXG5sZXQgbG9jYXRpb24gdCA9IHQubG9jYXRpb25cblxubGV0IHJlcG9ydCBwcGYgfmZpbGVuYW1lIHQgPVxuICBsZXQgbGluZSwgc3RhcnQsIHN0b3AgPVxuICAgIG1hdGNoIHQubG9jYXRpb24gd2l0aFxuICAgIHwgTm9uZSAtPiAxLCAwLCAwXG4gICAgfCBTb21lIHsgc3RhcnRfcG9zOyBlbmRfcG9zIH0gLT5cbiAgICAgIHN0YXJ0X3Bvcy5saW5lLCBzdGFydF9wb3MuY29sLCBzdGFydF9wb3MuY29sICsgZW5kX3Bvcy5vZmZzZXQgLSBzdGFydF9wb3Mub2Zmc2V0XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmXG4gICAgcHBmXG4gICAgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XFxuXFxcbiAgICAgRXJyb3I6IHMtZXhwcmVzc2lvbiBjb252ZXJzaW9uIGVycm9yO1xcblxcXG4gICAgIGV4Y2VwdGlvbiAlc1xcblwiXG4gICAgZmlsZW5hbWVcbiAgICBsaW5lXG4gICAgc3RhcnRcbiAgICBzdG9wXG4gICAgKFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCB0LnVzZXJfZXhuKVxuOztcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3Igb2YgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE9mX3NleHBfZXJyb3JdIChmdW5jdGlvblxuICAgIHwgT2Zfc2V4cF9lcnJvciBhcmcwX18wMDhfIC0+XG4gICAgICBsZXQgcmVzMF9fMDA5XyA9IHNleHBfb2ZfdCBhcmcwX18wMDhfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJvZl9zZXhwX2Vycm9yLm1sLk9mX3NleHBfZXJyb3JcIjsgcmVzMF9fMDA5XyBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmxldCByYWlzZSB+dXNlcl9leG4gfnN1Yl9zZXhwIH5sb2NhdGlvbiA9XG4gIHJhaXNlIChPZl9zZXhwX2Vycm9yIHsgdXNlcl9leG47IHN1Yl9zZXhwOyBsb2NhdGlvbiB9KVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IFBhcnNlX2Vycm9yIG9mIFBhcnNlX2Vycm9yLnRcbiAgfCBPZl9zZXhwX2Vycm9yIG9mIE9mX3NleHBfZXJyb3IudFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IFBhcnNlX2Vycm9yIGFyZzBfXzAwMV8gLT5cbiAgICAgIGxldCByZXMwX18wMDJfID0gUGFyc2VfZXJyb3Iuc2V4cF9vZl90IGFyZzBfXzAwMV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNlX2Vycm9yXCI7IHJlczBfXzAwMl8gXVxuICAgIHwgT2Zfc2V4cF9lcnJvciBhcmcwX18wMDNfIC0+XG4gICAgICBsZXQgcmVzMF9fMDA0XyA9IE9mX3NleHBfZXJyb3Iuc2V4cF9vZl90IGFyZzBfXzAwM18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9mX3NleHBfZXJyb3JcIjsgcmVzMF9fMDA0XyBdXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IHJlcG9ydCBwcGYgfmZpbGVuYW1lIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBQYXJzZV9lcnJvciBlIC0+IFBhcnNlX2Vycm9yLnJlcG9ydCBwcGYgfmZpbGVuYW1lIGVcbiAgfCBPZl9zZXhwX2Vycm9yIGUgLT4gT2Zfc2V4cF9lcnJvci5yZXBvcnQgcHBmIH5maWxlbmFtZSBlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFBhcnNlcl9pbnRmXG5tb2R1bGUgQSA9IEF1dG9tYXRvblxuXG5sZXQga2luZF90b19zdGFja1xuICA6IHR5cGUgc3RhY2suXG4gICAgKCdzdGF0ZSwgc3RhY2spIEF1dG9tYXRvbl9zdGF0ZS5LaW5kLnQgLT4gKG1vZHVsZSBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICA9XG4gIGZ1biAodHlwZSBzdGF0ZSkgKGtpbmQgOiAoc3RhdGUsIHN0YWNrKSBBdXRvbWF0b25fc3RhdGUuS2luZC50KSAtPlxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBTZXhwIC0+IChtb2R1bGUgQXV0b21hdG9uX3N0YWNrIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcbiAgfCBQb3NpdGlvbnMgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2suSnVzdF9wb3NpdGlvbnMgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2sgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICB8IENzdCAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0IDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcbjs7XG5cbmxldCBtYWtlICh0eXBlIHN0YWNrIHN0YXRlIHBhcnNlZF92YWx1ZSkga2luZCBtb2RlIG1ha2VfdmFsdWVcbiAgOiAobW9kdWxlIFNcbiAgICAgIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWVcbiAgICAgICBhbmQgdHlwZSBTdGF0ZS50ID0gKHN0YXRlLCBzdGFjaykgQXV0b21hdG9uX3N0YXRlLnRcbiAgICAgICBhbmQgdHlwZSBTdGFjay50ID0gc3RhY2spXG4gID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWVcblxuICAgIG1vZHVsZSBTdGFjayA9ICh2YWwga2luZF90b19zdGFjayBraW5kIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcblxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gKHN0YXRlLCBTdGFjay50KSBBdXRvbWF0b25fc3RhdGUudFxuXG4gICAgICBsZXQgY3JlYXRlID9wb3MgKCkgPSBBLmNyZWF0ZSA/aW5pdGlhbF9wb3M6cG9zIG1vZGUga2luZFxuICAgICAgbGV0IHJlc2V0ID0gQS5yZXNldFxuICAgICAgbGV0IG9mZnNldCA9IEEub2Zmc2V0XG4gICAgICBsZXQgbGluZSA9IEEubGluZVxuICAgICAgbGV0IGNvbHVtbiA9IEEuY29sdW1uXG5cbiAgICAgIGxldCBwb3NpdGlvbiB0IDogUG9zaXRpb25zLnBvcyA9XG4gICAgICAgIHsgb2Zmc2V0ID0gb2Zmc2V0IHQ7IGxpbmUgPSBsaW5lIHQ7IGNvbCA9IGNvbHVtbiB0IH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdG9wIHN0YXRlID0gQS5zZXRfZXJyb3Jfc3RhdGUgc3RhdGVcbiAgICBlbmRcblxuICAgIGxldCBmZWVkID0gQS5mZWVkXG4gICAgbGV0IGZlZWRfZW9pIHN0YXRlIHN0YWNrID0gbWFrZV92YWx1ZSBzdGF0ZSAoQS5mZWVkX2VvaSBzdGF0ZSBzdGFjaylcbiAgICBsZXQgZmVlZF9zdWJzdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdWJzdHJpbmdcbiAgICBsZXQgZmVlZF9zdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdHJpbmdcbiAgICBsZXQgZmVlZF9zdWJieXRlcyA9IEF1dG9tYXRvbi5mZWVkX3N1YmJ5dGVzXG4gICAgbGV0IGZlZWRfYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9ieXRlc1xuXG4gICAgbGV0IHBhcnNlX3N0cmluZ19leG4gc3RyID1cbiAgICAgIGxldCBzdGF0ZSA9IFN0YXRlLmNyZWF0ZSAoKSBpblxuICAgICAgZmVlZF9lb2kgc3RhdGUgKGZlZWRfc3RyaW5nIHN0YXRlIHN0ciBTdGFjay5lbXB0eSlcbiAgICA7O1xuXG4gICAgbGV0IHBhcnNlX3N0cmluZyBzdHIgPVxuICAgICAgbWF0Y2ggcGFyc2Vfc3RyaW5nX2V4biBzdHIgd2l0aFxuICAgICAgfCB4IC0+IE9rIHhcbiAgICAgIHwgZXhjZXB0aW9uIFBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yIGUgLT4gRXJyb3IgZVxuICAgIDs7XG4gIGVuZClcbjs7XG5cbmxldCBtYWtlX2VhZ2VyICh0eXBlIHN0YWNrIHN0YXRlIHBhcnNlZF92YWx1ZSkga2luZCBtYWtlX3ZhbHVlXG4gIDogKG1vZHVsZSBTX2VhZ2VyXG4gICAgICB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlXG4gICAgICAgYW5kIHR5cGUgU3RhdGUudCA9IChzdGF0ZSwgc3RhY2spIEF1dG9tYXRvbl9zdGF0ZS50XG4gICAgICAgYW5kIHR5cGUgU3RhY2sudCA9IHN0YWNrKVxuICA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSBub25yZWMgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlXG5cbiAgICBtb2R1bGUgU3RhY2sgPSAodmFsIGtpbmRfdG9fc3RhY2sga2luZCA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG5cbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBSZWFkX29ubHkgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gKHN0YXRlLCBTdGFjay50KSBBdXRvbWF0b25fc3RhdGUudFxuXG4gICAgICAgIGxldCBvZmZzZXQgPSBBLm9mZnNldFxuICAgICAgICBsZXQgbGluZSA9IEEubGluZVxuICAgICAgICBsZXQgY29sdW1uID0gQS5jb2x1bW5cblxuICAgICAgICBsZXQgcG9zaXRpb24gdCA6IFBvc2l0aW9ucy5wb3MgPVxuICAgICAgICAgIHsgb2Zmc2V0ID0gb2Zmc2V0IHQ7IGxpbmUgPSBsaW5lIHQ7IGNvbCA9IGNvbHVtbiB0IH1cbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFJlYWRfb25seVxuXG4gICAgICBsZXQgY3JlYXRlID9wb3MgPyhub19zZXhwX2lzX2Vycm9yID0gZmFsc2UpIGYgPVxuICAgICAgICBsZXQgZ290X3NleHAgc3RhdGUgc3RhY2sgPVxuICAgICAgICAgIGxldCBwYXJzZWRfdmFsdWUgPSBtYWtlX3ZhbHVlIHN0YXRlIHN0YWNrIGluXG4gICAgICAgICAgZiBzdGF0ZSBwYXJzZWRfdmFsdWU7XG4gICAgICAgICAgU3RhY2suZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgQS5jcmVhdGUgP2luaXRpYWxfcG9zOnBvcyAoRWFnZXIgeyBnb3Rfc2V4cDsgbm9fc2V4cF9pc19lcnJvciB9KSBraW5kXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVzZXQgPSBBLnJlc2V0XG4gICAgICBsZXQgc3RvcCB0ID0gQS5zZXRfZXJyb3Jfc3RhdGUgdFxuICAgICAgbGV0IG9sZF9wYXJzZXJfY29udF9zdGF0ZSB0ID0gQXV0b21hdG9uLm9sZF9wYXJzZXJfY29udF9zdGF0ZSB0XG4gICAgZW5kXG5cbiAgICBsZXQgZmVlZCA9IEEuZmVlZFxuICAgIGxldCBmZWVkX2VvaSBzdGF0ZSBzdGFjayA9IGlnbm9yZSAoQS5mZWVkX2VvaSBzdGF0ZSBzdGFjayA6IFN0YWNrLnQpXG4gICAgbGV0IGZlZWRfc3Vic3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3Vic3RyaW5nXG4gICAgbGV0IGZlZWRfc3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3RyaW5nXG4gICAgbGV0IGZlZWRfc3ViYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9zdWJieXRlc1xuICAgIGxldCBmZWVkX2J5dGVzID0gQXV0b21hdG9uLmZlZWRfYnl0ZXNcblxuICAgIG1vZHVsZSBMZXhidWZfY29uc3VtZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFN0YXRlLnRcblxuICAgICAgZXhjZXB0aW9uIEdvdF9zZXhwIG9mIHBhcnNlZF92YWx1ZSAqIFBvc2l0aW9ucy5wb3NcblxuICAgICAgbGV0IGdvdF9zZXhwIHN0YXRlIHBhcnNlZF92YWx1ZSA9XG4gICAgICAgIHJhaXNlX25vdHJhY2UgKEdvdF9zZXhwIChwYXJzZWRfdmFsdWUsIFN0YXRlLnBvc2l0aW9uIHN0YXRlKSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSBTdGF0ZS5jcmVhdGUgZ290X3NleHBcblxuICAgICAgbGV0IHBvc19vZl9sZXhidWYgbGV4YnVmID1cbiAgICAgICAgbGV0IHAgPSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgaW5cbiAgICAgICAgeyBQb3NpdGlvbnMubGluZSA9IHAucG9zX2xudW07IGNvbCA9IHAucG9zX2NudW0gLSBwLnBvc19ib2w7IG9mZnNldCA9IHAucG9zX2NudW0gfVxuICAgICAgOztcblxuICAgICAgbGV0IHVwZGF0ZV9sZXhidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpIChwb3MgOiBQb3NpdGlvbnMucG9zKSA9XG4gICAgICAgIGxldCBwID0gcG9zLm9mZnNldCAtIGxleGJ1Zi5sZXhfYWJzX3BvcyBpblxuICAgICAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIHA7XG4gICAgICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIHA7XG4gICAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wXG4gICAgICAgIDwtIHsgbGV4YnVmLmxleF9jdXJyX3Agd2l0aFxuICAgICAgICAgICAgIHBvc19sbnVtID0gcG9zLmxpbmVcbiAgICAgICAgICAgOyBwb3NfY251bSA9IHBvcy5vZmZzZXRcbiAgICAgICAgICAgOyBwb3NfYm9sID0gcG9zLm9mZnNldCAtIHBvcy5jb2xcbiAgICAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBmZWVkX2xleGJ1ZiB0IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSBzdGFjayA9XG4gICAgICAgIGxldCBzdGFjayA9XG4gICAgICAgICAgZmVlZF9zdWJieXRlc1xuICAgICAgICAgICAgdFxuICAgICAgICAgICAgbGV4YnVmLmxleF9idWZmZXJcbiAgICAgICAgICAgIHN0YWNrXG4gICAgICAgICAgICB+cG9zOmxleGJ1Zi5sZXhfY3Vycl9wb3NcbiAgICAgICAgICAgIH5sZW46KGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfY3Vycl9wb3MpXG4gICAgICAgIGluXG4gICAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuO1xuICAgICAgICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW47XG4gICAgICAgIGlmIG5vdCBsZXhidWYubGV4X2VvZl9yZWFjaGVkXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxleGJ1Zi5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICAgICAgZmVlZF9sZXhidWYgdCBsZXhidWYgc3RhY2spXG4gICAgICAgIGVsc2UgZmVlZF9lb2kgdCBzdGFja1xuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX2dlbiB0IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgICAgIEEucmVzZXQgdCB+cG9zOihwb3Nfb2ZfbGV4YnVmIGxleGJ1Zik7XG4gICAgICAgIG1hdGNoIGZlZWRfbGV4YnVmIHQgbGV4YnVmIFN0YWNrLmVtcHR5IHdpdGhcbiAgICAgICAgfCAoKSAtPlxuICAgICAgICAgIHVwZGF0ZV9sZXhidWYgbGV4YnVmIChTdGF0ZS5wb3NpdGlvbiB0KTtcbiAgICAgICAgICBOb25lXG4gICAgICAgIHwgZXhjZXB0aW9uIEdvdF9zZXhwIChwYXJzZWRfdmFsdWUsIHBvcykgLT5cbiAgICAgICAgICB1cGRhdGVfbGV4YnVmIGxleGJ1ZiBwb3M7XG4gICAgICAgICAgU29tZSBwYXJzZWRfdmFsdWVcbiAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgdXBkYXRlX2xleGJ1ZiBsZXhidWYgKFN0YXRlLnBvc2l0aW9uIHQpO1xuICAgICAgICAgIHJhaXNlIGV4blxuICAgICAgOztcblxuICAgICAgbGV0IHNldF9ub19zZXhwX2lzX2Vycm9yIHQgeCA9XG4gICAgICAgIG1hdGNoIEEubW9kZSB0IHdpdGhcbiAgICAgICAgfCBFYWdlciBlIC0+IGUubm9fc2V4cF9pc19lcnJvciA8LSB4XG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZSB0IGxleGJ1ZiA9XG4gICAgICAgIHNldF9ub19zZXhwX2lzX2Vycm9yIHQgdHJ1ZTtcbiAgICAgICAgbWF0Y2ggcGFyc2VfZ2VuIHQgbGV4YnVmIHdpdGhcbiAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJQYXJzZXhwLnBhcnNlX2dlbjogTm9uZVwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2Vfb3B0IHQgbGV4YnVmID1cbiAgICAgICAgc2V0X25vX3NleHBfaXNfZXJyb3IgdCBmYWxzZTtcbiAgICAgICAgcGFyc2VfZ2VuIHQgbGV4YnVmXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmQpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbnZfaW50ZlxuXG5tb2R1bGUgTWFrZVxuICAgIChNb2RlIDogTW9kZSlcbiAgICAoU2V4cF9wYXJzZXIgOiBQYXJzZXIuUyB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gTW9kZS5wYXJzZWRfc2V4cClcbiAgICAoUG9zaXRpb25zX3BhcnNlciA6IFBhcnNlci5TIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBQb3NpdGlvbnMudCkgPVxuc3RydWN0XG4gIGxldCByZXJhaXNlIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgfnN1YiB1c2VyX2V4biA9XG4gICAgbGV0IGxvY2F0aW9uID0gTW9kZS5maW5kIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgfnN1YiBpblxuICAgIE9mX3NleHBfZXJyb3IucmFpc2UgfnVzZXJfZXhuIH5zdWJfc2V4cDpzdWIgfmxvY2F0aW9uXG4gIDs7XG5cbiAgbGV0IHBhcnNlX3N0cmluZ19leG4gc3RyIGYgPVxuICAgIGxldCBwYXJzZWRfdmFsdWUgPSBTZXhwX3BhcnNlci5wYXJzZV9zdHJpbmdfZXhuIHN0ciBpblxuICAgIG1hdGNoIE1vZGUuYXBwbHlfZiBwYXJzZWRfdmFsdWUgfmYgd2l0aFxuICAgIHwgeCAtPiB4XG4gICAgfCBleGNlcHRpb24gU2V4cC5PZl9zZXhwX2Vycm9yIChleG4sIHN1YikgLT5cbiAgICAgIGxldCBwb3NpdGlvbnMgPSBQb3NpdGlvbnNfcGFyc2VyLnBhcnNlX3N0cmluZ19leG4gc3RyIGluXG4gICAgICByZXJhaXNlIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgZXhuIH5zdWJcbiAgOztcblxuICBsZXQgcGFyc2Vfc3RyaW5nIHN0ciBmIDogKF8sIENvbnZfZXJyb3IudCkgcmVzdWx0ID1cbiAgICBtYXRjaCBwYXJzZV9zdHJpbmdfZXhuIHN0ciBmIHdpdGhcbiAgICB8IHggLT4gT2sgeFxuICAgIHwgZXhjZXB0aW9uIFBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yIGUgLT4gRXJyb3IgKFBhcnNlX2Vycm9yIGUpXG4gICAgfCBleGNlcHRpb24gT2Zfc2V4cF9lcnJvci5PZl9zZXhwX2Vycm9yIGUgLT4gRXJyb3IgKE9mX3NleHBfZXJyb3IgZSlcbiAgOztcblxuICBsZXQgY29udl9leG4gKHBhcnNlZF92YWx1ZSwgcG9zaXRpb25zKSBmID1cbiAgICBtYXRjaCBNb2RlLmFwcGx5X2YgcGFyc2VkX3ZhbHVlIH5mIHdpdGhcbiAgICB8IHggLT4geFxuICAgIHwgZXhjZXB0aW9uIFNleHAuT2Zfc2V4cF9lcnJvciAoZXhuLCBzdWIpIC0+IHJlcmFpc2UgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSBleG4gfnN1YlxuICA7O1xuXG4gIGxldCBjb252IHggZiA9XG4gICAgbWF0Y2ggY29udl9leG4geCBmIHdpdGhcbiAgICB8IHggLT4gT2sgeFxuICAgIHwgZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IuT2Zfc2V4cF9lcnJvciBlIC0+IEVycm9yIGVcbiAgOztcblxuICBsZXQgY29udl9jb21iaW5lIHJlc3VsdCBmIDogKF8sIENvbnZfZXJyb3IudCkgcmVzdWx0ID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoUGFyc2VfZXJyb3IgZSlcbiAgICB8IE9rIHggLT5cbiAgICAgIChtYXRjaCBjb252IHggZiB3aXRoXG4gICAgICAgfCBPayBfIGFzIHIgLT4gclxuICAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoT2Zfc2V4cF9lcnJvciBlKSlcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIENvbnYgPSBDb252LlNcbm1vZHVsZSB0eXBlIFBhcnNlciA9IFBhcnNlci5TXG5tb2R1bGUgdHlwZSBFYWdlcl9wYXJzZXIgPSBQYXJzZXIuU19lYWdlclxuXG5tb2R1bGUgQ29udl9lcnJvciA9IENvbnZfZXJyb3Jcbm1vZHVsZSBPZl9zZXhwX2Vycm9yID0gT2Zfc2V4cF9lcnJvclxubW9kdWxlIE9sZF9wYXJzZXJfY29udF9zdGF0ZSA9IE9sZF9wYXJzZXJfY29udF9zdGF0ZVxubW9kdWxlIFBhcnNlX2Vycm9yID0gUGFyc2VfZXJyb3Jcbm1vZHVsZSBQb3NpdGlvbnMgPSBQb3NpdGlvbnNcbm1vZHVsZSBDc3QgPSBDc3Rcbm1vZHVsZSBBID0gQXV0b21hdG9uXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciA9IFBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciA9IE9mX3NleHBfZXJyb3IuT2Zfc2V4cF9lcnJvclxuXG5sZXQgY29uc3QgYyBfID0gY1xuXG5tb2R1bGUgU2luZ2xlID0gKHZhbCBQYXJzZXIubWFrZSBTZXhwIFNpbmdsZSAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUpKVxubW9kdWxlIE1hbnkgPSAodmFsIFBhcnNlci5tYWtlIFNleHAgTWFueSAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9tYW55KSlcbm1vZHVsZSBFYWdlciA9ICh2YWwgUGFyc2VyLm1ha2VfZWFnZXIgU2V4cCAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUpKVxuXG5sZXQgYW5kX2dldF9wb3NpdGlvbnMgZ2V0X3NleHAgc3RhdGUgc3RhY2sgPSBnZXRfc2V4cCBzdGFjaywgQS5wb3NpdGlvbnMgc3RhdGVcblxubGV0IGFuZF9wb3NpdGlvbnMgbW9kZSBnZXRfc2V4cCA9XG4gIFBhcnNlci5tYWtlIFNleHBfd2l0aF9wb3NpdGlvbnMgbW9kZSAoYW5kX2dldF9wb3NpdGlvbnMgZ2V0X3NleHApXG47O1xuXG5tb2R1bGUgU2luZ2xlX2FuZF9wb3NpdGlvbnMgPSAodmFsIGFuZF9wb3NpdGlvbnMgU2luZ2xlIEF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlKVxubW9kdWxlIE1hbnlfYW5kX3Bvc2l0aW9ucyA9ICh2YWwgYW5kX3Bvc2l0aW9ucyBNYW55IEF1dG9tYXRvbl9zdGFjay5nZXRfbWFueSlcblxubW9kdWxlIEVhZ2VyX2FuZF9wb3NpdGlvbnMgPVxuICAodmFsIFBhcnNlci5tYWtlX2VhZ2VyXG4gICAgICAgICBTZXhwX3dpdGhfcG9zaXRpb25zXG4gICAgICAgICAoQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUgfD4gYW5kX2dldF9wb3NpdGlvbnMpKVxuXG5sZXQganVzdF9nZXRfcG9zaXRpb25zIHN0YXRlICgpID0gQS5wb3NpdGlvbnMgc3RhdGVcbmxldCBqdXN0X3Bvc2l0aW9ucyBtb2RlID0gUGFyc2VyLm1ha2UgUG9zaXRpb25zIG1vZGUganVzdF9nZXRfcG9zaXRpb25zXG5cbm1vZHVsZSBTaW5nbGVfanVzdF9wb3NpdGlvbnMgPSAodmFsIGp1c3RfcG9zaXRpb25zIFNpbmdsZSlcbm1vZHVsZSBNYW55X2p1c3RfcG9zaXRpb25zID0gKHZhbCBqdXN0X3Bvc2l0aW9ucyBNYW55KVxubW9kdWxlIEVhZ2VyX2p1c3RfcG9zaXRpb25zID0gKHZhbCBQYXJzZXIubWFrZV9lYWdlciBQb3NpdGlvbnMganVzdF9nZXRfcG9zaXRpb25zKVxuXG5sZXQgY3N0IG1vZGUgZiA9IFBhcnNlci5tYWtlIENzdCBtb2RlIChjb25zdCBmKVxuXG5tb2R1bGUgTWFueV9jc3QgPSAodmFsIGNzdCBNYW55IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55KVxuXG5tb2R1bGUgRWFnZXJfY3N0ID1cbiAgKHZhbCBQYXJzZXIubWFrZV9lYWdlciBDc3QgKGZ1biBfIHN0YWNrIC0+XG4gICAgIG1hdGNoIEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55IHN0YWNrIHdpdGhcbiAgICAgfCBbIHNleHAgXSAtPiBzZXhwXG4gICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuXG50eXBlICdhIGlkID0gJ2FcbnR5cGUgc2V4cF9saXN0ID0gU2V4cC50IGxpc3RcblxubW9kdWxlIENvbnZfc2luZ2xlID1cbiAgQ29udi5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXMgPSAnYVxuICAgICAgdHlwZSBwYXJzZWRfc2V4cCA9IFNleHAudFxuICAgICAgdHlwZSBjaHVua190b19jb252ID0gU2V4cC50XG5cbiAgICAgIGxldCBhcHBseV9mIHggfmYgPSBmIHhcbiAgICAgIGxldCBmaW5kID0gUG9zaXRpb25zLmZpbmRfc3ViX3NleHBfcGh5c1xuICAgIGVuZClcbiAgICAoU2luZ2xlKVxuICAgIChTaW5nbGVfanVzdF9wb3NpdGlvbnMpXG5cbm1vZHVsZSBDb252X21hbnkgPVxuICBDb252Lk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcyA9ICdhIGxpc3RcbiAgICAgIHR5cGUgcGFyc2VkX3NleHAgPSBTZXhwLnQgbGlzdFxuICAgICAgdHlwZSBjaHVua190b19jb252ID0gU2V4cC50XG5cbiAgICAgIGxldCBhcHBseV9mIHggfmYgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHggfmYpXG4gICAgICBsZXQgZmluZCA9IFBvc2l0aW9ucy5maW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5c1xuICAgIGVuZClcbiAgICAoTWFueSlcbiAgICAoTWFueV9qdXN0X3Bvc2l0aW9ucylcblxubW9kdWxlIENvbnZfbWFueV9hdF9vbmNlID1cbiAgQ29udi5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXMgPSAnYVxuICAgICAgdHlwZSBwYXJzZWRfc2V4cCA9IFNleHAudCBsaXN0XG4gICAgICB0eXBlIGNodW5rX3RvX2NvbnYgPSBTZXhwLnQgbGlzdFxuXG4gICAgICBsZXQgYXBwbHlfZiB4IH5mID0gZiB4XG4gICAgICBsZXQgZmluZCA9IFBvc2l0aW9ucy5maW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5c1xuICAgIGVuZClcbiAgICAoTWFueSlcbiAgICAoTWFueV9qdXN0X3Bvc2l0aW9ucylcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEF1dG9tYXRvbiA9IEF1dG9tYXRvblxuICBtb2R1bGUgQXV0b21hdG9uX3N0YWNrID0gQXV0b21hdG9uX3N0YWNrXG4gIG1vZHVsZSBBdXRvbWF0b25fc3RhdGUgPSBBdXRvbWF0b25fc3RhdGVcbiAgbW9kdWxlIFBvc2l0aW9ucyA9IFBvc2l0aW9uc1xuZW5kXG4iLCIoKiBmb3IgbGV4aW5nIHBvc2l0aW9uczpcbiAgIC0gbG51bSBzdGFydHMgZnJvbSAxXG4gICAtIGNudW0gc3RhcnRzIGZyb20gMFxuICAgLSBwb3NfYm9sIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBsaW5lXG5cbiAgIGZvciBhYnNvbHV0ZSBwb3M6XG4gICAtIHJvdyBzdGFydHMgZnJvbSAxXG4gICAtIGNvbCBzdGFydHMgZnJvbSAxXG5cbiAgIGZvciByZWxhdGl2ZSBwb3MsIG9idmlvdXNseSAwIG1lYW5zIHNhbWUgcG9zaXRpb25cbiopXG5cbigqIG9wZXJhdGlvbnMgdGhhdCBtYWtlIHNlbnNlIGZvciBib3RoIGFic29sdXRlIGFuZCByZWxhdGl2ZSBwb3NpdGlvbnMgKilcbm1vZHVsZSBQb3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHJvdyA6IGludFxuICAgIDsgY29sIDogaW50XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgeyByb3c7IGNvbCB9ID0gVHlwZS5BdG9tIChQcmludGYuc3ByaW50ZiBcIiVkOiVkXCIgcm93IGNvbClcbiAgbGV0IGFkZCB0MSB0MiA9IHsgcm93ID0gdDEucm93ICsgdDIucm93OyBjb2wgPSB0MS5jb2wgKyB0Mi5jb2wgfVxuICBsZXQgc3ViIHQxIHQyID0geyByb3cgPSB0MS5yb3cgLSB0Mi5yb3c7IGNvbCA9IHQxLmNvbCAtIHQyLmNvbCB9XG5cbiAgbGV0IGNvbXBhcmUgeyByb3cgPSByMTsgY29sID0gYzEgfSB7IHJvdyA9IHIyOyBjb2wgPSBjMiB9ID1cbiAgICBpZiByMSA9IHIyIHRoZW4gYzEgLSBjMiBlbHNlIHIxIC0gcjJcbiAgOztcblxuICBsZXQgZ2VxIHQxIHQyID0gY29tcGFyZSB0MSB0MiA+PSAwXG5lbmRcblxubW9kdWxlIFJlbGF0aXZlID0gc3RydWN0XG4gIGluY2x1ZGUgUG9zXG5cbiAgbGV0IHplcm8gPSB7IHJvdyA9IDA7IGNvbCA9IDAgfVxuZW5kXG5cbm1vZHVsZSBBYnNvbHV0ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFBvc1xuXG4gIGxldCBvcmlnaW4gPSB7IHJvdyA9IDE7IGNvbCA9IDEgfVxuXG4gIGxldCBvZl9sZXhpbmcgeyBMZXhpbmcucG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sOyBwb3NfZm5hbWUgPSBfIH0gPVxuICAgIHsgcm93ID0gcG9zX2xudW07IGNvbCA9IHBvc19jbnVtIC0gcG9zX2JvbCArIDEgfVxuICA7O1xuXG4gIGxldCBkaWZmID0gc3ViXG5lbmRcbiIsIigqKiBUeXBlIG9mIGFubm90YXRlZCBTLWV4cHJlc3Npb25zICopXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBtYXAgdCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgZiB0KVxuZW5kXG5cbm1vZHVsZSBNYWtlIChQb3MgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFR5cGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICgqKiBJbiBbQXRvbSAoXywgcywgb3B0KV0sIFtzXSBpcyB0aGUgdW5lc2NhcGVkIHN0cmluZywgdGhhdCBpcyB0aGUgYXJndW1lbnQgb2ZcbiAgICAgICAgW1R5cGUuQXRvbV0uIFdoZW4gW29wdF0gaXMgZGVmaW5lZCwgaXQgaXMgdGhlIHNvdXJjZSBzeW50YXggb2YgW3NdLCB0aGF0IGlzIGFcbiAgICAgICAgc3RyaW5nIHRoYXQgY2FuIGJlIHByaW50ZWQgYXMgaXMgaWYgb25lIHdhbnRzIHRvIHBhcnNlIGFuZCBwcmludCBwcmVzZXJ2aW5nXG4gICAgICAgIHN5bnRheC4gVGhpcyBpcyB1c3VhbGx5IHNldCBmb3IgcXVvdGVkIGF0b21zICh0byBwcmVzZXJ2ZSB0aGUgZmFjdCB0aGF0IHdlcmVcbiAgICAgICAgcXVvdGVkKSwgYnV0IGl0IGNhbiBiZSB1c2VmdWwgdG8gZG8gdGhlIHJldmVyc2U6IHNldCBpdCBmb3IgYXRvbXMgdGhhdCBjYW4gYmVcbiAgICAgICAgcGFyc2VkIHVucXVvdGVkIGJ1dCB3b3VsZCBiZSBwcmludGVkIHdpdGggcXVvdGVzLCB0byBwcmVzZXJ2ZSB0aGUgbGFjayBvZiBxdW90ZXMuXG4gICAgICAgIEZvciBpbnN0YW5jZTpcbiAgICAgICAgQXRvbSAoXywgXCJhXCIsIE5vbmUpIHNob3VsZCBiZSBwcmludGVkIHt8YXx9XG4gICAgICAgIEF0b20gKF8sIFwiYSBiXCIsIE5vbmUpIHNob3VsZCBiZSBwcmludGVkIHt8XCJhIGJcInx9XG4gICAgICAgIEF0b20gKF8sIFwiYVwiLCBTb21lIFwiXFxcImFcXFwiXCIpIHNob3VsZCBiZSBwcmludGVkIHt8XCJhXCJ8fVxuICAgICAgICBBdG9tIChfLCBcImEgYlwiLCBTb21lIFwiYSBiXCIpIHNob3VsZCBiZSBwcmludGVkIHt8YSBifH0gb3IgbWF5IHJhaXNlLCBhcyBpdCBpc1xuICAgICAgICBhbiBlcnJvciB0byBjb25zdHJ1Y3RlZCBzdWNoIGFuIGF0b20gKGRvZXNuJ3QgcGFyc2UgYmFjaykgKilcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBdG9tIG9mIFBvcy50ICogc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICAgfCBMaXN0IG9mIFBvcy50ICogdF9vcl9jb21tZW50IGxpc3QgKiBQb3MudFxuXG4gICAgKCogcG9zaXRpb25zIG9mIGxlZnQgYW5kIHJpZ2h0IHBhcmVucyAqKVxuICAgIGFuZCB0X29yX2NvbW1lbnQgPVxuICAgICAgfCBTZXhwIG9mIHRcbiAgICAgIHwgQ29tbWVudCBvZiBjb21tZW50XG5cbiAgICBhbmQgY29tbWVudCA9XG4gICAgICB8IFBsYWluX2NvbW1lbnQgb2YgUG9zLnQgKiBzdHJpbmdcbiAgICAgIHwgU2V4cF9jb21tZW50IG9mIFBvcy50ICogY29tbWVudCBsaXN0ICogdFxuICBlbmRcblxuICBpbmNsdWRlIFRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBUXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBUeXBlLnRcbiAgICB2YWwgc2V4cF9vZl9jb21tZW50IDogY29tbWVudCAtPiBUeXBlLnRcbiAgICB2YWwgc2V4cF9vZl90X29yX2NvbW1lbnQgOiB0X29yX2NvbW1lbnQgLT4gVHlwZS50XG4gIGVuZFxuXG4gIG1vZHVsZSBUb19zZXhwIDogc2lnXG4gICAgdmFsIG9mX3QgOiB0IC0+IFR5cGUudFxuICAgIHZhbCBvZl9jb21tZW50IDogY29tbWVudCAtPiBUeXBlLnRcbiAgICB2YWwgb2ZfdF9vcl9jb21tZW50IDogdF9vcl9jb21tZW50IC0+IFR5cGUudFxuICBlbmQgPSBzdHJ1Y3RcbiAgICAoKiBtYXliZSB3ZSBjYW4gYWN0dWFsbHkgdXNlIGNvbnYgaGVyZSwgaW5zdGVhZCBvZiBpbmxpbmluZyBpdCAqKVxuXG4gICAgbGV0IG9mX3BvcyA9IFBvcy5zZXhwX29mX3RcbiAgICBsZXQgb2Zfc3RyaW5nIHggPSBUeXBlLkF0b20geFxuICAgIGxldCBvZl9saXN0IG9mX2EgeHMgPSBUeXBlLkxpc3QgKExpc3QubWFwIH5mOm9mX2EgeHMpXG5cbiAgICBsZXQgb2Zfb3B0aW9uIG9mX2EgPSBmdW5jdGlvblxuICAgICAgfCBTb21lIHggLT4gVHlwZS5MaXN0IFsgb2ZfYSB4IF1cbiAgICAgIHwgTm9uZSAtPiBUeXBlLkxpc3QgW11cbiAgICA7O1xuXG4gICAgbGV0IHJlYyBvZl90ID0gZnVuY3Rpb25cbiAgICAgIHwgQXRvbSAodjEsIHYyLCB2MykgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiQXRvbVwiOyBvZl9wb3MgdjE7IG9mX3N0cmluZyB2Mjsgb2Zfb3B0aW9uIG9mX3N0cmluZyB2MyBdXG4gICAgICB8IExpc3QgKHYxLCB2MiwgdjMpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIkxpc3RcIjsgb2ZfcG9zIHYxOyBvZl9saXN0IG9mX3Rfb3JfY29tbWVudCB2Mjsgb2ZfcG9zIHYzIF1cblxuICAgIGFuZCBvZl90X29yX2NvbW1lbnQgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwIHQgLT4gVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiU2V4cFwiOyBvZl90IHQgXVxuICAgICAgfCBDb21tZW50IGMgLT4gVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiQ29tbWVudFwiOyBvZl9jb21tZW50IGMgXVxuXG4gICAgYW5kIG9mX2NvbW1lbnQgPSBmdW5jdGlvblxuICAgICAgfCBQbGFpbl9jb21tZW50ICh2MSwgdjIpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIlBsYWluX2NvbW1lbnRcIjsgb2ZfcG9zIHYxOyBvZl9zdHJpbmcgdjIgXVxuICAgICAgfCBTZXhwX2NvbW1lbnQgKHYxLCB2MiwgdjMpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIlNleHBfY29tbWVudFwiOyBvZl9wb3MgdjE7IG9mX2xpc3Qgb2ZfY29tbWVudCB2Mjsgb2ZfdCB2MyBdXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFRvX3NleHAub2ZfdFxuICBsZXQgc2V4cF9vZl9jb21tZW50ID0gVG9fc2V4cC5vZl9jb21tZW50XG4gIGxldCBzZXhwX29mX3Rfb3JfY29tbWVudCA9IFRvX3NleHAub2ZfdF9vcl9jb21tZW50XG5lbmRcblxuaW5jbHVkZSBNYWtlIChTcmNfcG9zLlJlbGF0aXZlKVxubW9kdWxlIFBhcnNlZCA9IE1ha2UgKFNyY19wb3MuQWJzb2x1dGUpXG5cbmxldCByZWxhdGl2aXplID1cbiAgbGV0IHJlbCB+b3V0ZXJfcCBwID0gU3JjX3Bvcy5BYnNvbHV0ZS5kaWZmIHAgb3V0ZXJfcCBpblxuICBsZXQgcmVjIGF1eF90IH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5BdG9tIChwb3MsIHMsIHNvcHQpIC0+IEF0b20gKHJlbCBwb3Mgfm91dGVyX3AsIHMsIHNvcHQpXG4gICAgfCBQYXJzZWQuTGlzdCAoc3RhcnRfcG9zLCB0b2NzLCBlbmRfcG9zKSAtPlxuICAgICAgTGlzdFxuICAgICAgICAoIHJlbCBzdGFydF9wb3Mgfm91dGVyX3BcbiAgICAgICAgLCBMaXN0Lm1hcCB0b2NzIH5mOihmdW4gdG9jIC0+IGF1eF90b2Mgfm91dGVyX3A6c3RhcnRfcG9zIHRvYylcbiAgICAgICAgLCByZWwgZW5kX3BvcyB+b3V0ZXJfcCApXG4gIGFuZCBhdXhfdG9jIH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5TZXhwIHQgLT4gU2V4cCAoYXV4X3QgdCB+b3V0ZXJfcClcbiAgICB8IFBhcnNlZC5Db21tZW50IGMgLT4gQ29tbWVudCAoYXV4X2MgYyB+b3V0ZXJfcClcbiAgYW5kIGF1eF9jIH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5QbGFpbl9jb21tZW50IChwb3MsIHR4dCkgLT4gUGxhaW5fY29tbWVudCAocmVsIHBvcyB+b3V0ZXJfcCwgdHh0KVxuICAgIHwgUGFyc2VkLlNleHBfY29tbWVudCAocG9zLCBjcywgdCkgLT5cbiAgICAgIFNleHBfY29tbWVudFxuICAgICAgICAocmVsIHBvcyB+b3V0ZXJfcCwgTGlzdC5tYXAgY3MgfmY6KGZ1biBjIC0+IGF1eF9jIH5vdXRlcl9wIGMpLCBhdXhfdCB0IH5vdXRlcl9wKVxuICBpblxuICBmdW4gdG9jIC0+IGF1eF90b2MgdG9jIH5vdXRlcl9wOlNyY19wb3MuQWJzb2x1dGUub3JpZ2luXG47O1xuIiwidHlwZSB0b2tlbiA9XG4gIHwgU1RSSU5HIG9mIChcbiMgMTUgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgIHN0cmluZ1xuIyA2IFwic3JjL3BhcnNlci5tbFwiXG4pXG4gIHwgTFBBUkVOXG4gIHwgUlBBUkVOXG4gIHwgRU9GXG4gIHwgSEFTSF9TRU1JXG5cbm9wZW4gUGFyc2luZ1xubGV0IF8gPSBwYXJzZV9lcnJvcjs7XG4jIDIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICgqIFBhcnNlcjogR3JhbW1hciBTcGVjaWZpY2F0aW9uIGZvciBQYXJzaW5nIFMtZXhwcmVzc2lvbnMgKilcblxuICBvcGVuIExleGluZ1xuXG4gIGxldCBwYXJzZV9mYWlsdXJlIHdoYXQgPVxuICAgIGxldCBwb3MgPSBQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkgaW5cbiAgICBsZXQgbXNnID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiU2V4cGxpYi5QYXJzZXI6IGZhaWxlZCB0byBwYXJzZSBsaW5lICVkIGNoYXIgJWQ6ICVzXCJcbiAgICAgICAgcG9zLnBvc19sbnVtIChwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbCkgd2hhdCBpblxuICAgIGZhaWx3aXRoIG1zZ1xuXG4jIDI3IFwic3JjL3BhcnNlci5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAyNTggKCogTFBBUkVOICopO1xuICAyNTkgKCogUlBBUkVOICopO1xuICAgIDAgKCogRU9GICopO1xuICAyNjAgKCogSEFTSF9TRU1JICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAyNTcgKCogU1RSSU5HICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlsZW4gPSBcIlxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcIlxuXG5sZXQgeXlkZWZyZWQgPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDA5XFwwMDBcXDAxM1xcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDIyXFwwMDBcXDAyNVxcMDAwXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMjBcXDAwMFxcMDI2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwMVxcMDAwXFwwMTBcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMTJcXDAwMFxcMDIxXFwwMDBcXDAxN1xcMDAwXFwwMThcXDAwMFxcMDE5XFwwMDBcXDAwNVxcMDAwXFwwMDhcXDAwMFwiXG5cbmxldCB5eWRnb3RvID0gXCJcXDAwNVxcMDAwXFxcblxcMDEwXFwwMDBcXDAxNVxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxMVxcMDAwXFwwMjBcXDAwMFxcMDIxXFwwMDBcXDAxM1xcMDAwXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDA0MFxcMDAwXFxcblxcMDM0XFwyNTVcXDAwMVxcMDAwXFwwMDZcXDAwMFxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1OFxcMjU1XFxcblxcMDM0XFwyNTVcXDAwMFxcMDAwXFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwNjNcXDI1NVxcMDM0XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlyaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWdpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTRcXDI1NVxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMjlcXDAwMFwiXG5cbmxldCB5eXRhYmxlc2l6ZSA9IDI4NlxubGV0IHl5dGFibGUgPSBcIlxcMDE2XFwwMDBcXFxuXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjVcXDAwMFxcMDAwXFwwMDBcXDAyM1xcMDAwXFwwMjlcXDAwMFxcMDI3XFwwMDBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM3XFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwMzlcXDAwMFxcMDIyXFwwMDBcXFxuXFwwMjJcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDIyXFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNlxcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXFxuXFwwMzFcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDI2XFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDhcXDAwMFxcMDM4XFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXCJcblxubGV0IHl5Y2hlY2sgPSBcIlxcMDAyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA4XFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXFxuXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXDAyN1xcMDAwXFwwMjhcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDA4XFwwMDBcXDAwNFxcMDAxXFwyNTVcXDI1NVxcMDExXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDIxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXFxuXFwwMjhcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXCJcblxubGV0IHl5bmFtZXNfY29uc3QgPSBcIlxcXG4gIExQQVJFTlxcMDAwXFxcbiAgUlBBUkVOXFwwMDBcXFxuICBFT0ZcXDAwMFxcXG4gIEhBU0hfU0VNSVxcMDAwXFxcbiAgXCJcblxubGV0IHl5bmFtZXNfYmxvY2sgPSBcIlxcXG4gIFNUUklOR1xcMDAwXFxcbiAgXCJcblxubGV0IHl5YWN0ID0gW3xcbiAgKGZ1biBfIC0+IGZhaWx3aXRoIFwicGFyc2VyXCIpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzMiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgKVxuIyAxNzQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDE4MSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICggVHlwZS5BdG9tIF8xIClcbiMgMTg4IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICggVHlwZS5MaXN0IFtdIClcbiMgMTk0IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzggXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVHlwZS5MaXN0IChMaXN0LnJldiBfMikgKVxuIyAyMDEgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM5IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICggcGFyc2VfZmFpbHVyZSBcInNleHBcIiApXG4jIDIwNyBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMTQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0MyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMjIgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMjkgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudHMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzZXhwX2NvbW1lbnRzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjM3IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2NvbW1lbnRzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTAgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgXzEgKVxuIyAyNDQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTb21lIF8yIClcbiMgMjUyIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDUyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAoIE5vbmUgKVxuIyAyNTggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTm9uZSApXG4jIDI2NSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIFtfMV0gKVxuIyAyNzIgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAoIFtdIClcbiMgMjc5IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU4IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8yIDo6IF8xIClcbiMgMjg3IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTkgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI5NSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAzMDIgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDYzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAoIFtdIClcbiMgMzA4IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjYgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBMaXN0LnJldiBfMSApXG4jIDMxNSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjcgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggW10gKVxuIyAzMjEgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuKCogRW50cnkgc2V4cCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwX29wdCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSByZXZfc2V4cHMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxufF1cbmxldCB5eXRhYmxlcyA9XG4gIHsgUGFyc2luZy5hY3Rpb25zPXl5YWN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2NvbnN0PXl5dHJhbnNsX2NvbnN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2Jsb2NrPXl5dHJhbnNsX2Jsb2NrO1xuICAgIFBhcnNpbmcubGhzPXl5bGhzO1xuICAgIFBhcnNpbmcubGVuPXl5bGVuO1xuICAgIFBhcnNpbmcuZGVmcmVkPXl5ZGVmcmVkO1xuICAgIFBhcnNpbmcuZGdvdG89eXlkZ290bztcbiAgICBQYXJzaW5nLnNpbmRleD15eXNpbmRleDtcbiAgICBQYXJzaW5nLnJpbmRleD15eXJpbmRleDtcbiAgICBQYXJzaW5nLmdpbmRleD15eWdpbmRleDtcbiAgICBQYXJzaW5nLnRhYmxlc2l6ZT15eXRhYmxlc2l6ZTtcbiAgICBQYXJzaW5nLnRhYmxlPXl5dGFibGU7XG4gICAgUGFyc2luZy5jaGVjaz15eWNoZWNrO1xuICAgIFBhcnNpbmcuZXJyb3JfZnVuY3Rpb249cGFyc2VfZXJyb3I7XG4gICAgUGFyc2luZy5uYW1lc19jb25zdD15eW5hbWVzX2NvbnN0O1xuICAgIFBhcnNpbmcubmFtZXNfYmxvY2s9eXluYW1lc19ibG9jayB9XG5sZXQgc2V4cCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMSBsZXhmdW4gbGV4YnVmIDogVHlwZS50KVxubGV0IHNleHBfb3B0IChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAyIGxleGZ1biBsZXhidWYgOiBUeXBlLnQgb3B0aW9uKVxubGV0IHNleHBzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAzIGxleGZ1biBsZXhidWYgOiBUeXBlLnQgbGlzdClcbmxldCByZXZfc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDQgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBsaXN0KVxuIiwidHlwZSB0b2tlbiA9XG4gIHwgU1RSSU5HIG9mIChcbiMgNTMgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgIHN0cmluZyAqIChMZXhpbmcucG9zaXRpb24gKiBzdHJpbmcpIG9wdGlvblxuIyA2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4pXG4gIHwgQ09NTUVOVCBvZiAoXG4jIDU0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICBzdHJpbmcgKiBMZXhpbmcucG9zaXRpb24gb3B0aW9uXG4jIDExIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4pXG4gIHwgTFBBUkVOXG4gIHwgUlBBUkVOXG4gIHwgRU9GXG4gIHwgSEFTSF9TRU1JXG5cbm9wZW4gUGFyc2luZ1xubGV0IF8gPSBwYXJzZV9lcnJvcjs7XG4jIDIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICgqIFBhcnNlcjogR3JhbW1hciBTcGVjaWZpY2F0aW9uIGZvciBQYXJzaW5nIFMtZXhwcmVzc2lvbnMgKilcbiAgKCogY29tcGFyZSB0byBwYXJzZXIubWx5ICopXG5cbiAgb3BlbiBMZXhpbmdcblxuICBsZXQgcGFyc2VfZmFpbHVyZSB3aGF0ID1cbiAgICBsZXQgcG9zID0gUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpIGluXG4gICAgbGV0IG1zZyA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIlNleHBsaWIuUGFyc2VyOiBmYWlsZWQgdG8gcGFyc2UgbGluZSAlZCBjaGFyICVkOiAlc1wiXG4gICAgICAgIHBvcy5wb3NfbG51bSAocG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpIHdoYXQgaW5cbiAgICBmYWlsd2l0aCBtc2dcblxuICBtb2R1bGUgV2l0aF9wb3MgPSBzdHJ1Y3RcblxuICAgIG9wZW4gVHlwZV93aXRoX2xheW91dC5QYXJzZWRcblxuICAgIGxldCBjb2VyY2UgPSBTcmNfcG9zLkFic29sdXRlLm9mX2xleGluZ1xuXG4gICAgbGV0IHN0YXJ0X3BvcyAoKSA9IGNvZXJjZSAoUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpKVxuXG4gICAgbGV0IGVuZF9wb3MgKCkgPVxuICAgICAgbGV0IHAgPSBQYXJzaW5nLnN5bWJvbF9lbmRfcG9zICgpIGluXG4gICAgICBjb2VyY2UgeyBwIHdpdGggTGV4aW5nLnBvc19jbnVtID0gcC5MZXhpbmcucG9zX2NudW0gLSAxIH1cblxuICAgIGxldCBhdG9tICh4LCB5KSA9XG4gICAgICBsZXQgKHBvcywgeSkgPVxuICAgICAgICBtYXRjaCB5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChzdGFydF9wb3MgKCksIFNvbWUgeClcbiAgICAgICAgfCBTb21lIChwb3MsIHgpIC0+IChjb2VyY2UgcG9zLCBTb21lIHgpXG4gICAgICBpblxuICAgICAgQXRvbSAocG9zLCB4LCB5KVxuXG4gICAgbGV0IGxpc3QgdHMgPSBMaXN0IChzdGFydF9wb3MgKCksIHRzLCBlbmRfcG9zICgpKVxuXG4gICAgbGV0IHNleHAgICAgeCA9IFNleHAgICAgeFxuICAgIGxldCBjb21tZW50IHggPSBDb21tZW50IHhcblxuICAgIGxldCBzZXhwX2NvbW1lbnQgY3MgdCA9IFNleHBfY29tbWVudCAoc3RhcnRfcG9zICgpLCBjcywgdClcblxuICAgIGxldCBwbGFpbl9jb21tZW50ICh4LCBwb3Nfb3B0KSA9XG4gICAgICBsZXQgcG9zID1cbiAgICAgICAgbWF0Y2ggcG9zX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzdGFydF9wb3MgKClcbiAgICAgICAgfCBTb21lIHBvcyAtPiBjb2VyY2UgcG9zXG4gICAgICBpblxuICAgICAgUGxhaW5fY29tbWVudCAocG9zLCB4KVxuXG4gIGVuZFxuXG4jIDcwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAyNTkgKCogTFBBUkVOICopO1xuICAyNjAgKCogUlBBUkVOICopO1xuICAgIDAgKCogRU9GICopO1xuICAyNjEgKCogSEFTSF9TRU1JICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAyNTcgKCogU1RSSU5HICopO1xuICAyNTggKCogQ09NTUVOVCAqKTtcbiAgICAwfF1cblxubGV0IHl5bGhzID0gXCJcXDI1NVxcMjU1XFxcblxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFxcblxcMDEwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcblxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5bGVuID0gXCJcXDAwMlxcMDAwXFxcblxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXCJcblxubGV0IHl5ZGVmcmVkID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDA0XFwwMDBcXDAxMFxcMDAwXFwwMDZcXDAwMFxcMDIyXFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEyXFwwMDBcXDAxNFxcMDAwXFxcblxcMDEzXFwwMDBcXDAyM1xcMDAwXFwwMjBcXDAwMFxcMDE1XFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDE2XFwwMDBcXDAyMVxcMDAwXFxcblxcMDExXFwwMDBcXDAxN1xcMDAwXFwwMDJcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA2XFwwMDBcXFxuXFwwMjBcXDAwMFxcMDE4XFwwMDBcXDAyMVxcMDAwXFwwMjNcXDAwMFxcMDI2XFwwMDBcXDAxM1xcMDAwXFwwMjRcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMjlcXDAwMFxcMDE1XFwwMDBcXDAyMlxcMDAwXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDAzN1xcMDAwXFxcblxcMDA5XFwyNTVcXDAwMVxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAyNVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwyNTVcXDAwOVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5cmluZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjdcXDI1NVxcMjUxXFwyNTVcXDIzNVxcMjU1XFxcblxcMDAwXFwwMDBcXDIzNFxcMjU1XFwwMTBcXDAwMFwiXG5cbmxldCB5eXRhYmxlc2l6ZSA9IDI5MlxubGV0IHl5dGFibGUgPSBcIlxcMDM2XFwwMDBcXFxuXFwwMTZcXDAwMFxcMDMzXFwwMDBcXDAxMlxcMDAwXFwwMTdcXDAwMFxcMDI4XFwwMDBcXDAzM1xcMDAwXFwwMTlcXDAwMFxcMDM3XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDI1XFwwMDBcXDAxMVxcMDAwXFwwMjdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMzJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMzVcXDAwMFxcMDExXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFwiXG5cbmxldCB5eWNoZWNrID0gXCJcXDAyOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAyNFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAxMFxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDAyOVxcMDAwXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDVcXDAwMVxcMDA1XFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcblxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDA0XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFxcblxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgTFBBUkVOXFwwMDBcXFxuICBSUEFSRU5cXDAwMFxcXG4gIEVPRlxcMDAwXFxcbiAgSEFTSF9TRU1JXFwwMDBcXFxuICBcIlxuXG5sZXQgeXluYW1lc19ibG9jayA9IFwiXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBDT01NRU5UXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcgKiAoTGV4aW5nLnBvc2l0aW9uICogc3RyaW5nKSBvcHRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDc1IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAoIFdpdGhfcG9zLmF0b20gXzEgKVxuIyAyMjIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgNzYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggV2l0aF9wb3MubGlzdCAoTGlzdC5yZXYgXzIpIClcbiMgMjI5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgKCBwYXJzZV9mYWlsdXJlIFwic2V4cFwiIClcbiMgMjM1IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nICogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgODAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAoIFdpdGhfcG9zLnBsYWluX2NvbW1lbnQgXzEgKVxuIyAyNDIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X2NvbW1lbnRzX2FicykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4MSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLnNleHBfY29tbWVudCAoTGlzdC5yZXYgXzIpIF8zIClcbiMgMjUwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgODQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAoIFtdIClcbiMgMjU2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfY29tbWVudHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X2NvbW1lbnRzX2FicykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4NSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyNjQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9jb21tZW50c19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgODggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBXaXRoX3Bvcy5zZXhwIF8xIClcbiMgMjcxIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4OSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLmNvbW1lbnQgXzEgKVxuIyAyNzggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA5MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAoIFtdIClcbiMgMjg0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA5MyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyOTIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgOTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgKCBUeXBlX3dpdGhfbGF5b3V0LnJlbGF0aXZpemUgXzEgKVxuIyAyOTkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA5OSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICggU29tZSBfMSApXG4jIDMwNiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwMCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgKCBOb25lIClcbiMgMzEyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwMyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICggW18xXSApXG4jIDMxOSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMDQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAzMjcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyAxMDcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDMzNCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMDggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICggW10gKVxuIyAzNDAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExMSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIExpc3QucmV2IF8xIClcbiMgMzQ3IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDExMiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDM1MyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgMTE2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTGlzdC5yZXYgXzEgKVxuIyAzNjAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC5QYXJzZWQudF9vcl9jb21tZW50IGxpc3QpKVxuKCogRW50cnkgc2V4cCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwX29wdCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwc19hYnMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgcmV2X3NleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbnxdXG5sZXQgeXl0YWJsZXMgPVxuICB7IFBhcnNpbmcuYWN0aW9ucz15eWFjdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9jb25zdD15eXRyYW5zbF9jb25zdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9ibG9jaz15eXRyYW5zbF9ibG9jaztcbiAgICBQYXJzaW5nLmxocz15eWxocztcbiAgICBQYXJzaW5nLmxlbj15eWxlbjtcbiAgICBQYXJzaW5nLmRlZnJlZD15eWRlZnJlZDtcbiAgICBQYXJzaW5nLmRnb3RvPXl5ZGdvdG87XG4gICAgUGFyc2luZy5zaW5kZXg9eXlzaW5kZXg7XG4gICAgUGFyc2luZy5yaW5kZXg9eXlyaW5kZXg7XG4gICAgUGFyc2luZy5naW5kZXg9eXlnaW5kZXg7XG4gICAgUGFyc2luZy50YWJsZXNpemU9eXl0YWJsZXNpemU7XG4gICAgUGFyc2luZy50YWJsZT15eXRhYmxlO1xuICAgIFBhcnNpbmcuY2hlY2s9eXljaGVjaztcbiAgICBQYXJzaW5nLmVycm9yX2Z1bmN0aW9uPXBhcnNlX2Vycm9yO1xuICAgIFBhcnNpbmcubmFtZXNfY29uc3Q9eXluYW1lc19jb25zdDtcbiAgICBQYXJzaW5nLm5hbWVzX2Jsb2NrPXl5bmFtZXNfYmxvY2sgfVxubGV0IHNleHAgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDEgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KVxubGV0IHNleHBfb3B0IChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAyIGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBvcHRpb24pXG5sZXQgc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpXG5sZXQgc2V4cHNfYWJzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyA0IGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LlBhcnNlZC50X29yX2NvbW1lbnQgbGlzdClcbmxldCByZXZfc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDUgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpXG4iLCIjIDEgXCJzcmMvbGV4ZXIubWxsXCJcbiBcbiAgKCoqIExleGVyOiBMZXhlciBTcGVjaWZpY2F0aW9uIGZvciBTLWV4cHJlc3Npb25zICopXG5cbiAgb3BlbiBQcmludGZcbiAgb3BlbiBMZXhpbmdcblxuICBsZXQgY2hhcl9mb3JfYmFja3NsYXNoID0gZnVuY3Rpb25cbiAgICB8ICduJyAtPiAnXFwwMTAnXG4gICAgfCAncicgLT4gJ1xcMDEzJ1xuICAgIHwgJ2InIC0+ICdcXDAwOCdcbiAgICB8ICd0JyAtPiAnXFwwMDknXG4gICAgfCBjIC0+IGNcblxuICBsZXQgbGYgPSAnXFwwMTAnXG5cbiAgbGV0IGRlY19jb2RlIGMxIGMyIGMzID1cbiAgICAxMDAgKiAoQ2hhci5jb2RlIGMxIC0gNDgpICsgMTAgKiAoQ2hhci5jb2RlIGMyIC0gNDgpICsgKENoYXIuY29kZSBjMyAtIDQ4KVxuXG4gIGxldCBoZXhfY29kZSBjMSBjMiA9XG4gICAgbGV0IGQxID0gQ2hhci5jb2RlIGMxIGluXG4gICAgbGV0IHZhbDEgPVxuICAgICAgaWYgZDEgPj0gOTcgdGhlbiBkMSAtIDg3XG4gICAgICBlbHNlIGlmIGQxID49IDY1IHRoZW4gZDEgLSA1NVxuICAgICAgZWxzZSBkMSAtIDQ4IGluXG4gICAgbGV0IGQyID0gQ2hhci5jb2RlIGMyIGluXG4gICAgbGV0IHZhbDIgPVxuICAgICAgaWYgZDIgPj0gOTcgdGhlbiBkMiAtIDg3XG4gICAgICBlbHNlIGlmIGQyID49IDY1IHRoZW4gZDIgLSA1NVxuICAgICAgZWxzZSBkMiAtIDQ4IGluXG4gICAgdmFsMSAqIDE2ICsgdmFsMlxuXG4gIGxldCBmb3VuZF9uZXdsaW5lIGxleGJ1ZiBkaWZmID1cbiAgICBsZXQgbGV4X2N1cnJfcCA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gICAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICAgIHtcbiAgICAgICAgbGV4X2N1cnJfcCB3aXRoXG4gICAgICAgIHBvc19sbnVtID0gbGV4X2N1cnJfcC5wb3NfbG51bSArIDE7XG4gICAgICAgIHBvc19ib2wgPSBsZXhfY3Vycl9wLnBvc19jbnVtIC0gZGlmZjtcbiAgICAgIH1cblxuICAoKiBzYW1lIGxlbmd0aCBjb21wdXRhdGlvbiBhcyBpbiBbTGV4aW5nLmxleGVtZV0gKilcbiAgbGV0IGxleGVtZV9sZW4geyBsZXhfc3RhcnRfcG9zOyBsZXhfY3Vycl9wb3M7IF8gfSA9IGxleF9jdXJyX3BvcyAtIGxleF9zdGFydF9wb3NcblxuICBsZXQgbWFpbl9mYWlsdXJlIGxleGJ1ZiBtc2cgPVxuICAgIGxldCB7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bTsgcG9zX2ZuYW1lID0gXyB9ID0gbGV4ZW1lX3N0YXJ0X3AgbGV4YnVmIGluXG4gICAgbGV0IG1zZyA9XG4gICAgICBzcHJpbnRmXG4gICAgICAgIFwiU2V4cGxpYi5MZXhlci5tYWluOiAlcyBhdCBsaW5lICVkIGNoYXIgJWRcIlxuICAgICAgICBtc2cgcG9zX2xudW0gKHBvc19jbnVtIC0gcG9zX2JvbClcbiAgICBpblxuICAgIGZhaWx3aXRoIG1zZ1xuXG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBtb2R1bGUgUXVvdGVkX3N0cmluZ19idWZmZXIgOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdmFsIGNyZWF0ZSA6IGludCAtPiB0XG4gICAgICB2YWwgYWRkX2NoYXIgOiB0IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgdmFsIGFkZF9zdWJieXRlcyA6IHQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICB2YWwgYWRkX2xleGVtZSA6IHQgLT4gbGV4YnVmIC0+IHVuaXRcbiAgICAgIHZhbCBjbGVhciA6IHQgLT4gdW5pdFxuICAgICAgdmFsIG9mX2J1ZmZlciA6IEJ1ZmZlci50IC0+IHRcbiAgICBlbmRcbiAgICBtb2R1bGUgVG9rZW4gOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdmFsIGxwYXJlbiA6IHRcbiAgICAgIHZhbCBycGFyZW4gOiB0XG4gICAgICB2YWwgZW9mIDogdFxuICAgICAgdmFsIHNpbXBsZV9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICAgICAgdmFsIGhhc2hfc2VtaSA6IHRcbiAgICAgIHZhbCBxdW90ZWRfc3RyaW5nIDogTGV4aW5nLnBvc2l0aW9uIC0+IFF1b3RlZF9zdHJpbmdfYnVmZmVyLnQgLT4gdFxuICAgICAgdHlwZSBzID0gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiBMZXhpbmcubGV4YnVmIC0+IHRcbiAgICAgIHZhbCBjb21tZW50IDogc3RyaW5nIC0+IG1haW46cyAtPiBzXG4gICAgICB2YWwgYmxvY2tfY29tbWVudCA6IExleGluZy5wb3NpdGlvbiAtPiBtYWluOnMgLT4gc1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoWCA6IFQpIDogc2lnXG4gICAgdmFsIG1haW4gOiA/YnVmOkJ1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gWC5Ub2tlbi50XG4gIGVuZCA9IHN0cnVjdCAoKiBCRUdJTiBGVU5DVE9SIEJPRFkgQ09OVEFJTklORyBHRU5FUkFURUQgQ09ERSAqKVxuICAgIG9wZW4gWFxuXG4jIDg0IFwic3JjL2xleGVyLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDI0NFxcMjU1XFwwMTBcXDAwMFxcMDQzXFwwMDBcXDA1M1xcMDAwXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwODZcXDAwMFxcMjQ4XFwyNTVcXDI0OVxcMjU1XFwwOTZcXDAwMFxcXG4gICAgXFwxMjlcXDAwMFxcMTM5XFwwMDBcXDE3MlxcMDAwXFwxODJcXDAwMFxcMjIwXFwwMDBcXDIzMFxcMDAwXFwwMDdcXDAwMVxcMjQ3XFwyNTVcXFxuICAgIFxcMDE3XFwwMDFcXDA1MFxcMDAxXFwwNjBcXDAwMVxcMDkzXFwwMDFcXDEwM1xcMDAxXFwxMzZcXDAwMVxcMTQ2XFwwMDFcXDE4MVxcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwyMjRcXDAwMVxcMjM0XFwwMDFcXDAxMVxcMDAyXFwwMzdcXDAwMFxcMjQ2XFwyNTVcXDA4MFxcMDAwXFwyNDhcXDI1NVxcXG4gICAgXFwwMjNcXDAwMlxcMjU1XFwyNTVcXDI0OVxcMjU1XFwwNTdcXDAwMlxcMDMzXFwwMDJcXDI1MlxcMjU1XFwwMDdcXDAwMFxcMDE2XFwwMDBcXFxuICAgIFxcMDE3XFwwMDBcXDExMlxcMDAyXFwyNTFcXDI1NVxcMTQ0XFwwMDJcXDI1MFxcMjU1XFwwODFcXDAwMFxcMjUwXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDEyMlxcMDAwXFwyNTVcXDI1NVxcMTY2XFwwMDBcXDEzMFxcMDAxXFwyNTJcXDI1NVxcMjUxXFwyNTVcXDE3M1xcMDAxXFwyNTFcXDAwMVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDI5XFwwMDBcXDAwMlxcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDAxMFxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDA0OFxcMDAwXFwwMDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0MVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyM1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDEyXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU3XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDE0XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU1XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDEzXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDIxXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM3XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMTdcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAyNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDU3XFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDM1XFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDVcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDA0NlxcMDAwXFwwMDlcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAzNlxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAzNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMzhcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAxMlxcMDAwXFxcbiAgICBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE1XFwwMDBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE1XFwwMDBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMzhcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwwMTJcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDM2XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDU2XFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTdcXDAwMFxcXG4gICAgXFwwMTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxN1xcMDAwXFwwMzhcXDAwMFxcMDE3XFwwMDBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNThcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNThcXDAwMFxcMDU4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE4XFwwMDBcXDA1M1xcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDE4XFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAwXFxcbiAgICBcXDAyMVxcMDAwXFwwMTlcXDAwMFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAxNlxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIxXFwwMDBcXDAxN1xcMDAwXFxcbiAgICBcXDAyMVxcMDAwXFwwMjFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMDI0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMDU4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM2XFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAyNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwwMjVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzOFxcMDAwXFwwNTNcXDAwMFxcMDI1XFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMDI2XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDI1NVxcMjU1XFwwMjhcXDAwMFxcMDI4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMjU1XFwyNTVcXDAyN1xcMDAwXFxcbiAgICBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDI4XFwwMDBcXDAyOFxcMDAwXFwwMTdcXDAwMFxcMDU5XFwwMDBcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDI4XFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAwXFwyNTVcXDI1NVxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNThcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAxOVxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAyOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDMzXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAzNFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDI5XFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXFxuICAgIFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMzRcXDAwMFxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcXG4gICAgXFwwMzVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFwwMzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNjJcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAyNVxcMDAwXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwNDBcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFxcbiAgICBcXDAyOVxcMDAwXFwwNDBcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzJcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgbWFpbiBidWYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21haW5fcmVjIGJ1ZiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X21haW5fcmVjIGJ1ZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAoIGZvdW5kX25ld2xpbmUgbGV4YnVmIDA7XG4gICAgICAgICAgICAgICAgICAgICAgIG1haW4gYnVmIGxleGJ1ZiApXG4jIDM3MCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDk3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICggbWFpbiBidWYgbGV4YnVmIClcbiMgMzc1IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDIgLT5cbmxldFxuIyA5OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0XG4jIDM4MSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgOTggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFRva2VuLmNvbW1lbnQgdGV4dCB+bWFpbiBidWYgbGV4YnVmIClcbiMgMzg1IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDMgLT5cbiMgOTkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBUb2tlbi5scGFyZW4gKVxuIyAzOTAgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxuIyAxMDAgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBUb2tlbi5ycGFyZW4gKVxuIyAzOTUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNSAtPlxuIyAxMDIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHBvcyA9IExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgcG9zIGxleGJ1ZjtcbiAgICAgICAgbGV0IHRvayA9IFRva2VuLnF1b3RlZF9zdHJpbmcgcG9zIGJ1ZiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5jbGVhciBidWY7XG4gICAgICAgIHRva1xuICAgICAgKVxuIyA0MDcgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNiAtPlxuIyAxMTAgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICggVG9rZW4uaGFzaF9zZW1pIClcbiMgNDEyIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDcgLT5cbiMgMTEyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBwb3MgPSBMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBbcG9zXSBsZXhidWY7XG4gICAgICAgIGxldCB0b2sgPSBUb2tlbi5ibG9ja19jb21tZW50IHBvcyB+bWFpbiBidWYgbGV4YnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgdG9rXG4gICAgICApXG4jIDQyNCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA4IC0+XG4jIDEyMCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgKCBtYWluX2ZhaWx1cmUgbGV4YnVmIFwiaWxsZWdhbCBlbmQgb2YgY29tbWVudFwiIClcbiMgNDI5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDkgLT5cbiMgMTI2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoIG1haW5fZmFpbHVyZSBsZXhidWYgXCJjb21tZW50IHRva2VucyBpbiB1bnF1b3RlZCBhdG9tXCIgKVxuIyA0MzQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMTAgLT5cbmxldFxuIyAxMjcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyXG4jIDQ0MCBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTI3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFRva2VuLnNpbXBsZV9zdHJpbmcgc3RyIClcbiMgNDQ0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDExIC0+XG4jIDEyOCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFRva2VuLmVvZiApXG4jIDQ0OSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21haW5fcmVjIGJ1ZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2Nhbl9zdHJpbmdfcmVjIGJ1ZiBzdGFydCBsZXhidWYgMzZcbmFuZCBfX29jYW1sX2xleF9zY2FuX3N0cmluZ19yZWMgYnVmIHN0YXJ0IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTMxIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmOyAoKSApXG4jIDQ2MSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDEzMyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgbGVuID0gbGV4ZW1lX2xlbiBsZXhidWYgLSAyIGluXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIGxlbjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDQ3MSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAyIC0+XG4jIDE0MCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgbGVuID0gbGV4ZW1lX2xlbiBsZXhidWYgLSAzIGluXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIGxlbjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDQ4MSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAzIC0+XG5sZXRcbiMgMTQ2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyA0ODcgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgaW5cbiMgMTQ3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNDk1IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDQgLT5cbmxldFxuIyAxNTIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICBjMVxuIyA1MDEgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuIyAxNTIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyXG4jIDUwNiBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDE1MiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjM1xuIyA1MTEgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMykgaW5cbiMgMTUzIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCB2ID0gZGVjX2NvZGUgYzEgYzIgYzMgaW5cbiAgICAgICAgaWYgdiA+IDI1NSB0aGVuIChcbiAgICAgICAgICBsZXQgeyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW07IHBvc19mbmFtZSA9IF8gfSA9IGxleGVtZV9lbmRfcCBsZXhidWYgaW5cbiAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICAgXCJTZXhwbGliLkxleGVyLnNjYW5fc3RyaW5nOiBcXFxuICAgICAgICAgICAgICAgaWxsZWdhbCBlc2NhcGUgYXQgbGluZSAlZCBjaGFyICVkOiBgXFxcXCVjJWMlYydcIlxuICAgICAgICAgICAgICBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sIC0gMylcbiAgICAgICAgICAgICAgYzEgYzIgYzMgaW5cbiAgICAgICAgICBmYWlsd2l0aCBtc2cpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgKENoYXIuY2hyIHYpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTI5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDUgLT5cbmxldFxuIyAxNjggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYzFcbiMgNTM1IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMTY4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJcbiMgNTQwIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpIGluXG4jIDE2OSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgdiA9IGhleF9jb2RlIGMxIGMyIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgdik7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1NDkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNiAtPlxubGV0XG4jIDE3NSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgY1xuIyA1NTUgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgaW5cbiMgMTc2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiBjO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTY0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDcgLT5cbiMgMTgzIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIDA7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiBsZjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDU3NCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA4IC0+XG4jIDE5MCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgb2ZzID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBvZnMgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBvZnMgbGVuO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTg1IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDkgLT5cbiMgMTk4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5MZXhlci5zY2FuX3N0cmluZzogdW50ZXJtaW5hdGVkIHN0cmluZyBhdCBsaW5lICVkIGNoYXIgJWRcIlxuICAgICAgICAgICAgc3RhcnQucG9zX2xudW0gKHN0YXJ0LnBvc19jbnVtIC0gc3RhcnQucG9zX2JvbClcbiAgICAgICAgaW5cbiAgICAgICAgZmFpbHdpdGggbXNnXG4gICAgICApXG4jIDU5NyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NjYW5fc3RyaW5nX3JlYyBidWYgc3RhcnQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NjYW5fYmxvY2tfY29tbWVudF9yZWMgYnVmIGxvY3MgbGV4YnVmIDUzXG5hbmQgX19vY2FtbF9sZXhfc2Nhbl9ibG9ja19jb21tZW50X3JlYyBidWYgbG9jcyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDIwOSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKCBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIDA7IHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWYgKVxuIyA2MTAgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyAyMTIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICggUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmIClcbiMgNjE2IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgMjE1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgbGV0IGN1ciA9IGxleGVtZV9lbmRfcCBsZXhidWYgaW5cbiAgICAgICAgbGV0IHN0YXJ0ID0geyBjdXIgd2l0aCBwb3NfY251bSA9IGN1ci5wb3NfY251bSAtIDEgfSBpblxuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmO1xuICAgICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmXG4gICAgICApXG4jIDYyNyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDIyMyBcInNyYy9sZXhlci5tbGxcIlxuICAgIChcbiAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgIGxldCBjdXIgPSBsZXhlbWVfZW5kX3AgbGV4YnVmIGluXG4gICAgICBsZXQgc3RhcnQgPSB7IGN1ciB3aXRoIHBvc19jbnVtID0gY3VyLnBvc19jbnVtIC0gMiB9IGluXG4gICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIChzdGFydCA6OiBsb2NzKSBsZXhidWZcbiAgICApXG4jIDYzNyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA0IC0+XG4jIDIzMCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIG1hdGNoIGxvY3Mgd2l0aFxuICAgICAgICB8IFtfXSAtPiAoKSAoKiB0aGUgY29tbWVudCBpcyBmaW5pc2hlZCAqKVxuICAgICAgICB8IF8gOjogKF8gOjogXyBhcyB0KSAtPiBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIHQgbGV4YnVmXG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlICAoKiBpbXBvc3NpYmxlICopXG4gICAgICApXG4jIDY0OCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA1IC0+XG4jIDIzOCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBtYXRjaCBsb2NzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCB7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bTsgcG9zX2ZuYW1lID0gXyB9IDo6IF8gLT5cbiAgICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgICBzcHJpbnRmIFwiU2V4cGxpYi5MZXhlci5zY2FuX2Jsb2NrX2NvbW1lbnQ6IFxcXG4gICAgICAgICAgICAgICAgdW50ZXJtaW5hdGVkIGJsb2NrIGNvbW1lbnQgYXQgbGluZSAlZCBjaGFyICVkXCJcbiAgICAgICAgICAgICAgICBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGZhaWx3aXRoIG1zZ1xuICAgICAgKVxuIyA2NjMgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zY2FuX2Jsb2NrX2NvbW1lbnRfcmVjIGJ1ZiBsb2NzIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDI1MCBcInNyYy9sZXhlci5tbGxcIlxuICAoKiBSRVNVTUUgRlVOQ1RPUiBCT0RZIENPTlRBSU5JTkcgR0VORVJBVEVEIENPREUgKilcblxuICAgIGxldCBtYWluID9idWYgPVxuICAgICAgbGV0IGJ1ZiA9XG4gICAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBRdW90ZWRfc3RyaW5nX2J1ZmZlci5jcmVhdGUgNjRcbiAgICAgICAgfCBTb21lIGJ1ZiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIub2ZfYnVmZmVyIGJ1ZlxuICAgICAgaW5cbiAgICAgIG1haW4gYnVmXG5cbiAgZW5kICgqIEVORCBGVU5DVE9SIEJPRFkgQ09OVEFJTklORyBHRU5FUkFURUQgQ09ERSAqKVxuXG4gIG1vZHVsZSBWYW5pbGxhID1cbiAgICBNYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBRdW90ZWRfc3RyaW5nX2J1ZmZlciA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEJ1ZmZlclxuICAgICAgICBsZXQgYWRkX2xleGVtZSBfIF8gPSAoKVxuICAgICAgICBsZXQgb2ZfYnVmZmVyIGIgPSBiXG4gICAgICBlbmRcbiAgICAgIG1vZHVsZSBUb2tlbiA9IHN0cnVjdFxuICAgICAgICBvcGVuIFBhcnNlclxuICAgICAgICB0eXBlIHQgPSB0b2tlblxuICAgICAgICB0eXBlIHMgPSBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gdFxuICAgICAgICBsZXQgZW9mID0gRU9GXG4gICAgICAgIGxldCBscGFyZW4gPSBMUEFSRU5cbiAgICAgICAgbGV0IHJwYXJlbiA9IFJQQVJFTlxuICAgICAgICBsZXQgaGFzaF9zZW1pID0gSEFTSF9TRU1JXG4gICAgICAgIGxldCBzaW1wbGVfc3RyaW5nIHggPSBTVFJJTkcgeFxuICAgICAgICBsZXQgcXVvdGVkX3N0cmluZyBfIGJ1ZiA9IFNUUklORyAoQnVmZmVyLmNvbnRlbnRzIGJ1ZilcbiAgICAgICAgbGV0IGJsb2NrX2NvbW1lbnQgX3BvcyB+bWFpbiBidWYgbGV4YnVmID1cbiAgICAgICAgICBtYWluIGJ1ZiBsZXhidWZcbiAgICAgICAgbGV0IGNvbW1lbnQgX3RleHQgfm1haW4gYnVmIGxleGJ1ZiA9XG4gICAgICAgICAgbWFpbiBidWYgbGV4YnVmICgqIHNraXAgYW5kIGNvbnRpbnVlIGxleGluZyAqKVxuICAgICAgZW5kXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBXaXRoX2xheW91dCA9XG4gICAgTWFrZSAoc3RydWN0XG4gICAgICBtb2R1bGUgUXVvdGVkX3N0cmluZ19idWZmZXIgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0ge1xuICAgICAgICAgIGNvbnRlbnRzIDogQnVmZmVyLnQ7XG4gICAgICAgICAgbGV4ZW1lIDogQnVmZmVyLnQ7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNyZWF0ZSBuID0ge2NvbnRlbnRzID0gQnVmZmVyLmNyZWF0ZSBuOyBsZXhlbWUgPSBCdWZmZXIuY3JlYXRlIG59XG4gICAgICAgIGxldCBvZl9idWZmZXIgY29udGVudHMgPSB7IGNvbnRlbnRzOyBsZXhlbWUgPSBCdWZmZXIuY3JlYXRlIDY0IH1cbiAgICAgICAgbGV0IGFkZF9jaGFyIHQgY2ggPSBCdWZmZXIuYWRkX2NoYXIgdC5jb250ZW50cyBjaFxuICAgICAgICBsZXQgYWRkX3N1YmJ5dGVzIHQgc3RyIG9mcyBsZW4gPSBCdWZmZXIuYWRkX3N1YmJ5dGVzIHQuY29udGVudHMgc3RyIG9mcyBsZW5cbiAgICAgICAgbGV0IGFkZF9sZXhlbWUgdCBsZXhidWYgPSBCdWZmZXIuYWRkX3N0cmluZyB0LmxleGVtZSAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgIGxldCBjbGVhciB0ID0gQnVmZmVyLmNsZWFyIHQubGV4ZW1lOyBCdWZmZXIuY2xlYXIgdC5jb250ZW50c1xuICAgICAgZW5kXG4gICAgICBtb2R1bGUgVG9rZW4gPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBQYXJzZXJfd2l0aF9sYXlvdXRcbiAgICAgICAgdHlwZSB0ID0gdG9rZW5cbiAgICAgICAgdHlwZSBzID0gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiBMZXhpbmcubGV4YnVmIC0+IHRcbiAgICAgICAgbGV0IGVvZiA9IEVPRlxuICAgICAgICBsZXQgbHBhcmVuID0gTFBBUkVOXG4gICAgICAgIGxldCBycGFyZW4gPSBSUEFSRU5cbiAgICAgICAgbGV0IGhhc2hfc2VtaSA9IEhBU0hfU0VNSVxuICAgICAgICBsZXQgc2ltcGxlX3N0cmluZyB4ID0gU1RSSU5HICh4LCBOb25lKVxuICAgICAgICBsZXQgcXVvdGVkX3N0cmluZyBwb3Mge1F1b3RlZF9zdHJpbmdfYnVmZmVyLmNvbnRlbnRzOyBsZXhlbWV9ID1cbiAgICAgICAgICBTVFJJTkcgKEJ1ZmZlci5jb250ZW50cyBjb250ZW50cywgU29tZSAocG9zLCBCdWZmZXIuY29udGVudHMgbGV4ZW1lKSlcbiAgICAgICAgbGV0IGJsb2NrX2NvbW1lbnQgcG9zIH5tYWluOl8ge1F1b3RlZF9zdHJpbmdfYnVmZmVyLmNvbnRlbnRzID0gXzsgbGV4ZW1lfSBfbGV4YnVmID1cbiAgICAgICAgICBDT01NRU5UIChCdWZmZXIuY29udGVudHMgbGV4ZW1lLCBTb21lIHBvcylcbiAgICAgICAgbGV0IGNvbW1lbnQgdGV4dCB+bWFpbjpfIF9idWYgX2xleGJ1ZiA9XG4gICAgICAgICAgQ09NTUVOVCAodGV4dCwgTm9uZSlcbiAgICAgIGVuZFxuICAgIGVuZClcblxuICBsZXQgbWFpbiA9IFZhbmlsbGEubWFpblxuICBsZXQgbWFpbl93aXRoX2xheW91dCA9IFdpdGhfbGF5b3V0Lm1haW5cblxuXG4jIDc0NSBcInNyYy9sZXhlci5tbFwiXG4iLCIoKiBTZXhwOiBNb2R1bGUgZm9yIGhhbmRsaW5nIFMtZXhwcmVzc2lvbnMgKEkvTywgZXRjLikgKilcblxub3BlbiBGb3JtYXRcbm9wZW4gQmlnYXJyYXlcbm1vZHVsZSBTZXhwbGliID0gU2V4cGxpYjBcbm1vZHVsZSBDb252ID0gU2V4cGxpYi5TZXhwX2NvbnZcblxuKCogY29udi5tbCBkZXBlbmRzIG9uIHVzIHNvIHdlIGNhbiBvbmx5IHVzZSB0aGlzIG1vZHVsZSAqKVxuXG5pbmNsdWRlIFR5cGVcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5pbmNsdWRlIChcbiAgU2V4cGxpYi5TZXhwIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSBQcml2YXRlXG5cbmxldCB0X3NleHBfZ3JhbW1hciA9IENvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxuXG4oKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBJL08tY2hhbm5lbHMgKilcblxubGV0IHdpdGhfbmV3X2J1ZmZlciBvYyBmID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlciAoKSBpblxuICBmIGJ1ZjtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2MgYnVmXG47O1xuXG5sZXQgb3V0cHV0X2h1bSBvYyBzZXhwID0gd2l0aF9uZXdfYnVmZmVyIG9jIChmdW4gYnVmIC0+IHRvX2J1ZmZlcl9odW0gc2V4cCB+YnVmKVxuXG5sZXQgb3V0cHV0X2h1bV9pbmRlbnQgaW5kZW50IG9jIHNleHAgPVxuICB3aXRoX25ld19idWZmZXIgb2MgKGZ1biBidWYgLT4gdG9fYnVmZmVyX2h1bSB+aW5kZW50IHNleHAgfmJ1Zilcbjs7XG5cbmxldCBvdXRwdXRfbWFjaCBvYyBzZXhwID0gd2l0aF9uZXdfYnVmZmVyIG9jIChmdW4gYnVmIC0+IHRvX2J1ZmZlcl9tYWNoIHNleHAgfmJ1ZilcbmxldCBvdXRwdXQgPSBvdXRwdXRfbWFjaFxuXG4oKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBmaWxlICopXG5cbigqIFRoZSB0ZW1wIGZpbGUgZnVuY3Rpb25zIGluIHRoZSBPQ2FtbCBGaWxlbmFtZSBtb2R1bGUgZG8gbm90IHN1cHBvcnRcbiAgIHBlcm1pc3Npb25zLiAgQnV0IG9wZW5pbmcgYSBmaWxlIHdpdGggZ2l2ZW4gcGVybWlzc2lvbnMgaXMgZGlmZmVyZW50XG4gICBmcm9tIG9wZW5pbmcgaXQgYW5kIGNobW9kaW5nIGl0IHRvIHRoZXNlIHBlcm1pc3Npb25zLCBiZWNhdXNlIHRoZSB1bWFza1xuICAgaXMgdGFrZW4gaW4gYWNjb3VudC4gIFVuZGVyIFVuaXggdGhlcmUncyBubyBlYXN5IHdheSB0byBnZXQgdGhlIHVtYXNrIGluXG4gICBhIHRocmVhZC1zYWZlIHdheS4gKilcbm1vZHVsZSBUbXBfZmlsZSA9IHN0cnVjdFxuICBsZXQgcHJuZyA9IHJlZiBOb25lXG5cbiAgbGV0IHRlbXBfZmlsZV9uYW1lIHByZWZpeCBzdWZmaXggPVxuICAgIGxldCByYW5kX3N0YXRlID1cbiAgICAgIG1hdGNoICFwcm5nIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgcmV0ID0gUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpIGluXG4gICAgICAgIHBybmcgOj0gU29tZSByZXQ7XG4gICAgICAgIHJldFxuICAgIGluXG4gICAgbGV0IHJuZCA9IFJhbmRvbS5TdGF0ZS5iaXRzIHJhbmRfc3RhdGUgbGFuZCAweEZGRkZGRiBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXMlMDZ4JXNcIiBwcmVmaXggcm5kIHN1ZmZpeFxuICA7O1xuXG4gICgqIEtlZXAgdGhlIHBlcm1pc3Npb25zIGxvb3NlLiBTZXhwcyBhcmUgdXN1YWxseSBzaGFyZWQgYW5kIHJhcmVseSBwcml2YXRlKilcbiAgbGV0IG9wZW5fdGVtcF9maWxlID8ocGVybSA9IDBvNjY2KSBwcmVmaXggc3VmZml4ID1cbiAgICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSBwcmVmaXggc3VmZml4IGluXG4gICAgICB0cnlcbiAgICAgICAgbGV0IG9jID1cbiAgICAgICAgICBvcGVuX291dF9nZW4gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsOyBPcGVuX3RleHQgXSBwZXJtIG5hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbmFtZSwgb2NcbiAgICAgIHdpdGhcbiAgICAgIHwgU3lzX2Vycm9yIF8gYXMgZSAtPiBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICAgIGluXG4gICAgdHJ5X25hbWUgMFxuICA7O1xuZW5kXG5cbmxldCBzYXZlX29mX291dHB1dCA/cGVybSBvdXRwdXRfZnVuY3Rpb24gZmlsZSBzZXhwID1cbiAgbGV0IHRtcF9uYW1lLCBvYyA9IFRtcF9maWxlLm9wZW5fdGVtcF9maWxlID9wZXJtIGZpbGUgXCJ0bXBcIiBpblxuICAodHJ5XG4gICAgIG91dHB1dF9mdW5jdGlvbiBvYyBzZXhwO1xuICAgICBjbG9zZV9vdXQgb2NcbiAgIHdpdGhcbiAgIHwgZSAtPlxuICAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgICh0cnkgU3lzLnJlbW92ZSB0bXBfbmFtZSB3aXRoXG4gICAgICB8IF8gLT4gKCkpO1xuICAgICByYWlzZSBlKTtcbiAgU3lzLnJlbmFtZSB0bXBfbmFtZSBmaWxlXG47O1xuXG5sZXQgb3V0cHV0X3NleHBfbmwgZG9fb3V0cHV0IG9jIHNleHAgPVxuICBkb19vdXRwdXQgb2Mgc2V4cDtcbiAgb3V0cHV0X3N0cmluZyBvYyBcIlxcblwiXG47O1xuXG5sZXQgc2F2ZV9odW0gP3Blcm0gZmlsZSBzZXhwID0gc2F2ZV9vZl9vdXRwdXQgP3Blcm0gKG91dHB1dF9zZXhwX25sIG91dHB1dF9odW0pIGZpbGUgc2V4cFxubGV0IHNhdmVfbWFjaCA/cGVybSBmaWxlIHNleHAgPSBzYXZlX29mX291dHB1dCA/cGVybSBvdXRwdXRfbWFjaCBmaWxlIHNleHBcbmxldCBzYXZlID0gc2F2ZV9tYWNoXG5sZXQgb3V0cHV0X3NleHBzX25sIGRvX291dHB1dCBvYyBzZXhwcyA9IExpc3QuaXRlciAob3V0cHV0X3NleHBfbmwgZG9fb3V0cHV0IG9jKSBzZXhwc1xuXG5sZXQgc2F2ZV9zZXhwc19odW0gP3Blcm0gZmlsZSBzZXhwcyA9XG4gIHNhdmVfb2Zfb3V0cHV0ID9wZXJtIChvdXRwdXRfc2V4cHNfbmwgb3V0cHV0X2h1bSkgZmlsZSBzZXhwc1xuOztcblxubGV0IHNhdmVfc2V4cHNfbWFjaCA/cGVybSBmaWxlIHNleHBzID1cbiAgc2F2ZV9vZl9vdXRwdXQgP3Blcm0gKG91dHB1dF9zZXhwc19ubCBvdXRwdXRfbWFjaCkgZmlsZSBzZXhwc1xuOztcblxubGV0IHNhdmVfc2V4cHMgPSBzYXZlX3NleHBzX21hY2hcblxuKCogU2NhbiBmdW5jdGlvbnMgKilcblxubGV0IHNjYW5fc2V4cCA/YnVmIGxleGJ1ZiA9IFBhcnNlci5zZXhwIChMZXhlci5tYWluID9idWYpIGxleGJ1ZlxubGV0IHNjYW5fc2V4cF9vcHQgP2J1ZiBsZXhidWYgPSBQYXJzZXIuc2V4cF9vcHQgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5sZXQgc2Nhbl9zZXhwcyA/YnVmIGxleGJ1ZiA9IFBhcnNlci5zZXhwcyAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcbmxldCBzY2FuX3Jldl9zZXhwcyA/YnVmIGxleGJ1ZiA9IFBhcnNlci5yZXZfc2V4cHMgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5cbmxldCBnZXRfbWFpbl9idWYgYnVmID1cbiAgbGV0IGJ1ZiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICB8IE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAxMjhcbiAgICB8IFNvbWUgYnVmIC0+IGJ1ZlxuICBpblxuICBMZXhlci5tYWluIH5idWZcbjs7XG5cbmxldCBzY2FuX2ZvbGRfc2V4cHMgP2J1ZiB+ZiB+aW5pdCBsZXhidWYgPVxuICBsZXQgbWFpbiA9IGdldF9tYWluX2J1ZiBidWYgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9XG4gICAgbWF0Y2ggUGFyc2VyLnNleHBfb3B0IG1haW4gbGV4YnVmIHdpdGhcbiAgICB8IE5vbmUgLT4gYWNjXG4gICAgfCBTb21lIHNleHAgLT4gbG9vcCAoZiBhY2Mgc2V4cClcbiAgaW5cbiAgbG9vcCBpbml0XG47O1xuXG5sZXQgc2Nhbl9pdGVyX3NleHBzID9idWYgfmYgbGV4YnVmID1cbiAgc2Nhbl9mb2xkX3NleHBzID9idWYgbGV4YnVmIH5pbml0OigpIH5mOihmdW4gKCkgc2V4cCAtPiBmIHNleHApXG47O1xuXG5sZXQgc2Nhbl9zZXhwc19jb252ID9idWYgfmYgbGV4YnVmID1cbiAgbGV0IGNvbGwgYWNjIHNleHAgPSBmIHNleHAgOjogYWNjIGluXG4gIExpc3QucmV2IChzY2FuX2ZvbGRfc2V4cHMgP2J1ZiB+Zjpjb2xsIH5pbml0OltdIGxleGJ1Zilcbjs7XG5cbmxldCBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSA/Y29udGFpbmluZ19zZXhwID9sb2NhdGlvbiA/aW52YWxpZF9zZXhwICgpIH5leG4gOiB0ID1cbiAgTGlzdFxuICAgIChMaXN0LmNvbmNhdFxuICAgICAgIFsgWyBBdG9tIFwiT2Zfc2V4cF9lcnJvclwiIF1cbiAgICAgICA7IChtYXRjaCBsb2NhdGlvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIHggLT4gWyBBdG9tIHggXSlcbiAgICAgICA7IFsgKG1hdGNoIGV4biB3aXRoXG4gICAgICAgICAgICAgfCBGYWlsdXJlIHggLT4gQXRvbSB4XG4gICAgICAgICAgICAgfCBfIC0+IENvbnYuc2V4cF9vZl9leG4gZXhuKVxuICAgICAgICAgXVxuICAgICAgIDsgKG1hdGNoIGludmFsaWRfc2V4cCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIHggLT4gWyBMaXN0IFsgQXRvbSBcImludmFsaWRfc2V4cFwiOyB4IF0gXSlcbiAgICAgICA7IChtYXRjaCBjb250YWluaW5nX3NleHAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSB4IC0+IFsgTGlzdCBbIEF0b20gXCJjb250YWluaW5nX3NleHBcIjsgeCBdIF0pXG4gICAgICAgXSlcbjs7XG5cbigqIFBhcnRpYWwgcGFyc2luZyAqKVxuXG5tb2R1bGUgQW5ub3QgPSBzdHJ1Y3RcbiAgdHlwZSBwb3MgPSBQYXJzZXhwLlBvc2l0aW9ucy5wb3MgPVxuICAgIHsgbGluZSA6IGludFxuICAgIDsgY29sIDogaW50XG4gICAgOyBvZmZzZXQgOiBpbnRcbiAgICB9XG5cbiAgdHlwZSByYW5nZSA9IFBhcnNleHAuUG9zaXRpb25zLnJhbmdlID1cbiAgICB7IHN0YXJ0X3BvcyA6IHBvc1xuICAgIDsgZW5kX3BvcyA6IHBvc1xuICAgIH1cblxuICB0eXBlIHQgPVxuICAgIHwgQXRvbSBvZiByYW5nZSAqIFR5cGUudFxuICAgIHwgTGlzdCBvZiByYW5nZSAqIHQgbGlzdCAqIFR5cGUudFxuXG4gIHR5cGUgJ2EgY29udiA9XG4gICAgWyBgUmVzdWx0IG9mICdhXG4gICAgfCBgRXJyb3Igb2YgZXhuICogdFxuICAgIF1cblxuICBleGNlcHRpb24gQ29udl9leG4gb2Ygc3RyaW5nICogZXhuXG5cbiAgbGV0ICgpID1cbiAgICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBDb252X2V4bl0gKGZ1bmN0aW9uXG4gICAgICB8IENvbnZfZXhuIChsb2NhdGlvbiwgZXhuKSAtPiBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSAoKSB+bG9jYXRpb24gfmV4blxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICB0eXBlIHN0YWNrID1cbiAgICB7IG11dGFibGUgcG9zaXRpb25zIDogcG9zIGxpc3RcbiAgICA7IG11dGFibGUgc3RhY2sgOiB0IGxpc3QgbGlzdFxuICAgIH1cblxuICBsZXQgZ2V0X3NleHAgPSBmdW5jdGlvblxuICAgIHwgQXRvbSAoXywgc2V4cCkgfCBMaXN0IChfLCBfLCBzZXhwKSAtPiBzZXhwXG4gIDs7XG5cbiAgbGV0IGdldF9yYW5nZSA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIChyYW5nZSwgXykgfCBMaXN0IChyYW5nZSwgXywgXykgLT4gcmFuZ2VcbiAgOztcblxuICBsZXQgc2V4cF9vZl9jb252IHNleHBfb2ZfYSA9IGZ1bmN0aW9uXG4gICAgfCBgUmVzdWx0IGEgLT4gVHlwZS5MaXN0IFsgQXRvbSBcIlJlc3VsdFwiOyBhIHw+IHNleHBfb2ZfYSBdXG4gICAgfCBgRXJyb3IgKGV4biwgdCkgLT5cbiAgICAgIExpc3QgWyBBdG9tIFwiRXJyb3JcIjsgTGlzdCBbIGV4biB8PiBDb252LnNleHBfb2ZfZXhuOyB0IHw+IGdldF9zZXhwIF0gXVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBBbm5vdF9zZXhwIG9mIHRcblxuICBsZXQgZmluZF9zZXhwIGFubm90X3NleHAgc2V4cCA9XG4gICAgbGV0IHJlYyBsb29wIGFubm90X3NleHAgPVxuICAgICAgbWF0Y2ggYW5ub3Rfc2V4cCB3aXRoXG4gICAgICB8IChBdG9tIChfLCBzdWJfc2V4cCkgfCBMaXN0IChfLCBfLCBzdWJfc2V4cCkpIHdoZW4gc2V4cCA9PSBzdWJfc2V4cCAtPlxuICAgICAgICByYWlzZSAoQW5ub3Rfc2V4cCBhbm5vdF9zZXhwKVxuICAgICAgfCBMaXN0IChfLCBhbm5vdHMsIF8pIC0+IExpc3QuaXRlciBsb29wIGFubm90c1xuICAgICAgfCBBdG9tIF8gLT4gKClcbiAgICBpblxuICAgIHRyeVxuICAgICAgbG9vcCBhbm5vdF9zZXhwO1xuICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IEFubm90X3NleHAgcmVzIC0+IFNvbWUgcmVzXG4gIDs7XG5lbmRcblxubGV0ICgpID1cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBPZl9zZXhwX2Vycm9yIChBbm5vdC5Db252X2V4biAobG9jYXRpb24sIGV4biksIGludmFsaWRfc2V4cCkgLT5cbiAgICAgIHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlICgpIH5sb2NhdGlvbiB+aW52YWxpZF9zZXhwIH5leG5cbiAgICB8IE9mX3NleHBfZXJyb3IgKGV4biwgaW52YWxpZF9zZXhwKSAtPlxuICAgICAgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UgKCkgfmludmFsaWRfc2V4cCB+ZXhuXG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQYXJzZV9wb3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgdGV4dF9saW5lIDogaW50XG4gICAgOyBtdXRhYmxlIHRleHRfY2hhciA6IGludFxuICAgIDsgbXV0YWJsZSBnbG9iYWxfb2Zmc2V0IDogaW50XG4gICAgOyBtdXRhYmxlIGJ1Zl9wb3MgOiBpbnRcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSA/KHRleHRfbGluZSA9IDEpID8odGV4dF9jaGFyID0gMCkgPyhidWZfcG9zID0gMCkgPyhnbG9iYWxfb2Zmc2V0ID0gMCkgKCkgPVxuICAgIGxldCBmYWlsIG1zZyA9IGZhaWx3aXRoIChcIlNleHBsaWIuU2V4cC5QYXJzZV9wb3MuY3JlYXRlOiBcIiBeIG1zZykgaW5cbiAgICBpZiB0ZXh0X2xpbmUgPCAxXG4gICAgdGhlbiBmYWlsIFwidGV4dF9saW5lIDwgMVwiXG4gICAgZWxzZSBpZiB0ZXh0X2NoYXIgPCAwXG4gICAgdGhlbiBmYWlsIFwidGV4dF9jaGFyIDwgMFwiXG4gICAgZWxzZSBpZiBnbG9iYWxfb2Zmc2V0IDwgMFxuICAgIHRoZW4gZmFpbCBcImdsb2JhbF9vZmZzZXQgPCAwXCJcbiAgICBlbHNlIGlmIGJ1Zl9wb3MgPCAwXG4gICAgdGhlbiBmYWlsIFwiYnVmX3BvcyA8IDBcIlxuICAgIGVsc2UgeyB0ZXh0X2xpbmU7IHRleHRfY2hhcjsgZ2xvYmFsX29mZnNldDsgYnVmX3BvcyB9XG4gIDs7XG5cbiAgbGV0IHdpdGhfYnVmX3BvcyB0IGJ1Zl9wb3MgPSB7IHQgd2l0aCBidWZfcG9zIH1cbmVuZFxuXG5tb2R1bGUgQ29udF9zdGF0ZSA9IFBhcnNleHAuT2xkX3BhcnNlcl9jb250X3N0YXRlXG5cbnR5cGUgKCdhLCAndCkgcGFyc2VfcmVzdWx0ID1cbiAgfCBEb25lIG9mICd0ICogUGFyc2VfcG9zLnRcbiAgfCBDb250IG9mIENvbnRfc3RhdGUudCAqICgnYSwgJ3QpIHBhcnNlX2Z1blxuXG5hbmQgKCdhLCAndCkgcGFyc2VfZnVuID0gcG9zOmludCAtPiBsZW46aW50IC0+ICdhIC0+ICgnYSwgJ3QpIHBhcnNlX3Jlc3VsdFxuXG50eXBlICd0IHBhcnNlX3N0YXRlID0geyBwYXJzZV9wb3MgOiBQYXJzZV9wb3MudCB9XG5cbnR5cGUgcGFyc2VfZXJyb3IgPVxuICB7IGVycl9tc2cgOiBzdHJpbmdcbiAgOyBwYXJzZV9zdGF0ZSA6IFsgYFNleHAgb2YgdCBsaXN0IGxpc3QgcGFyc2Vfc3RhdGUgfCBgQW5ub3Qgb2YgQW5ub3Quc3RhY2sgcGFyc2Vfc3RhdGUgXVxuICB9XG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciBvZiBwYXJzZV9lcnJvclxuXG5sZXQgKCkgPVxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBQYXJzZV9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBQYXJzZV9lcnJvciBwZSAtPlxuICAgICAgbGV0IHBwb3MgPVxuICAgICAgICBtYXRjaCBwZS5wYXJzZV9zdGF0ZSB3aXRoXG4gICAgICAgIHwgYFNleHAgeyBwYXJzZV9wb3MgfSB8IGBBbm5vdCB7IHBhcnNlX3BvcyB9IC0+IHBhcnNlX3Bvc1xuICAgICAgaW5cbiAgICAgIExpc3RcbiAgICAgICAgWyBBdG9tIFwiU2V4cGxpYi5TZXhwLlBhcnNlX2Vycm9yXCJcbiAgICAgICAgOyBMaXN0XG4gICAgICAgICAgICBbIExpc3QgWyBBdG9tIFwiZXJyX21zZ1wiOyBBdG9tIHBlLmVycl9tc2cgXVxuICAgICAgICAgICAgOyBMaXN0IFsgQXRvbSBcInRleHRfbGluZVwiOyBDb252LnNleHBfb2ZfaW50IHBwb3MuUGFyc2VfcG9zLnRleHRfbGluZSBdXG4gICAgICAgICAgICA7IExpc3QgWyBBdG9tIFwidGV4dF9jaGFyXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MudGV4dF9jaGFyIF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJnbG9iYWxfb2Zmc2V0XCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MuZ2xvYmFsX29mZnNldCBdXG4gICAgICAgICAgICA7IExpc3QgWyBBdG9tIFwiYnVmX3Bvc1wiOyBDb252LnNleHBfb2ZfaW50IHBwb3MuUGFyc2VfcG9zLmJ1Zl9wb3MgXVxuICAgICAgICAgICAgXVxuICAgICAgICBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQYXJzZXJfb3V0cHV0IDogc2lnXG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBtb2R1bGUgSW1wbCA6IFBhcnNleHAuRWFnZXJfcGFyc2VyXG5cbiAgICB0eXBlIG91dHB1dFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgdmFsIHJhaXNlX2ZvdW5kIDogSW1wbC5TdGF0ZS5SZWFkX29ubHkudCAtPiBJbXBsLnBhcnNlZF92YWx1ZSAtPiB1bml0XG4gIGVuZFxuXG4gIG1vZHVsZSBCYXJlX3NleHAgOiBUIHdpdGggdHlwZSBvdXRwdXQgPSBUeXBlLnRcbiAgbW9kdWxlIEFubm90YXRlZF9zZXhwIDogVCB3aXRoIHR5cGUgb3V0cHV0ID0gQW5ub3QudFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBtb2R1bGUgSW1wbCA6IFBhcnNleHAuRWFnZXJfcGFyc2VyXG5cbiAgICB0eXBlIG91dHB1dFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgdmFsIHJhaXNlX2ZvdW5kIDogSW1wbC5TdGF0ZS5SZWFkX29ubHkudCAtPiBJbXBsLnBhcnNlZF92YWx1ZSAtPiB1bml0XG4gIGVuZFxuXG4gIG1vZHVsZSBJID0gUGFyc2V4cC5Qb3NpdGlvbnMuSXRlcmF0b3JcblxuICBsZXQgcmVjIGFubm90YXRlX3NleHAgc2V4cCBpdGVyID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFR5cGUuQXRvbSBfIC0+XG4gICAgICBsZXQgc3RhcnRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIGxldCBlbmRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIEFubm90LkF0b20gKHsgc3RhcnRfcG9zOyBlbmRfcG9zIH0sIHNleHApXG4gICAgfCBUeXBlLkxpc3QgbCAtPlxuICAgICAgbGV0IHN0YXJ0X3BvcyA9IEkuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIGluXG4gICAgICBsZXQgYW5ub3QgPSBhbm5vdGF0ZV9zZXhwX2xpc3QgbCBpdGVyIGluXG4gICAgICBsZXQgZW5kX3BvcyA9IEkuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIGluXG4gICAgICBBbm5vdC5MaXN0ICh7IHN0YXJ0X3BvczsgZW5kX3BvcyB9LCBhbm5vdCwgc2V4cClcblxuICBhbmQgYW5ub3RhdGVfc2V4cF9saXN0IHNleHBzIGl0ZXIgPVxuICAgIExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biBzZXhwIC0+IGFubm90YXRlX3NleHAgc2V4cCBpdGVyKSBzZXhwcylcbiAgOztcblxuICBtb2R1bGUgQmFyZV9zZXhwID0gc3RydWN0XG4gICAgbW9kdWxlIEltcGwgPSBQYXJzZXhwLkVhZ2VyXG5cbiAgICB0eXBlIG91dHB1dCA9IFR5cGUudFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgbGV0IHJhaXNlX2ZvdW5kIF9zdGF0ZSBzZXhwID0gcmFpc2Vfbm90cmFjZSAoRm91bmQgc2V4cClcbiAgZW5kXG5cbiAgbW9kdWxlIEFubm90YXRlZF9zZXhwID0gc3RydWN0XG4gICAgbW9kdWxlIEltcGwgPSBQYXJzZXhwLkVhZ2VyX2FuZF9wb3NpdGlvbnNcblxuICAgIHR5cGUgb3V0cHV0ID0gQW5ub3QudFxuXG4gICAgZXhjZXB0aW9uIEZvdW5kIG9mIG91dHB1dFxuXG4gICAgbGV0IHJhaXNlX2ZvdW5kIF9zdGF0ZSAoc2V4cCwgcG9zaXRpb25zKSA9XG4gICAgICBsZXQgYW5ub3QgPSBhbm5vdGF0ZV9zZXhwIHNleHAgKEkuY3JlYXRlIHBvc2l0aW9ucykgaW5cbiAgICAgIHJhaXNlX25vdHJhY2UgKEZvdW5kIGFubm90KVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3BhcnNlciAoVCA6IHNpZ1xuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5UXG5cbiAgICB0eXBlIGlucHV0XG5cbiAgICB2YWwgbGVuZ3RoIDogaW5wdXQgLT4gaW50XG5cbiAgICB2YWwgdW5zYWZlX2ZlZWRfbG9vcFxuICAgICAgOiAgSW1wbC5TdGF0ZS50XG4gICAgICAtPiBJbXBsLlN0YWNrLnRcbiAgICAgIC0+IGlucHV0XG4gICAgICAtPiBtYXhfcG9zOmludFxuICAgICAgLT4gcG9zOmludFxuICAgICAgLT4gSW1wbC5TdGFjay50XG4gIGVuZCkgOiBzaWdcbiAgdmFsIHBhcnNlXG4gICAgOiAgP3BhcnNlX3BvczpQYXJzZV9wb3MudFxuICAgIC0+ID9sZW46aW50XG4gICAgLT4gVC5pbnB1dFxuICAgIC0+IChULmlucHV0LCBULm91dHB1dCkgcGFyc2VfcmVzdWx0XG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IHBhcnNlX3Bvc19vZl9zdGF0ZSBzdGF0ZSBidWZfcG9zID1cbiAgICB7IFBhcnNlX3Bvcy50ZXh0X2xpbmUgPSBULkltcGwuU3RhdGUubGluZSBzdGF0ZVxuICAgIDsgUGFyc2VfcG9zLnRleHRfY2hhciA9IFQuSW1wbC5TdGF0ZS5jb2x1bW4gc3RhdGVcbiAgICA7IFBhcnNlX3Bvcy5nbG9iYWxfb2Zmc2V0ID0gVC5JbXBsLlN0YXRlLm9mZnNldCBzdGF0ZVxuICAgIDsgUGFyc2VfcG9zLmJ1Zl9wb3NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGNoZWNrX3N0cl9ib3VuZHMgfnBvcyB+bGVuIHN0ciA9XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwicGFyc2U6IHBvcyA8IDBcIjtcbiAgICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogbGVuIDwgMFwiO1xuICAgIGxldCBzdHJfbGVuID0gVC5sZW5ndGggc3RyIGluXG4gICAgbGV0IHBvc19sZW4gPSBwb3MgKyBsZW4gaW5cbiAgICBpZiBwb3NfbGVuID4gc3RyX2xlbiB0aGVuIGludmFsaWRfYXJnIFwicGFyc2U6IHBvcyArIGxlbiA+IHN0cl9sZW5cIjtcbiAgICBwb3NfbGVuIC0gMVxuICA7O1xuXG4gIGxldCByYWlzZV9wYXJzZV9lcnJvciBzdGF0ZSBwb3MgbXNnID1cbiAgICBsZXQgcGFyc2Vfc3RhdGUgPSB7IHBhcnNlX3BvcyA9IHBhcnNlX3Bvc19vZl9zdGF0ZSBzdGF0ZSBwb3MgfSBpblxuICAgIGxldCBwYXJzZV9lcnJvciA9IHsgZXJyX21zZyA9IG1zZzsgcGFyc2Vfc3RhdGUgPSBgU2V4cCBwYXJzZV9zdGF0ZSB9IGluXG4gICAgcmFpc2UgKFBhcnNlX2Vycm9yIHBhcnNlX2Vycm9yKVxuICA7O1xuXG4gIGxldCBoYW5kbGVfcGFyc2V4cF9lcnJvciBzdGF0ZSBwb3MgZSA9XG4gICAgbGV0IG1zZyA9IFBhcnNleHAuUGFyc2VfZXJyb3IubWVzc2FnZSBlIGluXG4gICAgbWF0Y2ggUGFyc2V4cC5QYXJzZV9lcnJvci5Qcml2YXRlLm9sZF9wYXJzZXJfZXhuIGUgd2l0aFxuICAgIHwgYFBhcnNlX2Vycm9yIC0+IHJhaXNlX3BhcnNlX2Vycm9yIHN0YXRlIHBvcyBtc2dcbiAgICB8IGBGYWlsdXJlIC0+IGZhaWx3aXRoIG1zZ1xuICA7O1xuXG4gIGxldCByZWMgcnVuX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayB+cG9zIH5sZW4gc3RyID1cbiAgICBsZXQgbWF4X3BvcyA9IGNoZWNrX3N0cl9ib3VuZHMgfnBvcyB+bGVuIHN0ciBpblxuICAgIGxldCBwcmV2aW91c19vZmZzZXQgPSBULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlIGluXG4gICAgbWF0Y2ggVC51bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zIHdpdGhcbiAgICB8IHN0YWNrIC0+IG1rX2NvbnRfc3RhdGUgc3RhdGUgc3RhY2tcbiAgICB8IGV4Y2VwdGlvbiBULkZvdW5kIHJlc3VsdCAtPlxuICAgICAgbGV0IG9mZnNldCA9IFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgaW5cbiAgICAgIGxldCBuZXh0X3BvcyA9IHBvcyArIChvZmZzZXQgLSBwcmV2aW91c19vZmZzZXQpIGluXG4gICAgICBEb25lIChyZXN1bHQsIHBhcnNlX3Bvc19vZl9zdGF0ZSBzdGF0ZSBuZXh0X3BvcylcbiAgICB8IGV4Y2VwdGlvbiBQYXJzZXhwLlBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yIGVyciAtPlxuICAgICAgaGFuZGxlX3BhcnNleHBfZXJyb3Igc3RhdGUgKHBvcyArIChULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlIC0gcHJldmlvdXNfb2Zmc2V0KSkgZXJyXG5cbiAgYW5kIG1rX2NvbnRfc3RhdGUgc3RhdGUgc3RhY2sgPVxuICAgIGxldCBwYXJzZV9mdW4gPVxuICAgICAgbGV0IHVzZWRfcmVmID0gcmVmIGZhbHNlIGluXG4gICAgICBmdW4gfnBvcyB+bGVuIHN0ciAtPlxuICAgICAgICBpZiAhdXNlZF9yZWZcbiAgICAgICAgdGhlbiBmYWlsd2l0aCBcIlNleHBsaWIuU2V4cDogcGFyc2VyIGNvbnRpbnVhdGlvbiBjYWxsZWQgdHdpY2VcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICB1c2VkX3JlZiA6PSB0cnVlO1xuICAgICAgICAgIHJ1bl9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgfnBvcyB+bGVuIHN0cilcbiAgICBpblxuICAgIGxldCBjb250X3N0YXRlID0gVC5JbXBsLlN0YXRlLm9sZF9wYXJzZXJfY29udF9zdGF0ZSBzdGF0ZSBpblxuICAgIENvbnQgKGNvbnRfc3RhdGUsIHBhcnNlX2Z1bilcbiAgOztcblxuICBsZXQgcGFyc2UgPyhwYXJzZV9wb3MgPSBQYXJzZV9wb3MuY3JlYXRlICgpKSA/bGVuIHN0ciA9XG4gICAgbGV0IHBvcywgYnVmX3BvcyA9XG4gICAgICBsZXQgeyBQYXJzZV9wb3MudGV4dF9saW5lOyB0ZXh0X2NoYXI7IGdsb2JhbF9vZmZzZXQ7IGJ1Zl9wb3MgfSA9IHBhcnNlX3BvcyBpblxuICAgICAgKCB7IFBhcnNleHAuUG9zaXRpb25zLmxpbmUgPSB0ZXh0X2xpbmU7IGNvbCA9IHRleHRfY2hhcjsgb2Zmc2V0ID0gZ2xvYmFsX29mZnNldCB9XG4gICAgICAsIGJ1Zl9wb3MgKVxuICAgIGluXG4gICAgbGV0IHN0YXRlID0gVC5JbXBsLlN0YXRlLmNyZWF0ZSB+cG9zIH5ub19zZXhwX2lzX2Vycm9yOmZhbHNlIFQucmFpc2VfZm91bmQgaW5cbiAgICBsZXQgc3RhY2sgPSBULkltcGwuU3RhY2suZW1wdHkgaW5cbiAgICBsZXQgbGVuID1cbiAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICB8IE5vbmUgLT4gVC5sZW5ndGggc3RyIC0gYnVmX3Bvc1xuICAgIGluXG4gICAgcnVuX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfnBvczpidWZfcG9zIH5sZW5cbiAgOztcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIFN0cmluZ19zaW5nbGVfc2V4cCA9IE1ha2VfcGFyc2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuQmFyZV9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zID1cbiAgICAgIGlmIHBvcyA8PSBtYXhfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN0YWNrID0gSW1wbC5mZWVkIHN0YXRlIChTdHJpbmcudW5zYWZlX2dldCBzdHIgcG9zKSBzdGFjayBpblxuICAgICAgICB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zOihwb3MgKyAxKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICA7O1xuICBlbmQpXG5cbmxldCBwYXJzZV9zdHIgPSBTdHJpbmdfc2luZ2xlX3NleHAucGFyc2VcbmxldCBwYXJzZSA9IFN0cmluZ19zaW5nbGVfc2V4cC5wYXJzZVxuXG5tb2R1bGUgU3RyaW5nX3NpbmdsZV9hbm5vdCA9IE1ha2VfcGFyc2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuQW5ub3RhdGVkX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKFN0cmluZy51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX3N0cl9hbm5vdCA9IFN0cmluZ19zaW5nbGVfYW5ub3QucGFyc2VcblxubW9kdWxlIEJpZ3N0cmluZ19zaW5nbGVfc2V4cCA9IE1ha2VfcGFyc2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuQmFyZV9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gYmlnc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIChzdHIgOiBpbnB1dCkgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoQXJyYXkxLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nID0gQmlnc3RyaW5nX3NpbmdsZV9zZXhwLnBhcnNlXG5cbm1vZHVsZSBCaWdzdHJpbmdfc2luZ2xlX2Fubm90ID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5Bbm5vdGF0ZWRfc2V4cFxuXG4gICAgdHlwZSBpbnB1dCA9IGJpZ3N0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IEFycmF5MS5kaW1cblxuICAgIGxldCByZWMgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayAoc3RyIDogaW5wdXQpIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKEFycmF5MS51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX2JpZ3N0cmluZ19hbm5vdCA9IEJpZ3N0cmluZ19zaW5nbGVfYW5ub3QucGFyc2VcblxuKCogSW5wdXQgZnVuY3Rpb25zICopXG5cbmxldCBta190aGlzX3BhcnNlID9wYXJzZV9wb3MgbXlfcGFyc2UgPVxuICAoKTtcbiAgZnVuIH5wb3MgfmxlbiBzdHIgLT5cbiAgICBsZXQgcGFyc2VfcG9zID1cbiAgICAgIG1hdGNoIHBhcnNlX3BvcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gUGFyc2VfcG9zLmNyZWF0ZSB+YnVmX3Bvczpwb3MgKClcbiAgICAgIHwgU29tZSBwYXJzZV9wb3MgLT5cbiAgICAgICAgcGFyc2VfcG9zLlBhcnNlX3Bvcy5idWZfcG9zIDwtIHBvcztcbiAgICAgICAgcGFyc2VfcG9zXG4gICAgaW5cbiAgICBteV9wYXJzZSA/cGFyc2VfcG9zOihTb21lIHBhcnNlX3BvcykgP2xlbjooU29tZSBsZW4pIHN0clxuOztcblxuKCogW3dzX2J1Zl0gbXVzdCBjb250YWluIGEgc2luZ2xlIHNwYWNlIGNoYXJhY3RlciAqKVxubGV0IGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWYgPVxuICAoKiBXaGVuIHBhcnNpbmcgYXRvbXMsIHRoZSBpbmNyZW1lbnRhbCBwYXJzZXIgY2Fubm90IHRlbGwgd2hldGhlclxuICAgICBpdCBpcyBhdCB0aGUgZW5kIHVudGlsIGl0IGhpdHMgd2hpdGVzcGFjZS4gIFdlIHRoZXJlZm9yZSBmZWVkIGl0XG4gICAgIG9uZSBzcGFjZSB0byBkZXRlcm1pbmUgd2hldGhlciBpdCBpcyBmaW5pc2hlZC4gKilcbiAgbWF0Y2ggdGhpc19wYXJzZSB+cG9zOjAgfmxlbjoxIHdzX2J1ZiB3aXRoXG4gIHwgRG9uZSAoc2V4cCwgXykgLT4gT2sgc2V4cFxuICB8IENvbnQgKGNvbnRfc3RhdGUsIF8pIC0+IEVycm9yIGNvbnRfc3RhdGVcbjs7XG5cbmxldCBnZW5faW5wdXRfc2V4cCBteV9wYXJzZSA/cGFyc2VfcG9zIGljID1cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAxIGluXG4gIGxldCByZWMgbG9vcCB0aGlzX3BhcnNlID1cbiAgICBtYXRjaCBpbnB1dF9jaGFyIGljIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPlxuICAgICAgKG1hdGNoIGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWY6XCIgXCIgd2l0aFxuICAgICAgIHwgT2sgc2V4cCAtPiBzZXhwXG4gICAgICAgfCBFcnJvciBfIC0+IHJhaXNlIEVuZF9vZl9maWxlKVxuICAgIHwgYyAtPlxuICAgICAgQnl0ZXMuc2V0IGJ1ZiAwIGM7XG4gICAgICAobWF0Y2ggdGhpc19wYXJzZSB+cG9zOjAgfmxlbjoxIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgIHwgRG9uZSAoc2V4cCwgXykgLT4gc2V4cFxuICAgICAgIHwgQ29udCAoXywgdGhpc19wYXJzZSkgLT4gbG9vcCB0aGlzX3BhcnNlKVxuICBpblxuICBsb29wIChta190aGlzX3BhcnNlID9wYXJzZV9wb3MgbXlfcGFyc2UpXG47O1xuXG5sZXQgaW5wdXRfc2V4cCA/cGFyc2VfcG9zIGljID0gZ2VuX2lucHV0X3NleHAgcGFyc2UgP3BhcnNlX3BvcyBpY1xuXG5sZXQgZ2VuX2lucHV0X3Jldl9zZXhwcyBteV9wYXJzZSB+d3NfYnVmID9wYXJzZV9wb3MgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgaWMgPVxuICBsZXQgcmV2X3NleHBzX3JlZiA9IHJlZiBbXSBpblxuICBsZXQgYnVmX2xlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgbGV0IHJlYyBsb29wIHRoaXNfcGFyc2UgfnBvcyB+bGVuID1cbiAgICBpZiBsZW4gPiAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCB0aGlzX3BhcnNlIH5wb3MgfmxlbiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWYpIHdpdGhcbiAgICAgIHwgRG9uZSAoc2V4cCwgKHsgUGFyc2VfcG9zLmJ1Zl9wb3M7IF8gfSBhcyBwYXJzZV9wb3MpKSAtPlxuICAgICAgICByZXZfc2V4cHNfcmVmIDo9IHNleHAgOjogIXJldl9zZXhwc19yZWY7XG4gICAgICAgIGxldCBuX3BhcnNlZCA9IGJ1Zl9wb3MgLSBwb3MgaW5cbiAgICAgICAgbGV0IHRoaXNfcGFyc2UgPSBta190aGlzX3BhcnNlIH5wYXJzZV9wb3MgbXlfcGFyc2UgaW5cbiAgICAgICAgaWYgbl9wYXJzZWQgPSBsZW5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IG5ld19sZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gICAgICAgICAgbG9vcCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOm5ld19sZW4pXG4gICAgICAgIGVsc2UgbG9vcCB0aGlzX3BhcnNlIH5wb3M6YnVmX3BvcyB+bGVuOihsZW4gLSBuX3BhcnNlZClcbiAgICAgIHwgQ29udCAoXywgdGhpc19wYXJzZSkgLT4gbG9vcCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOihpbnB1dCBpYyBidWYgMCBidWZfbGVuKSlcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWYgd2l0aFxuICAgICAgfCBPayBzZXhwIC0+IHNleHAgOjogIXJldl9zZXhwc19yZWZcbiAgICAgIHwgRXJyb3IgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlIC0+ICFyZXZfc2V4cHNfcmVmXG4gICAgICB8IEVycm9yIGNvbnRfc3RhdGUgLT5cbiAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAoXCJTZXhwbGliLlNleHAuaW5wdXRfcmV2X3NleHBzOiByZWFjaGVkIEVPRiB3aGlsZSBpbiBzdGF0ZSBcIlxuICAgICAgICAgICBeIENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUpKVxuICBpblxuICBsZXQgbGVuID0gaW5wdXQgaWMgYnVmIDAgYnVmX2xlbiBpblxuICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSBpblxuICBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW5cbjs7XG5cbmxldCBpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID1cbiAgZ2VuX2lucHV0X3Jldl9zZXhwcyBwYXJzZSB+d3NfYnVmOlwiIFwiID9wYXJzZV9wb3MgP2J1ZiBpY1xuOztcblxubGV0IGlucHV0X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYyA9IExpc3QucmV2IChpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljKVxuXG4oKiBvZl9zdHJpbmcgYW5kIG9mX2JpZ3N0cmluZyAqKVxuXG5sZXQgb2Zfc3RyaW5nX2JpZ3N0cmluZyBsb2MgbXlfcGFyc2Ugd3NfYnVmIGdldF9sZW4gZ2V0X3N1YiBzdHIgPVxuICBtYXRjaCBteV9wYXJzZSA/cGFyc2VfcG9zOk5vbmUgP2xlbjpOb25lIHN0ciB3aXRoXG4gIHwgRG9uZSAoc2V4cCwgcGFyc2VfcG9zKSAtPlxuICAgIChtYXRjaCBteV9wYXJzZSA/cGFyc2VfcG9zOihTb21lIHBhcnNlX3BvcykgP2xlbjpOb25lIHN0ciB3aXRoXG4gICAgIHwgRG9uZSAoX3NleHAyLCBfKSAtPlxuICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLlNleHAuJXM6IGdvdCBtdWx0aXBsZSBTLWV4cHJlc3Npb25zIHdoZXJlIG9ubHkgb25lIHdhcyBleHBlY3RlZC5cIlxuICAgICAgICAgICAgbG9jKVxuICAgICB8IENvbnQgKENvbnRfc3RhdGUuUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlLCBfKSAtPiBzZXhwXG4gICAgIHwgQ29udCAoXywgXykgLT5cbiAgICAgICAoKiBub3QgdXNpbmcgW2ZlZWRfZW5kX29mX2lucHV0XSBoZXJlIG1lYW5zIFwiYSBiXCIgd2lsbCBlbmQgdXAgaGVyZSBhbmQgbm90IGluXG4gICAgICAgICAgXCJtdWx0aXBsZSBTLWV4cHJlc3Npb25zXCIgYnJhbmNoLCBidXQgaXQgZG9lc24ndCBtYXR0ZXIgdGhhdCBtdWNoICopXG4gICAgICAgZmFpbHdpdGhcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICBcIlNleHBsaWIuU2V4cC4lczogUy1leHByZXNzaW9uIGZvbGxvd2VkIGJ5IGRhdGEgYXQgcG9zaXRpb24gJWQuLi5cIlxuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBwYXJzZV9wb3MuYnVmX3BvcykpXG4gIHwgQ29udCAoXywgdGhpc19wYXJzZSkgLT5cbiAgICAobWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiB3aXRoXG4gICAgIHwgT2sgc2V4cCAtPiBzZXhwXG4gICAgIHwgRXJyb3IgY29udF9zdGF0ZSAtPlxuICAgICAgIGxldCBjb250X3N0YXRlX3N0ciA9IENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUgaW5cbiAgICAgICBmYWlsd2l0aFxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5TZXhwLiVzOiBpbmNvbXBsZXRlIFMtZXhwcmVzc2lvbiB3aGlsZSBpbiBzdGF0ZSAlczogJXNcIlxuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBjb250X3N0YXRlX3N0clxuICAgICAgICAgICAgKGdldF9zdWIgc3RyIDAgKGdldF9sZW4gc3RyKSkpKVxuOztcblxubGV0IG9mX3N0cmluZyBzdHIgPSBvZl9zdHJpbmdfYmlnc3RyaW5nIFwib2Zfc3RyaW5nXCIgcGFyc2UgXCIgXCIgU3RyaW5nLmxlbmd0aCBTdHJpbmcuc3ViIHN0clxubGV0IG9mX3N0cmluZ19tYW55IHN0ciA9IFBhcnNleHAuTWFueS5wYXJzZV9zdHJpbmdfZXhuIHN0clxuXG5sZXQgZ2V0X2JzdHJfc3ViX3N0ciBic3RyIHBvcyBsZW4gPVxuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIEJ5dGVzLnNldCBzdHIgaSBic3RyLntwb3MgKyBpfVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuOztcblxubGV0IGJzdHJfd3NfYnVmID0gQXJyYXkxLmNyZWF0ZSBjaGFyIGNfbGF5b3V0IDFcbmxldCAoKSA9IGJzdHJfd3NfYnVmLnswfSA8LSAnICdcblxubGV0IG9mX2JpZ3N0cmluZyBic3RyID1cbiAgb2Zfc3RyaW5nX2JpZ3N0cmluZ1xuICAgIFwib2ZfYmlnc3RyaW5nXCJcbiAgICBwYXJzZV9iaWdzdHJpbmdcbiAgICBic3RyX3dzX2J1ZlxuICAgIEFycmF5MS5kaW1cbiAgICBnZXRfYnN0cl9zdWJfc3RyXG4gICAgYnN0clxuOztcblxuKCogTG9hZGluZyAqKVxuXG5sZXQgZ2VuX2xvYWRfcmV2X3NleHBzIGlucHV0X3Jldl9zZXhwcyA/YnVmIGZpbGUgPVxuICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgdHJ5XG4gICAgbGV0IHNleHBzID0gaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3M6Tm9uZSA/YnVmIGljIGluXG4gICAgY2xvc2VfaW4gaWM7XG4gICAgc2V4cHNcbiAgd2l0aFxuICB8IGV4YyAtPlxuICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgIHJhaXNlIGV4Y1xuOztcblxubGV0IGxvYWRfcmV2X3NleHBzID9idWYgZmlsZSA9IGdlbl9sb2FkX3Jldl9zZXhwcyBpbnB1dF9yZXZfc2V4cHMgP2J1ZiBmaWxlXG5sZXQgbG9hZF9zZXhwcyA/YnVmIGZpbGUgPSBMaXN0LnJldiAobG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlKVxubGV0IGdlbl9sb2FkX3NleHBfbG9jID0gXCJTZXhwbGliLlNleHAuZ2VuX2xvYWRfc2V4cFwiXG5cbmxldCBnZW5fbG9hZF9zZXhwIG15X3BhcnNlID8oc3RyaWN0ID0gdHJ1ZSkgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSA9XG4gIGxldCBidWZfbGVuID0gQnl0ZXMubGVuZ3RoIGJ1ZiBpblxuICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgbGV0IHJlYyBsb29wIHRoaXNfcGFyc2UgPVxuICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZjpcIiBcIiB3aXRoXG4gICAgICB8IE9rIHNleHAgLT4gc2V4cFxuICAgICAgfCBFcnJvciBjb250X3N0YXRlIC0+XG4gICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICBcIiVzOiBFT0YgaW4gJXMgd2hpbGUgaW4gc3RhdGUgJXNcIlxuICAgICAgICAgICAgIGdlbl9sb2FkX3NleHBfbG9jXG4gICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgIChDb250X3N0YXRlLnRvX3N0cmluZyBjb250X3N0YXRlKSkpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgfCBEb25lIChzZXhwLCAoeyBQYXJzZV9wb3MuYnVmX3BvczsgXyB9IGFzIHBhcnNlX3BvcykpIHdoZW4gc3RyaWN0IC0+XG4gICAgICAgIGxldCByZWMgc3RyaWN0X2xvb3AgdGhpc19wYXJzZSB+cG9zIH5sZW4gPVxuICAgICAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvcyB+bGVuIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgICAgIHwgRG9uZSBfIC0+XG4gICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAoc3ByaW50ZiBcIiVzOiBtb3JlIHRoYW4gb25lIFMtZXhwcmVzc2lvbiBpbiBmaWxlICVzXCIgZ2VuX2xvYWRfc2V4cF9sb2MgZmlsZSlcbiAgICAgICAgICB8IENvbnQgKGNvbnRfc3RhdGUsIHRoaXNfcGFyc2UpIC0+XG4gICAgICAgICAgICBsZXQgbGVuID0gaW5wdXQgaWMgYnVmIDAgYnVmX2xlbiBpblxuICAgICAgICAgICAgaWYgbGVuID4gMFxuICAgICAgICAgICAgdGhlbiBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuXG4gICAgICAgICAgICBlbHNlIGlmIGNvbnRfc3RhdGUgPSBDb250X3N0YXRlLlBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgICAgICAgICAgdGhlbiBzZXhwXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICBcIiVzOiAlcyBpbiBzdGF0ZSAlcyBsb2FkaW5nIGZpbGUgJXNcIlxuICAgICAgICAgICAgICAgICAgIGdlbl9sb2FkX3NleHBfbG9jXG4gICAgICAgICAgICAgICAgICAgXCJhZGRpdGlvbmFsIGluY29tcGxldGUgZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgKENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUpXG4gICAgICAgICAgICAgICAgICAgZmlsZSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRoaXNfcGFyc2UgPSBta190aGlzX3BhcnNlIH5wYXJzZV9wb3MgbXlfcGFyc2UgaW5cbiAgICAgICAgc3RyaWN0X2xvb3AgdGhpc19wYXJzZSB+cG9zOmJ1Zl9wb3MgfmxlbjoobGVuIC0gYnVmX3BvcylcbiAgICAgIHwgRG9uZSAoc2V4cCwgXykgLT4gc2V4cFxuICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UpXG4gIGluXG4gIHRyeVxuICAgIGxldCBzZXhwID0gbG9vcCAobWtfdGhpc19wYXJzZSBteV9wYXJzZSkgaW5cbiAgICBjbG9zZV9pbiBpYztcbiAgICBzZXhwXG4gIHdpdGhcbiAgfCBleGMgLT5cbiAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICByYWlzZSBleGNcbjs7XG5cbmxldCBsb2FkX3NleHAgP3N0cmljdCA/YnVmIGZpbGUgPSBnZW5fbG9hZF9zZXhwIHBhcnNlID9zdHJpY3QgP2J1ZiBmaWxlXG5cbm1vZHVsZSBBbm5vdGF0ZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBbm5vdFxuXG4gIGxldCBwYXJzZSA9IHBhcnNlX3N0cl9hbm5vdFxuICBsZXQgcGFyc2VfYmlnc3RyaW5nID0gcGFyc2VfYmlnc3RyaW5nX2Fubm90XG5cbiAgbGV0IGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPVxuICAgIGdlbl9pbnB1dF9yZXZfc2V4cHMgcGFyc2UgfndzX2J1ZjpcIiBcIiA/cGFyc2VfcG9zID9idWYgaWNcbiAgOztcblxuICBsZXQgaW5wdXRfc2V4cCA/cGFyc2VfcG9zIGljID0gZ2VuX2lucHV0X3NleHAgcGFyc2UgP3BhcnNlX3BvcyBpY1xuICBsZXQgaW5wdXRfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID0gTGlzdC5yZXYgKGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMpXG5cbiAgbGV0IG9mX3N0cmluZyBzdHIgPVxuICAgIG9mX3N0cmluZ19iaWdzdHJpbmcgXCJBbm5vdGF0ZWQub2Zfc3RyaW5nXCIgcGFyc2UgXCIgXCIgU3RyaW5nLmxlbmd0aCBTdHJpbmcuc3ViIHN0clxuICA7O1xuXG4gIGxldCBvZl9iaWdzdHJpbmcgYnN0ciA9XG4gICAgb2Zfc3RyaW5nX2JpZ3N0cmluZ1xuICAgICAgXCJBbm5vdGF0ZWQub2ZfYmlnc3RyaW5nXCJcbiAgICAgIHBhcnNlX2JpZ3N0cmluZ1xuICAgICAgYnN0cl93c19idWZcbiAgICAgIEFycmF5MS5kaW1cbiAgICAgIGdldF9ic3RyX3N1Yl9zdHJcbiAgICAgIGJzdHJcbiAgOztcblxuICBsZXQgbG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfcmV2X3NleHBzIGlucHV0X3Jldl9zZXhwcyA/YnVmIGZpbGVcbiAgbGV0IGxvYWRfc2V4cHMgP2J1ZiBmaWxlID0gTGlzdC5yZXYgKGxvYWRfcmV2X3NleHBzID9idWYgZmlsZSlcbiAgbGV0IGxvYWRfc2V4cCA/c3RyaWN0ID9idWYgZmlsZSA9IGdlbl9sb2FkX3NleHAgcGFyc2UgP3N0cmljdCA/YnVmIGZpbGVcblxuICBsZXQgY29udiBmIGFubm90X3NleHAgPVxuICAgIGxldCBzZXhwID0gZ2V0X3NleHAgYW5ub3Rfc2V4cCBpblxuICAgIHRyeSBgUmVzdWx0IChmIHNleHApIHdpdGhcbiAgICB8IE9mX3NleHBfZXJyb3IgKGV4YywgYmFkX3NleHApIGFzIGUgLT5cbiAgICAgIChtYXRjaCBmaW5kX3NleHAgYW5ub3Rfc2V4cCBiYWRfc2V4cCB3aXRoXG4gICAgICAgfCBOb25lIC0+IHJhaXNlIGVcbiAgICAgICB8IFNvbWUgYmFkX2Fubm90X3NleHAgLT4gYEVycm9yIChleGMsIGJhZF9hbm5vdF9zZXhwKSlcbiAgOztcblxuICBsZXQgZ2V0X2NvbnZfZXhuIH5maWxlIH5leGMgYW5ub3Rfc2V4cCA9XG4gICAgbGV0IHJhbmdlID0gZ2V0X3JhbmdlIGFubm90X3NleHAgaW5cbiAgICBsZXQgeyBzdGFydF9wb3MgPSB7IGxpbmU7IGNvbDsgb2Zmc2V0ID0gXyB9OyBlbmRfcG9zID0gXyB9ID0gcmFuZ2UgaW5cbiAgICBsZXQgbG9jID0gc3ByaW50ZiBcIiVzOiVkOiVkXCIgZmlsZSBsaW5lIGNvbCBpblxuICAgIE9mX3NleHBfZXJyb3IgKEFubm90LkNvbnZfZXhuIChsb2MsIGV4YyksIGdldF9zZXhwIGFubm90X3NleHApXG4gIDs7XG5lbmRcblxubGV0IGxvYWRfc2V4cF9jb252ID8oc3RyaWN0ID0gdHJ1ZSkgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSBmID1cbiAgbGV0IHNleHAgPSBsb2FkX3NleHAgfnN0cmljdCB+YnVmIGZpbGUgaW5cbiAgdHJ5IGBSZXN1bHQgKGYgc2V4cCkgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyAtPiBBbm5vdGF0ZWQuY29udiBmIChBbm5vdGF0ZWQubG9hZF9zZXhwIH5zdHJpY3QgfmJ1ZiBmaWxlKVxuOztcblxubGV0IHJhaXNlX2NvbnZfZXhuIH5maWxlID0gZnVuY3Rpb25cbiAgfCBgUmVzdWx0IHJlcyAtPiByZXNcbiAgfCBgRXJyb3IgKGV4YywgYW5ub3Rfc2V4cCkgLT4gcmFpc2UgKEFubm90YXRlZC5nZXRfY29udl9leG4gfmZpbGUgfmV4YyBhbm5vdF9zZXhwKVxuOztcblxubGV0IGxvYWRfc2V4cF9jb252X2V4biA/c3RyaWN0ID9idWYgZmlsZSBmID1cbiAgcmFpc2VfY29udl9leG4gfmZpbGUgKGxvYWRfc2V4cF9jb252ID9zdHJpY3QgP2J1ZiBmaWxlIGYpXG47O1xuXG5sZXQgbG9hZF9zZXhwc19jb252ID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGZpbGUgZiA9XG4gIGxldCByZXZfc2V4cHMgPSBsb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgaW5cbiAgdHJ5IExpc3QucmV2X21hcCAoZnVuIHNleHAgLT4gYFJlc3VsdCAoZiBzZXhwKSkgcmV2X3NleHBzIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIF8gYXMgZSAtPlxuICAgIChtYXRjaCBBbm5vdGF0ZWQubG9hZF9yZXZfc2V4cHMgfmJ1ZiBmaWxlIHdpdGhcbiAgICAgfCBbXSAtPlxuICAgICAgICgqIEZpbGUgaXMgbm93IGVtcHR5IC0gcGVyaGFwcyBpdCB3YXMgYSB0ZW1wb3JhcnkgZmlsZSBoYW5kbGU/ICopXG4gICAgICAgcmFpc2UgZVxuICAgICB8IHJldl9hbm5vdF9zZXhwcyAtPlxuICAgICAgIExpc3QucmV2X21hcCAoZnVuIGFubm90X3NleHAgLT4gQW5ub3RhdGVkLmNvbnYgZiBhbm5vdF9zZXhwKSByZXZfYW5ub3Rfc2V4cHMpXG47O1xuXG5sZXQgbG9hZF9zZXhwc19jb252X2V4biA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlIGYgPVxuICBsZXQgcmV2X3NleHBzID0gbG9hZF9yZXZfc2V4cHMgfmJ1ZiBmaWxlIGluXG4gIHRyeSBMaXN0LnJldl9tYXAgZiByZXZfc2V4cHMgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+XG4gICAgKG1hdGNoIEFubm90YXRlZC5sb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgd2l0aFxuICAgICB8IFtdIC0+XG4gICAgICAgKCogRmlsZSBpcyBub3cgZW1wdHkgLSBwZXJoYXBzIGl0IHdhcyBhIHRlbXBvcmFyeSBmaWxlIGhhbmRsZT8gKilcbiAgICAgICByYWlzZSBlXG4gICAgIHwgcmV2X2Fubm90X3NleHBzIC0+XG4gICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAoZnVuIGFubm90X3NleHAgLT4gcmFpc2VfY29udl9leG4gfmZpbGUgKEFubm90YXRlZC5jb252IGYgYW5ub3Rfc2V4cCkpXG4gICAgICAgICByZXZfYW5ub3Rfc2V4cHMpXG47O1xuXG5sZXQgZ2VuX29mX3N0cmluZ19jb252IG9mX3N0cmluZyBhbm5vdF9vZl9zdHJpbmcgc3RyIGYgPVxuICBsZXQgc2V4cCA9IG9mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IGBSZXN1bHQgKGYgc2V4cCkgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyAtPiBBbm5vdGF0ZWQuY29udiBmIChhbm5vdF9vZl9zdHJpbmcgc3RyKVxuOztcblxubGV0IG9mX3N0cmluZ19jb252IHN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252IG9mX3N0cmluZyBBbm5vdGF0ZWQub2Zfc3RyaW5nIHN0ciBmXG5cbmxldCBvZl9iaWdzdHJpbmdfY29udiBic3RyIGYgPVxuICBnZW5fb2Zfc3RyaW5nX2NvbnYgb2ZfYmlnc3RyaW5nIEFubm90YXRlZC5vZl9iaWdzdHJpbmcgYnN0ciBmXG47O1xuXG5tb2R1bGUgT2Zfc3RyaW5nX2NvbnZfZXhuID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBleGMgOiBleG5cbiAgICA7IHNleHAgOiBUeXBlLnRcbiAgICA7IHN1Yl9zZXhwIDogVHlwZS50XG4gICAgfVxuXG4gIGV4Y2VwdGlvbiBFIG9mIHRcblxuICBsZXQgKCkgPVxuICAgIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEVdIChmdW5jdGlvblxuICAgICAgfCBFIG9zY2UgLT5cbiAgICAgICAgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2VcbiAgICAgICAgICAoKVxuICAgICAgICAgIH5pbnZhbGlkX3NleHA6b3NjZS5zdWJfc2V4cFxuICAgICAgICAgIH5leG46b3NjZS5leGNcbiAgICAgICAgICB+Y29udGFpbmluZ19zZXhwOm9zY2Uuc2V4cFxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcbmVuZFxuXG5sZXQgZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9zdHJpbmcgc3RyIGYgPVxuICBsZXQgc2V4cCA9IG9mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IGYgc2V4cCB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciAoZXhjLCBzdWJfc2V4cCkgLT5cbiAgICByYWlzZSAoT2Zfc3RyaW5nX2NvbnZfZXhuLkUgeyBPZl9zdHJpbmdfY29udl9leG4uZXhjOyBzZXhwOyBzdWJfc2V4cCB9KVxuOztcblxubGV0IG9mX3N0cmluZ19jb252X2V4biBzdHIgZiA9IGdlbl9vZl9zdHJpbmdfY29udl9leG4gb2Zfc3RyaW5nIHN0ciBmXG5sZXQgb2ZfYmlnc3RyaW5nX2NvbnZfZXhuIGJzdHIgZiA9IGdlbl9vZl9zdHJpbmdfY29udl9leG4gb2ZfYmlnc3RyaW5nIGJzdHIgZlxuXG5sZXQgb2Zfc3RyaW5nX21hbnlfY29udl9leG4gc3RyIGYgPVxuICBsZXQgc2V4cHMgPSBvZl9zdHJpbmdfbWFueSBzdHIgaW5cbiAgTGlzdC5tYXAgKGZ1biBzZXhwIC0+IGdlbl9vZl9zdHJpbmdfY29udl9leG4gKGZ1biB4IC0+IHgpIHNleHAgZikgc2V4cHNcbjs7XG5cbigqIFV0aWxpdGllcyBmb3IgYXV0b21hdGVkIHR5cGUgY29udmVyc2lvbnMgKilcblxubGV0IHVuaXQgPSBMaXN0IFtdXG5cbmxldCBpc191bml0ID0gZnVuY3Rpb25cbiAgfCBMaXN0IFtdIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5leHRlcm5hbCBzZXhwX29mX3QgOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0X29mX3NleHAgOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbigqIFV0aWxpdGllcyBmb3IgY29udmVyc2lvbiBlcnJvciBoYW5kbGluZyAqKVxuXG50eXBlIGZvdW5kID1cbiAgWyBgRm91bmRcbiAgfCBgUG9zIG9mIGludCAqIGZvdW5kXG4gIF1cblxudHlwZSBzZWFyY2hfcmVzdWx0ID1cbiAgWyBgTm90X2ZvdW5kXG4gIHwgZm91bmRcbiAgXVxuXG5sZXQgcmVjIHNlYXJjaF9waHlzaWNhbCBzZXhwIH5jb250YWluZWQgPVxuICBpZiBzZXhwID09IGNvbnRhaW5lZFxuICB0aGVuIGBGb3VuZFxuICBlbHNlIChcbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEF0b20gXyAtPiBgTm90X2ZvdW5kXG4gICAgfCBMaXN0IGxzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGBOb3RfZm91bmRcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICBsZXQgcmVzID0gc2VhcmNoX3BoeXNpY2FsIGggfmNvbnRhaW5lZCBpblxuICAgICAgICAgIChtYXRjaCByZXMgd2l0aFxuICAgICAgICAgICB8IGBOb3RfZm91bmQgLT4gbG9vcCAoaSArIDEpIHRcbiAgICAgICAgICAgfCAjZm91bmQgYXMgZm91bmQgLT4gYFBvcyAoaSwgZm91bmQpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgMCBsc3QpXG47O1xuXG5sZXQgcmVjIHN1YnN0X2ZvdW5kIHNleHAgfnN1YnN0ID0gZnVuY3Rpb25cbiAgfCBgRm91bmQgLT4gc3Vic3RcbiAgfCBgUG9zIChwb3MsIGZvdW5kKSAtPlxuICAgIChtYXRjaCBzZXhwIHdpdGhcbiAgICAgfCBBdG9tIF8gLT4gZmFpbHdpdGggXCJTZXhwbGliLlNleHAuc3Vic3RfZm91bmQ6IGF0b20gd2hlbiBwb3NpdGlvbiByZXF1ZXN0ZWRcIlxuICAgICB8IExpc3QgbHN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGFjYyBwb3MgPSBmdW5jdGlvblxuICAgICAgICAgfCBbXSAtPiBmYWlsd2l0aCBcIlNleHBsaWIuU2V4cC5zdWJzdF9mb3VuZDogc2hvcnQgbGlzdCB3aGVuIHBvc2l0aW9uIHJlcXVlc3RlZFwiXG4gICAgICAgICB8IGggOjogdCB3aGVuIHBvcyA8PiAwIC0+IGxvb3AgKGggOjogYWNjKSAocG9zIC0gMSkgdFxuICAgICAgICAgfCBoIDo6IHQgLT4gTGlzdCAoTGlzdC5yZXZfYXBwZW5kIGFjYyAoc3Vic3RfZm91bmQgaCB+c3Vic3QgZm91bmQgOjogdCkpXG4gICAgICAgaW5cbiAgICAgICBsb29wIFtdIHBvcyBsc3QpXG47O1xuIiwiKCogcGFja2FnaW5nIG9mIGFubm90YXRlZCBzZXhwIGZ1bmN0aW9ucyAqKVxuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBsZXQgaXRlciB0IH5mID0gTGlzdC5pdGVyIGYgdFxuICBsZXQgbWFwIHQgfmYgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGYgdClcbmVuZFxuXG5pbmNsdWRlIFR5cGVfd2l0aF9sYXlvdXRcblxudHlwZSBwb3MgPSBTcmNfcG9zLlJlbGF0aXZlLnQgPVxuICB7IHJvdyA6IGludFxuICA7IGNvbCA6IGludFxuICB9XG5cbmxldCBzZXhwX29mX3BvcyA9IFNyY19wb3MuUmVsYXRpdmUuc2V4cF9vZl90XG5cbm1vZHVsZSBMZXhlciA9IHN0cnVjdFxuICBsZXQgbWFpbiA9IExleGVyLm1haW5fd2l0aF9sYXlvdXRcbmVuZFxuXG5tb2R1bGUgUGFyc2VyID0gUGFyc2VyX3dpdGhfbGF5b3V0XG5cbm1vZHVsZSBSZW5kZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlbF9wb3MgPSBTcmNfcG9zLlJlbGF0aXZlXG4gIG1vZHVsZSBBYnNfcG9zID0gU3JjX3Bvcy5BYnNvbHV0ZVxuXG4gIHR5cGUgbGFzdF9hdG9tID1cbiAgICB7IGltbWVkX2FmdGVyIDogQWJzX3Bvcy50XG4gICAgOyB1bmVzY2FwZWQgOiBib29sXG4gICAgfVxuXG4gIHR5cGUgc3RhdGUgPVxuICAgIHsgbXV0YWJsZSByb3dfc2hpZnQgOiBSZWxfcG9zLnRcbiAgICA7IG11dGFibGUgY3VycmVudCA6IEFic19wb3MudFxuICAgIDsgbXV0YWJsZSBsYXN0X2F0b20gOiBsYXN0X2F0b20gb3B0aW9uXG4gICAgOyBtdXRhYmxlIGxhc3RfY29tbWVudF9yb3cgOiBpbnRcbiAgICB9XG5cbiAgKCogdGhlIHBvaW50IG9mIFtpbW1lZF9hZnRlcl9sYXN0X2F0b21dIGlzIHRvIHByZXZlbnRcbiAgICAgKEEgQiBDKSBmcm9tIHJlbmRlcmluZyBhcyAoQSBCQkMpIGFmdGVyIHdlIHJlcGxhY2UgQiB3aXRoIEJCICopXG5cbiAgdHlwZSAnYSB0ID0gKGNoYXIgLT4gdW5pdCkgLT4gc3RhdGUgLT4gJ2FcblxuICBsZXQgcmV0dXJuIGEgX3B1dGMgX3N0ID0gYVxuICBsZXQgYmluZCBtIH5mIHB1dGMgc3QgPSBmIChtIHB1dGMgc3QpIHB1dGMgc3RcblxuICBsZXQgcnVuIHB1dGMgbSA9XG4gICAgbVxuICAgICAgcHV0Y1xuICAgICAgeyByb3dfc2hpZnQgPSBSZWxfcG9zLnplcm9cbiAgICAgIDsgY3VycmVudCA9IEFic19wb3Mub3JpZ2luXG4gICAgICA7IGxhc3RfYXRvbSA9IE5vbmVcbiAgICAgIDsgbGFzdF9jb21tZW50X3JvdyA9IDAgKCogYmVmb3JlIHRoZSBmaWxlIHN0YXJ0cyAqKVxuICAgICAgfVxuICA7O1xuXG4gIGxldCBlbWl0X2NoYXIgcHV0YyBzdCBjID1cbiAgICBsZXQgeyBBYnNfcG9zLmNvbDsgcm93IH0gPSBzdC5jdXJyZW50IGluXG4gICAgcHV0YyBjO1xuICAgIGlmIGMgPSAnXFxuJ1xuICAgIHRoZW4gc3QuY3VycmVudCA8LSB7IEFic19wb3Mucm93ID0gMSArIHJvdzsgY29sID0gMSB9XG4gICAgZWxzZSBzdC5jdXJyZW50IDwtIHsgQWJzX3Bvcy5yb3c7IGNvbCA9IDEgKyBjb2wgfVxuICA7O1xuXG4gIGxldCBlbWl0X3N0cmluZyBwdXRjIHN0IHN0ciA9XG4gICAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgICAgZW1pdF9jaGFyIHB1dGMgc3Qgc3RyLltpXVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgZW1pdF9jaGFycyBwdXRjIHN0IGMgfm4gPSBlbWl0X3N0cmluZyBwdXRjIHN0IChTdHJpbmcubWFrZSBuIGMpXG5cbiAgbGV0IGFkdmFuY2UgcHV0YyB+YW5jaG9yIHN0IH5ieTpkZWx0YSB+dW5lc2NhcGVkX2F0b20gfmxpbmVfY29tbWVudCA9XG4gICAgbGV0IG5ld19wb3MgPSBBYnNfcG9zLmFkZCAoQWJzX3Bvcy5hZGQgYW5jaG9yIGRlbHRhKSBzdC5yb3dfc2hpZnQgaW5cbiAgICBsZXQgbmVlZF90b19sZWF2ZV9yb29tX2JldHdlZW5fdHdvX3VuZXNjYXBlZF9hdG9tc19sZXN0X3RoZXlfYmVjb21lX29uZSA9XG4gICAgICB1bmVzY2FwZWRfYXRvbVxuICAgICAgJiZcbiAgICAgIG1hdGNoIHN0Lmxhc3RfYXRvbSB3aXRoXG4gICAgICB8IFNvbWUgeyBpbW1lZF9hZnRlcjsgdW5lc2NhcGVkID0gcHJldl91bmVzY2FwZWQgfSAtPlxuICAgICAgICBuZXdfcG9zID0gaW1tZWRfYWZ0ZXIgJiYgcHJldl91bmVzY2FwZWRcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIGluXG4gICAgKCogYXZvaWQgam9pbmluZyBzdWJzZXF1ZW50IGl0ZW1zIGludG8gYSBwcmVjZWRpbmcgbGluZSBjb21tZW50ICopXG4gICAgbGV0IG5lZWRfdG9fY2xlYXJfbGluZV9jb21tZW50ID0gbmV3X3Bvcy5yb3cgPSBzdC5sYXN0X2NvbW1lbnRfcm93IGluXG4gICAgbGV0IG5lZWRfdG9fcmVwb3NpdGlvbiA9XG4gICAgICAobm90IChBYnNfcG9zLmdlcSBuZXdfcG9zIHN0LmN1cnJlbnQpKVxuICAgICAgfHwgbmVlZF90b19jbGVhcl9saW5lX2NvbW1lbnRcbiAgICAgIHx8IG5lZWRfdG9fbGVhdmVfcm9vbV9iZXR3ZWVuX3R3b191bmVzY2FwZWRfYXRvbXNfbGVzdF90aGV5X2JlY29tZV9vbmVcbiAgICBpblxuICAgIGxldCByb3dfZGVsdGEsIG5ld19wb3MgPVxuICAgICAgaWYgbmVlZF90b19yZXBvc2l0aW9uXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogcmVwb3NpdGlvbmluZyBoZXVyaXN0aWM6IGp1c3QgbW92ZSB0byB0aGUgbmV4dCBmcmVzaCByb3cgKilcbiAgICAgICAgbGV0IG5ld19yb3cgPSAxICsgc3QuY3VycmVudC5BYnNfcG9zLnJvdyBpblxuICAgICAgICBsZXQgcm93X2RlbHRhID0gbmV3X3JvdyAtIG5ld19wb3MuQWJzX3Bvcy5yb3cgaW5cbiAgICAgICAgcm93X2RlbHRhLCB7IEFic19wb3Mucm93ID0gbmV3X3JvdzsgY29sID0gbmV3X3Bvcy5BYnNfcG9zLmNvbCB9KVxuICAgICAgZWxzZSAwLCBuZXdfcG9zXG4gICAgaW5cbiAgICAoKiBhZHZhbmNlIHRvIG5ld19wb3MgYnkgZW1pdHRpbmcgd2hpdGVzcGFjZSAqKVxuICAgIGlmIG5ld19wb3MuQWJzX3Bvcy5yb3cgPiBzdC5jdXJyZW50LkFic19wb3Mucm93XG4gICAgdGhlbiAoXG4gICAgICBsZXQgbiA9IG5ld19wb3MuQWJzX3Bvcy5yb3cgLSBzdC5jdXJyZW50LkFic19wb3Mucm93IGluXG4gICAgICBlbWl0X2NoYXJzIHB1dGMgc3QgJ1xcbicgfm4pO1xuICAgIGlmIG5ld19wb3MuQWJzX3Bvcy5jb2wgPiBzdC5jdXJyZW50LkFic19wb3MuY29sXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbiA9IG5ld19wb3MuQWJzX3Bvcy5jb2wgLSBzdC5jdXJyZW50LkFic19wb3MuY29sIGluXG4gICAgICBlbWl0X2NoYXJzIHB1dGMgc3QgJyAnIH5uKTtcbiAgICBhc3NlcnQgKG5ld19wb3MgPSBzdC5jdXJyZW50KTtcbiAgICBpZiBsaW5lX2NvbW1lbnQgdGhlbiBzdC5sYXN0X2NvbW1lbnRfcm93IDwtIHN0LmN1cnJlbnQucm93O1xuICAgIHN0LnJvd19zaGlmdFxuICAgIDwtIHsgc3Qucm93X3NoaWZ0IHdpdGggUmVsX3Bvcy5yb3cgPSBzdC5yb3dfc2hpZnQuUmVsX3Bvcy5yb3cgKyByb3dfZGVsdGEgfVxuICA7O1xuXG4gIGxldCByZWMgcmVuZGVyX3QgcHV0YyB+YW5jaG9yIChzdCA6IHN0YXRlKSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEF0b20gKGRlbHRhLCB0ZXh0LCBmbXRfdGV4dCkgLT5cbiAgICAgIGxldCBmbXRfdGV4dCA9XG4gICAgICAgIG1hdGNoIGZtdF90ZXh0IHdpdGhcbiAgICAgICAgfCBOb25lIHwgU29tZSBcIlwiIC0+IFByZV9zZXhwLm1hY2hfbWF5YmVfZXNjX3N0ciB0ZXh0XG4gICAgICAgIHwgU29tZSB0ZXh0IC0+IHRleHRcbiAgICAgIGluXG4gICAgICBsZXQgdW5lc2NhcGVkID0gZm10X3RleHQuWzBdIDw+ICdcIicgaW5cbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6ZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206dW5lc2NhcGVkIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBlbWl0X3N0cmluZyBwdXRjIHN0IGZtdF90ZXh0O1xuICAgICAgc3QubGFzdF9hdG9tIDwtIFNvbWUgeyBpbW1lZF9hZnRlciA9IHN0LmN1cnJlbnQ7IHVuZXNjYXBlZCB9XG4gICAgfCBMaXN0IChzdGFydF9kZWx0YSwgdG9jcywgZW5kX2RlbHRhKSAtPlxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpzdGFydF9kZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50OmZhbHNlO1xuICAgICAgbGV0IGNoaWxkX2FuY2hvciA9IEFic19wb3Muc3ViIHN0LmN1cnJlbnQgc3Qucm93X3NoaWZ0IGluXG4gICAgICBlbWl0X2NoYXIgcHV0YyBzdCAnKCc7XG4gICAgICBMaXN0Lml0ZXIgdG9jcyB+ZjooZnVuIHRvYyAtPiByZW5kZXJfdG9jIHB1dGMgfmFuY2hvcjpjaGlsZF9hbmNob3Igc3QgdG9jKTtcbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6ZW5kX2RlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBlbWl0X2NoYXIgcHV0YyBzdCAnKSc7XG4gICAgICAoKVxuXG4gIGFuZCByZW5kZXJfdG9jIHB1dGMgfmFuY2hvciBzdCA9IGZ1bmN0aW9uXG4gICAgfCBTZXhwIHQgLT4gcmVuZGVyX3QgcHV0YyB+YW5jaG9yIHN0IHRcbiAgICB8IENvbW1lbnQgYyAtPiByZW5kZXJfYyBwdXRjIH5hbmNob3Igc3QgY1xuXG4gIGFuZCByZW5kZXJfYyBwdXRjIH5hbmNob3Igc3QgPSBmdW5jdGlvblxuICAgIHwgUGxhaW5fY29tbWVudCAoZGVsdGEsIHRleHQpIC0+XG4gICAgICBsZXQgbGluZV9jb21tZW50ID0gU3RyaW5nLmxlbmd0aCB0ZXh0ID4gMCAmJiB0ZXh0LlswXSA9ICc7JyBpblxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50O1xuICAgICAgZW1pdF9zdHJpbmcgcHV0YyBzdCB0ZXh0XG4gICAgfCBTZXhwX2NvbW1lbnQgKGRlbHRhLCBjcywgdCkgLT5cbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6ZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206ZmFsc2UgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfc3RyaW5nIHB1dGMgc3QgXCIjO1wiO1xuICAgICAgTGlzdC5pdGVyIGNzIH5mOihyZW5kZXJfYyBwdXRjIH5hbmNob3Igc3QpO1xuICAgICAgcmVuZGVyX3QgcHV0YyB+YW5jaG9yIHN0IHRcbiAgOztcblxuICBsZXQgcmVuZGVyIGFzZXhwIHB1dGMgc3QgPSByZW5kZXJfdG9jIHB1dGMgfmFuY2hvcjpBYnNfcG9zLm9yaWdpbiBzdCBhc2V4cFxuICBsZXQgc2V4cCA9IHJlbmRlclxuZW5kXG5cbm1vZHVsZSBGb3JnZXQgPSBzdHJ1Y3RcbiAgKCogSW4gY3BzIHRvIHByZXZlbnQgbm9uLXRhaWwgcmVjdXJzaW9uLlxuICAgICBUaGUgcG9seW1vcnBoaXNtIGluIHRoZSBzaWduYXR1cmUgZW5zdXJlcyB0aGF0IGVhY2ggZnVuY3Rpb24gcmV0dXJuc1xuICAgICBvbmx5IHRocm91Z2ggdGhlIGNvbnRpbnVhdGlvbi4gKilcbiAgbW9kdWxlIENwcyA6IHNpZ1xuICAgIHZhbCBmb3JnZXRfdCA6IHQgLT4gKFR5cGUudCAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvYyA6IHRfb3JfY29tbWVudCAtPiAoVHlwZS50IG9wdGlvbiAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvY3MgOiB0X29yX2NvbW1lbnQgbGlzdCAtPiAoVHlwZS50IGxpc3QgLT4gJ3IpIC0+ICdyXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCByZWMgZm9yZ2V0X3QgdCBrID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBBdG9tIChfLCB4LCBfKSAtPiBrIChUeXBlLkF0b20geClcbiAgICAgIHwgTGlzdCAoXywgdG9jcywgXykgLT4gZm9yZ2V0X3RvY3MgdG9jcyAoZnVuIHhzIC0+IGsgKFR5cGUuTGlzdCB4cykpXG5cbiAgICBhbmQgZm9yZ2V0X3RvY3MgdG9jcyBrID1cbiAgICAgIG1hdGNoIHRvY3Mgd2l0aFxuICAgICAgfCBbXSAtPiBrIFtdXG4gICAgICB8IHRvYyA6OiB0b2NzIC0+XG4gICAgICAgIGZvcmdldF90b2MgdG9jIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBmb3JnZXRfdG9jcyB0b2NzIGtcbiAgICAgICAgICB8IFNvbWUgeCAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoeCA6OiB4cykpKVxuXG4gICAgYW5kIGZvcmdldF90b2MgdG9jIGsgPVxuICAgICAgbWF0Y2ggdG9jIHdpdGhcbiAgICAgIHwgQ29tbWVudCBfIC0+IGsgTm9uZVxuICAgICAgfCBTZXhwIHQgLT4gZm9yZ2V0X3QgdCAoZnVuIHggLT4gayAoU29tZSB4KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdCB4ID0gQ3BzLmZvcmdldF90IHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnQgeCA9IENwcy5mb3JnZXRfdG9jIHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnRzIHggPSBDcHMuZm9yZ2V0X3RvY3MgeCAoZnVuIHkgLT4geSlcbmVuZFxuIiwib3BlbiBQcmludGZcbm9wZW4gQmlnYXJyYXlcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cF9jb252XG5vcGVuIFNleHBcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxudHlwZSBmbG9hdDMyX3ZlYyA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSBmbG9hdDY0X3ZlYyA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSB2ZWMgPSBmbG9hdDY0X3ZlY1xudHlwZSBmbG9hdDMyX21hdCA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBmbG9hdDY0X21hdCA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBtYXQgPSBmbG9hdDY0X21hdFxuXG5sZXQgc2V4cF9vZl9mbG9hdF92ZWMgdmVjID1cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBBcnJheTEuZGltIHZlYyBkb3dudG8gMSBkb1xuICAgIGxzdF9yZWYgOj0gc2V4cF9vZl9mbG9hdCB2ZWMue2l9IDo6ICFsc3RfcmVmXG4gIGRvbmU7XG4gIExpc3QgIWxzdF9yZWZcbjs7XG5cbmxldCBzZXhwX29mX2JpZ3N0cmluZyAoYnN0ciA6IGJpZ3N0cmluZykgPVxuICBsZXQgbiA9IEFycmF5MS5kaW0gYnN0ciBpblxuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHN0ciBpIGJzdHIue2l9XG4gIGRvbmU7XG4gIEF0b20gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyKVxuOztcblxubGV0IHNleHBfb2ZfZmxvYXQzMl92ZWMgKHZlYyA6IGZsb2F0MzJfdmVjKSA9IHNleHBfb2ZfZmxvYXRfdmVjIHZlY1xubGV0IHNleHBfb2ZfZmxvYXQ2NF92ZWMgKHZlYyA6IGZsb2F0NjRfdmVjKSA9IHNleHBfb2ZfZmxvYXRfdmVjIHZlY1xubGV0IHNleHBfb2ZfdmVjICh2ZWMgOiB2ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5cbmxldCBzZXhwX29mX2Zsb2F0X21hdCBtYXQgPVxuICBsZXQgbSA9IEFycmF5Mi5kaW0xIG1hdCBpblxuICBsZXQgbiA9IEFycmF5Mi5kaW0yIG1hdCBpblxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICAoKiBJdCdzIHN1cnByaXNpbmcgdGhhdCB3ZSBzZXJpYWxpemUgW0ZvcnRyYW5fbGF5b3V0XSBtYXRyaWNlcyBpbiByb3ctbWFqb3Igb3JkZXIuIEkgY2FuXG4gICAgIG9ubHkgc3BlY3VsYXRlIHRoYXQgaXQgd2FzIGNob3NlbiBmb3IgcmVhZGFiaWxpdHkuIFRoZSBjYWNoZSBwZXJmb3JtYW5jZSBpc1xuICAgICBpcnJlbGV2YW50IGJlY2F1c2UgcGVvcGxlIHdobyBjYXJlIHdvbid0IHNlcmlhbGl6ZSB0byBzZXhwLiAqKVxuICBmb3Igcm93ID0gbiBkb3dudG8gMSBkb1xuICAgIGZvciBjb2wgPSBtIGRvd250byAxIGRvXG4gICAgICBsc3RfcmVmIDo9IHNleHBfb2ZfZmxvYXQgbWF0Lntjb2wsIHJvd30gOjogIWxzdF9yZWZcbiAgICBkb25lXG4gIGRvbmU7XG4gIExpc3QgKHNleHBfb2ZfaW50IG0gOjogc2V4cF9vZl9pbnQgbiA6OiAhbHN0X3JlZilcbjs7XG5cbmxldCBzZXhwX29mX2Zsb2F0MzJfbWF0IChtYXQgOiBmbG9hdDMyX21hdCkgPSBzZXhwX29mX2Zsb2F0X21hdCBtYXRcbmxldCBzZXhwX29mX2Zsb2F0NjRfbWF0IChtYXQgOiBmbG9hdDY0X21hdCkgPSBzZXhwX29mX2Zsb2F0X21hdCBtYXRcbmxldCBzZXhwX29mX21hdCAobWF0IDogbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IGJpZ3N0cmluZ19zZXhwX2dyYW1tYXIgOiBiaWdzdHJpbmcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBTdHJpbmcgfVxuXG5sZXQgYmlnc3RyaW5nX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IGJzdHIgPSBBcnJheTEuY3JlYXRlIGNoYXIgY19sYXlvdXQgbGVuIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGJzdHIue2l9IDwtIHN0ci5baV1cbiAgICBkb25lO1xuICAgIGJzdHJcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImJpZ3N0cmluZ19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdF92ZWMgY3JlYXRlX2Zsb2F0X3ZlYyBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbXSAtPiBlbXB0eV9mbG9hdF92ZWNcbiAgfCBMaXN0IGxzdCAtPlxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsc3QgaW5cbiAgICBsZXQgcmVzID0gY3JlYXRlX2Zsb2F0X3ZlYyBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJlc1xuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgcmVzLntpfSA8LSBmbG9hdF9vZl9zZXhwIGg7XG4gICAgICAgIGxvb3AgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBsb29wIDEgbHN0XG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF92ZWNfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY3JlYXRlX2Zsb2F0MzJfdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0XG5sZXQgY3JlYXRlX2Zsb2F0NjRfdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDY0IGZvcnRyYW5fbGF5b3V0XG5sZXQgZW1wdHlfZmxvYXQzMl92ZWMgPSBjcmVhdGVfZmxvYXQzMl92ZWMgMFxubGV0IGVtcHR5X2Zsb2F0NjRfdmVjID0gY3JlYXRlX2Zsb2F0NjRfdmVjIDBcbmxldCBmbG9hdDMyX3ZlY19vZl9zZXhwID0gZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXQzMl92ZWMgY3JlYXRlX2Zsb2F0MzJfdmVjXG5sZXQgZmxvYXQ2NF92ZWNfb2Zfc2V4cCA9IGZsb2F0X3ZlY19vZl9zZXhwIGVtcHR5X2Zsb2F0NjRfdmVjIGNyZWF0ZV9mbG9hdDY0X3ZlY1xubGV0IHZlY19vZl9zZXhwID0gZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXQ2NF92ZWMgY3JlYXRlX2Zsb2F0NjRfdmVjXG5sZXQgdmVjX3NleHBfZ3JhbW1hciA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBMaXN0IChNYW55IEZsb2F0KSB9XG5sZXQgZmxvYXQzMl92ZWNfc2V4cF9ncmFtbWFyID0gdmVjX3NleHBfZ3JhbW1hclxubGV0IGZsb2F0NjRfdmVjX3NleHBfZ3JhbW1hciA9IHZlY19zZXhwX2dyYW1tYXJcblxubGV0IGNoZWNrX3Rvb19tdWNoX2RhdGEgc2V4cCBkYXRhIHJlcyA9XG4gIGlmIGRhdGEgPSBbXSB0aGVuIHJlcyBlbHNlIG9mX3NleHBfZXJyb3IgXCJmbG9hdF9tYXRfb2Zfc2V4cDogdG9vIG11Y2ggZGF0YVwiIHNleHBcbjs7XG5cbmxldCBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXRfbWF0IHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IChzbSA6OiBzbiA6OiBkYXRhKSAtPlxuICAgIGxldCBtID0gaW50X29mX3NleHAgc20gaW5cbiAgICBsZXQgbiA9IGludF9vZl9zZXhwIHNuIGluXG4gICAgbGV0IHJlcyA9IGNyZWF0ZV9mbG9hdF9tYXQgbSBuIGluXG4gICAgaWYgbSA9IDAgfHwgbiA9IDBcbiAgICB0aGVuIGNoZWNrX3Rvb19tdWNoX2RhdGEgc2V4cCBkYXRhIHJlc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wX2NvbHMgY29sIGRhdGEgPVxuICAgICAgICBsZXQgdmVjID0gQXJyYXkyLnNsaWNlX3JpZ2h0IHJlcyBjb2wgaW5cbiAgICAgICAgbGV0IHJlYyBsb29wX3Jvd3Mgcm93ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFtdIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF9tYXRfb2Zfc2V4cDogbm90IGVub3VnaCBkYXRhXCIgc2V4cFxuICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICB2ZWMue3Jvd30gPC0gZmxvYXRfb2Zfc2V4cCBoO1xuICAgICAgICAgICAgaWYgcm93ID0gbVxuICAgICAgICAgICAgdGhlbiBpZiBjb2wgPSBuIHRoZW4gY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIHQgcmVzIGVsc2UgbG9vcF9jb2xzIChjb2wgKyAxKSB0XG4gICAgICAgICAgICBlbHNlIGxvb3Bfcm93cyAocm93ICsgMSkgdFxuICAgICAgICBpblxuICAgICAgICBsb29wX3Jvd3MgMSBkYXRhXG4gICAgICBpblxuICAgICAgbG9vcF9jb2xzIDEgZGF0YSlcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiBsaXN0IHRvbyBzaG9ydFwiIHNleHBcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjcmVhdGVfZmxvYXQzMl9tYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXRcbmxldCBjcmVhdGVfZmxvYXQ2NF9tYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDMyX21hdF9vZl9zZXhwID0gZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0MzJfbWF0XG5sZXQgZmxvYXQ2NF9tYXRfb2Zfc2V4cCA9IGZsb2F0X21hdF9vZl9zZXhwIGNyZWF0ZV9mbG9hdDY0X21hdFxubGV0IG1hdF9vZl9zZXhwID0gZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0NjRfbWF0XG5cbmxldCBtYXRfc2V4cF9ncmFtbWFyIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IExpc3QgKENvbnMgKEludGVnZXIsIENvbnMgKEludGVnZXIsIE1hbnkgRmxvYXQpKSkgfVxuOztcblxubGV0IGZsb2F0MzJfbWF0X3NleHBfZ3JhbW1hciA9IG1hdF9zZXhwX2dyYW1tYXJcbmxldCBmbG9hdDY0X21hdF9zZXhwX2dyYW1tYXIgPSBtYXRfc2V4cF9ncmFtbWFyXG5sZXQgc3RyaW5nX29mX19vZl9fc2V4cF9vZiB0b19zZXhwIHggPSBTZXhwLnRvX3N0cmluZyAodG9fc2V4cCB4KVxuXG5sZXQgb2Zfc3RyaW5nX19vZl9fb2Zfc2V4cCBvZl9zZXhwIHMgPVxuICB0cnlcbiAgICBsZXQgc2V4cCA9IFNleHAub2Zfc3RyaW5nIHMgaW5cbiAgICBvZl9zZXhwIHNleHBcbiAgd2l0aFxuICB8IGUgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKHNwcmludGYgXCJvZl9zdHJpbmcgZmFpbGVkIG9uICVzIHdpdGggJXNcIiBzIChTZXhwLnRvX3N0cmluZ19odW0gKHNleHBfb2ZfZXhuIGUpKSlcbjs7XG4iLCJtb2R1bGUgSGFzaHRibCA9IHN0cnVjdFxuICBpbmNsdWRlIEhhc2h0YmxcblxuICBsZXQgc2V4cF9vZl90ID0gQ29udi5zZXhwX29mX2hhc2h0YmxcbiAgbGV0IHRfb2Zfc2V4cCA9IENvbnYuaGFzaHRibF9vZl9zZXhwXG5lbmRcblxubW9kdWxlIExhenkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBMYXp5XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IENvbnYubGF6eV90X29mX3NleHBcbiAgbGV0IHNleHBfb2ZfdCA9IENvbnYuc2V4cF9vZl9sYXp5X3RcbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gQ29udi5sYXp5X3Rfc2V4cF9ncmFtbWFyXG5lbmRcblxubGV0IHNleHBfb2ZfdW5pdCA9IENvbnYuc2V4cF9vZl91bml0XG5sZXQgdW5pdF9vZl9zZXhwID0gQ29udi51bml0X29mX3NleHBcbmxldCB1bml0X3NleHBfZ3JhbW1hciA9IENvbnYudW5pdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2Jvb2wgPSBDb252LnNleHBfb2ZfYm9vbFxubGV0IGJvb2xfb2Zfc2V4cCA9IENvbnYuYm9vbF9vZl9zZXhwXG5sZXQgYm9vbF9zZXhwX2dyYW1tYXIgPSBDb252LmJvb2xfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9zdHJpbmcgPSBDb252LnNleHBfb2Zfc3RyaW5nXG5sZXQgc3RyaW5nX29mX3NleHAgPSBDb252LnN0cmluZ19vZl9zZXhwXG5sZXQgc3RyaW5nX3NleHBfZ3JhbW1hciA9IENvbnYuc3RyaW5nX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfY2hhciA9IENvbnYuc2V4cF9vZl9jaGFyXG5sZXQgY2hhcl9vZl9zZXhwID0gQ29udi5jaGFyX29mX3NleHBcbmxldCBjaGFyX3NleHBfZ3JhbW1hciA9IENvbnYuY2hhcl9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2ludCA9IENvbnYuc2V4cF9vZl9pbnRcbmxldCBpbnRfb2Zfc2V4cCA9IENvbnYuaW50X29mX3NleHBcbmxldCBpbnRfc2V4cF9ncmFtbWFyID0gQ29udi5pbnRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9mbG9hdCA9IENvbnYuc2V4cF9vZl9mbG9hdFxubGV0IGZsb2F0X29mX3NleHAgPSBDb252LmZsb2F0X29mX3NleHBcbmxldCBmbG9hdF9zZXhwX2dyYW1tYXIgPSBDb252LmZsb2F0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50MzIgPSBDb252LnNleHBfb2ZfaW50MzJcbmxldCBpbnQzMl9vZl9zZXhwID0gQ29udi5pbnQzMl9vZl9zZXhwXG5sZXQgaW50MzJfc2V4cF9ncmFtbWFyID0gQ29udi5pbnQzMl9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2ludDY0ID0gQ29udi5zZXhwX29mX2ludDY0XG5sZXQgaW50NjRfb2Zfc2V4cCA9IENvbnYuaW50NjRfb2Zfc2V4cFxubGV0IGludDY0X3NleHBfZ3JhbW1hciA9IENvbnYuaW50NjRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9uYXRpdmVpbnQgPSBDb252LnNleHBfb2ZfbmF0aXZlaW50XG5sZXQgbmF0aXZlaW50X29mX3NleHAgPSBDb252Lm5hdGl2ZWludF9vZl9zZXhwXG5sZXQgbmF0aXZlaW50X3NleHBfZ3JhbW1hciA9IENvbnYubmF0aXZlaW50X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfcmVmID0gQ29udi5zZXhwX29mX3JlZlxubGV0IHJlZl9vZl9zZXhwID0gQ29udi5yZWZfb2Zfc2V4cFxubGV0IHJlZl9zZXhwX2dyYW1tYXIgPSBDb252LnJlZl9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2xhenlfdCA9IENvbnYuc2V4cF9vZl9sYXp5X3RcbmxldCBsYXp5X3Rfb2Zfc2V4cCA9IENvbnYubGF6eV90X29mX3NleHBcbmxldCBsYXp5X3Rfc2V4cF9ncmFtbWFyID0gQ29udi5sYXp5X3Rfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9vcHRpb24gPSBDb252LnNleHBfb2Zfb3B0aW9uXG5sZXQgb3B0aW9uX29mX3NleHAgPSBDb252Lm9wdGlvbl9vZl9zZXhwXG5sZXQgb3B0aW9uX3NleHBfZ3JhbW1hciA9IENvbnYub3B0aW9uX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfbGlzdCA9IENvbnYuc2V4cF9vZl9saXN0XG5sZXQgbGlzdF9vZl9zZXhwID0gQ29udi5saXN0X29mX3NleHBcbmxldCBsaXN0X3NleHBfZ3JhbW1hciA9IENvbnYubGlzdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2FycmF5ID0gQ29udi5zZXhwX29mX2FycmF5XG5sZXQgYXJyYXlfb2Zfc2V4cCA9IENvbnYuYXJyYXlfb2Zfc2V4cFxubGV0IGFycmF5X3NleHBfZ3JhbW1hciA9IENvbnYuYXJyYXlfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9leG4gPSBDb252LnNleHBfb2ZfZXhuXG5sZXQgZXhuX3NleHBfZ3JhbW1hciA9IENvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxuIiwiaW5jbHVkZSBTZXhwX2dyYW1tYXJfaW50ZlxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2dyYW1tYXJcblxubGV0IHJlbWVtYmVyX3RvX3VwZGF0ZV90aGVzZV90b2dldGhlciB+dF9vZl9zZXhwIH50X3NleHBfZ3JhbW1hciA9XG4gIHRfb2Zfc2V4cCwgdF9zZXhwX2dyYW1tYXJcbjs7XG4iLCIoKiBQYXRoOiBNb2R1bGUgZm9yIFN1YnN0aXR1dGlvbnMgd2l0aGluIFMtZXhwcmVzc2lvbnMgKilcblxub3BlbiBGb3JtYXRcbm9wZW4gU2V4cFxuXG50eXBlIGVsID1cbiAgfCBQb3Mgb2YgaW50XG4gIHwgTWF0Y2ggb2Ygc3RyaW5nICogaW50XG4gIHwgUmVjIG9mIHN0cmluZ1xuXG50eXBlIHQgPSBlbCBsaXN0XG5cbmxldCBpbGxlZ2FsX2F0b20gbG9jIHNleHAgPVxuICBmYWlsd2l0aCAoc3ByaW50ZiBcIlBhdGguJXM6IGlsbGVnYWwgYXRvbTogJXNcIiBsb2MgKFNleHAudG9fc3RyaW5nIHNleHApKVxuOztcblxubGV0IGV4dHJhY3RfcG9zX2xzdCBsb2Mgc2V4cCBpeCBsc3QgPVxuICBsZXQgcmVjIGxvb3AgYWNjIG4gPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGxldCBzZXhwX3N0ciA9IFNleHAudG9fc3RyaW5nIHNleHAgaW5cbiAgICAgIGZhaWx3aXRoIChzcHJpbnRmIFwiUGF0aC4lczogaWxsZWdhbCBpbmRleCAlZCBpbjogJXNcIiBsb2MgaXggc2V4cF9zdHIpXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN1YnN0ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgICAgfCBTb21lIHggLT4gTGlzdC5yZXZfYXBwZW5kIGFjYyAoeCA6OiB0KVxuICAgICAgICBpblxuICAgICAgICBzdWJzdCwgaClcbiAgICAgIGVsc2UgbG9vcCAoaCA6OiBhY2MpIChuIC0gMSkgdFxuICBpblxuICBsb29wIFtdIGl4IGxzdFxuOztcblxubGV0IGV4dHJhY3RfcG9zIG4gPSBmdW5jdGlvblxuICB8IExpc3QgbHN0IGFzIHNleHAgLT5cbiAgICBsZXQgc3Vic3QsIGVsID0gZXh0cmFjdF9wb3NfbHN0IFwiZXh0cmFjdF9wb3NcIiBzZXhwIG4gbHN0IGluXG4gICAgKGZ1biB4IC0+IExpc3QgKHN1YnN0IHgpKSwgZWxcbiAgfCBBdG9tIF8gYXMgc2V4cCAtPiBpbGxlZ2FsX2F0b20gXCJleHRyYWN0X3Bvc1wiIHNleHBcbjs7XG5cbmxldCBleHRyYWN0X21hdGNoIHRhZyBhcmdfaXggPSBmdW5jdGlvblxuICB8IExpc3QgKChBdG9tIHN0ciBhcyBzZXhwKSA6OiBhcmdzKSB3aGVuIHN0ciA9IHRhZyAtPlxuICAgIGxldCBzdWJzdCwgZWwgPSBleHRyYWN0X3Bvc19sc3QgXCJleHRyYWN0X21hdGNoXCIgKExpc3QgYXJncykgYXJnX2l4IGFyZ3MgaW5cbiAgICAoZnVuIG1heWJlX3ggLT4gTGlzdCAoc2V4cCA6OiBzdWJzdCBtYXliZV94KSksIGVsXG4gIHwgTGlzdCBfIGFzIHNleHAgLT5cbiAgICBsZXQgc2V4cF9zdHIgPSBTZXhwLnRvX3N0cmluZyBzZXhwIGluXG4gICAgZmFpbHdpdGggKFwiUGF0aC5leHRyYWN0X21hdGNoOiB1bmV4cGVjdGVkIG5lc3RlZCBsaXN0IGluOiBcIiBeIHNleHBfc3RyKVxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfbWF0Y2hcIiBzZXhwXG47O1xuXG5sZXQgZXh0cmFjdF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgfCBMaXN0IGxzdCBhcyBzZXhwIC0+XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBzZXhwX3N0ciA9IFNleHAudG9fc3RyaW5nIHNleHAgaW5cbiAgICAgICAgZmFpbHdpdGggKHNwcmludGYgXCJQYXRoLmV4dHJhY3RfcmVjOiBrZXkgXFxcIiVzXFxcIiBub3QgZm91bmQgaW46ICVzXCIga2V5IHNleHBfc3RyKVxuICAgICAgfCBMaXN0IFsgKEF0b20gc3RyIGFzIHNleHApOyB2IF0gOjogcmVzdCB3aGVuIHN0ciA9IGtleSAtPlxuICAgICAgICBsZXQgc3Vic3QgeCA9IExpc3QgKExpc3QucmV2X2FwcGVuZCBhY2MgKExpc3QgWyBzZXhwOyB4IF0gOjogcmVzdCkpIGluXG4gICAgICAgIHN1YnN0LCB2XG4gICAgICB8IGggOjogdCAtPiBsb29wIChoIDo6IGFjYykgdFxuICAgIGluXG4gICAgbG9vcCBbXSBsc3RcbiAgfCBBdG9tIF8gYXMgc2V4cCAtPiBpbGxlZ2FsX2F0b20gXCJleHRyYWN0X3JlY1wiIHNleHBcbjs7XG5cbmxldCBpZCB4ID0geFxuXG5sZXQgcmVjIHN1YnN0X29wdGlvbiAoc3VwX3N1YnN0LCBlbCkgcmVzdCA9XG4gIGxldCBzdWJfc3Vic3QsIHN1Yl9lbCA9IHN1YnN0X3BhdGggZWwgcmVzdCBpblxuICBsZXQgc3Vic3QgeCA9IHN1cF9zdWJzdCAoU29tZSAoc3ViX3N1YnN0IHgpKSBpblxuICBzdWJzdCwgc3ViX2VsXG5cbmFuZCBzdWJzdF9wYXRoIHNleHAgPSBmdW5jdGlvblxuICB8IFBvcyBuIDo6IHQgLT4gc3Vic3Rfb3B0aW9uIChleHRyYWN0X3BvcyBuIHNleHApIHRcbiAgfCBNYXRjaCAodGFnLCBhcmdfaXgpIDo6IHQgLT4gc3Vic3Rfb3B0aW9uIChleHRyYWN0X21hdGNoIHRhZyBhcmdfaXggc2V4cCkgdFxuICB8IFJlYyBrZXkgOjogcmVzdCAtPlxuICAgIGxldCByZWNfc3Vic3QsIGVsID0gZXh0cmFjdF9yZWMga2V5IHNleHAgaW5cbiAgICBsZXQgc3ViX3N1YnN0LCBzdWJfZWwgPSBzdWJzdF9wYXRoIGVsIHJlc3QgaW5cbiAgICBsZXQgc3Vic3QgeCA9IHJlY19zdWJzdCAoc3ViX3N1YnN0IHgpIGluXG4gICAgc3Vic3QsIHN1Yl9lbFxuICB8IFtdIC0+IGlkLCBzZXhwXG47O1xuXG5sZXQgaW1wbG9kZSBsc3QgPVxuICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbHN0IGluXG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGxldCByZWMgbG9vcCBpeCA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIEJ5dGVzLnNldCBzdHIgaXggaDtcbiAgICAgIGxvb3AgKGl4ICsgMSkgdFxuICAgIHwgW10gLT4gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbiAgaW5cbiAgbG9vcCAwIGxzdFxuOztcblxubGV0IGZhaWxfcGFyc2UgbXNnID0gZmFpbHdpdGggKFwiUGF0aC5wYXJzZTogXCIgXiBtc2cpXG5cbmxldCBwYXJzZSBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIGZhaWxfcGFyc2UgXCJwYXRoIGVtcHR5XCJcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGFjYyBkb3RfaXggPVxuICAgICAgbWF0Y2ggc3RyLltkb3RfaXhdIHdpdGhcbiAgICAgIHwgJy4nIC0+XG4gICAgICAgIGxldCBkb3RfaXgxID0gZG90X2l4ICsgMSBpblxuICAgICAgICBpZiBkb3RfaXgxID0gbGVuXG4gICAgICAgIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZWMgcGFyc2VfZG90IGFjYyBzdHJfYWNjIGl4ID1cbiAgICAgICAgICAgIGlmIGl4ID0gbGVuXG4gICAgICAgICAgICB0aGVuIExpc3QucmV2X2FwcGVuZCBhY2MgWyBSZWMgKGltcGxvZGUgKExpc3QucmV2IHN0cl9hY2MpKSBdXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbWF0Y2ggc3RyLltpeF0gd2l0aFxuICAgICAgICAgICAgICB8ICdbJyAtPlxuICAgICAgICAgICAgICAgIGxldCByZWMgcGFyc2VfaW5kZXggaW5kZXhfYWNjIGl4ID1cbiAgICAgICAgICAgICAgICAgIGlmIGl4ID0gbGVuXG4gICAgICAgICAgICAgICAgICB0aGVuIGZhaWxfcGFyc2UgXCJFT0YgcmVhZGluZyBpbmRleFwiXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc3RyLltpeF0sIGluZGV4X2FjYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgKCcwJyAuLiAnOScgYXMgYyksIE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9pbmRleCAoU29tZSAoaW50X29mX2NoYXIgYyAtIDQ4KSkgKGl4ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgfCAoJzAnIC4uICc5JyBhcyBjKSwgU29tZSBpbmRleF9hY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3X2luZGV4X2FjYyA9IFNvbWUgKCgxMCAqIGluZGV4X2FjYykgKyBpbnRfb2ZfY2hhciBjIC0gNDgpIGluXG4gICAgICAgICAgICAgICAgICAgICAgcGFyc2VfaW5kZXggbmV3X2luZGV4X2FjYyAoaXggKyAxKVxuICAgICAgICAgICAgICAgICAgICB8ICddJywgTm9uZSAtPiBmYWlsX3BhcnNlIFwiZW1wdHkgaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICB8ICddJywgU29tZSBpbmRleF9hY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgcGF0aF9lbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBzdHJfYWNjID0gW11cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gUG9zIGluZGV4X2FjY1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBNYXRjaCAoaW1wbG9kZSAoTGlzdC5yZXYgc3RyX2FjYyksIGluZGV4X2FjYylcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBpeDEgPSBpeCArIDEgaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBpeDEgPSBsZW5cbiAgICAgICAgICAgICAgICAgICAgICB0aGVuIExpc3QucmV2X2FwcGVuZCBhY2MgWyBwYXRoX2VsIF1cbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIGxvb3AgKHBhdGhfZWwgOjogYWNjKSBpeDFcbiAgICAgICAgICAgICAgICAgICAgfCBjLCBfIC0+IGZhaWxfcGFyc2UgKHNwcmludGYgXCJpbGxlZ2FsIGNoYXJhY3RlciBpbiBpbmRleDogJWNcIiBjKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHBhcnNlX2luZGV4IE5vbmUgKGl4ICsgMSlcbiAgICAgICAgICAgICAgfCAnXFxcXCcgLT5cbiAgICAgICAgICAgICAgICBsZXQgaXgxID0gaXggKyAxIGluXG4gICAgICAgICAgICAgICAgaWYgaXgxID0gbGVuXG4gICAgICAgICAgICAgICAgdGhlbiBmYWlsX3BhcnNlIFwiRU9GIGFmdGVyIGVzY2FwZVwiXG4gICAgICAgICAgICAgICAgZWxzZSBwYXJzZV9kb3QgYWNjIChzdHIuW2l4MV0gOjogc3RyX2FjYykgKGl4ICsgMSlcbiAgICAgICAgICAgICAgfCAnLicgLT5cbiAgICAgICAgICAgICAgICBpZiBzdHJfYWNjID0gW10gdGhlbiBmYWlsX3BhcnNlIFwiZG91YmxlICcuJ1wiO1xuICAgICAgICAgICAgICAgIGxldCBwYXRoX2VsID0gUmVjIChpbXBsb2RlIChMaXN0LnJldiBzdHJfYWNjKSkgaW5cbiAgICAgICAgICAgICAgICBwYXJzZV9kb3QgKHBhdGhfZWwgOjogYWNjKSBbXSAoaXggKyAxKVxuICAgICAgICAgICAgICB8IGMgLT4gcGFyc2VfZG90IGFjYyAoYyA6OiBzdHJfYWNjKSAoaXggKyAxKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIHBhcnNlX2RvdCBhY2MgW10gZG90X2l4MSlcbiAgICAgIHwgYyAtPiBmYWlsX3BhcnNlIChzcHJpbnRmIFwiJy4nIGV4cGVjdGVkOyBnb3QgJyVjJ1wiIGMpXG4gICAgaW5cbiAgICBsb29wIFtdIDApXG47O1xuXG5sZXQgZ2V0X3N1YnN0IHBhdGggc3RyIHNleHAgPVxuICBsZXQgcGF0aCA9XG4gICAgbWF0Y2ggcGF0aCwgc3RyIHdpdGhcbiAgICB8IFNvbWUgcGF0aCwgXyAtPiBwYXRoXG4gICAgfCBOb25lLCBTb21lIHN0ciAtPiBwYXJzZSBzdHJcbiAgICB8IE5vbmUsIE5vbmUgLT4gW11cbiAgaW5cbiAgc3Vic3RfcGF0aCBzZXhwIHBhdGhcbjs7XG5cbmxldCBnZXQgP3BhdGggP3N0ciBzZXhwID0gc25kIChnZXRfc3Vic3QgcGF0aCBzdHIgc2V4cClcblxubGV0IHJlcGxhY2UgP3BhdGggP3N0ciBzZXhwIH5zdWJzdCA9XG4gIGxldCBzdWJzdF9mdW4sIF8gPSBnZXRfc3Vic3QgcGF0aCBzdHIgc2V4cCBpblxuICBzdWJzdF9mdW4gc3Vic3Rcbjs7XG5cbmxldCByZXBsYWNlX25vX3BhdGggfnN0ciBzZXhwIH5zdWJzdCA9IHJlcGxhY2UgfnN0ciBzZXhwIH5zdWJzdFxuIiwibGV0IHJlZ2lzdGVyIGV4YyBleGNfbmFtZSA9XG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBfZXhjIC0+XG4gICAgU2V4cC5BdG9tIGV4Y19uYW1lKVxuOztcblxubGV0IG1hZ2ljX2ZpZWxkIHJlcHIgbiA9IE9iai5tYWdpYyAoT2JqLmZpZWxkIHJlcHIgbilcblxubGV0IHJlZ2lzdGVyMSBtYWtlX2V4YyBleGNfbmFtZSBzZXhwX29mX2FyZzEgPVxuICBsZXQgZXhjID0gbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXIyIG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSBzZXhwX29mX2FyZzIgPVxuICBsZXQgZXhjID0gbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXIzIG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSBzZXhwX29mX2FyZzIgc2V4cF9vZl9hcmczID1cbiAgbGV0IGV4YyA9IG1ha2VfZXhjIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMyBdKVxuOztcblxubGV0IHJlZ2lzdGVyNCBtYWtlX2V4YyBleGNfbmFtZSBzZXhwX29mX2FyZzEgc2V4cF9vZl9hcmcyIHNleHBfb2ZfYXJnMyBzZXhwX29mX2FyZzQgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQgXSlcbjs7XG5cbmxldCByZWdpc3RlcjVcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNSBdKVxuOztcblxubGV0IHJlZ2lzdGVyNlxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDU7IHNleHA2IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI3XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgICAgIHNleHBfb2ZfYXJnN1xuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQ7IHNleHA1OyBzZXhwNjsgc2V4cDcgXSlcbjs7XG5cbmxldCByZWdpc3RlcjhcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gICAgICBzZXhwX29mX2FyZzhcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBsZXQgc2V4cDcgPSBzZXhwX29mX2FyZzcgKG1hZ2ljX2ZpZWxkIHJlcHIgNykgaW5cbiAgICBsZXQgc2V4cDggPSBzZXhwX29mX2FyZzggKG1hZ2ljX2ZpZWxkIHJlcHIgOCkgaW5cbiAgICBTZXhwLkxpc3RcbiAgICAgIFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDU7IHNleHA2OyBzZXhwNzsgc2V4cDggXSlcbjs7XG5cbmxldCByZWdpc3RlcjlcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gICAgICBzZXhwX29mX2FyZzhcbiAgICAgIHNleHBfb2ZfYXJnOVxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIGxldCBzZXhwOCA9IHNleHBfb2ZfYXJnOCAobWFnaWNfZmllbGQgcmVwciA4KSBpblxuICAgIGxldCBzZXhwOSA9IHNleHBfb2ZfYXJnOSAobWFnaWNfZmllbGQgcmVwciA5KSBpblxuICAgIFNleHAuTGlzdFxuICAgICAgWyBTZXhwLkF0b20gZXhjX25hbWVcbiAgICAgIDsgc2V4cDFcbiAgICAgIDsgc2V4cDJcbiAgICAgIDsgc2V4cDNcbiAgICAgIDsgc2V4cDRcbiAgICAgIDsgc2V4cDVcbiAgICAgIDsgc2V4cDZcbiAgICAgIDsgc2V4cDdcbiAgICAgIDsgc2V4cDhcbiAgICAgIDsgc2V4cDlcbiAgICAgIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXIxMFxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICAgICAgc2V4cF9vZl9hcmc5XG4gICAgICBzZXhwX29mX2FyZzEwXG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgbGV0IHNleHA4ID0gc2V4cF9vZl9hcmc4IChtYWdpY19maWVsZCByZXByIDgpIGluXG4gICAgbGV0IHNleHA5ID0gc2V4cF9vZl9hcmc5IChtYWdpY19maWVsZCByZXByIDkpIGluXG4gICAgbGV0IHNleHAxMCA9IHNleHBfb2ZfYXJnMTAgKG1hZ2ljX2ZpZWxkIHJlcHIgMTApIGluXG4gICAgU2V4cC5MaXN0XG4gICAgICBbIFNleHAuQXRvbSBleGNfbmFtZVxuICAgICAgOyBzZXhwMVxuICAgICAgOyBzZXhwMlxuICAgICAgOyBzZXhwM1xuICAgICAgOyBzZXhwNFxuICAgICAgOyBzZXhwNVxuICAgICAgOyBzZXhwNlxuICAgICAgOyBzZXhwN1xuICAgICAgOyBzZXhwOFxuICAgICAgOyBzZXhwOVxuICAgICAgOyBzZXhwMTBcbiAgICAgIF0pXG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgXCJGYXN0IFNwbGl0dGFibGUgUHNldWRvcmFuZG9tIE51bWJlciBHZW5lcmF0b3JzXCIgYnkgU3RlZWxlIGV0LlxuICAgIGFsLiAoMSkuICBUaGUgcGFwZXIncyBhbGdvcml0aG0gcHJvdmlkZXMgZGVjZW50IHJhbmRvbW5lc3MgZm9yIG1vc3QgcHVycG9zZXMsIGJ1dFxuICAgIHNhY3JpZmljZXMgY3J5cHRvZ3JhcGhpYy1xdWFsaXR5IHJhbmRvbW5lc3MgaW4gZmF2b3Igb2YgcGVyZm9ybWFuY2UuICBUaGUgb3JpZ2luYWxcbiAgICBpbXBsZW1lbnRhdGlvbiB3YXMgdGVzdGVkIHdpdGggRGllSGFyZGVyIGFuZCBCaWdDcnVzaDsgc2VlIHRoZSBwYXBlciBmb3IgZGV0YWlscy5cblxuICAgIE91ciBpbXBsZW1lbnRhdGlvbiBpcyBhIHBvcnQgZnJvbSBKYXZhIHRvIE9DYW1sIG9mIHRoZSBwYXBlcidzIGFsZ29yaXRobS4gIE90aGVyIHRoYW5cbiAgICB0aGUgY2hvaWNlIG9mIGluaXRpYWwgc2VlZCBmb3IgW2NyZWF0ZV0sIG91ciBwb3J0IHNob3VsZCBiZSBmYWl0aGZ1bC4gIFdlIGhhdmUgbm90XG4gICAgcmUtcnVuIHRoZSBEaWVIYXJkZXIgb3IgQmlnQ3J1c2ggdGVzdHMgb24gb3VyIGltcGxlbWVudGF0aW9uLiAgT3VyIHBvcnQgaXMgYWxzbyBub3QgYXNcbiAgICBwZXJmb3JtYW50IGFzIHRoZSBvcmlnaW5hbDsgdHdvIGZhY3RvcnMgdGhhdCBodXJ0IHVzIGFyZSBib3hlZCBbaW50NjRdIHZhbHVlcyBhbmQgbGFja1xuICAgIG9mIGEgUE9QQ05UIHByaW1pdGl2ZS5cblxuICAgICgxKSBodHRwOi8vMjAxNC5zcGxhc2hjb24ub3JnL2V2ZW50L29vcHNsYTIwMTQtZmFzdC1zcGxpdHRhYmxlLXBzZXVkb3JhbmRvbS1udW1iZXItZ2VuZXJhdG9yc1xuICAgIChhbHNvIG1pcnJvcmVkIGF0IGh0dHA6Ly9nZWUuY3Mub3N3ZWdvLmVkdS9kbC9wYXBlcnMvb29wc2xhMTQucGRmKVxuXG4gICAgQmV3YXJlIHdoZW4gaW1wbGVtZW50aW5nIHRoaXMgaW50ZXJmYWNlOyBpdCBpcyBlYXN5IHRvIGltcGxlbWVudCBhIFtzcGxpdF0gb3BlcmF0aW9uXG4gICAgd2hvc2Ugb3V0cHV0IGlzIG5vdCBhcyBcImluZGVwZW5kZW50XCIgYXMgaXQgc2VlbXMgKDIpLiAgVGhpcyBidWcgY2F1c2VkIHByb2JsZW1zIGZvclxuICAgIEhhc2tlbGwncyBRdWlja2NoZWNrIGxpYnJhcnkgZm9yIGEgbG9uZyB0aW1lLlxuXG4gICAgKDIpIFNjaGFhdGh1biwgXCJFdmFsdWF0aW9uIG9mIHNwbGl0dGFibGUgcHNldWRvLXJhbmRvbSBnZW5lcmF0b3JzXCIsIEpGUCAyMDE1LlxuICAgIGh0dHA6Ly93d3cuaGcuc2NoYWF0aHVuLm5ldC9yZXNlYXJjaC9QYXBlcnMvaGdzMjAxNWpmcC5wZGZcbiopXG5cbm9wZW4hIEJhc2Vcbm9wZW4gIEludDY0Lk9cblxubGV0IGlzX29kZCB4ID0geCBsb3IgMUwgPSB4XG5cbmxldCBwb3Bjb3VudCA9IEludDY0LnBvcGNvdW50XG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIHNlZWQgOiBpbnQ2NFxuICAgIDsgb2RkX2dhbW1hICAgIDogaW50NjRcbiAgICB9XG5cbiAgbGV0IGdvbGRlbl9nYW1tYSA9IDB4OWUzN183OWI5XzdmNGFfN2MxNUxcblxuICBsZXQgb2ZfaW50IHNlZWQgPVxuICAgIHsgc2VlZCAgICAgID0gSW50NjQub2ZfaW50IHNlZWRcbiAgICA7IG9kZF9nYW1tYSA9IGdvbGRlbl9nYW1tYVxuICAgIH1cblxuICBsZXQgY29weSB7IHNlZWQgOyBvZGRfZ2FtbWEgfSA9IHsgc2VlZCA7IG9kZF9nYW1tYSB9XG5cbiAgbGV0IG1peF9iaXRzIHogbiA9XG4gICAgeiBseG9yICh6IGxzciBuKVxuXG4gIGxldCBtaXg2NCB6ID1cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDMzKSAqIDB4ZmY1MV9hZmQ3X2VkNTVfOGNjZEwgaW5cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDMzKSAqIDB4YzRjZV9iOWZlXzFhODVfZWM1M0wgaW5cbiAgICBtaXhfYml0cyB6IDMzXG5cbiAgbGV0IG1peDY0X3ZhcmlhbnQxMyB6ID1cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDMwKSAqIDB4YmY1OF80NzZkXzFjZTRfZTViOUwgaW5cbiAgICBsZXQgeiA9IChtaXhfYml0cyB6IDI3KSAqIDB4OTRkMF80OWJiXzEzMzFfMTFlYkwgaW5cbiAgICBtaXhfYml0cyB6IDMxXG5cbiAgbGV0IG1peF9vZGRfZ2FtbWEgeiA9XG4gICAgbGV0IHogPSAobWl4NjRfdmFyaWFudDEzIHopIGxvciAxTCBpblxuICAgIGxldCBuID0gcG9wY291bnQgKHogbHhvciAoeiBsc3IgMSkpIGluXG4gICAgKCogVGhlIG9yaWdpbmFsIHBhcGVyIHVzZXMgWz49XSBpbiB0aGUgY29uZGl0aW9uYWwgaW1tZWRpYXRlbHkgYmVsb3c7IGhvd2V2ZXIgdGhpcyBpc1xuICAgICAgIGEgdHlwbywgYW5kIHdlIGNvcnJlY3QgaXQgYnkgdXNpbmcgWzxdLiBUaGlzIHdhcyBmaXhlZCBpbiByZXNwb25zZSB0byBbMV0gYW5kIFsyXS5cblxuICAgICAgIFsxXSBodHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVldC9zcGxpdHRhYmxlX3JhbmRvbS9pc3N1ZXMvMVxuICAgICAgIFsyXSBodHRwOi8vd3d3LnBjZy1yYW5kb20ub3JnL3Bvc3RzL2J1Z3MtaW4tc3BsaXRtaXguaHRtbFxuICAgICopXG4gICAgaWYgSW50LiggPCApIG4gMjRcbiAgICB0aGVuIHogbHhvciAweGFhYWFfYWFhYV9hYWFhX2FhYWFMXG4gICAgZWxzZSB6XG5cbiAgbGV0JXRlc3RfdW5pdCBcIm9kZCBnYW1tYVwiID1cbiAgICBmb3IgaW5wdXQgPSAtMV8wMDBfMDAwIHRvIDFfMDAwXzAwMCBkb1xuICAgICAgbGV0IG91dHB1dCA9IG1peF9vZGRfZ2FtbWEgKEludDY0Lm9mX2ludCBpbnB1dCkgaW5cbiAgICAgIGlmIG5vdCAoaXNfb2RkIG91dHB1dCkgdGhlblxuICAgICAgICBFcnJvci5yYWlzZV9zIFslbWVzc2FnZVxuICAgICAgICAgIFwiZ2FtbWEgdmFsdWUgaXMgbm90IG9kZFwiXG4gICAgICAgICAgICAoaW5wdXQgIDogaW50KVxuICAgICAgICAgICAgKG91dHB1dCA6IGludDY0KV1cbiAgICBkb25lXG5cbiAgbGV0IG5leHRfc2VlZCB0ID1cbiAgICBsZXQgbmV4dCA9IHQuc2VlZCArIHQub2RkX2dhbW1hIGluXG4gICAgdC5zZWVkIDwtIG5leHQ7XG4gICAgbmV4dFxuXG4gIGxldCBvZl9zZWVkX2FuZF9nYW1tYSB+c2VlZCB+Z2FtbWEgPVxuICAgIGxldCBzZWVkICAgICAgPSBtaXg2NCAgICAgICAgIHNlZWQgIGluXG4gICAgbGV0IG9kZF9nYW1tYSA9IG1peF9vZGRfZ2FtbWEgZ2FtbWEgaW5cbiAgICB7IHNlZWQ7IG9kZF9nYW1tYSB9XG5cbiAgbGV0IHJhbmRvbV9pbnQ2NCByYW5kb21fc3RhdGUgPVxuICAgIFJhbmRvbS5TdGF0ZS5pbnQ2NF9pbmNsIHJhbmRvbV9zdGF0ZSBJbnQ2NC5taW5fdmFsdWUgSW50NjQubWF4X3ZhbHVlXG5cbiAgbGV0IGNyZWF0ZSByYW5kb21fc3RhdGUgPVxuICAgIGxldCBzZWVkICA9IHJhbmRvbV9pbnQ2NCByYW5kb21fc3RhdGUgaW5cbiAgICBsZXQgZ2FtbWEgPSByYW5kb21faW50NjQgcmFuZG9tX3N0YXRlIGluXG4gICAgb2Zfc2VlZF9hbmRfZ2FtbWEgfnNlZWQgfmdhbW1hXG5cbiAgbGV0IHNwbGl0IHQgPVxuICAgIGxldCBzZWVkICA9IG5leHRfc2VlZCB0IGluXG4gICAgbGV0IGdhbW1hID0gbmV4dF9zZWVkIHQgaW5cbiAgICBvZl9zZWVkX2FuZF9nYW1tYSB+c2VlZCB+Z2FtbWFcblxuICBsZXQgbmV4dF9pbnQ2NCB0ID0gbWl4NjQgKG5leHRfc2VlZCB0KVxuXG4gICgqIFtwZXJ0dXJiXSBpcyBub3QgZnJvbSBhbnkgZXh0ZXJuYWwgc291cmNlLCBidXQgcHJvdmlkZXMgYSB3YXkgdG8gbWl4IGluIGV4dGVybmFsXG4gICAgIGVudHJvcHkgd2l0aCBhIHBzZXVkby1yYW5kb20gc3RhdGUuICopXG4gIGxldCBwZXJ0dXJiIHQgc2FsdCA9XG4gICAgbGV0IG5leHQgPSB0LnNlZWQgKyBtaXg2NCAoSW50NjQub2ZfaW50IHNhbHQpIGluXG4gICAgdC5zZWVkIDwtIG5leHRcblxuZW5kXG5cbmxldCBib29sIHN0YXRlID0gaXNfb2RkIChTdGF0ZS5uZXh0X2ludDY0IHN0YXRlKVxuXG4oKiBXZSBhYnVzZSB0ZXJtaW5vbG9neSBhbmQgcmVmZXIgdG8gaW5kaXZpZHVhbCB2YWx1ZXMgYXMgYmlhc2VkIG9yIHVuYmlhc2VkLiAgTW9yZVxuICAgcHJvcGVybHksIHdoYXQgaXMgdW5iaWFzZWQgaXMgdGhlIHNhbXBsZXIgdGhhdCByZXN1bHRzIGlmIHdlIGtlZXAgb25seSB0aGVzZSBcInVuYmlhc2VkXCJcbiAgIHZhbHVlcy4gKilcbmxldCByZW1haW5kZXJfaXNfdW5iaWFzZWRcbiAgICAgIH5kcmF3XG4gICAgICB+cmVtYWluZGVyXG4gICAgICB+ZHJhd19tYXhpbXVtXG4gICAgICB+cmVtYWluZGVyX21heGltdW1cbiAgPVxuICBsZXQgb3BlbiBJbnQ2NC5PIGluXG4gIGRyYXcgLSByZW1haW5kZXIgPD0gZHJhd19tYXhpbXVtIC0gcmVtYWluZGVyX21heGltdW1cblxubGV0JXRlc3RfdW5pdCBcInJlbWFpbmRlcl9pc191bmJpYXNlZFwiID1cbiAgKCogY2hvb3NpbmcgYSByYW5nZSBvZiAxMCB2YWx1ZXMgYmFzZWQgb24gYSByYW5nZSBvZiAxMDUgdmFsdWVzICopXG4gIGxldCBkcmF3X21heGltdW0gPSAxMDRMIGluXG4gIGxldCByZW1haW5kZXJfbWF4aW11bSA9IDlMIGluXG4gIGxldCBpc191bmJpYXNlZCBkcmF3ID1cbiAgICBsZXQgcmVtYWluZGVyID0gSW50NjQucmVtIGRyYXcgKEludDY0LnN1Y2MgcmVtYWluZGVyX21heGltdW0pIGluXG4gICAgcmVtYWluZGVyX2lzX3VuYmlhc2VkIH5kcmF3IH5yZW1haW5kZXIgfmRyYXdfbWF4aW11bSB+cmVtYWluZGVyX21heGltdW1cbiAgaW5cbiAgZm9yIGkgPSAwIHRvIDk5IGRvXG4gICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgIChpc191bmJpYXNlZCAoSW50NjQub2ZfaW50IGkpKVxuICAgICAgfmV4cGVjdDp0cnVlXG4gICAgICB+bWVzc2FnZTooSW50LnRvX3N0cmluZyBpKVxuICBkb25lO1xuICBmb3IgaSA9IDEwMCB0byAxMDQgZG9cbiAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgKGlzX3VuYmlhc2VkIChJbnQ2NC5vZl9pbnQgaSkpXG4gICAgICB+ZXhwZWN0OmZhbHNlXG4gICAgICB+bWVzc2FnZTooSW50LnRvX3N0cmluZyBpKVxuICBkb25lXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYm91bmRlZCByYW5kb21uZXNzIGlzIGFkYXB0ZWQgZnJvbSBbUmFuZG9tLlN0YXRlLmludCpdIGluIHRoZVxuICAgT0NhbWwgc3RhbmRhcmQgbGlicmFyeS4gIFRoZSBwdXJwb3NlIGlzIHRvIHVzZSB0aGUgbWluaW11bSBudW1iZXIgb2YgY2FsbHMgdG9cbiAgIFtuZXh0X2ludDY0XSB0byBwcm9kdWNlIGEgbnVtYmVyIHVuaWZvcm1seSBjaG9zZW4gd2l0aGluIHRoZSBnaXZlbiByYW5nZS4gKilcbmxldCBpbnQ2NCA9XG4gIGxldCBvcGVuIEludDY0Lk8gaW5cbiAgbGV0IHJlYyBiZXR3ZWVuIHN0YXRlIH5sbyB+aGkgPVxuICAgIGxldCBkcmF3ID0gU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSBpblxuICAgIGlmIGxvIDw9IGRyYXcgJiYgZHJhdyA8PSBoaVxuICAgIHRoZW4gZHJhd1xuICAgIGVsc2UgYmV0d2VlbiBzdGF0ZSB+bG8gfmhpXG4gIGluXG4gIGxldCByZWMgbm9uX25lZ2F0aXZlX3VwX3RvIHN0YXRlIG1heGltdW0gPVxuICAgIGxldCBkcmF3ID0gU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSBsYW5kIEludDY0Lm1heF92YWx1ZSBpblxuICAgIGxldCByZW1haW5kZXIgPSBJbnQ2NC5yZW0gZHJhdyAoSW50NjQuc3VjYyBtYXhpbXVtKSBpblxuICAgIGlmIHJlbWFpbmRlcl9pc191bmJpYXNlZFxuICAgICAgICAgfmRyYXdcbiAgICAgICAgIH5yZW1haW5kZXJcbiAgICAgICAgIH5kcmF3X21heGltdW06SW50NjQubWF4X3ZhbHVlXG4gICAgICAgICB+cmVtYWluZGVyX21heGltdW06bWF4aW11bVxuICAgIHRoZW4gcmVtYWluZGVyXG4gICAgZWxzZSBub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgbWF4aW11bVxuICBpblxuICBmdW4gc3RhdGUgfmxvIH5oaSAtPlxuICAgIGlmIGxvID4gaGkgdGhlbiBiZWdpblxuICAgICAgRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJpbnQ2NDogY3Jvc3NlZCBib3VuZHNcIiAobG8gOiBpbnQ2NCkgKGhpIDogaW50NjQpXVxuICAgIGVuZDtcbiAgICBsZXQgZGlmZiA9IGhpIC0gbG8gaW5cbiAgICBpZiBkaWZmID0gSW50NjQubWF4X3ZhbHVlXG4gICAgdGhlbiAoKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpIGxhbmQgSW50NjQubWF4X3ZhbHVlKSArIGxvXG4gICAgZWxzZSBpZiBkaWZmID49IDBMXG4gICAgdGhlbiAobm9uX25lZ2F0aXZlX3VwX3RvIHN0YXRlIGRpZmYpICsgbG9cbiAgICBlbHNlIGJldHdlZW4gc3RhdGUgfmxvIH5oaVxuXG5sZXQgaW50IHN0YXRlIH5sbyB+aGkgPVxuICBsZXQgbG8gPSBJbnQ2NC5vZl9pbnQgbG8gaW5cbiAgbGV0IGhpID0gSW50NjQub2ZfaW50IGhpIGluXG4gICgqIHRydW5jYXRlIHVubmVlZGVkIGJpdHMgKilcbiAgSW50NjQudG9faW50X3RydW5jIChpbnQ2NCBzdGF0ZSB+bG8gfmhpKVxuXG5sZXQgaW50MzIgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDY0Lm9mX2ludDMyIGxvIGluXG4gIGxldCBoaSA9IEludDY0Lm9mX2ludDMyIGhpIGluXG4gICgqIHRydW5jYXRlIHVubmVlZGVkIGJpdHMgKilcbiAgSW50NjQudG9faW50MzJfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBuYXRpdmVpbnQgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDY0Lm9mX25hdGl2ZWludCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2NC5vZl9uYXRpdmVpbnQgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19uYXRpdmVpbnRfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBpbnQ2MyBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjMudG9faW50NjQgbG8gaW5cbiAgbGV0IGhpID0gSW50NjMudG9faW50NjQgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2My5vZl9pbnQ2NF90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IGRvdWJsZV91bHAgPSAyLiAqKi4gLTUzLlxuXG5sZXQldGVzdF91bml0IFwiZG91YmxlX3VscFwiID1cbiAgbGV0IG9wZW4gRmxvYXQuTyBpblxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT5cbiAgICBhc3NlcnQgKDEuMCAtLiAgZG91YmxlX3VscCAgICAgICAgIDwgMS4wKTtcbiAgICBhc3NlcnQgKDEuMCAtLiAoZG91YmxlX3VscCAvLiAyLjApID0gMS4wKVxuICB8IFczMiAtPlxuICAgICgqIDMyLWJpdCBPQ2FtbCB1c2VzIGEgNjQtYml0IGZsb2F0IHJlcHJlc2VudGF0aW9uIGJ1dCA4MC1iaXQgZmxvYXQgaW5zdHJ1Y3Rpb25zLCBzb1xuICAgICAgIHJvdW5kaW5nIHdvcmtzIGRpZmZlcmVudGx5IGR1ZSB0byB0aGUgY29udmVyc2lvbiBiYWNrIGFuZCBmb3J0aC4gKilcbiAgICBhc3NlcnQgKDEuMCAtLiAgZG91YmxlX3VscCAgICAgICAgIDwgIDEuMCk7XG4gICAgYXNzZXJ0ICgxLjAgLS4gKGRvdWJsZV91bHAgLy4gMi4wKSA8PSAxLjApXG5cbmxldCB1bml0X2Zsb2F0X2Zyb21faW50NjQgaW50NjQgPVxuICAoSW50NjQudG9fZmxvYXQgKGludDY0IGxzciAxMSkpICouIGRvdWJsZV91bHBcblxubGV0JXRlc3RfdW5pdCBcInVuaXRfZmxvYXRfZnJvbV9pbnQ2NFwiID0gYmVnaW5cbiAgbGV0IG9wZW4gRmxvYXQuTyBpblxuICBhc3NlcnQgKHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAweDAwMDBfMDAwMF8wMDAwXzAwMDBMID0gMC4pO1xuICBhc3NlcnQgKHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAweGZmZmZfZmZmZl9mZmZmX2ZmZmZMIDwgMS4wKTtcbiAgYXNzZXJ0ICh1bml0X2Zsb2F0X2Zyb21faW50NjQgMHhmZmZmX2ZmZmZfZmZmZl9mZmZmTCA9ICgxLjAgLS4gZG91YmxlX3VscCkpO1xuZW5kXG5cbmxldCB1bml0X2Zsb2F0IHN0YXRlID1cbiAgdW5pdF9mbG9hdF9mcm9tX2ludDY0IChTdGF0ZS5uZXh0X2ludDY0IHN0YXRlKVxuXG4oKiBOb3RlIGFib3V0IHJvdW5kb2ZmIGVycm9yOlxuXG4gICBBbHRob3VnaCBbZmxvYXQgc3RhdGUgfmxvIH5oaV0gaXMgbm9taW5hbGx5IGluY2x1c2l2ZSBvZiBlbmRwb2ludHMsIHdlIGFyZSByZWx5aW5nIG9uXG4gICB0aGUgZmFjdCB0aGF0IFt1bml0X2Zsb2F0XSBuZXZlciByZXR1cm5zIDEuLCBiZWNhdXNlIHRoZXJlIGFyZSBwYWlycyBbKGxvLGhpKV0gZm9yXG4gICB3aGljaCBbbG8gKy4gMS4gKi4gKGhpIC0uIGxvKSA+IGhpXS4gIFRoZXJlIGFyZSBhbHNvIHBhaXJzIFsobG8saGkpXSBhbmQgdmFsdWVzIG9mIFt4XVxuICAgd2l0aCBbeCA8IDEuXSBzdWNoIHRoYXQgW2xvICsuIHggKi4gKGhpIC0uIGxvKSA9IGhpXSwgc28gaXQgd291bGQgbm90IGJlIGNvcnJlY3QgdG9cbiAgIGRvY3VtZW50IHRoaXMgYXMgYmVpbmcgZXhjbHVzaXZlIG9mIFtoaV0uXG4qKVxubGV0IGZsb2F0ID1cbiAgbGV0IHJlYyBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvIH5oaSA9XG4gICAgbGV0IHJhbmdlID0gaGkgLS4gbG8gaW5cbiAgICBpZiBGbG9hdC5pc19maW5pdGUgcmFuZ2VcbiAgICB0aGVuIChsbyArLiAodW5pdF9mbG9hdCBzdGF0ZSAqLiByYW5nZSkpXG4gICAgZWxzZSBiZWdpblxuICAgICAgKCogSWYgW2hpIC0gbG9dIGlzIGluZmluaXRlLCB0aGVuIFtoaSArIGxvXSBpcyBmaW5pdGUgYmVjYXVzZSBbaGldIGFuZCBbbG9dIGhhdmVcbiAgICAgICAgIG9wcG9zaXRlIHNpZ25zLiAqKVxuICAgICAgbGV0IG1pZCA9IChoaSArLiBsbykgLy4gMi4gaW5cbiAgICAgIGlmIGJvb2wgc3RhdGVcbiAgICAgICgqIERlcGVuZGluZyBvbiByb3VuZGluZywgdGhlIHJlY3Vyc2lvbiB3aXRoIFt+aGk6bWlkXSBtaWdodCBiZSBpbmNsdXNpdmUgb2YgW21pZF0sXG4gICAgICAgICB3aGljaCB3b3VsZCBtZWFuIHRoZSB0d28gY2FzZXMgb3ZlcmxhcCBvbiBbbWlkXS4gVGhlIGFsdGVybmF0aXZlIGlzIHRvIGluY3JlbWVudFxuICAgICAgICAgb3IgZGVjcmVtZW50IFttaWRdIHVzaW5nIFtvbmVfdWxwXSBpbiBlaXRoZXIgb2YgdGhlIGNhbGxzLCBidXQgdGhlbiBpZiB0aGUgZmlyc3RcbiAgICAgICAgIGNhc2UgaXMgZXhjbHVzaXZlIHdlIGxlYXZlIGEgXCJnYXBcIiBiZXR3ZWVuIHRoZSB0d28gcmFuZ2VzLiBUaGVyZSdzIG5vIHBlcmZlY3RseVxuICAgICAgICAgdW5pZm9ybSBzb2x1dGlvbiwgc28gd2UgdXNlIHRoZSBzaW1wbGVyIGNvZGUgdGhhdCBkb2VzIG5vdCBjYWxsIFtvbmVfdWxwXS4gKilcbiAgICAgIHRoZW4gZmluaXRlX2Zsb2F0IHN0YXRlIH5sbyB+aGk6bWlkXG4gICAgICBlbHNlIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG86bWlkIH5oaVxuICAgIGVuZFxuICBpblxuICBmdW4gc3RhdGUgfmxvIH5oaSAtPlxuICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIGxvICYmIEZsb2F0LmlzX2Zpbml0ZSBoaSlcbiAgICB0aGVuIGJlZ2luXG4gICAgICByYWlzZV9zIFslbWVzc2FnZVxuICAgICAgICBcImZsb2F0OiBib3VuZHMgYXJlIG5vdCBmaW5pdGUgbnVtYmVyc1wiXG4gICAgICAgICAgKGxvIDogZmxvYXQpXG4gICAgICAgICAgKGhpIDogZmxvYXQpXVxuICAgIGVuZDtcbiAgICBpZiBGbG9hdC4oID4gKSBsbyBoaVxuICAgIHRoZW4gYmVnaW5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgIFwiZmxvYXQ6IGJvdW5kcyBhcmUgY3Jvc3NlZFwiXG4gICAgICAgICAgKGxvIDogZmxvYXQpXG4gICAgICAgICAgKGhpIDogZmxvYXQpXVxuICAgIGVuZDtcbiAgICBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvIH5oaVxuXG5sZXQlYmVuY2hfZnVuIFwidW5pdF9mbG9hdF9mcm9tX2ludDY0XCIgPVxuICBsZXQgaW50NjQgPSAxTCBpblxuICBmdW4gKCkgLT4gdW5pdF9mbG9hdF9mcm9tX2ludDY0IGludDY0XG5cbm1vZHVsZSBMb2dfdW5pZm9ybSA9IHN0cnVjdFxuICBtb2R1bGUgTWFrZSAoTSA6IHNpZyBpbmNsdWRlIEludC5TIHZhbCB1bmlmb3JtIDogU3RhdGUudCAtPiBsbzp0IC0+IGhpOnQgLT4gdCBlbmQpIDogc2lnXG4gICAgdmFsIGxvZ191bmlmb3JtIDogU3RhdGUudCAtPiBsbzpNLnQgLT4gaGk6TS50IC0+IE0udFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBvcGVuIE1cblxuICAgIGxldCBiaXRzX3RvX3JlcHJlc2VudCB0ID1cbiAgICAgIGFzc2VydCAodCA+PSB6ZXJvKTtcbiAgICAgIGxldCB0ID0gcmVmIHQgaW5cbiAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgIHdoaWxlICF0ID4gemVybyBkb1xuICAgICAgICB0IDo9IHNoaWZ0X3JpZ2h0ICF0IDE7XG4gICAgICAgIEludC5pbmNyIG47XG4gICAgICBkb25lO1xuICAgICAgIW5cblxuICAgIGxldCV0ZXN0X3VuaXQgXCJiaXRzX3RvX3JlcHJlc2VudFwiID1cbiAgICAgIGxldCB0ZXN0IG4gZXhwZWN0ID0gWyV0ZXN0X3Jlc3VsdDogaW50XSAoYml0c190b19yZXByZXNlbnQgbikgfmV4cGVjdCAgaW5cbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAwKSAgIDA7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMSkgICAxO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDIpICAgMjtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAzKSAgIDI7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNCkgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDUpICAgMztcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA2KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNykgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDgpICAgNDtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAxMDApIDc7XG4gICAgICB0ZXN0IE0ubWF4X3ZhbHVlIChJbnQucHJlZCBNLm51bV9iaXRzKTtcbiAgICA7O1xuXG4gICAgbGV0IG1pbl9yZXByZXNlbnRlZF9ieV9uX2JpdHMgbiA9XG4gICAgICBpZiBJbnQuZXF1YWwgbiAwXG4gICAgICB0aGVuIHplcm9cbiAgICAgIGVsc2Ugc2hpZnRfbGVmdCBvbmUgKEludC5wcmVkIG4pXG5cbiAgICBsZXQldGVzdF91bml0IFwibWluX3JlcHJlc2VudGVkX2J5X25fYml0c1wiID1cbiAgICAgIGxldCB0ZXN0IG4gZXhwZWN0ID0gWyV0ZXN0X3Jlc3VsdDogTS50XSAobWluX3JlcHJlc2VudGVkX2J5X25fYml0cyBuKSB+ZXhwZWN0IGluXG4gICAgICB0ZXN0IDAgKE0ub2ZfaW50X2V4biAwKTtcbiAgICAgIHRlc3QgMSAoTS5vZl9pbnRfZXhuIDEpO1xuICAgICAgdGVzdCAyIChNLm9mX2ludF9leG4gMik7XG4gICAgICB0ZXN0IDMgKE0ub2ZfaW50X2V4biA0KTtcbiAgICAgIHRlc3QgNCAoTS5vZl9pbnRfZXhuIDgpO1xuICAgICAgdGVzdCA3IChNLm9mX2ludF9leG4gNjQpO1xuICAgICAgdGVzdCAoSW50LnByZWQgTS5udW1fYml0cykgKE0uc2hpZnRfcmlnaHRfbG9naWNhbCBNLm1pbl92YWx1ZSAxKTtcbiAgICA7O1xuXG4gICAgbGV0IG1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHMgbiA9XG4gICAgICBwcmVkIChzaGlmdF9sZWZ0IG9uZSBuKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBcIm1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHNcIiA9XG4gICAgICBsZXQgdGVzdCBuIGV4cGVjdCA9IFsldGVzdF9yZXN1bHQ6IE0udF0gKG1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHMgbikgfmV4cGVjdCAgaW5cbiAgICAgIHRlc3QgMCAoTS5vZl9pbnRfZXhuIDApO1xuICAgICAgdGVzdCAxIChNLm9mX2ludF9leG4gMSk7XG4gICAgICB0ZXN0IDIgKE0ub2ZfaW50X2V4biAzKTtcbiAgICAgIHRlc3QgMyAoTS5vZl9pbnRfZXhuIDcpO1xuICAgICAgdGVzdCA0IChNLm9mX2ludF9leG4gMTUpO1xuICAgICAgdGVzdCA3IChNLm9mX2ludF9leG4gMTI3KTtcbiAgICAgIHRlc3QgKEludC5wcmVkIE0ubnVtX2JpdHMpIE0ubWF4X3ZhbHVlO1xuICAgIDs7XG5cbiAgICBsZXQgbG9nX3VuaWZvcm0gc3RhdGUgfmxvIH5oaSA9XG4gICAgICBsZXQgbWluX2JpdHMgPSBiaXRzX3RvX3JlcHJlc2VudCBsbyBpblxuICAgICAgbGV0IG1heF9iaXRzID0gYml0c190b19yZXByZXNlbnQgaGkgaW5cbiAgICAgIGxldCBiaXRzID0gaW50IHN0YXRlIH5sbzptaW5fYml0cyB+aGk6bWF4X2JpdHMgaW5cbiAgICAgIHVuaWZvcm0gc3RhdGVcbiAgICAgICAgfmxvOihtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzIGJpdHMgfD4gbWF4IGxvKVxuICAgICAgICB+aGk6KG1heF9yZXByZXNlbnRlZF9ieV9uX2JpdHMgYml0cyB8PiBtaW4gaGkpXG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfaW50ICAgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50ICAgICAgIGxldCB1bmlmb3JtID0gaW50ICAgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9pbnQzMiAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQzMiAgICAgbGV0IHVuaWZvcm0gPSBpbnQzMiAgICAgZW5kKVxuICBtb2R1bGUgRm9yX2ludDYzICAgICA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIEludDYzICAgICBsZXQgdW5pZm9ybSA9IGludDYzICAgICBlbmQpXG4gIG1vZHVsZSBGb3JfaW50NjQgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50NjQgICAgIGxldCB1bmlmb3JtID0gaW50NjQgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9uYXRpdmVpbnQgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBOYXRpdmVpbnQgbGV0IHVuaWZvcm0gPSBuYXRpdmVpbnQgZW5kKVxuXG4gIGxldCBpbnQgICAgICAgPSBGb3JfaW50LmxvZ191bmlmb3JtXG4gIGxldCBpbnQzMiAgICAgPSBGb3JfaW50MzIubG9nX3VuaWZvcm1cbiAgbGV0IGludDYzICAgICA9IEZvcl9pbnQ2My5sb2dfdW5pZm9ybVxuICBsZXQgaW50NjQgICAgID0gRm9yX2ludDY0LmxvZ191bmlmb3JtXG4gIGxldCBuYXRpdmVpbnQgPSBGb3JfbmF0aXZlaW50LmxvZ191bmlmb3JtXG5lbmRcblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogNjQtYml0IGludGVnZXJzLlxuXG4gICBUaGlzIG1vZHVsZSBwcm92aWRlcyBvcGVyYXRpb25zIG9uIHRoZSB0eXBlIFtpbnQ2NF0gb2ZcbiAgIHNpZ25lZCA2NC1iaXQgaW50ZWdlcnMuICBVbmxpa2UgdGhlIGJ1aWx0LWluIFtpbnRdIHR5cGUsXG4gICB0aGUgdHlwZSBbaW50NjRdIGlzIGd1YXJhbnRlZWQgdG8gYmUgZXhhY3RseSA2NC1iaXQgd2lkZSBvbiBhbGxcbiAgIHBsYXRmb3Jtcy4gIEFsbCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3ZlciBbaW50NjRdIGFyZSB0YWtlblxuICAgbW9kdWxvIDJ7XjY0fVxuXG4gICBQZXJmb3JtYW5jZSBub3RpY2U6IHZhbHVlcyBvZiB0eXBlIFtpbnQ2NF0gb2NjdXB5IG1vcmUgbWVtb3J5XG4gICBzcGFjZSB0aGFuIHZhbHVlcyBvZiB0eXBlIFtpbnRdLCBhbmQgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9uXG4gICBbaW50NjRdIGFyZSBnZW5lcmFsbHkgc2xvd2VyIHRoYW4gdGhvc2Ugb24gW2ludF0uICBVc2UgW2ludDY0XVxuICAgb25seSB3aGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1aXJlcyBleGFjdCA2NC1iaXQgYXJpdGhtZXRpYy5cblxuICAgIExpdGVyYWxzIGZvciA2NC1iaXQgaW50ZWdlcnMgYXJlIHN1ZmZpeGVkIGJ5IEw6XG4gICAge1tcbiAgICAgIGxldCB6ZXJvOiBpbnQ2NCA9IDBMXG4gICAgICBsZXQgb25lOiBpbnQ2NCA9IDFMXG4gICAgICBsZXQgbV9vbmU6IGludDY0ID0gLTFMXG4gICAgXX1cbiopXG5cbnZhbCB6ZXJvIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMC4gKilcblxudmFsIG9uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIDEuICopXG5cbnZhbCBtaW51c19vbmUgOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAtMS4gKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuKCoqIFVuYXJ5IG5lZ2F0aW9uLiAqKVxuXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG4oKiogQWRkaXRpb24uICopXG5cbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbigqKiBTdWJ0cmFjdGlvbi4gKilcblxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuKCoqIE11bHRpcGxpY2F0aW9uLiAqKVxuXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG4oKiogSW50ZWdlciBkaXZpc2lvbi5cbiAgIEByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGlmIHRoZSBzZWNvbmRcbiAgIGFyZ3VtZW50IGlzIHplcm8uICBUaGlzIGRpdmlzaW9uIHJvdW5kcyB0aGUgcmVhbCBxdW90aWVudCBvZlxuICAgaXRzIGFyZ3VtZW50cyB0b3dhcmRzIHplcm8sIGFzIHNwZWNpZmllZCBmb3IgeyFTdGRsaWIuKC8pfS4gKilcblxudmFsIHVuc2lnbmVkX2RpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IWRpdn0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOCAqKVxuXG5leHRlcm5hbCByZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X21vZFwiXG4oKiogSW50ZWdlciByZW1haW5kZXIuICBJZiBbeV0gaXMgbm90IHplcm8sIHRoZSByZXN1bHRcbiAgIG9mIFtJbnQ2NC5yZW0geCB5XSBzYXRpc2ZpZXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0eTpcbiAgIFt4ID0gSW50NjQuYWRkIChJbnQ2NC5tdWwgKEludDY0LmRpdiB4IHkpIHkpIChJbnQ2NC5yZW0geCB5KV0uXG4gICBJZiBbeSA9IDBdLCBbSW50NjQucmVtIHggeV0gcmFpc2VzIFtEaXZpc2lvbl9ieV96ZXJvXS4gKilcblxudmFsIHVuc2lnbmVkX3JlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IXJlbX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOCAqKVxuXG52YWwgc3VjYyA6IGludDY0IC0+IGludDY0XG4oKiogU3VjY2Vzc29yLiAgW0ludDY0LnN1Y2MgeF0gaXMgW0ludDY0LmFkZCB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBwcmVkIDogaW50NjQgLT4gaW50NjRcbigqKiBQcmVkZWNlc3Nvci4gIFtJbnQ2NC5wcmVkIHhdIGlzIFtJbnQ2NC5zdWIgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgYWJzIDogaW50NjQgLT4gaW50NjRcbigqKiBbYWJzIHhdIGlzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBbeF0uIE9uIFttaW5faW50XSB0aGlzXG4gICBpcyBbbWluX2ludF0gaXRzZWxmIGFuZCB0aHVzIHJlbWFpbnMgbmVnYXRpdmUuICopXG5cbnZhbCBtYXhfaW50IDogaW50NjRcbigqKiBUaGUgZ3JlYXRlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgMnteNjN9IC0gMS4gKilcblxudmFsIG1pbl9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAtMnteNjN9LiAqKVxuXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGFuZC4gKilcblxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgb3IuICopXG5cbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgZXhjbHVzaXZlIG9yLiAqKVxuXG52YWwgbG9nbm90IDogaW50NjQgLT4gaW50NjRcbigqKiBCaXR3aXNlIGxvZ2ljYWwgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuKCoqIFtJbnQ2NC5zaGlmdF9sZWZ0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgbGVmdCBieSBbeV0gYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYW4gYXJpdGhtZXRpYyBzaGlmdDogdGhlIHNpZ24gYml0IG9mIFt4XSBpcyByZXBsaWNhdGVkXG4gICBhbmQgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGEgbG9naWNhbCBzaGlmdDogemVyb2VzIGFyZSBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzXG4gICByZWdhcmRsZXNzIG9mIHRoZSBzaWduIG9mIFt4XS5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gaW50ZWdlciAodHlwZSBbaW50XSkgdG8gYSA2NC1iaXQgaW50ZWdlclxuICAgICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFuXG4gICBpbnRlZ2VyICh0eXBlIFtpbnRdKS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjYzfSwgaS5lLiB0aGUgaGlnaC1vcmRlciBiaXQgaXMgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgT24gMzItYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzF9LCBpLmUuIHRoZSB0b3AgMzMgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAqKVxuXG52YWwgdW5zaWduZWRfdG9faW50IDogaW50NjQgLT4gaW50IG9wdGlvblxuKCoqIFNhbWUgYXMgeyF0b19pbnR9LCBidXQgaW50ZXJwcmV0cyB0aGUgYXJndW1lbnQgYXMgYW4ge2UgdW5zaWduZWR9IGludGVnZXIuXG4gICAgUmV0dXJucyBbTm9uZV0gaWYgdGhlIHVuc2lnbmVkIHZhbHVlIG9mIHRoZSBhcmd1bWVudCBjYW5ub3QgZml0IGludG8gYW5cbiAgICBbaW50XS5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gZmxvYXRpbmctcG9pbnQgbnVtYmVyIHRvIGEgNjQtYml0IGludGVnZXIsXG4gICBkaXNjYXJkaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgKHRydW5jYXRlIHRvd2FyZHMgMCkuXG4gICBJZiB0aGUgdHJ1bmNhdGVkIGZsb2F0aW5nLXBvaW50IG51bWJlciBpcyBvdXRzaWRlIHRoZSByYW5nZVxuICAgXFxbeyFJbnQ2NC5taW5faW50fSwgeyFJbnQ2NC5tYXhfaW50fVxcXSwgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYW5kXG4gICBhbiB1bnNwZWNpZmllZCwgcGxhdGZvcm0tZGVwZW5kZW50IGludGVnZXIgaXMgcmV0dXJuZWQuICopXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgdG8gYSBmbG9hdGluZy1wb2ludCBudW1iZXIuICopXG5cblxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKS4gVGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzJ9LCBpLmUuIHRoZSB0b3AgMzIgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgKilcblxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBuYXRpdmUgaW50ZWdlciAodHlwZSBbbmF0aXZlaW50XSlcbiAgIHRvIGEgNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYVxuICAgbmF0aXZlIGludGVnZXIuICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0uICBPbiA2NC1iaXQgcGxhdGZvcm1zLFxuICAgdGhlIGNvbnZlcnNpb24gaXMgZXhhY3QuICopXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIHN0cmluZyB0byBhIDY0LWJpdCBpbnRlZ2VyLlxuICAgVGhlIHN0cmluZyBpcyByZWFkIGluIGRlY2ltYWwgKGJ5IGRlZmF1bHQsIG9yIGlmIHRoZSBzdHJpbmdcbiAgIGJlZ2lucyB3aXRoIFswdV0pIG9yIGluIGhleGFkZWNpbWFsLCBvY3RhbCBvciBiaW5hcnkgaWYgdGhlXG4gICBzdHJpbmcgYmVnaW5zIHdpdGggWzB4XSwgWzBvXSBvciBbMGJdIHJlc3BlY3RpdmVseS5cblxuICAgVGhlIFswdV0gcHJlZml4IHJlYWRzIHRoZSBpbnB1dCBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgW1swLCAyKkludDY0Lm1heF9pbnQrMV1dLiAgSWYgdGhlIGlucHV0IGV4Y2VlZHMgeyFJbnQ2NC5tYXhfaW50fVxuICAgaXQgaXMgY29udmVydGVkIHRvIHRoZSBzaWduZWQgaW50ZWdlclxuICAgW0ludDY0Lm1pbl9pbnQgKyBpbnB1dCAtIEludDY0Lm1heF9pbnQgLSAxXS5cblxuICAgVGhlIFtfXSAodW5kZXJzY29yZSkgY2hhcmFjdGVyIGNhbiBhcHBlYXIgYW55d2hlcmUgaW4gdGhlIHN0cmluZ1xuICAgYW5kIGlzIGlnbm9yZWQuXG4gICBAcmFpc2UgRmFpbHVyZSBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGlzIG5vdFxuICAgYSB2YWxpZCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLCBvciBpZiB0aGUgaW50ZWdlciByZXByZXNlbnRlZFxuICAgZXhjZWVkcyB0aGUgcmFuZ2Ugb2YgaW50ZWdlcnMgcmVwcmVzZW50YWJsZSBpbiB0eXBlIFtpbnQ2NF0uICopXG5cbnZhbCBvZl9zdHJpbmdfb3B0OiBzdHJpbmcgLT4gaW50NjQgb3B0aW9uXG4oKiogU2FtZSBhcyBbb2Zfc3RyaW5nXSwgYnV0IHJldHVybiBbTm9uZV0gaW5zdGVhZCBvZiByYWlzaW5nLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCB0b19zdHJpbmcgOiBpbnQ2NCAtPiBzdHJpbmdcbigqKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpdHMgYXJndW1lbnQsIGluIGRlY2ltYWwuICopXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZmxvYXQgYWNjb3JkaW5nXG4gICB0byB0aGUgSUVFRSA3NTQgZmxvYXRpbmctcG9pbnQgJ2RvdWJsZSBmb3JtYXQnIGJpdCBsYXlvdXQuXG4gICBCaXQgNjMgb2YgdGhlIHJlc3VsdCByZXByZXNlbnRzIHRoZSBzaWduIG9mIHRoZSBmbG9hdDtcbiAgIGJpdHMgNjIgdG8gNTIgcmVwcmVzZW50IHRoZSAoYmlhc2VkKSBleHBvbmVudDsgYml0cyA1MSB0byAwXG4gICByZXByZXNlbnQgdGhlIG1hbnRpc3NhLiAqKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIFJldHVybiB0aGUgZmxvYXRpbmctcG9pbnQgbnVtYmVyIHdob3NlIGludGVybmFsIHJlcHJlc2VudGF0aW9uLFxuICAgYWNjb3JkaW5nIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dCxcbiAgIGlzIHRoZSBnaXZlbiBbaW50NjRdLiAqKVxuXG50eXBlIHQgPSBpbnQ2NFxuKCoqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiA2NC1iaXQgaW50ZWdlcnMuICopXG5cbnZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogVGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRlZ2Vycywgd2l0aCB0aGUgc2FtZSBzcGVjaWZpY2F0aW9uIGFzXG4gICAgeyFTdGRsaWIuY29tcGFyZX0uICBBbG9uZyB3aXRoIHRoZSB0eXBlIFt0XSwgdGhpcyBmdW5jdGlvbiBbY29tcGFyZV1cbiAgICBhbGxvd3MgdGhlIG1vZHVsZSBbSW50NjRdIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudCB0byB0aGUgZnVuY3RvcnNcbiAgICB7IVNldC5NYWtlfSBhbmQgeyFNYXAuTWFrZX0uICopXG5cbnZhbCB1bnNpZ25lZF9jb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogU2FtZSBhcyB7IWNvbXBhcmV9LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYXJlIGludGVycHJldGVkIGFzIHtlIHVuc2lnbmVkfVxuICAgIDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbnZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbigqKiBUaGUgZXF1YWwgZnVuY3Rpb24gZm9yIGludDY0cy5cbiAgICBAc2luY2UgNC4wMyAqKVxuXG52YWwgbWluOiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgc21hbGxlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIG1heDogdCAtPiB0IC0+IHRcbigqKiBSZXR1cm4gdGhlIGdyZWF0ZXIgb2YgdGhlIHR3byBhcmd1bWVudHMuXG4gICAgQHNpbmNlIDQuMTNcbiAqKVxuXG52YWwgc2VlZGVkX2hhc2ggOiBpbnQgLT4gdCAtPiBpbnRcbigqKiBBIHNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciA2NC1iaXQgaW50cywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4xICopXG5cbnZhbCBoYXNoIDogdCAtPiBpbnRcbigqKiBBbiB1bnNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciA2NC1iaXQgaW50cywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0YmwuaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudFxuICAgIHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlfS5cblxuICAgIEBzaW5jZSA1LjEgKilcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIExheW91dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaWdhcnJheS5sYXlvdXRcblxuICBsZXQgb2Zmc2V0IDogdHlwZSBhLiBhIHQgLT4gaW50ID0gZnVuY3Rpb25cbiAgICB8IEJpZ2FycmF5LkZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICB8IEJpZ2FycmF5LkNfbGF5b3V0IC0+IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgQmlnYXJyYXkuQXJyYXkxLnRcblxuICBsZXQgaXRlcmkgdCB+ZiA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5MS5sYXlvdXQgdCkgaW5cbiAgICBmb3IgaSA9IDAgdG8gQmlnYXJyYXkuQXJyYXkxLmRpbSB0IC0gMSBkb1xuICAgICAgZiAoaSArIG9mZnNldCkgdC57aSArIG9mZnNldH1cbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IGluaXQgKHR5cGUgZWx0KSAoa2luZCA6IChlbHQsIF8pIEJpZ2FycmF5LmtpbmQpIGxheW91dCBkaW0gfmYgPVxuICAgIGxldCB0ID0gQmlnYXJyYXkuQXJyYXkxLmNyZWF0ZSBraW5kIGxheW91dCBkaW0gaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSAoXyA6IGVsdCkgLT4gdC57aX0gPC0gZiBpKTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGZvbGQgKHR5cGUgZWx0KSAodCA6IChlbHQsIF8sIF8pIHQpIH5pbml0IH5mID1cbiAgICBsZXQgaW5pdCA9IHJlZiBpbml0IGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgKF8gOiBlbHQpIC0+IGluaXQgOj0gZiAhaW5pdCB0LntpfSk7XG4gICAgIWluaXRcbiAgOztcblxuICBsZXQgdG9fYXJyYXkgdCA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5MS5sYXlvdXQgdCkgaW5cbiAgICBBcnJheS5pbml0IChCaWdhcnJheS5BcnJheTEuZGltIHQpIH5mOihmdW4gaSAtPiB0LntpICsgb2Zmc2V0fSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IF9zZXhwX29mX3BhY2sgX3NleHBfb2ZfbGF5b3V0IHQgPVxuICAgIFslc2V4cCAodG9fYXJyYXkgdCA6IGVsdCBhcnJheSldXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZCBoYXNoX2ZvbGRfZWx0IHN0YXRlIHQgPVxuICAgIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKEJpZ2FycmF5LkFycmF5MS5kaW0gdCkgaW5cbiAgICBmb2xkIHQgfmluaXQ6c3RhdGUgfmY6aGFzaF9mb2xkX2VsdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBcnJheTIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBCaWdhcnJheS5BcnJheTIudFxuXG4gIGxldCBpdGVyaSB0IH5mID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkyLmxheW91dCB0KSBpblxuICAgIGZvciBpID0gMCB0byBCaWdhcnJheS5BcnJheTIuZGltMSB0IC0gMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIEJpZ2FycmF5LkFycmF5Mi5kaW0yIHQgLSAxIGRvXG4gICAgICAgIGYgKGkgKyBvZmZzZXQpIChqICsgb2Zmc2V0KSB0LntpICsgb2Zmc2V0LCBqICsgb2Zmc2V0fVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgaW5pdCAodHlwZSBlbHQpIChraW5kIDogKGVsdCwgXykgQmlnYXJyYXkua2luZCkgbGF5b3V0IGRpbTEgZGltMiB+ZiA9XG4gICAgbGV0IHQgPSBCaWdhcnJheS5BcnJheTIuY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIGogKF8gOiBlbHQpIC0+IHQue2ksIGp9IDwtIGYgaSBqKTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGZvbGQgKHR5cGUgZWx0KSAodCA6IChlbHQsIF8sIF8pIHQpIH5pbml0IH5mID1cbiAgICBsZXQgaW5pdCA9IHJlZiBpbml0IGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIChfIDogaW50KSAoXyA6IGludCkgZWx0IC0+IGluaXQgOj0gZiAhaW5pdCBlbHQpO1xuICAgICFpbml0XG4gIDs7XG5cbiAgbGV0IHRvX2FycmF5IHQgPVxuICAgIGxldCBvZmZzZXQgPSBMYXlvdXQub2Zmc2V0IChCaWdhcnJheS5BcnJheTIubGF5b3V0IHQpIGluXG4gICAgQXJyYXkuaW5pdCAoQmlnYXJyYXkuQXJyYXkyLmRpbTEgdCkgfmY6KGZ1biBpIC0+XG4gICAgICBBcnJheS5pbml0IChCaWdhcnJheS5BcnJheTIuZGltMiB0KSB+ZjooZnVuIGogLT4gdC57aSArIG9mZnNldCwgaiArIG9mZnNldH0pKVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgX3NleHBfb2ZfcGFjayBfc2V4cF9vZl9sYXlvdXQgdCA9XG4gICAgWyVzZXhwICh0b19hcnJheSB0IDogZWx0IGFycmF5IGFycmF5KV1cbiAgOztcblxuICBsZXQgaGFzaF9mb2xkIGhhc2hfZm9sZF9lbHQgc3RhdGUgdCA9XG4gICAgbGV0IHN0YXRlID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoQmlnYXJyYXkuQXJyYXkyLmRpbTEgdCkgaW5cbiAgICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChCaWdhcnJheS5BcnJheTIuZGltMiB0KSBpblxuICAgIGZvbGQgdCB+aW5pdDpzdGF0ZSB+ZjpoYXNoX2ZvbGRfZWx0XG4gIDs7XG5lbmRcbiIsIm9wZW4hIEJhc2VcblxudHlwZSAnYSB0ID0gJ2EgLT4gc2l6ZTppbnQgLT4gaGFzaDpIYXNoLnN0YXRlIC0+IEhhc2guc3RhdGVcblxubGV0IGNyZWF0ZSBmIDogXyB0ID0gZlxuXG5sZXQgb2JzZXJ2ZSAodCA6IF8gdCkgeCB+c2l6ZSB+aGFzaCA9XG4gIGlmIHNpemUgPCAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIub2JzZXJ2ZTogc2l6ZSA8IDBcIiAoc2l6ZSA6IGludCldXG4gIGVsc2UgdCB4IH5zaXplIH5oYXNoXG47O1xuXG5sZXQgb3BhcXVlIF8gfnNpemU6XyB+aGFzaCA9IGhhc2hcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSArJ2EgdFxuXG4gIHZhbCBjcmVhdGUgOiAoc2l6ZTppbnQgLT4gcmFuZG9tOlNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIGdlbmVyYXRlIDogJ2EgdCAtPiBzaXplOmludCAtPiByYW5kb206U3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiAnYVxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IChzaXplOmludCAtPiByYW5kb206U3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiAnYSkgU3RhZ2VkLnRcblxuICBsZXQgY3JlYXRlIGYgOiBfIHQgPSBTdGFnZWQuc3RhZ2UgZlxuXG4gIGxldCBnZW5lcmF0ZSAodCA6IF8gdCkgfnNpemUgfnJhbmRvbSA9XG4gICAgaWYgc2l6ZSA8IDBcbiAgICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5nZW5lcmF0ZTogc2l6ZSA8IDBcIiAoc2l6ZSA6IGludCldXG4gICAgZWxzZSBTdGFnZWQudW5zdGFnZSB0IH5zaXplIH5yYW5kb21cbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IHNpemUgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tOl8gLT4gc2l6ZSlcblxubGV0IGZuIGRvbSBybmcgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnNwbGl0IHJhbmRvbSBpblxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgaGFzaCA9IE9ic2VydmVyMC5vYnNlcnZlIGRvbSB4IH5zaXplIH5oYXNoOihIYXNoLmFsbG9jICgpKSBpblxuICAgICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLmNvcHkgcmFuZG9tIGluXG4gICAgICBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5wZXJ0dXJiIHJhbmRvbSAoSGFzaC5nZXRfaGFzaF92YWx1ZSBoYXNoKTtcbiAgICAgIGdlbmVyYXRlIHJuZyB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IHdpdGhfc2l6ZSB0IH5zaXplID0gY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSlcblxubGV0IHBlcnR1cmIgdCBzYWx0ID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnBlcnR1cmIgcmFuZG9tIHNhbHQ7XG4gICAgZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB+c2l6ZSB+cmFuZG9tID1cbiAgICBsZXQgeCA9IGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSBpblxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgfCBTb21lIHkgLT4geVxuICAgIHwgTm9uZSAtPiBsb29wIH5zaXplOihzaXplICsgMSkgfnJhbmRvbVxuICBpblxuICBjcmVhdGUgbG9vcFxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKVxubGV0IHJldHVybiB4ID0gY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tOl8gLT4geClcbmxldCBtYXAgdCB+ZiA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gZiAoZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tKSlcblxubGV0IGFwcGx5IHRmIHR4ID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGxldCBmID0gZ2VuZXJhdGUgdGYgfnNpemUgfnJhbmRvbSBpblxuICAgIGxldCB4ID0gZ2VuZXJhdGUgdHggfnNpemUgfnJhbmRvbSBpblxuICAgIGYgeClcbjs7XG5cbmxldCBiaW5kIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IHggPSBnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20gaW5cbiAgICBnZW5lcmF0ZSAoZiB4KSB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IGFsbCBsaXN0ID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBMaXN0Lm1hcCBsaXN0IH5mOihnZW5lcmF0ZSB+c2l6ZSB+cmFuZG9tKSlcblxubGV0IGFsbF91bml0IGxpc3QgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IExpc3QuaXRlciBsaXN0IH5mOihnZW5lcmF0ZSB+c2l6ZSB+cmFuZG9tKSlcbjs7XG5cbm1vZHVsZSBGb3JfYXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBhcHBseSA9IGFwcGx5XG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGJvdGggPSBGb3JfYXBwbGljYXRpdmUuYm90aFxubGV0IG1hcDIgPSBGb3JfYXBwbGljYXRpdmUubWFwMlxubGV0IG1hcDMgPSBGb3JfYXBwbGljYXRpdmUubWFwM1xuXG5tb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBGb3JfYXBwbGljYXRpdmUuQXBwbGljYXRpdmVfaW5maXhcbmluY2x1ZGUgQXBwbGljYXRpdmVfaW5maXhcblxubW9kdWxlIEZvcl9tb25hZCA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGlnbm9yZV9tID0gRm9yX21vbmFkLmlnbm9yZV9tXG5sZXQgam9pbiA9IEZvcl9tb25hZC5qb2luXG5cbm1vZHVsZSBNb25hZF9pbmZpeCA9IEZvcl9tb25hZC5Nb25hZF9pbmZpeFxuaW5jbHVkZSBNb25hZF9pbmZpeFxubW9kdWxlIExldF9zeW50YXggPSBGb3JfbW9uYWQuTGV0X3N5bnRheFxub3BlbiBMZXRfc3ludGF4XG5cbmxldCBvZl9saXN0IGxpc3QgPVxuICBpZiBMaXN0LmlzX2VtcHR5IGxpc3RcbiAgdGhlbiBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2ZfbGlzdDogZW1wdHkgbGlzdFwiXTtcbiAgbGV0IGFycmF5ID0gQXJyYXkub2ZfbGlzdCBsaXN0IGluXG4gIGxldCBsbyA9IDAgaW5cbiAgbGV0IGhpID0gQXJyYXkubGVuZ3RoIGFycmF5IC0gMSBpblxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgaW5kZXggPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbyB+aGkgaW5cbiAgICBhcnJheS4oaW5kZXgpKVxuOztcblxubGV0IHVuaW9uIGxpc3QgPSBqb2luIChvZl9saXN0IGxpc3QpXG5cbmxldCBvZl93ZWlnaHRlZF9saXN0IGFsaXN0ID1cbiAgaWYgTGlzdC5pc19lbXB0eSBhbGlzdFxuICB0aGVuIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiBlbXB0eSBsaXN0XCJdO1xuICBsZXQgd2VpZ2h0cywgdmFsdWVzID0gTGlzdC51bnppcCBhbGlzdCBpblxuICBsZXQgdmFsdWVfYXJyYXkgPSBBcnJheS5vZl9saXN0IHZhbHVlcyBpblxuICBsZXQgdG90YWxfd2VpZ2h0LCBjdW11bGF0aXZlX3dlaWdodF9hcnJheSA9XG4gICAgbGV0IGFycmF5ID0gQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIHZhbHVlX2FycmF5KSB+ZjooZnVuIF8gLT4gMC4pIGluXG4gICAgbGV0IHN1bSA9XG4gICAgICBMaXN0LmZvbGRpIHdlaWdodHMgfmluaXQ6MC4gfmY6KGZ1biBpbmRleCBhY2Mgd2VpZ2h0IC0+XG4gICAgICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIHdlaWdodClcbiAgICAgICAgdGhlblxuICAgICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogd2VpZ2h0IGlzIG5vdCBmaW5pdGVcIlxuICAgICAgICAgICAgICAgICh3ZWlnaHQgOiBmbG9hdCldO1xuICAgICAgICBpZiBGbG9hdC4oIDwgKSB3ZWlnaHQgMC5cbiAgICAgICAgdGhlblxuICAgICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogd2VpZ2h0IGlzIG5lZ2F0aXZlXCJcbiAgICAgICAgICAgICAgICAod2VpZ2h0IDogZmxvYXQpXTtcbiAgICAgICAgbGV0IGN1bXVsYXRpdmUgPSBhY2MgKy4gd2VpZ2h0IGluXG4gICAgICAgIGFycmF5LihpbmRleCkgPC0gY3VtdWxhdGl2ZTtcbiAgICAgICAgY3VtdWxhdGl2ZSlcbiAgICBpblxuICAgIGlmIEZsb2F0LiggPD0gKSBzdW0gMC5cbiAgICB0aGVuXG4gICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogdG90YWwgd2VpZ2h0IGlzIHplcm9cIl07XG4gICAgc3VtLCBhcnJheVxuICBpblxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgY2hvaWNlID0gU3BsaXR0YWJsZV9yYW5kb20uZmxvYXQgcmFuZG9tIH5sbzowLiB+aGk6dG90YWxfd2VpZ2h0IGluXG4gICAgbWF0Y2hcbiAgICAgIEFycmF5LmJpbmFyeV9zZWFyY2hcbiAgICAgICAgY3VtdWxhdGl2ZV93ZWlnaHRfYXJyYXlcbiAgICAgICAgfmNvbXBhcmU6RmxvYXQuY29tcGFyZVxuICAgICAgICBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgICAgIGNob2ljZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgaW5kZXggLT4gdmFsdWVfYXJyYXkuKGluZGV4KVxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5sZXQgd2VpZ2h0ZWRfdW5pb24gYWxpc3QgPSBqb2luIChvZl93ZWlnaHRlZF9saXN0IGFsaXN0KVxubGV0IG9mX2xhenkgbGF6eV90ID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBnZW5lcmF0ZSAoZm9yY2UgbGF6eV90KSB+c2l6ZSB+cmFuZG9tKVxuXG5sZXQgZml4ZWRfcG9pbnQgb2ZfZ2VuZXJhdG9yID1cbiAgbGV0IHJlYyBsYXp5X3QgPSBsYXp5IChvZl9nZW5lcmF0b3IgKG9mX2xhenkgbGF6eV90KSkgaW5cbiAgZm9yY2UgbGF6eV90XG47O1xuXG5sZXQgd2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIG5vbnJlY19saXN0IH5mID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBzZWxmIC0+XG4gICAgbGV0IHJlY19saXN0ID1cbiAgICAgIExpc3QubWFwIChmIHNlbGYpIH5mOihmdW4gKHcsIHQpIC0+XG4gICAgICAgICggd1xuICAgICAgICAsIGxldCViaW5kIG4gPSBzaXplIGluXG4gICAgICAgICAgd2l0aF9zaXplIH5zaXplOihuIC0gMSkgdCApKVxuICAgIGluXG4gICAgaWYgTGlzdC5pc19lbXB0eSBub25yZWNfbGlzdCB8fCBMaXN0LmlzX2VtcHR5IHJlY19saXN0XG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iud2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uOiBsaXN0cyBtdXN0IGJlIG5vbi1lbXB0eVwiXTtcbiAgICBsZXQgbm9ucmVjX2dlbiA9IHdlaWdodGVkX3VuaW9uIG5vbnJlY19saXN0IGluXG4gICAgbGV0IHJlY19nZW4gPSB3ZWlnaHRlZF91bmlvbiAobm9ucmVjX2xpc3QgQCByZWNfbGlzdCkgaW5cbiAgICBtYXRjaCViaW5kIHNpemUgd2l0aFxuICAgIHwgMCAtPiBub25yZWNfZ2VuXG4gICAgfCBfIC0+IHJlY19nZW4pXG47O1xuXG5sZXQgcmVjdXJzaXZlX3VuaW9uIG5vbnJlY19saXN0IH5mID1cbiAgbGV0IHdlaWdodGVkIGxpc3QgPSBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gdCAtPiAxLiwgdCkgaW5cbiAgd2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uICh3ZWlnaHRlZCBub25yZWNfbGlzdCkgfmY6KGZ1biBzZWxmIC0+IHdlaWdodGVkIChmIHNlbGYpKVxuOztcblxubGV0IHNpemVzID8obWluX2xlbmd0aCA9IDApID8obWF4X2xlbmd0aCA9IEludC5tYXhfdmFsdWUpICgpID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGFzc2VydCAobWluX2xlbmd0aCA8PSBtYXhfbGVuZ3RoKTtcbiAgICBsZXQgdXBwZXJfYm91bmQgPSBtaW5fbGVuZ3RoICsgc2l6ZSBpblxuICAgIGxldCBtYXhfbGVuZ3RoID1cbiAgICAgIGlmIHVwcGVyX2JvdW5kID49IG1pbl9sZW5ndGggKCogZ3VhcmQgYWdhaW5zdCBvdmVyZmxvdyAqKVxuICAgICAgdGhlbiBtaW4gbWF4X2xlbmd0aCB1cHBlcl9ib3VuZFxuICAgICAgZWxzZSBtYXhfbGVuZ3RoXG4gICAgaW5cbiAgICAoKiBwaWNrIGEgbGVuZ3RoLCB3ZWlnaHRlZCBsb3cgc28gdGhhdCBtb3N0IG9mIHRoZSBzaXplIGlzIHNwZW50IG9uIGVsZW1lbnRzICopXG4gICAgbGV0IGxlbiA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludCByYW5kb20gfmxvOm1pbl9sZW5ndGggfmhpOm1heF9sZW5ndGggaW5cbiAgICAoKiBpZiB0aGVyZSBhcmUgbm8gZWxlbWVudHMgcmV0dXJuIGFuIGVtcHR5IGFycmF5LCBvdGhlcndpc2UgcmV0dXJuIGEgbm9uLWVtcHR5IGFycmF5XG4gICAgICAgd2l0aCB0aGUgc2l6ZSBkaXN0cmlidXRlZCBhbW9uZyB0aGUgZWxlbWVudHMgKilcbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiBbXVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHNpemVzID0gQXJyYXkuaW5pdCBsZW4gfmY6KGZ1biBfIC0+IDApIGluXG4gICAgICBsZXQgcmVtYWluaW5nID0gc2l6ZSAtIChsZW4gLSBtaW5fbGVuZ3RoKSBpblxuICAgICAgbGV0IG1heF9pbmRleCA9IGxlbiAtIDEgaW5cbiAgICAgIGZvciBfID0gMSB0byByZW1haW5pbmcgZG9cbiAgICAgICAgKCogcGljayBhbiBpbmRleCwgd2VpZ2h0ZWQgbG93IHNvIHRoYXQgd2Ugc2VlIHVuYmFsYW5jZWQgZGlzdHJpYnV0aW9ucyBvZnRlbiAqKVxuICAgICAgICBsZXQgaW5kZXggPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQgcmFuZG9tIH5sbzowIH5oaTptYXhfaW5kZXggaW5cbiAgICAgICAgc2l6ZXMuKGluZGV4KSA8LSBzaXplcy4oaW5kZXgpICsgMVxuICAgICAgZG9uZTtcbiAgICAgICgqIHBlcm11dGUgdGhlIGFycmF5IHNvIHRoYXQgbm8gaW5kZXggaXMgZmF2b3JlZCBvdmVyIGFub3RoZXIgKilcbiAgICAgIGZvciBpID0gMCB0byBtYXhfaW5kZXggLSAxIGRvXG4gICAgICAgIGxldCBqID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86aSB+aGk6bWF4X2luZGV4IGluXG4gICAgICAgIEFycmF5LnN3YXAgc2l6ZXMgaSBqXG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IChBcnJheS5zdW0gKG1vZHVsZSBJbnQpIHNpemVzIH5mOkZuLmlkICsgKGxlbiAtIG1pbl9sZW5ndGgpID0gc2l6ZSk7XG4gICAgICBBcnJheS50b19saXN0IHNpemVzKSlcbjs7XG5cbmxldCB1bml0ID0gcmV0dXJuICgpXG5sZXQgYm9vbCA9IGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBTcGxpdHRhYmxlX3JhbmRvbS5ib29sIHJhbmRvbSlcbmxldCBvcHRpb24gdmFsdWVfdCA9IHVuaW9uIFsgcmV0dXJuIE5vbmU7IG1hcCB2YWx1ZV90IH5mOk9wdGlvbi5yZXR1cm4gXVxubGV0IGVpdGhlciBmc3RfdCBzbmRfdCA9IHVuaW9uIFsgbWFwIGZzdF90IH5mOkVpdGhlci5maXJzdDsgbWFwIHNuZF90IH5mOkVpdGhlci5zZWNvbmQgXVxuXG5sZXQgcmVzdWx0IG9rX3QgZXJyX3QgPVxuICBtYXAgKGVpdGhlciBva190IGVycl90KSB+ZjooZnVuY3Rpb25cbiAgICB8IEZpcnN0IG9rIC0+IE9rIG9rXG4gICAgfCBTZWNvbmQgZXJyIC0+IEVycm9yIGVycilcbjs7XG5cbmxldCBsaXN0X2dlbmVyaWMgP21pbl9sZW5ndGggP21heF9sZW5ndGggZWx0X2dlbiA9XG4gIGxldCViaW5kIHNpemVzID0gc2l6ZXMgP21pbl9sZW5ndGggP21heF9sZW5ndGggKCkgaW5cbiAgTGlzdC5tYXAgc2l6ZXMgfmY6KGZ1biBzaXplIC0+IHdpdGhfc2l6ZSB+c2l6ZSBlbHRfZ2VuKSB8PiBhbGxcbjs7XG5cbmxldCBsaXN0IGVsdF9nZW4gPSBsaXN0X2dlbmVyaWMgZWx0X2dlblxubGV0IGxpc3Rfbm9uX2VtcHR5IGVsdF9nZW4gPSBsaXN0X2dlbmVyaWMgfm1pbl9sZW5ndGg6MSBlbHRfZ2VuXG5cbmxldCBsaXN0X3dpdGhfbGVuZ3RoIGVsdF9nZW4gfmxlbmd0aCA9XG4gIGxpc3RfZ2VuZXJpYyB+bWluX2xlbmd0aDpsZW5ndGggfm1heF9sZW5ndGg6bGVuZ3RoIGVsdF9nZW5cbjs7XG5cbmxldCBsaXN0X2ZpbHRlcmVkIGVsdHMgPVxuICBsZXQgZWx0cyA9IEFycmF5Lm9mX2xpc3QgZWx0cyBpblxuICBsZXQgbGVuZ3RoX29mX2lucHV0ID0gQXJyYXkubGVuZ3RoIGVsdHMgaW5cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgbGV0IGxlbmd0aF9vZl9vdXRwdXQgPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzowIH5oaTpsZW5ndGhfb2ZfaW5wdXQgaW5cbiAgICBsZXQgaW5kaWNlcyA9IEFycmF5LmluaXQgbGVuZ3RoX29mX2lucHV0IH5mOkZuLmlkIGluXG4gICAgKCogQ2hvb3NlIFtsZW5ndGhfb2Zfb3V0cHV0XSByYW5kb20gdmFsdWVzIGluIHRoZSBwcmVmaXggb2YgW2luZGljZXNdLiAqKVxuICAgIGZvciBpID0gMCB0byBsZW5ndGhfb2Zfb3V0cHV0IC0gMSBkb1xuICAgICAgbGV0IGogPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzppIH5oaToobGVuZ3RoX29mX2lucHV0IC0gMSkgaW5cbiAgICAgIEFycmF5LnN3YXAgaW5kaWNlcyBpIGpcbiAgICBkb25lO1xuICAgICgqIFNvcnQgdGhlIGNob3NlbiBpbmRpY2VzIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byByZW9yZGVyIHRoZW0uICopXG4gICAgQXJyYXkuc29ydCBpbmRpY2VzIH5wb3M6MCB+bGVuOmxlbmd0aF9vZl9vdXRwdXQgfmNvbXBhcmU6SW50LmNvbXBhcmU7XG4gICAgKCogUmV0dXJuIHRoZSBjaG9zZW4gZWxlbWVudHMuICopXG4gICAgTGlzdC5pbml0IGxlbmd0aF9vZl9vdXRwdXQgfmY6KGZ1biBpIC0+IGVsdHMuKGluZGljZXMuKGkpKSkpXG47O1xuXG5sZXQgbGlzdF9wZXJtdXRhdGlvbnMgbGlzdCA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBhcnJheSA9IEFycmF5Lm9mX2xpc3QgbGlzdCBpblxuICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAxIGRvXG4gICAgICBsZXQgaiA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOjAgfmhpOmkgaW5cbiAgICAgIEFycmF5LnN3YXAgYXJyYXkgaSBqXG4gICAgZG9uZTtcbiAgICBBcnJheS50b19saXN0IGFycmF5KVxuOztcblxubGV0IGFycmF5IHQgPSBtYXAgKGxpc3QgdCkgfmY6QXJyYXkub2ZfbGlzdFxubGV0IHJlZiB0ID0gbWFwIHQgfmY6UmVmLmNyZWF0ZVxubGV0IGxhenlfdCB0ID0gbWFwIHQgfmY6TGF6eS5mcm9tX3ZhbFxuXG5sZXQgY2hhcl91bmlmb3JtX2luY2x1c2l2ZSBsbyBoaSA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOihDaGFyLnRvX2ludCBsbykgfmhpOihDaGFyLnRvX2ludCBoaSlcbiAgICB8PiBDaGFyLnVuc2FmZV9vZl9pbnQpXG47O1xuXG5sZXQgY2hhcl91cHBlcmNhc2UgPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICdBJyAnWidcbmxldCBjaGFyX2xvd2VyY2FzZSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJ2EnICd6J1xubGV0IGNoYXJfZGlnaXQgPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICcwJyAnOSdcbmxldCBjaGFyX3ByaW50X3VuaWZvcm0gPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICcgJyAnfidcbmxldCBjaGFyX3VuaWZvcm0gPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlIENoYXIubWluX3ZhbHVlIENoYXIubWF4X3ZhbHVlXG5sZXQgY2hhcl9hbHBoYSA9IHVuaW9uIFsgY2hhcl9sb3dlcmNhc2U7IGNoYXJfdXBwZXJjYXNlIF1cblxubGV0IGNoYXJfYWxwaGFudW0gPVxuICB3ZWlnaHRlZF91bmlvblxuICAgICgqIE1vc3QgcGVvcGxlIHByb2JhYmx5IGV4cGVjdCB0aGlzIHRvIGJlIGEgdW5pZm9ybSBkaXN0cmlidXRpb24sIG5vdCB3ZWlnaHRlZFxuICAgICAgIHRvd2FyZCBkaWdpdHMgbGlrZSB3ZSB3b3VsZCBnZXQgd2l0aCBbdW5pb25dIChzaW5jZSB0aGVyZSBhcmUgZmV3ZXIgZGlnaXRzIHRoYW5cbiAgICAgICBsZXR0ZXJzKS4gKilcbiAgICBbIDUyLiwgY2hhcl9hbHBoYTsgMTAuLCBjaGFyX2RpZ2l0IF1cbjs7XG5cbmxldCBjaGFyX3doaXRlc3BhY2UgPSBvZl9saXN0IChMaXN0LmZpbHRlciBDaGFyLmFsbCB+ZjpDaGFyLmlzX3doaXRlc3BhY2UpXG5sZXQgY2hhcl9wcmludCA9IHdlaWdodGVkX3VuaW9uIFsgMTAuLCBjaGFyX2FscGhhbnVtOyAxLiwgY2hhcl9wcmludF91bmlmb3JtIF1cblxubGV0IGNoYXIgPVxuICB3ZWlnaHRlZF91bmlvblxuICAgIFsgMTAwLiwgY2hhcl9wcmludFxuICAgIDsgMTAuLCBjaGFyX3VuaWZvcm1cbiAgICA7IDEuLCByZXR1cm4gQ2hhci5taW5fdmFsdWVcbiAgICA7IDEuLCByZXR1cm4gQ2hhci5tYXhfdmFsdWVcbiAgICBdXG47O1xuXG4oKiBQcm9kdWNlcyBhIG51bWJlciBmcm9tIDAgb3IgMSB0byBzaXplICsgMSwgd2VpZ2h0ZWQgaGlnaC4gV2UgaGF2ZSBmb3VuZCB0aGlzXG4gICBkaXN0cmlidXRpb24gZW1waXJpY2FsbHkgdXNlZnVsIGZvciBzdHJpbmcgbGVuZ3Rocy4gKilcbmxldCBzbWFsbF9pbnQgfmFsbG93X3plcm8gPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IGxvd2VyX2JvdW5kID0gaWYgYWxsb3dfemVybyB0aGVuIDAgZWxzZSAxIGluXG4gICAgbGV0IHVwcGVyX2JvdW5kID0gc2l6ZSArIDEgaW5cbiAgICBsZXQgd2VpZ2h0ZWRfbG93ID1cbiAgICAgIFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludCByYW5kb20gfmxvOjAgfmhpOih1cHBlcl9ib3VuZCAtIGxvd2VyX2JvdW5kKVxuICAgIGluXG4gICAgbGV0IHdlaWdodGVkX2hpZ2ggPSB1cHBlcl9ib3VuZCAtIHdlaWdodGVkX2xvdyBpblxuICAgIHdlaWdodGVkX2hpZ2gpXG47O1xuXG5sZXQgc21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQgPSBzbWFsbF9pbnQgfmFsbG93X3plcm86dHJ1ZVxubGV0IHNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludCA9IHNtYWxsX2ludCB+YWxsb3dfemVybzpmYWxzZVxuXG5tb2R1bGUgdHlwZSBJbnRfd2l0aF9yYW5kb20gPSBzaWdcbiAgaW5jbHVkZSBJbnQuU1xuXG4gIHZhbCB1bmlmb3JtIDogU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiBsbzp0IC0+IGhpOnQgLT4gdFxuICB2YWwgbG9nX3VuaWZvcm0gOiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0XG5lbmRcblxubW9kdWxlIEZvcl9pbnRlZ2VyIChJbnRlZ2VyIDogSW50X3dpdGhfcmFuZG9tKSA9IHN0cnVjdFxuICBsZXQgZ2VvbWV0cmljIGxvIH5wID1cbiAgICBpZiBGbG9hdC5lcXVhbCBwIDEuXG4gICAgdGhlbiByZXR1cm4gbG9cbiAgICBlbHNlIGlmIEZsb2F0LmVxdWFsIHAgMC5cbiAgICB0aGVuIHJldHVybiBJbnRlZ2VyLm1heF92YWx1ZVxuICAgIGVsc2UgaWYgRmxvYXQuKCA8ICkgcCAwLiB8fCBGbG9hdC4oID4gKSBwIDEuIHx8IEZsb2F0LmlzX25hbiBwXG4gICAgdGhlblxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJnZW9tZXRyaWMgZGlzdHJpYnV0aW9uOiBwIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxXCIgKHAgOiBmbG9hdCldXG4gICAgZWxzZSAoXG4gICAgICAoKiBXZSBzdGFydCB3aXRoIGEgdW5pZm9ybSBkaXN0cmlidXRpb24uIFdlIGNvbnZlcnQgdG8gZXhwb25lbnRpYWwgZGlzdHJpYnV0aW9uXG4gICAgICAgICB1c2luZyBbbG9nXS4gV2UgY29udmVydCB0byBnZW9tZXRyaWMgd2l0aCBbcm91bmRfZG93bl0uIFRoZW4gd2UgYm91bmRzIGNoZWNrIGFuZFxuICAgICAgICAgcmV0dXJuLiAqKVxuICAgICAgbGV0IGRlbm9taW5hdG9yID0gRmxvYXQubG9nMXAgKC0ucCkgaW5cbiAgICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgICAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLnVuaXRfZmxvYXQgcmFuZG9tIGluXG4gICAgICAgIGxldCBleHBvbmVudGlhbCA9IEZsb2F0LmxvZyB1bmlmb3JtIC8uIGRlbm9taW5hdG9yIGluXG4gICAgICAgIGxldCBmbG9hdCA9IEZsb2F0LnJvdW5kX2Rvd24gZXhwb25lbnRpYWwgaW5cbiAgICAgICAgbWF0Y2ggSW50ZWdlci5vZl9mbG9hdCBmbG9hdCB3aXRoXG4gICAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPiBJbnRlZ2VyLm1heF92YWx1ZVxuICAgICAgICB8IGludCAtPlxuICAgICAgICAgIGxldCBpbnQgPSBJbnRlZ2VyLiggKyApIGxvIGludCBpblxuICAgICAgICAgIGlmIEludGVnZXIuKCA8ICkgaW50IGxvIHRoZW4gSW50ZWdlci5tYXhfdmFsdWUgZWxzZSBpbnQpKVxuICA7O1xuXG4gIGxldCB1bmlmb3JtX2luY2x1c2l2ZSBsbyBoaSA9XG4gICAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IEludGVnZXIudW5pZm9ybSByYW5kb20gfmxvIH5oaSlcbiAgOztcblxuICBsZXQgbG9nX3VuaWZvcm1faW5jbHVzaXZlIGxvIGhpID1cbiAgICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gSW50ZWdlci5sb2dfdW5pZm9ybSByYW5kb20gfmxvIH5oaSlcbiAgOztcblxuICBsZXQgbm9uX3VuaWZvcm0gZiBsbyBoaSA9XG4gICAgd2VpZ2h0ZWRfdW5pb24gWyAwLjA1LCByZXR1cm4gbG87IDAuMDUsIHJldHVybiBoaTsgMC45LCBmIGxvIGhpIF1cbiAgOztcblxuICBsZXQgaW5jbHVzaXZlID0gbm9uX3VuaWZvcm0gdW5pZm9ybV9pbmNsdXNpdmVcbiAgbGV0IGxvZ19pbmNsdXNpdmUgPSBub25fdW5pZm9ybSBsb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiAgbGV0IHVuaWZvcm1fYWxsID0gdW5pZm9ybV9pbmNsdXNpdmUgSW50ZWdlci5taW5fdmFsdWUgSW50ZWdlci5tYXhfdmFsdWVcblxuICBsZXQgYWxsID1cbiAgICBbJW1hcFxuICAgICAgbGV0IG5lZ2F0aXZlID0gYm9vbFxuICAgICAgYW5kIG1hZ25pdHVkZSA9IGxvZ19pbmNsdXNpdmUgSW50ZWdlci56ZXJvIEludGVnZXIubWF4X3ZhbHVlIGluXG4gICAgICBpZiBuZWdhdGl2ZSB0aGVuIEludGVnZXIuYml0X25vdCBtYWduaXR1ZGUgZWxzZSBtYWduaXR1ZGVdXG4gIDs7XG5lbmRcblxubW9kdWxlIEZvcl9pbnQgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50XG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50XG4gIGVuZClcblxubGV0IGludCA9IEZvcl9pbnQuYWxsXG5sZXQgaW50X3VuaWZvcm0gPSBGb3JfaW50LnVuaWZvcm1fYWxsXG5sZXQgaW50X2luY2x1c2l2ZSA9IEZvcl9pbnQuaW5jbHVzaXZlXG5sZXQgaW50X3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludC51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludF9sb2dfaW5jbHVzaXZlID0gRm9yX2ludC5sb2dfaW5jbHVzaXZlXG5sZXQgaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50X2dlb21ldHJpYyA9IEZvcl9pbnQuZ2VvbWV0cmljXG5cbm1vZHVsZSBGb3JfaW50MzIgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnQzMlxuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQzMlxuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludDMyXG4gIGVuZClcblxubGV0IGludDMyID0gRm9yX2ludDMyLmFsbFxubGV0IGludDMyX3VuaWZvcm0gPSBGb3JfaW50MzIudW5pZm9ybV9hbGxcbmxldCBpbnQzMl9pbmNsdXNpdmUgPSBGb3JfaW50MzIuaW5jbHVzaXZlXG5sZXQgaW50MzJfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50MzIudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQzMl9sb2dfaW5jbHVzaXZlID0gRm9yX2ludDMyLmxvZ19pbmNsdXNpdmVcbmxldCBpbnQzMl9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50MzIubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50MzJfZ2VvbWV0cmljID0gRm9yX2ludDMyLmdlb21ldHJpY1xuXG5tb2R1bGUgRm9yX2ludDYzID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50NjNcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50NjNcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQ2M1xuICBlbmQpXG5cbmxldCBpbnQ2MyA9IEZvcl9pbnQ2My5hbGxcbmxldCBpbnQ2M191bmlmb3JtID0gRm9yX2ludDYzLnVuaWZvcm1fYWxsXG5sZXQgaW50NjNfaW5jbHVzaXZlID0gRm9yX2ludDYzLmluY2x1c2l2ZVxubGV0IGludDYzX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDYzLnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjNfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQ2My5sb2dfaW5jbHVzaXZlXG5sZXQgaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDYzLmxvZ191bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDYzX2dlb21ldHJpYyA9IEZvcl9pbnQ2My5nZW9tZXRyaWNcblxubW9kdWxlIEZvcl9pbnQ2NCA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludDY0XG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludDY0XG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50NjRcbiAgZW5kKVxuXG5sZXQgaW50NjQgPSBGb3JfaW50NjQuYWxsXG5sZXQgaW50NjRfdW5pZm9ybSA9IEZvcl9pbnQ2NC51bmlmb3JtX2FsbFxubGV0IGludDY0X2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC5pbmNsdXNpdmVcbmxldCBpbnQ2NF91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDY0X2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50NjQubG9nX2luY2x1c2l2ZVxubGV0IGludDY0X2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQ2NF9nZW9tZXRyaWMgPSBGb3JfaW50NjQuZ2VvbWV0cmljXG5cbm1vZHVsZSBGb3JfbmF0aXZlaW50ID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgTmF0aXZlaW50XG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLm5hdGl2ZWludFxuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLm5hdGl2ZWludFxuICBlbmQpXG5cbmxldCBuYXRpdmVpbnQgPSBGb3JfbmF0aXZlaW50LmFsbFxubGV0IG5hdGl2ZWludF91bmlmb3JtID0gRm9yX25hdGl2ZWludC51bmlmb3JtX2FsbFxubGV0IG5hdGl2ZWludF9pbmNsdXNpdmUgPSBGb3JfbmF0aXZlaW50LmluY2x1c2l2ZVxubGV0IG5hdGl2ZWludF91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBuYXRpdmVpbnRfbG9nX2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQubG9nX2luY2x1c2l2ZVxubGV0IG5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfbmF0aXZlaW50LmxvZ191bmlmb3JtX2luY2x1c2l2ZVxubGV0IG5hdGl2ZWludF9nZW9tZXRyaWMgPSBGb3JfbmF0aXZlaW50Lmdlb21ldHJpY1xubGV0IGZsb2F0X3plcm9fZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IDAuXG5sZXQgZmxvYXRfemVyb19tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgMC5cblxubGV0IGZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUgPVxuICBGbG9hdC5vbmVfdWxwIGBEb3duIEZsb2F0Lm1pbl9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbjs7XG5cbmxldCBmbG9hdF9zdWJub3JtYWxfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0Lm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9taW5fc3Vibm9ybWFsX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBGbG9hdC5taW5fcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X3N1Ym5vcm1hbF9tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgZmxvYXRfbWF4X3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9wb3NpdGl2ZV9ub3JtYWxfdmFsdWUgPSBGbG9hdC5tYXhfZmluaXRlX3ZhbHVlXG5sZXQgZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQubWluX3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IGZsb2F0X21heF9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBmbG9hdF9tYXhfcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfaW5mX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5pbmZpbml0eVxubGV0IGZsb2F0X2luZl9tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgRmxvYXQuaW5maW5pdHlcbmxldCBmbG9hdF9uYW5fZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0Lm5hblxubGV0IGZsb2F0X21pbl9uYW5fbWFudGlzc2EgPSBJbnQ2My5zdWNjIGZsb2F0X2luZl9tYW50aXNzYVxubGV0IGZsb2F0X21heF9uYW5fbWFudGlzc2EgPSBmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhXG5sZXQgZmxvYXRfbnVtX21hbnRpc3NhX2JpdHMgPSA1MlxuXG4oKiBXZSB3ZWlnaHQgbWFudGlzc2FzIHNvIHRoYXQgXCJpbnRlZ2VyLWxpa2VcIiB2YWx1ZXMsIGFuZCB2YWx1ZXMgd2l0aCBvbmx5IGEgZmV3IGRpZ2l0c1xuICAgcGFzdCB0aGUgZGVjaW1hbCwgYXJlIHJlYXNvbmFibHkgY29tbW9uLiAqKVxubGV0IGZsb2F0X25vcm1hbF9tYW50aXNzYSA9XG4gIGxldCViaW5kIG51bV9iaXRzID0gRm9yX2ludC51bmlmb3JtX2luY2x1c2l2ZSAwIGZsb2F0X251bV9tYW50aXNzYV9iaXRzIGluXG4gIGxldCVtYXAgYml0cyA9XG4gICAgRm9yX2ludDYzLmluY2x1c2l2ZSBJbnQ2My56ZXJvIChJbnQ2My5wcmVkIChJbnQ2My5zaGlmdF9sZWZ0IEludDYzLm9uZSBudW1fYml0cykpXG4gIGluXG4gIEludDYzLnNoaWZ0X2xlZnQgYml0cyAoSW50LiggLSApIGZsb2F0X251bV9tYW50aXNzYV9iaXRzIG51bV9iaXRzKVxuOztcblxubGV0IGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2xvdyBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGxldCVtYXAgb2Zmc2V0ID0gRm9yX2ludC5sb2dfaW5jbHVzaXZlIDAgKEludC4oIC0gKSB1cHBlcl9ib3VuZCBsb3dlcl9ib3VuZCkgaW5cbiAgSW50LiggKyApIGxvd2VyX2JvdW5kIG9mZnNldFxuOztcblxubGV0IGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2hpZ2ggbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgPVxuICBsZXQlbWFwIG9mZnNldCA9IEZvcl9pbnQubG9nX2luY2x1c2l2ZSAwIChJbnQuKCAtICkgdXBwZXJfYm91bmQgbG93ZXJfYm91bmQpIGluXG4gIEludC4oIC0gKSB1cHBlcl9ib3VuZCBvZmZzZXRcbjs7XG5cbigqIFdlIHdlaWdodCBleHBvbmVudHMgc3VjaCB0aGF0IHZhbHVlcyBuZWFyIDEgYXJlIG1vcmUgbGlrZWx5LiAqKVxubGV0IGZsb2F0X2V4cG9uZW50ID1cbiAgbGV0IG1pZHBvaW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCAxLiBpblxuICB1bmlvblxuICAgIFsgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfaGlnaCBmbG9hdF9taW5fbm9ybWFsX2V4cG9uZW50IG1pZHBvaW50XG4gICAgOyBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9sb3cgbWlkcG9pbnQgZmxvYXRfbWF4X25vcm1hbF9leHBvbmVudFxuICAgIF1cbjs7XG5cbmxldCBmbG9hdF96ZXJvID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2wgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuXG4gICAgfm5lZ2F0aXZlXG4gICAgfmV4cG9uZW50OmZsb2F0X3plcm9fZXhwb25lbnRcbiAgICB+bWFudGlzc2E6ZmxvYXRfemVyb19tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X3N1Ym5vcm1hbCA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sXG4gIGFuZCBleHBvbmVudCA9IHJldHVybiBmbG9hdF9zdWJub3JtYWxfZXhwb25lbnRcbiAgYW5kIG1hbnRpc3NhID1cbiAgICBGb3JfaW50NjMubG9nX2luY2x1c2l2ZSBmbG9hdF9taW5fc3Vibm9ybWFsX21hbnRpc3NhIGZsb2F0X21heF9zdWJub3JtYWxfbWFudGlzc2FcbiAgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfbm9ybWFsID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2xcbiAgYW5kIGV4cG9uZW50ID0gZmxvYXRfZXhwb25lbnRcbiAgYW5kIG1hbnRpc3NhID0gZmxvYXRfbm9ybWFsX21hbnRpc3NhIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X2luZmluaXRlID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2wgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuXG4gICAgfm5lZ2F0aXZlXG4gICAgfmV4cG9uZW50OmZsb2F0X2luZl9leHBvbmVudFxuICAgIH5tYW50aXNzYTpmbG9hdF9pbmZfbWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9uYW4gPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbFxuICBhbmQgZXhwb25lbnQgPSByZXR1cm4gZmxvYXRfbmFuX2V4cG9uZW50XG4gIGFuZCBtYW50aXNzYSA9IEZvcl9pbnQ2My5pbmNsdXNpdmUgZmxvYXRfbWluX25hbl9tYW50aXNzYSBmbG9hdF9tYXhfbmFuX21hbnRpc3NhIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X29mX2NsYXNzIGMgPVxuICBtYXRjaCAoYyA6IEZsb2F0LkNsYXNzLnQpIHdpdGhcbiAgfCBaZXJvIC0+IGZsb2F0X3plcm9cbiAgfCBTdWJub3JtYWwgLT4gZmxvYXRfc3Vibm9ybWFsXG4gIHwgTm9ybWFsIC0+IGZsb2F0X25vcm1hbFxuICB8IEluZmluaXRlIC0+IGZsb2F0X2luZmluaXRlXG4gIHwgTmFuIC0+IGZsb2F0X25hblxuOztcblxubGV0IGZsb2F0X3dlaWdodF9vZl9jbGFzcyBjID1cbiAgbWF0Y2ggKGMgOiBGbG9hdC5DbGFzcy50KSB3aXRoXG4gIHwgWmVybyAtPiAxLlxuICB8IFN1Ym5vcm1hbCAtPiAxMC5cbiAgfCBOb3JtYWwgLT4gMTAwLlxuICB8IEluZmluaXRlIC0+IDEuXG4gIHwgTmFuIC0+IDEuXG47O1xuXG5sZXQgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyBmaWx0ZXIgPVxuICBMaXN0LmZpbHRlcl9tYXAgRmxvYXQuQ2xhc3MuYWxsIH5mOihmdW4gYyAtPlxuICAgIGlmIGZpbHRlciBjIHRoZW4gU29tZSAoZmxvYXRfd2VpZ2h0X29mX2NsYXNzIGMsIGZsb2F0X29mX2NsYXNzIGMpIGVsc2UgTm9uZSlcbiAgfD4gd2VpZ2h0ZWRfdW5pb25cbjs7XG5cbmxldCBmbG9hdF9maW5pdGUgPVxuICBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW5jdGlvblxuICAgIHwgWmVybyB8IFN1Ym5vcm1hbCB8IE5vcm1hbCAtPiB0cnVlXG4gICAgfCBJbmZpbml0ZSB8IE5hbiAtPiBmYWxzZSlcbjs7XG5cbmxldCBmbG9hdF93aXRob3V0X25hbiA9XG4gIGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1bmN0aW9uXG4gICAgfCBaZXJvIHwgU3Vibm9ybWFsIHwgTm9ybWFsIHwgSW5maW5pdGUgLT4gdHJ1ZVxuICAgIHwgTmFuIC0+IGZhbHNlKVxuOztcblxubGV0IGZsb2F0ID0gZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuIF8gLT4gdHJ1ZSlcblxubGV0IGZsb2F0X2Zpbml0ZV9ub25femVybyA9XG4gIGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1bmN0aW9uXG4gICAgfCBTdWJub3JtYWwgfCBOb3JtYWwgLT4gdHJ1ZVxuICAgIHwgWmVybyB8IEluZmluaXRlIHwgTmFuIC0+IGZhbHNlKVxuOztcblxubGV0IGZsb2F0X3N0cmljdGx5X3Bvc2l0aXZlID1cbiAgbGV0JW1hcCB0ID0gZmxvYXRfZmluaXRlX25vbl96ZXJvIGluXG4gIEZsb2F0LmFicyB0XG47O1xuXG5sZXQgZmxvYXRfc3RyaWN0bHlfbmVnYXRpdmUgPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGVfbm9uX3plcm8gaW5cbiAgfi0uKEZsb2F0LmFicyB0KVxuOztcblxubGV0IGZsb2F0X3Bvc2l0aXZlX29yX3plcm8gPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGUgaW5cbiAgRmxvYXQuYWJzIHRcbjs7XG5cbmxldCBmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvID1cbiAgbGV0JW1hcCB0ID0gZmxvYXRfZmluaXRlIGluXG4gIH4tLihGbG9hdC5hYnMgdClcbjs7XG5cbmxldCBmbG9hdF91bmlmb3JtX2V4Y2x1c2l2ZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGxldCBvcGVuIEZsb2F0Lk8gaW5cbiAgaWYgKG5vdCAoRmxvYXQuaXNfZmluaXRlIGxvd2VyX2JvdW5kKSkgfHwgbm90IChGbG9hdC5pc19maW5pdGUgdXBwZXJfYm91bmQpXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGbG9hdC51bmlmb3JtX2V4Y2x1c2l2ZTogYm91bmRzIGFyZSBub3QgZmluaXRlXCJcbiAgICAgICAgICAobG93ZXJfYm91bmQgOiBmbG9hdClcbiAgICAgICAgICAodXBwZXJfYm91bmQgOiBmbG9hdCldO1xuICBsZXQgbG93ZXJfaW5jbHVzaXZlID0gRmxvYXQub25lX3VscCBgVXAgbG93ZXJfYm91bmQgaW5cbiAgbGV0IHVwcGVyX2luY2x1c2l2ZSA9IEZsb2F0Lm9uZV91bHAgYERvd24gdXBwZXJfYm91bmQgaW5cbiAgaWYgbG93ZXJfaW5jbHVzaXZlID4gdXBwZXJfaW5jbHVzaXZlXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGbG9hdC51bmlmb3JtX2V4Y2x1c2l2ZTogcmVxdWVzdGVkIHJhbmdlIGlzIGVtcHR5XCJcbiAgICAgICAgICAobG93ZXJfYm91bmQgOiBmbG9hdClcbiAgICAgICAgICAodXBwZXJfYm91bmQgOiBmbG9hdCldO1xuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBTcGxpdHRhYmxlX3JhbmRvbS5mbG9hdCByYW5kb20gfmxvOmxvd2VyX2luY2x1c2l2ZSB+aGk6dXBwZXJfaW5jbHVzaXZlKVxuOztcblxubGV0IGZsb2F0X2luY2x1c2l2ZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGlmIEZsb2F0LmVxdWFsIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kXG4gIHRoZW4gcmV0dXJuIGxvd2VyX2JvdW5kXG4gIGVsc2UgaWYgRmxvYXQuKCA9ICkgKEZsb2F0Lm9uZV91bHAgYFVwIGxvd2VyX2JvdW5kKSB1cHBlcl9ib3VuZFxuICB0aGVuIHVuaW9uIFsgcmV0dXJuIGxvd2VyX2JvdW5kOyByZXR1cm4gdXBwZXJfYm91bmQgXVxuICBlbHNlXG4gICAgd2VpZ2h0ZWRfdW5pb25cbiAgICAgIFsgMC4wNSwgcmV0dXJuIGxvd2VyX2JvdW5kXG4gICAgICA7IDAuMDUsIHJldHVybiB1cHBlcl9ib3VuZFxuICAgICAgOyAwLjksIGZsb2F0X3VuaWZvcm1fZXhjbHVzaXZlIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kXG4gICAgICBdXG47O1xuXG5sZXQgc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJfZ2VuIH5sZW5ndGggPVxuICBsaXN0X3dpdGhfbGVuZ3RoIGNoYXJfZ2VuIH5sZW5ndGggfD4gbWFwIH5mOlN0cmluZy5vZl9jaGFyX2xpc3Rcbjs7XG5cbmxldCBzdHJpbmdfb2YgY2hhcl9nZW4gPVxuICBiaW5kIHNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50IH5mOihmdW4gbGVuZ3RoIC0+XG4gICAgc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJfZ2VuIH5sZW5ndGgpXG47O1xuXG5sZXQgc3RyaW5nX25vbl9lbXB0eV9vZiBjaGFyX2dlbiA9XG4gIGJpbmQgc21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50IH5mOihmdW4gbGVuZ3RoIC0+XG4gICAgc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJfZ2VuIH5sZW5ndGgpXG47O1xuXG5sZXQgc3RyaW5nID0gc3RyaW5nX29mIGNoYXJcbmxldCBzdHJpbmdfbm9uX2VtcHR5ID0gc3RyaW5nX25vbl9lbXB0eV9vZiBjaGFyXG5sZXQgc3RyaW5nX3dpdGhfbGVuZ3RoIH5sZW5ndGggPSBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhciB+bGVuZ3RoXG5cbm1vZHVsZSBFZGl0X3N0cmluZyA9IHN0cnVjdFxuICBsZXQgZWRpdF9pbnNlcnQgc3RyaW5nID1cbiAgICBsZXQlYmluZCBwb3MgPSBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgMCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcpIGluXG4gICAgbGV0JWJpbmQgbGVuID0gaW50X2dlb21ldHJpYyAxIH5wOjAuNSBpblxuICAgIGxldCViaW5kIHN0ciA9IHN0cmluZ193aXRoX2xlbmd0aCB+bGVuZ3RoOmxlbiBpblxuICAgIFsgU3RyaW5nLnByZWZpeCBzdHJpbmcgcG9zOyBzdHI7IFN0cmluZy5kcm9wX3ByZWZpeCBzdHJpbmcgcG9zIF1cbiAgICB8PiBTdHJpbmcuY29uY2F0XG4gICAgfD4gcmV0dXJuXG4gIDs7XG5cbiAgbGV0IGVkaXRfcmVtb3ZlIHN0cmluZyA9XG4gICAgbGV0JWJpbmQgbGVuID0gaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSAxIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBsZXQlYmluZCBwb3MgPSBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgMCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgLSBsZW4pIGluXG4gICAgWyBTdHJpbmcucHJlZml4IHN0cmluZyBwb3M7IFN0cmluZy5kcm9wX3ByZWZpeCBzdHJpbmcgKHBvcyArIGxlbikgXVxuICAgIHw+IFN0cmluZy5jb25jYXRcbiAgICB8PiByZXR1cm5cbiAgOztcblxuICBsZXQgZWRpdF9yZXBsYWNlIHN0cmluZyA9XG4gICAgbGV0JWJpbmQgbGVuID0gaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSAxIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBsZXQlYmluZCBwb3MgPSBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgMCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgLSBsZW4pIGluXG4gICAgbGV0JWJpbmQgc3RyID0gc3RyaW5nX3dpdGhfbGVuZ3RoIH5sZW5ndGg6bGVuIGluXG4gICAgWyBTdHJpbmcucHJlZml4IHN0cmluZyBwb3M7IHN0cjsgU3RyaW5nLmRyb3BfcHJlZml4IHN0cmluZyAocG9zICsgbGVuKSBdXG4gICAgfD4gU3RyaW5nLmNvbmNhdFxuICAgIHw+IHJldHVyblxuICA7O1xuXG4gIGxldCBlZGl0X2RvdWJsZSBzdHJpbmcgPVxuICAgIGxldCViaW5kIGxlbiA9IGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgMSAoU3RyaW5nLmxlbmd0aCBzdHJpbmcpIGluXG4gICAgbGV0JWJpbmQgcG9zID0gaW50X3VuaWZvcm1faW5jbHVzaXZlIDAgKFN0cmluZy5sZW5ndGggc3RyaW5nIC0gbGVuKSBpblxuICAgIFsgU3RyaW5nLnByZWZpeCBzdHJpbmcgKHBvcyArIGxlbik7IFN0cmluZy5kcm9wX3ByZWZpeCBzdHJpbmcgcG9zIF1cbiAgICB8PiBTdHJpbmcuY29uY2F0XG4gICAgfD4gcmV0dXJuXG4gIDs7XG5cbiAgbGV0IGVkaXRfbm9uZW1wdHkgc3RyaW5nID1cbiAgICBbIGVkaXRfaW5zZXJ0IHN0cmluZzsgZWRpdF9yZW1vdmUgc3RyaW5nOyBlZGl0X3JlcGxhY2Ugc3RyaW5nOyBlZGl0X2RvdWJsZSBzdHJpbmcgXVxuICAgIHw+IHVuaW9uXG4gIDs7XG5cbiAgbGV0IHJlYyBlZGl0IHN0cmluZyBuX3RpbWVzID1cbiAgICBpZiBuX3RpbWVzIDw9IDBcbiAgICB0aGVuIHJldHVybiBzdHJpbmdcbiAgICBlbHNlIChcbiAgICAgIGxldCViaW5kIHN0cmluZyA9XG4gICAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBzdHJpbmcgdGhlbiBlZGl0X2luc2VydCBzdHJpbmcgZWxzZSBlZGl0X25vbmVtcHR5IHN0cmluZ1xuICAgICAgaW5cbiAgICAgIGVkaXQgc3RyaW5nIChuX3RpbWVzIC0gMSkpXG4gIDs7XG5lbmRcblxubGV0IHN0cmluZ19saWtlIHN0cmluZyA9XG4gIGxldCViaW5kIG5fdGltZXMgPSBpbnRfZ2VvbWV0cmljIDAgfnA6MC41IGluXG4gIEVkaXRfc3RyaW5nLmVkaXQgc3RyaW5nIG5fdGltZXNcbjs7XG5cbmxldCBieXRlcyA9IG1hcCBzdHJpbmcgfmY6Qnl0ZXMub2Zfc3RyaW5nXG5cbmxldCBzZXhwX29mIGF0b20gPVxuICBmaXhlZF9wb2ludCAoZnVuIHNlbGYgLT5cbiAgICBsZXQlYmluZCBzaXplID0gc2l6ZSBpblxuICAgICgqIGNob29zZSBhIG51bWJlciB3ZWlnaHRlZCBsb3cgc28gd2UgaGF2ZSBhIGRlY3JlYXNpbmcsIGJ1dCBub3QgdmFuaXNoaW5nLCBjaGFuY2VcbiAgICAgICB0byBnZW5lcmF0ZSBhdG9tcyBhcyBzaXplIGdyb3dzICopXG4gICAgbWF0Y2glYmluZCBGb3JfaW50LmxvZ191bmlmb3JtX2luY2x1c2l2ZSAwIChzaXplICsgMSkgd2l0aFxuICAgICgqIGdlbmVyYXRlIGFuIGF0b20gdXNpbmcgdGhlIGdpdmVuIHNpemUgKilcbiAgICB8IDAgLT5cbiAgICAgIGxldCVtYXAgYXRvbSA9IGF0b20gaW5cbiAgICAgIFNleHAuQXRvbSBhdG9tXG4gICAgKCogcmVseWluZyBvbiBbTGlzdC5nZW5dIHRvIGRpc3RyaWJ1dGUgW3NpemVdIG92ZXIgc3ViLXNleHBzICopXG4gICAgfCBfIC0+XG4gICAgICBsZXQlbWFwIGxpc3QgPSBsaXN0IHNlbGYgaW5cbiAgICAgIFNleHAuTGlzdCBsaXN0KVxuOztcblxubGV0IHNleHAgPSBzZXhwX29mIHN0cmluZ1xuXG5sZXQgbWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfZ2VuIGRhdGFfZ2VuID1cbiAgbGV0JWJpbmQga2V5cyA9IGxpc3Qga2V5X2dlbiBpblxuICBsZXQga2V5cyA9IExpc3QuZGVkdXBfYW5kX3NvcnQga2V5cyB+Y29tcGFyZTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICBsZXQlYmluZCBkYXRhID0gbGlzdF93aXRoX2xlbmd0aCBkYXRhX2dlbiB+bGVuZ3RoOihMaXN0Lmxlbmd0aCBrZXlzKSBpblxuICByZXR1cm4gKE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIChMaXN0LnppcF9leG4ga2V5cyBkYXRhKSlcbjs7XG5cbmxldCBzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW4gPVxuICBtYXAgKGxpc3QgZWx0X2dlbikgfmY6KFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUub2ZfbGlzdCB+Y29tcGFyYXRvcilcbjs7XG5cbmxldCBjb21wYXJhdG9yX29mX21cbiAgICAgICh0eXBlIGEgYylcbiAgICAgIChtb2R1bGUgTSA6IENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IGEgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gYylcbiAgPVxuICBNLmNvbXBhcmF0b3Jcbjs7XG5cbmxldCBtYXBfdF9tIG0ga2V5X2dlbiBkYXRhX2dlbiA9XG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvcl9vZl9tIG0gaW5cbiAgbWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfZ2VuIGRhdGFfZ2VuXG4gIHw+IG1hcCB+ZjooTWFwLlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbjs7XG5cbmxldCBzZXRfdF9tIG0gZWx0X2dlbiA9XG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvcl9vZl9tIG0gaW5cbiAgc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfZ2VuXG4gIHw+IG1hcCB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbjs7XG5cbmxldCBiaWdhcnJheTEgdCBraW5kIGxheW91dCA9XG4gIGxldCVtYXAgZWx0cyA9IGxpc3QgdCBpblxuICBsZXQgZWx0cyA9IEFycmF5Lm9mX2xpc3QgZWx0cyBpblxuICBsZXQgZGltID0gQXJyYXkubGVuZ3RoIGVsdHMgaW5cbiAgbGV0IG9mZnNldCA9IEJpZ2FycmF5X2hlbHBlcnMuTGF5b3V0Lm9mZnNldCBsYXlvdXQgaW5cbiAgQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaW5pdCBraW5kIGxheW91dCBkaW0gfmY6KGZ1biBpIC0+IGVsdHMuKGkgLSBvZmZzZXQpKVxuOztcblxubGV0IGJpZ3N0cmluZyA9IGJpZ2FycmF5MSBjaGFyIENoYXIgQ19sYXlvdXRcbmxldCBmbG9hdDMyX3ZlYyA9IGJpZ2FycmF5MSBmbG9hdCBGbG9hdDMyIEZvcnRyYW5fbGF5b3V0XG5sZXQgZmxvYXQ2NF92ZWMgPSBiaWdhcnJheTEgZmxvYXQgRmxvYXQ2NCBGb3J0cmFuX2xheW91dFxuXG5sZXQgYmlnYXJyYXkyX2RpbSA9XG4gIG1hdGNoJWJpbmQgc2l6ZSB3aXRoXG4gIHwgMCAtPiByZXR1cm4gKDAsIDApXG4gIHwgbWF4X3RvdGFsX3NpemUgLT5cbiAgICBsZXQlYmluZCBhID1cbiAgICAgICgqIGNob29zZSBhIGRpbWVuc2lvbiB1cCB0byBbbWF4X3RvdGFsX3NpemVdLCB3ZWlnaHRlZCBsb3cgdG8gZ2l2ZSB0aGUgb3RoZXJcbiAgICAgICAgIGRpbWVuc2lvbiBhIGdvb2QgY2hhbmNlIG9mIGJlaW5nIGNvbXBhcmF0aXZlbHkgaGlnaCAqKVxuICAgICAgaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSAxIG1heF90b3RhbF9zaXplXG4gICAgaW5cbiAgICBsZXQlYmluZCBiID1cbiAgICAgICgqIGNob29zZSBhIGRpbWVuc2lvbiB1cCB0byBbbWF4X3RvdGFsX3NpemUgLyBhXSwgd2VpZ2h0ZWQgaGlnaCB0byByZWFjaCBjbG9zZSB0b1xuICAgICAgICAgW21heF90b3RhbF9zaXplXSBtb3N0IG9mIHRoZSB0aW1lICopXG4gICAgICBsZXQgbWF4X2IgPSBtYXhfdG90YWxfc2l6ZSAvIGEgaW5cbiAgICAgIGxldCVtYXAgYl93ZWlnaHRlZF9sb3cgPSBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDAgbWF4X2IgaW5cbiAgICAgIG1heF9iIC0gYl93ZWlnaHRlZF9sb3dcbiAgICBpblxuICAgICgqIGF2b2lkIGFueSBza2V3IG9mIGEgdnMgYiBieSByYW5kb21seSBzd2FwcGluZyAqKVxuICAgIGlmJW1hcCBib29sIHRoZW4gYSwgYiBlbHNlIGIsIGFcbjs7XG5cbmxldCBiaWdhcnJheTIgdCBraW5kIGxheW91dCA9XG4gIGxldCViaW5kIGRpbTEsIGRpbTIgPSBiaWdhcnJheTJfZGltIGluXG4gIGxldCVtYXAgZWx0cyA9IGxpc3Rfd2l0aF9sZW5ndGggfmxlbmd0aDpkaW0xIChsaXN0X3dpdGhfbGVuZ3RoIH5sZW5ndGg6ZGltMiB0KSBpblxuICBsZXQgZWx0cyA9IEFycmF5Lm9mX2xpc3RfbWFwIH5mOkFycmF5Lm9mX2xpc3QgZWx0cyBpblxuICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICBCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5pbml0IGtpbmQgbGF5b3V0IGRpbTEgZGltMiB+ZjooZnVuIGkgaiAtPlxuICAgIGVsdHMuKGkgLSBvZmZzZXQpLihqIC0gb2Zmc2V0KSlcbjs7XG5cbmxldCBmbG9hdDMyX21hdCA9IGJpZ2FycmF5MiBmbG9hdCBGbG9hdDMyIEZvcnRyYW5fbGF5b3V0XG5sZXQgZmxvYXQ2NF9tYXQgPSBiaWdhcnJheTIgZmxvYXQgRmxvYXQ2NCBGb3J0cmFuX2xheW91dFxuXG5tb2R1bGUgRGVidWcgPSBzdHJ1Y3RcbiAgbGV0IGNvdmVyYWdlXG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIENtcCA6IENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICBzYW1wbGVcbiAgICA9XG4gICAgU2VxdWVuY2UuZm9sZFxuICAgICAgc2FtcGxlXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IChtb2R1bGUgQ21wKSlcbiAgICAgIH5mOihmdW4gY291bnRzIHZhbHVlIC0+XG4gICAgICAgIE1hcC51cGRhdGUgY291bnRzIHZhbHVlIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiAxXG4gICAgICAgICAgfCBTb21lIHByZXYgLT4gcHJldiArIDEpKVxuICA7O1xuXG4gIGxldCBtb25pdG9yIHQgfmYgPVxuICAgIG1hcCB0IH5mOihmdW4gdmFsdWUgLT5cbiAgICAgIGYgdmFsdWU7XG4gICAgICB2YWx1ZSlcbiAgOztcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogNjQtYml0IGludGVnZXJzLlxuXG4gICBUaGlzIG1vZHVsZSBwcm92aWRlcyBvcGVyYXRpb25zIG9uIHRoZSB0eXBlIFtpbnQ2NF0gb2ZcbiAgIHNpZ25lZCA2NC1iaXQgaW50ZWdlcnMuICBVbmxpa2UgdGhlIGJ1aWx0LWluIFtpbnRdIHR5cGUsXG4gICB0aGUgdHlwZSBbaW50NjRdIGlzIGd1YXJhbnRlZWQgdG8gYmUgZXhhY3RseSA2NC1iaXQgd2lkZSBvbiBhbGxcbiAgIHBsYXRmb3Jtcy4gIEFsbCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3ZlciBbaW50NjRdIGFyZSB0YWtlblxuICAgbW9kdWxvIDJ7XjY0fVxuXG4gICBQZXJmb3JtYW5jZSBub3RpY2U6IHZhbHVlcyBvZiB0eXBlIFtpbnQ2NF0gb2NjdXB5IG1vcmUgbWVtb3J5XG4gICBzcGFjZSB0aGFuIHZhbHVlcyBvZiB0eXBlIFtpbnRdLCBhbmQgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9uXG4gICBbaW50NjRdIGFyZSBnZW5lcmFsbHkgc2xvd2VyIHRoYW4gdGhvc2Ugb24gW2ludF0uICBVc2UgW2ludDY0XVxuICAgb25seSB3aGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1aXJlcyBleGFjdCA2NC1iaXQgYXJpdGhtZXRpYy5cblxuICAgIExpdGVyYWxzIGZvciA2NC1iaXQgaW50ZWdlcnMgYXJlIHN1ZmZpeGVkIGJ5IEw6XG4gICAge1tcbiAgICAgIGxldCB6ZXJvOiBpbnQ2NCA9IDBMXG4gICAgICBsZXQgb25lOiBpbnQ2NCA9IDFMXG4gICAgICBsZXQgbV9vbmU6IGludDY0ID0gLTFMXG4gICAgXX1cbiopXG5cbnZhbCB6ZXJvIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMC4gKilcblxudmFsIG9uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIDEuICopXG5cbnZhbCBtaW51c19vbmUgOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAtMS4gKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuKCoqIFVuYXJ5IG5lZ2F0aW9uLiAqKVxuXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG4oKiogQWRkaXRpb24uICopXG5cbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbigqKiBTdWJ0cmFjdGlvbi4gKilcblxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuKCoqIE11bHRpcGxpY2F0aW9uLiAqKVxuXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG4oKiogSW50ZWdlciBkaXZpc2lvbi5cbiAgIEByYWlzZSBEaXZpc2lvbl9ieV96ZXJvIGlmIHRoZSBzZWNvbmRcbiAgIGFyZ3VtZW50IGlzIHplcm8uICBUaGlzIGRpdmlzaW9uIHJvdW5kcyB0aGUgcmVhbCBxdW90aWVudCBvZlxuICAgaXRzIGFyZ3VtZW50cyB0b3dhcmRzIHplcm8sIGFzIHNwZWNpZmllZCBmb3IgeyFTdGRsaWIuKC8pfS4gKilcblxudmFsIHVuc2lnbmVkX2RpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IWRpdn0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOCAqKVxuXG5leHRlcm5hbCByZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X21vZFwiXG4oKiogSW50ZWdlciByZW1haW5kZXIuICBJZiBbeV0gaXMgbm90IHplcm8sIHRoZSByZXN1bHRcbiAgIG9mIFtJbnQ2NC5yZW0geCB5XSBzYXRpc2ZpZXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0eTpcbiAgIFt4ID0gSW50NjQuYWRkIChJbnQ2NC5tdWwgKEludDY0LmRpdiB4IHkpIHkpIChJbnQ2NC5yZW0geCB5KV0uXG4gICBJZiBbeSA9IDBdLCBbSW50NjQucmVtIHggeV0gcmFpc2VzIFtEaXZpc2lvbl9ieV96ZXJvXS4gKilcblxudmFsIHVuc2lnbmVkX3JlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0XG4oKiogU2FtZSBhcyB7IXJlbX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhbmQgcmVzdWx0IGFyZSBpbnRlcnByZXRlZCBhcyB7ZVxuICAgIHVuc2lnbmVkfSA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOCAqKVxuXG52YWwgc3VjYyA6IGludDY0IC0+IGludDY0XG4oKiogU3VjY2Vzc29yLiAgW0ludDY0LnN1Y2MgeF0gaXMgW0ludDY0LmFkZCB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBwcmVkIDogaW50NjQgLT4gaW50NjRcbigqKiBQcmVkZWNlc3Nvci4gIFtJbnQ2NC5wcmVkIHhdIGlzIFtJbnQ2NC5zdWIgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgYWJzIDogaW50NjQgLT4gaW50NjRcbigqKiBbYWJzIHhdIGlzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBbeF0uIE9uIFttaW5faW50XSB0aGlzXG4gICBpcyBbbWluX2ludF0gaXRzZWxmIGFuZCB0aHVzIHJlbWFpbnMgbmVnYXRpdmUuICopXG5cbnZhbCBtYXhfaW50IDogaW50NjRcbigqKiBUaGUgZ3JlYXRlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgMnteNjN9IC0gMS4gKilcblxudmFsIG1pbl9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAtMnteNjN9LiAqKVxuXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGFuZC4gKilcblxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgb3IuICopXG5cbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgZXhjbHVzaXZlIG9yLiAqKVxuXG52YWwgbG9nbm90IDogaW50NjQgLT4gaW50NjRcbigqKiBCaXR3aXNlIGxvZ2ljYWwgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuKCoqIFtJbnQ2NC5zaGlmdF9sZWZ0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgbGVmdCBieSBbeV0gYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYW4gYXJpdGhtZXRpYyBzaGlmdDogdGhlIHNpZ24gYml0IG9mIFt4XSBpcyByZXBsaWNhdGVkXG4gICBhbmQgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGEgbG9naWNhbCBzaGlmdDogemVyb2VzIGFyZSBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzXG4gICByZWdhcmRsZXNzIG9mIHRoZSBzaWduIG9mIFt4XS5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gaW50ZWdlciAodHlwZSBbaW50XSkgdG8gYSA2NC1iaXQgaW50ZWdlclxuICAgICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFuXG4gICBpbnRlZ2VyICh0eXBlIFtpbnRdKS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjYzfSwgaS5lLiB0aGUgaGlnaC1vcmRlciBiaXQgaXMgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgT24gMzItYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzF9LCBpLmUuIHRoZSB0b3AgMzMgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAqKVxuXG52YWwgdW5zaWduZWRfdG9faW50IDogaW50NjQgLT4gaW50IG9wdGlvblxuKCoqIFNhbWUgYXMgeyF0b19pbnR9LCBidXQgaW50ZXJwcmV0cyB0aGUgYXJndW1lbnQgYXMgYW4ge2UgdW5zaWduZWR9IGludGVnZXIuXG4gICAgUmV0dXJucyBbTm9uZV0gaWYgdGhlIHVuc2lnbmVkIHZhbHVlIG9mIHRoZSBhcmd1bWVudCBjYW5ub3QgZml0IGludG8gYW5cbiAgICBbaW50XS5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gZmxvYXRpbmctcG9pbnQgbnVtYmVyIHRvIGEgNjQtYml0IGludGVnZXIsXG4gICBkaXNjYXJkaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgKHRydW5jYXRlIHRvd2FyZHMgMCkuXG4gICBJZiB0aGUgdHJ1bmNhdGVkIGZsb2F0aW5nLXBvaW50IG51bWJlciBpcyBvdXRzaWRlIHRoZSByYW5nZVxuICAgXFxbeyFJbnQ2NC5taW5faW50fSwgeyFJbnQ2NC5tYXhfaW50fVxcXSwgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYW5kXG4gICBhbiB1bnNwZWNpZmllZCwgcGxhdGZvcm0tZGVwZW5kZW50IGludGVnZXIgaXMgcmV0dXJuZWQuICopXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgdG8gYSBmbG9hdGluZy1wb2ludCBudW1iZXIuICopXG5cblxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICAzMi1iaXQgaW50ZWdlciAodHlwZSBbaW50MzJdKS4gVGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzJ9LCBpLmUuIHRoZSB0b3AgMzIgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgKilcblxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBuYXRpdmUgaW50ZWdlciAodHlwZSBbbmF0aXZlaW50XSlcbiAgIHRvIGEgNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYVxuICAgbmF0aXZlIGludGVnZXIuICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0uICBPbiA2NC1iaXQgcGxhdGZvcm1zLFxuICAgdGhlIGNvbnZlcnNpb24gaXMgZXhhY3QuICopXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIHN0cmluZyB0byBhIDY0LWJpdCBpbnRlZ2VyLlxuICAgVGhlIHN0cmluZyBpcyByZWFkIGluIGRlY2ltYWwgKGJ5IGRlZmF1bHQsIG9yIGlmIHRoZSBzdHJpbmdcbiAgIGJlZ2lucyB3aXRoIFswdV0pIG9yIGluIGhleGFkZWNpbWFsLCBvY3RhbCBvciBiaW5hcnkgaWYgdGhlXG4gICBzdHJpbmcgYmVnaW5zIHdpdGggWzB4XSwgWzBvXSBvciBbMGJdIHJlc3BlY3RpdmVseS5cblxuICAgVGhlIFswdV0gcHJlZml4IHJlYWRzIHRoZSBpbnB1dCBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgW1swLCAyKkludDY0Lm1heF9pbnQrMV1dLiAgSWYgdGhlIGlucHV0IGV4Y2VlZHMgeyFJbnQ2NC5tYXhfaW50fVxuICAgaXQgaXMgY29udmVydGVkIHRvIHRoZSBzaWduZWQgaW50ZWdlclxuICAgW0ludDY0Lm1pbl9pbnQgKyBpbnB1dCAtIEludDY0Lm1heF9pbnQgLSAxXS5cblxuICAgVGhlIFtfXSAodW5kZXJzY29yZSkgY2hhcmFjdGVyIGNhbiBhcHBlYXIgYW55d2hlcmUgaW4gdGhlIHN0cmluZ1xuICAgYW5kIGlzIGlnbm9yZWQuXG4gICBAcmFpc2UgRmFpbHVyZSBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGlzIG5vdFxuICAgYSB2YWxpZCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLCBvciBpZiB0aGUgaW50ZWdlciByZXByZXNlbnRlZFxuICAgZXhjZWVkcyB0aGUgcmFuZ2Ugb2YgaW50ZWdlcnMgcmVwcmVzZW50YWJsZSBpbiB0eXBlIFtpbnQ2NF0uICopXG5cbnZhbCBvZl9zdHJpbmdfb3B0OiBzdHJpbmcgLT4gaW50NjQgb3B0aW9uXG4oKiogU2FtZSBhcyBbb2Zfc3RyaW5nXSwgYnV0IHJldHVybiBbTm9uZV0gaW5zdGVhZCBvZiByYWlzaW5nLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCB0b19zdHJpbmcgOiBpbnQ2NCAtPiBzdHJpbmdcbigqKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpdHMgYXJndW1lbnQsIGluIGRlY2ltYWwuICopXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZmxvYXQgYWNjb3JkaW5nXG4gICB0byB0aGUgSUVFRSA3NTQgZmxvYXRpbmctcG9pbnQgJ2RvdWJsZSBmb3JtYXQnIGJpdCBsYXlvdXQuXG4gICBCaXQgNjMgb2YgdGhlIHJlc3VsdCByZXByZXNlbnRzIHRoZSBzaWduIG9mIHRoZSBmbG9hdDtcbiAgIGJpdHMgNjIgdG8gNTIgcmVwcmVzZW50IHRoZSAoYmlhc2VkKSBleHBvbmVudDsgYml0cyA1MSB0byAwXG4gICByZXByZXNlbnQgdGhlIG1hbnRpc3NhLiAqKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIFJldHVybiB0aGUgZmxvYXRpbmctcG9pbnQgbnVtYmVyIHdob3NlIGludGVybmFsIHJlcHJlc2VudGF0aW9uLFxuICAgYWNjb3JkaW5nIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dCxcbiAgIGlzIHRoZSBnaXZlbiBbaW50NjRdLiAqKVxuXG50eXBlIHQgPSBpbnQ2NFxuKCoqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiA2NC1iaXQgaW50ZWdlcnMuICopXG5cbnZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogVGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRlZ2Vycywgd2l0aCB0aGUgc2FtZSBzcGVjaWZpY2F0aW9uIGFzXG4gICAgeyFTdGRsaWIuY29tcGFyZX0uICBBbG9uZyB3aXRoIHRoZSB0eXBlIFt0XSwgdGhpcyBmdW5jdGlvbiBbY29tcGFyZV1cbiAgICBhbGxvd3MgdGhlIG1vZHVsZSBbSW50NjRdIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudCB0byB0aGUgZnVuY3RvcnNcbiAgICB7IVNldC5NYWtlfSBhbmQgeyFNYXAuTWFrZX0uICopXG5cbnZhbCB1bnNpZ25lZF9jb21wYXJlOiB0IC0+IHQgLT4gaW50XG4oKiogU2FtZSBhcyB7IWNvbXBhcmV9LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYXJlIGludGVycHJldGVkIGFzIHtlIHVuc2lnbmVkfVxuICAgIDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbnZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbigqKiBUaGUgZXF1YWwgZnVuY3Rpb24gZm9yIGludDY0cy5cbiAgICBAc2luY2UgNC4wMyAqKVxuXG52YWwgbWluOiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgc21hbGxlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIG1heDogdCAtPiB0IC0+IHRcbigqKiBSZXR1cm4gdGhlIGdyZWF0ZXIgb2YgdGhlIHR3byBhcmd1bWVudHMuXG4gICAgQHNpbmNlIDQuMTNcbiAqKVxuXG52YWwgc2VlZGVkX2hhc2ggOiBpbnQgLT4gdCAtPiBpbnRcbigqKiBBIHNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciA2NC1iaXQgaW50cywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4xICopXG5cbnZhbCBoYXNoIDogdCAtPiBpbnRcbigqKiBBbiB1bnNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciA2NC1iaXQgaW50cywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0YmwuaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudFxuICAgIHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlfS5cblxuICAgIEBzaW5jZSA1LjEgKilcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGF0b21pYyA6IF8gdFxuICB2YWwgY3JlYXRlIDogKCdhIC0+ICdhIFNlcXVlbmNlLnQpIC0+ICdhIHRcbiAgdmFsIHNocmluayA6ICdhIHQgLT4gJ2EgLT4gJ2EgU2VxdWVuY2UudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIC0+ICdhIFNlcXVlbmNlLnRcblxuICBsZXQgYXRvbWljIF8gPSBTZXF1ZW5jZS5lbXB0eVxuICBsZXQgY3JlYXRlID0gRm4uaWRcbiAgbGV0IHNocmluayA9IEZuLmlkXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBtYXAgdCB+ZiB+Zl9pbnZlcnNlID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5tYXAgfmYgKHNocmluayB0IChmX2ludmVyc2UgeCkpKVxubGV0IGZpbHRlciB0IH5mID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5maWx0ZXIgfmYgKHNocmluayB0IHgpKVxuXG5sZXQgZmlsdGVyX21hcCB0IH5mIH5mX2ludmVyc2UgPVxuICBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLmZpbHRlcl9tYXAgfmYgKHNocmluayB0IChmX2ludmVyc2UgeCkpKVxuOztcblxubGV0IG9mX2xhenkgbGF6eV90ID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5vZl9sYXp5IChsYXp5IChzaHJpbmsgKGZvcmNlIGxhenlfdCkgeCkpKVxuXG5sZXQgZml4ZWRfcG9pbnQgb2Zfc2hyaW5rZXIgPVxuICBsZXQgcmVjIGxhenlfdCA9IGxhenkgKG9mX3Nocmlua2VyIChvZl9sYXp5IGxhenlfdCkpIGluXG4gIG9mX2xhenkgbGF6eV90XG47O1xuXG5sZXQgYm90aCBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIChmc3QsIHNuZCkgLT5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgWyBTZXF1ZW5jZS5tYXAgKHNocmluayBmc3RfdCBmc3QpIH5mOihmdW4gZnN0IC0+IGZzdCwgc25kKVxuICAgICAgOyBTZXF1ZW5jZS5tYXAgKHNocmluayBzbmRfdCBzbmQpIH5mOihmdW4gc25kIC0+IGZzdCwgc25kKVxuICAgICAgXSlcbjs7XG5cbmxldCB1bml0ID0gYXRvbWljXG5sZXQgYm9vbCA9IGF0b21pY1xubGV0IGNoYXIgPSBhdG9taWNcbmxldCBpbnQgPSBhdG9taWNcbmxldCBpbnQzMiA9IGF0b21pY1xubGV0IGludDYzID0gYXRvbWljXG5sZXQgaW50NjQgPSBhdG9taWNcbmxldCBuYXRpdmVpbnQgPSBhdG9taWNcbmxldCBmbG9hdCA9IGF0b21pY1xuXG5sZXQgYmlnYXJyYXkxIHNyYyA9XG4gIGxldCBkaW0gPSBCaWdhcnJheS5BcnJheTEuZGltIHNyYyBpblxuICBtYXRjaCBkaW0gd2l0aFxuICB8IDAgLT4gU2VxdWVuY2UuZW1wdHlcbiAgfCBfIC0+XG4gICAgbGV0IGtpbmQgPSBCaWdhcnJheS5BcnJheTEua2luZCBzcmMgaW5cbiAgICBsZXQgbGF5b3V0ID0gQmlnYXJyYXkuQXJyYXkxLmxheW91dCBzcmMgaW5cbiAgICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICAgIFNlcXVlbmNlLmluaXQgZGltIH5mOihmdW4gdG9fc2tpcCAtPlxuICAgICAgbGV0IHRvX3NraXAgPSB0b19za2lwICsgb2Zmc2V0IGluXG4gICAgICBCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5pbml0IGtpbmQgbGF5b3V0IChkaW0gLSAxKSB+ZjooZnVuIGkgLT5cbiAgICAgICAgc3JjLntpZiBpIDwgdG9fc2tpcCB0aGVuIGkgZWxzZSBpICsgMX0pKVxuOztcblxubGV0IGJpZ3N0cmluZyA9IGNyZWF0ZSBiaWdhcnJheTFcbmxldCBmbG9hdDMyX3ZlYyA9IGNyZWF0ZSBiaWdhcnJheTFcbmxldCBmbG9hdDY0X3ZlYyA9IGNyZWF0ZSBiaWdhcnJheTFcblxubGV0IGJpZ2FycmF5MiA9XG4gIGxldCBtb2R1bGUgRGltcyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGRpbTEgOiBpbnRcbiAgICAgIDsgZGltMiA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgIGxldCBjcmVhdGUgYSA9IEJpZ2FycmF5LkFycmF5Mi57IGRpbTEgPSBkaW0xIGE7IGRpbTIgPSBkaW0yIGEgfVxuICBlbmRcbiAgaW5cbiAgbGV0IHNocmluayBmaWVsZCBzcmMgPVxuICAgIGxldCBkaW1zID0gRGltcy5jcmVhdGUgc3JjIGluXG4gICAgbWF0Y2ggRmllbGQuZ2V0IGZpZWxkIGRpbXMgd2l0aFxuICAgIHwgMCAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGtpbmQgPSBCaWdhcnJheS5BcnJheTIua2luZCBzcmMgaW5cbiAgICAgIGxldCBsYXlvdXQgPSBCaWdhcnJheS5BcnJheTIubGF5b3V0IHNyYyBpblxuICAgICAgbGV0IG9mZnNldCA9IEJpZ2FycmF5X2hlbHBlcnMuTGF5b3V0Lm9mZnNldCBsYXlvdXQgaW5cbiAgICAgIGxldCAoeyBkaW0xOyBkaW0yIH0gOiBEaW1zLnQpID0gRmllbGQubWFwIGZpZWxkIGRpbXMgfmY6SW50LnByZWQgaW5cbiAgICAgIFNlcXVlbmNlLmluaXQgKEZpZWxkLmdldCBmaWVsZCBkaW1zKSB+ZjooZnVuIHRvX3NraXAgLT5cbiAgICAgICAgbGV0IHRvX3NraXAgPSB0b19za2lwICsgb2Zmc2V0IGluXG4gICAgICAgIGxldCBza2lwIGkgPSBpZiBpIDwgdG9fc2tpcCB0aGVuIGkgZWxzZSBpICsgMSBpblxuICAgICAgICBCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5pbml0IGtpbmQgbGF5b3V0IGRpbTEgZGltMiB+ZjooZnVuIGRpbTEgZGltMiAtPlxuICAgICAgICAgIGxldCAoeyBkaW0xOyBkaW0yIH0gOiBEaW1zLnQpID0gRmllbGQubWFwIGZpZWxkIHsgZGltMTsgZGltMiB9IH5mOnNraXAgaW5cbiAgICAgICAgICBzcmMue2RpbTEsIGRpbTJ9KSlcbiAgaW5cbiAgZnVuIHNyYyAtPlxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgc2hyaW5rIERpbXMuRmllbGRzLmRpbTEgc3JjOyBzaHJpbmsgRGltcy5GaWVsZHMuZGltMiBzcmMgXVxuOztcblxubGV0IGZsb2F0MzJfbWF0ID0gY3JlYXRlIGJpZ2FycmF5MlxubGV0IGZsb2F0NjRfbWF0ID0gY3JlYXRlIGJpZ2FycmF5MlxuXG5sZXQgb3B0aW9uIHZhbHVlX3QgPVxuICBjcmVhdGUgKGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICBTZXF1ZW5jZS5hcHBlbmRcbiAgICAgICAgKFNlcXVlbmNlLnNpbmdsZXRvbiBOb25lKVxuICAgICAgICAoU2VxdWVuY2UubWFwIH5mOk9wdGlvbi5yZXR1cm4gKHNocmluayB2YWx1ZV90IHZhbHVlKSkpXG47O1xuXG5sZXQgbGlzdCBlbHRfdCA9XG4gIGZpeGVkX3BvaW50IChmdW4gbGlzdF90IC0+XG4gICAgY3JlYXRlIChmdW5jdGlvblxuICAgICAgfCBbXSAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiB0YWlsXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKHNocmluayBlbHRfdCBoZWFkKSB+ZjooZnVuIGhlYWQgLT4gaGVhZCA6OiB0YWlsKVxuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChzaHJpbmsgbGlzdF90IHRhaWwpIH5mOihmdW4gdGFpbCAtPiBoZWFkIDo6IHRhaWwpXG4gICAgICAgICAgXSkpXG47O1xuXG5sZXQgc3RyaW5nID0gbWFwIChsaXN0IGNoYXIpIH5mOlN0cmluZy5vZl9jaGFyX2xpc3QgfmZfaW52ZXJzZTpTdHJpbmcudG9fbGlzdFxubGV0IGJ5dGVzID0gbWFwIHN0cmluZyB+ZjpCeXRlcy5vZl9zdHJpbmcgfmZfaW52ZXJzZTpCeXRlcy50b19zdHJpbmdcbmxldCBhcnJheSB0ID0gbWFwIChsaXN0IHQpIH5mOkFycmF5Lm9mX2xpc3QgfmZfaW52ZXJzZTpBcnJheS50b19saXN0XG5sZXQgcmVmIHQgPSBtYXAgdCB+ZjpSZWYuY3JlYXRlIH5mX2ludmVyc2U6UmVmLiggISApXG5sZXQgbGF6eV90IHQgPSBtYXAgdCB+ZjpMYXp5LmZyb21fdmFsIH5mX2ludmVyc2U6TGF6eS5mb3JjZVxuXG5sZXQgc2V4cCA9XG4gIGZpeGVkX3BvaW50IChmdW4gc2hyaW5rZXIgLT5cbiAgICBjcmVhdGUgKGZ1bmN0aW9uXG4gICAgICB8IFNleHAuQXRvbSBfIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgICB8IFNleHAuTGlzdCBsIC0+XG4gICAgICAgIGxldCBzaHJpbmtfbGlzdCA9XG4gICAgICAgICAgc2hyaW5rIChsaXN0IHNocmlua2VyKSBsIHw+IFNlcXVlbmNlLm1hcCB+ZjooZnVuIGwgLT4gU2V4cC5MaXN0IGwpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzaHJpbmtfdHJlZSA9IFNlcXVlbmNlLm9mX2xpc3QgbCBpblxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIHNocmlua19saXN0OyBzaHJpbmtfdHJlZSBdKSlcbjs7XG5cbmxldCBlaXRoZXIgZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biBlaXRoZXIgLT5cbiAgICBtYXRjaCAoZWl0aGVyIDogXyBFaXRoZXIudCkgd2l0aFxuICAgIHwgRmlyc3QgZnN0IC0+IFNlcXVlbmNlLm1hcCAoc2hyaW5rIGZzdF90IGZzdCkgfmY6RWl0aGVyLmZpcnN0XG4gICAgfCBTZWNvbmQgc25kIC0+IFNlcXVlbmNlLm1hcCAoc2hyaW5rIHNuZF90IHNuZCkgfmY6RWl0aGVyLnNlY29uZClcbjs7XG5cbmxldCByZXN1bHQgb2tfdCBlcnJfdCA9XG4gIG1hcFxuICAgIChlaXRoZXIgb2tfdCBlcnJfdClcbiAgICB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3Qgb2sgLT4gT2sgb2tcbiAgICAgIHwgU2Vjb25kIGVyciAtPiBFcnJvciBlcnIpXG4gICAgfmZfaW52ZXJzZTooZnVuY3Rpb25cbiAgICAgIHwgT2sgb2sgLT4gRmlyc3Qgb2tcbiAgICAgIHwgRXJyb3IgZXJyIC0+IFNlY29uZCBlcnIpXG47O1xuXG5sZXQgbWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfdCBkYXRhX3QgPVxuICBjcmVhdGUgKGZ1biB0cmVlIC0+XG4gICAgbGV0IGFsaXN0ID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19hbGlzdCB0cmVlIGluXG4gICAgbGV0IGRyb3Bfa2V5cyA9XG4gICAgICBTZXF1ZW5jZS5tYXAgKFNlcXVlbmNlLm9mX2xpc3QgYWxpc3QpIH5mOihmdW4gKGssIF8pIC0+XG4gICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUgaylcbiAgICBpblxuICAgIGxldCBzaHJpbmtfa2V5cyA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAoTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICBsZXQgdHJlZSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUga2V5IGluXG4gICAgICAgICAgIFNlcXVlbmNlLmZpbHRlcl9tYXAgKHNocmluayBrZXlfdCBrZXkpIH5mOihmdW4gc21hbGxlcl9rZXkgLT5cbiAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5hZGQgfmNvbXBhcmF0b3IgdHJlZSB+a2V5OnNtYWxsZXJfa2V5IH5kYXRhXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgYE9rIHRyZWUgLT4gU29tZSB0cmVlXG4gICAgICAgICAgICAgfCBgRHVwbGljYXRlIC0+IE5vbmUpKSlcbiAgICBpblxuICAgIGxldCBzaHJpbmtfZGF0YSA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAoTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICBTZXF1ZW5jZS5tYXAgKHNocmluayBkYXRhX3QgZGF0YSkgfmY6KGZ1biBzbWFsbGVyX2RhdGEgLT5cbiAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnNldCB+Y29tcGFyYXRvciB0cmVlIH5rZXkgfmRhdGE6c21hbGxlcl9kYXRhKSkpXG4gICAgaW5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIGRyb3Bfa2V5czsgc2hyaW5rX2tleXM7IHNocmlua19kYXRhIF0pXG47O1xuXG5sZXQgc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfdCA9XG4gIGNyZWF0ZSAoZnVuIHRyZWUgLT5cbiAgICBsZXQgbGlzdCA9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fbGlzdCB0cmVlIGluXG4gICAgbGV0IGRyb3BfZWx0cyA9XG4gICAgICBTZXF1ZW5jZS5tYXAgKFNlcXVlbmNlLm9mX2xpc3QgbGlzdCkgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBlbHQpXG4gICAgaW5cbiAgICBsZXQgc2hyaW5rX2VsdHMgPVxuICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgKExpc3QubWFwIGxpc3QgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgbGV0IHRyZWUgPSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnJlbW92ZSB+Y29tcGFyYXRvciB0cmVlIGVsdCBpblxuICAgICAgICAgICBTZXF1ZW5jZS5maWx0ZXJfbWFwIChzaHJpbmsgZWx0X3QgZWx0KSB+ZjooZnVuIHNtYWxsZXJfZWx0IC0+XG4gICAgICAgICAgICAgbWF0Y2ggU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5tZW0gfmNvbXBhcmF0b3IgdHJlZSBzbWFsbGVyX2VsdCB3aXRoXG4gICAgICAgICAgICAgfCB0cnVlIC0+IE5vbmVcbiAgICAgICAgICAgICB8IGZhbHNlIC0+IFNvbWUgKFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuYWRkIHRyZWUgfmNvbXBhcmF0b3Igc21hbGxlcl9lbHQpKSkpXG4gICAgaW5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIGRyb3BfZWx0czsgc2hyaW5rX2VsdHMgXSlcbjs7XG5cbmxldCBtYXBfdCBrZXlfdCBkYXRhX3QgPVxuICBjcmVhdGUgKGZ1biBtYXBfdCAtPlxuICAgIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgbWFwX3QgaW5cbiAgICBsZXQgdCA9XG4gICAgICBtYXBcbiAgICAgICAgKG1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga2V5X3QgZGF0YV90KVxuICAgICAgICB+ZjooTWFwLlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbiAgICAgICAgfmZfaW52ZXJzZTpNYXAuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4gICAgaW5cbiAgICBzaHJpbmsgdCBtYXBfdClcbjs7XG5cbmxldCBzZXRfdCBlbHRfdCA9XG4gIGNyZWF0ZSAoZnVuIHNldF90IC0+XG4gICAgbGV0IGNvbXBhcmF0b3IgPSBTZXQuY29tcGFyYXRvciBzZXRfdCBpblxuICAgIGxldCB0ID1cbiAgICAgIG1hcFxuICAgICAgICAoc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfdClcbiAgICAgICAgfmY6KFNldC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3IpXG4gICAgICAgIH5mX2ludmVyc2U6U2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuICAgIGluXG4gICAgc2hyaW5rIHQgc2V0X3QpXG47O1xuIiwib3BlbiEgQmFzZVxuaW5jbHVkZSBUZXN0X2ludGZcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBtb2R1bGUgU2VlZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5vbmRldGVybWluaXN0aWNcbiAgICAgIHwgRGV0ZXJtaW5pc3RpYyBvZiBzdHJpbmdcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBtb2R1bGUgUG90ZW50aWFsbHlfaW5maW5pdGVfc2VxdWVuY2UgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBTZXF1ZW5jZS50XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IHNlcXVlbmNlID1cbiAgICAgIGxldCBwcmVmaXgsIHN1ZmZpeCA9IFNlcXVlbmNlLnNwbGl0X24gc2VxdWVuY2UgMTAwIGluXG4gICAgICBsZXQgcHJlZml4ID0gTGlzdC5tYXAgcHJlZml4IH5mOnNleHBfb2ZfZWx0IGluXG4gICAgICBsZXQgc3VmZml4ID1cbiAgICAgICAgbWF0Y2ggU2VxdWVuY2UuaXNfZW1wdHkgc3VmZml4IHdpdGhcbiAgICAgICAgfCB0cnVlIC0+IFtdXG4gICAgICAgIHwgZmFsc2UgLT4gWyBbJW1lc3NhZ2UgXCIuLi5cIl0gXVxuICAgICAgaW5cbiAgICAgIFNleHAuTGlzdCAocHJlZml4IEAgc3VmZml4KVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBzZWVkIDogU2VlZC50XG4gICAgOyB0ZXN0X2NvdW50IDogaW50XG4gICAgOyBzaHJpbmtfY291bnQgOiBpbnRcbiAgICA7IHNpemVzIDogaW50IFBvdGVudGlhbGx5X2luZmluaXRlX3NlcXVlbmNlLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cbmVuZFxuXG5sZXQgZGVmYXVsdF9jb25maWcgOiBDb25maWcudCA9XG4gIHsgc2VlZCA9IERldGVybWluaXN0aWMgXCJhbiBhcmJpdHJhcnkgYnV0IGRldGVybWluaXN0aWMgc3RyaW5nXCJcbiAgOyB0ZXN0X2NvdW50ID1cbiAgICAgICgqIFtTcGxpdHRhYmxlX3JhbmRvbV0gaXMgYmFzZWQgb24gNjQtYml0IGFyaXRobWV0aWMsIGFuZCBzbyB0ZXN0cyBydW4gbXVjaCBzbG93ZXJcbiAgICAgICAgIG9uIDMyLWJpdCB0YXJnZXRzLiBXZSBydW4gYW4gb3JkZXIgb2YgbWFnbml0dWRlIGZld2VyIHRyaWFscyBzbyBhcyBub3QgdG9cbiAgICAgICAgIGNvbXBsZXRlbHkgYm9nIGRvd24gY29udGludW91cyBpbnRlZ3JhdGlvbiBzeXN0ZW1zLiAqKVxuICAgICAgKG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgICAgIHwgVzY0IC0+IDEwXzAwMFxuICAgICAgIHwgVzMyIC0+IDFfMDAwKVxuICA7IHNocmlua19jb3VudCA9IDEwXzAwMFxuICA7IHNpemVzID0gU2VxdWVuY2UuY3ljbGVfbGlzdF9leG4gKExpc3QucmFuZ2UgMCB+c3RhcnQ6YGluY2x1c2l2ZSAzMCB+c3RvcDpgaW5jbHVzaXZlKVxuICB9XG47O1xuXG5sZXQgbGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG5sZXQgaW5pdGlhbF9yYW5kb21fc3RhdGUgfmNvbmZpZyA9XG4gIG1hdGNoIENvbmZpZy5zZWVkIGNvbmZpZyB3aXRoXG4gIHwgTm9uZGV0ZXJtaW5pc3RpYyAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5jcmVhdGUgKGZvcmNlIGxhenlfbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSlcbiAgfCBEZXRlcm1pbmlzdGljIHN0cmluZyAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKFN0cmluZy5oYXNoIHN0cmluZylcbjs7XG5cbmxldCBvbmVfc2l6ZV9wZXJfdGVzdCB+KGNvbmZpZyA6IENvbmZpZy50KSA9XG4gIFNlcXVlbmNlLnVuZm9sZCB+aW5pdDooY29uZmlnLnNpemVzLCAwKSB+ZjooZnVuIChzaXplcywgbnVtYmVyX29mX3NpemVfdmFsdWVzKSAtPlxuICAgIG1hdGNoIG51bWJlcl9vZl9zaXplX3ZhbHVlcyA+PSBjb25maWcudGVzdF9jb3VudCB3aXRoXG4gICAgfCB0cnVlIC0+IE5vbmVcbiAgICB8IGZhbHNlIC0+XG4gICAgICAobWF0Y2ggU2VxdWVuY2UubmV4dCBzaXplcyB3aXRoXG4gICAgICAgfCBTb21lIChzaXplLCByZW1haW5pbmdfc2l6ZXMpIC0+XG4gICAgICAgICBTb21lIChzaXplLCAocmVtYWluaW5nX3NpemVzLCBudW1iZXJfb2Zfc2l6ZV92YWx1ZXMgKyAxKSlcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgXCJCYXNlX3F1aWNrY2hlY2suVGVzdC5ydW46IGluc3VmZmljaWVudCBzaXplIHZhbHVlcyBmb3IgdGVzdCBjb3VudFwiXG4gICAgICAgICAgICAgICB+dGVzdF9jb3VudDooY29uZmlnLnRlc3RfY291bnQgOiBpbnQpXG4gICAgICAgICAgICAgICAobnVtYmVyX29mX3NpemVfdmFsdWVzIDogaW50KV0pKVxuOztcblxubGV0IHNocmlua19lcnJvciB+c2hyaW5rZXIgfmNvbmZpZyB+ZiBpbnB1dCBlcnJvciA9XG4gIGxldCByZWMgbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGlucHV0IGVycm9yID1cbiAgICBtYXRjaCBzaHJpbmtfY291bnQgd2l0aFxuICAgIHwgMCAtPiBpbnB1dCwgZXJyb3JcbiAgICB8IF8gLT5cbiAgICAgIGxldCBzaHJpbmtfY291bnQgPSBzaHJpbmtfY291bnQgLSAxIGluXG4gICAgICAobWF0Y2ggU2VxdWVuY2UubmV4dCBhbHRlcm5hdGVzIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gaW5wdXQsIGVycm9yXG4gICAgICAgfCBTb21lIChhbHRlcm5hdGUsIGFsdGVybmF0ZXMpIC0+XG4gICAgICAgICAobWF0Y2ggZiBhbHRlcm5hdGUgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGlucHV0IGVycm9yXG4gICAgICAgICAgfCBFcnJvciBlcnJvciAtPlxuICAgICAgICAgICAgbGV0IGFsdGVybmF0ZXMgPSBTaHJpbmtlci5zaHJpbmsgc2hyaW5rZXIgYWx0ZXJuYXRlIGluXG4gICAgICAgICAgICBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgYWx0ZXJuYXRlIGVycm9yKSlcbiAgaW5cbiAgbGV0IHNocmlua19jb3VudCA9IENvbmZpZy5zaHJpbmtfY291bnQgY29uZmlnIGluXG4gIGxldCBhbHRlcm5hdGVzID0gU2hyaW5rZXIuc2hyaW5rIHNocmlua2VyIGlucHV0IGluXG4gIGxvb3AgfnNocmlua19jb3VudCB+YWx0ZXJuYXRlcyBpbnB1dCBlcnJvclxuOztcblxubGV0IGlucHV0X3NlcXVlbmNlIH5jb25maWcgfmV4YW1wbGVzIH5nZW5lcmF0b3IgPVxuICBsZXQgcmFuZG9tID0gaW5pdGlhbF9yYW5kb21fc3RhdGUgfmNvbmZpZyBpblxuICBTZXF1ZW5jZS5hcHBlbmRcbiAgICAoU2VxdWVuY2Uub2ZfbGlzdCBleGFtcGxlcylcbiAgICAob25lX3NpemVfcGVyX3Rlc3QgfmNvbmZpZ1xuICAgICB8PiBTZXF1ZW5jZS5tYXAgfmY6KGZ1biBzaXplIC0+IEdlbmVyYXRvci5nZW5lcmF0ZSBnZW5lcmF0b3IgfnNpemUgfnJhbmRvbSkpXG47O1xuXG5sZXQgd2l0aF9zYW1wbGUgfmYgPyhjb25maWcgPSBkZWZhdWx0X2NvbmZpZykgPyhleGFtcGxlcyA9IFtdKSBnZW5lcmF0b3IgPVxuICBsZXQgc2VxdWVuY2UgPSBpbnB1dF9zZXF1ZW5jZSB+Y29uZmlnIH5leGFtcGxlcyB+Z2VuZXJhdG9yIGluXG4gIGYgc2VxdWVuY2Vcbjs7XG5cbmxldCByZXN1bHQgKHR5cGUgYSkgfmYgPyhjb25maWcgPSBkZWZhdWx0X2NvbmZpZykgPyhleGFtcGxlcyA9IFtdKSBtID1cbiAgbGV0IChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9IG0gaW5cbiAgd2l0aF9zYW1wbGUgTS5xdWlja2NoZWNrX2dlbmVyYXRvciB+Y29uZmlnIH5leGFtcGxlcyB+ZjooZnVuIHNlcXVlbmNlIC0+XG4gICAgbWF0Y2hcbiAgICAgIFNlcXVlbmNlLmZvbGRfcmVzdWx0IHNlcXVlbmNlIH5pbml0OigpIH5mOihmdW4gKCkgaW5wdXQgLT5cbiAgICAgICAgbWF0Y2ggZiBpbnB1dCB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gT2sgKClcbiAgICAgICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciAoaW5wdXQsIGVycm9yKSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiBPayAoKVxuICAgIHwgRXJyb3IgKGlucHV0LCBlcnJvcikgLT5cbiAgICAgIGxldCBzaHJpbmtlciA9IE0ucXVpY2tjaGVja19zaHJpbmtlciBpblxuICAgICAgbGV0IGlucHV0LCBlcnJvciA9IHNocmlua19lcnJvciB+c2hyaW5rZXIgfmNvbmZpZyB+ZiBpbnB1dCBlcnJvciBpblxuICAgICAgRXJyb3IgKGlucHV0LCBlcnJvcikpXG47O1xuXG5sZXQgcnVuICh0eXBlIGEpIH5mID9jb25maWcgP2V4YW1wbGVzIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gIGxldCBmIHggPVxuICAgIE9yX2Vycm9yLnRyeV93aXRoX2pvaW4gfmJhY2t0cmFjZTooQmFja3RyYWNlLkV4bi5hbV9yZWNvcmRpbmcgKCkpIChmdW4gKCkgLT4gZiB4KVxuICBpblxuICBtYXRjaCByZXN1bHQgfmYgP2NvbmZpZyA/ZXhhbXBsZXMgKG1vZHVsZSBNKSB3aXRoXG4gIHwgT2sgKCkgLT4gT2sgKClcbiAgfCBFcnJvciAoaW5wdXQsIGVycm9yKSAtPlxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5UZXN0LnJ1bjogdGVzdCBmYWlsZWRcIiAoaW5wdXQgOiBNLnQpIChlcnJvciA6IEVycm9yLnQpXVxuOztcblxubGV0IHdpdGhfc2FtcGxlX2V4biB+ZiA/Y29uZmlnID9leGFtcGxlcyBnZW5lcmF0b3IgPVxuICBsZXQgZiB4ID0gT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBmIHgpIGluXG4gIHdpdGhfc2FtcGxlIH5mID9jb25maWcgP2V4YW1wbGVzIGdlbmVyYXRvciB8PiBPcl9lcnJvci5va19leG5cbjs7XG5cbmxldCBydW5fZXhuIH5mID9jb25maWcgP2V4YW1wbGVzIHRlc3RhYmxlID1cbiAgbGV0IGYgeCA9XG4gICAgT3JfZXJyb3IudHJ5X3dpdGggfmJhY2t0cmFjZTooQmFja3RyYWNlLkV4bi5hbV9yZWNvcmRpbmcgKCkpIChmdW4gKCkgLT4gZiB4KVxuICBpblxuICBydW4gfmYgP2NvbmZpZyA/ZXhhbXBsZXMgdGVzdGFibGUgfD4gT3JfZXJyb3Iub2tfZXhuXG47O1xuIiwib3BlbiEgQmFzZVxuaW5jbHVkZSBPYnNlcnZlcjBcblxubGV0IHVubWFwIHQgfmYgPSBjcmVhdGUgKGZ1biB4IH5zaXplIH5oYXNoIC0+IG9ic2VydmUgdCAoZiB4KSB+c2l6ZSB+aGFzaClcbmxldCBvZl9oYXNoX2ZvbGQgZiA9IGNyZWF0ZSAoZnVuIHggfnNpemU6XyB+aGFzaCAtPiBmIGhhc2ggeClcbmxldCBvZl9sYXp5IGxhenlfdCA9IGNyZWF0ZSAoZnVuIHggfnNpemUgfmhhc2ggLT4gb2JzZXJ2ZSAoZm9yY2UgbGF6eV90KSB4IH5zaXplIH5oYXNoKVxuXG5sZXQgZml4ZWRfcG9pbnQgd3JhcCA9XG4gIGxldCByZWMgbGF6eV90ID0gbGF6eSAod3JhcCAob2ZfbGF6eSBsYXp5X3QpKSBpblxuICBvZl9sYXp5IGxhenlfdFxuOztcblxubGV0IHVuaXQgPSBvcGFxdWVcbmxldCBib29sID0gb2ZfaGFzaF9mb2xkIEJvb2wuaGFzaF9mb2xkX3RcbmxldCBjaGFyID0gb2ZfaGFzaF9mb2xkIENoYXIuaGFzaF9mb2xkX3RcbmxldCBpbnQgPSBvZl9oYXNoX2ZvbGQgSW50Lmhhc2hfZm9sZF90XG5sZXQgaW50MzIgPSBvZl9oYXNoX2ZvbGQgSW50MzIuaGFzaF9mb2xkX3RcbmxldCBpbnQ2MyA9IG9mX2hhc2hfZm9sZCBJbnQ2My5oYXNoX2ZvbGRfdFxubGV0IGludDY0ID0gb2ZfaGFzaF9mb2xkIEludDY0Lmhhc2hfZm9sZF90XG5sZXQgbmF0aXZlaW50ID0gb2ZfaGFzaF9mb2xkIE5hdGl2ZWludC5oYXNoX2ZvbGRfdFxubGV0IGZsb2F0ID0gb2ZfaGFzaF9mb2xkIEZsb2F0Lmhhc2hfZm9sZF90XG5sZXQgc3RyaW5nID0gb2ZfaGFzaF9mb2xkIFN0cmluZy5oYXNoX2ZvbGRfdFxubGV0IHNleHAgPSBvZl9oYXNoX2ZvbGQgU2V4cC5oYXNoX2ZvbGRfdFxubGV0IGJpZ3N0cmluZyA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaGFzaF9mb2xkIGhhc2hfZm9sZF9jaGFyKVxubGV0IGZsb2F0MzJfdmVjID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0NjRfdmVjID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0MzJfbWF0ID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0NjRfbWF0ID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGJ5dGVzID0gdW5tYXAgc3RyaW5nIH5mOkJ5dGVzLnRvX3N0cmluZ1xuXG5sZXQgZWl0aGVyIGZzdF90IHNuZF90ID1cbiAgY3JlYXRlIChmdW4gZWl0aGVyIH5zaXplIH5oYXNoIC0+XG4gICAgbWF0Y2ggKGVpdGhlciA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICB8IEZpcnN0IGZzdCAtPiBvYnNlcnZlIGZzdF90IGZzdCB+c2l6ZSB+aGFzaDooaGFzaF9mb2xkX2ludCBoYXNoIDEpXG4gICAgfCBTZWNvbmQgc25kIC0+IG9ic2VydmUgc25kX3Qgc25kIH5zaXplIH5oYXNoOihoYXNoX2ZvbGRfaW50IGhhc2ggMikpXG47O1xuXG5sZXQgcmVzdWx0IG9rX3QgZXJyX3QgPVxuICB1bm1hcCAoZWl0aGVyIG9rX3QgZXJyX3QpIH5mOihmdW5jdGlvblxuICAgIHwgT2sgb2sgLT4gRmlyc3Qgb2tcbiAgICB8IEVycm9yIGVyciAtPiBTZWNvbmQgZXJyKVxuOztcblxubGV0IGJvdGggZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biAoZnN0LCBzbmQpIH5zaXplIH5oYXNoIC0+XG4gICAgbGV0IGhhc2ggPSBvYnNlcnZlIGZzdF90IGZzdCB+c2l6ZSB+aGFzaCBpblxuICAgIGxldCBoYXNoID0gb2JzZXJ2ZSBzbmRfdCBzbmQgfnNpemUgfmhhc2ggaW5cbiAgICBoYXNoKVxuOztcblxubGV0IG9wdGlvbiB2YWx1ZV90ID1cbiAgdW5tYXAgKGVpdGhlciBvcGFxdWUgdmFsdWVfdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IEZpcnN0ICgpXG4gICAgfCBTb21lIHZhbHVlIC0+IFNlY29uZCB2YWx1ZSlcbjs7XG5cbmxldCBsaXN0IGVsdF90ID1cbiAgY3JlYXRlIChmdW4gbGlzdCB+c2l6ZSB+aGFzaCAtPlxuICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKEhhc2guZ2V0X2hhc2hfdmFsdWUgaGFzaCkgaW5cbiAgICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGggbGlzdCBpblxuICAgIGxldCBzaXplcyA9XG4gICAgICBHZW5lcmF0b3Iuc2l6ZXMgfm1pbl9sZW5ndGg6bGVuZ3RoIH5tYXhfbGVuZ3RoOmxlbmd0aCAoKVxuICAgICAgfD4gR2VuZXJhdG9yLmdlbmVyYXRlIH5zaXplIH5yYW5kb21cbiAgICBpblxuICAgIExpc3QuZm9sZDJfZXhuIGxpc3Qgc2l6ZXMgfmluaXQ6KGhhc2hfZm9sZF9pbnQgaGFzaCAwKSB+ZjooZnVuIGhhc2ggZWx0IHNpemUgLT5cbiAgICAgIG9ic2VydmUgZWx0X3QgZWx0IH5zaXplIH5oYXNoOihoYXNoX2ZvbGRfaW50IGhhc2ggMSkpKVxuOztcblxubGV0IGFycmF5IHQgPSB1bm1hcCAobGlzdCB0KSB+ZjpBcnJheS50b19saXN0XG5sZXQgcmVmIHQgPSB1bm1hcCB0IH5mOlJlZi4oICEgKVxubGV0IGxhenlfdCB0ID0gdW5tYXAgdCB+ZjpMYXp5LmZvcmNlXG5cbmxldCBmbiBkb20gcm5nID1cbiAgY3JlYXRlIChmdW4gZiB+c2l6ZSB+aGFzaCAtPlxuICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKEhhc2guZ2V0X2hhc2hfdmFsdWUgaGFzaCkgaW5cbiAgICBsZXQgc2l6ZXMgPVxuICAgICAgKCogRW1waXJpY2FsbHksIGRvdWJsaW5nIHRoZSBzaXplIHdoZW4gZ2VuZXJhdGluZyB0aGUgbGlzdCBvZiBpbnB1dHMgZ2l2ZXMgdXMgbXVjaFxuICAgICAgICAgYmV0dGVyIGNvdmVyYWdlIG9mIHRoZSBzcGFjZSBvZiBmdW5jdGlvbnMuICopXG4gICAgICBHZW5lcmF0b3IuZ2VuZXJhdGUgKEdlbmVyYXRvci5zaXplcyAoKSkgfnNpemU6KHNpemUgKiAyKSB+cmFuZG9tXG4gICAgaW5cbiAgICBMaXN0LmZvbGQgc2l6ZXMgfmluaXQ6aGFzaCB+ZjooZnVuIGhhc2ggc2l6ZSAtPlxuICAgICAgbGV0IHggPSBHZW5lcmF0b3IuZ2VuZXJhdGUgZG9tIH5zaXplIH5yYW5kb20gaW5cbiAgICAgIG9ic2VydmUgcm5nIChmIHgpIH5zaXplIH5oYXNoKSlcbjs7XG5cbmxldCBtYXBfdHJlZSBrZXlfb2JzIGRhdGFfb2JzID1cbiAgdW5tYXAgKGxpc3QgKGJvdGgga2V5X29icyBkYXRhX29icykpIH5mOk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fYWxpc3Rcbjs7XG5cbmxldCBzZXRfdHJlZSBlbHRfb2JzID0gdW5tYXAgKGxpc3QgZWx0X29icykgfmY6U2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19saXN0XG5cbmxldCBtYXBfdCBrZXlfb2JzIGRhdGFfb2JzID1cbiAgdW5tYXAgKG1hcF90cmVlIGtleV9vYnMgZGF0YV9vYnMpIH5mOk1hcC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbjs7XG5cbmxldCBzZXRfdCBlbHRfb2JzID0gdW5tYXAgKHNldF90cmVlIGVsdF9vYnMpIH5mOlNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiIsIm1vZHVsZSBHZW5lcmF0b3IgPSBHZW5lcmF0b3Jcbm1vZHVsZSBPYnNlcnZlciA9IE9ic2VydmVyXG5tb2R1bGUgU2hyaW5rZXIgPSBTaHJpbmtlclxubW9kdWxlIFRlc3QgPSBUZXN0XG5tb2R1bGUgRXhwb3J0ID0gRXhwb3J0XG5pbmNsdWRlIEV4cG9ydFxuXG4oKiovKiopXG5cbigqXyBUaGlzIG1vZHVsZSBpcyBleHBvc2VkIG9ubHkgdG8gbWFrZSBvY2FtbGRvYyBvdXRwdXQgbW9yZSByZWFkYWJsZS4gKilcbm1vZHVsZSBXaXRoX2Jhc2ljX3R5cGVzID0gV2l0aF9iYXNpY190eXBlc1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQmlnYXJyYXlfaGVscGVycyA9IEJpZ2FycmF5X2hlbHBlcnNcbmVuZFxuIiwib3BlbiEgQmFzZVxuaW5jbHVkZSBVaV9lZmZlY3RfaW50ZlxuXG50eXBlICdhIHQgPSAuLlxudHlwZSAnYSB0ICs9IElnbm9yZSA6IHVuaXQgdCB8IE1hbnkgOiB1bml0IHQgbGlzdCAtPiB1bml0IHRcblxuKCogV2UgdXNlIHRoaXMgdGFibGUgZm9yIGRpc3BhdGNoaW5nIHRvIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyIGluIGFuIGVmZmljaWVudCB3YXkuICAqKVxudHlwZSBoaWRkZW4gPSBUIDogKCdhIHQgKiAoJ2EgLT4gdW5pdCkpIC0+IGhpZGRlblxuXG5sZXQgaGFuZGxlcnMgOiAoaGlkZGVuIC0+IHVuaXQpIEhhc2h0YmwuTShJbnQpLnQgPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIEludCkgfnNpemU6OFxuXG5tb2R1bGUgRGVmaW5lIChIYW5kbGVyIDogSGFuZGxlcikgOlxuICBTIHdpdGggdHlwZSBhY3Rpb24gOj0gSGFuZGxlci5BY3Rpb24udCBhbmQgdHlwZSAnYSB0IDo9ICdhIHQgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgKz0gQyA6IEhhbmRsZXIuQWN0aW9uLnQgLT4gdW5pdCB0XG5cbiAgbGV0IGtleSA9IFN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIENdXG5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLmFkZF9leG4gaGFuZGxlcnMgfmtleSB+ZGF0YTooZnVuIGlucCAtPlxuICAgICAgbWF0Y2ggaW5wIHdpdGhcbiAgICAgIHwgVCAoQyB2YWx1ZSwgY2FsbGJhY2spIC0+XG4gICAgICAgIEhhbmRsZXIuaGFuZGxlIHZhbHVlO1xuICAgICAgICBjYWxsYmFjayAoKVxuICAgICAgfCBfIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiVW5yZWNvZ25pemVkIHZhcmlhbnRcIl0pXG4gIDs7XG5cbiAgbGV0IGluamVjdCB2ID0gQyB2XG5lbmRcblxubW9kdWxlIERlZmluZTEgKEhhbmRsZXIgOiBIYW5kbGVyMSkgOlxuICBTMSB3aXRoIHR5cGUgJ2EgYWN0aW9uIDo9ICdhIEhhbmRsZXIuQWN0aW9uLnQgYW5kIHR5cGUgJ2EgdCA6PSAnYSB0ID0gc3RydWN0XG4gIHR5cGUgXyB0ICs9IEMgOiAnYSBIYW5kbGVyLkFjdGlvbi50IC0+ICdhIHRcblxuICBsZXQga2V5ID0gU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgQ11cblxuICBsZXQgKCkgPVxuICAgIEhhc2h0YmwuYWRkX2V4biBoYW5kbGVycyB+a2V5IH5kYXRhOihmdW4gaW5wIC0+XG4gICAgICBtYXRjaCBpbnAgd2l0aFxuICAgICAgfCBUIChDIHZhbHVlLCBjYWxsYmFjaykgLT5cbiAgICAgICAgbGV0IGNhbGxlZCA9IHJlZiBmYWxzZSBpblxuICAgICAgICBsZXQgY2FsbGJhY2sgYSA9XG4gICAgICAgICAgaWYgIWNhbGxlZFxuICAgICAgICAgIHRoZW4gZmFpbHdpdGggXCJvbl9yZXNwb25zZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMhXCJcbiAgICAgICAgICBlbHNlIGNhbGxlZCA6PSB0cnVlO1xuICAgICAgICAgIGNhbGxiYWNrIGFcbiAgICAgICAgaW5cbiAgICAgICAgSGFuZGxlci5oYW5kbGUgdmFsdWUgfm9uX3Jlc3BvbnNlOmNhbGxiYWNrXG4gICAgICB8IF8gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJVbnJlY29nbml6ZWQgdmFyaWFudFwiXSlcbiAgOztcblxuICBsZXQgaW5qZWN0IHYgPSBDIHZcbmVuZFxuXG5sZXQgZ2V0X2tleSB0ID0gU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuKGlkIChvZl92YWwgdCkpXG5cbmxldCBoYW5kbGVfcmVnaXN0ZXJlZF9ldmVudCAoVCAodCwgY2IpKSA9XG4gIEhhc2h0YmwuZmluZF9leG4gaGFuZGxlcnMgKGdldF9rZXkgdCkgKFQgKHQsIGNiKSlcbjs7XG5cbm1vZHVsZSBQcmludF9zID0gRGVmaW5lIChzdHJ1Y3RcbiAgICBtb2R1bGUgQWN0aW9uID0gU2V4cFxuXG4gICAgbGV0IGhhbmRsZSBzID0gU3RkaW8ucHJpbnRfcyBzXG4gIGVuZClcblxubGV0IHByaW50X3MgPSBQcmludF9zLmluamVjdFxuXG4oKiBFZmZlY3RmdWwgdGhpbmdzICopXG50eXBlICdhIHQgKz1cbiAgfCBSZXR1cm4gOiAnYSAtPiAnYSB0XG4gIHwgTGF6eSA6ICdhIHQgTGF6eS50IC0+ICdhIHRcbiAgfCBCaW5kIDpcbiAgICAgIHsgdCA6ICdhIHRcbiAgICAgIDsgZiA6ICdhIC0+ICdiIHRcbiAgICAgIH1cbiAgICAgIC0+ICdiIHRcbiAgfCBNYXAgOlxuICAgICAgeyB0IDogJ2EgdFxuICAgICAgOyBmIDogJ2EgLT4gJ2JcbiAgICAgIH1cbiAgICAgIC0+ICdiIHRcbiAgfCBOZXZlciA6ICdiIHRcbiAgfCBGdW4gOiAoY2FsbGJhY2s6KCdhIC0+IHVuaXQpIC0+IHVuaXQpIC0+ICdhIHRcblxubGV0IHJldHVybiBhID0gUmV0dXJuIGFcbmxldCBiaW5kICh0eXBlIGEpICh0IDogYSB0KSB+ZiA9IEJpbmQgeyB0OyBmIH1cbmxldCBtYXAgKHR5cGUgYSBiKSAodCA6IGEgdCkgfmYgOiBiIHQgPSBNYXAgeyB0OyBmIH1cbmxldCBuZXZlciA9IE5ldmVyXG5sZXQgb2ZfZnVuIH5mID0gRnVuIGZcbmxldCBsYXp5XyBhID0gTGF6eSBhXG5cbmluY2x1ZGUgQmFzZS5Nb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmxldCByZWMgZXZhbCA6IHR5cGUgYS4gYSB0IC0+IGNhbGxiYWNrOihhIC0+IHVuaXQpIC0+IHVuaXQgPVxuICBmdW4gdCB+Y2FsbGJhY2sgLT5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRnVuIGYgLT4gZiB+Y2FsbGJhY2tcbiAgfCBJZ25vcmUgLT4gY2FsbGJhY2sgKClcbiAgfCBSZXR1cm4gYSAtPiBjYWxsYmFjayBhXG4gIHwgTGF6eSAobGF6eSB0KSAtPiBldmFsIHQgfmNhbGxiYWNrXG4gIHwgTWFueSBsIC0+XG4gICAgTGlzdC5pdGVyIGwgfmY6KGV2YWwgfmNhbGxiYWNrOmlnbm9yZSk7XG4gICAgY2FsbGJhY2sgKClcbiAgfCBCaW5kIHsgdDsgZiB9IC0+IGV2YWwgdCB+Y2FsbGJhY2s6KGZ1biBhIC0+IGV2YWwgKGYgYSkgfmNhbGxiYWNrKVxuICB8IE1hcCB7IHQ7IGYgfSAtPiBldmFsIHQgfmNhbGxiYWNrOihmdW4gYSAtPiBjYWxsYmFjayAoZiBhKSlcbiAgfCBOZXZlciAtPiAoKVxuICB8IHQgLT4gaGFuZGxlX3JlZ2lzdGVyZWRfZXZlbnQgKFQgKHQsIGNhbGxiYWNrKSlcbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGhhbmRsZSA9IGV2YWwgfmNhbGxiYWNrOmlnbm9yZVxuXG4gIHR5cGUgaGlkZSA9IGhpZGRlbiA9IFQgOiAoJ2EgdCAqICgnYSAtPiB1bml0KSkgLT4gaGlkZVxuXG4gIGxldCBoYW5kbGVycyA9IGhhbmRsZXJzXG4gIGxldCBvZl9mdW4gPSBvZl9mdW5cbmVuZFxuXG5tb2R1bGUgQWR2YW5jZWQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN5bmNfZnVuX2FyZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ3IgdCA9IFQgOiAnYSAqICgnYSAtPiAncikgLT4gJ3IgdFxuICAgIGVuZFxuXG4gICAgbGV0IGhhbmRsZSAoQWN0aW9uLlQgKGEsIGYpKSB+b25fcmVzcG9uc2UgPSBvbl9yZXNwb25zZSAoZiBhKVxuICBlbmRcblxuICBtb2R1bGUgU3luY19mdW4gPSBEZWZpbmUxIChTeW5jX2Z1bl9hcmcpXG5cbiAgbGV0IG9mX3N5bmNfZnVuIGYgYSA9IFN5bmNfZnVuLmluamVjdCAoVCAoYSwgZikpXG5cbiAgbW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgQ2FsbGJhY2sgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPVxuICAgICAgICB7IHJlcXVlc3QgOiAnYVxuICAgICAgICA7IG9uX3Jlc3BvbnNlIDogJ2IgLT4gdW5pdCB0XG4gICAgICAgIH1cblxuICAgICAgbGV0IG1ha2UgfnJlcXVlc3Qgfm9uX3Jlc3BvbnNlID0geyByZXF1ZXN0OyBvbl9yZXNwb25zZSB9XG4gICAgICBsZXQgcmVxdWVzdCB7IHJlcXVlc3Q7IF8gfSA9IHJlcXVlc3RcbiAgICAgIGxldCByZXNwb25kX3RvIHsgb25fcmVzcG9uc2U7IF8gfSByZXNwb25zZSA9IG9uX3Jlc3BvbnNlIHJlc3BvbnNlXG4gICAgZW5kXG5cbiAgICBsZXQgbWFrZSA6IHJlcXVlc3Q6J2EgLT4gZXZhbHVhdG9yOigoJ2EsICdiKSBDYWxsYmFjay50IC0+IHVuaXQgdCkgLT4gJ2IgdCA9XG4gICAgICBmdW4gfnJlcXVlc3QgfmV2YWx1YXRvciAtPlxuICAgICAgRXhwZXJ0Lm9mX2Z1biB+ZjooZnVuIH5jYWxsYmFjayAtPlxuICAgICAgICBsZXQgY2FsbGJhY2sgPVxuICAgICAgICAgIENhbGxiYWNrLm1ha2UgfnJlcXVlc3Qgfm9uX3Jlc3BvbnNlOihmdW4gcmVzcG9uc2UgLT5cbiAgICAgICAgICAgIGNhbGxiYWNrIHJlc3BvbnNlO1xuICAgICAgICAgICAgSWdub3JlKVxuICAgICAgICBpblxuICAgICAgICBFeHBlcnQuaGFuZGxlIChldmFsdWF0b3IgY2FsbGJhY2spKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdmFyID0gc3RydWN0XG4gICAgICB0eXBlICdhIHN0YXRlID1cbiAgICAgICAgfCBFbXB0eSBvZiB7IG11dGFibGUgaGFuZGxlcnMgOiAoJ2EgLT4gdW5pdCkgbGlzdCB9XG4gICAgICAgIHwgRnVsbCBvZiAnYVxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBzdGF0ZSByZWZcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9IHJlZiAoRW1wdHkgeyBoYW5kbGVycyA9IFtdIH0pXG5cbiAgICAgIGxldCB1cG9uIHQgaGFuZGxlciA9XG4gICAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICAgfCBFbXB0eSB0IC0+IHQuaGFuZGxlcnMgPC0gaGFuZGxlciA6OiB0LmhhbmRsZXJzXG4gICAgICAgIHwgRnVsbCB4IC0+IGhhbmRsZXIgeFxuICAgICAgOztcblxuICAgICAgbGV0IGZpbGxfaWZfZW1wdHkgdCB4ID1cbiAgICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgICB8IEZ1bGwgXyAtPiAoKVxuICAgICAgICB8IEVtcHR5IHsgaGFuZGxlcnMgfSAtPlxuICAgICAgICAgIExpc3QuaXRlciBoYW5kbGVycyB+ZjooZnVuIGhhbmRsZXIgLT4gaGFuZGxlciB4KTtcbiAgICAgICAgICB0IDo9IEZ1bGwgeFxuICAgICAgOztcblxuICAgICAgbGV0IHBlZWsgdCA9XG4gICAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICAgfCBFbXB0eSBfIC0+IE5vbmVcbiAgICAgICAgfCBGdWxsIHggLT4gU29tZSB4XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN2YXJfZnVuX2FyZyA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICAgICAgICB0eXBlICdyIHQgPSBUIDogJ2EgKiAoJ2EgLT4gJ3IgU3Zhci50KSAtPiAnciB0XG4gICAgICBlbmRcblxuICAgICAgbGV0IGhhbmRsZSAoQWN0aW9uLlQgKGEsIGYpKSB+b25fcmVzcG9uc2UgPSBTdmFyLnVwb24gKGYgYSkgb25fcmVzcG9uc2VcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdmFyX2Z1biA9IERlZmluZTEgKFN2YXJfZnVuX2FyZylcblxuICAgIGxldCBvZl9zdmFyX2Z1biBmIGEgPSBTdmFyX2Z1bi5pbmplY3QgKFQgKGEsIGYpKVxuXG4gICAgbW9kdWxlIFF1ZXJ5X3Jlc3BvbnNlX3RyYWNrZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgKCdxLCAncikgcnBjID1cbiAgICAgICAgeyBxdWVyeSA6ICdxXG4gICAgICAgIDsgcmVzcG9uc2UgOiAnciBTdmFyLnRcbiAgICAgICAgfVxuXG4gICAgICB0eXBlICgncSwgJ3IpIHQgPSAoJ3EsICdyKSBycGMgbGlzdCByZWZcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9IHJlZiBbXVxuXG4gICAgICBsZXQgYWRkX3F1ZXJ5IHQgcXVlcnkgPVxuICAgICAgICBsZXQgcmVzcG9uc2UgPSBTdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgICB0IDo9IHsgcXVlcnk7IHJlc3BvbnNlIH0gOjogIXQ7XG4gICAgICAgIHJlc3BvbnNlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVlcmllc19wZW5kaW5nX3Jlc3BvbnNlIHQgPVxuICAgICAgICBMaXN0Lm1hcCAhdCB+ZjooZnVuIHsgcXVlcnk7IHJlc3BvbnNlID0gXyB9IC0+IHF1ZXJ5KVxuICAgICAgOztcblxuICAgICAgdHlwZSAnciBtYXliZV9yZXNwb25kID1cbiAgICAgICAgfCBOb19yZXNwb25zZV95ZXRcbiAgICAgICAgfCBSZXNwb25kIG9mICdyXG5cbiAgICAgIGxldCBtYXliZV9yZXNwb25kIHQgfmYgPVxuICAgICAgICB0XG4gICAgICAgIDo9IExpc3QuZmlsdGVyICF0IH5mOihmdW4geyBxdWVyeTsgcmVzcG9uc2UgfSAtPlxuICAgICAgICAgIG1hdGNoIGYgcXVlcnkgd2l0aFxuICAgICAgICAgIHwgTm9fcmVzcG9uc2VfeWV0IC0+IHRydWVcbiAgICAgICAgICB8IFJlc3BvbmQgcmVzcCAtPlxuICAgICAgICAgICAgU3Zhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIHJlc3A7XG4gICAgICAgICAgICBmYWxzZSlcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgb2ZfcXVlcnlfcmVzcG9uc2VfdHJhY2tlciBxcnQgPSBvZl9zdmFyX2Z1biAoUXVlcnlfcmVzcG9uc2VfdHJhY2tlci5hZGRfcXVlcnkgcXJ0KVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEFkdmFuY2VkXG4iLCJtb2R1bGUgRG9tX2h0bWwgPSBzdHJ1Y3RcbiAgb3BlbiBKc19vZl9vY2FtbC5Eb21faHRtbFxuICBvcGVuIEpzX29mX29jYW1sLkpzXG5cbiAgKCogTm8ganNfb2Zfb2NhbWwgUFIgeWV0LiAqKVxuICBjbGFzcyB0eXBlIHdoZWVsRXZlbnQgPSBvYmplY3RcbiAgICBpbmhlcml0IG1vdXNlRXZlbnRcbiAgICBtZXRob2QgZGVsdGFYIDogZmxvYXQgcmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZWx0YVkgOiBmbG9hdCByZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbHRhWiA6IGZsb2F0IHJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVsdGFNb2RlIDogaW50IHJlYWRvbmx5X3Byb3BcbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBxdWlja2NoZWNrLCBzZXhwLCB0eXBlcmVwXVxuXG4gIHZhbCBzaWduZWQgOiBib29sXG4gIHZhbCBudW1fYml0cyA6IGludFxuICB2YWwgbnVtX2J5dGVzIDogaW50XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgbWluX3ZhbHVlIDogdFxuICB2YWwgbWF4X3ZhbHVlIDogdFxuXG4gIGluY2x1ZGUgUHB4X2hhc2hfbGliLkhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIEJhc2UuQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIE8gOiBzaWdcbiAgICBpbmNsdWRlIEJhc2UuQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgbW9kdWxlIFdyYXAgOiBzaWdcbiAgICAgIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggKiApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCAoIC8gKSA6IHQgLT4gdCAtPiB0XG4gICAgZW5kXG4gIGVuZFxuXG5lbmRcblxubGV0IHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggPVxuICBCYXNlLnJhaXNlX3MgWyVtZXNzYWdlIChtb2RfbmFtZSBeIFwiOiB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWRcIikgfl86KHRvX3N0cmluZyB4KV1cbltAQGNvbGRdXG47O1xuXG5sZXQgdHJ1bmNfdW5zaWduZWQgOiB0eXBlIGEgYi4gY29udjooYSAtPiBiKSAtPiBsb2dhbmQ6KGEgLT4gYSAtPiBhKSAtPiBtYXNrOmEgLT4gYSAtPiBiID1cbiAgZnVuIH5jb252IH5sb2dhbmQgfm1hc2sgeCAtPiBjb252IChsb2dhbmQgeCBtYXNrKVxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBleG5fdW5zaWduZWRcbiAgOiB0eXBlIGEgYi5cbiAgICBjb252OihhIC0+IGIpXG4gICAgLT4gbG9nYW5kOihhIC0+IGEgLT4gYSlcbiAgICAtPiBtYXNrOmFcbiAgICAtPiBlcXVhbDooYSAtPiBhIC0+IGJvb2wpXG4gICAgLT4gbW9kX25hbWU6c3RyaW5nXG4gICAgLT4gdG9fc3RyaW5nOihhIC0+IHN0cmluZylcbiAgICAtPiBhXG4gICAgLT4gYlxuICA9XG4gIGZ1biB+Y29udiB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4IC0+XG4gIGxldCB5ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBpblxuICBpZiBlcXVhbCB4IHkgdGhlbiBjb252IHkgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IHRydW5jX3NpZ25lZFxuICA6IHR5cGUgYS5cbiAgICBzaGlmdF9sZWZ0OihhIC0+IGludCAtPiBhKSAtPiBzaGlmdF9yaWdodDooYSAtPiBpbnQgLT4gYSkgLT4gc2hpZnQ6aW50IC0+IGEgLT4gYVxuICA9XG4gIGZ1biB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggLT4gc2hpZnRfcmlnaHQgKHNoaWZ0X2xlZnQgeCBzaGlmdCkgc2hpZnRcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgZXhuX3NpZ25lZFxuICA6IHR5cGUgYS5cbiAgICBzaGlmdF9sZWZ0OihhIC0+IGludCAtPiBhKVxuICAgIC0+IHNoaWZ0X3JpZ2h0OihhIC0+IGludCAtPiBhKVxuICAgIC0+IHNoaWZ0OmludFxuICAgIC0+IGVxdWFsOihhIC0+IGEgLT4gYm9vbClcbiAgICAtPiBtb2RfbmFtZTpzdHJpbmdcbiAgICAtPiB0b19zdHJpbmc6KGEgLT4gc3RyaW5nKVxuICAgIC0+IGFcbiAgICAtPiBhXG4gID1cbiAgZnVuIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggLT5cbiAgbGV0IHkgPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IGluXG4gIGlmIGVxdWFsIHggeSB0aGVuIHkgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG47O1xuXG5sZXQgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeCA9XG4gIGlmIGdyZWF0ZXJfZXF1YWwgeCB6ZXJvIHRoZW4geCBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgb2Zfc2V4cF9lcnJvciB3aGF0IHNleHAgPVxuICByYWlzZSAoU2V4cGxpYjAuU2V4cF9jb252Lk9mX3NleHBfZXJyb3IgKEZhaWx1cmUgd2hhdCwgc2V4cCkpXG47O1xuXG5tb2R1bGUgUmVwcjMyID0gc3RydWN0XG4gIGluY2x1ZGUgU3RkbGliLlN5cy5JbW1lZGlhdGU2NC5NYWtlIChCYXNlLkludCkgKEJhc2UuSW50MzIpXG5cbiAgbGV0IHRvX2ludDMyICh4IDogdCkgOiBCYXNlLkludDMyLnQgPVxuICAgIG1hdGNoIHJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IEJhc2UuSW50MzIub2ZfaW50X3RydW5jIHhcbiAgICB8IE5vbl9pbW1lZGlhdGUgLT4geFxuICA7O1xuXG4gICgqIHNpZ24tZXh0ZW5kaW5nIGNvbnZlcnNpb24gdG8gaW50NjQgKilcbiAgbGV0IHRvX2ludDY0ICh4IDogdCkgOiBCYXNlLkludDY0LnQgPVxuICAgIG1hdGNoIHJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IEJhc2UuSW50NjQub2ZfaW50IHhcbiAgICB8IE5vbl9pbW1lZGlhdGUgLT4gQmFzZS5JbnQ2NC5vZl9pbnQzMiB4XG4gIDs7XG5lbmRcblxuKCogSW50ZXJuYWwgcmVwcmVzZW50YXRpb24gdHlwZXMgKilcbnR5cGUgaW50OCA9IGludFxudHlwZSB1aW50OCA9IGludFxudHlwZSBpbnQxNiA9IGludFxudHlwZSB1aW50MTYgPSBpbnRcbnR5cGUgaW50MzIgPSBSZXByMzIudFxudHlwZSB1aW50MzIgPSBSZXByMzIudFxudHlwZSBpbnQ2MyA9IEJhc2UuSW50NjMudFxudHlwZSB1aW50NjMgPSBCYXNlLkludDYzLnRcbnR5cGUgaW50NjQgPSBCYXNlLkludDY0LnRcbnR5cGUgdWludDY0ID0gQmFzZS5JbnQ2NC50XG5cbm1vZHVsZSBJbnQ4ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gLTEyOFxuICBsZXQgbWF4X3ZhbHVlID0gMTI3XG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDhcbiAgbGV0IG51bV9ieXRlcyA9IDFcbiAgbGV0IHNoaWZ0X2xlZnQgPSBCYXNlLkludC5zaGlmdF9sZWZ0XG4gIGxldCBzaGlmdF9yaWdodCA9IEJhc2UuSW50LnNoaWZ0X3JpZ2h0XG4gIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgbGV0IG1vZF9uYW1lID0gXCJJbnQ4XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgdHJ1bmMgeCA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuIHggPSBleG5fc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDE2X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX2ludDMyX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgKFJlcHIzMi50b19pbnQzMiB4KSlcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X2V4biAoUmVwcjMyLnRvX2ludDMyIHgpKSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDYzLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4gKEJhc2UuSW50NjMudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4gKEJhc2UuSW50NjQudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50OF93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50OF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gIGxldCBtYXhfdmFsdWUgPSAyNTVcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDhcbiAgbGV0IG51bV9ieXRlcyA9IDFcbiAgbGV0IGNvbnYgPSBCYXNlLkludDY0LnRvX2ludF90cnVuY1xuICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgbGV0IGxvZ2FuZDY0ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKVxuICBsZXQgbWFzayA9IDB4RkZcbiAgbGV0IG1hc2s2NCA9IEJhc2UuSW50NjQub2ZfaW50IG1hc2tcbiAgbGV0IGVxdWFsID0gQmFzZS5JbnQuZXF1YWxcbiAgbGV0IGVxdWFsNjQgPSBCYXNlLkludDY0LmVxdWFsXG4gIGxldCBtb2RfbmFtZSA9IFwiVWludDhcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gIGxldCB0b19zdHJpbmc2NCA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl91bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCB0cnVuYzY0IHggPSB0cnVuY191bnNpZ25lZCB+Y29udiB+bG9nYW5kOmxvZ2FuZDY0IH5tYXNrOm1hc2s2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4bjY0IHggPVxuICAgIGV4bl91bnNpZ25lZFxuICAgICAgfmNvbnZcbiAgICAgIH5sb2dhbmQ6bG9nYW5kNjRcbiAgICAgIH5tYXNrOm1hc2s2NFxuICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgIH5tb2RfbmFtZVxuICAgICAgfnRvX3N0cmluZzp0b19zdHJpbmc2NFxuICAgICAgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDE2X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTZfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX3RydW5jIHggPSB0cnVuYzY0IChSZXByMzIudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMl9leG4geCA9IGV4bjY0IChSZXByMzIudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2M190cnVuYyB4ID0gdHJ1bmM2NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX2V4biB4ID0gZXhuNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfZXhuIHggPSBleG42NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDhfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50OF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgSW50MTYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSAtMzI3NjhcbiAgbGV0IG1heF92YWx1ZSA9IDMyNzY3XG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDE2XG4gIGxldCBudW1fYnl0ZXMgPSAyXG4gIGxldCBzaGlmdF9sZWZ0ID0gQmFzZS5JbnQuc2hpZnRfbGVmdFxuICBsZXQgc2hpZnRfcmlnaHQgPSBCYXNlLkludC5zaGlmdF9yaWdodFxuICBsZXQgc2hpZnQgPSBCYXNlLkludC5udW1fYml0cyAtIG51bV9iaXRzXG4gIGxldCBtb2RfbmFtZSA9IFwiSW50MTZcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl9zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50OCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl9pbnQzMl90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50MzIudG9faW50X3RydW5jIChSZXByMzIudG9faW50MzIgeCkpXG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IG9mX2ludDMyX2V4biB4ID0gZXhuIChCYXNlLkludDMyLnRvX2ludF9leG4gKFJlcHIzMi50b19pbnQzMiB4KSkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2My50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIChCYXNlLkludDYzLnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIChCYXNlLkludDY0LnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDE2X3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDE2ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gNjU1MzVcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDE2XG4gIGxldCBudW1fYnl0ZXMgPSAyXG4gIGxldCBjb252ID0gQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmNcbiAgbGV0IGxvZ2FuZCA9IEJhc2UuSW50LiggbGFuZCApXG4gIGxldCBsb2dhbmQ2NCA9IEJhc2UuSW50NjQuKCBsYW5kIClcbiAgbGV0IG1hc2sgPSAweEZGRkZcbiAgbGV0IG1hc2s2NCA9IEJhc2UuSW50NjQub2ZfaW50IG1hc2tcbiAgbGV0IGVxdWFsID0gQmFzZS5JbnQuZXF1YWxcbiAgbGV0IGVxdWFsNjQgPSBCYXNlLkludDY0LmVxdWFsXG4gIGxldCBtb2RfbmFtZSA9IFwiVWludDE2XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuICBsZXQgdG9fc3RyaW5nNjQgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgdHJ1bmMgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuIHggPSBleG5fdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgdHJ1bmM2NCB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnYgfmxvZ2FuZDpsb2dhbmQ2NCB+bWFzazptYXNrNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG42NCB4ID1cbiAgICBleG5fdW5zaWduZWRcbiAgICAgIH5jb252XG4gICAgICB+bG9nYW5kOmxvZ2FuZDY0XG4gICAgICB+bWFzazptYXNrNjRcbiAgICAgIH5lcXVhbDplcXVhbDY0XG4gICAgICB+bW9kX25hbWVcbiAgICAgIH50b19zdHJpbmc6dG9fc3RyaW5nNjRcbiAgICAgIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfdHJ1bmMgeCA9IHRydW5jNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX2V4biB4ID0gZXhuNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfZXhuIHggPSBleG42NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50MTZfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MTZfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgQmFja2VuZDMyX1MgPSBzaWdcbiAgbW9kdWxlIFNpZ25lZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFJlcHIzMi50XG5cbiAgICBpbmNsdWRlIFQgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2Jhc2VfaW50MzIgOiBCYXNlLkludDMyLnQgLT4gdFxuICAgIHZhbCB0b19iYXNlX2ludDMyIDogdCAtPiBCYXNlLkludDMyLnRcblxuICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfaW50OCA6IGludDggLT4gdFxuICAgIHZhbCBvZl9pbnQxNiA6IGludDE2IC0+IHRcbiAgICB2YWwgb2ZfaW50NjNfdHJ1bmMgOiBpbnQ2MyAtPiB0XG4gICAgdmFsIG9mX2ludDYzX2V4biA6IGludDYzIC0+IHRcbiAgICB2YWwgb2ZfaW50NjRfdHJ1bmMgOiBpbnQ2NCAtPiB0XG4gICAgdmFsIG9mX2ludDY0X2V4biA6IGludDY0IC0+IHRcblxuICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX3VpbnQzMl93cmFwIDogdWludDMyIC0+IHRcbiAgICB2YWwgb2ZfdWludDMyX2V4biA6IHVpbnQzMiAtPiB0XG4gIGVuZFxuXG4gIG1vZHVsZSBVbnNpZ25lZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFJlcHIzMi50XG5cbiAgICBpbmNsdWRlIFQgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2Jhc2VfaW50MzJfdHJ1bmMgOiBCYXNlLkludDMyLnQgLT4gdFxuICAgIHZhbCBvZl9iYXNlX2ludDMyX2V4biA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50MzJfdHJ1bmMgOiB0IC0+IEJhc2UuSW50MzIudFxuICAgIHZhbCB0b19iYXNlX2ludDMyX2V4biA6IHQgLT4gQmFzZS5JbnQzMi50XG4gICAgdmFsIG9mX2Jhc2VfaW50NjRfdHJ1bmMgOiBCYXNlLkludDY0LnQgLT4gdFxuICAgIHZhbCBvZl9iYXNlX2ludDY0X2V4biA6IEJhc2UuSW50NjQudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50NjQgOiB0IC0+IEJhc2UuSW50NjQudFxuICAgIHZhbCBvZl9iYXNlX2ludF9leG4gOiBCYXNlLkludC50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnRfZXhuIDogdCAtPiBCYXNlLkludC50XG5cbiAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX3VpbnQ4IDogdWludDggLT4gdFxuICAgIHZhbCBvZl91aW50MTYgOiB1aW50MTYgLT4gdFxuICAgIHZhbCBvZl91aW50NjNfdHJ1bmMgOiB1aW50NjMgLT4gdFxuICAgIHZhbCBvZl91aW50NjNfZXhuIDogdWludDYzIC0+IHRcbiAgICB2YWwgb2ZfdWludDY0X3RydW5jIDogdWludDY0IC0+IHRcbiAgICB2YWwgb2ZfdWludDY0X2V4biA6IHVpbnQ2NCAtPiB0XG5cbiAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl9pbnQzMl93cmFwIDogaW50MzIgLT4gdFxuICAgIHZhbCBvZl9pbnQzMl9leG4gOiBpbnQzMiAtPiB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBCYWNrZW5kMzIgOiBzaWdcbiAgdmFsIGltcGwgOiAobW9kdWxlIEJhY2tlbmQzMl9TKVxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBJID0gc3RydWN0XG4gICAgbW9kdWxlIFNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgICAgIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDMyLnRvX2ludF90cnVuYyBCYXNlLkludDMyLm1pbl92YWx1ZVxuICAgICAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50MzIudG9faW50X3RydW5jIEJhc2UuSW50MzIubWF4X3ZhbHVlXG4gICAgICBsZXQgc2lnbmVkID0gdHJ1ZVxuICAgICAgbGV0IG51bV9iaXRzID0gMzJcbiAgICAgIGxldCBudW1fYnl0ZXMgPSA0XG4gICAgICBsZXQgc2hpZnRfbGVmdCA9IEJhc2UuSW50LnNoaWZ0X2xlZnRcbiAgICAgIGxldCBzaGlmdF9yaWdodCA9IEJhc2UuSW50LnNoaWZ0X3JpZ2h0XG4gICAgICBsZXQgc2hpZnQgPSBCYXNlLkludC5udW1fYml0cyAtIG51bV9iaXRzXG4gICAgICBsZXQgbW9kX25hbWUgPSBcIkludDMyXCJcbiAgICAgIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcblxuICAgICAgKCogVXRpbGl0aWVzICopXG4gICAgICBsZXQgdHJ1bmMgeCA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IGV4biB4ID0gZXhuX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMiB4ID0gQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzIgeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDggeCA9ICh4IDogSW50OC50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQxNiB4ID0gKHggOiBJbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjMudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4gKEJhc2UuSW50NjMudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biAoQmFzZS5JbnQ2NC50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDMyX3dyYXAgeCA9IHRydW5jIHhcbiAgICAgIGxldCBvZl91aW50MzJfZXhuIHggPSBleG4geFxuXG4gICAgICAoKiBNaXNjZWxsYW5lb3VzICopXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICAgICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICAgICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICAgICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICAgICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVW5zaWduZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICAgICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICAgICAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQuemVyb1xuICAgICAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50Lm9mX2ludDY0X3RydW5jIDQyOTQ5NjcyOTVMXG4gICAgICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IGNvbnYgPSBCYXNlLkludDY0LnRvX2ludF90cnVuY1xuICAgICAgbGV0IGxvZ2FuZCA9IEJhc2UuSW50LiggbGFuZCApXG4gICAgICBsZXQgbG9nYW5kNjQgPSBCYXNlLkludDY0LiggbGFuZCApXG4gICAgICBsZXQgbWFzayA9IEJhc2UuSW50NjQudG9faW50X3RydW5jIDB4RkZGRkZGRkZMXG4gICAgICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICAgICAgbGV0IGVxdWFsID0gQmFzZS5JbnQuZXF1YWxcbiAgICAgIGxldCBlcXVhbDY0ID0gQmFzZS5JbnQ2NC5lcXVhbFxuICAgICAgbGV0IG1vZF9uYW1lID0gXCJVaW50MzJcIlxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZzY0ID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAgICAgKCogVXRpbGl0aWVzICopXG4gICAgICBsZXQgdHJ1bmMgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IGV4biB4ID0gZXhuX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRydW5jNjQgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252IH5sb2dhbmQ6bG9nYW5kNjQgfm1hc2s6bWFzazY0IHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgZXhuNjQgeCA9XG4gICAgICAgIGV4bl91bnNpZ25lZFxuICAgICAgICAgIH5jb252XG4gICAgICAgICAgfmxvZ2FuZDpsb2dhbmQ2NFxuICAgICAgICAgIH5tYXNrOm1hc2s2NFxuICAgICAgICAgIH5lcXVhbDplcXVhbDY0XG4gICAgICAgICAgfm1vZF9uYW1lXG4gICAgICAgICAgfnRvX3N0cmluZzp0b19zdHJpbmc2NFxuICAgICAgICAgIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX3RydW5jIHggPVxuICAgICAgICBCYXNlLkludDY0LnRvX2ludF90cnVuYyAobG9nYW5kNjQgKEJhc2UuSW50NjQub2ZfaW50MzIgeCkgbWFzazY0KVxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX2V4biB4ID0gZXhuIChCYXNlLkludDMyLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfdHJ1bmMgeCA9IEJhc2UuSW50LnRvX2ludDMyX3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfZXhuIHggPVxuICAgICAgICBpZiBCYXNlLkludC4oIDw9ICkgeCAoQmFzZS5JbnQub2ZfaW50NjRfdHJ1bmMgMjE0NzQ4MzY0N0wpXG4gICAgICAgIHRoZW4gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgeFxuICAgICAgICBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nOkJhc2UuSW50LnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPSBleG42NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQ2NCB4ID0gQmFzZS5JbnQudG9faW50NjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludF9leG4geCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQ4IHggPSAoeCA6IFVpbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQxNiB4ID0gKHggOiBVaW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDYzX2V4biB4ID0gZXhuNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQzMl93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBNaXNjZWxsYW5lb3VzICopXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICAgICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICAgICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICAgICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICAgICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBOID0gc3RydWN0XG4gICAgbW9kdWxlIFNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQzMi50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDMyXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50MzJcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDMyXG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIubWluX3ZhbHVlXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQzMi5tYXhfdmFsdWVcbiAgICAgIGxldCBzaWduZWQgPSB0cnVlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiSW50MzJcIlxuICAgICAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDMyLiggPj0gKVxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50MzIudG9fc3RyaW5nXG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzIgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDMyIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQ4IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IEludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50MTYgeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogSW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IEJhc2UuSW50NjMudG9faW50MzJfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX2V4biB4ID0gQmFzZS5JbnQ2My50b19pbnQzMl9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X3RydW5jIHggPSBCYXNlLkludDY0LnRvX2ludDMyX3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2NF9leG4geCA9IEJhc2UuSW50NjQudG9faW50MzJfZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50MzJfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfdWludDMyX2V4biB4IDogdCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQzMi4oID49IClcbiAgICAgICAgbGV0ICggPD0gKSA9IEJhc2UuSW50MzIuKCA8PSApXG4gICAgICAgIGxldCAoID0gKSA9IEJhc2UuSW50MzIuKCA9IClcbiAgICAgICAgbGV0ICggPiApID0gQmFzZS5JbnQzMi4oID4gKVxuICAgICAgICBsZXQgKCA8ICkgPSBCYXNlLkludDMyLiggPCApXG4gICAgICAgIGxldCAoIDw+ICkgPSBCYXNlLkludDMyLiggPD4gKVxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQzMi4oICsgKVxuICAgICAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50MzIuKCAtIClcbiAgICAgICAgICBsZXQgKCAqICkgPSBCYXNlLkludDMyLiggKiApXG4gICAgICAgICAgbGV0ICggLyApID0gQmFzZS5JbnQzMi4oIC8gKVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFVuc2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludDMyLnQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQzMlxuICAgICAgbGV0IGNvbXBhcmUgeCB5ID0gU3RkbGliLkludDMyLnVuc2lnbmVkX2NvbXBhcmUgeCB5IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50MzJcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDMyXG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1heF92YWx1ZSA9IC0xbFxuICAgICAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiVWludDMyXCJcbiAgICAgIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQzMi4oID49IClcbiAgICAgIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDMyLnRvX3N0cmluZ1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSBCYXNlLkludDMyLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPVxuICAgICAgICBpZiBCYXNlLkludDY0LiggPj0gKSB4IDBMICYmIEJhc2UuSW50NjQuKCA8PSApIHggNDI5NDk2NzI5NUxcbiAgICAgICAgdGhlbiBCYXNlLkludDY0LnRvX2ludDMyX3RydW5jIHhcbiAgICAgICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2Jhc2VfaW50NjQgeCA9IEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50MzIudG9faW50NjQgeCkgMHhGRkZGRkZGRkxcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPVxuICAgICAgICBCYXNlLkludDMyLm9mX2ludF9leG4geFxuICAgICAgICB8PiBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZ1xuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19iYXNlX2ludF9leG4geCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgICAgfD4gQmFzZS5JbnQzMi50b19pbnRfZXhuXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQ4IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IFVpbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQxNiB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgKHggOiBVaW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IG9mX2Jhc2VfaW50NjRfdHJ1bmMgKEJhc2UuSW50NjMudG9faW50NjQgeClcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfdWludDYzX2V4biB4ID0gb2ZfYmFzZV9pbnQ2NF9leG4gKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IG9mX2Jhc2VfaW50NjRfZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQzMl93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl9pbnQzMl9leG4geCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBTZXhwIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IHNleHBfb2ZfdCB4ID0gQmFzZS5TZXhwLkF0b20gKFN0ZGxpYi5QcmludGYuc3ByaW50ZiBcIiVsdVwiIHgpXG5cbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICB8IEJhc2UuU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQzMi50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgICAgICB8IEJhc2UuU2V4cC5BdG9tIHMgLT5cbiAgICAgICAgICAodHJ5IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIiVsdVwiIEZ1bi5pZCB3aXRoXG4gICAgICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDMyLnRfb2Zfc2V4cDogaW50ZWdlciBhdG9tIG5lZWRlZFwiIHNleHApXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApIHggeSA9IGNvbXBhcmUgeCB5ID49IDBcbiAgICAgICAgbGV0ICggPD0gKSB4IHkgPSBjb21wYXJlIHggeSA8PSAwXG4gICAgICAgIGxldCAoID0gKSB4IHkgPSBjb21wYXJlIHggeSA9IDBcbiAgICAgICAgbGV0ICggPiApIHggeSA9IGNvbXBhcmUgeCB5ID4gMFxuICAgICAgICBsZXQgKCA8ICkgeCB5ID0gY29tcGFyZSB4IHkgPCAwXG4gICAgICAgIGxldCAoIDw+ICkgeCB5ID0gY29tcGFyZSB4IHkgPD4gMFxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQzMi4oICsgKVxuICAgICAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50MzIuKCAtIClcbiAgICAgICAgICBsZXQgKCAqICkgPSBCYXNlLkludDMyLiggKiApXG4gICAgICAgICAgbGV0ICggLyApID0gU3RkbGliLkludDMyLnVuc2lnbmVkX2RpdlxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGltcGwgOiAobW9kdWxlIEJhY2tlbmQzMl9TKSA9XG4gICAgbWF0Y2ggUmVwcjMyLnJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IChtb2R1bGUgSSA6IEJhY2tlbmQzMl9TKVxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiAobW9kdWxlIE4gOiBCYWNrZW5kMzJfUylcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW50MzIgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSAodmFsIEJhY2tlbmQzMi5pbXBsIDogQmFja2VuZDMyX1MpXG4gIGluY2x1ZGUgTS5TaWduZWRcbmVuZFxuXG5tb2R1bGUgVWludDMyID0gc3RydWN0XG4gIG1vZHVsZSBNID0gKHZhbCBCYWNrZW5kMzIuaW1wbCA6IEJhY2tlbmQzMl9TKVxuICBpbmNsdWRlIE0uVW5zaWduZWRcbmVuZFxuXG5tb2R1bGUgSW50NjMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2My50IFtAQGltbWVkaWF0ZTY0XSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfdW5pZm9ybVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2M1xuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2M1xuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjNcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjNcbiAgbGV0IHplcm8gPSBCYXNlLkludDYzLnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjMubWluX3ZhbHVlXG4gIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDYzLm1heF92YWx1ZVxuICBsZXQgc2lnbmVkID0gdHJ1ZVxuICBsZXQgbnVtX2JpdHMgPSA2M1xuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgbW9kX25hbWUgPSBcIkludDYzXCJcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDYzLiggPj0gKVxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2My50b19zdHJpbmdcblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MzIgeCA9IEJhc2UuSW50NjMub2ZfaW50MzIgKEludDMyLnRvX2Jhc2VfaW50MzIgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X3RydW5jIHggPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X2V4biB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50NjNfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjNfZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQ2My4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQ2My4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludDYzLiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQ2My4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50NjMuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQ2My4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDYzLiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDYzLiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDYzLiggKiApXG4gICAgICBsZXQgKCAvICkgPSBCYXNlLkludDYzLiggLyApXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50NjMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2My50IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfdW5pZm9ybVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2M1xuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2M1xuXG4gIGxldCBjb21wYXJlIHggeSA9XG4gICAgKCogeCBhbmQgeSBhcmUgc2lnbi1leHRlbmRlZCwgd2hpY2ggcHJlc2VydmVzIHRoZSBoaWdoIGJpdCAqKVxuICAgIFN0ZGxpYi5JbnQ2NC51bnNpZ25lZF9jb21wYXJlIChCYXNlLkludDYzLnRvX2ludDY0IHgpIChCYXNlLkludDYzLnRvX2ludDY0IHkpXG4gIDs7XG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDYzXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDYzXG4gIGxldCB6ZXJvID0gQmFzZS5JbnQ2My56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDYzLnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDYzXG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQ2My4oID49IClcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50NjNcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2My50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IGV4biB4ID0gaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPVxuICAgIGlmIEJhc2UuSW50NjQuKCA+PSApIHggMExcbiAgICB0aGVuIEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeFxuICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQ2NC50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCB0b19iYXNlX2ludDY0IHggPSBCYXNlLkludDY0LiggbGFuZCApIChCYXNlLkludDYzLnRvX2ludDY0IHgpIDB4N0ZGRkZGRkZGRkZGRkZGRkxcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50OCB4ID0gQmFzZS5JbnQ2My5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDE2IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzIgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgKFVpbnQzMi50b19iYXNlX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjRfZXhuICh4IDogdWludDY0KSA6IHQgPVxuICAgIGlmIEJhc2UuSW50NjQuKCA+PSApIHggMExcbiAgICB0aGVuIEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeFxuICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQ2NC50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ2M193cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2V4cCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IHNleHBfb2ZfdCB4ID0gQmFzZS5TZXhwLkF0b20gKFN0ZGxpYi5QcmludGYuc3ByaW50ZiBcIiVMdVwiICh0b19iYXNlX2ludDY0IHgpKVxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBCYXNlLlNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjMudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICB8IEJhc2UuU2V4cC5BdG9tIHMgLT5cbiAgICAgICh0cnkgU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJUx1XCIgb2ZfYmFzZV9pbnQ2NF9leG4gd2l0aFxuICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDYzLnRfb2Zfc2V4cDogaW50ZWdlciBhdG9tIG5lZWRlZFwiIHNleHApXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApIHggeSA9IGNvbXBhcmUgeCB5ID49IDBcbiAgICBsZXQgKCA8PSApIHggeSA9IGNvbXBhcmUgeCB5IDw9IDBcbiAgICBsZXQgKCA9ICkgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG4gICAgbGV0ICggPiApIHggeSA9IGNvbXBhcmUgeCB5ID4gMFxuICAgIGxldCAoIDwgKSB4IHkgPSBjb21wYXJlIHggeSA8IDBcbiAgICBsZXQgKCA8PiApIHggeSA9IGNvbXBhcmUgeCB5IDw+IDBcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDYzLiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDYzLiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDYzLiggKiApXG5cbiAgICAgIGxldCAoIC8gKSB4IHkgPVxuICAgICAgICBvZl9iYXNlX2ludDY0X3RydW5jIChCYXNlLkludDY0LiggLyApICh0b19iYXNlX2ludDY0IHgpICh0b19iYXNlX2ludDY0IHkpKVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgSW50NjQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2NC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDY0XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQ2NFxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjRcbiAgbGV0IHplcm8gPSBCYXNlLkludDY0Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjQubWluX3ZhbHVlXG4gIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDY0Lm1heF92YWx1ZVxuICBsZXQgc2lnbmVkID0gdHJ1ZVxuICBsZXQgbnVtX2JpdHMgPSA2NFxuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgbW9kX25hbWUgPSBcIkludDY0XCJcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDY0LiggPj0gKVxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNiB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MzIgeCA9IEJhc2UuSW50NjQub2ZfaW50MzIgKEludDMyLnRvX2Jhc2VfaW50MzIgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzIHggPSBCYXNlLkludDYzLnRvX2ludDY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDY0X3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfdWludDY0X2V4biB4ID0gaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50NjQuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50NjQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQ2NC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50NjQuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludDY0LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50NjQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQ2NC4oICsgKVxuICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQ2NC4oIC0gKVxuICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQ2NC4oICogKVxuICAgICAgbGV0ICggLyApID0gQmFzZS5JbnQ2NC4oIC8gKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDY0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjQudCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaF1cblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDY0XG4gIGxldCBjb21wYXJlID0gU3RkbGliLkludDY0LnVuc2lnbmVkX2NvbXBhcmVcbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDY0XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDY0XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQ2NC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDY0Lnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IC0xTFxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gNjRcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDY0LiggPj0gKVxuICBsZXQgbW9kX25hbWUgPSBcIlVpbnQ2NFwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludDY0X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50NjRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTYgeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMiB4ID0gVWludDMyLnRvX2Jhc2VfaW50NjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjMgKHggOiB1aW50NjMpIDogaW50NjQgPVxuICAgIEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50NjMudG9faW50NjQgeCkgMHg3RkZGRkZGRkZGRkZGRkZGTFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ2NF93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2V4cCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IHNleHBfb2ZfdCB4ID0gQmFzZS5TZXhwLkF0b20gKFN0ZGxpYi5QcmludGYuc3ByaW50ZiBcIiVMdVwiIHgpXG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEJhc2UuU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2NC50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIlTHVcIiBGdW4uaWQgd2l0aFxuICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDY0LnRfb2Zfc2V4cDogaW50ZWdlciBhdG9tIG5lZWRlZFwiIHNleHApXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApIHggeSA9IGNvbXBhcmUgeCB5ID49IDBcbiAgICBsZXQgKCA8PSApIHggeSA9IGNvbXBhcmUgeCB5IDw9IDBcbiAgICBsZXQgKCA9ICkgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG4gICAgbGV0ICggPiApIHggeSA9IGNvbXBhcmUgeCB5ID4gMFxuICAgIGxldCAoIDwgKSB4IHkgPSBjb21wYXJlIHggeSA8IDBcbiAgICBsZXQgKCA8PiApIHggeSA9IGNvbXBhcmUgeCB5IDw+IDBcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDY0LiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDY0LiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDY0LiggKiApXG4gICAgICBsZXQgKCAvICkgPSBTdGRsaWIuSW50NjQudW5zaWduZWRfZGl2XG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIHR5cGUgR2V0ID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqIDgtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDggOiB0IC0+IHBvczppbnQgLT4gaW50OFxuXG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDggOiB0IC0+IHBvczppbnQgLT4gdWludDhcblxuICAoKiAxNi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50MTZfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MTZcbiAgdmFsIGdldF9pbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNlxuXG4gICgqIDE2LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTZcbiAgdmFsIGdldF91aW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDE2XG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDMyX2xlIDogdCAtPiBwb3M6aW50IC0+IGludDMyXG4gIHZhbCBnZXRfaW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MzJcblxuICAoKiAzMi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyXG4gIHZhbCBnZXRfdWludDMyX2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQzMlxuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NFxuICB2YWwgZ2V0X2ludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDY0XG5cbiAgKCogNjQtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NFxuICB2YWwgZ2V0X3VpbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXQgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfaW50OCA6IHQgLT4gcG9zOmludCAtPiBpbnQ4IC0+IHVuaXRcblxuICAoKiA4LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQ4IDogdCAtPiBwb3M6aW50IC0+IHVpbnQ4IC0+IHVuaXRcblxuICAoKiAxNi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfaW50MTZfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MTYgLT4gdW5pdFxuICB2YWwgc2V0X2ludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDE2IC0+IHVuaXRcblxuICAoKiAxNi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF91aW50MTZfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDE2IC0+IHVuaXRcbiAgdmFsIHNldF91aW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDE2IC0+IHVuaXRcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfaW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MzIgLT4gdW5pdFxuICB2YWwgc2V0X2ludDMyX2JlIDogdCAtPiBwb3M6aW50IC0+IGludDMyIC0+IHVuaXRcblxuICAoKiAzMi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF91aW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyIC0+IHVuaXRcbiAgdmFsIHNldF91aW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyIC0+IHVuaXRcblxuICAoKiA2NC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfaW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50NjQgLT4gdW5pdFxuICB2YWwgc2V0X2ludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDY0IC0+IHVuaXRcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF91aW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0IC0+IHVuaXRcbiAgdmFsIHNldF91aW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBHZXRfZnVuY3Rpb25zID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG11c3QgdXNlIG5hdGl2ZSBlbmRpYW5uZXNzIChoZW5jZSB0aGUgYF9uZWAgc3VmZml4KS4gKilcbiAgdmFsIGdldF91aW50OCA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnRcbiAgdmFsIGdldF91aW50MTZfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludC50XG4gIHZhbCBnZXRfaW50MzJfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDMyLnRcbiAgdmFsIGdldF9pbnQ2NF9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50NjQudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNldF9mdW5jdGlvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbXVzdCB1c2UgbmF0aXZlIGVuZGlhbm5lc3MgKGhlbmNlIHRoZSBgX25lYCBzdWZmaXgpLiAqKVxuICB2YWwgc2V0X3VpbnQ4IDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudCAtPiB1bml0XG4gIHZhbCBzZXRfdWludDE2X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudCAtPiB1bml0XG4gIHZhbCBzZXRfaW50MzJfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDMyLnQgLT4gdW5pdFxuICB2YWwgc2V0X2ludDY0X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQ2NC50IC0+IHVuaXRcbmVuZFxuXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBTdGRsaWIuSW50MzIudCAtPiBTdGRsaWIuSW50MzIudCA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IFN0ZGxpYi5JbnQ2NC50IC0+IFN0ZGxpYi5JbnQ2NC50ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5tb2R1bGUgTWFrZV9nZXQgKEYgOiBHZXRfZnVuY3Rpb25zKSA6IEdldCB3aXRoIHR5cGUgdCA6PSBGLnQgPSBzdHJ1Y3RcbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfaW50OCB0IH5wb3MgPSBJbnQ4Lm9mX2Jhc2VfaW50X3RydW5jIChGLmdldF91aW50OCB0IHBvcylcblxuICAoKiA4LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQ4IHQgfnBvcyA9IFVpbnQ4Lm9mX2Jhc2VfaW50X3RydW5jIChGLmdldF91aW50OCB0IHBvcylcblxuICAoKiAxNi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfaW50MTZfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIEludDE2Lm9mX2Jhc2VfaW50X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X2ludDE2X2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF91aW50MTZfbmUgdCBwb3MgaW5cbiAgICBJbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG4gIDs7XG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDE2X2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF91aW50MTZfbmUgdCBwb3MgaW5cbiAgICBVaW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfdWludDE2X2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF91aW50MTZfbmUgdCBwb3MgaW5cbiAgICBVaW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAxNiB4KVxuICA7O1xuXG4gICgqIDMyLWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQzMl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBJbnQzMi5vZl9iYXNlX2ludDMyIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X2ludDMyX2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIEludDMyLm9mX2Jhc2VfaW50MzIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuICA7O1xuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQzMl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBVaW50MzIub2ZfYmFzZV9pbnQzMl90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50MzJfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDMyX25lIHQgcG9zIGluXG4gICAgVWludDMyLm9mX2Jhc2VfaW50MzJfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuICA7O1xuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQ2NF9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeFxuICA7O1xuXG4gIGxldCBnZXRfaW50NjRfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHhcbiAgOztcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF91aW50NjRfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgVWludDY0Lm9mX2Jhc2VfaW50NjRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfdWludDY0X2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQ2NF9uZSB0IHBvcyBpblxuICAgIFVpbnQ2NC5vZl9iYXNlX2ludDY0X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeClcbiAgOztcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIE1ha2Vfc2V0IChGIDogU2V0X2Z1bmN0aW9ucykgOiBTZXQgd2l0aCB0eXBlIHQgOj0gRi50ID0gc3RydWN0XG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDggdCB+cG9zIHggPSBGLnNldF91aW50OCB0IHBvcyB4XG5cbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50OCB0IH5wb3MgeCA9IHNldF91aW50OCB0IH5wb3MgKFVpbnQ4Lm9mX2ludDhfd3JhcCB4KVxuXG4gICgqIDE2LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQxNl9sZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeCBpblxuICAgIEYuc2V0X3VpbnQxNl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgbGV0IHNldF91aW50MTZfYmUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHggaW5cbiAgICBGLnNldF91aW50MTZfbmUgdCBwb3MgeFxuICA7O1xuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQxNl9sZSB0IH5wb3MgeCA9IHNldF91aW50MTZfbGUgdCB+cG9zIChVaW50MTYub2ZfaW50MTZfd3JhcCB4KVxuICBsZXQgc2V0X2ludDE2X2JlIHQgfnBvcyB4ID0gc2V0X3VpbnQxNl9iZSB0IH5wb3MgKFVpbnQxNi5vZl9pbnQxNl93cmFwIHgpXG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X2ludDMyX2xlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IEludDMyLnRvX2Jhc2VfaW50MzIgeCBpblxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHggaW5cbiAgICBGLnNldF9pbnQzMl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgbGV0IHNldF9pbnQzMl9iZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBJbnQzMi50b19iYXNlX2ludDMyIHggaW5cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4IGluXG4gICAgRi5zZXRfaW50MzJfbmUgdCBwb3MgeFxuICA7O1xuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQzMl9sZSB0IH5wb3MgeCA9IHNldF9pbnQzMl9sZSB0IH5wb3MgKEludDMyLm9mX3VpbnQzMl93cmFwIHgpXG4gIGxldCBzZXRfdWludDMyX2JlIHQgfnBvcyB4ID0gc2V0X2ludDMyX2JlIHQgfnBvcyAoSW50MzIub2ZfdWludDMyX3dyYXAgeClcblxuICAoKiA2NC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50NjRfbGUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHggaW5cbiAgICBGLnNldF9pbnQ2NF9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgbGV0IHNldF9pbnQ2NF9iZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeCBpblxuICAgIEYuc2V0X2ludDY0X25lIHQgcG9zIHhcbiAgOztcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF91aW50NjRfbGUgdCB+cG9zIHggPSBzZXRfaW50NjRfbGUgdCB+cG9zIChJbnQ2NC5vZl91aW50NjRfd3JhcCB4KVxuICBsZXQgc2V0X3VpbnQ2NF9iZSB0IH5wb3MgeCA9IHNldF9pbnQ2NF9iZSB0IH5wb3MgKEludDY0Lm9mX3VpbnQ2NF93cmFwIHgpXG5lbmRcbltAQGlubGluZSBhbHdheXNdXG5cbm1vZHVsZSBCeXRlczBVbnNhZmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQnl0ZXMudFxuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IEJ5dGVzLnQgLT4gaW50IC0+IGludCA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCBnZXRfdWludDE2X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNnVcIlxuICBleHRlcm5hbCBnZXRfaW50MzJfbmUgOiBCeXRlcy50IC0+IGludCAtPiBTdGRsaWIuSW50MzIudCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gU3RkbGliLkludDY0LnQgPSBcIiVjYW1sX2J5dGVzX2dldDY0dVwiXG4gIGV4dGVybmFsIHNldF91aW50OCA6IEJ5dGVzLnQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG4gIGV4dGVybmFsIHNldF91aW50MTZfbmUgOiBCeXRlcy50IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbiAgZXh0ZXJuYWwgc2V0X2ludDMyX25lIDogQnl0ZXMudCAtPiBpbnQgLT4gU3RkbGliLkludDMyLnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbiAgZXh0ZXJuYWwgc2V0X2ludDY0X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gU3RkbGliLkludDY0LnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmVuZFxuXG5tb2R1bGUgQnl0ZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dldCAoQnl0ZXMpXG4gIGluY2x1ZGUgTWFrZV9zZXQgKEJ5dGVzKVxuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfZ2V0IChCeXRlczBVbnNhZmUpXG4gICAgaW5jbHVkZSBNYWtlX3NldCAoQnl0ZXMwVW5zYWZlKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU3RyaW5nMCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBnZXRfdWludDE2X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogU3RyaW5nLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQzMi50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJcIlxuICBleHRlcm5hbCBnZXRfaW50NjRfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gU3RkbGliLkludDY0LnQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NFwiXG5lbmRcblxubW9kdWxlIFN0cmluZzBVbnNhZmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RyaW5nLnRcblxuICBleHRlcm5hbCBnZXRfdWludDggOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCBnZXRfdWludDE2X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2dVwiXG4gIGV4dGVybmFsIGdldF9pbnQzMl9uZSA6IFN0cmluZy50IC0+IGludCAtPiBTdGRsaWIuSW50MzIudCA9IFwiJWNhbWxfc3RyaW5nX2dldDMydVwiXG4gIGV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IFN0cmluZy50IC0+IGludCAtPiBTdGRsaWIuSW50NjQudCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0dVwiXG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2V0IChTdHJpbmcwKVxuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfZ2V0IChTdHJpbmcwVW5zYWZlKVxuICBlbmRcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgQmlnc3RyaW5nMCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgICggY2hhclxuICAgICwgU3RkbGliLkJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0XG4gICAgLCBTdGRsaWIuQmlnYXJyYXkuY19sYXlvdXQgKVxuICAgICAgU3RkbGliLkJpZ2FycmF5LkFycmF5MS50XG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIFN0ZGxpYi5CaWdhcnJheS5BcnJheTEudFxuXG4gIGV4dGVybmFsIGdldCA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuICBleHRlcm5hbCBzZXQgOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICA6ICAoKCdhLCAnYiwgJ2MpIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gaW50XG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5cbiAgZXh0ZXJuYWwgZGltIDogKCgnYSwgJ2IsICdjKSB0W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbmVuZFxuXG5pbmNsdWRlIEJpZ3N0cmluZzBcblxuZXh0ZXJuYWwgYXV4X2NyZWF0ZSA6IG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlczppbnQgLT4gc2l6ZTppbnQgLT4gdCA9IFwiYmlnc3RyaW5nX2FsbG9jXCJcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxuXG4oKiBPbmUgbmVlZHMgdG8gdXNlIFtDYW1sLlN5cy53b3JkX3NpemVdIHNvIHRoYXQgaXRzIHZhbHVlIGlzIGtub3duIGF0IGNvbXBpbGUtdGltZS4gKilcbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN0ZGxpYi5TeXMud29yZF9zaXplID0gNjRcbmxldCBhcmNoX2JpZ19lbmRpYW4gPSBTdGRsaWIuU3lzLmJpZ19lbmRpYW5cbmxldCBub3Rfb25fMzJiaXQgPSBTdGRsaWIuU3lzLndvcmRfc2l6ZSA+IDMyXG5cbmxldCBjcmVhdGUgP21heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyBzaXplID1cbiAgbGV0IG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyA9XG4gICAgT3B0aW9uLnZhbHVlIG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyB+ZGVmYXVsdDooLTEpXG4gIGluXG4gICgqIFRoaXMgY2hlY2sgaXMgaW1wb3J0YW50IGJlY2F1c2UgW2F1eF9jcmVhdGUgfnNpemU6KC0xKV0gcmFpc2VzIFtPdXRfb2ZfbWVtb3J5XSwgd2hpY2hcbiAgICAgY291bGQgYmUgY29uZnVzaW5nIGR1cmluZyBkZWJ1Z2dpbmcuICopXG4gIGlmIHNpemUgPCAwIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJjcmVhdGU6IHNpemUgPSAlZCA8IDBcIiBzaXplKTtcbiAgYXV4X2NyZWF0ZSB+bWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIH5zaXplXG47O1xuXG5sZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG5leHRlcm5hbCBpc19tbWFwcGVkIDogdCAtPiBib29sID0gXCJiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViXCIgW0BAbm9hbGxvY11cblxubGV0IGluaXQgbiB+ZiA9XG4gIGxldCB0ID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdC57aX0gPC0gZiBpXG4gIGRvbmU7XG4gIHRcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSBjaGVja19hcmdzX3Nsb3cgfmxvYyB+cG9zIH5sZW4gKGJzdHIgOiB0KSA9XG4gIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyAobG9jIF4gXCI6IHBvcyA8IDBcIik7XG4gIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyAobG9jIF4gXCI6IGxlbiA8IDBcIik7XG4gIGxldCBic3RyX2xlbiA9IGxlbmd0aCBic3RyIGluXG4gICgqIEJlIGNhcmVmdWwgd2l0aCBvdmVyZmxvdyEgIFdlIGNvdWxkIGhhdmUgYm9nb25zIGxpa2UgW3BvcyA9IEludC5tYXhfdmFsdWVdIG9yIFtsZW4gPVxuICAgICBJbnQubWF4X3ZhbHVlXSBwYXNzZWQgYnkgdGhlIHVzZXIuICopXG4gIGlmIGJzdHJfbGVuIC0gcG9zIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJCaWdzdHJpbmcuJXM6IGxlbmd0aChic3RyKSA8IHBvcyArIGxlblwiIGxvYylcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gY2hlY2tfYXJncyB+bG9jIH5wb3MgfmxlbiAoYnN0ciA6IHQpID1cbiAgbGV0IG9wZW4gQm9vbC5Ob25fc2hvcnRfY2lyY3VpdGluZyBpblxuICBsZXQgYnN0cl9sZW4gPSBsZW5ndGggYnN0ciBpblxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgYnN0cl9sZW4gLSBwb3MgPCBsZW4gdGhlbiBjaGVja19hcmdzX3Nsb3cgfmxvYyB+cG9zIH5sZW4gYnN0clxuOztcblxubGV0IGdldF9vcHRfbGVuIGJzdHIgfnBvcyA9IGZ1bmN0aW9uXG4gIHwgU29tZSBsZW4gLT4gbGVuXG4gIHwgTm9uZSAtPiBsZW5ndGggYnN0ciAtIHBvc1xuOztcblxuKCogQmxpdHRpbmcgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgOiAgc3JjOih0W0Bsb2NhbF9vcHRdKVxuICAtPiBzcmNfcG9zOmludFxuICAtPiBkc3Q6KHRbQGxvY2FsX29wdF0pXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmlnc3RyaW5nX2JsaXRfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG4oKiBFeHBvc2luZyB0aGUgZXh0ZXJuYWwgdmVyc2lvbiBvZiBnZXQvc2V0IHN1cHBvcnRzIGJldHRlciBpbmxpbmluZy4gKilcbmV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiB0IC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuZXh0ZXJuYWwgc2V0IDogdCAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuXG5tb2R1bGUgQmlnc3RyaW5nX3NlcXVlbmNlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5lbmRcblxubW9kdWxlIEJ5dGVzX3NlcXVlbmNlID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzXG5cbiAgbGV0IGNyZWF0ZSB+bGVuID0gQnl0ZXMuY3JlYXRlIGxlblxuICBsZXQgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoXG5lbmRcblxuaW5jbHVkZSBCbGl0Lk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgQmlnc3RyaW5nX3NlcXVlbmNlXG5cbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmQpXG5cbm1vZHVsZSBGcm9tX2J5dGVzID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKEJ5dGVzX3NlcXVlbmNlKVxuICAgIChzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzooYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDoodFtAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YlwiXG4gICAgICBbQEBub2FsbG9jXVxuXG4gICAgICBpbmNsdWRlIEJpZ3N0cmluZ19zZXF1ZW5jZVxuICAgIGVuZClcblxubW9kdWxlIFRvX2J5dGVzID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKEJpZ3N0cmluZ19zZXF1ZW5jZSlcbiAgICAoc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6KHRbQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDooYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWJcIlxuICAgICAgW0BAbm9hbGxvY11cblxuICAgICAgaW5jbHVkZSBCeXRlc19zZXF1ZW5jZVxuICAgIGVuZClcblxubW9kdWxlIEZyb21fc3RyaW5nID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzooc3RyaW5nW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6KHRbQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViXCJcbiAgICAgIFtAQG5vYWxsb2NdXG5cbiAgICAgIGluY2x1ZGUgQmlnc3RyaW5nX3NlcXVlbmNlXG4gICAgZW5kKVxuXG5tb2R1bGUgVG9fc3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgVG9fYnl0ZXNcbiAgaW5jbHVkZSBCbGl0Lk1ha2VfdG9fc3RyaW5nIChCaWdzdHJpbmcwKSAoVG9fYnl0ZXMpXG5lbmRcblxubGV0IG9mX3N0cmluZyA9IEZyb21fc3RyaW5nLnN1Ym9cbmxldCBvZl9ieXRlcyA9IEZyb21fYnl0ZXMuc3Vib1xubGV0IHRvX3N0cmluZyA9IFRvX3N0cmluZy5zdWJvXG5sZXQgdG9fYnl0ZXMgPSBUb19ieXRlcy5zdWJvXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG5sZXQgdF9vZl9zZXhwIDogU2V4cC50IC0+IHQgPSBmdW5jdGlvblxuICB8IEF0b20gc3RyIC0+IG9mX3N0cmluZyBzdHJcbiAgfCBMaXN0IF8gYXMgc2V4cCAtPlxuICAgIFNleHBsaWIwLlNleHBfY29udi5vZl9zZXhwX2Vycm9yIFwiYmlnc3RyaW5nX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGNvcHkgdCA6IHQgPSBzdWIgdCB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG5cbmxldCBjb25jYXQgPVxuICBsZXQgYXBwZW5kIH5zcmMgfmRzdCB+ZHN0X3Bvc19yZWYgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggc3JjIGluXG4gICAgbGV0IHNyY19wb3MgPSAwIGluXG4gICAgbGV0IGRzdF9wb3MgPSAhZHN0X3Bvc19yZWYgaW5cbiAgICBibGl0IH5kc3QgfmRzdF9wb3MgfnNyYyB+c3JjX3BvcyB+bGVuO1xuICAgIGRzdF9wb3NfcmVmIDo9IGRzdF9wb3MgKyBsZW5cbiAgaW5cbiAgZnVuID9zZXAgbGlzdCAtPlxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gY3JlYXRlIDBcbiAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgbGV0IGhlYWRfbGVuID0gbGVuZ3RoIGhlYWQgaW5cbiAgICAgIGxldCBzZXBfbGVuID0gT3B0aW9uLnZhbHVlX21hcCBzZXAgfmY6KGZ1biB0IC0+IGxlbmd0aCB0KSB+ZGVmYXVsdDowIGluXG4gICAgICBsZXQgdGFpbF9jb3VudCA9IExpc3QubGVuZ3RoIHRhaWwgaW5cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBoZWFkX2xlblxuICAgICAgICArIChzZXBfbGVuICogdGFpbF9jb3VudClcbiAgICAgICAgKyBMaXN0LnN1bSAobW9kdWxlIEludCkgdGFpbCB+ZjooZnVuIHQgLT4gbGVuZ3RoIHQpXG4gICAgICBpblxuICAgICAgbGV0IGRzdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICAgIGxldCBkc3RfcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgICBhcHBlbmQgfnNyYzpoZWFkIH5kc3QgfmRzdF9wb3NfcmVmO1xuICAgICAgTGlzdC5pdGVyIHRhaWwgfmY6KGZ1biBzcmMgLT5cbiAgICAgICAgKG1hdGNoIHNlcCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSBzZXAgLT4gYXBwZW5kIH5zcmM6c2VwIH5kc3QgfmRzdF9wb3NfcmVmKTtcbiAgICAgICAgYXBwZW5kIH5zcmMgfmRzdCB+ZHN0X3Bvc19yZWYpO1xuICAgICAgYXNzZXJ0ICghZHN0X3Bvc19yZWYgPSBsZW4pO1xuICAgICAgZHN0XG47O1xuXG5leHRlcm5hbCB1bnNhZmVfbWVtc2V0IDogdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gY2hhciAtPiB1bml0ID0gXCJiaWdzdHJpbmdfbWVtc2V0X3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IG1lbXNldCB0IH5wb3MgfmxlbiBjID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpO1xuICB1bnNhZmVfbWVtc2V0IHQgfnBvcyB+bGVuIGNcbjs7XG5cbigqIENvbXBhcmlzb24gKilcblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcFxuICA6ICB0XG4gIC0+IHBvczE6aW50XG4gIC0+IHRcbiAgLT4gcG9zMjppbnRcbiAgLT4gbGVuOmludFxuICAtPiBpbnRcbiAgPSBcImJpZ3N0cmluZ19tZW1jbXBfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgbWVtY21wIHQxIH5wb3MxIHQyIH5wb3MyIH5sZW4gPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3M6cG9zMSB+bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0MSk7XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvczpwb3MyIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQyKTtcbiAgdW5zYWZlX21lbWNtcCB0MSB+cG9zMSB0MiB+cG9zMiB+bGVuXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wX2J5dGVzXG4gIDogIHRcbiAgLT4gcG9zMTppbnRcbiAgLT4gQnl0ZXMudFxuICAtPiBwb3MyOmludFxuICAtPiBsZW46aW50XG4gIC0+IGludFxuICA9IFwiYmlnc3RyaW5nX21lbWNtcF9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBtZW1jbXBfYnl0ZXMgdDEgfnBvczEgYnl0ZXMgfnBvczIgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvczpwb3MxIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQxKTtcbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgIH5wb3M6cG9zMlxuICAgIH5sZW5cbiAgICB+dG90YWxfbGVuZ3RoOihCeXRlcy5sZW5ndGggYnl0ZXMpO1xuICB1bnNhZmVfbWVtY21wX2J5dGVzIHQxIH5wb3MxIGJ5dGVzIH5wb3MyIH5sZW5cbjs7XG5cbmxldCBjb21wYXJlIHQxIHQyID1cbiAgaWYgcGh5c19lcXVhbCB0MSB0MlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbGV0IGxlbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbGVuMiA9IGxlbmd0aCB0MiBpblxuICAgIGxldCBsZW4gPSBJbnQubWluIGxlbjEgbGVuMiBpblxuICAgIG1hdGNoIHVuc2FmZV9tZW1jbXAgdDEgfnBvczE6MCB0MiB+cG9zMjowIH5sZW4gd2l0aFxuICAgIHwgMCAtPiBpZiBsZW4xIDwgbGVuMiB0aGVuIC0xIGVsc2UgaWYgbGVuMSA+IGxlbjIgdGhlbiAxIGVsc2UgMFxuICAgIHwgbiAtPiBuKVxuOztcblxuZXh0ZXJuYWwgaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nXG4gIDogIEhhc2guc3RhdGVcbiAgLT4gdFxuICAtPiBIYXNoLnN0YXRlXG4gID0gXCJpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcIlxuW0BAbm9hbGxvY11cblxubGV0IF9tYWtpbmdfc3VyZV90aGVfQ19iaW5kaW5nX3Rha2VzX2FuX2ludCAoeCA6IEhhc2guc3RhdGUpID0gKHggOj4gaW50KVxubGV0IGhhc2hfZm9sZF90ID0gaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nXG5sZXQgaGFzaCA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5vZl9mb2xkIGhhc2hfZm9sZF90XG5cbnR5cGUgdF9mcm96ZW4gPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbmxldCBlcXVhbCB0MSB0MiA9XG4gIGlmIHBoeXNfZXF1YWwgdDEgdDJcbiAgdGhlbiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBsZW4xID0gbGVuZ3RoIHQxIGluXG4gICAgbGV0IGxlbjIgPSBsZW5ndGggdDIgaW5cbiAgICBJbnQuZXF1YWwgbGVuMSBsZW4yICYmIEludC5lcXVhbCAodW5zYWZlX21lbWNtcCB0MSB+cG9zMTowIHQyIH5wb3MyOjAgfmxlbjpsZW4xKSAwKVxuOztcblxuKCogU2VhcmNoICopXG5cbmV4dGVybmFsIHVuc2FmZV9maW5kIDogdCAtPiBjaGFyIC0+IHBvczppbnQgLT4gbGVuOmludCAtPiBpbnQgPSBcImJpZ3N0cmluZ19maW5kXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1tZW1cbiAgOiAgaGF5c3RhY2s6dFxuICAtPiBuZWVkbGU6dFxuICAtPiBoYXlzdGFja19wb3M6aW50XG4gIC0+IGhheXN0YWNrX2xlbjppbnRcbiAgLT4gbmVlZGxlX3BvczppbnRcbiAgLT4gbmVlZGxlX2xlbjppbnRcbiAgLT4gaW50XG4gID0gXCJiaWdzdHJpbmdfbWVtbWVtX2J5dGVjb2RlXCIgXCJiaWdzdHJpbmdfbWVtbWVtXCJcbltAQG5vYWxsb2NdXG5cbmxldCBmaW5kID8ocG9zID0gMCkgP2xlbiBjaHIgYnN0ciA9XG4gIGxldCBsZW4gPSBnZXRfb3B0X2xlbiBic3RyIH5wb3MgbGVuIGluXG4gIGNoZWNrX2FyZ3MgfmxvYzpcImZpbmRcIiB+cG9zIH5sZW4gYnN0cjtcbiAgbGV0IHJlcyA9IHVuc2FmZV9maW5kIGJzdHIgY2hyIH5wb3MgfmxlbiBpblxuICBpZiByZXMgPCAwIHRoZW4gTm9uZSBlbHNlIFNvbWUgcmVzXG47O1xuXG5sZXQgbWVtbWVtXG4gICAgICB+aGF5c3RhY2tcbiAgICAgIH5uZWVkbGVcbiAgICAgID8oaGF5c3RhY2tfcG9zID0gMClcbiAgICAgID9oYXlzdGFja19sZW5cbiAgICAgID8obmVlZGxlX3BvcyA9IDApXG4gICAgICA/bmVlZGxlX2xlblxuICAgICAgKClcbiAgPVxuICBsZXQgaGF5c3RhY2tfbGVuID0gZ2V0X29wdF9sZW4gaGF5c3RhY2sgfnBvczpoYXlzdGFja19wb3MgaGF5c3RhY2tfbGVuIGluXG4gIGxldCBuZWVkbGVfbGVuID0gZ2V0X29wdF9sZW4gbmVlZGxlIH5wb3M6bmVlZGxlX3BvcyBuZWVkbGVfbGVuIGluXG4gIGxldCByZXMgPVxuICAgIHVuc2FmZV9tZW1tZW0gfmhheXN0YWNrIH5uZWVkbGUgfmhheXN0YWNrX3BvcyB+aGF5c3RhY2tfbGVuIH5uZWVkbGVfcG9zIH5uZWVkbGVfbGVuXG4gIGluXG4gIGlmIHJlcyA8IDAgdGhlbiBOb25lIGVsc2UgU29tZSByZXNcbjs7XG5cbigqIHZpbTogc2V0IGZpbGV0eXBlPW9jYW1sIDogKilcblxuKCogQmluYXJ5LXBhY2tpbmcgbGlrZSBhY2Nlc3NvcnMgKilcblxuZXh0ZXJuYWwgaW50MzJfb2ZfaW50IDogaW50IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIGludDMyX3RvX2ludCA6IGludDMyIC0+IGludCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBpbnQ2NF9vZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgaW50NjRfdG9faW50IDogKGludDY0W0Bsb2NhbF0pIC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IChpbnQ2NFtAbG9jYWxdKSAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfMTYgOiB0IC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF8zMiA6IHQgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfNjQgOiB0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0dVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0XzE2IDogKHRbQGxvY2FsX29wdF0pIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2dVwiXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfMzJcbiAgOiAgKHRbQGxvY2FsX29wdF0pXG4gIC0+IGludFxuICAtPiBpbnQzMlxuICAtPiB1bml0XG4gID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJ1XCJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF82NCA6IHQgLT4gaW50IC0+IChpbnQ2NFtAbG9jYWxdKSAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0NjR1XCJcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBnZXRfMTYgKHQgOiB0KSAocG9zIDogaW50KSA6IGludCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcImdldF8xNlwiIH5wb3MgfmxlbjoyIHQ7XG4gIHVuc2FmZV9nZXRfMTYgdCBwb3Ncbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gZ2V0XzMyICh0IDogdCkgKHBvcyA6IGludCkgOiBpbnQzMiA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcImdldF8zMlwiIH5wb3Mgfmxlbjo0IHQ7XG4gIHVuc2FmZV9nZXRfMzIgdCBwb3Ncbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gZ2V0XzY0ICh0IDogdCkgKHBvcyA6IGludCkgOiBpbnQ2NCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcImdldF82NFwiIH5wb3Mgfmxlbjo4IHQ7XG4gIHVuc2FmZV9nZXRfNjQgdCBwb3Ncbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2V0XzE2X3RydW5jICh0IDogdCkgKHBvcyA6IGludCkgKHYgOiBpbnQpIDogdW5pdCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcInNldF8xNlwiIH5wb3MgfmxlbjoyIHQ7XG4gIHVuc2FmZV9zZXRfMTYgdCBwb3MgdlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzZXRfMzIgKHQgOiB0KSAocG9zIDogaW50KSAodiA6IGludDMyKSA6IHVuaXQgPVxuICBjaGVja19hcmdzIH5sb2M6XCJzZXRfMzJcIiB+cG9zIH5sZW46NCB0O1xuICB1bnNhZmVfc2V0XzMyIHQgcG9zIHZcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2V0XzY0ICh0IDogdCkgKHBvcyA6IGludCkgKCh2IDogaW50NjQpIFtAbG9jYWxdKSA6IHVuaXQgPVxuICBjaGVja19hcmdzIH5sb2M6XCJzZXRfNjRcIiB+cG9zIH5sZW46OCB0O1xuICB1bnNhZmVfc2V0XzY0IHQgcG9zIHZcbjs7XG5cbmxldCBzaWduX2V4dGVuZF8xNiB1ID0gKHUgbHNsIChJbnQubnVtX2JpdHMgLSAxNikpIGFzciAoSW50Lm51bV9iaXRzIC0gMTYpXG5cbmxldCBjaGVja192YWxpZF91aW50MTYgeCB+bG9jID1cbiAgaWYgeCA8IDAgfHwgeCA+IDB4RkZGRlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfaW50MTYgeCB+bG9jID1cbiAgaWYgeCA8IC0weDgwMDAgfHwgeCA+IDB4N0ZGRlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIChzaWduZWQpIDE2LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfdWludDggeCB+bG9jID1cbiAgaWYgeCA8IDAgfHwgeCA+IDB4RkZcbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfaW50OCB4IH5sb2MgPVxuICBpZiB4IDwgLTB4ODAgfHwgeCA+IDB4N0ZcbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCAoc2lnbmVkKSA4LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfaW50MzIgPVxuICBpZiBub3QgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gXyB+bG9jOl8gLT4gKClcbiAgZWxzZVxuICAgIGZ1biB4IH5sb2MgLT5cbiAgICAgIGlmIHggPj0gLTEgbHNsIDMxICYmIHggPCAxIGxzbCAzMVxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCAoc2lnbmVkKSAzMi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQzMiA9XG4gIGlmIG5vdCBhcmNoX3NpeHR5Zm91clxuICB0aGVuXG4gICAgZnVuIHggfmxvYyAtPlxuICAgICAgaWYgeCA+PSAwXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG4gIGVsc2VcbiAgICBmdW4geCB+bG9jIC0+XG4gICAgICBpZiB4ID49IDAgJiYgeCA8IDEgbHNsIDMyXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfdWludDY0IHggfmxvYyA9XG4gIGlmIHggPj0gMFxuICB0aGVuICgpXG4gIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgNjQtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCB1bnNhZmVfcmVhZF9pbnQxNiB0IH5wb3MgPSBzaWduX2V4dGVuZF8xNiAodW5zYWZlX2dldF8xNiB0IHBvcylcbmxldCB1bnNhZmVfcmVhZF9pbnQxNl9zd2FwIHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2IChzd2FwMTYgKHVuc2FmZV9nZXRfMTYgdCBwb3MpKVxubGV0IHVuc2FmZV93cml0ZV9pbnQxNiB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgeFxubGV0IHVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyAoc3dhcDE2IHgpXG5sZXQgcmVhZF9pbnQxNiB0IH5wb3MgPSBzaWduX2V4dGVuZF8xNiAoZ2V0XzE2IHQgcG9zKVxubGV0IHJlYWRfaW50MTZfc3dhcCB0IH5wb3MgPSBzaWduX2V4dGVuZF8xNiAoc3dhcDE2IChnZXRfMTYgdCBwb3MpKVxuXG5sZXQgd3JpdGVfaW50MTZfZXhuIHQgfnBvcyB4ID1cbiAgY2hlY2tfdmFsaWRfaW50MTYgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyB4XG47O1xuXG5sZXQgd3JpdGVfaW50MTZfc3dhcF9leG4gdCB+cG9zIHggPVxuICAoKiBPbWl0IFwiX3N3YXBcIiBmcm9tIHRoZSBlcnJvciBtZXNzYWdlIGl0J3MgYmktZW5kaWFuLiAqKVxuICBjaGVja192YWxpZF9pbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIChzd2FwMTYgeClcbjs7XG5cbmxldCB1bnNhZmVfcmVhZF91aW50MTYgdCB+cG9zID0gdW5zYWZlX2dldF8xNiB0IHBvc1xubGV0IHVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwIHQgfnBvcyA9IHN3YXAxNiAodW5zYWZlX2dldF8xNiB0IHBvcylcbmxldCB1bnNhZmVfd3JpdGVfdWludDE2IHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyB4XG5sZXQgdW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyAoc3dhcDE2IHgpXG5sZXQgcmVhZF91aW50MTYgdCB+cG9zID0gZ2V0XzE2IHQgcG9zXG5sZXQgcmVhZF91aW50MTZfc3dhcCB0IH5wb3MgPSBzd2FwMTYgKGdldF8xNiB0IHBvcylcblxubGV0IHdyaXRlX3VpbnQxNl9leG4gdCB+cG9zIHggPVxuICBjaGVja192YWxpZF91aW50MTYgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX3VpbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgeFxuOztcblxubGV0IHdyaXRlX3VpbnQxNl9zd2FwX2V4biB0IH5wb3MgeCA9XG4gICgqIE9taXQgXCJfc3dhcFwiIGZyb20gdGhlIGVycm9yIG1lc3NhZ2UgaXQncyBiaS1lbmRpYW4uICopXG4gIGNoZWNrX3ZhbGlkX3VpbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfdWludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyAoc3dhcDE2IHgpXG47O1xuXG5sZXQgdW5zYWZlX3JlYWRfaW50MzJfaW50IHQgfnBvcyA9IGludDMyX3RvX2ludCAodW5zYWZlX2dldF8zMiB0IHBvcylcbmxldCB1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKHN3YXAzMiAodW5zYWZlX2dldF8zMiB0IHBvcykpXG5sZXQgdW5zYWZlX3JlYWRfaW50MzIgdCB+cG9zID0gdW5zYWZlX2dldF8zMiB0IHBvc1xubGV0IHVuc2FmZV9yZWFkX2ludDMyX3N3YXAgdCB+cG9zID0gc3dhcDMyICh1bnNhZmVfZ2V0XzMyIHQgcG9zKVxubGV0IHVuc2FmZV93cml0ZV9pbnQzMiB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgeFxubGV0IHVuc2FmZV93cml0ZV9pbnQzMl9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyAoc3dhcDMyIHgpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyX2ludCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgKGludDMyX29mX2ludCB4KVxubGV0IHVuc2FmZV93cml0ZV9pbnQzMl9pbnRfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgKHN3YXAzMiAoaW50MzJfb2ZfaW50IHgpKVxubGV0IHJlYWRfaW50MzJfaW50IHQgfnBvcyA9IGludDMyX3RvX2ludCAoZ2V0XzMyIHQgcG9zKVxubGV0IHJlYWRfaW50MzJfaW50X3N3YXAgdCB+cG9zID0gaW50MzJfdG9faW50IChzd2FwMzIgKGdldF8zMiB0IHBvcykpXG5sZXQgcmVhZF9pbnQzMiB0IH5wb3MgPSBnZXRfMzIgdCBwb3NcbmxldCByZWFkX2ludDMyX3N3YXAgdCB+cG9zID0gc3dhcDMyIChnZXRfMzIgdCBwb3MpXG5sZXQgd3JpdGVfaW50MzIgdCB+cG9zIHggPSBzZXRfMzIgdCBwb3MgeFxubGV0IHdyaXRlX2ludDMyX3N3YXAgdCB+cG9zIHggPSBzZXRfMzIgdCBwb3MgKHN3YXAzMiB4KVxuXG5sZXQgd3JpdGVfaW50MzJfaW50X2V4biB0IH5wb3MgeCA9XG4gIGNoZWNrX3ZhbGlkX2ludDMyIHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQzMl9pbnRcIjtcbiAgc2V0XzMyIHQgcG9zIChpbnQzMl9vZl9pbnQgeClcbjs7XG5cbmxldCB3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4gdCB+cG9zIHggPVxuICAoKiBPbWl0IFwiX3N3YXBcIiBmcm9tIHRoZSBlcnJvciBtZXNzYWdlIGl0J3MgYmktZW5kaWFuLiAqKVxuICBjaGVja192YWxpZF9pbnQzMiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MzJfaW50XCI7XG4gIHNldF8zMiB0IHBvcyAoc3dhcDMyIChpbnQzMl9vZl9pbnQgeCkpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X2ludCB0IH5wb3MgPSBpbnQ2NF90b19pbnQgKHVuc2FmZV9nZXRfNjQgdCBwb3MpXG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAgdCB+cG9zID1cbiAgaW50NjRfdG9faW50IChzd2FwNjQgKHVuc2FmZV9nZXRfNjQgdCBwb3MpKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NCB0IH5wb3MgPSB1bnNhZmVfZ2V0XzY0IHQgcG9zXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X3N3YXAgdCB+cG9zID0gc3dhcDY0ICh1bnNhZmVfZ2V0XzY0IHQgcG9zKVxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjQgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzY0IHQgcG9zIHhcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzY0IHQgcG9zIChzd2FwNjQgeClcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0X2ludCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgKGludDY0X29mX2ludCB4KVxuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgeCA9XG4gIHVuc2FmZV9zZXRfNjQgdCBwb3MgKHN3YXA2NCAoaW50NjRfb2ZfaW50IHgpKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X2ludCB0IH5wb3MgPSBpbnQ2NF90b19pbnQgKGdldF82NCB0IHBvcylcbmxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgPSBpbnQ2NF90b19pbnQgKHN3YXA2NCAoZ2V0XzY0IHQgcG9zKSlcbmxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NCB0IH5wb3MgPSBnZXRfNjQgdCBwb3NcbmxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9zd2FwIHQgfnBvcyA9IHN3YXA2NCAoZ2V0XzY0IHQgcG9zKVxubGV0IHdyaXRlX2ludDY0IHQgfnBvcyAoeCBbQGxvY2FsXSkgPSBzZXRfNjQgdCBwb3MgeFxubGV0IHdyaXRlX2ludDY0X3N3YXAgdCB+cG9zICh4IFtAbG9jYWxdKSA9IHNldF82NCB0IHBvcyAoc3dhcDY0IHgpXG5sZXQgd3JpdGVfaW50NjRfaW50IHQgfnBvcyB4ID0gc2V0XzY0IHQgcG9zIChpbnQ2NF9vZl9pbnQgeClcbmxldCB3cml0ZV9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgeCA9IHNldF82NCB0IHBvcyAoc3dhcDY0IChpbnQ2NF9vZl9pbnQgeCkpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MTYgZWxzZSB1bnNhZmVfcmVhZF9pbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDE2X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQxNlxuOztcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfdWludDE2IGVsc2UgdW5zYWZlX3JlYWRfdWludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfdWludDE2XG47O1xuXG5sZXQgZ2V0X2ludDE2X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQxNiBlbHNlIHJlYWRfaW50MTZfc3dhcFxubGV0IGdldF9pbnQxNl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MTZfc3dhcCBlbHNlIHJlYWRfaW50MTZcbmxldCBnZXRfdWludDE2X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF91aW50MTYgZWxzZSByZWFkX3VpbnQxNl9zd2FwXG5sZXQgZ2V0X3VpbnQxNl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfdWludDE2X3N3YXAgZWxzZSByZWFkX3VpbnQxNlxuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQxNiBlbHNlIHVuc2FmZV93cml0ZV9pbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDE2XG47O1xuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfdWludDE2IGVsc2UgdW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfdWludDE2X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfdWludDE2XG47O1xuXG5sZXQgc2V0X2ludDE2X2JlX2V4biA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDE2X2V4biBlbHNlIHdyaXRlX2ludDE2X3N3YXBfZXhuXG5sZXQgc2V0X2ludDE2X2xlX2V4biA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDE2X3N3YXBfZXhuIGVsc2Ugd3JpdGVfaW50MTZfZXhuXG5cbmxldCBzZXRfdWludDE2X2JlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX3VpbnQxNl9leG4gZWxzZSB3cml0ZV91aW50MTZfc3dhcF9leG5cbjs7XG5cbmxldCBzZXRfdWludDE2X2xlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX3VpbnQxNl9zd2FwX2V4biBlbHNlIHdyaXRlX3VpbnQxNl9leG5cbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMiBlbHNlIHVuc2FmZV9yZWFkX2ludDMyX3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50MzJcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MzIgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMl9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyXG47O1xuXG5sZXQgZ2V0X2ludDMyX3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyIGVsc2UgcmVhZF9pbnQzMl9zd2FwXG5sZXQgZ2V0X2ludDMyX3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyX3N3YXAgZWxzZSByZWFkX2ludDMyXG5sZXQgc2V0X2ludDMyX3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQzMiBlbHNlIHdyaXRlX2ludDMyX3N3YXBcbmxldCBzZXRfaW50MzJfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyX3N3YXAgZWxzZSB3cml0ZV9pbnQzMlxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyX2ludCBlbHNlIHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50MzJfaW50XG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMl9pbnQgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyX2ludFxuOztcblxubGV0IGdldF9pbnQzMl9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzJfaW50IGVsc2UgcmVhZF9pbnQzMl9pbnRfc3dhcFxubGV0IGdldF9pbnQzMl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzJfaW50X3N3YXAgZWxzZSByZWFkX2ludDMyX2ludFxuXG5sZXQgc2V0X2ludDMyX2JlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyX2ludF9leG4gZWxzZSB3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG5cbjs7XG5cbmxldCBzZXRfaW50MzJfbGVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzJfaW50X3N3YXBfZXhuIGVsc2Ugd3JpdGVfaW50MzJfaW50X2V4blxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfYmVfdHJ1bmMgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9pbnQgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfbGVfdHJ1bmMgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X2ludFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjRfaW50IGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0X2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRcbjs7XG5cbmxldCBnZXRfaW50NjRfYmVfdHJ1bmMgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X2ludCBlbHNlIHJlYWRfaW50NjRfaW50X3N3YXBcbmxldCBnZXRfaW50NjRfbGVfdHJ1bmMgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X2ludF9zd2FwIGVsc2UgcmVhZF9pbnQ2NF9pbnRcbmxldCBzZXRfaW50NjRfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NF9pbnQgZWxzZSB3cml0ZV9pbnQ2NF9pbnRfc3dhcFxubGV0IHNldF9pbnQ2NF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0X2ludF9zd2FwIGVsc2Ugd3JpdGVfaW50NjRfaW50XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50NjRcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjQgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0XG47O1xuXG5tb2R1bGUgTG9jYWwgPSBzdHJ1Y3RcbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9sb2NhbCB0IH5wb3MgPVxuICAgICAoSW50NjQuKCArICkgMEwgKHVuc2FmZV9yZWFkX2ludDY0IHQgfnBvcykpXG4gIDs7XG5cbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwX2xvY2FsIHQgfnBvcyA9XG4gICAgIChJbnQ2NC4oICsgKSAwTCAodW5zYWZlX3JlYWRfaW50NjRfc3dhcCB0IH5wb3MpKVxuICA7O1xuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9sb2NhbCB0IH5wb3MgPVxuICAgICAoSW50NjQuKCArICkgMEwgKHJlYWRfaW50NjQgdCB+cG9zKSlcbiAgOztcblxuICBsZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfc3dhcF9sb2NhbCB0IH5wb3MgPVxuICAgICAoSW50NjQuKCArICkgMEwgKHJlYWRfaW50NjRfc3dhcCB0IH5wb3MpKVxuICA7O1xuXG4gIGxldCB1bnNhZmVfZ2V0X2ludDY0X3RfYmUgPVxuICAgIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X2xvY2FsIGVsc2UgdW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbFxuICA7O1xuXG4gIGxldCB1bnNhZmVfZ2V0X2ludDY0X3RfbGUgPVxuICAgIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X3N3YXBfbG9jYWwgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9sb2NhbFxuICA7O1xuXG4gIGxldCBnZXRfaW50NjRfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfbG9jYWwgZWxzZSByZWFkX2ludDY0X3N3YXBfbG9jYWxcbiAgbGV0IGdldF9pbnQ2NF90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9zd2FwX2xvY2FsIGVsc2UgcmVhZF9pbnQ2NF9sb2NhbFxuZW5kXG5cbmxldCBnZXRfaW50NjRfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjQgZWxzZSByZWFkX2ludDY0X3N3YXBcbmxldCBnZXRfaW50NjRfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfc3dhcCBlbHNlIHJlYWRfaW50NjRcbmxldCBzZXRfaW50NjRfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0IGVsc2Ugd3JpdGVfaW50NjRfc3dhcFxubGV0IHNldF9pbnQ2NF90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjRfc3dhcCBlbHNlIHdyaXRlX2ludDY0XG5cbmxldCBpbnQ2NF9jb252X2Vycm9yICgpID1cbiAgZmFpbHdpdGggXCJ1bnNhZmVfcmVhZF9pbnQ2NDogdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkIHVuYm94ZWQhXCJcbjs7XG5cbmxldCB1aW50NjRfY29udl9lcnJvciAoKSA9XG4gIGZhaWx3aXRoIFwidW5zYWZlX3JlYWRfdWludDY0OiB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgdW5ib3hlZCFcIlxuOztcblxuKCogW1BvbHldIGlzIHJlcXVpcmVkIHNvIHRoYXQgd2UgY2FuIGNvbXBhcmUgdW5ib3hlZCBbaW50NjRdLiAqKVxubGV0W0BpbmxpbmUgYWx3YXlzXSBpbnQ2NF90b19pbnRfZXhuIChuIFtAbG9jYWxdKSA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBpZiBQb2x5LihuID49IC0weDQwMDBfMDAwMF8wMDAwXzAwMDBMICYmIG4gPCAweDQwMDBfMDAwMF8wMDAwXzAwMDBMKVxuICAgIHRoZW4gaW50NjRfdG9faW50IG5cbiAgICBlbHNlIGludDY0X2NvbnZfZXJyb3IgKClcbiAgZWxzZSBpZiBQb2x5LihuID49IC0weDAwMDBfMDAwMF80MDAwXzAwMDBMICYmIG4gPCAweDAwMDBfMDAwMF80MDAwXzAwMDBMKVxuICB0aGVuIGludDY0X3RvX2ludCBuXG4gIGVsc2UgaW50NjRfY29udl9lcnJvciAoKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1aW50NjRfdG9faW50X2V4biBuID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGlmIFBvbHkuKG4gPj0gMEwgJiYgbiA8IDB4NDAwMF8wMDAwXzAwMDBfMDAwMEwpXG4gICAgdGhlbiBpbnQ2NF90b19pbnQgblxuICAgIGVsc2UgdWludDY0X2NvbnZfZXJyb3IgKClcbiAgZWxzZSBpZiBQb2x5LihuID49IDBMICYmIG4gPCAweDAwMDBfMDAwMF80MDAwXzAwMDBMKVxuICB0aGVuIGludDY0X3RvX2ludCBuXG4gIGVsc2UgdWludDY0X2NvbnZfZXJyb3IgKClcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X2ludDY0X2JlX2V4biB0IH5wb3MgPVxuICBpbnQ2NF90b19pbnRfZXhuICh1bnNhZmVfZ2V0X2ludDY0X3RfYmUgdCB+cG9zKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfaW50NjRfbGVfZXhuIHQgfnBvcyA9XG4gIGludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9sZSB0IH5wb3MpXG47O1xuXG5sZXQgZ2V0X2ludDY0X2JlX2V4biB0IH5wb3MgPSBpbnQ2NF90b19pbnRfZXhuIChnZXRfaW50NjRfdF9iZSB0IH5wb3MpXG5sZXQgZ2V0X2ludDY0X2xlX2V4biB0IH5wb3MgPSBpbnQ2NF90b19pbnRfZXhuIChnZXRfaW50NjRfdF9sZSB0IH5wb3MpXG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zID1cbiAgdWludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9iZSB0IH5wb3MpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF91aW50NjRfbGVfZXhuIHQgfnBvcyA9XG4gIHVpbnQ2NF90b19pbnRfZXhuICh1bnNhZmVfZ2V0X2ludDY0X3RfbGUgdCB+cG9zKVxuOztcblxubGV0IGdldF91aW50NjRfYmVfZXhuIHQgfnBvcyA9IHVpbnQ2NF90b19pbnRfZXhuIChnZXRfaW50NjRfdF9iZSB0IH5wb3MpXG5sZXQgZ2V0X3VpbnQ2NF9sZV9leG4gdCB+cG9zID0gdWludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2xlIHQgfnBvcylcbmxldCB1bnNhZmVfc2V0X3VpbnQ2NF9iZSA9IHVuc2FmZV9zZXRfaW50NjRfYmVcbmxldCB1bnNhZmVfc2V0X3VpbnQ2NF9sZSA9IHVuc2FmZV9zZXRfaW50NjRfbGVcblxubGV0IHNldF91aW50NjRfYmVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDY0IH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQ2NF9iZV9leG5cIiBuO1xuICBzZXRfaW50NjRfYmUgdCB+cG9zIG5cbjs7XG5cbmxldCBzZXRfdWludDY0X2xlX2V4biB0IH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQ2NCB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50NjRfbGVfZXhuXCIgbjtcbiAgc2V0X2ludDY0X2xlIHQgfnBvcyBuXG47O1xuXG4oKiBUeXBlIGFubm90YXRpb25zIG9uIHRoZSBbdF1zIGFyZSBpbXBvcnRhbnQgaGVyZTogaW4gb3JkZXIgZm9yIHRoZSBjb21waWxlciB0byBnZW5lcmF0ZVxuICAgb3B0aW1pemVkIGNvZGUsIGl0IG5lZWRzIHRvIGtub3cgdGhlIGZ1bGx5IGluc3RhbnRpYXRlZCB0eXBlIG9mIHRoZSBiaWdhcnJheS4gVGhpcyBpc1xuICAgYmVjYXVzZSB0aGUgdHlwZSBvZiB0aGUgYmlnYXJyYXkgZW5jb2RlcyB0aGUgZWxlbWVudCBraW5kIGFuZCB0aGUgbGF5b3V0IG9mIHRoZVxuICAgYmlnYXJyYXkuIFdpdGhvdXQgdGhlIGFubm90YXRpb24gdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBhIEMgY2FsbCB0byB0aGUgZ2VuZXJpYyBhY2Nlc3NcbiAgIGZ1bmN0aW9ucy4gKilcbmxldCB1bnNhZmVfc2V0X3VpbnQ4ICh0IDogdCkgfnBvcyBuID0gQXJyYXkxLnVuc2FmZV9zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCBuKVxuXG5sZXQgdW5zYWZlX3NldF9pbnQ4ICh0IDogdCkgfnBvcyBuID1cbiAgKCogSW4gYWxsIHRoZSBzZXQgZnVuY3Rpb25zIHdoZXJlIHRoZXJlIGFyZSB0aGVzZSB0ZXN0cywgaXQgbG9va3MgbGlrZSB0aGUgdGVzdCBjb3VsZCBiZVxuICAgICByZW1vdmVkLCBzaW5jZSB0aGV5IGFyZSBvbmx5IGNoYW5naW5nIHRoZSB2YWx1ZXMgb2YgdGhlIGJ5dGVzIHRoYXQgYXJlIG5vdFxuICAgICB3cml0dGVuLiAqKVxuICBsZXQgbiA9IGlmIG4gPCAwIHRoZW4gbiArIDI1NiBlbHNlIG4gaW5cbiAgQXJyYXkxLnVuc2FmZV9zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCBuKVxuOztcblxubGV0IHVuc2FmZV9nZXRfdWludDggKHQgOiB0KSB+cG9zID0gQ2hhci50b19pbnQgKEFycmF5MS51bnNhZmVfZ2V0IHQgcG9zKVxuXG5sZXQgdW5zYWZlX2dldF9pbnQ4ICh0IDogdCkgfnBvcyA9XG4gIGxldCBuID0gQ2hhci50b19pbnQgKEFycmF5MS51bnNhZmVfZ2V0IHQgcG9zKSBpblxuICBpZiBuID49IDEyOCB0aGVuIG4gLSAyNTYgZWxzZSBuXG47O1xuXG5sZXQgc2V0X3VpbnQ4X2V4biAodCA6IHQpIH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQ4IH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQ4X2V4blwiIG47XG4gIEFycmF5MS5zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCBuKVxuOztcblxubGV0IHNldF9pbnQ4X2V4biAodCA6IHQpIH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX2ludDggfmxvYzpcIkJpZ3N0cmluZy5zZXRfaW50OF9leG5cIiBuO1xuICBsZXQgbiA9IGlmIG4gPCAwIHRoZW4gbiArIDI1NiBlbHNlIG4gaW5cbiAgQXJyYXkxLnNldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgZ2V0X3VpbnQ4ICh0IDogdCkgfnBvcyA9IENoYXIudG9faW50IChBcnJheTEuZ2V0IHQgcG9zKVxuXG5sZXQgZ2V0X2ludDggKHQgOiB0KSB+cG9zID1cbiAgbGV0IG4gPSBDaGFyLnRvX2ludCAoQXJyYXkxLmdldCB0IHBvcykgaW5cbiAgaWYgbiA+PSAxMjggdGhlbiBuIC0gMjU2IGVsc2UgblxuOztcblxubGV0IG1hc2szMl9uID0gU3RkbGliLk5hdGl2ZWludC4oc3ViIChzaGlmdF9sZWZ0IDFuIDMyKSAxbilcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1aW50MzJfb2ZfaW50MzJfdCBuID1cbiAgaWYgbm90X29uXzMyYml0XG4gIHRoZW5cbiAgICAoKiB1c2UgQ2FtbC5OYXRpdmVpbnQgdG8gZW5zdXJlIGlubGluaW5nIGV2ZW4gd2l0aG91dCB4LWxpYnJhcnktaW5saW5pbmcgKilcbiAgICBTdGRsaWIuTmF0aXZlaW50Lih0b19pbnQgKGxvZ2FuZCAob2ZfaW50MzIgbikgbWFzazMyX24pKVxuICBlbHNlIGludDMyX3RvX2ludCBuXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX3NldF91aW50MzJfbGUgdCB+cG9zIG4gPSB1bnNhZmVfc2V0X2ludDMyX3RfbGUgdCB+cG9zIChpbnQzMl9vZl9pbnQgbilcbmxldFtAaW5saW5lXSB1bnNhZmVfc2V0X3VpbnQzMl9iZSB0IH5wb3MgbiA9IHVuc2FmZV9zZXRfaW50MzJfdF9iZSB0IH5wb3MgKGludDMyX29mX2ludCBuKVxuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF91aW50MzJfbGUgdCB+cG9zID1cbiAgdWludDMyX29mX2ludDMyX3QgKHVuc2FmZV9nZXRfaW50MzJfdF9sZSB0IH5wb3MpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF91aW50MzJfYmUgdCB+cG9zID1cbiAgdWludDMyX29mX2ludDMyX3QgKHVuc2FmZV9nZXRfaW50MzJfdF9iZSB0IH5wb3MpXG47O1xuXG5sZXQgc2V0X3VpbnQzMl9sZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50MzIgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDMyX2xlX2V4blwiIG47XG4gIGxldCBuID0gaWYgbm90X29uXzMyYml0ICYmIG4gPj0gMSBsc2wgMzEgdGhlbiBuIC0gKDEgbHNsIDMyKSBlbHNlIG4gaW5cbiAgc2V0X2ludDMyX2xlX2V4biB0IH5wb3MgblxuOztcblxubGV0IHNldF91aW50MzJfYmVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDMyIH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQzMl9iZV9leG5cIiBuO1xuICBsZXQgbiA9IGlmIG5vdF9vbl8zMmJpdCAmJiBuID49IDEgbHNsIDMxIHRoZW4gbiAtICgxIGxzbCAzMikgZWxzZSBuIGluXG4gIHNldF9pbnQzMl9iZV9leG4gdCB+cG9zIG5cbjs7XG5cbmxldCBnZXRfdWludDMyX2xlIHQgfnBvcyA9IHVpbnQzMl9vZl9pbnQzMl90IChnZXRfaW50MzJfdF9sZSB0IH5wb3MpXG5sZXQgZ2V0X3VpbnQzMl9iZSB0IH5wb3MgPSB1aW50MzJfb2ZfaW50MzJfdCAoZ2V0X2ludDMyX3RfYmUgdCB+cG9zKVxuXG5tb2R1bGUgSW50X3JlcHIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEYgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB0X2Zyb3plblxuXG4gICAgbGV0IGdldF91aW50OCB0IHBvcyA9IGdldF91aW50OCB0IH5wb3NcbiAgICBsZXQgc2V0X3VpbnQ4IHQgcG9zIHggPSBBcnJheTEuc2V0IHQgcG9zIChDaGFyLnVuc2FmZV9vZl9pbnQgeClcbiAgICBsZXQgZ2V0X3VpbnQxNl9uZSB0IHBvcyA9IGdldF8xNiB0IHBvc1xuICAgIGxldCBzZXRfdWludDE2X25lIHQgcG9zIHggPSBzZXRfMTZfdHJ1bmMgdCBwb3MgeFxuICAgIGxldCBnZXRfaW50MzJfbmUgdCBwb3MgPSBnZXRfMzIgdCBwb3NcbiAgICBsZXQgc2V0X2ludDMyX25lIHQgcG9zIHggPSBzZXRfMzIgdCBwb3MgeFxuICAgIGxldCBnZXRfaW50NjRfbmUgdCBwb3MgPSBnZXRfNjQgdCBwb3NcbiAgICBsZXQgc2V0X2ludDY0X25lIHQgcG9zIHggPSBzZXRfNjQgdCBwb3MgeFxuICBlbmRcblxuICBpbmNsdWRlIEludF9yZXByLk1ha2VfZ2V0IChGKVxuICBpbmNsdWRlIEludF9yZXByLk1ha2Vfc2V0IChGKVxuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdF9mcm96ZW5cblxuICAgICAgbGV0IGdldF91aW50OCB0IHBvcyA9IHVuc2FmZV9nZXRfdWludDggdCB+cG9zXG4gICAgICBsZXQgc2V0X3VpbnQ4IHQgcG9zIHggPSB1bnNhZmVfc2V0X3VpbnQ4IHQgfnBvcyB4XG4gICAgICBsZXQgZ2V0X3VpbnQxNl9uZSB0IHBvcyA9IHVuc2FmZV9nZXRfMTYgdCBwb3NcbiAgICAgIGxldCBzZXRfdWludDE2X25lIHQgcG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIHhcbiAgICAgIGxldCBnZXRfaW50MzJfbmUgdCBwb3MgPSB1bnNhZmVfZ2V0XzMyIHQgcG9zXG4gICAgICBsZXQgc2V0X2ludDMyX25lIHQgcG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIHhcbiAgICAgIGxldCBnZXRfaW50NjRfbmUgdCBwb3MgPSB1bnNhZmVfZ2V0XzY0IHQgcG9zXG4gICAgICBsZXQgc2V0X2ludDY0X25lIHQgcG9zIHggPSB1bnNhZmVfc2V0XzY0IHQgcG9zIHhcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9nZXQgKEYpXG4gICAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX3NldCAoRilcbiAgZW5kXG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHNpZ25fZXh0ZW5kXzE2ID0gc2lnbl9leHRlbmRfMTZcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgQmxpdFxuaW5jbHVkZSBUZXN0X2JsaXRfaW50ZlxuXG5tb2R1bGUgdHlwZSBTX2dlbiA9IHNpZ1xuICBvcGVuIEJsaXRcblxuICB0eXBlICdhIHNyY1xuICB0eXBlICdhIGRzdFxuXG4gICgqICB2YWwgYmxpdCAgICAgICAgOiAoJ2Egc3JjLCAnYSBkc3QpIGJsaXQqKVxuICB2YWwgYmxpdG8gOiAoJ2Egc3JjLCAnYSBkc3QpIGJsaXRvXG5cbiAgKCogIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSBzcmMsICdhIGRzdCkgYmxpdCopXG4gIHZhbCBzdWIgOiAoJ2Egc3JjLCAnYSBkc3QpIHN1YlxuXG4gICgqdmFsIHN1Ym8gICAgICAgIDogKCdhIHNyYywgJ2EgZHN0KSBzdWJvKilcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfdGVzdHNfZ2VuID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlcXVhbCA6IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbFxuXG4gICAgdmFsIG9mX2Jvb2wgOiBib29sIC0+IGJvb2wgdFxuICBlbmRcblxuICB0eXBlICdhIHpcblxuICBtb2R1bGUgU3JjIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbGVuZ3RoIDogKF8gdFtAbG9jYWxdKSAtPiBpbnRcbiAgICB2YWwgY3JlYXRlX2Jvb2wgOiBsZW46aW50IC0+IGJvb2wgeiB0XG4gICAgdmFsIGdldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnRcbiAgICB2YWwgc2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudCAtPiB1bml0XG4gIGVuZFxuXG4gIG1vZHVsZSBEc3QgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBsZW5ndGggOiAoXyB0W0Bsb2NhbF0pIC0+IGludFxuICAgIHZhbCBjcmVhdGVfYm9vbCA6IGxlbjppbnQgLT4gYm9vbCB6IHRcbiAgICB2YWwgZ2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudFxuICAgIHZhbCBzZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50IC0+IHVuaXRcbiAgICB2YWwgb3ZlcmxhcHBpbmdfc3JjX2RzdCA6IFsgYERvX25vdF9jaGVjayB8IGBDaGVjayBvZiAnYSBTcmMudCAtPiAnYSB0IF1cbiAgZW5kXG5lbmRcblxubW9kdWxlIFRlc3RfZ2VuXG4gICAgKEZvcl90ZXN0cyA6IEZvcl90ZXN0c19nZW4pXG4gICAgKFRlc3RlZCA6IFNfZ2VuXG4gICAgIHdpdGggdHlwZSAnYSBzcmMgOj0gJ2EgRm9yX3Rlc3RzLlNyYy50XG4gICAgIHdpdGggdHlwZSAnYSBkc3QgOj0gJ2EgRm9yX3Rlc3RzLkRzdC50KSA9XG5zdHJ1Y3RcbiAgb3BlbiBUZXN0ZWRcbiAgb3BlbiBGb3JfdGVzdHNcblxuICBsZXQgaW5pdCB+bGVuIH5jcmVhdGUgfnNldCB+ZiA9XG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbiBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBzZXQgdCBpIChmIGkpXG4gICAgZG9uZTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGVsdDEgPSBFbHQub2ZfYm9vbCB0cnVlXG4gIGxldCBlbHQyID0gRWx0Lm9mX2Jvb2wgZmFsc2VcbiAgbGV0ICgpID0gYXNzZXJ0IChub3QgKEVsdC5lcXVhbCBlbHQxIGVsdDIpKVxuICBsZXQgc3JjX2JpdCBpID0gaWYgaSBsYW5kIDB4MSA9IDAgdGhlbiBlbHQxIGVsc2UgZWx0MlxuICBsZXQgZHN0X2JpdCBpID0gaWYgaSBsYW5kIDB4MSA9IDAgdGhlbiBlbHQyIGVsc2UgZWx0MVxuXG4gICgqIFRlc3QgW2JsaXRdLiAqKVxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGxldCBuID0gNCBpblxuICAgIGZvciBzcmNfbGVuZ3RoID0gMCB0byBuIGRvXG4gICAgICBmb3IgZHN0X2xlbmd0aCA9IDAgdG8gbiBkb1xuICAgICAgICBmb3Igc3JjX3BvcyA9IDAgdG8gc3JjX2xlbmd0aCBkb1xuICAgICAgICAgIGZvciBkc3RfcG9zID0gMCB0byBkc3RfbGVuZ3RoIGRvXG4gICAgICAgICAgICBmb3Igc3JjX2xlbiA9IDAgdG8gbWluIChzcmNfbGVuZ3RoIC0gc3JjX3BvcykgKGRzdF9sZW5ndGggLSBkc3RfcG9zKSBkb1xuICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICBsZXQgaXNfaW5fcmFuZ2UgaSA9IGkgPj0gZHN0X3BvcyAmJiBpIDwgZHN0X3BvcyArIHNyY19sZW4gaW5cbiAgICAgICAgICAgICAgICBsZXQgY2hlY2sgbGVuZ3RoIGdldCBuYW1lIHNlcXVlbmNlIH5leHBlY3QgPVxuICAgICAgICAgICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzZXF1ZW5jZSAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgaWYgbm90IChFbHQuZXF1YWwgKGdldCBzZXF1ZW5jZSBpKSAoZXhwZWN0IGkpKVxuICAgICAgICAgICAgICAgICAgICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiYnVnXCIgKG5hbWUgOiBzdHJpbmcpIChpIDogaW50KV1cbiAgICAgICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVja19zcmMgPSBjaGVjayBTcmMubGVuZ3RoIFNyYy5nZXQgaW5cbiAgICAgICAgICAgICAgICBsZXQgY2hlY2tfZHN0ID0gY2hlY2sgRHN0Lmxlbmd0aCBEc3QuZ2V0IGluXG4gICAgICAgICAgICAgICAgbGV0IHNyYyA9XG4gICAgICAgICAgICAgICAgICBpbml0IH5sZW46c3JjX2xlbmd0aCB+Y3JlYXRlOlNyYy5jcmVhdGVfYm9vbCB+c2V0OlNyYy5zZXQgfmY6c3JjX2JpdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYXNzZXJ0IChTcmMubGVuZ3RoIHNyYyA9IHNyY19sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCBkc3QgPVxuICAgICAgICAgICAgICAgICAgaW5pdCB+bGVuOmRzdF9sZW5ndGggfmNyZWF0ZTpEc3QuY3JlYXRlX2Jvb2wgfnNldDpEc3Quc2V0IH5mOmRzdF9iaXRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGFzc2VydCAoRHN0Lmxlbmd0aCBkc3QgPSBkc3RfbGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBsZXQgaW5pdF9zcmMgKCkgPVxuICAgICAgICAgICAgICAgICAgZm9yIGkgPSAwIHRvIHNyY19sZW5ndGggLSAxIGRvXG4gICAgICAgICAgICAgICAgICAgIFNyYy5zZXQgc3JjIGkgKHNyY19iaXQgaSlcbiAgICAgICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGJsaXRvIH5zcmMgfnNyY19wb3MgfnNyY19sZW4gfmRzdCB+ZHN0X3BvcyAoKTtcbiAgICAgICAgICAgICAgICBjaGVja19zcmMgXCJibGl0IHNyY1wiIHNyYyB+ZXhwZWN0OnNyY19iaXQ7XG4gICAgICAgICAgICAgICAgY2hlY2tfZHN0IFwiYmxpdCBkc3RcIiBkc3QgfmV4cGVjdDooZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGlzX2luX3JhbmdlIGkgdGhlbiBzcmNfYml0IChzcmNfcG9zICsgaSAtIGRzdF9wb3MpIGVsc2UgZHN0X2JpdCBpKTtcbiAgICAgICAgICAgICAgICAobWF0Y2ggRHN0Lm92ZXJsYXBwaW5nX3NyY19kc3Qgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBEb19ub3RfY2hlY2sgLT4gKClcbiAgICAgICAgICAgICAgICAgfCBgQ2hlY2sgc3JjX3RvX2RzdCAtPlxuICAgICAgICAgICAgICAgICAgIGlmIGRzdF9wb3MgKyBzcmNfbGVuIDw9IHNyY19sZW5ndGhcbiAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgIGluaXRfc3JjICgpO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGRzdCA9IHNyY190b19kc3Qgc3JjIGluXG4gICAgICAgICAgICAgICAgICAgICBpZiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgIGJsaXRvIH5zcmMgfnNyY19wb3MgfnNyY19sZW4gfmRzdCB+ZHN0X3BvcyAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZHN0IFwiYmxpdCBkc3Qgb3ZlcmxhcHBpbmdcIiBkc3QgfmV4cGVjdDooZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYml0IChpZiBpc19pbl9yYW5nZSBpIHRoZW4gc3JjX3BvcyArIGkgLSBkc3RfcG9zIGVsc2UgaSkpKSkpO1xuICAgICAgICAgICAgICAgICgqIENoZWNrIFtzdWJdLiAqKVxuICAgICAgICAgICAgICAgIGluaXRfc3JjICgpO1xuICAgICAgICAgICAgICAgIGxldCBkc3QgPSBzdWIgc3JjIH5wb3M6c3JjX3BvcyB+bGVuOnNyY19sZW4gaW5cbiAgICAgICAgICAgICAgICBjaGVja19zcmMgXCJzdWIgc3JjXCIgc3JjIH5leHBlY3Q6c3JjX2JpdDtcbiAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJzdWIgZHN0XCIgZHN0IH5leHBlY3Q6KGZ1biBpIC0+IHNyY19iaXQgKHNyY19wb3MgKyBpKSlcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICBcImJ1Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgKGV4biA6IGV4bilcbiAgICAgICAgICAgICAgICAgICAgICAoc3JjX2xlbmd0aCA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAoc3JjX3BvcyA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAoZHN0X2xlbmd0aCA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAoZHN0X3BvcyA6IGludCldXG4gICAgICAgICAgICBkb25lXG4gICAgICAgICAgZG9uZVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IHNyYyA9IGluaXQgfmxlbjo0IH5jcmVhdGU6U3JjLmNyZWF0ZV9ib29sIH5zZXQ6U3JjLnNldCB+ZjpzcmNfYml0IGluXG4gICAgbGV0IGRzdCA9IGluaXQgfmxlbjo4IH5jcmVhdGU6RHN0LmNyZWF0ZV9ib29sIH5zZXQ6RHN0LnNldCB+Zjpkc3RfYml0IGluXG4gICAgbGV0IGFzc2VydF9yYWlzZXMgZiA9IGFzc2VydCAoRXhuLmRvZXNfcmFpc2UgZikgaW5cbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczooLTEpIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3BvczowICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3BvczooLTEpICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3Bvczo1IH5zcmNfbGVuOjEgfmRzdCB+ZHN0X3BvczowICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjggfmRzdCB+ZHN0X3BvczowICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3Bvczo1ICgpKTtcbiAgICBhc3NlcnRfcmFpc2VzIChmdW4gKCkgLT4gYmxpdG8gfnNyYyB+c3JjX3BvczowIH5zcmNfbGVuOjQgfmRzdCB+ZHN0X3Bvczo4ICgpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBUZXN0MVxuICAgIChTZXF1ZW5jZSA6IFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIHBvbHkpXG4gICAgKFRlc3RlZCA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFNlcXVlbmNlLnQpID1cbiAgVGVzdF9nZW5cbiAgICAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgICAgbGV0IGVxdWFsID0gUG9seS5lcXVhbFxuICAgICAgICBsZXQgb2ZfYm9vbCA9IEZuLmlkXG4gICAgICBlbmRcblxuICAgICAgdHlwZSAnYSB6ID0gJ2EgU2VxdWVuY2UuelxuXG4gICAgICBtb2R1bGUgU3JjID0gU2VxdWVuY2VcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgbGV0IG92ZXJsYXBwaW5nX3NyY19kc3QgPSBgQ2hlY2sgRm4uaWRcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgVGVzdDFfZ2VuZXJpY1xuICAgIChFbHQgOiBFbHQxKVxuICAgIChTZXF1ZW5jZSA6IFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50KVxuICAgIChUZXN0ZWQgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBTZXF1ZW5jZS50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdFxuXG4gICAgICB0eXBlICdhIHogPSAnYSBTZXF1ZW5jZS56XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBTZXF1ZW5jZVxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBDaGVjayBGbi5pZFxuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBFbHRfdG9fZWx0MSAoRWx0IDogRWx0KSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBFbHQudFxuXG4gIGxldCBlcXVhbCA9IEVsdC5lcXVhbFxuICBsZXQgb2ZfYm9vbCA9IEVsdC5vZl9ib29sXG5lbmRcblxubW9kdWxlIFRlc3RcbiAgICAoRWx0IDogRWx0KVxuICAgIChTZXF1ZW5jZSA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKFRlc3RlZCA6IFMgd2l0aCB0eXBlIHQgOj0gU2VxdWVuY2UudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBFbHRfdG9fZWx0MSAoRWx0KVxuXG4gICAgICB0eXBlICdhIHogPSB1bml0XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBTZXF1ZW5jZVxuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFNyY1xuXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYENoZWNrIEZuLmlkXG4gICAgICBlbmRcbiAgICBlbmQpXG4gICAgKFRlc3RlZClcblxubW9kdWxlIFRlc3RfZGlzdGluY3RcbiAgICAoRWx0IDogRWx0KVxuICAgIChTcmMgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KVxuICAgIChEc3QgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KVxuICAgIChUZXN0ZWQgOiBTX2Rpc3RpbmN0IHdpdGggdHlwZSBzcmMgOj0gU3JjLnQgd2l0aCB0eXBlIGRzdCA6PSBEc3QudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBFbHRfdG9fZWx0MSAoRWx0KVxuXG4gICAgICB0eXBlICdhIHogPSB1bml0XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBTcmNcblxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gdFxuXG4gICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgICAgbGV0IGdldCA9IGdldFxuICAgICAgICBsZXQgc2V0ID0gc2V0XG4gICAgICAgIGxldCBjcmVhdGVfYm9vbCA9IGNyZWF0ZVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBEc3QgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBEc3RcblxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gdFxuXG4gICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgICAgbGV0IGdldCA9IGdldFxuICAgICAgICBsZXQgc2V0ID0gc2V0XG4gICAgICAgIGxldCBjcmVhdGVfYm9vbCA9IGNyZWF0ZVxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBEb19ub3RfY2hlY2tcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgTWFrZV9hbmRfdGVzdFxuICAgIChFbHQgOiBFbHQpIChTZXF1ZW5jZSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudFxuXG4gICAgICAgICAgICAgICAgICAgdmFsIHVuc2FmZV9ibGl0IDogKHQsIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlIChTZXF1ZW5jZSlcbiAgaW5jbHVkZSBUZXN0IChFbHQpIChTZXF1ZW5jZSkgKEIpXG4gIGluY2x1ZGUgQlxuZW5kXG5cbm1vZHVsZSBNYWtlX2Rpc3RpbmN0X2FuZF90ZXN0XG4gICAgKEVsdCA6IEVsdClcbiAgICAoU3JjIDogU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudCkgKERzdCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAoU3JjLnQsIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gTWFrZV9kaXN0aW5jdCAoU3JjKSAoRHN0KVxuICBpbmNsdWRlIFRlc3RfZGlzdGluY3QgKEVsdCkgKFNyYykgKERzdCkgKEIpXG4gIGluY2x1ZGUgQlxuZW5kXG5cbm1vZHVsZSBNYWtlMV9hbmRfdGVzdCAoU2VxdWVuY2UgOiBzaWdcbiAgICBpbmNsdWRlIEJsaXQuU2VxdWVuY2UxXG4gICAgaW5jbHVkZSBTZXF1ZW5jZTEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIHBvbHlcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlMSAoU2VxdWVuY2UpXG4gIGluY2x1ZGUgVGVzdDEgKFNlcXVlbmNlKSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2UxX2dlbmVyaWNfYW5kX3Rlc3RcbiAgICAoRWx0IDogRWx0MSkgKFNlcXVlbmNlIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgQmxpdC5TZXF1ZW5jZTFcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZTEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UxX2dlbmVyaWMgKFNlcXVlbmNlKVxuICBpbmNsdWRlIFRlc3QxX2dlbmVyaWMgKEVsdCkgKFNlcXVlbmNlKSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4hIEJpbmFyeV9zZWFyY2hhYmxlXG5pbmNsdWRlIFRlc3RfYmluYXJ5X3NlYXJjaGFibGVfaW50ZlxuXG5tb2R1bGUgdHlwZSBTX2dlbiA9IHNpZ1xuICBvcGVuIEJpbmFyeV9zZWFyY2hhYmxlXG5cbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2ggOiAoJ2EgdCwgJ2EgZWx0LCAnYSBlbHQpIGJpbmFyeV9zZWFyY2hcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKCdhIHQsICdhIGVsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmRleGFibGVfZ2VuX2FuZF9mb3JfdGVzdCA9IHNpZ1xuICBpbmNsdWRlIFNfZ2VuXG5cbiAgbW9kdWxlIEZvcl90ZXN0IDogc2lnXG4gICAgdmFsIGNvbXBhcmUgOiBib29sIGVsdCAtPiBib29sIGVsdCAtPiBpbnRcbiAgICB2YWwgc21hbGwgOiBib29sIGVsdFxuICAgIHZhbCBiaWcgOiBib29sIGVsdFxuICAgIHZhbCBvZl9hcnJheSA6IGJvb2wgZWx0IGFycmF5IC0+IGJvb2wgdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVGVzdF9nZW4gKE0gOiBJbmRleGFibGVfZ2VuX2FuZF9mb3JfdGVzdCkgPSBzdHJ1Y3RcbiAgb3BlbiBNXG5cbiAgbGV0JXRlc3RfbW9kdWxlIFwidGVzdF9iaW5hcnlfc2VhcmNoYWJsZVwiID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgbGV0IGNvbXBhcmUgPSBGb3JfdGVzdC5jb21wYXJlXG4gICAgICBsZXQgZWx0X2NvbXBhcmUgPSBGb3JfdGVzdC5jb21wYXJlXG4gICAgICBsZXQgcyA9IEZvcl90ZXN0LnNtYWxsXG4gICAgICBsZXQgYiA9IEZvcl90ZXN0LmJpZ1xuXG4gICAgICBsZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gfmNvbXBhcmUgdCBob3cgdiA9XG4gICAgICAgIGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIH5jb21wYXJlIChGb3JfdGVzdC5vZl9hcnJheSB0KSBob3cgdlxuICAgICAgOztcblxuICAgICAgbGV0ICggPSApID0gUG9seS5lcXVhbFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3x8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBGaXJzdF9lcXVhbF90byBiID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiIHxdIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgcyB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGI7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHM7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGI7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYExhc3RfZXF1YWxfdG8gYiA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzIHxdIGBMYXN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiOyBiIHxdIGBMYXN0X2VxdWFsX3RvIGIgPSBTb21lIDJcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHM7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYjsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3x8XSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGIgfF0gYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYiB8XSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIHMgPSBOb25lXG5cbiAgICAgIGxldCBjcmVhdGVfdGVzdF9jYXNlIChudW1fcywgbnVtX2IpID1cbiAgICAgICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSBiIH5sZW46KG51bV9zICsgbnVtX2IpIGluXG4gICAgICAgIGZvciBpID0gMCB0byBudW1fcyAtIDEgZG9cbiAgICAgICAgICBhcnIuKGkpIDwtIHNcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYXJyXG4gICAgICA7O1xuXG4gICAgICBsZXQgb25seV9zbWFsbCA9IDEwXzAwMCwgMFxuICAgICAgbGV0IG9ubHlfYmlnID0gMCwgMTBfMDAwXG4gICAgICBsZXQgYm90aCA9IDI1MzEsIDQ3MTdcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIG1hdGNoIGJpbmFyeV9zZWFyY2ggKGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCkgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIHMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIF8gLT4gdHJ1ZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIGJvdGggaW5cbiAgICAgICAgbWF0Y2ggYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIHYgLT4gdiA9IDI1MzFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgPVxuICAgICAgICBBcnJheS5pbml0IDEwMF8wMDAgfmY6KGZ1biBpIC0+IGlmIGkgPiA1MF8wMDAgdGhlbiBiIGVsc2UgcylcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBTb21lIDUwXzAwMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgICgqIHRlc3RzIGFyb3VuZCBhIGdhcCopXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgPSBTb21lIDUwXzAwMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2VxdWFsX3RvIGIgPSBTb21lIDk5Xzk5OVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gYiA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIGIgPSBTb21lIDk5Xzk5OVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICAoKiB0ZXN0IGJlZ2lubmluZyBvZiBhcnJheSAqKVxuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgICgqIHRlc3QgZW5kIG9mIGFycmF5ICopXG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBiID0gU29tZSA5Xzk5OVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBTb21lIDlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgICBmb3IgbGVuZ3RoID0gMCB0byA1IGRvXG4gICAgICAgICAgZm9yIG51bV9zID0gMCB0byBsZW5ndGggZG9cbiAgICAgICAgICAgIGxldCBhcnIgPSBBcnJheS5pbml0IGxlbmd0aCB+ZjooZnVuIGkgLT4gaWYgaSA8IG51bV9zIHRoZW4gcyBlbHNlIGIpIGluXG4gICAgICAgICAgICBmb3IgcG9zID0gLTEgdG8gbGVuZ3RoIGRvXG4gICAgICAgICAgICAgIGZvciBsZW4gPSAtMSB0byBsZW5ndGggKyAxIGRvXG4gICAgICAgICAgICAgICAgKCp0cnkqKVxuICAgICAgICAgICAgICAgIGxldCBzaG91bGRfcmFpc2UgPVxuICAgICAgICAgICAgICAgICAgRXhuLmRvZXNfcmFpc2UgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgICAgICAgICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgICAgICAgICB+dG90YWxfbGVuZ3RoOmxlbmd0aClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgICAgICAgICAgUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfnBvcyB+bGVuIH5jb21wYXJlOmVsdF9jb21wYXJlIGBMYXN0X2VxdWFsX3RvIHMpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBzaG91bGRfcmFpc2UsIHJlc3VsdCB3aXRoXG4gICAgICAgICAgICAgICAgfCB0cnVlLCBFcnJvciBfIC0+ICgpXG4gICAgICAgICAgICAgICAgfCB0cnVlLCBPayBfIC0+IGZhaWx3aXRoIFwiZXhwZWN0ZWQgaXQgdG8gcmFpc2UgYnV0IGl0IGRpZG4ndFwiXG4gICAgICAgICAgICAgICAgfCBmYWxzZSwgRXJyb3IgXyAtPiBmYWlsd2l0aCBcImV4cGVjdGVkIGl0IHRvIG5vdCByYWlzZSwgYnV0IGl0IHJhaXNlZFwiXG4gICAgICAgICAgICAgICAgfCBmYWxzZSwgT2sgcmVzdWx0IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgc2VhcmNoZWQgPSBudW1fcyAtIDEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBjb3JyZWN0X3Jlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAgIGlmIHNlYXJjaGVkIDwgcG9zXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gTm9uZVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIGxlbiA9IDBcbiAgICAgICAgICAgICAgICAgICAgdGhlbiBOb25lXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgc2VhcmNoZWQgPj0gcG9zICsgbGVuXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gU29tZSAocG9zICsgbGVuIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBTb21lIHNlYXJjaGVkXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgaWYgbm90IChjb3JyZWN0X3Jlc3VsdCA9IHJlc3VsdCkgdGhlbiBmYWlsd2l0aCBcIldyb25nIHJlc3VsdFwiXG4gICAgICAgICAgICAgICAgICAoKndpdGggZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgIGZhaWx3aXRocyBcImJpbmFyeV9zZWFyY2ggYnVnXCJcbiAgICAgICAgICAgICAgICAgICAgKGV4biwgYGxlbmd0aCBsZW5ndGgsIGBzZWFyY2hfa2V5IHNlYXJjaF9rZXksIGBwb3MgcG9zLCBgbGVuIGxlbilcbiAgICAgICAgICAgICAgICAgICAgPDpzZXhwX29mPCBleG4gKiBbIGBsZW5ndGggb2YgaW50IF0gKiBbIGBzZWFyY2hfa2V5IG9mIGludCBdXG4gICAgICAgICAgICAgICAgICAgKiBbIGBwb3Mgb2YgaW50IF0gKiBbIGBsZW4gb2YgaW50IF0gPj4qKVxuICAgICAgICAgICAgICBkb25lXG4gICAgICAgICAgICBkb25lXG4gICAgICAgICAgZG9uZVxuICAgICAgICBkb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYSA9IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIChGb3JfdGVzdC5vZl9hcnJheSBhKVxuXG4gICAgICAoKnRlc3QgZm9yIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkKilcbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBsZXQgc2VnbWVudF9vZiB4ID0gaWYgeCA9IGIgdGhlbiBgUmlnaHQgZWxzZSBgTGVmdCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYExhc3Rfb25fbGVmdCA9IFNvbWUgNTBfMDAwXG4gICAgICAgICYmIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgRmlyc3Rfb25fcmlnaHQgPSBTb21lIDUwXzAwMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGxldCBzZWdtZW50X29mIF8gPSBgUmlnaHQgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBMYXN0X29uX2xlZnQgPSBOb25lXG4gICAgICAgICYmIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgRmlyc3Rfb25fcmlnaHQgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBsZXQgc2VnbWVudF9vZiBfID0gYExlZnQgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBMYXN0X29uX2xlZnQgPSBTb21lIDk5Xzk5OVxuICAgICAgICAmJiBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYEZpcnN0X29uX3JpZ2h0ID0gTm9uZVxuICAgICAgOztcbiAgICBlbmQpXG4gIDs7XG5lbmRcblxubW9kdWxlIFRlc3QgKE0gOiBCaW5hcnlfc2VhcmNoYWJsZV9hbmRfZm9yX3Rlc3QpID0gVGVzdF9nZW4gKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IE0udFxuICAgIHR5cGUgJ2EgZWx0ID0gTS5lbHRcblxuICAgIGxldCBiaW5hcnlfc2VhcmNoID0gTS5iaW5hcnlfc2VhcmNoXG4gICAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID0gTS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gTS5Gb3JfdGVzdFxuICBlbmQpXG5cbm1vZHVsZSBUZXN0MSAoTSA6IEJpbmFyeV9zZWFyY2hhYmxlMV9hbmRfZm9yX3Rlc3QpID0gVGVzdF9nZW4gKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIE0udFxuICAgIHR5cGUgJ2EgZWx0ID0gJ2FcblxuICAgIGxldCBiaW5hcnlfc2VhcmNoID0gTS5iaW5hcnlfc2VhcmNoXG4gICAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID0gTS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gICAgICBsZXQgb2ZfYXJyYXkgPSBNLkZvcl90ZXN0Lm9mX2FycmF5XG4gICAgICBsZXQgY29tcGFyZSA9IEJvb2wuY29tcGFyZVxuICAgICAgbGV0IHNtYWxsID0gZmFsc2VcbiAgICAgIGxldCBiaWcgPSB0cnVlXG4gICAgZW5kXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYW5kX3Rlc3QgKE0gOiBJbmRleGFibGVfYW5kX2Zvcl90ZXN0KSA9IHN0cnVjdFxuICBtb2R1bGUgQiA9IEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UgKE0pXG4gIGluY2x1ZGUgQlxuXG4gIGluY2x1ZGUgVGVzdCAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBNLnRcbiAgICAgIHR5cGUgZWx0ID0gTS5lbHRcblxuICAgICAgaW5jbHVkZSBCXG4gICAgICBtb2R1bGUgRm9yX3Rlc3QgPSBNLkZvcl90ZXN0XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlMV9hbmRfdGVzdCAoTSA6IEluZGV4YWJsZTFfYW5kX2Zvcl90ZXN0KSA9IHN0cnVjdFxuICBtb2R1bGUgQiA9IEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UxIChNKVxuICBpbmNsdWRlIEJcblxuICBpbmNsdWRlIFRlc3QxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIE0udFxuXG4gICAgICBpbmNsdWRlIEJcbiAgICAgIG1vZHVsZSBGb3JfdGVzdCA9IE0uRm9yX3Rlc3RcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEJhc2VcblxuaW5jbHVkZSAoXG4gIFN0cmluZyA6XG4gIHNpZ1xuICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlXG4gICAgICBDb21wYXJhYmxlLlNcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuICBlbmQpXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gU3RkbGliLkZpbGVuYW1lXG5cbiAgbGV0IGNoZWNrX3N1ZmZpeCA9IGNoZWNrX3N1ZmZpeFxuICBsZXQgY2hvcF9leHRlbnNpb24gPSBjaG9wX2V4dGVuc2lvblxuICBsZXQgY2hvcF9zdWZmaXggPSBjaG9wX3N1ZmZpeFxuICBsZXQgY2hvcF9zdWZmaXhfb3B0ID0gY2hvcF9zdWZmaXhfb3B0XG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gY3VycmVudF9kaXJfbmFtZVxuICBsZXQgaXNfaW1wbGljaXQgPSBpc19pbXBsaWNpdFxuICBsZXQgaXNfcmVsYXRpdmUgPSBpc19yZWxhdGl2ZVxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gcGFyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJfc2VwID0gZGlyX3NlcFxuICBsZXQgcXVvdGUgPSBxdW90ZVxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IGdldF90ZW1wX2Rpcl9uYW1lICgpXG4gIGxldCBkaXJuYW1lID0gZGlybmFtZVxuICBsZXQgYmFzZW5hbWUgPSBiYXNlbmFtZVxuZW5kXG5cbmxldCBpc19hYnNvbHV0ZSBwID0gbm90IChpc19yZWxhdGl2ZSBwKVxuXG5sZXQgY29uY2F0IHAxIHAyID1cbiAgaWYgU3RyaW5nLmlzX2VtcHR5IHAxXG4gIHRoZW5cbiAgICBQcmludGYuZmFpbHdpdGhmXG4gICAgICBcIkZpbGVuYW1lLmNvbmNhdCBjYWxsZWQgd2l0aCBhbiBlbXB0eSBzdHJpbmcgYXMgaXRzIGZpcnN0IGFyZ3VtZW50IChzZWNvbmQgXFxcbiAgICAgICBhcmd1bWVudDogJXMpXCJcbiAgICAgIHAyXG4gICAgICAoKTtcbiAgbGV0IHJlYyBjb2xsYXBzZV90cmFpbGluZyBzID1cbiAgICBtYXRjaCBTdHJpbmcucnNwbGl0MiBzIH5vbjonLycgd2l0aFxuICAgIHwgU29tZSAoXCJcIiwgKFwiLlwiIHwgXCJcIikpIC0+IFwiXCJcbiAgICB8IFNvbWUgKHMsIChcIi5cIiB8IFwiXCIpKSAtPiBjb2xsYXBzZV90cmFpbGluZyBzXG4gICAgfCBOb25lIHwgU29tZSBfIC0+IHNcbiAgaW5cbiAgbGV0IHJlYyBjb2xsYXBzZV9sZWFkaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOicvJyB3aXRoXG4gICAgfCBTb21lICgoXCIuXCIgfCBcIlwiKSwgcykgLT4gY29sbGFwc2VfbGVhZGluZyBzXG4gICAgfCBTb21lIF8gfCBOb25lIC0+IHNcbiAgaW5cbiAgY29sbGFwc2VfdHJhaWxpbmcgcDEgXiBcIi9cIiBeIGNvbGxhcHNlX2xlYWRpbmcgcDJcbjs7XG5cbmxldCB0b19hYnNvbHV0ZV9leG4gcCB+cmVsYXRpdmVfdG8gPVxuICBpZiBpc19yZWxhdGl2ZSByZWxhdGl2ZV90b1xuICB0aGVuXG4gICAgUHJpbnRmLmZhaWx3aXRoZlxuICAgICAgXCJGaWxlbmFtZS50b19hYnNvbHV0ZV9leG4gY2FsbGVkIHdpdGggYSBbcmVsYXRpdmVfdG9dIHRoYXQgaXMgYSByZWxhdGl2ZSBwYXRoOiAlc1wiXG4gICAgICByZWxhdGl2ZV90b1xuICAgICAgKClcbiAgZWxzZSBpZiBpc19hYnNvbHV0ZSBwXG4gIHRoZW4gcFxuICBlbHNlIGNvbmNhdCByZWxhdGl2ZV90byBwXG47O1xuXG5sZXQgc3BsaXQgcyA9IGRpcm5hbWUgcywgYmFzZW5hbWUgc1xuXG4oKiBbbWF4X3BhdGhuYW1lX2NvbXBvbmVudF9zaXplXSBjb21lcyBmcm9tIGdldGNvbmYgX1BPU0lYX05BTUVfTUFYIC8gKilcbmxldCBtYXhfcGF0aG5hbWVfY29tcG9uZW50X3NpemUgPSAyNTVcblxubGV0IGlzX3Bvc2l4X3BhdGhuYW1lX2NvbXBvbmVudCBzID1cbiAgbGV0IG1vZHVsZSBTID0gU3RyaW5nIGluXG4gIHMgPD4gXCIuXCJcbiAgJiYgcyA8PiBcIi4uXCJcbiAgJiYgSW50LigwIDwgUy5sZW5ndGggcylcbiAgJiYgSW50LihTLmxlbmd0aCBzIDw9IG1heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZSlcbiAgJiYgKG5vdCAoUy5jb250YWlucyBzICcvJykpXG4gICYmIG5vdCAoUy5jb250YWlucyBzICdcXDAwMCcpXG47O1xuXG5sZXQgcm9vdCA9IFwiL1wiXG5cbmxldCBzcGxpdF9leHRlbnNpb24gZm4gPVxuICBsZXQgZGlyLCBmbiA9XG4gICAgbWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOicvJyBmbiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUsIGZuXG4gICAgfCBTb21lIChwYXRoLCBmbikgLT4gU29tZSBwYXRoLCBmblxuICBpblxuICBsZXQgZm4sIGV4dCA9XG4gICAgbWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOicuJyBmbiB3aXRoXG4gICAgfCBOb25lIC0+IGZuLCBOb25lXG4gICAgfCBTb21lIChiYXNlX2ZuLCBleHQpIC0+IGJhc2VfZm4sIFNvbWUgZXh0XG4gIGluXG4gIGxldCBmbiA9XG4gICAgbWF0Y2ggZGlyIHdpdGhcbiAgICB8IE5vbmUgLT4gZm5cbiAgICB8IFNvbWUgZGlyIC0+IGRpciBeIFwiL1wiIF4gZm5cbiAgaW5cbiAgZm4sIGV4dFxuOztcblxubGV0IHBhcnRzIGZpbGVuYW1lID1cbiAgbGV0IHJlYyBsb29wIGFjYyBmaWxlbmFtZSA9XG4gICAgbWF0Y2ggc3BsaXQgZmlsZW5hbWUgd2l0aFxuICAgIHwgKFwiLlwiIGFzIGJhc2UpLCBcIi5cIiAtPiBiYXNlIDo6IGFjY1xuICAgIHwgKFwiL1wiIGFzIGJhc2UpLCBcIi9cIiAtPiBiYXNlIDo6IGFjY1xuICAgIHwgcmVzdCwgZGlyIC0+IGxvb3AgKGRpciA6OiBhY2MpIHJlc3RcbiAgaW5cbiAgbG9vcCBbXSBmaWxlbmFtZVxuOztcblxubGV0IG9mX3BhcnRzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWlsd2l0aCBcIkZpbGVuYW1lLm9mX3BhcnRzOiBlbXB0eSBwYXJ0cyBsaXN0XCJcbiAgfCByb290IDo6IHJlc3QgLT4gTGlzdC5mb2xkIHJlc3QgfmluaXQ6cm9vdCB+ZjpTdGRsaWIuRmlsZW5hbWUuY29uY2F0XG47O1xuXG5sZXQgcmVjIHNraXBfY29tbW9uX3ByZWZpeCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIHdoZW4gU3RyaW5nLmVxdWFsIGgxIGgyIC0+IHNraXBfY29tbW9uX3ByZWZpeCB0MSB0MlxuICB8IF8gLT4gbDEsIGwyXG47O1xuXG5sZXQgb2ZfYWJzb2x1dGVfZXhuIGEgfnJlbGF0aXZlX3RvOmIgPVxuICBpZiBpc19yZWxhdGl2ZSBhXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGaWxlbmFtZS5vZl9hYnNvbHV0ZV9leG46IGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aFwiXG4gICAgICAgICAgfmZpcnN0X2FyZzooYSA6IHN0cmluZyldO1xuICBpZiBpc19yZWxhdGl2ZSBiXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJGaWxlbmFtZS5vZl9hYnNvbHV0ZV9leG46IFt+cmVsYXRpdmVfdG9dIG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aFwiXG4gICAgICAgICAgfnJlbGF0aXZlX3RvOihiIDogc3RyaW5nKV07XG4gIGxldCBhX3BhcnRzID0gcGFydHMgYSBpblxuICBsZXQgYl9wYXJ0cyA9IHBhcnRzIGIgaW5cbiAgbGV0IGFfc3VmZml4LCBiX3N1ZmZpeCA9IHNraXBfY29tbW9uX3ByZWZpeCBhX3BhcnRzIGJfcGFydHMgaW5cbiAgbGV0IGdvX3VwID0gTGlzdC5tYXAgfmY6KGZ1biBfIC0+IHBhcmVudF9kaXJfbmFtZSkgYl9zdWZmaXggaW5cbiAgbWF0Y2ggZ29fdXAgQCBhX3N1ZmZpeCB3aXRoXG4gIHwgW10gLT4gY3VycmVudF9kaXJfbmFtZVxuICB8IHJlbHBhdGggLT4gb2ZfcGFydHMgcmVscGF0aFxuOztcblxubGV0IGFyZ190eXBlID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgY3JlYXRlX2FyZ190eXBlID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgb3Blbl90ZW1wX2ZpbGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBvcGVuX3RlbXBfZmlsZV9mZCA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IHJlYWxwYXRoID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgdGVtcF9kaXIgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCB0ZW1wX2ZpbGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbiIsIm9wZW4hIEJhc2VcbmluY2x1ZGUgVW5pdl9tYXBfaW50ZlxubW9kdWxlIFVpZCA9IFR5cGVfZXF1YWwuSWQuVWlkXG5cbm1vZHVsZSBNYWtlMVxuICAgIChLZXkgOiBLZXkpIChEYXRhIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAoJ3MsICdhKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gICgqIEEgd3JhcHBlciBmb3IgdGhlIFtLZXldIG1vZHVsZSB0aGF0IGFkZHMgYSBkeW5hbWljIGNoZWNrIHRvIFtLZXkudHlwZV9pZF0uXG5cbiAgICAgSXQncyBhIGJ1ZyBpZiB0aGUgdXNlci1wcm92aWRlZCBbS2V5LnR5cGVfaWRdIGdpdmVzIGRpZmZlcmVudCB0eXBlIGlkcyBvbiBkaWZmZXJlbnRcbiAgICAgY2FsbHMuICBCZWNhdXNlIHRoaXMgY2hlY2sgc2hvdWxkIGJlIGZhaXJseSBjaGVhcCwgd2UgZG8gaXQgZHluYW1pY2FsbHkgdG8gYXZvaWRcbiAgICAgc3VidGxlciBwcm9ibGVtcyBsYXRlci5cblxuICAgICBPZiBjb3Vyc2UsIHdlJ3JlIG5vdCBjaGVja2luZyB0cnVseSBwYXRob2xvZ2ljYWwgdGhpbmdzIGxpa2UgdGhlIHByb3ZpZGVkXG4gICAgIFtLZXkudHlwZV9pZF0gb25seSBjaGFuZ2VzIHRoZSB2YWx1ZSBpdCByZXR1cm5zIG9uIGV2ZXJ5IHRoaXJkIGNhbGwuLi4gKilcbiAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEtleS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAoKiB0ZXN0LWZyaWVuZGx5IHNleHAgY29udmVyc2lvbiAqKVxuICAgIGxldCBzZXhwX29mX3R5cGVfaWQgdHlwZV9pZCA9XG4gICAgICBbJXNleHBcbiAgICAgICAgeyBuYW1lID0gKFR5cGVfZXF1YWwuSWQubmFtZSB0eXBlX2lkIDogc3RyaW5nKVxuICAgICAgICA7IHVpZCA9XG4gICAgICAgICAgICAoaWYgUHB4X2lubGluZV90ZXN0X2xpYi5hbV9ydW5uaW5nXG4gICAgICAgICAgICAgdGhlbiBTZXhwLkF0b20gXCI8dWlkPlwiXG4gICAgICAgICAgICAgZWxzZSBUeXBlX2VxdWFsLklkLlVpZC5zZXhwX29mX3QgKFR5cGVfZXF1YWwuSWQudWlkIHR5cGVfaWQpXG4gICAgICAgICAgICAgICAgICA6IFNleHAudClcbiAgICAgICAgfV1cbiAgICA7O1xuXG4gICAgbGV0IHR5cGVfaWQga2V5ID1cbiAgICAgIGxldCB0eXBlX2lkMSA9IEtleS50eXBlX2lkIGtleSBpblxuICAgICAgbGV0IHR5cGVfaWQyID0gS2V5LnR5cGVfaWQga2V5IGluXG4gICAgICBpZiBUeXBlX2VxdWFsLklkLnNhbWUgdHlwZV9pZDEgdHlwZV9pZDJcbiAgICAgIHRoZW4gdHlwZV9pZDFcbiAgICAgIGVsc2VcbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJbS2V5LnR5cGVfaWRdIG11c3Qgbm90IHByb3ZpZGUgZGlmZmVyZW50IHR5cGUgaWRzIHdoZW4gY2FsbGVkIG9uIHRoZSBzYW1lIFxcXG4gICAgICAgICAgICAgaW5wdXRcIlxuICAgICAgICAgICAgICAoa2V5IDogXyBLZXkudClcbiAgICAgICAgICAgICAgKHR5cGVfaWQxIDogdHlwZV9pZClcbiAgICAgICAgICAgICAgKHR5cGVfaWQyIDogdHlwZV9pZCldXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAoJ3MsICdhKSBkYXRhID0gKCdzLCAnYSkgRGF0YS50XG5cbiAgbGV0IG5hbWVfb2Zfa2V5IGtleSA9IFR5cGVfZXF1YWwuSWQubmFtZSAoS2V5LnR5cGVfaWQga2V5KVxuICBsZXQgdWlkX29mX2tleSBrZXkgPSBUeXBlX2VxdWFsLklkLnVpZCAoS2V5LnR5cGVfaWQga2V5KVxuXG4gIG1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdzIHQgPSBUIDogJ2EgS2V5LnQgKiAoJ3MsICdhKSBEYXRhLnQgLT4gJ3MgdFxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgKFQgKGtleSwgZGF0YSkpID1cbiAgICAgIERhdGEuc2V4cF9vZl90IHNleHBfb2ZfYSAoVHlwZV9lcXVhbC5JZC50b19zZXhwIChLZXkudHlwZV9pZCBrZXkpKSBkYXRhXG4gICAgOztcblxuICAgIGxldCB0eXBlX2lkX25hbWUgKFQgKGtleSwgXykpID0gbmFtZV9vZl9rZXkga2V5XG4gICAgbGV0IHR5cGVfaWRfdWlkIChUIChrZXksIF8pKSA9IHVpZF9vZl9rZXkga2V5XG5cbiAgICBsZXQgY29tcGFyZSB0MSB0MiA9XG4gICAgICBsZXQgYyA9IFN0cmluZy5jb21wYXJlICh0eXBlX2lkX25hbWUgdDEpICh0eXBlX2lkX25hbWUgdDIpIGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgVWlkLmNvbXBhcmUgKHR5cGVfaWRfdWlkIHQxKSAodHlwZV9pZF91aWQgdDIpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAncyB0ID0gJ3MgUGFja2VkLnQgTWFwLk0oVWlkKS50XG5cbiAgbGV0IHRvX2FsaXN0IHQgPSBNYXAuZGF0YSB0IHw+IExpc3Quc29ydCB+Y29tcGFyZTpQYWNrZWQuY29tcGFyZVxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIHRvX2FsaXN0IHRcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHBhY2tlZCAtPiBQYWNrZWQudHlwZV9pZF9uYW1lIHBhY2tlZCwgcGFja2VkKVxuICAgIHw+IFslc2V4cF9vZjogKHN0cmluZyAqIGEgUGFja2VkLnQpIGxpc3RdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCAodCA6IF8gdCkgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICBNYXAuaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gYXNzZXJ0IChVaWQuZXF1YWwga2V5IChQYWNrZWQudHlwZV9pZF91aWQgZGF0YSkpKSlcbiAgOztcblxuICBsZXQgc2V0IHQgfmtleSB+ZGF0YSA9IE1hcC5zZXQgdCB+a2V5Oih1aWRfb2Zfa2V5IGtleSkgfmRhdGE6KFBhY2tlZC5UIChrZXksIGRhdGEpKVxuICBsZXQgbWVtX2J5X2lkIHQgaWQgPSBNYXAubWVtIHQgaWRcbiAgbGV0IG1lbSB0IGtleSA9IG1lbV9ieV9pZCB0ICh1aWRfb2Zfa2V5IGtleSlcbiAgbGV0IHJlbW92ZV9ieV9pZCB0IGlkID0gTWFwLnJlbW92ZSB0IGlkXG4gIGxldCByZW1vdmUgdCBrZXkgPSByZW1vdmVfYnlfaWQgdCAodWlkX29mX2tleSBrZXkpXG4gIGxldCBlbXB0eSA9IE1hcC5lbXB0eSAobW9kdWxlIFVpZClcblxuICBsZXQgc2luZ2xldG9uIGtleSBkYXRhID1cbiAgICBNYXAuc2luZ2xldG9uIChtb2R1bGUgVWlkKSAodWlkX29mX2tleSBrZXkpIChQYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgPSBNYXAuaXNfZW1wdHlcblxuICBsZXQgZmluZCAodHlwZSBiKSB0IChrZXkgOiBiIEtleS50KSA9XG4gICAgbWF0Y2ggTWFwLmZpbmQgdCAodWlkX29mX2tleSBrZXkpIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAoUGFja2VkLlQgKGtleScsIHZhbHVlKSkgLT5cbiAgICAgICgqIGNhbm5vdCByYWlzZSAtLSBzZWUgW2ludmFyaWFudF0gKilcbiAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gKEtleS50eXBlX2lkIGtleSkgKEtleS50eXBlX2lkIGtleScpXG4gICAgICBpblxuICAgICAgU29tZSAodmFsdWUgOiAoXywgYikgRGF0YS50KVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gZGF0YVxuICAgIHwgTm9uZSAtPiBQcmludGYuZmFpbHdpdGhmIFwiVW5pdl9tYXAuZmluZF9leG4gb24gdW5rbm93biBrZXkgJXNcIiAobmFtZV9vZl9rZXkga2V5KSAoKVxuICA7O1xuXG4gIGxldCBhZGQgdCB+a2V5IH5kYXRhID0gaWYgbWVtIHQga2V5IHRoZW4gYER1cGxpY2F0ZSBlbHNlIGBPayAoc2V0IHQgfmtleSB+ZGF0YSlcblxuICBsZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICAgIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aFxuICAgIHwgYE9rIHQgLT4gdFxuICAgIHwgYER1cGxpY2F0ZSAtPlxuICAgICAgUHJpbnRmLmZhaWx3aXRoZiBcIlVuaXZfbWFwLmFkZF9leG4gb24gZXhpc3Rpbmcga2V5ICVzXCIgKG5hbWVfb2Zfa2V5IGtleSkgKClcbiAgOztcblxuICBsZXQgY2hhbmdlX2V4biB0IGtleSB+Zjp1cGRhdGUgPVxuICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXkgfmRhdGE6KHVwZGF0ZSBkYXRhKVxuICAgIHwgTm9uZSAtPlxuICAgICAgUHJpbnRmLmZhaWx3aXRoZiBcIlVuaXZfbWFwLmNoYW5nZV9leG4gb24gdW5rbm93biBrZXkgJXNcIiAobmFtZV9vZl9rZXkga2V5KSAoKVxuICA7O1xuXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmY6dXBkYXRlID1cbiAgICBsZXQgb3JpZyA9IGZpbmQgdCBrZXkgaW5cbiAgICBsZXQgbmV4dCA9IHVwZGF0ZSBvcmlnIGluXG4gICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleSB+ZGF0YVxuICAgIHwgTm9uZSAtPiBpZiBPcHRpb24uaXNfbm9uZSBvcmlnIHRoZW4gdCBlbHNlIHJlbW92ZSB0IGtleVxuICA7O1xuXG4gIGxldCB1cGRhdGUgdCBrZXkgfmYgPSBjaGFuZ2UgdCBrZXkgfmY6KGZ1biBkYXRhIC0+IFNvbWUgKGYgZGF0YSkpXG5cbiAgbGV0IG9mX2FsaXN0X2V4biB0ID1cbiAgICBNYXAub2ZfYWxpc3RfZXhuIChtb2R1bGUgVWlkKSAoTGlzdC5tYXAgdCB+ZjooZnVuIHAgLT4gUGFja2VkLnR5cGVfaWRfdWlkIHAsIHApKVxuICA7O1xuXG4gIGxldCB0eXBlX2VxdWFsIDogKCdzIHQsICdzIFBhY2tlZC50IE1hcC5NKFR5cGVfZXF1YWwuSWQuVWlkKS50KSBUeXBlX2VxdWFsLnQgPSBUXG5lbmRcblxubW9kdWxlIE1ha2VcbiAgICAoS2V5IDogS2V5KSAoRGF0YSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgTSA9XG4gICAgTWFrZTFcbiAgICAgIChLZXkpXG4gICAgICAoc3RydWN0XG4gICAgICAgIHR5cGUgKF8sICdhKSB0ID0gJ2EgRGF0YS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICBlbmQpXG5cbiAgdHlwZSB0ID0gdW5pdCBNLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBtb2R1bGUgS2V5ID0gS2V5XG5cbiAgdHlwZSAnYSBkYXRhID0gJ2EgRGF0YS50XG5cbiAgbGV0IGludmFyaWFudCA9IE0uaW52YXJpYW50XG4gIGxldCBlbXB0eSA9IE0uZW1wdHlcbiAgbGV0IHNpbmdsZXRvbiA9IE0uc2luZ2xldG9uXG4gIGxldCBpc19lbXB0eSA9IE0uaXNfZW1wdHlcbiAgbGV0IHNldCA9IE0uc2V0XG4gIGxldCBtZW0gPSBNLm1lbVxuICBsZXQgbWVtX2J5X2lkID0gTS5tZW1fYnlfaWRcbiAgbGV0IGZpbmQgPSBNLmZpbmRcbiAgbGV0IGZpbmRfZXhuID0gTS5maW5kX2V4blxuICBsZXQgYWRkID0gTS5hZGRcbiAgbGV0IGFkZF9leG4gPSBNLmFkZF9leG5cbiAgbGV0IGNoYW5nZSA9IE0uY2hhbmdlXG4gIGxldCBjaGFuZ2VfZXhuID0gTS5jaGFuZ2VfZXhuXG4gIGxldCB1cGRhdGUgPSBNLnVwZGF0ZVxuICBsZXQgcmVtb3ZlID0gTS5yZW1vdmVcbiAgbGV0IHJlbW92ZV9ieV9pZCA9IE0ucmVtb3ZlX2J5X2lkXG5cbiAgbW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ3MgdDEgPSAncyBNLlBhY2tlZC50ID0gVCA6ICdhIEtleS50ICogJ2EgRGF0YS50IC0+ICdzIHQxXG4gICAgdHlwZSB0ID0gdW5pdCB0MVxuICBlbmRcblxuICBsZXQgdG9fYWxpc3QgPSBNLnRvX2FsaXN0XG4gIGxldCBvZl9hbGlzdF9leG4gPSBNLm9mX2FsaXN0X2V4blxuICBsZXQgdHlwZV9lcXVhbCA6ICh0LCBQYWNrZWQudCBNYXAuTShUeXBlX2VxdWFsLklkLlVpZCkudCkgVHlwZV9lcXVhbC50ID0gVFxuZW5kXG5cbm1vZHVsZSBNZXJnZSAoS2V5IDogS2V5KSAoSW5wdXQxX2RhdGEgOiBEYXRhKSAoSW5wdXQyX2RhdGEgOiBEYXRhKSAoT3V0cHV0X2RhdGEgOiBEYXRhKSA9XG5zdHJ1Y3RcbiAgdHlwZSBmID1cbiAgICB7IGYgOlxuICAgICAgICAnYS5cbiAgICAgICAgICBrZXk6J2EgS2V5LnRcbiAgICAgICAgLT4gWyBgTGVmdCBvZiAnYSBJbnB1dDFfZGF0YS50XG4gICAgICAgICAgIHwgYFJpZ2h0IG9mICdhIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgfCBgQm90aCBvZiAnYSBJbnB1dDFfZGF0YS50ICogJ2EgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICBdXG4gICAgICAgIC0+ICdhIE91dHB1dF9kYXRhLnQgb3B0aW9uXG4gICAgfVxuXG4gIG1vZHVsZSBPdXRwdXQgPSBNYWtlIChLZXkpIChPdXRwdXRfZGF0YSlcblxuICBsZXQgbWVyZ2UgKHQxIDogTWFrZShLZXkpKElucHV0MV9kYXRhKS50KSAodDIgOiBNYWtlKEtleSkoSW5wdXQyX2RhdGEpLnQpIH5mOnsgZiB9XG4gICAgOiBNYWtlKEtleSkoT3V0cHV0X2RhdGEpLnRcbiAgICA9XG4gICAgbGV0IGYgfmtleSBtZXJnZV9yZXN1bHQgPVxuICAgICAgT3B0aW9uLm1hcCAoZiB+a2V5IG1lcmdlX3Jlc3VsdCkgfmY6KGZ1biBkYXRhIC0+IE91dHB1dC5NLlBhY2tlZC5UIChrZXksIGRhdGEpKVxuICAgIGluXG4gICAgTWFwLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBMZWZ0IGRhdGEpXG4gICAgICB8IGBSaWdodCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgUmlnaHQgZGF0YSlcbiAgICAgIHwgYEJvdGggKFQgKGxlZnRfa2V5LCBsZWZ0X2RhdGEpLCBUIChyaWdodF9rZXksIHJpZ2h0X2RhdGEpKSAtPlxuICAgICAgICAoKiBDYW4ndCByYWlzZSBkdWUgdG8gdGhlIGludmFyaWFudCAqKVxuICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gKEtleS50eXBlX2lkIGxlZnRfa2V5KSAoS2V5LnR5cGVfaWQgcmlnaHRfa2V5KVxuICAgICAgICBpblxuICAgICAgICBmIH5rZXk6bGVmdF9rZXkgKGBCb3RoIChsZWZ0X2RhdGEsIHJpZ2h0X2RhdGEpKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWVyZ2UxXG4gICAgKEtleSA6IEtleSlcbiAgICAoSW5wdXQxX2RhdGEgOiBEYXRhMSlcbiAgICAoSW5wdXQyX2RhdGEgOiBEYXRhMSlcbiAgICAoT3V0cHV0X2RhdGEgOiBEYXRhMSkgPVxuc3RydWN0XG4gIHR5cGUgKCdzMSwgJ3MyLCAnczMpIGYgPVxuICAgIHsgZiA6XG4gICAgICAgICdhLlxuICAgICAgICAgIGtleTonYSBLZXkudFxuICAgICAgICAtPiBbIGBMZWZ0IG9mICgnczEsICdhKSBJbnB1dDFfZGF0YS50XG4gICAgICAgICAgIHwgYFJpZ2h0IG9mICgnczIsICdhKSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIHwgYEJvdGggb2YgKCdzMSwgJ2EpIElucHV0MV9kYXRhLnQgKiAoJ3MyLCAnYSkgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICBdXG4gICAgICAgIC0+ICgnczMsICdhKSBPdXRwdXRfZGF0YS50IG9wdGlvblxuICAgIH1cblxuICBtb2R1bGUgT3V0cHV0ID0gTWFrZTEgKEtleSkgKE91dHB1dF9kYXRhKVxuXG4gIGxldCBtZXJnZVxuICAgICAgICAodHlwZSBzMSBzMilcbiAgICAgICAgKHQxIDogczEgTWFrZTEoS2V5KShJbnB1dDFfZGF0YSkudClcbiAgICAgICAgKHQyIDogczIgTWFrZTEoS2V5KShJbnB1dDJfZGF0YSkudClcbiAgICAgICAgfmY6eyBmIH1cbiAgICA9XG4gICAgbGV0IGYgfmtleSBtZXJnZV9yZXN1bHQgPVxuICAgICAgT3B0aW9uLm1hcCAoZiB+a2V5IG1lcmdlX3Jlc3VsdCkgfmY6KGZ1biBkYXRhIC0+IE91dHB1dC5QYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgICBpblxuICAgIE1hcC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXk6XyAtPiBmdW5jdGlvblxuICAgICAgfCBgTGVmdCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgTGVmdCBkYXRhKVxuICAgICAgfCBgUmlnaHQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYFJpZ2h0IGRhdGEpXG4gICAgICB8IGBCb3RoIChUIChsZWZ0X2tleSwgbGVmdF9kYXRhKSwgVCAocmlnaHRfa2V5LCByaWdodF9kYXRhKSkgLT5cbiAgICAgICAgKCogQ2FuJ3QgcmFpc2UgZHVlIHRvIHRoZSBpbnZhcmlhbnQgKilcbiAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIChLZXkudHlwZV9pZCBsZWZ0X2tleSkgKEtleS50eXBlX2lkIHJpZ2h0X2tleSlcbiAgICAgICAgaW5cbiAgICAgICAgZiB+a2V5OmxlZnRfa2V5IChgQm90aCAobGVmdF9kYXRhLCByaWdodF9kYXRhKSkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFR5cGVfaWRfa2V5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFR5cGVfZXF1YWwuSWQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB0eXBlX2lkID0gRm4uaWRcbmVuZFxuXG5pbmNsdWRlIChcbiAgTWFrZVxuICAgIChUeXBlX2lkX2tleSlcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZCkgOlxuICAgIFMgd2l0aCB0eXBlICdhIGRhdGEgPSAnYSBhbmQgbW9kdWxlIEtleSA6PSBUeXBlX2lkX2tleSlcblxubW9kdWxlIEtleSA9IFR5cGVfZXF1YWwuSWRcblxubW9kdWxlIFdpdGhfZGVmYXVsdCA9IHN0cnVjdFxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsga2V5IDogJ2EgVHlwZV9lcXVhbC5JZC50XG4gICAgICA7IGRlZmF1bHQgOiAnYVxuICAgICAgfVxuXG4gICAgbGV0IGNyZWF0ZSB+ZGVmYXVsdCB+bmFtZSBzZXhwX29mID1cbiAgICAgIHsgZGVmYXVsdDsga2V5ID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWUgc2V4cF9vZiB9XG4gICAgOztcblxuICAgIGxldCBpZCB0ID0gdC5rZXlcbiAgZW5kXG5cbiAgbGV0IGZpbmQgdCB7IEtleS5rZXk7IGRlZmF1bHQgfSA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdCAoZmluZCB0IGtleSlcbiAgbGV0IHNldCB0IH5rZXk6eyBLZXkua2V5OyBkZWZhdWx0ID0gXyB9IH5kYXRhID0gc2V0IHQgfmtleSB+ZGF0YVxuICBsZXQgY2hhbmdlIHQga2V5IH5mOnVwZGF0ZSA9IHNldCB0IH5rZXkgfmRhdGE6KHVwZGF0ZSAoZmluZCB0IGtleSkpXG5lbmRcblxubW9kdWxlIFdpdGhfZm9sZCA9IHN0cnVjdFxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICAgIHsga2V5IDogJ2IgV2l0aF9kZWZhdWx0LktleS50XG4gICAgICA7IGYgOiAnYiAtPiAnYSAtPiAnYlxuICAgICAgfVxuXG4gICAgbGV0IGNyZWF0ZSB+aW5pdCB+ZiB+bmFtZSBzZXhwX29mID1cbiAgICAgIHsgZjsga2V5ID0gV2l0aF9kZWZhdWx0LktleS5jcmVhdGUgfmRlZmF1bHQ6aW5pdCB+bmFtZSBzZXhwX29mIH1cbiAgICA7O1xuXG4gICAgbGV0IGlkIHQgPSBXaXRoX2RlZmF1bHQuS2V5LmlkIHQua2V5XG4gIGVuZFxuXG4gIGxldCBmaW5kIHQgeyBLZXkua2V5OyBmID0gXyB9ID0gV2l0aF9kZWZhdWx0LmZpbmQgdCBrZXlcbiAgbGV0IHNldCB0IH5rZXk6eyBLZXkua2V5OyBmID0gXyB9IH5kYXRhID0gV2l0aF9kZWZhdWx0LnNldCB0IH5rZXkgfmRhdGFcbiAgbGV0IGNoYW5nZSB0IHsgS2V5LmtleTsgZiA9IF8gfSB+Zjp1cGRhdGUgPSBXaXRoX2RlZmF1bHQuY2hhbmdlIHQga2V5IH5mOnVwZGF0ZVxuXG4gIGxldCBhZGQgdCB+a2V5OnsgS2V5LmtleTsgZiB9IH5kYXRhID1cbiAgICBXaXRoX2RlZmF1bHQuY2hhbmdlIHQga2V5IH5mOihmdW4gYWNjIC0+IGYgYWNjIGRhdGEpXG4gIDs7XG5lbmRcblxubW9kdWxlIE11bHRpID0gc3RydWN0XG4gIG9wZW4gV2l0aF9mb2xkXG5cbiAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICgnYSwgJ2EgbGlzdCkgS2V5LnRcblxuICAgIGxldCBjcmVhdGUgfm5hbWUgc2V4cF9vZiA9XG4gICAgICBLZXkuY3JlYXRlIH5pbml0OltdIH5mOihmdW4geHMgeCAtPiB4IDo6IHhzKSB+bmFtZSAoTGlzdC5zZXhwX29mX3Qgc2V4cF9vZilcbiAgICA7O1xuXG4gICAgbGV0IGlkID0gV2l0aF9mb2xkLktleS5pZFxuICBlbmRcblxuICBsZXQgc2V0ID0gc2V0XG4gIGxldCBmaW5kID0gZmluZFxuICBsZXQgYWRkID0gYWRkXG4gIGxldCBjaGFuZ2UgPSBjaGFuZ2VcbmVuZFxuIiwiaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBTdGRpb1xuXG4gIGxldCBlcHJpbnRmID0gZXByaW50ZlxuICBsZXQgcHJpbnRmID0gcHJpbnRmXG4gIGxldCBwcmludF9zID0gcHJpbnRfc1xuICBsZXQgcHJpbnRfc3RyaW5nID0gcHJpbnRfc3RyaW5nXG4gIGxldCBwcmludF9lbmRsaW5lID0gcHJpbnRfZW5kbGluZVxuICBsZXQgcHJlcnJfZW5kbGluZSA9IHByZXJyX2VuZGxpbmVcblxuICBtb2R1bGUgSW5fY2hhbm5lbCA9IEluX2NoYW5uZWxcbmVuZFxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIEJhc2UuUHJpbnRmXG5cbiAgbGV0IHNwcmludGYgPSBzcHJpbnRmXG4gIGxldCBmYWlsd2l0aGYgPSBmYWlsd2l0aGZcbiAgbGV0IGtzcHJpbnRmID0ga3NwcmludGZcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgQ09NTUFORF9PVVRQVVRfSU5TVEFMTEFUSU9OX0JBU0hcbiAgfCBDT01NQU5EX09VVFBVVF9IRUxQX1NFWFBcbiAgfCBDT01QX0NXT1JEXG5bQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHBfb2ZdXG5cbmxldCB0b19zdHJpbmcgdCA9IFNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgdClcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTZXhwbGliMC5TZXhwX2NvbnZcbiAgb3BlbiBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuICBvcGVuIFBweF9zdGFibGVfd2l0bmVzc19ydW50aW1lLlN0YWJsZV93aXRuZXNzLkV4cG9ydFxuXG4gIG1vZHVsZSBMYXp5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgbGF6eV90IFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IGNvbXBhcmUgPSBCYXNlLkxhenkuY29tcGFyZVxuICBlbmRcblxuICBtb2R1bGUgQW5vbnMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgR3JhbW1hciA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgfCBaZXJvXG4gICAgICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICAgICAgfCBNYW55IG9mIHRcbiAgICAgICAgICB8IE1heWJlIG9mIHRcbiAgICAgICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcbiAgICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgbGV0IHJlYyBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgQmFzZS5JbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBaZXJvIC0+ICgpXG4gICAgICAgICAgICB8IE9uZSBfIC0+ICgpXG4gICAgICAgICAgICB8IE1hbnkgWmVybyAtPiBmYWlsd2l0aCBcIk1hbnkgWmVybyBzaG91bGQgYmUganVzdCBaZXJvXCJcbiAgICAgICAgICAgIHwgTWFueSB0IC0+IGludmFyaWFudCB0XG4gICAgICAgICAgICB8IE1heWJlIFplcm8gLT4gZmFpbHdpdGggXCJNYXliZSBaZXJvIHNob3VsZCBiZSBqdXN0IFplcm9cIlxuICAgICAgICAgICAgfCBNYXliZSB0IC0+IGludmFyaWFudCB0XG4gICAgICAgICAgICB8IENvbmNhdCBbXSB8IENvbmNhdCBbIF8gXSAtPiBmYWlsd2l0aCBcIkZsYXR0ZW4gemVybyBhbmQgb25lLWVsZW1lbnQgQ29uY2F0XCJcbiAgICAgICAgICAgIHwgQ29uY2F0IHRzIC0+IEJhc2UuTGlzdC5pdGVyIHRzIH5mOmludmFyaWFudFxuICAgICAgICAgICAgfCBBZF9ob2MgXyAtPiAoKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIGxldCB0ID0gWyVvZl9zZXhwOiB0XSBzZXhwIGluXG4gICAgICAgICAgaW52YXJpYW50IHQ7XG4gICAgICAgICAgdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWMgdXNhZ2UgPVxuICAgICAgICAgIGxldCBvcGVuIEltcG9ydCBpblxuICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgfCBaZXJvIC0+IFwiXCJcbiAgICAgICAgICB8IE9uZSB1c2FnZSAtPiB1c2FnZVxuICAgICAgICAgIHwgTWFueSBaZXJvIC0+IGZhaWx3aXRoIFwiYnVnIGluIGNvbW1hbmQubWxcIlxuICAgICAgICAgIHwgTWFueSAoT25lIF8gYXMgdCkgLT4gc3ByaW50ZiBcIlslcyAuLi5dXCIgKHVzYWdlIHQpXG4gICAgICAgICAgfCBNYW55IHQgLT4gc3ByaW50ZiBcIlsoJXMpIC4uLl1cIiAodXNhZ2UgdClcbiAgICAgICAgICB8IE1heWJlIFplcm8gLT4gZmFpbHdpdGggXCJidWcgaW4gY29tbWFuZC5tbFwiXG4gICAgICAgICAgfCBNYXliZSB0IC0+IHNwcmludGYgXCJbJXNdXCIgKHVzYWdlIHQpXG4gICAgICAgICAgfCBDb25jYXQgdHMgLT4gQmFzZS5TdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKEJhc2UuTGlzdC5tYXAgdHMgfmY6dXNhZ2UpXG4gICAgICAgICAgfCBBZF9ob2MgdXNhZ2UgLT4gdXNhZ2VcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTW9kZWwgPSBWMVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IFVzYWdlIG9mIHN0cmluZ1xuICAgICAgICB8IEdyYW1tYXIgb2YgR3JhbW1hci5WMS50XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYyXG4gIGVuZFxuXG4gIG1vZHVsZSBGbGFnX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IGRvYyA6IHN0cmluZ1xuICAgICAgICA7IGFsaWFzZXMgOiBzdHJpbmcgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYxXG4gIGVuZFxuXG4gIG1vZHVsZSBCYXNlX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBhbm9ucyA6IEFub25zLlYyLnRcbiAgICAgICAgOyBmbGFncyA6IEZsYWdfaW5mby5WMS50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZmllbGRzLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IHVzYWdlIDogc3RyaW5nXG4gICAgICAgIDsgZmxhZ3MgOiBGbGFnX2luZm8uVjEudCBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0IHsgc3VtbWFyeTsgcmVhZG1lOyB1c2FnZTsgZmxhZ3MgfSA9XG4gICAgICAgIHsgVjIuc3VtbWFyeTsgcmVhZG1lOyBhbm9ucyA9IFVzYWdlIHVzYWdlOyBmbGFncyB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfbGF0ZXN0IHsgVjIuc3VtbWFyeTsgcmVhZG1lOyBhbm9uczsgZmxhZ3MgfSA9XG4gICAgICAgIHsgc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZVxuICAgICAgICA7IHVzYWdlID1cbiAgICAgICAgICAgIChtYXRjaCBhbm9ucyB3aXRoXG4gICAgICAgICAgICAgfCBVc2FnZSB1c2FnZSAtPiB1c2FnZVxuICAgICAgICAgICAgIHwgR3JhbW1hciBncmFtbWFyIC0+IEFub25zLkdyYW1tYXIuVjEudXNhZ2UgZ3JhbW1hcilcbiAgICAgICAgOyBmbGFnc1xuICAgICAgICB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjJcbiAgZW5kXG5cbiAgbW9kdWxlIEdyb3VwX2luZm8gPSBzdHJ1Y3RcbiAgICB0eXBlIGEgPSBEdW1teV90eXBlX2JlY2F1c2Vfd2VfY2Fubm90X2RpZ2VzdF90eXBlX2NvbnN0cnVjdG9yc19vbmx5X2NvbmNyZXRlX3R5cGVzXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIGxpc3QgTGF6eS50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBvcGVuISBCYXNlXG5cbiAgICAgIGxldCBtYXAgdCB+ZiA9XG4gICAgICAgIHsgdCB3aXRoIHN1YmNvbW1hbmRzID0gTGF6eS5tYXAgdC5zdWJjb21tYW5kcyB+ZjooTGlzdC5Bc3NvYy5tYXAgfmYpIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMlxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIG9wZW4hIEJhc2VcblxuICAgICAgbGV0IG1hcCB0IH5mID0geyB0IHdpdGggc3ViY29tbWFuZHMgPSBMaXN0LkFzc29jLm1hcCB0LnN1YmNvbW1hbmRzIH5mIH1cblxuICAgICAgbGV0IHRvX2xhdGVzdCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgfSA6ICdhIE1vZGVsLnQgPVxuICAgICAgICB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBMYXp5LmZyb21fdmFsIHN1YmNvbW1hbmRzIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9sYXRlc3QgKHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyB9IDogJ2EgTW9kZWwudCkgOiAnYSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gTGF6eS5mb3JjZSBzdWJjb21tYW5kcyB9XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRXhlY19pbmZvID0gc3RydWN0XG4gICAgbGV0IGFic19wYXRoIH5kaXIgcGF0aCA9XG4gICAgICBpZiBGaWxlbmFtZV9iYXNlLmlzX2Fic29sdXRlIHBhdGggdGhlbiBwYXRoIGVsc2UgRmlsZW5hbWVfYmFzZS5jb25jYXQgZGlyIHBhdGhcbiAgICA7O1xuXG4gICAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEJhc2UuRm4uaWRcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBCYXNlLkZuLmlkXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWM1xuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IHRvX3YzIHQgOiBWMy50ID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyB3b3JraW5nX2RpciA9IHQud29ya2luZ19kaXJcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA9IHQucGF0aF90b19leGVcbiAgICAgICAgOyBjaGlsZF9zdWJjb21tYW5kID0gW11cbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3YzICh0IDogVjMudCkgPVxuICAgICAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICAgICAgOyByZWFkbWUgPSB0LnJlYWRtZVxuICAgICAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gYWJzX3BhdGggfmRpcjp0LndvcmtpbmdfZGlyIHQucGF0aF90b19leGVcbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEJhc2UuRm4uY29tcG9zZSBWMy50b19sYXRlc3QgdG9fdjNcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBCYXNlLkZuLmNvbXBvc2Ugb2ZfdjMgVjMub2ZfbGF0ZXN0XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyAoKiBbcGF0aF90b19leGVdIG11c3QgYmUgYWJzb2x1dGUuICopXG4gICAgICAgICAgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCB0b192MiB0IDogVjIudCA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgd29ya2luZ19kaXIgPSBcIi9cIlxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gdC5wYXRoX3RvX2V4ZVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfdjIgKHQgOiBWMi50KSA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgcGF0aF90b19leGUgPSBhYnNfcGF0aCB+ZGlyOnQud29ya2luZ19kaXIgdC5wYXRoX3RvX2V4ZVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gQmFzZS5Gbi5jb21wb3NlIFYyLnRvX2xhdGVzdCB0b192MlxuICAgICAgbGV0IG9mX2xhdGVzdCA9IEJhc2UuRm4uY29tcG9zZSBvZl92MiBWMi5vZl9sYXRlc3RcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEZ1bGx5X2ZvcmNlZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBCYXNpYyBvZiBCYXNlX2luZm8uVjIudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMi50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjMudCAqIHRcbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjFcbiAgZW5kXG5cbiAgbW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLlYyLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjIudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYzLnRcbiAgICAgICAgfCBMYXp5IG9mIHQgTGF6eS50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEJhc2UuRm4uaWRcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBCYXNlLkZuLmlkXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWM1xuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLlYyLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjEudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYyLnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgcmVjIHRvX2xhdGVzdCA6IHQgLT4gTW9kZWwudCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgYlxuICAgICAgICB8IEV4ZWMgZSAtPiBFeGVjIChFeGVjX2luZm8uVjIudG9fbGF0ZXN0IGUpXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS50b19sYXRlc3QgKEdyb3VwX2luZm8uVjEubWFwIGcgfmY6dG9fbGF0ZXN0KSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgb2ZfbGF0ZXN0IDogTW9kZWwudCAtPiB0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSBiXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMi5vZl9sYXRlc3QgZSlcbiAgICAgICAgfCBMYXp5IHRodW5rIC0+IG9mX2xhdGVzdCAoQmFzZS5MYXp5LmZvcmNlIHRodW5rKVxuICAgICAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8uVjEubWFwIChHcm91cF9pbmZvLlYxLm9mX2xhdGVzdCBnKSB+ZjpvZl9sYXRlc3QpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLlYxLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjEudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYxLnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgcmVjIHRvX2xhdGVzdCA6IHQgLT4gTW9kZWwudCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgKEJhc2VfaW5mby5WMS50b19sYXRlc3QgYilcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYxLnRvX2xhdGVzdCBlKVxuICAgICAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8uVjEudG9fbGF0ZXN0IChHcm91cF9pbmZvLlYxLm1hcCBnIH5mOnRvX2xhdGVzdCkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIG9mX2xhdGVzdCA6IE1vZGVsLnQgLT4gdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgKEJhc2VfaW5mby5WMS5vZl9sYXRlc3QgYilcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYxLm9mX2xhdGVzdCBlKVxuICAgICAgICB8IExhenkgdGh1bmsgLT4gb2ZfbGF0ZXN0IChCYXNlLkxhenkuZm9yY2UgdGh1bmspXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS5tYXAgKEdyb3VwX2luZm8uVjEub2ZfbGF0ZXN0IGcpIH5mOm9mX2xhdGVzdClcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVmVyc2lvbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IFYxIG9mIFYxLnRcbiAgICAgICAgfCBWMiBvZiBWMi50XG4gICAgICAgIHwgVjMgb2YgVjMudCAoKiBhdmFpbGFibGUgYXQgbGVhc3Qgc2luY2UgMjAyMC0wNCAqKVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgdmFyaWFudHMsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBWMSB0IC0+IFYxLnRvX2xhdGVzdCB0XG4gICAgICAgIHwgVjIgdCAtPiBWMi50b19sYXRlc3QgdFxuICAgICAgICB8IFYzIHQgLT4gVjMudG9fbGF0ZXN0IHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9sYXRlc3QgfnZlcnNpb25fdG9fdXNlIGxhdGVzdCA9XG4gICAgICAgIG1hdGNoIHZlcnNpb25fdG9fdXNlIHdpdGhcbiAgICAgICAgfCAxIC0+IFYxIChWMS5vZl9sYXRlc3QgbGF0ZXN0KVxuICAgICAgICB8IDIgLT4gVjIgKFYyLm9mX2xhdGVzdCBsYXRlc3QpXG4gICAgICAgIHwgMyAtPiBWMyAoVjMub2ZfbGF0ZXN0IGxhdGVzdClcbiAgICAgICAgfCBvdGhlciAtPlxuICAgICAgICAgIEJhc2UuRXJyb3IuY3JlYXRlXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcInVuc3VwcG9ydGVkIHZlcnNpb25fdG9fdXNlXCJcbiAgICAgICAgICAgIG90aGVyXG4gICAgICAgICAgICBbJXNleHBfb2Y6IGludF1cbiAgICAgICAgICB8PiBCYXNlLkVycm9yLnJhaXNlXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5vcGVuISBCYXNlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFub25zID0gc3RydWN0XG4gIG1vZHVsZSBHcmFtbWFyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU3RhYmxlLkFub25zLkdyYW1tYXIuTW9kZWwudCA9XG4gICAgICB8IFplcm9cbiAgICAgIHwgT25lIG9mIHN0cmluZ1xuICAgICAgfCBNYW55IG9mIHRcbiAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgfCBDb25jYXQgb2YgdCBsaXN0XG4gICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGludmFyaWFudCA9IFN0YWJsZS5Bbm9ucy5HcmFtbWFyLk1vZGVsLmludmFyaWFudFxuICAgIGxldCB1c2FnZSA9IFN0YWJsZS5Bbm9ucy5HcmFtbWFyLk1vZGVsLnVzYWdlXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFN0YWJsZS5Bbm9ucy5Nb2RlbC50ID1cbiAgICB8IFVzYWdlIG9mIHN0cmluZ1xuICAgIHwgR3JhbW1hciBvZiBHcmFtbWFyLnRcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgTnVtX29jY3VycmVuY2VzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBhdF9sZWFzdF9vbmNlIDogYm9vbFxuICAgIDsgYXRfbW9zdF9vbmNlIDogYm9vbFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IG1heWJlX21pc3NpbmdfcHJlZml4ID0gXCJbXCJcbiAgbGV0IG1heWJlX21pc3Npbmdfc3VmZml4ID0gXCJdXCJcbiAgbGV0IG1heWJlX21vcmVfc3VmZml4ID0gXCIgLi4uXCJcblxuICBsZXQgdG9faGVscF9zdHJpbmcgdCB+ZmxhZ19uYW1lID1cbiAgICBsZXQgeyBhdF9sZWFzdF9vbmNlOyBhdF9tb3N0X29uY2UgfSA9IHQgaW5cbiAgICBsZXQgZGVzY3JpcHRpb24gPVxuICAgICAgaWYgYXRfbGVhc3Rfb25jZVxuICAgICAgdGhlbiBmbGFnX25hbWVcbiAgICAgIGVsc2UgU3RyaW5nLmNvbmNhdCBbIG1heWJlX21pc3NpbmdfcHJlZml4OyBmbGFnX25hbWU7IG1heWJlX21pc3Npbmdfc3VmZml4IF1cbiAgICBpblxuICAgIGlmIGF0X21vc3Rfb25jZSB0aGVuIGRlc2NyaXB0aW9uIGVsc2UgU3RyaW5nLmNvbmNhdCBbIGRlc2NyaXB0aW9uOyBtYXliZV9tb3JlX3N1ZmZpeCBdXG4gIDs7XG5cbiAgbGV0IG9mX2hlbHBfc3RyaW5nIG5hbWUgPVxuICAgIGxldCBhdF9tb3N0X29uY2UsIG5hbWUgPVxuICAgICAgbWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IG5hbWUgfnN1ZmZpeDptYXliZV9tb3JlX3N1ZmZpeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZSwgbmFtZVxuICAgICAgfCBTb21lIG5hbWUgLT4gZmFsc2UsIG5hbWVcbiAgICBpblxuICAgIGxldCBhdF9sZWFzdF9vbmNlLCBuYW1lID1cbiAgICAgIG1hdGNoXG4gICAgICAgIFN0cmluZy5jaG9wX3ByZWZpeCBuYW1lIH5wcmVmaXg6bWF5YmVfbWlzc2luZ19wcmVmaXhcbiAgICAgICAgfD4gT3B0aW9uLmJpbmQgfmY6KFN0cmluZy5jaG9wX3N1ZmZpeCB+c3VmZml4Om1heWJlX21pc3Npbmdfc3VmZml4KVxuICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWUsIG5hbWVcbiAgICAgIHwgU29tZSBuYW1lIC0+IGZhbHNlLCBuYW1lXG4gICAgaW5cbiAgICB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSB9LCBuYW1lXG4gIDs7XG5cbiAgbGV0JWV4cGVjdF90ZXN0IFwidG9faGVscF9zdHJpbmdcIiA9XG4gICAgbGV0IGZsYWdfbmFtZSA9IFwibmFtZVwiIGluXG4gICAgTGlzdC5pdGVyIFslYWxsOiB0XSB+ZjooZnVuIHQgLT5cbiAgICAgIGxldCBzID0gdG9faGVscF9zdHJpbmcgdCB+ZmxhZ19uYW1lIGluXG4gICAgICBwcmludF9zIFslbWVzc2FnZSBcIlwiIH5fOih0IDogdCkgc107XG4gICAgICBsZXQgdCcsIGZsYWdfbmFtZScgPSBvZl9oZWxwX3N0cmluZyBzIGluXG4gICAgICBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogdF0gdCB0Jyk7XG4gICAgICBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogc3RyaW5nXSBmbGFnX25hbWUgZmxhZ19uYW1lJykpO1xuICAgIFslZXhwZWN0XG4gICAgICB7fFxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIGZhbHNlKSAoYXRfbW9zdF9vbmNlIGZhbHNlKSkgXCJbbmFtZV0gLi4uXCIpXG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgdHJ1ZSkgKGF0X21vc3Rfb25jZSBmYWxzZSkpIFwibmFtZSAuLi5cIilcbiAgICAgICAgKCgoYXRfbGVhc3Rfb25jZSBmYWxzZSkgKGF0X21vc3Rfb25jZSB0cnVlKSkgW25hbWVdKVxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIHRydWUpIChhdF9tb3N0X29uY2UgdHJ1ZSkpIG5hbWUpIHx9XVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbGFnX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkZsYWdfaW5mby5Nb2RlbC50ID1cbiAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICA7IGRvYyA6IHN0cmluZ1xuICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IHBhcnNlX25hbWUgdCA9XG4gICAgbGV0IG51bV9vY2N1cnJlbmNlcywgZmxhZ19uYW1lID0gTnVtX29jY3VycmVuY2VzLm9mX2hlbHBfc3RyaW5nIHQubmFtZSBpblxuICAgIG1hdGNoIFN0cmluZy5zcGxpdCBmbGFnX25hbWUgfm9uOicgJyB3aXRoXG4gICAgfCBbIGZsYWdfbmFtZSBdIC0+IE9rIChudW1fb2NjdXJyZW5jZXMsIGZhbHNlLCBmbGFnX25hbWUpXG4gICAgfCBbIGZsYWdfbmFtZTsgX2FyZ19kb2MgXSAtPiBPayAobnVtX29jY3VycmVuY2VzLCB0cnVlLCBmbGFnX25hbWUpXG4gICAgfCBfIC0+IEVycm9yIChFcnJvci5jcmVhdGVfcyBbJW1lc3NhZ2UgXCJVbmFibGUgdG8gcGFyc2VcIiBmbGFnX25hbWVdKVxuICA7O1xuXG4gICgqIFVzZXJzIGFyZSBsaWtlbHkgdG8gY2FsbCBhbGwgdGhyZWUgb2YgdGhlc2UgZnVuY3Rpb25zLCBpbiB3aGljaCBjYXNlIHdlIHdpbGwgcmUtcGFyc2VcbiAgICAgdGhlIFtuYW1lXSBzZXZlcmFsIHRpbWVzLiBXZSBkb24ndCBleHBlY3QgdXNlcnMgb2YgdGhlc2UgZnVuY3Rpb25zIHRvIGNhcmUgYWJvdXQgdGhlXG4gICAgIGluZWZmaWNpZW5jeS4gKilcbiAgbGV0IGZsYWdfbmFtZSB0ID1cbiAgICBwYXJzZV9uYW1lIHRcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoKF8gOiBOdW1fb2NjdXJyZW5jZXMudCksIChfIDogYm9vbCksIGZsYWdfbmFtZSkgLT4gZmxhZ19uYW1lKVxuICA7O1xuXG4gIGxldCBudW1fb2NjdXJyZW5jZXMgdCA9XG4gICAgcGFyc2VfbmFtZSB0XG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKG51bV9vY2N1cnJlbmNlcywgKF8gOiBib29sKSwgKF8gOiBzdHJpbmcpKSAtPlxuICAgICAgbnVtX29jY3VycmVuY2VzKVxuICA7O1xuXG4gIGxldCByZXF1aXJlc19hcmcgdCA9XG4gICAgcGFyc2VfbmFtZSB0XG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKChfIDogTnVtX29jY3VycmVuY2VzLnQpLCByZXF1aXJlc19hcmcsIChfIDogc3RyaW5nKSkgLT5cbiAgICAgIHJlcXVpcmVzX2FyZylcbiAgOztcblxuICBsZXQgaGVscF9zY3JlZW5fY29tcGFyZSBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgXywgXCJbLWhlbHBdXCIgLT4gLTFcbiAgICB8IFwiWy1oZWxwXVwiLCBfIC0+IDFcbiAgICB8IF8sIFwiWy12ZXJzaW9uXVwiIC0+IC0xXG4gICAgfCBcIlstdmVyc2lvbl1cIiwgXyAtPiAxXG4gICAgfCBfLCBcIlstYnVpbGQtaW5mb11cIiAtPiAtMVxuICAgIHwgXCJbLWJ1aWxkLWluZm9dXCIsIF8gLT4gMVxuICAgIHwgXywgXCJoZWxwXCIgLT4gLTFcbiAgICB8IFwiaGVscFwiLCBfIC0+IDFcbiAgICB8IF8sIFwidmVyc2lvblwiIC0+IC0xXG4gICAgfCBcInZlcnNpb25cIiwgXyAtPiAxXG4gICAgfCBfIC0+IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgRmxhZ19oZWxwX2Rpc3BsYXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRmxhZ19pbmZvLnQgbGlzdFxuXG4gIGxldCBzb3J0IHQgPVxuICAgIExpc3Quc3RhYmxlX3NvcnQgdCB+Y29tcGFyZTooZnVuIGEgYiAtPlxuICAgICAgRmxhZ19pbmZvLmhlbHBfc2NyZWVuX2NvbXBhcmUgYS5GbGFnX2luZm8ubmFtZSBiLkZsYWdfaW5mby5uYW1lKVxuICA7O1xuXG4gIGxldCB3b3JkX3dyYXBfYW5kX3N0cmlwIHRleHQgd2lkdGggPVxuICAgIGxldCBjaHVua3MgPSBTdHJpbmcuc3BsaXQgdGV4dCB+b246J1xcbicgaW5cbiAgICBMaXN0LmNvbmNhdF9tYXAgY2h1bmtzIH5mOihmdW4gdGV4dCAtPlxuICAgICAgbGV0IHdvcmRzID1cbiAgICAgICAgU3RyaW5nLnNwbGl0IHRleHQgfm9uOicgJ1xuICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIHdvcmQgLT4gbm90IChTdHJpbmcuaXNfZW1wdHkgd29yZCkpXG4gICAgICBpblxuICAgICAgbWF0Y2hcbiAgICAgICAgTGlzdC5mb2xkIHdvcmRzIH5pbml0Ok5vbmUgfmY6KGZ1biBhY2Mgd29yZCAtPlxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChtYXRjaCBhY2Mgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBbXSwgd29yZFxuICAgICAgICAgICAgIHwgU29tZSAobGluZXMsIGxpbmUpIC0+XG4gICAgICAgICAgICAgICAoKiBlZmZpY2llbmN5IGlzIG5vdCBhIGNvbmNlcm4gZm9yIHRoZSBzdHJpbmcgbGVuZ3RocyB3ZSBleHBlY3QgKilcbiAgICAgICAgICAgICAgIGxldCBsaW5lX2FuZF93b3JkID0gbGluZSBeIFwiIFwiIF4gd29yZCBpblxuICAgICAgICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBsaW5lX2FuZF93b3JkIDw9IHdpZHRoXG4gICAgICAgICAgICAgICB0aGVuIGxpbmVzLCBsaW5lX2FuZF93b3JkXG4gICAgICAgICAgICAgICBlbHNlIGxpbmUgOjogbGluZXMsIHdvcmQpKVxuICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgKGxpbmVzLCBsaW5lKSAtPiBMaXN0LnJldiAobGluZSA6OiBsaW5lcykpXG4gIDs7XG5cbiAgbW9kdWxlIERpc3BsYXkgOiBzaWdcbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IG51bV9jb2xzID0gODBcbiAgICBsZXQgc3BhY2VzX3N0cmluZyB3aWR0aCA9IFN0cmluZy5tYWtlIHdpZHRoICcgJ1xuXG4gICAgbGV0IHBhZF9zcGFjZXNfdG9fc3VmZml4IHggfndpZHRoID1cbiAgICAgIGxldCBzbGFjayA9IHdpZHRoIC0gU3RyaW5nLmxlbmd0aCB4IGluXG4gICAgICB4IF4gc3BhY2VzX3N0cmluZyBzbGFja1xuICAgIDs7XG5cbiAgICBsZXQgaW5kZW50YXRpb24gPSBcIiAgXCJcbiAgICBsZXQgaW5kZW50X2FuZF9uZXdsaW5lIHggPSBMaXN0LmNvbmNhdCBbIFsgaW5kZW50YXRpb24gXTsgeDsgWyBcIlxcblwiIF0gXVxuICAgIGxldCBzcGFjaW5nX2RvdCA9IFwiLiBcIlxuXG4gICAgbGV0IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgPVxuICAgICAgMjdcbiAgICA7O1xuXG4gICAgbGV0IGRvY3VtZW50YXRpb25fc3RhcnRfY29sdW1uID0gZG90X2luZGVudGF0aW9uX29mZnNldCArIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb25cbiAgICBsZXQgbGhzX3dpZHRoID0gZG9jdW1lbnRhdGlvbl9zdGFydF9jb2x1bW5cbiAgICBsZXQgbGhzX3BhZF93aWR0aCA9IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgKyBTdHJpbmcubGVuZ3RoIGluZGVudGF0aW9uXG4gICAgbGV0IGxoc19wYWQgPSBzcGFjZXNfc3RyaW5nIGxoc19wYWRfd2lkdGhcblxuICAgIGxldCBsaHNfcGFkX2FuZF9uZXdsaW5lX3Rlcm1pbmF0ZSA9XG4gICAgICBMaXN0Lm1hcCB+ZjooZnVuIHYgLT4gaW5kZW50X2FuZF9uZXdsaW5lIFsgbGhzX3BhZDsgdiBdKVxuICAgIDs7XG5cbiAgICBsZXQgcm93cyBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIGRvY3VtZW50YXRpb24gPVxuICAgICAgbGV0IGZsYWdfb25faXRzX293bl9saW5lID1cbiAgICAgICAgbGV0IGZsYWdfd2lkdGggPVxuICAgICAgICAgIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb24gKyBTdHJpbmcubGVuZ3RoIGZsYWdfbmFtZV93aXRoX2FsaWFzZXNcbiAgICAgICAgaW5cbiAgICAgICAgaWYgZmxhZ193aWR0aCA+PSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ICsgU3RyaW5nLmxlbmd0aCBzcGFjaW5nX2RvdFxuICAgICAgICB0aGVuIGluZGVudF9hbmRfbmV3bGluZSBbIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW5kZW50X2FuZF9uZXdsaW5lXG4gICAgICAgICAgICBbIHBhZF9zcGFjZXNfdG9fc3VmZml4IH53aWR0aDpkb3RfaW5kZW50YXRpb25fb2Zmc2V0IGZsYWdfbmFtZV93aXRoX2FsaWFzZXNcbiAgICAgICAgICAgIDsgc3BhY2luZ19kb3RcbiAgICAgICAgICAgIF1cbiAgICAgIGluXG4gICAgICBsZXQgd3JhcHBlZF9kb2N1bWVudGF0aW9uID1cbiAgICAgICAgd29yZF93cmFwX2FuZF9zdHJpcFxuICAgICAgICAgIGRvY3VtZW50YXRpb25cbiAgICAgICAgICAobnVtX2NvbHMgLSBsaHNfd2lkdGggLSBTdHJpbmcubGVuZ3RoIGluZGVudGF0aW9uKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHdyYXBwZWRfZG9jdW1lbnRhdGlvbiB3aXRoXG4gICAgICB8IFtdIC0+IFsgZmxhZ19vbl9pdHNfb3duX2xpbmUgXVxuICAgICAgfCBkb2Nfd3JhcHBlZF9maXJzdF9saW5lIDo6IGRvY193cmFwcGVkX3Jlc3RfbGluZXMgLT5cbiAgICAgICAgbGV0IHdyYXBwZWRfZG9jX2xpbmVzID0gbGhzX3BhZF9hbmRfbmV3bGluZV90ZXJtaW5hdGUgZG9jX3dyYXBwZWRfcmVzdF9saW5lcyBpblxuICAgICAgICBsZXQgcHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfd2l0aCB4ID1cbiAgICAgICAgICBpbmRlbnRfYW5kX25ld2xpbmVcbiAgICAgICAgICAgIFsgcGFkX3NwYWNlc190b19zdWZmaXggfndpZHRoOmRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgeFxuICAgICAgICAgICAgOyBzcGFjaW5nX2RvdFxuICAgICAgICAgICAgOyBkb2Nfd3JhcHBlZF9maXJzdF9saW5lXG4gICAgICAgICAgICBdXG4gICAgICAgIGluXG4gICAgICAgIGlmIFN0cmluZy5sZW5ndGggZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyA+PSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0XG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmbGFnX29uX2l0c19vd25fbGluZVxuICAgICAgICAgIDo6IHByZWZpeF9kb2Nfd3JhcHBlZF9maXJzdF9saW5lX3dpdGggXCJcIlxuICAgICAgICAgIDo6IHdyYXBwZWRfZG9jX2xpbmVzXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV93aXRoIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgOjogd3JhcHBlZF9kb2NfbGluZXNcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgIExpc3QuY29uY2F0X21hcCB0IH5mOihmdW4gdCAtPlxuICAgICAgICBsZXQgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyA9XG4gICAgICAgICAgbGV0IGZsYWcgPSB0LkZsYWdfaW5mby5uYW1lIGluXG4gICAgICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoZmxhZyA6OiB0LmFsaWFzZXMpXG4gICAgICAgIGluXG4gICAgICAgIHJvd3MgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyB0LmRvYyB8PiBMaXN0LmNvbmNhdClcbiAgICAgIHw+IFN0cmluZy5jb25jYXRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdG9fc3RyaW5nIHQgPSBEaXNwbGF5LnRvX3N0cmluZyB0XG5lbmRcblxubW9kdWxlIEtleV90eXBlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBTdWJjb21tYW5kXG4gICAgfCBGbGFnXG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTdWJjb21tYW5kIC0+IFwic3ViY29tbWFuZFwiXG4gICAgfCBGbGFnIC0+IFwiZmxhZ1wiXG4gIDs7XG5lbmRcblxubGV0IGxvb2t1cF9leHBhbmQgYWxpc3QgcHJlZml4IGtleV90eXBlID1cbiAgbGV0IGlzX2Rhc2ggPSBDaGFyLmVxdWFsICctJyBpblxuICBsZXQgYWxpc3QgPVxuICAgICgqIG5vIHBhcnRpYWwgbWF0Y2hlcyB1bmxlc3Mgc29tZSBub24tZGFzaCBjaGFyIGlzIHByZXNlbnQgKilcbiAgICBpZiBTdHJpbmcuZm9yX2FsbCBwcmVmaXggfmY6aXNfZGFzaFxuICAgIHRoZW4gTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoa2V5LCAoZGF0YSwgXykpIC0+IGtleSwgKGRhdGEsIGBGdWxsX21hdGNoX3JlcXVpcmVkKSlcbiAgICBlbHNlIGFsaXN0XG4gIGluXG4gIG1hdGNoXG4gICAgTGlzdC5maWx0ZXIgYWxpc3QgfmY6KGZ1bmN0aW9uXG4gICAgICB8IGtleSwgKF8sIGBGdWxsX21hdGNoX3JlcXVpcmVkKSAtPiBTdHJpbmcuKCA9ICkga2V5IHByZWZpeFxuICAgICAgfCBrZXksIChfLCBgUHJlZml4KSAtPiBTdHJpbmcuaXNfcHJlZml4IGtleSB+cHJlZml4KVxuICB3aXRoXG4gIHwgWyAoa2V5LCAoZGF0YSwgX25hbWVfbWF0Y2hpbmcpKSBdIC0+IE9rIChrZXksIGRhdGEpXG4gIHwgW10gLT4gRXJyb3IgKHNwcmludGYgIVwidW5rbm93biAle0tleV90eXBlfSAlc1wiIGtleV90eXBlIHByZWZpeClcbiAgfCBtYXRjaGVzIC0+XG4gICAgKG1hdGNoIExpc3QuZmluZCBtYXRjaGVzIH5mOihmdW4gKGtleSwgXykgLT4gU3RyaW5nLiggPSApIGtleSBwcmVmaXgpIHdpdGhcbiAgICAgfCBTb21lIChrZXksIChkYXRhLCBfbmFtZV9tYXRjaGluZykpIC0+IE9rIChrZXksIGRhdGEpXG4gICAgIHwgTm9uZSAtPlxuICAgICAgIGxldCBtYXRjaGluZ19rZXlzID0gTGlzdC5tYXAgfmY6ZnN0IG1hdGNoZXMgaW5cbiAgICAgICBFcnJvclxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICFcIiV7S2V5X3R5cGV9ICVzIGlzIGFuIGFtYmlndW91cyBwcmVmaXg6ICVzXCJcbiAgICAgICAgICAgIGtleV90eXBlXG4gICAgICAgICAgICBwcmVmaXhcbiAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIG1hdGNoaW5nX2tleXMpKSlcbjs7XG5cbm1vZHVsZSBCYXNlX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkJhc2VfaW5mby5Nb2RlbC50ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICA7IGFub25zIDogQW5vbnMudFxuICAgIDsgZmxhZ3MgOiBGbGFnX2luZm8udCBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IGZpbmRfZmxhZyB0IHByZWZpeCA9XG4gICAgbWF0Y2ggU3RyaW5nLmlzX3ByZWZpeCBwcmVmaXggfnByZWZpeDpcIi1cIiB3aXRoXG4gICAgfCBmYWxzZSAtPiBFcnJvciAoRXJyb3IuY3JlYXRlX3MgWyVtZXNzYWdlIFwiRmxhZ3MgbXVzdCBiZWdpbiB3aXRoICctJ1wiIHByZWZpeF0pXG4gICAgfCB0cnVlIC0+XG4gICAgICBsZXQlYmluZC5Pcl9lcnJvciBjaG9pY2VzID1cbiAgICAgICAgTGlzdC5tYXAgdC5mbGFncyB+ZjooZnVuIChmbGFnX2luZm8gOiBGbGFnX2luZm8udCkgLT5cbiAgICAgICAgICBsZXQlYmluZC5Pcl9lcnJvciBmbGFnX25hbWUgPSBGbGFnX2luZm8uZmxhZ19uYW1lIGZsYWdfaW5mbyBpblxuICAgICAgICAgIE9rXG4gICAgICAgICAgICAoTGlzdC5tYXAgKGZsYWdfbmFtZSA6OiBmbGFnX2luZm8uYWxpYXNlcykgfmY6KGZ1biBrZXkgLT5cbiAgICAgICAgICAgICAgIGtleSwgKGZsYWdfaW5mbywgYFByZWZpeCkpKSlcbiAgICAgICAgfD4gT3JfZXJyb3IuY29tYmluZV9lcnJvcnNcbiAgICAgIGluXG4gICAgICBsb29rdXBfZXhwYW5kIChMaXN0LmNvbmNhdCBjaG9pY2VzKSBwcmVmaXggRmxhZ1xuICAgICAgfD4gUmVzdWx0Lm1hcF9lcnJvciB+ZjpFcnJvci5vZl9zdHJpbmdcbiAgICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjpzbmRcbiAgOztcblxuICBsZXQgZ2V0X3VzYWdlIHQgPVxuICAgIG1hdGNoIHQuYW5vbnMgd2l0aFxuICAgIHwgVXNhZ2UgdXNhZ2UgLT4gdXNhZ2VcbiAgICB8IEdyYW1tYXIgZ3JhbW1hciAtPiBBbm9ucy5HcmFtbWFyLnVzYWdlIGdyYW1tYXJcbiAgOztcbmVuZFxuXG5tb2R1bGUgR3JvdXBfaW5mbyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBTdGFibGUuR3JvdXBfaW5mby5Nb2RlbC50ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBMaXN0LnQgTGF6eS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IGZpbmRfc3ViY29tbWFuZCB0IHByZWZpeCA9XG4gICAgbWF0Y2ggU3RyaW5nLmlzX3ByZWZpeCBwcmVmaXggfnByZWZpeDpcIi1cIiB3aXRoXG4gICAgfCB0cnVlIC0+XG4gICAgICBFcnJvciAoRXJyb3IuY3JlYXRlX3MgWyVtZXNzYWdlIFwiU3ViY29tbWFuZHMgbXVzdCBub3QgYmVnaW4gd2l0aCAnLSdcIiBwcmVmaXhdKVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIGxldCBjaG9pY2VzID1cbiAgICAgICAgTGlzdC5tYXAgKGZvcmNlIHQuc3ViY29tbWFuZHMpIH5mOihmdW4gKGtleSwgYSkgLT4ga2V5LCAoYSwgYFByZWZpeCkpXG4gICAgICBpblxuICAgICAgbG9va3VwX2V4cGFuZCBjaG9pY2VzIHByZWZpeCBTdWJjb21tYW5kXG4gICAgICB8PiBSZXN1bHQubWFwX2Vycm9yIH5mOkVycm9yLm9mX3N0cmluZ1xuICAgICAgfD4gT3JfZXJyb3IubWFwIH5mOnNuZFxuICA7O1xuXG4gIGxldCBtYXAgPSBTdGFibGUuR3JvdXBfaW5mby5Nb2RlbC5tYXBcbmVuZFxuXG5tb2R1bGUgRXhlY19pbmZvID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5FeGVjX2luZm8uTW9kZWwudCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZmllbGRzLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBGdWxseV9mb3JjZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkZ1bGx5X2ZvcmNlZC5Nb2RlbC50ID1cbiAgICB8IEJhc2ljIG9mIEJhc2VfaW5mby50XG4gICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8udFxuICAgIHwgRXhlYyBvZiBFeGVjX2luZm8udCAqIHRcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgZXhwYW5kZWRfc3ViY29tbWFuZHMgdCA9XG4gICAgbGV0IHJlYyBleHBhbmQgPSBmdW5jdGlvblxuICAgICAgfCBFeGVjIChfLCB0KSAtPiBleHBhbmQgdFxuICAgICAgfCBCYXNpYyBfIC0+IFsgW10gXVxuICAgICAgfCBHcm91cCB7IHN1YmNvbW1hbmRzOyBfIH0gLT5cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIChMYXp5LmZvcmNlIHN1YmNvbW1hbmRzKSB+ZjooZnVuIChuYW1lLCB0KSAtPlxuICAgICAgICAgIExpc3QubWFwIH5mOihmdW4gcGF0aCAtPiBuYW1lIDo6IHBhdGgpIChleHBhbmQgdCkpXG4gICAgaW5cbiAgICAoKiBSZXZlcnNpbmcgc28gdGhhdCB0aGUgY29tbWFuZHMgc2hvdyB1cCBpbiB0aGUgc2FtZSBvcmRlciBhcyBoZWxwIGlzIG91dHB1dCAqKVxuICAgIExpc3QucmV2IChleHBhbmQgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLlNleHBhYmxlLk1vZGVsLnQgPVxuICAgIHwgQmFzZSBvZiBCYXNlX2luZm8udFxuICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLnRcbiAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLnRcbiAgICB8IExhenkgb2YgdCBMYXp5LnRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgZXh0cmFjdGlvbl92YXIgPSBFbnZfdmFyLnRvX3N0cmluZyBDT01NQU5EX09VVFBVVF9IRUxQX1NFWFBcblxuICBtb2R1bGUgVmVyc2lvbmVkID0gU3RhYmxlLlNleHBhYmxlLlZlcnNpb25lZFxuXG4gIGxldCBzdXBwb3J0ZWRfdmVyc2lvbnMgPVxuICAgIGxldCBmIGkgc3VwcG9ydGVkIF8gPSBTZXQuYWRkIHN1cHBvcnRlZCBpIGluXG4gICAgVmVyc2lvbmVkLlZhcmlhbnRzLmZvbGQgfmluaXQ6KFNldC5lbXB0eSAobW9kdWxlIEludCkpIH52MTooZiAxKSB+djI6KGYgMikgfnYzOihmIDMpXG4gIDs7XG5cbiAgbGV0IG9mX3ZlcnNpb25lZCA9IFZlcnNpb25lZC50b19sYXRlc3RcbiAgbGV0IHRvX3ZlcnNpb25lZCB0IH52ZXJzaW9uX3RvX3VzZSA9IFZlcnNpb25lZC5vZl9sYXRlc3QgdCB+dmVyc2lvbl90b191c2VcbmVuZFxuXG50eXBlIHQgPVxuICB8IEJhc2ljIG9mIEJhc2VfaW5mby50XG4gIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLnRcbiAgfCBFeGVjIG9mIEV4ZWNfaW5mby50ICogKHVuaXQgLT4gdClcbiAgfCBMYXp5IG9mIHQgTGF6eS50XG5cbmxldCByZWMgZnVsbHlfZm9yY2VkIDogdCAtPiBGdWxseV9mb3JjZWQudCA9IGZ1bmN0aW9uXG4gIHwgQmFzaWMgYiAtPiBCYXNpYyBiXG4gIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5tYXAgZyB+ZjpmdWxseV9mb3JjZWQpXG4gIHwgRXhlYyAoZSwgZikgLT4gRXhlYyAoZSwgZnVsbHlfZm9yY2VkIChmICgpKSlcbiAgfCBMYXp5IHRodW5rIC0+IGZ1bGx5X2ZvcmNlZCAoTGF6eS5mb3JjZSB0aHVuaylcbjs7XG5cbmxldCByZWMgZ2V0X3N1bW1hcnkgPSBmdW5jdGlvblxuICB8IEJhc2ljIGIgLT4gYi5zdW1tYXJ5XG4gIHwgR3JvdXAgZyAtPiBnLnN1bW1hcnlcbiAgfCBFeGVjIChlLCBfKSAtPiBlLnN1bW1hcnlcbiAgfCBMYXp5IHRodW5rIC0+IGdldF9zdW1tYXJ5IChMYXp5LmZvcmNlIHRodW5rKVxuOztcblxubGV0IGhlbHBfdGV4dCA9IGBVc2VfQ29tbWFuZF91bml4XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBLZXlfdHlwZSA9IEtleV90eXBlXG5cbiAgbGV0IGFic19wYXRoID0gU3RhYmxlLkV4ZWNfaW5mby5hYnNfcGF0aFxuICBsZXQgaGVscF9zY3JlZW5fY29tcGFyZSA9IEZsYWdfaW5mby5oZWxwX3NjcmVlbl9jb21wYXJlXG4gIGxldCB3b3JkX3dyYXAgPSBGbGFnX2hlbHBfZGlzcGxheS53b3JkX3dyYXBfYW5kX3N0cmlwXG4gIGxldCBsb29rdXBfZXhwYW5kID0gbG9va3VwX2V4cGFuZFxuZW5kXG4iLCJcbm9wZW4hIEJhc2Vcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb21tYW5kX2ludGZcbm1vZHVsZSBTaGFwZSA9IFNoYXBlXG5cbigqIGluIG9yZGVyIHRvIGRlZmluZSBleHBlY3QgdGVzdHMsIHdlIHdhbnQgdG8gcmFpc2UgcmF0aGVyIHRoYW4gZXhpdCBpZiB0aGUgY29kZSBpc1xuICAgcnVubmluZyBpbiB0aGUgdGVzdCBydW5uZXIgcHJvY2VzcyAqKVxubGV0IHJhaXNlX2luc3RlYWRfb2ZfZXhpdCA9XG4gIG1hdGNoIFBweF9pbmxpbmVfdGVzdF9saWIudGVzdGluZyB3aXRoXG4gIHwgYFRlc3RpbmcgYEFtX3Rlc3RfcnVubmVyIC0+IHRydWVcbiAgfCBgVGVzdGluZyBgQW1fY2hpbGRfb2ZfdGVzdF9ydW5uZXIgfCBgTm90X3Rlc3RpbmcgLT4gZmFsc2Vcbjs7XG5cbmV4Y2VwdGlvbiBFeGl0X2NhbGxlZCBvZiB7IHN0YXR1cyA6IGludCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbigqIFtyYWlzZV9pbnN0ZWFkX29mX2V4aXRdLXJlc3BlY3Rpbmcgd3JhcHBlcnMgZm9yIFtleGl0XSBhbmQgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdCAqKVxuaW5jbHVkZSBzdHJ1Y3RcbiAgbGV0IGV4aXQgc3RhdHVzID1cbiAgICBpZiByYWlzZV9pbnN0ZWFkX29mX2V4aXQgdGhlbiByYWlzZSAoRXhpdF9jYWxsZWQgeyBzdGF0dXMgfSkgZWxzZSBTdGRsaWIuZXhpdCBzdGF0dXNcbiAgOztcblxuICBtb2R1bGUgRXhuID0gc3RydWN0XG4gICAgbGV0IGhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmID1cbiAgICAgIGlmIHJhaXNlX2luc3RlYWRfb2ZfZXhpdFxuICAgICAgdGhlbiAoXG4gICAgICAgIHRyeSBmICgpIHdpdGhcbiAgICAgICAgfCBFeGl0X2NhbGxlZCB7IHN0YXR1cyA9IDAgfSBhcyBleG4gLT4gcHJpbnRfcyBbJXNleHAgKGV4biA6IGV4bildKVxuICAgICAgZWxzZSBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGZcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5sZXQgdW53b3JkcyB4cyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiB4c1xubGV0IHVucGFyYWdyYXBocyB4cyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblxcblwiIHhzXG5cbmV4Y2VwdGlvbiBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG9mIHN0cmluZ1xuXG5sZXQgZGllIGZtdCA9IGtzcHJpbnRmIChmdW4gbXNnICgpIC0+IHJhaXNlIChGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG1zZykpIGZtdFxubGV0IGhlbHBfc2NyZWVuX2NvbXBhcmUgPSBTaGFwZS5Qcml2YXRlLmhlbHBfc2NyZWVuX2NvbXBhcmVcblxuKCogdW5pdmVyc2FsIG1hcHMgYXJlIHVzZWQgdG8gcGFzcyBhcm91bmQgdmFsdWVzIGJldHdlZW4gZGlmZmVyZW50IGJpdHNcbiAgIG9mIGNvbW1hbmQgbGluZSBwYXJzaW5nIGNvZGUgd2l0aG91dCBoYXZpbmcgYSBodWdlIGltcGFjdCBvbiB0aGVcbiAgIHR5cGVzIGludm9sdmVkXG5cbiAgIDEuIHBhc3NpbmcgdmFsdWVzIGZyb20gcGFyc2VkIGFyZ3MgdG8gY29tbWFuZC1saW5lIGF1dG9jb21wbGV0ZSBmdW5jdGlvbnNcbiAgIDIuIHBhc3Npbmcgc3BlY2lhbCB2YWx1ZXMgdG8gYSBiYXNlIGNvbW1hbmRzIHRoYXQgcmVxdWVzdCB0aGVtIGluIHRoZWlyIHNwZWNcbiAqIGV4cGFuZGVkIHN1YmNvbW1hbmQgcGF0aFxuICogYXJncyBwYXNzZWQgdG8gdGhlIGJhc2UgY29tbWFuZFxuICogaGVscCB0ZXh0IGZvciB0aGUgYmFzZSBjb21tYW5kXG4qKVxubW9kdWxlIEVudiA9IHN0cnVjdFxuICBpbmNsdWRlIFVuaXZfbWFwXG5cbiAgbGV0IGtleV9jcmVhdGUgbmFtZSA9IFVuaXZfbWFwLktleS5jcmVhdGUgfm5hbWUgU2V4cGxpYi5Db252LnNleHBfb2Zfb3BhcXVlXG4gIGxldCBtdWx0aV9hZGQgPSBVbml2X21hcC5NdWx0aS5hZGRcbiAgbGV0IHNldF93aXRoX2RlZmF1bHQgPSBVbml2X21hcC5XaXRoX2RlZmF1bHQuc2V0XG5lbmRcblxubW9kdWxlIFBhcnNpbmdfb3V0Y29tZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgcmVzdWx0IDogKCdhLCBbIGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG9mIEVycm9yLnQgXSkgUmVzdWx0LnRcbiAgICA7IGhhc19hcmcgOiBib29sXG4gICAgfVxuXG4gIHZhbCByZXR1cm5fbm9fYXJnIDogJ2EgLT4gJ2EgdFxuICB2YWwgcmV0dXJuX3dpdGhfYXJnIDogJ2EgLT4gJ2EgdFxuICB2YWwgZXJyb3IgOiBoYXNfYXJnOmJvb2wgLT4gWyBgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBvZiBFcnJvci50IF0gLT4gJ2EgdFxuICB2YWwgcmVjb3Zlcl9mcm9tX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgOiAnYSB0IC0+ICdhIHQgdFxuXG4gIHZhbCBpbnRyb2R1Y2VfbWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgIDogICgnYSwgWyBgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBvZiBFcnJvci50IF0pIFJlc3VsdC50IHRcbiAgICAtPiAnYSB0XG5cbiAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5TIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcmVzdWx0IDogKCdhLCBbIGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG9mIEVycm9yLnQgXSkgUmVzdWx0LnRcbiAgICA7IGhhc19hcmcgOiBib29sXG4gICAgfVxuXG4gIGxldCBhcHBseSBmIHggPVxuICAgIHsgcmVzdWx0ID1cbiAgICAgICAgUmVzdWx0LmNvbWJpbmVcbiAgICAgICAgICBmLnJlc3VsdFxuICAgICAgICAgIHgucmVzdWx0XG4gICAgICAgICAgfm9rOihmdW4gZiB4IC0+IGYgeClcbiAgICAgICAgICB+ZXJyOihmdW4gKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIGVycl8xKSAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgX2Vycl8yKSAtPlxuICAgICAgICAgICAgYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgZXJyXzEpXG4gICAgOyBoYXNfYXJnID0gZi5oYXNfYXJnIHx8IHguaGFzX2FyZ1xuICAgIH1cbiAgOztcblxuICBsZXQgcmVjb3Zlcl9mcm9tX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgdCA9IHsgcmVzdWx0ID0gT2sgdDsgaGFzX2FyZyA9IHQuaGFzX2FyZyB9XG5cbiAgbGV0IGludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIHQgPVxuICAgIHsgcmVzdWx0ID0gUmVzdWx0LmpvaW4gdC5yZXN1bHQ7IGhhc19hcmcgPSB0Lmhhc19hcmcgfVxuICA7O1xuXG4gIGxldCBtYXAgeyByZXN1bHQ7IGhhc19hcmcgfSB+ZiA9IHsgcmVzdWx0ID0gUmVzdWx0Lm1hcCByZXN1bHQgfmY7IGhhc19hcmcgfVxuICBsZXQgcmV0dXJuX25vX2FyZyB2ID0geyByZXN1bHQgPSBPayB2OyBoYXNfYXJnID0gZmFsc2UgfVxuICBsZXQgcmV0dXJuX3dpdGhfYXJnIHYgPSB7IHJlc3VsdCA9IE9rIHY7IGhhc19hcmcgPSB0cnVlIH1cbiAgbGV0IGVycm9yIH5oYXNfYXJnIGVyciA9IHsgcmVzdWx0ID0gRXJyb3IgZXJyOyBoYXNfYXJnIH1cblxuICBpbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVybl9ub19hcmdcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIEF1dG9fY29tcGxldGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRW52LnQgLT4gcGFydDpzdHJpbmcgLT4gc3RyaW5nIGxpc3RcblxuICBtb2R1bGUgRm9yX2VzY2FwZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEVudi50IC0+IHBhcnQ6c3RyaW5nIGxpc3QgLT4gc3RyaW5nIGxpc3RcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbXBsZXRlciA9IHN0cnVjdFxuICB0eXBlIHQgPSBBdXRvX2NvbXBsZXRlLnQgb3B0aW9uXG5cbiAgbW9kdWxlIEZvcl9lc2NhcGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBBdXRvX2NvbXBsZXRlLkZvcl9lc2NhcGUudCBvcHRpb25cbiAgZW5kXG5cbiAgbGV0IHJ1bl9hbmRfZXhpdCB0IGVudiB+cGFydCA6IE5vdGhpbmcudCA9XG4gICAgT3B0aW9uLml0ZXIgdCB+ZjooZnVuIGNvbXBsZXRpb25zIC0+XG4gICAgICBMaXN0Lml0ZXIgfmY6cHJpbnRfZW5kbGluZSAoY29tcGxldGlvbnMgZW52IH5wYXJ0KSk7XG4gICAgZXhpdCAwXG4gIDs7XG5lbmRcblxubW9kdWxlIEFyZ190eXBlIDogc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBleHRyYV9kb2MgOiAnYSB0IC0+IHN0cmluZyBvcHRpb24gbGF6eV90XG4gIHZhbCBrZXkgOiAnYSB0IC0+ICdhIEVudi5NdWx0aS5LZXkudCBvcHRpb25cbiAgdmFsIGNvbXBsZXRlIDogJ2EgdCAtPiBDb21wbGV0ZXIudFxuICB2YWwgcGFyc2UgOiAnYSB0IC0+IHN0cmluZyAtPiAnYSBPcl9lcnJvci50XG5cbiAgdmFsIGNyZWF0ZVxuICAgIDogID9jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+IChzdHJpbmcgLT4gJ2EpXG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBtYXAgOiA/a2V5OidhIEVudi5NdWx0aS5LZXkudCAtPiAnYiB0IC0+IGY6KCdiIC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBvZl9sYXp5IDogP2tleTonYSBFbnYuTXVsdGkuS2V5LnQgLT4gJ2EgdCBsYXp5X3QgLT4gJ2EgdFxuXG4gIHZhbCBvZl9tYXBcbiAgICA6ICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlczpib29sXG4gICAgLT4gP2Nhc2Vfc2Vuc2l0aXZlOmJvb2xcbiAgICAtPiA/bGlzdF92YWx1ZXNfaW5faGVscDpib29sXG4gICAgLT4gP2F1dG9fY29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAnYSBNYXAuTShTdHJpbmcpLnRcbiAgICAtPiAnYSB0XG5cbiAgdmFsIG9mX2FsaXN0X2V4blxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+IChzdHJpbmcgKiAnYSkgbGlzdFxuICAgIC0+ICdhIHRcblxuICB2YWwgZW51bWVyYXRlZFxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+IChtb2R1bGUgRW51bWVyYWJsZV9zdHJpbmdhYmxlIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBlbnVtZXJhdGVkX3NleHBhYmxlXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKG1vZHVsZSBFbnVtZXJhYmxlX3NleHBhYmxlIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBjb21tYV9zZXBhcmF0ZWRcbiAgICA6ICA/YWxsb3dfZW1wdHk6Ym9vbFxuICAgIC0+ID9rZXk6J2EgbGlzdCBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiA/c3RyaXBfd2hpdGVzcGFjZTpib29sXG4gICAgLT4gP3VuaXF1ZV92YWx1ZXM6Ym9vbFxuICAgIC0+ICdhIHRcbiAgICAtPiAnYSBsaXN0IHRcblxuICBtb2R1bGUgRXhwb3J0IDogc2lnXG4gICAgdmFsIHN0cmluZyA6IHN0cmluZyB0XG4gICAgdmFsIGludCA6IGludCB0XG4gICAgdmFsIGNoYXIgOiBjaGFyIHRcbiAgICB2YWwgZmxvYXQgOiBmbG9hdCB0XG4gICAgdmFsIGJvb2wgOiBib29sIHRcbiAgICB2YWwgc2V4cCA6IFNleHAudCB0XG4gICAgdmFsIHNleHBfY29udiA6ID9jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnQgLT4gKFNleHAudCAtPiAnYSkgLT4gJ2EgdFxuICBlbmRcblxuICB2YWwgYXV0b19jb21wbGV0ZSA6IF8gdCAtPiBBdXRvX2NvbXBsZXRlLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcGFyc2UgOiBzdHJpbmcgLT4gJ2FcbiAgICA7IGNvbXBsZXRlIDogQ29tcGxldGVyLnRcbiAgICA7IGtleSA6ICdhIFVuaXZfbWFwLk11bHRpLktleS50IG9wdGlvblxuICAgIDsgZXh0cmFfZG9jIDogc3RyaW5nIG9wdGlvbiBMYXp5LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgcGFyc2UgdCBzID0gT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiB0LnBhcnNlIHMpXG4gIGxldCBjcmVhdGUnID9jb21wbGV0ZSA/a2V5IHBhcnNlIH5leHRyYV9kb2MgPSB7IHBhcnNlOyBrZXk7IGNvbXBsZXRlOyBleHRyYV9kb2MgfVxuXG4gIGxldCBjcmVhdGUgP2NvbXBsZXRlID9rZXkgb2Zfc3RyaW5nID1cbiAgICBjcmVhdGUnID9jb21wbGV0ZSA/a2V5IG9mX3N0cmluZyB+ZXh0cmFfZG9jOihMYXp5LmZyb21fdmFsIE5vbmUpXG4gIDs7XG5cbiAgbGV0IG1hcCA/a2V5IHQgfmYgPSB7IHQgd2l0aCBrZXk7IHBhcnNlID0gKGZ1biBzIC0+IGYgKHQucGFyc2UgcykpIH1cblxuICBsZXQgb2ZfbGF6eSA/a2V5IHQgPVxuICAgIGxldCBwYXJzZSBzdHIgPSAoZm9yY2UgdCkucGFyc2Ugc3RyIGluXG4gICAgbGV0IGNvbXBsZXRlIGVudiB+cGFydCA9XG4gICAgICBtYXRjaCAoZm9yY2UgdCkuY29tcGxldGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIFNlZSBbcnVuX2FuZF9leGl0XSAtIG5vIGNvbXBsZXRpb25zIGlzIGVxdWl2YWxlbnQgdG8gbm90IGhhdmluZyBhXG4gICAgICAgICAgIFtDb21wbGV0ZV0uICopXG4gICAgICAgIFtdXG4gICAgICB8IFNvbWUgY29tcGxldGUgLT4gY29tcGxldGUgZW52IH5wYXJ0XG4gICAgaW5cbiAgICBsZXQgZXh0cmFfZG9jID0gTGF6eS5iaW5kIHQgfmY6ZXh0cmFfZG9jIGluXG4gICAgeyBwYXJzZTsgY29tcGxldGUgPSBTb21lIGNvbXBsZXRlOyBrZXk7IGV4dHJhX2RvYyB9XG4gIDs7XG5cbiAgbGV0IHN0cmluZyA9IGNyZWF0ZSBGbi5pZFxuICBsZXQgaW50ID0gY3JlYXRlIEludC5vZl9zdHJpbmdcbiAgbGV0IGNoYXIgPSBjcmVhdGUgQ2hhci5vZl9zdHJpbmdcbiAgbGV0IGZsb2F0ID0gY3JlYXRlIEZsb2F0Lm9mX3N0cmluZ1xuICBsZXQgc2V4cCA9IGNyZWF0ZSBQYXJzZXhwLlNpbmdsZS5wYXJzZV9zdHJpbmdfZXhuXG5cbiAgbGV0IHNleHBfY29udiA/Y29tcGxldGUgb2Zfc2V4cCA9XG4gICAgY3JlYXRlID9jb21wbGV0ZSAoZnVuIHMgLT4gb2Zfc2V4cCAoUGFyc2V4cC5TaW5nbGUucGFyc2Vfc3RyaW5nX2V4biBzKSlcbiAgOztcblxuICBsZXQgYXNzb2NpYXRpdmVcbiAgICAgICAgPyhhY2NlcHRfdW5pcXVlX3ByZWZpeGVzID0gdHJ1ZSlcbiAgICAgICAgPyhsaXN0X3ZhbHVlc19pbl9oZWxwID0gdHJ1ZSlcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICB+Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgYWxpc3RcbiAgICA9XG4gICAgbGV0IG9wZW4gc3RydWN0XG4gICAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgICAgdmFsIGlzX3ByZWZpeCA6IHN0cmluZyAtPiBwcmVmaXg6c3RyaW5nIC0+IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB8IFQgOlxuICAgICAgICAgICAgeyBjbXAgOiAobW9kdWxlIFMgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgICAgICAgICA7IG1hcCA6IChzdHJpbmcsICdhLCAnY21wKSBNYXAudFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLT4gJ2EgdFxuICAgIGVuZCBpblxuICAgIGxldCAoVCB7IGNtcCA9IChtb2R1bGUgUyk7IG1hcCB9KSA9XG4gICAgICBsZXQgbWFrZV9tYXBfcmFpc2VfZHVwbGljYXRlX2tleVxuICAgICAgICAgICAgKHR5cGUgY21wKVxuICAgICAgICAgICAgKG1vZHVsZSBTIDogUyB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICAgICAgYWxpc3RcbiAgICAgICAgPVxuICAgICAgICBtYXRjaCBNYXAub2ZfYWxpc3QgKG1vZHVsZSBTKSBhbGlzdCB3aXRoXG4gICAgICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICAgICAgfCBgRHVwbGljYXRlX2tleSAoXyA6IFMudCkgLT5cbiAgICAgICAgICBsZXQgZHVwbGljYXRlX2tleXMgPVxuICAgICAgICAgICAgTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoaywgKF8gOiAnYSkpIC0+IGssIGspXG4gICAgICAgICAgICB8PiBNYXAub2ZfYWxpc3RfbXVsdGkgKG1vZHVsZSBTKVxuICAgICAgICAgICAgfD4gTWFwLmZpbHRlciB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBbXSB8IFsgXyBdIC0+IGZhbHNlXG4gICAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgIHw+IE1hcC5kYXRhXG4gICAgICAgICAgaW5cbiAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgXCJDb21tYW5kLlNwZWMuQXJnX3R5cGUub2ZfYWxpc3RfZXhuXCIgKGR1cGxpY2F0ZV9rZXlzIDogc3RyaW5nIGxpc3QgbGlzdCldXG4gICAgICBpblxuICAgICAgbGV0IG1ha2UgY21wID0gVCB7IGNtcDsgbWFwID0gbWFrZV9tYXBfcmFpc2VfZHVwbGljYXRlX2tleSBjbXAgYWxpc3QgfSBpblxuICAgICAgaWYgY2FzZV9zZW5zaXRpdmUgdGhlbiBtYWtlIChtb2R1bGUgU3RyaW5nKSBlbHNlIG1ha2UgKG1vZHVsZSBTdHJpbmcuQ2FzZWxlc3MpXG4gICAgaW5cbiAgICBsZXQgY29tcGxldGUgdW5pdl9tYXAgfnBhcnQ6cHJlZml4ID1cbiAgICAgIG1hdGNoIGF1dG9fY29tcGxldGUgd2l0aFxuICAgICAgfCBTb21lIGNvbXBsZXRlIC0+IGNvbXBsZXRlIHVuaXZfbWFwIH5wYXJ0OnByZWZpeFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIExpc3QuZmlsdGVyX21hcCAoTWFwLnRvX2FsaXN0IG1hcCkgfmY6KGZ1biAobmFtZSwgXykgLT5cbiAgICAgICAgICBtYXRjaCBTLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXggd2l0aFxuICAgICAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAgKCogQmFzaCBjb21wbGV0aW9uIHdpbGwgbm90IGFjY2VwdCBbRm9vXSBhcyBhIGNvbXBsZXRpb24gZm9yIFtmXS4gU28gd2UgbmVlZFxuICAgICAgICAgICAgICAgdG8gbWF0Y2ggdGhlIGNhcGl0YWxpemF0aW9uIGdpdmVuLiAqKVxuICAgICAgICAgICAgbGV0IHN1ZmZpeCA9IFN0cmluZy5zdWJvIG5hbWUgfnBvczooU3RyaW5nLmxlbmd0aCBwcmVmaXgpIGluXG4gICAgICAgICAgICBsZXQgbmFtZSA9IHByZWZpeCBeIHN1ZmZpeCBpblxuICAgICAgICAgICAgU29tZSBuYW1lKVxuICAgIGluXG4gICAgbGV0IGZpbmQgYXJnID1cbiAgICAgIG1hdGNoIE1hcC5maW5kIG1hcCBhcmcgd2l0aFxuICAgICAgfCBTb21lIF8gYXMgcyAtPiBzXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIGFjY2VwdF91bmlxdWVfcHJlZml4ZXMgd2l0aFxuICAgICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgIE1hcC50b19hbGlzdCBtYXBcbiAgICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biAobmFtZSwgXykgLT4gUy5pc19wcmVmaXggbmFtZSB+cHJlZml4OmFyZylcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgWyAoX3NpbmdsZXRvbl9rZXksIHYpIF0gLT4gU29tZSB2XG4gICAgICAgICAgICB8IFtdIHwgXyA6OiBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgKCogSW4gdGhlIHR3by1vci1tb3JlIGNhc2Ugd2UgY291bGQgcHJvdmlkZSBmaWx0ZXJlZCBoZWxwIHRleHQsIGJ1dCBpdCdzXG4gICAgICAgICAgICAgICAgIG1vcmUgZ2VuZXJhbGx5IHVzZWZ1bCB0byBsaXN0IGFsbCB0aGUgb3B0aW9ucywgd2hpY2ggd2UgZG8gYmVsb3cuICopXG4gICAgICAgICAgICAgIE5vbmUpKVxuICAgIGluXG4gICAgY3JlYXRlJ1xuICAgICAgfmV4dHJhX2RvYzpcbiAgICAgICAgKGxhenlcbiAgICAgICAgICAoaWYgbGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgdmFsdWVzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoTWFwLmtleXMgbWFwKSBpblxuICAgICAgICAgICAgIFNvbWUgWyVzdHJpbmcgXCIoY2FuIGJlOiAle3ZhbHVlc30pXCJdKVxuICAgICAgICAgICBlbHNlIE5vbmUpKVxuICAgICAgP2tleVxuICAgICAgfmNvbXBsZXRlXG4gICAgICAoZnVuIGFyZyAtPlxuICAgICAgICAgbWF0Y2ggZmluZCBhcmcgd2l0aFxuICAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIGxldCB2YWxpZF9hcmd1bWVudHNfZXh0cmEgPVxuICAgICAgICAgICAgIGlmIGNhc2Vfc2Vuc2l0aXZlIHRoZW4gXCJcIiBlbHNlIFwiIChjYXNlIGluc2Vuc2l0aXZlKVwiXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGZhaWx3aXRoZlxuICAgICAgICAgICAgIFwidmFsaWQgYXJndW1lbnRzJXM6IHslc31cIlxuICAgICAgICAgICAgIHZhbGlkX2FyZ3VtZW50c19leHRyYVxuICAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgKE1hcC5rZXlzIG1hcCkpXG4gICAgICAgICAgICAgKCkpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4blxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/KGNhc2Vfc2Vuc2l0aXZlID0gdHJ1ZSlcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICBhbGlzdFxuICAgID1cbiAgICBhc3NvY2lhdGl2ZVxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgfmNhc2Vfc2Vuc2l0aXZlXG4gICAgICBhbGlzdFxuICA7O1xuXG4gIGxldCBvZl9tYXBcbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgbWFwXG4gICAgPVxuICAgIG9mX2FsaXN0X2V4blxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICAoTWFwLnRvX2FsaXN0IG1hcClcbiAgOztcblxuICBsZXQgZW51bWVyYXRlZFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICAobW9kdWxlIEUgOiBFbnVtZXJhYmxlX3N0cmluZ2FibGUgd2l0aCB0eXBlIHQgPSB0KVxuICAgID1cbiAgICBvZl9hbGlzdF9leG5cbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgKGxldCVtYXAuTGlzdCB0ID0gRS5hbGwgaW5cbiAgICAgICBFLnRvX3N0cmluZyB0LCB0KVxuICA7O1xuXG4gIGxldCBlbnVtZXJhdGVkX3NleHBhYmxlXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIChtb2R1bGUgRSA6IEVudW1lcmFibGVfc2V4cGFibGUgd2l0aCB0eXBlIHQgPSB0KVxuICAgID1cbiAgICBlbnVtZXJhdGVkXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRVxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgdCA9IFNleHAudG9fc3RyaW5nIFslc2V4cCAodCA6IEUudCldXG4gICAgICBlbmQpXG4gIDs7XG5cbiAgbGV0IGJvb2wgPSBlbnVtZXJhdGVkIH5saXN0X3ZhbHVlc19pbl9oZWxwOmZhbHNlIChtb2R1bGUgQm9vbClcblxuICBsZXQgY29tbWFfc2VwYXJhdGVkXG4gICAgICAgID8oYWxsb3dfZW1wdHkgPSBmYWxzZSlcbiAgICAgICAgP2tleVxuICAgICAgICA/KHN0cmlwX3doaXRlc3BhY2UgPSBmYWxzZSlcbiAgICAgICAgPyh1bmlxdWVfdmFsdWVzID0gZmFsc2UpXG4gICAgICAgIHRcbiAgICA9XG4gICAgbGV0IHN0cmlwID0gaWYgc3RyaXBfd2hpdGVzcGFjZSB0aGVuIGZ1biBzdHIgLT4gU3RyaW5nLnN0cmlwIHN0ciBlbHNlIEZuLmlkIGluXG4gICAgbGV0IGNvbXBsZXRlID1cbiAgICAgIE9wdGlvbi5tYXAgdC5jb21wbGV0ZSB+ZjooZnVuIGNvbXBsZXRlX2VsdCBlbnYgfnBhcnQgLT5cbiAgICAgICAgbGV0IHByZWZpeGVzLCBzdWZmaXggPVxuICAgICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBwYXJ0IH5vbjonLCcgfD4gTGlzdC5yZXYgd2l0aFxuICAgICAgICAgIHwgW10gLT4gW10sIHBhcnRcbiAgICAgICAgICB8IGhkIDo6IHRsIC0+IExpc3QucmV2IHRsLCBoZFxuICAgICAgICBpblxuICAgICAgICBsZXQgaXNfYWxsb3dlZCA9XG4gICAgICAgICAgaWYgbm90IHVuaXF1ZV92YWx1ZXNcbiAgICAgICAgICB0aGVuIGZ1biAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IHNlZW5fYWxyZWFkeSA9XG4gICAgICAgICAgICAgIHByZWZpeGVzIHw+IExpc3QubWFwIH5mOnN0cmlwIHw+IFNldC5vZl9saXN0IChtb2R1bGUgU3RyaW5nKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGZ1biBjaG9pY2UgLT4gbm90IChTZXQubWVtIHNlZW5fYWxyZWFkeSAoc3RyaXAgY2hvaWNlKSkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjaG9pY2VzID1cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTGlzdC5maWx0ZXIgKGNvbXBsZXRlX2VsdCBlbnYgfnBhcnQ6c3VmZml4KSB+ZjooZnVuIGNob2ljZSAtPlxuICAgICAgICAgICAgICAobm90IChTdHJpbmcubWVtIGNob2ljZSAnLCcpKSAmJiBpc19hbGxvd2VkIGNob2ljZSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgKCogSWYgdGhlcmUgaXMgZXhhY3RseSBvbmUgY2hvaWNlIHRvIGF1dG8tY29tcGxldGUsIGFkZCBhIHNlY29uZCBjaG9pY2Ugd2l0aFxuICAgICAgICAgICAgIGEgdHJhaWxpbmcgY29tbWEgc28gdGhhdCBhdXRvLWNvbXBsZXRpb24gd2lsbCBnbyB0byB0aGUgZW5kIGJ1dCBiYXNoXG4gICAgICAgICAgICAgd29uJ3QgYWRkIGEgc3BhY2UuICBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgY2hvaWNlcywgb3IgYSBzaW5nbGUgY2hvaWNlXG4gICAgICAgICAgICAgdGhhdCBtdXN0IGJlIGZpbmFsLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIGR1bW15IG9wdGlvbi4gKilcbiAgICAgICAgICB8IFsgY2hvaWNlIF0gLT4gWyBjaG9pY2U7IGNob2ljZSBeIFwiLFwiIF1cbiAgICAgICAgICB8IGNob2ljZXMgLT4gY2hvaWNlc1xuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCBjaG9pY2VzIH5mOihmdW4gY2hvaWNlIC0+IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiAocHJlZml4ZXMgQCBbIGNob2ljZSBdKSkpXG4gICAgaW5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICBsZXQgc3RyaW5nID0gc3RyaXAgc3RyaW5nIGluXG4gICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgc3RyaW5nXG4gICAgICB0aGVuXG4gICAgICAgIGlmIGFsbG93X2VtcHR5XG4gICAgICAgIHRoZW4gW11cbiAgICAgICAgZWxzZSBmYWlsd2l0aCBcIkNvbW1hbmQuU3BlYy5BcmdfdHlwZS5jb21tYV9zZXBhcmF0ZWQ6IGVtcHR5IGxpc3Qgbm90IGFsbG93ZWRcIlxuICAgICAgZWxzZSBMaXN0Lm1hcCAoU3RyaW5nLnNwbGl0IHN0cmluZyB+b246JywnKSB+ZjooZnVuIHN0ciAtPiB0LnBhcnNlIChzdHJpcCBzdHIpKVxuICAgIGluXG4gICAgY3JlYXRlID9rZXkgP2NvbXBsZXRlIG9mX3N0cmluZ1xuICA7O1xuXG4gIG1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgICBsZXQgc3RyaW5nID0gc3RyaW5nXG4gICAgbGV0IGludCA9IGludFxuICAgIGxldCBjaGFyID0gY2hhclxuICAgIGxldCBmbG9hdCA9IGZsb2F0XG4gICAgbGV0IGJvb2wgPSBib29sXG4gICAgbGV0IHNleHAgPSBzZXhwXG4gICAgbGV0IHNleHBfY29udiA9IHNleHBfY29udlxuICBlbmRcblxuICBsZXQgYXV0b19jb21wbGV0ZSB0ID1cbiAgICBtYXRjaCB0LmNvbXBsZXRlIHdpdGhcbiAgICB8IFNvbWUgZiAtPiBmXG4gICAgfCBOb25lIC0+IGZ1biBfIH5wYXJ0Ol8gLT4gW11cbiAgOztcbmVuZFxuXG5tb2R1bGUgRmxhZyA9IHN0cnVjdFxuICBtb2R1bGUgTnVtX29jY3VycmVuY2VzID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2hhcGUuTnVtX29jY3VycmVuY2VzLnQgPVxuICAgICAgeyBhdF9sZWFzdF9vbmNlIDogYm9vbFxuICAgICAgOyBhdF9tb3N0X29uY2UgOiBib29sXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgdG9faGVscF9zdHJpbmcgPSBTaGFwZS5OdW1fb2NjdXJyZW5jZXMudG9faGVscF9zdHJpbmdcblxuICAgIGxldCB0b19oZWxwX3N0cmluZ19kZXByZWNhdGVkIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlID0gXyB9IGZsYWdfbmFtZSA9XG4gICAgICB0b19oZWxwX3N0cmluZyB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSA9IHRydWUgfSB+ZmxhZ19uYW1lXG4gICAgOztcblxuICAgIGxldCBhbnkgPSB7IGF0X2xlYXN0X29uY2UgPSBmYWxzZTsgYXRfbW9zdF9vbmNlID0gZmFsc2UgfVxuICAgIGxldCBhdF9sZWFzdF9vbmNlID0geyBhdF9sZWFzdF9vbmNlID0gdHJ1ZTsgYXRfbW9zdF9vbmNlID0gZmFsc2UgfVxuICAgIGxldCBhdF9tb3N0X29uY2UgPSB7IGF0X2xlYXN0X29uY2UgPSBmYWxzZTsgYXRfbW9zdF9vbmNlID0gdHJ1ZSB9XG4gICAgbGV0IGV4YWN0bHlfb25jZSA9IHsgYXRfbGVhc3Rfb25jZSA9IHRydWU7IGF0X21vc3Rfb25jZSA9IHRydWUgfVxuICBlbmRcblxuICB0eXBlIGFjdGlvbiA9XG4gICAgfCBOb19hcmcgb2YgKEVudi50IC0+IEVudi50KVxuICAgIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBvZiAoRW52LnQgLT4gc3RyaW5nKVxuICAgIHwgQXJnIG9mIChFbnYudCAtPiBzdHJpbmcgLT4gRW52LnQpICogQ29tcGxldGVyLnRcbiAgICB8IFJlc3Qgb2YgKEVudi50IC0+IHN0cmluZyBsaXN0IC0+IEVudi50KSAqIENvbXBsZXRlci5Gb3JfZXNjYXBlLnRcblxuICBtb2R1bGUgSW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IGFsaWFzZXMgOiBzdHJpbmcgbGlzdFxuICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCA6IHN0cmluZyBsaXN0XG4gICAgICAoKiBbYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBdIGFyZSBhbGlhc2VzIHRoYXQgZG9uJ3Qgc2hvdyB1cCBpbiAtaGVscCBvdXRwdXQuXG4gICAgICAgICBDdXJyZW50bHkgdGhleSdyZSBvbmx5IHVzZWQgZm9yIGRvdWJsZS1kYXNoIGJ1aWx0LWluIGZsYWdzIGxpa2UgLS1oZWxwIGFuZFxuICAgICAgICAgLS12ZXJzaW9uLiAqKVxuICAgICAgOyBhY3Rpb24gOiBhY3Rpb25cbiAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICA7IG51bV9vY2N1cnJlbmNlcyA6IE51bV9vY2N1cnJlbmNlcy50XG4gICAgICA7IGNoZWNrX2F2YWlsYWJsZSA6IEVudi50IC0+IHVuaXRcbiAgICAgIDsgbmFtZV9tYXRjaGluZyA6IFsgYFByZWZpeCB8IGBGdWxsX21hdGNoX3JlcXVpcmVkIF1cbiAgICAgIH1cblxuICAgIGxldCB3cmFwX2lmX29wdGlvbmFsIHQgZmxhZ19uYW1lID1cbiAgICAgIE51bV9vY2N1cnJlbmNlcy50b19oZWxwX3N0cmluZyB0Lm51bV9vY2N1cnJlbmNlcyB+ZmxhZ19uYW1lXG4gICAgOztcblxuICAgIG1vZHVsZSBEb2MgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgYXJnX2RvYyA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgOyBkb2MgOiBzdHJpbmdcbiAgICAgICAgfVxuXG4gICAgICBsZXQgcGFyc2UgfmFjdGlvbiB+ZG9jID1cbiAgICAgICAgbGV0IGFyZ19kb2MsIGRvYyA9XG4gICAgICAgICAgbWF0Y2ggKGFjdGlvbiA6IGFjdGlvbiksIFN0cmluZy5sc3BsaXQyIGRvYyB+b246JyAnIHdpdGhcbiAgICAgICAgICB8IChOb19hcmcgXyB8IFByaW50X2luZm9fYW5kX3F1aXQgXyksIF8gLT4gTm9uZSwgZG9jXG4gICAgICAgICAgfCBBcmcgXywgKE5vbmUgfCBTb21lIChcIlwiLCBfKSkgLT4gU29tZSBcIl9cIiwgZG9jXG4gICAgICAgICAgfCBSZXN0IF8sIChOb25lIHwgU29tZSAoXCJcIiwgXykpIC0+IE5vbmUsIGRvY1xuICAgICAgICAgIHwgKEFyZyBfIHwgUmVzdCBfKSwgU29tZSAoYXJnLCBkb2MpIC0+IFNvbWUgYXJnLCBkb2NcbiAgICAgICAgaW5cbiAgICAgICAgeyBkb2MgPSBTdHJpbmcuc3RyaXAgZG9jOyBhcmdfZG9jIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBjb25jYXQgfm5hbWUgfmFyZ19kb2MgPVxuICAgICAgICBtYXRjaCBhcmdfZG9jIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG5hbWVcbiAgICAgICAgfCBTb21lIGFyZ19kb2MgLT4gbmFtZSBeIFwiIFwiIF4gYXJnX2RvY1xuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgICBsZXQgd3JhcF9pZl9vcHRpb25hbCB0IHggPVxuICAgICAgICBOdW1fb2NjdXJyZW5jZXMudG9faGVscF9zdHJpbmdfZGVwcmVjYXRlZCB0Lm51bV9vY2N1cnJlbmNlcyB4XG4gICAgICA7O1xuXG4gICAgICAoKiBmbGFnIGhlbHAgaW4gdGhlIGZvcm1hdCBvZiB0aGUgb2xkIGNvbW1hbmQuIHVzZWQgZm9yIGluamVjdGlvbiAqKVxuICAgICAgbGV0IGhlbHBcbiAgICAgICAgICAgICh7IG5hbWVcbiAgICAgICAgICAgICA7IGRvY1xuICAgICAgICAgICAgIDsgYWxpYXNlc1xuICAgICAgICAgICAgIDsgYWN0aW9uXG4gICAgICAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBfXG4gICAgICAgICAgICAgOyBjaGVja19hdmFpbGFibGUgPSBfXG4gICAgICAgICAgICAgOyBuYW1lX21hdGNoaW5nID0gX1xuICAgICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgPSBfXG4gICAgICAgICAgICAgfSBhcyB0KVxuICAgICAgICA9XG4gICAgICAgIGlmIFN0cmluZy5pc19wcmVmaXggZG9jIH5wcmVmaXg6XCIgXCJcbiAgICAgICAgdGhlblxuICAgICAgICAgIChuYW1lLCBTdHJpbmcubHN0cmlwIGRvYylcbiAgICAgICAgICA6OiBMaXN0Lm1hcCBhbGlhc2VzIH5mOihmdW4geCAtPiB4LCBzcHJpbnRmIFwic2FtZSBhcyBcXFwiJXNcXFwiXCIgbmFtZSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgRG9jLmFyZ19kb2M7IGRvYyB9ID0gRG9jLnBhcnNlIH5hY3Rpb24gfmRvYyBpblxuICAgICAgICAgICh3cmFwX2lmX29wdGlvbmFsIHQgKERvYy5jb25jYXQgfm5hbWUgfmFyZ19kb2MpLCBkb2MpXG4gICAgICAgICAgOjogTGlzdC5tYXAgYWxpYXNlcyB+ZjooZnVuIHggLT5cbiAgICAgICAgICAgICggd3JhcF9pZl9vcHRpb25hbCB0IChEb2MuY29uY2F0IH5uYW1lOnggfmFyZ19kb2MpXG4gICAgICAgICAgICAsIHNwcmludGYgXCJzYW1lIGFzIFxcXCIlc1xcXCJcIiBuYW1lICkpKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBhbGlnblxuICAgICAgICAgICh7IG5hbWVcbiAgICAgICAgICAgOyBkb2NcbiAgICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgIDsgYWN0aW9uXG4gICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gX1xuICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IF9cbiAgICAgICAgICAgOyBuYW1lX21hdGNoaW5nID0gX1xuICAgICAgICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwID0gX1xuICAgICAgICAgICB9IGFzIHQpXG4gICAgICA6IFNoYXBlLkZsYWdfaW5mby50XG4gICAgICA9XG4gICAgICBsZXQgeyBEb2MuYXJnX2RvYzsgZG9jIH0gPSBEb2MucGFyc2UgfmFjdGlvbiB+ZG9jIGluXG4gICAgICBsZXQgbmFtZSA9IHdyYXBfaWZfb3B0aW9uYWwgdCAoRG9jLmNvbmNhdCB+bmFtZSB+YXJnX2RvYykgaW5cbiAgICAgIHsgbmFtZTsgZG9jOyBhbGlhc2VzIH1cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSBmbGFncyA9XG4gICAgICBtYXRjaFxuICAgICAgICBNYXAub2ZfYWxpc3QgKG1vZHVsZSBTdHJpbmcpIChMaXN0Lm1hcCBmbGFncyB+ZjooZnVuIGZsYWcgLT4gZmxhZy5uYW1lLCBmbGFnKSlcbiAgICAgIHdpdGhcbiAgICAgIHwgYER1cGxpY2F0ZV9rZXkgZmxhZyAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBmbGFncyBuYW1lZCAlc1wiIGZsYWcgKClcbiAgICAgIHwgYE9rIG1hcCAtPlxuICAgICAgICBMaXN0LmNvbmNhdF9tYXAgZmxhZ3MgfmY6KGZ1biBmbGFnIC0+IGZsYWcubmFtZSA6OiBmbGFnLmFsaWFzZXMpXG4gICAgICAgIHw+IExpc3QuZmluZF9hX2R1cCB+Y29tcGFyZTpbJWNvbXBhcmU6IHN0cmluZ11cbiAgICAgICAgfD4gT3B0aW9uLml0ZXIgfmY6KGZ1biB4IC0+IGZhaWx3aXRoZiBcIm11bHRpcGxlIGZsYWdzIG9yIGFsaWFzZXMgbmFtZWQgJXNcIiB4ICgpKTtcbiAgICAgICAgbWFwXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgeyBhY3Rpb24gOiBhY3Rpb25cbiAgICA7IHJlYWQgOiBFbnYudCAtPiAnYSBQYXJzaW5nX291dGNvbWUudFxuICAgIDsgbnVtX29jY3VycmVuY2VzIDogTnVtX29jY3VycmVuY2VzLnRcbiAgICA7IGV4dHJhX2RvYyA6IHN0cmluZyBvcHRpb24gTGF6eS50XG4gICAgfVxuXG4gIHR5cGUgJ2EgdCA9IHN0cmluZyAtPiAnYSBzdGF0ZVxuXG4gIGxldCBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgbnVtX29jY3VycmVuY2VzID1cbiAgICB7IHJlYWRcbiAgICA7IG51bV9vY2N1cnJlbmNlc1xuICAgIDsgYWN0aW9uID1cbiAgICAgICAgKGxldCB1cGRhdGUgZW52IGFyZyA9XG4gICAgICAgICAgIG1hdGNoIEFyZ190eXBlLnBhcnNlIGFyZ190eXBlIGFyZyB3aXRoXG4gICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT5cbiAgICAgICAgICAgICBkaWVcbiAgICAgICAgICAgICAgIFwiZmFpbGVkIHRvIHBhcnNlICVzIHZhbHVlICVTLlxcbiVzXCJcbiAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgIGFyZ1xuICAgICAgICAgICAgICAgKEVycm9yLnRvX3N0cmluZ19odW0gZXJyb3IpXG4gICAgICAgICAgICAgICAoKVxuICAgICAgICAgICB8IE9rIGFyZyAtPlxuICAgICAgICAgICAgIGxldCBlbnYgPSB3cml0ZSBlbnYgYXJnIGluXG4gICAgICAgICAgICAgKG1hdGNoIEFyZ190eXBlLmtleSBhcmdfdHlwZSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBlbnZcbiAgICAgICAgICAgICAgfCBTb21lIGtleSAtPiBFbnYubXVsdGlfYWRkIGVudiB+a2V5IH5kYXRhOmFyZylcbiAgICAgICAgIGluXG4gICAgICAgICBBcmcgKHVwZGF0ZSwgQXJnX3R5cGUuY29tcGxldGUgYXJnX3R5cGUpKVxuICAgIDsgZXh0cmFfZG9jID0gQXJnX3R5cGUuZXh0cmFfZG9jIGFyZ190eXBlXG4gICAgfVxuICA7O1xuXG4gIGxldCBtYXBfZmxhZyAodCA6IF8gdCkgfmYgaW5wdXQgPVxuICAgIGxldCB7IGFjdGlvbjsgcmVhZDsgbnVtX29jY3VycmVuY2VzOyBleHRyYV9kb2MgfSA9IHQgaW5wdXQgaW5cbiAgICB7IGFjdGlvblxuICAgIDsgcmVhZCA9IChmdW4gZW52IC0+IFBhcnNpbmdfb3V0Y29tZS5tYXAgKHJlYWQgZW52KSB+ZilcbiAgICA7IG51bV9vY2N1cnJlbmNlc1xuICAgIDsgZXh0cmFfZG9jXG4gICAgfVxuICA7O1xuXG4gIGxldCB3cml0ZV9vcHRpb24gbmFtZSBrZXkgZW52IGFyZyA9XG4gICAgRW52LnVwZGF0ZSBlbnYga2V5IH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGFyZ1xuICAgICAgfCBTb21lIF8gLT4gZGllIFwiZmxhZyAlcyBwYXNzZWQgbW9yZSB0aGFuIG9uY2VcIiBuYW1lICgpKVxuICA7O1xuXG4gIGxldCByZXF1aXJlZF92YWx1ZSA/ZGVmYXVsdCBhcmdfdHlwZSBuYW1lIG51bV9vY2N1cnJlbmNlcyA9XG4gICAgbGV0IGtleSA9IEVudi5LZXkuY3JlYXRlIH5uYW1lIFslc2V4cF9vZjogX10gaW5cbiAgICBsZXQgcmVhZCBlbnYgPVxuICAgICAgbWF0Y2ggRW52LmZpbmQgZW52IGtleSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIHZcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggZGVmYXVsdCB3aXRoXG4gICAgICAgICB8IFNvbWUgdiAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyB2XG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLmVycm9yXG4gICAgICAgICAgICAgfmhhc19hcmc6ZmFsc2VcbiAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIChzcHJpbnRmIFwibWlzc2luZyByZXF1aXJlZCBmbGFnOiAlc1wiIG5hbWUpKSkpXG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9IHdyaXRlX29wdGlvbiBuYW1lIGtleSBlbnYgYXJnIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIG51bV9vY2N1cnJlbmNlc1xuICA7O1xuXG4gIGxldCByZXF1aXJlZCBhcmdfdHlwZSBuYW1lID0gcmVxdWlyZWRfdmFsdWUgYXJnX3R5cGUgbmFtZSBOdW1fb2NjdXJyZW5jZXMuZXhhY3RseV9vbmNlXG5cbiAgbGV0IG9wdGlvbmFsX3dpdGhfZGVmYXVsdCBkZWZhdWx0IGFyZ190eXBlIG5hbWUgPVxuICAgIHJlcXVpcmVkX3ZhbHVlIH5kZWZhdWx0IGFyZ190eXBlIG5hbWUgTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICA7O1xuXG4gIGxldCBvcHRpb25hbCBhcmdfdHlwZSBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiBfXSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBFbnYuZmluZCBlbnYga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyBOb25lXG4gICAgICB8IFNvbWUgXyBhcyB2YWx1ZSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIHZhbHVlXG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9IHdyaXRlX29wdGlvbiBuYW1lIGtleSBlbnYgYXJnIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgOztcblxuICBsZXQgbm9fYXJnX2dlbmVyYWwgfmlzX3JlcXVpcmVkIH5rZXlfdmFsdWUgfmRlcHJlY2F0ZWRfaG9vayBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiB1bml0XSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBFbnYubWVtIGVudiBrZXkgd2l0aFxuICAgICAgfCB0cnVlIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fd2l0aF9hcmcgdHJ1ZVxuICAgICAgfCBmYWxzZSAtPlxuICAgICAgICBpZiBpc19yZXF1aXJlZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgUGFyc2luZ19vdXRjb21lLmVycm9yXG4gICAgICAgICAgICB+aGFzX2FyZzpmYWxzZVxuICAgICAgICAgICAgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIChzcHJpbnRmIFwibWlzc2luZyByZXF1aXJlZCBmbGFnOiAlc1wiIG5hbWUpKSlcbiAgICAgICAgZWxzZSBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyBmYWxzZVxuICAgIGluXG4gICAgbGV0IHdyaXRlIGVudiA9XG4gICAgICBpZiBFbnYubWVtIGVudiBrZXlcbiAgICAgIHRoZW4gZGllIFwiZmxhZyAlcyBwYXNzZWQgbW9yZSB0aGFuIG9uY2VcIiBuYW1lICgpXG4gICAgICBlbHNlIEVudi5zZXQgZW52IH5rZXkgfmRhdGE6KClcbiAgICBpblxuICAgIGxldCBhY3Rpb24gZW52ID1cbiAgICAgIGxldCBlbnYgPVxuICAgICAgICBPcHRpb24uZm9sZCBrZXlfdmFsdWUgfmluaXQ6ZW52IH5mOihmdW4gZW52IChrZXksIHZhbHVlKSAtPlxuICAgICAgICAgIEVudi5zZXRfd2l0aF9kZWZhdWx0IGVudiB+a2V5IH5kYXRhOnZhbHVlKVxuICAgICAgaW5cbiAgICAgIHdyaXRlIGVudlxuICAgIGluXG4gICAgbGV0IGFjdGlvbiA9XG4gICAgICBtYXRjaCBkZXByZWNhdGVkX2hvb2sgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjdGlvblxuICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgZnVuIGVudiAtPlxuICAgICAgICAgIGxldCBlbnYgPSBhY3Rpb24gZW52IGluXG4gICAgICAgICAgZiAoKTtcbiAgICAgICAgICBlbnZcbiAgICBpblxuICAgIHsgcmVhZFxuICAgIDsgYWN0aW9uID0gTm9fYXJnIGFjdGlvblxuICAgIDsgbnVtX29jY3VycmVuY2VzID1cbiAgICAgICAgKGlmIGlzX3JlcXVpcmVkXG4gICAgICAgICB0aGVuIE51bV9vY2N1cnJlbmNlcy5leGFjdGx5X29uY2VcbiAgICAgICAgIGVsc2UgTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZSlcbiAgICA7IGV4dHJhX2RvYyA9IExhenkuZnJvbV92YWwgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgbm9fYXJnIG5hbWUgPVxuICAgIG5vX2FyZ19nZW5lcmFsIG5hbWUgfmlzX3JlcXVpcmVkOmZhbHNlIH5rZXlfdmFsdWU6Tm9uZSB+ZGVwcmVjYXRlZF9ob29rOk5vbmVcbiAgOztcblxuICBsZXQgbm9fYXJnX3JlcXVpcmVkIHYgbmFtZSA9XG4gICAgbWFwX2ZsYWdcbiAgICAgIChub19hcmdfZ2VuZXJhbCB+aXNfcmVxdWlyZWQ6dHJ1ZSB+a2V5X3ZhbHVlOk5vbmUgfmRlcHJlY2F0ZWRfaG9vazpOb25lKVxuICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgdHJ1ZSAtPiB2XG4gICAgICAgIHwgZmFsc2UgLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgbmFtZVxuICA7O1xuXG4gIGxldCBub19hcmdfcmVnaXN0ZXIgfmtleSB+dmFsdWUgbmFtZSA9XG4gICAgbm9fYXJnX2dlbmVyYWxcbiAgICAgIG5hbWVcbiAgICAgIH5pc19yZXF1aXJlZDpmYWxzZVxuICAgICAgfmtleV92YWx1ZTooU29tZSAoa2V5LCB2YWx1ZSkpXG4gICAgICB+ZGVwcmVjYXRlZF9ob29rOk5vbmVcbiAgOztcblxuICBsZXQgbm9fYXJnX3NvbWUgdmFsdWUgPVxuICAgIG1hcF9mbGFnIG5vX2FyZyB+ZjooZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiBTb21lIHZhbHVlXG4gICAgICB8IGZhbHNlIC0+IE5vbmUpXG4gIDs7XG5cbiAgbGV0IGxpc3RlZCBhcmdfdHlwZSBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LldpdGhfZGVmYXVsdC5LZXkuY3JlYXRlIH5kZWZhdWx0OltdIH5uYW1lIFslc2V4cF9vZjogXyBsaXN0XSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBMaXN0LnJldiAoRW52LldpdGhfZGVmYXVsdC5maW5kIGVudiBrZXkpIHdpdGhcbiAgICAgIHwgW10gLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgW11cbiAgICAgIHwgXyA6OiBfIGFzIHZhbHVlX2xpc3QgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyB2YWx1ZV9saXN0XG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9IEVudi5XaXRoX2RlZmF1bHQuY2hhbmdlIGVudiBrZXkgfmY6KGZ1biBsaXN0IC0+IGFyZyA6OiBsaXN0KSBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBOdW1fb2NjdXJyZW5jZXMuYW55XG4gIDs7XG5cbiAgbGV0IG9uZV9vcl9tb3JlX2FzX3BhaXIgYXJnX3R5cGUgbmFtZSA9XG4gICAgbGV0IGtleSA9IEVudi5XaXRoX2RlZmF1bHQuS2V5LmNyZWF0ZSB+ZGVmYXVsdDpbXSB+bmFtZSBbJXNleHBfb2Y6IF8gbGlzdF0gaW5cbiAgICBsZXQgcmVhZCBlbnYgPVxuICAgICAgbWF0Y2ggTGlzdC5yZXYgKEVudi5XaXRoX2RlZmF1bHQuZmluZCBlbnYga2V5KSB3aXRoXG4gICAgICB8IGZpcnN0IDo6IHJlc3QgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyAoZmlyc3QsIHJlc3QpXG4gICAgICB8IFtdIC0+XG4gICAgICAgIFBhcnNpbmdfb3V0Y29tZS5lcnJvclxuICAgICAgICAgIH5oYXNfYXJnOmZhbHNlXG4gICAgICAgICAgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgKEVycm9yLm9mX3N0cmluZyAoc3ByaW50ZiBcIm1pc3NpbmcgcmVxdWlyZWQgZmxhZzogJXNcIiBuYW1lKSkpXG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9IEVudi5XaXRoX2RlZmF1bHQuY2hhbmdlIGVudiBrZXkgfmY6KGZ1biBxIC0+IGFyZyA6OiBxKSBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBOdW1fb2NjdXJyZW5jZXMuYXRfbGVhc3Rfb25jZVxuICA7O1xuXG4gIGxldCBvbmVfb3JfbW9yZV9hc19saXN0IGFyZ190eXBlID1cbiAgICBvbmVfb3JfbW9yZV9hc19wYWlyIGFyZ190eXBlIHw+IG1hcF9mbGFnIH5mOihmdW4gKHgsIHhzKSAtPiB4IDo6IHhzKVxuICA7O1xuXG4gIGxldCBlc2NhcGVfZ2VuZXJhbCB+Y29tcGxldGUgfmRlcHJlY2F0ZWRfaG9vayBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiBzdHJpbmcgbGlzdF0gaW5cbiAgICBsZXQgYWN0aW9uIGVudiBjbWRfbGluZSA9IEVudi5zZXQgZW52IH5rZXkgfmRhdGE6Y21kX2xpbmUgaW5cbiAgICBsZXQgcmVhZCBlbnYgPVxuICAgICAgbWF0Y2ggRW52LmZpbmQgZW52IGtleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgTm9uZVxuICAgICAgfCBTb21lIF8gYXMgdmFsdWUgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyB2YWx1ZVxuICAgIGluXG4gICAgbGV0IGFjdGlvbiA9XG4gICAgICBtYXRjaCBkZXByZWNhdGVkX2hvb2sgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjdGlvblxuICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgZnVuIGVudiB4IC0+XG4gICAgICAgICAgZiB4O1xuICAgICAgICAgIGFjdGlvbiBlbnYgeFxuICAgIGluXG4gICAgeyBhY3Rpb24gPSBSZXN0IChhY3Rpb24sIGNvbXBsZXRlKVxuICAgIDsgcmVhZFxuICAgIDsgbnVtX29jY3VycmVuY2VzID0gTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICAgIDsgZXh0cmFfZG9jID0gTGF6eS5mcm9tX3ZhbCBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBub19hcmdfYWJvcnQgfmV4aXQgX25hbWUgPVxuICAgIHsgYWN0aW9uID0gTm9fYXJnIChmdW4gXyAtPiBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGUgKGV4aXQgKCkpKVxuICAgIDsgbnVtX29jY3VycmVuY2VzID0gTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICAgIDsgcmVhZCA9XG4gICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgICAoKiBXZSBrbm93IHRoYXQgdGhlIGZsYWcgd2Fzbid0IHBhc3NlZCBoZXJlIGJlY2F1c2UgaWYgaXQgd2FzIHBhc3NlZFxuICAgICAgICAgICAgICB0aGVuIHRoZSBbYWN0aW9uXSB3b3VsZCBoYXZlIGNhbGxlZCBbZXhpdF0uICopXG4gICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnICgpKVxuICAgIDsgZXh0cmFfZG9jID0gTGF6eS5mcm9tX3ZhbCBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBlc2NhcGUgbmFtZSA9IGVzY2FwZV9nZW5lcmFsIH5jb21wbGV0ZTpOb25lIH5kZXByZWNhdGVkX2hvb2s6Tm9uZSBuYW1lXG5cbiAgbGV0IGVzY2FwZV93aXRoX2F1dG9jb21wbGV0ZSB+Y29tcGxldGUgbmFtZSA9XG4gICAgZXNjYXBlX2dlbmVyYWwgfmNvbXBsZXRlOihTb21lIGNvbXBsZXRlKSB+ZGVwcmVjYXRlZF9ob29rOk5vbmUgbmFtZVxuICA7O1xuXG4gIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgbGV0IG5vX2FyZyB+aG9vayBuYW1lID1cbiAgICAgIG5vX2FyZ19nZW5lcmFsIH5pc19yZXF1aXJlZDpmYWxzZSB+ZGVwcmVjYXRlZF9ob29rOihTb21lIGhvb2spIH5rZXlfdmFsdWU6Tm9uZSBuYW1lXG4gICAgOztcblxuICAgIGxldCBlc2NhcGUgfmhvb2sgPSBlc2NhcGVfZ2VuZXJhbCB+Y29tcGxldGU6Tm9uZSB+ZGVwcmVjYXRlZF9ob29rOihTb21lIGhvb2spXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQYXRoIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBlbXB0eSA6IHRcbiAgdmFsIGNyZWF0ZSA6IHBhdGhfdG9fZXhlOnN0cmluZyAtPiB0XG4gIHZhbCBvZl9wYXJ0cyA6IHN0cmluZyBsaXN0IC0+IHRcbiAgdmFsIGFwcGVuZCA6IHQgLT4gc3ViY29tbWFuZDpzdHJpbmcgLT4gdFxuICB2YWwgcmVwbGFjZV9maXJzdCA6IHQgLT4gZnJvbTpzdHJpbmcgLT4gdG9fOnN0cmluZyAtPiB0XG4gIHZhbCBwYXJ0cyA6IHQgLT4gc3RyaW5nIGxpc3RcbiAgdmFsIHBhcnRzX2V4ZV9iYXNlbmFtZSA6IHQgLT4gc3RyaW5nIGxpc3RcbiAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIHZhbCB0b19zdHJpbmdfZG90cyA6IHQgLT4gc3RyaW5nXG4gIHZhbCBwb3BfaGVscCA6IHQgLT4gdFxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogdCAtPiBib29sXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIGxpc3RcblxuICBsZXQgZW1wdHkgPSBbXVxuICBsZXQgY3JlYXRlIH5wYXRoX3RvX2V4ZSA9IFsgcGF0aF90b19leGUgXVxuICBsZXQgb2ZfcGFydHMgcGFydHMgPSBMaXN0LnJldiBwYXJ0c1xuICBsZXQgYXBwZW5kIHQgfnN1YmNvbW1hbmQgPSBzdWJjb21tYW5kIDo6IHRcbiAgbGV0IHBhcnRzID0gTGlzdC5yZXZcblxuICBsZXQgcGFydHNfZXhlX2Jhc2VuYW1lIHQgPVxuICAgIG1hdGNoIExpc3QucmV2IHQgd2l0aFxuICAgIHwgW10gLT4gW11cbiAgICB8IGhkIDo6IHRsIC0+IEZpbGVuYW1lX2Jhc2UuYmFzZW5hbWUgaGQgOjogdGxcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHQgPSB1bndvcmRzIChwYXJ0c19leGVfYmFzZW5hbWUgdClcbiAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoXG5cbiAgbGV0IHJlcGxhY2VfZmlyc3QgdCB+ZnJvbSB+dG9fID1cbiAgICBsZXQgcmVjIGF1eCBwYXJ0cyB+YWNjIH5mcm9tIH50b18gPVxuICAgICAgbWF0Y2ggcGFydHMgd2l0aFxuICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgaWYgU3RyaW5nLiggPSApIGhkIGZyb21cbiAgICAgICAgdGhlbiBMaXN0LnJldl9hcHBlbmQgdGwgKHRvXyA6OiBhY2MpXG4gICAgICAgIGVsc2UgYXV4IHRsIH5hY2M6KGhkIDo6IGFjYykgfmZyb20gfnRvX1xuICAgIGluXG4gICAgYXV4IChwYXJ0cyB0KSB+YWNjOltdIH5mcm9tIH50b19cbiAgOztcblxuICBsZXQgcG9wX2hlbHAgPSBmdW5jdGlvblxuICAgIHwgXCJoZWxwXCIgOjogdCAtPiB0XG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfZG90cyB0ID1cbiAgICAobWF0Y2ggdCB3aXRoXG4gICAgIHwgW10gLT4gW11cbiAgICAgfCBsYXN0IDo6IGluaXQgLT4gbGFzdCA6OiBMaXN0Lm1hcCBpbml0IH5mOihGbi5jb25zdCBcIi5cIikpXG4gICAgfD4gdG9fc3RyaW5nXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5ID0gTGlzdC5pc19lbXB0eVxuZW5kXG5cbm1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICBtb2R1bGUgR3JhbW1hciA6IHNpZ1xuICAgIHR5cGUgdCA9IFNoYXBlLkFub25zLkdyYW1tYXIudFxuXG4gICAgdmFsIHplcm8gOiB0XG4gICAgdmFsIG9uZSA6IHN0cmluZyAtPiB0XG4gICAgdmFsIG1hbnkgOiB0IC0+IHRcbiAgICB2YWwgbWF5YmUgOiB0IC0+IHRcbiAgICB2YWwgbWF5YmVfaWRlbXBvdGVudCA6IHQgLT4gdFxuICAgIHZhbCBjb25jYXQgOiB0IGxpc3QgLT4gdFxuICAgIHZhbCBhZF9ob2MgOiB1c2FnZTpzdHJpbmcgLT4gdFxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbmFtZXMgOiB0IC0+IHN0cmluZyBsaXN0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFNoYXBlLkFub25zLkdyYW1tYXIudCA9XG4gICAgICB8IFplcm9cbiAgICAgIHwgT25lIG9mIHN0cmluZ1xuICAgICAgfCBNYW55IG9mIHRcbiAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgfCBDb25jYXQgb2YgdCBsaXN0XG4gICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcblxuICAgIGxldCBpbnZhcmlhbnQgPSBTaGFwZS5Bbm9ucy5HcmFtbWFyLmludmFyaWFudFxuICAgIGxldCB1c2FnZSA9IFNoYXBlLkFub25zLkdyYW1tYXIudXNhZ2VcblxuICAgIGxldCByZWMgaXNfZml4ZWRfYXJpdHkgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IHRydWVcbiAgICAgIHwgT25lIF8gLT4gdHJ1ZVxuICAgICAgfCBNYW55IF8gLT4gZmFsc2VcbiAgICAgIHwgTWF5YmUgXyAtPiBmYWxzZVxuICAgICAgfCBBZF9ob2MgXyAtPiBmYWxzZVxuICAgICAgfCBDb25jYXQgdHMgLT5cbiAgICAgICAgKG1hdGNoIExpc3QucmV2IHRzIHdpdGhcbiAgICAgICAgIHwgW10gLT4gZmFpbHdpdGggXCJidWcgaW4gY29tbWFuZC5tbFwiXG4gICAgICAgICB8IGxhc3QgOjogb3RoZXJzIC0+XG4gICAgICAgICAgIGFzc2VydCAoTGlzdC5mb3JfYWxsIG90aGVycyB+Zjppc19maXhlZF9hcml0eSk7XG4gICAgICAgICAgIGlzX2ZpeGVkX2FyaXR5IGxhc3QpXG4gICAgOztcblxuICAgIGxldCByZWMgbmFtZXMgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IFtdXG4gICAgICB8IE9uZSBzIC0+IFsgcyBdXG4gICAgICB8IE1hbnkgdCAtPiBuYW1lcyB0XG4gICAgICB8IE1heWJlIHQgLT4gbmFtZXMgdFxuICAgICAgfCBBZF9ob2MgcyAtPiBbIHMgXVxuICAgICAgfCBDb25jYXQgdHMgLT4gTGlzdC5jb25jYXRfbWFwIHRzIH5mOm5hbWVzXG4gICAgOztcblxuICAgIGxldCB6ZXJvID0gWmVyb1xuICAgIGxldCBvbmUgbmFtZSA9IE9uZSBuYW1lXG5cbiAgICBsZXQgbWFueSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gWmVybyAoKiBzdHJhbmdlLCBidXQgbm90IG5vbi1zZW5zZSAqKVxuICAgICAgfCB0IC0+XG4gICAgICAgIGlmIG5vdCAoaXNfZml4ZWRfYXJpdHkgdClcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoZlxuICAgICAgICAgICAgXCJpdGVyYXRpb24gb2YgdmFyaWFibGUtbGVuZ3RoIGdyYW1tYXJzIHN1Y2ggYXMgJXMgaXMgZGlzYWxsb3dlZFwiXG4gICAgICAgICAgICAodXNhZ2UgdClcbiAgICAgICAgICAgICgpO1xuICAgICAgICBNYW55IHRcbiAgICA7O1xuXG4gICAgbGV0IG1heWJlID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBaZXJvICgqIHN0cmFuZ2UsIGJ1dCBub3Qgbm9uLXNlbnNlICopXG4gICAgICB8IHQgLT4gTWF5YmUgdFxuICAgIDs7XG5cbiAgICBsZXQgbWF5YmVfaWRlbXBvdGVudCA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gWmVybyAoKiBzdHJhbmdlLCBidXQgbm90IG5vbi1zZW5zZSAqKVxuICAgICAgfCBNYXliZSB0IC0+IE1heWJlIHRcbiAgICAgIHwgTWFueSB0IC0+IE1hbnkgdFxuICAgICAgfCB0IC0+IE1heWJlIHRcbiAgICA7O1xuXG4gICAgbGV0IGNvbmNhdCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFplcm9cbiAgICAgIHwgY2FyIDo6IGNkciAtPlxuICAgICAgICBsZXQgY2FyLCBjZHIgPVxuICAgICAgICAgIExpc3QuZm9sZCBjZHIgfmluaXQ6KGNhciwgW10pIH5mOihmdW4gKHQxLCBhY2MpIHQyIC0+XG4gICAgICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICAgICAgfCBaZXJvLCB0IHwgdCwgWmVybyAtPiB0LCBhY2NcbiAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICBpZiBpc19maXhlZF9hcml0eSB0MVxuICAgICAgICAgICAgICB0aGVuIHQyLCB0MSA6OiBhY2NcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGZhaWx3aXRoZlxuICAgICAgICAgICAgICAgICAgXCJ0aGUgZ3JhbW1hciAlcyBmb3IgYW5vbnltb3VzIGFyZ3VtZW50cyBpcyBub3Qgc3VwcG9ydGVkIGJlY2F1c2UgdGhlcmUgXFxcbiAgICAgICAgICAgICAgICAgICBpcyB0aGUgcG9zc2liaWxpdHkgZm9yIGFyZ3VtZW50cyAoJXMpIGZvbGxvd2luZyBhIHZhcmlhYmxlIG51bWJlciBvZiBcXFxuICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyAoJXMpLiAgU3VwcG9ydGluZyBzdWNoIGdyYW1tYXJzIHdvdWxkIGNvbXBsaWNhdGUgdGhlIFxcXG4gICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gc2lnbmlmaWNhbnRseS5cIlxuICAgICAgICAgICAgICAgICAgKHVzYWdlIChDb25jYXQgKExpc3QucmV2ICh0MiA6OiB0MSA6OiBhY2MpKSkpXG4gICAgICAgICAgICAgICAgICAodXNhZ2UgdDIpXG4gICAgICAgICAgICAgICAgICAodXNhZ2UgdDEpXG4gICAgICAgICAgICAgICAgICAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIGNkciB3aXRoXG4gICAgICAgICB8IFtdIC0+IGNhclxuICAgICAgICAgfCBfIDo6IF8gLT4gQ29uY2F0IChMaXN0LnJldiAoY2FyIDo6IGNkcikpKVxuICAgIDs7XG5cbiAgICBsZXQgYWRfaG9jIH51c2FnZSA9IEFkX2hvYyB1c2FnZVxuICBlbmRcblxuICBtb2R1bGUgUGFyc2VyIDogc2lnXG4gICAgbW9kdWxlIEJhc2ljIDogc2lnXG4gICAgICB0eXBlICsnYSB0XG5cbiAgICAgIG1vZHVsZSBGb3Jfb3BlbmluZyA6IHNpZ1xuICAgICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgICAgICB2YWwgKCA8Kj4gKSA6ICgnYSAtPiAnYikgdCAtPiAnYSB0IC0+ICdiIHRcbiAgICAgICAgdmFsICggPj58ICkgOiAnYSB0IC0+ICgnYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgZW5kXG5cbiAgICAgIHZhbCBmcm9tX2VudiA6IChFbnYudCAtPiAnYSkgLT4gJ2EgdFxuICAgIGVuZFxuXG4gICAgdHlwZSArJ2EgdCA9ICdhIFBhcnNpbmdfb3V0Y29tZS50IEJhc2ljLnRcblxuICAgIHZhbCBvbmUgOiBuYW1lOnN0cmluZyAtPiAnYSBBcmdfdHlwZS50IC0+ICdhIHRcbiAgICB2YWwgbWF5YmUgOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gICAgdmFsIHNlcXVlbmNlIDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgICB2YWwgc3RvcF9wYXJzaW5nIDogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGZpbmFsX3ZhbHVlIDogJ2EgQmFzaWMudCAtPiBFbnYudCAtPiAnYVxuXG4gICAgbW9kdWxlIENvbnN1bWVfcmVzdWx0IDogc2lnXG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID1cbiAgICAgICAgeyAoKiBJZiBlbWFjcyBoaWdobGlnaHRzIFtwYXJzZXJdIGFzIGlmIGl0IHdlcmUgYSBrZXl3b3JkLCB0aGF0J3Mgb25seSBiZWNhdXNlXG4gICAgICAgICAgICAgW3BhcnNlcl0gd2FzIGEga2V5d29yZCBpbiBjYW1scDQuIFtwYXJzZXJdIGlzIGEgcmVndWxhciBuYW1lIGluIE9DYW1sLiAqKVxuICAgICAgICAgIHBhcnNlciA6ICdhIEJhc2ljLnRcbiAgICAgICAgOyBwYXJzZV9mbGFncyA6IGJvb2xcbiAgICAgICAgOyB1cGRhdGVfZW52IDogRW52LnQgLT4gRW52LnRcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgdmFsIGNvbnN1bWUgOiAnYSBCYXNpYy50IC0+IHN0cmluZyAtPiBmb3JfY29tcGxldGlvbjpib29sIC0+ICdhIENvbnN1bWVfcmVzdWx0LnRcbiAgICB2YWwgY29tcGxldGUgOiAnYSBCYXNpYy50IC0+IEVudi50IC0+IHBhcnQ6c3RyaW5nIC0+IE5vdGhpbmcudFxuXG4gICAgbW9kdWxlIEZvcl9vcGVuaW5nIDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgICAgdmFsICggPCo+ICkgOiAoJ2EgLT4gJ2IpIHQgLT4gJ2EgdCAtPiAnYiB0XG4gICAgICB2YWwgKCA+PnwgKSA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgZW5kXG4gIGVuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBCYXNpYyA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBEb25lIG9mIChFbnYudCAtPiAnYSlcbiAgICAgICAgfCBNb3JlIG9mICdhIG1vcmVcbiAgICAgICAgKCogQSBbVGVzdF0gd2lsbCAoZ2VuZXJhbGx5KSByZXR1cm4gYSBbRG9uZSBfXSB2YWx1ZSBpZiB0aGVyZSBpcyBubyBtb3JlIGlucHV0IGFuZFxuICAgICAgICAgICBhIFtNb3JlXSBwYXJzZXIgdG8gdXNlIGlmIHRoZXJlIGlzIGFueSBtb3JlIGlucHV0LiAqKVxuICAgICAgICB8IFRlc3Qgb2YgKG1vcmU6Ym9vbCAtPiAnYSB0KVxuICAgICAgICAoKiBJZiB3ZSdyZSBvbmx5IGNvbXBsZXRpbmcsIHdlIGNhbid0IHB1bGwgdmFsdWVzIG91dCwgYnV0IHdlIGNhbiBzdGlsbCBzdGVwIHRocm91Z2hcbiAgICAgICAgICAgW3RdcyAod2hpY2ggbWF5IGhhdmUgY29tcGxldGlvbiBzZXQgdXApLiAqKVxuICAgICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gb2YgcGFja2VkIGxpc3RcbiAgICAgICAgfCBTdG9wX3BhcnNpbmcgb2YgJ2EgdFxuXG4gICAgICBhbmQgJ2EgbW9yZSA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IHBhcnNlIDogc3RyaW5nIC0+IGZvcl9jb21wbGV0aW9uOmJvb2wgLT4gJ2EgcGFyc2VfcmVzdWx0XG4gICAgICAgIDsgY29tcGxldGUgOiBDb21wbGV0ZXIudFxuICAgICAgICB9XG5cbiAgICAgIGFuZCBwYWNrZWQgPSBQYWNrZWQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gICAgICBhbmQgJ2EgcGFyc2VfcmVzdWx0ID1cbiAgICAgICAgeyBwYXJzZXIgOiAnYSB0XG4gICAgICAgIDsgdXBkYXRlX2VudiA6IEVudi50IC0+IEVudi50XG4gICAgICAgIH1cblxuICAgICAgbGV0IHBhcnNlX21vcmUgeyBuYW1lOyBwYXJzZTsgY29tcGxldGUgfSB+ZiA9XG4gICAgICAgIGxldCBwYXJzZSBhcmcgfmZvcl9jb21wbGV0aW9uID1cbiAgICAgICAgICBsZXQgeyBwYXJzZXI7IHVwZGF0ZV9lbnYgfSA9IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gaW5cbiAgICAgICAgICB7IHBhcnNlciA9IGYgcGFyc2VyOyB1cGRhdGVfZW52IH1cbiAgICAgICAgaW5cbiAgICAgICAgTW9yZSB7IG5hbWU7IHBhcnNlOyBjb21wbGV0ZSB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFja19mb3JfY29tcGxldGlvbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRG9uZSBfIC0+IFtdICgqIHdvbid0IGNvbXBsZXRlIG9yIGNvbnN1bWUgYW55dGhpbmcgKilcbiAgICAgICAgfCAoTW9yZSBfIHwgVGVzdCBfIHwgU3RvcF9wYXJzaW5nIF8pIGFzIHggLT4gWyBQYWNrZWQgeCBdXG4gICAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBwcyAtPiBwc1xuICAgICAgOztcblxuICAgICAgbGV0IHJlYyAoIDwqPiApIHRfbGVmdCB0X3JpZ2h0ID1cbiAgICAgICAgbWF0Y2ggdF9sZWZ0LCB0X3JpZ2h0IHdpdGhcbiAgICAgICAgKCogW0RvbmVdICopXG4gICAgICAgIHwgRG9uZSBmLCBEb25lIHggLT5cbiAgICAgICAgICBEb25lXG4gICAgICAgICAgICAoZnVuIGVudiAtPlxuICAgICAgICAgICAgICAgbGV0IGZfb3V0Y29tZSA9IGYgZW52IGluXG4gICAgICAgICAgICAgICBsZXQgeF9vdXRjb21lID0geCBlbnYgaW5cbiAgICAgICAgICAgICAgIGZfb3V0Y29tZSB4X291dGNvbWUpXG4gICAgICAgICgqIG5leHQgc3RlcCBbTW9yZV0gKilcbiAgICAgICAgfCBNb3JlIG1vcmUsIF8gLT4gcGFyc2VfbW9yZSBtb3JlIH5mOihmdW4gdGwgLT4gdGwgPCo+IHRfcmlnaHQpXG4gICAgICAgIHwgRG9uZSBfLCBNb3JlIG1vcmUgLT4gcGFyc2VfbW9yZSBtb3JlIH5mOihmdW4gdHIgLT4gdF9sZWZ0IDwqPiB0cilcbiAgICAgICAgKCogbmV4dCBzdGVwIFtPbmx5X2Zvcl9jb21wbGV0aW9uXSAqKVxuICAgICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gXywgXyB8IERvbmUgXywgT25seV9mb3JfY29tcGxldGlvbiBfIC0+XG4gICAgICAgICAgT25seV9mb3JfY29tcGxldGlvbiAocGFja19mb3JfY29tcGxldGlvbiB0X2xlZnQgQCBwYWNrX2Zvcl9jb21wbGV0aW9uIHRfcmlnaHQpXG4gICAgICAgICgqIG5leHQgc3RlcCBbU3RvcF9wYXJzaW5nXSAqKVxuICAgICAgICB8IFN0b3BfcGFyc2luZyB0bCwgdHIgfCAoRG9uZSBfIGFzIHRsKSwgU3RvcF9wYXJzaW5nIHRyIC0+IFN0b3BfcGFyc2luZyAodGwgPCo+IHRyKVxuICAgICAgICAoKiBuZXh0IHN0ZXAgW1Rlc3RdICopXG4gICAgICAgIHwgVGVzdCB0ZXN0LCBfIC0+IFRlc3QgKGZ1biB+bW9yZSAtPiB0ZXN0IH5tb3JlIDwqPiB0X3JpZ2h0KVxuICAgICAgICB8IERvbmUgXywgVGVzdCB0ZXN0IC0+IFRlc3QgKGZ1biB+bW9yZSAtPiB0X2xlZnQgPCo+IHRlc3Qgfm1vcmUpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmV0dXJuIGEgPSBEb25lIChmdW4gXyAtPiBhKVxuICAgICAgbGV0ICggPj58ICkgdCBmID0gcmV0dXJuIGYgPCo+IHRcbiAgICAgIGxldCBmcm9tX2VudiBmID0gRG9uZSAoZnVuIGVudiAtPiBmIGVudilcblxuICAgICAgbW9kdWxlIEZvcl9vcGVuaW5nID0gc3RydWN0XG4gICAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBvcGVuIEJhc2ljXG5cbiAgICB0eXBlICdhIHQgPSAnYSBQYXJzaW5nX291dGNvbWUudCBCYXNpYy50XG5cbiAgICBsZXQgKCA+PnwgKSB0IGYgPSB0ID4+fCBQYXJzaW5nX291dGNvbWUubWFwIH5mXG4gICAgbGV0ICggPCo+ICkgdF9sZWZ0IHRfcmlnaHQgPSByZXR1cm4gUGFyc2luZ19vdXRjb21lLiggPCo+ICkgPCo+IHRfbGVmdCA8Kj4gdF9yaWdodFxuICAgIGxldCByZXR1cm4gYSA9IHJldHVybiAoUGFyc2luZ19vdXRjb21lLnJldHVybiBhKVxuICAgIGxldCByZXR1cm5fd2l0aF9hcmcgYSA9IERvbmUgKGZ1biBfIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fd2l0aF9hcmcgYSlcbiAgICBsZXQgc3RvcF9wYXJzaW5nIHQgPSBTdG9wX3BhcnNpbmcgdFxuXG4gICAgbGV0IG9uZV9tb3JlIH5uYW1lIGFyZ190eXBlID1cbiAgICAgIGxldCBwYXJzZSBhbm9uIH5mb3JfY29tcGxldGlvbiA9XG4gICAgICAgIG1hdGNoIEFyZ190eXBlLnBhcnNlIGFyZ190eXBlIGFub24gd2l0aFxuICAgICAgICB8IEVycm9yIGVycm9yIC0+XG4gICAgICAgICAgaWYgZm9yX2NvbXBsZXRpb25cbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAoKiB3ZSBkb24ndCAqcmVhbGx5KiBjYXJlIGFib3V0IHRoaXMgdmFsdWUsIHNvIGp1c3QgcHV0IGluIGEgZHVtbXkgdmFsdWUgc29cbiAgICAgICAgICAgICAgIGNvbXBsZXRpb24gY2FuIGNvbnRpbnVlICopXG4gICAgICAgICAgICB7IHBhcnNlciA9IE9ubHlfZm9yX2NvbXBsZXRpb24gW107IHVwZGF0ZV9lbnYgPSBGbi5pZCB9XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZGllIFwiZmFpbGVkIHRvIHBhcnNlICVzIHZhbHVlICVTXFxuJXNcIiBuYW1lIGFub24gKEVycm9yLnRvX3N0cmluZ19odW0gZXJyb3IpICgpXG4gICAgICAgIHwgT2sgdiAtPlxuICAgICAgICAgIHsgcGFyc2VyID0gcmV0dXJuX3dpdGhfYXJnIHZcbiAgICAgICAgICA7IHVwZGF0ZV9lbnYgPVxuICAgICAgICAgICAgICAoZnVuIGVudiAtPlxuICAgICAgICAgICAgICAgICBPcHRpb24uZm9sZCAoQXJnX3R5cGUua2V5IGFyZ190eXBlKSB+aW5pdDplbnYgfmY6KGZ1biBlbnYga2V5IC0+XG4gICAgICAgICAgICAgICAgICAgRW52Lm11bHRpX2FkZCBlbnYgfmtleSB+ZGF0YTp2KSlcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgTW9yZSB7IG5hbWU7IHBhcnNlOyBjb21wbGV0ZSA9IEFyZ190eXBlLmNvbXBsZXRlIGFyZ190eXBlIH1cbiAgICA7O1xuXG4gICAgbGV0IG9uZSB+bmFtZSBhcmdfdHlwZSA9XG4gICAgICBUZXN0XG4gICAgICAgIChmdW4gfm1vcmUgLT5cbiAgICAgICAgICAgaWYgbW9yZVxuICAgICAgICAgICB0aGVuIG9uZV9tb3JlIH5uYW1lIGFyZ190eXBlXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBEb25lXG4gICAgICAgICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5lcnJvclxuICAgICAgICAgICAgICAgICAgICB+aGFzX2FyZzpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgKEVycm9yLm9mX3N0cmluZyAoc3ByaW50ZiBcIm1pc3NpbmcgYW5vbnltb3VzIGFyZ3VtZW50OiAlc1wiIG5hbWUpKSkpKVxuICAgIDs7XG5cbiAgICBsZXQgbWF5YmUgdCA9XG4gICAgICBUZXN0XG4gICAgICAgIChmdW4gfm1vcmUgLT5cbiAgICAgICAgICAgaWYgbW9yZSB0aGVuIHJldHVybl93aXRoX2FyZyAoZnVuIGEgLT4gU29tZSBhKSA8Kj4gdCBlbHNlIHJldHVybiBOb25lKVxuICAgIDs7XG5cbiAgICBsZXQgc2VxdWVuY2UgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgPVxuICAgICAgICBUZXN0XG4gICAgICAgICAgKGZ1biB+bW9yZSAtPlxuICAgICAgICAgICAgIGlmIG1vcmUgdGhlbiByZXR1cm4gKGZ1biB2IGFjYyAtPiB2IDo6IGFjYykgPCo+IHQgPCo+IGxvb3AgZWxzZSByZXR1cm4gW10pXG4gICAgICBpblxuICAgICAgbG9vcFxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGZpbmFsX3ZhbHVlIHQgZW52ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBEb25lIGEgLT4gYSBlbnZcbiAgICAgIHwgU3RvcF9wYXJzaW5nIHQgLT4gZmluYWxfdmFsdWUgdCBlbnZcbiAgICAgIHwgVGVzdCBmIC0+IGZpbmFsX3ZhbHVlIChmIH5tb3JlOmZhbHNlKSBlbnZcbiAgICAgIHwgTW9yZSBfIC0+XG4gICAgICAgICgqIHRoaXMgZG9lc24ndCBoYXBwZW4gYmVjYXVzZSBhbGwgb2NjdXJyZW5jZXMgb2YgW01vcmVdIGFyZSBwcm90ZWN0ZWRcbiAgICAgICAgICAgYnkgW1Rlc3RdLCB3aGljaCBtZWFucyB0aGVyZSB3aWxsIGFsd2F5cyBiZSBhbiBleHRyYSBhcmd1bWVudCB0byBnaXZlXG4gICAgICAgICAgIGJlZm9yZSByZXF1ZXN0aW5nIHRoZSBmaW5hbCB2YWx1ZSAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBfIC0+XG4gICAgICAgIGZhaWx3aXRoIFwiQlVHOiBhc2tlZCBmb3IgZmluYWwgdmFsdWUgd2hlbiBkb2luZyBjb21wbGV0aW9uXCJcbiAgICA7O1xuXG4gICAgbW9kdWxlIENvbnN1bWVfcmVzdWx0ID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID1cbiAgICAgICAgeyBwYXJzZXIgOiAnYSBCYXNpYy50XG4gICAgICAgIDsgcGFyc2VfZmxhZ3MgOiBib29sXG4gICAgICAgIDsgdXBkYXRlX2VudiA6IEVudi50IC0+IEVudi50XG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIGxldCByZWMgY29uc3VtZVxuICAgICAgOiB0eXBlIGEuIGEgQmFzaWMudCAtPiBzdHJpbmcgLT4gZm9yX2NvbXBsZXRpb246Ym9vbCAtPiBhIENvbnN1bWVfcmVzdWx0LnRcbiAgICAgID1cbiAgICAgIGZ1biB0IGFyZyB+Zm9yX2NvbXBsZXRpb24gLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBEb25lIF8gLT4gZGllIFwidG9vIG1hbnkgYW5vbnltb3VzIGFyZ3VtZW50c1wiICgpXG4gICAgICB8IFRlc3QgZiAtPiBjb25zdW1lIChmIH5tb3JlOnRydWUpIGFyZyB+Zm9yX2NvbXBsZXRpb25cbiAgICAgIHwgTW9yZSB7IHBhcnNlOyBfIH0gLT5cbiAgICAgICAgbGV0IHsgcGFyc2VyOyB1cGRhdGVfZW52IH0gPSBwYXJzZSBhcmcgfmZvcl9jb21wbGV0aW9uIGluXG4gICAgICAgIHsgcGFyc2VyOyBwYXJzZV9mbGFncyA9IHRydWU7IHVwZGF0ZV9lbnYgfVxuICAgICAgfCBTdG9wX3BhcnNpbmcgdCAtPiB7IChjb25zdW1lIHQgYXJnIH5mb3JfY29tcGxldGlvbikgd2l0aCBwYXJzZV9mbGFncyA9IGZhbHNlIH1cbiAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBwYWNrZWQgLT5cbiAgICAgICAgKG1hdGNoIHBhY2tlZCB3aXRoXG4gICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgIHsgcGFyc2VyID0gT25seV9mb3JfY29tcGxldGlvbiBbXTsgcGFyc2VfZmxhZ3MgPSB0cnVlOyB1cGRhdGVfZW52ID0gRm4uaWQgfVxuICAgICAgICAgfCBQYWNrZWQgdCA6OiByZXN0IC0+XG4gICAgICAgICAgIGxldCAoeyB1cGRhdGVfZW52OyBwYXJzZV9mbGFnczsgcGFyc2VyIH0gOiBfIENvbnN1bWVfcmVzdWx0LnQpID1cbiAgICAgICAgICAgICBjb25zdW1lIHQgYXJnIH5mb3JfY29tcGxldGlvblxuICAgICAgICAgICBpblxuICAgICAgICAgICB7IHVwZGF0ZV9lbnZcbiAgICAgICAgICAgOyBwYXJzZV9mbGFnc1xuICAgICAgICAgICA7IHBhcnNlciA9IE9ubHlfZm9yX2NvbXBsZXRpb24gKHBhY2tfZm9yX2NvbXBsZXRpb24gcGFyc2VyIEAgcmVzdClcbiAgICAgICAgICAgfSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBjb21wbGV0ZSA6IHR5cGUgYS4gYSBCYXNpYy50IC0+IEVudi50IC0+IHBhcnQ6c3RyaW5nIC0+IE5vdGhpbmcudCA9XG4gICAgICBmdW4gdCBlbnYgfnBhcnQgLT5cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRG9uZSBfIC0+IGV4aXQgMFxuICAgICAgICB8IFRlc3QgZiAtPiBjb21wbGV0ZSAoZiB+bW9yZTp0cnVlKSBlbnYgfnBhcnRcbiAgICAgICAgfCBNb3JlIHsgY29tcGxldGU7IF8gfSAtPiBDb21wbGV0ZXIucnVuX2FuZF9leGl0IGNvbXBsZXRlIGVudiB+cGFydFxuICAgICAgICB8IFN0b3BfcGFyc2luZyB0IC0+IGNvbXBsZXRlIHQgZW52IH5wYXJ0XG4gICAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiB0IC0+XG4gICAgICAgICAgKG1hdGNoIHQgd2l0aFxuICAgICAgICAgICB8IFtdIC0+IGV4aXQgMFxuICAgICAgICAgICB8IFBhY2tlZCB0IDo6IF8gLT4gY29tcGxldGUgdCBlbnYgfnBhcnQpXG4gICAgOztcblxuICAgIG1vZHVsZSBGb3Jfb3BlbmluZyA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBlbmRcbiAgZW5kXG5cbiAgb3BlbiBQYXJzZXIuRm9yX29wZW5pbmdcblxuICB0eXBlICdhIHQgPVxuICAgIHsgcCA6ICdhIFBhcnNlci50XG4gICAgOyBncmFtbWFyIDogR3JhbW1hci50XG4gICAgfVxuXG4gIGxldCB0MiB0MSB0MiA9XG4gICAgeyBwID0gcmV0dXJuIChmdW4gYTEgYTIgLT4gYTEsIGEyKSA8Kj4gdDEucCA8Kj4gdDIucFxuICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuY29uY2F0IFsgdDEuZ3JhbW1hcjsgdDIuZ3JhbW1hciBdXG4gICAgfVxuICA7O1xuXG4gIGxldCB0MyB0MSB0MiB0MyA9XG4gICAgeyBwID0gcmV0dXJuIChmdW4gYTEgYTIgYTMgLT4gYTEsIGEyLCBhMykgPCo+IHQxLnAgPCo+IHQyLnAgPCo+IHQzLnBcbiAgICA7IGdyYW1tYXIgPSBHcmFtbWFyLmNvbmNhdCBbIHQxLmdyYW1tYXI7IHQyLmdyYW1tYXI7IHQzLmdyYW1tYXIgXVxuICAgIH1cbiAgOztcblxuICBsZXQgdDQgdDEgdDIgdDMgdDQgPVxuICAgIHsgcCA9IHJldHVybiAoZnVuIGExIGEyIGEzIGE0IC0+IGExLCBhMiwgYTMsIGE0KSA8Kj4gdDEucCA8Kj4gdDIucCA8Kj4gdDMucCA8Kj4gdDQucFxuICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuY29uY2F0IFsgdDEuZ3JhbW1hcjsgdDIuZ3JhbW1hcjsgdDMuZ3JhbW1hcjsgdDQuZ3JhbW1hciBdXG4gICAgfVxuICA7O1xuXG4gIGxldCBub3JtYWxpemUgc3RyID1cbiAgICAoKiBWZXJpZnkgdGhlIHN0cmluZyBpcyBub3QgZW1wdHkgb3Igc3Vycm91bmRlZCBieSB3aGl0ZXNwYWNlICopXG4gICAgbGV0IHN0cmxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgaWYgc3RybGVuID0gMCB0aGVuIGZhaWx3aXRoIFwiRW1wdHkgYW5vbnltb3VzIGFyZ3VtZW50IG5hbWUgcHJvdmlkZWRcIjtcbiAgICBpZiBTdHJpbmcuKCA8PiApIChTdHJpbmcuc3RyaXAgc3RyKSBzdHJcbiAgICB0aGVuIGZhaWx3aXRoZiBcImFyZ3VtZW50IG5hbWUgJVMgaGFzIHN1cnJvdW5kaW5nIHdoaXRlc3BhY2VcIiBzdHIgKCk7XG4gICAgKCogSWYgdGhlIHN0cmluZyBjb250YWlucyBzcGVjaWFsIHN1cnJvdW5kaW5nIGNoYXJhY3RlcnMsIGRvbid0IGRvIGFueXRoaW5nICopXG4gICAgbGV0IGhhc19zcGVjaWFsX2NoYXJzID1cbiAgICAgIGxldCBzcGVjaWFsX2NoYXJzID1cbiAgICAgICAgU2V0Lm9mX2xpc3QgKG1vZHVsZSBDaGFyKSBbICc8JzsgJz4nOyAnWyc7ICddJzsgJygnOyAnKSc7ICd7JzsgJ30nIF1cbiAgICAgIGluXG4gICAgICBTdHJpbmcuZXhpc3RzIHN0ciB+ZjooU2V0Lm1lbSBzcGVjaWFsX2NoYXJzKVxuICAgIGluXG4gICAgaWYgaGFzX3NwZWNpYWxfY2hhcnMgdGhlbiBzdHIgZWxzZSBTdHJpbmcudXBwZXJjYXNlIHN0clxuICA7O1xuXG4gIGxldCAoICU6ICkgbmFtZSBhcmdfdHlwZSA9XG4gICAgbGV0IG5hbWUgPSBub3JtYWxpemUgbmFtZSBpblxuICAgIHsgcCA9IFBhcnNlci5vbmUgfm5hbWUgYXJnX3R5cGU7IGdyYW1tYXIgPSBHcmFtbWFyLm9uZSBuYW1lIH1cbiAgOztcblxuICBsZXQgbWFwX2Fub25zIHQgfmYgPSB7IHAgPSB0LnAgPj58IGY7IGdyYW1tYXIgPSB0LmdyYW1tYXIgfVxuICBsZXQgbWF5YmUgdCA9IHsgcCA9IFBhcnNlci5tYXliZSB0LnA7IGdyYW1tYXIgPSBHcmFtbWFyLm1heWJlIHQuZ3JhbW1hciB9XG5cbiAgbGV0IG1heWJlX3dpdGhfZGVmYXVsdCBkZWZhdWx0IHQgPVxuICAgIGxldCB0ID0gbWF5YmUgdCBpblxuICAgIHsgdCB3aXRoIHAgPSAodC5wID4+fCBmdW4gdiAtPiBPcHRpb24udmFsdWUgfmRlZmF1bHQgdikgfVxuICA7O1xuXG4gIGxldCBzZXF1ZW5jZSB0ID0geyBwID0gUGFyc2VyLnNlcXVlbmNlIHQucDsgZ3JhbW1hciA9IEdyYW1tYXIubWFueSB0LmdyYW1tYXIgfVxuICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIgdCA9IHQyIHQgKHNlcXVlbmNlIHQpXG5cbiAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0IHQgPVxuICAgIGxldCB0ID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIgdCBpblxuICAgIHsgdCB3aXRoIHAgPSAodC5wID4+fCBmdW4gKHgsIHhzKSAtPiB4IDo6IHhzKSB9XG4gIDs7XG5cbiAgbGV0IGVzY2FwZSB0ID0geyBwID0gUGFyc2VyLnN0b3BfcGFyc2luZyB0LnA7IGdyYW1tYXIgPSB0LmdyYW1tYXIgfVxuXG4gIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgbGV0IGFkX2hvYyB+dXNhZ2VfYXJnID1cbiAgICAgIHsgcCA9XG4gICAgICAgICAgUGFyc2VyLnNlcXVlbmNlXG4gICAgICAgICAgICAoUGFyc2VyLm9uZSB+bmFtZTpcIldJTEwgTkVWRVIgQkUgUFJJTlRFRFwiIEFyZ190eXBlLkV4cG9ydC5zdHJpbmcpXG4gICAgICA7IGdyYW1tYXIgPSBHcmFtbWFyLmFkX2hvYyB+dXNhZ2U6dXNhZ2VfYXJnXG4gICAgICB9XG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIENtZGxpbmUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5pbFxuICAgIHwgQ29ucyBvZiBzdHJpbmcgKiB0XG4gICAgfCBDb21wbGV0ZSBvZiBzdHJpbmdcbiAgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICBsZXQgb2ZfbGlzdCBhcmdzID0gTGlzdC5mb2xkX3JpZ2h0IGFyZ3MgfmluaXQ6TmlsIH5mOihmdW4gYXJnIGFyZ3MgLT4gQ29ucyAoYXJnLCBhcmdzKSlcblxuICBsZXQgcmVjIHRvX2xpc3QgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IFtdXG4gICAgfCBDb25zICh4LCB4cykgLT4geCA6OiB0b19saXN0IHhzXG4gICAgfCBDb21wbGV0ZSB4IC0+IFsgeCBdXG4gIDs7XG5cbiAgbGV0IHJlYyBlbmRzX2luX2NvbXBsZXRlID0gZnVuY3Rpb25cbiAgICB8IENvbXBsZXRlIF8gLT4gdHJ1ZVxuICAgIHwgTmlsIC0+IGZhbHNlXG4gICAgfCBDb25zIChfLCBhcmdzKSAtPiBlbmRzX2luX2NvbXBsZXRlIGFyZ3NcbiAgOztcblxuICBsZXQgZXh0ZW5kIHQgfmV4dGVuZCB+cGF0aCA9XG4gICAgaWYgZW5kc19pbl9jb21wbGV0ZSB0XG4gICAgdGhlbiB0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcGF0aF9saXN0ID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OltdIChMaXN0LnRsIChQYXRoLnBhcnRzIHBhdGgpKSBpblxuICAgICAgb2ZfbGlzdCAodG9fbGlzdCB0IEAgZXh0ZW5kIHBhdGhfbGlzdCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIEtleV90eXBlID0gU2hhcGUuUHJpdmF0ZS5LZXlfdHlwZVxuXG5sZXQgYXNzZXJ0X25vX3VuZGVyc2NvcmVzIGtleV90eXBlIGZsYWdfb3Jfc3ViY29tbWFuZCA9XG4gIGlmIFN0cmluZy5leGlzdHMgZmxhZ19vcl9zdWJjb21tYW5kIH5mOihmdW4gYyAtPiBDaGFyLiggPSApIGMgJ18nKVxuICB0aGVuXG4gICAgZmFpbHdpdGhmXG4gICAgICBcIiVzICVzIGNvbnRhaW5zIGFuIHVuZGVyc2NvcmUuIFVzZSBhIGRhc2ggaW5zdGVhZC5cIlxuICAgICAgKEtleV90eXBlLnRvX3N0cmluZyBrZXlfdHlwZSlcbiAgICAgIGZsYWdfb3Jfc3ViY29tbWFuZFxuICAgICAgKClcbjs7XG5cbmxldCBub3JtYWxpemUga2V5X3R5cGUga2V5ID1cbiAgYXNzZXJ0X25vX3VuZGVyc2NvcmVzIGtleV90eXBlIGtleTtcbiAgbWF0Y2gga2V5X3R5cGUgd2l0aFxuICB8IEtleV90eXBlLkZsYWcgLT5cbiAgICBpZiBTdHJpbmcuZXF1YWwga2V5IFwiLVwiIHRoZW4gZmFpbHdpdGhmICFcImludmFsaWQgJXtLZXlfdHlwZX0gbmFtZTogJVNcIiBrZXlfdHlwZSBrZXkgKCk7XG4gICAgaWYgU3RyaW5nLmV4aXN0cyBrZXkgfmY6Q2hhci5pc193aGl0ZXNwYWNlXG4gICAgdGhlbiBmYWlsd2l0aGYgIVwiaW52YWxpZCAle0tleV90eXBlfSBuYW1lIChjb250YWlucyB3aGl0ZXNwYWNlKTogJVNcIiBrZXlfdHlwZSBrZXkgKCk7XG4gICAgaWYgU3RyaW5nLmlzX3ByZWZpeCB+cHJlZml4OlwiLVwiIGtleSB0aGVuIGtleSBlbHNlIFwiLVwiIF4ga2V5XG4gIHwgS2V5X3R5cGUuU3ViY29tbWFuZCAtPiBTdHJpbmcubG93ZXJjYXNlIGtleVxuOztcblxubGV0IGxvb2t1cF9leHBhbmQgPSBTaGFwZS5Qcml2YXRlLmxvb2t1cF9leHBhbmRcblxubGV0IGxvb2t1cF9leHBhbmRfd2l0aF9hbGlhc2VzIG1hcCBwcmVmaXgga2V5X3R5cGUgPVxuICBsZXQgYWxpc3QgPVxuICAgIExpc3QuY29uY2F0X21hcCAoTWFwLmRhdGEgbWFwKSB+ZjooZnVuIGZsYWcgLT5cbiAgICAgIGxldCB7IEZsYWcuSW50ZXJuYWwubmFtZVxuICAgICAgICAgIDsgYWxpYXNlc1xuICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgICA7IGFjdGlvbiA9IF9cbiAgICAgICAgICA7IGRvYyA9IF9cbiAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlcyA9IF9cbiAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IF9cbiAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmdcbiAgICAgICAgICB9XG4gICAgICAgID1cbiAgICAgICAgZmxhZ1xuICAgICAgaW5cbiAgICAgIGxldCBkYXRhID0gZmxhZywgbmFtZV9tYXRjaGluZyBpblxuICAgICAgbGV0IGFsaWFzZXMgPSBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCBAIGFsaWFzZXMgaW5cbiAgICAgIChuYW1lLCBkYXRhKSA6OiBMaXN0Lm1hcCBhbGlhc2VzIH5mOihmdW4gYWxpYXMgLT4gYWxpYXMsIGRhdGEpKVxuICBpblxuICBtYXRjaCBMaXN0LmZpbmRfYV9kdXAgYWxpc3QgfmNvbXBhcmU6KGZ1biAoczEsIF8pIChzMiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgczEgczIpIHdpdGhcbiAgfCBOb25lIC0+IGxvb2t1cF9leHBhbmQgYWxpc3QgcHJlZml4IGtleV90eXBlXG4gIHwgU29tZSAoZmxhZywgXykgLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgZmxhZ3MgbmFtZWQgJXNcIiBmbGFnICgpXG47O1xuXG5tb2R1bGUgQ29tbWFuZF9iYXNlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiAodW5pdCAtPiBzdHJpbmcpIG9wdGlvblxuICAgIDsgZmxhZ3MgOiBGbGFnLkludGVybmFsLnQgTWFwLk0oU3RyaW5nKS50XG4gICAgO1xuICAgICAgYW5vbnMgOiB1bml0IC0+IChbIGBQYXJzZV9hcmdzIF0gLT4gWyBgUnVuX21haW4gXSAtPiB1bml0KSBBbm9ucy5QYXJzZXIuQmFzaWMudFxuICAgIDsgdXNhZ2UgOiBBbm9ucy5HcmFtbWFyLnRcbiAgICB9XG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgc3ViY29tbWFuZF9jbXBfZnN0IChhLCBfKSAoYywgXykgPSBoZWxwX3NjcmVlbl9jb21wYXJlIGEgY1xuXG4gICAgbGV0IGZsYWdzX2hlbHAgPyhkaXNwbGF5X2hlbHBfZmxhZ3MgPSB0cnVlKSB0ID1cbiAgICAgIGxldCBmbGFncyA9IE1hcC5kYXRhIHQuZmxhZ3MgaW5cbiAgICAgIGxldCBmbGFncyA9XG4gICAgICAgIGlmIGRpc3BsYXlfaGVscF9mbGFnc1xuICAgICAgICB0aGVuIGZsYWdzXG4gICAgICAgIGVsc2UgTGlzdC5maWx0ZXIgZmxhZ3MgfmY6KGZ1biBmIC0+IFN0cmluZy4oIDw+ICkgZi5uYW1lIFwiLWhlbHBcIilcbiAgICAgIGluXG4gICAgICBMaXN0LmNvbmNhdF9tYXAgfmY6RmxhZy5JbnRlcm5hbC5EZXByZWNhdGVkLmhlbHAgZmxhZ3NcbiAgICA7O1xuICBlbmRcblxuICBsZXQgZm9ybWF0dGVkX2ZsYWdzIHQgPVxuICAgIE1hcC5kYXRhIHQuZmxhZ3NcbiAgICB8PiBMaXN0Lm1hcCB+ZjpGbGFnLkludGVybmFsLmFsaWduXG4gICAgKCogdGhpcyBzb3J0IHB1dHMgb3B0aW9uYWwgZmxhZ3MgYWZ0ZXIgcmVxdWlyZWQgb25lcyAqKVxuICAgIHw+IExpc3Quc29ydCB+Y29tcGFyZTooZnVuIGEgYiAtPiBTdHJpbmcuY29tcGFyZSBhLm5hbWUgYi5uYW1lKVxuICAgIHw+IFNoYXBlLkZsYWdfaGVscF9kaXNwbGF5LnNvcnRcbiAgOztcblxuICBsZXQgc2hhcGUgdCA6IFNoYXBlLkJhc2VfaW5mby50ID1cbiAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICA7IHJlYWRtZSA9IE9wdGlvbi5tYXAgdC5yZWFkbWUgfmY6KGZ1biByZWFkbWUgLT4gcmVhZG1lICgpKVxuICAgIDsgYW5vbnMgPSBHcmFtbWFyIHQudXNhZ2VcbiAgICA7IGZsYWdzID0gZm9ybWF0dGVkX2ZsYWdzIHRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHBhdGhfa2V5ID0gRW52LmtleV9jcmVhdGUgXCJwYXRoXCJcbiAgbGV0IGFyZ3Nfa2V5ID0gRW52LmtleV9jcmVhdGUgXCJhcmdzXCJcbiAgbGV0IGhlbHBfa2V5ID0gRW52LmtleV9jcmVhdGUgXCJoZWxwXCJcblxuICBsZXQgaW5kZW50X2J5XzIgc3RyID1cbiAgICBTdHJpbmcuc3BsaXQgfm9uOidcXG4nIHN0clxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gbGluZSAtPiBcIiAgXCIgXiBsaW5lKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiXG4gIDs7XG5cbiAgbGV0IGdldF9mbGFnX2FuZF9hY3Rpb24gdCBhcmcgPVxuICAgIG1hdGNoIGxvb2t1cF9leHBhbmRfd2l0aF9hbGlhc2VzIHQuZmxhZ3MgYXJnIEZsYWcgd2l0aFxuICAgIHwgRXJyb3IgbXNnIC0+IGRpZSBcIiVzXCIgbXNnICgpXG4gICAgfCBPayAoZmxhZ19uYW1lLCBmbGFnKSAtPiBmbGFnX25hbWUsIGZsYWcuYWN0aW9uXG4gIDs7XG5cbiAgbGV0IHJ1bl9mbGFnIHQgZW52IGFyZyAoYXJncyA6IENtZGxpbmUudCkgPVxuICAgIGxldCBmbGFnLCBhY3Rpb24gPSBnZXRfZmxhZ19hbmRfYWN0aW9uIHQgYXJnIGluXG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IFByaW50X2luZm9fYW5kX3F1aXQgaW5mbyAtPlxuICAgICAgbGV0IGNvbXBsZXRpbmcgPSBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJncyBpblxuICAgICAgKCogSWYgd2UncmUgZG9pbmcgY29tcGxldGlvbiwgdmVyc2lvbi9oZWxwIGluZm8gYXJlbid0IHVzZWZ1bCBjb21wbGV0aW9uXG4gICAgICAgICByZXNwb25zZXMuICopXG4gICAgICBpZiBjb21wbGV0aW5nXG4gICAgICB0aGVuIGVudiwgYXJnc1xuICAgICAgZWxzZSAoXG4gICAgICAgIHByaW50X2VuZGxpbmUgKGluZm8gZW52KTtcbiAgICAgICAgZXhpdCAwKVxuICAgIHwgTm9fYXJnIGYgLT4gZiBlbnYsIGFyZ3NcbiAgICB8IEFyZyAoZiwgY29tcCkgLT5cbiAgICAgIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICB8IE5pbCAtPiBkaWUgXCJtaXNzaW5nIGFyZ3VtZW50IGZvciBmbGFnICVzXCIgZmxhZyAoKVxuICAgICAgIHwgQ29ucyAoYXJnLCByZXN0KSAtPlxuICAgICAgICAgbGV0IGVudiA9XG4gICAgICAgICAgIHRyeSBmIGVudiBhcmcgd2l0aFxuICAgICAgICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgXyBhcyBlIC0+XG4gICAgICAgICAgICAgaWYgQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIHJlc3QgdGhlbiBlbnYgZWxzZSByYWlzZSBlXG4gICAgICAgICBpblxuICAgICAgICAgZW52LCByZXN0XG4gICAgICAgfCBDb21wbGV0ZSBwYXJ0IC0+IE5vdGhpbmcudW5yZWFjaGFibGVfY29kZSAoQ29tcGxldGVyLnJ1bl9hbmRfZXhpdCBjb21wIGVudiB+cGFydCkpXG4gICAgfCBSZXN0IChmLCBjb21wKSAtPlxuICAgICAgbGV0IGFyZ19saXN0ID0gQ21kbGluZS50b19saXN0IGFyZ3MgaW5cbiAgICAgIGlmIENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzXG4gICAgICB0aGVuIE5vdGhpbmcudW5yZWFjaGFibGVfY29kZSAoQ29tcGxldGVyLnJ1bl9hbmRfZXhpdCBjb21wIGVudiB+cGFydDphcmdfbGlzdCk7XG4gICAgICBmIGVudiBhcmdfbGlzdCwgTmlsXG4gIDs7XG5cbiAgbGV0IHJlYyBydW5fY21kbGluZSB0IGVudiBwYXJzZXIgKGNtZGxpbmUgOiBDbWRsaW5lLnQpIH5mb3JfY29tcGxldGlvbiB+cGFyc2VfZmxhZ3MgPVxuICAgIG1hdGNoIGNtZGxpbmUgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICBMaXN0Lml0ZXIgKE1hcC5kYXRhIHQuZmxhZ3MpIH5mOihmdW4gZmxhZyAtPiBmbGFnLmNoZWNrX2F2YWlsYWJsZSBlbnYpO1xuICAgICAgQW5vbnMuUGFyc2VyLmZpbmFsX3ZhbHVlIHBhcnNlciBlbnZcbiAgICB8IENvbXBsZXRlIHBhcnQgLT5cbiAgICAgIGlmIHBhcnNlX2ZsYWdzICYmIFN0cmluZy5pc19wcmVmaXggcGFydCB+cHJlZml4OlwiLVwiXG4gICAgICB0aGVuIChcbiAgICAgICAgTGlzdC5pdGVyIChNYXAua2V5cyB0LmZsYWdzKSB+ZjooZnVuIG5hbWUgLT5cbiAgICAgICAgICBpZiBTdHJpbmcuaXNfcHJlZml4IG5hbWUgfnByZWZpeDpwYXJ0IHRoZW4gcHJpbnRfZW5kbGluZSBuYW1lKTtcbiAgICAgICAgZXhpdCAwKVxuICAgICAgZWxzZSBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGUgKEFub25zLlBhcnNlci5jb21wbGV0ZSBwYXJzZXIgZW52IH5wYXJ0KVxuICAgIHwgQ29ucyAoYXJnLCBhcmdzKSAtPlxuICAgICAgbGV0IGFyZywgYXJncywgYXJnX2lzX2ZsYWcgPVxuICAgICAgICBtYXRjaCBwYXJzZV9mbGFncyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gYXJnLCBhcmdzLCBmYWxzZVxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAobWF0Y2ggYXJnLCBhcmdzIHdpdGhcbiAgICAgICAgICAgKCogdGhlICctYW5vbicgZmxhZyBpcyBoZXJlIGFzIGFuIGVzY2FwZSBoYXRjaCBpbiBjYXNlIHlvdSBoYXZlIGFuXG4gICAgICAgICAgICAgIGFub255bW91cyBhcmd1bWVudCB0aGF0IHN0YXJ0cyB3aXRoIGEgaHlwaGVuLiAqKVxuICAgICAgICAgICB8IFwiLWFub25cIiwgQ29ucyAoYXJnLCBhcmdzKSAtPiBhcmcsIGFyZ3MsIGZhbHNlXG4gICAgICAgICAgICgqIHN1cHBvcnQgdGhlIGNvbW1vbiBVbml4IGNvbnZlbnRpb24gd2hlcmUgXCItXCIgbWVhbnMgc3RkaW4gKilcbiAgICAgICAgICAgfCBcIi1cIiwgXyAtPiBhcmcsIGFyZ3MsIGZhbHNlXG4gICAgICAgICAgIHwgXywgXyAtPiBhcmcsIGFyZ3MsIFN0cmluZy5pc19wcmVmaXggYXJnIH5wcmVmaXg6XCItXCIpXG4gICAgICBpblxuICAgICAgKG1hdGNoIGFyZ19pc19mbGFnIHdpdGhcbiAgICAgICB8IHRydWUgLT5cbiAgICAgICAgIGxldCBlbnYsIGFyZ3MgPSBydW5fZmxhZyB0IGVudiBhcmcgYXJncyBpblxuICAgICAgICAgcnVuX2NtZGxpbmUgdCBlbnYgcGFyc2VyIGFyZ3MgfnBhcnNlX2ZsYWdzIH5mb3JfY29tcGxldGlvblxuICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgIGxldCBwYXJzZV9mbGFnczEgPSBwYXJzZV9mbGFncyBpblxuICAgICAgICAgbGV0ICh7IHBhcnNlcjsgcGFyc2VfZmxhZ3MgPSBwYXJzZV9mbGFnczI7IHVwZGF0ZV9lbnYgfVxuICAgICAgICAgICAgICA6IF8gQW5vbnMuUGFyc2VyLkNvbnN1bWVfcmVzdWx0LnQpXG4gICAgICAgICAgID1cbiAgICAgICAgICAgQW5vbnMuUGFyc2VyLmNvbnN1bWUgcGFyc2VyIGFyZyB+Zm9yX2NvbXBsZXRpb25cbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgZW52ID0gdXBkYXRlX2VudiBlbnYgaW5cbiAgICAgICAgIGxldCBwYXJzZV9mbGFncyA9IHBhcnNlX2ZsYWdzMSAmJiBwYXJzZV9mbGFnczIgaW5cbiAgICAgICAgIHJ1bl9jbWRsaW5lIHQgZW52IHBhcnNlciB+cGFyc2VfZmxhZ3MgYXJncyB+Zm9yX2NvbXBsZXRpb24pXG4gIDs7XG5cbiAgbGV0IHJ1bl9leG4gZXhuIH5mb3JfY29tcGxldGlvbiB+cGF0aCB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvciA9XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgXyB3aGVuIGZvcl9jb21wbGV0aW9uIC0+IGV4aXQgMFxuICAgIHwgRXhpdF9jYWxsZWQgeyBzdGF0dXMgfSAtPiBleGl0IHN0YXR1c1xuICAgIHwgXyAtPlxuICAgICAgbGV0IGV4bl9zdHIgPVxuICAgICAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnIC0+IG1zZ1xuICAgICAgICB8IF8gLT4gU2V4cC50b19zdHJpbmdfaHVtIFslc2V4cCAoZXhuIDogZXhuKV1cbiAgICAgIGluXG4gICAgICBsZXQgdmVyYm9zZSA9IE9wdGlvbi52YWx1ZSB2ZXJib3NlX29uX3BhcnNlX2Vycm9yIH5kZWZhdWx0OnRydWUgaW5cbiAgICAgIGxldCBlcnJvcl9tc2cgPVxuICAgICAgICBpZiB2ZXJib3NlXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgICAgICB+c2VwOlwiXFxuXFxuXCJcbiAgICAgICAgICAgIFsgXCJFcnJvciBwYXJzaW5nIGNvbW1hbmQgbGluZTpcIlxuICAgICAgICAgICAgOyBpbmRlbnRfYnlfMiBleG5fc3RyXG4gICAgICAgICAgICA7IFwiRm9yIHVzYWdlIGluZm9ybWF0aW9uLCBydW5cIlxuICAgICAgICAgICAgOyBcIiAgXCIgXiBQYXRoLnRvX3N0cmluZyBwYXRoIF4gXCIgLWhlbHBcXG5cIlxuICAgICAgICAgICAgXVxuICAgICAgICBlbHNlIGV4bl9zdHJcbiAgICAgIGluXG4gICAgICBwcmVycl9lbmRsaW5lIGVycm9yX21zZztcbiAgICAgIGV4aXQgMVxuICA7O1xuXG4gIGxldCBydW5cbiAgICAgICAgdFxuICAgICAgICBlbnZcbiAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICB+cGF0aFxuICAgICAgICB+YXJnc1xuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICB+aGVscF90ZXh0XG4gICAgICAgIH5vbl9mYWlsdXJlXG4gICAgPVxuICAgIGxldCBmb3JfY29tcGxldGlvbiA9IENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIGluXG4gICAgbGV0IGVudiA9XG4gICAgICBlbnZcbiAgICAgIHw+IEVudi5zZXQgfmtleTpwYXRoX2tleSB+ZGF0YTpwYXRoXG4gICAgICB8PiBFbnYuc2V0IH5rZXk6YXJnc19rZXkgfmRhdGE6KENtZGxpbmUudG9fbGlzdCBhcmdzKVxuICAgICAgfD4gRW52LnNldCB+a2V5OmhlbHBfa2V5IH5kYXRhOmhlbHBfdGV4dFxuICAgIGluXG4gICAgbWF0Y2hcbiAgICAgIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgIGxldCBtYWluID1cbiAgICAgICAgICBydW5fY21kbGluZSB0IGVudiAodC5hbm9ucyAoKSkgfmZvcl9jb21wbGV0aW9uIH5wYXJzZV9mbGFnczp0cnVlIGFyZ3NcbiAgICAgICAgaW5cbiAgICAgICAgbWFpbiBgUGFyc2VfYXJncylcbiAgICB3aXRoXG4gICAgfCBPayB0aHVuayAtPlxuICAgICAgd2hlbl9wYXJzaW5nX3N1Y2NlZWRzICgpO1xuICAgICAgdGh1bmsgYFJ1bl9tYWluXG4gICAgfCBFcnJvciBleG4gLT4gb25fZmFpbHVyZSBleG4gfmZvcl9jb21wbGV0aW9uIH5wYXRoIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gIDs7XG5cbiAgbW9kdWxlIFBhcmFtID0gc3RydWN0XG4gICAgdHlwZSArJ2EgdCA9XG4gICAgICB7IGYgOiB1bml0IC0+ICh1bml0IC0+ICdhIFBhcnNpbmdfb3V0Y29tZS50KSBBbm9ucy5QYXJzZXIuQmFzaWMudFxuICAgICAgOyB1c2FnZSA6IHVuaXQgLT4gQW5vbnMuR3JhbW1hci50XG4gICAgICA7IGZsYWdzIDogdW5pdCAtPiBGbGFnLkludGVybmFsLnQgbGlzdFxuICAgICAgfVxuXG4gICAgb3BlbiBBbm9ucy5QYXJzZXIuQmFzaWMuRm9yX29wZW5pbmdcblxuICAgIGxldCB3cmFwX3ZhbHVlIHYgKCkgPSBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyB2XG5cbiAgICBsZXQgYXBwbHkgZiB4ID1cbiAgICAgIHsgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHJldHVybiAoZnVuIGYgeCAoKSAtPlxuICAgICAgICAgICAgICAgKCogb3JkZXIgb2YgZXZhbHVhdGlvbiBoZXJlIGFmZmVjdHMgaW4gd2hhdCBvcmRlciB0aGUgdXNlcnMnIGNhbGxiYWNrc1xuICAgICAgICAgICAgICAgICAgYXJlIGV2YWx1YXRlZCwgc28gaXQncyBpbXBvcnRhbnQgdG8gY2FsbCBbZl0gYmVmb3JlIFt4XSAqKVxuICAgICAgICAgICAgICAgbGV0IGZfb3V0Y29tZSA9IGYgKCkgaW5cbiAgICAgICAgICAgICAgIGxldCB4X291dGNvbWUgPSB4ICgpIGluXG4gICAgICAgICAgICAgICBQYXJzaW5nX291dGNvbWUuYXBwbHkgZl9vdXRjb21lIHhfb3V0Y29tZSlcbiAgICAgICAgICAgICA8Kj4gZi5mICgpXG4gICAgICAgICAgICAgPCo+IHguZiAoKSlcbiAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IHguZmxhZ3MgKCkgQCBmLmZsYWdzICgpKVxuICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci5jb25jYXQgWyBmLnVzYWdlICgpOyB4LnVzYWdlICgpIF0pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBlbXB0eV9zcGVjIDogJ20uICgnbSAtPiAnbSkgdCA9XG4gICAgICB7IGYgPSAoZnVuICgpIC0+IHJldHVybiAoZnVuICgpIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIEZuLmlkKSlcbiAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgbWFwX291dGNvbWUgeCB+ZiA9XG4gICAgICB7IGYgPVxuICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICB4LmYgKClcbiAgICAgICAgICAgICA+PnwgZnVuIHggKCkgLT5cbiAgICAgICAgICAgICBsZXQgeF9vdXRjb21lID0geCAoKSBpblxuICAgICAgICAgICAgIGYgeF9vdXRjb21lKVxuICAgICAgOyBmbGFncyA9IHguZmxhZ3NcbiAgICAgIDsgdXNhZ2UgPSB4LnVzYWdlXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBtYXAgeCB+ZiA9IG1hcF9vdXRjb21lIHggfmY6KFBhcnNpbmdfb3V0Y29tZS5tYXAgfmYpXG5cbiAgICBsZXQgbG9va3VwIGtleSA9XG4gICAgICB7IGYgPVxuICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICBBbm9ucy5QYXJzZXIuQmFzaWMuZnJvbV9lbnYgKGZ1biBlbnYgLT4gRW52LmZpbmRfZXhuIGVudiBrZXkpID4+fCB3cmFwX3ZhbHVlKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBwYXRoIDogUGF0aC50IHQgPSBsb29rdXAgcGF0aF9rZXlcbiAgICBsZXQgYXJncyA6IHN0cmluZyBsaXN0IHQgPSBsb29rdXAgYXJnc19rZXlcbiAgICBsZXQgaGVscCA6IHN0cmluZyBMYXp5LnQgdCA9IGxvb2t1cCBoZWxwX2tleVxuXG4gICAgKCogVGhpcyBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSwgZm9yIHRoZSBoZWxwIGNvbW1hbmQuICopXG4gICAgbGV0IGVudiA9XG4gICAgICB7IGYgPSAoZnVuICgpIC0+IEFub25zLlBhcnNlci5CYXNpYy5mcm9tX2VudiAoZnVuIGVudiAtPiBlbnYpID4+fCB3cmFwX3ZhbHVlKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBtb2R1bGUgQXJnX3R5cGUgPSBBcmdfdHlwZVxuICAgICAgaW5jbHVkZSBBcmdfdHlwZS5FeHBvcnRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBvcGVuIEFub25zXG5cbiAgICAgIGxldCAoICU6ICkgPSAoICU6IClcbiAgICAgIGxldCBtYXBfYW5vbnMgPSBtYXBfYW5vbnNcbiAgICAgIGxldCBtYXliZSA9IG1heWJlXG4gICAgICBsZXQgbWF5YmVfd2l0aF9kZWZhdWx0ID0gbWF5YmVfd2l0aF9kZWZhdWx0XG4gICAgICBsZXQgc2VxdWVuY2UgPSBzZXF1ZW5jZVxuICAgICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXJcbiAgICAgIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0XG4gICAgICBsZXQgdDIgPSB0MlxuICAgICAgbGV0IHQzID0gdDNcbiAgICAgIGxldCB0NCA9IHQ0XG5cbiAgICAgIGxldCBhbm9uIHNwZWMgPVxuICAgICAgICBBbm9ucy5HcmFtbWFyLmludmFyaWFudCBzcGVjLmdyYW1tYXI7XG4gICAgICAgIHsgZiA9IChmdW4gKCkgLT4gc3BlYy5wID4+fCBmdW4gb3V0Y29tZSAoKSAtPiBvdXRjb21lKVxuICAgICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gc3BlYy5ncmFtbWFyKVxuICAgICAgICB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGVzY2FwZV9hbm9uIH5maW5hbF9hbm9uID1cbiAgICAgIEFub25zLmVzY2FwZSAodDIgZmluYWxfYW5vbiAoc2VxdWVuY2UgKFwiQVJHXCIgJTogc3RyaW5nKSkpIHw+IGFub25cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG9wZW4gRmxhZ1xuXG4gICAgICBsZXQgbWFwX2ZsYWcgPSBtYXBfZmxhZ1xuICAgICAgbGV0IGVzY2FwZSA9IGVzY2FwZVxuICAgICAgbGV0IGVzY2FwZV93aXRoX2F1dG9jb21wbGV0ZSA9IGVzY2FwZV93aXRoX2F1dG9jb21wbGV0ZVxuICAgICAgbGV0IGxpc3RlZCA9IGxpc3RlZFxuICAgICAgbGV0IG9uZV9vcl9tb3JlX2FzX3BhaXIgPSBvbmVfb3JfbW9yZV9hc19wYWlyXG4gICAgICBsZXQgb25lX29yX21vcmVfYXNfbGlzdCA9IG9uZV9vcl9tb3JlX2FzX2xpc3RcbiAgICAgIGxldCBub19hcmcgPSBub19hcmdcbiAgICAgIGxldCBub19hcmdfcmVxdWlyZWQgPSBub19hcmdfcmVxdWlyZWRcbiAgICAgIGxldCBub19hcmdfcmVnaXN0ZXIgPSBub19hcmdfcmVnaXN0ZXJcbiAgICAgIGxldCBub19hcmdfYWJvcnQgPSBub19hcmdfYWJvcnRcbiAgICAgIGxldCBub19hcmdfc29tZSA9IG5vX2FyZ19zb21lXG4gICAgICBsZXQgb3B0aW9uYWwgPSBvcHRpb25hbFxuICAgICAgbGV0IG9wdGlvbmFsX3dpdGhfZGVmYXVsdCA9IG9wdGlvbmFsX3dpdGhfZGVmYXVsdFxuICAgICAgbGV0IHJlcXVpcmVkID0gcmVxdWlyZWRcblxuICAgICAgbGV0IGZsYWdfaW50ZXJuYWxcbiAgICAgICAgICAgID8oYWxpYXNlcyA9IFtdKVxuICAgICAgICAgICAgP2Z1bGxfZmxhZ19yZXF1aXJlZFxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgbW9kZVxuICAgICAgICAgICAgfmRvY1xuICAgICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwXG4gICAgICAgID1cbiAgICAgICAgbGV0IG5vcm1hbGl6ZSBmbGFnID0gbm9ybWFsaXplIEtleV90eXBlLkZsYWcgZmxhZyBpblxuICAgICAgICBsZXQgbmFtZSA9IG5vcm1hbGl6ZSBuYW1lIGluXG4gICAgICAgIGxldCBhbGlhc2VzID0gTGlzdC5tYXAgfmY6bm9ybWFsaXplIGFsaWFzZXMgaW5cbiAgICAgICAgbGV0IHsgcmVhZDsgYWN0aW9uOyBudW1fb2NjdXJyZW5jZXM7IGV4dHJhX2RvYyB9ID0gbW9kZSBuYW1lIGluXG4gICAgICAgIGxldCBjaGVja19hdmFpbGFibGUgPVxuICAgICAgICAgIG1hdGNoIG51bV9vY2N1cnJlbmNlcy5hdF9sZWFzdF9vbmNlIHdpdGhcbiAgICAgICAgICB8IGZhbHNlIC0+IChpZ25vcmUgOiBVbml2X21hcC50IC0+IHVuaXQpXG4gICAgICAgICAgfCB0cnVlIC0+IGZ1biBlbnYgLT4gaWdub3JlIChyZWFkIGVudiA6IF8pXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuYW1lX21hdGNoaW5nID1cbiAgICAgICAgICBpZiBPcHRpb24uaXNfc29tZSBmdWxsX2ZsYWdfcmVxdWlyZWQgdGhlbiBgRnVsbF9tYXRjaF9yZXF1aXJlZCBlbHNlIGBQcmVmaXhcbiAgICAgICAgaW5cbiAgICAgICAgeyBmID1cbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgIEFub25zLlBhcnNlci5CYXNpYy5mcm9tX2VudiAoZnVuIGVudiAtPiByZWFkIGVudikgPj58IGZ1biB2ICgpIC0+IHYpXG4gICAgICAgIDsgZmxhZ3MgPVxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgWyB7IG5hbWVcbiAgICAgICAgICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgICAgICAgICAgOyBkb2MgPVxuICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGZvcmNlIGV4dHJhX2RvYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGV4dHJhX2RvYyAtPiBbJXN0cmluZyBcIiV7ZG9jfSAle2V4dHJhX2RvY31cIl1cbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZG9jKVxuICAgICAgICAgICAgICAgICA7IGFjdGlvblxuICAgICAgICAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlc1xuICAgICAgICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZVxuICAgICAgICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmdcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgXSlcbiAgICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgZmxhZyA9IGZsYWdfaW50ZXJuYWwgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOltdXG5cbiAgICAgIGxldCBmbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2NcbiAgICAgICAgICAgID9hbGlhc2VzXG4gICAgICAgICAgICA/ZnVsbF9mbGFnX3JlcXVpcmVkXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICBhcmdfdHlwZVxuICAgICAgICAgICAgc2V4cF9vZl9kZWZhdWx0XG4gICAgICAgICAgICB+ZGVmYXVsdFxuICAgICAgICAgICAgfmRvY1xuICAgICAgICA9XG4gICAgICAgIGxldCBkb2MgPVxuICAgICAgICAgIG1hdGNoIHNleHBfb2ZfZGVmYXVsdCBkZWZhdWx0IHdpdGhcbiAgICAgICAgICB8IFNleHAuQXRvbSBcIl9cIiAtPiBkb2NcbiAgICAgICAgICB8IGRlZmF1bHRfc2V4cCAtPiBzcHJpbnRmICFcIiVzIChkZWZhdWx0OiAle1NleHB9KVwiIGRvYyBkZWZhdWx0X3NleHBcbiAgICAgICAgaW5cbiAgICAgICAgZmxhZ1xuICAgICAgICAgID9hbGlhc2VzXG4gICAgICAgICAgP2Z1bGxfZmxhZ19yZXF1aXJlZFxuICAgICAgICAgIG5hbWVcbiAgICAgICAgICAob3B0aW9uYWxfd2l0aF9kZWZhdWx0IGRlZmF1bHQgYXJnX3R5cGUpXG4gICAgICAgICAgfmRvY1xuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCByZXR1cm4gdiA9XG4gICAgICB7IGYgPSAoZnVuICgpIC0+IHJldHVybiAoZnVuICgpIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIHYpKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCByZWNvdmVyX2Zyb21fbWlzc2luZ19yZXF1aXJlZF9mbGFncyB0ID1cbiAgICAgIHsgdCB3aXRoXG4gICAgICAgIGYgPVxuICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICB0LmYgKClcbiAgICAgICAgICAgICA+PnwgZnVuIGYgKCkgLT5cbiAgICAgICAgICAgICBsZXQgb3V0Y29tZSA9IGYgKCkgaW5cbiAgICAgICAgICAgICBQYXJzaW5nX291dGNvbWUucmVjb3Zlcl9mcm9tX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3Mgb3V0Y29tZSlcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIHQgPVxuICAgICAgeyB0IHdpdGhcbiAgICAgICAgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHQuZiAoKVxuICAgICAgICAgICAgID4+fCBmdW4gZiAoKSAtPlxuICAgICAgICAgICAgIGxldCBvdXRjb21lID0gZiAoKSBpblxuICAgICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5pbnRyb2R1Y2VfbWlzc2luZ19yZXF1aXJlZF9mbGFncyBvdXRjb21lKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgb3B0aW9uYWxfdG9fcmVxdWlyZWQgdCA9XG4gICAgICB7IHQgd2l0aFxuICAgICAgICBmID1cbiAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgdC5mICgpXG4gICAgICAgICAgICAgPj58IGZ1biBmICgpIC0+XG4gICAgICAgICAgICAgbGV0IG91dGNvbWUgPSBmICgpIGluXG4gICAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLmludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAoUGFyc2luZ19vdXRjb21lLm1hcCBvdXRjb21lIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgKEVycm9yLm9mX3N0cmluZyBcIltvcHRpb25hbF90b19yZXF1aXJlZF0gZ290IGEgW05vbmVdIHJlc3VsdFwiKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+IE9rIHYpKSlcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICAgIGxldCBhcHBseSA9IGFwcGx5XG4gICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgZW5kKVxuXG4gICAgbGV0IGFyZ19uYW1lcyB0ID1cbiAgICAgIGxldCBmbGFncyA9IEZsYWcuSW50ZXJuYWwuY3JlYXRlICh0LmZsYWdzICgpKSBpblxuICAgICAgbGV0IGZsYWdfbmFtZXMgPSBNYXAua2V5cyBmbGFncyBpblxuICAgICAgbGV0IGFub25fbmFtZXMgPSBBbm9ucy5HcmFtbWFyLm5hbWVzICh0LnVzYWdlICgpKSBpblxuICAgICAgTGlzdC5jb25jYXQgWyBmbGFnX25hbWVzOyBhbm9uX25hbWVzIF1cbiAgICA7O1xuXG4gICAgbGV0IHJlcXVpcmVkX2FyZ19uYW1lcyB0ID1cbiAgICAgIGxldCBmbGFncyA9IEZsYWcuSW50ZXJuYWwuY3JlYXRlICh0LmZsYWdzICgpKSBpblxuICAgICAgTGlzdC5maWx0ZXJfbWFwIChNYXAudG9fYWxpc3QgZmxhZ3MpIH5mOihmdW4gKG5hbWUsIGZsYWcpIC0+XG4gICAgICAgIGlmIGZsYWcubnVtX29jY3VycmVuY2VzLmF0X2xlYXN0X29uY2UgdGhlbiBTb21lIG5hbWUgZWxzZSBOb25lKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgQ2hvb3NlX29uZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSBwYXJhbSA9ICdhIHRcblxuICAgICAgbW9kdWxlIENob2ljZV9uYW1lIDogc2lnXG4gICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICAgICAgdmFsIGxpc3RfdG9fc3RyaW5nIDogdCBsaXN0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgY3JlYXRlX2V4biA6ICdhIHBhcmFtIC0+IHRcbiAgICAgICAgdmFsIGVudW1lcmF0ZV9yZXF1aXJlZF9mbGFncyA6IHQgLT4gZXhjZXB0OnN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gICAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgeyBhbGxfYXJncyA6IHN0cmluZyBsaXN0XG4gICAgICAgICAgICA7IHJlcXVpcmVkX2FyZ3MgOiBzdHJpbmcgbGlzdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICBsZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKHQuYWxsX2FyZ3MgOiBzdHJpbmcgbGlzdCldXG4gICAgICAgIGVuZFxuXG4gICAgICAgIGluY2x1ZGUgVFxuICAgICAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuICAgICAgICBsZXQgY3JlYXRlX2V4biBwYXJhbSA9XG4gICAgICAgICAgbGV0IHJlcXVpcmVkX2FyZ3MgPSByZXF1aXJlZF9hcmdfbmFtZXMgcGFyYW0gaW5cbiAgICAgICAgICBsZXQgbmFtZXMgPSBhcmdfbmFtZXMgcGFyYW0gaW5cbiAgICAgICAgICBsZXQgbmFtZXNfd2l0aF9jb21tYXMgPSBMaXN0LmZpbHRlciBuYW1lcyB+ZjooZnVuIHMgLT4gU3RyaW5nLmNvbnRhaW5zIHMgJywnKSBpblxuICAgICAgICAgIGlmIG5vdCAoTGlzdC5pc19lbXB0eSBuYW1lc193aXRoX2NvbW1hcylcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBFcnJvci5jcmVhdGVcbiAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICBcIkZvciBzaW1wbGljaXR5LCBbQ29tbWFuZC5TcGVjLmNob29zZV9vbmVdIGRvZXMgbm90IHN1cHBvcnQgbmFtZXMgd2l0aCBcXFxuICAgICAgICAgICAgICAgY29tbWFzLlwiXG4gICAgICAgICAgICAgIG5hbWVzX3dpdGhfY29tbWFzXG4gICAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nIGxpc3RdXG4gICAgICAgICAgICB8PiBFcnJvci5yYWlzZTtcbiAgICAgICAgICBtYXRjaCBuYW1lcyB3aXRoXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgICBbJW1lc3NhZ2UgXCJbY2hvb3NlX29uZV0gZXhwZWN0cyBjaG9pY2VzIHRvIHJlYWQgY29tbWFuZC1saW5lIGFyZ3VtZW50cy5cIl1cbiAgICAgICAgICB8IF8gOjogXyAtPiB7IGFsbF9hcmdzID0gbmFtZXM7IHJlcXVpcmVkX2FyZ3MgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgICAgbWF0Y2ggdC5yZXF1aXJlZF9hcmdzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiB0LmFsbF9hcmdzXG4gICAgICAgICAgfCBfIDo6IF8gLT4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIHQucmVxdWlyZWRfYXJnc1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBlbnVtZXJhdGVfcmVxdWlyZWRfZmxhZ3MgdCB+ZXhjZXB0ID1cbiAgICAgICAgICBtYXRjaCBMaXN0LmZpbHRlciB0LnJlcXVpcmVkX2FyZ3MgfmY6KGZ1biB4IC0+IG5vdCAoU3RyaW5nLmVxdWFsIGV4Y2VwdCB4KSkgd2l0aFxuICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgIHwgXyA6OiBfIGFzIGwgLT4gU29tZSAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIGwpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGxpc3RfdG9fc3RyaW5nIHRzID0gTGlzdC5tYXAgdHMgfmY6dG9fc3RyaW5nIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcbiAgXCJcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgSWZfbm90aGluZ19jaG9zZW4gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoXywgXykgdCA9XG4gICAgICAgICAgfCBEZWZhdWx0X3RvIDogJ2EgLT4gKCdhLCAnYSkgdFxuICAgICAgICAgIHwgUmFpc2UgOiAoJ2EsICdhKSB0XG4gICAgICAgICAgfCBSZXR1cm5fbm9uZSA6ICgnYSwgJ2Egb3B0aW9uKSB0XG4gICAgICBlbmRcblxuICAgICAgbGV0IGNob29zZV9vbmVfbm9uX29wdGlvbmFsXG4gICAgICAgICAgICAodHlwZSBhIGIpXG4gICAgICAgICAgICA/KG5ld19iZWhhdmlvciA9IHRydWUpXG4gICAgICAgICAgICAodHMgOiBhIHBhcmFtIGxpc3QpXG4gICAgICAgICAgICB+KGlmX25vdGhpbmdfY2hvc2VuIDogKGEsIGIpIElmX25vdGhpbmdfY2hvc2VuLnQpXG4gICAgICAgID1cbiAgICAgICAgbGV0IGZpeF9mbGFnIHQgPVxuICAgICAgICAgIGlmIG5ld19iZWhhdmlvclxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5hbWVfb2ZfdGhlX2dyb3VwID0gQ2hvaWNlX25hbWUuY3JlYXRlX2V4biB0IGluXG4gICAgICAgICAgICBsZXQgZml4X251bV9vY2N1cnJlbmNlcyBmbGFnID1cbiAgICAgICAgICAgICAgeyBmbGFnIHdpdGhcbiAgICAgICAgICAgICAgICBGbGFnLkludGVybmFsLm51bV9vY2N1cnJlbmNlcyA9XG4gICAgICAgICAgICAgICAgICB7IGZsYWcuRmxhZy5JbnRlcm5hbC5udW1fb2NjdXJyZW5jZXMgd2l0aCBhdF9sZWFzdF9vbmNlID0gZmFsc2UgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBhbmQgZml4X2RvYyBmbGFnID1cbiAgICAgICAgICAgICAgeyBmbGFnIHdpdGhcbiAgICAgICAgICAgICAgICBGbGFnLkludGVybmFsLmRvYyA9XG4gICAgICAgICAgICAgICAgICBzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIFwiJXMlc1wiXG4gICAgICAgICAgICAgICAgICAgIGZsYWcuRmxhZy5JbnRlcm5hbC5kb2NcbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgIENob2ljZV9uYW1lLmVudW1lcmF0ZV9yZXF1aXJlZF9mbGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNlcHQ6ZmxhZy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV9vZl90aGVfZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZ3JvdXAgLT4gc3ByaW50ZiBcIiBbcmVxdWlyZXM6IFxcXCIlc1xcXCJdXCIgZ3JvdXApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFuZCBtYWtlX2Fub25zX29wdGlvbmFsIChhbm9uIDogQW5vbnMuR3JhbW1hci50KSA9XG4gICAgICAgICAgICAgIEFub25zLkdyYW1tYXIubWF5YmVfaWRlbXBvdGVudCBhbm9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyB0IHdpdGhcbiAgICAgICAgICAgICAgdXNhZ2UgPSAoZnVuICgpIC0+IG1ha2VfYW5vbnNfb3B0aW9uYWwgKHQudXNhZ2UgKCkpKVxuICAgICAgICAgICAgOyBmbGFncyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgIExpc3QubWFwICh0LmZsYWdzICgpKSB+ZjooZnVuIGZsYWdfaW50ZXJuYWwgLT5cbiAgICAgICAgICAgICAgICAgICAgIGZsYWdfaW50ZXJuYWwgfD4gZml4X251bV9vY2N1cnJlbmNlcyB8PiBmaXhfZG9jKSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgZWxzZSB0XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgTGlzdC5tYXAgdHMgfmY6KGZ1biB0IC0+IENob2ljZV9uYW1lLmNyZWF0ZV9leG4gdCwgZml4X2ZsYWcgdClcbiAgICAgICAgICB8PiBNYXAub2ZfYWxpc3QgKG1vZHVsZSBDaG9pY2VfbmFtZSlcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGBEdXBsaWNhdGVfa2V5IG5hbWUgLT5cbiAgICAgICAgICBFcnJvci5jcmVhdGVcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwiW0NvbW1hbmQuU3BlYy5jaG9vc2Vfb25lXSBjYWxsZWQgd2l0aCBkdXBsaWNhdGUgbmFtZVwiXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICBbJXNleHBfb2Y6IENob2ljZV9uYW1lLnRdXG4gICAgICAgICAgfD4gRXJyb3IucmFpc2VcbiAgICAgICAgfCBgT2sgdHMgLT5cbiAgICAgICAgICBNYXAuZm9sZCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjooZnVuIH5rZXk6bmFtZSB+ZGF0YTp0IGFjYyAtPlxuICAgICAgICAgICAgbWFwMlxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgKHJlY292ZXJfZnJvbV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIHQpXG4gICAgICAgICAgICAgIH5mOihmdW4gYWNjIHsgcmVzdWx0ID0gdmFsdWU7IGhhc19hcmcgfSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGhhc19hcmcgd2l0aFxuICAgICAgICAgICAgICAgIHwgZmFsc2UgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCB0cnVlIC0+IChuYW1lLCB2YWx1ZSkgOjogYWNjKSlcbiAgICAgICAgICB8PiBtYXAgfmY6KGZ1biB2YWx1ZV9saXN0IC0+XG4gICAgICAgICAgICBsZXQgYXJnX2NvdW50ZXIgPSBMaXN0Lmxlbmd0aCB2YWx1ZV9saXN0IGluXG4gICAgICAgICAgICBsZXQgbWlzc2luZ19mbGFnX2Vycm9yIGZtdCA9XG4gICAgICAgICAgICAgIGtzcHJpbnRmXG4gICAgICAgICAgICAgICAgKGZ1biBtc2cgKCkgLT4gRXJyb3IgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIChFcnJvci5vZl9zdHJpbmcgbXNnKSkpXG4gICAgICAgICAgICAgICAgZm10XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG1vcmVfdGhhbl9vbmVfZXJyb3IgcGFzc2VkID1cbiAgICAgICAgICAgICAgZGllXG4gICAgICAgICAgICAgICAgIVwiQ2Fubm90IHBhc3MgbW9yZSB0aGFuIG9uZSBvZiB0aGVzZTogXFxuXFxcbiAgICAgICAgICAgICAgICAgXFwgICV7Q2hvaWNlX25hbWUubGlzdF90b19zdHJpbmd9XCJcbiAgICAgICAgICAgICAgICAoTGlzdC5tYXAgcGFzc2VkIH5mOmZzdClcbiAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgYW5kIHN1Y2Nlc3NfbGlzdCwgZXJyb3JfbGlzdCA9XG4gICAgICAgICAgICAgIExpc3QucGFydGl0aW9uX21hcCB2YWx1ZV9saXN0IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgbmFtZSwgT2sgdmFsdWUgLT4gRmlyc3QgKG5hbWUsIHZhbHVlKVxuICAgICAgICAgICAgICAgIHwgbmFtZSwgRXJyb3IgZXJyIC0+IFNlY29uZCAobmFtZSwgZXJyKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXRjaCBzdWNjZXNzX2xpc3Qgd2l0aFxuICAgICAgICAgICAgfCBfIDo6IF8gOjogXyBhcyBwYXNzZWQgLT4gbW9yZV90aGFuX29uZV9lcnJvciBwYXNzZWRcbiAgICAgICAgICAgIHwgWyAoXywgKHZhbHVlIDogYSkpIF0gLT5cbiAgICAgICAgICAgICAgaWYgYXJnX2NvdW50ZXIgPiAxXG4gICAgICAgICAgICAgIHRoZW4gbW9yZV90aGFuX29uZV9lcnJvciB2YWx1ZV9saXN0XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBPa1xuICAgICAgICAgICAgICAgICAgKG1hdGNoIGlmX25vdGhpbmdfY2hvc2VuIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IERlZmF1bHRfdG8gKF8gOiBhKSAtPiAodmFsdWUgOiBiKVxuICAgICAgICAgICAgICAgICAgIHwgUmFpc2UgLT4gKHZhbHVlIDogYilcbiAgICAgICAgICAgICAgICAgICB8IFJldHVybl9ub25lIC0+IChTb21lIHZhbHVlIDogYikpXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBlcnJvcl9saXN0IHdpdGhcbiAgICAgICAgICAgICAgIHwgWyAobmFtZSwgYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgZXJyKSBdIC0+XG4gICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAgICAgICAgKEVycm9yLm9mX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJOb3QgYWxsIGZsYWdzIGluIGdyb3VwIFxcXCIlc1xcXCIgYXJlIGdpdmVuOiAlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKENob2ljZV9uYW1lLnRvX3N0cmluZyBuYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFcnJvci50b19zdHJpbmdfaHVtIGVycikpKSlcbiAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggaWZfbm90aGluZ19jaG9zZW4gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBEZWZhdWx0X3RvIHZhbHVlIC0+IE9rIHZhbHVlXG4gICAgICAgICAgICAgICAgICB8IFJldHVybl9ub25lIC0+IE9rIE5vbmVcbiAgICAgICAgICAgICAgICAgIHwgUmFpc2UgLT5cbiAgICAgICAgICAgICAgICAgICAgbWlzc2luZ19mbGFnX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgIVwiTXVzdCBwYXNzIG9uZSBvZiB0aGVzZTpcXG4gICV7Q2hvaWNlX25hbWUubGlzdF90b19zdHJpbmd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAoTWFwLmtleXMgdHMpXG4gICAgICAgICAgICAgICAgICAgICAgKCkpKSlcbiAgICAgICAgICB8PiBpbnRyb2R1Y2VfbWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgICAgOztcblxuICAgICAgbGV0IGNob29zZV9vbmVcbiAgICAgICAgICAgICh0eXBlIGEgYilcbiAgICAgICAgICAgICh0cyA6IGEgb3B0aW9uIHBhcmFtIGxpc3QpXG4gICAgICAgICAgICB+KGlmX25vdGhpbmdfY2hvc2VuIDogKGEsIGIpIElmX25vdGhpbmdfY2hvc2VuLnQpXG4gICAgICAgID1cbiAgICAgICAgY2hvb3NlX29uZV9ub25fb3B0aW9uYWxcbiAgICAgICAgICB+bmV3X2JlaGF2aW9yOmZhbHNlXG4gICAgICAgICAgfmlmX25vdGhpbmdfY2hvc2VuXG4gICAgICAgICAgKExpc3QubWFwIHRzIH5mOihmdW4gdCAtPlxuICAgICAgICAgICAgIG1hcF9vdXRjb21lIHQgfmY6KGZ1biB7IFBhcnNpbmdfb3V0Y29tZS5yZXN1bHQ7IGhhc19hcmcgfSAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgICAgIHwgT2sgKFNvbWUgdmFsdWUpIC0+IHsgUGFyc2luZ19vdXRjb21lLnJlc3VsdCA9IE9rIHZhbHVlOyBoYXNfYXJnID0gdHJ1ZSB9XG4gICAgICAgICAgICAgICB8IE9rIE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgeyBoYXNfYXJnID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgOyByZXN1bHQgPVxuICAgICAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIChFcnJvci5vZl9zdHJpbmcgXCJtaXNzaW5nIHJlcXVpcmVkIGZsYWdcIikpXG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIHwgRXJyb3IgXyBhcyByZXN1bHQgLT4geyBoYXNfYXJnOyByZXN1bHQgfSkpKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IENob29zZV9vbmUuSWZfbm90aGluZ19jaG9zZW5cblxuICAgIGxldCBjaG9vc2Vfb25lID0gQ2hvb3NlX29uZS5jaG9vc2Vfb25lXG5cbiAgICBsZXQgY2hvb3NlX29uZV9ub25fb3B0aW9uYWwgbHN0IH5pZl9ub3RoaW5nX2Nob3NlbiA9XG4gICAgICBDaG9vc2Vfb25lLmNob29zZV9vbmVfbm9uX29wdGlvbmFsIGxzdCB+aWZfbm90aGluZ19jaG9zZW5cbiAgICA7O1xuXG4gICAgbGV0IGFuZF9hcmdfbmFtZXMgdCA9IG1hcCB0IH5mOihmdW4gdmFsdWUgLT4gdmFsdWUsIGFyZ19uYW1lcyB0KVxuXG4gICAgbGV0IGFuZF9hcmdfbmFtZSB0ID1cbiAgICAgIG1hdGNoIGFyZ19uYW1lcyB0IHdpdGhcbiAgICAgIHwgWyBuYW1lIF0gLT4gbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPiB2YWx1ZSwgbmFtZSlcbiAgICAgIHwgbmFtZXMgLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJbYW5kX2FyZ19uYW1lXSBleHBlY3RzIGV4YWN0bHkgb25lIG5hbWUsIGdvdFwiIH5fOihuYW1lcyA6IHN0cmluZyBsaXN0KV1cbiAgICA7O1xuXG4gICAgbGV0IHBhcnNlIHsgZmxhZ3M7IHVzYWdlID0gXzsgZiB9IGFyZ3MgPVxuICAgICAgbGV0IGNtZGxpbmUgPSBDbWRsaW5lLm9mX2xpc3QgYXJncyBpblxuICAgICAgbGV0IHJlc3VsdCA9IHJlZiBOb25lIGluXG4gICAgICBydW5cbiAgICAgICAgeyBzdW1tYXJ5ID0gXCJcIlxuICAgICAgICA7IHJlYWRtZSA9IE5vbmVcbiAgICAgICAgOyBmbGFncyA9IGZsYWdzICgpIHw+IEZsYWcuSW50ZXJuYWwuY3JlYXRlXG4gICAgICAgIDsgYW5vbnMgPVxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgbGV0IG9wZW4gQW5vbnMuUGFyc2VyLkJhc2ljLkZvcl9vcGVuaW5nIGluXG4gICAgICAgICAgICAgICBmICgpXG4gICAgICAgICAgICAgICA+PnwgZnVuIHBhcmFtcyBgUGFyc2VfYXJncyBgUnVuX21haW4gLT5cbiAgICAgICAgICAgICAgIGxldCBvdXRjb21lID0gcGFyYW1zICgpIGluXG4gICAgICAgICAgICAgICBtYXRjaCBvdXRjb21lLnJlc3VsdCB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIChgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBlcnIpIC0+IHJlc3VsdCA6PSBTb21lIChFcnJvciBlcnIpXG4gICAgICAgICAgICAgICB8IE9rIHggLT4gcmVzdWx0IDo9IFNvbWUgKE9rIHgpKVxuICAgICAgICA7IHVzYWdlID0gQW5vbnMuR3JhbW1hci56ZXJvXG4gICAgICAgIH1cbiAgICAgICAgVW5pdl9tYXAuZW1wdHlcbiAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkczpGbi5pZFxuICAgICAgICB+YXJnczpjbWRsaW5lXG4gICAgICAgIH5wYXRoOlBhdGguZW1wdHlcbiAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3I6KFNvbWUgdHJ1ZSlcbiAgICAgICAgfmhlbHBfdGV4dDoobGF6eSBcIk5vIGhlbHAgZm9yIHBhcnNpbmdcIilcbiAgICAgICAgfm9uX2ZhaWx1cmU6XG4gICAgICAgICAgKGZ1blxuICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICB+Zm9yX2NvbXBsZXRpb246KF8gOiBib29sKVxuICAgICAgICAgICAgfnBhdGg6KF8gOiBQYXRoLnQpXG4gICAgICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvcjooXyA6IGJvb2wgb3B0aW9uKVxuICAgICAgICAgICAgLT4gcmVzdWx0IDo9IFNvbWUgKEVycm9yIChFcnJvci5vZl9leG4gZXhuKSkpO1xuICAgICAgT3B0aW9uLnZhbHVlX2V4biB+aGVyZTpbJWhlcmVdICFyZXN1bHRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU3BlYyA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSAtPiAnYikgUGFyYW0udFxuICAgIHR5cGUgJ2EgcGFyYW0gPSAnYSBQYXJhbS50XG5cbiAgICBsZXQgYXBwbHkgPSBQYXJhbS5hcHBseVxuICAgIGxldCAoICsrICkgdDEgdDIgPSBQYXJhbS5tYXAyIHQxIHQyIH5mOihmdW4gZjEgZjIgeCAtPiBmMiAoZjEgeCkpXG4gICAgbGV0ICggKz4gKSB0MSBwMiA9IFBhcmFtLm1hcDIgdDEgcDIgfmY6KGZ1biBmMSBwMiB4IC0+IChmMSB4KSBwMilcbiAgICBsZXQgKCArPCApIHQxIHAyID0gUGFyYW0ubWFwMiBwMiB0MSB+ZjooZnVuIHAyIGYxIHggLT4gZjEgKHggcDIpKVxuICAgIGxldCBzdGVwIGYgPSBQYXJhbS5yZXR1cm4gZlxuXG4gICAgKCogSWRlYWxseSB0aGlzIHdvdWxkIGJlIFtsZXQgZW1wdHkgPSBQYXJhbS5yZXR1cm4gRm4uaWRdLCBidXQgdW5mb3J0dW5hdGVseSB0aGF0XG4gICAgICAgZG9lc24ndCBjb21waWxlIGJlY2F1c2Ugb2YgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICopXG4gICAgbGV0IGVtcHR5ID0gUGFyYW0uZW1wdHlfc3BlY1xuICAgIGxldCBjb25zdCB4ID0gUGFyYW0ucmV0dXJuIHhcbiAgICBsZXQgbWFwID0gUGFyYW0ubWFwXG4gICAgbGV0IHdyYXAgZiB0ID0gUGFyYW0ubWFwIHQgfmY6KGZ1biBydW4gbWFpbiAtPiBmIH5ydW4gfm1haW4pXG4gICAgbGV0IG9mX3BhcmFtIHAgPSBtYXAgcCB+ZjooZnVuIGYgayAtPiBrIGYpXG4gICAgbGV0IHRvX3BhcmFtIHQgbSA9IG1hcCB0IH5mOihmdW4gZiAtPiBmIG0pXG4gICAgbGV0IHBhdGggOiBQYXRoLnQgcGFyYW0gPSBQYXJhbS5wYXRoXG4gICAgbGV0IGFyZ3MgOiBzdHJpbmcgbGlzdCBwYXJhbSA9IFBhcmFtLmFyZ3NcbiAgICBsZXQgaGVscCA6IHN0cmluZyBMYXp5LnQgcGFyYW0gPSBQYXJhbS5oZWxwXG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgbW9kdWxlIEFyZ190eXBlID0gQXJnX3R5cGVcbiAgICAgIGluY2x1ZGUgQXJnX3R5cGUuRXhwb3J0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgb3BlbiBBbm9uc1xuXG4gICAgICB0eXBlICdhIGFub25zID0gJ2EgdFxuXG4gICAgICBsZXQgKCAlOiApID0gKCAlOiApXG4gICAgICBsZXQgbWFwX2Fub25zID0gbWFwX2Fub25zXG4gICAgICBsZXQgbWF5YmUgPSBtYXliZVxuICAgICAgbGV0IG1heWJlX3dpdGhfZGVmYXVsdCA9IG1heWJlX3dpdGhfZGVmYXVsdFxuICAgICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0ID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3RcbiAgICAgIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyXG4gICAgICBsZXQgc2VxdWVuY2UgPSBzZXF1ZW5jZVxuICAgICAgbGV0IHQyID0gdDJcbiAgICAgIGxldCB0MyA9IHQzXG4gICAgICBsZXQgdDQgPSB0NFxuICAgICAgbGV0IGFub24gPSBQYXJhbS5hbm9uXG4gICAgZW5kXG5cbiAgICBsZXQgZXNjYXBlX2Fub24gPSBQYXJhbS5lc2NhcGVfYW5vblxuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG9wZW4gRmxhZ1xuXG4gICAgICB0eXBlICdhIGZsYWcgPSAnYSB0XG5cbiAgICAgIGxldCBtYXBfZmxhZyA9IG1hcF9mbGFnXG4gICAgICBsZXQgZXNjYXBlID0gZXNjYXBlXG4gICAgICBsZXQgZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlID0gZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlXG4gICAgICBsZXQgbGlzdGVkID0gbGlzdGVkXG4gICAgICBsZXQgb25lX29yX21vcmVfYXNfcGFpciA9IG9uZV9vcl9tb3JlX2FzX3BhaXJcbiAgICAgIGxldCBvbmVfb3JfbW9yZV9hc19saXN0ID0gb25lX29yX21vcmVfYXNfbGlzdFxuICAgICAgbGV0IG5vX2FyZyA9IG5vX2FyZ1xuICAgICAgbGV0IG5vX2FyZ19yZXF1aXJlZCA9IG5vX2FyZ19yZXF1aXJlZFxuICAgICAgbGV0IG5vX2FyZ19yZWdpc3RlciA9IG5vX2FyZ19yZWdpc3RlclxuICAgICAgbGV0IG5vX2FyZ19hYm9ydCA9IG5vX2FyZ19hYm9ydFxuICAgICAgbGV0IG5vX2FyZ19zb21lID0gbm9fYXJnX3NvbWVcbiAgICAgIGxldCBvcHRpb25hbCA9IG9wdGlvbmFsXG4gICAgICBsZXQgb3B0aW9uYWxfd2l0aF9kZWZhdWx0ID0gb3B0aW9uYWxfd2l0aF9kZWZhdWx0XG4gICAgICBsZXQgcmVxdWlyZWQgPSByZXF1aXJlZFxuICAgICAgbGV0IGZsYWcgPSBQYXJhbS5mbGFnXG4gICAgICBsZXQgZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jID0gUGFyYW0uZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jXG5cbiAgICAgIGluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIFBhcmFtLnRcblxuICAgICAgICAgIGxldCByZXR1cm4gPSBQYXJhbS5yZXR1cm5cbiAgICAgICAgICBsZXQgYXBwbHkgPSBhcHBseVxuICAgICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBwYWlyID0gUGFyYW0uYm90aFxuICAgIGVuZFxuXG4gICAgbGV0IGZsYWdzX29mX2FyZ3NfZXhuIGFyZ3MgPVxuICAgICAgTGlzdC5mb2xkIGFyZ3MgfmluaXQ6ZW1wdHkgfmY6KGZ1biBhY2MgKG5hbWUsIHNwZWMsIGRvYykgLT5cbiAgICAgICAgbGV0IGdlbiBmIGZsYWdfdHlwZSA9XG4gICAgICAgICAgc3RlcCAoZnVuIG0geCAtPlxuICAgICAgICAgICAgZiB4O1xuICAgICAgICAgICAgbSlcbiAgICAgICAgICArPiBQYXJhbS5mbGFnIG5hbWUgZmxhZ190eXBlIH5kb2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhbGwgZiBhcmdfdHlwZSA9IGdlbiAoZnVuIHggLT4gT3B0aW9uLml0ZXIgeCB+ZikgKFBhcmFtLm9wdGlvbmFsIGFyZ190eXBlKSBpblxuICAgICAgICBsZXQgc2V0IHIgYXJnX3R5cGUgPSBjYWxsIChmdW4geCAtPiByIDo9IHgpIGFyZ190eXBlIGluXG4gICAgICAgIGxldCBzZXRfYm9vbCByIGIgPSBnZW4gKGZ1biBwYXNzZWQgLT4gaWYgcGFzc2VkIHRoZW4gciA6PSBiKSBQYXJhbS5ub19hcmcgaW5cbiAgICAgICAgYWNjXG4gICAgICAgICsrXG4gICAgICAgIG1hdGNoIChzcGVjIDogU3RkbGliLkFyZy5zcGVjKSB3aXRoXG4gICAgICAgIHwgVW5pdCBmIC0+IGdlbiAoZnVuIHBhc3NlZCAtPiBpZiBwYXNzZWQgdGhlbiBmICgpKSBQYXJhbS5ub19hcmdcbiAgICAgICAgfCBTZXQgciAtPiBzZXRfYm9vbCByIHRydWVcbiAgICAgICAgfCBDbGVhciByIC0+IHNldF9ib29sIHIgZmFsc2VcbiAgICAgICAgfCBTdHJpbmcgZiAtPiBjYWxsIGYgc3RyaW5nXG4gICAgICAgIHwgU2V0X3N0cmluZyByIC0+IHNldCByIHN0cmluZ1xuICAgICAgICB8IEludCBmIC0+IGNhbGwgZiBpbnRcbiAgICAgICAgfCBTZXRfaW50IHIgLT4gc2V0IHIgaW50XG4gICAgICAgIHwgRmxvYXQgZiAtPiBjYWxsIGYgZmxvYXRcbiAgICAgICAgfCBTZXRfZmxvYXQgciAtPiBzZXQgciBmbG9hdFxuICAgICAgICB8IEJvb2wgZiAtPiBjYWxsIGYgYm9vbFxuICAgICAgICB8IFN5bWJvbCAoc3ltcywgZikgLT5cbiAgICAgICAgICBsZXQgYXJnX3R5cGUgPVxuICAgICAgICAgICAgQXJnX3R5cGUub2ZfYWxpc3RfZXhuXG4gICAgICAgICAgICAgIH5saXN0X3ZhbHVlc19pbl9oZWxwOmZhbHNlXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCBzeW1zIH5mOihmdW4gc3ltIC0+IHN5bSwgc3ltKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGNhbGwgZiBhcmdfdHlwZVxuICAgICAgICB8IFJlc3QgZiAtPiBnZW4gKGZ1biB4IC0+IE9wdGlvbi5pdGVyIHggfmY6KExpc3QuaXRlciB+ZikpIFBhcmFtLmVzY2FwZVxuICAgICAgICB8IFR1cGxlIF8gLT5cbiAgICAgICAgICBmYWlsd2l0aCBcIkFyZy5UdXBsZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IENvbW1hbmQuU3BlYy5mbGFnc19vZl9hcmdzX2V4blwiXG4gICAgICAgIHwgKChFeHBhbmQgXykgW0BpZiBvY2FtbF92ZXJzaW9uID49ICg0LCAwNSwgMCldKSAtPlxuICAgICAgICAgIGZhaWx3aXRoIFwiQXJnLkV4cGFuZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IENvbW1hbmQuU3BlYy5mbGFnc19vZl9hcmdzX2V4blwiXG4gICAgICAgIHwgKChSZXN0X2FsbCBfKSBbQGlmIG9jYW1sX3ZlcnNpb24gPj0gKDQsIDEyLCAwKV0pIC0+XG4gICAgICAgICAgZmFpbHdpdGggXCJBcmcuUmVzdF9hbGwgaXMgbm90IHN1cHBvcnRlZCBieSBDb21tYW5kLlNwZWMuZmxhZ3Nfb2ZfYXJnc19leG5cIilcbiAgICA7O1xuXG4gICAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRmxhZy5EZXByZWNhdGVkXG4gICAgICBpbmNsdWRlIEFub25zLkRlcHJlY2F0ZWRcbiAgICBlbmRcblxuICAgIGxldCBhcmdfbmFtZXMgPSBQYXJhbS5hcmdfbmFtZXNcblxuICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IFBhcmFtLkNob29zZV9vbmUuSWZfbm90aGluZ19jaG9zZW5cblxuICAgIGxldCBjaG9vc2Vfb25lID0gUGFyYW0uY2hvb3NlX29uZVxuICAgIGxldCBjaG9vc2Vfb25lX25vbl9vcHRpb25hbCA9IFBhcmFtLmNob29zZV9vbmVfbm9uX29wdGlvbmFsXG4gICAgbGV0IGFuZF9hcmdfbmFtZXMgPSBQYXJhbS5hbmRfYXJnX25hbWVzXG4gICAgbGV0IGFuZF9hcmdfbmFtZSA9IFBhcmFtLmFuZF9hcmdfbmFtZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgR3JvdXAgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6ICh1bml0IC0+IHN0cmluZykgb3B0aW9uXG4gICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgbGlzdCBMYXp5LnRcbiAgICA7IGJvZHkgOiAocGF0aDpzdHJpbmcgbGlzdCAtPiB1bml0KSBvcHRpb25cbiAgICB9XG5cbiAgbGV0IHNoYXBlIH5zdWJjb21tYW5kX3RvX3NoYXBlIHQgOiBfIFNoYXBlLkdyb3VwX2luZm8udCA9XG4gICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgOyByZWFkbWUgPSBPcHRpb24ubWFwIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSkgdC5yZWFkbWVcbiAgICA7IHN1YmNvbW1hbmRzID0gTGF6eS5tYXAgdC5zdWJjb21tYW5kcyB+ZjooTGlzdC5Bc3NvYy5tYXAgfmY6c3ViY29tbWFuZF90b19zaGFwZSlcbiAgICB9XG4gIDs7XG5lbmRcblxubGV0IGFic19wYXRoID0gU2hhcGUuUHJpdmF0ZS5hYnNfcGF0aFxubGV0IGNvbXBfY3dvcmQgPSBFbnZfdmFyLkNPTVBfQ1dPUkRcblxubW9kdWxlIEV4ZWMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6ICh1bml0IC0+IHN0cmluZykgb3B0aW9uXG4gICAgOyAoKiBJZiBbcGF0aF90b19leGVdIGlzIHJlbGF0aXZlLCBpbnRlcnByZXQgdy5yLnQuIFt3b3JraW5nX2Rpcl0gKilcbiAgICAgIHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgOyBlbnYgOiBlbnYgb3B0aW9uXG4gICAgfVxuXG4gIGxldCBzaGFwZSB0IDogU2hhcGUuRXhlY19pbmZvLnQgPVxuICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgIDsgcmVhZG1lID0gT3B0aW9uLm1hcCB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpIHQucmVhZG1lXG4gICAgOyB3b3JraW5nX2RpciA9IHQud29ya2luZ19kaXJcbiAgICA7IHBhdGhfdG9fZXhlID0gdC5wYXRoX3RvX2V4ZVxuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA9IHQuY2hpbGRfc3ViY29tbWFuZFxuICAgIH1cbiAgOztcbmVuZFxuXG4oKiBBIHByb3h5IGNvbW1hbmQgaXMgdGhlIHN0cnVjdHVyZSBvZiBhbiBFeGVjIGNvbW1hbmQgb2J0YWluZWQgYnkgcnVubmluZyBpdCBpbiBhXG4gICBzcGVjaWFsIHdheSAqKVxubW9kdWxlIFByb3h5ID0gc3RydWN0XG4gIG1vZHVsZSBLaW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgQmFzZSBvZiBTaGFwZS5CYXNlX2luZm8udFxuICAgICAgfCBHcm91cCBvZiAnYSBTaGFwZS5Hcm91cF9pbmZvLnRcbiAgICAgIHwgRXhlYyBvZiBTaGFwZS5FeGVjX2luZm8udFxuICAgICAgfCBMYXp5IG9mICdhIHQgTGF6eS50XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICA7IHBhdGhfdG9fc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGtpbmQgOiB0IEtpbmQudFxuICAgIH1cbmVuZFxuXG50eXBlIHQgPVxuICB8IEJhc2Ugb2YgQ29tbWFuZF9iYXNlLnRcbiAgfCBHcm91cCBvZiB0IEdyb3VwLnRcbiAgfCBFeGVjIG9mIEV4ZWMudFxuICB8IExhenkgb2YgdCBMYXp5LnRcblxubGV0IHJlYyBzZXhwYWJsZV9zaGFwZSA6IHQgLT4gU2hhcGUuU2V4cGFibGUudCA9IGZ1bmN0aW9uXG4gIHwgQmFzZSBiYXNlIC0+IEJhc2UgKENvbW1hbmRfYmFzZS5zaGFwZSBiYXNlKVxuICB8IEV4ZWMgZXhlYyAtPiBFeGVjIChFeGVjLnNoYXBlIGV4ZWMpXG4gIHwgR3JvdXAgZ3JvdXAgLT4gR3JvdXAgKEdyb3VwLnNoYXBlIH5zdWJjb21tYW5kX3RvX3NoYXBlOnNleHBhYmxlX3NoYXBlIGdyb3VwKVxuICB8IExhenkgdGh1bmsgLT4gTGF6eSAoTGF6eS5tYXAgfmY6c2V4cGFibGVfc2hhcGUgdGh1bmspXG47O1xuXG50eXBlICgnbWFpbiwgJ3Jlc3VsdCkgYmFzaWNfc3BlY19jb21tYW5kID1cbiAgc3VtbWFyeTpzdHJpbmdcbiAgLT4gP3JlYWRtZToodW5pdCAtPiBzdHJpbmcpXG4gIC0+ICgnbWFpbiwgdW5pdCAtPiAncmVzdWx0KSBDb21tYW5kX2Jhc2UuU3BlYy50XG4gIC0+ICdtYWluXG4gIC0+IHRcblxubGV0IGV4dGVuZF9leG4gfm1lbSB+YWRkIG1hcCBrZXlfdHlwZSB+a2V5IGRhdGEgPVxuICBpZiBtZW0gbWFwIGtleVxuICB0aGVuIGZhaWx3aXRoZiBcInRoZXJlIGlzIGFscmVhZHkgYSAlcyBuYW1lZCAlc1wiIChLZXlfdHlwZS50b19zdHJpbmcga2V5X3R5cGUpIGtleSAoKTtcbiAgYWRkIG1hcCB+a2V5IH5kYXRhXG47O1xuXG5sZXQgZXh0ZW5kX21hcF9leG4gbWFwIGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGV4dGVuZF9leG4gbWFwIGtleV90eXBlIH5rZXkgZGF0YSB+bWVtOk1hcC5tZW0gfmFkZDpNYXAuc2V0XG47O1xuXG5sZXQgZXh0ZW5kX2FsaXN0X2V4biBhbGlzdCBrZXlfdHlwZSB+a2V5IGRhdGEgPVxuICBleHRlbmRfZXhuXG4gICAgYWxpc3RcbiAgICBrZXlfdHlwZVxuICAgIH5rZXlcbiAgICBkYXRhXG4gICAgfm1lbTooZnVuIGFsaXN0IGtleSAtPiBMaXN0LkFzc29jLm1lbSBhbGlzdCBrZXkgfmVxdWFsOlN0cmluZy5lcXVhbClcbiAgICB+YWRkOihmdW4gYWxpc3QgfmtleSB+ZGF0YSAtPiBMaXN0LkFzc29jLmFkZCBhbGlzdCBrZXkgZGF0YSB+ZXF1YWw6U3RyaW5nLmVxdWFsKVxuOztcblxubW9kdWxlIEJhaWxvdXRfZHVtcF9mbGFnID0gc3RydWN0XG4gIGxldCBhZGQgYmFzZSB+bmFtZSB+YWxpYXNlcyB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgfnRleHQgfnRleHRfc3VtbWFyeSA9XG4gICAgbGV0IGZsYWdzID0gYmFzZS5Db21tYW5kX2Jhc2UuZmxhZ3MgaW5cbiAgICBsZXQgZmxhZ3MgPVxuICAgICAgZXh0ZW5kX21hcF9leG5cbiAgICAgICAgZmxhZ3NcbiAgICAgICAgS2V5X3R5cGUuRmxhZ1xuICAgICAgICB+a2V5Om5hbWVcbiAgICAgICAgeyBuYW1lXG4gICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gRmxhZy5OdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gaWdub3JlXG4gICAgICAgIDsgYWN0aW9uID0gUHJpbnRfaW5mb19hbmRfcXVpdCAoZnVuIGVudiAtPiB0ZXh0IGVudilcbiAgICAgICAgOyBkb2MgPSBzcHJpbnRmIFwiIHByaW50ICVzIGFuZCBleGl0XCIgdGV4dF9zdW1tYXJ5XG4gICAgICAgIDsgbmFtZV9tYXRjaGluZyA9IGBQcmVmaXhcbiAgICAgICAgfVxuICAgIGluXG4gICAgeyBiYXNlIHdpdGggZmxhZ3MgfVxuICA7O1xuZW5kXG5cbmxldCBiYXNpYyB+c3VtbWFyeSA/cmVhZG1lIHsgQ29tbWFuZF9iYXNlLlBhcmFtLnVzYWdlOyBmbGFnczsgZiB9ID1cbiAgbGV0IGZsYWdzID0gZmxhZ3MgKCkgaW5cbiAgbGV0IHVzYWdlID0gdXNhZ2UgKCkgaW5cbiAgbGV0IGFub25zICgpID1cbiAgICBsZXQgb3BlbiBBbm9ucy5QYXJzZXIuQmFzaWMuRm9yX29wZW5pbmcgaW5cbiAgICBmICgpXG4gICAgPj58IGZ1biBwYXJhbXMgYFBhcnNlX2FyZ3MgLT5cbiAgICBsZXQgb3V0Y29tZSA9IHBhcmFtcyAoKSBpblxuICAgIG1hdGNoIG91dGNvbWUucmVzdWx0IHdpdGhcbiAgICB8IEVycm9yIChgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBlcnIpIC0+IGRpZSBcIiVzXCIgKEVycm9yLnRvX3N0cmluZ19odW0gZXJyKSAoKVxuICAgIHwgT2sgdGh1bmsgLT4gZnVuIGBSdW5fbWFpbiAtPiB0aHVuayAoKVxuICBpblxuICBsZXQgZmxhZ3MgPSBGbGFnLkludGVybmFsLmNyZWF0ZSBmbGFncyBpblxuICBsZXQgYmFzZSA9IHsgQ29tbWFuZF9iYXNlLnN1bW1hcnk7IHJlYWRtZTsgdXNhZ2U7IGZsYWdzOyBhbm9ucyB9IGluXG4gIGxldCBiYXNlID1cbiAgICBCYWlsb3V0X2R1bXBfZmxhZy5hZGRcbiAgICAgIGJhc2VcbiAgICAgIH5uYW1lOlwiLWhlbHBcIlxuICAgICAgfmFsaWFzZXM6WyBcIi0/XCIgXVxuICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOlsgXCItLWhlbHBcIiBdXG4gICAgICB+dGV4dF9zdW1tYXJ5OlwidGhpcyBoZWxwIHRleHRcIlxuICAgICAgfnRleHQ6KGZ1biBlbnYgLT4gTGF6eS5mb3JjZSAoRW52LmZpbmRfZXhuIGVudiBDb21tYW5kX2Jhc2UuaGVscF9rZXkpKVxuICBpblxuICBCYXNlIGJhc2Vcbjs7XG5cbmxldCBiYXNpY19zcGVjIH5zdW1tYXJ5ID9yZWFkbWUgc3BlYyBtYWluID1cbiAgYmFzaWMgfnN1bW1hcnkgP3JlYWRtZSAoQ29tbWFuZF9iYXNlLlNwZWMudG9fcGFyYW0gc3BlYyBtYWluKVxuOztcblxubGV0IHN1YnNfa2V5IDogKHN0cmluZyAqIHQpIGxpc3QgRW52LktleS50ID0gRW52LmtleV9jcmVhdGUgXCJzdWJjb21tYW5kc1wiXG5cbmxldCBsYXp5X2dyb3VwIH5zdW1tYXJ5ID9yZWFkbWUgP3ByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgP2JvZHkgYWxpc3QgPVxuICBsZXQgc3ViY29tbWFuZHMgPVxuICAgIExhenkubWFwIGFsaXN0IH5mOihmdW4gYWxpc3QgLT5cbiAgICAgIGxldCBhbGlzdCA9XG4gICAgICAgIExpc3QubWFwIGFsaXN0IH5mOihmdW4gKG5hbWUsIHQpIC0+IG5vcm1hbGl6ZSBLZXlfdHlwZS5TdWJjb21tYW5kIG5hbWUsIHQpXG4gICAgICBpblxuICAgICAgbWF0Y2ggTWFwLm9mX2FsaXN0IChtb2R1bGUgU3RyaW5nKSBhbGlzdCB3aXRoXG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IG5hbWUgLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgc3ViY29tbWFuZHMgbmFtZWQgJXNcIiBuYW1lICgpXG4gICAgICB8IGBPayBtYXAgLT5cbiAgICAgICAgKG1hdGNoIHByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgd2l0aFxuICAgICAgICAgfCBTb21lICgpIC0+IGFsaXN0XG4gICAgICAgICB8IE5vbmUgLT4gTWFwLnRvX2FsaXN0IG1hcCkpXG4gIGluXG4gIEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kczsgYm9keSB9XG47O1xuXG5sZXQgZ3JvdXAgfnN1bW1hcnkgP3JlYWRtZSA/cHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciA/Ym9keSBhbGlzdCA9XG4gIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIGYgKCkgLT4gU3RyaW5nLnN0cmlwIChmICgpKSkgaW5cbiAgbGF6eV9ncm91cCB+c3VtbWFyeSA/cmVhZG1lID9wcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyID9ib2R5IChMYXp5LmZyb21fdmFsIGFsaXN0KVxuOztcblxubGV0IGV4ZWMgfnN1bW1hcnkgP3JlYWRtZSA/KGNoaWxkX3N1YmNvbW1hbmQgPSBbXSkgP2VudiB+cGF0aF90b19leGUgKCkgPVxuICBsZXQgd29ya2luZ19kaXIgPVxuICAgIEZpbGVuYW1lX2Jhc2UuZGlybmFtZVxuICAgIEBAXG4gICAgbWF0Y2ggcGF0aF90b19leGUgd2l0aFxuICAgIHwgYEFic29sdXRlIF8gfCBgUmVsYXRpdmVfdG9fbWUgXyAtPiBTdGRsaWIuU3lzLmV4ZWN1dGFibGVfbmFtZVxuICAgIHwgYFJlbGF0aXZlX3RvX2FyZ3YwIF8gLT4gU3RkbGliLlN5cy5hcmd2LigwKVxuICBpblxuICBsZXQgcGF0aF90b19leGUgPVxuICAgIG1hdGNoIHBhdGhfdG9fZXhlIHdpdGhcbiAgICB8IGBBYnNvbHV0ZSBwIC0+XG4gICAgICBpZiBub3QgKEZpbGVuYW1lX2Jhc2UuaXNfYWJzb2x1dGUgcClcbiAgICAgIHRoZW4gZmFpbHdpdGggXCJQYXRoIHBhc3NlZCB0byBgQWJzb2x1dGUgbXVzdCBiZSBhYnNvbHV0ZVwiXG4gICAgICBlbHNlIHBcbiAgICB8IGBSZWxhdGl2ZV90b19tZSBwIHwgYFJlbGF0aXZlX3RvX2FyZ3YwIHAgLT5cbiAgICAgIGlmIG5vdCAoRmlsZW5hbWVfYmFzZS5pc19yZWxhdGl2ZSBwKVxuICAgICAgdGhlbiBmYWlsd2l0aCBcIlBhdGggcGFzc2VkIHRvIGBSZWxhdGl2ZV90b19tZSBtdXN0IGJlIHJlbGF0aXZlXCJcbiAgICAgIGVsc2UgcFxuICBpblxuICBFeGVjIHsgc3VtbWFyeTsgcmVhZG1lOyB3b3JraW5nX2RpcjsgcGF0aF90b19leGU7IGNoaWxkX3N1YmNvbW1hbmQ7IGVudiB9XG47O1xuXG5sZXQgb2ZfbGF6eSB0aHVuayA9IExhenkgdGh1bmtcblxubGV0IHJlYyBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgIHNleHBhYmxlXG4gICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gIDogUHJveHkudFxuICA9XG4gIGxldCBraW5kID1cbiAgICBraW5kX29mX3NleHBhYmxlXG4gICAgICBzZXhwYWJsZVxuICAgICAgfndvcmtpbmdfZGlyXG4gICAgICB+cGF0aF90b19leGVcbiAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gIGluXG4gIHsgd29ya2luZ19kaXI7IHBhdGhfdG9fZXhlOyBwYXRoX3RvX3N1YmNvbW1hbmQ7IGNoaWxkX3N1YmNvbW1hbmQ7IGtpbmQgfVxuXG5hbmQga2luZF9vZl9zZXhwYWJsZVxuICAgICAgc2V4cGFibGVcbiAgICAgIH53b3JraW5nX2RpclxuICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZFxuICA9XG4gIG1hdGNoIChzZXhwYWJsZSA6IFNoYXBlLlNleHBhYmxlLnQpIHdpdGhcbiAgfCBCYXNlIGIgLT4gUHJveHkuS2luZC5CYXNlIGJcbiAgfCBFeGVjIGUgLT4gUHJveHkuS2luZC5FeGVjIGVcbiAgfCBMYXp5IGwgLT5cbiAgICBQcm94eS5LaW5kLkxhenlcbiAgICAgIChMYXp5Lm1hcCBsIH5mOihmdW4gc2V4cGFibGUgLT5cbiAgICAgICAgIGtpbmRfb2Zfc2V4cGFibGVcbiAgICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kKSlcbiAgfCBHcm91cCBnIC0+XG4gICAgUHJveHkuS2luZC5Hcm91cFxuICAgICAgeyBnIHdpdGhcbiAgICAgICAgc3ViY29tbWFuZHMgPVxuICAgICAgICAgIExhenkubWFwXG4gICAgICAgICAgICBnLnN1YmNvbW1hbmRzXG4gICAgICAgICAgICB+ZjpcbiAgICAgICAgICAgICAgKExpc3QubWFwIH5mOihmdW4gKHN0ciwgc2V4cGFibGUpIC0+XG4gICAgICAgICAgICAgICAgIGxldCBwYXRoX3RvX3N1YmNvbW1hbmQgPSBwYXRoX3RvX3N1YmNvbW1hbmQgQCBbIHN0ciBdIGluXG4gICAgICAgICAgICAgICAgIGxldCBwcm94eSA9XG4gICAgICAgICAgICAgICAgICAgcHJveHlfb2Zfc2V4cGFibGVcbiAgICAgICAgICAgICAgICAgICAgIHNleHBhYmxlXG4gICAgICAgICAgICAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICAgICAgICAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgICAgICAgICAgICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICAgICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgc3RyLCBwcm94eSkpXG4gICAgICB9XG47O1xuXG5tb2R1bGUgVmVyc2lvbl9pbmZvIChWZXJzaW9uX3V0aWwgOiBWZXJzaW9uX3V0aWwpID0gc3RydWN0XG4gIGxldCBwcmludF92ZXJzaW9uIH52ZXJzaW9uID0gcHJpbnRfZW5kbGluZSAoZm9yY2UgdmVyc2lvbilcbiAgbGV0IHByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm8gPSBwcmludF9lbmRsaW5lIChmb3JjZSBidWlsZF9pbmZvKVxuXG4gIGxldCBjb21tYW5kIH52ZXJzaW9uIH5idWlsZF9pbmZvID1cbiAgICBiYXNpY1xuICAgICAgfnN1bW1hcnk6XCJwcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uXCJcbiAgICAgIENvbW1hbmRfYmFzZS5QYXJhbS4oXG4gICAgICAgIHJldHVybiAoZnVuIHZlcnNpb25fZmxhZyBidWlsZF9pbmZvX2ZsYWcgLT5cbiAgICAgICAgICBpZiBidWlsZF9pbmZvX2ZsYWdcbiAgICAgICAgICB0aGVuIHByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm9cbiAgICAgICAgICBlbHNlIGlmIHZlcnNpb25fZmxhZ1xuICAgICAgICAgIHRoZW4gcHJpbnRfdmVyc2lvbiB+dmVyc2lvblxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgcHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbztcbiAgICAgICAgICAgIHByaW50X3ZlcnNpb24gfnZlcnNpb24pO1xuICAgICAgICAgIGV4aXQgMClcbiAgICAgICAgPCo+IGZsYWcgXCItdmVyc2lvblwiIG5vX2FyZyB+ZG9jOlwiIHByaW50IHRoZSB2ZXJzaW9uIG9mIHRoaXMgYnVpbGRcIlxuICAgICAgICA8Kj4gZmxhZyBcIi1idWlsZC1pbmZvXCIgbm9fYXJnIH5kb2M6XCIgcHJpbnQgYnVpbGQgaW5mbyBmb3IgdGhpcyBidWlsZFwiKVxuICA7O1xuXG4gIGxldCByZWMgYWRkIH52ZXJzaW9uIH5idWlsZF9pbmZvIHVudmVyc2lvbmVkID1cbiAgICBtYXRjaCB1bnZlcnNpb25lZCB3aXRoXG4gICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgIGxldCBiYXNlID1cbiAgICAgICAgQmFpbG91dF9kdW1wX2ZsYWcuYWRkXG4gICAgICAgICAgYmFzZVxuICAgICAgICAgIH5uYW1lOlwiLXZlcnNpb25cIlxuICAgICAgICAgIH5hbGlhc2VzOltdXG4gICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOlsgXCItLXZlcnNpb25cIiBdXG4gICAgICAgICAgfnRleHRfc3VtbWFyeTpcInRoZSB2ZXJzaW9uIG9mIHRoaXMgYnVpbGRcIlxuICAgICAgICAgIH50ZXh0OihmdW4gXyAtPiBmb3JjZSB2ZXJzaW9uKVxuICAgICAgaW5cbiAgICAgIGxldCBiYXNlID1cbiAgICAgICAgQmFpbG91dF9kdW1wX2ZsYWcuYWRkXG4gICAgICAgICAgYmFzZVxuICAgICAgICAgIH5uYW1lOlwiLWJ1aWxkLWluZm9cIlxuICAgICAgICAgIH5hbGlhc2VzOltdXG4gICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOlsgXCItLWJ1aWxkLWluZm9cIiBdXG4gICAgICAgICAgfnRleHRfc3VtbWFyeTpcImluZm8gYWJvdXQgdGhpcyBidWlsZFwiXG4gICAgICAgICAgfnRleHQ6KGZ1biBfIC0+IGZvcmNlIGJ1aWxkX2luZm8pXG4gICAgICBpblxuICAgICAgQmFzZSBiYXNlXG4gICAgfCBHcm91cCBncm91cCAtPlxuICAgICAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICAgICAgTGF6eS5tYXAgZ3JvdXAuR3JvdXAuc3ViY29tbWFuZHMgfmY6KGZ1biBzdWJjb21tYW5kcyAtPlxuICAgICAgICAgIGV4dGVuZF9hbGlzdF9leG5cbiAgICAgICAgICAgIHN1YmNvbW1hbmRzXG4gICAgICAgICAgICBLZXlfdHlwZS5TdWJjb21tYW5kXG4gICAgICAgICAgICB+a2V5OlwidmVyc2lvblwiXG4gICAgICAgICAgICAoY29tbWFuZCB+dmVyc2lvbiB+YnVpbGRfaW5mbykpXG4gICAgICBpblxuICAgICAgR3JvdXAgeyBncm91cCB3aXRoIEdyb3VwLnN1YmNvbW1hbmRzIH1cbiAgICB8IEV4ZWMgZXhlYyAtPiBFeGVjIGV4ZWNcbiAgICB8IExhenkgdGh1bmsgLT4gTGF6eSAobGF6eSAoYWRkIH52ZXJzaW9uIH5idWlsZF9pbmZvIChMYXp5LmZvcmNlIHRodW5rKSkpXG4gIDs7XG5cbiAgbGV0IG5vcm1hbGl6ZV92ZXJzaW9uX2xpbmVzIGxpbmVzID1cbiAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCJcXG5cIiAoTGlzdC5zb3J0IGxpbmVzIH5jb21wYXJlOlN0cmluZy5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBkZWZhdWx0X3ZlcnNpb24gPSBsYXp5IChub3JtYWxpemVfdmVyc2lvbl9saW5lcyBWZXJzaW9uX3V0aWwudmVyc2lvbl9saXN0KVxuXG4gIGxldCBkZWZhdWx0X2J1aWxkX2luZm8gPVxuICAgIGxhenlcbiAgICAgICgqIGxhenkgdG8gYXZvaWQgbG9hZGluZyBhbGwgdGhlIHRpbWUgem9uZSBzdHVmZiBhdCB0b3BsZXZlbCAqKVxuICAgICAgKFZlcnNpb25fdXRpbC5yZXByaW50X2J1aWxkX2luZm8gVmVyc2lvbl91dGlsLlRpbWUuc2V4cF9vZl90KVxuICA7O1xuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBcIlZlcnNpb25faW5mb1wiID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBtb2R1bGUgVmVyc2lvbl9pbmZvID0gVmVyc2lvbl9pbmZvIChzdHJ1Y3RcbiAgICAgICAgbGV0IHZlcnNpb25fbGlzdCA9IFsgXCJoZzovL3NvbWUvcGF0aF8weGRlYWRiZWVmXCI7IFwic3NoOi8vYS9wYXRoXzhiYWRmMDBkXCIgXVxuICAgICAgICBsZXQgcmVwcmludF9idWlsZF9pbmZvIHRvX3NleHAgPSBTZXhwLnRvX3N0cmluZyAodG9fc2V4cCAoKSlcblxuICAgICAgICBtb2R1bGUgVGltZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgICAgZW5kXG4gICAgICBlbmQpXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJwcmludCB2ZXJzaW9uIHdoZXJlIG11bHRpcGxlIHJlcG9zIGFyZSB1c2VkXCIgPVxuICAgICAgVmVyc2lvbl9pbmZvLnByaW50X3ZlcnNpb24gfnZlcnNpb246VmVyc2lvbl9pbmZvLmRlZmF1bHRfdmVyc2lvbjtcbiAgICAgIFslZXhwZWN0IHt8XG4gICAgICAgIGhnOi8vc29tZS9wYXRoXzB4ZGVhZGJlZWZcbiAgICAgICAgc3NoOi8vYS9wYXRoXzhiYWRmMDBkIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJwcmludCBidWlsZCBpbmZvXCIgPVxuICAgICAgVmVyc2lvbl9pbmZvLnByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm86KGxhenkgXCJzb21lIGJ1aWxkIGluZm9cIik7XG4gICAgICBbJWV4cGVjdCB7fCBzb21lIGJ1aWxkIGluZm8gfH1dXG4gICAgOztcbiAgZW5kKVxuOztcblxubGV0IHJlYyBzdW1tYXJ5ID0gZnVuY3Rpb25cbiAgfCBCYXNlIHggLT4geC5zdW1tYXJ5XG4gIHwgR3JvdXAgeCAtPiB4LnN1bW1hcnlcbiAgfCBFeGVjIHggLT4geC5zdW1tYXJ5XG4gIHwgTGF6eSB0aHVuayAtPiBzdW1tYXJ5IChMYXp5LmZvcmNlIHRodW5rKVxuOztcblxubW9kdWxlIFNwZWMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDb21tYW5kX2Jhc2UuU3BlY1xuXG4gIGxldCBwYXRoID0gbWFwIH5mOlBhdGgucGFydHNfZXhlX2Jhc2VuYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICBtb2R1bGUgU3BlYyA9IFNwZWMuRGVwcmVjYXRlZFxuXG4gIGxldCBzdW1tYXJ5ID0gc3VtbWFyeVxuXG4gIGxldCByZWMgZ2V0X2ZsYWdfbmFtZXMgPSBmdW5jdGlvblxuICAgIHwgQmFzZSBiYXNlIC0+IGJhc2UuQ29tbWFuZF9iYXNlLmZsYWdzIHw+IE1hcC5rZXlzXG4gICAgfCBMYXp5IHRodW5rIC0+IGdldF9mbGFnX25hbWVzIChMYXp5LmZvcmNlIHRodW5rKVxuICAgIHwgR3JvdXAgXyB8IEV4ZWMgXyAtPiBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgaGVscF9yZWN1cnNpdmUgfmNtZCB+d2l0aF9mbGFncyB+ZXhwYW5kX2RvdHMgdCBzID1cbiAgICBsZXQgcmVjIGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kIHQgcyA9XG4gICAgICBsZXQgbmV3X3MgPSBzIF4gKGlmIGV4cGFuZF9kb3RzIHRoZW4gY21kIGVsc2UgXCIuXCIpIF4gXCIgXCIgaW5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBMYXp5IHRodW5rIC0+XG4gICAgICAgIGxldCB0ID0gTGF6eS5mb3JjZSB0aHVuayBpblxuICAgICAgICBoZWxwX3JlY3Vyc2l2ZV9yZWMgfmNtZCB0IHNcbiAgICAgIHwgQmFzZSBiYXNlIC0+XG4gICAgICAgIGxldCBiYXNlX2hlbHAgPSBzIF4gY21kLCBzdW1tYXJ5IChCYXNlIGJhc2UpIGluXG4gICAgICAgIGlmIHdpdGhfZmxhZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIGJhc2VfaGVscFxuICAgICAgICAgIDo6IExpc3QubWFwXG4gICAgICAgICAgICAgICB+ZjooZnVuIChmbGFnLCBoKSAtPiBuZXdfcyBeIGZsYWcsIGgpXG4gICAgICAgICAgICAgICAoTGlzdC5zb3J0XG4gICAgICAgICAgICAgICAgICB+Y29tcGFyZTpDb21tYW5kX2Jhc2UuRGVwcmVjYXRlZC5zdWJjb21tYW5kX2NtcF9mc3RcbiAgICAgICAgICAgICAgICAgIChDb21tYW5kX2Jhc2UuRGVwcmVjYXRlZC5mbGFnc19oZWxwIH5kaXNwbGF5X2hlbHBfZmxhZ3M6ZmFsc2UgYmFzZSkpXG4gICAgICAgIGVsc2UgWyBiYXNlX2hlbHAgXVxuICAgICAgfCBHcm91cCB7IHN1bW1hcnk7IHN1YmNvbW1hbmRzOyByZWFkbWUgPSBfOyBib2R5ID0gXyB9IC0+XG4gICAgICAgIChzIF4gY21kLCBzdW1tYXJ5KVxuICAgICAgICA6OiAoTGF6eS5mb3JjZSBzdWJjb21tYW5kc1xuICAgICAgICAgICAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOkNvbW1hbmRfYmFzZS5EZXByZWNhdGVkLnN1YmNvbW1hbmRfY21wX2ZzdFxuICAgICAgICAgICAgfD4gTGlzdC5jb25jYXRfbWFwIH5mOihmdW4gKGNtZCcsIHQpIC0+IGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kOmNtZCcgdCBuZXdfcylcbiAgICAgICAgICAgKVxuICAgICAgfCBFeGVjIF8gLT5cbiAgICAgICAgKCogQ29tbWFuZC5leGVjIGRvZXMgbm90IHN1cHBvcnQgZGVwcmVjYXRlZCBjb21tYW5kcyAqKVxuICAgICAgICBbXVxuICAgIGluXG4gICAgaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQgdCBzXG4gIDs7XG5lbmRcblxubW9kdWxlIEZvcl91bml4IChGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyIDogRm9yX3VuaXggd2l0aCB0eXBlIGVudl92YXIgOj0gc3RyaW5nKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFZlcnNpb25faW5mbyA9IFZlcnNpb25faW5mbyAoRm9yX3VuaXhfd2l0aF9zdHJpbmdfZW52X3Zhci5WZXJzaW9uX3V0aWwpXG5cbiAgbW9kdWxlIEZvcl91bml4X3dpdGhfY29tbWFuZF9lbnZfdmFyIDogRm9yX3VuaXggd2l0aCB0eXBlIGVudl92YXIgOj0gRW52X3Zhci50ID0gc3RydWN0XG4gICAgKCogV2UgZm9yY2UgYWNjZXNzIHRvIGVudiB2YXJzIHRvIGdvIHRocm91Z2ggW0NvbW1hbmRfZW52X3Zhcl0gc28gdGhhdCB3ZSBjYW4ga2VlcCBhblxuICAgICAgIGFjY3VyYXRlIGVudW1lcmF0aW9uIG9mIHRoZSB2YXJpYWJsZXMgd2UgdXNlLiAqKVxuXG4gICAgaW5jbHVkZSBGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyXG5cbiAgICBtb2R1bGUgVW5peCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBVbml4XG5cbiAgICAgIGxldCBwdXRlbnYgfmtleSB+ZGF0YSA9IHB1dGVudiB+a2V5OihFbnZfdmFyLnRvX3N0cmluZyBrZXkpIH5kYXRhXG4gICAgICBsZXQgdW5zZXRlbnYga2V5ID0gdW5zZXRlbnYgKEVudl92YXIudG9fc3RyaW5nIGtleSlcbiAgICAgIGxldCB1bnNhZmVfZ2V0ZW52IGtleSA9IHVuc2FmZV9nZXRlbnYgKEVudl92YXIudG9fc3RyaW5nIGtleSlcblxuICAgICAgbGV0IGNvbnZlcnRfZW52IGVudiA9XG4gICAgICAgIGxldCBjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdCA9XG4gICAgICAgICAgTGlzdC5tYXAgbGlzdCB+ZjooZnVuIChlbnZfdmFyLCBzdHIpIC0+IEVudl92YXIudG9fc3RyaW5nIGVudl92YXIsIHN0cilcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZW52IHdpdGhcbiAgICAgICAgfCBgUmVwbGFjZSBsaXN0IC0+IGBSZXBsYWNlIChjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdClcbiAgICAgICAgfCBgRXh0ZW5kIGxpc3QgLT4gYEV4dGVuZCAoY29udmVydF9jb21tYW5kX2Vudl92YXJfdG9fc3RyaW5nIGxpc3QpXG4gICAgICAgIHwgYE92ZXJyaWRlIGxpc3QgLT4gYE92ZXJyaWRlIChjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdClcbiAgICAgICAgfCBgUmVwbGFjZV9yYXcgXyBhcyByZXBsYWNlIC0+IHJlcGxhY2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBleGVjIH5wcm9nIH5hcmd2ID91c2VfcGF0aCA/ZW52ICgpID1cbiAgICAgICAgZXhlYyB+cHJvZyB+YXJndiA/dXNlX3BhdGggP2VudjooT3B0aW9uLm1hcCBlbnYgfmY6Y29udmVydF9lbnYpICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgY3JlYXRlX3Byb2Nlc3NfZW52ID93b3JraW5nX2RpciA/cHJvZ19zZWFyY2hfcGF0aCA/YXJndjAgfnByb2cgfmFyZ3MgfmVudiAoKSA9XG4gICAgICAgIGNyZWF0ZV9wcm9jZXNzX2VudlxuICAgICAgICAgID93b3JraW5nX2RpclxuICAgICAgICAgID9wcm9nX3NlYXJjaF9wYXRoXG4gICAgICAgICAgP2FyZ3YwXG4gICAgICAgICAgfnByb2dcbiAgICAgICAgICB+YXJnc1xuICAgICAgICAgIH5lbnY6KGNvbnZlcnRfZW52IGVudilcbiAgICAgICAgICAoKVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgb3BlbiBGb3JfdW5peF93aXRoX2NvbW1hbmRfZW52X3ZhclxuXG4gICgqIENsZWFyIHRoZSBzZXR0aW5nIG9mIGVudmlyb25tZW50IHZhcmlhYmxlIGFzc29jaWF0ZWQgd2l0aCBjb21tYW5kLWxpbmVcbiAgICAgY29tcGxldGlvbiBhbmQgcmVjdXJzaXZlIGhlbHAgc28gdGhhdCBzdWJwcm9jZXNzZXMgZG9uJ3Qgc2VlIHRoZW0uXG5cbiAgICAgVXNlIFt1bnNhZmVfZ2V0ZW52XSBzbyBzZXR1aWQtcm9vdCBwcm9ncmFtcyBjYW4gc3RpbGwgcmVhZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAgIFRoZXJlIGlzIG5vIHNlY3VyaXR5IHJpc2sgaGVyZSBiZWNhdXNlIHRoZSB2YWx1ZXMgYXJlIG9ubHkgdXNlZCBhcyB0cmlnZ2VycyB0byBkdW1wXG4gICAgIG91dCBjb21tYW5kIGluZm9ybWF0aW9uLiAqKVxuICBsZXQgZ2V0ZW52X2FuZF9jbGVhciB2YXIgPVxuICAgIGxldCB2YWx1ZSA9IFVuaXgudW5zYWZlX2dldGVudiB2YXIgaW5cbiAgICBpZiBPcHRpb24uaXNfc29tZSB2YWx1ZSB0aGVuIFVuaXgudW5zZXRlbnYgdmFyO1xuICAgIHZhbHVlXG4gIDs7XG5cbiAgbGV0IG1heWJlX2NvbXBfY3dvcmQgKCkgPSBnZXRlbnZfYW5kX2NsZWFyIGNvbXBfY3dvcmQgfD4gT3B0aW9uLm1hcCB+ZjpJbnQub2Zfc3RyaW5nXG5cbiAgbGV0IHNldF9jb21wX2N3b3JkIG5ld192YWx1ZSA9XG4gICAgbGV0IG5ld192YWx1ZSA9IEludC50b19zdHJpbmcgbmV3X3ZhbHVlIGluXG4gICAgVW5peC5wdXRlbnYgfmtleTpjb21wX2N3b3JkIH5kYXRhOm5ld192YWx1ZVxuICA7O1xuXG4gIG1vZHVsZSBFeGVjID0gc3RydWN0XG4gICAgaW5jbHVkZSBFeGVjXG5cbiAgICBsZXQgZXhlY193aXRoX2FyZ3MgdCB+YXJncyB+bWF5YmVfbmV3X2NvbXBfY3dvcmQgPVxuICAgICAgbGV0IHByb2cgPSBhYnNfcGF0aCB+ZGlyOnQud29ya2luZ19kaXIgdC5wYXRoX3RvX2V4ZSBpblxuICAgICAgbGV0IGFyZ3MgPSB0LmNoaWxkX3N1YmNvbW1hbmQgQCBhcmdzIGluXG4gICAgICBsZXQgZW52ID0gdC5lbnYgaW5cbiAgICAgIE9wdGlvbi5pdGVyIG1heWJlX25ld19jb21wX2N3b3JkIH5mOihmdW4gbiAtPlxuICAgICAgICAoKiBUaGUgbG9naWMgZm9yIHRyYWNraW5nIFttYXliZV9uZXdfY29tcF9jd29yZF0gZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCB3aGV0aGVyXG4gICAgICAgICAgIHRoaXMgZXhlYyBzcGVjaWZpZXMgYSBjaGlsZCBzdWJjb21tYW5kLiBJZiBpdCBkb2VzLCBDT01QX0NXT1JEIG5lZWRzIHRvIGJlIHNldFxuICAgICAgICAgICBoaWdoZXIgdG8gYWNjb3VudCBmb3IgdGhlIGFyZ3VtZW50cyB1c2VkIHRvIHNwZWNpZnkgdGhlIGNoaWxkIHN1YmNvbW1hbmQuICopXG4gICAgICAgIHNldF9jb21wX2N3b3JkIChuICsgTGlzdC5sZW5ndGggdC5jaGlsZF9zdWJjb21tYW5kKSk7XG4gICAgICBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGVcbiAgICAgICAgKEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXIuVW5peC5leGVjID9lbnYgfnByb2cgfmFyZ3Y6KHByb2cgOjogYXJncykgKCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTaGFwZS5TZXhwYWJsZVxuXG4gICAgbGV0IHJlYWRfc3Rkb3V0X2FuZF9zdGRlcnIgKHByb2Nlc3NfaW5mbyA6IFVuaXguUHJvY2Vzc19pbmZvLnQpID1cbiAgICAgICgqIFdlIG5lZWQgdG8gcmVhZCBlYWNoIG9mIHN0ZG91dCBhbmQgc3RkZXJyIGluIGEgc2VwYXJhdGUgdGhyZWFkIHRvIGF2b2lkIGRlYWRsb2Nrc1xuICAgICAgICAgaWYgdGhlIGNoaWxkIHByb2Nlc3MgZGVjaWRlcyB0byB3YWl0IGZvciBhIHJlYWQgb24gb25lIGJlZm9yZSBjbG9zaW5nIHRoZSBvdGhlci5cbiAgICAgICAgIEJ1ZmZlcmluZyBtYXkgaGlkZSB0aGlzIHByb2JsZW0gdW50aWwgb3V0cHV0IGlzIFwic3VmZmljaWVudGx5IGxhcmdlXCIuICopXG4gICAgICBsZXQgc3RhcnRfcmVhZGluZyBkZXNjciBpbmZvID1cbiAgICAgICAgbGV0IG91dHB1dCA9IHJlZiBOb25lIGluXG4gICAgICAgIGxldCB0aHJlYWQgPVxuICAgICAgICAgIFRocmVhZC5jcmVhdGVcbiAgICAgICAgICAgIH5vbl91bmNhdWdodF9leG46YFByaW50X3RvX3N0ZGVyclxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgZGVzY3IgfD4gVW5peC5pbl9jaGFubmVsX29mX2Rlc2NyIHw+IEluX2NoYW5uZWwuaW5wdXRfYWxsKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIG91dHB1dCA6PSBTb21lIHJlc3VsdClcbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgIFN0YWdlZC5zdGFnZSAoZnVuICgpIC0+XG4gICAgICAgICAgVGhyZWFkLmpvaW4gdGhyZWFkO1xuICAgICAgICAgIFVuaXguY2xvc2UgZGVzY3I7XG4gICAgICAgICAgbWF0Y2ggIW91dHB1dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiQlVHIGZhaWxlZCB0byByZWFkXCIgKGluZm8gOiBJbmZvLnQpXVxuICAgICAgICAgIHwgU29tZSAoT2sgb3V0cHV0KSAtPiBvdXRwdXRcbiAgICAgICAgICB8IFNvbWUgKEVycm9yIGV4bikgLT4gcmFpc2UgZXhuKVxuICAgICAgaW5cbiAgICAgICgqIFdlIG1pZ2h0IGhhbmcgZm9yZXZlciB0cnlpbmcgdG8gam9pbiB0aGUgcmVhZGluZyB0aHJlYWRzIGlmIHRoZSBjaGlsZCBwcm9jZXNzIGtlZXBzXG4gICAgICAgICB0aGUgZmlsZSBkZXNjcmlwdG9yIG9wZW4uIE5vdCBoYW5kbGluZyB0aGlzIGJlY2F1c2UgSSB0aGluayB3ZSd2ZSBuZXZlciBzZWVuIGl0XG4gICAgICAgICBpbiB0aGUgd2lsZCBkZXNwaXRlIHJ1bm5pbmcgdnVsbmVyYWJsZSBjb2RlIGZvciB5ZWFycy4gKilcbiAgICAgICgqIFdlIGhhdmUgdG8gc3RhcnQgYm90aCB0aHJlYWRzIGJlZm9yZSBqb2luaW5nIGFueSBvZiB0aGVtLiAqKVxuICAgICAgbGV0IGZpbmlzaF9zdGRvdXQgPSBzdGFydF9yZWFkaW5nIHByb2Nlc3NfaW5mby5zdGRvdXQgKEluZm8ub2Zfc3RyaW5nIFwic3Rkb3V0XCIpIGluXG4gICAgICBsZXQgZmluaXNoX3N0ZGVyciA9IHN0YXJ0X3JlYWRpbmcgcHJvY2Vzc19pbmZvLnN0ZGVyciAoSW5mby5vZl9zdHJpbmcgXCJzdGRlcnJcIikgaW5cbiAgICAgIFN0YWdlZC51bnN0YWdlIGZpbmlzaF9zdGRvdXQgKCksIFN0YWdlZC51bnN0YWdlIGZpbmlzaF9zdGRlcnIgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2V4dGVybmFsIH53b3JraW5nX2RpciB+cGF0aF90b19leGUgfmNoaWxkX3N1YmNvbW1hbmQgPVxuICAgICAgbGV0IHByb2Nlc3NfaW5mbyA9XG4gICAgICAgIFVuaXguY3JlYXRlX3Byb2Nlc3NfZW52XG4gICAgICAgICAgKClcbiAgICAgICAgICB+cHJvZzooYWJzX3BhdGggfmRpcjp3b3JraW5nX2RpciBwYXRoX3RvX2V4ZSlcbiAgICAgICAgICB+YXJnczpjaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICAgfmVudjpcbiAgICAgICAgICAgIChsZXQgaGVscF9zZXhwID1cbiAgICAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucyB8PiBTZXQuc2V4cF9vZl9tX190IChtb2R1bGUgSW50KSB8PiBTZXhwLnRvX3N0cmluZ1xuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgYEV4dGVuZCBbIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUCwgaGVscF9zZXhwIF0pXG4gICAgICBpblxuICAgICAgVW5peC5jbG9zZSBwcm9jZXNzX2luZm8uc3RkaW47XG4gICAgICBsZXQgc3Rkb3V0LCBzdGRlcnIgPSByZWFkX3N0ZG91dF9hbmRfc3RkZXJyIHByb2Nlc3NfaW5mbyBpblxuICAgICAgVW5peC53YWl0IHByb2Nlc3NfaW5mby5waWQ7XG4gICAgICAoKiBOb3cgd2UndmUga2lsbGVkIGFsbCB0aGUgcHJvY2Vzc2VzIGFuZCB0aHJlYWRzIHdlIG1hZGUuICopXG4gICAgICBtYXRjaCBzdGRvdXQgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZyB8PiBWZXJzaW9uZWQudF9vZl9zZXhwIHw+IG9mX3ZlcnNpb25lZCB3aXRoXG4gICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJjYW5ub3QgcGFyc2UgY29tbWFuZCBzaGFwZVwiXG4gICAgICAgICAgICAgIH5fOihleG4gOiBleG4pXG4gICAgICAgICAgICAgIChzdGRvdXQgOiBzdHJpbmcpXG4gICAgICAgICAgICAgIChzdGRlcnIgOiBzdHJpbmcpXVxuICAgICAgfCB0IC0+IHRcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBmaW5kICh0IDogdCkgfnBhdGhfdG9fc3ViY29tbWFuZCA9XG4gICAgICBtYXRjaCBwYXRoX3RvX3N1YmNvbW1hbmQgd2l0aFxuICAgICAgfCBbXSAtPiB0XG4gICAgICB8IHN1YiA6OiBzdWJzIC0+XG4gICAgICAgIChtYXRjaCB0IHdpdGhcbiAgICAgICAgIHwgQmFzZSBfIC0+IGZhaWx3aXRoZiBcInVuZXhwZWN0ZWQgc3ViY29tbWFuZCAlU1wiIHN1YiAoKVxuICAgICAgICAgfCBMYXp5IHRodW5rIC0+IGZpbmQgKExhenkuZm9yY2UgdGh1bmspIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgICAgICAgIHwgRXhlYyB7IHBhdGhfdG9fZXhlOyB3b3JraW5nX2RpcjsgY2hpbGRfc3ViY29tbWFuZDsgXyB9IC0+XG4gICAgICAgICAgIGZpbmRcbiAgICAgICAgICAgICAob2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZClcbiAgICAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kOihzdWIgOjogKHN1YnMgQCBjaGlsZF9zdWJjb21tYW5kKSlcbiAgICAgICAgIHwgR3JvdXAgZyAtPlxuICAgICAgICAgICAobWF0Y2ggTGlzdC5Bc3NvYy5maW5kIChMYXp5LmZvcmNlIGcuc3ViY29tbWFuZHMpIH5lcXVhbDpTdHJpbmcuZXF1YWwgc3ViIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJ1bmtub3duIHN1YmNvbW1hbmQgJVNcIiBzdWIgKClcbiAgICAgICAgICAgIHwgU29tZSB0IC0+IGZpbmQgdCB+cGF0aF90b19zdWJjb21tYW5kOnN1YnMpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBwcm94eV9vZl9leGUgfndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlIGNoaWxkX3N1YmNvbW1hbmQgPVxuICAgIFNleHBhYmxlLm9mX2V4dGVybmFsIH53b3JraW5nX2RpciB+cGF0aF90b19leGUgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICB8PiBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICB+cGF0aF90b19leGVcbiAgICAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kOltdXG4gIDs7XG5cbiAgbGV0IHJlYyBzaGFwZV9vZl9wcm94eSBwcm94eSA6IFNoYXBlLnQgPSBzaGFwZV9vZl9wcm94eV9raW5kIHByb3h5LlByb3h5LmtpbmRcblxuICBhbmQgc2hhcGVfb2ZfZXhlICgpIH5jaGlsZF9zdWJjb21tYW5kIH5wYXRoX3RvX2V4ZSB+d29ya2luZ19kaXIgPVxuICAgIHNoYXBlX29mX3Byb3h5IChwcm94eV9vZl9leGUgfndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlIGNoaWxkX3N1YmNvbW1hbmQpXG5cbiAgYW5kIHNoYXBlX29mX3Byb3h5X2tpbmQga2luZCA9XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgfCBCYXNlIGIgLT4gQmFzaWMgYlxuICAgIHwgTGF6eSBsIC0+IExhenkgKExhenkubWFwIH5mOnNoYXBlX29mX3Byb3h5X2tpbmQgbClcbiAgICB8IEdyb3VwIGcgLT5cbiAgICAgIEdyb3VwXG4gICAgICAgIHsgZyB3aXRoXG4gICAgICAgICAgc3ViY29tbWFuZHMgPSBMYXp5Lm1hcCBnLnN1YmNvbW1hbmRzIH5mOihMaXN0LkFzc29jLm1hcCB+ZjpzaGFwZV9vZl9wcm94eSlcbiAgICAgICAgfVxuICAgIHwgRXhlYyAoeyBjaGlsZF9zdWJjb21tYW5kOyBwYXRoX3RvX2V4ZTsgd29ya2luZ19kaXI7IF8gfSBhcyBlKSAtPlxuICAgICAgRXhlYyAoZSwgc2hhcGVfb2ZfZXhlIH5jaGlsZF9zdWJjb21tYW5kIH5wYXRoX3RvX2V4ZSB+d29ya2luZ19kaXIpXG4gIDs7XG5cbiAgbGV0IHJlYyBzaGFwZSB0IDogU2hhcGUudCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBCYXNlIGIgLT4gQmFzaWMgKENvbW1hbmRfYmFzZS5zaGFwZSBiKVxuICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXAuc2hhcGUgfnN1YmNvbW1hbmRfdG9fc2hhcGU6c2hhcGUgZylcbiAgICB8IEV4ZWMgKHsgRXhlYy5jaGlsZF9zdWJjb21tYW5kOyBwYXRoX3RvX2V4ZTsgd29ya2luZ19kaXI7IF8gfSBhcyBlKSAtPlxuICAgICAgRXhlYyAoRXhlYy5zaGFwZSBlLCBzaGFwZV9vZl9leGUgfmNoaWxkX3N1YmNvbW1hbmQgfnBhdGhfdG9fZXhlIH53b3JraW5nX2RpcilcbiAgICB8IExhenkgdGh1bmsgLT4gc2hhcGUgKExhenkuZm9yY2UgdGh1bmspXG4gIDs7XG5cbiAgbGV0IGdhdGhlcl9oZWxwIH5yZWN1cnNpdmUgfmZsYWdzIH5leHBhbmRfZG90cyBzaGFwZSA9XG4gICAgbGV0IHJlYyBsb29wIHBhdGggYWNjIHNoYXBlID1cbiAgICAgIGxldCBzdHJpbmdfb2ZfcGF0aCA9IGlmIGV4cGFuZF9kb3RzIHRoZW4gUGF0aC50b19zdHJpbmcgZWxzZSBQYXRoLnRvX3N0cmluZ19kb3RzIGluXG4gICAgICBsZXQgZ2F0aGVyX2dyb3VwIHBhdGggYWNjIHN1YmNvbW1hbmRzID1cbiAgICAgICAgbGV0IGZpbHRlcmVkX3N1YmNvbW1hbmRzID1cbiAgICAgICAgICAoKiBPbmx5IHNob3cgdGhlIFtoZWxwXSBzdWJjb21tYW5kIGF0IHRvcC1sZXZlbC4gKilcbiAgICAgICAgICBpZiBQYXRoLmlzX2VtcHR5IHBhdGhcbiAgICAgICAgICB0aGVuIHN1YmNvbW1hbmRzXG4gICAgICAgICAgZWxzZSBMaXN0LkFzc29jLnJlbW92ZSB+ZXF1YWw6U3RyaW5nLiggPSApIHN1YmNvbW1hbmRzIFwiaGVscFwiXG4gICAgICAgIGluXG4gICAgICAgIGZpbHRlcmVkX3N1YmNvbW1hbmRzXG4gICAgICAgIHw+IExpc3Quc3RhYmxlX3NvcnQgfmNvbXBhcmU6KGZ1biBhIGIgLT4gaGVscF9zY3JlZW5fY29tcGFyZSAoZnN0IGEpIChmc3QgYikpXG4gICAgICAgIHw+IExpc3QuZm9sZCB+aW5pdDphY2MgfmY6KGZ1biBhY2MgKHN1YmNvbW1hbmQsIHNoYXBlKSAtPlxuICAgICAgICAgIGxldCBwYXRoID0gUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZCBpblxuICAgICAgICAgIGxldCBuYW1lID0gc3RyaW5nX29mX3BhdGggcGF0aCBpblxuICAgICAgICAgIGxldCBkb2MgPSBTaGFwZS5nZXRfc3VtbWFyeSBzaGFwZSBpblxuICAgICAgICAgIGxldCBhY2MgPSB7IFNoYXBlLkZsYWdfaW5mby5uYW1lOyBkb2M7IGFsaWFzZXMgPSBbXSB9IDo6IGFjYyBpblxuICAgICAgICAgIGlmIHJlY3Vyc2l2ZSB0aGVuIGxvb3AgcGF0aCBhY2Mgc2hhcGUgZWxzZSBhY2MpXG4gICAgICBpblxuICAgICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgICAgfCBFeGVjIChfLCBzaGFwZSkgLT5cbiAgICAgICAgKCogSWYgdGhlIGV4ZWN1dGFibGUgYmVpbmcgY2FsbGVkIGRvZXNuJ3QgdXNlIFtDb3JlLkNvbW1hbmRdLCB0aGVuIHNleHAgZXh0cmFjdGlvblxuICAgICAgICAgICB3aWxsIGZhaWwuICopXG4gICAgICAgICh0cnkgbG9vcCBwYXRoIGFjYyAoc2hhcGUgKCkpIHdpdGhcbiAgICAgICAgIHwgXyAtPiBhY2MpXG4gICAgICB8IEdyb3VwIGcgLT4gZ2F0aGVyX2dyb3VwIHBhdGggYWNjIChMYXp5LmZvcmNlIGcuc3ViY29tbWFuZHMpXG4gICAgICB8IEJhc2ljIGIgLT5cbiAgICAgICAgaWYgZmxhZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIGIuZmxhZ3NcbiAgICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIGZtdCAtPiBTdHJpbmcuKCA8PiApIGZtdC5uYW1lIFwiWy1oZWxwXVwiKVxuICAgICAgICAgIHw+IExpc3QuZm9sZCB+aW5pdDphY2MgfmY6KGZ1biBhY2MgZm10IC0+XG4gICAgICAgICAgICBsZXQgcGF0aCA9IFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQ6Zm10Lm5hbWUgaW5cbiAgICAgICAgICAgIGxldCBmbXQgPSB7IGZtdCB3aXRoIG5hbWUgPSBzdHJpbmdfb2ZfcGF0aCBwYXRoIH0gaW5cbiAgICAgICAgICAgIGZtdCA6OiBhY2MpXG4gICAgICAgIGVsc2UgYWNjXG4gICAgICB8IExhenkgdGh1bmsgLT4gbG9vcCBwYXRoIGFjYyAoTGF6eS5mb3JjZSB0aHVuaylcbiAgICBpblxuICAgIGxvb3AgUGF0aC5lbXB0eSBbXSBzaGFwZSB8PiBMaXN0LnJldlxuICA7O1xuXG4gIGxldCBncm91cF9vcl9leGVjX2hlbHBfdGV4dCB+ZmxhZ3MgfnBhdGggfnN1bW1hcnkgfnJlYWRtZSB+Zm9ybWF0X2xpc3QgPVxuICAgIHVucGFyYWdyYXBoc1xuICAgICAgKExpc3QuZmlsdGVyX29wdFxuICAgICAgICAgWyBTb21lIHN1bW1hcnlcbiAgICAgICAgIDsgU29tZSAoU3RyaW5nLmNvbmNhdCBbIFwiICBcIjsgUGF0aC50b19zdHJpbmcgcGF0aDsgXCIgU1VCQ09NTUFORFwiIF0pXG4gICAgICAgICA7IHJlYWRtZVxuICAgICAgICAgOyBTb21lIChpZiBmbGFncyB0aGVuIFwiPT09IHN1YmNvbW1hbmRzIGFuZCBmbGFncyA9PT1cIiBlbHNlIFwiPT09IHN1YmNvbW1hbmRzID09PVwiKVxuICAgICAgICAgOyBTb21lIChTaGFwZS5GbGFnX2hlbHBfZGlzcGxheS50b19zdHJpbmcgZm9ybWF0X2xpc3QpXG4gICAgICAgICBdKVxuICA7O1xuXG4gIGxldCByZWMgaGVscF9mb3Jfc2hhcGUgc2hhcGUgcGF0aCB+ZXhwYW5kX2RvdHMgfmZsYWdzIH5yZWN1cnNpdmUgPVxuICAgIGxldCBmb3JtYXRfbGlzdCA9IGdhdGhlcl9oZWxwIH5leHBhbmRfZG90cyB+ZmxhZ3MgfnJlY3Vyc2l2ZSBzaGFwZSBpblxuICAgIG1hdGNoIHNoYXBlIHdpdGhcbiAgICB8IEJhc2ljIGIgLT5cbiAgICAgIGxldCB1c2FnZSA9IFNoYXBlLkJhc2VfaW5mby5nZXRfdXNhZ2UgYiBpblxuICAgICAgdW5wYXJhZ3JhcGhzXG4gICAgICAgIChMaXN0LmZpbHRlcl9vcHRcbiAgICAgICAgICAgWyBTb21lIGIuc3VtbWFyeVxuICAgICAgICAgICA7IFNvbWUgKFwiICBcIiBeIFBhdGgudG9fc3RyaW5nIHBhdGggXiBcIiBcIiBeIHVzYWdlKVxuICAgICAgICAgICA7IGIucmVhZG1lXG4gICAgICAgICAgIDsgU29tZSBcIj09PSBmbGFncyA9PT1cIlxuICAgICAgICAgICA7IFNvbWUgKFNoYXBlLkZsYWdfaGVscF9kaXNwbGF5LnRvX3N0cmluZyBiLmZsYWdzKVxuICAgICAgICAgICBdKVxuICAgIHwgR3JvdXAgZyAtPlxuICAgICAgZ3JvdXBfb3JfZXhlY19oZWxwX3RleHRcbiAgICAgICAgfmZsYWdzXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5yZWFkbWU6Zy5yZWFkbWVcbiAgICAgICAgfnN1bW1hcnk6Zy5zdW1tYXJ5XG4gICAgICAgIH5mb3JtYXRfbGlzdFxuICAgIHwgRXhlYyAoZSwgXykgLT5cbiAgICAgIGdyb3VwX29yX2V4ZWNfaGVscF90ZXh0XG4gICAgICAgIH5mbGFnc1xuICAgICAgICB+cGF0aFxuICAgICAgICB+cmVhZG1lOmUucmVhZG1lXG4gICAgICAgIH5zdW1tYXJ5OmUuc3VtbWFyeVxuICAgICAgICB+Zm9ybWF0X2xpc3RcbiAgICB8IExhenkgdGh1bmsgLT4gaGVscF9mb3Jfc2hhcGUgKExhenkuZm9yY2UgdGh1bmspIHBhdGggfmV4cGFuZF9kb3RzIH5mbGFncyB+cmVjdXJzaXZlXG4gIDs7XG5cbiAgbGV0IGhlbHBfc3ViY29tbWFuZCB+c3VtbWFyeSB+cmVhZG1lID1cbiAgICBiYXNpY1xuICAgICAgfnN1bW1hcnk6XCJleHBsYWluIGEgZ2l2ZW4gc3ViY29tbWFuZCAocGVyaGFwcyByZWN1cnNpdmVseSlcIlxuICAgICAgQ29tbWFuZF9iYXNlLlBhcmFtLihcbiAgICAgICAgcmV0dXJuIChmdW4gcmVjdXJzaXZlIGZsYWdzIGV4cGFuZF9kb3RzIHBhdGggKGVudiA6IEVudi50KSBjbWRfb3B0ICgpIC0+XG4gICAgICAgICAgbGV0IHN1YnMgPVxuICAgICAgICAgICAgbWF0Y2ggRW52LmZpbmQgZW52IHN1YnNfa2V5IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBzdWJzIC0+IHN1YnNcbiAgICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICgqIG1haW50YWluZWQgYnkgW2Rpc3BhdGNoXSAqKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHBhdGggPVxuICAgICAgICAgICAgbGV0IHBhdGggPSBQYXRoLnBvcF9oZWxwIHBhdGggaW5cbiAgICAgICAgICAgIE9wdGlvbi5mb2xkIGNtZF9vcHQgfmluaXQ6cGF0aCB+ZjooZnVuIHBhdGggc3ViY29tbWFuZCAtPlxuICAgICAgICAgICAgICBQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHBhdGgsIHNoYXBlID1cbiAgICAgICAgICAgIG1hdGNoIGNtZF9vcHQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBzdWJjb21tYW5kcyA9IExpc3QuQXNzb2MubWFwIHN1YnMgfmY6c2hhcGUgfD4gTGF6eS5mcm9tX3ZhbCBpblxuICAgICAgICAgICAgICBsZXQgcmVhZG1lID0gT3B0aW9uLm1hcCByZWFkbWUgfmY6KGZ1biByZWFkbWUgLT4gcmVhZG1lICgpKSBpblxuICAgICAgICAgICAgICBwYXRoLCBTaGFwZS5Hcm91cCB7IHJlYWRtZTsgc3VtbWFyeTsgc3ViY29tbWFuZHMgfVxuICAgICAgICAgICAgfCBTb21lIGNtZCAtPlxuICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgbG9va3VwX2V4cGFuZFxuICAgICAgICAgICAgICAgICAgIChMaXN0LkFzc29jLm1hcCBzdWJzIH5mOihmdW4geCAtPiB4LCBgUHJlZml4KSlcbiAgICAgICAgICAgICAgICAgICBjbWRcbiAgICAgICAgICAgICAgICAgICBTdWJjb21tYW5kXG4gICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIGUgLT5cbiAgICAgICAgICAgICAgICAgZGllXG4gICAgICAgICAgICAgICAgICAgXCJ1bmtub3duIHN1YmNvbW1hbmQgJXMgZm9yIGNvbW1hbmQgJXM6ICVzXCJcbiAgICAgICAgICAgICAgICAgICBjbWRcbiAgICAgICAgICAgICAgICAgICAoUGF0aC50b19zdHJpbmcgcGF0aClcbiAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgIHwgT2sgKHBvc3NpYmx5X2V4cGFuZGVkX25hbWUsIHQpIC0+XG4gICAgICAgICAgICAgICAgICgqIEZpeCB0aGUgdW5leHBhbmRlZCB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICBsZXQgcGF0aCA9XG4gICAgICAgICAgICAgICAgICAgUGF0aC5yZXBsYWNlX2ZpcnN0IH5mcm9tOmNtZCB+dG9fOnBvc3NpYmx5X2V4cGFuZGVkX25hbWUgcGF0aFxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBwYXRoLCBzaGFwZSB0KVxuICAgICAgICAgIGluXG4gICAgICAgICAgcHJpbnRfZW5kbGluZSAoaGVscF9mb3Jfc2hhcGUgc2hhcGUgcGF0aCB+cmVjdXJzaXZlIH5mbGFncyB+ZXhwYW5kX2RvdHMpKVxuICAgICAgICA8Kj4gZmxhZyBcIi1yZWN1cnNpdmVcIiBub19hcmcgfmRvYzpcIiBzaG93IHN1YmNvbW1hbmRzIG9mIHN1YmNvbW1hbmRzLCBldGMuXCJcbiAgICAgICAgPCo+IGZsYWcgXCItZmxhZ3NcIiBub19hcmcgfmRvYzpcIiBzaG93IGZsYWdzIGFzIHdlbGwgaW4gcmVjdXJzaXZlIGhlbHBcIlxuICAgICAgICA8Kj4gZmxhZyBcIi1leHBhbmQtZG90c1wiIG5vX2FyZyB+ZG9jOlwiIGV4cGFuZCBzdWJjb21tYW5kcyBpbiByZWN1cnNpdmUgaGVscFwiXG4gICAgICAgIDwqPiBwYXRoXG4gICAgICAgIDwqPiBlbnZcbiAgICAgICAgPCo+IGFub24gKG1heWJlIChcIlNVQkNPTU1BTkRcIiAlOiBzdHJpbmcpKSlcbiAgOztcblxuICAoKiBUaGlzIHNjcmlwdCB3b3JrcyBpbiBib3RoIGJhc2ggKHZpYSByZWFkYXJyYXkpIGFuZCB6c2ggKHZpYSByZWFkIC1BKS4gIElmIHlvdSBjaGFuZ2VcbiAgICAgaXQsIHBsZWFzZSB0ZXN0IGluIGJvdGggYmFzaCBhbmQgenNoLiAgSXQgZG9lcyBub3Qgd29yayB0Y3NoIChkaWZmZXJlbnQgZnVuY3Rpb25cbiAgICAgc3ludGF4KS4gKilcbiAgbGV0IGR1bXBfYXV0b2NvbXBsZXRlX2Z1bmN0aW9uICgpID1cbiAgICBsZXQgZm5hbWUgPSBzcHJpbnRmIFwiX2pzYXV0b2NvbV8lc1wiIChQaWQudG9fc3RyaW5nIChVbml4LmdldHBpZCAoKSkpIGluXG4gICAgbGV0IGFyZ3ZfMCA9IFN0ZGxpYi5TeXMuYXJndi4oMCkgaW5cbiAgICBwcmludGZcbiAgICAgIFwiZnVuY3Rpb24gJXMge1xcblxcXG4gICAgICBcXCAgZXhwb3J0IENPTVBfQ1dPUkRcXG5cXFxuICAgICAgXFwgIENPTVBfV09SRFNbMF09JXNcXG5cXFxuICAgICAgXFwgIGlmIHR5cGUgcmVhZGFycmF5ID4gL2Rldi9udWxsXFxuXFxcbiAgICAgIFxcICB0aGVuIHJlYWRhcnJheSAtdCBDT01QUkVQTFkgPCA8KFxcXCIke0NPTVBfV09SRFNbQF19XFxcIilcXG5cXFxuICAgICAgXFwgIGVsc2UgSUZTPVxcXCJcXG5cXFxuICAgICAgIFxcXCIgcmVhZCAtZCBcXFwiXFxcIiAtQSBDT01QUkVQTFkgPCA8KFxcXCIke0NPTVBfV09SRFNbQF19XFxcIilcXG5cXFxuICAgICAgXFwgIGZpXFxuXFxcbiAgICAgICB9XFxuXFxcbiAgICAgICBjb21wbGV0ZSAtRiAlcyAlc1xcblxcXG4gICAgICAgJSFcIlxuICAgICAgZm5hbWVcbiAgICAgIGFyZ3ZfMFxuICAgICAgZm5hbWVcbiAgICAgIGFyZ3ZfMFxuICA7O1xuXG4gIGxldCBkdW1wX2hlbHBfc2V4cCB+c3VwcG9ydGVkX3ZlcnNpb25zIHQgfnBhdGhfdG9fc3ViY29tbWFuZCA9XG4gICAgU2V0LmludGVyIFNleHBhYmxlLnN1cHBvcnRlZF92ZXJzaW9ucyBzdXBwb3J0ZWRfdmVyc2lvbnNcbiAgICB8PiBTZXQubWF4X2VsdFxuICAgIHw+IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+XG4gICAgICBFcnJvci5jcmVhdGVcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIkNvdWxkbid0IGNob29zZSBhIHN1cHBvcnRlZCBoZWxwIG91dHB1dCB2ZXJzaW9uIGZvciBDb21tYW5kLmV4ZWMgZnJvbSB0aGUgZ2l2ZW4gXFxcbiAgICAgICAgIHN1cHBvcnRlZCB2ZXJzaW9ucy5cIlxuICAgICAgICBTZXhwYWJsZS5zdXBwb3J0ZWRfdmVyc2lvbnNcbiAgICAgICAgKFNldC5zZXhwX29mX21fX3QgKG1vZHVsZSBJbnQpKVxuICAgICAgfD4gRXJyb3IucmFpc2VcbiAgICB8IFNvbWUgdmVyc2lvbl90b191c2UgLT5cbiAgICAgIHNleHBhYmxlX3NoYXBlIHRcbiAgICAgIHw+IFNleHBhYmxlLmZpbmQgfnBhdGhfdG9fc3ViY29tbWFuZFxuICAgICAgfD4gU2V4cGFibGUudG9fdmVyc2lvbmVkIH52ZXJzaW9uX3RvX3VzZVxuICAgICAgfD4gU2V4cGFibGUuVmVyc2lvbmVkLnNleHBfb2ZfdFxuICAgICAgfD4gU2V4cC50b19zdHJpbmdcbiAgICAgIHw+IHByaW50X3N0cmluZ1xuICA7O1xuXG4gIGxldCBoYW5kbGVfZW52aXJvbm1lbnQgdCB+YXJndiA9XG4gICAgbWF0Y2ggYXJndiB3aXRoXG4gICAgfCBbXSAtPiBmYWlsd2l0aCBcIm1pc3NpbmcgZXhlY3V0YWJsZSBuYW1lXCJcbiAgICB8IGNtZCA6OiBhcmdzIC0+XG4gICAgICBPcHRpb24uaXRlciAoZ2V0ZW52X2FuZF9jbGVhciBDT01NQU5EX09VVFBVVF9IRUxQX1NFWFApIH5mOihmdW4gdmVyc2lvbiAtPlxuICAgICAgICBsZXQgc3VwcG9ydGVkX3ZlcnNpb25zID1cbiAgICAgICAgICBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHZlcnNpb24gfD4gU2V0Lm1fX3Rfb2Zfc2V4cCAobW9kdWxlIEludClcbiAgICAgICAgaW5cbiAgICAgICAgZHVtcF9oZWxwX3NleHAgfnN1cHBvcnRlZF92ZXJzaW9ucyB0IH5wYXRoX3RvX3N1YmNvbW1hbmQ6YXJncztcbiAgICAgICAgZXhpdCAwKTtcbiAgICAgIE9wdGlvbi5pdGVyIChnZXRlbnZfYW5kX2NsZWFyIENPTU1BTkRfT1VUUFVUX0lOU1RBTExBVElPTl9CQVNIKSB+ZjooZnVuIF8gLT5cbiAgICAgICAgZHVtcF9hdXRvY29tcGxldGVfZnVuY3Rpb24gKCk7XG4gICAgICAgIGV4aXQgMCk7XG4gICAgICBjbWQsIGFyZ3NcbiAgOztcblxuICBsZXQgcHJvY2Vzc19hcmdzIH5jbWQgfmFyZ3MgPVxuICAgIGxldCBtYXliZV9jb21wX2N3b3JkID0gbWF5YmVfY29tcF9jd29yZCAoKSBpblxuICAgIGxldCBhcmdzID1cbiAgICAgIG1hdGNoIG1heWJlX2NvbXBfY3dvcmQgd2l0aFxuICAgICAgfCBOb25lIC0+IENtZGxpbmUub2ZfbGlzdCBhcmdzXG4gICAgICB8IFNvbWUgY29tcF9jd29yZCAtPlxuICAgICAgICBsZXQgYXJncyA9IExpc3QudGFrZSAoYXJncyBAIFsgXCJcIiBdKSBjb21wX2N3b3JkIGluXG4gICAgICAgIExpc3QuZm9sZF9yaWdodCBhcmdzIH5pbml0OkNtZGxpbmUuTmlsIH5mOihmdW4gYXJnIGFyZ3MgLT5cbiAgICAgICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgICB8IENtZGxpbmUuTmlsIC0+IENtZGxpbmUuQ29tcGxldGUgYXJnXG4gICAgICAgICAgfCBfIC0+IENtZGxpbmUuQ29ucyAoYXJnLCBhcmdzKSlcbiAgICBpblxuICAgIFBhdGguY3JlYXRlIH5wYXRoX3RvX2V4ZTpjbWQsIGFyZ3MsIG1heWJlX2NvbXBfY3dvcmRcbiAgOztcblxuICBsZXQgcmVjIGFkZF9oZWxwX3N1YmNvbW1hbmRzID0gZnVuY3Rpb25cbiAgICB8IEJhc2UgXyBhcyB0IC0+IHRcbiAgICB8IEV4ZWMgXyBhcyB0IC0+IHRcbiAgICB8IEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kczsgYm9keSB9IC0+XG4gICAgICBsZXQgc3ViY29tbWFuZHMgPVxuICAgICAgICBMYXp5Lm1hcCBzdWJjb21tYW5kcyB+ZjooZnVuIHN1YmNvbW1hbmRzIC0+XG4gICAgICAgICAgZXh0ZW5kX2FsaXN0X2V4blxuICAgICAgICAgICAgKExpc3QuQXNzb2MubWFwIHN1YmNvbW1hbmRzIH5mOmFkZF9oZWxwX3N1YmNvbW1hbmRzKVxuICAgICAgICAgICAgS2V5X3R5cGUuU3ViY29tbWFuZFxuICAgICAgICAgICAgfmtleTpcImhlbHBcIlxuICAgICAgICAgICAgKGhlbHBfc3ViY29tbWFuZCB+c3VtbWFyeSB+cmVhZG1lKSlcbiAgICAgIGluXG4gICAgICBHcm91cCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHM7IGJvZHkgfVxuICAgIHwgTGF6eSB0aHVuayAtPiBMYXp5IChsYXp5IChhZGRfaGVscF9zdWJjb21tYW5kcyAoTGF6eS5mb3JjZSB0aHVuaykpKVxuICA7O1xuXG4gIGxldCBtYXliZV9hcHBseV9leHRlbmQgYXJncyB+ZXh0ZW5kIH5wYXRoID1cbiAgICBPcHRpb24udmFsdWVfbWFwIGV4dGVuZCB+ZGVmYXVsdDphcmdzIH5mOihmdW4gZiAtPlxuICAgICAgQ21kbGluZS5leHRlbmQgYXJncyB+ZXh0ZW5kOmYgfnBhdGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBkaXNwYXRjaFxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgZW52XG4gICAgICAgICAgICB+ZXh0ZW5kXG4gICAgICAgICAgICB+cGF0aFxuICAgICAgICAgICAgfmFyZ3NcbiAgICAgICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTGF6eSB0aHVuayAtPlxuICAgICAgbGV0IHQgPSBMYXp5LmZvcmNlIHRodW5rIGluXG4gICAgICBkaXNwYXRjaFxuICAgICAgICB0XG4gICAgICAgIGVudlxuICAgICAgICB+ZXh0ZW5kXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5hcmdzXG4gICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICB+dmVyc2lvblxuICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgIHwgQmFzZSBiYXNlIC0+XG4gICAgICBsZXQgYXJncyA9IG1heWJlX2FwcGx5X2V4dGVuZCBhcmdzIH5leHRlbmQgfnBhdGggaW5cbiAgICAgIGxldCBoZWxwX3RleHQgPVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKGhlbHBfZm9yX3NoYXBlIChzaGFwZSB0KSBwYXRoIH5yZWN1cnNpdmU6ZmFsc2UgfmZsYWdzOnRydWUgfmV4cGFuZF9kb3RzOmZhbHNlKVxuICAgICAgaW5cbiAgICAgIENvbW1hbmRfYmFzZS5ydW5cbiAgICAgICAgYmFzZVxuICAgICAgICBlbnZcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfmFyZ3NcbiAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgfmhlbHBfdGV4dFxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgIH5vbl9mYWlsdXJlOkNvbW1hbmRfYmFzZS5ydW5fZXhuXG4gICAgfCBFeGVjIGV4ZWMgLT5cbiAgICAgIGxldCBhcmdzID0gQ21kbGluZS50b19saXN0IChtYXliZV9hcHBseV9leHRlbmQgYXJncyB+ZXh0ZW5kIH5wYXRoKSBpblxuICAgICAgRXhlYy5leGVjX3dpdGhfYXJncyB+YXJncyBleGVjIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgIHwgR3JvdXAgKHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyA9IHN1YnM7IGJvZHkgfSBhcyBncm91cCkgLT5cbiAgICAgIGxldCBjb21wbGV0aW5nID0gQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3MgaW5cbiAgICAgIGxldCBlbnYgPSBFbnYuc2V0IGVudiB+a2V5OnN1YnNfa2V5IH5kYXRhOihMYXp5LmZvcmNlIHN1YnMpIGluXG4gICAgICBsZXQgZGllX3Nob3dpbmdfaGVscCBtc2cgPVxuICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgIHRoZW4gZXhpdCAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgIFwiJXNcXG4lIVwiXG4gICAgICAgICAgICAoaGVscF9mb3Jfc2hhcGVcbiAgICAgICAgICAgICAgIH5yZWN1cnNpdmU6ZmFsc2VcbiAgICAgICAgICAgICAgIH5mbGFnczpmYWxzZVxuICAgICAgICAgICAgICAgfmV4cGFuZF9kb3RzOmZhbHNlXG4gICAgICAgICAgICAgICAoc2hhcGUgKEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyA9IHN1YnM7IGJvZHkgfSkpXG4gICAgICAgICAgICAgICBwYXRoKTtcbiAgICAgICAgICBkaWUgXCIlc1wiIG1zZyAoKSlcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIHBhcnNlX2dyb3VwIGFyZ3Mgfm1heWJlX25ld19jb21wX2N3b3JkID1cbiAgICAgICAgbGV0IG1heWJlX25ld19jb21wX2N3b3JkID0gT3B0aW9uLm1hcCB+ZjpJbnQucHJlZCBtYXliZV9uZXdfY29tcF9jd29yZCBpblxuICAgICAgICBsZXQgc2tpcCByZXN0ID0gcGFyc2VfZ3JvdXAgcmVzdCB+bWF5YmVfbmV3X2NvbXBfY3dvcmQgaW5cbiAgICAgICAgbGV0IHJlc29sdmUgc3ViIHJlc3QgPVxuICAgICAgICAgIGxldCBzdWJzID0gTGlzdC5Bc3NvYy5tYXAgKExhenkuZm9yY2Ugc3VicykgfmY6KGZ1biB4IC0+IHgsIGBQcmVmaXgpIGluXG4gICAgICAgICAgbWF0Y2ggbG9va3VwX2V4cGFuZCBzdWJzIHN1YiBTdWJjb21tYW5kIHdpdGhcbiAgICAgICAgICB8IEVycm9yIG1zZyAtPiBkaWVfc2hvd2luZ19oZWxwIG1zZ1xuICAgICAgICAgIHwgT2sgKHN1YiwgdCkgLT5cbiAgICAgICAgICAgIGRpc3BhdGNoXG4gICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgZW52XG4gICAgICAgICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgICAgICAgfmV4dGVuZFxuICAgICAgICAgICAgICB+cGF0aDooUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZDpzdWIpXG4gICAgICAgICAgICAgIH5hcmdzOnJlc3RcbiAgICAgICAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaCAoYXJncyA6IENtZGxpbmUudCkgd2l0aFxuICAgICAgICB8IE5pbCAtPlxuICAgICAgICAgIChtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgZGllX3Nob3dpbmdfaGVscFxuICAgICAgICAgICAgICAgKHNwcmludGYgXCJtaXNzaW5nIHN1YmNvbW1hbmQgZm9yIGNvbW1hbmQgJXNcIiAoUGF0aC50b19zdHJpbmcgcGF0aCkpXG4gICAgICAgICAgIHwgU29tZSBib2R5IC0+IGJvZHkgfnBhdGg6KFBhdGgucGFydHNfZXhlX2Jhc2VuYW1lIHBhdGgpKVxuICAgICAgICB8IENvbnMgKHN1YiwgcmVzdCkgLT5cbiAgICAgICAgICAoKiBNYXRjaCBmb3IgZmxhZ3MgcmVjb2duaXplZCB3aGVuIHN1YmNvbW1hbmRzIGFyZSBleHBlY3RlZCBuZXh0ICopXG4gICAgICAgICAgKG1hdGNoIHN1YiB3aXRoXG4gICAgICAgICAgICgqIFJlY29nbml6ZWQgYXQgdGhlIHRvcCBsZXZlbCBjb21tYW5kIG9ubHkgKilcbiAgICAgICAgICAgfCAoXCItdmVyc2lvblwiIHwgXCItLXZlcnNpb25cIikgd2hlbiBQYXRoLmxlbmd0aCBwYXRoID0gMSAtPlxuICAgICAgICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgICAgICB0aGVuIHNraXAgcmVzdFxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgVmVyc2lvbl9pbmZvLnByaW50X3ZlcnNpb24gfnZlcnNpb247XG4gICAgICAgICAgICAgICBleGl0IDApXG4gICAgICAgICAgIHwgKFwiLWJ1aWxkLWluZm9cIiB8IFwiLS1idWlsZC1pbmZvXCIpIHdoZW4gUGF0aC5sZW5ndGggcGF0aCA9IDEgLT5cbiAgICAgICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgICAgICAgdGhlbiBza2lwIHJlc3RcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIFZlcnNpb25faW5mby5wcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvO1xuICAgICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgICAgICAoKiBSZWNvZ25pemVkIGV2ZXJ5d2hlcmUgKilcbiAgICAgICAgICAgfCBcIi1oZWxwXCIgfCBcIi0taGVscFwiIC0+XG4gICAgICAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICAgICAgIHRoZW4gc2tpcCByZXN0XG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgICAgIHwgTmlsIHwgQ29tcGxldGUgKF8gOiBzdHJpbmcpIC0+XG4gICAgICAgICAgICAgICAgIHByaW50X2VuZGxpbmVcbiAgICAgICAgICAgICAgICAgICAoaGVscF9mb3Jfc2hhcGVcbiAgICAgICAgICAgICAgICAgICAgICB+cmVjdXJzaXZlOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfmZsYWdzOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZF9kb3RzOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKHNoYXBlIChHcm91cCB7IGdyb3VwIHdpdGggc3ViY29tbWFuZHMgPSBzdWJzIH0pKVxuICAgICAgICAgICAgICAgICAgICAgIHBhdGgpO1xuICAgICAgICAgICAgICAgICBleGl0IDBcbiAgICAgICAgICAgICAgIHwgQ21kbGluZS5Db25zIChmaXJzdF9vZl9yZXN0LCByZXN0X29mX3Jlc3QpIC0+XG4gICAgICAgICAgICAgICAgIHJlc29sdmUgZmlyc3Rfb2ZfcmVzdCAoQ29ucyAoc3ViLCByZXN0X29mX3Jlc3QpKSlcbiAgICAgICAgICAgfCAoXyA6IHN0cmluZykgLT4gcmVzb2x2ZSBzdWIgcmVzdClcbiAgICAgICAgfCBDb21wbGV0ZSBwYXJ0IC0+XG4gICAgICAgICAgbGV0IHN1YnMgPVxuICAgICAgICAgICAgTGF6eS5mb3JjZSBzdWJzXG4gICAgICAgICAgICB8PiBMaXN0Lm1hcCB+Zjpmc3RcbiAgICAgICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gbmFtZSAtPiBTdHJpbmcuaXNfcHJlZml4IG5hbWUgfnByZWZpeDpwYXJ0KVxuICAgICAgICAgICAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOlN0cmluZy5jb21wYXJlXG4gICAgICAgICAgaW5cbiAgICAgICAgICAobWF0Y2ggY29tcGxldGVfc3ViY29tbWFuZHMgd2l0aFxuICAgICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgIGxldCBzdWJjb21tYW5kcyA9XG4gICAgICAgICAgICAgICBzaGFwZSB0IHw+IFNoYXBlLmZ1bGx5X2ZvcmNlZCB8PiBTaGFwZS5GdWxseV9mb3JjZWQuZXhwYW5kZWRfc3ViY29tbWFuZHNcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIChtYXRjaCBmIH5wYXRoOihQYXRoLnBhcnRzIHBhdGgpIH5wYXJ0IHN1YmNvbW1hbmRzIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGV4aXQgMVxuICAgICAgICAgICAgICB8IFNvbWUgdG9fb3V0cHV0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnRfZW5kbGluZSAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIHRvX291dHB1dCk7XG4gICAgICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBMaXN0Lml0ZXIgc3VicyB+ZjpwcmludF9lbmRsaW5lO1xuICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgIGluXG4gICAgICBwYXJzZV9ncm91cCBhcmdzIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICA7O1xuXG4gIGxldCBydW5cbiAgICAgICAgP3ZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgP3ZlcnNpb25cbiAgICAgICAgP2J1aWxkX2luZm9cbiAgICAgICAgPyhhcmd2ID0gQXJyYXkudG9fbGlzdCBTdGRsaWIuU3lzLmFyZ3YpXG4gICAgICAgID9leHRlbmRcbiAgICAgICAgPyh3aGVuX3BhcnNpbmdfc3VjY2VlZHMgPSBGbi5pZClcbiAgICAgICAgP2NvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICAgIHRcbiAgICA9XG4gICAgbGV0IGJ1aWxkX2luZm8gPVxuICAgICAgbWF0Y2ggYnVpbGRfaW5mbyB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBsYXp5IHZcbiAgICAgIHwgTm9uZSAtPiBWZXJzaW9uX2luZm8uZGVmYXVsdF9idWlsZF9pbmZvXG4gICAgaW5cbiAgICBsZXQgdmVyc2lvbiA9XG4gICAgICBtYXRjaCB2ZXJzaW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBWZXJzaW9uX2luZm8uZGVmYXVsdF92ZXJzaW9uXG4gICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAoKiBbdmVyc2lvbl0gd2FzIHNwYWNlIGRlbGltaXRlZCBhdCBzb21lIHBvaW50IGFuZCBuZXdsaW5lIGRlbGltaXRlZFxuICAgICAgICAgICBhdCBhbm90aGVyLiAgV2UgYWx3YXlzIHByaW50IG9uZSAocmVwbywgcmV2aXNpb24pIHBhaXIgcGVyIGxpbmVcbiAgICAgICAgICAgYW5kIGVuc3VyZSBzb3J0ZWQgb3JkZXIgKilcbiAgICAgICAgbGF6eVxuICAgICAgICAgIChWZXJzaW9uX2luZm8ubm9ybWFsaXplX3ZlcnNpb25fbGluZXNcbiAgICAgICAgICAgICAoU3RyaW5nLnNwbGl0IHYgfm9uOicgJyB8PiBMaXN0LmNvbmNhdF9tYXAgfmY6KFN0cmluZy5zcGxpdCB+b246J1xcbicpKSlcbiAgICBpblxuICAgIEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPlxuICAgICAgbGV0IHQgPSBWZXJzaW9uX2luZm8uYWRkIHQgfnZlcnNpb24gfmJ1aWxkX2luZm8gaW5cbiAgICAgIGxldCB0ID0gYWRkX2hlbHBfc3ViY29tbWFuZHMgdCBpblxuICAgICAgbGV0IGNtZCwgYXJncyA9IGhhbmRsZV9lbnZpcm9ubWVudCB0IH5hcmd2IGluXG4gICAgICBsZXQgcGF0aCwgYXJncywgbWF5YmVfbmV3X2NvbXBfY3dvcmQgPSBwcm9jZXNzX2FyZ3MgfmNtZCB+YXJncyBpblxuICAgICAgdHJ5XG4gICAgICAgIGRpc3BhdGNoXG4gICAgICAgICAgdFxuICAgICAgICAgIEVudi5lbXB0eVxuICAgICAgICAgIH5leHRlbmRcbiAgICAgICAgICB+cGF0aFxuICAgICAgICAgIH5hcmdzXG4gICAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgICAgd2l0aFxuICAgICAgfCBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG1zZyAtPlxuICAgICAgICBpZiBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJnc1xuICAgICAgICB0aGVuIGV4aXQgMFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBwcmVycl9lbmRsaW5lIG1zZztcbiAgICAgICAgICBleGl0IDEpKVxuICA7O1xuXG4gIGxldCBkZXByZWNhdGVkX3J1biB0IH5jbWQgfmFyZ3MgfmlzX2hlbHAgfmlzX2hlbHBfcmVjIH5pc19oZWxwX3JlY19mbGFncyB+aXNfZXhwYW5kX2RvdHNcbiAgICA9XG4gICAgbGV0IHBhdGhfc3RyaW5ncyA9IFN0cmluZy5zcGxpdCBjbWQgfm9uOicgJyBpblxuICAgIGxldCBwYXRoID0gUGF0aC5vZl9wYXJ0cyBwYXRoX3N0cmluZ3MgaW5cbiAgICBsZXQgYXJncyA9IGlmIGlzX2V4cGFuZF9kb3RzIHRoZW4gXCItZXhwYW5kLWRvdHNcIiA6OiBhcmdzIGVsc2UgYXJncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfaGVscF9yZWNfZmxhZ3MgdGhlbiBcIi1mbGFnc1wiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwX3JlYyB0aGVuIFwiLXJcIiA6OiBhcmdzIGVsc2UgYXJncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfaGVscCB0aGVuIFwiLWhlbHBcIiA6OiBhcmdzIGVsc2UgYXJncyBpblxuICAgIGxldCBhcmdzID0gQ21kbGluZS5vZl9saXN0IGFyZ3MgaW5cbiAgICBsZXQgdCA9IGFkZF9oZWxwX3N1YmNvbW1hbmRzIHQgaW5cbiAgICBkaXNwYXRjaFxuICAgICAgdFxuICAgICAgRW52LmVtcHR5XG4gICAgICB+cGF0aFxuICAgICAgfmFyZ3NcbiAgICAgIH5leHRlbmQ6Tm9uZVxuICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkOk5vbmVcbiAgICAgIH52ZXJzaW9uOlZlcnNpb25faW5mby5kZWZhdWx0X3ZlcnNpb25cbiAgICAgIH5idWlsZF9pbmZvOlZlcnNpb25faW5mby5kZWZhdWx0X2J1aWxkX2luZm9cbiAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yOk5vbmVcbiAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHM6Rm4uaWRcbiAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kczpOb25lXG4gIDs7XG5lbmRcblxubW9kdWxlIFBhcmFtID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlICsnYSB0XG5cbiAgICBpbmNsdWRlIEFwcGxpY2F0aXZlLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIGhlbHAgOiBzdHJpbmcgTGF6eS50IHRcbiAgICB2YWwgcGF0aCA6IHN0cmluZyBsaXN0IHRcbiAgICB2YWwgYXJncyA6IHN0cmluZyBsaXN0IHRcblxuICAgIHZhbCBmbGFnXG4gICAgICA6ICA/YWxpYXNlczpzdHJpbmcgbGlzdFxuICAgICAgLT4gP2Z1bGxfZmxhZ19yZXF1aXJlZDp1bml0XG4gICAgICAtPiBzdHJpbmdcbiAgICAgIC0+ICdhIEZsYWcudFxuICAgICAgLT4gZG9jOnN0cmluZ1xuICAgICAgLT4gJ2EgdFxuXG4gICAgdmFsIGZsYWdfb3B0aW9uYWxfd2l0aF9kZWZhdWx0X2RvY1xuICAgICAgOiAgP2FsaWFzZXM6c3RyaW5nIGxpc3RcbiAgICAgIC0+ID9mdWxsX2ZsYWdfcmVxdWlyZWQ6dW5pdFxuICAgICAgLT4gc3RyaW5nXG4gICAgICAtPiAnYSBBcmdfdHlwZS50XG4gICAgICAtPiAoJ2EgLT4gU2V4cC50KVxuICAgICAgLT4gZGVmYXVsdDonYVxuICAgICAgLT4gZG9jOnN0cmluZ1xuICAgICAgLT4gJ2EgdFxuXG4gICAgdmFsIGFub24gOiAnYSBBbm9ucy50IC0+ICdhIHRcbiAgICB2YWwgZXNjYXBlX2Fub24gOiBmaW5hbF9hbm9uOidhIEFub25zLnQgLT4gKCdhICogc3RyaW5nIGxpc3QpIHRcblxuICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA6IHNpZ1xuICAgICAgdHlwZSAoXywgXykgdCA9XG4gICAgICAgIHwgRGVmYXVsdF90byA6ICdhIC0+ICgnYSwgJ2EpIHRcbiAgICAgICAgfCBSYWlzZSA6ICgnYSwgJ2EpIHRcbiAgICAgICAgfCBSZXR1cm5fbm9uZSA6ICgnYSwgJ2Egb3B0aW9uKSB0XG4gICAgZW5kXG5cbiAgICB2YWwgY2hvb3NlX29uZVxuICAgICAgOiAgJ2Egb3B0aW9uIHQgbGlzdFxuICAgICAgLT4gaWZfbm90aGluZ19jaG9zZW46KCdhLCAnYikgSWZfbm90aGluZ19jaG9zZW4udFxuICAgICAgLT4gJ2IgdFxuXG4gICAgdmFsIGNob29zZV9vbmVfbm9uX29wdGlvbmFsXG4gICAgICA6ICAnYSB0IGxpc3RcbiAgICAgIC0+IGlmX25vdGhpbmdfY2hvc2VuOignYSwgJ2IpIElmX25vdGhpbmdfY2hvc2VuLnRcbiAgICAgIC0+ICdiIHRcblxuICAgIHZhbCBhbmRfYXJnX25hbWVzIDogJ2EgdCAtPiAoJ2EgKiBzdHJpbmcgbGlzdCkgdFxuICAgIHZhbCBhbmRfYXJnX25hbWUgOiAnYSB0IC0+ICgnYSAqIHN0cmluZykgdFxuICAgIHZhbCBhcmdfbmFtZXMgOiAnYSB0IC0+IHN0cmluZyBsaXN0XG4gIGVuZFxuXG4gIGluY2x1ZGUgQ29tbWFuZF9iYXNlLlBhcmFtXG5cbiAgbGV0IHBhdGggPSBtYXAgfmY6UGF0aC5wYXJ0c19leGVfYmFzZW5hbWUgcGF0aFxuZW5kXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGluY2x1ZGUgUGFyYW1cblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyYW1cbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBQYXJhbVxuICBlbmRcbmVuZFxuXG50eXBlICdyZXN1bHQgYmFzaWNfY29tbWFuZCA9XG4gIHN1bW1hcnk6c3RyaW5nIC0+ID9yZWFkbWU6KHVuaXQgLT4gc3RyaW5nKSAtPiAodW5pdCAtPiAncmVzdWx0KSBQYXJhbS50IC0+IHRcblxubGV0IGJhc2ljIH5zdW1tYXJ5ID9yZWFkbWUgcGFyYW0gPVxuICBsZXQgcmVhZG1lID0gT3B0aW9uLm1hcCByZWFkbWUgfmY6KGZ1biBmICgpIC0+IFN0cmluZy5zdHJpcCAoZiAoKSkpIGluXG4gIGJhc2ljIH5zdW1tYXJ5ID9yZWFkbWUgcGFyYW1cbjs7XG5cbmxldCBiYXNpY19vcl9lcnJvciB+c3VtbWFyeSA/cmVhZG1lIHBhcmFtID1cbiAgYmFzaWNcbiAgICB+c3VtbWFyeVxuICAgID9yZWFkbWVcbiAgICAobGV0JW1hcCBydW4gPSBwYXJhbSBpblxuICAgICBmdW4gKCkgLT5cbiAgICAgICBtYXRjaCBydW4gKCkgd2l0aFxuICAgICAgIHwgT2sgKCkgLT4gKClcbiAgICAgICB8IEVycm9yIGUgLT5cbiAgICAgICAgIFN0ZGlvLnByZXJyX2VuZGxpbmUgKEVycm9yLnRvX3N0cmluZ19odW0gZSk7XG4gICAgICAgICBleGl0IDEpXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgYWJzX3BhdGggPSBhYnNfcGF0aFxuICBsZXQgd29yZF93cmFwID0gU2hhcGUuUHJpdmF0ZS53b3JkX3dyYXBcblxuICBtb2R1bGUgQW5vbnMgPSBBbm9uc1xuICBtb2R1bGUgQ21kbGluZSA9IENtZGxpbmVcbiAgbW9kdWxlIEZvcl91bml4ID0gRm9yX3VuaXhcbiAgbW9kdWxlIFBhdGggPSBQYXRoXG5cbiAgbW9kdWxlIFNwZWMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNwZWNcblxuICAgIGxldCB0b19zdHJpbmdfZm9yX2Nob29zZV9vbmUgcGFyYW0gPVxuICAgICAgQ29tbWFuZF9iYXNlLlBhcmFtLkNob29zZV9vbmUuQ2hvaWNlX25hbWUuKGNyZWF0ZV9leG4gcGFyYW0gfD4gdG9fc3RyaW5nKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmxldCBydW4gPSBgVXNlX0NvbW1hbmRfdW5peFxubGV0IHNoYXBlID0gYFVzZV9Db21tYW5kX3VuaXhcbiIsIm9wZW4hIEJhc2VcblxudHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuZXh0ZXJuYWwgaXNfaGVhcF9ibG9jayA6IFN0ZGxpYi5PYmoudCAtPiBib29sID0gXCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9ja1wiXG5bQEBub2FsbG9jXVxuXG5sZXQgaXNfb2sgdiA9IGlzX2hlYXBfYmxvY2sgKFN0ZGxpYi5PYmoucmVwciB2KVxubGV0IGNyZWF0ZSB2ID0gaWYgaXNfb2sgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcblxubGV0IGNyZWF0ZV9leG4gdiA9XG4gIGlmIGlzX29rIHYgdGhlbiB2IGVsc2UgZmFpbHdpdGggXCJIZWFwX2Jsb2NrLmNyZWF0ZV9leG4gY2FsbGVkIHdpdGggbm9uIGhlYXAgYmxvY2tcIlxuOztcblxubGV0IHZhbHVlIHQgPSB0XG5sZXQgYnl0ZXNfcGVyX3dvcmQgPSBXb3JkX3NpemUuKG51bV9iaXRzIHdvcmRfc2l6ZSkgLyA4XG5cbmxldCBieXRlcyAodHlwZSBhKSAodCA6IGEgdCkgPVxuICAoU3RkbGliLk9iai5zaXplIChTdGRsaWIuT2JqLnJlcHIgKHQgOiBhIHQpKSArIDEpICogYnl0ZXNfcGVyX3dvcmRcbjs7XG4iLCJvcGVuIEJhc2VcblxuKCoqIEVhY2ggc2luZ2xlX2Vycm9yIGlzIGEgcGF0aCBpbmRpY2F0aW5nIHRoZSBsb2NhdGlvbiB3aXRoaW4gdGhlIGRhdGFzdHJ1Y3R1cmUgaW5cbiAgICBxdWVzdGlvbiB0aGF0IGlzIGJlaW5nIHZhbGlkYXRlZCwgYWxvbmcgd2l0aCBhbiBlcnJvciBtZXNzYWdlLiAqKVxudHlwZSBzaW5nbGVfZXJyb3IgPVxuICB7IHBhdGggOiBzdHJpbmcgbGlzdFxuICA7IGVycm9yIDogRXJyb3IudFxuICB9XG5cbnR5cGUgdCA9IHNpbmdsZV9lcnJvciBsaXN0XG50eXBlICdhIGNoZWNrID0gJ2EgLT4gdFxuXG5sZXQgcGFzcyA6IHQgPSBbXVxuXG5sZXQgZmFpbHMgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIFsgeyBwYXRoID0gW107IGVycm9yID0gRXJyb3IuY3JlYXRlIG1lc3NhZ2UgYSBzZXhwX29mX2EgfSBdXG47O1xuXG5sZXQgZmFpbCBtZXNzYWdlID0gWyB7IHBhdGggPSBbXTsgZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgbWVzc2FnZSB9IF1cbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcbmxldCBmYWlsX3Mgc2V4cCA9IFsgeyBwYXRoID0gW107IGVycm9yID0gRXJyb3IuY3JlYXRlX3Mgc2V4cCB9IF1cbmxldCBjb21iaW5lIHQxIHQyID0gdDEgQCB0MlxubGV0IG9mX2xpc3QgPSBMaXN0LmNvbmNhdFxuXG5sZXQgbmFtZSBuYW1lIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBbXSAoKiB3aGVuIHN1Y2Nlc3NmdWwsIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIGEgY2xvc3VyZSBmb3IgW35mXSwgYmVsb3cgKilcbiAgfCBfIC0+IExpc3QubWFwIHQgfmY6KGZ1biB7IHBhdGg7IGVycm9yIH0gLT4geyBwYXRoID0gbmFtZSA6OiBwYXRoOyBlcnJvciB9KVxuOztcblxubGV0IG5hbWVfbGlzdCBuIGwgPSBuYW1lIG4gKG9mX2xpc3QgbClcbmxldCBmYWlsX2ZuIG1lc3NhZ2UgXyA9IGZhaWwgbWVzc2FnZVxubGV0IHBhc3NfYm9vbCAoXyA6IGJvb2wpID0gcGFzc1xubGV0IHBhc3NfdW5pdCAoXyA6IHVuaXQpID0gcGFzc1xuXG5sZXQgcHJvdGVjdCBmIHYgPVxuICB0cnkgZiB2IHdpdGhcbiAgfCBleG4gLT5cbiAgICBmYWlsX3MgKFNleHAubWVzc2FnZSBcIkV4Y2VwdGlvbiByYWlzZWQgZHVyaW5nIHZhbGlkYXRpb25cIiBbIFwiXCIsIHNleHBfb2ZfZXhuIGV4biBdKVxuOztcblxubGV0IHRyeV93aXRoIGYgPVxuICBwcm90ZWN0XG4gICAgKGZ1biAoKSAtPlxuICAgICAgIGYgKCk7XG4gICAgICAgcGFzcylcbiAgICAoKVxuOztcblxubGV0IHBhdGhfc3RyaW5nIHBhdGggPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgcGF0aFxuXG5sZXQgZXJyb3JzIHQgPVxuICBMaXN0Lm1hcCB0IH5mOihmdW4geyBwYXRoOyBlcnJvciB9IC0+XG4gICAgRXJyb3IudG9fc3RyaW5nX2h1bSAoRXJyb3IudGFnIGVycm9yIH50YWc6KHBhdGhfc3RyaW5nIHBhdGgpKSlcbjs7XG5cbmxldCByZXN1bHRfZmFpbCB0ID1cbiAgT3JfZXJyb3IuZXJyb3JcbiAgICBcInZhbGlkYXRpb24gZXJyb3JzXCJcbiAgICAoTGlzdC5tYXAgdCB+ZjooZnVuIHsgcGF0aDsgZXJyb3IgfSAtPiBwYXRoX3N0cmluZyBwYXRoLCBlcnJvcikpXG4gICAgWyVzZXhwX29mOiAoc3RyaW5nICogRXJyb3IudCkgTGlzdC50XVxuW0BAY29sZF1cbjs7XG5cbigqKiBbcmVzdWx0XSBpcyBjYXJlZnVsbHkgaW1wbGVtZW50ZWQgc28gdGhhdCBpdCBjYW4gYmUgaW5saW5lZCAtLSBjYWxsaW5nIFtyZXN1bHRfZmFpbF0sXG4gICAgd2hpY2ggaXMgbm90IGlubGluZWFibGUsIGlzIGtleSB0byB0aGlzLiAqKVxubGV0IHJlc3VsdCB0ID0gaWYgTGlzdC5pc19lbXB0eSB0IHRoZW4gT2sgKCkgZWxzZSByZXN1bHRfZmFpbCB0XG5cbmxldCBtYXliZV9yYWlzZSB0ID0gT3JfZXJyb3Iub2tfZXhuIChyZXN1bHQgdClcbmxldCB2YWxpZF9vcl9lcnJvciBjaGVjayB4ID0gT3JfZXJyb3IubWFwIChyZXN1bHQgKHByb3RlY3QgY2hlY2sgeCkpIH5mOihmdW4gKCkgLT4geClcblxubGV0IGZpZWxkX2RpcmVjdCBjaGVjayBmbGQgX3JlY29yZCB2ID1cbiAgbGV0IHJlc3VsdCA9IHByb3RlY3QgY2hlY2sgdiBpblxuICBuYW1lIChGaWVsZC5uYW1lIGZsZCkgcmVzdWx0XG47O1xuXG5sZXQgZmllbGQgY2hlY2sgcmVjb3JkIGZsZCA9XG4gIGxldCB2ID0gRmllbGQuZ2V0IGZsZCByZWNvcmQgaW5cbiAgZmllbGRfZGlyZWN0IGNoZWNrIGZsZCByZWNvcmQgdlxuOztcblxubGV0IGZpZWxkX2ZvbGRlciBjaGVjayByZWNvcmQgPVxuICAoKTtcbiAgZnVuIGFjYyBmbGQgLT4gZmllbGQgY2hlY2sgcmVjb3JkIGZsZCA6OiBhY2Ncbjs7XG5cbmxldCBmaWVsZF9kaXJlY3RfZm9sZGVyIGNoZWNrID1cbiAgU3RhZ2VkLnN0YWdlIChmdW4gYWNjIGZsZCByZWNvcmQgdiAtPlxuICAgIG1hdGNoIGZpZWxkX2RpcmVjdCBjaGVjayBmbGQgcmVjb3JkIHYgd2l0aFxuICAgIHwgW10gLT4gYWNjICgqIEF2b2lkIGFsbG9jYXRpbmcgYSBuZXcgbGlzdCBpbiB0aGUgc3VjY2VzcyBjYXNlICopXG4gICAgfCByZXN1bHQgLT4gcmVzdWx0IDo6IGFjYylcbjs7XG5cbmxldCBhbGwgY2hlY2tzIHYgPVxuICBsZXQgcmVjIGxvb3AgY2hlY2tzIHYgZXJycyA9XG4gICAgbWF0Y2ggY2hlY2tzIHdpdGhcbiAgICB8IFtdIC0+IGVycnNcbiAgICB8IGNoZWNrIDo6IGNoZWNrcyAtPlxuICAgICAgKG1hdGNoIHByb3RlY3QgY2hlY2sgdiB3aXRoXG4gICAgICAgfCBbXSAtPiBsb29wIGNoZWNrcyB2IGVycnNcbiAgICAgICB8IGVyciAtPiBsb29wIGNoZWNrcyB2IChlcnIgOjogZXJycykpXG4gIGluXG4gIG9mX2xpc3QgKExpc3QucmV2IChsb29wIGNoZWNrcyB2IFtdKSlcbjs7XG5cbmxldCBvZl9yZXN1bHQgZiA9XG4gIHByb3RlY3QgKGZ1biB2IC0+XG4gICAgbWF0Y2ggZiB2IHdpdGhcbiAgICB8IE9rICgpIC0+IHBhc3NcbiAgICB8IEVycm9yIGVycm9yIC0+IGZhaWwgZXJyb3IpXG47O1xuXG5sZXQgb2ZfZXJyb3IgZiA9XG4gIHByb3RlY3QgKGZ1biB2IC0+XG4gICAgbWF0Y2ggZiB2IHdpdGhcbiAgICB8IE9rICgpIC0+IHBhc3NcbiAgICB8IEVycm9yIGVycm9yIC0+IFsgeyBwYXRoID0gW107IGVycm9yIH0gXSlcbjs7XG5cbmxldCBib29sdGVzdCBmIH5pZl9mYWxzZSA9IHByb3RlY3QgKGZ1biB2IC0+IGlmIGYgdiB0aGVuIHBhc3MgZWxzZSBmYWlsIGlmX2ZhbHNlKVxuXG5sZXQgcGFpciB+ZnN0IH5zbmQgKGZzdF92YWx1ZSwgc25kX3ZhbHVlKSA9XG4gIG9mX2xpc3QgWyBuYW1lIFwiZnN0XCIgKHByb3RlY3QgZnN0IGZzdF92YWx1ZSk7IG5hbWUgXCJzbmRcIiAocHJvdGVjdCBzbmQgc25kX3ZhbHVlKSBdXG47O1xuXG5sZXQgbGlzdF9pbmRleGVkIGNoZWNrIGxpc3QgPVxuICBMaXN0Lm1hcGkgbGlzdCB+ZjooZnVuIGkgZWwgLT4gbmFtZSAoSW50LnRvX3N0cmluZyAoaSArIDEpKSAocHJvdGVjdCBjaGVjayBlbCkpXG4gIHw+IG9mX2xpc3Rcbjs7XG5cbmxldCBsaXN0IH5uYW1lOmV4dHJhY3RfbmFtZSBjaGVjayBsaXN0ID1cbiAgTGlzdC5tYXAgbGlzdCB+ZjooZnVuIGVsIC0+XG4gICAgbWF0Y2ggcHJvdGVjdCBjaGVjayBlbCB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgdCAtPlxuICAgICAgKCogZXh0cmEgbGV2ZWwgb2YgcHJvdGVjdGlvbiBpbiBjYXNlIGV4dHJhY3RfbmFtZSB0aHJvd3MgYW4gZXhjZXB0aW9uICopXG4gICAgICBwcm90ZWN0IChmdW4gdCAtPiBuYW1lIChleHRyYWN0X25hbWUgZWwpIHQpIHQpXG4gIHw+IG9mX2xpc3Rcbjs7XG5cbmxldCBhbGlzdCB+bmFtZSBmIGxpc3QnID0gbGlzdCAoZnVuIChfLCB4KSAtPiBmIHgpIGxpc3QnIH5uYW1lOihmdW4gKGtleSwgXykgLT4gbmFtZSBrZXkpXG5sZXQgZmlyc3RfZmFpbHVyZSB0MSB0MiA9IGlmIExpc3QuaXNfZW1wdHkgdDEgdGhlbiB0MiBlbHNlIHQxXG5cbmxldCBvZl9lcnJvcl9vcHQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gcGFzc1xuICB8IFNvbWUgZXJyb3IgLT4gZmFpbCBlcnJvclxuOztcblxubGV0IGJvdW5kZWQgfm5hbWUgfmxvd2VyIH51cHBlciB+Y29tcGFyZSB4ID1cbiAgbWF0Y2ggTWF5YmVfYm91bmQuY29tcGFyZV90b19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZSB4IHdpdGhcbiAgfCBJbl9yYW5nZSAtPiBwYXNzXG4gIHwgQmVsb3dfbG93ZXJfYm91bmQgLT5cbiAgICAobWF0Y2ggbG93ZXIgd2l0aFxuICAgICB8IFVuYm91bmRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgfCBJbmNsIGluY2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA8IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgaW5jbCkpXG4gICAgIHwgRXhjbCBleGNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPD0gYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBleGNsKSkpXG4gIHwgQWJvdmVfdXBwZXJfYm91bmQgLT5cbiAgICAobWF0Y2ggdXBwZXIgd2l0aFxuICAgICB8IFVuYm91bmRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgfCBJbmNsIGluY2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA+IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgaW5jbCkpXG4gICAgIHwgRXhjbCBleGNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPj0gYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBleGNsKSkpXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggKysgKSB0MSB0MiA9IGNvbWJpbmUgdDEgdDJcbmVuZFxuIiwiXG4oKiBXZSBkbyBub3QgW2luY2x1ZGUgQmFzZV0gaGVyZSwgYW5kIGluc3RlYWQgaW1wb3J0IG1vZHVsZXMgdGhhdCBbQ29yZV0gZG9lc24ndCBleHRlbmQsXG4gICBiZWNhdXNlIHdlIHdhbnQgY29kZSBpbiBbQ29yZV0gdG8gYmUgY2xlYXIgd2hlbiBpdCByZWZlcmVuY2VzIGEgW0Jhc2VdIG1vZHVsZSB0aGF0XG4gICBbQ29yZV0gaXMgb3ZlcnJpZGluZy4gKilcbm1vZHVsZSBBcHBsaWNhdGl2ZSA9IEJhc2UuQXBwbGljYXRpdmVcbm1vZHVsZSBBdmx0cmVlID0gQmFzZS5Bdmx0cmVlXG5tb2R1bGUgQmFja3RyYWNlID0gQmFzZS5CYWNrdHJhY2Vcbm1vZHVsZSBCaW5hcnlfc2VhcmNoID0gQmFzZS5CaW5hcnlfc2VhcmNoXG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBCYXNlLkNvbXBhcmlzb25zXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IEJhc2UuQ29udGludWVfb3Jfc3RvcFxubW9kdWxlIEVxdWFsID0gQmFzZS5FcXVhbFxubW9kdWxlIEV4biA9IEJhc2UuRXhuXG5tb2R1bGUgRmxvYXRhYmxlID0gQmFzZS5GbG9hdGFibGVcbm1vZHVsZSBGb3JtYXR0ZXIgPSBCYXNlLkZvcm1hdHRlclxubW9kdWxlIEhhc2ggPSBCYXNlLkhhc2hcbm1vZHVsZSBIYXNoZXIgPSBCYXNlLkhhc2hlclxubW9kdWxlIEludGFibGUgPSBCYXNlLkludGFibGVcbm1vZHVsZSBJbnRfY29udmVyc2lvbnMgPSBCYXNlLkludF9jb252ZXJzaW9uc1xubW9kdWxlIEludF9tYXRoID0gQmFzZS5JbnRfbWF0aFxubW9kdWxlIEludmFyaWFudCA9IEJhc2UuSW52YXJpYW50XG5tb2R1bGUgTW9uYWQgPSBCYXNlLk1vbmFkXG5tb2R1bGUgUG9seSA9IEJhc2UuUG9seVxuXG5tb2R1bGUgUG9wY291bnQgPSBCYXNlLlBvcGNvdW50XG5bQEB3YXJuaW5nIFwiLTNcIl1cbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMF0gdXNlIFtwb3Bjb3VudF0gZnVuY3Rpb25zIGluIGluZGl2aWR1YWwgaW50IG1vZHVsZXNcIl1cblxubW9kdWxlIFByZXR0eV9wcmludGVyID0gQmFzZS5QcmV0dHlfcHJpbnRlclxubW9kdWxlIFJhbmRvbSA9IEJhc2UuUmFuZG9tXG5tb2R1bGUgU3RhZ2VkID0gQmFzZS5TdGFnZWRcbm1vZHVsZSBTdHJpbmdhYmxlID0gQmFzZS5TdHJpbmdhYmxlXG5tb2R1bGUgU3lzID0gQmFzZS5TeXNcbm1vZHVsZSBVY2hhciA9IEJhc2UuVWNoYXJcbm1vZHVsZSBXaXRoX3JldHVybiA9IEJhc2UuV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBCYXNlLldvcmRfc2l6ZVxuXG4oKiBXZSBkbyBpbmNsdWRlIFtCYXNlXSdzIHRvcC1sZXZlbCB2YWx1ZSBhbmQgdHlwZSBiaW5kaW5ncywgYmVjYXVzZSB0aGV5IGRvbid0IGNhdXNlXG4gICBhbnkgY29uZnVzaW9uLCBhbmQgZHVwbGljYXRpbmcgdGhlbSB3b3VsZCBiZSBlcnJvciBwcm9uZS4gKilcbmluY2x1ZGUgQmFzZS5FeHBvcnRcbmluY2x1ZGUgU3RkaW9cbmluY2x1ZGUgQmFzZV9mb3JfdGVzdHNcbmluY2x1ZGUgQmluX3Byb3QuU3RkXG5pbmNsdWRlIFN0YWJsZV93aXRuZXNzLkV4cG9ydFxubW9kdWxlIEZpZWxkID0gRmllbGRzbGliLkZpZWxkXG5cbm1vZHVsZSBGcm9tX3NleHBsaWIgOiBzaWdcbiAgdHlwZSBiaWdzdHJpbmcgPSBTZXhwbGliLkNvbnYuYmlnc3RyaW5nIFtAQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgbWF0ID0gU2V4cGxpYi5Db252Lm1hdCBbQEBkZXJpdmluZyBzZXhwXVxuICB0eXBlIHZlYyA9IFNleHBsaWIuQ29udi52ZWMgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAoKiBbc2V4cF9vZl9vcGFxdWVdIGFuZCBbb3BhcXVlX29mX3NleHBdIGFyZSB1c2VkIGJ5IHRoZSBjb2RlIGdlbmVyYXRlZCBmcm9tXG4gICAgIFtbQEBkZXJpdmluZyBzZXhwXV0sIFtbJXNleHBfb2Y6IF1dLCBhbmQgW1slb2Zfc2V4cDogXV0uICBUaGUgdHlwZSBbXyBzZXhwX29wYXF1ZV1cbiAgICAgZXhwYW5kcyB0byB1c2VzIG9mIFtzZXhwX29mX29wYXF1ZV0gYW5kIFtvcGFxdWVfb2Zfc2V4cF0uICopXG5cbiAgdmFsIHNleHBfb2Zfb3BhcXVlIDogXyAtPiBCYXNlLlNleHAudFxuICB2YWwgb3BhcXVlX29mX3NleHAgOiBCYXNlLlNleHAudCAtPiBfXG4gIHZhbCBzZXhwX29mX3BhaXIgOiAoJ2EgLT4gQmFzZS5TZXhwLnQpIC0+ICgnYiAtPiBCYXNlLlNleHAudCkgLT4gJ2EgKiAnYiAtPiBCYXNlLlNleHAudFxuICB2YWwgcGFpcl9vZl9zZXhwIDogKEJhc2UuU2V4cC50IC0+ICdhKSAtPiAoQmFzZS5TZXhwLnQgLT4gJ2IpIC0+IEJhc2UuU2V4cC50IC0+ICdhICogJ2JcblxuICBleGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiBleG4gKiBCYXNlLlNleHAudFxuXG4gIHZhbCBvZl9zZXhwX2Vycm9yIDogc3RyaW5nIC0+IEJhc2UuU2V4cC50IC0+IF9cbiAgdmFsIG9mX3NleHBfZXJyb3JfZXhuIDogZXhuIC0+IEJhc2UuU2V4cC50IC0+IF9cbmVuZCA9XG4gIFNleHBsaWIuQ29udlxuXG5pbmNsdWRlIEZyb21fc2V4cGxpYlxuXG4oKiBbc2V4cF9vcGFxdWVdIGluZGljYXRlcyB0byBbcHB4X3NleHBfY29udl0gdGhhdCBhIHZhbHVlIHNob3VsZCBiZSByZW5kZXJlZCBhcyBbX10sIGkuZS5cbiAgIFtTZXhwLkF0b20gXCJfXCJdLiAgSGVyZSB3ZSBleHBvc2UgdGhlIFtAQGRlcml2aW5nXSBhc3BlY3RzIG9mIFtzZXhwX29wYXF1ZV0gc28gdGhhdFxuICAgb3RoZXIgcHB4J3MgdHJlYXQgW3NleHBfb3BhcXVlXSBjb3JyZWN0bHksIGJ5IGlnbm9yaW5nIGl0IGFuZCBwcm9jZXNzaW5nIHRoZSB1bmRlcmx5aW5nXG4gICB0eXBlLiAqKVxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgdHlwZSAnYSBzZXhwX29wYXF1ZSA9ICdhIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSBzZXhwX29wYXF1ZSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5lbmRcbndpdGggdHlwZSAnYSBzZXhwX29wYXF1ZSA6PSAnYSlcblxuaW5jbHVkZSAoXG4gIFR5cGVyZXBfbGliLlN0ZCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBUeXBlcmVwX2xpYi5TdGRcbiAgZW5kXG4gIHdpdGggbW9kdWxlIFR5cGVfZXF1YWwgOj0gVHlwZXJlcF9saWIuU3RkLlR5cGVfZXF1YWwpXG5cbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudHNsaWIuVmFyaWFudFxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG5sZXQgYW1fcnVubmluZ190ZXN0ID1cbiAgdHJ5XG4gICAgaWdub3JlIChTdGRsaWIuU3lzLmdldGVudiBcIlRFU1RJTkdfRlJBTUVXT1JLXCIgOiBzdHJpbmcpO1xuICAgIHRydWVcbiAgd2l0aFxuICAoKiBbQ2FtbC4qXSBuZXZlciByYWlzZXMgW05vdF9mb3VuZF9zXSAqKVxuICB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gZmFsc2Vcbjs7XG5cbnR5cGUgJ2EgaWRlbnRpdHkgPSAnYVxuXG5tb2R1bGUgTm90X2ZvdW5kID0gc3RydWN0XG4gIGV4Y2VwdGlvblxuICAgIE5vdF9mb3VuZCA9IE5vdF9mb3VuZFxuICAgICAgICAgICAgICAgIFtAZGVwcmVjYXRlZFxuICAgICAgICAgICAgICAgICAge3xbc2luY2UgMjAxOC0wMl0gSW5zdGVhZCBvZiByYWlzaW5nIFtOb3RfZm91bmRdLCBjb25zaWRlciB1c2luZyBbcmFpc2Vfc10gd2l0aCBhblxuaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZS4gIElmIGNvZGUgbmVlZHMgdG8gZGlzdGluZ3Vpc2ggW05vdF9mb3VuZF0gZnJvbSBvdGhlclxuZXhjZXB0aW9ucywgcGxlYXNlIGNoYW5nZSBpdCB0byBoYW5kbGUgYm90aCBbTm90X2ZvdW5kXSBhbmQgW05vdF9mb3VuZF9zXS4gIFRoZW4sIGluc3RlYWRcbm9mIHJhaXNpbmcgW05vdF9mb3VuZF0sIHJhaXNlIFtOb3RfZm91bmRfc10gd2l0aCBhbiBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlLnx9XVxuXG4gIGV4Y2VwdGlvbiBOb3RfZm91bmRfcyA9IEJhc2UuTm90X2ZvdW5kX3NcbmVuZFxuXG5pbmNsdWRlIE5vdF9mb3VuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU2V4cGFibGVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgT2Zfc2V4cGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogdCAtPiBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6IFNleHBhYmxlLnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cGFibGUuc2V4cF9vZl90IChNLnRvX3NleHBhYmxlIHQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZTEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUzEpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogJ2EgdCAtPiAnYSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAnYSBTZXhwYWJsZS50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSAoTS50b19zZXhwYWJsZSB0KVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc2V4cGFibGUyID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChTZXhwYWJsZSA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYikgU2V4cGFibGUudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgdCA9XG4gICAgICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIChNLnRvX3NleHBhYmxlIHQpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc2V4cGFibGUzID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChTZXhwYWJsZSA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYiwgJ2MpIFNleHBhYmxlLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgY19vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIHQgPVxuICAgICAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgKE0udG9fc2V4cGFibGUgdClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zdHJpbmdhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogU3RyaW5nYWJsZS5TKSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1cblxuICAgICAgaW5jbHVkZSBTIHdpdGggdHlwZSB0IDo9IHRcbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICB8IFNleHBsaWIuU2V4cC5BdG9tIHMgLT5cbiAgICAgICAgICAodHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cClcbiAgICAgICAgfCBTZXhwbGliLlNleHAuTGlzdCBfIC0+XG4gICAgICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICAgICAgXCJTZXhwYWJsZS5PZl9zdHJpbmdhYmxlLnRfb2Zfc2V4cCBleHBlY3RlZCBhbiBhdG9tLCBidXQgZ290IGEgbGlzdFwiXG4gICAgICAgICAgICBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwbGliLlNleHAuQXRvbSAoTS50b19zdHJpbmcgdClcblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyIDogTS50IFNleHBsaWIuU2V4cF9ncmFtbWFyLnQgPVxuICAgICAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2Ugc3RyaW5nX3NleHBfZ3JhbW1hclxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFRvX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTKSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9zdHJpbmcgeCA9IFNleHBsaWIuQ29udi5vZl9zdHJpbmdfX29mX19vZl9zZXhwIE0udF9vZl9zZXhwIHhcbiAgICAgIGxldCB0b19zdHJpbmcgeCA9IFNleHBsaWIuQ29udi5zdHJpbmdfb2ZfX29mX19zZXhwX29mIE0uc2V4cF9vZl90IHhcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFRvX3N0cmluZ2FibGUgPSBTdGFibGUuVG9fc3RyaW5nYWJsZS5WMVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbmFibGVfaW50ZlxuaW5jbHVkZSBCaW5fcHJvdC5CaW5hYmxlXG5tb2R1bGUgU2hhcGUgPSBCaW5fcHJvdC5TaGFwZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPZl9iaW5hYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChCaW5hYmxlIDogTWluaW1hbC5TKSAoTSA6IENvbnZfd2l0aG91dF91dWlkIHdpdGggdHlwZSBiaW5hYmxlIDo9IEJpbmFibGUudCkgOlxuICAgICAgUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyIChCaW5hYmxlIDogTWluaW1hbC5TKSAoTSA6IENvbnYgd2l0aCB0eXBlIGJpbmFibGUgOj0gQmluYWJsZS50KSA6XG4gICAgICBTIHdpdGggdHlwZSB0IDo9IE0udCA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9iaW5hYmxlMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoQmluYWJsZSA6IE1pbmltYWwuUzEpXG4gICAgICAgIChNIDogQ29udjFfd2l0aG91dF91dWlkIHdpdGggdHlwZSAnYSBiaW5hYmxlIDo9ICdhIEJpbmFibGUudCkgOlxuICAgICAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKEJpbmFibGUgOiBNaW5pbWFsLlMxKSAoTSA6IENvbnYxIHdpdGggdHlwZSAnYSBiaW5hYmxlIDo9ICdhIEJpbmFibGUudCkgOlxuICAgICAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9iaW5hYmxlMiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoQmluYWJsZSA6IE1pbmltYWwuUzIpXG4gICAgICAgIChNIDogQ29udjJfd2l0aG91dF91dWlkIHdpdGggdHlwZSAoJ2EsICdiKSBiaW5hYmxlIDo9ICgnYSwgJ2IpIEJpbmFibGUudCkgOlxuICAgICAgUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMilcbiAgICAgICAgKE0gOiBDb252MiB3aXRoIHR5cGUgKCdhLCAnYikgYmluYWJsZSA6PSAoJ2EsICdiKSBCaW5hYmxlLnQpIDpcbiAgICAgIFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udCA9XG4gICAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUyX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUzID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMylcbiAgICAgICAgKE0gOiBDb252M193aXRob3V0X3V1aWQgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBiaW5hYmxlIDo9ICgnYSwgJ2IsICdjKSBCaW5hYmxlLnQpIDpcbiAgICAgIFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMylcbiAgICAgICAgKE0gOiBDb252MyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFibGUgOj0gKCdhLCAnYiwgJ2MpIEJpbmFibGUudCkgOlxuICAgICAgUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlM193aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFNleHBhYmxlLlMpID1cbiAgICAgIE9mX2JpbmFibGUuVjFcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEJhc2UuU2V4cC50ID1cbiAgICAgICAgICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICAgICAgICAgIHwgTGlzdCBvZiB0IGxpc3RcbiAgICAgICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IE0udFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnNleHBfb2ZfdFxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gTS50X29mX3NleHBcbiAgICAgICAgZW5kKVxuXG4gICAgbW9kdWxlIFYyIChNIDogQ29udl9zZXhwYWJsZSkgPVxuICAgICAgT2ZfYmluYWJsZS5WMlxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgICAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IE0uc2V4cF9vZl90XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBNLnRfb2Zfc2V4cFxuICAgICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPSBNLmNhbGxlcl9pZGVudGl0eVxuICAgICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zdHJpbmdhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogU3RyaW5nYWJsZS5TKSA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIGVuZFxuXG4gICAgICAgIHR5cGUgdCA9IE0udFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gTS50b19zdHJpbmdcblxuICAgICAgICAoKiBXcmFwIGV4Y2VwdGlvbiBmb3IgaW1wcm92ZWQgZGlhZ25vc3RpY3MuICopXG4gICAgICAgIGV4Y2VwdGlvbiBPZl9iaW5hYmxlIG9mIHN0cmluZyAqIGV4biBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgIGxldCBvZl9iaW5hYmxlIHMgPVxuICAgICAgICAgIHRyeSBNLm9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKE9mX2JpbmFibGUgKHMsIHgpKVxuICAgICAgICA7O1xuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyIChNIDogQ29udl9zdHJpbmdhYmxlKSA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIGVuZFxuXG4gICAgICAgIHR5cGUgdCA9IE0udFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gTS50b19zdHJpbmdcblxuICAgICAgICAoKiBXcmFwIGV4Y2VwdGlvbiBmb3IgaW1wcm92ZWQgZGlhZ25vc3RpY3MuICopXG4gICAgICAgIGV4Y2VwdGlvbiBPZl9iaW5hYmxlIG9mIHN0cmluZyAqIGV4biBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgIGxldCBvZl9iaW5hYmxlIHMgPVxuICAgICAgICAgIHRyeSBNLm9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKE9mX2JpbmFibGUgKHMsIHgpKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPSBNLmNhbGxlcl9pZGVudGl0eVxuICAgICAgZW5kKVxuICBlbmRcbmVuZFxuXG5vcGVuIEJpZ2FycmF5XG5cbnR5cGUgYmlnc3RyaW5nID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuXG50eXBlICdhIG0gPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcblxubGV0IG9mX2JpZ3N0cmluZyAodHlwZSBhKSBtIGJpZ3N0cmluZyA9XG4gIGxldCBtb2R1bGUgTSA9ICh2YWwgbSA6IFMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gIGxldCB0ID0gTS5iaW5fcmVhZF90IGJpZ3N0cmluZyB+cG9zX3JlZiBpblxuICBsZXQgYmlnc3RyaW5nX2xlbmd0aCA9IEFycmF5MS5kaW0gYmlnc3RyaW5nIGluXG4gIChtYXRjaCAhcG9zX3JlZiA9IGJpZ3N0cmluZ19sZW5ndGggd2l0aFxuICAgfCB0cnVlIC0+ICgpXG4gICB8IGZhbHNlIC0+XG4gICAgIHJhaXNlX3NcbiAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgIFwiYmluX3JlYWRfdCBkaWQgbm90IGNvbnN1bWUgdGhlIGVudGlyZSBidWZmZXJcIlxuICAgICAgICAgICB+Y29uc3VtZWQ6KCFwb3NfcmVmIDogaW50KVxuICAgICAgICAgICAoYmlnc3RyaW5nX2xlbmd0aCA6IGludCldKTtcbiAgdFxuOztcblxuKCogVXNpbmcgdGhlIFtCaWdzdHJpbmddIG1vZHVsZSB3b3VsZCBpbnRyb2R1Y2UgYSBjeWNsaWMgZGVwZW5kZW5jeS4gKilcbmxldCBjcmVhdGVfYmlnc3RyaW5nIHNpemUgPSBBcnJheTEuY3JlYXRlIEJpZ2FycmF5LmNoYXIgQmlnYXJyYXkuY19sYXlvdXQgc2l6ZVxuXG5sZXQgdG9fYmlnc3RyaW5nID8ocHJlZml4X3dpdGhfbGVuZ3RoID0gZmFsc2UpICh0eXBlIGEpIG0gdCA9XG4gIGxldCBtb2R1bGUgTSA9ICh2YWwgbSA6IFMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICBsZXQgdF9sZW5ndGggPSBNLmJpbl9zaXplX3QgdCBpblxuICBsZXQgYmlnc3RyaW5nX2xlbmd0aCA9XG4gICAgaWYgcHJlZml4X3dpdGhfbGVuZ3RoIHRoZW4gdF9sZW5ndGggKyA4ICgqIHRoZSBzaXplIG9mIGEgNjQtYml0IGludCAqKSBlbHNlIHRfbGVuZ3RoXG4gIGluXG4gIGxldCBiaWdzdHJpbmcgPSBjcmVhdGVfYmlnc3RyaW5nIGJpZ3N0cmluZ19sZW5ndGggaW5cbiAgbGV0IHBvcyA9XG4gICAgaWYgcHJlZml4X3dpdGhfbGVuZ3RoXG4gICAgdGhlbiBCaW5fcHJvdC5Xcml0ZS5iaW5fd3JpdGVfaW50XzY0Yml0IGJpZ3N0cmluZyB+cG9zOjAgdF9sZW5ndGhcbiAgICBlbHNlIDBcbiAgaW5cbiAgbGV0IHBvcyA9IE0uYmluX3dyaXRlX3QgYmlnc3RyaW5nIH5wb3MgdCBpblxuICBhc3NlcnQgKHBvcyA9IGJpZ3N0cmluZ19sZW5ndGgpO1xuICBiaWdzdHJpbmdcbjs7XG5cbm1vZHVsZSBPZl9iaW5hYmxlX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlLlYyXG5tb2R1bGUgT2ZfYmluYWJsZTFfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUxLlYyXG5tb2R1bGUgT2ZfYmluYWJsZTJfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUyLlYyXG5tb2R1bGUgT2ZfYmluYWJsZTNfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUzLlYyXG5tb2R1bGUgT2Zfc2V4cGFibGVfd2l0aF91dWlkID0gU3RhYmxlLk9mX3NleHBhYmxlLlYyXG5tb2R1bGUgT2Zfc3RyaW5nYWJsZV93aXRoX3V1aWQgPSBTdGFibGUuT2Zfc3RyaW5nYWJsZS5WMlxubW9kdWxlIE9mX2JpbmFibGVfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUuVjFcbm1vZHVsZSBPZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTEuVjFcbm1vZHVsZSBPZl9iaW5hYmxlMl93aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTIuVjFcbm1vZHVsZSBPZl9iaW5hYmxlM193aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTMuVjFcbm1vZHVsZSBPZl9zZXhwYWJsZV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2Zfc2V4cGFibGUuVjFcbm1vZHVsZSBPZl9zdHJpbmdhYmxlX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9zdHJpbmdhYmxlLlYxXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTX29ubHlfZnVuY3Rpb25zX2FuZF9zaGFwZSA9IHNpZ1xuICAgICAgaW5jbHVkZSBTX29ubHlfZnVuY3Rpb25zXG5cbiAgICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnRcbiAgICBlbmRcblxuICAgICgqIENoZWNrIHRoYXQgb25seSB0aGUgZnVuY3Rpb25zICYgc2hhcGUgYXJlIHN1ZmZpY2llbnQgZm9yIFtAQGRlcml2aW5nIGJpbl9pb10uIFRoZVxuICAgICAgIGZhY3QgdGhhdCB0aGlzIGZ1bmN0b3IgdHlwZWNoZWNrcyBpcywgaXRzZWxmLCB0aGUgdGVzdC4gKilcbiAgICBtb2R1bGUgXyAoWCA6IFNfb25seV9mdW5jdGlvbnNfYW5kX3NoYXBlKSA6IFMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFgudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kXG4gIGVuZClcbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLlByaW50Zn1bQmFzZS5QcmludGZdfS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgQmFzZS5QcmludGYgKCoqIEBvcGVuICopXG5cbmxldCBlcHJpbnRmID0gU3RkaW8uT3V0X2NoYW5uZWwuZXByaW50ZlxubGV0IGZwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5mcHJpbnRmXG5sZXQga2ZwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5rZnByaW50ZlxubGV0IHByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLnByaW50ZlxuXG5cbigqKiBwcmludCB0byBzdGRlcnI7IGV4aXQgMSAqKVxubGV0IGV4aXRmIGZtdCA9XG4gIGtzcHJpbnRmXG4gICAgKGZ1biBzICgpIC0+XG4gICAgICAgZXByaW50ZiBcIiVzXFxuJSFcIiBzO1xuICAgICAgIGV4aXQgMSlcbiAgICBmbXRcbjs7XG5cbnR5cGUgcHJpbnRmID0geyBwcmludGYgOiAnYS4gKCdhLCBCdWZmZXIudCwgdW5pdCkgZm9ybWF0IC0+ICdhIH1cblxubGV0IGNvbGxlY3RfdG9fc3RyaW5nIGYgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgZG9uZV8gPSByZWYgZmFsc2UgaW5cbiAgbGV0IHByaW50ZiBmbXQgPVxuICAgIGticHJpbnRmXG4gICAgICAoZnVuIGJ1ZiAtPlxuICAgICAgICAgaWYgIWRvbmVfXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJbcHJpbnRmXSB1c2VkIGFmdGVyIFtjb2xsZWN0X3RvX3N0cmluZ10gcmV0dXJuZWRcIl0pKVxuICAgICAgYnVmXG4gICAgICBmbXRcbiAgaW5cbiAgZiB7IHByaW50ZiB9O1xuICBkb25lXyA6PSB0cnVlO1xuICBsZXQgb3V0cHV0ID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBCdWZmZXIucmVzZXQgYnVmO1xuICBvdXRwdXRcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcblxuKCogQWxsIHRoZSB0eXBlcyBhcyBleHBvc2VkIGluIHRoZSBtbGkgYXJlIGRlZmluZWQgaW4gdGhpcyBbVHlwZXNdIG1vZHVsZS4gIFRoZSByZXN0IG9mXG4gICB0aGlzIGZpbGUgaXMgc2ltcGx5IG92ZXJyaWRpbmcgYWxsIHRoZSBiaW5faW8sIGNvbXBhcmUsIGFuZCBzZXhwIGZ1bmN0aW9ucyB0byByYWlzZVxuICAgZXhjZXB0aW9ucy4gKilcbm1vZHVsZSBUeXBlcyA9IHN0cnVjdFxuICBtb2R1bGUgTm9ib2R5ID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJOb2JvZHlcIlxuICBlbmRcblxuICBtb2R1bGUgTWUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIk1lXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFJlYWQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBbIGBSZWFkIF0gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIlJlYWRcIlxuICBlbmRcblxuICBtb2R1bGUgV3JpdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBbIGBXaG9fY2FuX3dyaXRlIG9mIE1lLnQgXSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiV3JpdGVcIlxuICBlbmRcblxuICBtb2R1bGUgSW1tdXRhYmxlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgUmVhZC50XG4gICAgICB8IGBXaG9fY2FuX3dyaXRlIG9mIE5vYm9keS50XG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIkltbXV0YWJsZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgUmVhZC50XG4gICAgICB8IFdyaXRlLnRcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiUmVhZF93cml0ZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBVcHBlcl9ib3VuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICBbIFJlYWQudFxuICAgICAgfCBgV2hvX2Nhbl93cml0ZSBvZiAnYVxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJVcHBlcl9ib3VuZFwiXG4gIGVuZFxuZW5kXG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5cbigqIFRoaXMgaXMgYW4gZXhwbGljaXQgbW9kdWxlIHR5cGUgaW5zdGVhZCBvZiBqdXN0IGdpdmVuIGlubGluZSBhcyB0aGUgcmV0dXJuIHNpZ25hdHVyZSBvZlxuICAgW09ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxXSB0byBhdm9pZCBhbiB1bnVzZWQgdmFsdWUgd2FybmluZyB3aXRoIGJpbl9pbyB2YWx1ZXMuICopXG5tb2R1bGUgdHlwZSBTZXhwYWJsZV9iaW5hYmxlX2NvbXBhcmFibGUgPSBzaWdcbiAgdHlwZSAnYSB0ID0gJ2FcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgc3RhYmxlX3dpdG5lc3NdXG5lbmRcblxuKCogT3ZlcnJpZGUgYWxsIGJpbl9pbywgc2V4cCwgY29tcGFyZSBmdW5jdGlvbnMgdG8gcmFpc2UgZXhjZXB0aW9ucyAqKVxubW9kdWxlIE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxIChOYW1lIDogc2lnXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgZW5kKSA6IFNleHBhYmxlX2JpbmFibGVfY29tcGFyYWJsZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGxldCBzZXhwX29mX3QgXyBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMuc2V4cF9vZl90XVwiIE5hbWUubmFtZSAoKVxuICBsZXQgdF9vZl9zZXhwIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLnRfb2Zfc2V4cF1cIiBOYW1lLm5hbWUgKClcbiAgbGV0IGNvbXBhcmUgXyBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5jb21wYXJlXVwiIE5hbWUubmFtZSAoKVxuICBsZXQgaGFzaF9mb2xkX3QgXyBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5oYXNoX2ZvbGRfdF1cIiBOYW1lLm5hbWUgKClcbiAgbGV0IHRfc2V4cF9ncmFtbWFyIF8gPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgQmFzZS5Ob3RoaW5nLnRfc2V4cF9ncmFtbWFyXG4gIGxldCBzdGFibGVfd2l0bmVzcyBfID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICBsZXQgZ2xvYmFsaXplIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5nbG9iYWxpemVdXCIgTmFtZS5uYW1lICgpXG5cbiAgaW5jbHVkZVxuICAgIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAoc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgIGVuZClcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSBfID1cbiAgICAgICAgICBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgdXNlZCAlcyBiaW5faW8gc2VyaWFsaXphdGlvblwiIE5hbWUubmFtZSAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBvZl9iaW5hYmxlIF8gPVxuICAgICAgICAgIGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSB1c2VkICVzIGJpbl9pbyBkZXNlcmlhbGl6YXRpb25cIiBOYW1lLm5hbWUgKClcbiAgICAgICAgOztcbiAgICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgZW5kKSA6IHNpZ1xuICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHBfcG9seSwgc3RhYmxlX3dpdG5lc3NdXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMSAoVClcblxuICB0eXBlIHQgPSBULnQgTS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICBsZXQgX190X29mX3NleHBfXyA9IHRfb2Zfc2V4cFxuICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIGxldCBnbG9iYWxpemUgXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmdsb2JhbGl6ZV1cIiBULm5hbWUgKClcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBOb2JvZHkgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuTm9ib2R5KVxuICAgIG1vZHVsZSBNZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5NZSlcbiAgICBtb2R1bGUgUmVhZCA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5SZWFkKVxuICAgIG1vZHVsZSBXcml0ZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5Xcml0ZSlcbiAgICBtb2R1bGUgUmVhZF93cml0ZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5SZWFkX3dyaXRlKVxuICAgIG1vZHVsZSBJbW11dGFibGUgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuSW1tdXRhYmxlKVxuXG4gICAgdHlwZSBub2JvZHkgPSBOb2JvZHkudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIHR5cGUgbWUgPSBNZS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBtb2R1bGUgVXBwZXJfYm91bmQgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBNID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTEgKFR5cGVzLlVwcGVyX2JvdW5kKVxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBUeXBlcy5VcHBlcl9ib3VuZC50IE0udCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyBfID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgICAgbGV0IF9fdF9vZl9zZXhwX18gPSB0X29mX3NleHBcblxuICAgICAgbGV0IGdsb2JhbGl6ZSBfID1cbiAgICAgICAgZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMuZ2xvYmFsaXplXVwiIFR5cGVzLlVwcGVyX2JvdW5kLm5hbWUgKClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHJlYWQgPSBWMS5SZWFkLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICB0eXBlIHdyaXRlID0gVjEuV3JpdGUudCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBnbG9iYWxpemUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgdHlwZSBpbW11dGFibGUgPSBWMS5JbW11dGFibGUudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIHR5cGUgcmVhZF93cml0ZSA9IFYxLlJlYWRfd3JpdGUudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIHR5cGUgJ2EgcGVybXMgPSAnYSBWMS5VcHBlcl9ib3VuZC50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxubW9kdWxlIEV4cG9ydCA9IFN0YWJsZS5FeHBvcnRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIENvbXBhcmF0b3IgPSBCYXNlLkNvbXBhcmF0b3JcblxudHlwZSAoJ2EsICd3aXRuZXNzKSB0ID0gKCdhLCAnd2l0bmVzcykgQ29tcGFyYXRvci50ID0gcHJpdmF0ZVxuICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgOyBzZXhwX29mX3QgOiAnYSAtPiBCYXNlLlNleHAudFxuICB9XG5cbm1vZHVsZSB0eXBlIEJhc2VfbWFzayA9IG1vZHVsZSB0eXBlIG9mIENvbXBhcmF0b3Igd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG5pbmNsdWRlIChDb21wYXJhdG9yIDogQmFzZV9tYXNrKVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ3dpdG5lc3MpIHQgPSAoJ2EsICd3aXRuZXNzKSB0ID0gcHJpdmF0ZVxuICAgICAgeyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gICAgICA7IHNleHBfb2ZfdCA6ICdhIC0+IEJhc2UuU2V4cC50XG4gICAgICB9XG5cbiAgICB0eXBlICgnYSwgJ2IpIGNvbXBhcmF0b3IgPSAoJ2EsICdiKSB0XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gU1xuICAgIG1vZHVsZSB0eXBlIFMxID0gUzFcblxuICAgIGxldCBtYWtlID0gbWFrZVxuXG4gICAgbW9kdWxlIE1ha2UgPSBNYWtlXG4gICAgbW9kdWxlIE1ha2UxID0gTWFrZTFcbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAoJ2YsICdzKSB0ID0gKCdmLCAncykgQmFzZS5FaXRoZXIudCA9XG4gICAgICB8IEZpcnN0IG9mICdmXG4gICAgICB8IFNlY29uZCBvZiAnc1xuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgbWFwIHggfmYxIH5mMiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRmlyc3QgeDEgLT4gRmlyc3QgKGYxIHgxKVxuICAgICAgfCBTZWNvbmQgeDIgLT4gU2Vjb25kIChmMiB4MilcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBCYXNlLkVpdGhlclxuXG5pbmNsdWRlIENvbXBhcmF0b3IuRGVyaXZlZDIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gIGVuZClcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5laXRoZXJcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmVpdGhlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZWl0aGVyXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgUzBfd2l0aG91dF9jb21wYXJhdG9yID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgUzAgPSBzaWdcbiAgaW5jbHVkZSBTMF93aXRob3V0X2NvbXBhcmF0b3JcbiAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG4oKiogVGhlIHBvbHltb3JwaGljIHNpZ25hdHVyZXMgcmVxdWlyZSBhIG1hcHBpbmcgZnVuY3Rpb24gc28gcGVvcGxlIGNhbiB3cml0ZSBjb252ZXJzaW9uXG4gICAgZnVuY3Rpb25zIHdpdGhvdXQgZWl0aGVyICgxKSByZS1pbXBsZW1lbnRpbmcgdGhlIG1hcHBpbmcgZnVuY3Rpb24gaW5saW5lIG9yICgyKVxuICAgIHJlYWNoaW5nIGludG8gdGhlIHVuc3RhYmxlIHBhcnQgb2YgdGhlIG1vZHVsZS4gKilcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID0gc2lnXG4gIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgdmFsIG1hcFxuICAgIDogICgnYTEsICdhMiwgJ2EzKSB0XG4gICAgLT4gZjE6KCdhMSAtPiAnYjEpXG4gICAgLT4gZjI6KCdhMiAtPiAnYjIpXG4gICAgLT4gZjM6KCdhMyAtPiAnYjMpXG4gICAgLT4gKCdiMSwgJ2IyLCAnYjMpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICB0eXBlICgnYTEsICdhMiwgJ2EzLCAnYTQpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBtYXBcbiAgICA6ICAoJ2ExLCAnYTIsICdhMywgJ2E0KSB0XG4gICAgLT4gZjE6KCdhMSAtPiAnYjEpXG4gICAgLT4gZjI6KCdhMiAtPiAnYjIpXG4gICAgLT4gZjM6KCdhMyAtPiAnYjMpXG4gICAgLT4gZjQ6KCdhNCAtPiAnYjQpXG4gICAgLT4gKCdiMSwgJ2IyLCAnYjMsICdiNCkgdFxuZW5kXG5cbm1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMwX3dpdGhvdXRfY29tcGFyYXRvciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzBfd2l0aG91dF9jb21wYXJhdG9yIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzAgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIFMwIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzQgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA6PSAoJ2EsICdiLCAnYywgJ2QpIHRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvblxuXG4gICAgdHlwZSB0ID0gQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbi50ID1cbiAgICAgIHsgcG9zX2ZuYW1lIDogc3RyaW5nXG4gICAgICA7IHBvc19sbnVtIDogaW50XG4gICAgICA7IHBvc19ib2wgOiBpbnRcbiAgICAgIDsgcG9zX2NudW0gOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGZpZWxkcywgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5cbmxldCB0b19zdHJpbmcgPSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRvX3N0cmluZ1xubGV0IHNleHBfb2ZfdCA9IEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24uc2V4cF9vZl90XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtJbmZvXSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiBpcyBtYW55IHBsYWNlcyBwbGFjZXMgYXMgcG9zc2libGUuXG4gICBQbGVhc2UgYXZvaWQgYWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgSW5mb19pbnRmXG5cbm1vZHVsZSB0eXBlIFMgPSBCYXNlLkluZm8uU1xuXG5tb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBTb3VyY2VfY29kZV9wb3NpdGlvbjBcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcblxubW9kdWxlIFNleHAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXhwbGliLlNleHBcblxuICBpbmNsdWRlIChcbiAgc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZCA6XG4gIHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5tb2R1bGUgQmluYWJsZV9leG4gPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gZXhuIFtAQGRlcml2aW5nIHNleHBfb2YsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgdG9fYmluYWJsZSB0ID0gdCB8PiBbJXNleHBfb2Y6IHRdXG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IEV4bi5jcmVhdGVfc1xuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoU2V4cClcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA9XG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSBTZXhwLnN0YWJsZV93aXRuZXNzIG9mX2JpbmFibGUgdG9fYmluYWJsZVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEV4dGVuZCAoSW5mbyA6IEJhc2UuSW5mby5TKSA9IHN0cnVjdFxuICBpbmNsdWRlIEluZm9cblxuICBtb2R1bGUgSW50ZXJuYWxfcmVwciA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBCaW5hYmxlX2V4biA9IEJpbmFibGVfZXhuLlN0YWJsZVxuXG4gICAgICBtb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gU291cmNlX2NvZGVfcG9zaXRpb24uU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICAgICgqIFtzZXhwX29mX3RdIGFzIGRlZmluZWQgaGVyZSBpcyB1bnN0YWJsZTsgdGhpcyBpcyBPSyBiZWNhdXNlIHRoZXJlIGlzIG5vXG4gICAgICAgICAgICAgW3Rfb2Zfc2V4cF0uICBbc2V4cF9vZl90XSBpcyBvbmx5IHVzZWQgdG8gcHJvZHVjZSBhIHNleHAgdGhhdCBpcyBuZXZlclxuICAgICAgICAgICAgIGRlc2VyaWFsaXplZCBhcyBhIFtTb3VyY2VfY29kZV9wb3NpdGlvbl0uICopXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnNleHBfb2ZfdFxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSW5mby5JbnRlcm5hbF9yZXByLnQgPVxuICAgICAgICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBvZiBTZXhwLnRcbiAgICAgICAgICB8IFN0cmluZyBvZiBzdHJpbmdcbiAgICAgICAgICB8IEV4biBvZiBCaW5hYmxlX2V4bi5WMS50XG4gICAgICAgICAgfCBTZXhwIG9mIFNleHAudFxuICAgICAgICAgIHwgVGFnX3NleHAgb2Ygc3RyaW5nICogU2V4cC50ICogU291cmNlX2NvZGVfcG9zaXRpb24uVjEudCBvcHRpb25cbiAgICAgICAgICB8IFRhZ190IG9mIHN0cmluZyAqIHRcbiAgICAgICAgICB8IFRhZ19hcmcgb2Ygc3RyaW5nICogU2V4cC50ICogdFxuICAgICAgICAgIHwgT2ZfbGlzdCBvZiBpbnQgb3B0aW9uICogdCBsaXN0XG4gICAgICAgICAgfCBXaXRoX2JhY2t0cmFjZSBvZiB0ICogc3RyaW5nICgqIGJhY2t0cmFjZSAqKVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2YsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFN0YWJsZS5WMlxuXG4gICAgbGV0IHRvX2luZm8gPSBJbmZvLkludGVybmFsX3JlcHIudG9faW5mb1xuICAgIGxldCBvZl9pbmZvID0gSW5mby5JbnRlcm5hbF9yZXByLm9mX2luZm9cbiAgZW5kXG5cbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSW5mby50IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaF1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcblxuICAgICAgbGV0IHRvX2JpbmFibGUgPSBJbmZvLkludGVybmFsX3JlcHIub2ZfaW5mb1xuICAgICAgbGV0IG9mX2JpbmFibGUgPSBJbmZvLkludGVybmFsX3JlcHIudG9faW5mb1xuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoSW50ZXJuYWxfcmVwci5TdGFibGUuVjIpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA9XG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIEludGVybmFsX3JlcHIuU3RhYmxlLlYyLnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgb2ZfYmluYWJsZVxuICAgICAgICAgIHRvX2JpbmFibGVcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEluZm8udCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAgIChTZXhwKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IEluZm8uc2V4cF9vZl90XG4gICAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IEluZm8udF9vZl9zZXhwXG4gICAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG5cbiAgICAgIGxldCB0b19iaW5hYmxlID0gc2V4cF9vZl90XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IHRfb2Zfc2V4cFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoU2V4cClcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlIFNleHAuc3RhYmxlX3dpdG5lc3Mgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICB0eXBlIHQgPSBTdGFibGUuVjIudCBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxuaW5jbHVkZSBFeHRlbmQgKEJhc2UuSW5mbylcblxuIiwiaW5jbHVkZSBCYXNlLkVycm9yXG5pbmNsdWRlIEluZm8uRXh0ZW5kIChCYXNlLkVycm9yKVxuXG5sZXQgZmFpbHdpdGhzID9zdHJpY3QgfmhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIHJhaXNlIChjcmVhdGUgP3N0cmljdCB+aGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IGZhaWx3aXRocCA/c3RyaWN0IGhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIHJhaXNlIChjcmVhdGUgP3N0cmljdCB+aGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFJlc3VsdCA9IEJhc2UuUmVzdWx0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgUmVzdWx0LnQgPVxuICAgICAgfCBPayBvZiAnYVxuICAgICAgfCBFcnJvciBvZiAnYlxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBtYXAgeCB+ZjEgfmYyID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBFcnJvciBlcnIgLT4gRXJyb3IgKGYyIGVycilcbiAgICAgIHwgT2sgeCAtPiBPayAoZjEgeClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgVjFfc3RhYmxlX3VuaXRfdGVzdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChzdHJpbmcsIGludCkgVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5cbiAgICBsZXQgdGVzdHMgPVxuICAgICAgWyBWMS5PayBcImZvb1wiLCBcIihPayBmb28pXCIsIFwiXFwwMDBcXDAwM2Zvb1wiOyBWMS5FcnJvciA3LCBcIihFcnJvciA3KVwiLCBcIlxcMDAxXFwwMDdcIiBdXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgUmVzdWx0XG4iLCIoKiogQW4gaW50ZXJmYWNlIGZvciBjcmVhdGluZyB1bml0IHRlc3RzIHRvIGNoZWNrIHN0YWJpbGl0eSBvZiBzZXhwIGFuZCBiaW4taW9cbiAgICBzZXJpYWxpemF0aW9ucyAqKVxuXG5vcGVuISBJbXBvcnRcblxuXG5tb2R1bGUgdHlwZSBBcmcgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cblxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuXG5cbiAgKCoqIFt0ZXN0c10gaXMgYSBsaXN0IG9mICh2YWx1ZSwgc2V4cC1yZXByZXNlbnRhdGlvbiwgYmluLWlvLXJlcHJlc2VudGF0aW9uKSB0cmlwbGVzLlxuICAgICAgVGhlIHVuaXQgdGVzdHMgY2hlY2sgdGhhdCB0aGUgdHlwZSBwcm9wZXJseSBzZXJpYWxpemVzIGFuZFxuICAgICAgZGUtc2VyaWFsaXplcyBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIHJlcHJlc2VudGF0aW9ucy4gKilcbiAgdmFsIHRlc3RzIDogKHQgKiBzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbmVuZFxuXG4oKiogVW5vcmRlcmVkIGNvbnRhaW5lciB0ZXN0cyBhcmUgZm9yIHR5cGVzIHdpdGggc2VyaWFsaXphdGlvbnMgdGhhdCB3aWxsIGNvbnRhaW4gYVxuICAgIGNlcnRhaW4gc2V0IG9mIGVsZW1lbnRzIChlYWNoIHJlcHJlc2VudGVkIGJ5IGEgc2luZ2xlIHNleHAgb3IgYmluLWlvIHN0cmluZykgd2hpY2ggbWF5XG4gICAgYXBwZWFyIGluIGFueSBvcmRlciwgc3VjaCBhcyBoYXNoIHRhYmxlcyBhbmQgaGFzaCBzZXRzLiAqKVxubW9kdWxlIFVub3JkZXJlZF9jb250YWluZXJfdGVzdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgc2V4cHMgOiBzdHJpbmcgbGlzdFxuICAgIDsgYmluX2lvX2hlYWRlciA6IHN0cmluZ1xuICAgIDsgYmluX2lvX2VsZW1lbnRzIDogc3RyaW5nIGxpc3RcbiAgICB9XG5lbmRcblxubW9kdWxlIHR5cGUgVW5vcmRlcmVkX2NvbnRhaW5lcl9hcmcgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cblxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgdGVzdHMgOiAodCAqIFVub3JkZXJlZF9jb250YWluZXJfdGVzdC50KSBsaXN0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9yX2Vycm9yXG5cbnR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IudCkgUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG5tb2R1bGUgRXhwZWN0X3Rlc3RfY29uZmlnID0gc3RydWN0XG4gIG1vZHVsZSBJTyA9IEJhc2UuT3JfZXJyb3JcblxuICBsZXQgcnVuIGYgPSBva19leG4gKGYgKCkpXG4gIGxldCBzYW5pdGl6ZSBzID0gc1xuICBsZXQgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBFeHBlY3RfdGVzdF9jb25maWcudXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbmVuZFxuXG5tb2R1bGUgRXhwZWN0X3Rlc3RfY29uZmlnX3dpdGhfdW5pdF9leHBlY3QgPSBFeHBlY3RfdGVzdF9jb25maWdcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAoJ2EsIEVycm9yLlN0YWJsZS5WMS50KSBSZXN1bHQuU3RhYmxlLlYxLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCB4IH5mID0gUmVzdWx0LlN0YWJsZS5WMS5tYXAgeCB+ZjE6ZiB+ZjI6Rm4uaWRcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gKCdhLCBFcnJvci5TdGFibGUuVjIudCkgUmVzdWx0LlN0YWJsZS5WMS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBtYXAgeCB+ZiA9IFJlc3VsdC5TdGFibGUuVjEubWFwIHggfmYxOmYgfmYyOkZuLmlkXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TZXF1ZW5jZVxuXG5pbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICBtb2R1bGUgQmluYWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSAnYSBCYXNlLlNlcXVlbmNlLnRcblxuICAgIGxldCBvZl9iaW5hYmxlID0gQmFzZS5TZXF1ZW5jZS5vZl9saXN0XG4gICAgbGV0IHRvX2JpbmFibGUgPSBCYXNlLlNlcXVlbmNlLnRvX2xpc3RcbiAgZW5kKVxuXG5tb2R1bGUgU3RlcCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0ZXBcblxuICB0eXBlICgnYSwgJ3MpIHQgPSAoJ2EsICdzKSBTdGVwLnQgPVxuICAgIHwgRG9uZVxuICAgIHwgU2tpcCBvZiB7IHN0YXRlIDogJ3MgfVxuICAgIHwgWWllbGQgb2ZcbiAgICAgICAgeyB2YWx1ZSA6ICdhXG4gICAgICAgIDsgc3RhdGUgOiAnc1xuICAgICAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5tb2R1bGUgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudFxuXG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnQgPVxuICAgIHwgTGVmdCBvZiAnYVxuICAgIHwgUmlnaHQgb2YgJ2JcbiAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxubW9kdWxlIHR5cGUgSGVhcCA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgY3JlYXRlIDogY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHBvcF9taW4gOiAnYSB0IC0+ICgnYSAqICdhIHQpIG9wdGlvblxuZW5kXG5cbmxldCBtZXJnZV9hbGwgKG1vZHVsZSBIZWFwIDogSGVhcCkgc2VxcyB+Y29tcGFyZSA9XG4gIGxldCBtb2R1bGUgTWVyZ2VfYWxsX3N0YXRlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgaGVhcCA6ICgnYSAqICdhIEJhc2UuU2VxdWVuY2UudCkgSGVhcC50XG4gICAgICA7IG5vdF95ZXRfaW5faGVhcCA6ICdhIEJhc2UuU2VxdWVuY2UudCBsaXN0XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgbGV0IGNyZWF0ZSA9IEZpZWxkcy5jcmVhdGVcbiAgZW5kXG4gIGluXG4gIHVuZm9sZF9zdGVwXG4gICAgfmluaXQ6XG4gICAgICAoTWVyZ2VfYWxsX3N0YXRlLmNyZWF0ZVxuICAgICAgICAgfmhlYXA6KEhlYXAuY3JlYXRlIH5jb21wYXJlOihmdW4gYSBiIC0+IEJhc2UuQ29tcGFyYWJsZS5saWZ0IGNvbXBhcmUgfmY6ZnN0IGEgYikpXG4gICAgICAgICB+bm90X3lldF9pbl9oZWFwOnNlcXMpXG4gICAgfmY6KGZ1biB7IGhlYXA7IG5vdF95ZXRfaW5faGVhcCB9IC0+XG4gICAgICBtYXRjaCBub3RfeWV0X2luX2hlYXAgd2l0aFxuICAgICAgfCBzZXEgOjogbm90X3lldF9pbl9oZWFwIC0+XG4gICAgICAgIChtYXRjaCBFeHBlcnQubmV4dF9zdGVwIHNlcSB3aXRoXG4gICAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0geyBub3RfeWV0X2luX2hlYXA7IGhlYXAgfSB9XG4gICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHNlcSB9IC0+XG4gICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IHsgbm90X3lldF9pbl9oZWFwID0gc2VxIDo6IG5vdF95ZXRfaW5faGVhcDsgaGVhcCB9IH1cbiAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGVsdDsgc3RhdGUgPSBzZXEgfSAtPlxuICAgICAgICAgICBTa2lwIHsgc3RhdGUgPSB7IG5vdF95ZXRfaW5faGVhcDsgaGVhcCA9IEhlYXAuYWRkIGhlYXAgKGVsdCwgc2VxKSB9IH0pXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBIZWFwLnBvcF9taW4gaGVhcCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gRG9uZVxuICAgICAgICAgfCBTb21lICgoZWx0LCBzZXEpLCBoZWFwKSAtPlxuICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gZWx0OyBzdGF0ZSA9IHsgaGVhcDsgbm90X3lldF9pbl9oZWFwID0gWyBzZXEgXSB9IH0pKVxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBRdWlja2NoZWNrX2ludGZcbm9wZW4gQmFzZV9xdWlja2NoZWNrXG5tb2R1bGUgRmxvYXQgPSBCYXNlLkZsb2F0XG5tb2R1bGUgSW50ID0gQmFzZS5JbnRcbm1vZHVsZSBMaXN0ID0gQmFzZS5MaXN0XG5tb2R1bGUgT3B0aW9uID0gQmFzZS5PcHRpb25cbm1vZHVsZSBTZXQgPSBCYXNlLlNldFxubW9kdWxlIFNleHAgPSBCYXNlLlNleHBcblxubW9kdWxlIFBvbHltb3JwaGljX3R5cGVzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdmFyaWFudDIgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHZhcmlhbnQzID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHZhcmlhbnQ0ID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICB8IGBEIG9mICdkXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdmFyaWFudDUgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIHwgYEQgb2YgJ2RcbiAgICB8IGBFIG9mICdlXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHZhcmlhbnQ2ID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICB8IGBEIG9mICdkXG4gICAgfCBgRSBvZiAnZVxuICAgIHwgYEYgb2YgJ2ZcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiKSB0dXBsZTIgPSAnYSAqICdiIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHR1cGxlMyA9ICdhICogJ2IgKiAnYyBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdHVwbGU0ID0gJ2EgKiAnYiAqICdjICogJ2QgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0dXBsZTUgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgdHVwbGU2ID0gJ2EgKiAnYiAqICdjICogJ2QgKiAnZSAqICdmXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoLSdhLCAtJ2IsICdyKSBmbjIgPSAnYSAtPiAnYiAtPiAnciBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAncikgZm4zID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ3IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgLSdkLCAncikgZm40ID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ3IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAtJ2QsIC0nZSwgJ3IpIGZuNSA9ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+ICdyXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgLSdkLCAtJ2UsIC0nZiwgJ3IpIGZuNiA9ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+ICdmIC0+ICdyXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5lbmRcblxubW9kdWxlIE9ic2VydmVyID0gc3RydWN0XG4gIGluY2x1ZGUgT2JzZXJ2ZXJcblxuICBsZXQgb2ZfaGFzaCAodHlwZSBhKSAobW9kdWxlIE0gOiBEZXJpdmluZ19oYXNoIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIG9mX2hhc2hfZm9sZCBNLmhhc2hfZm9sZF90XG4gIDs7XG5cbiAgbGV0IHZhcmlhbnQyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MlxuICBsZXQgdmFyaWFudDMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQzXG4gIGxldCB2YXJpYW50NCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDRcbiAgbGV0IHZhcmlhbnQ1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NVxuICBsZXQgdmFyaWFudDYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQ2XG4gIGxldCB0dXBsZTIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlMlxuICBsZXQgdHVwbGUzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTNcbiAgbGV0IHR1cGxlNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU0XG4gIGxldCB0dXBsZTUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlNVxuICBsZXQgdHVwbGU2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTZcbiAgbGV0IG9mX3ByZWRpY2F0ZSBhIGIgfmYgPSB1bm1hcCAodmFyaWFudDIgYSBiKSB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gYEEgeCBlbHNlIGBCIHgpXG4gIGxldCBzaW5nbGV0b24gKCkgPSBvcGFxdWVcbiAgbGV0IGRvdWJsZXRvbiBmID0gb2ZfcHJlZGljYXRlIChzaW5nbGV0b24gKCkpIChzaW5nbGV0b24gKCkpIH5mXG4gIGxldCBlbnVtIF8gfmYgPSB1bm1hcCBpbnQgfmZcblxuICBsZXQgb2ZfbGlzdCBsaXN0IH5lcXVhbCA9XG4gICAgbGV0IGYgeCA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRpIGxpc3QgfmY6KGZ1biBfIHkgLT4gZXF1YWwgeCB5KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJRdWlja2NoZWNrLk9ic2VydmVyLm9mX2xpc3Q6IHZhbHVlIG5vdCBmb3VuZFwiXG4gICAgICB8IFNvbWUgKGksIF8pIC0+IGlcbiAgICBpblxuICAgIGVudW0gKExpc3QubGVuZ3RoIGxpc3QpIH5mXG4gIDs7XG5cbiAgbGV0IG9mX2Z1biBmID0gY3JlYXRlIChmdW4geCB+c2l6ZSB+aGFzaCAtPiBvYnNlcnZlIChmICgpKSB4IH5zaXplIH5oYXNoKVxuXG4gIGxldCBjb21wYXJpc29uIH5jb21wYXJlIH5lcSB+bHQgfmd0ID1cbiAgICB1bm1hcFxuICAgICAgKHZhcmlhbnQzIGx0IChzaW5nbGV0b24gKCkpIGd0KVxuICAgICAgfmY6KGZ1biB4IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZSB4IGVxIGluXG4gICAgICAgIGlmIGMgPCAwIHRoZW4gYEEgeCBlbHNlIGlmIGMgPiAwIHRoZW4gYEMgeCBlbHNlIGBCIHgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEdlbmVyYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyYXRvclxuICBvcGVuIExldF9zeW50YXhcblxuICBsZXQgc2luZ2xldG9uID0gcmV0dXJuXG5cbiAgbGV0IGRvdWJsZXRvbiB4IHkgPVxuICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBpZiBTcGxpdHRhYmxlX3JhbmRvbS5ib29sIHJhbmRvbSB0aGVuIHggZWxzZSB5KVxuICA7O1xuXG4gIGxldCBvZl9mdW4gZiA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gZ2VuZXJhdGUgKGYgKCkpIH5zaXplIH5yYW5kb20pXG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5wIHNlcSA9XG4gICAgaWYgRmxvYXQuKCA8PSApIHAgMC4gfHwgRmxvYXQuKCA+ICkgcCAxLlxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiBcIkdlbmVyYXRvci5vZl9zZXF1ZW5jZTogcHJvYmFiaWxpdHkgWyVmXSBvdXQgb2YgYm91bmRzXCIgcCk7XG4gICAgU2VxdWVuY2UuZGVsYXllZF9mb2xkXG4gICAgICBzZXFcbiAgICAgIH5pbml0OigpXG4gICAgICB+ZmluaXNoOihmdW4gKCkgLT4gZmFpbHdpdGggXCJHZW5lcmF0b3Iub2Zfc2VxdWVuY2U6IHJhbiBvdXQgb2YgdmFsdWVzXCIpXG4gICAgICB+ZjooZnVuICgpIHggfmsgLT4gd2VpZ2h0ZWRfdW5pb24gWyBwLCBzaW5nbGV0b24geDsgMS4gLS4gcCwgb2ZfZnVuIGsgXSlcbiAgOztcblxuICBsZXQgZ2VvbWV0cmljID0gR2VuZXJhdG9yLmludF9nZW9tZXRyaWNcbiAgbGV0IHNtYWxsX25vbl9uZWdhdGl2ZV9pbnQgPSBzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludFxuICBsZXQgc21hbGxfcG9zaXRpdmVfaW50ID0gc21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50XG4gIGxldCBsaXN0X3dpdGhfbGVuZ3RoIGxlbmd0aCB0ID0gbGlzdF93aXRoX2xlbmd0aCB0IH5sZW5ndGhcbiAgbGV0IHZhcmlhbnQyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDJcbiAgbGV0IHZhcmlhbnQzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDNcbiAgbGV0IHZhcmlhbnQ0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDRcbiAgbGV0IHZhcmlhbnQ1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDVcbiAgbGV0IHZhcmlhbnQ2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDZcbiAgbGV0IHR1cGxlMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMlxuICBsZXQgdHVwbGUzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGUzXG4gIGxldCB0dXBsZTQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTRcbiAgbGV0IHR1cGxlNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNVxuICBsZXQgdHVwbGU2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU2XG4gIGxldCBmbjIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjJcbiAgbGV0IGZuMyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuM1xuICBsZXQgZm40ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm40XG4gIGxldCBmbjUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjVcbiAgbGV0IGZuNiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNlxuXG4gIGxldCBjb21wYXJlX2ZuIGRvbSA9XG4gICAgZm4gZG9tIGludCA+PnwgZnVuIGdldF9pbmRleCB4IHkgLT4gWyVjb21wYXJlOiBpbnRdIChnZXRfaW5kZXggeCkgKGdldF9pbmRleCB5KVxuICA7O1xuXG4gIGxldCBlcXVhbF9mbiBkb20gPSBjb21wYXJlX2ZuIGRvbSA+PnwgZnVuIGNtcCB4IHkgLT4gSW50LiggPSApIChjbXAgeCB5KSAwXG5lbmRcblxubW9kdWxlIFNocmlua2VyID0gc3RydWN0XG4gIGluY2x1ZGUgU2hyaW5rZXJcblxuICBsZXQgZW1wdHkgKCkgPSBhdG9taWNcbiAgbGV0IHZhcmlhbnQyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50MlxuICBsZXQgdmFyaWFudDMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQzXG4gIGxldCB2YXJpYW50NCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDRcbiAgbGV0IHZhcmlhbnQ1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NVxuICBsZXQgdmFyaWFudDYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ2XG4gIGxldCB0dXBsZTIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlMlxuICBsZXQgdHVwbGUzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTNcbiAgbGV0IHR1cGxlNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU0XG4gIGxldCB0dXBsZTUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlNVxuICBsZXQgdHVwbGU2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTZcbmVuZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgR2VuZXJhdG9yXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gR2VuZXJhdG9yXG4gIGVuZFxuXG4gIGluY2x1ZGUgR2VuZXJhdG9yLk1vbmFkX2luZml4XG5cbiAgbGV0IHJldHVybiA9IEdlbmVyYXRvci5yZXR1cm5cbmVuZFxuXG5tb2R1bGUgQ29uZmlndXJlIChDb25maWcgOiBRdWlja2NoZWNrX2NvbmZpZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDb25maWdcblxuICBsZXQgbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcblxuICBsZXQgcmFuZG9tX3N0YXRlX29mX3NlZWQgc2VlZCA9XG4gICAgbWF0Y2ggc2VlZCB3aXRoXG4gICAgfCBgTm9uZGV0ZXJtaW5pc3RpYyAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5jcmVhdGUgKGZvcmNlIG5vbmRldGVybWluaXN0aWNfc3RhdGUpXG4gICAgfCBgRGV0ZXJtaW5pc3RpYyBzdHIgLT4gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUub2ZfaW50IChbJWhhc2g6IHN0cmluZ10gc3RyKVxuICA7O1xuXG4gIGxldCBtYWtlX3NlZWQgc2VlZCA6IFRlc3QuQ29uZmlnLlNlZWQudCA9XG4gICAgbWF0Y2ggc2VlZCB3aXRoXG4gICAgfCBgTm9uZGV0ZXJtaW5pc3RpYyAtPiBOb25kZXRlcm1pbmlzdGljXG4gICAgfCBgRGV0ZXJtaW5pc3RpYyBzdHJpbmcgLT4gRGV0ZXJtaW5pc3RpYyBzdHJpbmdcbiAgOztcblxuICBsZXQgbWFrZV9zaHJpbmtfY291bnQgPSBmdW5jdGlvblxuICAgIHwgYEV4aGF1c3RpdmUgLT4gSW50Lm1heF92YWx1ZVxuICAgIHwgYExpbWl0IG4gLT4gblxuICA7O1xuXG4gIGxldCBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzIDogVGVzdC5Db25maWcudCA9XG4gICAgeyBzZWVkID0gbWFrZV9zZWVkIChPcHRpb24udmFsdWUgc2VlZCB+ZGVmYXVsdDpkZWZhdWx0X3NlZWQpXG4gICAgOyBzaXplcyA9IE9wdGlvbi52YWx1ZSBzaXplcyB+ZGVmYXVsdDpkZWZhdWx0X3NpemVzXG4gICAgOyB0ZXN0X2NvdW50ID0gT3B0aW9uLnZhbHVlIHRyaWFscyB+ZGVmYXVsdDpkZWZhdWx0X3RyaWFsX2NvdW50XG4gICAgOyBzaHJpbmtfY291bnQgPVxuICAgICAgICBtYWtlX3Nocmlua19jb3VudCAoT3B0aW9uLnZhbHVlIHNocmlua19hdHRlbXB0cyB+ZGVmYXVsdDpkZWZhdWx0X3Nocmlua19hdHRlbXB0cylcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1ha2VfdGVzdF9tICh0eXBlIGEpIH5nZW4gfnNocmlua2VyIH5zZXhwX29mIDogKG1vZHVsZSBUZXN0LlMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlblxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBPcHRpb24udmFsdWUgc2hyaW5rZXIgfmRlZmF1bHQ6U2hyaW5rZXIuYXRvbWljXG4gICAgICBsZXQgc2V4cF9vZl90ID0gT3B0aW9uLnZhbHVlIHNleHBfb2YgfmRlZmF1bHQ6WyVzZXhwX29mOiBfXVxuICAgIGVuZFxuICAgIGluXG4gICAgKG1vZHVsZSBNKVxuICA7O1xuXG4gIGxldCByYW5kb21fdmFsdWUgPyhzZWVkID0gZGVmYXVsdF9zZWVkKSA/KHNpemUgPSAzMCkgZ2VuID1cbiAgICBsZXQgcmFuZG9tID0gcmFuZG9tX3N0YXRlX29mX3NlZWQgc2VlZCBpblxuICAgIEdlbmVyYXRvci5nZW5lcmF0ZSBnZW4gfnNpemUgfnJhbmRvbVxuICA7O1xuXG4gIGxldCByYW5kb21fc2VxdWVuY2UgP3NlZWQgP3NpemVzIGdlbiA9XG4gICAgbGV0IGNvbmZpZyA9XG4gICAgICBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFsczooU29tZSBJbnQubWF4X3ZhbHVlKSB+c2hyaW5rX2F0dGVtcHRzOk5vbmVcbiAgICBpblxuICAgIGxldCByZXR1cm4gPSByZWYgU2VxdWVuY2UuZW1wdHkgaW5cbiAgICBUZXN0LndpdGhfc2FtcGxlX2V4biB+Y29uZmlnIGdlbiB+ZjooZnVuIHNlcXVlbmNlIC0+IHJldHVybiA6PSBzZXF1ZW5jZSk7XG4gICAgIXJldHVyblxuICA7O1xuXG4gIGxldCBpdGVyID9zZWVkID9zaXplcyA/dHJpYWxzIGdlbiB+ZiA9XG4gICAgbGV0IGNvbmZpZyA9IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHM6Tm9uZSBpblxuICAgIFRlc3Qud2l0aF9zYW1wbGVfZXhuIH5jb25maWcgZ2VuIH5mOihmdW4gc2VxdWVuY2UgLT4gU2VxdWVuY2UuaXRlciBzZXF1ZW5jZSB+ZilcbiAgOztcblxuICBsZXQgdGVzdCA/c2VlZCA/c2l6ZXMgP3RyaWFscyA/c2hyaW5rZXIgP3Nocmlua19hdHRlbXB0cyA/c2V4cF9vZiA/ZXhhbXBsZXMgZ2VuIH5mID1cbiAgICBsZXQgY29uZmlnID0gbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0cyBpblxuICAgIGxldCB0ZXN0X20gPSBtYWtlX3Rlc3RfbSB+Z2VuIH5zaHJpbmtlciB+c2V4cF9vZiBpblxuICAgIFRlc3QucnVuX2V4biB+Y29uZmlnID9leGFtcGxlcyB+ZiB0ZXN0X21cbiAgOztcblxuICBsZXQgdGVzdF9vcl9lcnJvclxuICAgICAgICA/c2VlZFxuICAgICAgICA/c2l6ZXNcbiAgICAgICAgP3RyaWFsc1xuICAgICAgICA/c2hyaW5rZXJcbiAgICAgICAgP3Nocmlua19hdHRlbXB0c1xuICAgICAgICA/c2V4cF9vZlxuICAgICAgICA/ZXhhbXBsZXNcbiAgICAgICAgZ2VuXG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCBjb25maWcgPSBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzIGluXG4gICAgbGV0IHRlc3RfbSA9IG1ha2VfdGVzdF9tIH5nZW4gfnNocmlua2VyIH5zZXhwX29mIGluXG4gICAgVGVzdC5ydW4gfmNvbmZpZyA/ZXhhbXBsZXMgfmYgdGVzdF9tXG4gIDs7XG5cbiAgbGV0IHRlc3RfZGlzdGluY3RfdmFsdWVzXG4gICAgICAgICh0eXBlIGtleSlcbiAgICAgICAgP3NlZWRcbiAgICAgICAgP3NpemVzXG4gICAgICAgID9zZXhwX29mXG4gICAgICAgIGdlblxuICAgICAgICB+dHJpYWxzXG4gICAgICAgIH5kaXN0aW5jdF92YWx1ZXNcbiAgICAgICAgfmNvbXBhcmVcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBrZXlcblxuICAgICAgbGV0IChjb21wYXJlIDogdCAtPiB0IC0+IGludCkgPSBjb21wYXJlXG5cbiAgICAgIGxldCBzZXhwX29mX3QgPVxuICAgICAgICBtYXRjaCBzZXhwX29mIHdpdGhcbiAgICAgICAgfCBTb21lIHNleHBfb2YgLT4gc2V4cF9vZlxuICAgICAgICB8IE5vbmUgLT4gc2V4cF9vZl9vcGFxdWVcbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcbiAgICBpblxuICAgIGxldCBmYWlsIHNldCA9XG4gICAgICBsZXQgZXhwZWN0X2NvdW50ID0gZGlzdGluY3RfdmFsdWVzIGluXG4gICAgICBsZXQgYWN0dWFsX2NvdW50ID0gU2V0Lmxlbmd0aCBzZXQgaW5cbiAgICAgIGxldCB2YWx1ZXMgPVxuICAgICAgICBtYXRjaCBzZXhwX29mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHNleHBfb2ZfZWx0IC0+IFNvbWUgWyVzZXhwIChTZXQudG9fbGlzdCBzZXQgOiBlbHQgbGlzdCldXG4gICAgICBpblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImluc3VmZmljaWVudCBkaXN0aW5jdCB2YWx1ZXNcIlxuICAgICAgICAgICAgKHRyaWFscyA6IGludClcbiAgICAgICAgICAgIChleHBlY3RfY291bnQgOiBpbnQpXG4gICAgICAgICAgICAoYWN0dWFsX2NvdW50IDogaW50KVxuICAgICAgICAgICAgKHZhbHVlcyA6IChTZXhwLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKV1cbiAgICBpblxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgbGV0IHNldCA9IHJlZiAoU2V0LmVtcHR5IChtb2R1bGUgTSkpIGluXG4gICAgICBpdGVyID9zZWVkID9zaXplcyB+dHJpYWxzIGdlbiB+ZjooZnVuIGVsdCAtPlxuICAgICAgICBzZXQgOj0gU2V0LmFkZCAhc2V0IGVsdDtcbiAgICAgICAgaWYgU2V0Lmxlbmd0aCAhc2V0ID49IGRpc3RpbmN0X3ZhbHVlcyB0aGVuIHIucmV0dXJuICgpKTtcbiAgICAgIGZhaWwgIXNldClcbiAgOztcblxuICBsZXQgdGVzdF9jYW5fZ2VuZXJhdGVcbiAgICAgICAgP3NlZWRcbiAgICAgICAgP3NpemVzXG4gICAgICAgID8odHJpYWxzID0gZGVmYXVsdF9jYW5fZ2VuZXJhdGVfdHJpYWxfY291bnQpXG4gICAgICAgID9zZXhwX29mXG4gICAgICAgIGdlblxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgciA9IHJlZiBbXSBpblxuICAgIGxldCBmX2FuZF9lbnF1ZXVlIHJldHVybiB4ID0gaWYgZiB4IHRoZW4gcmV0dXJuIGBDYW5fZ2VuZXJhdGUgZWxzZSByIDo9IHggOjogIXIgaW5cbiAgICBtYXRjaFxuICAgICAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biByZXR1cm4gLT5cbiAgICAgICAgaXRlciA/c2VlZCA/c2l6ZXMgfnRyaWFscyBnZW4gfmY6KGZfYW5kX2VucXVldWUgcmV0dXJuLnJldHVybik7XG4gICAgICAgIGBDYW5ub3RfZ2VuZXJhdGUpXG4gICAgd2l0aFxuICAgIHwgYENhbl9nZW5lcmF0ZSAtPiAoKVxuICAgIHwgYENhbm5vdF9nZW5lcmF0ZSAtPlxuICAgICAgKG1hdGNoIHNleHBfb2Ygd2l0aFxuICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcImNhbm5vdCBnZW5lcmF0ZVwiXG4gICAgICAgfCBTb21lIHNleHBfb2ZfdmFsdWUgLT5cbiAgICAgICAgIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiY2Fubm90IGdlbmVyYXRlXCIgfmF0dGVtcHRzOighciA6IHZhbHVlIGxpc3QpXSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIENvbmZpZ3VyZSAoc3RydWN0XG4gICAgbGV0IGRlZmF1bHRfc2VlZCA9IGBEZXRlcm1pbmlzdGljIFwiYW4gYXJiaXRyYXJ5IGJ1dCBkZXRlcm1pbmlzdGljIHN0cmluZ1wiXG5cbiAgICBsZXQgZGVmYXVsdF90cmlhbF9jb3VudCA9XG4gICAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICAgIHwgVzY0IC0+IDEwXzAwMFxuICAgICAgfCBXMzIgLT4gMV8wMDBcbiAgICA7O1xuXG4gICAgbGV0IGRlZmF1bHRfY2FuX2dlbmVyYXRlX3RyaWFsX2NvdW50ID0gMTBfMDAwXG4gICAgbGV0IGRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzID0gYExpbWl0IDEwMDBcblxuICAgIGxldCBkZWZhdWx0X3NpemVzID1cbiAgICAgIFNlcXVlbmNlLmN5Y2xlX2xpc3RfZXhuIChMaXN0LnJhbmdlIDAgMzAgfnN0b3A6YGluY2x1c2l2ZSlcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSB0eXBlIFMgPSBTXG5tb2R1bGUgdHlwZSBTMSA9IFMxXG5tb2R1bGUgdHlwZSBTMiA9IFMyXG5tb2R1bGUgdHlwZSBTX2ludCA9IFNfaW50XG5tb2R1bGUgdHlwZSBTX3JhbmdlID0gU19yYW5nZVxuXG50eXBlIG5vbnJlYyBzZWVkID0gc2VlZFxudHlwZSBub25yZWMgc2hyaW5rX2F0dGVtcHRzID0gc2hyaW5rX2F0dGVtcHRzXG5cbm1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfY29uZmlnID0gUXVpY2tjaGVja19jb25maWdcbm1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfY29uZmlndXJlZCA9IFF1aWNrY2hlY2tfY29uZmlndXJlZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFF1aWNrY2hlY2thYmxlX2ludGZcblxubW9kdWxlIHR5cGUgQ29udiA9IENvbnZcbm1vZHVsZSB0eXBlIENvbnZfZmlsdGVyZWQgPSBDb252X2ZpbHRlcmVkXG5tb2R1bGUgdHlwZSBDb252MSA9IENvbnYxXG5tb2R1bGUgdHlwZSBDb252X2ZpbHRlcmVkMSA9IENvbnZfZmlsdGVyZWQxXG5tb2R1bGUgdHlwZSBTID0gUXVpY2tjaGVjay5TXG5tb2R1bGUgdHlwZSBTMSA9IFF1aWNrY2hlY2suUzFcbm1vZHVsZSB0eXBlIFMyID0gUXVpY2tjaGVjay5TMlxubW9kdWxlIHR5cGUgU19pbnQgPSBRdWlja2NoZWNrLlNfaW50XG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZVxuICAgIChRdWlja2NoZWNrYWJsZSA6IFMpXG4gICAgKENvbnYgOiBDb252IHdpdGggdHlwZSBxdWlja2NoZWNrYWJsZSA6PSBRdWlja2NoZWNrYWJsZS50KSA6IFMgd2l0aCB0eXBlIHQgOj0gQ29udi50ID1cbnN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvciB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2ZfcXVpY2tjaGVja2FibGUxXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUzEpXG4gICAgKENvbnYgOiBDb252MSB3aXRoIHR5cGUgJ2EgcXVpY2tjaGVja2FibGUgOj0gJ2EgUXVpY2tjaGVja2FibGUudCkgOlxuICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBDb252LnQgPSBzdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EpXG4gICAgICB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZV9maWx0ZXJlZFxuICAgIChRdWlja2NoZWNrYWJsZSA6IFMpXG4gICAgKENvbnYgOiBDb252X2ZpbHRlcmVkIHdpdGggdHlwZSBxdWlja2NoZWNrYWJsZSA6PSBRdWlja2NoZWNrYWJsZS50KSA6XG4gIFMgd2l0aCB0eXBlIHQgOj0gQ29udi50ID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyX21hcFxuICAgICAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXJfbWFwXG4gICAgICBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2ZfcXVpY2tjaGVja2FibGVfZmlsdGVyZWQxXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUzEpXG4gICAgKENvbnYgOiBDb252X2ZpbHRlcmVkMSB3aXRoIHR5cGUgJ2EgcXVpY2tjaGVja2FibGUgOj0gJ2EgUXVpY2tjaGVja2FibGUudCkgOlxuICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBDb252LnQgPSBzdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlcl9tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvciBnZW5lcmF0ZV9hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hKVxuICAgICAgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLmZpbHRlcl9tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcbiIsImluY2x1ZGUgQmFzZS5PcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uXG5cbmxldCBub3JtYWxpemUgfmxlbmd0aF9mdW4gdCBpID0gaWYgaSA8IDAgdGhlbiBpICsgbGVuZ3RoX2Z1biB0IGVsc2UgaVxuXG5sZXQgc2xpY2Ugfmxlbmd0aF9mdW4gfnN1Yl9mdW4gdCBzdGFydCBzdG9wID1cbiAgbGV0IHN0b3AgPSBpZiBzdG9wID0gMCB0aGVuIGxlbmd0aF9mdW4gdCBlbHNlIHN0b3AgaW5cbiAgbGV0IHBvcyA9IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IHN0YXJ0IGluXG4gIGxldCBsZW4gPSBub3JtYWxpemUgfmxlbmd0aF9mdW4gdCBzdG9wIC0gcG9zIGluXG4gIHN1Yl9mdW4gdCB+cG9zIH5sZW5cbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxub3BlbiBQZXJtcy5FeHBvcnRcbm1vZHVsZSBBcnJheSA9IEJhc2UuQXJyYXlcbm1vZHVsZSBDb3JlX3NlcXVlbmNlID0gU2VxdWVuY2VcblxuaW5jbHVkZSAoXG4gIEJhc2UuQXJyYXkgOlxuICBzaWdcbiAgICB0eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBnbG9iYWxpemUsIHNleHBfZ3JhbW1hcl1cbiAgZW5kKVxuXG50eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG5cbm1vZHVsZSBQcml2YXRlID0gQmFzZS5BcnJheS5Qcml2YXRlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5BcnJheVxuXG4gIGxldCBub3JtYWxpemUgdCBpID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5ub3JtYWxpemUgfmxlbmd0aF9mdW46bGVuZ3RoIHQgaVxuXG4gIGxldCBzbGljZSB0IHN0YXJ0IHN0b3AgPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uc2xpY2Ugfmxlbmd0aF9mdW46bGVuZ3RoIH5zdWJfZnVuOnN1YiB0IHN0YXJ0IHN0b3BcbiAgOztcblxuICBsZXQgbmdldCB0IGkgPSB0Lihub3JtYWxpemUgdCBpKVxuICBsZXQgbnNldCB0IGkgdiA9IHQuKG5vcm1hbGl6ZSB0IGkpIDwtIHZcblxuICBtb2R1bGUgU2VxdWVuY2UgPSBzdHJ1Y3RcbiAgICBvcGVuIEJhc2UuQXJyYXlcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgbGV0IHNldCA9IHNldFxuICBlbmRcblxuICAoKiBTZWUgT0NhbWwgcGVyZiBub3RlcyBmb3Igd2h5IHRoZXNlIGFycmF5IGJsaXRzIGFyZSBzcGVjaWFsIGNhc2VkIC0tIGluIHBhcnRpY3VsYXIsXG4gICAgIHRoZSBzZWN0aW9uIGVudGl0bGVkIFwiRmFzdCwgU2xvdyBhbmQgSW5jb3JyZWN0IEFycmF5IGJsaXRzXCIgb2ZcbiAgICAgaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTMwMjIwMDAwMjI5L2h0dHA6Ly9qYW5lc3RyZWV0LmdpdGh1Yi5jb20vb2NhbWwtcGVyZi1ub3Rlcy5odG1sICopXG4gIG1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRfID0gaW50IGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIG1vZHVsZSBVbnNhZmVfYmxpdCA9IHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOih0X1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0Oih0X1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdFwiXG4gICAgICBbQEBub2FsbG9jXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZVxuICAgICAgVGVzdF9ibGl0Lk1ha2VfYW5kX3Rlc3RcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgICAgbGV0IGVxdWFsID0gKCA9IClcbiAgICAgICAgICBsZXQgb2ZfYm9vbCBiID0gaWYgYiB0aGVuIDEgZWxzZSAwXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgfmxlbiAwXG5cbiAgICAgICAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gICAgdHlwZSB0XyA9IGZsb2F0IGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIG1vZHVsZSBVbnNhZmVfYmxpdCA9IHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOih0X1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0Oih0X1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0XCJcbiAgICAgIFtAQG5vYWxsb2NdXG4gICAgZW5kXG5cbiAgICBleHRlcm5hbCBnZXQgOiAodF9bQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG5cbiAgICBleHRlcm5hbCBzZXRcbiAgICAgIDogICh0X1tAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoZmxvYXRbQGxvY2FsX29wdF0pXG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX2dldFxuICAgICAgOiAgKHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IGZsb2F0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG5cbiAgICBleHRlcm5hbCB1bnNhZmVfc2V0XG4gICAgICA6ICAodF9bQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGZsb2F0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gICAgaW5jbHVkZVxuICAgICAgVGVzdF9ibGl0Lk1ha2VfYW5kX3Rlc3RcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICAgICBsZXQgZXF1YWwgPSBCYXNlLkZsb2F0LmVxdWFsXG4gICAgICAgICAgbGV0IG9mX2Jvb2wgYiA9IGlmIGIgdGhlbiAxLiBlbHNlIDAuXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgfmxlbiAwLlxuXG4gICAgICAgICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFBlcm1pc3Npb25lZCA9IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtcykgdFxuXG4gIGluY2x1ZGVcbiAgICBJbmRleGVkX2NvbnRhaW5lci5TMV93aXRoX2NyZWF0b3JzX3Blcm1pc3Npb25zXG4gICAgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG5cbiAgaW5jbHVkZSBCbGl0LlMxX3Blcm1pc3Npb25zIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuICBpbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlLlMxX3Blcm1pc3Npb25zIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuXG4gIGV4dGVybmFsIGxlbmd0aCA6ICgoJ2EsIF8pIHRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcblxuICBleHRlcm5hbCBnZXRcbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuXG4gIGV4dGVybmFsIHNldFxuICAgIDogICgoJ2EsIFs+IHdyaXRlIF0pIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWFycmF5X3NhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICA6ICAoKCdhLCBbPiB3cml0ZSBdKSB0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcblxuICB2YWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+IChmbG9hdCwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+ICdhIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBjcmVhdGVfbG9jYWwgOiBsZW46aW50IC0+ICdhIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdFtAbG9jYWxdKVxuICB2YWwgaW5pdCA6IGludCAtPiBmOigoaW50IC0+ICdhKVtAbG9jYWxdKSAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbWFrZV9tYXRyaXggOiBkaW14OmludCAtPiBkaW15OmludCAtPiAnYSAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjb3B5X21hdHJpeFxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdCwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgYXBwZW5kIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGNvbmNhdCA6ICgnYSwgWz4gcmVhZCBdKSB0IGxpc3QgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGNvcHkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgZmlsbCA6ICgnYSwgWz4gd3JpdGUgXSkgdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG1hcCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZGluZ19tYXBcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkX21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICdhY2MgKiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBtYXBpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGl0ZXJpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIGZvbGRpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoaW50IC0+ICdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgdmFsIGZvbGRpbmdfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGludCAtPiAnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkX21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChpbnQgLT4gJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjYyAqICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfcmlnaHRcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gJ2FjY1xuXG4gIHZhbCBzb3J0XG4gICAgOiAgP3BvczppbnRcbiAgICAtPiA/bGVuOmludFxuICAgIC0+ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgdmFsIHN0YWJsZV9zb3J0IDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiB1bml0XG4gIHZhbCBpc19zb3J0ZWQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiBib29sXG5cbiAgdmFsIGlzX3NvcnRlZF9zdHJpY3RseVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiBib29sXG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY29uY2F0X21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICgnYiwgWz4gcmVhZCBdKSB0KVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNvbmNhdF9tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoaW50IC0+ICdhIC0+ICgnYiwgWz4gcmVhZCBdKSB0KVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHQgKiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHQgKiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjYXJ0ZXNpYW5fcHJvZHVjdFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2EgKiAnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHRyYW5zcG9zZVxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdCwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHQgb3B0aW9uXG5cbiAgdmFsIHRyYW5zcG9zZV9leG5cbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHQsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIG5vcm1hbGl6ZSA6ICgnYSwgXykgdCAtPiBpbnQgLT4gaW50XG4gIHZhbCBzbGljZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG5nZXQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIG5zZXQgOiAoJ2EsIFs+IHdyaXRlIF0pIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIGZpbHRlcl9vcHQgOiAoJ2Egb3B0aW9uLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGNvdW50aSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgdmFsIGl0ZXIyX2V4blxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2IgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgdmFsIG1hcDJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAoJ2MsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2IgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgdmFsIGZvcl9hbGwyX2V4blxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2IgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiBib29sXG5cbiAgdmFsIGV4aXN0czJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+IGJvb2xcblxuICB2YWwgZmlsdGVyIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZpbHRlcmlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBzd2FwIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCByZXZfaW5wbGFjZSA6ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0IC0+IHVuaXRcbiAgdmFsIHJldiA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X3JldiA6ICdhIGxpc3QgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfbWFwIDogJ2EgbGlzdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X21hcGkgOiAnYSBsaXN0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X3Jldl9tYXAgOiAnYSBsaXN0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcGkgOiAnYSBsaXN0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBtYXBfaW5wbGFjZSA6ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0IC0+IGY6KCgnYSAtPiAnYSlbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgZmluZF9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2FcbiAgdmFsIGZpbmRfbWFwX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiXG4gIHZhbCBmaW5kaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gKGludCAqICdhKSBvcHRpb25cbiAgdmFsIGZpbmRpX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50ICogJ2FcbiAgdmFsIGZpbmRfbWFwaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfbWFwaV9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2JcblxuICB2YWwgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGVcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGVxdWFsOigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIHJlZHVjZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCgnYSAtPiAnYSAtPiAnYSlbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG4gIHZhbCByZWR1Y2VfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+ICdhIC0+ICdhKVtAbG9jYWxdKSAtPiAnYVxuXG4gIHZhbCBwZXJtdXRlXG4gICAgOiAgP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudFxuICAgIC0+ID9wb3M6aW50XG4gICAgLT4gP2xlbjppbnRcbiAgICAtPiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdFxuICAgIC0+IHVuaXRcblxuICB2YWwgcmFuZG9tX2VsZW1lbnQgOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgcmFuZG9tX2VsZW1lbnRfZXhuIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYVxuICB2YWwgemlwIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdiLCBbPiByZWFkIF0pIHQgLT4gKCdhICogJ2IsIFs8IF8gcGVybXMgXSkgdCBvcHRpb25cbiAgdmFsIHppcF9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2IsIFs+IHJlYWQgXSkgdCAtPiAoJ2EgKiAnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCB1bnppcCA6ICgnYSAqICdiLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHQgKiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBzb3J0ZWRfY29weVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBsYXN0IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2FcbiAgdmFsIGVxdWFsIDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGJvb2xcbiAgdmFsIHRvX3NlcXVlbmNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2EgU2VxdWVuY2UudFxuICB2YWwgdG9fc2VxdWVuY2VfbXV0YWJsZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhIFNlcXVlbmNlLnRcbmVuZFxuXG5tb2R1bGUgUGVybWlzc2lvbmVkIDogc2lnXG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBtb2R1bGUgSW50IDogc2lnXG4gICAgdHlwZSBub25yZWMgLSdwZXJtcyB0ID0gKGludCwgJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQmxpdC5TX3Blcm1pc3Npb25zIHdpdGggdHlwZSAncGVybXMgdCA6PSAncGVybXMgdFxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgIDogIHNyYzooWz4gcmVhZCBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgLT4gZHN0OihbPiB3cml0ZSBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgLT4gbGVuOmludFxuICAgICAgLT4gdW5pdFxuICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0XCJcbiAgICBbQEBub2FsbG9jXVxuICBlbmRcblxuICBtb2R1bGUgRmxvYXQgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAtJ3Blcm1zIHQgPSAoZmxvYXQsICdwZXJtcykgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIEJsaXQuU19wZXJtaXNzaW9ucyB3aXRoIHR5cGUgJ3Blcm1zIHQgOj0gJ3Blcm1zIHRcblxuICAgIGV4dGVybmFsIGdldFxuICAgICAgOiAgKFs+IHJlYWQgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IGZsb2F0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuXG4gICAgZXh0ZXJuYWwgc2V0XG4gICAgICA6ICAoWz4gd3JpdGUgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChmbG9hdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG5cbiAgICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgICA6ICAoWz4gcmVhZCBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gZmxvYXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcblxuICAgIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICAgIDogIChbPiByZWFkIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoZmxvYXRbQGxvY2FsX29wdF0pXG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgOiAgc3JjOihbPiByZWFkIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAtPiBkc3Q6KFs+IHdyaXRlIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdFwiXG4gICAgW0BAbm9hbGxvY11cbiAgZW5kXG5cbiAgdmFsIG9mX2FycmF5X2lkIDogJ2EgYXJyYXkgLT4gKCdhLCBbPCByZWFkX3dyaXRlIF0pIHRcbiAgdmFsIHRvX2FycmF5X2lkIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gJ2EgYXJyYXlcbiAgdmFsIHRvX3NlcXVlbmNlX2ltbXV0YWJsZSA6ICgnYSwgWz4gaW1tdXRhYmxlIF0pIHQgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIGluY2x1ZGUgUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwLCB0eXBlcmVwXVxuXG4gIG1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFQuSW50XG5cbiAgICB0eXBlIC0ncGVybXMgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5cbiAgbW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gICAgaW5jbHVkZSBULkZsb2F0XG5cbiAgICB0eXBlIC0ncGVybXMgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5cbiAgbGV0IHRvX2FycmF5X2lkID0gRm4uaWRcbiAgbGV0IG9mX2FycmF5X2lkID0gRm4uaWRcblxuICBpbmNsdWRlIChUIDogUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQpIFtAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgbGV0IHRvX2FycmF5ID0gY29weVxuICBsZXQgdG9fc2VxdWVuY2VfaW1tdXRhYmxlID0gdG9fc2VxdWVuY2VfbXV0YWJsZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgSW5kZXhlZF9jb250YWluZXIuUzFfd2l0aF9jcmVhdG9ycyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogKCdhIHRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6ICgnYSB0W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogKCdhIHRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2dldFxuICAgIDogICgnYSB0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICA6ICAoJ2EgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgY3JlYXRlX2xvY2FsIDogbGVuOmludCAtPiAnYSAtPiAoJ2EgdFtAbG9jYWxdKVxuICB2YWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+IGZsb2F0IHRcbiAgdmFsIGluaXQgOiBpbnQgLT4gZjooKGludCAtPiAnYSlbQGxvY2FsXSkgLT4gJ2EgdFxuICB2YWwgbWFrZV9tYXRyaXggOiBkaW14OmludCAtPiBkaW15OmludCAtPiAnYSAtPiAnYSB0IHRcbiAgdmFsIGNvcHlfbWF0cml4IDogJ2EgdCB0IC0+ICdhIHQgdFxuICB2YWwgYXBwZW5kIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGNvbmNhdCA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBmaWxsIDogJ2EgdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgLT4gdW5pdFxuXG4gIGluY2x1ZGUgQmxpdC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBmb2xkaW5nX21hcCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgZm9sZF9tYXAgOiAnYSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pIC0+ICdhY2MgKiAnYiB0XG4gIHZhbCBtYXBpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBpdGVyaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBmb2xkaSA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOigoaW50IC0+ICdiIC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYlxuXG4gIHZhbCBmb2xkaW5nX21hcGlcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGludCAtPiAnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAnYiB0XG5cbiAgdmFsIGZvbGRfbWFwaVxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoaW50IC0+ICdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICdhY2MgKiAnYiB0XG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pIC0+IGluaXQ6J2FjYyAtPiAnYWNjXG4gIHZhbCBzb3J0IDogP3BvczppbnQgLT4gP2xlbjppbnQgLT4gJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBzdGFibGVfc29ydCA6ICdhIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiB1bml0XG4gIHZhbCBpc19zb3J0ZWQgOiAnYSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGlzX3NvcnRlZF9zdHJpY3RseSA6ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgbWVyZ2UgOiAnYSB0IC0+ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2EgdFxuICB2YWwgY29uY2F0X21hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiIHQpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGNvbmNhdF9tYXBpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiIHQpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBwYXJ0aXRpb25pX3RmIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBjYXJ0ZXNpYW5fcHJvZHVjdCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgdHJhbnNwb3NlIDogJ2EgdCB0IC0+ICdhIHQgdCBvcHRpb25cbiAgdmFsIHRyYW5zcG9zZV9leG4gOiAnYSB0IHQgLT4gJ2EgdCB0XG4gIHZhbCBub3JtYWxpemUgOiAnYSB0IC0+IGludCAtPiBpbnRcbiAgdmFsIHNsaWNlIDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+ICdhIHRcbiAgdmFsIG5nZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICB2YWwgbnNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIGZpbHRlcl9vcHQgOiAnYSBvcHRpb24gdCAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBmaWx0ZXJfbWFwaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGZvcl9hbGxpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgY291bnRpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuICB2YWwgaXRlcjJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCgnYSAtPiAnYiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBtYXAyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBmOigoJ2EgLT4gJ2IgLT4gJ2MpW0Bsb2NhbF0pIC0+ICdjIHRcblxuICB2YWwgZm9sZDJfZXhuXG4gICAgOiAgJ2EgdFxuICAgIC0+ICdiIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYiAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9yX2FsbDJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCgnYSAtPiAnYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHMyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBmOigoJ2EgLT4gJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZmlsdGVyIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdFxuICB2YWwgZmlsdGVyaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBzd2FwIDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHJldl9pbnBsYWNlIDogJ2EgdCAtPiB1bml0XG4gIHZhbCByZXYgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIG9mX2xpc3RfcmV2IDogJ2EgbGlzdCAtPiAnYSB0XG4gIHZhbCBvZl9saXN0X21hcCA6ICdhIGxpc3QgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBvZl9saXN0X21hcGkgOiAnYSBsaXN0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcCA6ICdhIGxpc3QgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBvZl9saXN0X3Jldl9tYXBpIDogJ2EgbGlzdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBtYXBfaW5wbGFjZSA6ICdhIHQgLT4gZjooKCdhIC0+ICdhKVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBmaW5kX2V4biA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhXG4gIHZhbCBmaW5kX21hcF9leG4gOiAnYSB0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiXG4gIHZhbCBmaW5kaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAoaW50ICogJ2EpIG9wdGlvblxuICB2YWwgZmluZGlfZXhuIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludCAqICdhXG4gIHZhbCBmaW5kX21hcGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfbWFwaV9leG4gOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYlxuXG4gIHZhbCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZVxuICAgIDogICdhIHRcbiAgICAtPiBlcXVhbDooKCdhIC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhICogJ2EpIG9wdGlvblxuXG4gIHZhbCByZWR1Y2UgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYSAtPiAnYSlbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG4gIHZhbCByZWR1Y2VfZXhuIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2EgLT4gJ2EpW0Bsb2NhbF0pIC0+ICdhXG4gIHZhbCBwZXJtdXRlIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiA/cG9zOmludCAtPiA/bGVuOmludCAtPiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJhbmRvbV9lbGVtZW50IDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAnYSB0IC0+ICdhIG9wdGlvblxuICB2YWwgcmFuZG9tX2VsZW1lbnRfZXhuIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAnYSB0IC0+ICdhXG4gIHZhbCB6aXAgOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHQgb3B0aW9uXG4gIHZhbCB6aXBfZXhuIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG4gIHZhbCB1bnppcCA6ICgnYSAqICdiKSB0IC0+ICdhIHQgKiAnYiB0XG4gIHZhbCBzb3J0ZWRfY29weSA6ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2EgdFxuICB2YWwgbGFzdCA6ICdhIHQgLT4gJ2FcbiAgdmFsIGVxdWFsIDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCB0b19zZXF1ZW5jZSA6ICdhIHQgLT4gJ2EgQ29yZV9zZXF1ZW5jZS50XG4gIHZhbCB0b19zZXF1ZW5jZV9tdXRhYmxlIDogJ2EgdCAtPiAnYSBDb3JlX3NlcXVlbmNlLnRcbmVuZFxuXG5pbmNsdWRlIChUIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBhcnJheSkgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaXRlciB0IH5mOmludmFyaWFudF9hXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBULkludFxuXG4gIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBULkZsb2F0XG5cbiAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBfIChNIDogUykgOiBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybSkgdF9cblxuICBpbmNsdWRlIFBlcm1pc3Npb25lZCB3aXRoIHR5cGUgKCdhLCAncGVybSkgdCA6PSAoJ2EsICdwZXJtKSB0X1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIHR5cGUgKCdhLCAtJ3Blcm0pIHRfID0gJ2EgdFxuZW5kXG5cbm1vZHVsZSBfIChNIDogUGVybWlzc2lvbmVkKSA6IHNpZ1xuICB0eXBlICdhIHRfXG5cbiAgaW5jbHVkZSBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRfXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSAnYSB0XyA9ICgnYSwgcmVhZF93cml0ZSkgdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFR5cGVyZXBfbGliLlN0ZFxuaW5jbHVkZSBCYXNlLkxpc3RcblxudHlwZSAnYSB0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG5tb2R1bGUgQXNzb2MgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3NvY1xuXG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSAqICdiKSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQgY29tcGFyZSAodHlwZSBhIGIpIGNvbXBhcmVfYSBjb21wYXJlX2IgPSBbJWNvbXBhcmU6IChhICogYikgbGlzdF1cbmVuZFxuXG5sZXQgdG9fc3RyaW5nIH5mIHQgPVxuICBTZXhwbGliLlNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgKGZ1biB4IC0+IFNleHBsaWIuU2V4cC5BdG9tIHgpIChtYXAgdCB+ZikpXG47O1xuXG5pbmNsdWRlIENvbXBhcmF0b3IuRGVyaXZlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3RcbmxldCBnZW5fbm9uX2VtcHR5ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X25vbl9lbXB0eVxuXG5sZXQgZ2VuX3dpdGhfbGVuZ3RoIGxlbmd0aCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF93aXRoX2xlbmd0aCBxdWlja2NoZWNrX2dlbmVyYXRvciB+bGVuZ3RoXG47O1xuXG5sZXQgZ2VuX2ZpbHRlcmVkID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X2ZpbHRlcmVkXG5sZXQgZ2VuX3Blcm11dGF0aW9ucyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF9wZXJtdXRhdGlvbnNcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmxpc3RcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmxpc3RcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBIYXNodGJsX2ludGZcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2h0YmxfaW50Zi5IYXNoYWJsZVxubW9kdWxlIE1lcmdlX2ludG9fYWN0aW9uID0gSGFzaHRibF9pbnRmLk1lcmdlX2ludG9fYWN0aW9uXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5cbmxldCBmYWlsd2l0aHMgPSBFcnJvci5mYWlsd2l0aHNcblxubW9kdWxlIENyZWF0b3JzID0gSGFzaHRibC5DcmVhdG9yc1xuXG5pbmNsdWRlIChcbiAgSGFzaHRibCA6XG4gIHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIEhhc2h0YmwudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBCYXNlLkhhc2h0YmwuU193aXRob3V0X3N1Ym1vZHVsZXMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICBlbmQpXG5cbmxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuXG5tb2R1bGUgVXNpbmdfaGFzaGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKCkgPVxuICAgIGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIGwgPVxuICAgIGNyZWF0ZV9tYXBwZWRcbiAgICAgID9ncm93dGhfYWxsb3dlZFxuICAgICAgP3NpemVcbiAgICAgIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH5nZXRfa2V5XG4gICAgICB+Z2V0X2RhdGFcbiAgICAgIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yXG4gICAgICA/Z3Jvd3RoX2FsbG93ZWRcbiAgICAgID9zaXplXG4gICAgICAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gICAgICB+Z2V0X2tleVxuICAgICAgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGwgPVxuICAgIGdyb3VwXG4gICAgICA/Z3Jvd3RoX2FsbG93ZWRcbiAgICAgID9zaXplXG4gICAgICAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gICAgICB+Z2V0X2tleVxuICAgICAgfmdldF9kYXRhXG4gICAgICB+Y29tYmluZVxuICAgICAgbFxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluIHdpdGggdHlwZSAoJ2EsICdiKSBoYXNodGJsID0gKCdhLCAnYikgdFxubW9kdWxlIHR5cGUgUyA9IFMgd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBTX2JpbmFibGUgd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBTX3N0YWJsZSA9IFNfc3RhYmxlIHdpdGggdHlwZSAoJ2EsICdiKSBoYXNodGJsID0gKCdhLCAnYikgdFxubW9kdWxlIHR5cGUgS2V5X3BsYWluID0gS2V5X3BsYWluXG5tb2R1bGUgdHlwZSBLZXkgPSBLZXlcbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlID0gS2V5X2JpbmFibGVcbm1vZHVsZSB0eXBlIEtleV9zdGFibGUgPSBLZXlfc3RhYmxlXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibC5Qb2x5XG5cbiAgbGV0IHZhbGlkYXRlID0gdmFsaWRhdGVcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgICAgIHR5cGUgKCdhLCAnYikgZWwgPSAnYSAqICdiIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiOGYzZTQ0NWMtNDk5Mi0xMWU2LWEyNzktMzcwM2JlMzExZTdiXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkhhc2h0YmxcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSB+c2l6ZTpsZW4gKCkgaW5cbiAgICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IGtleSwgZGF0YSA9IG5leHQgKCkgaW5cbiAgICAgICAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gc2V0IHQgfmtleSB+ZGF0YVxuICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWx3aXRoIFwiQ29yZV9oYXNodGJsLmJpbl9yZWFkX3RfOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlfcGxhaW5cblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuXG4gIHR5cGUga2V5ID0gVC5LZXkudFxuICB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2EgdCA9IChULktleS50LCAnYSkgaGFzaHRibFxuICB0eXBlICdhIGtleV8gPSBULktleS50XG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBULktleS50XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgKFxuICAgIEhhc2h0YmwgOlxuICAgIHNpZ1xuICAgICAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgaGFzaHRibFxuICAgIGVuZClcblxuICBsZXQgZXF1YWwgPSBIYXNodGJsLmVxdWFsXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2tleSB0ID0gaW52YXJpYW50IGlnbm9yZSBpbnZhcmlhbnRfa2V5IHRcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3YgdCA9IFBvbHkuc2V4cF9vZl90IFQuS2V5LnNleHBfb2ZfdCBzZXhwX29mX3YgdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGtleSkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIEtleS50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoS2V5JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBrZXkpID1cbiAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBULktleVxuICAgICAgICBpbmNsdWRlIEtleSdcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgdHlwZSAnYSBlbCA9IEtleS50ICogJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4ZmFiYWIwYS00OTkyLTExZTYtOGNjYS05YmEyYzQ2ODZkOWVcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuSGFzaHRibFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIH5zaXplOmxlbiAoKSBpblxuICAgICAgICBmb3IgX2kgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICBsZXQga2V5LCBkYXRhID0gbmV4dCAoKSBpblxuICAgICAgICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzZXQgdCB+a2V5IH5kYXRhXG4gICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICAgIFwiSGFzaHRibC5iaW5fcmVhZF90OiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAgICAgICAga2V5XG4gICAgICAgICAgICAgIFslc2V4cF9vZjogS2V5LnRdXG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzXG4gICAgICAoS2V5JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGtleSkgPVxuICBzdHJ1Y3RcbiAgICAoKiBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGhhc2h0YmwgaXMgcmVsaWVkIG9uIGJ5IHN0YWJsZSBtb2R1bGVzXG4gICAgICAgKGUuZy4gSGFzaHRhYmxlLlN0YWJsZSkgYW5kIGlzIHRoZXJlZm9yZSBhc3N1bWVkIHRvIGJlIHN0YWJsZS4gIFNvLCBpZiB0aGUga2V5IGFuZFxuICAgICAgIGRhdGEgY2FuIHByb3ZpZGUgYSBzdGFibGUgd2l0bmVzc2VzLCB0aGVuIHdlIGNhbiBzYWZlbHkgdGhlIGhhc2h0YmwgaXMgYWxzb1xuICAgICAgIHN0YWJsZS4gKilcbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgKHR5cGUgZGF0YSkgKF9kYXRhX3N0YWJsZV93aXRuZXNzIDogZGF0YSBTdGFibGVfd2l0bmVzcy50KVxuICAgICAgOiBkYXRhIHQgU3RhYmxlX3dpdG5lc3MudFxuICAgICAgPVxuICAgICAgbGV0IChfIDoga2V5IFN0YWJsZV93aXRuZXNzLnQpID0gS2V5Jy5zdGFibGVfd2l0bmVzcyBpblxuICAgICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogS2V5XG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoVC5LZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleV9iaW5hYmxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChULktleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9zdGFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlfc3RhYmxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoVC5LZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEtleSA6IEtleV9wbGFpbikgPSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBLZXlcblxuICAgIGxldCBoYXNoYWJsZSA9XG4gICAgICB7IEhhc2hhYmxlLmhhc2ggPSBLZXkuaGFzaDsgY29tcGFyZSA9IEtleS5jb21wYXJlOyBzZXhwX29mX3QgPSBLZXkuc2V4cF9vZl90IH1cbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChLZXkgOiBLZXkpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbiAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEtleSA6IEtleV9iaW5hYmxlKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKEtleSlcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3N0YWJsZSAoS2V5IDogS2V5X3N0YWJsZSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2JpbmFibGUgKEtleSlcbiAgaW5jbHVkZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChLZXkpXG5lbmRcblxubW9kdWxlIE0gPSBIYXNodGJsLk1cblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG5cbm1vZHVsZSBGb3JfZGVyaXZpbmcgOiBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCA9IHN0cnVjdFxuICBpbmNsdWRlIChIYXNodGJsIDogSGFzaHRibC5Gb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdClcblxuICBtb2R1bGUgdHlwZSBNX3F1aWNrY2hlY2sgPSBNX3F1aWNrY2hlY2tcblxuICBsZXQgb2ZfYWxpc3Rfb3B0aW9uIG0gYWxpc3QgPSBSZXN1bHQub2sgKG9mX2FsaXN0X29yX2Vycm9yIG0gYWxpc3QpXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSlcbiAgICAgICAgcXVpY2tjaGVja19nZW5lcmF0b3JfZGF0YVxuICAgID1cbiAgICBbJXF1aWNrY2hlY2suZ2VuZXJhdG9yOiAoS2V5LnQgKiBkYXRhKSBMaXN0LnRdXG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyX21hcCB+Zjoob2ZfYWxpc3Rfb3B0aW9uIChtb2R1bGUgS2V5KSlcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgICAgICh0eXBlIGtleSlcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpXG4gICAgICAgIHF1aWNrY2hlY2tfb2JzZXJ2ZXJfZGF0YVxuICAgID1cbiAgICBbJXF1aWNrY2hlY2sub2JzZXJ2ZXI6IChLZXkudCAqIGRhdGEpIExpc3QudF0gfD4gUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCB+Zjp0b19hbGlzdFxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3RcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSlcbiAgICAgICAgcXVpY2tjaGVja19zaHJpbmtlcl9kYXRhXG4gICAgPVxuICAgIFslcXVpY2tjaGVjay5zaHJpbmtlcjogKEtleS50ICogZGF0YSkgTGlzdC50XVxuICAgIHw+IFF1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyX21hcFxuICAgICAgICAgfmY6KG9mX2FsaXN0X29wdGlvbiAobW9kdWxlIEtleSkpXG4gICAgICAgICB+Zl9pbnZlcnNlOnRvX2FsaXN0XG4gIDs7XG5lbmRcblxuaW5jbHVkZSBGb3JfZGVyaXZpbmdcblxubGV0IGhhc2hhYmxlID0gSGFzaHRibC5Qcml2YXRlLmhhc2hhYmxlXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaF9zZXRfaW50ZlxuaW5jbHVkZSBCYXNlLkhhc2hfc2V0XG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluIHdpdGggdHlwZSAnYSBoYXNoX3NldCA6PSAnYSB0XG5tb2R1bGUgdHlwZSBTID0gUyB3aXRoIHR5cGUgJ2EgaGFzaF9zZXQgOj0gJ2EgdFxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlIHdpdGggdHlwZSAnYSBoYXNoX3NldCA6PSAnYSB0XG5tb2R1bGUgdHlwZSBTX3N0YWJsZSA9IFNfc3RhYmxlIHdpdGggdHlwZSAnYSBoYXNoX3NldCA6PSAnYSB0XG5tb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBIYXNodGJsLktleV9wbGFpblxubW9kdWxlIHR5cGUgRWx0ID0gSGFzaHRibC5LZXlcbm1vZHVsZSB0eXBlIEVsdF9iaW5hYmxlID0gSGFzaHRibC5LZXlfYmluYWJsZVxubW9kdWxlIHR5cGUgRWx0X3N0YWJsZSA9IEhhc2h0YmwuS2V5X3N0YWJsZVxuXG5tb2R1bGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdF9wbGFpblxuXG4gICAgdmFsIGhhc2hhYmxlIDogRWx0LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgZWx0ID0gVC5FbHQudFxuICB0eXBlIG5vbnJlYyB0ID0gZWx0IHRcblxuICBsZXQgZXF1YWwgPSBlcXVhbFxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gVC5FbHQudFxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IFBvbHkuc2V4cF9vZl90IFQuRWx0LnNleHBfb2ZfdCB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGVsdCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgWC50X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGVsdCkgPVxuICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgVC5FbHRcbiAgICAgICAgaW5jbHVkZSBYXG4gICAgICBlbmRcblxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcbiAgICAgIHR5cGUgZWwgPSBFbHQudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBfID0gYmluX2VsXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImFkMzgxNjcyLTQ5OTItMTFlNi05ZTM2LWI3NmRjOGNkNDY2ZlwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5IYXNoX3NldFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciA9IGl0ZXJcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIH5zaXplOmxlbiAoKSBpblxuICAgICAgICBmb3IgX2kgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICBsZXQgdiA9IG5leHQgKCkgaW5cbiAgICAgICAgICBhZGQgdCB2XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGVsdCkgPVxuICBzdHJ1Y3RcbiAgICAoKiBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGhhc2hfc2V0IGlzIHVzZWQgaW4gdGhlIHN0YWJsZSBtb2R1bGVzIGJlbG93LCBzbyBpdCdzXG4gICAgICAgYXNzdW1lZCB0byBiZSBzdGFibGUgKGlmIHRoZSBlbHQgaXMgc3RhYmxlKSAuICopXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIGxldCAoXyA6IGVsdCBTdGFibGVfd2l0bmVzcy50KSA9IFguc3RhYmxlX3dpdG5lc3MgaW5cbiAgICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdFxuXG4gICAgdmFsIGhhc2hhYmxlIDogRWx0LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoVC5FbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdF9iaW5hYmxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKFQuRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3N0YWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdF9zdGFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEVsdC50IEhhc2h0YmwuSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKFQuRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChFbHQgOiBFbHRfcGxhaW4pID0gTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICBtb2R1bGUgRWx0ID0gRWx0XG5cbiAgICBsZXQgaGFzaGFibGUgPSBIYXNodGJsLkhhc2hhYmxlLm9mX2tleSAobW9kdWxlIEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoRWx0IDogRWx0KSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW4gKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChFbHQgOiBFbHRfYmluYWJsZSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChFbHQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9zdGFibGUgKEVsdCA6IEVsdF9zdGFibGUpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9iaW5hYmxlIChFbHQpXG4gIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoRWx0KVxuZW5kXG5cbm1vZHVsZSBVc2luZ19oYXNoYWJsZSA9IHN0cnVjdFxuICB0eXBlICdhIGVsdCA9ICdhXG5cbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlICgpID1cbiAgICBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuZW5kXG5cbmxldCBoYXNoYWJsZSA9IFByaXZhdGUuaGFzaGFibGVcbmxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG1cblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3QgKHR5cGUga2V5KSAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSkgPVxuICBbJXF1aWNrY2hlY2suZ2VuZXJhdG9yOiBLZXkudCBMaXN0MC50XVxuICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6KG9mX2xpc3QgKG1vZHVsZSBLZXkpKVxuOztcblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdCAodHlwZSBrZXkpIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KSA9XG4gIFslcXVpY2tjaGVjay5vYnNlcnZlcjogS2V5LnQgTGlzdDAudF0gfD4gUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCB+Zjp0b19saXN0XG47O1xuXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlcl9tX190ICh0eXBlIGtleSkgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpID1cbiAgWyVxdWlja2NoZWNrLnNocmlua2VyOiBLZXkudCBMaXN0MC50XVxuICB8PiBRdWlja2NoZWNrLlNocmlua2VyLm1hcCB+Zjoob2ZfbGlzdCAobW9kdWxlIEtleSkpIH5mX2ludmVyc2U6dG9fbGlzdFxuOztcbiIsIigqKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGludGVyZmFjZXMgdXNlZCBpbiB7eyFNYXB9W01hcF19LiBTZWUgdGhvc2UgZG9jcyBmb3IgYSBkZXNjcmlwdGlvblxuICAgIG9mIHRoZSBkZXNpZ24uXG5cbiAgICBUaGlzIG1vZHVsZSBkZWZpbmVzIG1vZHVsZSB0eXBlc1xuICAgIFt7Q3JlYXRvcnMsQWNjZXNzb3JzfXsxLDIsMyxfZ2VuZXJpYyxfd2l0aF9jb21wYXJhdG9yfV0uIEl0IHVzZXMgY2hlY2sgZnVuY3RvcnMgdG9cbiAgICBlbnN1cmUgdGhhdCBlYWNoIG1vZHVsZSB0eXBlIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBjb3JyZXNwb25kaW5nIFtfZ2VuZXJpY10gb25lLlxuXG4gICAgV2UgbXVzdCB0cmVhdCBbQ3JlYXRvcnNdIGFuZCBbQWNjZXNzb3JzXSBzZXBhcmF0ZWx5LCBiZWNhdXNlIHdlIHNvbWV0aW1lcyBuZWVkIHRvXG4gICAgY2hvb3NlIGRpZmZlcmVudCBpbnN0YW50aWF0aW9ucyBvZiB0aGVpciBbb3B0aW9uc10uIEluIHBhcnRpY3VsYXIsIFtNYXBdIGl0c2VsZlxuICAgIG1hdGNoZXMgW0NyZWF0b3JzM193aXRoX2NvbXBhcmF0b3JdIGJ1dCBbQWNjZXNzb3JzM10gKHdpdGhvdXQgY29tcGFyYXRvcikuXG4qKVxuXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxubW9kdWxlIE1hcCA9IEJhc2UuTWFwXG5tb2R1bGUgT3JfZHVwbGljYXRlID0gTWFwLk9yX2R1cGxpY2F0ZVxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IE1hcC5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IE1hcC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IE1hcC5XaXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSBUcmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZVxuXG5tb2R1bGUgdHlwZSBLZXlfcGxhaW4gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X2hhc2hhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlX2hhc2hhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5lbmRcblxubW9kdWxlIEtleV9iaW5faW8gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG4gIGVuZFxuXG4gIHR5cGUgKCd0LCAnYykgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICd0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgTWFwLkFjY2Vzc29yc19nZW5lcmljXG5cbiAgdmFsIGtleV9zZXRcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0IC0+ICgnayBrZXksICdjbXAgY21wKSBCYXNlLlNldC50KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCB2YWxpZGF0ZVxuICAgIDogIG5hbWU6KCdrIGtleSAtPiBzdHJpbmcpXG4gICAgLT4gJ3YgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdrIGtleSAtPiBzdHJpbmcpXG4gICAgLT4gKCdrIGtleSAqICd2KSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdrIGtleSBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2sga2V5IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIE1hcC5DcmVhdG9yc19nZW5lcmljXG5cbiAgdmFsIG9mX2hhc2h0YmxfZXhuXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXksICd2KSBIYXNodGJsLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICAoKiogTmV2ZXIgcmVxdWlyZXMgYSBjb21wYXJhdG9yIGJlY2F1c2UgaXQgY2FuIGdldCBvbmUgZnJvbSB0aGUgaW5wdXQgW1NldC50XS4gKilcbiAgdmFsIG9mX2tleV9zZXRcbiAgICA6ICAoJ2sga2V5LCAnY21wIGNtcCkgQmFzZS5TZXQudFxuICAgIC0+IGY6KCgnayBrZXkgLT4gJ3YpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvclxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICdrIGtleSBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgICAtPiAndiBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWVcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAnYSBjbXBcbiAgdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnNcbiAgdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnNcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9uc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5lbmRcblxubW9kdWxlIE1ha2VfU19wbGFpbl90cmVlIChLZXkgOiBDb21wYXJhdG9yLlMpID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlICdhIHQgPSAoS2V5LnQsICdhLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICdiIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAnYiB0XG4gICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9IEtleS50XG4gICAgICB3aXRoIHR5cGUgJ2EgY21wIDo9IEtleS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuXG4gICAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgICAoSyA6IHNpZ1xuICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICAgIGVuZFxuICAgICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgICB0eXBlIF8gdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IHNpZ1xuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIHR5cGUgKydhIHQgPSAoS2V5LnQsICdhLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBNYXAudFxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAnYiB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9IChLZXkudCwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnayBrZXkgOj0gS2V5LnRcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IEtleS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5cbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgdHlwZSBfIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogQmluYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfaGFzaCAoS2V5IDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGhhc2hdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICBLZXkudCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgS2V5LnQgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAgIC0+ICd2IHQgUXVpY2tjaGVjay5TaHJpbmtlci50IClcbiAgICAgICAgV2l0aG91dF9jb21wYXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIG1vZHVsZSBLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTX3BsYWluIHdpdGggbW9kdWxlIEtleSA6PSBLZXlcbiAgaW5jbHVkZSBTZXhwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gc2lnXG4gIG1vZHVsZSBLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFMgd2l0aCBtb2R1bGUgS2V5IDo9IEtleVxuICBpbmNsdWRlIEJpbmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuTWFwLkZvcl9kZXJpdmluZ1xuICBtb2R1bGUgTSA9IEJhc2UuTWFwLk1cblxuICAoKiogVGhlIGZvbGxvd2luZyBbKmJpbipdIGZ1bmN0aW9ucyBzdXBwb3J0IGJpbi1pbyBvbiBiYXNlLXN0eWxlIG1hcHMsXG4gICAgICBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBpbnQgTWFwLk0oU3RyaW5nKS50IFtAQGRlcml2aW5nIGJpbl9pb10gXX0gKilcblxuICB2YWwgYmluX3NoYXBlX21fX3QgOiAoJ2EsICdjKSBLZXlfYmluX2lvLnQgLT4gQmluX3Byb3QuU2hhcGUudCAtPiBCaW5fcHJvdC5TaGFwZS50XG5cbiAgdmFsIGJpbl9zaXplX21fX3RcbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5TaXplLnNpemVyXG4gICAgLT4gKCdhLCAnYiwgJ2MpIHQgQmluX3Byb3QuU2l6ZS5zaXplclxuXG4gIHZhbCBiaW5fd3JpdGVfbV9fdFxuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LldyaXRlLndyaXRlclxuICAgIC0+ICgnYSwgJ2IsICdjKSB0IEJpbl9wcm90LldyaXRlLndyaXRlclxuXG4gIHZhbCBiaW5fcmVhZF9tX190XG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuUmVhZC5yZWFkZXJcbiAgICAtPiAoJ2EsICdiLCAnYykgdCBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gIHZhbCBfX2Jpbl9yZWFkX21fX3RfX1xuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LlJlYWQucmVhZGVyXG4gICAgLT4gKGludCAtPiAoJ2EsICdiLCAnYykgdCkgQmluX3Byb3QuUmVhZC5yZWFkZXJcblxuICAoKiogVGhlIGZvbGxvd2luZyBbcXVpY2tjaGVjaypdIGZ1bmN0aW9ucyBzdXBwb3J0IGRlcml2aW5nIHF1aWNrY2hlY2sgb24gYmFzZS1zdHlsZSBtYXBzLFxuICAgICAgZS5nLjpcblxuICAgICAge1sgdHlwZSB0ID0gaW50IE1hcC5NKFN0cmluZykudCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXSBdfSAqKVxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gIGVuZFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19vYnNlcnZlcl9tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmdfc3RhYmxlID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICBtb2R1bGUgdHlwZSBTdGFibGVfd2l0bmVzc19tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudFxuICBlbmRcblxuICB2YWwgc3RhYmxlX3dpdG5lc3NfbV9fdFxuICAgIDogIChtb2R1bGUgU3RhYmxlX3dpdG5lc3NfbSB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gJ3YgU3RhYmxlX3dpdG5lc3MudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgU3RhYmxlX3dpdG5lc3MudFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gTWFwX2ludGZcbm1vZHVsZSBMaXN0ID0gTGlzdDBcblxubW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSAoJ2ssICd2KSB0ID0gJ2sgKiBbIGBMZWZ0IG9mICd2IHwgYFJpZ2h0IG9mICd2IHwgYFVuZXF1YWwgb2YgJ3YgKiAndiBdXG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiAoaW50LCBzdHJpbmcpIHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCAwMDY3NGJlOWZlOGRmZTllOWFkNDc2MDY3ZDdkODEwMSB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBtYXAgKGssIGRpZmYpIH5mMSB+ZjIgPVxuICAgICAgICBsZXQgayA9IGYxIGsgaW5cbiAgICAgICAgbGV0IGRpZmYgPVxuICAgICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICAgIHwgYExlZnQgdiAtPiBgTGVmdCAoZjIgdilcbiAgICAgICAgICB8IGBSaWdodCB2IC0+IGBSaWdodCAoZjIgdilcbiAgICAgICAgICB8IGBVbmVxdWFsICh2MSwgdjIpIC0+IGBVbmVxdWFsIChmMiB2MSwgZjIgdjIpXG4gICAgICAgIGluXG4gICAgICAgIGssIGRpZmZcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtYXBfZGF0YSB0IH5mID0gbWFwIHQgfmYxOkZuLmlkIH5mMjpmXG5cbiAgICAgIGxldCBsZWZ0IChfa2V5LCBkaWZmKSA9XG4gICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICB8IGBMZWZ0IHggfCBgVW5lcXVhbCAoeCwgXykgLT4gU29tZSB4XG4gICAgICAgIHwgYFJpZ2h0IF8gLT4gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IHJpZ2h0IChfa2V5LCBkaWZmKSA9XG4gICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICB8IGBSaWdodCB4IHwgYFVuZXF1YWwgKF8sIHgpIC0+IFNvbWUgeFxuICAgICAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTdGFibGUuVjFcbmVuZFxuXG5tb2R1bGUgTWVyZ2VfZWxlbWVudCA9IEJhc2UuTWFwLk1lcmdlX2VsZW1lbnRcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQmFzZS5NYXAuQ29udGludWVfb3Jfc3RvcFxubW9kdWxlIEZpbmlzaGVkX29yX3VuZmluaXNoZWQgPSBCYXNlLk1hcC5GaW5pc2hlZF9vcl91bmZpbmlzaGVkXG5cbnR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBrIGNtcCkgKChtb2R1bGUgTSkgOiAoaywgY21wKSBDb21wYXJhdG9yLk1vZHVsZS50KSA9IE0uY29tcGFyYXRvclxuXG5sZXQgb2ZfY29tcGFyYXRvciAodHlwZSBrIGNtcCkgY29tcGFyYXRvciA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbm1vZHVsZSBGb3JfcXVpY2tjaGVjayA9IHN0cnVjdFxuICBsZXQgZ2VuX3RyZWUgfmNvbXBhcmF0b3Iga19nZW4gdl9nZW4gPVxuICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrX2dlbiB2X2dlblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBrX2dlbiB2X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5tYXBfdF9tIChvZl9jb21wYXJhdG9yIGNvbXBhcmF0b3IpIGtfZ2VuIHZfZ2VuXG4gIDs7XG5cbiAgbGV0IG9ic190cmVlIGtfb2JzIHZfb2JzID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm1hcF90cmVlIGtfb2JzIHZfb2JzXG5cbiAgbGV0IHNocl90cmVlIH5jb21wYXJhdG9yIGtfc2hyIHZfc2hyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrX3NociB2X3NoclxuICA7O1xuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubWFwX3RfbVxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubWFwX3RcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm1hcF90XG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwLlVzaW5nX2NvbXBhcmF0b3JcbiAgaW5jbHVkZSBGb3JfcXVpY2tjaGVja1xuXG4gIGxldCBvZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICBtYXRjaCBvZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmk6KEhhc2h0YmwuaXRlcmkgaGFzaHRibCkgd2l0aFxuICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgRXJyb3IuZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJNYXAub2ZfaGFzaHRibF9leG46IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICBrZXlcbiAgICAgICAgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgdHJlZV9vZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICB0b190cmVlIChvZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvciBoYXNodGJsKVxuICA7O1xuXG4gIGxldCBrZXlfc2V0IH5jb21wYXJhdG9yIHQgPVxuICAgIEJhc2UuU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChMaXN0LnRvX2FycmF5IChrZXlzIHQpKVxuICA7O1xuXG4gIGxldCBrZXlfc2V0X29mX3RyZWUgfmNvbXBhcmF0b3IgdCA9IGtleV9zZXQgfmNvbXBhcmF0b3IgKG9mX3RyZWUgfmNvbXBhcmF0b3IgdClcblxuICBsZXQgb2Zfa2V5X3NldCBrZXlfc2V0IH5mID1cbiAgICBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgICB+Y29tcGFyYXRvcjooQmFzZS5TZXQuY29tcGFyYXRvciBrZXlfc2V0KVxuICAgICAgKEFycmF5Lm1hcCAoQmFzZS5TZXQudG9fYXJyYXkga2V5X3NldCkgfmY6KGZ1biBrZXkgLT4ga2V5LCBmIGtleSkpXG4gIDs7XG5cbiAgbGV0IHRyZWVfb2Zfa2V5X3NldCBrZXlfc2V0IH5mID0gdG9fdHJlZSAob2Zfa2V5X3NldCBrZXlfc2V0IH5mKVxuZW5kXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgTWFwLkFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE1hcC50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2sga2V5IDo9ICdrXG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnYylcblxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBrIHYgPSBxdWlja2NoZWNrX29ic2VydmVyIGsgdlxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBrIHYgPSBxdWlja2NoZWNrX3Nocmlua2VyIGsgdlxuICBsZXQga2V5X3NldCB0ID0gVXNpbmdfY29tcGFyYXRvci5rZXlfc2V0IHQgfmNvbXBhcmF0b3I6KFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvciB0KVxuZW5kXG5cbmxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXQgfmNvbXBhcmF0b3I6KFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvciB0KSB0XG5sZXQgb2Zfa2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfa2V5X3NldFxubGV0IGhhc2hfZm9sZF9kaXJlY3QgPSBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3RcbmxldCBjb21wYXJhdG9yID0gVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yXG5sZXQgY29tcGFyYXRvcl9zID0gQmFzZS5NYXAuY29tcGFyYXRvcl9zXG5cbnR5cGUgJ2sga2V5ID0gJ2tcbnR5cGUgJ2MgY21wID0gJ2NcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYXBcblxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgb2ZfdHJlZSBtID0gTWFwLlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuICBsZXQgdG9fdHJlZSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbmVuZCA6XG5zaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNYXAudFxuXG4gIGluY2x1ZGVcbiAgICBNYXAuQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdhLCAnYiwgJ2MpIE1hcC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZS50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgTWFwLldpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2sga2V5IDo9ICdrIGtleVxuICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gJ2MgY21wXG5cbiAgdmFsIHZhbGlkYXRlXG4gICAgOiAgbmFtZTooJ2sgLT4gc3RyaW5nKVxuICAgIC0+ICd2IFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCB2YWxpZGF0ZWlcbiAgICA6ICBuYW1lOignayBrZXkgLT4gc3RyaW5nKVxuICAgIC0+ICgnayBrZXkgKiAndikgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5lbmQpXG5cbm1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uID0gVXNpbmdfY29tcGFyYXRvci5FbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG5cbmxldCBmaW5kX29yX2Vycm9yIHQga2V5ID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHQgaW5cbiAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gIHwgU29tZSBkYXRhIC0+IE9rIGRhdGFcbiAgfCBOb25lIC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gY29tcGFyYXRvci5zZXhwX29mX3QgaW5cbiAgICBPcl9lcnJvci5lcnJvcl9zIFslbWVzc2FnZSBcImtleSBub3QgZm91bmRcIiB+Xzooa2V5IDoga2V5KV1cbjs7XG5cbmxldCBtZXJnZV9za2V3ZWQgPSBNYXAubWVyZ2Vfc2tld2VkXG5sZXQgb2ZfaGFzaHRibF9leG4gbSB0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0XG5cbm1vZHVsZSBDcmVhdG9ycyAoS2V5IDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdF8gPSAoJ2EgS2V5LnQsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgPSAoJ2EsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICB2YWwgdF9vZl9zZXhwXG4gICAgOiAgKEJhc2UuU2V4cC50IC0+ICdhIEtleS50KVxuICAgIC0+IChCYXNlLlNleHAudCAtPiAnYilcbiAgICAtPiBCYXNlLlNleHAudFxuICAgIC0+ICgnYSwgJ2IsIF8pIHRfXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRfXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbmVuZCA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciA9IEtleS5jb21wYXJhdG9yXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgdF8gPSAoJ2EgS2V5LnQsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgPSAoJ2EsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICBtb2R1bGUgTV9lbXB0eSA9IEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEtleSlcblxuICBsZXQgZW1wdHkgPSBNX2VtcHR5LmVtcHR5XG4gIGxldCBvZl90cmVlIHRyZWUgPSBVc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZVxuICBsZXQgc2luZ2xldG9uIGsgdiA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGsgdlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXlcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGFycmF5ID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXlcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNlcVxuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIHNlcSB+aW5pdCB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2Ugc2VxIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mXG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgbGlzdCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5IH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biBsaXN0IH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfZXhuIH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsaXN0IH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdCBhbGlzdCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3QgfmNvbXBhcmF0b3IgYWxpc3RcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfYWxpc3RfZXhuIGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYWxpc3RcbiAgbGV0IG9mX2hhc2h0YmxfZXhuIGhhc2h0YmwgPSBVc2luZ19jb21wYXJhdG9yLm9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmxcbiAgbGV0IG9mX2FsaXN0X211bHRpIGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhbGlzdFxuXG4gIGxldCBvZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0IH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmZcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIGFsaXN0IH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYWxpc3QgfmZcbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpXG5cbiAgbGV0IHRfb2Zfc2V4cCBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3IudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHBcbiAgOztcblxuICBsZXQgb2Zfa2V5X3NldCBrZXlfc2V0IH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9rZXlfc2V0IGtleV9zZXQgfmZcbiAgbGV0IG1hcF9rZXlzIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmZcbiAgbGV0IG1hcF9rZXlzX2V4biB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgdHJhbnNwb3NlX2tleXMgdCA9IFVzaW5nX2NvbXBhcmF0b3IudHJhbnNwb3NlX2tleXMgfmNvbXBhcmF0b3IgdFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBnZW5fayBnZW5fdiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5xdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBnZW5fayBnZW5fdlxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfUzEgKEtleSA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gIG9wZW4gVHJlZVxuXG4gIGxldCBjb21wYXJhdG9yID0gS2V5LmNvbXBhcmF0b3JcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwIGEgYiBjID0gdF9vZl9zZXhwX2RpcmVjdCBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQgZW1wdHkgPSBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBvZl90cmVlIHRyZWUgPSB0cmVlXG4gIGxldCBzaW5nbGV0b24gYSA9IHNpbmdsZXRvbiBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPSBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gb2Zfc29ydGVkX2FycmF5IGEgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSA9IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gb2Zfc2VxdWVuY2UgcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyA9IG9mX3NlcXVlbmNlX29yX2Vycm9yIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzID0gb2Zfc2VxdWVuY2VfZXhuIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHMgPSBvZl9zZXF1ZW5jZV9tdWx0aSBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIHMgfmluaXQgfmYgPSBvZl9zZXF1ZW5jZV9mb2xkIHMgfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzIH5mID0gb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0IGEgPSBvZl9hbGlzdCBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciBhID0gb2ZfYWxpc3Rfb3JfZXJyb3IgYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3RfZXhuIGEgPSBvZl9hbGlzdF9leG4gYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaGFzaHRibF9leG4gYSA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9oYXNodGJsX2V4biBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9tdWx0aSBhID0gb2ZfYWxpc3RfbXVsdGkgYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3RfZm9sZCBhIH5pbml0IH5mID0gb2ZfYWxpc3RfZm9sZCBhIH5pbml0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYSB+ZiA9IG9mX2FsaXN0X3JlZHVjZSBhIH5mIH5jb21wYXJhdG9yXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5IGwgfmdldF9rZXkgPSBvZl9saXN0X3dpdGhfa2V5IGwgfmdldF9rZXkgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsIH5nZXRfa2V5ID1cbiAgICBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGwgfmdldF9rZXkgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gbCB+Z2V0X2tleSA9IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIGwgfmdldF9rZXkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbCB+Z2V0X2tleSA9IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbCB+Z2V0X2tleSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gb2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJhdG9yXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpID0gb2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfa2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9rZXlfc2V0XG4gIGxldCB0b190cmVlIHQgPSB0XG4gIGxldCBpbnZhcmlhbnRzIGEgPSBpbnZhcmlhbnRzIGEgfmNvbXBhcmF0b3JcbiAgbGV0IGlzX2VtcHR5IGEgPSBpc19lbXB0eSBhXG4gIGxldCBsZW5ndGggYSA9IGxlbmd0aCBhXG4gIGxldCBzZXQgYSB+a2V5IH5kYXRhID0gc2V0IGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgYWRkIGEgfmtleSB+ZGF0YSA9IGFkZCBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IGFkZF9leG4gYSB+a2V5IH5kYXRhID0gYWRkX2V4biBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IGFkZF9tdWx0aSBhIH5rZXkgfmRhdGEgPSBhZGRfbXVsdGkgYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCByZW1vdmVfbXVsdGkgYSBiID0gcmVtb3ZlX211bHRpIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgZmluZF9tdWx0aSBhIGIgPSBmaW5kX211bHRpIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgY2hhbmdlIGEgYiB+ZiA9IGNoYW5nZSBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IHVwZGF0ZSBhIGIgfmYgPSB1cGRhdGUgYSBiIH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaW5kX2V4biBhIGIgPSBmaW5kX2V4biBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbmQgYSBiID0gZmluZCBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IHJlbW92ZSBhIGIgPSByZW1vdmUgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBtZW0gYSBiID0gbWVtIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgaXRlcl9rZXlzID0gaXRlcl9rZXlzXG4gIGxldCBpdGVyID0gaXRlclxuICBsZXQgaXRlcmkgPSBpdGVyaVxuICBsZXQgaXRlcmlfdW50aWwgPSBpdGVyaV91bnRpbFxuICBsZXQgaXRlcjIgYSBiIH5mID0gaXRlcjIgYSBiIH5mIH5jb21wYXJhdG9yXG4gIGxldCBtYXAgPSBtYXBcbiAgbGV0IG1hcGkgPSBtYXBpXG4gIGxldCBmb2xkID0gZm9sZFxuICBsZXQgZm9sZF91bnRpbCA9IGZvbGRfdW50aWxcbiAgbGV0IGZvbGRfcmlnaHQgPSBmb2xkX3JpZ2h0XG4gIGxldCBmb2xkMiBhIGIgfmluaXQgfmYgPSBmb2xkMiBhIGIgfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlcl9rZXlzIGEgfmYgPSBmaWx0ZXJfa2V5cyBhIH5mXG4gIGxldCBmaWx0ZXIgYSB+ZiA9IGZpbHRlciBhIH5mXG4gIGxldCBmaWx0ZXJpIGEgfmYgPSBmaWx0ZXJpIGEgfmZcbiAgbGV0IGZpbHRlcl9tYXAgYSB+ZiA9IGZpbHRlcl9tYXAgYSB+ZlxuICBsZXQgZmlsdGVyX21hcGkgYSB+ZiA9IGZpbHRlcl9tYXBpIGEgfmZcbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwIHQgfmZcbiAgbGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZlxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25fdGYgdCB+ZlxuICBsZXQgY29tYmluZV9lcnJvcnMgdCA9IGNvbWJpbmVfZXJyb3JzIHQgfmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmVfZGlyZWN0IGEgYiBjID0gY29tcGFyZV9kaXJlY3QgYSBiIGMgfmNvbXBhcmF0b3JcbiAgbGV0IGVxdWFsIGEgYiBjID0gZXF1YWwgYSBiIGMgfmNvbXBhcmF0b3JcbiAgbGV0IGtleXMgPSBrZXlzXG4gIGxldCBkYXRhID0gZGF0YVxuICBsZXQgdG9fYWxpc3QgPSB0b19hbGlzdFxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsID0gc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsIH5jb21wYXJhdG9yXG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICBmb2xkX3N5bW1ldHJpY19kaWZmIGEgYiB+ZGF0YV9lcXVhbCB+ZiB+aW5pdCB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBtZXJnZSBhIGIgfmYgPSBtZXJnZSBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG1lcmdlX3NrZXdlZCBhIGIgfmNvbWJpbmUgPSBtZXJnZV9za2V3ZWQgYSBiIH5jb21iaW5lIH5jb21wYXJhdG9yXG4gIGxldCBtaW5fZWx0ID0gbWluX2VsdFxuICBsZXQgbWluX2VsdF9leG4gPSBtaW5fZWx0X2V4blxuICBsZXQgbWF4X2VsdCA9IG1heF9lbHRcbiAgbGV0IG1heF9lbHRfZXhuID0gbWF4X2VsdF9leG5cbiAgbGV0IGZvcl9hbGwgPSBmb3JfYWxsXG4gIGxldCBmb3JfYWxsaSA9IGZvcl9hbGxpXG4gIGxldCBleGlzdHMgPSBleGlzdHNcbiAgbGV0IGV4aXN0c2kgPSBleGlzdHNpXG4gIGxldCBjb3VudCA9IGNvdW50XG4gIGxldCBjb3VudGkgPSBjb3VudGlcbiAgbGV0IHNwbGl0IGEgYiA9IHNwbGl0IGEgYiB+Y29tcGFyYXRvclxuICBsZXQgc3BsaXRfbGVfZ3QgYSBiID0gc3BsaXRfbGVfZ3QgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBzcGxpdF9sdF9nZSBhIGIgPSBzcGxpdF9sdF9nZSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCA9IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyYXRvclxuXG4gIGxldCBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+ZiA9XG4gICAgZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggPSByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyYXRvclxuICBsZXQgY2xvc2VzdF9rZXkgYSBiIGMgPSBjbG9zZXN0X2tleSBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQgbnRoID0gbnRoXG4gIGxldCBudGhfZXhuID0gbnRoX2V4blxuICBsZXQgcmFuayBhIGIgPSByYW5rIGEgYiB+Y29tcGFyYXRvclxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIHRvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICA7O1xuXG4gIG1vZHVsZSBNYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEgOiBBcHBsaWNhdGl2ZS5MYXp5X2FwcGxpY2F0aXZlKSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUcmF2ZXJzYWxzID0gTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBKVxuXG4gICAgbGV0IG1hcGkgPSBUcmF2ZXJzYWxzLm1hcGlcbiAgICBsZXQgZmlsdGVyX21hcGkgPSBUcmF2ZXJzYWxzLmZpbHRlcl9tYXBpXG4gIGVuZFxuXG4gIGxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXRfb2ZfdHJlZSB+Y29tcGFyYXRvciB0XG4gIGxldCBtYXBfa2V5cyB0IH5mID0gbWFwX2tleXMgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBtYXBfa2V5c19leG4gdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgdHJhbnNwb3NlX2tleXMgdCA9IHRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yIH5jb21wYXJhdG9yIHRcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGsgdiA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlIH5jb21wYXJhdG9yIGsgdlxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBrIHYgPSBGb3JfcXVpY2tjaGVjay5vYnNfdHJlZSBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgayB2ID0gRm9yX3F1aWNrY2hlY2suc2hyX3RyZWUgfmNvbXBhcmF0b3IgayB2XG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZV9wbGFpbiAoS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBLZXlfUzEgPSBDb21wYXJhdG9yLlNfdG9fUzEgKEtleSlcbiAgaW5jbHVkZSBNYWtlX3RyZWVfUzEgKEtleV9TMSlcblxuICB0eXBlICsndiB0ID0gKEtleS50LCAndiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3YgdCA9IHNleHBfb2ZfdCBLZXkuc2V4cF9vZl90IHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBYLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3RyZWVfcGxhaW4gKEtleSlcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEtleSlcbmVuZFxuXG4oKiBEb24ndCB1c2UgW29mX3NvcnRlZF9hcnJheV0gdG8gYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgYW4gaW50ZXJtZWRpYXRlIGFycmF5ICopXG5sZXQgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZiB+Y29tcGFyYXRvciA9XG4gIGxldCBtYXAgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3IgaW5cbiAgaWYgaW52YXJpYW50cyBtYXBcbiAgdGhlbiBtYXBcbiAgZWxzZSAoXG4gICAgKCogVGhlIGludmFyaWFudHMgYXJlIGJyb2tlbiwgYnV0IHdlIGNhbiBzdGlsbCB0cmF2ZXJzZSB0aGUgc3RydWN0dXJlLiAqKVxuICAgIG1hdGNoIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfml0ZXJpOihpdGVyaSBtYXApIH5jb21wYXJhdG9yIHdpdGhcbiAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgfCBgRHVwbGljYXRlX2tleSBfa2V5IC0+IGZhaWx3aXRoIFwiTWFwLmJpbl9yZWFkX3Q6IGR1cGxpY2F0ZSBlbGVtZW50IGluIG1hcFwiKVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDcmVhdG9ycyAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIG1hcCA9ICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgKCdrLCAndikgdCA9ICgnaywgJ3YsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIG1hcFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIF8gY21wdiB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IGNtcHYgdDEgdDJcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgdCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5zZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hciA9XG4gICAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LkFzc29jLnRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIpXG4gIDs7XG5cbiAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG4gICAgICB0eXBlICgnYSwgJ2IpIGVsID0gJ2EgKiAnYiBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBfID0gYmluX2VsXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImI3ZDdiMWEwLTQ5OTItMTFlNi04YTMyLWJiYjIyMWZhMDI1Y1wiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5NYXBcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gICAgdHlwZSAoJ2ssICsndikgdCA9ICgnaywgJ3YsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRyZWVcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0ID0gc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgWyVzZXhwX29mOiBfXSB0XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hciA9XG4gICAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QuQXNzb2MudF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hcilcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXlfcGxhaW4gPSBLZXlfcGxhaW5cbm1vZHVsZSB0eXBlIEtleSA9IEtleVxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGUgPSBLZXlfYmluYWJsZVxubW9kdWxlIHR5cGUgS2V5X2hhc2hhYmxlID0gS2V5X2hhc2hhYmxlXG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZV9oYXNoYWJsZSA9IEtleV9iaW5hYmxlX2hhc2hhYmxlXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gU19wbGFpblxubW9kdWxlIHR5cGUgUyA9IFNcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZVxuXG5tb2R1bGUgS2V5X2Jpbl9pbyA9IEtleV9iaW5faW9cblxubW9kdWxlIFByb3ZpZGVfYmluX2lvIChLZXkgOiBLZXlfYmluX2lvLlMpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IEtleVxuXG4gICAgdHlwZSBub25yZWMgJ3YgdCA9IChLZXkudCwgJ3YsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICB0eXBlICd2IGVsID0gS2V5LnQgKiAndiBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImRmYjMwMGY4LTQ5OTItMTFlNi05YzE1LTczYTJhYzZiODE1Y1wiXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLk1hcFwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBmIChrZXksIGRhdGEpKVxuXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpLZXkuY29tcGFyYXRvclxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBtYXAgaXMgdXNlZCBpbiB0aGUgc3RhYmxlIG1vZHVsZXMgYmVsb3csIHNvIGl0J3NcbiAgICAgYXNzdW1lZCB0byBiZSBzdGFibGUgKGlmIHRoZSBrZXkgYW5kIGRhdGEgYXJlIHN0YWJsZSkgLiAqKVxuICBsZXQgc3RhYmxlX3dpdG5lc3MgKHR5cGUgZGF0YSkgKF9kYXRhX3N0YWJsZV93aXRuZXNzIDogZGF0YSBTdGFibGVfd2l0bmVzcy50KVxuICAgIDogKEtleS50LCBkYXRhLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSB0IFN0YWJsZV93aXRuZXNzLnRcbiAgICA9XG4gICAgbGV0IChfIDogS2V5LnQgU3RhYmxlX3dpdG5lc3MudCkgPSBLZXkuc3RhYmxlX3dpdG5lc3MgaW5cbiAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBLZXkgPSBLZXlcbiAgbW9kdWxlIEtleV9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoS2V5KVxuICBpbmNsdWRlIENyZWF0b3JzIChLZXlfUzEpXG5cbiAgdHlwZSBrZXkgPSBLZXkudFxuICB0eXBlICgnYSwgJ2IsICdjKSBtYXAgPSAoJ2EsICdiLCAnYykgdFxuICB0eXBlICd2IHQgPSAoa2V5LCAndiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgbWFwXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSBjbXB2IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY21wdiB0MSB0MlxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl92IHQgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iuc2V4cF9vZl90IEtleS5zZXhwX29mX3Qgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuICA7O1xuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgdl9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgS2V5LnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChLZXknIDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID0gc3RydWN0XG4gICAgbGV0IGhhc2hfZm9sZF90ICh0eXBlIGEpIGhhc2hfZm9sZF9kYXRhIHN0YXRlICh0IDogYSB0KSA9XG4gICAgICBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3QgS2V5Jy5oYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0XG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoS2V5JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICAgIFByb3ZpZGVfYmluX2lvIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgS2V5XG4gICAgICBpbmNsdWRlIEtleSdcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3NcbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID1cbiAgICBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgS2V5XG4gICAgICBpbmNsdWRlIEtleSdcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEtleSA6IEtleV9wbGFpbikgPSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgS2V5XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEtleSlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChLZXlfc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoS2V5X3NleHApXG4gIG1vZHVsZSBLZXkgPSBLZXlfc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuXG4gIG1vZHVsZSBfID0gc3RydWN0XG4gICAgaW5jbHVkZSBUcmVlXG4gICAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEtleSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UgKEtleSA6IEtleSkgPSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgS2V5XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEtleSlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9iaW5fc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChLZXlfYmluX3NleHApXG4gIG1vZHVsZSBLZXkgPSBLZXlfYmluX3NleHBcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEtleSA6IEtleV9iaW5hYmxlKSA9IE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEtleVxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChLZXkpXG4gIGVuZClcblxubW9kdWxlIEZvcl9kZXJpdmluZyA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1hcC5NXG5cbiAgbGV0IGJpbl9zaGFwZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fc2hhcGVfdFxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fc2l6ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fd3JpdGVfdFxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fcmVhZF90XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfbV9fdF9fICh0eXBlIHQgYykgKG0gOiAodCwgYykgS2V5X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5fX2Jpbl9yZWFkX3RfX1xuICA7O1xuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gIGVuZFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdl9nZW5lcmF0b3JcbiAgICA9XG4gICAgcXVpY2tjaGVja19nZW5lcmF0b3IgKG1vZHVsZSBLZXkpIEtleS5xdWlja2NoZWNrX2dlbmVyYXRvciB2X2dlbmVyYXRvclxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgS2V5IDogUXVpY2tjaGVja19vYnNlcnZlcl9tIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZfb2JzZXJ2ZXJcbiAgICA9XG4gICAgcXVpY2tjaGVja19vYnNlcnZlciBLZXkucXVpY2tjaGVja19vYnNlcnZlciB2X29ic2VydmVyXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdl9zaHJpbmtlclxuICAgID1cbiAgICBxdWlja2NoZWNrX3Nocmlua2VyIEtleS5xdWlja2NoZWNrX3Nocmlua2VyIHZfc2hyaW5rZXJcbiAgOztcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBNYXAuRm9yX2Rlcml2aW5nXG5cbiAgaW5jbHVkZSAoTWFwIDogRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdClcbmVuZFxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nX3N0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTdGFibGVfd2l0bmVzc19tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudFxuICBlbmRcblxuICBsZXQgc3RhYmxlX3dpdG5lc3NfbV9fdFxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBTdGFibGVfd2l0bmVzc19tIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEtleSkgaW5cbiAgICBNLnN0YWJsZV93aXRuZXNzXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBGb3JfZGVyaXZpbmdcblxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUcmVlXG5cbiAgbGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG4gIGxldCB2YWxpZGF0ZWkgfm5hbWUgZiB0ID0gVmFsaWRhdGUubGlzdCB+bmFtZTooRm4uY29tcG9zZSBuYW1lIGZzdCkgZiAodG9fYWxpc3QgdClcbiAgbGV0IG9mX2hhc2h0YmxfZXhuID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2hhc2h0YmxfZXhuXG4gIGxldCBrZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci5rZXlfc2V0X29mX3RyZWVcbiAgbGV0IG9mX2tleV9zZXQgPSBVc2luZ19jb21wYXJhdG9yLnRyZWVfb2Zfa2V5X3NldFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3IgayB2ID0gRm9yX3F1aWNrY2hlY2suZ2VuX3RyZWUgfmNvbXBhcmF0b3IgayB2XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlIGsgdlxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciB+Y29tcGFyYXRvciBrIHYgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZSB+Y29tcGFyYXRvciBrIHZcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnaywgJ3YsICdjbXApIHQgPSAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGtleVxuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAoa2V5LCAnYSwgY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgICAgIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEZvcl9kZXJpdmluZ1xuICAgIGluY2x1ZGUgRm9yX2Rlcml2aW5nX3N0YWJsZVxuICAgIG1vZHVsZSBNYWtlIChLZXkgOiBTdGFibGVfbW9kdWxlX3R5cGVzLlMwKSA9IE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChLZXkpXG5cbiAgICBtb2R1bGUgV2l0aF9zdGFibGVfd2l0bmVzcyA9IHN0cnVjdFxuICAgICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgICBpbmNsdWRlIFNcblxuICAgICAgICB2YWwgc3RhYmxlX3dpdG5lc3MgOiAnYSBTdGFibGVfd2l0bmVzcy50IC0+ICdhIHQgU3RhYmxlX3dpdG5lc3MudFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlIChLZXlfc3RhYmxlIDogU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwKSA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE1ha2UgKEtleV9zdGFibGUpXG4gICAgICAgIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoS2V5X3N0YWJsZSlcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IFN5bW1ldHJpY19kaWZmX2VsZW1lbnQuU3RhYmxlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEJhc2UuTWF5YmVfYm91bmQudCA9XG4gICAgICB8IEluY2wgb2YgJ2FcbiAgICAgIHwgRXhjbCBvZiAnYVxuICAgICAgfCBVbmJvdW5kZWRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBtYXAgeCB+ZiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgSW5jbCB4IC0+IEluY2wgKGYgeClcbiAgICAgIHwgRXhjbCB4IC0+IEV4Y2wgKGYgeClcbiAgICAgIHwgVW5ib3VuZGVkIC0+IFVuYm91bmRlZFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgQmFzZS5NYXliZV9ib3VuZFxuXG50eXBlICdhIHQgPSAnYSBTdGFibGUuVjEudCA9XG4gIHwgSW5jbCBvZiAnYVxuICB8IEV4Y2wgb2YgJ2FcbiAgfCBVbmJvdW5kZWRcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2ssIHNleHBdXG5cbmxldCBjb21wYXJlX29uZV9zaWRlZCB+c2lkZSBjb21wYXJlX2EgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IFVuYm91bmRlZCwgVW5ib3VuZGVkIC0+IDBcbiAgfCBVbmJvdW5kZWQsIF8gLT5cbiAgICAobWF0Y2ggc2lkZSB3aXRoXG4gICAgIHwgYExvd2VyIC0+IC0xXG4gICAgIHwgYFVwcGVyIC0+IDEpXG4gIHwgXywgVW5ib3VuZGVkIC0+XG4gICAgKG1hdGNoIHNpZGUgd2l0aFxuICAgICB8IGBMb3dlciAtPiAxXG4gICAgIHwgYFVwcGVyIC0+IC0xKVxuICB8IEluY2wgYTEsIEluY2wgYTIgLT4gY29tcGFyZV9hIGExIGEyXG4gIHwgRXhjbCBhMSwgRXhjbCBhMiAtPiBjb21wYXJlX2EgYTEgYTJcbiAgfCBJbmNsIGExLCBFeGNsIGEyIC0+XG4gICAgbGV0IGMgPSBjb21wYXJlX2EgYTEgYTIgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggc2lkZSB3aXRoXG4gICAgICB8IGBMb3dlciAtPiAtMVxuICAgICAgfCBgVXBwZXIgLT4gMSlcbiAgICBlbHNlIGNcbiAgfCBFeGNsIGExLCBJbmNsIGEyIC0+XG4gICAgbGV0IGMgPSBjb21wYXJlX2EgYTEgYTIgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggc2lkZSB3aXRoXG4gICAgICB8IGBMb3dlciAtPiAxXG4gICAgICB8IGBVcHBlciAtPiAtMSlcbiAgICBlbHNlIGNcbjs7XG5cbm1vZHVsZSBBc19sb3dlcl9ib3VuZCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaF1cblxuICBsZXQgY29tcGFyZSBjb21wYXJlX2EgdDEgdDIgPSBjb21wYXJlX29uZV9zaWRlZCB+c2lkZTpgTG93ZXIgY29tcGFyZV9hIHQxIHQyXG5lbmRcblxubW9kdWxlIEFzX3VwcGVyX2JvdW5kID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9IGNvbXBhcmVfb25lX3NpZGVkIH5zaWRlOmBVcHBlciBjb21wYXJlX2EgdDEgdDJcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgaW50ZXJmYWNlcyB1c2VkIGluIHt7IUNvcmUuU2V0fVtTZXRdfS4gU2VlIHRoZVxuICAgIHshTWFwfSBkb2NzIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBkZXNpZ24uXG5cbiAgICBUaGlzIG1vZHVsZSBkZWZpbmVzIG1vZHVsZSB0eXBlc1xuICAgIFt7Q3JlYXRvcnMsQWNjZXNzb3JzfXswLDEsMixfZ2VuZXJpYyxfd2l0aF9jb21wYXJhdG9yfV0uIEl0IHVzZXMgY2hlY2sgZnVuY3RvcnMgdG9cbiAgICBlbnN1cmUgdGhhdCBlYWNoIG1vZHVsZSB0eXBlIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBjb3JyZXNwb25kaW5nIFtfZ2VuZXJpY10gb25lLlxuXG4gICAgV2UgbXVzdCB0cmVhdCBbQ3JlYXRvcnNdIGFuZCBbQWNjZXNzb3JzXSBzZXBhcmF0ZWx5LCBiZWNhdXNlIHdlIHNvbWV0aW1lcyBuZWVkIHRvXG4gICAgY2hvb3NlIGRpZmZlcmVudCBpbnN0YW50aWF0aW9ucyBvZiB0aGVpciBbb3B0aW9uc10uIEluIHBhcnRpY3VsYXIsIFtTZXRdIGl0c2VsZlxuICAgIG1hdGNoZXMgW0NyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3JdIGJ1dCBbQWNjZXNzb3JzMl0gKHdpdGhvdXQgY29tcGFyYXRvcikuXG4qKVxuXG4oKlxuICAgQ1JzIGFuZCBjb21tZW50cyBhYm91dCBbU2V0XSBmdW5jdGlvbnMgZG8gbm90IGJlbG9uZyBpbiB0aGlzIGZpbGUuICBUaGV5IGJlbG9uZyBuZXh0XG4gICB0byB0aGUgYXBwcm9wcmlhdGUgZnVuY3Rpb24gaW4gc2V0Lm1saS5cbiopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxubW9kdWxlIFNldCA9IEJhc2UuU2V0XG5tb2R1bGUgVHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWVcbm1vZHVsZSBDb250YWluZXIgPSBCYXNlLkNvbnRhaW5lclxuXG5tb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBTZXQuRWx0X3BsYWluXG5cbm1vZHVsZSB0eXBlIEVsdCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBFbHRfYmluYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBFbHRfYmluX2lvID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuICBlbmRcblxuICB0eXBlICgndCwgJ2MpIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAndCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnYylcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLlNldC5Gb3JfZGVyaXZpbmdcbiAgbW9kdWxlIE0gPSBCYXNlLlNldC5NXG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgWypiaW4qXSBmdW5jdGlvbnMgc3VwcG9ydCBiaW4taW8gb24gYmFzZS1zdHlsZSBzZXRzLCBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBTZXQuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgYmluX2lvXSBdfSAqKVxuXG4gIHZhbCBiaW5fc2hhcGVfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiBCaW5fcHJvdC5TaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV9tX190IDogKCdhLCAnYikgRWx0X2Jpbl9pby50IC0+ICgnYSwgJ2IpIHQgQmluX3Byb3QuU2l6ZS5zaXplclxuICB2YWwgYmluX3dyaXRlX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gKCdhLCAnYikgdCBCaW5fcHJvdC5Xcml0ZS53cml0ZXJcbiAgdmFsIGJpbl9yZWFkX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gKCdhLCAnYikgdCBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gIHZhbCBfX2Jpbl9yZWFkX21fX3RfX1xuICAgIDogICgnYSwgJ2IpIEVsdF9iaW5faW8udFxuICAgIC0+IChpbnQgLT4gKCdhLCAnYikgdCkgQmluX3Byb3QuUmVhZC5yZWFkZXJcblxuICAoKiogVGhlIGZvbGxvd2luZyBbcXVpY2tjaGVjaypdIGZ1bmN0aW9ucyBzdXBwb3J0IGRlcml2aW5nIHF1aWNrY2hlY2sgb24gYmFzZS1zdHlsZVxuICAgICAgc2V0cywgZS5nLjpcblxuICAgICAge1sgdHlwZSB0ID0gU2V0Lk0oU3RyaW5nKS50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdIF19ICopXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19vYnNlcnZlcl9tIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19zaHJpbmtlcl9tIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nX3N0YWJsZSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICBtb2R1bGUgdHlwZSBTdGFibGVfd2l0bmVzc19tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudFxuICBlbmRcblxuICB2YWwgc3RhYmxlX3dpdG5lc3NfbV9fdFxuICAgIDogIChtb2R1bGUgU3RhYmxlX3dpdG5lc3NfbSB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKCdhLCAnY21wKSB0IFN0YWJsZV93aXRuZXNzLnRcbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gU2V0LldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IFNldC5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IFNldC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcFxubW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgPSBTZXF1ZW5jZS5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIFNldC5BY2Nlc3NvcnNfZ2VuZXJpY1xuXG4gIHZhbCB0b19tYXBcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gZjooKCdhIGVsdCAtPiAnYilbQGxvY2FsXSkgLT4gKCdhIGVsdCwgJ2IsICdjbXAgY21wKSBCYXNlLk1hcC50XG4gICAgICApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICAnYSBlbHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2EgZWx0IFF1aWNrY2hlY2suU2hyaW5rZXIudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgU2V0LkNyZWF0b3JzX2dlbmVyaWNcblxuICB2YWwgb2ZfaGFzaF9zZXQgOiAoJ2EsICdjbXAsICdhIGVsdCBIYXNoX3NldC50IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX2hhc2h0Ymxfa2V5cyA6ICgnYSwgJ2NtcCwgKCdhIGVsdCwgXykgSGFzaHRibC50IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICAoKiogTmV2ZXIgcmVxdWlyZXMgYSBjb21wYXJhdG9yIGJlY2F1c2UgaXQgY2FuIGdldCBvbmUgZnJvbSB0aGUgaW5wdXQgW01hcC50XS4gKilcbiAgdmFsIG9mX21hcF9rZXlzIDogKCdhIGVsdCwgXywgJ2NtcCBjbXApIEJhc2UuTWFwLnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2EgZWx0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnZWx0LCAnY21wKSB0XG4gIHR5cGUgKCdlbHQsICdjbXApIHRyZWVcbiAgdHlwZSAnZWx0IGVsdFxuICB0eXBlICdjbXAgY21wXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIGNtcFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIGNtcFxuZW5kXG5cbm1vZHVsZSBNYWtlX1NfcGxhaW5fdHJlZSAoRWx0IDogQ29tcGFyYXRvci5TKSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gdFxuICAgICAgd2l0aCB0eXBlICdhIGVsdCA6PSBFbHQudFxuICAgICAgd2l0aCB0eXBlICdjIGNtcCA6PSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuXG4gICAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgICAoRWx0IDogc2lnXG4gICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgICAgZW5kXG4gICAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5TZXQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgU2V0LnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9IEVsdC50XG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoRWx0IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpIDogQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChFbHQgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IEVsdC50IFF1aWNrY2hlY2suT2JzZXJ2ZXIudCAtPiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IEVsdC50IFF1aWNrY2hlY2suU2hyaW5rZXIudCAtPiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFNfcGxhaW4gd2l0aCBtb2R1bGUgRWx0IDo9IEVsdFxuICBpbmNsdWRlIFNleHBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTIHdpdGggbW9kdWxlIEVsdCA6PSBFbHRcbiAgaW5jbHVkZSBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbm9wZW4gU2V0X2ludGZcbm1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50ID0gTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudFxuXG5tb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBFbHRfcGxhaW5cbm1vZHVsZSB0eXBlIEVsdCA9IEVsdFxubW9kdWxlIHR5cGUgRWx0X2JpbmFibGUgPSBFbHRfYmluYWJsZVxuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBrIGNtcCkgKChtb2R1bGUgTSkgOiAoaywgY21wKSBDb21wYXJhdG9yLk1vZHVsZS50KSA9IE0uY29tcGFyYXRvclxuXG5sZXQgb2ZfY29tcGFyYXRvciAodHlwZSBrIGNtcCkgY29tcGFyYXRvciA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbm1vZHVsZSBGb3JfcXVpY2tjaGVjayA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zZXRfdF9tIChvZl9jb21wYXJhdG9yIGNvbXBhcmF0b3IpIGVsdF9nZW5cbiAgOztcblxuICBsZXQgZ2VuX3RyZWUgfmNvbXBhcmF0b3IgZWx0X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW5cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBlbHRfb2JzID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnNldF90IGVsdF9vYnNcbiAgbGV0IG9ic190cmVlIGVsdF9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc2V0X3RyZWUgZWx0X29ic1xuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBlbHRfc2hyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnNldF90IGVsdF9zaHJcblxuICBsZXQgc2hyX3RyZWUgfmNvbXBhcmF0b3IgZWx0X3NociA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X3NoclxuICA7O1xuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBtIGVsdF9nZW4gPVxuICBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBlbHRfZ2VuXG47O1xuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlclxuXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRyZWVcblxuICBsZXQgdG9fbWFwIH5jb21wYXJhdG9yIHQgPSBNYXAub2Zfa2V5X3NldCAoU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB0IH5jb21wYXJhdG9yKVxuICBsZXQgb2ZfbWFwX2tleXMgbSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWUgKE1hcC5rZXlfc2V0IG0pXG5cbiAgbGV0IG9mX2hhc2hfc2V0IH5jb21wYXJhdG9yIGhzZXQgPVxuICAgIEhhc2hfc2V0LmZvbGQgaHNldCB+aW5pdDooZW1wdHkgfmNvbXBhcmF0b3IpIH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICBIYXNodGJsLmZvbGQgaGFzaHRibCB+aW5pdDooZW1wdHkgfmNvbXBhcmF0b3IpIH5mOihmdW4gfmtleTp4IH5kYXRhOl8gdCAtPlxuICAgICAgYWRkIHQgeCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBGb3JfcXVpY2tjaGVjay5nZW5fdHJlZVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gRm9yX3F1aWNrY2hlY2suc2hyX3RyZWVcbmVuZFxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIFNldC5Vc2luZ19jb21wYXJhdG9yIDpcbiAgICAgIFNldC5BY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIFNldC50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnY1xuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2FcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudClcbmVuZFxuXG50eXBlICdhIGNtcCA9ICdhXG50eXBlICdhIGVsdCA9ICdhXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIGluY2x1ZGUgU2V0XG5cbiAgbGV0IG9mX3RyZWUgbSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbiAgbGV0IHRvX3RyZWUgPSBTZXQuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4gIGxldCBzZXhwX29mX3QgPSBTZXQuVXNpbmdfY29tcGFyYXRvci5zZXhwX29mX3RcbmVuZCA6XG5zaWdcbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgU2V0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlXG4gICAgU2V0LkNyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgnYSwgJ2IsICdjKSBTZXQuV2l0aF9maXJzdF9jbGFzc19tb2R1bGUudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFNldC5XaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCBtb2R1bGUgTmFtZWQgPSBTZXQuTmFtZWRcbmVuZClcblxudHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCBjb21wYXJlIF8gXyB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIFNldC5Vc2luZ19jb21wYXJhdG9yIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgaW5jbHVkZSBTZXQuVXNpbmdfY29tcGFyYXRvclxuICAgIGVuZFxuICAgIHdpdGggbW9kdWxlIFRyZWUgOj0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZSlcblxuICBpbmNsdWRlIEZvcl9xdWlja2NoZWNrXG5cbiAgbGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcblxuICBsZXQgb2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3IgaHNldCA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZS5vZl9oYXNoX3NldCBoc2V0IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9oYXNodGJsX2tleXMgfmNvbXBhcmF0b3IgaGFzaHRibCA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZS5vZl9oYXNodGJsX2tleXMgaGFzaHRibCB+Y29tcGFyYXRvcilcbiAgOztcbmVuZFxuXG5sZXQgdG9fbWFwID0gTWFwLm9mX2tleV9zZXRcbmxldCBvZl9tYXBfa2V5cyA9IE1hcC5rZXlfc2V0XG5sZXQgaGFzaF9mb2xkX2RpcmVjdCA9IFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdFxubGV0IGNvbXBhcmF0b3JfcyA9IFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvcl9zXG5sZXQgY29tcGFyYXRvciA9IFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvclxubGV0IG9mX2hhc2hfc2V0IG0gaHNldCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgaHNldFxuXG5sZXQgb2ZfaGFzaHRibF9rZXlzIG0gaGFzaHRibCA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGhhc2h0Ymxcbjs7XG5cbm1vZHVsZSBDcmVhdG9ycyAoRWx0IDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgdHlwZSBub25yZWMgKCdhLCAnY29tcGFyYXRvcikgdF8gPSAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgdHlwZSAnYSBlbHRfID0gJ2EgRWx0LnRcbiAgdHlwZSAnYSBjbXBfID0gRWx0LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCB0X29mX3NleHAgOiAoQmFzZS5TZXhwLnQgLT4gJ2EgRWx0LnQpIC0+IEJhc2UuU2V4cC50IC0+ICgnYSwgJ2NvbXBhcmF0b3IpIHRfXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdF9cbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wX1xuZW5kID0gc3RydWN0XG4gIG9wZW4gVXNpbmdfY29tcGFyYXRvclxuXG4gIHR5cGUgbm9ucmVjICgnYSwgJ2NvbXBhcmF0b3IpIHRfID0gKCdhIEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYikgdHJlZSA9ICgnYSwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gIHR5cGUgJ2EgZWx0XyA9ICdhIEVsdC50XG4gIHR5cGUgJ2NtcCBjbXBfID0gRWx0LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gRWx0LmNvbXBhcmF0b3JcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZVxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSA9IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXlcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgPSBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXlcblxuICBtb2R1bGUgTV9lbXB0eSA9IEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEVsdClcblxuICBsZXQgZW1wdHkgPSBNX2VtcHR5LmVtcHR5XG4gIGxldCBzaW5nbGV0b24gZSA9IHNpbmdsZXRvbiB+Y29tcGFyYXRvciBlXG4gIGxldCB1bmlvbl9saXN0IGwgPSB1bmlvbl9saXN0IH5jb21wYXJhdG9yIGxcbiAgbGV0IG9mX2xpc3QgbCA9IG9mX2xpc3QgfmNvbXBhcmF0b3IgbFxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX2hhc2hfc2V0IGggPSBvZl9oYXNoX3NldCB+Y29tcGFyYXRvciBoXG4gIGxldCBvZl9oYXNodGJsX2tleXMgaCA9IG9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvciBoXG4gIGxldCBvZl9hcnJheSBhID0gb2ZfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgeHMgPSBzdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciB4c1xuICBsZXQgbWFwIHQgfmYgPSBtYXAgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mXG5cbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgb2ZfdHJlZSAoVHJlZS50X29mX3NleHBfZGlyZWN0IGFfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9tYXBfa2V5cyA9IE1hcC5rZXlfc2V0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBlbHQgPSBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBlbHRcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX1MxIChFbHQgOiBDb21wYXJhdG9yLlMxKSA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciA9IEVsdC5jb21wYXJhdG9yXG4gIGxldCBlbXB0eSA9IFRyZWUuZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuICBsZXQgc2luZ2xldG9uIGUgPSBUcmVlLnNpbmdsZXRvbiB+Y29tcGFyYXRvciBlXG4gIGxldCBtYXAgdCB+ZiA9IFRyZWUubWFwIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IFRyZWUuZmlsdGVyX21hcCB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlX2RpcmVjdCB0MSB0MiA9IFRyZWUuY29tcGFyZV9kaXJlY3QgfmNvbXBhcmF0b3IgdDEgdDJcbiAgbGV0IGVxdWFsIHQxIHQyID0gVHJlZS5lcXVhbCB0MSB0MiB+Y29tcGFyYXRvclxuICBsZXQgb2ZfbGlzdCBsID0gVHJlZS5vZl9saXN0IGwgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBUcmVlLm9mX3NlcXVlbmNlIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2hhc2hfc2V0IGggPSBUcmVlLm9mX2hhc2hfc2V0IGggfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoID0gVHJlZS5vZl9oYXNodGJsX2tleXMgaCB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYXJyYXkgYSA9IFRyZWUub2ZfYXJyYXkgYSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID0gVHJlZS5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVHJlZS5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVHJlZS5vZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyYXRvclxuICBsZXQgdW5pb25fbGlzdCBsID0gVHJlZS51bmlvbl9saXN0IGwgfmNvbXBhcmF0b3JcbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IHhzID0gVHJlZS5zdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyYXRvclxuICBsZXQgb2ZfdHJlZSB0ID0gdFxuICBsZXQgb2ZfbWFwX2tleXMgPSBUcmVlLm9mX21hcF9rZXlzXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBlbHQgPSBGb3JfcXVpY2tjaGVjay5nZW5fdHJlZSBlbHQgfmNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX3BsYWluIChFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEVsdF9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoRWx0KVxuICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoRWx0X1MxKVxuXG4gIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG5cbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxuICBsZXQgc2V4cF9vZl90IHQgPSBUcmVlLnNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IFslc2V4cF9vZjogX10gdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgVHJlZS50X29mX3NleHBfZGlyZWN0IFgudF9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3I6RWx0X1MxLmNvbXBhcmF0b3JcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlIChFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3RyZWVfcGxhaW4gKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEVsdClcbmVuZFxuXG4oKiBEb24ndCB1c2UgW29mX3NvcnRlZF9hcnJheV0gdG8gYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgYW4gaW50ZXJtZWRpYXRlIGFycmF5ICopXG5sZXQgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZiB+Y29tcGFyYXRvciA9XG4gIGxldCBzZXQgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmYgaW5cbiAgaWYgaW52YXJpYW50cyBzZXRcbiAgdGhlbiBzZXRcbiAgZWxzZVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZVxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChmb2xkIHNldCB+aW5pdDooVHJlZS5lbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biBhY2MgZWx0IC0+XG4gICAgICAgICBpZiBUcmVlLm1lbSBhY2MgZWx0IH5jb21wYXJhdG9yXG4gICAgICAgICB0aGVuIGZhaWx3aXRoIFwiU2V0LmJpbl9yZWFkX3Q6IGR1cGxpY2F0ZSBlbGVtZW50IGluIHNldFwiXG4gICAgICAgICBlbHNlIFRyZWUuYWRkIGFjYyBlbHQgfmNvbXBhcmF0b3IpKVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEVsdCA9IENvbXBhcmF0b3IuUG9seVxuICBpbmNsdWRlIENyZWF0b3JzIChFbHQpXG5cbiAgdHlwZSBub25yZWMgJ2EgdCA9ICgnYSwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgXyB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHQgPSBzZXhwX29mX3Qgc2V4cF9vZl9rIFslc2V4cF9vZjogX10gdFxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gICAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyKVxuICA7O1xuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODhiY2M0NzgtNDk5Mi0xMWU2LWE5NWQtZmY0ODMxYWNmNDEwXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLlNldFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlciB+ZjooZnVuIGtleSAtPiBmIGtleSkgdFxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZjooZnVuIF8gLT4gbmV4dCAoKSkgfmNvbXBhcmF0b3I6Q29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBUcmVlID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlX3RyZWVfUzEgKENvbXBhcmF0b3IuUG9seSlcblxuICAgIHR5cGUgJ2VsdCB0ID0gKCdlbHQsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRyZWVcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgdCA9IFRyZWUuc2V4cF9vZl90IHNleHBfb2ZfZWx0IFslc2V4cF9vZjogX10gdFxuXG4gICAgbGV0IHRfb2Zfc2V4cCBlbHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIFRyZWUudF9vZl9zZXhwX2RpcmVjdCBlbHRfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yOkNvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluXG5tb2R1bGUgdHlwZSBTID0gU1xubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlXG5cbm1vZHVsZSBFbHRfYmluX2lvID0gRWx0X2Jpbl9pb1xuXG5tb2R1bGUgUHJvdmlkZV9iaW5faW8gKEVsdCA6IEVsdF9iaW5faW8uUykgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICB0eXBlIGVsID0gRWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbGV0IF8gPSBiaW5fZWxcblxuICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4OTg5Mjc4ZS00OTkyLTExZTYtOGY0YS02Yjg5Nzc2YjFlNTNcIlxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5TZXRcIlxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgaXRlciB0IH5mID0gaXRlciB+ZjooZnVuIGtleSAtPiBmIGtleSkgdFxuXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpFbHQuY29tcGFyYXRvclxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBzZXQgaXMgdXNlZCBpbiB0aGUgc3RhYmxlIG1vZHVsZXMgYmVsb3csIHNvIGl0J3NcbiAgICAgYXNzdW1lZCB0byBiZSBzdGFibGUgKGlmIHRoZSBlbHQgaXMgc3RhYmxlKS4gKilcbiAgbGV0IHN0YWJsZV93aXRuZXNzIDogKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgIGxldCAoXyA6IEVsdC50IFN0YWJsZV93aXRuZXNzLnQpID0gRWx0LnN0YWJsZV93aXRuZXNzIGluXG4gICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgRWx0ID0gRWx0XG4gIG1vZHVsZSBFbHRfUzEgPSBDb21wYXJhdG9yLlNfdG9fUzEgKEVsdClcbiAgaW5jbHVkZSBDcmVhdG9ycyAoRWx0X1MxKVxuXG4gIHR5cGUgKCdhLCAnYikgc2V0ID0gKCdhLCAnYikgdFxuICB0eXBlIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHNldFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxuICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3QgRWx0LnNleHBfb2ZfdCBbJXNleHBfb2Y6IF9dIHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoRWx0IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgRWx0LnRfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEVsdCA6IEhhc2hlci5TIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9IHN0cnVjdFxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gVXNpbmdfY29tcGFyYXRvci5oYXNoX2ZvbGRfZGlyZWN0IEVsdC5oYXNoX2ZvbGRfdCBzdGF0ZSB0XG5cbiAgICBsZXQgaGFzaCB0ID1cbiAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgICAoaGFzaF9mb2xkX3QgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkpIHQpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoRWx0JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPVxuICAgIFByb3ZpZGVfYmluX2lvIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRWx0XG4gICAgICBpbmNsdWRlIEVsdCdcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3NcbiAgICAgIChFbHQnIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID1cbiAgICBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRWx0XG4gICAgICBpbmNsdWRlIEVsdCdcbiAgICBlbmQpXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBxdWlja2NoZWNrX29ic2VydmVyXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gcXVpY2tjaGVja19zaHJpbmtlclxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChFbHQgOiBFbHRfcGxhaW4pID0gTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEVsdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChFbHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoRWx0X3NleHAgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9zZXhwKVxuICBtb2R1bGUgRWx0ID0gRWx0X3NleHBcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoRWx0IDogRWx0KSA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBFbHRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoRWx0X2Jpbl9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9iaW5fc2V4cClcbiAgbW9kdWxlIEVsdCA9IEVsdF9iaW5fc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChFbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoRWx0IDogRWx0X2JpbmFibGUpID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgRWx0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nID0gc3RydWN0XG4gIG1vZHVsZSBNID0gU2V0Lk1cblxuICBsZXQgYmluX3NoYXBlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaGFwZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaXplX3RcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl93cml0ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9yZWFkX3RcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF9tX190X18gKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLl9fYmluX3JlYWRfdF9fXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgIChtb2R1bGUgRWx0IDogUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBxdWlja2NoZWNrX2dlbmVyYXRvciAobW9kdWxlIEVsdCkgRWx0LnF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICA9XG4gICAgcXVpY2tjaGVja19vYnNlcnZlciBFbHQucXVpY2tjaGVja19vYnNlcnZlclxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3RcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgIChtb2R1bGUgRWx0IDogUXVpY2tjaGVja19zaHJpbmtlcl9tIHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfc2hyaW5rZXIgRWx0LnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgOztcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBTZXQuRm9yX2Rlcml2aW5nXG5cbiAgaW5jbHVkZSAoU2V0IDogRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQpXG5lbmRcblxubW9kdWxlIEZvcl9kZXJpdmluZ19zdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgU3RhYmxlX3dpdG5lc3NfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnRcbiAgZW5kXG5cbiAgbGV0IHN0YWJsZV93aXRuZXNzX21fX3RcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgIChtb2R1bGUgRWx0IDogU3RhYmxlX3dpdG5lc3NfbSB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChFbHQpIGluXG4gICAgTS5zdGFibGVfd2l0bmVzc1xuICA7O1xuZW5kXG5cbmluY2x1ZGUgRm9yX2Rlcml2aW5nXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnY21wKSB0ID0gKCdhLCAnY21wKSB0XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGVsdFxuICAgICAgdHlwZSBlbHRfY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gKGVsdCwgZWx0X2NvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gICAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBfd2l0aG91dF9jb21wYXJhdG9yIHdpdGggdHlwZSB0IDo9IHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgRm9yX2Rlcml2aW5nXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdfc3RhYmxlXG4gICAgbW9kdWxlIE1ha2UgKEVsdCA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzApID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdClcblxuICAgIG1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gICAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICAgIGluY2x1ZGUgU1xuXG4gICAgICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlIChFbHRfc3RhYmxlIDogU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwKSA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChFbHRfc3RhYmxlKVxuICAgICAgICBpbmNsdWRlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEVsdF9zdGFibGUpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb21wYXJhYmxlX2ludGZcbm1vZHVsZSBJbmZpeCA9IEJhc2UuQ29tcGFyYWJsZS5JbmZpeFxubW9kdWxlIENvbXBhcmlzb25zID0gQmFzZS5Db21wYXJhYmxlLkNvbXBhcmlzb25zXG5cbm1vZHVsZSBWYWxpZGF0ZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICBlbmQpIDogVmFsaWRhdGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIG1vZHVsZSBWID0gVmFsaWRhdGVcbiAgb3BlbiBNYXliZV9ib3VuZFxuXG4gIGxldCB0b19zdHJpbmcgdCA9IEJhc2UuU2V4cC50b19zdHJpbmcgKFQuc2V4cF9vZl90IHQpXG5cbiAgbGV0IHZhbGlkYXRlX2JvdW5kIH5taW4gfm1heCB0ID1cbiAgICBWLmJvdW5kZWQgfm5hbWU6dG9fc3RyaW5nIH5sb3dlcjptaW4gfnVwcGVyOm1heCB+Y29tcGFyZTpULmNvbXBhcmUgdFxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZV9sYm91bmQgfm1pbiB0ID0gdmFsaWRhdGVfYm91bmQgfm1pbiB+bWF4OlVuYm91bmRlZCB0XG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgfm1heCB0ID0gdmFsaWRhdGVfYm91bmQgfm1heCB+bWluOlVuYm91bmRlZCB0XG5lbmRcblxubW9kdWxlIFZhbGlkYXRlX3dpdGhfemVybyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgdmFsIHplcm8gOiB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBWID0gVmFsaWRhdGUgKFQpXG4gIGluY2x1ZGUgVlxuXG4gICgqIFByZWFsbG9jYXRlIHRoZSBpbnRlcmVzdGluZyBib3VuZHMgdG8gbWluaW1pemUgYWxsb2NhdGlvbiBpbiB0aGUgaW1wbGVtZW50YXRpb25zIG9mXG4gICAgIFt2YWxpZGF0ZV8qXS4gKilcbiAgbGV0IGV4Y2xfemVybyA9IE1heWJlX2JvdW5kLkV4Y2wgVC56ZXJvXG4gIGxldCBpbmNsX3plcm8gPSBNYXliZV9ib3VuZC5JbmNsIFQuemVyb1xuICBsZXQgdmFsaWRhdGVfcG9zaXRpdmUgdCA9IHZhbGlkYXRlX2xib3VuZCB+bWluOmV4Y2xfemVybyB0XG4gIGxldCB2YWxpZGF0ZV9ub25fbmVnYXRpdmUgdCA9IHZhbGlkYXRlX2xib3VuZCB+bWluOmluY2xfemVybyB0XG4gIGxldCB2YWxpZGF0ZV9uZWdhdGl2ZSB0ID0gdmFsaWRhdGVfdWJvdW5kIH5tYXg6ZXhjbF96ZXJvIHRcbiAgbGV0IHZhbGlkYXRlX25vbl9wb3NpdGl2ZSB0ID0gdmFsaWRhdGVfdWJvdW5kIH5tYXg6aW5jbF96ZXJvIHRcbmVuZFxuXG5tb2R1bGUgV2l0aF96ZXJvIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICB2YWwgemVybyA6IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZV93aXRoX3plcm8gKFQpXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLldpdGhfemVybyAoVClcbmVuZFxuXG5tb2R1bGUgTWFwX2FuZF9zZXRfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIE1hcF9hbmRfc2V0X2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmQpID1cbiAgTWFwX2FuZF9zZXRfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgUG9seSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLlBvbHkgKFQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQ1xuICBpbmNsdWRlIFZhbGlkYXRlIChDKVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gdCA9IENcbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV91c2luZ19jb21wYXJhdG9yIChDKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFNfcGxhaW4gd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE0gPSBCYXNlLkNvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIE1cblxuICBpbmNsdWRlIFZhbGlkYXRlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBNXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgZW5kKSA9XG4gIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNID0gQmFzZS5Db21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBNXG5cbiAgaW5jbHVkZSBWYWxpZGF0ZSAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgTVxuICAgIGVuZClcblxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNID0gQmFzZS5Db21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcblxuICBpbmNsdWRlIFZhbGlkYXRlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgY29tcGFyZSA9IFQuY29tcGFyYXRvci5jb21wYXJlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgTVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgRXh0ZW5kXG4gICAgKE0gOiBCYXNlLkNvbXBhcmFibGUuUykgKFggOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIGluY2x1ZGUgKFxuICAgICAgWCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gTS50IFtAQGRlcml2aW5nIHNleHBdXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFZhbGlkYXRlIChUKVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBFeHRlbmRfYmluYWJsZVxuICAgIChNIDogQmFzZS5Db21wYXJhYmxlLlMpIChYIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSB0ID0gTS50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIGluY2x1ZGUgKFxuICAgICAgWCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gTS50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdClcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgVmFsaWRhdGUgKFQpXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBJbmhlcml0IChDIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG4gIGVuZCkgKFQgOiBzaWdcbiAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgICAgIHZhbCBjb21wb25lbnQgOiB0IC0+IEMudFxuICAgICAgICBlbmQpID1cbiAgTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBsZXQgY29tcGFyZSB0IHQnID0gQy5jb21wYXJlIChULmNvbXBvbmVudCB0KSAoVC5jb21wb25lbnQgdCcpXG4gIGVuZClcblxuaW5jbHVkZSAoQmFzZS5Db21wYXJhYmxlIDogV2l0aF9jb21wYXJlKVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY29tcGFyYWJsZVxuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbW9kdWxlIE1hcCA6XG4gICAgICAgIE1hcC5TdGFibGUuVjEuU1xuICAgICAgICB3aXRoIHR5cGUga2V5IDo9IGNvbXBhcmFibGVcbiAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbW9kdWxlIFNldCA6XG4gICAgICAgIFNldC5TdGFibGUuVjEuU1xuICAgICAgICB3aXRoIHR5cGUgZWx0IDo9IGNvbXBhcmFibGVcbiAgICAgICAgd2l0aCB0eXBlIGVsdF9jb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoWCA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzApID0gc3RydWN0XG4gICAgICBtb2R1bGUgTWFwID0gTWFwLlN0YWJsZS5WMS5NYWtlIChYKVxuICAgICAgbW9kdWxlIFNldCA9IFNldC5TdGFibGUuVjEuTWFrZSAoWClcbiAgICBlbmRcblxuICAgIG1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gICAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICAgIHR5cGUgY29tcGFyYWJsZVxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIG1vZHVsZSBNYXAgOlxuICAgICAgICAgIE1hcC5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5TXG4gICAgICAgICAgd2l0aCB0eXBlIGtleSA6PSBjb21wYXJhYmxlXG4gICAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICBtb2R1bGUgU2V0IDpcbiAgICAgICAgICBTZXQuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuU1xuICAgICAgICAgIHdpdGggdHlwZSBlbHQgOj0gY29tcGFyYWJsZVxuICAgICAgICAgIHdpdGggdHlwZSBlbHRfY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlIChYIDogU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwKSA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgTWFwID0gTWFwLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFgpXG4gICAgICAgIG1vZHVsZSBTZXQgPSBTZXQuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoWClcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwiaW5jbHVkZSBMaXN0MCAoKiogQGlubGluZSAqKVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIHN0YWdlZCB0byBpbmRpY2F0ZSB0aGF0IHJlYWwgd29yayAodGhlIGZ1bmN0b3IgYXBwbGljYXRpb24pIHRha2VzXG4gICBwbGFjZSBhZnRlciBhIHBhcnRpYWwgYXBwbGljYXRpb24uICopXG5sZXQgc3RhYmxlX2RlZHVwX3N0YWdlZCAodHlwZSBhKSB+KGNvbXBhcmUgOiBhIC0+IGEgLT4gaW50KVxuICA6IChhIGxpc3QgLT4gYSBsaXN0KSBCYXNlLlN0YWdlZC50XG4gID1cbiAgbGV0IG1vZHVsZSBTZXQgPVxuICAgIFNldC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbiAgICAgICgqIFtzdGFibGVfZGVkdXBfbGlzdF0gbmV2ZXIgY2FsbHMgdGhlc2UgKilcbiAgICAgIGxldCB0X29mX3NleHAgXyA9IGFzc2VydCBmYWxzZVxuICAgICAgbGV0IHNleHBfb2ZfdCBfID0gYXNzZXJ0IGZhbHNlXG4gICAgZW5kKVxuICBpblxuICBCYXNlLlN0YWdlZC5zdGFnZSBTZXQuc3RhYmxlX2RlZHVwX2xpc3Rcbjs7XG5cbmxldCB6aXBfd2l0aF9yZW1haW5kZXIgPVxuICBsZXQgcmVjIHppcF93aXRoX2FjY19hbmRfcmVtYWluZGVyIGFjYyB4cyB5cyA9XG4gICAgbWF0Y2ggeHMsIHlzIHdpdGhcbiAgICB8IFtdLCBbXSAtPiByZXYgYWNjLCBOb25lXG4gICAgfCBmc3QsIFtdIC0+IHJldiBhY2MsIFNvbWUgKEVpdGhlci5GaXJzdCBmc3QpXG4gICAgfCBbXSwgc25kIC0+IHJldiBhY2MsIFNvbWUgKEVpdGhlci5TZWNvbmQgc25kKVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPiB6aXBfd2l0aF9hY2NfYW5kX3JlbWFpbmRlciAoKHgsIHkpIDo6IGFjYykgeHMgeXNcbiAgaW5cbiAgZnVuIHhzIHlzIC0+IHppcF93aXRoX2FjY19hbmRfcmVtYWluZGVyIFtdIHhzIHlzXG47O1xuXG50eXBlIHNleHBfdGh1bmsgPSB1bml0IC0+IEJhc2UuU2V4cC50XG5cbmxldCBzZXhwX29mX3NleHBfdGh1bmsgeCA9IHggKClcblxuZXhjZXB0aW9uIER1cGxpY2F0ZV9mb3VuZCBvZiBzZXhwX3RodW5rICogQmFzZS5TdHJpbmcudCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgZXhuX2lmX2R1cCB+Y29tcGFyZSA/KGNvbnRleHQgPSBcImV4bl9pZl9kdXBcIikgdCB+dG9fc2V4cCA9XG4gIG1hdGNoIGZpbmRfYV9kdXAgfmNvbXBhcmUgdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZHVwIC0+IHJhaXNlIChEdXBsaWNhdGVfZm91bmQgKChmdW4gKCkgLT4gdG9fc2V4cCBkdXApLCBjb250ZXh0KSlcbjs7XG5cbmxldCBzbGljZSBhIHN0YXJ0IHN0b3AgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLnNsaWNlIH5sZW5ndGhfZnVuOmxlbmd0aCB+c3ViX2Z1bjpzdWIgYSBzdGFydCBzdG9wXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hciwgYmluX2lvLCBjb21wYXJlXVxuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzID0gTGlzdDAuc3RhYmxlX3dpdG5lc3MgW0BAYWxlcnQgXCItZm9yX2ludGVybmFsX3VzZV9vbmx5XCJdXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5PcHRpb25cblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uIFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbmluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mLCBjb21wYXJlXVxuICBlbmQpXG5cbmxldCB2YWxpZGF0ZSB+bm9uZSB+c29tZSB0ID1cbiAgbGV0IG1vZHVsZSBWID0gVmFsaWRhdGUgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBWLm5hbWUgXCJub25lXCIgKFYucHJvdGVjdCBub25lICgpKVxuICB8IFNvbWUgeCAtPiBWLm5hbWUgXCJzb21lXCIgKFYucHJvdGVjdCBzb21lIHgpXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9wdGlvblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIub3B0aW9uXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5vcHRpb25cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuXG4gICAgKCogW3Vuc2FmZV92YWx1ZV0gaXMgb25seSBzYWZlIHRvIGNhbGwgd2hlbiBbaXNfbm9uZV0gcmV0dXJucyBbZmFsc2VdLiBUbyBhdm9pZFxuICAgICAgIHJlcGVhdGluZyB0aGUgW2lzX25vbmVdIGNoZWNrLCB3ZSBkZWNsYXJlIFtVbmNoZWNrZWRfc29tZV0uIFtVbmNoZWNrZWRfc29tZSB4XVxuICAgICAgIGhhcyB0aGUgc2FtZSByZXByZXNlbnRhdGlvbiBhcyBbU29tZSB4XSwgYnV0IHRoZSB0eXBlIGhhcyBubyBbTm9uZV0gY2xhdXNlLlxuXG4gICAgICAgV2UgbWFrZSBzdXJlIGFsbCB0aGlzIHdvcmtzIHdpdGggdGVzdHMgb2YgW3Vuc2FmZV92YWx1ZV0gaW4gdGVzdF9vcHRpb24ubWwuXG5cbiAgICAgICBXZSB0cmllZCB1c2luZyBbT2JqLmZpZWxkXSBpbnN0ZWFkLiBJdCBnZW5lcmF0ZXMgbXVjaCB3b3JzZSBuYXRpdmUgY29kZSBkdWUgdG9cbiAgICAgICBmbG9hdCBhcnJheSByZXByZXNlbnRhdGlvbnMuICopXG5cbiAgICBtb2R1bGUgVW5jaGVja2VkX3NvbWUgPSBzdHJ1Y3RcbiAgICAgICgqIFdhcm5pbmcgMzcgdGVsbHMgdXMgW1VuY2hlY2tlZF9zb21lXSBpcyBuZXZlciB1c2VkIGFzIGEgY29uc3RydWN0b3IuIFRoaXMgaXNcbiAgICAgICAgIGludGVudGlvbmFsLCBzbyB3ZSBkaXNhYmxlIHRoZSB3YXJuaW5nLiAqKVxuICAgICAgdHlwZSAnYSB0ID0gVW5jaGVja2VkX3NvbWUgb2YgJ2EgW0BAb2NhbWwuYm94ZWRdIFtAQG9jYW1sLndhcm5pbmcgXCItMzdcIl1cbiAgICBlbmRcblxuICAgIGxldCB1bnNhZmVfdmFsdWUgKHR5cGUgYSkgKHQgOiBhIHQpIDogYSA9XG4gICAgICBsZXQgKFVuY2hlY2tlZF9zb21lIHZhbHVlKSA9IChPYmoubWFnaWMgdCA6IGEgVW5jaGVja2VkX3NvbWUudCkgaW5cbiAgICAgIHZhbHVlXG4gICAgOztcbiAgZW5kXG5lbmRcbiIsIigqIFRoaXMgY29kZSBpcyBiYXNlZCBvbiB0aGUgTUx0b24gbGlicmFyeSBzZXQvZGlzam9pbnQuZnVuLCB3aGljaCBoYXMgdGhlXG4gICBmb2xsb3dpbmcgY29weXJpZ2h0IG5vdGljZS5cbiopXG4oKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNSBIZW5yeSBDZWp0aW4sIE1hdHRoZXcgRmx1ZXQsIFN1cmVzaFxuICogICAgSmFnYW5uYXRoYW4sIGFuZCBTdGVwaGVuIFdlZWtzLlxuICpcbiAqIE1MdG9uIGlzIHJlbGVhc2VkIHVuZGVyIGEgQlNELXN0eWxlIGxpY2Vuc2UuXG4gKiBTZWUgdGhlIGZpbGUgTUx0b24tTElDRU5TRSBmb3IgZGV0YWlscy5cbiopXG5cbm9wZW4hIEltcG9ydFxuXG4oKlxuICAge3ZcbiAgICAgICAgICAgUm9vdFxuICAgICAgICAgICAgIHxcbiAgICAgICAgICAgSW5uZXJcbiAgICAgICAgLyAuLiB8IC4uIFxcXG4gICAgIElubmVyIElubmVyIElubmVyXG4gICAgICAvfFxcICAgL3xcXCAgIC98XFxcbiAgICAgIC4uLiAgIC4uLiAgIC4uLlxuICAgdn1cblxuICAgV2UgY29uc3RydWN0IHRoZSBgaW52ZXJ0ZWQnIHRyZWUgaW4gdGhlIE1MIHJlcHJlc2VudGF0aW9uLlxuICAgVGhlIGRpcmVjdGlvbiBvZiB0aGUgZWRnZXMgaXMgVVBXQVJEUy5cbiAgIFN0YXJ0aW5nIHdpdGggYW55IFsnYSB0XSB3ZSBjYW4gc3RlcCBkaXJlY3RseSB0byBpdHMgcGFyZW50LlxuICAgQnV0IHdlIGNhbid0IChhbmQgZG9uJ3QgbmVlZCB0bykgc3RhcnQgZnJvbSB0aGUgcm9vdCBhbmQgc3RlcCB0byBpdHMgY2hpbGRyZW4uXG4qKVxuXG4oKlxuICAgW3JhbmtdIGlzIGFuIHVwcGVyIGJvdW5kIG9uIHRoZSBkZXB0aCBvZiBhbnkgbm9kZSBpbiB0aGUgdXAtdHJlZS5cblxuICAgSW1hZ2luZSBhbiB1bmx1Y2t5IHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgaW4gd2hpY2ggeW91IGNyZWF0ZSBOXG4gICBpbmRpdmlkdWFsIFt0XS12YWx1ZXMgYW5kIHRoZW4gdW5pb24gdGhlbSB0b2dldGhlciBpbiBzdWNoIGEgd2F5XG4gICB0aGF0IHlvdSBhbHdheXMgcGljayB0aGUgcm9vdCBvZiBlYWNoIHRyZWUgdG8gdW5pb24gdG9nZXRoZXIsIHNvIHRoYXRcbiAgIG5vIHBhdGggY29tcHJlc3Npb24gdGFrZXMgcGxhY2UuICBJZiB5b3UgZG9uJ3QgdGFrZSBjYXJlIHRvIHNvbWVob3dcbiAgIGJhbGFuY2UgdGhlIHJlc3VsdGluZyB1cC10cmVlLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHlvdSBlbmQgdXAgd2l0aCBvbmVcbiAgIGJpZyBsb25nIGNoYWluIG9mIE4gbGlua3MsIGFuZCB0aGVuIGNhbGxpbmcgW3JlcHJlc2VudGF0aXZlXSBvbiB0aGVcbiAgIGRlZXBlc3Qgbm9kZSB0YWtlcyBUaGV0YShOKSB0aW1lLiAgV2l0aCB0aGUgYmFsYW5jaW5nIHNjaGVtZSBvZiBuZXZlclxuICAgaW5jcmVhc2luZyB0aGUgcmFuayBvZiBhIG5vZGUgdW5uZWNlc3NhcmlseSwgaXQgd291bGQgdGFrZSBPKGxvZyBOKS5cbiopXG50eXBlICdhIHJvb3QgPVxuICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICA7IG11dGFibGUgcmFuayA6IGludFxuICB9XG5cbnR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBub2RlIDogJ2Egbm9kZSB9XG5cbmFuZCAnYSBub2RlID1cbiAgfCBJbm5lciBvZiAnYSB0XG4gICgqIFtJbm5lciB4XSBpcyBhIG5vZGUgd2hvc2UgcGFyZW50IGlzIFt4XS4gKilcbiAgfCBSb290IG9mICdhIHJvb3RcblxubGV0IGludmFyaWFudCBfIHQgPVxuICBsZXQgcmVjIGxvb3AgdCBkZXB0aCA9XG4gICAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgICB8IElubmVyIHQgLT4gbG9vcCB0IChkZXB0aCArIDEpXG4gICAgfCBSb290IHIgLT4gYXNzZXJ0IChkZXB0aCA8PSByLnJhbmspXG4gIGluXG4gIGxvb3AgdCAwXG47O1xuXG5sZXQgY3JlYXRlIHYgPSB7IG5vZGUgPSBSb290IHsgdmFsdWUgPSB2OyByYW5rID0gMCB9IH1cblxuKCogaW52YXJpYW50czpcbiAgIFtpbm5lci5ub2RlXSA9IFtpbm5lcl9ub2RlXSA9IFtJbm5lciB0XS5cbiAgIFtkZXNjZW5kYW50c10gYXJlIHRoZSBwcm9wZXIgZGVzY2VuZGFudHMgb2YgW2lubmVyXSB3ZSd2ZSB2aXNpdGVkLlxuKilcbmxldCByZWMgY29tcHJlc3MgdCB+aW5uZXJfbm9kZSB+aW5uZXIgfmRlc2NlbmRhbnRzID1cbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IHIgLT5cbiAgICAoKiB0IGlzIHRoZSByb290IG9mIHRoZSB0cmVlLlxuICAgICAgIFJlLXBvaW50IGFsbCBkZXNjZW5kYW50cyBkaXJlY3RseSB0byBpdCBieSBzZXR0aW5nIHRoZW0gdG8gW0lubmVyIHRdLlxuICAgICAgIE5vdGU6IHdlIGRvbid0IHJlLXBvaW50IFtpbm5lcl0gYXMgaXQgYWxyZWFkeSBwb2ludHMgdGhlcmUuICopXG4gICAgTGlzdC5pdGVyIGRlc2NlbmRhbnRzIH5mOihmdW4gdCAtPiB0Lm5vZGUgPC0gaW5uZXJfbm9kZSk7XG4gICAgdCwgclxuICB8IElubmVyIHQnIGFzIG5vZGUgLT5cbiAgICBjb21wcmVzcyB0JyB+aW5uZXJfbm9kZTpub2RlIH5pbm5lcjp0IH5kZXNjZW5kYW50czooaW5uZXIgOjogZGVzY2VuZGFudHMpXG47O1xuXG5sZXQgcmVwcmVzZW50YXRpdmUgdCA9XG4gIG1hdGNoIHQubm9kZSB3aXRoXG4gIHwgUm9vdCByIC0+IHQsIHJcbiAgfCBJbm5lciB0JyBhcyBub2RlIC0+IGNvbXByZXNzIHQnIH5pbm5lcl9ub2RlOm5vZGUgfmlubmVyOnQgfmRlc2NlbmRhbnRzOltdXG47O1xuXG5sZXQgcm9vdCB0ID1cbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IHIgLT5cbiAgICAoKiBhdm9pZCB0dXBsZSBhbGxvY2F0aW9uIGluIHRoZSBmYXN0IHBhdGggKilcbiAgICByXG4gIHwgXyAtPiBzbmQgKHJlcHJlc2VudGF0aXZlIHQpXG47O1xuXG5sZXQgcmFuayB0ID0gKHJvb3QgdCkucmFua1xubGV0IGdldCB0ID0gKHJvb3QgdCkudmFsdWVcbmxldCBzZXQgdCB2ID0gKHJvb3QgdCkudmFsdWUgPC0gdlxubGV0IHNhbWVfY2xhc3MgdDEgdDIgPSBwaHlzX2VxdWFsIChyb290IHQxKSAocm9vdCB0MilcblxubGV0IHVuaW9uIHQxIHQyID1cbiAgbGV0IHQxLCByMSA9IHJlcHJlc2VudGF0aXZlIHQxIGluXG4gIGxldCB0MiwgcjIgPSByZXByZXNlbnRhdGl2ZSB0MiBpblxuICBpZiBwaHlzX2VxdWFsIHIxIHIyXG4gIHRoZW4gKClcbiAgZWxzZSAoXG4gICAgbGV0IG4xID0gcjEucmFuayBpblxuICAgIGxldCBuMiA9IHIyLnJhbmsgaW5cbiAgICBpZiBuMSA8IG4yXG4gICAgdGhlbiB0MS5ub2RlIDwtIElubmVyIHQyXG4gICAgZWxzZSAoXG4gICAgICB0Mi5ub2RlIDwtIElubmVyIHQxO1xuICAgICAgaWYgbjEgPSBuMiB0aGVuIHIxLnJhbmsgPC0gcjEucmFuayArIDEpKVxuOztcblxubGV0IGlzX2NvbXByZXNzZWQgdCA9XG4gIGludmFyaWFudCBpZ25vcmUgdDtcbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IF8gLT4gdHJ1ZVxuICB8IElubmVyIHQgLT5cbiAgICAobWF0Y2ggdC5ub2RlIHdpdGhcbiAgICAgfCBSb290IF8gLT4gdHJ1ZVxuICAgICB8IElubmVyIF8gLT4gZmFsc2UpXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgaXNfY29tcHJlc3NlZCA9IGlzX2NvbXByZXNzZWRcbiAgbGV0IHJhbmsgPSByYW5rXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBEb3VibHlfbGlua2VkX2ludGZcblxuKCogSU5WQVJJQU5UOiBUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgYSBsaXN0IGlzIG11dGF0ZWQgZHVyaW5nIGEgcGVuZGluZyBpdGVyYXRpb24uXG5cbiAgIFRoaXMgaW52YXJpYW50IGlzIGd1YXJhbnRlZWQgYnkgdGhlIEhlYWRlciBhbmQgRWx0IG1vZHVsZXMgaW4gY29uanVuY3Rpb24uICBBbGxcbiAgIGRvd25zdHJlYW0gY29kZSBpbiB0aGlzIG1vZHVsZSBuZWVkIG5vdCBiZSBjb25jZXJuZWQgd2l0aCB0aGlzIGludmFyaWFudC4gKilcbmV4Y2VwdGlvbiBBdHRlbXB0X3RvX211dGF0ZV9saXN0X2R1cmluZ19pdGVyYXRpb25cblxubGV0IHBoeXNfZXF1YWwgPSAoID09IClcblxubW9kdWxlIEhlYWRlciA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgaW5jcl9sZW5ndGggOiBieTppbnQgLT4gdCAtPiB1bml0XG4gIHZhbCBjaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgOiB0IC0+IHVuaXRcblxuICAoKiBVbmZvcnR1bmF0ZSwgYnV0IGJ5IHNwZWNpYWxpemluZyBbd2l0aF9pdGVyYXRpb25dIGZvciBkaWZmZXJlbnQgYXJpdGllcywgYSBsYXJnZVxuICAgICBhbW91bnQgb2YgYWxsb2NhdGlvbiBkdXJpbmcgZm9sZHMgYW5kIGl0ZXJhdGlvbnMgaXMgYXZvaWRlZC5cblxuICAgICBUaGUgb3JpZ2luYWwgdHlwZSBvZiBbd2l0aF9pdGVyYXRpb25dIHdhc1xuICAgICBbdmFsIHdpdGhfaXRlcmF0aW9uIDogdCAtPiAodW5pdCAtPiAnYSkgLT4gJ2FdXG5cbiAgICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlblxuICAgICB7W1xuICAgICAgIGxldCB4ID0gZSBpblxuICAgICAgIGxldCBmICgpID0gZyB4IGluXG4gICAgICAgZiAoKVxuICAgICBdfVxuICAgICBhbmRcbiAgICAge1tcbiAgICAgICBsZXQgeCA9IGUgaW5cbiAgICAgICBsZXQgZiB4ID0gZyB4IGluXG4gICAgICAgZiB4XG4gICAgIF19XG4gICAgIGlzIHRoYXQgaW4gdGhlIGZpcnN0IGNhc2UgdGhlIGNsb3N1cmUgZm9yIFtmXSBjb250YWlucyBhIHBvaW50ZXIgdG8gW3hdLFxuICAgICBhbmQgaW4gdGhlIHNlY29uZCBjYXNlIGl0IGRvZXNuJ3QuIEEgY2xvc3VyZSB3aXRob3V0IHBvaW50ZXJzIHRvIGVuY2xvc2luZ1xuICAgICBlbnZpcm9ubWVudCBpcyBpbXBsZW1lbnRlZCBhcyBhIG5ha2VkIGZ1bmN0aW9uIHBvaW50ZXIsIHNvIHdlIGRvbid0XG4gICAgIGFsbG9jYXRlIGF0IGFsbC5cblxuICAgICBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIG1ha2Ugc3VyZSBub3QgdG8gY2FsbCBbUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gLi4uKV1cbiAgICAgaW5zaWRlIFt3aXRoX2l0ZXJhdGlvbl0gYW5kIGRvIGFuIGV4cGxpY2l0IG1hdGNoIHN0YXRlbWVudCBpbnN0ZWFkLiAqKVxuXG4gIHZhbCB3aXRoX2l0ZXJhdGlvbl8ybFxuICAgIDogIHRcbiAgICAtPiAnYVxuICAgIC0+ICgnYltAbG9jYWxdKVxuICAgIC0+ICgoJ2EgLT4gKCdiW0Bsb2NhbF0pIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICdjXG5cbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzMgOiB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCkgLT4gJ2RcbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzQgOiB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSkgLT4gJ2VcblxuICB2YWwgd2l0aF9pdGVyYXRpb25fNGxcbiAgICA6ICB0XG4gICAgLT4gKCdhW0Bsb2NhbF0pXG4gICAgLT4gKCdiW0Bsb2NhbF0pXG4gICAgLT4gJ2NcbiAgICAtPiAnZFxuICAgIC0+ICgoKCdhW0Bsb2NhbF0pIC0+ICgnYltAbG9jYWxdKSAtPiAnYyAtPiAnZCAtPiAnZSlbQGxvY2FsXSlcbiAgICAtPiAnZVxuXG4gIHZhbCBtZXJnZSA6IHQgLT4gdCAtPiBbIGBTYW1lX2FscmVhZHkgfCBgTWVyZ2VkIF1cbmVuZCA9IHN0cnVjdFxuICB0eXBlIHMgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7XG4gICAgICBtdXRhYmxlIHBlbmRpbmdfaXRlcmF0aW9ucyA6IGludFxuICAgIH1cblxuICB0eXBlIHQgPSBzIFVuaW9uX2ZpbmQudFxuXG4gIGxldCBjcmVhdGUgKCkgPSBVbmlvbl9maW5kLmNyZWF0ZSB7IGxlbmd0aCA9IDE7IHBlbmRpbmdfaXRlcmF0aW9ucyA9IDAgfVxuICBsZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBVbmlvbl9maW5kLnNhbWVfY2xhc3MgdDEgdDJcbiAgbGV0IGxlbmd0aCB0ID0gKFVuaW9uX2ZpbmQuZ2V0IHQpLmxlbmd0aFxuXG4gIGxldCB1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGlmIHMucGVuZGluZ19pdGVyYXRpb25zID4gMCB0aGVuIHJhaXNlIEF0dGVtcHRfdG9fbXV0YXRlX2xpc3RfZHVyaW5nX2l0ZXJhdGlvbiBlbHNlIHNcbiAgOztcblxuICBsZXQgY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgPVxuICAgIGlnbm9yZSAodW5pb25fZmluZF9nZXRfX2NoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0IDogcylcbiAgOztcblxuICBsZXQgaW5jcl9sZW5ndGggfmJ5Om4gdCA9XG4gICAgbGV0IHMgPSB1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgaW5cbiAgICBzLmxlbmd0aCA8LSBzLmxlbmd0aCArIG5cbiAgOztcblxuICAoKiBDYXJlIGlzIHRha2VuIG5vdCB0byBhbGxvY2F0ZSBpbiBbd2l0aF9pdGVyYXRpb25fKl0sIHNpbmNlIGl0IGlzIGNhbGxlZCBldmVyeSBzZWNvbmRcbiAgICAgYnkgW2V2ZXJ5X3NlY29uZF0gaW4gW3dyaXRlcjAubWxdICopXG5cbiAgbGV0IGluY3JfcGVuZGluZ19pdGVycyBzID0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPC0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgKyAxXG4gIGxldCBkZWNyX3BlbmRpbmdfaXRlcnMgcyA9IHMucGVuZGluZ19pdGVyYXRpb25zIDwtIHMucGVuZGluZ19pdGVyYXRpb25zIC0gMVxuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl8ybCB0IGEgKGIgW0Bsb2NhbF0pIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgcmFpc2UgZXhuXG4gICAgfCByIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJcbiAgOztcblxuICBsZXQgd2l0aF9pdGVyYXRpb25fMyB0IGEgYiBjIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIGMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl80IHQgYSBiIGMgZCBmID1cbiAgICBsZXQgcyA9IFVuaW9uX2ZpbmQuZ2V0IHQgaW5cbiAgICBpbmNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICBtYXRjaCBmIGEgYiBjIGQgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl80bCB0IChhIFtAbG9jYWxdKSAoYiBbQGxvY2FsXSkgYyBkIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIGMgZCB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IG1lcmdlICh0MSA6IHQpIHQyID1cbiAgICBpZiBVbmlvbl9maW5kLnNhbWVfY2xhc3MgdDEgdDJcbiAgICB0aGVuIGBTYW1lX2FscmVhZHlcbiAgICBlbHNlIChcbiAgICAgIGxldCBuMSA9ICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxKS5sZW5ndGggaW5cbiAgICAgIGxldCBuMiA9ICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQyKS5sZW5ndGggaW5cbiAgICAgIHdpdGhfaXRlcmF0aW9uXzQgdDEgdDEgdDIgbjEgbjIgKGZ1biB0MSB0MiBuMSBuMiAtPlxuICAgICAgICB3aXRoX2l0ZXJhdGlvbl80IHQyIHQxIHQyIG4xIG4yIChmdW4gdDEgdDIgbjEgbjIgLT5cbiAgICAgICAgICBVbmlvbl9maW5kLnVuaW9uIHQxIHQyO1xuICAgICAgICAgIFVuaW9uX2ZpbmQuc2V0IHQxIHsgbGVuZ3RoID0gbjEgKyBuMjsgcGVuZGluZ19pdGVyYXRpb25zID0gMCB9KSk7XG4gICAgICBgTWVyZ2VkKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFbHQgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGhlYWRlciA6ICdhIHQgLT4gSGVhZGVyLnRcbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGNyZWF0ZSA6ICdhIC0+ICdhIHRcbiAgdmFsIHZhbHVlIDogJ2EgdCAtPiAnYVxuICB2YWwgc2V0IDogJ2EgdCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bmxpbmsgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHNwbGl0X29yX3NwbGljZV9iZWZvcmUgOiAnYSB0IC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIDogJ2EgdCAtPiAnYSB0IC0+IHVuaXRcbiAgdmFsIGluc2VydF9hZnRlciA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgaW5zZXJ0X2JlZm9yZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgdW5saW5rX2JlZm9yZSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgbmV4dCA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgcHJldiA6ICdhIHQgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIHZhbHVlIDogJ2FcbiAgICA7IG11dGFibGUgcHJldiA6ICdhIHRcbiAgICA7IG11dGFibGUgbmV4dCA6ICdhIHRcbiAgICA7IG11dGFibGUgaGVhZGVyIDogSGVhZGVyLnRcbiAgICB9XG5cbiAgbGV0IGVxdWFsID0gcGh5c19lcXVhbFxuICBsZXQgbmV4dCB0ID0gdC5uZXh0XG4gIGxldCBwcmV2IHQgPSB0LnByZXZcbiAgbGV0IGhlYWRlciB0ID0gdC5oZWFkZXJcblxuICBsZXQgY3JlYXRlX2F1eCB2IGhlYWRlciA9XG4gICAgbGV0IHJlYyB0ID0geyB2YWx1ZSA9IHY7IHByZXYgPSB0OyBuZXh0ID0gdDsgaGVhZGVyIH0gaW5cbiAgICB0XG4gIDs7XG5cbiAgbGV0IGlzX3NpbmdsZXRvbiB0ID0gZXF1YWwgdCB0LnByZXZcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHNleHBfb2ZfYSB0LnZhbHVlXG4gIGxldCBjcmVhdGUgdiA9IGNyZWF0ZV9hdXggdiAoSGVhZGVyLmNyZWF0ZSAoKSlcbiAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG4gIGxldCBzZXQgdCB2ID0gdC52YWx1ZSA8LSB2XG5cbiAgKCpcbiAgICAgW3NwbGl0X29yX3NwbGljZV0gaXMgc3VmZmljaWVudCBhcyB0aGUgbG9uZSBwcmltaXRpdmUgZm9yXG4gICAgIGFjY29tcGxpc2hpbmcgYWxsIHBvaW50ZXIgdXBkYXRlcyBvbiBjeWNsaWMgbG9vcHMgb2YgbGlzdCBub2Rlcy5cbiAgICAgSXQgdGFrZXMgdHdvIFwiZ2Fwc1wiIGJldHdlZW4gYWRqYWNlbnQgbGlua2VkIGxpc3Qgbm9kZXMuICBJZiB0aGUgZ2Fwc1xuICAgICBwb2ludCBpbnRvIHRoZSBzYW1lIGxpc3QsIHRoZSByZXN1bHQgaXMgdGhhdCBpdCB3aWxsIGJlIHNwbGl0IGludG9cbiAgICAgdHdvIGxpc3RzIGFmdGVyd2FyZHMuICBJZiB0aGUgZ2FwcyBwb2ludCBpbnRvIGRpZmZlcmVudCBsaXN0cywgdGhlXG4gICAgIHJlc3VsdCBpcyB0aGF0IHRoZXkgd2lsbCBiZSBzcGxpY2VkIHRvZ2V0aGVyIGludG8gb25lIGxpc3QgYWZ0ZXJ3YXJkcy5cblxuICAgICB7dlxuICAgICAgIEJlZm9yZSAgICAgICAgICAgICAgICAgICAgICBBZnRlclxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgICAgICAgICAgICstLS0tLVxuICAgICAgICAgICAgICBBIHwgIDwtLT4gIHwgQiAgICAgICAgICAgICAgIEEgfCAgPC0tLSAgIC0tLT4gIHwgQlxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgIFxcIC8gICAgICArLS0tLS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgIC8gXFwgICAgICArLS0tLS1cbiAgICAgICAgICAgICAgQyB8ICA8LS0+ICB8IEQgICAgICAgICAgICAgICBDIHwgIDwtLS0gICAtLS0+ICB8IERcbiAgICAgICAgICAgLS0tLS0rICAgICAgICArLS0tLS0gICAgICAgICAtLS0tLSsgICAgICAgICAgICAgICArLS0tLS1cbiAgICAgdn0gKilcblxuICBsZXQgdW5zYWZlX3NwbGl0X29yX3NwbGljZSB+cHJldjE6YSB+bmV4dDE6YiB+cHJldjI6YyB+bmV4dDI6ZCA9XG4gICAgYS5uZXh0IDwtIGQ7XG4gICAgZC5wcmV2IDwtIGE7XG4gICAgYy5uZXh0IDwtIGI7XG4gICAgYi5wcmV2IDwtIGNcbiAgOztcblxuICBsZXQgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0MSB0MiA9XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZVxuICAgICAgfm5leHQxOnQxLm5leHRcbiAgICAgIH5wcmV2MTp0MS5uZXh0LnByZXZcbiAgICAgIH5uZXh0Mjp0Mi5uZXh0XG4gICAgICB+cHJldjI6dDIubmV4dC5wcmV2XG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyID1cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlXG4gICAgICB+cHJldjE6dDEucHJldlxuICAgICAgfm5leHQxOnQxLnByZXYubmV4dFxuICAgICAgfnByZXYyOnQyLnByZXZcbiAgICAgIH5uZXh0Mjp0Mi5wcmV2Lm5leHRcbiAgOztcblxuICBsZXQgY2hlY2tfdHdvX25vZGVzX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MSB0MiA9XG4gICAgSGVhZGVyLmNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MS5oZWFkZXI7XG4gICAgaWYgbm90IChIZWFkZXIuZXF1YWwgdDEuaGVhZGVyIHQyLmhlYWRlcilcbiAgICB0aGVuIEhlYWRlci5jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDIuaGVhZGVyXG4gIDs7XG5cbiAgKCogV2UgcmVkZWZpbmUgc2FmZSB2ZXJzaW9ucyBmb3IgZXhwb3J0ICopXG4gIGxldCBzcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdDEgdDIgPVxuICAgIGNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEgdDI7XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0MSB0MlxuICA7O1xuXG4gIGxldCBzcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyID1cbiAgICBjaGVja190d29fbm9kZXNfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxIHQyO1xuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyXG4gIDs7XG5cbiAgbGV0IGluc2VydF9iZWZvcmUgdCB2ID1cbiAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OjE7XG4gICAgbGV0IG5vZGUgPSBjcmVhdGVfYXV4IHYgdC5oZWFkZXIgaW5cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0IG5vZGU7XG4gICAgbm9kZVxuICA7O1xuXG4gIGxldCBpbnNlcnRfYWZ0ZXIgdCB2ID1cbiAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OjE7XG4gICAgbGV0IG5vZGUgPSBjcmVhdGVfYXV4IHYgdC5oZWFkZXIgaW5cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQgbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGR1bW15X2hlYWRlciA9IEhlYWRlci5jcmVhdGUgKClcblxuICBsZXQgdW5saW5rX2JlZm9yZSB0ID1cbiAgICBsZXQgbm9kZSA9IHQucHJldiBpblxuICAgIGlmIGlzX3NpbmdsZXRvbiBub2RlXG4gICAgdGhlbiBub2RlXG4gICAgZWxzZSAoXG4gICAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OigtMSk7XG4gICAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0IG5vZGU7XG4gICAgICBub2RlLmhlYWRlciA8LSBkdW1teV9oZWFkZXI7XG4gICAgICBub2RlKVxuICA7O1xuXG4gIGxldCB1bmxpbmtfYWZ0ZXIgdCA9XG4gICAgbGV0IG5vZGUgPSB0Lm5leHQgaW5cbiAgICBpZiBpc19zaW5nbGV0b24gbm9kZVxuICAgIHRoZW4gbm9kZVxuICAgIGVsc2UgKFxuICAgICAgSGVhZGVyLmluY3JfbGVuZ3RoIHQuaGVhZGVyIH5ieTooLTEpO1xuICAgICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0IG5vZGU7XG4gICAgICBub2RlLmhlYWRlciA8LSBkdW1teV9oZWFkZXI7XG4gICAgICBub2RlKVxuICA7O1xuXG4gIGxldCB1bmxpbmsgdCA9IGlnbm9yZSAodW5saW5rX2FmdGVyIHQucHJldiA6IF8gdClcbmVuZFxuXG50eXBlICdhIHQgPSAnYSBFbHQudCBvcHRpb24gcmVmXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBoZWFkIC0+XG4gICAgbGV0IGhlYWRlciA9IEVsdC5oZWFkZXIgaGVhZCBpblxuICAgIGxldCByZWMgbG9vcCBuIGVsdCA9XG4gICAgICBsZXQgbmV4dF9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgIGxldCBwcmV2X2VsdCA9IEVsdC5wcmV2IGVsdCBpblxuICAgICAgYXNzZXJ0IChFbHQuZXF1YWwgZWx0IChFbHQucHJldiBuZXh0X2VsdCkpO1xuICAgICAgYXNzZXJ0IChFbHQuZXF1YWwgZWx0IChFbHQubmV4dCBwcmV2X2VsdCkpO1xuICAgICAgYXNzZXJ0IChIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZWx0KSBoZWFkZXIpO1xuICAgICAgaW52YXJpYW50X2EgKEVsdC52YWx1ZSBlbHQpO1xuICAgICAgaWYgRWx0LmVxdWFsIG5leHRfZWx0IGhlYWQgdGhlbiBuIGVsc2UgbG9vcCAobiArIDEpIG5leHRfZWx0XG4gICAgaW5cbiAgICBsZXQgbGVuID0gbG9vcCAxIGhlYWQgaW5cbiAgICBhc3NlcnQgKGxlbiA9IEhlYWRlci5sZW5ndGggaGVhZGVyKVxuOztcblxubGV0IGNyZWF0ZSAodHlwZSBhKSAoKSA6IGEgdCA9IHJlZiBOb25lXG5sZXQgZXF1YWwgKHQgOiBfIHQpIHQnID0gcGh5c19lcXVhbCB0IHQnXG5cbmxldCBvZl9saXN0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBjcmVhdGUgKClcbiAgfCB4IDo6IHhzIC0+XG4gICAgbGV0IGZpcnN0ID0gRWx0LmNyZWF0ZSB4IGluXG4gICAgbGV0IF9sYXN0ID0gTGlzdC5mb2xkIHhzIH5pbml0OmZpcnN0IH5mOihmdW4gYSBiIC0+IEVsdC5pbnNlcnRfYWZ0ZXIgYSBiKSBpblxuICAgIHJlZiAoU29tZSBmaXJzdClcbjs7XG5cbmxldCBvZl9hcnJheSA9IGZ1bmN0aW9uXG4gIHwgW3x8XSAtPiBjcmVhdGUgKClcbiAgfCBhcnIgLT5cbiAgICBsZXQgZmlyc3QgPSBFbHQuY3JlYXRlIGFyci4oMCkgaW5cbiAgICBsZXQgcmVjIGxvb3AgYXJyIGVsdCBpID1cbiAgICAgIGlmIGkgPCBBcnJheS5sZW5ndGggYXJyIHRoZW4gbG9vcCBhcnIgKEVsdC5pbnNlcnRfYWZ0ZXIgZWx0IGFyci4oaSkpIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgYXJyIGZpcnN0IDE7XG4gICAgcmVmIChTb21lIGZpcnN0KVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gY3JlYXRlICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBuZXdfZmlyc3QgPSBFbHQuY3JlYXRlIChmIChFbHQudmFsdWUgZmlyc3QpKSBpblxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld19maXJzdCBmaXJzdCAoZnVuIGYgbmV3X2ZpcnN0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IEVsdC5pbnNlcnRfYWZ0ZXIgYWNjIChmIChFbHQudmFsdWUgZWx0KSkgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgKCogdW5yb2xsIGFuZCBza2lwIGZpcnN0IGVsdCAqKVxuICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBmaXJzdCBpblxuICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIG5ld19maXJzdCBmaXJzdCBuZXh0KTtcbiAgICByZWYgKFNvbWUgbmV3X2ZpcnN0KVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGNyZWF0ZSAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbmV3X2ZpcnN0ID0gRWx0LmNyZWF0ZSAoZiAwIChFbHQudmFsdWUgZmlyc3QpKSBpblxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld19maXJzdCBmaXJzdCAoZnVuIGYgbmV3X2ZpcnN0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBpIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gRWx0Lmluc2VydF9hZnRlciBhY2MgKGYgaSAoRWx0LnZhbHVlIGVsdCkpIGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgKCogdW5yb2xsIGFuZCBza2lwIGZpcnN0IGVsdCAqKVxuICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBmaXJzdCBpblxuICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIDEgbmV3X2ZpcnN0IGZpcnN0IG5leHQpO1xuICAgIHJlZiAoU29tZSBuZXdfZmlyc3QpXG47O1xuXG5sZXQgZm9sZF9lbHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBmIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIGluaXQgZmlyc3QgZmlyc3QpXG47O1xuXG5sZXQgZm9sZGlfZWx0IHQgfmluaXQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIGluaXQgZmlyc3QgKGZ1biBmIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGkgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBmIGkgYWNjIGVsdCBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgKGkgKyAxKSBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgIGxvb3AgZiAwIGluaXQgZmlyc3QgZmlyc3QpXG47O1xuXG5sZXQgZm9sZF9lbHRfMSB0IH5pbml0IH5mIGEgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80bCAoRWx0LmhlYWRlciBmaXJzdCkgZiBhIGluaXQgZmlyc3QgKGZ1biBmIGEgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgYSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIGEgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaV9lbHRfMSB0IH5pbml0IH5mIGEgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIGEgaW5pdCBmaXJzdCAoZnVuIGYgYSBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBpIGEgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBmIGkgYSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiAoaSArIDEpIGEgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgMCBhIGluaXQgZmlyc3QgZmlyc3QpXG47O1xuXG5sZXQgaXRlcl9lbHQgdCB+ZiA9IGZvbGRfZWx0XzEgdCB+aW5pdDooKSB+ZjooZnVuIGYgKCkgZWx0IC0+IGYgZWx0KSBmXG5sZXQgaXRlcmlfZWx0IHQgfmYgPSBmb2xkaV9lbHQgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgZWx0IC0+IGYgaSBlbHQpXG5cbm9wZW4gV2l0aF9yZXR1cm5cblxubGV0IGZpbmRfZWx0IHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBmb2xkX2VsdF8xIHQgZiB+aW5pdDooKSB+ZjooZnVuIGYgKCkgZWx0IC0+XG4gICAgICBpZiBmIChFbHQudmFsdWUgZWx0KSB0aGVuIHIucmV0dXJuIChTb21lIGVsdCkpO1xuICAgIE5vbmUpXG47O1xuXG5sZXQgZmluZGlfZWx0IHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBmb2xkaV9lbHRfMSB0IGYgfmluaXQ6KCkgfmY6KGZ1biBpIGYgKCkgZWx0IC0+XG4gICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpIHRoZW4gci5yZXR1cm4gKFNvbWUgKGksIGVsdCkpKTtcbiAgICBOb25lKVxuOztcblxuKCogdGhpcyBmdW5jdGlvbiBpcyBsYW1iZGEgbGlmdGVkIGZvciBwZXJmb3JtYW5jZSwgdG8gbWFrZSBkaXJlY3QgcmVjdXJzaXZlIGNhbGxzIGluc3RlYWRcbiAgIG9mIGNhbGxzIHRocm91Z2ggaXRzIGNsb3N1cmUuIEl0IGFsc28gYXZvaWRzIHRoZSBpbml0aWFsIGNsb3N1cmUgYWxsb2NhdGlvbi4gKilcbmxldCByZWMgaXRlcl9sb29wIGZpcnN0IGYgZWx0ID1cbiAgZiAoRWx0LnZhbHVlIGVsdCk7XG4gIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGl0ZXJfbG9vcCBmaXJzdCBmIG5leHRcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMmwgKEVsdC5oZWFkZXIgZmlyc3QpIGZpcnN0IGYgKGZ1biBmaXJzdCBmIC0+XG4gICAgICBpdGVyX2xvb3AgZmlyc3QgZiBmaXJzdClcbjs7XG5cbmxldCBsZW5ndGggdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIGZpcnN0IC0+IEhlYWRlci5sZW5ndGggKEVsdC5oZWFkZXIgZmlyc3QpXG47O1xuXG5sZXQgcmVjIGl0ZXJpX2xvb3AgZmlyc3QgZiBpIGVsdCA9XG4gIGYgaSAoRWx0LnZhbHVlIGVsdCk7XG4gIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGl0ZXJpX2xvb3AgZmlyc3QgZiAoaSArIDEpIG5leHRcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzJsIChFbHQuaGVhZGVyIGZpcnN0KSBmaXJzdCBmIChmdW4gZmlyc3QgZiAtPlxuICAgICAgaXRlcmlfbG9vcCBmaXJzdCBmIDAgZmlyc3QpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIGZvbGRpX2VsdF8xIHQgfmluaXQgZiB+ZjooZnVuIGkgZiBhY2MgZWx0IC0+IGYgaSBhY2MgKEVsdC52YWx1ZSBlbHQpKVxuOztcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgICAgbGV0IHIgPSBmb2xkX2VsdF8xIHQgfmluaXQgZiB+ZjooZnVuIGYgYWNjIGVsdCAtPiBmIGFjYyAoRWx0LnZhbHVlIGVsdCkpIGluXG4gICAgICByXG4gICAgOztcblxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZCA9IEMuZm9sZFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtZW0gPSBDLm1lbVxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgdW5jaGVja2VkX2l0ZXIgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGYgZWx0ID1cbiAgICAgIGYgKEVsdC52YWx1ZSBlbHQpO1xuICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICgqIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBiYWcgbWF5IGhhdmUgYmVlbiBjaGFuZ2VkIGJ5IFtmXSAqKVxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgZmlyc3QgLT4gaWYgbm90IChwaHlzX2VxdWFsIGZpcnN0IG5leHQpIHRoZW4gbG9vcCB0IGYgbmV4dFxuICAgIGluXG4gICAgbG9vcCB0IGYgZmlyc3Rcbjs7XG5cbmxldCBpc19lbXB0eSB0ID0gT3B0aW9uLmlzX25vbmUgIXRcblxuKCogbW9yZSBlZmZpY2llbnQgdGhhbiB3aGF0IENvbnRhaW5lci5NYWtlIHJldHVybnMgKilcblxubGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGVsdCA9XG4gICAgICAgIGxldCBwcmV2ID0gRWx0LnByZXYgZWx0IGluXG4gICAgICAgIGxldCBhY2MgPSBmIChFbHQudmFsdWUgcHJldikgYWNjIGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgcHJldiBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhY2MgcHJldlxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBpbml0IGZpcnN0KVxuOztcblxubGV0IGZvbGRfcmlnaHRfZWx0IHQgfmluaXQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIGluaXQgZmlyc3QgKGZ1biBmIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBlbHQgPVxuICAgICAgICBsZXQgcHJldiA9IEVsdC5wcmV2IGVsdCBpblxuICAgICAgICBsZXQgYWNjID0gZiBwcmV2IGFjYyBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIHByZXYgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYWNjIHByZXZcbiAgICAgIGluXG4gICAgICBsb29wIGYgaW5pdCBmaXJzdClcbjs7XG5cbmxldCB0b19saXN0IHQgPSBmb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biB4IHRsIC0+IHggOjogdGwpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzID0gb2ZfbGlzdCAoTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHMpXG5cbmxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQmFzZS5MaXN0LnRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyKVxuOztcblxubGV0IGNvcHkgdCA9IG9mX2xpc3QgKHRvX2xpc3QgdClcbmxldCBjbGVhciB0ID0gdCA6PSBOb25lXG5cbmxldCBjb21wYXJlIGNvbXBhcmVfZWx0IHQxIHQyID1cbiAgbWF0Y2ggIXQxLCAhdDIgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gMFxuICB8IE5vbmUsIF8gLT4gLTFcbiAgfCBfLCBOb25lIC0+IDFcbiAgfCBTb21lIGYxLCBTb21lIGYyIC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZjEpIGNvbXBhcmVfZWx0IGYxIGYyIChmdW4gY29tcGFyZV9lbHQgZjEgZjIgLT5cbiAgICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGYyKSBjb21wYXJlX2VsdCBmMSBmMiAoZnVuIGNvbXBhcmVfZWx0IGYxIGYyIC0+XG4gICAgICAgIGxldCByZWMgbG9vcCBjb21wYXJlX2VsdCBlbHQxIGYxIGVsdDIgZjIgPVxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IChFbHQudmFsdWUgZWx0MSkgKEVsdC52YWx1ZSBlbHQyKSBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0IDw+IDBcbiAgICAgICAgICB0aGVuIGNvbXBhcmVfcmVzdWx0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbmV4dDEgPSBFbHQubmV4dCBlbHQxIGluXG4gICAgICAgICAgICBsZXQgbmV4dDIgPSBFbHQubmV4dCBlbHQyIGluXG4gICAgICAgICAgICBtYXRjaCBwaHlzX2VxdWFsIG5leHQxIGYxLCBwaHlzX2VxdWFsIG5leHQyIGYyIHdpdGhcbiAgICAgICAgICAgIHwgdHJ1ZSwgdHJ1ZSAtPiAwXG4gICAgICAgICAgICB8IHRydWUsIGZhbHNlIC0+IC0xXG4gICAgICAgICAgICB8IGZhbHNlLCB0cnVlIC0+IDFcbiAgICAgICAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IGxvb3AgY29tcGFyZV9lbHQgbmV4dDEgZjEgbmV4dDIgZjIpXG4gICAgICAgIGluXG4gICAgICAgIGxvb3AgY29tcGFyZV9lbHQgZjEgZjEgZjIgZjIpKVxuOztcblxuZXhjZXB0aW9uIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3RcblxubGV0IHRyYW5zZmVyIH5zcmMgfmRzdCA9XG4gIGlmIHBoeXNfZXF1YWwgc3JjIGRzdCB0aGVuIHJhaXNlIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3Q7XG4gIG1hdGNoICFzcmMgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHNyY19oZWFkIC0+XG4gICAgKG1hdGNoICFkc3Qgd2l0aFxuICAgICB8IE5vbmUgLT5cbiAgICAgICBkc3QgOj0gU29tZSBzcmNfaGVhZDtcbiAgICAgICBjbGVhciBzcmNcbiAgICAgfCBTb21lIGRzdF9oZWFkIC0+XG4gICAgICAgKG1hdGNoIEhlYWRlci5tZXJnZSAoRWx0LmhlYWRlciBzcmNfaGVhZCkgKEVsdC5oZWFkZXIgZHN0X2hlYWQpIHdpdGhcbiAgICAgICAgfCBgU2FtZV9hbHJlYWR5IC0+IHJhaXNlIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3RcbiAgICAgICAgfCBgTWVyZ2VkIC0+XG4gICAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgZHN0X2hlYWQgc3JjX2hlYWQ7XG4gICAgICAgICAgY2xlYXIgc3JjKSlcbjs7XG5cbmxldCBtYXBfaW5wbGFjZSB0IH5mID0gaXRlcl9lbHQgdCB+ZjooZnVuIGVsdCAtPiBFbHQuc2V0IGVsdCAoZiAoRWx0LnZhbHVlIGVsdCkpKVxubGV0IG1hcGlfaW5wbGFjZSB0IH5mID0gaXRlcmlfZWx0IHQgfmY6KGZ1biBpIGVsdCAtPiBFbHQuc2V0IGVsdCAoZiBpIChFbHQudmFsdWUgZWx0KSkpXG5cbmxldCByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZSA9XG4gIExpc3QuaXRlciB0b19yZW1vdmUgfmY6KGZ1biBlbHQgLT5cbiAgICAobWF0Y2ggIXQgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGhlYWQgLT5cbiAgICAgICBpZiBFbHQuZXF1YWwgaGVhZCBlbHRcbiAgICAgICB0aGVuIChcbiAgICAgICAgIGxldCBuZXh0X2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgdCA6PSBpZiBFbHQuZXF1YWwgaGVhZCBuZXh0X2VsdCB0aGVuIE5vbmUgZWxzZSBTb21lIG5leHRfZWx0KSk7XG4gICAgRWx0LnVubGluayBlbHQpXG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGVsdHMgZWx0IC0+XG4gICAgICAgICBpZiBmIChFbHQudmFsdWUgZWx0KSB0aGVuIGVsdHMgZWxzZSBlbHQgOjogZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRpX2VsdCB0IH5pbml0OltdIH5mOihmdW4gaSBlbHRzIGVsdCAtPlxuICAgICAgICAgaWYgZiBpIChFbHQudmFsdWUgZWx0KSB0aGVuIGVsdHMgZWxzZSBlbHQgOjogZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBlbHRzIGVsdCAtPlxuICAgICAgICAgbWF0Y2ggZiAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGVsdCA6OiBlbHRzXG4gICAgICAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgICAgICAgRWx0LnNldCBlbHQgdmFsdWU7XG4gICAgICAgICAgIGVsdHMpKVxuICBpblxuICByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZVxuOztcblxubGV0IGZpbHRlcl9tYXBpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZGlfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBpIGVsdHMgZWx0IC0+XG4gICAgICAgICBtYXRjaCBmIGkgKEVsdC52YWx1ZSBlbHQpIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBlbHQgOjogZWx0c1xuICAgICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgICAgIEVsdC5zZXQgZWx0IHZhbHVlO1xuICAgICAgICAgICBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmV4Y2VwdGlvbiBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcblxubGV0IGZpcnN0X2VsdCB0ID0gIXRcbmxldCBsYXN0X2VsdCB0ID0gT3B0aW9uLm1hcCB+ZjpFbHQucHJldiAhdFxubGV0IGZpcnN0IHQgPSBPcHRpb24ubWFwIH5mOkVsdC52YWx1ZSAoZmlyc3RfZWx0IHQpXG5sZXQgbGFzdCB0ID0gT3B0aW9uLm1hcCB+ZjpFbHQudmFsdWUgKGxhc3RfZWx0IHQpXG5sZXQgZmlyc3RfZXhuICh0IDogJ2EgdCkgPSBPcHRpb24udmFsdWVfZXhuICF0IHw+IEVsdC52YWx1ZVxubGV0IGxhc3RfZXhuICh0IDogJ2EgdCkgPSBPcHRpb24udmFsdWVfZXhuICF0IHw+IEVsdC5wcmV2IHw+IEVsdC52YWx1ZVxuXG5sZXQgaXNfZmlyc3QgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQuZXF1YWwgZWx0IGZpcnN0XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpc19sYXN0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGxhc3QgPSBFbHQucHJldiBmaXJzdCBpblxuICAgICAgRWx0LmVxdWFsIGVsdCBsYXN0KVxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbWVtX2VsdCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBmaXJzdCAtPiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbjs7XG5cbmxldCBwcmV2IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gU29tZSAoRWx0LnByZXYgZWx0KVxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbmV4dCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbGFzdCA9IEVsdC5wcmV2IGZpcnN0IGluXG4gICAgaWYgRWx0LmVxdWFsIGVsdCBsYXN0XG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIFNvbWUgKEVsdC5uZXh0IGVsdClcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGluc2VydF9hZnRlciB0IGVsdCB2ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gRWx0Lmluc2VydF9hZnRlciBlbHQgdlxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaW5zZXJ0X2JlZm9yZSB0IGVsdCB2ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICB0aGVuIChcbiAgICAgIGxldCBuZXdfZWx0ID0gRWx0Lmluc2VydF9iZWZvcmUgZmlyc3QgdiBpblxuICAgICAgdCA6PSBTb21lIG5ld19lbHQ7XG4gICAgICBuZXdfZWx0KVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQuaW5zZXJ0X2JlZm9yZSBlbHQgdlxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaW5zZXJ0X2VtcHR5IHQgdiA9XG4gIGxldCBuZXdfZWx0ID0gRWx0LmNyZWF0ZSB2IGluXG4gIHQgOj0gU29tZSBuZXdfZWx0O1xuICBuZXdfZWx0XG47O1xuXG5sZXQgaW5zZXJ0X2xhc3QgdCB2ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5zZXJ0X2VtcHR5IHQgdlxuICB8IFNvbWUgZmlyc3QgLT4gRWx0Lmluc2VydF9iZWZvcmUgZmlyc3QgdlxuOztcblxubGV0IGluc2VydF9maXJzdCB0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbnNlcnRfZW1wdHkgdCB2XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBuZXdfZWx0ID0gRWx0Lmluc2VydF9iZWZvcmUgZmlyc3QgdiBpblxuICAgIHQgOj0gU29tZSBuZXdfZWx0O1xuICAgIG5ld19lbHRcbjs7XG5cbmxldCByZW1vdmVfbGFzdCB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbGFzdCA9IEVsdC51bmxpbmtfYmVmb3JlIGZpcnN0IGluXG4gICAgaWYgRWx0LmVxdWFsIGZpcnN0IGxhc3QgdGhlbiB0IDo9IE5vbmU7XG4gICAgU29tZSAoRWx0LnZhbHVlIGxhc3QpXG47O1xuXG5sZXQgcmVtb3ZlX2ZpcnN0IHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBzZWNvbmQgPSBFbHQubmV4dCBmaXJzdCBpblxuICAgIEVsdC51bmxpbmsgZmlyc3Q7XG4gICAgdCA6PSBpZiBFbHQuZXF1YWwgZmlyc3Qgc2Vjb25kIHRoZW4gTm9uZSBlbHNlIFNvbWUgc2Vjb25kO1xuICAgIFNvbWUgKEVsdC52YWx1ZSBmaXJzdClcbjs7XG5cbmxldCByZW1vdmUgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gaWdub3JlIChyZW1vdmVfZmlyc3QgdCA6IF8gb3B0aW9uKVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQudW5saW5rIGVsdFxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgbmV3X3QgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld190IGZpcnN0IChmdW4gZiBuZXdfdCBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICBpZiBmIChFbHQudmFsdWUgZWx0KVxuICAgICAgICAgdGhlbiBpbnNlcnRfbGFzdCBuZXdfdCAoRWx0LnZhbHVlIGVsdCkgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIG5ld190IGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSBuZXdfdCBmaXJzdCBlbHQgPVxuICAgICAgICAgaWYgZiBpIChFbHQudmFsdWUgZWx0KVxuICAgICAgICAgdGhlbiBpbnNlcnRfbGFzdCBuZXdfdCAoRWx0LnZhbHVlIGVsdCkgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIDAgbmV3X3QgZmlyc3QgZmlyc3QpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgbmV3X3QgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld190IGZpcnN0IChmdW4gZiBuZXdfdCBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggZiAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPiBpbnNlcnRfbGFzdCBuZXdfdCB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIG5ld190IGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgbmV3X3QgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld190IGZpcnN0IChmdW4gZiBuZXdfdCBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIGkgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIChtYXRjaCBmIGkgKEVsdC52YWx1ZSBlbHQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgbmV3X3QgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCkpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIG5ld190IGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgaW5zZXJ0X2xhc3QgKGlmIGYgKEVsdC52YWx1ZSBlbHQpIHRoZW4gdDEgZWxzZSB0MikgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgdDEgdDIgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIGkgdDEgdDIgZmlyc3QgZWx0ID1cbiAgICAgICAgIGluc2VydF9sYXN0IChpZiBmIGkgKEVsdC52YWx1ZSBlbHQpIHRoZW4gdDEgZWxzZSB0MikgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCB0MSB0MiBmaXJzdCBmaXJzdCkpO1xuICB0MSwgdDJcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIChmIChFbHQudmFsdWUgZWx0KSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICAgIHwgRmlyc3QgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgdDEgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdClcbiAgICAgICAgICB8IFNlY29uZCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MiB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiB0MSB0MiBmaXJzdCBmaXJzdCkpO1xuICB0MSwgdDJcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgbGV0IHQxID0gY3JlYXRlICgpIGluXG4gIGxldCB0MiA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgdDEgdDIgZmlyc3QgKGZ1biBmIHQxIHQyIGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIChmIGkgKEVsdC52YWx1ZSBlbHQpIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MSB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KVxuICAgICAgICAgIHwgU2Vjb25kIHZhbHVlIC0+IGluc2VydF9sYXN0IHQyIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCB0MSB0MiBmaXJzdCBmaXJzdCkpO1xuICB0MSwgdDJcbjs7XG5cbmV4Y2VwdGlvbiBJbnZhbGlkX21vdmVfX2VsdF9lcXVhbHNfYW5jaG9yXG5cbmxldCBtb3ZlX2JlZm9yZSB0IGVsdCB+YW5jaG9yID1cbiAgaWYgRWx0LmVxdWFsIGFuY2hvciBlbHQgdGhlbiByYWlzZSBJbnZhbGlkX21vdmVfX2VsdF9lcXVhbHNfYW5jaG9yO1xuICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgYW5jaG9yKSAoRWx0LmhlYWRlciBlbHQpXG4gIHRoZW4gKFxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gICAgfCBTb21lIGZpcnN0IC0+XG4gICAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiB1bmxpbmsgW2VsdF0gKilcbiAgICAgICAgbGV0IGFmdGVyX2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSBlbHQgYWZ0ZXJfZWx0O1xuICAgICAgICBsZXQgZmlyc3QgPVxuICAgICAgICAgIGlmIEVsdC5lcXVhbCBmaXJzdCBlbHRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIHQgOj0gU29tZSBhZnRlcl9lbHQ7XG4gICAgICAgICAgICBhZnRlcl9lbHQpXG4gICAgICAgICAgZWxzZSBmaXJzdFxuICAgICAgICBpblxuICAgICAgICAoKiBzcGxpY2UgW2VsdF0gaW4gYmVmb3JlIFthbmNob3JdICopXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGFuY2hvciBlbHQ7XG4gICAgICAgIGlmIEVsdC5lcXVhbCBmaXJzdCBhbmNob3IgdGhlbiB0IDo9IFNvbWUgZWx0KVxuICAgICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3QpXG4gIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbW92ZV90b19mcm9udCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT4gaWYgbm90IChFbHQuZXF1YWwgZWx0IGZpcnN0KSB0aGVuIG1vdmVfYmVmb3JlIHQgZWx0IH5hbmNob3I6Zmlyc3Rcbjs7XG5cbmxldCBtb3ZlX2FmdGVyIHQgZWx0IH5hbmNob3IgPVxuICBpZiBFbHQuZXF1YWwgYW5jaG9yIGVsdCB0aGVuIHJhaXNlIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3I7XG4gIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBhbmNob3IpIChFbHQuaGVhZGVyIGVsdClcbiAgdGhlbiAoXG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIHVubGluayBbZWx0XSAqKVxuICAgICAgICBsZXQgYWZ0ZXJfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGVsdCBhZnRlcl9lbHQ7XG4gICAgICAgIGlmIEVsdC5lcXVhbCBmaXJzdCBlbHQgdGhlbiB0IDo9IFNvbWUgYWZ0ZXJfZWx0O1xuICAgICAgICAoKiBzcGxpY2UgW2VsdF0gaW4gYWZ0ZXIgW2FuY2hvcl0gKilcbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9hZnRlciBhbmNob3IgZWx0KVxuICAgICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3QpXG4gIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgbW92ZV90b19iYWNrIHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnByZXYgZmlyc3QgaW5cbiAgICBpZiBub3QgKEVsdC5lcXVhbCBlbHQgbGFzdCkgdGhlbiBtb3ZlX2FmdGVyIHQgZWx0IH5hbmNob3I6bGFzdFxuOztcblxubGV0IHRvX3NlcXVlbmNlIHQgPSB0b19saXN0IHQgfD4gU2VxdWVuY2Uub2ZfbGlzdFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwLnRfc2V4cF9ncmFtbWFyXG4gICAgbGV0IHRfb2Zfc2V4cCA9IFNleHBsaWIuU2V4cC50X29mX3NleHBcbiAgICBsZXQgc2V4cF9vZl90ID0gU2V4cGxpYi5TZXhwLnNleHBfb2ZfdFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG5pbmNsdWRlIChcbiAgQmFzZS5TZXhwIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuU2V4cFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSAoXG4gIFNleHBsaWIuU2V4cCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTZXhwbGliLlNleHBcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIHR5cGUgc2V4cCA9IEJhc2UuU2V4cC50ID1cbiAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgfCBMaXN0IG9mIHQgbGlzdFxuZW5kXG5cbm1vZHVsZSBTZXhwX21heWJlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIHQgKiBFcnJvci50KSBSZXN1bHQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2hdXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBSZXN1bHQuT2sgYSAtPiBzZXhwX29mX2EgYVxuICAgIHwgUmVzdWx0LkVycm9yIChzZXhwLCBlcnIpIC0+XG4gICAgICBMaXN0IFsgQXRvbSBcInNleHBfcGFyc2VfZXJyb3JcIjsgc2V4cDsgRXJyb3Iuc2V4cF9vZl90IGVyciBdXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBMaXN0IFsgQXRvbSBcInNleHBfcGFyc2VfZXJyb3JcIjsgc2V4cDsgXyBdIHwgc2V4cCAtPlxuICAgICAgKHRyeSBSZXN1bHQuT2sgKGFfb2Zfc2V4cCBzZXhwKSB3aXRoXG4gICAgICAgfCBleG4gLT4gUmVzdWx0LkVycm9yIChzZXhwLCBFcnJvci5vZl9leG4gZXhuKSlcbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgKGdyYW1tYXIgOiBfIFNleHBsaWIuU2V4cF9ncmFtbWFyLnQpIDogXyB0IFNleHBsaWIuU2V4cF9ncmFtbWFyLnQgPVxuICAgIHsgdW50eXBlZCA9IFVuaW9uIFsgZ3JhbW1hci51bnR5cGVkOyBCYXNlLlNleHAudF9zZXhwX2dyYW1tYXIudW50eXBlZCBdIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgV2l0aF90ZXh0ID0gc3RydWN0XG4gIG9wZW4gUmVzdWx0LkV4cG9ydFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB2YWx1ZSA6ICdhXG4gICAgOyB0ZXh0IDogc3RyaW5nXG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgbGV0IHNleHBfb2ZfdCBfIHQgPSBBdG9tIHQudGV4dFxuXG4gIGxldCBvZl90ZXh0IHZhbHVlX29mX3NleHAgPyhmaWxlbmFtZSA9IFwiXCIpIHRleHQgPVxuICAgIG1hdGNoIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gb2Zfc3RyaW5nX2NvbnYgdGV4dCB2YWx1ZV9vZl9zZXhwKSB3aXRoXG4gICAgfCBPayAoYFJlc3VsdCB2YWx1ZSkgLT4gT2sgeyB2YWx1ZTsgdGV4dCB9XG4gICAgfCBFcnJvciBfIGFzIGVyciAtPiBlcnJcbiAgICB8IE9rIChgRXJyb3IgKGV4biwgYW5ub3RhdGVkKSkgLT5cbiAgICAgIEVycm9yIChFcnJvci5vZl9leG4gKEFubm90YXRlZC5nZXRfY29udl9leG4gYW5ub3RhdGVkIH5maWxlOmZpbGVuYW1lIH5leGM6ZXhuKSlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IExpc3QgXyAtPlxuICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICBcIldpdGhfdGV4dC50IHNob3VsZCBiZSBzdG9yZWQgYXMgYW4gYXRvbSwgYnV0IGluc3RlYWQgYSBsaXN0IHdhcyBmb3VuZC5cIlxuICAgICAgICBzZXhwXG4gICAgfCBBdG9tIHRleHQgLT4gb2ZfdGV4dCBhX29mX3NleHAgdGV4dCB8PiBPcl9lcnJvci5va19leG5cbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgXyA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBCYXNlLlN0cmluZy50X3NleHBfZ3JhbW1hclxuICBsZXQgdGV4dCB0ID0gdC50ZXh0XG4gIGxldCB2YWx1ZSB0ID0gdC52YWx1ZVxuXG4gIGxldCBvZl92YWx1ZSBzZXhwX29mX3ZhbHVlIHZhbHVlID1cbiAgICBsZXQgdGV4dCA9IHNleHBfb2ZfdmFsdWUgdmFsdWUgfD4gdG9fc3RyaW5nX2h1bSBpblxuICAgIHsgdmFsdWU7IHRleHQgfVxuICA7O1xuZW5kXG5cbnR5cGUgJ2Egbm9fcmFpc2UgPSAnYSBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbmxldCBzZXhwX29mX25vX3JhaXNlIHNleHBfb2ZfYSBhID1cbiAgdHJ5IHNleHBfb2ZfYSBhIHdpdGhcbiAgfCBleG4gLT5cbiAgICAodHJ5IExpc3QgWyBBdG9tIFwiZmFpbHVyZSBidWlsZGluZyBzZXhwXCI7IHNleHBfb2ZfZXhuIGV4biBdIHdpdGhcbiAgICAgfCBfIC0+IEF0b20gXCJjb3VsZCBub3QgYnVpbGQgc2V4cCBmb3IgZXhuIHJhaXNlZCB3aGVuIGJ1aWxkaW5nIHNleHAgZm9yIHZhbHVlXCIpXG47O1xuXG5pbmNsdWRlIENvbXBhcmFibGUuRXh0ZW5kIChCYXNlLlNleHApIChCYXNlLlNleHApXG5cbmxldCBvZl9zZXhwX2FsbG93X2V4dHJhX2ZpZWxkc19yZWN1cnNpdmVseSBvZl9zZXhwIHNleHAgPVxuICBsZXQgciA9IFNleHBsaWIuQ29udi5yZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzIGluXG4gIGxldCBwcmV2ID0gIXIgaW5cbiAgRXhuLnByb3RlY3RcbiAgICB+ZmluYWxseTooZnVuICgpIC0+IHIgOj0gcHJldilcbiAgICB+ZjooZnVuICgpIC0+XG4gICAgICByIDo9IGZhbHNlO1xuICAgICAgb2Zfc2V4cCBzZXhwKVxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zZXhwXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zZXhwXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5zZXhwXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gSGFzaF9xdWV1ZV9pbnRmXG5cbm1vZHVsZSB0eXBlIEtleSA9IEtleVxubW9kdWxlIHR5cGUgU19iYWNrZW5kID0gU19iYWNrZW5kXG5cbm1vZHVsZSBNYWtlX2JhY2tlbmQgKFRhYmxlIDogSGFzaHRibF9pbnRmLkhhc2h0YmwpIDogU19iYWNrZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIEJhY2tlbmQgPVxuICAgIFMxXG4gICAgd2l0aCB0eXBlICdrZXkgY3JlYXRlX2FyZyA6PSAna2V5IEhhc2h0YmwuSGFzaGFibGUudFxuICAgIHdpdGggdHlwZSAna2V5IGNyZWF0ZV9rZXkgOj0gJ2tleVxuXG4gIG1vZHVsZSBCYWNrZW5kIDogQmFja2VuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXlfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgKCdrZXksICd2YWx1ZSkgdCA9XG4gICAgICAgICAgeyBrZXkgOiAna2V5XG4gICAgICAgICAgOyBtdXRhYmxlIHZhbHVlIDogJ3ZhbHVlXG4gICAgICAgICAgfVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQga2V5IHQgPSB0LmtleVxuICAgICAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHsga2V5OyB2YWx1ZSB9ID1cbiAgICAgICAgWyVzZXhwX29mOiBrZXkgKiBkYXRhXSAoa2V5LCB2YWx1ZSlcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBvcGVuIEtleV92YWx1ZS5UXG4gICAgbW9kdWxlIEVsdCA9IERvdWJseV9saW5rZWQuRWx0XG5cbiAgICB0eXBlICgna2V5LCAnZGF0YSkgdCA9XG4gICAgICB7IG11dGFibGUgbnVtX3JlYWRlcnMgOiBpbnRcbiAgICAgIDsgcXVldWUgOiAoJ2tleSwgJ2RhdGEpIEtleV92YWx1ZS50IERvdWJseV9saW5rZWQudFxuICAgICAgOyB0YWJsZSA6ICgna2V5LCAoJ2tleSwgJ2RhdGEpIEtleV92YWx1ZS50IEVsdC50KSBUYWJsZS50XG4gICAgICB9XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSB0ID1cbiAgICAgIFslc2V4cF9vZjogKGtleSwgZGF0YSkgS2V5X3ZhbHVlLnQgRG91Ymx5X2xpbmtlZC50XSB0LnF1ZXVlXG4gICAgOztcblxuICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICBhc3NlcnQgKERvdWJseV9saW5rZWQubGVuZ3RoIHQucXVldWUgPSBUYWJsZS5sZW5ndGggdC50YWJsZSk7XG4gICAgICAoKiBMb29rIGF0IGVhY2ggZWxlbWVudCBpbiB0aGUgcXVldWUsIGNoZWNraW5nOlxuICAgICAgICogICAtIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIHF1ZXVlIGlzIGluIHRoZSBoYXNoIHRhYmxlXG4gICAgICAgKiAgIC0gdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBrZXlzXG4gICAgICAqKVxuICAgICAgbGV0IGtleXMgPSBUYWJsZS5jcmVhdGUgfnNpemU6KFRhYmxlLmxlbmd0aCB0LnRhYmxlKSAoVGFibGUuaGFzaGFibGVfcyB0LnRhYmxlKSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5pdGVyIHQucXVldWUgfmY6KGZ1biBrdiAtPlxuICAgICAgICBsZXQga2V5ID0ga3Yua2V5IGluXG4gICAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgYXNzZXJ0IChub3QgKFRhYmxlLm1lbSBrZXlzIGtleSkpO1xuICAgICAgICAgIFRhYmxlLnNldCBrZXlzIH5rZXkgfmRhdGE6KCkpXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgPyhncm93dGhfYWxsb3dlZCA9IHRydWUpID8oc2l6ZSA9IDE2KSBoYXNoYWJsZSA9XG4gICAgICB7IG51bV9yZWFkZXJzID0gMFxuICAgICAgOyBxdWV1ZSA9IERvdWJseV9saW5rZWQuY3JlYXRlICgpXG4gICAgICA7IHRhYmxlID0gVGFibGUuY3JlYXRlIH5ncm93dGhfYWxsb3dlZCB+c2l6ZSAoVGFibGUuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgcmVhZCB0IGYgPVxuICAgICAgdC5udW1fcmVhZGVycyA8LSB0Lm51bV9yZWFkZXJzICsgMTtcbiAgICAgIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gdC5udW1fcmVhZGVycyA8LSB0Lm51bV9yZWFkZXJzIC0gMSkgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgZW5zdXJlX2Nhbl9tb2RpZnkgdCA9XG4gICAgICBpZiB0Lm51bV9yZWFkZXJzID4gMFxuICAgICAgdGhlbiBmYWlsd2l0aCBcIkl0IGlzIGFuIGVycm9yIHRvIG1vZGlmeSBhIEhhc2hfcXVldWUudCB3aGlsZSBpdGVyYXRpbmcgb3ZlciBpdC5cIlxuICAgIDs7XG5cbiAgICBsZXQgY2xlYXIgdCA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgRG91Ymx5X2xpbmtlZC5jbGVhciB0LnF1ZXVlO1xuICAgICAgVGFibGUuY2xlYXIgdC50YWJsZVxuICAgIDs7XG5cbiAgICBsZXQgbGVuZ3RoIHQgPSBUYWJsZS5sZW5ndGggdC50YWJsZVxuICAgIGxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbiAgICBsZXQgbG9va3VwIHQgayA9XG4gICAgICBtYXRjaCBUYWJsZS5maW5kIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGVsdCAtPiBTb21lIChFbHQudmFsdWUgZWx0KS52YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2V4biB0IGsgPSAoRWx0LnZhbHVlIChUYWJsZS5maW5kX2V4biB0LnRhYmxlIGspKS52YWx1ZVxuICAgIGxldCBtZW0gdCBrID0gVGFibGUubWVtIHQudGFibGUga1xuXG4gICAgKCogTm90ZSB0aGF0IHRoaXMgaXMgdGhlIHRhaWwtcmVjdXJzaXZlIENvcmVfbGlzdC5tYXAgKilcbiAgICBsZXQgdG9fbGlzdCB0ID0gTGlzdC5tYXAgKERvdWJseV9saW5rZWQudG9fbGlzdCB0LnF1ZXVlKSB+ZjpLZXlfdmFsdWUudmFsdWVcbiAgICBsZXQgdG9fYXJyYXkgdCA9IEFycmF5Lm1hcCAoRG91Ymx5X2xpbmtlZC50b19hcnJheSB0LnF1ZXVlKSB+ZjpLZXlfdmFsdWUudmFsdWVcblxuICAgIGxldCBmb3JfYWxsIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5mb3JfYWxsIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPiBEb3VibHlfbGlua2VkLmV4aXN0cyB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkgW0Bub250YWlsXSkgXG4gICAgICBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBmaW5kX21hcCB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIERvdWJseV9saW5rZWQuZmluZF9tYXAgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYga3YudmFsdWUpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgKERvdWJseV9saW5rZWQuZmluZCB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkpXG4gICAgICAgICAgfmY6S2V5X3ZhbHVlLnZhbHVlKSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX3VuY2hlY2tlZCB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIGxldCBjb250ZW50cyA9IHsgS2V5X3ZhbHVlLmtleTsgdmFsdWUgfSBpblxuICAgICAgbGV0IGVsdCA9XG4gICAgICAgIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgICB8IGBiYWNrIC0+IERvdWJseV9saW5rZWQuaW5zZXJ0X2xhc3QgdC5xdWV1ZSBjb250ZW50c1xuICAgICAgICB8IGBmcm9udCAtPiBEb3VibHlfbGlua2VkLmluc2VydF9maXJzdCB0LnF1ZXVlIGNvbnRlbnRzXG4gICAgICBpblxuICAgICAgVGFibGUuc2V0IHQudGFibGUgfmtleSB+ZGF0YTplbHRcbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWUgdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZSA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgaWYgVGFibGUubWVtIHQudGFibGUga2V5XG4gICAgICB0aGVuIGBLZXlfYWxyZWFkeV9wcmVzZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgZW5xdWV1ZV91bmNoZWNrZWQgdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZTtcbiAgICAgICAgYE9rKVxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZV9iYWNrIHQgPSBlbnF1ZXVlIHQgYGJhY2tcbiAgICBsZXQgZW5xdWV1ZV9mcm9udCB0ID0gZW5xdWV1ZSB0IGBmcm9udFxuXG4gICAgbGV0IHJhaXNlX2VucXVldWVfZHVwbGljYXRlX2tleSB0IGtleSA9XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiSGFzaF9xdWV1ZS5lbnF1ZXVlX2V4bjogZHVwbGljYXRlIGtleVwiXG4gICAgICAgICAgICB+XzooVGFibGUuc2V4cF9vZl9rZXkgdC50YWJsZSBrZXkgOiBTZXhwLnQpXVxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZV9leG4gdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZSA9XG4gICAgICBtYXRjaCBlbnF1ZXVlIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgd2l0aFxuICAgICAgfCBgS2V5X2FscmVhZHlfcHJlc2VudCAtPiByYWlzZV9lbnF1ZXVlX2R1cGxpY2F0ZV9rZXkgdCBrZXlcbiAgICAgIHwgYE9rIC0+ICgpXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX2JhY2tfZXhuIHQgPSBlbnF1ZXVlX2V4biB0IGBiYWNrXG4gICAgbGV0IGVucXVldWVfZnJvbnRfZXhuIHQgPSBlbnF1ZXVlX2V4biB0IGBmcm9udFxuXG4gICAgKCogUGVyZm9ybWFuY2UgaGFjazogd2UgaW1wbGVtZW50IHRoaXMgdmVyc2lvbiBzZXBhcmF0ZWx5IHRvIGF2b2lkIGFsbG9jYXRpb24gZnJvbSB0aGVcbiAgICAgICBvcHRpb24uICopXG4gICAgbGV0IGxvb2t1cF9hbmRfbW92ZV90b19iYWNrX2V4biB0IGtleSA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0IGVsdCA9IFRhYmxlLmZpbmRfZXhuIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fYmFjayB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfbW92ZV90b19iYWNrIHQga2V5ID1cbiAgICAgIGxldCBvcGVuIE9wdGlvbi5MZXRfc3ludGF4IGluXG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0JW1hcCBlbHQgPSBUYWJsZS5maW5kIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fYmFjayB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfbW92ZV90b19mcm9udF9leG4gdCBrZXkgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCBlbHQgPSBUYWJsZS5maW5kX2V4biB0LnRhYmxlIGtleSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5tb3ZlX3RvX2Zyb250IHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250IHQga2V5ID1cbiAgICAgIGxldCBvcGVuIE9wdGlvbi5MZXRfc3ludGF4IGluXG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0JW1hcCBlbHQgPSBUYWJsZS5maW5kIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fZnJvbnQgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0IG1heWJlX2t2ID1cbiAgICAgICAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gICAgICAgIHwgYGJhY2sgLT4gRG91Ymx5X2xpbmtlZC5yZW1vdmVfbGFzdCB0LnF1ZXVlXG4gICAgICAgIHwgYGZyb250IC0+IERvdWJseV9saW5rZWQucmVtb3ZlX2ZpcnN0IHQucXVldWVcbiAgICAgIGluXG4gICAgICBtYXRjaCBtYXliZV9rdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGt2IC0+XG4gICAgICAgIFRhYmxlLnJlbW92ZSB0LnRhYmxlIGt2LmtleTtcbiAgICAgICAgU29tZSAoa3Yua2V5LCBrdi52YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IHJhaXNlX2RlcXVldWVfd2l0aF9rZXlfZW1wdHkgKCkgPVxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJIYXNoX3F1ZXVlLmRlcXVldWVfd2l0aF9rZXk6IGVtcHR5IHF1ZXVlXCJdXG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX3dpdGhfa2V5X2V4biB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgbWF0Y2ggZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlX2RlcXVldWVfd2l0aF9rZXlfZW1wdHkgKClcbiAgICAgIHwgU29tZSAoaywgdikgLT4gaywgdlxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV9iYWNrX3dpdGhfa2V5IHQgPSBkZXF1ZXVlX3dpdGhfa2V5IHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9iYWNrX3dpdGhfa2V5X2V4biB0ID0gZGVxdWV1ZV93aXRoX2tleV9leG4gdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2Zyb250X3dpdGhfa2V5IHQgPSBkZXF1ZXVlX3dpdGhfa2V5IHQgYGZyb250XG4gICAgbGV0IGRlcXVldWVfZnJvbnRfd2l0aF9rZXlfZXhuIHQgPSBkZXF1ZXVlX3dpdGhfa2V5X2V4biB0IGBmcm9udFxuXG4gICAgbGV0IGRlcXVldWUgdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIG1hdGNoIGRlcXVldWVfd2l0aF9rZXkgdCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgKF8sIHYpIC0+IFNvbWUgdlxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV9iYWNrIHQgPSBkZXF1ZXVlIHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9mcm9udCB0ID0gZGVxdWV1ZSB0IGBmcm9udFxuXG4gICAgbGV0IGxhc3Rfd2l0aF9rZXkgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmxhc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHsga2V5OyB2YWx1ZSB9IC0+IFNvbWUgKGtleSwgdmFsdWUpXG4gICAgOztcblxuICAgIGxldCBsYXN0IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5sYXN0IHQucXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBrdiAtPiBTb21lIGt2LnZhbHVlXG4gICAgOztcblxuICAgIGxldCBmaXJzdF93aXRoX2tleSB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQuZmlyc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHsga2V5OyB2YWx1ZSB9IC0+IFNvbWUgKGtleSwgdmFsdWUpXG4gICAgOztcblxuICAgIGxldCBmaXJzdCB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQuZmlyc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGt2IC0+IFNvbWUga3YudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IHJhaXNlX2RlcXVldWVfZW1wdHkgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcIkhhc2hfcXVldWUuZGVxdWV1ZV9leG46IGVtcHR5IHF1ZXVlXCJdXG5cbiAgICBsZXQgZGVxdWV1ZV9leG4gdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIG1hdGNoIGRlcXVldWUgdCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZV9kZXF1ZXVlX2VtcHR5ICgpXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX2JhY2tfZXhuIHQgPSBkZXF1ZXVlX2V4biB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfZnJvbnRfZXhuIHQgPSBkZXF1ZXVlX2V4biB0IGBmcm9udFxuXG4gICAgbGV0IGtleXMgdCA9XG4gICAgICAoKiBSZXR1cm4gdGhlIGtleXMgaW4gdGhlIG9yZGVyIG9mIHRoZSBxdWV1ZS4gKilcbiAgICAgIExpc3QubWFwIChEb3VibHlfbGlua2VkLnRvX2xpc3QgdC5xdWV1ZSkgfmY6S2V5X3ZhbHVlLmtleVxuICAgIDs7XG5cbiAgICBsZXQgdG9fYWxpc3QgdCA9XG4gICAgICBMaXN0Lm1hcCAoRG91Ymx5X2xpbmtlZC50b19saXN0IHQucXVldWUpIH5mOihmdW4ga3YgLT4ga3Yua2V5LCBrdi52YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXJpIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5pdGVyIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIH5rZXk6a3Yua2V5IH5kYXRhOmt2LnZhbHVlKSBbQG5vbnRhaWxdKSBcbiAgICAgIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5cbiAgICBsZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLmZvbGQgdC5xdWV1ZSB+aW5pdCB+ZjooZnVuIGFjIGt2IC0+IGYgYWMgfmtleTprdi5rZXkgfmRhdGE6a3YudmFsdWUpIFxuICAgICAgICBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gYWMgfmtleTpfIH5kYXRhIC0+IGYgYWMgZGF0YSkgW0Bub250YWlsXVxuICAgIGxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbiAgICBsZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gbSB+Zm9sZCB0IH5mXG4gICAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICAgIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcblxuICAgIGxldCBkZXF1ZXVlX2FsbCB0IH5mID1cbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIG1hdGNoIGRlcXVldWVfZnJvbnQgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAgIGYgdjtcbiAgICAgICAgICBsb29wICgpXG4gICAgICBpblxuICAgICAgbG9vcCAoKSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCByZW1vdmUgdCBrID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCBUYWJsZS5maW5kX2FuZF9yZW1vdmUgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBgTm9fc3VjaF9rZXlcbiAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5yZW1vdmUgdC5xdWV1ZSBlbHQ7XG4gICAgICAgIGBPa1xuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfcmVtb3ZlX3Vua25vd25fa2V5IHQga2V5ID1cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJIYXNoX3F1ZXVlLnJlbW92ZV9leG46IHVua25vd24ga2V5XCIgfl86KFRhYmxlLnNleHBfb2Zfa2V5IHQudGFibGUga2V5IDogU2V4cC50KV1cbiAgICA7O1xuXG4gICAgbGV0IHJlbW92ZV9leG4gdCBrID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCByZW1vdmUgdCBrIHdpdGhcbiAgICAgIHwgYE5vX3N1Y2hfa2V5IC0+IHJhaXNlX3JlbW92ZV91bmtub3duX2tleSB0IGtcbiAgICAgIHwgYE9rIC0+ICgpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX3JlbW92ZSB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmRfYW5kX3JlbW92ZSB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5yZW1vdmUgdC5xdWV1ZSBlbHQ7XG4gICAgICAgIFNvbWUgKEVsdC52YWx1ZSBlbHQpLnZhbHVlXG4gICAgOztcblxuICAgIGxldCByZXBsYWNlIHQgayB2ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCBUYWJsZS5maW5kIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYE5vX3N1Y2hfa2V5XG4gICAgICB8IFNvbWUgZWx0IC0+XG4gICAgICAgIChFbHQudmFsdWUgZWx0KS52YWx1ZSA8LSB2O1xuICAgICAgICBgT2tcbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2Vfb3JfZW5xdWV1ZSB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCBUYWJsZS5maW5kIHQudGFibGUga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbnF1ZXVlX3VuY2hlY2tlZCB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlXG4gICAgICB8IFNvbWUgZWx0IC0+IChFbHQudmFsdWUgZWx0KS52YWx1ZSA8LSB2YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgcmVwbGFjZV9vcl9lbnF1ZXVlX2Zyb250IHQga2V5IHZhbHVlID0gcmVwbGFjZV9vcl9lbnF1ZXVlIHQgYGZyb250IGtleSB2YWx1ZVxuICAgIGxldCByZXBsYWNlX29yX2VucXVldWVfYmFjayB0IGtleSB2YWx1ZSA9IHJlcGxhY2Vfb3JfZW5xdWV1ZSB0IGBiYWNrIGtleSB2YWx1ZVxuXG4gICAgbGV0IHJhaXNlX3JlcGxhY2VfdW5rbm93bl9rZXkgdCBrZXkgPVxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkhhc2hfcXVldWUucmVwbGFjZV9leG46IHVua25vd24ga2V5XCJcbiAgICAgICAgICAgIH5fOihUYWJsZS5zZXhwX29mX2tleSB0LnRhYmxlIGtleSA6IFNleHAudCldXG4gICAgOztcblxuICAgIGxldCByZXBsYWNlX2V4biB0IGsgdiA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggcmVwbGFjZSB0IGsgdiB3aXRoXG4gICAgICB8IGBOb19zdWNoX2tleSAtPiByYWlzZV9yZXBsYWNlX3Vua25vd25fa2V5IHQga1xuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGRyb3AgPyhuID0gMSkgdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIGlmIG4gPj0gbGVuZ3RoIHRcbiAgICAgIHRoZW4gY2xlYXIgdFxuICAgICAgZWxzZVxuICAgICAgICBmb3IgXyA9IDEgdG8gbiBkb1xuICAgICAgICAgIGlnbm9yZSAoZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgOiBfIG9wdGlvbilcbiAgICAgICAgZG9uZVxuICAgIDs7XG5cbiAgICBsZXQgZHJvcF9iYWNrID9uIHQgPSBkcm9wID9uIHQgYGJhY2tcbiAgICBsZXQgZHJvcF9mcm9udCA/biB0ID0gZHJvcCA/biB0IGBmcm9udFxuXG4gICAgbGV0IGNvcHkgdCA9XG4gICAgICBsZXQgY29waWVkID0gY3JlYXRlIH5zaXplOihsZW5ndGggdCkgKFRhYmxlLmhhc2hhYmxlIHQudGFibGUpIGluXG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBlbnF1ZXVlX2JhY2tfZXhuIGNvcGllZCBrZXkgZGF0YSk7XG4gICAgICBjb3BpZWRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTID0gUzAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSkgaGFzaF9xdWV1ZSA6PSAoJ2tleSwgJ2RhdGEpIEJhY2tlbmQudFxuXG4gIG1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICAgIG1vZHVsZSBLZXkgOiBLZXlcblxuICAgICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgZW5kKSA6IFMgd2l0aCB0eXBlIGtleSA9IFQuS2V5LnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIChCYWNrZW5kIDogQmFja2VuZCB3aXRoIHR5cGUgKCdrLCAnZCkgdCA6PSAoJ2ssICdkKSBCYWNrZW5kLnQpXG5cbiAgICB0eXBlIGtleSA9IFQuS2V5LnRcbiAgICB0eXBlICdkYXRhIHQgPSAoVC5LZXkudCwgJ2RhdGEpIEJhY2tlbmQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBoYXNoYWJsZVxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoS2V5IDogS2V5KSA6IFMgd2l0aCB0eXBlIGtleSA9IEtleS50ID0gTWFrZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBLZXkgPSBLZXlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVGFibGUuSGFzaGFibGUub2Zfa2V5IChtb2R1bGUgS2V5KVxuICAgIGVuZClcblxuICBpbmNsdWRlIEJhY2tlbmRcbmVuZFxuXG5pbmNsdWRlIE1ha2VfYmFja2VuZCAoSGFzaHRibClcbiIsIigqKiBGdW5jdG9ycyBhbmQgaW50ZXJmYWNlcyB1c2VkIHRvIG1ha2UgbW9kdWxlcyBoYXNoYWJsZS4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2hhYmxlX2ludGZcblxubW9kdWxlIE1ha2VfcGxhaW4gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfcGxhaW4gd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9wbGFpbiAoVClcbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9wbGFpbiAoVClcbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2UgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogSGFzaHRibC5LZXlfcGxhaW4pIDpcbiAgU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlX3BsYWluIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIEhhc2h0YmwuS2V5IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2UgKFQpXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2UgKFQpXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlIChUKVxuXG4gIGxldCBoYXNoYWJsZSA9IFRhYmxlLmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2VfYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoVCA6IEhhc2h0YmwuS2V5KSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50ID0gTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIEhhc2h0YmwuS2V5X2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZSAoVClcbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlIChUKVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZSAoVClcbiAgaW5jbHVkZSBUXG5cbiAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfcGxhaW4gd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgZW5kKSA6IFNfcGxhaW4gd2l0aCB0eXBlIHQgOj0gVC5LZXkudCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuS2V5XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUKVxuXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gVC5LZXlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZClcblxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICAgIGluY2x1ZGUgSGFzaHRibC5LZXkgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC5LZXkudCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuS2V5XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2Vfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gVC5LZXlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZClcblxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleV9iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICBlbmRcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50XG4gIGVuZCkgOiBTX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gVC5LZXkudCA9IHN0cnVjdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgVC5LZXlcblxuICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogSGFzaHRibC5LZXlfYmluYWJsZSkgOlxuICBTX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBrZXlcblxuICAgICAgbW9kdWxlIFRhYmxlIDogc2lnXG4gICAgICAgIHR5cGUgJ2EgdCA9IChrZXksICdhKSBIYXNodGJsLnQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBIYXNoX3NldCA6IHNpZ1xuICAgICAgICB0eXBlIHQgPSBrZXkgSGFzaF9zZXQudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgICBlbmRcblxuICAgICAgdmFsIGhhc2hhYmxlIDoga2V5IEhhc2h0YmwuSGFzaGFibGUudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKEtleSA6IEhhc2h0YmwuS2V5X2JpbmFibGUpIDogUyB3aXRoIHR5cGUga2V5IDo9IEtleS50ID0gc3RydWN0XG4gICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZSAoS2V5KVxuICAgICAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlIChLZXkpXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFRhYmxlLmhhc2hhYmxlXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgICAgIG1vZHVsZSBLZXkgOiBIYXNodGJsLktleV9iaW5hYmxlXG5cbiAgICAgICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSBrZXkgOj0gVC5LZXkudCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVClcblxuICAgICAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmRcblxuICAgIG1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gICAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICAgIHR5cGUga2V5XG5cbiAgICAgICAgbW9kdWxlIFRhYmxlIDogc2lnXG4gICAgICAgICAgdHlwZSAnYSB0ID0gKGtleSwgJ2EpIEhhc2h0YmwudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgSGFzaF9zZXQgOiBzaWdcbiAgICAgICAgICB0eXBlIHQgPSBrZXkgSGFzaF9zZXQudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgICAgICBlbmRcblxuICAgICAgICB2YWwgaGFzaGFibGUgOiBrZXkgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2UgKEtleSA6IEhhc2h0YmwuS2V5X3N0YWJsZSkgOiBTIHdpdGggdHlwZSBrZXkgOj0gS2V5LnQgPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3N0YWJsZSAoS2V5KVxuICAgICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3N0YWJsZSAoS2V5KVxuXG4gICAgICAgIGxldCBoYXNoYWJsZSA9IFRhYmxlLmhhc2hhYmxlXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgICAgICAgIG1vZHVsZSBLZXkgOiBIYXNodGJsLktleV9zdGFibGVcblxuICAgICAgICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50XG4gICAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSBrZXkgOj0gVC5LZXkudCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2Vfc3RhYmxlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgICAgICAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9zdGFibGVfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICAgICAgICBtb2R1bGUgRWx0ID0gVC5LZXlcblxuICAgICAgICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIENoYXIgPSBCYXNlLkNoYXJcbm1vZHVsZSBJbnQgPSBCYXNlLkludFxubW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nXG5pbmNsdWRlIEhleGR1bXBfaW50ZlxuXG5sZXQgYnl0ZXNfcGVyX2xpbmUgPSAxNlxuXG4oKiBJbml0aWFsaXplIHRvIGVub3VnaCBsaW5lcyB0byBkaXNwbGF5IDQwOTYgYnl0ZXMgLS0gbGFyZ2UgZW5vdWdoIHRoYXQsIGZvciBleGFtcGxlLCBhXG4gICBjb21wbGV0ZSBFdGhlcm5ldCBwYWNrZXQgY2FuIGFsd2F5cyBiZSBkaXNwbGF5ZWQgLS0gaW5jbHVkaW5nIHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlXG4gICBmaW5hbCBpbmRleC4gKilcbmxldCBkZWZhdWx0X21heF9saW5lcyA9IHJlZiAoKDQwOTYgLyBieXRlc19wZXJfbGluZSkgKyAxKVxuXG5tb2R1bGUgT2ZfaW5kZXhhYmxlMiAoVCA6IEluZGV4YWJsZTIpID0gc3RydWN0XG4gIG1vZHVsZSBIZXhkdW1wID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGV4X29mX3BvcyBwb3MgPSBQcmludGYuc3ByaW50ZiBcIiUwOHhcIiBwb3NcblxuICAgIGxldCBoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgb2Zmc2V0ID1cbiAgICAgIGxldCBwb3MgPSBzdGFydCArIG9mZnNldCBpblxuICAgICAgaWYgcG9zID49IHVudGlsIHRoZW4gXCIgIFwiIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlMDJ4XCIgKENoYXIudG9faW50IChnZXQgdCBwb3MpKVxuICAgIDs7XG5cbiAgICBsZXQgaGV4X29mX2xpbmUgdCB+c3RhcnQgfnVudGlsID1cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiJXMgJXMgJXMgJXMgJXMgJXMgJXMgJXMgICVzICVzICVzICVzICVzICVzICVzICVzXCJcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAwKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMilcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAzKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDQpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNSlcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA2KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDcpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgOClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA5KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEwKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDExKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEyKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDEzKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDE0KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDE1KVxuICAgIDs7XG5cbiAgICBsZXQgcHJpbnRhYmxlX3N0cmluZyB0IH5zdGFydCB+dW50aWwgPVxuICAgICAgU3RyaW5nLmluaXQgKHVudGlsIC0gc3RhcnQpIH5mOihmdW4gaSAtPlxuICAgICAgICBsZXQgY2hhciA9IGdldCB0IChzdGFydCArIGkpIGluXG4gICAgICAgIGlmIENoYXIuaXNfcHJpbnQgY2hhciB0aGVuIGNoYXIgZWxzZSAnLicpXG4gICAgOztcblxuICAgIGxldCBsaW5lIHQgfnBvcyB+bGVuIH5saW5lX2luZGV4ID1cbiAgICAgIGxldCBzdGFydCA9IHBvcyArIChsaW5lX2luZGV4ICogYnl0ZXNfcGVyX2xpbmUpIGluXG4gICAgICBsZXQgdW50aWwgPSBtaW4gKHN0YXJ0ICsgYnl0ZXNfcGVyX2xpbmUpIChwb3MgKyBsZW4pIGluXG4gICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICBcIiVzICAlcyAgfCVzfFwiXG4gICAgICAgIChoZXhfb2ZfcG9zIHN0YXJ0KVxuICAgICAgICAoaGV4X29mX2xpbmUgdCB+c3RhcnQgfnVudGlsKVxuICAgICAgICAocHJpbnRhYmxlX3N0cmluZyB0IH5zdGFydCB+dW50aWwpXG4gICAgOztcblxuICAgIGxldCB0b19zZXF1ZW5jZSA/bWF4X2xpbmVzID9wb3MgP2xlbiB0ID1cbiAgICAgIGxldCBwb3MsIGxlbiA9XG4gICAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgICAgIGluXG4gICAgICBsZXQgbWF4X2xpbmVzID1cbiAgICAgICAgbWF0Y2ggbWF4X2xpbmVzIHdpdGhcbiAgICAgICAgfCBTb21lIG1heF9saW5lcyAtPiBtYXhfbGluZXNcbiAgICAgICAgfCBOb25lIC0+ICFkZWZhdWx0X21heF9saW5lc1xuICAgICAgaW5cbiAgICAgICgqIGFsd2F5cyBwcm9kdWNlIGF0IGxlYXN0IDMgbGluZXM6IGZpcnN0IGxpbmUgb2YgaGV4LCBlbGxpcHNpcywgbGFzdCBsaW5lIG9mIGhleCAqKVxuICAgICAgbGV0IG1heF9saW5lcyA9IG1heCBtYXhfbGluZXMgMyBpblxuICAgICAgKCogdW5hYnJpZGdlZCBsaW5lcyA9IGxpbmVzIG9mIGhleCArIGxpbmUgd2l0aCBmaW5hbCBpbmRleCAqKVxuICAgICAgbGV0IHVuYWJyaWRnZWRfbGluZXMgPVxuICAgICAgICBJbnQucm91bmRfdXAgbGVuIH50b19tdWx0aXBsZV9vZjpieXRlc19wZXJfbGluZSAvIGJ5dGVzX3Blcl9saW5lXG4gICAgICBpblxuICAgICAgKCogRmlndXJlIG91dCB3aGVyZSB3ZSBuZWVkIHRvIHNraXAgZnJvbSBhbmQgdG8gaWYgW21heF9saW5lcyA8IHVuYWJyaWRnZWRfbGluZXNdLlxuICAgICAgICAgU2tpcCBhZnRlciBoYWxmIHRoZSBhY3R1YWwgaGV4IGxpbmVzIChzdWJ0cmFjdGluZyBvbmUgbGluZSBmb3IgdGhlIGVsbGlwc2lzKS5cbiAgICAgICAgIFNraXAgdG8gbmVhciB0aGUgZW5kLCBsZXNzIHRoZSBudW1iZXIgb2YgbGluZXMgcmVtYWluaW5nIHRvIHByb2R1Y2UsIHBsdXMgdGhlXG4gICAgICAgICBlbGxpcHNpcyBsaW5lLiAqKVxuICAgICAgbGV0IHNraXBfZnJvbSA9IChtYXhfbGluZXMgLSAxKSAvIDIgaW5cbiAgICAgIGxldCBza2lwX3RvID0gdW5hYnJpZGdlZF9saW5lcyAtIChtYXhfbGluZXMgLSBza2lwX2Zyb20pICsgMSBpblxuICAgICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQ6MCB+ZjooZnVuIGxpbmVfaW5kZXggLT5cbiAgICAgICAgaWYgbGluZV9pbmRleCA+PSB1bmFicmlkZ2VkX2xpbmVzXG4gICAgICAgIHRoZW4gRG9uZVxuICAgICAgICBlbHNlIGlmIGxpbmVfaW5kZXggPSBza2lwX2Zyb20gJiYgbWF4X2xpbmVzIDwgdW5hYnJpZGdlZF9saW5lc1xuICAgICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBcIi4uLlwiOyBzdGF0ZSA9IHNraXBfdG8gfVxuICAgICAgICBlbHNlIFlpZWxkIHsgdmFsdWUgPSBsaW5lIHQgfnBvcyB+bGVuIH5saW5lX2luZGV4OyBzdGF0ZSA9IGxpbmVfaW5kZXggKyAxIH0pXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmdfaHVtID9tYXhfbGluZXMgP3BvcyA/bGVuIHQgPVxuICAgICAgdG9fc2VxdWVuY2UgP21heF9saW5lcyA/cG9zID9sZW4gdCB8PiBTZXF1ZW5jZS50b19saXN0IHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgXyBfIHQgPSB0b19zZXF1ZW5jZSB0IHw+IFNlcXVlbmNlLnRvX2xpc3QgfD4gWyVzZXhwX29mOiBzdHJpbmcgbGlzdF1cblxuICAgIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgcHJpbnRhYmxlID1cbiAgICAgICAgbGV0IHJlYyBwcmludGFibGVfZnJvbSB0IH5wb3Mgfmxlbmd0aCA9XG4gICAgICAgICAgcG9zID49IGxlbmd0aFxuICAgICAgICAgIHx8IChDaGFyLmlzX3ByaW50IChnZXQgdCBwb3MpICYmIHByaW50YWJsZV9mcm9tIHQgfnBvczoocG9zICsgMSkgfmxlbmd0aClcbiAgICAgICAgaW5cbiAgICAgICAgZnVuIHQgLT4gcHJpbnRhYmxlX2Zyb20gdCB+cG9zOjAgfmxlbmd0aDoobGVuZ3RoIHQpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gcG9zIC0+IGdldCB0IHBvcylcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHQgPVxuICAgICAgICBpZiBwcmludGFibGUgdCB0aGVuIFslc2V4cCAodG9fc3RyaW5nIHQgOiBzdHJpbmcpXSBlbHNlIFslc2V4cCAodCA6IChhLCBiKSB0KV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9pbmRleGFibGUxIChUIDogSW5kZXhhYmxlMSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBPZl9pbmRleGFibGUyIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgVC50XG5cbiAgICAgIGxldCBsZW5ndGggPSBULmxlbmd0aFxuICAgICAgbGV0IGdldCA9IFQuZ2V0XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIZXhkdW1wID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgc2V4cF9vZl90IHggdCA9IE0uSGV4ZHVtcC5zZXhwX29mX3QgeCBbJXNleHBfb2Y6IF9dIHRcbiAgICBsZXQgdG9fc2VxdWVuY2UgPSBNLkhleGR1bXAudG9fc2VxdWVuY2VcbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA9IE0uSGV4ZHVtcC50b19zdHJpbmdfaHVtXG5cbiAgICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAodCA6IChhLCBfKSBNLkhleGR1bXAuUHJldHR5LnQpXVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2ZfaW5kZXhhYmxlIChUIDogSW5kZXhhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9mX2luZGV4YWJsZTEgKHN0cnVjdFxuICAgICAgdHlwZSBfIHQgPSBULnRcblxuICAgICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gICAgICBsZXQgZ2V0ID0gVC5nZXRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBzZXhwX29mX3QgdCA9IE0uSGV4ZHVtcC5zZXhwX29mX3QgWyVzZXhwX29mOiBfXSB0XG4gICAgbGV0IHRvX3NlcXVlbmNlID0gTS5IZXhkdW1wLnRvX3NlcXVlbmNlXG4gICAgbGV0IHRvX3N0cmluZ19odW0gPSBNLkhleGR1bXAudG9fc3RyaW5nX2h1bVxuXG4gICAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodCA6IF8gTS5IZXhkdW1wLlByZXR0eS50KV1cbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJZGVudGlmaWFibGVfaW50ZlxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX3BsYWluIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9zZXhwX2dyYW1tYXIgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG4gIE1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9wbGFpbiAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG4gIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgRXh0ZW5kIChNIDogQmFzZS5JZGVudGlmaWFibGUuUykgKEIgOiBCaW5hYmxlMC5TIHdpdGggdHlwZSB0ID0gTS50KSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuICAgIGluY2x1ZGUgKEIgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5FeHRlbmRfYmluYWJsZSAoTSkgKFQpXG5cbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgS2V5ID0gVFxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBNLmhhc2hhYmxlXG4gICAgZW5kKVxuZW5kXG4iLCJtb2R1bGUgdHlwZSBWMSA9IHNpZ1xuICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBcblxuICBpbmNsdWRlXG4gICAgQ29tcGFyYWJsZS5TdGFibGUuVjEuU1xuICAgIHdpdGggdHlwZSBjb21wYXJhYmxlIDo9IHRcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFYxID0gc2lnXG4gICAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzBcblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuU1xuICAgICAgd2l0aCB0eXBlIGNvbXBhcmFibGUgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlN0cmluZ1xuXG4oKiBUaGVzZSB0d28gYXJlIG5lZWRlZCBiZWNhdXNlIFtpbmNsdWRlIElkZW50aWZpYWJsZS5FeHRlbmRdIChwcmVzZW50IGxhdGVyIGluIHRoZSBmaWxlKVxuICAgYmluZHMgbmV3IFtNYXBdIGFuZCBbU2V0XSBtb2R1bGVzLiAqKVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuU3RyaW5nXG5cbiAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgdG9fc3RyaW5nID0gRm4uaWRcbiAgICBsZXQgb2Zfc3RyaW5nID0gRm4uaWRcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUKVxuICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDYXNlbGVzc1xuXG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG5lbmRcblxudHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdcblxuICAgICAgbGV0IGhhc2hhYmxlID0gU3RhYmxlLlYxLmhhc2hhYmxlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEJhc2UuU3RyaW5nKVxuXG5pbmNsdWRlIEhleGR1bXAuT2ZfaW5kZXhhYmxlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gIGVuZClcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnN0cmluZ1xubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc3RyaW5nXG5sZXQgZ2VuX25vbmVtcHR5ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfbm9uX2VtcHR5XG5sZXQgZ2VuJyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX29mXG5sZXQgZ2VuX25vbmVtcHR5JyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX25vbl9lbXB0eV9vZlxuXG5sZXQgZ2VuX3dpdGhfbGVuZ3RoIGxlbmd0aCBjaGFycyA9XG4gIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJzIH5sZW5ndGhcbjs7XG5cbmxldCB0YWtlX3doaWxlIHQgfmYgPVxuICBtYXRjaCBsZmluZGkgdCB+ZjooZnVuIF8gZWx0IC0+IG5vdCAoZiBlbHQpKSB3aXRoXG4gIHwgTm9uZSAtPiB0XG4gIHwgU29tZSBpIC0+IHN1YiB0IH5wb3M6MCB+bGVuOmlcbjs7XG5cbmxldCBydGFrZV93aGlsZSB0IH5mID1cbiAgbWF0Y2ggcmZpbmRpIHQgfmY6KGZ1biBfIGVsdCAtPiBub3QgKGYgZWx0KSkgd2l0aFxuICB8IE5vbmUgLT4gdFxuICB8IFNvbWUgaSAtPiBzdWIgdCB+cG9zOihpICsgMSkgfmxlbjoobGVuZ3RoIHQgLSBpIC0gMSlcbjs7XG5cbigqKiBTZWUgeyFBcnJheS5ub3JtYWxpemV9IGZvciB0aGUgZm9sbG93aW5nIDQgZnVuY3Rpb25zLiAqKVxubGV0IG5vcm1hbGl6ZSB0IGkgPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLm5vcm1hbGl6ZSB+bGVuZ3RoX2Z1bjpsZW5ndGggdCBpXG5cbmxldCBzbGljZSB0IHN0YXJ0IHN0b3AgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLnNsaWNlIH5sZW5ndGhfZnVuOmxlbmd0aCB+c3ViX2Z1bjpzdWIgdCBzdGFydCBzdG9wXG47O1xuXG5sZXQgbmdldCB4IGkgPVxuICBsZXQgbW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nIGluXG4gIHguW25vcm1hbGl6ZSB4IGldXG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5TdHJpbmd9W0Jhc2UuU3RyaW5nXX0uICopXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuU3RyaW5nXG5lbmRcblxudHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cblxuKCoqIFtDYXNlbGVzc10gY29tcGFyZXMgYW5kIGhhc2hlcyBzdHJpbmdzIGlnbm9yaW5nIGNhc2UsIHNvIHRoYXQgZm9yIGV4YW1wbGVcbiAgICBbQ2FzZWxlc3MuZXF1YWwgXCJPQ2FtbFwiIFwib2NhbWxcIl0gYW5kIFtDYXNlbGVzcy4oXCJhcHBsZVwiIDwgXCJCYW5hbmFcIildIGFyZSBbdHJ1ZV0sIGFuZFxuICAgIFtDYXNlbGVzcy5NYXBdLCBbQ2FzZWxlc3MuVGFibGVdIGxvb2t1cCBhbmQgW0Nhc2VsZXNzLlNldF0gbWVtYmVyc2hpcCBpc1xuICAgIGNhc2UtaW5zZW5zaXRpdmUuXG5cbiAgICBbQ2FzZWxlc3NdIGFsc28gcHJvdmlkZXMgY2FzZS1pbnNlbnNpdGl2ZSBbaXNfc3VmZml4XSBhbmQgW2lzX3ByZWZpeF0gZnVuY3Rpb25zLCBzb1xuICAgIHRoYXQgZm9yIGV4YW1wbGUgW0Nhc2VsZXNzLmlzX3N1ZmZpeCBcIk9DYW1sXCIgfnN1ZmZpeDpcIkFtTFwiXSBhbmQgW0Nhc2VsZXNzLmlzX3ByZWZpeFxuICAgIFwiT0NhbWxcIiB+cHJlZml4Olwib2NcIl0gYXJlIFt0cnVlXS4gKilcbm1vZHVsZSBDYXNlbGVzcyA6IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQ2FzZWxlc3NcbiAgZW5kXG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCBzZXhwXVxuXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5cbigqKiBbc2xpY2UgdCBzdGFydCBzdG9wXSByZXR1cm5zIGEgbmV3IHN0cmluZyBpbmNsdWRpbmcgZWxlbWVudHMgW3QuKHN0YXJ0KV0gdGhyb3VnaFxuICAgIFt0LihzdG9wLTEpXSwgbm9ybWFsaXplZCBQeXRob24tc3R5bGUgd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgW3N0b3AgPSAwXSBpcyB0cmVhdGVkIGFzXG4gICAgW3N0b3AgPSBsZW5ndGggdF0uICopXG52YWwgc2xpY2UgOiB0IC0+IGludCAtPiBpbnQgLT4gdFxuXG4oKiogW25nZXQgcyBpXSBnZXRzIHRoZSBjaGFyIGF0IG5vcm1hbGl6ZWQgcG9zaXRpb24gW2ldIGluIFtzXS4gKilcbnZhbCBuZ2V0IDogdCAtPiBpbnQgLT4gY2hhclxuXG4oKiogW3Rha2Vfd2hpbGUgcyB+Zl0gcmV0dXJucyB0aGUgbG9uZ2VzdCBwcmVmaXggb2YgW3NdIHNhdGlzZnlpbmcgW2Zvcl9hbGwgcHJlZml4IH5mXVxuICAgIChTZWUgW2xzdHJpcF0gdG8gZHJvcCBzdWNoIGEgcHJlZml4KSAqKVxudmFsIHRha2Vfd2hpbGUgOiB0IC0+IGY6KChjaGFyIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IHRcblxuKCoqIFtydGFrZV93aGlsZSBzIH5mXSByZXR1cm5zIHRoZSBsb25nZXN0IHN1ZmZpeCBvZiBbc10gc2F0aXNmeWluZyBbZm9yX2FsbCBzdWZmaXggfmZdXG4gICAgKFNlZSBbcnN0cmlwXSB0byBkcm9wIHN1Y2ggYSBzdWZmaXgpICopXG52YWwgcnRha2Vfd2hpbGUgOiB0IC0+IGY6KChjaGFyIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IHRcblxuaW5jbHVkZSBIZXhkdW1wLlMgd2l0aCB0eXBlIHQgOj0gdFxuaW5jbHVkZSBJZGVudGlmaWFibGUuUyB3aXRoIHR5cGUgdCA6PSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmluY2x1ZGUgUXVpY2tjaGVja2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbigqKiBMaWtlIFtxdWlja2NoZWNrX2dlbmVyYXRvcl0sIGJ1dCB3aXRob3V0IGVtcHR5IHN0cmluZ3MuICopXG52YWwgZ2VuX25vbmVtcHR5IDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtxdWlja2NoZWNrX2dlbmVyYXRvcl0sIGJ1dCBnZW5lcmF0ZSBzdHJpbmdzIHdpdGggdGhlIGdpdmVuIGRpc3RyaWJ1dGlvbiBvZlxuICAgIGNoYXJhY3RlcnMuICopXG52YWwgZ2VuJyA6IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW2dlbiddLCBidXQgd2l0aG91dCBlbXB0eSBzdHJpbmdzLiAqKVxudmFsIGdlbl9ub25lbXB0eScgOiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtnZW4nXSwgYnV0IGdlbmVyYXRlIHN0cmluZ3Mgd2l0aCB0aGUgZ2l2ZW4gbGVuZ3RoLiAqKVxudmFsIGdlbl93aXRoX2xlbmd0aCA6IGludCAtPiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBOb3RlIHRoYXQgW3N0cmluZ10gaXMgYWxyZWFkeSBzdGFibGUgYnkgaXRzZWxmLCBzaW5jZSBhcyBhIHByaW1pdGl2ZSB0eXBlIGl0IGlzIGFuXG4gICAgaW50ZWdyYWwgcGFydCBvZiB0aGUgc2V4cCAvIGJpbl9pbyBwcm90b2NvbC4gW1N0cmluZy5TdGFibGVdIGV4aXN0cyBvbmx5IHRvIGludHJvZHVjZVxuICAgIFtTdHJpbmcuU3RhYmxlLlNldF0sIFtTdHJpbmcuU3RhYmxlLk1hcF0sIFtTdHJpbmcuU3RhYmxlLlRhYmxlXSwgYW5kIHByb3ZpZGUgaW50ZXJmYWNlXG4gICAgdW5pZm9ybWl0eSB3aXRoIG90aGVyIHN0YWJsZSB0eXBlcy4gKilcbm1vZHVsZSBTdGFibGUgOiBzaWdcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2gsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgaW5jbHVkZVxuICAgICAgU3RhYmxlX2NvbXBhcmFibGUuV2l0aF9zdGFibGVfd2l0bmVzcy5WMVxuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5TIHdpdGggdHlwZSBrZXkgOj0gdFxuICBlbmRcbmVuZFxuXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBib29sIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5cbnR5cGUgdCA9IGJvb2wgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuQm9vbClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQmFzZS5Cb29sXG5cbmluY2x1ZGUgKFxuICBCYXNlLkJvb2wgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5Cb29sXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEJhc2UuQm9vbClcblxubGV0IG9mX3N0cmluZ19odW0gPVxuICBsZXQgdGFibGUgPVxuICAgIGxhenlcbiAgICAgIChsZXQgdGFibGUgPSBTdHJpbmcuQ2FzZWxlc3MuVGFibGUuY3JlYXRlICgpIGluXG4gICAgICAgWyBmYWxzZSwgWyBcImZhbHNlXCI7IFwibm9cIjsgXCIwXCIgXTsgdHJ1ZSwgWyBcInRydWVcIjsgXCJ5ZXNcIjsgXCIxXCIgXSBdXG4gICAgICAgfD4gTGlzdC5pdGVyIH5mOihmdW4gKGJvb2wsIHN0cmluZ3MpIC0+XG4gICAgICAgICBMaXN0Lml0ZXIgc3RyaW5ncyB+ZjooZnVuIHN0cmluZyAtPlxuICAgICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OnN0cmluZyB+ZGF0YTpib29sO1xuICAgICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OihTdHJpbmcucHJlZml4IHN0cmluZyAxKSB+ZGF0YTpib29sKSk7XG4gICAgICAgdGFibGUpXG4gIGluXG4gIGxldCByYWlzZV9pbnZhbGlkIGlucHV0ID1cbiAgICBsZXQgZXhwZWN0ZWRfY2FzZV9pbnNlbnNpdGl2ZSA9IFN0cmluZy5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIChmb3JjZSB0YWJsZSkpIGluXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiQm9vbC5vZl9zdHJpbmdfaHVtOiBpbnZhbGlkIGlucHV0XCJcbiAgICAgICAgICAoaW5wdXQgOiBzdHJpbmcpXG4gICAgICAgICAgKGV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUgOiBTdHJpbmcuU2V0LnQpXVxuICBpblxuICBmdW4gc3RyaW5nIC0+XG4gICAgSGFzaHRibC5maW5kX2FuZF9jYWxsIChmb3JjZSB0YWJsZSkgc3RyaW5nIH5pZl9mb3VuZDpGbi5pZCB+aWZfbm90X2ZvdW5kOnJhaXNlX2ludmFsaWRcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuYm9vbFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuYm9vbFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuYm9vbFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuQnl0ZXNcblxuICAgIHR5cGUgdCA9IGJ5dGVzIFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEJhc2UuQnl0ZXMpXG5cbmluY2x1ZGUgSGV4ZHVtcC5PZl9pbmRleGFibGUgKHN0cnVjdFxuICAgIHR5cGUgdCA9IGJ5dGVzXG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IGdldFxuICBlbmQpXG5cbmxldCBnZW4nIGNoYXJfZ2VuID0gU3RyaW5nLmdlbicgY2hhcl9nZW4gfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3N0cmluZ1xuXG5sZXQgZ2VuX3dpdGhfbGVuZ3RoIGxlbiBjaGFyX2dlbiA9XG4gIFN0cmluZy5nZW5fd2l0aF9sZW5ndGggbGVuIGNoYXJfZ2VuIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zdHJpbmdcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5DaGFyKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuKCogaW5jbHVkZSBbQmFzZS5DaGFyXSBhZnRlciB0aGUgYXBwbGljYXRpb24gb2YgW0lkZW50aWZpYWJsZS5FeHRlbmRdIHRvIHJlcGxhY2UgdGhlXG4gICBbQ29tcGFyYWJsZV0gZnVuY3Rpb25zIHdpdGggdGhlIHBlcnZhc2l2ZSB2ZXJzaW9ucyAqKVxuaW5jbHVkZSAoXG4gIEJhc2UuQ2hhciA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLkNoYXJcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ2FzZWxlc3NcblxuICAgIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmcgYmluX2lvXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbmVuZFxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQmFzZS5DaGFyXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhclxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuY2hhclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuY2hhclxubGV0IGdlbl9kaWdpdCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9kaWdpdFxubGV0IGdlbl9sb3dlcmNhc2UgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfbG93ZXJjYXNlXG5sZXQgZ2VuX3VwcGVyY2FzZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl91cHBlcmNhc2VcbmxldCBnZW5fYWxwaGEgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfYWxwaGFcbmxldCBnZW5fYWxwaGFudW0gPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfYWxwaGFudW1cbmxldCBnZW5fcHJpbnQgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfcHJpbnRcbmxldCBnZW5fd2hpdGVzcGFjZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl93aGl0ZXNwYWNlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbHVzaXZlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3VuaWZvcm1faW5jbHVzaXZlXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTaWduID0gQmFzZS5TaWduXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2lnbi50ID1cbiAgICAgIHwgTmVnXG4gICAgICB8IFplcm9cbiAgICAgIHwgUG9zXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwLCBlbnVtZXJhdGVdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIFNpZ25cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZCAoU2lnbikgKFN0YWJsZS5WMSlcbiIsImV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuKCogU3RvbGVuIGZyb20gW3BlcnZhc2l2ZXMubWxdLiAgQWRkcyBhIFwiLlwiIGF0IHRoZSBlbmQgaWYgbmVlZGVkLiAgSXQgaXMgaW5cbiAgIFtwZXJ2YXNpdmVzLm1saV0sIGJ1dCBpdCBhbHNvIHNheXMgbm90IHRvIHVzZSBpdCBkaXJlY3RseSwgc28gd2UgY29weSBhbmQgcGFzdGUgdGhlXG4gICBjb2RlLiBJdCBtYWtlcyB0aGUgYXNzdW1wdGlvbiBvbiB0aGUgc3RyaW5nIHBhc3NlZCBpbiBhcmd1bWVudCB0aGF0IGl0IHdhcyByZXR1cm5lZCBieVxuICAgW2Zvcm1hdF9mbG9hdF0gKilcbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gbFxuICAgIHRoZW4gcyBeIFwiLlwiXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IF8gLT4gcylcbiAgaW5cbiAgbG9vcCAwXG47O1xuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5GbG9hdFxuXG4gICAgICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzLCB0eXBlcmVwXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUMVxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUMSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIFQgPSBTdGFibGUuVjFcbmluY2x1ZGUgVFxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFwX2FuZF9zZXRfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoVClcbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHQgPSBUXG5cbmxldCB2YWxpZGF0ZV9vcmRpbmFyeSB0ID1cbiAgVmFsaWRhdGUub2ZfZXJyb3Jfb3B0XG4gICAgKGxldCBtb2R1bGUgQyA9IENsYXNzIGluXG4gICAgIG1hdGNoIGNsYXNzaWZ5IHQgd2l0aFxuICAgICB8IEMuTm9ybWFsIHwgQy5TdWJub3JtYWwgfCBDLlplcm8gLT4gTm9uZVxuICAgICB8IEMuSW5maW5pdGUgLT4gU29tZSBcInZhbHVlIGlzIGluZmluaXRlXCJcbiAgICAgfCBDLk5hbiAtPiBTb21lIFwidmFsdWUgaXMgTmFOXCIpXG47O1xuXG5tb2R1bGUgViA9IHN0cnVjdFxuICBtb2R1bGUgWlogPSBDb21wYXJhYmxlLlZhbGlkYXRlIChUKVxuXG4gIGxldCB2YWxpZGF0ZV9ib3VuZCB+bWluIH5tYXggdCA9XG4gICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZSAodmFsaWRhdGVfb3JkaW5hcnkgdCkgKFpaLnZhbGlkYXRlX2JvdW5kIHQgfm1pbiB+bWF4KVxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZV9sYm91bmQgfm1pbiB0ID1cbiAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlICh2YWxpZGF0ZV9vcmRpbmFyeSB0KSAoWloudmFsaWRhdGVfbGJvdW5kIHQgfm1pbilcbiAgOztcblxuICBsZXQgdmFsaWRhdGVfdWJvdW5kIH5tYXggdCA9XG4gICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZSAodmFsaWRhdGVfb3JkaW5hcnkgdCkgKFpaLnZhbGlkYXRlX3Vib3VuZCB0IH5tYXgpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBWXG5cbm1vZHVsZSBSb2J1c3RfY29tcGFyZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgKCogaW50ZW5kZWQgdG8gYmUgYSB0b2xlcmFuY2Ugb24gaHVtYW4tZW50ZXJlZCBmbG9hdHMgKilcblxuICAgIHZhbCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgOiBmbG9hdFxuXG4gICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gZmxvYXRcbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICAgIHZhbCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgOiBmbG9hdFxuICAgIGVuZCkgOiBTID0gc3RydWN0XG4gICAgKCogV2UgaGF2ZSB0ZXN0IGluIHRoZSB0cmVlIHRoYXQgcmVseSBvbiB0aGVzZSBmdW5jdGlvbnMgbm90IGFsbG9jYXRpbmcsIGV2ZW4gd2l0aG91dFxuICAgICAgIFhfTElCUkFSWV9JTkxJTkcuIFRoZSBvbmx5IHdheSB0byBlbnN1cmUgdGhhdCB0aGVzZSBkb24ndCBjcmVhdGUgdGVtcG9yYXJ5IGJveGVkXG4gICAgICAgZmxvYXRzIHdpdGhvdXQgWF9MSUJSQVJZX0lOTElORyBpcyBmb3IgdGhpcyBjb2RlIHRvIHNlZSB0aGUgZmxvYXQgb3BlcmF0aW9ucyBhc1xuICAgICAgIGV4dGVybmFscywgYXMgZGVmaW5lZCBpbiBbUGVydmFzaXZlc10uIFRoYXQncyB3aHkgd2UgdXNlIFtQb2x5XSBhbmQgZmxvYXRcbiAgICAgICBhcml0aG1ldGljIGZyb20gW0NhbWxdLiAqKVxuICAgIG9wZW4gUG9seVxuXG4gICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IFQucm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgbGV0ICggPj0uICkgeCB5ID0geCA+PSBTdGRsaWIuKCAtLiApIHkgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgbGV0ICggPD0uICkgeCB5ID0geSA+PS4geFxuICAgIGxldCAoID0uICkgeCB5ID0geCA+PS4geSAmJiB5ID49LiB4XG4gICAgbGV0ICggPi4gKSB4IHkgPSB4ID4gU3RkbGliLiggKy4gKSB5IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgIGxldCAoIDwuICkgeCB5ID0geSA+LiB4XG4gICAgbGV0ICggPD4uICkgeCB5ID0gbm90ICh4ID0uIHkpXG5cbiAgICBsZXQgcm9idXN0bHlfY29tcGFyZSB4IHkgPVxuICAgICAgbGV0IGQgPSBTdGRsaWIuKCAtLiApIHggeSBpblxuICAgICAgaWYgZCA8IFN0ZGxpYi4oIH4tLiApIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgICAgdGhlbiAtMVxuICAgICAgZWxzZSBpZiBkID4gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgICB0aGVuIDFcbiAgICAgIGVsc2UgMFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBSb2J1c3RseV9jb21wYXJhYmxlID0gUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTdcbiAgZW5kKVxuXG5pbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGVcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkZsb2F0Lk9cbiAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlXG5lbmRcblxubW9kdWxlIFRlcnNlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBpbmNsdWRlIChcbiAgICBCYXNlLkZsb2F0LlRlcnNlIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLkZsb2F0LlRlcnNlXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5sZXQgcm9idXN0X3NpZ24gdCA6IFNpZ24udCA9IGlmIHQgPi4gMC4gdGhlbiBQb3MgZWxzZSBpZiB0IDwuIDAuIHRoZW4gTmVnIGVsc2UgWmVyb1xuXG4oKiBUaGVyZSBhcmUgdHdvIGlzc3VlczpcbiAgIC0gRmxvYXQuc2lnbiB1c2VkIHRvIHVzZSByb2J1c3QgY29tcGFyaXNvbiwgYW5kIHVzZXJzIG9mIFtDb3JlXSBtaWdodCBoYXZlIGNvbWUgdG9cbiAgICAgZGVwZW5kIG9uIHRoaXMuXG4gICAtIFJvYnVzdG5lc3MgYXNpZGUsIHdoYXQgd2UgZ2V0IGZyb20gQ29tcGFyYWJsZS5XaXRoX3plcm8gd291bGQgbWFwIG5hbiB0byBOZWcuXG4qKVxubGV0IHNpZ24gPSByb2J1c3Rfc2lnblxuXG4oKiBTdGFuZGFyZCAxMiBzaWduaWZpY2FudCBkaWdpdHMsIGV4cG9uZW50aWFsIG5vdGF0aW9uIHVzZWQgYXMgbmVjZXNzYXJ5LCBndWFyYW50ZWVkIHRvXG4gICBiZSBhIHZhbGlkIE9DYW1sIGZsb2F0IGxleGVtLCBub3QgdG8gbG9vayBsaWtlIGFuIGludC4gKilcbmxldCB0b19zdHJpbmdfMTIgeCA9IHZhbGlkX2Zsb2F0X2xleGVtIChmb3JtYXRfZmxvYXQgXCIlLjEyZ1wiIHgpXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5mbG9hdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmxvYXRcbmxldCBnZW5fdW5pZm9ybV9leGNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF91bmlmb3JtX2V4Y2x1c2l2ZVxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9pbmNsdXNpdmVcbmxldCBnZW5fd2l0aG91dF9uYW4gPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3dpdGhvdXRfbmFuXG5sZXQgZ2VuX2Zpbml0ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfZmluaXRlXG5sZXQgZ2VuX3Bvc2l0aXZlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9zdHJpY3RseV9wb3NpdGl2ZVxubGV0IGdlbl9uZWdhdGl2ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfc3RyaWN0bHlfbmVnYXRpdmVcbmxldCBnZW5femVybyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgWmVyb1xubGV0IGdlbl9uYW4gPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIE5hblxubGV0IGdlbl9zdWJub3JtYWwgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIFN1Ym5vcm1hbFxubGV0IGdlbl9ub3JtYWwgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIE5vcm1hbFxubGV0IGdlbl9pbmZpbml0ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgSW5maW5pdGVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuSW50XG5cbiAgICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBoYXNoLCBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEJhc2UuSW50XG5pbmNsdWRlIEJhc2UuSW50XG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLkludClcblxuKCogVGhpcyBpcyBhbHJlYWR5IGRlZmluZWQgYnkgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8sIGJ1dCBTaWduLm9mX2ludCBpc1xuICAgbW9yZSBkaXJlY3QuICopXG5sZXQgc2lnbiA9IFNpZ24ub2ZfaW50XG5cbnR5cGUgdCA9IGludCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludFxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkludF9pbnRmfVtCYXNlLkludF9pbnRmXX0uICopXG5cbm1vZHVsZSB0eXBlIFJvdW5kID0gQmFzZS5JbnQuUm91bmRcblxubW9kdWxlIHR5cGUgU3RhYmxlID0gc2lnXG4gIG1vZHVsZSBWMSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFN0YWJsZV9jb21wYXJhYmxlLldpdGhfc3RhYmxlX3dpdG5lc3MuVjEgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBIZXhhYmxlID0gc2lnXG4gIHR5cGUgdFxuXG4gIG1vZHVsZSBIZXggOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHRvX3N0cmluZ19odW0gOiA/ZGVsaW1pdGVyOmNoYXIgLT4gdCAtPiBzdHJpbmdcbiAgZW5kXG5cbiAgKCpfIEVuc3VyZSB0aGF0IHRoaXMgbW9kdWxlIGlzIGFuIGV4dGVuc2lvbiBvZiBbQmFzZS5JbnQuSGV4YWJsZV0uICopXG4gIGluY2x1ZGUgQmFzZS5JbnQuSGV4YWJsZSB3aXRoIHR5cGUgdCA6PSB0IGFuZCBtb2R1bGUgSGV4IDo9IEhleFxuZW5kXG5cbm1vZHVsZSB0eXBlIEV4dGVuc2lvbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG4gIGluY2x1ZGUgSGV4YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBRdWlja2NoZWNrYWJsZS5TX2ludCB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU191bmJvdW5kZWQgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLkludC5TX3VuYm91bmRlZFxuICBpbmNsdWRlIEV4dGVuc2lvbiB3aXRoIHR5cGUgdCA6PSB0IHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuSW50LlNcbiAgaW5jbHVkZSBFeHRlbnNpb24gd2l0aCB0eXBlIHQgOj0gdCB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIEV4dGVuc2lvbl93aXRoX3N0YWJsZSA9IHNpZ1xuICBpbmNsdWRlIEV4dGVuc2lvblxuXG4gIG1vZHVsZSBTdGFibGUgOlxuICAgIFN0YWJsZSB3aXRoIHR5cGUgVjEudCA9IHQgYW5kIHR5cGUgVjEuY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5JbnQzMilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuSW50MzJcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50MzIpXG5cbnR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMlxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50MzJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDMyXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMl9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludDY0KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5JbnQ2NFxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5JbnQ2NClcblxudHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2NFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50NjRcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0X2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkludDY0fVtCYXNlLkludDY0XX0uICopXG5cbigqKiB7MiBJbnRlcmZhY2UgZnJvbSBCYXNlfSAqKVxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkludDY0XG5lbmRcblxuKCoqIHsyIEV4dGVuc2lvbnN9ICopXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlXG4gIEludF9pbnRmLkV4dGVuc2lvbiB3aXRoIHR5cGUgdCA6PSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQmluIDogQmluYWJsZTAuUyB3aXRoIHR5cGUgdCA6PSBCYXNlLkludDYzLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEJpbl9lbXVsYXRlZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUwLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChJbnQ2NClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLlcud3JhcF9leG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLlcudW53cmFwXG4gICAgICAgIGVuZClcbiAgZW5kXG5cbiAgdHlwZSAnYSBiaW5hYmxlID0gKG1vZHVsZSBCaW5hYmxlMC5TIHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgbGV0IGJpbmFibGVfb2ZfcmVwciA6IHR5cGUgYSBiLiAoYSwgYikgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIudCAtPiBiIGJpbmFibGUgPSBmdW5jdGlvblxuICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50IC0+IChtb2R1bGUgSW50KVxuICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50NjQgLT4gKG1vZHVsZSBCaW5fZW11bGF0ZWQpXG4gIDs7XG5cbiAgbGV0IGJpbmFibGUgOiBCYXNlLkludDYzLnQgYmluYWJsZSA9IGJpbmFibGVfb2ZfcmVwciBCYXNlLkludDYzLlByaXZhdGUucmVwclxuXG4gIGluY2x1ZGUgKHZhbCBiaW5hYmxlKVxuXG4gIGxldCBiaW5fc2hhcGVfdCA9IEJpbl9wcm90LlNoYXBlLmJpbl9zaGFwZV9pbnQ2M1xuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50NjMudCBbQEBkZXJpdmluZyBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICAgIGluY2x1ZGUgQmluXG5cbiAgICAgIGluY2x1ZGUgKFxuICAgICAgICBCYXNlLkludDYzIDpcbiAgICAgICAgICBCYXNlLkNvbXBhcmFibGUuU1xuICAgICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBCYXNlLkludDYzLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuICAgICAgKCogVGhpcyBzZXJpYWxpemF0aW9uIGlzIHN0YWJsZSwgc2luY2UgaXQgZWl0aGVyIGRlbGVnYXRlcyB0byBbaW50XSBvclxuICAgICAgICAgW0ludDYzX2VtdWxdLiAqKVxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQpXG4gIGVuZFxuZW5kXG5cbigqIFRoaXMgW2luY2x1ZGUgc3RydWN0XSBpcyByZXF1aXJlZCBiZWNhdXNlIGl0IGxldHMgdXMgc2hhZG93IFt0XSB3aGVuIHdlIGluY2x1ZGVcbiAgIFtCYXNlLkludDYzXSBsYXRlciBvbi4gKilcbmluY2x1ZGUgc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjMudFxuZW5kXG5cbmxldCB0eXBlcmVwX29mX3QgPSB0eXBlcmVwX29mX2ludDYzXG5sZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX2ludDYzXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludDYzKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgQmluXG4gICAgZW5kKVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyYWJsZS5Db21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gQmFzZS5JbnQ2M1xuaW5jbHVkZSBCYXNlLkludDYzXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLkludDYzKVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2M1xubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M19pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M19sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMFxuXG4gICgqKiBbdG9faW50NjNdIGFuZCBbb2ZfaW50NjNfZXhuXSBlbmNvZGUgW3RdIGZvciB1c2UgaW4gd2lyZSBwcm90b2NvbHM7IHRoZXkgYXJlXG4gICAgICBpbnRlbmRlZCB0byBhdm9pZCBhbGxvY2F0aW9uIG9uIDY0LWJpdCBtYWNoaW5lcyBhbmQgc2hvdWxkIGJlIGltcGxlbWVudGVkXG4gICAgICBlZmZpY2llbnRseS4gIFtvZl9pbnQ2M19leG4gKHRvX2ludDYzIHQpID0gdF0gZm9yIGFsbCBbdF07IFtvZl9pbnQ2M19leG5dIHJhaXNlcyBmb3JcbiAgICAgIGlucHV0cyBub3QgcHJvZHVjZWQgYnkgW3RvX2ludDYzXS4gKilcbiAgdmFsIHRvX2ludDYzIDogdCAtPiBJbnQ2My50XG5cbiAgdmFsIG9mX2ludDYzX2V4biA6IEludDYzLnQgLT4gdFxuZW5kXG5cbm1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMFxuXG4gICAgdmFsIHRvX2ludDYzIDogdCAtPiBJbnQ2My50XG4gICAgdmFsIG9mX2ludDYzX2V4biA6IEludDYzLnQgLT4gdFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIFN0YWJsZV93aXRuZXNzLkV4cG9ydFxuXG4gIG9wZW4gQmFzZS5FeHBvcnRcbiAgb3BlbiBCaW5fcHJvdC5TdGRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgWyVleHBlY3Qge3wgODZiYTVkZjc0N2VlYzgzN2YwYjM5MWRkNDlmMzNmOWUgfH1dXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFYxLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBWMS5jb21wYXJhdG9yXG4gICAgbGV0IGJpbl9uYW1lID0gXCJ1bml0X3YyXCJcblxuICAgIGxldCBfX2Jpbl9yZWFkX3RfXyAoXyA6IEJpbl9wcm90LkNvbW1vbi5idWYpIH5wb3NfcmVmIChfIDogaW50KSA9XG4gICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIGJpbl9uYW1lICFwb3NfcmVmXG4gICAgOztcblxuICAgIGxldCBiaW5fcmVhZF90IChfIDogQmluX3Byb3QuQ29tbW9uLmJ1ZikgfnBvc19yZWY6KF8gOiBpbnQgcmVmKSA9ICgpXG5cbiAgICBsZXQgYmluX3JlYWRlcl90ID1cbiAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3NoYXBlX3QgPSBCaW5fcHJvdC5TaGFwZS4oYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIGJpbl9uYW1lKSkgW11cbiAgICBsZXQgYmluX3NpemVfdCAoKSA9IDBcbiAgICBsZXQgYmluX3dyaXRlX3QgKF8gOiBCaW5fcHJvdC5Db21tb24uYnVmKSB+cG9zICgpID0gcG9zXG4gICAgbGV0IGJpbl93cml0ZXJfdCA9IHsgQmluX3Byb3QuVHlwZV9jbGFzcy5zaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG5cbiAgICBsZXQgYmluX3QgPVxuICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNoYXBlID0gYmluX3NoYXBlX3RcbiAgICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90XG4gICAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdFxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICBbJWV4cGVjdCB7fCBmZmJkMWEzMDdhNGY3ZWJlODAyMzA0MGZlY2ViZjY5NyB8fV1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuVW5pdClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5Vbml0XG5cbnR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci51bml0XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bml0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci51bml0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWcgZW5kXG5cbnR5cGUgbSA9IChtb2R1bGUgUylcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgb3BlbiBTZXhwbGliLlN0ZFxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgbGF6eV90XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCA9IEJhc2UuTGF6eS5tYXBcbiAgICBsZXQgY29tcGFyZSA9IEJhc2UuTGF6eS5jb21wYXJlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2VfbWFzayA9IG1vZHVsZSB0eXBlIG9mIEJhc2UuTGF6eSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBTdGFibGUuVjEudFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSAoQmFzZS5MYXp5IDogQmFzZV9tYXNrKVxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLk5hdGl2ZWludClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBCYXNlLk5hdGl2ZWludFxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5OYXRpdmVpbnQpXG5cbnR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5uYXRpdmVpbnRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm5hdGl2ZWludFxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50X3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLk5vdGhpbmcudCA9IHxcblxuICAgIG1vZHVsZSBTaGFwZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9zaGFwZV1cbiAgICBlbmRcblxuICAgIGxldCB1bnJlYWNoYWJsZV9jb2RlID0gQmFzZS5Ob3RoaW5nLnVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgYmluX3NoYXBlX3QgPSBTaGFwZS5iaW5fc2hhcGVfdFxuICAgIGxldCB0cF9sb2MgPSBbJWhlcmVdLnBvc19mbmFtZSBeIFwiLlN0YWJsZS5WMS50XCJcbiAgICBsZXQgYWxsID0gW11cbiAgICBsZXQgaGFzaF9mb2xkX3QgXyB0ID0gdW5yZWFjaGFibGVfY29kZSB0XG4gICAgbGV0IGhhc2ggPSB1bnJlYWNoYWJsZV9jb2RlXG4gICAgbGV0IGNvbXBhcmUgYSBfID0gdW5yZWFjaGFibGVfY29kZSBhXG4gICAgbGV0IGJpbl9zaXplX3QgPSB1bnJlYWNoYWJsZV9jb2RlXG4gICAgbGV0IGJpbl93cml0ZV90IF9idWYgfnBvczpfIHQgPSB1bnJlYWNoYWJsZV9jb2RlIHRcbiAgICBsZXQgYmluX3dyaXRlcl90ID0geyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cblxuICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmIF8gPVxuICAgICAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSB0cF9sb2MgIXBvc19yZWZcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9yZWFkX3QgX2J1ZiB+cG9zX3JlZiA9XG4gICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfcmVhZF9lcnJvciAoRW1wdHlfdHlwZSB0cF9sb2MpICFwb3NfcmVmXG4gICAgOztcblxuICAgIGxldCBiaW5fcmVhZGVyX3QgPVxuICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gICAgOztcblxuICAgIGxldCBiaW5fdCA9XG4gICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID0gYmluX3dyaXRlcl90XG4gICAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdFxuICAgICAgOyBzaGFwZSA9IGJpbl9zaGFwZV90XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgPSB1bnJlYWNoYWJsZV9jb2RlXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gU2V4cGxpYi5Db252X2Vycm9yLmVtcHR5X3R5cGUgdHBfbG9jIHNleHBcbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIEJhc2UuTm90aGluZ1xuaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kIChCYXNlLk5vdGhpbmcpIChTdGFibGUuVjEpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSBuZXZlcl9yZXR1cm5zID0gTm90aGluZy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBuZXZlcl9yZXR1cm5zID0gTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gQmFzZS5PcmRlcmluZy50ID1cbiAgfCBMZXNzXG4gIHwgRXF1YWxcbiAgfCBHcmVhdGVyXG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbm1vZHVsZSB0eXBlIEJhc2VfbWFzayA9IG1vZHVsZSB0eXBlIG9mIEJhc2UuT3JkZXJpbmcgd2l0aCB0eXBlIHQgOj0gdFxuXG5pbmNsdWRlIChCYXNlLk9yZGVyaW5nIDogQmFzZV9tYXNrKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLlJlZlxuXG4gIGluY2x1ZGUgKFxuICBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuICBlbmQgOlxuICBzaWdcbiAgICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFBlcm1pc3Npb25lZCA9IHN0cnVjdFxuICBpbmNsdWRlIFRcblxuICB0eXBlICgnYSwgLSdwZXJtcykgdCA9ICdhIFQudCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgbGV0IHJlYWRfb25seSA9IEZuLmlkXG4gIGxldCBvZl9yZWYgPSBGbi5pZFxuICBsZXQgdG9fcmVmID0gRm4uaWRcbiAgbGV0IHNldCA9ICggOj0gKVxuICBsZXQgZ2V0ID0gKCAhIClcbmVuZFxuIiwiKCogV2UgZG9uJ3QganVzdCBpbmNsdWRlIFNleHBsaWIuU3RkIGJlY2F1c2Ugb25lIGNhbiBvbmx5IGRlZmluZSBIYXNodGJsIG9uY2UgaW4gdGhpc1xuICAgbW9kdWxlLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuKCoqIFtpbmNsdWRlXWQgZmlyc3Qgc28gdGhhdCBldmVyeXRoaW5nIGVsc2Ugc2hhZG93cyBpdCAqKVxuaW5jbHVkZSBDb3JlX3BlcnZhc2l2ZXNcblxuaW5jbHVkZSBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcbmluY2x1ZGUgRGVwcmVjYXRlX3BpcGVfYmFuZ1xuaW5jbHVkZSBFaXRoZXIuRXhwb3J0XG5pbmNsdWRlIEZyb21fc2V4cGxpYlxuaW5jbHVkZSBJbnRlcmZhY2VzXG5pbmNsdWRlIExpc3QuSW5maXhcbmluY2x1ZGUgTmV2ZXJfcmV0dXJuc1xuaW5jbHVkZSBPcmRlcmluZy5FeHBvcnRcbmluY2x1ZGUgUGVybXMuRXhwb3J0XG5pbmNsdWRlIFJlc3VsdC5FeHBvcnRcblxudHlwZSAtJ2EgcmV0dXJuID0gJ2EgV2l0aF9yZXR1cm4ucmV0dXJuID0gcHJpdmF0ZSB7IHJldHVybiA6ICdiLiAnYSAtPiAnYiB9IFtAQHVuYm94ZWRdXG5cblxuKCoqIFJhaXNlZCBpZiBtYWxsb2MgaW4gQyBiaW5kaW5ncyBmYWlsIChlcnJubyAqIHNpemUpLiAqKVxuZXhjZXB0aW9uIENfbWFsbG9jX2V4biBvZiBpbnQgKiBpbnRcblxuKCogZXJybm8sIHNpemUgKilcbmxldCAoKSA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcIkNfbWFsbG9jX2V4blwiIChDX21hbGxvY19leG4gKDAsIDApKVxuXG5leGNlcHRpb24gRmluYWxseSA9IEV4bi5GaW5hbGx5XG5cbmxldCBmc3QzICh4LCBfLCBfKSA9IHhcbmxldCBzbmQzIChfLCB5LCBfKSA9IHlcbmxldCB0cmQzIChfLCBfLCB6KSA9IHpcblxuKCoqIFtwaHlzX3NhbWVdIGlzIGxpa2UgW3BoeXNfZXF1YWxdLCBidXQgd2l0aCBhIG1vcmUgZ2VuZXJhbCB0eXBlLiAgW3BoeXNfc2FtZV0gaXMgdXNlZnVsXG4gICAgd2hlbiBkZWFsaW5nIHdpdGggZXhpc3RlbnRpYWwgdHlwZXMsIHdoZW4gb25lIGhhcyBhIHBhY2tlZCB2YWx1ZSBhbmQgYW4gdW5wYWNrZWQgdmFsdWVcbiAgICB0aGF0IG9uZSB3YW50cyB0byBjaGVjayBhcmUgcGh5c2ljYWxseSBlcXVhbC4gIE9uZSBjYW4ndCB1c2UgW3BoeXNfZXF1YWxdIGluIHN1Y2ggYVxuICAgIHNpdHVhdGlvbiBiZWNhdXNlIHRoZSB0eXBlcyBhcmUgZGlmZmVyZW50LiAqKVxuZXh0ZXJuYWwgcGh5c19zYW1lIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2JbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcVwiXG5cbmxldCAoICUgKSA9IEludC4oICUgKVxubGV0ICggLyUgKSA9IEludC4oIC8lIClcbmxldCAoIC8vICkgPSBJbnQuKCAvLyApXG5sZXQgKCA9PT4gKSBhIGIgPSAobm90IGEpIHx8IGJcbmxldCBicHJpbnRmID0gUHJpbnRmLmJwcmludGZcbmxldCBjb25zdCA9IEZuLmNvbnN0XG5sZXQgZXByaW50ZiA9IFByaW50Zi5lcHJpbnRmXG5sZXQgZXJyb3IgPSBPcl9lcnJvci5lcnJvclxubGV0IGVycm9yX3MgPSBPcl9lcnJvci5lcnJvcl9zXG5sZXQgZmFpbHdpdGhmID0gQmFzZS5QcmludGYuZmFpbHdpdGhmXG5sZXQgZmFpbHdpdGhzID0gRXJyb3IuZmFpbHdpdGhzXG5sZXQgZm9yY2UgPSBCYXNlLkxhenkuZm9yY2VcbmxldCBmcHJpbnRmID0gUHJpbnRmLmZwcmludGZcbmxldCBpbnZhbGlkX2FyZ2YgPSBCYXNlLlByaW50Zi5pbnZhbGlkX2FyZ2ZcbmxldCBpZnByaW50ZiA9IFByaW50Zi5pZnByaW50ZlxubGV0IGlzX25vbmUgPSBPcHRpb24uaXNfbm9uZVxubGV0IGlzX3NvbWUgPSBPcHRpb24uaXNfc29tZVxubGV0IGtzcHJpbnRmID0gUHJpbnRmLmtzcHJpbnRmXG5sZXQgb2tfZXhuID0gT3JfZXJyb3Iub2tfZXhuXG5sZXQgcGh5c19lcXVhbCA9IEJhc2UucGh5c19lcXVhbFxubGV0IHByaW50X3MgPSBTdGRpby5wcmludF9zXG5sZXQgZXByaW50X3MgPSBTdGRpby5lcHJpbnRfc1xubGV0IHByaW50ZiA9IFByaW50Zi5wcmludGZcbmxldCBwcm90ZWN0ID0gRXhuLnByb3RlY3RcbmxldCBwcm90ZWN0eCA9IEV4bi5wcm90ZWN0eFxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5sZXQgcm91bmQgPSBGbG9hdC5yb3VuZFxubGV0ICggKiouICkgPSBCYXNlLiggKiouIClcbmxldCAoICUuICkgPSBCYXNlLiggJS4gKVxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5sZXQgc3RhZ2UgPSBTdGFnZWQuc3RhZ2VcbmxldCB1bnN0YWdlID0gU3RhZ2VkLnVuc3RhZ2VcbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5sZXQgd2l0aF9yZXR1cm5fb3B0aW9uID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5fb3B0aW9uXG5cbigqIFdpdGggdGhlIGZvbGxvd2luZyBhbGlhc2VzLCB3ZSBhcmUganVzdCBtYWtpbmcgZXh0cmEgc3VyZSB0aGF0IHRoZSB0b3BsZXZlbCBzZXhwXG4gICBjb252ZXJ0ZXJzIGxpbmUgdXAgd2l0aCB0aGUgb25lcyBpbiBvdXIgbW9kdWxlcy4gKilcblxuXG5pbmNsdWRlIFR5cGVyZXBfbGliLlN0ZF9pbnRlcm5hbFxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICAoKiBbZGVyaXZpbmcgaGFzaF0gaXMgbWlzc2luZyBmb3IgW2FycmF5XSwgW2J5dGVzXSwgYW5kIFtyZWZdIHNpbmNlIHRoZXNlIHR5cGVzIGFyZVxuICAgICBtdXRhYmxlLiAqKVxuICB0eXBlICdhIGFycmF5ID0gJ2EgQXJyYXkudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJvb2wgPSBCb29sLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBjaGFyID0gQ2hhci50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgZmxvYXQgPSBGbG9hdC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50ID0gSW50LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQzMiA9IEludDMyLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQ2NCA9IEludDY0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBsYXp5X3QgPSAnYSBMYXp5LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBsaXN0ID0gJ2EgTGlzdC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgbmF0aXZlaW50ID0gTmF0aXZlaW50LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBvcHRpb24gPSAnYSBPcHRpb24udFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHN0cmluZyA9IFN0cmluZy50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgYnl0ZXMgPSBCeXRlcy50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgcmVmID0gJ2EgUmVmLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSB1bml0ID0gVW5pdC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gICgqIEJpbl9wcm90IGhhcyBvcHRpbWl6ZWQgZnVuY3Rpb25zIGZvciBmbG9hdCBhcnJheXMgKilcbiAgaW5jbHVkZSBzdHJ1Y3RcbiAgICB0eXBlIGZsb2F0X2FycmF5ID0gZmxvYXQgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICBlbmQgW0BhbGVydCBcIi1kZXByZWNhdGVkXCJdXG5cbiAgaW5jbHVkZSAoXG4gIHN0cnVjdFxuICAgIHR5cGUgZmxvYXRfYXJyYXkgPSBGbG9hdC50IGFycmF5IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgZW5kIDpcbiAgc2lnXG4gICAgdHlwZSBmbG9hdF9hcnJheSBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIGVuZFxuICB3aXRoIHR5cGUgZmxvYXRfYXJyYXkgOj0gZmxvYXRfYXJyYXkpXG5lbmQgOlxuc2lnXG4gIHR5cGUgJ2EgYXJyYXlcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBib29sXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgY2hhclxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGZsb2F0XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50MzJcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQ2NFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIGxhenlfdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIGxpc3RcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBuYXRpdmVpbnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBvcHRpb25cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBzdHJpbmdcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBieXRlc1xuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIHJlZlxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHVuaXRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5lbmRcbndpdGggdHlwZSAnYSBhcnJheSA6PSAnYSBhcnJheVxud2l0aCB0eXBlIGJvb2wgOj0gYm9vbFxud2l0aCB0eXBlIGNoYXIgOj0gY2hhclxud2l0aCB0eXBlIGZsb2F0IDo9IGZsb2F0XG53aXRoIHR5cGUgaW50IDo9IGludFxud2l0aCB0eXBlIGludDMyIDo9IGludDMyXG53aXRoIHR5cGUgaW50NjQgOj0gaW50NjRcbndpdGggdHlwZSAnYSBsaXN0IDo9ICdhIGxpc3RcbndpdGggdHlwZSBuYXRpdmVpbnQgOj0gbmF0aXZlaW50XG53aXRoIHR5cGUgJ2Egb3B0aW9uIDo9ICdhIG9wdGlvblxud2l0aCB0eXBlIHN0cmluZyA6PSBzdHJpbmdcbndpdGggdHlwZSBieXRlcyA6PSBieXRlc1xud2l0aCB0eXBlICdhIGxhenlfdCA6PSAnYSBsYXp5X3RcbndpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmXG53aXRoIHR5cGUgdW5pdCA6PSB1bml0KVxuXG5sZXQgc2V4cF9vZl9leG4gPSBFeG4uc2V4cF9vZl90XG5cblxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxubW9kdWxlIFJlcHIgPSBJbnQ2M1xuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl0gW0BAaW1tZWRpYXRlNjRdXG5cbiAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIHZhbCBvZl9yZXByIDogUmVwci50IC0+IHRcbiAgdmFsIHRvX3JlcHIgOiB0IC0+IFJlcHIudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IFJlcHIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gIGxldCBvZl9yZXByID0gRm4uaWRcbiAgbGV0IHRvX3JlcHIgPSBGbi5pZFxuXG4gIGxldCB0b19zdHJpbmcgbiA9XG4gICAgbGV0IG9wZW4gUmVwciBpblxuICAgIGxldCBraWIgPSBvZl9pbnQgMTAyNCBpblxuICAgIGxldCBtaWIgPSBraWIgKiBraWIgaW5cbiAgICBsZXQgZ2liID0ga2liICogbWliIGluXG4gICAgbGV0IG5fYWJzID0gYWJzIG4gaW5cbiAgICBpZiBuX2FicyA8IGtpYlxuICAgIHRoZW4gc3ByaW50ZiBcIiVkQlwiICh0b19pbnRfZXhuIG4pXG4gICAgZWxzZSBpZiBuX2FicyA8IG1pYlxuICAgIHRoZW4gc3ByaW50ZiBcIiVnS1wiICh0b19mbG9hdCBuIC8uIHRvX2Zsb2F0IGtpYilcbiAgICBlbHNlIGlmIG5fYWJzIDwgZ2liXG4gICAgdGhlbiBzcHJpbnRmIFwiJWdNXCIgKHRvX2Zsb2F0IG4gLy4gdG9fZmxvYXQgbWliKVxuICAgIGVsc2Ugc3ByaW50ZiBcIiVnR1wiICh0b19mbG9hdCBuIC8uIHRvX2Zsb2F0IGdpYilcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IG4gPSBTZXhwLkF0b20gKHRvX3N0cmluZyBuKVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgYnl0ZXNfaW50X2V4biB0ID0gUmVwci50b19pbnRfZXhuICh0b19yZXByIHQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIEJpZ2FycmF5XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlX2JpZ3N0cmluZ1xuXG4gICAgbW9kdWxlIFogOiBzaWdcbiAgICAgIHR5cGUgdCA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYmlnc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgKCogYmlnc3RyaW5nJ3Mgc2VyaWFsaXphdGlvbiBpcyBpbnRlbmRlZCB0byBiZSBzdGFibGUuICBXZSBhc3NlcnQgaXQgaGVyZSByYXRoZXJcbiAgICAgICAgIHRoYW4gYXNzZXJ0aW5nIGl0IGluIHR3byBzZXBhcmF0ZSBwbGFjZXMgZm9yIHRoZSBiaW5faW8gYW5kIHNleHAgZGVmaW5pdGlvbnMuICopXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFpcblxuICAgIHR5cGUgdF9mcm96ZW4gPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUID0gU3RhYmxlLlYxXG5pbmNsdWRlIFRcbm1vZHVsZSBVbnN0YWJsZSA9IFRcblxubGV0IGNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djIHNpemUgPVxuICBsZXQgbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzID1cbiAgICBPcHRpb24ubWFwIG1heF9tZW1fd2FpdGluZ19nYyB+ZjpCeXRlX3VuaXRzMC5ieXRlc19pbnRfZXhuXG4gIGluXG4gIGNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIHNpemVcbjs7XG5cbmxldCBzdWJfc2hhcmVkID8ocG9zID0gMCkgP2xlbiAoYnN0ciA6IHQpID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIGJzdHIgfnBvcyBsZW4gaW5cbiAgQXJyYXkxLnN1YiBic3RyIHBvcyBsZW5cbjs7XG5cbigqIERlc3RydWN0aW9uICopXG5cbmV4dGVybmFsIHVuc2FmZV9kZXN0cm95IDogdCAtPiB1bml0ID0gXCJiaWdzdHJpbmdfZGVzdHJveV9zdHViXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2Rlc3Ryb3lfYW5kX3Jlc2l6ZSA6IHQgLT4gbGVuOmludCAtPiB0ID0gXCJiaWdzdHJpbmdfcmVhbGxvY1wiXG5cbigqIFJlYWRpbmcgLyB3cml0aW5nIGJpbi1wcm90ICopXG5cbmxldCByZWFkX2Jpbl9wcm90X3ZlcmJvc2VfZXJyb3JzIHQgPyhwb3MgPSAwKSA/bGVuIHJlYWRlciA9XG4gIGxldCBsZW4gPSBnZXRfb3B0X2xlbiB0IGxlbiB+cG9zIGluXG4gIGxldCBsaW1pdCA9IHBvcyArIGxlbiBpblxuICBjaGVja19hcmdzIH5sb2M6XCJyZWFkX2Jpbl9wcm90X3ZlcmJvc2VfZXJyb3JzXCIgdCB+cG9zIH5sZW47XG4gIGxldCBpbnZhbGlkX2RhdGEgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gICAgYEludmFsaWRfZGF0YSAoRXJyb3IuY3JlYXRlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG4gIGluXG4gIGxldCByZWFkIGJpbl9yZWFkZXIgfnBvcyB+bGVuID1cbiAgICBpZiBsZW4gPiBsaW1pdCAtIHBvc1xuICAgIHRoZW4gYE5vdF9lbm91Z2hfZGF0YVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHBvc19yZWYgPSByZWYgcG9zIGluXG4gICAgICBtYXRjaFxuICAgICAgICB0cnkgYE9rIChiaW5fcmVhZGVyIHQgfnBvc19yZWYpIHdpdGhcbiAgICAgICAgfCBleG4gLT4gYEludmFsaWRfZGF0YSAoRXJyb3Iub2ZfZXhuIGV4bilcbiAgICAgIHdpdGhcbiAgICAgIHwgYEludmFsaWRfZGF0YSBfIGFzIHggLT4geFxuICAgICAgfCBgT2sgcmVzdWx0IC0+XG4gICAgICAgIGxldCBleHBlY3RlZF9wb3MgPSBwb3MgKyBsZW4gaW5cbiAgICAgICAgaWYgIXBvc19yZWYgPSBleHBlY3RlZF9wb3NcbiAgICAgICAgdGhlbiBgT2sgKHJlc3VsdCwgZXhwZWN0ZWRfcG9zKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW52YWxpZF9kYXRhXG4gICAgICAgICAgICBcInBvc19yZWYgPD4gZXhwZWN0ZWRfcG9zXCJcbiAgICAgICAgICAgICghcG9zX3JlZiwgZXhwZWN0ZWRfcG9zKVxuICAgICAgICAgICAgWyVzZXhwX29mOiBpbnQgKiBpbnRdKVxuICBpblxuICBtYXRjaFxuICAgIHJlYWQgQmluX3Byb3QuVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgfnBvcyB+bGVuOkJpbl9wcm90LlV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aFxuICB3aXRoXG4gIHwgKGBOb3RfZW5vdWdoX2RhdGEgfCBgSW52YWxpZF9kYXRhIF8pIGFzIHggLT4geFxuICB8IGBPayAoZWxlbWVudF9sZW5ndGgsIHBvcykgLT5cbiAgICBpZiBlbGVtZW50X2xlbmd0aCA8IDBcbiAgICB0aGVuIGludmFsaWRfZGF0YSBcIm5lZ2F0aXZlIGVsZW1lbnQgbGVuZ3RoICVkXCIgZWxlbWVudF9sZW5ndGggWyVzZXhwX29mOiBpbnRdXG4gICAgZWxzZSByZWFkIHJlYWRlci5CaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgfnBvcyB+bGVuOmVsZW1lbnRfbGVuZ3RoXG47O1xuXG5sZXQgcmVhZF9iaW5fcHJvdCB0ID9wb3MgP2xlbiByZWFkZXIgPVxuICBtYXRjaCByZWFkX2Jpbl9wcm90X3ZlcmJvc2VfZXJyb3JzIHQgP3BvcyA/bGVuIHJlYWRlciB3aXRoXG4gIHwgYE9rIHggLT4gT2sgeFxuICB8IGBJbnZhbGlkX2RhdGEgZSAtPiBFcnJvciAoRXJyb3IudGFnIGUgfnRhZzpcIkludmFsaWQgZGF0YVwiKVxuICB8IGBOb3RfZW5vdWdoX2RhdGEgLT4gT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwibm90IGVub3VnaCBkYXRhXCJcbjs7XG5cbmxldCB3cml0ZV9iaW5fcHJvdF9rbm93bl9zaXplIHQgPyhwb3MgPSAwKSB3cml0ZSB+c2l6ZTpkYXRhX2xlbiB2ID1cbiAgbGV0IHRvdGFsX2xlbiA9IGRhdGFfbGVuICsgQmluX3Byb3QuVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gIGlmIHBvcyA8IDBcbiAgdGhlblxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQmlnc3RyaW5nLndyaXRlX2Jpbl9wcm90OiBuZWdhdGl2ZSBwb3NcIiBwb3MgWyVzZXhwX29mOiBpbnRdO1xuICBpZiBwb3MgKyB0b3RhbF9sZW4gPiBsZW5ndGggdFxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIkJpZ3N0cmluZy53cml0ZV9iaW5fcHJvdDogbm90IGVub3VnaCByb29tXCJcbiAgICAgIChgcG9zIHBvcywgYHBvc19hZnRlcl93cml0aW5nIChwb3MgKyB0b3RhbF9sZW4pLCBgYmlnc3RyaW5nX2xlbmd0aCAobGVuZ3RoIHQpKVxuICAgICAgWyVzZXhwX29mOlxuICAgICAgICBbIGBwb3Mgb2YgaW50IF0gKiBbIGBwb3NfYWZ0ZXJfd3JpdGluZyBvZiBpbnQgXSAqIFsgYGJpZ3N0cmluZ19sZW5ndGggb2YgaW50IF1dO1xuICBsZXQgcG9zX2FmdGVyX3NpemVfaGVhZGVyID0gQmluX3Byb3QuVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIHQgfnBvcyBkYXRhX2xlbiBpblxuICBsZXQgcG9zX2FmdGVyX2RhdGEgPSB3cml0ZSB0IH5wb3M6cG9zX2FmdGVyX3NpemVfaGVhZGVyIHYgaW5cbiAgaWYgcG9zX2FmdGVyX2RhdGEgLSBwb3MgPD4gdG90YWxfbGVuXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiQmlnc3RyaW5nLndyaXRlX2Jpbl9wcm90IGJ1ZyFcIlxuICAgICAgKCBgcG9zX2FmdGVyX2RhdGEgcG9zX2FmdGVyX2RhdGFcbiAgICAgICwgYHN0YXJ0X3BvcyBwb3NcbiAgICAgICwgYGJpbl9wcm90X3NpemVfaGVhZGVyX2xlbmd0aCBCaW5fcHJvdC5VdGlscy5zaXplX2hlYWRlcl9sZW5ndGhcbiAgICAgICwgYGRhdGFfbGVuIGRhdGFfbGVuXG4gICAgICAsIGB0b3RhbF9sZW4gdG90YWxfbGVuIClcbiAgICAgIFslc2V4cF9vZjpcbiAgICAgICAgWyBgcG9zX2FmdGVyX2RhdGEgb2YgaW50IF1cbiAgICAgICAgKiBbIGBzdGFydF9wb3Mgb2YgaW50IF1cbiAgICAgICAgKiBbIGBiaW5fcHJvdF9zaXplX2hlYWRlcl9sZW5ndGggb2YgaW50IF1cbiAgICAgICAgKiBbIGBkYXRhX2xlbiBvZiBpbnQgXVxuICAgICAgICAqIFsgYHRvdGFsX2xlbiBvZiBpbnQgXV07XG4gIHBvc19hZnRlcl9kYXRhXG47O1xuXG5sZXQgd3JpdGVfYmluX3Byb3QgdCA/cG9zICh3cml0ZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyKSB2ID1cbiAgbGV0IHNpemUgPSB3cml0ZXIuc2l6ZSB2IGluXG4gIHdyaXRlX2Jpbl9wcm90X2tub3duX3NpemUgdCA/cG9zIHdyaXRlci53cml0ZSB+c2l6ZSB2XG47O1xuXG4oKiBIZXggZHVtcCAqKVxuXG5pbmNsdWRlIEhleGR1bXAuT2ZfaW5kZXhhYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgZW5kKVxuXG5sZXQgcmVjIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1ZiB+bWluX3BvcyB+cG9zIH5jaGFyID1cbiAgbGV0IHBvcycgPSBwb3MgLSAxIGluXG4gIGlmIHBvcycgPj0gbWluX3BvcyAmJiBDaGFyLiggPSApIChnZXQgYnVmIHBvcycpIGNoYXJcbiAgdGhlbiBsYXN0X25vbm1hdGNoX3BsdXNfb25lIH5idWYgfm1pbl9wb3MgfnBvczpwb3MnIH5jaGFyXG4gIGVsc2UgcG9zXG47O1xuXG5sZXQgZ2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiAoKSA9XG4gIGxldCBkYXRhX2VuZCA9XG4gICAgbGFzdF9ub25tYXRjaF9wbHVzX29uZSB+YnVmOnQgfm1pbl9wb3M6cG9zIH5wb3M6KHBvcyArIGxlbikgfmNoYXI6cGFkZGluZ1xuICBpblxuICB0b19zdHJpbmcgdCB+cG9zIH5sZW46KGRhdGFfZW5kIC0gcG9zKVxuOztcblxubGV0IGdldF90YWlsX3BhZGRlZF9maXhlZF9zdHJpbmdfbG9jYWwgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKCkgPVxuICBcbiAgICAobGV0IGRhdGFfZW5kID1cbiAgICAgICBsYXN0X25vbm1hdGNoX3BsdXNfb25lIH5idWY6dCB+bWluX3Bvczpwb3MgfnBvczoocG9zICsgbGVuKSB+Y2hhcjpwYWRkaW5nXG4gICAgIGluXG4gICAgIGxldCBsZW4gPSBkYXRhX2VuZCAtIHBvcyBpblxuICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlX2xvY2FsIGxlbiBpblxuICAgICBUb19ieXRlcy5ibGl0IH5zcmM6dCB+c3JjX3Bvczpwb3MgfmRzdCB+ZHN0X3BvczowIH5sZW47XG4gICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuOztcblxubGV0W0Bjb2xkXSBzZXRfcGFkZGVkX2ZpeGVkX3N0cmluZ19mYWlsZWQgfmhlYWRfb3JfdGFpbCB+dmFsdWUgfmxlbiA9XG4gIFByaW50Zi5mYWlsd2l0aGZcbiAgICBcIkJpZ3N0cmluZy5zZXRfJXNfcGFkZGVkX2ZpeGVkX3N0cmluZzogJVMgaXMgbG9uZ2VyIHRoYW4gJWRcIlxuICAgIGhlYWRfb3JfdGFpbFxuICAgIChbJWdsb2JhbGl6ZTogc3RyaW5nXSB2YWx1ZSlcbiAgICBsZW5cbiAgICAoKVxuOztcblxubGV0IHNldF90YWlsX3BhZGRlZF9maXhlZF9zdHJpbmcgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKHZhbHVlIFtAbG9jYWxdKSA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCB2YWx1ZSBpblxuICBpZiBzbGVuID4gbGVuIHRoZW4gc2V0X3BhZGRlZF9maXhlZF9zdHJpbmdfZmFpbGVkIH5oZWFkX29yX3RhaWw6XCJ0YWlsXCIgfnZhbHVlIH5sZW47XG4gIEZyb21fc3RyaW5nLmJsaXQgfnNyYzp2YWx1ZSB+ZHN0OnQgfnNyY19wb3M6MCB+ZHN0X3Bvczpwb3MgfmxlbjpzbGVuO1xuICBmb3IgaSA9IHBvcyArIHNsZW4gdG8gcG9zICsgbGVuIC0gMSBkb1xuICAgIHNldCB0IGkgcGFkZGluZ1xuICBkb25lXG47O1xuXG5sZXQgcmVjIGZpcnN0X25vbm1hdGNoIH5idWYgfnBvcyB+bWF4X3BvcyB+Y2hhciA9XG4gIGlmIHBvcyA8PSBtYXhfcG9zICYmIENoYXIuKCA9ICkgKGdldCBidWYgcG9zKSBjaGFyXG4gIHRoZW4gZmlyc3Rfbm9ubWF0Y2ggfmJ1ZiB+cG9zOihJbnQuc3VjYyBwb3MpIH5tYXhfcG9zIH5jaGFyXG4gIGVsc2UgcG9zXG47O1xuXG5sZXQgc2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiAodmFsdWUgW0Bsb2NhbF0pID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHZhbHVlIGluXG4gIGlmIHNsZW4gPiBsZW4gdGhlbiBzZXRfcGFkZGVkX2ZpeGVkX3N0cmluZ19mYWlsZWQgfmhlYWRfb3JfdGFpbDpcImhlYWRcIiB+dmFsdWUgfmxlbjtcbiAgRnJvbV9zdHJpbmcuYmxpdCB+c3JjOnZhbHVlIH5kc3Q6dCB+c3JjX3BvczowIH5kc3RfcG9zOihwb3MgKyBsZW4gLSBzbGVuKSB+bGVuOnNsZW47XG4gIGZvciBpID0gcG9zIHRvIHBvcyArIGxlbiAtIHNsZW4gLSAxIGRvXG4gICAgc2V0IHQgaSBwYWRkaW5nXG4gIGRvbmVcbjs7XG5cbmxldCBnZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuICgpID1cbiAgbGV0IGRhdGFfYmVnaW4gPSBmaXJzdF9ub25tYXRjaCB+YnVmOnQgfnBvcyB+bWF4X3BvczoocG9zICsgbGVuIC0gMSkgfmNoYXI6cGFkZGluZyBpblxuICB0b19zdHJpbmcgdCB+cG9zOmRhdGFfYmVnaW4gfmxlbjoobGVuIC0gKGRhdGFfYmVnaW4gLSBwb3MpKVxuOztcblxubGV0IGdldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmdfbG9jYWwgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKCkgPVxuICBcbiAgICAobGV0IGRhdGFfYmVnaW4gPSBmaXJzdF9ub25tYXRjaCB+YnVmOnQgfnBvcyB+bWF4X3BvczoocG9zICsgbGVuIC0gMSkgfmNoYXI6cGFkZGluZyBpblxuICAgICBsZXQgbGVuID0gbGVuIC0gKGRhdGFfYmVnaW4gLSBwb3MpIGluXG4gICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGVfbG9jYWwgbGVuIGluXG4gICAgIFRvX2J5dGVzLmJsaXQgfnNyYzp0IH5zcmNfcG9zOmRhdGFfYmVnaW4gfmRzdCB+ZHN0X3BvczowIH5sZW47XG4gICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5iaWdzdHJpbmdcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmJpZ3N0cmluZ1xubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuYmlnc3RyaW5nXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluX3Byb3RcblxubW9kdWxlIFdyaXRlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgeyBzaXplIDogJ2EgU2l6ZS5zaXplclxuICAgIDsgd3JpdGUgOiAnYSBXcml0ZS53cml0ZXJcbiAgICB9XG5cbiAgbGV0IHRvX3N0cmluZyB0IHYgPVxuICAgIGxldCBsZW4gPSB0LnNpemUgdiBpblxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcuY3JlYXRlIGxlbiBpblxuICAgIGxldCBwb3MgPSB0LndyaXRlIGJ1ZiB+cG9zOjAgdiBpblxuICAgIGFzc2VydCAocG9zID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIGxldCBzdHIgPSBCaWdzdHJpbmcudG9fc3RyaW5nIGJ1ZiBpblxuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgc3RyXG4gIDs7XG5cbiAgbGV0IHRvX2J5dGVzIHQgdiA9XG4gICAgbGV0IGxlbiA9IHQuc2l6ZSB2IGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHBvcyA9IHQud3JpdGUgYnVmIH5wb3M6MCB2IGluXG4gICAgYXNzZXJ0IChwb3MgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgbGV0IHN0ciA9IEJpZ3N0cmluZy50b19ieXRlcyBidWYgaW5cbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmO1xuICAgIHN0clxuICA7O1xuZW5kXG5cbm1vZHVsZSBSZWFkZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIgPVxuICAgIHsgcmVhZCA6ICdhIFJlYWQucmVhZGVyXG4gICAgOyB2dGFnX3JlYWQgOiAoaW50IC0+ICdhKSBSZWFkLnJlYWRlclxuICAgIH1cblxuICBsZXQgb2Zfc3RyaW5nIHQgc3RyaW5nID1cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLm9mX3N0cmluZyBzdHJpbmcgaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IHYgPSB0LnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgYXNzZXJ0ICghcG9zX3JlZiA9IEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmO1xuICAgIHZcbiAgOztcblxuICBsZXQgb2ZfYnl0ZXMgdCBieXRlcyA9XG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5vZl9ieXRlcyBieXRlcyBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgdiA9IHQucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBhc3NlcnQgKCFwb3NfcmVmID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgdlxuICA7O1xuZW5kXG4iLCJtb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEJpbl9wcm90Lk1kNVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IHQgfD4gdG9faGV4IHw+IFN0cmluZy5zZXhwX29mX3RcbiAgbGV0IHRfb2Zfc2V4cCBzID0gcyB8PiBTdHJpbmcudF9vZl9zZXhwIHw+IG9mX2hleF9leG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuZW5kXG5cbmxldCBoYXNoX2ZvbGRfdCBhY2N1bSB0ID0gU3RyaW5nLmhhc2hfZm9sZF90IGFjY3VtIChULnRvX2JpbmFyeSB0KVxubGV0IGhhc2ggdCA9IFN0cmluZy5oYXNoIChULnRvX2JpbmFyeSB0KVxuXG5tb2R1bGUgQXNfYmluYXJ5X3N0cmluZyA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgbGV0IGhhc2hfZm9sZF90ID0gaGFzaF9mb2xkX3RcbiAgICAgIGxldCBoYXNoID0gaGFzaFxuICAgICAgbGV0IHNleHBfb2ZfdCB4ID0gU3RyaW5nLnNleHBfb2ZfdCAoVC50b19iaW5hcnkgeClcbiAgICAgIGxldCB0X29mX3NleHAgeCA9IFQub2ZfYmluYXJ5X2V4biAoU3RyaW5nLnRfb2Zfc2V4cCB4KVxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICAgICAgbGV0IHRvX2JpbmFibGUgPSBULnRvX2JpbmFyeVxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBULm9mX2JpbmFyeV9leG5cblxuICAgICAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICAgICAgICBtb2R1bGUgQmluYWJsZSA9IFN0cmluZy5TdGFibGUuVjFcblxuICAgICAgICAgIHR5cGUgdCA9IEJpbl9wcm90Lk1kNS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdHJpbmcuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgb2ZfYmluYWJsZVxuICAgICAgICAgIHRvX2JpbmFibGVcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChTdGFibGUuVjEpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU3RhYmxlLlYxKVxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCBoYXNoX2ZvbGRfdCA9IGhhc2hfZm9sZF90XG4gICAgbGV0IGhhc2ggPSBoYXNoXG4gICAgbGV0IHRvX2JpbmFibGUgPSBGbi5pZFxuICAgIGxldCBvZl9iaW5hYmxlID0gRm4uaWRcblxuICAgIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluX3Byb3QuTWQ1LlN0YWJsZS5WMVxuXG4gICAgICAgIHR5cGUgdCA9IEJpbl9wcm90Lk1kNS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgZW5kKVxuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICBCaW5fcHJvdC5NZDUuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzXG4gICAgICAgIG9mX2JpbmFibGVcbiAgICAgICAgdG9fYmluYWJsZVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBkaWdlc3Rfc3RyaW5nIHMgPSBNZDVfbGliLnN0cmluZyBzXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChTdGFibGUuVjEpXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFN0YWJsZS5WMSlcblxubGV0IGRpZ2VzdF9udW1fYnl0ZXMgPSAxNlxubGV0IHRvX2hleCA9IFQudG9faGV4XG5sZXQgZnJvbV9oZXggPSBULm9mX2hleF9leG5cbmxldCBvZl9oZXhfZXhuID0gVC5vZl9oZXhfZXhuXG5sZXQgb2ZfYmluYXJ5X2V4biA9IFQub2ZfYmluYXJ5X2V4blxubGV0IHRvX2JpbmFyeSA9IFQudG9fYmluYXJ5XG5sZXQgZGlnZXN0X3N0cmluZyA9IFN0YWJsZS5kaWdlc3Rfc3RyaW5nXG5sZXQgZGlnZXN0X2J5dGVzID0gTWQ1X2xpYi5ieXRlc1xuXG5leHRlcm5hbCBjYW1sX3N5c19vcGVuXG4gIDogIHN0cmluZ1xuICAtPiBTdGRsaWIub3Blbl9mbGFnIGxpc3RcbiAgLT4gcGVybTppbnRcbiAgLT4gaW50XG4gID0gXCJjYW1sX3N5c19vcGVuXCJcblxuZXh0ZXJuYWwgY2FtbF9zeXNfY2xvc2UgOiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9zeXNfY2xvc2VcIlxuZXh0ZXJuYWwgZGlnZXN0X2ZkX2Jsb2NraW5nIDogaW50IC0+IHN0cmluZyA9IFwiY29yZV9tZDVfZmRcIlxuXG5sZXQgZGlnZXN0X2ZpbGVfYmxvY2tpbmcgcGF0aCA9XG4gIG9mX2JpbmFyeV9leG5cbiAgICAoQmFzZS5FeG4ucHJvdGVjdHhcbiAgICAgICAoY2FtbF9zeXNfb3BlbiBwYXRoIFsgT3Blbl9yZG9ubHk7IE9wZW5fYmluYXJ5IF0gfnBlcm06MG8wMDApXG4gICAgICAgfmY6ZGlnZXN0X2ZkX2Jsb2NraW5nXG4gICAgICAgfmZpbmFsbHk6Y2FtbF9zeXNfY2xvc2UpXG47O1xuXG5sZXQgZmlsZSA9IGRpZ2VzdF9maWxlX2Jsb2NraW5nXG5cbmxldCBkaWdlc3RfY2hhbm5lbF9ibG9ja2luZ193aXRob3V0X3JlbGVhc2luZ19ydW50aW1lX2xvY2sgY2hhbm5lbCB+bGVuID1cbiAgb2ZfYmluYXJ5X2V4biAoU3RkbGliLkRpZ2VzdC5jaGFubmVsIGNoYW5uZWwgbGVuKVxuOztcblxubGV0IGNoYW5uZWwgY2hhbm5lbCBsZW4gPVxuICBkaWdlc3RfY2hhbm5lbF9ibG9ja2luZ193aXRob3V0X3JlbGVhc2luZ19ydW50aW1lX2xvY2sgY2hhbm5lbCB+bGVuXG47O1xuXG5sZXQgb3V0cHV0X2Jsb2NraW5nIHQgb2MgPSBTdGRsaWIuRGlnZXN0Lm91dHB1dCBvYyAodG9fYmluYXJ5IHQpXG5sZXQgb3V0cHV0IG9jIHQgPSBvdXRwdXRfYmxvY2tpbmcgdCBvY1xubGV0IGlucHV0X2Jsb2NraW5nIGljID0gb2ZfYmluYXJ5X2V4biAoU3RkbGliLkRpZ2VzdC5pbnB1dCBpYylcbmxldCBpbnB1dCA9IGlucHV0X2Jsb2NraW5nXG5sZXQgZGlnZXN0X3N1YmJ5dGVzID0gTWQ1X2xpYi5zdWJieXRlc1xubGV0IHN0cmluZyA9IGRpZ2VzdF9zdHJpbmdcbmxldCBieXRlcyA9IGRpZ2VzdF9ieXRlc1xubGV0IHN1YmJ5dGVzIHMgcG9zIGxlbiA9IGRpZ2VzdF9zdWJieXRlcyBzIH5wb3MgfmxlblxuXG5sZXQgZGlnZXN0X2Jpbl9wcm90IHdyaXRlciB2YWx1ZSA9XG4gIGRpZ2VzdF9zdHJpbmcgKENvcmVfYmluX3Byb3QuV3JpdGVyLnRvX3N0cmluZyB3cml0ZXIgdmFsdWUpXG47O1xuXG5leHRlcm5hbCBjX2RpZ2VzdF9zdWJiaWdzdHJpbmdcbiAgOiAgQmlnc3RyaW5nLnRcbiAgLT4gcG9zOmludFxuICAtPiBsZW46aW50XG4gIC0+IHJlczpCeXRlcy50XG4gIC0+IHVuaXRcbiAgPSBcImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmdcIlxuXG5sZXQgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiA9XG4gICgqIEl0J3MgbW9yZSBlZmZpY2llbnQgdG8gYWxsb2NhdGUgdGhlIHJlc3VsdCBvbiB0aGUgT0NhbWwgc2lkZSBhbmQgZGVjbGFyZSB0aGUgQ1xuICAgICBmdW5jdGlvbiBhcyBub2FsbG9jIHRoYW4gdG8gbGV0IHRoZSBDIGZ1bmN0aW9uIGFsbG9jYXRlLiAqKVxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGNfZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvcyB+bGVuIH5yZXM7XG4gIE1kNV9saWIudW5zYWZlX29mX2JpbmFyeVxuICAgIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnJlcylcbjs7XG5cbmxldCBkaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgfnBvc1xuICAgIH5sZW5cbiAgICB+dG90YWxfbGVuZ3RoOihCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gIHVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW5cbjs7XG5cbmxldCBkaWdlc3RfYmlnc3RyaW5nIGJ1ZiA9XG4gIHVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zOjAgfmxlbjooQmlnc3RyaW5nLmxlbmd0aCBidWYpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbmFibGVfaW50ZlxuaW5jbHVkZSBCaW5hYmxlMFxuXG4oKiBbb2Zfc3RyaW5nXSBhbmQgW3RvX3N0cmluZ10gY2FuJ3QgZ28gaW4gYmluYWJsZTAubWwgZHVlIHRvIGEgY3ljbGljIGRlcGVuZGVuY3kuICopXG5sZXQgb2Zfc3RyaW5nIG0gc3RyaW5nID0gb2ZfYmlnc3RyaW5nIG0gKEJpZ3N0cmluZy5vZl9zdHJpbmcgc3RyaW5nKVxubGV0IHRvX3N0cmluZyBtIHQgPSBCaWdzdHJpbmcudG9fc3RyaW5nICh0b19iaWdzdHJpbmcgbSB0KVxuIiwiKCogRnVuY3Rpb25zIGZvciBwYXJzaW5nIHRpbWUgem9uZSBkYXRhYmFzZSBmaWxlcyAoemljIGZpbGVzKS5cblxuICAgQSB0aW1lIHpvbmUgZmlsZSBjb25zaXN0cyAoY29uY2VwdHVhbGx5IC0gdGhlIHJlcHJlc2VudGF0aW9uIGlzIG1vcmVcbiAgIGNvbXBhY3QpIG9mIGFuIG9yZGVyZWQgbGlzdCBvZiAoVGltZS50ICogW2xvY2FsX3RpbWVfdHlwZV0pIHRoYXQgbWFya1xuICAgdGhlIGJvdW5kYXJpZXMgKG1hcmtlZCBmcm9tIHRoZSBlcG9jaCkgYXQgd2hpY2ggdmFyaW91cyB0aW1lIGFkanVzdG1lbnRcbiAgIHJlZ2ltZXMgYXJlIGluIGVmZmVjdC4gIFRoaXMgY2FuIGFsc28gYmUgdGhvdWdodCBvZiBhcyBicmVha2luZyBkb3duIGFsbFxuICAgdGltZSBwYXN0IHRoZSBlcG9jaCBpbnRvIHJhbmdlcyB3aXRoIGEgW2xvY2FsX3RpbWVfdHlwZV0gdGhhdCBkZXNjcmliZXMgdGhlXG4gICBvZmZzZXQgZnJvbSBHTVQgdG8gYXBwbHkgdG8gZWFjaCByYW5nZSB0byBnZXQgbG9jYWwgdGltZS5cbiopXG5cbm9wZW4gSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuaW5jbHVkZSBab25lX2ludGZcblxuZXhjZXB0aW9uIEludmFsaWRfZmlsZV9mb3JtYXQgb2Ygc3RyaW5nIFtAQGRlcml2aW5nIHNleHBdXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZ1bGxfZGF0YSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEluZGV4ID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgIGxldCBuZXh0ID0gSW50LnN1Y2NcbiAgICAgICAgbGV0IHByZXYgPSBJbnQucHJlZFxuICAgICAgICBsZXQgYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb24gPSAtMVxuXG4gICAgICAgICgqIFNvbWUgZXhpc3RpbmcgY2xpZW50cyBleHBlY3QgW2luZGV4ID49IDBdLCBzbyB3ZSBuZXZlciBzZXJpYWxpemUgYSBuZWdhdGl2ZVxuICAgICAgICAgICBpbmRleC4gVGhpcyBjb252ZXJzaW9uIGNhbiBiZSByZW1vdmVkIGlmIG5ldyBzdGFibGUgdmVyc2lvbnMgYXJlIG1pbnRlZC4gKilcbiAgICAgICAgbGV0IHRvX2V4dGVybmFsIHQgPSBtYXggMCB0XG5cbiAgICAgICAgKCogV2hlbiB0aGUgaW5kZXggb2YgYSB0aW1lIHpvbmUgd2l0aCBubyB0cmFuc2l0aW9ucyBpcyBjb252ZXJ0ZWQgdmlhIHRvX2V4dGVybmFsLFxuICAgICAgICAgICBpdHMgdmFsdWUgYmVjb21lcyAwIGV2ZW4gdGhvdWdoIGl0cyB0cmFuc2l0aW9uIGFycmF5IGlzIGVtcHR5IChhbmQgaXQgc2hvdWxkXG4gICAgICAgICAgIGhhdmUgYmVlbiAtMSkuIFdoZW4gdGhlIGNvbnZlcnRlZCB2YWx1ZSBpcyBjaGFuZ2VkIGJhY2sgdG8gYSBab25lLnQgdGhyb3VnaFxuICAgICAgICAgICBvZl9leHRlcm5hbCwgcmV0dXJuaW5nIHRoaXMgdmFsdWUgZm9yIGl0cyBpbmRleCBjb3VsZCByZXN1bHQgaW4gdW5zYWZlIGFycmF5XG4gICAgICAgICAgIGFjY2Vzc2VzIHRvIHRoZSB0cmFuc2l0aW9uIGFycmF5IG9mIHRoZSB6b25lIChzaW5jZSB0aGVyZSBpcyBubyB0cmFuc2l0aW9uIGF0XG4gICAgICAgICAgIGluZGV4IDApLiBBbHNvLCBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIGtlZXAgdGhlIGNvbnZlcnRlZCBpbmRleCBiZWNhdXNlIGl0XG4gICAgICAgICAgIGlzIGludGVuZGVkIHRvIGJlIGEgbXV0YWJsZSB2YWx1ZSB1c2VkIGZvciBjYWNoaW5nLiBTbyBvZl9leHRlcm5hbCBhbHdheXMgc2V0c1xuICAgICAgICAgICB0aGUgaW5kZXggdG8gLTEsIHdoaWNoIGlzIGEgc2FmZSB2YWx1ZS4gKilcbiAgICAgICAgbGV0IG9mX2V4dGVybmFsIChfIDogdCkgPSAtMVxuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBCaW5hYmxlLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgICAoSW50LlN0YWJsZS5WMSlcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19leHRlcm5hbFxuICAgICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2V4dGVybmFsXG4gICAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICAgIEludC5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICAgIG9mX2V4dGVybmFsXG4gICAgICAgICAgICB0b19leHRlcm5hbFxuICAgICAgICA7O1xuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBTZXhwYWJsZS5PZl9zZXhwYWJsZVxuICAgICAgICAgICAgKEludClcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fZXh0ZXJuYWxcbiAgICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2ZfZXh0ZXJuYWxcbiAgICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaW1lID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgeyB1dGNfb2Zmc2V0X2luX3NlY29uZHMgOiBJbnQ2My5TdGFibGUuVjEudFxuICAgICAgICAgIDsgaXNfZHN0IDogYm9vbFxuICAgICAgICAgIDsgYWJicnYgOiBzdHJpbmdcbiAgICAgICAgICB9XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcblxuICAgICAgKCogaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgd2hlbiBsZWFwIHNlY29uZHMgc2hvdWxkIGJlIGFwcGxpZWQgLSB1bnVzZWRcbiAgICAgICAgIGJlY2F1c2Ugd2UgYXJlIHRyYW5zbGF0aW5nIGJhc2VkIG9uIGEgZXBvY2ggc3lzdGVtIGNsb2NrIChzZWUgdGhlIENvcmVfem9uZVxuICAgICAgICAgZG9jdW1lbnRhdGlvbikuICopXG4gICAgICBtb2R1bGUgTGVhcF9zZWNvbmQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBzZWNvbmRzIDogaW50XG4gICAgICAgICAgfVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBUcmFuc2l0aW9uID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgeyBzdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggOiBJbnQ2My5TdGFibGUuVjEudFxuICAgICAgICAgIDsgbmV3X3JlZ2ltZSA6IFJlZ2ltZS50XG4gICAgICAgICAgfVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IG9yaWdpbmFsX2ZpbGVuYW1lIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7XG4gICAgICAgICAgZGlnZXN0IDogTWQ1LkFzX2JpbmFyeV9zdHJpbmcuU3RhYmxlLlYxLnQgb3B0aW9uXG4gICAgICAgIDsgdHJhbnNpdGlvbnMgOiBUcmFuc2l0aW9uLnQgYXJyYXlcbiAgICAgICAgOyAoKiBjYWNoZXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHRyYW5zaXRpb24gd2UgdXNlZCB0byBtYWtlIGxvb2t1cHMgZmFzdGVyICopXG4gICAgICAgICAgbXV0YWJsZSBsYXN0X3JlZ2ltZV9pbmRleCA6IEluZGV4LnRcbiAgICAgICAgOyBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA6IFJlZ2ltZS50XG4gICAgICAgIDsgbGVhcF9zZWNvbmRzIDogTGVhcF9zZWNvbmQudCBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICgqIHRoaXMgcmVsaWVzIG9uIHpvbmVzIHdpdGggdGhlIHNhbWUgbmFtZSBoYXZpbmcgdGhlIHNhbWUgdHJhbnNpdGlvbnMgKilcbiAgICAgIGxldCBjb21wYXJlIHQxIHQyID0gU3RyaW5nLmNvbXBhcmUgdDEubmFtZSB0Mi5uYW1lXG4gICAgICBsZXQgb3JpZ2luYWxfZmlsZW5hbWUgem9uZSA9IHpvbmUub3JpZ2luYWxfZmlsZW5hbWVcbiAgICAgIGxldCBkaWdlc3Qgem9uZSA9IHpvbmUuZGlnZXN0XG5cbiAgICAgIG1vZHVsZSBab25lX2ZpbGUgOiBzaWdcbiAgICAgICAgdmFsIGlucHV0X3R6X2ZpbGUgOiB6b25lbmFtZTpzdHJpbmcgLT4gZmlsZW5hbWU6c3RyaW5nIC0+IHRcbiAgICAgIGVuZCA9IHN0cnVjdFxuICAgICAgICBsZXQgYm9vbF9vZl9pbnQgaSA9IGkgPD4gMFxuXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludDMyID1cbiAgICAgICAgICBsZXQgbG9uZyA9IEJ5dGVzLmNyZWF0ZSA0IGluXG4gICAgICAgICAgbGV0IGludDMyX29mX2NoYXIgY2hyID0gSW50MzIub2ZfaW50X2V4biAoaW50X29mX2NoYXIgY2hyKSBpblxuICAgICAgICAgIGZ1biBpYyAtPlxuICAgICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWY6bG9uZyB+cG9zOjAgfmxlbjo0O1xuICAgICAgICAgICAgbGV0IHNiMSA9IEludDMyLnNoaWZ0X2xlZnQgKGludDMyX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nIDApKSAyNCBpblxuICAgICAgICAgICAgbGV0IHNiMiA9IEludDMyLnNoaWZ0X2xlZnQgKGludDMyX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nIDEpKSAxNiBpblxuICAgICAgICAgICAgbGV0IHNiMyA9IEludDMyLnNoaWZ0X2xlZnQgKGludDMyX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nIDIpKSA4IGluXG4gICAgICAgICAgICBsZXQgc2I0ID0gaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMykgaW5cbiAgICAgICAgICAgIEludDMyLmJpdF9vciAoSW50MzIuYml0X29yIHNiMSBzYjIpIChJbnQzMi5iaXRfb3Igc2IzIHNiNClcbiAgICAgICAgOztcblxuICAgICAgICAoKiBOb3RlIHRoYXQgdGhpcyBpcyBvbmx5IHNhZmUgdG8gdXNlIG9uIG51bWJlcnMgdGhhdCB3aWxsIGZpdCBpbnRvIGEgMzEtYml0XG4gICAgICAgICAgIGludC4gVU5JWCB0aW1lc3RhbXBzIHdvbid0LCBmb3IgZXhhbXBsZS4gIEluIG91ciBjYXNlIHRoaXMgaXMgb25seSB1c2VkXG4gICAgICAgICAgIHRvIGhvbGQgc21hbGwgbnVtYmVycyB0aGF0IGFyZSBuZXZlciBpbnRlcnByZXRlZCBhcyB0aW1lc3RhbXBzLiAqKVxuICAgICAgICBsZXQgaW5wdXRfbG9uZ19hc19pbnQgaWMgPSBJbnQzMi50b19pbnRfZXhuIChpbnB1dF9sb25nX2FzX2ludDMyIGljKVxuICAgICAgICBsZXQgaW5wdXRfbG9uZ19hc19pbnQ2MyBpYyA9IEludDYzLm9mX2ludDMyIChpbnB1dF9sb25nX2FzX2ludDMyIGljKVxuXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMgaWMgPVxuICAgICAgICAgIGxldCBpbnQ2M19vZl9jaGFyIGNociA9IEludDYzLm9mX2ludF9leG4gKGludF9vZl9jaGFyIGNocikgaW5cbiAgICAgICAgICBsZXQgc2hpZnQgYyBiaXRzID0gSW50NjMuc2hpZnRfbGVmdCAoaW50NjNfb2ZfY2hhciBjKSBiaXRzIGluXG4gICAgICAgICAgbGV0IGxvbmdfbG9uZyA9IEJ5dGVzLmNyZWF0ZSA4IGluXG4gICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWY6bG9uZ19sb25nIH5wb3M6MCB+bGVuOjg7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDApIDU2IGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDEpIDQ4KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyAyKSA0MCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMykgMzIpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDQpIDI0KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA1KSAxNikgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgNikgOCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoaW50NjNfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA3KSkgaW5cbiAgICAgICAgICByZXN1bHRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfbGlzdCBpYyB+bGVuIH5mID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgYyBsc3QgPVxuICAgICAgICAgICAgaWYgYyA+IDAgdGhlbiBsb29wIChjIC0gMSkgKGYgaWMgOjogbHN0KSBlbHNlIExpc3QucmV2IGxzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbG9vcCBsZW4gW11cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfYXJyYXkgaWMgfmxlbiB+ZiA9IEFycmF5Lm9mX2xpc3QgKGlucHV0X2xpc3QgaWMgfmxlbiB+ZilcblxuICAgICAgICBsZXQgaW5wdXRfcmVnaW1lIGljID1cbiAgICAgICAgICBsZXQgdXRjX29mZnNldF9pbl9zZWNvbmRzID0gaW5wdXRfbG9uZ19hc19pbnQ2MyBpYyBpblxuICAgICAgICAgIGxldCBpc19kc3QgPSBib29sX29mX2ludCAoT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSkgaW5cbiAgICAgICAgICBsZXQgYWJicnZfaW5kZXggPSBPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpIGluXG4gICAgICAgICAgbGV0IGx0IGFiYnJ2ID0geyBSZWdpbWUudXRjX29mZnNldF9pbl9zZWNvbmRzOyBpc19kc3Q7IGFiYnJ2IH0gaW5cbiAgICAgICAgICBsdCwgYWJicnZfaW5kZXhcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfYWJicmV2aWF0aW9ucyBpYyB+bGVuID1cbiAgICAgICAgICBsZXQgcmF3X2FiYnJ2cyA9XG4gICAgICAgICAgICBpbnB1dF9saXN0IGljIH5sZW4gfmY6KGZ1biBpYyAtPiBPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2NoYXIgaWMpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgICAgICAgbGV0IF8sIGluZGV4ZWRfYWJicnZzID1cbiAgICAgICAgICAgIExpc3QuZm9sZCByYXdfYWJicnZzIH5pbml0OigwLCBNYXAuUG9seS5lbXB0eSkgfmY6KGZ1biAoaW5kZXgsIGFiYnJ2cykgYyAtPlxuICAgICAgICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgICAgICAgfCAnXFwwMDAnIC0+XG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgICAgICAgICAgICAgbGV0IG5leHRfaW5kZXggPSBpbmRleCArIFN0cmluZy5sZW5ndGggZGF0YSArIDEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYWJicnZzID0gTWFwLnNldCBhYmJydnMgfmtleTppbmRleCB+ZGF0YSBpblxuICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICAgICAgICAgICAgbmV4dF9pbmRleCwgYWJicnZzXG4gICAgICAgICAgICAgIHwgYyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgYztcbiAgICAgICAgICAgICAgICBpbmRleCwgYWJicnZzKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBidWYgPD4gMFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChJbnZhbGlkX2ZpbGVfZm9ybWF0XG4gICAgICAgICAgICAgICAgIFwibWlzc2luZyBcXDAwMCB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIgaW4gaW5wdXRfYWJicmV2aWF0aW9uc1wiKTtcbiAgICAgICAgICBpbmRleGVkX2FiYnJ2c1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF90el9maWxlX2dlbiB+aW5wdXRfdHJhbnNpdGlvbiB+aW5wdXRfbGVhcF9zZWNvbmQgaWMgPVxuICAgICAgICAgIGxldCB1dGNfbG9jYWxfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCBzdGRfd2FsbF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IGxlYXBfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9uX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgdHlwZV9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IGFiYnJ2X2NoYXJfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9uX3RpbWVzID1cbiAgICAgICAgICAgIGlucHV0X2xpc3QgaWMgfmY6aW5wdXRfdHJhbnNpdGlvbiB+bGVuOnRyYW5zaXRpb25fY291bnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9uX2luZGljZXMgPVxuICAgICAgICAgICAgaW5wdXRfbGlzdFxuICAgICAgICAgICAgICBpY1xuICAgICAgICAgICAgICB+ZjooZnVuIGljIC0+IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykpXG4gICAgICAgICAgICAgIH5sZW46dHJhbnNpdGlvbl9jb3VudFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlZ2ltZXMgPSBpbnB1dF9saXN0IGljIH5mOmlucHV0X3JlZ2ltZSB+bGVuOnR5cGVfY291bnQgaW5cbiAgICAgICAgICBsZXQgYWJicmV2aWF0aW9ucyA9IGlucHV0X2FiYnJldmlhdGlvbnMgaWMgfmxlbjphYmJydl9jaGFyX2NvdW50IGluXG4gICAgICAgICAgbGV0IGxlYXBfc2Vjb25kcyA9IGlucHV0X2xpc3QgaWMgfmY6aW5wdXRfbGVhcF9zZWNvbmQgfmxlbjpsZWFwX2NvdW50IGluXG4gICAgICAgICAgKCogVGhlIGZvbGxvd2luZyB0d28gYXJyYXlzIGluZGljYXRlIHR3byBib29sZWFuIHZhbHVlcyBwZXIgcmVnaW1lIHRoYXRcbiAgICAgICAgICAgICByZXByZXNlbnQgYSB0aHJlZS12YWx1ZSB0eXBlIHRoYXQgd291bGQgdHJhbnNsYXRlIHRvOlxuXG4gICAgICAgICAgICAgdHlwZSB0cmFuc2l0aW9uX3R5cGUgPSBVVEMgfCBTdGFuZGFyZCB8IFdhbGxfY2xvY2tcblxuICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZXNlIGFyZSBvbmx5IHVzZWQgYnkgdGhlIHN5c3RlbSBsaWJyYXJ5IHdoZW4gaGFuZGxpbmcgdGhlIGNhc2Ugd2hlcmUgdGhlXG4gICAgICAgICAgICAgVFogdmFyaWFibGUgaXMgc2V0LCBub3QgdG8gYSB0aW1lIHpvbmUgbmFtZSwgYnV0IGluc3RlYWQgaXMgb2YgdGhlIGZvcm06XG5cbiAgICAgICAgICAgICBUWiA9IFwic3RkIG9mZnNldCBkc3Qgb2Zmc2V0LCBydWxlXCJcblxuICAgICAgICAgICAgIFdoaWNoIGlzIGRlZXBseSBvYnNjdXJlLCBhbmQgYWxtb3N0IGNlcnRhaW5seSBhIG1pc3Rha2UgdG8gdXNlLiAgVGhpcyBsaWJyYXJ5IG1ha2VzXG4gICAgICAgICAgICAgbm8gcHJldGVuc2UgYWJvdXQgaGFuZGxpbmcgdGhpcyBjYXNlLiAgV2UgY29udGludWUgdG8gcmVhZCB0aGVtIGluIGZvclxuICAgICAgICAgICAgIGNvbXBsZXRlbmVzcywgYW5kIGJlY2F1c2UgaXQncyBwb3NzaWJsZSB0aGF0IHdlIHdpbGwgbGF0ZXIgZGlzY292ZXIgYSBjYXNlIHdoZXJlXG4gICAgICAgICAgICAgdGhleSBhcmUgdXNlZC4gKilcbiAgICAgICAgICBsZXQgX3N0ZF93YWxsX2luZGljYXRvcnMgPVxuICAgICAgICAgICAgaW5wdXRfYXJyYXkgaWMgfmxlbjpzdGRfd2FsbF9jb3VudCB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBfdXRjX2xvY2FsX2luZGljYXRvcnMgPVxuICAgICAgICAgICAgaW5wdXRfYXJyYXkgaWMgfmxlbjp1dGNfbG9jYWxfY291bnQgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgICBib29sX29mX2ludCAoT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVnaW1lcyA9XG4gICAgICAgICAgICBBcnJheS5vZl9saXN0XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCByZWdpbWVzIH5mOihmdW4gKGx0LCBhYmJydl9pbmRleCkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGFiYnJ2ID0gTWFwLmZpbmRfZXhuIGFiYnJldmlhdGlvbnMgYWJicnZfaW5kZXggaW5cbiAgICAgICAgICAgICAgICAgbHQgYWJicnYpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJhd190cmFuc2l0aW9ucyA9XG4gICAgICAgICAgICBMaXN0Lm1hcDJfZXhuIHRyYW5zaXRpb25fdGltZXMgdHJhbnNpdGlvbl9pbmRpY2VzIH5mOihmdW4gdGltZSBpbmRleCAtPlxuICAgICAgICAgICAgICBsZXQgcmVnaW1lID0gcmVnaW1lcy4oaW5kZXgpIGluXG4gICAgICAgICAgICAgIHRpbWUsIHJlZ2ltZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cmFuc2l0aW9ucyA9XG4gICAgICAgICAgICBsZXQgcmVjIG1ha2VfdHJhbnNpdGlvbnMgYWNjIGwgPVxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiBBcnJheS5vZl9saXN0IChMaXN0LnJldiBhY2MpXG4gICAgICAgICAgICAgIHwgKHN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCwgbmV3X3JlZ2ltZSkgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIG1ha2VfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICAgICAgICh7IFRyYW5zaXRpb24uc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoOyBuZXdfcmVnaW1lIH0gOjogYWNjKVxuICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1ha2VfdHJhbnNpdGlvbnMgW10gcmF3X3RyYW5zaXRpb25zXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgPVxuICAgICAgICAgICAgbWF0Y2ggQXJyYXkuZmluZCByZWdpbWVzIH5mOihmdW4gciAtPiBub3Qgci5SZWdpbWUuaXNfZHN0KSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmVnaW1lcy4oMClcbiAgICAgICAgICAgIHwgU29tZSBsdHQgLT4gbHR0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBmdW4gbmFtZSB+b3JpZ2luYWxfZmlsZW5hbWUgfmRpZ2VzdCAtPlxuICAgICAgICAgICAgeyBuYW1lXG4gICAgICAgICAgICA7IG9yaWdpbmFsX2ZpbGVuYW1lID0gU29tZSBvcmlnaW5hbF9maWxlbmFtZVxuICAgICAgICAgICAgOyBkaWdlc3QgPSBTb21lIGRpZ2VzdFxuICAgICAgICAgICAgOyB0cmFuc2l0aW9uc1xuICAgICAgICAgICAgOyBsYXN0X3JlZ2ltZV9pbmRleCA9IEluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG4gICAgICAgICAgICA7IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlXG4gICAgICAgICAgICA7IGxlYXBfc2Vjb25kc1xuICAgICAgICAgICAgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9sZWFwX3NlY29uZF9nZW4gfmlucHV0X2xlYXBfc2Vjb25kIGljID1cbiAgICAgICAgICBsZXQgdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoID0gaW5wdXRfbGVhcF9zZWNvbmQgaWMgaW5cbiAgICAgICAgICBsZXQgc2Vjb25kcyA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgeyBMZWFwX3NlY29uZC50aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2g7IHNlY29uZHMgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWFkX2hlYWRlciBpYyA9XG4gICAgICAgICAgbGV0IG1hZ2ljID1cbiAgICAgICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgNCBpblxuICAgICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWYgfnBvczowIH5sZW46NDtcbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBub3QgKFN0cmluZy5lcXVhbCBtYWdpYyBcIlRaaWZcIilcbiAgICAgICAgICB0aGVuIHJhaXNlIChJbnZhbGlkX2ZpbGVfZm9ybWF0IFwibWFnaWMgY2hhcmFjdGVycyBUWmlmIG5vdCBwcmVzZW50XCIpO1xuICAgICAgICAgIGxldCB2ZXJzaW9uID1cbiAgICAgICAgICAgIG1hdGNoIEluX2NoYW5uZWwuaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgJ1xcMDAwJyAtPiBgVjFcbiAgICAgICAgICAgIHwgU29tZSAnMicgLT4gYFYyXG4gICAgICAgICAgICB8IFNvbWUgJzMnIC0+IGBWM1xuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChJbnZhbGlkX2ZpbGVfZm9ybWF0IFwiZXhwZWN0ZWQgdmVyc2lvbiwgZm91bmQgbm90aGluZ1wiKVxuICAgICAgICAgICAgfCBTb21lIGJhZF92ZXJzaW9uIC0+XG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2ZpbGVfZm9ybWF0IChzcHJpbnRmIFwidmVyc2lvbiAoJWMpIGlzIGludmFsaWRcIiBiYWRfdmVyc2lvbikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBzcGFjZSByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSBpbiB0aGUgZm9ybWF0ICopXG4gICAgICAgICAgSW5fY2hhbm5lbC5yZWFsbHlfaW5wdXRfZXhuIGljIH5idWY6KEJ5dGVzLmNyZWF0ZSAxNSkgfnBvczowIH5sZW46MTU7XG4gICAgICAgICAgdmVyc2lvblxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF90el9maWxlX3YxIGljID1cbiAgICAgICAgICBsZXQgaW5wdXRfbGVhcF9zZWNvbmQgPVxuICAgICAgICAgICAgaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIH5pbnB1dF9sZWFwX3NlY29uZDppbnB1dF9sb25nX2FzX2ludDYzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbnB1dF90el9maWxlX2dlbiB+aW5wdXRfdHJhbnNpdGlvbjppbnB1dF9sb25nX2FzX2ludDYzIH5pbnB1dF9sZWFwX3NlY29uZCBpY1xuICAgICAgICA7O1xuXG4gICAgICAgICgqXG4gICAgICAgICAgIHZlcnNpb24gMiB0aW1lem9uZSBmaWxlcyBoYXZlIHRoZSBmb3JtYXQ6XG5cbiAgICAgICAgICAgcGFydCAxIC0gZXhhY3RseSB0aGUgc2FtZSBhcyB2MVxuXG4gICAgICAgICAgIHBhcnQgMiAtIHNhbWUgZm9ybWF0IGFzIHYxLCBleGNlcHQgdGhhdCA4IGJ5dGVzIGFyZSB1c2VkIHRvIHN0b3JlXG4gICAgICAgICAgIHRyYW5zaXRpb24gdGltZXMgYW5kIGxlYXAgc2Vjb25kc1xuXG4gICAgICAgICAgIHBhcnQgMyAtIGEgbmV3bGluZS1lbmNsb2RlZCwgUE9TSVgtVFotZW52aXJvbm1lbnQtdmFyaWFibGUtc3R5bGVcbiAgICAgICAgICAgc3RyaW5nIGZvciB1c2UgaW4gaGFuZGxpbmcgaW5zdGFudHMgYWZ0ZXIgdGhlIGxhc3QgdHJhbnNpdGlvbiB0aW1lXG4gICAgICAgICAgIHN0b3JlZCBpbiB0aGUgZmlsZSAod2l0aCBub3RoaW5nIGJldHdlZW4gdGhlIG5ld2xpbmVzIGlmIHRoZXJlIGlzIG5vXG4gICAgICAgICAgIFBPU0lYIHJlcHJlc2VudGF0aW9uIGZvciBzdWNoIGluc3RhbnRzKVxuXG4gICAgICAgICAgIFdlIGhhbmRsZSBmaWxlcyBpbiB0aGlzIGZvcm1hdCBieSBwYXJzaW5nIHRoZSBmaXJzdCBwYXJ0IGV4YWN0bHkgYXMgYSB2MVxuICAgICAgICAgICB0aW1lem9uZSBmaWxlIGFuZCB0aGVuIGNvbnRpbnVpbmcgdG8gcGFyc2Ugd2l0aCA2NGJpdCByZWFkaW5nIGZ1bmN0aW9ucyBpbiB0aGVcbiAgICAgICAgICAgcmlnaHQgcGxhY2VzLlxuXG4gICAgICAgICAgIFZlcnNpb24gMyB0aW1lem9uZSBmaWxlcyBhcmUgdGhlIHNhbWUgYXMgdmVyc2lvbiAyLCBleGNlcHQgdGhlXG4gICAgICAgICAgIFBPU0lYLVRaLWVudmlyb25tZW50LXZhcmlhYmxlLXN0eWxlIHN0cmluZyBpbiBwYXJ0IDMgbWF5IHVzZSB0d28gbWlub3JcbiAgICAgICAgICAgZXh0ZW5zaW9ucyB0byB0aGUgUE9TSVggVFogZm9ybWF0ICh0aGUgaG91cnMgcGFydCBvZiBpdHMgdHJhbnNpdGlvblxuICAgICAgICAgICB0aW1lcyBtYXkgYmUgc2lnbmVkIGFuZCByYW5nZSBmcm9tIC0xNjcgdGhyb3VnaCAxNjcgaW5zdGVhZCBvZiB0aGVcbiAgICAgICAgICAgUE9TSVgtcmVxdWlyZWQgdW5zaWduZWQgdmFsdWVzIGZyb20gMCB0aHJvdWdoIDI0OyBhbmQgRFNUIGlzIGluIGVmZmVjdCBhbGxcbiAgICAgICAgICAgeWVhciBpZiBpdCBzdGFydHMgSmFudWFyeSAxIGF0IDAwOjAwIGFuZCBlbmRzIERlY2VtYmVyIDMxIGF0IDI0OjAwIHBsdXMgdGhlXG4gICAgICAgICAgIGRpZmZlcmVuY2UgYmV0d2VlbiBkYXlsaWdodCBzYXZpbmcgYW5kIHN0YW5kYXJkIHRpbWUpLlxuXG4gICAgICAgICAgIEFzIHdlIGRvbid0IGFjdHVhbGx5IGRvIGFueXRoaW5nIHdpdGggcGFydCAzIGFueXdheSwgd2UgY2FuIGp1c3QgcmVhZCB2M1xuICAgICAgICAgICBmaWxlcyBhcyB2Mi5cbiAgICAgICAgKilcbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfdjJfb3JfdjMgfnZlcnNpb24gaWMgPVxuICAgICAgICAgIGxldCAoXyA6IHN0cmluZyAtPiBvcmlnaW5hbF9maWxlbmFtZTpzdHJpbmcgLT4gZGlnZXN0Ok1kNV9saWIudCAtPiB0KSA9XG4gICAgICAgICAgICBpbnB1dF90el9maWxlX3YxIGljXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiB0aGUgaGVhZGVyIGlzIGZ1bGx5IHJlcGVhdGVkICopXG4gICAgICAgICAgYXNzZXJ0IChbJWNvbXBhcmUuZXF1YWw6IFsgYFYxIHwgYFYyIHwgYFYzIF1dIChyZWFkX2hlYWRlciBpYykgdmVyc2lvbik7XG4gICAgICAgICAgbGV0IGlucHV0X2xlYXBfc2Vjb25kID1cbiAgICAgICAgICAgIGlucHV0X2xlYXBfc2Vjb25kX2dlbiB+aW5wdXRfbGVhcF9zZWNvbmQ6aW5wdXRfbG9uZ19sb25nX2FzX2ludDYzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbnB1dF90el9maWxlX2dlblxuICAgICAgICAgICAgfmlucHV0X3RyYW5zaXRpb246aW5wdXRfbG9uZ19sb25nX2FzX2ludDYzXG4gICAgICAgICAgICB+aW5wdXRfbGVhcF9zZWNvbmRcbiAgICAgICAgICAgIGljXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGUgfnpvbmVuYW1lIH5maWxlbmFtZSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBwcm90ZWN0eCAoSW5fY2hhbm5lbC5jcmVhdGUgZmlsZW5hbWUpIH5maW5hbGx5OkluX2NoYW5uZWwuY2xvc2UgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgICBsZXQgbWFrZV96b25lID1cbiAgICAgICAgICAgICAgICBtYXRjaCByZWFkX2hlYWRlciBpYyB3aXRoXG4gICAgICAgICAgICAgICAgfCBgVjEgLT4gaW5wdXRfdHpfZmlsZV92MSBpY1xuICAgICAgICAgICAgICAgIHwgKGBWMiB8IGBWMykgYXMgdmVyc2lvbiAtPiBpbnB1dF90el9maWxlX3YyX29yX3YzIH52ZXJzaW9uIGljXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkaWdlc3QgPSBNZDUuZGlnZXN0X2ZpbGVfYmxvY2tpbmcgZmlsZW5hbWUgaW5cbiAgICAgICAgICAgICAgbGV0IHIgPSBtYWtlX3pvbmUgem9uZW5hbWUgfm9yaWdpbmFsX2ZpbGVuYW1lOmZpbGVuYW1lIH5kaWdlc3QgaW5cbiAgICAgICAgICAgICAgcilcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBJbnZhbGlkX2ZpbGVfZm9ybWF0IHJlYXNvbiAtPlxuICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgKHNwcmludGYgXCIlcyAtICVzXCIgZmlsZW5hbWUgcmVhc29uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgb2ZfdXRjX29mZnNldF9leHBsaWNpdF9uYW1lIH5uYW1lIH5ob3VyczpvZmZzZXQgPVxuICAgICAgICBhc3NlcnQgKG9mZnNldCA+PSAtMjQgJiYgb2Zmc2V0IDw9IDI0KTtcbiAgICAgICAgbGV0IHV0Y19vZmZzZXRfaW5fc2Vjb25kcyA9IEludDYzLm9mX2ludCAob2Zmc2V0ICogNjAgKiA2MCkgaW5cbiAgICAgICAgeyBuYW1lXG4gICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgPSBOb25lXG4gICAgICAgIDsgZGlnZXN0ID0gTm9uZVxuICAgICAgICA7IHRyYW5zaXRpb25zID0gW3x8XVxuICAgICAgICA7IGxhc3RfcmVnaW1lX2luZGV4ID0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cbiAgICAgICAgOyBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA9XG4gICAgICAgICAgICB7IFJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHM7IGlzX2RzdCA9IGZhbHNlOyBhYmJydiA9IG5hbWUgfVxuICAgICAgICA7IGxlYXBfc2Vjb25kcyA9IFtdXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl91dGNfb2Zmc2V0IH5ob3VyczpvZmZzZXQgPVxuICAgICAgICBsZXQgbmFtZSA9XG4gICAgICAgICAgaWYgb2Zmc2V0ID0gMFxuICAgICAgICAgIHRoZW4gXCJVVENcIlxuICAgICAgICAgIGVsc2Ugc3ByaW50ZiBcIlVUQyVzJWRcIiAoaWYgb2Zmc2V0IDwgMCB0aGVuIFwiLVwiIGVsc2UgXCIrXCIpIChhYnMgb2Zmc2V0KVxuICAgICAgICBpblxuICAgICAgICBvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUgfm5hbWUgfmhvdXJzOm9mZnNldFxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuRnVsbF9kYXRhLlYxXG5cbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSB0Lm5hbWVcblxubGV0IGxpa2VseV9tYWNoaW5lX3pvbmVzID1cbiAgcmVmIFsgXCJBbWVyaWNhL05ld19Zb3JrXCI7IFwiRXVyb3BlL0xvbmRvblwiOyBcIkFzaWEvSG9uZ19Lb25nXCI7IFwiQW1lcmljYS9DaGljYWdvXCIgXVxuOztcblxubGV0IGlucHV0X3R6X2ZpbGUgPSBab25lX2ZpbGUuaW5wdXRfdHpfZmlsZVxubGV0IHV0YyA9IG9mX3V0Y19vZmZzZXQgfmhvdXJzOjBcbmxldCBuYW1lIHpvbmUgPSB6b25lLm5hbWVcbmxldCByZXNldF90cmFuc2l0aW9uX2NhY2hlIHQgPSB0Lmxhc3RfcmVnaW1lX2luZGV4IDwtIEluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG5cbigqIFJhaXNlcyBpZiBbaW5kZXggPj0gQXJyYXkubGVuZ3RoIHQudHJhbnNpdGlvbnNdICopXG5sZXQgZ2V0X3JlZ2ltZV9leG4gdCBpbmRleCA9XG4gIGlmIGluZGV4IDwgMCB0aGVuIHQuZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgZWxzZSB0LnRyYW5zaXRpb25zLihpbmRleCkubmV3X3JlZ2ltZVxuOztcblxuKCogSW4gXCJhYnNvbHV0ZSBtb2RlXCIsIGEgbnVtYmVyIG9mIHNlY29uZHMgaXMgaW50ZXJwcmV0ZWQgYXMgYW4gb2Zmc2V0IG9mIHRoYXQgbWFueVxuICAgc2Vjb25kcyBmcm9tIHRoZSBVTklYIGVwb2NoLCBpZ25vcmluZyBsZWFwIHNlY29uZHMuXG5cbiAgIEluIFwiZGF0ZSBhbmQgb2ZkYXkgbW9kZVwiLCB5b3UgaW50ZXJwcmV0IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBhcyBhIG51bWJlciBvZiBkYXlzIGluXG4gICBjb21iaW5hdGlvbiB3aXRoIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgbWlkbmlnaHQsIHdoaWNoIGdpdmVzIHlvdSBhIGNhbGVuZGFyIGRheSBhbmRcbiAgIGEgY2xvY2sgZmFjZSB0aW1lLiBUaGVuIHlvdSB0YWtlIHRoZSB0aW1lIHRoYXQgdGhvc2UgcmVwcmVzZW50IGluIHNvbWUgcmVsZXZhbnRcbiAgIHRpbWV6b25lLlxuXG4gICBPZiBjb3Vyc2UsIGlmIHRoZSB0aW1lem9uZSBpbiBxdWVzdGlvbiBoYXMgRFNUIHNoaWZ0cywgdGhlIGRhdGUgYW5kIG9mZGF5IG1pZ2h0XG4gICByZXByZXNlbnQgdHdvIG9yIHplcm8gdGltZXMuIFRoZXNlIHRpbWVzIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIGVpdGhlciB0aGVcbiAgIHByZXZpb3VzIFVUQyBvZmZzZXQgb3IgdGhlIG5leHQgb25lLCBpbiBhIHdheSB3aG9zZSBwcmVjaXNlIGRldGFpbHMgeW91IHByb2JhYmx5XG4gICBzaG91bGRuJ3QgZGVwZW5kIG9uLlxuXG4gICAoRm9yIHRoZSBjdXJpb3VzLCB3aGF0IHdlIGRvIGlzOiBjb21wdXRlIHRoZSBcInJlbGF0aXZlIHRpbWVcIiBvZiB0aGUgc2hpZnQgYWNjb3JkaW5nIHRvXG4gICB0aGUgbmV3IHJlZ2ltZSwgYW5kIGFzc2lnbiByZWxhdGl2ZSB0aW1lcyB0byB0aGUgb2xkIHJlZ2ltZSBvciBuZXcgcmVnaW1lIGRlcGVuZGluZyBvblxuICAgd2hpY2ggc2lkZSBvZiB0aGUgc2hpZnQgdGltZSB0aGV5IG9jY3VyLiBTaW5jZSB0aGlzIGFtb3VudHMgdG8gdXNpbmcgdGhlIG9sZCByZWdpbWVcbiAgIHdoZW4gdGhlIGNsb2NrcyBtb3ZlIGZvcndhcmQgYW5kIHRoZSBuZXcgcmVnaW1lIHdoZW4gdGhlIGNsb2NrcyBtb3ZlIGJhY2ssIGl0J3NcbiAgIGVxdWl2YWxlbnQgdG8gY2FsY3VsYXRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgVGltZS50J3MgcmVsYXRpdmUgdG8gYm90aCB0aGUgb2xkIGFuZCB0aGVcbiAgIG5ldyByZWdpbWUgYW5kIHBpY2tpbmcgdGhlIG9uZSB0aGF0IG9jY3VycyBsYXRlci4gWWVzLCBsYXRlci4gSSBoYWQgdG8gZHJhdyBhIGRpYWdyYW1cbiAgIHRvIHBlcnN1YWRlIG15c2VsZiB0aGF0IGl0J3MgdGhhdCB3YXkgcm91bmQsIGJ1dCBpdCBpcy4pXG4qKVxubW9kdWxlIE1vZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEFic29sdXRlXG4gICAgfCBEYXRlX2FuZF9vZmRheVxuZW5kXG5cbmxldCBlZmZlY3RpdmVfc3RhcnRfdGltZSB+bW9kZSAoeCA6IFRyYW5zaXRpb24udCkgPVxuICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gIG1hdGNoIChtb2RlIDogTW9kZS50KSB3aXRoXG4gIHwgQWJzb2x1dGUgLT4geC5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hcbiAgfCBEYXRlX2FuZF9vZmRheSAtPlxuICAgIHguc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoICsgeC5uZXdfcmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kc1xuOztcblxubGV0IGluZGV4X2xvd2VyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzID1cbiAgaW5kZXggPCAwIHx8IEludDYzLiggPj0gKSBzZWNvbmRzIChlZmZlY3RpdmVfc3RhcnRfdGltZSB+bW9kZSB0LnRyYW5zaXRpb25zLihpbmRleCkpXG47O1xuXG5sZXQgaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMgPVxuICBpbmRleCArIDEgPj0gQXJyYXkubGVuZ3RoIHQudHJhbnNpdGlvbnNcbiAgfHwgSW50NjMuKCA8ICkgc2Vjb25kcyAoZWZmZWN0aXZlX3N0YXJ0X3RpbWUgfm1vZGUgdC50cmFuc2l0aW9ucy4oaW5kZXggKyAxKSlcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZSBzZWNvbmRzIDogSW5kZXgudCA9XG4gIEFycmF5LmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQudHJhbnNpdGlvbnMgYExhc3Rfb25fbGVmdCB+c2VnbWVudF9vZjooZnVuIHRyYW5zaXRpb24gLT5cbiAgICBpZiBJbnQ2My4oIDw9ICkgKGVmZmVjdGl2ZV9zdGFydF90aW1lIHRyYW5zaXRpb24gfm1vZGUpIHNlY29uZHMgdGhlbiBgTGVmdCBlbHNlIGBSaWdodClcbiAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OkluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG47O1xuXG5sZXQgaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHMgPVxuICBsZXQgaW5kZXggPVxuICAgIGxldCBpbmRleCA9IHQubGFzdF9yZWdpbWVfaW5kZXggaW5cbiAgICBpZiBub3QgKGluZGV4X2xvd2VyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzKVxuICAgICgqIHRpbWUgaXMgYmVmb3JlIGNhY2hlZCBpbmRleDsgdHJ5IHByZXZpb3VzIGluZGV4ICopXG4gICAgdGhlbiAoXG4gICAgICBsZXQgaW5kZXggPSBpbmRleCAtIDEgaW5cbiAgICAgIGlmIG5vdCAoaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgICAoKiB0aW1lIGlzIGJlZm9yZSBwcmV2aW91cyBpbmRleDsgZmFsbCBiYWNrIG9uIGJpbmFyeSBzZWFyY2ggKilcbiAgICAgIHRoZW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kc1xuICAgICAgICAoKiB0aW1lIGlzIGJlZm9yZSBjYWNoZWQgaW5kZXggYW5kIG5vdCBiZWZvcmUgcHJldmlvdXMsIHNvIHdpdGhpbiBwcmV2aW91cyAqKVxuICAgICAgZWxzZSBpbmRleClcbiAgICBlbHNlIGlmIG5vdCAoaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgKCogdGltZSBpcyBhZnRlciBjYWNoZWQgaW5kZXg7IHRyeSBuZXh0IGluZGV4ICopXG4gICAgdGhlbiAoXG4gICAgICBsZXQgaW5kZXggPSBpbmRleCArIDEgaW5cbiAgICAgIGlmIG5vdCAoaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgICAoKiB0aW1lIGlzIGFmdGVyIG5leHQgaW5kZXg7IGZhbGwgYmFjayBvbiBiaW5hcnkgc2VhcmNoICopXG4gICAgICB0aGVuXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHNcbiAgICAgICAgKCogdGltZSBpcyBhZnRlciBjYWNoZWQgaW5kZXggYW5kIG5vdCBhZnRlciBuZXh0LCBzbyB3aXRoaW4gbmV4dCAqKVxuICAgICAgZWxzZSBpbmRleCAoKiB0aW1lIGlzIHdpdGhpbiBjYWNoZWQgaW5kZXggKikpXG4gICAgZWxzZSBpbmRleFxuICBpblxuICB0Lmxhc3RfcmVnaW1lX2luZGV4IDwtIGluZGV4O1xuICBpbmRleFxuOztcblxubW9kdWxlIFRpbWVfaW5fc2Vjb25kcyA6IHNpZ1xuICBpbmNsdWRlIFpvbmVfaW50Zi5UaW1lX2luX3NlY29uZHNcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgU3BhbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9pbnQ2M19zZWNvbmRzID0gRm4uaWRcbiAgICBsZXQgdG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biA9IEZuLmlkXG4gIGVuZFxuXG4gIG1vZHVsZSBBYnNvbHV0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgICBsZXQgdG9fc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gIGVuZFxuXG4gIG1vZHVsZSBEYXRlX2FuZF9vZmRheSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gICAgbGV0IHRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgZW5kXG5cbiAgaW5jbHVkZSBBYnNvbHV0ZVxuZW5kXG5cbmxldCBpbmRleCB0IHRpbWUgPVxuICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgfD4gaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlOkFic29sdXRlXG47O1xuXG5sZXQgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCB0aW1lID1cbiAgVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICB8PiBpbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGU6RGF0ZV9hbmRfb2ZkYXlcbjs7XG5cbmxldCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXggPj0gMCAmJiBpbmRleCA8IEFycmF5Lmxlbmd0aCB0LnRyYW5zaXRpb25zXG5sZXQgaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgKGluZGV4ICsgMSlcblxubGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gIGxldCB0cmFuc2l0aW9uID0gdC50cmFuc2l0aW9ucy4oaW5kZXgpIGluXG4gIHRyYW5zaXRpb24uc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbjs7XG5cbmxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgKGluZGV4ICsgMSlcblxubGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgbGV0IHRyYW5zaXRpb24gPSB0LnRyYW5zaXRpb25zLihpbmRleCkgaW5cbiAgbGV0IGFmdGVyID0gdHJhbnNpdGlvbi5uZXdfcmVnaW1lIGluXG4gIGxldCBiZWZvcmUgPVxuICAgIGlmIGluZGV4ID0gMCB0aGVuIHQuZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgZWxzZSB0LnRyYW5zaXRpb25zLihpbmRleCAtIDEpLm5ld19yZWdpbWVcbiAgaW5cbiAgSW50NjMuKCAtICkgYWZ0ZXIudXRjX29mZnNldF9pbl9zZWNvbmRzIGJlZm9yZS51dGNfb2Zmc2V0X2luX3NlY29uZHNcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuOztcblxubGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgKGluZGV4ICsgMSlcbjs7XG5cbmxldCBpbmRleF9hYmJyZXZpYXRpb25fZXhuIHQgaW5kZXggPVxuICBsZXQgcmVnaW1lID0gZ2V0X3JlZ2ltZV9leG4gdCBpbmRleCBpblxuICByZWdpbWUuYWJicnZcbjs7XG5cbmxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICBsZXQgcmVnaW1lID0gZ2V0X3JlZ2ltZV9leG4gdCBpbmRleCBpblxuICBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzIHJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHNcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvblxuaW5jbHVkZSBTb3VyY2VfY29kZV9wb3NpdGlvbjBcbmluY2x1ZGUgQ29tcGFyYWJsZS5FeHRlbmQgKEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24pIChTb3VyY2VfY29kZV9wb3NpdGlvbjApXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFNvdXJjZV9jb2RlX3Bvc2l0aW9uMClcbiIsImluY2x1ZGUgQmFzZS5UeXBlX2VxdWFsXG5cbm1vZHVsZSBJZCA9IHN0cnVjdFxuICBpbmNsdWRlIElkXG5cbiAgbW9kdWxlIFVpZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBVcHN0cmVhbSA9IEJhc2UuVHlwZV9lcXVhbC5JZC5VaWRcbiAgICBpbmNsdWRlIEJhc2UuVHlwZV9lcXVhbC5JZC5VaWRcblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuRXh0ZW5kXG4gICAgICAgIChVcHN0cmVhbSlcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEJhc2UuVHlwZV9lcXVhbC5JZC5VaWQudCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFVwc3RyZWFtKVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBWYWxpZGF0ZWRfaW50ZlxuXG5tb2R1bGUgdHlwZSBSYXcgPSBSYXdcblxudHlwZSAoJ3JhdywgJ3dpdG5lc3MpIHQgPSAncmF3XG5cbm1vZHVsZSB0eXBlIFMgPSBTIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTX2FsbG93aW5nX3N1YnN0aXR1dGlvbiA9XG4gIFNfYWxsb3dpbmdfc3Vic3RpdHV0aW9uIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTX2Jpbl9pbyA9IFNfYmluX2lvIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTX2Jpbl9pb19jb21wYXJlX2hhc2hfc2V4cCA9XG4gIFNfYmluX2lvX2NvbXBhcmVfaGFzaF9zZXhwIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5sZXQgcmF3IHQgPSB0XG5cbm1vZHVsZSBNYWtlIChSYXcgOiBSYXcpID0gc3RydWN0XG4gIHR5cGUgd2l0bmVzc1xuICB0eXBlIHQgPSBSYXcudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB2YWxpZGF0aW9uX2ZhaWxlZCB0IGVycm9yID1cbiAgICBFcnJvci5jcmVhdGVcbiAgICAgIFwidmFsaWRhdGlvbiBmYWlsZWRcIlxuICAgICAgKHQsIGVycm9yLCBSYXcuaGVyZSlcbiAgICAgIFslc2V4cF9vZjogUmF3LnQgKiBFcnJvci50ICogU291cmNlX2NvZGVfcG9zaXRpb24udF1cbiAgOztcblxuICBsZXQgY3JlYXRlX2V4biB0ID1cbiAgICBtYXRjaCBWYWxpZGF0ZS5yZXN1bHQgKFJhdy52YWxpZGF0ZSB0KSB3aXRoXG4gICAgfCBPayAoKSAtPiB0XG4gICAgfCBFcnJvciBlcnJvciAtPiBFcnJvci5yYWlzZSAodmFsaWRhdGlvbl9mYWlsZWQgdCBlcnJvcilcbiAgOztcblxuICBsZXQgY3JlYXRlIHQgPVxuICAgIG1hdGNoIFZhbGlkYXRlLnJlc3VsdCAoUmF3LnZhbGlkYXRlIHQpIHdpdGhcbiAgICB8IE9rICgpIC0+IE9rIHRcbiAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yICh2YWxpZGF0aW9uX2ZhaWxlZCB0IGVycm9yKVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9IGNyZWF0ZV9leG4gKFJhdy50X29mX3NleHAgc2V4cClcbiAgbGV0IHJhdyB0ID0gdFxuXG4gIGxldCBjcmVhdGVfc3RhYmxlX3dpdG5lc3MgcmF3X3N0YWJsZV93aXRuZXNzID1cbiAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGUgcmF3X3N0YWJsZV93aXRuZXNzIGNyZWF0ZV9leG4gcmF3XG4gIDs7XG5cbiAgbGV0IHR5cGVfZXF1YWwgPSBUeXBlX2VxdWFsLlRcbmVuZFxuXG5tb2R1bGUgQWRkX2Jpbl9pbyAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGluY2x1ZGUgUmF3X2Jpbl9pbyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoVmFsaWRhdGVkIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZVxuICAgIEJpbmFibGUuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgIChSYXcpXG4gICAgICAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IFJhdy50XG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcmF3ID1cbiAgICAgICAgICBpZiBSYXcudmFsaWRhdGVfYmluaW9fZGVzZXJpYWxpemF0aW9uIHRoZW4gVmFsaWRhdGVkLmNyZWF0ZV9leG4gcmF3IGVsc2UgcmF3XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBGbi5pZFxuICAgICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBBZGRfY29tcGFyZSAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFJhdyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoXyA6IFMgd2l0aCB0eXBlIHJhdyA6PSBSYXcudCkgPVxuc3RydWN0XG4gIGxldCBjb21wYXJlIHQxIHQyID0gWyVjb21wYXJlOiBSYXcudF0gKHJhdyB0MSkgKHJhdyB0MilcbmVuZFxuXG5tb2R1bGUgQWRkX2hhc2ggKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgaW5jbHVkZSBSYXcgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG4gICAgKFZhbGlkYXRlZCA6IFMgd2l0aCB0eXBlIHJhdyA6PSBSYXcudCkgPVxuc3RydWN0XG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gUmF3Lmhhc2hfZm9sZF90IHN0YXRlIChWYWxpZGF0ZWQucmF3IHQpXG4gIGxldCBoYXNoIHQgPSBSYXcuaGFzaCAoVmFsaWRhdGVkLnJhdyB0KVxuZW5kXG5cbm1vZHVsZSBBZGRfdHlwZXJlcCAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbiAgICBpbmNsdWRlIFJhdyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoXyA6IFMgd2l0aCB0eXBlIHJhdyA6PSBSYXcudCkgPVxuc3RydWN0XG4gIHR5cGUgdCA9IFJhdy50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoUmF3IDogUmF3X2Jpbl9pbykgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQwID0gTWFrZSAoUmF3KVxuICBpbmNsdWRlIFQwXG4gIGluY2x1ZGUgQWRkX2Jpbl9pbyAoUmF3KSAoVDApXG5lbmRcblxubW9kdWxlIE1ha2VfYmluX2lvX2NvbXBhcmVfaGFzaF9zZXhwIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICAgIGluY2x1ZGUgUmF3X2Jpbl9pbyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUID0gTWFrZV9iaW5hYmxlIChSYXcpXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIEFkZF9jb21wYXJlIChSYXcpIChUKVxuXG4gIGluY2x1ZGUgKFxuICAgIEFkZF9oYXNoIChSYXcpIChUKSA6XG4gICAgc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOYW5vc2Vjb25kXG4gIHwgTWljcm9zZWNvbmRcbiAgfCBNaWxsaXNlY29uZFxuICB8IFNlY29uZFxuICB8IE1pbnV0ZVxuICB8IEhvdXJcbiAgfCBEYXlcbltAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGVudW1lcmF0ZSwgaGFzaF1cbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gVW5pcXVlX2lkX2ludGZcblxubW9kdWxlIHR5cGUgSWQgPSBJZFxuXG4oKiBPbmx5IFwibWFrZVwiIGNhbiBjYXVzZSBhIGNvbnRleHQtc3dpdGNoIHRoYXQgbWlnaHQgbGVhZCB0byBhIHJhY2UuXG4gICBUaHVzIHdlIGhhdmUgdG8gY2hlY2sgd2hldGhlciB0aGUgY29udGVudHMgb2YgdGhlIGNlbGwgcmVtYWluZWRcbiAgIHVuY2hhbmdlZCBhY3Jvc3MgdGhpcyBjYWxsLiAgVGhlIHN1YnNlcXVlbnQgY29tcGFyaXNvbiwgZGVyZWZlcmVuY2luZ1xuICAgYW5kIGFzc2lnbm1lbnQgY2Fubm90IGNhdXNlIGNvbnRleHQgc3dpdGNoZXMuICBJZiB0aGUgY29udGVudHMgb2YgdGhlXG4gICBjZWxsIGhhZCBjaGFuZ2VkLCB3ZSB3aWxsIGhhdmUgdG8gdHJ5IGFnYWluIHRvIG9idGFpbiBhIHVuaXF1ZSBpZC5cbiAgIFRoaXMgaXMgZXNzZW50aWFsbHkgbGlrZSBhIHNwaW4tbG9jayBhbmQgaXMgdmlydHVhbGx5IGd1YXJhbnRlZWQgdG9cbiAgIHN1Y2NlZWQgcXVpY2tseS4gKilcbmxldCByZWMgcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGNlbGwgbWFrZSA9XG4gIGxldCB4ID0gIWNlbGwgaW5cbiAgbGV0IG5ld194ID0gbWFrZSB4IGluXG4gIGlmIHBoeXNfZXF1YWwgIWNlbGwgeFxuICB0aGVuIChcbiAgICBjZWxsIDo9IG5ld194O1xuICAgIHgpXG4gIGVsc2UgcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGNlbGwgbWFrZVxuOztcblxubW9kdWxlIEludCAoKSA9IHN0cnVjdFxuICBpbmNsdWRlIEludFxuXG4gIGxldCBjdXJyZW50ID0gcmVmIHplcm9cbiAgbGV0IGNyZWF0ZSAoKSA9IHJhY2VfZnJlZV9jcmVhdGVfbG9vcCBjdXJyZW50IHN1Y2NcbmVuZFxuXG5tb2R1bGUgSW50NjMgKCkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbnQ2M1xuXG4gIGxldCBjdXJyZW50ID0gcmVmIHplcm9cbiAgbGV0IGNyZWF0ZSAoKSA9IHJhY2VfZnJlZV9jcmVhdGVfbG9vcCBjdXJyZW50IHN1Y2NcbmVuZFxuIiwiKCogVGhpcyBtb2R1bGUgaXMgdmVyeSBtdWNoIGRlcGVuZGVudCBvbiB0aGUgcnVudGltZSByZXByZXNlbnRhdGlvbiBvZiB2YWx1ZXMuICBTaG91bGQgdGhlXG4gICB3YXkgdGhlIGNvbXBpbGVyIHJlcHJlc2VudHMgdmFyaW91cyB0eXBlcyBjaGFuZ2UsIGl0IG5lZWRzIHRvIGJlIHJlZmxlY3RlZCBpbiB0aGlzXG4gICBtb2R1bGUsIG90aGVyd2lzZSBiYWQgdGhpbmdzIGNvdWxkIGhhcHBlbi4gIFRoZXJlZm9yZSB0aGUgY29udmVyc2lvbnMgYW5kXG4gICByZXByZXNlbnRhdGlvbnMgYXJlIHRlc3RlZCB0aG9yb3VnaGx5IGluIFsuLi90ZXN0L3Rlc3Rfd2l0bmVzcy5tbF0gYW5kXG4gICBbLi4vdGVzdC90ZXN0X2NvbnZlcnNpb25zLm1sXVxuKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IEJhc2UuTGlzdFxubW9kdWxlIEhhc2hfc2V0ID0gQmFzZS5IYXNoX3NldFxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5cbm1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgKCogVGhlIGludGVnZXJzIGhlcmUgYXJlIHRoZSB2YWx1ZXMgdW5kZXJseWluZyB0aGUgcG9seW1vcnBoaWMgdmFyaWFudHMsIHRoZXkgYWxyZWFkeVxuICAgICBhcmUgaGFzaGVzIG9mIGNvbnN0cnVjdG9yIG5hbWVzLCBhbmQgaGVuY2UgYXJlIGV4cGVjdGVkIHRvIGJlIHVuaWZvcm1seVxuICAgICBkaXN0cmlidXRlZC4gKilcbiAgbGV0IGhhc2ggeCA9IHhcbmVuZFxuXG5tb2R1bGUgQWxsb3dlZF9pbnRzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOb25lXG4gICAgfCBBbGxcbiAgICB8IEhhc2hfc2V0IG9mIEhhc2hfc2V0Lk0oS2V5KS50XG4gICAgfCBGcm9tX3plcm9fdG8gb2YgaW50XG5cbiAgbGV0IF9pbnZhcmlhbnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSB8IEFsbCB8IEhhc2hfc2V0IF8gLT4gKClcbiAgICB8IEZyb21femVyb190byBuIC0+IGFzc2VydCAobiA+PSAwKVxuICA7O1xuXG4gIGxldCBpbnRfaXNfdmFsdWUgdCBpID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IEFsbCAtPiB0cnVlXG4gICAgfCBIYXNoX3NldCBoYXNoX3NldCAtPiBIYXNoX3NldC5tZW0gaGFzaF9zZXQgaVxuICAgIHwgRnJvbV96ZXJvX3RvIG4gLT4gMCA8PSBpICYmIGkgPD0gblxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbW1lZGlhY3kgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEFsd2F5c1xuICAgIHwgU29tZXRpbWVzXG4gICAgfCBOZXZlclxuICAgIHwgVW5rbm93blxuICBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cblxuICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IEFsd2F5cyAtPiBcIkFsd2F5c1wiXG4gICAgfCBTb21ldGltZXMgLT4gXCJTb21ldGltZXNcIlxuICAgIHwgTmV2ZXIgLT4gXCJOZXZlclwiXG4gICAgfCBVbmtub3duIC0+IFwiVW5rbm93blwiXG4gIDs7XG5lbmRcblxub3BlbiBJbW1lZGlhY3lcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGNyZWF0ZSA6ICdhIFR5cGVuYW1lLnQgLT4gSW1tZWRpYWN5LnQgLT4gQWxsb3dlZF9pbnRzLnQgLT4gJ2EgdFxuICB2YWwgY3JlYXRlX3dpdGhfbmFtZSA6IHN0cmluZyAtPiBJbW1lZGlhY3kudCAtPiBBbGxvd2VkX2ludHMudCAtPiBfIHRcbiAgdmFsIGltbWVkaWFjeSA6IF8gdCAtPiBJbW1lZGlhY3kudFxuICB2YWwgYWxsb3dlZF9pbnRzIDogXyB0IC0+IEFsbG93ZWRfaW50cy50XG4gIHZhbCB0eXBlbmFtZSA6IF8gdCAtPiBzdHJpbmdcblxuICBtb2R1bGUgTmV2ZXJfdmFsdWVzIDogc2lnXG4gICAgdmFsIGludDMyIDogaW50MzIgdFxuICAgIHZhbCBpbnQ2NCA6IGludDY0IHRcbiAgICB2YWwgbmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgICB2YWwgZmxvYXQgOiBmbG9hdCB0XG4gICAgdmFsIHN0cmluZyA6IHN0cmluZyB0XG4gICAgdmFsIGJ5dGVzIDogYnl0ZXMgdFxuICAgIHZhbCBhcnJheSA6IF8gYXJyYXkgdFxuICAgIHZhbCByZWZfIDogXyByZWYgdFxuICAgIHZhbCB0dXBsZTIgOiAoXyAqIF8pIHRcbiAgICB2YWwgdHVwbGUzIDogKF8gKiBfICogXykgdFxuICAgIHZhbCB0dXBsZTQgOiAoXyAqIF8gKiBfICogXykgdFxuICAgIHZhbCB0dXBsZTUgOiAoXyAqIF8gKiBfICogXyAqIF8pIHRcbiAgICB2YWwgZnVuY3Rpb25fIDogKF8gLT4gXykgdFxuICBlbmRcblxuICB2YWwgbmV2ZXIgOiAnYSBUeXBlbmFtZS50IC0+ICdhIHRcbiAgdmFsIHVua25vd24gOiAnYSBUeXBlbmFtZS50IC0+ICdhIHRcbiAgdmFsIG9wdGlvbiA6IF8gdFxuICB2YWwgbGlzdCA6IF8gdFxuICB2YWwgbWFnaWMgOiBfIHQgLT4gXyB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0XyA9XG4gICAgeyBpbW1lZGlhY3kgOiBJbW1lZGlhY3kudFxuICAgIDsgYWxsb3dlZF9pbnRzIDogQWxsb3dlZF9pbnRzLnRcbiAgICA7IHR5cGVuYW1lIDogc3RyaW5nXG4gICAgfVxuXG4gIHR5cGUgJ2EgdCA9IHRfXG5cbiAgbGV0IGNyZWF0ZV93aXRoX25hbWUgdHlwZW5hbWUgaW1tZWRpYWN5IGFsbG93ZWRfaW50cyA9XG4gICAgeyBpbW1lZGlhY3k7IGFsbG93ZWRfaW50czsgdHlwZW5hbWUgfVxuICA7O1xuXG4gIGxldCBjcmVhdGUgdHlwZW5hbWUgaW1tZWRpYWN5IGFsbG93ZWRfaW50cyA9XG4gICAgY3JlYXRlX3dpdGhfbmFtZSAoVHlwZW5hbWUubmFtZSB0eXBlbmFtZSkgaW1tZWRpYWN5IGFsbG93ZWRfaW50c1xuICA7O1xuXG4gIGxldCBpbW1lZGlhY3kgdCA9IHQuaW1tZWRpYWN5XG4gIGxldCBhbGxvd2VkX2ludHMgdCA9IHQuYWxsb3dlZF9pbnRzXG4gIGxldCB0eXBlbmFtZSB0ID0gdC50eXBlbmFtZVxuICBsZXQgbWFnaWMgdCA9IHRcbiAgbGV0IG5ldmVyX3dpdGhfbmFtZSBuYW1lID0gY3JlYXRlX3dpdGhfbmFtZSBuYW1lIE5ldmVyIE5vbmVcbiAgbGV0IG5ldmVyIHR5cGVuYW1lID0gY3JlYXRlIHR5cGVuYW1lIE5ldmVyIE5vbmVcbiAgbGV0IHVua25vd24gdHlwZW5hbWUgPSBjcmVhdGUgdHlwZW5hbWUgVW5rbm93biBOb25lXG5cbiAgbGV0IG9wdGlvbiA9IGNyZWF0ZV93aXRoX25hbWUgXCJvcHRpb25cIiBTb21ldGltZXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMClcbiAgbGV0IGxpc3QgPSBjcmVhdGVfd2l0aF9uYW1lIFwibGlzdFwiIFNvbWV0aW1lcyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAwKVxuXG4gIG1vZHVsZSBOZXZlcl92YWx1ZXMgPSBzdHJ1Y3RcbiAgICAoKiBpbnQzMiBpcyBib3hlZCBldmVuIG9uIDY0YiBwbGF0Zm9ybSBhdCB0aGUgbW9tZW50LiAqKVxuICAgIGxldCBpbnQzMiA9IG5ldmVyIHR5cGVuYW1lX29mX2ludDMyXG4gICAgbGV0IGludDY0ID0gbmV2ZXIgdHlwZW5hbWVfb2ZfaW50NjRcbiAgICBsZXQgbmF0aXZlaW50ID0gbmV2ZXIgdHlwZW5hbWVfb2ZfbmF0aXZlaW50XG4gICAgbGV0IGZsb2F0ID0gbmV2ZXIgdHlwZW5hbWVfb2ZfZmxvYXRcbiAgICBsZXQgc3RyaW5nID0gbmV2ZXIgdHlwZW5hbWVfb2Zfc3RyaW5nXG4gICAgbGV0IGJ5dGVzID0gbmV2ZXIgdHlwZW5hbWVfb2ZfYnl0ZXNcbiAgICBsZXQgYXJyYXkgPSBuZXZlcl93aXRoX25hbWUgXCJhcnJheVwiXG4gICAgbGV0IHJlZl8gPSBuZXZlcl93aXRoX25hbWUgXCJyZWZcIlxuICAgIGxldCB0dXBsZTIgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTJcIlxuICAgIGxldCB0dXBsZTMgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTNcIlxuICAgIGxldCB0dXBsZTQgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTRcIlxuICAgIGxldCB0dXBsZTUgPSBuZXZlcl93aXRoX25hbWUgXCJ0dXBsZTVcIlxuXG4gICAgbGV0IGZ1bmN0aW9uXyA9IG5ldmVyX3dpdGhfbmFtZSBcImZ1bmN0aW9uXCJcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBpbnQgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfaW50IEFsd2F5cyBBbGxvd2VkX2ludHMuQWxsXG5sZXQgdW5pdCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl91bml0IEFsd2F5cyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAwKVxubGV0IGJvb2wgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfYm9vbCBBbHdheXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMSlcbmxldCBjaGFyID0gY3JlYXRlIHR5cGVuYW1lX29mX2NoYXIgQWx3YXlzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDI1NSlcblxubW9kdWxlIENvbXB1dGF0aW9uX2ltcGwgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIFR5cGVfZ2VuZXJpYy5WYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5NIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgTmV2ZXJfdmFsdWVzXG5cbiAgbGV0IHJlZl8gXyA9IHJlZl9cbiAgbGV0IGFycmF5IF8gPSBhcnJheVxuICBsZXQgdHVwbGUyIF8gXyA9IHR1cGxlMlxuICBsZXQgdHVwbGUzIF8gXyBfID0gdHVwbGUzXG4gIGxldCB0dXBsZTQgXyBfIF8gXyA9IHR1cGxlNFxuICBsZXQgdHVwbGU1IF8gXyBfIF8gXyA9IHR1cGxlNVxuICBsZXQgZnVuY3Rpb25fIF8gXyA9IGZ1bmN0aW9uX1xuICBsZXQgaW50ID0gaW50XG4gIGxldCBjaGFyID0gY2hhclxuICBsZXQgYm9vbCA9IGJvb2xcbiAgbGV0IHVuaXQgPSB1bml0XG4gIGxldCBvcHRpb24gXyA9IG9wdGlvblxuICBsZXQgbGlzdCBfID0gbGlzdFxuXG4gICgqIEFuIFthIExhenkudF0gbWlnaHQgYmUgYSBib3hlZCBjbG9zdXJlLCBzbyBtdXN0IGhhdmUgaW1tZWRpYWN5IGVpdGhlciBbTmV2ZXJdIG9yXG4gICAgIFtTb21ldGltZXNdLiAgQW4gW2EgTGF6eS50XSB2YWx1ZSBjb3VsZCBiZSBpbW1lZGlhdGUgaWYgW2FdIGlzIGltbWVkaWF0ZS4gIEJ1dCBpZiBbYV1cbiAgICAgaXMgbmV2ZXIgaW1tZWRpYXRlLCB0aGVuIFthIExhenkudF0gY2Fubm90IGJlLiAqKVxuICBsZXQgbGF6eV90IHQgPVxuICAgIGxldCBpbW1lZGlhY3kgPVxuICAgICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgICAgfCBOZXZlciAtPiBOZXZlclxuICAgICAgfCBVbmtub3duIC0+IFVua25vd25cbiAgICAgIHwgU29tZXRpbWVzIHwgQWx3YXlzIC0+IFNvbWV0aW1lc1xuICAgIGluXG4gICAgY3JlYXRlX3dpdGhfbmFtZSBcImxhenlfdFwiIGltbWVkaWFjeSAoYWxsb3dlZF9pbnRzIHQpXG4gIDs7XG5cbiAgbGV0IHBvc3NpYmx5X3VuYm94ZWQgdHlwZW5hbWUgY2hpbGRfdHlwZSA9XG4gICAgbWF0Y2ggaW1tZWRpYWN5IGNoaWxkX3R5cGUgd2l0aFxuICAgIHwgTmV2ZXIgLT4gbmV2ZXIgdHlwZW5hbWVcbiAgICB8IFVua25vd24gfCBBbHdheXMgfCBTb21ldGltZXMgLT4gdW5rbm93biB0eXBlbmFtZVxuICA7O1xuXG4gIGxldCByZWNvcmQgciA9XG4gICAgaWYgUmVjb3JkLmxlbmd0aCByID4gMVxuICAgIHRoZW4gbmV2ZXIgKFJlY29yZC50eXBlbmFtZV9vZl90IHIpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgKEZpZWxkIHRoZV9vbmx5X2ZpZWxkKSA9IFJlY29yZC5maWVsZCByIDAgaW5cbiAgICAgIHBvc3NpYmx5X3VuYm94ZWQgKFJlY29yZC50eXBlbmFtZV9vZl90IHIpIChGaWVsZC50cmF2ZXJzZSB0aGVfb25seV9maWVsZCkpXG4gIDs7XG5cbiAgKCogVmFyaWFudHMgd2l0aCBhbGwgY29uc3RydWN0b3JzIGhhdmluZyBubyBhcmd1bWVudHMgYXJlIGFsd2F5cyBpbW1lZGlhdGU7IHZhcmlhbnRzXG4gICAgIHdpdGggYWxsIGNvbnN0cnVjdG9ycyBoYXZpbmcgc29tZSBhcmd1bWVudHMgYXJlIG5ldmVyIGltbWVkaWF0ZTsgbWl4ZWQgdmFyaWFudHMgYXJlXG4gICAgIHNvbWV0aW1lcyBpbW1lZGlhdGUuXG5cbiAgICAgSWYgYSB2YXJpYW50IGhhcyBhIHNpbmdsZSBjb25zdHJ1Y3RvciwgYW5kIHRoZSBjb25zdHJ1Y3RvciBoYXMgYW4gYXJndW1lbnQsIHRoZVxuICAgICB2YXJpYW50IGNhbiBiZSB1bmJveGVkLiBJZiB1bmJveGVkLCBlaXRoZXIgZXhwbGljaXRseSBvciBieSBkZWZhdWx0IChkZXBlbmRpbmcgb25cbiAgICAgY29tcGlsZXIgc2V0dGluZ3MpLCB0aGUgcmVwcmVzZW50YXRpb24gaXMgc2ltcGx5IHRoZSBhcmd1bWVudC4gT3RoZXJ3aXNlLCB0aGUgcnVsZXNcbiAgICAgYWJvdmUgYXBwbHkgbm9ybWFsbHkuICopXG4gIGxldCB2YXJpYW50IHZhcmlhbnQgPVxuICAgIGxldCBub19hcmdfbGlzdCwgb25lX2FyZ19saXN0LCBtb3JlX2FyZ19saXN0ID1cbiAgICAgIFZhcmlhbnQuZm9sZCB2YXJpYW50IH5pbml0OihbXSwgW10sIFtdKSB+ZjooZnVuIChubywgb25lLCBtb3JlKSAoVGFnIHQgYXMgdGFnKSAtPlxuICAgICAgICBtYXRjaCBUYWcuYXJpdHkgdCB3aXRoXG4gICAgICAgIHwgMCAtPiB0YWcgOjogbm8sIG9uZSwgbW9yZVxuICAgICAgICB8IDEgLT4gbm8sIHRhZyA6OiBvbmUsIG1vcmVcbiAgICAgICAgfCBfIC0+IG5vLCBvbmUsIHRhZyA6OiBtb3JlKVxuICAgIGluXG4gICAgbWF0Y2ggbm9fYXJnX2xpc3QsIG9uZV9hcmdfbGlzdCwgbW9yZV9hcmdfbGlzdCB3aXRoXG4gICAgfCBbXSwgWyBUYWcgdGFnIF0sIFtdIHdoZW4gbm90IChWYXJpYW50LmlzX3BvbHltb3JwaGljIHZhcmlhbnQpIC0+XG4gICAgICBwb3NzaWJseV91bmJveGVkIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudCkgKFRhZy50cmF2ZXJzZSB0YWcpXG4gICAgfCBbXSwgW10sIFtdIC0+XG4gICAgICAoKiBXZSBkb24ndCBoYXZlIGFuIGV4cGxpY3Qgd2F5IG9mIHNheWluZyBhIHR5cGUgaXMgdW5pbmhhYml0ZWQuICopXG4gICAgICB1bmtub3duIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudClcbiAgICB8IFtdLCBfIDo6IF8sIF8gfCBbXSwgXywgXyA6OiBfIC0+IG5ldmVyIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudClcbiAgICB8IF8gOjogXywgXywgXyAtPlxuICAgICAgbGV0IG5vX2FyZ19jb3VudCA9IExpc3QubGVuZ3RoIG5vX2FyZ19saXN0IGluXG4gICAgICBsZXQgYWxsb3dlZF9pbnRzID1cbiAgICAgICAgaWYgbm90IChWYXJpYW50LmlzX3BvbHltb3JwaGljIHZhcmlhbnQpXG4gICAgICAgIHRoZW4gQWxsb3dlZF9pbnRzLkZyb21femVyb190byAobm9fYXJnX2NvdW50IC0gMSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGhhc2hfc2V0ID0gSGFzaF9zZXQuY3JlYXRlIChtb2R1bGUgS2V5KSB+c2l6ZToobm9fYXJnX2NvdW50ICogMikgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgbm9fYXJnX2xpc3QgfmY6KGZ1biAoVGFnIHRhZykgLT5cbiAgICAgICAgICAgIG1hdGNoIFRhZy5jcmVhdGUgdGFnIHdpdGhcbiAgICAgICAgICAgIHwgVGFnLkNvbnN0IF8gLT4gSGFzaF9zZXQuYWRkIGhhc2hfc2V0IChUYWcub2NhbWxfcmVwciB0YWcpXG4gICAgICAgICAgICB8IFRhZy5BcmdzIF8gLT4gYXNzZXJ0IGZhbHNlKTtcbiAgICAgICAgICBBbGxvd2VkX2ludHMuSGFzaF9zZXQgaGFzaF9zZXQpXG4gICAgICBpblxuICAgICAgbGV0IGltbWVkaWFjeSA9XG4gICAgICAgIGlmIExpc3QuaXNfZW1wdHkgb25lX2FyZ19saXN0ICYmIExpc3QuaXNfZW1wdHkgbW9yZV9hcmdfbGlzdFxuICAgICAgICB0aGVuIEFsd2F5c1xuICAgICAgICBlbHNlIFNvbWV0aW1lc1xuICAgICAgaW5cbiAgICAgIGNyZWF0ZSAoVmFyaWFudC50eXBlbmFtZV9vZl90IHZhcmlhbnQpIGltbWVkaWFjeSBhbGxvd2VkX2ludHNcbiAgOztcblxuICBsZXQgbmFtZSA9IFwiaXNfaW1tZWRpYXRlXCJcbiAgbGV0IHJlcXVpcmVkID0gW11cblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdW5pdFxuXG4gICAgICBsZXQgY3JlYXRlICgpID0gKClcbiAgICBlbmRcblxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IHJlZlxuXG4gICAgKCogVGhlIGRlZmF1bHQgd2l0bmVzcyAtIHdoaWNoIGlzIGNyZWF0ZWQgYnkgY2FsbGluZyBbaW5pdF0gYW5kIHJlY292ZXJlZCBhdCBhbnkgbGF0ZXJcbiAgICAgICBwb2ludCBieSBjYWxsaW5nIFtnZXRfd2lwX2NvbXB1dGF0aW9uXSAtIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSByZWN1cnNpdmUgdHlwZS5cbiAgICAgICBPdGhlciB0eXBlcyB0aGF0IGRvbid0IHVzZSBbZ2V0X3dpcF9jb21wdXRhdGlvbl0gd2lsbCBqdXN0IGV2YWx1YXRlIHRvIHRoZSBhY3R1YWxcbiAgICAgICB3aXRuZXNzIHdoaWNoIHdpbGwgcmVwbGFjZSB0aGUgaW5pdGlhbCBkdW1teSBvbmUuICopXG4gICAgbGV0IGluaXQgXyBuYW1lID0gcmVmIChjcmVhdGUgbmFtZSBTb21ldGltZXMgQWxsb3dlZF9pbnRzLk5vbmUpXG4gICAgbGV0IGdldF93aXBfY29tcHV0YXRpb24gY29tcCA9ICFjb21wXG5cbiAgICBsZXQgc2V0X2ZpbmFsX2NvbXB1dGF0aW9uIHIgdCA9XG4gICAgICByIDo9IHQ7XG4gICAgICB0XG4gICAgOztcblxuICAgIGxldCBzaGFyZSBfID0gdHJ1ZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgR2VuZXJpYyA9IFR5cGVfZ2VuZXJpYy5NYWtlIChDb21wdXRhdGlvbl9pbXBsKVxuXG5sZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgbGV0IChgZ2VuZXJpYyB0KSA9IEdlbmVyaWMub2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gIHRcbjs7XG5cbm1vZHVsZSBGb3JfYWxsX3BhcmFtZXRlcnMgKE0gOiBzaWdcbiAgICB2YWwgaW1tZWRpYWN5IDogSW1tZWRpYWN5LnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IHdpdG5lc3MgdHlwZXJlcDEgdHlwZXJlcDIgPVxuICAgIGxldCB0MSA9IG9mX3R5cGVyZXAgdHlwZXJlcDEgaW5cbiAgICBsZXQgdDIgPSBvZl90eXBlcmVwIHR5cGVyZXAyIGluXG4gICAgbGV0IGkxID0gaW1tZWRpYWN5IHQxIGluXG4gICAgbGV0IGkyID0gaW1tZWRpYWN5IHQyIGluXG4gICAgaWYgbm90IChJbW1lZGlhY3kuZXF1YWwgaTEgaTIpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgXCJ0eXBlICVzIGlzIG5vdCBpbmRlcGVuZGVudCBvZiBpdHMgYXJndW1lbnRzXCJcbiAgICAgICAgICAgKFR5cGVuYW1lLm5hbWUgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCB0eXBlcmVwMSkpKVxuICAgIGVsc2UgaWYgbm90IChJbW1lZGlhY3kuZXF1YWwgaTEgTS5pbW1lZGlhY3kpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgXCJ0eXBlICVzIGRvZXMgbm90IGhhdmUgZGVzaXJlZCBpbW1lZGlhY3k6IHdhbnRlZCAlcyBidXQgZ290ICVzXCJcbiAgICAgICAgICAgKFR5cGVuYW1lLm5hbWUgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCB0eXBlcmVwMSkpXG4gICAgICAgICAgIChJbW1lZGlhY3kudG9fc3RyaW5nIE0uaW1tZWRpYWN5KVxuICAgICAgICAgICAoSW1tZWRpYWN5LnRvX3N0cmluZyBpMSkpXG4gICAgZWxzZSB0MVxuICA7O1xuXG4gICgqIGFsd2F5cyBpbW1lZGlhdGUgKilcbiAgbGV0IHJhID0gVHlwZXJlcC5JbnRcblxuICAoKiBuZXZlciBpbW1lZGlhdGUgKilcbiAgbGV0IHJuID0gVHlwZXJlcC5TdHJpbmdcblxuICAoKiBFYWNoIG9mIHRoZSBbRm9yX2FsbF9wYXJhbWV0ZXJzXypdIGZ1bmN0b3JzIHdvcmtzIGJ5IGluc3RhbnRpYXRpbmcgdGhlIG4tYXJ5IHR5cGVcbiAgICAgd2l0aCBhbGwgW0Fsd2F5c10gdHlwZXMsIGFuZCB0aGVuIHdpdGggYWxsIFtOZXZlcl0gdHlwZXMuICBJZiB0aG9zZSBwcm9kdWNlIHRoZSBzYW1lXG4gICAgIGltbWVkaWFjeSwgdGhlbiB3ZSBjb25jbHVkZSB0aGF0IHRoZSBuLWFyeSB0eXBlIGlzIGluZGVwZW5kZW50IG9mIGl0cyBhcmd1bWVudHMuICopXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TMSAoWCA6IFR5cGVyZXBhYmxlLlMxKSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEpIChYLnR5cGVyZXBfb2ZfdCBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TMiAoWCA6IFR5cGVyZXBhYmxlLlMyKSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TMyAoWCA6IFR5cGVyZXBhYmxlLlMzKSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TNCAoWCA6IFR5cGVyZXBhYmxlLlM0KSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybiBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVyc19TNSAoWCA6IFR5cGVyZXBhYmxlLlM1KSA9IHN0cnVjdFxuICAgIGxldCB0ID0gd2l0bmVzcyAoWC50eXBlcmVwX29mX3QgcmEgcmEgcmEgcmEgcmEpIChYLnR5cGVyZXBfb2ZfdCBybiBybiBybiBybiBybilcbiAgICBsZXQgd2l0bmVzcyAoKSA9IG1hZ2ljIHRcbiAgZW5kXG5lbmRcblxubGV0IGludF9pc192YWx1ZSB0IGludCA9IEFsbG93ZWRfaW50cy5pbnRfaXNfdmFsdWUgKGFsbG93ZWRfaW50cyB0KSBpbnRcblxubGV0IGludF9hc192YWx1ZSAodHlwZSBhKSAodCA6IGEgdCkgaW50ID1cbiAgaWYgaW50X2lzX3ZhbHVlIHQgaW50IHRoZW4gU29tZSAoT2JqLm1hZ2ljIChpbnQgOiBpbnQpIDogYSkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50X2FzX3ZhbHVlX2V4biAodHlwZSBhKSAodCA6IGEgdCkgaW50ID1cbiAgaWYgaW50X2lzX3ZhbHVlIHQgaW50XG4gIHRoZW4gKE9iai5tYWdpYyAoaW50IDogaW50KSA6IGEpXG4gIGVsc2VcbiAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIkltbWVkaWF0ZS5pbnRfYXNfdmFsdWVfZXhuOiB0eXBlbmFtZTolUyBpbnQ6JWRcIiAoVC50eXBlbmFtZSB0KSBpbnQpXG47O1xuXG5sZXQgdmFsdWVfYXNfaW50X2V4biAodHlwZSBhKSAodCA6IGEgdCkgYSA9XG4gIGlmIE9iai5pc19pbnQgKE9iai5yZXByIGEpXG4gIHRoZW4gKE9iai5tYWdpYyAoYSA6IGEpIDogaW50KVxuICBlbHNlIGZhaWx3aXRoIChzcHJpbnRmIFwiSW1tZWRpYXRlLnZhbHVlX2FzX2ludF9leG46IHR5cGVuYW1lOiVTXCIgKFQudHlwZW5hbWUgdCkpXG47O1xuXG5sZXQgdmFsdWVfYXNfaW50ICh0eXBlIGEpIChfIDogYSB0KSBhID1cbiAgaWYgT2JqLmlzX2ludCAoT2JqLnJlcHIgYSkgdGhlbiBTb21lIChPYmoubWFnaWMgKGEgOiBhKSA6IGludCkgZWxzZSBOb25lXG47O1xuXG5sZXQgdmFsdWVfaXNfaW50ICh0eXBlIGEpIChfIDogYSB0KSBhID0gT2JqLmlzX2ludCAoT2JqLnJlcHIgYSlcblxubW9kdWxlIEFsd2F5cyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGluY2x1ZGUgRm9yX2FsbF9wYXJhbWV0ZXJzIChzdHJ1Y3RcbiAgICAgIGxldCBpbW1lZGlhY3kgPSBBbHdheXNcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3R5cGVyZXAgdHlwZXJlcCA9XG4gICAgbGV0IHQgPSBvZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgfCBBbHdheXMgLT4gU29tZSB0XG4gICAgfCBVbmtub3duIHwgTmV2ZXIgfCBTb21ldGltZXMgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBvZl90eXBlcmVwX2V4biBoZXJlIHR5cGVyZXAgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlIChvZl90eXBlcmVwIHR5cGVyZXApXG4gIGxldCBpbnRfYXNfdmFsdWUgPSBpbnRfYXNfdmFsdWVcbiAgbGV0IGludF9hc192YWx1ZV9leG4gPSBpbnRfYXNfdmFsdWVfZXhuXG4gIGxldCBpbnRfaXNfdmFsdWUgPSBpbnRfaXNfdmFsdWVcbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSB2YWx1ZV9hc19pbnQgKHR5cGUgYSkgXyBhID0gYSB8PiAoT2JqLm1hZ2ljIDogYSAtPiBpbnQpXG4gIGxldCBpbnQgPSBpbnRcbiAgbGV0IGNoYXIgPSBjaGFyXG4gIGxldCBib29sID0gYm9vbFxuICBsZXQgdW5pdCA9IHVuaXRcbmVuZFxuXG5tb2R1bGUgU29tZXRpbWVzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBGb3JfYWxsX3BhcmFtZXRlcnMgKHN0cnVjdFxuICAgICAgbGV0IGltbWVkaWFjeSA9IFNvbWV0aW1lc1xuICAgIGVuZClcblxuICBsZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgICBsZXQgdCA9IG9mX3R5cGVyZXAgdHlwZXJlcCBpblxuICAgIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgICB8IFNvbWV0aW1lcyAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBBbHdheXMgfCBOZXZlciAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IG9mX3R5cGVyZXBfZXhuIGhlcmUgdHlwZXJlcCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmUgKG9mX3R5cGVyZXAgdHlwZXJlcClcbiAgbGV0IGludF9hc192YWx1ZSA9IGludF9hc192YWx1ZVxuICBsZXQgaW50X2FzX3ZhbHVlX2V4biA9IGludF9hc192YWx1ZV9leG5cbiAgbGV0IGludF9pc192YWx1ZSA9IGludF9pc192YWx1ZVxuICBsZXQgdmFsdWVfYXNfaW50ID0gdmFsdWVfYXNfaW50XG4gIGxldCB2YWx1ZV9hc19pbnRfZXhuID0gdmFsdWVfYXNfaW50X2V4blxuICBsZXQgdmFsdWVfaXNfaW50ID0gdmFsdWVfaXNfaW50XG4gIGxldCBvcHRpb24gPSBvcHRpb25cbiAgbGV0IGxpc3QgPSBsaXN0XG5lbmRcblxubW9kdWxlIE5ldmVyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBGb3JfYWxsX3BhcmFtZXRlcnMgKHN0cnVjdFxuICAgICAgbGV0IGltbWVkaWFjeSA9IE5ldmVyXG4gICAgZW5kKVxuXG4gIGxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICAgIGxldCB0ID0gb2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgIHwgTmV2ZXIgLT4gU29tZSB0XG4gICAgfCBVbmtub3duIHwgQWx3YXlzIHwgU29tZXRpbWVzIC0+IE5vbmVcbiAgOztcblxuICBsZXQgb2ZfdHlwZXJlcF9leG4gaGVyZSB0eXBlcmVwID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZSAob2ZfdHlwZXJlcCB0eXBlcmVwKVxuXG4gIGluY2x1ZGUgTmV2ZXJfdmFsdWVzXG5lbmRcblxudHlwZSAnYSBkZXN0ID1cbiAgfCBBbHdheXMgb2YgJ2EgQWx3YXlzLnRcbiAgfCBTb21ldGltZXMgb2YgJ2EgU29tZXRpbWVzLnRcbiAgfCBOZXZlciBvZiAnYSBOZXZlci50XG4gIHwgVW5rbm93blxuXG5sZXQgZGVzdCB0ID1cbiAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICB8IEFsd2F5cyAtPiBBbHdheXMgdFxuICB8IFNvbWV0aW1lcyAtPiBTb21ldGltZXMgdFxuICB8IE5ldmVyIC0+IE5ldmVyIHRcbiAgfCBVbmtub3duIC0+IFVua25vd25cbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlIHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVDEgOiBUKSAoVDIgOiBUKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUMS50ICogVDIudFxuZW5kXG5cbm1vZHVsZSBUMiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAnYSAqICdiIFtAQGRlcml2aW5nIHNleHAsIHR5cGVyZXBdXG5cbiAgbGV0IGNyZWF0ZSBhIGIgPSBhLCBiXG5cbiAgbGV0IGN1cnJ5IGYgPVxuICAgICgpO1xuICAgIGZ1biBhIGIgLT4gZiAoYSwgYilcbiAgOztcblxuICBsZXQgdW5jdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gKGEsIGIpIC0+IGYgYSBiXG4gIDs7XG5cbiAgWyUlaWYgZmxhbWJkYV9iYWNrZW5kXVxuXG4gIGV4dGVybmFsIGdldDEgOiAoKCdhLCBfKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQwX2ltbXV0XCJcbiAgZXh0ZXJuYWwgZ2V0MiA6ICgoXywgJ2EpIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDFfaW1tdXRcIlxuXG4gIFslJWVsc2VdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgoJ2EsIF8pIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDBcIlxuICBleHRlcm5hbCBnZXQyIDogKChfLCAnYSkgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMVwiXG5cbiAgWyUlZW5kaWZdXG5cbiAgbGV0IG1hcCAoeCwgeSkgfmYgPSBmIHgsIGYgeVxuICBsZXQgbWFwX2ZzdCAoeCwgeSkgfmYgPSBmIHgsIHlcbiAgbGV0IG1hcF9zbmQgKHgsIHkpIH5mID0geCwgZiB5XG4gIGxldCBtYXBfYm90aCAoeCwgeSkgfmYxIH5mMiA9IGYxIHgsIGYyIHlcbiAgbGV0IG1hcDIgKHgxLCB5MSkgKHgyLCB5MikgfmYgPSBmIHgxIHgyLCBmIHkxIHkyXG5cbiAgbGV0IGNvbXBhcmUgfmNtcDEgfmNtcDIgKHgsIHkpICh4JywgeScpID1cbiAgICBtYXRjaCBjbXAxIHggeCcgd2l0aFxuICAgIHwgMCAtPiBjbXAyIHkgeSdcbiAgICB8IGkgLT4gaVxuICA7O1xuXG4gIGxldCBlcXVhbCB+ZXExIH5lcTIgKHgsIHkpICh4JywgeScpID0gZXExIHggeCcgJiYgZXEyIHkgeSdcbiAgbGV0IHN3YXAgKGEsIGIpID0gYiwgYVxuXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgY29tcGFyZSBjbXAxIGNtcDIgPSBjb21wYXJlIH5jbXAxIH5jbXAyXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBUMyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2EgKiAnYiAqICdjIFtAQGRlcml2aW5nIHNleHAsIHR5cGVyZXBdXG5cbiAgbGV0IGNyZWF0ZSBhIGIgYyA9IGEsIGIsIGNcblxuICBsZXQgY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIGEgYiBjIC0+IGYgKGEsIGIsIGMpXG4gIDs7XG5cbiAgbGV0IHVuY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIChhLCBiLCBjKSAtPiBmIGEgYiBjXG4gIDs7XG5cbiAgbGV0IG1hcCAoeCwgeSwgeikgfmYgPSBmIHgsIGYgeSwgZiB6XG4gIGxldCBtYXBfZnN0ICh4LCB5LCB6KSB+ZiA9IGYgeCwgeSwgelxuICBsZXQgbWFwX3NuZCAoeCwgeSwgeikgfmYgPSB4LCBmIHksIHpcbiAgbGV0IG1hcF90cmQgKHgsIHksIHopIH5mID0geCwgeSwgZiB6XG4gIGxldCBtYXBfYWxsICh4LCB5LCB6KSB+ZjEgfmYyIH5mMyA9IGYxIHgsIGYyIHksIGYzIHpcbiAgbGV0IG1hcDIgKHgxLCB5MSwgejEpICh4MiwgeTIsIHoyKSB+ZiA9IGYgeDEgeDIsIGYgeTEgeTIsIGYgejEgejJcblxuICBbJSVpZiBmbGFtYmRhX2JhY2tlbmRdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgoJ2EsIF8sIF8pIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDBfaW1tdXRcIlxuICBleHRlcm5hbCBnZXQyIDogKChfLCAnYSwgXykgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMV9pbW11dFwiXG5cbiAgWyUlZWxzZV1cblxuICBleHRlcm5hbCBnZXQxIDogKCgnYSwgXywgXykgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIGdldDIgOiAoKF8sICdhLCBfKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQxXCJcblxuICBbJSVlbmRpZl1cblxuICAoKiBUaGVyZSdzIG5vICVmaWVsZDIuLi4uKilcbiAgbGV0IGdldDMgKF8sIF8sIGEpID0gYVxuXG4gICgqIGxleGljb2dyYXBoaWMgY29tcGFyaXNvbiAgKilcbiAgbGV0IGNvbXBhcmUgfmNtcDEgfmNtcDIgfmNtcDMgKHgsIHksIHopICh4JywgeScsIHonKSA9XG4gICAgbGV0IGMxID0gY21wMSB4IHgnIGluXG4gICAgaWYgYzEgPD4gMFxuICAgIHRoZW4gYzFcbiAgICBlbHNlIChcbiAgICAgIGxldCBjMiA9IGNtcDIgeSB5JyBpblxuICAgICAgaWYgYzIgPD4gMCB0aGVuIGMyIGVsc2UgY21wMyB6IHonKVxuICA7O1xuXG4gIGxldCBlcXVhbCB+ZXExIH5lcTIgfmVxMyAoeCwgeSwgeikgKHgnLCB5JywgeicpID0gZXExIHggeCcgJiYgZXEyIHkgeScgJiYgZXEzIHogeidcbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wYXJhYmxlX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBIYXNoYWJsZV9zZXhwYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBpbmNsdWRlIEhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhhc2hlcl9zZXhwYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgU2V4cGFibGUgKFMxIDogU2V4cGFibGUuUykgKFMyIDogU2V4cGFibGUuUykgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUzEudCAqIFMyLnQgW0BAZGVyaXZpbmcgc2V4cF1cbmVuZFxuXG5tb2R1bGUgQmluYWJsZSAoQjEgOiBCaW5hYmxlLlMpIChCMiA6IEJpbmFibGUuUykgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQjEudCAqIEIyLnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuZW5kXG5cbm1vZHVsZSBDb21wYXJhdG9yIChTMSA6IENvbXBhcmF0b3IuUykgKFMyIDogQ29tcGFyYXRvci5TKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKFMxKSAoUzIpXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPVxuICAgIChTMS5jb21wYXJhdG9yX3dpdG5lc3MsIFMyLmNvbXBhcmF0b3Jfd2l0bmVzcykgVDIuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBUMi5jb21wYXJhdG9yIFMxLmNvbXBhcmF0b3IgUzIuY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBDb21wYXJhYmxlX3BsYWluIChTMSA6IENvbXBhcmFibGUuU19wbGFpbikgKFMyIDogQ29tcGFyYWJsZS5TX3BsYWluKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvciAoUzEpIChTMilcblxuICAgIGxldCBzZXhwX29mX3QgPSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgQ29tcGFyYWJsZSAoUzEgOiBDb21wYXJhYmxlX3NleHBhYmxlKSAoUzIgOiBDb21wYXJhYmxlX3NleHBhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2V4cGFibGUgKFMxKSAoUzIpXG5cbiAgICBsZXQgY29tcGFyZSAoczEsIHMyKSAoczEnLCBzMicpID1cbiAgICAgIG1hdGNoIFMxLmNvbXBhcmUgczEgczEnIHdpdGhcbiAgICAgIHwgMCAtPiBTMi5jb21wYXJlIHMyIHMyJ1xuICAgICAgfCB4IC0+IHhcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIEhhc2hlciAoSDEgOiBIYXNoZXJfc2V4cGFibGUpIChIMiA6IEhhc2hlcl9zZXhwYWJsZSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBIMS50ICogSDIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBIYXNoZXJfc2V4cGFibGVfb2ZfaGFzaGFibGVfc2V4cGFibGUgKFMgOiBIYXNoYWJsZV9zZXhwYWJsZSkgOlxuICBIYXNoZXJfc2V4cGFibGUgd2l0aCB0eXBlIHQgPSBTLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTXG5cbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG5lbmRcblxubW9kdWxlIEhhc2hhYmxlX3QgKFMxIDogSGFzaGFibGVfc2V4cGFibGUpIChTMiA6IEhhc2hhYmxlX3NleHBhYmxlKSA9XG4gIEhhc2hlclxuICAgIChIYXNoZXJfc2V4cGFibGVfb2ZfaGFzaGFibGVfc2V4cGFibGVcbiAgICAgICAoUzEpKVxuICAgIChIYXNoZXJfc2V4cGFibGVfb2ZfaGFzaGFibGVfc2V4cGFibGUgKFMyKSlcblxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGVfdFxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgU3VuXG4gICAgICAgIHwgTW9uXG4gICAgICAgIHwgVHVlXG4gICAgICAgIHwgV2VkXG4gICAgICAgIHwgVGh1XG4gICAgICAgIHwgRnJpXG4gICAgICAgIHwgU2F0XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVudW1lcmF0ZSwgaGFzaCwgcXVpY2tjaGVjaywgc3RhYmxlX3dpdG5lc3MsIHR5cGVyZXBdXG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFN1biAtPiBcIlNVTlwiXG4gICAgICAgIHwgTW9uIC0+IFwiTU9OXCJcbiAgICAgICAgfCBUdWUgLT4gXCJUVUVcIlxuICAgICAgICB8IFdlZCAtPiBcIldFRFwiXG4gICAgICAgIHwgVGh1IC0+IFwiVEhVXCJcbiAgICAgICAgfCBGcmkgLT4gXCJGUklcIlxuICAgICAgICB8IFNhdCAtPiBcIlNBVFwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nX2xvbmcgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFN1biAtPiBcIlN1bmRheVwiXG4gICAgICAgIHwgTW9uIC0+IFwiTW9uZGF5XCJcbiAgICAgICAgfCBUdWUgLT4gXCJUdWVzZGF5XCJcbiAgICAgICAgfCBXZWQgLT4gXCJXZWRuZXNkYXlcIlxuICAgICAgICB8IFRodSAtPiBcIlRodXJzZGF5XCJcbiAgICAgICAgfCBGcmkgLT4gXCJGcmlkYXlcIlxuICAgICAgICB8IFNhdCAtPiBcIlNhdHVyZGF5XCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmdfaW50ZXJuYWwgcyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy51cHBlcmNhc2UgcyB3aXRoXG4gICAgICAgIHwgXCJTVU5cIiB8IFwiU1VOREFZXCIgLT4gU3VuXG4gICAgICAgIHwgXCJNT05cIiB8IFwiTU9OREFZXCIgLT4gTW9uXG4gICAgICAgIHwgXCJUVUVcIiB8IFwiVFVFU0RBWVwiIC0+IFR1ZVxuICAgICAgICB8IFwiV0VEXCIgfCBcIldFRE5FU0RBWVwiIC0+IFdlZFxuICAgICAgICB8IFwiVEhVXCIgfCBcIlRIVVJTREFZXCIgLT4gVGh1XG4gICAgICAgIHwgXCJGUklcIiB8IFwiRlJJREFZXCIgLT4gRnJpXG4gICAgICAgIHwgXCJTQVRcIiB8IFwiU0FUVVJEQVlcIiAtPiBTYXRcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkRheV9vZl93ZWVrLm9mX3N0cmluZzogJVNcIiBzICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfaW50X2V4biBpID1cbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgIHwgMCAtPiBTdW5cbiAgICAgICAgfCAxIC0+IE1vblxuICAgICAgICB8IDIgLT4gVHVlXG4gICAgICAgIHwgMyAtPiBXZWRcbiAgICAgICAgfCA0IC0+IFRodVxuICAgICAgICB8IDUgLT4gRnJpXG4gICAgICAgIHwgNiAtPiBTYXRcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkRheV9vZl93ZWVrLm9mX2ludF9leG46ICVkXCIgaSAoKVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2ludCB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgU3VuIC0+IDBcbiAgICAgICAgfCBNb24gLT4gMVxuICAgICAgICB8IFR1ZSAtPiAyXG4gICAgICAgIHwgV2VkIC0+IDNcbiAgICAgICAgfCBUaHUgLT4gNFxuICAgICAgICB8IEZyaSAtPiA1XG4gICAgICAgIHwgU2F0IC0+IDZcbiAgICAgIDs7XG5cbiAgICAgICgqIEJlIHZlcnkgZ2VuZXJvdXMgd2l0aCBvZl9zdHJpbmcuICBXZSBhY2NlcHQgYWxsIHBvc3NpYmxlIGNhcGl0YWxpemF0aW9ucyBhbmQgdGhlXG4gICAgICAgICBpbnRlZ2VyIHJlcHJlc2VudGF0aW9ucyBhcyB3ZWxsLiAqKVxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgdHJ5IG9mX3N0cmluZ19pbnRlcm5hbCBzIHdpdGhcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgKHRyeSBvZl9pbnRfZXhuIChJbnQub2Zfc3RyaW5nIHMpIHdpdGhcbiAgICAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkRheV9vZl93ZWVrLm9mX3N0cmluZzogJVNcIiBzICgpKVxuICAgICAgOztcblxuICAgICAgKCogdGhpcyBpcyBpbiBUIHJhdGhlciB0aGFuIG91dHNpZGUgc28gdGhhdCB0aGUgbGF0ZXIgZnVuY3RvciBhcHBsaWNhdGlvbiB0byBidWlsZCBtYXBzXG4gICAgICAgICB1c2VzIHRoaXMgc2V4cCByZXByZXNlbnRhdGlvbiAqKVxuICAgICAgaW5jbHVkZSBTZXhwYWJsZS5TdGFibGUuT2Zfc3RyaW5nYWJsZS5WMSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgICAgICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID1cbiAgICAgICAgbGV0IG9wZW4gU2V4cGxpYjAuU2V4cF9ncmFtbWFyIGluXG4gICAgICAgIGxldCBhdG9tIG5hbWUgPSBOb190YWcgeyBuYW1lOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH0gaW5cbiAgICAgICAgbGV0IHVuc3VnZ2VzdGVkIGdyYW1tYXIgPVxuICAgICAgICAgIFRhZyB7IGtleSA9IGNvbXBsZXRpb25fc3VnZ2VzdGVkOyB2YWx1ZSA9IEF0b20gXCJmYWxzZVwiOyBncmFtbWFyIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGludF9jbGF1c2UgdCA9IHVuc3VnZ2VzdGVkIChhdG9tIChJbnQudG9fc3RyaW5nICh0b19pbnQgdCkpKSBpblxuICAgICAgICBsZXQgc2hvcnRfY2xhdXNlIHQgPSBhdG9tICh0b19zdHJpbmcgdCkgaW5cbiAgICAgICAgbGV0IGxvbmdfY2xhdXNlIHQgPSB1bnN1Z2dlc3RlZCAoYXRvbSAodG9fc3RyaW5nX2xvbmcgdCkpIGluXG4gICAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgICBMYXp5XG4gICAgICAgICAgICAgIChsYXp5XG4gICAgICAgICAgICAgICAgKFZhcmlhbnRcbiAgICAgICAgICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX2luc2Vuc2l0aXZlXG4gICAgICAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5jb25jYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICBbIExpc3QubWFwIGFsbCB+ZjppbnRfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgOyBMaXN0Lm1hcCBhbGwgfmY6c2hvcnRfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgOyBMaXN0Lm1hcCBhbGwgfmY6bG9uZ19jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcblxuICAgIG1vZHVsZSBVbnN0YWJsZSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIChDb21wYXJhYmxlLk1ha2VfYmluYWJsZSAoVCkgOiBDb21wYXJhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuICAgICAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVW5zdGFibGUpXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChVbnN0YWJsZSlcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjEuVW5zdGFibGVcblxubGV0IHdlZWtkYXlzID0gWyBNb247IFR1ZTsgV2VkOyBUaHU7IEZyaSBdXG5sZXQgd2Vla2VuZHMgPSBbIFNhdDsgU3VuIF1cblxubGV0IG9mX2ludCBpID1cbiAgdHJ5IFNvbWUgKG9mX2ludF9leG4gaSkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IGlzb184NjAxX3dlZWtkYXlfbnVtYmVyIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBNb24gLT4gMVxuICB8IFR1ZSAtPiAyXG4gIHwgV2VkIC0+IDNcbiAgfCBUaHUgLT4gNFxuICB8IEZyaSAtPiA1XG4gIHwgU2F0IC0+IDZcbiAgfCBTdW4gLT4gN1xuOztcblxubGV0IG51bV9kYXlzX2luX3dlZWsgPSA3XG5sZXQgc2hpZnQgdCBpID0gb2ZfaW50X2V4biAoSW50LiggJSApICh0b19pbnQgdCArIGkpIG51bV9kYXlzX2luX3dlZWspXG5cbmxldCBudW1fZGF5cyB+ZnJvbSB+dG9fID1cbiAgbGV0IGQgPSB0b19pbnQgdG9fIC0gdG9faW50IGZyb20gaW5cbiAgaWYgSW50LihkIDwgMCkgdGhlbiBkICsgbnVtX2RheXNfaW5fd2VlayBlbHNlIGRcbjs7XG5cbmxldCBpc19zdW5fb3Jfc2F0IHQgPSB0ID0gU3VuIHx8IHQgPSBTYXRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgUm91bmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFRvd2FyZF9wb3NpdGl2ZV9pbmZpbml0eVxuICAgIHwgVG93YXJkX25lZ2F0aXZlX2luZmluaXR5XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxubGV0IG1vZHVsZV9uYW1lID0gXCJEaWdpdF9zdHJpbmdfaGVscGVyc1wiXG5sZXQgaW50NjNfdHdvID0gSW50NjMub2ZfaW50IDJcbmxldCBpbnQ2M190ZW4gPSBJbnQ2My5vZl9pbnQgMTBcbmxldCBpbnQ2M190d2VudHkgPSBJbnQ2My5vZl9pbnQgMjBcbmxldCBpbnQ2M19iaWxsaW9uID0gSW50NjMub2ZfaW50IDFfMDAwXzAwMF8wMDBcbmxldCBtYXhfYmlsbGlvbnMgPSBJbnQ2My4oIC8gKSBJbnQ2My5tYXhfdmFsdWUgaW50NjNfYmlsbGlvblxuXG5sZXQgcmVjIGRpZ2l0c19vZl9wb3NpdGl2ZV9pbnQ2MyBuID1cbiAgaWYgSW50NjMuKCA8ICkgbiBpbnQ2M190ZW5cbiAgdGhlbiAxXG4gIGVsc2UgSW50LnN1Y2MgKGRpZ2l0c19vZl9wb3NpdGl2ZV9pbnQ2MyAoSW50NjMuKCAvICkgbiBpbnQ2M190ZW4pKVxuOztcblxubGV0IGRpZ2l0c19vZl9pbnQ2M19tYXhfdmFsdWUgPSBkaWdpdHNfb2ZfcG9zaXRpdmVfaW50NjMgSW50NjMubWF4X3ZhbHVlXG5cbmxldCByZWMgbWF4X2ludDYzX3dpdGggfmRpZ2l0cyA9XG4gIG1hdGNoIGRpZ2l0cyB3aXRoXG4gIHwgMSAtPiBJbnQ2My5vZl9pbnQgOVxuICB8IDIgLT4gSW50NjMub2ZfaW50IDk5XG4gIHwgMyAtPiBJbnQ2My5vZl9pbnQgOTk5XG4gIHwgNCAtPiBJbnQ2My5vZl9pbnQgOV85OTlcbiAgfCA1IC0+IEludDYzLm9mX2ludCA5OV85OTlcbiAgfCA2IC0+IEludDYzLm9mX2ludCA5OTlfOTk5XG4gIHwgNyAtPiBJbnQ2My5vZl9pbnQgOV85OTlfOTk5XG4gIHwgOCAtPiBJbnQ2My5vZl9pbnQgOTlfOTk5Xzk5OVxuICB8IDkgLT4gSW50NjMub2ZfaW50IDk5OV85OTlfOTk5XG4gIHwgXyAtPlxuICAgIGlmIGRpZ2l0cyA+PSBkaWdpdHNfb2ZfaW50NjNfbWF4X3ZhbHVlXG4gICAgdGhlbiBJbnQ2My5tYXhfdmFsdWVcbiAgICBlbHNlIChcbiAgICAgIGxldCBiaWxsaW9ucyA9IEludDYzLnN1Y2MgKG1heF9pbnQ2M193aXRoIH5kaWdpdHM6KGRpZ2l0cyAtIDkpKSBpblxuICAgICAgSW50NjMucHJlZCAoSW50NjMuKCAqICkgaW50NjNfYmlsbGlvbiBiaWxsaW9ucykpXG47O1xuXG5tb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gIGxldCB1bnNhZmVfY2hhcl9vZl9kaWdpdCBuID0gQ2hhci51bnNhZmVfb2ZfaW50IChDaGFyLnRvX2ludCAnMCcgKyBuKVxuICBsZXQgZGlnaXRfb2ZfY2hhciBjaGFyID0gQ2hhci5nZXRfZGlnaXRfZXhuIGNoYXJcblxuICBsZXQgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnl0ZXMgcG9zICh1bnNhZmVfY2hhcl9vZl9kaWdpdCBpbnQpXG4gIDs7XG5cbiAgbGV0IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IGludCAvIDEwIGluXG4gICAgbGV0IG9uZXMgPSBpbnQgLSAodGVucyAqIDEwKSBpblxuICAgIHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3Mgb25lcztcbiAgICB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDEpIGludCBpblxuICAgIHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyAyKSBpbnQgaW5cbiAgICB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgMykgaW50IGluXG4gICAgd3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDQpIGludCBpblxuICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA1KSBpbnQgaW5cbiAgICB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNikgaW50IGluXG4gICAgd3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDcpIGludCBpblxuICAgIHdyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA4KSBpbnQgaW5cbiAgICB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgcmV0dXJuX2JpbGxpb25zX2FuZF93cml0ZV9yZW1haW5kZXIgYnl0ZXMgfnBvcyBpbnQ2MyA9XG4gICAgbGV0IGJpbGxpb25zID0gSW50NjMuKCAvICkgaW50NjMgaW50NjNfYmlsbGlvbiBpblxuICAgIGxldCByZW1haW5kZXIgPSBJbnQ2My4oIC0gKSBpbnQ2MyAoSW50NjMuKCAqICkgYmlsbGlvbnMgaW50NjNfYmlsbGlvbikgaW5cbiAgICB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIHJlbWFpbmRlcik7XG4gICAgYmlsbGlvbnNcbiAgOztcblxuICBsZXQgcmVjIHdyaXRlX2ludDYzIGJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2MyA9XG4gICAgbWF0Y2ggZGlnaXRzIHdpdGhcbiAgICB8IDEgLT4gd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDIgLT4gd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDMgLT4gd3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDQgLT4gd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDUgLT4gd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDYgLT4gd3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDcgLT4gd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDggLT4gd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IDkgLT4gd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biBpbnQ2MylcbiAgICB8IF8gLT5cbiAgICAgIGxldCBkaWdpdHNfb2ZfYmlsbGlvbnMgPSBkaWdpdHMgLSA5IGluXG4gICAgICBsZXQgYmlsbGlvbnMgPVxuICAgICAgICByZXR1cm5fYmlsbGlvbnNfYW5kX3dyaXRlX3JlbWFpbmRlciBieXRlcyB+cG9zOihwb3MgKyBkaWdpdHNfb2ZfYmlsbGlvbnMpIGludDYzXG4gICAgICBpblxuICAgICAgd3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9iaWxsaW9ucyBiaWxsaW9uc1xuICA7O1xuXG4gIGxldCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zID0gZGlnaXRfb2ZfY2hhciAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nIHBvcylcblxuICBsZXQgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyAxKVxuICA7O1xuXG4gIGxldCByZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDIpXG4gIDs7XG5cbiAgbGV0IHJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgMylcbiAgOztcblxuICBsZXQgcmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA0KVxuICA7O1xuXG4gIGxldCByZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDUpXG4gIDs7XG5cbiAgbGV0IHJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNilcbiAgOztcblxuICBsZXQgcmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA3KVxuICA7O1xuXG4gIGxldCByZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDgpXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2ludDYzX292ZXJmbG93IG5hbWUgPVxuICAgIGludmFsaWRfYXJnZiBcIiVzLiVzOiBvdmVyZmxvdyByZWFkaW5nIGludDYzXCIgbW9kdWxlX25hbWUgbmFtZSAoKVxuICA7O1xuXG4gIGxldCByZWMgcmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgICBtYXRjaCBkaWdpdHMgd2l0aFxuICAgIHwgMSAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCAyIC0+IEludDYzLm9mX2ludCAocmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDMgLT4gSW50NjMub2ZfaW50IChyZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNCAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA1IC0+IEludDYzLm9mX2ludCAocmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDYgLT4gSW50NjMub2ZfaW50IChyZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNyAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA4IC0+IEludDYzLm9mX2ludCAocmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDkgLT4gSW50NjMub2ZfaW50IChyZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGRpZ2l0c19vZl9iaWxsaW9ucyA9IGRpZ2l0cyAtIDkgaW5cbiAgICAgIGxldCBiaWxsaW9ucyA9IHJlYWRfaW50NjMgc3RyaW5nIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfYmlsbGlvbnMgaW5cbiAgICAgIGxldCByZW1haW5kZXIgPVxuICAgICAgICBJbnQ2My5vZl9pbnQgKHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIGRpZ2l0c19vZl9iaWxsaW9ucykpXG4gICAgICBpblxuICAgICAgaWYgSW50NjMuKCA+ICkgYmlsbGlvbnMgbWF4X2JpbGxpb25zIHRoZW4gcmFpc2VfaW50NjNfb3ZlcmZsb3cgXCJyZWFkX2ludDYzXCI7XG4gICAgICBsZXQgc3VtID0gSW50NjMuKCArICkgKEludDYzLiggKiApIGJpbGxpb25zIGludDYzX2JpbGxpb24pIHJlbWFpbmRlciBpblxuICAgICAgaWYgSW50NjMuKCA8ICkgc3VtIEludDYzLnplcm8gdGhlbiByYWlzZV9pbnQ2M19vdmVyZmxvdyBcInJlYWRfaW50NjNcIjtcbiAgICAgIHN1bVxuICA7O1xuXG4gIGxldCBkaXZpZGVfYW5kX3JvdW5kX3VwIH5udW1lcmF0b3IgfmRlbm9taW5hdG9yID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgKG51bWVyYXRvciArIGRlbm9taW5hdG9yIC0gSW50NjMub25lKSAvJSBkZW5vbWluYXRvclxuICA7O1xuXG4gIGxldCByYWlzZV9pbnZhbGlkX2RlY2ltYWwgbmFtZSA9XG4gICAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IGludmFsaWQgZGVjaW1hbCBjaGFyYWN0ZXJcIiBtb2R1bGVfbmFtZSBuYW1lICgpXG4gIDs7XG5cbiAgKCogUmVhZHMgdGhlIHBvcnRpb24gb2Ygc3RyaW5nIGJldHdlZW4gW3Bvc10gYW5kIFtwb3MrZGVjaW1hbHMtMV0sIGluY2x1c2l2ZSwgYW5kXG4gICAgIGludGVycGVyZXRzIGl0IGFzIGEgcG9zaXRpdmUgZGVjaW1hbCBwYXJ0IG9mIGEgbnVtYmVyLCB3aGljaCB3ZSBjYWxsIFt4XS5cblxuICAgICBMZXQgW2ldIGFuZCBbcl0gYmUgdGhlIGludGVnZXIgcGFydCBhbmQgcmVtYWluaW5nIGZyYWN0aW9uYWwgcGFydCBvZlxuICAgICBbeCAqIHNjYWxlIC8gZGl2aXNvcl0uXG5cbiAgICAgSWYgW3IgPCByb3VuZF9hdC9kaXZpc29yXSwgcmV0dXJucyBbaV0uXG4gICAgIElmIFtyID0gcm91bmRfYXQvZGl2aXNvcl0sIHJldHVybnMgW2ldIG9yIFtpKzFdIGJhc2VkIG9uIFtyb3VuZF9leGFjdF0uXG4gICAgIElmIFtyID4gcm91bmRfYXQvZGl2aXNvcl0sIHJldHVybnMgW2krMV0uXG5cbiAgICAgQXNzdW1lcyB3aXRob3V0IGNoZWNraW5nIHRoYXQgW3NjYWxlXSBhbmQgW2Rpdmlzb3JdIGFyZSBib3RoIHBvc2l0aXZlIGFuZFxuICAgICBsZXNzIHRoYW4gW0ludDYzLm1heF92YWx1ZSAvIDEwXSAodG8gYXZvaWQgaW50ZXJuYWwgb3ZlcmZsb3cgZHVyaW5nIHRoZSBhbGdvcml0aG1cbiAgICAgd2hlbiBtdWx0aXBseWluZyBieSAxMCksIGFuZCB0aGF0IFtyb3VuZF9hdCA+PSAwXSBhbmQgW3JvdW5kX2F0IDwgZGl2aXNvcl0uICopXG4gIGxldCByZWFkX2ludDYzX2RlY2ltYWxfcm91bmRlZFxuICAgICAgICBzdHJpbmdcbiAgICAgICAgfnBvczpzdGFydFxuICAgICAgICB+ZGVjaW1hbHNcbiAgICAgICAgfnNjYWxlXG4gICAgICAgIH5kaXZpc29yXG4gICAgICAgIH5yb3VuZF9hdFxuICAgICAgICB+cm91bmRfZXhhY3RcbiAgICAgICAgfmFsbG93X3VuZGVyc2NvcmVcbiAgICA9XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCB1bnRpbCA9IEludC4oICsgKSBzdGFydCBkZWNpbWFscyBpblxuICAgICgqIFRoZSBsb29wIGludmFyaWFudCBpcyB0aGF0IGVhY2ggaXRlcmF0aW9uLCB3ZSBzdHJpcCBvZmYgdGhlIG5leHQgZGVjaW1hbCBkaWdpdCBhbmRcbiAgICAgICB1cGRhdGUgW3N1bV0sIFtyb3VuZF9hdF0sIGFuZCBbZGl2aXNvcl0gc3VjaCB0aGF0IHRoZSBkZXNpcmVkIHJlc3VsdCBpczpcblxuICAgICAgIFsgc3VtICsgcm91bmQocmVtYWluaW5nX2RpZ2l0c19vZl94X3BhcnNlZF9hc19kZWNpbWFsICogc2NhbGUgLyBkaXZpc29yKSBdXG4gICAgICAgd2hlcmUgXCJyb3VuZFwiIHJvdW5kcyBiYXNlZCBvbiB0aGUgbmV3IHZhbHVlIG9mIFtyb3VuZF9hdF0uXG4gICAgKilcbiAgICBsZXQgZGl2aXNvciA9IHJlZiBkaXZpc29yIGluXG4gICAgbGV0IHJvdW5kX2F0ID0gcmVmIHJvdW5kX2F0IGluXG4gICAgbGV0IHN1bSA9IHJlZiBJbnQ2My56ZXJvIGluXG4gICAgbGV0IHBvcyA9IHJlZiBzdGFydCBpblxuICAgICgqIFN0b3AgaWYgd2UgcnVuIG91dCBvZiBjaGFyYWN0ZXJzLCBvciBpZiBmdXJ0aGVyIGRpZ2l0cyBjYW5ub3QgaW5jcmVhc2Ugb3VyIHN1bS4gKilcbiAgICB3aGlsZSBJbnQuKCA8PiApICFwb3MgdW50aWwgJiYgIXJvdW5kX2F0IDwgc2NhbGUgZG9cbiAgICAgIChtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgfCAnMCcgLi4gJzknIGFzIGNoYXIgLT5cbiAgICAgICAgIGxldCBkaWdpdCA9IEludDYzLm9mX2ludCAoZGlnaXRfb2ZfY2hhciBjaGFyKSBpblxuICAgICAgICAgKCogRXZlcnkgbmV3IGRlY2ltYWwgcGxhY2UgaW1wbGljaXRseSBzY2FsZXMgb3VyIG51bWVyYXRvciBieSBhIGZhY3RvciBvZiB0ZW4sXG4gICAgICAgICAgICBzbyBtdXN0IGFsc28gZWZmZWN0aXZlbHkgc2NhbGUgb3VyIGRlbm9taW5hdG9yLlxuXG4gICAgICAgICAgICAwLmFiY2RlZiAqIHNjYWxlL2Rpdmlzb3IgICAgICAgIFtyb3VuZCBhdCByb3VuZF9hdF1cbiAgICAgICAgICAgID0gYS5iY2RlZiAqIHNjYWxlLyhkaXZpc29yKjEwKSAgW3JvdW5kIGF0IHJvdW5kX2F0KjEwXVxuXG4gICAgICAgICAgICBUaGVuIHJlZGVmaW5lIGRpdmlzb3IgOj0gZGl2aXNvcioxMCBhbmQgcm91bmRfYXQgOj0gcm91bmRfYXQqMTAsIHNvIHdlIGhhdmU6XG4gICAgICAgICAgICBhLmJjZGVmICogc2NhbGUvZGl2aXNvciBbcm91bmQgYXQgcm91bmRfYXRdICopXG4gICAgICAgICBkaXZpc29yIDo9ICFkaXZpc29yICogaW50NjNfdGVuO1xuICAgICAgICAgcm91bmRfYXQgOj0gIXJvdW5kX2F0ICogaW50NjNfdGVuO1xuICAgICAgICAgKCogTmV4dCB3ZSB3b3JrIG91dCB0aGUgcGFydCBvZiB0aGUgc3VtIGJhc2VkIG9uIG91ciBjdXJyZW50IGRpZ2l0OlxuXG4gICAgICAgICAgICBhLmJjZGVmICogc2NhbGUvZGl2aXNvciBbcm91bmQgYXQgcm91bmRfYXRdXG4gICAgICAgICAgICA9IGEuYmNkZWYgKiBzY2FsZS9kaXZpc29yIC0gcm91bmRfYXQgLyBkaXZpc29yICBbcm91bmQgYXQgMF1cbiAgICAgICAgICAgID0gKGEqc2NhbGUtcm91bmRfYXQpIC8gZGl2aXNvciArIDAuYmNkZWYgKiBzY2FsZS9kaXZpc29yICBbcm91bmQgYXQgMF1cblxuICAgICAgICAgICAgRGVjb21wb3NlIHRoZSBmaXJzdCB0ZXJtIGludG8gaW50ZWdlciBhbmQgcmVtYWluZGVyIHBhcnRzLlxuICAgICAgICAgICAgU2luY2Ugd2UgaGF2ZSBhbHJlYWR5IHN1YnRyYWN0ZWQgW3JvdW5kX2F0XSwgd2UgZGVjb21wb3NlIGJhc2VkXG4gICAgICAgICAgICBvbiB0aGUgY2VpbGluZyByYXRoZXIgdGhhbiB0aGUgZmxvb3Igb2YgdGhlIGRpdmlzaW9uLFxuICAgICAgICAgICAgZS5nLiA1LzMgd291bGQgZGVjb21wb3NlIGFzIDIgKyAoLTEpLzMsIHJhdGhlciB0aGFuIDEgKyAoMi8zKS5cblxuICAgICAgICAgICAgPSBpbmNyZW1lbnQgKyByZW1haW5kZXIvZGl2aXNvciArIDAuYmNkZWYgKiBzY2FsZS9kaXZpc29yICBbcm91bmQgYXQgMF1cbiAgICAgICAgICAgID0gaW5jcmVtZW50ICsgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAtcmVtYWluZGVyXVxuICAgICAgICAgKilcbiAgICAgICAgIGxldCBudW1lcmF0b3IgPSAoZGlnaXQgKiBzY2FsZSkgLSAhcm91bmRfYXQgaW5cbiAgICAgICAgIGxldCBkZW5vbWluYXRvciA9ICFkaXZpc29yIGluXG4gICAgICAgICBsZXQgaW5jcmVtZW50ID0gZGl2aWRlX2FuZF9yb3VuZF91cCB+bnVtZXJhdG9yIH5kZW5vbWluYXRvciBpblxuICAgICAgICAgbGV0IHJlbWFpbmRlciA9IG51bWVyYXRvciAtIChpbmNyZW1lbnQgKiBkZW5vbWluYXRvcikgaW5cbiAgICAgICAgICgqIE5vdyBqdXN0IGFjY3VtdWxhdGUgdGhlIG5ldyBpbmNyZW1lbnQgYW5kIGl0ZXJhdGUgb24gdGhlIHJlbWFpbmluZyBwYXJ0OlxuICAgICAgICAgICAgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAtcmVtYWluZGVyXS5cblxuICAgICAgICAgICAgU2luY2UgW3JlbWFpbmRlcl0gaXMgYmV0d2VlbiBbLShkaXZpc29yLTEpXSBhbmQgWzBdIGluY2x1c2l2ZSwgdGhlIG5ld1xuICAgICAgICAgICAgW3JvdW5kX2F0XSB3aWxsIGJlIHdpdGhpbiBbMF0gYW5kIFtkaXZpc29yLTFdIGluY2x1c2l2ZS4gKilcbiAgICAgICAgIHJvdW5kX2F0IDo9IC1yZW1haW5kZXI7XG4gICAgICAgICBzdW0gOj0gIXN1bSArIGluY3JlbWVudDtcbiAgICAgICAgICgqIFRoaXMgbGluZSBwcmV2ZW50cyB0aGUgZGl2aXNvciBmcm9tIGdyb3dpbmcgd2l0aG91dCBib3VuZCBhbmQgb3ZlcmZsb3dpbmcuIElmXG4gICAgICAgICAgICB0aGlzIGxpbmUgYWN0dWFsbHkgY2hhbmdlcyB0aGUgZGl2aXNvciwgdGhlbiB0aGUgZGl2aXNvciBpcyBsYXJnZXIgdGhhbiB0aGVcbiAgICAgICAgICAgIHNjYWxlLCBzbyB0aGUgc3VtIHdpbGwgaW5jcmVhc2UgaWYgYW5kIG9ubHkgaWYgW3BhcnNlZF9yZW1haW5pbmdfZGlnaXRzICpcbiAgICAgICAgICAgIHNjYWxlICg+IG9yID49KSByb3VuZF9hdF0sIHdoaWNoIGRvZXNuJ3QgZGVwZW5kIG9uIGhvdyBtdWNoIGxhcmdlciB0aGVcbiAgICAgICAgICAgIGRpdmlzb3IgaXMuIFNvIHRoaXMgY2hhbmdlIGlzIHNhZmUuICopXG4gICAgICAgICBkaXZpc29yIDo9IEludDYzLm1pbiBkZW5vbWluYXRvciBzY2FsZVxuICAgICAgIHwgJ18nIHdoZW4gYWxsb3dfdW5kZXJzY29yZSAtPiAoKVxuICAgICAgIHwgXyAtPiByYWlzZV9pbnZhbGlkX2RlY2ltYWwgXCJyZWFkX2ludDYzX2RlY2ltYWxcIik7XG4gICAgICBwb3MgOj0gSW50LnN1Y2MgIXBvc1xuICAgIGRvbmU7XG4gICAgaWYgIXJvdW5kX2F0ID0gemVyb1xuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggcm91bmRfZXhhY3Qgd2l0aFxuICAgICAgfCBSb3VuZC5Ub3dhcmRfbmVnYXRpdmVfaW5maW5pdHkgLT4gKClcbiAgICAgIHwgUm91bmQuVG93YXJkX3Bvc2l0aXZlX2luZmluaXR5IC0+IHN1bSA6PSAhc3VtICsgSW50NjMub25lKTtcbiAgICAhc3VtXG4gIDs7XG5cbiAgbGV0IHJlYWRfaW50NjNfZGVjaW1hbCBzdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlIH5yb3VuZF90aWVzIH5hbGxvd191bmRlcnNjb3JlID1cbiAgICByZWFkX2ludDYzX2RlY2ltYWxfcm91bmRlZFxuICAgICAgc3RyaW5nXG4gICAgICB+cG9zXG4gICAgICB+ZGVjaW1hbHNcbiAgICAgIH5zY2FsZTooSW50NjMuKCAqICkgc2NhbGUgaW50NjNfdHdvKVxuICAgICAgfmRpdmlzb3I6aW50NjNfdHdvXG4gICAgICB+cm91bmRfYXQ6SW50NjMub25lXG4gICAgICB+cm91bmRfZXhhY3Q6cm91bmRfdGllc1xuICAgICAgfmFsbG93X3VuZGVyc2NvcmVcbiAgOztcbmVuZFxuXG5sZXQgbWluX3NjYWxlID0gSW50NjMub25lXG5sZXQgbWF4X3NjYWxlID0gSW50NjMuKCAvICkgSW50NjMubWF4X3ZhbHVlIGludDYzX3R3ZW50eVxuXG5sZXQgcmFpc2VfbmVnYXRpdmVfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHMgPVxuICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogZGVjaW1hbHM9JWQgaXMgbmVnYXRpdmVcIiBtb2R1bGVfbmFtZSBuYW1lIGRlY2ltYWxzICgpXG47O1xuXG5sZXQgcmFpc2Vfbm9uX3Bvc2l0aXZlX2RpZ2l0cyBuYW1lIH5kaWdpdHMgPVxuICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogZGlnaXRzPSVkIGlzIG5vdCBhIHBvc2l0aXZlIG51bWJlclwiIG1vZHVsZV9uYW1lIG5hbWUgZGlnaXRzICgpXG47O1xuXG5sZXQgcmFpc2Vfc2NhbGVfb3V0X29mX2JvdW5kcyBuYW1lIH5zY2FsZSA9XG4gIGludmFsaWRfYXJnZlxuICAgIFwiJXMuJXM6IHNjYWxlPSVMZCBvdXQgb2YgcmFuZ2UgWyVMZCwgJUxkXVwiXG4gICAgbW9kdWxlX25hbWVcbiAgICBuYW1lXG4gICAgKEludDYzLnRvX2ludDY0IHNjYWxlKVxuICAgIChJbnQ2My50b19pbnQ2NCBtaW5fc2NhbGUpXG4gICAgKEludDYzLnRvX2ludDY0IG1heF9zY2FsZSlcbiAgICAoKVxuOztcblxubGV0IHJhaXNlX3Bvc19vdXRfb2ZfYm91bmRzIG5hbWUgfmxlbiB+cG9zIH5kaWdpdHMgPVxuICBpZiBwb3MgPCAwIHx8IHBvcyA+PSBsZW5cbiAgdGhlblxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCIlcy4lczogcG9zPSVkIG91dCBvZiByYW5nZSBmb3Igc3RyaW5nIG9mIGxlbmd0aCAlZFwiXG4gICAgICBtb2R1bGVfbmFtZVxuICAgICAgbmFtZVxuICAgICAgcG9zXG4gICAgICBsZW5cbiAgICAgICgpXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiJXMuJXM6ICVkIGRpZ2l0cyBkbyBub3QgZml0IGF0IHBvcyAlZCBpbiBzdHJpbmcgb2YgbGVuZ3RoICVkXCJcbiAgICAgIG1vZHVsZV9uYW1lXG4gICAgICBuYW1lXG4gICAgICBkaWdpdHNcbiAgICAgIHBvc1xuICAgICAgbGVuXG4gICAgICAoKVxuOztcblxubGV0IHJhaXNlX2ludF9vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnQgPVxuICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogJWQgb3V0IG9mIHJhbmdlIFswLCAlZF1cIiBtb2R1bGVfbmFtZSBuYW1lIGludCBtYXggKClcbjs7XG5cbmxldCByYWlzZV9pbnQ2M19vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnQ2MyA9XG4gIGludmFsaWRfYXJnZiAhXCIlcy4lczogJXtJbnQ2M30gb3V0IG9mIHJhbmdlIFswLCAle0ludDYzfV1cIiBtb2R1bGVfbmFtZSBuYW1lIGludDYzIG1heCAoKVxuOztcblxubGV0IGNoZWNrX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzID1cbiAgaWYgZGVjaW1hbHMgPCAwIHRoZW4gcmFpc2VfbmVnYXRpdmVfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHNcbjs7XG5cbmxldCBjaGVja19kaWdpdHMgbmFtZSB+ZGlnaXRzID0gaWYgZGlnaXRzIDwgMSB0aGVuIHJhaXNlX25vbl9wb3NpdGl2ZV9kaWdpdHMgbmFtZSB+ZGlnaXRzXG5cbmxldCBjaGVja19wb3MgbmFtZSB+bGVuIH5wb3MgfmRpZ2l0cyA9XG4gIGlmIHBvcyA8IDAgfHwgcG9zICsgZGlnaXRzID4gbGVuIHRoZW4gcmFpc2VfcG9zX291dF9vZl9ib3VuZHMgbmFtZSB+bGVuIH5wb3MgfmRpZ2l0c1xuOztcblxubGV0IGNoZWNrX2ludCBuYW1lIH5tYXggaW50ID1cbiAgaWYgaW50IDwgMCB8fCBpbnQgPiBtYXggdGhlbiByYWlzZV9pbnRfb3V0X29mX2JvdW5kcyBuYW1lIH5tYXggaW50XG47O1xuXG5sZXQgY2hlY2tfaW50NjMgbmFtZSB+bWF4IGludDYzID1cbiAgaWYgSW50NjMuKCA8ICkgaW50NjMgSW50NjMuemVybyB8fCBJbnQ2My4oID4gKSBpbnQ2MyBtYXhcbiAgdGhlbiByYWlzZV9pbnQ2M19vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnQ2M1xuOztcblxubGV0IGNoZWNrX3NjYWxlIG5hbWUgfnNjYWxlID1cbiAgaWYgSW50NjMuKCA8ICkgc2NhbGUgbWluX3NjYWxlIHx8IEludDYzLiggPiApIHNjYWxlIG1heF9zY2FsZVxuICB0aGVuIHJhaXNlX3NjYWxlX291dF9vZl9ib3VuZHMgbmFtZSB+c2NhbGVcbjs7XG5cbmxldCBjaGVja193cml0ZSBuYW1lIH5ieXRlcyB+cG9zIH5kaWdpdHMgfm1heCBpbnQgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ5dGVzIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zO1xuICBjaGVja19pbnQgbmFtZSB+bWF4IGludFxuOztcblxubGV0IGNoZWNrX3dyaXRlNjMgbmFtZSB+Ynl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzID1cbiAgY2hlY2tfZGlnaXRzIG5hbWUgfmRpZ2l0cztcbiAgbGV0IG1heCA9IG1heF9pbnQ2M193aXRoIH5kaWdpdHMgaW5cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBieXRlcyBpblxuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzIH5sZW4gfnBvcztcbiAgY2hlY2tfaW50NjMgbmFtZSB+bWF4IGludDYzXG47O1xuXG5sZXQgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzFfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czoxIH5tYXg6OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV8yX2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6MiB+bWF4Ojk5IGludDtcbiAgVW5zYWZlLndyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzNfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czozIH5tYXg6OTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzRfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo0IH5tYXg6OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfNV9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjUgfm1heDo5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfNl9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjYgfm1heDo5OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzdfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo3IH5tYXg6OV85OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzhfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo4IH5tYXg6OTlfOTk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV85X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6OSB+bWF4Ojk5OV85OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzID1cbiAgY2hlY2tfd3JpdGU2MyBcIndyaXRlX2ludDYzXCIgfmJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2MztcbiAgVW5zYWZlLndyaXRlX2ludDYzIGJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2M1xuOztcblxubGV0IGNoZWNrX3JlYWQgbmFtZSB+c3RyaW5nIH5wb3MgfmRpZ2l0cyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzIH5sZW4gfnBvc1xuOztcblxubGV0IGNoZWNrX3JlYWQ2MyBuYW1lIH5zdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgY2hlY2tfZGlnaXRzIG5hbWUgfmRpZ2l0cztcbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zXG47O1xuXG5sZXQgY2hlY2tfcmVhZDYzX2RlY2ltYWwgbmFtZSB+c3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICBjaGVja19kZWNpbWFscyBuYW1lIH5kZWNpbWFscztcbiAgY2hlY2tfc2NhbGUgbmFtZSB+c2NhbGU7XG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHM6ZGVjaW1hbHMgfmxlbiB+cG9zXG47O1xuXG5sZXQgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzFfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6MTtcbiAgVW5zYWZlLnJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfMl9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czoyO1xuICBVbnNhZmUucmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF8zX2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjM7XG4gIFVuc2FmZS5yZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzRfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NDtcbiAgVW5zYWZlLnJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfNV9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo1O1xuICBVbnNhZmUucmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF82X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjY7XG4gIFVuc2FmZS5yZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzdfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NztcbiAgVW5zYWZlLnJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfOF9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo4O1xuICBVbnNhZmUucmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF85X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjk7XG4gIFVuc2FmZS5yZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgY2hlY2tfcmVhZDYzIFwicmVhZF9pbnQ2M1wiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzO1xuICBVbnNhZmUucmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzXG47O1xuXG5sZXQgcmVhZF9pbnQ2M19kZWNpbWFsIHN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgfnJvdW5kX3RpZXMgfmFsbG93X3VuZGVyc2NvcmUgPVxuICBjaGVja19yZWFkNjNfZGVjaW1hbCBcInJlYWRfaW50NjNfZGVjaW1hbFwiIH5zdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlO1xuICBVbnNhZmUucmVhZF9pbnQ2M19kZWNpbWFsIHN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgfnJvdW5kX3RpZXMgfmFsbG93X3VuZGVyc2NvcmVcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBKYW5cbiAgICAgIHwgRmViXG4gICAgICB8IE1hclxuICAgICAgfCBBcHJcbiAgICAgIHwgTWF5XG4gICAgICB8IEp1blxuICAgICAgfCBKdWxcbiAgICAgIHwgQXVnXG4gICAgICB8IFNlcFxuICAgICAgfCBPY3RcbiAgICAgIHwgTm92XG4gICAgICB8IERlY1xuICAgIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2ssIHZhcmlhbnRzXVxuXG4gICAgbGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxuICAgIGxldCBvZl9pbnRfZXhuIGkgOiB0ID1cbiAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgfCAxIC0+IEphblxuICAgICAgfCAyIC0+IEZlYlxuICAgICAgfCAzIC0+IE1hclxuICAgICAgfCA0IC0+IEFwclxuICAgICAgfCA1IC0+IE1heVxuICAgICAgfCA2IC0+IEp1blxuICAgICAgfCA3IC0+IEp1bFxuICAgICAgfCA4IC0+IEF1Z1xuICAgICAgfCA5IC0+IFNlcFxuICAgICAgfCAxMCAtPiBPY3RcbiAgICAgIHwgMTEgLT4gTm92XG4gICAgICB8IDEyIC0+IERlY1xuICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIk1vbnRoLm9mX2ludF9leG4gJWRcIiBpICgpXG4gICAgOztcblxuICAgIGxldCBvZl9pbnQgaSA9XG4gICAgICB0cnkgU29tZSAob2ZfaW50X2V4biBpKSB3aXRoXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIDs7XG5cbiAgICBsZXQgdG9faW50ICh0IDogdCkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEphbiAtPiAxXG4gICAgICB8IEZlYiAtPiAyXG4gICAgICB8IE1hciAtPiAzXG4gICAgICB8IEFwciAtPiA0XG4gICAgICB8IE1heSAtPiA1XG4gICAgICB8IEp1biAtPiA2XG4gICAgICB8IEp1bCAtPiA3XG4gICAgICB8IEF1ZyAtPiA4XG4gICAgICB8IFNlcCAtPiA5XG4gICAgICB8IE9jdCAtPiAxMFxuICAgICAgfCBOb3YgLT4gMTFcbiAgICAgIHwgRGVjIC0+IDEyXG4gICAgOztcblxuICAgIGxldCB0b19iaW5hYmxlIHQgPSB0b19pbnQgdCAtIDFcbiAgICBsZXQgb2ZfYmluYWJsZSBpID0gb2ZfaW50X2V4biAoaSArIDEpXG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChJbnQuU3RhYmxlLlYxKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYmluYWJsZVxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSBJbnQuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzIG9mX2JpbmFibGUgdG9fYmluYWJsZVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmxldCBudW1fbW9udGhzID0gMTJcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGFibGUuVjFcblxuICBsZXQgYWxsID0gWyBKYW47IEZlYjsgTWFyOyBBcHI7IE1heTsgSnVuOyBKdWw7IEF1ZzsgU2VwOyBPY3Q7IE5vdjsgRGVjIF1cbiAgbGV0IGhhc2ggPSB0b19pbnRcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSAoXG4gIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gIGVuZCkgOlxuICAgIEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgKCogSW4gMTA4LjA2YSBhbmQgZWFybGllciwgbW9udGhzIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgaW50cy4gIEZyb20gMTA4LjA3XG4gICAgICAgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kXG4gICAgICAgcHJldHR5IGZvcm1hdCB3ZXJlIGFjY2VwdGVkIGFzIGlucHV0LiAgRnJvbSAxMDkuMTQgb24sIHRoZSBvdXRwdXQgZm9ybWF0IHdhc1xuICAgICAgIGNoYW5nZWQgZnJvbSByYXcgdG8gcHJldHR5LCB3aGlsZSBjb250aW51aW5nIHRvIGFjY2VwdCBib3RoIGZvcm1hdHMuICBPbmNlIHdlIGJlbGlldmVcbiAgICAgICBtb3N0IHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgICByYXcuICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IEludC50X29mX3NleHAgc2V4cCkgd2l0aFxuICAgICAgfCBTb21lIGkgLT4gb2ZfaW50X2V4biAoaSArIDEpXG4gICAgICB8IE5vbmUgLT4gVC50X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZClcblxuKCogUmVwbGFjZSB0aGUgb3ZlcnJpZGVuIHNleHAgY29udmVydGVycyBmcm9tIFtDb21wYXJhYmxlLk1ha2VfYmluYWJsZV0gd2l0aCB0aGUgb3JkaW5hcnlcbiAgIHN5bWJvbGljIGNvbnZlcnRlcnMuICopXG5sZXQgc2V4cF9vZl90ID0gVC5zZXhwX29mX3RcbmxldCB0X29mX3NleHAgPSBULnRfb2Zfc2V4cFxubGV0IHNoaWZ0IHQgaSA9IG9mX2ludF9leG4gKDEgKyBJbnQuKCAlICkgKHRvX2ludCB0IC0gMSArIGkpIG51bV9tb250aHMpXG5cbmxldCBhbGxfc3RyaW5ncyA9XG4gIGxhenlcbiAgICAoQXJyYXkub2ZfbGlzdCAoTGlzdC5tYXAgYWxsIH5mOihmdW4gdmFyaWFudCAtPiBTZXhwLnRvX3N0cmluZyAoc2V4cF9vZl90IHZhcmlhbnQpKSkpXG47O1xuXG5sZXQgdG9fc3RyaW5nICh0IDogdCkgPVxuICBsZXQgYWxsX3N0cmluZ3MgPSBMYXp5LmZvcmNlIGFsbF9zdHJpbmdzIGluXG4gIGFsbF9zdHJpbmdzLih0b19pbnQgdCAtIDEpXG47O1xuXG5sZXQgb2Zfc3RyaW5nID1cbiAgbGV0IHRhYmxlID1cbiAgICBsYXp5XG4gICAgICAobGV0IG1vZHVsZSBUID0gU3RyaW5nLlRhYmxlIGluXG4gICAgICAgbGV0IHRhYmxlID0gVC5jcmVhdGUgfnNpemU6bnVtX21vbnRocyAoKSBpblxuICAgICAgIEFycmF5Lml0ZXJpIChMYXp5LmZvcmNlIGFsbF9zdHJpbmdzKSB+ZjooZnVuIGkgcyAtPlxuICAgICAgICAgbGV0IHQgPSBvZl9pbnRfZXhuIChpICsgMSkgaW5cbiAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6cyB+ZGF0YTp0O1xuICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTooU3RyaW5nLmxvd2VyY2FzZSBzKSB+ZGF0YTp0O1xuICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTooU3RyaW5nLnVwcGVyY2FzZSBzKSB+ZGF0YTp0KTtcbiAgICAgICB0YWJsZSlcbiAgaW5cbiAgZnVuIHN0ciAtPlxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCAoTGF6eS5mb3JjZSB0YWJsZSkgc3RyIHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIkludmFsaWQgbW9udGg6ICVzXCIgc3RyICgpXG47O1xuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgbW9udGggPSB0ID1cbiAgICB8IEphblxuICAgIHwgRmViXG4gICAgfCBNYXJcbiAgICB8IEFwclxuICAgIHwgTWF5XG4gICAgfCBKdW5cbiAgICB8IEp1bFxuICAgIHwgQXVnXG4gICAgfCBTZXBcbiAgICB8IE9jdFxuICAgIHwgTm92XG4gICAgfCBEZWNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBEaWdpdF9zdHJpbmdfaGVscGVyc1xuXG5sZXQgaXNfbGVhcF95ZWFyIH55ZWFyID0gKHllYXIgbW9kIDQgPSAwICYmIG5vdCAoeWVhciBtb2QgMTAwID0gMCkpIHx8IHllYXIgbW9kIDQwMCA9IDBcblxuKCogQ3JlYXRlIGEgbG9jYWwgcHJpdmF0ZSBkYXRlIHR5cGUgdG8gZW5zdXJlIHRoYXQgYWxsIGRhdGVzIGFyZSBjcmVhdGVkIHZpYVxuICAgRGF0ZS5jcmVhdGVfZXhuLlxuKilcbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYWJsZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgdmFsIGNyZWF0ZV9leG4gOiB5OmludCAtPiBtOk1vbnRoLlN0YWJsZS5WMS50IC0+IGQ6aW50IC0+IHRcbiAgICAgICAgdmFsIHllYXIgOiB0IC0+IGludFxuICAgICAgICB2YWwgbW9udGggOiB0IC0+IE1vbnRoLlN0YWJsZS5WMS50XG4gICAgICAgIHZhbCBkYXkgOiB0IC0+IGludFxuICAgICAgICB2YWwgZGF5c19pbl9tb250aCA6IHllYXI6aW50IC0+IG1vbnRoOk1vbnRoLnQgLT4gaW50XG4gICAgICAgIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICAgICAgICB2YWwgb2ZfaW50X2V4biA6IGludCAtPiB0XG4gICAgICAgIHZhbCBvZl9pbnRfdW5jaGVja2VkIDogaW50IC0+IHRcbiAgICAgICAgdmFsIGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSA6IHRcbiAgICAgIGVuZCA9IHN0cnVjdFxuICAgICAgICAoKiBXZSB1c2VkIHRvIHN0b3JlIGRhdGVzIGxpa2UgdGhpczpcbiAgICAgICAgICAgdHlwZSB0ID0geyB5OiBpbnQ7IG06IE1vbnRoLlN0YWJsZS5WMS50OyBkOiBpbnQ7IH1cbiAgICAgICAgICAgSW4gdGhlIGJlbG93IHdlIG1ha2Ugc3VyZSB0aGF0IHRoZSBiaW5faW8gcmVwcmVzZW50YXRpb24gaXNcbiAgICAgICAgICAgaWRlbnRpY2FsIChhbmQgdGhlIHN0YWJsZSB1bml0IHRlc3RzIGNoZWNrIHRoaXMpXG5cbiAgICAgICAgICAgSW4gbWVtb3J5IHdlIHVzZSB0aGUgZm9sbG93aW5nIG11Y2ggbW9yZSBjb21wYWN0IHJlcHJlc2VudGF0aW9uOlxuICAgICAgICAgICAyIGJ5dGVzIHllYXJcbiAgICAgICAgICAgMSBieXRlIG1vbnRoXG4gICAgICAgICAgIDEgYnl0ZSBkYXlcblxuICAgICAgICAgICBhbGwgcGFja2VkIGludG8gYSBzaW5nbGUgaW1tZWRpYXRlIGludCAoc28gZnJvbSA0IHdvcmRzIGRvd24gdG8gMSkuXG4gICAgICAgICopXG4gICAgICAgIHR5cGUgdCA9IGludFxuICAgICAgICBbQEBkZXJpdmluZ1xuICAgICAgICAgIGNvbXBhcmVcbiAgICAgICAgLCBlcXVhbFxuICAgICAgICAsIGhhc2hcbiAgICAgICAgLCB0eXBlcmVwXG4gICAgICAgICwgYmluX3NoYXBlIH5iYXNldHlwZTpcIjg5OWVlM2UwLTQ5MGEtMTFlNi1hMTBhLWEzNzM0ZjczMzU2NlwiXG4gICAgICAgICwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgbGV0IGNyZWF0ZTAgfnllYXIgfm1vbnRoIH5kYXkgPVxuICAgICAgICAgICgqIGNyZWF0ZV9leG4ncyB2YWxpZGF0aW9uIG1ha2Ugc3VyZSB0aGF0IGVhY2ggdmFsdWUgZml0cyAqKVxuICAgICAgICAgICh5ZWFyIGxzbCAxNikgbG9yIChNb250aC50b19pbnQgbW9udGggbHNsIDgpIGxvciBkYXlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgb2ZfaW50X3VuY2hlY2tlZCB0ID0gdFxuICAgICAgICBsZXQgeWVhciB0ID0gdCBsc3IgMTZcbiAgICAgICAgbGV0IG1vbnRoIHQgPSBNb250aC5vZl9pbnRfZXhuICgodCBsc3IgOCkgbGFuZCAweGZmKVxuICAgICAgICBsZXQgZGF5IHQgPSB0IGxhbmQgMHhmZlxuXG4gICAgICAgIGxldCBkYXlzX2luX21vbnRoIH55ZWFyIH5tb250aCA9XG4gICAgICAgICAgbWF0Y2ggKG1vbnRoIDogTW9udGgudCkgd2l0aFxuICAgICAgICAgIHwgSmFuIHwgTWFyIHwgTWF5IHwgSnVsIHwgQXVnIHwgT2N0IHwgRGVjIC0+IDMxXG4gICAgICAgICAgfCBBcHIgfCBKdW4gfCBTZXAgfCBOb3YgLT4gMzBcbiAgICAgICAgICB8IEZlYiAtPiBpZiBpc19sZWFwX3llYXIgfnllYXIgdGhlbiAyOSBlbHNlIDI4XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNyZWF0ZV9leG4gfnk6eWVhciB+bTptb250aCB+ZDpkYXkgPVxuICAgICAgICAgICgqIHllYXIsIG1vbnRoLCBhbmQgZGF5IG5lZWQgdG8gYmUgcGFzc2VkIGFzIHBhcmFtZXRlcnMgdG8gYXZvaWQgYWxsb2NhdGluZ1xuICAgICAgICAgICAgIGEgY2xvc3VyZSAoc2VlIHVuaXQgdGVzdCBiZWxvdykgKilcbiAgICAgICAgICBsZXQgaW52YWxpZCB+eWVhciB+bW9udGggfmRheSBtc2cgPVxuICAgICAgICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgICAgICAgICFcIkRhdGUuY3JlYXRlX2V4biB+eTolZCB+bTole01vbnRofSB+ZDolZCBlcnJvcjogJXNcIlxuICAgICAgICAgICAgICB5ZWFyXG4gICAgICAgICAgICAgIG1vbnRoXG4gICAgICAgICAgICAgIGRheVxuICAgICAgICAgICAgICBtc2dcbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHllYXIgPCAwIHx8IHllYXIgPiA5OTk5XG4gICAgICAgICAgdGhlbiBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IFwieWVhciBvdXRzaWRlIG9mIFswLi45OTk5XVwiO1xuICAgICAgICAgIGlmIGRheSA8PSAwIHRoZW4gaW52YWxpZCB+eWVhciB+bW9udGggfmRheSBcImRheSA8PSAwXCI7XG4gICAgICAgICAgbGV0IGRheXNfaW5fbW9udGggPSBkYXlzX2luX21vbnRoIH55ZWFyIH5tb250aCBpblxuICAgICAgICAgIGlmIGRheSA+IGRheXNfaW5fbW9udGhcbiAgICAgICAgICB0aGVuIGludmFsaWQgfnllYXIgfm1vbnRoIH5kYXkgKHNwcmludGYgXCIlZCBkYXkgbW9udGggdmlvbGF0aW9uXCIgZGF5c19pbl9tb250aCk7XG4gICAgICAgICAgY3JlYXRlMCB+eWVhciB+bW9udGggfmRheVxuICAgICAgICA7O1xuXG4gICAgICAgICgqIFdlIGRvbid0IHVzZSBNYWtlX2JpbmFibGUgaGVyZSwgYmVjYXVzZSB0aGF0IHdvdWxkIGdvIHZpYSBhbiBpbW1lZGlhdGVcbiAgICAgICAgICAgdHVwbGUgb3IgcmVjb3JkLiAgVGhhdCBpcyBleGFjdGx5IHRoZSAzMiBieXRlcyB3ZSB3b3JrZWQgc28gaGFyZCBhYm92ZSB0b1xuICAgICAgICAgICBnZXQgcmlkIG9mLiAgV2UgYWxzbyBkb24ndCB3YW50IHRvIGp1c3QgYmluX2lvIHRoZSBpbnRlZ2VyIGRpcmVjdGx5XG4gICAgICAgICAgIGJlY2F1c2UgdGhhdCB3b3VsZCBtZWFuIGEgbmV3IGJpbl9pbyBmb3JtYXQuICAqKVxuXG4gICAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgICAgICAgbGV0IHllYXIgPSBJbnQuYmluX3JlYWRfdCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgICBsZXQgbW9udGggPSBNb250aC5TdGFibGUuVjEuYmluX3JlYWRfdCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgICBsZXQgZGF5ID0gSW50LmJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgICAgY3JlYXRlMCB+eWVhciB+bW9udGggfmRheVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmID1cbiAgICAgICAgICAoKiBfX2Jpbl9yZWFkX3QgaXMgb25seSBuZWVkZWQgZm9yIHZhcmlhbnRzICopXG4gICAgICAgICAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkRhdGUudFwiICFwb3NfcmVmXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl9zaXplX3QgdCA9XG4gICAgICAgICAgSW50LmJpbl9zaXplX3QgKHllYXIgdCkgKyBNb250aC5iaW5fc2l6ZV90IChtb250aCB0KSArIEludC5iaW5fc2l6ZV90IChkYXkgdClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgICAgICAgbGV0IHBvcyA9IEludC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoeWVhciB0KSBpblxuICAgICAgICAgIGxldCBwb3MgPSBNb250aC5iaW5fd3JpdGVfdCBidWYgfnBvcyAobW9udGggdCkgaW5cbiAgICAgICAgICBJbnQuYmluX3dyaXRlX3QgYnVmIH5wb3MgKGRheSB0KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBiaW5fd3JpdGVyX3QgPSB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuXG4gICAgICAgIGxldCBiaW5fdCA9XG4gICAgICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciA9IGJpbl9yZWFkZXJfdFxuICAgICAgICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90XG4gICAgICAgICAgOyBzaGFwZSA9IGJpbl9zaGFwZV90XG4gICAgICAgICAgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19pbnQgdCA9IHRcbiAgICAgICAgbGV0IG9mX2ludF9leG4gbiA9IGNyZWF0ZV9leG4gfnk6KHllYXIgbikgfm06KG1vbnRoIG4pIH5kOihkYXkgbilcbiAgICAgICAgbGV0IGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSA9IDBcblxuICAgICAgICBsZXQldGVzdCBcImludmFsaWQgdmFsdWVcIiA9XG4gICAgICAgICAgRXhuLmRvZXNfcmFpc2UgKGZ1biAoKSA6IHQgLT4gb2ZfaW50X2V4biBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cblxuICAgICAgKCoqIFlZWVktTU0tREQgKilcbiAgICAgIGxldCB0b19zdHJpbmdfaXNvODYwMV9leHRlbmRlZCB0ID1cbiAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAxMCBpblxuICAgICAgICB3cml0ZV80X2RpZ2l0X2ludCBidWYgfnBvczowICh5ZWFyIHQpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDQgJy0nO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo1IChNb250aC50b19pbnQgKG1vbnRoIHQpKTtcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA3ICctJztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6OCAoZGF5IHQpO1xuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ19pc284NjAxX2V4dGVuZGVkXG5cbiAgICAgICgqKiBZWVlZTU1ERCAqKVxuICAgICAgbGV0IHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIHQgPVxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDggaW5cbiAgICAgICAgd3JpdGVfNF9kaWdpdF9pbnQgYnVmIH5wb3M6MCAoeWVhciB0KTtcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NCAoTW9udGgudG9faW50IChtb250aCB0KSk7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjYgKGRheSB0KTtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgIDs7XG5cbiAgICAgICgqKiBNTS9ERC9ZWVlZICopXG4gICAgICBsZXQgdG9fc3RyaW5nX2FtZXJpY2FuIHQgPVxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEwIGluXG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjAgKE1vbnRoLnRvX2ludCAobW9udGggdCkpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDIgJy8nO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczozIChkYXkgdCk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgNSAnLyc7XG4gICAgICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ1ZiB+cG9zOjYgKHllYXIgdCk7XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2VfeWVhcjQgc3RyIHBvcyA9IHJlYWRfNF9kaWdpdF9pbnQgc3RyIH5wb3NcbiAgICAgIGxldCBwYXJzZV9tb250aCBzdHIgcG9zID0gTW9udGgub2ZfaW50X2V4biAocmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvcylcbiAgICAgIGxldCBwYXJzZV9kYXkgc3RyIHBvcyA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3NcblxuICAgICAgKCoqIFlZWVlNTUREICopXG4gICAgICBsZXQgb2Zfc3RyaW5nX2lzbzg2MDFfYmFzaWMgc3RyIH5wb3MgPVxuICAgICAgICBpZiBwb3MgKyA4ID4gU3RyaW5nLmxlbmd0aCBzdHJcbiAgICAgICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRhdGUub2Zfc3RyaW5nX2lzbzg2MDFfYmFzaWM6IHBvcyArIDggPiBzdHJpbmcgbGVuZ3RoXCI7XG4gICAgICAgIGNyZWF0ZV9leG5cbiAgICAgICAgICB+eToocGFyc2VfeWVhcjQgc3RyIHBvcylcbiAgICAgICAgICB+bToocGFyc2VfbW9udGggc3RyIChwb3MgKyA0KSlcbiAgICAgICAgICB+ZDoocGFyc2VfZGF5IHN0ciAocG9zICsgNikpXG4gICAgICA7O1xuXG4gICAgICAoKiBXQVJOSU5HOiBpZiB5b3UgYXJlIGdvaW5nIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGluIGEgbWF0ZXJpYWwgd2F5LCBiZSBzdXJlIHlvdVxuICAgICAgICAgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHdvcmtpbmcgaW4gU3RhYmxlICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICBsZXQgaW52YWxpZCAoKSA9IGZhaWx3aXRoIChcImludmFsaWQgZGF0ZTogXCIgXiBzKSBpblxuICAgICAgICBsZXQgZW5zdXJlIGIgPSBpZiBub3QgYiB0aGVuIGludmFsaWQgKCkgaW5cbiAgICAgICAgbGV0IG1vbnRoX251bSB+eWVhciB+bW9udGggfmRheSA9XG4gICAgICAgICAgY3JlYXRlX2V4biB+eToocGFyc2VfeWVhcjQgcyB5ZWFyKSB+bToocGFyc2VfbW9udGggcyBtb250aCkgfmQ6KHBhcnNlX2RheSBzIGRheSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vbnRoX2FicnYgfnllYXIgfm1vbnRoIH5kYXkgPVxuICAgICAgICAgIGNyZWF0ZV9leG5cbiAgICAgICAgICAgIH55OihwYXJzZV95ZWFyNCBzIHllYXIpXG4gICAgICAgICAgICB+bTooTW9udGgub2Zfc3RyaW5nIChTdHJpbmcuc3ViIHMgfnBvczptb250aCB+bGVuOjMpKVxuICAgICAgICAgICAgfmQ6KHBhcnNlX2RheSBzIGRheSlcbiAgICAgICAgaW5cbiAgICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJy8nXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB5LCBtLCBkID1cbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonLycgd2l0aFxuICAgICAgICAgICAgfCBbIGE7IGI7IGMgXSAtPlxuICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIGEgPSA0IHRoZW4gYSwgYiwgYyAoKiB5L20vZCAqKSBlbHNlIGMsIGEsIGIgKCogbS9kL3kgKilcbiAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgeWVhciA9IEludC5vZl9zdHJpbmcgeSBpblxuICAgICAgICAgIGxldCB5ZWFyID1cbiAgICAgICAgICAgIGlmIHllYXIgPj0gMTAwIHRoZW4geWVhciBlbHNlIGlmIHllYXIgPCA3NSB0aGVuIDIwMDAgKyB5ZWFyIGVsc2UgMTkwMCArIHllYXJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBtb250aCA9IE1vbnRoLm9mX2ludF9leG4gKEludC5vZl9zdHJpbmcgbSkgaW5cbiAgICAgICAgICBsZXQgZGF5ID0gSW50Lm9mX3N0cmluZyBkIGluXG4gICAgICAgICAgY3JlYXRlX2V4biB+eTp5ZWFyIH5tOm1vbnRoIH5kOmRheSlcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgcyAnLSdcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogeXl5eS1tbS1kZCAqKVxuICAgICAgICAgIGVuc3VyZSAoU3RyaW5nLmxlbmd0aCBzID0gMTAgJiYgQ2hhci4oID0gKSBzLls0XSAnLScgJiYgQ2hhci4oID0gKSBzLls3XSAnLScpO1xuICAgICAgICAgIG1vbnRoX251bSB+eWVhcjowIH5tb250aDo1IH5kYXk6OClcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgcyAnICdcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggcyA9IDExICYmIENoYXIuKCA9ICkgcy5bMl0gJyAnICYmIENoYXIuKCA9ICkgcy5bNl0gJyAnXG4gICAgICAgICAgdGhlbiAoKiBERCBNTU0gWVlZWSAqKVxuICAgICAgICAgICAgbW9udGhfYWJydiB+ZGF5OjAgfm1vbnRoOjMgfnllYXI6N1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgKCogWVlZWSBNTU0gREQgKilcbiAgICAgICAgICAgIGVuc3VyZSAoU3RyaW5nLmxlbmd0aCBzID0gMTEgJiYgQ2hhci4oID0gKSBzLls0XSAnICcgJiYgQ2hhci4oID0gKSBzLls4XSAnICcpO1xuICAgICAgICAgICAgbW9udGhfYWJydiB+ZGF5Ojkgfm1vbnRoOjUgfnllYXI6MClcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcubGVuZ3RoIHMgPSA5XG4gICAgICAgIHRoZW4gKCogRERNTU1ZWVlZICopXG4gICAgICAgICAgbW9udGhfYWJydiB+ZGF5OjAgfm1vbnRoOjIgfnllYXI6NVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5sZW5ndGggcyA9IDhcbiAgICAgICAgdGhlbiAoKiBhc3N1bWUgWVlZWU1NREQgKilcbiAgICAgICAgICBtb250aF9udW0gfnllYXI6MCB+bW9udGg6NCB+ZGF5OjZcbiAgICAgICAgZWxzZSBpbnZhbGlkICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICB0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBpbnZhbGlkX2FyZ2YgXCJEYXRlLm9mX3N0cmluZyAoJXMpOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBPbGRfZGF0ZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICB7IHkgOiBpbnRcbiAgICAgICAgICAgIDsgbSA6IGludFxuICAgICAgICAgICAgOyBkIDogaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgICAgIGxldCB0b19kYXRlIHQgPSBULmNyZWF0ZV9leG4gfnk6dC55IH5tOihNb250aC5vZl9pbnRfZXhuIHQubSkgfmQ6dC5kXG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgICAgIHwgU2V4cC5BdG9tIHMgLT4gb2Zfc3RyaW5nIHNcbiAgICAgICAgICB8IFNleHAuTGlzdCBfIGFzIHNleHAgLT4gT2xkX2RhdGUudG9fZGF0ZSAoT2xkX2RhdGUudF9vZl9zZXhwIHNleHApXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzID1cbiAgICAgICAgICB0cnkgdF9vZl9zZXhwIHMgd2l0aFxuICAgICAgICAgIHwgT2Zfc2V4cF9lcnJvciBfIGFzIGV4biAtPiByYWlzZSBleG5cbiAgICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgYSAtPiBvZl9zZXhwX2Vycm9yIGEgc1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID1cbiAgICAgICAgICBsZXQgb3BlbiBTZXhwbGliIGluXG4gICAgICAgICAgU2V4cF9ncmFtbWFyLnRhZ1xuICAgICAgICAgICAgKFNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyIDogdCBTZXhwX2dyYW1tYXIudClcbiAgICAgICAgICAgIH5rZXk6U2V4cF9ncmFtbWFyLnR5cGVfbmFtZV90YWdcbiAgICAgICAgICAgIH52YWx1ZTooQXRvbSBcIkNvcmUuRGF0ZS50XCIpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBTZXhwYWJsZVxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IuU3RhYmxlLlYxLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgV2l0aG91dF9jb21wYXJhYmxlXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFdpdGhvdXRfY29tcGFyYWJsZSlcbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFdpdGhvdXRfY29tcGFyYWJsZSlcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50XG4gICAgICBbQEBkZXJpdmluZ1xuICAgICAgICBiaW5faW9cbiAgICAgICwgYmluX3NoYXBlIH5iYXNldHlwZTpcIjgyNmEzZTc5LTMzMjEtNDUxYS05NzA3LWVkNmMwM2I4NGUyZlwiXG4gICAgICAsIGNvbXBhcmVcbiAgICAgICwgaGFzaFxuICAgICAgLCB0eXBlcmVwXG4gICAgICAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgbm9uZSA9IFYxLih0b19pbnQgaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5KVxuICAgICAgbGV0IGlzX25vbmUgdCA9IHQgPSBub25lXG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgc29tZV9pc19yZXByZXNlbnRhYmxlIF8gPSB0cnVlXG4gICAgICBsZXQgc29tZSB0ID0gVjEudG9faW50IHRcbiAgICAgIGxldCB1bmNoZWNrZWRfdmFsdWUgPSBWMS5vZl9pbnRfdW5jaGVja2VkXG4gICAgICBsZXQgdG9fb3B0aW9uIHQgPSBpZiBpc19zb21lIHQgdGhlbiBTb21lICh1bmNoZWNrZWRfdmFsdWUgdCkgZWxzZSBOb25lXG5cbiAgICAgIGxldCBvZl9vcHRpb24gb3B0ID1cbiAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgICAgfCBTb21lIHYgLT4gc29tZSB2XG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgICAgICBpZiBpc19zb21lIHRcbiAgICAgICAgdGhlbiB1bmNoZWNrZWRfdmFsdWUgdFxuICAgICAgICBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFslaGVyZV0gXCJEYXRlLk9wdGlvbi52YWx1ZV9leG4gbm9uZVwiXVxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBCb29sLnNlbGVjdCAoaXNfbm9uZSB0KSBkZWZhdWx0ICh1bmNoZWNrZWRfdmFsdWUgdClcbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX29wdGlvbiB0IHw+IE9wdGlvbi5zZXhwX29mX3QgVjEuc2V4cF9vZl90XG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSAoT3B0aW9uLnRfb2Zfc2V4cCBWMS50X29mX3NleHApIHNleHAgfD4gb2Zfb3B0aW9uXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgWyVzZXhwX2dyYW1tYXI6IFYxLnQgT3B0aW9uLnRdXG5cbiAgICAgIGxldCBvZl9pbnRfZXhuIHQgPVxuICAgICAgICAoKiBEb24ndCBqdXN0IGJsaW5kbHkgY29udmVydCBmcm9tIGFuIGludGVnZXIuIFVzZSBbVjEub2ZfaW50X2V4bl0gdG8gdmFsaWRhdGUgdGhlXG4gICAgICAgICAgIGRhdGUuICopXG4gICAgICAgIGlmIHQgPSBub25lIHRoZW4gbm9uZSBlbHNlIHNvbWUgKFYxLm9mX2ludF9leG4gdClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19pbnQgdCA9IHRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYWJsZSA9IFN0YWJsZS5WMS5XaXRob3V0X2NvbXBhcmFibGVcbmluY2x1ZGUgV2l0aG91dF9jb21wYXJhYmxlXG5tb2R1bGUgQyA9IENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFdpdGhvdXRfY29tcGFyYWJsZSlcbmluY2x1ZGUgQ1xuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIChDIDogQ29tcGFyYWJsZS5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbmluY2x1ZGUgKFxuICBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGVcbiAgICBpbmNsdWRlIEJpbmFibGVcblxuICAgIGxldCBjb21wYXJlIChhIDogdCkgKGIgOiB0KSA9IGNvbXBhcmUgYSBiXG4gIGVuZCkgOlxuICAgIEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLkRhdGVcIlxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgZW5kKVxuXG5sZXQgdW5peF9lcG9jaCA9IGNyZWF0ZV9leG4gfnk6MTk3MCB+bTpKYW4gfmQ6MVxuXG4oKiBUaGUgRGF5cyBtb2R1bGUgaXMgdXNlZCBmb3IgY2FsY3VsYXRpb25zIHRoYXQgaW52b2x2ZSBhZGRpbmcgb3IgcmVtb3ZpbmcgYSBrbm93biBudW1iZXJcbiAgIG9mIGRheXMgZnJvbSBhIGRhdGUuICBJbnRlcm5hbGx5IHRoZSBkYXRlIGlzIHRyYW5zbGF0ZWQgdG8gYSBkYXkgbnVtYmVyLCB0aGUgZGF5cyBhcmVcbiAgIGFkZGVkLCBhbmQgdGhlIG5ldyBkYXRlIGlzIHJldHVybmVkLiAgVGhvc2UgaW50ZXJlc3RlZCBpbiB0aGUgbWF0aCBjYW4gcmVhZDpcblxuICAgaHR0cDovL2FsY29yLmNvbmNvcmRpYS5jYS9+Z3BrYXRjaC9nZGF0ZS1tZXRob2QuaHRtbFxuXG4gICBub3RlOiB1bml0IHRlc3RzIGFyZSBpbiBsaWJfdGVzdC90aW1lX3Rlc3QubWxcbiopXG5tb2R1bGUgRGF5cyA6IHNpZ1xuICB0eXBlIGRhdGUgPSB0XG4gIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG5cbiAgdmFsIG9mX2RhdGUgOiBkYXRlIC0+IHRcbiAgdmFsIHRvX2RhdGUgOiB0IC0+IGRhdGVcbiAgdmFsIGRpZmYgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBhZGRfZGF5cyA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHVuaXhfZXBvY2ggOiB0XG5lbmRcbndpdGggdHlwZSBkYXRlIDo9IHQgPSBzdHJ1Y3RcbiAgb3BlbiBJbnRcblxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgb2ZfeWVhciB5ID0gKDM2NSAqIHkpICsgKHkgLyA0KSAtICh5IC8gMTAwKSArICh5IC8gNDAwKVxuXG4gIGxldCBvZl9kYXRlIGRhdGUgPVxuICAgIGxldCBtID0gKE1vbnRoLnRvX2ludCAobW9udGggZGF0ZSkgKyA5KSAlIDEyIGluXG4gICAgbGV0IHkgPSB5ZWFyIGRhdGUgLSAobSAvIDEwKSBpblxuICAgIG9mX3llYXIgeSArICgoKG0gKiAzMDYpICsgNSkgLyAxMCkgKyAoZGF5IGRhdGUgLSAxKVxuICA7O1xuXG4gIGxldCBjXzEwXzAwMCA9IEludDYzLm9mX2ludCAxMF8wMDBcbiAgbGV0IGNfMTRfNzgwID0gSW50NjMub2ZfaW50IDE0Xzc4MFxuICBsZXQgY18zXzY1Ml80MjUgPSBJbnQ2My5vZl9pbnQgM182NTJfNDI1XG5cbiAgbGV0IHRvX2RhdGUgZGF5cyA9XG4gICAgbGV0IHkgPVxuICAgICAgbGV0IG9wZW4gSW50NjMgaW5cbiAgICAgIHRvX2ludF9leG4gKCgoY18xMF8wMDAgKiBvZl9pbnQgZGF5cykgKyBjXzE0Xzc4MCkgLyBjXzNfNjUyXzQyNSlcbiAgICBpblxuICAgIGxldCBkZGQgPSBkYXlzIC0gb2ZfeWVhciB5IGluXG4gICAgbGV0IHksIGRkZCA9XG4gICAgICBpZiBkZGQgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHkgPSB5IC0gMSBpblxuICAgICAgICB5LCBkYXlzIC0gb2ZfeWVhciB5KVxuICAgICAgZWxzZSB5LCBkZGRcbiAgICBpblxuICAgIGxldCBtaSA9ICgoMTAwICogZGRkKSArIDUyKSAvIDNfMDYwIGluXG4gICAgbGV0IHkgPSB5ICsgKChtaSArIDIpIC8gMTIpIGluXG4gICAgbGV0IG0gPSAoKG1pICsgMikgJSAxMikgKyAxIGluXG4gICAgbGV0IGQgPSBkZGQgLSAoKChtaSAqIDMwNikgKyA1KSAvIDEwKSArIDEgaW5cbiAgICBjcmVhdGVfZXhuIH55IH5tOihNb250aC5vZl9pbnRfZXhuIG0pIH5kXG4gIDs7XG5cbiAgbGV0IHVuaXhfZXBvY2ggPSBvZl9kYXRlIHVuaXhfZXBvY2hcbiAgbGV0IGFkZF9kYXlzIHQgZGF5cyA9IHQgKyBkYXlzXG4gIGxldCBkaWZmIHQxIHQyID0gdDEgLSB0MlxuZW5kXG5cbmxldCBhZGRfZGF5cyB0IGRheXMgPSBEYXlzLnRvX2RhdGUgKERheXMuYWRkX2RheXMgKERheXMub2ZfZGF0ZSB0KSBkYXlzKVxubGV0IGRpZmYgdDEgdDIgPSBEYXlzLmRpZmYgKERheXMub2ZfZGF0ZSB0MSkgKERheXMub2ZfZGF0ZSB0MilcblxubGV0IGFkZF9tb250aHMgdCBuID1cbiAgbGV0IHRvdGFsX21vbnRocyA9IE1vbnRoLnRvX2ludCAobW9udGggdCkgKyBuIGluXG4gIGxldCB5ID0geWVhciB0ICsgKHRvdGFsX21vbnRocyAvJSAxMikgaW5cbiAgbGV0IG0gPSB0b3RhbF9tb250aHMgJSAxMiBpblxuICAoKiBjb3JyZWN0IGZvciBkZWNlbWJlciAqKVxuICBsZXQgeSwgbSA9IGlmIEludC4oID0gKSBtIDAgdGhlbiB5IC0gMSwgbSArIDEyIGVsc2UgeSwgbSBpblxuICBsZXQgbSA9IE1vbnRoLm9mX2ludF9leG4gbSBpblxuICAoKiBoYW5kbGUgaW52YWxpZCBkYXRlcyBmb3IgbW9udGhzIHdpdGggZmV3ZXIgbnVtYmVyIG9mIGRheXMgKilcbiAgbGV0IHJlYyB0cnlfY3JlYXRlIGQgPVxuICAgIHRyeSBjcmVhdGVfZXhuIH55IH5tIH5kIHdpdGhcbiAgICB8IF9leG4gLT5cbiAgICAgIGFzc2VydCAoSW50LiggPj0gKSBkIDEpO1xuICAgICAgdHJ5X2NyZWF0ZSAoZCAtIDEpXG4gIGluXG4gIHRyeV9jcmVhdGUgKGRheSB0KVxuOztcblxubGV0IGFkZF95ZWFycyB0IG4gPSBhZGRfbW9udGhzIHQgKG4gKiAxMilcblxuKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXRlcm1pbmF0aW9uX29mX3RoZV9kYXlfb2ZfdGhlX3dlZWsjUHVyZWx5X21hdGhlbWF0aWNhbF9tZXRob2RzXG5cbiAgIG5vdGU6IHVuaXQgdGVzdHMgaW4gbGliX3Rlc3QvdGltZV90ZXN0Lm1sXG4qKVxubGV0IGRheV9vZl93ZWVrID1cbiAgbGV0IHRhYmxlID0gW3wgMDsgMzsgMjsgNTsgMDsgMzsgNTsgMTsgNDsgNjsgMjsgNCB8XSBpblxuICBmdW4gdCAtPlxuICAgIGxldCBtID0gTW9udGgudG9faW50IChtb250aCB0KSBpblxuICAgIGxldCB5ID0gaWYgSW50LiggPCApIG0gMyB0aGVuIHllYXIgdCAtIDEgZWxzZSB5ZWFyIHQgaW5cbiAgICBEYXlfb2Zfd2Vlay5vZl9pbnRfZXhuXG4gICAgICAoKHkgKyAoeSAvIDQpIC0gKHkgLyAxMDApICsgKHkgLyA0MDApICsgdGFibGUuKG0gLSAxKSArIGRheSB0KSAlIDcpXG47O1xuXG4oKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09yZGluYWxfZGF0ZSAqKVxubGV0IG5vbl9sZWFwX3llYXJfdGFibGUgPSBbfCAwOyAzMTsgNTk7IDkwOyAxMjA7IDE1MTsgMTgxOyAyMTI7IDI0MzsgMjczOyAzMDQ7IDMzNCB8XVxubGV0IGxlYXBfeWVhcl90YWJsZSA9IFt8IDA7IDMxOyA2MDsgOTE7IDEyMTsgMTUyOyAxODI7IDIxMzsgMjQ0OyAyNzQ7IDMwNTsgMzM1IHxdXG5cbmxldCBvcmRpbmFsX2RhdGUgdCA9XG4gIGxldCB0YWJsZSA9XG4gICAgaWYgaXNfbGVhcF95ZWFyIH55ZWFyOih5ZWFyIHQpIHRoZW4gbGVhcF95ZWFyX3RhYmxlIGVsc2Ugbm9uX2xlYXBfeWVhcl90YWJsZVxuICBpblxuICBsZXQgb2Zmc2V0ID0gdGFibGUuKE1vbnRoLnRvX2ludCAobW9udGggdCkgLSAxKSBpblxuICBkYXkgdCArIG9mZnNldFxuOztcblxubGV0IGxhc3Rfd2Vla19vZl95ZWFyIHkgPVxuICBsZXQgZmlyc3Rfb2ZfeWVhciA9IGNyZWF0ZV9leG4gfnkgfm06SmFuIH5kOjEgaW5cbiAgbGV0IGlzIHQgZGF5ID0gRGF5X29mX3dlZWsuZXF1YWwgKGRheV9vZl93ZWVrIHQpIGRheSBpblxuICBpZiBpcyBmaXJzdF9vZl95ZWFyIFRodSB8fCAoaXNfbGVhcF95ZWFyIH55ZWFyOnkgJiYgaXMgZmlyc3Rfb2ZfeWVhciBXZWQpXG4gIHRoZW4gNTNcbiAgZWxzZSA1MlxuOztcblxuKCogU2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZSBvciBJU08gODYwMSBmb3IgdGhlIGRldGFpbHMgb2YgdGhpc1xuICAgYWxnb3JpdGhtLlxuXG4gICBVc2VzIGEgW35mXSBhcmd1bWVudCB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgd2hlbiBjYWxsZWQgYnkgW3dlZWtfbnVtYmVyXS5cbiopXG5sZXQgY2FsbF93aXRoX3dlZWtfYW5kX3llYXIgdCB+ZiA9XG4gIGxldCBvcmRpbmFsID0gb3JkaW5hbF9kYXRlIHQgaW5cbiAgbGV0IHdlZWtkYXkgPSBEYXlfb2Zfd2Vlay5pc29fODYwMV93ZWVrZGF5X251bWJlciAoZGF5X29mX3dlZWsgdCkgaW5cbiAgKCogW29yZGluYWwgLSB3ZWVrZGF5ICsgNF0gaXMgdGhlIG9yZGluYWwgb2YgdGhpcyB3ZWVrJ3MgVGh1cnNkYXksIHRoZW4gKG4gKyA2KSAvIDcgaXNcbiAgICAgZGl2aXNpb24gYnkgNyByb3VuZGluZyB1cCAqKVxuICBsZXQgd2VlayA9IChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcgaW5cbiAgbGV0IHllYXIgPSB5ZWFyIHQgaW5cbiAgaWYgSW50LiggPCApIHdlZWsgMVxuICB0aGVuIGYgfndlZWs6KGxhc3Rfd2Vla19vZl95ZWFyICh5ZWFyIC0gMSkpIH55ZWFyOih5ZWFyIC0gMSlcbiAgZWxzZSBpZiBJbnQuKCA+ICkgd2VlayAobGFzdF93ZWVrX29mX3llYXIgeWVhcilcbiAgdGhlbiBmIH53ZWVrOjEgfnllYXI6KHllYXIgKyAxKVxuICBlbHNlIGYgfndlZWsgfnllYXJcbjs7XG5cbmxldCB3ZWVrX251bWJlcl9hbmRfeWVhciB0ID0gY2FsbF93aXRoX3dlZWtfYW5kX3llYXIgdCB+ZjooZnVuIH53ZWVrIH55ZWFyIC0+IHdlZWssIHllYXIpXG5sZXQgd2Vla19udW1iZXIgdCA9IGNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIHQgfmY6KGZ1biB+d2VlayB+eWVhcjpfIC0+IHdlZWspXG5sZXQgaXNfd2Vla2VuZCB0ID0gRGF5X29mX3dlZWsuaXNfc3VuX29yX3NhdCAoZGF5X29mX3dlZWsgdClcbmxldCBpc193ZWVrZGF5IHQgPSBub3QgKGlzX3dlZWtlbmQgdClcbmxldCBpc19idXNpbmVzc19kYXkgdCB+aXNfaG9saWRheSA9IGlzX3dlZWtkYXkgdCAmJiBub3QgKGlzX2hvbGlkYXkgdClcblxubGV0IHJlYyBkaWZmX3dlZWtlbmRfZGF5cyB0MSB0MiA9XG4gIGlmIHQxIDwgdDJcbiAgdGhlbiAtZGlmZl93ZWVrZW5kX2RheXMgdDIgdDFcbiAgZWxzZSAoXG4gICAgKCogQmFzaWMgZGF0ZSBkaWZmICopXG4gICAgbGV0IGRpZmYgPSBkaWZmIHQxIHQyIGluXG4gICAgKCogQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIFNhdHVyZGF5IC0+IFN1bmRheSBjcm9zc2luZ3MgKilcbiAgICBsZXQgZDEgPSBkYXlfb2Zfd2VlayB0MSBpblxuICAgIGxldCBkMiA9IGRheV9vZl93ZWVrIHQyIGluXG4gICAgbGV0IG51bV9zYXRzdW5fY3Jvc3NpbmdzID1cbiAgICAgIGlmIEludC4oIDwgKSAoRGF5X29mX3dlZWsudG9faW50IGQxKSAoRGF5X29mX3dlZWsudG9faW50IGQyKVxuICAgICAgdGhlbiAxICsgKGRpZmYgLyA3KVxuICAgICAgZWxzZSBkaWZmIC8gN1xuICAgIGluXG4gICAgKG51bV9zYXRzdW5fY3Jvc3NpbmdzICogMilcbiAgICArIChpZiBEYXlfb2Zfd2Vlay4oID0gKSBkMiBEYXlfb2Zfd2Vlay5TdW4gdGhlbiAxIGVsc2UgMClcbiAgICArIGlmIERheV9vZl93ZWVrLiggPSApIGQxIERheV9vZl93ZWVrLlN1biB0aGVuIC0xIGVsc2UgMClcbjs7XG5cbmxldCBkaWZmX3dlZWtkYXlzIHQxIHQyID0gZGlmZiB0MSB0MiAtIGRpZmZfd2Vla2VuZF9kYXlzIHQxIHQyXG5cbmxldCBhZGRfZGF5c19za2lwcGluZyB0IH5za2lwIG4gPVxuICBsZXQgc3RlcCA9IGlmIEludC4oID49ICkgbiAwIHRoZW4gMSBlbHNlIC0xIGluXG4gIGxldCByZWMgbG9vcCB0IGsgPVxuICAgIGxldCB0X25leHQgPSBhZGRfZGF5cyB0IHN0ZXAgaW5cbiAgICBpZiBza2lwIHQgdGhlbiBsb29wIHRfbmV4dCBrIGVsc2UgaWYgSW50LiggPSApIGsgMCB0aGVuIHQgZWxzZSBsb29wIHRfbmV4dCAoayAtIDEpXG4gIGluXG4gIGxvb3AgdCAoYWJzIG4pXG47O1xuXG5sZXQgcmVjIGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXAgfmNvbmRpdGlvbiA9XG4gIGlmIGNvbmRpdGlvbiB0IHRoZW4gdCBlbHNlIGZpcnN0X2RheV9zYXRpc2Z5aW5nIChhZGRfZGF5cyB0IHN0ZXApIH5zdGVwIH5jb25kaXRpb25cbjs7XG5cbmxldCBuZXh0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXAgfmNvbmRpdGlvbiA9XG4gIGxldCBuZXh0X2RheSA9IGFkZF9kYXlzIHQgc3RlcCBpblxuICBmaXJzdF9kYXlfc2F0aXNmeWluZyBuZXh0X2RheSB+c3RlcCB+Y29uZGl0aW9uXG47O1xuXG5sZXQgZm9sbG93aW5nX3dlZWtkYXkgdCA9IG5leHRfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDoxIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHByZXZpb3VzX3dlZWtkYXkgdCA9IG5leHRfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDooLTEpIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSB0ID0gZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDoxIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkgdCA9IGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6KC0xKSB+Y29uZGl0aW9uOmlzX3dlZWtkYXlcblxubGV0IHJvdW5kX2ZvcndhcmRfdG9fYnVzaW5lc3NfZGF5IHQgfmlzX2hvbGlkYXkgPVxuICBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOjEgfmNvbmRpdGlvbjooaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5KVxuOztcblxubGV0IHJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSB0IH5pc19ob2xpZGF5ID1cbiAgZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDooLTEpIH5jb25kaXRpb246KGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSlcbjs7XG5cbmxldCBhZGRfd2Vla2RheXMgdCBuID0gYWRkX2RheXNfc2tpcHBpbmcgdCB+c2tpcDppc193ZWVrZW5kIG5cbmxldCBhZGRfd2Vla2RheXNfcm91bmRpbmdfaW5fZGlyZWN0aW9uX29mX3N0ZXAgPSBhZGRfd2Vla2RheXNcblxubGV0IGFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIHQgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9mb3J3YXJkX3RvX3dlZWtkYXkgdCkgfnNraXA6aXNfd2Vla2VuZCBuXG47O1xuXG5sZXQgYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIHQgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9iYWNrd2FyZF90b193ZWVrZGF5IHQpIH5za2lwOmlzX3dlZWtlbmQgblxuOztcblxubGV0IGFkZF9idXNpbmVzc19kYXlzIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIHQgbiB+c2tpcDooZnVuIGQgLT4gaXNfd2Vla2VuZCBkIHx8IGlzX2hvbGlkYXkgZClcbjs7XG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19pbl9kaXJlY3Rpb25fb2Zfc3RlcCA9IGFkZF9idXNpbmVzc19kYXlzXG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3J3YXJkIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9mb3J3YXJkX3RvX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSB0KSBuIH5za2lwOihmdW4gZCAtPlxuICAgIG5vdCAoaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IGQpKVxuOztcblxubGV0IGFkZF9idXNpbmVzc19kYXlzX3JvdW5kaW5nX2JhY2t3YXJkIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9iYWNrd2FyZF90b19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkgdCkgbiB+c2tpcDooZnVuIGQgLT5cbiAgICBub3QgKGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSBkKSlcbjs7XG5cbmxldCBkYXRlc19iZXR3ZWVuIH5taW46dDEgfm1heDp0MiA9XG4gIGxldCByZWMgbG9vcCB0IGwgPSBpZiB0IDwgdDEgdGhlbiBsIGVsc2UgbG9vcCAoYWRkX2RheXMgdCAoLTEpKSAodCA6OiBsKSBpblxuICBsb29wIHQyIFtdXG47O1xuXG5sZXQgd2Vla2RheXNfYmV0d2VlbiB+bWluIH5tYXggPVxuICBsZXQgYWxsX2RhdGVzID0gZGF0ZXNfYmV0d2VlbiB+bWluIH5tYXggaW5cbiAgT3B0aW9uLnZhbHVlX21hcCAoTGlzdC5oZCBhbGxfZGF0ZXMpIH5kZWZhdWx0OltdIH5mOihmdW4gZmlyc3RfZGF0ZSAtPlxuICAgICgqIHRvIGF2b2lkIGEgc3lzdGVtIGNhbGwgb24gZXZlcnkgZGF0ZSwgd2UganVzdCBnZXQgdGhlIHdlZWtkYXkgZm9yIHRoZSBmaXJzdFxuICAgICAgIGRhdGUgYW5kIHVzZSBpdCB0byBnZXQgYWxsIHRoZSBvdGhlciB3ZWVrZGF5cyAqKVxuICAgIGxldCBmaXJzdF93ZWVrZGF5ID0gZGF5X29mX3dlZWsgZmlyc3RfZGF0ZSBpblxuICAgIGxldCBkYXRlX2FuZF93ZWVrZGF5cyA9XG4gICAgICBMaXN0Lm1hcGkgYWxsX2RhdGVzIH5mOihmdW4gaSBkYXRlIC0+IGRhdGUsIERheV9vZl93ZWVrLnNoaWZ0IGZpcnN0X3dlZWtkYXkgaSlcbiAgICBpblxuICAgIExpc3QuZmlsdGVyX21hcCBkYXRlX2FuZF93ZWVrZGF5cyB+ZjooZnVuIChkYXRlLCB3ZWVrZGF5KSAtPlxuICAgICAgaWYgRGF5X29mX3dlZWsuaXNfc3VuX29yX3NhdCB3ZWVrZGF5IHRoZW4gTm9uZSBlbHNlIFNvbWUgZGF0ZSkpXG47O1xuXG5sZXQgYnVzaW5lc3NfZGF0ZXNfYmV0d2VlbiB+bWluIH5tYXggfmlzX2hvbGlkYXkgPVxuICB3ZWVrZGF5c19iZXR3ZWVuIH5taW4gfm1heCB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIGQgLT4gbm90IChpc19ob2xpZGF5IGQpKVxuOztcblxubGV0IGZpcnN0X3N0cmljdGx5X2FmdGVyIHQgfm9uOmRvdyA9XG4gIGxldCBkb3cgPSBEYXlfb2Zfd2Vlay50b19pbnQgZG93IGluXG4gIGxldCB0cGx1czEgPSBhZGRfZGF5cyB0IDEgaW5cbiAgbGV0IGN1ciA9IERheV9vZl93ZWVrLnRvX2ludCAoZGF5X29mX3dlZWsgdHBsdXMxKSBpblxuICBsZXQgZGlmZiA9IChkb3cgKyA3IC0gY3VyKSBtb2QgNyBpblxuICBhZGRfZGF5cyB0cGx1czEgZGlmZlxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIG9wZW4gUXVpY2tjaGVja1xuXG4gIGxldCBnZW5fdW5pZm9ybV9pbmNsIGQxIGQyID1cbiAgICBpZiBkMSA+IGQyXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkRhdGUuZ2VuX3VuaWZvcm1faW5jbDogYm91bmRzIGFyZSBjcm9zc2VkXCJcbiAgICAgICAgICAgIH5sb3dlcl9ib3VuZDooZDEgOiB0KVxuICAgICAgICAgICAgfnVwcGVyX2JvdW5kOihkMiA6IHQpXTtcbiAgICBHZW5lcmF0b3IubWFwIChJbnQuZ2VuX3VuaWZvcm1faW5jbCAwIChkaWZmIGQyIGQxKSkgfmY6KGZ1biBkYXlzIC0+IGFkZF9kYXlzIGQxIGRheXMpXG4gIDs7XG5cbiAgbGV0IGdlbl9pbmNsIGQxIGQyID1cbiAgICBHZW5lcmF0b3Iud2VpZ2h0ZWRfdW5pb25cbiAgICAgIFsgMS4sIEdlbmVyYXRvci5yZXR1cm4gZDE7IDEuLCBHZW5lcmF0b3IucmV0dXJuIGQyOyAxOC4sIGdlbl91bmlmb3JtX2luY2wgZDEgZDIgXVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlbl9pbmNsIChvZl9zdHJpbmcgXCIxOTAwLTAxLTAxXCIpIChvZl9zdHJpbmcgXCIyMTAwLTAxLTAxXCIpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gT2JzZXJ2ZXIuY3JlYXRlIChmdW4gdCB+c2l6ZTpfIH5oYXNoIC0+IGhhc2hfZm9sZF90IGhhc2ggdClcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBTaHJpbmtlci5lbXB0eSAoKVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yXG5sZXQgZ2VuX2luY2wgPSBGb3JfcXVpY2tjaGVjay5nZW5faW5jbFxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBGb3JfcXVpY2tjaGVjay5nZW5fdW5pZm9ybV9pbmNsXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlclxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgbGVhcF95ZWFyX3RhYmxlID0gbGVhcF95ZWFyX3RhYmxlXG4gIGxldCBub25fbGVhcF95ZWFyX3RhYmxlID0gbm9uX2xlYXBfeWVhcl90YWJsZVxuICBsZXQgb3JkaW5hbF9kYXRlID0gb3JkaW5hbF9kYXRlXG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gU3RhYmxlLk9wdGlvblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bmNoZWNrZWRfdmFsdWVcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXBcbiAgICAgIChPcHRpb24ucXVpY2tjaGVja19nZW5lcmF0b3IgcXVpY2tjaGVja19nZW5lcmF0b3IpXG4gICAgICB+ZjpvZl9vcHRpb25cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIChPcHRpb24ucXVpY2tjaGVja19zaHJpbmtlciBxdWlja2NoZWNrX3Nocmlua2VyKVxuICAgICAgfmY6b2Zfb3B0aW9uXG4gICAgICB+Zl9pbnZlcnNlOnRvX29wdGlvblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLm9mX2hhc2hcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICBlbmQpXG4gIDs7XG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gRGlnaXRfc3RyaW5nX2hlbHBlcnNcblxubGV0IHN1ZmZpeGVzIGNoYXIgPVxuICBsZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmIGluXG4gIFsgc3ByaW50ZiBcIiVjXCIgY2hhcjsgc3ByaW50ZiBcIiVjTVwiIGNoYXI7IHNwcmludGYgXCIlYy5NXCIgY2hhcjsgc3ByaW50ZiBcIiVjLk0uXCIgY2hhciBdXG4gIHw+IExpc3QuY29uY2F0X21hcCB+ZjooZnVuIHN1ZmZpeCAtPlxuICAgIFsgU3RyaW5nLmxvd2VyY2FzZSBzdWZmaXg7IFN0cmluZy51cHBlcmNhc2Ugc3VmZml4IF0pXG47O1xuXG5sZXQgYW1fc3VmZml4ZXMgPSBsYXp5IChzdWZmaXhlcyAnQScpXG5sZXQgcG1fc3VmZml4ZXMgPSBsYXp5IChzdWZmaXhlcyAnUCcpXG5cbigqIEF2b2lkcyB0aGUgYWxsb2NhdGlvbiB0aGF0IFtMaXN0LmZpbmRdIHdvdWxkIGVudGFpbCBpbiBib3RoIGJvdGggdGhlIGNsb3N1cmUgaW5wdXQgYW5kXG4gICB0aGUgb3B0aW9uIG91dHB1dC4gKilcbmxldCByZWMgZmluZF9zdWZmaXggc3RyaW5nIHN1ZmZpeGVzID1cbiAgbWF0Y2ggc3VmZml4ZXMgd2l0aFxuICB8IHN1ZmZpeCA6OiBzdWZmaXhlcyAtPlxuICAgIGlmIFN0cmluZy5pc19zdWZmaXggc3RyaW5nIH5zdWZmaXggdGhlbiBzdWZmaXggZWxzZSBmaW5kX3N1ZmZpeCBzdHJpbmcgc3VmZml4ZXNcbiAgfCBbXSAtPiBcIlwiXG47O1xuXG5sZXQgaGFzX2NvbG9uIHN0cmluZyBwb3MgfnVudGlsID0gcG9zIDwgdW50aWwgJiYgQ2hhci5lcXVhbCAnOicgc3RyaW5nLltwb3NdXG5cbigqIFRoaXMgZnVuY3Rpb24gZGVmaW5lcyB3aGF0IHdlIG1lYW50IGJ5IFwiZGVjaW1hbCBwb2ludFwiLCBiZWNhdXNlIGluIHNvbWUgc3RyaW5nIGZvcm1hdHNcbiAgIGl0IG1lYW5zICcuJyBhbmQgaW4gc29tZSBpdCBjYW4gYmUgJy4nIG9yICcsJy4gVGhlcmUncyBubyBwYXJ0aWN1bGFyIGRlbWFuZCBmb3Igc3VwcG9ydFxuICAgZm9yICcsJywgYW5kIHVzaW5nIGp1c3QgJy4nIGxldHMgdXMgdXNlIFtGbG9hdC5vZl9zdHJpbmddIGZvciB0aGUgZGVjaW1hbCBzdWJzdHJpbmdcbiAgIHdpdGhvdXQgYW55IHN1YnN0aXR1dGlvbnMuICopXG5sZXQgY2hhcl9pc19kZWNpbWFsX3BvaW50IHN0cmluZyBwb3MgPSBDaGFyLmVxdWFsICcuJyBzdHJpbmcuW3Bvc11cblxubGV0IGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgbGVuID1cbiAgaWYgbGVuID4gMCAmJiBDaGFyLmVxdWFsICcgJyBzdHJpbmcuW2xlbiAtIDFdIHRoZW4gbGVuIC0gMSBlbHNlIGxlblxuOztcblxubGV0W0Bjb2xkXSBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbiA9XG4gIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZS5PZmRheTogaW52YWxpZCBzdHJpbmdcIiBzdHJpbmcgcmVhc29uXVxuOztcblxubGV0IGNoZWNrX2RpZ2l0c193aXRoX3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvIHN0cmluZyBwb3MgfnVudGlsID1cbiAgbGV0IG5vbnplcm8gPSByZWYgZmFsc2UgaW5cbiAgZm9yIHBvcyA9IHBvcyB0byB1bnRpbCAtIDEgZG9cbiAgICBtYXRjaCBzdHJpbmcuW3Bvc10gd2l0aFxuICAgIHwgJzAnIHwgJ18nIC0+ICgpXG4gICAgfCAnMScgLi4gJzknIC0+IG5vbnplcm8gOj0gdHJ1ZVxuICAgIHwgXyAtPlxuICAgICAgaW52YWxpZF9zdHJpbmdcbiAgICAgICAgc3RyaW5nXG4gICAgICAgIH5yZWFzb246XCJleHBlY3RlZCBkaWdpdHMgYW5kL29yIHVuZGVyc2NvcmVzIGFmdGVyIGRlY2ltYWwgcG9pbnRcIlxuICBkb25lO1xuICAhbm9uemVyb1xuOztcblxubGV0IGNoZWNrX2RpZ2l0c193aXRob3V0X3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvIHN0cmluZyBwb3MgfnVudGlsID1cbiAgbGV0IG5vbnplcm8gPSByZWYgZmFsc2UgaW5cbiAgZm9yIHBvcyA9IHBvcyB0byB1bnRpbCAtIDEgZG9cbiAgICBtYXRjaCBzdHJpbmcuW3Bvc10gd2l0aFxuICAgIHwgJzAnIC0+ICgpXG4gICAgfCAnMScgLi4gJzknIC0+IG5vbnplcm8gOj0gdHJ1ZVxuICAgIHwgXyAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImV4cGVjdGVkIGRpZ2l0cyBhZnRlciBkZWNpbWFsIHBvaW50XCJcbiAgZG9uZTtcbiAgIW5vbnplcm9cbjs7XG5cbmxldCBwYXJzZSBzdHJpbmcgfmYgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IGFtX29yX3BtLCB1bnRpbCA9XG4gICAgKCogZGlzY3JpbWluYXRlIGFtb25nIEFNICgxOjMwYW0pLCBQTSAoMTI6MzA6MDAgUC5NLiksIG9yIDI0LWhyICgxMzowMCkuICopXG4gICAgbWF0Y2hcbiAgICAgICggZmluZF9zdWZmaXggc3RyaW5nIChMYXp5LmZvcmNlIGFtX3N1ZmZpeGVzKVxuICAgICAgLCBmaW5kX3N1ZmZpeCBzdHJpbmcgKExhenkuZm9yY2UgcG1fc3VmZml4ZXMpIClcbiAgICB3aXRoXG4gICAgfCBcIlwiLCBcIlwiIC0+IGBocl8yNCwgbGVuXG4gICAgfCBhbSwgXCJcIiAtPiBgaHJfQU0sIGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgKGxlbiAtIFN0cmluZy5sZW5ndGggYW0pXG4gICAgfCBcIlwiLCBwbSAtPiBgaHJfUE0sIGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgKGxlbiAtIFN0cmluZy5sZW5ndGggcG0pXG4gICAgfCBfLCBfIC0+IGBocl8yNCwgYXNzZXJ0IGZhbHNlXG4gICAgKCogSW1tZWRpYXRlbHkgYWJvdmUsIGl0IG1heSBzZWVtIG5vbnNlbnNpY2FsIHRvIHdyaXRlIFtgaHJfMjQsIGFzc2VydCBmYWxzZV0gd2hlbiB0aGVcbiAgICAgICBbYGhyXzI0XSBjYW4gbmV2ZXIgYmUgcmV0dXJuZWQuIFdlIGRvIHRoaXMgdG8gaGVscCB0aGUgY29tcGlsZXIgZmlndXJlIG91dCBuZXZlciB0b1xuICAgICAgIGFsbG9jYXRlIGEgdHVwbGUgaW4gdGhpcyBjb2RlOiB0aGUgW2xldF0gcGF0dGVybiBpcyBzeW50YWN0aWNhbGx5IGEgdHVwbGUgYW5kIGV2ZXJ5XG4gICAgICAgbWF0Y2ggY2xhdXNlIGlzIHN5bnRhY3RpY2FsbHkgYSB0dXBsZS4gKilcbiAgaW5cbiAgbGV0IHBvcyA9IDAgaW5cbiAgbGV0IHBvcywgaHIsIGV4cGVjdF9taW51dGVzX2FuZF9zZWNvbmRzID1cbiAgICAoKiBlLmcuIFwiMTowMFwiIG9yIFwiMTowMDowMFwiICopXG4gICAgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMSkgfnVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMiwgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIxMjowMFwiIG9yIFwiMTI6MDA6MDBcIiAqKVxuICAgIGVsc2UgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMikgfnVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMywgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIxYW1cIjsgbXVzdCBoYXZlIEFNIG9yIFBNIChjaGVja2VkIGJlbG93KSAqKVxuICAgIGVsc2UgaWYgcG9zICsgMSA9IHVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMSwgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjEyYW1cIjsgbXVzdCBoYXZlIEFNIG9yIFBNIChjaGVja2VkIGJlbG93KSAqKVxuICAgIGVsc2UgaWYgcG9zICsgMiA9IHVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMiwgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjA5MzBcIjsgbXVzdCBub3QgaGF2ZSBzZWNvbmRzICopXG4gICAgZWxzZSBwb3MgKyAyLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTWludXRlc19idXRfbm90X3NlY29uZHNcbiAgaW5cbiAgbGV0IHBvcywgbWluLCBleHBlY3Rfc2Vjb25kcyA9XG4gICAgbWF0Y2ggZXhwZWN0X21pbnV0ZXNfYW5kX3NlY29uZHMgd2l0aFxuICAgIHwgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kcyAtPlxuICAgICAgKCogZS5nLiBcIjEyYW1cIiAqKVxuICAgICAgcG9zLCAwLCBmYWxzZVxuICAgIHwgKGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzIHwgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzKSBhcyBtYXliZV9zZWNvbmRzIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDA6MDBcIiAqKVxuICAgICAgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMikgfnVudGlsXG4gICAgICB0aGVuXG4gICAgICAgICggcG9zICsgM1xuICAgICAgICAsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3NcbiAgICAgICAgLCBtYXRjaCBtYXliZV9zZWNvbmRzIHdpdGhcbiAgICAgICAgfCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kcyAtPiB0cnVlXG4gICAgICAgIHwgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzIC0+XG4gICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJleHBlY3RlZCBlbmQgb2Ygc3RyaW5nIGFmdGVyIG1pbnV0ZXNcIiApXG4gICAgICAgICgqIGUuZy4gXCIxMjowMFwiICopXG4gICAgICBlbHNlIGlmIHBvcyArIDIgPSB1bnRpbFxuICAgICAgdGhlbiBwb3MgKyAyLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX3N0cmluZ1xuICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgIH5yZWFzb246XCJleHBlY3RlZCBjb2xvbiBvciBhbS9wbSBzdWZmaXggd2l0aCBvcHRpb25hbCBzcGFjZSBhZnRlciBtaW51dGVzXCJcbiAgaW5cbiAgbGV0IHNlYywgc3Vic2VjX3Bvcywgc3Vic2VjX2xlbiwgc3Vic2VjX25vbnplcm8gPVxuICAgIG1hdGNoIGV4cGVjdF9zZWNvbmRzIHdpdGhcbiAgICB8IGZhbHNlIC0+XG4gICAgICAoKiBlLmcuIFwiMTJhbVwiIG9yIFwiMTI6MDBcIiAqKVxuICAgICAgaWYgcG9zID0gdW50aWxcbiAgICAgIHRoZW4gMCwgcG9zLCAwLCBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICAoKiBUaGlzIGNhc2UgaXMgYWN0dWFsbHkgdW5yZWFjaGFibGUsIGJhc2VkIG9uIHRoZSB2YXJpb3VzIHdheXMgdGhhdFxuICAgICAgICAgICBbZXhwZWN0X3NlY29uZHNdIGNhbiBlbmQgdXAgZmFsc2UuICopXG4gICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiQlVHOiBkaWQgbm90IGV4cGVjdCBzZWNvbmRzLCBidXQgZm91bmQgdGhlbVwiXG4gICAgfCB0cnVlIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDA6MDBcIiAqKVxuICAgICAgaWYgcG9zICsgMiA+IHVudGlsXG4gICAgICB0aGVuXG4gICAgICAgICgqIGUuZy4gXCIxMjowMDowXCIgKilcbiAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJleHBlY3RlZCB0d28gZGlnaXRzIG9mIHNlY29uZHNcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzZWMgPSByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zIGluXG4gICAgICAgIGxldCBwb3MgPSBwb3MgKyAyIGluXG4gICAgICAgICgqIGUuZy4gXCIxMjowMDowMFwiICopXG4gICAgICAgIGlmIHBvcyA9IHVudGlsXG4gICAgICAgIHRoZW4gc2VjLCBwb3MsIDAsIGZhbHNlICgqIGUuZy4gXCIxMjowMDowMC4xMjNcIiAqKVxuICAgICAgICBlbHNlIGlmIHBvcyA8IHVudGlsICYmIGNoYXJfaXNfZGVjaW1hbF9wb2ludCBzdHJpbmcgcG9zXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoIHNlY1xuICAgICAgICAgICwgcG9zXG4gICAgICAgICAgLCB1bnRpbCAtIHBvc1xuICAgICAgICAgICwgY2hlY2tfZGlnaXRzX3dpdGhfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm8gc3RyaW5nIChwb3MgKyAxKSB+dW50aWwgKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW52YWxpZF9zdHJpbmdcbiAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgfnJlYXNvbjpcImV4cGVjdGVkIGRlY2ltYWwgcG9pbnQgb3IgYW0vcG0gc3VmZml4IGFmdGVyIHNlY29uZHNcIilcbiAgaW5cbiAgbGV0IGhyID1cbiAgICAoKiBOQi4gV2UgYWxyZWFkeSBrbm93IFtocl0gaXMgbm9uLW5lZ2F0aXZlLCBiZWNhdXNlIGl0J3MgdGhlIHJlc3VsdCBvZlxuICAgICAgIFtyZWFkXzJfZGlnaXRfaW50XS4gKilcbiAgICBtYXRjaCBhbV9vcl9wbSB3aXRoXG4gICAgfCBgaHJfQU0gLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMGFtXCIgKilcbiAgICAgIGlmIGhyIDwgMSB8fCBociA+IDEyXG4gICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgb3V0IG9mIGJvdW5kc1wiXG4gICAgICBlbHNlIGlmIGhyID0gMTJcbiAgICAgIHRoZW4gMFxuICAgICAgZWxzZSBoclxuICAgIHwgYGhyX1BNIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDBwbVwiICopXG4gICAgICBpZiBociA8IDEgfHwgaHIgPiAxMlxuICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImhvdXJzIG91dCBvZiBib3VuZHNcIlxuICAgICAgZWxzZSBpZiBociA9IDEyXG4gICAgICB0aGVuIDEyXG4gICAgICBlbHNlIGhyICsgMTJcbiAgICB8IGBocl8yNCAtPlxuICAgICAgKG1hdGNoIGV4cGVjdF9taW51dGVzX2FuZF9zZWNvbmRzIHdpdGhcbiAgICAgICB8IGBOZWl0aGVyX21pbnV0ZXNfbm9yX3NlY29uZHMgLT5cbiAgICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgd2l0aG91dCBtaW51dGVzIG9yIEFNL1BNXCJcbiAgICAgICB8IGBNaW51dGVzX2J1dF9ub3Rfc2Vjb25kcyB8IGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzIC0+XG4gICAgICAgICBpZiBociA+IDI0XG4gICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgICBlbHNlIGlmIGhyID0gMjQgJiYgKG1pbiA+IDAgfHwgc2VjID4gMCB8fCBzdWJzZWNfbm9uemVybylcbiAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJ0aW1lIGlzIHBhc3QgMjQ6MDA6MDBcIiAoKiBlLmcuIFwiMTM6MDA6MDBcIiAqKVxuICAgICAgICAgZWxzZSBocilcbiAgaW5cbiAgbGV0IG1pbiA9XG4gICAgaWYgbWluID4gNTkgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIm1pbnV0ZXMgb3V0IG9mIGJvdW5kc1wiIGVsc2UgbWluXG4gIGluXG4gIGxldCBzZWMgPVxuICAgIGlmIHNlYyA+IDYwIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzZWNvbmRzIG91dCBvZiBib3VuZHNcIiBlbHNlIHNlY1xuICBpblxuICBsZXQgc3Vic2VjX2xlbiA9IGlmIHNlYyA9IDYwIHx8IG5vdCBzdWJzZWNfbm9uemVybyB0aGVuIDAgZWxzZSBzdWJzZWNfbGVuIGluXG4gIGYgc3RyaW5nIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW5cbjs7XG5cbmxldCBwYXJzZV9pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgfmYgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIG1hdGNoXG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihTdHJpbmcubGVuZ3RoIHN0cilcbiAgICB3aXRoXG4gICAgfCBSZXN1bHQuT2sgeiAtPiB6XG4gICAgfCBSZXN1bHQuRXJyb3IgcyAtPlxuICAgICAgZmFpbHdpdGhmIFwiT2ZkYXkub2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQ6ICVzXCIgKEVycm9yLnRvX3N0cmluZ19tYWNoIHMpICgpXG4gIGluXG4gIGlmIGxlbiA8IDJcbiAgdGhlbiBmYWlsd2l0aCBcImxlbiA8IDJcIlxuICBlbHNlIChcbiAgICBsZXQgaHIgPSByZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zIGluXG4gICAgaWYgaHIgPiAyNCB0aGVuIGZhaWx3aXRoIFwiaG91ciA+IDI0XCI7XG4gICAgaWYgbGVuID0gMlxuICAgIHRoZW4gZiBzdHIgfmhyIH5taW46MCB+c2VjOjAgfnN1YnNlY19wb3M6KHBvcyArIGxlbikgfnN1YnNlY19sZW46MFxuICAgIGVsc2UgaWYgbGVuIDwgNVxuICAgIHRoZW4gZmFpbHdpdGggXCIyIDwgbGVuIDwgNVwiXG4gICAgZWxzZSBpZiBub3QgKENoYXIuZXF1YWwgc3RyLltwb3MgKyAyXSAnOicpXG4gICAgdGhlbiBmYWlsd2l0aCBcImZpcnN0IGNvbG9uIG1pc3NpbmdcIlxuICAgIGVsc2UgKFxuICAgICAgbGV0IG1pbiA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3M6KHBvcyArIDMpIGluXG4gICAgICBpZiBtaW4gPj0gNjAgdGhlbiBmYWlsd2l0aCBcIm1pbnV0ZSA+IDYwXCI7XG4gICAgICBpZiBociA9IDI0ICYmIG1pbiA8PiAwIHRoZW4gZmFpbHdpdGggXCIyNCBob3VycyBhbmQgbm9uLXplcm8gbWludXRlXCI7XG4gICAgICBpZiBsZW4gPSA1XG4gICAgICB0aGVuIGYgc3RyIH5ociB+bWluIH5zZWM6MCB+c3Vic2VjX3BvczoocG9zICsgbGVuKSB+c3Vic2VjX2xlbjowXG4gICAgICBlbHNlIGlmIGxlbiA8IDhcbiAgICAgIHRoZW4gZmFpbHdpdGggXCI1IDwgbGVuIDwgOFwiXG4gICAgICBlbHNlIGlmIG5vdCAoQ2hhci5lcXVhbCBzdHIuW3BvcyArIDVdICc6JylcbiAgICAgIHRoZW4gZmFpbHdpdGggXCJzZWNvbmQgY29sb24gbWlzc2luZ1wiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNlYyA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3M6KHBvcyArIDYpIGluXG4gICAgICAgICgqIHNlY29uZCBjYW4gYmUgNjAgaW4gdGhlIGNhc2Ugb2YgYSBsZWFwIHNlY29uZC4gVW5mb3J0dW5hdGVseSwgd2hhdCB3aXRoXG4gICAgICAgICAgIG5vbi1ob3VyLW11bHRpcGxlIHRpbWV6b25lIG9mZnNldHMsIHdlIGNhbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGF0XG4gICAgICAgICAgIHRoZSBob3VyIG9yIG1pbnV0ZSBtdXN0IGJlIGluIHRoYXQgY2FzZSAqKVxuICAgICAgICBpZiBzZWMgPiA2MCB0aGVuIGZhaWx3aXRoZiBcImludmFsaWQgc2Vjb25kOiAlaVwiIHNlYyAoKTtcbiAgICAgICAgaWYgaHIgPSAyNCAmJiBzZWMgPD4gMCB0aGVuIGZhaWx3aXRoIFwiMjQgaG91cnMgYW5kIG5vbi16ZXJvIHNlY29uZHNcIjtcbiAgICAgICAgaWYgbGVuID0gOFxuICAgICAgICB0aGVuIGYgc3RyIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3M6KHBvcyArIGxlbikgfnN1YnNlY19sZW46MFxuICAgICAgICBlbHNlIGlmIGxlbiA9IDlcbiAgICAgICAgdGhlbiBmYWlsd2l0aCBcImxlbmd0aCA9IDlcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBzdHIuW3BvcyArIDhdIHdpdGhcbiAgICAgICAgICB8ICcuJyB8ICcsJyAtPlxuICAgICAgICAgICAgbGV0IHN1YnNlY19wb3MgPSBwb3MgKyA4IGluXG4gICAgICAgICAgICBsZXQgc3Vic2VjX2xlbiA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgY2hlY2tfZGlnaXRzX3dpdGhvdXRfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm9cbiAgICAgICAgICAgICAgICAgIHN0clxuICAgICAgICAgICAgICAgICAgKHN1YnNlY19wb3MgKyAxKVxuICAgICAgICAgICAgICAgICAgfnVudGlsOihwb3MgKyBsZW4pXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCB0cnVlIHdoZW4gc2VjID0gNjAgLT4gMFxuICAgICAgICAgICAgICB8IHRydWUgd2hlbiBociA9IDI0IC0+IGZhaWx3aXRoIFwiMjQgaG91cnMgYW5kIG5vbi16ZXJvIHN1YnNlY29uZHNcIlxuICAgICAgICAgICAgICB8IF8gLT4gbGVuIC0gOFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGYgc3RyIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW5cbiAgICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJtaXNzaW5nIHN1YnNlY29uZCBzZXBhcmF0b3JcIikpKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluX3Byb3QuU3RkXG5pbmNsdWRlIEhhc2guQnVpbHRpblxuaW5jbHVkZSBTdGFibGVfd2l0bmVzcy5FeHBvcnRcblxuaW5jbHVkZSAoXG4gIEJhc2UgOlxuICBzaWdcbiAgICB0eXBlIG5vbnJlYyAnYSBhcnJheSA9ICdhIGFycmF5IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBib29sID0gYm9vbCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgY2hhciA9IGNoYXIgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGV4biA9IGV4biBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgbm9ucmVjIGZsb2F0ID0gZmxvYXQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGludCA9IGludCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgaW50MzIgPSBpbnQzMiBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgaW50NjQgPSBpbnQ2NCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgJ2EgbGlzdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIG5hdGl2ZWludCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgJ2Egb3B0aW9uID0gJ2Egb3B0aW9uIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSByZWYgPSAnYSByZWYgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIHN0cmluZyA9IHN0cmluZyBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgYnl0ZXMgPSBieXRlcyBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgdW5pdCA9IHVuaXQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIGFycmF5IDo9ICdhIGFycmF5XG4gIHdpdGggdHlwZSBib29sIDo9IGJvb2xcbiAgd2l0aCB0eXBlIGNoYXIgOj0gY2hhclxuICB3aXRoIHR5cGUgZXhuIDo9IGV4blxuICB3aXRoIHR5cGUgZmxvYXQgOj0gZmxvYXRcbiAgd2l0aCB0eXBlIGludCA6PSBpbnRcbiAgd2l0aCB0eXBlIGludDMyIDo9IGludDMyXG4gIHdpdGggdHlwZSBpbnQ2NCA6PSBpbnQ2NFxuICB3aXRoIHR5cGUgJ2EgbGlzdCA6PSAnYSBsaXN0XG4gIHdpdGggdHlwZSBuYXRpdmVpbnQgOj0gbmF0aXZlaW50XG4gIHdpdGggdHlwZSAnYSBvcHRpb24gOj0gJ2Egb3B0aW9uXG4gIHdpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmXG4gIHdpdGggdHlwZSBzdHJpbmcgOj0gc3RyaW5nXG4gIHdpdGggdHlwZSBieXRlcyA6PSBieXRlc1xuICB3aXRoIHR5cGUgdW5pdCA6PSB1bml0KVxuIiwib3BlbiBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX2ludGVybmFsXG4gIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZS5TdGFibGVcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBleGNlcHRpb24gTmFuX29yX2luZiBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgdHlwZSB0ID0gZmxvYXQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgZXF1YWwsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IHZlcmlmeSB0ID1cbiAgICAgIG1hdGNoIFN0ZGxpYi5jbGFzc2lmeV9mbG9hdCB0IHdpdGhcbiAgICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiAoKVxuICAgICAgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPiByYWlzZSBOYW5fb3JfaW5mXG4gICAgOztcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoRmxvYXQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgdCA9XG4gICAgICAgICAgICB2ZXJpZnkgdDtcbiAgICAgICAgICAgIHRcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgdCA9XG4gICAgICAgICAgICB2ZXJpZnkgdDtcbiAgICAgICAgICAgIHRcbiAgICAgICAgICA7O1xuICAgICAgICBlbmQpXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gRmxvYXQuc2V4cF9vZl90XG5cbiAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgIHwgU2V4cC5BdG9tIF8gYXMgc2V4cCAtPlxuICAgICAgICBsZXQgdCA9IEZsb2F0LnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgICh0cnkgdmVyaWZ5IHQgd2l0aFxuICAgICAgICAgfCBlIC0+IEltcG9ydC5vZl9zZXhwX2Vycm9yIChJbXBvcnQuRXhuLnRvX3N0cmluZyBlKSBzZXhwKTtcbiAgICAgICAgdFxuICAgICAgfCBzIC0+IEltcG9ydC5vZl9zZXhwX2Vycm9yIFwiRGVjaW1hbC50X29mX3NleHA6IEV4cGVjdGVkIEF0b20sIGZvdW5kIExpc3RcIiBzXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IEZsb2F0LnRfc2V4cF9ncmFtbWFyXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGZsb2F0W0BxdWlja2NoZWNrLmdlbmVyYXRvciBGbG9hdC5nZW5fZmluaXRlXSlcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBxdWlja2NoZWNrLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICgqIEZvciBbc10gd2hpY2ggaXMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBmaW5pdGUgZmxvYXQsIGluIGVpdGhlciBkZWNpbWFsIG9yXG4gICAgICAgc2NpZW50aWZpYyBub3RhdGlvbiwgc2hpZnQgdGhlIGRlY2ltYWwgcG9pbnQgb3IgYWRqdXN0IHRoZSBzY2llbnRpZmljIG5vdGF0aW9uXG4gICAgICAgZXhwb25lbnQgYnkgW2J5XSwgd2hpY2ggaXMgZXF1aXZhbGVudCB0byBtdWx0aXBseWluZyB0aGUgbnVtYmVyIGJ5IFsxMCoqYnldLlxuXG4gICAgICAgVGhlIG91dHB1dCB3aWxsIGJlIGluIHNjaWVudGlmaWMgbm90YXRpb24gaWZmIHRoZSBpbnB1dCB3YXMsIGV4Y2VwdCB3aGVuIHRoZVxuICAgICAgIHJlc3VsdGluZyBleHBvbmVudCBhZnRlciB0aGUgc2hpZnQgYmVjb21lcyAwLlxuXG4gICAgICAgTm8gZWZmb3J0IGlzIG1hZGUgdG8gbm9ybWFsaXplIHRoZSBzY2llbnRpZmljIG5vdGF0aW9uIGlmIGl0IHdhcyBub3Qgbm9ybWFsaXplZCwgb3JcbiAgICAgICB0byBzd2l0Y2ggdG8vZnJvbSBzY2llbnRpZmljIG5vdGF0aW9uIHRvIGhlbHAgcmVhZGFiaWxpdHkgKGV4Y2VwdCBmb3IgdGhlIEUwIGNhc2VcbiAgICAgICBtZW50aW9uZWQgYWJvdmUpLiAqKVxuICAgIGxldCByZWMgc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieSA9XG4gICAgICBpZiBieSA9IDBcbiAgICAgIHRoZW4gc1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzID0gU3RyaW5nLmxzdHJpcCBzIGluXG4gICAgICAgIGxldCBkLCBlLCB6ZXJvLCB1bmRlcnNjb3JlID1cbiAgICAgICAgICAoKiBGaW5kIHRoZSBwb3NpdGlvbiBvZiB0aGUgZGVjaW1hbCBwb2ludCBbZF0sIHRoZSBleHBvbmVudCBzaWduIFtlXSwgYW5kIGNoZWNrXG4gICAgICAgICAgICAgaWYgdGhlcmUgYXJlIGFueSBub24temVybyBzaWduaWZpY2FudCBkaWdpdHMgKG9ubHkgYmVmb3JlIHRoZSBleHBvbmVudCBzaWduKVxuICAgICAgICAgICAgIHRvIGRldGVybWluZSBpZiB0aGUgbnVtYmVyIGlzIGVxdWFsIHRvIDAuMCAqKVxuICAgICAgICAgIGxldCBkID0gcmVmIE5vbmUgaW5cbiAgICAgICAgICBsZXQgZSA9IHJlZiBOb25lIGluXG4gICAgICAgICAgbGV0IG5vdF96ZXJvID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgbGV0IHVuZGVyc2NvcmUgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICAgfCAnLicgLT5cbiAgICAgICAgICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgIWRcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIGZhaWx3aXRoZiBcIkVycm9yIHBhcnNpbmcgUGVyY2VudC50OiB0b28gbWFueSBkZWNpbWFsIHBvaW50cyBpbiAnJXMnXCIgcyAoKTtcbiAgICAgICAgICAgICAgZCA6PSBTb21lIGlcbiAgICAgICAgICAgIHwgJ2UnIHwgJ0UnIC0+XG4gICAgICAgICAgICAgIGlmIE9wdGlvbi5pc19zb21lICFlXG4gICAgICAgICAgICAgIHRoZW4gZmFpbHdpdGhmIFwiRXJyb3IgcGFyc2luZyBQZXJjZW50LnQ6IHRvbyBtYW55IEVzIGluICclcydcIiBzICgpO1xuICAgICAgICAgICAgICBlIDo9IFNvbWUgaVxuICAgICAgICAgICAgfCAnLScgfCAnKycgfCAnMCcgLT4gKClcbiAgICAgICAgICAgIHwgJ18nIC0+IHVuZGVyc2NvcmUgOj0gdHJ1ZVxuICAgICAgICAgICAgfCAnMScgLi4gJzknIC0+IGlmIE9wdGlvbi5pc19ub25lICFlIHRoZW4gbm90X3plcm8gOj0gdHJ1ZVxuICAgICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgICAgIGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWQgY2hhcmFjdGVyIHdoZW4gcGFyc2luZyBQZXJjZW50LnQ6ICclYycgaW4gJyVzJ1wiIGMgcyAoKVxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgIWQsICFlLCBub3QgIW5vdF96ZXJvLCAhdW5kZXJzY29yZVxuICAgICAgICBpblxuICAgICAgICBpZiB1bmRlcnNjb3JlXG4gICAgICAgIHRoZW4gc2hpZnRfZGVjaW1hbF9wb2ludCAoU3RyaW5nLmZpbHRlciBzIH5mOihmdW4gYyAtPiBDaGFyLihjIDw+ICdfJykpKSB+YnlcbiAgICAgICAgZWxzZSBpZiB6ZXJvXG4gICAgICAgIHRoZW4gc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IFNvbWUgZSAtPlxuICAgICAgICAgICAgKCogW3NdIGlzIGluIHNjaWVudGlmaWMgbm90YXRpb24uICBTaW1wbHkgYWRqdXN0IHRoZSBleHBvbmVudCBhZnRlciAnZScuICopXG4gICAgICAgICAgICBsZXQgZXhwID0gSW50Lm9mX3N0cmluZyAoU3RyaW5nLmRyb3BfcHJlZml4IHMgKGUgKyAxKSkgaW5cbiAgICAgICAgICAgIGxldCBleHAgPSBleHAgKyBieSBpblxuICAgICAgICAgICAgaWYgZXhwID0gMFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAoKiBXZSBlbmQgdXAgd2l0aCBleHBvbmVudCAwLCBzbyB3ZSBqdXN0IHNraXAgdGhlIFwiZVwiIGFsdG9nZXRoZXIgKilcbiAgICAgICAgICAgICAgU3RyaW5nLnByZWZpeCBzIGVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICAgICAgICAgIFsgU3RyaW5nLnByZWZpeCBzIChlICsgMSlcbiAgICAgICAgICAgICAgICA7IChpZiBleHAgPiAwIHRoZW4gXCIrXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICAgIDsgSW50LnRvX3N0cmluZyBleHBcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAoKiBbc10gaXMgaW4gZGVjaW1hbCBub3RhdGlvbi4gIFN0YXJ0IGJ5IGRyb3BwaW5nIHRoZSBsZWFkaW5nIHNpZ24gaWYgdGhlcmUgaXNcbiAgICAgICAgICAgICAgIG9uZS4gIFdlJ2xsIHJlLWFkZCBpdCBhdCB0aGUgZW5kIHRvIGtlZXAgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgc2ltcGxlci4gKilcbiAgICAgICAgICAgIGxldCBuZWcgPSBDaGFyLiggPSApIHMuWzBdICctJyBpblxuICAgICAgICAgICAgbGV0IHNpZ25lZCA9IG5lZyB8fCBDaGFyLiggPSApIHMuWzBdICcrJyBpblxuICAgICAgICAgICAgbGV0IHMgPSBpZiBzaWduZWQgdGhlbiBTdHJpbmcuZHJvcF9wcmVmaXggcyAxIGVsc2UgcyBpblxuICAgICAgICAgICAgbGV0IHMsIGJ5ID1cbiAgICAgICAgICAgICAgKCogTmV4dCwgc2NyYXRjaCB0aGUgZGVjaW1hbCBwb2ludCBpZiB0aGVyZSBpcyBvbmUsIHNvIHRoYXQgW3NdIGJlY29tZXMgYW5cbiAgICAgICAgICAgICAgICAgaW50ZWdlciwgYW5kIGFkanVzdCBbYnldIGFjY29yZGluZ2x5IHRvIGtlZXAgdGhlIHJlc3VsdCB1bmNoYW5nZWQuICBXZVxuICAgICAgICAgICAgICAgICBhbHNvIGtub3cgdGhhdCBbcyA8PiAwLjBdIHNvIHdlIHJlbW92ZSBsZWFkaW5nIHplcm9zLiAgV2UgbWF5IGJlIHdhc3RpbmdcbiAgICAgICAgICAgICAgICAgc29tZSB3b3JrIGJlY2F1c2Ugd2UgbWF5IGhhdmUgdG8gYWRkIHRoZW0gYmFjayBiZWxvdywgYnV0IHRoZSBjb2RlIGlzXG4gICAgICAgICAgICAgICAgIHNpbXBsZXIgdGhhdCB3YXkuICopXG4gICAgICAgICAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gcywgYnlcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT5cbiAgICAgICAgICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgICAgICAgICAoKiBXZSBjYWxjdWxhdGVkIFtkXSBiZWZvcmUgcmVtb3ZpbmcgdGhlIFwiLVwiIHNpZ24sIHNvIHdlIG1heSBoYXZlIHRvXG4gICAgICAgICAgICAgICAgICAgICBhZGp1c3QgaXQgbm93ICopXG4gICAgICAgICAgICAgICAgICBkIC0gaWYgc2lnbmVkIHRoZW4gMSBlbHNlIDBcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBzdWYgPSBTdHJpbmcuZHJvcF9wcmVmaXggcyAoZCArIDEpIGluXG4gICAgICAgICAgICAgICAgbGV0IHByZWYgPSBTdHJpbmcucHJlZml4IHMgZCBpblxuICAgICAgICAgICAgICAgIGxldCBzID0gcHJlZiBeIHN1ZiB8PiBTdHJpbmcubHN0cmlwIH5kcm9wOihDaGFyLiggPSApICcwJykgaW5cbiAgICAgICAgICAgICAgICBsZXQgYnkgPSBieSAtIFN0cmluZy5sZW5ndGggc3VmIGluXG4gICAgICAgICAgICAgICAgcywgYnlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBSZW1vdmUgdHJhaWxpbmcgemVyb3MgdG9vICopXG4gICAgICAgICAgICBsZXQgcywgYnkgPVxuICAgICAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgICAgICAgICAgIGxldCBzID0gcyB8PiBTdHJpbmcucnN0cmlwIH5kcm9wOihDaGFyLiggPSApICcwJykgaW5cbiAgICAgICAgICAgICAgbGV0IGJ5ID0gYnkgKyBsZW4gLSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgICAgcywgYnlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgICAgaWYgYnkgPSAwXG4gICAgICAgICAgICAgIHRoZW4gc1xuICAgICAgICAgICAgICBlbHNlIGlmIGJ5ID4gMFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgKCogQ2FzZSAxOiBbc10gaXMgYW4gaW50ZWdlciB3aGljaCB3ZSBuZWVkIHRvIGZ1cnRoZXIgbXVsdGlwbHkgYnkgYVxuICAgICAgICAgICAgICAgICAgIHBvc2l0aXZlIHBvd2VyIG9mIDEwLCBzbyB3ZSBqdXN0IGFkZCAwcyBhdCB0aGUgZW5kLiAqKVxuICAgICAgICAgICAgICAgIHMgXiBTdHJpbmcubWFrZSBieSAnMCdcbiAgICAgICAgICAgICAgZWxzZSBpZiBieSA+IC1sZW5cbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICgqIENhc2UgMjogW3NdIGlzIGFuIGludGVnZXIgd2hpY2ggd2UgbmVlZCB0byBkaXZpZGUgYnkgYSBwb3NpdGl2ZSBwb3dlclxuICAgICAgICAgICAgICAgICAgIG9mIDEwLCBhbmQgaXQgaGFzIGVub3VnaCBkaWdpdHMgdGhhdCB3ZSBjYW4ganVzdCBpbnNlcnQgdGhlICcuJyBpblxuICAgICAgICAgICAgICAgICAgIGJldHdlZW4gdGhlbS4gKilcbiAgICAgICAgICAgICAgICBTdHJpbmcuY29uY2F0IFsgU3RyaW5nLmRyb3Bfc3VmZml4IHMgKC1ieSk7IFwiLlwiOyBTdHJpbmcuc3VmZml4IHMgKC1ieSkgXVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgKCogQ2FzZSAzIChieSA8PSAtbGVuKTogW3NdIGlzIGFuIGludGVnZXIgd2hpY2ggd2UgbmVlZCB0byBkaXZpZGUgYnkgYVxuICAgICAgICAgICAgICAgICAgIGxhcmdlIGVub3VnaCBwb3NpdGl2ZSBwb3dlciBvZiAxMCB0aGF0IHdlIG5lZWQgdG8gYWRkIGxlYWRpbmcgMHMuICopXG4gICAgICAgICAgICAgICAgU3RyaW5nLmNvbmNhdCBbIFwiMC5cIjsgU3RyaW5nLm1ha2UgKC1ieSAtIGxlbikgJzAnOyBzIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBGaW5hbGx5LCByZXN0b3JlIHRoZSBzaWduLiAgV2UgY2FuJ3QganVzdCBkcm9wIHRoZSAnKycgc2lnbiwgd2UgbmVlZCB0b1xuICAgICAgICAgICAgICAgcmVzdG9yZSBpdCB0b28sIGJlY2F1c2UgaWYgd2UgZGlkbid0LCB3ZSB3b3VsZCBzaWxlbnRseSBwYXJzZSBudW1iZXJzIGxpa2VcbiAgICAgICAgICAgICAgIFwiKy0xMyVcIiBvciBcIisrMTdicFwiIHdpdGhvdXQgcmFpc2luZyBhbiBlcnJvci4gKilcbiAgICAgICAgICAgIGlmIHNpZ25lZCB0aGVuIChpZiBuZWcgdGhlbiBcIi1cIiBlbHNlIFwiK1wiKSBeIHMgZWxzZSBzKSlcbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwic2hpZnRfZGVjaW1hbF9wb2ludCAxXCIgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIFsgXCIzXCJcbiAgICAgICAgOyBcIjUxLjJcIlxuICAgICAgICA7IFwiLTUwXCJcbiAgICAgICAgOyBcIjMxMjcwMDAuMDAwXCJcbiAgICAgICAgOyBcIjEuNzlFKzMwOFwiXG4gICAgICAgIDsgXCI0Ljk0MDY1NkUtMzI0XCJcbiAgICAgICAgOyBcIi0wLjAwMGUxM1wiXG4gICAgICAgIDsgXCIxLjQ3NjUxRSsxMFwiXG4gICAgICAgIF1cbiAgICAgICAgfmY6KGZ1biBzIC0+XG4gICAgICAgICAgcHJpbnRmIFwiPT0gJXMgPT1cXG5cIiBzO1xuICAgICAgICAgIGxldCB4ID0gRmxvYXQub2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgWyAtNDA7IC0xMDsgLTI7IC0xOyAwOyAxOyAyOyAxMDsgNDAgXSB+ZjooZnVuIGJ5IC0+XG4gICAgICAgICAgICBsZXQgczEgPSBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5IGluXG4gICAgICAgICAgICBwcmludGYgXCIlc1xcblwiIHMxO1xuICAgICAgICAgICAgbGV0IHgxID0gRmxvYXQub2Zfc3RyaW5nIHMxIGluXG4gICAgICAgICAgICBsZXQgeDIgPSB4ICouICgxMC4gKiogZmxvYXQgYnkpIGluXG4gICAgICAgICAgICBhc3NlcnQgKEZsb2F0Lih4MSA9IHgyIHx8IGFicyAoKHgxIC0geDIpIC8geDEpIDwgMWUtNikgOiBib29sKSk7XG4gICAgICAgICAgcHJpbnRmIFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG5cIik7XG4gICAgICAoKiBOb3RlIFwiLTAuMDAwZTEzXCIgaXMgbm90IGFkanVzdGVkICopXG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICAgICA9PSAzID09XG4gICAgICAgIDAuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM1xuICAgICAgICAwLjAwMDAwMDAwMDNcbiAgICAgICAgMC4wM1xuICAgICAgICAwLjNcbiAgICAgICAgM1xuICAgICAgICAzMFxuICAgICAgICAzMDBcbiAgICAgICAgMzAwMDAwMDAwMDBcbiAgICAgICAgMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gNTEuMiA9PVxuICAgICAgICAwLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTEyXG4gICAgICAgIDAuMDAwMDAwMDA1MTJcbiAgICAgICAgMC41MTJcbiAgICAgICAgNS4xMlxuICAgICAgICA1MS4yXG4gICAgICAgIDUxMlxuICAgICAgICA1MTIwXG4gICAgICAgIDUxMjAwMDAwMDAwMFxuICAgICAgICA1MTIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gLTUwID09XG4gICAgICAgIC0wLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNVxuICAgICAgICAtMC4wMDAwMDAwMDVcbiAgICAgICAgLTAuNVxuICAgICAgICAtNVxuICAgICAgICAtNTBcbiAgICAgICAgLTUwMFxuICAgICAgICAtNTAwMFxuICAgICAgICAtNTAwMDAwMDAwMDAwXG4gICAgICAgIC01MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gMzEyNzAwMC4wMDAgPT1cbiAgICAgICAgMC4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMTI3XG4gICAgICAgIDAuMDAwMzEyN1xuICAgICAgICAzMTI3MFxuICAgICAgICAzMTI3MDBcbiAgICAgICAgMzEyNzAwMC4wMDBcbiAgICAgICAgMzEyNzAwMDBcbiAgICAgICAgMzEyNzAwMDAwXG4gICAgICAgIDMxMjcwMDAwMDAwMDAwMDAwXG4gICAgICAgIDMxMjcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgID09IDEuNzlFKzMwOCA9PVxuICAgICAgICAxLjc5RSsyNjhcbiAgICAgICAgMS43OUUrMjk4XG4gICAgICAgIDEuNzlFKzMwNlxuICAgICAgICAxLjc5RSszMDdcbiAgICAgICAgMS43OUUrMzA4XG4gICAgICAgIDEuNzlFKzMwOVxuICAgICAgICAxLjc5RSszMTBcbiAgICAgICAgMS43OUUrMzE4XG4gICAgICAgIDEuNzlFKzM0OFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSA0Ljk0MDY1NkUtMzI0ID09XG4gICAgICAgIDQuOTQwNjU2RS0zNjRcbiAgICAgICAgNC45NDA2NTZFLTMzNFxuICAgICAgICA0Ljk0MDY1NkUtMzI2XG4gICAgICAgIDQuOTQwNjU2RS0zMjVcbiAgICAgICAgNC45NDA2NTZFLTMyNFxuICAgICAgICA0Ljk0MDY1NkUtMzIzXG4gICAgICAgIDQuOTQwNjU2RS0zMjJcbiAgICAgICAgNC45NDA2NTZFLTMxNFxuICAgICAgICA0Ljk0MDY1NkUtMjg0XG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgID09IC0wLjAwMGUxMyA9PVxuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSAxLjQ3NjUxRSsxMCA9PVxuICAgICAgICAxLjQ3NjUxRS0zMFxuICAgICAgICAxLjQ3NjUxXG4gICAgICAgIDEuNDc2NTFFKzhcbiAgICAgICAgMS40NzY1MUUrOVxuICAgICAgICAxLjQ3NjUxRSsxMFxuICAgICAgICAxLjQ3NjUxRSsxMVxuICAgICAgICAxLjQ3NjUxRSsxMlxuICAgICAgICAxLjQ3NjUxRSsyMFxuICAgICAgICAxLjQ3NjUxRSs1MFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8fV1cbiAgICA7O1xuXG4gICAgbW9kdWxlIFN0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgIGV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuICAgICAgKCogTG9naWMgc3RvbGVuIGZyb20gbGliL2Jhc2Uvc3JjL2Zsb2F0Lm1sLCBidXQgdGhpcyBkb2VzIG5vdCBjYWxsXG4gICAgICAgICBbdmFsaWRfZmxvYXRfbGV4ZW1dIHNvIG5vdCBhZGRpbmcgYSB0cmFpbGluZyBcIi5cIiBhbmQgYWxzbywgd2UncmUgdXNpbmdcbiAgICAgICAgIHVwcGVyY2FzZSAoJUcgdnMgJWcpIGZvciBjb25zaXN0ZW5jeSB3aXRoIFtQZXJjZW50LlN0YWJsZS5WMl0uICopXG4gICAgICBsZXQgZmxvYXRfdG9fc3RyaW5nIHggPVxuICAgICAgICBsZXQgeSA9IGZvcm1hdF9mbG9hdCBcIiUuMTVHXCIgeCBpblxuICAgICAgICBpZiBGbG9hdC4oID0gKSAoZmxvYXRfb2Zfc3RyaW5nIHkpIHggdGhlbiB5IGVsc2UgZm9ybWF0X2Zsb2F0IFwiJS4xN0dcIiB4XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nJyBmbG9hdF90b19zdHJpbmcgeCA9XG4gICAgICAgIGxldCB4X2FicyA9IEZsb2F0LmFicyB4IGluXG4gICAgICAgIGlmIEZsb2F0LiggPSApIHhfYWJzIDAuXG4gICAgICAgIHRoZW4gXCIweFwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBzID0gZmxvYXRfdG9fc3RyaW5nIHggaW5cbiAgICAgICAgICAoKiBVbmltcG9ydGFudCBub3RlOiBWMyBzZXJpYWxpemVzIG5hbiBhcyBcIk5BTnhcIiwgd2hpbGUgVjIgc2VyaWFsaXplcyBpdCBhc1xuICAgICAgICAgICAgIFwiTkFOYnBcIiAqKVxuICAgICAgICAgIGlmIEZsb2F0Lihpc19uYW4geCB8fCBpc19pbmYgeCB8fCB4X2FicyA+PSAxLilcbiAgICAgICAgICB0aGVuIHMgXiBcInhcIlxuICAgICAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDAuMDFcbiAgICAgICAgICB0aGVuIHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+Ynk6MiBeIFwiJVwiXG4gICAgICAgICAgZWxzZSBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5OjQgXiBcImJwXCIpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHggPSB0b19zdHJpbmcnIGZsb2F0X3RvX3N0cmluZyB4XG5cbiAgICAgIGxldCByZWFsbHlfb2Zfc3RyaW5nIHN0ciBmbG9hdF9vZl9zdHJpbmcgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggc3RyIH5zdWZmaXg6XCJ4XCIgd2l0aFxuICAgICAgICB8IFNvbWUgc3RyIC0+IGZsb2F0X29mX3N0cmluZyBzdHIgfmJ5OjBcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5jaG9wX3N1ZmZpeCBzdHIgfnN1ZmZpeDpcIiVcIiB3aXRoXG4gICAgICAgICAgIHwgU29tZSBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0ciB+Ynk6KC0yKVxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IHN0ciB+c3VmZml4OlwiYnBcIiB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0ciB+Ynk6KC00KVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwiUGVyY2VudC5vZl9zdHJpbmc6IG11c3QgZW5kIGluIHgsICUlLCBvciBicDogJXNcIiBzdHIgKCkpKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyB4ID1cbiAgICAgICAgcmVhbGx5X29mX3N0cmluZyB4IChmdW4gcyB+YnkgLT5cbiAgICAgICAgICBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5XG4gICAgICAgICAgfD4gU2V4cC5BdG9tXG4gICAgICAgICAgfD4gRmxvYXRfd2l0aF9maW5pdGVfb25seV9zZXJpYWxpemF0aW9uLnRfb2Zfc2V4cClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgeCA9XG4gICAgICAgIHJlYWxseV9vZl9zdHJpbmcgeCAoZnVuIHMgfmJ5IC0+XG4gICAgICAgICAgbWF0Y2ggU3RyaW5nLmxvd2VyY2FzZSBzIHdpdGhcbiAgICAgICAgICB8IFwibmFuXCJcbiAgICAgICAgICB8IFwiLW5hblwiXG4gICAgICAgICAgfCBcIituYW5cIlxuICAgICAgICAgIHwgXCJpbmZcIlxuICAgICAgICAgIHwgXCJpbmZpbml0eVwiXG4gICAgICAgICAgfCBcIitpbmZcIlxuICAgICAgICAgIHwgXCIraW5maW5pdHlcIlxuICAgICAgICAgIHwgXCItaW5mXCJcbiAgICAgICAgICB8IFwiLWluZmluaXR5XCIgLT5cbiAgICAgICAgICAgICgqIFdlIHBhcnNlIHRoZXNlIG5hbiBvciBpbmYgc3RyaW5ncyBkaXJlY3RseSwgYmVjYXVzZVxuICAgICAgICAgICAgICAgW3NoaWZ0X2RlY2ltYWxfcG9pbnRdIGRvZXMgbm90IHN1cHBvcnQgdGhlbSAqKVxuICAgICAgICAgICAgRmxvYXQub2Zfc3RyaW5nIHNcbiAgICAgICAgICB8IF8gLT4gc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieSB8PiBGbG9hdC5vZl9zdHJpbmcpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBTdHJpbmdhYmxlIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHRcblxuICAgICAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICAgICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgICAgIHZhbCBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgOiBzdHJpbmcgLT4gdFxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuXG4gICAgaW5jbHVkZSAoU2V4cGFibGUuU3RhYmxlLk9mX3N0cmluZ2FibGUuVjEgKFN0cmluZ2FibGUpIDogU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuICAgIGluY2x1ZGUgKEZsb2F0IDogQmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgKCogVXNlIGEgZGlmZmVyZW50IGJpbl9zaGFwZV90IHRoYW4gUGVyY2VudC5TdGFibGUuVjIsIGV2ZW4gdGhvdWdoIHRoZXNlIHR3byB2ZXJzaW9uc1xuICAgICAgIGhhdmUgY29tcGF0aWJsZSBiaW5faW8gc2VyaWFsaXphdGlvbi4gIFNpbmNlIHRoZXkgZG8gZGlmZmVyIGluIHNleHAgc2VyaWFsaXphdGlvbixcbiAgICAgICB3ZSBlcnIgb24gdGhlIHNpZGUgb2Ygc2FmZXR5IGFuZCBjaGFuZ2UgdGhlIGJpbiBzaGFwZSB0byB3YXJuIHRoYXQgVjMgaXMgbm90IGFsd2F5c1xuICAgICAgIGEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgVjIuICopXG4gICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLmJhc2V0eXBlXG4gICAgICAgIChCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImIzMmYyYTFlLTZiNDMtMTFlZC1iMzNiLWFhYzJhNTYzZjEwYVwiKVxuICAgICAgICBbIGJpbl9zaGFwZV90IF1cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgICAgIGVuZClcblxuICAgIG1vZHVsZSBBbHdheXNfcGVyY2VudGFnZSA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gICAgICBsZXQgdG9fc3RyaW5nIHggPVxuICAgICAgICBsZXQgcyA9IFN0cmluZ2FibGUuZmxvYXRfdG9fc3RyaW5nIHggaW5cbiAgICAgICAgc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieToyIF4gXCIlXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChmbG9hdFtAcXVpY2tjaGVjay5nZW5lcmF0b3IgRmxvYXQuZ2VuX2Zpbml0ZV0pXG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBxdWlja2NoZWNrLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBvZl9tdWx0IGYgPSBmXG4gICAgbGV0IHRvX211bHQgdCA9IHRcbiAgICBsZXQgb2ZfcGVyY2VudGFnZSBmID0gZiAvLiAxMDAuXG4gICAgbGV0IHRvX3BlcmNlbnRhZ2UgdCA9IHQgKi4gMTAwLlxuICAgIGxldCBvZl9icCBmID0gZiAvLiAxMF8wMDAuXG4gICAgbGV0IHRvX2JwIHQgPSB0ICouIDEwXzAwMC5cbiAgICBsZXQgb2ZfYnBfaW50IGkgPSBvZl9icCAoRmxvYXQub2ZfaW50IGkpXG4gICAgbGV0IHRvX2JwX2ludCB0ID0gRmxvYXQudG9faW50ICh0b19icCB0KVxuXG4gICAgKCogTXVsdGlwbHkgdGhlIGRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgZmxvYXQgW2ZdIGJ5IFsxMCoqYnldLCBhbmQgY29udmVydCBiYWNrIHRvXG4gICAgICAgdGhlIG5lYXJlc3QgcmVwcmVzZW50YWJsZSBmbG9hdC4gKilcbiAgICBsZXQgc2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCBmIH5ieSA9XG4gICAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSBmKVxuICAgICAgdGhlbiBmXG4gICAgICBlbHNlIEZsb2F0LnRvX3N0cmluZyBmIHw+IFYzLnNoaWZ0X2RlY2ltYWxfcG9pbnQgfmJ5IHw+IEZsb2F0Lm9mX3N0cmluZ1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfcGVyY2VudGFnZV9zbG93X21vcmVfYWNjdXJhdGUgZiA9IHNoaWZ0X2RlY2ltYWxfcG9pbnRfaW5fZmxvYXQgZiB+Ynk6KC0yKVxuICAgIGxldCB0b19wZXJjZW50YWdlX3Nsb3dfbW9yZV9hY2N1cmF0ZSBmID0gc2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCBmIH5ieToyXG4gICAgbGV0IG9mX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSBmID0gc2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCBmIH5ieTooLTQpXG4gICAgbGV0IHRvX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSBmID0gc2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCBmIH5ieTo0XG5cbiAgICBsZXQgcm91bmRfc2lnbmlmaWNhbnQgcCB+c2lnbmlmaWNhbnRfZGlnaXRzID1cbiAgICAgIEZsb2F0LnJvdW5kX3NpZ25pZmljYW50IHAgfnNpZ25pZmljYW50X2RpZ2l0c1xuICAgIDs7XG5cbiAgICBsZXQgcm91bmRfZGVjaW1hbF9tdWx0IHAgfmRlY2ltYWxfZGlnaXRzID0gRmxvYXQucm91bmRfZGVjaW1hbCBwIH5kZWNpbWFsX2RpZ2l0c1xuXG4gICAgbGV0IHJvdW5kX2RlY2ltYWxfcGVyY2VudGFnZSBwIH5kZWNpbWFsX2RpZ2l0cyA9XG4gICAgICBGbG9hdC5yb3VuZF9kZWNpbWFsIChwICouIDEwMC4pIH5kZWNpbWFsX2RpZ2l0cyAvLiAxMDAuXG4gICAgOztcblxuICAgIGxldCByb3VuZF9kZWNpbWFsX2JwIHAgfmRlY2ltYWxfZGlnaXRzID1cbiAgICAgIEZsb2F0LnJvdW5kX2RlY2ltYWwgKHAgKi4gMTAwMDAuKSB+ZGVjaW1hbF9kaWdpdHMgLy4gMTAwMDAuXG4gICAgOztcblxuICAgIG1vZHVsZSBGb3JtYXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgRXhwb25lbnQgb2YgaW50XG4gICAgICAgIHwgRXhwb25lbnRfRSBvZiBpbnRcbiAgICAgICAgfCBEZWNpbWFsIG9mIGludFxuICAgICAgICB8IE9jYW1sXG4gICAgICAgIHwgQ29tcGFjdCBvZiBpbnRcbiAgICAgICAgfCBDb21wYWN0X0Ugb2YgaW50XG4gICAgICAgIHwgSGV4IG9mIGludFxuICAgICAgICB8IEhleF9FIG9mIGludFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGV4cG9uZW50IH5wcmVjaXNpb24gPSBFeHBvbmVudCBwcmVjaXNpb25cbiAgICAgIGxldCBleHBvbmVudF9FIH5wcmVjaXNpb24gPSBFeHBvbmVudF9FIHByZWNpc2lvblxuICAgICAgbGV0IGRlY2ltYWwgfnByZWNpc2lvbiA9IERlY2ltYWwgcHJlY2lzaW9uXG4gICAgICBsZXQgb2NhbWwgPSBPY2FtbFxuICAgICAgbGV0IGNvbXBhY3QgfnByZWNpc2lvbiA9IENvbXBhY3QgcHJlY2lzaW9uXG4gICAgICBsZXQgY29tcGFjdF9FIH5wcmVjaXNpb24gPSBDb21wYWN0X0UgcHJlY2lzaW9uXG4gICAgICBsZXQgaGV4IH5wcmVjaXNpb24gPSBIZXggcHJlY2lzaW9uXG4gICAgICBsZXQgaGV4X0UgfnByZWNpc2lvbiA9IEhleF9FIHByZWNpc2lvblxuXG4gICAgICBsZXQgZm9ybWF0X2Zsb2F0IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFeHBvbmVudCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmVcIiBwcmVjaXNpb25cbiAgICAgICAgfCBFeHBvbmVudF9FIHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qRVwiIHByZWNpc2lvblxuICAgICAgICB8IERlY2ltYWwgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipmXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgT2NhbWwgLT4gc3ByaW50ZiBcIiVGXCJcbiAgICAgICAgfCBDb21wYWN0IHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qZ1wiIHByZWNpc2lvblxuICAgICAgICB8IENvbXBhY3RfRSBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKkdcIiBwcmVjaXNpb25cbiAgICAgICAgfCBIZXggcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipoXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgSGV4X0UgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipIXCIgcHJlY2lzaW9uXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGZvcm1hdCB4IGZvcm1hdCA9XG4gICAgICBsZXQgeF9hYnMgPSBGbG9hdC5hYnMgeCBpblxuICAgICAgbGV0IHN0cmluZyBmbG9hdCA9IEZvcm1hdC5mb3JtYXRfZmxvYXQgZm9ybWF0IGZsb2F0IGluXG4gICAgICBpZiBGbG9hdC4oID0gKSB4X2FicyAwLlxuICAgICAgdGhlbiBcIjB4XCJcbiAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDEuXG4gICAgICB0aGVuIHN0cmluZyAoeCAqLiAxLikgXiBcInhcIlxuICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMC4wMVxuICAgICAgdGhlbiBzdHJpbmcgKHggKi4gMTAwLikgXiBcIiVcIlxuICAgICAgZWxzZSBzdHJpbmcgKHggKi4gMTBfMDAwLikgXiBcImJwXCJcbiAgICA7O1xuXG4gICAgbW9kdWxlIFN0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICgqIFdBUk5JTkcgLSBQTEVBU0UgUkVBRCBCRUZPUkUgRURJVElORyBUSEVTRSBGVU5DVElPTlM6XG5cbiAgICAgICAgIFRoZSBzdHJpbmcgY29udmVydGVycyBpbiBTdGFibGUuVjMvVjIvVjEgc2hvdWxkIG5ldmVyIGNoYW5nZS4gSWYgeW91IGFyZSBjaGFuZ2luZ1xuICAgICAgICAgdGhlIHNlbWFudGljcyBvZiBhbnl0aGluZyB0aGF0IGFmZmVjdHMgdGhlIHNleHAgb3IgYmluLWlvIHJlcHJlc2VudGF0aW9uIG9mXG4gICAgICAgICB2YWx1ZXMgb2YgdGhpcyB0eXBlICh0aGlzIGluY2x1ZGVzIHRvX3N0cmluZyBhbmQgb2Zfc3RyaW5nKSBtYWtlIGEgU3RhYmxlLlY0IGFuZFxuICAgICAgICAgbWFrZSB5b3VyIGNoYW5nZXMgdGhlcmUuIFRoYW5rcyEgKilcbiAgICAgIGxldCB0b19zdHJpbmcgeCA9XG4gICAgICAgIGxldCB4X2FicyA9IEZsb2F0LmFicyB4IGluXG4gICAgICAgIGxldCBzdHJpbmcgZmxvYXQgPSBzcHJpbnRmIFwiJS42R1wiIGZsb2F0IGluXG4gICAgICAgIGlmIEZsb2F0LiggPSApIHhfYWJzIDAuXG4gICAgICAgIHRoZW4gXCIweFwiXG4gICAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDEuXG4gICAgICAgIHRoZW4gc3RyaW5nICh4ICouIDEuKSBeIFwieFwiXG4gICAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDAuMDFcbiAgICAgICAgdGhlbiBzdHJpbmcgKHggKi4gMTAwLikgXiBcIiVcIlxuICAgICAgICBlbHNlIHN0cmluZyAoeCAqLiAxMF8wMDAuKSBeIFwiYnBcIlxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyA9IFYzLm9mX3N0cmluZ1xuICAgICAgbGV0IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiA9IFYzLm9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZlxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBTdHJpbmdhYmxlIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHRcblxuICAgICAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICAgICAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgICAgIHZhbCBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgOiBzdHJpbmcgLT4gdFxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuXG4gICAgaW5jbHVkZSAoU2V4cGFibGUuU3RhYmxlLk9mX3N0cmluZ2FibGUuVjEgKFN0cmluZ2FibGUpIDogU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuICAgIGluY2x1ZGUgKEZsb2F0IDogQmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgKCogTWludCBhIHVuaXF1ZSBbYmluX3NoYXBlX3RdIHRoYXQncyBkaXN0aW5jdCBmcm9tIHRoZSBoaWRkZW4gdW5kZXJseWluZ1xuICAgICAgIHJlcHJlc2VudGF0aW9uIG9mIGZsb2F0LiAqKVxuICAgIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5iYXNldHlwZVxuICAgICAgICAoQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCIxZDFlNzZiYy1lYTRiLTExZWItYTE2YS1hYTViMjhkMWY0ZDdcIilcbiAgICAgICAgWyBiaW5fc2hhcGVfdCBdXG4gICAgOztcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBWMy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICBsZXQgY29tcGFyYXRvciA9IFYzLmNvbXBhcmF0b3JcbiAgICAgIGVuZClcblxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVjMuY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBCaW5fc2hhcGVfc2FtZV9hc19mbG9hdCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBWMlxuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPSBGbG9hdC5iaW5fc2hhcGVfdFxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2YsIGJpbl9pb11cbiAgICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFYzLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBWMy5jb21wYXJhdG9yXG5cbiAgICAgICAgICAoKiBQcmV2aW91cyB2ZXJzaW9ucyByZW5kZXJlZCBjb21wYXJhYmxlLWJhc2VkIGNvbnRhaW5lcnMgdXNpbmcgZmxvYXRcbiAgICAgICAgICAgICBzZXJpYWxpemF0aW9uIHJhdGhlciB0aGFuIHBlcmNlbnQgc2VyaWFsaXphdGlvbiwgc28gd2hlbiByZWFkaW5nXG4gICAgICAgICAgICAgY29tcGFyYWJsZS1iYXNlZCBjb250YWluZXJzIGluIHdlIGFjY2VwdCBlaXRoZXIgc2VyaWFsaXphdGlvbi5cbiAgICAgICAgICAqKVxuICAgICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgICBtYXRjaCBGbG9hdC50X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICAgICAgICB8IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgICAgICAgOztcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBCaW5fc2hhcGVfc2FtZV9hc19mbG9hdFxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgbW9kdWxlIE9wdGlvbl9yZXByID0gc3RydWN0XG4gICAgICBsZXQgbm9uZSA9IEZsb2F0Lm5hblxuICAgICAgbGV0IGlzX25vbmUgdCA9IEZsb2F0LmlzX25hbiB0XG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgc29tZV9pc19yZXByZXNlbnRhYmxlID0gaXNfc29tZVxuICAgICAgbGV0IHNvbWUgPSBGbi5pZFxuICAgICAgbGV0IHVuY2hlY2tlZF92YWx1ZSA9IEZuLmlkXG4gICAgICBsZXQgdG9fb3B0aW9uIHQgPSBpZiBpc19zb21lIHQgdGhlbiBTb21lICh1bmNoZWNrZWRfdmFsdWUgdCkgZWxzZSBOb25lXG4gICAgICBsZXQgYXBwbHlfd2l0aF9ub25lX2FzX25hbiA9ICggKi4gKVxuICAgICAgbGV0IG9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSA9IEZuLmlkXG4gICAgICBsZXQgdG9fbXVsdF93aXRoX25vbmVfYXNfbmFuID0gRm4uaWRcblxuICAgICAgbGV0IG9mX29wdGlvbiBvcHQgPVxuICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBzb21lIHZcbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgICAgIGlmIGlzX3NvbWUgdFxuICAgICAgICB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0XG4gICAgICAgIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIlBlcmNlbnQuT3B0aW9uLnZhbHVlX2V4biBub25lXCJdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IEJvb2wuc2VsZWN0IChpc19ub25lIHQpIGRlZmF1bHQgKHVuY2hlY2tlZF92YWx1ZSB0KVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBWMy50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLmJhc2V0eXBlXG4gICAgICAgICAgKEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiZTliNTIwMjgtNmI0NS0xMWVkLWE2YjYtYWFjMmE1NjNmMTBhXCIpXG4gICAgICAgICAgWyBiaW5fc2hhcGVfdCBdXG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlIE9wdGlvbl9yZXByXG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX29wdGlvbiB0IHw+IE9wdGlvbi5zZXhwX29mX3QgVjMuc2V4cF9vZl90XG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSAoT3B0aW9uLnRfb2Zfc2V4cCBWMy50X29mX3NleHApIHNleHAgfD4gb2Zfb3B0aW9uXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgWyVzZXhwX2dyYW1tYXI6IFYzLnQgT3B0aW9uLnRdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFYyLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuYmFzZXR5cGVcbiAgICAgICAgICAoQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJmN2FhMDRlOC1kYTNlLTExZWMtYjU0Ni1hYTczMjg0MzNiNzBcIilcbiAgICAgICAgICBbIGJpbl9zaGFwZV90IF1cbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgT3B0aW9uX3JlcHJcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fb3B0aW9uIHQgfD4gT3B0aW9uLnNleHBfb2ZfdCBWMi5zZXhwX29mX3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9IChPcHRpb24udF9vZl9zZXhwIFYyLnRfb2Zfc2V4cCkgc2V4cCB8PiBvZl9vcHRpb25cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBbJXNleHBfZ3JhbW1hcjogVjIudCBPcHRpb24udF1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgVjJcblxuICAgICAgICBsZXQgYmluX3NoYXBlX3QgPSBGbG9hdC5iaW5fc2hhcGVfdFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgQmluX3NoYXBlX3NhbWVfYXNfZmxvYXRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjEuQmluX3NoYXBlX3NhbWVfYXNfZmxvYXRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gU3RhYmxlLk9wdGlvblxuICBpbmNsdWRlIFN0YWJsZS5WMS5CaW5fc2hhcGVfc2FtZV9hc19mbG9hdFxuXG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bmNoZWNrZWRfdmFsdWVcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubGV0IGlzX3plcm8gdCA9IHQgPSAwLlxubGV0IGFwcGx5IHQgZiA9IHQgKi4gZlxubGV0IHNjYWxlIHQgZiA9IHQgKi4gZlxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBpbmNsdWRlIEZsb2F0XG5cbiAgbGV0IG9uZV9odW5kcmVkX3BlcmNlbnQgPSAxLlxuICBsZXQgKCAvLyApIHggeSA9IG9mX211bHQgeCAvLiBvZl9tdWx0IHlcbmVuZCA6XG5zaWdcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCBvbmVfaHVuZHJlZF9wZXJjZW50IDogdFxuICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvLyApIDogdCAtPiB0IC0+IGZsb2F0XG4gIHZhbCBhYnMgOiB0IC0+IHRcbiAgdmFsIG5lZyA6IHQgLT4gdFxuICB2YWwgaXNfbmFuIDogdCAtPiBib29sXG4gIHZhbCBpc19pbmYgOiB0IC0+IGJvb2xcbiAgdmFsIHNpZ25fZXhuIDogdCAtPiBTaWduLnRcblxuICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuZW5kKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFN0YWJsZS5WMS5CaW5fc2hhcGVfc2FtZV9hc19mbG9hdFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubGV0IHZhbGlkYXRlID0gRmxvYXQudmFsaWRhdGVfb3JkaW5hcnlcbmxldCBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgcyA9IFN0cmluZ2FibGUub2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIHNcbmxldCB0X29mX3NleHBfYWxsb3dfbmFuX2FuZF9pbmYgc2V4cCA9IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiAoU2V4cC50b19zdHJpbmcgc2V4cClcblxubW9kdWxlIEFsd2F5c19wZXJjZW50YWdlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGZvcm1hdCB4IGZvcm1hdCA9IEZvcm1hdC5mb3JtYXRfZmxvYXQgZm9ybWF0ICh4ICouIDEwMC4pIF4gXCIlXCJcbiAgbGV0IHRvX3N0cmluZyB4ID0gc3ByaW50ZiBcIiUuNkclJVwiICh4ICogMTAwLilcbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbmVuZFxuXG5sZXQgdG9fc3RyaW5nX3JvdW5kX3RyaXBwYWJsZSA9IFN0YWJsZS5WMy50b19zdHJpbmdcblxubW9kdWxlIEFsbW9zdF9yb3VuZF90cmlwcGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gIGxldCB0b19zdHJpbmcgeCA9IFN0YWJsZS5WMy5TdHJpbmdhYmxlLih0b19zdHJpbmcnIChmb3JtYXRfZmxvYXQgXCIlLjE0R1wiKSB4KVxuICBsZXQgb2Zfc3RyaW5nIHggPSBTdGFibGUuVjMuU3RyaW5nYWJsZS5vZl9zdHJpbmcgeFxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuICBsZXQgdF9vZl9zZXhwID0gU3RhYmxlLlYzLnRfb2Zfc2V4cFxuXG4gIG1vZHVsZSBBbHdheXNfcGVyY2VudGFnZSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cblxuICAgIGxldCB0b19zdHJpbmcgeCA9XG4gICAgICBsZXQgb3BlbiBTdGFibGUuVjMgaW5cbiAgICAgIGxldCBzID0gU3RyaW5nYWJsZS5mb3JtYXRfZmxvYXQgXCIlLjE0R1wiIHggaW5cbiAgICAgIHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+Ynk6MiBeIFwiJVwiXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbmxldCByYW5kb21pemUgc3BhbiByYW5kb21fc3RhdGUgfnBlcmNlbnQgfnNjYWxlID1cbiAgbGV0IG11bHQgPSBQZXJjZW50LnRvX211bHQgcGVyY2VudCBpblxuICBpZiBGbG9hdC4oIDwgKSBtdWx0IDAuIHx8IEZsb2F0LiggPiApIG11bHQgMS5cbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIlNwYW4ucmFuZG9taXplOiBwZXJjZW50IGlzIG91dCBvZiByYW5nZSBbMHgsIDF4XVwiIChwZXJjZW50IDogUGVyY2VudC50KV07XG4gIGxldCBmYWN0b3IgPVxuICAgIFJhbmRvbS5TdGF0ZS5mbG9hdF9yYW5nZSByYW5kb21fc3RhdGUgKDEuIC0uIG11bHQpIChGbG9hdC5vbmVfdWxwIGBVcCAoMS4gKy4gbXVsdCkpXG4gIGluXG4gIHNjYWxlIHNwYW4gZmFjdG9yXG47O1xuXG5sZXQgZm9ybWF0X2RlY2ltYWwgbiB0ZW50aHMgdW5pdHMgPVxuICBhc3NlcnQgKHRlbnRocyA+PSAwICYmIHRlbnRocyA8IDEwKTtcbiAgaWYgbiA8IDEwICYmIHRlbnRocyA8PiAwXG4gIHRoZW4gc3ByaW50ZiBcIiVkLiVkJXNcIiBuIHRlbnRocyB1bml0c1xuICBlbHNlIHNwcmludGYgXCIlZCVzXCIgbiB1bml0c1xuOztcblxubGV0IHNob3J0X3N0cmluZyB+c2lnbiB+aHIgfm1pbiB+c2VjIH5tcyB+dXMgfm5zID1cbiAgbGV0IHMgPVxuICAgIGlmIGhyID49IDI0XG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCAoaHIgLyAyNCkgKEludC5vZl9mbG9hdCAoRmxvYXQub2ZfaW50IChociAlIDI0KSAvLiAyLjQpKSBcImRcIlxuICAgIGVsc2UgaWYgaHIgPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCBociAobWluIC8gNikgXCJoXCJcbiAgICBlbHNlIGlmIG1pbiA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIG1pbiAoc2VjIC8gNikgXCJtXCJcbiAgICBlbHNlIGlmIHNlYyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIHNlYyAobXMgLyAxMDApIFwic1wiXG4gICAgZWxzZSBpZiBtcyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIG1zICh1cyAvIDEwMCkgXCJtc1wiXG4gICAgZWxzZSBpZiB1cyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIHVzIChucyAvIDEwMCkgXCJ1c1wiXG4gICAgZWxzZSBzcHJpbnRmIFwiJWluc1wiIG5zXG4gIGluXG4gIG1hdGNoIChzaWduIDogU2lnbi50KSB3aXRoXG4gIHwgTmVnIC0+IFwiLVwiIF4gc1xuICB8IFplcm8gfCBQb3MgLT4gc1xuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgUGFydHMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc2lnbiA6IFNpZ24udFxuICAgICAgICA7IGhyIDogaW50XG4gICAgICAgIDsgbWluIDogaW50XG4gICAgICAgIDsgc2VjIDogaW50XG4gICAgICAgIDsgbXMgOiBpbnRcbiAgICAgICAgOyB1cyA6IGludFxuICAgICAgICA7IG5zIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIExpa2VfYV9mbG9hdCA9IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBGbG9hdGFibGUgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCB6ZXJvIDogdFxuICAgICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IHRcbiAgICAgIHZhbCBhYnMgOiB0IC0+IHRcbiAgICAgIHZhbCBuZWcgOiB0IC0+IHRcbiAgICAgIHZhbCBzY2FsZSA6IHQgLT4gZmxvYXQgLT4gdFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IGZsb2F0IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgaW5jbHVkZSBMaWtlX2FfZmxvYXQgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgbW9kdWxlIENvbnN0YW50IDogc2lnXG4gICAgICAgIHZhbCBuYW5vc2Vjb25kc19wZXJfc2Vjb25kIDogZmxvYXRcbiAgICAgICAgdmFsIG1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kIDogZmxvYXRcbiAgICAgICAgdmFsIG1pbGxpc2Vjb25kc19wZXJfc2Vjb25kIDogZmxvYXRcbiAgICAgICAgdmFsIG5hbm9zZWNvbmQgOiB0XG4gICAgICAgIHZhbCBtaWNyb3NlY29uZCA6IHRcbiAgICAgICAgdmFsIG1pbGxpc2Vjb25kIDogdFxuICAgICAgICB2YWwgc2Vjb25kIDogdFxuICAgICAgICB2YWwgbWludXRlIDogdFxuICAgICAgICB2YWwgaG91ciA6IHRcbiAgICAgICAgdmFsIGRheSA6IHRcbiAgICAgIGVuZFxuXG4gICAgICB2YWwgdG9fcGFydHMgOiB0IC0+IFBhcnRzLnRcbiAgICAgIHZhbCBuZXh0IDogdCAtPiB0XG4gICAgICB2YWwgcHJldiA6IHQgLT4gdFxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgdHlwZSB1bmRlcmx5aW5nID0gZmxvYXQgW0BAZGVyaXZpbmcgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICB0eXBlIHQgPSB1bmRlcmx5aW5nIFtAQGRlcml2aW5nIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgbmV4dCB0ID0gRmxvYXQub25lX3VscCBgVXAgdFxuICAgICAgbGV0IHByZXYgdCA9IEZsb2F0Lm9uZV91bHAgYERvd24gdFxuXG4gICAgICAoKiBJRiBUSElTIFJFUFJFU0VOVEFUSU9OIEVWRVIgQ0hBTkdFUywgRU5TVVJFIFRIQVQgRUlUSEVSXG4gICAgICAgICAoMSkgYWxsIHZhbHVlcyBzZXJpYWxpemUgdGhlIHNhbWUgd2F5IGluIGJvdGggcmVwcmVzZW50YXRpb25zLCBvclxuICAgICAgICAgKDIpIHlvdSBhZGQgYSBuZXcgVGltZS5TcGFuIHZlcnNpb24gdG8gc3RhYmxlLm1sICopXG4gICAgICBpbmNsdWRlIChcbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEZsb2F0XG5cbiAgICAgICAgbGV0IHNpZ24gPSBzaWduX2V4blxuICAgICAgZW5kIDpcbiAgICAgICAgTGlrZV9hX2Zsb2F0IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICAgICgqIGR1ZSB0byBwcmVjaXNpb24gbGltaXRhdGlvbnMgaW4gZmxvYXQgd2UgY2FuJ3QgZXhwZWN0IGJldHRlciB0aGFuIG1pY3Jvc2Vjb25kXG4gICAgICAgICBwcmVjaXNpb24gKilcbiAgICAgIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTZcbiAgICAgICAgZW5kKVxuXG4gICAgICAoKiB0aGlzIHByZXZlbnRzIGFueSB3b3JyeSBhYm91dCBoYXZpbmcgdGhlc2UgdmVyeSBjb21tb24gbmFtZXMgcmVkZWZpbmVkIGJlbG93IGFuZFxuICAgICAgICAgbWFrZXMgdGhlaXIgdXNhZ2Ugd2l0aGluIHRoaXMgbW9kdWxlIHNhZmVyLiAgQ29uc3RhbnQgaXMgaW5jbHVkZWQgYXQgdGhlIHZlcnlcbiAgICAgICAgIGJvdHRvbSB0byByZS1leHBvcnQgdGhlc2UgY29uc3RhbnRzIGluIGEgbW9yZSBjb252ZW5pZW50IHdheSAqKVxuICAgICAgbW9kdWxlIENvbnN0YW50ID0gc3RydWN0XG4gICAgICAgIGxldCBuYW5vc2Vjb25kc19wZXJfc2Vjb25kID0gMUU5XG4gICAgICAgIGxldCBtaWNyb3NlY29uZHNfcGVyX3NlY29uZCA9IDFFNlxuICAgICAgICBsZXQgbWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQgPSAxRTNcblxuICAgICAgICAoKiBzcGFucyBhcmUgc3RvcmVkIGFzIGEgZmxvYXQgaW4gc2Vjb25kcyAqKVxuICAgICAgICBsZXQgbmFub3NlY29uZCA9IG9mX2Zsb2F0ICgxLiAvLiBuYW5vc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgICAgICBsZXQgbWljcm9zZWNvbmQgPSBvZl9mbG9hdCAoMS4gLy4gbWljcm9zZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgICAgIGxldCBtaWxsaXNlY29uZCA9IG9mX2Zsb2F0ICgxLiAvLiBtaWxsaXNlY29uZHNfcGVyX3NlY29uZClcbiAgICAgICAgbGV0IHNlY29uZCA9IG9mX2Zsb2F0IDEuXG4gICAgICAgIGxldCBtaW51dGUgPSBvZl9mbG9hdCA2MC5cbiAgICAgICAgbGV0IGhvdXIgPSBvZl9mbG9hdCAoNjAuICouIDYwLilcbiAgICAgICAgbGV0IGRheSA9IG9mX2Zsb2F0ICgyNC4gKi4gNjAuICouIDYwLilcbiAgICAgIGVuZFxuXG5cbiAgICAgIGxldCB0b19wYXJ0cyB0IDogUGFydHMudCA9XG4gICAgICAgIGxldCBzaWduID0gRmxvYXQuc2lnbl9leG4gdCBpblxuICAgICAgICBsZXQgdCA9IGFicyB0IGluXG4gICAgICAgIGxldCBpbnRlZ3JhbCA9IEZsb2F0LnJvdW5kX2Rvd24gdCBpblxuICAgICAgICBsZXQgZnJhY3Rpb25hbCA9IHQgLS4gaW50ZWdyYWwgaW5cbiAgICAgICAgbGV0IHNlY29uZHMgPSBGbG9hdC5pcm91bmRfZG93bl9leG4gaW50ZWdyYWwgaW5cbiAgICAgICAgbGV0IG5hbm9zZWNvbmRzID0gRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuIChmcmFjdGlvbmFsICouIDFFOSkgaW5cbiAgICAgICAgbGV0IHNlY29uZHMsIG5hbm9zZWNvbmRzID1cbiAgICAgICAgICBpZiBJbnQuZXF1YWwgbmFub3NlY29uZHMgMV8wMDBfMDAwXzAwMFxuICAgICAgICAgIHRoZW4gSW50LnN1Y2Mgc2Vjb25kcywgMFxuICAgICAgICAgIGVsc2Ugc2Vjb25kcywgbmFub3NlY29uZHNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHNlYyA9IHNlY29uZHMgbW9kIDYwIGluXG4gICAgICAgIGxldCBtaW51dGVzID0gc2Vjb25kcyAvIDYwIGluXG4gICAgICAgIGxldCBtaW4gPSBtaW51dGVzIG1vZCA2MCBpblxuICAgICAgICBsZXQgaHIgPSBtaW51dGVzIC8gNjAgaW5cbiAgICAgICAgbGV0IG5zID0gbmFub3NlY29uZHMgbW9kIDEwMDAgaW5cbiAgICAgICAgbGV0IG1pY3Jvc2Vjb25kcyA9IG5hbm9zZWNvbmRzIC8gMTAwMCBpblxuICAgICAgICBsZXQgdXMgPSBtaWNyb3NlY29uZHMgbW9kIDEwMDAgaW5cbiAgICAgICAgbGV0IG1pbGxpc2Vjb25kcyA9IG1pY3Jvc2Vjb25kcyAvIDEwMDAgaW5cbiAgICAgICAgbGV0IG1zID0gbWlsbGlzZWNvbmRzIGluXG4gICAgICAgIHsgc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgKCAvICkgdCBmID0gVC5vZl9mbG9hdCAoKHQgOiBULnQgOj4gZmxvYXQpIC8uIGYpXG4gICAgbGV0ICggLy8gKSAoZiA6IFQudCkgKHQgOiBULnQpID0gKGYgOj4gZmxvYXQpIC8uICh0IDo+IGZsb2F0KVxuXG4gICAgKCogTXVsdGlwbHlpbmcgYnkgMUUzIGlzIG1vcmUgYWNjdXJhdGUgdGhhbiBkaXZpc2lvbiBieSAxRS0zICopXG4gICAgbGV0IHRvX25zICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KSAqLiBULkNvbnN0YW50Lm5hbm9zZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fdXMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpICouIFQuQ29uc3RhbnQubWljcm9zZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fbXMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpICouIFQuQ29uc3RhbnQubWlsbGlzZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fc2VjICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KVxuICAgIGxldCB0b19taW4geCA9IHggLy8gVC5Db25zdGFudC5taW51dGVcbiAgICBsZXQgdG9faHIgeCA9IHggLy8gVC5Db25zdGFudC5ob3VyXG4gICAgbGV0IHRvX2RheSB4ID0geCAvLyBULkNvbnN0YW50LmRheVxuICAgIGxldCB0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHggPSBGbG9hdC5pbnQ2M19yb3VuZF9kb3duX2V4biAodG9fc2VjIHgpXG4gICAgbGV0ICggKiogKSBmICh0IDogVC50KSA9IFQub2ZfZmxvYXQgKGYgKi4gKHQgOj4gZmxvYXQpKVxuXG4gICAgKCogRGl2aXNpb24gYnkgMUUzIGlzIG1vcmUgYWNjdXJhdGUgdGhhbiBtdWx0aXBseWluZyBieSAxRS0zICopXG4gICAgbGV0IG9mX25zIHggPSBULm9mX2Zsb2F0ICh4IC8uIFQuQ29uc3RhbnQubmFub3NlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2ZfdXMgeCA9IFQub2ZfZmxvYXQgKHggLy4gVC5Db25zdGFudC5taWNyb3NlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2ZfbXMgeCA9IFQub2ZfZmxvYXQgKHggLy4gVC5Db25zdGFudC5taWxsaXNlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2Zfc2VjIHggPSBULm9mX2Zsb2F0IHhcbiAgICBsZXQgb2ZfaW50MzJfc2Vjb25kcyBzZWMgPSBvZl9zZWMgKEludDMyLnRvX2Zsb2F0IHNlYylcblxuICAgICgqIE5vdGUgdGhhdCBbSW50NjMudG9fZmxvYXRdIGNhbiBsb3NlIHByZWNpc2lvbiwgYnV0IG9ubHkgb24gaW5wdXRzIGxhcmdlIGVub3VnaCB0aGF0XG4gICAgICAgW29mX3NlY10gaW4gZWl0aGVyIHRoZSBUaW1lX25zIG9yIFRpbWVfZmxvYXQgY2FzZSB3b3VsZCBsb3NlIHByZWNpc2lvbiAob3IganVzdCBiZVxuICAgICAgIHBsYWluIG91dCBvZiBib3VuZHMpIGFueXdheS4gKilcbiAgICBsZXQgb2ZfaW50NjNfc2Vjb25kcyBzZWMgPSBvZl9zZWMgKEludDYzLnRvX2Zsb2F0IHNlYylcbiAgICBsZXQgb2ZfbWluIHggPSB4ICoqIFQuQ29uc3RhbnQubWludXRlXG4gICAgbGV0IG9mX2hyIHggPSB4ICoqIFQuQ29uc3RhbnQuaG91clxuICAgIGxldCBvZl9kYXkgeCA9IHggKiogVC5Db25zdGFudC5kYXlcbiAgICBsZXQgb2ZfaW50X25zIHggPSBvZl9ucyAoRmxvYXQub2ZfaW50IHgpXG4gICAgbGV0IG9mX2ludF91cyB4ID0gb2ZfdXMgKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnRfbXMgeCA9IG9mX21zIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X3NlYyB4ID0gb2Zfc2VjIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X21pbiB4ID0gb2ZfbWluIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X2hyIHggPSBvZl9ociAoRmxvYXQub2ZfaW50IHgpXG4gICAgbGV0IG9mX2ludF9kYXkgeCA9IG9mX2RheSAoRmxvYXQub2ZfaW50IHgpXG5cbiAgICBsZXQgZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSB0IHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiB0b19ucyB0XG4gICAgICB8IE1pY3Jvc2Vjb25kIC0+IHRvX3VzIHRcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gdG9fbXMgdFxuICAgICAgfCBTZWNvbmQgLT4gdG9fc2VjIHRcbiAgICAgIHwgTWludXRlIC0+IHRvX21pbiB0XG4gICAgICB8IEhvdXIgLT4gdG9faHIgdFxuICAgICAgfCBEYXkgLT4gdG9fZGF5IHRcbiAgICA7O1xuXG4gICAgbGV0IHNjYWxlX2J5X3VuaXRfb2ZfdGltZSBmbG9hdCB1bml0X29mX3RpbWUgPVxuICAgICAgbWF0Y2ggKHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gICAgICB8IE5hbm9zZWNvbmQgLT4gb2ZfbnMgZmxvYXRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gb2ZfdXMgZmxvYXRcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gb2ZfbXMgZmxvYXRcbiAgICAgIHwgU2Vjb25kIC0+IG9mX3NlYyBmbG9hdFxuICAgICAgfCBNaW51dGUgLT4gb2ZfbWluIGZsb2F0XG4gICAgICB8IEhvdXIgLT4gb2ZfaHIgZmxvYXRcbiAgICAgIHwgRGF5IC0+IG9mX2RheSBmbG9hdFxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlXG4gICAgICAgICAgPyhzaWduID0gU2lnbi5Qb3MpXG4gICAgICAgICAgPyhkYXkgPSAwKVxuICAgICAgICAgID8oaHIgPSAwKVxuICAgICAgICAgID8obWluID0gMClcbiAgICAgICAgICA/KHNlYyA9IDApXG4gICAgICAgICAgPyhtcyA9IDApXG4gICAgICAgICAgPyh1cyA9IDApXG4gICAgICAgICAgPyhucyA9IDApXG4gICAgICAgICAgKClcbiAgICAgID1cbiAgICAgIGxldCAoICsgKSA9IFQuKCArICkgaW5cbiAgICAgIGxldCB0ID1cbiAgICAgICAgb2ZfZGF5IChGbG9hdC5vZl9pbnQgZGF5KVxuICAgICAgICArIG9mX2hyIChGbG9hdC5vZl9pbnQgaHIpXG4gICAgICAgICsgb2ZfbWluIChGbG9hdC5vZl9pbnQgbWluKVxuICAgICAgICArIG9mX3NlYyAoRmxvYXQub2ZfaW50IHNlYylcbiAgICAgICAgKyBvZl9tcyAoRmxvYXQub2ZfaW50IG1zKVxuICAgICAgICArIG9mX3VzIChGbG9hdC5vZl9pbnQgdXMpXG4gICAgICAgICsgb2ZfbnMgKEZsb2F0Lm9mX2ludCBucylcbiAgICAgIGluXG4gICAgICBtYXRjaCBzaWduIHdpdGhcbiAgICAgIHwgTmVnIC0+IFQuKCAtICkgVC56ZXJvIHRcbiAgICAgIHwgUG9zIHwgWmVybyAtPiB0XG4gICAgOztcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29uc3RhbnRcblxuICAgIGxldCByYW5kb21pemUgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0IH5wZXJjZW50ID1cbiAgICAgIFNwYW5faGVscGVycy5yYW5kb21pemUgdCBzdGF0ZSB+cGVyY2VudCB+c2NhbGVcbiAgICA7O1xuXG4gICAgbGV0IHRvX3Nob3J0X3N0cmluZyB0ID1cbiAgICAgIGxldCAoeyBzaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfSA6IFBhcnRzLnQpID0gdG9fcGFydHMgdCBpblxuICAgICAgU3Bhbl9oZWxwZXJzLnNob3J0X3N0cmluZyB+c2lnbiB+aHIgfm1pbiB+c2VjIH5tcyB+dXMgfm5zXG4gICAgOztcblxuICAgICgqIFdBUk5JTkc6IGlmIHlvdSBhcmUgZ29pbmcgdG8gY2hhbmdlIHRoaXMgZnVuY3Rpb24gaW4gYW55IG1hdGVyaWFsIHdheSwgbWFrZSBzdXJlXG4gICAgICAgeW91IHVwZGF0ZSBTdGFibGUgYXBwcm9wcmlhdGVseS4gKilcbiAgICBsZXQgb2Zfc3RyaW5nX3YxX3YyIChzIDogc3RyaW5nKSB+aXNfdjIgPVxuICAgICAgdHJ5XG4gICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICB8IFwiXCIgLT4gZmFpbHdpdGggXCJlbXB0eSBzdHJpbmdcIlxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBsZXQgZmxvYXQgbiA9XG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcuZHJvcF9zdWZmaXggcyBuIHdpdGhcbiAgICAgICAgICAgIHwgXCJcIiAtPiBmYWlsd2l0aCBcIm5vIG51bWJlciBnaXZlblwiXG4gICAgICAgICAgICB8IHMgLT5cbiAgICAgICAgICAgICAgbGV0IHYgPSBGbG9hdC5vZl9zdHJpbmcgcyBpblxuICAgICAgICAgICAgICBWYWxpZGF0ZS5tYXliZV9yYWlzZSAoRmxvYXQudmFsaWRhdGVfb3JkaW5hcnkgdik7XG4gICAgICAgICAgICAgIHZcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAobWF0Y2ggcy5bSW50LiggLSApIGxlbiAxXSB3aXRoXG4gICAgICAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgICAgaWYgSW50LiggPj0gKSBsZW4gMiAmJiBDaGFyLiggPSApIHMuW0ludC4oIC0gKSBsZW4gMl0gJ20nXG4gICAgICAgICAgICAgdGhlbiBvZl9tcyAoZmxvYXQgMilcbiAgICAgICAgICAgICBlbHNlIGlmIGlzX3YyICYmIEludC4oID49ICkgbGVuIDIgJiYgQ2hhci4oID0gKSBzLltJbnQuKCAtICkgbGVuIDJdICd1J1xuICAgICAgICAgICAgIHRoZW4gb2ZfdXMgKGZsb2F0IDIpXG4gICAgICAgICAgICAgZWxzZSBpZiBpc192MiAmJiBJbnQuKCA+PSApIGxlbiAyICYmIENoYXIuKCA9ICkgcy5bSW50LiggLSApIGxlbiAyXSAnbidcbiAgICAgICAgICAgICB0aGVuIG9mX25zIChmbG9hdCAyKVxuICAgICAgICAgICAgIGVsc2UgVC5vZl9mbG9hdCAoZmxvYXQgMSlcbiAgICAgICAgICAgfCAnbScgLT4gb2ZfbWluIChmbG9hdCAxKVxuICAgICAgICAgICB8ICdoJyAtPiBvZl9ociAoZmxvYXQgMSlcbiAgICAgICAgICAgfCAnZCcgLT4gb2ZfZGF5IChmbG9hdCAxKVxuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBpZiBpc192MlxuICAgICAgICAgICAgIHRoZW4gZmFpbHdpdGggXCJUaW1lIHNwYW5zIG11c3QgZW5kIGluIG5zLCB1cywgbXMsIHMsIG0sIGgsIG9yIGQuXCJcbiAgICAgICAgICAgICBlbHNlIGZhaWx3aXRoIFwiVGltZSBzcGFucyBtdXN0IGVuZCBpbiBtcywgcywgbSwgaCwgb3IgZC5cIilcbiAgICAgIHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGludmFsaWRfYXJnZiBcIlNwYW4ub2Zfc3RyaW5nIGNvdWxkIG5vdCBwYXJzZSAnJXMnOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHAgPSBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgc2V4cFxuXG4gICAgZXhjZXB0aW9uIFRfb2Zfc2V4cCBvZiBTZXhwLnQgKiBleG4gW0BAZGVyaXZpbmcgc2V4cF1cbiAgICBleGNlcHRpb24gVF9vZl9zZXhwX2V4cGVjdGVkX2F0b21fYnV0X2dvdCBvZiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGxldCB0X29mX3NleHBfdjFfdjIgc2V4cCB+aXNfdjIgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSB4IC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nX3YxX3YyIHggfmlzX3YyIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIChUX29mX3NleHAgKHNleHAsIGV4bikpIHNleHApXG4gICAgICB8IFNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3JfZXhuIChUX29mX3NleHBfZXhwZWN0ZWRfYXRvbV9idXRfZ290IHNleHApIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHN0cmluZyB+aXNfdjIgc3VmZml4IGZsb2F0ID1cbiAgICAgIGlmIGlzX3YyXG4gICAgICAoKiBUaGlzIGlzIHRoZSBzYW1lIGZsb2F0LXRvLXN0cmluZyBjb252ZXJzaW9uIHVzZWQgaW4gW0Zsb2F0LnNleHBfb2ZfdF0uICBJdCdzIGxpa2VcbiAgICAgICAgIFtGbG9hdC50b19zdHJpbmddLCBidXQgbWF5IGxlYXZlIG9mZiB0cmFpbGluZyBwZXJpb2QuICopXG4gICAgICB0aGVuICFTZXhwbGliLkNvbnYuZGVmYXVsdF9zdHJpbmdfb2ZfZmxvYXQgZmxvYXQgXiBzdWZmaXhcbiAgICAgIGVsc2Ugc3ByaW50ZiBcIiVnJXNcIiBmbG9hdCBzdWZmaXhcbiAgICA7O1xuXG4gICAgKCogV0FSTklORzogaWYgeW91IGFyZSBnb2luZyB0byBjaGFuZ2UgdGhpcyBmdW5jdGlvbiBpbiBhbnkgbWF0ZXJpYWwgd2F5LCBtYWtlIHN1cmVcbiAgICAgICB5b3UgdXBkYXRlIFN0YWJsZSBhcHByb3ByaWF0ZWx5LiAqKVxuICAgICgqIEknZCBsaWtlIGl0IHRvIGJlIHRoZSBjYXNlIHRoYXQgeW91IGNvdWxkIG5ldmVyIGNvbnN0cnVjdCBhbiBpbmZpbml0ZSBzcGFuLCBidXQgSVxuICAgICAgIGNhbid0IHRoaW5rIG9mIGEgZ29vZCB3YXkgdG8gZW5mb3JjZSBpdC4gIFNvIHRoaXMgdG9fc3RyaW5nIGZ1bmN0aW9uIGNhbiBwcm9kdWNlXG4gICAgICAgc3RyaW5ncyB0aGF0IHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhleSBhcmUgZmVkIHRvIG9mX3N0cmluZyAqKVxuICAgIGxldCB0b19zdHJpbmdfdjFfdjIgKHQgOiBULnQpIH5pc192MiA9XG4gICAgICAoKiB0aGlzIGlzIGEgc2FkIGJyb2tlbiBhYnN0cmFjdGlvbi4uLiAqKVxuICAgICAgbGV0IG1vZHVsZSBDID0gRmxvYXQuQ2xhc3MgaW5cbiAgICAgIG1hdGNoIEZsb2F0LmNsYXNzaWZ5ICh0IDo+IGZsb2F0KSB3aXRoXG4gICAgICB8IEMuU3Vibm9ybWFsIHwgQy5aZXJvIC0+IFwiMHNcIlxuICAgICAgfCBDLkluZmluaXRlIC0+IGlmIFQuKCA+ICkgdCBULnplcm8gdGhlbiBcImluZlwiIGVsc2UgXCItaW5mXCJcbiAgICAgIHwgQy5OYW4gLT4gXCJuYW5cIlxuICAgICAgfCBDLk5vcm1hbCAtPlxuICAgICAgICBsZXQgKCA8ICkgPSBULiggPCApIGluXG4gICAgICAgIGxldCBhYnNfdCA9IFQub2ZfZmxvYXQgKEZsb2F0LmFicyAodCA6PiBmbG9hdCkpIGluXG4gICAgICAgIGlmIGlzX3YyICYmIGFic190IDwgVC5Db25zdGFudC5taWNyb3NlY29uZFxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJuc1wiICh0b19ucyB0KVxuICAgICAgICBlbHNlIGlmIGlzX3YyICYmIGFic190IDwgVC5Db25zdGFudC5taWxsaXNlY29uZFxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJ1c1wiICh0b191cyB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5zZWNvbmRcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwibXNcIiAodG9fbXMgdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQubWludXRlXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcInNcIiAodG9fc2VjIHQpXG4gICAgICAgIGVsc2UgaWYgYWJzX3QgPCBULkNvbnN0YW50LmhvdXJcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwibVwiICh0b19taW4gdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQuZGF5XG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcImhcIiAodG9faHIgdClcbiAgICAgICAgZWxzZSBzdHJpbmcgfmlzX3YyIFwiZFwiICh0b19kYXkgdClcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdF92MV92MiB0IH5pc192MiA9IFNleHAuQXRvbSAodG9fc3RyaW5nX3YxX3YyIHQgfmlzX3YyKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cF92MV92MiBzZXhwIH5pc192MjpmYWxzZVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF92MV92MiB0IH5pc192MjpmYWxzZVxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgaW5jbHVkZSBWMVxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwX3YxX3YyIHNleHAgfmlzX3YyOnRydWVcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3RfdjFfdjIgdCB+aXNfdjI6dHJ1ZVxuICBlbmRcblxuICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFYxXG5cbiAgICBsZXQgdG9fdW5pdF9vZl90aW1lIHQgOiBVbml0X29mX3RpbWUudCA9XG4gICAgICBsZXQgb3BlbiBUIGluXG4gICAgICBsZXQgb3BlbiBDb25zdGFudCBpblxuICAgICAgbGV0IGFic190ID0gVC5hYnMgdCBpblxuICAgICAgaWYgYWJzX3QgPj0gZGF5XG4gICAgICB0aGVuIERheVxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBob3VyXG4gICAgICB0aGVuIEhvdXJcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gbWludXRlXG4gICAgICB0aGVuIE1pbnV0ZVxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBzZWNvbmRcbiAgICAgIHRoZW4gU2Vjb25kXG4gICAgICBlbHNlIGlmIGFic190ID49IG1pbGxpc2Vjb25kXG4gICAgICB0aGVuIE1pbGxpc2Vjb25kXG4gICAgICBlbHNlIGlmIGFic190ID49IG1pY3Jvc2Vjb25kXG4gICAgICB0aGVuIE1pY3Jvc2Vjb25kXG4gICAgICBlbHNlIE5hbm9zZWNvbmRcbiAgICA7O1xuXG4gICAgbGV0IG9mX3VuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50IC0+IFQudCA9XG4gICAgICBsZXQgb3BlbiBULkNvbnN0YW50IGluXG4gICAgICBmdW5jdGlvblxuICAgICAgfCBOYW5vc2Vjb25kIC0+IG5hbm9zZWNvbmRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gbWljcm9zZWNvbmRcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbWlsbGlzZWNvbmRcbiAgICAgIHwgU2Vjb25kIC0+IHNlY29uZFxuICAgICAgfCBNaW51dGUgLT4gbWludXRlXG4gICAgICB8IEhvdXIgLT4gaG91clxuICAgICAgfCBEYXkgLT4gZGF5XG4gICAgOztcblxuICAgIGxldCBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiBcIm5zXCJcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gXCJ1c1wiXG4gICAgICB8IE1pbGxpc2Vjb25kIC0+IFwibXNcIlxuICAgICAgfCBTZWNvbmQgLT4gXCJzXCJcbiAgICAgIHwgTWludXRlIC0+IFwibVwiXG4gICAgICB8IEhvdXIgLT4gXCJoXCJcbiAgICAgIHwgRGF5IC0+IFwiZFwiXG4gICAgOztcblxuICAgIG1vZHVsZSBPZl9zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgIGxldCBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbiA9XG4gICAgICAgIGxldCBtZXNzYWdlID0gXCJUaW1lLlNwYW4ub2Zfc3RyaW5nOiBcIiBeIHJlYXNvbiBpblxuICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBtZXNzYWdlIHN0cmluZ11cbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgZmluZF91bml0X29mX3RpbWVfYnlfc3VmZml4IHN0cmluZyB+aW5kZXggdW5pdF9vZl90aW1lX2xpc3QgPVxuICAgICAgICBtYXRjaCB1bml0X29mX3RpbWVfbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJpbnZhbGlkIHNwYW4gcGFydCBzdWZmaXhcIlxuICAgICAgICB8IHVuaXRfb2ZfdGltZSA6OiByZXN0IC0+XG4gICAgICAgICAgbGV0IHN1ZmZpeCA9IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgaWYgU3RyaW5nLmlzX3N1YnN0cmluZ19hdCBzdHJpbmcgfnBvczppbmRleCB+c3Vic3RyaW5nOnN1ZmZpeFxuICAgICAgICAgIHRoZW4gdW5pdF9vZl90aW1lXG4gICAgICAgICAgZWxzZSBmaW5kX3VuaXRfb2ZfdGltZV9ieV9zdWZmaXggc3RyaW5nIH5pbmRleCByZXN0XG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2Vfc3VmZml4IHN0cmluZyB+aW5kZXggPVxuICAgICAgICAoKiBXZSByZWx5IG9uIHRoZSBmYWN0IHRoYXQgXCJtc1wiIGNvbWVzIGJlZm9yZSBcIm1cIiBpbiBbVW5pdF9vZl90aW1lLmFsbF0gdG8gZ2V0IGFcbiAgICAgICAgICAgY29ycmVjdCBtYXRjaCBvbiBtaWxsaXNlY29uZCB0aW1lc3RhbXBzLiBUaGlzIGFzc3VtcHRpb24gaXMgZGVtb25zdHJhdGVkIGluIHRoZVxuICAgICAgICAgICBleHBlY3QgdGVzdCBiZWxvdy4gKilcbiAgICAgICAgZmluZF91bml0X29mX3RpbWVfYnlfc3VmZml4IHN0cmluZyB+aW5kZXggVW5pdF9vZl90aW1lLmFsbFxuICAgICAgOztcblxuICAgICAgKCogV2UgdmFsaWRhdGUgbWFnbml0dWRlIHN0cmluZ3Mgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHRoZSB1bml0LW9mLXRpbWUgc3VmZml4XG4gICAgICAgICBiZWdpbnMsIGFuZCBzbyB0aGF0IG9ubHkgc2Vuc2libGUgc3RyaW5ncyBhcmUgYWxsb3dlZC4gV2UgZG8gbm90IHdhbnQgdG8gYmUgYXNcbiAgICAgICAgIHBlcm1pc3NpdmUgYXMgW0Zsb2F0Lm9mX3N0cmluZ107IGZvciBleGFtcGxlLCBoZXhhZGVjaW1hbCBzcGFuIG1hZ25pdHVkZXMgYXJlIG5vdFxuICAgICAgICAgYWxsb3dlZC4gQWZ0ZXIgdmFsaWRhdGlvbiwgd2Ugc3RpbGwgdXNlIFtGbG9hdC5vZl9zdHJpbmddIHRvIHByb2R1Y2UgdGhlIGFjdHVhbFxuICAgICAgICAgdmFsdWUuICopXG4gICAgICBtb2R1bGUgRmxvYXRfcGFyc2VyID0gc3RydWN0XG4gICAgICAgICgqIFtJbl9kZWNpbWFsX2hhdmVfZGlnaXRdIGluY2x1ZGVzIGhhdmluZyBhIGRpZ2l0IGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludC4gKilcbiAgICAgICAgdHlwZSBzdGF0ZSA9XG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdFxuICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnblxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuXG4gICAgICAgIHR5cGUgdG9rZW4gPVxuICAgICAgICAgIHwgRGlnaXRcbiAgICAgICAgICB8IFBvaW50XG4gICAgICAgICAgfCBVbmRlclxuICAgICAgICAgIHwgU2lnblxuICAgICAgICAgIHwgRXhwdFxuXG4gICAgICAgIGxldCBzdGF0ZV9pc19maW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0IC0+IHRydWVcbiAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQgLT4gZmFsc2VcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9rZW5fb2ZfY2hhciA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCAnMCcgLi4gJzknIC0+IFNvbWUgRGlnaXRcbiAgICAgICAgICB8ICcuJyAtPiBTb21lIFBvaW50XG4gICAgICAgICAgfCAnXycgLT4gU29tZSBVbmRlclxuICAgICAgICAgIHwgJy0nIHwgJysnIC0+IFNvbWUgU2lnblxuICAgICAgICAgIHwgJ0UnIHwgJ2UnIC0+IFNvbWUgRXhwdFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGludmFsaWRfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJpbnZhbGlkIHNwYW4gcGFydCBtYWduaXR1ZGVcIlxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWMgZmluZF9pbmRleF9hZnRlcl9mbG9hdF9pbl9zdGF0ZSBzdHJpbmcgfmluZGV4IH5sZW4gfnN0YXRlID1cbiAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgIGlmIGluZGV4ID0gbGVuXG4gICAgICAgICAgdGhlbiBpZiBzdGF0ZV9pc19maW5hbCBzdGF0ZSB0aGVuIGluZGV4IGVsc2UgaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCB0b2tlbl9vZl9jaGFyIHN0cmluZy5baW5kZXhdIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBpZiBzdGF0ZV9pc19maW5hbCBzdGF0ZSB0aGVuIGluZGV4IGVsc2UgaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICB8IFNvbWUgdG9rZW4gLT5cbiAgICAgICAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICAgICAgICBtYXRjaCBzdGF0ZSwgdG9rZW4gd2l0aFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBEaWdpdCAtPiBJbl9pbnRlZ2VyX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgUG9pbnQgLT4gSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIFNpZ25cbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgRXhwdCAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgRGlnaXQgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIFVuZGVyIC0+XG4gICAgICAgICAgICAgICAgICBJbl9pbnRlZ2VyX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgUG9pbnQgLT4gSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIEV4cHQgLT4gSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIERpZ2l0IC0+IEluX2RlY2ltYWxfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBQb2ludFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBFeHB0XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIERpZ2l0IHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBVbmRlciAtPlxuICAgICAgICAgICAgICAgICAgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIEV4cHQgLT4gSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIFBvaW50IHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBTaWduIC0+XG4gICAgICAgICAgICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgRGlnaXQgLT4gSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBTaWduIC0+IEluX2V4cG9uZW50X25lZWRfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgVW5kZXJcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgRXhwdCAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIERpZ2l0IC0+IEluX2V4cG9uZW50X2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgRXhwdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIERpZ2l0IHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgVW5kZXIgLT5cbiAgICAgICAgICAgICAgICAgIEluX2V4cG9uZW50X2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBFeHB0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBTaWduIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0X2luX3N0YXRlIHN0cmluZyB+aW5kZXg6KGluZGV4ICsgMSkgfmxlbiB+c3RhdGUpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXQgc3RyaW5nIH5pbmRleCB+bGVuID1cbiAgICAgICAgICBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0X2luX3N0YXRlIHN0cmluZyB+aW5kZXggfmxlbiB+c3RhdGU6SW5faW50ZWdlcl9uZWVkX2RpZ2l0XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbGV0IHJlYyBhY2N1bXVsYXRlX21hZ25pdHVkZSBzdHJpbmcgfm1hZ25pdHVkZSB+aW5kZXggfmxlbiA9XG4gICAgICAgIGlmIEludC5lcXVhbCBpbmRleCBsZW5cbiAgICAgICAgdGhlbiBtYWduaXR1ZGVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHN1ZmZpeF9pbmRleCA9IEZsb2F0X3BhcnNlci5maW5kX2luZGV4X2FmdGVyX2Zsb2F0IHN0cmluZyB+aW5kZXggfmxlbiBpblxuICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgPSBwYXJzZV9zdWZmaXggc3RyaW5nIH5pbmRleDpzdWZmaXhfaW5kZXggaW5cbiAgICAgICAgICBsZXQgdW50aWxfaW5kZXggPVxuICAgICAgICAgICAgSW50LiggKyApIHN1ZmZpeF9pbmRleCAoU3RyaW5nLmxlbmd0aCAoc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZsb2F0X3N0cmluZyA9XG4gICAgICAgICAgICBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOmluZGV4IH5sZW46KEludC4oIC0gKSBzdWZmaXhfaW5kZXggaW5kZXgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmxvYXQgPSBGbG9hdC5vZl9zdHJpbmcgZmxvYXRfc3RyaW5nIGluXG4gICAgICAgICAgbGV0IG1hZ25pdHVkZSA9IG1hZ25pdHVkZSArIHNjYWxlX2J5X3VuaXRfb2ZfdGltZSBmbG9hdCB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBhY2N1bXVsYXRlX21hZ25pdHVkZSBzdHJpbmcgfm1hZ25pdHVkZSB+aW5kZXg6dW50aWxfaW5kZXggfmxlbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9tYWduaXR1ZGUgc3RyaW5nIH5pbmRleCB+bGVuID1cbiAgICAgICAgYWNjdW11bGF0ZV9tYWduaXR1ZGUgc3RyaW5nIH5tYWduaXR1ZGU6VC56ZXJvIH5pbmRleCB+bGVuXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgIG1hdGNoIHN0cmluZyB3aXRoXG4gICAgICAgIHwgXCJOQU5zXCIgLT4gb2Zfc2VjIEZsb2F0Lm5hblxuICAgICAgICB8IFwiLUlORnNcIiAtPiBvZl9zZWMgRmxvYXQubmVnX2luZmluaXR5XG4gICAgICAgIHwgXCJJTkZzXCIgLT4gb2Zfc2VjIEZsb2F0LmluZmluaXR5XG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICAgICAgICAgIGlmIGxlbiA9IDAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImVtcHR5IGlucHV0XCI7XG4gICAgICAgICAgbGV0IG5lZ2F0aXZlLCBpbmRleCA9XG4gICAgICAgICAgICBtYXRjaCBzdHJpbmcuWzBdIHdpdGhcbiAgICAgICAgICAgIHwgJy0nIC0+IHRydWUsIDFcbiAgICAgICAgICAgIHwgJysnIC0+IGZhbHNlLCAxXG4gICAgICAgICAgICB8IF8gLT4gZmFsc2UsIDBcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGluZGV4ID49IGxlbiB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZW1wdHkgaW5wdXRcIjtcbiAgICAgICAgICBsZXQgbWFnbml0dWRlID0gcGFyc2VfbWFnbml0dWRlIHN0cmluZyB+aW5kZXggfmxlbiBpblxuICAgICAgICAgIGlmIG5lZ2F0aXZlIHRoZW4gVC5uZWcgbWFnbml0dWRlIGVsc2UgbWFnbml0dWRlXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IG9mX3N0cmluZyA9IE9mX3N0cmluZy5vZl9zdHJpbmdcblxuICAgIG1vZHVsZSBUb19zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgIGxldCBzdHJpbmdfb2ZfZmxvYXRfd2l0aG91dF90cmFpbGluZ19kZWNpbWFsIGZsb2F0ID1cbiAgICAgICAgbGV0IHN0cmluZyA9IEZsb2F0LnRvX3N0cmluZyBmbG9hdCBpblxuICAgICAgICBsZXQgc3VmZml4ID0gXCIuXCIgaW5cbiAgICAgICAgaWYgU3RyaW5nLmlzX3N1ZmZpeCBzdHJpbmcgfnN1ZmZpeFxuICAgICAgICB0aGVuIFN0cmluZy5jaG9wX3N1ZmZpeF9leG4gc3RyaW5nIH5zdWZmaXhcbiAgICAgICAgZWxzZSBzdHJpbmdcbiAgICAgIDs7XG5cbiAgICAgICgqIEFzIHdlIGJ1aWxkIHVwIGEgc3RyaW5nLCB3ZSBrZWVwIGEgcnVubmluZyBzdW0gb2YgdGhlIHZhbHVlIHRoYXQgd2lsbCBiZSByZWFkXG4gICAgICAgICBiYWNrIGluLCBzbyB0aGF0IHdlIGNhbiBjb21wdXRlIHRoZSByZW1haW5kZXIgdGhhdCBuZWVkcyB0byBiZSBnZW5lcmF0ZWQuICopXG4gICAgICBsZXQgc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgPVxuICAgICAgICBzdW1fdCArIHNjYWxlX2J5X3VuaXRfb2ZfdGltZSBtYWduaXR1ZGUgdW5pdF9vZl90aW1lXG4gICAgICA7O1xuXG4gICAgICAoKiBGb3Igc29tZSB1bml0cyAodmVyeSBsYXJnZSBudW1iZXJzIG9mIGRheXMsIG9yIHNlY29uZHMgYW5kIHNtYWxsZXIpIHdlIGp1c3RcbiAgICAgICAgIHJlbmRlciBhIGZsb2F0IGRpcmVjdGx5LCB3aXRoIGEgZml4IGZvciByb3VuZG9mZiBlcnJvci4gKilcbiAgICAgIGxldCB0b19mbG9hdF9zdHJpbmcgfmFic190IH51bml0X29mX3RpbWUgfmZpeHVwX3VuaXRfb2ZfdGltZSA9XG4gICAgICAgIGxldCBtYWduaXR1ZGUgPSBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIGFic190IHVuaXRfb2ZfdGltZSBpblxuICAgICAgICBsZXQgc3VtX3QgPSBzdW0gfnN1bV90Onplcm8gfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgIGlmIHN1bV90ID0gYWJzX3RcbiAgICAgICAgdGhlblxuICAgICAgICAgIHN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaW5nX2RlY2ltYWwgbWFnbml0dWRlXG4gICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbWFnbml0dWRlID1cbiAgICAgICAgICAgIGlmIHN1bV90IDwgYWJzX3RcbiAgICAgICAgICAgIHRoZW4gbWFnbml0dWRlXG4gICAgICAgICAgICBlbHNlIGRpdmlkZV9ieV91bml0X29mX3RpbWUgKHByZXYgYWJzX3QpIHVuaXRfb2ZfdGltZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHN1bV90ID0gc3VtIH5zdW1fdDp6ZXJvIH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICAgIGxldCByZW1fdCA9IGFic190IC0gc3VtX3QgaW5cbiAgICAgICAgICBsZXQgZml4dXBfbWFnbml0dWRlID0gZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSByZW1fdCBmaXh1cF91bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBzdHJpbmdfb2ZfZmxvYXRfd2l0aG91dF90cmFpbGluZ19kZWNpbWFsIG1hZ25pdHVkZVxuICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgICAoKiBbcmVtX3RdIGlzIGF0IFVMUCBzaXplIG9mIFthYnNfdF0sIGl0IG5lZWRzIGp1c3Qgb25lIGJpdCBvZiBwcmVjaXNpb24gKilcbiAgICAgICAgICBeIHNwcmludGYgXCIlLjFnXCIgZml4dXBfbWFnbml0dWRlXG4gICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIGZpeHVwX3VuaXRfb2ZfdGltZSlcbiAgICAgIDs7XG5cbiAgICAgICgqIEZvciBub24tZGVjaW1hbCB1bml0cyAobWludXRlcyBhbmQgZ3JlYXRlciksIHdlIHJlbmRlciBhbiBpbnRlZ2VyIG1hZ25pdHVkZSwgYW5kXG4gICAgICAgICByZXR1cm4gdGhhdCB3aXRoIHRoZSBydW5uaW5nIHN1bSBzbyB0aGUgcmVtYWluZGVyIGNhbiBiZSByZW5kZXJlZCBhdCBhIHNtYWxsZXJcbiAgICAgICAgIHVuaXQuICopXG4gICAgICBsZXQgdG9faW50X3N0cmluZ19hbmRfc3VtIHVuaXRfb2ZfdGltZSB+YWJzX3QgfnN1bV90ID1cbiAgICAgICAgbGV0IHVuaXRfc3BhbiA9IG9mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgbGV0IHJlbV90ID0gYWJzX3QgLSBzdW1fdCBpblxuICAgICAgICAoKiBXZSBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIG11bHRpcGxlIG9mIFt1bml0X29mX3RpbWVdIHRoYXQgbmVlZHMgdG8gYmVcbiAgICAgICAgICAgYWRkZWQgdG8gW3N1bV90XS4gRHVlIHRvIHJvdW5kaW5nLCB0aGlzIGNhbiBiZSBvZmYgYnkgb25lICh3ZSd2ZSBuZXZlciBzZWVuIGFcbiAgICAgICAgICAgY2FzZSBvZmYgYnkgdHdvIG9yIG1vcmUpLCBzbyB3ZSByZS1jb21wdXRlIHRoZSByZW1haW5kZXIgYW5kIGNvcnJlY3QgaWZcbiAgICAgICAgICAgbmVjZXNzYXJ5LiAqKVxuICAgICAgICBsZXQgbWFnbml0dWRlID0gRmxvYXQucm91bmRfZG93biAocmVtX3QgLy8gdW5pdF9zcGFuKSBpblxuICAgICAgICBsZXQgbmV3X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgbGV0IG5ld19yZW1fdCA9IGFic190IC0gbmV3X3N1bV90IGluXG4gICAgICAgIGxldCBtYWduaXR1ZGUgPVxuICAgICAgICAgIGlmIG5ld19yZW1fdCA9IHplcm9cbiAgICAgICAgICB0aGVuIG1hZ25pdHVkZVxuICAgICAgICAgIGVsc2UgaWYgbmV3X3JlbV90IDwgemVyb1xuICAgICAgICAgIHRoZW4gbWFnbml0dWRlIC0uIDEuXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbmV4dF9tYWduaXR1ZGUgPSBtYWduaXR1ZGUgKy4gMS4gaW5cbiAgICAgICAgICAgIGxldCBuZXh0X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGU6bmV4dF9tYWduaXR1ZGUgaW5cbiAgICAgICAgICAgIGxldCBuZXh0X3JlbV90ID0gYWJzX3QgLSBuZXh0X3N1bV90IGluXG4gICAgICAgICAgICBpZiBuZXh0X3JlbV90IDwgemVybyB0aGVuIG1hZ25pdHVkZSBlbHNlIG5leHRfbWFnbml0dWRlKVxuICAgICAgICBpblxuICAgICAgICBpZiBGbG9hdC4oIDw9ICkgbWFnbml0dWRlIDAuXG4gICAgICAgIHRoZW4gXCJcIiwgc3VtX3RcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IG5ld19zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgICAgbGV0IHN0cmluZyA9XG4gICAgICAgICAgICBJbnQ2My50b19zdHJpbmcgKEludDYzLm9mX2Zsb2F0IG1hZ25pdHVkZSlcbiAgICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgICBpblxuICAgICAgICAgIHN0cmluZywgbmV3X3N1bV90KVxuICAgICAgOztcblxuICAgICAgbGV0IGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIHQgPSBGbG9hdC5sb2cxMCAodG9fc2VjIHQpXG5cbiAgICAgICgqIFRoZSBmaW5hbCBzZWNvbmRzLW9yLXNtYWxsZXIgdW5pdCBuZWVkcyB0byBiZSBwcmludGVkIHdpdGggZW5vdWdoIGRpZ2l0cyB0b1xuICAgICAgICAgcm91bmQtdHJpcCB0aGUgd2hvbGUgc3BhbiAod2hpY2ggaXMgbWludXRlcyBvciBncmVhdGVyKTsgdGhpcyBjYW4gYmVcbiAgICAgICAgIHNpZ25pZmljYW50bHkgZmV3ZXIgZGlnaXRzIHRoYW4gd291bGQgYmUgbmVlZGVkIGZvciB0aGUgc2Vjb25kcy1vci1zbWFsbGVyXG4gICAgICAgICByZW1haW5kZXIgaXRzZWxmLiAqKVxuICAgICAgbGV0IHRvX2Zsb2F0X3N0cmluZ19hZnRlcl9pbnRfc3RyaW5ncyB+c3VtX3QgfmFic190ID1cbiAgICAgICAgaWYgc3VtX3QgPj0gYWJzX3RcbiAgICAgICAgdGhlbiBcIlwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZW1fdCA9IGFic190IC0gc3VtX3QgaW5cbiAgICAgICAgICBsZXQgdW5pdF9vZl90aW1lID0gdG9fdW5pdF9vZl90aW1lIHJlbV90IGluXG4gICAgICAgICAgbGV0IHVuaXRfc3BhbiA9IG9mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBsZXQgbWFnbml0dWRlID0gcmVtX3QgLy8gdW5pdF9zcGFuIGluXG4gICAgICAgICAgbGV0IG5ld19zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgICAgbGV0IG5ld19yZW1fdCA9IGFic190IC0gbmV3X3N1bV90IGluXG4gICAgICAgICAgaWYgYWJzIHJlbV90IDw9IGFicyBuZXdfcmVtX3RcbiAgICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmlyc3RfZGlnaXQgPVxuICAgICAgICAgICAgICBGbG9hdC5pcm91bmRfZG93bl9leG4gKGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIHJlbV90KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBoYWxmX3VscCA9IChhYnNfdCAtIHByZXYgYWJzX3QpIC8gMi4gaW5cbiAgICAgICAgICAgIGxldCBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmluYWxfZGlnaXQgPVxuICAgICAgICAgICAgICAoKiBUaGlzIHdvcmtzIG91dCB0byByb3VuZGluZyBkb3duLCBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgZXhhY3QgaW50ZWdlcnMsXG4gICAgICAgICAgICAgICAgIHdoaWNoIGFyZSBkZWNyZW1lbnRlZC4gVGhpcyBtYWtlcyBzdXJlIHdlIGFsd2F5cyBzdG9wIGF0IGEgZGlnaXQgd2l0aFxuICAgICAgICAgICAgICAgICBzdHJpY3RseSBtb3JlIHByZWNpc2lvbiB0aGFuIGhhbGYgdGhlIFVMUC4gKilcbiAgICAgICAgICAgICAgSW50LnByZWQgKEZsb2F0Lmlyb3VuZF91cF9leG4gKGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIGhhbGZfdWxwKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbnVtYmVyX29mX2RpZ2l0cyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIDEgKyBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmlyc3RfZGlnaXQgLSBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmluYWxfZGlnaXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgc3VmZml4ID0gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICAgIHNwcmludGYgXCIlLipnXCIgbnVtYmVyX29mX2RpZ2l0cyBtYWduaXR1ZGUgXiBzdWZmaXgpKVxuICAgICAgOztcblxuICAgICAgKCogVGhpcyBoZWxwZXIgYXZvaWRzIHVubmVjZXNzYXJ5IGFsbG9jYXRpb24sIGJlY2F1c2UgZm9yIG91ciB1c2UgYmVsb3csIGl0IGlzXG4gICAgICAgICBjb21tb24gdG8gaGF2ZSBlaXRoZXIgb3IgYm90aCBhcmd1bWVudHMgYmUgZW1wdHkuIEN1cnJlbnRseSAoMjAxOC0wMiksIHRoZVxuICAgICAgICAgYnVpbHQtaW4gW15dIGFsbG9jYXRlcyBldmVuIHdoZW4gYXBwZW5kaW5nIHRvIGFuIGVtcHR5IHN0cmluZy4gKilcbiAgICAgIGxldCAoIF4/ICkgeCB5ID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHggdGhlbiB5IGVsc2UgaWYgU3RyaW5nLmlzX2VtcHR5IHkgdGhlbiB4IGVsc2UgeCBeIHlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgIGxldCBmbG9hdCA9IHRvX2Zsb2F0IHQgaW5cbiAgICAgICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgZmxvYXQpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiAoKiBXZSBwcmludCBzcGVjaWZpYyBzcGVjaWFsIHN0cmluZ3MgZm9yIG5vbi1maW5pdGUgZmxvYXRzICopXG4gICAgICAgICAgICBGbG9hdC5pc19uYW4gZmxvYXRcbiAgICAgICAgICB0aGVuIFwiTkFOc1wiXG4gICAgICAgICAgZWxzZSBpZiBGbG9hdC5pc19uZWdhdGl2ZSBmbG9hdFxuICAgICAgICAgIHRoZW4gXCItSU5Gc1wiXG4gICAgICAgICAgZWxzZSBcIklORnNcIlxuICAgICAgICBlbHNlIGlmIHQgPSB6ZXJvXG4gICAgICAgIHRoZW4gXCIwc1wiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgPSB0b191bml0X29mX3RpbWUgdCBpblxuICAgICAgICAgIGxldCBhYnNfdCA9IGFicyB0IGluXG4gICAgICAgICAgbGV0IHNpZ24gPSBpZiB0IDwgemVybyB0aGVuIFwiLVwiIGVsc2UgXCJcIiBpblxuICAgICAgICAgIGxldCBtYWduaXR1ZGVfc3RyaW5nID1cbiAgICAgICAgICAgIG1hdGNoIHVuaXRfb2ZfdGltZSB3aXRoXG4gICAgICAgICAgICAoKiBXZSBjYW4gdXNlIG5vcm1hbCBmbG9hdCBub3RhdGlvbiBmb3Igc2Vjb25kcyBhbmQgc3ViLXNlY29uZCB1bml0cywgdGhleSBhcmVcbiAgICAgICAgICAgICAgIHJlYWRhYmxlIHdpdGggYSBkZWNpbWFsIHBvaW50LiAqKVxuICAgICAgICAgICAgfCBOYW5vc2Vjb25kIHwgTWljcm9zZWNvbmQgfCBNaWxsaXNlY29uZCB8IFNlY29uZCAtPlxuICAgICAgICAgICAgICB0b19mbG9hdF9zdHJpbmcgfmFic190IH51bml0X29mX3RpbWUgfmZpeHVwX3VuaXRfb2ZfdGltZTpOYW5vc2Vjb25kXG4gICAgICAgICAgICAoKiBGb3IgbGFyZ2UgZW5vdWdoIHZhbHVlcyB0aGF0IHRoZSBVTFAgaXMgYSBkYXkgb3IgbW9yZSwgd2UgY2FuIHVzZSBmbG9hdFxuICAgICAgICAgICAgICAgbm90YXRpb24gYmVjYXVzZSB3ZSBhcmUgZXhwcmVzc2luZyBhIHNpbmdsZSwgdmVyeSBsYXJnZSBpbnRlZ2VyLiAqKVxuICAgICAgICAgICAgfCBEYXkgd2hlbiBuZXh0IGFic190IC0gYWJzX3QgPj0gZGF5IC0+XG4gICAgICAgICAgICAgIHRvX2Zsb2F0X3N0cmluZyB+YWJzX3QgfnVuaXRfb2ZfdGltZSB+Zml4dXBfdW5pdF9vZl90aW1lOkRheVxuICAgICAgICAgICAgKCogRm9yIGV2ZXJ5dGhpbmcgaW4gYmV0d2Vlbiwgd2UgbmVlZCB0byB1c2UgaW50ZWdlciB1bml0cyBvZiBkYXlzLCBob3VycyxcbiAgICAgICAgICAgICAgIGFuZC9vciBtaW51dGVzLCBiZWNhdXNlIHRob3NlIHVuaXRzIGFyZSBub3QgcmVhZGFibGUgYXMgZGVjaW1hbHMsIGFuZCB3ZVxuICAgICAgICAgICAgICAgdGFjayBvbiBhIGRlY2ltYWwgcmVtYWluZGVyIG9mIGEgc2Vjb25kcy1vci1zbWFsbGVyIHVuaXQgaWYgbmVjZXNzYXJ5LiAqKVxuICAgICAgICAgICAgfCBNaW51dGUgfCBIb3VyIHwgRGF5IC0+XG4gICAgICAgICAgICAgIGxldCBzdW1fdCA9IHplcm8gaW5cbiAgICAgICAgICAgICAgbGV0IGRheV9zdHJpbmcsIHN1bV90ID0gdG9faW50X3N0cmluZ19hbmRfc3VtIH5hYnNfdCB+c3VtX3QgRGF5IGluXG4gICAgICAgICAgICAgIGxldCBob3VyX3N0cmluZywgc3VtX3QgPSB0b19pbnRfc3RyaW5nX2FuZF9zdW0gfmFic190IH5zdW1fdCBIb3VyIGluXG4gICAgICAgICAgICAgIGxldCBtaW51dGVfc3RyaW5nLCBzdW1fdCA9IHRvX2ludF9zdHJpbmdfYW5kX3N1bSB+YWJzX3QgfnN1bV90IE1pbnV0ZSBpblxuICAgICAgICAgICAgICBsZXQgZmxvYXRfc3RyaW5nID0gdG9fZmxvYXRfc3RyaW5nX2FmdGVyX2ludF9zdHJpbmdzIH5hYnNfdCB+c3VtX3QgaW5cbiAgICAgICAgICAgICAgZGF5X3N0cmluZyBePyBob3VyX3N0cmluZyBePyBtaW51dGVfc3RyaW5nIF4/IGZsb2F0X3N0cmluZ1xuICAgICAgICAgIGluXG4gICAgICAgICAgc2lnbiBePyBtYWduaXR1ZGVfc3RyaW5nKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCB0b19zdHJpbmcgPSBUb19zdHJpbmcudG9fc3RyaW5nXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICAgIGxldCB0X29mX3NleHAgcyA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgU2V4cC5BdG9tIHggLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmcgeCB3aXRoXG4gICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgcylcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT5cbiAgICAgICAgb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3Bhbi5TdGFibGUuVjMudF9vZl9zZXhwOiBzZXhwIG11c3QgYmUgYW4gQXRvbVwiIHNcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WM1xuXG5sZXQgdG9fcHJvcG9ydGlvbmFsX2Zsb2F0ID0gdG9fZmxvYXRcblxubGV0IHRvX3N0cmluZ19odW1cbiAgICAgID8oZGVsaW1pdGVyID0gJ18nKVxuICAgICAgPyhkZWNpbWFscyA9IDMpXG4gICAgICA/KGFsaWduX2RlY2ltYWwgPSBmYWxzZSlcbiAgICAgID91bml0X29mX3RpbWVcbiAgICAgIHRcbiAgPVxuICBsZXQgZmxvYXQsIHN1ZmZpeCA9XG4gICAgbWF0Y2ggT3B0aW9uLnZhbHVlIHVuaXRfb2ZfdGltZSB+ZGVmYXVsdDoodG9fdW5pdF9vZl90aW1lIHQpIHdpdGhcbiAgICB8IERheSAtPiB0b19kYXkgdCwgXCJkXCJcbiAgICB8IEhvdXIgLT4gdG9faHIgdCwgXCJoXCJcbiAgICB8IE1pbnV0ZSAtPiB0b19taW4gdCwgXCJtXCJcbiAgICB8IFNlY29uZCAtPiB0b19zZWMgdCwgXCJzXCJcbiAgICB8IE1pbGxpc2Vjb25kIC0+IHRvX21zIHQsIFwibXNcIlxuICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdCwgXCJ1c1wiXG4gICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHQsIFwibnNcIlxuICBpblxuICBsZXQgcHJlZml4ID1cbiAgICBGbG9hdC50b19zdHJpbmdfaHVtIGZsb2F0IH5kZWxpbWl0ZXIgfmRlY2ltYWxzIH5zdHJpcF96ZXJvOihub3QgYWxpZ25fZGVjaW1hbClcbiAgaW5cbiAgbGV0IHN1ZmZpeCA9XG4gICAgaWYgYWxpZ25fZGVjaW1hbCAmJiBJbnQuKCA9ICkgKFN0cmluZy5sZW5ndGggc3VmZml4KSAxIHRoZW4gc3VmZml4IF4gXCIgXCIgZWxzZSBzdWZmaXhcbiAgaW5cbiAgcHJlZml4IF4gc3VmZml4XG47O1xuXG5sZXQgZ2VuX2luY2wgbG8gaGkgPVxuICBGbG9hdC5nZW5faW5jbCAodG9fc2VjIGxvKSAodG9fc2VjIGhpKSB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc2VjXG47O1xuXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCBsbyBoaSA9XG4gICgqIFRlY2huaWNhbGx5IGV4Y2x1c2l2ZSByYXRoZXIgdGhhbiBpbmNsdXNpdmUsIGJ1dCBvdGhlcndpc2Ugc2F0aXNmaWVzIHRoZSBjb250cmFjdCB0b1xuICAgICB3aXRoaW4gMXVscCBvZiB0aGUgZ2l2ZW4gYm91bmRzLiAqKVxuICBGbG9hdC5nZW5fdW5pZm9ybV9leGNsICh0b19zZWMgbG8pICh0b19zZWMgaGkpIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zZWNcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICgqIFdlIGdlbmVyYXRlIHNwYW5zIHVwIHRvIChzbGlnaHRseSBtb3JlIHRoYW4pIGEgbWlsbGVuaXVtLCBwb3NpdGl2ZSBvciBuZWdhdGl2ZS4gVGhpc1xuICAgICBpcyBiYXNlZCBvbiB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyLCBpbiB3aGljaCB5ZWFycyBhdmVyYWdlIDM2NS4yNDI1IGRheXMgd2hlblxuICAgICBhY2NvdW50aW5nIGZvciBsZWFwIGRheXMuIENvdmVyaW5nIGEgdHdvLW1pbGxlbml1bSBzcGFuIGlzIG1vcmUgdGhhbiBlbm91Z2ggZm9yIG1vc3RcbiAgICAgcHJhY3RpY2FsIHB1cnBvc2VzLCBjZXJ0YWlubHkgbW9yZSB0aGFuIGVub3VnaCB0byBjb3ZlciB0aGUgcmVwcmVzZW50YWJsZSByYW5nZSBvZlxuICAgICBbU3Bhbl9uc10sIGFuZCByZXN1bHRzIGluIGZpbml0ZSBzcGFucyBhbmQgdGltZXMgdGhhdCBjYW4gYmUgc2VyaWFsaXplZC5cblxuICAgICBXZSBnZW5lcmF0ZSBieSBmaWx0ZXJpbmcgdGhlIGRlZmF1bHQgZ2VuZXJhdG9yIHNvIHRoYXQgc3BhbnMgYXJlIHN0aWxsIHNrZXdlZCB0b3dhcmRcbiAgICAgc21hbGwgdmFsdWVzLCBldmVuIHRob3VnaCB0aGUgYm91bmRzIGFyZSBsYXJnZS4gKilcbiAgbGV0IG1pbGxlbml1bSA9IG9mX2RheSAoRmxvYXQucm91bmRfdXAgKDM2NS4yNDI1ICouIDEwMDAuKSkgaW5cbiAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOihmdW4gdCAtPlxuICAgIG5lZyBtaWxsZW5pdW0gPD0gdCAmJiB0IDw9IG1pbGxlbml1bSlcbjs7XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWUuU3BhblwiXG4gIGVuZClcblxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGhhc2gtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdCBzZXJpYWxpemF0aW9uIHJhdGhlclxuICAgICAgIHRoYW4gdGltZSBzZXJpYWxpemF0aW9uLCBzbyB3aGVuIHJlYWRpbmcgaGFzaC1iYXNlZCBjb250YWluZXJzIGluIHdlIGFjY2VwdCBlaXRoZXJcbiAgICAgICBzZXJpYWxpemF0aW9uLiAqKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBGbG9hdC50X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICB8IGZsb2F0IC0+IG9mX2Zsb2F0IGZsb2F0XG4gICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgQyA9IHN0cnVjdFxuICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBULmNvbXBhcmF0b3JcblxuICAoKiBJbiAxMDguMDZhIGFuZCBlYXJsaWVyLCBzcGFucyBpbiBzZXhwcyBvZiBNYXBzIGFuZCBTZXRzIHdlcmUgcmF3IGZsb2F0cy4gIEZyb20gMTA4LjA3XG4gICAgIHRocm91Z2ggMTA5LjEzLCB0aGUgb3V0cHV0IGZvcm1hdCByZW1haW5lZCByYXcgYXMgYmVmb3JlLCBidXQgYm90aCB0aGUgcmF3IGFuZCBwcmV0dHlcbiAgICAgZm9ybWF0IHdlcmUgYWNjZXB0ZWQgYXMgaW5wdXQuICBGcm9tIDEwOS4xNCBvbiwgdGhlIG91dHB1dCBmb3JtYXQgd2FzIGNoYW5nZWQgZnJvbVxuICAgICByYXcgdG8gcHJldHR5LCB3aGlsZSBjb250aW51aW5nIHRvIGFjY2VwdCBib3RoIGZvcm1hdHMuICBPbmNlIHdlIGJlbGlldmUgbW9zdFxuICAgICBwcm9ncmFtcyBhcmUgYmV5b25kIDEwOS4xNCwgd2Ugd2lsbCBzd2l0Y2ggdGhlIGlucHV0IGZvcm1hdCB0byBubyBsb25nZXIgYWNjZXB0XG4gICAgIHJhdy4gKilcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gVC5vZl9mbG9hdCAoRmxvYXQudF9vZl9zZXhwIHNleHApKSB3aXRoXG4gICAgfCBTb21lIHQgLT4gdFxuICAgIHwgTm9uZSAtPiB0X29mX3NleHAgc2V4cFxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChDKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgPSBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lXG4gIGxldCBwYXJzZV9zdWZmaXggPSBTdGFibGUuVjMuT2Zfc3RyaW5nLnBhcnNlX3N1ZmZpeFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIERpZ2l0X3N0cmluZ19oZWxwZXJzXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgU3BhbiA9IFNwYW5fZmxvYXRcblxuKCogQ3JlYXRlIGFuIGFic3RyYWN0IHR5cGUgZm9yIE9mZGF5IHRvIHByZXZlbnQgdXMgZnJvbSBjb25mdXNpbmcgaXQgd2l0aFxuICAgb3RoZXIgZmxvYXRzLlxuKilcbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IGZsb2F0XG4gICAgICB0eXBlIHQgPSBwcml2YXRlIHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIEZsb2F0YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIHZhbCBhZGQgOiB0IC0+IFNwYW4udCAtPiB0IG9wdGlvblxuICAgICAgdmFsIHN1YiA6IHQgLT4gU3Bhbi50IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgbmV4dCA6IHQgLT4gdCBvcHRpb25cbiAgICAgIHZhbCBwcmV2IDogdCAtPiB0IG9wdGlvblxuICAgICAgdmFsIGRpZmYgOiB0IC0+IHQgLT4gU3Bhbi50XG4gICAgICB2YWwgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIDogU3Bhbi50IC0+IHRcbiAgICAgIHZhbCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgOiBTcGFuLnQgLT4gdFxuICAgICAgdmFsIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbGlkIDogU3Bhbi50IC0+IGJvb2xcbiAgICAgIHZhbCB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA6IHQgLT4gU3Bhbi50XG4gICAgICB2YWwgc3RhcnRfb2ZfZGF5IDogdFxuICAgICAgdmFsIHN0YXJ0X29mX25leHRfZGF5IDogdFxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgKCogTnVtYmVyIG9mIHNlY29uZHMgc2luY2UgbWlkbmlnaHQuICopXG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBGbG9hdC50XG5cbiAgICAgIGluY2x1ZGUgKFxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRmxvYXRcblxuICAgICAgICBsZXQgc2lnbiA9IHNpZ25fZXhuXG5cbiAgICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgICAgICBTdGFibGVfd2l0bmVzcy5FeHBvcnQuc3RhYmxlX3dpdG5lc3NfZmxvYXRcbiAgICAgICAgOztcbiAgICAgIGVuZCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gdW5kZXJseWluZyBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2NvbW1vbiB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgICBpbmNsdWRlIEZsb2F0YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBlbmQpXG5cbiAgICAgICgqIElGIFRISVMgUkVQUkVTRU5UQVRJT04gRVZFUiBDSEFOR0VTLCBFTlNVUkUgVEhBVCBFSVRIRVJcbiAgICAgICAgICgxKSBhbGwgdmFsdWVzIHNlcmlhbGl6ZSB0aGUgc2FtZSB3YXkgaW4gYm90aCByZXByZXNlbnRhdGlvbnMsIG9yXG4gICAgICAgICAoMikgeW91IGFkZCBhIG5ldyBUaW1lLk9mZGF5IHZlcnNpb24gdG8gc3RhYmxlLm1sICopXG5cbiAgICAgICgqIGR1ZSB0byBwcmVjaXNpb24gbGltaXRhdGlvbnMgaW4gZmxvYXQgd2UgY2FuJ3QgZXhwZWN0IGJldHRlciB0aGFuIG1pY3Jvc2Vjb25kXG4gICAgICAgICBwcmVjaXNpb24gKilcbiAgICAgIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTZcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCA9IFNwYW4ub2Zfc2VjIHRcblxuICAgICAgKCogQW5vdGhlciByZWFzb25hYmxlIGNob2ljZSB3b3VsZCBiZSBvbmx5IGFsbG93aW5nIE9mZGF5LnQgdG8gYmUgPCAyNGhyLCBidXQgdGhpc1xuICAgICAgICAgY2hvaWNlIHdhcyBtYWRlIGVhcmx5IG9uIGFuZCBwZW9wbGUgYmVjYW1lIHVzZWQgdG8gYmVpbmcgYWJsZSB0byBlYXNpbHkgY2FsbCAyNGhyXG4gICAgICAgICB0aGUgZW5kIG9mIHRoZSBkYXkuICBJdCdzIGEgYml0IHNhZCBiZWNhdXNlIGl0IHNoYXJlcyB0aGF0IG1vbWVudCB3aXRoIHRoZVxuICAgICAgICAgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGRheSwgYW5kIHJvdW5kIHRyaXBzIG9kZGx5IGlmIHBhc3NlZCB0aHJvdWdoXG4gICAgICAgICBUaW1lLnRvX2RhdGVfb2ZkYXkvVGltZS5vZl9kYXRlX29mZGF5LlxuXG4gICAgICAgICBOb3RlOiBbU2NoZWR1bGUudF0gcmVxdWlyZXMgdGhhdCB0aGUgZW5kIG9mIGRheSBiZSByZXByZXNlbnRhYmxlLCBhcyBpdCdzIHRoZVxuICAgICAgICAgb25seSB3YXkgdG8gd3JpdGUgYSBzY2hlZHVsZSBpbiB0ZXJtcyBvZiBbT2ZkYXkudF1zIHRoYXQgc3BhbnMgdHdvIHdlZWtkYXlzLiAqKVxuICAgICAgKCogb2ZkYXkgbXVzdCBiZSA+PSAwIGFuZCA8PSAyNGggKilcbiAgICAgIGxldCBpc192YWxpZCAodCA6IHQpID1cbiAgICAgICAgbGV0IHQgPSB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0IGluXG4gICAgICAgIFNwYW4uKCA8PSApIFNwYW4uemVybyB0ICYmIFNwYW4uKCA8PSApIHQgU3Bhbi5kYXlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbiA9IFNwYW4udG9fc2VjIHNwYW5cblxuICAgICAgbGV0IHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbGlkIHNwYW4gPVxuICAgICAgICBpc192YWxpZCAob2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfdW5jaGVja2VkIHNwYW4pXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIHNwYW4gPVxuICAgICAgICBsZXQgbW9kdWxlIEMgPSBGbG9hdC5DbGFzcyBpblxuICAgICAgICBsZXQgcyA9IFNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgbWF0Y2ggRmxvYXQuY2xhc3NpZnkgcyB3aXRoXG4gICAgICAgIHwgQy5JbmZpbml0ZSAtPiBpbnZhbGlkX2FyZyBcIk9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4bjogaW5maW5pdGUgdmFsdWVcIlxuICAgICAgICB8IEMuTmFuIC0+IGludmFsaWRfYXJnIFwiT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBOYU4gdmFsdWVcIlxuICAgICAgICB8IEMuTm9ybWFsIHwgQy5TdWJub3JtYWwgfCBDLlplcm8gLT5cbiAgICAgICAgICBpZiBub3QgKGlzX3ZhbGlkIHMpXG4gICAgICAgICAgdGhlbiBpbnZhbGlkX2FyZ2YgIVwiT2ZkYXkgb3V0IG9mIHJhbmdlOiAle1NwYW59XCIgc3BhbiAoKVxuICAgICAgICAgIGVsc2Ugc1xuICAgICAgOztcblxuICAgICAgbGV0IHN0YXJ0X29mX2RheSA9IDAuXG4gICAgICBsZXQgc3RhcnRfb2ZfbmV4dF9kYXkgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gU3Bhbi5kYXlcblxuICAgICAgbGV0IGFkZCAodCA6IHQpIChzcGFuIDogU3Bhbi50KSA9XG4gICAgICAgIGxldCB0ID0gdCArLiBTcGFuLnRvX3NlYyBzcGFuIGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIHQgdGhlbiBTb21lIHQgZWxzZSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3ViICh0IDogdCkgKHNwYW4gOiBTcGFuLnQpID1cbiAgICAgICAgbGV0IHQgPSB0IC0uIFNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgdCB0aGVuIFNvbWUgdCBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBuZXh0IHQgPVxuICAgICAgICBsZXQgY2FuZGlkYXRlID0gRmxvYXQub25lX3VscCBgVXAgdCBpblxuICAgICAgICBpZiBpc192YWxpZCBjYW5kaWRhdGUgdGhlbiBTb21lIGNhbmRpZGF0ZSBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwcmV2IHQgPVxuICAgICAgICBsZXQgY2FuZGlkYXRlID0gRmxvYXQub25lX3VscCBgRG93biB0IGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIGNhbmRpZGF0ZSB0aGVuIFNvbWUgY2FuZGlkYXRlIGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IGRpZmYgdDEgdDIgPVxuICAgICAgICBTcGFuLiggLSApICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0MSkgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQyKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5ID1cbiAgICAgIE9wdGlvbi52YWx1ZV9leG4gKFQuc3ViIFQuc3RhcnRfb2ZfbmV4dF9kYXkgU3Bhbi5taWNyb3NlY29uZClcbiAgICA7O1xuXG4gICAgKCogW2NyZWF0ZV0gY2hvcHMgb2ZmIGFueSBzdWJzZWNvbmQgcGFydCB3aGVuIFtzZWMgPSA2MF0gdG8gaGFuZGxlIGxlYXAgc2Vjb25kcy4gSW5cbiAgICAgICBwYXJ0aWN1bGFyIGl0J3MgdHJ5aW5nIHRvIGJlIGdlbmVyb3VzIGFib3V0IHJlYWRpbmcgaW4gdGltZXMgb24gdGhpbmdzIGxpa2UgZml4XG4gICAgICAgbWVzc2FnZXMgdGhhdCBtaWdodCBpbmNsdWRlIGFuIGV4dHJhIHVubGlrZWx5IHNlY29uZC5cblxuICAgICAgIE90aGVyIHdheXMgb2Ygd3JpdGluZyBhIHRpbWUsIGxpa2UgMTAwMG1zLCB3aGlsZSBtYXRoZW1hdGljYWxseSB2YWxpZCwgZG9uJ3QgbWF0Y2hcbiAgICAgICB3YXlzIHRoYXQgcGVvcGxlIGFjdHVhbGx5IHdyaXRlIHRpbWVzIGRvd24sIHNvIHdlIGRpZG4ndCBzZWUgdGhlIG5lZWQgdG8gc3VwcG9ydFxuICAgICAgIHRoZW0uIFRoYXQgaXMsIGEgY2xvY2sgbWlnaHQgbGVnaXRpbWF0ZWx5IHJlYWQgMjM6NTk6NjAgKG9yLCB3aXRoIDYwIHNlY29uZHMgYXRcbiAgICAgICB0aW1lcyBvZiBkYXkgb3RoZXIgdGhhbiAyMzo1OSwgZGVwZW5kaW5nIG9uIHRoZSB0aW1lIHpvbmUpLCBidXQgaXQgZG9lc24ndCBzZWVtXG4gICAgICAgcmVhc29uYWJsZSBmb3IgYSBjbG9jayB0byByZWFkIFwiMjM6NTk6NTkgYW5kIDEwMDBtc1wiLiAqKVxuICAgIGxldCBjcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSA9XG4gICAgICBsZXQgbXMsIHVzLCBucyA9XG4gICAgICAgIG1hdGNoIHNlYyB3aXRoXG4gICAgICAgIHwgU29tZSA2MCAtPiBTb21lIDAsIFNvbWUgMCwgU29tZSAwXG4gICAgICAgIHwgXyAtPiBtcywgdXMsIG5zXG4gICAgICBpblxuICAgICAgVC5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uY3JlYXRlID9ociA/bWluID9zZWMgP21zID91cyA/bnMgKCkpXG4gICAgOztcblxuICAgIGxldCB0b19wYXJ0cyB0ID0gU3Bhbi50b19wYXJ0cyAoVC50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0KVxuXG4gICAgbGV0IHRvX3N0cmluZ19nZW4gfmRyb3BfbXMgfmRyb3BfdXMgfnRyaW0gdCA9XG4gICAgICBsZXQgKCAvICkgPSBJbnQ2My4oIC8gKSBpblxuICAgICAgbGV0ICggISApID0gSW50NjMub2ZfaW50IGluXG4gICAgICBsZXQgKCBtb2QgKSA9IEludDYzLnJlbSBpblxuICAgICAgbGV0IGkgPSBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICBhc3NlcnQgKGlmIGRyb3BfbXMgdGhlbiBkcm9wX3VzIGVsc2UgdHJ1ZSk7XG4gICAgICBsZXQgZmxvYXRfc2VjID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCkgaW5cbiAgICAgIGxldCB1cyA9IEZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfZXhuIChmbG9hdF9zZWMgKi4gMWU2KSBpblxuICAgICAgbGV0IG1zLCB1cyA9IHVzIC8gITEwMDAsIHVzIG1vZCAhMTAwMCB8PiBpIGluXG4gICAgICBsZXQgc2VjLCBtcyA9IG1zIC8gITEwMDAsIG1zIG1vZCAhMTAwMCB8PiBpIGluXG4gICAgICBsZXQgbWluLCBzZWMgPSBzZWMgLyAhNjAsIHNlYyBtb2QgITYwIHw+IGkgaW5cbiAgICAgIGxldCBociwgbWluID0gbWluIC8gITYwLCBtaW4gbW9kICE2MCB8PiBpIGluXG4gICAgICBsZXQgaHIgPSBpIGhyIGluXG4gICAgICBsZXQgZG9udF9wcmludF91cyA9IGRyb3BfdXMgfHwgKHRyaW0gJiYgdXMgPSAwKSBpblxuICAgICAgbGV0IGRvbnRfcHJpbnRfbXMgPSBkcm9wX21zIHx8ICh0cmltICYmIG1zID0gMCAmJiBkb250X3ByaW50X3VzKSBpblxuICAgICAgbGV0IGRvbnRfcHJpbnRfcyA9IHRyaW0gJiYgc2VjID0gMCAmJiBkb250X3ByaW50X21zIGluXG4gICAgICBsZXQgbGVuID1cbiAgICAgICAgaWYgZG9udF9wcmludF9zXG4gICAgICAgIHRoZW4gNVxuICAgICAgICBlbHNlIGlmIGRvbnRfcHJpbnRfbXNcbiAgICAgICAgdGhlbiA4XG4gICAgICAgIGVsc2UgaWYgZG9udF9wcmludF91c1xuICAgICAgICB0aGVuIDEyXG4gICAgICAgIGVsc2UgMTVcbiAgICAgIGluXG4gICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6MCBocjtcbiAgICAgIEJ5dGVzLnNldCBidWYgMiAnOic7XG4gICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczozIG1pbjtcbiAgICAgIGlmIGRvbnRfcHJpbnRfc1xuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIEJ5dGVzLnNldCBidWYgNSAnOic7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjYgc2VjO1xuICAgICAgICBpZiBkb250X3ByaW50X21zXG4gICAgICAgIHRoZW4gKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA4ICcuJztcbiAgICAgICAgICB3cml0ZV8zX2RpZ2l0X2ludCBidWYgfnBvczo5IG1zO1xuICAgICAgICAgIGlmIGRvbnRfcHJpbnRfdXMgdGhlbiAoKSBlbHNlIHdyaXRlXzNfZGlnaXRfaW50IGJ1ZiB+cG9zOjEyIHVzKSk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nX3RyaW1tZWQgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6ZmFsc2UgfmRyb3BfdXM6ZmFsc2UgfnRyaW06dHJ1ZSB0XG4gICAgbGV0IHRvX3NlY19zdHJpbmcgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6dHJ1ZSB+ZHJvcF91czp0cnVlIH50cmltOmZhbHNlIHRcbiAgICBsZXQgdG9fbWlsbGlzZWNvbmRfc3RyaW5nIHQgPSB0b19zdHJpbmdfZ2VuIH5kcm9wX21zOmZhbHNlIH5kcm9wX3VzOnRydWUgfnRyaW06ZmFsc2UgdFxuXG4gICAgbGV0IHNtYWxsX2RpZmYgPVxuICAgICAgbGV0IGhvdXIgPSAzNjAwLiBpblxuICAgICAgZnVuIG9mZGF5MSBvZmRheTIgLT5cbiAgICAgICAgbGV0IG9mZGF5MSA9IFNwYW4udG9fc2VjIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MSkgaW5cbiAgICAgICAgbGV0IG9mZGF5MiA9IFNwYW4udG9fc2VjIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MikgaW5cbiAgICAgICAgbGV0IGRpZmYgPSBvZmRheTEgLS4gb2ZkYXkyIGluXG4gICAgICAgICgqICBkMSBpcyBpbiAoLWhvdXI7IGhvdXIpICopXG4gICAgICAgIGxldCBkMSA9IEZsb2F0Lm1vZF9mbG9hdCBkaWZmIGhvdXIgaW5cbiAgICAgICAgKCogIGQyIGlzIGluICgwO2hvdXIpICopXG4gICAgICAgIGxldCBkMiA9IEZsb2F0Lm1vZF9mbG9hdCAoZDEgKy4gaG91cikgaG91ciBpblxuICAgICAgICBsZXQgZCA9IGlmIEZsb2F0LiggPiApIGQyIChob3VyIC8uIDIuKSB0aGVuIGQyIC0uIGhvdXIgZWxzZSBkMiBpblxuICAgICAgICBTcGFuLm9mX3NlYyBkXG4gICAgOztcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHRvX3N0cmluZyB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczpmYWxzZSB+ZHJvcF91czpmYWxzZSB+dHJpbTpmYWxzZSB0XG5cbiAgICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5UaW1lLk9mZGF5XCJcbiAgICAgIGVuZClcblxuICAgIGxldCBjcmVhdGVfZnJvbV9wYXJzZWQgc3RyaW5nIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW4gPVxuICAgICAgbGV0IHN1YnNlYyA9XG4gICAgICAgIGlmIEludC5lcXVhbCBzdWJzZWNfbGVuIDBcbiAgICAgICAgdGhlbiAwLlxuICAgICAgICBlbHNlIEZsb2F0Lm9mX3N0cmluZyAoU3RyaW5nLnN1YiBzdHJpbmcgfnBvczpzdWJzZWNfcG9zIH5sZW46c3Vic2VjX2xlbilcbiAgICAgIGluXG4gICAgICBGbG9hdC5vZl9pbnQgKChociAqIDM2MDApICsgKG1pbiAqIDYwKSArIHNlYykgKy4gc3Vic2VjXG4gICAgICB8PiBTcGFuLm9mX3NlY1xuICAgICAgfD4gVC5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzID0gT2ZkYXlfaGVscGVycy5wYXJzZSBzIH5mOmNyZWF0ZV9mcm9tX3BhcnNlZFxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBzIC0+IG9mX3NleHBfZXJyb3IgKFwiT2ZkYXkudF9vZl9zZXhwOiBcIiBeIHMpIHNleHApXG4gICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIk9mZGF5LnRfb2Zfc2V4cFwiIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICAgIGxldCBzZXhwX29mX3Qgc3BhbiA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHNwYW4pXG5cbiAgICBsZXQgb2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciA9XG4gICAgICB0cnkgT2ZkYXlfaGVscGVycy5wYXJzZV9pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgfmY6Y3JlYXRlX2Zyb21fcGFyc2VkIHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICAgIFwiT2ZkYXkub2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQoJXMpOiAlc1wiXG4gICAgICAgICAgKFN0cmluZy5zdWJvIHN0ciA/cG9zID9sZW4pXG4gICAgICAgICAgKEV4bi50b19zdHJpbmcgZXhuKVxuICAgICAgICAgICgpXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxubGV0IGdlbl9pbmNsIGxvIGhpID1cbiAgU3Bhbi5nZW5faW5jbCAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgbG8pICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBoaSlcbiAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuOztcblxubGV0IGdlbl91bmlmb3JtX2luY2wgbG8gaGkgPVxuICBTcGFuLmdlbl91bmlmb3JtX2luY2wgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGxvKSAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgaGkpXG4gIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlbl9pbmNsIHN0YXJ0X29mX2RheSBzdGFydF9vZl9uZXh0X2RheVxuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyIH5mOnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5XG47O1xuXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcblxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGhhc2gtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdCBzZXJpYWxpemF0aW9uIHJhdGhlclxuICAgICAgIHRoYW4gdGltZSBzZXJpYWxpemF0aW9uLCBzbyB3aGVuIHJlYWRpbmcgaGFzaC1iYXNlZCBjb250YWluZXJzIGluIHdlIGFjY2VwdCBlaXRoZXJcbiAgICAgICBzZXJpYWxpemF0aW9uLiAqKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBGbG9hdC50X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICB8IGZsb2F0IC0+IG9mX2Zsb2F0IGZsb2F0XG4gICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgQyA9IHN0cnVjdFxuICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBULmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmUgPSBULmNvbXBhcmF0b3IuY29tcGFyZVxuXG4gICgqIEluIDEwOC4wNmEgYW5kIGVhcmxpZXIsIG9mZGF5cyBpbiBzZXhwcyBvZiBNYXBzIGFuZCBTZXRzIHdlcmUgcmF3IGZsb2F0cy4gIEZyb21cbiAgICAgMTA4LjA3IHRocm91Z2ggMTA5LjEzLCB0aGUgb3V0cHV0IGZvcm1hdCByZW1haW5lZCByYXcgYXMgYmVmb3JlLCBidXQgYm90aCB0aGUgcmF3IGFuZFxuICAgICBwcmV0dHkgZm9ybWF0IHdlcmUgYWNjZXB0ZWQgYXMgaW5wdXQuICBGcm9tIDEwOS4xNCBvbiwgdGhlIG91dHB1dCBmb3JtYXQgd2FzIGNoYW5nZWRcbiAgICAgZnJvbSByYXcgdG8gcHJldHR5LCB3aGlsZSBjb250aW51aW5nIHRvIGFjY2VwdCBib3RoIGZvcm1hdHMuICBPbmNlIHdlIGJlbGlldmUgbW9zdFxuICAgICBwcm9ncmFtcyBhcmUgYmV5b25kIDEwOS4xNCwgd2Ugd2lsbCBzd2l0Y2ggdGhlIGlucHV0IGZvcm1hdCB0byBubyBsb25nZXIgYWNjZXB0XG4gICAgIHJhdy4gKilcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gVC5vZl9mbG9hdCAoRmxvYXQudF9vZl9zZXhwIHNleHApKSB3aXRoXG4gICAgfCBTb21lIHQgLT4gdFxuICAgIHwgTm9uZSAtPiB0X29mX3NleHAgc2V4cFxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChDKVxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlIChDKVxuXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbmxldCB0b19taWxsaXNlY19zdHJpbmcgPSB0b19taWxsaXNlY29uZF9zdHJpbmdcbiIsIigqIFNlZSB0aW1lX2Zsb2F0Lm1sIGZvciB0aGUgcHJpbWFyeSBpbnN0YW50aWF0aW9uIG9mIHRoaXMgZnVuY3RvciB0aGF0IGlzIHZpc2libGUgb3V0c2lkZVxuICAgb2YgQ29yZSBhcyBUaW1lIChzZWUgY29yZS5tbCkuICopXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIFRpbWVfaW50ZlxuXG5tb2R1bGUgTWFrZSAoVGltZTAgOiBUaW1lMF9pbnRmLlMpID0gc3RydWN0XG4gIG1vZHVsZSBUaW1lMCA9IFRpbWUwXG4gIGluY2x1ZGUgVGltZTBcblxuICBsZXQgZXBvY2ggPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIFNwYW4uemVyb1xuICBsZXQgaXNfZWFybGllciB0MSB+dGhhbjp0MiA9IHQxIDwuIHQyXG4gIGxldCBpc19sYXRlciB0MSB+dGhhbjp0MiA9IHQxID4uIHQyXG5cbiAgbW9kdWxlIFpvbmUgOiBzaWdcbiAgICBpbmNsdWRlIFRpbWVfaW50Zi5ab25lIHdpdGggbW9kdWxlIFRpbWUgOj0gVGltZTBcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBab25lXG5cbiAgICBsZXQgb2Zfc3Bhbl9pbl9zZWNvbmRzIHNwYW5faW5fc2Vjb25kcyA9XG4gICAgICAoKiBOQi4gbm8gYWN0dWFsIHJvdW5kaW5nIG9yIGV4bnMgY2FuIG9jY3VyIGhlcmUgKilcbiAgICAgIFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4gc3Bhbl9pbl9zZWNvbmRzXG4gICAgICB8PiBUaW1lMC5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICA7O1xuXG4gICAgbGV0IG9mX3RpbWVfaW5fc2Vjb25kcyB0aW1lX2luX3NlY29uZHMgPVxuICAgICAgVGltZV9pbl9zZWNvbmRzLnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZV9pbl9zZWNvbmRzXG4gICAgICAoKiBOQi4gbm8gYWN0dWFsIHJvdW5kaW5nIG9yIGV4bnMgY2FuIG9jY3VyIGhlcmUgKilcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWUwLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZTAub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fdGltZV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHRpbWUgPVxuICAgICAgVGltZTAudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lXG4gICAgICB8PiBUaW1lMC5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b19kYXRlX2FuZF9vZmRheV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHJlbGF0aXZlID1cbiAgICAgIFRpbWUwLkRhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHJlbGF0aXZlXG4gICAgICB8PiBUaW1lMC5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5EYXRlX2FuZF9vZmRheS5vZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXggdCB0aW1lID0gaW5kZXggdCAodG9fdGltZV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHRpbWUpXG5cbiAgICBsZXQgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0ICh0b19kYXRlX2FuZF9vZmRheV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHJlbGF0aXZlKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3RpbWVfaW5fc2Vjb25kcyAoaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3RpbWVfaW5fc2Vjb25kcyAoaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBhYmJyZXZpYXRpb24gdCB0aW1lID1cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgaW5kZXhfYWJicmV2aWF0aW9uX2V4biB0IChpbmRleCB0IHRpbWUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPVxuICAgICAgbWF0Y2ggaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCB3aXRoXG4gICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBTb21lXG4gICAgICAgICAgKCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXhcbiAgICAgICAgICAsIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4IClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoSW5kZXgubmV4dCBpbmRleClcbiAgICBsZXQgcHJldl9jbG9ja19zaGlmdCB0IH5hdF9vcl9iZWZvcmU6dGltZSA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuICAgIGxldCBuZXh0X2Nsb2NrX3NoaWZ0IHQgfnN0cmljdGx5X2FmdGVyOnRpbWUgPSBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcblxuICAgIGxldCBkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHQgdGltZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleCB0IHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgVGltZTAuRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcblxuICAgIGxldCBhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4X29mX2RhdGVfYW5kX29mZGF5XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBUaW1lMC5EYXRlX2FuZF9vZmRheS50b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGFic19kaWZmIHQxIHQyID0gU3Bhbi5hYnMgKGRpZmYgdDEgdDIpXG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheSA9XG4gICAgbGV0IHJlbGF0aXZlID0gRGF0ZV9hbmRfb2ZkYXkub2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IGluXG4gICAgWm9uZS5hYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHpvbmUgcmVsYXRpdmVcbiAgOztcblxuICBsZXQgb2ZfZGF0ZV9vZmRheV9wcmVjaXNlIGRhdGUgb2ZkYXkgfnpvbmUgPVxuICAgICgqIFdlIGFzc3VtZSB0aGF0IHRoZXJlIHdpbGwgYmUgb25seSBvbmUgem9uZSBzaGlmdCB3aXRoaW4gYSBnaXZlbiBsb2NhbCBkYXkuICAqKVxuICAgIGxldCBzdGFydF9vZl9kYXkgPSBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgT2ZkYXkuc3RhcnRfb2ZfZGF5IGluXG4gICAgbGV0IHByb3Bvc2VkX3RpbWUgPSBhZGQgc3RhcnRfb2ZfZGF5IChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSkgaW5cbiAgICBtYXRjaCBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6c3RhcnRfb2ZfZGF5IHdpdGhcbiAgICB8IE5vbmUgLT4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgIHwgU29tZSAoc2hpZnRfc3RhcnQsIHNoaWZ0X2Ftb3VudCkgLT5cbiAgICAgIGxldCBzaGlmdF9iYWNrd2FyZHMgPSBTcGFuLihzaGlmdF9hbW91bnQgPCB6ZXJvKSBpblxuICAgICAgKCogc3RhcnQgYW5kIGVuZCBvZiB0aGUgXCJwcm9ibGVtYXRpYyByZWdpb25cIiAqKVxuICAgICAgbGV0IHMsIGUgPVxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50LCBzaGlmdF9zdGFydFxuICAgICAgICBlbHNlIHNoaWZ0X3N0YXJ0LCBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50XG4gICAgICBpblxuICAgICAgaWYgcHJvcG9zZWRfdGltZSA8IHNcbiAgICAgIHRoZW4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgICAgZWxzZSBpZiBzIDw9IHByb3Bvc2VkX3RpbWUgJiYgcHJvcG9zZWRfdGltZSA8IGVcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYFR3aWNlIChwcm9wb3NlZF90aW1lLCBzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gICAgICAgIGVsc2UgYE5ldmVyIHNoaWZ0X3N0YXJ0XG4gICAgICBlbHNlIGBPbmNlIChzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gIDs7XG5cbiAgbW9kdWxlIERhdGVfY2FjaGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBtdXRhYmxlIHpvbmUgOiBab25lLnRcbiAgICAgIDsgbXV0YWJsZSBjYWNoZV9zdGFydF9pbmNsIDogVGltZTAudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3VudGlsX2V4Y2wgOiBUaW1lMC50XG4gICAgICA7IG11dGFibGUgZWZmZWN0aXZlX2RheV9zdGFydCA6IFRpbWUwLnRcbiAgICAgIDsgbXV0YWJsZSBkYXRlIDogRGF0ZTAudFxuICAgICAgfVxuICBlbmRcblxuICBsZXQgZGF0ZV9jYWNoZSA6IERhdGVfY2FjaGUudCA9XG4gICAgeyB6b25lID0gWm9uZS51dGNcbiAgICA7IGNhY2hlX3N0YXJ0X2luY2wgPSBlcG9jaFxuICAgIDsgY2FjaGVfdW50aWxfZXhjbCA9IGVwb2NoXG4gICAgOyBlZmZlY3RpdmVfZGF5X3N0YXJ0ID0gZXBvY2hcbiAgICA7IGRhdGUgPSBEYXRlMC51bml4X2Vwb2NoXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXNldF9kYXRlX2NhY2hlICgpID1cbiAgICBkYXRlX2NhY2hlLnpvbmUgPC0gWm9uZS51dGM7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5kYXRlIDwtIERhdGUwLnVuaXhfZXBvY2hcbiAgOztcblxuICBsZXQgaXNfaW5fY2FjaGUgdGltZSB+em9uZSA9XG4gICAgcGh5c19lcXVhbCB6b25lIGRhdGVfY2FjaGUuem9uZVxuICAgICYmIFRpbWUwLiggPj0gKSB0aW1lIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbFxuICAgICYmIFRpbWUwLiggPCApIHRpbWUgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsXG4gIDs7XG5cbiAgbGV0IHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIG1hdGNoIGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiAoKVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIGxldCBpbmRleCA9IFpvbmUuaW5kZXggem9uZSB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbWm9uZS5pbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IFpvbmUuaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB6b25lIGluZGV4IGluXG4gICAgICBsZXQgcmVsID0gRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGVfYW5kX29mZGF5LnRvX2RhdGUgcmVsIGluXG4gICAgICBsZXQgc3BhbiA9IERhdGVfYW5kX29mZGF5LnRvX29mZGF5IHJlbCB8PiBPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPVxuICAgICAgICBUaW1lMC5zdWIgKERhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbCB+b2Zmc2V0X2Zyb21fdXRjKSBzcGFuXG4gICAgICBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfdW50aWwgPSBUaW1lMC5hZGQgZWZmZWN0aXZlX2RheV9zdGFydCBTcGFuLmRheSBpblxuICAgICAgbGV0IGNhY2hlX3N0YXJ0X2luY2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfc3RhcnRcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgICAgIHw+IFRpbWUwLm1heCAoWm9uZS5pbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgbGV0IGNhY2hlX3VudGlsX2V4Y2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfdW50aWxcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV91bnRpbFxuICAgICAgICAgIHw+IFRpbWUwLm1pbiAoWm9uZS5pbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgZGF0ZV9jYWNoZS56b25lIDwtIHpvbmU7XG4gICAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gY2FjaGVfc3RhcnRfaW5jbDtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbCA8LSBjYWNoZV91bnRpbF9leGNsO1xuICAgICAgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IDwtIGVmZmVjdGl2ZV9kYXlfc3RhcnQ7XG4gICAgICBkYXRlX2NhY2hlLmRhdGUgPC0gZGF0ZVxuICA7O1xuXG4gIGxldCB0b19kYXRlIHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgZGF0ZV9jYWNoZS5kYXRlXG4gIDs7XG5cbiAgbGV0IGVuZF9vZl9kYXkgPSBPZmRheS5wcmV2IE9mZGF5LnN0YXJ0X29mX25leHRfZGF5IHw+IE9wdGlvbi52YWx1ZV9leG4gfmhlcmU6WyVoZXJlXVxuXG4gIGxldCB0b19vZmRheSB0aW1lIH56b25lID1cbiAgICBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lO1xuICAgIGxldCBvZl9kYXkgPVxuICAgICAgVGltZTAuZGlmZiB0aW1lIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gICAgaW5cbiAgICBpZiBPZmRheS5lcXVhbCBvZl9kYXkgT2ZkYXkuc3RhcnRfb2ZfbmV4dF9kYXkgdGhlbiBlbmRfb2ZfZGF5IGVsc2Ugb2ZfZGF5XG4gIDs7XG5cbiAgbGV0IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSA9IHRvX2RhdGUgdGltZSB+em9uZSwgdG9fb2ZkYXkgdGltZSB+em9uZVxuXG4gICgqIFRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGFsZ29yaXRobSAoaW50ZXJmYWNlLCBldmVuKSBkZXBlbmRzIG9uIHRoZSBmYWN0IHRoYXRcbiAgICAgdGltZXpvbmUgc2hpZnRzIGFyZW4ndCB0b28gY2xvc2UgdG9nZXRoZXIgKGFzIGluLCBpdCBjYW4ndCBzaW11bHRhbmVvdXNseSBiZSB0aGVcbiAgICAgY2FzZSB0aGF0IGEgdGltZXpvbmUgc2hpZnQgb2YgWCBob3VycyBvY2N1cnJlZCBsZXNzIHRoYW4gWCBob3VycyBhZ28sICphbmQqXG4gICAgIGEgdGltZXpvbmUgc2hpZnQgb2YgWSBob3VycyB3aWxsIG9jY3VyIGluIGxlc3MgdGhhbiBZIGhvdXJzJyB0aW1lKSAqKVxuICBsZXQgdG9fZGF0ZV9vZmRheV9wcmVjaXNlIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9hZnRlciA9IFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjp0aW1lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCA9IFpvbmUucHJldl9jbG9ja19zaGlmdCB6b25lIH5hdF9vcl9iZWZvcmU6dGltZSBpblxuICAgIGxldCBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnQgPVxuICAgICAgKCogVXNpbmcgW2RhdGVdIGFuZCByYWlzaW5nIG9uIFtOb25lXSBoZXJlIGlzIE9LIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgY2xvY2tcbiAgICAgICAgIHNoaWZ0cyBjYW4ndCBjcm9zcyBkYXRlIGJvdW5kYXJpZXMuIFRoaXMgaXMgdHJ1ZSBpbiBhbGwgY2FzZXMgSSd2ZSBldmVyIGhlYXJkXG4gICAgICAgICBvZiAoYW5kIFtvZl9kYXRlX29mZGF5X3ByZWNpc2VdIHdvdWxkIG5lZWQgcmV2aXNpdGluZyBpZiBpdCB0dXJuZWQgb3V0IHRvIGJlXG4gICAgICAgICBmYWxzZSkgKilcbiAgICAgIG1hdGNoIE9mZGF5LnN1YiBvZmRheSBhbW91bnQgd2l0aFxuICAgICAgfCBTb21lIG9mZGF5IC0+IGBBbHNvX3NraXBwZWQgKGRhdGUsIG9mZGF5KVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiVGltZS50b19kYXRlX29mZGF5X3ByZWNpc2VcIlxuICAgICAgICAgICAgICB+c3Bhbl9zaW5jZV9lcG9jaDoodG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lIDogU3Bhbi50KVxuICAgICAgICAgICAgICAoem9uZSA6IFpvbmUudCldXG4gICAgaW5cbiAgICBsZXQgYW1iaWd1aXR5ID1cbiAgICAgICgqIEVkZ2UgY2FzZXM6IHRoZSBpbnN0YW50IG9mIHRyYW5zaXRpb24gYmVsb25ncyB0byB0aGUgbmV3IHpvbmUgcmVnaW1lLiBTbyBpZiB0aGVcbiAgICAgICAgIGNsb2NrIG1vdmVkIGJ5IGFuIGhvdXIgZXhhY3RseSBvbmUgaG91ciBhZ28sIHRoZXJlJ3Mgbm8gYW1iaWd1aXR5LCBiZWNhdXNlIHRoZVxuICAgICAgICAgaG91ci1hZ28gdGltZSBiZWxvbmdzIHRvIHRoZSBzYW1lIHJlZ2ltZSBhcyB5b3UsIGFuZCBjb252ZXJzZWx5LCBpZiB0aGUgY2xvY2tcbiAgICAgICAgIHdpbGwgbW92ZSBieSBhbiBob3VyIGluIGFuIGhvdXJzJyB0aW1lLCB0aGVyZSAqaXMqIGFtYmlndWl0eS4gSGVuY2UgWz4uXSBmb3JcbiAgICAgICAgIHRoZSBmaXJzdCBjYXNlIGFuZCBbPD0uXSBmb3IgdGhlIHNlY29uZC4gKilcbiAgICAgIG1hdGNoIGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCwgY2xvY2tfc2hpZnRfYWZ0ZXIgd2l0aFxuICAgICAgfCBTb21lIChzdGFydCwgYW1vdW50KSwgXyB3aGVuIGFkZCBzdGFydCAoU3Bhbi5hYnMgYW1vdW50KSA+LiB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgcmVjZW50bHkgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgZm9yd2FyZCByZWNlbnRseTogd2Ugc2tpcHBlZCBhIHRpbWUgKilcbiAgICAgICAgICBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBiYWNrIHJlY2VudGx5OiB0aGlzIGRhdGUvb2ZkYXkgYWxyZWFkeSBoYXBwZW5lZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChzdWIgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8sIFNvbWUgKHN0YXJ0LCBhbW91bnQpIHdoZW4gc3ViIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpIDw9LiB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIGlzIGFib3V0IHRvIHNoaWZ0ICopXG4gICAgICAgIGlmIFNwYW4uKGFtb3VudCA+IHplcm8pXG4gICAgICAgIHRoZW4gKCogY2xvY2sgYWJvdXQgdG8gc2hpZnQgZm9yd2FyZDogbm8gZWZmZWN0ICopXG4gICAgICAgICAgYE9ubHlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgYWJvdXQgdG8gc2hpZnQgYmFjazogdGhpcyBkYXRlL29mZGF5IHdpbGwgYmUgcmVwZWF0ZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFNwYW4uKGFtb3VudCA8IHplcm8pKTtcbiAgICAgICAgICBgQWxzb19hdCAoYWRkIHRpbWUgKFNwYW4uYWJzIGFtb3VudCkpKVxuICAgICAgfCBfIC0+IGBPbmx5XG4gICAgaW5cbiAgICBkYXRlLCBvZmRheSwgYW1iaWd1aXR5XG4gIDs7XG5cbiAgbGV0IGNvbnZlcnQgfmZyb21fdHogfnRvX3R6IGRhdGUgb2ZkYXkgPVxuICAgIGxldCBzdGFydF90aW1lID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpmcm9tX3R6IGRhdGUgb2ZkYXkgaW5cbiAgICB0b19kYXRlX29mZGF5IH56b25lOnRvX3R6IHN0YXJ0X3RpbWVcbiAgOztcblxuICBsZXQgdXRjX29mZnNldCB0IH56b25lID1cbiAgICBsZXQgdXRjX2Vwb2NoID0gWm9uZS5kYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHpvbmUgdCBpblxuICAgIFNwYW4uKCAtIClcbiAgICAgIChEYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB1dGNfZXBvY2gpXG4gICAgICAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KVxuICA7O1xuXG4gIGxldCBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgPVxuICAgIGxldCB1dGNfb2Zmc2V0ID0gdXRjX29mZnNldCB0aW1lIH56b25lIGluXG4gICAgbGV0IGlzX3V0YyA9IFNwYW4uKCA9ICkgdXRjX29mZnNldCBTcGFuLnplcm8gaW5cbiAgICBpZiBpc191dGNcbiAgICB0aGVuIFwiWlwiXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIChpZiBTcGFuLiggPCApIHV0Y19vZmZzZXQgU3Bhbi56ZXJvIHRoZW4gXCItXCIgZWxzZSBcIitcIilcbiAgICAgICAgOyBPZmRheS50b19zdHJpbmdfdHJpbW1lZFxuICAgICAgICAgICAgKE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi5hYnMgdXRjX29mZnNldCkpXG4gICAgICAgIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic19wYXJ0cyB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICA7IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgT2ZkYXkudG9fc3RyaW5nIG9mZGF5OyBvZmZzZXRfc3RyaW5nIF1cbiAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnNfdHJpbW1lZCB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgIFN0cmluZy5jb25jYXRcbiAgICAgIH5zZXA6XCIgXCJcbiAgICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGU7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkIG9mZGF5IF4gb2Zmc2V0X3N0cmluZyBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnMgdGltZSB+em9uZSA9IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAodG9fc3RyaW5nX2Fic19wYXJ0cyB+em9uZSB0aW1lKVxuICBsZXQgdG9fc3RyaW5nX3V0YyB0ID0gdG9fc3RyaW5nX2FicyB0IH56b25lOlpvbmUudXRjXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdfdXRjXG5cbiAgbGV0IHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIHRpbWUgfnpvbmUgPVxuICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlRcIiAodG9fc3RyaW5nX2Fic19wYXJ0cyB+em9uZSB0aW1lKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfdHJpbW1lZCB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgc2VjID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5LnRvX3N0cmluZ190cmltbWVkIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc2VjX3N0cmluZyBzZWNcbiAgOztcblxuICBsZXQgdG9fc2VjX3N0cmluZ193aXRoX3pvbmUgdCB+em9uZSA9IHRvX3NlY19zdHJpbmcgdCB+em9uZSBeIG9mZnNldF9zdHJpbmcgdCB+em9uZVxuXG4gIGxldCB0b19maWxlbmFtZV9zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICBeIFwiX1wiXG4gICAgXiBTdHJpbmcudHIgfnRhcmdldDonOicgfnJlcGxhY2VtZW50OictJyAoT2ZkYXkudG9fc3RyaW5nIG9mZGF5KVxuICA7O1xuXG4gIGxldCBvZl9maWxlbmFtZV9zdHJpbmcgcyB+em9uZSA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonXycgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2UgaW4gZmlsZW5hbWUgc3RyaW5nXCJcbiAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gU3RyaW5nLnRyIH50YXJnZXQ6Jy0nIH5yZXBsYWNlbWVudDonOicgb2ZkYXkgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSB+em9uZVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBpbnZhbGlkX2FyZ2YgXCJUaW1lLm9mX2ZpbGVuYW1lX3N0cmluZyAoJXMpOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICA7O1xuXG4gIGxldCBvZl9sb2NhbGl6ZWRfc3RyaW5nIH56b25lIHN0ciA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzdHIgfm9uOicgJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJubyBzcGFjZSBpbiBkYXRlX29mZGF5IHN0cmluZzogJXNcIiBzdHIpXG4gICAgICB8IFNvbWUgKGRhdGUsIHRpbWUpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIHRpbWUgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgd2l0aFxuICAgIHwgZSAtPiBFeG4ucmVyYWlzZSBlIFwiVGltZS5vZl9sb2NhbGl6ZWRfc3RyaW5nXCJcbiAgOztcblxuICBsZXQgb2NjdXJyZW5jZSBiZWZvcmVfb3JfYWZ0ZXIgdCB+b2ZkYXkgfnpvbmUgPVxuICAgIGxldCBmaXJzdF9ndWVzc19kYXRlID0gdG9fZGF0ZSB0IH56b25lIGluXG4gICAgbGV0IGZpcnN0X2d1ZXNzID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBmaXJzdF9ndWVzc19kYXRlIG9mZGF5IGluXG4gICAgbGV0IGNtcCwgaW5jcmVtZW50ID1cbiAgICAgIG1hdGNoIGJlZm9yZV9vcl9hZnRlciB3aXRoXG4gICAgICB8IGBMYXN0X2JlZm9yZV9vcl9hdCAtPiAoIDw9ICksIC0xXG4gICAgICB8IGBGaXJzdF9hZnRlcl9vcl9hdCAtPiAoID49ICksIDFcbiAgICBpblxuICAgIGlmIGNtcCBmaXJzdF9ndWVzcyB0XG4gICAgdGhlbiBmaXJzdF9ndWVzc1xuICAgIGVsc2Ugb2ZfZGF0ZV9vZmRheSB+em9uZSAoRGF0ZTAuYWRkX2RheXMgZmlyc3RfZ3Vlc3NfZGF0ZSBpbmNyZW1lbnQpIG9mZGF5XG4gIDs7XG5cbiAgbGV0IGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgb2Zmc2V0ID1cbiAgICBsZXQgb2Zmc2V0X2xlbmd0aCA9IFN0cmluZy5sZW5ndGggb2Zmc2V0IGluXG4gICAgaWYgSW50LiggPD0gKSBvZmZzZXRfbGVuZ3RoIDJcbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bMF1cbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bb2Zmc2V0X2xlbmd0aCAtIDFdXG4gICAgdGhlbiBvZmZzZXQgXiBcIjowMFwiXG4gICAgZWxzZSBpZiBDaGFyLiggPSApIG9mZnNldC5bMV0gJzonIHx8IENoYXIuKCA9ICkgb2Zmc2V0LlsyXSAnOidcbiAgICB0aGVuIG9mZnNldFxuICAgIGVsc2UgaWYgSW50LiggPCApIG9mZnNldF9sZW5ndGggMyB8fCBJbnQuKCA+ICkgb2Zmc2V0X2xlbmd0aCA0XG4gICAgdGhlbiBmYWlsd2l0aGYgXCJpbnZhbGlkIG9mZnNldCAlc1wiIG9mZnNldCAoKVxuICAgIGVsc2VcbiAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgWyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IDAgKG9mZnNldF9sZW5ndGggLSAyKVxuICAgICAgICA7IFwiOlwiXG4gICAgICAgIDsgU3RyaW5nLnNsaWNlIG9mZnNldCAob2Zmc2V0X2xlbmd0aCAtIDIpIG9mZnNldF9sZW5ndGhcbiAgICAgICAgXVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBUaW1lX29mX3N0cmluZyBvZiBzdHJpbmcgKiBFeG4udCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGxldCBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBkYXRlLCBvZmRheSwgdHogPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcyB+b246JyAnIHdpdGhcbiAgICAgICAgfCBbIGRheTsgbW9udGg7IHllYXI7IG9mZGF5IF0gLT5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IFsgZGF5OyBcIiBcIjsgbW9udGg7IFwiIFwiOyB5ZWFyIF0sIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBkYXRlOyBvZmRheTsgdHogXSAtPiBkYXRlLCBvZmRheSwgU29tZSB0elxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXkgXSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgcyBdIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonVCcgcyB3aXRoXG4gICAgICAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlcyBvciBUIGZvdW5kXCIpXG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcInRvbyBtYW55IHNwYWNlc1wiXG4gICAgICBpblxuICAgICAgbGV0IG9mZGF5X3RvX3NlYyBvZCA9IFNwYW4udG9fc2VjIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZCkgaW5cbiAgICAgIGxldCBvZmRheSwgdXRjX29mZnNldCA9XG4gICAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgICAgfCBTb21lIF8gLT4gb2ZkYXksIE5vbmVcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgQ2hhci4oID0gKSBvZmRheS5bU3RyaW5nLmxlbmd0aCBvZmRheSAtIDFdICdaJ1xuICAgICAgICAgIHRoZW4gU3RyaW5nLnN1YiBvZmRheSB+cG9zOjAgfmxlbjooU3RyaW5nLmxlbmd0aCBvZmRheSAtIDEpLCBTb21lIDAuXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246JysnIG9mZGF5IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgbCwgU29tZSAob2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246Jy0nIG9mZGF5IHdpdGhcbiAgICAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgICAgbCwgU29tZSAoLTEuICouIG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBvZmRheSwgTm9uZSkpXG4gICAgICBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICB8IFNvbWUgdHogLT4gb2ZfZGF0ZV9vZmRheSB+em9uZTooZmluZF96b25lIHR6KSBkYXRlIG9mZGF5XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIHV0Y19vZmZzZXQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIGxldCB6b25lID0gZGVmYXVsdF96b25lICgpIGluXG4gICAgICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgICAgICAgfCBTb21lIHV0Y19vZmZzZXQgLT5cbiAgICAgICAgICAgbGV0IHV0Y190ID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpab25lLnV0YyBkYXRlIG9mZGF5IGluXG4gICAgICAgICAgIHN1YiB1dGNfdCAoU3Bhbi5vZl9zZWMgdXRjX29mZnNldCkpXG4gICAgd2l0aFxuICAgIHwgZSAtPiByYWlzZSAoVGltZV9vZl9zdHJpbmcgKHMsIGUpKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0IHMgPVxuICAgIGxldCBkZWZhdWx0X3pvbmUgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcInRpbWUgaGFzIG5vIHRpbWUgem9uZSBvciBVVEMgb2Zmc2V0XCIgc10gaW5cbiAgICBsZXQgZmluZF96b25lIHpvbmVfbmFtZSA9XG4gICAgICBmYWlsd2l0aGYgXCJ1bmFibGUgdG8gbG9va3VwIFpvbmUgJXMuICBUcnkgdXNpbmcgQ29yZS5UaW1lLm9mX3N0cmluZ1wiIHpvbmVfbmFtZSAoKVxuICAgIGluXG4gICAgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgc1xuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICBTcGFuLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAgIH5mX2ludmVyc2U6dG9fc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIFNwYW4ucXVpY2tjaGVja19vYnNlcnZlciB+Zjp0b19zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgU3Bhbi5xdWlja2NoZWNrX2dlbmVyYXRvciB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGdlbl9pbmNsIGxvIGhpID1cbiAgICBTcGFuLmdlbl9pbmNsICh0b19zcGFuX3NpbmNlX2Vwb2NoIGxvKSAodG9fc3Bhbl9zaW5jZV9lcG9jaCBoaSlcbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBnZW5fdW5pZm9ybV9pbmNsIGxvIGhpID1cbiAgICBTcGFuLmdlbl91bmlmb3JtX2luY2wgKHRvX3NwYW5fc2luY2VfZXBvY2ggbG8pICh0b19zcGFuX3NpbmNlX2Vwb2NoIGhpKVxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBTcGFuID0gU3Bhbl9mbG9hdFxubW9kdWxlIE9mZGF5ID0gT2ZkYXlfZmxvYXRcblxubW9kdWxlIEFic29sdXRlID0gc3RydWN0XG4gIHR5cGUgdW5kZXJseWluZyA9IEZsb2F0LnRcblxuICBpbmNsdWRlIChcbiAgICBGbG9hdCA6XG4gICAgc2lnXG4gICAgICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHR5cGVyZXBdXG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2NvbW1vbiB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRmxvYXQuT1xuICAgICAgZW5kXG4gICAgZW5kKVxuXG4gICgqIGR1ZSB0byBwcmVjaXNpb24gbGltaXRhdGlvbnMgaW4gZmxvYXQgd2UgY2FuJ3QgZXhwZWN0IGJldHRlciB0aGFuIG1pY3Jvc2Vjb25kXG4gICAgIHByZWNpc2lvbiAqKVxuICBpbmNsdWRlIEZsb2F0LlJvYnVzdF9jb21wYXJlLk1ha2UgKHN0cnVjdFxuICAgICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTZcbiAgICBlbmQpXG5cbiAgbGV0IGRpZmYgdDEgdDIgPSBTcGFuLm9mX3NlYyAodDEgLSB0MilcbiAgbGV0IGFkZCB0IHNwYW4gPSB0ICsuIFNwYW4udG9fc2VjIHNwYW5cbiAgbGV0IHN1YiB0IHNwYW4gPSB0IC0uIFNwYW4udG9fc2VjIHNwYW5cbiAgbGV0IHByZXYgdCA9IEZsb2F0Lm9uZV91bHAgYERvd24gdFxuICBsZXQgbmV4dCB0ID0gRmxvYXQub25lX3VscCBgVXAgdFxuICBsZXQgdG9fc3Bhbl9zaW5jZV9lcG9jaCA9IFNwYW4ub2Zfc2VjXG4gIGxldCBvZl9zcGFuX3NpbmNlX2Vwb2NoID0gU3Bhbi50b19zZWNcbmVuZFxuXG5pbmNsdWRlIEFic29sdXRlXG5cbm1vZHVsZSBEYXRlX2FuZF9vZmRheSA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdFxuXG4gIGxldCBvZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCBzcGFuID0gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgdG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdCA9IFNwYW4ub2Zfc2VjIHRcblxuICBsZXQgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5ID1cbiAgICBsZXQgZGF5cyA9XG4gICAgICBGbG9hdC5vZl9pbnQgKERhdGUwLkRheXMuZGlmZiAoRGF0ZTAuRGF5cy5vZl9kYXRlIGRhdGUpIERhdGUwLkRheXMudW5peF9lcG9jaClcbiAgICBpblxuICAgIChkYXlzICouIDg2NDAwLikgKy4gU3Bhbi50b19zZWMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KVxuICA7O1xuXG4gIGxldCB0b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjID0gc3ViIHJlbGF0aXZlIG9mZnNldF9mcm9tX3V0Y1xuICBsZXQgb2ZfYWJzb2x1dGUgYWJzb2x1dGUgfm9mZnNldF9mcm9tX3V0YyA9IGFkZCBhYnNvbHV0ZSBvZmZzZXRfZnJvbV91dGNcblxuICAoKiBZZWFycyBvdXQgb2YgcmFuZ2UgZm9yIFtEYXRlLmNyZWF0ZV9leG5dLiAqKVxuICBsZXRbQGNvbGRdIGFzc2VydF9pbl9ib3VuZHMgfnNlY19zaW5jZV9lcG9jaCA9XG4gICAgKCogJCBUWj1VVEMgZGF0ZSAtLWRhdGU9QC02MjE2NzIxOTIwMFxuICAgICAgIFNhdCBKYW4gIDEgMDA6MDA6MDAgVVRDIDAwMDAgKilcbiAgICBsZXQgZ210aW1lX2xvd2VyX2JvdW5kID0gLTYyXzE2N18yMTlfMjAwLiBpblxuICAgICgqICQgVFo9VVRDIGRhdGUgLS1kYXRlPUAyNTM0MDIzMDA3OTlcbiAgICAgICBGcmkgRGVjIDMxIDIzOjU5OjU5IFVUQyA5OTk5ICopXG4gICAgbGV0IGdtdGltZV91cHBlcl9ib3VuZCA9IDI1M180MDJfMzAwXzc5OS4gaW5cbiAgICBpZiBGbG9hdC4oID49ICkgc2VjX3NpbmNlX2Vwb2NoIChnbXRpbWVfdXBwZXJfYm91bmQgKy4gMS4pXG4gICAgfHwgRmxvYXQuKCA8ICkgc2VjX3NpbmNlX2Vwb2NoIGdtdGltZV9sb3dlcl9ib3VuZFxuICAgIHRoZW4gZmFpbHdpdGhmIFwiVGltZS5nbXRpbWU6IG91dCBvZiByYW5nZSAoJWYpXCIgc2VjX3NpbmNlX2Vwb2NoICgpXG4gIDs7XG5cbiAgbGV0IHNlY19wZXJfZGF5ID0gSW50NjMub2ZfaW50IDg2XzQwMFxuXG4gIGxldCB0b19kYXlzX2Zyb21fZXBvY2ggdCA9XG4gICAgYXNzZXJ0X2luX2JvdW5kcyB+c2VjX3NpbmNlX2Vwb2NoOnQ7XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94ID0gSW50NjMub2ZfZmxvYXQgdCAvIHNlY19wZXJfZGF5IGluXG4gICAgKCogd2hlbiBbdF0gaXMgbmVnYXRpdmUgdGhlIGludGVnZXIgZGl2aXNpb24gdGhhdCBjYWxjdWxhdGVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICAgICB3aWxsIGxlYXZlIHVzIG9uZSBkYXkgc2hvcnQgYmVjYXVzZSBpdCB0cnVuY2F0ZXMgKGUuZy4gLTEwMCAvIDg2XzQwMCA9IDAgYW5kIHdlXG4gICAgICAgd2FudCAtMSkgLS0gYWRqdXN0IGZvciB0aGF0IGhlcmUuICopXG4gICAgaWYgRmxvYXQuKCA8ICkgdCAoSW50NjMudG9fZmxvYXQgKGRheXNfZnJvbV9lcG9jaF9hcHByb3ggKiBzZWNfcGVyX2RheSkpXG4gICAgdGhlbiBJbnQ2My5wcmVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICBlbHNlIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgOztcblxuICBsZXQgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfaW5fc2VjID0gSW50NjMudG9fZmxvYXQgKGRheXNfZnJvbV9lcG9jaCAqIHNlY19wZXJfZGF5KSBpblxuICAgIGxldCByZW1haW5kZXIgPSB0IC0uIGRheXNfZnJvbV9lcG9jaF9pbl9zZWMgaW5cbiAgICBTcGFuLm9mX3NlYyByZW1haW5kZXIgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gIDs7XG5cbiAgbGV0IGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgIEludDYzLnRvX2ludF9leG4gZGF5c19mcm9tX2Vwb2NoXG4gICAgfD4gRGF0ZTAuRGF5cy5hZGRfZGF5cyBEYXRlMC5EYXlzLnVuaXhfZXBvY2hcbiAgICB8PiBEYXRlMC5EYXlzLnRvX2RhdGVcbiAgOztcblxuICBsZXQgdG9fZGF0ZSB0ID1cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICBkYXRlX29mX2RheXNfZnJvbV9lcG9jaCB+ZGF5c19mcm9tX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHRvX29mZGF5IHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2hcbiAgOztcblxuICBsZXQgdG9fZGF0ZV9vZmRheSB0ID1cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICBsZXQgZGF0ZSA9IGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBsZXQgb2ZkYXkgPSBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoIGluXG4gICAgZGF0ZSwgb2ZkYXlcbiAgOztcbmVuZFxuXG5sZXQgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgPVxuICBpZiBTcGFuLiggPD0gKSBpbnRlcnZhbCBTcGFuLnplcm9cbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJUaW1lLm5leHRfbXVsdGlwbGUgZ290IG5vbnBvc2l0aXZlIGludGVydmFsXCJcbiAgICAgIGludGVydmFsXG4gICAgICBbJXNleHBfb2Y6IFNwYW4udF07XG4gIGxldCBiYXNlX3RvX2FmdGVyID0gZGlmZiBhZnRlciBiYXNlIGluXG4gIGlmIFNwYW4uKCA8ICkgYmFzZV90b19hZnRlciBTcGFuLnplcm9cbiAgdGhlbiBiYXNlICgqIFthZnRlciA8IGJhc2VdLCBjaG9vc2UgW2sgPSAwXS4gKilcbiAgZWxzZSAoXG4gICAgbGV0IG5leHQgPVxuICAgICAgYWRkXG4gICAgICAgIGJhc2VcbiAgICAgICAgKFNwYW4uc2NhbGVcbiAgICAgICAgICAgaW50ZXJ2YWxcbiAgICAgICAgICAgKEZsb2F0LnJvdW5kIH5kaXI6YERvd24gKFNwYW4uKCAvLyApIGJhc2VfdG9fYWZ0ZXIgaW50ZXJ2YWwpKSlcbiAgICBpblxuICAgIGlmIG5leHQgPiBhZnRlciB8fCAoY2FuX2VxdWFsX2FmdGVyICYmIG5leHQgPSBhZnRlcikgdGhlbiBuZXh0IGVsc2UgYWRkIG5leHQgaW50ZXJ2YWwpXG47O1xuXG5sZXQgbmV4dF9tdWx0aXBsZSA/KGNhbl9lcXVhbF9hZnRlciA9IGZhbHNlKSB+YmFzZSB+YWZ0ZXIgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWxcbjs7XG5cbmxldCBwcmV2X211bHRpcGxlID8oY2FuX2VxdWFsX2JlZm9yZSA9IGZhbHNlKSB+YmFzZSB+YmVmb3JlIH5pbnRlcnZhbCAoKSA9XG4gIG5leHRfbXVsdGlwbGVfaW50ZXJuYWxcbiAgICB+Y2FuX2VxdWFsX2FmdGVyOihub3QgY2FuX2VxdWFsX2JlZm9yZSlcbiAgICB+YmFzZVxuICAgIH5hZnRlcjooc3ViIGJlZm9yZSBpbnRlcnZhbClcbiAgICB+aW50ZXJ2YWxcbjs7XG5cbmxldCBub3cgKCkgPVxuICBsZXQgZmxvYXRfbnMgPSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpIHw+IEludDYzLnRvX2Zsb2F0IGluXG4gIG9mX3NwYW5fc2luY2VfZXBvY2ggKFNwYW4ub2Zfc2VjIChmbG9hdF9ucyAqLiAxRS05KSlcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNwYW4gPSBTcGFuLlN0YWJsZVxuICBtb2R1bGUgT2ZkYXkgPSBPZmRheS5TdGFibGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIHR5cGUgU19rZXJuZWxfd2l0aG91dF96b25lID0gVGltZTBfaW50Zi5TXG5tb2R1bGUgdHlwZSBTX2tlcm5lbCA9IFRpbWVfaW50Zi5TXG5cbm1vZHVsZSBab25lX3N0YWJsZSA9IFpvbmUuU3RhYmxlXG5pbmNsdWRlIFRpbWUuTWFrZSAoVGltZV9mbG9hdDApXG5pbmNsdWRlIFRpbWVfZmxvYXQwXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX2Zsb2F0MC5TdGFibGVcbiAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuICBtb2R1bGUgV2l0aF90X29mX3NleHBfYWJzID0gc3RydWN0IGVuZFxuXG4gIG1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgT2ZkYXlcbiAgICBtb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBXaXRoX3V0Y19zZXhwID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2hdXG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodG9fc3RyaW5nX2Fic19wYXJ0cyB0IH56b25lOlpvbmUudXRjIDogc3RyaW5nIGxpc3QpXVxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuXG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICB0cnlcbiAgICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgICB8IFNleHAuTGlzdCBbIFNleHAuQXRvbSBkYXRlOyBTZXhwLkF0b20gb2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUgXSAtPlxuICAgICAgICAgICAgb2Zfc3RyaW5nX2dlblxuICAgICAgICAgICAgICB+ZGVmYXVsdF96b25lOihmdW4gKCkgLT4gWm9uZS51dGMpXG4gICAgICAgICAgICAgIH5maW5kX3pvbmU6KGZ1biBfIC0+XG4gICAgICAgICAgICAgICAgb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3RhYmxlLldpdGhfdXRjLlYyLnRfb2Zfc2V4cDogdW5rbm93biB0aW1lIHpvbmVcIiBzZXhwKVxuICAgICAgICAgICAgICAoZGF0ZSBeIFwiIFwiIF4gb2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUpXG4gICAgICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJUaW1lLlN0YWJsZS5XaXRoX3V0Yy5WMi50X29mX3NleHBcIiBzZXhwXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBPZl9zZXhwX2Vycm9yIF8gYXMgZSAtPiByYWlzZSBlXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgICAgIChzcHJpbnRmIFwiVGltZS5TdGFibGUuV2l0aF91dGMuVjIudF9vZl9zZXhwOiAlc1wiIChFeG4udG9fc3RyaW5nIGUpKVxuICAgICAgICAgICAgc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFNleHBsaWIuU2V4cC50X3NleHBfZ3JhbW1hclxuICAgICAgbGV0IGNvbXBhcmF0b3IgPSBgVXNlX1RpbWVfdW5peFxuXG4gICAgICBtb2R1bGUgTWFwID0gc3RydWN0IGVuZFxuICAgICAgbW9kdWxlIFNldCA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFpvbmUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gICAgaW5jbHVkZSBab25lX3N0YWJsZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2ZkYXkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBPZmRheVxuXG4gIGxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG4gIGxldCBub3cgPSBgVXNlX1RpbWVfdW5peFxuXG4gIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcbmVuZFxuXG5tb2R1bGUgU3BhbiA9IHN0cnVjdFxuICBpbmNsdWRlIFNwYW5cblxuICBsZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxuZW5kXG5cbm1vZHVsZSBab25lID0gc3RydWN0XG4gIGluY2x1ZGUgWm9uZVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxuICBtb2R1bGUgTWFwID0gc3RydWN0IGVuZFxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0IGVuZFxuICBtb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxuICBtb2R1bGUgVGFibGUgPSBzdHJ1Y3QgZW5kXG5cbiAgbGV0ICggPCApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPD0gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoIDw+ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA9ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA+ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA+PSApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IF9fYmluX3JlYWRfdF9fID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGFzY2VuZGluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiZXR3ZWVuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl9yZWFkX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3JlYWRlcl90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl9zaGFwZV90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl9zaXplX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3dyaXRlX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3dyaXRlcl90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGNsYW1wID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGNsYW1wX2V4biA9IGBVc2VfVGltZV91bml4XG4gIGxldCBjb21wYXJhdG9yID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGRlc2NlbmRpbmcgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZXF1YWwgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZmluZCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBmaW5kX2V4biA9IGBVc2VfVGltZV91bml4XG4gIGxldCBoYXNoID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGhhc2hfZm9sZF90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGhhc2hhYmxlID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGluaXQgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaW5pdGlhbGl6ZWRfem9uZXMgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbG9jYWwgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbWF4ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG1pbiA9IGBVc2VfVGltZV91bml4XG4gIGxldCBvZl9zdHJpbmcgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgcHAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdF9vZl9zZXhwID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHRvX3N0cmluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCB2YWxpZGF0ZV9ib3VuZCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB2YWxpZGF0ZV9sYm91bmQgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdmFsaWRhdGVfdWJvdW5kID0gYFVzZV9UaW1lX3VuaXhcbmVuZFxuXG5tb2R1bGUgRXhwb3NlZF9mb3JfdGVzdHMgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgSGFzaF9xdWV1ZSA9IHN0cnVjdCBlbmRcbm1vZHVsZSBIYXNoX3NldCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIFRhYmxlID0gc3RydWN0IGVuZFxuXG5sZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxubGV0IGZvcm1hdCA9IGBVc2VfVGltZV91bml4XG5sZXQgZ2V0X3NleHBfem9uZSA9IGBVc2VfVGltZV91bml4XG5sZXQgaGFzaGFibGUgPSBgVXNlX1RpbWVfdW5peFxubGV0IGludGVycnVwdGlibGVfcGF1c2UgPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX2RhdGVfb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX3N0cmluZ19hYnMgPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfdW5peFxubGV0IG9mX3RtID0gYFVzZV9UaW1lX3VuaXhcbmxldCBwYXJzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgcGF1c2UgPSBgVXNlX1RpbWVfdW5peFxubGV0IHBhdXNlX2ZvcmV2ZXIgPSBgVXNlX1RpbWVfdW5peFxubGV0IHBwID0gYFVzZV9UaW1lX3VuaXhcbmxldCBzZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX3VuaXhcbmxldCBzZXhwX29mX3QgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNleHBfb2ZfdF9hYnMgPSBgVXNlX1RpbWVfdW5peFxubGV0IHRfb2Zfc2V4cCA9IGBVc2VfVGltZV91bml4XG5sZXQgdF9vZl9zZXhwX2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgdG9fZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgdG9fb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfdW5peFxubGV0IHRvX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfdW5peFxuIiwiaW5jbHVkZSBEYXRlMFxuXG5sZXQgb2ZfdGltZSB0aW1lIH56b25lID0gVGltZV9mbG9hdC50b19kYXRlIH56b25lIHRpbWVcbmxldCB0b2RheSB+em9uZSA9IG9mX3RpbWUgKFRpbWVfZmxvYXQubm93ICgpKSB+em9uZVxubGV0IGZvcm1hdCA9IGBVc2VfRGF0ZV91bml4XG5sZXQgb2ZfdG0gPSBgVXNlX0RhdGVfdW5peFxubGV0IHBhcnNlID0gYFVzZV9EYXRlX3VuaXhcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludDYzLk9cblxubGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWVfbnMuU3BhblwiXG5cbnR5cGUgdW5kZXJseWluZyA9IEludDYzLnRcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gSW50LmVxdWFsIFN5cy53b3JkX3NpemVfaW5fYml0cyA2NFxubGV0IHJvdW5kX25lYXJlc3QgPSBGbG9hdC5pbnQ2M19yb3VuZF9uZWFyZXN0X2V4blxubGV0IGZsb2F0IHggPSBJbnQ2My50b19mbG9hdCB4XG5cbigqIFtTcGFuXSBpcyBiYXNpY2FsbHkgYSBbSW50NjNdLiAgSXQgZXZlbiBzaWxlbnRseSBpZ25vcmVzIG92ZXJmbG93LiAqKVxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50NjMudCAoKiBuYW5vc2Vjb25kcyAqKSBbQEBkZXJpdmluZyBoYXNoLCBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG5cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEludDYzLlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCB6ZXJvID0gSW50NjMuemVyb1xuZW5kXG5cbmluY2x1ZGUgVFxub3BlbiBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFBhcnRzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzaWduIDogU2lnbi50XG4gICAgOyBociA6IGludFxuICAgIDsgbWluIDogaW50XG4gICAgOyBzZWMgOiBpbnRcbiAgICA7IG1zIDogaW50XG4gICAgOyB1cyA6IGludFxuICAgIDsgbnMgOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hcl1cbmVuZFxuXG5sZXQgbmV4dCB0ID0gSW50NjMuc3VjYyB0XG5sZXQgcHJldiB0ID0gSW50NjMucHJlZCB0XG5sZXQgbmFub3NlY29uZCA9IEludDYzLm9mX2ludCAxXG5sZXQgbWljcm9zZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBuYW5vc2Vjb25kKVxubGV0IG1pbGxpc2Vjb25kID0gSW50NjMuKG9mX2ludCAxMDAwICogbWljcm9zZWNvbmQpXG5sZXQgc2Vjb25kID0gSW50NjMuKG9mX2ludCAxMDAwICogbWlsbGlzZWNvbmQpXG5sZXQgbWludXRlID0gSW50NjMuKG9mX2ludCA2MCAqIHNlY29uZClcbmxldCBob3VyID0gSW50NjMuKG9mX2ludCA2MCAqIG1pbnV0ZSlcbmxldCBkYXkgPSBJbnQ2My4ob2ZfaW50IDI0ICogaG91cilcblxuKCogQmV5b25kIFttaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZy4ubWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmddLCBub3QgZXZlcnkgbWljcm9zZWNvbmRcbiAgIGNhbiBiZSByZXByZXNlbnRlZCBhcyBhIFtmbG9hdF0gbnVtYmVyIG9mIHNlY29uZHMuIChJbiBmYWN0LCBpdCBpcyBhcm91bmQgMTM1eSwgYnV0IHdlXG4gICBsZWF2ZSBhIHNtYWxsIG1hcmdpbi4pXG5cbiAgIEluIHRoZSBwcmVzZW5jZSBvZiBzaWxlbnRseSBpZ25vcmVkIG92ZXJmbG93LCBub3RlIHRoYXQgW3RdIGlzIG5vdCBhY3R1YWxseSBib3VuZCB0b1xuICAgc3RheSBiZXR3ZWVuIHRoZXNlIGxpbWl0cy4gKilcbmxldCBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IEludDYzLihvZl9pbnQgMTM1ICogb2ZfaW50IDM2NSAqIGRheSlcbmxldCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IEludDYzLm5lZyBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuXG5sZXQgY3JlYXRlXG4gICAgICA/c2lnbjooc2lnbl8gPSBTaWduLlBvcyAoKiByZWJpbmQgc28gbm90IHNoYWRvd2VkIGJ5IFtvcGVuIEludDYzXSBiZWxvdyAqKSlcbiAgICAgID9kYXk6KGRheXMgPSAwKVxuICAgICAgPyhociA9IDApXG4gICAgICA/bWluOihtaW51dGVzID0gMClcbiAgICAgID8oc2VjID0gMClcbiAgICAgID8obXMgPSAwKVxuICAgICAgPyh1cyA9IDApXG4gICAgICA/KG5zID0gMClcbiAgICAgICgpXG4gID1cbiAgbGV0IG9wZW4gSW50NjMgaW5cbiAgbGV0IHQgPVxuICAgIChvZl9pbnQgZGF5cyAqIGRheSlcbiAgICArIChvZl9pbnQgaHIgKiBob3VyKVxuICAgICsgKG9mX2ludCBtaW51dGVzICogbWludXRlKVxuICAgICsgKG9mX2ludCBzZWMgKiBzZWNvbmQpXG4gICAgKyAob2ZfaW50IG1zICogbWlsbGlzZWNvbmQpXG4gICAgKyAob2ZfaW50IHVzICogbWljcm9zZWNvbmQpXG4gICAgKyAob2ZfaW50IG5zICogbmFub3NlY29uZClcbiAgaW5cbiAgbWF0Y2ggc2lnbl8gd2l0aFxuICB8IE5lZyAtPiBuZWcgdFxuICB8IFBvcyB8IFplcm8gLT4gdFxuOztcblxubGV0IHRvX3BhcnRzIHQgPVxuICBsZXQgb3BlbiBJbnQ2MyBpblxuICBsZXQgbWFnID0gYWJzIHQgaW5cbiAgeyBQYXJ0cy5zaWduID0gKGlmIHQgPCB6ZXJvIHRoZW4gTmVnIGVsc2UgaWYgdCA+IHplcm8gdGhlbiBQb3MgZWxzZSBaZXJvKVxuICA7IGhyID0gdG9faW50X2V4biAobWFnIC8gaG91cilcbiAgOyBtaW4gPSB0b19pbnRfZXhuIChyZW0gbWFnIGhvdXIgLyBtaW51dGUpXG4gIDsgc2VjID0gdG9faW50X2V4biAocmVtIG1hZyBtaW51dGUgLyBzZWNvbmQpXG4gIDsgbXMgPSB0b19pbnRfZXhuIChyZW0gbWFnIHNlY29uZCAvIG1pbGxpc2Vjb25kKVxuICA7IHVzID0gdG9faW50X2V4biAocmVtIG1hZyBtaWxsaXNlY29uZCAvIG1pY3Jvc2Vjb25kKVxuICA7IG5zID0gdG9faW50X2V4biAocmVtIG1hZyBtaWNyb3NlY29uZCAvIG5hbm9zZWNvbmQpXG4gIH1cbjs7XG5cbmxldCBvZl9wYXJ0cyB7IFBhcnRzLnNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9ID1cbiAgY3JlYXRlIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnMgKClcbjs7XG5cbmxldCBvZl9ucyBmID0gcm91bmRfbmVhcmVzdCBmXG5sZXQgb2ZfaW50NjNfbnMgaSA9IGlcbmxldCBvZl9pbnRfdXMgaSA9IEludDYzLihvZl9pbnQgaSAqIG1pY3Jvc2Vjb25kKVxubGV0IG9mX2ludF9tcyBpID0gSW50NjMuKG9mX2ludCBpICogbWlsbGlzZWNvbmQpXG5sZXQgb2ZfaW50X3NlYyBpID0gSW50NjMuKG9mX2ludCBpICogc2Vjb25kKVxubGV0IG9mX2ludF9taW4gaSA9IEludDYzLihvZl9pbnQgaSAqIG1pbnV0ZSlcbmxldCBvZl9pbnRfaHIgaSA9IEludDYzLihvZl9pbnQgaSAqIGhvdXIpXG5sZXQgb2ZfaW50X2RheSBpID0gSW50NjMuKG9mX2ludCBpICogZGF5KVxubGV0IG9mX3VzIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IG1pY3Jvc2Vjb25kKVxubGV0IG9mX21zIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IG1pbGxpc2Vjb25kKVxubGV0IG9mX3NlYyBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBzZWNvbmQpXG5sZXQgb2ZfbWluIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IG1pbnV0ZSlcbmxldCBvZl9ociBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBob3VyKVxubGV0IG9mX2RheSBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBkYXkpXG5cbmxldCBvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXNpb24gc2VjID1cbiAgbGV0IHVzID0gcm91bmRfbmVhcmVzdCAoc2VjICouIDFlNikgaW5cbiAgb2ZfaW50NjNfbnMgSW50NjMuKHVzICogb2ZfaW50IDEwMDApXG47O1xuXG5sZXQgb2ZfaW50NjNfc2Vjb25kcyB4ID0geCAqIHNlY29uZFxubGV0IG9mX2ludDMyX3NlY29uZHMgeCA9IG9mX2ludDYzX3NlY29uZHMgKEludDYzLm9mX2ludDMyIHgpXG5cbmxldCB0b19ucyB0ID0gZmxvYXQgdFxubGV0IHRvX2ludDYzX25zIHQgPSB0XG5sZXQgdG9fdXMgdCA9IGZsb2F0IHQgLy4gZmxvYXQgbWljcm9zZWNvbmRcbmxldCB0b19tcyB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaWxsaXNlY29uZFxubGV0IHRvX3NlYyB0ID0gZmxvYXQgdCAvLiBmbG9hdCBzZWNvbmRcbmxldCB0b19taW4gdCA9IGZsb2F0IHQgLy4gZmxvYXQgbWludXRlXG5sZXQgdG9faHIgdCA9IGZsb2F0IHQgLy4gZmxvYXQgaG91clxubGV0IHRvX2RheSB0ID0gZmxvYXQgdCAvLiBmbG9hdCBkYXlcbmxldCB0b19pbnRfdXMgdCA9IEludDYzLih0b19pbnRfZXhuICh0IC8gbWljcm9zZWNvbmQpKVxubGV0IHRvX2ludF9tcyB0ID0gSW50NjMuKHRvX2ludF9leG4gKHQgLyBtaWxsaXNlY29uZCkpXG5sZXQgdG9faW50X3NlYyB0ID0gSW50NjMuKHRvX2ludF9leG4gKHQgLyBzZWNvbmQpKVxubGV0IHRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4gdCA9IHQgLyUgc2Vjb25kXG5sZXQgb2ZfaW50X25zIGkgPSBvZl9pbnQ2M19ucyAoSW50NjMub2ZfaW50IGkpXG5cbmxldCB0b19pbnRfbnMgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biB0IC0+IEludDYzLnRvX2ludF9leG4gKHRvX2ludDYzX25zIHQpXG4gIGVsc2UgZnVuIF8gLT4gZmFpbHdpdGggXCJUaW1lX25zLlNwYW4udG9faW50X25zOiB1bnN1cHBvcnRlZCBvbiAzMmJpdCBtYWNoaW5lc1wiXG47O1xuXG5sZXQgKCArICkgdCB1ID0gSW50NjMuKCArICkgdCB1XG5sZXQgKCAtICkgdCB1ID0gSW50NjMuKCAtICkgdCB1XG5sZXQgYWJzID0gSW50NjMuYWJzXG5sZXQgbmVnID0gSW50NjMubmVnXG5sZXQgc2NhbGUgdCBmID0gcm91bmRfbmVhcmVzdCAoZmxvYXQgdCAqLiBmKVxubGV0IHNjYWxlX2ludDYzIHQgaSA9IEludDYzLiggKiApIHQgaVxubGV0IHNjYWxlX2ludCB0IGkgPSBzY2FsZV9pbnQ2MyB0IChJbnQ2My5vZl9pbnQgaSlcbmxldCBkaXYgPSBJbnQ2My4oIC8lIClcbmxldCAoIC8gKSB0IGYgPSByb3VuZF9uZWFyZXN0IChmbG9hdCB0IC8uIGYpXG5sZXQgKCAvLyApID0gSW50NjMuKCAvLyApXG5sZXQgdG9fcHJvcG9ydGlvbmFsX2Zsb2F0IHQgPSBJbnQ2My50b19mbG9hdCB0XG5cbmxldCBvZl91bml0X29mX3RpbWUgdSA9XG4gIG1hdGNoICh1IDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgfCBOYW5vc2Vjb25kIC0+IG5hbm9zZWNvbmRcbiAgfCBNaWNyb3NlY29uZCAtPiBtaWNyb3NlY29uZFxuICB8IE1pbGxpc2Vjb25kIC0+IG1pbGxpc2Vjb25kXG4gIHwgU2Vjb25kIC0+IHNlY29uZFxuICB8IE1pbnV0ZSAtPiBtaW51dGVcbiAgfCBIb3VyIC0+IGhvdXJcbiAgfCBEYXkgLT4gZGF5XG47O1xuXG5sZXQgdG9fdW5pdF9vZl90aW1lIHQgOiBVbml0X29mX3RpbWUudCA9XG4gIGxldCBhYnNfdCA9IGFicyB0IGluXG4gIGlmIGFic190ID49IGRheVxuICB0aGVuIERheVxuICBlbHNlIGlmIGFic190ID49IGhvdXJcbiAgdGhlbiBIb3VyXG4gIGVsc2UgaWYgYWJzX3QgPj0gbWludXRlXG4gIHRoZW4gTWludXRlXG4gIGVsc2UgaWYgYWJzX3QgPj0gc2Vjb25kXG4gIHRoZW4gU2Vjb25kXG4gIGVsc2UgaWYgYWJzX3QgPj0gbWlsbGlzZWNvbmRcbiAgdGhlbiBNaWxsaXNlY29uZFxuICBlbHNlIGlmIGFic190ID49IG1pY3Jvc2Vjb25kXG4gIHRoZW4gTWljcm9zZWNvbmRcbiAgZWxzZSBOYW5vc2Vjb25kXG47O1xuXG5sZXQgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IHQgPSBTcGFuX2Zsb2F0Lm9mX3NlYyAodG9fc2VjIHQpXG5sZXQgb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IHMgPSBvZl9zZWMgKFNwYW5fZmxvYXQudG9fc2VjIHMpXG5cbm1vZHVsZSBTdGFibGUwID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsXVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICAgIFRpbWVfZmxvYXQuU3RhYmxlLlNwYW4uVjEuc2V4cF9vZl90ICh0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgdClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0X29mX3NleHAgcyA9XG4gICAgICAgIG9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCAoVGltZV9mbG9hdC5TdGFibGUuU3Bhbi5WMS50X29mX3NleHAgcylcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9pbnQ2M19leG4gdCA9IG9mX2ludDYzX25zIHRcbiAgICAgIGxldCB0b19pbnQ2MyB0ID0gdG9faW50NjNfbnMgdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQwID0gc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWxdXG5cbiAgICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID0gSW50NjMuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzXG4gICAgICAgIGxldCBvZl9pbnQ2M19leG4gdCA9IG9mX2ludDYzX25zIHRcbiAgICAgICAgbGV0IHRvX2ludDYzIHQgPSB0b19pbnQ2M19ucyB0XG5cbiAgICAgICAgbW9kdWxlIFRvX3N0cmluZyA9IHN0cnVjdFxuICAgICAgICAgIGxldCBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBpZiBzcGFuX3BhcnRfbWFnbml0dWRlID0gMFxuICAgICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMFxuICAgICAgICAgICAgdGhlbiAxXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMDBcbiAgICAgICAgICAgIHRoZW4gMlxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMV8wMDBcbiAgICAgICAgICAgIHRoZW4gM1xuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTBfMDAwXG4gICAgICAgICAgICB0aGVuIDRcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwMF8wMDBcbiAgICAgICAgICAgIHRoZW4gNVxuICAgICAgICAgICAgZWxzZSBhc3NlcnQgZmFsc2VcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgKCogc3BhbiBwYXJ0IG1hZ25pdHVkZXMgYXJlIGFsd2F5cyA8IDEwMF8wMDAgKilcblxuICAgICAgICAgIGxldCBudW1iZXJfb2ZfZGVjaW1hbF9wbGFjZXNfdG9fd3JpdGUgfmJpbGxpb250aHMgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGFzc2VydCAoYmlsbGlvbnRocyA+PSAwICYmIGJpbGxpb250aHMgPD0gOTk5Xzk5OV85OTkpO1xuICAgICAgICAgICAgaWYgYmlsbGlvbnRocyA9IDBcbiAgICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAgPD4gMFxuICAgICAgICAgICAgdGhlbiA5XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA4XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDdcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDZcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA1XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxXzAwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA0XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMF8wMDBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gM1xuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAwXzAwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiAyXG4gICAgICAgICAgICBlbHNlIDFcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2NoYXIgYnVmIH5wb3MgY2hhciA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgcG9zIGNoYXI7XG4gICAgICAgICAgICBwb3MgKyAxXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV8yX2NoYXJzIGJ1ZiB+cG9zIGNoYXIxIGNoYXIyID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiBwb3MgY2hhcjE7XG4gICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAocG9zICsgMSkgY2hhcjI7XG4gICAgICAgICAgICBwb3MgKyAyXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV9kaWdpdHMgYnVmIH5wb3MgfmRpZ2l0cyBpbnQgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlX2ludDYzIGJ1ZiB+cG9zIH5kaWdpdHMgKEludDYzLm9mX2ludCBpbnQpO1xuICAgICAgICAgICAgcG9zICsgZGlnaXRzXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV9kZWNpbWFscyBidWYgfnBvcyB+ZGVjaW1hbHMgfmJpbGxpb250aHMgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlX2ludDYzXG4gICAgICAgICAgICAgIGJ1ZlxuICAgICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICAgIH5kaWdpdHM6ZGVjaW1hbHNcbiAgICAgICAgICAgICAgKEludDYzLm9mX2ludCAoYmlsbGlvbnRocyAvIEludC5wb3cgMTAgKDkgLSBkZWNpbWFscykpKTtcbiAgICAgICAgICAgIHBvcyArIGRlY2ltYWxzXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0cyBpbnQgc3VmZml4ID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBpZiBkaWdpdHMgPSAwXG4gICAgICAgICAgICB0aGVuIHBvc1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9kaWdpdHMgYnVmIH5wb3MgfmRpZ2l0cyBpbnQgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2NoYXIgYnVmIH5wb3Mgc3VmZml4IGluXG4gICAgICAgICAgICAgIHBvcylcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IG5hbm9zX29mX21pbGxpc2Vjb25kID0gdG9faW50NjNfbnMgbWlsbGlzZWNvbmQgfD4gSW50NjMudG9faW50X2V4blxuICAgICAgICAgIGxldCBuYW5vc19vZl9taWNyb3NlY29uZCA9IHRvX2ludDYzX25zIG1pY3Jvc2Vjb25kIHw+IEludDYzLnRvX2ludF9leG5cbiAgICAgICAgICBsZXQgaW50NjNfNjAgPSBJbnQ2My5vZl9pbnQgNjBcbiAgICAgICAgICBsZXQgaW50NjNfMjQgPSBJbnQ2My5vZl9pbnQgMjRcblxuICAgICAgICAgICgqIFVuaXRzIG9mIHNlY29uZHMgYW5kIHNtYWxsZXIgY2FuIGJlIHdyaXR0ZW4gaW4gZGVjaW1hbCBub3RhdGlvbiB3aXRob3V0XG4gICAgICAgICAgICAgd29ycnlpbmcgYWJvdXQgbm9uLXBvd2VyLW9mLXRlbiBmYWN0b3JzLiAqKVxuICAgICAgICAgIG1vZHVsZSBEZWNpbWFsX3VuaXQgPSBzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICAgIHwgU2Vjb25kXG4gICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgfCBOb25lXG4gICAgICAgICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICAgICAgICBsZXQgY3JlYXRlIH5zIH5ucyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGlmIHMgPiAwXG4gICAgICAgICAgICAgIHRoZW4gU2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbnMgPj0gbmFub3Nfb2ZfbWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgdGhlbiBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIG5zID49IG5hbm9zX29mX21pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIHRoZW4gTWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBucyA+PSAxXG4gICAgICAgICAgICAgIHRoZW4gTmFub3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIE5vbmVcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCBpbnRlZ2VyIHQgfnMgfm5zID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgIHwgU2Vjb25kIC0+IHNcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiBucyAvIG5hbm9zX29mX21pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gbnMgLyBuYW5vc19vZl9taWNyb3NlY29uZFxuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gbnNcbiAgICAgICAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCBiaWxsaW9udGhzIHQgfm5zID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgIHwgU2Vjb25kIC0+IG5zXG4gICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbnMgJSBuYW5vc19vZl9taWxsaXNlY29uZCAqIDFfMDAwXG4gICAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gbnMgJSBuYW5vc19vZl9taWNyb3NlY29uZCAqIDFfMDAwXzAwMFxuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gMFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gMFxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGxlbmd0aCB0IH5kaWdpdHMgfmRlY2ltYWxzID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19sZW4gPVxuICAgICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICAgIHwgU2Vjb25kIC0+IGRpZ2l0cyArIDFcbiAgICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIHwgTWljcm9zZWNvbmQgfCBOYW5vc2Vjb25kIC0+IGRpZ2l0cyArIDJcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gMFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbHNfbGVuID0gaWYgZGVjaW1hbHMgPiAwIHRoZW4gZGVjaW1hbHMgKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICBkaWdpdHNfbGVuICsgZGVjaW1hbHNfbGVuXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgd3JpdGVfc3VmZml4IHQgYnVmIH5wb3MgPVxuICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gd3JpdGVfY2hhciBidWYgfnBvcyAncydcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiB3cml0ZV8yX2NoYXJzIGJ1ZiB+cG9zICdtJyAncydcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiB3cml0ZV8yX2NoYXJzIGJ1ZiB+cG9zICd1JyAncydcbiAgICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgJ24nICdzJ1xuICAgICAgICAgICAgICB8IE5vbmUgLT4gcG9zXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgd3JpdGUgdCBidWYgfnBvcyB+aW50ZWdlciB+ZGlnaXRzIH5iaWxsaW9udGhzIH5kZWNpbWFscyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGlmIGRpZ2l0cyA9IDBcbiAgICAgICAgICAgICAgdGhlbiBwb3NcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2RpZ2l0cyBidWYgfnBvcyBpbnRlZ2VyIH5kaWdpdHMgaW5cbiAgICAgICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgICAgIGlmIGRlY2ltYWxzID0gMFxuICAgICAgICAgICAgICAgICAgdGhlbiBwb3NcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfY2hhciBidWYgfnBvcyAnLicgaW5cbiAgICAgICAgICAgICAgICAgICAgd3JpdGVfZGVjaW1hbHMgYnVmIH5wb3MgfmJpbGxpb250aHMgfmRlY2ltYWxzKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgd3JpdGVfc3VmZml4IHQgYnVmIH5wb3MpXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgICAgIGlmIGVxdWFsIHQgemVyb1xuICAgICAgICAgICAgdGhlbiBcIjBzXCJcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgaXNfbmVnYXRpdmUgPSB0IDwgemVybyBpblxuICAgICAgICAgICAgICBsZXQgc2Vjb25kcyA9IEludDYzLiggLyApICh0b19pbnQ2M19ucyB0KSAodG9faW50NjNfbnMgc2Vjb25kKSBpblxuICAgICAgICAgICAgICBsZXQgbnMgPVxuICAgICAgICAgICAgICAgIEludDYzLnJlbSAodG9faW50NjNfbnMgdCkgKHRvX2ludDYzX25zIHNlY29uZCkgfD4gSW50NjMudG9faW50X2V4blxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgc2Vjb25kcyA9IEludDYzLmFicyBzZWNvbmRzIGluXG4gICAgICAgICAgICAgIGxldCBucyA9IEludC5hYnMgbnMgaW5cbiAgICAgICAgICAgICAgbGV0IHMgPSBJbnQ2My5yZW0gc2Vjb25kcyBpbnQ2M182MCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBtaW51dGVzID0gSW50NjMuKCAvICkgc2Vjb25kcyBpbnQ2M182MCBpblxuICAgICAgICAgICAgICBsZXQgbSA9IEludDYzLnJlbSBtaW51dGVzIGludDYzXzYwIHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IGhvdXJzID0gSW50NjMuKCAvICkgbWludXRlcyBpbnQ2M182MCBpblxuICAgICAgICAgICAgICBsZXQgaCA9IEludDYzLnJlbSBob3VycyBpbnQ2M18yNCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBkID0gSW50NjMuKCAvICkgaG91cnMgaW50NjNfMjQgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX2QgPSBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOmQgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9oID0gbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTpoIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfbSA9IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6bSBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0ID0gRGVjaW1hbF91bml0LmNyZWF0ZSB+cyB+bnMgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdF9pbnRlZ2VyID0gRGVjaW1hbF91bml0LmludGVnZXIgZGVjaW1hbF91bml0IH5zIH5ucyBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0X2JpbGxpb250aHMgPSBEZWNpbWFsX3VuaXQuYmlsbGlvbnRocyBkZWNpbWFsX3VuaXQgfm5zIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfZGVjaW1hbF91bml0ID1cbiAgICAgICAgICAgICAgICBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOmRlY2ltYWxfdW5pdF9pbnRlZ2VyXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsc19vZl9kZWNpbWFsX3VuaXQgPVxuICAgICAgICAgICAgICAgIG51bWJlcl9vZl9kZWNpbWFsX3BsYWNlc190b193cml0ZSB+YmlsbGlvbnRoczpkZWNpbWFsX3VuaXRfYmlsbGlvbnRoc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgc3RyaW5nX2xlbmd0aCA9XG4gICAgICAgICAgICAgICAgbGV0IHNpZ25fbGVuID0gaWYgaXNfbmVnYXRpdmUgdGhlbiAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBkX2xlbiA9IGlmIGRpZ2l0c19vZl9kID4gMCB0aGVuIGRpZ2l0c19vZl9kICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgaF9sZW4gPSBpZiBkaWdpdHNfb2ZfaCA+IDAgdGhlbiBkaWdpdHNfb2ZfaCArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IG1fbGVuID0gaWYgZGlnaXRzX29mX20gPiAwIHRoZW4gZGlnaXRzX29mX20gKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXRfbGVuID1cbiAgICAgICAgICAgICAgICAgIERlY2ltYWxfdW5pdC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICAgIH5kaWdpdHM6ZGlnaXRzX29mX2RlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgICAgICB+ZGVjaW1hbHM6ZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBzaWduX2xlbiArIGRfbGVuICsgaF9sZW4gKyBtX2xlbiArIGRlY2ltYWxfdW5pdF9sZW5cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYXNzZXJ0IChzdHJpbmdfbGVuZ3RoID4gMCk7XG4gICAgICAgICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgc3RyaW5nX2xlbmd0aCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gMCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gaWYgaXNfbmVnYXRpdmUgdGhlbiB3cml0ZV9jaGFyIGJ1ZiB+cG9zICctJyBlbHNlIHBvcyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2QgZCAnZCcgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9oIGggJ2gnIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfbSBtICdtJyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgICBEZWNpbWFsX3VuaXQud3JpdGVcbiAgICAgICAgICAgICAgICAgIGRlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgICAgYnVmXG4gICAgICAgICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICAgICAgICB+aW50ZWdlcjpkZWNpbWFsX3VuaXRfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgfmRpZ2l0czpkaWdpdHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICB+YmlsbGlvbnRoczpkZWNpbWFsX3VuaXRfYmlsbGlvbnRoc1xuICAgICAgICAgICAgICAgICAgfmRlY2ltYWxzOmRlY2ltYWxzX29mX2RlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhc3NlcnQgKHBvcyA9IHN0cmluZ19sZW5ndGgpO1xuICAgICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZilcbiAgICAgICAgICA7O1xuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gVG9fc3RyaW5nLnRvX3N0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBPZl9zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgICAgICAoKiBXZSBkbyBjb21wdXRhdGlvbnMgdXNpbmcgbmVnYXRpdmUgbnVtYmVycyBldmVyeXdoZXJlIGFuZCB0ZXN0IGFnYWluc3RcbiAgICAgICAgICAgICB0aGluZ3MgcmVsYXRlZCB0byBbSW50NjMubWluX3ZhbHVlXSByYXRoZXIgdGhhbiB1c2luZyBwb3NpdGl2ZSBudW1iZXJzXG4gICAgICAgICAgICAgYW5kIHRlc3RpbmcgYWdhaW5zdCB0aGluZ3MgcmVsYXRlZCB0byBbSW50NjMubWF4X3ZhbHVlXSBiZWNhdXNlIHRoZVxuICAgICAgICAgICAgIG5lZ2F0aXZlIGludGVnZXIgcmFuZ2UgaXMgb25lIHdpZGVyIHRoYW4gdGhlIHBvc2l0aXZlIGludGVnZXIgcmFuZ2VcbiAgICAgICAgICAgICAoLTIqKjYzIHZzIDIqKjYzLTEpLCBhbmQgd2UgbmVlZCB0aGF0IHRvIGJlIGFibGUgdG8gaGFuZGxlIEludDYzLm1pbl92YWx1ZVxuICAgICAgICAgICAgIG5pY2VseS4gKilcblxuICAgICAgICAgIGxldCBpbnQ2M18xMCA9IEludDYzLm9mX2ludCAxMFxuICAgICAgICAgIGxldCBtaW5fbXVsdDEwX3dpdGhvdXRfdW5kZXJmbG93ID0gSW50NjMuKG1pbl92YWx1ZSAvIGludDYzXzEwKVxuXG4gICAgICAgICAgbGV0W0Bjb2xkXSBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbiA9XG4gICAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICAgIFwiVGltZV9ucy5TcGFuLm9mX3N0cmluZzogaW52YWxpZCBzdHJpbmdcIlxuICAgICAgICAgICAgICAgICAgKHN0cmluZyA6IHN0cmluZylcbiAgICAgICAgICAgICAgICAgIChyZWFzb24gOiBzdHJpbmcpXVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICAoKiBBc3N1bWVzIHggYW5kIHkgYXJlIGJvdGggbm9ucG9zaXRpdmUgKilcbiAgICAgICAgICBsZXQgYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgeCB5ID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgICAgICAgIGxldCBzdW0gPSB4ICsgeSBpblxuICAgICAgICAgICAgaWYgc3VtID4geFxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNwYW4gd291bGQgYmUgb3V0c2lkZSBvZiBpbnQ2MyByYW5nZVwiO1xuICAgICAgICAgICAgc3VtXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBhZGRfbmVnX2RpZ2l0IH5zdHJpbmcgaW50NjMgY2hhciA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICAgICAgICBsZXQgZGlnaXQgPSBJbnQ2My5vZl9pbnQgKENoYXIuZ2V0X2RpZ2l0X2V4biBjaGFyKSBpblxuICAgICAgICAgICAgaWYgaW50NjMgPCBtaW5fbXVsdDEwX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCI7XG4gICAgICAgICAgICBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyAoaW50NjMgKiBpbnQ2M18xMCkgKC1kaWdpdClcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IG1pbl9mYWN0b3Jfb2Ygc3BhbiA9IEludDYzLiggLyApIEludDYzLm1pbl92YWx1ZSAodG9faW50NjNfbnMgc3BhbilcbiAgICAgICAgICBsZXQgbWluX2RheXNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIGRheVxuICAgICAgICAgIGxldCBtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIGhvdXJcbiAgICAgICAgICBsZXQgbWluX21pbnV0ZXNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIG1pbnV0ZVxuICAgICAgICAgIGxldCBtaW5fc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2Ygc2Vjb25kXG4gICAgICAgICAgbGV0IG1pbl9taWxsaXNlY29uZHNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIG1pbGxpc2Vjb25kXG4gICAgICAgICAgbGV0IG1pbl9taWNyb3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIG1pY3Jvc2Vjb25kXG4gICAgICAgICAgbGV0IG1pbl9uYW5vc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbmFub3NlY29uZFxuXG4gICAgICAgICAgbGV0IG1pbl93aXRob3V0X3VuZGVyZmxvd19vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lID1cbiAgICAgICAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgICAgICAgfCBEYXkgLT4gbWluX2RheXNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgSG91ciAtPiBtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTWludXRlIC0+IG1pbl9taW51dGVzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IFNlY29uZCAtPiBtaW5fc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiBtaW5fbWlsbGlzZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IG1pbl9taWNyb3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiBtaW5fbmFub3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IG5lZ2F0aXZlX3BhcnRcbiAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICB+bmVnX2ludGVnZXJcbiAgICAgICAgICAgICAgICB+ZGVjaW1hbF9wb3NcbiAgICAgICAgICAgICAgICB+ZW5kX3Bvc1xuICAgICAgICAgICAgICAgIH51bml0X29mX3RpbWVcbiAgICAgICAgICAgICAgICB+cm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmdcbiAgICAgICAgICAgID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBsZXQgc2NhbGUgPSB0b19pbnQ2M19ucyAob2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSkgaW5cbiAgICAgICAgICAgIGxldCBtaW5fd2l0aG91dF91bmRlcmZsb3cgPVxuICAgICAgICAgICAgICBtaW5fd2l0aG91dF91bmRlcmZsb3dfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIEludDYzLiggPCApIG5lZ19pbnRlZ2VyIG1pbl93aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNwYW4gd291bGQgYmUgb3V0c2lkZSBvZiBpbnQ2MyByYW5nZVwiO1xuICAgICAgICAgICAgbGV0IG5lZ19pbnRlZ2VyX25zID0gSW50NjMuKCAqICkgbmVnX2ludGVnZXIgc2NhbGUgaW5cbiAgICAgICAgICAgIGxldCBmcmFjdGlvbl9wb3MgPSBkZWNpbWFsX3BvcyArIDEgaW5cbiAgICAgICAgICAgIGlmIGZyYWN0aW9uX3BvcyA+PSBlbmRfcG9zXG4gICAgICAgICAgICB0aGVuIG5lZ19pbnRlZ2VyX25zXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfbnMgPVxuICAgICAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLnJlYWRfaW50NjNfZGVjaW1hbFxuICAgICAgICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICAgICAgICB+cG9zOmZyYWN0aW9uX3Bvc1xuICAgICAgICAgICAgICAgICAgfnNjYWxlXG4gICAgICAgICAgICAgICAgICB+ZGVjaW1hbHM6KGVuZF9wb3MgLSBmcmFjdGlvbl9wb3MpXG4gICAgICAgICAgICAgICAgICB+YWxsb3dfdW5kZXJzY29yZTp0cnVlXG4gICAgICAgICAgICAgICAgICB+cm91bmRfdGllczpyb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyBuZWdfaW50ZWdlcl9ucyAoSW50NjMuKCB+LSApIGRlY2ltYWxfbnMpKVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgbGV0IG5lZ19ucyA9IHJlZiBJbnQ2My56ZXJvIGluXG4gICAgICAgICAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICAgICAgICAgICAgaWYgbGVuID0gMCB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZW1wdHkgc3RyaW5nXCI7XG4gICAgICAgICAgICBsZXQgaXNfbmVnYXRpdmUgPVxuICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgICAgICAgIHwgJy0nIC0+XG4gICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICB8ICcrJyAtPlxuICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZyA6IERpZ2l0X3N0cmluZ19oZWxwZXJzLlJvdW5kLnQgPVxuICAgICAgICAgICAgICAoKiBVbHRpbWF0ZWx5LCB3ZSBhbHdheXMgcm91bmQgcGFyc2VkIHNwYW5zIHRvd2FyZHMgcG9zaXRpdmUgaW5maW5pdHkgd2hlblxuICAgICAgICAgICAgICAgICB0aGUgbmVhcmVzdCByb3VuZCBucyBhcmUgZXF1aWRpc3RhbnQuIEZvciBleGFtcGxlLCBcIjEuNW5zXCIgaXMgcmVhZCBhc1xuICAgICAgICAgICAgICAgICAyLjBucywgYW5kIFwiLTEuNW5zXCIgaXMgcmVhZCBhcyAtMW5zLiBTaW5jZSB3ZSByZWFkIGFic29sdXRlIHZhbHVlcyBiZWZvcmVcbiAgICAgICAgICAgICAgICAgYXBwbHlpbmcgdGhlIHNpZ24sIHdlIG11c3QgY2hvb3NlIG91ciByb3VuZGluZyBkaXJlY3Rpb24gYmFzZWQgb24gdGhlXG4gICAgICAgICAgICAgICAgIHNpZ24uIFJvdW5kaW5nIGRlY2ltYWwgdmFsdWVzIGhhcHBlbnMgYmVmb3JlIG5lZ2F0aW5nIHRoZWlyIG1hZ25pdHVkZS4gKilcbiAgICAgICAgICAgICAgbWF0Y2ggaXNfbmVnYXRpdmUgd2l0aFxuICAgICAgICAgICAgICB8IGZhbHNlIC0+IFRvd2FyZF9wb3NpdGl2ZV9pbmZpbml0eVxuICAgICAgICAgICAgICB8IHRydWUgLT4gVG93YXJkX25lZ2F0aXZlX2luZmluaXR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogTG9vcCBvdmVyIHBhcnRzLCBsaWtlIFwiNW1cIiBpbiBcIjFoNW0zMHNcIiAqKVxuICAgICAgICAgICAgd2hpbGUgIXBvcyA8IGxlbiBkb1xuICAgICAgICAgICAgICBsZXQgaGFzX2RpZ2l0ID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgICAgIGxldCBuZWdfaW50ZWdlciA9XG4gICAgICAgICAgICAgICAgbGV0IGkgPSByZWYgSW50NjMuemVybyBpblxuICAgICAgICAgICAgICAgIGxldCBlbmRfb2ZfZGlnaXRzID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgICAgICAgd2hpbGUgIXBvcyA8IGxlbiAmJiBub3QgIWVuZF9vZl9kaWdpdHMgZG9cbiAgICAgICAgICAgICAgICAgIGxldCBjID0gU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3MgaW5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICAgICAgICAgIGkgOj0gYWRkX25lZ19kaWdpdCB+c3RyaW5nICFpIGM7XG4gICAgICAgICAgICAgICAgICAgIGhhc19kaWdpdCA6PSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCAnXycgLT4gaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBlbmRfb2ZfZGlnaXRzIDo9IHRydWVcbiAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICFpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3BvcyA9ICFwb3MgaW5cbiAgICAgICAgICAgICAgaWYgIXBvcyA8IGxlbiAmJiBDaGFyLmVxdWFsICcuJyAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3MpXG4gICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgIGxldCBlbmRfb2ZfZGVjaW1hbHMgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICAgICAgICB3aGlsZSAhcG9zIDwgbGVuICYmIG5vdCAhZW5kX29mX2RlY2ltYWxzIGRvXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFzX2RpZ2l0IDo9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8ICdfJyAtPiBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCBfIC0+IGVuZF9vZl9kZWNpbWFscyA6PSB0cnVlXG4gICAgICAgICAgICAgICAgZG9uZSk7XG4gICAgICAgICAgICAgIGxldCBlbmRfcG9zID0gIXBvcyBpblxuICAgICAgICAgICAgICBpZiBub3QgIWhhc19kaWdpdFxuICAgICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwibm8gZGlnaXRzIGJlZm9yZSB1bml0IHN1ZmZpeFwiO1xuICAgICAgICAgICAgICBsZXQgdW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQgPVxuICAgICAgICAgICAgICAgIGlmICFwb3MgKyAxIDwgbGVuICYmIENoYXIuZXF1YWwgJ3MnIChTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgKCFwb3MgKyAxKSlcbiAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJ20nIC0+XG4gICAgICAgICAgICAgICAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgICAgICAgICAgICAgICAgTWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgJ3UnIC0+XG4gICAgICAgICAgICAgICAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgICAgICAgICAgICAgICAgTWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgJ24nIC0+XG4gICAgICAgICAgICAgICAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgICAgICAgICAgICAgICAgTmFub3NlY29uZFxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwidW5wYXJzZWFibGUgdW5pdCBzdWZmaXhcIilcbiAgICAgICAgICAgICAgICBlbHNlIGlmICFwb3MgPCBsZW5cbiAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJ2QnIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBEYXlcbiAgICAgICAgICAgICAgICAgIHwgJ2gnIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBIb3VyXG4gICAgICAgICAgICAgICAgICB8ICdtJyAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgTWludXRlXG4gICAgICAgICAgICAgICAgICB8ICdzJyAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgU2Vjb25kXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJ1bnBhcnNlYWJsZSB1bml0IHN1ZmZpeFwiKVxuICAgICAgICAgICAgICAgIGVsc2UgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJubyB1bml0IHN1ZmZpeCBhZnRlciBkaWdpdHNcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbmVnX25hbm9zX29mX3BhcnQgPVxuICAgICAgICAgICAgICAgIG5lZ2F0aXZlX3BhcnRcbiAgICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgICAgfm5lZ19pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICB+ZGVjaW1hbF9wb3NcbiAgICAgICAgICAgICAgICAgIH5lbmRfcG9zXG4gICAgICAgICAgICAgICAgICB+dW5pdF9vZl90aW1lXG4gICAgICAgICAgICAgICAgICB+cm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmdcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbmVnX25zIDo9IGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nICFuZWdfbnMgbmVnX25hbm9zX29mX3BhcnRcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBsZXQgbnMgPVxuICAgICAgICAgICAgICBpZiBpc19uZWdhdGl2ZVxuICAgICAgICAgICAgICB0aGVuICFuZWdfbnNcbiAgICAgICAgICAgICAgZWxzZSBpZiBJbnQ2My4oID0gKSAhbmVnX25zIEludDYzLm1pbl92YWx1ZVxuICAgICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCJcbiAgICAgICAgICAgICAgZWxzZSBJbnQ2My4oIH4tICkgIW5lZ19uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG9mX2ludDYzX25zIG5zXG4gICAgICAgICAgOztcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbGV0IG9mX3N0cmluZyA9IE9mX3N0cmluZy5vZl9zdHJpbmdcbiAgICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICAgIHwgU2V4cC5BdG9tIHggLT5cbiAgICAgICAgICAgICh0cnkgb2Zfc3RyaW5nIHggd2l0aFxuICAgICAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzZXhwKVxuICAgICAgICAgIHwgU2V4cC5MaXN0IF8gLT5cbiAgICAgICAgICAgIG9mX3NleHBfZXJyb3IgXCJUaW1lX25zLlNwYW4uU3RhYmxlLlYyLnRfb2Zfc2V4cDogc2V4cCBtdXN0IGJlIGFuIEF0b21cIiBzZXhwXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVDBcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVDApXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxub3BlbiBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IFN0YWJsZTBcbmVuZFxuXG5sZXQgdG9fc3RyaW5nID0gU3RhYmxlLlYyLnRvX3N0cmluZ1xubGV0IG9mX3N0cmluZyA9IFN0YWJsZS5WMi5vZl9zdHJpbmdcbmxldCBzZXhwX29mX3QgPSBTdGFibGUuVjIuc2V4cF9vZl90XG5sZXQgdF9vZl9zZXhwID0gU3RhYmxlLlYyLnRfb2Zfc2V4cFxubGV0IHRfc2V4cF9ncmFtbWFyID0gU3RhYmxlLlYyLnRfc2V4cF9ncmFtbWFyXG5cbm1vZHVsZSBBbHRlcm5hdGVfc2V4cCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG5lbmRcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbigqIEZ1bmN0aW9ucyByZXF1aXJlZCBieSBbUm9idXN0bHlfY29tcGFyYWJsZV06IGFsbG93cyBmb3IgW3JvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZV1cbiAgIGdyYW51bGFyaXR5LlxuXG4gICBBIG1pY3Jvc2Vjb25kIGlzIGEgcmVhc29uYWJsZSBncmFudWxhcml0eSBiZWNhdXNlIHRoZXJlIGlzIHZlcnkgbGl0dGxlIG5ldHdvcmtcbiAgIGFjdGl2aXR5IHRoYXQgY2FuIGJlIG1lYXN1cmVkIHRvIHN1Yi1taWNyb3NlY29uZCByZXNvbHV0aW9uLiAqKVxubGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IG1pY3Jvc2Vjb25kXG5sZXQgKCA+PS4gKSB0IHUgPSB0ID49IEludDYzLih1IC0gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPD0uICkgdCB1ID0gdCA8PSBJbnQ2My4odSArIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSlcbmxldCAoID0uICkgdCB1ID0gSW50NjMuKGFicyAodCAtIHUpKSA8PSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbmxldCAoID4uICkgdCB1ID0gdCA+IEludDYzLih1ICsgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPC4gKSB0IHUgPSB0IDwgSW50NjMuKHUgLSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA8Pi4gKSB0IHUgPSBJbnQ2My4oYWJzICh0IC0gdSkpID4gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG5sZXQgcm9idXN0bHlfY29tcGFyZSB0IHUgPSBpZiB0IDwuIHUgdGhlbiAtMSBlbHNlIGlmIHQgPi4gdSB0aGVuIDEgZWxzZSAwXG5cbigqIFdlIGRvbid0IGp1c3QgY29udmVydCB0byBbVGltZS5TcGFuLnRdIGFuZCB1c2UgdGhlIGNvbnZlcnNpb24gdGhlcmUgYmVjYXVzZSBvdXJcbiAgIFt0b19zcGFuXSBjb252ZXJzaW9uIGlzIGxpbWl0ZWQgdG8gbWljcm9zZWNvbmQgcHJlY2lzaW9uLiAqKVxubGV0IHRvX3N0cmluZ19odW1cbiAgICAgID8oZGVsaW1pdGVyID0gJ18nKVxuICAgICAgPyhkZWNpbWFscyA9IDMpXG4gICAgICA/KGFsaWduX2RlY2ltYWwgPSBmYWxzZSlcbiAgICAgID91bml0X29mX3RpbWVcbiAgICAgIHRcbiAgPVxuICBsZXQgZmxvYXQsIHN1ZmZpeCA9XG4gICAgbWF0Y2ggT3B0aW9uLnZhbHVlIHVuaXRfb2ZfdGltZSB+ZGVmYXVsdDoodG9fdW5pdF9vZl90aW1lIHQpIHdpdGhcbiAgICB8IERheSAtPiB0b19kYXkgdCwgXCJkXCJcbiAgICB8IEhvdXIgLT4gdG9faHIgdCwgXCJoXCJcbiAgICB8IE1pbnV0ZSAtPiB0b19taW4gdCwgXCJtXCJcbiAgICB8IFNlY29uZCAtPiB0b19zZWMgdCwgXCJzXCJcbiAgICB8IE1pbGxpc2Vjb25kIC0+IHRvX21zIHQsIFwibXNcIlxuICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdCwgXCJ1c1wiXG4gICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHQsIFwibnNcIlxuICBpblxuICBsZXQgcHJlZml4ID1cbiAgICBGbG9hdC50b19zdHJpbmdfaHVtIGZsb2F0IH5kZWxpbWl0ZXIgfmRlY2ltYWxzIH5zdHJpcF96ZXJvOihub3QgYWxpZ25fZGVjaW1hbClcbiAgaW5cbiAgbGV0IHN1ZmZpeCA9XG4gICAgaWYgYWxpZ25fZGVjaW1hbCAmJiBJbnQuKCA9ICkgKFN0cmluZy5sZW5ndGggc3VmZml4KSAxIHRoZW4gc3VmZml4IF4gXCIgXCIgZWxzZSBzdWZmaXhcbiAgaW5cbiAgcHJlZml4IF4gc3VmZml4XG47O1xuXG5sZXQgc2luY2VfdW5peF9lcG9jaCAoKSA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgfD4gb2ZfaW50NjNfbnNcblxubGV0IHJhbmRvbSA/c3RhdGUgKCkgPVxuICBJbnQ2My5yYW5kb20gP3N0YXRlIChtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyArIEludDYzLm9uZSlcbiAgLSBJbnQ2My5yYW5kb20gP3N0YXRlIChuZWcgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKyBJbnQ2My5vbmUpXG47O1xuXG5sZXQgcmFuZG9taXplID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCB+cGVyY2VudCA9XG4gIFNwYW5faGVscGVycy5yYW5kb21pemUgdCBzdGF0ZSB+cGVyY2VudCB+c2NhbGVcbjs7XG5cbmxldCB0b19zaG9ydF9zdHJpbmcgdCA9XG4gIGxldCAoeyBzaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfSA6IFBhcnRzLnQpID0gdG9fcGFydHMgdCBpblxuICBTcGFuX2hlbHBlcnMuc2hvcnRfc3RyaW5nIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnNcbjs7XG5cbmxldCBnZW5faW5jbCA9IEludDYzLmdlbl9pbmNsXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEludDYzLmdlbl91bmlmb3JtX2luY2xcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBtb2R1bGVfbmFtZVxuICBlbmQpXG5cbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIGVuZClcblxudHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdGFibGUuVjIuY29tcGFyYXRvcl93aXRuZXNzXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBTdGFibGUuVjIuY29tcGFyYXRvclxuICBlbmQpXG5cbigqIHJlLWluY2x1ZGUgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYW5kIGl0cyBjb21wYXJpc29ucyB0byBzaGFkb3cgdGhlXG4gICB1bi1pbmxpbmVhYmxlIG9uZXMgZnJvbSBbQ29tcGFyYWJsZV0gKilcbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBULlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGhhbGZfbWljcm9zZWNvbmQgPSBJbnQ2My5vZl9pbnQgNTAwXG5sZXQgbmVhcmVzdF9taWNyb3NlY29uZCB0ID0gSW50NjMuKCh0b19pbnQ2M19ucyB0ICsgaGFsZl9taWNyb3NlY29uZCkgLyUgb2ZfaW50IDEwMDApXG5cbmxldFtAY29sZF0gaW52YWxpZF9yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlNwYW4udCBleGNlZWRzIGxpbWl0c1wiXG4gICAgICAgICh0IDogdClcbiAgICAgICAgKG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIDogdClcbiAgICAgICAgKG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIDogdCldXG47O1xuXG5sZXQgY2hlY2tfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0ID1cbiAgaWYgdCA8IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIHx8IHQgPiBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuIGludmFsaWRfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0XG4gIGVsc2UgdFxuOztcblxubGV0IHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCB0ID1cbiAgU3Bhbl9mbG9hdC5vZl91cyAoSW50NjMudG9fZmxvYXQgKG5lYXJlc3RfbWljcm9zZWNvbmQgKGNoZWNrX3JhbmdlX2Zvcl8xdXNfcm91bmRpbmcgdCkpKVxuOztcblxubGV0IG1pbl9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBtYXhfc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID1cbiAgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG47O1xuXG5sZXQgb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHMgPVxuICBpZiBTcGFuX2Zsb2F0LiggPiApIHMgbWF4X3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB8fCBTcGFuX2Zsb2F0LiggPCApIHMgbWluX3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWVfbnMuU3BhbiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgc3BhblwiXG4gICAgICBzXG4gICAgICBbJXNleHBfb2Y6IFNwYW5fZmxvYXQudF07XG4gICgqIFVzaW5nIFtUaW1lLlNwYW4udG9fc2VjXSAoYmVpbmcgdGhlIGlkZW50aXR5KSBzbyB0aGF0XG4gICAgIHdlIG1ha2UgZG9uJ3QgYXBwbHkgdG9vIG1hbnkgY29udmVyc2lvblxuICAgICAtIFRvbyBtYW55IDogYFtTcGFuLnRdIC0+IFthXSAtPiBbdF1gXG4gICAgIC0gT25seSBPbmUgOiBgW1NwYW4udF09PVthXSAtPiBbdF1gLiAqKVxuICBvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXNpb24gKFNwYW5fZmxvYXQudG9fc2VjIHMpXG47O1xuXG5sZXQgbWluX3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9pbnQ2M19ucyBJbnQ2My5taW5fdmFsdWVcbmxldCBtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX2ludDYzX25zIEludDYzLm1heF92YWx1ZVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgb2ZfcGFydHMgPSBvZl9wYXJ0c1xuICBsZXQgdG9fcGFydHMgPSB0b19wYXJ0c1xuZW5kXG5cbigqIExlZ2FjeSBkZWZpbml0aW9ucyBiYXNlZCBvbiByb3VuZGluZyB0byB0aGUgbmVhcmVzdCBtaWNyb3NlY29uZC4gKilcbmxldCBtaW5fdmFsdWUgPSBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG1heF92YWx1ZSA9IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgb2Zfc3BhbiA9IG9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxubGV0IHRvX3NwYW4gPSB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICB0eXBlIHNwYW4gPSB0IFtAQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgdCA9IEludDYzLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuICAoKiBuYW5vc2Vjb25kcyBvciBub25lICopXG5cbiAgbGV0IG5vbmUgPSBJbnQ2My5taW5fdmFsdWVcbiAgbGV0IGlzX25vbmUgdCA9IEludDYzLih0ID0gbm9uZSlcbiAgbGV0IGlzX3NvbWUgdCA9IEludDYzLih0IDw+IG5vbmUpXG4gIGxldCBzb21lX2lzX3JlcHJlc2VudGFibGUgc3BhbiA9IGlzX3NvbWUgKHRvX2ludDYzX25zIHNwYW4pXG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9zb21lX2Vycm9yIHNwYW4gPVxuICAgIHJhaXNlX3MgWyVtZXNzYWdlIFslaGVyZV0gXCJTcGFuLk9wdGlvbi5zb21lIHZhbHVlIG5vdCByZXByZXNlbnRhYmxlXCIgKHNwYW4gOiBzcGFuKV1cbiAgOztcblxuICBsZXQgc29tZSBzcGFuID1cbiAgICBpZiBzb21lX2lzX3JlcHJlc2VudGFibGUgc3BhbiB0aGVuIHRvX2ludDYzX25zIHNwYW4gZWxzZSByYWlzZV9zb21lX2Vycm9yIHNwYW5cbiAgOztcblxuICBsZXQgdW5jaGVja2VkX3ZhbHVlIHQgPSBvZl9pbnQ2M19ucyB0XG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gQm9vbC5zZWxlY3QgKGlzX25vbmUgdCkgZGVmYXVsdCAodW5jaGVja2VkX3ZhbHVlIHQpXG5cbiAgbGV0IHZhbHVlX2V4biB0ID1cbiAgICBpZiBpc19zb21lIHRcbiAgICB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0XG4gICAgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBbJWhlcmVdIFwiU3Bhbi5PcHRpb24udmFsdWVfZXhuIG5vbmVcIl1cbiAgOztcblxuICBsZXQgb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gbm9uZVxuICAgIHwgU29tZSB0IC0+IHNvbWUgdFxuICA7O1xuXG4gIGxldCB0b19vcHRpb24gdCA9IGlmIGlzX25vbmUgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChvZl9pbnQ2M19ucyB0KVxuXG4gIG1vZHVsZSBGb3JfcXVpY2tjaGVjayA9IHN0cnVjdFxuICAgIG1vZHVsZSBTb21lID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzcGFuXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlciBxdWlja2NoZWNrX2dlbmVyYXRvciB+Zjpzb21lX2lzX3JlcHJlc2VudGFibGVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gcXVpY2tjaGVja19vYnNlcnZlclxuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgcXVpY2tjaGVja19zaHJpbmtlciB+Zjpzb21lX2lzX3JlcHJlc2VudGFibGVcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICB0eXBlIHQgPSBTb21lLnQgb3B0aW9uIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIGVuZFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOm9mX29wdGlvblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6dG9fb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyXG4gICAgICB+ZjpvZl9vcHRpb25cbiAgICAgIH5mX2ludmVyc2U6dG9fb3B0aW9uXG4gIDs7XG5cbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuY2hlY2tlZF92YWx1ZVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBiaW5faW9dXG5cbiAgICAgICAgbGV0IHYxX3NvbWUgc3BhbiA9XG4gICAgICAgICAgYXNzZXJ0IChzb21lX2lzX3JlcHJlc2VudGFibGUgc3Bhbik7XG4gICAgICAgICAgdG9faW50NjNfbnMgc3BhblxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cF9vZjogU3RhYmxlLlYxLnQgb3B0aW9uXSAodG9fb3B0aW9uIHQpXG4gICAgICAgIGxldCB0X29mX3NleHAgcyA9IG9mX29wdGlvbiAoWyVvZl9zZXhwOiBTdGFibGUuVjEudCBvcHRpb25dIHMpXG4gICAgICAgIGxldCBvZl9pbnQ2M19leG4gaSA9IGlmIGlzX25vbmUgaSB0aGVuIG5vbmUgZWxzZSB2MV9zb21lIChvZl9pbnQ2M19ucyBpKVxuICAgICAgICBsZXQgdG9faW50NjMgdCA9IHRcblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgICAgSW50NjMuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgICBvZl9pbnQ2M19leG5cbiAgICAgICAgICAgIHRvX2ludDYzXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGJpbl9pb11cblxuICAgICAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgICAgIFNleHAuTGlzdFxuICAgICAgICAgICAgKGlmIGlzX25vbmUgdCB0aGVuIFtdIGVsc2UgWyBTdGFibGUuVjIuc2V4cF9vZl90ICh1bmNoZWNrZWRfdmFsdWUgdCkgXSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIGxldCBmYWlsICgpID1cbiAgICAgICAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgICAgICAgXCJUaW1lX25zLlNwYW4uT3B0aW9uLlN0YWJsZS5WMi50X29mX3NleHA6IHNleHAgbXVzdCBiZSBhIExpc3Qgb2YgMC0xIEF0b21cIlxuICAgICAgICAgICAgICBzZXhwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgICB8IFNleHAuQXRvbSBfIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNleHAuTGlzdCBsaXN0IC0+XG4gICAgICAgICAgICAobWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgICAgICAgfCBbXSAtPiBub25lXG4gICAgICAgICAgICAgfCBbIFNleHAuQXRvbSB4IF0gLT5cbiAgICAgICAgICAgICAgIHNvbWVcbiAgICAgICAgICAgICAgICAgKHRyeSBvZl9zdHJpbmcgeCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgc2V4cClcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCAoKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgb2ZfaW50NjNfZXhuIGkgPSBpXG4gICAgICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuXG4gICAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBJbnQ2My5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICAgIG9mX2ludDYzX2V4blxuICAgICAgICAgICAgdG9faW50NjNcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFN0YWJsZS5WMi5zZXhwX29mX3RcbiAgbGV0IHRfb2Zfc2V4cCA9IFN0YWJsZS5WMi50X29mX3NleHBcblxuICBpbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGJpbl9pbywgaGFzaF1cblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWVfbnMuU3Bhbi5PcHRpb25cIlxuXG4gICAgICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBdXG4gICAgICAgIGVuZClcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSAoSW50NjMgOiBDb21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YWJsZTBcblxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gT3B0aW9uLlN0YWJsZS5WMVxuICAgIG1vZHVsZSBWMiA9IE9wdGlvbi5TdGFibGUuVjJcbiAgZW5kXG5lbmRcblxubGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgb2Zfc3RyaW5nXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTcGFuID0gU3Bhbl9uc1xuXG50eXBlIHVuZGVybHlpbmcgPSBJbnQ2My50XG50eXBlIHQgPSBTcGFuLnQgKCogc2luY2Ugd2FsbC1jbG9jayBtaWRuaWdodCAqKSBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5pbmNsdWRlIChTcGFuIDogUm9idXN0bHlfY29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG5cbmxldCB0b19wYXJ0cyB0ID0gU3Bhbi50b19wYXJ0cyB0XG5cblxubGV0IHN0YXJ0X29mX2RheSA6IHQgPSBTcGFuLnplcm9cbmxldCBzdGFydF9vZl9uZXh0X2RheSA6IHQgPSBTcGFuLmRheVxubGV0IGFwcHJveGltYXRlX2VuZF9vZl9kYXkgPSBTcGFuLiggLSApIHN0YXJ0X29mX25leHRfZGF5IFNwYW4ubmFub3NlY29uZFxubGV0IHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgPSB0XG5cbmxldFtAY29sZF0gaW5wdXRfb3V0X29mX2JvdW5kcyBzcGFuID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1lX25zLk9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4bjogaW5wdXQgb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgIH5fOihzcGFuIDogU3Bhbi50KV1cbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gaXNfaW52YWxpZCBzcGFuID1cbiAgKCogV2h5IHdlIHVzZSBbU3Bhbi4oID4gKV0gcmF0aGVyIHRoYW4gWyggPj0gKV0gYmVsb3c6XG5cbiAgICAgV2UgYWxsb3cgdG8gcmVwcmVzZW50IHRoZSBlbmQtb2YtZGF5IHNlbnRpbmVsIHZhbHVlIChbMjQuMDAwMDAwMDAwaF0pLCB3aGljaCBpcyBub3RcbiAgICAgaXRzZWxmIGEgdmFsaWQgY2xvY2sgZmFjZSB0aW1lLiAgSG93ZXZlciwgc2luY2UgdmFsaWQgY2xvY2sgZmFjZSB0aW1lcyByZWFkaWx5XG4gICAgIHJvdW5kIHVwIHRvIGl0LCBpdCdzIGJldHRlciB0byBhbGxvdyBpdCB0byBiZSByZXByZXNlbnRlZC4gKilcbiAgU3Bhbi4oIDwgKSBzcGFuIHN0YXJ0X29mX2RheSB8fCBTcGFuLiggPiApIHNwYW4gc3RhcnRfb2ZfbmV4dF9kYXlcbjs7XG5cbmxldCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9pc192YWxpZCBzcGFuID0gbm90IChpc19pbnZhbGlkIHNwYW4pXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfdW5jaGVja2VkIHNwYW4gPSBzcGFuXG5cbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gc3BhbiA9XG4gIGlmIGlzX2ludmFsaWQgc3BhbiB0aGVuIGlucHV0X291dF9vZl9ib3VuZHMgc3BhbiBlbHNlIHNwYW5cbjs7XG5cbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgc3BhbiA9IGlmIGlzX2ludmFsaWQgc3BhbiB0aGVuIE5vbmUgZWxzZSBTb21lIHNwYW5cbmxldCBhZGRfZXhuIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi4oICsgKSB0IHNwYW4pXG5sZXQgc3ViX2V4biB0IHNwYW4gPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uKCAtICkgdCBzcGFuKVxubGV0IGFkZCB0IHNwYW4gPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4uKCArICkgdCBzcGFuKVxubGV0IHN1YiB0IHNwYW4gPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4uKCAtICkgdCBzcGFuKVxubGV0IG5leHQgdCA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi5uZXh0IHQpXG5sZXQgcHJldiB0ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IChTcGFuLnByZXYgdClcbmxldCBkaWZmIHQgdSA9IFNwYW4uKCAtICkgdCB1XG5cbmxldCBjcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSA9XG4gICgqIFNpbWlsYXIgdG8gW1RpbWUuT2ZkYXkuY3JlYXRlXSwgaWYgd2UgZGV0ZWN0IGEgbGVhcCBzZWNvbmQgd2Ugc3RyaXAgb2ZmIGFsbFxuICAgICBzdWItc2Vjb25kIGVsZW1lbnRzIHNvIHRoYXQgSEg6TU06NjAuWFhYWFhYWFhYIGlzIGFsbCBtYXBwZWQgdG8gSEg6TU06NjAuICopXG4gIGxldCBtcywgdXMsIG5zID1cbiAgICBtYXRjaCBzZWMgd2l0aFxuICAgIHwgU29tZSA2MCAtPiBTb21lIDAsIFNvbWUgMCwgU29tZSAwXG4gICAgfCBfIC0+IG1zLCB1cywgbnNcbiAgaW5cbiAgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpKVxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxuICBtb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU3Bhbi5TdGFibGUuVjIudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgKFxuICAgICAgU3Bhbi5TdGFibGUuVjIgOlxuICAgICAgICBDb21wYXJhdG9yLlNcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTcGFuLlN0YWJsZS5WMi5jb21wYXJhdG9yX3dpdG5lc3MpXG5cbiAgICBsZXQgdG9fc3RyaW5nX3dpdGhfdW5pdCA9XG4gICAgICBsZXQgKCAvICkgPSBJbnQ2My4oIC8gKSBpblxuICAgICAgbGV0ICggbW9kICkgPSBJbnQ2My5yZW0gaW5cbiAgICAgIGxldCAoICEgKSA9IEludDYzLm9mX2ludCBpblxuICAgICAgbGV0IGkgPSBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICBmdW4gdCB+dW5pdCAtPlxuICAgICAgICBpZiBTcGFuLiggPCApIHQgc3RhcnRfb2ZfZGF5IHx8IFNwYW4uKCA8ICkgc3RhcnRfb2ZfbmV4dF9kYXkgdFxuICAgICAgICB0aGVuIFwiSW5jb3JyZWN0IGRheVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBzaXh0eSA9ICE2MCBpblxuICAgICAgICAgIGxldCB0aG91c2FuZCA9ICExMDAwIGluXG4gICAgICAgICAgbGV0IG5zID0gU3Bhbi50b19pbnQ2M19ucyB0IGluXG4gICAgICAgICAgbGV0IHVzID0gbnMgLyB0aG91c2FuZCBpblxuICAgICAgICAgIGxldCBucyA9IG5zIG1vZCB0aG91c2FuZCB8PiBpIGluXG4gICAgICAgICAgbGV0IG1zID0gdXMgLyB0aG91c2FuZCBpblxuICAgICAgICAgIGxldCB1cyA9IHVzIG1vZCB0aG91c2FuZCB8PiBpIGluXG4gICAgICAgICAgbGV0IHMgPSBtcyAvIHRob3VzYW5kIGluXG4gICAgICAgICAgbGV0IG1zID0gbXMgbW9kIHRob3VzYW5kIHw+IGkgaW5cbiAgICAgICAgICBsZXQgbSA9IHMgLyBzaXh0eSBpblxuICAgICAgICAgIGxldCBzID0gcyBtb2Qgc2l4dHkgfD4gaSBpblxuICAgICAgICAgIGxldCBoID0gbSAvIHNpeHR5IHw+IGkgaW5cbiAgICAgICAgICBsZXQgbSA9IG0gbW9kIHNpeHR5IHw+IGkgaW5cbiAgICAgICAgICBsZXQgdW5pdCA9XG4gICAgICAgICAgICBtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgIHwgKGBOYW5vc2Vjb25kIHwgYE1pY3Jvc2Vjb25kIHwgYE1pbGxpc2Vjb25kIHwgYFNlY29uZCkgYXMgdW5pdCAtPiB1bml0XG4gICAgICAgICAgICB8IGBNaW51dGVfb3JfbGVzcyAtPlxuICAgICAgICAgICAgICBpZiBucyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiB1cyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbXMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIHMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBTZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBgTWludXRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGVuID1cbiAgICAgICAgICAgIG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgfCBgTWludXRlIC0+IDVcbiAgICAgICAgICAgIHwgYFNlY29uZCAtPiA4XG4gICAgICAgICAgICB8IGBNaWxsaXNlY29uZCAtPiAxMlxuICAgICAgICAgICAgfCBgTWljcm9zZWNvbmQgLT4gMTVcbiAgICAgICAgICAgIHwgYE5hbm9zZWNvbmQgLT4gMThcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6MCBoO1xuICAgICAgICAgIEJ5dGVzLnNldCBzdHIgMiAnOic7XG4gICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6MyBtO1xuICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgfCBgTWludXRlIC0+ICgpXG4gICAgICAgICAgIHwgKGBTZWNvbmQgfCBgTWlsbGlzZWNvbmQgfCBgTWljcm9zZWNvbmQgfCBgTmFub3NlY29uZCkgYXMgdW5pdCAtPlxuICAgICAgICAgICAgIEJ5dGVzLnNldCBzdHIgNSAnOic7XG4gICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6NiBzO1xuICAgICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgICAgfCBgU2Vjb25kIC0+ICgpXG4gICAgICAgICAgICAgIHwgKGBNaWxsaXNlY29uZCB8IGBNaWNyb3NlY29uZCB8IGBOYW5vc2Vjb25kKSBhcyB1bml0IC0+XG4gICAgICAgICAgICAgICAgQnl0ZXMuc2V0IHN0ciA4ICcuJztcbiAgICAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8zX2RpZ2l0X2ludCBzdHIgfnBvczo5IG1zO1xuICAgICAgICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgTWlsbGlzZWNvbmQgLT4gKClcbiAgICAgICAgICAgICAgICAgfCAoYE1pY3Jvc2Vjb25kIHwgYE5hbm9zZWNvbmQpIGFzIHVuaXQgLT5cbiAgICAgICAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8zX2RpZ2l0X2ludCBzdHIgfnBvczoxMiB1cztcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgYE1pY3Jvc2Vjb25kIC0+ICgpXG4gICAgICAgICAgICAgICAgICAgIHwgYE5hbm9zZWNvbmQgLT4gRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfM19kaWdpdF9pbnQgc3RyIH5wb3M6MTUgbnMpKSkpO1xuICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6c3RyKVxuICAgIDs7XG5cbiAgICBsZXQgcGFyc2VfbmFub3NlY29uZHMgc3RyaW5nIH5wb3MgfnVudGlsID1cbiAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICBsZXQgZGlnaXRzID0gcmVmIDAgaW5cbiAgICAgIGxldCBudW1fZGlnaXRzID0gcmVmIDAgaW5cbiAgICAgIGxldCBwb3MgPSByZWYgcG9zIGluXG4gICAgICAoKiByZWFkIHVwIHRvIDEwIGRpZ2l0czsgc3RvcmUgdGhlIGZpcnN0IDksIHVzZSB0aGUgMTB0aCB0byByb3VuZCAqKVxuICAgICAgd2hpbGUgIXBvcyA8IHVudGlsICYmICFudW1fZGlnaXRzIDwgMTAgZG9cbiAgICAgICAgbGV0IGMgPSBzdHJpbmcuWyFwb3NdIGluXG4gICAgICAgIGlmIENoYXIuaXNfZGlnaXQgY1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICBpbmNyIG51bV9kaWdpdHM7XG4gICAgICAgICAgaWYgIW51bV9kaWdpdHMgPCAxMFxuICAgICAgICAgIHRoZW4gZGlnaXRzIDo9ICghZGlnaXRzICogMTApICsgQ2hhci5nZXRfZGlnaXRfZXhuIGNcbiAgICAgICAgICBlbHNlIGlmIENoYXIuZ2V0X2RpZ2l0X2V4biBjID49IDVcbiAgICAgICAgICB0aGVuIGluY3IgZGlnaXRzXG4gICAgICAgICAgZWxzZSAoKSk7XG4gICAgICAgIGluY3IgcG9zXG4gICAgICBkb25lO1xuICAgICAgKCogaWYgdGhlcmUgYXJlIG1pc3NpbmcgZGlnaXRzLCBhZGQgemVyb2VzICopXG4gICAgICBpZiAhbnVtX2RpZ2l0cyA8IDkgdGhlbiBkaWdpdHMgOj0gIWRpZ2l0cyAqIEludC5wb3cgMTAgKDkgLSAhbnVtX2RpZ2l0cyk7XG4gICAgICAhZGlnaXRzXG4gICAgOztcblxuICAgIGxldCBjcmVhdGVfZnJvbV9wYXJzZWQgc3RyaW5nIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW4gPVxuICAgICAgbGV0IG5hbm9zZWNvbmRzID1cbiAgICAgICAgaWYgSW50LmVxdWFsIHN1YnNlY19sZW4gMFxuICAgICAgICB0aGVuIDBcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHBhcnNlX25hbm9zZWNvbmRzIHN0cmluZyB+cG9zOihzdWJzZWNfcG9zICsgMSkgfnVudGlsOihzdWJzZWNfcG9zICsgc3Vic2VjX2xlbilcbiAgICAgIGluXG4gICAgICBTcGFuLm9mX2ludDYzX25zIChJbnQ2My5vZl9pbnQgbmFub3NlY29uZHMpXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLnNlY29uZCBzZWMpXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLm1pbnV0ZSBtaW4pXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLmhvdXIgaHIpXG4gICAgICB8PiBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPSBPZmRheV9oZWxwZXJzLnBhcnNlIHN0cmluZyB+ZjpjcmVhdGVfZnJvbV9wYXJzZWRcblxuICAgIGxldCB0X29mX3NleHAgc2V4cCA6IHQgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJleHBlY3RlZCBhbiBhdG9tXCIgc2V4cFxuICAgICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgbGV0IG9wZW4gU2V4cGxpYiBpblxuICAgICAgU2V4cF9ncmFtbWFyLnRhZ1xuICAgICAgICAoU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXIgOiB0IFNleHBfZ3JhbW1hci50KVxuICAgICAgICB+a2V5OlNleHBfZ3JhbW1hci50eXBlX25hbWVfdGFnXG4gICAgICAgIH52YWx1ZTooQXRvbSBcIkNvcmUuVGltZV9ucy5PZmRheS50XCIpXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmcgKHQgOiB0KSA9IHRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTmFub3NlY29uZFxuICAgIGxldCBzZXhwX29mX3QgKHQgOiB0KSA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4gICAgbGV0IHRvX2ludDYzIHQgPSBTcGFuX25zLlN0YWJsZS5WMi50b19pbnQ2MyB0XG4gICAgbGV0IG9mX2ludDYzX2V4biB0ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuX25zLlN0YWJsZS5WMi5vZl9pbnQ2M19leG4gdClcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoXG4gIFN0YWJsZS5WMSA6XG4gICAgQ29tcGFyYXRvci5TXG4gIHdpdGggdHlwZSB0IDo9IHRcbiAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3MpXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgdHlwZSB0ID0gU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBTdGFibGUuVjEgOlxuICAgICAgICBDb21wYXJhdG9yLlNcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdGFibGUuVjEuY29tcGFyYXRvcl93aXRuZXNzKVxuXG4gICAgaW5jbHVkZSAoU3RhYmxlLlYxIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZV9ucy5PZmRheVwiXG4gIGVuZClcblxubGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0YWJsZS5WMS50X3NleHBfZ3JhbW1hclxubGV0IHRvX21pY3Jvc2Vjb25kX3N0cmluZyB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTWljcm9zZWNvbmRcbmxldCB0b19taWxsaXNlY29uZF9zdHJpbmcgdCA9IFN0YWJsZS5WMS50b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YE1pbGxpc2Vjb25kXG5sZXQgdG9fc2VjX3N0cmluZyB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgU2Vjb25kXG5sZXQgdG9fc3RyaW5nX3RyaW1tZWQgdCA9IFN0YWJsZS5WMS50b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YE1pbnV0ZV9vcl9sZXNzXG5cbmxldCBvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyID1cbiAgdHJ5XG4gICAgT2ZkYXlfaGVscGVycy5wYXJzZV9pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgfmY6U3RhYmxlLlYxLmNyZWF0ZV9mcm9tX3BhcnNlZFxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltZV9ucy5PZmRheS5vZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZDogY2Fubm90IHBhcnNlIHN0cmluZ1wiXG4gICAgICAgICAgfl86KFN0cmluZy5zdWJvIHN0ciA/cG9zID9sZW4gOiBzdHJpbmcpXG4gICAgICAgICAgfl86KGV4biA6IGV4bildXG47O1xuXG5sZXQgZXZlcnkgPVxuICBsZXQgcmVjIGV2ZXJ5X3ZhbGlkX29mZGF5X3NwYW4gc3BhbiB+c3RhcnQgfnN0b3AgfmFjYyA9XG4gICAgKCogQXNzdW1lcyBbc3Bhbl0sIFtzdGFydF0sIGFuZCBbc3RvcF0gYXJlIHZhbGlkIG9mZGF5cy4gQXNzdW1lcyBbc3RhcnQgPCBzdG9wXS5cbiAgICAgICBBc3N1bWVzIFtzcGFuID4gMF0uICopXG4gICAgbGV0IGFjYyA9IHN0YXJ0IDo6IGFjYyBpblxuICAgIGxldCBzdGFydCA9IFNwYW4uKCArICkgc3RhcnQgc3BhbiBpblxuICAgIGlmIFNwYW4uKCA+ICkgc3RhcnQgc3RvcCAoKiBjYW5ub3Qgb3ZlcmZsb3cgKilcbiAgICB0aGVuIExpc3QucmV2IGFjY1xuICAgIGVsc2UgZXZlcnlfdmFsaWRfb2ZkYXlfc3BhbiBzcGFuIH5zdGFydCB+c3RvcCB+YWNjXG4gIGluXG4gICgqIGludGVybmFsIFtldmVyeV0gbmFtZWQgdG8gc2hvdyB1cCBpbiBzdGFjayB0cmFjZXMgKilcbiAgbGV0IGV2ZXJ5IHNwYW4gfnN0YXJ0IH5zdG9wID1cbiAgICBpZiBTcGFuLiggPiApIHN0YXJ0IHN0b3BcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW1RpbWVfbnMuT2ZkYXkuZXZlcnldIGNhbGxlZCB3aXRoIFtzdGFydF0gPiBbc3RvcF1cIiAoc3RhcnQgOiB0KSAoc3RvcCA6IHQpXVxuICAgIGVsc2UgaWYgU3Bhbi4oIDw9ICkgc3BhbiBTcGFuLnplcm9cbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIFslbWVzc2FnZSBcIltUaW1lX25zLk9mZGF5LmV2ZXJ5XSBjYWxsZWQgd2l0aCBuZWdhdGl2ZSBzcGFuXCIgfl86KHNwYW4gOiBTcGFuLnQpXVxuICAgIGVsc2UgaWYgaXNfaW52YWxpZCBzcGFuXG4gICAgdGhlbiBPayBbIHN0YXJ0IF1cbiAgICBlbHNlIE9rIChldmVyeV92YWxpZF9vZmRheV9zcGFuIHNwYW4gfnN0YXJ0IH5zdG9wIH5hY2M6W10pXG4gIGluXG4gIGV2ZXJ5XG47O1xuXG5sZXQgc21hbGxfZGlmZiA9XG4gIGxldCBob3VyID0gU3Bhbi50b19pbnQ2M19ucyBTcGFuLmhvdXIgaW5cbiAgZnVuIG9mZGF5MSBvZmRheTIgLT5cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IG9mZGF5MSA9IFNwYW4udG9faW50NjNfbnMgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MSkgaW5cbiAgICBsZXQgb2ZkYXkyID0gU3Bhbi50b19pbnQ2M19ucyAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkyKSBpblxuICAgIGxldCBkaWZmID0gb2ZkYXkxIC0gb2ZkYXkyIGluXG4gICAgKCogIGQxIGlzIGluICgtaG91cjsgaG91cikgKilcbiAgICBsZXQgZDEgPSBJbnQ2My5yZW0gZGlmZiBob3VyIGluXG4gICAgKCogIGQyIGlzIGluICgwO2hvdXIpICopXG4gICAgbGV0IGQyID0gSW50NjMucmVtIChkMSArIGhvdXIpIGhvdXIgaW5cbiAgICBsZXQgZCA9IGlmIGQyID4gaG91ciAvIEludDYzLm9mX2ludCAyIHRoZW4gZDIgLSBob3VyIGVsc2UgZDIgaW5cbiAgICBTcGFuLm9mX2ludDYzX25zIGRcbjs7XG5cbmxldCVleHBlY3RfdGVzdCBcInNtYWxsX2RpZmZcIiA9XG4gIGxldCB0ZXN0IHggeSA9XG4gICAgbGV0IGRpZmYgPSBzbWFsbF9kaWZmIHggeSBpblxuICAgIHByaW50ZiAhXCJzbWFsbF9kaWZmICVzICVzID0gJXNcXG5cIiAodG9fc3RyaW5nIHgpICh0b19zdHJpbmcgeSkgKFNwYW4udG9fc3RyaW5nIGRpZmYpXG4gIGluXG4gIGxldCBleGFtcGxlcyA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gKHgsIHkpIC0+IG9mX3N0cmluZyB4LCBvZl9zdHJpbmcgeSlcbiAgICAgIFsgXCIxMjowMFwiLCBcIjEyOjA1XCI7IFwiMTI6NThcIiwgXCIxMzowMlwiOyBcIjAwOjUyXCIsIFwiMjM6MTlcIjsgXCIwMDowMFwiLCBcIjI0OjAwXCIgXVxuICBpblxuICBMaXN0Lml0ZXIgZXhhbXBsZXMgfmY6KGZ1biAoeCwgeSkgLT5cbiAgICB0ZXN0IHggeTtcbiAgICB0ZXN0IHkgeCk7XG4gIFslZXhwZWN0XG4gICAge3xcbiAgICBzbWFsbF9kaWZmIDEyOjAwOjAwLjAwMDAwMDAwMCAxMjowNTowMC4wMDAwMDAwMDAgPSAtNW1cbiAgICBzbWFsbF9kaWZmIDEyOjA1OjAwLjAwMDAwMDAwMCAxMjowMDowMC4wMDAwMDAwMDAgPSA1bVxuICAgIHNtYWxsX2RpZmYgMTI6NTg6MDAuMDAwMDAwMDAwIDEzOjAyOjAwLjAwMDAwMDAwMCA9IC00bVxuICAgIHNtYWxsX2RpZmYgMTM6MDI6MDAuMDAwMDAwMDAwIDEyOjU4OjAwLjAwMDAwMDAwMCA9IDRtXG4gICAgc21hbGxfZGlmZiAwMDo1MjowMC4wMDAwMDAwMDAgMjM6MTk6MDAuMDAwMDAwMDAwID0gLTI3bVxuICAgIHNtYWxsX2RpZmYgMjM6MTk6MDAuMDAwMDAwMDAwIDAwOjUyOjAwLjAwMDAwMDAwMCA9IDI3bVxuICAgIHNtYWxsX2RpZmYgMDA6MDA6MDAuMDAwMDAwMDAwIDI0OjAwOjAwLjAwMDAwMDAwMCA9IDBzXG4gICAgc21hbGxfZGlmZiAyNDowMDowMC4wMDAwMDAwMDAgMDA6MDA6MDAuMDAwMDAwMDAwID0gMHMgfH1dXG47O1xuXG5sZXQgZ2VuX2luY2wgPSBTcGFuLmdlbl9pbmNsXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IFNwYW4uZ2VuX3VuaWZvcm1faW5jbFxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuX2luY2wgc3RhcnRfb2ZfZGF5IHN0YXJ0X29mX25leHRfZGF5XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IFNwYW4ucXVpY2tjaGVja19vYnNlcnZlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBRdWlja2NoZWNrLlNocmlua2VyLmVtcHR5ICgpXG5cbmluY2x1ZGUgKFNwYW4gOiBDb21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHQpXG5cbigqIGRlcHJlY2F0ZWQgYmluZGluZ3MgKilcbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxubGV0IHRvX21pbGxpc2VjX3N0cmluZyA9IHRvX21pbGxpc2Vjb25kX3N0cmluZ1xubGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBub3cgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG9mX29mZGF5X2Zsb2F0X3JvdW5kX25lYXJlc3QgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG9mX29mZGF5X2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX29mZGF5X2Zsb2F0X3JvdW5kX25lYXJlc3QgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX29mZGF5X2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgPSBgVXNlX1RpbWVfbnNfdW5peFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxubW9kdWxlIFpvbmVkID0gc3RydWN0IGVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplX2luX2JpdHMgPSA2NFxuXG5tb2R1bGUgU3BhbiA9IFNwYW5fbnNcbm1vZHVsZSBPZmRheSA9IE9mZGF5X25zXG5cbnR5cGUgdCA9IFNwYW4udCAoKiBzaW5jZSB0aGUgVW5peCBlcG9jaCAoMTk3MC0wMS0wMSAwMDowMDowMCBVVEMpICopXG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50ID0gU3Bhbi5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50XG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnRcbmluY2x1ZGUgKFNwYW4gOiBRdWlja2NoZWNrLlNfcmFuZ2Ugd2l0aCB0eXBlIHQgOj0gdClcblxubGV0IG5vdyA9IFNwYW4uc2luY2VfdW5peF9lcG9jaFxubGV0IGVxdWFsID0gU3Bhbi5lcXVhbFxubGV0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gU3Bhbi5taW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gU3Bhbi5tYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IGVwb2NoID0gU3Bhbi56ZXJvXG5sZXQgYWRkID0gU3Bhbi4oICsgKVxubGV0IHN1YiA9IFNwYW4uKCAtIClcbmxldCBkaWZmID0gU3Bhbi4oIC0gKVxubGV0IGFic19kaWZmIHQgdSA9IFNwYW4uYWJzIChkaWZmIHQgdSlcbmxldCBtYXggPSBTcGFuLm1heFxubGV0IG1pbiA9IFNwYW4ubWluXG5sZXQgbmV4dCA9IFNwYW4ubmV4dFxubGV0IHByZXYgPSBTcGFuLnByZXZcbmxldCB0b19zcGFuX3NpbmNlX2Vwb2NoIHQgPSB0XG5sZXQgb2Zfc3Bhbl9zaW5jZV9lcG9jaCBzID0gc1xubGV0IHRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIHQgOiBJbnQ2My50ID0gU3Bhbi50b19pbnQ2M19ucyAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KVxubGV0W0BpbmxpbmVdIG9mX2ludDYzX25zX3NpbmNlX2Vwb2NoIGkgPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIChTcGFuLm9mX2ludDYzX25zIGkpXG5sZXRbQGNvbGRdIG92ZXJmbG93ICgpID0gcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX25zOiBvdmVyZmxvd1wiXVxubGV0IGlzX2VhcmxpZXIgdDEgfnRoYW46dDIgPSB0MSA8IHQyXG5sZXQgaXNfbGF0ZXIgdDEgfnRoYW46dDIgPSB0MSA+IHQyXG5cbmxldCBhZGRfb3ZlcmZsb3dlZCB4IHkgfnN1bSA9XG4gIGlmIFNwYW4uKCA+ICkgeSBTcGFuLnplcm8gdGhlbiBTcGFuLiggPCApIHN1bSB4IGVsc2UgU3Bhbi4oID4gKSBzdW0geFxuOztcblxubGV0IHN1Yl9vdmVyZmxvd2VkIHggeSB+ZGlmZiA9XG4gIGlmIFNwYW4uKCA+ICkgeSBTcGFuLnplcm8gdGhlbiBTcGFuLiggPiApIGRpZmYgeCBlbHNlIFNwYW4uKCA8ICkgZGlmZiB4XG47O1xuXG5sZXQgYWRkX2V4biB4IHkgPVxuICBsZXQgc3VtID0gYWRkIHggeSBpblxuICBpZiBhZGRfb3ZlcmZsb3dlZCB4IHkgfnN1bSB0aGVuIG92ZXJmbG93ICgpIGVsc2Ugc3VtXG47O1xuXG5sZXQgc3ViX2V4biB4IHkgPVxuICBsZXQgZGlmZiA9IHN1YiB4IHkgaW5cbiAgaWYgc3ViX292ZXJmbG93ZWQgeCB5IH5kaWZmIHRoZW4gb3ZlcmZsb3cgKCkgZWxzZSBkaWZmXG47O1xuXG5sZXQgYWRkX3NhdHVyYXRpbmcgeCB5ID1cbiAgbGV0IHN1bSA9IGFkZCB4IHkgaW5cbiAgaWYgYWRkX292ZXJmbG93ZWQgeCB5IH5zdW1cbiAgdGhlblxuICAgIGlmIFNwYW4uKHkgPiB6ZXJvKSB0aGVuIFNwYW4ubWF4X3ZhbHVlX3JlcHJlc2VudGFibGUgZWxzZSBTcGFuLm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlXG4gIGVsc2Ugc3VtXG47O1xuXG5sZXQgc3ViX3NhdHVyYXRpbmcgeCB5ID1cbiAgbGV0IGRpZmYgPSBzdWIgeCB5IGluXG4gIGlmIHN1Yl9vdmVyZmxvd2VkIHggeSB+ZGlmZlxuICB0aGVuXG4gICAgaWYgU3Bhbi4oeSA+IHplcm8pIHRoZW4gU3Bhbi5taW5fdmFsdWVfcmVwcmVzZW50YWJsZSBlbHNlIFNwYW4ubWF4X3ZhbHVlX3JlcHJlc2VudGFibGVcbiAgZWxzZSBkaWZmXG47O1xuXG5sZXQgdG9faW50X25zX3NpbmNlX2Vwb2NoID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gdCAtPiBJbnQ2My50b19pbnRfZXhuICh0b19pbnQ2M19uc19zaW5jZV9lcG9jaCB0KVxuICBlbHNlIGZ1biBfIC0+IGZhaWx3aXRoIFwiVGltZV9ucy50b19pbnRfbnNfc2luY2VfZXBvY2g6IHVuc3VwcG9ydGVkIG9uIDMyYml0IG1hY2hpbmVzXCJcbjs7XG5cbmxldCBvZl9pbnRfbnNfc2luY2VfZXBvY2ggaSA9IG9mX2ludDYzX25zX3NpbmNlX2Vwb2NoIChJbnQ2My5vZl9pbnQgaSlcblxubGV0IHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCB0ID1cbiAgVGltZV9mbG9hdC5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0ICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpKVxuOztcblxubGV0IHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCB0ID1cbiAgVGltZV9mbG9hdC5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpKVxuOztcblxubGV0IG1pbl90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBtYXhfdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID1cbiAgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG47O1xuXG5sZXQgY2hlY2tfYmVmb3JlX2NvbnZlcnNpb25fZm9yXzF1c19yb3VuZGluZyB0aW1lID1cbiAgaWYgVGltZV9mbG9hdC4oIDwgKSB0aW1lIG1pbl90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbiAgfHwgVGltZV9mbG9hdC4oID4gKSB0aW1lIG1heF90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJUaW1lX25zIGRvZXMgbm90IHN1cHBvcnQgdGhpcyB0aW1lXCJcbiAgICAgIHRpbWVcbiAgICAgIFslc2V4cF9vZjogVGltZV9mbG9hdC5TdGFibGUuV2l0aF91dGNfc2V4cC5WMi50XVxuOztcblxubGV0IG9mX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCB0aW1lID1cbiAgb2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIChTcGFuLm9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCAoVGltZV9mbG9hdC50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUpKVxuOztcblxubGV0IG9mX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCB0aW1lID1cbiAgY2hlY2tfYmVmb3JlX2NvbnZlcnNpb25fZm9yXzF1c19yb3VuZGluZyB0aW1lO1xuICBvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4ub2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIChUaW1lX2Zsb2F0LnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSkpXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX25leHRfbXVsdGlwbGVfZ290X25vbnBvc2l0aXZlX2ludGVydmFsIGludGVydmFsID1cbiAgZmFpbHdpdGhzXG4gICAgfmhlcmU6WyVoZXJlXVxuICAgIFwiVGltZV9ucy5uZXh0X211bHRpcGxlIGdvdCBub25wb3NpdGl2ZSBpbnRlcnZhbFwiXG4gICAgaW50ZXJ2YWxcbiAgICBbJXNleHBfb2Y6IFNwYW4udF1cbjs7XG5cbmxldCBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCA9XG4gIGlmIFNwYW4uKCA8PSApIGludGVydmFsIFNwYW4uemVyb1xuICB0aGVuIHJhaXNlX25leHRfbXVsdGlwbGVfZ290X25vbnBvc2l0aXZlX2ludGVydmFsIGludGVydmFsO1xuICBsZXQgYmFzZV90b19hZnRlciA9IGRpZmYgYWZ0ZXIgYmFzZSBpblxuICBpZiBTcGFuLiggPCApIGJhc2VfdG9fYWZ0ZXIgU3Bhbi56ZXJvXG4gIHRoZW4gYmFzZSAoKiBbYWZ0ZXIgPCBiYXNlXSwgY2hvb3NlIFtrID0gMF0uICopXG4gIGVsc2UgKFxuICAgIGxldCBuZXh0ID0gYWRkIGJhc2UgKFNwYW4uc2NhbGVfaW50NjMgaW50ZXJ2YWwgKFNwYW4uZGl2IGJhc2VfdG9fYWZ0ZXIgaW50ZXJ2YWwpKSBpblxuICAgIGlmIG5leHQgPiBhZnRlciB8fCAoY2FuX2VxdWFsX2FmdGVyICYmIG5leHQgPSBhZnRlcikgdGhlbiBuZXh0IGVsc2UgYWRkIG5leHQgaW50ZXJ2YWwpXG47O1xuXG5sZXQgbmV4dF9tdWx0aXBsZSA/KGNhbl9lcXVhbF9hZnRlciA9IGZhbHNlKSB+YmFzZSB+YWZ0ZXIgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWxcbjs7XG5cbmxldCBwcmV2X211bHRpcGxlID8oY2FuX2VxdWFsX2JlZm9yZSA9IGZhbHNlKSB+YmFzZSB+YmVmb3JlIH5pbnRlcnZhbCAoKSA9XG4gIG5leHRfbXVsdGlwbGVfaW50ZXJuYWxcbiAgICB+Y2FuX2VxdWFsX2FmdGVyOihub3QgY2FuX2VxdWFsX2JlZm9yZSlcbiAgICB+YmFzZVxuICAgIH5hZnRlcjooc3ViIGJlZm9yZSBpbnRlcnZhbClcbiAgICB+aW50ZXJ2YWxcbjs7XG5cbmxldCByYW5kb20gP3N0YXRlICgpID0gU3Bhbi5yYW5kb20gP3N0YXRlICgpXG5cbm1vZHVsZSBVdGMgOiBzaWdcbiAgdmFsIHRvX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IDogdCAtPiBEYXRlMC50ICogU3Bhbi50XG4gIHZhbCBvZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA6IERhdGUwLnQgLT4gU3Bhbi50IC0+IHRcbmVuZCA9IHN0cnVjdFxuICAoKiBhIHJlY3JlYXRpb24gb2YgdGhlIHN5c3RlbSBjYWxsIGdtdGltZSBzcGVjaWFsaXplZCB0byB0aGUgZmllbGRzIHdlIG5lZWQgdGhhdCBhbHNvXG4gICAgIGRvZXNuJ3QgcmVseSBvbiBVbml4LiAqKVxuICBsZXQgdG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCA9XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCAoICE8ICkgaSA9IEludDYzLm9mX2ludF9leG4gaSBpblxuICAgIGxldCAoICE+ICkgdCA9IEludDYzLnRvX2ludF9leG4gdCBpblxuICAgIGxldCBuc19zaW5jZV9lcG9jaCA9IHRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIHQgaW5cbiAgICBsZXQgbnNfcGVyX2RheSA9ICE8ODZfNDAwICogITwxXzAwMF8wMDBfMDAwIGluXG4gICAgbGV0IGFwcHJveF9kYXlzX2Zyb21fZXBvY2ggPSBuc19zaW5jZV9lcG9jaCAvIG5zX3Blcl9kYXkgaW5cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID1cbiAgICAgIGlmIG5zX3NpbmNlX2Vwb2NoIDwgITwwICYmIGFwcHJveF9kYXlzX2Zyb21fZXBvY2ggKiBuc19wZXJfZGF5IDw+IG5zX3NpbmNlX2Vwb2NoXG4gICAgICB0aGVuIGFwcHJveF9kYXlzX2Zyb21fZXBvY2ggLSAhPDFcbiAgICAgIGVsc2UgYXBwcm94X2RheXNfZnJvbV9lcG9jaFxuICAgIGluXG4gICAgbGV0IG5zX3NpbmNlX3N0YXJ0X29mX2RheSA9IG5zX3NpbmNlX2Vwb2NoIC0gKG5zX3Blcl9kYXkgKiBkYXlzX2Zyb21fZXBvY2gpIGluXG4gICAgbGV0IGRhdGUgPVxuICAgICAgRGF0ZTAuRGF5cy5hZGRfZGF5cyBEYXRlMC5EYXlzLnVuaXhfZXBvY2ggIT5kYXlzX2Zyb21fZXBvY2ggfD4gRGF0ZTAuRGF5cy50b19kYXRlXG4gICAgaW5cbiAgICBsZXQgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPSBTcGFuLm9mX2ludDYzX25zIG5zX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgIGRhdGUsIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5XG4gIDs7XG5cbiAgbGV0IG9mX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGRhdGUgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPVxuICAgIGFzc2VydCAoXG4gICAgICBTcGFuLiggPj0gKSBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBTcGFuLnplcm9cbiAgICAgICYmIFNwYW4uKCA8ICkgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgU3Bhbi5kYXkpO1xuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgRGF0ZTAuRGF5cy5kaWZmIChEYXRlMC5EYXlzLm9mX2RhdGUgZGF0ZSkgRGF0ZTAuRGF5cy51bml4X2Vwb2NoXG4gICAgaW5cbiAgICBsZXQgc3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoID0gU3Bhbi5zY2FsZV9pbnQgU3Bhbi5kYXkgZGF5c19mcm9tX2Vwb2NoIGluXG4gICAgbGV0IHNwYW5fc2luY2VfZXBvY2ggPSBTcGFuLiggKyApIHNwYW5faW5fZGF5c19zaW5jZV9lcG9jaCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgIG9mX3NwYW5fc2luY2VfZXBvY2ggc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbHRlcm5hdGVfc2V4cCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBtb2R1bGUgT2ZkYXlfYXNfc3BhbiA9IHN0cnVjdFxuICAgICAgb3BlbiBJbnQuT1xuXG4gICAgICBsZXQgc2Vjb25kc190b19zdHJpbmcgc2Vjb25kc19zcGFuID1cbiAgICAgICAgbGV0IHNlY29uZHMgPSBTcGFuLnRvX2ludF9zZWMgc2Vjb25kc19zcGFuIGluXG4gICAgICAgIGxldCBoID0gc2Vjb25kcyAvIDM2MDAgaW5cbiAgICAgICAgbGV0IG0gPSBzZWNvbmRzIC8gNjAgJSA2MCBpblxuICAgICAgICBsZXQgcyA9IHNlY29uZHMgJSA2MCBpblxuICAgICAgICBzcHJpbnRmIFwiJTAyZDolMDJkOiUwMmRcIiBoIG0gc1xuICAgICAgOztcblxuICAgICAgbGV0IHR3b19kaWdpdF9vZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgYXNzZXJ0IChTdHJpbmcubGVuZ3RoIHN0cmluZyA9IDIgJiYgU3RyaW5nLmZvcl9hbGwgc3RyaW5nIH5mOkNoYXIuaXNfZGlnaXQpO1xuICAgICAgICBJbnQub2Zfc3RyaW5nIHN0cmluZ1xuICAgICAgOztcblxuICAgICAgbGV0IHNlY29uZHNfb2Zfc3RyaW5nIHNlY29uZHNfc3RyaW5nID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHNlY29uZHNfc3RyaW5nIH5vbjonOicgd2l0aFxuICAgICAgICB8IFsgaF9zdHJpbmc7IG1fc3RyaW5nOyBzX3N0cmluZyBdIC0+XG4gICAgICAgICAgbGV0IGggPSB0d29fZGlnaXRfb2Zfc3RyaW5nIGhfc3RyaW5nIGluXG4gICAgICAgICAgbGV0IG0gPSB0d29fZGlnaXRfb2Zfc3RyaW5nIG1fc3RyaW5nIGluXG4gICAgICAgICAgbGV0IHMgPSB0d29fZGlnaXRfb2Zfc3RyaW5nIHNfc3RyaW5nIGluXG4gICAgICAgICAgU3Bhbi5vZl9pbnRfc2VjICgoKChoICogNjApICsgbSkgKiA2MCkgKyBzKVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICA7O1xuXG4gICAgICBsZXQgbnNfb2ZfMTAwX21zID0gMTAwXzAwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xMF9tcyA9IDEwXzAwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xX21zID0gMV8wMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTAwX3VzID0gMTAwXzAwMFxuICAgICAgbGV0IG5zX29mXzEwX3VzID0gMTBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMV91cyA9IDFfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTAwX25zID0gMTAwXG4gICAgICBsZXQgbnNfb2ZfMTBfbnMgPSAxMFxuICAgICAgbGV0IG5zX29mXzFfbnMgPSAxXG5cbiAgICAgIGxldCBzdWJfc2Vjb25kX3RvX3N0cmluZyBzdWJfc2Vjb25kX3NwYW4gPVxuICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICBsZXQgbnMgPSBTcGFuLnRvX2ludDYzX25zIHN1Yl9zZWNvbmRfc3BhbiB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgIGlmIG5zID0gMFxuICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwMF9tcyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwMWRcIiAobnMgLyBuc19vZl8xMDBfbXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMF9tcyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwMmRcIiAobnMgLyBuc19vZl8xMF9tcylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzFfbXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDNkXCIgKG5zIC8gbnNfb2ZfMV9tcylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwMF91cyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwNGRcIiAobnMgLyBuc19vZl8xMDBfdXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMF91cyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwNWRcIiAobnMgLyBuc19vZl8xMF91cylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzFfdXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDZkXCIgKG5zIC8gbnNfb2ZfMV91cylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwMF9ucyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwN2RcIiAobnMgLyBuc19vZl8xMDBfbnMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMF9ucyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwOGRcIiAobnMgLyBuc19vZl8xMF9ucylcbiAgICAgICAgZWxzZSBzcHJpbnRmIFwiLiUwOWRcIiBuc1xuICAgICAgOztcblxuICAgICAgbGV0IHN1Yl9zZWNvbmRfb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBzdHJpbmdcbiAgICAgICAgdGhlbiBTcGFuLnplcm9cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGRpZ2l0cyA9IFN0cmluZy5jaG9wX3ByZWZpeF9leG4gc3RyaW5nIH5wcmVmaXg6XCIuXCIgaW5cbiAgICAgICAgICBhc3NlcnQgKFN0cmluZy5mb3JfYWxsIGRpZ2l0cyB+ZjpDaGFyLmlzX2RpZ2l0KTtcbiAgICAgICAgICBsZXQgbXVsdGlwbGllciA9XG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcubGVuZ3RoIGRpZ2l0cyB3aXRoXG4gICAgICAgICAgICB8IDEgLT4gbnNfb2ZfMTAwX21zXG4gICAgICAgICAgICB8IDIgLT4gbnNfb2ZfMTBfbXNcbiAgICAgICAgICAgIHwgMyAtPiBuc19vZl8xX21zXG4gICAgICAgICAgICB8IDQgLT4gbnNfb2ZfMTAwX3VzXG4gICAgICAgICAgICB8IDUgLT4gbnNfb2ZfMTBfdXNcbiAgICAgICAgICAgIHwgNiAtPiBuc19vZl8xX3VzXG4gICAgICAgICAgICB8IDcgLT4gbnNfb2ZfMTAwX25zXG4gICAgICAgICAgICB8IDggLT4gbnNfb2ZfMTBfbnNcbiAgICAgICAgICAgIHwgOSAtPiBuc19vZl8xX25zXG4gICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTcGFuLm9mX2ludDYzX25zIChJbnQ2My5vZl9pbnQgKEludC5vZl9zdHJpbmcgZGlnaXRzICogbXVsdGlwbGllcikpKVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyBzcGFuID1cbiAgICAgICAgYXNzZXJ0IChTcGFuLiggPj0gKSBzcGFuIFNwYW4uemVybyAmJiBTcGFuLiggPCApIHNwYW4gU3Bhbi5kYXkpO1xuICAgICAgICBsZXQgc2Vjb25kc19zcGFuID0gc3BhbiB8PiBTcGFuLnRvX2ludF9zZWMgfD4gU3Bhbi5vZl9pbnRfc2VjIGluXG4gICAgICAgIGxldCBzdWJfc2Vjb25kX3NwYW4gPSBTcGFuLiggLSApIHNwYW4gc2Vjb25kc19zcGFuIGluXG4gICAgICAgIHNlY29uZHNfdG9fc3RyaW5nIHNlY29uZHNfc3BhbiBeIHN1Yl9zZWNvbmRfdG9fc3RyaW5nIHN1Yl9zZWNvbmRfc3BhblxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgICAgICAgbGV0IHByZWZpeF9sZW4gPSA4IGluXG4gICAgICAgICgqIFwiSEg6TU06RERcIiAqKVxuICAgICAgICBsZXQgc3VmZml4X2xlbiA9IGxlbiAtIHByZWZpeF9sZW4gaW5cbiAgICAgICAgbGV0IHNlY29uZHNfc3RyaW5nID0gU3RyaW5nLnN1YiBzdHJpbmcgfnBvczowIH5sZW46cHJlZml4X2xlbiBpblxuICAgICAgICBsZXQgc3ViX3NlY29uZF9zdHJpbmcgPSBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOnByZWZpeF9sZW4gfmxlbjpzdWZmaXhfbGVuIGluXG4gICAgICAgIGxldCBzZWNvbmRzX3NwYW4gPSBzZWNvbmRzX29mX3N0cmluZyBzZWNvbmRzX3N0cmluZyBpblxuICAgICAgICBsZXQgc3ViX3NlY29uZF9zcGFuID0gc3ViX3NlY29uZF9vZl9zdHJpbmcgc3ViX3NlY29uZF9zdHJpbmcgaW5cbiAgICAgICAgU3Bhbi4oICsgKSBzZWNvbmRzX3NwYW4gc3ViX3NlY29uZF9zcGFuXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgIGxldCBkYXRlLCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IFV0Yy50b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0IGluXG4gICAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXlfYXNfc3Bhbi50b19zdHJpbmcgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgXiBcIlpcIlxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICBsZXQgZGF0ZV9zdHJpbmcsIG9mZGF5X3N0cmluZ193aXRoX3pvbmUgPSBTdHJpbmcubHNwbGl0Ml9leG4gc3RyaW5nIH5vbjonICcgaW5cbiAgICAgIGxldCBvZmRheV9zdHJpbmcgPSBTdHJpbmcuY2hvcF9zdWZmaXhfZXhuIG9mZGF5X3N0cmluZ193aXRoX3pvbmUgfnN1ZmZpeDpcIlpcIiBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZV9zdHJpbmcgaW5cbiAgICAgIGxldCBvZmRheSA9IE9mZGF5X2FzX3NwYW4ub2Zfc3RyaW5nIG9mZGF5X3N0cmluZyBpblxuICAgICAgVXRjLm9mX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGRhdGUgb2ZkYXlcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zdHJpbmdhYmxlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgICAgIGVuZClcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9XG4gICAgICBsZXQgb3BlbiBTZXhwbGliIGluXG4gICAgICBTZXhwX2dyYW1tYXIudGFnXG4gICAgICAgIHRfc2V4cF9ncmFtbWFyXG4gICAgICAgIH5rZXk6U2V4cF9ncmFtbWFyLnR5cGVfbmFtZV90YWdcbiAgICAgICAgfnZhbHVlOihBdG9tIFwiQ29yZS5UaW1lX25zLkFsdGVybmF0ZV9zZXhwLnRcIilcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudFxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICgqIHNlZSB0ZXN0cyBpbiBsaWIvY29yZS90ZXN0L3NyYy90ZXN0X3RpbWVfbnMgdGhhdCBlbnN1cmUgc3RhYmlsaXR5IG9mIHRoaXNcbiAgICAgICAgICAgcmVwcmVzZW50YXRpb24gKilcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuXG4gICAgICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxuICBtb2R1bGUgQWx0ZXJuYXRlX3NleHAgPSBBbHRlcm5hdGVfc2V4cC5TdGFibGVcbiAgbW9kdWxlIFNwYW4gPSBTcGFuLlN0YWJsZVxuICBtb2R1bGUgT2ZkYXkgPSBPZmRheS5TdGFibGVcbmVuZFxuXG4oKiB0aGlzIGNvZGUgaXMgZGlyZWN0bHkgZHVwbGljYXRlZCBmcm9tIFRpbWUubWwgZnVuY3RvciwgY29udmVydGVkIGVub3VnaCB0byBnZXQgVGltZV9uc1xuICAgdG8vb2Zfc3RyaW5nIHdvcmtpbmcgKilcbm1vZHVsZSBUb19hbmRfb2Zfc3RyaW5nIDogc2lnXG4gIHZhbCBvZl9kYXRlX29mZGF5IDogem9uZTpab25lLnQgLT4gRGF0ZS50IC0+IE9mZGF5LnQgLT4gdFxuXG4gIHZhbCBvZl9kYXRlX29mZGF5X3ByZWNpc2VcbiAgICA6ICBEYXRlLnRcbiAgICAtPiBPZmRheS50XG4gICAgLT4gem9uZTpab25lLnRcbiAgICAtPiBbIGBPbmNlIG9mIHQgfCBgVHdpY2Ugb2YgdCAqIHQgfCBgTmV2ZXIgb2YgdCBdXG5cbiAgdmFsIHRvX2RhdGVfb2ZkYXkgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IERhdGUudCAqIE9mZGF5LnRcblxuICB2YWwgdG9fZGF0ZV9vZmRheV9wcmVjaXNlXG4gICAgOiAgdFxuICAgIC0+IHpvbmU6Wm9uZS50XG4gICAgLT4gRGF0ZS50ICogT2ZkYXkudCAqIFsgYE9ubHkgfCBgQWxzb19hdCBvZiB0IHwgYEFsc29fc2tpcHBlZCBvZiBEYXRlLnQgKiBPZmRheS50IF1cblxuICB2YWwgdG9fZGF0ZSA6IHQgLT4gem9uZTpab25lLnQgLT4gRGF0ZS50XG4gIHZhbCB0b19vZmRheSA6IHQgLT4gem9uZTpab25lLnQgLT4gT2ZkYXkudFxuICB2YWwgY29udmVydCA6IGZyb21fdHo6Wm9uZS50IC0+IHRvX3R6OlpvbmUudCAtPiBEYXRlLnQgLT4gT2ZkYXkudCAtPiBEYXRlLnQgKiBPZmRheS50XG4gIHZhbCByZXNldF9kYXRlX2NhY2hlIDogdW5pdCAtPiB1bml0XG4gIHZhbCB1dGNfb2Zmc2V0IDogdCAtPiB6b25lOlpvbmUudCAtPiBTcGFuLnRcblxuICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW29mX3N0cmluZ193aXRoX3V0Y19vZmZzZXRdXCJdXG5cbiAgdmFsIG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQgOiBzdHJpbmcgLT4gdFxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW3RvX3N0cmluZ191dGNdXCJdXG4gIHZhbCB0b19zdHJpbmdfdXRjIDogdCAtPiBzdHJpbmdcbiAgdmFsIHRvX2ZpbGVuYW1lX3N0cmluZyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCBvZl9maWxlbmFtZV9zdHJpbmcgOiBzdHJpbmcgLT4gem9uZTpab25lLnQgLT4gdFxuICB2YWwgdG9fc3RyaW5nX3RyaW1tZWQgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc2VjX3N0cmluZyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCBvZl9sb2NhbGl6ZWRfc3RyaW5nIDogem9uZTpab25lLnQgLT4gc3RyaW5nIC0+IHRcblxuICB2YWwgb2Zfc3RyaW5nX2dlblxuICAgIDogIGRlZmF1bHRfem9uZToodW5pdCAtPiBab25lLnQpXG4gICAgLT4gZmluZF96b25lOihzdHJpbmcgLT4gWm9uZS50KVxuICAgIC0+IHN0cmluZ1xuICAgIC0+IHRcblxuICB2YWwgdG9fc3RyaW5nX2FicyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zdHJpbmdfYWJzX3RyaW1tZWQgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc3RyaW5nX2Fic19wYXJ0cyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nIGxpc3RcbiAgdmFsIHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcblxuICB2YWwgb2NjdXJyZW5jZVxuICAgIDogIFsgYEZpcnN0X2FmdGVyX29yX2F0IHwgYExhc3RfYmVmb3JlX29yX2F0IF1cbiAgICAtPiB0XG4gICAgLT4gb2ZkYXk6T2ZkYXkudFxuICAgIC0+IHpvbmU6Wm9uZS50XG4gICAgLT4gdFxuZW5kID0gc3RydWN0XG4gICgqIHRoaXMgY29kZSBpcyBkaXJlY3RseSBkdXBsaWNhdGVkIGZyb20gVGltZV9mbG9hdDAubWwsIGNvbnZlcnRlZCBlbm91Z2ggdG8gZ2V0XG4gICAgIFRpbWVfbnMgdG8vb2Zfc3RyaW5nIHdvcmtpbmcgKilcbiAgbW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IHRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHQgPSBTcGFuLm9mX2ludDYzX25zIHRcblxuICAgIGxldCBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgPVxuICAgICAgbGV0IGRheXMgPVxuICAgICAgICBEYXRlMC5EYXlzLmRpZmYgKERhdGUwLkRheXMub2ZfZGF0ZSBkYXRlKSBEYXRlMC5EYXlzLnVuaXhfZXBvY2ggfD4gSW50NjMub2ZfaW50XG4gICAgICBpblxuICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgKGRheXMgKiBTcGFuLnRvX2ludDYzX25zIFNwYW4uZGF5KVxuICAgICAgKyBTcGFuLnRvX2ludDYzX25zIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGMgPVxuICAgICAgc3ViX2V4biAoU3Bhbi5vZl9pbnQ2M19ucyByZWxhdGl2ZSkgb2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcblxuICAgIGxldCBvZl9hYnNvbHV0ZSBhYnNvbHV0ZSB+b2Zmc2V0X2Zyb21fdXRjID1cbiAgICAgIFNwYW4udG9faW50NjNfbnMgKGFkZF9leG4gYWJzb2x1dGUgb2Zmc2V0X2Zyb21fdXRjKVxuICAgIDs7XG5cbiAgICBsZXQgbnNfcGVyX2RheSA9IFNwYW4udG9faW50NjNfbnMgU3Bhbi5kYXlcblxuICAgIGxldCB0b19kYXlzX2Zyb21fZXBvY2ggdCA9XG4gICAgICAoKiBub3RlIFRpbWVfbnMgcmVwcmVzZW50cyBhYm91dCAxNDYgeWVhcnMsIG5vdCBlbm91Z2ggZm9yIFtEYXRlLmNyZWF0ZV9leG5dIHRvIGV2ZXJcbiAgICAgICAgIHJhaXNlICopXG4gICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveCA9IHQgLyBuc19wZXJfZGF5IGluXG4gICAgICAoKiB3aGVuIFt0XSBpcyBuZWdhdGl2ZSB0aGUgaW50ZWdlciBkaXZpc2lvbiB0aGF0IGNhbGN1bGF0ZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgICAgICAgd2lsbCBsZWF2ZSB1cyBvbmUgZGF5IHNob3J0IGJlY2F1c2UgaXQgdHJ1bmNhdGVzIChlLmcuIC0xMDAgLyA4Nl80MDAgPSAwIGFuZCB3ZVxuICAgICAgICAgd2FudCAtMSkgLS0gYWRqdXN0IGZvciB0aGF0IGhlcmUuICopXG4gICAgICBpZiB0IDwgZGF5c19mcm9tX2Vwb2NoX2FwcHJveCAqIG5zX3Blcl9kYXlcbiAgICAgIHRoZW4gSW50NjMucHJlZCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgICBlbHNlIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICA7O1xuXG4gICAgbGV0IG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaF9pbl9ucyA9IGRheXNfZnJvbV9lcG9jaCAqIG5zX3Blcl9kYXkgaW5cbiAgICAgIGxldCByZW1haW5kZXIgPSB0IC0gZGF5c19mcm9tX2Vwb2NoX2luX25zIGluXG4gICAgICBTcGFuLm9mX2ludDYzX25zIHJlbWFpbmRlciB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICA7O1xuXG4gICAgbGV0IGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgSW50NjMudG9faW50X2V4biBkYXlzX2Zyb21fZXBvY2hcbiAgICAgIHw+IERhdGUwLkRheXMuYWRkX2RheXMgRGF0ZTAuRGF5cy51bml4X2Vwb2NoXG4gICAgICB8PiBEYXRlMC5EYXlzLnRvX2RhdGVcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGUgdCA9XG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICAgIGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX29mZGF5IHQgPVxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgICBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFpvbmUgOiBzaWdcbiAgICAoKiBUaGlzIGludGVyZmFjZSBpcyBkaXJlY3RseSBkdXBsaWNhdGVkIGZyb20gVGltZV9pbnRmLlpvbmUsIGNvbnZlcnRlZCBlbm91Z2ggdG8gZ2V0XG4gICAgICAgdGhpcyB0byB3b3JrLlxuXG4gICAgICAgVGhlIHByb2JsZW0gaXMgaGFzIHJlZmVyZW5jZXMgdG8gVGltZTBfaW50Zi5TLCB3aGljaCBpcyB0aGUgZnVuY3RvciBpbnB1dCBpbnRlcmZhY2VcbiAgICAgICB0aGF0IFRpbWVfbnMgY3VycmVudGx5IGRvZXMgbm90IHNhdGlzZnkuICopXG5cbiAgICB0eXBlIHRpbWUgPSB0XG4gICAgdHlwZSB0ID0gWm9uZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBtb2R1bGUgSW5kZXggPSBab25lLkluZGV4XG5cbiAgICAoKiBjb3BpZWQgZnVuY3Rpb25zIHJlZXhwb3J0ZWQgZnJvbSBab25lICopXG5cbiAgICB2YWwgdXRjIDogdFxuICAgIHZhbCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCA6IHQgLT4gSW5kZXgudCAtPiBib29sXG4gICAgdmFsIGluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IDogdCAtPiBJbmRleC50IC0+IGJvb2xcblxuICAgICgqIG5ldyBmdW5jdGlvbnMgZGVmaW5lZCBiZWxvdyAqKVxuXG4gICAgdmFsIGluZGV4IDogdCAtPiB0aW1lIC0+IEluZGV4LnRcbiAgICB2YWwgaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biA6IHQgLT4gSW5kZXgudCAtPiB0aW1lXG4gICAgdmFsIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gOiB0IC0+IEluZGV4LnQgLT4gdGltZVxuICAgIHZhbCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIDogdCAtPiBJbmRleC50IC0+IHRpbWVcbiAgICB2YWwgYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSA6IHQgLT4gRGF0ZV9hbmRfb2ZkYXkudCAtPiB0aW1lXG4gICAgdmFsIGRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgOiB0IC0+IHRpbWUgLT4gRGF0ZV9hbmRfb2ZkYXkudFxuICAgIHZhbCBuZXh0X2Nsb2NrX3NoaWZ0IDogdCAtPiBzdHJpY3RseV9hZnRlcjp0aW1lIC0+ICh0aW1lICogU3Bhbi50KSBvcHRpb25cbiAgICB2YWwgcHJldl9jbG9ja19zaGlmdCA6IHQgLT4gYXRfb3JfYmVmb3JlOnRpbWUgLT4gKHRpbWUgKiBTcGFuLnQpIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRpbWUgPSB0XG5cbiAgICBpbmNsdWRlIFpvbmVcblxuICAgIGxldCBvZl9zcGFuX2luX3NlY29uZHMgc3Bhbl9pbl9zZWNvbmRzID1cbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biBzcGFuX2luX3NlY29uZHNcbiAgICAgIHw+IFNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfdGltZV9pbl9zZWNvbmRzIHRpbWVfaW5fc2Vjb25kcyA9XG4gICAgICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lX2luX3NlY29uZHNcbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSA9XG4gICAgICB0b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgICAgIHw+IFNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUgPVxuICAgICAgRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggcmVsYXRpdmVcbiAgICAgIHw+IFNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5Lm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCBpbmRleCB0IHRpbWUgPSBpbmRleCB0ICh0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSlcblxuICAgIGxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgKHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4ID1cbiAgICAgIG1hdGNoIGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggd2l0aFxuICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgICggaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4XG4gICAgICAgICAgLCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCApXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgKEluZGV4Lm5leHQgaW5kZXgpXG4gICAgbGV0IHByZXZfY2xvY2tfc2hpZnQgdCB+YXRfb3JfYmVmb3JlOnRpbWUgPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcbiAgICBsZXQgbmV4dF9jbG9ja19zaGlmdCB0IH5zdHJpY3RseV9hZnRlcjp0aW1lID0gaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG5cbiAgICBsZXQgZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSB0IHRpbWUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXggdCB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhdIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIERhdGVfYW5kX29mZGF5Lm9mX2Fic29sdXRlIHRpbWUgfm9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG5cbiAgICBsZXQgYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF9vZl9kYXRlX2FuZF9vZmRheV0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsYXRpdmUgfm9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXkgPVxuICAgIGxldCByZWxhdGl2ZSA9IERhdGVfYW5kX29mZGF5Lm9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSBpblxuICAgIFpvbmUuYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSB6b25lIHJlbGF0aXZlXG4gIDs7XG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXlfcHJlY2lzZSBkYXRlIG9mZGF5IH56b25lID1cbiAgICAoKiBXZSBhc3N1bWUgdGhhdCB0aGVyZSB3aWxsIGJlIG9ubHkgb25lIHpvbmUgc2hpZnQgd2l0aGluIGEgZ2l2ZW4gbG9jYWwgZGF5LiAgKilcbiAgICBsZXQgc3RhcnRfb2ZfZGF5ID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIE9mZGF5LnN0YXJ0X29mX2RheSBpblxuICAgIGxldCBwcm9wb3NlZF90aW1lID0gYWRkIHN0YXJ0X29mX2RheSAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpIGluXG4gICAgbWF0Y2ggWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnN0YXJ0X29mX2RheSB3aXRoXG4gICAgfCBOb25lIC0+IGBPbmNlIHByb3Bvc2VkX3RpbWVcbiAgICB8IFNvbWUgKHNoaWZ0X3N0YXJ0LCBzaGlmdF9hbW91bnQpIC0+XG4gICAgICBsZXQgc2hpZnRfYmFja3dhcmRzID0gU3Bhbi4oc2hpZnRfYW1vdW50IDwgemVybykgaW5cbiAgICAgICgqIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIFwicHJvYmxlbWF0aWMgcmVnaW9uXCIgKilcbiAgICAgIGxldCBzLCBlID1cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYWRkIHNoaWZ0X3N0YXJ0IHNoaWZ0X2Ftb3VudCwgc2hpZnRfc3RhcnRcbiAgICAgICAgZWxzZSBzaGlmdF9zdGFydCwgYWRkIHNoaWZ0X3N0YXJ0IHNoaWZ0X2Ftb3VudFxuICAgICAgaW5cbiAgICAgIGlmIHByb3Bvc2VkX3RpbWUgPCBzXG4gICAgICB0aGVuIGBPbmNlIHByb3Bvc2VkX3RpbWVcbiAgICAgIGVsc2UgaWYgcyA8PSBwcm9wb3NlZF90aW1lICYmIHByb3Bvc2VkX3RpbWUgPCBlXG4gICAgICB0aGVuXG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGBUd2ljZSAocHJvcG9zZWRfdGltZSwgc3ViIHByb3Bvc2VkX3RpbWUgc2hpZnRfYW1vdW50KVxuICAgICAgICBlbHNlIGBOZXZlciBzaGlmdF9zdGFydFxuICAgICAgZWxzZSBgT25jZSAoc3ViIHByb3Bvc2VkX3RpbWUgc2hpZnRfYW1vdW50KVxuICA7O1xuXG4gIG1vZHVsZSBEYXRlX2NhY2hlID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9XG4gICAgICB7IG11dGFibGUgem9uZSA6IFpvbmUudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3N0YXJ0X2luY2wgOiB0XG4gICAgICA7IG11dGFibGUgY2FjaGVfdW50aWxfZXhjbCA6IHRcbiAgICAgIDsgbXV0YWJsZSBlZmZlY3RpdmVfZGF5X3N0YXJ0IDogdFxuICAgICAgOyBtdXRhYmxlIGRhdGUgOiBEYXRlMC50XG4gICAgICB9XG4gIGVuZFxuXG4gIGxldCBkYXRlX2NhY2hlIDogRGF0ZV9jYWNoZS50ID1cbiAgICB7IHpvbmUgPSBab25lLnV0Y1xuICAgIDsgY2FjaGVfc3RhcnRfaW5jbCA9IGVwb2NoXG4gICAgOyBjYWNoZV91bnRpbF9leGNsID0gZXBvY2hcbiAgICA7IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPSBlcG9jaFxuICAgIDsgZGF0ZSA9IERhdGUwLnVuaXhfZXBvY2hcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0X2RhdGVfY2FjaGUgKCkgPVxuICAgIGRhdGVfY2FjaGUuem9uZSA8LSBab25lLnV0YztcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmRhdGUgPC0gRGF0ZTAudW5peF9lcG9jaFxuICA7O1xuXG4gIGxldCBpc19pbl9jYWNoZSB0aW1lIH56b25lID1cbiAgICBwaHlzX2VxdWFsIHpvbmUgZGF0ZV9jYWNoZS56b25lXG4gICAgJiYgdGltZSA+PSBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2xcbiAgICAmJiB0aW1lIDwgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsXG4gIDs7XG5cbiAgbGV0IHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIG1hdGNoIGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiAoKVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIGxldCBpbmRleCA9IFpvbmUuaW5kZXggem9uZSB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbWm9uZS5pbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IFpvbmUuaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB6b25lIGluZGV4IGluXG4gICAgICBsZXQgcmVsID0gRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGVfYW5kX29mZGF5LnRvX2RhdGUgcmVsIGluXG4gICAgICBsZXQgc3BhbiA9IERhdGVfYW5kX29mZGF5LnRvX29mZGF5IHJlbCB8PiBPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPVxuICAgICAgICBzdWIgKERhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbCB+b2Zmc2V0X2Zyb21fdXRjKSBzcGFuXG4gICAgICBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfdW50aWwgPSBhZGQgZWZmZWN0aXZlX2RheV9zdGFydCBTcGFuLmRheSBpblxuICAgICAgbGV0IGNhY2hlX3N0YXJ0X2luY2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfc3RhcnRcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV9zdGFydCB8PiBtYXggKFpvbmUuaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB6b25lIGluZGV4KVxuICAgICAgaW5cbiAgICAgIGxldCBjYWNoZV91bnRpbF9leGNsID1cbiAgICAgICAgbWF0Y2ggWm9uZS5pbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCB6b25lIGluZGV4IHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBlZmZlY3RpdmVfZGF5X3VudGlsXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGVmZmVjdGl2ZV9kYXlfdW50aWwgfD4gbWluIChab25lLmluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBkYXRlX2NhY2hlLnpvbmUgPC0gem9uZTtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBjYWNoZV9zdGFydF9pbmNsO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGNhY2hlX3VudGlsX2V4Y2w7XG4gICAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZWZmZWN0aXZlX2RheV9zdGFydDtcbiAgICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBkYXRlXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGUgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkYXRlX2NhY2hlLmRhdGVcbiAgOztcblxuICBsZXQgdG9fb2ZkYXkgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkaWZmIHRpbWUgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IHw+IE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICA7O1xuXG4gIGxldCB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgPSB0b19kYXRlIHRpbWUgfnpvbmUsIHRvX29mZGF5IHRpbWUgfnpvbmVcblxuICAoKiBUaGUgY29ycmVjdG5lc3Mgb2YgdGhpcyBhbGdvcml0aG0gKGludGVyZmFjZSwgZXZlbikgZGVwZW5kcyBvbiB0aGUgZmFjdCB0aGF0XG4gICAgIHRpbWV6b25lIHNoaWZ0cyBhcmVuJ3QgdG9vIGNsb3NlIHRvZ2V0aGVyIChhcyBpbiwgaXQgY2FuJ3Qgc2ltdWx0YW5lb3VzbHkgYmUgdGhlXG4gICAgIGNhc2UgdGhhdCBhIHRpbWV6b25lIHNoaWZ0IG9mIFggaG91cnMgb2NjdXJyZWQgbGVzcyB0aGFuIFggaG91cnMgYWdvLCAqYW5kKlxuICAgICBhIHRpbWV6b25lIHNoaWZ0IG9mIFkgaG91cnMgd2lsbCBvY2N1ciBpbiBsZXNzIHRoYW4gWSBob3VycycgdGltZSkgKilcbiAgbGV0IHRvX2RhdGVfb2ZkYXlfcHJlY2lzZSB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYWZ0ZXIgPSBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6dGltZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9iZWZvcmVfb3JfYXQgPSBab25lLnByZXZfY2xvY2tfc2hpZnQgem9uZSB+YXRfb3JfYmVmb3JlOnRpbWUgaW5cbiAgICBsZXQgYWxzb19za2lwcGVkX2VhcmxpZXIgYW1vdW50ID1cbiAgICAgICgqIFVzaW5nIFtkYXRlXSBhbmQgcmFpc2luZyBvbiBbTm9uZV0gaGVyZSBpcyBPSyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGNsb2NrXG4gICAgICAgICBzaGlmdHMgY2FuJ3QgY3Jvc3MgZGF0ZSBib3VuZGFyaWVzLiBUaGlzIGlzIHRydWUgaW4gYWxsIGNhc2VzIEkndmUgZXZlciBoZWFyZFxuICAgICAgICAgb2YgKGFuZCBbb2ZfZGF0ZV9vZmRheV9wcmVjaXNlXSB3b3VsZCBuZWVkIHJldmlzaXRpbmcgaWYgaXQgdHVybmVkIG91dCB0byBiZVxuICAgICAgICAgZmFsc2UpICopXG4gICAgICBtYXRjaCBPZmRheS5zdWIgb2ZkYXkgYW1vdW50IHdpdGhcbiAgICAgIHwgU29tZSBvZmRheSAtPiBgQWxzb19za2lwcGVkIChkYXRlLCBvZmRheSlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIlRpbWUudG9fZGF0ZV9vZmRheV9wcmVjaXNlXCJcbiAgICAgICAgICAgICAgfnNwYW5fc2luY2VfZXBvY2g6KHRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSA6IFNwYW4udClcbiAgICAgICAgICAgICAgKHpvbmUgOiBab25lLnQpXVxuICAgIGluXG4gICAgbGV0IGFtYmlndWl0eSA9XG4gICAgICAoKiBFZGdlIGNhc2VzOiB0aGUgaW5zdGFudCBvZiB0cmFuc2l0aW9uIGJlbG9uZ3MgdG8gdGhlIG5ldyB6b25lIHJlZ2ltZS4gU28gaWYgdGhlXG4gICAgICAgICBjbG9jayBtb3ZlZCBieSBhbiBob3VyIGV4YWN0bHkgb25lIGhvdXIgYWdvLCB0aGVyZSdzIG5vIGFtYmlndWl0eSwgYmVjYXVzZSB0aGVcbiAgICAgICAgIGhvdXItYWdvIHRpbWUgYmVsb25ncyB0byB0aGUgc2FtZSByZWdpbWUgYXMgeW91LCBhbmQgY29udmVyc2VseSwgaWYgdGhlIGNsb2NrXG4gICAgICAgICB3aWxsIG1vdmUgYnkgYW4gaG91ciBpbiBhbiBob3VycycgdGltZSwgdGhlcmUgKmlzKiBhbWJpZ3VpdHkuIEhlbmNlIFs+Ll0gZm9yXG4gICAgICAgICB0aGUgZmlyc3QgY2FzZSBhbmQgWzw9Ll0gZm9yIHRoZSBzZWNvbmQuICopXG4gICAgICBtYXRjaCBjbG9ja19zaGlmdF9iZWZvcmVfb3JfYXQsIGNsb2NrX3NoaWZ0X2FmdGVyIHdpdGhcbiAgICAgIHwgU29tZSAoc3RhcnQsIGFtb3VudCksIF8gd2hlbiBhZGQgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPiB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgcmVjZW50bHkgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgZm9yd2FyZCByZWNlbnRseTogd2Ugc2tpcHBlZCBhIHRpbWUgKilcbiAgICAgICAgICBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBiYWNrIHJlY2VudGx5OiB0aGlzIGRhdGUvb2ZkYXkgYWxyZWFkeSBoYXBwZW5lZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChzdWIgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8sIFNvbWUgKHN0YXJ0LCBhbW91bnQpIHdoZW4gc3ViIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpIDw9IHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgaXMgYWJvdXQgdG8gc2hpZnQgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlbiAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBmb3J3YXJkOiBubyBlZmZlY3QgKilcbiAgICAgICAgICBgT25seVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBiYWNrOiB0aGlzIGRhdGUvb2ZkYXkgd2lsbCBiZSByZXBlYXRlZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChhZGQgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8gLT4gYE9ubHlcbiAgICBpblxuICAgIGRhdGUsIG9mZGF5LCBhbWJpZ3VpdHlcbiAgOztcblxuICBsZXQgY29udmVydCB+ZnJvbV90eiB+dG9fdHogZGF0ZSBvZmRheSA9XG4gICAgbGV0IHN0YXJ0X3RpbWUgPSBvZl9kYXRlX29mZGF5IH56b25lOmZyb21fdHogZGF0ZSBvZmRheSBpblxuICAgIHRvX2RhdGVfb2ZkYXkgfnpvbmU6dG9fdHogc3RhcnRfdGltZVxuICA7O1xuXG4gIGxldCB1dGNfb2Zmc2V0IHQgfnpvbmUgPVxuICAgIGxldCB1dGNfZXBvY2ggPSBab25lLmRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgem9uZSB0IGluXG4gICAgU3Bhbi4oIC0gKVxuICAgICAgKERhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHV0Y19lcG9jaClcbiAgICAgICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG4gIDs7XG5cbiAgbGV0IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSA9XG4gICAgbGV0IHV0Y19vZmZzZXQgPSB1dGNfb2Zmc2V0IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgaXNfdXRjID0gU3Bhbi4oID0gKSB1dGNfb2Zmc2V0IFNwYW4uemVybyBpblxuICAgIGlmIGlzX3V0Y1xuICAgIHRoZW4gXCJaXCJcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgKGlmIFNwYW4uKCA8ICkgdXRjX29mZnNldCBTcGFuLnplcm8gdGhlbiBcIi1cIiBlbHNlIFwiK1wiKVxuICAgICAgICA7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkXG4gICAgICAgICAgICAoT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmFicyB1dGNfb2Zmc2V0KSlcbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3BhcnRzID1cbiAgICBsZXQgYXR0ZW1wdCB0aW1lIH56b25lID1cbiAgICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgICAgbGV0IG9mZnNldF9zdHJpbmcgPSBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgaW5cbiAgICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICAgIDsgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBPZmRheS50b19zdHJpbmcgb2ZkYXk7IG9mZnNldF9zdHJpbmcgXVxuICAgICAgXVxuICAgIGluXG4gICAgZnVuIHRpbWUgfnpvbmUgLT5cbiAgICAgIHRyeSBhdHRlbXB0IHRpbWUgfnpvbmUgd2l0aFxuICAgICAgfCAoXyA6IGV4bikgLT5cbiAgICAgICAgKCogSWYgd2Ugb3ZlcmZsb3cgYXBwbHlpbmcgdGhlIFVUQyBvZmZzZXQsIHRyeSBhZ2FpbiB3aXRoIFVUQyB0aW1lLiAqKVxuICAgICAgICBhdHRlbXB0IHRpbWUgfnpvbmU6Wm9uZS51dGNcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic190cmltbWVkIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgU3RyaW5nLmNvbmNhdFxuICAgICAgfnNlcDpcIiBcIlxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZTsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgb2ZkYXkgXiBvZmZzZXRfc3RyaW5nIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2FicyB0aW1lIH56b25lID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIGxldCB0b19zdHJpbmdfdXRjIHQgPSB0b19zdHJpbmdfYWJzIHQgfnpvbmU6Wm9uZS51dGNcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ191dGNcblxuICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdGltZSB+em9uZSA9XG4gICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiVFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ190cmltbWVkIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zZWNfc3RyaW5nIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSB0IH56b25lID0gdG9fc2VjX3N0cmluZyB0IH56b25lIF4gb2Zmc2V0X3N0cmluZyB0IH56b25lXG5cbiAgbGV0IHRvX2ZpbGVuYW1lX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIF4gXCJfXCJcbiAgICBeIFN0cmluZy50clxuICAgICAgICB+dGFyZ2V0Oic6J1xuICAgICAgICB+cmVwbGFjZW1lbnQ6Jy0nXG4gICAgICAgIChTdHJpbmcuZHJvcF9zdWZmaXggKE9mZGF5LnRvX3N0cmluZyBvZmRheSkgMylcbiAgOztcblxuICBsZXQgb2ZfZmlsZW5hbWVfc3RyaW5nIHMgfnpvbmUgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246J18nIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlIGluIGZpbGVuYW1lIHN0cmluZ1wiXG4gICAgICB8IFNvbWUgKGRhdGUsIG9mZGF5KSAtPlxuICAgICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICAgIGxldCBvZmRheSA9IFN0cmluZy50ciB+dGFyZ2V0OictJyB+cmVwbGFjZW1lbnQ6JzonIG9mZGF5IGluXG4gICAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyBvZmRheSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgfnpvbmVcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gaW52YWxpZF9hcmdmIFwiVGltZS5vZl9maWxlbmFtZV9zdHJpbmcgKCVzKTogJXNcIiBzIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgOztcblxuICBsZXQgb2ZfbG9jYWxpemVkX3N0cmluZyB+em9uZSBzdHIgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgc3RyIH5vbjonICcgd2l0aFxuICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIChzcHJpbnRmIFwibm8gc3BhY2UgaW4gZGF0ZV9vZmRheSBzdHJpbmc6ICVzXCIgc3RyKVxuICAgICAgfCBTb21lIChkYXRlLCB0aW1lKSAtPlxuICAgICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyB0aW1lIGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgIHdpdGhcbiAgICB8IGUgLT4gRXhuLnJlcmFpc2UgZSBcIlRpbWUub2ZfbG9jYWxpemVkX3N0cmluZ1wiXG4gIDs7XG5cbiAgbGV0IG9jY3VycmVuY2UgYmVmb3JlX29yX2FmdGVyIHQgfm9mZGF5IH56b25lID1cbiAgICBsZXQgZmlyc3RfZ3Vlc3NfZGF0ZSA9IHRvX2RhdGUgdCB+em9uZSBpblxuICAgIGxldCBmaXJzdF9ndWVzcyA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZmlyc3RfZ3Vlc3NfZGF0ZSBvZmRheSBpblxuICAgIGxldCBjbXAsIGluY3JlbWVudCA9XG4gICAgICBtYXRjaCBiZWZvcmVfb3JfYWZ0ZXIgd2l0aFxuICAgICAgfCBgTGFzdF9iZWZvcmVfb3JfYXQgLT4gKCA8PSApLCAtMVxuICAgICAgfCBgRmlyc3RfYWZ0ZXJfb3JfYXQgLT4gKCA+PSApLCAxXG4gICAgaW5cbiAgICBpZiBjbXAgZmlyc3RfZ3Vlc3MgdFxuICAgIHRoZW4gZmlyc3RfZ3Vlc3NcbiAgICBlbHNlIG9mX2RhdGVfb2ZkYXkgfnpvbmUgKERhdGUwLmFkZF9kYXlzIGZpcnN0X2d1ZXNzX2RhdGUgaW5jcmVtZW50KSBvZmRheVxuICA7O1xuXG4gIGxldCBlbnN1cmVfY29sb25faW5fb2Zmc2V0IG9mZnNldCA9XG4gICAgbGV0IG9mZnNldF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIG9mZnNldCBpblxuICAgIGlmIEludC4oIDw9ICkgb2Zmc2V0X2xlbmd0aCAyXG4gICAgJiYgQ2hhci5pc19kaWdpdCBvZmZzZXQuWzBdXG4gICAgJiYgQ2hhci5pc19kaWdpdCBvZmZzZXQuW29mZnNldF9sZW5ndGggLSAxXVxuICAgIHRoZW4gb2Zmc2V0IF4gXCI6MDBcIlxuICAgIGVsc2UgaWYgQ2hhci4oID0gKSBvZmZzZXQuWzFdICc6JyB8fCBDaGFyLiggPSApIG9mZnNldC5bMl0gJzonXG4gICAgdGhlbiBvZmZzZXRcbiAgICBlbHNlIGlmIEludC4oIDwgKSBvZmZzZXRfbGVuZ3RoIDMgfHwgSW50LiggPiApIG9mZnNldF9sZW5ndGggNFxuICAgIHRoZW4gZmFpbHdpdGhmIFwiaW52YWxpZCBvZmZzZXQgJXNcIiBvZmZzZXQgKClcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgU3RyaW5nLnNsaWNlIG9mZnNldCAwIChvZmZzZXRfbGVuZ3RoIC0gMilcbiAgICAgICAgOyBcIjpcIlxuICAgICAgICA7IFN0cmluZy5zbGljZSBvZmZzZXQgKG9mZnNldF9sZW5ndGggLSAyKSBvZmZzZXRfbGVuZ3RoXG4gICAgICAgIF1cbiAgOztcblxuICBleGNlcHRpb24gVGltZV9uc19vZl9zdHJpbmcgb2Ygc3RyaW5nICogRXhuLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBsZXQgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgZGF0ZSwgb2ZkYXksIHR6ID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOicgJyB3aXRoXG4gICAgICAgIHwgWyBkYXk7IG1vbnRoOyB5ZWFyOyBvZmRheSBdIC0+XG4gICAgICAgICAgU3RyaW5nLmNvbmNhdCBbIGRheTsgXCIgXCI7IG1vbnRoOyBcIiBcIjsgeWVhciBdLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXk7IHR6IF0gLT4gZGF0ZSwgb2ZkYXksIFNvbWUgdHpcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5IF0gLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIHMgXSAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246J1QnIHMgd2l0aFxuICAgICAgICAgICB8IFNvbWUgKGRhdGUsIG9mZGF5KSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZXMgb3IgVCBmb3VuZFwiKVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJ0b28gbWFueSBzcGFjZXNcIlxuICAgICAgaW5cbiAgICAgIGxldCBvZmRheV90b19zZWMgb2QgPSBTcGFuLnRvX3NlYyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2QpIGluXG4gICAgICBsZXQgb2ZkYXksIHV0Y19vZmZzZXQgPVxuICAgICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICAgIHwgU29tZSBfIC0+IG9mZGF5LCBOb25lXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIENoYXIuKCA9ICkgb2ZkYXkuW1N0cmluZy5sZW5ndGggb2ZkYXkgLSAxXSAnWidcbiAgICAgICAgICB0aGVuIFN0cmluZy5zdWIgb2ZkYXkgfnBvczowIH5sZW46KFN0cmluZy5sZW5ndGggb2ZkYXkgLSAxKSwgU29tZSAwLlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgfm9uOicrJyBvZmRheSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGwsIHIpIC0+XG4gICAgICAgICAgICAgIGwsIFNvbWUgKG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nLmxzcGxpdDIgfm9uOictJyBvZmRheSB3aXRoXG4gICAgICAgICAgICAgICB8IFNvbWUgKGwsIHIpIC0+XG4gICAgICAgICAgICAgICAgIGwsIFNvbWUgKC0xLiAqLiBvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gb2ZkYXksIE5vbmUpKVxuICAgICAgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyBvZmRheSBpblxuICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgfCBTb21lIHR6IC0+IG9mX2RhdGVfb2ZkYXkgfnpvbmU6KGZpbmRfem9uZSB0eikgZGF0ZSBvZmRheVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCB1dGNfb2Zmc2V0IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBsZXQgem9uZSA9IGRlZmF1bHRfem9uZSAoKSBpblxuICAgICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICAgICAgIHwgU29tZSB1dGNfb2Zmc2V0IC0+XG4gICAgICAgICAgIGxldCB1dGNfdCA9IG9mX2RhdGVfb2ZkYXkgfnpvbmU6Wm9uZS51dGMgZGF0ZSBvZmRheSBpblxuICAgICAgICAgICBzdWIgdXRjX3QgKFNwYW4ub2Zfc2VjIHV0Y19vZmZzZXQpKVxuICAgIHdpdGhcbiAgICB8IGUgLT4gcmFpc2UgKFRpbWVfbnNfb2Zfc3RyaW5nIChzLCBlKSlcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldCBzID1cbiAgICBsZXQgZGVmYXVsdF96b25lICgpID0gcmFpc2VfcyBbJW1lc3NhZ2UgXCJ0aW1lIGhhcyBubyB0aW1lIHpvbmUgb3IgVVRDIG9mZnNldFwiIHNdIGluXG4gICAgbGV0IGZpbmRfem9uZSB6b25lX25hbWUgPVxuICAgICAgZmFpbHdpdGhmIFwidW5hYmxlIHRvIGxvb2t1cCBab25lICVzLiAgVHJ5IHVzaW5nIENvcmUuVGltZS5vZl9zdHJpbmdcIiB6b25lX25hbWUgKClcbiAgICBpblxuICAgIG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHNcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldFxuZW5kXG5cbmluY2x1ZGUgVG9fYW5kX29mX3N0cmluZ1xuXG5sZXQgbWluX3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIFNwYW4ubWluX3ZhbHVlX3JlcHJlc2VudGFibGVcbmxldCBtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxuXG4oKiBMZWdhY3kgZGVmaW5pdGlvbnMgYmFzZWQgb24gcm91bmRpbmcgdG8gdGhlIG5lYXJlc3QgbWljcm9zZWNvbmQuICopXG5sZXQgbWluX3ZhbHVlID0gbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBtYXhfdmFsdWUgPSBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IHRvX3RpbWUgPSB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcbmxldCBvZl90aW1lID0gb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG5cbm1vZHVsZSBfID0gc3RydWN0XG4gIG9wZW4gUHB4X21vZHVsZV90aW1lcl9ydW50aW1lXG5cbiAgbGV0ICgpID1cbiAgICBEdXJhdGlvbi5mb3JtYXRcbiAgICA6PSAobW9kdWxlIHN0cnVjdFxuICAgICAgbGV0IGR1cmF0aW9uX29mX3NwYW4gcyA9IHMgfD4gU3Bhbi50b19pbnQ2M19ucyB8PiBEdXJhdGlvbi5vZl9uYW5vc2Vjb25kc1xuICAgICAgbGV0IHNwYW5fb2ZfZHVyYXRpb24gZCA9IGQgfD4gRHVyYXRpb24udG9fbmFub3NlY29uZHMgfD4gU3Bhbi5vZl9pbnQ2M19uc1xuICAgICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPSBzdHJpbmcgfD4gU3Bhbi5vZl9zdHJpbmcgfD4gZHVyYXRpb25fb2Zfc3BhblxuXG4gICAgICBsZXQgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IGR1cmF0aW9ucyA9XG4gICAgICAgIGxldCBzcGFucyA9IGR1cmF0aW9ucyB8PiBMaXN0Lm1hcCB+ZjpzcGFuX29mX2R1cmF0aW9uIGluXG4gICAgICAgIGxldCB1bml0X29mX3RpbWUgPVxuICAgICAgICAgIHNwYW5zXG4gICAgICAgICAgfD4gTGlzdC5tYXhfZWx0IH5jb21wYXJlOlNwYW4uY29tcGFyZVxuICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZV9tYXBcbiAgICAgICAgICAgICAgIH5mOlNwYW4udG9fdW5pdF9vZl90aW1lXG4gICAgICAgICAgICAgICB+ZGVmYXVsdDpVbml0X29mX3RpbWUuTmFub3NlY29uZFxuICAgICAgICBpblxuICAgICAgICBzcGFucyB8PiBMaXN0Lm1hcCB+ZjooU3Bhbi50b19zdHJpbmdfaHVtIH51bml0X29mX3RpbWUgfmFsaWduX2RlY2ltYWw6dHJ1ZSlcbiAgICAgIDs7XG4gICAgZW5kKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxubW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIE1hcCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIFRhYmxlID0gc3RydWN0IGVuZFxubW9kdWxlIFpvbmUgPSBzdHJ1Y3QgZW5kXG5cbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgY29tcGFyYXRvciA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgZ2V0X3NleHBfem9uZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgaW50ZXJydXB0aWJsZV9wYXVzZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2ZfZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfc3RyaW5nX2FicyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgcGF1c2UgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHBhdXNlX2ZvcmV2ZXIgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHBwID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBzZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBzZXhwX29mX3QgPSBgVXNlX1RpbWVfbnNfdW5peF9vcl9UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5sZXQgc2V4cF9vZl90X2FicyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdF9vZl9zZXhwID0gYFVzZV9UaW1lX25zX3VuaXhfb3JfVGltZV9uc19hbHRlcm5hdGVfc2V4cFxubGV0IHRfb2Zfc2V4cF9hYnMgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX2RhdGVfb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0b19zdHJpbmdfZml4X3Byb3RvID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB2YWxpZGF0ZV9ib3VuZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdmFsaWRhdGVfbGJvdW5kID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB2YWxpZGF0ZV91Ym91bmQgPSBgVXNlX1RpbWVfbnNfdW5peFxuIiwiKCogQSBzdWJzdHJpbmcgaXMgYSBjb250aWd1b3VzIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcuICBXZSB1c2UgYVxuICAgZnVuY3RvciBiZWNhdXNlIHdlIHdhbnQgc3Vic3RyaW5ncyBvZiBbc3RyaW5nXSBhbmQgW2JpZ3N0cmluZ10uXG4qKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5pbmNsdWRlIE1ha2Vfc3Vic3RyaW5nX2ludGZcblxudHlwZSBiaWdzdHJpbmcgPSBCaWdzdHJpbmcudFxuXG5tb2R1bGUgQmxpdCA9IHN0cnVjdFxuICB0eXBlICgnc3JjLCAnZHN0KSB0ID0gKCdzcmMsICdkc3QpIEJsaXQuYmxpdG9cblxuICBsZXQgc3RyaW5nX2J5dGVzIH5zcmMgP3NyY19wb3MgP3NyY19sZW4gfmRzdCA/KGRzdF9wb3MgPSAwKSAoKSA9XG4gICAgbGV0IHNyY19wb3MsIGxlbiA9XG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4blxuICAgICAgICAoKVxuICAgICAgICA/cG9zOnNyY19wb3NcbiAgICAgICAgP2xlbjpzcmNfbGVuXG4gICAgICAgIH50b3RhbF9sZW5ndGg6KFN0cmluZy5sZW5ndGggc3JjKVxuICAgIGluXG4gICAgQnl0ZXMuRnJvbV9zdHJpbmcuYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW4gfmRzdCB+ZHN0X3Bvc1xuICA7O1xuXG4gIGxldCBzdHJpbmdfc3RyaW5nID0gc3RyaW5nX2J5dGVzXG4gIGxldCBieXRlc19ieXRlcyA9IEJ5dGVzLmJsaXRvXG4gIGxldCBzdHJpbmdfYmlnc3RyaW5nID0gQmlnc3RyaW5nLkZyb21fc3RyaW5nLmJsaXRvXG4gIGxldCBieXRlc19iaWdzdHJpbmcgPSBCaWdzdHJpbmcuRnJvbV9ieXRlcy5ibGl0b1xuICBsZXQgYmlnc3RyaW5nX2JpZ3N0cmluZyA9IEJpZ3N0cmluZy5ibGl0b1xuICBsZXQgYmlnc3RyaW5nX3N0cmluZyA9IEJpZ3N0cmluZy5Ub19ieXRlcy5ibGl0b1xuICBsZXQgYmlnc3RyaW5nX2J5dGVzID0gQmlnc3RyaW5nLlRvX2J5dGVzLmJsaXRvXG5lbmRcblxuKCogV2UgY2FuJ3QgY2FsbCB0aGUgYmFzZSBtb2R1bGUgW0Jhc2VdIGJlY2F1c2UgW0BAZGVyaXZpbmcgcXVpY2tjaGVja10gd2FudHMgdG8gYWNjZXNzXG4gICB0aGUgW0Jhc2VdIGxpYnJhcnkgZGlyZWN0bHksIGFuZCB3ZSdkIGJlIHNoYWRvd2luZyBpdC4gKilcbm1vZHVsZSBGIChVbmRlcmx5aW5nIDogQmFzZSkgOiBTIHdpdGggdHlwZSBiYXNlID0gVW5kZXJseWluZy50ID0gc3RydWN0XG4gIHR5cGUgYmFzZSA9IFVuZGVybHlpbmcudFxuXG4gIHR5cGUgdCA9XG4gICAgeyBiYXNlIDogVW5kZXJseWluZy50XG4gICAgOyBwb3MgOiBpbnRcbiAgICA7IGxlbiA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICAoKiBub3RlIHdlIG92ZXJyaWRlIHRoZSBnZW5lcmF0ZWQgW3F1aWNrY2hlY2tfZ2VuZXJhdG9yXSBiZWxvdywgb25jZSB3ZSd2ZSBkZWZpbmVkXG4gICAgIFtjcmVhdGVdICopXG5cbiAgKCoge1tcbiAgICAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgICAgYXNzZXJ0ICgwIDw9IHQucG9zKTtcbiAgICAgICAgIGFzc2VydCAoMCA8PSB0Lmxlbik7XG4gICAgICAgICBhc3NlcnQgKHQucG9zICsgdC5sZW4gPD0gQmFzZS5sZW5ndGggdC5iYXNlKTtcbiAgICAgICA7OyBdfSAqKVxuXG4gIGxldCBiYXNlIHQgPSB0LmJhc2VcbiAgbGV0IHBvcyB0ID0gdC5wb3NcbiAgbGV0IGxlbmd0aCB0ID0gdC5sZW5cbiAgbGV0IGlzX2VtcHR5IHQgPSBJbnQuZXF1YWwgdC5sZW4gMFxuXG4gIGxldCBiYXNlX29mX3N0cmluZyBzID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGJ1ZiA9IFVuZGVybHlpbmcuY3JlYXRlIGxlbiBpblxuICAgIFVuZGVybHlpbmcuYmxpdF9mcm9tX3N0cmluZyB+c3JjOnMgfmRzdDpidWYgKCk7XG4gICAgYnVmXG4gIDs7XG5cbiAgbGV0IGJhc2Vfb2ZfYmlnc3RyaW5nIHMgPVxuICAgIGxldCBsZW4gPSBCaWdzdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYnVmID0gVW5kZXJseWluZy5jcmVhdGUgbGVuIGluXG4gICAgVW5kZXJseWluZy5ibGl0X2Zyb21fYmlnc3RyaW5nIH5zcmM6cyB+ZHN0OmJ1ZiAoKTtcbiAgICBidWZcbiAgOztcblxuICBsZXQgY3JlYXRlID9wb3MgP2xlbiBiYXNlID1cbiAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG5cbiAgICAgICAgKClcbiAgICAgICAgP3Bvc1xuICAgICAgICA/bGVuXG4gICAgICAgIH50b3RhbF9sZW5ndGg6KFVuZGVybHlpbmcubGVuZ3RoIGJhc2UpXG4gICAgaW5cbiAgICB7IGJhc2U7IHBvczsgbGVuIH1cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIGxldCBvcGVuIFF1aWNrY2hlY2suTGV0X3N5bnRheCBpblxuICAgIGxldCViaW5kIGJhc2UgPSBVbmRlcmx5aW5nLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIGluXG4gICAgbGV0IGJhc2VfbGVuID0gVW5kZXJseWluZy5sZW5ndGggYmFzZSBpblxuICAgIGxldCViaW5kIGxlbiA9IEludC5nZW5fdW5pZm9ybV9pbmNsIDAgYmFzZV9sZW4gaW5cbiAgICBsZXQlYmluZCBwb3MgPSBJbnQuZ2VuX3VuaWZvcm1faW5jbCAwIChiYXNlX2xlbiAtIGxlbikgaW5cbiAgICByZXR1cm4gKGNyZWF0ZSB+cG9zIH5sZW4gYmFzZSlcbiAgOztcblxuICBsZXQgZ2V0X25vX2JvdW5kc19jaGVjayB0IGkgPSBVbmRlcmx5aW5nLmdldCAoYmFzZSB0KSAocG9zIHQgKyBpKVxuXG4gIGxldCBnZXQgdCBpID1cbiAgICBpZiBpID49IDAgJiYgaSA8IGxlbmd0aCB0XG4gICAgdGhlbiBnZXRfbm9fYm91bmRzX2NoZWNrIHQgaVxuICAgIGVsc2UgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpXG4gIDs7XG5cbiAgbGV0IHN1YiA/cG9zID9sZW4gdCA9XG4gICAgbGV0IHBvcywgbGVuID1cbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgICBpblxuICAgIHsgYmFzZSA9IHQuYmFzZTsgcG9zID0gdC5wb3MgKyBwb3M7IGxlbiB9XG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXJnID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIG1vZHVsZSBFbHQgPSBDaGFyXG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCByZWMgZ28gYWNjIGkgPSBpZiBpID49IGxlbmd0aCB0IHRoZW4gYWNjIGVsc2UgZ28gKGYgYWNjIChnZXQgdCBpKSkgKGkgKyAxKSBpblxuICAgICAgZ28gaW5pdCAwIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgICAgICAgICAgIGYgKGdldCB0IGkpXG4gICAgICAgICAgIGRvbmUpXG4gICAgOztcblxuICAgIGxldCBmb2xkaSA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+aW5pdCB+ZiAtPlxuICAgICAgICAgICBsZXQgcmVjIGdvIGFjYyBpID1cbiAgICAgICAgICAgICBpZiBpID49IGxlbmd0aCB0IHRoZW4gYWNjIGVsc2UgZ28gKGYgaSBhY2MgKGdldF9ub19ib3VuZHNfY2hlY2sgdCBpKSkgKGkgKyAxKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBnbyBpbml0IDAgW0Bub250YWlsXSlcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXJpID1cbiAgICAgIGBDdXN0b21cbiAgICAgICAgKGZ1biB0IH5mIC0+XG4gICAgICAgICAgIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICAgICAgICAgICBmIGkgKGdldF9ub19ib3VuZHNfY2hlY2sgdCBpKVxuICAgICAgICAgICBkb25lKVxuICAgIDs7XG5cbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kXG5cbiAgbW9kdWxlIEMgPSBJbmRleGVkX2NvbnRhaW5lci5NYWtlMCAoTWFrZV9hcmcpXG5cbiAgbGV0IGZvbGQgPSBDLmZvbGRcbiAgbGV0IGl0ZXIgPSBDLml0ZXJcbiAgbGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxuICBsZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG4gICgqIFtDLnRvX2xpc3RdIGhhcyB0byBjb25zdHJ1Y3QgdGhlbiByZXZlcnNlIHRoZSBsaXN0ICopXG4gIGxldCB0b19saXN0IHQgPSBMaXN0LmluaXQgKGxlbmd0aCB0KSB+ZjooZ2V0IHQpXG4gIGxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbiAgbGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxuICBsZXQgZmluZCA9IEMuZmluZFxuICBsZXQgZXhpc3RzID0gQy5leGlzdHNcbiAgbGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbiAgbGV0IG1lbSA9IEMubWVtXG4gIGxldCBjb3VudCA9IEMuY291bnRcbiAgbGV0IHN1bSA9IEMuc3VtXG4gIGxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG4gIGxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG4gIGxldCBmb2xkaSA9IEMuZm9sZGlcbiAgbGV0IGl0ZXJpID0gQy5pdGVyaVxuICBsZXQgZXhpc3RzaSA9IEMuZXhpc3RzaVxuICBsZXQgZm9yX2FsbGkgPSBDLmZvcl9hbGxpXG4gIGxldCBjb3VudGkgPSBDLmNvdW50aVxuICBsZXQgZmluZGkgPSBDLmZpbmRpXG4gIGxldCBmaW5kX21hcGkgPSBDLmZpbmRfbWFwaVxuXG4gIGxldCB3cmFwX3N1Yl9uIHQgbiB+bmFtZSB+cG9zIH5sZW4gfm9uX2Vycm9yID1cbiAgICBpZiBuIDwgMFxuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIChuYW1lIF4gXCIgZXhwZWN0aW5nIG5vbm5lZ2F0aXZlIGFyZ3VtZW50XCIpXG4gICAgZWxzZSAoXG4gICAgICB0cnkgc3ViIHQgfnBvcyB+bGVuIHdpdGhcbiAgICAgIHwgXyAtPiBvbl9lcnJvcilcbiAgOztcblxuICBsZXQgZHJvcF9wcmVmaXggdCBuID1cbiAgICB3cmFwX3N1Yl9uXG4gICAgICB+bmFtZTpcImRyb3BfcHJlZml4XCJcbiAgICAgIHRcbiAgICAgIG5cbiAgICAgIH5wb3M6blxuICAgICAgfmxlbjoobGVuZ3RoIHQgLSBuKVxuICAgICAgfm9uX2Vycm9yOnsgdCB3aXRoIGxlbiA9IDAgfVxuICA7O1xuXG4gIGxldCBkcm9wX3N1ZmZpeCB0IG4gPVxuICAgIHdyYXBfc3ViX25cbiAgICAgIH5uYW1lOlwiZHJvcF9zdWZmaXhcIlxuICAgICAgdFxuICAgICAgblxuICAgICAgfnBvczowXG4gICAgICB+bGVuOihsZW5ndGggdCAtIG4pXG4gICAgICB+b25fZXJyb3I6eyB0IHdpdGggbGVuID0gMCB9XG4gIDs7XG5cbiAgbGV0IHByZWZpeCB0IG4gPSB3cmFwX3N1Yl9uIH5uYW1lOlwicHJlZml4XCIgdCBuIH5wb3M6MCB+bGVuOm4gfm9uX2Vycm9yOnRcbiAgbGV0IHN1ZmZpeCB0IG4gPSB3cmFwX3N1Yl9uIH5uYW1lOlwic3VmZml4XCIgdCBuIH5wb3M6KGxlbmd0aCB0IC0gbikgfmxlbjpuIH5vbl9lcnJvcjp0XG5cbiAgbGV0IGJsaXRfdG8gKHR5cGUgYSkgKGJsaXQgOiAoVW5kZXJseWluZy50LCBhKSBCbGl0LnQpIHQgfmRzdCB+ZHN0X3BvcyA9XG4gICAgYmxpdCB+c3JjOnQuYmFzZSB+c3JjX3Bvczp0LnBvcyB+c3JjX2xlbjp0LmxlbiB+ZHN0IH5kc3RfcG9zICgpXG4gIDs7XG5cbiAgbGV0IGJsaXRfdG9fc3RyaW5nID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRfdG9fYnl0ZXNcbiAgbGV0IGJsaXRfdG9fYnl0ZXMgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdF90b19ieXRlc1xuICBsZXQgYmxpdF90b19iaWdzdHJpbmcgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdF90b19iaWdzdHJpbmdcbiAgbGV0IGJsaXRfYmFzZSA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0XG5cbiAgbGV0IGJsaXRfZnJvbSB+bmFtZSAodHlwZSBhKSAoYmxpdCA6IChhLCBiYXNlKSBCbGl0LnQpIHQgfnNyYyB+c3JjX3BvcyB+bGVuID1cbiAgICBpZiBsZW4gPiB0LmxlblxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoZlxuICAgICAgICBcIlN1YnN0cmluZy5ibGl0X2Zyb21fJXMgbGVuID4gc3Vic3RyaW5nIGxlbmd0aCA6ICVkID4gJWRcIlxuICAgICAgICBuYW1lXG4gICAgICAgIGxlblxuICAgICAgICB0LmxlblxuICAgICAgICAoKTtcbiAgICBibGl0IH5zcmMgfnNyY19wb3MgfnNyY19sZW46bGVuIH5kc3Q6dC5iYXNlIH5kc3RfcG9zOnQucG9zICgpXG4gIDs7XG5cbiAgbGV0IGJsaXRfZnJvbV9zdHJpbmcgPSBibGl0X2Zyb20gfm5hbWU6XCJzdHJpbmdcIiBVbmRlcmx5aW5nLmJsaXRfZnJvbV9zdHJpbmdcbiAgbGV0IGJsaXRfZnJvbV9iaWdzdHJpbmcgPSBibGl0X2Zyb20gfm5hbWU6XCJiaWdzdHJpbmdcIiBVbmRlcmx5aW5nLmJsaXRfZnJvbV9iaWdzdHJpbmdcbiAgbGV0IG9mX2Jhc2UgYmFzZSA9IHsgYmFzZTsgcG9zID0gMDsgbGVuID0gVW5kZXJseWluZy5sZW5ndGggYmFzZSB9XG4gIGxldCBvZl9zdHJpbmcgeCA9IG9mX2Jhc2UgKGJhc2Vfb2Zfc3RyaW5nIHgpXG4gIGxldCBvZl9iaWdzdHJpbmcgeCA9IG9mX2Jhc2UgKGJhc2Vfb2ZfYmlnc3RyaW5nIHgpXG5cbiAgbGV0IG1ha2UgKHR5cGUgYSkgY3JlYXRlIChibGl0IDogKGJhc2UsIGEpIEJsaXQudCkgdCA9XG4gICAgbGV0IGRzdCA9IGNyZWF0ZSB0LmxlbiBpblxuICAgIGJsaXQgfnNyYzp0LmJhc2UgfnNyY19wb3M6dC5wb3MgfnNyY19sZW46dC5sZW4gfmRzdCB+ZHN0X3BvczowICgpO1xuICAgIGRzdFxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgeCA9XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZ1xuICAgICAgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KG1ha2UgQnl0ZXMuY3JlYXRlIFVuZGVybHlpbmcuYmxpdF90b19ieXRlcyB4KVxuICA7O1xuXG4gIGxldCB0b19iaWdzdHJpbmcgPSBtYWtlIEJpZ3N0cmluZy5jcmVhdGUgVW5kZXJseWluZy5ibGl0X3RvX2JpZ3N0cmluZ1xuXG4gIGxldCBjb25jYXRfZ2VuIGNyZWF0ZV9kc3QgYmxpdF9kc3QgdHMgPVxuICAgIGxldCBsZW4gPSBMaXN0LmZvbGQgdHMgfmluaXQ6MCB+ZjooZnVuIGxlbiB0IC0+IGxlbiArIGxlbmd0aCB0KSBpblxuICAgIGxldCBkc3QgPSBjcmVhdGVfZHN0IGxlbiBpblxuICAgIGlnbm9yZVxuICAgICAgKExpc3QuZm9sZCB0cyB+aW5pdDowIH5mOihmdW4gZHN0X3BvcyB0IC0+XG4gICAgICAgICBibGl0X2RzdCB0IH5kc3QgfmRzdF9wb3M7XG4gICAgICAgICBkc3RfcG9zICsgbGVuZ3RoIHQpXG4gICAgICAgOiBpbnQpO1xuICAgIGRzdFxuICA7O1xuXG4gIGxldCBjb25jYXQgdHMgPSBvZl9iYXNlIChjb25jYXRfZ2VuIFVuZGVybHlpbmcuY3JlYXRlIGJsaXRfYmFzZSB0cylcblxuICBsZXQgY29uY2F0X3N0cmluZyB0cyA9XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZ1xuICAgICAgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KGNvbmNhdF9nZW4gQnl0ZXMuY3JlYXRlIGJsaXRfdG9fc3RyaW5nIHRzKVxuICA7O1xuXG4gIGxldCBjb25jYXRfYmlnc3RyaW5nIHRzID0gY29uY2F0X2dlbiBCaWdzdHJpbmcuY3JlYXRlIGJsaXRfdG9fYmlnc3RyaW5nIHRzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTID0gTWFrZV9zdWJzdHJpbmcuU1xuXG5pbmNsdWRlIE1ha2Vfc3Vic3RyaW5nLkYgKHN0cnVjdFxuICAgIHR5cGUgdCA9IEJ5dGVzLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICAgIGxldCBjcmVhdGUgPSBCeXRlcy5jcmVhdGVcbiAgICBsZXQgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoXG4gICAgbGV0IGdldCA9IEJ5dGVzLmdldFxuXG4gICAgbW9kdWxlIEJsaXQgPSBNYWtlX3N1YnN0cmluZy5CbGl0XG5cbiAgICBsZXQgYmxpdCA9IEJsaXQuYnl0ZXNfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19zdHJpbmcgPSBCbGl0LmJ5dGVzX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fYnl0ZXMgPSBCbGl0LmJ5dGVzX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fYmlnc3RyaW5nID0gQmxpdC5ieXRlc19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF9mcm9tX3N0cmluZyA9IEJsaXQuc3RyaW5nX2J5dGVzXG4gICAgbGV0IGJsaXRfZnJvbV9iaWdzdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19ieXRlc1xuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5pbmNsdWRlIFN0cmluZ19pZF9pbnRmXG5cbm1vZHVsZSBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlcl93aXRoX2Jpbl9zaGFwZSAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCB2YWxpZGF0ZSA6IHN0cmluZyAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICB2YWwgaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb24gOiBib29sXG4gICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9wcm90LlNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBzdHJpbmdcbiAgICAgICAgW0BAZGVyaXZpbmdcbiAgICAgICAgICBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICAgIGxldCBjaGVja19mb3Jfd2hpdGVzcGFjZSA9XG4gICAgICAgICAgbGV0IGludmFsaWQgcyByZWFzb24gPVxuICAgICAgICAgICAgRXJyb3IgKHNwcmludGYgXCInJXMnIGlzIG5vdCBhIHZhbGlkICVzIGJlY2F1c2UgJXNcIiBzIE0ubW9kdWxlX25hbWUgcmVhc29uKVxuICAgICAgICAgIGluXG4gICAgICAgICAgZnVuIHMgLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgIGlmIEludC4oID0gKSBsZW4gMFxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkIHMgXCJpdCBpcyBlbXB0eVwiXG4gICAgICAgICAgICBlbHNlIGlmIENoYXIuaXNfd2hpdGVzcGFjZSBzLlswXSB8fCBDaGFyLmlzX3doaXRlc3BhY2Ugcy5bbGVuIC0gMV1cbiAgICAgICAgICAgIHRoZW4gaW52YWxpZCBzIFwiaXQgaGFzIHdoaXRlc3BhY2Ugb24gdGhlIGVkZ2VcIlxuICAgICAgICAgICAgZWxzZSBPayAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB2YWxpZGF0ZSBzID0gUmVzdWx0Lm1hcF9lcnJvciAoTS52YWxpZGF0ZSBzKSB+ZjpFcnJvci50b19zdHJpbmdfbWFjaFxuXG4gICAgICAgIGxldCBjaGVjayBzID1cbiAgICAgICAgICBpZiBNLmluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaCBjaGVja19mb3Jfd2hpdGVzcGFjZSBzIHdpdGhcbiAgICAgICAgICAgIHwgT2sgKCkgLT4gdmFsaWRhdGUgc1xuICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciBlcnJvcilcbiAgICAgICAgICBlbHNlIHZhbGlkYXRlIHNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gRm4uaWRcbiAgICAgICAgbGV0IHBwID0gU3RyaW5nLnBwXG5cbiAgICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgICBtYXRjaCBjaGVjayBzIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IHNcbiAgICAgICAgICB8IEVycm9yIGVyciAtPiBpbnZhbGlkX2FyZyBlcnJcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIGxldCBzID0gU3RyaW5nLlN0YWJsZS5WMS50X29mX3NleHAgc2V4cCBpblxuICAgICAgICAgIG1hdGNoIGNoZWNrIHMgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gc1xuICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IG9mX3NleHBfZXJyb3IgZXJyIHNleHBcbiAgICAgICAgOztcblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgICAgKFN0cmluZylcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RyaW5nXG4gICAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgICAgICBsZXQgb3BlbiBCaW5fcHJvdC5TaGFwZSBpblxuICAgICAgICAgIG1hdGNoIE0uY2FsbGVyX2lkZW50aXR5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYmluX3NoYXBlX3RcbiAgICAgICAgICB8IFNvbWUgdXVpZCAtPiBhbm5vdGF0ZSB1dWlkIGJpbl9zaGFwZV90XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFRfd2l0aF9jb21wYXJhdG9yID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgVFxuICAgICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUX3dpdGhfY29tcGFyYXRvclxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFRfd2l0aF9jb21wYXJhdG9yKVxuICAgICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUX3dpdGhfY29tcGFyYXRvcilcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YWJsZV9sYXRlc3QgPSBTdGFibGUuVjFcbiAgaW5jbHVkZSBTdGFibGVfbGF0ZXN0LlRfd2l0aF9jb21wYXJhdG9yXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoU3RhYmxlX2xhdGVzdC5UX3dpdGhfY29tcGFyYXRvcilcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFN0YWJsZV9sYXRlc3QuVF93aXRoX2NvbXBhcmF0b3IpXG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBRdWlja2NoZWNrLlNocmlua2VyLmVtcHR5ICgpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gU3RyaW5nLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFN0cmluZy5nZW5fbm9uZW1wdHknIENoYXIuZ2VuX3ByaW50XG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyIH5mOihmdW4gc3RyaW5nIC0+IGNoZWNrIHN0cmluZyB8PiBSZXN1bHQuaXNfb2spXG4gIDs7XG5cbiAgbGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgb2Zfc3RyaW5nXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHZhbGlkYXRlIDogc3RyaW5nIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA6IGJvb2xcbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBpbmNsdWRlXG4gICAgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXJfd2l0aF9iaW5fc2hhcGVcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBNXG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgICAgIGVuZClcbiAgICAgICgpXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aG91dF9wcmV0dHlfcHJpbnRlciAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGVcbiAgICBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlclxuICAgICAgKHN0cnVjdFxuICAgICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICAgIGxldCB2YWxpZGF0ZSA9IEZuLmNvbnN0IChPayAoKSlcbiAgICAgICAgbGV0IGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uID0gdHJ1ZVxuICAgICAgZW5kKVxuICAgICAgKClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX3ZhbGlkYXRlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHZhbGlkYXRlIDogc3RyaW5nIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA6IGJvb2xcbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNKSAoKVxuXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNKSAoKVxuXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2Rpc3RpbmN0X2Jpbl9zaGFwZSAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fcHJvdC5TaGFwZS5VdWlkLnRcbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBpbmNsdWRlXG4gICAgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXJfd2l0aF9iaW5fc2hhcGVcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgICAgICBsZXQgdmFsaWRhdGUgPSBGbi5jb25zdCAoT2sgKCkpXG4gICAgICAgIGxldCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA9IHRydWVcbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IFNvbWUgTS5jYWxsZXJfaWRlbnRpdHlcbiAgICAgIGVuZClcbiAgICAgICgpXG5cbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgZW5kKVxuZW5kXG5cbmluY2x1ZGVcbiAgTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5TdHJpbmdfaWRcIlxuICAgIGVuZClcbiAgICAoKVxuXG5tb2R1bGUgU3RyaW5nX3dpdGhvdXRfdmFsaWRhdGlvbl93aXRob3V0X3ByZXR0eV9wcmludGVyID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGdsb2JhbGl6ZSA9IGdsb2JhbGl6ZV9zdHJpbmdcbiAgbGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgRm4uaWRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBTdGFibGVfdW5pdF90ZXN0X2ludGZcblxubW9kdWxlIE1ha2Vfc2V4cF9kZXNlcmlhbGl6YXRpb25fdGVzdCAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGxldCV0ZXN0X3VuaXQgXCJzZXhwIGRlc2VyaWFsaXphdGlvblwiID1cbiAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG4gICAgICAoTGlzdC5tYXAgVC50ZXN0cyB+ZjooZnVuICh0LCBzZXhwX2FzX3N0cmluZywgXykgLT5cbiAgICAgICAgIG1hdGNoXG4gICAgICAgICAgIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgICBzZXhwX2FzX3N0cmluZyB8PiBTZXhwLm9mX3N0cmluZyB8PiBbJW9mX3NleHA6IFQudF0pXG4gICAgICAgICB3aXRoXG4gICAgICAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT5cbiAgICAgICAgICAgT3JfZXJyb3IudGFnX2FyZ1xuICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgXCJjb3VsZCBub3QgZGVzZXJpYWxpemUgc2V4cFwiXG4gICAgICAgICAgICAgKHNleHBfYXNfc3RyaW5nLCBgRXhwZWN0ZWQgdClcbiAgICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIFsgYEV4cGVjdGVkIG9mIFQudCBdXVxuICAgICAgICAgfCBPayB0JyAtPlxuICAgICAgICAgICBpZiBULmVxdWFsIHQgdCdcbiAgICAgICAgICAgdGhlbiBPayAoKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAgICAgIFwic2V4cCBkZXNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSkpXG4gICAgfD4gb2tfZXhuXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2Vfc2V4cF9zZXJpYWxpemF0aW9uX3Rlc3QgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBsZXQldGVzdF91bml0IFwic2V4cCBzZXJpYWxpemF0aW9uXCIgPVxuICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgIChMaXN0Lm1hcCBULnRlc3RzIH5mOihmdW4gKHQsIHNleHBfYXNfc3RyaW5nLCBfKSAtPlxuICAgICAgICAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICBsZXQgc2V4cCA9IFNleHAub2Zfc3RyaW5nIHNleHBfYXNfc3RyaW5nIGluXG4gICAgICAgICAgIGxldCBzZXJpYWxpemVkX3NleHAgPSBULnNleHBfb2ZfdCB0IGluXG4gICAgICAgICAgIGlmIFNleHAuKCA8PiApIHNlcmlhbGl6ZWRfc2V4cCBzZXhwXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgIFwic2V4cCBzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAgICAgIChgRXhwZWN0ZWQgc2V4cCwgYEJ1dF9nb3Qgc2VyaWFsaXplZF9zZXhwKVxuICAgICAgICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBTZXhwLnQgXSAqIFsgYEJ1dF9nb3Qgb2YgU2V4cC50IF1dKSkpXG4gICAgfD4gb2tfZXhuXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluX2lvX3Rlc3QgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBsZXQldGVzdF91bml0IFwiYmluX2lvXCIgPVxuICAgIExpc3QuaXRlciBULnRlc3RzIH5mOihmdW4gKHQsIF8sIGV4cGVjdGVkX2Jpbl9pbykgLT5cbiAgICAgIGxldCBiaW5hYmxlX20gPSAobW9kdWxlIFQgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgPSBULnQpIGluXG4gICAgICBsZXQgdG9fYmluX3N0cmluZyB0ID0gQmluYWJsZS50b19zdHJpbmcgYmluYWJsZV9tIHQgaW5cbiAgICAgIGxldCBzZXJpYWxpemVkX2Jpbl9pbyA9IHRvX2Jpbl9zdHJpbmcgdCBpblxuICAgICAgaWYgU3RyaW5nLiggPD4gKSBzZXJpYWxpemVkX2Jpbl9pbyBleHBlY3RlZF9iaW5faW9cbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiYmluX2lvIHNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICh0LCBgRXhwZWN0ZWQgZXhwZWN0ZWRfYmluX2lvLCBgQnV0X2dvdCBzZXJpYWxpemVkX2Jpbl9pbylcbiAgICAgICAgICBbJXNleHBfb2Y6IFQudCAqIFsgYEV4cGVjdGVkIG9mIHN0cmluZyBdICogWyBgQnV0X2dvdCBvZiBzdHJpbmcgXV07XG4gICAgICBsZXQgdCcgPSBCaW5hYmxlLm9mX3N0cmluZyBiaW5hYmxlX20gc2VyaWFsaXplZF9iaW5faW8gaW5cbiAgICAgIGlmIG5vdCAoVC5lcXVhbCB0IHQnKVxuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJiaW5faW8gZGVzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIHQsIGBCdXRfZ290IHQnKVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9zZXhwX2Rlc2VyaWFsaXphdGlvbl90ZXN0IChUKVxuICBpbmNsdWRlIE1ha2Vfc2V4cF9zZXJpYWxpemF0aW9uX3Rlc3QgKFQpXG4gIGluY2x1ZGUgTWFrZV9iaW5faW9fdGVzdCAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV91bm9yZGVyZWRfY29udGFpbmVyIChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLlVub3JkZXJlZF9jb250YWluZXJfYXJnKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFRlc3QgPSBTdGFibGVfdW5pdF90ZXN0X2ludGYuVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0XG5cbiAgbGV0JXRlc3RfdW5pdCBcInNleHBcIiA9XG4gICAgTGlzdC5pdGVyIFQudGVzdHMgfmY6KGZ1biAodCwgeyBUZXN0LnNleHBzOyBfIH0pIC0+XG4gICAgICBsZXQgc2V4cHMgPSBMaXN0Lm1hcCBzZXhwcyB+ZjpTZXhwLm9mX3N0cmluZyBpblxuICAgICAgbGV0IHNlcmlhbGl6ZWRfZWxlbWVudHMgPVxuICAgICAgICBtYXRjaCBULnNleHBfb2ZfdCB0IHdpdGhcbiAgICAgICAgfCBTZXhwLkxpc3Qgc2V4cHMgLT4gc2V4cHNcbiAgICAgICAgfCBTZXhwLkF0b20gXyAtPlxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJleHBlY3RlZCBsaXN0IHdoZW4gc2VyaWFsaXppbmcgdW5vcmRlcmVkIGNvbnRhaW5lclwiXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBULnNleHBfb2ZfdFxuICAgICAgaW5cbiAgICAgIGxldCBzb3J0ZWRfc2V4cHMgPSBMaXN0LnNvcnQgfmNvbXBhcmU6U2V4cC5jb21wYXJlIHNleHBzIGluXG4gICAgICBsZXQgc29ydGVkX3NlcmlhbGl6ZWQgPSBMaXN0LnNvcnQgfmNvbXBhcmU6U2V4cC5jb21wYXJlIHNlcmlhbGl6ZWRfZWxlbWVudHMgaW5cbiAgICAgIGlmIG5vdCAoTGlzdC5lcXVhbCBTZXhwLiggPSApIHNvcnRlZF9zZXhwcyBzb3J0ZWRfc2VyaWFsaXplZClcbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwic2V4cCBzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIHNleHBzLCBgQnV0X2dvdCBzZXJpYWxpemVkX2VsZW1lbnRzKVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgU2V4cC50IGxpc3QgXSAqIFsgYEJ1dF9nb3Qgb2YgU2V4cC50IGxpc3QgXV07XG4gICAgICBsZXQgc2V4cF9wZXJtdXRhdGlvbnMgPSBMaXN0LmluaXQgMTAgfmY6KGZ1biBfIC0+IExpc3QucGVybXV0ZSBzZXhwcykgaW5cbiAgICAgIExpc3QuaXRlciBzZXhwX3Blcm11dGF0aW9ucyB+ZjooZnVuIHNleHBzIC0+XG4gICAgICAgIGxldCB0JyA9IFQudF9vZl9zZXhwIChTZXhwLkxpc3Qgc2V4cHMpIGluXG4gICAgICAgIGlmIG5vdCAoVC5lcXVhbCB0IHQnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcInNleHAgZGVzZXJpYWxpemF0aW9uIG1zaW1hdGNoXCJcbiAgICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pKVxuICA7O1xuXG4gIGxldCByZWMgaXNfY29uY2F0ZW5hdGlvbiBzdHJpbmcgc3RyaW5ncyA9XG4gICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZ1xuICAgIHRoZW4gTGlzdC5mb3JfYWxsIHN0cmluZ3MgfmY6U3RyaW5nLmlzX2VtcHR5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgcmV2X3NraXBwZWQgc3RyaW5ncyA9XG4gICAgICAgIG1hdGNoIHN0cmluZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICAgIHwgcHJlZml4IDo6IHN0cmluZ3MgLT5cbiAgICAgICAgICBsZXQgY29udGludWUgKCkgPSBsb29wIChwcmVmaXggOjogcmV2X3NraXBwZWQpIHN0cmluZ3MgaW5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmNob3BfcHJlZml4IH5wcmVmaXggc3RyaW5nIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IGNvbnRpbnVlICgpXG4gICAgICAgICAgIHwgU29tZSBzdHJpbmcgLT5cbiAgICAgICAgICAgICBpc19jb25jYXRlbmF0aW9uIHN0cmluZyAoTGlzdC5yZXZfYXBwZW5kIHJldl9za2lwcGVkIHN0cmluZ3MpIHx8IGNvbnRpbnVlICgpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgW10gc3RyaW5ncylcbiAgOztcblxuICBsZXQldGVzdF91bml0IFwiYmluX2lvXCIgPVxuICAgIExpc3QuaXRlciBULnRlc3RzIH5mOihmdW4gKHQsIHsgVGVzdC5iaW5faW9faGVhZGVyOyBiaW5faW9fZWxlbWVudHM7IF8gfSkgLT5cbiAgICAgIGxldCBiaW5hYmxlX20gPSAobW9kdWxlIFQgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgPSBULnQpIGluXG4gICAgICBsZXQgZWxlbWVudHMgPSBiaW5faW9fZWxlbWVudHMgaW5cbiAgICAgIGxldCBiaW5faW9fb2ZfZWxlbWVudHMgZWxlbWVudHMgPSBiaW5faW9faGVhZGVyIF4gU3RyaW5nLmNvbmNhdCBlbGVtZW50cyBpblxuICAgICAgbGV0IHNlcmlhbGl6ZWQgPSBCaW5hYmxlLnRvX3N0cmluZyBiaW5hYmxlX20gdCBpblxuICAgICAgbGV0IHNlcmlhbGl6YXRpb25fbWF0Y2hlcyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5jaG9wX3ByZWZpeCB+cHJlZml4OmJpbl9pb19oZWFkZXIgc2VyaWFsaXplZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgZWxlbWVudHNfc3RyaW5nIC0+IGlzX2NvbmNhdGVuYXRpb24gZWxlbWVudHNfc3RyaW5nIGVsZW1lbnRzXG4gICAgICBpblxuICAgICAgaWYgbm90IHNlcmlhbGl6YXRpb25fbWF0Y2hlc1xuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIChiaW5faW9faGVhZGVyLCBlbGVtZW50cyksIGBCdXRfZ290IHNlcmlhbGl6ZWQpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBzdHJpbmcgKiBzdHJpbmcgbGlzdCBdICogWyBgQnV0X2dvdCBvZiBzdHJpbmcgXV07XG4gICAgICBsZXQgcGVybXV0YXRhdGlvbnMgPSBMaXN0LmluaXQgMTAgfmY6KGZ1biBfIC0+IExpc3QucGVybXV0ZSBlbGVtZW50cykgaW5cbiAgICAgIExpc3QuaXRlciBwZXJtdXRhdGF0aW9ucyB+ZjooZnVuIGVsZW1lbnRzIC0+XG4gICAgICAgIGxldCB0JyA9IEJpbmFibGUub2Zfc3RyaW5nIGJpbmFibGVfbSAoYmluX2lvX29mX2VsZW1lbnRzIGVsZW1lbnRzKSBpblxuICAgICAgICBpZiBub3QgKFQuZXF1YWwgdCB0JylcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJiaW4taW8gZGVzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pKVxuICA7O1xuZW5kXG5cbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxuKCogVGhlIG1vZHVsZSBbVF0gc2VydmVzIHRvIGVuZm9yY2UgdGhlIGludmFyaWFudCB0aGF0IGFsbCBCbGFuZy50IHZhbHVlcyBhcmUgaW4gYVxuICAgbm9ybWFsIGZvcm0gd2hlcmVieSBib29sZWFuIGNvbnN0YW50cyBUcnVlIGFuZCBGYWxzZSBvbmx5IGFwcGVhciBhcyB0aGUgdG9wbW9zdFxuICAgY29uc3RydWN0b3IgLS0gaW4gYW55IG90aGVyIHBvc2l0aW9uIHRoZXkgYXJlIHNpbXBsaWZpZWQgYXdheSB1c2luZyBsYXdzIG9mXG4gICBib29sZWFuIGFsZ2VicmEuXG5cbiAgIFdlIGFsc28gZW5mb3JjZSB0aGF0IG5lc3RlZCBbQW5kXXMgYW5kIFtPcl1zIGVhY2ggbGVhbiB0byB0aGUgcmlnaHQgc28gdGhhdCBbZXZhbF1cbiAgIGRvZXNuJ3QgbmVlZCBzbyBtdWNoIHN0YWNrIHNwYWNlIGFzIGl0IHdvdWxkIGlmIHRoZXkgbGVhbmVkIHRvIHRoZSBsZWZ0LiAgVGhvdWdodFxuICAgZXhwZXJpbWVudDogY29tcGFyZSBob3cgW2V2YWxdIHdvcmtzIG9uIHJpZ2h0LWxlYW5pbmcgW0FuZCAoYSwgQW5kIChiLCBBbmQgKGMsIGQpKSldXG4gICB2ZXJzdXMgbGVmdC1sZWFuaW5nIFtBbmQgKEFuZCAoQW5kIChhLCBiKSwgYyksIGQpXS4gIFRoZSBmb3JtZXIgaXMgdGhlIGJlc3QgY2FzZSBhbmQgaXNcbiAgIGVuZm9yY2VkLlxuXG4gICBOb3RlOiB0aGlzIGZpbGUgZGV2aWF0ZXMgZnJvbSB0aGUgdXN1YWwgcGF0dGVybiBvZiBtb2R1bGVzIHdpdGggU3RhYmxlIGludGVyZmFjZXMgaW5cbiAgIHRoYXQgdGhlIFN0YWJsZSBzdWItbW9kdWxlIGlzIG5vdCB0aGUgZmlyc3QgdGhpbmcgdG8gYmUgZGVmaW5lZCBpbiB0aGUgbW9kdWxlLiAgVGhlXG4gICByZWFzb24gZm9yIHRoaXMgZGV2aWF0aW9uIGlzIHNvIHRoYXQgb25lIGNhbiBjb252aW5jZSBvbmVzZWxmIG9mIHRoZSBhZm9yZW1lbnRpb25lZFxuICAgaW52YXJpYW50IGFmdGVyIHJlYWRpbmcgb25seSB0aGlzIHNtYWxsIGFtb3VudCBvZiBjb2RlLiAgQWZ0ZXIgZGVmaW5pbmcgVCB3ZSB0aGVuXG4gICBpbW1lZGlhdGVseSBkZWZpbmUgaXRzIFN0YWJsZSBpbnRlcmZhY2UuXG4qKVxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSArJ2EgdCA9IHByaXZhdGVcbiAgICB8IFRydWVcbiAgICB8IEZhbHNlXG4gICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgfCBOb3Qgb2YgJ2EgdFxuICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgfCBCYXNlIG9mICdhXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHR5cGVyZXBdXG5cbiAgdmFsIGludmFyaWFudCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgdHJ1ZV8gOiAnYSB0XG4gIHZhbCBmYWxzZV8gOiAnYSB0XG4gIHZhbCBub3RfIDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhbmRhbHNvIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIG9yZWxzZSA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBpZl8gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBiYXNlIDogJ2EgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKydhIHQgPVxuICAgIHwgVHJ1ZVxuICAgIHwgRmFsc2VcbiAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICB8IE5vdCBvZiAnYSB0XG4gICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICB8IEJhc2Ugb2YgJ2FcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgdHlwZXJlcF1cblxuICBsZXQgaW52YXJpYW50ID1cbiAgICBsZXQgc3VidGVybXMgPSBmdW5jdGlvblxuICAgICAgfCBUcnVlIHwgRmFsc2UgfCBCYXNlIF8gLT4gW11cbiAgICAgIHwgTm90IHQxIC0+IFsgdDEgXVxuICAgICAgfCBBbmQgKHQxLCB0MikgfCBPciAodDEsIHQyKSAtPiBbIHQxOyB0MiBdXG4gICAgICB8IElmICh0MSwgdDIsIHQzKSAtPiBbIHQxOyB0MjsgdDMgXVxuICAgIGluXG4gICAgbGV0IHJlYyBjb250YWluc19ub19jb25zdGFudHMgPSBmdW5jdGlvblxuICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IHQgLT4gTGlzdC5pdGVyIH5mOmNvbnRhaW5zX25vX2NvbnN0YW50cyAoc3VidGVybXMgdClcbiAgICBpblxuICAgIGZ1biB0IC0+IExpc3QuaXRlciB+Zjpjb250YWluc19ub19jb25zdGFudHMgKHN1YnRlcm1zIHQpXG4gIDs7XG5cbiAgbGV0IHRydWVfID0gVHJ1ZVxuICBsZXQgZmFsc2VfID0gRmFsc2VcbiAgbGV0IGJhc2UgdiA9IEJhc2UgdlxuXG4gIGxldCBub3RfID0gZnVuY3Rpb25cbiAgICB8IFRydWUgLT4gRmFsc2VcbiAgICB8IEZhbHNlIC0+IFRydWVcbiAgICB8IE5vdCB0IC0+IHRcbiAgICB8IHQgLT4gTm90IHRcbiAgOztcblxuICBsZXQgcmVjIGFuZGFsc28gdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBfLCBGYWxzZSB8IEZhbHNlLCBfIC0+IEZhbHNlXG4gICAgfCBvdGhlciwgVHJ1ZSB8IFRydWUsIG90aGVyIC0+IG90aGVyXG4gICAgfCBBbmQgKHQxYSwgdDFiKSwgXyAtPlxuICAgICAgKCogbmVzdGVkIFtBbmRdcyBsZWFuIHJpZ2h0IC0tIHNlZSBjb21tZW50IGFib3ZlICopXG4gICAgICBBbmQgKHQxYSwgYW5kYWxzbyB0MWIgdDIpXG4gICAgfCBfIC0+IEFuZCAodDEsIHQyKVxuICA7O1xuXG4gIGxldCByZWMgb3JlbHNlIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgXywgVHJ1ZSB8IFRydWUsIF8gLT4gVHJ1ZVxuICAgIHwgb3RoZXIsIEZhbHNlIHwgRmFsc2UsIG90aGVyIC0+IG90aGVyXG4gICAgfCBPciAodDFhLCB0MWIpLCBfIC0+XG4gICAgICAoKiBuZXN0ZWQgW09yXXMgbGVhbiByaWdodCAtLSBzZWUgY29tbWVudCBhYm92ZSAqKVxuICAgICAgT3IgKHQxYSwgb3JlbHNlIHQxYiB0MilcbiAgICB8IF8gLT4gT3IgKHQxLCB0MilcbiAgOztcblxuICBsZXQgaWZfIGEgYiBjID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IFRydWUgLT4gYlxuICAgIHwgRmFsc2UgLT4gY1xuICAgIHwgXyAtPlxuICAgICAgKG1hdGNoIGIsIGMgd2l0aFxuICAgICAgIHwgVHJ1ZSwgXyAtPiBvcmVsc2UgYSBjXG4gICAgICAgfCBfLCBGYWxzZSAtPiBhbmRhbHNvIGEgYlxuICAgICAgIHwgXywgVHJ1ZSAtPiBvcmVsc2UgKG5vdF8gYSkgYlxuICAgICAgIHwgRmFsc2UsIF8gLT4gYW5kYWxzbyAobm90XyBhKSBjXG4gICAgICAgfCBfIC0+IElmIChhLCBiLCBjKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgUmF3ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFQudCA9IHByaXZhdGVcbiAgICB8IFRydWVcbiAgICB8IEZhbHNlXG4gICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgfCBOb3Qgb2YgJ2EgdFxuICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgfCBCYXNlIG9mICdhXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxuaW5jbHVkZSBUXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgKCogVEhJUyBUWVBFIEFORCBJVFMgU0VSSUFMSVpBVElPTlMgU0hPVUxEIE5FVkVSIEJFIENIQU5HRUQgLSBQTEVBU0UgU1BFQUsgV0lUSFxuICAgICAgIEFOT1RIRVIgREVWRUxPUEVSIElGIFlPVSBORUVEIE1PUkUgREVUQUlMICopXG5cbiAgICB0eXBlICdhIHQgPSAnYSBULnQgPSBwcml2YXRlXG4gICAgICB8IFRydWVcbiAgICAgIHwgRmFsc2VcbiAgICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgICB8IE5vdCBvZiAnYSB0XG4gICAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgICAgfCBCYXNlIG9mICdhXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzdGFibGVfd2l0bmVzcywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgICgqIHRoZSByZW1haW5kZXIgb2YgdGhpcyBzaWduYXR1cmUgY29uc2lzdHMgb2YgZnVuY3Rpb25zIHVzZWQgaW4gdGhlIGRlZmluaXRpb25zXG4gICAgICAgb2Ygc2V4cCBjb252ZXJzaW9ucyB0aGF0IGFyZSBhbHNvIHVzZWZ1bCBtb3JlIGdlbmVyYWxseSAqKVxuXG4gICAgdmFsIGFuZF8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICAgIHZhbCBvcl8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICAgIHZhbCBnYXRoZXJfY29uanVuY3RzIDogJ2EgdCAtPiAnYSB0IGxpc3RcbiAgICB2YWwgZ2F0aGVyX2Rpc2p1bmN0cyA6ICdhIHQgLT4gJ2EgdCBsaXN0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudCA9IHByaXZhdGVcbiAgICAgIHwgVHJ1ZVxuICAgICAgfCBGYWxzZVxuICAgICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgTm90IG9mICdhIHRcbiAgICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgICB8IEJhc2Ugb2YgJ2FcblxuICAgICgqIFRoaXMgdHlwZSBpcyBhc3N1bWVkIHRvIGJlIHN0YWJsZSBpZiB0aGUgJ2EgaXMgc3RhYmxlIChzZWUgYmlnIGNvbW1lbnQgYWJvdmUpLiAqKVxuICAgIGxldCBzdGFibGVfd2l0bmVzcyAoXyA6ICdhIFN0YWJsZV93aXRuZXNzLnQpIDogJ2EgdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICA7O1xuXG4gICAgaW5jbHVkZSAoXG4gICAgICBUIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaF1cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxuICAgIHR5cGUgc2V4cCA9IFNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2Ygc2V4cCBsaXN0XG5cbiAgICAoKiBjaGVhcCBpbXBvcnQgKilcblxuICAgICgqIGZsYXR0ZW4gb3V0IG5lc3RlZCBhbmQncyAqKVxuICAgIGxldCBnYXRoZXJfY29uanVuY3RzIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVHJ1ZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgICAgICB8IEFuZCAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgICAgIHwgdCA6OiB0cyAtPiBsb29wICh0IDo6IGFjYykgdHNcbiAgICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgICAgIGluXG4gICAgICBsb29wIFtdIFsgdCBdXG4gICAgOztcblxuICAgICgqIGZsYXR0ZW4gb3V0IG5lc3RlZCBvcidzICopXG4gICAgbGV0IGdhdGhlcl9kaXNqdW5jdHMgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgfCBGYWxzZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgICAgICB8IE9yICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICAgICAgfCB0IDo6IHRzIC0+IGxvb3AgKHQgOjogYWNjKSB0c1xuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgaW5cbiAgICAgIGxvb3AgW10gWyB0IF1cbiAgICA7O1xuXG4gICAgKCogW2FuZF9dIGFuZCBbb3JfXSB1c2UgW2ZvbGRfcmlnaHRdIGluc3RlYWQgb2YgW2ZvbGRfbGVmdF0gdG8gYXZvaWQgcXVhZHJhdGljXG4gICAgICAgYmVoYXZpb3Igd2l0aCBbYW5kYWxzb10gb3IgW29yZWxzZV0sIHJlc3BlY3RpdmVseS4gKilcbiAgICBsZXQgYW5kXyB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDp0cnVlXyB+ZjphbmRhbHNvXG4gICAgbGV0IG9yXyB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDpmYWxzZV8gfmY6b3JlbHNlXG5cbiAgICBsZXQgdW5hcnkgbmFtZSBhcmdzIHNleHAgPVxuICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICB8IFsgeCBdIC0+IHhcbiAgICAgIHwgXyAtPlxuICAgICAgICBsZXQgbiA9IExpc3QubGVuZ3RoIGFyZ3MgaW5cbiAgICAgICAgb2Zfc2V4cF9lcnJvciAoc3ByaW50ZiBcIiVzIGV4cGVjdHMgb25lIGFyZ3VtZW50LCAlZCBmb3VuZFwiIG5hbWUgbikgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgdGVybmFyeSBuYW1lIGFyZ3Mgc2V4cCA9XG4gICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgIHwgWyB4OyB5OyB6IF0gLT4geCwgeSwgelxuICAgICAgfCBfIC0+XG4gICAgICAgIGxldCBuID0gTGlzdC5sZW5ndGggYXJncyBpblxuICAgICAgICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXMgZXhwZWN0cyB0aHJlZSBhcmd1bWVudHMsICVkIGZvdW5kXCIgbmFtZSBuKSBzZXhwXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl92YWx1ZSB0ID1cbiAgICAgIGxldCByZWMgYXV4IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBCYXNlIHggLT4gc2V4cF9vZl92YWx1ZSB4XG4gICAgICAgIHwgVHJ1ZSAtPiBBdG9tIFwidHJ1ZVwiXG4gICAgICAgIHwgRmFsc2UgLT4gQXRvbSBcImZhbHNlXCJcbiAgICAgICAgfCBOb3QgdCAtPiBMaXN0IFsgQXRvbSBcIm5vdFwiOyBhdXggdCBdXG4gICAgICAgIHwgSWYgKHQxLCB0MiwgdDMpIC0+IExpc3QgWyBBdG9tIFwiaWZcIjsgYXV4IHQxOyBhdXggdDI7IGF1eCB0MyBdXG4gICAgICAgIHwgQW5kIF8gYXMgdCAtPlxuICAgICAgICAgIGxldCB0cyA9IGdhdGhlcl9jb25qdW5jdHMgdCBpblxuICAgICAgICAgIExpc3QgKEF0b20gXCJhbmRcIiA6OiBMaXN0Lm1hcCB+ZjphdXggdHMpXG4gICAgICAgIHwgT3IgXyBhcyB0IC0+XG4gICAgICAgICAgbGV0IHRzID0gZ2F0aGVyX2Rpc2p1bmN0cyB0IGluXG4gICAgICAgICAgTGlzdCAoQXRvbSBcIm9yXCIgOjogTGlzdC5tYXAgfmY6YXV4IHRzKVxuICAgICAgaW5cbiAgICAgIGF1eCB0XG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgYmFzZV9vZl9zZXhwIHNleHAgPVxuICAgICAgbGV0IGJhc2Ugc2V4cCA9IGJhc2UgKGJhc2Vfb2Zfc2V4cCBzZXhwKSBpblxuICAgICAgbGV0IHJlYyBhdXggc2V4cCA9XG4gICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICB8IEF0b20ga3cgLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmxvd2VyY2FzZSBrdyB3aXRoXG4gICAgICAgICAgIHwgXCJ0cnVlXCIgLT4gdHJ1ZV9cbiAgICAgICAgICAgfCBcImZhbHNlXCIgLT4gZmFsc2VfXG4gICAgICAgICAgIHwgXyAtPiBiYXNlIHNleHApXG4gICAgICAgIHwgTGlzdCAoQXRvbSBrdyA6OiBhcmdzKSAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcubG93ZXJjYXNlIGt3IHdpdGhcbiAgICAgICAgICAgfCBcImFuZFwiIC0+IGFuZF8gKExpc3QubWFwIH5mOmF1eCBhcmdzKVxuICAgICAgICAgICB8IFwib3JcIiAtPiBvcl8gKExpc3QubWFwIH5mOmF1eCBhcmdzKVxuICAgICAgICAgICB8IFwibm90XCIgLT4gbm90XyAoYXV4ICh1bmFyeSBcIm5vdFwiIGFyZ3Mgc2V4cCkpXG4gICAgICAgICAgIHwgXCJpZlwiIC0+XG4gICAgICAgICAgICAgbGV0IHgsIHksIHogPSB0ZXJuYXJ5IFwiaWZcIiBhcmdzIHNleHAgaW5cbiAgICAgICAgICAgICBpZl8gKGF1eCB4KSAoYXV4IHkpIChhdXggeilcbiAgICAgICAgICAgfCBfIC0+IGJhc2Ugc2V4cClcbiAgICAgICAgfCBfIC0+IGJhc2Ugc2V4cFxuICAgICAgaW5cbiAgICAgIGF1eCBzZXhwXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCA9XG4gICAgICBsZXQgZGVmbnMgOiBTZXhwbGliLlNleHBfZ3JhbW1hci5kZWZuIGxpc3QgPVxuICAgICAgICBsZXQgYmxhbmcgOiBTZXhwbGliLlNleHBfZ3JhbW1hci5ncmFtbWFyID0gUmVjdXJzaXZlIChcImJsYW5nXCIsIFsgVHl2YXIgXCJhXCIgXSkgaW5cbiAgICAgICAgWyB7IHR5Y29uID0gXCJibGFuZ1wiXG4gICAgICAgICAgOyB0eXZhcnMgPSBbIFwiYVwiIF1cbiAgICAgICAgICA7IGdyYW1tYXIgPVxuICAgICAgICAgICAgICBVbmlvblxuICAgICAgICAgICAgICAgIFsgVHl2YXIgXCJhXCJcbiAgICAgICAgICAgICAgICA7IFZhcmlhbnRcbiAgICAgICAgICAgICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9pbnNlbnNpdGl2ZVxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJ0cnVlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJmYWxzZVwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJpZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoYmxhbmcsIENvbnMgKGJsYW5nLCBDb25zIChibGFuZywgRW1wdHkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImFuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9IExpc3RfY2xhdXNlIHsgYXJncyA9IE1hbnkgYmxhbmcgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9IExpc3RfY2xhdXNlIHsgYXJncyA9IE1hbnkgYmxhbmcgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJub3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPSBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChibGFuZywgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICBpblxuICAgICAgZnVuIGJhc2VfZ3JhbW1hciAtPiB7IHVudHlwZWQgPSBUeWNvbiAoXCJibGFuZ1wiLCBbIGJhc2VfZ3JhbW1hci51bnR5cGVkIF0sIGRlZm5zKSB9XG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoU3RhYmxlLlYxIDogbW9kdWxlIHR5cGUgb2YgU3RhYmxlLlYxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbmxldCBjb25zdGFudCBiID0gaWYgYiB0aGVuIHRydWVfIGVsc2UgZmFsc2VfXG5cbm1vZHVsZSB0eXBlIENvbnN0cnVjdG9ycyA9IHNpZ1xuICB2YWwgYmFzZSA6ICdhIC0+ICdhIHRcbiAgdmFsIHRydWVfIDogXyB0XG4gIHZhbCBmYWxzZV8gOiBfIHRcbiAgdmFsIGNvbnN0YW50IDogYm9vbCAtPiBfIHRcbiAgdmFsIG5vdF8gOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGFuZF8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgb3JfIDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIGlmXyA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFRcblxuICBsZXQgbm90ID0gbm90X1xuICBsZXQgYW5kXyA9IGFuZF9cbiAgbGV0IG9yXyA9IG9yX1xuICBsZXQgY29uc3RhbnQgPSBjb25zdGFudFxuICBsZXQgKCAmJiApID0gYW5kYWxzb1xuICBsZXQgKCB8fCApID0gb3JlbHNlXG4gIGxldCAoID09PiApIGEgYiA9IChub3QgYSkgfHwgYlxuZW5kXG5cbmxldCBjb25zdGFudF92YWx1ZSA9IGZ1bmN0aW9uXG4gIHwgVHJ1ZSAtPiBTb21lIHRydWVcbiAgfCBGYWxzZSAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG47O1xuXG4oKiBbdmFsdWVzIHRdIGxpc3RzIHRoZSBiYXNlIHByZWRpY2F0ZXMgaW4gW3RdIGZyb20gbGVmdCB0byByaWdodCAqKVxubGV0IHZhbHVlcyB0ID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlIHYgOjogdHMgLT4gbG9vcCAodiA6OiBhY2MpIHRzXG4gICAgfCBUcnVlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgfCBGYWxzZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgIHwgTm90IHQxIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0cylcbiAgICB8IEFuZCAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgfCBPciAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgfCBJZiAodDEsIHQyLCB0MykgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHQyIDo6IHQzIDo6IHRzKVxuICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gIGluXG4gIGxvb3AgW10gWyB0IF1cbjs7XG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjIHQgcGVuZGluZyA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEJhc2UgYSAtPiBuZXh0IChmIGFjYyBhKSBwZW5kaW5nXG4gICAgICAgIHwgVHJ1ZSB8IEZhbHNlIC0+IG5leHQgYWNjIHBlbmRpbmdcbiAgICAgICAgfCBOb3QgdCAtPiBsb29wIGFjYyB0IHBlbmRpbmdcbiAgICAgICAgfCBBbmQgKHQxLCB0MikgfCBPciAodDEsIHQyKSAtPiBsb29wIGFjYyB0MSAodDIgOjogcGVuZGluZylcbiAgICAgICAgfCBJZiAodDEsIHQyLCB0MykgLT4gbG9vcCBhY2MgdDEgKHQyIDo6IHQzIDo6IHBlbmRpbmcpXG4gICAgICBhbmQgbmV4dCBhY2MgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICB8IHQgOjogdHMgLT4gbG9vcCBhY2MgdCB0c1xuICAgICAgaW5cbiAgICAgIGxvb3AgaW5pdCB0IFtdIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgICBsZXQgbGVuZ3RoID0gYERlZmluZV91c2luZ19mb2xkXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZCA9IEMuZm9sZFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBpc19lbXB0eSA9IEMuaXNfZW1wdHlcbmxldCBpdGVyID0gQy5pdGVyXG5sZXQgbGVuZ3RoID0gQy5sZW5ndGhcbmxldCBtZW0gPSBDLm1lbVxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IHJlYyBiaW5kIHQgfmY6ayA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEJhc2UgdiAtPiBrIHZcbiAgfCBUcnVlIC0+IHRydWVfXG4gIHwgRmFsc2UgLT4gZmFsc2VfXG4gIHwgTm90IHQxIC0+IG5vdF8gKGJpbmQgdDEgfmY6aylcbiAgKCogVW5mb3J0dW5hdGVseSB3ZSBuZWVkIHRvIGR1cGxpY2F0ZSBzb21lIG9mIHRoZSBzaG9ydC1jaXJjdWl0aW5nIGZyb20gW2FuZGFsc29dIGFuZFxuICAgICBmcmllbmRzIGhlcmUuIEluIHByaW5jaXBsZSB3ZSBjb3VsZCBkbyBzb21ldGhpbmcgaW52b2x2aW5nIFtMYXp5LnRdIGJ1dCB0aGVcbiAgICAgb3ZlcmhlYWQgcHJvYmFibHkgd291bGRuJ3QgYmUgd29ydGggaXQuICopXG4gIHwgQW5kICh0MSwgdDIpIC0+XG4gICAgKG1hdGNoIGJpbmQgdDEgfmY6ayB3aXRoXG4gICAgIHwgRmFsc2UgLT4gZmFsc2VfXG4gICAgIHwgb3RoZXIgLT4gYW5kYWxzbyBvdGhlciAoYmluZCB0MiB+ZjprKSlcbiAgfCBPciAodDEsIHQyKSAtPlxuICAgIChtYXRjaCBiaW5kIHQxIH5mOmsgd2l0aFxuICAgICB8IFRydWUgLT4gdHJ1ZV9cbiAgICAgfCBvdGhlciAtPiBvcmVsc2Ugb3RoZXIgKGJpbmQgdDIgfmY6aykpXG4gIHwgSWYgKHQxLCB0MiwgdDMpIC0+XG4gICAgKG1hdGNoIGJpbmQgdDEgfmY6ayB3aXRoXG4gICAgIHwgVHJ1ZSAtPiBiaW5kIHQyIH5mOmtcbiAgICAgfCBGYWxzZSAtPiBiaW5kIHQzIH5mOmtcbiAgICAgfCBvdGhlciAtPiBpZl8gb3RoZXIgKGJpbmQgdDIgfmY6aykgKGJpbmQgdDMgfmY6aykpXG47O1xuXG4oKiBzZW1hbnRpY3MgKilcblxubGV0IHJlYyBldmFsIHQgYmFzZV9ldmFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgVHJ1ZSAtPiB0cnVlXG4gIHwgRmFsc2UgLT4gZmFsc2VcbiAgfCBBbmQgKHQxLCB0MikgLT4gZXZhbCB0MSBiYXNlX2V2YWwgJiYgZXZhbCB0MiBiYXNlX2V2YWxcbiAgfCBPciAodDEsIHQyKSAtPiBldmFsIHQxIGJhc2VfZXZhbCB8fCBldmFsIHQyIGJhc2VfZXZhbFxuICB8IE5vdCB0IC0+IG5vdCAoZXZhbCB0IGJhc2VfZXZhbClcbiAgfCBJZiAodDEsIHQyLCB0MykgLT4gaWYgZXZhbCB0MSBiYXNlX2V2YWwgdGhlbiBldmFsIHQyIGJhc2VfZXZhbCBlbHNlIGV2YWwgdDMgYmFzZV9ldmFsXG4gIHwgQmFzZSB4IC0+IGJhc2VfZXZhbCB4XG47O1xuXG5sZXQgc3BlY2lhbGl6ZSB0IGYgPVxuICBiaW5kIHQgfmY6KGZ1biB2IC0+XG4gICAgbWF0Y2ggZiB2IHdpdGhcbiAgICB8IGBLbm93biBjIC0+IGNvbnN0YW50IGNcbiAgICB8IGBVbmtub3duIC0+IGJhc2UgdikgW0Bub250YWlsXVxuOztcblxubGV0IGV2YWxfc2V0IH51bml2ZXJzZTphbGwgc2V0X29mX2Jhc2UgdCA9XG4gIGxldCByZWMgYXV4IChiIDogXyB0KSA9XG4gICAgbWF0Y2ggYiB3aXRoXG4gICAgfCBUcnVlIC0+IGZvcmNlIGFsbFxuICAgIHwgRmFsc2UgLT4gU2V0LlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KFNldC5jb21wYXJhdG9yIChmb3JjZSBhbGwpKVxuICAgIHwgQW5kIChhLCBiKSAtPiBTZXQuaW50ZXIgKGF1eCBhKSAoYXV4IGIpXG4gICAgfCBPciAoYSwgYikgLT4gU2V0LnVuaW9uIChhdXggYSkgKGF1eCBiKVxuICAgIHwgTm90IGEgLT4gU2V0LmRpZmYgKGZvcmNlIGFsbCkgKGF1eCBhKVxuICAgIHwgQmFzZSBhIC0+IHNldF9vZl9iYXNlIGFcbiAgICB8IElmIChjb25kLCBhLCBiKSAtPlxuICAgICAgbGV0IGNvbmQgPSBhdXggY29uZCBpblxuICAgICAgU2V0LnVuaW9uIChTZXQuaW50ZXIgY29uZCAoYXV4IGEpKSAoU2V0LmludGVyIChTZXQuZGlmZiAoZm9yY2UgYWxsKSBjb25kKSAoYXV4IGIpKVxuICBpblxuICBhdXggdCBbQG5vbnRhaWxdXG47O1xuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IHJldHVybiA9IGJhc2VcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgbWFwID0gYERlZmluZV91c2luZ19iaW5kXG4gIGVuZClcblxubW9kdWxlIHR5cGUgTW9uYWRpYyA9IHNpZ1xuICBtb2R1bGUgTSA6IE1vbmFkLlNcblxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBNLnQpIC0+ICdiIHQgTS50XG4gIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0IE0udCkgLT4gJ2IgdCBNLnRcbiAgdmFsIGV2YWwgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgTS50KSAtPiBib29sIE0udFxuZW5kXG5cbm1vZHVsZSBGb3JfbW9uYWQgKE0gOiBNb25hZC5TKSA6IE1vbmFkaWMgd2l0aCBtb2R1bGUgTSA6PSBNID0gc3RydWN0XG4gIG9wZW4gTS5Nb25hZF9pbmZpeFxuXG4gIGxldCByZWMgYmluZCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEJhc2UgeCAtPiBmIHhcbiAgICB8IFRydWUgLT4gTS5yZXR1cm4gdHJ1ZV9cbiAgICB8IEZhbHNlIC0+IE0ucmV0dXJuIGZhbHNlX1xuICAgIHwgQW5kIChhLCBiKSAtPlxuICAgICAgYmluZCBhIH5mXG4gICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgIHwgRmFsc2UgLT4gTS5yZXR1cm4gZmFsc2VfXG4gICAgICAgIHwgVHJ1ZSAtPiBiaW5kIGIgfmZcbiAgICAgICAgfCBhIC0+IGJpbmQgYiB+ZiA+PnwgZnVuIGIgLT4gYW5kYWxzbyBhIGIpXG4gICAgfCBPciAoYSwgYikgLT5cbiAgICAgIGJpbmQgYSB+ZlxuICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICB8IFRydWUgLT4gTS5yZXR1cm4gdHJ1ZV9cbiAgICAgICAgfCBGYWxzZSAtPiBiaW5kIGIgfmZcbiAgICAgICAgfCBhIC0+IGJpbmQgYiB+ZiA+PnwgZnVuIGIgLT4gb3JlbHNlIGEgYilcbiAgICB8IE5vdCBhIC0+IGJpbmQgYSB+ZiA+Pnwgbm90X1xuICAgIHwgSWYgKGEsIGIsIGMpIC0+XG4gICAgICBiaW5kIGEgfmZcbiAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgfCBUcnVlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IEZhbHNlIC0+IGJpbmQgYyB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+PSBmdW4gYiAtPiBiaW5kIGMgfmYgPj58IGZ1biBjIC0+IGlmXyBhIGIgYylcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPSBiaW5kIHQgfmY6KGZ1biB4IC0+IGYgeCA+PnwgYmFzZSlcblxuICBsZXQgZXZhbCB0IH5mID1cbiAgICBiaW5kIHQgfmY6KGZ1biB4IC0+XG4gICAgICBmIHhcbiAgICAgID4+fCBmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IHRydWVfXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXylcbiAgICA+PnwgZnVuIHQgLT4gZXZhbCB0IE5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuICA7O1xuZW5kXG5cbigqKiBXZSBhdm9pZCBkZXJpdmluZyBxdWlja2NoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBpbnZhcmlhbnRzIGRlc2NyaWJlZCBpbiBbVF0ncyBjb21tZW50c1xuICAgIGFib3ZlIGFyZSBwcmVzZXJ2ZWQuICopXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgYV9nZW5lcmF0b3IgPVxuICBRdWlja2NoZWNrLkdlbmVyYXRvci5yZWN1cnNpdmVfdW5pb25cbiAgICBbIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpiYXNlIGFfZ2VuZXJhdG9yXG4gICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5zaW5nbGV0b24gdHJ1ZV9cbiAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLnNpbmdsZXRvbiBmYWxzZV9cbiAgICBdXG4gICAgfmY6KGZ1biBzZWxmIC0+XG4gICAgICBbIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCBzZWxmIH5mOm5vdF9cbiAgICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwMiBzZWxmIHNlbGYgfmY6Ty4oIHx8IClcbiAgICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwMiBzZWxmIHNlbGYgfmY6Ty4oICYmIClcbiAgICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwMyBzZWxmIHNlbGYgc2VsZiB+ZjppZl9cbiAgICAgIF0pXG47O1xuXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciAodHlwZSBhKSAoYV9zaHJpbmtlciA6IGEgUXVpY2tjaGVjay5TaHJpbmtlci50KSA9XG4gIFF1aWNrY2hlY2suU2hyaW5rZXIuZml4ZWRfcG9pbnQgKGZ1biBzZWxmIC0+XG4gICAgbGV0IGJpbm9wIG9wZXJhdG9yIGxlZnQgcmlnaHQgPVxuICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgWyBTZXF1ZW5jZS5zaW5nbGV0b24gbGVmdFxuICAgICAgICA7IFNlcXVlbmNlLnNpbmdsZXRvbiByaWdodFxuICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiBsZWZ0KSB+ZjooZnVuIGxlZnQgLT5cbiAgICAgICAgICAgIG9wZXJhdG9yIGxlZnQgcmlnaHQpXG4gICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIHJpZ2h0KSB+ZjooZnVuIHJpZ2h0IC0+XG4gICAgICAgICAgICBvcGVyYXRvciBsZWZ0IHJpZ2h0KVxuICAgICAgICBdXG4gICAgaW5cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLmNyZWF0ZSAoZnVuIHQgLT5cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gU2VxdWVuY2UuZW1wdHlcbiAgICAgIHwgQmFzZSBhIC0+IFNlcXVlbmNlLm1hcCB+ZjpiYXNlIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBhX3Nocmlua2VyIGEpXG4gICAgICB8IE9yIChsZWZ0LCByaWdodCkgLT4gYmlub3AgTy4oIHx8ICkgbGVmdCByaWdodFxuICAgICAgfCBBbmQgKGxlZnQsIHJpZ2h0KSAtPiBiaW5vcCBPLiggJiYgKSBsZWZ0IHJpZ2h0XG4gICAgICB8IE5vdCB0IC0+XG4gICAgICAgIFNlcXVlbmNlLmFwcGVuZFxuICAgICAgICAgIChTZXF1ZW5jZS5zaW5nbGV0b24gdClcbiAgICAgICAgICAoU2VxdWVuY2UubWFwIH5mOm5vdF8gKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgdCkpXG4gICAgICB8IElmIChpZl8sIHRoZW5fLCBlbHNlXykgLT5cbiAgICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiBpZl9cbiAgICAgICAgICA7IFNlcXVlbmNlLnNpbmdsZXRvbiB0aGVuX1xuICAgICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIGVsc2VfXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgaWZfKSB+ZjooZnVuIGlmXyAtPlxuICAgICAgICAgICAgICBPLmlmXyBpZl8gdGhlbl8gZWxzZV8pXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgdGhlbl8pIH5mOihmdW4gdGhlbl8gLT5cbiAgICAgICAgICAgICAgTy5pZl8gaWZfIHRoZW5fIGVsc2VfKVxuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIGVsc2VfKSB+ZjooZnVuIGVsc2VfIC0+XG4gICAgICAgICAgICAgIE8uaWZfIGlmXyB0aGVuXyBlbHNlXylcbiAgICAgICAgICBdKSlcbjs7XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyICh0eXBlIGEpIChhX29ic2VydmVyIDogYSBRdWlja2NoZWNrLk9ic2VydmVyLnQpID1cbiAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmNyZWF0ZSAoZnVuIHQgfnNpemUgfmhhc2ggLT5cbiAgICBoYXNoX2ZvbGRfdFxuICAgICAgKGZ1biBoYXNoIGEgLT4gUXVpY2tjaGVjay5PYnNlcnZlci5vYnNlcnZlIGFfb2JzZXJ2ZXIgYSB+c2l6ZSB+aGFzaClcbiAgICAgIGhhc2hcbiAgICAgIHQpXG47O1xuIiwiKCogQ29udmVyc2lvbnMgYmV0d2VlbiB1bml0cyBvZiBtZWFzdXJlIGJhc2VkIG9uIGJ5dGVzLiAqKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5tb2R1bGUgUmVwciA9IEludDYzXG5tb2R1bGUgVCA9IEJ5dGVfdW5pdHMwXG5pbmNsdWRlIChUIDogbW9kdWxlIHR5cGUgb2YgVCB3aXRoIG1vZHVsZSBSZXByIDo9IFJlcHIpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9wbGFpbiAoVClcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoIC0gKSBhIGIgPSBvZl9yZXByIChSZXByLiggLSApICh0b19yZXByIGEpICh0b19yZXByIGIpKVxuICBsZXQgKCArICkgYSBiID0gb2ZfcmVwciAoUmVwci4oICsgKSAodG9fcmVwciBhKSAodG9fcmVwciBiKSlcbiAgbGV0ICggLy8gKSBhIGIgPSBSZXByLiggLy8gKSAodG9fcmVwciBhKSAodG9fcmVwciBiKVxuXG4gIGxldCAoIC8gKSB0IHMgPSBvZl9yZXByIChSZXByLm9mX2Zsb2F0IChSZXByLnRvX2Zsb2F0ICh0b19yZXByIHQpIC8uIHMpKVxuICBsZXQgKCAqICkgdCBzID0gb2ZfcmVwciAoUmVwci5vZl9mbG9hdCAoUmVwci50b19mbG9hdCAodG9fcmVwciB0KSAqLiBzKSlcbmVuZFxuXG5pbmNsdWRlIEluZml4XG5cbmxldCBhYnMgdCA9IG9mX3JlcHIgKFJlcHIuYWJzICh0b19yZXByIHQpKVxubGV0IG5lZyB0ID0gb2ZfcmVwciAoUmVwci5uZWcgKHRvX3JlcHIgdCkpXG5sZXQgc2lnbiB0ID0gUmVwci5zaWduICh0b19yZXByIHQpXG5sZXQgemVybyA9IG9mX3JlcHIgUmVwci56ZXJvXG5sZXQgbWluX3ZhbHVlID0gb2ZfcmVwciBSZXByLm1pbl92YWx1ZVxubGV0IG1heF92YWx1ZSA9IG9mX3JlcHIgUmVwci5tYXhfdmFsdWVcbmxldCBzY2FsZSA9IEluZml4LiggKiApXG5sZXQgaXNjYWxlIHQgcyA9IG9mX3JlcHIgKFJlcHIuKCAqICkgKHRvX3JlcHIgdCkgKFJlcHIub2ZfaW50IHMpKVxubGV0IGJ5dGVzX2ludF9leG4gPSBULmJ5dGVzX2ludF9leG5cbmxldCBieXRlc19pbnQ2MyA9IHRvX3JlcHJcbmxldCBieXRlc19pbnQ2NCB0ID0gUmVwci50b19pbnQ2NCAodG9fcmVwciB0KVxubGV0IGJ5dGVzX2Zsb2F0IHQgPSBSZXByLnRvX2Zsb2F0ICh0b19yZXByIHQpXG5sZXQgb2ZfYnl0ZXNfaW50IGIgPSBvZl9yZXByIChSZXByLm9mX2ludCBiKVxubGV0IG9mX2J5dGVzX2ludDYzID0gb2ZfcmVwclxubGV0IG9mX2J5dGVzX2ludDY0X2V4biBiID0gb2ZfcmVwciAoUmVwci5vZl9pbnQ2NF9leG4gYilcbmxldCBvZl9ieXRlc19mbG9hdF9leG4gYiA9IG9mX3JlcHIgKFJlcHIub2ZfZmxvYXQgYilcblxubGV0IChieXRlcyBbQGRlcHJlY2F0ZWRcbiAgICAgICBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW2J5dGVzX2ludF9leG5dLCBbYnl0ZXNfaW50NjNdLCBbYnl0ZXNfaW50NjRdIG9yIFxcXG4gICAgICAgIFtieXRlc19mbG9hdF0gYXMgYXBwcm9wcmlhdGUuXCJdKVxuICA9XG4gIGJ5dGVzX2Zsb2F0XG47O1xuXG5sZXQgKG9mX2J5dGVzIFtAZGVwcmVjYXRlZFxuICAgICAgIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbb2ZfYnl0ZXNfaW50XSwgW29mX2J5dGVzX2ludDYzXSwgXFxcbiAgICAgICAgW29mX2J5dGVzX2ludDY0X2V4bl0gb3IgW29mX2J5dGVzX2Zsb2F0X2V4bl0gYXMgYXBwcm9wcmlhdGUuXCJdKVxuICA9XG4gIG9mX2J5dGVzX2Zsb2F0X2V4blxuOztcblxubGV0IGtpbG9ieXRlIDogdCA9IG9mX2J5dGVzX2ludCAxMDI0XG5sZXQgbWVnYWJ5dGUgPSBpc2NhbGUga2lsb2J5dGUgMTAyNFxubGV0IGdpZ2FieXRlID0gaXNjYWxlIG1lZ2FieXRlIDEwMjRcbmxldCB0ZXJhYnl0ZSA9IGlzY2FsZSBnaWdhYnl0ZSAxMDI0XG5sZXQgcGV0YWJ5dGUgPSBpc2NhbGUgdGVyYWJ5dGUgMTAyNFxubGV0IGV4YWJ5dGUgPSBpc2NhbGUgcGV0YWJ5dGUgMTAyNFxuXG5sZXQgd29yZCA9XG4gIGxldCBtb2R1bGUgVyA9IFdvcmRfc2l6ZSBpblxuICBtYXRjaCBXLndvcmRfc2l6ZSB3aXRoXG4gIHwgVy5XMzIgLT4gb2ZfYnl0ZXNfaW50IDRcbiAgfCBXLlc2NCAtPiBvZl9ieXRlc19pbnQgOFxuOztcblxubGV0IGtpbG9ieXRlcyB0IDogZmxvYXQgPSBJbmZpeC4oIC8vICkgdCBraWxvYnl0ZVxubGV0IG1lZ2FieXRlcyB0ID0gSW5maXguKCAvLyApIHQgbWVnYWJ5dGVcbmxldCBnaWdhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IGdpZ2FieXRlXG5sZXQgdGVyYWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCB0ZXJhYnl0ZVxubGV0IHBldGFieXRlcyB0ID0gSW5maXguKCAvLyApIHQgcGV0YWJ5dGVcbmxldCBleGFieXRlcyB0ID0gSW5maXguKCAvLyApIHQgZXhhYnl0ZVxubGV0IHdvcmRzX2ludF9leG4gdCA9IFJlcHIudG9faW50X2V4biAoUmVwci4oIC8gKSAodG9fcmVwciB0KSAodG9fcmVwciB3b3JkKSlcbmxldCB3b3Jkc19mbG9hdCB0ID0gSW5maXguKCAvLyApIHQgd29yZFxubGV0IG9mX2tpbG9ieXRlcyB0IDogdCA9IEluZml4LiggKiApIGtpbG9ieXRlIHRcbmxldCBvZl9tZWdhYnl0ZXMgdCA9IEluZml4LiggKiApIG1lZ2FieXRlIHRcbmxldCBvZl9naWdhYnl0ZXMgdCA9IEluZml4LiggKiApIGdpZ2FieXRlIHRcbmxldCBvZl90ZXJhYnl0ZXMgdCA9IEluZml4LiggKiApIHRlcmFieXRlIHRcbmxldCBvZl9wZXRhYnl0ZXMgdCA9IEluZml4LiggKiApIHBldGFieXRlIHRcbmxldCBvZl9leGFieXRlcyB0ID0gSW5maXguKCAqICkgZXhhYnl0ZSB0XG5sZXQgb2Zfd29yZHNfaW50IHQgPSBpc2NhbGUgd29yZCB0XG5sZXQgb2Zfd29yZHNfZmxvYXRfZXhuIHQgPSBJbmZpeC4oICogKSB3b3JkIHRcblxubGV0ICh3b3JkcyBbQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFt3b3Jkc19pbnRfZXhuXSBvciBbd29yZHNfZmxvYXRdXCJdKSA9XG4gIHdvcmRzX2Zsb2F0XG47O1xuXG5sZXQgKG9mX3dvcmRzIFtAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW29mX3dvcmRzX2ludF0gb3IgW29mX3dvcmRzX2Zsb2F0X2V4bl1cIl0pID1cbiAgb2Zfd29yZHNfZmxvYXRfZXhuXG47O1xuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIEludC4oIDwgKSBsZW5ndGggMlxuICB0aGVuIGludmFsaWRfYXJnZiBcIiclcycgcGFzc2VkIHRvIEJ5dGVfdW5pdHMub2Zfc3RyaW5nIC0gdG9vIHNob3J0XCIgcyAoKTtcbiAgbGV0IGJhc2Vfc3RyID0gU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOihJbnQuKCAtICkgbGVuZ3RoIDEpIGluXG4gIGxldCBleHRfY2hhciA9IENoYXIubG93ZXJjYXNlIHMuW0ludC4oIC0gKSBsZW5ndGggMV0gaW5cbiAgbGV0IGJhc2UgPVxuICAgIHRyeSBGbG9hdC5vZl9zdHJpbmcgYmFzZV9zdHIgd2l0aFxuICAgIHwgXyAtPlxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJyVzJyBwYXNzZWQgdG8gQnl0ZV91bml0cy5vZl9zdHJpbmcgLSAlcyBjYW5ub3QgYmUgY29udmVydGVkIHRvIGZsb2F0IFwiXG4gICAgICAgIHNcbiAgICAgICAgYmFzZV9zdHJcbiAgICAgICAgKClcbiAgaW5cbiAgbWF0Y2ggZXh0X2NoYXIgd2l0aFxuICB8ICdiJyAtPiBvZl9ieXRlc19mbG9hdF9leG4gYmFzZVxuICB8ICdrJyAtPiBvZl9raWxvYnl0ZXMgYmFzZVxuICB8ICdtJyAtPiBvZl9tZWdhYnl0ZXMgYmFzZVxuICB8ICdnJyAtPiBvZl9naWdhYnl0ZXMgYmFzZVxuICB8ICd0JyAtPiBvZl90ZXJhYnl0ZXMgYmFzZVxuICB8ICdwJyAtPiBvZl9wZXRhYnl0ZXMgYmFzZVxuICB8ICdlJyAtPiBvZl9leGFieXRlcyBiYXNlXG4gIHwgJ3cnIC0+IG9mX3dvcmRzX2Zsb2F0X2V4biBiYXNlXG4gIHwgZXh0IC0+XG4gICAgaW52YWxpZF9hcmdmIFwiJyVzJyBwYXNzZWQgdG8gQnl0ZV91bml0cy5vZl9zdHJpbmcgLSBpbGxlZ2FsIGV4dGVuc2lvbiAlY1wiIHMgZXh0ICgpXG47O1xuXG5sZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBvZl9zdHJpbmdcblxubGV0IGxhcmdlc3RfbWVhc3VyZSB0ID1cbiAgbGV0IHRfYWJzID0gb2ZfcmVwciAoUmVwci5hYnMgKHRvX3JlcHIgdCkpIGluXG4gIGlmIHRfYWJzID49IGV4YWJ5dGVcbiAgdGhlbiBgRXhhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSBwZXRhYnl0ZVxuICB0aGVuIGBQZXRhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSB0ZXJhYnl0ZVxuICB0aGVuIGBUZXJhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSBnaWdhYnl0ZVxuICB0aGVuIGBHaWdhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSBtZWdhYnl0ZVxuICB0aGVuIGBNZWdhYnl0ZXNcbiAgZWxzZSBpZiB0X2FicyA+PSBraWxvYnl0ZVxuICB0aGVuIGBLaWxvYnl0ZXNcbiAgZWxzZSBgQnl0ZXNcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgKCogU2hhcmUgdGhlIGNvbW1vbiBbb2Zfc2V4cF0gY29kZSBmb3IgW1YxXSBhbmQgW1YyXS4gKilcbiAgbW9kdWxlIE9mX3NleHBfdjFfdjIgOiBzaWdcbiAgICB2YWwgdF9vZl9zZXhwIDogU2V4cC50IC0+IHRcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IG5vX21hdGNoICgpID0gZmFpbHdpdGggXCJOb3QgYSByZWNvZ25pemVkIFtCeXRlX3VuaXRzLnRdIHJlcHJlc2VudGF0aW9uXCJcblxuICAgIGxldCBvZl92YWx1ZV9zZXhwX2FuZF91bml0X25hbWUgdmFsX3NleHAgPSBmdW5jdGlvblxuICAgICAgfCBcIkJ5dGVzXCIgLT5cbiAgICAgICAgKHRyeSBvZl9ieXRlc19pbnQ2MyAoSW50NjMudF9vZl9zZXhwIHZhbF9zZXhwKSB3aXRoXG4gICAgICAgICB8IF8gLT4gb2ZfYnl0ZXNfZmxvYXRfZXhuIChGbG9hdC50X29mX3NleHAgdmFsX3NleHApKVxuICAgICAgfCBcIktpbG9ieXRlc1wiIC0+IG9mX2tpbG9ieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJNZWdhYnl0ZXNcIiAtPiBvZl9tZWdhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiR2lnYWJ5dGVzXCIgLT4gb2ZfZ2lnYWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIlRlcmFieXRlc1wiIC0+IG9mX3RlcmFieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJQZXRhYnl0ZXNcIiAtPiBvZl9wZXRhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiRXhhYnl0ZXNcIiAtPiBvZl9leGFieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJXb3Jkc1wiIC0+IG9mX3dvcmRzX2Zsb2F0X2V4biAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXyAtPiBub19tYXRjaCAoKVxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgIHwgU2V4cC5BdG9tIHN0ciAtPiBvZl9zdHJpbmcgc3RyXG4gICAgICB8IFNleHAuTGlzdCBbIFNleHAuQXRvbSB1bml0X25hbWU7IHZhbHVlIF0gLT5cbiAgICAgICAgb2ZfdmFsdWVfc2V4cF9hbmRfdW5pdF9uYW1lIHZhbHVlIHVuaXRfbmFtZVxuICAgICAgfCBfIC0+IG5vX21hdGNoICgpXG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICB0cnkgdF9vZl9zZXhwIHNleHAgd2l0aFxuICAgICAgfCBleG4gLT4gcmFpc2UgKFNleHAuT2Zfc2V4cF9lcnJvciAoZXhuLCBzZXhwKSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IHRvX2JpbmFibGUgPSBieXRlc19mbG9hdFxuICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYnl0ZXNfZmxvYXRfZXhuXG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlMC5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoRmxvYXQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICAgIGVuZClcblxuICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGUgc3RhYmxlX3dpdG5lc3NfZmxvYXQgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgOztcblxuICAgIGluY2x1ZGUgT2Zfc2V4cF92MV92MlxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgICgqIFYxIG9ubHkgZ29lcyB1cCB0byBnaWdhYnl0ZXMgKilcbiAgICAgIG1hdGNoIGxhcmdlc3RfbWVhc3VyZSB0IHdpdGhcbiAgICAgIHwgYEJ5dGVzIC0+IFslc2V4cCBgQnl0ZXMgKGJ5dGVzX2Zsb2F0IHQgOiBmbG9hdCldXG4gICAgICB8IGBLaWxvYnl0ZXMgLT4gWyVzZXhwIGBLaWxvYnl0ZXMgKGtpbG9ieXRlcyB0IDogZmxvYXQpXVxuICAgICAgfCBgTWVnYWJ5dGVzIC0+IFslc2V4cCBgTWVnYWJ5dGVzIChtZWdhYnl0ZXMgdCA6IGZsb2F0KV1cbiAgICAgIHwgYEdpZ2FieXRlcyB8IGBUZXJhYnl0ZXMgfCBgUGV0YWJ5dGVzIHwgYEV4YWJ5dGVzIC0+XG4gICAgICAgIFslc2V4cCBgR2lnYWJ5dGVzIChnaWdhYnl0ZXMgdCA6IGZsb2F0KV1cbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyB0ID0gU3RyaW5nLmxvd2VyY2FzZSAodG9fc3RyaW5nIHQpXG4gICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuXG4gICAgKCogVGhpcyB0ZXN0IGRvY3VtZW50cyB0aGUgb3JpZ2luYWwgdG8tc3RyaW5nIHJlcHJlc2VudGF0aW9uIGFuZCBmYWlscyB1bmRlciBqYXZhc2NyaXB0XG4gICAgICAgZHVlIHRvIGRpZmZlcmVuY2VzIGluIHRoZSByb3VuZGluZy4gKilcbiAgICBsZXQlZXhwZWN0X3Rlc3QgKF8gW0B0YWdzIFwibm8tanNcIl0pID1cbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDApO1xuICAgICAgWyVleHBlY3Qge3wgMTAwMGIgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyMyk7XG4gICAgICBbJWV4cGVjdCB7fCAxMDIzYiB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDI0KTtcbiAgICAgIFslZXhwZWN0IHt8IDFrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjUpO1xuICAgICAgWyVleHBlY3Qge3wgMS4wMDA5OGsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTUwMCk7XG4gICAgICBbJWV4cGVjdCB7fCAxLjQ2NDg0ayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5Ljc2NTYyayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDApO1xuICAgICAgWyVleHBlY3Qge3wgOTcuNjU2MmsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5NzYuNTYyayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5LjUzNjc0bSB8fV1cbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBtc2cgLT4gb2Zfc2V4cF9lcnJvciBtc2cgc2V4cClcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IHRvX2JpbmFibGUgPSBieXRlc19pbnQ2M1xuICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYnl0ZXNfaW50NjNcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUwLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChJbnQ2My5TdGFibGUuVjEpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICAgIGVuZClcblxuICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGUgSW50NjMuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzIG9mX2JpbmFibGUgdG9fYmluYWJsZVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIE9mX3NleHBfdjFfdjJcblxuICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCBgQnl0ZXMgKGJ5dGVzX2ludDYzIHQgOiBJbnQ2My50KV1cbiAgZW5kXG5lbmRcblxubGV0IHRvX3N0cmluZ19odW0gPSBULnRvX3N0cmluZ1xuXG5tb2R1bGUgU2hvcnQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgIGxldCB0b191bml0c19zdHIgdG9fdW5pdCBleHQgPVxuICAgICAgbGV0IGYgPSB0b191bml0IHQgaW5cbiAgICAgIGxldCBmX2FicyA9IEZsb2F0LmFicyBmIGluXG4gICAgICBpZiBGbG9hdC5Sb2J1c3RseV9jb21wYXJhYmxlLiggPj0uICkgZl9hYnMgMTAwLlxuICAgICAgdGhlbiBzcHJpbnRmIFwiJS4wZiVjXCIgZiBleHRcbiAgICAgIGVsc2UgaWYgRmxvYXQuUm9idXN0bHlfY29tcGFyYWJsZS4oID49LiApIGZfYWJzIDEwLlxuICAgICAgdGhlbiBzcHJpbnRmIFwiJS4xZiVjXCIgZiBleHRcbiAgICAgIGVsc2Ugc3ByaW50ZiBcIiUuMmYlY1wiIGYgZXh0XG4gICAgaW5cbiAgICBtYXRjaCBsYXJnZXN0X21lYXN1cmUgdCB3aXRoXG4gICAgfCBgQnl0ZXMgLT4gc3ByaW50ZiBcIiVkQlwiIChieXRlc19pbnRfZXhuIHQpXG4gICAgfCBgS2lsb2J5dGVzIC0+IHRvX3VuaXRzX3N0ciBraWxvYnl0ZXMgJ0snXG4gICAgfCBgTWVnYWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciBtZWdhYnl0ZXMgJ00nXG4gICAgfCBgR2lnYWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciBnaWdhYnl0ZXMgJ0cnXG4gICAgfCBgVGVyYWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciB0ZXJhYnl0ZXMgJ1QnXG4gICAgfCBgUGV0YWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciBwZXRhYnl0ZXMgJ1AnXG4gICAgfCBgRXhhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIGV4YWJ5dGVzICdFJ1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDApO1xuICAgIFslZXhwZWN0IHt8IDEwMDBCIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDIzKTtcbiAgICBbJWV4cGVjdCB7fCAxMDIzQiB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNCk7XG4gICAgWyVleHBlY3Qge3wgMS4wMEsgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjUpO1xuICAgIFslZXhwZWN0IHt8IDEuMDBLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOS43N0sgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOTcuN0sgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMDApO1xuICAgIFslZXhwZWN0IHt8IDk3N0sgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5LjU0TSB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19mbG9hdF9leG4gMTAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA5LjMxRyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19mbG9hdF9leG4gMTAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDkzMUcgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfZmxvYXRfZXhuIDEwMDAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDkwLjlUIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2Zsb2F0X2V4biAxMDAwMDAwMDAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA4OC44UCB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19mbG9hdF9leG4gMzAwMDAwMDAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDIuNjBFIHx9XTtcbiAgICAoKVxuICA7O1xuZW5kXG5cbmxldCB0b19zdHJpbmdfc2hvcnQgPSBTaG9ydC50b19zdHJpbmdcblxubGV0IChjcmVhdGUgW0BkZXByZWNhdGVkXG4gICAgICAgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtvZl9ieXRlc10sIFtvZl9raWxvYnl0ZXNdLCBbb2ZfbWVnYWJ5dGVzXSwgZXRjIGFzIFxcXG4gICAgICAgIGFwcHJvcHJpYXRlLlwiXSlcbiAgPVxuICBmdW4gdW5pdHMgdmFsdWUgLT5cbiAgbWF0Y2ggdW5pdHMgd2l0aFxuICB8IGBCeXRlcyAtPiBvZl9ieXRlc19mbG9hdF9leG4gdmFsdWVcbiAgfCBgS2lsb2J5dGVzIC0+IG9mX2tpbG9ieXRlcyB2YWx1ZVxuICB8IGBNZWdhYnl0ZXMgLT4gb2ZfbWVnYWJ5dGVzIHZhbHVlXG4gIHwgYEdpZ2FieXRlcyAtPiBvZl9naWdhYnl0ZXMgdmFsdWVcbiAgfCBgV29yZHMgLT4gb2Zfd29yZHNfZmxvYXRfZXhuIHZhbHVlXG47O1xuXG5pbmNsdWRlXG4gIFF1aWNrY2hlY2thYmxlLk9mX3F1aWNrY2hlY2thYmxlXG4gICAgKFJlcHIpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG9mX3F1aWNrY2hlY2thYmxlID0gb2ZfcmVwclxuICAgICAgbGV0IHRvX3F1aWNrY2hlY2thYmxlID0gdG9fcmVwclxuICAgIGVuZClcbiIsIigqKiBTaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgYSBwb2x5bW9ycGhpYyBmdW5jdGlvbmFsIGRvdWJsZS1lbmRlZCBxdWV1ZS4gKilcblxuKCoqIEludmFyaWFudHM6XG4gICAgLSBxdWV1ZS5sZW5ndGggPSBMaXN0Lmxlbmd0aCBxdWV1ZS5mcm9udCArIExpc3QubGVuZ3RoIHF1ZXVlLmJhY2tcbiAgICAtIGlmIHF1ZXVlIGhhcyA+PSAyIGVsZW1lbnRzLCBuZWl0aGVyIGZyb250IG5vciBiYWNrIGFyZSBlbXB0eVxuKilcblxub3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG5leGNlcHRpb24gRW1wdHkgW0BAZGVyaXZpbmcgc2V4cF1cblxudHlwZSAnYSB0ID1cbiAgeyBmcm9udCA6ICdhIGxpc3RcbiAgOyBiYWNrIDogJ2EgbGlzdFxuICA7IGxlbmd0aCA6IGludFxuICB9XG5cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IHQubGVuZ3RoID0gMFxuXG5sZXQgaW52YXJpYW50IGYgdCA9XG4gIGxldCBuX2Zyb250ID0gTGlzdC5sZW5ndGggdC5mcm9udCBpblxuICBsZXQgbl9iYWNrID0gTGlzdC5sZW5ndGggdC5iYWNrIGluXG4gIGFzc2VydCAodC5sZW5ndGggPSBuX2Zyb250ICsgbl9iYWNrKTtcbiAgYXNzZXJ0ICh0Lmxlbmd0aCA8IDIgfHwgKG5fZnJvbnQgPD4gMCAmJiBuX2JhY2sgPD4gMCkpO1xuICBMaXN0Lml0ZXIgdC5mcm9udCB+ZjtcbiAgTGlzdC5pdGVyIHQuYmFjayB+ZlxuOztcblxubGV0IG1ha2Ugfmxlbmd0aCB+ZnJvbnQgfmJhY2sgPVxuICBtYXRjaCBmcm9udCwgYmFjayB3aXRoXG4gIHwgW10sIFtdIHwgWyBfIF0sIFtdIHwgW10sIFsgXyBdIHwgXyA6OiBfLCBfIDo6IF8gLT4geyBmcm9udDsgYmFjazsgbGVuZ3RoIH1cbiAgfCBbXSwgXyA6OiBfIDo6IF8gLT5cbiAgICBsZXQgYmFjaywgcmV2X2Zyb250ID0gTGlzdC5zcGxpdF9uIGJhY2sgKGxlbmd0aCAvIDIpIGluXG4gICAgeyBmcm9udCA9IExpc3QucmV2IHJldl9mcm9udDsgYmFjazsgbGVuZ3RoIH1cbiAgfCBfIDo6IF8gOjogXywgW10gLT5cbiAgICBsZXQgZnJvbnQsIHJldl9iYWNrID0gTGlzdC5zcGxpdF9uIGZyb250IChsZW5ndGggLyAyKSBpblxuICAgIHsgZnJvbnQ7IGJhY2sgPSBMaXN0LnJldiByZXZfYmFjazsgbGVuZ3RoIH1cbjs7XG5cbmxldCBlbXB0eSA9IHsgZnJvbnQgPSBbXTsgYmFjayA9IFtdOyBsZW5ndGggPSAwIH1cbmxldCBlbnF1ZXVlX2Zyb250IHQgeCA9IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggKyAxKSB+ZnJvbnQ6KHggOjogdC5mcm9udCkgfmJhY2s6dC5iYWNrXG5sZXQgZW5xdWV1ZV9iYWNrIHQgeCA9IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggKyAxKSB+YmFjazooeCA6OiB0LmJhY2spIH5mcm9udDp0LmZyb250XG5cbmxldFtAY29sZF0gcmFpc2VfZnJvbnRfaW52YXJpYW50ICgpID1cbiAgcmFpc2VfcyBbJXNleHAgXCJCVUc6IEZkZXF1ZTogfGZyb250fCA9IDAsIHxiYWNrfCA+PSAyXCJdXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2JhY2tfaW52YXJpYW50ICgpID1cbiAgcmFpc2VfcyBbJXNleHAgXCJCVUc6IEZkZXF1ZTogfGJhY2t8ID0gMCwgfGZyb250fCA+PSAyXCJdXG47O1xuXG5sZXQgcGVla19mcm9udF9leG4gdCA9XG4gIG1hdGNoIHQuZnJvbnQgd2l0aFxuICB8IHggOjogXyAtPiB4XG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5iYWNrIHdpdGhcbiAgICAgfCBbXSAtPiByYWlzZSBFbXB0eVxuICAgICB8IFsgeCBdIC0+IHhcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9mcm9udF9pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgcGVla19iYWNrX2V4biB0ID1cbiAgbWF0Y2ggdC5iYWNrIHdpdGhcbiAgfCB4IDo6IF8gLT4geFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuZnJvbnQgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyB4IF0gLT4geFxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2JhY2tfaW52YXJpYW50ICgpKVxuOztcblxubGV0IGRyb3BfZnJvbnRfZXhuIHQgPVxuICBtYXRjaCB0LmZyb250IHdpdGhcbiAgfCBfIDo6IHhzIC0+IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggLSAxKSB+ZnJvbnQ6eHMgfmJhY2s6dC5iYWNrXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5iYWNrIHdpdGhcbiAgICAgfCBbXSAtPiByYWlzZSBFbXB0eVxuICAgICB8IFsgXyBdIC0+IGVtcHR5XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfZnJvbnRfaW52YXJpYW50ICgpKVxuOztcblxubGV0IGRyb3BfYmFja19leG4gdCA9XG4gIG1hdGNoIHQuYmFjayB3aXRoXG4gIHwgXyA6OiB4cyAtPiBtYWtlIH5sZW5ndGg6KHQubGVuZ3RoIC0gMSkgfmJhY2s6eHMgfmZyb250OnQuZnJvbnRcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmZyb250IHdpdGhcbiAgICAgfCBbXSAtPiByYWlzZSBFbXB0eVxuICAgICB8IFsgXyBdIC0+IGVtcHR5XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfYmFja19pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udF9leG4gdCA9IHBlZWtfZnJvbnRfZXhuIHQsIGRyb3BfZnJvbnRfZXhuIHRcbmxldCBkZXF1ZXVlX2JhY2tfZXhuIHQgPSBwZWVrX2JhY2tfZXhuIHQsIGRyb3BfYmFja19leG4gdFxuXG5sZXQgb3B0aW9uYWwgZiB0ID1cbiAgbWF0Y2ggZiB0IHdpdGhcbiAgfCB4IC0+IFNvbWUgeFxuICB8IGV4Y2VwdGlvbiBFbXB0eSAtPiBOb25lXG47O1xuXG5sZXQgcGVla19mcm9udCB0ID0gb3B0aW9uYWwgcGVla19mcm9udF9leG4gdFxubGV0IHBlZWtfYmFjayB0ID0gb3B0aW9uYWwgcGVla19iYWNrX2V4biB0XG5sZXQgZHJvcF9mcm9udCB0ID0gb3B0aW9uYWwgZHJvcF9mcm9udF9leG4gdFxubGV0IGRyb3BfYmFjayB0ID0gb3B0aW9uYWwgZHJvcF9iYWNrX2V4biB0XG5sZXQgZGVxdWV1ZV9mcm9udCB0ID0gb3B0aW9uYWwgZGVxdWV1ZV9mcm9udF9leG4gdFxubGV0IGRlcXVldWVfYmFjayB0ID0gb3B0aW9uYWwgZGVxdWV1ZV9iYWNrX2V4biB0XG5cbmxldCBlbnF1ZXVlIHQgc2lkZSB4ID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGVucXVldWVfZnJvbnQgdCB4XG4gIHwgYGJhY2sgLT4gZW5xdWV1ZV9iYWNrIHQgeFxuOztcblxubGV0IHBlZWsgdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IHBlZWtfZnJvbnQgdFxuICB8IGBiYWNrIC0+IHBlZWtfYmFjayB0XG47O1xuXG5sZXQgcGVla19leG4gdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IHBlZWtfZnJvbnRfZXhuIHRcbiAgfCBgYmFjayAtPiBwZWVrX2JhY2tfZXhuIHRcbjs7XG5cbmxldCBkcm9wIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkcm9wX2Zyb250IHRcbiAgfCBgYmFjayAtPiBkcm9wX2JhY2sgdFxuOztcblxubGV0IGRyb3BfZXhuIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkcm9wX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gZHJvcF9iYWNrX2V4biB0XG47O1xuXG5sZXQgZGVxdWV1ZSB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udCB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrIHRcbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFja19leG4gdFxuOztcblxubGV0IHJldiB0ID0geyB0IHdpdGggZnJvbnQgPSB0LmJhY2s7IGJhY2sgPSB0LmZyb250IH1cblxubW9kdWxlIEFyYml0cmFyeV9vcmRlciA9IHN0cnVjdFxuICBsZXQgaXNfZW1wdHkgPSBpc19lbXB0eVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGxldCB0b19saXN0IHQgPSBMaXN0LnJldl9hcHBlbmQgdC5mcm9udCB0LmJhY2tcbiAgbGV0IHRvX2FycmF5IHQgPSBBcnJheS5vZl9saXN0ICh0b19saXN0IHQpXG4gIGxldCB0b19zZXF1ZW5jZSB0ID0gU2VxdWVuY2UuYXBwZW5kIChTZXF1ZW5jZS5vZl9saXN0IHQuZnJvbnQpIChTZXF1ZW5jZS5vZl9saXN0IHQuYmFjaylcblxuICBsZXQgc3VtICh0eXBlIGEpIChtb2R1bGUgTSA6IENvbnRhaW5lci5TdW1tYWJsZSB3aXRoIHR5cGUgdCA9IGEpIHQgfmYgPVxuICAgIGxldCBvcGVuIE0gaW5cbiAgICBMaXN0LnN1bSAobW9kdWxlIE0pIHQuZnJvbnQgfmYgKyBMaXN0LnN1bSAobW9kdWxlIE0pIHQuYmFjayB+ZlxuICA7O1xuXG4gIGxldCBjb3VudCB0IH5mID0gTGlzdC5jb3VudCB0LmZyb250IH5mICsgTGlzdC5jb3VudCB0LmJhY2sgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IExpc3QuZm9yX2FsbCB0LmZyb250IH5mICYmIExpc3QuZm9yX2FsbCB0LmJhY2sgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gTGlzdC5leGlzdHMgdC5mcm9udCB+ZiB8fCBMaXN0LmV4aXN0cyB0LmJhY2sgfmZcbiAgbGV0IG1lbSB0IHggfmVxdWFsID0gTGlzdC5tZW0gfmVxdWFsIHQuZnJvbnQgeCB8fCBMaXN0Lm1lbSB+ZXF1YWwgdC5iYWNrIHhcblxuICBsZXQgaXRlciB0IH5mID1cbiAgICBMaXN0Lml0ZXIgdC5mcm9udCB+ZjtcbiAgICBMaXN0Lml0ZXIgdC5iYWNrIH5mXG4gIDs7XG5cbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgKExpc3QuZm9sZCB0LmZyb250IH5pbml0IH5mIHw+IGZ1biBpbml0IC0+IExpc3QuZm9sZCB0LmJhY2sgfmluaXQgfmYpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxuXG4gIGxldCBmaW5kIHQgfmYgPVxuICAgIG1hdGNoIExpc3QuZmluZCB0LmZyb250IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gTGlzdC5maW5kIHQuYmFjayB+ZlxuICAgIHwgc29tZSAtPiBzb21lXG4gIDs7XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPVxuICAgIG1hdGNoIExpc3QuZmluZF9tYXAgdC5mcm9udCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IExpc3QuZmluZF9tYXAgdC5iYWNrIH5mXG4gICAgfCBzb21lIC0+IHNvbWVcbiAgOztcblxuICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID1cbiAgICBtYXRjaCBMaXN0Lm1heF9lbHQgdC5mcm9udCB+Y29tcGFyZSwgTGlzdC5tYXhfZWx0IHQuYmFjayB+Y29tcGFyZSB3aXRoXG4gICAgfCBOb25lLCBvcHQgfCBvcHQsIE5vbmUgLT4gb3B0XG4gICAgfCAoU29tZSB4IGFzIHNvbWVfeCksIChTb21lIHkgYXMgc29tZV95KSAtPlxuICAgICAgaWYgY29tcGFyZSB4IHkgPj0gMCB0aGVuIHNvbWVfeCBlbHNlIHNvbWVfeVxuICA7O1xuXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPVxuICAgIG1hdGNoIExpc3QubWluX2VsdCB0LmZyb250IH5jb21wYXJlLCBMaXN0Lm1pbl9lbHQgdC5iYWNrIH5jb21wYXJlIHdpdGhcbiAgICB8IE5vbmUsIG9wdCB8IG9wdCwgTm9uZSAtPiBvcHRcbiAgICB8IChTb21lIHggYXMgc29tZV94KSwgKFNvbWUgeSBhcyBzb21lX3kpIC0+XG4gICAgICBpZiBjb21wYXJlIHggeSA8PSAwIHRoZW4gc29tZV94IGVsc2Ugc29tZV95XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfY29udGFpbmVyIChGIDogc2lnXG4gICAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+ICdhIGxpc3RcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IHRvX2xpc3QgPSBGLnRvX2xpc3RcbiAgbGV0IGlzX2VtcHR5ID0gaXNfZW1wdHlcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBsZXQgbWVtIHQgeCB+ZXF1YWwgPSBMaXN0Lm1lbSB+ZXF1YWwgKHRvX2xpc3QgdCkgeFxuICBsZXQgaXRlciB0IH5mID0gTGlzdC5pdGVyICh0b19saXN0IHQpIH5mXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBMaXN0LmZvbGQgKHRvX2xpc3QgdCkgfmluaXQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gTGlzdC5leGlzdHMgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IExpc3QuZm9yX2FsbCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IExpc3QuY291bnQgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBMaXN0LnN1bSBtICh0b19saXN0IHQpIH5mXG4gIGxldCBmaW5kIHQgfmYgPSBMaXN0LmZpbmQgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBMaXN0LmZpbmRfbWFwICh0b19saXN0IHQpIH5mXG4gIGxldCB0b19hcnJheSB0ID0gTGlzdC50b19hcnJheSAodG9fbGlzdCB0KVxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gTGlzdC5taW5fZWx0ICh0b19saXN0IHQpIH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBMaXN0Lm1heF9lbHQgKHRvX2xpc3QgdCkgfmNvbXBhcmVcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcbmVuZFxuXG5tb2R1bGUgRnJvbnRfdG9fYmFjayA9IHN0cnVjdFxuICBsZXQgb2ZfbGlzdCBsaXN0ID0gbWFrZSB+bGVuZ3RoOihMaXN0Lmxlbmd0aCBsaXN0KSB+ZnJvbnQ6bGlzdCB+YmFjazpbXVxuICBsZXQgdG9fbGlzdCB0ID0gdC5mcm9udCBAIExpc3QucmV2IHQuYmFja1xuXG4gIGxldCB0b19zZXF1ZW5jZSB0ID1cbiAgICBTZXF1ZW5jZS5hcHBlbmQgKFNlcXVlbmNlLm9mX2xpc3QgdC5mcm9udCkgKFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IHQuYmFjaykpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgICBsZXQgbGVuZ3RoLCBiYWNrID1cbiAgICAgIFNlcXVlbmNlLmZvbGQgc2VxdWVuY2UgfmluaXQ6KDAsIFtdKSB+ZjooZnVuIChsZW5ndGgsIGFjYykgYSAtPlxuICAgICAgICBsZW5ndGggKyAxLCBhIDo6IGFjYylcbiAgICBpblxuICAgIG1ha2Ugfmxlbmd0aCB+ZnJvbnQ6W10gfmJhY2tcbiAgOztcblxuICBpbmNsdWRlIE1ha2VfY29udGFpbmVyIChzdHJ1Y3RcbiAgICAgIGxldCB0b19saXN0ID0gdG9fbGlzdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgQmFja190b19mcm9udCA9IHN0cnVjdFxuICBsZXQgdG9fbGlzdCB0ID0gdC5iYWNrIEAgTGlzdC5yZXYgdC5mcm9udFxuICBsZXQgb2ZfbGlzdCBsaXN0ID0gbWFrZSB+bGVuZ3RoOihMaXN0Lmxlbmd0aCBsaXN0KSB+YmFjazpsaXN0IH5mcm9udDpbXVxuXG4gIGxldCB0b19zZXF1ZW5jZSB0ID1cbiAgICBTZXF1ZW5jZS5hcHBlbmQgKFNlcXVlbmNlLm9mX2xpc3QgdC5iYWNrKSAoU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgdC5mcm9udCkpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgICBsZXQgbGVuZ3RoLCBmcm9udCA9XG4gICAgICBTZXF1ZW5jZS5mb2xkIHNlcXVlbmNlIH5pbml0OigwLCBbXSkgfmY6KGZ1biAobGVuZ3RoLCBhY2MpIGEgLT5cbiAgICAgICAgbGVuZ3RoICsgMSwgYSA6OiBhY2MpXG4gICAgaW5cbiAgICBtYWtlIH5sZW5ndGggfmZyb250IH5iYWNrOltdXG4gIDs7XG5cbiAgaW5jbHVkZSBNYWtlX2NvbnRhaW5lciAoc3RydWN0XG4gICAgICBsZXQgdG9fbGlzdCA9IHRvX2xpc3RcbiAgICBlbmQpXG5lbmRcblxuaW5jbHVkZSBGcm9udF90b19iYWNrXG5cbmxldCBzaW5nbGV0b24geCA9IG9mX2xpc3QgWyB4IF1cblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBmb2xkIHQgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IGVsdCAtPiBmb2xkIChmIGVsdCkgfmluaXQ6dCB+ZjplbnF1ZXVlX2JhY2spXG4gICAgOztcblxuICAgIGxldCByZXR1cm4gPSBzaW5nbGV0b25cblxuICAgIGxldCBtYXAgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgICAgeyBmcm9udCA9IExpc3QubWFwIHQuZnJvbnQgfmY7IGJhY2sgPSBMaXN0Lm1hcCB0LmJhY2sgfmY7IGxlbmd0aCA9IHQubGVuZ3RoIH0pXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgY29tcGFyZSBjbXAgdDEgdDIgPSBMaXN0LmNvbXBhcmUgY21wICh0b19saXN0IHQxKSAodG9fbGlzdCB0MilcbmxldCBlcXVhbCBlcSB0MSB0MiA9IExpc3QuZXF1YWwgZXEgKHRvX2xpc3QgdDEpICh0b19saXN0IHQyKVxuXG5sZXQgaGFzaF9mb2xkX3QgaGFzaF9mb2xkX2Egc3RhdGUgdCA9XG4gIGZvbGQgfmY6aGFzaF9mb2xkX2EgfmluaXQ6KFslaGFzaF9mb2xkOiBpbnRdIHN0YXRlIChsZW5ndGggdCkpIHRcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgdCA9IFslc2V4cF9vZjogZWx0IGxpc3RdICh0b19saXN0IHQpXG4gICAgbGV0IHRfb2Zfc2V4cCBlbHRfb2Zfc2V4cCBzZXhwID0gb2ZfbGlzdCAoWyVvZl9zZXhwOiBlbHQgbGlzdF0gc2V4cClcbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBMaXN0LnRfc2V4cF9ncmFtbWFyXG4gICAgbGV0IG1hcCA9IG1hcFxuXG4gICAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICAgICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjgzZjk2OTgyLTQ5OTItMTFlNi05MTlkLWZiZGRjZmRjYTU3NlwiXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuRmRlcXVlXCJcbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgaXRlciB0IH5mID0gTGlzdC5pdGVyICh0b19saXN0IHQpIH5mXG5cbiAgICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgICAgbGV0IHJlYyBsb29wIG5leHQgYWNjIG4gPVxuICAgICAgICAgICAgaWYgbGVuID0gblxuICAgICAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBhc3NlcnQgKG4gPSBsZW5ndGggYWNjKTtcbiAgICAgICAgICAgICAgbGV0IHggPSBuZXh0ICgpIGluXG4gICAgICAgICAgICAgIGxvb3AgbmV4dCAoZW5xdWV1ZV9iYWNrIGFjYyB4KSAobiArIDEpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbG9vcCBuZXh0IGVtcHR5IDBcbiAgICAgICAgOztcbiAgICAgIGVuZClcblxuICAgICgqIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gcHJvZHVjZWQgYnkgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSBpc1xuICAgICAgIGFzc3VtZWQgdG8gYmUgc3RhYmxlIChpZiB0aGUgJ2EgaXMgc3RhYmxlKS4gKilcbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgKF8gOiAnYSBTdGFibGVfd2l0bmVzcy50KSA6ICdhIHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoU3RhYmxlLlYxIDogbW9kdWxlIHR5cGUgb2YgU3RhYmxlLlYxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBidWlsZCB+ZnJvbnQgfmJhY2sgPVxuICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBmcm9udCArIExpc3QubGVuZ3RoIGJhY2sgaW5cbiAgICBsZXQgdCA9IHsgbGVuZ3RoOyBmcm9udDsgYmFjayB9IGluXG4gICAgaW52YXJpYW50IGlnbm9yZSB0O1xuICAgIHRcbiAgOztcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIChcbiAgICAgIFN0cmluZy5TdGFibGUuVjEgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdCA9IHN0cmluZ1xuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLlNcbiAgICAgICAgICB3aXRoIHR5cGUgY29tcGFyYWJsZSA6PSB0XG4gICAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0cmluZy5TdGFibGUuVjEuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBDb21wYXJhdG9yLnRcblxuICAgICAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLlMgd2l0aCB0eXBlIGtleSA6PSB0XG4gICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5pbmNsdWRlIEZpbGVuYW1lX2Jhc2VcblxuaW5jbHVkZSAoXG4gIFN0cmluZyA6XG4gIHNpZ1xuICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBpbmNsdWRlXG4gICAgICBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgRmRlcXVlXG5cbmxldCBlbnF1ZXVlID0gZW5xdWV1ZV9iYWNrXG5sZXQgcGVla19leG4gPSBwZWVrX2Zyb250X2V4blxubGV0IHBlZWsgPSBwZWVrX2Zyb250XG5sZXQgZGVxdWV1ZV9leG4gPSBkZXF1ZXVlX2Zyb250X2V4blxubGV0IGRlcXVldWUgPSBkZXF1ZXVlX2Zyb250XG5sZXQgZHJvcF9leG4gPSBkcm9wX2Zyb250X2V4blxubGV0IHRvX3NlcXVlbmNlID0gRnJvbnRfdG9fYmFjay50b19zZXF1ZW5jZVxubGV0IG9mX3NlcXVlbmNlID0gRnJvbnRfdG9fYmFjay5vZl9zZXF1ZW5jZVxuXG4oKiBEZXByZWNhdGVkIGFsaWFzZXMgKilcbmxldCB0b3AgPSBwZWVrXG5sZXQgdG9wX2V4biA9IHBlZWtfZXhuXG5sZXQgZGlzY2FyZF9leG4gPSBkcm9wX2V4blxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFsbG9jYXRpb25fcG9saWN5ID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IE5leHRfZml0XG4gICAgICAgIHwgRmlyc3RfZml0XG4gICAgICAgIHwgQmVzdF9maXRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdCA9IHN0cnVjdFxuICAgIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNCwgMTIsIDApXVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBTdGRsaWIuR2Muc3RhdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgICA7IGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIFslJWVsc2VdXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBTdGRsaWIuR2Muc3RhdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgWyUlZW5kaWZdXG4gIGVuZFxuXG4gIG1vZHVsZSBDb250cm9sID0gc3RydWN0XG4gICAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg1LCAwLCAwKV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgICB0eXBlIHQgPSBTdGRsaWIuR2MuY29udHJvbCA9XG4gICAgICAgIHsgbXV0YWJsZSBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBzcGFjZV9vdmVyaGVhZCA6IGludFxuICAgICAgICA7IG11dGFibGUgdmVyYm9zZSA6IGludFxuICAgICAgICA7IG11dGFibGUgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBzdGFja19saW1pdCA6IGludFxuICAgICAgICA7IG11dGFibGUgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgICAgOyB3aW5kb3dfc2l6ZSA6IGludFxuICAgICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgICA7IGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIFslJWVsc2VdXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICAgICAgdHlwZSB0ID0gU3RkbGliLkdjLmNvbnRyb2wgPVxuICAgICAgICB7IG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgICA7IG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICAgIDsgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyB2ZXJib3NlIDogaW50XG4gICAgICAgIDsgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgICAgOyBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgWyUlZW5kaWZdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RkbGliLkdjXG5cbm1vZHVsZSBTdGF0ID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAxMiwgMCldXG5cbiAgICB0eXBlIHQgPSBTdGRsaWIuR2Muc3RhdCA9XG4gICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIGJpbl9pbywgc2V4cCwgZmllbGRzXVxuXG4gICAgWyUlZWxzZV1cblxuICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5zdGF0ID1cbiAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICA7IGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBfb2YsIGZpZWxkc11cblxuICAgIFslJWVuZGlmXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKFQpXG5cbiAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAxMiwgMCldXG5cbiAgbGV0IGNvbWJpbmUgZmlyc3Qgc2Vjb25kIH5mbG9hdF9mIH5pbnRfZiA9XG4gICAgeyBtaW5vcl93b3JkcyA9IGZsb2F0X2YgZmlyc3QubWlub3Jfd29yZHMgc2Vjb25kLm1pbm9yX3dvcmRzXG4gICAgOyBwcm9tb3RlZF93b3JkcyA9IGZsb2F0X2YgZmlyc3QucHJvbW90ZWRfd29yZHMgc2Vjb25kLnByb21vdGVkX3dvcmRzXG4gICAgOyBtYWpvcl93b3JkcyA9IGZsb2F0X2YgZmlyc3QubWFqb3Jfd29yZHMgc2Vjb25kLm1ham9yX3dvcmRzXG4gICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA9IGludF9mIGZpcnN0Lm1pbm9yX2NvbGxlY3Rpb25zIHNlY29uZC5taW5vcl9jb2xsZWN0aW9uc1xuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPSBpbnRfZiBmaXJzdC5tYWpvcl9jb2xsZWN0aW9ucyBzZWNvbmQubWFqb3JfY29sbGVjdGlvbnNcbiAgICA7IGhlYXBfd29yZHMgPSBpbnRfZiBmaXJzdC5oZWFwX3dvcmRzIHNlY29uZC5oZWFwX3dvcmRzXG4gICAgOyBoZWFwX2NodW5rcyA9IGludF9mIGZpcnN0LmhlYXBfY2h1bmtzIHNlY29uZC5oZWFwX2NodW5rc1xuICAgIDsgbGl2ZV93b3JkcyA9IGludF9mIGZpcnN0LmxpdmVfd29yZHMgc2Vjb25kLmxpdmVfd29yZHNcbiAgICA7IGxpdmVfYmxvY2tzID0gaW50X2YgZmlyc3QubGl2ZV9ibG9ja3Mgc2Vjb25kLmxpdmVfYmxvY2tzXG4gICAgOyBmcmVlX3dvcmRzID0gaW50X2YgZmlyc3QuZnJlZV93b3JkcyBzZWNvbmQuZnJlZV93b3Jkc1xuICAgIDsgZnJlZV9ibG9ja3MgPSBpbnRfZiBmaXJzdC5mcmVlX2Jsb2NrcyBzZWNvbmQuZnJlZV9ibG9ja3NcbiAgICA7IGxhcmdlc3RfZnJlZSA9IGludF9mIGZpcnN0Lmxhcmdlc3RfZnJlZSBzZWNvbmQubGFyZ2VzdF9mcmVlXG4gICAgOyBmcmFnbWVudHMgPSBpbnRfZiBmaXJzdC5mcmFnbWVudHMgc2Vjb25kLmZyYWdtZW50c1xuICAgIDsgY29tcGFjdGlvbnMgPSBpbnRfZiBmaXJzdC5jb21wYWN0aW9ucyBzZWNvbmQuY29tcGFjdGlvbnNcbiAgICA7IHRvcF9oZWFwX3dvcmRzID0gaW50X2YgZmlyc3QudG9wX2hlYXBfd29yZHMgc2Vjb25kLnRvcF9oZWFwX3dvcmRzXG4gICAgOyBzdGFja19zaXplID0gaW50X2YgZmlyc3Quc3RhY2tfc2l6ZSBzZWNvbmQuc3RhY2tfc2l6ZVxuICAgIH1cbiAgOztcblxuICBbJSVlbHNlXVxuXG4gIGxldCBjb21iaW5lIGZpcnN0IHNlY29uZCB+ZmxvYXRfZiB+aW50X2YgPVxuICAgIHsgbWlub3Jfd29yZHMgPSBmbG9hdF9mIGZpcnN0Lm1pbm9yX3dvcmRzIHNlY29uZC5taW5vcl93b3Jkc1xuICAgIDsgcHJvbW90ZWRfd29yZHMgPSBmbG9hdF9mIGZpcnN0LnByb21vdGVkX3dvcmRzIHNlY29uZC5wcm9tb3RlZF93b3Jkc1xuICAgIDsgbWFqb3Jfd29yZHMgPSBmbG9hdF9mIGZpcnN0Lm1ham9yX3dvcmRzIHNlY29uZC5tYWpvcl93b3Jkc1xuICAgIDsgbWlub3JfY29sbGVjdGlvbnMgPSBpbnRfZiBmaXJzdC5taW5vcl9jb2xsZWN0aW9ucyBzZWNvbmQubWlub3JfY29sbGVjdGlvbnNcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zID0gaW50X2YgZmlyc3QubWFqb3JfY29sbGVjdGlvbnMgc2Vjb25kLm1ham9yX2NvbGxlY3Rpb25zXG4gICAgOyBoZWFwX3dvcmRzID0gaW50X2YgZmlyc3QuaGVhcF93b3JkcyBzZWNvbmQuaGVhcF93b3Jkc1xuICAgIDsgaGVhcF9jaHVua3MgPSBpbnRfZiBmaXJzdC5oZWFwX2NodW5rcyBzZWNvbmQuaGVhcF9jaHVua3NcbiAgICA7IGxpdmVfd29yZHMgPSBpbnRfZiBmaXJzdC5saXZlX3dvcmRzIHNlY29uZC5saXZlX3dvcmRzXG4gICAgOyBsaXZlX2Jsb2NrcyA9IGludF9mIGZpcnN0LmxpdmVfYmxvY2tzIHNlY29uZC5saXZlX2Jsb2Nrc1xuICAgIDsgZnJlZV93b3JkcyA9IGludF9mIGZpcnN0LmZyZWVfd29yZHMgc2Vjb25kLmZyZWVfd29yZHNcbiAgICA7IGZyZWVfYmxvY2tzID0gaW50X2YgZmlyc3QuZnJlZV9ibG9ja3Mgc2Vjb25kLmZyZWVfYmxvY2tzXG4gICAgOyBsYXJnZXN0X2ZyZWUgPSBpbnRfZiBmaXJzdC5sYXJnZXN0X2ZyZWUgc2Vjb25kLmxhcmdlc3RfZnJlZVxuICAgIDsgZnJhZ21lbnRzID0gaW50X2YgZmlyc3QuZnJhZ21lbnRzIHNlY29uZC5mcmFnbWVudHNcbiAgICA7IGNvbXBhY3Rpb25zID0gaW50X2YgZmlyc3QuY29tcGFjdGlvbnMgc2Vjb25kLmNvbXBhY3Rpb25zXG4gICAgOyB0b3BfaGVhcF93b3JkcyA9IGludF9mIGZpcnN0LnRvcF9oZWFwX3dvcmRzIHNlY29uZC50b3BfaGVhcF93b3Jkc1xuICAgIDsgc3RhY2tfc2l6ZSA9IGludF9mIGZpcnN0LnN0YWNrX3NpemUgc2Vjb25kLnN0YWNrX3NpemVcbiAgICA7IGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyA9XG4gICAgICAgIGludF9mIGZpcnN0LmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyBzZWNvbmQuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXG4gICAgfVxuICA7O1xuXG4gIFslJWVuZGlmXVxuXG4gIGxldCBhZGQgPSBjb21iaW5lIH5mbG9hdF9mOkZsb2F0LiggKyApIH5pbnRfZjpJbnQuKCArIClcbiAgbGV0IGRpZmYgPSBjb21iaW5lIH5mbG9hdF9mOkZsb2F0LiggLSApIH5pbnRfZjpJbnQuKCAtIClcbmVuZFxuXG5tb2R1bGUgQ29udHJvbCA9IHN0cnVjdFxuICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDUsIDAsIDApXVxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgdHlwZSB0ID0gU3RkbGliLkdjLmNvbnRyb2wgPVxuICAgICAgeyBtdXRhYmxlIG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgOyBtdXRhYmxlIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICA7IG11dGFibGUgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSB2ZXJib3NlIDogaW50XG4gICAgICA7IG11dGFibGUgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICA7IG11dGFibGUgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgOyB3aW5kb3dfc2l6ZSA6IGludFxuICAgICAgOyBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2YsIGZpZWxkc11cbiAgZW5kXG5cbiAgWyUlZWxzZV1cblxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5jb250cm9sID1cbiAgICAgIHsgbWlub3JfaGVhcF9zaXplIDogaW50XG4gICAgICA7IG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICA7IHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICA7IHZlcmJvc2UgOiBpbnRcbiAgICAgIDsgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICA7IHN0YWNrX2xpbWl0IDogaW50XG4gICAgICA7IGFsbG9jYXRpb25fcG9saWN5IDogaW50XG4gICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZiwgZmllbGRzXVxuICBlbmRcblxuICBbJSVlbmRpZl1cblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKFQpXG5lbmRcblxubW9kdWxlIEFsbG9jYXRpb25fcG9saWN5ID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5BbGxvY2F0aW9uX3BvbGljeS5WMS50ID1cbiAgICB8IE5leHRfZml0XG4gICAgfCBGaXJzdF9maXRcbiAgICB8IEJlc3RfZml0XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwX29mXVxuXG4gIGxldCB0b19pbnQgPSBmdW5jdGlvblxuICAgIHwgTmV4dF9maXQgLT4gMFxuICAgIHwgRmlyc3RfZml0IC0+IDFcbiAgICB8IEJlc3RfZml0IC0+IDJcbiAgOztcbmVuZFxuXG5sZXQgdHVuZVxuICAgICAgP2xvZ2dlclxuICAgICAgP21pbm9yX2hlYXBfc2l6ZVxuICAgICAgP21ham9yX2hlYXBfaW5jcmVtZW50XG4gICAgICA/c3BhY2Vfb3ZlcmhlYWRcbiAgICAgID92ZXJib3NlXG4gICAgICA/bWF4X292ZXJoZWFkXG4gICAgICA/c3RhY2tfbGltaXRcbiAgICAgID9hbGxvY2F0aW9uX3BvbGljeVxuICAgICAgP3dpbmRvd19zaXplXG4gICAgICA/Y3VzdG9tX21ham9yX3JhdGlvXG4gICAgICA/Y3VzdG9tX21pbm9yX3JhdGlvXG4gICAgICA/Y3VzdG9tX21pbm9yX21heF9zaXplXG4gICAgICAoKVxuICA9XG4gIGxldCBvbGRfY29udHJvbF9wYXJhbXMgPSBnZXQgKCkgaW5cbiAgbGV0IGYgb3B0IHRvX3N0cmluZyBmaWVsZCA9XG4gICAgbGV0IG9sZF92YWx1ZSA9IEZpZWxkLmdldCBmaWVsZCBvbGRfY29udHJvbF9wYXJhbXMgaW5cbiAgICBtYXRjaCBvcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBvbGRfdmFsdWVcbiAgICB8IFNvbWUgbmV3X3ZhbHVlIC0+XG4gICAgICBPcHRpb24uaXRlciBsb2dnZXIgfmY6KGZ1biBmIC0+XG4gICAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAgIGZcbiAgICAgICAgICBcIkdjLkNvbnRyb2wuJXM6ICVzIC0+ICVzXCJcbiAgICAgICAgICAoRmllbGQubmFtZSBmaWVsZClcbiAgICAgICAgICAodG9fc3RyaW5nIG9sZF92YWx1ZSlcbiAgICAgICAgICAodG9fc3RyaW5nIG5ld192YWx1ZSkpO1xuICAgICAgbmV3X3ZhbHVlXG4gIGluXG4gIGxldCBhbGxvY2F0aW9uX3BvbGljeSA9IE9wdGlvbi5tYXAgYWxsb2NhdGlvbl9wb2xpY3kgfmY6QWxsb2NhdGlvbl9wb2xpY3kudG9faW50IGluXG4gIGxldCBuZXdfY29udHJvbF9wYXJhbXMgPVxuICAgIENvbnRyb2wuRmllbGRzLm1hcFxuICAgICAgfm1pbm9yX2hlYXBfc2l6ZTooZiBtaW5vcl9oZWFwX3NpemUgc3RyaW5nX29mX2ludClcbiAgICAgIH5tYWpvcl9oZWFwX2luY3JlbWVudDooZiBtYWpvcl9oZWFwX2luY3JlbWVudCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfnNwYWNlX292ZXJoZWFkOihmIHNwYWNlX292ZXJoZWFkIHN0cmluZ19vZl9pbnQpXG4gICAgICB+dmVyYm9zZTooZiB2ZXJib3NlIHN0cmluZ19vZl9pbnQpXG4gICAgICB+bWF4X292ZXJoZWFkOihmIG1heF9vdmVyaGVhZCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfnN0YWNrX2xpbWl0OihmIHN0YWNrX2xpbWl0IHN0cmluZ19vZl9pbnQpXG4gICAgICB+YWxsb2NhdGlvbl9wb2xpY3k6KGYgYWxsb2NhdGlvbl9wb2xpY3kgc3RyaW5nX29mX2ludClcbiAgICAgIH53aW5kb3dfc2l6ZTooZiB3aW5kb3dfc2l6ZSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfmN1c3RvbV9tYWpvcl9yYXRpbzooZiBjdXN0b21fbWFqb3JfcmF0aW8gc3RyaW5nX29mX2ludClcbiAgICAgIH5jdXN0b21fbWlub3JfcmF0aW86KGYgY3VzdG9tX21pbm9yX3JhdGlvIHN0cmluZ19vZl9pbnQpXG4gICAgICB+Y3VzdG9tX21pbm9yX21heF9zaXplOihmIGN1c3RvbV9taW5vcl9tYXhfc2l6ZSBzdHJpbmdfb2ZfaW50KVxuICBpblxuICBzZXQgbmV3X2NvbnRyb2xfcGFyYW1zXG47O1xuXG5sZXQgZGlzYWJsZV9jb21wYWN0aW9uID9sb2dnZXIgfmFsbG9jYXRpb25fcG9saWN5ICgpID1cbiAgbGV0IGFsbG9jYXRpb25fcG9saWN5ID1cbiAgICBtYXRjaCBhbGxvY2F0aW9uX3BvbGljeSB3aXRoXG4gICAgfCBgRG9uJ3RfY2hhbmdlIC0+IE5vbmVcbiAgICB8IGBTZXRfdG8gcG9saWN5IC0+IFNvbWUgcG9saWN5XG4gIGluXG4gICgqIFRoZSB2YWx1ZSAxXzAwMF8wMDAsIGFjY29yZGluZyB0b1xuICAgICBodHRwOi8vY2FtbC5pbnJpYS5mci9wdWIvZG9jcy9tYW51YWwtb2NhbWwtNC4wMi9saWJyZWYvR2MuaHRtbFxuICAgICB3aWxsIGRpc2FibGUgY29tcGFjdGlvbnMuXG4gICopXG4gIHR1bmUgP2xvZ2dlciA/YWxsb2NhdGlvbl9wb2xpY3kgfm1heF9vdmVyaGVhZDoxXzAwMF8wMDAgKClcbjs7XG5cbmV4dGVybmFsIG1pbm9yX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWlub3Jfd29yZHNcIlxuZXh0ZXJuYWwgbWFqb3Jfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl93b3Jkc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBwcm9tb3RlZF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX3Byb21vdGVkX3dvcmRzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1pbm9yX2NvbGxlY3Rpb25zIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbWFqb3JfY29sbGVjdGlvbnMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9uc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb21wYWN0aW9ucyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2NvbXBhY3Rpb25zXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1ham9yX3BsdXNfbWlub3Jfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzXCJcbmV4dGVybmFsIGFsbG9jYXRlZF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2FsbG9jYXRlZF93b3Jkc1wiXG5leHRlcm5hbCBydW5fbWVtcHJvZl9jYWxsYmFja3MgOiB1bml0IC0+IHVuaXQgPSBcImNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzXCJcblxuWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg1LCAwLCAwKV1cblxuZXh0ZXJuYWwgaGVhcF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2hlYXBfd29yZHNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaGVhcF9jaHVua3MgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19oZWFwX2NodW5rc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b3BfaGVhcF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX3RvcF9oZWFwX3dvcmRzXCIgW0BAbm9hbGxvY11cblxuWyUlZW5kaWZdXG5cbmxldCBzdGF0X3NpemVfbGF6eSA9XG4gIGxhenkgKE9iai5yZWFjaGFibGVfd29yZHMgKE9iai5yZXByIChTdGRsaWIuR2MucXVpY2tfc3RhdCAoKSA6IFN0YXQudCkpKVxuOztcblxubGV0IHN0YXRfc2l6ZSAoKSA9IExhenkuZm9yY2Ugc3RhdF9zaXplX2xhenlcbmxldCB6ZXJvID0gU3lzLm9wYXF1ZV9pZGVudGl0eSAoaW50X29mX3N0cmluZyBcIjBcIilcblxuKCogVGhlIGNvbXBpbGVyIHdvbid0IG9wdGltaXplIGludF9vZl9zdHJpbmcgYXdheSBzbyBpdCB3b24ndFxuICAgcGVyZm9ybSBjb25zdGFudCBmb2xkaW5nIGJlbG93LiAqKVxubGV0IHJlYyBrZWVwX2FsaXZlIG8gPSBpZiB6ZXJvIDw+IDAgdGhlbiBrZWVwX2FsaXZlIChTeXMub3BhcXVlX2lkZW50aXR5IG8pXG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAoKiBXZSBkaXNhYmxlIGlubGluaW5nIGZvciB0aGlzIGZ1bmN0aW9uIHNvIHRoZSBHQyBzdGF0cyBhbmQgdGhlIGNhbGwgdG8gW2ZdIGFyZSBuZXZlclxuICAgICByZWFycmFuZ2VkLiAqKVxuICBsZXRbQGNvbGRdIG1lYXN1cmVfaW50ZXJuYWwgfm9uX3Jlc3VsdCBmID1cbiAgICBsZXQgbWlub3Jfd29yZHNfYmVmb3JlID0gbWlub3Jfd29yZHMgKCkgaW5cbiAgICBsZXQgbWFqb3Jfd29yZHNfYmVmb3JlID0gbWFqb3Jfd29yZHMgKCkgaW5cbiAgICAoKiBXZSB3cmFwIFtmICgpXSB3aXRoIFtTeXMub3BhcXVlX2lkZW50aXR5XSB0byBwcmV2ZW50IHRoZSByZXR1cm4gdmFsdWUgZnJvbSBiZWluZ1xuICAgICAgIG9wdGltaXplZCBhd2F5LiAqKVxuICAgIGxldCB4ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSAoZiAoKSkgaW5cbiAgICBsZXQgbWlub3Jfd29yZHNfYWZ0ZXIgPSBtaW5vcl93b3JkcyAoKSBpblxuICAgIGxldCBtYWpvcl93b3Jkc19hZnRlciA9IG1ham9yX3dvcmRzICgpIGluXG4gICAgbGV0IG1ham9yX3dvcmRzX2FsbG9jYXRlZCA9IG1ham9yX3dvcmRzX2FmdGVyIC0gbWFqb3Jfd29yZHNfYmVmb3JlIGluXG4gICAgbGV0IG1pbm9yX3dvcmRzX2FsbG9jYXRlZCA9IG1pbm9yX3dvcmRzX2FmdGVyIC0gbWlub3Jfd29yZHNfYmVmb3JlIGluXG4gICAgb25fcmVzdWx0IH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCB4XG4gIDs7XG5cbiAgbGV0IGlzX3plcm9fYWxsb2MgKHR5cGUgYSkgKGYgOiB1bml0IC0+IGEpID1cbiAgICAoKiBJbnN0ZWFkIG9mIHVzaW5nIFtBbGxvY2F0aW9uX3JlcG9ydC5tZWFzdXJlXSwgYW5kIG1hdGNoaW5nIG9uIHRoZSByZXN1bHQsIHdlIHVzZVxuICAgICAgIHRoaXMgY29uc3RydWN0aW9uLCBpbiBvcmRlciB0byBoYXZlIFtpc196ZXJvX2FsbG9jXSBub3QgYWxsb2NhdGUgaXRzZWxmLiBUaGlzXG4gICAgICAgZW5hYmxlcyBbaXNfemVyb19hbGxvY10gdG8gYmUgdXNlZCBpbiBhIG5lc3RlZCB3YXkuICopXG4gICAgbWVhc3VyZV9pbnRlcm5hbFxuICAgICAgZlxuICAgICAgfm9uX3Jlc3VsdDooZnVuIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCB2YWx1ZSAtPlxuICAgICAgICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgdmFsdWUgOiBhKTtcbiAgICAgICAgbWFqb3Jfd29yZHNfYWxsb2NhdGVkID09IDAgJiYgbWlub3Jfd29yZHNfYWxsb2NhdGVkID09IDApXG4gIDs7XG5cbiAgbW9kdWxlIEFsbG9jYXRpb25fcmVwb3J0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbWFqb3Jfd29yZHNfYWxsb2NhdGVkIDogaW50XG4gICAgICA7IG1pbm9yX3dvcmRzX2FsbG9jYXRlZCA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgY3JlYXRlIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCA9XG4gICAgICB7IG1ham9yX3dvcmRzX2FsbG9jYXRlZDsgbWlub3Jfd29yZHNfYWxsb2NhdGVkIH1cbiAgICA7O1xuICBlbmRcblxuICBsZXQgbWVhc3VyZV9hbGxvY2F0aW9uIGYgPVxuICAgIG1lYXN1cmVfaW50ZXJuYWwgZiB+b25fcmVzdWx0OihmdW4gfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkIHggLT5cbiAgICAgIHgsIEFsbG9jYXRpb25fcmVwb3J0LmNyZWF0ZSB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQpXG4gIDs7XG5cbiAgbW9kdWxlIEFsbG9jYXRpb25fbG9nID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgc2l6ZV9pbl93b3JkcyA6IGludFxuICAgICAgOyBpc19tYWpvciA6IGJvb2xcbiAgICAgIDsgYmFja3RyYWNlIDogc3RyaW5nXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgWyUlaWYgb2NhbWxfdmVyc2lvbiA+PSAoNCwgMTEsIDApXVxuXG4gIGxldCBtZWFzdXJlX2FuZF9sb2dfYWxsb2NhdGlvbiBmID1cbiAgICBsZXQgbG9nIDogQWxsb2NhdGlvbl9sb2cudCBsaXN0IHJlZiA9IHJlZiBbXVxuICAgIGFuZCBtYWpvcl9hbGxvY3MgPSByZWYgMFxuICAgIGFuZCBtaW5vcl9hbGxvY3MgPSByZWYgMCBpblxuICAgIGxldCBvbl9hbGxvYyB+aXNfbWFqb3IgKGluZm8gOiBTdGRsaWIuR2MuTWVtcHJvZi5hbGxvY2F0aW9uKSA9XG4gICAgICBpZiBpc19tYWpvclxuICAgICAgdGhlbiBtYWpvcl9hbGxvY3MgOj0gIW1ham9yX2FsbG9jcyArIGluZm8ubl9zYW1wbGVzXG4gICAgICBlbHNlIG1pbm9yX2FsbG9jcyA6PSAhbWlub3JfYWxsb2NzICsgaW5mby5uX3NhbXBsZXM7XG4gICAgICBsZXQgYmFja3RyYWNlID0gU3RkbGliLlByaW50ZXhjLnJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIGluZm8uY2FsbHN0YWNrIGluXG4gICAgICAoKiBNYWtlIGJhY2t0cmFjZXMgZWFzaWVyIHRvIHJlYWQgYnkgZGVsZXRpbmcgZXZlcnl0aGluZyBiZWxvdyB0aGlzIGZ1bmN0aW9uICopXG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnN1YnN0cl9pbmRleCBiYWNrdHJhY2UgfnBhdHRlcm46XCJtZWFzdXJlX2FuZF9sb2dfYWxsb2NhdGlvblwiIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogVGhpcyBjYXNlIGlzIHBvc3NpYmxlOiB3ZSBtYXkgaGF2ZSBsb2dnZWQgYWxsb2NhdGlvbnMgaW4gYW5vdGhlciB0aHJlYWQgKilcbiAgICAgICAgICBiYWNrdHJhY2VcbiAgICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgICBTdHJpbmcuc3ViIH5wb3M6MCB+bGVuOnAgYmFja3RyYWNlXG4gICAgICAgICAgfD4gU3RyaW5nLnJzdHJpcCB+ZHJvcDooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgJ1xcbicgLT4gZmFsc2VcbiAgICAgICAgICAgIHwgXyAtPiB0cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCBpbmZvIDogQWxsb2NhdGlvbl9sb2cudCA9XG4gICAgICAgIHsgc2l6ZV9pbl93b3JkcyA9IGluZm8ubl9zYW1wbGVzOyBpc19tYWpvcjsgYmFja3RyYWNlIH1cbiAgICAgIGluXG4gICAgICBsb2cgOj0gaW5mbyA6OiAhbG9nO1xuICAgICAgTm9uZVxuICAgIGluXG4gICAgbGV0IHRyYWNrZXIgPVxuICAgICAgeyBTdGRsaWIuR2MuTWVtcHJvZi5udWxsX3RyYWNrZXIgd2l0aFxuICAgICAgICBhbGxvY19taW5vciA9IG9uX2FsbG9jIH5pc19tYWpvcjpmYWxzZVxuICAgICAgOyBhbGxvY19tYWpvciA9IG9uX2FsbG9jIH5pc19tYWpvcjp0cnVlXG4gICAgICB9XG4gICAgaW5cbiAgICBTdGRsaWIuR2MuTWVtcHJvZi5zdGFydCB+c2FtcGxpbmdfcmF0ZToxLjAgdHJhY2tlcjtcbiAgICAoKiBFeG4ucHJvdGVjdCwgbWFudWFsbHkgaW5saW5lZCB0byBndWFyYW50ZWUgbm8gYWxsb2NhdGlvbnMgKilcbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgICAgfCB4IC0+XG4gICAgICAgICgqIE1lbXByb2Yuc3RvcCBkb2VzIG5vdCBndWFyYW50ZWUgdGhhdCBhbGwgbWVtcHJvZiBjYWxsYmFja3MgYXJlIHJ1biAoc29tZSBtYXkgYmVcbiAgICAgICAgICAgZGVsYXllZCBpZiB0aGV5IGhhcHBlbmVkIGR1cmluZyBDIGNvZGUgYW5kIHRoZXJlIGhhcyBiZWVuIG5vIGFsbG9jYXRpb24gc2luY2UpLFxuICAgICAgICAgICBzbyB3ZSBleHBsaWN0bHkgZmx1c2ggdGhlbSAqKVxuICAgICAgICBydW5fbWVtcHJvZl9jYWxsYmFja3MgKCk7XG4gICAgICAgIFN0ZGxpYi5HYy5NZW1wcm9mLnN0b3AgKCk7XG4gICAgICAgIHhcbiAgICAgIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgICAgcnVuX21lbXByb2ZfY2FsbGJhY2tzICgpO1xuICAgICAgICBTdGRsaWIuR2MuTWVtcHJvZi5zdG9wICgpO1xuICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICAoIHJlc3VsdFxuICAgICwgQWxsb2NhdGlvbl9yZXBvcnQuY3JlYXRlXG4gICAgICAgIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQ6IW1ham9yX2FsbG9jc1xuICAgICAgICB+bWlub3Jfd29yZHNfYWxsb2NhdGVkOiFtaW5vcl9hbGxvY3NcbiAgICAsIExpc3QucmV2ICFsb2cgKVxuICA7O1xuXG4gIFslJWVsc2VdXG5cbiAgbGV0IG1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIGYgPVxuICAgIGxldCB4LCByZXBvcnQgPSBtZWFzdXJlX2FsbG9jYXRpb24gZiBpblxuICAgIHgsIHJlcG9ydCwgW11cbiAgOztcblxuICBbJSVlbmRpZl1cbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBhZGRfZmluYWxpemVyIHggZiA9XG4gICAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZSAoZnVuIHggLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+IGYgeCkpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAoKiBUaGUgdHlwZSBvZiBhZGRfZmluYWxpemVyIGVuc3VyZXMgdGhhdCB0aGUgb25seSBwb3NzaWJsZSBmYWlsdXJlXG4gICAgICAgICBpcyBkdWUgdG8gW3hdIGJlaW5nIHN0YXRpYyBkYXRhLiBJbiB0aGlzIGNhc2UsIHdlIHNpbXBseSBkcm9wIHRoZVxuICAgICAgICAgZmluYWxpemVyIHNpbmNlIHN0YXRpYyBkYXRhIHdvdWxkIG5ldmVyIGhhdmUgYmVlbiBjb2xsZWN0ZWQgYnkgdGhlXG4gICAgICAgICBHQyBhbnl3YXkuICopXG4gICAgICAoKVxuICA7O1xuXG4gICgqIFthZGRfZmluYWxpemVyX2V4bl0gaXMgdGhlIHNhbWUgYXMgW2FkZF9maW5hbGl6ZXJdLiAgSG93ZXZlciwgdGhlaXIgdHlwZXMgaW5cbiAgICAgY29yZV9nYy5tbGkgYXJlIGRpZmZlcmVudCwgYW5kIHRoZSB0eXBlIG9mIFthZGRfZmluYWxpemVyXSBndWFyYW50ZWVzIHRoYXQgaXQgYWx3YXlzXG4gICAgIHJlY2VpdmVzIGEgaGVhcCBibG9jaywgd2hpY2ggZW5zdXJlcyB0aGF0IGl0IHdpbGwgbm90IHJhaXNlLCB3aGlsZVxuICAgICBbYWRkX2ZpbmFsaXplcl9leG5dIGFjY2VwdHMgYW55IHR5cGUsIGFuZCBzbyBtYXkgcmFpc2UuICopXG4gIGxldCBhZGRfZmluYWxpemVyX2V4biB4IGYgPVxuICAgIHRyeSBTdGRsaWIuR2MuZmluYWxpc2UgKGZ1biB4IC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPiBmIHgpKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgaWdub3JlIChIZWFwX2Jsb2NrLmNyZWF0ZSB4IDogXyBIZWFwX2Jsb2NrLnQgb3B0aW9uKTtcbiAgICAgICgqIElmIFtIZWFwX2Jsb2NrLmNyZWF0ZV0gc3VjY2VlZHMgdGhlbiBbeF0gaXMgc3RhdGljIGRhdGEgYW5kIHNvXG4gICAgICAgICB3ZSBjYW4gc2ltcGx5IGRyb3AgdGhlIGZpbmFsaXNlci4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGFkZF9maW5hbGl6ZXJfbGFzdCB4IGYgPVxuICAgIHRyeSBTdGRsaWIuR2MuZmluYWxpc2VfbGFzdCAoZnVuICgpIC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZikgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICgqIFRoZSB0eXBlIG9mIGFkZF9maW5hbGl6ZXJfbGFzdCBlbnN1cmVzIHRoYXQgdGhlIG9ubHkgcG9zc2libGUgZmFpbHVyZVxuICAgICAgICAgaXMgZHVlIHRvIFt4XSBiZWluZyBzdGF0aWMgZGF0YS4gSW4gdGhpcyBjYXNlLCB3ZSBzaW1wbHkgZHJvcCB0aGVcbiAgICAgICAgIGZpbmFsaXplciBzaW5jZSBzdGF0aWMgZGF0YSB3b3VsZCBuZXZlciBoYXZlIGJlZW4gY29sbGVjdGVkIGJ5IHRoZVxuICAgICAgICAgR0MgYW55d2F5LiAqKVxuICAgICAgKClcbiAgOztcblxuICBsZXQgYWRkX2ZpbmFsaXplcl9sYXN0X2V4biB4IGYgPVxuICAgIHRyeSBTdGRsaWIuR2MuZmluYWxpc2VfbGFzdCAoZnVuICgpIC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZikgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgIGlnbm9yZSAoSGVhcF9ibG9jay5jcmVhdGUgeCA6IF8gSGVhcF9ibG9jay50IG9wdGlvbik7XG4gICAgICAoKiBJZiBbSGVhcF9ibG9jay5jcmVhdGVdIHN1Y2NlZWRzIHRoZW4gW3hdIGlzIHN0YXRpYyBkYXRhIGFuZCBzb1xuICAgICAgICAgd2UgY2FuIHNpbXBseSBkcm9wIHRoZSBmaW5hbGlzZXIuICopXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBmaW5hbGl6ZV9yZWxlYXNlID0gU3RkbGliLkdjLmZpbmFsaXNlX3JlbGVhc2VcblxuICBtb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBhbGFybVxuXG4gICAgbGV0IHNleHBfb2ZfdCBfID0gXCI8Z2MgYWxhcm0+XCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgbGV0IGNyZWF0ZSBmID0gY3JlYXRlX2FsYXJtIChmdW4gKCkgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmKVxuICAgIGxldCBkZWxldGUgPSBkZWxldGVfYWxhcm1cbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2VyaWFsaXphYmxlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmcgKiBpbnQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUMCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBob3N0IDogU3RyaW5nLnRcbiAgICAgICAgOyBwb3J0IDogSW50LnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2tdXG5cbiAgICAgIGxldCB0b19zZXJpYWxpemFibGUgeyBob3N0OyBwb3J0IH0gPSBob3N0LCBwb3J0XG4gICAgICBsZXQgb2Zfc2VyaWFsaXphYmxlIChob3N0LCBwb3J0KSA9IHsgaG9zdDsgcG9ydCB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKFNlcmlhbGl6YWJsZSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFQwXG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU2VyaWFsaXphYmxlLnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgb2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgdG9fc2VyaWFsaXphYmxlXG4gICAgICA7O1xuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzdGFibGVcIiA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IFNlcmlhbGl6YWJsZS50XTtcbiAgICAgICAgWyVleHBlY3RcbiAgICAgICAgICB7fFxuICAgICAgICAgICAgICAgICAgOTU3OTkwZjBmYzQxNjFmYjg3NGU2Njg3MjU1MGZiNDBcbiAgICAgICAgICAgICAgICAgIDk1Nzk5MGYwZmM0MTYxZmI4NzRlNjY4NzI1NTBmYjQwIHx9XVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAoU2VyaWFsaXphYmxlKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIG9wZW4hIEltcG9ydFxuICAgICAgb3BlbiEgU3RkX2ludGVybmFsXG4gICAgICBvcGVuISBUMFxuXG4gICAgICBsZXQgdG9fc3RyaW5nIHsgaG9zdDsgcG9ydCB9ID0gc3ByaW50ZiBcIiVzOiVkXCIgaG9zdCBwb3J0XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonOicgd2l0aFxuICAgICAgICB8IFsgaG9zdDsgcG9ydCBdIC0+XG4gICAgICAgICAgbGV0IHBvcnQgPVxuICAgICAgICAgICAgdHJ5IEludC5vZl9zdHJpbmcgcG9ydCB3aXRoXG4gICAgICAgICAgICB8IF9leG4gLT4gZmFpbHdpdGhmIFwiSG9zdF9hbmRfcG9ydC5vZl9zdHJpbmc6IGJhZCBwb3J0OiAlc1wiIHMgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIHsgaG9zdDsgcG9ydCB9XG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZzogJXNcIiBzICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgICAgfCBTZXhwLkF0b20gcyBhcyBzZXhwIC0+XG4gICAgICAgICAgKHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICAgIHwgRmFpbHVyZSBlcnIgLT4gb2Zfc2V4cF9lcnJvciBlcnIgc2V4cClcbiAgICAgICAgfCBzZXhwIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5cbiAgICAgICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgICAgICBVbmlvblxuICAgICAgICAgICAgICAgIFsgKCogaGFuZGxlcyB0aGUgaG9zdDpwb3J0IHN0cmluZyBjYXNlICopXG4gICAgICAgICAgICAgICAgICBTdHJpbmdcbiAgICAgICAgICAgICAgICAgIDsgKCogaGFuZGxlcyB0aGUgbGlzdCAoaG9zdCBwb3J0KSBjYXNlICAqKVxuICAgICAgICAgICAgICAgICAgTGlzdCAoQ29ucyAoU3RyaW5nLCBDb25zIChJbnRlZ2VyLCBFbXB0eSkpKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUMVxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUMSlcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJ0X29mX3NleHBcIiA9XG4gICAgICBbJXRlc3RfcmVzdWx0OiB0XVxuICAgICAgICAodF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyB7fChsb2NhbGhvc3QgODA4MCl8fSkpXG4gICAgICAgIH5leHBlY3Q6eyBob3N0ID0gXCJsb2NhbGhvc3RcIjsgcG9ydCA9IDgwODAgfTtcbiAgICAgIFsldGVzdF9yZXN1bHQ6IHRdXG4gICAgICAgICh0X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIHt8bG9jYWxob3N0OjgwODB8fSkpXG4gICAgICAgIH5leHBlY3Q6eyBob3N0ID0gXCJsb2NhbGhvc3RcIjsgcG9ydCA9IDgwODAgfVxuICAgIDs7XG5cbiAgICBsZXQldGVzdF91bml0IFwic2V4cCByb3VuZHRyaXBcIiA9XG4gICAgICBRdWlja2NoZWNrLnRlc3QgWyVxdWlja2NoZWNrLmdlbmVyYXRvcjogdF0gfmY6KGZ1biB0IC0+XG4gICAgICAgIFsldGVzdF9yZXN1bHQ6IHRdICh0X29mX3NleHAgKHNleHBfb2ZfdCB0KSkgfmV4cGVjdDp0KVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5cbm1vZHVsZSBMYXRlc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGFibGUuVjFcbmVuZFxuXG5pbmNsdWRlIExhdGVzdFxuXG5sZXQgY3JlYXRlIH5ob3N0IH5wb3J0ID0geyBob3N0OyBwb3J0IH1cbmxldCBob3N0IHQgPSB0Lmhvc3RcbmxldCBwb3J0IHQgPSB0LnBvcnRcbmxldCB0dXBsZSB0ID0gdG9fc2VyaWFsaXphYmxlIHRcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuSG9zdF9hbmRfcG9ydFwiXG4gIGVuZClcblxuaW5jbHVkZSAoSGFzaGFibGUuTWFrZV9iaW5hYmxlIChMYXRlc3QpIDogSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKExhdGVzdClcblxubGV0IHR5cGVfaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpcIkhvc3RfYW5kX3BvcnRcIiBzZXhwX29mX3RcbiIsIm9wZW4gU3RhYmxlX21vZHVsZV90eXBlc1xubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlN0YWJsZVxubW9kdWxlIFNleHBhYmxlID0gU2V4cGFibGUuU3RhYmxlXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0ID0gc3RydWN0XG4gIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiB0IC0+IFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiBTdGFibGVfZm9ybWF0LnQgLT4gdFxuICAgICAgICAgIGVuZCkgOiBTMCB3aXRoIHR5cGUgdCA9IE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQyID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTVxuXG4gICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUMlxuICAgICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZS5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQyKVxuICAgICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFN0YWJsZV9mb3JtYXQpIChUMilcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVDFcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuVjEuTWFrZSAoVDEpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiB0IC0+IFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiBTdGFibGVfZm9ybWF0LnQgLT4gdFxuICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICBlbmQpIDogUzAgd2l0aCB0eXBlIHQgPSBNLnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUMiA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE1cblxuICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVDJcbiAgICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUuVjEgKFN0YWJsZV9mb3JtYXQpIChUMilcbiAgICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlLlYyIChTdGFibGVfZm9ybWF0KSAoVDIpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFQxXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlYxLk1ha2UgKFQxKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDEgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAnYSB0IC0+ICdhIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAnYSBTdGFibGVfZm9ybWF0LnQgLT4gJ2EgdFxuICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA9ICdhIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUxLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTEuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcblxuICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICdhIHQgLT4gJ2EgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICdhIFN0YWJsZV9mb3JtYXQudCAtPiAnYSB0XG4gICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA9ICdhIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUxLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTEuVjIgKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcCA6ICgnYTEsICdhMikgdCAtPiBmMTooJ2ExIC0+ICdiMSkgLT4gZjI6KCdhMiAtPiAnYjIpIC0+ICgnYjEsICdiMikgdFxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIHQgLT4gKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyKSB0XG4gICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2ExLCAnYTIpIHQgPSAoJ2ExLCAnYTIpIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUyLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTIuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcblxuICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgdCAtPiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIpIHRcbiAgICAgICAgICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fc2hhcGUuVXVpZC50XG4gICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2ExLCAnYTIpIHQgPSAoJ2ExLCAnYTIpIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUyLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTIuVjIgKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDMgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXBcbiAgICAgICAgICAgICAgOiAgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICAgICAgLT4gZjE6KCdhMSAtPiAnYjEpXG4gICAgICAgICAgICAgIC0+IGYyOignYTIgLT4gJ2IyKVxuICAgICAgICAgICAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAgICAgICAgICAgLT4gKCdiMSwgJ2IyLCAnYjMpIHRcblxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgdCAtPiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYTEsICdhMiwgJ2EzKSB0ID0gKCdhMSwgJ2EyLCAnYTMpIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUzLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTMuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcblxuICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcFxuICAgICAgICAgICAgICA6ICAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAgICAgICAgICAgLT4gZjI6KCdhMiAtPiAnYjIpXG4gICAgICAgICAgICAgIC0+IGYzOignYTMgLT4gJ2IzKVxuICAgICAgICAgICAgICAtPiAoJ2IxLCAnYjIsICdiMykgdFxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSB0IC0+ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYTEsICdhMiwgJ2EzKSB0ID0gKCdhMSwgJ2EyLCAnYTMpIE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUzLlYxIChTdGFibGVfZm9ybWF0KSAoVClcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZTMuVjIgKFN0YWJsZV9mb3JtYXQpIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgV2l0aF9zdGFibGVfd2l0bmVzcyA9IHN0cnVjdFxuICBtb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdCA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiB0IC0+IFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6IFN0YWJsZV9mb3JtYXQudCAtPiB0XG4gICAgICAgICAgICBlbmQpIDogV2l0aF9zdGFibGVfd2l0bmVzcy5TMCB3aXRoIHR5cGUgdCA9IE0udCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0LlYxIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiB0IC0+IFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6IFN0YWJsZV9mb3JtYXQudCAtPiB0XG4gICAgICAgICAgICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fc2hhcGUuVXVpZC50XG4gICAgICAgICAgICBlbmQpIDogV2l0aF9zdGFibGVfd2l0bmVzcy5TMCB3aXRoIHR5cGUgdCA9IE0udCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0LlYyIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQxID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICdhIHQgLT4gJ2EgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogJ2EgU3RhYmxlX2Zvcm1hdC50IC0+ICdhIHRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMxIHdpdGggdHlwZSAnYSB0ID0gJ2EgTS50ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQxLlYxIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzICh0eXBlIGEpIDogYSBTdGFibGVfd2l0bmVzcy50IC0+IGEgTS50IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgICBmdW4gd2l0bmVzcyAtPlxuICAgICAgICBsZXQgbW9kdWxlIFN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuT2Zfc2VyaWFsaXphYmxlMSAoU3RhYmxlX2Zvcm1hdCkgKE0pIGluXG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICB3aXRuZXNzXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICdhIHQgLT4gJ2EgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogJ2EgU3RhYmxlX2Zvcm1hdC50IC0+ICdhIHRcbiAgICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMxIHdpdGggdHlwZSAnYSB0ID0gJ2EgTS50ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQxLlYyIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzICh0eXBlIGEpIDogYSBTdGFibGVfd2l0bmVzcy50IC0+IGEgTS50IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgICBmdW4gd2l0bmVzcyAtPlxuICAgICAgICBsZXQgbW9kdWxlIFN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuT2Zfc2VyaWFsaXphYmxlMSAoU3RhYmxlX2Zvcm1hdCkgKE0pIGluXG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICB3aXRuZXNzXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSB0IC0+ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyKSB0XG4gICAgICAgICAgICBlbmQpIDogV2l0aF9zdGFibGVfd2l0bmVzcy5TMiB3aXRoIHR5cGUgKCdhMSwgJ2EyKSB0ID0gKCdhMSwgJ2EyKSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdDIuVjEgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3Mgd2l0bmVzcyA9XG4gICAgICAgIGxldCBtb2R1bGUgU3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5PZl9zZXJpYWxpemFibGUyIChTdGFibGVfZm9ybWF0KSAoTSkgaW5cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIHdpdG5lc3NcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSB0IC0+ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyKSB0XG4gICAgICAgICAgICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fc2hhcGUuVXVpZC50XG4gICAgICAgICAgICBlbmQpIDogV2l0aF9zdGFibGVfd2l0bmVzcy5TMiB3aXRoIHR5cGUgKCdhMSwgJ2EyKSB0ID0gKCdhMSwgJ2EyKSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdDIuVjIgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3Mgd2l0bmVzcyA9XG4gICAgICAgIGxldCBtb2R1bGUgU3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5PZl9zZXJpYWxpemFibGUyIChTdGFibGVfZm9ybWF0KSAoTSkgaW5cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIHdpdG5lc3NcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwXG4gICAgICAgICAgICAgICAgOiAgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICAgICAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAgICAgICAgICAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAgICAgICAgICAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAgICAgICAgICAgICAtPiAoJ2IxLCAnYjIsICdiMykgdFxuXG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIHQgLT4gKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMzIHdpdGggdHlwZSAoJ2ExLCAnYTIsICdhMykgdCA9ICgnYTEsICdhMiwgJ2EzKSBNLnQgPVxuICAgIHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0My5WMSAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyB3aXRuZXNzID1cbiAgICAgICAgbGV0IG1vZHVsZSBTdGFibGVfd2l0bmVzcyA9IFN0YWJsZV93aXRuZXNzLk9mX3NlcmlhbGl6YWJsZTMgKFN0YWJsZV9mb3JtYXQpIChNKSBpblxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICAgICAgd2l0bmVzc1xuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgbWFwXG4gICAgICAgICAgICAgICAgOiAgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICAgICAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAgICAgICAgICAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAgICAgICAgICAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAgICAgICAgICAgICAtPiAoJ2IxLCAnYjIsICdiMykgdFxuXG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIHQgLT4gKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMzIHdpdGggdHlwZSAoJ2ExLCAnYTIsICdhMykgdCA9ICgnYTEsICdhMiwgJ2EzKSBNLnQgPVxuICAgIHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0My5WMiAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyB3aXRuZXNzID1cbiAgICAgICAgbGV0IG1vZHVsZSBTdGFibGVfd2l0bmVzcyA9IFN0YWJsZV93aXRuZXNzLk9mX3NlcmlhbGl6YWJsZTMgKFN0YWJsZV9mb3JtYXQpIChNKSBpblxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICAgICAgd2l0bmVzc1xuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFdpdGhvdXRfY29udGFpbmVycyA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IEludC5TdGFibGUuVjEudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgZXhjZXB0aW9uIFBpZF9tdXN0X2JlX3Bvc2l0aXZlIG9mIEludC5TdGFibGUuVjEudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICBsZXQgZW5zdXJlIGkgPSBpZiBpIDw9IDAgdGhlbiByYWlzZSAoUGlkX211c3RfYmVfcG9zaXRpdmUgaSkgZWxzZSBpXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgKEludC5TdGFibGUuVjEpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID0gSW50LlN0YWJsZS5WMS50XG5cbiAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBlbnN1cmVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChJbnQuU3RhYmxlLlYxKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9IEludC5TdGFibGUuVjEudFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IGVuc3VyZVxuICAgICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IuU3RhYmxlLlYxLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChXaXRob3V0X2NvbnRhaW5lcnMpXG4gICAgaW5jbHVkZSBXaXRob3V0X2NvbnRhaW5lcnNcbiAgZW5kXG5cbiAgbW9kdWxlIExhdGVzdCA9IFYxXG5lbmRcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFN0YWJsZS5MYXRlc3QuV2l0aG91dF9jb250YWluZXJzXG5cbnR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBoYXNoXVxuXG5sZXQgb2ZfaW50IGkgPSBlbnN1cmUgaVxubGV0IHRvX2ludCA9IEZuLmlkXG5sZXQgb2Zfc3RyaW5nIHN0cmluZyA9IGVuc3VyZSAoSW50Lm9mX3N0cmluZyBzdHJpbmcpXG5sZXQgdG9fc3RyaW5nID0gSW50LnRvX3N0cmluZ1xubGV0IGluaXQgPSBvZl9pbnQgMVxuXG5pbmNsdWRlXG4gIFF1aWNrY2hlY2thYmxlLk9mX3F1aWNrY2hlY2thYmxlX2ZpbHRlcmVkXG4gICAgKEludClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgb2ZfcXVpY2tjaGVja2FibGUgbiA9IE9wdGlvbi5zb21lX2lmIChuID4gMCkgblxuICAgICAgbGV0IHRvX3F1aWNrY2hlY2thYmxlID0gdG9faW50XG4gICAgZW5kKVxuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlBpZFwiXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlF1ZXVlXG5cbmluY2x1ZGUgVGVzdF9iaW5hcnlfc2VhcmNoYWJsZS5NYWtlMV9hbmRfdGVzdCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBnZXQgPSBnZXRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9hcnJheSBhID1cbiAgICAgICAgbGV0IHIgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgKCogV2UgZW5xdWV1ZSBldmVyeXRoaW5nIHR3aWNlLCBhbmQgZGVxdWV1ZSBpdCBvbmNlIHRvIGVuc3VyZTpcbiAgICAgICAgICAgLSB0aGF0IHRoZSBxdWV1ZSBoYXMgdGhlIHNhbWUgY29udGVudCBhcyB0aGUgYXJyYXkuXG4gICAgICAgICAgIC0gdGhhdCBpdCBoYXMsIGluIG1vc3QgY2FzZXMsIGFuIGludGVyZXN0aW5nIGludGVybmFsIHN0cnVjdHVyZSopXG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICBlbnF1ZXVlIHIgYS4oaSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICAgIGlnbm9yZSAoZGVxdWV1ZV9leG4gciA6IGJvb2wpO1xuICAgICAgICAgIGVucXVldWUgciBhLihpKVxuICAgICAgICBkb25lO1xuICAgICAgICByXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmQpXG5cbm1vZHVsZSBTZXJpYWxpemF0aW9uX3YxID0gc3RydWN0XG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYjRjODQyNTQtNDk5Mi0xMWU2LTliYTctNzM0ZTE1NDAyN2JkXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLlF1ZXVlXCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyID0gaXRlclxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9IGluaXQgbGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKVxuICAgIGVuZClcblxuICBsZXQgc3RhYmxlX3dpdG5lc3MgKF8gOiAnYSBTdGFibGVfd2l0bmVzcy50KSA6ICdhIHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgKCogU2VyaWFsaXphdGlvbl92MSBkZWZpbmVzIGEgc3RhYmxlIHNlcmlhbGl6YXRpb24gKilcbiAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBTZXJpYWxpemF0aW9uX3YxXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgU2VyaWFsaXphdGlvbl92MVxuXG4gICAgKCogV2UgZG9uJ3QgaGF2ZSBhIFslYmluX2RpZ2VzdF0gZXhwZWN0IHRlc3QgaGVyZSBiZWNhdXNlIHRoZSBiaW5faW8gaXMgbW9zdGx5IGhhbmRcbiAgICAgICB3cml0dGVuLCBhbmQgW2NvcmVfcXVldWVfdW5pdF90ZXN0cy5tbF0gaGFzIHVuaXQgdGVzdHMgZm9yIHNwZWNpZmljIHZhbHVlcy4gKilcblxuICAgIGxldCBtYXAgPSBtYXBcbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSBVbml0X3Rlc3QgPSBTdGFibGVfdW5pdF90ZXN0Lk1ha2VcblxuXG5tb2R1bGUgdHlwZSBTdGFibGUgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwXG5tb2R1bGUgdHlwZSBTdGFibGVfd2l0aG91dF9jb21wYXJhdG9yID0gU3RhYmxlX21vZHVsZV90eXBlcy5TMF93aXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSB0eXBlIFN0YWJsZTEgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMxXG5tb2R1bGUgdHlwZSBTdGFibGUyID0gU3RhYmxlX21vZHVsZV90eXBlcy5TMlxubW9kdWxlIHR5cGUgU3RhYmxlMyA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzNcbm1vZHVsZSB0eXBlIFN0YWJsZTQgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlM0XG5tb2R1bGUgdHlwZSBTdGFibGVfd2l0aF93aXRuZXNzID0gU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwXG5tb2R1bGUgdHlwZSBTdGFibGVfaW50NjNhYmxlX3dpdGhfd2l0bmVzcyA9IFN0YWJsZV9pbnQ2M2FibGUuV2l0aF9zdGFibGVfd2l0bmVzcy5TXG5cbm1vZHVsZSB0eXBlIFN0YWJsZV93aXRob3V0X2NvbXBhcmF0b3Jfd2l0aF93aXRuZXNzID1cbiAgU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwX3dpdGhvdXRfY29tcGFyYXRvclxuXG5tb2R1bGUgdHlwZSBTdGFibGUxX3dpdGhfd2l0bmVzcyA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMVxubW9kdWxlIHR5cGUgU3RhYmxlMl93aXRoX3dpdG5lc3MgPSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzJcbm1vZHVsZSB0eXBlIFN0YWJsZTNfd2l0aF93aXRuZXNzID0gU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMzXG5tb2R1bGUgdHlwZSBTdGFibGU0X3dpdGhfd2l0bmVzcyA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TNFxuXG5tb2R1bGUgTWFrZV9zdGFibGUgPSBNYWtlX3N0YWJsZVxuaW5jbHVkZSBTdGFibGVfaW50ZXJuYWxcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlLlN0YWJsZVxubW9kdWxlIEJpZ3N0cmluZyA9IEJpZ3N0cmluZy5TdGFibGVcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZS5TdGFibGVcbm1vZHVsZSBCbGFuZyA9IEJsYW5nLlN0YWJsZVxubW9kdWxlIEJvb2wgPSBCb29sLlN0YWJsZVxubW9kdWxlIEJ5dGVfdW5pdHMgPSBCeXRlX3VuaXRzLlN0YWJsZVxubW9kdWxlIEJ5dGVzID0gQnl0ZXMuU3RhYmxlXG5tb2R1bGUgQ29tcGFyYWJsZSA9IENvbXBhcmFibGUuU3RhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3IuU3RhYmxlXG5tb2R1bGUgRGF0ZSA9IERhdGUuU3RhYmxlXG5tb2R1bGUgRGF5X29mX3dlZWsgPSBEYXlfb2Zfd2Vlay5TdGFibGVcbm1vZHVsZSBNZDUgPSBNZDUuU3RhYmxlXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyLlN0YWJsZVxubW9kdWxlIEVycm9yID0gRXJyb3IuU3RhYmxlXG5tb2R1bGUgRmRlcXVlID0gRmRlcXVlLlN0YWJsZVxubW9kdWxlIEZpbGVuYW1lID0gRmlsZW5hbWUuU3RhYmxlXG5tb2R1bGUgRmxvYXQgPSBGbG9hdC5TdGFibGVcbm1vZHVsZSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24gPSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24uU3RhYmxlXG5tb2R1bGUgRnF1ZXVlID0gRnF1ZXVlLlN0YWJsZVxubW9kdWxlIEdjID0gR2MuU3RhYmxlXG5tb2R1bGUgSG9zdF9hbmRfcG9ydCA9IEhvc3RfYW5kX3BvcnQuU3RhYmxlXG5tb2R1bGUgSW5mbyA9IEluZm8uU3RhYmxlXG5tb2R1bGUgSW50ID0gSW50LlN0YWJsZVxubW9kdWxlIEludDYzID0gSW50NjMuU3RhYmxlXG5tb2R1bGUgTGF6eSA9IExhenkuU3RhYmxlXG5tb2R1bGUgTGlzdCA9IExpc3QuU3RhYmxlXG5tb2R1bGUgTWFwID0gTWFwLlN0YWJsZVxubW9kdWxlIE1heWJlX2JvdW5kID0gTWF5YmVfYm91bmQuU3RhYmxlXG5tb2R1bGUgTW9udGggPSBNb250aC5TdGFibGVcbm1vZHVsZSBOb3RoaW5nID0gTm90aGluZy5TdGFibGVcbm1vZHVsZSBPcHRpb24gPSBPcHRpb24uU3RhYmxlXG5tb2R1bGUgT3JfZXJyb3IgPSBPcl9lcnJvci5TdGFibGVcbm1vZHVsZSBQZXJjZW50ID0gUGVyY2VudC5TdGFibGVcbm1vZHVsZSBQZXJtcyA9IFBlcm1zLlN0YWJsZVxubW9kdWxlIFBpZCA9IFBpZC5TdGFibGVcbm1vZHVsZSBRdWV1ZSA9IFF1ZXVlLlN0YWJsZVxubW9kdWxlIFJlc3VsdCA9IFJlc3VsdC5TdGFibGVcbm1vZHVsZSBTZXQgPSBTZXQuU3RhYmxlXG5tb2R1bGUgU2V4cCA9IFNleHAuU3RhYmxlXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZS5TdGFibGVcbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLlN0YWJsZVxubW9kdWxlIFN0cmluZyA9IFN0cmluZy5TdGFibGVcbm1vZHVsZSBTdHJpbmdfaWQgPSBTdHJpbmdfaWQuU3RhYmxlXG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnMuU3RhYmxlXG5cbm1vZHVsZSBUaW1lID0gVGltZV9mbG9hdC5TdGFibGVcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0xMV0gVXNlIFtUaW1lX2Zsb2F0XSBvciBbVGltZV9mbG9hdF91bml4XSBpbnN0ZWFkXCJdXG5cbm1vZHVsZSBUaW1lX2Zsb2F0ID0gVGltZV9mbG9hdC5TdGFibGVcbm1vZHVsZSBVbml0ID0gVW5pdC5TdGFibGVcbm1vZHVsZSBVbml4ID0gc3RydWN0IGVuZCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDJdIFVzZSBbQ29yZV91bml4LlN0YWJsZV1cIl1cbmluY2x1ZGUgUGVybXMuRXhwb3J0XG5cbmluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbmluY2x1ZGUgQmFzZS5FeHBvcnRlZF9mb3Jfc3BlY2lmaWNfdXNlcy5HbG9iYWxpemVcbmluY2x1ZGUgSW1wb3J0Lk5vdF9mb3VuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuICBJbnQgOlxuICBzaWdcbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcblxubGV0IG9mX2NhbWxfaW50IHQgPSB0XG5sZXQgdG9fY2FtbF9pbnQgdCA9IHRcblxudHlwZSBzeXNfYmVoYXZpb3IgPVxuICBbIGBDb250aW51ZSAoKiogQ29udGludWUgdGhlIHByb2Nlc3MgaWYgaXQgaXMgY3VycmVudGx5IHN0b3BwZWQgKilcbiAgfCBgRHVtcF9jb3JlICgqKiBUZXJtaW5hdGUgdGhlIHByb2Nlc3MgYW5kIGR1bXAgY29yZSAqKVxuICB8IGBJZ25vcmUgKCoqIElnbm9yZSB0aGUgc2lnbmFsICopXG4gIHwgYFN0b3AgKCoqIFN0b3AgdGhlIHByb2Nlc3MgKilcbiAgfCBgVGVybWluYXRlICgqKiBUZXJtaW5hdGUgdGhlIHByb2Nlc3MgKilcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGVxdWFsICh0IDogdCkgdCcgPSB0ID0gdCdcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgKCogUGxlYXNlIGtlZXAgaW4gc3luYyB3aXRoIHRoZSBsaXN0IGZvciB0b19zdHJpbmcvc3lzX2JlaGF2aW9yICopXG4gIG9wZW4gU3RkbGliLlN5c1xuXG4gIGxldCBhYnJ0ID0gc2lnYWJydFxuICBsZXQgYWxybSA9IHNpZ2Fscm1cbiAgbGV0IGJ1cyA9IHNpZ2J1c1xuICBsZXQgY2hsZCA9IHNpZ2NobGRcbiAgbGV0IGNvbnQgPSBzaWdjb250XG4gIGxldCBmcGUgPSBzaWdmcGVcbiAgbGV0IGh1cCA9IHNpZ2h1cFxuICBsZXQgaWxsID0gc2lnaWxsXG4gIGxldCBpbnQgPSBzaWdpbnRcbiAgbGV0IGtpbGwgPSBzaWdraWxsXG4gIGxldCBwaXBlID0gc2lncGlwZVxuICBsZXQgcG9sbCA9IHNpZ3BvbGxcbiAgbGV0IHByb2YgPSBzaWdwcm9mXG4gIGxldCBxdWl0ID0gc2lncXVpdFxuICBsZXQgc2VndiA9IHNpZ3NlZ3ZcbiAgbGV0IHN0b3AgPSBzaWdzdG9wXG4gIGxldCBzeXMgPSBzaWdzeXNcbiAgbGV0IHRlcm0gPSBzaWd0ZXJtXG4gIGxldCB0cmFwID0gc2lndHJhcFxuICBsZXQgdHN0cCA9IHNpZ3RzdHBcbiAgbGV0IHR0aW4gPSBzaWd0dGluXG4gIGxldCB0dG91ID0gc2lndHRvdVxuICBsZXQgdXJnID0gc2lndXJnXG4gIGxldCB1c3IxID0gc2lndXNyMVxuICBsZXQgdXNyMiA9IHNpZ3VzcjJcbiAgbGV0IHZ0YWxybSA9IHNpZ3Z0YWxybVxuICBsZXQgeGNwdSA9IHNpZ3hjcHVcbiAgbGV0IHhmc3ogPSBzaWd4ZnN6XG4gIGxldCB6ZXJvID0gMFxuZW5kXG5cbmV4Y2VwdGlvbiBJbnZhbGlkX3NpZ25hbF9tbmVtb25pY19vcl9udW1iZXIgb2Ygc3RyaW5nIFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCB0b19zdHJpbmdfd2l0aF92ZXJzaW9uLCBvZl9zdHJpbmcsIGRlZmF1bHRfc3lzX2JlaGF2aW9yID1cbiAgbGV0IGtub3duID1cbiAgICBbXG4gICAgICBcInNpZ2FicnRcIiwgYWJydCwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdhbHJtXCIsIGFscm0sIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lnYnVzXCIsIGJ1cywgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWdjaGxkXCIsIGNobGQsIGBJZ25vcmUsIDFcbiAgICA7IFwic2lnY29udFwiLCBjb250LCBgQ29udGludWUsIDFcbiAgICA7IFwic2lnZnBlXCIsIGZwZSwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdodXBcIiwgaHVwLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ2lsbFwiLCBpbGwsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnaW50XCIsIGludCwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdraWxsXCIsIGtpbGwsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lncGlwZVwiLCBwaXBlLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3BvbGxcIiwgcG9sbCwgYFRlcm1pbmF0ZSwgMlxuICAgIDsgXCJzaWdwcm9mXCIsIHByb2YsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lncXVpdFwiLCBxdWl0LCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ3NlZ3ZcIiwgc2VndiwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdzdG9wXCIsIHN0b3AsIGBTdG9wLCAxXG4gICAgOyBcInNpZ3N5c1wiLCBzeXMsIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lndGVybVwiLCB0ZXJtLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3RyYXBcIiwgdHJhcCwgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd0c3RwXCIsIHRzdHAsIGBTdG9wLCAxXG4gICAgOyBcInNpZ3R0aW5cIiwgdHRpbiwgYFN0b3AsIDFcbiAgICA7IFwic2lndHRvdVwiLCB0dG91LCBgU3RvcCwgMVxuICAgIDsgXCJzaWd1cmdcIiwgdXJnLCBgSWdub3JlLCAyXG4gICAgOyBcInNpZ3VzcjFcIiwgdXNyMSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd1c3IyXCIsIHVzcjIsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lndnRhbHJtXCIsIHZ0YWxybSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd4Y3B1XCIsIHhjcHUsIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lneGZzelwiLCB4ZnN6LCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3plcm9cIiwgemVybywgYElnbm9yZSwgMVxuICAgIF1cbiAgaW5cbiAgbGV0IG5hbWVfYW5kX3ZlcnNpb25fYnlfdCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKSBpblxuICBsZXQgdF9ieV9uYW1lID0gU3RyaW5nLlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpIGluXG4gIGxldCBiZWhhdmlvcl9ieV90ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpIGluXG4gIExpc3QuaXRlciBrbm93biB+ZjooZnVuIChuYW1lLCB0LCBiZWhhdmlvciwgc3RhYmxlX3ZlcnNpb24pIC0+XG4gICAgSGFzaHRibC5zZXQgbmFtZV9hbmRfdmVyc2lvbl9ieV90IH5rZXk6dCB+ZGF0YToobmFtZSwgc3RhYmxlX3ZlcnNpb24pO1xuICAgIEhhc2h0Ymwuc2V0IHRfYnlfbmFtZSB+a2V5Om5hbWUgfmRhdGE6dDtcbiAgICBIYXNodGJsLnNldCBiZWhhdmlvcl9ieV90IH5rZXk6dCB+ZGF0YTpiZWhhdmlvcik7XG4gICgqIEZvciB1bmtub3duIHNpZ25hbCBudW1iZXJzLCBbdG9fc3RyaW5nXSByZXR1cm5zIGEgbWVhbmluZ2Z1bFxuICAgICBzdHJpbmcsIHdoaWxlIFtkZWZhdWx0X3N5c19iZWhhdmlvcl0gaGFzIHRvIHJhaXNlIGFuIGV4Y2VwdGlvblxuICAgICBiZWNhdXNlIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgcmlnaHQgYW5zd2VyIGlzLiAqKVxuICBsZXQgdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uOnJlcXVlc3RlZF92ZXJzaW9uID1cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgbmFtZV9hbmRfdmVyc2lvbl9ieV90IHQgd2l0aFxuICAgIHwgU29tZSAoc3RyaW5nLCBuZWVkZWRfdmVyc2lvbikgd2hlbiByZXF1ZXN0ZWRfdmVyc2lvbiA+PSBuZWVkZWRfdmVyc2lvbiAtPiBzdHJpbmdcbiAgICB8IF8gLT4gXCI8dW5rbm93biBzaWduYWwgXCIgXiBJbnQudG9fc3RyaW5nIHQgXiBcIj5cIlxuICBpblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIGxldCBzID0gU3RyaW5nLmxvd2VyY2FzZSAoU3RyaW5nLnN0cmlwIHMpIGluXG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIHRfYnlfbmFtZSBzIHdpdGhcbiAgICB8IFNvbWUgc24gLT4gc25cbiAgICB8IE5vbmUgLT5cbiAgICAgIGlmIFN0cmluZy5pc19wcmVmaXggcyB+cHJlZml4OlwiPHVua25vd24gc2lnbmFsIFwiXG4gICAgICB0aGVuIChcbiAgICAgICAgdHJ5IEludC5vZl9zdHJpbmcgKFN0cmluZy5zbGljZSBzIDE2IH4tMSkgd2l0aFxuICAgICAgICB8IF8gLT4gcmFpc2UgKEludmFsaWRfc2lnbmFsX21uZW1vbmljX29yX251bWJlciBzKSlcbiAgICAgIGVsc2UgcmFpc2UgKEludmFsaWRfc2lnbmFsX21uZW1vbmljX29yX251bWJlciBzKVxuICBpblxuICBsZXQgZGVmYXVsdF9zeXNfYmVoYXZpb3IgdCA9XG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIGJlaGF2aW9yX2J5X3QgdCB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoSW52YWxpZF9hcmd1bWVudFxuICAgICAgICAgICAoXCJTaWduYWwuZGVmYXVsdF9zeXNfYmVoYXZpb3I6IHVua25vd24gc2lnbmFsIFwiIF4gSW50LnRvX3N0cmluZyB0KSlcbiAgICB8IFNvbWUgYmVoYXZpb3IgLT4gYmVoYXZpb3JcbiAgaW5cbiAgdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiwgb2Zfc3RyaW5nLCBkZWZhdWx0X3N5c19iZWhhdmlvclxuOztcblxuZXhjZXB0aW9uIEV4cGVjdGVkX2F0b20gb2YgU2V4cC50IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCBzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb24gPSBTZXhwLkF0b20gKHRvX3N0cmluZ193aXRoX3ZlcnNpb24gdCB+dmVyc2lvbilcbmxldCB0b19zdHJpbmcgcyA9IHRvX3N0cmluZ193aXRoX3ZlcnNpb24gcyB+dmVyc2lvbjoyXG5sZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246MlxuXG5sZXQgdF9vZl9zZXhwIHMgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXhwLkF0b20gcyAtPiBvZl9zdHJpbmcgc1xuICB8IF8gLT4gcmFpc2UgKEV4cGVjdGVkX2F0b20gcylcbjs7XG5cbnR5cGUgcGlkX3NwZWMgPSBbIGBVc2VfU2lnbmFsX3VuaXggXVxudHlwZSBzaWdwcm9jbWFza19jb21tYW5kID0gWyBgVXNlX1NpZ25hbF91bml4IF1cblxubGV0IGNhbl9zZW5kX3RvID0gYFVzZV9TaWduYWxfdW5peFxubGV0IG9mX3N5c3RlbV9pbnQgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2VuZCA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZW5kX2V4biA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZW5kX2kgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2V4cF9vZl9waWRfc3BlYyA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzaWdwZW5kaW5nID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNpZ3Byb2NtYXNrID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNpZ3N1c3BlbmQgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgdG9fc3lzdGVtX2ludCA9IGBVc2VfU2lnbmFsX3VuaXhcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICB0eXBlIGJlaGF2aW9yID1cbiAgICBbIGBEZWZhdWx0XG4gICAgfCBgSWdub3JlXG4gICAgfCBgSGFuZGxlIG9mIHQgLT4gdW5pdFxuICAgIF1cblxuICBtb2R1bGUgQmVoYXZpb3IgPSBzdHJ1Y3RcbiAgICBsZXQgb2ZfY2FtbCA9IGZ1bmN0aW9uXG4gICAgICB8IFN0ZGxpYi5TeXMuU2lnbmFsX2RlZmF1bHQgLT4gYERlZmF1bHRcbiAgICAgIHwgU2lnbmFsX2lnbm9yZSAtPiBgSWdub3JlXG4gICAgICB8IFNpZ25hbF9oYW5kbGUgZiAtPiBgSGFuZGxlIGZcbiAgICA7O1xuXG4gICAgbGV0IHRvX2NhbWwgPSBmdW5jdGlvblxuICAgICAgfCBgRGVmYXVsdCAtPiBTdGRsaWIuU3lzLlNpZ25hbF9kZWZhdWx0XG4gICAgICB8IGBJZ25vcmUgLT4gU2lnbmFsX2lnbm9yZVxuICAgICAgfCBgSGFuZGxlIGYgLT4gU2lnbmFsX2hhbmRsZSAoZnVuIHQgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+IGYgdCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNpZ25hbCB0IGJlaGF2aW9yID1cbiAgICBCZWhhdmlvci5vZl9jYW1sIChTdGRsaWIuU3lzLnNpZ25hbCB0IChCZWhhdmlvci50b19jYW1sIGJlaGF2aW9yKSlcbiAgOztcblxuICBsZXQgc2V0IHQgYmVoYXZpb3IgPSBpZ25vcmUgKHNpZ25hbCB0IGJlaGF2aW9yIDogYmVoYXZpb3IpXG4gIGxldCBoYW5kbGUgdCBmID0gc2V0IHQgKGBIYW5kbGUgZilcbmVuZFxuXG5vcGVuIEV4cGVydFxuXG5sZXQgaGFuZGxlX2RlZmF1bHQgdCA9IHNldCB0IGBEZWZhdWx0XG5sZXQgaWdub3JlIHQgPSBzZXQgdCBgSWdub3JlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjoyXG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZV1cblxuICAgIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246MVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU2lnbl9vcl9uYW4gPSBCYXNlLlNpZ25fb3JfbmFuXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2lnbl9vcl9uYW4udCA9XG4gICAgICB8IE5lZ1xuICAgICAgfCBaZXJvXG4gICAgICB8IFBvc1xuICAgICAgfCBOYW5cbiAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXAsIGVudW1lcmF0ZV1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgU2lnbl9vcl9uYW5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZCAoU2lnbl9vcl9uYW4pIChTdGFibGUuVjEpXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX2ludGVybmFsXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHZhbHVlIDogJ2EgT3B0aW9uLnRcbiAgICAgIDsgbXV0YWJsZSBzZXRfYXQgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi5TdGFibGUuVjEudFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtAY29tcGFyZS5pZ25vcmVdIFtAZXF1YWwuaWdub3JlXVxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBmaWVsZHNdXG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBGb3JtYXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgICBsZXQgb2ZfZm9ybWF0ICh2MSA6ICdhIEZvcm1hdC50KSA6ICdhIHQgPSB7IHZhbHVlID0gIXYxOyBzZXRfYXQgPSBbJWhlcmVdIH1cbiAgICAgIGxldCB0b19mb3JtYXQgKHQgOiAnYSB0KSA6ICdhIEZvcm1hdC50ID0gcmVmIHQudmFsdWVcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEZvcm1hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9mb3JtYXRcbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2Zvcm1hdFxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlXG4gICAgICBTZXhwYWJsZS5PZl9zZXhwYWJsZTFcbiAgICAgICAgKEZvcm1hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2ZfZm9ybWF0XG4gICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fZm9ybWF0XG4gICAgICAgIGVuZClcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgVW5zdGFibGUgPSBTdGFibGUuVjFcbm9wZW4gU3RhYmxlLlRcblxudHlwZSAnYSB0ID0gJ2EgU3RhYmxlLlQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbF1cblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgeyB2YWx1ZTsgc2V0X2F0IH0gPVxuICBtYXRjaCB2YWx1ZSB3aXRoXG4gIHwgTm9uZSAtPiBbJW1lc3NhZ2UgXCJ1bnNldFwiXVxuICB8IFNvbWUgdmFsdWUgLT5cbiAgICBbJW1lc3NhZ2UgXCJcIiAodmFsdWUgOiBhKSB+c2V0X2F0OihzZXRfYXQgfD4gU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nKV1cbjs7XG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIG1hdGNoIHQudmFsdWUgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGEgLT4gaW52YXJpYW50X2EgYVxuOztcblxubGV0IGNyZWF0ZSAoKSA9IHsgdmFsdWUgPSBOb25lOyBzZXRfYXQgPSBbJWhlcmVdIH1cblxubGV0IHNldF9pbnRlcm5hbCB0IGhlcmUgdmFsdWUgPVxuICB0LnZhbHVlIDwtIFNvbWUgdmFsdWU7XG4gIHQuc2V0X2F0IDwtIGhlcmVcbjs7XG5cbmxldCBzZXRfaWZfbm9uZSB0IGhlcmUgdmFsdWUgPSBpZiBPcHRpb24uaXNfbm9uZSB0LnZhbHVlIHRoZW4gc2V0X2ludGVybmFsIHQgaGVyZSB2YWx1ZVxuXG5sZXQgc2V0IHQgaGVyZSB2YWx1ZSA9XG4gIGlmIE9wdGlvbi5pc19ub25lIHQudmFsdWVcbiAgdGhlbiAoXG4gICAgc2V0X2ludGVybmFsIHQgaGVyZSB2YWx1ZTtcbiAgICBPayAoKSlcbiAgZWxzZVxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltTZXRfb25jZS5zZXRfZXhuXSBhbHJlYWR5IHNldFwiXG4gICAgICAgICAgfnNldHRpbmdfYXQ6KGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KVxuICAgICAgICAgIH5wcmV2aW91c2x5X3NldF9hdDoodC5zZXRfYXQgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV1cbjs7XG5cbmxldCBzZXRfZXhuIHQgaGVyZSB2YWx1ZSA9IE9yX2Vycm9yLm9rX2V4biAoc2V0IHQgaGVyZSB2YWx1ZSlcbmxldCBnZXQgdCA9IHQudmFsdWVcblxubGV0IGdldF9leG4gKHQgOiBfIHQpIGhlcmUgPVxuICBtYXRjaCB0LnZhbHVlIHdpdGhcbiAgfCBTb21lIGEgLT4gYVxuICB8IE5vbmUgLT5cbiAgICByYWlzZV9zIFslbWVzc2FnZSBcIltTZXRfb25jZS5nZXRfZXhuXSB1bnNldFwiIH5hdDooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuOztcblxubGV0IGlzX25vbmUgdCA9IE9wdGlvbi5pc19ub25lIHQudmFsdWVcbmxldCBpc19zb21lIHQgPSBPcHRpb24uaXNfc29tZSB0LnZhbHVlXG5sZXQgaXRlciB0IH5mID0gT3B0aW9uLml0ZXIgdC52YWx1ZSB+ZlxuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlIHQgPSBnZXRfZXhuIHQgWyVoZXJlXVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCB0b19zdHJpbmcgXyA9IGBEZXByZWNhdGVkX3VzZV9FeG5fdG9fc3RyaW5nX2luc3RlYWRcbmxldCBwcmludCBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl90b19zdHJpbmdfaW5zdGVhZFxubGV0IGNhdGNoIF8gXyA9IGBEZXByZWNhdGVkX3VzZV9FeG5faGFuZGxlX3VuY2F1Z2h0X2luc3RlYWRcbmxldCBwcmludF9iYWNrdHJhY2UgPSBTdGRsaWIuUHJpbnRleGMucHJpbnRfYmFja3RyYWNlXG5sZXQgZ2V0X2JhY2t0cmFjZSA9IFN0ZGxpYi5QcmludGV4Yy5nZXRfYmFja3RyYWNlXG5sZXQgcmVjb3JkX2JhY2t0cmFjZSA9IFN0ZGxpYi5QcmludGV4Yy5yZWNvcmRfYmFja3RyYWNlXG5sZXQgYmFja3RyYWNlX3N0YXR1cyA9IFN0ZGxpYi5QcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5PcHRpb25fYXJyYXlcblxuaW5jbHVkZVxuICBCaW5hYmxlLk9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiBhcnJheSBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYXJyYXlcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYXJyYXlcbiAgICBlbmQpXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkxhenl9W0Jhc2UuTGF6eV19LiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgQmFzZS5MYXp5LnRcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgcXVpY2tjaGVjaywgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIEJhc2UuTGF6eSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0ICgqKiBAaW5saW5lICopXG5cbm1vZHVsZSBTdGFibGUgOiBzaWdcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXVxuXG4gICAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgY29tcGFyZSA9XG4gIFsgYG5vX3BvbHltb3JwaGljX2NvbXBhcmUgXVxuICAtPiBbIGBub19wb2x5bW9ycGhpY19jb21wYXJlIF1cbiAgLT4gWyBgbm9fcG9seW1vcnBoaWNfY29tcGFyZSBdXG5cbmxldCBjb21wYXJlIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA8ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoIDw9ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoID4gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPj0gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPSApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA8PiApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgZXF1YWwgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCBtaW4gXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCBtYXggXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxudHlwZSAoJ2EsICdiKSBmbiA9ICdhIC0+ICdiXG5cbm1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFJ2YWwgb2YgJ2FcbiAgICB8IEV4cHQgb2YgZXhuXG5cbiAgbGV0IHJldHVybiA9IGZ1bmN0aW9uXG4gICAgfCBSdmFsIHYgLT4gdlxuICAgIHwgRXhwdCBlIC0+IHJhaXNlIGVcbiAgOztcblxuICBsZXQgY2FwdHVyZSBmIHggPVxuICAgIHRyeSBSdmFsIChmIHgpIHdpdGhcbiAgICB8IGUgLT4gRXhwdCBlXG4gIDs7XG5lbmRcblxubGV0IHVuaXQgZiA9XG4gIGxldCBsID0gTGF6eS5mcm9tX2Z1biBmIGluXG4gIGZ1biAoKSAtPiBMYXp5LmZvcmNlIGxcbjs7XG5cbmxldCB1bmJvdW5kZWQgKHR5cGUgYSkgPyhoYXNoYWJsZSA9IEhhc2h0YmwuSGFzaGFibGUucG9seSkgZiA9XG4gIGxldCBjYWNoZSA9XG4gICAgbGV0IG1vZHVsZSBBID1cbiAgICAgIEhhc2hhYmxlLk1ha2VfcGxhaW5fYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgICBsZXQgeyBIYXNodGJsLkhhc2hhYmxlLmhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9ID0gaGFzaGFibGVcbiAgICAgIGVuZClcbiAgICBpblxuICAgIEEuVGFibGUuY3JlYXRlICgpIH5zaXplOjBcbiAgaW5cbiAgKCogQWxsb2NhdGUgdGhpcyBjbG9zdXJlIGF0IHRoZSBjYWxsIHRvIFt1bmJvdW5kZWRdLCBub3QgYXQgZWFjaCBjYWxsIHRvIHRoZSBtZW1vaXplZFxuICAgICBmdW5jdGlvbi4gKilcbiAgbGV0IHJlYWxseV9jYWxsX2YgYXJnID0gUmVzdWx0LmNhcHR1cmUgZiBhcmcgaW5cbiAgZnVuIGFyZyAtPiBSZXN1bHQucmV0dXJuIChIYXNodGJsLmZpbmRpX29yX2FkZCBjYWNoZSBhcmcgfmRlZmF1bHQ6cmVhbGx5X2NhbGxfZilcbjs7XG5cbigqIHRoZSBzYW1lIGJ1dCB3aXRoIGEgYm91bmQgb24gY2FjaGUgc2l6ZSAqKVxubGV0IGxydSAodHlwZSBhKSA/KGhhc2hhYmxlID0gSGFzaHRibC5IYXNoYWJsZS5wb2x5KSB+bWF4X2NhY2hlX3NpemUgZiA9XG4gIGlmIG1heF9jYWNoZV9zaXplIDw9IDBcbiAgdGhlbiBmYWlsd2l0aGYgXCJNZW1vLmxydTogbWF4X2NhY2hlX3NpemUgb2YgJWkgPD0gMFwiIG1heF9jYWNoZV9zaXplICgpO1xuICBsZXQgbW9kdWxlIENhY2hlID1cbiAgICBIYXNoX3F1ZXVlLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgeyBIYXNodGJsLkhhc2hhYmxlLmhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9ID0gaGFzaGFibGVcbiAgICBlbmQpXG4gIGluXG4gIGxldCBjYWNoZSA9IENhY2hlLmNyZWF0ZSAoKSBpblxuICBmdW4gYXJnIC0+XG4gICAgUmVzdWx0LnJldHVyblxuICAgICAgKG1hdGNoIENhY2hlLmxvb2t1cF9hbmRfbW92ZV90b19iYWNrIGNhY2hlIGFyZyB3aXRoXG4gICAgICAgfCBTb21lIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGxldCByZXN1bHQgPSBSZXN1bHQuY2FwdHVyZSBmIGFyZyBpblxuICAgICAgICAgQ2FjaGUuZW5xdWV1ZV9iYWNrX2V4biBjYWNoZSBhcmcgcmVzdWx0O1xuICAgICAgICAgKCogZWplY3QgbGVhc3QgcmVjZW50bHkgdXNlZCBjYWNoZSBlbnRyeSAqKVxuICAgICAgICAgaWYgQ2FjaGUubGVuZ3RoIGNhY2hlID4gbWF4X2NhY2hlX3NpemVcbiAgICAgICAgIHRoZW4gaWdub3JlIChDYWNoZS5kZXF1ZXVlX2Zyb250X2V4biBjYWNoZSA6IF8gUmVzdWx0LnQpO1xuICAgICAgICAgcmVzdWx0KVxuOztcblxubGV0IGdlbmVyYWwgP2hhc2hhYmxlID9jYWNoZV9zaXplX2JvdW5kIGYgPVxuICBtYXRjaCBjYWNoZV9zaXplX2JvdW5kIHdpdGhcbiAgfCBOb25lIC0+IHVuYm91bmRlZCA/aGFzaGFibGUgZlxuICB8IFNvbWUgbiAtPiBscnUgP2hhc2hhYmxlIH5tYXhfY2FjaGVfc2l6ZTpuIGZcbjs7XG5cbigqIFdlIGV4cGVjdCBbZl9vbmVzdGVwXSB0byBiZSBhIG9uZS1zdGVwIHVucm9sbGVkIHJlY3Vyc2l2ZSBmdW5jdGlvbjsgc2VlIHRoZSBtbGkuIEhlbmNlLFxuICAgaGVyZSB3ZSBjcmVhdGUgdGhlIG1lbW9pemVkIGZ1bmN0aW9uIF9hbmRfIHBhc3MgaXQgdG8gW2Zfb25lc3RlcF0gdG8gYmUgdXNlZCBmb3JcbiAgIHJlY3Vyc2l2ZSBjYWxscy5cblxuICAgTm90ZSB0aGF0IHdlIGltbWVkaWF0ZWx5IGFwcGx5IFtmX29uZXN0ZXBdIHRvIGl0cyBmaXJzdCBhcmd1bWVudCBoZXJlIHNvIHRoYXQgYW55XG4gICBwcmVjb21wdXRhdGlvbiBpcyBwZXJmb3JtZWQgd2hlbiB0aGUgdXNlciBjYWxscyBbcmVjdXJzaXZlXS5cblxuICAgQXMgYW4gZXhhbXBsZSwgaWYgc29tZW9uZSB3cml0ZXMgdGhpcyBub24tbWVtb2l6ZWQgY29kZTpcblxuICAgWyBsZXQgcmVjIGYgPSBsZXQgZGF0YSA9IGNvbXB1dGVfd2l0aG91dF91c2luZ19mICgpIGluIGZ1biB4IC0+IC4uLiBmIC4uLiBdXG5cbiAgIGFuZCBjb252ZXJ0cyB0byBtZW1vaXphdGlvbiBieSBkb2luZzpcblxuICAge1tcbiAgICAgbGV0IGYgPVxuICAgICAgIGxldCBmX29uZXN0ZXAgZiA9IGxldCBkYXRhID0gY29tcHV0ZV93aXRob3V0X3VzaW5nX2YgKCkgaW4gZnVuIHggLT4gLi4uIGYgLi4uIGluXG4gICAgICAgcmVjdXJzaXZlIGZfb25lc3RlcFxuICAgXX1cblxuICAgd2Ugd2FudCB0byBjb21wdXRlIFtkYXRhXSBpbW1lZGlhdGVseS4gSWYgd2UgaGFkIFtmdW4geCAtPiBmX29uZXN0ZXAgKGZvcmNlIG1lbW9pemVkKVxuICAgeF0gYmVsb3csIHdlJ2QgcmVjb21wdXRlIFtkYXRhXSBlYWNoIHRpbWUgdGhlIHVzZXIgY2FsbHMgW2ZdIG9uIGFuIGFyZ3VtZW50IHRoYXQgaGFkbid0XG4gICB5ZXQgYmVlbiBtZW1vaXplZC4gKilcbmxldCByZWN1cnNpdmUgfmhhc2hhYmxlID9jYWNoZV9zaXplX2JvdW5kIGZfb25lc3RlcCA9XG4gIGxldCByZWMgbWVtb2l6ZWQgPVxuICAgIGxhenkgKGdlbmVyYWwgfmhhc2hhYmxlID9jYWNoZV9zaXplX2JvdW5kIChmX29uZXN0ZXAgKGZ1biB4IC0+IChmb3JjZSBtZW1vaXplZCkgeCkpKVxuICBpblxuICBmb3JjZSBtZW1vaXplZFxuOztcblxubGV0IG9mX2NvbXBhcmFibGUgKHR5cGUgaW5kZXgpIChtb2R1bGUgTSA6IENvbXBhcmFibGUuU19wbGFpbiB3aXRoIHR5cGUgdCA9IGluZGV4KSBmID1cbiAgbGV0IG0gPSByZWYgTS5NYXAuZW1wdHkgaW5cbiAgZnVuICh4IDogTS50KSAtPlxuICAgIGxldCB2ID1cbiAgICAgIG1hdGNoIE1hcC5maW5kICFtIHggd2l0aFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCB2ID0gUmVzdWx0LmNhcHR1cmUgZiB4IGluXG4gICAgICAgIG0gOj0gTWFwLnNldCAhbSB+a2V5OnggfmRhdGE6djtcbiAgICAgICAgdlxuICAgIGluXG4gICAgUmVzdWx0LnJldHVybiB2XG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgUXVldWUgPSBCYXNlLkxpbmtlZF9xdWV1ZVxuaW5jbHVkZSBRdWV1ZVxuXG5pbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFF1ZXVlLnRcbiAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjgwMGRmOWEwLTQ5OTItMTFlNi04ODFkLWZmZTFhNWM4YWNlZFwiXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkxpbmtlZF9xdWV1ZVwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyID0gaXRlclxuXG4gICAgKCogQmluX3Byb3QgcmVhZHMgdGhlIGVsZW1lbnRzIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgd2VyZSB3cml0dGVuIG91dCwgYXMgZGV0ZXJtaW5lZFxuICAgICAgIGJ5IFtpdGVyXS4gIFNvLCB3ZSBjYW4gaWdub3JlIHRoZSBpbmRleCBhbmQganVzdCBlbnF1ZXVlIGVhY2ggZWxlbWVudCBhcyBpdCBpcyByZWFkXG4gICAgICAgaW4uICopXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICAgICAgZm9yIF8gPSAxIHRvIGxlbiBkb1xuICAgICAgICBlbnF1ZXVlIHQgKG5leHQgKCkpXG4gICAgICBkb25lO1xuICAgICAgdFxuICAgIDs7XG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBEZXJpdmluZ19oYXNoX2ludGZcblxubW9kdWxlIE9mX2Rlcml2aW5nX2hhc2hcbiAgICAoUmVwciA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICB0eXBlIHRcblxuICAgICAgICAgICAgICAgICAgdmFsIHRvX3JlcHIgOiB0IC0+IFJlcHIudFxuICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gUmVwci5oYXNoX2ZvbGRfdCBzdGF0ZSAoTS50b19yZXByIHQpXG4gIGxldCBoYXNoID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLm9mX2ZvbGQgaGFzaF9mb2xkX3RcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG50eXBlICdhIHQgPVxuICB7ICgqIFthcnJdIGlzIGEgY3ljbGljIGJ1ZmZlciAqKVxuICAgIG11dGFibGUgYXJyIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgOyAoKiBbZnJvbnRfaW5kZXhdIGFuZCBbYmFja19pbmRleF0gYXJlIHRoZSBwb3NpdGlvbnMgaW4gd2hpY2ggbmV3IGVsZW1lbnRzIG1heSBiZVxuICAgICAgIGVucXVldWVkLiAgVGhpcyBtYWtlcyB0aGUgYWN0aXZlIHBhcnQgb2YgW2Fycl0gdGhlIHJhbmdlIGZyb20gW2Zyb250X2luZGV4KzFdIHRvXG4gICAgICAgW2JhY2tfaW5kZXgtMV0gKG1vZHVsbyB0aGUgbGVuZ3RoIG9mIFthcnJdIGFuZCB3cmFwcGluZyBhcm91bmQgaWYgbmVjZXNzYXJ5KS4gIE5vdGVcbiAgICAgICB0aGF0IHRoaXMgbWVhbnMgdGhlIGFjdGl2ZSByYW5nZSBpcyBtYXhpbWl6ZWQgd2hlbiBbZnJvbnRfaW5kZXggPSBiYWNrX2luZGV4XSwgd2hpY2hcbiAgICAgICBvY2N1cnMgd2hlbiB0aGVyZSBhcmUgW0FycmF5Lmxlbmd0aCBhcnIgLSAxXSBhY3RpdmUgZWxlbWVudHMuICopXG4gICAgbXV0YWJsZSBmcm9udF9pbmRleCA6IGludFxuICA7IG11dGFibGUgYmFja19pbmRleCA6IGludFxuICA7ICgqIGFwcGFyZW50X2Zyb250X2luZGV4IGlzIHdoYXQgaXMgZXhwb3NlZCBhcyB0aGUgZnJvbnQgaW5kZXggZXh0ZXJuYWxseS4gIEl0IGhhcyBub1xuICAgICAgIHJlYWwgcmVsYXRpb24gdG8gdGhlIGFycmF5IC0tIGV2ZXJ5IGVucXVldWUgdG8gdGhlIGZyb250IGRlY3JlbWVudHMgaXQgYW5kIGV2ZXJ5XG4gICAgICAgZGVxdWV1ZSBmcm9tIHRoZSBmcm9udCBpbmNyZW1lbnRzIGl0LiAqKVxuICAgIG11dGFibGUgYXBwYXJlbnRfZnJvbnRfaW5kZXggOiBpbnRcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7ICgqIFdlIGtlZXAgYXJyX2xlbmd0aCBoZXJlIGFzIGEgc3BlZWQgaGFjay4gIENhbGxpbmcgQXJyYXkubGVuZ3RoIG9uIGFyciBpcyBhY3R1YWxseVxuICAgICAgIG1lYW5pbmdmdWxseSBzbG93ZXIuICopXG4gICAgbXV0YWJsZSBhcnJfbGVuZ3RoIDogaW50XG4gIDsgbmV2ZXJfc2hyaW5rIDogYm9vbFxuICB9XG5cbmxldCBjcmVhdGUgP2luaXRpYWxfbGVuZ3RoID9uZXZlcl9zaHJpbmsgKCkgPVxuICBsZXQgbmV2ZXJfc2hyaW5rID1cbiAgICBtYXRjaCBuZXZlcl9zaHJpbmsgd2l0aFxuICAgIHwgTm9uZSAtPiBPcHRpb24uaXNfc29tZSBpbml0aWFsX2xlbmd0aFxuICAgIHwgU29tZSBiIC0+IGJcbiAgaW5cbiAgbGV0IGluaXRpYWxfbGVuZ3RoID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OjcgaW5pdGlhbF9sZW5ndGggaW5cbiAgaWYgaW5pdGlhbF9sZW5ndGggPCAwXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwicGFzc2VkIG5lZ2F0aXZlIGluaXRpYWxfbGVuZ3RoIHRvIERlcXVlLmNyZWF0ZTogJWlcIiBpbml0aWFsX2xlbmd0aCAoKTtcbiAgKCogTWFrZSB0aGUgaW5pdGlhbCBhcnJheSBsZW5ndGggYmUgW2luaXRpYWxfbGVuZ3RoICsgMV0gc28gd2UgY2FuIGZpdCBbaW5pdGlhbF9sZW5ndGhdXG4gICAgIGVsZW1lbnRzIHdpdGhvdXQgZ3Jvd2luZy4gIFdlIG5ldmVyIHF1aXRlIHVzZSB0aGUgd2hvbGUgYXJyYXkuICopXG4gIGxldCBhcnJfbGVuZ3RoID0gaW5pdGlhbF9sZW5ndGggKyAxIGluXG4gIHsgYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOmFycl9sZW5ndGhcbiAgOyBmcm9udF9pbmRleCA9IDBcbiAgOyBiYWNrX2luZGV4ID0gMVxuICA7IGFwcGFyZW50X2Zyb250X2luZGV4ID0gMFxuICA7IGxlbmd0aCA9IDBcbiAgOyBhcnJfbGVuZ3RoXG4gIDsgbmV2ZXJfc2hyaW5rXG4gIH1cbjs7XG5cbmxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG4oKiBXZSBrZWVwIHRyYWNrIG9mIHRoZSBsZW5ndGggaW4gYSBtdXRhYmxlIGZpZWxkIGZvciBzcGVlZCwgYnV0IHRoaXMgY2FsY3VsYXRpb24gc2hvdWxkXG4gICBiZSBjb3JyZWN0IGJ5IGNvbnN0cnVjdGlvbiwgYW5kIGNhbiBiZSB1c2VkIGZvciB0ZXN0aW5nLiAqKVxubGV0IF9pbnZhcmlhbnRfbGVuZ3RoIHQgPVxuICBsZXQgY29uc3RydWN0ZWRfbGVuZ3RoID1cbiAgICBpZiB0LmZyb250X2luZGV4IDwgdC5iYWNrX2luZGV4XG4gICAgdGhlbiB0LmJhY2tfaW5kZXggLSB0LmZyb250X2luZGV4IC0gMVxuICAgIGVsc2UgdC5iYWNrX2luZGV4IC0gdC5mcm9udF9pbmRleCAtIDEgKyB0LmFycl9sZW5ndGhcbiAgaW5cbiAgYXNzZXJ0IChsZW5ndGggdCA9IGNvbnN0cnVjdGVkX2xlbmd0aClcbjs7XG5cbigqIFRoZSB2YXJpb3VzIFwid2hlbl9ub3RfZW1wdHlcIiBmdW5jdGlvbnMgcmV0dXJuIG1pc2xlYWRpbmcgbnVtYmVycyB3aGVuIHRoZSBkZXF1ZXVlIGlzXG4gICBlbXB0eS4gIFRoZXkgYXJlIHNhZmUgdG8gY2FsbCBpZiBpdCBpcyBrbm93biB0aGF0IHRoZSBkZXF1ZXVlIGlzIG5vbi1lbXB0eS4gKilcbmxldCBhcHBhcmVudF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0ID0gdC5hcHBhcmVudF9mcm9udF9pbmRleFxubGV0IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCA9IHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggKyBsZW5ndGggdCAtIDFcblxubGV0IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0ID1cbiAgaWYgdC5mcm9udF9pbmRleCA9IHQuYXJyX2xlbmd0aCAtIDEgdGhlbiAwIGVsc2UgdC5mcm9udF9pbmRleCArIDFcbjs7XG5cbmxldCBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0ID1cbiAgaWYgdC5iYWNrX2luZGV4ID0gMCB0aGVuIHQuYXJyX2xlbmd0aCAtIDEgZWxzZSB0LmJhY2tfaW5kZXggLSAxXG47O1xuXG5sZXQgY2hlY2tlZCB0IGYgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGYgdClcbmxldCBhcHBhcmVudF9mcm9udF9pbmRleCB0ID0gY2hlY2tlZCB0IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5XG5sZXQgYXBwYXJlbnRfYmFja19pbmRleCB0ID0gY2hlY2tlZCB0IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHlcblxubGV0IGZvbGRpJyB0IGRpciB+aW5pdCB+ZiA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBhcHBhcmVudF9mcm9udCA9IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYXBwYXJlbnRfYmFjayA9IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhY3R1YWxfZnJvbnQgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhY3R1YWxfYmFjayA9IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIH5hcHBhcmVudF9pIH5yZWFsX2kgfnN0b3BfcG9zIH5zdGVwID1cbiAgICAgIGlmIHJlYWxfaSA9IHN0b3BfcG9zXG4gICAgICB0aGVuIGFjYywgYXBwYXJlbnRfaVxuICAgICAgZWxzZVxuICAgICAgICBsb29wXG4gICAgICAgICAgKGYgYXBwYXJlbnRfaSBhY2MgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgcmVhbF9pKSlcbiAgICAgICAgICB+YXBwYXJlbnRfaTooYXBwYXJlbnRfaSArIHN0ZXApXG4gICAgICAgICAgfnJlYWxfaToocmVhbF9pICsgc3RlcClcbiAgICAgICAgICB+c3RvcF9wb3NcbiAgICAgICAgICB+c3RlcFxuICAgIGluXG4gICAgKCogV2Ugd2FudCB0byBpdGVyYXRlIGZyb20gYWN0dWFsX2Zyb250IHRvIGFjdHVhbF9iYWNrIChvciB2aWNlIHZlcnNhKSwgYnV0IHdlIG1heVxuICAgICAgIG5lZWQgdG8gd3JhcCBhcm91bmQgdGhlIGFycmF5IHRvIGRvIHNvLiAgVGh1cyB3ZSBkbyB0aGUgZm9sbG93aW5nOlxuICAgICAgIDEuICBJZiB0aGUgYWN0aXZlIHJhbmdlIGlzIGNvbnRpZ3VvdXMgKGkuZS4gYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrKSwgdGhlbiBsb29wXG4gICAgICAgc3RhcnRpbmcgYXQgdGhlIGFwcHJvcHJpYXRlIGVuZCBvZiB0aGUgYWN0aXZlIHJhbmdlIHVudGlsIHdlIHJlYWNoIHRoZSBmaXJzdFxuICAgICAgIGVsZW1lbnQgb3V0c2lkZSBvZiBpdC5cbiAgICAgICAyLiAgSWYgaXQgaXMgbm90IGNvbnRpZ3VvdXMgKGFjdHVhbF9mcm9udCA+IGFjdHVhbF9iYWNrKSwgdGhlbiBmaXJzdCBsb29wIGZyb20gdGhlXG4gICAgICAgYXBwcm9wcmlhdGUgZW5kIG9mIHRoZSBhY3RpdmUgcmFuZ2UgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuICBUaGVuLCBsb29wIGZyb21cbiAgICAgICB0aGUgb3Bwb3NpdGUgZW5kIG9mIHRoZSBhcnJheSB0byB0aGUgb3Bwb3NpdGUgZW5kIG9mIHRoZSBhY3RpdmUgcmFuZ2UuXG4gICAgKilcbiAgICBtYXRjaCBkaXIgd2l0aFxuICAgIHwgYGZyb250X3RvX2JhY2sgLT5cbiAgICAgIGlmIGFjdHVhbF9mcm9udCA8PSBhY3R1YWxfYmFja1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBhY2MsIF8gPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgIH5hcHBhcmVudF9pOmFwcGFyZW50X2Zyb250XG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9mcm9udFxuICAgICAgICAgICAgfnN0b3BfcG9zOihhY3R1YWxfYmFjayArIDEpXG4gICAgICAgICAgICB+c3RlcDoxXG4gICAgICAgIGluXG4gICAgICAgIGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYWNjLCBhcHBhcmVudF9pID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9mcm9udFxuICAgICAgICAgICAgfnJlYWxfaTphY3R1YWxfZnJvbnRcbiAgICAgICAgICAgIH5zdG9wX3Bvczp0LmFycl9sZW5ndGhcbiAgICAgICAgICAgIH5zdGVwOjFcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYywgXyA9IGxvb3AgYWNjIH5hcHBhcmVudF9pIH5yZWFsX2k6MCB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSkgfnN0ZXA6MSBpblxuICAgICAgICBhY2MpXG4gICAgfCBgYmFja190b19mcm9udCAtPlxuICAgICAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGFjYywgXyA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfYmFja1xuICAgICAgICAgICAgfnJlYWxfaTphY3R1YWxfYmFja1xuICAgICAgICAgICAgfnN0b3BfcG9zOihhY3R1YWxfZnJvbnQgLSAxKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBhY2MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGFjYywgYXBwYXJlbnRfaSA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfYmFja1xuICAgICAgICAgICAgfnJlYWxfaTphY3R1YWxfYmFja1xuICAgICAgICAgICAgfnN0b3BfcG9zOigtMSlcbiAgICAgICAgICAgIH5zdGVwOigtMSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYywgXyA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICB+YXBwYXJlbnRfaVxuICAgICAgICAgICAgfnJlYWxfaToodC5hcnJfbGVuZ3RoIC0gMSlcbiAgICAgICAgICAgIH5zdG9wX3BvczooYWN0dWFsX2Zyb250IC0gMSlcbiAgICAgICAgICAgIH5zdGVwOigtMSlcbiAgICAgICAgaW5cbiAgICAgICAgYWNjKSlcbjs7XG5cbmxldCBmb2xkJyB0IGRpciB+aW5pdCB+ZiA9IGZvbGRpJyB0IGRpciB+aW5pdCB+ZjooZnVuIF8gYWNjIHYgLT4gZiBhY2MgdikgW0Bub250YWlsXVxubGV0IGl0ZXJpJyB0IGRpciB+ZiA9IGZvbGRpJyB0IGRpciB+aW5pdDooKSB+ZjooZnVuIGkgKCkgdiAtPiBmIGkgdilcbmxldCBpdGVyJyB0IGRpciB+ZiA9IGZvbGRpJyB0IGRpciB+aW5pdDooKSB+ZjooZnVuIF8gKCkgdiAtPiBmIHYpXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZCcgdCBgZnJvbnRfdG9fYmFjayB+aW5pdCB+ZlxubGV0IGZvbGRpIHQgfmluaXQgfmYgPSBmb2xkaScgdCBgZnJvbnRfdG9fYmFjayB+aW5pdCB+ZlxubGV0IGl0ZXJpIHQgfmYgPSBpdGVyaScgdCBgZnJvbnRfdG9fYmFjayB+ZlxuXG5sZXQgaXRlcmlfaW50ZXJuYWwgdCB+ZiA9XG4gIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgdGhlbiAoXG4gICAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9iYWNrID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCByZWMgbG9vcCB+cmVhbF9pIH5zdG9wX3BvcyA9XG4gICAgICBpZiByZWFsX2kgPCBzdG9wX3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGYgdC5hcnIgcmVhbF9pO1xuICAgICAgICBsb29wIH5yZWFsX2k6KHJlYWxfaSArIDEpIH5zdG9wX3BvcylcbiAgICBpblxuICAgIGlmIGFjdHVhbF9mcm9udCA8PSBhY3R1YWxfYmFja1xuICAgIHRoZW4gbG9vcCB+cmVhbF9pOmFjdHVhbF9mcm9udCB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSkgW0Bub250YWlsXVxuICAgIGVsc2UgKFxuICAgICAgbG9vcCB+cmVhbF9pOmFjdHVhbF9mcm9udCB+c3RvcF9wb3M6dC5hcnJfbGVuZ3RoO1xuICAgICAgbG9vcCB+cmVhbF9pOjAgfnN0b3BfcG9zOihhY3R1YWxfYmFjayArIDEpIFtAbm9udGFpbF0pKVxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGl0ZXJpX2ludGVybmFsIHQgfmY6KGZ1biBhcnIgaSAtPiBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGFyciBpIHw+IGYpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBjbGVhciB0ID1cbiAgaWYgdC5uZXZlcl9zaHJpbmtcbiAgdGhlblxuICAgICgqIGNsZWFyIHRoZSBhcnJheSB0byBhbGxvdyBlbGVtZW50cyB0byBiZSBnYXJiYWdlIGNvbGxlY3RlZCAqKVxuICAgIGl0ZXJpX2ludGVybmFsIHQgfmY6T3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZVxuICBlbHNlIHQuYXJyIDwtIE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjo4O1xuICB0LmZyb250X2luZGV4IDwtIDA7XG4gIHQuYmFja19pbmRleCA8LSAxO1xuICB0Lmxlbmd0aCA8LSAwO1xuICB0LmFycl9sZW5ndGggPC0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmFyclxuOztcblxuKCogV2UgaGF2ZSB0byBiZSBjYXJlZnVsIGhlcmUsIGltcG9ydGluZyBhbGwgb2YgQ29udGFpbmVyLk1ha2Ugd291bGQgY2hhbmdlIHRoZSBydW50aW1lIG9mXG4gICBzb21lIGZ1bmN0aW9ucyAoW2xlbmd0aF0gbWluaW1hbGx5KSBzaWxlbnRseSB3aXRob3V0IGNoYW5naW5nIHRoZSBzZW1hbnRpY3MuICBXZSBnZXRcbiAgIGFyb3VuZCB0aGF0IGJ5IGltcG9ydGluZyB0aGluZ3MgZXhwbGljaXRseS4gICopXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IG1lbSA9IEMubWVtXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZpbmQgPSBDLmZpbmRcbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCBibGl0IG5ld19hcnIgdCA9XG4gIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gIGxldCBhY3R1YWxfZnJvbnQgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICBsZXQgYWN0dWFsX2JhY2sgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCBvbGRfYXJyID0gdC5hcnIgaW5cbiAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gIHRoZW5cbiAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgfnNyYzpvbGRfYXJyXG4gICAgICB+ZHN0Om5ld19hcnJcbiAgICAgIH5zcmNfcG9zOmFjdHVhbF9mcm9udFxuICAgICAgfmRzdF9wb3M6MFxuICAgICAgfmxlbjoobGVuZ3RoIHQpXG4gIGVsc2UgKFxuICAgIGxldCBicmVha19wb3MgPSBPcHRpb25fYXJyYXkubGVuZ3RoIG9sZF9hcnIgLSBhY3R1YWxfZnJvbnQgaW5cbiAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgfnNyYzpvbGRfYXJyXG4gICAgICB+ZHN0Om5ld19hcnJcbiAgICAgIH5zcmNfcG9zOmFjdHVhbF9mcm9udFxuICAgICAgfmRzdF9wb3M6MFxuICAgICAgfmxlbjpicmVha19wb3M7XG4gICAgT3B0aW9uX2FycmF5LmJsaXRcbiAgICAgIH5zcmM6b2xkX2FyclxuICAgICAgfmRzdDpuZXdfYXJyXG4gICAgICB+c3JjX3BvczowXG4gICAgICB+ZHN0X3BvczpicmVha19wb3NcbiAgICAgIH5sZW46KGFjdHVhbF9iYWNrICsgMSkpO1xuICAoKiBsZW5ndGggZGVwZW5kcyBvbiB0LmFyciBhbmQgdC5mcm9udF9pbmRleCwgc28gdGhpcyBuZWVkcyB0byBiZSBmaXJzdCAqKVxuICB0LmJhY2tfaW5kZXggPC0gbGVuZ3RoIHQ7XG4gIHQuYXJyIDwtIG5ld19hcnI7XG4gIHQuYXJyX2xlbmd0aCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnI7XG4gIHQuZnJvbnRfaW5kZXggPC0gT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyIC0gMTtcbiAgKCogU2luY2UgdC5mcm9udF9pbmRleCA9IE9wdGlvbl9hcnJheS5sZW5ndGggbmV3X2FyciAtIDEsIHRoaXMgaXMgYXNzZXJ0aW5nIHRoYXQgdC5iYWNrX2luZGV4XG4gICAgIGlzIGEgdmFsaWQgaW5kZXggaW4gdGhlIGFycmF5IGFuZCB0aGF0IHRoZSBhcnJheSBjYW4gc3VwcG9ydCBhdCBsZWFzdCBvbmUgbW9yZVxuICAgICBlbGVtZW50IC0tIHJlY2FsbCwgaWYgdC5mcm9udF9pbmRleCA9IHQuYmFja19pbmRleCB0aGVuIHRoZSBhcnJheSBpcyBmdWxsLlxuXG4gICAgIE5vdGUgdGhhdCB0aGlzIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyID4gbGVuZ3RoIHQgKyAxLlxuICAqKVxuICBhc3NlcnQgKHQuZnJvbnRfaW5kZXggPiB0LmJhY2tfaW5kZXgpXG47O1xuXG5sZXQgbWF5YmVfc2hyaW5rX3VuZGVybHlpbmcgdCA9XG4gIGlmIChub3QgdC5uZXZlcl9zaHJpbmspICYmIHQuYXJyX2xlbmd0aCA+IDEwICYmIHQuYXJyX2xlbmd0aCAvIDMgPiBsZW5ndGggdFxuICB0aGVuIChcbiAgICBsZXQgbmV3X2FyciA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjoodC5hcnJfbGVuZ3RoIC8gMikgaW5cbiAgICBibGl0IG5ld19hcnIgdClcbjs7XG5cbmxldCBncm93X3VuZGVybHlpbmcgdCA9XG4gIGxldCBuZXdfYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOih0LmFycl9sZW5ndGggKiAyKSBpblxuICBibGl0IG5ld19hcnIgdFxuOztcblxubGV0IGVucXVldWVfYmFjayB0IHYgPVxuICBpZiB0LmZyb250X2luZGV4ID0gdC5iYWNrX2luZGV4IHRoZW4gZ3Jvd191bmRlcmx5aW5nIHQ7XG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmFyciB0LmJhY2tfaW5kZXggdjtcbiAgdC5iYWNrX2luZGV4IDwtIChpZiB0LmJhY2tfaW5kZXggPSB0LmFycl9sZW5ndGggLSAxIHRoZW4gMCBlbHNlIHQuYmFja19pbmRleCArIDEpO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBlbnF1ZXVlX2Zyb250IHQgdiA9XG4gIGlmIHQuZnJvbnRfaW5kZXggPSB0LmJhY2tfaW5kZXggdGhlbiBncm93X3VuZGVybHlpbmcgdDtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyIHQuZnJvbnRfaW5kZXggdjtcbiAgdC5mcm9udF9pbmRleCA8LSAoaWYgdC5mcm9udF9pbmRleCA9IDAgdGhlbiB0LmFycl9sZW5ndGggLSAxIGVsc2UgdC5mcm9udF9pbmRleCAtIDEpO1xuICB0LmFwcGFyZW50X2Zyb250X2luZGV4IDwtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggLSAxO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBlbnF1ZXVlIHQgYmFja19vcl9mcm9udCB2ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGJhY2sgLT4gZW5xdWV1ZV9iYWNrIHQgdlxuICB8IGBmcm9udCAtPiBlbnF1ZXVlX2Zyb250IHQgdlxuOztcblxubGV0IHBlZWtfZnJvbnRfbm9uZW1wdHkgdCA9XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0KVxuOztcblxubGV0IHBlZWtfZnJvbnRfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJEZXF1ZS5wZWVrX2Zyb250X2V4biBwYXNzZWQgYW4gZW1wdHkgcXVldWVcIlxuICBlbHNlIHBlZWtfZnJvbnRfbm9uZW1wdHkgdFxuOztcblxubGV0IHBlZWtfZnJvbnQgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAocGVla19mcm9udF9ub25lbXB0eSB0KVxuXG5sZXQgcGVla19iYWNrX25vbmVtcHR5IHQgPVxuICBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIChhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0KVxuOztcblxubGV0IHBlZWtfYmFja19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLnBlZWtfYmFja19leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBwZWVrX2JhY2tfbm9uZW1wdHkgdFxuOztcblxubGV0IHBlZWtfYmFjayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwZWVrX2JhY2tfbm9uZW1wdHkgdClcblxubGV0IHBlZWsgdCBiYWNrX29yX2Zyb250ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGJhY2sgLT4gcGVla19iYWNrIHRcbiAgfCBgZnJvbnQgLT4gcGVla19mcm9udCB0XG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udF9ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICBsZXQgcmVzID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciBpIGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmFyciBpO1xuICB0LmZyb250X2luZGV4IDwtIGk7XG4gIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggPC0gdC5hcHBhcmVudF9mcm9udF9pbmRleCArIDE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgbWF5YmVfc2hyaW5rX3VuZGVybHlpbmcgdDtcbiAgcmVzXG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udF9leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLmRlcXVldWVfZnJvbnRfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgZGVxdWV1ZV9mcm9udF9ub25lbXB0eSB0XG47O1xuXG5sZXQgZGVxdWV1ZV9mcm9udCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHQpXG5cbmxldCBkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdCA9XG4gIGxldCBpID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICBsZXQgcmVzID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciBpIGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmFyciBpO1xuICB0LmJhY2tfaW5kZXggPC0gaTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0O1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2JhY2tfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJEZXF1ZS5kZXF1ZXVlX2JhY2tfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgZGVxdWV1ZV9iYWNrX25vbmVtcHR5IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2JhY2sgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZGVxdWV1ZV9iYWNrX25vbmVtcHR5IHQpXG5cbmxldCBkZXF1ZXVlX2V4biB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFja19leG4gdFxuOztcblxubGV0IGRlcXVldWUgdCBiYWNrX29yX2Zyb250ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGZyb250IC0+IGRlcXVldWVfZnJvbnQgdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFjayB0XG47O1xuXG5sZXQgZHJvcF9nZW4gPyhuID0gMSkgfmRlcXVldWUgdCA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiRGVxdWUuZHJvcDogIG5lZ2F0aXZlIGlucHV0ICglZClcIiBuICgpO1xuICBsZXQgcmVjIGxvb3AgbiA9XG4gICAgaWYgbiA+IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGRlcXVldWUgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIC0+IGxvb3AgKG4gLSAxKSlcbiAgaW5cbiAgbG9vcCBuXG47O1xuXG5sZXQgZHJvcF9mcm9udCA/biB0ID0gZHJvcF9nZW4gP24gfmRlcXVldWU6ZGVxdWV1ZV9mcm9udCB0XG5sZXQgZHJvcF9iYWNrID9uIHQgPSBkcm9wX2dlbiA/biB+ZGVxdWV1ZTpkZXF1ZXVlX2JhY2sgdFxuXG5sZXQgZHJvcCA/biB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBkcm9wX2JhY2sgP24gdFxuICB8IGBmcm9udCAtPiBkcm9wX2Zyb250ID9uIHRcbjs7XG5cbmxldCBhc3NlcnRfbm90X2VtcHR5IHQgbmFtZSA9IGlmIGlzX2VtcHR5IHQgdGhlbiBmYWlsd2l0aGYgXCIlczogRGVxdWUudCBpcyBlbXB0eVwiIG5hbWUgKClcblxubGV0IHRydWVfaW5kZXhfZXhuIHQgaSA9XG4gIGxldCBpX2Zyb21femVybyA9IGkgLSB0LmFwcGFyZW50X2Zyb250X2luZGV4IGluXG4gIGlmIGlfZnJvbV96ZXJvIDwgMCB8fCBsZW5ndGggdCA8PSBpX2Zyb21femVyb1xuICB0aGVuIChcbiAgICBhc3NlcnRfbm90X2VtcHR5IHQgXCJEZXF1ZS50cnVlX2luZGV4X2V4blwiO1xuICAgIGxldCBhcHBhcmVudF9mcm9udCA9IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYXBwYXJlbnRfYmFjayA9IGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJpbnZhbGlkIGluZGV4OiAlaSBmb3IgYXJyYXkgd2l0aCBpbmRpY2VzICglaSwlaSlcIlxuICAgICAgaVxuICAgICAgYXBwYXJlbnRfZnJvbnRcbiAgICAgIGFwcGFyZW50X2JhY2tcbiAgICAgICgpKTtcbiAgbGV0IHRydWVfaSA9IHQuZnJvbnRfaW5kZXggKyAxICsgaV9mcm9tX3plcm8gaW5cbiAgaWYgdHJ1ZV9pID49IHQuYXJyX2xlbmd0aCB0aGVuIHRydWVfaSAtIHQuYXJyX2xlbmd0aCBlbHNlIHRydWVfaVxuOztcblxubGV0IGdldCB0IGkgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyICh0cnVlX2luZGV4X2V4biB0IGkpXG5cbmxldCBnZXRfb3B0IHQgaSA9XG4gIHRyeSBTb21lIChnZXQgdCBpKSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgc2V0X2V4biB0IGkgdiA9IE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmFyciAodHJ1ZV9pbmRleF9leG4gdCBpKSB2XG5cbmxldCB0b19hcnJheSB0ID1cbiAgbWF0Y2ggcGVla19mcm9udCB0IHdpdGhcbiAgfCBOb25lIC0+IFt8fF1cbiAgfCBTb21lIGZyb250IC0+XG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuOihsZW5ndGggdCkgZnJvbnQgaW5cbiAgICBpZ25vcmVcbiAgICAgIChmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIGkgdiAtPlxuICAgICAgICAgYXJyLihpKSA8LSB2O1xuICAgICAgICAgaSArIDEpXG4gICAgICAgOiBpbnQpO1xuICAgIGFyclxuOztcblxubGV0IG9mX2FycmF5IGFyciA9XG4gIGxldCB0ID0gY3JlYXRlIH5pbml0aWFsX2xlbmd0aDooQXJyYXkubGVuZ3RoIGFyciArIDEpICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyIH5mOihmdW4gdiAtPiBlbnF1ZXVlX2JhY2sgdCB2KTtcbiAgdFxuOztcblxuaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiMzRjMWU5Y2EtNDk5Mi0xMWU2LWE2ODYtOGI0YmQ0Zjg3Nzk2XCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuRGVxdWVcIlxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgaXRlciB0IH5mID0gaXRlciB0IH5mXG5cbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGxldCB0ID0gY3JlYXRlIH5pbml0aWFsX2xlbmd0aDpsZW4gKCkgaW5cbiAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgeCA9IG5leHQgKCkgaW5cbiAgICAgICAgZW5xdWV1ZV9iYWNrIHQgeFxuICAgICAgZG9uZTtcbiAgICAgIHRcbiAgICA7O1xuICBlbmQpXG5cbmxldCB0X29mX3NleHAgZiBzZXhwID0gb2ZfYXJyYXkgKEFycmF5LnRfb2Zfc2V4cCBmIHNleHApXG5sZXQgc2V4cF9vZl90IGYgdCA9IEFycmF5LnNleHBfb2ZfdCBmICh0b19hcnJheSB0KVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIgPVxuICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKEFycmF5LnRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyKVxuOztcblxuKCogcmUtZXhwb3NlIHRoZXNlIGhlcmUgdW5kZXIgYSBkaWZmZXJlbnQgbmFtZSB0byBhdm9pZCBpbnRlcm5hbCBjb25mdXNpb24gKilcbmxldCBiYWNrX2luZGV4ID0gYXBwYXJlbnRfYmFja19pbmRleFxubGV0IGZyb250X2luZGV4ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhcblxubGV0IGJhY2tfaW5kZXhfZXhuIHQgPVxuICBhc3NlcnRfbm90X2VtcHR5IHQgXCJEZXF1ZS5iYWNrX2luZGV4X2V4blwiO1xuICBhcHBhcmVudF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHRcbjs7XG5cbmxldCBmcm9udF9pbmRleF9leG4gdCA9XG4gIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLmZyb250X2luZGV4X2V4blwiO1xuICBhcHBhcmVudF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0XG47O1xuXG5tb2R1bGUgQmluYXJ5X3NlYXJjaGFibGUgPSBUZXN0X2JpbmFyeV9zZWFyY2hhYmxlLk1ha2UxX2FuZF90ZXN0IChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCB0IGkgPSBnZXQgdCAoZnJvbnRfaW5kZXhfZXhuIHQgKyBpKVxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX2FycmF5ID0gb2ZfYXJyYXlcbiAgICBlbmRcbiAgZW5kKVxuXG4oKiBUaGUgXCJzdGFibGVcIiBpbmRpY2VzIHVzZWQgaW4gdGhpcyBtb2R1bGUgbWFrZSB0aGUgYXBwbGljYXRpb24gb2YgdGhlXG4gICBbQmluYXJ5X3NlYXJjaGFibGVdIGZ1bmN0b3IgYXdrd2FyZC4gIFdlIG5lZWQgdG8gYmUgc3VyZSB0byB0cmFuc2xhdGUgaW5jb21pbmdcbiAgIHBvc2l0aW9ucyBmcm9tIHN0YWJsZSBzcGFjZSB0byB0aGUgZXhwZWN0ZWQgMCAtPiBsZW5ndGggLSAxIHNwYWNlIGFuZCB0aGVuIHdlIG5lZWQgdG9cbiAgIHRyYW5zbGF0ZSB0aGVtIGJhY2sgb24gcmV0dXJuLiAqKVxubGV0IGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgPVxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHBvcyAtPiBTb21lIChwb3MgLSB0LmFwcGFyZW50X2Zyb250X2luZGV4KVxuICBpblxuICBtYXRjaCBCaW5hcnlfc2VhcmNoYWJsZS5iaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5jb21wYXJlIGhvdyB2IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHVudHJhbnNsYXRlZF9pIC0+IFNvbWUgKHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggKyB1bnRyYW5zbGF0ZWRfaSlcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+c2VnbWVudF9vZiBob3cgPVxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHBvcyAtPiBTb21lIChwb3MgLSB0LmFwcGFyZW50X2Zyb250X2luZGV4KVxuICBpblxuICBtYXRjaCBCaW5hcnlfc2VhcmNoYWJsZS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+c2VnbWVudF9vZiBob3cgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdW50cmFuc2xhdGVkX2kgLT4gU29tZSAodC5hcHBhcmVudF9mcm9udF9pbmRleCArIHVudHJhbnNsYXRlZF9pKVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBCYXNlLkxpc3Rcbm1vZHVsZSBTdHJpbmcgPSBCYXNlLlN0cmluZ1xuXG5sZXQgZXByaW50IG1lc3NhZ2UgPSBQcmludGYuZXByaW50ZiBcIiVzXFxuJSFcIiBtZXNzYWdlXG5sZXQgZXByaW50X3Mgc2V4cCA9IGVwcmludCAoU2V4cC50b19zdHJpbmdfaHVtIHNleHApXG5sZXQgZXByaW50cyBtZXNzYWdlIGEgc2V4cF9vZl9hID0gZXByaW50X3MgKFslc2V4cF9vZjogc3RyaW5nICogYV0gKG1lc3NhZ2UsIGEpKVxubGV0IGVwcmludGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGVwcmludCBmb3JtYXRcbmxldCBmYWlsd2l0aHMgPSBFcnJvci5mYWlsd2l0aHNcblxubW9kdWxlIE1ha2UgKCkgPSBzdHJ1Y3RcbiAgbGV0IGNoZWNrX2ludmFyaWFudCA9IHJlZiB0cnVlXG4gIGxldCBzaG93X21lc3NhZ2VzID0gcmVmIHRydWVcblxuICBsZXQgZGVidWcgaW52YXJpYW50IH5tb2R1bGVfbmFtZSBuYW1lIHRzIGFyZyBzZXhwX29mX2FyZyBzZXhwX29mX3Jlc3VsdCBmID1cbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW4gZXByaW50cyAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBtb2R1bGVfbmFtZTsgXCIuXCI7IG5hbWUgXSkgYXJnIHNleHBfb2ZfYXJnO1xuICAgIGlmICFjaGVja19pbnZhcmlhbnRcbiAgICB0aGVuIChcbiAgICAgIHRyeSBMaXN0Lml0ZXIgdHMgfmY6aW52YXJpYW50IHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImludmFyaWFudCBwcmUtY29uZGl0aW9uIGZhaWxlZFwiXG4gICAgICAgICAgKG5hbWUsIGV4bilcbiAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIGV4bl0pO1xuICAgIGxldCByZXN1bHRfb3JfZXhuID0gUmVzdWx0LnRyeV93aXRoIGYgaW5cbiAgICBpZiAhY2hlY2tfaW52YXJpYW50XG4gICAgdGhlbiAoXG4gICAgICB0cnkgTGlzdC5pdGVyIHRzIH5mOmludmFyaWFudCB3aXRoXG4gICAgICB8IGV4biAtPlxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJpbnZhcmlhbnQgcG9zdC1jb25kaXRpb24gZmFpbGVkXCJcbiAgICAgICAgICAobmFtZSwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogZXhuXSk7XG4gICAgaWYgIXNob3dfbWVzc2FnZXNcbiAgICB0aGVuXG4gICAgICBlcHJpbnRzXG4gICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIG1vZHVsZV9uYW1lOyBcIi5cIjsgbmFtZTsgXCItcmVzdWx0XCIgXSlcbiAgICAgICAgcmVzdWx0X29yX2V4blxuICAgICAgICBbJXNleHBfb2Y6IChyZXN1bHQsIGV4bikgUmVzdWx0LnRdO1xuICAgIFJlc3VsdC5va19leG4gcmVzdWx0X29yX2V4blxuICA7O1xuZW5kXG5cbmxldCBzaG91bGRfcHJpbnRfYmFja3RyYWNlID0gcmVmIGZhbHNlXG5cbmxldCBhbV9pbnRlcm5hbCBoZXJlIG1lc3NhZ2UgPVxuICAoKiBJbiB0aGlzIGZ1bmN0aW9uIHdlIHVzZSBbUHJpbnRmLmVwcmludGZdIHJhdGhlciB0aGFuIFtEZWJ1Zy5lcHJpbnRmXSwgYmVjYXVzZSB0aGVcbiAgICAgZm9ybWVyIGRvZXNuJ3QgZmx1c2gsIHdoaWxlIHRoZSBsYXR0ZXIgZG9lcy4gIFdlJ2QgcmF0aGVyIGZsdXNoIG9uY2UgYXQgdGhlIGVuZCxcbiAgICAgcmF0aGVyIHRoYW4gdGhyZWUgdGltZXMuICopXG4gIFByaW50Zi5lcHJpbnRmIFwiJXM6XFxuXCIgKFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRvX3N0cmluZyBoZXJlKTtcbiAgaWYgIXNob3VsZF9wcmludF9iYWNrdHJhY2VcbiAgdGhlblxuICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICBcIiVzXFxuXCJcbiAgICAgIChCYWNrdHJhY2UuZ2V0ICgpIHw+IFslc2V4cF9vZjogQmFja3RyYWNlLnRdIHw+IFNleHAudG9fc3RyaW5nX2h1bSk7XG4gIChtYXRjaCBtZXNzYWdlIHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIG1lc3NhZ2UgLT4gUHJpbnRmLmVwcmludGYgXCIlc1xcblwiIG1lc3NhZ2UpO1xuICBQcmludGYuZXByaW50ZiBcIiUhXCJcbjs7XG5cbmxldCBhbSBoZXJlID0gYW1faW50ZXJuYWwgaGVyZSBOb25lXG5sZXQgYW1mIGhlcmUgZm10ID0gUHJpbnRmLmtzcHJpbnRmIChmdW4gc3RyaW5nIC0+IGFtX2ludGVybmFsIGhlcmUgKFNvbWUgc3RyaW5nKSkgZm10XG5cbmxldCBhbXMgaGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgYW1faW50ZXJuYWwgaGVyZSAoU29tZSAoKG1lc3NhZ2UsIGEpIHw+IFslc2V4cF9vZjogc3RyaW5nICogYV0gfD4gU2V4cC50b19zdHJpbmdfaHVtKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TeXNcblxubGV0IHVuaXhfcXVvdGUgeCA9XG4gIGlmIChub3QgKFN0cmluZy5pc19lbXB0eSB4KSlcbiAgJiYgU3RyaW5nLmZvcl9hbGwgeCB+ZjooZnVuY3Rpb25cbiAgICAgICB8ICdhJyAuLiAneidcbiAgICAgICB8ICdBJyAuLiAnWidcbiAgICAgICB8ICcwJyAuLiAnOSdcbiAgICAgICB8ICdfJyB8ICctJyB8ICc6JyB8ICcuJyB8ICcvJyB8ICcsJyB8ICcrJyB8ICc9JyB8ICclJyB8ICdAJyAtPiB0cnVlXG4gICAgICAgfCBfIC0+IGZhbHNlKVxuICB0aGVuIChcbiAgICAoKiBTaGVsbCBrZXl3b3JkcywgYXMgb3V0cHV0IGJ5IFtjb21wZ2VuIC1rXSBmb3IgYmFzaCwgW21hbiBkYXNoXSBmb3IgZGFzaCwgYW5kIFtQQVRIPVxuICAgICAgIHR5cGUgLW0gJyonIHwgZ3JlcCByZXNlcnZlZF0gZm9yIHpzaCwgZXhjZXB0IGZvciBrZXl3b3JkcyB0aGF0IGhhdmUgc3BlY2lhbFxuICAgICAgIGNoYXJhY3RlcnMgbGlrZSBbWy4gTm90ZSB0aGF0IGJ1aWx0aW5zIGRvbid0IG1hdHRlciBiZWNhdXNlICdhbGlhcycgYW5kIGFsaWFzXG4gICAgICAgYmVoYXZlIHRoZSBzYW1lLCB1bmxpa2UgJ2lmJyBhbmQgaWYuICopXG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBcImlmXCJcbiAgICB8IFwidGhlblwiXG4gICAgfCBcImVsc2VcIlxuICAgIHwgXCJlbGlmXCJcbiAgICB8IFwiZmlcIlxuICAgIHwgXCJjYXNlXCJcbiAgICB8IFwiZXNhY1wiXG4gICAgfCBcImZvclwiXG4gICAgfCBcInNlbGVjdFwiXG4gICAgfCBcIndoaWxlXCJcbiAgICB8IFwidW50aWxcIlxuICAgIHwgXCJkb1wiXG4gICAgfCBcImRvbmVcIlxuICAgIHwgXCJpblwiXG4gICAgfCBcImZ1bmN0aW9uXCJcbiAgICB8IFwidGltZVwiXG4gICAgfCBcImNvcHJvY1wiXG4gICAgfCBcImZvcmVhY2hcIlxuICAgIHwgXCJyZXBlYXRcIlxuICAgIHwgXCJub2NvcnJlY3RcIiAtPiBGaWxlbmFtZS5xdW90ZSB4XG4gICAgfCBfIC0+IHgpXG4gIGVsc2UgRmlsZW5hbWUucXVvdGUgeFxuOztcblxubGV0IHF1b3RlID1cbiAgbWF0Y2ggU3RkbGliLlN5cy5vc190eXBlIHdpdGhcbiAgfCBcIlVuaXhcIiAtPiB1bml4X3F1b3RlXG4gIHwgXyAtPiBGaWxlbmFtZS5xdW90ZVxuOztcblxubGV0IGNvbmNhdF9xdW90ZWQgc3BsaXRfY29tbWFuZCA9XG4gIExpc3QubWFwIH5mOnF1b3RlIHNwbGl0X2NvbW1hbmQgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiXG47O1xuXG5sZXQgY19pbnRfc2l6ZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBjYXRjaF9icmVhayA9IGBVc2VfU3lzX3VuaXhcbmxldCBjaGRpciA9IGBVc2VfU3lzX3VuaXhcbmxldCBjb21tYW5kID0gYFVzZV9TeXNfdW5peFxubGV0IGNvbW1hbmRfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGV4ZWN1dGFibGVfbmFtZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBleGVjdXRpb25fbW9kZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBmaWxlX2V4aXN0cyA9IGBVc2VfU3lzX3VuaXhcbmxldCBmaWxlX2V4aXN0c19leG4gPSBgVXNlX1N5c191bml4XG5sZXQgZm9sZF9kaXIgPSBgVXNlX1N5c191bml4XG5sZXQgZ2V0Y3dkID0gYFVzZV9TeXNfdW5peFxubGV0IGhvbWVfZGlyZWN0b3J5ID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2RpcmVjdG9yeSA9IGBVc2VfU3lzX3VuaXhcbmxldCBpc19kaXJlY3RvcnlfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2ZpbGUgPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZmlsZV9leG4gPSBgVXNlX1N5c191bml4XG5sZXQgbHNfZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IG92ZXJyaWRlX2FyZ3YgPSBgVXNlX1N5c191bml4XG5sZXQgcmVhZGRpciA9IGBVc2VfU3lzX3VuaXhcbmxldCByZW1vdmUgPSBgVXNlX1N5c191bml4XG5sZXQgcmVuYW1lID0gYFVzZV9TeXNfdW5peFxubGV0IHVuc2FmZV9nZXRlbnYgPSBgVXNlX1N5c191bml4XG5sZXQgdW5zYWZlX2dldGVudl9leG4gPSBgVXNlX1N5c191bml4XG5cbmV4Y2VwdGlvbiBCcmVhayA9IFN0ZGxpYi5TeXMuQnJlYWtcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHVuaXhfcXVvdGUgPSB1bml4X3F1b3RlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTdGRsaWIuQXJnXG5cbnR5cGUgdCA9IGtleSAqIHNwZWMgKiBkb2NcblxubGV0IHNvcnRfYW5kX2FsaWduIGxzdCA9XG4gIGFsaWduIChCYXNlLkxpc3Quc29ydCBsc3QgfmNvbXBhcmU6KGZ1biAoYSwgXywgXykgKGIsIF8sIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhZ19pbnRmXG5pbmNsdWRlIChEb3VibHlfbGlua2VkIDogRG91Ymx5X2xpbmtlZC5TKVxuXG5sZXQgYWRkID0gaW5zZXJ0X2ZpcnN0XG5sZXQgYWRkX3VuaXQgdCB2ID0gYWRkIHQgdiB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KVxubGV0IGVsdHMgdCA9IGZvbGRfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBhY2MgZWx0IC0+IGVsdCA6OiBhY2MpXG5sZXQgcmVtb3ZlX29uZSA9IHJlbW92ZV9maXJzdFxubGV0IGNob29zZSA9IGZpcnN0X2VsdFxuXG5sZXQgdW50aWxfZW1wdHkgdCBmID1cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBPcHRpb24uaXRlciAocmVtb3ZlX29uZSB0KSB+ZjooZnVuIHYgLT5cbiAgICAgIGYgdjtcbiAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKClcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgeyBtdXRhYmxlIGJzdHIgOiBCaWdzdHJpbmcudFxuICA7IG11dGFibGUgcG9zIDogaW50XG4gIDsgbXV0YWJsZSBsZW4gOiBpbnRcbiAgOyBpbml0IDogQmlnc3RyaW5nLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IHJlc2l6ZSBidWYgbW9yZSA9XG4gIGxldCBtaW5fbGVuID0gYnVmLmxlbiArIG1vcmUgaW5cbiAgbGV0IG5ld19sZW4gPSBtaW5fbGVuICsgbWluX2xlbiBpblxuICBsZXQgbmV3X2J1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgbmV3X2xlbiBpblxuICBCaWdzdHJpbmcuYmxpdG8gfnNyYzpidWYuYnN0ciB+c3JjX2xlbjpidWYucG9zIH5kc3Q6bmV3X2J1ZiAoKTtcbiAgYnVmLmJzdHIgPC0gbmV3X2J1ZjtcbiAgYnVmLmxlbiA8LSBuZXdfbGVuXG47O1xuIiwiKCogU29tZSBjb2RlIHRha2VuIGZyb20gSU5SSUEncyBidWZmZXIgbW9kdWxlLiAqKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gQmlnc3RyaW5nXG5pbmNsdWRlIEJpZ2J1ZmZlcl9pbnRlcm5hbFxuXG5sZXQgX19pbnRlcm5hbCAodCA6IHQpID0gdFxubGV0IGxlbmd0aCB0ID0gdC5wb3NcblxuKCoge1sgbGV0IGludmFyaWFudCB0ID0gYXNzZXJ0ICh0LmxlbiA9PSBCaWdzdHJpbmcubGVuZ3RoIHQuYnN0cikgXX0gKilcblxubGV0IGNyZWF0ZSBuID1cbiAgbGV0IG4gPSBtYXggMSBuIGluXG4gIGxldCBic3RyID0gQmlnc3RyaW5nLmNyZWF0ZSBuIGluXG4gIHsgYnN0cjsgcG9zID0gMDsgbGVuID0gbjsgaW5pdCA9IGJzdHIgfVxuOztcblxubGV0IGNvbnRlbnRzIGJ1ZiA9IEJpZ3N0cmluZy50b19zdHJpbmcgYnVmLmJzdHIgfmxlbjpidWYucG9zXG5sZXQgY29udGVudHNfYnl0ZXMgYnVmID0gQmlnc3RyaW5nLnRvX2J5dGVzIGJ1Zi5ic3RyIH5sZW46YnVmLnBvc1xubGV0IGJpZ19jb250ZW50cyBidWYgPSBzdWJvIH5sZW46YnVmLnBvcyBidWYuYnN0clxubGV0IHZvbGF0aWxlX2NvbnRlbnRzIGJ1ZiA9IGJ1Zi5ic3RyXG5cbmxldCBhZGRfY2hhciBidWYgYyA9XG4gIGxldCBwb3MgPSBidWYucG9zIGluXG4gIGlmIHBvcyA+PSBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiAxO1xuICBidWYuYnN0ci57cG9zfSA8LSBjO1xuICBidWYucG9zIDwtIHBvcyArIDFcbjs7XG5cbm1vZHVsZSBUb19ieXRlcyA9XG4gIFRlc3RfYmxpdC5NYWtlX2Rpc3RpbmN0X2FuZF90ZXN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gY2hhclxuXG4gICAgICBsZXQgZXF1YWwgPSBDaGFyLmVxdWFsXG4gICAgICBsZXQgb2ZfYm9vbCBiID0gaWYgYiB0aGVuICdhJyBlbHNlICdiJ1xuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICAgICAgZm9yIF8gPSAxIHRvIGxlbiBkb1xuICAgICAgICAgIGFkZF9jaGFyIHQgJ2EnXG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBzZXQgdCBpIGMgPSBCaWdzdHJpbmcuc2V0IHQuYnN0ciBpIGNcbiAgICAgIGxldCBnZXQgdCBpID0gQmlnc3RyaW5nLmdldCB0LmJzdHIgaVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIEJ5dGVzXG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cblxuICAgICAgbGV0IHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgICAgICAgQmlnc3RyaW5nLlRvX2J5dGVzLnVuc2FmZV9ibGl0IH5zcmM6c3JjLmJzdHIgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuXG4gICAgICA7O1xuICAgIGVuZClcblxuaW5jbHVkZSBUb19ieXRlc1xubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKEJpZ2J1ZmZlcl9pbnRlcm5hbCkgKFRvX2J5dGVzKVxuXG5sZXQgbnRoIGJ1ZiBwb3MgPVxuICBpZiBwb3MgPCAwIHx8IHBvcyA+PSBidWYucG9zIHRoZW4gaW52YWxpZF9hcmcgXCJCaWdidWZmZXIubnRoXCIgZWxzZSBidWYuYnN0ci57cG9zfVxuOztcblxubGV0IGNsZWFyIGJ1ZiA9IGJ1Zi5wb3MgPC0gMFxuXG5sZXQgcmVzZXQgYnVmID1cbiAgYnVmLnBvcyA8LSAwO1xuICBidWYuYnN0ciA8LSBidWYuaW5pdDtcbiAgYnVmLmxlbiA8LSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zi5ic3RyXG47O1xuXG5sZXQgYWRkX3N1YnN0cmluZyBidWYgc3JjIH5wb3M6c3JjX3BvcyB+bGVuID1cbiAgaWYgc3JjX3BvcyA8IDAgfHwgbGVuIDwgMCB8fCBzcmNfcG9zID4gU3RyaW5nLmxlbmd0aCBzcmMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2J1ZmZlci5hZGRfc3Vic3RyaW5nXCI7XG4gIGxldCBuZXdfcG9zID0gYnVmLnBvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgbGVuO1xuICBCaWdzdHJpbmcuRnJvbV9zdHJpbmcuYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfc3ViYnl0ZXMgYnVmIHNyYyB+cG9zOnNyY19wb3MgfmxlbiA9XG4gIGlmIHNyY19wb3MgPCAwIHx8IGxlbiA8IDAgfHwgc3JjX3BvcyA+IEJ5dGVzLmxlbmd0aCBzcmMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2J1ZmZlci5hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX2J5dGVzLmJsaXQgfnNyYyB+c3JjX3BvcyB+bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcztcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2JpZ3N0cmluZyBidWYgc3JjID1cbiAgbGV0IGxlbiA9IEJpZ3N0cmluZy5sZW5ndGggc3JjIGluXG4gIGxldCBuZXdfcG9zID0gYnVmLnBvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgbGVuO1xuICBCaWdzdHJpbmcuYmxpdG8gfnNyYyB+c3JjX2xlbjpsZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zICgpO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfc3RyaW5nIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzcmMgaW5cbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX3N0cmluZy5ibGl0byB+c3JjIH5zcmNfbGVuOmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3MgKCk7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9ieXRlcyBidWYgc3JjID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBzcmMgaW5cbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX2J5dGVzLmJsaXRvIH5zcmMgfnNyY19sZW46bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcyAoKTtcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2J1ZmZlciBidWZfZHN0IGJ1Zl9zcmMgPVxuICBsZXQgbGVuID0gYnVmX3NyYy5wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBidWZfZHN0LnBvcyBpblxuICBsZXQgbmV3X3BvcyA9IGRzdF9wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zl9kc3QubGVuIHRoZW4gcmVzaXplIGJ1Zl9kc3QgbGVuO1xuICBCaWdzdHJpbmcuYmxpdG8gfnNyYzpidWZfc3JjLmJzdHIgfnNyY19sZW46bGVuIH5kc3Q6YnVmX2RzdC5ic3RyIH5kc3RfcG9zICgpO1xuICBidWZfZHN0LnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2Jpbl9wcm90IHQgKHdyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpIHggPVxuICBsZXQgbmV3X3BvcyA9XG4gICAgbWF0Y2ggd3JpdGVyLndyaXRlIHQuYnN0ciB+cG9zOnQucG9zIHggd2l0aFxuICAgIHwgcG9zIC0+IHBvc1xuICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICgqIEl0J3MgbGlrZWt5IHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyBkdWUgdG8gYSBidWZmZXIgb3ZlcmZsb3csIHNvIHJlc2l6ZSB0aGVcbiAgICAgICAgIGludGVybmFsIGJ1ZmZlciBhbmQgdHJ5IGFnYWluLiBUZWNobmljYWxseSB3ZSBjb3VsZCBtYXRjaCBvblxuICAgICAgICAgW0Jpbl9wcm90LkNvbW1vbi5CdWZmZXJfc2hvcnRdIG9ubHksIGhvd2V2ZXIgd2UgY2FuJ3QgZWFzaWx5IGVuZm9yY2UgdGhhdCBjdXN0b21cbiAgICAgICAgIGJpbl93cml0ZV94eHggZnVuY3Rpb25zIGRvIHJhaXNlIHRoaXMgcGFydGljdWxhciBleGNlcHRpb24gYW5kIG5vdFxuICAgICAgICAgW0ludmFsaWRfYXJndW1lbnRdIG9yIFtGYWlsdXJlXSBmb3IgaW5zdGFuY2UuICopXG4gICAgICBsZXQgc2l6ZSA9IHdyaXRlci5zaXplIHggaW5cbiAgICAgIGlmIHQucG9zICsgc2l6ZSA+IHQubGVuIHRoZW4gcmVzaXplIHQgc2l6ZTtcbiAgICAgIHdyaXRlci53cml0ZSB0LmJzdHIgfnBvczp0LnBvcyB4XG4gIGluXG4gIHQucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgfCAnKCcgLT4gJyknXG4gIHwgJ3snIC0+ICd9J1xuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbVxuICAgIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChOb3RfZm91bmRfc1xuICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICBcIkJpZ2J1ZmZlci5hZGRfc3Vic3RpdHV0ZTogY2Fubm90IGZpbmQgY2xvc2luZyBkZWxpbWl0ZXJcIlxuICAgICAgICAgICAgICAgKG9wZW5pbmcgOiBjaGFyKVxuICAgICAgICAgICAgICAgKGNsb3NpbmcgOiBjaGFyKVxuICAgICAgICAgICAgICAgKHN0YXJ0IDogaW50KVxuICAgICAgICAgICAgICAgc10pXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsIHMuW2ldIG9wZW5pbmdcbiAgICB0aGVuIGFkdmFuY2UgKGsgKyAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgaWYgQ2hhci5lcXVhbCBzLltpXSBjbG9zaW5nXG4gICAgdGhlbiBpZiBrID0gMCB0aGVuIGkgZWxzZSBhZHZhbmNlIChrIC0gMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbVxuICBpblxuICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcbjs7XG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbVxuICAgIHRoZW4gbGltXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdhJyAuLiAneidcbiAgICAgIHwgJ0EnIC4uICdaJ1xuICAgICAgfCAnMCcgLi4gJzknXG4gICAgICB8ICdfJ1xuICAgICAgfCAn6SdcbiAgICAgIHwgJ+AnXG4gICAgICB8ICfhJ1xuICAgICAgfCAn6CdcbiAgICAgIHwgJ/knXG4gICAgICB8ICfiJ1xuICAgICAgfCAn6idcbiAgICAgIHwgJ+4nXG4gICAgICB8ICf0J1xuICAgICAgfCAn+ydcbiAgICAgIHwgJ+snXG4gICAgICB8ICfvJ1xuICAgICAgfCAn/CdcbiAgICAgIHwgJ+cnXG4gICAgICB8ICfJJ1xuICAgICAgfCAnwCdcbiAgICAgIHwgJ8EnXG4gICAgICB8ICfIJ1xuICAgICAgfCAn2SdcbiAgICAgIHwgJ8InXG4gICAgICB8ICfKJ1xuICAgICAgfCAnzidcbiAgICAgIHwgJ9QnXG4gICAgICB8ICfbJ1xuICAgICAgfCAnyydcbiAgICAgIHwgJ88nXG4gICAgICB8ICfcJ1xuICAgICAgfCAnxycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgICAgfCBfIC0+IGkpXG4gIGluXG4gIGFkdmFuY2Ugc3RhcnQgKFN0cmluZy5sZW5ndGggcylcbjs7XG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0ID1cbiAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gIHwgKCcoJyB8ICd7JykgYXMgYyAtPlxuICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICBTdHJpbmcuc3ViIHMgfnBvczpuZXdfc3RhcnQgfmxlbjooc3RvcCAtIHN0YXJ0IC0gMSksIHN0b3AgKyAxXG4gICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgfCBfIC0+XG4gICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIChzdGFydCArIDEpIGluXG4gICAgU3RyaW5nLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooc3RvcCAtIHN0YXJ0KSwgc3RvcFxuOztcblxuKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgYWNjb3JkaW5nIHRvIHRoZSBmdW5jdGlvbiBtYXBwaW5nIGYuICopXG5sZXQgYWRkX3N1YnN0aXR1dGUgYnVmIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICckJyBhcyBjdXJyZW50IHdoZW4gQ2hhci5lcXVhbCBwcmV2aW91cyAnXFxcXCcgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmIGN1cnJlbnQ7XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCAnJCcgLT5cbiAgICAgICAgbGV0IGlkZW50LCBuZXh0X2kgPSBmaW5kX2lkZW50IHMgKGkgKyAxKSBpblxuICAgICAgICBhZGRfc3RyaW5nIGJ1ZiAoZiBpZGVudCk7XG4gICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgIHwgY3VycmVudCB3aGVuIENoYXIuZXF1YWwgcHJldmlvdXMgJ1xcXFwnIC0+XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiBjdXJyZW50O1xuICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgJ1xcXFwnIGFzIGN1cnJlbnQgLT5cbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8IGN1cnJlbnQgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmIGN1cnJlbnQ7XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKSlcbiAgaW5cbiAgc3Vic3QgJyAnIDBcbjs7XG5cbm1vZHVsZSBGb3JtYXQgPSBzdHJ1Y3RcbiAgbGV0IGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmID1cbiAgICBGb3JtYXQubWFrZV9mb3JtYXR0ZXIgKGZ1biBzIHBvcyBsZW4gLT4gYWRkX3N1YnN0cmluZyBidWYgcyB+cG9zIH5sZW4pIGlnbm9yZVxuICA7O1xuXG4gIGxldCBicHJpbnRmIGJ1ZiA9IEZvcm1hdC5rZnByaW50ZiBpZ25vcmUgKGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmKVxuZW5kXG5cbm1vZHVsZSBQcmludGYgPSBzdHJ1Y3RcbiAgbGV0IGJwcmludGYgYnVmID0gUHJpbnRmLmtzcHJpbnRmIChhZGRfc3RyaW5nIGJ1ZilcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5CeXRlc31bQmFzZS5CeXRlc119LiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID0gYnl0ZXMgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkJ5dGVzXG5lbmRcbndpdGggdHlwZSB0IDo9IHRcblxuaW5jbHVkZSBIZXhkdW1wLlMgd2l0aCB0eXBlIHQgOj0gdFxuaW5jbHVkZSBRdWlja2NoZWNrYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuKCoqIExpa2UgW2dlbl0sIGJ1dCBnZW5lcmF0ZSBieXRlcyB3aXRoIHRoZSBnaXZlbiBkaXN0cmlidXRpb24gb2YgY2hhcmFjdGVycy4gKilcbnZhbCBnZW4nIDogY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbZ2VuJ10sIGJ1dCBnZW5lcmF0ZSBieXRlcyB3aXRoIHRoZSBnaXZlbiBsZW5ndGguICopXG52YWwgZ2VuX3dpdGhfbGVuZ3RoIDogaW50IC0+IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIE5vdGUgdGhhdCBbYnl0ZXNdIGlzIGFscmVhZHkgc3RhYmxlIGJ5IGl0c2VsZiwgc2luY2UgYXMgYSBwcmltaXRpdmUgdHlwZSBpdCBpcyBhblxuICAgIGludGVncmFsIHBhcnQgb2YgdGhlIHNleHAgLyBiaW5faW8gcHJvdG9jb2wuIFtCeXRlcy5TdGFibGVdIGV4aXN0cyBvbmx5IHRvIHByb3ZpZGVcbiAgICBpbnRlcmZhY2UgdW5pZm9ybWl0eSB3aXRoIG90aGVyIHN0YWJsZSB0eXBlcy4gKilcbm1vZHVsZSBTdGFibGUgOiBzaWdcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgdHlwZSBub25yZWMgdCA9IHRcbiAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGluY2x1ZGVcbiAgICAgIFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kXG5lbmRcblxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmcuRiAoc3RydWN0XG4gICAgdHlwZSB0ID0gQmlnc3RyaW5nLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICAgIGxldCBjcmVhdGUgPSBCaWdzdHJpbmcuY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2M6Tm9uZVxuICAgIGxldCBsZW5ndGggPSBCaWdzdHJpbmcubGVuZ3RoXG4gICAgbGV0IGdldCA9IEJpZ3N0cmluZy5nZXRcblxuICAgIG1vZHVsZSBCbGl0ID0gTWFrZV9zdWJzdHJpbmcuQmxpdFxuXG4gICAgbGV0IGJsaXQgPSBCbGl0LmJpZ3N0cmluZ19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF90b19zdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19ieXRlc1xuICAgIGxldCBibGl0X3RvX2J5dGVzID0gQmxpdC5iaWdzdHJpbmdfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19iaWdzdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF9mcm9tX3N0cmluZyA9IEJsaXQuc3RyaW5nX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X2Zyb21fYmlnc3RyaW5nID0gQmxpdC5iaWdzdHJpbmdfYmlnc3RyaW5nXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RhYmxlX2ludGVybmFsXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgICAgICAgdmFsIGxhYmVsIDogc3RyaW5nXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgaW5kZXggOiBpbnRcbiAgICAgICAgOyBtaW5faW5kZXggOiBpbnRcbiAgICAgICAgOyBtYXhfaW5kZXggOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IGNyZWF0ZSBpbmRleCB+bWluIH5tYXggPVxuICAgICAgICBpZiBpbmRleCA8IG1pbiB8fCBpbmRleCA+IG1heFxuICAgICAgICB0aGVuXG4gICAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIChpbmRleCA6IGludCkgKG1pbiA6IGludCkgKG1heCA6IGludCldXG4gICAgICAgIGVsc2UgeyBpbmRleDsgbWluX2luZGV4ID0gbWluOyBtYXhfaW5kZXggPSBtYXggfVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIEZvcl9zZXhwYWJsZSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBzdHJpbmcgKiBpbnQgKiBzdHJpbmcgKiBpbnQgKiBzdHJpbmcgKiBpbnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgIChGb3Jfc2V4cGFibGUpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlIHQgPSBNLmxhYmVsLCB0LmluZGV4LCBcIm9mXCIsIHQubWluX2luZGV4LCBcInRvXCIsIHQubWF4X2luZGV4XG5cbiAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSAobGFiZWwsIGluZGV4LCBvZl8sIG1pbiwgdG9fLCBtYXgpID1cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmVxdWFsIGxhYmVsIE0ubGFiZWxcbiAgICAgICAgICAgICAgJiYgU3RyaW5nLmVxdWFsIG9mXyBcIm9mXCJcbiAgICAgICAgICAgICAgJiYgU3RyaW5nLmVxdWFsIHRvXyBcInRvXCJcbiAgICAgICAgICAgICAgdGhlbiBjcmVhdGUgaW5kZXggfm1pbiB+bWF4XG4gICAgICAgICAgICAgIGVsc2UgRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJpbnZhbGlkIHNleHAgZm9yIGluZGV4XCIgfmxhYmVsOk0ubGFiZWxdXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwX29mLCBjb21wYXJlXVxuICAgICAgICBlbmQpXG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgICAgICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxub3BlbiEgU3RkX2ludGVybmFsXG5cbm1vZHVsZSB0eXBlIFMgPSBCb3VuZGVkX2luZGV4X2ludGYuU1xuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHZhbCBsYWJlbCA6IHN0cmluZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gU3RhYmxlLlYxLk1ha2UgKE0pXG4gIGVuZFxuXG4gIG9wZW4gU3RhYmxlLlYxXG5cbiAgdHlwZSB0ID0gU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY3JlYXRlID0gU3RhYmxlLlYxLmNyZWF0ZVxuXG4gIGxldCBjcmVhdGVfYWxsIH5taW4gfm1heCA9XG4gICAgU2VxdWVuY2UudW5mb2xkIH5pbml0Om1pbiB+ZjooZnVuIGluZGV4IC0+XG4gICAgICBpZiBpbmRleCA8IG1pbiB8fCBpbmRleCA+IG1heCB0aGVuIE5vbmUgZWxzZSBTb21lIChjcmVhdGUgaW5kZXggfm1pbiB+bWF4LCBpbmRleCArIDEpKVxuICAgIHw+IFNlcXVlbmNlLnRvX2xpc3RcbiAgOztcblxuICBsZXQgaW5kZXggdCA9IHQuaW5kZXhcbiAgbGV0IG1heF9pbmRleCB0ID0gdC5tYXhfaW5kZXhcbiAgbGV0IG1pbl9pbmRleCB0ID0gdC5taW5faW5kZXhcbiAgbGV0IHplcm9fYmFzZWRfaW5kZXggdCA9IGluZGV4IHQgLSBtaW5faW5kZXggdFxuICBsZXQgbnVtX2luZGV4ZXMgdCA9IG1heF9pbmRleCB0IC0gbWluX2luZGV4IHQgKyAxXG5cbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBdXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBDb21tYW5kXG5cbm1vZHVsZSBBcmdfdHlwZSA9IHN0cnVjdFxuICBpbmNsdWRlIEFyZ190eXBlXG5cbiAgbW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRXhwb3J0XG5cbiAgICBsZXQgZGF0ZSA9IGNyZWF0ZSBEYXRlLm9mX3N0cmluZ1xuICAgIGxldCBwZXJjZW50ID0gY3JlYXRlIFBlcmNlbnQub2Zfc3RyaW5nXG4gICAgbGV0IGhvc3RfYW5kX3BvcnQgPSBjcmVhdGUgSG9zdF9hbmRfcG9ydC5vZl9zdHJpbmdcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBhcmFtID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIFBhcmFtIDpcbiAgICBzaWdcbiAgICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgUGFyYW0gd2l0aCBtb2R1bGUgQXJnX3R5cGUgOj0gUGFyYW0uQXJnX3R5cGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEFyZ190eXBlID0gQXJnX3R5cGVcbiAgaW5jbHVkZSBBcmdfdHlwZS5FeHBvcnRcbmVuZFxuXG5tb2R1bGUgU3BlYyA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBTcGVjIDpcbiAgICBzaWdcbiAgICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgU3BlYyB3aXRoIG1vZHVsZSBBcmdfdHlwZSA6PSBTcGVjLkFyZ190eXBlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBBcmdfdHlwZSA9IEFyZ190eXBlXG4gIGluY2x1ZGUgQXJnX3R5cGUuRXhwb3J0XG5lbmRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBMZXRfc3ludGF4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIExldF9zeW50YXhcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBQYXJhbVxuICBlbmRcbmVuZFxuIiwiKCoqIENvcmUgZ3JlYXRseSBleHBhbmRzIHRoZSBmdW5jdGlvbmFsaXR5IGF2YWlsYWJsZSBpbiBCYXNlIHdoaWxlIHN0aWxsIHJlbWFpbmluZ1xuICAgIHBsYXRmb3JtLWFnbm9zdGljLiAgQ29yZSBjaGFuZ2VzIG1vcmUgZnJlcXVlbnRseSAoaS5lLiwgaXMgbGVzcyBzdGFibGUpIHRoYW4gQmFzZS5cblxuICAgIFNvbWUgbW9kdWxlcyBhcmUgbWVyZSBleHRlbnNpb25zIG9mIHRoZWlyIGNvdW50ZXJwYXJ0cyBpbiBCYXNlLCB1c3VhbGx5IGFkZGluZyBnZW5lcmljXG4gICAgZnVuY3Rpb25hbGl0eSBieSBpbmNsdWRpbmcgZnVuY3RvcnMgdGhhdCBtYWtlIHRoZW0gYmluYWJsZSwgY29tcGFyYWJsZSwgc2V4cGFibGUsXG4gICAgYmxpdGFibGUsIGV0Yy4gIFRoZSBidWxrIG9mIENvcmUsIHRob3VnaCwgaXMgbW9kdWxlcyBwcm92aWRpbmcgZW50aXJlbHkgbmV3XG4gICAgZnVuY3Rpb25hbGl0eS4gKilcblxub3BlbiEgSW1wb3J0XG5cblxubW9kdWxlIEFwcGxpY2F0aXZlID0gQXBwbGljYXRpdmVcbm1vZHVsZSBBcmcgPSBBcmdcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5tb2R1bGUgQXZsdHJlZSA9IEF2bHRyZWVcbm1vZHVsZSBCYWNrdHJhY2UgPSBCYWNrdHJhY2Vcbm1vZHVsZSBCYWcgPSBCYWdcbm1vZHVsZSBCaWdidWZmZXIgPSBCaWdidWZmZXJcbm1vZHVsZSBCaWdzdHJpbmcgPSBCaWdzdHJpbmdcbm1vZHVsZSBCaWdzdWJzdHJpbmcgPSBCaWdzdWJzdHJpbmdcbm1vZHVsZSBCaW5fcHJvdCA9IENvcmVfYmluX3Byb3Rcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxubW9kdWxlIEJpbmFyeV9zZWFyY2ggPSBCaW5hcnlfc2VhcmNoXG5tb2R1bGUgQmluYXJ5X3NlYXJjaGFibGUgPSBCaW5hcnlfc2VhcmNoYWJsZVxubW9kdWxlIEJsYW5nID0gQmxhbmdcbm1vZHVsZSBCbGl0ID0gQmxpdFxubW9kdWxlIEJvb2wgPSBCb29sXG5tb2R1bGUgQm91bmRlZF9pbmRleCA9IEJvdW5kZWRfaW5kZXhcbm1vZHVsZSBCdWZmZXIgPSBCYXNlLkJ1ZmZlclxubW9kdWxlIEJ5dGVfdW5pdHMgPSBCeXRlX3VuaXRzXG5tb2R1bGUgQnl0ZXMgPSBCeXRlc1xubW9kdWxlIENhbWwgPSBDYW1sIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMy0wMV0gdXNlIFN0ZGxpYiBpbnN0ZWFkIG9mIENhbWxcIl1cbm1vZHVsZSBDaGFyID0gQ2hhclxubW9kdWxlIENvbW1hbmQgPSBDb21tYW5kX2ludGVybmFsXG5tb2R1bGUgQ29tcGFyYWJsZSA9IENvbXBhcmFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvclxubW9kdWxlIENvbXBhcmlzb25zID0gQ29tcGFyaXNvbnNcbm1vZHVsZSBDb250YWluZXIgPSBDb250YWluZXJcbm1vZHVsZSBDb250YWluZXJfaW50ZiA9IENvbnRhaW5lcl9pbnRmXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IENvbnRpbnVlX29yX3N0b3BcblxubW9kdWxlIENvcmVfa2VybmVsX3N0YWJsZSA9IFN0YWJsZVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA1XSBVc2UgW0NvcmVfc3RhYmxlXSAtLSBbQ29yZV9rZXJuZWxdIHdhcyByZW5hbWVkIGFzIFtDb3JlXVwiXVxuXG5tb2R1bGUgQ29yZV9zdGFibGUgPSBTdGFibGVcbm1vZHVsZSBEYXRlID0gRGF0ZVxubW9kdWxlIERheV9vZl93ZWVrID0gRGF5X29mX3dlZWtcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnXG5tb2R1bGUgRGVxdWUgPSBEZXF1ZVxubW9kdWxlIERlcml2aW5nX2hhc2ggPSBEZXJpdmluZ19oYXNoXG5tb2R1bGUgRGlnZXN0ID0gTWQ1IFtAQG9jYW1sLmRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNy0wNV0gVXNlIE1kNSBpbnN0ZWFkLlwiXVxubW9kdWxlIERvdWJseV9saW5rZWQgPSBEb3VibHlfbGlua2VkXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyXG5tb2R1bGUgRXBoZW1lcm9uID0gU3RkbGliLkVwaGVtZXJvblxubW9kdWxlIEVxdWFsID0gRXF1YWxcbm1vZHVsZSBFcnJvciA9IEVycm9yXG5tb2R1bGUgRXhuID0gQmFzZS5FeG5cbm1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWcgPSBFeHBlY3RfdGVzdF9jb25maWdcbm1vZHVsZSBGZGVxdWUgPSBGZGVxdWVcbm1vZHVsZSBGaWVsZCA9IEZpZWxkXG5tb2R1bGUgRmlsZW5hbWUgPSBGaWxlbmFtZVxubW9kdWxlIEZsb2F0ID0gRmxvYXRcbm1vZHVsZSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24gPSBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb25cbm1vZHVsZSBGbG9hdGFibGUgPSBGbG9hdGFibGVcbm1vZHVsZSBGbiA9IEZuXG5tb2R1bGUgRm9ybWF0dGVyID0gRm9ybWF0dGVyXG5tb2R1bGUgRnF1ZXVlID0gRnF1ZXVlXG5tb2R1bGUgR2MgPSBHY1xubW9kdWxlIEhhc2ggPSBIYXNoXG5tb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWVcbm1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0XG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZVxubW9kdWxlIEhhc2h0YmwgPSBIYXNodGJsXG5tb2R1bGUgSGFzaHRibF9pbnRmID0gSGFzaHRibF9pbnRmXG5tb2R1bGUgSGVhcF9ibG9jayA9IEhlYXBfYmxvY2tcbm1vZHVsZSBIZXhkdW1wID0gSGV4ZHVtcFxubW9kdWxlIEhleGR1bXBfaW50ZiA9IEhleGR1bXBfaW50ZlxubW9kdWxlIEhvc3RfYW5kX3BvcnQgPSBIb3N0X2FuZF9wb3J0XG5tb2R1bGUgSWRlbnRpZmlhYmxlID0gSWRlbnRpZmlhYmxlXG5tb2R1bGUgSW1tZWRpYXRlX29wdGlvbiA9IEltbWVkaWF0ZV9vcHRpb25cbm1vZHVsZSBJbW1lZGlhdGVfb3B0aW9uX2ludGYgPSBJbW1lZGlhdGVfb3B0aW9uX2ludGZcbm1vZHVsZSBJbl9jaGFubmVsID0gSW5fY2hhbm5lbFxubW9kdWxlIEluZGV4ZWRfY29udGFpbmVyID0gSW5kZXhlZF9jb250YWluZXJcbm1vZHVsZSBJbmZvID0gSW5mb1xubW9kdWxlIEludCA9IEludFxubW9kdWxlIEludDMyID0gSW50MzJcbm1vZHVsZSBJbnQ2MyA9IEludDYzXG5tb2R1bGUgSW50NjQgPSBJbnQ2NFxubW9kdWxlIEludF9jb252ZXJzaW9ucyA9IEludF9jb252ZXJzaW9uc1xubW9kdWxlIEludF9pbnRmID0gSW50X2ludGZcbm1vZHVsZSBJbnRfbWF0aCA9IEludF9tYXRoXG5tb2R1bGUgSW50YWJsZSA9IEludGFibGVcbm1vZHVsZSBJbnRlcmZhY2VzID0gSW50ZXJmYWNlc1xubW9kdWxlIEludmFyaWFudCA9IEludmFyaWFudFxubW9kdWxlIExhenkgPSBMYXp5XG5tb2R1bGUgTGlua2VkX3F1ZXVlID0gTGlua2VkX3F1ZXVlXG5tb2R1bGUgTGlzdCA9IExpc3Rcbm1vZHVsZSBNYXAgPSBNYXBcbm1vZHVsZSBNYXBfaW50ZiA9IE1hcF9pbnRmXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZFxubW9kdWxlIE1kNSA9IE1kNVxubW9kdWxlIE1lbW8gPSBNZW1vXG5tb2R1bGUgTW9uYWQgPSBNb25hZFxubW9kdWxlIE1vbnRoID0gTW9udGhcblxubW9kdWxlIE11dGV4ID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE5LTAyXSBVc2UgW0Vycm9yX2NoZWNraW5nX211dGV4XSBvciBbQ2FtbF90aHJlYWRzLk11dGV4XVwiXVxuXG5tb2R1bGUgTmF0aXZlaW50ID0gTmF0aXZlaW50XG5tb2R1bGUgTm9fcG9seW1vcnBoaWNfY29tcGFyZSA9IE5vX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBOb3RoaW5nID0gTm90aGluZ1xubW9kdWxlIE9ubHlfaW5fdGVzdCA9IE9ubHlfaW5fdGVzdFxubW9kdWxlIE9wdGlvbiA9IE9wdGlvblxubW9kdWxlIE9wdGlvbl9hcnJheSA9IE9wdGlvbl9hcnJheVxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IE9wdGlvbmFsX3N5bnRheFxubW9kdWxlIE9wdGlvbmFsX3N5bnRheF9pbnRmID0gT3B0aW9uYWxfc3ludGF4X2ludGZcbm1vZHVsZSBPcl9lcnJvciA9IE9yX2Vycm9yXG5tb2R1bGUgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbiA9IE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb25cbm1vZHVsZSBPcmRlcmluZyA9IE9yZGVyaW5nXG5tb2R1bGUgT3V0X2NoYW5uZWwgPSBPdXRfY2hhbm5lbFxubW9kdWxlIFBlcmNlbnQgPSBQZXJjZW50XG5tb2R1bGUgUGVybXMgPSBQZXJtc1xubW9kdWxlIFBpZCA9IFBpZFxubW9kdWxlIFBvbHkgPSBQb2x5XG5cbm1vZHVsZSBQb3Bjb3VudCA9IEJhc2UuUG9wY291bnRcbltAQHdhcm5pbmcgXCItM1wiXVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTEwXSB1c2UgW3BvcGNvdW50XSBmdW5jdGlvbnMgaW4gaW5kaXZpZHVhbCBpbnQgbW9kdWxlc1wiXVxuXG5tb2R1bGUgUHJldHR5X3ByaW50ZXIgPSBQcmV0dHlfcHJpbnRlclxubW9kdWxlIFByaW50ZXhjID0gUHJpbnRleGNcbm1vZHVsZSBQcmludGYgPSBQcmludGZcbm1vZHVsZSBRdWV1ZSA9IFF1ZXVlXG5tb2R1bGUgUXVpY2tjaGVjayA9IFF1aWNrY2hlY2tcbm1vZHVsZSBRdWlja2NoZWNrX2ludGYgPSBRdWlja2NoZWNrX2ludGZcbm1vZHVsZSBRdWlja2NoZWNrYWJsZSA9IFF1aWNrY2hlY2thYmxlXG5tb2R1bGUgUmFuZG9tID0gQmFzZS5SYW5kb21cbm1vZHVsZSBSZWYgPSBSZWZcbm1vZHVsZSBSZXN1bHQgPSBSZXN1bHRcbm1vZHVsZSBSb2J1c3RseV9jb21wYXJhYmxlID0gUm9idXN0bHlfY29tcGFyYWJsZVxubW9kdWxlIFNlcXVlbmNlID0gU2VxdWVuY2Vcbm1vZHVsZSBTZXQgPSBTZXRcbm1vZHVsZSBTZXRfaW50ZiA9IFNldF9pbnRmXG5tb2R1bGUgU2V0X29uY2UgPSBTZXRfb25jZVxubW9kdWxlIFNleHBfbWF5YmUgPSBTZXhwLlNleHBfbWF5YmVcblxubW9kdWxlIFNleHAgPSBTZXhwXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZVxubW9kdWxlIFNpZ24gPSBTaWduXG5tb2R1bGUgU2lnbmFsID0gU2lnbmFsXG5tb2R1bGUgU2lnbl9vcl9uYW4gPSBTaWduX29yX25hblxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb25cbm1vZHVsZSBTcGxpdHRhYmxlX3JhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tXG5tb2R1bGUgU3RhYmxlX2NvbXBhcmFibGUgPSBTdGFibGVfY29tcGFyYWJsZVxubW9kdWxlIFN0YWJsZV91bml0X3Rlc3QgPSBTdGFibGVfdW5pdF90ZXN0XG5tb2R1bGUgU3RhY2sgPSBTdGFja1xubW9kdWxlIFN0YWdlZCA9IEJhc2UuU3RhZ2VkXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nX2lkID0gU3RyaW5nX2lkXG5tb2R1bGUgU3RyaW5nYWJsZSA9IFN0cmluZ2FibGVcbm1vZHVsZSBTdWJzdHJpbmcgPSBTdWJzdHJpbmdcbm1vZHVsZSBTdWJzdHJpbmdfaW50ZiA9IFN1YnN0cmluZ19pbnRmXG5tb2R1bGUgU3lzID0gQ29yZV9zeXNcblxubW9kdWxlIFRocmVhZCA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNF0gVXNlIFtDb3JlX3RocmVhZF0gb3IgW0NhbWxfdGhyZWFkcy5UaHJlYWRdXCJdXG5cbm1vZHVsZSBUaW1lID0gVGltZV9mbG9hdFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTExXSBVc2UgW1RpbWVfZmxvYXRdIG9yIFtUaW1lX2Zsb2F0X3VuaXhdIGluc3RlYWRcIl1cblxubW9kdWxlIFRpbWVfZmxvYXQgPSBUaW1lX2Zsb2F0XG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNcbm1vZHVsZSBUdXBsZSA9IFR1cGxlXG5tb2R1bGUgVHVwbGUyID0gVHVwbGUuVDJcbm1vZHVsZSBUdXBsZTMgPSBUdXBsZS5UM1xubW9kdWxlIFR5cGVfZXF1YWwgPSBUeXBlX2VxdWFsXG5tb2R1bGUgVHlwZV9pbW1lZGlhY3kgPSBUeXBlX2ltbWVkaWFjeVxubW9kdWxlIFVjaGFyID0gVWNoYXJcbm1vZHVsZSBVbmlmb3JtX2FycmF5ID0gVW5pZm9ybV9hcnJheVxubW9kdWxlIFVuaW9uX2ZpbmQgPSBVbmlvbl9maW5kXG5tb2R1bGUgVW5pcXVlX2lkID0gVW5pcXVlX2lkXG5tb2R1bGUgVW5pdCA9IFVuaXRcbm1vZHVsZSBVbml0X29mX3RpbWUgPSBVbml0X29mX3RpbWVcbm1vZHVsZSBVbml2X21hcCA9IFVuaXZfbWFwXG5cbm1vZHVsZSBVbml4ID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZFxuICBcIltzaW5jZSAyMDIwLTAzXSBDb3JlIHNoYWRvd3MgVW5peC4gVXNlIENvcmVfdW5peCwgd2hpY2ggb3ZlcnJpZGVzIHNvbWUgb2YgVW5peCdzIFxcXG4gICBiZWhhdmlvci4gSWYgbmVjZXNzYXJ5LCBVbml4IGlzIGF2YWlsYWJsZSBhbmQgdW5zaGFkb3dlZCBhcyBDYW1sX3VuaXguXCJdXG5cbm1vZHVsZSBWYWxpZGF0ZSA9IFZhbGlkYXRlXG5tb2R1bGUgVmFsaWRhdGVkID0gVmFsaWRhdGVkXG5tb2R1bGUgVmFyaWFudCA9IFZhcmlhbnRcbm1vZHVsZSBXZWFrID0gV2Vha1xubW9kdWxlIFdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBXb3JkX3NpemVcblxubW9kdWxlIHR5cGUgVW5pcXVlX2lkID0gVW5pcXVlX2lkLklkXG5cbmluY2x1ZGUgVCAoKiogQG9wZW4gKilcblxuaW5jbHVkZSBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgTm90X2ZvdW5kXG5cbigqKiB7MiBUb3AtbGV2ZWwgdmFsdWVzfSAqKVxuXG5leHRlcm5hbCBwaHlzX2VxdWFsIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcVwiXG5cbnR5cGUgJ2EgX21heWJlX2JvdW5kID0gJ2EgTWF5YmVfYm91bmQudCA9XG4gIHwgSW5jbCBvZiAnYVxuICB8IEV4Y2wgb2YgJ2FcbiAgfCBVbmJvdW5kZWRcblxubGV0IGFtX3J1bm5pbmdfdGVzdCA9IGFtX3J1bm5pbmdfdGVzdFxubGV0IGRvZXNfcmFpc2UgPSBFeG4uZG9lc19yYWlzZVxubGV0IHNlYyA9IFRpbWVfZmxvYXQuU3Bhbi5vZl9zZWNcbmxldCAoIF4vICkgPSBGaWxlbmFtZS5jb25jYXRcblxuKCoqIFdlIHBlcmZvcm0gdGhlc2Ugc2lkZSBlZmZlY3RzIGhlcmUgYmVjYXVzZSB3ZSB3YW50IHRoZW0gdG8gcnVuIGZvciBhbnkgY29kZSB0aGF0IHVzZXNcbiAgICBbQ29yZV0uICBJZiB0aGlzIHdlcmUgaW4gYW5vdGhlciBtb2R1bGUgaW4gW0NvcmVdIHRoYXQgd2FzIG5vdCB1c2VkIGluIHNvbWUgcHJvZ3JhbSxcbiAgICB0aGVuIHRoZSBzaWRlIGVmZmVjdHMgbWlnaHQgbm90IGJlIHJ1biBpbiB0aGF0IHByb2dyYW0uICBUaGlzIHdpbGwgcnVuIGFzIGxvbmcgYXMgdGhlXG4gICAgcHJvZ3JhbSByZWZlcnMgdG8gYXQgbGVhc3Qgb25lIHZhbHVlIGRpcmVjdGx5IGluIENvcmU7IHJlZmVycmluZyB0byB2YWx1ZXMgaW5cbiAgICBbQ29yZS5Cb29sXSwgZm9yIGV4YW1wbGUsIGlzIG5vdCBzdWZmaWNpZW50LiAqKVxubGV0ICgpID0gRXhuLmluaXRpYWxpemVfbW9kdWxlICgpXG5cbigqKiBUbyBiZSB1c2VkIGluIGltcGxlbWVudGluZyBDb3JlLCBidXQgbm90IGJ5IGVuZCB1c2Vycy4gKilcbm1vZHVsZSBDb3JlX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIERpZ2l0X3N0cmluZ19oZWxwZXJzID0gRGlnaXRfc3RyaW5nX2hlbHBlcnNcbiAgbW9kdWxlIFRpbWVfem9uZSA9IFpvbmVcbiAgbW9kdWxlIE9mZGF5X2hlbHBlcnMgPSBPZmRheV9oZWxwZXJzXG4gIG1vZHVsZSBTcGFuX2Zsb2F0ID0gU3Bhbl9mbG9hdFxuXG4gIG1vZHVsZSBCaWdidWZmZXJfaW50ZXJuYWwgPSBCaWdidWZmZXJfaW50ZXJuYWxcbiAgbW9kdWxlIFN0YWJsZV9pbnRlcm5hbCA9IFN0YWJsZV9pbnRlcm5hbFxuICBtb2R1bGUgU3RkX2ludGVybmFsID0gU3RkX2ludGVybmFsXG5cbiAgbW9kdWxlIFRpbWVfbnNfYWx0ZXJuYXRlX3NleHAgPSBUaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5lbmRcblxubW9kdWxlIENvcmVfa2VybmVsX3ByaXZhdGUgPSBDb3JlX3ByaXZhdGVcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNV0gVXNlIFtDb3JlX3ByaXZhdGVdIC0tIFtDb3JlX2tlcm5lbF0gd2FzIHJlbmFtZWQgYXMgW0NvcmVdXCJdXG4iLCJpbmNsdWRlIENvbW1hbmQuU2hhcGVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuISBTdGFibGVfaW50ZXJuYWxcbiAgb3BlbiEgUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cblxuICBtb2R1bGUgQW5vbnMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgR3JhbW1hciA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ29tbWFuZC5TaGFwZS5TdGFibGUuQW5vbnMuR3JhbW1hci5WMVxuXG4gICAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkFub25zLkdyYW1tYXIuVjEudCA9XG4gICAgICAgICAgfCBaZXJvXG4gICAgICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICAgICAgfCBNYW55IG9mIHRcbiAgICAgICAgICB8IE1heWJlIG9mIHRcbiAgICAgICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgICAgWyVleHBlY3Qge3wgYTE3ZmQzNGVjMjEzZTUwOGRiNDUwZjY0NjlmN2ZlOTkgfH1dXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5Bbm9ucy5WMlxuXG4gICAgICB0eXBlIHQgPSBDb21tYW5kLlNoYXBlLlN0YWJsZS5Bbm9ucy5WMi50ID1cbiAgICAgICAgfCBVc2FnZSBvZiBzdHJpbmdcbiAgICAgICAgfCBHcmFtbWFyIG9mIEdyYW1tYXIuVjEudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMDgxZDllYzE2NzkwM2Y4ZjhjNDljYmY4ZTNmYjNhNjYgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRmxhZ19pbmZvID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkZsYWdfaW5mby5WMVxuXG4gICAgICB0eXBlIHQgPSBDb21tYW5kLlNoYXBlLlN0YWJsZS5GbGFnX2luZm8uVjEudCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IGRvYyA6IHN0cmluZ1xuICAgICAgICA7IGFsaWFzZXMgOiBzdHJpbmcgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCBiZDhkNmZiN2E2NjJkMmMwYjVlMGQyMDI2YzZkMmQyMSB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBCYXNlX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQ29tbWFuZC5TaGFwZS5TdGFibGUuQmFzZV9pbmZvLlYyXG5cbiAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkJhc2VfaW5mby5WMi50ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IGFub25zIDogQW5vbnMuVjIudFxuICAgICAgICA7IGZsYWdzIDogRmxhZ19pbmZvLlYxLnQgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA4ZmFhYzFlOGQ5ZGViMGJhYWE1NmFjOGViZjg1YjQ5OCB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBHcm91cF9pbmZvID0gc3RydWN0XG4gICAgdHlwZSBhID0gRHVtbXlfdHlwZV9iZWNhdXNlX3dlX2Nhbm5vdF9kaWdlc3RfdHlwZV9jb25zdHJ1Y3RvcnNfb25seV9jb25jcmV0ZV90eXBlc1xuICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5Hcm91cF9pbmZvLlYyXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIENvbW1hbmQuU2hhcGUuU3RhYmxlLkdyb3VwX2luZm8uVjIudCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgTGlzdC5TdGFibGUuVjEudCBMYXp5LlN0YWJsZS5WMS50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogYSB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMmNjM2VlYjU4ZDEyZDhmZTQ0MDAwMDllNTkyZDc4MjcgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRXhlY19pbmZvID0gc3RydWN0XG4gICAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkV4ZWNfaW5mby5WM1xuXG4gICAgICB0eXBlIHQgPSBDb21tYW5kLlNoYXBlLlN0YWJsZS5FeGVjX2luZm8uVjMudCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgICAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IGMwYzgyNTZlOTIzOGNkZDhmMmVjMWY4Nzg1ZTAyYWUwIHx9XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEZ1bGx5X2ZvcmNlZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5GdWxseV9mb3JjZWQuVjFcblxuICAgICAgdHlwZSB0ID0gQ29tbWFuZC5TaGFwZS5TdGFibGUuRnVsbHlfZm9yY2VkLlYxLnQgPVxuICAgICAgICB8IEJhc2ljIG9mIEJhc2VfaW5mby5WMi50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYyLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMy50ICogdFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgOTgxMTU0ZWYzOTE5NDM3YzZjODIyNjE5ODgyODQxZDQgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBUb2tlbiA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgSWRlbnRcbiAgICB8IEZ1bmN0aW9uXG4gICAgfCBBdGtleXdvcmRcbiAgICB8IEhhc2hcbiAgICB8IFN0cmluZ1xuICAgIHwgVXJpXG4gICAgfCBEZWxpbVxuICAgIHwgTnVtYmVyXG4gICAgfCBQZXJjZW50YWdlXG4gICAgfCBEaW1lbnNpb25cbiAgICB8IFdoaXRlX3NwYWNlXG4gICAgfCBDb2xvblxuICAgIHwgU2VtaV9jb2xvblxuICAgIHwgQ29tbWFcbiAgICB8IExicmFja2V0XG4gICAgfCBSYnJhY2tldFxuICAgIHwgTHBhcmVuXG4gICAgfCBScGFyZW5cbiAgICB8IExjdXJseVxuICAgIHwgUmN1cmx5XG4gICAgfCBDb21tZW50XG4gICAgfCBFb2ZcbiAgICB8IEVycm9yXG4gIFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmVdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuZW5kXG5cbnR5cGUgdCA9XG4gIHsgcyA6IHN0cmluZ1xuICA7IG11dGFibGUgb2ZmIDogaW50XG4gIDsgKCogc3RhcnQgb2YgdGhlIGN1cnJlbnQgdG9rZW4gKilcbiAgICBtdXRhYmxlIGxlbiA6IGludFxuICA7ICgqIGxlbmd0aCBvZiB0aGUgY3VycmVudCB0b2tlbiAqKVxuICAgIG11dGFibGUgY3VycmVudCA6IFRva2VuLnRcbiAgfVxuXG50eXBlIG1hcmsgPSBNYXJrIG9mIGludCBbQEB1bmJveGVkXVxuXG5sZXQgbWFyayB0ID0gTWFyayB0LmxlblxubGV0IHNvdXJjZSB0ID0gdC5zXG5sZXQgbmV4dF9wb3MgdCA9IHQub2ZmICsgdC5sZW5cbmxldCBpc19uZXh0X2VvZiB0ID0gbmV4dF9wb3MgdCA+PSBTdHJpbmcubGVuZ3RoIHQuc1xubGV0IG5leHRfY2hhciB0ID0gdC5zLltuZXh0X3BvcyB0XVxubGV0IHJlc2V0IHQgKE1hcmsgdikgPSB0LmxlbiA8LSB2XG5sZXQgY29uc3VtZV8xIHQgPSB0LmxlbiA8LSB0LmxlbiArIDFcbmxldCBjb25zdW1lX24gdCBuID0gdC5sZW4gPC0gdC5sZW4gKyBuXG5cbmxldCBvbmVfY2hhcl90b2tlbiB0IHRvayA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgY29uc3VtZV8xIHQ7XG4gIHQuY3VycmVudCA8LSB0b2tcbjs7XG5cbmV4Y2VwdGlvbiBFcnJvcl9oYXBwZW5lZFxuXG5sZXQgZXJyb3IgdCA9XG4gIHQuY3VycmVudCA8LSBFcnJvcjtcbiAgcmFpc2UgRXJyb3JfaGFwcGVuZWRcbjs7XG5cbmxldCBhY2NlcHQgdCBmID1cbiAgaWYgKG5vdCAoaXNfbmV4dF9lb2YgdCkpICYmIGYgKG5leHRfY2hhciB0KVxuICB0aGVuIChcbiAgICBjb25zdW1lXzEgdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG47O1xuXG5sZXQgYWNjZXB0X2NoYXIgdCBjaCA9IGFjY2VwdCB0IChDaGFyLmVxdWFsIGNoKVxuXG5sZXQgYWNjZXB0X3N0cmluZyB0IHN0ciA9XG4gIGlmIFN0cmluZy5sZW5ndGggc3RyID0gMFxuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IHBvcyA9IG5leHRfcG9zIHQgaW5cbiAgICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgaWYgcG9zICsgc3RyX2xlbiA+IFN0cmluZy5sZW5ndGggdC5zXG4gICAgdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgU3RyaW5nLmlzX3N1YnN0cmluZ19hdCB0LnMgfnBvcyB+c3Vic3RyaW5nOnN0clxuICAgIHRoZW4gKFxuICAgICAgY29uc3VtZV9uIHQgc3RyX2xlbjtcbiAgICAgIHRydWUpXG4gICAgZWxzZSBmYWxzZSlcbjs7XG5cbmxldCBleHBlY3QgdCBmID0gaWYgYWNjZXB0IHQgZiB0aGVuICgpIGVsc2UgZXJyb3IgdFxubGV0IGV4cGVjdF9jaGFyIHQgY2ggPSBleHBlY3QgdCAoQ2hhci5lcXVhbCBjaClcblxubGV0IG1hbnkgdCBmID1cbiAgd2hpbGUgKG5vdCAoaXNfbmV4dF9lb2YgdCkpICYmIGYgKG5leHRfY2hhciB0KSBkb1xuICAgIGNvbnN1bWVfMSB0XG4gIGRvbmVcbjs7XG5cbmxldCBtYW55MSB0IGYgPVxuICBleHBlY3QgdCBmO1xuICBtYW55IHQgZlxuOztcblxubGV0IHBsdXNfb3JfbWludXMgPSBmdW5jdGlvblxuICB8ICctJyB8ICcrJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IG5tc3RhcnQgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJ18nIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgbm1jaGFyID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICdfJyB8ICcwJyAuLiAnOScgfCAnLScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpZGVudCB0ID1cbiAgaWYgYWNjZXB0X2NoYXIgdCAnLSdcbiAgdGhlblxuICAgIGlmIGFjY2VwdF9jaGFyIHQgJy0nXG4gICAgdGhlbiBtYW55IHQgbm1jaGFyXG4gICAgZWxzZSAoXG4gICAgICBleHBlY3QgdCBubXN0YXJ0O1xuICAgICAgbWFueSB0IG5tY2hhcilcbiAgZWxzZSAoXG4gICAgZXhwZWN0IHQgbm1zdGFydDtcbiAgICBtYW55IHQgbm1jaGFyKVxuOztcblxubGV0IGlkZW50X29yX2Z1bmN0aW9uIHQgPVxuICBpZGVudCB0O1xuICBpZiBhY2NlcHRfY2hhciB0ICcoJyB0aGVuIHQuY3VycmVudCA8LSBGdW5jdGlvbiBlbHNlIHQuY3VycmVudCA8LSBJZGVudFxuOztcblxubGV0IGlzX3doaXRlc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxuJyB8ICdcXHgwYycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBxdW90ZWRfc3RyaW5nJyB0IH5xdW90ZSA9XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpIHF1b3RlKTtcbiAgY29uc3VtZV8xIHQ7XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWFueSB0IChmdW5jdGlvblxuICAgICAgfCAnXFxuJyB8ICdcXHInIHwgJ1xceDBjJyB8ICdcXFxcJyAtPiBmYWxzZVxuICAgICAgfCBjIHdoZW4gQ2hhci5lcXVhbCBjIHF1b3RlIC0+IGZhbHNlXG4gICAgICB8IF8gLT4gdHJ1ZSk7XG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnXFxcXCdcbiAgICB0aGVuXG4gICAgICBpZiBhY2NlcHRfY2hhciB0IHF1b3RlXG4gICAgICB0aGVuIGxvb3AgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBuZXh0X2NoYXIgdCB3aXRoXG4gICAgICAgIHwgJ1xcbicgfCAnXFx4MGMnIC0+XG4gICAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICAgbG9vcCAoKVxuICAgICAgICB8ICdcXHInIC0+XG4gICAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICAgaWdub3JlIChhY2NlcHRfY2hhciB0ICdcXG4nIDogYm9vbCk7XG4gICAgICAgICAgbG9vcCAoKVxuICAgICAgICB8IF9jIC0+XG4gICAgICAgICAgKCogSGFuZGxlIHRoZSBcImVzY2FwZVwiIHJ1bGU6XG4gICAgICAgICAgICAge3ZcbiAgICAgICAgICAgICAgICB1bmljb2RlOiBcXFxcWzAtOWEtZl17MSw2fShcXHJcXG58WyBcXG5cXHJcXHRcXGZdKT9cbiAgICAgICAgICAgICAgICBlc2NhcGUgOiB7dW5pY29kZX18XFxcXFteXFxuXFxyXFxmMC05YS1mXVxuICAgICAgICAgICAgICB2fVxuICAgICAgICAgICopXG4gICAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKTtcbiAgZXhwZWN0X2NoYXIgdCBxdW90ZVxuOztcblxubGV0IHN0YXJ0X251bSB0ID1cbiAgbGV0IGN1ciA9IG1hcmsgdCBpblxuICBsZXQgYiA9XG4gICAgaWdub3JlIChhY2NlcHQgdCBwbHVzX29yX21pbnVzIDogYm9vbCk7XG4gICAgaWdub3JlIChhY2NlcHRfY2hhciB0ICcuJyA6IGJvb2wpO1xuICAgIGFjY2VwdCB0IENoYXIuaXNfZGlnaXRcbiAgaW5cbiAgcmVzZXQgdCBjdXI7XG4gIGJcbjs7XG5cbmxldCBzdGFydF9pZGVudCB+cHJlZml4IHQgPVxuICBsZXQgY3VyID0gbWFyayB0IGluXG4gIGxldCBiID1cbiAgICBhY2NlcHRfc3RyaW5nIHQgcHJlZml4XG4gICAgJiZcbiAgICBpZiBhY2NlcHRfY2hhciB0ICctJyB0aGVuIGFjY2VwdF9jaGFyIHQgJy0nIHx8IGFjY2VwdCB0IG5tc3RhcnQgZWxzZSBhY2NlcHQgdCBubXN0YXJ0XG4gIGluXG4gIHJlc2V0IHQgY3VyO1xuICBiXG47O1xuXG5sZXQgcXVvdGVkX3N0cmluZyB0IH5xdW90ZSA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgcXVvdGVkX3N0cmluZycgdCB+cXVvdGU7XG4gIHQuY3VycmVudCA8LSBTdHJpbmdcbjs7XG5cbmxldCBleHBvbmVudGlhbF9wYXJ0IHQgPVxuICBsZXQgbWFyayA9IG1hcmsgdCBpblxuICBpZiBhY2NlcHQgdCAoZnVuY3Rpb25cbiAgICB8ICdlJyB8ICdFJyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlKVxuICB0aGVuXG4gICAgaWYgYWNjZXB0IHQgcGx1c19vcl9taW51c1xuICAgIHRoZW4gbWFueTEgdCBDaGFyLmlzX2RpZ2l0XG4gICAgZWxzZSBpZiBhY2NlcHQgdCBDaGFyLmlzX2RpZ2l0XG4gICAgdGhlbiBtYW55IHQgQ2hhci5pc19kaWdpdFxuICAgIGVsc2VcbiAgICAgICgqIEJhY2t0cmFjayBpZiB0aGVyZSBhcmUgbm8gZGlnaXRzIG9yIHNpZ25zIGFmdGVyIHRoZSAnZScgYmVjYXVzZVxuICAgICAgICAgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgJ2UnIHdhcyBhY3R1YWxseSBhIHBhcnQgb2Ygc29tZXRoaW5nIGVsc2UuIEZvclxuICAgICAgICAgZXhhbXBsZSwgdGhlICdlJyBjb3VsZCBiZSBwYXJ0IG9mIGFuICdlbScgb3IgJ2VuJyBkaW1lbnNpb24gaW5zdGVhZFxuICAgICAgICAgb2YgYmVnaW5uaW5nIHRoZSBleHBvbmVudGlhbCBwYXJ0IG9mIGEgc2NpZW50aWZpYyBub3RhdGlvbiBudW1iZXIuXG5cbiAgICAgICAgIEV4YW1wbGU6IDEuMmUzIGlzIHNjaWVudGlmaWMgbm90YXRpb24sIGJ1dCAxLjJlbSBpcyBhIG51bWJlciB3aXRoIGFcbiAgICAgICAgIGRpbWVuc2lvbi4gKilcbiAgICAgIHJlc2V0IHQgbWFya1xuOztcblxubGV0IG51bSB0ID1cbiAgaWdub3JlIChhY2NlcHQgdCBwbHVzX29yX21pbnVzIDogYm9vbCk7XG4gIGlmIGFjY2VwdF9jaGFyIHQgJy4nXG4gIHRoZW4gbWFueTEgdCBDaGFyLmlzX2RpZ2l0XG4gIGVsc2UgKFxuICAgIG1hbnkxIHQgQ2hhci5pc19kaWdpdDtcbiAgICBpZiBhY2NlcHRfY2hhciB0ICcuJyB0aGVuIG1hbnkxIHQgQ2hhci5pc19kaWdpdCk7XG4gIGV4cG9uZW50aWFsX3BhcnQgdFxuOztcblxubGV0IG51bWJlcl9vcl9wZXJjZW50YWdlX29yX2RpbWVuc2lvbiB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBudW0gdDtcbiAgaWYgYWNjZXB0X2NoYXIgdCAnJSdcbiAgdGhlbiB0LmN1cnJlbnQgPC0gUGVyY2VudGFnZVxuICBlbHNlIGlmIHN0YXJ0X2lkZW50IH5wcmVmaXg6XCJcIiB0XG4gIHRoZW4gKFxuICAgIGlkZW50IHQ7XG4gICAgdC5jdXJyZW50IDwtIERpbWVuc2lvbilcbiAgZWxzZSB0LmN1cnJlbnQgPC0gTnVtYmVyXG47O1xuXG5sZXQgaGFzaF9vcl9kZWxpbSB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBhc3NlcnQgKENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnIycpO1xuICBjb25zdW1lXzEgdDtcbiAgaWYgYWNjZXB0IHQgbm1jaGFyXG4gIHRoZW4gKFxuICAgIG1hbnkxIHQgbm1jaGFyO1xuICAgIHQuY3VycmVudCA8LSBIYXNoKVxuICBlbHNlIHQuY3VycmVudCA8LSBEZWxpbVxuOztcblxubGV0IGF0a2V5d29yZCB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBhc3NlcnQgKENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnQCcpO1xuICBjb25zdW1lXzEgdDtcbiAgaWRlbnQgdDtcbiAgdC5jdXJyZW50IDwtIEF0a2V5d29yZFxuOztcblxubGV0IHVyaV9vcl9pZGVudF9vcl9mdW5jdGlvbiB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBhc3NlcnQgKENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAndScpO1xuICBpZiBhY2NlcHRfc3RyaW5nIHQgXCJ1cmwoXCJcbiAgdGhlbiAoXG4gICAgbGV0IG0gPSBtYXJrIHQgaW5cbiAgICBtYW55IHQgaXNfd2hpdGVzcGFjZTtcbiAgICBpZiBDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJ1wiJyB8fCBDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJ1xcJydcbiAgICB0aGVuIChcbiAgICAgIHJlc2V0IHQgbTtcbiAgICAgIHQuY3VycmVudCA8LSBGdW5jdGlvbilcbiAgICBlbHNlIChcbiAgICAgIG1hbnkgdCAoZnVuY3Rpb25cbiAgICAgICAgfCAnKScgfCAnICcgLT4gZmFsc2VcbiAgICAgICAgfCAnXFwnJyB8ICdcIicgfCAnKCcgLT4gZXJyb3IgdFxuICAgICAgICB8IGMgd2hlbiBDaGFyLmlzX3ByaW50IGMgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZXJyb3IgdCk7XG4gICAgICBtYW55IHQgaXNfd2hpdGVzcGFjZTtcbiAgICAgIGV4cGVjdF9jaGFyIHQgJyknO1xuICAgICAgdC5jdXJyZW50IDwtIFVyaSkpXG4gIGVsc2UgaWRlbnRfb3JfZnVuY3Rpb24gdFxuOztcblxubGV0IGNvbW1lbnRfb3JfZGVsaW0gdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgaWYgYWNjZXB0X3N0cmluZyB0IFwiLypcIlxuICB0aGVuIChcbiAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgbWFueSB0IChmdW5jdGlvblxuICAgICAgICB8ICcqJyAtPiBmYWxzZVxuICAgICAgICB8IF8gLT4gdHJ1ZSk7XG4gICAgICBpZiBhY2NlcHRfc3RyaW5nIHQgXCIqL1wiXG4gICAgICB0aGVuIHQuY3VycmVudCA8LSBDb21tZW50XG4gICAgICBlbHNlIGlmIGFjY2VwdF9jaGFyIHQgJyonXG4gICAgICB0aGVuIGxvb3AgKClcbiAgICAgIGVsc2UgZXJyb3IgdFxuICAgIGluXG4gICAgbG9vcCAoKSlcbiAgZWxzZSAoXG4gICAgZXhwZWN0X2NoYXIgdCAnLyc7XG4gICAgdC5jdXJyZW50IDwtIERlbGltKVxuOztcblxubGV0IG5leHQgdCA9XG4gIGxldCBuZXdfb2ZmID0gbmV4dF9wb3MgdCBpblxuICB0Lm9mZiA8LSBuZXdfb2ZmO1xuICB0LmxlbiA8LSAwO1xuICBpZiBpc19uZXh0X2VvZiB0XG4gIHRoZW4gdC5jdXJyZW50IDwtIEVvZlxuICBlbHNlIChcbiAgICBtYXRjaCBuZXh0X2NoYXIgdCB3aXRoXG4gICAgfCBjIHdoZW4gaXNfd2hpdGVzcGFjZSBjIC0+XG4gICAgICBtYW55IHQgaXNfd2hpdGVzcGFjZTtcbiAgICAgIHQuY3VycmVudCA8LSBXaGl0ZV9zcGFjZVxuICAgIHwgJzonIC0+IG9uZV9jaGFyX3Rva2VuIHQgQ29sb25cbiAgICB8ICc7JyAtPiBvbmVfY2hhcl90b2tlbiB0IFNlbWlfY29sb25cbiAgICB8ICd7JyAtPiBvbmVfY2hhcl90b2tlbiB0IExjdXJseVxuICAgIHwgJ30nIC0+IG9uZV9jaGFyX3Rva2VuIHQgUmN1cmx5XG4gICAgfCAnWycgLT4gb25lX2NoYXJfdG9rZW4gdCBMYnJhY2tldFxuICAgIHwgJ10nIC0+IG9uZV9jaGFyX3Rva2VuIHQgUmJyYWNrZXRcbiAgICB8ICcoJyAtPiBvbmVfY2hhcl90b2tlbiB0IExwYXJlblxuICAgIHwgJyknIC0+IG9uZV9jaGFyX3Rva2VuIHQgUnBhcmVuXG4gICAgfCAnLCcgLT4gb25lX2NoYXJfdG9rZW4gdCBDb21tYVxuICAgIHwgKCdcXCcnIHwgJ1wiJykgYXMgcXVvdGUgLT4gcXVvdGVkX3N0cmluZyB0IH5xdW90ZVxuICAgIHwgKCcwJyAuLiAnOScgfCAnLicgfCAnKycgfCAnLScpIHdoZW4gc3RhcnRfbnVtIHQgLT5cbiAgICAgIG51bWJlcl9vcl9wZXJjZW50YWdlX29yX2RpbWVuc2lvbiB0XG4gICAgfCAnLycgLT4gY29tbWVudF9vcl9kZWxpbSB0XG4gICAgfCAnIycgLT4gaGFzaF9vcl9kZWxpbSB0XG4gICAgfCAnQCcgd2hlbiBzdGFydF9pZGVudCB+cHJlZml4OlwiQFwiIHQgLT4gYXRrZXl3b3JkIHRcbiAgICB8ICd1JyAtPiB1cmlfb3JfaWRlbnRfb3JfZnVuY3Rpb24gdFxuICAgIHwgXyAtPlxuICAgICAgaWYgc3RhcnRfaWRlbnQgfnByZWZpeDpcIlwiIHRcbiAgICAgIHRoZW4gaWRlbnRfb3JfZnVuY3Rpb24gdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGNvbnN1bWVfMSB0O1xuICAgICAgICAoKiB0aGlzIGlzIHdlaXJkIGJ1dCB0aGUgc3BlYyBpcyB3ZWlyZCAqKVxuICAgICAgICB0LmN1cnJlbnQgPC0gRGVsaW0pKVxuOztcblxubGV0IG5leHQgdCA9XG4gICgqIE1ha2Ugc3VyZSB3ZSBhcmUgaWRlbXBvdGVudCB3aGVuIHdlIGdldCBpbnRvIHRoZSBlcnJvciBzdGF0ZSAqKVxuICBpZiBUb2tlbi5lcXVhbCB0LmN1cnJlbnQgRXJyb3JcbiAgdGhlbiAoKVxuICBlbHNlIChcbiAgICB0cnkgbmV4dCB0IHdpdGhcbiAgICB8IEVycm9yX2hhcHBlbmVkIC0+ICgpKVxuOztcblxubGV0IGNyZWF0ZSBzID1cbiAgKCogY3VycmVudCBpcyBkdW1teSBhbmQgd2lsbCBiZSBzZXQgYnkgY2FsbCB0byBuZXh0ICopXG4gIGxldCB0ID0geyBzOyBvZmYgPSAwOyBsZW4gPSAwOyBjdXJyZW50ID0gV2hpdGVfc3BhY2UgfSBpblxuICBuZXh0IHQ7XG4gIHRcbjs7XG5cbmxldCBzbGljZSB0ID0gdC5vZmYsIHQubGVuXG5sZXQgY3VycmVudCB0ID0gdC5jdXJyZW50XG5cbmxldCBjdXJyZW50X3RleHQgdCA9XG4gIGlmIFRva2VuLmVxdWFsIHQuY3VycmVudCBFb2ZcbiAgdGhlbiBcIlwiXG4gIGVsc2UgKFxuICAgIGxldCBwb3MsIGxlbiA9IHNsaWNlIHQgaW5cbiAgICBTdHJpbmcuc3ViIHQucyB+cG9zIH5sZW4pXG47O1xuXG5sZXQgdG9fbGlzdCBzID1cbiAgbGV0IHQgPSBjcmVhdGUgcyBpblxuICBsZXQgcmVjIGxvb3AgYWNjID1cbiAgICBsZXQgc3RhcnQsIGxlbiA9IHNsaWNlIHQgaW5cbiAgICBsZXQgYWNjID0gKGN1cnJlbnQgdCwgc3RhcnQsIGxlbikgOjogYWNjIGluXG4gICAgaWYgVG9rZW4uZXF1YWwgKGN1cnJlbnQgdCkgRW9mIHx8IFRva2VuLmVxdWFsIChjdXJyZW50IHQpIEVycm9yXG4gICAgdGhlbiBMaXN0LnJldiBhY2NcbiAgICBlbHNlIChcbiAgICAgIG5leHQgdDtcbiAgICAgIGxvb3AgYWNjKVxuICBpblxuICBsb29wIFtdXG47O1xuXG5sZXQldGVzdF9tb2R1bGUgXCJ0ZXN0c1wiID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQgdGVzdCBzID1cbiAgICAgIHByaW50X2VuZGxpbmVcbiAgICAgICAgKFNleHAudG9fc3RyaW5nX21hY2ggKFslc2V4cF9vZjogKFRva2VuLnQgKiBpbnQgKiBpbnQpIGxpc3RdICh0b19saXN0IHMpKSlcbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZW9mXCIgPVxuICAgICAgdGVzdCBcIlwiO1xuICAgICAgWyVleHBlY3Qge3woKEVvZiAwIDApKXx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzaW1wbGVfdG9rZW5zXCIgPVxuICAgICAgdGVzdCBcIikoe31bXTs6XCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fCAoKFJwYXJlbiAwIDEpKExwYXJlbiAxIDEpKExjdXJseSAyIDEpKFJjdXJseSAzIDEpKExicmFja2V0IDQgMSkoUmJyYWNrZXQgNSAxKShTZW1pX2NvbG9uIDYgMSkoQ29sb24gNyAxKShFb2YgOCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImlkZW50XCIgPVxuICAgICAgdGVzdCBcIi1mb28tYmFyOiBiYXpcIjtcbiAgICAgIHRlc3QgXCItZm9vLWJhcihcIjtcbiAgICAgIHRlc3QgXCJAZm9vLWJhclwiO1xuICAgICAgdGVzdCBcIkAtZm9vLWJhclwiO1xuICAgICAgdGVzdCBcIkAtLWZvby1iYXJcIjtcbiAgICAgIHRlc3QgXCItLXZhclwiO1xuICAgICAgdGVzdCBcIlJHQkFcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChJZGVudCAwIDgpKENvbG9uIDggMSkoV2hpdGVfc3BhY2UgOSAxKShJZGVudCAxMCAzKShFb2YgMTMgMCkpXG4gICAgKChGdW5jdGlvbiAwIDkpKEVvZiA5IDApKVxuICAgICgoQXRrZXl3b3JkIDAgOCkoRW9mIDggMCkpXG4gICAgKChBdGtleXdvcmQgMCA5KShFb2YgOSAwKSlcbiAgICAoKEF0a2V5d29yZCAwIDEwKShFb2YgMTAgMCkpXG4gICAgKChJZGVudCAwIDUpKEVvZiA1IDApKVxuICAgICgoSWRlbnQgMCA0KShFb2YgNCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIndoaXRlc3BhY2VcIiA9XG4gICAgICB0ZXN0IFwiICBcIjtcbiAgICAgIFslZXhwZWN0IHt8KChXaGl0ZV9zcGFjZSAwIDIpKEVvZiAyIDApKXx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJudW1iZXJzXCIgPVxuICAgICAgdGVzdCBcIm1hcmdpbjogMC41ZW5cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNWVtXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjVpblwiO1xuICAgICAgdGVzdCBcImxpbmUtaGVpZ2h0OiAzY21cIjtcbiAgICAgIHRlc3QgXCJsaW5lLWhlaWdodDogMTIwJVwiO1xuICAgICAgdGVzdCBcImdyaWQ6IDAgMSBmb29cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNS1pblwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyZSsyMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyZS0yMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyRSsyMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyRS0yMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyRTIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJlMjBcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA1KShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA1KShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA1KShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDExKShDb2xvbiAxMSAxKShXaGl0ZV9zcGFjZSAxMiAxKShEaW1lbnNpb24gMTMgMykoRW9mIDE2IDApKVxuICAgICgoSWRlbnQgMCAxMSkoQ29sb24gMTEgMSkoV2hpdGVfc3BhY2UgMTIgMSkoUGVyY2VudGFnZSAxMyA0KShFb2YgMTcgMCkpXG4gICAgKChJZGVudCAwIDQpKENvbG9uIDQgMSkoV2hpdGVfc3BhY2UgNSAxKShOdW1iZXIgNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDEpKFdoaXRlX3NwYWNlIDkgMSkoSWRlbnQgMTAgMykoRW9mIDEzIDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoRGltZW5zaW9uIDggNikoRW9mIDE0IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNykoRW9mIDE1IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNykoRW9mIDE1IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNykoRW9mIDE1IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNykoRW9mIDE1IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNikoRW9mIDE0IDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggNikoRW9mIDE0IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiYmFkbHlfcXVvdGVkXCIgPVxuICAgICAgdGVzdCBcIidmb28gYmFyXCI7XG4gICAgICB0ZXN0IFwiJ1wiO1xuICAgICAgdGVzdCBcIidcXFxcJ1wiO1xuICAgICAgWyVleHBlY3Qge3xcbiAgICAoKEVycm9yIDAgOCkpXG4gICAgKChFcnJvciAwIDEpKVxuICAgICgoRXJyb3IgMCAzKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInF1b3RlZFwiID1cbiAgICAgIHRlc3Qge3wnRm9vICdcIkJhclwiJzsnICdcXCcnIFwiXFxcIlwifH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fCAoKFN0cmluZyAwIDYpKFN0cmluZyA2IDUpKFN0cmluZyAxMSAzKShXaGl0ZV9zcGFjZSAxNCAxKShTdHJpbmcgMTUgNCkoV2hpdGVfc3BhY2UgMTkgMSkoU3RyaW5nIDIwIDQpKEVvZiAyNCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImNvbG9yc1wiID1cbiAgICAgIHRlc3Qge3xjb2xvcjogI2YwMHx9O1xuICAgICAgdGVzdCB7fGNvbG9yOiByZ2IoMjU1LDAsMCl8fTtcbiAgICAgIHRlc3Qge3xjb2xvcjogcmdiKDI1NSwwLDApfH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoSWRlbnQgMCA1KShDb2xvbiA1IDEpKFdoaXRlX3NwYWNlIDYgMSkoSGFzaCA3IDQpKEVvZiAxMSAwKSlcbiAgICAoKElkZW50IDAgNSkoQ29sb24gNSAxKShXaGl0ZV9zcGFjZSA2IDEpKEZ1bmN0aW9uIDcgNCkoTnVtYmVyIDExIDMpKENvbW1hIDE0IDEpKE51bWJlciAxNSAxKShDb21tYSAxNiAxKShOdW1iZXIgMTcgMSkoUnBhcmVuIDE4IDEpKEVvZiAxOSAwKSlcbiAgICAoKElkZW50IDAgNSkoQ29sb24gNSAxKShXaGl0ZV9zcGFjZSA2IDEpKEZ1bmN0aW9uIDcgNCkoTnVtYmVyIDExIDMpKENvbW1hIDE0IDEpKE51bWJlciAxNSAxKShDb21tYSAxNiAxKShOdW1iZXIgMTcgMSkoUnBhcmVuIDE4IDEpKEVvZiAxOSAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImltcG9ydFwiID1cbiAgICAgIHRlc3Qge3xAaW1wb3J0IFwiZm9vLmJhclwiO3x9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3wgKChBdGtleXdvcmQgMCA3KShXaGl0ZV9zcGFjZSA3IDEpKFN0cmluZyA4IDkpKFNlbWlfY29sb24gMTcgMSkoRW9mIDE4IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwicmVkIGV4YW1wbGVcIiA9XG4gICAgICB0ZXN0IFwicmVkLS0+XCI7XG4gICAgICBbJWV4cGVjdCB7fCAoKElkZW50IDAgNSkoRGVsaW0gNSAxKShFb2YgNiAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInVybFwiID1cbiAgICAgIHRlc3Qge3x1cmwoIFwiaHR0cDovL3d3d3cuZ29vZ2xlLmNvbVwiKXx9O1xuICAgICAgdGVzdCB7fHVybCgnaHR0cDovL3d3d3cuZ29vZ2xlLmNvbScpfH07XG4gICAgICB0ZXN0IHt8dXJsKCdodHRwOi8vd3d3dy5nb29nbGUuY29tJyApfH07XG4gICAgICB0ZXN0IHt8dXJsKCAgaHR0cDovL3d3d3cuZ29vZ2xlLmNvbSApfH07XG4gICAgICB0ZXN0IHt8dXJsKCAgaHR0cDovL3d3d3cuZ29vZ2xlLlwiY29tICl8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChGdW5jdGlvbiAwIDQpKFdoaXRlX3NwYWNlIDQgMSkoU3RyaW5nIDUgMjQpKFJwYXJlbiAyOSAxKShFb2YgMzAgMCkpXG4gICAgKChGdW5jdGlvbiAwIDQpKFN0cmluZyA0IDI0KShScGFyZW4gMjggMSkoRW9mIDI5IDApKVxuICAgICgoRnVuY3Rpb24gMCA0KShTdHJpbmcgNCAyNCkoV2hpdGVfc3BhY2UgMjggMSkoUnBhcmVuIDI5IDEpKEVvZiAzMCAwKSlcbiAgICAoKFVyaSAwIDMwKShFb2YgMzAgMCkpXG4gICAgKChFcnJvciAwIDI1KSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImVzY2FwZVwiID1cbiAgICAgIHRlc3Qge3xcInRlc3RcXDE5YWJmMlxcMlwifH07XG4gICAgICB0ZXN0IHt8XCJcXDAxMFxceEZGYVxcbzEyM1xcblxcXFxcXHV7MTIzNDV9YWHwn5Cq8J+QqvCfkKrwn5Cq8J+QqlwifH07XG4gICAgICB0ZXN0IHt8XCLihpAg4oaRIOKGkiDihpMg4oaUIOKGlSDih6og4oa5IOKsiCDihpgg4p++IOKGtlwifH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoU3RyaW5nIDAgMTUpKEVvZiAxNSAwKSlcbiAgICAoKFN0cmluZyAwIDUxKShFb2YgNTEgMCkpXG4gICAgKChTdHJpbmcgMCA0OSkoRW9mIDQ5IDApKSB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuIiwiKCogUmVjdXJzaXZlIGRlc2NlbnQgcGFyc2Vycy4gIEEgcGFyc2VyIHJldHVybnMgZmFsc2UgaWYgYmFzZWQgb24gYVxuICAgc2luZ2xlIHRva2VuIGxvb2thaGVhZCBpdCBkZWNpZGVzIHRoYXQgdGhlIGdpdmVuIHRleHQgY2FuIG5vdCBiZVxuICAgcGFyc2VkLiAgQW55IG90aGVyIHBhcnNlIGVycm9ycyBhcmUgaGFuZGxlZCBieSByYWlzaW5nIGV4Y2VwdGlvbnMuXG5cbiAgIFNvbWUgcGFyc2VycyByZXR1cm4gdW5pdCBiZWNhdXNlIHdlIG9ubHkgY2FsbCB0aGVtIHdoZW4gYSBmYWlsdXJlXG4gICB0byBwYXJzZSBpbXBsaWVzIGEgcGFyc2UgZXJyb3IgKGFuZCBub3QgdGhhdCBzb21lIHBhcnNlciBoaWdoZXIgdXBcbiAgIGluIHRoZSBjYWxsIGNoYWluIHNob3VsZCB0cnkgdG8gcGFyc2Ugc29tZXRoaW5nIGVsc2UpLlxuXG4gICBGb3Igc2ltcGxpY2l0eSB0aGUgcGFyc2VycyB0aGVtc2VsdmVzIGp1c3QgdmFsaWRhdGUgYW5kIGRvbid0XG4gICBwcm9kdWNlIGFueSB2YWx1ZXMuICBUaGF0IGxlYWRzIHRvIGEgZmV3IHVuZWxlZ2FudCBjb25zdHJ1Y3RzXG4gICAocHJpbWFyaWx5IGluIGRlY2xhcmF0aW9uKSwgYnV0IG1lYW5zIHdlIG90aGVyd2lzZSBoYXZlIHJhdGhlclxuICAgc2ltcGxlIGNvZGUgdGhhdCBhbHNvIGFsbG9jYXRlcyB2ZXJ5IGxpdHRsZS5cbiopXG5cbm9wZW4gQ29yZVxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgcmVjIG5leHQgY3QgPVxuICBDc3NfdG9rZW5pemVyLm5leHQgY3Q7XG4gIGlmIENzc190b2tlbml6ZXIuKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBDb21tZW50KSB0aGVuIG5leHQgY3QgZWxzZSAoKVxuOztcblxubGV0IHNraXBfd2hpdGVfc3BhY2UgY3QgPVxuICB3aGlsZSBDc3NfdG9rZW5pemVyLihUb2tlbi5lcXVhbCAoY3VycmVudCBjdCkgV2hpdGVfc3BhY2UpIGRvXG4gICAgbmV4dCBjdFxuICBkb25lXG47O1xuXG5sZXQgYWNjZXB0IGN0IGV4cGVjdGVkID1cbiAgbGV0IGdvdCA9IENzc190b2tlbml6ZXIuY3VycmVudCBjdCBpblxuICBpZiBDc3NfdG9rZW5pemVyLlRva2VuLmVxdWFsIGdvdCBleHBlY3RlZFxuICB0aGVuIChcbiAgICBuZXh0IGN0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2Vcbjs7XG5cbmxldCBleHBlY3QgY3QgZXhwZWN0ZWQgPVxuICBsZXQgZ290ID0gQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0IGluXG4gIGlmIENzc190b2tlbml6ZXIuVG9rZW4uZXF1YWwgZ290IGV4cGVjdGVkXG4gIHRoZW4gbmV4dCBjdFxuICBlbHNlXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVW5leHBlY3RlZCB0b2tlblwiXG4gICAgICAgICAgKGV4cGVjdGVkIDogQ3NzX3Rva2VuaXplci5Ub2tlbi50KVxuICAgICAgICAgIChnb3QgOiBDc3NfdG9rZW5pemVyLlRva2VuLnQpXVxuOztcblxubGV0IHJlYyBtYW55IChjdCA6IENzc190b2tlbml6ZXIudCkgZiA9IGlmIGYgY3QgdGhlbiBtYW55IGN0IGYgZWxzZSAoKVxuXG5sZXQgbWFueTEgKGN0IDogQ3NzX3Rva2VuaXplci50KSBmID1cbiAgaWYgZiBjdFxuICB0aGVuIChcbiAgICBtYW55IGN0IGY7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuOztcblxubGV0IHJlYyBhbnkgY3QgOiBib29sID1cbiAgbGV0IHJlcyA9XG4gICAgbWF0Y2ggQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0IHdpdGhcbiAgICB8IElkZW50IHwgTnVtYmVyIHwgUGVyY2VudGFnZSB8IERpbWVuc2lvbiB8IFN0cmluZyB8IFVyaSB8IERlbGltIHwgSGFzaCB8IENvbW1hIC0+XG4gICAgICBuZXh0IGN0O1xuICAgICAgdHJ1ZVxuICAgIHwgRnVuY3Rpb24gLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgbWFueSBjdCBhbnk7XG4gICAgICBleHBlY3QgY3QgUnBhcmVuO1xuICAgICAgdHJ1ZVxuICAgIHwgTHBhcmVuIC0+XG4gICAgICBuZXh0IGN0O1xuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIGV4cGVjdF9hbnkgY3Q7XG4gICAgICBleHBlY3QgY3QgUnBhcmVuO1xuICAgICAgdHJ1ZVxuICAgIHwgTGJyYWNrZXQgLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgZXhwZWN0X2FueSBjdDtcbiAgICAgIGV4cGVjdCBjdCBSYnJhY2tldDtcbiAgICAgIHRydWVcbiAgICB8IFJjdXJseSB8IFJwYXJlbiB8IFJicmFja2V0IC0+IGZhbHNlXG4gICAgfCBMY3VybHkgLT4gZmFsc2VcbiAgICB8IEF0a2V5d29yZCB8IENvbG9uIHwgU2VtaV9jb2xvbiAtPiBmYWxzZVxuICAgIHwgQ29tbWVudCB8IFdoaXRlX3NwYWNlIHwgRW9mIHwgRXJyb3IgLT4gZmFsc2VcbiAgaW5cbiAgaWYgcmVzIHRoZW4gc2tpcF93aGl0ZV9zcGFjZSBjdCBlbHNlICgpO1xuICByZXNcblxuYW5kIGV4cGVjdF9hbnkgY3QgPSBpZiBhbnkgY3QgdGhlbiAoKSBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFwiRXhwZWN0ZWQgPGFueT5cIl1cblxuYW5kIHZhbHVlMCBjdCA9XG4gIGFueSBjdFxuICB8fCBibG9jayBjdFxuICB8fFxuICBpZiBhY2NlcHQgY3QgQXRrZXl3b3JkXG4gIHRoZW4gKFxuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuXG5hbmQgdmFsdWUgY3QgPSBtYW55MSBjdCB2YWx1ZTBcblxuYW5kIGJsb2NrIGN0IDogYm9vbCA9XG4gIGlmIGFjY2VwdCBjdCBMY3VybHlcbiAgdGhlbiAoXG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICBtYW55IGN0IChmdW4gY3QgLT5cbiAgICAgIHZhbHVlMCBjdFxuICAgICAgfHxcbiAgICAgIGlmIGFjY2VwdCBjdCBTZW1pX2NvbG9uXG4gICAgICB0aGVuIChcbiAgICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgICAgdHJ1ZSlcbiAgICAgIGVsc2UgZmFsc2UpO1xuICAgIGV4cGVjdCBjdCBSY3VybHk7XG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG5cbmFuZCBleHBlY3RfdmFsdWUgY3QgPSBpZiB2YWx1ZSBjdCB0aGVuICgpIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgXCJFeHBlY3RlZCA8dmFsdWU+XCJdXG5cbmxldCBkZWNsYXJhdGlvbiBjdCA9XG4gIGxldCBpZGVudF9zdGFydCwgaWRlbnRfbGVuID0gQ3NzX3Rva2VuaXplci5zbGljZSBjdCBpblxuICBpZiBhY2NlcHQgY3QgSWRlbnRcbiAgdGhlbiAoXG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICBleHBlY3QgY3QgQ29sb247XG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICBsZXQgdmFsdWVfc3RhcnQgPSBDc3NfdG9rZW5pemVyLnNsaWNlIGN0IHw+IGZzdCBpblxuICAgIGV4cGVjdF92YWx1ZSBjdDtcbiAgICBsZXQgbmV4dF90b2tlbl9zdGFydCA9IENzc190b2tlbml6ZXIuc2xpY2UgY3QgfD4gZnN0IGluXG4gICAgbGV0IHNvdXJjZSA9IENzc190b2tlbml6ZXIuc291cmNlIGN0IGluXG4gICAgU29tZVxuICAgICAgKCBTdHJpbmcuc3ViIHNvdXJjZSB+cG9zOmlkZW50X3N0YXJ0IH5sZW46aWRlbnRfbGVuXG4gICAgICAsIFN0cmluZy5yc3RyaXBcbiAgICAgICAgICAoU3RyaW5nLnN1YiBzb3VyY2UgfnBvczp2YWx1ZV9zdGFydCB+bGVuOihuZXh0X3Rva2VuX3N0YXJ0IC0gdmFsdWVfc3RhcnQpKSApKVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBleHBlY3RfZGVjbGFyYXRpb24gY3QgPVxuICBtYXRjaCBkZWNsYXJhdGlvbiBjdCB3aXRoXG4gIHwgU29tZSAoZmllbGQsIHZhbHVlKSAtPiBmaWVsZCwgdmFsdWVcbiAgfCBOb25lIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiRXhwZWN0ZWQgPGRlY2xhcmF0aW9uPlwiXVxuOztcblxuKCogQXMgcGVyOiBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXN0eWxlLWF0dHIvXG4gICBkZWNsYXJhdGlvbi1saXN0XG4gICA6IFMqIGRlY2xhcmF0aW9uPyBbICc7JyBTKiBkZWNsYXJhdGlvbj8gXSpcbiAgIDtcbiopXG5sZXQgZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QgY3QgPVxuICBsZXQgcmVzID0gcmVmIFtdIGluXG4gIGxldCBhZGQga3YgPVxuICAgIG1hdGNoIGt2IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgKGssIHYpIC0+IHJlcyA6PSAoaywgdikgOjogIXJlc1xuICBpblxuICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICBhZGQgKGRlY2xhcmF0aW9uIGN0KTtcbiAgbWFueSBjdCAoZnVuIGN0IC0+XG4gICAgaWYgYWNjZXB0IGN0IFNlbWlfY29sb25cbiAgICB0aGVuIChcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBhZGQgKGRlY2xhcmF0aW9uIGN0KTtcbiAgICAgIHRydWUpXG4gICAgZWxzZSBmYWxzZSk7XG4gIExpc3QucmV2ICFyZXNcbjs7XG5cbmxldCBwYXJzZSBwYXJzZXJfZiBzID1cbiAgbGV0IGN0ID0gQ3NzX3Rva2VuaXplci5jcmVhdGUgcyBpblxuICB3aGlsZSBDc3NfdG9rZW5pemVyLihUb2tlbi5lcXVhbCAoY3VycmVudCBjdCkgQ29tbWVudCkgZG9cbiAgICBDc3NfdG9rZW5pemVyLm5leHQgY3RcbiAgZG9uZTtcbiAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgIGxldCByZXMgPSBwYXJzZXJfZiBjdCBpblxuICAgIGV4cGVjdCBjdCBFb2Y7XG4gICAgcmVzKVxuOztcblxubGV0IHByaW50X3Rva2VucyBzID1cbiAgbGV0IGN0ID0gQ3NzX3Rva2VuaXplci5jcmVhdGUgcyBpblxuICB3aGlsZSBDc3NfdG9rZW5pemVyLihub3QgKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBFb2YpKSBkb1xuICAgIHByaW50X3MgKENzc190b2tlbml6ZXIuVG9rZW4uc2V4cF9vZl90IChDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3QpKTtcbiAgICBDc3NfdG9rZW5pemVyLm5leHQgY3RcbiAgZG9uZVxuOztcblxubGV0IHZhbGlkYXRlX3ZhbHVlID0gcGFyc2UgZXhwZWN0X3ZhbHVlXG5sZXQgcGFyc2VfZGVjbGFyYXRpb25fbGlzdCBzID0gcGFyc2UgZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3Qgc1xuXG5sZXQgdGVzdF9wYXJzZXIgcCBzZXhwX29mX2FyZyBzID1cbiAgbGV0IHIgPSBwYXJzZSBwIHMgaW5cbiAgcHJpbnRmICFcIiVzIC0tPiAle3NleHA6YXJnIE9yX2Vycm9yLnR9XFxuXCIgcyByXG47O1xuXG5sZXQldGVzdF9tb2R1bGUgXCJ0ZXN0c1wiID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJcIiA9XG4gICAgICBsZXQgdmFsdWUgPVxuICAgICAgICBcIjAgNHB4IDhweCAwIFJHQkEodmFyKC0tanMtdGV4dC1jb2xvci1yZ2IpLCAwLjEyKSwgMCAycHggNHB4IDAgXFxcbiAgICAgICAgIFJHQkEodmFyKC0tanMtdGV4dC1jb2xvci1yZ2IpLCAwLjA4KVwiXG4gICAgICBpblxuICAgICAgcHJpbnRfdG9rZW5zIHZhbHVlO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIEZ1bmN0aW9uXG4gICAgRnVuY3Rpb25cbiAgICBJZGVudFxuICAgIFJwYXJlblxuICAgIENvbW1hXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBScGFyZW5cbiAgICBDb21tYVxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgV2hpdGVfc3BhY2VcbiAgICBGdW5jdGlvblxuICAgIEZ1bmN0aW9uXG4gICAgSWRlbnRcbiAgICBScGFyZW5cbiAgICBDb21tYVxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgUnBhcmVuIHx9XTtcbiAgICAgIHByaW50X3MgWyVtZXNzYWdlICh2YWxpZGF0ZV92YWx1ZSB2YWx1ZSA6IHVuaXQgT3JfZXJyb3IudCldO1xuICAgICAgWyVleHBlY3Qge3xcbiAgICAoXCJ2YWxpZGF0ZV92YWx1ZSB2YWx1ZVwiIChPayAoKSkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ2YWx1ZXNcIiA9XG4gICAgICBsZXQgdGVzdCA9IHRlc3RfcGFyc2VyIGV4cGVjdF92YWx1ZSBVbml0LnNleHBfb2ZfdCBpblxuICAgICAgdGVzdCBcInhcIjtcbiAgICAgIHRlc3QgXCIzXCI7XG4gICAgICB0ZXN0IFwiM2luXCI7XG4gICAgICB0ZXN0IFwiMyVcIjtcbiAgICAgIHRlc3QgXCIjZmZmXCI7XG4gICAgICB0ZXN0IFwiMSAwIGF1dG9cIjtcbiAgICAgIHRlc3QgXCInSGVsbG8gV29ybGQnXCI7XG4gICAgICB0ZXN0IFwicmdiKDAsMCwwKVwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAgIHggLS0+IChPayAoKSlcbiAgICAgIDMgLS0+IChPayAoKSlcbiAgICAgIDNpbiAtLT4gKE9rICgpKVxuICAgICAgMyUgLS0+IChPayAoKSlcbiAgICAgICNmZmYgLS0+IChPayAoKSlcbiAgICAgIDEgMCBhdXRvIC0tPiAoT2sgKCkpXG4gICAgICAnSGVsbG8gV29ybGQnIC0tPiAoT2sgKCkpXG4gICAgICByZ2IoMCwwLDApIC0tPiAoT2sgKCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJkZWNsYXJhdGlvblwiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X2RlY2xhcmF0aW9uIFslc2V4cF9vZjogc3RyaW5nICogc3RyaW5nXSBpblxuICAgICAgdGVzdCBcImZsZXg6IDEgMCBhdXRvXCI7XG4gICAgICB0ZXN0IFwiY29udGVudDogJ0hlbGxvIFdvcmxkJ1wiO1xuICAgICAgdGVzdCBcImNvbnRlbnQ6IGZvbztcIjtcbiAgICAgICgqIFNlbWkncyBhcmUgaGFuZGxlZCBpbiBkZWNsYXJhdGlvbiBsaXN0ICopXG4gICAgICB0ZXN0IFwiY29udGVudDogYmFyIFwiO1xuICAgICAgKCogYnV0IHdoaXRlc3BhY2UgaXMgaGFuZGxlZCBpbiBkZWNsYXJhdGlvbiAoYW55IHJlYWxseSkgKilcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgICBmbGV4OiAxIDAgYXV0byAtLT4gKE9rIChmbGV4IFwiMSAwIGF1dG9cIikpXG4gICAgICBjb250ZW50OiAnSGVsbG8gV29ybGQnIC0tPiAoT2sgKGNvbnRlbnQgXCInSGVsbG8gV29ybGQnXCIpKVxuICAgICAgY29udGVudDogZm9vOyAtLT4gKEVycm9yIChcIlVuZXhwZWN0ZWQgdG9rZW5cIiAoZXhwZWN0ZWQgRW9mKSAoZ290IFNlbWlfY29sb24pKSlcbiAgICAgIGNvbnRlbnQ6IGJhciAgLS0+IChPayAoY29udGVudCBiYXIpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidW5pY29kZVwiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X2RlY2xhcmF0aW9uIFslc2V4cF9vZjogc3RyaW5nICogc3RyaW5nXSBpblxuICAgICAgdGVzdCBcImNvbnRlbnQ6ICfihpAg4oaRIOKGkiDihpMg4oaUIOKGlSDih6og4oa5IOKsiCDihpgg4p++IOKGtidcIjtcbiAgICAgIHByaW50X2VuZGxpbmUgKFNleHAudG9fc3RyaW5nIChTZXhwLkF0b20gXCLihpAg4oaRIOKGkiDihpMg4oaUIOKGlSDih6og4oa5IOKsiCDihpgg4p++IOKGtlwiKSk7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIGNvbnRlbnQ6ICfihpAg4oaRIOKGkiDihpMg4oaUIOKGlSDih6og4oa5IOKsiCDihpgg4p++IOKGticgLS0+IChPa1xuICAgICAoY29udGVudFxuICAgICAgXCInXFwyMjZcXDEzNFxcMTQ0IFxcMjI2XFwxMzRcXDE0NSBcXDIyNlxcMTM0XFwxNDYgXFwyMjZcXDEzNFxcMTQ3IFxcMjI2XFwxMzRcXDE0OCBcXDIyNlxcMTM0XFwxNDkgXFwyMjZcXDEzNVxcMTcwIFxcMjI2XFwxMzRcXDE4NSBcXDIyNlxcMTcyXFwxMzYgXFwyMjZcXDEzNFxcMTUyIFxcMjI2XFwxNTlcXDE5MCBcXDIyNlxcMTM0XFwxODInXCIpKVxuICAgIFwiXFwyMjZcXDEzNFxcMTQ0IFxcMjI2XFwxMzRcXDE0NSBcXDIyNlxcMTM0XFwxNDYgXFwyMjZcXDEzNFxcMTQ3IFxcMjI2XFwxMzRcXDE0OCBcXDIyNlxcMTM0XFwxNDkgXFwyMjZcXDEzNVxcMTcwIFxcMjI2XFwxMzRcXDE4NSBcXDIyNlxcMTcyXFwxMzYgXFwyMjZcXDEzNFxcMTUyIFxcMjI2XFwxNTlcXDE5MCBcXDIyNlxcMTM0XFwxODJcIiB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZGVjbGFyYXRpb24gbGlzdFwiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QgWyVzZXhwX29mOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XSBpblxuICAgICAgdGVzdCBcImZsZXg6IDEgMCBhdXRvXCI7XG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG87XCI7XG4gICAgICB0ZXN0XG4gICAgICAgIFwiYmFja2dyb3VuZDogIzVkOWFiMiB1cmwoXFxcImltZ190cmVlLnBuZ1xcXCIpIG5vLXJlcGVhdCB0b3AgbGVmdDttYXJnaW4tbGVmdDogMjAwcHhcIjtcbiAgICAgIHRlc3QgXCI7Ozs7O1wiO1xuICAgICAgdGVzdCBcImZsZXg6IDEgMCBhdXRvIDs7IG90aGVyIDogc2EgXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIGZsZXg6IDEgMCBhdXRvIC0tPiAoT2sgKChmbGV4IFwiMSAwIGF1dG9cIikpKVxuICAgIGZsZXg6IDEgMCBhdXRvOyAtLT4gKE9rICgoZmxleCBcIjEgMCBhdXRvXCIpKSlcbiAgICBiYWNrZ3JvdW5kOiAjNWQ5YWIyIHVybChcImltZ190cmVlLnBuZ1wiKSBuby1yZXBlYXQgdG9wIGxlZnQ7bWFyZ2luLWxlZnQ6IDIwMHB4IC0tPiAoT2tcbiAgICAgKChiYWNrZ3JvdW5kIFwiIzVkOWFiMiB1cmwoXFxcImltZ190cmVlLnBuZ1xcXCIpIG5vLXJlcGVhdCB0b3AgbGVmdFwiKVxuICAgICAgKG1hcmdpbi1sZWZ0IDIwMHB4KSkpXG4gICAgOzs7OzsgLS0+IChPayAoKSlcbiAgICBmbGV4OiAxIDAgYXV0byA7OyBvdGhlciA6IHNhICAtLT4gKE9rICgoZmxleCBcIjEgMCBhdXRvXCIpIChvdGhlciBzYSkpKSB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIENvcmUuQ29yZV9zdGFibGVcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAoKiogKGZpZWxkICogdmFsdWUpIGxpc3QuICBXaGVyZSB2YWx1ZSBzaG91bGQgYmUgZXNjYXBlZCAvIHF1b3RlZFxuICAgICAgICBhcyBuZWNlc3NhcnkgYXMgcGVyIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjcnVsZS1zZXRzLiAqKVxuICAgIHR5cGUgdCA9IChzdHJpbmcgKiBzdHJpbmcpIGxpc3QgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgYmluX2lvXVxuICBlbmRcbmVuZFxuXG5vcGVuIENvcmVcbmluY2x1ZGUgU3RhYmxlLlYxXG5cbnR5cGUgY3NzX2dsb2JhbF92YWx1ZXMgPVxuICBbIGBJbmhlcml0XG4gIHwgYEluaXRpYWxcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgPSByZWYgKGZ1biBkaWdpdHMgZiAtPiBzcHJpbnRmIFwiJS4qZlwiIGRpZ2l0cyBmKVxuZW5kXG5cbmxldCBmMnMgZGlnaXRzIGYgPSAhUHJpdmF0ZS5mbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCBkaWdpdHMgZlxuXG5tb2R1bGUgQ29sb3IgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgUkdCQSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyByIDogaW50XG4gICAgICAgIDsgZyA6IGludFxuICAgICAgICA7IGIgOiBpbnRcbiAgICAgICAgOyBhIDogUGVyY2VudC50IG9wdGlvblxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGZpZWxkc11cblxuICAgICAgbGV0IGNyZWF0ZSB+ciB+ZyB+YiA/YSAoKSA9IHsgcjsgZzsgYjsgYSB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgSFNMQSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBoIDogaW50XG4gICAgICAgIDsgcyA6IFBlcmNlbnQudFxuICAgICAgICA7IGwgOiBQZXJjZW50LnRcbiAgICAgICAgOyBhIDogUGVyY2VudC50IG9wdGlvblxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGZpZWxkc11cblxuICAgICAgbGV0IGNyZWF0ZSB+aCB+cyB+bCA/YSAoKSA9IHsgaDsgczsgbDsgYSB9XG4gICAgZW5kXG5cbiAgICB0eXBlIHQgPVxuICAgICAgWyBgUkdCQSBvZiBSR0JBLnRcbiAgICAgIHwgYEhTTEEgb2YgSFNMQS50XG4gICAgICB8IGBOYW1lIG9mIHN0cmluZ1xuICAgICAgfCBgSGV4IG9mIHN0cmluZ1xuICAgICAgfCBgVmFyIG9mIHN0cmluZ1xuICAgICAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZV1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBsZXQgdG9fc3RyaW5nX2NzcyA6IFs8IHQgXSAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgfCBgUkdCQSB7IFJHQkEucjsgZzsgYjsgYSB9IC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICAgfCBOb25lIC0+IFslc3RyaW5nIFwicmdiKCV7ciNJbnR9LCV7ZyNJbnR9LCV7YiNJbnR9KVwiXVxuICAgICAgIHwgU29tZSBwIC0+XG4gICAgICAgICBbJXN0cmluZyBcInJnYmEoJXtyI0ludH0sJXtnI0ludH0sJXtiI0ludH0sJXtmMnMgMiAoUGVyY2VudC50b19tdWx0IHApfSlcIl0pXG4gICAgfCBgSFNMQSB7IEhTTEEuaDsgczsgbDsgYSB9IC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBbJXN0cmluZ1xuICAgICAgICAgICBcImhzbCgle2gjSW50fSwle2YycyAwIChQZXJjZW50LnRvX3BlcmNlbnRhZ2Ugcyl9JSwle2YycyAwIFxcXG4gICAgICAgICAgICAoUGVyY2VudC50b19wZXJjZW50YWdlIGwpfSUpXCJdXG4gICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgIFslc3RyaW5nXG4gICAgICAgICAgIFwiaHNsYSgle2gjSW50fSwle2YycyAwIChQZXJjZW50LnRvX3BlcmNlbnRhZ2Ugcyl9JSwle2YycyAwIFxcXG4gICAgICAgICAgICAoUGVyY2VudC50b19wZXJjZW50YWdlIGwpfSUsJXtmMnMgMiAoUGVyY2VudC50b19tdWx0IHApfSlcIl0pXG4gICAgfCBgTmFtZSBuYW1lIC0+IG5hbWVcbiAgICB8IGBIZXggaGV4IC0+IGhleFxuICAgIHwgYFZhciB2YXIgLT4gWyVzdHJpbmcgXCJ2YXIoJXt2YXJ9KVwiXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbGlnbm1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBMZWZ0XG4gICAgfCBgUmlnaHRcbiAgICB8IGBDZW50ZXIgKCogaG9yaXpvbnRhbCAqKVxuICAgIHwgYFRvcFxuICAgIHwgYEJvdHRvbVxuICAgIHwgYE1pZGRsZSAoKiB2ZXJ0aWNhbCAqKVxuICAgIHwgYEp1c3RpZnkgKCogdGV4dC1hbGlnbiAoaW4gYWRkaXRpb24gdG8gW2hvcml6b250YWxdKSAqKVxuICAgIHwgYFN1cGVyICgqIHZlcnRpY2FsICopXG4gICAgfCBgU3ViICgqIHZlcnRpY2FsICopXG4gICAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlXVxuXG4gIGxldCB0b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgICB8IGBKdXN0aWZ5IC0+IFwianVzdGlmeVwiXG4gICAgfCBgVG9wIC0+IFwidG9wXCJcbiAgICB8IGBSaWdodCAtPiBcInJpZ2h0XCJcbiAgICB8IGBMZWZ0IC0+IFwibGVmdFwiXG4gICAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgTWlkZGxlIC0+IFwibWlkZGxlXCJcbiAgICB8IGBCb3R0b20gLT4gXCJib3R0b21cIlxuICAgIHwgYFN1cGVyIC0+IFwic3VwZXJcIlxuICAgIHwgYFN1YiAtPiBcInN1YlwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICA7O1xuZW5kXG5cbm1vZHVsZSBMZW5ndGggPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBSYXcgb2Ygc3RyaW5nXG4gICAgfCBgQ2ggb2YgZmxvYXRcbiAgICB8IGBSZW0gb2YgZmxvYXRcbiAgICB8IGBFbSBvZiBpbnRcbiAgICB8IGBFbV9mbG9hdCBvZiBmbG9hdFxuICAgIHwgYFBlcmNlbnQgb2YgUGVyY2VudC50XG4gICAgfCBgUHQgb2YgZmxvYXRcbiAgICB8IGBQeCBvZiBpbnRcbiAgICB8IGBQeF9mbG9hdCBvZiBmbG9hdFxuICAgIHwgYFZoIG9mIFBlcmNlbnQudFxuICAgIHwgYFZ3IG9mIFBlcmNlbnQudFxuICAgIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgICBdXG4gIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxuICBsZXQgdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gICAgfCBgUmF3IHMgLT4gc1xuICAgIHwgYENoIGMgLT4gWyVzdHJpbmcgXCIle2YycyAyIGN9Y2hcIl1cbiAgICB8IGBSZW0gZiAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgZn1yZW1cIl1cbiAgICB8IGBFbSBpIC0+IFslc3RyaW5nIFwiJXtpI0ludH1lbVwiXVxuICAgIHwgYEVtX2Zsb2F0IGYgLT4gWyVzdHJpbmcgXCIle2YycyAyIGZ9ZW1cIl1cbiAgICB8IGBQZXJjZW50IHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcCl9JVwiXVxuICAgIHwgYFB0IHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIHB9cHRcIl1cbiAgICB8IGBQeCBpIC0+IFslc3RyaW5nIFwiJXtpI0ludH1weFwiXVxuICAgIHwgYFB4X2Zsb2F0IGYgLT4gWyVzdHJpbmcgXCIle2YycyAyIGZ9cHhcIl1cbiAgICB8IGBWaCBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiAoUGVyY2VudC50b19wZXJjZW50YWdlIHApfXZoXCJdXG4gICAgfCBgVncgcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwKX12d1wiXVxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIDs7XG5cbiAgbGV0IHBlcmNlbnQxMDAgPSBgUGVyY2VudCAoUGVyY2VudC5vZl9wZXJjZW50YWdlIDEwMC4pXG5lbmRcblxubW9kdWxlIEF1dG9fb3JfbGVuZ3RoID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgQXV0b1xuICAgIHwgTGVuZ3RoLnRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgI0xlbmd0aC50IGFzIGwgLT4gTGVuZ3RoLnRvX3N0cmluZ19jc3MgbFxuICA7O1xuZW5kXG5cbmxldCB2YWx1ZV9tYXAgbyB+ZiA9IE9wdGlvbi52YWx1ZV9tYXAgbyB+ZGVmYXVsdDpcIlwiIH5mXG5sZXQgY29tYmluZSB0MSB0MiA9IHQxIEAgdDJcbmxldCAoIEA+ICkgPSBjb21iaW5lXG5sZXQgY29uY2F0IGwgPSBMaXN0LmNvbmNhdCBsXG5sZXQgdG9fc3RyaW5nX2xpc3QgPSBGbi5pZFxuXG5sZXQgdG9fc3RyaW5nX2NzcyB0ID1cbiAgTGlzdC5tYXAgdCB+ZjooZnVuIChmaWVsZCwgdmFsdWUpIC0+IFslc3RyaW5nIFwiJXtmaWVsZH06ICV7dmFsdWV9XCJdKVxuICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCI7XCJcbjs7XG5cbmxldCBvZl9zdHJpbmdfY3NzX2V4biBzID0gQ3NzX3BhcnNlci5wYXJzZV9kZWNsYXJhdGlvbl9saXN0IHMgfD4gT3JfZXJyb3Iub2tfZXhuXG5cbigqKiBjcmVhdGVfcmF3IGNyZWF0ZXMgYSBzaW5nbGUgZmllbGQsIHZhbHVlIHBhaXIuICBJdCBhc3N1bWVzIHRoYXQgdGhlIHZhbHVlIGlzIGEgdmFsaWRcbiAgICBjc3MgdmFsdWUuICBBcyBzdWNoIGl0IGlzIHVuc2FmZSB0byB1c2Ugd2l0aCBhcmJpdHJhcnkgdmFsdWUgc3RyaW5ncy4gIEJ1dCBmb3IgdGhlXG4gICAgdmFzdCBtYWpvcml0eSBvZiBjb21iaW5hdG9ycyBpbiB0aGlzIG1vZHVsZSBpdCBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gdXNlLCBhcyB3ZSBrbm93XG4gICAgYnkgY29uc3RydWN0aW9uIHRoYXQgdGhlIHZhbHVlcyBkbyBub3QgbmVlZCBxdW90aW5nIC8gZXNjYXBpbmcuICopXG5sZXQgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlID0gWyBmaWVsZCwgdmFsdWUgXVxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBzaG91bGRfdmFsaWRhdGUgPSByZWYgZmFsc2VcbmVuZFxuXG5sZXQgY3JlYXRlIH5maWVsZCB+dmFsdWUgPVxuICBpZiAhRXhwZXJ0LnNob3VsZF92YWxpZGF0ZSB0aGVuIENzc19wYXJzZXIudmFsaWRhdGVfdmFsdWUgdmFsdWUgfD4gT3JfZXJyb3Iub2tfZXhuO1xuICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWVcbjs7XG5cbmxldCBlbXB0eSA9IFtdXG5sZXQgaXNfZW1wdHkgPSBMaXN0LmlzX2VtcHR5XG5sZXQgY3JlYXRlX3BsYWNlbWVudCBuYW1lIGxlbmd0aCA9IGNyZWF0ZSB+ZmllbGQ6bmFtZSB+dmFsdWU6KExlbmd0aC50b19zdHJpbmdfY3NzIGxlbmd0aClcbmxldCBsZWZ0ID0gY3JlYXRlX3BsYWNlbWVudCBcImxlZnRcIlxubGV0IHRvcCA9IGNyZWF0ZV9wbGFjZW1lbnQgXCJ0b3BcIlxubGV0IGJvdHRvbSA9IGNyZWF0ZV9wbGFjZW1lbnQgXCJib3R0b21cIlxubGV0IHJpZ2h0ID0gY3JlYXRlX3BsYWNlbWVudCBcInJpZ2h0XCJcblxubGV0IHBvc2l0aW9uID90b3A6dHAgP2JvdHRvbTpidCA/bGVmdDpsdCA/cmlnaHQ6cnQgcG9zID1cbiAgbGV0IHBvcyA9XG4gICAgbGV0IHZhbHVlID1cbiAgICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgICB8IGBTdGF0aWMgLT4gXCJzdGF0aWNcIlxuICAgICAgfCBgQWJzb2x1dGUgLT4gXCJhYnNvbHV0ZVwiXG4gICAgICB8IGBTdGlja3kgLT4gXCJzdGlja3lcIlxuICAgICAgfCBgUmVsYXRpdmUgLT4gXCJyZWxhdGl2ZVwiXG4gICAgICB8IGBGaXhlZCAtPiBcImZpeGVkXCJcbiAgICBpblxuICAgIGNyZWF0ZSB+ZmllbGQ6XCJwb3NpdGlvblwiIH52YWx1ZVxuICBpblxuICBsZXQgY29udmVydCBvcHRfbCBmID0gT3B0aW9uLnZhbHVlX21hcCBvcHRfbCB+ZGVmYXVsdDplbXB0eSB+ZiBpblxuICBjb25jYXQgWyBwb3M7IGNvbnZlcnQgdHAgdG9wOyBjb252ZXJ0IGx0IGxlZnQ7IGNvbnZlcnQgcnQgcmlnaHQ7IGNvbnZlcnQgYnQgYm90dG9tIF1cbjs7XG5cbmxldCBib3hfc2l6aW5nIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYENvbnRlbnRfYm94IC0+IFwiY29udGVudC1ib3hcIlxuICAgIHwgYEJvcmRlcl9ib3ggLT4gXCJib3JkZXItYm94XCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImJveC1zaXppbmdcIiB+dmFsdWVcbjs7XG5cbmxldCBkaXNwbGF5IHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYElubGluZSAtPiBcImlubGluZVwiXG4gICAgfCBgQmxvY2sgLT4gXCJibG9ja1wiXG4gICAgfCBgSW5saW5lX2Jsb2NrIC0+IFwiaW5saW5lLWJsb2NrXCJcbiAgICB8IGBMaXN0X2l0ZW0gLT4gXCJsaXN0LWl0ZW1cIlxuICAgIHwgYFRhYmxlIC0+IFwidGFibGVcIlxuICAgIHwgYElubGluZV90YWJsZSAtPiBcImlubGluZS10YWJsZVwiXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYEZsZXggLT4gXCJmbGV4XCJcbiAgICB8IGBJbmxpbmVfZmxleCAtPiBcImlubGluZS1mbGV4XCJcbiAgICB8IGBJbmxpbmVfZ3JpZCAtPiBcImlubGluZS1ncmlkXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImRpc3BsYXlcIiB+dmFsdWVcbjs7XG5cbmxldCB2aXNpYmlsaXR5IHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYFZpc2libGUgLT4gXCJ2aXNpYmxlXCJcbiAgICB8IGBIaWRkZW4gLT4gXCJoaWRkZW5cIlxuICAgIHwgYENvbGxhcHNlIC0+IFwiY29sbGFwc2VcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwidmlzaWJpbGl0eVwiIH52YWx1ZVxuOztcblxudHlwZSBvdmVyZmxvdyA9XG4gIFsgYFZpc2libGVcbiAgfCBgSGlkZGVuXG4gIHwgYFNjcm9sbFxuICB8IGBBdXRvXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG5sZXQgbWFrZV9vdmVyZmxvdyBmaWVsZCB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBWaXNpYmxlIC0+IFwidmlzaWJsZVwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBTY3JvbGwgLT4gXCJzY3JvbGxcIlxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWVcbjs7XG5cbmxldCBvdmVyZmxvdyA9IG1ha2Vfb3ZlcmZsb3cgXCJvdmVyZmxvd1wiXG5sZXQgb3ZlcmZsb3dfeCA9IG1ha2Vfb3ZlcmZsb3cgXCJvdmVyZmxvdy14XCJcbmxldCBvdmVyZmxvd195ID0gbWFrZV9vdmVyZmxvdyBcIm92ZXJmbG93LXlcIlxubGV0IHpfaW5kZXggaSA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiei1pbmRleFwiIH52YWx1ZTooSW50LnRvX3N0cmluZyBpKVxubGV0IG9wYWNpdHkgaSA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwib3BhY2l0eVwiIH52YWx1ZTooZjJzIDYgaSlcblxubGV0IGNyZWF0ZV9sZW5ndGhfZmllbGQgZmllbGQgbCA9XG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooQXV0b19vcl9sZW5ndGgudG9fc3RyaW5nX2NzcyBsKVxuOztcblxubGV0IHdoaXRlX3NwYWNlIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgTm93cmFwIC0+IFwibm93cmFwXCJcbiAgICB8IGBQcmUgLT4gXCJwcmVcIlxuICAgIHwgYFByZV9saW5lIC0+IFwicHJlLWxpbmVcIlxuICAgIHwgYFByZV93cmFwIC0+IFwicHJlLXdyYXBcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gIGluXG4gIGNyZWF0ZSB+ZmllbGQ6XCJ3aGl0ZS1zcGFjZVwiIH52YWx1ZVxuOztcblxudHlwZSBmb250X3N0eWxlID1cbiAgWyBgTm9ybWFsXG4gIHwgYEl0YWxpY1xuICB8IGBPYmxpcXVlXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG50eXBlIGZvbnRfd2VpZ2h0ID1cbiAgWyBgTm9ybWFsXG4gIHwgYEJvbGRcbiAgfCBgQm9sZGVyXG4gIHwgYExpZ2h0ZXJcbiAgfCBgTnVtYmVyIG9mIGludFxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxudHlwZSBmb250X3ZhcmlhbnQgPVxuICBbIGBOb3JtYWxcbiAgfCBgU21hbGxfY2Fwc1xuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxubGV0IGZvbnRfc2l6ZSA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJmb250LXNpemVcIlxubGV0IGZvbnRfZmFtaWx5IGwgPSBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtZmFtaWx5XCIgfnZhbHVlOihTdHJpbmcuY29uY2F0IGwgfnNlcDpcIixcIilcblxubGV0IGZvbnRfc3R5bGUgcyA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBJdGFsaWMgLT4gXCJpdGFsaWNcIlxuICAgIHwgYE9ibGlxdWUgLT4gXCJvYmxpcXVlXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtc3R5bGVcIiB+dmFsdWVcbjs7XG5cbmxldCBmb250X3dlaWdodCBzID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IGBOdW1iZXIgaSAtPiBJbnQudG9fc3RyaW5nIGlcbiAgICB8IGBCb2xkIC0+IFwiYm9sZFwiXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBMaWdodGVyIC0+IFwibGlnaHRlclwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEJvbGRlciAtPiBcImJvbGRlclwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtd2VpZ2h0XCIgfnZhbHVlXG47O1xuXG5sZXQgYm9sZCA9IGZvbnRfd2VpZ2h0IGBCb2xkXG5cbmxldCBmb250X3ZhcmlhbnQgcyA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBTbWFsbF9jYXBzIC0+IFwic21hbGwtY2Fwc1wiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmb250LXZhcmlhbnRcIiB+dmFsdWVcbjs7XG5cbmxldCBmb250IH5zaXplIH5mYW1pbHkgP3N0eWxlID93ZWlnaHQgP3ZhcmlhbnQgKCkgPVxuICBbIFNvbWUgKGZvbnRfc2l6ZSBzaXplKVxuICA7IFNvbWUgKGZvbnRfZmFtaWx5IGZhbWlseSlcbiAgOyBPcHRpb24ubWFwIHN0eWxlIH5mOmZvbnRfc3R5bGVcbiAgOyBPcHRpb24ubWFwIHdlaWdodCB+Zjpmb250X3dlaWdodFxuICA7IE9wdGlvbi5tYXAgdmFyaWFudCB+Zjpmb250X3ZhcmlhbnRcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkIH5jb2xvciA9IGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooQ29sb3IudG9fc3RyaW5nX2NzcyBjb2xvcilcbmxldCBjb2xvciBjb2xvciA9IGNyZWF0ZV93aXRoX2NvbG9yIH5maWVsZDpcImNvbG9yXCIgfmNvbG9yXG5sZXQgYmFja2dyb3VuZF9jb2xvciBjb2xvciA9IGNyZWF0ZV93aXRoX2NvbG9yIH5maWVsZDpcImJhY2tncm91bmQtY29sb3JcIiB+Y29sb3JcbmxldCBmaWxsIGNvbG9yID0gY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkOlwiZmlsbFwiIH5jb2xvclxuXG50eXBlIHN0b3BzID0gKFBlcmNlbnQudCAqIENvbG9yLnQpIGxpc3RcblxudHlwZSBsaW5lYXJfZ3JhZGllbnQgPVxuICB7IGRpcmVjdGlvbiA6IFsgYERlZyBvZiBpbnQgXVxuICA7IHN0b3BzIDogc3RvcHNcbiAgfVxuXG50eXBlIHJhZGlhbF9ncmFkaWVudCA9IHsgc3RvcHMgOiBzdG9wcyB9XG5cbnR5cGUgYmFja2dyb3VuZF9pbWFnZSA9XG4gIFsgYFVybCBvZiBzdHJpbmdcbiAgfCBgTGluZWFyX2dyYWRpZW50IG9mIGxpbmVhcl9ncmFkaWVudFxuICB8IGBSYWRpYWxfZ3JhZGllbnQgb2YgcmFkaWFsX2dyYWRpZW50XG4gIF1cblxudHlwZSB0ZXh0X2FsaWduID1cbiAgWyBgTGVmdFxuICB8IGBSaWdodFxuICB8IGBDZW50ZXJcbiAgfCBgSnVzdGlmeVxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxubGV0IHN0b3BzX3RvX3N0cmluZyBzdG9wcyA9XG4gIExpc3QubWFwIHN0b3BzIH5mOihmdW4gKHBjdCwgY29sb3IpIC0+XG4gICAgKCogTm90ZTogUGVyY2VudC50b19zdHJpbmcgcHJvZHVjZWQgZS5nLiBcIjB4XCIsIFwiMXhcIiwgd29uJ3Qgd29yayBoZXJlLiAqKVxuICAgIFslc3RyaW5nIFwiJXtDb2xvci50b19zdHJpbmdfY3NzIGNvbG9yfSAle2YycyA2IChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcGN0KX0lXCJdKVxuICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG47O1xuXG5sZXQgYmFja2dyb3VuZF9pbWFnZSBzcGVjID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICB8IGBVcmwgdXJsIC0+IFslc3RyaW5nIFwidXJsKCV7dXJsfSlcIl1cbiAgICB8IGBMaW5lYXJfZ3JhZGllbnQgeyBkaXJlY3Rpb24gPSBgRGVnIGRpcmVjdGlvbjsgc3RvcHMgfSAtPlxuICAgICAgWyVzdHJpbmcgXCJsaW5lYXItZ3JhZGllbnQoJXtkaXJlY3Rpb24jSW50fWRlZywgJXtzdG9wc190b19zdHJpbmcgc3RvcHN9KVwiXVxuICAgIHwgYFJhZGlhbF9ncmFkaWVudCB7IHN0b3BzIH0gLT4gWyVzdHJpbmcgXCJyYWRpYWwtZ3JhZGllbnQoJXtzdG9wc190b19zdHJpbmcgc3RvcHN9KVwiXVxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImJhY2tncm91bmQtaW1hZ2VcIiB+dmFsdWVcbjs7XG5cbmxldCBjcmVhdGVfYWxpZ25tZW50IGZpZWxkIGEgPVxuICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWU6KEFsaWdubWVudC50b19zdHJpbmdfY3NzIChhIDo+IEFsaWdubWVudC50KSlcbjs7XG5cbmxldCB0ZXh0X2FsaWduID0gY3JlYXRlX2FsaWdubWVudCBcInRleHQtYWxpZ25cIlxubGV0IGhvcml6b250YWxfYWxpZ24gPSBjcmVhdGVfYWxpZ25tZW50IFwiaG9yaXpvbnRhbC1hbGlnblwiXG5sZXQgdmVydGljYWxfYWxpZ24gPSBjcmVhdGVfYWxpZ25tZW50IFwidmVydGljYWwtYWxpZ25cIlxuXG5sZXQgZmxvYXQgZiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggZiB3aXRoXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYExlZnQgLT4gXCJsZWZ0XCJcbiAgICB8IGBSaWdodCAtPiBcInJpZ2h0XCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZsb2F0XCIgfnZhbHVlXG47O1xuXG5sZXQgbGluZV9oZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibGluZS1oZWlnaHRcIlxubGV0IHdpZHRoID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIndpZHRoXCJcbmxldCBtaW5fd2lkdGggPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWluLXdpZHRoXCJcbmxldCBtYXhfd2lkdGggPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWF4LXdpZHRoXCJcbmxldCBoZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiaGVpZ2h0XCJcbmxldCBtaW5faGVpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1pbi1oZWlnaHRcIlxubGV0IG1heF9oZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWF4LWhlaWdodFwiXG5sZXQgcGFkZGluZ190b3AgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy10b3BcIlxubGV0IHBhZGRpbmdfYm90dG9tID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctYm90dG9tXCJcbmxldCBwYWRkaW5nX2xlZnQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy1sZWZ0XCJcbmxldCBwYWRkaW5nX3JpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctcmlnaHRcIlxuXG5sZXQgcGFkZGluZyA/dG9wID9ib3R0b20gP2xlZnQgP3JpZ2h0ICgpID1cbiAgbGV0IG0gPSBPcHRpb24ubWFwIGluXG4gIFsgbSB0b3AgfmY6cGFkZGluZ190b3BcbiAgOyBtIGJvdHRvbSB+ZjpwYWRkaW5nX2JvdHRvbVxuICA7IG0gbGVmdCB+ZjpwYWRkaW5nX2xlZnRcbiAgOyBtIHJpZ2h0IH5mOnBhZGRpbmdfcmlnaHRcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG5sZXQgdW5pZm9ybV9wYWRkaW5nIGwgPSBwYWRkaW5nIH50b3A6bCB+Ym90dG9tOmwgfmxlZnQ6bCB+cmlnaHQ6bCAoKVxubGV0IG1hcmdpbl90b3AgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWFyZ2luLXRvcFwiXG5sZXQgbWFyZ2luX2JvdHRvbSA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tYm90dG9tXCJcbmxldCBtYXJnaW5fbGVmdCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tbGVmdFwiXG5sZXQgbWFyZ2luX3JpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi1yaWdodFwiXG5cbmxldCBtYXJnaW4gP3RvcCA/Ym90dG9tID9sZWZ0ID9yaWdodCAoKSA9XG4gIGxldCBtID0gT3B0aW9uLm1hcCBpblxuICBbIG0gdG9wIH5mOm1hcmdpbl90b3BcbiAgOyBtIGJvdHRvbSB+ZjptYXJnaW5fYm90dG9tXG4gIDsgbSBsZWZ0IH5mOm1hcmdpbl9sZWZ0XG4gIDsgbSByaWdodCB+ZjptYXJnaW5fcmlnaHRcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG5sZXQgdW5pZm9ybV9tYXJnaW4gbCA9IG1hcmdpbiB+dG9wOmwgfmJvdHRvbTpsIH5sZWZ0OmwgfnJpZ2h0OmwgKClcbmxldCByb3dfZ2FwID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInJvdy1nYXBcIlxubGV0IGNvbHVtbl9nYXAgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiY29sdW1uLWdhcFwiXG5cbnR5cGUgYm9yZGVyX3N0eWxlID1cbiAgWyBgTm9uZVxuICB8IGBIaWRkZW5cbiAgfCBgRG90dGVkXG4gIHwgYERhc2hlZFxuICB8IGBTb2xpZFxuICB8IGBEb3VibGVcbiAgfCBgR3Jvb3ZlXG4gIHwgYFJpZGdlXG4gIHwgYEluc2V0XG4gIHwgYE91dHNldFxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxuKCoqIENvbmNhdCAyIHZhbHVlcyB3aXRoIGEgc3BhY2UgaW4gYmV0d2Vlbi4gIElmIGVpdGhlciBpcyB0aGUgZW1wdHkgc3RyaW5nXG4gICAgZG9uJ3QgcHV0IGluIHVubmVjZXNzYXJ5IHdoaXRlc3BhY2UuICopXG5sZXQgY29uY2F0MnYgdjEgdjIgPVxuICBtYXRjaCB2MSwgdjIgd2l0aFxuICB8IFwiXCIsIHggLT4geFxuICB8IHgsIFwiXCIgLT4geFxuICB8IHgsIHkgLT4geCBeIFwiIFwiIF4geVxuOztcblxuKCoqIENvbmNhdCB1cCB0byAzIHZhbHVlcyB3aXRoIHNwYWNlcyBpbiBiZXR3ZWVuLiAqKVxubGV0IGNvbmNhdDN2IHYxIHYyIHYzID0gY29uY2F0MnYgKGNvbmNhdDJ2IHYxIHYyKSB2M1xuXG5sZXQgYm9yZGVyX3ZhbHVlID93aWR0aCA/Y29sb3IgfihzdHlsZSA6IGJvcmRlcl9zdHlsZSkgKCkgPVxuICBsZXQgc3R5bGUgPVxuICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICB8IGBSaWRnZSAtPiBcInJpZGdlXCJcbiAgICB8IGBPdXRzZXQgLT4gXCJvdXRzZXRcIlxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBHcm9vdmUgLT4gXCJncm9vdmVcIlxuICAgIHwgYERhc2hlZCAtPiBcImRhc2hlZFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluc2V0IC0+IFwiaW5zZXRcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgRG91YmxlIC0+IFwiZG91YmxlXCJcbiAgICB8IGBEb3R0ZWQgLT4gXCJkb3R0ZWRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBTb2xpZCAtPiBcInNvbGlkXCJcbiAgaW5cbiAgbGV0IHdpZHRoID0gdmFsdWVfbWFwIHdpZHRoIH5mOkxlbmd0aC50b19zdHJpbmdfY3NzIGluXG4gIGxldCBjb2xvciA9IHZhbHVlX21hcCBjb2xvciB+ZjpDb2xvci50b19zdHJpbmdfY3NzIGluXG4gIGNvbmNhdDN2IHdpZHRoIHN0eWxlIGNvbG9yXG47O1xuXG5sZXQgY3JlYXRlX2JvcmRlciA/c2lkZSAoKSA9XG4gIGxldCBmaWVsZCA9XG4gICAgbWF0Y2ggc2lkZSB3aXRoXG4gICAgfCBTb21lIGBUb3AgLT4gXCJib3JkZXItdG9wXCJcbiAgICB8IFNvbWUgYEJvdHRvbSAtPiBcImJvcmRlci1ib3R0b21cIlxuICAgIHwgU29tZSBgUmlnaHQgLT4gXCJib3JkZXItcmlnaHRcIlxuICAgIHwgU29tZSBgTGVmdCAtPiBcImJvcmRlci1sZWZ0XCJcbiAgICB8IE5vbmUgLT4gXCJib3JkZXJcIlxuICBpblxuICBmdW4gP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgLT5cbiAgICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWU6KGJvcmRlcl92YWx1ZSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSlcbjs7XG5cbmxldCBib3JkZXJfdG9wID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgVG9wICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX2JvdHRvbSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9XG4gIGNyZWF0ZV9ib3JkZXIgfnNpZGU6YEJvdHRvbSAoKSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKVxuOztcblxubGV0IGJvcmRlcl9sZWZ0ID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgTGVmdCAoKSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKVxuOztcblxubGV0IGJvcmRlcl9yaWdodCA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9XG4gIGNyZWF0ZV9ib3JkZXIgfnNpZGU6YFJpZ2h0ICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID0gY3JlYXRlX2JvcmRlciA/c2lkZTpOb25lID93aWR0aCA/Y29sb3IgfnN0eWxlICgpICgpXG5cbmxldCBvdXRsaW5lID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJvdXRsaW5lXCIgfnZhbHVlOihib3JkZXJfdmFsdWUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkpXG47O1xuXG5sZXQgYm9yZGVyX2NvbGxhcHNlIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYFNlcGFyYXRlIC0+IFwic2VwYXJhdGVcIlxuICAgIHwgYENvbGxhcHNlIC0+IFwiY29sbGFwc2VcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYm9yZGVyLWNvbGxhcHNlXCIgfnZhbHVlXG47O1xuXG5sZXQgYm9yZGVyX3NwYWNpbmcgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiYm9yZGVyLXNwYWNpbmdcIlxubGV0IGJvcmRlcl9yYWRpdXMgbCA9IGNyZWF0ZSB+ZmllbGQ6XCJib3JkZXItcmFkaXVzXCIgfnZhbHVlOihMZW5ndGgudG9fc3RyaW5nX2NzcyBsKVxuXG50eXBlIHRleHRfZGVjb3JhdGlvbl9saW5lID1cbiAgWyBgTm9uZVxuICB8IGBVbmRlcmxpbmVcbiAgfCBgT3ZlcmxpbmVcbiAgfCBgTGluZV90aHJvdWdoXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF1cblxudHlwZSB0ZXh0X2RlY29yYXRpb25fc3R5bGUgPVxuICBbIGBTb2xpZFxuICB8IGBEb3VibGVcbiAgfCBgRG90dGVkXG4gIHwgYERhc2hlZFxuICB8IGBXYXZ5XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHRleHRfZGVjb3JhdGlvbiA/c3R5bGUgP2NvbG9yIH5saW5lICgpID1cbiAgbGV0IHZhbHVlID1cbiAgICBsZXQgbGluZSA9XG4gICAgICBMaXN0Lm1hcCBsaW5lIH5mOihmdW5jdGlvblxuICAgICAgICB8IGBMaW5lX3Rocm91Z2ggLT4gXCJsaW5lLXRocm91Z2hcIlxuICAgICAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgICAgfCBgT3ZlcmxpbmUgLT4gXCJvdmVybGluZVwiXG4gICAgICAgIHwgYFVuZGVybGluZSAtPiBcInVuZGVybGluZVwiXG4gICAgICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCIpXG4gICAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCJcbiAgICBpblxuICAgIGxldCBzdHlsZSA9XG4gICAgICBtYXRjaCBzdHlsZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgfCBTb21lIGBTb2xpZCAtPiBcInNvbGlkXCJcbiAgICAgIHwgU29tZSBgRG91YmxlIC0+IFwiZG91YmxlXCJcbiAgICAgIHwgU29tZSBgRG90dGVkIC0+IFwiZG90dGVkXCJcbiAgICAgIHwgU29tZSBgRGFzaGVkIC0+IFwiZGFzaGVkXCJcbiAgICAgIHwgU29tZSBgV2F2eSAtPiBcIndhdnlcIlxuICAgICAgfCBTb21lIGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICB8IFNvbWUgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICBpblxuICAgIGxldCBjb2xvciA9IHZhbHVlX21hcCBjb2xvciB+ZjpDb2xvci50b19zdHJpbmdfY3NzIGluXG4gICAgY29uY2F0M3YgbGluZSBzdHlsZSBjb2xvclxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInRleHQtZGVjb3JhdGlvblwiIH52YWx1ZVxuOztcblxudHlwZSBjb250ZW50X2FsaWdubWVudCA9XG4gIFsgYE5vcm1hbFxuICB8IGBGbGV4X3N0YXJ0XG4gIHwgYEZsZXhfZW5kXG4gIHwgYENlbnRlclxuICB8IGBTcGFjZV9iZXR3ZWVuXG4gIHwgYFNwYWNlX2Fyb3VuZFxuICB8IGBTcGFjZV9ldmVubHlcbiAgfCBgU3RyZXRjaFxuICBdXG5cbmxldCBjb250ZW50X2FsaWdubWVudF90b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgfCBgRmxleF9zdGFydCAtPiBcImZsZXgtc3RhcnRcIlxuICB8IGBGbGV4X2VuZCAtPiBcImZsZXgtZW5kXCJcbiAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgfCBgU3BhY2VfYmV0d2VlbiAtPiBcInNwYWNlLWJldHdlZW5cIlxuICB8IGBTcGFjZV9hcm91bmQgLT4gXCJzcGFjZS1hcm91bmRcIlxuICB8IGBTcGFjZV9ldmVubHkgLT4gXCJzcGFjZS1ldmVubHlcIlxuICB8IGBTdHJldGNoIC0+IFwic3RyZXRjaFwiXG47O1xuXG50eXBlIGl0ZW1fYWxpZ25tZW50ID1cbiAgWyBgQXV0b1xuICB8IGBGbGV4X3N0YXJ0XG4gIHwgYEZsZXhfZW5kXG4gIHwgYENlbnRlclxuICB8IGBCYXNlbGluZVxuICB8IGBTdHJldGNoXG4gIF1cblxubGV0IGl0ZW1fYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gIHwgYEZsZXhfc3RhcnQgLT4gXCJmbGV4LXN0YXJ0XCJcbiAgfCBgRmxleF9lbmQgLT4gXCJmbGV4LWVuZFwiXG4gIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gIHwgYEJhc2VsaW5lIC0+IFwiYmFzZWxpbmVcIlxuICB8IGBTdHJldGNoIC0+IFwic3RyZXRjaFwiXG47O1xuXG50eXBlIGp1c3RpZnlfY29udGVudCA9XG4gIFsgYEZsZXhfc3RhcnRcbiAgfCBgRmxleF9lbmRcbiAgfCBgQ2VudGVyXG4gIHwgYFNwYWNlX2JldHdlZW5cbiAgfCBgU3BhY2VfYXJvdW5kXG4gIHwgYFNwYWNlX2V2ZW5seVxuICBdXG5cbmxldCBqdXN0aWZ5X2NvbnRlbnRfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYEZsZXhfc3RhcnQgLT4gXCJmbGV4LXN0YXJ0XCJcbiAgfCBgRmxleF9lbmQgLT4gXCJmbGV4LWVuZFwiXG4gIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gIHwgYFNwYWNlX2JldHdlZW4gLT4gXCJzcGFjZS1iZXR3ZWVuXCJcbiAgfCBgU3BhY2VfYXJvdW5kIC0+IFwic3BhY2UtYXJvdW5kXCJcbiAgfCBgU3BhY2VfZXZlbmx5IC0+IFwic3BhY2UtZXZlbmx5XCJcbjs7XG5cbmxldCBmbGV4X2NvbnRhaW5lclxuICAgICAgPyhpbmxpbmUgPSBmYWxzZSlcbiAgICAgID8oZGlyZWN0aW9uID0gYFJvdylcbiAgICAgID8od3JhcCA9IGBOb3dyYXApXG4gICAgICA/YWxpZ25faXRlbXNcbiAgICAgID9hbGlnbl9jb250ZW50XG4gICAgICA/anVzdGlmeV9jb250ZW50XG4gICAgICA/cm93X2dhcDpyZ1xuICAgICAgP2NvbHVtbl9nYXA6Y2dcbiAgICAgICgpXG4gID1cbiAgbGV0IGRpcmVjdGlvbiA9XG4gICAgbGV0IG1ha2VfZGlyIHYgPSBjcmVhdGVfcmF3IH5maWVsZDpcImZsZXgtZGlyZWN0aW9uXCIgfnZhbHVlOnYgaW5cbiAgICBtYXRjaCBkaXJlY3Rpb24gd2l0aFxuICAgIHwgYFJvdyAtPiBtYWtlX2RpciBcInJvd1wiXG4gICAgfCBgUm93X3JldmVyc2UgLT4gbWFrZV9kaXIgXCJyb3ctcmV2ZXJzZVwiXG4gICAgfCBgQ29sdW1uIC0+IG1ha2VfZGlyIFwiY29sdW1uXCJcbiAgICB8IGBDb2x1bW5fcmV2ZXJzZSAtPiBtYWtlX2RpciBcImNvbHVtbi1yZXZlcnNlXCJcbiAgICB8IGBEZWZhdWx0IC0+IGVtcHR5XG4gIGluXG4gIGxldCB3cmFwID1cbiAgICBsZXQgbWFrZV93cmFwIHYgPSBjcmVhdGVfcmF3IH5maWVsZDpcImZsZXgtd3JhcFwiIH52YWx1ZTp2IGluXG4gICAgbWF0Y2ggd3JhcCB3aXRoXG4gICAgfCBgTm93cmFwIC0+IG1ha2Vfd3JhcCBcIm5vd3JhcFwiXG4gICAgfCBgV3JhcCAtPiBtYWtlX3dyYXAgXCJ3cmFwXCJcbiAgICB8IGBXcmFwX3JldmVyc2UgLT4gbWFrZV93cmFwIFwid3JhcC1yZXZlcnNlXCJcbiAgICB8IGBEZWZhdWx0IC0+IGVtcHR5XG4gIGluXG4gIGxldCBhbGlnbl9pdGVtcyA9XG4gICAgbWF0Y2ggYWxpZ25faXRlbXMgd2l0aFxuICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgIHwgU29tZSBhIC0+IGNyZWF0ZV9yYXcgfmZpZWxkOlwiYWxpZ24taXRlbXNcIiB+dmFsdWU6KGl0ZW1fYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgYSlcbiAgaW5cbiAgbGV0IGFsaWduX2NvbnRlbnQgPVxuICAgIG1hdGNoIGFsaWduX2NvbnRlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgIHwgU29tZSBhIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFsaWduLWNvbnRlbnRcIiB+dmFsdWU6KGNvbnRlbnRfYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgYSlcbiAgaW5cbiAgbGV0IGp1c3RpZnlfY29udGVudCA9XG4gICAgbWF0Y2gganVzdGlmeV9jb250ZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICB8IFNvbWUgYSAtPlxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJqdXN0aWZ5LWNvbnRlbnRcIiB+dmFsdWU6KGp1c3RpZnlfY29udGVudF90b19zdHJpbmdfY3NzIGEpXG4gIGluXG4gIGxldCByb3dfZ2FwID0gT3B0aW9uLnZhbHVlX21hcCB+ZGVmYXVsdDplbXB0eSB+Zjpyb3dfZ2FwIHJnIGluXG4gIGxldCBjb2x1bW5fZ2FwID0gT3B0aW9uLnZhbHVlX21hcCB+ZGVmYXVsdDplbXB0eSB+Zjpjb2x1bW5fZ2FwIGNnIGluXG4gIGNvbmNhdFxuICAgIFsgZGlzcGxheSAoaWYgaW5saW5lIHRoZW4gYElubGluZV9mbGV4IGVsc2UgYEZsZXgpXG4gICAgOyBkaXJlY3Rpb25cbiAgICA7IHdyYXBcbiAgICA7IGFsaWduX2l0ZW1zXG4gICAgOyBhbGlnbl9jb250ZW50XG4gICAgOyBqdXN0aWZ5X2NvbnRlbnRcbiAgICA7IGNvbHVtbl9nYXBcbiAgICA7IHJvd19nYXBcbiAgICBdXG47O1xuXG5sZXQgZmxleF9pdGVtID9vcmRlciA/KGJhc2lzID0gYEF1dG8pID8oc2hyaW5rID0gMS4pIH5ncm93ICgpID1cbiAgbGV0IG9yZGVyID1cbiAgICBPcHRpb24ubWFwIG9yZGVyIH5mOihmdW4gaSAtPiBjcmVhdGVfcmF3IH5maWVsZDpcIm9yZGVyXCIgfnZhbHVlOihJbnQudG9fc3RyaW5nIGkpKVxuICAgIHw+IE9wdGlvbi50b19saXN0XG4gICAgfD4gTGlzdC5qb2luXG4gIGluXG4gIGxldCBmbGV4ID1cbiAgICBsZXQgYmFzaXMgPSBBdXRvX29yX2xlbmd0aC50b19zdHJpbmdfY3NzIGJhc2lzIGluXG4gICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmbGV4XCIgfnZhbHVlOlslc3RyaW5nIFwiJXtmMnMgNiBncm93fSAle2YycyA2IHNocmlua30gJXtiYXNpc31cIl1cbiAgaW5cbiAgY29uY2F0IFsgZmxleDsgb3JkZXIgXVxuOztcblxubGV0IGFsaWduX3NlbGYgYSA9XG4gIGxldCB2YWx1ZSA9IGl0ZW1fYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgYSBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImFsaWduLXNlbGZcIiB+dmFsdWVcbjs7XG5cbmxldCByZXNpemUgKHZhbHVlIDogWyBgTm9uZSB8IGBCb3RoIHwgYEhvcml6b250YWwgfCBgVmVydGljYWwgfCBjc3NfZ2xvYmFsX3ZhbHVlcyBdKSA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBCb3RoIC0+IFwiYm90aFwiXG4gICAgfCBgSG9yaXpvbnRhbCAtPiBcImhvcml6b250YWxcIlxuICAgIHwgYFZlcnRpY2FsIC0+IFwidmVydGljYWxcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwicmVzaXplXCIgfnZhbHVlXG47O1xuXG5sZXQgYW5pbWF0aW9uIH5uYW1lIH5kdXJhdGlvbiA/ZGVsYXkgP2RpcmVjdGlvbiA/ZmlsbF9tb2RlID9pdGVyX2NvdW50ID90aW1pbmdfZnVuY3Rpb24gKClcbiAgPVxuICBsZXQgbSA9IE9wdGlvbi5tYXAgaW5cbiAgbGV0IHNwYW5fdG9fc3RyaW5nIHMgPSBbJXN0cmluZyBcIiV7ZjJzIDIgKFRpbWVfbnMuU3Bhbi50b19zZWMgcyl9c1wiXSBpblxuICBsZXQgZGlyZWN0aW9uID1cbiAgICBtIGRpcmVjdGlvbiB+ZjooZnVuIGQgLT5cbiAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgICAgICB8IGBSZXZlcnNlIC0+IFwicmV2ZXJzZVwiXG4gICAgICAgIHwgYEFsdGVybmF0ZSAtPiBcImFsdGVybmF0ZVwiXG4gICAgICAgIHwgYEFsdGVybmF0ZV9yZXZlcnNlIC0+IFwiYWx0ZXJuYXRlLXJldmVyc2VcIlxuICAgICAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICAgIGluXG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1kaXJlY3Rpb25cIiB+dmFsdWUpXG4gIGluXG4gIGxldCBmaWxsX21vZGUgPVxuICAgIG0gZmlsbF9tb2RlIH5mOihmdW4gZiAtPlxuICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgbWF0Y2ggZiB3aXRoXG4gICAgICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICAgICAgfCBgRm9yd2FyZHMgLT4gXCJmb3J3YXJkc1wiXG4gICAgICAgIHwgYEJhY2t3YXJkcyAtPiBcImJhY2t3YXJkc1wiXG4gICAgICAgIHwgYEJvdGggLT4gXCJib3RoXCJcbiAgICAgICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgICBpblxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tZmlsbC1tb2RlXCIgfnZhbHVlKVxuICBpblxuICBbIFNvbWUgKGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLW5hbWVcIiB+dmFsdWU6bmFtZSlcbiAgOyBTb21lIChjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1kdXJhdGlvblwiIH52YWx1ZTooc3Bhbl90b19zdHJpbmcgZHVyYXRpb24pKVxuICA7IG0gZGVsYXkgfmY6KGZ1biBzIC0+IGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWRlbGF5XCIgfnZhbHVlOihzcGFuX3RvX3N0cmluZyBzKSlcbiAgOyBtIGl0ZXJfY291bnQgfmY6KGZ1biBpIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnRcIiB+dmFsdWU6KEludC50b19zdHJpbmcgaSkpXG4gIDsgbSB0aW1pbmdfZnVuY3Rpb24gfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uXCIgfnZhbHVlKVxuICA7IGRpcmVjdGlvblxuICA7IGZpbGxfbW9kZVxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbnR5cGUgdXNlcl9zZWxlY3QgPVxuICBbIGBBbGxcbiAgfCBgQXV0b1xuICB8IGBOb25lXG4gIHwgYFRleHRcbiAgXVxuXG5sZXQgdXNlcl9zZWxlY3RfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYEFsbCAtPiBcImFsbFwiXG4gIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICB8IGBUZXh0IC0+IFwidGV4dFwiXG47O1xuXG5sZXQgdXNlcl9zZWxlY3QgcyA9XG4gIGxldCB2YWx1ZSA9IHVzZXJfc2VsZWN0X3RvX3N0cmluZ19jc3MgcyBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInVzZXItc2VsZWN0XCIgfnZhbHVlXG47O1xuXG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCVleHBlY3RfdGVzdCBcInRvX3N0cmluZ19jc3MgLT4gb2Zfc3RyaW5nX2Nzc19leG4gLT4gdG9fc3RyaW5nX2Nzc1wiID1cbiAgICAgIGxldCB0IGNzcyA9XG4gICAgICAgIGxldCBzID0gdG9fc3RyaW5nX2NzcyBjc3MgaW5cbiAgICAgICAgbGV0IHMyID0gdG9fc3RyaW5nX2NzcyAob2Zfc3RyaW5nX2Nzc19leG4gcykgaW5cbiAgICAgICAgcHJpbnRfZW5kbGluZSBzO1xuICAgICAgICBwcmludF9lbmRsaW5lIHMyXG4gICAgICBpblxuICAgICAgdCAoZmxleF9pdGVtIH5ncm93OjEuMCAoKSBAPiBvdmVyZmxvdyBgU2Nyb2xsKTtcbiAgICAgIHQgKGZsZXhfY29udGFpbmVyIH5pbmxpbmU6dHJ1ZSB+ZGlyZWN0aW9uOmBDb2x1bW4gKCkgQD4gYm9yZGVyIH5zdHlsZTpgRGFzaGVkICgpKTtcbiAgICAgIHQgKGNvbG9yIChgUkdCQSAoQ29sb3IuUkdCQS5jcmVhdGUgfnI6MTAwIH5nOjEwMCB+YjoxMDAgKCkpKSk7XG4gICAgICB0XG4gICAgICAgIChjb2xvclxuICAgICAgICAgICAoYEhTTEFcbiAgICAgICAgICAgICAgKENvbG9yLkhTTEEuY3JlYXRlXG4gICAgICAgICAgICAgICAgIH5oOjEwMFxuICAgICAgICAgICAgICAgICB+czooUGVyY2VudC5vZl9tdWx0IDAuNzUpXG4gICAgICAgICAgICAgICAgIH5sOihQZXJjZW50Lm9mX211bHQgMC42MClcbiAgICAgICAgICAgICAgICAgKCkpKSk7XG4gICAgICB0IChjcmVhdGUgfmZpZWxkOlwiY29udGVudFwiIH52YWx1ZTp7fFwiO1wifH0pO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBmbGV4OiAxLjAwMDAwMCAxLjAwMDAwMCBhdXRvO292ZXJmbG93OiBzY3JvbGxcbiAgICBmbGV4OiAxLjAwMDAwMCAxLjAwMDAwMCBhdXRvO292ZXJmbG93OiBzY3JvbGxcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO2ZsZXgtd3JhcDogbm93cmFwO2JvcmRlcjogZGFzaGVkXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtmbGV4LXdyYXA6IG5vd3JhcDtib3JkZXI6IGRhc2hlZFxuICAgIGNvbG9yOiByZ2IoMTAwLDEwMCwxMDApXG4gICAgY29sb3I6IHJnYigxMDAsMTAwLDEwMClcbiAgICBjb2xvcjogaHNsKDEwMCw3NSUsNjAlKVxuICAgIGNvbG9yOiBoc2woMTAwLDc1JSw2MCUpXG4gICAgY29udGVudDogXCI7XCJcbiAgICBjb250ZW50OiBcIjtcIiB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZ3JhZGllbnRzXCIgPVxuICAgICAgbGV0IHAgeCA9IFBlcmNlbnQub2ZfbXVsdCB4IGluXG4gICAgICBsZXQgYyBzID0gYE5hbWUgcyBpblxuICAgICAgbGV0IHQgY3NzID0gcHJpbnRfZW5kbGluZSAodG9fc3RyaW5nX2NzcyBjc3MpIGluXG4gICAgICB0XG4gICAgICAgIChiYWNrZ3JvdW5kX2ltYWdlXG4gICAgICAgICAgIChgTGluZWFyX2dyYWRpZW50XG4gICAgICAgICAgICAgIHsgZGlyZWN0aW9uID0gYERlZyA5MFxuICAgICAgICAgICAgICA7IHN0b3BzID1cbiAgICAgICAgICAgICAgICAgIFsgcCAwLiwgYyBcImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIDsgcCAwLjIsIGMgXCIjZmYwMDAwXCJcbiAgICAgICAgICAgICAgICAgIDsgcCAwLjQsIGMgXCJyZWRcIlxuICAgICAgICAgICAgICAgICAgOyAoIHAgMS5cbiAgICAgICAgICAgICAgICAgICAgLCBgUkdCQVxuICAgICAgICAgICAgICAgICAgICAgICAgKENvbG9yLlJHQkEuY3JlYXRlIH5yOjEwMCB+Zzo1MCB+YjozMCB+YTooUGVyY2VudC5vZl9tdWx0IDAuNzUpICgpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0pKTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8IGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgYmxhY2sgMC4wMDAwMDAlLCAjZmYwMDAwIDIwLjAwMDAwMCUsIHJlZCA0MC4wMDAwMDAlLCByZ2JhKDEwMCw1MCwzMCwwLjc1KSAxMDAuMDAwMDAwJSkgfH1dO1xuICAgICAgdFxuICAgICAgICAoYmFja2dyb3VuZF9pbWFnZVxuICAgICAgICAgICAoYFJhZGlhbF9ncmFkaWVudCB7IHN0b3BzID0gWyBwIDAuLCBjIFwiYmxhY2tcIjsgcCAxLiwgYyBcInJlZFwiIF0gfSkpO1xuICAgICAgWyVleHBlY3Qge3wgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KGJsYWNrIDAuMDAwMDAwJSwgcmVkIDEwMC4wMDAwMDAlKSB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuIiwib3BlbiBKc19vZl9vY2FtbFxuXG5sZXQgdG9fanNfc3RyaW5nIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvU3RyaW5nXG5sZXQgdG9fanNfc3RyaW5nX2ZpeGVkIGRpZ2l0cyB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b0ZpeGVkIGRpZ2l0c1xubGV0IHRvX2pzX3N0cmluZ19wcmVjaXNpb24gZGlnaXRzIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvUHJlY2lzaW9uIGRpZ2l0c1xubGV0IHRvX2pzX3N0cmluZ19leHBvbmVudGlhbCB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b0V4cG9uZW50aWFsXG5sZXQgdG9fc3RyaW5nIHZhbHVlID0gdG9fanNfc3RyaW5nIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xubGV0IHRvX3N0cmluZ19maXhlZCBkaWdpdHMgdmFsdWUgPSB0b19qc19zdHJpbmdfZml4ZWQgZGlnaXRzIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xubGV0IHRvX3N0cmluZ19wcmVjaXNpb24gZGlnaXRzIHZhbHVlID0gdG9fanNfc3RyaW5nX3ByZWNpc2lvbiBkaWdpdHMgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5sZXQgdG9fc3RyaW5nX2V4cG9uZW50aWFsIHZhbHVlID0gdG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIGxldCBvcGVuIENvcmUgaW5cbiAgbGV0IHByaW50IGYgPSBwcmludGYgXCIlc1wiICh0b19zdHJpbmcgZikgaW5cbiAgcHJpbnQgMS47XG4gIFslZXhwZWN0IHt8IDEgfH1dO1xuICBwcmludCBGbG9hdC5uYW47XG4gIFslZXhwZWN0IHt8IE5hTiB8fV07XG4gIHByaW50IEZsb2F0LmluZmluaXR5O1xuICBbJWV4cGVjdCB7fCBJbmZpbml0eSB8fV07XG4gIHByaW50IEZsb2F0Lm5lZ19pbmZpbml0eTtcbiAgWyVleHBlY3Qge3wgLUluZmluaXR5IHx9XTtcbiAgcHJpbnQgMC4wMDAwMDAwMTtcbiAgWyVleHBlY3Qge3wgMWUtOCB8fV07XG4gIHByaW50ICgtMS4pO1xuICBbJWV4cGVjdCB7fCAtMSB8fV07XG4gIHByaW50IDEuMDAwMDAwMTtcbiAgWyVleHBlY3Qge3wgMS4wMDAwMDAxIHx9XVxuOztcbiIsIm9wZW4gQmFzZVxub3BlbiBKc19vZl9vY2FtbFxuaW5jbHVkZSBVaV9lZmZlY3RcblxuKCogQWxsIHZpc2liaWxpdHkgaGFuZGxlcnMgc2VlIGFsbCBldmVudHMsIHNvIGEgc2ltcGxlIGxpc3QgaXMgZW5vdWdoLiAgKilcbmxldCB2aXNpYmlsaXR5X2hhbmRsZXJzIDogKHVuaXQgLT4gdW5pdCkgbGlzdCByZWYgPSByZWYgW11cblxubW9kdWxlIHR5cGUgVmlzaWJpbGl0eV9oYW5kbGVyID0gc2lnXG4gIHZhbCBoYW5kbGUgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgRGVmaW5lX3Zpc2liaWxpdHkgKFZIIDogVmlzaWJpbGl0eV9oYW5kbGVyKSA9IHN0cnVjdFxuICBsZXQgKCkgPSB2aXNpYmlsaXR5X2hhbmRsZXJzIDo9IFZILmhhbmRsZSA6OiAhdmlzaWJpbGl0eV9oYW5kbGVyc1xuZW5kXG5cbnR5cGUgXyB0ICs9XG4gIHwgVmlld3BvcnRfY2hhbmdlZFxuICB8IFN0b3BfcHJvcGFnYXRpb25cbiAgfCBTdG9wX2ltbWVkaWF0ZV9wcm9wYWdhdGlvblxuICB8IFByZXZlbnRfZGVmYXVsdFxuXG5sZXQgc2VxdWVuY2VfYXNfc2libGluZyBsZWZ0IH51bmxlc3Nfc3RvcHBlZCA9XG4gIGxldCByZWMgY29udGFpbnNfc3RvcCA9IGZ1bmN0aW9uXG4gICAgfCBNYW55IGVzIC0+IExpc3QuZXhpc3RzIGVzIH5mOmNvbnRhaW5zX3N0b3BcbiAgICB8IFN0b3BfaW1tZWRpYXRlX3Byb3BhZ2F0aW9uIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgaWYgY29udGFpbnNfc3RvcCBsZWZ0IHRoZW4gbGVmdCBlbHNlIFVpX2VmZmVjdC5NYW55IFsgbGVmdDsgdW5sZXNzX3N0b3BwZWQgKCkgXVxuOztcblxuKCogV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IGRvbSBldmVudCBoZXJlIHNvIHRoYXRcbiAgIG1vdmVtZW50IGJldHdlZW4gW1Zkb20uRWZmZWN0LkV4cGVydC5oYW5kbGVdIGFuZFxuICAgW1VpX2NvbmNyZXRlLkVmZmVjdC5FeHBlcnQuaGFuZGxlXSBrZWVwcyB0aGUgb3JpZ2luYWxcbiAgIGRvbSBldmVudCBhcm91bmQuICopXG5sZXQgY3VycmVudF9kb21fZXZlbnQgPSByZWYgTm9uZVxuXG5sZXQgKCkgPVxuICBIYXNodGJsLmFkZF9leG5cbiAgICBFeHBlcnQuaGFuZGxlcnNcbiAgICB+a2V5OlN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLihpZCAob2ZfdmFsIFZpZXdwb3J0X2NoYW5nZWQpKVxuICAgIH5kYXRhOihmdW4gXyAtPiBMaXN0Lml0ZXIgIXZpc2liaWxpdHlfaGFuZGxlcnMgfmY6KGZ1biBmIC0+IGYgKCkpKVxuOztcblxubGV0ICgpID1cbiAgSGFzaHRibC5hZGRfZXhuXG4gICAgRXhwZXJ0LmhhbmRsZXJzXG4gICAgfmtleTpTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCBTdG9wX3Byb3BhZ2F0aW9uKSlcbiAgICB+ZGF0YTooZnVuIF8gLT4gT3B0aW9uLml0ZXIgIWN1cnJlbnRfZG9tX2V2ZW50IH5mOkRvbV9odG1sLnN0b3BQcm9wYWdhdGlvbilcbjs7XG5cbmxldCAoKSA9XG4gIEhhc2h0YmwuYWRkX2V4blxuICAgIEV4cGVydC5oYW5kbGVyc1xuICAgIH5rZXk6U3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuKGlkIChvZl92YWwgUHJldmVudF9kZWZhdWx0KSlcbiAgICB+ZGF0YTooZnVuIF8gLT4gT3B0aW9uLml0ZXIgIWN1cnJlbnRfZG9tX2V2ZW50IH5mOkRvbS5wcmV2ZW50RGVmYXVsdClcbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGhhbmRsZV9ub25fZG9tX2V2ZW50X2V4biA9IEV4cGVydC5oYW5kbGVcblxuICBsZXQgaGFuZGxlIGRvbV9ldmVudCBldmVudCA9XG4gICAgbGV0IG9sZCA9ICFjdXJyZW50X2RvbV9ldmVudCBpblxuICAgIGN1cnJlbnRfZG9tX2V2ZW50IDo9IFNvbWUgKGRvbV9ldmVudCA6PiBEb21faHRtbC5lbGVtZW50IERvbS5ldmVudCBKcy50KTtcbiAgICBFeHBlcnQuaGFuZGxlIGV2ZW50O1xuICAgIGN1cnJlbnRfZG9tX2V2ZW50IDo9IG9sZFxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBKc19vZl9vY2FtbFxuXG5tb2R1bGUgdHlwZSBTID0gSG9va3NfaW50Zi5TXG5tb2R1bGUgdHlwZSBJbnB1dCA9IEhvb2tzX2ludGYuSW5wdXRcblxubGV0IGNhbmNlbF9hbmltYXRpb25fZnJhbWUgaWQgPSBEb21faHRtbC53aW5kb3cjI2NhbmNlbEFuaW1hdGlvbkZyYW1lIGlkXG5cbmxldCByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBmID1cbiAgRG9tX2h0bWwud2luZG93IyNyZXF1ZXN0QW5pbWF0aW9uRnJhbWUgKEpzLndyYXBfY2FsbGJhY2sgZilcbjs7XG5cbm1vZHVsZSBFeHRyYSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVCA6XG4gICAgICAgIHsgdHlwZV9pZCA6ICdhIFR5cGVfZXF1YWwuSWQudFxuICAgICAgICA7IHZhbHVlIDogJ2FcbiAgICAgICAgfVxuICAgICAgICAtPiB0XG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB7IHR5cGVfaWQ7IHZhbHVlIH0pID0gVHlwZV9lcXVhbC5JZC50b19zZXhwIHR5cGVfaWQgdmFsdWVcbmVuZFxuXG50eXBlIHQgPVxuICB8IFQgOlxuICAgICAgeyBpbnB1dCA6ICdpbnB1dFxuICAgICAgOyBpbnB1dF9pZCA6ICdpbnB1dCBUeXBlX2VxdWFsLklkLnRcbiAgICAgIDsgY29tYmluZV9pbnB1dHMgOiAnaW5wdXQgLT4gJ2lucHV0IC0+ICdpbnB1dFxuICAgICAgOyBpbml0IDpcbiAgICAgICAgICAnaW5wdXRcbiAgICAgICAgICAtPiBEb21faHRtbC5lbGVtZW50IEpzLnRcbiAgICAgICAgICAtPiAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgOyB1cGRhdGUgOlxuICAgICAgICAgICdpbnB1dFxuICAgICAgICAgIC0+ICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICAgICAgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50XG4gICAgICAgICAgLT4gJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgIDsgZGVzdHJveSA6XG4gICAgICAgICAgJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgICAgICAtPiBEb21faHRtbC5lbGVtZW50IEpzLnRcbiAgICAgICAgICAtPiB1bml0XG4gICAgICA7IGlkIDogKCdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlKSBDb3JlLlR5cGVfZXF1YWwuSWQudFxuICAgICAgfVxuICAgICAgLT4gdFxuXG5sZXQgZ2VuZXJpY19ob29rID0gbGF6eSBKcy5VbnNhZmUuKGdldCBnbG9iYWwgKEpzLnN0cmluZyBcIkdlbmVyaWNIb29rXCIpKVxuXG5sZXQgbWFrZV9ob29rIH5jb21iaW5lX2lucHV0cyB+aW5pdCB+ZXh0cmE6KGlucHV0LCBpbnB1dF9pZCkgfnVwZGF0ZSB+ZGVzdHJveSB+aWQgPVxuICBUIHsgaW5pdDsgY29tYmluZV9pbnB1dHM7IGlucHV0OyBpbnB1dF9pZDsgdXBkYXRlOyBkZXN0cm95OyBpZCB9XG47O1xuXG5sZXQgcGFjayAoVCB7IGluaXQ7IGlucHV0OyBpbnB1dF9pZDsgdXBkYXRlOyBkZXN0cm95OyBpZDsgXyB9KSA9XG4gIGxldCB3cmFwIGEgPSBhIHw+IEpzLndyYXBfY2FsbGJhY2sgfD4gSnMuVW5zYWZlLmluamVjdCBpblxuICBsZXQgaW5pdCA9IHdyYXAgKGluaXQgaW5wdXQpIGluXG4gIGxldCB1cGRhdGUgPSB3cmFwICh1cGRhdGUgaW5wdXQpIGluXG4gIGxldCBkZXN0cm95ID0gd3JhcCBkZXN0cm95IGluXG4gIGxldCBnZW5lcmljX2hvb2sgPSBMYXp5LmZvcmNlIGdlbmVyaWNfaG9vayBpblxuICBsZXQgZXh0cmEgPSBFeHRyYS5UIHsgdHlwZV9pZCA9IGlucHV0X2lkOyB2YWx1ZSA9IGlucHV0IH0gaW5cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgZ2VuZXJpY19ob29rXG4gICAgW3wgaW5pdDsgdXBkYXRlOyBkZXN0cm95OyBpZCB8PiBKcy5VbnNhZmUuaW5qZWN0OyBleHRyYSB8PiBKcy5VbnNhZmUuaW5qZWN0IHxdXG47O1xuXG5sZXQgY29tYmluZSAoVCBsZWZ0KSAoVCByaWdodCkgPVxuICBtYXRjaCBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzcyBsZWZ0LmlucHV0X2lkIHJpZ2h0LmlucHV0X2lkIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgZXByaW50X3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcImhvb2tzIGRvIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUsIHNvIHRoZXkgY2Fubm90IGJlIGNvbWJpbmVkOyB0YWtpbmcgdGhlIHNlY29uZCBcXFxuICAgICAgICAgb2YgdGhlIHR3b1wiXTtcbiAgICBUIHJpZ2h0XG4gIHwgU29tZSBUIC0+IFQgeyByaWdodCB3aXRoIGlucHV0ID0gcmlnaHQuY29tYmluZV9pbnB1dHMgbGVmdC5pbnB1dCByaWdodC5pbnB1dCB9XG47O1xuXG5tb2R1bGUgTWFrZSAoUyA6IFMpID0gc3RydWN0XG4gIGxldCBpbnB1dF9hbmRfc3RhdGVfaWQgPVxuICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlwiXCIgKGZ1biAoaW5wdXQsIF9hbmltYXRpb25faWQsIHN0YXRlKSAtPlxuICAgICAgWyVzZXhwX29mOiBTLklucHV0LnQgKiBvcGFxdWVdIChpbnB1dCwgc3RhdGUpKVxuICA7O1xuXG4gIGxldCBpbnB1dF9pZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlwiXCIgUy5JbnB1dC5zZXhwX29mX3RcblxuICBsZXQgaW5pdCBpbnB1dCBlbGVtZW50ID1cbiAgICBsZXQgc3RhdGUgPSBTLmluaXQgaW5wdXQgZWxlbWVudCBpblxuICAgIGxldCBhbmltYXRpb25faWQgPVxuICAgICAgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgKGZ1biBfIC0+IFMub25fbW91bnQgaW5wdXQgc3RhdGUgZWxlbWVudClcbiAgICBpblxuICAgIGlucHV0LCBhbmltYXRpb25faWQsIHN0YXRlXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSBpbnB1dCAob2xkX2lucHV0LCBhbmltYXRpb25faWQsIHN0YXRlKSBlbGVtZW50ID1cbiAgICBTLnVwZGF0ZSB+b2xkX2lucHV0IH5uZXdfaW5wdXQ6aW5wdXQgc3RhdGUgZWxlbWVudDtcbiAgICBpbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZVxuICA7O1xuXG4gIGxldCBkZXN0cm95IChvbGRfaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGUpIGVsZW1lbnQgPVxuICAgIGNhbmNlbF9hbmltYXRpb25fZnJhbWUgYW5pbWF0aW9uX2lkO1xuICAgIFMuZGVzdHJveSBvbGRfaW5wdXQgc3RhdGUgZWxlbWVudFxuICA7O1xuXG4gIGxldCBjcmVhdGUgaW5wdXQgPVxuICAgIG1ha2VfaG9va1xuICAgICAgfmV4dHJhOihpbnB1dCwgaW5wdXRfaWQpXG4gICAgICB+Y29tYmluZV9pbnB1dHM6Uy5JbnB1dC5jb21iaW5lXG4gICAgICB+aWQ6aW5wdXRfYW5kX3N0YXRlX2lkXG4gICAgICB+aW5pdFxuICAgICAgfnVwZGF0ZVxuICAgICAgfmRlc3Ryb3lcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBsZXQgdHlwZV9pZCA9IGlucHV0X2lkXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgRXh0cmEgPSBFeHRyYVxuZW5kXG4iLCJvcGVuISBKc19vZl9vY2FtbFxub3BlbiEgSnNcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSBtYXAgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgc2V0IDogJ2EgLT4gJ2IgLT4gdW5pdCBtZXRoXG4gIG1ldGhvZCBnZXQgOiAnYSAtPiAnYiBPcHRkZWYudCBtZXRoXG4gIG1ldGhvZCBkZWxldGUgOiAnYSAtPiB1bml0IG1ldGhcbmVuZFxuXG50eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBtYXAgSnMudFxuXG5sZXQgbWFwIDogdW5pdCAtPiAoJ2EsICdiKSBtYXAgSnMudCBKcy5jb25zdHIgPSBmdW4gKCkgLT4gVW5zYWZlLmdsb2JhbCMjLl9NYXBcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBtYXAgPSBtYXAgKCkgaW5cbiAgbmV3JWpzIG1hcFxuOztcblxubGV0IHNldCB0IGEgYiA9IHQjI3NldCBhIGJcbmxldCBnZXQgdCBhID0gSnMuT3B0ZGVmLnRvX29wdGlvbiAodCMjZ2V0IGEpXG5sZXQgZGVsZXRlIHQgYSA9IHQjI2RlbGV0ZSBhXG4iLCJvcGVuIEJhc2Vcbm9wZW4gSnNfb2Zfb2NhbWxcblxubW9kdWxlIEpzX29iamVjdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBKcy5VbnNhZmUuYW55XG5cbiAgbGV0IGVtcHR5X29iaiAoKSA9IEpzLlVuc2FmZS5vYmogW3x8XVxuICBsZXQgc2V0X3Byb3BfYXNjaWkgdCBuYW1lIHZhbHVlID0gSnMuVW5zYWZlLnNldCB0IChKcy5zdHJpbmcgbmFtZSkgdmFsdWVcbiAgbGV0IGdldF9wcm9wX2FzY2lpIHQgbmFtZSA9IEpzLlVuc2FmZS5nZXQgdCAoSnMuc3RyaW5nIG5hbWUpXG4gIGxldCBoYXNfcHJvcGVydHkgdCBuYW1lID0gSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5nZXQgdCAoSnMuc3RyaW5nIG5hbWUpKVxuICBsZXQgaXNfdW5kZWZpbmVkIGEgPSBub3QgKEpzLk9wdGRlZi50ZXN0IGEpXG5lbmRcblxubW9kdWxlIEF0dHJzID0gc3RydWN0XG4gIHR5cGUgdCA9IEpzX29iamVjdC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA6IHQgPSBKc19vYmplY3QuZW1wdHlfb2JqICgpXG5cbiAgbGV0IHNldF9wcm9wZXJ0eSA6IHQgLT4gc3RyaW5nIC0+IHQgLT4gdW5pdCA9XG4gICAgZnVuIHQgbmFtZSB2YWx1ZSAtPiBKc19vYmplY3Quc2V0X3Byb3BfYXNjaWkgdCBuYW1lIHZhbHVlXG4gIDs7XG5cbiAgbGV0IGhhc19wcm9wZXJ0eSA6IHQgLT4gc3RyaW5nIC0+IGJvb2wgPSBKc19vYmplY3QuaGFzX3Byb3BlcnR5XG5cbiAgbGV0IGhhc19hdHRyaWJ1dGUgdCBuYW1lID1cbiAgICBKc19vYmplY3QuaGFzX3Byb3BlcnR5IHQgXCJhdHRyaWJ1dGVzXCJcbiAgICAmJiBKc19vYmplY3QuaGFzX3Byb3BlcnR5IChKc19vYmplY3QuZ2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIikgbmFtZVxuICA7O1xuXG4gIGxldCBzZXRfYXR0cmlidXRlIDogdCAtPiBzdHJpbmcgLT4gdCAtPiB1bml0ID1cbiAgICBmdW4gdCBuYW1lIHZhbHVlIC0+XG4gICAgICBpZiBKc19vYmplY3QuaXNfdW5kZWZpbmVkIChKc19vYmplY3QuZ2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIilcbiAgICAgIHRoZW4gSnNfb2JqZWN0LnNldF9wcm9wX2FzY2lpIHQgXCJhdHRyaWJ1dGVzXCIgKEpzX29iamVjdC5lbXB0eV9vYmogKCkpO1xuICAgICAgSnNfb2JqZWN0LnNldF9wcm9wX2FzY2lpIChKc19vYmplY3QuZ2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIikgbmFtZSB2YWx1ZVxuICA7O1xuZW5kXG5cbnR5cGUgdmlydHVhbF9kb21fbm9kZVxudHlwZSB2aXJ0dWFsX2RvbV9wYXRjaFxuXG5tb2R1bGUgVmlydHVhbF9kb20gPSBzdHJ1Y3RcbiAgY2xhc3MgdHlwZSB2aXJ0dWFsX2RvbSA9IG9iamVjdFxuICAgIG1ldGhvZCBfVk5vZGUgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50XG4gICAgICAgLT4gQXR0cnMudFxuICAgICAgIC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmXG4gICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50KVxuICAgICAgICBKcy5jb25zdHJcbiAgICAgICAgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF9WVGV4dCA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50KSBKcy5jb25zdHIgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNyZWF0ZUVsZW1lbnQgOiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCBkaWZmIDpcbiAgICAgIHZpcnR1YWxfZG9tX25vZGUgSnMudCAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgLT4gdmlydHVhbF9kb21fcGF0Y2ggSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcGF0Y2ggOlxuICAgICAgRG9tX2h0bWwuZWxlbWVudCBKcy50IC0+IHZpcnR1YWxfZG9tX3BhdGNoIEpzLnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCBzdmcgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50XG4gICAgICAgLT4gQXR0cnMudFxuICAgICAgIC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmXG4gICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50KVxuICAgICAgICBKcy5jb25zdHJcbiAgICAgICAgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBsZXQgdmlydHVhbF9kb20gOiB2aXJ0dWFsX2RvbSBKcy50ID0gSnMuVW5zYWZlLmdsb2JhbCAjIy4gVmlydHVhbERvbVxuZW5kXG5cbm1vZHVsZSBOb2RlID0gc3RydWN0XG4gIG9wZW4gVmlydHVhbF9kb21cblxuICB0eXBlIHQgPSB2aXJ0dWFsX2RvbV9ub2RlIEpzLnRcblxuICBsZXQgdG9fZG9tIDogdmlydHVhbF9kb21fbm9kZSBKcy50IC0+IERvbV9odG1sLmVsZW1lbnQgSnMudCA9XG4gICAgZnVuIHZub2RlIC0+IHZpcnR1YWxfZG9tIyNjcmVhdGVFbGVtZW50IHZub2RlXG4gIDs7XG5cbiAgbGV0IG5vZGVcbiAgICA6ICBzdHJpbmcgLT4gQXR0cnMudCAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBzdHJpbmcgb3B0aW9uXG4gICAgICAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnRcbiAgICA9XG4gICAgZnVuIHRhZyBhdHRycyBjaGlsZHJlbiBrZXkgLT5cbiAgICAgIGxldCB0YWcgPSBKcy5zdHJpbmcgdGFnIGluXG4gICAgICBsZXQga2V5ID1cbiAgICAgICAgbWF0Y2gga2V5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEpzLk9wdGRlZi5lbXB0eVxuICAgICAgICB8IFNvbWUga2V5IC0+IEpzLk9wdGRlZi5yZXR1cm4gKEpzX29mX29jYW1sLkpzLnN0cmluZyBrZXkpXG4gICAgICBpblxuICAgICAgbGV0IHZub2RlID0gdmlydHVhbF9kb20jIy5fVk5vZGUgaW5cbiAgICAgIG5ldyVqcyB2bm9kZSB0YWcgYXR0cnMgY2hpbGRyZW4ga2V5XG4gIDs7XG5cbiAgbGV0IHN2Z1xuICAgIDogIHN0cmluZyAtPiBBdHRycy50IC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHN0cmluZyBvcHRpb25cbiAgICAgIC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudFxuICAgID1cbiAgICBmdW4gdGFnIGF0dHJzIGNoaWxkcmVuIGtleSAtPlxuICAgICAgbGV0IHRhZyA9IEpzLnN0cmluZyB0YWcgaW5cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBtYXRjaCBrZXkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gSnMuT3B0ZGVmLmVtcHR5XG4gICAgICAgIHwgU29tZSBrZXkgLT4gSnMuT3B0ZGVmLnJldHVybiAoSnMuc3RyaW5nIGtleSlcbiAgICAgIGluXG4gICAgICBsZXQgdnN2ZyA9IHZpcnR1YWxfZG9tIyMuc3ZnIGluXG4gICAgICBuZXclanMgdnN2ZyB0YWcgYXR0cnMgY2hpbGRyZW4ga2V5XG4gIDs7XG5cbiAgbGV0IHRleHQgcyA9XG4gICAgbGV0IHZ0ZXh0ID0gdmlydHVhbF9kb20jIy5fVlRleHQgaW5cbiAgICBuZXclanMgdnRleHQgKEpzLnN0cmluZyBzKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBQYXRjaCA9IHN0cnVjdFxuICBvcGVuIFZpcnR1YWxfZG9tXG5cbiAgdHlwZSB0ID0gdmlydHVhbF9kb21fcGF0Y2ggSnMudFxuXG4gIGxldCBkaWZmIDogdmlydHVhbF9kb21fbm9kZSBKcy50IC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCAtPiB2aXJ0dWFsX2RvbV9wYXRjaCBKcy50ID1cbiAgICBmdW4gYSBiIC0+IHZpcnR1YWxfZG9tIyNkaWZmIGEgYlxuICA7O1xuXG4gIGxldCBwYXRjaCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiB2aXJ0dWFsX2RvbV9wYXRjaCBKcy50IC0+IERvbV9odG1sLmVsZW1lbnQgSnMudCA9XG4gICAgZnVuIGVsZW1lbnQgdm5vZGUgLT4gdmlydHVhbF9kb20jI3BhdGNoIGVsZW1lbnQgdm5vZGVcbiAgOztcblxuICBsZXQgY3JlYXRlIH5wcmV2aW91cyB+Y3VycmVudCA9IGRpZmYgcHJldmlvdXMgY3VycmVudFxuICBsZXQgYXBwbHkgPSBwYXRjaFxuXG4gIGxldCBpc19lbXB0eSA6IHQgLT4gYm9vbCA9XG4gICAgbGV0IGYgPVxuICAgICAgSnMuVW5zYWZlLnB1cmVfanNfZXhwclxuICAgICAgICB7anN8XG4gICAgICAgIChmdW5jdGlvbiAocGF0Y2gpIHtcbiAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcGF0Y2gpIHtcbiAgICAgICAgICAgIGlmIChrZXkgIT09ICdhJykgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0pXG4gICAgICB8anN9XG4gICAgaW5cbiAgICBmdW4gKHQgOiB0KSAtPiBKcy5VbnNhZmUuZnVuX2NhbGwgZiBbfCBKcy5VbnNhZmUuaW5qZWN0IHQgfF0gfD4gSnMudG9fYm9vbFxuICA7O1xuZW5kXG5cbm1vZHVsZSBXaWRnZXQgPSBzdHJ1Y3RcbiAgY2xhc3MgdHlwZSBbJ3MsICdlbGVtZW50XSB3aWRnZXQgPSBvYmplY3RcbiAgICBjb25zdHJhaW50ICdlbGVtZW50ID0gI0RvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgIG1ldGhvZCB0eXBlXyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAoKiB2aXJ0dWFsLWRvbSBjb25zaWRlcnMgdHdvIHdpZGdldHMgb2YgYmVpbmcgb2YgdGhlIHNhbWUgXCJraW5kXCIgaWYgZWl0aGVyXG4gICAgICAgb2YgdGhlIGZvbGxvd2luZyBob2xkczpcblxuICAgICAgIDEuIFRoZXkgYm90aCBoYXZlIGEgXCJuYW1lXCIgYXR0cmlidXRlIGFuZCB0aGVpciBcImlkXCIgZmllbGRzIGFyZSBlcXVhbC5cbiAgICAgICAoSSB0aGluayB0aGlzIGlzIHByb2JhYmx5IGEgYnVnIGluIHZpcnR1YWwtZG9tIGFuZCBoYXZlIGZpZWxkIGFuIGlzc3VlXG4gICAgICAgb24gZ2l0aHViOiBbaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9pc3N1ZXMvMzgwXSlcblxuICAgICAgIDIuIFRoZWlyIFtpbml0XSBtZXRob2RzIGFyZSBcIj09PVwiIGVxdWFsLiBUaGlzIGlzIHRydWUgd2hlbiB1c2luZyB2aXJ0dWFsLWRvbVxuICAgICAgIHdpZGdldHMgaW4gdGhlIHVzdWFsIHN0eWxlIGluIEphdmFzY3JpcHQsIHNpbmNlIHRoZSBbaW5pdF0gbWV0aG9kIHdpbGwgYmUgZGVmaW5lZFxuICAgICAgIG9uIGEgcHJvdG90eXBlLCBidXQgaXMgbm90IHRydWUgaW4gdGhpcyBiaW5kaW5nIGFzIGl0IGlzIHJlZGVmaW5lZCBmb3IgZWFjaFxuICAgICAgIGNhbGwgdG8gW3dpZGdldF0uXG5cbiAgICAgICBTbywgd2UgZ28gd2l0aCBvcHRpb24gMSBhbmQgbXVzdCBoYXZlIGEgdHJpdmlhbCBmaWVsZCBjYWxsZWQgW25hbWVdLlxuICAgICopXG4gICAgbWV0aG9kIG5hbWUgOiB1bml0IEpzLndyaXRlb25seV9wcm9wXG4gICAgbWV0aG9kIGlkIDogKCdzICogJ2VsZW1lbnQpIFR5cGVfZXF1YWwuSWQudCBKcy5wcm9wXG4gICAgbWV0aG9kIHN0YXRlIDogJ3MgSnMucHJvcFxuICAgIG1ldGhvZCB2ZG9tRm9yVGVzdGluZyA6IE5vZGUudCBMYXp5LnQgb3B0aW9uIEpzLnByb3BcbiAgICBtZXRob2QgaW5mbyA6IFNleHAudCBMYXp5LnQgb3B0aW9uIEpzLnByb3BcbiAgICBtZXRob2QgZGVzdHJveSA6ICgnZWxlbWVudCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHVwZGF0ZSA6XG4gICAgICAoKCdvdGhlcl9zdGF0ZSwgJ290aGVyX2VsZW1lbnQpIHdpZGdldCBKcy50IC0+ICdlbGVtZW50IC0+ICdlbGVtZW50KSBKcy5jYWxsYmFja1xuICAgICAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGluaXQgOiAodW5pdCAtPiAnZWxlbWVudCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcbiAgZW5kXG5cbiAgKCogV2UgbW9kZWwgSlMgbGV2ZWwgb2JqZWN0cyBoZXJlIHNvIHRoZXJlIGlzIGEgbG90IG9mIHRocm93aW5nIGF3YXkgb2YgdHlwZVxuICAgICBpbmZvcm1hdGlvbi4gIFdlIGNvdWxkIHBvc3NpYmx5IHRyeSB0byByZWRpc2NvdmVyIG1vcmUgb2YgaXQuICBPciBtYXliZSB3ZVxuICAgICBzaG91bGQgc2VlIGlmIHdlIGNhbiBnZXQgcmlkIFdpZGdldCBjb21wbGV0ZWx5LlxuICAgICB0aGUgdW5pdCB0eXBlIHBhcmFtZXRlcnMgaGVyZSBhcmUgbm90IGFjdHVhbGx5IHVuaXQsIGJ1dCBwYXJ0IG9mXG4gICAgIHRoZSB0eXBlIGluZm8gd2UgaGF2ZSB0aHJvd24gYXdheSBpbnRvIG91ciBkYW5jZVxuICAgICB3aXRoIEpTICopXG4gIHR5cGUgdCA9IE5vZGUudFxuXG4gICgqIGhlcmUgaXMgaG93IHdlIHRocm93IGF3YXkgdHlwZSBpbmZvcm1hdGlvbi4gIE91ciBnb29kIG9sZCBmcmllbmQgT2JqLm1hZ2ljLFxuICAgICBidXQgY29uc3RyYWluZWQgYSBsaXR0bGUgYml0ICopXG4gIGxldCBub2RlX29mX3dpZGdldCA6IChfLCBfKSB3aWRnZXQgSnMudCAtPiBOb2RlLnQgPSBTdGRsaWIuT2JqLm1hZ2ljXG5cbiAgbW9kdWxlIFN0YXRlX2tlZXBlciA9IHN0cnVjdFxuICAgIHR5cGUgYm94ID0gVCA6ICgnYSAqIF8pIFR5cGVfZXF1YWwuSWQudCAqICdhIC0+IGJveFxuXG4gICAgbGV0IHQgOiAoSnMuVW5zYWZlLmFueSwgYm94KSBKc19tYXAudCA9IEpzX21hcC5jcmVhdGUgKClcbiAgICBsZXQgc2V0IH5pZCBlbGVtZW50IHN0YXRlID0gSnNfbWFwLnNldCB0IChKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQpIChUIChpZCwgc3RhdGUpKVxuXG4gICAgbGV0IGdldCA6IHR5cGUgYSBiLiBpZDooYSAqIGIpIFR5cGVfZXF1YWwuSWQudCAtPiBfIC0+IGEgPVxuICAgICAgZnVuIH5pZCBlbGVtZW50IC0+XG4gICAgICBsZXQgZWxlbWVudCA9IEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudCBpblxuICAgICAgbWF0Y2ggSnNfbWFwLmdldCB0IGVsZW1lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBpZF9zZXhwID0gVHlwZV9lcXVhbC5JZC5zZXhwX29mX3QgKGZ1biBfIC0+IFNleHAuQXRvbSBcIjxvcGFxdWU+XCIpIGlkIGluXG4gICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiQlVHOiBlbGVtZW50IHN0YXRlIG5vdCBmb3VuZFwiIChpZF9zZXhwIDogU2V4cC50KV1cbiAgICAgIHwgU29tZSAoVCAoZl9pZCwgc3RhdGUpKSAtPlxuICAgICAgICBsZXQgVCA9IFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biBpZCBmX2lkIGluXG4gICAgICAgIHN0YXRlXG4gICAgOztcblxuICAgIGxldCBkZWxldGUgZWxlbWVudCA9IEpzX21hcC5kZWxldGUgdCAoSnMuVW5zYWZlLmluamVjdCBlbGVtZW50KVxuICBlbmRcblxuICBsZXQgY3JlYXRlXG4gICAgICAgICh0eXBlIHMpXG4gICAgICAgID8odmRvbV9mb3JfdGVzdGluZyA6IE5vZGUudCBMYXp5LnQgb3B0aW9uKVxuICAgICAgICA/KGRlc3Ryb3kgOiBzIC0+ICdlbGVtZW50IC0+IHVuaXQgPSBmdW4gXyBfIC0+ICgpKVxuICAgICAgICA/KHVwZGF0ZSA6IHMgLT4gJ2VsZW1lbnQgLT4gcyAqICdlbGVtZW50ID0gZnVuIHMgZWx0IC0+IHMsIGVsdClcbiAgICAgICAgfihpZCA6IChzICogJ2VsZW1lbnQpIFR5cGVfZXF1YWwuSWQudClcbiAgICAgICAgfihpbml0IDogdW5pdCAtPiBzICogJ2VsZW1lbnQpXG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCBvYmogOiAocywgXykgd2lkZ2V0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgICBvYmojIy50eXBlXyA6PSBKcy5zdHJpbmcgXCJXaWRnZXRcIjtcbiAgICBvYmojIy5uYW1lIDo9ICgpO1xuICAgIG9iaiMjLmlkIDo9IGlkO1xuICAgIG9iaiMjLnZkb21Gb3JUZXN0aW5nIDo9IHZkb21fZm9yX3Rlc3Rpbmc7XG4gICAgb2JqIyMuaW5pdFxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biAoKSAtPlxuICAgICAgbGV0IHMwLCBkb21fbm9kZSA9IGluaXQgKCkgaW5cbiAgICAgIFN0YXRlX2tlZXBlci5zZXQgfmlkIGRvbV9ub2RlIHMwO1xuICAgICAgZG9tX25vZGUpO1xuICAgIG9iaiMjLnVwZGF0ZVxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBwcmV2IGRvbV9ub2RlIC0+XG4gICAgICAoKiBUaGUgW3VwZGF0ZV0gbWV0aG9kIG9mIFtvYmpdIGlzIG9ubHkgY2FsbGVkIGJ5IHZpcnR1YWwtZG9tIGFmdGVyIGl0IGhhcyBjaGVja2VkXG4gICAgICAgICB0aGF0IHRoZSBbaWRdcyBvZiBbcHJldl0gYW5kIFtvYmpdIGFyZSBcIj09PVwiIGVxdWFsLiBUaHVzIFtzYW1lX3dpdG5lc3NfZXhuXSB3aWxsXG4gICAgICAgICBuZXZlciByYWlzZS4gKilcbiAgICAgIG1hdGNoIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biBwcmV2IyMuaWQgaWQgd2l0aFxuICAgICAgfCBUeXBlX2VxdWFsLlQgLT5cbiAgICAgICAgbGV0IHByZXZfc3RhdGUgPSBTdGF0ZV9rZWVwZXIuZ2V0IH5pZCBkb21fbm9kZSBpblxuICAgICAgICBsZXQgc3RhdGUnLCBkb21fbm9kZScgPSB1cGRhdGUgcHJldl9zdGF0ZSBkb21fbm9kZSBpblxuICAgICAgICBTdGF0ZV9rZWVwZXIuZGVsZXRlIGRvbV9ub2RlO1xuICAgICAgICBTdGF0ZV9rZWVwZXIuc2V0IH5pZCBkb21fbm9kZScgc3RhdGUnO1xuICAgICAgICBkb21fbm9kZScpO1xuICAgIG9iaiMjLmRlc3Ryb3lcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gZG9tX25vZGUgLT5cbiAgICAgIGxldCBwcmV2X3N0YXRlID0gU3RhdGVfa2VlcGVyLmdldCB+aWQgZG9tX25vZGUgaW5cbiAgICAgIGRlc3Ryb3kgcHJldl9zdGF0ZSBkb21fbm9kZTtcbiAgICAgIFN0YXRlX2tlZXBlci5kZWxldGUgZG9tX25vZGUpO1xuICAgIG5vZGVfb2Zfd2lkZ2V0IG9ialxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuIEpzX29mX29jYW1sXG5tb2R1bGUgVmRvbV9yYXcgPSBSYXdcblxubGV0ICgpID1cbiAgKCogdXNlIHRoZSBuYXRpdmUtamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBmbG9hdCAtPiBzdHJpbmcgd2l0aCBhIGZpeGVkIG51bWJlciBvZlxuICAgICBudW1iZXJzIGFmdGVyIHRoZSBkZWNpbWFsIHBsYWNlLiAqKVxuICBDc3NfZ2VuLlByaXZhdGUuZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgOj0gRG9tX2Zsb2F0LnRvX3N0cmluZ19maXhlZFxuOztcblxuKCoqIFRoaXMgaGFzIDMga2luZHMgb2YgY29uc3RydWN0b3JzLlxuICAgIHt2XG4gICAgICAtIGNvbnN0cnVjdG9ycyBmb3IgcHJvcGVydGllcyAvIGF0dHJpYnV0ZXMgZm9yIHdoaWNoIHdlXG4gICAgICAgIGhhdmUgd3JpdHRlbiBmaXJzdCBjbGFzcyBvY2FtbCByZXByZXNlbnRhdGlvbnMgKHNvIGZhciBvbmx5IFN0eWxlLFxuICAgICAgICBDbGFzcywgYW5kIEhhbmRsZXIpXG5cbiAgICAgIC0gVGhvc2Ugd2hpY2ggd2UgaW1tZWRpYXRlbHkgY29udmVydCBpbnRvIEpzIGNhbGxlZCBSYXcsIHdoaWNoXG4gICAgICAgIGluIHR1cm4gaGFzIHR3byBjYXNlczpcbiAgICAgICAgLSBQcm9wZXJ0eSBmb3IgcHJvcGVydGllcyBvbiB0aGUgRE9NXG4gICAgICAgIC0gQXR0cmlidXRlIGZvciBhdHRyaWJ1dGVzIG9uIHRoZSBET01cblxuICAgICAgLSBIb29rcywgd2hpY2ggcmVnaXN0ZXIgY2FsbGJhY2tzIG9uIHByb3BlcnR5IGFkZGl0aW9uIGFuZCByZW1vdmFsLlxuICAgIHZ9XG5cbiAgICBHZW5lcmFsbHkgc3BlYWtpbmcgb25lIHNob3VsZCBhdm9pZCBjcmVhdGluZyBhIHByb3BlcnR5IG9yIGF0dHJpYnV0ZVxuICAgIGZvciBzb21ldGhpbmcgZm9yIHdoaWNoIHdlIGhhdmUgYSBmaXJzdCBjbGFzcyByZXByZXNlbnRhdGlvbi5cbiopXG5cbm1vZHVsZSBFdmVudF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUIDpcbiAgICAgICAgeyB0eXBlX2lkIDogJ2EgVHlwZV9lcXVhbC5JZC50XG4gICAgICAgIDsgaGFuZGxlciA6ICgjRG9tX2h0bWwuZXZlbnQgYXMgJ2EpIEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudFxuICAgICAgICB9XG4gICAgICAgIC0+IHRcblxuICBsZXQgY29tYmluZVxuICAgICAgICAoVCB7IHR5cGVfaWQgPSBsdGlkOyBoYW5kbGVyID0gbGhhbmRsZXIgfSlcbiAgICAgICAgKFQgeyB0eXBlX2lkID0gcnRpZDsgaGFuZGxlciA9IHJoYW5kbGVyIH0gYXMgcmlnaHQpXG4gICAgPVxuICAgICgqIElmIHRoZXkgYXJlIG5vdCB0aGUgc2FtZSB3aXRuZXNzLCB0aGVuIGl0IGlzIGEgYnVnIGluIHZpcnR1YWxfZG9tLCBzaW5jZVxuICAgICAgIHdlIGRvIG5vdCBleHBvc2UgW29uXSBhbnltb3JlIHdoaWNoIG1lYW5zIHRoaXMgbGlicmFyeSBjYW4gZGV0ZXJtaW5lZCB0aGVcbiAgICAgICBbVHlwZV9lcXVhbC5JZF0gY29ycmVzcG9uZGluZyB0byBlYWNoIGV2ZW50LiB2aXJ0dWFsX2RvbSBtYWludGFpbnMgdGhlXG4gICAgICAgaW52YXJpYW50IHRoYXQgYW55IHR3byBldmVudHMgd2l0aCB0aGUgc2FtZSBuYW1lIHdpbGwgcHJvZHVjZSBoYW5kbGVyc1xuICAgICAgIHRoYXQgaGF2ZSB0aGUgc2FtZSBbVHlwZV9lcXVhbC5JZF0uICopXG4gICAgbWF0Y2ggVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3MgbHRpZCBydGlkIHdpdGhcbiAgICB8IFNvbWUgVCAtPlxuICAgICAgVFxuICAgICAgICB7IHR5cGVfaWQgPSBsdGlkXG4gICAgICAgIDsgaGFuZGxlciA9XG4gICAgICAgICAgICAoZnVuIHZhbHVlIC0+XG4gICAgICAgICAgICAgICBFZmZlY3Quc2VxdWVuY2VfYXNfc2libGluZyAobGhhbmRsZXIgdmFsdWUpIH51bmxlc3Nfc3RvcHBlZDooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIHJoYW5kbGVyIHZhbHVlKSlcbiAgICAgICAgfVxuICAgIHwgTm9uZSAtPlxuICAgICAgZXByaW50X3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJCVUchICBUeXBlLWlkcyBmb3IgZXZlbnQgaGFuZGxlcnMgZGlmZmVyXCJcbiAgICAgICAgICAgIChsdGlkIDogXyBUeXBlX2VxdWFsLklkLnQpXG4gICAgICAgICAgICAocnRpZCA6IF8gVHlwZV9lcXVhbC5JZC50KV07XG4gICAgICByaWdodFxuICA7O1xuZW5kXG5cbnR5cGUgdCA9XG4gIHwgUHJvcGVydHkgb2ZcbiAgICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgOiBib29sXG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgdmFsdWUgOiBKcy5VbnNhZmUuYW55XG4gICAgICB9XG4gIHwgQXR0cmlidXRlIG9mXG4gICAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzIDogYm9vbFxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICA7IHZhbHVlIDogSnMuVW5zYWZlLmFueVxuICAgICAgfVxuICB8IEhhbmRsZXIgb2ZcbiAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyBoYW5kbGVyIDogRXZlbnRfaGFuZGxlci50XG4gICAgICB9XG4gIHwgSG9vayBvZlxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IGhvb2sgOiBIb29rcy50XG4gICAgICB9XG4gIHwgU3R5bGUgb2YgQ3NzX2dlbi50XG4gIHwgQ2xhc3Mgb2Ygc3RyaW5nIGxpc3RcbiAgfCBNYW55IG9mIHQgbGlzdFxuICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgb2ZcbiAgICAgIHQgbGlzdCAqIChDc3NfZ2VuLnQgLT4gQ3NzX2dlbi50KSAqIChzdHJpbmcgbGlzdCAtPiBzdHJpbmcgbGlzdClcbiAgfCBNYW55X3dpdGhvdXRfbWVyZ2Ugb2YgdCBsaXN0XG5cbmxldCBjcmVhdGUgbmFtZSB2YWx1ZSA9XG4gIEF0dHJpYnV0ZVxuICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZTsgbmFtZTsgdmFsdWUgPSBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgdmFsdWUpIH1cbjs7XG5cbmxldCBjcmVhdGVfZmxvYXQgbmFtZSB2YWx1ZSA9XG4gIEF0dHJpYnV0ZVxuICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZVxuICAgIDsgbmFtZVxuICAgIDsgdmFsdWUgPSBKcy5VbnNhZmUuaW5qZWN0IChEb21fZmxvYXQudG9fanNfc3RyaW5nIHZhbHVlKVxuICAgIH1cbjs7XG5cbmxldCBwcm9wZXJ0eSBuYW1lIHZhbHVlID0gUHJvcGVydHkgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSB9XG5cbmxldCBzdHJpbmdfcHJvcGVydHkgbmFtZSB2YWx1ZSA9XG4gIFByb3BlcnR5XG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB2YWx1ZSkgfVxuOztcblxubGV0IGJvb2xfcHJvcGVydHkgbmFtZSB2YWx1ZSA9XG4gIFByb3BlcnR5XG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKEpzLmJvb2wgdmFsdWUpIH1cbjs7XG5cbmxldCBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZ1bmN0aW9uXG4gIHwgQXR0cmlidXRlIGF0dHJpYnV0ZSAtPiBBdHRyaWJ1dGUgeyBhdHRyaWJ1dGUgd2l0aCBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IHRydWUgfVxuICB8IFByb3BlcnR5IHByb3BlcnR5IC0+IFByb3BlcnR5IHsgcHJvcGVydHkgd2l0aCBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IHRydWUgfVxuICB8IHQgLT4gdFxuOztcblxubGV0IGNyZWF0ZV9ob29rIG5hbWUgaG9vayA9IEhvb2sgeyBuYW1lOyBob29rIH1cbmxldCBtYW55IGF0dHJzID0gTWFueSBhdHRyc1xubGV0IG1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyA9IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRyc1xubGV0IGVtcHR5ID0gTWFueSBbXVxubGV0IGNvbWJpbmUgbGVmdCByaWdodCA9IE1hbnkgWyBsZWZ0OyByaWdodCBdXG5sZXQgKCBAICkgPSBjb21iaW5lXG5cbm1vZHVsZSBVbm1lcmdlZF93YXJuaW5nX21vZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5vX3dhcm5pbmdzXG4gICAgfCBBbGxfd2FybmluZ3NcbiAgICB8IFN0b3BfYWZ0ZXJfcXVvdGEgb2YgaW50XG5cbiAgbGV0IHdhcm5pbmdfY291bnQgPSByZWYgMFxuICBsZXQgY3VycmVudCA9IHJlZiAoU3RvcF9hZnRlcl9xdW90YSAxMDApXG5cbiAgbGV0IHdhcm5fcyBzID1cbiAgICBpbmNyIHdhcm5pbmdfY291bnQ7XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgTm9fd2FybmluZ3MgLT4gKClcbiAgICB8IEFsbF93YXJuaW5ncyAtPiBlcHJpbnRfcyBzXG4gICAgfCBTdG9wX2FmdGVyX3F1b3RhIHF1b3RhIC0+XG4gICAgICBsZXQgd2FybmluZ19jb3VudCA9ICF3YXJuaW5nX2NvdW50IGluXG4gICAgICBpZiB3YXJuaW5nX2NvdW50IDw9IHF1b3RhXG4gICAgICB0aGVuIChcbiAgICAgICAgZXByaW50X3MgcztcbiAgICAgICAgaWYgd2FybmluZ19jb3VudCA9IHF1b3RhXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBlcHJpbnRfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiV0FSTklORzogcmVhY2hlZCB3YXJuaW5nIG1lc3NhZ2UgcXVvdGE7IG5vIG1vcmUgbWVzc2FnZXMgd2lsbCBiZSBwcmludGVkXCJcbiAgICAgICAgICAgICAgICAocXVvdGEgOiBpbnQpXSlcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBsZXQgcmVzZXRfd2FybmluZ19jb3VudCAoKSA9IHdhcm5pbmdfY291bnQgOj0gMFxuICBlbmRcbmVuZFxuXG50eXBlIG1lcmdlID1cbiAgeyBzdHlsZXMgOiBDc3NfZ2VuLnRcbiAgOyBjbGFzc2VzIDogc3RyaW5nIGxpc3RcbiAgOyBoYW5kbGVycyA6IEV2ZW50X2hhbmRsZXIudCBNYXAuTShTdHJpbmcpLnRcbiAgOyBob29rcyA6IEhvb2tzLnQgTWFwLk0oU3RyaW5nKS50XG4gIH1cblxubGV0IGNvbWJpbmluZ19tYXBfYWRkIG1hcCBrZXkgdmFsdWUgfmNvbWJpbmUgPVxuICBNYXAudXBkYXRlIG1hcCBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgfCBTb21lIGV4aXN0aW5nX3ZhbHVlIC0+IGNvbWJpbmUgfmtleSBleGlzdGluZ192YWx1ZSB2YWx1ZVxuICAgIHwgTm9uZSAtPiB2YWx1ZSlcbjs7XG5cbmxldCBlbXB0eV9tZXJnZSA9XG4gIHsgc3R5bGVzID0gQ3NzX2dlbi5lbXB0eVxuICA7IGNsYXNzZXMgPSBbXVxuICA7IGhhbmRsZXJzID0gTWFwLmVtcHR5IChtb2R1bGUgU3RyaW5nKVxuICA7IGhvb2tzID0gTWFwLmVtcHR5IChtb2R1bGUgU3RyaW5nKVxuICB9XG47O1xuXG5sZXQgdG9fcmF3IGF0dHIgPVxuICBsZXQgYXR0cnMgPSBbIGF0dHIgXSBpblxuICAoKiBXaGVuIGlucHV0IGVsZW1lbnRzIGhhdmUgdGhlaXIgdmFsdWUgc2V0IHRvIHdoYXQgaXQgYWxyZWFkeSBpc1xuICAgICB0aGUgY3Vyc29yIGdldHMgbW92ZWQgdG8gdGhlIGVuZCBvZiB0aGUgZmllbGQgZXZlbiB3aGVuIHRoZSB1c2VyXG4gICAgIGlzIGVkaXRpbmcgaW4gdGhlIG1pZGRsZS4gU29mdFNldEhvb2sgKGZyb20gLi9zb2Z0LXNldC1ob29rLmpzKVxuICAgICBjb21wYXJlcyBiZWZvcmUgc2V0dGluZywgYXZvaWRpbmcgdGhlIHByb2JsZW0ganVzdCBsaWtlIGluXG4gICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9NYXR0LUVzY2gvdmlydHVhbC1kb20vYmxvYi85NDdlY2Y5MmI2N2QyNWJiNjkzYTBmNjI1ZmE4ZTkwYzA5OTg4N2Q1L3ZpcnR1YWwtaHlwZXJzY3JpcHQvaW5kZXguanMjTDQzLUw1MVxuXG4gICAgIG5vdGUgdGhhdCBFbG0ncyB2aXJ0dWFsLWRvbSBpbmNsdWRlcyBhIHdvcmthcm91bmQgZm9yIHRoaXMgc29cbiAgICAgaWYgd2Ugc3dpdGNoIHRvIHRoYXQgdGhlIHdvcmthcm91bmQgaGVyZSB3aWxsIGJlIHVubmVjZXNzYXJ5LlxuICAgICBodHRwczovL2dpdGh1Yi5jb20vZWxtLWxhbmcvdmlydHVhbC1kb20vYmxvYi8xN2IzMGZiN2RlNDg2NzI1NjVkNjIyN2QzM2MwMTc2ZjA3NTc4NmRiL3NyYy9OYXRpdmUvVmlydHVhbERvbS5qcyNMNDM0LUw0MzlcbiAgKilcbiAgbGV0IGF0dHJzX29iaiA6IFZkb21fcmF3LkF0dHJzLnQgPSBWZG9tX3Jhdy5BdHRycy5jcmVhdGUgKCkgaW5cbiAgKCogW3Rha2Vfc2Vjb25kXypdIGlzIHRoZSB0cml2aWFsIG1lcmdlIGZ1bmN0aW9uIChpLmUuIG5vIG1lcmdlIGF0IGFsbCk7IGl0XG4gICAgIHRha2VzIHR3byBhdHRyaWJ1dGVzIG9mIHRoZSBzYW1lIGtpbmQsIGlnbm9yZXMgYSBmaXJzdCwgYW5kIGVtaXRzXG4gICAgIGEgd2FybmluZyBpZiBbd2Fybl9hYm91dF91bm1lcmdlZF9hdHRyaWJ1dGVzXSBpcyBlbmFibGVkLiAqKVxuICBsZXQgdGFrZV9zZWNvbmRfc3R5bGVzIGZpcnN0IHNlY29uZCA9XG4gICAgaWYgbm90IChDc3NfZ2VuLmlzX2VtcHR5IGZpcnN0KVxuICAgIHRoZW5cbiAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIHN0eWxlc1wiIChmaXJzdCA6IENzc19nZW4udCkgKHNlY29uZCA6IENzc19nZW4udCldO1xuICAgIHNlY29uZFxuICBpblxuICBsZXQgdGFrZV9zZWNvbmRfY2xhc3NlcyBmaXJzdCBzZWNvbmQgPVxuICAgIGlmIG5vdCAoTGlzdC5pc19lbXB0eSBmaXJzdClcbiAgICB0aGVuIChcbiAgICAgIGxldCBmaXJzdCA9IExpc3Quc29ydCB+Y29tcGFyZTpbJWNvbXBhcmU6IHN0cmluZ10gZmlyc3QgaW5cbiAgICAgIGxldCBzZWNvbmQgPSBMaXN0LnNvcnQgfmNvbXBhcmU6WyVjb21wYXJlOiBzdHJpbmddIHNlY29uZCBpblxuICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgY2xhc3Nlc1wiIChmaXJzdCA6IHN0cmluZyBsaXN0KSAoc2Vjb25kIDogc3RyaW5nIGxpc3QpXSk7XG4gICAgc2Vjb25kXG4gIGluXG4gIGxldCB0YWtlX3NlY29uZF9oYW5kbGVyIH5rZXk6bmFtZSBfZmlyc3Qgc2Vjb25kID1cbiAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIGhhbmRsZXJzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgbGV0IHRha2Vfc2Vjb25kX2hvb2sgfmtleTpuYW1lIF9maXJzdCBzZWNvbmQgPVxuICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3MgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBob29rc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgc2Vjb25kXG4gIGluXG4gICgqIFdlIG1lcmdlIGF0dHJpYnV0ZXMgd2hlbiB0aGV5IGFyZSB3cml0dGVuIHRvIHRoZSByYXcgYXR0cmlidXRlIG9iamVjdCxcbiAgICAgcmF0aGVyIHRoYW4gd2hlbiB0aGUgdXNlci1mYWNpbmcgbWVyZ2UgZnVuY3Rpb25zIChbbWFueV0sIFtjb21iaW5lXSwgYW5kXG4gICAgIFtAXSkgYXJlIGNhbGxlZC4gVGhpcyBzdHJhdGVneSBpcyBiZXR0ZXIgaW4gYm90aCBzcGVlZCBhbmQgbWVtb3J5IHVzYWdlLFxuICAgICBzaW5jZSBpdCBtZWFucyB3ZSBkbyBub3QgbmVlZCB0byBjb25jYXRlbmF0ZSB0aGUgbGlzdCBvZiBcInVubWVyZ2VhYmxlXCJcbiAgICAgYXR0cmlidXRlcyAoUHJvcGVydHkgYW5kIEF0dHJpYnV0ZSk7IGluc3RlYWQsIHdlIGNhbiBpdGVyYXRlIHRocm91Z2ggdGhlXG4gICAgIHRyZWUgb2YgYXR0cmlidXRlcyBhbmQgZWFnZXJseSB3cml0ZSB1bm1lcmdlYWJsZSBhdHRyaWJ1dGVzIHRvIHRoZVxuICAgICBhdHRyaWJ1dGUgb2JqZWN0IGFzIHdlIGZpbmQgdGhlbS4gSWYgdHdvIHVubWVyZ2VhYmxlIGF0dHJpYnV0ZXMgaGF2ZSB0aGVcbiAgICAgc2FtZSBuYW1lLCB0aGUgc2Vjb25kIHdpbGwgc2ltcGx5IG92ZXJ3cml0ZSB0aGUgZmlyc3QsIGFzIGRlc2lyZWQuXG5cbiAgICAgSW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGV4aXN0aW5nIGJlaGF2aW9yIG9mIHRoZSBbTXVsdGldIG1vZHVsZSAodGhhdCBpcyxcbiAgICAgaXQgbXVzdCBiZSBwb3NzaWJsZSB0byBtZXJnZSBjbGFzc2VzIGFuZCBzdHlsZXMsIGJ1dCBub3QgaG9va3MgYW5kXG4gICAgIGhhbmRsZXJzKSwgd2UgaW50cm9kdWNlIHRoZSB3b3JrYXJvdW5kIGNvbnN0cnVjdG9yXG4gICAgIFtNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzXS5cblxuICAgICBUaGVyZSBhcmUgdGh1cyB0aHJlZSBjYXNlcyB0aGF0IGVhY2ggaGF2ZSBkaWZmZXJlbnQgbWVyZ2UgYmVoYXZpb3JzOlxuICAgICAtIFNpbXBsZSBsaXN0cyAtIG5vIG1lcmdpbmdcbiAgICAgLSBMaXN0cyB3cmFwcGVkIGluIGEgW01hbnldIC0gbWVyZ2VzIGNsYXNzZXMsIHN0eWxlcywgaG9va3MsIGFuZCBoYW5kbGVyc1xuICAgICAtIExpc3RzIHdyYXBwZWQgaW4gYSBbTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlc10gLSBtZXJnZXMgY2xhc3NlcyBhbmQgc3R5bGVzXG5cbiAgICAgVG8gYXZvaWQgZHVwbGljYXRpbmcgdGhlIG1hdGNoIGV4cHJlc3Npb24gbG9naWMsIHdlIHBhcmVtZXRlcml6ZSBpdCBieSB0aGVcbiAgICAgbWVyZ2luZyBiZWhhdmlvciwgc2luY2UgXCJubyBtZXJnZVwiIHJlYWxseSBtZWFucyBcIm1lcmdlIGJ5IHRha2luZyB0aGVcbiAgICAgc2Vjb25kIG9uZVwiLiAqKVxuICBsZXQgcmVjIG1lcmdlIH5jb21iaW5lX2hvb2sgfmNvbWJpbmVfaGFuZGxlciB+Y29tYmluZV9zdHlsZXMgfmNvbWJpbmVfY2xhc3NlcyBhY2MgPVxuICAgIExpc3QuZm9sZCB+aW5pdDphY2MgfmY6KGZ1biBhY2MgYXR0ciAtPlxuICAgICAgbWF0Y2ggYXR0ciB3aXRoXG4gICAgICB8IFByb3BlcnR5IHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3M7IG5hbWU7IHZhbHVlIH0gLT5cbiAgICAgICAgaWYgUmF3LkF0dHJzLmhhc19wcm9wZXJ0eSBhdHRyc19vYmogbmFtZSAmJiBub3Qgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgICAgIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgcHJvcGVydGllc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgICAgIChtYXRjaCBuYW1lIHdpdGhcbiAgICAgICAgIHwgXCJ2YWx1ZVwiIC0+XG4gICAgICAgICAgIGxldCBzb2Z0U2V0SG9vayB4IDogSnMuVW5zYWZlLmFueSA9IEpzLlVuc2FmZS5nbG9iYWwgIyMgU29mdFNldEhvb2sgeCBpblxuICAgICAgICAgICBsZXQgdmFsdWUgPSBzb2Z0U2V0SG9vayB2YWx1ZSBpblxuICAgICAgICAgICBWZG9tX3Jhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIFwidmFsdWVcIiB2YWx1ZVxuICAgICAgICAgfCBuYW1lIC0+IFJhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIG5hbWUgdmFsdWUpO1xuICAgICAgICBhY2NcbiAgICAgIHwgQXR0cmlidXRlIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3M7IG5hbWU7IHZhbHVlIH0gLT5cbiAgICAgICAgaWYgUmF3LkF0dHJzLmhhc19hdHRyaWJ1dGUgYXR0cnNfb2JqIG5hbWUgJiYgbm90IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgICAgICBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIGF0dHJpYnV0ZXNcIiAobmFtZSA6IHN0cmluZyldO1xuICAgICAgICBSYXcuQXR0cnMuc2V0X2F0dHJpYnV0ZSBhdHRyc19vYmogbmFtZSB2YWx1ZTtcbiAgICAgICAgYWNjXG4gICAgICB8IFN0eWxlIG5ld19zdHlsZXMgLT4geyBhY2Mgd2l0aCBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIG5ld19zdHlsZXMgfVxuICAgICAgfCBDbGFzcyBuZXdfY2xhc3NlcyAtPlxuICAgICAgICB7IGFjYyB3aXRoIGNsYXNzZXMgPSBjb21iaW5lX2NsYXNzZXMgYWNjLmNsYXNzZXMgbmV3X2NsYXNzZXMgfVxuICAgICAgfCBIb29rIHsgbmFtZTsgaG9vayB9IC0+XG4gICAgICAgIHsgYWNjIHdpdGggaG9va3MgPSBjb21iaW5pbmdfbWFwX2FkZCBhY2MuaG9va3MgbmFtZSBob29rIH5jb21iaW5lOmNvbWJpbmVfaG9vayB9XG4gICAgICB8IEhhbmRsZXIgeyBuYW1lOyBoYW5kbGVyIH0gLT5cbiAgICAgICAgeyBhY2Mgd2l0aFxuICAgICAgICAgIGhhbmRsZXJzID0gY29tYmluaW5nX21hcF9hZGQgYWNjLmhhbmRsZXJzIG5hbWUgaGFuZGxlciB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgfVxuICAgICAgfCBNYW55IGF0dHJzIC0+XG4gICAgICAgIGxldCBzdWJfbWVyZ2UgPVxuICAgICAgICAgIG1lcmdlXG4gICAgICAgICAgICB+Y29tYmluZV9ob29rOihmdW4gfmtleTpfIC0+IEhvb2tzLmNvbWJpbmUpXG4gICAgICAgICAgICB+Y29tYmluZV9oYW5kbGVyOihmdW4gfmtleTpfIC0+IEV2ZW50X2hhbmRsZXIuY29tYmluZSlcbiAgICAgICAgICAgIH5jb21iaW5lX3N0eWxlczpDc3NfZ2VuLmNvbWJpbmVcbiAgICAgICAgICAgIH5jb21iaW5lX2NsYXNzZXM6Q29yZS4oIEAgKVxuICAgICAgICAgICAgZW1wdHlfbWVyZ2VcbiAgICAgICAgICAgIGF0dHJzXG4gICAgICAgIGluXG4gICAgICAgIHsgc3R5bGVzID0gY29tYmluZV9zdHlsZXMgYWNjLnN0eWxlcyBzdWJfbWVyZ2Uuc3R5bGVzXG4gICAgICAgIDsgY2xhc3NlcyA9IGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBzdWJfbWVyZ2UuY2xhc3Nlc1xuICAgICAgICA7IGhhbmRsZXJzID1cbiAgICAgICAgICAgIE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhhbmRsZXJzIHN1Yl9tZXJnZS5oYW5kbGVycyB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgOyBob29rcyA9IE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhvb2tzIHN1Yl9tZXJnZS5ob29rcyB+Y29tYmluZTpjb21iaW5lX2hvb2tcbiAgICAgICAgfVxuICAgICAgfCBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChhdHRycywgbWFwX3N0eWxlcywgbWFwX2NsYXNzZXMpIC0+XG4gICAgICAgIGxldCBzdWJfbWVyZ2UgPVxuICAgICAgICAgIG1lcmdlXG4gICAgICAgICAgICB+Y29tYmluZV9ob29rOnRha2Vfc2Vjb25kX2hvb2tcbiAgICAgICAgICAgIH5jb21iaW5lX2hhbmRsZXI6dGFrZV9zZWNvbmRfaGFuZGxlclxuICAgICAgICAgICAgfmNvbWJpbmVfc3R5bGVzOkNzc19nZW4uY29tYmluZVxuICAgICAgICAgICAgfmNvbWJpbmVfY2xhc3NlczpDb3JlLiggQCApXG4gICAgICAgICAgICBlbXB0eV9tZXJnZVxuICAgICAgICAgICAgYXR0cnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdHlsZXMgPSBtYXBfc3R5bGVzIChjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIHN1Yl9tZXJnZS5zdHlsZXMpXG4gICAgICAgIDsgY2xhc3NlcyA9IG1hcF9jbGFzc2VzIChjb21iaW5lX2NsYXNzZXMgYWNjLmNsYXNzZXMgc3ViX21lcmdlLmNsYXNzZXMpXG4gICAgICAgIDsgaGFuZGxlcnMgPVxuICAgICAgICAgICAgTWFwLm1lcmdlX3NrZXdlZCBhY2MuaGFuZGxlcnMgc3ViX21lcmdlLmhhbmRsZXJzIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICA7IGhvb2tzID0gTWFwLm1lcmdlX3NrZXdlZCBhY2MuaG9va3Mgc3ViX21lcmdlLmhvb2tzIH5jb21iaW5lOmNvbWJpbmVfaG9va1xuICAgICAgICB9XG4gICAgICB8IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyAtPlxuICAgICAgICBsZXQgc3ViX21lcmdlID1cbiAgICAgICAgICBtZXJnZVxuICAgICAgICAgICAgfmNvbWJpbmVfaG9vazp0YWtlX3NlY29uZF9ob29rXG4gICAgICAgICAgICB+Y29tYmluZV9oYW5kbGVyOnRha2Vfc2Vjb25kX2hhbmRsZXJcbiAgICAgICAgICAgIH5jb21iaW5lX3N0eWxlczp0YWtlX3NlY29uZF9zdHlsZXNcbiAgICAgICAgICAgIH5jb21iaW5lX2NsYXNzZXM6dGFrZV9zZWNvbmRfY2xhc3Nlc1xuICAgICAgICAgICAgZW1wdHlfbWVyZ2VcbiAgICAgICAgICAgIGF0dHJzXG4gICAgICAgIGluXG4gICAgICAgIHsgc3R5bGVzID0gY29tYmluZV9zdHlsZXMgYWNjLnN0eWxlcyBzdWJfbWVyZ2Uuc3R5bGVzXG4gICAgICAgIDsgY2xhc3NlcyA9IGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBzdWJfbWVyZ2UuY2xhc3Nlc1xuICAgICAgICA7IGhhbmRsZXJzID1cbiAgICAgICAgICAgIE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhhbmRsZXJzIHN1Yl9tZXJnZS5oYW5kbGVycyB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgOyBob29rcyA9IE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhvb2tzIHN1Yl9tZXJnZS5ob29rcyB+Y29tYmluZTpjb21iaW5lX2hvb2tcbiAgICAgICAgfSlcbiAgaW5cbiAgbGV0IG1lcmdlID1cbiAgICBtZXJnZVxuICAgICAgfmNvbWJpbmVfaG9vazp0YWtlX3NlY29uZF9ob29rXG4gICAgICB+Y29tYmluZV9oYW5kbGVyOnRha2Vfc2Vjb25kX2hhbmRsZXJcbiAgICAgIH5jb21iaW5lX3N0eWxlczp0YWtlX3NlY29uZF9zdHlsZXNcbiAgICAgIH5jb21iaW5lX2NsYXNzZXM6dGFrZV9zZWNvbmRfY2xhc3Nlc1xuICAgICAgZW1wdHlfbWVyZ2VcbiAgICAgIGF0dHJzXG4gIGluXG4gIE1hcC5pdGVyaSBtZXJnZS5ob29rcyB+ZjooZnVuIH5rZXk6bmFtZSB+ZGF0YTpob29rIC0+XG4gICAgUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogbmFtZSAoSG9va3MucGFjayBob29rKSk7XG4gIE1hcC5pdGVyaSBtZXJnZS5oYW5kbGVycyB+ZjooZnVuIH5rZXk6bmFtZSB+ZGF0YTooRXZlbnRfaGFuZGxlci5UIHsgaGFuZGxlcjsgXyB9KSAtPlxuICAgIGxldCBmIGUgPVxuICAgICAgRWZmZWN0LkV4cGVydC5oYW5kbGUgZSAoaGFuZGxlciBlKTtcbiAgICAgIEpzLl90cnVlXG4gICAgaW5cbiAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiAoXCJvblwiIF4gbmFtZSkgKEpzLlVuc2FmZS5pbmplY3QgKERvbS5oYW5kbGVyIGYpKSk7XG4gIGxldCAoKSA9XG4gICAgaWYgbm90IChDc3NfZ2VuLmlzX2VtcHR5IG1lcmdlLnN0eWxlcylcbiAgICB0aGVuIChcbiAgICAgIGxldCBwcm9wcyA9IENzc19nZW4udG9fc3RyaW5nX2xpc3QgbWVyZ2Uuc3R5bGVzIGluXG4gICAgICBsZXQgb2JqID0gUmF3LkF0dHJzLmNyZWF0ZSAoKSBpblxuICAgICAgTGlzdC5pdGVyIHByb3BzIH5mOihmdW4gKGssIHYpIC0+XG4gICAgICAgIFJhdy5BdHRycy5zZXRfcHJvcGVydHkgb2JqIGsgKEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB2KSkpO1xuICAgICAgUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogXCJzdHlsZVwiIChvYmogOj4gSnMuVW5zYWZlLmFueSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSBtZXJnZS5jbGFzc2VzXG4gICAgdGhlbiAoKVxuICAgIGVsc2VcbiAgICAgIFJhdy5BdHRycy5zZXRfYXR0cmlidXRlXG4gICAgICAgIGF0dHJzX29ialxuICAgICAgICBcImNsYXNzXCJcbiAgICAgICAgKEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyAoU3RyaW5nLmNvbmNhdCBtZXJnZS5jbGFzc2VzIH5zZXA6XCIgXCIpKSlcbiAgaW5cbiAgYXR0cnNfb2JqXG47O1xuXG5sZXQgdG9fcmF3IGF0dHIgPVxuICBtYXRjaCBhdHRyIHdpdGhcbiAgfCBNYW55IFtdIHwgTWFueV93aXRob3V0X21lcmdlIFtdIC0+IFJhdy5BdHRycy5jcmVhdGUgKClcbiAgfCBhdHRyIC0+IHRvX3JhdyBhdHRyXG47O1xuXG5sZXQgc3R5bGUgY3NzID0gU3R5bGUgY3NzXG5sZXQgY2xhc3NfIGNsYXNzbmFtZSA9IENsYXNzIFsgY2xhc3NuYW1lIF1cbmxldCBjbGFzc2VzJyBjbGFzc2VzID0gQ2xhc3MgKFNldC50b19saXN0IGNsYXNzZXMpXG5sZXQgY2xhc3NlcyBjbGFzc25hbWVzID0gQ2xhc3MgY2xhc3NuYW1lc1xubGV0IGlkIHMgPSBjcmVhdGUgXCJpZFwiIHNcbmxldCBuYW1lIHMgPSBjcmVhdGUgXCJuYW1lXCIgc1xubGV0IGhyZWYgciA9IGNyZWF0ZSBcImhyZWZcIiByXG5sZXQgbGFiZWwgciA9IGNyZWF0ZSBcImxhYmVsXCIgclxubGV0IHRhcmdldCBzID0gY3JlYXRlIFwidGFyZ2V0XCIgc1xubGV0IGNoZWNrZWQgPSBjcmVhdGUgXCJjaGVja2VkXCIgXCJcIlxubGV0IHNlbGVjdGVkID0gY3JlYXRlIFwic2VsZWN0ZWRcIiBcIlwiXG5sZXQgaGlkZGVuID0gY3JlYXRlIFwiaGlkZGVuXCIgXCJcIlxubGV0IHJlYWRvbmx5ID0gY3JlYXRlIFwicmVhZG9ubHlcIiBcIlwiXG5sZXQgZGlzYWJsZWQgPSBjcmVhdGUgXCJkaXNhYmxlZFwiIFwiXCJcbmxldCBwbGFjZWhvbGRlciB4ID0gY3JlYXRlIFwicGxhY2Vob2xkZXJcIiB4XG5cbmxldCBhdXRvZm9jdXMgPSBmdW5jdGlvblxuICB8IHRydWUgLT4gY3JlYXRlIFwiYXV0b2ZvY3VzXCIgXCJcIlxuICB8IGZhbHNlIC0+IGVtcHR5XG47O1xuXG5sZXQgZm9yXyB4ID0gY3JlYXRlIFwiZm9yXCIgeFxubGV0IHR5cGVfIHggPSBjcmVhdGUgXCJ0eXBlXCIgeFxubGV0IHZhbHVlIHggPSBjcmVhdGUgXCJ2YWx1ZVwiIHhcbmxldCB2YWx1ZV9wcm9wIHggPSBzdHJpbmdfcHJvcGVydHkgXCJ2YWx1ZVwiIHhcbmxldCB0YWJpbmRleCB4ID0gY3JlYXRlIFwidGFiaW5kZXhcIiAoSW50LnRvX3N0cmluZyB4KVxubGV0IHRpdGxlIHggPSBjcmVhdGUgXCJ0aXRsZVwiIHhcbmxldCBhbHQgeCA9IGNyZWF0ZSBcImFsdFwiIHhcbmxldCBzcmMgeCA9IGNyZWF0ZSBcInNyY1wiIHhcbmxldCBvcGVuXyA9IGNyZWF0ZSBcIm9wZW5cIiBcIlwiXG5sZXQgc3RhcnQgeCA9IGNyZWF0ZSBcInN0YXJ0XCIgKEludC50b19zdHJpbmcgeClcbmxldCBtaW4geCA9IGNyZWF0ZV9mbG9hdCBcIm1pblwiIHhcbmxldCBtYXggeCA9IGNyZWF0ZV9mbG9hdCBcIm1heFwiIHhcbmxldCBtaW5fZGF0ZSB4ID0gY3JlYXRlIFwibWluXCIgKERhdGUudG9fc3RyaW5nIHgpXG5sZXQgbWF4X2RhdGUgeCA9IGNyZWF0ZSBcIm1heFwiIChEYXRlLnRvX3N0cmluZyB4KVxubGV0IG1pbl9kYXRlX3RpbWUgeCA9IGNyZWF0ZSBcIm1pblwiIChEYXRlLnRvX3N0cmluZyB4IF4gXCJUMDA6MDBcIilcbmxldCBtYXhfZGF0ZV90aW1lIHggPSBjcmVhdGUgXCJtYXhcIiAoRGF0ZS50b19zdHJpbmcgeCBeIFwiVDIzOjU5XCIpXG5sZXQgY29sc3BhbiB4ID0gY3JlYXRlIFwiY29sc3BhblwiIChJbnQudG9fc3RyaW5nIHgpXG5sZXQgcm93c3BhbiB4ID0gY3JlYXRlIFwicm93c3BhblwiIChJbnQudG9fc3RyaW5nIHgpXG5sZXQgZHJhZ2dhYmxlIGIgPSBjcmVhdGUgXCJkcmFnZ2FibGVcIiAoQm9vbC50b19zdHJpbmcgYilcblxubW9kdWxlIFR5cGVfaWQgPSBzdHJ1Y3RcbiAgKCogV2UgcHJvdmlkZSBhIHRyaXZpYWwgW3RvX3NleHBdIGZ1bmN0aW9uIHNpbmNlIHdlIG9ubHkgd2FudFxuICAgICB0byB1bmlmeSB0eXBlIGlkcyBhbmQgbm90IGNvbnZlcnQgdHlwZXMgdG8gaWRzICopXG4gIGxldCBjcmVhdGUgbmFtZSA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lIChmdW4gXyAtPiBTZXhwbGliLlNleHAuTGlzdCBbXSlcbiAgbGV0IChldmVudCA6IERvbV9odG1sLmV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJldmVudFwiXG4gIGxldCAoZm9jdXMgOiBEb21faHRtbC5mb2N1c0V2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJmb2N1c0V2ZW50XCJcbiAgbGV0IChtb3VzZSA6IERvbV9odG1sLm1vdXNlRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcIm1vdXNlRXZlbnRcIlxuICBsZXQgKGtleWJvYXJkIDogRG9tX2h0bWwua2V5Ym9hcmRFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwia2V5Ym9hcmRFdmVudFwiXG4gIGxldCAoc3VibWl0IDogRG9tX2h0bWwuc3VibWl0RXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcInN1Ym1pdEV2ZW50XCJcbiAgbGV0IChtb3VzZXdoZWVsIDogRG9tX2h0bWwubW91c2V3aGVlbEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJtb3VzZXdoZWVsRXZlbnRcIlxuXG4gIGxldCAod2hlZWwgOiBKc19vZl9vY2FtbF9wYXRjaGVzLkRvbV9odG1sLndoZWVsRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9XG4gICAgY3JlYXRlIFwid2hlZWx3aGVlbEV2ZW50XCJcbiAgOztcblxuICBsZXQgKGNsaXBib2FyZCA6IERvbV9odG1sLmNsaXBib2FyZEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJjbGlwYm9hcmRFdmVudFwiXG4gIGxldCAoZHJhZyA6IERvbV9odG1sLmRyYWdFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwiZHJhZ0V2ZW50XCJcbiAgbGV0IChwb2ludGVyIDogRG9tX2h0bWwucG9pbnRlckV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJwb2ludGVyRXZlbnRcIlxuICBsZXQgKGFuaW1hdGlvbiA6IERvbV9odG1sLmFuaW1hdGlvbkV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJhbmltYXRpb25FdmVudFwiXG5lbmRcblxubGV0IG9uIHR5cGVfaWQgbmFtZSAoaGFuZGxlciA6ICNEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQgVWlfZWZmZWN0LnQpIDogdCA9XG4gIEhhbmRsZXIgeyBuYW1lOyBoYW5kbGVyID0gVCB7IGhhbmRsZXI7IHR5cGVfaWQgfSB9XG47O1xuXG5sZXQgb25fZm9jdXMgPSBvbiBUeXBlX2lkLmZvY3VzIFwiZm9jdXNcIlxubGV0IG9uX2JsdXIgPSBvbiBUeXBlX2lkLmZvY3VzIFwiYmx1clwiXG5sZXQgb25fY2xpY2sgPSBvbiBUeXBlX2lkLm1vdXNlIFwiY2xpY2tcIlxubGV0IG9uX2NvbnRleHRtZW51ID0gb24gVHlwZV9pZC5tb3VzZSBcImNvbnRleHRtZW51XCJcbmxldCBvbl9kb3VibGVfY2xpY2sgPSBvbiBUeXBlX2lkLm1vdXNlIFwiZGJsY2xpY2tcIlxubGV0IG9uX2RyYWcgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnXCJcbmxldCBvbl9kcmFnc3RhcnQgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnc3RhcnRcIlxubGV0IG9uX2RyYWdlbmQgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnZW5kXCJcbmxldCBvbl9kcmFnZW50ZXIgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnZW50ZXJcIlxubGV0IG9uX2RyYWdsZWF2ZSA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdsZWF2ZVwiXG5sZXQgb25fZHJhZ292ZXIgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnb3ZlclwiXG5sZXQgb25fZHJvcCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyb3BcIlxubGV0IG9uX21vdXNlbW92ZSA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZW1vdmVcIlxubGV0IG9uX21vdXNldXAgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2V1cFwiXG5sZXQgb25fbW91c2Vkb3duID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlZG93blwiXG5sZXQgb25fbW91c2VlbnRlciA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZWVudGVyXCJcbmxldCBvbl9tb3VzZWxlYXZlID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlbGVhdmVcIlxubGV0IG9uX21vdXNlb3ZlciA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZW92ZXJcIlxubGV0IG9uX21vdXNlb3V0ID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlb3V0XCJcbmxldCBvbl9rZXl1cCA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXl1cFwiXG5sZXQgb25fa2V5cHJlc3MgPSBvbiBUeXBlX2lkLmtleWJvYXJkIFwia2V5cHJlc3NcIlxubGV0IG9uX2tleWRvd24gPSBvbiBUeXBlX2lkLmtleWJvYXJkIFwia2V5ZG93blwiXG5sZXQgb25fc2Nyb2xsID0gb24gVHlwZV9pZC5ldmVudCBcInNjcm9sbFwiXG5sZXQgb25fbG9hZCA9IG9uIFR5cGVfaWQuZXZlbnQgXCJsb2FkXCJcbmxldCBvbl9zdWJtaXQgPSBvbiBUeXBlX2lkLnN1Ym1pdCBcInN1Ym1pdFwiXG5sZXQgb25fcG9pbnRlcmRvd24gPSBvbiBUeXBlX2lkLnBvaW50ZXIgXCJwb2ludGVyZG93blwiXG5sZXQgb25fcG9pbnRlcnVwID0gb24gVHlwZV9pZC5wb2ludGVyIFwicG9pbnRlcnVwXCJcbmxldCBvbl9tb3VzZXdoZWVsID0gb24gVHlwZV9pZC5tb3VzZXdoZWVsIFwibW91c2V3aGVlbFwiXG5sZXQgb25fd2hlZWwgPSBvbiBUeXBlX2lkLndoZWVsIFwid2hlZWxcIlxubGV0IG9uX2NvcHkgPSBvbiBUeXBlX2lkLmNsaXBib2FyZCBcImNvcHlcIlxubGV0IG9uX2N1dCA9IG9uIFR5cGVfaWQuY2xpcGJvYXJkIFwiY3V0XCJcbmxldCBvbl9wYXN0ZSA9IG9uIFR5cGVfaWQuY2xpcGJvYXJkIFwicGFzdGVcIlxubGV0IG9uX3Jlc2V0ID0gb24gVHlwZV9pZC5ldmVudCBcInJlc2V0XCJcbmxldCBvbl9hbmltYXRpb25lbmQgPSBvbiBUeXBlX2lkLmFuaW1hdGlvbiBcImFuaW1hdGlvbmVuZFwiXG5sZXQgY29uc3RfaWdub3JlIF8gPSBFZmZlY3QuSWdub3JlXG5cbmNsYXNzIHR5cGUgdmFsdWVfZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmVsZW1lbnRcbiAgbWV0aG9kIHZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuZW5kXG5cbnR5cGUgdmFsdWVfY29lcmNpb24gPSBEb21faHRtbC5lbGVtZW50IEpzLnQgLT4gdmFsdWVfZWxlbWVudCBKcy50IEpzLm9wdFxuXG5sZXQgcnVuX2NvZXJjaW9uIGNvZXJjaW9uIHRhcmdldCBwcmV2ID1cbiAgbWF0Y2ggcHJldiB3aXRoXG4gIHwgU29tZSBfIC0+IHByZXZcbiAgfCBOb25lIC0+IEpzLk9wdC50b19vcHRpb24gKGNvZXJjaW9uIHRhcmdldClcbjs7XG5cbmxldCBjb2VyY2VfdmFsdWVfZWxlbWVudCB0YXJnZXQgPVxuICBsZXQgb3BlbiBEb21faHRtbC5Db2VyY2VUbyBpblxuICBOb25lXG4gIHw+IHJ1bl9jb2VyY2lvbiAoaW5wdXQgOj4gdmFsdWVfY29lcmNpb24pIHRhcmdldFxuICB8PiBydW5fY29lcmNpb24gKHNlbGVjdCA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG4gIHw+IHJ1bl9jb2VyY2lvbiAodGV4dGFyZWEgOj4gdmFsdWVfY29lcmNpb24pIHRhcmdldFxuOztcblxubGV0IG9uX2lucHV0X2V2ZW50IHR5cGVfaWQgZXZlbnQgaGFuZGxlciA9XG4gIG9uIHR5cGVfaWQgZXZlbnQgKGZ1biBldiAtPlxuICAgIEpzLk9wdC5jYXNlIGV2IyMudGFyZ2V0IGNvbnN0X2lnbm9yZSAoZnVuIHRhcmdldCAtPlxuICAgICAgT3B0aW9uLnZhbHVlX21hcFxuICAgICAgICAoY29lcmNlX3ZhbHVlX2VsZW1lbnQgdGFyZ2V0KVxuICAgICAgICB+ZGVmYXVsdDpFZmZlY3QuSWdub3JlXG4gICAgICAgIH5mOihmdW4gdGFyZ2V0IC0+XG4gICAgICAgICAgbGV0IHRleHQgPSBKcy50b19zdHJpbmcgdGFyZ2V0IyMudmFsdWUgaW5cbiAgICAgICAgICBoYW5kbGVyIGV2IHRleHQpKSlcbjs7XG5cbmxldCBvbl9jaGFuZ2UgPSBvbl9pbnB1dF9ldmVudCBUeXBlX2lkLmV2ZW50IFwiY2hhbmdlXCJcbmxldCBvbl9pbnB1dCA9IG9uX2lucHV0X2V2ZW50IFR5cGVfaWQuZXZlbnQgXCJpbnB1dFwiXG5sZXQgdG9fcmF3IGwgPSB0b19yYXcgbFxuXG5sZXQgb25fZmlsZV9pbnB1dCBoYW5kbGVyID1cbiAgb24gVHlwZV9pZC5ldmVudCBcImlucHV0XCIgKGZ1biBldiAtPlxuICAgIEpzLk9wdC5jYXNlIGV2IyMudGFyZ2V0IGNvbnN0X2lnbm9yZSAoZnVuIHRhcmdldCAtPlxuICAgICAgSnMuT3B0LmNhc2UgKERvbV9odG1sLkNvZXJjZVRvLmlucHV0IHRhcmdldCkgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICAgIEpzLk9wdGRlZi5jYXNlIHRhcmdldCMjLmZpbGVzIGNvbnN0X2lnbm9yZSAoZnVuIGZpbGVzIC0+IGhhbmRsZXIgZXYgZmlsZXMpKSkpXG47O1xuXG5tb2R1bGUgQWx3YXlzX2ZvY3VzX2hvb2sgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdGUgPSBVbml0XG5cbiAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVW5pdFxuXG4gICAgICBsZXQgY29tYmluZSAoKSAoKSA9ICgpXG4gICAgZW5kXG5cbiAgICBsZXQgaW5pdCAoKSBfID0gKClcbiAgICBsZXQgb25fbW91bnQgKCkgKCkgZWxlbWVudCA9IGVsZW1lbnQjI2ZvY3VzXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0OigpIH5uZXdfaW5wdXQ6KCkgKCkgXyA9ICgpXG4gICAgbGV0IGRlc3Ryb3kgKCkgKCkgXyA9ICgpXG4gIGVuZFxuXG4gIG1vZHVsZSBIb29rID0gSG9va3MuTWFrZSAoVClcblxuICBsZXQgYXR0ciBgUmVhZF90aGVfZG9jc19fdGhpc19ob29rX2lzX3VucHJlZGljdGFibGUgPVxuICAgICgqIEFwcGVuZCB0aGUgaWQgdG8gdGhlIG5hbWUgb2YgdGhlIGhvb2sgdG8gZW5zdXJlIHRoYXQgaXQgaXMgZGlzdGluY3RcbiAgICAgICBmcm9tIGFsbCBvdGhlciBmb2N1cyBob29rcy4gKilcbiAgICBjcmVhdGVfaG9vayBcImFsd2F5cy1mb2N1cy1ob29rXCIgKEhvb2suY3JlYXRlICgpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTaW5nbGVfZm9jdXNfaG9vayAoKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcblxuICAgIGxldCBoYXNfYmVlbl91c2VkID0gcmVmIGZhbHNlXG5cbiAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9ICh1bml0IFVpX2VmZmVjdC50W0BzZXhwLm9wYXF1ZV0pIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjb21iaW5lIGxlZnQgcmlnaHQgPSBVaV9lZmZlY3QuTWFueSBbIGxlZnQ7IHJpZ2h0IF1cbiAgICBlbmRcblxuICAgIGxldCBpbml0IF8gXyA9ICgpXG5cbiAgICBsZXQgb25fbW91bnQgZXZlbnQgKCkgZWxlbWVudCA9XG4gICAgICBpZiBub3QgIWhhc19iZWVuX3VzZWRcbiAgICAgIHRoZW4gKFxuICAgICAgICBoYXNfYmVlbl91c2VkIDo9IHRydWU7XG4gICAgICAgIGVsZW1lbnQjI2ZvY3VzO1xuICAgICAgICBFZmZlY3QuRXhwZXJ0LmhhbmRsZV9ub25fZG9tX2V2ZW50X2V4biBldmVudClcbiAgICA7O1xuXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0Ol8gfm5ld19pbnB1dDpfICgpIF8gPSAoKVxuICAgIGxldCBkZXN0cm95IF8gKCkgXyA9ICgpXG4gIGVuZFxuXG4gIG1vZHVsZSBIb29rID0gSG9va3MuTWFrZSAoVClcblxuICBsZXQgYXR0ciBgUmVhZF90aGVfZG9jc19fdGhpc19ob29rX2lzX3VucHJlZGljdGFibGUgfmFmdGVyID1cbiAgICAoKiBBcHBlbmQgdGhlIGlkIHRvIHRoZSBuYW1lIG9mIHRoZSBob29rIHRvIGVuc3VyZSB0aGF0IGl0IGlzIGRpc3RpbmN0XG4gICAgICAgZnJvbSBhbGwgb3RoZXIgZm9jdXMgaG9va3MuICopXG4gICAgY3JlYXRlX2hvb2sgXCJzaW5nbGUtZm9jdXMtaG9va1wiIChIb29rLmNyZWF0ZSBhZnRlcilcbiAgOztcbmVuZFxuXG5tb2R1bGUgTm9fb3BfaG9vayAoTSA6IHNpZ1xuICAgIG1vZHVsZSBJbnB1dCA6IEhvb2tzX2ludGYuSW5wdXRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBIb29rID0gSG9va3MuTWFrZSAoc3RydWN0XG4gICAgICBtb2R1bGUgU3RhdGUgPSBVbml0XG4gICAgICBtb2R1bGUgSW5wdXQgPSBNLklucHV0XG5cbiAgICAgIGxldCBpbml0IF8gXyA9ICgpXG4gICAgICBsZXQgb25fbW91bnQgXyAoKSBfID0gKClcbiAgICAgIGxldCB1cGRhdGUgfm9sZF9pbnB1dDpfIH5uZXdfaW5wdXQ6XyAoKSBfID0gKClcbiAgICAgIGxldCBkZXN0cm95IF8gKCkgXyA9ICgpXG4gICAgZW5kKVxuXG4gIGxldCBhdHRyIGlucHV0ID0gY3JlYXRlX2hvb2sgTS5uYW1lIChIb29rLmNyZWF0ZSBpbnB1dClcbiAgbGV0IHR5cGVfaWQgPSBIb29rLkZvcl90ZXN0aW5nLnR5cGVfaWRcbmVuZFxuXG5tb2R1bGUgTXVsdGkgPSBzdHJ1Y3RcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBsaXN0XG5cbiAgbGV0IG1hcF9zdHlsZSB0IH5mID0gWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBmLCBGbi5pZCkgXVxuICBsZXQgYWRkX2NsYXNzIHQgYyA9IFsgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAodCwgRm4uaWQsIGZ1biBjcyAtPiBjIDo6IGNzKSBdXG4gIGxldCBhZGRfc3R5bGUgdCBzID0gbWFwX3N0eWxlIHQgfmY6KGZ1biBzcyAtPiBDc3NfZ2VuLmNvbWJpbmUgc3MgcylcblxuICBsZXQgbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIHQgPVxuICAgIFsgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAodCwgRm4uaWQsIEZuLmlkKSBdXG4gIDs7XG5lbmRcblxubW9kdWxlIENzc192YXJfaG9vayA9IEhvb2tzLk1ha2UgKHN0cnVjdFxuICAgIG9wZW4gSnNfb2Zfb2NhbWxcbiAgICBtb2R1bGUgU3RhdGUgPSBVbml0XG5cbiAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IChzdHJpbmcgKiBzdHJpbmcpIGxpc3QgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGNvbWJpbmUgPSBMaXN0LmFwcGVuZFxuICAgIGVuZFxuXG4gICAgbGV0IGluaXQgaW5wdXQgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgICAgIExpc3QuaXRlciBpbnB1dCB+ZjooZnVuIChrLCB2KSAtPlxuICAgICAgICBlbGVtZW50IyMuc3R5bGUjI3NldFByb3BlcnR5IChKcy5zdHJpbmcgaykgKEpzLnN0cmluZyB2KSBKcy51bmRlZmluZWRcbiAgICAgICAgfD4gKGlnbm9yZSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpKVxuICAgIDs7XG5cbiAgICBsZXQgb25fbW91bnQgXyAoKSBfID0gKClcblxuICAgIGxldCBkZXN0cm95IGlucHV0ICgpIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA9XG4gICAgICBMaXN0Lml0ZXIgaW5wdXQgfmY6KGZ1biAoaywgXykgLT5cbiAgICAgICAgZWxlbWVudCMjLnN0eWxlIyNyZW1vdmVQcm9wZXJ0eSAoSnMuc3RyaW5nIGspXG4gICAgICAgIHw+IChpZ25vcmUgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSlcbiAgICA7O1xuXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0IH5uZXdfaW5wdXQgKCkgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgb2xkX2lucHV0IG5ld19pbnB1dFxuICAgICAgfHwgWyVlcXVhbDogKHN0cmluZyAqIHN0cmluZykgbGlzdF0gb2xkX2lucHV0IG5ld19pbnB1dFxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGRlc3Ryb3kgb2xkX2lucHV0ICgpIGVsZW1lbnQ7XG4gICAgICAgIGluaXQgbmV3X2lucHV0IGVsZW1lbnQpXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgX19jc3NfdmFyc19ub19rZWJhYnMgYWxpc3QgPSBjcmVhdGVfaG9vayBcImN1c3RvbS1jc3MtdmFyc1wiIChDc3NfdmFyX2hvb2suY3JlYXRlIGFsaXN0KVxubGV0IGNzc192YXIgfm5hbWUgdiA9IF9fY3NzX3ZhcnNfbm9fa2ViYWJzIFsgXCItLVwiIF4gbmFtZSwgdiBdXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHJlYyBmaWx0ZXJfYnlfa2luZCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFByb3BlcnR5IF8gLT4gaWYgZiBgUHJvcGVydHkgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IEF0dHJpYnV0ZSBfIC0+IGlmIGYgYEF0dHJpYnV0ZSB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgSG9vayBfIC0+IGlmIGYgYEhvb2sgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IEhhbmRsZXIgXyAtPiBpZiBmIGBIYW5kbGVyIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBTdHlsZSBfIC0+IGlmIGYgYFN0eWxlIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBDbGFzcyBfIC0+IGlmIGYgYENsYXNzIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBNYW55IGF0dHJzIC0+IE1hbnkgKExpc3QubWFwIGF0dHJzIH5mOihmaWx0ZXJfYnlfa2luZCB+ZikpXG4gICAgfCBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChhdHRycywgYSwgYikgLT5cbiAgICAgIE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKExpc3QubWFwIGF0dHJzIH5mOihmaWx0ZXJfYnlfa2luZCB+ZiksIGEsIGIpXG4gICAgfCBNYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgLT5cbiAgICAgIE1hbnlfd2l0aG91dF9tZXJnZSAoTGlzdC5tYXAgYXR0cnMgfmY6KGZpbHRlcl9ieV9raW5kIH5mKSlcbiAgOztcblxuICBsZXQgcmVjIGNvbnRhaW5zX25hbWUgbG9va2luZ19mb3IgPSBmdW5jdGlvblxuICAgIHwgUHJvcGVydHkgeyBuYW1lOyBfIH0gfCBBdHRyaWJ1dGUgeyBuYW1lOyBfIH0gfCBIb29rIHsgbmFtZTsgXyB9IC0+XG4gICAgICBTdHJpbmcuZXF1YWwgbG9va2luZ19mb3IgbmFtZVxuICAgIHwgSGFuZGxlciB7IG5hbWU7IF8gfSAtPiBTdHJpbmcuZXF1YWwgKFwib25cIiBeIG5hbWUpIGxvb2tpbmdfZm9yXG4gICAgfCBTdHlsZSBfIC0+IFN0cmluZy5lcXVhbCBsb29raW5nX2ZvciBcInN0eWxlXCJcbiAgICB8IENsYXNzIF8gLT4gU3RyaW5nLmVxdWFsIGxvb2tpbmdfZm9yIFwiY2xhc3NcIlxuICAgIHwgTWFueSBhdHRyc1xuICAgIHwgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAoYXR0cnMsIF8sIF8pXG4gICAgfCBNYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgLT4gTGlzdC5leGlzdHMgfmY6KGNvbnRhaW5zX25hbWUgbG9va2luZ19mb3IpIGF0dHJzXG4gIDs7XG5lbmRcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcblxubW9kdWxlIE1ha2UgKFggOiBzaWdcbiAgICB0eXBlIGV2ZW50ID0gcHJpdmF0ZSAjRG9tX2h0bWwuZXZlbnRcblxuICAgIHZhbCBldmVudF9raW5kIDogZXZlbnQgSnMudCBEb20uRXZlbnQudHlwXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgSG9va3MuTWFrZSAoc3RydWN0XG4gICAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gWC5ldmVudCBKcy50IC0+IHVuaXQgVWlfZWZmZWN0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICBsZXQgY29tYmluZSBmIGcgZXZlbnQgPSBVaV9lZmZlY3QuTWFueSBbIGYgZXZlbnQ7IGcgZXZlbnQgXVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSB7IG11dGFibGUgbGlzdGVuZXIgOiAoRG9tX2h0bWwuZXZlbnRfbGlzdGVuZXJfaWRbQHNleHAub3BhcXVlXSkgfVxuICAgICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgZW5kXG5cbiAgICAgIGxldCBzZXQgZiA9XG4gICAgICAgIGxldCBoYW5kbGVyID1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIGV2IC0+XG4gICAgICAgICAgICBFZmZlY3QuRXhwZXJ0LmhhbmRsZSBldiAoZiBldik7XG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgICAgaW5cbiAgICAgICAgRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lciBEb21faHRtbC53aW5kb3cgWC5ldmVudF9raW5kIGhhbmRsZXIgSnMuX3RydWVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbml0IGYgX2VsZW1lbnQgPSB7IFN0YXRlLmxpc3RlbmVyID0gc2V0IGYgfVxuICAgICAgbGV0IGRlc3Ryb3kgX2lucHV0IHN0YXRlIF9lbGVtZW50ID0gRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lciBzdGF0ZS5TdGF0ZS5saXN0ZW5lclxuXG4gICAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dDpmIHN0YXRlIGVsZW1lbnQgPVxuICAgICAgICAoKiBpZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gY2hhbmdlcywgY2FuY2VsIHRoZSBvbGQgb25lIGFuZCByZS1pbnN0YWxsICopXG4gICAgICAgIGRlc3Ryb3kgb2xkX2lucHV0IHN0YXRlIGVsZW1lbnQ7XG4gICAgICAgIGxldCBuZXdfc3RhdGUgPSBpbml0IGYgZWxlbWVudCBpblxuICAgICAgICBzdGF0ZS5TdGF0ZS5saXN0ZW5lciA8LSBuZXdfc3RhdGUubGlzdGVuZXJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvbl9tb3VudCBfaW5wdXQgX3N0YXRlIF9lbGVtZW50ID0gKClcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1vdXNldXAgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIGV2ZW50ID0gRG9tX2h0bWwubW91c2VFdmVudFxuXG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tb3VzZXVwXG4gIGVuZClcblxubW9kdWxlIE1vdXNlbW92ZSA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5tb3VzZUV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1vdXNlbW92ZVxuICBlbmQpXG5cbm1vZHVsZSBDbGljayA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5tb3VzZUV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50LmNsaWNrXG4gIGVuZClcblxubW9kdWxlIENvbnRleHRtZW51ID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLm1vdXNlRXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcImNvbnRleHRtZW51XCJcbiAgZW5kKVxuXG5tb2R1bGUgS2V5ZG93biA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5rZXlib2FyZEV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50LmtleWRvd25cbiAgZW5kKVxuXG5tb2R1bGUgVmlzaWJpbGl0eWNoYW5nZSA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5ldmVudFxuXG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tYWtlIFwidmlzaWJpbGl0eWNoYW5nZVwiXG4gIGVuZClcblxubW9kdWxlIEJlZm9yZXVubG9hZCA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5ldmVudFxuXG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tYWtlIFwiYmVmb3JldW5sb2FkXCJcbiAgZW5kKVxuXG5sZXQgbW91c2V1cCBmID0gTW91c2V1cC5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLW1vdXNldXAtbGlzdGVuZXJcIlxubGV0IG1vdXNlbW92ZSBmID0gTW91c2Vtb3ZlLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtbW91c2Vtb3ZlLWxpc3RlbmVyXCJcbmxldCBjbGljayBmID0gQ2xpY2suY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1jbGljay1saXN0ZW5lclwiXG5sZXQgY29udGV4dG1lbnUgZiA9IENvbnRleHRtZW51LmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtY29udGV4dG1lbnUtbGlzdGVuZXJcIlxubGV0IGtleWRvd24gZiA9IEtleWRvd24uY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1rZXlkb3duLWxpc3RlbmVyXCJcblxuY2xhc3MgdHlwZSBldmVudF93aXRoX3N0cmluZ19yZXR1cm5fdmFsdWUgPSBvYmplY3RcbiAgKCogRXZlbnRzIHdpdGggW3JldHVyblZhbHVlXSBhcmUgaW1wb3NzaWJsZSB0byBwcm9wZXJseSB0eXBlLCBzbyB3ZSBtYWtlIG9uZSB0aGF0XG4gICAgIGlzIHNwZWNpYWxpemVkIGZvciBzdHJpbmcsIGFuZCBjYXN0IG91ciBiZWZvcmVfdW5sb2FkIHR5cGUgdG8gaXQuICopXG4gIG1ldGhvZCByZXR1cm5WYWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IGJlZm9yZXVubG9hZCBmID1cbiAgbGV0IGYgZXZlbnQgPVxuICAgIG1hdGNoJWJpbmQuRWZmZWN0IGYgZXZlbnQgd2l0aFxuICAgIHwgYFNob3dfd2FybmluZyAtPlxuICAgICAgbGV0IGV2ZW50IDogZXZlbnRfd2l0aF9zdHJpbmdfcmV0dXJuX3ZhbHVlIEpzLnQgPSBPYmoubWFnaWMgZXZlbnQgaW5cbiAgICAgIGV2ZW50IyMucmV0dXJuVmFsdWUgOj0gSnMuc3RyaW5nIFwidGhpcyBzdHJpbmcgY2FuIGJlIGFueXRoaW5nXCI7XG4gICAgICBFZmZlY3QuSWdub3JlXG4gICAgfCBgRG9fbm90aGluZyAtPiBFZmZlY3QuSWdub3JlXG4gIGluXG4gIEJlZm9yZXVubG9hZC5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLWJlZm9yZXVubG9hZC1saXN0ZW5lclwiXG47O1xuXG5sZXQgdmlzaWJpbGl0eWNoYW5nZSBmID1cbiAgVmlzaWJpbGl0eWNoYW5nZS5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLXZpc2liaWxpdHljaGFuZ2UtbGlzdGVuZXJcIlxuOztcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIGxldCBtb3VzZXVwX3R5cGVfaWQgPSBNb3VzZXVwLkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IG1vdXNlbW92ZV90eXBlX2lkID0gTW91c2Vtb3ZlLkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IGtleWRvd25fdHlwZV9pZCA9IEtleWRvd24uRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgY2xpY2tfdHlwZV9pZCA9IENsaWNrLkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IGNvbnRleHRtZW51X3R5cGVfaWQgPSBDb250ZXh0bWVudS5Gb3JfdGVzdGluZy50eXBlX2lkXG4gIGxldCB2aXNpYmlsaXR5Y2hhbmdlX3R5cGVfaWQgPSBWaXNpYmlsaXR5Y2hhbmdlLkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IGJlZm9yZXVubG9hZF90eXBlX2lkID0gQmVmb3JldW5sb2FkLkZvcl90ZXN0aW5nLnR5cGVfaWRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSnNfb2Zfb2NhbWxcblxudHlwZSB0ID0gUmF3Lk5vZGUudFxuXG5sZXQgdmRvbV90aHVuayA9IGxhenkgSnMuVW5zYWZlLihnZXQgZ2xvYmFsIChKcy5zdHJpbmcgXCJWZG9tVGh1bmtcIikpXG5cbmxldCBjcmVhdGUgfmtleSBhcmcgfmYgPVxuICBsZXQga2V5ID1cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgU29tZSBrZXkgLT4gSnMuT3B0ZGVmLnJldHVybiAoSnMuc3RyaW5nIGtleSlcbiAgICB8IE5vbmUgLT4gSnMuT3B0ZGVmLmVtcHR5XG4gIGluXG4gIGxldCBrZXkgPSBKcy5VbnNhZmUuaW5qZWN0IGtleSBpblxuICBsZXQgZiA9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBhIC0+IGYgYSkgfD4gSnMuVW5zYWZlLmluamVjdCBpblxuICBsZXQgYXJnID0gSnMuVW5zYWZlLmluamVjdCBhcmcgaW5cbiAgKE9iai5tYWdpYyA6IF8gLT4gUmF3Lk5vZGUudClcbiAgICAoSnMuVW5zYWZlLmZ1bl9jYWxsIChMYXp5LmZvcmNlIHZkb21fdGh1bmspIFt8IGY7IGFyZzsga2V5IHxdKVxuOztcbiIsIm9wZW4gQmFzZVxub3BlbiBKc19vZl9vY2FtbFxuXG50eXBlIGVsZW1lbnQgPVxuICB7IHRhZyA6IHN0cmluZ1xuICA7IGtleSA6IHN0cmluZyBvcHRpb25cbiAgOyBhdHRycyA6IEF0dHIudFxuICA7IHJhd19hdHRycyA6IFJhdy5BdHRycy50IExhenkudFxuICA7IGNoaWxkcmVuIDogUmF3Lk5vZGUudCBKcy5qc19hcnJheSBKcy50XG4gIDsga2luZCA6IFsgYFZub2RlIHwgYFN2ZyBdXG4gIH1cblxuYW5kIHdpZGdldCA9IFJhdy5XaWRnZXQudFxuXG5hbmQgdCA9XG4gIHwgTm9uZVxuICB8IFRleHQgb2Ygc3RyaW5nXG4gIHwgRWxlbWVudCBvZiBlbGVtZW50XG4gIHwgV2lkZ2V0IG9mIHdpZGdldFxuICB8IExhenkgb2ZcbiAgICAgIHsga2V5IDogc3RyaW5nIG9wdGlvblxuICAgICAgOyB0IDogdCBMYXp5LnRcbiAgICAgIH1cblxubW9kdWxlIEFsaWFzZXMgPSBzdHJ1Y3RcbiAgdHlwZSBub2RlX2NyZWF0b3IgPSA/a2V5OnN0cmluZyAtPiA/YXR0cnM6QXR0ci50IGxpc3QgLT4gdCBsaXN0IC0+IHRcbiAgdHlwZSBub2RlX2NyZWF0b3JfY2hpbGRsZXNzID0gP2tleTpzdHJpbmcgLT4gP2F0dHJzOkF0dHIudCBsaXN0IC0+IHVuaXQgLT4gdFxuZW5kXG5cbm1vZHVsZSBFbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IGVsZW1lbnRcblxuICBsZXQgdGFnIHQgPSB0LnRhZ1xuICBsZXQgYXR0cnMgdCA9IHQuYXR0cnNcbiAgbGV0IGtleSB0ID0gdC5rZXlcbiAgbGV0IHdpdGhfa2V5IHQga2V5ID0geyB0IHdpdGgga2V5ID0gU29tZSBrZXkgfVxuXG4gIGxldCBtYXBfYXR0cnMgdCB+ZiA9XG4gICAgbGV0IGF0dHJzID0gZiB0LmF0dHJzIGluXG4gICAgbGV0IHJhd19hdHRycyA9IGxhenkgKEF0dHIudG9fcmF3IGF0dHJzKSBpblxuICAgIHsgdCB3aXRoIGF0dHJzOyByYXdfYXR0cnMgfVxuICA7O1xuXG4gIGxldCBhZGRfY2xhc3MgdCBjID0gbWFwX2F0dHJzIHQgfmY6KGZ1biBhIC0+IEF0dHIuKGEgQCBjbGFzc18gYykpXG4gIGxldCBhZGRfY2xhc3NlcyB0IGMgPSBtYXBfYXR0cnMgdCB+ZjooZnVuIGEgLT4gQXR0ci4oYSBAIGNsYXNzZXMgYykpXG4gIGxldCBhZGRfc3R5bGUgdCBzID0gbWFwX2F0dHJzIHQgfmY6KGZ1biBhIC0+IEF0dHIuKGEgQCBzdHlsZSBzKSlcbmVuZFxuXG5sZXQgcmVjIHRfdG9fanMgPSBmdW5jdGlvblxuICB8IE5vbmUgLT5cbiAgICAoKiBXZSBub3JtYWxseSBmaWx0ZXIgdGhlc2Ugb3V0LCBidXQgaWYgW3RvX2pzXSBpcyBjYWxsZWQgZGlyZWN0bHkgb24gYSBbTm9uZV0gbm9kZSxcbiAgICAgICB3ZSB1c2UgdGhpcyBoYWNrLiBBc2lkZSBmcm9tIGhhdmluZyBhIFtUZXh0XSBub2RlIHdpdGhvdXQgYW55IHRleHQgcHJlc2VudCBpbiB0aGVcbiAgICAgICBEb20sIHRoZXJlIHNob3VsZCBiZSBubyB1bndhbnRlZCBzaWRlLWVmZmVjdHMuICBJbiBhbiBJbmNyX2RvbSBhcHBsaWNhdGlvbiwgdGhpc1xuICAgICAgIGNhbiBvbmx5IGhhcHBlbiB3aGVuIHRoZSByb290IHZpZXcgSW5jcmVtZW50YWwgaXMgaW5oYWJpdGVkIGJ5IGEgW05vbmVdLiAqKVxuICAgIFJhdy5Ob2RlLnRleHQgXCJcIlxuICB8IFRleHQgcyAtPiBSYXcuTm9kZS50ZXh0IHNcbiAgfCBFbGVtZW50IHsgdGFnOyBrZXk7IGF0dHJzID0gXzsgcmF3X2F0dHJzID0gKGxhenkgcmF3X2F0dHJzKTsgY2hpbGRyZW47IGtpbmQgPSBgVm5vZGUgfVxuICAgIC0+IFJhdy5Ob2RlLm5vZGUgdGFnIHJhd19hdHRycyBjaGlsZHJlbiBrZXlcbiAgfCBFbGVtZW50IHsgdGFnOyBrZXk7IGF0dHJzID0gXzsgcmF3X2F0dHJzID0gKGxhenkgcmF3X2F0dHJzKTsgY2hpbGRyZW47IGtpbmQgPSBgU3ZnIH1cbiAgICAtPiBSYXcuTm9kZS5zdmcgdGFnIHJhd19hdHRycyBjaGlsZHJlbiBrZXlcbiAgfCBXaWRnZXQgdyAtPiB3XG4gIHwgTGF6eSB7IHQ7IGtleSB9IC0+IFRodW5rLmNyZWF0ZSB+a2V5IHQgfmY6dF90b19qc19sYXp5XG5cbmFuZCB0X3RvX2pzX2xhenkgKGxhenkgdCkgPSB0X3RvX2pzIHRcblxubGV0IHRleHQgcyA9IFRleHQgc1xuXG5sZXQgZWxlbWVudCBraW5kIH50YWcgfmtleSBhdHRycyBjaGlsZHJlbiA9XG4gIGxldCBjaGlsZHJlbl9yYXcgPSBuZXclanMgSnMuYXJyYXlfZW1wdHkgaW5cbiAgTGlzdC5pdGVyIGNoaWxkcmVuIH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgKFRleHQgXyB8IEVsZW1lbnQgXyB8IFdpZGdldCBfIHwgTGF6eSBfKSBhcyBvdGhlciAtPlxuICAgICAgbGV0IChfIDogaW50KSA9IGNoaWxkcmVuX3JhdyMjcHVzaCAodF90b19qcyBvdGhlcikgaW5cbiAgICAgICgpKTtcbiAgbGV0IHJhd19hdHRycyA9IGxhenkgKEF0dHIudG9fcmF3IGF0dHJzKSBpblxuICB7IGtpbmQ7IHRhZzsga2V5OyBhdHRyczsgcmF3X2F0dHJzOyBjaGlsZHJlbiA9IGNoaWxkcmVuX3JhdyB9XG47O1xuXG5sZXQgY3JlYXRlIHRhZyA/a2V5ID8oYXR0cnMgPSBbXSkgY2hpbGRyZW4gPVxuICBFbGVtZW50IChlbGVtZW50IGBWbm9kZSB+dGFnIH5rZXkgKEF0dHIubWFueSBhdHRycykgY2hpbGRyZW4pXG47O1xuXG5tb2R1bGUgV2lkZ2V0ID0gc3RydWN0XG4gIG9wZW4gSnNfb2Zfb2NhbWxcblxuICBsZXQgY3JlYXRlX2VsZW1lbnQgPSBjcmVhdGVcblxuICB0eXBlIHZkb21fbm9kZSA9IHRcblxuICBpbmNsdWRlIFJhdy5XaWRnZXRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSBkb20gPSBwcml2YXRlICNEb21faHRtbC5lbGVtZW50XG5cbiAgICBtb2R1bGUgSW5wdXQgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN0YXRlIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgdmFsIGNyZWF0ZSA6IElucHV0LnQgLT4gU3RhdGUudCAqIGRvbSBKcy50XG5cbiAgICB2YWwgdXBkYXRlXG4gICAgICA6ICBwcmV2X2lucHV0OklucHV0LnRcbiAgICAgIC0+IGlucHV0OklucHV0LnRcbiAgICAgIC0+IHN0YXRlOlN0YXRlLnRcbiAgICAgIC0+IGVsZW1lbnQ6ZG9tIEpzLnRcbiAgICAgIC0+IFN0YXRlLnQgKiBkb20gSnMudFxuXG4gICAgdmFsIGRlc3Ryb3kgOiBwcmV2X2lucHV0OklucHV0LnQgLT4gc3RhdGU6U3RhdGUudCAtPiBlbGVtZW50OmRvbSBKcy50IC0+IHVuaXRcbiAgICB2YWwgdG9fdmRvbV9mb3JfdGVzdGluZyA6IFsgYEN1c3RvbSBvZiBJbnB1dC50IC0+IHZkb21fbm9kZSB8IGBTZXhwX29mX2lucHV0IF1cbiAgZW5kXG5cbiAgbGV0IG9mX21vZHVsZSAodHlwZSBpbnB1dCkgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgSW5wdXQudCA9IGlucHV0KSA9XG4gICAgbGV0IG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBpbnB1dCA6IE0uSW5wdXQudFxuICAgICAgICA7IHN0YXRlIDogTS5TdGF0ZS50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG4gICAgaW5cbiAgICBsZXQgc2V4cF9vZl9kb20gOiBNLmRvbSBKcy50IC0+IFNleHAudCA9IGZ1biBfIC0+IFNleHAuQXRvbSBcIjxvcGFxdWU+XCIgaW5cbiAgICBsZXQgaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpNLm5hbWUgWyVzZXhwX29mOiBTdGF0ZS50ICogZG9tXSBpblxuICAgIEJhc2UuU3RhZ2VkLnN0YWdlIChmdW4gaW5wdXQgLT5cbiAgICAgIGxldCB2ZG9tX2Zvcl90ZXN0aW5nID1cbiAgICAgICAgbGF6eVxuICAgICAgICAgICh0X3RvX2pzXG4gICAgICAgICAgICAgKG1hdGNoIE0udG9fdmRvbV9mb3JfdGVzdGluZyB3aXRoXG4gICAgICAgICAgICAgIHwgYEN1c3RvbSBmIC0+IGYgaW5wdXRcbiAgICAgICAgICAgICAgfCBgU2V4cF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgICAgIGxldCBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBNLklucHV0LnNleHBfb2ZfdCBpbnB1dCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IEF0b20gXCI8b3BhcXVlPlwiIC0+IFtdXG4gICAgICAgICAgICAgICAgICB8IG90aGVyIC0+IFsgdGV4dCAoU2V4cC50b19zdHJpbmdfaHVtIG90aGVyKSBdXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBjcmVhdGVfZWxlbWVudCAoTS5uYW1lIF4gXCItd2lkZ2V0XCIpIGNoaWxkcmVuKSlcbiAgICAgIGluXG4gICAgICBjcmVhdGVcbiAgICAgICAgfmlkXG4gICAgICAgIH52ZG9tX2Zvcl90ZXN0aW5nXG4gICAgICAgIH5pbml0OihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgc3RhdGUsIGVsZW1lbnQgPSBNLmNyZWF0ZSBpbnB1dCBpblxuICAgICAgICAgIHsgaW5wdXQ7IHN0YXRlIH0sIGVsZW1lbnQpXG4gICAgICAgIH51cGRhdGU6KGZ1biB7IFN0YXRlLmlucHV0ID0gcHJldl9pbnB1dDsgc3RhdGUgfSBlbGVtZW50IC0+XG4gICAgICAgICAgbGV0IHN0YXRlLCBlbGVtZW50ID0gTS51cGRhdGUgfnByZXZfaW5wdXQgfmlucHV0IH5zdGF0ZSB+ZWxlbWVudCBpblxuICAgICAgICAgIHsgaW5wdXQ7IHN0YXRlIH0sIGVsZW1lbnQpXG4gICAgICAgIH5kZXN0cm95OihmdW4geyBTdGF0ZS5pbnB1dCA9IHByZXZfaW5wdXQ7IHN0YXRlIH0gZWxlbWVudCAtPlxuICAgICAgICAgIE0uZGVzdHJveSB+cHJldl9pbnB1dCB+c3RhdGUgfmVsZW1lbnQpXG4gICAgICAgICgpKVxuICA7O1xuZW5kXG5cbmxldCBsYXp5XyA/a2V5IHQgPSBMYXp5IHsga2V5OyB0IH1cblxubGV0IGVsZW1lbnRfZXhwZXJ0IGtpbmQgfnRhZyA/a2V5IGF0dHJzIGNoaWxkcmVuID1cbiAgbGV0IHJhd19hdHRycyA9IGxhenkgKEF0dHIudG9fcmF3IGF0dHJzKSBpblxuICB7IGtpbmQ7IHRhZzsga2V5OyBhdHRyczsgcmF3X2F0dHJzOyBjaGlsZHJlbiB9XG47O1xuXG5sZXQgd2lkZ2V0ID92ZG9tX2Zvcl90ZXN0aW5nID9kZXN0cm95ID91cGRhdGUgfmlkIH5pbml0ICgpID1cbiAgbGV0IHZkb21fZm9yX3Rlc3RpbmcgPVxuICAgIGxhenlcbiAgICAgIChtYXRjaCB2ZG9tX2Zvcl90ZXN0aW5nIHdpdGhcbiAgICAgICB8IFNvbWUgdCAtPiB0X3RvX2pzIChMYXp5LmZvcmNlIHQpXG4gICAgICAgfCBOb25lIC0+IHRfdG9fanMgKGNyZWF0ZSAoVHlwZV9lcXVhbC5JZC5uYW1lIGlkIF4gXCItd2lkZ2V0XCIpIFtdKSlcbiAgaW5cbiAgV2lkZ2V0IChXaWRnZXQuY3JlYXRlIH52ZG9tX2Zvcl90ZXN0aW5nID9kZXN0cm95ID91cGRhdGUgfmlkIH5pbml0ICgpKVxuOztcblxubGV0IGNyZWF0ZV9jaGlsZGxlc3MgdGFnID9rZXkgP2F0dHJzICgpID0gY3JlYXRlIHRhZyA/a2V5ID9hdHRycyBbXVxuXG5sZXQgY3JlYXRlX3N2ZyB0YWcgP2tleSA/KGF0dHJzID0gW10pIGNoaWxkcmVuID1cbiAgRWxlbWVudCAoZWxlbWVudCBgU3ZnIH50YWcgfmtleSAoQXR0ci5tYW55IGF0dHJzKSBjaGlsZHJlbilcbjs7XG5cbmxldCBjcmVhdGVfc3ZnX21vbm9pZCB0YWcgP2tleSA/KGF0dHJzID0gW10pIGNoaWxkcmVuID1cbiAgRWxlbWVudCAoZWxlbWVudCBgU3ZnIH50YWcgfmtleSAoQXR0ci5tYW55IGF0dHJzKSBjaGlsZHJlbilcbjs7XG5cbmxldCBub25lID0gTm9uZVxubGV0IHRleHRmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiB0ZXh0IGZvcm1hdFxuXG5sZXQgd2lkZ2V0X29mX21vZHVsZSBtID1cbiAgbGV0IGYgPSBCYXNlLlN0YWdlZC51bnN0YWdlIChXaWRnZXQub2ZfbW9kdWxlIG0pIGluXG4gIEJhc2UuU3RhZ2VkLnN0YWdlIChmdW4gaSAtPiBXaWRnZXQgKGYgaSkpXG47O1xuXG5sZXQgdG9fcmF3ID0gdF90b19qc1xubGV0IHRvX2RvbSB0ID0gUmF3Lk5vZGUudG9fZG9tICh0b19yYXcgdClcblxubW9kdWxlIElubmVyX2h0bWwgPSBzdHJ1Y3RcbiAgbGV0IHdpZGdldCB+bmFtZSBjcmVhdGUgPVxuICAgIGxldCBpZCA9XG4gICAgICAoKiBzdGFnZSB0aGUgaWQgZ2VuZXJhdGlvbiAqKVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWUgKGZ1biAoKGNvbnRlbnQsIF8sIF8pLCBfKSAtPiBTZXhwLkF0b20gY29udGVudClcbiAgICBpblxuICAgIFN0YWdlZC5zdGFnZVxuICAgICAgKGZ1blxuICAgICAgICA/b3ZlcnJpZGVfdmRvbV9mb3JfdGVzdGluZ1xuICAgICAgICB+dGFnXG4gICAgICAgIH5hdHRyc1xuICAgICAgICB+dGhpc19odG1sX2lzX3Nhbml0aXplZF9hbmRfaXNfdG90YWxseV9zYWZlX3RydXN0X21lOmNvbnRlbnRcbiAgICAgICAgKClcbiAgICAgICAgLT5cbiAgICAgICAgICBsZXQgZWxlbWVudCA9IGNyZWF0ZSB0YWcgfmF0dHJzIFtdIGluXG4gICAgICAgICAgbGV0IGluaXQgKCkgPVxuICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSB0b19kb20gZWxlbWVudCBpblxuICAgICAgICAgICAgZWxlbWVudCMjLmlubmVySFRNTCA6PSBKcy5zdHJpbmcgY29udGVudDtcbiAgICAgICAgICAgIChjb250ZW50LCB0YWcsIGF0dHJzKSwgZWxlbWVudFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHVwZGF0ZSAocHJldl9jb250ZW50LCBwcmV2X3RhZywgcHJldl9hdHRyKSBlbGVtZW50ID1cbiAgICAgICAgICAgIGxldCBlbGVtZW50ID1cbiAgICAgICAgICAgICAgKCogaWYgdGhlIHRhZyBvciB0aGUgYXR0cmlidXRlcyBhcmUgZGlmZmVyZW50LCBkbyBhIGRpZmYvcGF0Y2ggY3ljbGUgdG9cbiAgICAgICAgICAgICAgICAgZ2V0IGl0IHVwIHRvIGRhdGUgKilcbiAgICAgICAgICAgICAgaWYgKG5vdCAoU3RyaW5nLmVxdWFsIHByZXZfdGFnIHRhZykpIHx8IG5vdCAocGh5c19lcXVhbCBwcmV2X2F0dHIgYXR0cnMpXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBSYXcuUGF0Y2guY3JlYXRlXG4gICAgICAgICAgICAgICAgICB+cHJldmlvdXM6KGNyZWF0ZSBwcmV2X3RhZyB+YXR0cnM6cHJldl9hdHRyIFtdIHw+IHRvX3JhdylcbiAgICAgICAgICAgICAgICAgIH5jdXJyZW50OihjcmVhdGUgdGFnIH5hdHRycyBbXSB8PiB0b19yYXcpXG4gICAgICAgICAgICAgICAgfD4gUmF3LlBhdGNoLmFwcGx5IGVsZW1lbnRcbiAgICAgICAgICAgICAgZWxzZSBlbGVtZW50XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogaWYgdGhlIHRhZyBjaGFuZ2VkLCB0aGVuIFtlbGVtZW50XSB3aWxsIGJlIGVtcHR5LCBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGVcbiAgICAgICAgICAgICAgIGlubmVySFRNTC4gIElmIHRoZSBjb250ZW50IGNoYW5nZWQsIHRoZW4gd2UgbmVlZCB0byBzZXQgdGhlIGlubmVySFRNTCBmb3JcbiAgICAgICAgICAgICAgIG9idmlvdXMgcmVhc29ucy4gKilcbiAgICAgICAgICAgIGlmIChub3QgKFN0cmluZy5lcXVhbCBwcmV2X3RhZyB0YWcpKSB8fCBub3QgKFN0cmluZy5lcXVhbCBwcmV2X2NvbnRlbnQgY29udGVudClcbiAgICAgICAgICAgIHRoZW4gZWxlbWVudCMjLmlubmVySFRNTCA6PSBKcy5zdHJpbmcgY29udGVudDtcbiAgICAgICAgICAgIChjb250ZW50LCB0YWcsIGF0dHJzKSwgZWxlbWVudFxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogV2UgdXNlIHRoZSBbd2lkZ2V0XSBmdW5jdGlvbiBkaXJlY3RseSwgcmF0aGVyIHRoYW4gdGhyb3VnaCB0aGVcbiAgICAgICAgICAgICBlYXNpZXItdG8tdXNlIFt3aWRnZXRfb2ZfbW9kdWxlXSBmdW5jdGlvbiBiZWNhdXNlIHdlIHdhbnQgdG9cbiAgICAgICAgICAgICBleHBsaWNpdGx5IGNyZWF0ZSB0aGUgaWQgc3VjaCB0aGF0IGl0IGlzIGRpc3RpbmN0IGJldHdlZW5cbiAgICAgICAgICAgICBbaW5uZXJfaHRtbF0gYW5kIFtpbm5lcl9odG1sX3N2Z10uICopXG4gICAgICAgICAgbGV0IHZkb21fZm9yX3Rlc3RpbmcgPVxuICAgICAgICAgICAgbWF0Y2ggb3ZlcnJpZGVfdmRvbV9mb3JfdGVzdGluZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbGF6eSAoY3JlYXRlIHRhZyB+YXR0cnMgWyB0ZXh0IGNvbnRlbnQgXSlcbiAgICAgICAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgICAgICBpblxuICAgICAgICAgIHdpZGdldCB+aWQgfnZkb21fZm9yX3Rlc3RpbmcgfmluaXQgfnVwZGF0ZSAoKSlcbiAgOztcbmVuZFxuXG5sZXQgaW5uZXJfaHRtbF9zdmcgPVxuICBJbm5lcl9odG1sLndpZGdldCB+bmFtZTpcImlubmVyLWh0bWwtc3ZnLW5vZGVcIiAoZnVuIHRhZyB+YXR0cnMgLT5cbiAgICBjcmVhdGVfc3ZnX21vbm9pZCB0YWcgP2tleTpOb25lIH5hdHRycylcbiAgfD4gU3RhZ2VkLnVuc3RhZ2Vcbjs7XG5cbmxldCBpbm5lcl9odG1sID1cbiAgSW5uZXJfaHRtbC53aWRnZXQgfm5hbWU6XCJpbm5lci1odG1sLW5vZGVcIiAoZnVuIHRhZyB+YXR0cnMgLT5cbiAgICBjcmVhdGUgdGFnID9rZXk6Tm9uZSB+YXR0cnMpXG4gIHw+IFN0YWdlZC51bnN0YWdlXG47O1xuXG5sZXQgYSA9IGNyZWF0ZSBcImFcIlxubGV0IGFiYnIgPSBjcmVhdGUgXCJhYmJyXCJcbmxldCBib2R5ID0gY3JlYXRlIFwiYm9keVwiXG5sZXQgYnV0dG9uID0gY3JlYXRlIFwiYnV0dG9uXCJcbmxldCBjb2RlID0gY3JlYXRlIFwiY29kZVwiXG5sZXQgZGF0YWxpc3QgPSBjcmVhdGUgXCJkYXRhbGlzdFwiXG5sZXQgZGV0YWlscyA9IGNyZWF0ZSBcImRldGFpbHNcIlxubGV0IGRpdiA9IGNyZWF0ZSBcImRpdlwiXG5sZXQgbWFpbiA9IGNyZWF0ZSBcIm1haW5cIlxubGV0IGZpZWxkc2V0ID0gY3JlYXRlIFwiZmllbGRzZXRcIlxubGV0IGxlZ2VuZCA9IGNyZWF0ZSBcImxlZ2VuZFwiXG5sZXQgZm9vdGVyID0gY3JlYXRlIFwiZm9vdGVyXCJcbmxldCBoMSA9IGNyZWF0ZSBcImgxXCJcbmxldCBoMiA9IGNyZWF0ZSBcImgyXCJcbmxldCBoMyA9IGNyZWF0ZSBcImgzXCJcbmxldCBoNCA9IGNyZWF0ZSBcImg0XCJcbmxldCBoNSA9IGNyZWF0ZSBcImg1XCJcbmxldCBoNiA9IGNyZWF0ZSBcImg2XCJcbmxldCBoZWFkZXIgPSBjcmVhdGUgXCJoZWFkZXJcIlxubGV0IGh0bWwgPSBjcmVhdGUgXCJodG1sXCJcbmxldCBpbnB1dCA9IGNyZWF0ZV9jaGlsZGxlc3MgXCJpbnB1dFwiXG5sZXQgaW1nID0gY3JlYXRlX2NoaWxkbGVzcyBcImltZ1wiXG5sZXQgaW5wdXRfZGVwcmVjYXRlZCA9IGNyZWF0ZSBcImlucHV0XCJcbmxldCB0ZXh0YXJlYSA9IGNyZWF0ZSBcInRleHRhcmVhXCJcbmxldCBzZWxlY3QgPSBjcmVhdGUgXCJzZWxlY3RcIlxubGV0IG9wdGdyb3VwID0gY3JlYXRlIFwib3B0Z3JvdXBcIlxubGV0IG9wdGlvbiA9IGNyZWF0ZSBcIm9wdGlvblwiXG5sZXQgbGFiZWwgPSBjcmVhdGUgXCJsYWJlbFwiXG5sZXQgbGkgPSBjcmVhdGUgXCJsaVwiXG5sZXQgcCA9IGNyZWF0ZSBcInBcIlxubGV0IHByZSA9IGNyZWF0ZSBcInByZVwiXG5sZXQgc2VjdGlvbiA9IGNyZWF0ZSBcInNlY3Rpb25cIlxubGV0IHNwYW4gPSBjcmVhdGUgXCJzcGFuXCJcbmxldCBzdHJvbmcgPSBjcmVhdGUgXCJzdHJvbmdcIlxubGV0IGVtID0gY3JlYXRlIFwiZW1cIlxubGV0IGJsb2NrcXVvdGUgPSBjcmVhdGUgXCJibG9ja3F1b3RlXCJcbmxldCBzdW1tYXJ5ID0gY3JlYXRlIFwic3VtbWFyeVwiXG5sZXQgaWZyYW1lID0gY3JlYXRlIFwiaWZyYW1lXCJcbmxldCB0YWJsZSA9IGNyZWF0ZSBcInRhYmxlXCJcbmxldCB0Ym9keSA9IGNyZWF0ZSBcInRib2R5XCJcbmxldCB0ZCA9IGNyZWF0ZSBcInRkXCJcbmxldCB0aCA9IGNyZWF0ZSBcInRoXCJcbmxldCB0aGVhZCA9IGNyZWF0ZSBcInRoZWFkXCJcbmxldCB0ciA9IGNyZWF0ZSBcInRyXCJcbmxldCB1bCA9IGNyZWF0ZSBcInVsXCJcbmxldCBvbCA9IGNyZWF0ZSBcIm9sXCJcbmxldCBiciA9IGNyZWF0ZV9jaGlsZGxlc3MgXCJiclwiXG5sZXQgaHIgPSBjcmVhdGVfY2hpbGRsZXNzIFwiaHJcIlxubGV0IGRsID0gY3JlYXRlIFwiZGxcIlxubGV0IGR0ID0gY3JlYXRlIFwiZHRcIlxubGV0IGRkID0gY3JlYXRlIFwiZGRcIlxuXG5sZXQgc2V4cF9mb3JfZGVidWdnaW5nID9pbmRlbnQgc2V4cCA9XG4gIHNleHAgfD4gU2V4cC50b19zdHJpbmdfaHVtID9pbmRlbnQgfD4gdGV4dCB8PiBMaXN0LnJldHVybiB8PiBwcmUgfmF0dHJzOltdXG47O1xuXG5tb2R1bGUgUGF0Y2ggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUmF3LlBhdGNoLnRcblxuICBsZXQgY3JlYXRlIH5wcmV2aW91cyB+Y3VycmVudCA9XG4gICAgUmF3LlBhdGNoLmNyZWF0ZSB+cHJldmlvdXM6KHRfdG9fanMgcHJldmlvdXMpIH5jdXJyZW50Oih0X3RvX2pzIGN1cnJlbnQpXG4gIDs7XG5cbiAgbGV0IGFwcGx5IHQgZWx0ID0gUmF3LlBhdGNoLmFwcGx5IGVsdCB0XG4gIGxldCBpc19lbXB0eSB0ID0gUmF3LlBhdGNoLmlzX2VtcHR5IHRcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBjcmVhdGUgP2tleSB0YWcgYXR0cnMgY2hpbGRyZW4gPVxuICAgIEVsZW1lbnQgKGVsZW1lbnRfZXhwZXJ0IGBWbm9kZSA/a2V5IH50YWcgYXR0cnMgY2hpbGRyZW4pXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9zdmcgP2tleSB0YWcgYXR0cnMgY2hpbGRyZW4gPVxuICAgIEVsZW1lbnQgKGVsZW1lbnRfZXhwZXJ0IGBTdmcgP2tleSB+dGFnIGF0dHJzIGNoaWxkcmVuKVxuICA7O1xuZW5kXG4iLCJtb2R1bGUgQXR0ciA9IHN0cnVjdFxuICBpbmNsdWRlIEF0dHJcbiAgbW9kdWxlIEhvb2tzID0gSG9va3NcbiAgbW9kdWxlIEdsb2JhbF9saXN0ZW5lcnMgPSBHbG9iYWxfbGlzdGVuZXJzXG5lbmRcblxubW9kdWxlIEF0dHJzID0gQXR0ci5NdWx0aVxubW9kdWxlIEVmZmVjdCA9IEVmZmVjdFxubW9kdWxlIE5vZGUgPSBOb2RlXG4iLCJtb2R1bGUgVmRvbSA9IFZkb21cbm1vZHVsZSBEb21fZmxvYXQgPSBEb21fZmxvYXRcbm1vZHVsZSBKc19tYXAgPSBKc19tYXBcblxubW9kdWxlIFRvcF9sZXZlbF9lZmZlY3RzID0gc3RydWN0XG4gIGxldCAoKSA9XG4gICAgKCogdXNlIHRoZSBuYXRpdmUtamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBmbG9hdCAtPiBzdHJpbmcgd2l0aCBhIGZpeGVkIG51bWJlciBvZlxuICAgICAgIG51bWJlcnMgYWZ0ZXIgdGhlIGRlY2ltYWwgcGxhY2UuICopXG4gICAgQ3NzX2dlbi5Qcml2YXRlLmZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkIDo9IERvbV9mbG9hdC50b19zdHJpbmdfZml4ZWRcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDcHVzZXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBJbnQuU2V0LnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgbGV0IGhlcmUgPSBbJWhlcmVdXG5cbiAgICAgIGxldCB2YWxpZGF0ZSB0ID1cbiAgICAgICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZVxuICAgICAgICAgIChJbnQudmFsaWRhdGVfbGJvdW5kIH5taW46KEluY2wgMSkgKFNldC5sZW5ndGggdCkpXG4gICAgICAgICAgKFNldC50b19saXN0IHRcbiAgICAgICAgICAgfD4gTGlzdC5tYXAgfmY6SW50LnZhbGlkYXRlX25vbl9uZWdhdGl2ZVxuICAgICAgICAgICB8PiBWYWxpZGF0ZS5uYW1lX2xpc3QgXCJUaHJlYWRfcG9vbF9jcHVzZXRcIilcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIGxldCBlcXVhbCB0MSB0MiA9IEludC5TZXQuZXF1YWwgKHQxIHw+IHJhdykgKHQyIHw+IHJhdylcbmVuZFxuXG50eXBlIHQgPVxuICB8IEluaGVyaXRcbiAgfCBDcHVzZXQgb2YgQ3B1c2V0LnRcbltAQGRlcml2aW5nIHNleHBdXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgVHVwbGVfdHlwZV9pbnRmXG5cbm1vZHVsZSBTbG90cyA9IHN0cnVjdFxuICB0eXBlIHVfID0geyBzbG90c19wZXJfdHVwbGUgOiBpbnQgfSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgndHVwbGUsICd2YXJpYW50KSB1ID0gdV8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSB0XyA9IFsgYFNsb3RzIG9mIHVfIF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ3R1cGxlLCAndmFyaWFudCkgdCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHNsb3RzX3Blcl90dXBsZSAoYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gbiB9KSA9IG5cblxuICB0eXBlICdhMCB0MSA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExKSB0MiA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIpIHQzID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzKSB0NCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0KSB0NSA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUpIHQ2ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2KSB0NyA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3KSB0OCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgpIHQ5ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5KSB0MTAgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCkgdDExID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTksICdhMTAsICdhMTEpIHQxMiA9IHRfXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwLCAnYTExLCAnYTEyKSB0MTMgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCwgJ2ExMSwgJ2ExMiwgJ2ExMykgdDE0ID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdDEgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxIH1cbiAgbGV0IHQyID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMiB9XG4gIGxldCB0MyA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDMgfVxuICBsZXQgdDQgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA0IH1cbiAgbGV0IHQ1ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gNSB9XG4gIGxldCB0NiA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDYgfVxuICBsZXQgdDcgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA3IH1cbiAgbGV0IHQ4ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gOCB9XG4gIGxldCB0OSA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDkgfVxuICBsZXQgdDEwID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTAgfVxuICBsZXQgdDExID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTEgfVxuICBsZXQgdDEyID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTIgfVxuICBsZXQgdDEzID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTMgfVxuICBsZXQgdDE0ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMTQgfVxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHVwbGVfcG9vbF9pbnRmXG5tb2R1bGUgVHVwbGVfdHlwZSA9IFR1cGxlX3R5cGVcblxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xubGV0IHBoeXNfZXF1YWwgPSBTdGRsaWIuKCA9PSApXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplX2luX2JpdHMgPSA2NFxuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCBudW1fYml0cyA9IEludC5udW1fYml0c1xuICBsZXQgbWF4X3ZhbHVlID0gU3RkbGliLm1heF9pbnRcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9pbnRcbmVuZFxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5sZXQgY29uY2F0IGwgPSBCYXNlLlN0cmluZy5jb25jYXQgfnNlcDpcIlwiIGxcblxubW9kdWxlIHR5cGUgUyA9IFNcblxubW9kdWxlIFBvb2wgPSBzdHJ1Y3RcbiAgbGV0IGdyb3dfY2FwYWNpdHkgfmNhcGFjaXR5IH5vbGRfY2FwYWNpdHkgPVxuICAgIG1hdGNoIGNhcGFjaXR5IHdpdGhcbiAgICB8IE5vbmUgLT4gaWYgb2xkX2NhcGFjaXR5ID0gMCB0aGVuIDEgZWxzZSBvbGRfY2FwYWNpdHkgKiAyXG4gICAgfCBTb21lIGNhcGFjaXR5IC0+XG4gICAgICBpZiBjYXBhY2l0eSA8PSBvbGRfY2FwYWNpdHlcbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiUG9vbC5ncm93IGdvdCB0b28gc21hbGwgY2FwYWNpdHlcIlxuICAgICAgICAgIChgY2FwYWNpdHkgY2FwYWNpdHksIGBvbGRfY2FwYWNpdHkgb2xkX2NhcGFjaXR5KVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgY2FwYWNpdHkgb2YgaW50IF0gKiBbIGBvbGRfY2FwYWNpdHkgb2YgaW50IF1dO1xuICAgICAgY2FwYWNpdHlcbiAgOztcblxuICBtb2R1bGUgU2xvdHMgPSBUdXBsZV90eXBlLlNsb3RzXG5cbiAgbGV0IG1heF9zbG90ID0gMTRcblxuICAoKiBUaGUgcG9vbCBpcyByZXByZXNlbnRlZCBhcyBhIHNpbmdsZSBbVW5pZm9ybV9hcnJheS50XSwgd2hlcmUgaW5kZXggemVybyBoYXMgdGhlXG4gICAgIG1ldGFkYXRhIGFib3V0IHRoZSBwb29sIGFuZCB0aGUgcmVtYWluaW5nIGluZGljZXMgYXJlIHRoZSB0dXBsZXMgbGF5ZWQgb3V0IG9uZSBhZnRlclxuICAgICB0aGUgb3RoZXIuICBFYWNoIHR1cGxlIHRha2VzIFsxICsgc2xvdHNfcGVyX3R1cGxlXSBpbmRpY2VzIGluIHRoZSBwb29sLCB3aGVyZSB0aGVcbiAgICAgZmlyc3QgaW5kZXggaG9sZHMgYSBoZWFkZXIgYW5kIHRoZSByZW1haW5pbmcgaW5kaWNlcyBob2xkIHRoZSB0dXBsZSdzIHNsb3RzOlxuXG4gICAgIHt2XG4gICAgIHwgaGVhZGVyIHwgczAgfCBzMSB8IC4uLiB8IHM8Ti0xPiB8XG4gICAgIHZ9XG5cbiAgICAgQSBbUG9pbnRlci50XSB0byBhIHR1cGxlIGNvbnRhaW5zIHRoZSBpbnRlZ2VyIGluZGV4IHdoZXJlIGl0cyBoZWFkZXIgaXMsIGFzIHdlbGwgYXNcbiAgICAgKGEgbWFzayBvZikgdGhlIHR1cGxlJ3MgdW5pcXVlIGlkLlxuXG4gICAgIFRoZSBmcmVlIHR1cGxlcyBhcmUgc2luZ2x5IGxpbmtlZCB2aWEgdGhlIGhlYWRlcnMuXG5cbiAgICAgV2hlbiBhIHR1cGxlIGlzIGluIHVzZSwgaXRzIGhlYWRlciBpcyBtYXJrZWQgdG8gaW5kaWNhdGUgc28sIGFuZCBhbHNvIHRvIGluY2x1ZGUgdGhlXG4gICAgIHR1cGxlJ3MgdW5pcXVlIGlkLiAgVGhpcyBhbGxvd3MgdXMgdG8gY2hlY2sgaW4gY29uc3RhbnQgdGltZSB3aGV0aGVyIGEgcG9pbnRlciBpc1xuICAgICB2YWxpZCwgYnkgY29tcGFyaW5nIHRoZSBpZCBpbiB0aGUgcG9pbnRlciB3aXRoIHRoZSBpZCBpbiB0aGUgaGVhZGVyLlxuXG4gICAgIFdoZW4gYSB0dXBsZSBpcyBub3QgaW4gdXNlLCBpdHMgaGVhZGVyIGlzIHBhcnQgb2YgdGhlIGZyZWUgbGlzdCwgYW5kIGl0cyB0dXBsZSBzbG90c1xuICAgICBoYXZlIGR1bW15IHZhbHVlcyBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZXMsIGZyb20gdGhlIFtkdW1teV0gdHVwbGUgc3VwcGxpZWQgdG9cbiAgICAgW2NyZWF0ZV0uICBXZSBtdXN0IGhhdmUgZHVtbXkgdmFsdWVzIG9mIHRoZSBjb3JyZWN0IHR5cGUgdG8gcHJldmVudCBhIHNlZ2ZhdWx0IGluXG4gICAgIGNvZGUgdGhhdCAobWlzdGFrZW5seSkgdXNlcyBhIHBvaW50ZXIgdG8gYSBmcmVlIHR1cGxlLlxuXG4gICAgIEZvciBbUG9vbC5VbnNhZmVdLCBhIHNsb3QgaW4gYSBmcmVlIG9iamVjdCBpcyBndWFyYW50ZWVkIHRvIGJlIGFuIGludDsgaXQgbXVzdCBub3QgYmVcbiAgICAgcG9pbnRlciB0byBwcmV2ZW50IGEgc3BhY2UgbGVhay4gIEhvd2V2ZXIsIHRoZSBpbnQgaW4gdGhlIHNsb3QgbWF5IG5vdCByZXByZXNlbnQgYVxuICAgICB2YWxpZCB2YWx1ZSBvZiB0aGUgdHlwZS5cbiAgKilcblxuICBtb2R1bGUgU2xvdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdzbG90cywgJ2EpIHQgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBlcXVhbCAodDEgOiAoXywgXykgdCkgdDIgPSB0MSA9IHQyXG4gICAgbGV0IHQwID0gMVxuICAgIGxldCB0MSA9IDJcbiAgICBsZXQgdDIgPSAzXG4gICAgbGV0IHQzID0gNFxuICAgIGxldCB0NCA9IDVcbiAgICBsZXQgdDUgPSA2XG4gICAgbGV0IHQ2ID0gN1xuICAgIGxldCB0NyA9IDhcbiAgICBsZXQgdDggPSA5XG4gICAgbGV0IHQ5ID0gMTBcbiAgICBsZXQgdDEwID0gMTFcbiAgICBsZXQgdDExID0gMTJcbiAgICBsZXQgdDEyID0gMTNcbiAgICBsZXQgdDEzID0gMTRcbiAgICBsZXQldGVzdCBfID0gdDEzID0gbWF4X3Nsb3RcbiAgZW5kXG5cbiAgKCogV2Ugb25seSBoYXZlIFtJbnQubnVtX2JpdHNdIGJpdHMgYXZhaWxhYmxlIGZvciBwb29sIHBvaW50ZXJzLiAgVGhlIGJpdHMgb2YgYSBwb29sXG4gICAgIHBvaW50ZXIgZW5jb2RlIHR3byB0aGluZ3M6XG5cbiAgICAgLSB0aGUgdHVwbGUncyBhcnJheSBpbmRleCBpbiB0aGUgcG9vbFxuICAgICAtIHRoZSB0dXBsZSdzIGlkZW50aWZpZXIgKG5vdCBuZWNlc3NhcmlseSB1bmlxdWUpXG5cbiAgICAgV2UgY2hvb3NlIFthcnJheV9pbmRleF9udW1fYml0c10gYXMgbGFyZ2UgYXMgbmVlZGVkIGZvciB0aGUgbWF4aW11bSBwb29sIGNhcGFjaXR5XG4gICAgIHRoYXQgd2Ugd2FudCB0byBzdXBwb3J0LCBhbmQgdXNlIHRoZSByZW1haW5pbmcgW21hc2tlZF90dXBsZV9pZF9udW1fYml0c10gYml0cyBmb3JcbiAgICAgdGhlIGlkZW50aWZpZXIuICA2NC1iaXQgYW5kIDMyLWJpdCBhcmNoaXRlY3R1cmVzIHR5cGljYWxseSBoYXZlIHZlcnkgZGlmZmVyZW50XG4gICAgIGFkZHJlc3Mtc3BhY2Ugc2l6ZXMsIHNvIHdlIGNob29zZSBbYXJyYXlfaW5kZXhfbnVtX2JpdHNdIGRpZmZlcmVudGx5LiAqKVxuXG4gIGxldCBhcnJheV9pbmRleF9udW1fYml0cyA9XG4gICAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgICB0aGVuIChcbiAgICAgIGFzc2VydCAoSW50Lm51bV9iaXRzID0gNjMpO1xuICAgICAgMzApXG4gICAgZWxzZSAoXG4gICAgICBhc3NlcnQgKEludC5udW1fYml0cyA9IDMxIHx8IEludC5udW1fYml0cyA9IDMyKTtcbiAgICAgIDIyKVxuICA7O1xuXG4gIGxldCBtYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHMgPSBJbnQubnVtX2JpdHMgLSBhcnJheV9pbmRleF9udW1fYml0c1xuICBsZXQldGVzdCBfID0gYXJyYXlfaW5kZXhfbnVtX2JpdHMgPiAwXG4gIGxldCV0ZXN0IF8gPSBtYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHMgPiAwXG4gIGxldCV0ZXN0IF8gPSBhcnJheV9pbmRleF9udW1fYml0cyArIG1hc2tlZF90dXBsZV9pZF9udW1fYml0cyA8PSBJbnQubnVtX2JpdHNcbiAgbGV0IG1heF9hcnJheV9sZW5ndGggPSAxIGxzbCBhcnJheV9pbmRleF9udW1fYml0c1xuXG4gIG1vZHVsZSBUdXBsZV9pZCA6IHNpZ1xuICAgIHR5cGUgdCA9IHByaXZhdGUgaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGluaXQgOiB0XG4gICAgdmFsIG5leHQgOiB0IC0+IHRcbiAgICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgICB2YWwgZXhhbXBsZXMgOiB0IGxpc3RcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAoKiBXZSBndWFyYW50ZWUgdGhhdCB0dXBsZSBpZHMgYXJlIG5vbm5lZ2F0aXZlIHNvIHRoYXQgdGhleSBjYW4gYmUgZW5jb2RlZCBpblxuICAgICAgIGhlYWRlcnMuICopXG4gICAgbGV0IGludmFyaWFudCB0ID0gYXNzZXJ0ICh0ID49IDApXG4gICAgbGV0IHRvX3N0cmluZyA9IEludC50b19zdHJpbmdcbiAgICBsZXQgZXF1YWwgKHQxIDogdCkgdDIgPSB0MSA9IHQyXG4gICAgbGV0IGluaXQgPSAwXG4gICAgbGV0IG5leHQgdCA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gdCArIDEgZWxzZSBpZiB0ID0gSW50Lm1heF92YWx1ZSB0aGVuIDAgZWxzZSB0ICsgMVxuICAgIGxldCB0b19pbnQgdCA9IHRcblxuICAgIGxldCBvZl9pbnQgaSA9XG4gICAgICBpZiBpIDwgMFxuICAgICAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlR1cGxlX2lkLm9mX2ludCBnb3QgbmVnYXRpdmUgaW50XCIgaSBbJXNleHBfb2Y6IGludF07XG4gICAgICBpXG4gICAgOztcblxuICAgIGxldCBleGFtcGxlcyA9IFsgMDsgMTsgMHgxRkZGX0ZGRkY7IEludC5tYXhfdmFsdWUgXVxuICBlbmRcblxuICBsZXQgdHVwbGVfaWRfbWFzayA9ICgxIGxzbCBtYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHMpIC0gMVxuXG4gIG1vZHVsZSBQb2ludGVyIDogc2lnXG4gICAgKCogW1BvaW50ZXIudF0gaXMgYW4gZW5jb2RpbmcgYXMgYW4gW2ludF0gb2YgdGhlIGZvbGxvd2luZyBzdW0gdHlwZTpcblxuICAgICAgIHtbXG4gICAgICAgICB8IE51bGxcbiAgICAgICAgIHwgTm9ybWFsIG9mIHsgaGVhZGVyX2luZGV4IDogaW50OyBtYXNrZWRfdHVwbGVfaWQgOiBpbnQgfVxuICAgICAgIF19XG5cbiAgICAgICBUaGUgZW5jb2RpbmcgaXMgY2hvc2VuIHRvIG9wdGltaXplIHRoZSBtb3N0IGNvbW1vbiBvcGVyYXRpb24sIG5hbWVseSB0dXBsZS1zbG90XG4gICAgICAgYWNjZXNzLCB0aGUgW3Nsb3RfaW5kZXhdIGZ1bmN0aW9uLiAgVGhlIGVuY29kaW5nIGlzIGRlc2lnbmVkIHNvIHRoYXQgW3Nsb3RfaW5kZXhdXG4gICAgICAgcHJvZHVjZXMgYSBuZWdhdGl2ZSBudW1iZXIgZm9yIFtOdWxsXSwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc3Vic2VxdWVudCBhcnJheSBib3VuZHNcbiAgICAgICBjaGVjayB0byBmYWlsLiAqKVxuXG4gICAgdHlwZSAnc2xvdHMgdCA9IHByaXZhdGUgaW50IFtAQGRlcml2aW5nIHNleHBfb2YsIHR5cGVyZXBdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgcGh5c19jb21wYXJlIDogJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBwaHlzX2VxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcblxuICAgICgqIFRoZSBudWxsIHBvaW50ZXIuICBbbnVsbF0gaXMgYSBmdW5jdGlvbiBkdWUgdG8gaXNzdWVzIHdpdGggdGhlIHZhbHVlIHJlc3RyaWN0aW9uLiAqKVxuXG4gICAgdmFsIG51bGwgOiB1bml0IC0+IF8gdFxuICAgIHZhbCBpc19udWxsIDogXyB0IC0+IGJvb2xcblxuICAgICgqIE5vcm1hbCBwb2ludGVycy4gKilcblxuICAgIHZhbCBjcmVhdGUgOiBoZWFkZXJfaW5kZXg6aW50IC0+IFR1cGxlX2lkLnQgLT4gXyB0XG4gICAgdmFsIGhlYWRlcl9pbmRleCA6IF8gdCAtPiBpbnRcbiAgICB2YWwgbWFza2VkX3R1cGxlX2lkIDogXyB0IC0+IGludFxuICAgIHZhbCBzbG90X2luZGV4IDogXyB0IC0+IChfLCBfKSBTbG90LnQgLT4gaW50XG4gICAgdmFsIGZpcnN0X3Nsb3RfaW5kZXggOiBfIHQgLT4gaW50XG5cbiAgICBtb2R1bGUgSWQgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICAgIHZhbCB0b19pbnQ2MyA6IHQgLT4gSW50NjMudFxuICAgICAgdmFsIG9mX2ludDYzIDogSW50NjMudCAtPiB0XG4gICAgZW5kXG5cbiAgICB2YWwgdG9faWQgOiBfIHQgLT4gSWQudFxuICAgIHZhbCBvZl9pZF9leG4gOiBJZC50IC0+IF8gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICAoKiBBIHBvaW50ZXIgaXMgZWl0aGVyIFtudWxsXSBvciB0aGUgKHBvc2l0aXZlKSBpbmRleCBpbiB0aGUgcG9vbCBvZiB0aGUgbmV4dC1mcmVlXG4gICAgICAgZmllbGQgcHJlY2VlZGluZyB0aGUgdHVwbGUncyBzbG90cy4gKilcbiAgICB0eXBlICdzbG90cyB0ID0gaW50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbiAgICBsZXQgc2V4cF9vZl90IF8gdCA9IFNleHAuQXRvbSAoc3ByaW50ZiBcIjxQb29sLlBvaW50ZXIudDogMHglMDh4PlwiIHQpXG4gICAgbGV0IHBoeXNfZXF1YWwgKHQxIDogXyB0KSB0MiA9IHBoeXNfZXF1YWwgdDEgdDJcbiAgICBsZXQgcGh5c19jb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBudWxsICgpID0gLW1heF9zbG90IC0gMVxuICAgIGxldCBpc19udWxsIHQgPSBwaHlzX2VxdWFsIHQgKG51bGwgKCkpXG5cbiAgICAoKiBbbnVsbF0gbXVzdCBiZSBzdWNoIHRoYXQgW251bGwgKyBzbG90XSBpcyBhbiBpbnZhbGlkIGFycmF5IGluZGV4IGZvciBhbGwgc2xvdHMuXG4gICAgICAgT3RoZXJ3aXNlIGdldC9zZXQgb24gdGhlIG51bGwgcG9pbnRlciBtYXkgbGVhZCB0byBhIHNlZ2ZhdWx0LiAqKVxuICAgIGxldCV0ZXN0IF8gPSBudWxsICgpICsgbWF4X3Nsb3QgPCAwXG5cbiAgICBsZXQgY3JlYXRlIH5oZWFkZXJfaW5kZXggKHR1cGxlX2lkIDogVHVwbGVfaWQudCkgPVxuICAgICAgaGVhZGVyX2luZGV4XG4gICAgICBsb3IgKChUdXBsZV9pZC50b19pbnQgdHVwbGVfaWQgbGFuZCB0dXBsZV9pZF9tYXNrKSBsc2wgYXJyYXlfaW5kZXhfbnVtX2JpdHMpXG4gICAgOztcblxuICAgIGxldCBoZWFkZXJfaW5kZXhfbWFzayA9ICgxIGxzbCBhcnJheV9pbmRleF9udW1fYml0cykgLSAxXG4gICAgbGV0IG1hc2tlZF90dXBsZV9pZCB0ID0gdCBsc3IgYXJyYXlfaW5kZXhfbnVtX2JpdHNcbiAgICBsZXQgaGVhZGVyX2luZGV4IHQgPSB0IGxhbmQgaGVhZGVyX2luZGV4X21hc2tcbiAgICBsZXQgaW52YXJpYW50IF8gdCA9IGlmIG5vdCAoaXNfbnVsbCB0KSB0aGVuIGFzc2VydCAoaGVhZGVyX2luZGV4IHQgPiAwKVxuICAgIGxldCV0ZXN0X3VuaXQgXyA9IGludmFyaWFudCBpZ25vcmUgKG51bGwgKCkpXG5cbiAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgTGlzdC5pdGVyIFR1cGxlX2lkLmV4YW1wbGVzIH5mOihmdW4gdHVwbGVfaWQgLT5cbiAgICAgICAgaW52YXJpYW50IGlnbm9yZSAoY3JlYXRlIH5oZWFkZXJfaW5kZXg6MSB0dXBsZV9pZCkpXG4gICAgOztcblxuICAgIGxldCBzbG90X2luZGV4IHQgc2xvdCA9IGhlYWRlcl9pbmRleCB0ICsgc2xvdFxuICAgIGxldCBmaXJzdF9zbG90X2luZGV4IHQgPSBzbG90X2luZGV4IHQgU2xvdC50MFxuXG4gICAgbW9kdWxlIElkID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEludDYzXG5cbiAgICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuICAgICAgbGV0IG9mX2ludDYzIGkgPSBpXG4gICAgZW5kXG5cbiAgICBsZXQgdG9faWQgdCA9IElkLm9mX2ludCB0XG5cbiAgICBsZXQgb2ZfaWRfZXhuIGlkID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgdCA9IElkLnRvX2ludF9leG4gaWQgaW5cbiAgICAgICAgaWYgaXNfbnVsbCB0XG4gICAgICAgIHRoZW4gdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgc2hvdWxkX2VxdWFsID1cbiAgICAgICAgICAgIGNyZWF0ZSB+aGVhZGVyX2luZGV4OihoZWFkZXJfaW5kZXggdCkgKFR1cGxlX2lkLm9mX2ludCAobWFza2VkX3R1cGxlX2lkIHQpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgcGh5c19lcXVhbCB0IHNob3VsZF9lcXVhbFxuICAgICAgICAgIHRoZW4gdFxuICAgICAgICAgIGVsc2UgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJzaG91bGQgZXF1YWxcIiBzaG91bGRfZXF1YWwgWyVzZXhwX29mOiBfIHRdKVxuICAgICAgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiUG9pbnRlci5vZl9pZF9leG4gZ290IHN0cmFuZ2UgaWRcIlxuICAgICAgICAgIChpZCwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogSWQudCAqIGV4bl1cbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgSGVhZGVyIDogc2lnXG4gICAgKCogQSBbSGVhZGVyLnRdIGlzIGFuIGVuY29kaW5nIGFzIGFuIFtpbnRdIG9mIHRoZSBmb2xsb3dpbmcgdHlwZTpcblxuICAgICAgIHtbXG4gICAgICAgICB8IE51bGxcbiAgICAgICAgIHwgRnJlZSBvZiB7IG5leHRfZnJlZV9oZWFkZXJfaW5kZXggOiBpbnQgfVxuICAgICAgICAgfCBVc2VkIG9mIHsgdHVwbGVfaWQgOiBpbnQgfVxuICAgICAgIF19XG5cbiAgICAgICBJZiBhIHR1cGxlIGlzIGZyZWUsIGl0cyBoZWFkZXIgaXMgc2V0IHRvIGVpdGhlciBbTnVsbF0gb3IgW0ZyZWVdIHdpdGhcbiAgICAgICBbbmV4dF9mcmVlX2hlYWRlcl9pbmRleF0gaW5kaWNhdGluZyB0aGUgaGVhZGVyIG9mIHRoZSBuZXh0IHR1cGxlIG9uIHRoZSBmcmVlIGxpc3QuXG4gICAgICAgSWYgYSB0dXBsZSBpcyBpbiB1c2UsIGl0IGhlYWRlciBpcyBzZXQgdG8gW1VzZWRdLiAqKVxuXG4gICAgdHlwZSB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBudWxsIDogdFxuICAgIHZhbCBpc19udWxsIDogdCAtPiBib29sXG4gICAgdmFsIGZyZWUgOiBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4OmludCAtPiB0XG4gICAgdmFsIGlzX2ZyZWUgOiB0IC0+IGJvb2xcbiAgICB2YWwgbmV4dF9mcmVlX2hlYWRlcl9pbmRleCA6IHQgLT4gaW50XG5cbiAgICAoKiBvbmx5IHZhbGlkIGlmIFtpc19mcmVlIHRdICopXG5cbiAgICB2YWwgdXNlZCA6IFR1cGxlX2lkLnQgLT4gdFxuICAgIHZhbCBpc191c2VkIDogdCAtPiBib29sXG4gICAgdmFsIHR1cGxlX2lkIDogdCAtPiBUdXBsZV9pZC50XG5cbiAgICAoKiBvbmx5IHZhbGlkIGlmIFtpc191c2VkIHRdICopXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGludFxuXG4gICAgbGV0IG51bGwgPSAwXG4gICAgbGV0IGlzX251bGwgdCA9IHQgPSAwXG5cbiAgICAoKiBXZSBrbm93IHRoYXQgaGVhZGVyIGluZGljZXMgYXJlIFs+IDBdLCBiZWNhdXNlIGluZGV4IFswXSBob2xkcyB0aGUgbWV0YWRhdGEuICopXG4gICAgbGV0IGZyZWUgfm5leHRfZnJlZV9oZWFkZXJfaW5kZXggPSBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4XG4gICAgbGV0IGlzX2ZyZWUgdCA9IHQgPiAwXG4gICAgbGV0IG5leHRfZnJlZV9oZWFkZXJfaW5kZXggdCA9IHRcbiAgICBsZXQgdXNlZCAodHVwbGVfaWQgOiBUdXBsZV9pZC50KSA9IC0xIC0gKHR1cGxlX2lkIDo+IGludClcbiAgICBsZXQgaXNfdXNlZCB0ID0gdCA8IDBcbiAgICBsZXQgdHVwbGVfaWQgdCA9IFR1cGxlX2lkLm9mX2ludCAoLSh0ICsgMSkpXG5cbiAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgTGlzdC5pdGVyIFR1cGxlX2lkLmV4YW1wbGVzIH5mOihmdW4gaWQgLT5cbiAgICAgICAgbGV0IHQgPSB1c2VkIGlkIGluXG4gICAgICAgIGFzc2VydCAoaXNfdXNlZCB0KTtcbiAgICAgICAgYXNzZXJ0IChUdXBsZV9pZC5lcXVhbCAodHVwbGVfaWQgdCkgaWQpKVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgaWYgaXNfbnVsbCB0XG4gICAgICB0aGVuIFNleHAuQXRvbSBcIm51bGxcIlxuICAgICAgZWxzZSBpZiBpc19mcmVlIHRcbiAgICAgIHRoZW4gU2V4cC4oTGlzdCBbIEF0b20gXCJGcmVlXCI7IEF0b20gKEludC50b19zdHJpbmcgKG5leHRfZnJlZV9oZWFkZXJfaW5kZXggdCkpIF0pXG4gICAgICBlbHNlIFNleHAuKExpc3QgWyBBdG9tIFwiVXNlZFwiOyBBdG9tIChUdXBsZV9pZC50b19zdHJpbmcgKHR1cGxlX2lkIHQpKSBdKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBtZXRhZGF0YV9pbmRleCA9IDBcbiAgbGV0IHN0YXJ0X29mX3R1cGxlc19pbmRleCA9IDFcblxuICBsZXQgbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUgPVxuICAgIChtYXhfYXJyYXlfbGVuZ3RoIC0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4KSAvICgxICsgc2xvdHNfcGVyX3R1cGxlKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgZm9yIHNsb3RzX3Blcl90dXBsZSA9IDEgdG8gbWF4X3Nsb3QgZG9cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIHN0YXJ0X29mX3R1cGxlc19pbmRleCArICgoMSArIHNsb3RzX3Blcl90dXBsZSkgKiBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSlcbiAgICAgICAgPD0gbWF4X2FycmF5X2xlbmd0aClcbiAgICBkb25lXG4gIDs7XG5cbiAgbW9kdWxlIE1ldGFkYXRhID0gc3RydWN0XG4gICAgdHlwZSAnc2xvdHMgdCA9XG4gICAgICB7ICgqIFtzbG90c19wZXJfdHVwbGVdIGlzIG51bWJlciBvZiBzbG90cyBpbiBhIHR1cGxlIGFzIHNlZW4gYnkgdGhlIHVzZXI7IGkuZS4gbm90XG4gICAgICAgICAgIGNvdW50aW5nIHRoZSBuZXh0LWZyZWUgcG9pbnRlci4gKilcbiAgICAgICAgc2xvdHNfcGVyX3R1cGxlIDogaW50XG4gICAgICA7IGNhcGFjaXR5IDogaW50XG4gICAgICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgICA7IG11dGFibGUgbmV4dF9pZCA6IFR1cGxlX2lkLnRcbiAgICAgIDsgbXV0YWJsZSBmaXJzdF9mcmVlIDogSGVhZGVyLnRcbiAgICAgICgqIFtkdW1teV0gaXMgW05vbmVdIGluIGFuIHVuc2FmZSBwb29sLiAgSW4gYSBzYWZlIHBvb2wsIFtkdW1teV0gaXMgW1NvbWUgYV0sIHdpdGhcbiAgICAgICAgIFtVbmlmb3JtX2FycmF5Lmxlbmd0aCBhID0gc2xvdHNfcGVyX3R1cGxlXS4gIFtkdW1teV0gaXMgYWN0dWFsbHkgYSB0dXBsZSB2YWx1ZVxuICAgICAgICAgd2l0aCB0aGUgY29ycmVjdCB0eXBlIChjb3JyZXNwb25kaW5nIHRvIFsnc2xvdHNdKSwgYnV0IHdlIG1ha2UgdGhlIHR5cGUgb2ZcbiAgICAgICAgIFtkdW1teV0gYmUgW09iai50IFVuaWZvcm1fYXJyYXkudF0gYmVjYXVzZSB3ZSBjYW4ndCB3cml0ZSB0aGF0IHR5cGUgaGVyZS4gIEFsc28sXG4gICAgICAgICB0aGUgcHVycG9zZSBvZiBbZHVtbXldIGlzIHRvIGluaXRpYWxpemUgYSBwb29sIGVsZW1lbnQsIG1ha2luZyBbZHVtbXldIGFuIFtPYmoudFxuICAgICAgICAgVW5pZm9ybV9hcnJheS50XSBsZXRzIHVzIGluaXRpYWxpemUgYSBwb29sIGVsZW1lbnQgdXNpbmcgW1VuaWZvcm1fYXJyYXkuYmxpdF1cbiAgICAgICAgIGZyb20gW2R1bW15XSB0byB0aGUgcG9vbCwgd2hpY2ggaXMgYW4gW09iai50IFVuaWZvcm1fYXJyYXkudF0uICopXG4gICAgICA7IGR1bW15IDogKE9iai50IFVuaWZvcm1fYXJyYXkudFtAc2V4cC5vcGFxdWVdKSBvcHRpb25cbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdCA9IDEgKyB0LnNsb3RzX3Blcl90dXBsZVxuICAgIGxldCBhcnJheV9sZW5ndGggdCA9IHN0YXJ0X29mX3R1cGxlc19pbmRleCArICh0LmNhcGFjaXR5ICogYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdClcblxuICAgIGxldCBoZWFkZXJfaW5kZXhfdG9fdHVwbGVfbnVtIHQgfmhlYWRlcl9pbmRleCA9XG4gICAgICAoaGVhZGVyX2luZGV4IC0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4KSAvIGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHRcbiAgICA7O1xuXG4gICAgbGV0IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggdCB0dXBsZV9udW0gPVxuICAgICAgc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICsgKHR1cGxlX251bSAqIGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHQpXG4gICAgOztcblxuICAgIGxldCB0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCB0IHR1cGxlX251bSA9XG4gICAgICB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IHQgdHVwbGVfbnVtICsgMVxuICAgIDs7XG5cbiAgICBsZXQgaXNfZnVsbCB0ID0gdC5sZW5ndGggPSB0LmNhcGFjaXR5XG4gIGVuZFxuXG4gIG9wZW4gTWV0YWRhdGFcblxuICAoKiBXZSB1c2UgdHlwZSBbT2JqLnRdIGJlY2F1c2UgdGhlIGFycmF5IGhvbGRzIGEgbWl4IG9mIGludGVnZXJzIGFzIHdlbGwgYXMgT0NhbWwgdmFsdWVzXG4gICAgIG9mIGFyYml0cmFyeSB0eXBlLiAqKVxuICB0eXBlICdzbG90cyB0ID0gT2JqLnQgVW5pZm9ybV9hcnJheS50XG5cbiAgbGV0IG1ldGFkYXRhICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBtZXRhZGF0YV9pbmRleCB8PiAoT2JqLm9iaiA6IF8gLT4gc2xvdHMgTWV0YWRhdGEudClcbiAgOztcblxuICBsZXQgbGVuZ3RoIHQgPSAobWV0YWRhdGEgdCkubGVuZ3RoXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl90eSB0ID0gTWV0YWRhdGEuc2V4cF9vZl90IHNleHBfb2ZfdHkgKG1ldGFkYXRhIHQpXG5cbiAgKCogQmVjYXVzZSBbdW5zYWZlX2hlYWRlcl0gYW5kIFt1bnNhZmVfc2V0X2hlYWRlcl0gZG8gbm90IGRvIGEgYm91bmRzIGNoZWNrLCBvbmUgbXVzdCBiZVxuICAgICBzdXJlIHRoYXQgb25lIGhhcyBhIHZhbGlkIFtoZWFkZXJfaW5kZXhdIGJlZm9yZSBjYWxsaW5nIHRoZW0uICopXG4gIGxldCB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaGVhZGVyX2luZGV4IHw+IChPYmoub2JqIDogXyAtPiBIZWFkZXIudClcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IChoZWFkZXIgOiBIZWFkZXIudCkgPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGhlYWRlcl9pbmRleCAoaGVhZGVyIDo+IGludClcbiAgOztcblxuICBsZXQgaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyB0IH5oZWFkZXJfaW5kZXggPVxuICAgIGhlYWRlcl9pbmRleCA+PSBzdGFydF9vZl90dXBsZXNfaW5kZXggJiYgaGVhZGVyX2luZGV4IDwgVW5pZm9ybV9hcnJheS5sZW5ndGggdFxuICA7O1xuXG4gIGxldCB1bnNhZmVfcG9pbnRlcl9pc19saXZlIHQgcG9pbnRlciA9XG4gICAgbGV0IGhlYWRlcl9pbmRleCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBsZXQgaGVhZGVyID0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXggaW5cbiAgICBIZWFkZXIuaXNfdXNlZCBoZWFkZXJcbiAgICAmJiBUdXBsZV9pZC50b19pbnQgKEhlYWRlci50dXBsZV9pZCBoZWFkZXIpIGxhbmQgdHVwbGVfaWRfbWFza1xuICAgICAgID0gUG9pbnRlci5tYXNrZWRfdHVwbGVfaWQgcG9pbnRlclxuICA7O1xuXG4gIGxldCBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlciA9XG4gICAgaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyB0IH5oZWFkZXJfaW5kZXg6KFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIpXG4gICAgKCogQXQgdGhpcyBwb2ludCwgd2Uga25vdyB0aGUgcG9pbnRlciBpc24ndCBbbnVsbF0gYW5kIGlzIGluIGJvdW5kcywgc28gd2Uga25vdyBpdCBpc1xuICAgICAgIHRoZSBpbmRleCBvZiBhIGhlYWRlciwgc2luY2Ugd2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IGFsbCBwb2ludGVycyBvdGhlciB0aGFuXG4gICAgICAgW251bGxdIGFyZS4gKilcbiAgICAmJiB1bnNhZmVfcG9pbnRlcl9pc19saXZlIHQgcG9pbnRlclxuICA7O1xuXG4gIGxldCBpZF9vZl9wb2ludGVyIF90IHBvaW50ZXIgPSBQb2ludGVyLnRvX2lkIHBvaW50ZXJcblxuICBsZXQgaXNfdmFsaWRfaGVhZGVyX2luZGV4IHQgfmhlYWRlcl9pbmRleCA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIGhlYWRlcl9pbmRleF9pc19pbl9ib3VuZHMgdCB+aGVhZGVyX2luZGV4XG4gICAgJiYgMFxuICAgICAgID0gKGhlYWRlcl9pbmRleCAtIHN0YXJ0X29mX3R1cGxlc19pbmRleClcbiAgICAgICAgIG1vZCBNZXRhZGF0YS5hcnJheV9pbmRpY2VzX3Blcl90dXBsZSBtZXRhZGF0YVxuICA7O1xuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICB0cnlcbiAgICAgIGxldCBwb2ludGVyID0gUG9pbnRlci5vZl9pZF9leG4gaWQgaW5cbiAgICAgIGlmIG5vdCAoUG9pbnRlci5pc19udWxsIHBvaW50ZXIpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICAgICAgaWYgbm90IChpc192YWxpZF9oZWFkZXJfaW5kZXggdCB+aGVhZGVyX2luZGV4KVxuICAgICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiaW52YWxpZCBoZWFkZXIgaW5kZXhcIiBoZWFkZXJfaW5kZXggWyVzZXhwX29mOiBpbnRdO1xuICAgICAgICBpZiBub3QgKHVuc2FmZV9wb2ludGVyX2lzX2xpdmUgdCBwb2ludGVyKSB0aGVuIGZhaWx3aXRoIFwicG9pbnRlciBub3QgbGl2ZVwiKTtcbiAgICAgIHBvaW50ZXJcbiAgICB3aXRoXG4gICAgfCBleG4gLT5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5wb2ludGVyX29mX2lkX2V4biBnb3QgaW52YWxpZCBpZFwiXG4gICAgICAgIChpZCwgdCwgZXhuKVxuICAgICAgICBbJXNleHBfb2Y6IFBvaW50ZXIuSWQudCAqIF8gdCAqIGV4bl1cbiAgOztcblxuICBsZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0IDogdW5pdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCBtZXRhZGF0YSkgaW5cbiAgICAgIE1ldGFkYXRhLkZpZWxkcy5pdGVyXG4gICAgICAgIH5zbG90c19wZXJfdHVwbGU6KGNoZWNrIChmdW4gc2xvdHNfcGVyX3R1cGxlIC0+IGFzc2VydCAoc2xvdHNfcGVyX3R1cGxlID4gMCkpKVxuICAgICAgICB+Y2FwYWNpdHk6XG4gICAgICAgICAgKGNoZWNrIChmdW4gY2FwYWNpdHkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKGNhcGFjaXR5ID49IDApO1xuICAgICAgICAgICAgIGFzc2VydCAoVW5pZm9ybV9hcnJheS5sZW5ndGggdCA9IE1ldGFkYXRhLmFycmF5X2xlbmd0aCBtZXRhZGF0YSkpKVxuICAgICAgICB+bGVuZ3RoOlxuICAgICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICAgIGFzc2VydCAobGVuZ3RoID49IDApO1xuICAgICAgICAgICAgIGFzc2VydCAobGVuZ3RoIDw9IG1ldGFkYXRhLmNhcGFjaXR5KSkpXG4gICAgICAgIH5uZXh0X2lkOihjaGVjayBUdXBsZV9pZC5pbnZhcmlhbnQpXG4gICAgICAgIH5maXJzdF9mcmVlOlxuICAgICAgICAgIChjaGVjayAoZnVuIGZpcnN0X2ZyZWUgLT5cbiAgICAgICAgICAgICBsZXQgZnJlZSA9IEFycmF5LmNyZWF0ZSB+bGVuOm1ldGFkYXRhLmNhcGFjaXR5IGZhbHNlIGluXG4gICAgICAgICAgICAgbGV0IHIgPSByZWYgZmlyc3RfZnJlZSBpblxuICAgICAgICAgICAgIHdoaWxlIG5vdCAoSGVhZGVyLmlzX251bGwgIXIpIGRvXG4gICAgICAgICAgICAgICBsZXQgaGVhZGVyID0gIXIgaW5cbiAgICAgICAgICAgICAgIGFzc2VydCAoSGVhZGVyLmlzX2ZyZWUgaGVhZGVyKTtcbiAgICAgICAgICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSBIZWFkZXIubmV4dF9mcmVlX2hlYWRlcl9pbmRleCBoZWFkZXIgaW5cbiAgICAgICAgICAgICAgIGFzc2VydCAoaXNfdmFsaWRfaGVhZGVyX2luZGV4IHQgfmhlYWRlcl9pbmRleCk7XG4gICAgICAgICAgICAgICBsZXQgdHVwbGVfbnVtID0gaGVhZGVyX2luZGV4X3RvX3R1cGxlX251bSBtZXRhZGF0YSB+aGVhZGVyX2luZGV4IGluXG4gICAgICAgICAgICAgICBpZiBmcmVlLih0dXBsZV9udW0pXG4gICAgICAgICAgICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiY3ljbGUgaW4gZnJlZSBsaXN0XCIgdHVwbGVfbnVtIFslc2V4cF9vZjogaW50XTtcbiAgICAgICAgICAgICAgIGZyZWUuKHR1cGxlX251bSkgPC0gdHJ1ZTtcbiAgICAgICAgICAgICAgIHIgOj0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXhcbiAgICAgICAgICAgICBkb25lKSlcbiAgICAgICAgfmR1bW15OlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFNvbWUgZHVtbXkgLT4gYXNzZXJ0IChVbmlmb3JtX2FycmF5Lmxlbmd0aCBkdW1teSA9IG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSlcbiAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgIGZvciB0dXBsZV9udW0gPSAwIHRvIG1ldGFkYXRhLmNhcGFjaXR5IC0gMSBkb1xuICAgICAgICAgICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgICAgICAgICAgICAgbGV0IGhlYWRlciA9IHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IGluXG4gICAgICAgICAgICAgICAgIGlmIEhlYWRlci5pc19mcmVlIGhlYWRlclxuICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBsZXQgZmlyc3Rfc2xvdCA9IHR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgICAgICAgICAgICAgIGZvciBzbG90ID0gMCB0byBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgLSAxIGRvXG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKE9iai5pc19pbnQgKFVuaWZvcm1fYXJyYXkuZ2V0IHQgKGZpcnN0X3Nsb3QgKyBzbG90KSkpXG4gICAgICAgICAgICAgICAgICAgZG9uZSlcbiAgICAgICAgICAgICAgIGRvbmUpKVxuICAgIHdpdGhcbiAgICB8IGV4biAtPlxuICAgICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJQb29sLmludmFyaWFudCBmYWlsZWRcIiAoZXhuLCB0KSBbJXNleHBfb2Y6IGV4biAqIF8gdF1cbiAgOztcblxuICBsZXQgY2FwYWNpdHkgdCA9IChtZXRhZGF0YSB0KS5jYXBhY2l0eVxuICBsZXQgaXNfZnVsbCB0ID0gTWV0YWRhdGEuaXNfZnVsbCAobWV0YWRhdGEgdClcblxuICBsZXQgdW5zYWZlX2FkZF90b19mcmVlX2xpc3QgdCBtZXRhZGF0YSB+aGVhZGVyX2luZGV4ID1cbiAgICB1bnNhZmVfc2V0X2hlYWRlciB0IH5oZWFkZXJfaW5kZXggbWV0YWRhdGEuZmlyc3RfZnJlZTtcbiAgICBtZXRhZGF0YS5maXJzdF9mcmVlIDwtIEhlYWRlci5mcmVlIH5uZXh0X2ZyZWVfaGVhZGVyX2luZGV4OmhlYWRlcl9pbmRleFxuICA7O1xuXG4gIGxldCBzZXRfbWV0YWRhdGEgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgbWV0YWRhdGEgPVxuICAgIFVuaWZvcm1fYXJyYXkuc2V0IHQgbWV0YWRhdGFfaW5kZXggKE9iai5yZXByIChtZXRhZGF0YSA6IHNsb3RzIE1ldGFkYXRhLnQpKVxuICA7O1xuXG4gIGxldCBjcmVhdGVfYXJyYXkgKHR5cGUgc2xvdHMpIChtZXRhZGF0YSA6IHNsb3RzIE1ldGFkYXRhLnQpIDogc2xvdHMgdCA9XG4gICAgbGV0IHQgPSBVbmlmb3JtX2FycmF5LmNyZWF0ZV9vYmpfYXJyYXkgfmxlbjooTWV0YWRhdGEuYXJyYXlfbGVuZ3RoIG1ldGFkYXRhKSBpblxuICAgIHNldF9tZXRhZGF0YSB0IG1ldGFkYXRhO1xuICAgIHRcbiAgOztcblxuICAoKiBJbml0aWFsaXplIHR1cGxlcyBudW1iZXJlZCBmcm9tIFtsb10gKGluY2x1c2l2ZSkgdXAgdG8gW2hpXSAoZXhjbHVzaXZlKS4gIEZvciBlYWNoXG4gICAgIHR1cGxlLCB0aGlzIHB1dHMgZHVtbXkgdmFsdWVzIGluIHRoZSB0dXBsZSdzIHNsb3RzIGFuZCBhZGRzIHRoZSB0dXBsZSB0byB0aGUgZnJlZVxuICAgICBsaXN0LiAqKVxuICBsZXQgdW5zYWZlX2luaXRfcmFuZ2UgdCBtZXRhZGF0YSB+bG8gfmhpID1cbiAgICAobWF0Y2ggbWV0YWRhdGEuZHVtbXkgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGR1bW15IC0+XG4gICAgICAgZm9yIHR1cGxlX251bSA9IGxvIHRvIGhpIC0gMSBkb1xuICAgICAgICAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgICAgICAgIH5zcmM6ZHVtbXlcbiAgICAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICAgICB+ZHN0OnRcbiAgICAgICAgICAgfmRzdF9wb3M6KHR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSlcbiAgICAgICAgICAgfmxlbjptZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgICBkb25lKTtcbiAgICBmb3IgdHVwbGVfbnVtID0gaGkgLSAxIGRvd250byBsbyBkb1xuICAgICAgdW5zYWZlX2FkZF90b19mcmVlX2xpc3RcbiAgICAgICAgdFxuICAgICAgICBtZXRhZGF0YVxuICAgICAgICB+aGVhZGVyX2luZGV4Oih0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSlcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2R1bW15IHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXkgPVxuICAgIGlmIGNhcGFjaXR5IDwgMFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiUG9vbC5jcmVhdGUgZ290IGludmFsaWQgY2FwYWNpdHlcIiBjYXBhY2l0eSBbJXNleHBfb2Y6IGludF07XG4gICAgbGV0IHNsb3RzX3Blcl90dXBsZSA9IFNsb3RzLnNsb3RzX3Blcl90dXBsZSBzbG90cyBpblxuICAgIGxldCBtYXhfY2FwYWNpdHkgPSBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSBpblxuICAgIGlmIGNhcGFjaXR5ID4gbWF4X2NhcGFjaXR5XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJQb29sLmNyZWF0ZSBnb3QgdG9vIGxhcmdlIGNhcGFjaXR5XCJcbiAgICAgICAgKGNhcGFjaXR5LCBgbWF4IG1heF9jYXBhY2l0eSlcbiAgICAgICAgWyVzZXhwX29mOiBpbnQgKiBbIGBtYXggb2YgaW50IF1dO1xuICAgIGxldCBtZXRhZGF0YSA9XG4gICAgICB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgOyBjYXBhY2l0eVxuICAgICAgOyBsZW5ndGggPSAwXG4gICAgICA7IG5leHRfaWQgPSBUdXBsZV9pZC5pbml0XG4gICAgICA7IGZpcnN0X2ZyZWUgPSBIZWFkZXIubnVsbFxuICAgICAgOyBkdW1teVxuICAgICAgfVxuICAgIGluXG4gICAgbGV0IHQgPSBjcmVhdGVfYXJyYXkgbWV0YWRhdGEgaW5cbiAgICB1bnNhZmVfaW5pdF9yYW5nZSB0IG1ldGFkYXRhIH5sbzowIH5oaTpjYXBhY2l0eTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSAodHlwZSB0dXBsZSkgKHNsb3RzIDogKHR1cGxlLCBfKSBTbG90cy50KSB+Y2FwYWNpdHkgfmR1bW15ID1cbiAgICBsZXQgZHVtbXkgPVxuICAgICAgaWYgU2xvdHMuc2xvdHNfcGVyX3R1cGxlIHNsb3RzID0gMVxuICAgICAgdGhlbiBVbmlmb3JtX2FycmF5LnNpbmdsZXRvbiAoT2JqLnJlcHIgKGR1bW15IDogdHVwbGUpKVxuICAgICAgZWxzZSAoT2JqLm1hZ2ljIChkdW1teSA6IHR1cGxlKSA6IE9iai50IFVuaWZvcm1fYXJyYXkudClcbiAgICBpblxuICAgIGNyZWF0ZV93aXRoX2R1bW15IHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXk6KFNvbWUgZHVtbXkpXG4gIDs7XG5cbiAgKCogUHVyZ2UgYSBwb29sIGFuZCBtYWtlIGl0IHVudXNhYmxlLiAqKVxuICBsZXQgZGVzdHJveSB0ID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgKCogV2UgY2xlYXIgb3V0IGFsbCB0aGUgcG9vbCdzIGVudHJpZXMsIHdoaWNoIGNhdXNlcyBhbGwgcG9pbnRlcnMgdG8gYmUgaW52YWxpZC4gIFRoaXNcbiAgICAgICBhbHNvIHByZXZlbnRzIHRoZSBkZXN0cm95ZWQgcG9vbCBmcm9tIHVubmVjZXNzYXJpbHkga2VlcGluZyBoZWFwIGJsb2NrcyBhbGl2ZS5cbiAgICAgICBUaGlzIGlzIHNpbWlsYXIgdG8gW2ZyZWVdaW5nIGFsbCB0aGUgZW50cmllcyB3aXRoIHRoZSBkaWZmZXJlbmNlIHRoYXQgd2UgbWFrZSB0aGVcbiAgICAgICBmcmVlIGxpc3QgZW1wdHkgYXMgd2VsbC4gKilcbiAgICAobWF0Y2ggbWV0YWRhdGEuZHVtbXkgd2l0aFxuICAgICB8IE5vbmUgLT5cbiAgICAgICBmb3IgaSA9IHN0YXJ0X29mX3R1cGxlc19pbmRleCB0byBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0IC0gMSBkb1xuICAgICAgICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgaSAoT2JqLnJlcHIgMClcbiAgICAgICBkb25lXG4gICAgIHwgU29tZSBkdW1teSAtPlxuICAgICAgIGZvciB0dXBsZV9udW0gPSAwIHRvIG1ldGFkYXRhLmNhcGFjaXR5IC0gMSBkb1xuICAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICAgICB1bnNhZmVfc2V0X2hlYWRlciB0IH5oZWFkZXJfaW5kZXggSGVhZGVyLm51bGw7XG4gICAgICAgICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICAgICAgICAgfnNyYzpkdW1teVxuICAgICAgICAgICB+c3JjX3BvczowXG4gICAgICAgICAgIH5kc3Q6dFxuICAgICAgICAgICB+ZHN0X3BvczooaGVhZGVyX2luZGV4ICsgMSlcbiAgICAgICAgICAgfmxlbjptZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgICBkb25lKTtcbiAgICBsZXQgbWV0YWRhdGEgPVxuICAgICAgeyBNZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgPSBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgIDsgY2FwYWNpdHkgPSAwXG4gICAgICA7IGxlbmd0aCA9IDBcbiAgICAgIDsgbmV4dF9pZCA9IG1ldGFkYXRhLm5leHRfaWRcbiAgICAgIDsgZmlyc3RfZnJlZSA9IEhlYWRlci5udWxsXG4gICAgICA7IGR1bW15ID0gbWV0YWRhdGEuZHVtbXlcbiAgICAgIH1cbiAgICBpblxuICAgIHNldF9tZXRhZGF0YSB0IG1ldGFkYXRhXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSBncm93ID9jYXBhY2l0eSB0ID1cbiAgICBsZXQgeyBNZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgICAgOyBjYXBhY2l0eSA9IG9sZF9jYXBhY2l0eVxuICAgICAgICA7IGxlbmd0aFxuICAgICAgICA7IG5leHRfaWRcbiAgICAgICAgOyBmaXJzdF9mcmVlID0gX1xuICAgICAgICA7IGR1bW15XG4gICAgICAgIH1cbiAgICAgID1cbiAgICAgIG1ldGFkYXRhIHRcbiAgICBpblxuICAgIGxldCBjYXBhY2l0eSA9XG4gICAgICBtaW4gKG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlKSAoZ3Jvd19jYXBhY2l0eSB+Y2FwYWNpdHkgfm9sZF9jYXBhY2l0eSlcbiAgICBpblxuICAgIGlmIGNhcGFjaXR5ID0gb2xkX2NhcGFjaXR5XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJQb29sLmdyb3cgY2Fubm90IGdyb3cgcG9vbDsgY2FwYWNpdHkgYWxyZWFkeSBhdCBtYXhpbXVtXCJcbiAgICAgICAgY2FwYWNpdHlcbiAgICAgICAgWyVzZXhwX29mOiBpbnRdO1xuICAgIGxldCBtZXRhZGF0YSA9XG4gICAgICB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgOyBjYXBhY2l0eVxuICAgICAgOyBsZW5ndGhcbiAgICAgIDsgbmV4dF9pZFxuICAgICAgOyBmaXJzdF9mcmVlID0gSGVhZGVyLm51bGxcbiAgICAgIDsgZHVtbXlcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCB0JyA9IGNyZWF0ZV9hcnJheSBtZXRhZGF0YSBpblxuICAgIFVuaWZvcm1fYXJyYXkuYmxpdFxuICAgICAgfnNyYzp0XG4gICAgICB+c3JjX3BvczpzdGFydF9vZl90dXBsZXNfaW5kZXhcbiAgICAgIH5kc3Q6dCdcbiAgICAgIH5kc3RfcG9zOnN0YXJ0X29mX3R1cGxlc19pbmRleFxuICAgICAgfmxlbjoob2xkX2NhcGFjaXR5ICogTWV0YWRhdGEuYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgbWV0YWRhdGEpO1xuICAgIGRlc3Ryb3kgdDtcbiAgICB1bnNhZmVfaW5pdF9yYW5nZSB0JyBtZXRhZGF0YSB+bG86b2xkX2NhcGFjaXR5IH5oaTpjYXBhY2l0eTtcbiAgICBmb3IgdHVwbGVfbnVtID0gb2xkX2NhcGFjaXR5IC0gMSBkb3dudG8gMCBkb1xuICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICBsZXQgaGVhZGVyID0gdW5zYWZlX2hlYWRlciB0JyB+aGVhZGVyX2luZGV4IGluXG4gICAgICBpZiBub3QgKEhlYWRlci5pc191c2VkIGhlYWRlcilcbiAgICAgIHRoZW4gdW5zYWZlX2FkZF90b19mcmVlX2xpc3QgdCcgbWV0YWRhdGEgfmhlYWRlcl9pbmRleFxuICAgIGRvbmU7XG4gICAgdCdcbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX21hbGxvY19mdWxsIHQgPVxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiUG9vbC5tYWxsb2Mgb2YgZnVsbCBwb29sXCIgdCBbJXNleHBfb2Y6IF8gdF1cbiAgOztcblxuICBsZXQgbWFsbG9jICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIDogc2xvdHMgUG9pbnRlci50ID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgbGV0IGZpcnN0X2ZyZWUgPSBtZXRhZGF0YS5maXJzdF9mcmVlIGluXG4gICAgaWYgSGVhZGVyLmlzX251bGwgZmlyc3RfZnJlZSB0aGVuIHJhaXNlX21hbGxvY19mdWxsIHQ7XG4gICAgbGV0IGhlYWRlcl9pbmRleCA9IEhlYWRlci5uZXh0X2ZyZWVfaGVhZGVyX2luZGV4IGZpcnN0X2ZyZWUgaW5cbiAgICBtZXRhZGF0YS5maXJzdF9mcmVlIDwtIHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4O1xuICAgIG1ldGFkYXRhLmxlbmd0aCA8LSBtZXRhZGF0YS5sZW5ndGggKyAxO1xuICAgIGxldCB0dXBsZV9pZCA9IG1ldGFkYXRhLm5leHRfaWQgaW5cbiAgICB1bnNhZmVfc2V0X2hlYWRlciB0IH5oZWFkZXJfaW5kZXggKEhlYWRlci51c2VkIHR1cGxlX2lkKTtcbiAgICBtZXRhZGF0YS5uZXh0X2lkIDwtIFR1cGxlX2lkLm5leHQgdHVwbGVfaWQ7XG4gICAgUG9pbnRlci5jcmVhdGUgfmhlYWRlcl9pbmRleCB0dXBsZV9pZFxuICA7O1xuXG4gIGxldCB1bnNhZmVfZnJlZSAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSAocG9pbnRlciA6IHNsb3RzIFBvaW50ZXIudCkgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICBtZXRhZGF0YS5sZW5ndGggPC0gbWV0YWRhdGEubGVuZ3RoIC0gMTtcbiAgICB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCB0IG1ldGFkYXRhIH5oZWFkZXJfaW5kZXg6KFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIpO1xuICAgIG1hdGNoIG1ldGFkYXRhLmR1bW15IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBwb3MgPSBQb2ludGVyLmZpcnN0X3Nsb3RfaW5kZXggcG9pbnRlciBpblxuICAgICAgZm9yIGkgPSAwIHRvIG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSAtIDEgZG9cbiAgICAgICAgVW5pZm9ybV9hcnJheS51bnNhZmVfY2xlYXJfaWZfcG9pbnRlciB0IChwb3MgKyBpKVxuICAgICAgZG9uZVxuICAgIHwgU29tZSBkdW1teSAtPlxuICAgICAgVW5pZm9ybV9hcnJheS51bnNhZmVfYmxpdFxuICAgICAgICB+c3JjOmR1bW15XG4gICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgfmxlbjptZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgICAgfmRzdDp0XG4gICAgICAgIH5kc3RfcG9zOihQb2ludGVyLmZpcnN0X3Nsb3RfaW5kZXggcG9pbnRlcilcbiAgOztcblxuICBsZXQgZnJlZSAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSAocG9pbnRlciA6IHNsb3RzIFBvaW50ZXIudCkgPVxuICAgICgqIENoZWNrIFtwb2ludGVyX2lzX3ZhbGlkXSB0bzpcbiAgICAgICAtIGF2b2lkIGZyZWVpbmcgYSBudWxsIHBvaW50ZXJcbiAgICAgICAtIGF2b2lkIGZyZWVpbmcgYSBmcmVlIHBvaW50ZXIgKHRoaXMgd291bGQgbGVhZCB0byBhIHBvb2wgaW5jb25zaXN0ZW5jeSlcbiAgICAgICAtIGJlIGFibGUgdG8gdXNlIHVuc2FmZSBmdW5jdGlvbnMgYWZ0ZXIuICopXG4gICAgaWYgbm90IChwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlcilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wuZnJlZSBvZiBpbnZhbGlkIHBvaW50ZXJcIlxuICAgICAgICAocG9pbnRlciwgdClcbiAgICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudCAqIF8gdF07XG4gICAgdW5zYWZlX2ZyZWUgdCBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzEgdCBhMCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcyIHQgYTAgYTEgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MyB0IGEwIGExIGEyID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzQgdCBhMCBhMSBhMiBhMyA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc1IHQgYTAgYTEgYTIgYTMgYTQgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEyKSAoT2JqLnJlcHIgYTExKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMikgKE9iai5yZXByIGExMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEzKSAoT2JqLnJlcHIgYTEyKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTIpIChPYmoucmVwciBhMTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMykgKE9iai5yZXByIGExMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDE0KSAoT2JqLnJlcHIgYTEzKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IGdldCB0IHAgc2xvdCA9IE9iai5vYmogKFVuaWZvcm1fYXJyYXkuZ2V0IHQgKFBvaW50ZXIuc2xvdF9pbmRleCBwIHNsb3QpKVxuXG4gIGxldCB1bnNhZmVfZ2V0IHQgcCBzbG90ID1cbiAgICBPYmoub2JqIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkpXG4gIDs7XG5cbiAgbGV0IHNldCB0IHAgc2xvdCB4ID0gVW5pZm9ybV9hcnJheS5zZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkgKE9iai5yZXByIHgpXG5cbiAgbGV0IHVuc2FmZV9zZXQgdCBwIHNsb3QgeCA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKFBvaW50ZXIuc2xvdF9pbmRleCBwIHNsb3QpIChPYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCBnZXRfdHVwbGUgKHR5cGUgdHVwbGUpICh0IDogKHR1cGxlLCBfKSBTbG90cy50IHQpIHBvaW50ZXIgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICBsZXQgbGVuID0gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlIGluXG4gICAgaWYgbGVuID0gMVxuICAgIHRoZW4gZ2V0IHQgcG9pbnRlciBTbG90LnQwXG4gICAgZWxzZVxuICAgICAgKE9iai5tYWdpY1xuICAgICAgICAgKFVuaWZvcm1fYXJyYXkuc3ViIHQgfnBvczooUG9pbnRlci5maXJzdF9zbG90X2luZGV4IHBvaW50ZXIpIH5sZW5cbiAgICAgICAgICA6IE9iai50IFVuaWZvcm1fYXJyYXkudClcbiAgICAgICA6IHR1cGxlKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG9vbFxuXG5tb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gIGluY2x1ZGUgUG9vbFxuXG4gIGxldCBjcmVhdGUgc2xvdHMgfmNhcGFjaXR5ID0gY3JlYXRlX3dpdGhfZHVtbXkgc2xvdHMgfmNhcGFjaXR5IH5kdW1teTpOb25lXG5lbmRcblxubW9kdWxlIERlYnVnIChQb29sIDogUykgPSBzdHJ1Y3RcbiAgb3BlbiBQb29sXG5cbiAgbGV0IGNoZWNrX2ludmFyaWFudCA9IHJlZiB0cnVlXG4gIGxldCBzaG93X21lc3NhZ2VzID0gcmVmIHRydWVcblxuICBsZXQgZGVidWcgbmFtZSB0cyBhcmcgc2V4cF9vZl9hcmcgc2V4cF9vZl9yZXN1bHQgZiA9XG4gICAgbGV0IHByZWZpeCA9IFwiUG9vbC5cIiBpblxuICAgIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBMaXN0Lml0ZXIgdHMgfmY6KGludmFyaWFudCBpZ25vcmUpO1xuICAgIGlmICFzaG93X21lc3NhZ2VzIHRoZW4gRGVidWcuZXByaW50cyAoY29uY2F0IFsgcHJlZml4OyBuYW1lIF0pIGFyZyBzZXhwX29mX2FyZztcbiAgICBsZXQgcmVzdWx0X29yX2V4biA9IFJlc3VsdC50cnlfd2l0aCBmIGluXG4gICAgaWYgIXNob3dfbWVzc2FnZXNcbiAgICB0aGVuXG4gICAgICBEZWJ1Zy5lcHJpbnRzXG4gICAgICAgIChjb25jYXQgWyBwcmVmaXg7IG5hbWU7IFwiIHJlc3VsdFwiIF0pXG4gICAgICAgIHJlc3VsdF9vcl9leG5cbiAgICAgICAgWyVzZXhwX29mOiAocmVzdWx0LCBleG4pIFJlc3VsdC50XTtcbiAgICBSZXN1bHQub2tfZXhuIHJlc3VsdF9vcl9leG5cbiAgOztcblxuICBtb2R1bGUgU2xvdHMgPSBTbG90c1xuICBtb2R1bGUgU2xvdCA9IFNsb3RcblxuICBtb2R1bGUgUG9pbnRlciA9IHN0cnVjdFxuICAgIG9wZW4gUG9pbnRlclxuXG4gICAgdHlwZSBub25yZWMgJ3Nsb3RzIHQgPSAnc2xvdHMgdCBbQEBkZXJpdmluZyBzZXhwX29mLCB0eXBlcmVwXVxuXG4gICAgbGV0IHBoeXNfY29tcGFyZSB0MSB0MiA9XG4gICAgICBkZWJ1Z1xuICAgICAgICBcIlBvaW50ZXIucGh5c19jb21wYXJlXCJcbiAgICAgICAgW11cbiAgICAgICAgKHQxLCB0MilcbiAgICAgICAgWyVzZXhwX29mOiBfIHQgKiBfIHRdXG4gICAgICAgIFslc2V4cF9vZjogaW50XVxuICAgICAgICAoZnVuICgpIC0+IHBoeXNfY29tcGFyZSB0MSB0MilcbiAgICA7O1xuXG4gICAgbGV0IHBoeXNfZXF1YWwgdDEgdDIgPVxuICAgICAgZGVidWdcbiAgICAgICAgXCJQb2ludGVyLnBoeXNfZXF1YWxcIlxuICAgICAgICBbXVxuICAgICAgICAodDEsIHQyKVxuICAgICAgICBbJXNleHBfb2Y6IF8gdCAqIF8gdF1cbiAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAoZnVuICgpIC0+IHBoeXNfZXF1YWwgdDEgdDIpXG4gICAgOztcblxuICAgIGxldCBpc19udWxsIHQgPVxuICAgICAgZGVidWcgXCJQb2ludGVyLmlzX251bGxcIiBbXSB0IFslc2V4cF9vZjogXyB0XSBbJXNleHBfb2Y6IGJvb2xdIChmdW4gKCkgLT4gaXNfbnVsbCB0KVxuICAgIDs7XG5cbiAgICBsZXQgbnVsbCA9IG51bGxcblxuICAgIG1vZHVsZSBJZCA9IHN0cnVjdFxuICAgICAgb3BlbiBJZFxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICAgIGxldCBvZl9pbnQ2MyBpID1cbiAgICAgICAgZGVidWcgXCJQb2ludGVyLklkLm9mX2ludDYzXCIgW10gaSBbJXNleHBfb2Y6IEludDYzLnRdIFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgIG9mX2ludDYzIGkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9faW50NjMgdCA9XG4gICAgICAgIGRlYnVnIFwiUG9pbnRlci5JZC50b19pbnQ2M1wiIFtdIHQgWyVzZXhwX29mOiB0XSBbJXNleHBfb2Y6IEludDYzLnRdIChmdW4gKCkgLT5cbiAgICAgICAgICB0b19pbnQ2MyB0KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgdHlwZSBub25yZWMgJ3Nsb3RzIHQgPSAnc2xvdHMgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gIGxldCBpZF9vZl9wb2ludGVyIHQgcG9pbnRlciA9XG4gICAgZGVidWdcbiAgICAgIFwiaWRfb2ZfcG9pbnRlclwiXG4gICAgICBbIHQgXVxuICAgICAgcG9pbnRlclxuICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF1cbiAgICAgIFslc2V4cF9vZjogUG9pbnRlci5JZC50XVxuICAgICAgKGZ1biAoKSAtPiBpZF9vZl9wb2ludGVyIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgcG9pbnRlcl9vZl9pZF9leG4gdCBpZCA9XG4gICAgZGVidWdcbiAgICAgIFwicG9pbnRlcl9vZl9pZF9leG5cIlxuICAgICAgWyB0IF1cbiAgICAgIGlkXG4gICAgICBbJXNleHBfb2Y6IFBvaW50ZXIuSWQudF1cbiAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnRdXG4gICAgICAoZnVuICgpIC0+IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQpXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyID1cbiAgICBkZWJ1Z1xuICAgICAgXCJwb2ludGVyX2lzX3ZhbGlkXCJcbiAgICAgIFsgdCBdXG4gICAgICBwb2ludGVyXG4gICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50XVxuICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgKGZ1biAoKSAtPiBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgY3JlYXRlIHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXkgPVxuICAgIGRlYnVnIFwiY3JlYXRlXCIgW10gY2FwYWNpdHkgWyVzZXhwX29mOiBpbnRdIFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICBjcmVhdGUgc2xvdHMgfmNhcGFjaXR5IH5kdW1teSlcbiAgOztcblxuICBsZXQgbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUgPVxuICAgIGRlYnVnIFwibWF4X2NhcGFjaXR5XCIgW10gc2xvdHNfcGVyX3R1cGxlIFslc2V4cF9vZjogaW50XSBbJXNleHBfb2Y6IGludF0gKGZ1biAoKSAtPlxuICAgICAgbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUpXG4gIDs7XG5cbiAgbGV0IGNhcGFjaXR5IHQgPVxuICAgIGRlYnVnIFwiY2FwYWNpdHlcIiBbIHQgXSB0IFslc2V4cF9vZjogXyB0XSBbJXNleHBfb2Y6IGludF0gKGZ1biAoKSAtPiBjYXBhY2l0eSB0KVxuICA7O1xuXG4gIGxldCBncm93ID9jYXBhY2l0eSB0ID1cbiAgICBkZWJ1Z1xuICAgICAgXCJncm93XCJcbiAgICAgIFsgdCBdXG4gICAgICAoYGNhcGFjaXR5IGNhcGFjaXR5KVxuICAgICAgWyVzZXhwX29mOiBbIGBjYXBhY2l0eSBvZiBpbnQgb3B0aW9uIF1dXG4gICAgICBbJXNleHBfb2Y6IF8gdF1cbiAgICAgIChmdW4gKCkgLT4gZ3JvdyA/Y2FwYWNpdHkgdClcbiAgOztcblxuICBsZXQgaXNfZnVsbCB0ID1cbiAgICBkZWJ1ZyBcImlzX2Z1bGxcIiBbIHQgXSB0IFslc2V4cF9vZjogXyB0XSBbJXNleHBfb2Y6IGJvb2xdIChmdW4gKCkgLT4gaXNfZnVsbCB0KVxuICA7O1xuXG4gIGxldCB1bnNhZmVfZnJlZSB0IHAgPVxuICAgIGRlYnVnIFwidW5zYWZlX2ZyZWVcIiBbIHQgXSBwIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogdW5pdF0gKGZ1biAoKSAtPlxuICAgICAgdW5zYWZlX2ZyZWUgdCBwKVxuICA7O1xuXG4gIGxldCBmcmVlIHQgcCA9XG4gICAgZGVidWcgXCJmcmVlXCIgWyB0IF0gcCBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IHVuaXRdIChmdW4gKCkgLT4gZnJlZSB0IHApXG4gIDs7XG5cbiAgbGV0IGRlYnVnX25ldyB0IGYgPSBkZWJ1ZyBcIm5ld1wiIFsgdCBdICgpIFslc2V4cF9vZjogdW5pdF0gWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gZlxuICBsZXQgbmV3MSB0IGEwID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxIHQgYTApXG4gIGxldCBuZXcyIHQgYTAgYTEgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzIgdCBhMCBhMSlcbiAgbGV0IG5ldzMgdCBhMCBhMSBhMiA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MyB0IGEwIGExIGEyKVxuICBsZXQgbmV3NCB0IGEwIGExIGEyIGEzID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc0IHQgYTAgYTEgYTIgYTMpXG4gIGxldCBuZXc1IHQgYTAgYTEgYTIgYTMgYTQgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzUgdCBhMCBhMSBhMiBhMyBhNClcbiAgbGV0IG5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1KVxuICBsZXQgbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2ID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYpXG5cbiAgbGV0IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcpXG4gIDs7XG5cbiAgbGV0IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTgpXG4gIDs7XG5cbiAgbGV0IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSlcbiAgOztcblxuICBsZXQgbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTApXG4gIDs7XG5cbiAgbGV0IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEpXG4gIDs7XG5cbiAgbGV0IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMilcbiAgOztcblxuICBsZXQgbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMpXG4gIDs7XG5cbiAgbGV0IGdldF90dXBsZSB0IHBvaW50ZXIgPVxuICAgIGRlYnVnIFwiZ2V0X3R1cGxlXCIgWyB0IF0gcG9pbnRlciBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IF9dIChmdW4gKCkgLT5cbiAgICAgIGdldF90dXBsZSB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGRlYnVnX2dldCBuYW1lIGYgdCBwb2ludGVyID1cbiAgICBkZWJ1ZyBuYW1lIFsgdCBdIHBvaW50ZXIgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiBfXSAoZnVuICgpIC0+IGYgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBnZXQgdCBwb2ludGVyIHNsb3QgPSBkZWJ1Z19nZXQgXCJnZXRcIiBnZXQgdCBwb2ludGVyIHNsb3RcbiAgbGV0IHVuc2FmZV9nZXQgdCBwb2ludGVyIHNsb3QgPSBkZWJ1Z19nZXQgXCJ1bnNhZmVfZ2V0XCIgdW5zYWZlX2dldCB0IHBvaW50ZXIgc2xvdFxuXG4gIGxldCBkZWJ1Z19zZXQgbmFtZSBmIHQgcG9pbnRlciBzbG90IGEgPVxuICAgIGRlYnVnIG5hbWUgWyB0IF0gcG9pbnRlciBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IHVuaXRdIChmdW4gKCkgLT5cbiAgICAgIGYgdCBwb2ludGVyIHNsb3QgYSlcbiAgOztcblxuICBsZXQgc2V0IHQgcG9pbnRlciBzbG90IGEgPSBkZWJ1Z19zZXQgXCJzZXRcIiBzZXQgdCBwb2ludGVyIHNsb3QgYVxuICBsZXQgdW5zYWZlX3NldCB0IHBvaW50ZXIgc2xvdCBhID0gZGVidWdfc2V0IFwidW5zYWZlX3NldFwiIHVuc2FmZV9zZXQgdCBwb2ludGVyIHNsb3QgYVxuZW5kXG5cbm1vZHVsZSBFcnJvcl9jaGVjayAoUG9vbCA6IFMpID0gc3RydWN0XG4gIG9wZW4gUG9vbFxuICBtb2R1bGUgU2xvdHMgPSBTbG90c1xuICBtb2R1bGUgU2xvdCA9IFNsb3RcblxuICBtb2R1bGUgUG9pbnRlciA9IHN0cnVjdFxuICAgIHR5cGUgJ3Nsb3RzIHQgPVxuICAgICAgeyBtdXRhYmxlIGlzX3ZhbGlkIDogYm9vbFxuICAgICAgOyBwb2ludGVyIDogJ3Nsb3RzIFBvaW50ZXIudFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2YsIHR5cGVyZXBdXG5cbiAgICBsZXQgY3JlYXRlIHBvaW50ZXIgPSB7IGlzX3ZhbGlkID0gdHJ1ZTsgcG9pbnRlciB9XG4gICAgbGV0IG51bGwgKCkgPSB7IGlzX3ZhbGlkID0gZmFsc2U7IHBvaW50ZXIgPSBQb2ludGVyLm51bGwgKCkgfVxuICAgIGxldCBwaHlzX2NvbXBhcmUgdDEgdDIgPSBQb2ludGVyLnBoeXNfY29tcGFyZSB0MS5wb2ludGVyIHQyLnBvaW50ZXJcbiAgICBsZXQgcGh5c19lcXVhbCB0MSB0MiA9IFBvaW50ZXIucGh5c19lcXVhbCB0MS5wb2ludGVyIHQyLnBvaW50ZXJcbiAgICBsZXQgaXNfbnVsbCB0ID0gUG9pbnRlci5pc19udWxsIHQucG9pbnRlclxuXG4gICAgbGV0IGZvbGxvdyB0ID1cbiAgICAgIGlmIG5vdCB0LmlzX3ZhbGlkXG4gICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byB1c2UgaW52YWxpZCBwb2ludGVyXCIgdCBbJXNleHBfb2Y6IF8gdF07XG4gICAgICB0LnBvaW50ZXJcbiAgICA7O1xuXG4gICAgbGV0IGludmFsaWRhdGUgdCA9IHQuaXNfdmFsaWQgPC0gZmFsc2VcblxuICAgIG1vZHVsZSBJZCA9IFBvaW50ZXIuSWRcbiAgZW5kXG5cbiAgdHlwZSAnc2xvdHMgdCA9ICdzbG90cyBQb29sLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICBsZXQgcG9pbnRlcl9pc192YWxpZCB0IHsgUG9pbnRlci5pc192YWxpZDsgcG9pbnRlciB9ID1cbiAgICBpc192YWxpZCAmJiBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlclxuICA7O1xuXG4gICgqIFdlIGRvbid0IGRvIFtQb2ludGVyLmZvbGxvdyBwb2ludGVyXSwgYmVjYXVzZSB0aGF0IHdvdWxkIGRpc2FsbG93IFtpZF9vZl9wb2ludGVyIHRcbiAgICAgKFBvaW50ZXIubnVsbCAoKSldLiAqKVxuICBsZXQgaWRfb2ZfcG9pbnRlciB0IHBvaW50ZXIgPSBpZF9vZl9wb2ludGVyIHQgcG9pbnRlci5Qb2ludGVyLnBvaW50ZXJcblxuICBsZXQgcG9pbnRlcl9vZl9pZF9leG4gdCBpZCA9XG4gICAgbGV0IHBvaW50ZXIgPSBwb2ludGVyX29mX2lkX2V4biB0IGlkIGluXG4gICAgbGV0IGlzX3ZhbGlkID0gUG9vbC5wb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlciBpblxuICAgIHsgUG9pbnRlci5pc192YWxpZDsgcG9pbnRlciB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSA9IGNyZWF0ZVxuICBsZXQgY2FwYWNpdHkgPSBjYXBhY2l0eVxuICBsZXQgbWF4X2NhcGFjaXR5ID0gbWF4X2NhcGFjaXR5XG4gIGxldCBncm93ID0gZ3Jvd1xuICBsZXQgaXNfZnVsbCA9IGlzX2Z1bGxcbiAgbGV0IGdldF90dXBsZSB0IHAgPSBnZXRfdHVwbGUgdCAoUG9pbnRlci5mb2xsb3cgcClcbiAgbGV0IGdldCB0IHAgPSBnZXQgdCAoUG9pbnRlci5mb2xsb3cgcClcbiAgbGV0IHVuc2FmZV9nZXQgdCBwID0gdW5zYWZlX2dldCB0IChQb2ludGVyLmZvbGxvdyBwKVxuICBsZXQgc2V0IHQgcCBzbG90IHYgPSBzZXQgdCAoUG9pbnRlci5mb2xsb3cgcCkgc2xvdCB2XG4gIGxldCB1bnNhZmVfc2V0IHQgcCBzbG90IHYgPSB1bnNhZmVfc2V0IHQgKFBvaW50ZXIuZm9sbG93IHApIHNsb3QgdlxuXG4gIGxldCB1bnNhZmVfZnJlZSB0IHAgPVxuICAgIHVuc2FmZV9mcmVlIHQgKFBvaW50ZXIuZm9sbG93IHApO1xuICAgIFBvaW50ZXIuaW52YWxpZGF0ZSBwXG4gIDs7XG5cbiAgbGV0IGZyZWUgdCBwID1cbiAgICBmcmVlIHQgKFBvaW50ZXIuZm9sbG93IHApO1xuICAgIFBvaW50ZXIuaW52YWxpZGF0ZSBwXG4gIDs7XG5cbiAgbGV0IG5ldzEgdCBhMCA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEgdCBhMClcbiAgbGV0IG5ldzIgdCBhMCBhMSA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzIgdCBhMCBhMSlcbiAgbGV0IG5ldzMgdCBhMCBhMSBhMiA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzMgdCBhMCBhMSBhMilcbiAgbGV0IG5ldzQgdCBhMCBhMSBhMiBhMyA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzQgdCBhMCBhMSBhMiBhMylcbiAgbGV0IG5ldzUgdCBhMCBhMSBhMiBhMyBhNCA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzUgdCBhMCBhMSBhMiBhMyBhNClcbiAgbGV0IG5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSlcbiAgbGV0IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiA9IFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNilcblxuICBsZXQgbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3ID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcpXG4gIDs7XG5cbiAgbGV0IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4KVxuICA7O1xuXG4gIGxldCBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5ID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5KVxuICA7O1xuXG4gIGxldCBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTApXG4gIDs7XG5cbiAgbGV0IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExKVxuICA7O1xuXG4gIGxldCBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyKVxuICA7O1xuXG4gIGxldCBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMyA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMpXG4gIDs7XG5lbmRcbiIsIigqIEJlIHN1cmUgYW5kIGZpcnN0IHJlYWQgdGhlIGltcGxlbWVudGF0aW9uIG92ZXJ2aWV3IGluIHRpbWluZ193aGVlbF9pbnRmLm1sLlxuXG4gICBBIHRpbWluZyB3aGVlbCBpcyByZXByZXNlbnRlZCBhcyBhbiBhcnJheSBvZiBcImxldmVsc1wiLCB3aGVyZSBlYWNoIGxldmVsIGlzIGFuIGFycmF5IG9mXG4gICBcInNsb3RzXCIuICBFYWNoIHNsb3QgcmVwcmVzZW50cyBhIHJhbmdlIG9mIGtleXMsIGFuZCBob2xkcyBlbGVtZW50cyBhc3NvY2lhdGVkIHdpdGhcbiAgIHRob3NlIGtleXMuICBFYWNoIGxldmVsIGlzIGRldGVybWluZWQgYnkgdHdvIHBhcmFtZXRlcnM6IFtiaXRzXSwgdGhlIG51bWJlciBvZiBrZXkgYml0c1xuICAgdGhhdCB0aGF0IGxldmVsIGlzIHJlc3BvbnNpYmxlIGZvciBkaXN0aW5ndWlzaGluZywgYW5kIFtiaXRzX3Blcl9zbG90XSwgdGhlIHNpemUgb2YgdGhlXG4gICByYW5nZSBvZiBrZXlzIHRoYXQgY29ycmVzcG9uZCB0byBhIHNpbmdsZSBzbG90IGluIHRoZSBhcnJheS4gIENvbmNlcHR1YWxseSwgZWFjaCBsZXZlbFxuICAgYnJlYWtzIHVwIGFsbCBwb3NzaWJsZSBrZXlzIGludG8gcmFuZ2VzIG9mIHNpemUgWzJeYml0c19wZXJfc2xvdF0uICBUaGUgbGVuZ3RoIG9mIGFcbiAgIGxldmVsIGFycmF5IGlzIFsyXmJpdHNdLCBhbmQgdGhlIGFycmF5IGlzIHVzZWQgbGlrZSBhIGNpcmN1bGFyIGJ1ZmZlciB0byB0cmF2ZXJzZSB0aGVcbiAgIHJhbmdlcyBhcyB0aGUgdGltaW5nIHdoZWVsJ3MgW21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzLiAgQSBrZXkgW2tdLCBpZiBzdG9yZWQgaW4gdGhlXG4gICBsZXZlbCwgaXMgc3RvcmVkIGF0IGluZGV4IFsoayAvIDJeYml0c19wZXJfc2xvdCkgbW9kIDJeYml0c10uXG5cbiAgIFRoZSBzZXR0aW5ncyBvZiB0aGUgW2JpdHNdIHZhbHVlcyBhcmUgY29uZmlndXJhYmxlIGJ5IHVzZXIgY29kZSB1c2luZyBbTGV2ZWxfYml0c10sXG4gICBhbHRob3VnaCB0aGVyZSBpcyBhIHJlYXNvbmFibGUgZGVmYXVsdCBzZXR0aW5nLiAgR2l2ZW4gdGhlIFtiaXRzXSB2YWx1ZXMsIHRoZVxuICAgW2JpdHNfcGVyX3Nsb3RdIGFyZSBjaG9zZW4gc28gdGhhdCBbYml0c19wZXJfc2xvdF0gYXQgbGV2ZWwgW2ldIGlzIHRoZSBzdW0gb2YgdGhlXG4gICBbYml0c10gYXQgYWxsIGxvd2VyIGxldmVscy4gIFRodXMsIGEgc2xvdCdzIHJhbmdlIGF0IGxldmVsIFtpXSBpcyBhcyBsYXJnZSBhcyB0aGVcbiAgIGVudGlyZSByYW5nZSBvZiB0aGUgYXJyYXkgYXQgbGV2ZWwgW2kgLSAxXS5cblxuICAgRWFjaCBsZXZlbCBoYXMgYSBbbWluX2FsbG93ZWRfa2V5XSBhbmQgYSBbbWF4X2FsbG93ZWRfa2V5XSB0aGF0IGRldGVybWluZSB0aGUgcmFuZ2Ugb2ZcbiAgIGtleXMgdGhhdCBpdCBjdXJyZW50bHkgcmVwcmVzZW50cy4gIFRoZSBjcnVjaWFsIGludmFyaWFudCBvZiB0aGUgdGltaW5nIHdoZWVsIGRhdGFcbiAgIHN0cnVjdHVyZSBpcyB0aGF0IHRoZSBbbWluX2FsbG93ZWRfa2V5XSBhdCBsZXZlbCBbaV0gaXMgbm8gbW9yZSB0aGFuIHRoZVxuICAgW21heF9hbGxvd2VkX2tleSArIDFdIG9mIGxldmVsIFtpIC0gMV0uICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgbGV2ZWxzIGNhbiByZXByZXNlbnQgYWxsXG4gICBrZXlzIGZyb20gdGhlIFttaW5fYWxsb3dlZF9rZXldIG9mIHRoZSBsb3dlc3QgbGV2ZWwgdG8gdGhlIFttYXhfYWxsb3dlZF9rZXldIG9mIHRoZVxuICAgaGlnaGVzdCBsZXZlbC4gIFRoZSBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgcmVzdG9yaW5nXG4gICB0aGlzIGludmFyaWFudC5cblxuICAgQXQgbGV2ZWwgMCwgW2JpdHNfcGVyX3Nsb3QgPSAwXSwgYW5kIHNvIHRoZSBzaXplIG9mIGVhY2ggc2xvdCBpcyBbMV0uICBUaGF0IGlzLCBsZXZlbCAwXG4gICBwcmVjaXNlbHkgZGlzdGluZ3Vpc2hlcyBhbGwgdGhlIGtleXMgYmV0d2VlbiBpdHMgW21pbl9hbGxvd2VkX2tleV0gKHdoaWNoIGlzIHRoZSBzYW1lXG4gICBhcyB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgdGhlIGVudGlyZSB0aW1pbmcgd2hlZWwpIGFuZCBbbWF4X2FsbG93ZWRfa2V5XS4gIEFzIHRoZVxuICAgbGV2ZWxzIGluY3JlYXNlLCB0aGUgW21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzLCB0aGUgW2JpdHNfcGVyX3Nsb3RdIGluY3JlYXNlcywgYW5kXG4gICB0aGUgcmFuZ2Ugb2Yga2V5cyBzdG9yZWQgaW4gdGhlIGxldmVsIGluY3JlYXNlcyAoZHJhbWF0aWNhbGx5KS5cblxuICAgVGhlIGlkZWEgb2YgdGhlIGltcGxlbWVudGF0aW9uIGlzIHNpbWlsYXIgdG8gdGhlIGhpZXJhcmNoaWNhbCBhcHByb2FjaCBkZXNjcmliZWQgaW46XG5cbiAgIHt2XG4gICAgIEhhc2hlZCBhbmQgSGllcmFyY2hpY2FsIFRpbWluZyBXaGVlbHM6XG4gICAgIEVmZmljaWVudCBEYXRhIFN0cnVjdHVyZXMgZm9yIEltcGxlbWVudGluZyBhIFRpbWVyIEZhY2lsaXR5XG5cbiAgICAgVmFyZ2hlc2UgJiBMYXVjaywgMTk5NlxuICAgdn1cblxuICAgSG93ZXZlciwgdGhlIGNvZGUgaXMgY29tcGxldGVseSBuZXcuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgVGltaW5nX3doZWVsX2ludGZcbm1vZHVsZSBQb29sID0gVHVwbGVfcG9vbFxubW9kdWxlIFRpbWVfbnMgPSBDb3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxuXG5sZXQgc2V4cF9vZl90X3N0eWxlIDogWyBgUHJldHR5IHwgYEludGVybmFsIF0gcmVmID0gcmVmIGBQcmV0dHlcblxuKCogW3ttYXgsbWlufV90aW1lXSBhcmUgYm91bmRzIG9uIHRoZSB0aW1lcyBzdXBwb3J0ZWQgYnkgYSB0aW1pbmcgd2hlZWwuICopXG5cbmxldCBtYXhfdGltZSA9IFRpbWVfbnMubWF4X3ZhbHVlX3JlcHJlc2VudGFibGVcbmxldCBtaW5fdGltZSA9IFRpbWVfbnMuZXBvY2hcblxubW9kdWxlIE51bV9rZXlfYml0cyA6IHNpZ1xuICB0eXBlIHQgPSBwcml2YXRlIGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCB6ZXJvIDogdFxuXG4gICgqIHZhbCBtaW5fdmFsdWUgOiB0ICopXG5cbiAgdmFsIG1heF92YWx1ZSA6IHRcbiAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgcG93MiA6IHQgLT4gSW50NjMudFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgSW50XG5cbiAgbGV0IG1pbl92YWx1ZSA9IDBcblxuICAoKiogV2Ugc3VwcG9ydCBhbGwgbm9uLW5lZ2F0aXZlIFtUaW1lX25zLnRdIHZhbHVlcy4gKilcbiAgbGV0IG1heF92YWx1ZSA9IEludDYzLm51bV9iaXRzIC0gMVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgYXNzZXJ0ICh0ID49IG1pbl92YWx1ZSk7XG4gICAgYXNzZXJ0ICh0IDw9IG1heF92YWx1ZSlcbiAgOztcblxuICBsZXQgb2ZfaW50IGkgPVxuICAgIGludmFyaWFudCBpO1xuICAgIGlcbiAgOztcblxuICBsZXQgKCArICkgdDEgdDIgPVxuICAgIGxldCB0ID0gdDEgKyB0MiBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgKCAtICkgdDEgdDIgPVxuICAgIGxldCB0ID0gdDEgLSB0MiBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgcG93MiB0ID0gSW50NjMuc2hpZnRfbGVmdCBJbnQ2My5vbmUgdFxuZW5kXG5cbm1vZHVsZSBMZXZlbF9iaXRzID0gc3RydWN0XG4gIHR5cGUgdCA9IE51bV9rZXlfYml0cy50IGxpc3QgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgbWF4X251bV9iaXRzID0gKE51bV9rZXlfYml0cy5tYXhfdmFsdWUgOj4gaW50KVxuICBsZXQgbnVtX2JpdHNfaW50ZXJuYWwgdCA9IExpc3QuZm9sZCB0IH5pbml0Ok51bV9rZXlfYml0cy56ZXJvIH5mOk51bV9rZXlfYml0cy4oICsgKVxuICBsZXQgbnVtX2JpdHMgdCA9IChudW1fYml0c19pbnRlcm5hbCB0IDo+IGludClcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIGFzc2VydCAobm90IChMaXN0LmlzX2VtcHR5IHQpKTtcbiAgICBMaXN0Lml0ZXIgdCB+ZjooZnVuIG51bV9rZXlfYml0cyAtPlxuICAgICAgTnVtX2tleV9iaXRzLmludmFyaWFudCBudW1fa2V5X2JpdHM7XG4gICAgICBhc3NlcnQgKE51bV9rZXlfYml0cy4oID4gKSBudW1fa2V5X2JpdHMgTnVtX2tleV9iaXRzLnplcm8pKTtcbiAgICBOdW1fa2V5X2JpdHMuaW52YXJpYW50IChudW1fYml0c19pbnRlcm5hbCB0KVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHQgPSBzZXhwIHw+IFslb2Zfc2V4cDogdF0gaW5cbiAgICBpbnZhcmlhbnQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9leG4gPyhleHRlbmRfdG9fbWF4X251bV9iaXRzID0gZmFsc2UpIGludHMgPVxuICAgIGlmIExpc3QuaXNfZW1wdHkgaW50cyB0aGVuIGZhaWx3aXRoIFwiTGV2ZWxfYml0cy5jcmVhdGVfZXhuIHJlcXVpcmVzIGEgbm9uZW1wdHkgbGlzdFwiO1xuICAgIGlmIExpc3QuZXhpc3RzIGludHMgfmY6KGZ1biBiaXRzIC0+IGJpdHMgPD0gMClcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkxldmVsX2JpdHMuY3JlYXRlX2V4biBnb3Qgbm9ucG9zaXRpdmUgbnVtIGJpdHNcIiB+XzooaW50cyA6IGludCBsaXN0KV07XG4gICAgbGV0IG51bV9iaXRzID0gTGlzdC5mb2xkIGludHMgfmluaXQ6MCB+ZjooICsgKSBpblxuICAgIGlmIG51bV9iaXRzID4gbWF4X251bV9iaXRzXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkxldmVsX2JpdHMuY3JlYXRlX2V4biBnb3QgdG9vIG1hbnkgYml0c1wiXG4gICAgICAgICAgICB+XzooaW50cyA6IGludCBsaXN0KVxuICAgICAgICAgICAgfmdvdDoobnVtX2JpdHMgOiBpbnQpXG4gICAgICAgICAgICAobWF4X251bV9iaXRzIDogaW50KV07XG4gICAgbGV0IGludHMgPVxuICAgICAgaWYgZXh0ZW5kX3RvX21heF9udW1fYml0c1xuICAgICAgdGhlbiBpbnRzIEAgTGlzdC5pbml0IChtYXhfbnVtX2JpdHMgLSBudW1fYml0cykgfmY6KGNvbnN0IDEpXG4gICAgICBlbHNlIGludHNcbiAgICBpblxuICAgIExpc3QubWFwIGludHMgfmY6TnVtX2tleV9iaXRzLm9mX2ludFxuICA7O1xuXG4gIGxldCBkZWZhdWx0ID0gY3JlYXRlX2V4biBbIDExOyAxMDsgMTA7IDEwOyAxMDsgMTA7IDEgXVxuXG4gIGxldCB0cmltIHQgfm1heF9udW1fYml0cyA9XG4gICAgaWYgTnVtX2tleV9iaXRzLiggPD0gKSAobnVtX2JpdHNfaW50ZXJuYWwgdCkgbWF4X251bV9iaXRzXG4gICAgdGhlbiB0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgdCB+cmVtYWluaW5nID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgfCBiIDo6IHQgLT5cbiAgICAgICAgICBpZiBOdW1fa2V5X2JpdHMuKCA+PSApIGIgcmVtYWluaW5nXG4gICAgICAgICAgdGhlbiBbIHJlbWFpbmluZyBdXG4gICAgICAgICAgZWxzZSBiIDo6IGxvb3AgdCB+cmVtYWluaW5nOihOdW1fa2V5X2JpdHMuKCAtICkgcmVtYWluaW5nIGIpXG4gICAgICBpblxuICAgICAgbG9vcCB0IH5yZW1haW5pbmc6bWF4X251bV9iaXRzKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbGFybV9wcmVjaXNpb24gOiBzaWdcbiAgaW5jbHVkZSBBbGFybV9wcmVjaXNpb25cblxuICB2YWwgbnVtX2tleV9iaXRzIDogdCAtPiBOdW1fa2V5X2JpdHMudFxuICB2YWwgaW50ZXJ2YWxfbnVtIDogdCAtPiBUaW1lX25zLnQgLT4gSW50NjMudFxuICB2YWwgaW50ZXJ2YWxfbnVtX3N0YXJ0IDogdCAtPiBJbnQ2My50IC0+IFRpbWVfbnMudFxuZW5kID0gc3RydWN0XG4gICgqKiBbdF0gaXMgcmVwcmVzZW50ZWQgYXMgdGhlIGxvZzIgb2YgYSBudW1iZXIgb2YgbmFub3NlY29uZHMuICopXG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cbiAgbGV0IG51bV9rZXlfYml0cyB0ID0gdCB8PiBOdW1fa2V5X2JpdHMub2ZfaW50XG5cbiAgbGV0IHRvX3NwYW4gdCA9XG4gICAgaWYgdCA8IDBcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW0FsYXJtX3ByZWNpc2lvbi50b19zcGFuXSBvZiBuZWdhdGl2ZSBwb3dlciBvZiB0d28gbmFub3NlY29uZHNcIiB+XzoodCA6IGludCldO1xuICAgIEludDYzLihzaGlmdF9sZWZ0IG9uZSkgdCB8PiBUaW1lX25zLlNwYW4ub2ZfaW50NjNfbnNcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKHQgfD4gdG9fc3BhbiA6IFRpbWVfbnMuU3Bhbi50KV1cbiAgbGV0IG9uZV9uYW5vc2Vjb25kID0gMFxuICBsZXQgYWJvdXRfb25lX21pY3Jvc2Vjb25kID0gMTBcbiAgbGV0IGFib3V0X29uZV9taWxsaXNlY29uZCA9IDIwXG4gIGxldCBhYm91dF9vbmVfc2Vjb25kID0gMzBcbiAgbGV0IGFib3V0X29uZV9kYXkgPSA0NlxuICBsZXQgbXVsIHQgfnBvdzIgPSB0ICsgcG93MlxuICBsZXQgZGl2IHQgfnBvdzIgPSB0IC0gcG93MlxuICBsZXQgaW50ZXJ2YWxfbnVtIHQgdGltZSA9IEludDYzLnNoaWZ0X3JpZ2h0ICh0aW1lIHw+IFRpbWVfbnMudG9faW50NjNfbnNfc2luY2VfZXBvY2gpIHRcblxuICBsZXQgaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgaW50ZXJ2YWxfbnVtID1cbiAgICBJbnQ2My5zaGlmdF9sZWZ0IGludGVydmFsX251bSB0IHw+IFRpbWVfbnMub2ZfaW50NjNfbnNfc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgb2Zfc3Bhbl9mbG9vcl9wb3cyX25zIHNwYW4gPVxuICAgIGlmIFRpbWVfbnMuU3Bhbi4oIDw9ICkgc3BhbiBUaW1lX25zLlNwYW4uemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbQWxhcm1fcHJlY2lzaW9uLm9mX3NwYW5fZmxvb3JfcG93Ml9uc10gZ290IG5vbi1wb3NpdGl2ZSBzcGFuXCJcbiAgICAgICAgICAgIChzcGFuIDogVGltZV9ucy5TcGFuLnQpXTtcbiAgICBzcGFuIHw+IFRpbWVfbnMuU3Bhbi50b19pbnQ2M19ucyB8PiBJbnQ2My5mbG9vcl9sb2cyXG4gIDs7XG5cbiAgbGV0IG9mX3NwYW4gPSBvZl9zcGFuX2Zsb29yX3BvdzJfbnNcblxuICBtb2R1bGUgVW5zdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zcGFuX2Zsb29yX3BvdzJfbnNcbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3BhblxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3Bhbl9mbG9vcl9wb3cyX25zXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zcGFuXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKFRpbWVfbnMuU3BhbikgKFQpXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZSAoVGltZV9ucy5TcGFuKSAoVClcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgbGV2ZWxfYml0c19kZWZhdWx0ID0gTGV2ZWxfYml0cy5kZWZhdWx0XG5cbiAgdHlwZSB0ID1cbiAgICB7IGFsYXJtX3ByZWNpc2lvbiA6IEFsYXJtX3ByZWNpc2lvbi5VbnN0YWJsZS50XG4gICAgOyBsZXZlbF9iaXRzIDogTGV2ZWxfYml0cy50IFtAZGVmYXVsdCBsZXZlbF9iaXRzX2RlZmF1bHRdXG4gICAgOyBjYXBhY2l0eSA6IGludCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF1cblxuICBsZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBBbGFybV9wcmVjaXNpb24udG9fc3BhbiB0LmFsYXJtX3ByZWNpc2lvblxuXG4gICgqIFttYXhfbnVtX2xldmVsX2JpdHMgYWxhcm1fcHJlY2lzaW9uXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgbGV2ZWwgYml0cyBuZWVkZWQgZm9yIGFcbiAgICAgdGltaW5nIHdoZWVsIHdpdGggdGhlIHNwZWNpZmllZCBbYWxhcm1fcHJlY2lzaW9uXSB0byBiZSBhYmxlIHRvIHJlcHJlc2VudCBhbGxcbiAgICAgcG9zc2libGUgdGltZXMgZnJvbSBbVGltZV9ucy5lcG9jaF0gb253YXJkLiAgU2luY2Ugbm9uLW5lZ2F0aXZlIHRpbWVzIGhhdmUgNjIgYml0cyxcbiAgICAgd2UgcmVxdWlyZSBbTCA8PSA2MiAtIEFdLCB3aGVyZSBbQV0gaXMgdGhlIG51bWJlciBvZiBhbGFybSBiaXRzIGFuZCBbTF0gaXMgdGhlXG4gICAgIG51bWJlciBvZiBsZXZlbCBiaXRzLiAqKVxuICBsZXQgbWF4X251bV9sZXZlbF9iaXRzIGFsYXJtX3ByZWNpc2lvbiA9XG4gICAgTnVtX2tleV9iaXRzLiggLSApXG4gICAgICBOdW1fa2V5X2JpdHMubWF4X3ZhbHVlXG4gICAgICAoQWxhcm1fcHJlY2lzaW9uLm51bV9rZXlfYml0cyBhbGFybV9wcmVjaXNpb24pXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIE51bV9rZXlfYml0cy4oIDw9IClcbiAgICAgICAgICAoTGV2ZWxfYml0cy5udW1fYml0c19pbnRlcm5hbCB0LmxldmVsX2JpdHMpXG4gICAgICAgICAgKG1heF9udW1fbGV2ZWxfYml0cyB0LmFsYXJtX3ByZWNpc2lvbikpO1xuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+YWxhcm1fcHJlY2lzaW9uOmlnbm9yZVxuICAgICAgICB+Y2FwYWNpdHk6aWdub3JlXG4gICAgICAgIH5sZXZlbF9iaXRzOihjaGVjayBMZXZlbF9iaXRzLmludmFyaWFudCkpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSA/Y2FwYWNpdHkgPyhsZXZlbF9iaXRzID0gbGV2ZWxfYml0c19kZWZhdWx0KSB+YWxhcm1fcHJlY2lzaW9uICgpID1cbiAgICBsZXQgbGV2ZWxfYml0cyA9XG4gICAgICBMZXZlbF9iaXRzLnRyaW0gbGV2ZWxfYml0cyB+bWF4X251bV9iaXRzOihtYXhfbnVtX2xldmVsX2JpdHMgYWxhcm1fcHJlY2lzaW9uKVxuICAgIGluXG4gICAgeyBhbGFybV9wcmVjaXNpb247IGxldmVsX2JpdHM7IGNhcGFjaXR5IH1cbiAgOztcblxuICBsZXQgbWljcm9zZWNvbmRfcHJlY2lzaW9uICgpID1cbiAgICBjcmVhdGVcbiAgICAgICgpXG4gICAgICB+YWxhcm1fcHJlY2lzaW9uOkFsYXJtX3ByZWNpc2lvbi5hYm91dF9vbmVfbWljcm9zZWNvbmRcbiAgICAgIH5sZXZlbF9iaXRzOihMZXZlbF9iaXRzLmNyZWF0ZV9leG4gWyAxMDsgMTA7IDY7IDY7IDUgXSlcbiAgOztcblxuICBsZXQgZHVyYXRpb25zIHQgPVxuICAgIExpc3QuZm9sZGluZ19tYXBcbiAgICAgIHQubGV2ZWxfYml0c1xuICAgICAgfmluaXQ6KEFsYXJtX3ByZWNpc2lvbi5udW1fa2V5X2JpdHMgdC5hbGFybV9wcmVjaXNpb24gfD4gTnVtX2tleV9iaXRzLnRvX2ludClcbiAgICAgIH5mOihmdW4gbnVtX2JpdHNfYWNjdW0gbGV2ZWxfbnVtX2JpdHMgLT5cbiAgICAgICAgbGV0IG51bV9iaXRzX2FjY3VtID0gbnVtX2JpdHNfYWNjdW0gKyAobGV2ZWxfbnVtX2JpdHMgfD4gTnVtX2tleV9iaXRzLnRvX2ludCkgaW5cbiAgICAgICAgbGV0IGR1cmF0aW9uID1cbiAgICAgICAgICBUaW1lX25zLlNwYW4ub2ZfaW50NjNfbnNcbiAgICAgICAgICAgIChpZiBudW1fYml0c19hY2N1bSA9IEludDYzLm51bV9iaXRzIC0gMVxuICAgICAgICAgICAgIHRoZW4gSW50NjMubWF4X3ZhbHVlXG4gICAgICAgICAgICAgZWxzZSBJbnQ2My5zaGlmdF9sZWZ0IEludDYzLm9uZSBudW1fYml0c19hY2N1bSlcbiAgICAgICAgaW5cbiAgICAgICAgbnVtX2JpdHNfYWNjdW0sIGR1cmF0aW9uKVxuICA7O1xuZW5kXG5cblxuKCoqIFRpbWluZyB3aGVlbCBpcyBpbXBsZW1lbnRlZCBhcyBhIHByaW9yaXR5IHF1ZXVlIGluIHdoaWNoIHRoZSBrZXlzIGFyZVxuICAgIG5vbi1uZWdhdGl2ZSBpbnRlZ2VycyBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcnZhbHMgb2YgdGltZS4gIFRoZSBwcmlvcml0eSBxdWV1ZSBpc1xuICAgIHVubGlrZSBhIHR5cGljYWwgcHJpb3JpdHkgcXVldWUgaW4gdGhhdCByYXRoZXIgdGhhbiBoYXZpbmcgYSBcImRlbGV0ZSBtaW5cIiBvcGVyYXRpb24sXG4gICAgaXQgaGFzIGEgbm9uZGVjcmVhc2luZyBtaW5pbXVtIGFsbG93ZWQga2V5LCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgY3VycmVudCB0aW1lLFxuICAgIGFuZCBhbiBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSBvcGVyYXRpb24sIHdoaWNoIGltcGxlbWVudHMgW2FkdmFuY2VfY2xvY2tdLlxuICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIGFzIGEgc2lkZSBlZmZlY3QgcmVtb3ZlcyBhbGwgZWxlbWVudHMgZnJvbSB0aGUgdGltaW5nXG4gICAgd2hlZWwgd2hvc2Uga2V5IGlzIHNtYWxsZXIgdGhhbiB0aGUgbmV3IG1pbmltdW0sIHdoaWNoIGltcGxlbWVudHMgZmlyaW5nIHRoZSBhbGFybXNcbiAgICB3aG9zZSB0aW1lIGhhcyBleHBpcmVkLlxuXG4gICAgQWRkaW5nIGVsZW1lbnRzIHRvIGFuZCByZW1vdmluZyBlbGVtZW50cyBmcm9tIGEgdGltaW5nIHdoZWVsIHRha2VzIGNvbnN0YW50IHRpbWUsXG4gICAgdW5saWtlIGEgaGVhcC1iYXNlZCBwcmlvcml0eSBxdWV1ZSB3aGljaCB0YWtlcyBsb2coTiksIHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZlxuICAgIGVsZW1lbnRzIGluIHRoZSBoZWFwLiAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gdGFrZXMgdGltZSBwcm9wb3J0aW9uYWwgdG8gdGhlXG4gICAgYW1vdW50IG9mIGluY3JlYXNlIGluIHRoZSBtaW4tYWxsb3dlZCBrZXksIGFzIGNvbXBhcmVkIHRvIGxvZyhOKSBmb3IgYSBoZWFwLiAgSXQgaXNcbiAgICB0aGVzZSBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlcyB0aGF0IG1vdGl2YXRlIHRoZSBleGlzdGVuY2Ugb2YgdGltaW5nIHdoZWVscyBhbmQgbWFrZVxuICAgIHRoZW0gYSBnb29kIGNob2ljZSBmb3IgbWFpbnRhaW5nIGEgc2V0IG9mIGFsYXJtcy4gIFdpdGggYSB0aW1pbmcgd2hlZWwsIG9uZSBjYW5cbiAgICBzdXBwb3J0IGFueSBudW1iZXIgb2YgYWxhcm1zIHBheWluZyBjb25zdGFudCBvdmVyaGVhZCBwZXIgYWxhcm0sIHdoaWxlIHBheWluZyBhXG4gICAgc21hbGwgY29uc3RhbnQgb3ZlcmhlYWQgcGVyIHVuaXQgb2YgdGltZSBwYXNzZWQuXG5cbiAgICBBcyB0aGUgbWluaW11bSBhbGxvd2VkIGtleSBpbmNyZWFzZXMsIHRoZSB0aW1pbmcgd2hlZWwgZG9lcyBhIGxhenkgcmFkaXggc29ydCBvZiB0aGVcbiAgICBlbGVtZW50IGtleXMsIHdpdGggbGV2ZWwgMCBoYW5kbGluZyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgW2JfMF0gYml0cyBpbiBhIGtleSwgYW5kXG4gICAgZWFjaCBzdWJzZXF1ZW50IGxldmVsIFtpXSBoYW5kbGluZyB0aGUgbmV4dCBtb3N0IHNpZ25pZmljYW50IFtiX2ldIGJpdHMuICBUaGUgbGV2ZWxzXG4gICAgaG9sZCBpbmNyZWFzaW5nbHkgbGFyZ2VyIHJhbmdlcyBvZiBrZXlzLCB3aGVyZSB0aGUgdW5pb24gb2YgYWxsIHRoZSBsZXZlbHMgY2FuIGhvbGRcbiAgICBhbnkga2V5IGZyb20gW21pbl9hbGxvd2VkX2tleSB0XSB0byBbbWF4X2FsbG93ZWRfa2V5IHRdLiAgV2hlbiBhIGtleSBpcyBhZGRlZCB0byB0aGVcbiAgICB0aW1pbmcgd2hlZWwsIGl0IGlzIGFkZGVkIGF0IHRoZSBsb3dlc3QgcG9zc2libGUgbGV2ZWwgdGhhdCBjYW4gc3RvcmUgdGhlIGtleS4gIEFzXG4gICAgdGhlIG1pbmltdW0gYWxsb3dlZCBrZXkgaW5jcmVhc2VzLCB0aW1pbmctd2hlZWwgZWxlbWVudHMgbW92ZSBkb3duIGxldmVscyB1bnRpbCB0aGV5XG4gICAgcmVhY2ggbGV2ZWwgMCwgYW5kIHRoZW4gYXJlIGV2ZW50dWFsbHkgcmVtb3ZlZC4gICopXG5tb2R1bGUgUHJpb3JpdHlfcXVldWUgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgJ2EgcHJpb3JpdHlfcXVldWUgPSAnYSB0XG5cbiAgbW9kdWxlIEtleSA6IEludGVydmFsX251bVxuXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICAoKiogQW4gW0VsdC50XSByZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCB3YXMgYWRkZWQgdG8gYSB0aW1pbmcgd2hlZWwuICopXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB2YWwgYXQgOiAnYSBwcmlvcml0eV9xdWV1ZSAtPiAnYSB0IC0+IFRpbWVfbnMudFxuICAgIHZhbCBrZXkgOiAnYSBwcmlvcml0eV9xdWV1ZSAtPiAnYSB0IC0+IEtleS50XG4gICAgdmFsIHZhbHVlIDogJ2EgcHJpb3JpdHlfcXVldWUgLT4gJ2EgdCAtPiAnYVxuICAgIHZhbCBudWxsIDogdW5pdCAtPiAnYSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBJbnRlcm5hbF9lbHQgOiBzaWdcbiAgICBtb2R1bGUgUG9vbCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBrZXkgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBLZXkudFxuICAgIHZhbCBtYXhfYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuICAgIHZhbCBtaW5fYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuICAgIHZhbCBpc19udWxsIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgdG9fZXh0ZXJuYWwgOiAnYSB0IC0+ICdhIEVsdC50XG4gIGVuZFxuXG4gIHZhbCBwb29sIDogJ2EgdCAtPiAnYSBJbnRlcm5hbF9lbHQuUG9vbC50XG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICgqKiBbY3JlYXRlID9sZXZlbF9iaXRzICgpXSBjcmVhdGVzIGEgbmV3IGVtcHR5IHRpbWluZyB3aGVlbCwgW3RdLCB3aXRoIFtsZW5ndGggdCA9IDBdXG4gICAgICBhbmQgW21pbl9hbGxvd2VkX2tleSB0ID0gMF0uICopXG4gIHZhbCBjcmVhdGUgOiA/Y2FwYWNpdHk6aW50IC0+ID9sZXZlbF9iaXRzOkxldmVsX2JpdHMudCAtPiB1bml0IC0+ICdhIHRcblxuICAoKiogW2xlbmd0aCB0XSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHRpbWluZyB3aGVlbC4gKilcbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcblxuICAoKiogW21pbl9hbGxvd2VkX2tleSB0XSBpcyB0aGUgbWluaW11bSBrZXkgdGhhdCBjYW4gYmUgc3RvcmVkIGluIFt0XS4gIFRoaXMgb25seVxuICAgICAgaW5kaWNhdGVzIHRoZSBwb3NzaWJpbGl0eTsgdGhlcmUgbmVlZCBub3QgYmUgYW4gZWxlbWVudCBbZWx0XSBpbiBbdF0gd2l0aCBbRWx0LmtleVxuICAgICAgZWx0ID0gbWluX2FsbG93ZWRfa2V5IHRdLiAgVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIFwibWluX2tleVwiIG9wZXJhdGlvbiBpbiBhXG4gICAgICB0eXBpY2FsIHByaW9yaXR5IHF1ZXVlLlxuXG4gICAgICBbbWluX2FsbG93ZWRfa2V5IHRdIGNhbiBpbmNyZWFzZSBvdmVyIHRpbWUsIHZpYSBjYWxscyB0b1xuICAgICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0uICopXG4gIHZhbCBtaW5fYWxsb3dlZF9rZXkgOiBfIHQgLT4gS2V5LnRcblxuICAoKiogW21heF9hbGxvd2VkX2tleSB0XSBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGtleSB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gW3RdLiAgQXNcbiAgICAgIFttaW5fYWxsb3dlZF9rZXldIGluY3JlYXNlcywgc28gZG9lcyBbbWF4X2FsbG93ZWRfa2V5XTsgaG93ZXZlciBpdCBpcyBub3QgdGhlIGNhc2VcbiAgICAgIHRoYXQgW21heF9hbGxvd2VkX2tleSB0IC0gbWluX2FsbG93ZWRfa2V5IHRdIGlzIGEgY29uc3RhbnQuICBJdCBpcyBndWFyYW50ZWVkIHRoYXRcbiAgICAgIFttYXhfYWxsb3dlZF9rZXkgdCA+PSBtaW5fYWxsb3dlZF9rZXkgdCArIDJeQiAtIDFdLFxuICAgICAgd2hlcmUgW0JdIGlzIHRoZSBzdW0gb2YgdGhlIGJfaSBpbiBbbGV2ZWxfYml0c10uICopXG4gIHZhbCBtYXhfYWxsb3dlZF9rZXkgOiBfIHQgLT4gS2V5LnRcblxuICB2YWwgbWluX2VsdF8gOiAnYSB0IC0+ICdhIEludGVybmFsX2VsdC50XG4gIHZhbCBpbnRlcm5hbF9hZGQgOiAnYSB0IC0+IGtleTpLZXkudCAtPiBhdDpUaW1lX25zLnQgLT4gJ2EgLT4gJ2EgSW50ZXJuYWxfZWx0LnRcblxuICAoKiogW3JlbW92ZSB0IGVsdF0gcmVtb3ZlcyBbZWx0XSBmcm9tIFt0XS4gIEl0IGlzIGFuIGVycm9yIGlmIFtlbHRdIGlzIG5vdCBjdXJyZW50bHlcbiAgICAgIGluIFt0XSwgYW5kIHRoaXMgZXJyb3IgbWF5IG9yIG1heSBub3QgYmUgZGV0ZWN0ZWQuICopXG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+ICdhIEVsdC50IC0+IHVuaXRcblxuICB2YWwgY2hhbmdlIDogJ2EgdCAtPiAnYSBFbHQudCAtPiBrZXk6S2V5LnQgLT4gYXQ6VGltZV9ucy50IC0+IHVuaXRcblxuICAoKiogW2NsZWFyIHRdIHJlbW92ZXMgYWxsIGVsdHMgZnJvbSBbdF0uICopXG4gIHZhbCBjbGVhciA6IF8gdCAtPiB1bml0XG5cbiAgdmFsIG1lbSA6ICdhIHQgLT4gJ2EgRWx0LnQgLT4gYm9vbFxuXG4gIG1vZHVsZSBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0IDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlXG4gICAgICB8IE1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkXG4gIGVuZFxuXG4gICgqKiBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5IHQgfmtleSB+aGFuZGxlX3JlbW92ZWRdIGluY3JlYXNlcyB0aGUgbWluaW11bSBhbGxvd2VkXG4gICAgICBrZXkgaW4gW3RdIHRvIFtrZXldLCBhbmQgcmVtb3ZlcyBhbGwgZWxlbWVudHMgd2l0aCBrZXlzIGxlc3MgdGhhbiBba2V5XSwgYXBwbHlpbmdcbiAgICAgIFtoYW5kbGVfcmVtb3ZlZF0gdG8gZWFjaCBlbGVtZW50IHRoYXQgaXMgcmVtb3ZlZC4gIElmIFtrZXkgPD0gbWluX2FsbG93ZWRfa2V5IHRdLFxuICAgICAgdGhlbiBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSBkb2VzIG5vdGhpbmcuICBPdGhlcndpc2UsIGlmXG4gICAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSByZXR1cm5zIHN1Y2Nlc3NmdWxseSwgW21pbl9hbGxvd2VkX2tleSB0ID0ga2V5XS5cblxuICAgICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gdGFrZXMgdGltZSBwcm9wb3J0aW9uYWwgdG8gW2tleSAtIG1pbl9hbGxvd2VkX2tleSB0XSxcbiAgICAgIGFsdGhvdWdoIHBvc3NpYmx5IGxlc3MgdGltZS5cblxuICAgICAgQmVoYXZpb3IgaXMgdW5zcGVjaWZpZWQgaWYgW2hhbmRsZV9yZW1vdmVkXSBhY2Nlc3NlcyBbdF0gaW4gYW55IHdheSBvdGhlciB0aGFuXG4gICAgICBbRWx0XSBmdW5jdGlvbnMuICopXG4gIHZhbCBpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlcbiAgICA6ICAnYSB0XG4gICAgLT4ga2V5OktleS50XG4gICAgLT4gaGFuZGxlX3JlbW92ZWQ6KCdhIEVsdC50IC0+IHVuaXQpXG4gICAgLT4gSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdC50XG5cbiAgdmFsIGl0ZXIgOiAnYSB0IC0+IGY6KCdhIEVsdC50IC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgZmlyZV9wYXN0X2FsYXJtc1xuICAgIDogICdhIHRcbiAgICAtPiBoYW5kbGVfZmlyZWQ6KCdhIEVsdC50IC0+IHVuaXQpXG4gICAgLT4ga2V5OktleS50XG4gICAgLT4gbm93OlRpbWVfbnMudFxuICAgIC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICAoKiogRWFjaCBzbG90IGluIGEgbGV2ZWwgaXMgYSAocG9zc2libHkgbnVsbCkgcG9pbnRlciB0byBhIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdFxuICAgICAgb2YgZWxlbWVudHMuICBXZSBwb29sIHRoZSBlbGVtZW50cyBzbyB0aGF0IHdlIGNhbiByZXVzZSB0aGVtIGFmdGVyIHRoZXkgYXJlIHJlbW92ZWRcbiAgICAgIGZyb20gdGhlIHRpbWluZyB3aGVlbCAoZWl0aGVyIHZpYSBbcmVtb3ZlXSBvciBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSkuICBJblxuICAgICAgYWRkaXRpb24gdG8gc3RvcmluZyB0aGUgW2tleV0sIFthdF0sIGFuZCBbdmFsdWVdIGluIHRoZSBlbGVtZW50LCB3ZSBzdG9yZSB0aGVcbiAgICAgIFtsZXZlbF9pbmRleF0gc28gdGhhdCB3ZSBjYW4gcXVpY2tseSBnZXQgdG8gdGhlIGxldmVsIGhvbGRpbmcgYW4gZWxlbWVudCB3aGVuIHdlXG4gICAgICBbcmVtb3ZlXSBpdC5cblxuICAgICAgV2UgZGlzdGluZ3Vpc2ggYmV0d2VlbiBbRXh0ZXJuYWxfZWx0XSBhbmQgW0ludGVybmFsX2VsdF0sIHdoaWNoIGFyZSB0aGUgc2FtZVxuICAgICAgdW5kZXJuZWF0aC4gIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCBhbiBbSW50ZXJuYWxfZWx0XSBpcyBlaXRoZXIgW251bGxdIG9yIGFcbiAgICAgIHZhbGlkIHBvaW50ZXIuICBPbiB0aGUgb3RoZXIgaGFuZCwgW0V4dGVybmFsX2VsdF1zIGFyZSByZXR1cm5lZCB0byB1c2VyIGNvZGUsIHNvXG4gICAgICB0aGVyZSBpcyBubyBndWFyYW50ZWUgb2YgdmFsaWRpdHkgLS0gd2UgYWx3YXlzIHZhbGlkYXRlIGFuIFtFeHRlcm5hbF9lbHRdIGJlZm9yZVxuICAgICAgZG9pbmcgYW55dGhpbmcgd2l0aCBpdC5cblxuICAgICAgSXQgaXMgdGhlcmVmb3JlIE9LIHRvIHVzZSBbUG9vbC5VbnNhZmVdLCBiZWNhdXNlIHdlIHdpbGwgbmV2ZXIgYXR0ZW1wdCB0byBhY2Nlc3MgYVxuICAgICAgc2xvdCBvZiBhbiBpbnZhbGlkIHBvaW50ZXIuICopXG4gIG1vZHVsZSBQb29sID0gUG9vbC5VbnNhZmVcblxuICBtb2R1bGUgUG9pbnRlciA9IFBvb2wuUG9pbnRlclxuXG4gIG1vZHVsZSBLZXkgOiBzaWdcbiAgICAoKiogW0ludGVydmFsX251bV0gaXMgdGhlIHB1YmxpYyBBUEkuICBFdmVyeXRoaW5nIGZvbGxvd2luZyBpbiB0aGUgc2lnbmF0dXJlIGlzXG4gICAgICAgIGZvciBpbnRlcm5hbCB1c2UuICopXG4gICAgaW5jbHVkZSBUaW1pbmdfd2hlZWxfaW50Zi5JbnRlcnZhbF9udW1cblxuICAgICgqKiBbYWRkX2NsYW1wX3RvX21heF0gZG9lc24ndCB3b3JrIGF0IGFsbCB3aXRoIG5lZ2F0aXZlIHNwYW5zICopXG4gICAgdmFsIGFkZF9jbGFtcF90b19tYXggOiB0IC0+IFNwYW4udCAtPiB0XG5cbiAgICB2YWwgc3VjY19jbGFtcF90b19tYXggOiB0IC0+IHRcblxuICAgICgqKiBbU2xvdHNfbWFza10gaXMgdXNlZCB0byBxdWlja2x5IGRldGVybWluZSBhIGtleSdzIHNsb3QgaW4gYSBnaXZlbiBsZXZlbC4gKilcbiAgICBtb2R1bGUgU2xvdHNfbWFzayA6IHNpZ1xuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSBJbnQ2My50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgIHZhbCBjcmVhdGUgOiBsZXZlbF9iaXRzOk51bV9rZXlfYml0cy50IC0+IHRcbiAgICAgIHZhbCBuZXh0X3Nsb3QgOiB0IC0+IGludCAtPiBpbnRcbiAgICBlbmRcblxuICAgICgqKiBbTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza10gaXMgdXNlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgbWluaW11bSBrZXkgaW4gdGhlXG4gICAgICAgIHNhbWUgc2xvdCBhcyBhIGdpdmVuIGtleS4gKilcbiAgICBtb2R1bGUgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA6IHNpZ1xuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSBJbnQ2My50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgIGluY2x1ZGUgRXF1YWwuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIHZhbCBjcmVhdGUgOiBiaXRzX3Blcl9zbG90Ok51bV9rZXlfYml0cy50IC0+IHRcbiAgICBlbmRcblxuICAgIHZhbCBudW1fa2V5cyA6IE51bV9rZXlfYml0cy50IC0+IFNwYW4udFxuICAgIHZhbCBtaW5fa2V5X2luX3NhbWVfc2xvdCA6IHQgLT4gTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay50IC0+IHRcbiAgICB2YWwgc2xvdCA6IHQgLT4gYml0c19wZXJfc2xvdDpOdW1fa2V5X2JpdHMudCAtPiBzbG90c19tYXNrOlNsb3RzX21hc2sudCAtPiBpbnRcbiAgZW5kID0gc3RydWN0XG4gICAgbW9kdWxlIFNsb3RzX21hc2sgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEludDYzLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgbGV0IGNyZWF0ZSB+bGV2ZWxfYml0cyA9IEludDYzLiggLSApIChOdW1fa2V5X2JpdHMucG93MiBsZXZlbF9iaXRzKSBJbnQ2My5vbmVcbiAgICAgIGxldCBuZXh0X3Nsb3QgdCBzbG90ID0gKHNsb3QgKyAxKSBsYW5kIEludDYzLnRvX2ludF9leG4gdFxuICAgIGVuZFxuXG4gICAgbGV0IG51bV9rZXlzIG51bV9iaXRzID0gTnVtX2tleV9iaXRzLnBvdzIgbnVtX2JpdHNcblxuICAgIG1vZHVsZSBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEludDYzXG5cbiAgICAgIGxldCBjcmVhdGUgfmJpdHNfcGVyX3Nsb3QgPSBiaXRfbm90IChOdW1fa2V5X2JpdHMucG93MiBiaXRzX3Blcl9zbG90IC0gb25lKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFNwYW4gPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50NjNcblxuICAgICAgbGV0IHRvX2ludDYzIHQgPSB0XG4gICAgICBsZXQgb2ZfaW50NjMgaSA9IGlcbiAgICAgIGxldCBzY2FsZV9pbnQgdCBpID0gdCAqIG9mX2ludCBpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEludDYzXG5cbiAgICBsZXQgb2ZfaW50NjMgaSA9IGlcbiAgICBsZXQgdG9faW50NjMgdCA9IHRcbiAgICBsZXQgYWRkIHQgaSA9IHQgKyBpXG4gICAgbGV0IGFkZF9jbGFtcF90b19tYXggdCBpID0gaWYgdCA+IG1heF92YWx1ZSAtIGkgdGhlbiBtYXhfdmFsdWUgZWxzZSB0ICsgaVxuICAgIGxldCBzdWNjX2NsYW1wX3RvX21heCB0ID0gaWYgdCA9IG1heF92YWx1ZSB0aGVuIG1heF92YWx1ZSBlbHNlIHN1Y2MgdFxuICAgIGxldCBzdWIgdCBpID0gdCAtIGlcbiAgICBsZXQgZGlmZiB0MSB0MiA9IHQxIC0gdDJcblxuICAgIGxldCBzbG90IHQgfihiaXRzX3Blcl9zbG90IDogTnVtX2tleV9iaXRzLnQpIH5zbG90c19tYXNrID1cbiAgICAgIHRvX2ludF9leG4gKGJpdF9hbmQgKHNoaWZ0X3JpZ2h0IHQgKGJpdHNfcGVyX3Nsb3QgOj4gaW50KSkgc2xvdHNfbWFzaylcbiAgICA7O1xuXG4gICAgbGV0IG1pbl9rZXlfaW5fc2FtZV9zbG90IHQgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9XG4gICAgICBiaXRfYW5kIHQgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID0gS2V5Lk1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgbW9kdWxlIFNsb3RzX21hc2sgPSBLZXkuU2xvdHNfbWFza1xuXG4gIG1vZHVsZSBFeHRlcm5hbF9lbHQgPSBzdHJ1Y3RcblxuICAgICgqKiBUaGUgW3Bvb2xfc2xvdHNdIGhlcmUgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgc2xvdHMgaW4gYSBsZXZlbCBhcnJheS4gIFRoaXMgaXNcbiAgICAgICAgZm9yIHRoZSBzbG90cyBpbiB0aGUgcG9vbCB0dXBsZSByZXByZXNlbnRpbmcgYSBsZXZlbCBlbGVtZW50LiAqKVxuICAgIHR5cGUgJ2EgcG9vbF9zbG90cyA9XG4gICAgICAoIEtleS50XG4gICAgICAsIFRpbWVfbnMudFxuICAgICAgLCAnYVxuICAgICAgLCBpbnRcbiAgICAgICwgJ2EgcG9vbF9zbG90cyBQb2ludGVyLnRcbiAgICAgICwgJ2EgcG9vbF9zbG90cyBQb2ludGVyLnQgKVxuICAgICAgICBQb29sLlNsb3RzLnQ2XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHR5cGUgJ2EgdCA9ICdhIHBvb2xfc2xvdHMgUG9pbnRlci50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgbnVsbCA9IFBvaW50ZXIubnVsbFxuICBlbmRcblxuICBtb2R1bGUgSW50ZXJuYWxfZWx0IDogc2lnXG4gICAgbW9kdWxlIFBvb2wgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICAgIHZhbCBjcmVhdGUgOiA/Y2FwYWNpdHk6aW50IC0+IHVuaXQgLT4gXyB0XG4gICAgICB2YWwgaXNfZnVsbCA6IF8gdCAtPiBib29sXG4gICAgICB2YWwgZ3JvdyA6ID9jYXBhY2l0eTppbnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSBwcml2YXRlICdhIEV4dGVybmFsX2VsdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB2YWwgbnVsbCA6IHVuaXQgLT4gXyB0XG4gICAgdmFsIGlzX251bGwgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCBpc192YWxpZCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGJvb2xcblxuICAgICgqKiBEZWFsaW5nIHdpdGggW0V4dGVybmFsX2VsdF1zLiAqKVxuXG4gICAgdmFsIGV4dGVybmFsX2lzX3ZhbGlkIDogJ2EgUG9vbC50IC0+ICdhIEV4dGVybmFsX2VsdC50IC0+IGJvb2xcbiAgICB2YWwgdG9fZXh0ZXJuYWwgOiAnYSB0IC0+ICdhIEV4dGVybmFsX2VsdC50XG4gICAgdmFsIG9mX2V4dGVybmFsX2V4biA6ICdhIFBvb2wudCAtPiAnYSBFeHRlcm5hbF9lbHQudCAtPiAnYSB0XG4gICAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgaW52YXJpYW50IDogJ2EgUG9vbC50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBbY3JlYXRlXSByZXR1cm5zIGFuIGVsZW1lbnQgd2hvc2UgW25leHRdIGFuZCBbcHJldl0gYXJlIFtudWxsXS4gKilcbiAgICB2YWwgY3JlYXRlXG4gICAgICA6ICAnYSBQb29sLnRcbiAgICAgIC0+IGtleTpLZXkudFxuICAgICAgKCoqIFthdF0gaXMgdXNlZCB3aGVuIHRoZSBwcmlvcml0eSBxdWV1ZSBpcyB1c2VkIHRvIGltcGxlbWVudCBhIHRpbWluZyB3aGVlbC4gIElmXG4gICAgICAgICAgdW51c2VkLCBpdCB3aWxsIGJlIFtUaW1lX25zLmVwb2NoXS4gKilcbiAgICAgIC0+IGF0OlRpbWVfbnMudFxuICAgICAgLT4gdmFsdWU6J2FcbiAgICAgIC0+IGxldmVsX2luZGV4OmludFxuICAgICAgLT4gJ2EgdFxuXG4gICAgdmFsIGZyZWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB1bml0XG5cbiAgICAoKiogYWNjZXNzb3JzICopXG5cbiAgICB2YWwga2V5IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gS2V5LnRcbiAgICB2YWwgYXQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBUaW1lX25zLnRcbiAgICB2YWwgbGV2ZWxfaW5kZXggOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgbmV4dCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgdmFsdWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiAnYVxuXG4gICAgKCoqIG11dGF0b3JzICopXG5cbiAgICB2YWwgc2V0X2tleSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IEtleS50IC0+IHVuaXRcbiAgICB2YWwgc2V0X2F0IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gVGltZV9ucy50IC0+IHVuaXRcbiAgICB2YWwgc2V0X2xldmVsX2luZGV4IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gaW50IC0+IHVuaXRcblxuICAgICgqKiBbaW5zZXJ0X2F0X2VuZCBwb29sIHQgfnRvX2FkZF0gdHJlYXRzIFt0XSBhcyB0aGUgaGVhZCBvZiB0aGUgbGlzdCBhbmQgYWRkcyBbdG9fYWRkXVxuICAgICAgICB0byB0aGUgZW5kIG9mIGl0LiAqKVxuICAgIHZhbCBpbnNlcnRfYXRfZW5kIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gdG9fYWRkOidhIHQgLT4gdW5pdFxuXG4gICAgKCoqIFtsaW5rX3RvX3NlbGYgcG9vbCB0XSBtYWtlcyBbdF0gYmUgYSBzaW5nbGV0b24gY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0LiAqKVxuICAgIHZhbCBsaW5rX3RvX3NlbGYgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB1bml0XG5cbiAgICAoKiogW3VubGluayBwIHRdIHVubGlua3MgW3RdIGZyb20gdGhlIGNpcmN1bGFybHkgZG91Ymx5LWxpbmtlZCBsaXN0IHRoYXQgaXQgaXMgaW4uICBJdFxuICAgICAgICBjaGFuZ2VzIHRoZSBwb2ludGVycyBvZiBbdF0ncyBbcHJldl0gYW5kIFtuZXh0XSBlbHRzLCBidXQgbm90IFt0XSdzIFtwcmV2XSBhbmRcbiAgICAgICAgW25leHRdIHBvaW50ZXJzLiAgW3VubGlua10gaXMgbWVhbmluZ2xlc3MgaWYgW3RdIGlzIGEgc2luZ2xldG9uLiAqKVxuICAgIHZhbCB1bmxpbmsgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB1bml0XG5cbiAgICAoKiogSXRlcmF0b3JzLiAgW2l0ZXIgcCB0IH5pbml0IH5mXSB2aXNpdHMgZWFjaCBlbGVtZW50IGluIHRoZSBkb3VibHktbGlua2VkIGxpc3RcbiAgICAgICAgY29udGFpbmluZyBbdF0sIHN0YXJ0aW5nIGF0IFt0XSwgYW5kIGZvbGxvd2luZyBbbmV4dF0gcG9pbnRlcnMuICBbbGVuZ3RoXSBjb3VudHNcbiAgICAgICAgYnkgdmlzaXRpbmcgZWFjaCBlbGVtZW50IGluIHRoZSBsaXN0LiAqKVxuICAgIHZhbCBpdGVyIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gZjooJ2EgdCAtPiB1bml0KSAtPiB1bml0XG5cbiAgICB2YWwgbGVuZ3RoIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gaW50XG5cbiAgICAoKiogW21heF9hbGFybV90aW1lIHQgZWx0IH53aXRoX2tleV0gZmluZHMgdGhlIG1heCBbYXRdIGluIFtlbHRdJ3MgbGlzdCBhbW9uZyB0aGUgZWx0c1xuICAgICAgICB3aG9zZSBrZXkgaXMgW3dpdGhfa2V5XSwgcmV0dXJuaW5nIFtUaW1lX25zLmVwb2NoXSBpZiB0aGUgbGlzdCBpcyBlbXB0eS4gKilcbiAgICB2YWwgbWF4X2FsYXJtX3RpbWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB3aXRoX2tleTpLZXkudCAtPiBUaW1lX25zLnRcblxuICAgIHZhbCBtaW5fYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHBvb2xfc2xvdHMgPSAnYSBFeHRlcm5hbF9lbHQucG9vbF9zbG90cyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgJ2EgdCA9ICdhIEV4dGVybmFsX2VsdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgbnVsbCA9IFBvaW50ZXIubnVsbFxuICAgIGxldCBpc19udWxsID0gUG9pbnRlci5pc19udWxsXG4gICAgbGV0IGVxdWFsIHQxIHQyID0gUG9pbnRlci5waHlzX2VxdWFsIHQxIHQyXG5cbiAgICBsZXQgY3JlYXRlIHBvb2wgfmtleSB+YXQgfnZhbHVlIH5sZXZlbF9pbmRleCA9XG4gICAgICBQb29sLm5ldzYgcG9vbCBrZXkgYXQgdmFsdWUgbGV2ZWxfaW5kZXggKG51bGwgKCkpIChudWxsICgpKVxuICAgIDs7XG5cbiAgICBsZXQgZnJlZSA9IFBvb2wuZnJlZVxuICAgIGxldCBrZXkgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50MFxuICAgIGxldCBzZXRfa2V5IHAgdCBrID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50MCBrXG4gICAgbGV0IGF0IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDFcbiAgICBsZXQgc2V0X2F0IHAgdCB4ID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50MSB4XG4gICAgbGV0IHZhbHVlIHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDJcbiAgICBsZXQgbGV2ZWxfaW5kZXggcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50M1xuICAgIGxldCBzZXRfbGV2ZWxfaW5kZXggcCB0IGkgPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQzIGlcbiAgICBsZXQgcHJldiBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQ0XG4gICAgbGV0IHNldF9wcmV2IHAgdCB4ID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50NCB4XG4gICAgbGV0IG5leHQgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50NVxuICAgIGxldCBzZXRfbmV4dCBwIHQgeCA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDUgeFxuICAgIGxldCBpc192YWxpZCBwIHQgPSBQb29sLnBvaW50ZXJfaXNfdmFsaWQgcCB0XG4gICAgbGV0IGV4dGVybmFsX2lzX3ZhbGlkID0gaXNfdmFsaWRcblxuICAgIGxldCBpbnZhcmlhbnQgcG9vbCBpbnZhcmlhbnRfYSB0ID1cbiAgICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICAgIGFzc2VydCAoaXNfdmFsaWQgcG9vbCB0KTtcbiAgICAgICAgaW52YXJpYW50X2EgKHZhbHVlIHBvb2wgdCk7XG4gICAgICAgIGxldCBuID0gbmV4dCBwb29sIHQgaW5cbiAgICAgICAgYXNzZXJ0IChpc19udWxsIG4gfHwgUG9pbnRlci5waHlzX2VxdWFsIHQgKHByZXYgcG9vbCBuKSk7XG4gICAgICAgIGxldCBwID0gcHJldiBwb29sIHQgaW5cbiAgICAgICAgYXNzZXJ0IChpc19udWxsIHAgfHwgUG9pbnRlci5waHlzX2VxdWFsIHQgKG5leHQgcG9vbCBwKSkpXG4gICAgOztcblxuICAgIG1vZHVsZSBQb29sID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBwb29sX3Nsb3RzIFBvb2wudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID0gUG9vbC5pbnZhcmlhbnQgaWdub3JlIHRcbiAgICAgIGxldCBjcmVhdGUgPyhjYXBhY2l0eSA9IDEpICgpID0gUG9vbC5jcmVhdGUgUG9vbC5TbG90cy50NiB+Y2FwYWNpdHlcbiAgICAgIGxldCBncm93ID0gUG9vbC5ncm93XG4gICAgICBsZXQgaXNfZnVsbCA9IFBvb2wuaXNfZnVsbFxuICAgIGVuZFxuXG4gICAgbGV0IHRvX2V4dGVybmFsIHQgPSB0XG5cbiAgICBsZXQgb2ZfZXh0ZXJuYWxfZXhuIHBvb2wgdCA9XG4gICAgICBpZiBpc192YWxpZCBwb29sIHQgdGhlbiB0IGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1pbmdfd2hlZWwgZ290IGludmFsaWQgYWxhcm1cIl1cbiAgICA7O1xuXG4gICAgbGV0IHVubGluayBwb29sIHQgPVxuICAgICAgc2V0X25leHQgcG9vbCAocHJldiBwb29sIHQpIChuZXh0IHBvb2wgdCk7XG4gICAgICBzZXRfcHJldiBwb29sIChuZXh0IHBvb2wgdCkgKHByZXYgcG9vbCB0KVxuICAgIDs7XG5cbiAgICBsZXQgbGluayBwb29sIHByZXYgbmV4dCA9XG4gICAgICBzZXRfbmV4dCBwb29sIHByZXYgbmV4dDtcbiAgICAgIHNldF9wcmV2IHBvb2wgbmV4dCBwcmV2XG4gICAgOztcblxuICAgIGxldCBsaW5rX3RvX3NlbGYgcG9vbCB0ID0gbGluayBwb29sIHQgdFxuXG4gICAgbGV0IGluc2VydF9hdF9lbmQgcG9vbCB0IH50b19hZGQgPVxuICAgICAgbGV0IHByZXYgPSBwcmV2IHBvb2wgdCBpblxuICAgICAgbGluayBwb29sIHByZXYgdG9fYWRkO1xuICAgICAgbGluayBwb29sIHRvX2FkZCB0XG4gICAgOztcblxuICAgIGxldCBpdGVyIHBvb2wgZmlyc3QgfmYgPVxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgKCogV2UgZ2V0IFtuZXh0XSBiZWZvcmUgY2FsbGluZyBbZl0gc28gdGhhdCBbZl0gY2FuIG1vZGlmeSBvciBbZnJlZV0gWyFjdXJyZW50XS4gKilcbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgZiAhY3VycmVudDtcbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgIGRvbmVcbiAgICA7O1xuXG4gICAgbGV0IGxlbmd0aCBwb29sIGZpcnN0ID1cbiAgICAgIGxldCByID0gcmVmIDAgaW5cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgIGluY3IgcjtcbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgIGRvbmU7XG4gICAgICAhclxuICAgIDs7XG5cbiAgICBsZXQgbWF4X2FsYXJtX3RpbWUgcG9vbCBmaXJzdCB+d2l0aF9rZXkgPVxuICAgICAgbGV0IG1heF9hbGFybV90aW1lID0gcmVmIFRpbWVfbnMuZXBvY2ggaW5cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgIGlmIEtleS5lcXVhbCAoa2V5IHBvb2wgIWN1cnJlbnQpIHdpdGhfa2V5XG4gICAgICAgIHRoZW4gbWF4X2FsYXJtX3RpbWUgOj0gVGltZV9ucy5tYXggKGF0IHBvb2wgIWN1cnJlbnQpICFtYXhfYWxhcm1fdGltZTtcbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgIGRvbmU7XG4gICAgICAhbWF4X2FsYXJtX3RpbWVcbiAgICA7O1xuXG4gICAgbGV0IG1pbl9hbGFybV90aW1lIHBvb2wgZmlyc3QgfndpdGhfa2V5ID1cbiAgICAgIGxldCBtaW5fYWxhcm1fdGltZSA9IHJlZiBUaW1lX25zLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlIGluXG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICAoKiBUaGUgW2tleV0gY29tcGFyaXNvbiBpcyBuZWNlc3NhcnkgZm9yIFttYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxdIGJlY2F1c2VcbiAgICAgICAgICAgbWF4IHRpbWUgcGVyIGludGVydmFsIGlzIG5vdCB0aGUgc2FtZSBhcyBtYXggdGltZSBnbG9iYWxseS5cblxuICAgICAgICAgICBUaGlzIGlzIG5vdCBzbyBmb3IgW21pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF0sIHNvIHRoaXMgY2FuIHBvdGVudGlhbGx5XG4gICAgICAgICAgIGJlIHNpbXBsaWZpZWQuXG5cbiAgICAgICAgICAgUHJvYmFibHkgYSBiZXR0ZXIgY2hhbmdlIHdvdWxkIGJlIHRvIHNpbXBseSB0cmFuc2ZlciB0aGUgZXZlbnRzIHRvIHRoZVxuICAgICAgICAgICBcImZpcmVkXCIgY29sbGVjdGlvbiAoYW5kIHJlbmFtZSBpdCB0byBcImFib3V0IHRvIGZpcmVcIiksIHdoaWNoIGlzIHNvcnRlZCBieSB0aW1lLFxuICAgICAgICAgICBzbyBnZXR0aW5nIHRoZSBmaXJzdCBlbGVtZW50IGZyb20gdGhhdCBjb2xsZWN0aW9uIGlzIGVmZmljaWVudC5cbiAgICAgICAgKilcbiAgICAgICAgaWYgS2V5LmVxdWFsIChrZXkgcG9vbCAhY3VycmVudCkgd2l0aF9rZXlcbiAgICAgICAgdGhlbiBtaW5fYWxhcm1fdGltZSA6PSBUaW1lX25zLm1pbiAoYXQgcG9vbCAhY3VycmVudCkgIW1pbl9hbGFybV90aW1lO1xuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZTtcbiAgICAgICFtaW5fYWxhcm1fdGltZVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBMZXZlbCA9IHN0cnVjdFxuICAgICgqKiBGb3IgZ2l2ZW4gbGV2ZWwsIG9uZSBjYW4gYnJlYWsgdGhlIGJpdHMgaW50byBhIGtleSBpbnRvIHRocmVlIHJlZ2lvbnM6XG5cbiAgICAgICAge3ZcbiAgICAgICAgIHwgaGlnaGVyIGxldmVscyB8IHRoaXMgbGV2ZWwgfCBsb3dlciBsZXZlbHMgfFxuICAgICAgICB2fVxuXG4gICAgICAgIFwiTG93ZXIgbGV2ZWxzXCIgaXMgW2JpdHNfcGVyX3Nsb3RdIGJpdHMgd2lkZS4gIFwiVGhpcyBsZXZlbFwiIGlzIFtiaXRzXSB3aWRlLiAqKVxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7ICgqIFRoZSBbaW5kZXhdIGluIHRoZSB0aW1pbmcgd2hlZWwncyBhcnJheSBvZiBsZXZlbHMgd2hlcmUgdGhpcyBsZXZlbCBpcy4gKilcbiAgICAgICAgaW5kZXggOiBpbnRcbiAgICAgIDsgKCogSG93IG1hbnkgW2JpdHNdIHRoaXMgbGV2ZWwgaXMgcmVzcG9uc2libGUgZm9yLiAqKVxuICAgICAgICBiaXRzIDogTnVtX2tleV9iaXRzLnRcbiAgICAgIDsgKCogW3Nsb3RzX21hc2sgPSBTbG90c19tYXNrLmNyZWF0ZSB+bGV2ZWxfYml0czp0LmJpdHNdLiAqKVxuICAgICAgICBzbG90c19tYXNrIDogU2xvdHNfbWFzay50XG4gICAgICA7ICgqIFtiaXRzX3Blcl9zbG90XSBpcyBob3cgbWFueSBiaXRzIGVhY2ggc2xvdCBkaXN0aW5ndWlzaGVzLCBhbmQgaXMgdGhlIHN1bSBvZiBvZlxuICAgICAgICAgICB0aGUgW2JpdHNdIG9mIGFsbCB0aGUgbG93ZXIgbGV2ZWxzLiAqKVxuICAgICAgICBiaXRzX3Blcl9zbG90IDogTnVtX2tleV9iaXRzLnRcbiAgICAgIDsga2V5c19wZXJfc2xvdCA6IEtleS5TcGFuLnRcbiAgICAgIDsgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA6IE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sudFxuICAgICAgOyAoKiBbZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5ID0ga2V5c19wZXJfc2xvdCAqIEFycmF5Lmxlbmd0aCBzbG90cyAtIDFdICopXG4gICAgICAgIGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleSA6IEtleS5TcGFuLnRcbiAgICAgIDsgKCogW2xlbmd0aF0gaXMgdGhlIG51bWJlciBvZiBlbHRzIGN1cnJlbnRseSBpbiB0aGlzIGxldmVsLiAqKVxuICAgICAgICBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgICAgOyAoKiBBbGwgZWxlbWVudHMgYXQgdGhpcyBsZXZlbCBoYXZlIHRoZWlyIFtrZXldIHNhdGlzZnkgW21pbl9hbGxvd2VkX2tleSA8PSBrZXkgPD1cbiAgICAgICAgICAgbWF4X2FsbG93ZWRfa2V5XS4gIEFsc28sIFttaW5fYWxsb3dlZF9rZXldIGlzIGEgbXVsdGlwbGUgb2YgW2tleXNfcGVyX3Nsb3RdLiAqKVxuICAgICAgICBtdXRhYmxlIG1pbl9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7IG11dGFibGUgbWF4X2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgKCogW3Nsb3RzXSBob2xkcyB0aGUgKHBvc3NpYmx5IG51bGwpIHBvaW50ZXJzIHRvIHRoZSBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3RzXG4gICAgICAgICAgIG9mIGVsdHMuICBbQXJyYXkubGVuZ3RoIHNsb3RzID0gMSBsc2wgYml0c10uICopXG4gICAgICAgIHNsb3RzIDogKCdhIEludGVybmFsX2VsdC50IGFycmF5W0BzZXhwLm9wYXF1ZV0pXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IHNsb3QgdCB+a2V5ID0gS2V5LnNsb3Qga2V5IH5iaXRzX3Blcl9zbG90OnQuYml0c19wZXJfc2xvdCB+c2xvdHNfbWFzazp0LnNsb3RzX21hc2tcbiAgICBsZXQgbmV4dF9zbG90IHQgc2xvdCA9IFNsb3RzX21hc2submV4dF9zbG90IHQuc2xvdHNfbWFzayBzbG90XG5cbiAgICBsZXQgbWluX2tleV9pbl9zYW1lX3Nsb3QgdCB+a2V5ID1cbiAgICAgIEtleS5taW5fa2V5X2luX3NhbWVfc2xvdCBrZXkgdC5taW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgOztcblxuICAgIGxldCBjb21wdXRlX21pbl9hbGxvd2VkX2tleSB0IH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSA9XG4gICAgICAoKiBUaGlzIGNvbXB1dGF0aW9uIGVuc3VyZXMgdGhhdCBbdF0ncyBbbWluX2FsbG93ZWRfa2V5XSBpcyBhcyBsYXJnZSBhcyBwb3NzaWJsZVxuICAgICAgICAgc3ViamVjdCB0byB0aGUgY29uc3RyYWludCB0aGF0IHRoZXJlIGlzIG5vIGludGVyLWxldmVsIGdhcC4gKilcbiAgICAgIGlmIEtleS5lcXVhbCBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSBLZXkubWF4X3ZhbHVlXG4gICAgICB0aGVuIEtleS5tYXhfdmFsdWVcbiAgICAgIGVsc2UgbWluX2tleV9pbl9zYW1lX3Nsb3QgdCB+a2V5OihLZXkuc3VjYyBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSlcbiAgICA7O1xuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7IG11dGFibGUgcG9vbCA6ICdhIEludGVybmFsX2VsdC5Qb29sLnRcbiAgICA7ICgqIFttaW5fZWx0XSBpcyBlaXRoZXIgbnVsbCBvciBhbiBlbGVtZW50IHdob3NlIGtleSBpcyBbZWx0X2tleV9sb3dlcl9ib3VuZF0uICopXG4gICAgICBtdXRhYmxlIG1pbl9lbHQgOiAnYSBJbnRlcm5hbF9lbHQudFxuICAgIDsgKCogQWxsIGVsZW1lbnRzIGluIHRoZSBwcmlvcml0eSBxdWV1ZSBoYXZlIHRoZWlyIGtleSBbPj0gZWx0X2tleV9sb3dlcl9ib3VuZF0uICopXG4gICAgICBtdXRhYmxlIGVsdF9rZXlfbG93ZXJfYm91bmQgOiBLZXkudFxuICAgIDsgbGV2ZWxzIDogJ2EgTGV2ZWwudCBhcnJheVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgcHJpb3JpdHlfcXVldWUgPSAnYSB0XG5cbiAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEV4dGVybmFsX2VsdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgbnVsbCA9IEV4dGVybmFsX2VsdC5udWxsXG4gICAgbGV0IGF0IHAgdCA9IEludGVybmFsX2VsdC5hdCBwLnBvb2wgKEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcC5wb29sIHQpXG4gICAgbGV0IGtleSBwIHQgPSBJbnRlcm5hbF9lbHQua2V5IHAucG9vbCAoSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwLnBvb2wgdClcbiAgICBsZXQgdmFsdWUgcCB0ID0gSW50ZXJuYWxfZWx0LnZhbHVlIHAucG9vbCAoSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwLnBvb2wgdClcbiAgZW5kXG5cbiAgbGV0IHNleHBfb2ZfdF9pbnRlcm5hbCA9IHNleHBfb2ZfdFxuICBsZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuICBsZXQgbnVtX2xldmVscyB0ID0gQXJyYXkubGVuZ3RoIHQubGV2ZWxzXG4gIGxldCBtaW5fYWxsb3dlZF9rZXkgdCA9IExldmVsLm1pbl9hbGxvd2VkX2tleSB0LmxldmVscy4oMClcbiAgbGV0IG1heF9hbGxvd2VkX2tleSB0ID0gTGV2ZWwubWF4X2FsbG93ZWRfa2V5IHQubGV2ZWxzLihudW1fbGV2ZWxzIHQgLSAxKVxuXG4gIGxldCBpbnRlcm5hbF9pdGVyIHQgfmYgPVxuICAgIGlmIHQubGVuZ3RoID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBsZXZlbHMgPSB0LmxldmVscyBpblxuICAgICAgZm9yIGxldmVsX2luZGV4ID0gMCB0byBBcnJheS5sZW5ndGggbGV2ZWxzIC0gMSBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSBsZXZlbHMuKGxldmVsX2luZGV4KSBpblxuICAgICAgICBpZiBsZXZlbC5sZW5ndGggPiAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICAgICAgZm9yIHNsb3RfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBzbG90cyAtIDEgZG9cbiAgICAgICAgICAgIGxldCBlbHQgPSBzbG90cy4oc2xvdF9pbmRleCkgaW5cbiAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0KSB0aGVuIEludGVybmFsX2VsdC5pdGVyIHBvb2wgZWx0IH5mXG4gICAgICAgICAgZG9uZSlcbiAgICAgIGRvbmUpXG4gIDs7XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9IGludGVybmFsX2l0ZXIgdCB+ZjooZiA6IF8gRWx0LnQgLT4gdW5pdCA6PiBfIEludGVybmFsX2VsdC50IC0+IHVuaXQpXG5cbiAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHsga2V5IDogS2V5LnRcbiAgICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtaW5fYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyBtYXhfYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyBlbHRzIDogJ2EgRWx0LnQgbGlzdFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBwcmV0dHkgdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICB7IFByZXR0eS5taW5fYWxsb3dlZF9rZXkgPSBtaW5fYWxsb3dlZF9rZXkgdFxuICAgIDsgbWF4X2FsbG93ZWRfa2V5ID0gbWF4X2FsbG93ZWRfa2V5IHRcbiAgICA7IGVsdHMgPVxuICAgICAgICAobGV0IHIgPSByZWYgW10gaW5cbiAgICAgICAgIGludGVybmFsX2l0ZXIgdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICByXG4gICAgICAgICAgIDo9IHsgUHJldHR5LkVsdC5rZXkgPSBJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0XG4gICAgICAgICAgICAgIDsgdmFsdWUgPSBJbnRlcm5hbF9lbHQudmFsdWUgcG9vbCBlbHRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6OiAhcik7XG4gICAgICAgICBMaXN0LnJldiAhcilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgbWF0Y2ggIXNleHBfb2ZfdF9zdHlsZSB3aXRoXG4gICAgfCBgSW50ZXJuYWwgLT4gWyVzZXhwICh0IDogYSB0X2ludGVybmFsKV1cbiAgICB8IGBQcmV0dHkgLT4gWyVzZXhwIChwcmV0dHkgdCA6IGEgUHJldHR5LnQpXVxuICA7O1xuXG4gIGxldCBjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleSB+bGV2ZWxfYml0cyB+Yml0c19wZXJfc2xvdCA9XG4gICAgbGV0IGJpdHMgPSBOdW1fa2V5X2JpdHMuKCArICkgbGV2ZWxfYml0cyBiaXRzX3Blcl9zbG90IGluXG4gICAgaWYgTnVtX2tleV9iaXRzLmVxdWFsIGJpdHMgTnVtX2tleV9iaXRzLm1heF92YWx1ZVxuICAgIHRoZW4gS2V5LlNwYW4ubWF4X3ZhbHVlXG4gICAgZWxzZSBLZXkuU3Bhbi5wcmVkIChLZXkubnVtX2tleXMgYml0cylcbiAgOztcblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgOiB1bml0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBsZXZlbF9pbnZhcmlhbnQgbGV2ZWwgPVxuICAgICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIGxldmVsIFslc2V4cF9vZjogXyBMZXZlbC50XSAoZnVuICgpIC0+XG4gICAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIGxldmVsIGYgaW5cbiAgICAgICAgTGV2ZWwuRmllbGRzLml0ZXJcbiAgICAgICAgICB+aW5kZXg6KGNoZWNrIChmdW4gaW5kZXggLT4gYXNzZXJ0IChpbmRleCA+PSAwKSkpXG4gICAgICAgICAgfmJpdHM6KGNoZWNrIChmdW4gYml0cyAtPiBhc3NlcnQgKE51bV9rZXlfYml0cy4oID4gKSBiaXRzIE51bV9rZXlfYml0cy56ZXJvKSkpXG4gICAgICAgICAgfnNsb3RzX21hc2s6XG4gICAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAgIChbJXRlc3RfcmVzdWx0OiBTbG90c19tYXNrLnRdXG4gICAgICAgICAgICAgICAgICB+ZXhwZWN0OihTbG90c19tYXNrLmNyZWF0ZSB+bGV2ZWxfYml0czpsZXZlbC5iaXRzKSkpXG4gICAgICAgICAgfmJpdHNfcGVyX3Nsb3Q6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBiaXRzX3Blcl9zbG90IC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKE51bV9rZXlfYml0cy4oID49ICkgYml0c19wZXJfc2xvdCBOdW1fa2V5X2JpdHMuemVybykpKVxuICAgICAgICAgIH5rZXlzX3Blcl9zbG90OlxuICAgICAgICAgICAgKGNoZWNrIChmdW4ga2V5c19wZXJfc2xvdCAtPlxuICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAga2V5c19wZXJfc2xvdFxuICAgICAgICAgICAgICAgICB+ZXhwZWN0OihLZXkubnVtX2tleXMgbGV2ZWwuYml0c19wZXJfc2xvdCkpKVxuICAgICAgICAgIH5taW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay5lcXVhbFxuICAgICAgICAgICAgICAgICAgIG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICAgICAgICAgICAgICAgICAoTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay5jcmVhdGUgfmJpdHNfcGVyX3Nsb3Q6bGV2ZWwuYml0c19wZXJfc2xvdCkpKSlcbiAgICAgICAgICB+ZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5OlxuICAgICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgICAoWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgIChjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgICAgICB+bGV2ZWxfYml0czpsZXZlbC5iaXRzXG4gICAgICAgICAgICAgICAgICAgICAgIH5iaXRzX3Blcl9zbG90OmxldmVsLmJpdHNfcGVyX3Nsb3QpKSlcbiAgICAgICAgICB+bGVuZ3RoOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBsZW5ndGhcbiAgICAgICAgICAgICAgICAgPSBBcnJheS5mb2xkIGxldmVsLnNsb3RzIH5pbml0OjAgfmY6KGZ1biBuIGVsdCAtPlxuICAgICAgICAgICAgICAgICAgIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICAgICAgICAgICAgICAgICAgIHRoZW4gblxuICAgICAgICAgICAgICAgICAgIGVsc2UgbiArIEludGVybmFsX2VsdC5sZW5ndGggcG9vbCBlbHQpKSkpXG4gICAgICAgICAgfm1pbl9hbGxvd2VkX2tleTpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG1pbl9hbGxvd2VkX2tleSAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIG1pbl9hbGxvd2VkX2tleSBLZXkuemVybyk7XG4gICAgICAgICAgICAgICBpZiBLZXkuKCA8ICkgbWluX2FsbG93ZWRfa2V5IEtleS5tYXhfdmFsdWVcbiAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAgICAoS2V5LnJlbSBtaW5fYWxsb3dlZF9rZXkgbGV2ZWwua2V5c19wZXJfc2xvdClcbiAgICAgICAgICAgICAgICAgICB+ZXhwZWN0OktleS5TcGFuLnplcm8pKVxuICAgICAgICAgIH5tYXhfYWxsb3dlZF9rZXk6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBtYXhfYWxsb3dlZF9rZXkgLT5cbiAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS50XVxuICAgICAgICAgICAgICAgICBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAoS2V5LmFkZF9jbGFtcF90b19tYXhcbiAgICAgICAgICAgICAgICAgICAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgICAgICBsZXZlbC5kaWZmX21heF9taW5fYWxsb3dlZF9rZXkpKSlcbiAgICAgICAgICB+c2xvdHM6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBzbG90cyAtPlxuICAgICAgICAgICAgICAgQXJyYXkuaXRlciBzbG90cyB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdClcbiAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgSW50ZXJuYWxfZWx0LmludmFyaWFudCBwb29sIGludmFyaWFudF9hIGVsdDtcbiAgICAgICAgICAgICAgICAgICBJbnRlcm5hbF9lbHQuaXRlciBwb29sIGVsdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KSBsZXZlbC5taW5fYWxsb3dlZF9rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA8PSApIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KSBsZXZlbC5tYXhfYWxsb3dlZF9rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KSB0LmVsdF9rZXlfbG93ZXJfYm91bmQpO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChJbnRlcm5hbF9lbHQubGV2ZWxfaW5kZXggcG9vbCBlbHQgPSBsZXZlbC5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICBpbnZhcmlhbnRfYSAoSW50ZXJuYWxfZWx0LnZhbHVlIHBvb2wgZWx0KSkpKSkpKVxuICAgIGluXG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRfaW50ZXJuYWxdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChtaW5fYWxsb3dlZF9rZXkgdCkgS2V5Lnplcm8pO1xuICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChtYXhfYWxsb3dlZF9rZXkgdCkgKG1pbl9hbGxvd2VkX2tleSB0KSk7XG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+bGVuZ3RoOihjaGVjayAoZnVuIGxlbmd0aCAtPiBhc3NlcnQgKGxlbmd0aCA+PSAwKSkpXG4gICAgICAgIH5wb29sOihjaGVjayAoSW50ZXJuYWxfZWx0LlBvb2wuaW52YXJpYW50IGlnbm9yZSkpXG4gICAgICAgIH5taW5fZWx0OlxuICAgICAgICAgIChjaGVjayAoZnVuIGVsdF8gLT5cbiAgICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdF8pXG4gICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICBhc3NlcnQgKEludGVybmFsX2VsdC5pc192YWxpZCB0LnBvb2wgZWx0Xyk7XG4gICAgICAgICAgICAgICBhc3NlcnQgKEtleS5lcXVhbCB0LmVsdF9rZXlfbG93ZXJfYm91bmQgKEludGVybmFsX2VsdC5rZXkgdC5wb29sIGVsdF8pKSkpKVxuICAgICAgICB+ZWx0X2tleV9sb3dlcl9ib3VuZDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBlbHRfa2V5X2xvd2VyX2JvdW5kIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIGVsdF9rZXlfbG93ZXJfYm91bmQgKG1pbl9hbGxvd2VkX2tleSB0KSk7XG4gICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA8PSApIGVsdF9rZXlfbG93ZXJfYm91bmQgKG1heF9hbGxvd2VkX2tleSB0KSk7XG4gICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCB0Lm1pbl9lbHQpXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuZXF1YWwgZWx0X2tleV9sb3dlcl9ib3VuZCAoSW50ZXJuYWxfZWx0LmtleSB0LnBvb2wgdC5taW5fZWx0KSkpKVxuICAgICAgICB+bGV2ZWxzOlxuICAgICAgICAgIChjaGVjayAoZnVuIGxldmVscyAtPlxuICAgICAgICAgICAgIGFzc2VydCAobnVtX2xldmVscyB0ID4gMCk7XG4gICAgICAgICAgICAgQXJyYXkuaXRlcmkgbGV2ZWxzIH5mOihmdW4gbGV2ZWxfaW5kZXggbGV2ZWwgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAobGV2ZWxfaW5kZXggPSBMZXZlbC5pbmRleCBsZXZlbCk7XG4gICAgICAgICAgICAgICBsZXZlbF9pbnZhcmlhbnQgbGV2ZWw7XG4gICAgICAgICAgICAgICBpZiBsZXZlbF9pbmRleCA+IDBcbiAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICBsZXQgcHJldl9sZXZlbCA9IGxldmVscy4obGV2ZWxfaW5kZXggLSAxKSBpblxuICAgICAgICAgICAgICAgICBsZXQgbW9kdWxlIEwgPSBMZXZlbCBpblxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICAgIChMLmtleXNfcGVyX3Nsb3QgbGV2ZWwpXG4gICAgICAgICAgICAgICAgICAgfmV4cGVjdDooS2V5LlNwYW4uc3VjYyBwcmV2X2xldmVsLmRpZmZfbWF4X21pbl9hbGxvd2VkX2tleSk7XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS50XVxuICAgICAgICAgICAgICAgICAgIGxldmVsLm1pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgICAoTGV2ZWwuY29tcHV0ZV9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgICAgICAgICAgICAgICB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXk6cHJldl9sZXZlbC5tYXhfYWxsb3dlZF9rZXkpKSkpKSlcbiAgOztcblxuICAoKiogW21pbl9lbHRfXSByZXR1cm5zIFtudWxsXSBpZiBpdCBjYW4ndCBmaW5kIHRoZSBkZXNpcmVkIGVsZW1lbnQuICBXZSB3cmFwIGl0IHVwXG4gICAgICBhZnRlcndhcmRzIHRvIHJldHVybiBhbiBbb3B0aW9uXS4gKilcbiAgbGV0IG1pbl9lbHRfIHQgPVxuICAgIGlmIGlzX2VtcHR5IHRcbiAgICB0aGVuIEludGVybmFsX2VsdC5udWxsICgpXG4gICAgZWxzZSBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIHQubWluX2VsdClcbiAgICB0aGVuIHQubWluX2VsdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBtaW5fZWx0X2FscmVhZHlfZm91bmQgPSByZWYgKEludGVybmFsX2VsdC5udWxsICgpKSBpblxuICAgICAgbGV0IG1pbl9rZXlfYWxyZWFkeV9mb3VuZCA9IHJlZiBLZXkubWF4X3ZhbHVlIGluXG4gICAgICBsZXQgbGV2ZWxfaW5kZXggPSByZWYgMCBpblxuICAgICAgbGV0IG51bV9sZXZlbHMgPSBudW1fbGV2ZWxzIHQgaW5cbiAgICAgIHdoaWxlICFsZXZlbF9pbmRleCA8IG51bV9sZXZlbHMgZG9cbiAgICAgICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKCFsZXZlbF9pbmRleCkgaW5cbiAgICAgICAgaWYgS2V5LiggPiApIChMZXZlbC5taW5fYWxsb3dlZF9rZXkgbGV2ZWwpICFtaW5fa2V5X2FscmVhZHlfZm91bmRcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIFdlIGRvbid0IG5lZWQgdG8gY29uc2lkZXIgYW55IG1vcmUgbGV2ZWxzLiAgUXVpdCB0aGUgbG9vcC4gKilcbiAgICAgICAgICBsZXZlbF9pbmRleCA6PSBudW1fbGV2ZWxzXG4gICAgICAgIGVsc2UgaWYgbGV2ZWwubGVuZ3RoID0gMFxuICAgICAgICB0aGVuIGluY3IgbGV2ZWxfaW5kZXhcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogTG9vayBpbiBbbGV2ZWxdLiAqKVxuICAgICAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICAgICAgbGV0IHNsb3RfbWluX2tleSA9XG4gICAgICAgICAgICByZWZcbiAgICAgICAgICAgICAgKExldmVsLm1pbl9rZXlfaW5fc2FtZV9zbG90XG4gICAgICAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgICAgICAgIH5rZXk6KEtleS5tYXggbGV2ZWwubWluX2FsbG93ZWRfa2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgc2xvdCA9IHJlZiAoTGV2ZWwuc2xvdCBsZXZlbCB+a2V5OiFzbG90X21pbl9rZXkpIGluXG4gICAgICAgICAgKCogRmluZCB0aGUgZmlyc3Qgbm9uZW1wdHkgc2xvdCB3aXRoIGEgc21hbGwgZW5vdWdoIFtzbG90X21pbl9rZXldLiAqKVxuICAgICAgICAgIHdoaWxlXG4gICAgICAgICAgICBJbnRlcm5hbF9lbHQuaXNfbnVsbCBzbG90cy4oIXNsb3QpXG4gICAgICAgICAgICAmJiBLZXkuKCA8ICkgIXNsb3RfbWluX2tleSAhbWluX2tleV9hbHJlYWR5X2ZvdW5kXG4gICAgICAgICAgZG9cbiAgICAgICAgICAgIHNsb3QgOj0gTGV2ZWwubmV4dF9zbG90IGxldmVsICFzbG90O1xuICAgICAgICAgICAgc2xvdF9taW5fa2V5IDo9IEtleS5hZGQgIXNsb3RfbWluX2tleSBsZXZlbC5rZXlzX3Blcl9zbG90XG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBsZXQgZmlyc3QgPSBzbG90cy4oIXNsb3QpIGluXG4gICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBmaXJzdClcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICgqIFZpc2l0IGFsbCBvZiB0aGUgZWx0cyBpbiB0aGlzIHNsb3QgYW5kIGZpbmQgb25lIHdpdGggbWluaW11bSBrZXkuICopXG4gICAgICAgICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgICAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICAgICAgICBsZXQgY3VycmVudF9rZXkgPSBJbnRlcm5hbF9lbHQua2V5IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgICAgICAgaWYgS2V5LiggPD0gKSBjdXJyZW50X2tleSAhbWluX2tleV9hbHJlYWR5X2ZvdW5kXG4gICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgIG1pbl9lbHRfYWxyZWFkeV9mb3VuZCA6PSAhY3VycmVudDtcbiAgICAgICAgICAgICAgICBtaW5fa2V5X2FscmVhZHlfZm91bmQgOj0gY3VycmVudF9rZXkpO1xuICAgICAgICAgICAgICBsZXQgbmV4dCA9IEludGVybmFsX2VsdC5uZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgICAgICAgKCogSWYgWyFsZXZlbF9pbmRleCA9IDBdIHRoZW4gYWxsIGVsdHMgaW4gdGhpcyBzbG90IGhhdmUgdGhlIHNhbWUgW2tleV0sXG4gICAgICAgICAgICAgICAgIGkuZS4gWyFzbG90X21pbl9rZXldLiAgU28sIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sgYW55IGVsZW1lbnRzIGFmdGVyXG4gICAgICAgICAgICAgICAgIFtmaXJzdF0uICBUaGlzIGlzIGEgdXNlZnVsIHNob3J0IGN1dCBpbiB0aGUgY29tbW9uIGNhc2UgdGhhdCB0aGVyZSBhcmVcbiAgICAgICAgICAgICAgICAgbXVsdGlwbGUgZWxlbWVudHMgaW4gdGhlIHNhbWUgbWluIHNsb3QgaW4gbGV2ZWwgMC4gKilcbiAgICAgICAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHx8ICFsZXZlbF9pbmRleCA9IDBcbiAgICAgICAgICAgICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgICAgICAgICAgICBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgICAgICAgZG9uZSk7XG4gICAgICAgICAgKCogRmluaXNoZWQgbG9va2luZyBpbiBbbGV2ZWxdLiAgTW92ZSB1cCB0byB0aGUgbmV4dCBsZXZlbC4gKilcbiAgICAgICAgICBpbmNyIGxldmVsX2luZGV4KVxuICAgICAgZG9uZTtcbiAgICAgIHQubWluX2VsdCA8LSAhbWluX2VsdF9hbHJlYWR5X2ZvdW5kO1xuICAgICAgdC5lbHRfa2V5X2xvd2VyX2JvdW5kIDwtICFtaW5fa2V5X2FscmVhZHlfZm91bmQ7XG4gICAgICB0Lm1pbl9lbHQpXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9hZGRfZWx0X2tleV9vdXRfb2ZfYm91bmRzIHQga2V5ID1cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJQcmlvcml0eV9xdWV1ZS5hZGRfZWx0IGtleSBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgICAoa2V5IDogS2V5LnQpXG4gICAgICAgICAgKG1pbl9hbGxvd2VkX2tleSB0IDogS2V5LnQpXG4gICAgICAgICAgKG1heF9hbGxvd2VkX2tleSB0IDogS2V5LnQpXG4gICAgICAgICAgfnByaW9yaXR5X3F1ZXVlOih0IDogXyB0KV1cbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9sZXZlbF9ib3VuZHMga2V5IGxldmVsID1cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJQcmlvcml0eV9xdWV1ZS5hZGRfZWx0IGtleSBvdXQgb2YgbGV2ZWwgYm91bmRzXCIgKGtleSA6IEtleS50KSAobGV2ZWwgOiBfIExldmVsLnQpXVxuICA7O1xuXG4gIGxldCBhZGRfZWx0IHQgZWx0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBrZXkgPSBJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0IGluXG4gICAgaWYgbm90IChLZXkuKCA+PSApIGtleSAobWluX2FsbG93ZWRfa2V5IHQpICYmIEtleS4oIDw9ICkga2V5IChtYXhfYWxsb3dlZF9rZXkgdCkpXG4gICAgdGhlbiByYWlzZV9hZGRfZWx0X2tleV9vdXRfb2ZfYm91bmRzIHQga2V5O1xuICAgICgqIEZpbmQgdGhlIGxvd2VzdCBsZXZlbCB0aGF0IHdpbGwgaG9sZCBbZWx0XS4gKilcbiAgICBsZXQgbGV2ZWxfaW5kZXggPVxuICAgICAgbGV0IGxldmVsX2luZGV4ID0gcmVmIDAgaW5cbiAgICAgIHdoaWxlIEtleS4oID4gKSBrZXkgKExldmVsLm1heF9hbGxvd2VkX2tleSB0LmxldmVscy4oIWxldmVsX2luZGV4KSkgZG9cbiAgICAgICAgaW5jciBsZXZlbF9pbmRleFxuICAgICAgZG9uZTtcbiAgICAgICFsZXZlbF9pbmRleFxuICAgIGluXG4gICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKGxldmVsX2luZGV4KSBpblxuICAgIGlmIG5vdCAoS2V5LiggPj0gKSBrZXkgbGV2ZWwubWluX2FsbG93ZWRfa2V5ICYmIEtleS4oIDw9ICkga2V5IGxldmVsLm1heF9hbGxvd2VkX2tleSlcbiAgICB0aGVuIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9sZXZlbF9ib3VuZHMga2V5IGxldmVsO1xuICAgIGxldmVsLmxlbmd0aCA8LSBsZXZlbC5sZW5ndGggKyAxO1xuICAgIEludGVybmFsX2VsdC5zZXRfbGV2ZWxfaW5kZXggcG9vbCBlbHQgbGV2ZWxfaW5kZXg7XG4gICAgbGV0IHNsb3QgPSBMZXZlbC5zbG90IGxldmVsIH5rZXkgaW5cbiAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgIGxldCBmaXJzdCA9IHNsb3RzLihzbG90KSBpblxuICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZmlyc3QpXG4gICAgdGhlbiBJbnRlcm5hbF9lbHQuaW5zZXJ0X2F0X2VuZCBwb29sIGZpcnN0IH50b19hZGQ6ZWx0XG4gICAgZWxzZSAoXG4gICAgICBzbG90cy4oc2xvdCkgPC0gZWx0O1xuICAgICAgSW50ZXJuYWxfZWx0LmxpbmtfdG9fc2VsZiBwb29sIGVsdClcbiAgOztcblxuICBsZXQgaW50ZXJuYWxfYWRkX2VsdCB0IGVsdCA9XG4gICAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgdC5wb29sIGVsdCBpblxuICAgIGlmIEtleS4oIDwgKSBrZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kXG4gICAgdGhlbiAoXG4gICAgICB0Lm1pbl9lbHQgPC0gZWx0O1xuICAgICAgdC5lbHRfa2V5X2xvd2VyX2JvdW5kIDwtIGtleSk7XG4gICAgYWRkX2VsdCB0IGVsdDtcbiAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX2dvdF9pbnZhbGlkX2tleSB0IGtleSA9XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLmFkZF9hdF9pbnRlcnZhbF9udW0gZ290IGludmFsaWQgaW50ZXJ2YWwgbnVtXCJcbiAgICAgICAgICB+aW50ZXJ2YWxfbnVtOihrZXkgOiBLZXkudClcbiAgICAgICAgICB+bWluX2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtOihtaW5fYWxsb3dlZF9rZXkgdCA6IEtleS50KVxuICAgICAgICAgIH5tYXhfYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW06KG1heF9hbGxvd2VkX2tleSB0IDogS2V5LnQpXVxuICA7O1xuXG4gIGxldCBlbnN1cmVfdmFsaWRfa2V5IHQgfmtleSA9XG4gICAgaWYgS2V5LiggPCApIGtleSAobWluX2FsbG93ZWRfa2V5IHQpIHx8IEtleS4oID4gKSBrZXkgKG1heF9hbGxvd2VkX2tleSB0KVxuICAgIHRoZW4gcmFpc2VfZ290X2ludmFsaWRfa2V5IHQga2V5XG4gIDs7XG5cbiAgbGV0IGludGVybmFsX2FkZCB0IH5rZXkgfmF0IHZhbHVlID1cbiAgICBlbnN1cmVfdmFsaWRfa2V5IHQgfmtleTtcbiAgICBpZiBJbnRlcm5hbF9lbHQuUG9vbC5pc19mdWxsIHQucG9vbCB0aGVuIHQucG9vbCA8LSBJbnRlcm5hbF9lbHQuUG9vbC5ncm93IHQucG9vbDtcbiAgICBsZXQgZWx0ID0gSW50ZXJuYWxfZWx0LmNyZWF0ZSB0LnBvb2wgfmtleSB+YXQgfnZhbHVlIH5sZXZlbF9pbmRleDooLTEpIGluXG4gICAgaW50ZXJuYWxfYWRkX2VsdCB0IGVsdDtcbiAgICBlbHRcbiAgOztcblxuICAoKiogW3JlbW92ZV9vcl9yZV9hZGRfZWx0c10gdmlzaXRzIGVhY2ggZWxlbWVudCBpbiB0aGUgY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0XG4gICAgICBbZmlyc3RdLiAgSWYgdGhlIGVsZW1lbnQncyBrZXkgaXMgWz49IHRfbWluX2FsbG93ZWRfa2V5XSwgdGhlbiBpdCBhZGRzIHRoZSBlbGVtZW50XG4gICAgICBiYWNrIGF0IGEgbG93ZXIgbGV2ZWwuICBJZiBub3QsIHRoZW4gaXQgY2FsbHMgW2hhbmRsZV9yZW1vdmVkXSBhbmQgW2ZyZWVdcyB0aGVcbiAgICAgIGVsZW1lbnQuICopXG4gIGxldCByZW1vdmVfb3JfcmVfYWRkX2VsdHMgdCAobGV2ZWwgOiBfIExldmVsLnQpIGZpcnN0IH50X21pbl9hbGxvd2VkX2tleSB+aGFuZGxlX3JlbW92ZWRcbiAgICA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAoKiBXZSBleHRyYWN0IFtuZXh0XSBmcm9tIFtjdXJyZW50XSBmaXJzdCwgYmVjYXVzZSB3ZSB3aWxsIG1vZGlmeSBvciBbZnJlZV1cbiAgICAgICAgIFtjdXJyZW50XSBiZWZvcmUgY29udGludWluZyB0aGUgbG9vcC4gKilcbiAgICAgIGxldCBuZXh0ID0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgbGV2ZWwubGVuZ3RoIDwtIGxldmVsLmxlbmd0aCAtIDE7XG4gICAgICBpZiBLZXkuKCA+PSApIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgIWN1cnJlbnQpIHRfbWluX2FsbG93ZWRfa2V5XG4gICAgICB0aGVuIGFkZF9lbHQgdCAhY3VycmVudFxuICAgICAgZWxzZSAoXG4gICAgICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgICAgICAgaGFuZGxlX3JlbW92ZWQgKEludGVybmFsX2VsdC50b19leHRlcm5hbCAhY3VycmVudCk7XG4gICAgICAgIEludGVybmFsX2VsdC5mcmVlIHBvb2wgIWN1cnJlbnQpO1xuICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICBkb25lXG4gIDs7XG5cbiAgKCoqIFtpbmNyZWFzZV9sZXZlbF9taW5fYWxsb3dlZF9rZXldIGluY3JlYXNlcyB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgW2xldmVsXSB0byBhc1xuICAgICAgbGFyZ2UgYSB2YWx1ZSBhcyBwb3NzaWJsZSwgYnV0IG5vIG1vcmUgdGhhbiBbbWF4X2xldmVsX21pbl9hbGxvd2VkX2tleV0uXG4gICAgICBbdF9taW5fYWxsb3dlZF9rZXldIGlzIHRoZSBtaW5pbXVtIGFsbG93ZWQga2V5IGZvciB0aGUgZW50aXJlIHRpbWluZyB3aGVlbC4gIEFzXG4gICAgICBlbGVtZW50cyBhcmUgZW5jb3VudGVyZWQsIHRoZXkgYXJlIHJlbW92ZWQgZnJvbSB0aGUgdGltaW5nIHdoZWVsIGlmIHRoZWlyIGtleSBpc1xuICAgICAgc21hbGxlciB0aGFuIFt0X21pbl9hbGxvd2VkX2tleV0sIG9yIGFkZGVkIGF0IGEgbG93ZXIgbGV2ZWwgaWYgbm90LiAqKVxuICBsZXQgaW5jcmVhc2VfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgIHRcbiAgICAgICAgKGxldmVsIDogXyBMZXZlbC50KVxuICAgICAgICB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgfnRfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgIH5oYW5kbGVfcmVtb3ZlZFxuICAgID1cbiAgICBsZXQgZGVzaXJlZF9taW5fYWxsb3dlZF9rZXkgPVxuICAgICAgTGV2ZWwuY29tcHV0ZV9taW5fYWxsb3dlZF9rZXkgbGV2ZWwgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5XG4gICAgaW5cbiAgICAoKiBXZSByZXF1aXJlIHRoYXQgW21vZCBsZXZlbC5taW5fYWxsb3dlZF9rZXkgbGV2ZWwua2V5c19wZXJfc2xvdCA9IDBdLiAgU28sXG4gICAgICAgd2Ugc3RhcnQgW2xldmVsX21pbl9hbGxvd2VkX2tleV0gd2hlcmUgdGhhdCBpcyB0cnVlLCBhbmQgdGhlbiBpbmNyZWFzZSBpdCBieVxuICAgICAgIFtrZXlzX3Blcl9zbG90XSBlYWNoIGl0ZXJhdGlvbiBvZiB0aGUgbG9vcC4gKilcbiAgICBsZXQgbGV2ZWxfbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgIExldmVsLm1pbl9rZXlfaW5fc2FtZV9zbG90XG4gICAgICAgIGxldmVsXG4gICAgICAgIH5rZXk6XG4gICAgICAgICAgKEtleS5taW5cbiAgICAgICAgICAgICBkZXNpcmVkX21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgIChLZXkubWF4IGxldmVsLm1pbl9hbGxvd2VkX2tleSB0LmVsdF9rZXlfbG93ZXJfYm91bmQpKVxuICAgIGluXG4gICAgbGV0IGxldmVsX21pbl9hbGxvd2VkX2tleSA9IHJlZiBsZXZlbF9taW5fYWxsb3dlZF9rZXkgaW5cbiAgICBsZXQgc2xvdCA9IHJlZiAoTGV2ZWwuc2xvdCBsZXZlbCB+a2V5OiFsZXZlbF9taW5fYWxsb3dlZF9rZXkpIGluXG4gICAgbGV0IGtleXNfcGVyX3Nsb3QgPSBsZXZlbC5rZXlzX3Blcl9zbG90IGluXG4gICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICB3aGlsZSBLZXkuKCA8ICkgIWxldmVsX21pbl9hbGxvd2VkX2tleSBkZXNpcmVkX21pbl9hbGxvd2VkX2tleSBkb1xuICAgICAgaWYgbGV2ZWwubGVuZ3RoID0gMFxuICAgICAgdGhlblxuICAgICAgICAoKiBJZiBubyBlbGVtZW50cyByZW1haW4gYXQgdGhpcyBsZXZlbCwgd2UgY2FuIGp1c3Qgc2V0IFttaW5fYWxsb3dlZF9rZXldIHRvIHRoZVxuICAgICAgICAgICBkZXNpcmVkIHZhbHVlLiAqKVxuICAgICAgICBsZXZlbF9taW5fYWxsb3dlZF9rZXkgOj0gZGVzaXJlZF9taW5fYWxsb3dlZF9rZXlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZmlyc3QgPSBzbG90cy4oIXNsb3QpIGluXG4gICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZmlyc3QpXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHNsb3RzLighc2xvdCkgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKCk7XG4gICAgICAgICAgcmVtb3ZlX29yX3JlX2FkZF9lbHRzIHQgbGV2ZWwgZmlyc3QgfnRfbWluX2FsbG93ZWRfa2V5IH5oYW5kbGVfcmVtb3ZlZCk7XG4gICAgICAgIHNsb3QgOj0gTGV2ZWwubmV4dF9zbG90IGxldmVsICFzbG90O1xuICAgICAgICBsZXZlbF9taW5fYWxsb3dlZF9rZXkgOj0gS2V5LmFkZF9jbGFtcF90b19tYXggIWxldmVsX21pbl9hbGxvd2VkX2tleSBrZXlzX3Blcl9zbG90KVxuICAgIGRvbmU7XG4gICAgbGV2ZWwubWluX2FsbG93ZWRfa2V5IDwtIGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5O1xuICAgIGxldmVsLm1heF9hbGxvd2VkX2tleVxuICAgIDwtIEtleS5hZGRfY2xhbXBfdG9fbWF4IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IGxldmVsLmRpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICA7O1xuXG4gIG1vZHVsZSBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlXG4gICAgICB8IE1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkXG4gIGVuZFxuXG4gIGxldCBpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXkgdCB+a2V5IH5oYW5kbGVfcmVtb3ZlZCA6IEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQudCA9XG4gICAgaWYgS2V5LiggPD0gKSBrZXkgKG1pbl9hbGxvd2VkX2tleSB0KVxuICAgIHRoZW4gTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlXG4gICAgZWxzZSAoXG4gICAgICAoKiBXZSBpbmNyZWFzZSB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgbGV2ZWxzIGluIG9yZGVyIHRvIHJlc3RvcmUgdGhlIGludmFyaWFudFxuICAgICAgICAgdGhhdCB0aGV5IGhhdmUgYXMgbGFyZ2UgYXMgcG9zc2libGUgYSBbbWluX2FsbG93ZWRfa2V5XSwgd2hpbGUgbGVhdmluZyBubyBnYXBzXG4gICAgICAgICBpbiBrZXlzLiAqKVxuICAgICAgbGV0IGxldmVsX2luZGV4ID0gcmVmIDAgaW5cbiAgICAgIGxldCByZXN1bHQgPSByZWYgSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdC5NYXhfYWxsb3dlZF9rZXlfbWF5YmVfY2hhbmdlZCBpblxuICAgICAgbGV0IHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5ID0gcmVmIChLZXkucHJlZCBrZXkpIGluXG4gICAgICBsZXQgbGV2ZWxzID0gdC5sZXZlbHMgaW5cbiAgICAgIGxldCBudW1fbGV2ZWxzID0gbnVtX2xldmVscyB0IGluXG4gICAgICB3aGlsZSAhbGV2ZWxfaW5kZXggPCBudW1fbGV2ZWxzIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IGxldmVscy4oIWxldmVsX2luZGV4KSBpblxuICAgICAgICBsZXQgbWluX2FsbG93ZWRfa2V5X2JlZm9yZSA9IGxldmVsLm1pbl9hbGxvd2VkX2tleSBpblxuICAgICAgICBpbmNyZWFzZV9sZXZlbF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICB0XG4gICAgICAgICAgbGV2ZWxcbiAgICAgICAgICB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXk6IXByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgICAgfnRfbWluX2FsbG93ZWRfa2V5OmtleVxuICAgICAgICAgIH5oYW5kbGVfcmVtb3ZlZDtcbiAgICAgICAgaWYgS2V5LmVxdWFsIChMZXZlbC5taW5fYWxsb3dlZF9rZXkgbGV2ZWwpIG1pbl9hbGxvd2VkX2tleV9iZWZvcmVcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogVGhpcyBsZXZlbCBkaWQgbm90IHNoaWZ0LiAgRG9uJ3Qgc2hpZnQgYW55IGhpZ2hlciBsZXZlbHMuICopXG4gICAgICAgICAgbGV2ZWxfaW5kZXggOj0gbnVtX2xldmVscztcbiAgICAgICAgICByZXN1bHQgOj0gTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBMZXZlbCBbbGV2ZWxfaW5kZXhdIHNoaWZ0ZWQuICBDb25zaWRlciBzaGlmdGluZyBoaWdoZXIgbGV2ZWxzLiAqKVxuICAgICAgICAgIGxldmVsX2luZGV4IDo9ICFsZXZlbF9pbmRleCArIDE7XG4gICAgICAgICAgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgOj0gTGV2ZWwubWF4X2FsbG93ZWRfa2V5IGxldmVsKVxuICAgICAgZG9uZTtcbiAgICAgIGlmIEtleS4oID4gKSBrZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogV2UgaGF2ZSByZW1vdmVkIFt0Lm1pbl9lbHRdIG9yIGl0IHdhcyBhbHJlYWR5IG51bGwsIHNvIGp1c3Qgc2V0IGl0IHRvXG4gICAgICAgICAgIG51bGwuICopXG4gICAgICAgIHQubWluX2VsdCA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKTtcbiAgICAgICAgdC5lbHRfa2V5X2xvd2VyX2JvdW5kIDwtIG1pbl9hbGxvd2VkX2tleSB0KTtcbiAgICAgICFyZXN1bHQpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSA/Y2FwYWNpdHkgP2xldmVsX2JpdHMgKCkgPVxuICAgIGxldCBsZXZlbF9iaXRzID1cbiAgICAgIG1hdGNoIGxldmVsX2JpdHMgd2l0aFxuICAgICAgfCBTb21lIGwgLT4gbFxuICAgICAgfCBOb25lIC0+IExldmVsX2JpdHMuZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IF8sIF8sIGxldmVscyA9XG4gICAgICBMaXN0LmZvbGRpXG4gICAgICAgIGxldmVsX2JpdHNcbiAgICAgICAgfmluaXQ6KE51bV9rZXlfYml0cy56ZXJvLCBLZXkuemVybywgW10pXG4gICAgICAgIH5mOlxuICAgICAgICAgIChmdW5cbiAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAoYml0c19wZXJfc2xvdCwgbWF4X2xldmVsX21pbl9hbGxvd2VkX2tleSwgbGV2ZWxzKVxuICAgICAgICAgICAgKGxldmVsX2JpdHMgOiBOdW1fa2V5X2JpdHMudClcbiAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIGxldCBrZXlzX3Blcl9zbG90ID0gS2V5Lm51bV9rZXlzIGJpdHNfcGVyX3Nsb3QgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleSA9XG4gICAgICAgICAgICAgICAgY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rZXkgfmxldmVsX2JpdHMgfmJpdHNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPSBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLmNyZWF0ZSB+Yml0c19wZXJfc2xvdCBpblxuICAgICAgICAgICAgICBsZXQgbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgICAgICAgICAgICBLZXkubWluX2tleV9pbl9zYW1lX3Nsb3QgbWF4X2xldmVsX21pbl9hbGxvd2VkX2tleSBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBtYXhfYWxsb3dlZF9rZXkgPVxuICAgICAgICAgICAgICAgIEtleS5hZGRfY2xhbXBfdG9fbWF4IG1pbl9hbGxvd2VkX2tleSBkaWZmX21heF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxldmVsID1cbiAgICAgICAgICAgICAgICB7IExldmVsLmluZGV4XG4gICAgICAgICAgICAgICAgOyBiaXRzID0gbGV2ZWxfYml0c1xuICAgICAgICAgICAgICAgIDsgc2xvdHNfbWFzayA9IFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzXG4gICAgICAgICAgICAgICAgOyBiaXRzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAgOyBrZXlzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAgOyBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgICAgICAgICAgICAgOyBkaWZmX21heF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICA7IGxlbmd0aCA9IDBcbiAgICAgICAgICAgICAgICA7IG1pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgIDsgbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgOyBzbG90cyA9XG4gICAgICAgICAgICAgICAgICAgIEFycmF5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5sZW46KEludDYzLnRvX2ludF9leG4gKE51bV9rZXlfYml0cy5wb3cyIGxldmVsX2JpdHMpKVxuICAgICAgICAgICAgICAgICAgICAgIChJbnRlcm5hbF9lbHQubnVsbCAoKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggTnVtX2tleV9iaXRzLiggKyApIGxldmVsX2JpdHMgYml0c19wZXJfc2xvdFxuICAgICAgICAgICAgICAsIEtleS5zdWNjX2NsYW1wX3RvX21heCBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgLCBsZXZlbCA6OiBsZXZlbHMgKSlcbiAgICBpblxuICAgIHsgbGVuZ3RoID0gMFxuICAgIDsgcG9vbCA9IEludGVybmFsX2VsdC5Qb29sLmNyZWF0ZSA/Y2FwYWNpdHkgKClcbiAgICA7IG1pbl9lbHQgPSBJbnRlcm5hbF9lbHQubnVsbCAoKVxuICAgIDsgZWx0X2tleV9sb3dlcl9ib3VuZCA9IEtleS56ZXJvXG4gICAgOyBsZXZlbHMgPSBBcnJheS5vZl9saXN0X3JldiBsZXZlbHNcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1lbSB0IGVsdCA9IEludGVybmFsX2VsdC5leHRlcm5hbF9pc192YWxpZCB0LnBvb2wgZWx0XG5cbiAgbGV0IGludGVybmFsX3JlbW92ZSB0IGVsdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBpZiBJbnRlcm5hbF9lbHQuZXF1YWwgZWx0IHQubWluX2VsdFxuICAgIHRoZW5cbiAgICAgIHQubWluX2VsdCA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKVxuICAgICgqIFdlIGtlZXAgW3QuZWx0X2xvd2VyX2JvdW5kXSBzaW5jZSBpdCBpcyB2YWxpZCBldmVuIHRob3VnaCBbdC5taW5fZWx0XSBpcyBiZWluZ1xuICAgICAgIHJlbW92ZWQuICopO1xuICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4oSW50ZXJuYWxfZWx0LmxldmVsX2luZGV4IHBvb2wgZWx0KSBpblxuICAgIGxldmVsLmxlbmd0aCA8LSBsZXZlbC5sZW5ndGggLSAxO1xuICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgbGV0IHNsb3QgPSBMZXZlbC5zbG90IGxldmVsIH5rZXk6KEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpIGluXG4gICAgbGV0IGZpcnN0ID0gc2xvdHMuKHNsb3QpIGluXG4gICAgaWYgcGh5c19lcXVhbCBlbHQgKEludGVybmFsX2VsdC5uZXh0IHBvb2wgZWx0KVxuICAgIHRoZW4gKCogW2VsdF0gaXMgdGhlIG9ubHkgZWxlbWVudCBpbiB0aGUgc2xvdCAqKVxuICAgICAgc2xvdHMuKHNsb3QpIDwtIEludGVybmFsX2VsdC5udWxsICgpXG4gICAgZWxzZSAoXG4gICAgICBpZiBwaHlzX2VxdWFsIGVsdCBmaXJzdCB0aGVuIHNsb3RzLihzbG90KSA8LSBJbnRlcm5hbF9lbHQubmV4dCBwb29sIGVsdDtcbiAgICAgIEludGVybmFsX2VsdC51bmxpbmsgcG9vbCBlbHQpXG4gIDs7XG5cbiAgbGV0IHJlbW92ZSB0IGVsdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQgZWx0ID0gSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwb29sIGVsdCBpblxuICAgIGludGVybmFsX3JlbW92ZSB0IGVsdDtcbiAgICBJbnRlcm5hbF9lbHQuZnJlZSBwb29sIGVsdFxuICA7O1xuXG4gIGxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgfmhhbmRsZV9maXJlZCB+a2V5IH5ub3cgPVxuICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLigwKSBpblxuICAgIGlmIGxldmVsLmxlbmd0aCA+IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBzbG90ID0gTGV2ZWwuc2xvdCBsZXZlbCB+a2V5IGluXG4gICAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBmaXJzdCA9IHJlZiBzbG90cy4oc2xvdCkgaW5cbiAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgIWZpcnN0KVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBjdXJyZW50ID0gcmVmICFmaXJzdCBpblxuICAgICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgICBsZXQgZWx0ID0gIWN1cnJlbnQgaW5cbiAgICAgICAgICBsZXQgbmV4dCA9IEludGVybmFsX2VsdC5uZXh0IHBvb2wgZWx0IGluXG4gICAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0ICFmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0O1xuICAgICAgICAgIGlmIFRpbWVfbnMuKCA8PSApIChJbnRlcm5hbF9lbHQuYXQgcG9vbCBlbHQpIG5vd1xuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgaGFuZGxlX2ZpcmVkIChJbnRlcm5hbF9lbHQudG9fZXh0ZXJuYWwgZWx0KTtcbiAgICAgICAgICAgIGludGVybmFsX3JlbW92ZSB0IGVsdDtcbiAgICAgICAgICAgIEludGVybmFsX2VsdC5mcmVlIHBvb2wgZWx0O1xuICAgICAgICAgICAgKCogV2UgcmVjb21wdXRlIFtmaXJzdF0gYmVjYXVzZSBbaW50ZXJuYWxfcmVtb3ZlXSBtYXkgaGF2ZSBjaGFuZ2VkIGl0LiAqKVxuICAgICAgICAgICAgZmlyc3QgOj0gc2xvdHMuKHNsb3QpKVxuICAgICAgICBkb25lKSlcbiAgOztcblxuICBsZXQgY2hhbmdlIHQgZWx0IH5rZXkgfmF0ID1cbiAgICBlbnN1cmVfdmFsaWRfa2V5IHQgfmtleTtcbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBlbHQgPSBJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHBvb2wgZWx0IGluXG4gICAgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0O1xuICAgIEludGVybmFsX2VsdC5zZXRfa2V5IHBvb2wgZWx0IGtleTtcbiAgICBJbnRlcm5hbF9lbHQuc2V0X2F0IHBvb2wgZWx0IGF0O1xuICAgIGludGVybmFsX2FkZF9lbHQgdCBlbHRcbiAgOztcblxuICBsZXQgY2xlYXIgdCA9XG4gICAgaWYgbm90IChpc19lbXB0eSB0KVxuICAgIHRoZW4gKFxuICAgICAgdC5sZW5ndGggPC0gMDtcbiAgICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgICBsZXQgZnJlZV9lbHQgZWx0ID0gSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCBlbHQgaW5cbiAgICAgIGxldCBsZXZlbHMgPSB0LmxldmVscyBpblxuICAgICAgZm9yIGxldmVsX2luZGV4ID0gMCB0byBBcnJheS5sZW5ndGggbGV2ZWxzIC0gMSBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSBsZXZlbHMuKGxldmVsX2luZGV4KSBpblxuICAgICAgICBpZiBsZXZlbC5sZW5ndGggPiAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldmVsLmxlbmd0aCA8LSAwO1xuICAgICAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICAgICAgZm9yIHNsb3RfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBzbG90cyAtIDEgZG9cbiAgICAgICAgICAgIGxldCBlbHQgPSBzbG90cy4oc2xvdF9pbmRleCkgaW5cbiAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0KVxuICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgIEludGVybmFsX2VsdC5pdGVyIHBvb2wgZWx0IH5mOmZyZWVfZWx0O1xuICAgICAgICAgICAgICBzbG90cy4oc2xvdF9pbmRleCkgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKCkpXG4gICAgICAgICAgZG9uZSlcbiAgICAgIGRvbmUpXG4gIDs7XG5lbmRcblxubW9kdWxlIEludGVybmFsX2VsdCA9IFByaW9yaXR5X3F1ZXVlLkludGVybmFsX2VsdFxubW9kdWxlIEtleSA9IFByaW9yaXR5X3F1ZXVlLktleVxubW9kdWxlIEludGVydmFsX251bSA9IEtleVxuXG5sZXQgbWluX2ludGVydmFsX251bSA9IEludGVydmFsX251bS56ZXJvXG5cbigqIEFsbCB0aW1lIGZyb20gdGhlIGVwb2NoIG9ud2FyZHMgaXMgYnJva2VuIGludG8gaGFsZi1vcGVuIGludGVydmFscyBvZiBzaXplXG4gICBbQ29uZmlnLmFsYXJtX3ByZWNpc2lvbiBjb25maWddLiAgVGhlIGludGVydmFscyBhcmUgbnVtYmVyZWQgc3RhcnRpbmcgYXQgemVybywgYW5kIGFcbiAgIHRpbWUncyBpbnRlcnZhbCBudW1iZXIgc2VydmVzIGFzIGl0cyBrZXkgaW4gW3ByaW9yaXR5X3F1ZXVlXS4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgY29uZmlnIDogQ29uZmlnLnRcbiAgOyBzdGFydCA6IFRpbWVfbnMudFxuICA7ICgqIFttYXhfaW50ZXJ2YWxfbnVtXSBpcyB0aGUgaW50ZXJ2YWwgbnVtYmVyIG9mIFttYXhfdGltZV0uICopXG4gICAgbWF4X2ludGVydmFsX251bSA6IEludGVydmFsX251bS50XG4gIDsgbXV0YWJsZSBub3cgOiBUaW1lX25zLnRcbiAgOyBtdXRhYmxlIG5vd19pbnRlcnZhbF9udW1fc3RhcnQgOiBUaW1lX25zLnRcbiAgOyBtdXRhYmxlIG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgOiBUaW1lX25zLnRcbiAgOyBwcmlvcml0eV9xdWV1ZSA6ICdhIFByaW9yaXR5X3F1ZXVlLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG50eXBlICdhIHRpbWluZ193aGVlbCA9ICdhIHRcbnR5cGUgJ2EgdF9ub3cgPSAnYSB0XG5cbmxldCBzZXhwX29mX3Rfbm93IF8gdCA9IFslc2V4cCAodC5ub3cgOiBUaW1lX25zLnQpXVxubGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gQ29uZmlnLmFsYXJtX3ByZWNpc2lvbiB0LmNvbmZpZ1xuXG5tb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgUHJpb3JpdHlfcXVldWUuRWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgbnVsbCA9IFByaW9yaXR5X3F1ZXVlLkVsdC5udWxsXG4gIGxldCBhdCB0dyB0ID0gUHJpb3JpdHlfcXVldWUuRWx0LmF0IHR3LnByaW9yaXR5X3F1ZXVlIHRcbiAgbGV0IHZhbHVlIHR3IHQgPSBQcmlvcml0eV9xdWV1ZS5FbHQudmFsdWUgdHcucHJpb3JpdHlfcXVldWUgdFxuICBsZXQgaW50ZXJ2YWxfbnVtIHR3IHQgPSBQcmlvcml0eV9xdWV1ZS5FbHQua2V5IHR3LnByaW9yaXR5X3F1ZXVlIHRcbmVuZFxuXG5sZXQgc2V4cF9vZl90X2ludGVybmFsID0gc2V4cF9vZl90XG5sZXQgaXRlciB0IH5mID0gUHJpb3JpdHlfcXVldWUuaXRlciB0LnByaW9yaXR5X3F1ZXVlIH5mXG5cbm1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFsYXJtID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgYXQgOiBUaW1lX25zLnRcbiAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCBjcmVhdGUgdCBhbGFybSA9IHsgYXQgPSBBbGFybS5hdCB0IGFsYXJtOyB2YWx1ZSA9IEFsYXJtLnZhbHVlIHQgYWxhcm0gfVxuICAgIGxldCBjb21wYXJlIHQxIHQyID0gVGltZV9ucy5jb21wYXJlIChhdCB0MSkgKGF0IHQyKVxuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgY29uZmlnIDogQ29uZmlnLnRcbiAgICA7IHN0YXJ0IDogVGltZV9ucy50XG4gICAgOyBtYXhfaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnRcbiAgICA7IG5vdyA6IFRpbWVfbnMudFxuICAgIDsgYWxhcm1zIDogJ2EgQWxhcm0udCBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBwcmV0dHlcbiAgICAgICh7IGNvbmZpZ1xuICAgICAgIDsgc3RhcnRcbiAgICAgICA7IG1heF9pbnRlcnZhbF9udW1cbiAgICAgICA7IG5vd1xuICAgICAgIDsgbm93X2ludGVydmFsX251bV9zdGFydCA9IF9cbiAgICAgICA7IG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPSBfXG4gICAgICAgOyBwcmlvcml0eV9xdWV1ZSA9IF9cbiAgICAgICB9IGFzIHQpXG4gID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiByIDo9IFByZXR0eS5BbGFybS5jcmVhdGUgdCBhIDo6ICFyKTtcbiAgbGV0IGFsYXJtcyA9IExpc3Quc29ydCAhciB+Y29tcGFyZTpQcmV0dHkuQWxhcm0uY29tcGFyZSBpblxuICB7IFByZXR0eS5jb25maWc7IHN0YXJ0OyBtYXhfaW50ZXJ2YWxfbnVtOyBub3c7IGFsYXJtcyB9XG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgbWF0Y2ggIXNleHBfb2ZfdF9zdHlsZSB3aXRoXG4gIHwgYEludGVybmFsIC0+IHNleHBfb2ZfdF9pbnRlcm5hbCBzZXhwX29mX2EgdFxuICB8IGBQcmV0dHkgLT4gWyVzZXhwIChwcmV0dHkgdCA6IGEgUHJldHR5LnQpXVxuOztcblxubGV0IGxlbmd0aCB0ID0gUHJpb3JpdHlfcXVldWUubGVuZ3RoIHQucHJpb3JpdHlfcXVldWVcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldFtAY29sZF0gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF9leG5fb2ZfZW1wdHlfdGltaW5nX3doZWVsIHQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biBvZiBlbXB0eSB0aW1pbmcgd2hlZWxcIiB+dGltaW5nX3doZWVsOih0IDogXyB0KV1cbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF93aXRoX2FsbF9hbGFybXNfaW5fbWF4X2ludGVydmFsIHQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biB3aXRoIGFsbCBhbGFybXMgaW4gbWF4IGludGVydmFsXCJcbiAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldXG47O1xuXG5sZXQgcG9vbCB0ID0gUHJpb3JpdHlfcXVldWUucG9vbCB0LnByaW9yaXR5X3F1ZXVlXG5cbmxldCBpbnRlcnZhbF9udW1faW50ZXJuYWwgfnRpbWUgfmFsYXJtX3ByZWNpc2lvbiA9XG4gIEludGVydmFsX251bS5vZl9pbnQ2MyAoQWxhcm1fcHJlY2lzaW9uLmludGVydmFsX251bSBhbGFybV9wcmVjaXNpb24gdGltZSlcbjs7XG5cbmxldCBpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgdGltZSA9XG4gIGludGVydmFsX251bV9pbnRlcm5hbCB+dGltZSB+YWxhcm1fcHJlY2lzaW9uOnQuY29uZmlnLmFsYXJtX3ByZWNpc2lvblxuOztcblxubGV0IGludGVydmFsX251bSB0IHRpbWUgPVxuICBpZiBUaW1lX25zLiggPCApIHRpbWUgbWluX3RpbWVcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5pbnRlcnZhbF9udW0gZ290IHRpbWUgdG9vIGZhciBpbiB0aGUgcGFzdFwiICh0aW1lIDogVGltZV9ucy50KV07XG4gIGludGVydmFsX251bV91bmNoZWNrZWQgdCB0aW1lXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IGludGVydmFsX251bSA9XG4gIEFsYXJtX3ByZWNpc2lvbi5pbnRlcnZhbF9udW1fc3RhcnRcbiAgICB0LmNvbmZpZy5hbGFybV9wcmVjaXNpb25cbiAgICAoaW50ZXJ2YWxfbnVtIHw+IEludGVydmFsX251bS50b19pbnQ2Mylcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fc21hbGwgaW50ZXJ2YWxfbnVtID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwuaW50ZXJ2YWxfbnVtX3N0YXJ0IGdvdCB0b28gc21hbGwgaW50ZXJ2YWxfbnVtXCJcbiAgICAgICAgKGludGVydmFsX251bSA6IEludGVydmFsX251bS50KVxuICAgICAgICAobWluX2ludGVydmFsX251bSA6IEludGVydmFsX251bS50KV1cbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fbGFyZ2UgdCBpbnRlcnZhbF9udW0gPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5pbnRlcnZhbF9udW1fc3RhcnQgZ290IHRvbyBsYXJnZSBpbnRlcnZhbF9udW1cIlxuICAgICAgICAoaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXG4gICAgICAgICh0Lm1heF9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udCldXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgaW50ZXJ2YWxfbnVtID1cbiAgaWYgSW50ZXJ2YWxfbnVtLiggPCApIGludGVydmFsX251bSBtaW5faW50ZXJ2YWxfbnVtXG4gIHRoZW4gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fc21hbGwgaW50ZXJ2YWxfbnVtO1xuICBpZiBJbnRlcnZhbF9udW0uKCA+ICkgaW50ZXJ2YWxfbnVtIHQubWF4X2ludGVydmFsX251bVxuICB0aGVuIHJhaXNlX2ludGVydmFsX251bV9zdGFydF9nb3RfdG9vX2xhcmdlIHQgaW50ZXJ2YWxfbnVtO1xuICBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgaW50ZXJ2YWxfbnVtXG47O1xuXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCB0IGtleSA9XG4gICgqIFtpbnRlcnZhbF9udW1fc3RhcnQgdCBrZXldIGlzIHRoZSBrZXkgY29ycmVzcG9uZGluZyB0byB0aGUgc3RhcnQgb2YgdGhlIHRpbWUgaW50ZXJ2YWxcbiAgICAgaG9sZGluZyB0aGUgZmlyc3QgYWxhcm0gaW4gW3RdLiAgQWR2YW5jaW5nIHRvIHRoYXQgd291bGQgbm90IGJlIGVub3VnaCwgc2luY2UgdGhlXG4gICAgIGFsYXJtcyBpbiB0aGF0IGludGVydmFsIGRvbid0IGZpcmUgdW50aWwgdGhlIGNsb2NrIGlzIGFkdmFuY2VkIHRvIHRoZSBzdGFydCBvZiB0aGVcbiAgICAgbmV4dCBpbnRlcnZhbC4gIFNvLCB3ZSB1c2UgW3N1Y2Mga2V5XSB0byBhZHZhbmNlIHRvIHRoZSBzdGFydCBvZiB0aGUgbmV4dFxuICAgICBpbnRlcnZhbC4gKilcbiAgaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgKEtleS5zdWNjIGtleSlcbjs7XG5cbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0IHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCBrZXkgPSBJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdCBpblxuICAgIGlmIEludGVydmFsX251bS5lcXVhbCBrZXkgdC5tYXhfaW50ZXJ2YWxfbnVtXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSBTb21lIChuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIHQga2V5KSlcbjs7XG5cbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF9leG5fb2ZfZW1wdHlfdGltaW5nX3doZWVsIHQ7XG4gIGxldCBrZXkgPSBJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdCBpblxuICBpZiBJbnRlcnZhbF9udW0uZXF1YWwga2V5IHQubWF4X2ludGVydmFsX251bVxuICB0aGVuIHJhaXNlX25leHRfYWxhcm1fZmlyZXNfYXRfd2l0aF9hbGxfYWxhcm1zX2luX21heF9pbnRlcnZhbCB0O1xuICBuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIHQga2V5XG47O1xuXG5sZXQgY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQgPVxuICBsZXQgbWF4X2FsbG93ZWRfa2V5ID0gUHJpb3JpdHlfcXVldWUubWF4X2FsbG93ZWRfa2V5IHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJ2YWxfbnVtLiggPj0gKSBtYXhfYWxsb3dlZF9rZXkgdC5tYXhfaW50ZXJ2YWxfbnVtXG4gIHRoZW4gbWF4X3RpbWVcbiAgZWxzZVxuICAgIFRpbWVfbnMuYWRkXG4gICAgICAoaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IG1heF9hbGxvd2VkX2tleSlcbiAgICAgIChUaW1lX25zLlNwYW4uKCAtICkgKGFsYXJtX3ByZWNpc2lvbiB0KSBUaW1lX25zLlNwYW4ubmFub3NlY29uZClcbjs7XG5cbmxldCBub3dfaW50ZXJ2YWxfbnVtIHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fYWxsb3dlZF9rZXkgdC5wcmlvcml0eV9xdWV1ZVxubGV0IG1pbl9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bSA9IG5vd19pbnRlcnZhbF9udW1cbmxldCBtYXhfYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW0gdCA9IGludGVydmFsX251bSB0IChtYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpXG5sZXQgaW50ZXJ2YWxfc3RhcnQgdCB0aW1lID0gaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IChpbnRlcnZhbF9udW0gdCB0aW1lKVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+Y29uZmlnOihjaGVjayBDb25maWcuaW52YXJpYW50KVxuICAgICAgfnN0YXJ0OlxuICAgICAgICAoY2hlY2sgKGZ1biBzdGFydCAtPlxuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA+PSApIHN0YXJ0IG1pbl90aW1lKTtcbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPD0gKSBzdGFydCBtYXhfdGltZSkpKVxuICAgICAgfm1heF9pbnRlcnZhbF9udW06XG4gICAgICAgIChjaGVjayAoZnVuIG1heF9pbnRlcnZhbF9udW0gLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogSW50ZXJ2YWxfbnVtLnRdXG4gICAgICAgICAgICAgfmV4cGVjdDptYXhfaW50ZXJ2YWxfbnVtXG4gICAgICAgICAgICAgKGludGVydmFsX251bSB0IG1heF90aW1lKTtcbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogSW50ZXJ2YWxfbnVtLnRdXG4gICAgICAgICAgICAgfmV4cGVjdDptYXhfaW50ZXJ2YWxfbnVtXG4gICAgICAgICAgICAgKGludGVydmFsX251bSB0IChpbnRlcnZhbF9udW1fc3RhcnQgdCBtYXhfaW50ZXJ2YWxfbnVtKSkpKVxuICAgICAgfm5vdzpcbiAgICAgICAgKGNoZWNrIChmdW4gbm93IC0+XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oID49ICkgbm93IHQuc3RhcnQpO1xuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIG5vdyBtYXhfdGltZSk7XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgSW50ZXJ2YWxfbnVtLmVxdWFsXG4gICAgICAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgdC5ub3cpXG4gICAgICAgICAgICAgICAoUHJpb3JpdHlfcXVldWUubWluX2FsbG93ZWRfa2V5IHQucHJpb3JpdHlfcXVldWUpKSkpXG4gICAgICB+bm93X2ludGVydmFsX251bV9zdGFydDpcbiAgICAgICAgKGNoZWNrIChmdW4gbm93X2ludGVydmFsX251bV9zdGFydCAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdXG4gICAgICAgICAgICAgbm93X2ludGVydmFsX251bV9zdGFydFxuICAgICAgICAgICAgIH5leHBlY3Q6KGludGVydmFsX251bV9zdGFydCB0IChub3dfaW50ZXJ2YWxfbnVtIHQpKSkpXG4gICAgICB+bWF4X2FsbG93ZWRfYWxhcm1fdGltZTpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2FsbG93ZWRfYWxhcm1fdGltZSAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdXG4gICAgICAgICAgICAgbWF4X2FsbG93ZWRfYWxhcm1fdGltZVxuICAgICAgICAgICAgIH5leHBlY3Q6KGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0KSkpXG4gICAgICB+cHJpb3JpdHlfcXVldWU6KGNoZWNrIChQcmlvcml0eV9xdWV1ZS5pbnZhcmlhbnQgaW52YXJpYW50X2EpKTtcbiAgICBpdGVyIHQgfmY6KGZ1biBhbGFybSAtPlxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgSW50ZXJ2YWxfbnVtLmVxdWFsXG4gICAgICAgICAgKEFsYXJtLmludGVydmFsX251bSB0IGFsYXJtKVxuICAgICAgICAgIChpbnRlcnZhbF9udW0gdCAoQWxhcm0uYXQgdCBhbGFybSkpKTtcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIFRpbWVfbnMuKCA+PSApIChpbnRlcnZhbF9zdGFydCB0IChBbGFybS5hdCB0IGFsYXJtKSkgKGludGVydmFsX3N0YXJ0IHQgKG5vdyB0KSkpO1xuICAgICAgYXNzZXJ0IChUaW1lX25zLiggPiApIChBbGFybS5hdCB0IGFsYXJtKSAoVGltZV9ucy5zdWIgKG5vdyB0KSAoYWxhcm1fcHJlY2lzaW9uIHQpKSkpKVxuOztcblxubGV0IGRlYnVnID0gZmFsc2VcblxubGV0IGFkdmFuY2VfY2xvY2sgdCB+dG9fIH5oYW5kbGVfZmlyZWQgPVxuICBpZiBUaW1lX25zLiggPiApIHRvXyAobm93IHQpXG4gIHRoZW4gKFxuICAgIHQubm93IDwtIHRvXztcbiAgICBsZXQga2V5ID0gaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IHRvXyBpblxuICAgIHQubm93X2ludGVydmFsX251bV9zdGFydCA8LSBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQga2V5O1xuICAgIG1hdGNoXG4gICAgICBQcmlvcml0eV9xdWV1ZS5pbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgdC5wcmlvcml0eV9xdWV1ZVxuICAgICAgICB+a2V5XG4gICAgICAgIH5oYW5kbGVfcmVtb3ZlZDpoYW5kbGVfZmlyZWRcbiAgICB3aXRoXG4gICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2UgLT5cbiAgICAgIGlmIGRlYnVnXG4gICAgICB0aGVuXG4gICAgICAgIGFzc2VydCAoVGltZV9ucy4oID0gKSB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgKGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0KSlcbiAgICB8IE1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkIC0+XG4gICAgICB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPC0gY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpXG47O1xuXG5sZXQgY3JlYXRlIH5jb25maWcgfnN0YXJ0ID1cbiAgaWYgVGltZV9ucy4oIDwgKSBzdGFydCBUaW1lX25zLmVwb2NoXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJUaW1pbmdfd2hlZWwuY3JlYXRlIGdvdCBzdGFydCBiZWZvcmUgdGhlIGVwb2NoXCIgKHN0YXJ0IDogVGltZV9ucy50KV07XG4gIGxldCB0ID1cbiAgICB7IGNvbmZpZ1xuICAgIDsgc3RhcnRcbiAgICA7IG1heF9pbnRlcnZhbF9udW0gPVxuICAgICAgICBpbnRlcnZhbF9udW1faW50ZXJuYWwgfnRpbWU6bWF4X3RpbWUgfmFsYXJtX3ByZWNpc2lvbjpjb25maWcuYWxhcm1fcHJlY2lzaW9uXG4gICAgOyBub3cgPSBUaW1lX25zLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICgqIHNldCBieSBbYWR2YW5jZV9jbG9ja10gYmVsb3cgKilcbiAgICA7IG5vd19pbnRlcnZhbF9udW1fc3RhcnQgPVxuICAgICAgICBUaW1lX25zLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICgqIHNldCBieSBbYWR2YW5jZV9jbG9ja10gYmVsb3cgKilcbiAgICA7IG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPSBtYXhfdGltZSAoKiBzZXQgYnkgW2FkdmFuY2VfY2xvY2tdIGJlbG93ICopXG4gICAgOyBwcmlvcml0eV9xdWV1ZSA9XG4gICAgICAgIFByaW9yaXR5X3F1ZXVlLmNyZWF0ZSA/Y2FwYWNpdHk6Y29uZmlnLmNhcGFjaXR5IH5sZXZlbF9iaXRzOmNvbmZpZy5sZXZlbF9iaXRzICgpXG4gICAgfVxuICBpblxuICB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPC0gY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQ7XG4gIGFkdmFuY2VfY2xvY2sgdCB+dG9fOnN0YXJ0IH5oYW5kbGVfZmlyZWQ6KGZ1biBfIC0+IGFzc2VydCBmYWxzZSk7XG4gIHRcbjs7XG5cbmxldCBhZGRfYXRfaW50ZXJ2YWxfbnVtIHQgfmF0IHZhbHVlID1cbiAgSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsXG4gICAgKFByaW9yaXR5X3F1ZXVlLmludGVybmFsX2FkZFxuICAgICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICAgICB+a2V5OmF0XG4gICAgICAgfmF0OihpbnRlcnZhbF9udW1fc3RhcnQgdCBhdClcbiAgICAgICB2YWx1ZSlcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfdGhhdF9mYXJfaW5fdGhlX2Z1dHVyZSB0IGF0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwgY2Fubm90IHNjaGVkdWxlIGFsYXJtIHRoYXQgZmFyIGluIHRoZSBmdXR1cmVcIlxuICAgICAgICAoYXQgOiBUaW1lX25zLnQpXG4gICAgICAgIH5tYXhfYWxsb3dlZF9hbGFybV90aW1lOih0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgOiBUaW1lX25zLnQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9iZWZvcmVfc3RhcnRfb2ZfY3VycmVudF9pbnRlcnZhbCB0IGF0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwgY2Fubm90IHNjaGVkdWxlIGFsYXJtIGJlZm9yZSBzdGFydCBvZiBjdXJyZW50IGludGVydmFsXCJcbiAgICAgICAgKGF0IDogVGltZV9ucy50KVxuICAgICAgICB+bm93X2ludGVydmFsX251bV9zdGFydDoodC5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IDogVGltZV9ucy50KV1cbjs7XG5cbmxldCBlbnN1cmVfY2FuX3NjaGVkdWxlX2FsYXJtIHQgfmF0ID1cbiAgaWYgVGltZV9ucy4oID4gKSBhdCB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdGhlbiByYWlzZV90aGF0X2Zhcl9pbl90aGVfZnV0dXJlIHQgYXQ7XG4gIGlmIFRpbWVfbnMuKCA8ICkgYXQgdC5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0XG4gIHRoZW4gcmFpc2VfYmVmb3JlX3N0YXJ0X29mX2N1cnJlbnRfaW50ZXJ2YWwgdCBhdFxuOztcblxubGV0IGFkZCB0IH5hdCB2YWx1ZSA9XG4gIGVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0gdCB+YXQ7XG4gIEludGVybmFsX2VsdC50b19leHRlcm5hbFxuICAgIChQcmlvcml0eV9xdWV1ZS5pbnRlcm5hbF9hZGRcbiAgICAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgICAgfmtleTooaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IGF0KVxuICAgICAgIH5hdFxuICAgICAgIHZhbHVlKVxuOztcblxubGV0IHJlbW92ZSB0IGFsYXJtID0gUHJpb3JpdHlfcXVldWUucmVtb3ZlIHQucHJpb3JpdHlfcXVldWUgYWxhcm1cbmxldCBjbGVhciB0ID0gUHJpb3JpdHlfcXVldWUuY2xlYXIgdC5wcmlvcml0eV9xdWV1ZVxubGV0IG1lbSB0IGFsYXJtID0gUHJpb3JpdHlfcXVldWUubWVtIHQucHJpb3JpdHlfcXVldWUgYWxhcm1cblxubGV0IHJlc2NoZWR1bGVfZ2VuIHQgYWxhcm0gfmtleSB+YXQgPVxuICBpZiBub3QgKG1lbSB0IGFsYXJtKVxuICB0aGVuIGZhaWx3aXRoIFwiVGltaW5nX3doZWVsIGNhbm5vdCByZXNjaGVkdWxlIGFsYXJtIG5vdCBpbiB0aW1pbmcgd2hlZWxcIjtcbiAgZW5zdXJlX2Nhbl9zY2hlZHVsZV9hbGFybSB0IH5hdDtcbiAgUHJpb3JpdHlfcXVldWUuY2hhbmdlIHQucHJpb3JpdHlfcXVldWUgYWxhcm0gfmtleSB+YXRcbjs7XG5cbmxldCByZXNjaGVkdWxlIHQgYWxhcm0gfmF0ID0gcmVzY2hlZHVsZV9nZW4gdCBhbGFybSB+a2V5OihpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgYXQpIH5hdFxuXG5sZXQgcmVzY2hlZHVsZV9hdF9pbnRlcnZhbF9udW0gdCBhbGFybSB+YXQgPVxuICByZXNjaGVkdWxlX2dlbiB0IGFsYXJtIH5rZXk6YXQgfmF0OihpbnRlcnZhbF9udW1fc3RhcnQgdCBhdClcbjs7XG5cbmxldCBtaW5fYWxhcm1faW50ZXJ2YWxfbnVtIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiBOb25lIGVsc2UgU29tZSAoSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHQpXG47O1xuXG5sZXQgbWluX2FsYXJtX2ludGVydmFsX251bV9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLm1pbl9hbGFybV9pbnRlcnZhbF9udW1fZXhuIG9mIGVtcHR5IHRpbWluZ193aGVlbFwiXG4gICAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldXG4gIGVsc2UgSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHRcbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0ID1cbiAgbGV0IHBvb2wgPSBwb29sIHQgaW5cbiAgSW50ZXJuYWxfZWx0Lm1heF9hbGFybV90aW1lIHBvb2wgZWx0IH53aXRoX2tleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbjs7XG5cbmxldCBtaW5fYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0ID1cbiAgbGV0IHBvb2wgPSBwb29sIHQgaW5cbiAgSW50ZXJuYWxfZWx0Lm1pbl9hbGFybV90aW1lIHBvb2wgZWx0IH53aXRoX2tleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIE5vbmUgZWxzZSBTb21lIChtYXhfYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0KVxuOztcblxubGV0IG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKG1pbl9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQpXG47O1xuXG5sZXQgbWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biBvZiBlbXB0eSB0aW1pbmcgd2hlZWxcIlxuICAgICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXTtcbiAgbWF4X2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdFxuOztcblxubGV0IG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gb2YgZW1wdHkgdGltaW5nIHdoZWVsXCJcbiAgICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV07XG4gIG1pbl9hbGFybV90aW1lX2luX2xpc3QgdCBlbHRcbjs7XG5cbmxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgfmhhbmRsZV9maXJlZCA9XG4gIFByaW9yaXR5X3F1ZXVlLmZpcmVfcGFzdF9hbGFybXNcbiAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgfmhhbmRsZV9maXJlZFxuICAgIH5rZXk6KG5vd19pbnRlcnZhbF9udW0gdClcbiAgICB+bm93OnQubm93XG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgTnVtX2tleV9iaXRzID0gTnVtX2tleV9iaXRzXG5cbiAgbGV0IGludGVydmFsX251bV9pbnRlcm5hbCA9IGludGVydmFsX251bV9pbnRlcm5hbFxuICBsZXQgbWF4X3RpbWUgPSBtYXhfdGltZVxuZW5kXG4iLCJtb2R1bGUgSW5yaWFfc3lzID0gU3lzXG5vcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbm9wZW4gUG9seVxuXG5sZXQgc2VjID0gVGltZV9ucy5TcGFuLm9mX3NlY1xubGV0IGNvbmNhdCA9IFN0cmluZy5jb25jYXRcblxubW9kdWxlIEVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRpbWVfbnMuU3BhblxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gVGltZV9ucy5TcGFuLnZhbGlkYXRlX25vbl9uZWdhdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRpbWVfbnMuU3BhblxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gVGltZV9ucy5TcGFuLnZhbGlkYXRlX25vbl9uZWdhdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgICBpbmNsdWRlIEludFxuXG4gICAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICAgIGVuZClcblxuICBsZXQgZGVmYXVsdCA9IGNyZWF0ZV9leG4gKDEgbHNsIDE2KVxuICBsZXQgZXF1YWwgKHQxIDogdCkgdDIgPSB0MSA9IHQyXG5lbmRcblxubW9kdWxlIE1heF9udW1fdGhyZWFkcyA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gIGVuZClcblxubW9kdWxlIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBJbnQudmFsaWRhdGVfcG9zaXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgRHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IHN0cnVjdFxuICBtb2R1bGUgSG93X3RvX2R1bXAgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBEZWZhdWx0XG4gICAgICB8IENhbGxfYWJvcnRcbiAgICAgIHwgQ2FsbF9nY29yZVxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuXG4gIHR5cGUgd2F0Y2ggPVxuICAgIHsgZHVtcF9pZl9kZWxheWVkX2J5IDogVGltZV9ucy5TcGFuLnRcbiAgICA7IGhvd190b19kdW1wIDogSG93X3RvX2R1bXAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF1cblxuICB0eXBlIHQgPVxuICAgIHwgV2F0Y2ggb2Ygd2F0Y2hcbiAgICB8IERvX25vdF93YXRjaFxuICBbQEBkZXJpdmluZyBzZXhwXVxuZW5kXG5cbm1vZHVsZSBEZWJ1Z190YWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBbGxcbiAgICAgIHwgQ2xvY2tcbiAgICAgIHwgRmRcbiAgICAgIHwgRmlsZV9kZXNjcl93YXRjaGVyXG4gICAgICB8IEZpbmFsaXplcnNcbiAgICAgIHwgSW50ZXJydXB0b3JcbiAgICAgIHwgTW9uaXRvclxuICAgICAgfCBNb25pdG9yX3NlbmRfZXhuXG4gICAgICB8IFBhcmFsbGVsXG4gICAgICB8IFJlYWRlclxuICAgICAgfCBTY2hlZHVsZXJcbiAgICAgIHwgU2h1dGRvd25cbiAgICAgIHwgVGhyZWFkX3Bvb2xcbiAgICAgIHwgVGhyZWFkX3NhZmVcbiAgICAgIHwgV3JpdGVyXG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBsZXQgbGlzdCA9XG4gICAgWyBBbGxcbiAgICA7IENsb2NrXG4gICAgOyBGZFxuICAgIDsgRmlsZV9kZXNjcl93YXRjaGVyXG4gICAgOyBGaW5hbGl6ZXJzXG4gICAgOyBJbnRlcnJ1cHRvclxuICAgIDsgTW9uaXRvclxuICAgIDsgTW9uaXRvcl9zZW5kX2V4blxuICAgIDsgUGFyYWxsZWxcbiAgICA7IFJlYWRlclxuICAgIDsgU2NoZWR1bGVyXG4gICAgOyBTaHV0ZG93blxuICAgIDsgVGhyZWFkX3Bvb2xcbiAgICA7IFRocmVhZF9zYWZlXG4gICAgOyBXcml0ZXJcbiAgICBdXG4gIDs7XG5lbmRcblxubW9kdWxlIEZpbGVfZGVzY3Jfd2F0Y2hlciA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEVwb2xsX2lmX3RpbWVyZmRcbiAgICAgIHwgRXBvbGxcbiAgICAgIHwgU2VsZWN0XG4gICAgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBsZXQgbGlzdCA9IFsgRXBvbGxfaWZfdGltZXJmZDsgRXBvbGw7IFNlbGVjdCBdXG5lbmRcblxudHlwZSB0ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgOiBUaW1lX25zLlNwYW4udCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBjaGVja19pbnZhcmlhbnRzIDogYm9vbCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgOiBib29sIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgOiBEdW1wX2NvcmVfb25fam9iX2RlbGF5LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA6IEVwb2xsX21heF9yZWFkeV9ldmVudHMudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgOiBGaWxlX2Rlc2NyX3dhdGNoZXIudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA6IE1heF9pbnRlcl9jeWNsZV90aW1lb3V0LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzIDogTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV90aHJlYWRzIDogTWF4X251bV90aHJlYWRzLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50IG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BzZXhwLm9wdGlvbl1cbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA6IE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIDogRGVidWdfdGFnLnQgbGlzdCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyByZWNvcmRfYmFja3RyYWNlcyA6IGJvb2wgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA6IFRocmVhZF9wb29sX2NwdV9hZmZpbml0eS50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHRpbWluZ193aGVlbF9jb25maWcgOiBUaW1pbmdfd2hlZWwuQ29uZmlnLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF1cblxubGV0IGVtcHR5ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBOb25lXG4gIDsgY2hlY2tfaW52YXJpYW50cyA9IE5vbmVcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBOb25lXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IE5vbmVcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gTm9uZVxuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IE5vbmVcbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IE5vbmVcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBOb25lXG4gIDsgbWF4X251bV90aHJlYWRzID0gTm9uZVxuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gTm9uZVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gTm9uZVxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IE5vbmVcbiAgOyByZWNvcmRfYmFja3RyYWNlcyA9IE5vbmVcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gTm9uZVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9IE5vbmVcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gTm9uZVxuICB9XG47O1xuXG5sZXQgY3JlYXRlXG4gICAgICA/YWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gICAgICA/Y2hlY2tfaW52YXJpYW50c1xuICAgICAgP2RldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxuICAgICAgP2R1bXBfY29yZV9vbl9qb2JfZGVsYXlcbiAgICAgID9lcG9sbF9tYXhfcmVhZHlfZXZlbnRzXG4gICAgICA/ZmlsZV9kZXNjcl93YXRjaGVyXG4gICAgICA/bWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgICAgID9tYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbiAgICAgID9tYXhfbnVtX3RocmVhZHNcbiAgICAgID9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICAgICAgP21pbl9pbnRlcl9jeWNsZV90aW1lb3V0XG4gICAgICA/cHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG4gICAgICA/cmVjb3JkX2JhY2t0cmFjZXNcbiAgICAgID9yZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gICAgICA/dGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG4gICAgICA/dGltaW5nX3doZWVsX2NvbmZpZ1xuICAgICAgKClcbiAgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IGNoZWNrX2ludmFyaWFudHNcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWRcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5XG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlclxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG4gIDsgbWF4X251bV90aHJlYWRzXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dFxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuICA7IHJlY29yZF9iYWNrdHJhY2VzXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eVxuICA7IHRpbWluZ193aGVlbF9jb25maWdcbiAgfVxuOztcblxubGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ19mb3Jfd29yZF9zaXplICh3b3JkX3NpemUgOiBXb3JkX3NpemUudCkgPVxuICBsZXQgbW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA9IFRpbWluZ193aGVlbC5BbGFybV9wcmVjaXNpb24gaW5cbiAgbGV0IGFsYXJtX3ByZWNpc2lvbiwgbGV2ZWxfYml0cyA9XG4gICAgbWF0Y2ggd29yZF9zaXplIHdpdGhcbiAgICB8IFczMiAtPiBBbGFybV9wcmVjaXNpb24uYWJvdXRfb25lX21pbGxpc2Vjb25kLCBbIDEwOyAxMDsgOSBdXG4gICAgfCBXNjQgLT4gQWxhcm1fcHJlY2lzaW9uLihkaXYgYWJvdXRfb25lX21pbGxpc2Vjb25kIH5wb3cyOjMpLCBbIDE0OyAxNTsgOTsgNiBdXG4gIGluXG4gIFRpbWluZ193aGVlbC5Db25maWcuY3JlYXRlXG4gICAgfmFsYXJtX3ByZWNpc2lvblxuICAgIH5sZXZlbF9iaXRzOihUaW1pbmdfd2hlZWwuTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGxldmVsX2JpdHMpXG4gICAgKClcbjs7XG5cbmxldCBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcgPVxuICBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWdfZm9yX3dvcmRfc2l6ZSBXb3JkX3NpemUud29yZF9zaXplXG47O1xuXG5sZXQgZGVmYXVsdCA9XG4gICgqIEZvciBbZmlsZV9kZXNjcl93YXRjaGVyXSBhbmQgW21heF9udW1fb3Blbl9maWxlX2Rlc2Nyc10gd2UgY2hvb3NlIHRoZSBkZWZhdWx0IGZvciB0aGVcbiAgICAgY29tbW9uIGNhc2UgdGhhdCBbZXBvbGxdIGlzIGF2YWlsYWJsZS4gIFRoZXJlIGlzIHNvbWUgYWRkaXRpb25hbCBjb2RlIGluXG4gICAgIFtBc3luY191bml4LkNvbmZpZ10gdGhhdCBjaGVja3Mgd2hldGhlciBbZXBvbGxdIGlzIGFjdHVhbGx5IGF2YWlsYWJsZSwgYW5kIGlmIG5vdCxcbiAgICAgdXNlcyBbc2VsZWN0XSBhbmQgYSBzbWFsbGVyIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3JzLiAqKVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgKHNlYyA2MC4pXG4gIDsgY2hlY2tfaW52YXJpYW50cyA9IFNvbWUgZmFsc2VcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBTb21lIGZhbHNlXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IFNvbWUgRG9fbm90X3dhdGNoXG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IFNvbWUgKEVwb2xsX21heF9yZWFkeV9ldmVudHMuY3JlYXRlX2V4biAyNTYpXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyID0gU29tZSBFcG9sbF9pZl90aW1lcmZkXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIChNYXhfaW50ZXJfY3ljbGVfdGltZW91dC5jcmVhdGVfZXhuIChzZWMgMC4wNSkpXG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gU29tZSBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMuZGVmYXVsdFxuICA7IG1heF9udW1fdGhyZWFkcyA9IFNvbWUgKE1heF9udW1fdGhyZWFkcy5jcmVhdGVfZXhuIDUwKVxuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID1cbiAgICAgIFNvbWUgKE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLmNyZWF0ZV9leG4gNTAwKVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSAoTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQuY3JlYXRlX2V4biAoc2VjIDAuKSlcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSBTb21lIFtdXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBTb21lIGZhbHNlXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgKHNlYyAxLilcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSBTb21lIEluaGVyaXRcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gU29tZSBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWdcbiAgfVxuOztcblxubGV0IGV4YW1wbGUgPVxuICB7IGRlZmF1bHQgd2l0aFxuICAgIHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IFNvbWUgRGVidWdfdGFnLlsgRmQ7IFNjaGVkdWxlciBdXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID1cbiAgICAgIFNvbWVcbiAgICAgICAgKENwdXNldFxuICAgICAgICAgICAoWyAwOyAxOyAyIF0gfD4gSW50LlNldC5vZl9saXN0IHw+IFRocmVhZF9wb29sX2NwdV9hZmZpbml0eS5DcHVzZXQuY3JlYXRlX2V4bikpXG4gIH1cbjs7XG5cbmxldCBlbnZpcm9ubWVudF92YXJpYWJsZSA9IFwiQVNZTkNfQ09ORklHXCJcblxubGV0IGZpZWxkX2Rlc2NyaXB0aW9ucyAoKSA6IHN0cmluZyA9XG4gIGxldCBmaWVsZCB0b19zZXhwIGRlc2NyaXB0aW9uIGFjIGZpZWxkID1cbiAgICAoRmllbGQubmFtZSBmaWVsZCwgdG9fc2V4cCAoT3B0aW9uLnZhbHVlX2V4biAoRmllbGQuZ2V0IGZpZWxkIGRlZmF1bHQpKSwgZGVzY3JpcHRpb24pXG4gICAgOjogYWNcbiAgaW5cbiAgbGV0IGZpZWxkcyA9XG4gICAgRmllbGRzLmZvbGRcbiAgICAgIH5pbml0OltdXG4gICAgICB+YWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF1cbiAgICAgICAgICAgWyB7fFxuICBCeSBkZWZhdWx0LCBBc3luYyB3aWxsIHNlbmQgYW4gZXhjZXB0aW9uIHRvIHRoZSB0b3BsZXZlbCBtb25pdG9yXG4gIGlmIGl0IGRldGVjdHMgdGhhdCB0aGUgdGhyZWFkIHBvb2wgaXMgc3R1Y2sgZm9yIGxvbmdlciB0aGFuIHRoaXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmNoZWNrX2ludmFyaWFudHM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgICAgIFsge3xcbiAgSWYgdHJ1ZSwgY2F1c2VzIEFzeW5jIHRvIHJlZ3VsYXJseSBjaGVjayBpbnZhcmlhbnRzIG9mIGl0cyBpbnRlcm5hbFxuICBkYXRhIHN0cnVjdHVyZXMuICBUaGlzIGNhbiBzdWJzdGFudGlhbGx5IHNsb3cgZG93biB5b3VyIHByb2dyYW0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZDpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgICAgWyB7fFxuICBJZiB0cnVlLCBjYXVzZXMgQXN5bmMgcm91dGluZXMgdG8gY2hlY2sgaWYgdGhleSBhcmUgYmVpbmcgYWNjZXNzZWRcbiAgZnJvbSBzb21lIHRocmVhZCBvdGhlciB0aGFuIHRoZSB0aHJlYWQgY3VycmVudGx5IGhvbGRpbmcgdGhlIEFzeW5jXG4gIGxvY2ssIHdoaWNoIGlzIG5vdCBhbGxvd2VkIGFuZCBjYW4gbGVhZCB0byB2ZXJ5IGNvbmZ1c2luZyBiZWhhdmlvci5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZHVtcF9jb3JlX29uX2pvYl9kZWxheTpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRHVtcF9jb3JlX29uX2pvYl9kZWxheS50XVxuICAgICAgICAgICBbIHt8XG4gIENhbiBiZSBzZXQgdG8gW0RvX25vdF93YXRjaF0gb3I6XG5cbiAgICAoV2F0Y2ggKChkdW1wX2lmX2RlbGF5ZWRfYnkgU1BBTikgKGhvd190b19kdW1wIEhPVykpKVxuXG4gIElmIHNldCB0byBbV2F0Y2hdLCB0aGVuIG9uIHByb2dyYW0gc3RhcnQgdGhpcyB3aWxsIHN0YXJ0IGEgcmVndWxhclxuICBBc3luYyBqb2IgdGhhdCBpbmNyZW1lbnRzIGEgY291bnRlciwgYW5kIGEgQyB0aHJlYWQgdGhhdCB3aWxsXG4gIGRldGVjdCBpZiB0aGF0IGpvYiBpcyBkZWxheWVkIGJ5IFtkdW1wX2lmX2RlbGF5ZWRfYnldLCBhbmQgaWYgc28sXG4gIHdpbGwgY29yZSBkdW1wIHRoZSBwcm9ncmFtLiAgSWYgYXZhaWxhYmxlLCBbL3Vzci9iaW4vZ2NvcmVdIGlzXG4gIHVzZWQgYnkgZGVmYXVsdCB0byBkdW1wIHRoZSBjb3JlLCB3aGljaCBzaG91bGQgYWxsb3cgdGhlIHByb2dyYW1cbiAgdG8gY29udGludWUgcnVubmluZy4gIE90aGVyd2lzZSwgW2Fib3J0XSB3aWxsIGJlIGNhbGxlZCBmcm9tIEMsXG4gIHdoaWNoIHdpbGwga2lsbCB0aGUgcHJvZ3JhbSB3aGlsZSBjYXVzaW5nIGEgY29yZSBkdW1wLiAgT25lIGNhblxuICBmb3JjZSBbYWJvcnRdIG9yIFtnY29yZV0gdmlhIFtob3dfdG9fZHVtcF0sIHdoaWNoIHNob3VsZCBiZSBvbmUgb2Y6XG4gIFtDYWxsX2Fib3J0XSwgW0NhbGxfZ2NvcmVdLCBvciBbRGVmYXVsdF0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmVwb2xsX21heF9yZWFkeV9ldmVudHM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IEVwb2xsX21heF9yZWFkeV9ldmVudHMudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2YgcmVhZHkgZXZlbnRzIHRoYXQgQXN5bmMncyBjYWxsIHRvIFtFcG9sbC53YWl0XVxuICB3aWxsIGhhbmRsZS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZmlsZV9kZXNjcl93YXRjaGVyOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBGaWxlX2Rlc2NyX3dhdGNoZXIudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGlzIGRldGVybWluZXMgd2hhdCBPUyBzdWJzeXN0ZW0gQXN5bmMgdXNlcyB0byB3YXRjaCBmaWxlIGRlc2NyaXB0b3JzIGZvciBiZWluZyByZWFkeS5cbiAgVGhlIGRlZmF1bHQgaXMgdG8gdXNlIFtlcG9sbF0gaWYgdGltZXJmZCdzIGFyZSBzdXBwb3J0ZWQgYW5kIGlmIG5vdCwgdXNlIFtzZWxlY3RdLlxuXG4gIEFsbG93ZWQgdmFsdWVzIGFyZTp8fVxuICAgICAgICAgICA7IGNvbmNhdFxuICAgICAgICAgICAgICAgfnNlcDpcIiwgXCJcbiAgICAgICAgICAgICAgIChMaXN0Lm1hcCBGaWxlX2Rlc2NyX3dhdGNoZXIubGlzdCB+ZjpGaWxlX2Rlc2NyX3dhdGNoZXIudG9fc3RyaW5nKVxuICAgICAgICAgICA7IHt8LlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5tYXhfbnVtX29wZW5fZmlsZV9kZXNjcnM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICAoZnVuIGRlZmF1bHQgLT5cbiAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgICAgICAgfl86XG4gICAgICAgICAgICAgICAgICAgIChjb25jYXRcbiAgICAgICAgICAgICAgICAgICAgICAgWyBcIm1pbiBcIlxuICAgICAgICAgICAgICAgICAgICAgICA7IGRlZmF1bHQgfD4gTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzLnJhdyB8PiBJbnQudG9fc3RyaW5nX2h1bVxuICAgICAgICAgICAgICAgICAgICAgICA7IFwiIFt1bGltaXQgLW4gLUhdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgOiBzdHJpbmcpXSlcbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzIGFsbG93ZWQgYXQgYW55IG9uZSB0aW1lLnx9IF0pXG4gICAgICB+bWF4X251bV90aHJlYWRzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNYXhfbnVtX3RocmVhZHMudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGhyZWFkcyB0aGF0IEFzeW5jIHdpbGwgY3JlYXRlIHRvIGRvIGJsb2NraW5nXG4gIHN5c3RlbSBjYWxscyBhbmQgaGFuZGxlIGNhbGxzIHRvIFtJbl90aHJlYWQucnVuXS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQ6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1heF9pbnRlcl9jeWNsZV90aW1lb3V0LnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdGhlIHNjaGVkdWxlciB3aWxsIHBhdXNlIGJldHdlZW4gY3ljbGVzXG4gIHdoZW4gaXQgaGFzIG5vIGpvYnMgYW5kIGlzIGdvaW5nIHRvIHdhaXQgZm9yIEkvTy4gIEluIHByaW5jaXBsZSBvbmVcbiAgZG9lc24ndCBuZWVkIHRoaXMsIGFuZCB3ZSBjb3VsZCB1c2UgYW4gaW5maW5pdGUgdGltZW91dC4gIFdlIGluc3RlYWRcbiAgdXNlIGEgc21hbGwgdGltZW91dCAoYnkgZGVmYXVsdCksIHRvIGJlIG1vcmUgcm9idXN0IHRvIGJ1Z3MgdGhhdFxuICBjb3VsZCBwcmV2ZW50IEFzeW5jIGZyb20gd2FraW5nIHVwIGFuZCBzZXJ2aWNpbmcgZXZlbnRzLiAgRm9yXG4gIGV4YW1wbGUsIGFzIG9mIDIwMTMtMDEsIHRoZSBPQ2FtbCBydW50aW1lIGhhcyBhIGJ1ZyB0aGF0IGNhdXNlcyBpdFxuICB0byBub3QgbmVjZXNzYXJpbHkgcnVuIGFuIE9DYW1sIHNpZ25hbCBoYW5kbGVyIGluIGEgdGltZWx5IG1hbm5lci5cbiAgVGhpcyBpbiB0dXJuIGNhbiBjYXVzZSBhIHNpbXBsZSBBc3luYyBwcm9ncmFtIHRoYXQgaXMgd2FpdGluZyBvbiBhXG4gIHNpZ25hbCB0byBoYW5nLCB3aGVuIGluIGZhY3QgaXQgc2hvdWxkIGhhbmRsZSB0aGUgc2lnbmFsLlxuXG4gIFdlIHVzZSA1MG1zIGFzIHRoZSBkZWZhdWx0IHRpbWVvdXQsIGJlY2F1c2UgaXQgaXMgaW5mcmVxdWVudCBlbm91Z2hcbiAgdG8gaGF2ZSBhIG5lZ2xpZ2libGUgcGVyZm9ybWFuY2UgaW1wYWN0LCBhbmQgZnJlcXVlbnQgZW5vdWdoIHRoYXRcbiAgdGhlIGxhdGVuY3kgd291bGQgdHlwaWNhbGx5IGJlIG5vdCBub3RpY2VhYmxlLiAgQWxzbywgNTBtcyBpcyB3aGF0XG4gIHRoZSBPQ2FtbCB0aWNrZXIgdGhyZWFkIHVzZXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiBqb2JzIHRoYXQgd2lsbCBiZSBkb25lIGF0IGVhY2ggcHJpb3JpdHkgd2l0aGluXG4gIGVhY2ggQXN5bmMgY3ljbGUuICBUaGlzIGxpbWl0cyBob3cgbWFueSBqb2JzIHRoZSBzY2hlZHVsZXIgd2lsbCBydW5cbiAgYmVmb3JlIHBhdXNpbmcgdG8gY2hlY2sgZm9yIEkvTy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWluX2ludGVyX2N5Y2xlX3RpbWVvdXQ6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0LnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1pbmltdW0gdGltZW91dCB0aGUgc2NoZWR1bGVyIHdpbGwgcGFzcyB0byB0aGUgT1Mgd2hlbiBpdCBjaGVja3NcbiAgZm9yIEkvTyBiZXR3ZWVuIGN5Y2xlcy4gIFRoaXMgaXMgemVybyBieSBkZWZhdWx0LiAgU2V0dGluZyBpdCB0byBhXG4gIG5vbnplcm8gdmFsdWUgaXMgdXNlZCB0byBpbmNyZWFzZSB0aHJlYWQgZmFpcm5lc3MgYmV0d2VlbiB0aGUgc2NoZWR1bGVyXG4gIGFuZCBvdGhlciB0aHJlYWRzLiAgQSBwbGF1c2libGUgc2V0dGluZyBpcyAxdXMuICBUaGlzIGlzIGFsc29cbiAgY29uZmlndXJhYmxlIGluIE9DYW1sIHZpYSBbU2NoZWR1bGVyLnNldF9taW5faW50ZXJfY3ljbGVfdGltZW91dF0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnByaW50X2RlYnVnX21lc3NhZ2VzX2ZvcjpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRGVidWdfdGFnLnQgbGlzdF1cbiAgICAgICAgICAgWyB7fFxuICBBIGxpc3Qgb2YgdGFncyBzcGVjaWZ5aW5nIHdoaWNoIEFzeW5jIGZ1bmN0aW9ucyBzaG91bGQgcHJpbnQgZGVidWdcbiAgbWVzc2FnZXMgdG8gc3RkZXJyLiAgRWFjaCB0YWcgaWRlbnRpZmllcyBhIGdyb3VwIG9mIHJlbGF0ZWQgQXN5bmNcbiAgZnVuY3Rpb25zLiAgVGhlIHRhZyBbYWxsXSBtZWFucyB0byBwcmludCBkZWJ1ZyBtZXNzYWdlcyBmb3IgYWxsXG4gIGZ1bmN0aW9ucy4gIEFsbG93ZWQgdmFsdWVzIGFyZTpcblxufH1cbiAgICAgICAgICAgOyBjb25jYXRcbiAgICAgICAgICAgICAgIChMaXN0Lm1hcCBEZWJ1Z190YWcubGlzdCB+ZjooZnVuIGQgLT5cbiAgICAgICAgICAgICAgICAgIGNvbmNhdCBbIFwiICAgIFwiOyBEZWJ1Z190YWcudG9fc3RyaW5nIGQ7IFwiXFxuXCIgXSkpXG4gICAgICAgICAgIDsge3xcbiAgVHVybmluZyBvbiBkZWJ1ZyBtZXNzYWdlcyB3aWxsIHN1YnN0YW50aWFsbHkgc2xvdyBkb3duIG1vc3QgcHJvZ3JhbXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnJlY29yZF9iYWNrdHJhY2VzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAgICBbIHt8XG4gIElmIHRydWUsIHRoaXMgd2lsbCBjYXVzZSBBc3luYyB0byBrZWVwIGluIHRoZSBleGVjdXRpb24gY29udGV4dCB0aGVcbiAgaGlzdG9yeSBvZiBzdGFjayBiYWNrdHJhY2VzIChvYnRhaW5lZCB2aWEgW0JhY2t0cmFjZS5nZXRdKSB0aGF0IGxlZFxuICB0byB0aGUgY3VycmVudCBqb2IuICBJZiBhbiBBc3luYyBqb2IgaGFzIGFuIHVuaGFuZGxlZCBleGNlcHRpb24sXG4gIHRoaXMgYmFja3RyYWNlIGhpc3Rvcnkgd2lsbCBiZSByZWNvcmRlZCBpbiB0aGUgZXhjZXB0aW9uLiAgSW5cbiAgcGFydGljdWxhciB0aGUgaGlzdG9yeSB3aWxsIGFwcGVhciBpbiBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uIHRoYXRcbiAgcmVhY2hlcyB0aGUgbWFpbiBtb25pdG9yLiAgVGhpcyBjYW4gaGF2ZSBhIHN1YnN0YW50aWFsIHBlcmZvcm1hbmNlXG4gIGltcGFjdCwgYm90aCBpbiBydW5uaW5nIHRpbWUgYW5kIHNwYWNlIHVzYWdlLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5yZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF1cbiAgICAgICAgICAgWyB7fFxuICBCeSBkZWZhdWx0LCBBc3luYyB3aWxsIHByaW50IGEgbWVzc2FnZSB0byBzdGRlcnIgZXZlcnkgc2Vjb25kIGlmXG4gIHRoZSB0aHJlYWQgcG9vbCBpcyBzdHVjayBmb3IgbG9uZ2VyIHRoYW4gdGhpcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+dGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5OlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkudF1cbiAgICAgICAgICAgWyB7fFxuICAgV2hldGhlciBhbmQgaG93IHRocmVhZHMgaW4gdGhlIHRocmVhZCBwb29sIHNob3VsZCBiZSBhZmZpbml0aXplZCB0byBDUFVzLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH50aW1pbmdfd2hlZWxfY29uZmlnOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1pbmdfd2hlZWwuQ29uZmlnLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhpcyBpcyB1c2VkIHRvIGFkanVzdCB0aGUgdGltZS9zcGFjZSB0cmFkZW9mZiBpbiB0aGUgdGltaW5nIHdoZWVsXG4gIHVzZWQgdG8gaW1wbGVtZW50IEFzeW5jJ3MgY2xvY2suICBUaW1lIGlzIHNwbGl0IGludG8gaW50ZXJ2YWxzIG9mXG4gIHNpemUgW2FsYXJtX3ByZWNpc2lvbl0sIGFuZCBhbGFybXMgd2l0aCB0aW1lcyBpbiB0aGUgc2FtZSBpbnRlcnZhbFxuICBmaXJlIGluIHRoZSBzYW1lIGN5Y2xlLiAgTGV2ZWwgW2ldIGluIHRoZSB0aW1pbmcgd2hlZWwgaGFzIGFuXG4gIGFycmF5IG9mIHNpemUgWzJeYl0sIHdoZXJlIFtiXSBpcyB0aGUgW2ldJ3RoIGVudHJ5IGluIFtsZXZlbF9iaXRzXS5cbnx9XG4gICAgICAgICAgIF0pXG4gIGluXG4gIGNvbmNhdFxuICAgIChMaXN0Lm1hcFxuICAgICAgIChMaXN0LnNvcnQgZmllbGRzIH5jb21wYXJlOihmdW4gKG5hbWUxLCBfLCBfKSAobmFtZTIsIF8sIF8pIC0+XG4gICAgICAgICAgU3RyaW5nLmNvbXBhcmUgbmFtZTEgbmFtZTIpKVxuICAgICAgIH5mOihmdW4gKG5hbWUsIGRlZmF1bHQsIGRlc2NyaXB0aW9uKSAtPlxuICAgICAgICAgY29uY2F0XG4gICAgICAgICAgIChcIlxcblwiIDo6IG5hbWUgOjogXCIgKGRlZmF1bHQgXCIgOjogU2V4cC50b19zdHJpbmcgZGVmYXVsdCA6OiBcIilcIiA6OiBkZXNjcmlwdGlvbikpKVxuOztcblxubGV0IGhlbHBfbWVzc2FnZSAoKSA9XG4gIGNvbmNhdFxuICAgIFsgXCJUaGUgXCJcbiAgICA7IGVudmlyb25tZW50X3ZhcmlhYmxlXG4gICAgOyB7fCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhZmZlY3RzIEFzeW5jXG5pbiB2YXJpb3VzIHdheXMuICBJdHMgdmFsdWUgc2hvdWxkIGJlIGEgc2V4cCBvZiB0aGUgZm9sbG93aW5nIGZvcm0sXG53aGVyZSBhbGwgZmllbGRzIGFyZSBvcHRpb25hbDpcblxufH1cbiAgICA7IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl90IGV4YW1wbGUpXG4gICAgOyB7fFxuXG5IZXJlIGlzIGFuIGV4cGxhbmF0aW9uIG9mIGVhY2ggZmllbGQuXG58fVxuICAgIDsgZmllbGRfZGVzY3JpcHRpb25zICgpXG4gICAgXVxuOztcblxubGV0IHVzYWdlICgpID1cbiAgZXByaW50ZiBcIiVzJSFcIiAoaGVscF9tZXNzYWdlICgpKTtcbiAgZXhpdCAxXG47O1xuXG5sZXQgdCA9XG4gIG1hdGNoIE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IElucmlhX3N5cy5nZXRlbnYgZW52aXJvbm1lbnRfdmFyaWFibGUpIHdpdGhcbiAgfCBOb25lIC0+IGVtcHR5XG4gIHwgU29tZSBcIlwiIC0+IHVzYWdlICgpXG4gIHwgU29tZSBzdHJpbmcgLT5cbiAgICAobWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gdF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyBzdHJpbmcpKSB3aXRoXG4gICAgIHwgT2sgdCAtPiB0XG4gICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgZXByaW50ZlxuICAgICAgICAgXCIlc1xcblxcblwiXG4gICAgICAgICAoU2V4cC50b19zdHJpbmdfaHVtXG4gICAgICAgICAgICAoRXJyb3Iuc2V4cF9vZl90XG4gICAgICAgICAgICAgICAoRXJyb3IuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgXCJpbnZhbGlkIHZhbHVlIGZvciAlcyBlbnZpcm9ubWVudCB2YXJpYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudF92YXJpYWJsZSlcbiAgICAgICAgICAgICAgICAgIGV4blxuICAgICAgICAgICAgICAgICAgWyVzZXhwX29mOiBleG5dKSkpO1xuICAgICAgIHVzYWdlICgpKVxuOztcblxubW9kdWxlIFByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IHN0cnVjdFxuICBsZXQgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIHRhZyA9XG4gICAgbWF0Y2ggdC5wcmludF9kZWJ1Z19tZXNzYWdlc19mb3Igd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBsIC0+IExpc3QubWVtIGwgdGFnIH5lcXVhbDpEZWJ1Z190YWcuZXF1YWxcbiAgOztcblxuICBsZXQgYWxsID0gcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIEFsbFxuICBsZXQgZGVidWcgdGFnID0gYWxsIHx8IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciB0YWdcbiAgbGV0IGNsb2NrID0gZGVidWcgQ2xvY2tcbiAgbGV0IGZkID0gZGVidWcgRmRcbiAgbGV0IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IGRlYnVnIEZpbGVfZGVzY3Jfd2F0Y2hlclxuICBsZXQgZmluYWxpemVycyA9IGRlYnVnIEZpbmFsaXplcnNcbiAgbGV0IGludGVycnVwdG9yID0gZGVidWcgSW50ZXJydXB0b3JcbiAgbGV0IG1vbml0b3IgPSBkZWJ1ZyBNb25pdG9yXG4gIGxldCBtb25pdG9yX3NlbmRfZXhuID0gZGVidWcgTW9uaXRvcl9zZW5kX2V4blxuICBsZXQgcGFyYWxsZWwgPSBkZWJ1ZyBQYXJhbGxlbFxuICBsZXQgcmVhZGVyID0gZGVidWcgUmVhZGVyXG4gIGxldCBzY2hlZHVsZXIgPSBkZWJ1ZyBTY2hlZHVsZXJcbiAgbGV0IHNodXRkb3duID0gZGVidWcgU2h1dGRvd25cbiAgbGV0IHRocmVhZF9wb29sID0gZGVidWcgVGhyZWFkX3Bvb2xcbiAgbGV0IHRocmVhZF9zYWZlID0gZGVidWcgVGhyZWFkX3NhZmVcbiAgbGV0IHdyaXRlciA9IGRlYnVnIFdyaXRlclxuZW5kXG5cbmxldCAoICEhICkgZmllbGQgPVxuICBPcHRpb24udmFsdWUgKEZpZWxkLmdldCBmaWVsZCB0KSB+ZGVmYXVsdDooT3B0aW9uLnZhbHVlX2V4biAoRmllbGQuZ2V0IGZpZWxkIGRlZmF1bHQpKVxuOztcblxubGV0IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9ICEhRmllbGRzLmFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxubGV0IGNoZWNrX2ludmFyaWFudHMgPSAhIUZpZWxkcy5jaGVja19pbnZhcmlhbnRzXG5sZXQgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkID0gISFGaWVsZHMuZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG5sZXQgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9ICEhRmllbGRzLmVwb2xsX21heF9yZWFkeV9ldmVudHNcbmxldCB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSAhIUZpZWxkcy50aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlcbmxldCBmaWxlX2Rlc2NyX3dhdGNoZXIgPSAhIUZpZWxkcy5maWxlX2Rlc2NyX3dhdGNoZXJcbmxldCBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9ICEhRmllbGRzLm1heF9pbnRlcl9jeWNsZV90aW1lb3V0XG5sZXQgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gISFGaWVsZHMubWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG5sZXQgbWF4X251bV90aHJlYWRzID0gISFGaWVsZHMubWF4X251bV90aHJlYWRzXG5sZXQgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSAhIUZpZWxkcy5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxubGV0IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gISFGaWVsZHMubWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbmxldCByZWNvcmRfYmFja3RyYWNlcyA9ICEhRmllbGRzLnJlY29yZF9iYWNrdHJhY2VzXG5sZXQgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9ICEhRmllbGRzLnJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbmxldCB0aW1pbmdfd2hlZWxfY29uZmlnID0gISFGaWVsZHMudGltaW5nX3doZWVsX2NvbmZpZ1xubGV0IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSAhIUZpZWxkcy5kdW1wX2NvcmVfb25fam9iX2RlbGF5XG5cbmxldCB0ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IGNoZWNrX2ludmFyaWFudHMgPSBTb21lIGNoZWNrX2ludmFyaWFudHNcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBTb21lIGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSBTb21lIGR1bXBfY29yZV9vbl9qb2JfZGVsYXlcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSBTb21lIHRocmVhZF9wb29sX2NwdV9hZmZpbml0eVxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBTb21lIGVwb2xsX21heF9yZWFkeV9ldmVudHNcbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgPSBTb21lIGZpbGVfZGVzY3Jfd2F0Y2hlclxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSBtYXhfaW50ZXJfY3ljbGVfdGltZW91dFxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IFNvbWUgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG4gIDsgbWF4X251bV90aHJlYWRzID0gU29tZSBtYXhfbnVtX3RocmVhZHNcbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9IFNvbWUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IFNvbWUgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSB0LnByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuICA7IHJlY29yZF9iYWNrdHJhY2VzID0gU29tZSByZWNvcmRfYmFja3RyYWNlc1xuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gU29tZSB0aW1pbmdfd2hlZWxfY29uZmlnXG4gIH1cbjs7XG5cbmxldCB0YXNrX2lkID0gcmVmIChmdW4gKCkgLT4gU2V4cC5BdG9tIFwiPG5vIHRhc2sgaWQ+XCIpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgcmVmXG5cbigqIEJlaW5nIGEgcG9pbnRlciwgbm8gb25lIG91dHNpZGUgdGhpcyBtb2R1bGUgY2FuIGNvbnN0cnVjdCBhIHZhbHVlIHRoYXQgaXNcbiAgIFtwaHlzX3NhbWVdIGFzIHRoaXMgb25lLlxuXG4gICB0aGlzIGNvZGUgaXMgZHVwbGljYXRlZCBpbiBPcHRpb25fYXJyYXkuQ2hlYXBfb3B0aW9uLCBhbmQgaWYgd2UgZmluZCB5ZXQgYW5vdGhlclxuICAgcGxhY2Ugd2hlcmUgd2Ugd2FudCBpdCB3ZSBzaG91bGQgcmVjb25zaWRlciBtYWtpbmcgaXQgc2hhcmVkLiAqKVxubGV0IG5vbmUgPSBPYmoub2JqIChPYmoubmV3X2Jsb2NrIE9iai5hYnN0cmFjdF90YWcgMSlcbmxldCBjcmVhdGUgKCkgPSByZWYgbm9uZVxubGV0IGlzX25vbmUgeCA9IHBoeXNfZXF1YWwgIXggbm9uZVxubGV0IGlzX3NvbWUgeCA9IG5vdCAoaXNfbm9uZSB4KVxubGV0IGdldF9zb21lX2V4biB4ID0gaWYgaXNfbm9uZSB4IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNb3B0aW9uLmdldF9zb21lX2V4blwiXSBlbHNlICF4XG5sZXQgZ2V0IHQgPSBpZiBpc19ub25lIHQgdGhlbiBOb25lIGVsc2UgU29tZSAhdFxubGV0IHVuc2FmZV9nZXQgdCA9ICF0XG5sZXQgc2V0X3NvbWUgdCB2ID0gdCA6PSB2XG5sZXQgc2V0X25vbmUgdCA9IHQgOj0gbm9uZVxuXG5sZXQgc2V0IHQgdiA9XG4gIG1hdGNoIHYgd2l0aFxuICB8IE5vbmUgLT4gc2V0X25vbmUgdFxuICB8IFNvbWUgdiAtPiBzZXRfc29tZSB0IHZcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKGdldCB0IDogYSBvcHRpb24pXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIE9wdGlvbi5pdGVyIChnZXQgdCkgfmY6aW52YXJpYW50X2EpXG47O1xuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX2dldFxuICBlbmRcbmVuZFxuIiwib3BlbiEgQ29yZVxubW9kdWxlIFBvb2wgPSBUdXBsZV9wb29sXG5tb2R1bGUgUG9pbnRlciA9IFBvb2wuUG9pbnRlclxuXG4oKiBUaGlzIHBvb2wgaG9sZHMgbm9kZXMgdGhhdCB3b3VsZCBiZSByZXByZXNlbnRlZCBtb3JlIHRyYWRpdGlvbmFsbHkgYXM6XG5cbiAgIHtbXG4gICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgfCBFbXB0eVxuICAgICAgIHwgSGVhcCBvZiAnYSAqICdhIHQgbGlzdCBdfVxuXG4gICBXZSB3aWxsIHJlcHJlc2VudCB0aGVtIGFzIGEgbGVmdC1jaGlsZCwgcmlnaHQtc2libGluZyB0cmVlIGluIGEgdHJpcGxldFxuICAgKHZhbHVlICogbGVmdF9jaGlsZCAqIHJpZ2h0X3NpYmxpbmcpLiAgVGhlIGxlZnQgY2hpbGQgYW5kIGFsbCByaWdodCBzaWJsaW5nc1xuICAgb2YgdGhlIGxlZnQgY2hpbGQgZm9ybSBhIGxpbmtlZCBsaXN0IHJlcHJlc2VudGluZyB0aGUgc3ViaGVhcHMgb2YgYSBnaXZlbiBoZWFwOlxuXG4gICB7dlxuICAgICAgICAgQVxuICAgICAgICAvXG4gICAgICAgQiAtPiBDIC0+IEQgLT4gRSAtPiBGXG4gICAgICAvICAgICAgICAgLyAgICAgICAgIC9cbiAgICAgRyAgICAgICAgIEgtPkktPkogICBLLT5MXG4gICB2fSAqKVxuXG5tb2R1bGUgTm9kZSA6IHNpZ1xuICAoKiBFeHBvc2luZyBbcHJpdmF0ZSBpbnRdIGlzIGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIGJlY2F1c2UgaXQgYWxsb3dzXG4gICAgIHRoZSBjb21waWxlciB0byBza2lwIHRoZSB3cml0ZSBiYXJyaWVyLiAqKVxuXG4gIHR5cGUgJ2EgdCA9IHByaXZhdGUgaW50XG5cbiAgbW9kdWxlIElkIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICBlbmRcblxuICBtb2R1bGUgUG9vbCA6IHNpZ1xuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHRcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBjcmVhdGUgOiBtaW5fc2l6ZTppbnQgLT4gJ2EgdFxuICAgIHZhbCBpc19mdWxsIDogJ2EgdCAtPiBib29sXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gICAgdmFsIGdyb3cgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgY29weSA6ICdhIHQgLT4gJ2Egbm9kZSAtPiAnYSBub2RlICogJ2EgdFxuICBlbmRcblxuICAoKiogW2FsbG9jYXRlIHYgfnBvb2xdIGFsbG9jYXRlcyBhIG5ldyBub2RlIGZyb20gdGhlIHBvb2wgd2l0aCBubyBjaGlsZCBvciBzaWJsaW5nICopXG4gIHZhbCBhbGxvY2F0ZSA6ICdhIC0+IHBvb2w6J2EgUG9vbC50IC0+IGlkOklkLnQgLT4gJ2EgdFxuXG4gICgqKiBbZnJlZSB0IH5wb29sXSBmcmVlcyBbdF0gZm9yIHJldXNlLiAgSXQgaXMgYW4gZXJyb3IgdG8gYWNjZXNzIFt0XSBhZnRlciB0aGlzLiAqKVxuICB2YWwgZnJlZSA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gdW5pdFxuXG4gICgqKiBhIHNwZWNpYWwgW3RdIHRoYXQgcmVwcmVzZW50cyB0aGUgZW1wdHkgbm9kZSAqKVxuICB2YWwgZW1wdHkgOiB1bml0IC0+ICdhIHRcblxuICB2YWwgaXNfZW1wdHkgOiAnYSB0IC0+IGJvb2xcbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcblxuICAoKiogW3ZhbHVlX2V4biB0IH5wb29sXSByZXR1cm4gdGhlIHZhbHVlIG9mIFt0XSwgcmFpc2UgaWYgW2lzX2VtcHR5IHRdICopXG4gIHZhbCB2YWx1ZV9leG4gOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhXG5cbiAgdmFsIGlkIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiBJZC50XG4gIHZhbCBjaGlsZCA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuICB2YWwgc2libGluZyA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBbcHJldiB0XSBpcyBlaXRoZXIgdGhlIHBhcmVudCBvZiBbdF0gb3IgdGhlIHNpYmxpbmcgaW1tZWRpYXRlbHkgbGVmdCBvZiBbdF0gKilcbiAgdmFsIHByZXYgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcblxuICAoKiogW2FkZF9jaGlsZCB0IH5jaGlsZCB+cG9vbF0gQWRkIGEgY2hpbGQgdG8gW3RdLCBwcmVzZXJ2aW5nIGV4aXN0aW5nIGNoaWxkcmVuIGFzXG4gICAgICBzaWJsaW5ncyBvZiBbY2hpbGRdLiBbdF0gYW5kIFtjaGlsZF0gc2hvdWxkIG5vdCBiZSBlbXB0eSBhbmQgW2NoaWxkXSBzaG91bGQgaGF2ZSBub1xuICAgICAgc2libGluZyBhbmQgaGF2ZSBubyBwcmV2IG5vZGUuICopXG4gIHZhbCBhZGRfY2hpbGQgOiAnYSB0IC0+IGNoaWxkOidhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gdW5pdFxuXG4gICgqKiBkaXNjb25uZWN0IGFuZCByZXR1cm4gdGhlIHNpYmxpbmcgKilcbiAgdmFsIGRpc2Nvbm5lY3Rfc2libGluZyA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBkaXNjb25uZWN0IGFuZCByZXR1cm4gdGhlIGNoaWxkICopXG4gIHZhbCBkaXNjb25uZWN0X2NoaWxkIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIFtkZXRhY2ggdCB+cG9vbF0gcmVtb3ZlcyBbdF0gZnJvbSB0aGUgdHJlZSwgYWRqdXN0aW5nIHBvaW50ZXJzIGFyb3VuZCBpdC4gQWZ0ZXJcbiAgICAgIFtkZXRhY2hdLCBbdF0gaXMgdGhlIHJvb3Qgb2YgYSBzdGFuZGFsb25lIGhlYXAsIHdoaWNoIGlzIGRldGFjaGVkIGZyb20gdGhlIG9yaWdpbmFsXG4gICAgICBoZWFwLiAqKVxuICB2YWwgZGV0YWNoIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIElkID0gSW50XG5cbiAgbGV0IGR1bW15X2lkIDogSWQudCA9IC0xXG5cbiAgdHlwZSAnYSBub2RlID1cbiAgICAoJ2EsICdhIG5vZGUgUG9pbnRlci50LCAnYSBub2RlIFBvaW50ZXIudCwgJ2Egbm9kZSBQb2ludGVyLnQsIElkLnQpIFBvb2wuU2xvdHMudDVcblxuICB0eXBlICdhIHQgPSAnYSBub2RlIFBvaW50ZXIudFxuXG4gIGxldCBlbXB0eSA9IFBvaW50ZXIubnVsbFxuICBsZXQgaXNfZW1wdHkgPSBQb2ludGVyLmlzX251bGxcbiAgbGV0IGVxdWFsID0gUG9pbnRlci5waHlzX2VxdWFsXG4gIGxldCB2YWx1ZSB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50MFxuICBsZXQgY2hpbGQgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDFcbiAgbGV0IHNpYmxpbmcgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDJcbiAgbGV0IHByZXYgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDNcbiAgbGV0IGlkIHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQ0XG5cbiAgKCogbGV0IHNldF92YWx1ZSAgIHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDAgdiAqKVxuICBsZXQgc2V0X2NoaWxkIHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDEgdlxuICBsZXQgc2V0X3NpYmxpbmcgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MiB2XG4gIGxldCBzZXRfcHJldiB0IHYgfnBvb2wgPSBQb29sLnNldCBwb29sIHQgUG9vbC5TbG90LnQzIHZcblxuICBsZXQgdmFsdWVfZXhuIHQgfnBvb2wgPVxuICAgIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gICAgdmFsdWUgdCB+cG9vbFxuICA7O1xuXG4gIGxldCBhbGxvY2F0ZSB2YWx1ZSB+cG9vbCB+aWQgPSBQb29sLm5ldzUgcG9vbCB2YWx1ZSAoZW1wdHkgKCkpIChlbXB0eSAoKSkgKGVtcHR5ICgpKSBpZFxuICBsZXQgZnJlZSB0IH5wb29sID0gUG9vbC51bnNhZmVfZnJlZSBwb29sIHRcblxuICBsZXQgZGlzY29ubmVjdF9zaWJsaW5nIHQgfnBvb2wgPVxuICAgIGxldCBzaWJsaW5nID0gc2libGluZyB0IH5wb29sIGluXG4gICAgaWYgbm90IChpc19lbXB0eSBzaWJsaW5nKVxuICAgIHRoZW4gKFxuICAgICAgc2V0X3NpYmxpbmcgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgc2V0X3ByZXYgc2libGluZyAoZW1wdHkgKCkpIH5wb29sKTtcbiAgICBzaWJsaW5nXG4gIDs7XG5cbiAgbGV0IGRpc2Nvbm5lY3RfY2hpbGQgdCB+cG9vbCA9XG4gICAgbGV0IGNoaWxkID0gY2hpbGQgdCB+cG9vbCBpblxuICAgIGlmIG5vdCAoaXNfZW1wdHkgY2hpbGQpXG4gICAgdGhlbiAoXG4gICAgICBzZXRfY2hpbGQgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgc2V0X3ByZXYgY2hpbGQgKGVtcHR5ICgpKSB+cG9vbCk7XG4gICAgY2hpbGRcbiAgOztcblxuICBsZXQgYWRkX2NoaWxkIHQgfmNoaWxkOm5ld19jaGlsZCB+cG9vbCA9XG4gICAgKCogYXNzZXJ0aW9ucyB3ZSB3b3VsZCBtYWtlLCBidXQgZm9yIHNwZWVkOlxuICAgICAgIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gICAgICAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IG5ld19jaGlsZCkpO1xuICAgICAgIGFzc2VydCAoaXNfZW1wdHkgKHNpYmxpbmcgbmV3X2NoaWxkIH5wb29sKSk7XG4gICAgICAgYXNzZXJ0IChpc19lbXB0eSAocHJldiBuZXdfY2hpbGQgfnBvb2wpKTtcbiAgICAqKVxuICAgIGxldCBjdXJyZW50X2NoaWxkID0gZGlzY29ubmVjdF9jaGlsZCB0IH5wb29sIGluXG4gICAgKCogYWRkIFtuZXdfY2hpbGRdIHRvIHRoZSBsaXN0IG9mIFt0XSdzIGNoaWxkcmVuICh3aGljaCBtYXkgYmUgZW1wdHkpICopXG4gICAgc2V0X3NpYmxpbmcgbmV3X2NoaWxkIGN1cnJlbnRfY2hpbGQgfnBvb2w7XG4gICAgaWYgbm90IChpc19lbXB0eSBjdXJyZW50X2NoaWxkKSB0aGVuIHNldF9wcmV2IGN1cnJlbnRfY2hpbGQgbmV3X2NoaWxkIH5wb29sO1xuICAgIHNldF9jaGlsZCB0IG5ld19jaGlsZCB+cG9vbDtcbiAgICBzZXRfcHJldiBuZXdfY2hpbGQgdCB+cG9vbFxuICA7O1xuXG4gIGxldCBkZXRhY2ggdCB+cG9vbCA9XG4gICAgaWYgbm90IChpc19lbXB0eSB0KVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHByZXYgPSBwcmV2IHQgfnBvb2wgaW5cbiAgICAgIGlmIG5vdCAoaXNfZW1wdHkgcHJldilcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgcmVsYXRpb25fdG9fcHJldiA9IGlmIGVxdWFsIHQgKGNoaWxkIHByZXYgfnBvb2wpIHRoZW4gYGNoaWxkIGVsc2UgYHNpYmxpbmcgaW5cbiAgICAgICAgc2V0X3ByZXYgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgICBsZXQgc2libGluZyA9IGRpc2Nvbm5lY3Rfc2libGluZyB0IH5wb29sIGluXG4gICAgICAgIChtYXRjaCByZWxhdGlvbl90b19wcmV2IHdpdGhcbiAgICAgICAgIHwgYGNoaWxkIC0+IHNldF9jaGlsZCBwcmV2IHNpYmxpbmcgfnBvb2xcbiAgICAgICAgIHwgYHNpYmxpbmcgLT4gc2V0X3NpYmxpbmcgcHJldiBzaWJsaW5nIH5wb29sKTtcbiAgICAgICAgaWYgbm90IChpc19lbXB0eSBzaWJsaW5nKSB0aGVuIHNldF9wcmV2IHNpYmxpbmcgcHJldiB+cG9vbCkpXG4gIDs7XG5cbiAgbW9kdWxlIFBvb2wgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBub2RlIFBvb2wudFxuICAgIHR5cGUgbm9ucmVjICdhIG5vZGUgPSAnYSBub2RlIFBvaW50ZXIudFxuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSBhKSB+bWluX3NpemU6Y2FwYWNpdHkgOiBhIHQgPVxuICAgICAgUG9vbC5jcmVhdGVcbiAgICAgICAgUG9vbC5TbG90cy50NVxuICAgICAgICB+Y2FwYWNpdHlcbiAgICAgICAgfmR1bW15OlxuICAgICAgICAgICggKE9iai5tYWdpYyBOb25lIDogYSlcbiAgICAgICAgICAsIFBvaW50ZXIubnVsbCAoKVxuICAgICAgICAgICwgUG9pbnRlci5udWxsICgpXG4gICAgICAgICAgLCBQb2ludGVyLm51bGwgKClcbiAgICAgICAgICAsIGR1bW15X2lkIClcbiAgICA7O1xuXG4gICAgbGV0IGlzX2Z1bGwgdCA9IFBvb2wuaXNfZnVsbCB0XG4gICAgbGV0IGxlbmd0aCB0ID0gUG9vbC5sZW5ndGggdFxuICAgIGxldCBncm93IHQgPSBQb29sLmdyb3cgdFxuXG4gICAgbGV0IGNvcHkgdCBzdGFydCA9XG4gICAgICBsZXQgdCcgPSBjcmVhdGUgfm1pbl9zaXplOihQb29sLmNhcGFjaXR5IHQpIGluXG4gICAgICBsZXQgY29weV9ub2RlIG5vZGUgdG9fdmlzaXQgPVxuICAgICAgICBpZiBpc19lbXB0eSBub2RlXG4gICAgICAgIHRoZW4gZW1wdHkgKCksIHRvX3Zpc2l0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIHdlIHVzZSB0aGUgc2FtZSBpZCwgYnV0IHRoYXQncyBvayBzaW5jZSBpZHMgc2hvdWxkIGJlIHVuaXF1ZSBwZXIgaGVhcCAqKVxuICAgICAgICAgIGxldCBuZXdfbm9kZSA9XG4gICAgICAgICAgICBhbGxvY2F0ZSAodmFsdWVfZXhuIG5vZGUgfnBvb2w6dCkgfnBvb2w6dCcgfmlkOihpZCBub2RlIH5wb29sOnQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdG9fdmlzaXQgPVxuICAgICAgICAgICAgKG5ld19ub2RlLCBgY2hpbGQsIGNoaWxkIG5vZGUgfnBvb2w6dClcbiAgICAgICAgICAgIDo6IChuZXdfbm9kZSwgYHNpYmxpbmcsIHNpYmxpbmcgbm9kZSB+cG9vbDp0KVxuICAgICAgICAgICAgOjogdG9fdmlzaXRcbiAgICAgICAgICBpblxuICAgICAgICAgIG5ld19ub2RlLCB0b192aXNpdClcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGxvb3AgdG9fdmlzaXQgPVxuICAgICAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCAobm9kZV90b191cGRhdGUsIHNsb3QsIG5vZGVfdG9fY29weSkgOjogcmVzdCAtPlxuICAgICAgICAgIGxldCBuZXdfbm9kZSwgdG9fdmlzaXQgPSBjb3B5X25vZGUgbm9kZV90b19jb3B5IHJlc3QgaW5cbiAgICAgICAgICAobWF0Y2ggc2xvdCB3aXRoXG4gICAgICAgICAgIHwgYGNoaWxkIC0+IHNldF9jaGlsZCBub2RlX3RvX3VwZGF0ZSBuZXdfbm9kZSB+cG9vbDp0J1xuICAgICAgICAgICB8IGBzaWJsaW5nIC0+IHNldF9zaWJsaW5nIG5vZGVfdG9fdXBkYXRlIG5ld19ub2RlIH5wb29sOnQnKTtcbiAgICAgICAgICBpZiBub3QgKGlzX2VtcHR5IG5ld19ub2RlKSB0aGVuIHNldF9wcmV2IG5ld19ub2RlIG5vZGVfdG9fdXBkYXRlIH5wb29sOnQnO1xuICAgICAgICAgIGxvb3AgdG9fdmlzaXRcbiAgICAgIGluXG4gICAgICBsZXQgbmV3X3N0YXJ0LCB0b192aXNpdCA9IGNvcHlfbm9kZSBzdGFydCBbXSBpblxuICAgICAgbG9vcCB0b192aXNpdDtcbiAgICAgIG5ld19zdGFydCwgdCdcbiAgICA7O1xuICBlbmRcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7ICgqIGNtcCBpcyBwbGFjZWQgZmlyc3QgdG8gc2hvcnQtY2lyY3VpdCBwb2x5bW9ycGhpYyBjb21wYXJlICopXG4gICAgY21wIDogJ2EgLT4gJ2EgLT4gaW50XG4gIDsgbXV0YWJsZSBwb29sIDogJ2EgTm9kZS5Qb29sLnRcbiAgOyAoKiBpbnZhcmlhbnQ6ICBbcm9vdF0gbmV2ZXIgaGFzIGEgc2libGluZyAqKVxuICAgIG11dGFibGUgcm9vdCA6ICdhIE5vZGUudFxuICA7IG11dGFibGUgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyA6IGludFxuICB9XG5cbmxldCBpbnZhcmlhbnQgXyB0ID1cbiAgbGV0IHJlYyBsb29wIHRvX3Zpc2l0ID1cbiAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgKG5vZGUsIGV4cGVjdGVkX3ByZXYsIG1heWJlX3BhcmVudF92YWx1ZSkgOjogcmVzdCAtPlxuICAgICAgaWYgbm90IChOb2RlLmlzX2VtcHR5IG5vZGUpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRoaXNfdmFsdWUgPSBOb2RlLnZhbHVlX2V4biBub2RlIH5wb29sOnQucG9vbCBpblxuICAgICAgICBhc3NlcnQgKE5vZGUuZXF1YWwgKE5vZGUucHJldiBub2RlIH5wb29sOnQucG9vbCkgZXhwZWN0ZWRfcHJldik7XG4gICAgICAgIE9wdGlvbi5pdGVyIG1heWJlX3BhcmVudF92YWx1ZSB+ZjooZnVuIHBhcmVudF92YWx1ZSAtPlxuICAgICAgICAgIGFzc2VydCAodC5jbXAgcGFyZW50X3ZhbHVlIHRoaXNfdmFsdWUgPD0gMCkpO1xuICAgICAgICBsb29wXG4gICAgICAgICAgKChOb2RlLmNoaWxkIG5vZGUgfnBvb2w6dC5wb29sLCBub2RlLCBTb21lIHRoaXNfdmFsdWUpXG4gICAgICAgICAgIDo6IChOb2RlLnNpYmxpbmcgbm9kZSB+cG9vbDp0LnBvb2wsIG5vZGUsIG1heWJlX3BhcmVudF92YWx1ZSlcbiAgICAgICAgICAgOjogcmVzdCkpXG4gICAgICBlbHNlIGxvb3AgcmVzdFxuICBpblxuICBhc3NlcnQgKE5vZGUuaXNfZW1wdHkgdC5yb290IHx8IE5vZGUuaXNfZW1wdHkgKE5vZGUuc2libGluZyB0LnJvb3QgfnBvb2w6dC5wb29sKSk7XG4gIGxvb3AgWyB0LnJvb3QsIE5vZGUuZW1wdHkgKCksIE5vbmUgXVxuOztcblxubGV0IGNyZWF0ZSA/KG1pbl9zaXplID0gMSkgfmNtcCAoKSA9XG4gIHsgY21wXG4gIDsgcG9vbCA9IE5vZGUuUG9vbC5jcmVhdGUgfm1pbl9zaXplXG4gIDsgcm9vdCA9IE5vZGUuZW1wdHkgKClcbiAgOyBudW1fb2ZfYWxsb2NhdGVkX25vZGVzID0gMFxuICB9XG47O1xuXG5sZXQgY29weSB7IGNtcDsgcG9vbDsgcm9vdDsgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyB9ID1cbiAgbGV0IHJvb3QsIHBvb2wgPSBOb2RlLlBvb2wuY29weSBwb29sIHJvb3QgaW5cbiAgeyBjbXA7IHBvb2w7IHJvb3Q7IG51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgfVxuOztcblxubGV0IGFsbG9jYXRlIHQgdiA9XG4gIGlmIE5vZGUuUG9vbC5pc19mdWxsIHQucG9vbCB0aGVuIHQucG9vbCA8LSBOb2RlLlBvb2wuZ3JvdyB0LnBvb2w7XG4gIHQubnVtX29mX2FsbG9jYXRlZF9ub2RlcyA8LSB0Lm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgKyAxO1xuICBOb2RlLmFsbG9jYXRlIHYgfnBvb2w6dC5wb29sIH5pZDooTm9kZS5JZC5vZl9pbnQgdC5udW1fb2ZfYWxsb2NhdGVkX25vZGVzKVxuOztcblxuKCogdHJhbnNsYXRpb246XG4gICB7W1xuICAgICBtYXRjaCByb290MSwgcm9vdDIgd2l0aFxuICAgICB8IE5vbmUsIGggfCBoLCBOb25lIC0+IGhcbiAgICAgfCBTb21lIChOb2RlICh2MSwgY2hpbGRyZW4xKSksIFNvbWUgKE5vZGUgKHYyLCBjaGlsZHJlbjIpKSAtPlxuICAgICAgIGlmIHYxIDwgdjJcbiAgICAgICB0aGVuIFNvbWUgKE5vZGUgKHYxLCByb290MiA6OiBjaGlsZHJlbjEpKVxuICAgICAgIGVsc2UgU29tZSAoTm9kZSAodjIsIHJvb3QxIDo6IGNoaWxkcmVuMikpXG4gICBdfVxuXG4gICBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgbmVpdGhlciByb290IGhhcyBhIHByZXYgbm9kZSAodXN1YWxseSBiZWNhdXNlIHRoZSBpbnB1dHMgY29tZVxuICAgZnJvbSBbZGlzY29ubmVjdF8qXSBvciBhcmUgdGhlIHRvcCBvZiB0aGUgaGVhcCBvciBhcmUgdGhlIG91dHB1dCBvZiB0aGlzIGZ1bmN0aW9uKS4gKilcbmxldCBtZXJnZSB0IHJvb3QxIHJvb3QyID1cbiAgaWYgTm9kZS5pc19lbXB0eSByb290MVxuICB0aGVuIHJvb3QyXG4gIGVsc2UgaWYgTm9kZS5pc19lbXB0eSByb290MlxuICB0aGVuIHJvb3QxXG4gIGVsc2UgKFxuICAgIGxldCBhZGRfY2hpbGQgdCBub2RlIH5jaGlsZCA9XG4gICAgICBOb2RlLmFkZF9jaGlsZCBub2RlIH5wb29sOnQucG9vbCB+Y2hpbGQ7XG4gICAgICBub2RlXG4gICAgaW5cbiAgICBsZXQgdjEgPSBOb2RlLnZhbHVlX2V4biByb290MSB+cG9vbDp0LnBvb2wgaW5cbiAgICBsZXQgdjIgPSBOb2RlLnZhbHVlX2V4biByb290MiB+cG9vbDp0LnBvb2wgaW5cbiAgICBpZiB0LmNtcCB2MSB2MiA8IDBcbiAgICB0aGVuIGFkZF9jaGlsZCB0IHJvb3QxIH5jaGlsZDpyb290MlxuICAgIGVsc2UgYWRkX2NoaWxkIHQgcm9vdDIgfmNoaWxkOnJvb3QxKVxuOztcblxubGV0IHRvcF9leG4gdCA9XG4gIGlmIE5vZGUuaXNfZW1wdHkgdC5yb290XG4gIHRoZW4gZmFpbHdpdGggXCJIZWFwLnRvcF9leG4gY2FsbGVkIG9uIGFuIGVtcHR5IGhlYXBcIlxuICBlbHNlIE5vZGUudmFsdWVfZXhuIHQucm9vdCB+cG9vbDp0LnBvb2xcbjs7XG5cbmxldCB0b3AgdCA9IGlmIE5vZGUuaXNfZW1wdHkgdC5yb290IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvcF9leG4gdClcblxubGV0IGFkZF9ub2RlIHQgdiA9XG4gIGxldCBub2RlID0gYWxsb2NhdGUgdCB2IGluXG4gIHQucm9vdCA8LSBtZXJnZSB0IHQucm9vdCBub2RlO1xuICBub2RlXG47O1xuXG5sZXQgYWRkIHQgdiA9IGlnbm9yZSAoYWRkX25vZGUgdCB2IDogXyBOb2RlLnQpXG5cbigqIFttZXJnZV9wYWlyc10gdGFrZXMgYSBsaXN0IG9mIGhlYXAgcm9vdHMgYW5kIG1lcmdlcyBjb25zZWN1dGl2ZSBwYWlycywgcmVkdWNpbmcgdGhlXG4gICBsaXN0IG9mIGxlbmd0aCBuIHRvIG4vMi4gIFRoZW4gaXQgbWVyZ2VzIHRoZSBtZXJnZWQgcGFpcnMgaW50byBhIHNpbmdsZSBoZWFwLiAgT25lXG4gICBpbnR1aXRpb24gaXMgdGhhdCB0aGlzIGlzIHNvbWV3aGF0IGxpa2UgYnVpbGRpbmcgYSBzaW5nbGUgbGV2ZWwgb2YgYSBiaW5hcnkgdHJlZS5cblxuICAgVGhlIG91dHB1dCBoZWFwIGRvZXMgbm90IGNvbnRhaW4gdGhlIHZhbHVlIHRoYXQgd2FzIGF0IHRoZSByb290IG9mIHRoZSBpbnB1dCBoZWFwLlxuXG4gICBXZSBicmVhayB0aGUgZnVuY3Rpb24gaW50byB0d28gcGFydHMuICBBIGZpcnN0IHN0YWdlIHRoYXQgaXMgd2lsbGluZyB0byB1c2UgbGltaXRlZFxuICAgc3RhY2sgaW5zdGVhZCBvZiBoZWFwIGFsbG9jYXRpb24gZm9yIGJvb2trZWVwaW5nLCBhbmQgYSBzZWNvbmQgc3RhZ2UgdGhhdCBzaGlmdHMgdG9cbiAgIHVzaW5nIGEgbGlzdCBhcyBhbiBhY2N1bXVsYXRvciBpZiB3ZSBnbyB0b28gZGVlcC5cblxuICAgVGhpcyBjYW4gYmUgbWFkZSB0YWlsIHJlY3Vyc2l2ZSBhbmQgbm9uLWFsbG9jYXRpbmcgYnkgc3RhcnRpbmcgd2l0aCBhbiBlbXB0eSBoZWFwIGFuZFxuICAgbWVyZ2luZyBtZXJnZWQgcGFpcnMgaW50byBpdC4gVW5mb3J0dW5hdGVseSB0aGlzIFwibGVmdCBmb2xkXCIgdmVyc2lvbiBpcyBub3Qgd2hhdCBpc1xuICAgZGVzY3JpYmVkIGluIHRoZSBvcmlnaW5hbCBwYXBlciBieSBGcmVkbWFuIGV0IGFsLjsgdGhleSBzcGVjaWZpY2FsbHkgc2F5IHRoYXRcbiAgIGNoaWxkcmVuIHNob3VsZCBiZSBtZXJnZWQgdG9nZXRoZXIgZnJvbSB0aGUgZW5kIG9mIHRoZSBsaXN0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlXG4gICBsaXN0LiAoW21lcmdlXSBpcyBub3QgYXNzb2NpYXRpdmUsIHNvIG9yZGVyIG1hdHRlcnMuKVxuKilcbigqIHRyYW5zbGF0aW9uOlxuICAge1tcbiAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICB8IFtoZWFkXSAtPiBoZWFkIDo6IGFjY1xuICAgICAgIHwgaGVhZCA6OiBuZXh0MSA6OiBuZXh0MiAtPiBsb29wIChtZXJnZSBoZWFkIG5leHQxIDo6IGFjYykgbmV4dDJcbiAgICAgaW5cbiAgICAgbWF0Y2ggbG9vcCBbXSBjaGlsZHJlbiB3aXRoXG4gICAgIHwgW10gLT4gTm9uZVxuICAgICB8IFtoXSAtPiBTb21lIGhcbiAgICAgfCB4IDo6IHhzIC0+IFNvbWUgKExpc3QuZm9sZCB4cyB+aW5pdDp4IH5mOm1lcmdlKVxuICAgXX1cbiopXG5sZXQgYWxsb2NhdGluZ19tZXJnZV9wYWlycyB0IGhlYWQgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGhlYWQgPVxuICAgIGlmIE5vZGUuaXNfZW1wdHkgaGVhZFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmV4dDEgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBoZWFkIH5wb29sOnQucG9vbCBpblxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBuZXh0MVxuICAgICAgdGhlbiBoZWFkIDo6IGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXh0MiA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIG5leHQxIH5wb29sOnQucG9vbCBpblxuICAgICAgICBsb29wIChtZXJnZSB0IGhlYWQgbmV4dDEgOjogYWNjKSBuZXh0MikpXG4gIGluXG4gIG1hdGNoIGxvb3AgW10gaGVhZCB3aXRoXG4gIHwgW10gLT4gTm9kZS5lbXB0eSAoKVxuICB8IFsgaCBdIC0+IGhcbiAgfCB4IDo6IHhzIC0+IExpc3QuZm9sZCB4cyB+aW5pdDp4IH5mOihmdW4gYWNjIGhlYXAgLT4gbWVyZ2UgdCBhY2MgaGVhcClcbjs7XG5cbigqIHRyYW5zbGF0aW9uOlxuICAge1tcbiAgICAgbWF0Y2ggdC5yb290IHdpdGhcbiAgICAgfCBOb2RlIChfLCBjaGlsZHJlbikgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZGVwdGggY2hpbGRyZW4gPVxuICAgICAgICAgaWYgZGVwdGggPj0gbWF4X3N0YWNrX2RlcHRoXG4gICAgICAgICB0aGVuIGFsbG9jYXRpbmdfbWVyZ2VfcGFpcnMgdCBjaGlsZGVuXG4gICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgIG1hdGNoIGNoaWxkcmVuIHdpdGhcbiAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgIHwgW2hlYWRdIC0+IFNvbWUgaGVhZFxuICAgICAgICAgICB8IGhlYWQgOjogbmV4dDEgOjogbmV4dDIgLT5cbiAgICAgICAgICAgICBtZXJnZSAobWVyZ2UgaGVhZCBuZXh0MSkgKGxvb3AgKGRlcHRoICsgMSkgbmV4dDIpXG4gICAgICAgICBlbmRcbiAgICAgICBpblxuICAgICAgIGxvb3AgMCBjaGlsZHJlblxuICAgXX1cbiopXG5sZXQgbWVyZ2VfcGFpcnMgPVxuICBsZXQgbWF4X3N0YWNrX2RlcHRoID0gMV8wMDAgaW5cbiAgbGV0IHJlYyBsb29wIHQgZGVwdGggaGVhZCA9XG4gICAgaWYgZGVwdGggPj0gbWF4X3N0YWNrX2RlcHRoXG4gICAgdGhlbiBhbGxvY2F0aW5nX21lcmdlX3BhaXJzIHQgaGVhZFxuICAgIGVsc2UgaWYgTm9kZS5pc19lbXB0eSBoZWFkXG4gICAgdGhlbiBoZWFkXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmV4dDEgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBoZWFkIH5wb29sOnQucG9vbCBpblxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBuZXh0MVxuICAgICAgdGhlbiBoZWFkXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5leHQyID0gTm9kZS5kaXNjb25uZWN0X3NpYmxpbmcgbmV4dDEgfnBvb2w6dC5wb29sIGluXG4gICAgICAgICgqIG1lcmdlIHRoZSBmaXJzdCB0d28gbm9kZXMgaW4gb3VyIGxpc3QsIGFuZCB0aGVuIG1lcmdlIHRoZSByZXN1bHQgd2l0aCB0aGVcbiAgICAgICAgICAgcmVzdWx0IG9mIHJlY3Vyc2l2ZWx5IGNhbGxpbmcgbWVyZ2VfcGFpcnMgb24gdGhlIHRhaWwgKilcbiAgICAgICAgbWVyZ2UgdCAobWVyZ2UgdCBoZWFkIG5leHQxKSAobG9vcCB0IChkZXB0aCArIDEpIG5leHQyKSkpXG4gIGluXG4gIGZ1biB0IGhlYWQgLT4gbG9vcCB0IDAgaGVhZFxuOztcblxubGV0IHJlbW92ZV9ub25fZW1wdHkgdCBub2RlID1cbiAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgTm9kZS5kZXRhY2ggbm9kZSB+cG9vbDtcbiAgbGV0IG1lcmdlZF9jaGlsZHJlbiA9IG1lcmdlX3BhaXJzIHQgKE5vZGUuZGlzY29ubmVjdF9jaGlsZCBub2RlIH5wb29sKSBpblxuICBsZXQgbmV3X3Jvb3QgPVxuICAgIGlmIE5vZGUuZXF1YWwgdC5yb290IG5vZGUgdGhlbiBtZXJnZWRfY2hpbGRyZW4gZWxzZSBtZXJnZSB0IHQucm9vdCBtZXJnZWRfY2hpbGRyZW5cbiAgaW5cbiAgTm9kZS5mcmVlIG5vZGUgfnBvb2w7XG4gIHQucm9vdCA8LSBuZXdfcm9vdFxuOztcblxubGV0IHJlbW92ZV90b3AgdCA9IGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0LnJvb3QpIHRoZW4gcmVtb3ZlX25vbl9lbXB0eSB0IHQucm9vdFxuXG4oKiBOb3RlIHRoYXQgdGhpcyBpcyB0YWlsLXJlY3Vyc2l2ZSBhbmQgdGhhdCBlYWNoIG5vZGUgaXMgdmlzaXRlZCBhdCBtb3N0IDMgdGltZXMgKG9uY2VcbiAgIGZvciBlYWNoIGJyYW5jaCBvZiB0aGUgXCJpZlwiKSwgc28gaXQgdGFrZXMgbGluZWFyIHRpbWUgYW5kIGNvbnN0YW50IHNwYWNlLiAqKVxubGV0IHJlYyByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBub2RlIH5wb29sID1cbiAgbGV0IGNoaWxkID0gTm9kZS5jaGlsZCBub2RlIH5wb29sIGluXG4gIGxldCBzaWJsaW5nID0gTm9kZS5zaWJsaW5nIG5vZGUgfnBvb2wgaW5cbiAgaWYgbm90IChOb2RlLmlzX2VtcHR5IGNoaWxkKVxuICB0aGVuIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IGNoaWxkIH5wb29sXG4gIGVsc2UgaWYgbm90IChOb2RlLmlzX2VtcHR5IHNpYmxpbmcpXG4gIHRoZW4gcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgc2libGluZyB+cG9vbFxuICBlbHNlIChcbiAgICBsZXQgcHJldiA9IE5vZGUucHJldiBub2RlIH5wb29sIGluXG4gICAgTm9kZS5kZXRhY2ggbm9kZSB+cG9vbDtcbiAgICBOb2RlLmZyZWUgbm9kZSB+cG9vbDtcbiAgICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgcHJldikgdGhlbiByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBwcmV2IH5wb29sKVxuOztcblxubGV0IGNsZWFyIHQgPVxuICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgdC5yb290KVxuICB0aGVuIChcbiAgICByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSB0LnJvb3QgfnBvb2w6dC5wb29sO1xuICAgIHQucm9vdCA8LSBOb2RlLmVtcHR5ICgpKVxuOztcblxubGV0IHBvcF9leG4gdCA9XG4gIGxldCByID0gdG9wX2V4biB0IGluXG4gIHJlbW92ZV90b3AgdDtcbiAgclxuOztcblxubGV0IHBvcCB0ID0gaWYgTm9kZS5pc19lbXB0eSB0LnJvb3QgdGhlbiBOb25lIGVsc2UgU29tZSAocG9wX2V4biB0KVxuXG5sZXQgcG9wX2lmIHQgZiA9XG4gIG1hdGNoIHRvcCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHYgLT5cbiAgICBpZiBmIHZcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZV90b3AgdDtcbiAgICAgIFNvbWUgdilcbiAgICBlbHNlIE5vbmVcbjs7XG5cbigqIHBhaXJpbmcgaGVhcHMgYXJlIG5vdCBiYWxhbmNlZCB0cmVlcywgYW5kIHRoZXJlZm9yZSB3ZSBjYW4ndCByZWx5IG9uIGEgYmFsYW5jZVxuICAgcHJvcGVydHkgdG8gc3RvcCBvdXJzZWx2ZXMgZnJvbSBvdmVyZmxvd2luZyB0aGUgc3RhY2suICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyB0b192aXNpdCA9XG4gICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBub2RlIDo6IHJlc3QgLT5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbm9kZVxuICAgICAgdGhlbiBsb29wIGFjYyByZXN0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHRvX3Zpc2l0ID0gTm9kZS5zaWJsaW5nIH5wb29sIG5vZGUgOjogTm9kZS5jaGlsZCB+cG9vbCBub2RlIDo6IHJlc3QgaW5cbiAgICAgICAgbG9vcCAoZiBhY2MgKE5vZGUudmFsdWVfZXhuIH5wb29sIG5vZGUpKSB0b192aXNpdClcbiAgaW5cbiAgbG9vcCBpbml0IFsgdC5yb290IF0gW0Bub250YWlsXVxuOztcblxuKCogYWxtb3N0IGlkZW50aWNhbCB0byBmb2xkLCBjb3BpZWQgZm9yIHNwZWVkIHB1cnBvc2VzICopXG5sZXQgaXRlciB0IH5mID1cbiAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgbGV0IHJlYyBsb29wIHRvX3Zpc2l0ID1cbiAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgbm9kZSA6OiByZXN0IC0+XG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5vZGVcbiAgICAgIHRoZW4gbG9vcCByZXN0XG4gICAgICBlbHNlIChcbiAgICAgICAgZiAoTm9kZS52YWx1ZV9leG4gfnBvb2wgbm9kZSk7XG4gICAgICAgIGxldCB0b192aXNpdCA9IE5vZGUuc2libGluZyB+cG9vbCBub2RlIDo6IE5vZGUuY2hpbGQgfnBvb2wgbm9kZSA6OiByZXN0IGluXG4gICAgICAgIGxvb3AgdG9fdmlzaXQpXG4gIGluXG4gIGxvb3AgWyB0LnJvb3QgXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSBOb2RlLlBvb2wubGVuZ3RoIHQucG9vbFxuXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgaXNfZW1wdHkgdCA9IE5vZGUuaXNfZW1wdHkgdC5yb290XG5sZXQgbWVtID0gQy5tZW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCBvZl9hcnJheSBhcnIgfmNtcCA9XG4gIGxldCB0ID0gY3JlYXRlIH5taW5fc2l6ZTooQXJyYXkubGVuZ3RoIGFycikgfmNtcCAoKSBpblxuICBBcnJheS5pdGVyIGFyciB+ZjooZnVuIHYgLT4gYWRkIHQgdik7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0IGwgfmNtcCA9IG9mX2FycmF5IChBcnJheS5vZl9saXN0IGwpIH5jbXBcbmxldCBzZXhwX29mX3QgZiB0ID0gQXJyYXkuc2V4cF9vZl90IGYgKHRvX2FycmF5IHQgfD4gQXJyYXkuc29ydGVkX2NvcHkgfmNvbXBhcmU6dC5jbXApXG5cbm1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIG5vZGUgOiAnYSBOb2RlLnRcbiAgICA7IG5vZGVfaWQgOiBOb2RlLklkLnRcbiAgICA7IGhlYXAgOiAnYSB0XG4gICAgfVxuXG4gICgqIElmIGlkcyBhcmUgZGlmZmVyZW50LCBpdCBtZWFucyB0aGF0IHRoZSBub2RlIGhhcyBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBieSBzb21lXG4gICAgIG90aGVyIG1lYW5zIChhbmQgcG9zc2libHkgcmV1c2VkKS4gKilcbiAgbGV0IGlzX25vZGVfdmFsaWQgdCA9IE5vZGUuSWQuZXF1YWwgKE5vZGUuaWQgfnBvb2w6dC5oZWFwLnBvb2wgdC5ub2RlKSB0Lm5vZGVfaWRcblxuICBsZXQgdmFsdWUgdCA9XG4gICAgaWYgaXNfbm9kZV92YWxpZCB0IHRoZW4gU29tZSAoTm9kZS52YWx1ZV9leG4gdC5ub2RlIH5wb29sOnQuaGVhcC5wb29sKSBlbHNlIE5vbmVcbiAgOztcblxuICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgIGlmIGlzX25vZGVfdmFsaWQgdFxuICAgIHRoZW4gTm9kZS52YWx1ZV9leG4gdC5ub2RlIH5wb29sOnQuaGVhcC5wb29sXG4gICAgZWxzZSBmYWlsd2l0aCBcIkhlYXAudmFsdWVfZXhuOiBub2RlIHdhcyByZW1vdmVkIGZyb20gdGhlIGhlYXBcIlxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKHZhbHVlIHQgOiBhIG9wdGlvbildXG5lbmRcblxubGV0IHJlbW92ZSB0ICh0b2tlbiA6IF8gRWx0LnQpID1cbiAgaWYgbm90IChwaHlzX2VxdWFsIHQgdG9rZW4uaGVhcClcbiAgdGhlbiBmYWlsd2l0aCBcImNhbm5vdCByZW1vdmUgZnJvbSBhIGRpZmZlcmVudCBoZWFwXCJcbiAgZWxzZSBpZiBub3QgKE5vZGUuaXNfZW1wdHkgdG9rZW4ubm9kZSlcbiAgdGhlbiAoXG4gICAgaWYgRWx0LmlzX25vZGVfdmFsaWQgdG9rZW4gdGhlbiByZW1vdmVfbm9uX2VtcHR5IHQgdG9rZW4ubm9kZTtcbiAgICB0b2tlbi5ub2RlIDwtIE5vZGUuZW1wdHkgKCkpXG47O1xuXG5sZXQgYWRkX3JlbW92YWJsZSB0IHYgPVxuICBsZXQgbm9kZSA9IGFkZF9ub2RlIHQgdiBpblxuICB7IEVsdC5ub2RlOyBoZWFwID0gdDsgbm9kZV9pZCA9IE5vZGUuaWQgfnBvb2w6dC5wb29sIG5vZGUgfVxuOztcblxubGV0IHVwZGF0ZSB0IHRva2VuIHYgPVxuICByZW1vdmUgdCB0b2tlbjtcbiAgYWRkX3JlbW92YWJsZSB0IHZcbjs7XG5cbmxldCBmaW5kX2VsdCA9XG4gIGxldCByZWMgbG9vcCB0IGYgbm9kZXMgPVxuICAgIG1hdGNoIG5vZGVzIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IG5vZGUgOjogcmVzdCAtPlxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBub2RlXG4gICAgICB0aGVuIGxvb3AgdCBmIHJlc3RcbiAgICAgIGVsc2UgaWYgZiAoTm9kZS52YWx1ZV9leG4gbm9kZSB+cG9vbDp0LnBvb2wpXG4gICAgICB0aGVuIFNvbWUgeyBFbHQubm9kZTsgaGVhcCA9IHQ7IG5vZGVfaWQgPSBOb2RlLmlkIH5wb29sOnQucG9vbCBub2RlIH1cbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCB0IGYgKE5vZGUuc2libGluZyBub2RlIH5wb29sOnQucG9vbCA6OiBOb2RlLmNoaWxkIG5vZGUgfnBvb2w6dC5wb29sIDo6IHJlc3QpXG4gIGluXG4gIGZ1biB0IH5mIC0+IGxvb3AgdCBmIFsgdC5yb290IF1cbjs7XG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgaGVhcCA9ICdhIHRcbiAgICB0eXBlICdhIHQgPSAnYSBOb2RlLnRcblxuICAgIGxldCB2YWx1ZSB0IGhlYXAgPSBOb2RlLnZhbHVlX2V4biB+cG9vbDpoZWFwLnBvb2wgdFxuICBlbmRcblxuICBsZXQgYWRkX3JlbW92YWJsZSA9IGFkZF9ub2RlXG4gIGxldCByZW1vdmUgPSByZW1vdmVfbm9uX2VtcHR5XG5cbiAgbGV0IHVwZGF0ZSB0IGVsdCB2ID1cbiAgICByZW1vdmUgdCBlbHQ7XG4gICAgYWRkX3JlbW92YWJsZSB0IHZcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgIHZhbCBhbV9ydW5uaW5nX3Rlc3QgOiBib29sXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHBdXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgYSA9XG4gICAgaWYgTS5hbV9ydW5uaW5nX3Rlc3QgdGhlbiBTZXhwLkF0b20gXCI8aGlkZGVuX2luX3Rlc3Q+XCIgZWxzZSBzZXhwX29mX2EgYVxuICA7O1xuXG4gIG1vZHVsZSBXaXRoX25vbl9yb3VuZHRyaXBwaW5nX2luX3Rlc3Rfb2Zfc2V4cCA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHBdXG4gIGVuZFxuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBtb2R1bGUgVHVybmVkX29mZiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29mZiA9IE1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSBmYWxzZVxuICAgICAgICBlbmQpXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdF90dXJuZWRfb2ZmLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUdXJuZWRfb24gPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vbiA9IE1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSB0cnVlXG4gICAgICAgIGVuZClcblxuICAgICAgdHlwZSBub25yZWMgdCA9IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vbi50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJUdXJuZWQgb25cIiA9XG4gICAgICBwcmludF9zIFslc2V4cCAoMTAyNCA6IFR1cm5lZF9vbi50KV07XG4gICAgICBbJWV4cGVjdCB7fCA8aGlkZGVuX2luX3Rlc3Q+IHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJUdXJuZWQgb2ZmXCIgPVxuICAgICAgcHJpbnRfcyAoWyVzZXhwX29mOiBUdXJuZWRfb2ZmLnRdIDEwMjQpO1xuICAgICAgWyVleHBlY3Qge3wgMTAyNCB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuXG5pbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSBhbV9ydW5uaW5nX3Rlc3RcbiAgZW5kKVxuIiwib3BlbiBCYXNlXG5cbnR5cGUgKydhIHRcblxuKCogVGhpcyBbT2JqLm1hZ2ljXSBpcyBPSyBiZWNhdXNlIHdlIG5ldmVyIGFsbG93IHVzZXIgY29kZSBhY2Nlc3MgdG8gW25vbmVdIChleGNlcHQgdmlhXG4gICBbdW5zYWZlX3ZhbHVlXSkuICBXZSBkaXNhbGxvdyBbXyBVb3B0LnQgVW9wdC50XSwgc28gdGhlcmUgaXMgbm8gY2hhbmNlIG9mIGNvbmZ1c2luZ1xuICAgW25vbmVdIHdpdGggW3NvbWUgbm9uZV0uICBBbmQgW2Zsb2F0IFVvcHQudCBhcnJheV0gaXMgc2ltaWxhcmx5IGRpc2FsbG93ZWQuICopXG5sZXQgbm9uZSA6ICdhIHQgPSBTdGRsaWIuT2JqLm1hZ2ljIFwiVW9wdC5ub25lXCJcblxubGV0W0BpbmxpbmVdIHNvbWUgKHggOiAnYSkgPVxuICBsZXQgciA6ICdhIHQgPSBTdGRsaWIuT2JqLm1hZ2ljIHggaW5cbiAgaWYgcGh5c19lcXVhbCByIG5vbmUgdGhlbiBmYWlsd2l0aCBcIlVvcHQuc29tZSBVb3B0Lm5vbmVcIjtcbiAgclxuOztcblxubGV0IHNvbWVfbG9jYWwgPSBTdGRsaWIuT2JqLm1hZ2ljIHNvbWVcbmxldCBzb21lX2xvY2FsIDogJ2EuICgnYVtAbG9jYWxdKSAtPiAoJ2EgdFtAbG9jYWxdKSA9IHNvbWVfbG9jYWxcbmxldCB1bnNhZmVfdmFsdWUgKHggOiAnYSB0KSA6ICdhID0gU3RkbGliLk9iai5tYWdpYyB4XG5sZXQgdW5zYWZlX3ZhbHVlX2xvY2FsID0gU3RkbGliLk9iai5tYWdpYyB1bnNhZmVfdmFsdWVcbmxldCB1bnNhZmVfdmFsdWVfbG9jYWwgOiAnYS4gKCdhIHRbQGxvY2FsXSkgLT4gKCdhW0Bsb2NhbF0pID0gdW5zYWZlX3ZhbHVlX2xvY2FsXG5sZXQgaXNfbm9uZSB0ID0gcGh5c19lcXVhbCB0IG5vbmVcbmxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGlmIGlzX3NvbWUgdCB0aGVuIGludmFyaWFudF9hICh1bnNhZmVfdmFsdWUgdClcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gIGlmIGlzX25vbmUgdCB0aGVuIFslc2V4cCBOb25lXSBlbHNlIFslc2V4cCBTb21lICh1bnNhZmVfdmFsdWUgdCA6IGEpXVxuOztcblxubGV0IHZhbHVlX2V4biB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gZmFpbHdpdGggXCJVb3B0LnZhbHVlX2V4blwiIGVsc2UgdW5zYWZlX3ZhbHVlIHRcbmxldCB0b19vcHRpb24gdCA9IGlmIGlzX25vbmUgdCB0aGVuIE5vbmUgZWxzZSBTb21lICh1bnNhZmVfdmFsdWUgdClcblxubGV0IG9mX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBub25lXG4gIHwgU29tZSBhIC0+IHNvbWUgYVxuOztcblxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuc2FmZV92YWx1ZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTG9jYWwgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuc2FmZV92YWx1ZV9sb2NhbFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5sZXQldGVzdF9tb2R1bGUgXyA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0JWV4cGVjdF90ZXN0IChcInVzaW5nIHRoZSBzYW1lIHNlbnRpbmVsIHZhbHVlXCIgW0B0YWdzIFwibm8tanNcIl0pID1cbiAgICAgIG1hdGNoIHNvbWUgXCJVb3B0Lm5vbmVcIiB3aXRoXG4gICAgICB8IChfIDogc3RyaW5nIHQpIC0+IGZhaWx3aXRoIFwic2hvdWxkIG5vdCBoYXZlIGdvdHRlbiB0byB0aGlzIHBvaW50XCJcbiAgICAgIHwgZXhjZXB0aW9uIF8gLT4gKClcbiAgICA7O1xuICBlbmQpXG47O1xuIiwiKCogVGhpcyBtb2R1bGUgZXhwbG9pdHMgdGhlIGZhY3QgdGhhdCBPQ2FtbCBkb2VzIG5vdCBwZXJmb3JtIGNvbnRleHQtc3dpdGNoZXMgdW5kZXJcbiAgIGNlcnRhaW4gY29uZGl0aW9ucy4gIEl0IGNhbiB0aGVyZWZvcmUgYXZvaWQgdXNpbmcgbXV0ZXhlcy5cblxuICAgR2l2ZW4gdGhlIHNlbWFudGljcyBvZiB0aGUgY3VycmVudCBPQ2FtbCBydW50aW1lIChhbmQgZm9yIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUpLCBjb2RlXG4gICBzZWN0aW9ucyBkb2N1bWVudGVkIGFzIGF0b21pYyBiZWxvdyB3aWxsIG5ldmVyIGNvbnRhaW4gYSBjb250ZXh0LXN3aXRjaC4gIFRoZSBkZWNpZGluZ1xuICAgY3JpdGVyaW9uIGlzIHdoZXRoZXIgdGhleSBjb250YWluIGFsbG9jYXRpb25zIG9yIGNhbGxzIHRvIGV4dGVybmFsL2J1aWx0aW4gZnVuY3Rpb25zLlxuICAgSWYgdGhlcmUgaXMgbm9uZSwgYSBjb250ZXh0LXN3aXRjaCBjYW5ub3QgaGFwcGVuLiAgQXNzaWdubWVudHMgd2l0aG91dCBhbGxvY2F0aW9ucyxcbiAgIGZpZWxkIGFjY2VzcywgcGF0dGVybi1tYXRjaGluZywgZXRjLiwgZG8gbm90IHRyaWdnZXIgY29udGV4dC1zd2l0Y2hlcy5cblxuICAgQ29kZSByZXZpZXdlcnMgc2hvdWxkIHRoZXJlZm9yZSBtYWtlIHN1cmUgdGhhdCB0aGUgc2VjdGlvbnMgZG9jdW1lbnRlZCBhcyBhdG9taWMgYmVsb3dcbiAgIGRvIG5vdCB2aW9sYXRlIHRoZSBhYm92ZSBhc3N1bXB0aW9ucy4gIEl0IGlzIHBydWRlbnQgdG8gZGlzYXNzZW1ibGUgdGhlIC5vIGZpbGUgKHVzaW5nXG4gICBbb2JqZHVtcCAtZHJdKSBhbmQgZXhhbWluZSBpdC4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgdmFsdWUgOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dCA6ICgnYSB0IFVvcHQudFtAc2V4cC5vcGFxdWVdKVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlICgpID0geyB2YWx1ZSA9IFVvcHQubm9uZTsgbmV4dCA9IFVvcHQubm9uZSB9XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAoKiBbZnJvbnRdIHRvIFtiYWNrXSBoYXMgW2xlbmd0aCArIDFdIGxpbmtlZCBlbGVtZW50cywgd2hlcmUgdGhlIGZpcnN0IFtsZW5ndGhdIGhvbGQgdGhlXG4gICAgIHZhbHVlcyBpbiB0aGUgcXVldWUsIGFuZCB0aGUgbGFzdCBpcyBbYmFja10sIGhvbGRpbmcgbm8gdmFsdWUuICopXG4gIDsgbXV0YWJsZSBmcm9udCA6ICdhIEVsdC50XG4gIDsgbXV0YWJsZSBiYWNrIDogJ2EgRWx0LnRcbiAgKCogW3VudXNlZF9lbHRzXSBpcyBzaW5nbHkgbGlua2VkIHZpYSBbbmV4dF0sIGFuZCBlbmRzIHdpdGggW3NlbnRpbmVsXS4gIEFsbCBlbHRzIGluXG4gICAgIFt1bnVzZWRfZWx0c10gaGF2ZSBbVW9wdC5pc19ub25lIGVsdC52YWx1ZV0uICopXG4gIDsgbXV0YWJsZSB1bnVzZWRfZWx0cyA6ICdhIEVsdC50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOihjaGVjayAoZnVuIGxlbmd0aCAtPiBhc3NlcnQgKGxlbmd0aCA+PSAwKSkpXG4gICAgICB+ZnJvbnQ6XG4gICAgICAgIChjaGVjayAoZnVuIGZyb250IC0+XG4gICAgICAgICAgIGxldCBpID0gcmVmIHQubGVuZ3RoIGluXG4gICAgICAgICAgIGxldCByID0gcmVmIGZyb250IGluXG4gICAgICAgICAgIHdoaWxlICFpID4gMCBkb1xuICAgICAgICAgICAgIGRlY3IgaTtcbiAgICAgICAgICAgICBsZXQgZWx0ID0gIXIgaW5cbiAgICAgICAgICAgICByIDo9IFVvcHQudmFsdWVfZXhuIGVsdC5FbHQubmV4dDtcbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfc29tZSBlbHQudmFsdWUpXG4gICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCAhciB0LmJhY2spKSlcbiAgICAgIH5iYWNrOihjaGVjayAoZnVuIGJhY2sgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgYmFjay5FbHQudmFsdWUpKSlcbiAgICAgIH51bnVzZWRfZWx0czpcbiAgICAgICAgKGNoZWNrIChmdW4gdW51c2VkX2VsdHMgLT5cbiAgICAgICAgICAgbGV0IHIgPSByZWYgdW51c2VkX2VsdHMgaW5cbiAgICAgICAgICAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgICAgICAgICAgbGV0IGVsdCA9IFVvcHQudmFsdWVfZXhuICFyIGluXG4gICAgICAgICAgICAgciA6PSBlbHQuRWx0Lm5leHQ7XG4gICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX25vbmUgZWx0LnZhbHVlKVxuICAgICAgICAgICBkb25lKSkpXG47O1xuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IGVsdCA9IEVsdC5jcmVhdGUgKCkgaW5cbiAgeyBmcm9udCA9IGVsdDsgYmFjayA9IGVsdDsgbGVuZ3RoID0gMDsgdW51c2VkX2VsdHMgPSBVb3B0Lm5vbmUgfVxuOztcblxubGV0IGdldF91bnVzZWRfZWx0IHQgPVxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICBpZiBVb3B0LmlzX3NvbWUgdC51bnVzZWRfZWx0c1xuICB0aGVuIChcbiAgICBsZXQgZWx0ID0gVW9wdC51bnNhZmVfdmFsdWUgdC51bnVzZWRfZWx0cyBpblxuICAgIHQudW51c2VkX2VsdHMgPC0gZWx0Lm5leHQ7XG4gICAgZWx0ICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKSlcbiAgZWxzZSBFbHQuY3JlYXRlICgpXG47O1xuXG5sZXQgZW5xdWV1ZSAodHlwZSBhKSAodCA6IGEgdCkgKGEgOiBhKSA9XG4gIGxldCBuZXdfYmFjayA9IGdldF91bnVzZWRfZWx0IHQgaW5cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxO1xuICB0LmJhY2sudmFsdWUgPC0gVW9wdC5zb21lIGE7XG4gIHQuYmFjay5uZXh0IDwtIFVvcHQuc29tZSBuZXdfYmFjaztcbiAgdC5iYWNrIDwtIG5ld19iYWNrXG47O1xuXG4oKiBFTkQgQVRPTUlDIFNFQ1RJT04gKilcblxubGV0IHJldHVybl91bnVzZWRfZWx0IHQgKGVsdCA6IF8gRWx0LnQpID1cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgZWx0LnZhbHVlIDwtIFVvcHQubm9uZTtcbiAgZWx0Lm5leHQgPC0gdC51bnVzZWRfZWx0cztcbiAgdC51bnVzZWRfZWx0cyA8LSBVb3B0LnNvbWUgZWx0O1xuICAoKiBFTkQgQVRPTUlDIFNFQ1RJT04gKilcbiAgKClcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfZGVxdWV1ZV9lbXB0eSB0ID1cbiAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biBvZiBlbXB0eSBxdWV1ZVwiIHQgWyVzZXhwX29mOiBfIHRdXG47O1xuXG5sZXQgZGVxdWV1ZV9leG4gdCA9XG4gICgqIEJFR0lOIEFUT01JQyBTRUNUSU9OICopXG4gIGlmIHQubGVuZ3RoID0gMCB0aGVuIHJhaXNlX2RlcXVldWVfZW1wdHkgdDtcbiAgbGV0IGVsdCA9IHQuZnJvbnQgaW5cbiAgbGV0IGEgPSBlbHQudmFsdWUgaW5cbiAgdC5mcm9udCA8LSBVb3B0LnVuc2FmZV92YWx1ZSBlbHQubmV4dDtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAoKiBFTkQgQVRPTUlDIFNFQ1RJT04gKilcbiAgcmV0dXJuX3VudXNlZF9lbHQgdCBlbHQ7XG4gIFVvcHQudW5zYWZlX3ZhbHVlIGFcbjs7XG5cbmxldCBjbGVhcl9pbnRlcm5hbF9wb29sIHQgPSB0LnVudXNlZF9lbHRzIDwtIFVvcHQubm9uZVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgVW9wdCA9IFVvcHRcbmVuZFxuIiwiaW5jbHVkZSBDb3JlLkNvcmVfcHJpdmF0ZS5UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5cbigqIFthZnRlcl0gaXMgbGlrZSBbYWRkXSwgYnV0IGRlYWxzIG5pY2VseSB3aXRoIHRoZSBjYXNlIG9mIG92ZXJmbG93IGJ5IGluc3RlYWQgcmV0dXJuaW5nXG4gICBbbWF4X3ZhbHVlXS4gIFRpbWUtc291cmNlIGZ1bmN0aW9ucyB1c2UgW2FmdGVyXSB0byBhdm9pZCBpbW1lZGlhdGVseSBmaXJpbmcgZXZlbnRzIHRoYXRcbiAgIHNob3VsZCBuZXZlciBmaXJlLCBkdWUgdG8gdGhlIG92ZXJmbG93IGxlYWRpbmcgdG8gYSBuZWdhdGl2ZSB0aW1lIHRoYXQgYXBwZWFycyB0byBiZSBpblxuICAgdGhlIHBhc3QuICBXZSBkb24ndCBjaGVjayB1bmRlcmZsb3cgYmVjYXVzZSB0aGF0IGlzIHZlcnkgdW5saWtlbHksIHJlcXVpcmluZyBib3RoIGFcbiAgIG5lZ2F0aXZlIHRpbWUgYW5kIGEgbmVnYXRpdmUgc3Bhbi4gKilcbmxldCBhZnRlciB0IHNwYW4gPVxuICBsZXQgcmVzdWx0ID0gYWRkIHQgc3BhbiBpblxuICBpZiBTcGFuLiggPiApIHNwYW4gU3Bhbi56ZXJvICYmIHJlc3VsdCA8IHQgdGhlbiBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyBlbHNlIHJlc3VsdFxuOztcbiIsIm1vZHVsZSBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5ID0gVGltZV9uc1xub3BlbiBDb3JlXG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnlcbmluY2x1ZGUgQXN5bmNfa2VybmVsX2NvbmZpZy5QcmludF9kZWJ1Z19tZXNzYWdlc19mb3JcblxubGV0IGxvZyBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgZXByaW50ZlxuICAgIFwiJXNcXG4lIVwiXG4gICAgKFNleHAudG9fc3RyaW5nX2h1bVxuICAgICAgIChbJXNleHBfb2Y6IFNleHAudCAqIFRpbWVfbnMudCAqIHN0cmluZyAqIGFdXG4gICAgICAgICAgKCFBc3luY19rZXJuZWxfY29uZmlnLnRhc2tfaWQgKCksIFRpbWVfbnMubm93ICgpLCBtZXNzYWdlLCBhKSkpXG47O1xuXG5sZXQgbG9nX3N0cmluZyBtZXNzYWdlID0gbG9nIG1lc3NhZ2UgKCkgWyVzZXhwX29mOiB1bml0XVxuIiwibW9kdWxlIERlYnVnX2luX3RoaXNfZGlyZWN0b3J5ID0gRGVidWdcbm1vZHVsZSBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5ID0gVGltZV9uc1xub3BlbiEgQ29yZVxuaW5jbHVkZSBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgRGVidWcgPSBEZWJ1Z19pbl90aGlzX2RpcmVjdG9yeVxubW9kdWxlIFRpbWVfbnMgPSBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5XG5tb2R1bGUgUG9vbCA9IFR1cGxlX3Bvb2xcblxubW9kdWxlIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID1cbiAgQXN5bmNfa2VybmVsX2NvbmZpZy5NYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuXG5sZXQgY29uY2F0ID0gU3RyaW5nLmNvbmNhdFxubGV0IGVwcmludCA9IENvcmUuRGVidWcuZXByaW50XG5sZXQgZXByaW50X3MgPSBDb3JlLkRlYnVnLmVwcmludF9zXG5sZXQgZXByaW50cyA9IENvcmUuRGVidWcuZXByaW50c1xubGV0IHByaW50X3Mgc2V4cCA9IHByaW50ZiBcIiVzXFxuJSFcIiAoc2V4cCB8PiBTZXhwLnRvX3N0cmluZ19odW0pXG5sZXQgc2VjID0gVGltZV9ucy5TcGFuLm9mX3NlY1xuXG4oKiBXZSBkb24ndCB3YW50IHRvIHVzZSB0aGVzZSBtb2R1bGVzIGluIEFzeW5jX2tlcm5lbCwgdG8gYXZvaWQgZGlmZmljdWx0aWVzIHdpdGhcbiAgIHVzaW5nIGl0IG9uIGpzX29mX29jYW1sLiAqKVxubW9kdWxlIFRocmVhZCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBVbml4ID0gc3RydWN0IGVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTm9ybWFsXG4gIHwgTG93XG5bQEBkZXJpdmluZyBzZXhwX29mLCBlbnVtZXJhdGVdXG5cbmxldCBub3JtYWwgPSBOb3JtYWxcbmxldCBsb3cgPSBMb3dcbiIsIigqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBtdXR1YWxseSByZWN1cnNpdmUgdHlwZXMgYXQgdGhlIGhlYXJ0IG9mIEFzeW5jLiAgVGhlIGZ1bmN0aW9uc1xuICAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0eXBlcyBhcmUgZGVmaW5lZCBpbiB0aGUgY29ycmVzcG9uZGluZyBmaWxlKHMpIGZvciBlYWNoIG1vZHVsZS5cbiAgIFRoaXMgZmlsZSBzaG91bGQgZGVmaW5lIG9ubHkgdHlwZXMsIG5vdCBmdW5jdGlvbnMsIHNpbmNlIGZ1bmN0aW9ucyBkZWZpbmVkIGluc2lkZSB0aGVcbiAgIHJlY3Vyc2l2ZSBtb2R1bGVzIGFyZSBub3QgaW5saW5lZC5cblxuICAgSWYgeW91IG5lZWQgdG8gYWRkIGZ1bmN0aW9uYWxpdHkgdG8gYSBtb2R1bGUgYnV0IGRvaW5nIHNvIHdvdWxkIGNyZWF0ZSBhIGRlcGVuZGVuY3lcbiAgIGN5Y2xlLCBzcGxpdCB0aGUgZmlsZSBpbnRvIHBpZWNlcyBhcyBuZWVkZWQgdG8gYnJlYWsgdGhlIGN5Y2xlLCBlLmcuIHNjaGVkdWxlcjAubWwsXG4gICBzY2hlZHVsZXIxLm1sLCBzY2hlZHVsZXIubWwuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgcmVjIENlbGwgOiBzaWdcbiAgdHlwZSBhbnkgPVxuICAgIFsgYEVtcHR5XG4gICAgfCBgRW1wdHlfb25lX2hhbmRsZXJcbiAgICB8IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgIHwgYEZ1bGxcbiAgICB8IGBJbmRpclxuICAgIF1cblxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgOlxuICAgICAgICB7IG11dGFibGUgcnVuIDogJ2EgLT4gdW5pdFxuICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgICA7IG11dGFibGUgcHJldiA6ICdhIEhhbmRsZXIudFxuICAgICAgICA7IG11dGFibGUgbmV4dCA6ICdhIEhhbmRsZXIudFxuICAgICAgICB9XG4gICAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIHRcbiAgICB8IEVtcHR5X29uZV9oYW5kbGVyIDpcbiAgICAgICAgKCdhIC0+IHVuaXQpICogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfaGFuZGxlciBdKSB0XG4gICAgfCBFbXB0eSA6ICgnYSwgWz4gYEVtcHR5IF0pIHRcbiAgICB8IEZ1bGwgOiAnYSAtPiAoJ2EsIFs+IGBGdWxsIF0pIHRcbiAgICB8IEluZGlyIDogJ2EgSXZhci50IC0+ICgnYSwgWz4gYEluZGlyIF0pIHRcbmVuZCA9XG4gIENlbGxcblxuYW5kIEhhbmRsZXIgOiBzaWdcbiAgdHlwZSAnYSB0ID0gKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBDZWxsLnRcbmVuZCA9XG4gIEhhbmRsZXJcblxuYW5kIEl2YXIgOiBzaWdcbiAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIGNlbGwgOiAoJ2EsIENlbGwuYW55KSBDZWxsLnQgfVxuXG4gIG1vZHVsZSBJbW11dGFibGUgOiBzaWdcbiAgICB0eXBlICdhIHQgPSB7IGNlbGwgOiAoJ2EsIENlbGwuYW55KSBDZWxsLnQgfVxuICBlbmRcbmVuZCA9XG4gIEl2YXJcblxuYW5kIERlZmVycmVkIDogc2lnXG4gIHR5cGUgKyEnYSB0XG5lbmQgPVxuICBEZWZlcnJlZFxuXG5hbmQgRXhlY3V0aW9uX2NvbnRleHQgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgICA7IHByaW9yaXR5IDogUHJpb3JpdHkudFxuICAgIDsgbG9jYWxfc3RvcmFnZSA6IFVuaXZfbWFwLnRcbiAgICA7IGJhY2t0cmFjZV9oaXN0b3J5IDogQmFja3RyYWNlLnQgbGlzdFxuICAgIH1cbmVuZCA9XG4gIEV4ZWN1dGlvbl9jb250ZXh0XG5cbmFuZCBGb3J3YXJkaW5nIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgfCBEZXRhY2hlZFxuICAgIHwgUGFyZW50IG9mIE1vbml0b3IudFxuICAgIHwgUmVwb3J0X3VuY2F1Z2h0X2V4blxuZW5kID1cbiAgRm9yd2FyZGluZ1xuXG5hbmQgTW9uaXRvciA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbmFtZSA6IEluZm8udFxuICAgIDsgaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgb3B0aW9uXG4gICAgOyBpZCA6IGludFxuICAgIDsgbXV0YWJsZSBuZXh0X2Vycm9yIDogZXhuIEl2YXIudFxuICAgIDsgbXV0YWJsZSBoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyA6IChFeGVjdXRpb25fY29udGV4dC50ICogKGV4biAtPiB1bml0KSkgQmFnLnRcbiAgICA7IG11dGFibGUgdGFpbHNfZm9yX2FsbF9lcnJvcnMgOiBleG4gVGFpbC50IGxpc3RcbiAgICA7IG11dGFibGUgaGFzX3NlZW5fZXJyb3IgOiBib29sXG4gICAgOyBtdXRhYmxlIGZvcndhcmRpbmcgOiBGb3J3YXJkaW5nLnRcbiAgICB9XG5lbmQgPVxuICBNb25pdG9yXG5cbmFuZCBUYWlsIDogc2lnXG4gIHR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBuZXh0IDogJ2EgU3RyZWFtLm5leHQgSXZhci50IH1cbmVuZCA9XG4gIFRhaWxcblxuYW5kIFN0cmVhbSA6IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBuZXh0IERlZmVycmVkLnRcblxuICBhbmQgJ2EgbmV4dCA9XG4gICAgfCBOaWxcbiAgICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5lbmQgPVxuICBTdHJlYW1cblxuKCogV2UgYXZvaWQgdXNpbmcgW21vZHVsZSByZWNdIHRvIGRlZmluZSBbQnZhcl0sIHNvIHRoYXQgW3RvX3JlcHJdIGFuZCBbb2ZfcmVwcl0gYXJlXG4gICBpbmxpbmVkLiAqKVxubW9kdWxlIEJ2YXIgOiBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybWlzc2lvbikgdFxuXG4gICgqKiBbcmVwcl0gZXhpc3RzIHNvIHRoYXQgd2UgbWF5IGhpZGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgW0J2YXIudF0sIGFuZCB0aGVuIGFkZCBhXG4gICAgICBwaGFudG9tIHR5cGUgdG8gaXQgdXBzdHJlYW0uICBXaXRob3V0IHRoaXMsIHRoZSBwaGFudG9tIHR5cGUgdmFyaWFibGUgd291bGQgYWxsb3dcbiAgICAgIGZvciBhbnl0aGluZyB0byBiZSBjb2VyY2VkIGluIGFuZCBvdXQsIHNpbmNlIGl0IGlzIHVudXNlZC4gKilcbiAgdHlwZSAnYSByZXByID1cbiAgICB7IG11dGFibGUgaGFzX2FueV93YWl0ZXJzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBpdmFyIDogJ2EgSXZhci50XG4gICAgfVxuXG4gIHZhbCBvZl9yZXByIDogJ2EgcmVwciAtPiAoJ2EsICdwZXJtaXNzaW9uKSB0XG4gIHZhbCB0b19yZXByIDogKCdhLCAncGVybWlzc2lvbikgdCAtPiAnYSByZXByXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSByZXByID1cbiAgICB7IG11dGFibGUgaGFzX2FueV93YWl0ZXJzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBpdmFyIDogJ2EgSXZhci50XG4gICAgfVxuXG4gIHR5cGUgKCdhLCAncGVybWlzc2lvbikgdCA9ICdhIHJlcHJcblxuICBsZXQgdG9fcmVwciB0ID0gdFxuICBsZXQgb2ZfcmVwciB0ID0gdFxuZW5kXG5cbm1vZHVsZSByZWMgRXZlbnQgOiBzaWdcbiAgbW9kdWxlIFN0YXR1cyA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEZpcmVkXG4gICAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudFxuICAgICAgfCBTY2hlZHVsZWRcbiAgICAgIHwgVW5zY2hlZHVsZWRcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGlvbiA6IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50XG4gICAgOyBtdXRhYmxlIGF0IDogVGltZV9ucy50XG4gICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIG5leHRfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICA7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICB9XG5lbmQgPVxuICBFdmVudFxuXG5hbmQgRXh0ZXJuYWxfam9iIDogc2lnXG4gIHR5cGUgdCA9IFQgOiBFeGVjdXRpb25fY29udGV4dC50ICogKCdhIC0+IHVuaXQpICogJ2EgLT4gdFxuZW5kID1cbiAgRXh0ZXJuYWxfam9iXG5cbmFuZCBKb2IgOiBzaWdcbiAgdHlwZSBzbG90cyA9IChFeGVjdXRpb25fY29udGV4dC50LCBPYmoudCAtPiB1bml0LCBPYmoudCkgUG9vbC5TbG90cy50M1xuICB0eXBlIHQgPSBzbG90cyBQb29sLlBvaW50ZXIudFxuZW5kID1cbiAgSm9iXG5cbmFuZCBKb2Jfb3JfZXZlbnQgOiBzaWdcbiAgdHlwZSB0XG5lbmQgPVxuICBKb2Jfb3JfZXZlbnRcblxuYW5kIEpvYl9wb29sIDogc2lnXG4gIHR5cGUgdCA9IEpvYi5zbG90cyBQb29sLnRcbmVuZCA9XG4gIEpvYl9wb29sXG5cbmFuZCBKb2JfcXVldWUgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgbnVtX2pvYnNfcnVuIDogaW50XG4gICAgOyBtdXRhYmxlIGpvYnNfbGVmdF90aGlzX2N5Y2xlIDogaW50XG4gICAgOyBtdXRhYmxlIGpvYnMgOiBPYmoudCBVbmlmb3JtX2FycmF5LnRcbiAgICA7IG11dGFibGUgbWFzayA6IGludFxuICAgIDsgbXV0YWJsZSBmcm9udCA6IGludFxuICAgIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7IG11dGFibGUgYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgICB9XG5lbmQgPVxuICBKb2JfcXVldWVcblxuYW5kIEpvYnMgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IHNjaGVkdWxlciA6IFNjaGVkdWxlci50XG4gICAgOyBtdXRhYmxlIGpvYl9wb29sIDogSm9iX3Bvb2wudFxuICAgIDsgbm9ybWFsIDogSm9iX3F1ZXVlLnRcbiAgICA7IGxvdyA6IEpvYl9xdWV1ZS50XG4gICAgfVxuZW5kID1cbiAgSm9ic1xuXG5hbmQgU2NoZWR1bGVyIDogc2lnXG5cbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY2hlY2tfYWNjZXNzIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGpvYl9wb29sIDogSm9iX3Bvb2wudFxuICAgIDsgbm9ybWFsX3ByaW9yaXR5X2pvYnMgOiBKb2JfcXVldWUudFxuICAgIDsgbG93X3ByaW9yaXR5X2pvYnMgOiBKb2JfcXVldWUudFxuICAgIDsgdmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyA6IFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50IERlcXVlLnRcbiAgICA7IG11dGFibGUgbWFpbl9leGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgdW5jYXVnaHRfZXhuIDogKEV4bi50ICogU2V4cC50KSBvcHRpb25cbiAgICA7IG11dGFibGUgY3ljbGVfY291bnQgOiBpbnRcbiAgICA7IG11dGFibGUgY3ljbGVfc3RhcnQgOiBUaW1lX25zLnRcbiAgICA7IG11dGFibGUgaW5fY3ljbGUgOiBib29sXG4gICAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA6IEN5Y2xlX2hvb2sudCBhcnJheVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIDogKEN5Y2xlX2hvb2tfaGFuZGxlLnQsIEN5Y2xlX2hvb2sudCkgSGFzaHRibC50XG4gICAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9lbmQgOiBDeWNsZV9ob29rLnQgYXJyYXlcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgOiAoQ3ljbGVfaG9va19oYW5kbGUudCwgQ3ljbGVfaG9vay50KSBIYXNodGJsLnRcbiAgICA7IG11dGFibGUgbGFzdF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgbGFzdF9jeWNsZV9udW1fam9icyA6IGludFxuICAgIDsgbXV0YWJsZSB0b3RhbF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgdGltZV9zb3VyY2UgOiByZWFkX3dyaXRlIFRpbWVfc291cmNlLnQxXG4gICAgOyBleHRlcm5hbF9qb2JzIDogRXh0ZXJuYWxfam9iLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICAgIDsgbXV0YWJsZSB0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA6IHVuaXQgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBqb2JfcXVldWVkX2hvb2sgOiAoUHJpb3JpdHkudCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgZXZlbnRfYWRkZWRfaG9vayA6IChUaW1lX25zLnQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBtdXRhYmxlIHlpZWxkIDogKHVuaXQsIHJlYWRfd3JpdGUpIEJ2YXIudFxuICAgIDsgbXV0YWJsZSB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA6ICh1bml0LCByZWFkX3dyaXRlKSBCdmFyLnRcbiAgICA7IG11dGFibGUgY2hlY2tfaW52YXJpYW50cyA6IGJvb2xcbiAgICA7IG11dGFibGUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XG4gICAgOyBtdXRhYmxlIHJlY29yZF9iYWNrdHJhY2VzIDogYm9vbFxuICAgIH1cbmVuZCA9XG4gIFNjaGVkdWxlclxuXG5hbmQgQ3ljbGVfaG9vayA6IHNpZ1xuICB0eXBlIHQgPSB1bml0IC0+IHVuaXRcbmVuZCA9XG4gIEN5Y2xlX2hvb2tcblxuYW5kIEN5Y2xlX2hvb2tfaGFuZGxlIDogVW5pcXVlX2lkLklkID0gVW5pcXVlX2lkLkludDYzICgpXG5hbmQgVGltZV9zb3VyY2VfaWQgOiBVbmlxdWVfaWQuSWQgPSBVbmlxdWVfaWQuSW50NjMgKClcblxuYW5kIFRpbWVfc291cmNlIDogc2lnXG4gIHR5cGUgLSdydyB0MSA9XG4gICAgeyBpZCA6IFRpbWVfc291cmNlX2lkLnRcbiAgICA7IG11dGFibGUgYWR2YW5jZV9lcnJvcnMgOiBFcnJvci50IGxpc3RcbiAgICA7IG11dGFibGUgYW1fYWR2YW5jaW5nIDogYm9vbFxuICAgIDsgZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLnRcbiAgICA7IG11dGFibGUgZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7IG11dGFibGUgbW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyBoYW5kbGVfZmlyZWQgOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udCAtPiB1bml0XG4gICAgOyBpc193YWxsX2Nsb2NrIDogYm9vbFxuICAgIDsgc2NoZWR1bGVyIDogU2NoZWR1bGVyLnRcbiAgICB9XG5lbmQgPVxuICBUaW1lX3NvdXJjZVxuXG5hbmQgVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyIDogc2lnXG4gIG1vZHVsZSBFeGVjX3Jlc3VsdCA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEZpbmlzaGVkXG4gICAgICB8IE5vdF9maW5pc2hlZFxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBleGVjIDogdW5pdCAtPiBFeGVjX3Jlc3VsdC50XG4gICAgfVxuZW5kID1cbiAgVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyXG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5cbmxldCBkZWJ1ZyA9IERlYnVnLm1vbml0b3JcblxubW9kdWxlIEZvcndhcmRpbmcgPSBUeXBlcy5Gb3J3YXJkaW5nXG5cbnR5cGUgdCA9IFR5cGVzLk1vbml0b3IudCA9XG4gIHsgbmFtZSA6IEluZm8udFxuICA7IGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50IG9wdGlvblxuICA7IGlkIDogaW50XG4gIDsgbXV0YWJsZSBuZXh0X2Vycm9yIDogZXhuIFR5cGVzLkl2YXIudFxuICA7ICgqIFtNb25pdG9yLnNlbmRfZXhuXSBzY2hlZHVsZXMgYSBqb2IgZm9yIGVhY2ggZWxlbWVudCBvZiBbaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNdLiAqKVxuICAgIG11dGFibGUgaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgOiAoVHlwZXMuRXhlY3V0aW9uX2NvbnRleHQudCAqIChleG4gLT4gdW5pdCkpIEJhZy50XG4gIDsgKCogW01vbml0b3Iuc2VuZF9leG5dIGV4dGVuZHMgZWFjaCB0YWlsIGluIFt0YWlsc19mb3JfYWxsX2Vycm9yc10uICopXG4gICAgbXV0YWJsZSB0YWlsc19mb3JfYWxsX2Vycm9ycyA6IGV4biBUeXBlcy5UYWlsLnQgbGlzdFxuICA7IG11dGFibGUgaGFzX3NlZW5fZXJyb3IgOiBib29sXG4gIDsgbXV0YWJsZSBmb3J3YXJkaW5nIDogRm9yd2FyZGluZy50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxubGV0IGRlc2NyaXB0aW9uIHQgPVxuICBtYXRjaCB0LmhlcmUgd2l0aFxuICB8IE5vbmUgLT4gWyVzZXhwICh0Lm5hbWUgOiBJbmZvLnQpXVxuICB8IFNvbWUgaGVyZSAtPiBbJXNleHAgKHQubmFtZSA6IEluZm8udCksIChoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG47O1xuXG5sZXQgZGVzY3JpcHRpb25zID1cbiAgbGV0IHJlYyBsb29wIHQgYWMgPVxuICAgIGxldCBhYyA9IGRlc2NyaXB0aW9uIHQgOjogYWMgaW5cbiAgICBtYXRjaCB0LmZvcndhcmRpbmcgd2l0aFxuICAgIHwgRGV0YWNoZWQgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+IExpc3QucmV2IGFjXG4gICAgfCBQYXJlbnQgdCAtPiBsb29wIHQgYWNcbiAgaW5cbiAgZnVuIHQgLT4gbG9vcCB0IFtdXG47O1xuXG5sZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKGRlc2NyaXB0aW9ucyB0IDogU2V4cC50IGxpc3QpXVxuXG5sZXQgbmV4dF9pZCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfcGFyZW50ID9oZXJlID9pbmZvID9uYW1lIHBhcmVudCA9XG4gIGxldCBpZCA9IG5leHRfaWQgKCkgaW5cbiAgbGV0IG5hbWUgPVxuICAgIG1hdGNoIGluZm8sIG5hbWUgd2l0aFxuICAgIHwgU29tZSBpLCBOb25lIC0+IGlcbiAgICB8IFNvbWUgaSwgU29tZSBzIC0+IEluZm8udGFnIGkgfnRhZzpzXG4gICAgfCBOb25lLCBTb21lIHMgLT4gSW5mby5vZl9zdHJpbmcgc1xuICAgIHwgTm9uZSwgTm9uZSAtPiBJbmZvLmNyZWF0ZSBcImlkXCIgaWQgWyVzZXhwX29mOiBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdC50XVxuICBpblxuICBsZXQgdCA9XG4gICAgeyBuYW1lXG4gICAgOyBoZXJlXG4gICAgOyBmb3J3YXJkaW5nID1cbiAgICAgICAgKG1hdGNoIHBhcmVudCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gUmVwb3J0X3VuY2F1Z2h0X2V4blxuICAgICAgICAgfCBTb21lIHBhcmVudCAtPiBQYXJlbnQgcGFyZW50KVxuICAgIDsgaWRcbiAgICA7IG5leHRfZXJyb3IgPSB7IGNlbGwgPSBFbXB0eSB9XG4gICAgOyBoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyA9IEJhZy5jcmVhdGUgKClcbiAgICA7IHRhaWxzX2Zvcl9hbGxfZXJyb3JzID0gW11cbiAgICA7IGhhc19zZWVuX2Vycm9yID0gZmFsc2VcbiAgICB9XG4gIGluXG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiY3JlYXRlZCBtb25pdG9yXCIgdCBbJXNleHBfb2Y6IHRdO1xuICB0XG47O1xuXG5sZXQgbWFpbiA9IGNyZWF0ZV93aXRoX3BhcmVudCB+bmFtZTpcIm1haW5cIiBOb25lXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvcjBcblxudHlwZSB0ID0gVHlwZXMuRXhlY3V0aW9uX2NvbnRleHQudCA9XG4gIHsgbW9uaXRvciA6IE1vbml0b3IudFxuICA7IHByaW9yaXR5IDogUHJpb3JpdHkudFxuICA7IGxvY2FsX3N0b3JhZ2UgOiBVbml2X21hcC50XG4gIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxubGV0IG1haW4gPVxuICB7IG1vbml0b3IgPSBNb25pdG9yLm1haW5cbiAgOyBwcmlvcml0eSA9IFByaW9yaXR5Lm5vcm1hbFxuICA7IGxvY2FsX3N0b3JhZ2UgPSBVbml2X21hcC5lbXB0eVxuICA7IGJhY2t0cmFjZV9oaXN0b3J5ID0gW11cbiAgfVxuOztcblxubGV0IGNyZWF0ZV9saWtlID9tb25pdG9yID9wcmlvcml0eSA/bG9jYWxfc3RvcmFnZSB0ID1cbiAgbWF0Y2ggbW9uaXRvciwgcHJpb3JpdHksIGxvY2FsX3N0b3JhZ2Ugd2l0aFxuICB8IE5vbmUsIE5vbmUsIE5vbmUgLT5cbiAgICAoKiBhdm9pZCBhbGxvY2F0aW5nIGluIHRoZSB0cml2aWFsIGNhc2UsIHdoaWNoIGUuZy4gaGFwcGVucyB3aGVuIGNhbGxpbmdcbiAgICAgICBbQXN5bmMuc2NoZWR1bGVdIHdpdGhvdXQgb3B0aW9uYWwgYXJncyAqKVxuICAgIHRcbiAgfCBfIC0+XG4gICAgbGV0IG1vbml0b3IgPSBPcHRpb24udmFsdWUgbW9uaXRvciB+ZGVmYXVsdDp0Lm1vbml0b3IgaW5cbiAgICB7IG1vbml0b3JcbiAgICA7IHByaW9yaXR5ID0gT3B0aW9uLnZhbHVlIHByaW9yaXR5IH5kZWZhdWx0OnQucHJpb3JpdHlcbiAgICA7IGxvY2FsX3N0b3JhZ2UgPSBPcHRpb24udmFsdWUgbG9jYWxfc3RvcmFnZSB+ZGVmYXVsdDp0LmxvY2FsX3N0b3JhZ2VcbiAgICA7IGJhY2t0cmFjZV9oaXN0b3J5ID0gdC5iYWNrdHJhY2VfaGlzdG9yeVxuICAgIH1cbjs7XG5cbmxldCBmaW5kX2xvY2FsIHQga2V5ID0gVW5pdl9tYXAuZmluZCB0LmxvY2FsX3N0b3JhZ2Uga2V5XG5cbmxldCB3aXRoX2xvY2FsIHQga2V5IGRhdGEgPVxuICB7IHQgd2l0aCBsb2NhbF9zdG9yYWdlID0gVW5pdl9tYXAuY2hhbmdlIHQubG9jYWxfc3RvcmFnZSBrZXkgfmY6KGZ1biBfIC0+IGRhdGEpIH1cbjs7XG5cbmxldCByZWNvcmRfYmFja3RyYWNlIHQgPVxuICB7IHQgd2l0aCBiYWNrdHJhY2VfaGlzdG9yeSA9IEJhY2t0cmFjZS5nZXQgKCkgOjogdC5iYWNrdHJhY2VfaGlzdG9yeSB9XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFR5cGVzLkV4dGVybmFsX2pvYlxuXG5sZXQgc2V4cF9vZl90IF8gPSBTZXhwLkF0b20gXCI8am9iPlwiXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gUG9vbFxuXG5sZXQgZHVtbXlfZSA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbmxldCBkdW1teV9mIDogT2JqLnQgLT4gdW5pdCA9IGlnbm9yZVxubGV0IGR1bW15X2EgOiBPYmoudCA9IE9iai5yZXByICgpXG5cbnR5cGUgc2xvdHMgPSAoRXhlY3V0aW9uX2NvbnRleHQudCwgT2JqLnQgLT4gdW5pdCwgKE9iai50W0BzZXhwLm9wYXF1ZV0pKSBTbG90cy50M1xuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSB0ID0gc2xvdHMgUG9vbC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9IFBvb2wuaW52YXJpYW50IGlnbm9yZSB0XG5sZXQgY3JlYXRlICgpID0gY3JlYXRlIFNsb3RzLnQzIH5jYXBhY2l0eToxIH5kdW1teTooZHVtbXlfZSwgZHVtbXlfZiwgZHVtbXlfYSlcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBKb2JfcG9vbC5zbG90cyBQb29sLlBvaW50ZXIudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRXZlbnQgPSBUeXBlcy5FdmVudFxubW9kdWxlIEpvYiA9IFR5cGVzLkpvYlxuaW5jbHVkZSBUeXBlcy5Kb2Jfb3JfZXZlbnRcblxuKCogVGhpcyByZWRlZmluaXRpb24gb2YgW0V2ZW50XSBpcyBoZXJlIHNvIHRoZSB0eXBlIGNoZWNrcyBhcmUgcmlnaHQgbmV4dCB0b1xuICAgW09iai5tYWdpY11zLiAqKVxubW9kdWxlIF8gOiBzaWcgZW5kID0gc3RydWN0XG4gIG9wZW4gVHlwZXNcbiAgb3BlbiBFdmVudFxuXG4gIHR5cGUgX3QgPSB0ID1cbiAgICB7ICgqIG11c3QgbmV2ZXIgYmUgaW1tZWRpYXRlICopXG4gICAgICBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbiAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgXyA6IHNpZyBlbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEVuc3VyZV9wcml2YXRlX2ludCAoTSA6IHNpZ1xuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSBpbnRcbiAgICBlbmQpID1cbiAgc3RydWN0XG4gICAgdHlwZSBfdCA9IE0udFxuICBlbmRcblxuICBpbmNsdWRlIEVuc3VyZV9wcml2YXRlX2ludCAoSm9iKVxuZW5kXG5cbmxldCBvZl9ldmVudCBldmVudCA6IHQgPSBPYmoubWFnaWMgKGV2ZW50IDogRXZlbnQudClcbmxldCBvZl9qb2Igam9iIDogdCA9IE9iai5tYWdpYyAoam9iIDogSm9iLnQpXG5sZXQgaXNfZXZlbnQgKHQgOiB0KSA9IE9iai5pc19ibG9jayAoT2JqLnJlcHIgdClcbmxldCBpc19qb2IgKHQgOiB0KSA9IE9iai5pc19pbnQgKE9iai5yZXByIHQpXG5cbm1vZHVsZSBNYXRjaCA9IHN0cnVjdFxuICB0eXBlIF8ga2luZCA9XG4gICAgfCBFdmVudCA6IEV2ZW50LnQga2luZFxuICAgIHwgSm9iIDogSm9iLnQga2luZFxuXG4gIHR5cGUgcGFja2VkID0gSyA6IF8ga2luZCAtPiBwYWNrZWQgW0BAdW5ib3hlZF1cblxuICBsZXQga2luZCB0ID0gaWYgaXNfZXZlbnQgdCB0aGVuIEsgRXZlbnQgZWxzZSBLIEpvYlxuICBsZXQgcHJvamVjdCAodHlwZSBhKSAoXyA6IGEga2luZCkgam9iX29yX2V2ZW50ID0gKE9iai5tYWdpYyA6IHQgLT4gYSkgam9iX29yX2V2ZW50XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBUeXBlcy5TY2hlZHVsZXJcblxubGV0IGV2ZW50cyB0ID0gdC50aW1lX3NvdXJjZS5ldmVudHNcblxubGV0IHNldF9leGVjdXRpb25fY29udGV4dCB0IGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgKCogQXZvaWQgYSBjYW1sX21vZGlmeSBpbiBtb3N0IGNhc2VzLiAqKVxuICBpZiBub3QgKHBoeXNfZXF1YWwgdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IGV4ZWN1dGlvbl9jb250ZXh0KVxuICB0aGVuIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dCA8LSBleGVjdXRpb25fY29udGV4dFxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjBcblxubGV0IGR1bW15X2UgPSBFeGVjdXRpb25fY29udGV4dC5tYWluXG5sZXQgZHVtbXlfZiA6IE9iai50IC0+IHVuaXQgPSBpZ25vcmVcbmxldCBkdW1teV9hIDogT2JqLnQgPSBPYmoucmVwciAoKVxubGV0IHNsb3RzX3Blcl9lbHQgPSAzXG5cbm1vZHVsZSBBID0gVW5pZm9ybV9hcnJheVxuXG4oKiBUaGlzIGlzIGVzc2VudGlhbGx5IGEgc3BlY2lhbGl6ZWQgW0ZsYXRfcXVldWVdLCBkb25lIGZvciByZWFzb25zIG9mIHNwZWVkLiAqKVxudHlwZSB0ID0gVHlwZXMuSm9iX3F1ZXVlLnQgPVxuICB7IG11dGFibGUgbnVtX2pvYnNfcnVuIDogaW50XG4gIDsgbXV0YWJsZSBqb2JzX2xlZnRfdGhpc19jeWNsZSA6IGludFxuICA7ICgqIFtqb2JzXSBpcyBhbiBhcnJheSBvZiBsZW5ndGggW2NhcGFjaXR5IHQgKiBzbG90c19wZXJfZWx0XSwgd2hlcmUgZWFjaCBlbHQgaGFzIHRoZVxuICAgICAgIHRocmVlIGNvbXBvbmVudHMgb2YgYSBqb2IgKFtleGVjdXRpb25fY29udGV4dF0sIFtmXSwgW2FdKSBpbiBjb25zZWN1dGl2ZSBzcG90cyBpblxuICAgICAgIFtqb2JzXS4gIFtlbnF1ZXVlXSBkb3VibGVzIHRoZSBsZW5ndGggb2YgW2pvYnNdIGlmIFtqb2JzXSBpcyBmdWxsLiAgW2pvYnNdIG5ldmVyXG4gICAgICAgc2hyaW5rcy4gIFtqb2JzXSBpcyBzb21ld2hhdCBsaWtlIGEgW0NvcmUuUG9vbF0gc3BlY2lhbGl6ZWQgdG8gMy10dXBsZXM7IHdlXG4gICAgICAgZG9uJ3QgdXNlIFtQb29sXSBiZWNhdXNlIHRoYXQgaW1wbGVtZW50cyBhIHNldCwgd2hlcmUgW2pvYnNdIGlzIGEgcXVldWUuICopXG4gICAgbXV0YWJsZSBqb2JzIDogKE9iai50IEEudFtAc2V4cC5vcGFxdWVdKVxuICA7ICgqIFttYXNrXSBpcyBbY2FwYWNpdHkgdCAtIDFdLCBhbmQgaXMgdXNlZCBmb3IgcXVpY2tseSBjb21wdXRpbmcgW2kgbW9kIChjYXBhY2l0eVxuICAgICAgIHQpXS4gQSBzcGVjaWFsIGNhc2Ugd2hlbiB0aGUgam9iIHF1ZXVlIGhhcyBjYXBhY2l0eSAwIGlzIHJlcHJlc2VudGVkXG4gICAgICAgd2l0aCBbbWFzayA9IC0xXS4gVGhpcyB2YWx1ZSBpcyBub3QgdXNlZnVsIGFzIGEgYml0LW1hc2ssIGJ1dCB3ZSBvbmx5IHVzZVxuICAgICAgIHRoZSBiaXQtbWFzayB3aGVuIHRoZXJlJ3MgY2FwYWNpdHkgaW4gdGhlIGFycmF5LCBzbyB0aGF0IGlzIG5vdCBhIHByb2JsZW0uXG4gICAgKilcbiAgICBtdXRhYmxlIG1hc2sgOiBpbnRcbiAgOyAoKiBbZnJvbnRdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgam9iIGluIHRoZSBxdWV1ZS4gIFRoZSBhcnJheSBpbmRleCBvZiB0aGF0IGpvYidzXG4gICAgICAgZXhlY3V0aW9uIGNvbnRleHQgaXMgW2Zyb250ICogc2xvdHNfcGVyX2VsdF0uICopXG4gICAgbXV0YWJsZSBmcm9udCA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBiYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBvZmZzZXQgdCBpID0gKHQuZnJvbnQgKyBpKSBsYW5kIHQubWFzayAqIHNsb3RzX3Blcl9lbHRcbmxldCBjYXBhY2l0eSB0ID0gdC5tYXNrICsgMVxuXG5sZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5udW1fam9ic19ydW46KGNoZWNrIChmdW4gbnVtX2pvYnNfcnVuIC0+IGFzc2VydCAobnVtX2pvYnNfcnVuID49IDApKSlcbiAgICAgIH5qb2JzX2xlZnRfdGhpc19jeWNsZTpcbiAgICAgICAgKGNoZWNrIChmdW4gam9ic19sZWZ0X3RoaXNfY3ljbGUgLT4gYXNzZXJ0IChqb2JzX2xlZnRfdGhpc19jeWNsZSA+PSAwKSkpXG4gICAgICB+am9iczpcbiAgICAgICAgKGNoZWNrIChmdW4gam9icyAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICAgICAgICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50XG4gICAgICAgICAgICAgICAoT2JqLm9iaiAoQS5nZXQgam9icyAob2Zmc2V0IHQgaSkpIDogRXhlY3V0aW9uX2NvbnRleHQudClcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+bWFzazpcbiAgICAgICAgKGNoZWNrIChmdW4gbWFzayAtPlxuICAgICAgICAgICBsZXQgY2FwYWNpdHkgPSBtYXNrICsgMSBpblxuICAgICAgICAgICBhc3NlcnQgKGNhcGFjaXR5ID0gMCB8fCBJbnQuaXNfcG93MiBjYXBhY2l0eSk7XG4gICAgICAgICAgIGFzc2VydCAoY2FwYWNpdHkgKiBzbG90c19wZXJfZWx0ID0gQS5sZW5ndGggdC5qb2JzKSkpXG4gICAgICB+YmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWU6KGZ1biBfIC0+ICgpKVxuICAgICAgfmZyb250OlxuICAgICAgICAoY2hlY2sgKGZ1biBmcm9udCAtPlxuICAgICAgICAgICBhc3NlcnQgKGZyb250ID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKGZyb250IDwgbWF4IDEgKGNhcGFjaXR5IHQpKSkpXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobGVuZ3RoIDw9IGNhcGFjaXR5IHQpKSkpXG47O1xuXG5sZXQgY3JlYXRlX2FycmF5IH5jYXBhY2l0eSA9IEEuY3JlYXRlX29ial9hcnJheSB+bGVuOihjYXBhY2l0eSAqIHNsb3RzX3Blcl9lbHQpXG5cbmxldCBjcmVhdGUgKCkgPVxuICAoKiBXZSBzdGFydCB3aXRoIFtjYXBhY2l0eSAgPSAwXSBzbyB0aGF0IHRoZSBmaXJzdCBqb2IgdGhhdCBpcyBhZGRlZCBjYWxscyBbZ3Jvd10gYW5kXG4gICAgIGZpbGxzIGluIHRoZSBbYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWVdLiAqKVxuICBsZXQgY2FwYWNpdHkgPSAwIGluXG4gIHsgbnVtX2pvYnNfcnVuID0gMFxuICA7IGpvYnNfbGVmdF90aGlzX2N5Y2xlID0gMFxuICA7IGpvYnMgPSBjcmVhdGVfYXJyYXkgfmNhcGFjaXR5XG4gIDsgbWFzayA9IGNhcGFjaXR5IC0gMVxuICA7IGZyb250ID0gMFxuICA7IGxlbmd0aCA9IDBcbiAgOyBiYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSA9IE5vbmVcbiAgfVxuOztcblxubGV0IGJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIHQgPSB0LmJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlXG5cbmxldCBjbGVhciB0ID1cbiAgdC5mcm9udCA8LSAwO1xuICB0Lmxlbmd0aCA8LSAwO1xuICB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIDwtIDBcbjs7XG5cbmxldCBncm93IHQgPVxuICAobWF0Y2ggdC5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSB3aXRoXG4gICB8IFNvbWUgXyAtPiBhc3NlcnQgKGNhcGFjaXR5IHQgPiAwKVxuICAgfCBOb25lIC0+IHQuYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUgPC0gU29tZSAoQmFja3RyYWNlLmdldCAoKSkpO1xuICBsZXQgb2xkX2NhcGFjaXR5ID0gY2FwYWNpdHkgdCBpblxuICBsZXQgbmV3X2NhcGFjaXR5ID0gbWF4IDEgKG9sZF9jYXBhY2l0eSAqIDIpIGluXG4gIGxldCBvbGRfam9icyA9IHQuam9icyBpblxuICBsZXQgb2xkX2Zyb250ID0gdC5mcm9udCBpblxuICBsZXQgbGVuMSA9IEludC5taW4gdC5sZW5ndGggKG9sZF9jYXBhY2l0eSAtIG9sZF9mcm9udCkgKiBzbG90c19wZXJfZWx0IGluXG4gIGxldCBsZW4yID0gKHQubGVuZ3RoICogc2xvdHNfcGVyX2VsdCkgLSBsZW4xIGluXG4gIGxldCBuZXdfam9icyA9IGNyZWF0ZV9hcnJheSB+Y2FwYWNpdHk6bmV3X2NhcGFjaXR5IGluXG4gIEEuYmxpdFxuICAgIH5sZW46bGVuMVxuICAgIH5zcmM6b2xkX2pvYnNcbiAgICB+c3JjX3Bvczoob2xkX2Zyb250ICogc2xvdHNfcGVyX2VsdClcbiAgICB+ZHN0Om5ld19qb2JzXG4gICAgfmRzdF9wb3M6MDtcbiAgQS5ibGl0IH5sZW46bGVuMiB+c3JjOm9sZF9qb2JzIH5zcmNfcG9zOjAgfmRzdDpuZXdfam9icyB+ZHN0X3BvczpsZW4xO1xuICB0Lm1hc2sgPC0gbmV3X2NhcGFjaXR5IC0gMTtcbiAgdC5qb2JzIDwtIG5ld19qb2JzO1xuICB0LmZyb250IDwtIDBcbjs7XG5cbmxldCBzZXQgKHR5cGUgYSkgdCBpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGxldCBvZmZzZXQgPSBvZmZzZXQgdCBpIGluXG4gIEEudW5zYWZlX3NldCB0LmpvYnMgb2Zmc2V0IChPYmoucmVwciAoZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50KSk7XG4gIEEudW5zYWZlX3NldCB0LmpvYnMgKG9mZnNldCArIDEpIChPYmoucmVwciAoZiA6IGEgLT4gdW5pdCkpO1xuICBBLnVuc2FmZV9zZXQgdC5qb2JzIChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgKGEgOiBhKSlcbjs7XG5cbmxldCBlbnF1ZXVlIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgaWYgdC5sZW5ndGggPSBjYXBhY2l0eSB0IHRoZW4gZ3JvdyB0O1xuICBzZXQgdCB0Lmxlbmd0aCBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0IG4gPVxuICBpZiBuIDwgMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiSm9icy5zZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgZ290IG5lZ2F0aXZlIG51bWJlclwiIChuIDogaW50KSAodCA6IHQpXTtcbiAgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA8LSBuXG47O1xuXG5sZXQgY2FuX3J1bl9hX2pvYiB0ID0gdC5sZW5ndGggPiAwICYmIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPiAwXG5cbmxldCBydW5fam9iIHQgKHNjaGVkdWxlciA6IFNjaGVkdWxlci50KSBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICB0Lm51bV9qb2JzX3J1biA8LSB0Lm51bV9qb2JzX3J1biArIDE7XG4gIFNjaGVkdWxlci5zZXRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0O1xuICBmIGFcbjs7XG5cbmxldCBydW5fZXh0ZXJuYWxfam9icyB0IChzY2hlZHVsZXIgOiBTY2hlZHVsZXIudCkgPVxuICBsZXQgZXh0ZXJuYWxfam9icyA9IHNjaGVkdWxlci5leHRlcm5hbF9qb2JzIGluXG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCBleHRlcm5hbF9qb2JzID4gMCBkb1xuICAgIGxldCAoRXh0ZXJuYWxfam9iLlQgKGV4ZWN1dGlvbl9jb250ZXh0LCBmLCBhKSkgPVxuICAgICAgVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gZXh0ZXJuYWxfam9ic1xuICAgIGluXG4gICAgcnVuX2pvYiB0IHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGFcbiAgZG9uZVxuOztcblxubGV0IHJ1bl9qb2JzICh0eXBlIGEpIHQgc2NoZWR1bGVyID1cbiAgKCogV2UgZG8gdGhlIFt0cnktd2l0aF0gb3V0c2lkZSBvZiB0aGUgW3doaWxlXSBiZWNhdXNlIGl0IGlzIGNoZWFwZXIgdGhhbiBkb2luZyBhXG4gICAgIFt0cnktd2l0aF0gZm9yIGVhY2ggam9iLiAqKVxuICAoKiBbcnVuX2V4dGVybmFsX2pvYnNdIGJlZm9yZSBlbnRlcmluZyB0aGUgbG9vcCwgc2luY2UgaXQgbWlnaHQgZW5xdWV1ZSBhIGpvYixcbiAgICAgY2hhbmdpbmcgW3QubGVuZ3RoXS4gKilcbiAgdHJ5XG4gICAgcnVuX2V4dGVybmFsX2pvYnMgdCBzY2hlZHVsZXI7XG4gICAgd2hpbGUgY2FuX3J1bl9hX2pvYiB0IGRvXG4gICAgICBsZXQgdGhpc19qb2IgPSBvZmZzZXQgdCAwIGluXG4gICAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50ID1cbiAgICAgICAgT2JqLm9iaiAoQS51bnNhZmVfZ2V0IHQuam9icyB0aGlzX2pvYilcbiAgICAgIGluXG4gICAgICBsZXQgZiA6IGEgLT4gdW5pdCA9IE9iai5vYmogKEEudW5zYWZlX2dldCB0LmpvYnMgKHRoaXNfam9iICsgMSkpIGluXG4gICAgICBsZXQgYSA6IGEgPSBPYmoub2JqIChBLnVuc2FmZV9nZXQgdC5qb2JzICh0aGlzX2pvYiArIDIpKSBpblxuICAgICAgKCogV2UgY2xlYXIgb3V0IHRoZSBqb2IgcmlnaHQgbm93IHNvIHRoYXQgaXQgaXNuJ3QgbGl2ZSBhdCB0aGUgbmV4dCBtaW5vclxuICAgICAgICAgY29sbGVjdGlvbi4gIFdlIHRyaWVkIG5vdCBkb2luZyB0aGlzIGFuZCBzYXcgc2lnbmlmaWNhbnQgKDE1JSBvciBzbykgcGVyZm9ybWFuY2VcbiAgICAgICAgIGhpdHMgZHVlIHRvIHNwdXJpb3VzIHByb21vdGlvbi4gKilcbiAgICAgIHNldCB0IDAgZHVtbXlfZSBkdW1teV9mIGR1bW15X2E7XG4gICAgICB0LmZyb250IDwtICh0LmZyb250ICsgMSkgbGFuZCB0Lm1hc2s7XG4gICAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICAgICB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIDwtIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgLSAxO1xuICAgICAgKCogSXQgaXMgT0sgaWYgW3J1bl9qb2JdIG9yIFtydW5fZXh0ZXJuYWxfam9ic10gcmFpc2VzLCBpbiB3aGljaCBjYXNlIHRoZSBleG4gaXNcbiAgICAgICAgIGhhbmRsZWQgYnkgdGhlIG91dGVyIHRyeS13aXRoLiAgVGhlIG9ubHkgc2lkZSBlZmZlY3RzIHdlIGhhdmUgZG9uZSBhcmUgdG8gdGFrZVxuICAgICAgICAgdGhlIGpvYiBvdXQgb2YgdGhlIHF1ZXVlIGFuZCBkZWNyZW1lbnQgW2pvYnNfbGVmdF90aGlzX2N5Y2xlXS4gIFtydW5fam9iXSBvclxuICAgICAgICAgW3J1bl9leHRlcm5hbF9qb2JzXSBtYXkgc2lkZSBlZmZlY3QgW3RdLCBlaXRoZXIgYnkgZW5xdWV1ZWluZyBqb2JzLCBvciBieVxuICAgICAgICAgY2xlYXJpbmcgW3RdLiAqKVxuICAgICAgcnVuX2pvYiB0IHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gICAgICAoKiBbcnVuX2V4dGVybmFsX2pvYnNdIGF0IGVhY2ggaXRlcmF0aW9uIG9mIHRoZSBbd2hpbGVdIGxvb3AsIGZvciBmYWlybmVzcy4gKilcbiAgICAgIHJ1bl9leHRlcm5hbF9qb2JzIHQgc2NoZWR1bGVyXG4gICAgZG9uZTtcbiAgICBPayAoKVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgKCogV2UgY2FsbCBbRXhuLmJhY2t0cmFjZV0gaW1tZWRpYXRlbHkgYWZ0ZXIgY2F0Y2hpbmcgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbiwgdG9cbiAgICAgICBlbnN1cmUgdGhlcmUgaXMgbm8gaW50ZXJ2ZW5pbmcgY29kZSB0aGF0IGludGVyZmVyZXMgd2l0aCB0aGUgZ2xvYmFsIGJhY2t0cmFjZVxuICAgICAgIHN0YXRlLiAqKVxuICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgRXJyb3IgKGV4biwgYmFja3RyYWNlKVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVGltZV9ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfbnNcblxuICBleHRlcm5hbCBmb3JtYXQgOiBmbG9hdCAtPiBzdHJpbmcgLT4gc3RyaW5nID0gXCJjb3JlX3RpbWVfbnNfZm9ybWF0XCJcblxuICAoKiBXZSB1c2UgYSBtb3JlIHBsZWFzYW50IGZvcm1hdCB0aGFuIFtDb3JlLlRpbWVfbnMuc2V4cF9vZl90XSxcbiAgICAgd2hpY2ggaGFzIHRvIGJlIG1lc3NpZXIgZm9yIHJvdW5kIHRyaXBwYWJpbGl0eS4gKilcbiAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICBbJXNleHBcbiAgICAgIChmb3JtYXQgKHQgfD4gdG9fc3Bhbl9zaW5jZV9lcG9jaCB8PiBTcGFuLnRvX3NlYykgXCIlWS0lbS0lZFQlSDolTTolUyV6XCIgOiBzdHJpbmcpXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWluZ193aGVlbC5BbGFybVxuXG4gIGxldCBpc19udWxsIHQgPSBwaHlzX2VxdWFsIHQgKG51bGwgKCkpXG5lbmRcblxubW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA9IFRpbWluZ193aGVlbC5BbGFybV9wcmVjaXNpb25cblxubGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyA9XG4gICgqIDEvOHRoIG9mIGEgbWlsbGlzZWNvbmQgYWxhcm1fcHJlY2lzaW9uIHNlZW1zIHN1ZmZpY2llbnQgdG8gYXZvaWQgaGF2aW5nIG1hbnkgYWxhcm1zXG4gICAgIGluIHRoZSBzYW1lIGludGVydmFsLCB3aGljaCBhdm9pZHMgcXVhZHJhdGljIGluc2VydGlvbiBzb3J0IHdoZW4gZmlyaW5nIGFsYXJtcy4gIEFuZFxuICAgICB0aGUgbGV2ZWwgYml0cyBnaXZlIHVzIGxldmVscyBvZiA+MXMsID4xbSwgPjFoLCA+MWQuICBTZWUgdGVzdCBpblxuICAgICBbLi4vdGVzdC90ZXN0X3N5bmNocm9ub3VzX3RpbWVfc291cmNlLm1sXS4gKilcbiAgVGltaW5nX3doZWVsLkNvbmZpZy5jcmVhdGVcbiAgICB+YWxhcm1fcHJlY2lzaW9uOkFsYXJtX3ByZWNpc2lvbi4oZGl2IGFib3V0X29uZV9taWxsaXNlY29uZCB+cG93MjozKVxuICAgIH5sZXZlbF9iaXRzOihUaW1pbmdfd2hlZWwuTGV2ZWxfYml0cy5jcmVhdGVfZXhuIFsgMTM7IDY7IDY7IDUgXSlcbiAgICAoKVxuOztcblxudHlwZSBjYWxsYmFjayA9IHVuaXQgLT4gdW5pdFxuXG5tb2R1bGUgSWQgPSBUeXBlcy5UaW1lX3NvdXJjZV9pZFxuXG5tb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgbW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXR1cyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVHlwZXMuRXZlbnQuU3RhdHVzLnQgPVxuICAgICAgICB8IEZpcmVkICgqIGluIFtmaXJlZF9ldmVudHNdLCByZWFkeSB0byBydW4gKilcbiAgICAgICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnRcbiAgICAgICAgKCogY3VycmVudGx5IHJ1bm5pbmcgdGhlIGNhbGxiYWNrIChmb3IgYSBwZXJpb2RpYyBldmVudCkgKilcbiAgICAgICAgfCBTY2hlZHVsZWQgKCogaW4gdGhlIHRpbWluZyB3aGVlbCAqKVxuICAgICAgICB8IFVuc2NoZWR1bGVkICgqIG5vdCBpbiB0aW1pbmcgd2hlZWwgb3IgW2ZpcmVkX2V2ZW50c10gKilcbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgICBsZXQgdHJhbnNpdGlvbl9pc19hbGxvd2VkIH5mcm9tIH50b18gPVxuICAgICAgICBtYXRjaCBmcm9tLCB0b18gd2l0aFxuICAgICAgICB8ICggRmlyZWRcbiAgICAgICAgICAsIEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCAoKiBzdGFydGVkIHJ1bm5pbmcgY2FsbGJhY2sgKGZvciBhIHBlcmlvZGljIGV2ZW50KSAqKVxuICAgICAgICAgIClcbiAgICAgICAgfCAoIEZpcmVkXG4gICAgICAgICAgLCBVbnNjaGVkdWxlZFxuICAgICAgICAgICAgKCogYWJvcnRlZCwgb3Igc3RhcnRlZCBydW5uaW5nIGNhbGxiYWNrIChmb3IgYSBub24tcGVyaW9kaWMgZXZlbnQpICopIClcbiAgICAgICAgKCogW3Jlc2NoZWR1bGVfKl0gZ29lcyB0aHJvdWdoIGFuIGludGVybWVkaWF0ZSBbRmlyZWQsIFVuc2NoZWR1bGVkXSBzdGF0ZSxcbiAgICAgICAgICAgc28gd2UgbmV2ZXIgdHJhbnNpdGlvbiBmcm9tIFtGaXJlZF0gZGlyZWN0bHkgdG8gW1NjaGVkdWxlZF0uICopXG4gICAgICAgIHwgKCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnRcbiAgICAgICAgICAsIFNjaGVkdWxlZCAoKiBzY2hlZHVsZWQgbmV4dCBpdGVyYXRpb24gb2YgYSBwZXJpb2RpYyBldmVudCAqKSApXG4gICAgICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50LCBVbnNjaGVkdWxlZCAoKiBhYm9ydGVkICopXG4gICAgICAgIHwgU2NoZWR1bGVkLCBGaXJlZCAoKiBtb3ZlZCBmcm9tIHRpbWluZyB3aGVlbCB0byBbZmlyZWRfZXZlbnRzXSAqKVxuICAgICAgICB8IFNjaGVkdWxlZCwgVW5zY2hlZHVsZWQgKCogYWJvcnRlZCAqKVxuICAgICAgICB8IFVuc2NoZWR1bGVkLCBGaXJlZCAoKiBldmVudCBzY2hlZHVsZWQgaW4gdGhlIHBhc3QgKilcbiAgICAgICAgfCBVbnNjaGVkdWxlZCwgU2NoZWR1bGVkICgqIGV2ZW50IHNjaGVkdWxlZCBpbiB0aGUgZnV0dXJlICopIC0+IHRydWVcbiAgICAgICAgfCAoRmlyZWQgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgfCBTY2hlZHVsZWQgfCBVbnNjaGVkdWxlZCksIF8gLT4gZmFsc2VcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICB0eXBlIGV2ZW50ID0gVHlwZXMuRXZlbnQudFxuXG4gICAgbGV0IHNleHBfb2ZfZXZlbnRcbiAgICAgICAgICAoeyBhbGFybSA9IF9cbiAgICAgICAgICAgOyBhdFxuICAgICAgICAgICA7IGNhbGxiYWNrID0gX1xuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gX1xuICAgICAgICAgICA7IGludGVydmFsXG4gICAgICAgICAgIDsgbmV4dF9maXJlZCA9IF9cbiAgICAgICAgICAgOyBwcmV2X2ZpcmVkID0gX1xuICAgICAgICAgICA7IHN0YXR1c1xuICAgICAgICAgICB9IDpcbiAgICAgICAgICAgICBldmVudClcbiAgICAgID1cbiAgICAgIFslc2V4cFxuICAgICAgICB7IHN0YXR1cyA6IFN0YXR1cy50XG4gICAgICAgIDsgYXQgOiBUaW1lX25zLnRcbiAgICAgICAgOyBpbnRlcnZhbCA6IChUaW1lX25zLlNwYW4udCBvcHRpb25bQHNleHAub3B0aW9uXSlcbiAgICAgICAgfV1cbiAgICA7O1xuXG4gICAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICAgICAgKCogVGhpcyByZWRlZmluaXRpb24gb2YgW0V2ZW50XSBpcyBoZXJlIHNvIHRoZSB0eXBlIGNoZWNrcyBhcmUgcmlnaHQgbmV4dFxuICAgICAgICAgdG8gW09iai5tYWdpY11zLiAqKVxuICAgICAgbW9kdWxlIEV2ZW50X2lzX2Jsb2NrIDogc2lnIGVuZCA9IHN0cnVjdFxuICAgICAgICBvcGVuIFR5cGVzXG4gICAgICAgIG9wZW4gRXZlbnRcblxuICAgICAgICB0eXBlIF90ID0gdCA9XG4gICAgICAgICAgeyAoKiBtdXN0IG5ldmVyIGJlIGltbWVkaWF0ZSAqKVxuICAgICAgICAgICAgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50XG4gICAgICAgICAgOyBtdXRhYmxlIGF0IDogVGltZV9ucy50XG4gICAgICAgICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAgICAgOyBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgICAgICAgOyBtdXRhYmxlIG5leHRfZmlyZWQgOiBPcHRpb24udFxuICAgICAgICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgICAgICA7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICAgICAgICB9XG4gICAgICBlbmRcblxuICAgICAgdHlwZSB0ID0gVHlwZXMuRXZlbnQuT3B0aW9uLnRcblxuICAgICAgKCogVXNpbmcgYW4gaW1tZWRpYXRlIHJhdGhlciB0aGFuIGEgc3RhdGljYWxseS1hbGxvY2F0ZWQgcmVjb3JkIGhlcmUgc2VlbXMgdG9cbiAgICAgICAgIGltcHJvdmUgcGVyZm9ybWFuY2Ugbm90aWNlYWJseSAoWy4uL2JlbmNoL2Jpbi9iZW5jaF90aW1lX3NvdXJjZS5leGVdIGJlbmNobWFya1xuICAgICAgICAgaXMgZmFzdGVyIGJ5IH4xMG5zIHBlciBhbGFybSksIHByZXN1bWFibHkgYmVjYXVzZSBpdCBhdm9pZHMgdGhlIGV4cGVuc2l2ZVxuICAgICAgICAgcGFydHMgb2YgY2FtbF9tb2RpZnkuICopXG4gICAgICBsZXQgbm9uZSA9IChPYmoubWFnaWMgTm9uZSA6IHQpICgqIGFuIGFyYml0cmFyeSBpbW1lZGlhdGUgKilcbiAgICAgIGxldCBzb21lID0gKE9iai5tYWdpYyA6IFR5cGVzLkV2ZW50LnQgLT4gdClcbiAgICAgIGxldCBpc19ub25lIHQgPSBwaHlzX2VxdWFsIHQgbm9uZVxuICAgICAgbGV0IGlzX3NvbWUgdCA9IG5vdCAoaXNfbm9uZSB0KVxuICAgICAgbGV0IGZpcnN0X3NvbWUgdDEgdDIgPSBpZiBpc19zb21lIHQxIHRoZW4gdDEgZWxzZSB0MlxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IChPYmoubWFnaWMgOiB0IC0+IFR5cGVzLkV2ZW50LnQpXG5cbiAgICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bnNhZmVfdmFsdWVcbiAgICAgICAgZW5kXG4gICAgICBlbmRcblxuICAgICAgb3BlbiBPcHRpb25hbF9zeW50YXhcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgICAgbWF0Y2glb3B0aW9uYWwgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBbJXNleHAgKCldXG4gICAgICAgIHwgU29tZSBldmVudCAtPiBbJXNleHAgKGV2ZW50IDogZXZlbnQpXVxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBCb29sLnNlbGVjdCAoaXNfbm9uZSB0KSBkZWZhdWx0ICh1bnNhZmVfdmFsdWUgdClcblxuICAgICAgbGV0IHZhbHVlX2V4biB0ID1cbiAgICAgICAgbWF0Y2glb3B0aW9uYWwgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZV9zIFslc2V4cCBcIltTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC5PcHRpb24udmFsdWVfZXhuIE5vbmVdXCJdXG4gICAgICAgIHwgU29tZSBldmVudCAtPiBldmVudFxuICAgICAgOztcblxuICAgICAgbGV0IHRvX29wdGlvbiB0ID1cbiAgICAgICAgbWF0Y2glb3B0aW9uYWwgdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBldmVudCAtPiBTb21lIGV2ZW50XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IHNvbWUgZXZlbnRcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICB0eXBlIHQgPSBUeXBlcy5FdmVudC50ID1cbiAgICAgIHsgKCogW2FsYXJtXSBpcyBub24tbnVsbCBpZmYgdGhlIGV2ZW50IGlzIGluIHRoZSB0aW1pbmcgd2hlZWwuICopXG4gICAgICAgIG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBBbGFybS50XG4gICAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICAgIDsgY2FsbGJhY2sgOiB1bml0IC0+IHVuaXRcbiAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICA7ICgqIFtpbnRlcnZhbF0gaXMgdGhlIHBlcmlvZCBmb3IgdGhlIHBlcmlvZGljIGV2ZW50cy4gKilcbiAgICAgICAgbXV0YWJsZSBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvblxuICAgICAgOyAoKiBbbmV4dF9maXJlZF0gYW5kIFtwcmV2X2ZpcmVkXSBjcmVhdGUgYSBkb3VibHktbGlua2VkIChub24tY2lyY3VsYXIpIGxpc3Qgb2ZcbiAgICAgICAgICAgZmlyZWQgZXZlbnRzLCBsaW5rZWQgdmlhIHRoZXNlIGZpZWxkcy4gQW4gZXZlbnQgaXMgYWRkZWQgdG8gdGhlIGxpc3Qgd2hlblxuICAgICAgICAgICBpdCBmaXJlcywgZWl0aGVyIGJlY2F1c2UgaXQgaXMgYWRkZWQgd2l0aCBhIHRpbWUgaW4gdGhlIHBhc3QsIG9yXG4gICAgICAgICAgIGJlY2F1c2UgdGltZSBhZHZhbmNlcy4gW2FkdmFuY2VfYnlfYWxhcm1zXSBpdGVyYXRlcyBvdmVyIHRoZSBldmVudHNcbiAgICAgICAgICAgaW4gW25leHRfZmlyZWRdIGFuZCBydW5zIHRoZW0sIGVtcHR5aW5nIHRoZSBsaXN0LiBbbm9uZV0gaXMgdXNlZCB0b1xuICAgICAgICAgICBpbmRpY2F0ZSB0aGUgZW5kIG9mIHRoZSBsaW5rZWQgbGlzdCBvZiBmaXJlZCBldmVudHMuICopXG4gICAgICAgIG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgICA7IG11dGFibGUgcHJldl9maXJlZCA6IE9wdGlvbi50XG4gICAgICA7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gWyVzZXhwX29mOiBldmVudF1cblxuICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgICAgfmFsYXJtOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gYWxhcm0gLT5cbiAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAgICAgICAgICAgIChBbGFybS5pc19udWxsIGFsYXJtKVxuICAgICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgICAgIChtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRmlyZWQgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgfCBVbnNjaGVkdWxlZCAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIHwgU2NoZWR1bGVkIC0+IGZhbHNlKSkpXG4gICAgICAgICAgfmF0Omlnbm9yZVxuICAgICAgICAgIH5jYWxsYmFjazppZ25vcmVcbiAgICAgICAgICB+ZXhlY3V0aW9uX2NvbnRleHQ6aWdub3JlXG4gICAgICAgICAgfmludGVydmFsOmlnbm9yZVxuICAgICAgICAgIH5uZXh0X2ZpcmVkOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbmV4dF9maXJlZCAtPlxuICAgICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwgKG5leHRfZmlyZWQgOiBPcHRpb24udCkgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICgqIFtuZXh0X2ZpcmVkXSBjYW4gYmUgW05vbmVdIGV2ZW4gaWYgdGhlIGV2ZW50IHN0YXR1cyBpcyBGaXJlZCwgYXNzdW1pbmdcbiAgICAgICAgICAgICAgICAgICAgaXQncyBhdCB0aGUgZW5kIG9mIHRoZSBmaXJlZCBldmVudHMgbGlzdCAqKVxuICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgfCBTb21lIG5leHRfZmlyZWQgLT5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogU3RhdHVzLnRdIHQuc3RhdHVzIH5leHBlY3Q6RmlyZWQ7XG4gICAgICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCAoT3B0aW9uLnNvbWUgdCkgbmV4dF9maXJlZC5wcmV2X2ZpcmVkKSkpXG4gICAgICAgICAgfnByZXZfZmlyZWQ6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBwcmV2X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbCAocHJldl9maXJlZCA6IE9wdGlvbi50KSB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgKCogW3ByZXZfZmlyZWRdIGNhbiBiZSBbTm9uZV0gZXZlbiBpZiB0aGUgZXZlbnQgc3RhdHVzIGlzIEZpcmVkLCBhc3N1bWluZ1xuICAgICAgICAgICAgICAgICAgICBpdCdzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpcmVkIGV2ZW50cyBsaXN0ICopXG4gICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICB8IFNvbWUgcHJldl9maXJlZCAtPlxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBTdGF0dXMudF0gdC5zdGF0dXMgfmV4cGVjdDpGaXJlZDtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIChPcHRpb24uc29tZSB0KSBwcmV2X2ZpcmVkLm5leHRfZmlyZWQpKSlcbiAgICAgICAgICB+c3RhdHVzOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gKHN0YXR1cyA6IFN0YXR1cy50KSAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IC0+IGFzc2VydCAoQ29yZS5PcHRpb24uaXNfc29tZSB0LmludGVydmFsKVxuICAgICAgICAgICAgICAgfCBGaXJlZCB8IFVuc2NoZWR1bGVkIHwgU2NoZWR1bGVkIC0+ICgpKSkpXG4gICAgOztcblxuICAgIGxldCBzZXRfc3RhdHVzIHQgdG9fID1cbiAgICAgIGxldCBmcm9tID0gdC5zdGF0dXMgaW5cbiAgICAgIGlmIG5vdCAoU3RhdHVzLnRyYW5zaXRpb25faXNfYWxsb3dlZCB+ZnJvbSB+dG9fKVxuICAgICAgdGhlblxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBbJWhlcmVdXG4gICAgICAgICAgICAgIFwiYnVnIC0tIHNldF9zdGF0dXMgdHJhbnNpdGlvbiBub3QgYWxsb3dlZFwiXG4gICAgICAgICAgICAgIChmcm9tIDogU3RhdHVzLnQpXG4gICAgICAgICAgICAgICh0b18gOiBTdGF0dXMudClcbiAgICAgICAgICAgICAgfmV2ZW50Oih0IDogdCldO1xuICAgICAgdC5zdGF0dXMgPC0gdG9fXG4gICAgOztcblxuICAgIGxldCBzZXRfc3RhdHVzX2lmIH5pcyB0IHRvXyA9IGlmIFN0YXR1cy5lcXVhbCBpcyB0LnN0YXR1cyB0aGVuIHNldF9zdGF0dXMgdCB0b19cbiAgICBsZXQgc2NoZWR1bGVkX2F0ID0gYXRcbiAgZW5kXG5cbiAgbW9kdWxlIEpvYl9vcl9ldmVudCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSm9iX29yX2V2ZW50XG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgbGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gICAgICBsZXQgKEsgaykgPSBraW5kIHQgaW5cbiAgICAgIG1hdGNoIGssIHByb2plY3QgayB0IHdpdGhcbiAgICAgIHwgRXZlbnQsIGV2ZW50IC0+IFslc2V4cCAoZXZlbnQgOiBFdmVudC50KV1cbiAgICAgIHwgSm9iLCBfIC0+XG4gICAgICAgICgqIFdlIGRvbid0IGRpc3BsYXkgdGhlIFtKb2IudF1zIGluIFtldmVudHNdIGJlY2F1c2UgdGhvc2UgYXJlXG4gICAgICAgICAgIHBvb2wgcG9pbnRlcnMsIHdoaWNoIGFyZSB1bmluZm9ybWF0aXZlLiAqKVxuICAgICAgICBbJW1lc3NhZ2UgXCI8Sm9iLnQ+XCJdXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAtJ3J3IHQgPSAncncgVHlwZXMuVGltZV9zb3VyY2UudDEgPVxuICAgIHsgaWQgOiBJZC50XG4gICAgOyAoKiBbYWR2YW5jZV9lcnJvcnNdIGFjY3VtdWxhdGVzIGVycm9ycyByYWlzZWQgYnkgYWxhcm1zIHJ1biBieVxuICAgICAgICAgW2FkdmFuY2VfYnlfYWxhcm1zXS4gKilcbiAgICAgIG11dGFibGUgYWR2YW5jZV9lcnJvcnMgOiBFcnJvci50IGxpc3RcbiAgICA7ICgqIFthbV9hZHZhbmNpbmddIGlzIHRydWUgb25seSBkdXJpbmcgW2FkdmFuY2VfYnlfYWxhcm1zXSwgYW5kIGlzIHVzZWQgdG8gY2F1c2VcbiAgICAgICAgIGNhbGxiYWNrcyB0byByYWlzZSBpZiB0aGV5IGNhbGwgW2FkdmFuY2VfYnlfYWxhcm1zXS4gKilcbiAgICAgIG11dGFibGUgYW1fYWR2YW5jaW5nIDogYm9vbFxuICAgIDsgZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLnRcbiAgICA7ICgqIFtmaXJlZF9ldmVudHNdIGlzIHRoZSBmcm9udCBvZiB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGZpcmVkIGV2ZW50cyxcbiAgICAgICAgIHdoaWNoIGlzIHN0b3JlZCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIFtFdmVudC5hdF0uICopXG4gICAgICBtdXRhYmxlIGZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyAoKiBbbW9zdF9yZWNlbnRseV9maXJlZF0gaXMgdGhlIGV2ZW50IHRoYXQgd2FzIG1vc3QgcmVjZW50bHkgaW5zZXJ0ZWQgaW50b1xuICAgICAgICAgW2ZpcmVkX2V2ZW50c10uIEl0IGlzIHVzZWQgYXMgYW4gb3B0aW1pemF0aW9uIHRvIGFsbG93IGluc2VydGlvbiBvZlxuICAgICAgICAgc3Vic2VxdWVudCBldmVudHMgdG8gc3RhcnQgbGF0ZXIgaW4gdGhlIGxpc3QgcmF0aGVyIHRoYW4gYXQgdGhlIGJlZ2lubmluZy5cbiAgICAgICAgIEl0IHNwZWNpZmljYWxseSBhdm9pZHMgcXVhZHJhdGljIGJlaGF2aW9yIHdoZW4gaW5zZXJ0aW5nIG11bHRpcGxlIGV2ZW50c1xuICAgICAgICAgdGhhdCBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGltZSAtLSB0aGUgdGltZSBzb3VyY2UgZmlyZXMgc3VjaCBldmVudHMgaW5cbiAgICAgICAgIHRoZSBvcmRlciB0aGV5IHdlcmUgYWRkZWQsIGFuZCB3ZSB3YW50IHRoZW0gdG8gYmUgaW4gdGhhdCBzYW1lIG9yZGVyIGluXG4gICAgICAgICBbZmlyZWRfZXZlbnRzXS4gKilcbiAgICAgIG11dGFibGUgbW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyAoKiBXZSBzdG9yZSBbaGFuZGxlX2ZpcmVkXSBpbiBbdF0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBldmVyeSB0aW1lIHdlIGNhbGxcbiAgICAgICAgIFthZHZhbmNlX2Nsb2NrXS4gKilcbiAgICAgIGhhbmRsZV9maXJlZCA6IEpvYl9vcl9ldmVudC50IEFsYXJtLnQgLT4gdW5pdFxuICAgIDsgaXNfd2FsbF9jbG9jayA6IGJvb2xcbiAgICA7IHNjaGVkdWxlciA6IFNjaGVkdWxlcjAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICgqIFdlIGRvbid0IGluY2x1ZGUgdGhlIFtpZF0gaW4gdGhlIHNleHAgYmVjYXVzZSB0aGUgdXNlciAocmlnaHRseSkgY2FuJ3QgY29udHJvbCBpdCwgc29cbiAgICAgaXQncyBoYXJkIHRvIG1ha2UgaXQgZGV0ZXJtaW5pc3RpYyBpbiB0ZXN0cy4gKilcbiAgbGV0IHNleHBfb2ZfdFxuICAgICAgICBfXG4gICAgICAgIHsgaWQgPSBfXG4gICAgICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBfXG4gICAgICAgIDsgYW1fYWR2YW5jaW5nID0gX1xuICAgICAgICA7IGV2ZW50c1xuICAgICAgICA7IGZpcmVkX2V2ZW50cyA9IF9cbiAgICAgICAgOyBoYW5kbGVfZmlyZWQgPSBfXG4gICAgICAgIDsgaXNfd2FsbF9jbG9ja1xuICAgICAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBfXG4gICAgICAgIDsgc2NoZWR1bGVyID0gX1xuICAgICAgICB9XG4gICAgPVxuICAgIGxldCBub3cgPSBUaW1pbmdfd2hlZWwubm93IGV2ZW50cyBpblxuICAgIGlmIGlzX3dhbGxfY2xvY2tcbiAgICB0aGVuIFslbWVzc2FnZSBcIndhbGxfY2xvY2tcIiAobm93IDogVGltZV9ucy50KV1cbiAgICBlbHNlIChcbiAgICAgIGxldCBhbGxfZXZlbnRzID0gcmVmIFtdIGluXG4gICAgICBUaW1pbmdfd2hlZWwuaXRlciBldmVudHMgfmY6KGZ1biBhbGFybSAtPlxuICAgICAgICBhbGxfZXZlbnRzIDo9IChBbGFybS5hdCBldmVudHMgYWxhcm0sIEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkgOjogIWFsbF9ldmVudHMpO1xuICAgICAgbGV0IGV2ZW50cyA9XG4gICAgICAgIExpc3Quc29ydCAhYWxsX2V2ZW50cyB+Y29tcGFyZTooZnVuIChhdDEsIF8pIChhdDIsIF8pIC0+IFRpbWVfbnMuY29tcGFyZSBhdDEgYXQyKVxuICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpzbmRcbiAgICAgIGluXG4gICAgICBbJW1lc3NhZ2UgXCJcIiAobm93IDogVGltZV9ucy50KSAoZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgbGlzdCldKVxuICA7O1xuXG4gIGxldCB0aW1pbmdfd2hlZWxfbm93IHQgPSBUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXG5cbiAgbGV0IGlzX2luX2ZpcmVkX2V2ZW50cyA9XG4gICAgbGV0IHJlYyBzZWFyY2ggY3VycmVudCB+dGFyZ2V0X2V2ZW50ID1cbiAgICAgIG1hdGNoJW9wdGlvbmFsIChjdXJyZW50IDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIGN1cnJlbnQgLT5cbiAgICAgICAgcGh5c19lcXVhbCBjdXJyZW50IHRhcmdldF9ldmVudCB8fCBzZWFyY2ggY3VycmVudC5uZXh0X2ZpcmVkIH50YXJnZXRfZXZlbnRcbiAgICBpblxuICAgIGZ1biB0IHRhcmdldF9ldmVudCAtPiBzZWFyY2ggdC5maXJlZF9ldmVudHMgfnRhcmdldF9ldmVudFxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRfd2l0aF9qb2JzICh0eXBlIHJ3KSB+am9iOihqb2JfaW52YXJpYW50IDogSm9iLnQgLT4gdW5pdCkgKHQgOiBydyB0KSA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmlkOmlnbm9yZVxuICAgICAgICB+YWR2YW5jZV9lcnJvcnM6aWdub3JlXG4gICAgICAgIH5hbV9hZHZhbmNpbmc6aWdub3JlXG4gICAgICAgIH5ldmVudHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZXZlbnRzIC0+XG4gICAgICAgICAgICAgVGltaW5nX3doZWVsLmludmFyaWFudCBpZ25vcmUgZXZlbnRzO1xuICAgICAgICAgICAgIFRpbWluZ193aGVlbC5pdGVyIGV2ZW50cyB+ZjooZnVuIGFsYXJtIC0+XG4gICAgICAgICAgICAgICBsZXQgam9iX29yX2V2ZW50ID0gQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtIGluXG4gICAgICAgICAgICAgICBsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgICAgICAgICAgICAgIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gICAgICAgICAgICAgICBtYXRjaCBrLCBwcm9qZWN0IGsgam9iX29yX2V2ZW50IHdpdGhcbiAgICAgICAgICAgICAgIHwgSm9iLCBqb2IgLT4gam9iX2ludmFyaWFudCBqb2JcbiAgICAgICAgICAgICAgIHwgRXZlbnQsIGV2ZW50IC0+XG4gICAgICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBhbGFybSBldmVudC5hbGFybSk7XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF0gZXZlbnQuYXQgfmV4cGVjdDooQWxhcm0uYXQgZXZlbnRzIGFsYXJtKTtcbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogRXZlbnQuU3RhdHVzLnRdIGV2ZW50LnN0YXR1cyB+ZXhwZWN0OlNjaGVkdWxlZDtcbiAgICAgICAgICAgICAgICAgRXZlbnQuaW52YXJpYW50IGV2ZW50KSkpXG4gICAgICAgIH5maXJlZF9ldmVudHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gKGZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50KSAtPlxuICAgICAgICAgICAgIGxldCByZWMgY2hlY2tfZXZlbnQgKGN1cnJlbnQgOiBFdmVudC50KSA9XG4gICAgICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIGN1cnJlbnQuYXQgKHRpbWluZ193aGVlbF9ub3cgdCkpO1xuICAgICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwuRXZlbnQuT3B0aW9uIGN1cnJlbnQubmV4dF9maXJlZCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICAgIHwgU29tZSBuZXh0IC0+XG4gICAgICAgICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgY3VycmVudC5hdCBuZXh0LmF0KTtcbiAgICAgICAgICAgICAgICAgY2hlY2tfZXZlbnQgbmV4dFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwuRXZlbnQuT3B0aW9uIGZpcmVkX2V2ZW50cyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGV2ZW50IC0+IGNoZWNrX2V2ZW50IGV2ZW50KSlcbiAgICAgICAgfmhhbmRsZV9maXJlZDppZ25vcmVcbiAgICAgICAgfmlzX3dhbGxfY2xvY2s6aWdub3JlXG4gICAgICAgIH5tb3N0X3JlY2VudGx5X2ZpcmVkOlxuICAgICAgICAgIChjaGVjayAoZnVuIG1vc3RfcmVjZW50bHlfZmlyZWQgLT5cbiAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbCAobW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGV2ZW50IC0+IGFzc2VydCAoaXNfaW5fZmlyZWRfZXZlbnRzIHQgZXZlbnQpKSlcbiAgICAgICAgfnNjaGVkdWxlcjppZ25vcmUpXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCB0ID0gaW52YXJpYW50X3dpdGhfam9icyB+am9iOihmdW4gXyAtPiAoKSkgdFxuZW5kXG5cbm9wZW4gVDFcblxudHlwZSB0ID0gcmVhZCBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xuXG5tb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWFkX3dyaXRlIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xuZW5kXG5cbmxldCBpZCB0ID0gdC5pZFxubGV0IGlzX3dhbGxfY2xvY2sgdCA9IHQuaXNfd2FsbF9jbG9ja1xubGV0IGxlbmd0aCB0ID0gVGltaW5nX3doZWVsLmxlbmd0aCB0LmV2ZW50c1xubGV0IG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCA9IFRpbWluZ193aGVlbC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQuZXZlbnRzXG5sZXQgcmVhZF9vbmx5ICh0IDogWz4gcmVhZCBdIFQxLnQpID0gKHQgOj4gdClcblxuKCogW2ZpcmUgdCBldmVudF0gc2V0cyBbZXZlbnQuc3RhdHVzID0gRmlyZWRdIGFuZCBpbnNlcnRzIFtldmVudF0gaW50b1xuICAgW3QuZmlyZWRfZXZlbnRzXSBpbiBzb3J0ZWQgdGltZSBvcmRlci4gKilcbmxldCBmaXJlIHQgKGV2ZW50IDogRXZlbnQudCkgPVxuICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IEZpcmVkO1xuICBldmVudC5hbGFybSA8LSBBbGFybS5udWxsICgpO1xuICBsZXQgKCkgPVxuICAgICgqIElmIFtldmVudF0gYmVsb25ncyBhZnRlciBbdC5tb3N0X3JlY2VudGx5X2ZpcmVkXSwgdGhlbiB3ZSBzdGFydCB0aGVcbiAgICAgICBpbnNlcnRpb24gdGhlcmUgcmF0aGVyIHRoYW4gYXQgdGhlIGZyb250IG9mIFt0LmZpcmVkX2V2ZW50c10uIFRoaXMgd29ya3NcbiAgICAgICBuaWNlbHkgaWYgd2UncmUgZ2V0dGluZyB0aGUgYWxhcm1zIGluIG5vbi1kZWNyZWFzaW5nIHRpbWUgb3JkZXIsIHdoaWNoIGlzXG4gICAgICAgY2xvc2UgdG8gd2hhdCBbVGltaW5nX3doZWVsXSBwcm92aWRlcyAoYWx0aG91Z2ggW1RpbWluZ193aGVlbF0gZG9lc24ndFxuICAgICAgIGd1YXJhbnRlZSB0aW1lIG9yZGVyaW5nIGZvciB0aW1lcyBpbiB0aGUgc2FtZSBpbnRlcnZhbCkuICopXG4gICAgbWF0Y2glb3B0aW9uYWwgKHQubW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBTb21lIG1vc3RfcmVjZW50bHlfZmlyZWQgd2hlbiBUaW1lX25zLiggPD0gKSBtb3N0X3JlY2VudGx5X2ZpcmVkLmF0IGV2ZW50LmF0IC0+XG4gICAgICBldmVudC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIG1vc3RfcmVjZW50bHlfZmlyZWQ7XG4gICAgICBldmVudC5uZXh0X2ZpcmVkIDwtIG1vc3RfcmVjZW50bHlfZmlyZWQubmV4dF9maXJlZFxuICAgIHwgXyAtPlxuICAgICAgZXZlbnQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgICAgIGV2ZW50Lm5leHRfZmlyZWQgPC0gdC5maXJlZF9ldmVudHNcbiAgaW5cbiAgdC5tb3N0X3JlY2VudGx5X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50O1xuICAoKiBXZSB1c2UgW1RpbWVfbnMuKCA8PSApXSByYXRoZXIgdGhhbiBbPF0gc28gdGhhdCBbZXZlbnRdIGlzIGFkZGVkIGFmdGVyIG90aGVyXG4gICAgIGV2ZW50cyBhdCB0aGUgc2FtZSB0aW1lLiBTaW5jZSBbVGltaW5nX3doZWVsXSBmaXJlcyBhbGFybXMgaW4gYSBidWNrZXQgaW5cbiAgICAgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgd2VyZSBhZGRlZCwgdXNpbmcgWzw9XSBrZWVwcyBldmVudHMgYXQgdGhlIHNhbWVcbiAgICAgdGltZSBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIGFkZGVkLiAqKVxuICB3aGlsZVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5uZXh0X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbmV4dCAtPlxuICAgICAgbGV0IGNvbnRpbnVlID0gVGltZV9ucy4oIDw9ICkgbmV4dC5hdCBldmVudC5hdCBpblxuICAgICAgaWYgY29udGludWVcbiAgICAgIHRoZW4gKFxuICAgICAgICBldmVudC5wcmV2X2ZpcmVkIDwtIGV2ZW50Lm5leHRfZmlyZWQ7XG4gICAgICAgIGV2ZW50Lm5leHRfZmlyZWQgPC0gbmV4dC5uZXh0X2ZpcmVkKTtcbiAgICAgIGNvbnRpbnVlXG4gIGRvXG4gICAgKClcbiAgZG9uZTtcbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQubmV4dF9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5leHQgLT4gbmV4dC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50XG4gIGluXG4gIG1hdGNoJW9wdGlvbmFsIChldmVudC5wcmV2X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgfCBOb25lIC0+IHQuZmlyZWRfZXZlbnRzIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50XG4gIHwgU29tZSBwcmV2IC0+IHByZXYubmV4dF9maXJlZCA8LSBFdmVudC5PcHRpb24uc29tZSBldmVudFxuOztcblxubGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiB0LmV2ZW50c1xubGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IHQuZXZlbnRzXG5cbmxldCBuZXh0X2FsYXJtX3J1bnNfYXQgdCA9XG4gIGlmIEV2ZW50Lk9wdGlvbi5pc19zb21lIHQuZmlyZWRfZXZlbnRzXG4gIHRoZW4gU29tZSAodGltaW5nX3doZWVsX25vdyB0KVxuICBlbHNlIFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IHQuZXZlbnRzXG47O1xuXG5sZXQgbm93IHQgPSBpZiB0LmlzX3dhbGxfY2xvY2sgdGhlbiBUaW1lX25zLm5vdyAoKSBlbHNlIHRpbWluZ193aGVlbF9ub3cgdFxubGV0IHRpbWluZ193aGVlbF9ub3cgPSB0aW1pbmdfd2hlZWxfbm93XG5cbmxldCBzY2hlZHVsZSB0IChldmVudCA6IEV2ZW50LnQpID1cbiAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBTY2hlZHVsZWQ7XG4gIGV2ZW50LmFsYXJtIDwtIFRpbWluZ193aGVlbC5hZGQgdC5ldmVudHMgfmF0OmV2ZW50LmF0IChldmVudCB8PiBKb2Jfb3JfZXZlbnQub2ZfZXZlbnQpXG47O1xuXG5sZXQgcmVtb3ZlX2Zyb21fZmlyZWQgdCAoZXZlbnQgOiBFdmVudC50KSB+bmV3X3N0YXR1cyA9XG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKHQubW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG1vc3RfcmVjZW50bHlfZmlyZWQgLT5cbiAgICAgIGlmIHBoeXNfZXF1YWwgZXZlbnQgbW9zdF9yZWNlbnRseV9maXJlZFxuICAgICAgdGhlblxuICAgICAgICB0Lm1vc3RfcmVjZW50bHlfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLmZpcnN0X3NvbWUgZXZlbnQubmV4dF9maXJlZCBldmVudC5wcmV2X2ZpcmVkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50LnByZXZfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiB0LmZpcmVkX2V2ZW50cyA8LSBldmVudC5uZXh0X2ZpcmVkXG4gICAgfCBTb21lIHByZXYgLT4gcHJldi5uZXh0X2ZpcmVkIDwtIGV2ZW50Lm5leHRfZmlyZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQubmV4dF9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5leHQgLT4gbmV4dC5wcmV2X2ZpcmVkIDwtIGV2ZW50LnByZXZfZmlyZWRcbiAgaW5cbiAgZXZlbnQubmV4dF9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgZXZlbnQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBuZXdfc3RhdHVzXG47O1xuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFdmVudFxuXG4gIGxldCBjcmVhdGVfaW50ZXJuYWwgdCB+YXQgfmludGVydmFsIH5jYWxsYmFjayA9XG4gICAgeyBhbGFybSA9IEFsYXJtLm51bGwgKClcbiAgICA7IGF0XG4gICAgOyBjYWxsYmFja1xuICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSB0LnNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XG4gICAgOyBpbnRlcnZhbFxuICAgIDsgbmV4dF9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBwcmV2X2ZpcmVkID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IHN0YXR1cyA9IFVuc2NoZWR1bGVkXG4gICAgfVxuICA7O1xuXG4gIGxldCBhZGQgdCBldmVudCA9XG4gICAgaWYgVGltZV9ucy4oIDw9ICkgZXZlbnQuYXQgKHRpbWluZ193aGVlbF9ub3cgdClcbiAgICB0aGVuIGZpcmUgdCBldmVudFxuICAgIGVsc2Ugc2NoZWR1bGUgdCBldmVudFxuICA7O1xuXG4gIGxldCBjcmVhdGVfYW5kX2FkZCB0IH5hdCB+aW50ZXJ2YWwgfmNhbGxiYWNrID1cbiAgICBsZXQgZXZlbnQgPSBjcmVhdGVfaW50ZXJuYWwgdCB+YXQgfmludGVydmFsIH5jYWxsYmFjayBpblxuICAgIGFkZCB0IGV2ZW50O1xuICAgIGV2ZW50XG4gIDs7XG5cbiAgbGV0IGF0IHQgYXQgY2FsbGJhY2sgPSBjcmVhdGVfYW5kX2FkZCB0IH5hdCB+aW50ZXJ2YWw6Tm9uZSB+Y2FsbGJhY2tcblxuICBsZXQgYWZ0ZXIgdCBzcGFuIGNhbGxiYWNrID1cbiAgICBjcmVhdGVfYW5kX2FkZCB0IH5hdDooVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW4pIH5pbnRlcnZhbDpOb25lIH5jYWxsYmFja1xuICA7O1xuXG4gIGxldCByZXF1aXJlX3NwYW5fYXRfbGVhc3RfYWxhcm1fcHJlY2lzaW9uIHQgc3BhbiA9XG4gICAgbGV0IGFsYXJtX3ByZWNpc2lvbiA9IGFsYXJtX3ByZWNpc2lvbiB0IGluXG4gICAgaWYgVGltZV9ucy5TcGFuLiggPCApIHNwYW4gYWxhcm1fcHJlY2lzaW9uXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImludGVydmFsIHNwYW4gc21hbGxlciB0aGFuIGFsYXJtIHByZWNpc2lvblwiXG4gICAgICAgICAgICAoc3BhbiA6IFRpbWVfbnMuU3Bhbi50KVxuICAgICAgICAgICAgKGFsYXJtX3ByZWNpc2lvbiA6IFRpbWVfbnMuU3Bhbi50KV1cbiAgOztcblxuICBsZXQgYXRfaW50ZXJ2YWxzIHQgc3BhbiBjYWxsYmFjayA9XG4gICAgcmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByZWNpc2lvbiB0IHNwYW47XG4gICAgY3JlYXRlX2FuZF9hZGQgdCB+YXQ6KG5vdyB0KSB+aW50ZXJ2YWw6KFNvbWUgc3BhbikgfmNhbGxiYWNrXG4gIDs7XG5cbiAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IFByZXZpb3VzbHlfdW5zY2hlZHVsZWRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgYWJvcnQgdCAoZXZlbnQgOiB0KSA6IEFib3J0X3Jlc3VsdC50ID1cbiAgICBtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IC0+XG4gICAgICAobWF0Y2ggZXZlbnQuaW50ZXJ2YWwgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IFNvbWUgKF8gOiBUaW1lX25zLlNwYW4udCkgLT5cbiAgICAgICAgIGV2ZW50LmludGVydmFsIDwtIE5vbmU7XG4gICAgICAgICBldmVudC5zdGF0dXMgPC0gVW5zY2hlZHVsZWQ7XG4gICAgICAgICBPaylcbiAgICB8IEZpcmVkIC0+XG4gICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzOlVuc2NoZWR1bGVkO1xuICAgICAgT2tcbiAgICB8IFNjaGVkdWxlZCAtPlxuICAgICAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBVbnNjaGVkdWxlZDtcbiAgICAgIFRpbWluZ193aGVlbC5yZW1vdmUgdC5ldmVudHMgZXZlbnQuYWxhcm07XG4gICAgICBldmVudC5hbGFybSA8LSBBbGFybS5udWxsICgpO1xuICAgICAgT2tcbiAgICB8IFVuc2NoZWR1bGVkIC0+IFByZXZpb3VzbHlfdW5zY2hlZHVsZWRcbiAgOztcblxuICBsZXQgYWJvcnRfaWZfcG9zc2libGUgdCBldmVudCA9IGlnbm9yZSAoYWJvcnQgdCBldmVudCA6IEFib3J0X3Jlc3VsdC50KVxuXG4gIGxldCBhYm9ydF9leG4gdCBldmVudCA9XG4gICAgbWF0Y2ggYWJvcnQgdCBldmVudCB3aXRoXG4gICAgfCBPayAtPiAoKVxuICAgIHwgcmVhc29uIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW1N5bmNocm9ub3VzX3RpbWVfc291cmNlLmFib3J0X2V4bl0gY2Fubm90IGFib3J0IGV2ZW50XCJcbiAgICAgICAgICAgIChyZWFzb24gOiBBYm9ydF9yZXN1bHQudCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB0IGNhbGxiYWNrID0gY3JlYXRlX2ludGVybmFsIHQgfmF0OlRpbWVfbnMuZXBvY2ggfmludGVydmFsOk5vbmUgfmNhbGxiYWNrXG5cbiAgbGV0IGlzX3NjaGVkdWxlZCAoZXZlbnQgOiB0KSA9XG4gICAgbWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCB8IFNjaGVkdWxlZCB8IEZpcmVkIC0+IHRydWVcbiAgICB8IFVuc2NoZWR1bGVkIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlX2F0X2ludGVybmFsIHQgKGV2ZW50IDogdCkgYXQgfmludGVydmFsID1cbiAgICBtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgIHwgKEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCB8IFNjaGVkdWxlZCB8IEZpcmVkKSBhcyBzdGF0dXMgLT5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVzZXhwIFwiY2Fubm90IHNjaGVkdWxlIGFuIGV2ZW50IHdpdGggc3RhdHVzXCIsIChzdGF0dXMgOiBFdmVudC5TdGF0dXMudCldXG4gICAgfCBVbnNjaGVkdWxlZCAtPlxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBldmVudC5pbnRlcnZhbCA8LSBpbnRlcnZhbDtcbiAgICAgIGFkZCB0IGV2ZW50O1xuICAgICAgT2sgKClcbiAgOztcblxuICBsZXQgc2NoZWR1bGVfYXQgdCBldmVudCBhdCA9IHNjaGVkdWxlX2F0X2ludGVybmFsIHQgZXZlbnQgYXQgfmludGVydmFsOk5vbmVcbiAgbGV0IHNjaGVkdWxlX2FmdGVyIHQgZXZlbnQgc3BhbiA9IHNjaGVkdWxlX2F0IHQgZXZlbnQgKFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBzcGFuKVxuXG4gIGxldCBzY2hlZHVsZV9hdF9pbnRlcnZhbHMgdCBldmVudCBzcGFuID1cbiAgICByZXF1aXJlX3NwYW5fYXRfbGVhc3RfYWxhcm1fcHJlY2lzaW9uIHQgc3BhbjtcbiAgICBzY2hlZHVsZV9hdF9pbnRlcm5hbCB0IGV2ZW50IChub3cgdCkgfmludGVydmFsOihTb21lIHNwYW4pXG4gIDs7XG5cbiAgbGV0IHJlc2NoZWR1bGVfYXQgdCBldmVudCBhdCA6IHVuaXQgPVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCBGaXJlZCAtPlxuICAgICAgcmVtb3ZlX2Zyb21fZmlyZWQgdCBldmVudCB+bmV3X3N0YXR1czpVbnNjaGVkdWxlZDtcbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgYWRkIHQgZXZlbnRcbiAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCAtPlxuICAgICAgKCogSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IGV2ZW50cyBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGZyb20gW2ZpcmVkXS4gKilcbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgYWRkIHQgZXZlbnRcbiAgICB8IFNjaGVkdWxlZCAtPlxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBpZiBUaW1lX25zLiggPiApIGF0ICh0aW1pbmdfd2hlZWxfbm93IHQpXG4gICAgICB0aGVuIFRpbWluZ193aGVlbC5yZXNjaGVkdWxlIHQuZXZlbnRzIGV2ZW50LmFsYXJtIH5hdFxuICAgICAgZWxzZSAoXG4gICAgICAgIFRpbWluZ193aGVlbC5yZW1vdmUgdC5ldmVudHMgZXZlbnQuYWxhcm07XG4gICAgICAgIGZpcmUgdCBldmVudClcbiAgICB8IFVuc2NoZWR1bGVkIC0+XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGV2ZW50LmludGVydmFsIDwtIE5vbmU7XG4gICAgICBhZGQgdCBldmVudFxuICA7O1xuXG4gIGxldCByZXNjaGVkdWxlX2FmdGVyIHQgZXZlbnQgc3BhbiA9IHJlc2NoZWR1bGVfYXQgdCBldmVudCAoVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW4pXG5cbmVuZFxuXG5sZXQgcnVuX2FmdGVyIHQgc3BhbiBjYWxsYmFjayA9IGlnbm9yZSAoRXZlbnQuYWZ0ZXIgdCBzcGFuIGNhbGxiYWNrIDogRXZlbnQudClcbmxldCBydW5fYXQgdCBhdCBjYWxsYmFjayA9IGlnbm9yZSAoRXZlbnQuYXQgdCBhdCBjYWxsYmFjayA6IEV2ZW50LnQpXG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzIHQgc3BhbiBjYWxsYmFjayA9XG4gIGlnbm9yZSAoRXZlbnQuYXRfaW50ZXJ2YWxzIHQgc3BhbiBjYWxsYmFjayA6IEV2ZW50LnQpXG47O1xuXG50eXBlIHNlbmRfZXhuID0gTW9uaXRvcjAudCAtPiA/YmFja3RyYWNlOlsgYEdldCB8IGBUaGlzIG9mIEJhY2t0cmFjZS50IF0gLT4gZXhuIC0+IHVuaXRcblxubGV0IHJ1bl9maXJlZF9ldmVudHMgdCB+KHNlbmRfZXhuIDogc2VuZF9leG4gb3B0aW9uKSA9XG4gIGxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ID0gdC5zY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBpblxuICB3aGlsZVxuICAgIG1hdGNoJW9wdGlvbmFsICh0LmZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGV2ZW50IC0+XG4gICAgICAobWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCB8IFNjaGVkdWxlZCB8IFVuc2NoZWR1bGVkIC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgRmlyZWQgLT5cbiAgICAgICAgIGxldCBuZXdfc3RhdHVzID1cbiAgICAgICAgICAgbWF0Y2ggZXZlbnQuaW50ZXJ2YWwgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gKFVuc2NoZWR1bGVkIDogRXZlbnQuU3RhdHVzLnQpXG4gICAgICAgICAgIHwgU29tZSBfIC0+IChIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgOiBFdmVudC5TdGF0dXMudClcbiAgICAgICAgIGluXG4gICAgICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzO1xuICAgICAgICAgKCogV2Ugc2V0IHRoZSBleGVjdXRpb24gY29udGV4dCBzbyB0aGF0IFtldmVudC5jYWxsYmFja10gcnVucyBpbiB0aGUgc2FtZSBjb250ZXh0XG4gICAgICAgICAgICB0aGF0IHdhcyBpbiBwbGFjZSB3aGVuIFtldmVudF0gd2FzIGNyZWF0ZWQuICopXG4gICAgICAgICBTY2hlZHVsZXIwLnNldF9leGVjdXRpb25fY29udGV4dCB0LnNjaGVkdWxlciBldmVudC5leGVjdXRpb25fY29udGV4dDtcbiAgICAgICAgICgqIEFueSBtb2RpZmljYXRpb24gb2YgW3N0YXR1c10gYmVsb3cgbmVlZHMgdG8gZmlyc3QgY2hlY2sgdGhhdCB0aGUgZXZlbnQgaXNcbiAgICAgICAgICAgIHN0aWxsIFtIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnRdLiBJZiB0aGUgZXZlbnQgc3RhdHVzIGlzIG5vdFxuICAgICAgICAgICAgW0hhcHBlbmluZ19wZXJpb2RpY19ldmVudF0gdGhlbiB0aGUgZXZlbnQncyBjYWxsYmFjayBtdXN0IGhhdmUgcmVzY2hlZHVsZWQgdGhlXG4gICAgICAgICAgICBldmVudC4gSW4gdGhhdCBjYXNlLCBkbyBub3Qgc2V0IHRoZSBzdGF0dXMgb3IgYXR0ZW1wdCB0byByZXNjaGVkdWxlIGFcbiAgICAgICAgICAgIHJlcGVhdGluZyBldmVudC5cblxuICAgICAgICAgICAgVGhpcyBjb2RlIGNvdWxkIGJlIG11Y2ggc2ltcGxlciBpZiB3ZSBpbW1lZGlhdGVseSByZXNjaGVkdWxlZCB0aGUgZXZlbnQgYmVmb3JlXG4gICAgICAgICAgICBydW5uaW5nIHRoZSBjYWxsYmFjayAobm8gbmVlZCBmb3IgdGhlIEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCBzdGF0ZSB0aGVuKS5cbiAgICAgICAgICAgIE9uZSByZWFzb24gd2UgZG9uJ3QgZG8gdGhhdCBpcyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gYXV0b21hdGljYWxseSByZXNjaGVkdWxlXG4gICAgICAgICAgICBhIHBlcmlvZGljIGV2ZW50IGlmIGl0cyBjYWxsYmFjayByYWlzZXMuICopXG4gICAgICAgICAobWF0Y2ggZXZlbnQuY2FsbGJhY2sgKCkgd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgKG1hdGNoIHNlbmRfZXhuIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gdC5hZHZhbmNlX2Vycm9ycyA8LSBFcnJvci5vZl9leG4gZXhuIDo6IHQuYWR2YW5jZV9lcnJvcnNcbiAgICAgICAgICAgICB8IFNvbWUgc2VuZF9leG4gLT5cbiAgICAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgICAgICAgICBzZW5kX2V4biBldmVudC5leGVjdXRpb25fY29udGV4dC5tb25pdG9yIGV4biB+YmFja3RyYWNlOihgVGhpcyBiYWNrdHJhY2UpKTtcbiAgICAgICAgICAgIEV2ZW50LnNldF9zdGF0dXNfaWYgfmlzOkhhcHBlbmluZ19wZXJpb2RpY19ldmVudCBldmVudCBVbnNjaGVkdWxlZFxuICAgICAgICAgIHwgKCkgLT5cbiAgICAgICAgICAgIChtYXRjaCBldmVudC5pbnRlcnZhbCB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IEV2ZW50LnNldF9zdGF0dXNfaWYgfmlzOkhhcHBlbmluZ19wZXJpb2RpY19ldmVudCBldmVudCBVbnNjaGVkdWxlZFxuICAgICAgICAgICAgIHwgU29tZSBpbnRlcnZhbCAtPlxuICAgICAgICAgICAgICAgaWYgRXZlbnQuU3RhdHVzLmVxdWFsIEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCBldmVudC5zdGF0dXNcbiAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAoKiBUaGUgZXZlbnQncyBjYWxsYmFjayBkaWQgbm90IHJlc2NoZWR1bGUgdGhlIGV2ZW50LiBTbyByZXNjaGVkdWxlIHRoZVxuICAgICAgICAgICAgICAgICAgICByZXBlYXRpbmcgdGltZXIgYmFzZWQgb24gdGhlIGxhc3QgW2F0XSB0aW1lLiAqKVxuICAgICAgICAgICAgICAgICBldmVudC5hdFxuICAgICAgICAgICAgICAgICA8LSBUaW1lX25zLm5leHRfbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICAgIH5iYXNlOmV2ZW50LmF0XG4gICAgICAgICAgICAgICAgICAgICAgfmFmdGVyOih0aW1pbmdfd2hlZWxfbm93IHQpXG4gICAgICAgICAgICAgICAgICAgICAgfmludGVydmFsO1xuICAgICAgICAgICAgICAgICBzY2hlZHVsZSB0IGV2ZW50KSkpO1xuICAgICAgICAgdHJ1ZSlcbiAgZG9cbiAgICAoKVxuICBkb25lO1xuICBTY2hlZHVsZXIwLnNldF9leGVjdXRpb25fY29udGV4dCB0LnNjaGVkdWxlciBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XG47O1xuXG5sZXQgYW55X2ZpcmVkX2V2ZW50c190b19ydW4gdCA9IEV2ZW50Lk9wdGlvbi5pc19zb21lICh0LmZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50KVxuXG5sZXQgYWR2YW5jZV9jbG9jayB0IH50b18gfnNlbmRfZXhuID1cbiAgVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2sgdC5ldmVudHMgfnRvXyB+aGFuZGxlX2ZpcmVkOnQuaGFuZGxlX2ZpcmVkO1xuICBydW5fZmlyZWRfZXZlbnRzIHQgfnNlbmRfZXhuXG47O1xuXG5sZXQgZmlyZV9wYXN0X2FsYXJtcyB0IH5zZW5kX2V4biA9XG4gIFRpbWluZ193aGVlbC5maXJlX3Bhc3RfYWxhcm1zIHQuZXZlbnRzIH5oYW5kbGVfZmlyZWQ6dC5oYW5kbGVfZmlyZWQ7XG4gIHJ1bl9maXJlZF9ldmVudHMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG4gPVxuICBhZHZhbmNlX2Nsb2NrIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpcmVfcGFzdF9hbGFybXMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBwcmVwYXJlX3RvX2FkdmFuY2UgdCB+c2VuZF9leG4gPVxuICBpZiB0LmFtX2FkdmFuY2luZ1xuICB0aGVuXG4gICAgcmFpc2VfcyBbJXNleHAgXCJjYW5ub3QgY2FsbCBbYWR2YW5jZV9ieV9hbGFybXNdIG9yIFthZHZhbmNlX2RpcmVjdGx5XSBmcm9tIGNhbGxiYWNrXCJdO1xuICB0LmFtX2FkdmFuY2luZyA8LSB0cnVlO1xuICAobWF0Y2ggdC5hZHZhbmNlX2Vycm9ycyB3aXRoXG4gICB8IFtdIC0+ICgpXG4gICB8IF8gLT4gdC5hZHZhbmNlX2Vycm9ycyA8LSBbXSk7XG4gIHJ1bl9maXJlZF9ldmVudHMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBmaW5pc2hfYWR2YW5jaW5nIHQgPVxuICB0LmFtX2FkdmFuY2luZyA8LSBmYWxzZTtcbiAgbWF0Y2ggdC5hZHZhbmNlX2Vycm9ycyB3aXRoXG4gIHwgW10gLT4gT2sgKClcbiAgfCBlcnJvcnMgLT5cbiAgICB0LmFkdmFuY2VfZXJyb3JzIDwtIFtdO1xuICAgIEVycm9yIChFcnJvci5vZl9saXN0IGVycm9ycylcbjs7XG5cbmxldCBhZHZhbmNlX2J5X2FsYXJtcyB0IH50b18gPVxuICBsZXQgc2VuZF9leG4gPSBOb25lIGluXG4gIHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4bjtcbiAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgaWYgVGltaW5nX3doZWVsLmlzX2VtcHR5IHQuZXZlbnRzXG4gICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG1pbl9hbGFybV90aW1lID0gVGltaW5nX3doZWVsLm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdC5ldmVudHMgaW5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG1pbl9hbGFybV90aW1lIHRvX1xuICAgICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICAoKiBXZSB1c2UgdGhlIGFjdHVhbCBhbGFybSB0aW1lLCByYXRoZXIgdGhhbiBbbmV4dF9hbGFybV9maXJlc19hdF0sIHNvIGFzIG5vdCB0b1xuICAgICAgICAgICBleHBvc2UgKG9yIGFjY3VtdWxhdGUgZXJyb3JzIGFzc29jaWF0ZWQgd2l0aCkgdGhlIHByZWNpc2lvbiBvZlxuICAgICAgICAgICBbVGltaW5nX3doZWVsXS4gKilcbiAgICAgICAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b186bWluX2FsYXJtX3RpbWUgfnNlbmRfZXhuKVxuICBkb25lO1xuICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpbmlzaF9hZHZhbmNpbmcgdFxuOztcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zX2J5IHQgYnkgPSBhZHZhbmNlX2J5X2FsYXJtcyB0IH50b186KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBieSlcblxubGV0IGFkdmFuY2VfYnlfbWF4X2FsYXJtc19pbl9lYWNoX3RpbWluZ193aGVlbF9pbnRlcnZhbCB0IH50b18gPVxuICBsZXQgc2VuZF9leG4gPSBOb25lIGluXG4gIHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4bjtcbiAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgaWYgVGltaW5nX3doZWVsLmlzX2VtcHR5IHQuZXZlbnRzXG4gICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gdC5ldmVudHMgaW5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG5leHRfYWxhcm1fZmlyZXNfYXQgdG9fXG4gICAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgICgqIFdlIHVzZSB0aGUgYWN0dWFsIGFsYXJtIHRpbWUsIHJhdGhlciB0aGFuIFtuZXh0X2FsYXJtX2ZpcmVzX2F0XSwgc28gYXMgbm90IHRvXG4gICAgICAgICAgIGV4cG9zZSAob3IgYWNjdW11bGF0ZSBlcnJvcnMgYXNzb2NpYXRlZCB3aXRoKSB0aGUgcHJlY2lzaW9uIG9mXG4gICAgICAgICAgIFtUaW1pbmdfd2hlZWxdLiAqKVxuICAgICAgICBhZHZhbmNlX2ludGVybmFsXG4gICAgICAgICAgdFxuICAgICAgICAgIH50b186KFRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQuZXZlbnRzKVxuICAgICAgICAgIH5zZW5kX2V4bilcbiAgZG9uZTtcbiAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gfnNlbmRfZXhuO1xuICBmaW5pc2hfYWR2YW5jaW5nIHRcbjs7XG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXyA9XG4gIGxldCBzZW5kX2V4biA9IE5vbmUgaW5cbiAgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuO1xuICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpbmlzaF9hZHZhbmNpbmcgdFxuOztcblxubGV0IGFkdmFuY2VfZGlyZWN0bHlfYnkgdCBieSA9IGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOihUaW1lX25zLmFmdGVyIChub3cgdCkgYnkpXG5cbmxldCBkdXJhdGlvbl9vZiB0IGYgPVxuICBsZXQgc3RhcnQgPSBub3cgdCBpblxuICBsZXQgcmVzdWx0ID0gZiAoKSBpblxuICBsZXQgZHVyYXRpb24gPSBUaW1lX25zLmRpZmYgKG5vdyB0KSBzdGFydCBpblxuICByZXN1bHQsIGR1cmF0aW9uXG47O1xuXG5sZXQgbWF4X2FsYXJtX3RpbWVfaW5fbWluX3RpbWluZ193aGVlbF9pbnRlcnZhbCB0ID1cbiAgVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0LmV2ZW50c1xuOztcblxubGV0IGhhc19ldmVudHNfdG9fcnVuIHQgPSBFdmVudC5PcHRpb24uaXNfc29tZSB0LmZpcmVkX2V2ZW50c1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuaW5jbHVkZSBTY2hlZHVsZXIwXG5tb2R1bGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTBcbm1vZHVsZSBFdmVudCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50XG5tb2R1bGUgQWxhcm0gPSBUaW1pbmdfd2hlZWwuQWxhcm1cbm1vZHVsZSBKb2Jfb3JfZXZlbnQgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS5Kb2Jfb3JfZXZlbnRcblxubGV0IGRlYnVnID0gRGVidWcuc2NoZWR1bGVyXG5cbm1vZHVsZSBJdmFyID0gc3RydWN0XG4gIG9wZW4gVHlwZXMuSXZhclxuXG4gIGxldCBjcmVhdGVfd2l0aF9jZWxsIGNlbGwgPSB7IGNlbGwgfVxuICBsZXQgY3JlYXRlICgpID0gY3JlYXRlX3dpdGhfY2VsbCBFbXB0eVxuXG4gIGxldCBjcmVhdGVfZnVsbCAodHlwZSBhKSAoYSA6IGEpID1cbiAgICAoKiBXZSBhbGxvY2F0ZSBhbiBpbW11dGFibGUgaXZhciBhbmQgdGhlbiBjYXN0IGl0IHRvIGEgbXV0YWJsZSBpdmFyLiAgVGhlIGltbXV0YWJpbGl0eVxuICAgICAgIGFsbG93cyBPQ2FtbCB0byBzdGF0aWNhbGx5IGFsbG9jYXRlIHRoZSBpdmFyIGlmIFthXSBpcyBjb25zdGFudC4gIFRoaXMgY2FzdCBpcyBzYWZlXG4gICAgICAgYmVjYXVzZSBhIGZ1bGwgaXZhciBpcyBuZXZlciBtdXRhdGVkLiAgV2UgYWxzbyBiZWxpZXZlIHRoYXQgd2Ugd2lsbCBub3QgdHJpZ2dlclxuICAgICAgIGZsYW1iZGEgdG8gc3B1cmlvdXNseSByZXBvciB3YXJuaW5nIDU5LCBtdXRhdGlvbiBvZiBrbm93biBpbW11dGFibGUgZGF0YS4gIEFsbFxuICAgICAgIG11dGF0aW9ucyBvZiBhbiBpdmFyIGNlbGwsIGkuZS4gW2Zvby5jZWxsIDwtIC4uLl0sIGFyZSBkaXJlY3RseSBwcmVjZWRlZCBieSBhXG4gICAgICAgW21hdGNoIGZvby5jZWxsXSB0aGF0IHByZXZlbnRzIHRoZSBbRnVsbF0gY2FzZSBmcm9tIHJlYWNoaW5nIHRoZSBtb2RpZmljYXRpb24uICBTb1xuICAgICAgIGZsYW1iZGEgc2hvdWxkIGFsd2F5cyBlbGltaW5hdGUgdGhlIFtmb28uY2VsbCA8LSAuLi5dIG9mIGEgY29uc3RhbnQgW0Z1bGxdIGl2YXIsXG4gICAgICAgYW5kIG5vdCB3YXJuLiAqKVxuICAgIChPYmoubWFnaWMgOiBhIEltbXV0YWJsZS50IC0+IGEgdCkgeyBjZWxsID0gRnVsbCBhIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQnZhciA9IHN0cnVjdFxuICBvcGVuIFR5cGVzLkJ2YXJcblxuICBsZXQgY3JlYXRlICgpID0gb2ZfcmVwciB7IGhhc19hbnlfd2FpdGVycyA9IGZhbHNlOyBpdmFyID0gSXZhci5jcmVhdGUgKCkgfVxuZW5kXG5cbm1vZHVsZSBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEV4ZWNfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVHlwZXMuVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLkV4ZWNfcmVzdWx0LnQgPVxuICAgICAgfCBGaW5pc2hlZFxuICAgICAgfCBOb3RfZmluaXNoZWRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICB0eXBlIHQgPSBUeXBlcy5WZXJ5X2xvd19wcmlvcml0eV93b3JrZXIudCA9XG4gICAgeyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IGV4ZWMgOiB1bml0IC0+IEV4ZWNfcmVzdWx0LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlciB+ZXhlY3V0aW9uX2NvbnRleHQ6KGNoZWNrIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCkgfmV4ZWM6aWdub3JlKVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFNjaGVkdWxlcjAudCA9XG4gIHsgKCogW2NoZWNrX2FjY2Vzc10gb3B0aW9uYWxseSBob2xkcyBhIGZ1bmN0aW9uIHRvIHJ1biB0byBjaGVjayB3aGV0aGVyIGFjY2VzcyB0byBbdF0gaXNcbiAgICAgICBjdXJyZW50bHkgYWxsb3dlZC4gIEl0IGlzIHVzZWQgdG8gZGV0ZWN0IGludmFsaWQgYWNjZXNzIHRvIHRoZSBzY2hlZHVsZXIgZnJvbSBhXG4gICAgICAgdGhyZWFkLiAqKVxuICAgIG11dGFibGUgY2hlY2tfYWNjZXNzIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uXG4gIDsgbXV0YWJsZSBqb2JfcG9vbCA6IEpvYl9wb29sLnRcbiAgOyBub3JtYWxfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gIDsgbG93X3ByaW9yaXR5X2pvYnMgOiBKb2JfcXVldWUudFxuICA7IHZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgOiBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIudCBEZXF1ZS50XG4gIDsgbXV0YWJsZSBtYWluX2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICA7IG11dGFibGUgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgKCogVGhlIHNjaGVkdWxlciBjYWxscyBbZ290X3VuY2F1Z2h0X2V4bl0gd2hlbiBhbiBleGNlcHRpb24gYnViYmxlcyB0byB0aGUgdG9wIG9mIHRoZVxuICAgICBtb25pdG9yIHRyZWUgd2l0aG91dCBiZWluZyBoYW5kbGVkLiAgVGhpcyBmdW5jdGlvbiBndWFyYW50ZWVzIHRvIG5ldmVyIHJ1biBhbm90aGVyXG4gICAgIGpvYiBhZnRlciB0aGlzIGJ5IGNhbGxpbmcgW2NsZWFyXSBhbmQgYmVjYXVzZSBbZW5xdWV1ZV9qb2JdIHdpbGwgbmV2ZXIgYWRkIGFub3RoZXJcbiAgICAgam9iLiAqKVxuICA7IG11dGFibGUgdW5jYXVnaHRfZXhuIDogKEV4bi50ICogU2V4cC50KSBvcHRpb25cbiAgOyBtdXRhYmxlIGN5Y2xlX2NvdW50IDogaW50XG4gIDsgbXV0YWJsZSBjeWNsZV9zdGFydCA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgaW5fY3ljbGUgOiBib29sXG4gIDsgbXV0YWJsZSBydW5fZXZlcnlfY3ljbGVfc3RhcnQgOiAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pIGFycmF5XG4gIDsgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIDpcbiAgICAgIChUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS50LCAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pKSBIYXNodGJsLnRcbiAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9lbmQgOiAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pIGFycmF5XG4gIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSA6XG4gICAgICAoVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUudCwgKFR5cGVzLkN5Y2xlX2hvb2sudFtAc2V4cC5vcGFxdWVdKSkgSGFzaHRibC50XG4gIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICA7IG11dGFibGUgbGFzdF9jeWNsZV9udW1fam9icyA6IGludFxuICA7IG11dGFibGUgdG90YWxfY3ljbGVfdGltZSA6IFRpbWVfbnMuU3Bhbi50XG4gIDsgbXV0YWJsZSB0aW1lX3NvdXJjZSA6IHJlYWRfd3JpdGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudFxuICAoKiBbZXh0ZXJuYWxfam9ic10gaXMgYSBxdWV1ZSBvZiBhY3Rpb25zIHNlbnQgZnJvbSBvdXRzaWRlIG9mIGFzeW5jLiAgVGhpcyBpcyBmb3IgdGhlXG4gICAgIGNhc2Ugd2hlcmUgd2Ugd2FudCB0byBzY2hlZHVsZSBhIGpvYiBvciBmaWxsIGFuIGl2YXIgZnJvbSBhIGNvbnRleHQgd2hlcmUgaXQgaXMgbm90XG4gICAgIHNhZmUgdG8gcnVuIGFzeW5jIGNvZGUsIGJlY2F1c2UgdGhlIGFzeW5jIGxvY2sgaXNuJ3QgaGVsZC4gIEZvciBpbnN0YW5jZTogLSBpbiBhblxuICAgICBPQ2FtbCBmaW5hbGl6ZXIsIGFzIHRoZXkgY2FuIHJ1biBhdCBhbnkgdGltZSBpbiBhbnkgdGhyZWFkLlxuXG4gICAgIFRoZSB3YXkgdG8gZG8gaXQgaXMgdG8gcXVldWUgYSB0aHVuayBpbiBbZXh0ZXJuYWxfam9ic10gYW5kIGNhbGxcbiAgICAgW3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rXSwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIG5vdGlmeWluZyB0aGUgc2NoZWR1bGVyXG4gICAgIHRoYXQgbmV3IGFjdGlvbnMgYXJlIGF2YWlsYWJsZS5cblxuICAgICBXaGVuIHVzaW5nIEFzeW5jIG9uIHVuaXgsIFt0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va10gaXMgc2V0IGluIFtBc3luY191bml4XVxuICAgICB0byBjYWxsIFtJbnRlcnJ1cHRvci50aHJlYWRfc2FmZV9pbnRlcnJ1cHRdLCB3aGljaCB3aWxsIHdha2UgdXAgdGhlXG4gICAgIFtBc3luY191bml4XSBzY2hlZHVsZXIgYW5kIHJ1biBhIGN5Y2xlLlxuXG4gICAgIE5vdGUgdGhhdCB0aGlzIGhvb2sgbWlnaHQgYmUgdXNlZCBpbiBvdGhlciBjb250ZXh0IChqc19vZl9vY2FtbCwgbWlyYWdlKS5cblxuICAgICBXaGVuIHJ1bm5pbmcgYSBjeWNsZSwgd2UgcHVsbCBleHRlcm5hbCBhY3Rpb25zIGF0IGV2ZXJ5IGpvYiBhbmQgcGVyZm9ybSB0aGVtXG4gICAgIGltbWVkaWF0ZWx5LiAqKVxuICA7IGV4dGVybmFsX2pvYnMgOiBFeHRlcm5hbF9qb2IudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgbXV0YWJsZSB0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA6IHVuaXQgLT4gdW5pdFxuICAoKiBbam9iX3F1ZXVlZF9ob29rXSBhbmQgW2V2ZW50X2FkZGVkX2hvb2tdIGFpbSB0byBiZSB1c2VkIGJ5IGpzX29mX29jYW1sLiAqKVxuICAoKiBXZSB1c2UgW18gb3B0aW9uXSBoZXJlIGJlY2F1c2UgdGhvc2UgaG9va3Mgd2lsbCBub3QgYmUgc2V0IGluIHRoZSBjb21tb24gY2FzZVxuICAgICBhbmQgd2Ugd2FudCB0byBhdm9pZCBleHRyYSBmdW5jdGlvbiBjYWxscy4gKilcbiAgOyBtdXRhYmxlIGpvYl9xdWV1ZWRfaG9vayA6IChQcmlvcml0eS50IC0+IHVuaXQpIG9wdGlvblxuICA7IG11dGFibGUgZXZlbnRfYWRkZWRfaG9vayA6IChUaW1lX25zLnQgLT4gdW5pdCkgb3B0aW9uXG4gIDsgbXV0YWJsZSB5aWVsZCA6ICgodW5pdCwgcmVhZF93cml0ZSkgVHlwZXMuQnZhci50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgbXV0YWJsZVxuICAgIHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluIDpcbiAgICAgICgodW5pdCwgcmVhZF93cml0ZSkgVHlwZXMuQnZhci50W0BzZXhwLm9wYXF1ZV0gKCogY29uZmlndXJhdGlvbiopKVxuICA7IG11dGFibGUgY2hlY2tfaW52YXJpYW50cyA6IGJvb2xcbiAgOyBtdXRhYmxlIG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIDogTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUudFxuICA7IG11dGFibGUgcmVjb3JkX2JhY2t0cmFjZXMgOiBib29sXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHVuY2F1Z2h0X2V4bl91bndyYXBwZWQgPSB1bmNhdWdodF9leG5cblxubGV0IHVuY2F1Z2h0X2V4biB0ID1cbiAgbWF0Y2ggdC51bmNhdWdodF9leG4gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGV4biwgc2V4cCkgLT5cbiAgICBTb21lIChFcnJvci5jcmVhdGUgXCJ1bmhhbmRsZWQgZXhjZXB0aW9uXCIgKGV4biwgc2V4cCkgWyVzZXhwX29mOiBFeG4udCAqIFNleHAudF0pXG47O1xuXG5sZXQgbnVtX3BlbmRpbmdfam9icyB0ID1cbiAgSm9iX3F1ZXVlLmxlbmd0aCB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzICsgSm9iX3F1ZXVlLmxlbmd0aCB0Lmxvd19wcmlvcml0eV9qb2JzXG47O1xuXG5sZXQgbnVtX2pvYnNfcnVuIHQgPVxuICBKb2JfcXVldWUubnVtX2pvYnNfcnVuIHQubm9ybWFsX3ByaW9yaXR5X2pvYnNcbiAgKyBKb2JfcXVldWUubnVtX2pvYnNfcnVuIHQubG93X3ByaW9yaXR5X2pvYnNcbjs7XG5cbmxldCBsYXN0X2N5Y2xlX251bV9qb2JzIHQgPSB0Lmxhc3RfY3ljbGVfbnVtX2pvYnNcblxubGV0IHVub3JkZXJlZF9pc19zdWJsaXN0IH5lcXVhbCB+c3VibGlzdDpzbWFsbCBsYXJnZSA9XG4gIGxldCBsYXJnZSA9IEFycmF5LnRvX2xpc3QgbGFyZ2UgaW5cbiAgbGV0IHJlbW92ZSBhIHggPVxuICAgIG1hdGNoIExpc3Quc3BsaXRfd2hpbGUgYSB+ZjooZnVuIHkgLT4gbm90IChlcXVhbCB5IHgpKSB3aXRoXG4gICAgfCBfLCBbXSAtPiBOb25lXG4gICAgfCBsLCBfIDo6IHIgLT4gU29tZSAobCBAIHIpXG4gIGluXG4gIE9wdGlvbi5pc19zb21lXG4gICAgKExpc3QuZm9sZCBzbWFsbCB+aW5pdDooU29tZSBsYXJnZSkgfmY6KGZ1biBhY2MgeCAtPlxuICAgICAgIE9wdGlvbi5iaW5kIGFjYyB+ZjooZnVuIGwgLT4gcmVtb3ZlIGwgeCkpKVxuOztcblxubGV0IGNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IHRhYmxlIGFycmF5ID1cbiAgKCogWW91IGNhbiBpbiBmYWN0IGhhdmUgaG9va3MgaW4gdGhlIGxpc3QgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIGNvcnJlc3BvbmRpbmcgZW50cnkgaW5cbiAgICAgdGhlIHRhYmxlLiBTdWNoIGhvb2tzIGNhbiBuZXZlciBiZSByZW1vdmVkLiAqKVxuICBhc3NlcnQgKHVub3JkZXJlZF9pc19zdWJsaXN0IH5lcXVhbDpwaHlzX2VxdWFsIH5zdWJsaXN0OihIYXNodGJsLmRhdGEgdGFibGUpIGFycmF5KVxuOztcblxubGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gIHRyeVxuICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jaGVja19hY2Nlc3M6aWdub3JlXG4gICAgICB+am9iX3Bvb2w6KGNoZWNrIEpvYl9wb29sLmludmFyaWFudClcbiAgICAgIH5ub3JtYWxfcHJpb3JpdHlfam9iczooY2hlY2sgSm9iX3F1ZXVlLmludmFyaWFudClcbiAgICAgIH5sb3dfcHJpb3JpdHlfam9iczooY2hlY2sgSm9iX3F1ZXVlLmludmFyaWFudClcbiAgICAgIH52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBxIC0+IERlcXVlLml0ZXIgcSB+ZjpWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuaW52YXJpYW50KSlcbiAgICAgIH5tYWluX2V4ZWN1dGlvbl9jb250ZXh0OihjaGVjayBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQpXG4gICAgICB+Y3VycmVudF9leGVjdXRpb25fY29udGV4dDooY2hlY2sgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50KVxuICAgICAgfnVuY2F1Z2h0X2V4bjpcbiAgICAgICAgKGNoZWNrIChmdW4gdW5jYXVnaHRfZXhuIC0+XG4gICAgICAgICAgIGlmIGlzX3NvbWUgdW5jYXVnaHRfZXhuIHRoZW4gYXNzZXJ0IChudW1fcGVuZGluZ19qb2JzIHQgPSAwKSkpXG4gICAgICB+Y3ljbGVfY291bnQ6KGNoZWNrIChmdW4gY3ljbGVfY291bnQgLT4gYXNzZXJ0IChjeWNsZV9jb3VudCA+PSAwKSkpXG4gICAgICB+Y3ljbGVfc3RhcnQ6aWdub3JlXG4gICAgICB+aW5fY3ljbGU6aWdub3JlXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0Omlnbm9yZVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIC0+XG4gICAgICAgICAgIGNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCkpXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX2VuZDppZ25vcmVcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlOlxuICAgICAgICAoY2hlY2sgKGZ1biBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIC0+XG4gICAgICAgICAgIGNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgdC5ydW5fZXZlcnlfY3ljbGVfZW5kKSlcbiAgICAgIH5sYXN0X2N5Y2xlX3RpbWU6aWdub3JlXG4gICAgICB+dG90YWxfY3ljbGVfdGltZTppZ25vcmVcbiAgICAgIH5sYXN0X2N5Y2xlX251bV9qb2JzOlxuICAgICAgICAoY2hlY2sgKGZ1biBsYXN0X2N5Y2xlX251bV9qb2JzIC0+IGFzc2VydCAobGFzdF9jeWNsZV9udW1fam9icyA+PSAwKSkpXG4gICAgICB+dGltZV9zb3VyY2U6XG4gICAgICAgIChjaGVja1xuICAgICAgICAgICAoU3luY2hyb25vdXNfdGltZV9zb3VyY2UuUmVhZF93cml0ZS5pbnZhcmlhbnRfd2l0aF9qb2JzIH5qb2I6KGZ1biBqb2IgLT5cbiAgICAgICAgICAgICAgYXNzZXJ0IChQb29sLnBvaW50ZXJfaXNfdmFsaWQgdC5qb2JfcG9vbCBqb2IpKSkpXG4gICAgICB+ZXh0ZXJuYWxfam9iczppZ25vcmVcbiAgICAgIH50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vazppZ25vcmVcbiAgICAgIH5qb2JfcXVldWVkX2hvb2s6aWdub3JlXG4gICAgICB+ZXZlbnRfYWRkZWRfaG9vazppZ25vcmVcbiAgICAgIH55aWVsZDppZ25vcmVcbiAgICAgIH55aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbjppZ25vcmVcbiAgICAgIH5jaGVja19pbnZhcmlhbnRzOmlnbm9yZVxuICAgICAgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlOmlnbm9yZVxuICAgICAgfnJlY29yZF9iYWNrdHJhY2VzOmlnbm9yZVxuICB3aXRoXG4gIHwgZXhuIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiU2NoZWR1bGVyLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSAodCA6IHQpXVxuOztcblxubGV0IGZyZWVfam9iIHQgam9iID0gUG9vbC5mcmVlIHQuam9iX3Bvb2wgam9iXG5cbmxldCBlbnF1ZXVlIHQgKGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudCkgZiBhID1cbiAgKCogSWYgdGhlcmUncyBiZWVuIGFuIHVuY2F1Z2h0IGV4biwgd2UgZG9uJ3QgYWRkIHRoZSBqb2IsIHNpbmNlIHdlIGRvbid0IHdhbnQgYW55IGpvYnNcbiAgICAgdG8gcnVuIG9uY2UgdGhlcmUncyBiZWVuIGFuIHVuY2F1Z2h0IGV4bi4gKilcbiAgaWYgaXNfbm9uZSB0LnVuY2F1Z2h0X2V4blxuICB0aGVuIChcbiAgICBsZXQgcHJpb3JpdHkgPSBleGVjdXRpb25fY29udGV4dC5wcmlvcml0eSBpblxuICAgIGxldCBqb2JfcXVldWUgPVxuICAgICAgbWF0Y2ggcHJpb3JpdHkgd2l0aFxuICAgICAgfCBOb3JtYWwgLT4gdC5ub3JtYWxfcHJpb3JpdHlfam9ic1xuICAgICAgfCBMb3cgLT4gdC5sb3dfcHJpb3JpdHlfam9ic1xuICAgIGluXG4gICAgSm9iX3F1ZXVlLmVucXVldWUgam9iX3F1ZXVlIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgICBtYXRjaCB0LmpvYl9xdWV1ZWRfaG9vayB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGYgLT4gZiBwcmlvcml0eSlcbjs7XG5cbmxldCBlbnF1ZXVlX2pvYiB0IGpvYiB+ZnJlZV9qb2IgPVxuICBsZXQgam9iX3Bvb2wgPSB0LmpvYl9wb29sIGluXG4gIGVucXVldWVcbiAgICB0XG4gICAgKFBvb2wuZ2V0IGpvYl9wb29sIGpvYiBQb29sLlNsb3QudDApXG4gICAgKFBvb2wuZ2V0IGpvYl9wb29sIGpvYiBQb29sLlNsb3QudDEpXG4gICAgKFBvb2wuZ2V0IGpvYl9wb29sIGpvYiBQb29sLlNsb3QudDIpO1xuICBpZiBmcmVlX2pvYiB0aGVuIFBvb2wuZnJlZSB0LmpvYl9wb29sIGpvYlxuOztcblxubGV0IGhhbmRsZV9maXJlZCAodGltZV9zb3VyY2UgOiBfIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLnQpIGpvYl9vcl9ldmVudCA9XG4gIGxldCBvcGVuIEpvYl9vcl9ldmVudC5NYXRjaCBpblxuICBsZXQgKEsgaykgPSBraW5kIGpvYl9vcl9ldmVudCBpblxuICBtYXRjaCBrLCBwcm9qZWN0IGsgam9iX29yX2V2ZW50IHdpdGhcbiAgfCBKb2IsIGpvYiAtPiBlbnF1ZXVlX2pvYiB0aW1lX3NvdXJjZS5zY2hlZHVsZXIgam9iIH5mcmVlX2pvYjp0cnVlXG4gIHwgRXZlbnQsIGV2ZW50IC0+IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLmZpcmUgdGltZV9zb3VyY2UgZXZlbnRcbjs7XG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgbm93ID0gVGltZV9ucy5ub3cgKCkgaW5cbiAgbGV0IHJlYyB0ID1cbiAgICB7IGNoZWNrX2FjY2VzcyA9IE5vbmVcbiAgICA7IGpvYl9wb29sID0gSm9iX3Bvb2wuY3JlYXRlICgpXG4gICAgOyBub3JtYWxfcHJpb3JpdHlfam9icyA9IEpvYl9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IGxvd19wcmlvcml0eV9qb2JzID0gSm9iX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgdmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyA9IERlcXVlLmNyZWF0ZSAoKVxuICAgIDsgbWFpbl9leGVjdXRpb25fY29udGV4dCA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbiAgICA7IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgPSBFeGVjdXRpb25fY29udGV4dC5tYWluXG4gICAgOyB1bmNhdWdodF9leG4gPSBOb25lXG4gICAgOyBjeWNsZV9zdGFydCA9IG5vd1xuICAgIDsgY3ljbGVfY291bnQgPSAwXG4gICAgOyBpbl9jeWNsZSA9IGZhbHNlXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnQgPSBbfHxdXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlKVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCA9IFt8fF1cbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlKVxuICAgIDsgbGFzdF9jeWNsZV90aW1lID0gc2VjIDAuXG4gICAgOyBsYXN0X2N5Y2xlX251bV9qb2JzID0gMFxuICAgIDsgdG90YWxfY3ljbGVfdGltZSA9IHNlYyAwLlxuICAgIDsgdGltZV9zb3VyY2VcbiAgICA7IGV4dGVybmFsX2pvYnMgPSBUaHJlYWRfc2FmZV9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IHRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rID0gaWdub3JlXG4gICAgOyBqb2JfcXVldWVkX2hvb2sgPSBOb25lXG4gICAgOyBldmVudF9hZGRlZF9ob29rID0gTm9uZVxuICAgIDsgeWllbGQgPSBCdmFyLmNyZWF0ZSAoKVxuICAgIDsgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gPSBCdmFyLmNyZWF0ZSAoKSAoKiBjb25maWd1cmF0aW9uICopXG4gICAgOyBjaGVja19pbnZhcmlhbnRzID0gQXN5bmNfa2VybmVsX2NvbmZpZy5jaGVja19pbnZhcmlhbnRzXG4gICAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9XG4gICAgICAgIEFzeW5jX2tlcm5lbF9jb25maWcubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgICA7IHJlY29yZF9iYWNrdHJhY2VzID0gQXN5bmNfa2VybmVsX2NvbmZpZy5yZWNvcmRfYmFja3RyYWNlc1xuICAgIH1cbiAgYW5kIGV2ZW50cyA9XG4gICAgVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOkFzeW5jX2tlcm5lbF9jb25maWcudGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQ6bm93XG4gIGFuZCB0aW1lX3NvdXJjZSA6IF8gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudCA9XG4gICAgeyBpZCA9IFR5cGVzLlRpbWVfc291cmNlX2lkLmNyZWF0ZSAoKVxuICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBbXVxuICAgIDsgYW1fYWR2YW5jaW5nID0gZmFsc2VcbiAgICA7IGV2ZW50c1xuICAgIDsgaGFuZGxlX2ZpcmVkID0gKGZ1biBhbGFybSAtPiBoYW5kbGVfZmlyZWQgdGltZV9zb3VyY2UgKEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkpXG4gICAgOyBmaXJlZF9ldmVudHMgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgaXNfd2FsbF9jbG9jayA9IHRydWVcbiAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgc2NoZWR1bGVyID0gdFxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IGlzX2RlYWQgdCA9IGlzX3NvbWUgdC51bmNhdWdodF9leG5cbmxldCBzZXRfY2hlY2tfYWNjZXNzIHQgZiA9IHQuY2hlY2tfYWNjZXNzIDwtIGZcblxubGV0IGJhY2t0cmFjZV9vZl9maXJzdF9qb2IgdCA9XG4gIE9wdGlvbi5maXJzdF9zb21lXG4gICAgKEpvYl9xdWV1ZS5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzKVxuICAgIChKb2JfcXVldWUuYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUgdC5sb3dfcHJpb3JpdHlfam9icylcbjs7XG5cbmxldCB0X3JlZiA9XG4gIG1hdGNoIFJlc3VsdC50cnlfd2l0aCBjcmVhdGUgd2l0aFxuICB8IE9rIHQgLT4gcmVmIHRcbiAgfCBFcnJvciBleG4gLT5cbiAgICBEZWJ1Zy5sb2cgXCJBc3luYyBjYW5ub3QgY3JlYXRlIGl0cyByYXcgc2NoZWR1bGVyXCIgZXhuIFslc2V4cF9vZjogZXhuXTtcbiAgICBleGl0IDFcbjs7XG5cbmxldCBjaGVja19hY2Nlc3MgdCA9XG4gIG1hdGNoIHQuY2hlY2tfYWNjZXNzIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmIC0+IGYgKClcbjs7XG5cbmxldCB0ICgpID1cbiAgbGV0IHQgPSAhdF9yZWYgaW5cbiAgY2hlY2tfYWNjZXNzIHQ7XG4gIHRcbjs7XG5cbmxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgPVxuICBpZiB0LnJlY29yZF9iYWNrdHJhY2VzXG4gIHRoZW4gRXhlY3V0aW9uX2NvbnRleHQucmVjb3JkX2JhY2t0cmFjZSB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbiAgZWxzZSB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbjs7XG5cbmxldCB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSB0IHRtcF9jb250ZXh0IH5mIHggPVxuICBsZXQgb2xkX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgdG1wX2NvbnRleHQ7XG4gIHByb3RlY3R4IH5mIHggfmZpbmFsbHk6KGZ1biBfIC0+IHNldF9leGVjdXRpb25fY29udGV4dCB0IG9sZF9jb250ZXh0KVxuOztcblxubGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgdCB0bXBfY29udGV4dCB+ZiA9IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIHQgdG1wX2NvbnRleHQgfmYgKClcblxubGV0IGNyZWF0ZV9qb2IgKHR5cGUgYSkgdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBpZiBQb29sLmlzX2Z1bGwgdC5qb2JfcG9vbCB0aGVuIHQuam9iX3Bvb2wgPC0gUG9vbC5ncm93IHQuam9iX3Bvb2w7XG4gIFBvb2wubmV3M1xuICAgIHQuam9iX3Bvb2xcbiAgICBleGVjdXRpb25fY29udGV4dFxuICAgIChPYmoubWFnaWMgKGYgOiBhIC0+IHVuaXQpIDogT2JqLnQgLT4gdW5pdClcbiAgICAoT2JqLnJlcHIgKGEgOiBhKSlcbjs7XG5cbmxldCBnb3RfdW5jYXVnaHRfZXhuIHQgZXhuIHNleHAgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcImdvdF91bmNhdWdodF9leG5cIiAoZXhuLCBzZXhwKSBbJXNleHBfb2Y6IEV4bi50ICogU2V4cC50XTtcbiAgTGlzdC5pdGVyIFsgdC5ub3JtYWxfcHJpb3JpdHlfam9iczsgdC5sb3dfcHJpb3JpdHlfam9icyBdIH5mOkpvYl9xdWV1ZS5jbGVhcjtcbiAgdC51bmNhdWdodF9leG4gPC0gU29tZSAoZXhuLCBzZXhwKVxuOztcblxuKCogW3N0YXJ0X2N5Y2xlIHQgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHldIGVuYWJsZXMgc3Vic2VxdWVudCBjYWxscyBvZiBbcnVuX2pvYnNdXG4gICB0byBydW4gdXAgdG8gW21heF9udW1fam9ic19wZXJfcHJpb3JpdHldIGpvYnMgb2YgZWFjaCBwcmlvcml0eSBsZXZlbC4gKilcbmxldCBzdGFydF9jeWNsZSB0IH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5ID1cbiAgbGV0IG4gPSBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5yYXcgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eSBpblxuICBKb2JfcXVldWUuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgbjtcbiAgSm9iX3F1ZXVlLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0Lmxvd19wcmlvcml0eV9qb2JzIG5cbjs7XG5cbigqIFtydW5fam9icyB0XSByZW1vdmVzIGpvYnMgZnJvbSBbdF0gb25lIGF0IGEgdGltZSBhbmQgcnVucyB0aGVtLCBzdG9wcGluZyBhcyBzb29uXG4gICBhcyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uIGlzIHJhaXNlZCwgb3Igd2hlbiBubyBtb3JlIGpvYnMgY2FuIGJlIHJ1biBhdCBhbnkgcHJpb3JpdHksXG4gICBhcyBwZXIgW35tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5XS4gKilcbmxldCByZWMgcnVuX2pvYnMgdCA9XG4gIG1hdGNoIEpvYl9xdWV1ZS5ydW5fam9icyB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzIHQgd2l0aFxuICB8IEVycm9yIF8gYXMgZSAtPiBlXG4gIHwgT2sgKCkgLT5cbiAgICAobWF0Y2ggSm9iX3F1ZXVlLnJ1bl9qb2JzIHQubG93X3ByaW9yaXR5X2pvYnMgdCB3aXRoXG4gICAgIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgICAgfCBPayAoKSAtPlxuICAgICAgIGlmIEpvYl9xdWV1ZS5jYW5fcnVuX2Ffam9iIHQubm9ybWFsX3ByaW9yaXR5X2pvYnNcbiAgICAgICB8fCBKb2JfcXVldWUuY2FuX3J1bl9hX2pvYiB0Lmxvd19wcmlvcml0eV9qb2JzXG4gICAgICAgdGhlbiBydW5fam9icyB0XG4gICAgICAgZWxzZSBPayAoKSlcbjs7XG5cbmxldCBzdGFiaWxpemUgdCA9XG4gIHN0YXJ0X2N5Y2xlXG4gICAgdFxuICAgIH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5OlxuICAgICAgKE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLmNyZWF0ZV9leG4gSW50Lm1heF92YWx1ZSk7XG4gIG1hdGNoIHJ1bl9qb2JzIHQgd2l0aFxuICB8IE9rICgpIC0+IE9rICgpXG4gIHwgRXJyb3IgKGV4biwgX2JhY2t0cmFjZSkgLT4gRXJyb3IgZXhuXG47O1xuXG5sZXQgY3JlYXRlX3RpbWVfc291cmNlXG4gICAgICA/KHRpbWluZ193aGVlbF9jb25maWcgPSBBc3luY19rZXJuZWxfY29uZmlnLnRpbWluZ193aGVlbF9jb25maWcpXG4gICAgICB+bm93XG4gICAgICAoKVxuICA9XG4gIGxldCB0ID0gdCAoKSBpblxuICBsZXQgZXZlbnRzID0gVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0Om5vdyBpblxuICBsZXQgcmVjIHRpbWVfc291cmNlIDogXyBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50ID1cbiAgICB7IGlkID0gVHlwZXMuVGltZV9zb3VyY2VfaWQuY3JlYXRlICgpXG4gICAgOyBhZHZhbmNlX2Vycm9ycyA9IFtdXG4gICAgOyBhbV9hZHZhbmNpbmcgPSBmYWxzZVxuICAgIDsgZXZlbnRzXG4gICAgOyBoYW5kbGVfZmlyZWQgPSAoZnVuIGFsYXJtIC0+IGhhbmRsZV9maXJlZCB0aW1lX3NvdXJjZSAoQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSlcbiAgICA7IGZpcmVkX2V2ZW50cyA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBpc193YWxsX2Nsb2NrID0gZmFsc2VcbiAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgc2NoZWR1bGVyID0gdFxuICAgIH1cbiAgaW5cbiAgdGltZV9zb3VyY2Vcbjs7XG5cbmxldCB3YWxsX2Nsb2NrICgpID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UucmVhZF9vbmx5ICh0ICgpKS50aW1lX3NvdXJjZVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxubW9kdWxlIENlbGwgPSBUeXBlcy5DZWxsXG5cbnR5cGUgYW55ID1cbiAgWyBgRW1wdHlcbiAgfCBgRW1wdHlfb25lX2hhbmRsZXJcbiAgfCBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgfCBgRnVsbFxuICB8IGBJbmRpclxuICBdXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkl2YXIudCA9IHsgbXV0YWJsZSBjZWxsIDogKCdhLCBhbnkpIGNlbGwgfVxuXG4oKiBUaGUgWydiXSBpcyB1c2VkIHRvIGVuY29kZSB0aGUgY29uc3RydWN0b3IuICBUaGlzIGFsbG93cyB1cyB0byB3cml0ZSBmdW5jdGlvbnMgdGhhdFxuICAgdGFrZSBvbmx5IG9uZSBvZiB0aGUgY29uc3RydWN0b3JzLCB3aXRoIG5vIHJ1bnRpbWUgdGVzdC5cblxuICAgV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHRoZSBkaXJlY3RlZCBncmFwaCB3aXRoIGl2YXJzIGFzIG5vZGVzIGFuZCBbSW5kaXJdcyBhc1xuICAgZWRnZXMgaXMgYWN5Y2xpYy4gIFRoZSBvbmx5IGZ1bmN0aW9ucyB0aGF0IGNyZWF0ZSBhbiBbSW5kaXJdIGFyZSBbc3F1YXNoXSBhbmRcbiAgIFtjb25uZWN0XSwgYW5kIGZvciB0aG9zZSwgdGhlIHRhcmdldCBvZiB0aGUgW0luZGlyXSBpcyBhbHdheXMgYSBub24tW0luZGlyXS4gIFRodXMsIHRoZVxuICAgbmV3bHkgYWRkZWQgZWRnZXMgYXJlIG5ldmVyIHBhcnQgb2YgYSBjeWNsZS4gKilcbmFuZCAoJ2EsICdiKSBjZWxsID0gKCdhLCAnYikgVHlwZXMuQ2VsbC50ID1cbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyA6XG4gICAgICB7ICgqIFtydW5dIGlzIG11dGFibGUgc28gd2UgY2FuIHNldCBpdCB0byBbaWdub3JlXSB3aGVuIHRoZSBoYW5kbGVyIGlzIHJlbW92ZWQuXG4gICAgICAgICAgIFRoaXMgaXMgdXNlZCB3aGVuIHdlIGluc3RhbGwgYSBoYW5kbGVyIG9uIGEgZnVsbCBpdmFyIHNpbmNlIGl0IGlzIGltbWVkaWF0ZWx5XG4gICAgICAgICAgIGFkZGVkIHRvIHRoZSBzY2hlZHVsZXIuICopXG4gICAgICAgIG11dGFibGUgcnVuIDogJ2EgLT4gdW5pdFxuICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgIDsgKCogW3ByZXZdIGFuZCBbbmV4dF0gY2lyY3VsYXJseSBkb3VibHkgbGluayBhbGwgaGFuZGxlcnMgb2YgdGhlIHNhbWUgaXZhci4gKilcbiAgICAgICAgbXV0YWJsZSBwcmV2IDogKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gICAgICA7IG11dGFibGUgbmV4dCA6ICgnYSwgWyBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgY2VsbFxuICAgICAgfVxuICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgY2VsbFxuICB8IEVtcHR5X29uZV9oYW5kbGVyIDpcbiAgICAgICgnYSAtPiB1bml0KSAqIEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9oYW5kbGVyIF0pIGNlbGxcbiAgfCBFbXB0eSA6ICgnYSwgWz4gYEVtcHR5IF0pIGNlbGxcbiAgfCBGdWxsIDogJ2EgLT4gKCdhLCBbPiBgRnVsbCBdKSBjZWxsXG4gIHwgSW5kaXIgOiAnYSB0IC0+ICgnYSwgWz4gYEluZGlyIF0pIGNlbGxcblxubW9kdWxlIEhhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG5cbiAgbGV0IHJ1biAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0LnJ1blxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpID0gdC5leGVjdXRpb25fY29udGV4dFxuICBsZXQgcHJldiAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0LnByZXZcbiAgbGV0IG5leHQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpID0gdC5uZXh0XG4gIGxldCBzZXRfcnVuIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSB4ID0gdC5ydW4gPC0geFxuICBsZXQgc2V0X3ByZXYgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpIHggPSB0LnByZXYgPC0geFxuICBsZXQgc2V0X25leHQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpIHggPSB0Lm5leHQgPC0geFxuXG4gIGxldCBjcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgICAoKiBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2Y6XG5cbiAgICAgICB7W1xuICAgICAgICAgbGV0IHJlYyB0ID1cbiAgICAgICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICAgICAgICAgICB7IHJ1blxuICAgICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHRcbiAgICAgICAgICAgICA7IHByZXYgICAgICAgICAgICAgID0gdFxuICAgICAgICAgICAgIDsgbmV4dCAgICAgICAgICAgICAgPSB0IH1cbiAgICAgICAgIGluXG4gICAgICAgICBoMSBdfVxuXG4gICAgICAgSG93ZXZlciB0aGUgY29tcGlsYXRpb24gb2YgcmVjdXJzaXZlIHZhbHVlIGluIE9DYW1sIGlzIG5vdCBvcHRpbWFsOiB0aGUgdmFsdWUgaXNcbiAgICAgICBhbGxvY2F0ZWQgdHdpY2UgYW5kIGNvcGllZCBvbmNlICh3aXRoIGEgbG9vcCBjYWxsaW5nIGNhbWxfbW9kaWZ5KS4gIFRoaXMgaXMgbm90XG4gICAgICAgbmVjZXNzYXJ5IGZvciBzaW1wbGUgcmVjdXJzaXZlIGRlZmluaXRpb25zIGxpa2UgdGhpcyBvbmUuXG5cbiAgICAgICBJbnN0ZWFkIHdlIGFsbG9jYXRlIHRoZSB2YWx1ZSB3aXRoIGR1bW15IGZpZWxkcyBhbmQgdXBkYXRlIHRoZW0gYWZ0ZXIuICopXG4gICAgbGV0IHQgPVxuICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICAgICAgeyBydW47IGV4ZWN1dGlvbl9jb250ZXh0OyBwcmV2ID0gT2JqLm1hZ2ljIE5vbmU7IG5leHQgPSBPYmoubWFnaWMgTm9uZSB9XG4gICAgaW5cbiAgICBzZXRfcHJldiB0IHQ7XG4gICAgc2V0X25leHQgdCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgY3JlYXRlMiBydW4xIGV4ZWN1dGlvbl9jb250ZXh0MSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiA9XG4gICAgKCogQW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIG9mOlxuXG4gICAgICAge1tcbiAgICAgICAgIGxldCByZWMgdDEgPVxuICAgICAgICAgICB7IHJ1biAgICAgICAgICAgICAgID0gcnVuMVxuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQxXG4gICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0MlxuICAgICAgICAgICA7IG5leHQgICAgICAgICAgICAgID0gdDIgfVxuICAgICAgICAgYW5kIHQyID1cbiAgICAgICAgICAgeyBydW4gICAgICAgICAgICAgICA9IHJ1bjJcbiAgICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA9IGV4ZWN1dGlvbl9jb250ZXh0MlxuICAgICAgICAgICA7IHByZXYgICAgICAgICAgICAgID0gdDFcbiAgICAgICAgICAgOyBuZXh0ICAgICAgICAgICAgICA9IHQxIH1cbiAgICAgICAgIGluXG4gICAgICAgICB0MSBdfSAqKVxuICAgIGxldCB0MSA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1biA9IHJ1bjFcbiAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA9IGV4ZWN1dGlvbl9jb250ZXh0MVxuICAgICAgICA7IHByZXYgPSBPYmoubWFnaWMgTm9uZVxuICAgICAgICA7IG5leHQgPSBPYmoubWFnaWMgTm9uZVxuICAgICAgICB9XG4gICAgaW5cbiAgICBsZXQgdDIgPVxuICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICAgICAgeyBydW4gPSBydW4yOyBleGVjdXRpb25fY29udGV4dCA9IGV4ZWN1dGlvbl9jb250ZXh0MjsgcHJldiA9IHQxOyBuZXh0ID0gdDEgfVxuICAgIGluXG4gICAgc2V0X3ByZXYgdDEgdDI7XG4gICAgc2V0X25leHQgdDEgdDI7XG4gICAgdDFcbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCAoZXhlY3V0aW9uX2NvbnRleHQgdCk7XG4gICAgbGV0IHIgPSByZWYgKG5leHQgdCkgaW5cbiAgICB3aGlsZSBub3QgKHBoeXNfZXF1YWwgIXIgdCkgZG9cbiAgICAgIGxldCB0MSA9ICFyIGluXG4gICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgKHByZXYgKG5leHQgdDEpKSB0MSk7XG4gICAgICBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQgKGV4ZWN1dGlvbl9jb250ZXh0IHQxKTtcbiAgICAgIHIgOj0gbmV4dCAhclxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgaXNfc2luZ2xldG9uIHQgPSBwaHlzX2VxdWFsIHQgKG5leHQgdClcblxuICBsZXQgbGVuZ3RoIHQgPVxuICAgIGxldCBuID0gcmVmIDEgaW5cbiAgICBsZXQgciA9IHJlZiAobmV4dCB0KSBpblxuICAgIHdoaWxlIG5vdCAocGh5c19lcXVhbCAhciB0KSBkb1xuICAgICAgaW5jciBuO1xuICAgICAgciA6PSBuZXh0ICFyXG4gICAgZG9uZTtcbiAgICAhblxuICA7O1xuXG4gIGxldCBlbnF1ZXVlIHQgc2NoZWR1bGVyIHYgPSBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgKGV4ZWN1dGlvbl9jb250ZXh0IHQpIChydW4gdCkgdlxuXG4gIGxldCBzY2hlZHVsZV9qb2JzIHQgdiA9XG4gICAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgZW5xdWV1ZSB0IHNjaGVkdWxlciB2O1xuICAgIGxldCByID0gcmVmIChuZXh0IHQpIGluXG4gICAgd2hpbGUgbm90IChwaHlzX2VxdWFsICFyIHQpIGRvXG4gICAgICBlbnF1ZXVlICFyIHNjaGVkdWxlciB2O1xuICAgICAgciA6PSBuZXh0ICFyXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCB1bmxpbmsgdCA9XG4gICAgc2V0X3ByZXYgKG5leHQgdCkgKHByZXYgdCk7XG4gICAgc2V0X25leHQgKHByZXYgdCkgKG5leHQgdCk7XG4gICAgc2V0X3ByZXYgdCB0O1xuICAgIHNldF9uZXh0IHQgdFxuICA7O1xuXG4gIGxldCBhZGQgdCBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgeyBydW47IGV4ZWN1dGlvbl9jb250ZXh0OyBwcmV2ID0gcHJldiB0OyBuZXh0ID0gdCB9XG4gICAgaW5cbiAgICBzZXRfbmV4dCAocHJldiB0KSByZXN1bHQ7XG4gICAgc2V0X3ByZXYgdCByZXN1bHQ7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgKCogW3NwbGljZSB0MSB0Ml0gY3JlYXRlczpcblxuICAgICB7dlxuICAgICAgIC0tPiB0MSA8LS0+IC4uLiA8LS0+IGxhc3QxIDwtLT4gdDIgPC0tPiAuLi4gPC0tPiBsYXN0MiA8LS1cbiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICB2fSAqKVxuICBsZXQgc3BsaWNlIHQxIHQyID1cbiAgICBsZXQgbGFzdDEgPSBwcmV2IHQxIGluXG4gICAgbGV0IGxhc3QyID0gcHJldiB0MiBpblxuICAgIHNldF9uZXh0IGxhc3QxIHQyO1xuICAgIHNldF9uZXh0IGxhc3QyIHQxO1xuICAgIHNldF9wcmV2IHQxIGxhc3QyO1xuICAgIHNldF9wcmV2IHQyIGxhc3QxXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCAocnVuLCBleGVjdXRpb25fY29udGV4dCkgOjogbCAtPlxuICAgICAgbGV0IGZpcnN0ID0gY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCBpblxuICAgICAgbGV0IHJlYyBsb29wIHByZXYgbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHNldF9wcmV2IGZpcnN0IHByZXZcbiAgICAgICAgfCAocnVuLCBleGVjdXRpb25fY29udGV4dCkgOjogbCAtPlxuICAgICAgICAgIGxldCB0ID1cbiAgICAgICAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHsgcnVuOyBleGVjdXRpb25fY29udGV4dDsgcHJldjsgbmV4dCA9IGZpcnN0IH1cbiAgICAgICAgICBpblxuICAgICAgICAgIHNldF9uZXh0IHByZXYgdDtcbiAgICAgICAgICBsb29wIHQgbFxuICAgICAgaW5cbiAgICAgIGxvb3AgZmlyc3QgbDtcbiAgICAgIFNvbWUgZmlyc3RcbiAgOztcblxuICBsZXQgdG9fbGlzdCBmaXJzdCA9XG4gICAgbGV0IHJlYyBsb29wIHQgYWNjID1cbiAgICAgIGxldCBhY2MgPSAocnVuIHQsIGV4ZWN1dGlvbl9jb250ZXh0IHQpIDo6IGFjYyBpblxuICAgICAgaWYgcGh5c19lcXVhbCB0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCAocHJldiB0KSBhY2NcbiAgICBpblxuICAgIGxvb3AgKHByZXYgZmlyc3QpIFtdXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBfICh0IDogXyB0KSA9XG4gICAgbGV0IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB7IHJ1biA9IF87IGV4ZWN1dGlvbl9jb250ZXh0OyBuZXh0ID0gXzsgcHJldiA9IF8gfSkgPVxuICAgICAgdFxuICAgIGluXG4gICAgWyVtZXNzYWdlIChleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpXVxuICA7O1xuZW5kXG5cbnR5cGUgJ2EgaXZhciA9ICdhIHRcblxuKCogQ29tcGlsZWQgYXMgdGhlIGlkZW50aXR5LiAqKVxubGV0IGNlbGxfb2ZfaGFuZGxlciA6IF8gSGFuZGxlci50IC0+IF8gPSBmdW5jdGlvblxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgeCAtPiAoeCA6PiAoXywgYW55KSBjZWxsKVxuOztcblxubGV0IGVxdWFsICh0IDogXyB0KSB0JyA9IHBoeXNfZXF1YWwgdCB0J1xubGV0IGluZGlyIHQgPSB7IGNlbGwgPSBJbmRpciB0IH1cblxuaW5jbHVkZSBTY2hlZHVsZXIuSXZhclxuXG4oKiBbc3F1YXNoIHRdIHJldHVybnMgdGhlIG5vbi1bSW5kaXJdIGl2YXIgYXQgdGhlIGVuZCBvZiB0aGUgKHBvc3NpYmx5IGVtcHR5KSBjaGFpbiBvZlxuICAgW0luZGlyXXMgc3RhcnRpbmcgd2l0aCBbdF0gYW5kIGVuc3VyZXMgdGhhdCBhbGwgW0luZGlyXXMgYWxvbmcgdGhhdCBjaGFpbiBhcmUgcmVwbGFjZWRcbiAgIHdpdGggYW4gW0luZGlyXSBwb2ludGluZyB0byB0aGUgZW5kIG9mIHRoZSBjaGFpbi4gKilcbmxldCBzcXVhc2ggPVxuICBsZXQgcmVjIGZvbGxvdyBpbmRpciB0ID1cbiAgICAoKiBbaW5kaXIgPSBJbmRpciB0XSAqKVxuICAgIG1hdGNoIHQuY2VsbCB3aXRoXG4gICAgfCBJbmRpciB0JyBhcyBpbmRpcicgLT4gZm9sbG93IGluZGlyJyB0J1xuICAgIHwgXyAtPiBpbmRpclxuICBpblxuICBsZXQgcmVjIHVwZGF0ZSB0IGluZGlyID1cbiAgICBtYXRjaCB0LmNlbGwgd2l0aFxuICAgIHwgSW5kaXIgdCcgLT5cbiAgICAgIHQuY2VsbCA8LSBpbmRpcjtcbiAgICAgIHVwZGF0ZSB0JyBpbmRpclxuICAgIHwgXyAtPiB0XG4gIGluXG4gIGZ1biB0IC0+XG4gICAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgICB8IEluZGlyIHQnIC0+XG4gICAgICAobWF0Y2ggdCcuY2VsbCB3aXRoXG4gICAgICAgfCBJbmRpciB0JycgYXMgaW5kaXIgLT4gdXBkYXRlIHQgKGZvbGxvdyBpbmRpciB0JycpXG4gICAgICAgfCBfIC0+IHQnICgqIG5vdGhpbmcgdG8gZG8sIHNpbmNlIFt0XSBpcyBhIGNoYWluIHdpdGggYSBzaW5nbGUgW0luZGlyXSAqKSlcbiAgICB8IF8gLT4gdFxuOztcblxuKCogbm90aGluZyB0byBkbywgc2luY2UgW3RdIGlzbid0IGFuIFtJbmRpcl0uICopXG5cbmxldCBpbnZhcmlhbnQgYV9pbnZhcmlhbnQgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gYV9pbnZhcmlhbnQgYVxuICB8IEVtcHR5IC0+ICgpXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKF8sIGV4ZWN1dGlvbl9jb250ZXh0KSAtPlxuICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCBleGVjdXRpb25fY29udGV4dFxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPiBIYW5kbGVyLmludmFyaWFudCBoYW5kbGVyXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0IDogU2V4cC50ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgYSAtPiBMaXN0IFsgQXRvbSBcIkZ1bGxcIjsgc2V4cF9vZl9hIGEgXVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT4gQXRvbSBcIkVtcHR5XCJcbjs7XG5cbmxldCBwZWVrIHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IFNvbWUgYVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT4gTm9uZVxuOztcblxubGV0IHZhbHVlIHQgfmlmX2VtcHR5X3RoZW5fZmFpbHdpdGggPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IGFcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+XG4gICAgZmFpbHdpdGggaWZfZW1wdHlfdGhlbl9mYWlsd2l0aFxuOztcblxubGV0IHZhbHVlX2V4biB0ID0gdmFsdWUgdCB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aDpcIkl2YXIudmFsdWVfZXhuIGNhbGxlZCBvbiBlbXB0eSBpdmFyXCJcblxubGV0IGlzX2VtcHR5IHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBfIC0+IGZhbHNlXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiB0cnVlXG47O1xuXG5sZXQgaXNfZnVsbCB0ID0gbm90IChpc19lbXB0eSB0KVxuXG5sZXQgZmlsbCB0IHYgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBfIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiSXZhci5maWxsIG9mIGZ1bGwgaXZhclwiICh0IDogXyB0KV1cbiAgfCBFbXB0eSAtPiB0LmNlbGwgPC0gRnVsbCB2XG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpIC0+XG4gICAgdC5jZWxsIDwtIEZ1bGwgdjtcbiAgICBTY2hlZHVsZXIuKGVucXVldWUgKHQgKCkpKSBleGVjdXRpb25fY29udGV4dCBydW4gdlxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPlxuICAgIHQuY2VsbCA8LSBGdWxsIHY7XG4gICAgSGFuZGxlci5zY2hlZHVsZV9qb2JzIGhhbmRsZXIgdlxuOztcblxubGV0IHJlbW92ZV9oYW5kbGVyIHQgKGhhbmRsZXIgOiBfIEhhbmRsZXIudCkgPVxuICBIYW5kbGVyLnNldF9ydW4gaGFuZGxlciBpZ25vcmU7XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gLT5cbiAgICAoKiBUaGVzZSBhcmUgb25seSBwb3NzaWJsZSBpZiBbaGFuZGxlcl0gd2FzIGFscmVhZHkgcmVtb3ZlZC4gICopXG4gICAgKClcbiAgfCBGdWxsIF8gLT5cbiAgICAoKiBUaGlzIGlzIHBvc3NpYmxlIGlmIFt0XSB3YXMgZmlsbGVkIGJlZm9yZSB3ZSB0cnkgdG8gcmVtb3ZlIHRoZSBoYW5kbGVyLiAgRS5nLlxuICAgICAgIFtEZWZlcnJlZC5jaG9vc2VdIHdpbGwgZG8gdGhpcy4gKilcbiAgICAoKVxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgY2VsbCAtPlxuICAgIGlmIEhhbmRsZXIuaXNfc2luZ2xldG9uIGhhbmRsZXJcbiAgICB0aGVuIHQuY2VsbCA8LSBFbXB0eVxuICAgIGVsc2UgKFxuICAgICAgaWYgcGh5c19lcXVhbCBoYW5kbGVyIGNlbGwgdGhlbiB0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIChIYW5kbGVyLm5leHQgaGFuZGxlcik7XG4gICAgICBIYW5kbGVyLnVubGluayBoYW5kbGVyKVxuOztcblxubGV0IGFkZF9oYW5kbGVyIHQgcnVuIGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5IC0+XG4gICAgbGV0IGhhbmRsZXIgPSBIYW5kbGVyLmNyZWF0ZSBydW4gZXhlY3V0aW9uX2NvbnRleHQgaW5cbiAgICB0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXI7XG4gICAgaGFuZGxlclxuICB8IEVtcHR5X29uZV9oYW5kbGVyIChydW4nLCBleGVjdXRpb25fY29udGV4dCcpIC0+XG4gICAgbGV0IGhhbmRsZXIgPSBIYW5kbGVyLmNyZWF0ZTIgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IHJ1bicgZXhlY3V0aW9uX2NvbnRleHQnIGluXG4gICAgdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciBoYW5kbGVyO1xuICAgIGhhbmRsZXJcbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIgLT4gSGFuZGxlci5hZGQgaGFuZGxlciBydW4gZXhlY3V0aW9uX2NvbnRleHRcbiAgfCBGdWxsIHYgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCBpblxuICAgICgqIFtydW5dIGNhbGxzIFtoYW5kbGVyLnJ1bl0sIHdoaWNoLCBpZiBbaGFuZGxlcl0gaGFzIGJlZW4gcmVtb3ZlZCwgaGFzIGJlZW4gY2hhbmdlZFxuICAgICAgIHRvIFtpZ25vcmVdLiAqKVxuICAgIGxldCBydW4gdiA9IEhhbmRsZXIucnVuIGhhbmRsZXIgdiBpblxuICAgIFNjaGVkdWxlci4oZW5xdWV1ZSAodCAoKSkpIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2O1xuICAgIGhhbmRsZXJcbjs7XG5cbmxldCBoYXNfaGFuZGxlcnMgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiB0cnVlXG4gIHwgRW1wdHkgfCBGdWxsIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCB1cG9uJyB0IHJ1biA9IGFkZF9oYW5kbGVyIHQgcnVuIFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpXG5cbigqIFt1cG9uXSBpcyBjb25jZXB0dWFsbHkgdGhlIHNhbWUgYXM6XG5cbiAgIHtbXG4gICAgIGxldCB1cG9uIHQgZiA9IGlnbm9yZSAodXBvbicgdCBydW4pIF19XG5cbiAgIEhvd2V2ZXIsIGJlbG93IGlzIGEgbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIHdvcnRoIGRvaW5nIGJlY2F1c2UgW3Vwb25dXG4gICBpcyB2ZXJ5IHdpZGVseSB1c2VkIGFuZCBpcyBzbyBtdWNoIG1vcmUgY29tbW9uIHRoYW4gW3Vwb24nXS4gIFRoZSBiZWxvdyBpbXBsZW1lbnRhdGlvblxuICAgYXZvaWRzIHRoZSB1c2Ugb2YgdGhlIGJhZyBvZiBoYW5kbGVycyBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIG9mIG9uZSBoYW5kbGVyIGZvclxuICAgdGhlIGRlZmVycmVkLiAqKVxubGV0IHVwb24gdCBydW4gPVxuICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGluXG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIHYgLT4gU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2XG4gIHwgRW1wdHkgLT4gdC5jZWxsIDwtIEVtcHR5X29uZV9oYW5kbGVyIChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KVxuICB8IEVtcHR5X29uZV9oYW5kbGVyIChydW4nLCBleGVjdXRpb25fY29udGV4dCcpIC0+XG4gICAgdC5jZWxsXG4gICAgPC0gY2VsbF9vZl9oYW5kbGVyIChIYW5kbGVyLmNyZWF0ZTIgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IHJ1bicgZXhlY3V0aW9uX2NvbnRleHQnKVxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPlxuICAgIGlnbm9yZSAoSGFuZGxlci5hZGQgaGFuZGxlciBydW4gZXhlY3V0aW9uX2NvbnRleHQgOiBfIEhhbmRsZXIudClcbjs7XG5cbigqIFtjb25uZWN0XSB0YWtlcyBpdmFycyBbYmluZF9yZXN1bHRdIGFuZCBbYmluZF9yaHNdLCBhbmQgbWFrZXMgW2JpbmRfcmhzXVxuICAgYmUgYW4gW0luZGlyXSBwb2ludGluZyB0byB0aGUgbm9uLWluZGlyIGNlbGwgcmVhY2hhYmxlIGZyb20gW2JpbmRfcmVzdWx0XS4gIE9uIGVudHJ5XG4gICB0byBbY29ubmVjdF0sIFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10gbWF5IGJlIGNoYWlucywgc2luY2UgW2JpbmRfcmhzXSBpcyBhblxuICAgYXJiaXRyYXJ5IHVzZXItc3VwcGxpZWQgZGVmZXJyZWQsIGFuZCBbYmluZF9yZXN1bHRdIGlzIHJldHVybmVkIHRvIHRoZSB1c2VyIHByaW9yIHRvXG4gICBiZWluZyBbY29ubmVjdF1lZCwgYW5kIG1heSBoYXZlIGJlZW4gY29udmVydGVkIHRvIGFuIGluZGlyZWN0aW9uIGluIHRoZSBjYXNlIG9mXG4gICByaWdodC1uZXN0ZWQgYmluZHMuXG5cbiAgIFRoZSBwdXJwb3NlIG9mIFtjb25uZWN0XSBpcyB0byBtYWtlIHRhaWwtcmVjdXJzaXZlIGJpbmQgbG9vcHMgdXNlIGNvbnN0YW50IHNwYWNlLlxuICAgRS5nLjpcblxuICAge1tcbiAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgIGlmIGkgPSAwXG4gICAgICAgdGhlbiByZXR1cm4gKClcbiAgICAgICBlbHNlIChcbiAgICAgICAgIGxldCViaW5kICgpID0gYWZ0ZXIgKHNlYyAxLikgaW5cbiAgICAgICAgIGxvb3AgKGkgLSAxKSkgXX1cblxuICAgW2Nvbm5lY3RdIG1ha2VzIGludGVybWVkaWF0ZSBiaW5kIHJlc3VsdHMgYWxsIGJlIFtJbmRpcl1zIHBvaW50aW5nIGF0IHRoZSBvdXRlcm1vc3RcbiAgIGJpbmQsIHJhdGhlciB0aGFuIGJlaW5nIGEgbGluZWFyLWxlbmd0aCBjaGFpbiwgd2l0aCBlYWNoIHBvaW50aW5nIHRvIHRoZSBwcmV2aW91cyBvbmUuXG4gICBUaGVuLCBzaW5jZSB0aGUgcHJvZ3JhbSBpcyBvbmx5IGhvbGRpbmcgb24gdG8gdGhlIGlubmVybW9zdCBhbmQgb3V0ZXJtb3N0IGJpbmRzIGFsbCB0aGVcbiAgIGludGVybWVkaWF0ZSBvbmVzIGNhbiBiZSBnYXJiYWdlIGNvbGxlY3RlZC5cblxuICAgW2Nvbm5lY3RdIHdvcmtzIGJ5IHNxdWFzaGluZyBpdHMgYXJndW1lbnRzIHNvIHRoYXQgdGhlIFtiaW5kX3Joc10gYWx3YXlzIHBvaW50cyBhdCB0aGVcbiAgIHVsdGltYXRlIHJlc3VsdC4gKilcbmxldCBjb25uZWN0ID1cbiAgKCogW3JlcG9pbnRfaW5kaXJzIH5pdmFyIH5pbmRpciB+YmluZF9yZXN1bHRdIHJlcG9pbnRzIHRvIFtpbmRpcl0gYWxsIHRoZSBpdmFycyBpbiB0aGVcbiAgICAgY2hhaW4gcmVhY2hhYmxlIGZyb20gW2l2YXJdLCBhbmQgcmV0dXJucyB0aGUgbm9uLVtJbmRpcl0gY2VsbCBhdCB0aGUgZW5kIG9mIHRoZVxuICAgICBjaGFpbi4gIEFmdGVyIHJlcG9pbnRpbmcsIHdlIHdpbGwgbWVyZ2UgdGhlIGhhbmRsZXJzIGluIHRoYXQgY2VsbCB3aXRoIHRoZSBoYW5kbGVyc1xuICAgICBpbiBbYmluZF9yZXN1bHRdLCBhbmQgcHV0IHRoZSBtZXJnZWQgc2V0IG9mIGhhbmRsZXJzIGluIFtiaW5kX3Jlc3VsdF0uICopXG4gIGxldCByZWMgcmVwb2ludF9pbmRpcnMgfml2YXIgfmluZGlyIH5iaW5kX3Jlc3VsdCA9XG4gICAgbGV0IGNlbGwgPSBpdmFyLmNlbGwgaW5cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IEluZGlyIGl2YXInIC0+XG4gICAgICBpdmFyLmNlbGwgPC0gaW5kaXI7XG4gICAgICByZXBvaW50X2luZGlycyB+aXZhcjppdmFyJyB+aW5kaXIgfmJpbmRfcmVzdWx0XG4gICAgfCBGdWxsIF8gLT4gY2VsbFxuICAgIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPlxuICAgICAgKCogSXQgaXMgcG9zc2libGUgdGhhdCBbYmluZF9yZXN1bHRdIGFuZCBbYmluZF9yaHNdIGFyZSBub3QgZXF1YWwsIGJ1dCB0aGVpciBjaGFpbnNcbiAgICAgICAgIG9mIGluZGlycyBsZWFkIHRvIHRoZSBzYW1lIG5vbi1bSW5kaXJdIGNlbGwsIGluIHdoaWNoIGNhc2Ugd2UgY2Fubm90IHNldCB0aGF0XG4gICAgICAgICBjZWxsIHRvIHBvaW50IHRvIGl0c2VsZiwgYmVjYXVzZSB0aGF0IHdvdWxkIGludHJvZHVjZSBhIGN5Y2xlLiAqKVxuICAgICAgaWYgbm90IChwaHlzX2VxdWFsIGl2YXIgYmluZF9yZXN1bHQpIHRoZW4gaXZhci5jZWxsIDwtIGluZGlyO1xuICAgICAgY2VsbFxuICBpblxuICBmdW4gfmJpbmRfcmVzdWx0IH5iaW5kX3JocyAtPlxuICAgIGlmIG5vdCAocGh5c19lcXVhbCBiaW5kX3Jlc3VsdCBiaW5kX3JocylcbiAgICB0aGVuIChcbiAgICAgIGxldCBiaW5kX3Jlc3VsdCA9IHNxdWFzaCBiaW5kX3Jlc3VsdCBpblxuICAgICAgbGV0IGluZGlyID0gSW5kaXIgYmluZF9yZXN1bHQgaW5cbiAgICAgIGxldCBiaW5kX3Joc19jb250ZW50cyA9IHJlcG9pbnRfaW5kaXJzIH5pdmFyOmJpbmRfcmhzIH5pbmRpciB+YmluZF9yZXN1bHQgaW5cbiAgICAgICgqIHVwZGF0ZSBbYmluZF9yZXN1bHRdIHdpdGggdGhlIHVuaW9uIG9mIGhhbmRsZXJzIGluIFtiaW5kX3Jlc3VsdF0gYW5kXG4gICAgICAgICBbYmluZF9yaHNdICopXG4gICAgICBtYXRjaCBiaW5kX3Jlc3VsdC5jZWxsLCBiaW5kX3Joc19jb250ZW50cyB3aXRoXG4gICAgICB8IEluZGlyIF8sIF8gfCBfLCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdIGFuZCBbcmVwb2ludF9pbmRpcnNdICopXG4gICAgICAoKiBbY29ubmVjdF0gaXMgb25seSB1c2VkIGluIGJpbmQsIHdob3NlIGl2YXIgaXMgb25seSBldmVyIGV4cG9ydGVkIGFzIGEgcmVhZC1vbmx5XG4gICAgICAgICBkZWZlcnJlZC4gIFRodXMsIFtiaW5kX3Jlc3VsdF0gbXVzdCBiZSBlbXB0eS4gKilcbiAgICAgIHwgRnVsbCBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBfLCBFbXB0eSAtPiAoKVxuICAgICAgfCBFbXB0eSwgXyAtPiBiaW5kX3Jlc3VsdC5jZWxsIDwtIGJpbmRfcmhzX2NvbnRlbnRzXG4gICAgICB8IEVtcHR5X29uZV9oYW5kbGVyIChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSwgRnVsbCB2IC0+XG4gICAgICAgIGJpbmRfcmVzdWx0LmNlbGwgPC0gYmluZF9yaHNfY29udGVudHM7XG4gICAgICAgIFNjaGVkdWxlci4oZW5xdWV1ZSAodCAoKSkpIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2XG4gICAgICB8IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIpLCBGdWxsIHYgLT5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBiaW5kX3Joc19jb250ZW50cztcbiAgICAgICAgSGFuZGxlci5zY2hlZHVsZV9qb2JzIGhhbmRsZXIgdlxuICAgICAgfCAoIEVtcHR5X29uZV9oYW5kbGVyIChydW4xLCBleGVjdXRpb25fY29udGV4dDEpXG4gICAgICAgICwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bjIsIGV4ZWN1dGlvbl9jb250ZXh0MikgKSAtPlxuICAgICAgICBsZXQgaGFuZGxlcjEgPSBIYW5kbGVyLmNyZWF0ZTIgcnVuMSBleGVjdXRpb25fY29udGV4dDEgcnVuMiBleGVjdXRpb25fY29udGV4dDIgaW5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjFcbiAgICAgIHwgKCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMSlcbiAgICAgICAgLCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMiwgZXhlY3V0aW9uX2NvbnRleHQyKSApIC0+XG4gICAgICAgIGlnbm9yZSAoSGFuZGxlci5hZGQgaGFuZGxlcjEgcnVuMiBleGVjdXRpb25fY29udGV4dDIgOiBfIEhhbmRsZXIudClcbiAgICAgIHwgKCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMSwgZXhlY3V0aW9uX2NvbnRleHQxKVxuICAgICAgICAsIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIyKSApIC0+XG4gICAgICAgIGxldCBoYW5kbGVyMSA9IEhhbmRsZXIuYWRkIGhhbmRsZXIyIHJ1bjEgZXhlY3V0aW9uX2NvbnRleHQxIGluXG4gICAgICAgIGJpbmRfcmVzdWx0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXIxXG4gICAgICB8ICggKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjEpXG4gICAgICAgICwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjIpICkgLT4gSGFuZGxlci5zcGxpY2UgaGFuZGxlcjEgaGFuZGxlcjIpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgSXZhciA9IEl2YXIwXG5tb2R1bGUgSGFuZGxlciA9IEl2YXIuSGFuZGxlclxuXG4oKiBEZWZlcnJlZHMgcHJlc2VudCBhIGNvdmFyaWFudCB2aWV3IG9mIGl2YXJzLiAgV2UgY291bGQgYWN0dWFsbHkgaW1wbGVtZW50IGRlZmVycmVkc1xuICAgdXNpbmcgYSByZWNvcmQgb2YgY2xvc3VyZXMsIGFzIGluIHRoZSBbZXNzZW5jZV9vZl9kZWZlcnJlZF0gcmVjb3JkIGJlbG93LCBmb3Igd2hpY2ggdGhlXG4gICBPQ2FtbCB0eXBlIGNoZWNrZXIgY2FuIGluZmVyIGNvdmFyaWFuY2UuICBIb3dldmVyLCBkb2luZyBzbyB3b3VsZCBtYWtlIFtJdmFyLnJlYWRdIHZlcnlcbiAgIGNvc3RseSwgYmVjYXVzZSBpdCB3b3VsZCBoYXZlIHRvIGFsbG9jYXRlIGxvdHMgb2YgY2xvc3VyZXMgYW5kIGEgcmVjb3JkLiAgSW5zdGVhZCBvZlxuICAgZG9pbmcgdGhpcywgd2UgbWFrZSBkZWZlcnJlZHMgYW4gYWJzdHJhY3QgY292YXJpYW50IHR5cGUsIHdoaWNoIGNvbmNyZXRlbHkgaXMganVzdCB0aGVcbiAgIGl2YXIsIGFuZCB1c2UgW09iai5tYWdpY10gdG8gY29udmVydCBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIGEgZGVmZXJyZWQgYW5kIGl0cyBjb25jcmV0ZVxuICAgcmVwcmVzZW50YXRpb24gYXMgYW4gaXZhci4gIFRoaXMgW09iai5tYWdpY10gaXMgc2FmZSBiZWNhdXNlIHRoZSByZXByZXNlbnRhdGlvbiBpc1xuICAgYWx3YXlzIGp1c3QgYW4gaXZhciwgYW5kIHRoZSBjb3ZhcmlhbmNlIGZvbGxvd3MgZnJvbSB0aGUgZmFjdCB0aGF0IGFsbCB0aGUgZGVmZXJyZWRcbiAgIG9wZXJhdGlvbnMgYXJlIGVxdWl2YWxlbnQgdG8gdGhvc2UgaW1wbGVtZW50ZWQgZGlyZWN0bHkgb24gdG9wIG9mIHRoZVxuICAgW2Vzc2VuY2Vfb2ZfZGVmZXJyZWRdLlxuXG4gICB7W1xuICAgICB0eXBlICgrJ2EsICdleGVjdXRpb25fY29udGV4dCkgZXNzZW5jZV9vZl9kZWZlcnJlZCA9XG4gICAgICAgeyBwZWVrICAgICAgICAgICAgICAgICAgICAgIDogdW5pdCAtPiAnYSBvcHRpb25cbiAgICAgICA7IGlzX2RldGVybWluZWQgICAgICAgICAgICAgOiB1bml0IC0+IGJvb2xcbiAgICAgICA7IHVwb24gICAgICAgICAgICAgICAgICAgICAgOiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICAgICAgIDsgdXBvbicgICAgICAgICAgICAgICAgICAgICA6ICgnYSAtPiB1bml0KSAtPiBVbnJlZ2lzdGVyLnRcbiAgICAgICA7IGluc3RhbGxfcmVtb3ZhYmxlX2hhbmRsZXIgOiAoJ2EsICdleGVjdXRpb25fY29udGV4dCkgUmF3X2hhbmRsZXIudCAtPiBVbnJlZ2lzdGVyLnQ7IH0gXX0gKilcblxudHlwZSArJ2EgdCA9ICdhIFR5cGVzLkRlZmVycmVkLnRcblxuKCogdGhlIGFic3RyYWN0IGNvdmFyaWFudCB0eXBlLCBlcXVpdmFsZW50IHRvIGl2YXIgKilcblxubGV0IG9mX2l2YXIgKHR5cGUgYSkgKGl2YXIgOiBhIEl2YXIudCkgOiBhIHQgPSBPYmoubWFnaWMgaXZhclxubGV0IHRvX2l2YXIgKHR5cGUgYSkgdCA6IGEgSXZhci50ID0gT2JqLm1hZ2ljICh0IDogYSB0KVxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gSXZhci5pbnZhcmlhbnQgaW52YXJpYW50X2EgKHRvX2l2YXIgdClcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBJdmFyLnNleHBfb2ZfdCBzZXhwX29mX2EgKHRvX2l2YXIgdClcbmxldCBwZWVrIHQgPSBJdmFyLnBlZWsgKHRvX2l2YXIgdClcbmxldCByZXR1cm4gYSA9IG9mX2l2YXIgKEl2YXIuY3JlYXRlX2Z1bGwgYSlcbmxldCBpc19kZXRlcm1pbmVkIHQgPSBJdmFyLmlzX2Z1bGwgKHRvX2l2YXIgdClcblxubGV0IHZhbHVlX2V4biB0ID1cbiAgSXZhci52YWx1ZVxuICAgICh0b19pdmFyIHQpXG4gICAgfmlmX2VtcHR5X3RoZW5fZmFpbHdpdGg6XCJEZWZlcnJlZC52YWx1ZV9leG4gY2FsbGVkIG9uIHVuZGV0ZXJtaW5lZCBkZWZlcnJlZFwiXG47O1xuXG5sZXQgdXBvbiB0IGYgPSBJdmFyLnVwb24gKHRvX2l2YXIgdCkgZlxuXG5sZXQgY3JlYXRlIGYgPVxuICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgZiByZXN1bHQ7XG4gIG9mX2l2YXIgcmVzdWx0XG47O1xuXG4oKiBkb24ndCB1c2UgW2NyZWF0ZV0gaGVyZSBhcyBpdCB3b3VsZCBhbGxvY2F0ZSBvbmUgbW9yZSBjbG9zdXJlICopXG5sZXQgYmluZCB0IH5mID1cbiAgbGV0IGJpbmRfcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgdXBvbiB0IChmdW4gYSAtPiBJdmFyLmNvbm5lY3QgfmJpbmRfcmVzdWx0IH5iaW5kX3JoczoodG9faXZhciAoZiBhKSkpO1xuICBvZl9pdmFyIGJpbmRfcmVzdWx0XG47O1xuXG5sZXQgYWRkX2hhbmRsZXIgdCBmIGV4ZWN1dGlvbl9jb250ZXh0ID0gSXZhci5hZGRfaGFuZGxlciAodG9faXZhciB0KSBmIGV4ZWN1dGlvbl9jb250ZXh0XG5sZXQgcmVtb3ZlX2hhbmRsZXIgdCBoID0gSXZhci5yZW1vdmVfaGFuZGxlciAodG9faXZhciB0KSBoXG4iLCJvcGVuIENvcmVcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMFxuaW5jbHVkZSBJdmFyMFxuXG5sZXQgcmVhZCA9IERlZmVycmVkLm9mX2l2YXJcbmxldCBmaWxsX2lmX2VtcHR5IHQgdiA9IGlmIGlzX2VtcHR5IHQgdGhlbiBmaWxsIHQgdlxuXG5pbmNsdWRlXG4gIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgKE9wdGlvbilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgdG9fYmluYWJsZSB0ID0gcGVlayB0XG5cbiAgICAgIGxldCBvZl9iaW5hYmxlID0gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGNyZWF0ZSAoKVxuICAgICAgICB8IFNvbWUgYSAtPiBjcmVhdGVfZnVsbCBhXG4gICAgICA7O1xuICAgIGVuZClcbiIsIigqKiBbTW9uYWRfc2VxdWVuY2UuU10gaXMgYSBnZW5lcmljIGludGVyZmFjZSBzcGVjaWZ5aW5nIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBhXG4gICAgY29udGFpbmVyIGFuZCBhIG1vbmFkLiAgSXQgaXMgc3BlY2lhbGl6ZWQgdG8gdGhlIFtEZWZlcnJlZF0gbW9uYWQgYW5kIHVzZWQgd2l0aFxuICAgIHZhcmlvdXMgY29udGFpbmVycyBpbiBtb2R1bGVzIFtEZWZlcnJlZC5BcnJheV0sIFtEZWZlcnJlZC5MaXN0XSwgW0RlZmVycmVkLlF1ZXVlXSwgYW5kXG4gICAgW0RlZmVycmVkLlNlcXVlbmNlXS4gIFRoZSBbTW9uYWRfc2VxdWVuY2UuaG93XSB0eXBlIHNwZWNpZmllcyB0aGUgcGFyYWxsZWxpc20gb2ZcbiAgICBjb250YWluZXIgaXRlcmF0b3JzLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSBob3cgPVxuICBbIGBQYXJhbGxlbCAoKiogbGlrZSBbYE1heF9jb25jdXJyZW50X2pvYnMgSW50Lm1heF92YWx1ZV0gKilcbiAgfCBgU2VxdWVudGlhbFxuICAoKiogW2BTZXF1ZW50aWFsXSBpcyBvZnRlbiBidXQgbm90IGFsd2F5cyB0aGUgc2FtZSBhcyBbYE1heF9jb25jdXJyZW50X2pvYnMgMV1cbiAgICAgIChmb3IgZXhhbXBsZSwgdGhleSBkaWZmZXIgaW4gdGhlIFtPcl9lcnJvcl0gbW9uYWQpLiAqKVxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG9mIGludFxuICBdXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgbW9uYWRcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGZvbGRpIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGludCAtPiAnYiAtPiAnYSAtPiAnYiBtb25hZCkgLT4gJ2IgbW9uYWRcbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIG1vbmFkXG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiAnYSBvcHRpb24gbW9uYWRcbiAgdmFsIGZpbmRpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gKGludCAqICdhKSBvcHRpb24gbW9uYWRcbiAgdmFsIGZpbmRfbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZF9tYXBpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uIG1vbmFkKSAtPiAnYiBvcHRpb24gbW9uYWRcbiAgdmFsIGV4aXN0cyA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZXhpc3RzaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wgbW9uYWQpIC0+IGJvb2wgbW9uYWRcbiAgdmFsIGZvcl9hbGwgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgbW9uYWQpIC0+IGJvb2wgbW9uYWRcbiAgdmFsIGZvcl9hbGxpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgYWxsIDogJ2EgbW9uYWQgdCAtPiAnYSB0IG1vbmFkXG4gIHZhbCBhbGxfdW5pdCA6IHVuaXQgbW9uYWQgdCAtPiB1bml0IG1vbmFkXG5cbiAgKCoqIHsyIERlZmVycmVkIGl0ZXJhdG9yc31cblxuICAgICAgSW4gdGhlIGZvbGxvd2luZywgdGhlIGRlZmF1bHQgW2hvd10gaXMgW2BTZXF1ZW50aWFsXSAqKVxuXG4gIHZhbCBpbml0IDogaG93OmhvdyAtPiBpbnQgLT4gZjooaW50IC0+ICdhIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBpdGVyIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+IHVuaXQgbW9uYWQpIC0+IHVuaXQgbW9uYWRcbiAgdmFsIGl0ZXJpIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiB1bml0IG1vbmFkKSAtPiB1bml0IG1vbmFkXG4gIHZhbCBtYXAgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIG1hcGkgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBmaWx0ZXIgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gJ2EgdCBtb25hZFxuICB2YWwgZmlsdGVyaSA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gJ2EgdCBtb25hZFxuICB2YWwgZmlsdGVyX21hcCA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGZpbHRlcl9tYXBpIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGNvbmNhdF9tYXAgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgY29uY2F0X21hcGkgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIHQgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbmVuZFxuIiwib3BlbiBDb3JlXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxuaW5jbHVkZSBEZWZlcnJlZDBcblxuKCogVG8gYXZvaWQgYSBzcGFjZSBsZWFrLCBpdCBpcyBuZWNlc3NhcnkgdGhhdCBbbmV2ZXJdIGFsbG9jYXRlcyBhIG5ldyBpdmFyIHdoZW5ldmVyIGl0IGlzXG4gICBjYWxsZWQuICBDb2RlIGNhbiBiaW5kIG9uIFtuZXZlciAoKV0sIHNvIGlmIHdlIHJlLXVzZWQgdGhlIGl2YXIsIHdlIGNvdWxkIGVuZGxlc3NseVxuICAgYWNjdW11bGF0ZSBoYW5kbGVycy4gKilcbmxldCBuZXZlciAoKSA9IEl2YXIucmVhZCAoSXZhci5jcmVhdGUgKCkpXG5cbm1vZHVsZSBNID0gTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBEZWZlcnJlZDBcblxuICAgIGxldCBtYXAgdCB+ZiA9XG4gICAgICAoKiBXZSBtYW51YWxseSBpbmxpbmUgW0RlZmVycmVkLmNyZWF0ZV0gaGVyZSwgYmVjYXVzZSB0aGUgbm9uLWZsYW1iZGEgY29tcGlsZXIgaXNuJ3RcbiAgICAgICAgIGFibGUgdG8gb3B0aW1pemUgYXdheSB0aGUgY2xvc3VyZSB0aGF0IHdvdWxkIGJlIGJlIGNyZWF0ZWQuICopXG4gICAgICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIHVwb24gdCAoZnVuIGEgLT4gSXZhci5maWxsIHJlc3VsdCAoZiBhKSk7XG4gICAgICBvZl9pdmFyIHJlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5pbmNsdWRlIE1cblxuKCogV2UgcmViaW5kIGFsbCB0aGUgdmFyaW91cyBbcmV0dXJuXXMgYmVjYXVzZSB0aGUgdXNlIG9mIHRoZSBbTW9uYWQuTWFrZV0gZnVuY3RvclxuICAgY2F1c2VzIHRoZSBjb21waWxlciB0byBub3QgaW5saW5lIFtyZXR1cm5dLCBhbmQgaGVuY2UgbWFrZXMgaXQgaW1wb3NzaWJsZSB0b1xuICAgc3RhdGljYWxseSBhbGxvY2F0ZSBjb25zdGFudHMgbGlrZSBbcmV0dXJuICgpXS4gIEJ5IHJlYmluZGluZyBbcmV0dXJuXSBhc1xuICAgW0RlZmVycmVkMC5yZXR1cm5dLCB0aGUgY29tcGlsZXIgY2FuIHNlZSB0aGF0OlxuXG4gICB7W1xuICAgICByZXR1cm4gYSA9IHsgSXZhci5JbW11dGFibGUuIGNlbGwgPSBGdWxsIGEgfSBdfVxuXG4gICBBbmQgaGVuY2UsIGlmIFthXSBpcyBjb25zdGFudCwgdGhlbiB0aGUgcmV0dXJuIGlzIGNvbnN0YW50IGFuZCBjYW4gYmUgc3RhdGljYWxseVxuICAgYWxsb2NhdGVkLiAgV2hlbiBjb21waWxpbmcgd2l0aCBmbGFtYmRhLCB0aGUgY29tcGlsZXIgaW5saW5lcyBbcmV0dXJuXSBhbmQgdGhpcyBtYW51YWxcbiAgIHJlYmluZGluZyB3b3VsZCBub3QgaGVscDsgd2UndmUgZGVjaWRlZCB0byBkbyBpdCBhbnl3YXkgc28gdGhhdCBub24tZmxhbWJkYSBidWlsZHNcbiAgIGdldCB0aGUgb3B0aW1pemF0aW9uLiAqKVxubGV0IHJldHVybiA9IERlZmVycmVkMC5yZXR1cm5cblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNLkxldF9zeW50YXhcblxuICBsZXQgcmV0dXJuID0gRGVmZXJyZWQwLnJldHVyblxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBNLkxldF9zeW50YXguTGV0X3N5bnRheFxuXG4gICAgbGV0IHJldHVybiA9IERlZmVycmVkMC5yZXR1cm5cbiAgZW5kXG5lbmRcblxub3BlbiBMZXRfc3ludGF4XG5cbigqIFdlIHNoYWRvdyBbYWxsXSBvbi1wdXJwb3NlIGhlcmUsIHNpbmNlIHRoZSBkZWZhdWx0IGRlZmluaXRpb24gaW50cm9kdWNlcyBhIGNoYWluIG9mXG4gICBiaW5kcyBhcyBsb25nIGFzIHRoZSBsaXN0LiAqKVxubGV0IGFsbCA9IGBNYWtlX3N1cmVfdG9fZGVmaW5lX2FsbF9lbHNld2hlcmVcbmxldCBfID0gYWxsXG5sZXQgdW5pdCA9IHJldHVybiAoKVxuXG5sZXQgYm90aCB0MSB0MiA9XG4gIGNyZWF0ZSAoZnVuIHJlc3VsdCAtPiB1cG9uIHQxIChmdW4gYTEgLT4gdXBvbiB0MiAoZnVuIGEyIC0+IEl2YXIuZmlsbCByZXN1bHQgKGExLCBhMikpKSlcbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbGV0ICggPj4+ICkgPSB1cG9uXG4gIGxldCBwcHhfYm90aCA9IGJvdGhcbmVuZFxuXG5vcGVuIEluZml4XG5cbmxldCBkb24ndF93YWl0X2ZvciAoXyA6IHVuaXQgdCkgPSAoKVxuXG5tb2R1bGUgQ2hvaWNlID0gc3RydWN0XG4gIHR5cGUgKydhIHQgPSBUIDogJ2IgRGVmZXJyZWQwLnQgKiAoJ2IgLT4gJ2EpIC0+ICdhIHRcblxuICBsZXQgbWFwIChUICh0LCBmMSkpIH5mOmYyID0gVCAodCwgZnVuIHggLT4gZjIgKGYxIHgpKVxuZW5kXG5cbm1vZHVsZSBVbnJlZ2lzdGVyID0gc3RydWN0XG4gICgqIFRoaXMgcmVwcmVzZW50YXRpb24gc2F2ZXMgMm4gd29yZHMgZm9yIGEgbGlzdCBvZiBuIGNob2ljZXMuICopXG4gIHR5cGUgJ3IgdCA9XG4gICAgfCBOaWwgOiAnciB0XG4gICAgfCBDb25zIDogJ2EgRGVmZXJyZWQwLnQgKiAoJ2EgLT4gJ3IpICogJ2EgRGVmZXJyZWQwLkhhbmRsZXIudCAqICdyIHQgLT4gJ3IgdFxuXG4gIGxldCByZWMgcHJvY2VzcyA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgKHQsIF9mLCBoYW5kbGVyLCByZXN0KSAtPlxuICAgICAgcmVtb3ZlX2hhbmRsZXIgdCBoYW5kbGVyO1xuICAgICAgcHJvY2VzcyByZXN0XG4gIDs7XG5lbmRcblxubGV0IGNob2ljZSB0IGYgPSBDaG9pY2UuVCAodCwgZilcblxubGV0IGVuYWJsZWQgY2hvaWNlcyA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgdW5yZWdpc3RlcnMgPSByZWYgVW5yZWdpc3Rlci5OaWwgaW5cbiAgbGV0IHJlYWR5IF8gPVxuICAgIGlmIEl2YXIuaXNfZW1wdHkgcmVzdWx0XG4gICAgdGhlbiAoXG4gICAgICBVbnJlZ2lzdGVyLnByb2Nlc3MgIXVucmVnaXN0ZXJzO1xuICAgICAgSXZhci5maWxsIHJlc3VsdCAoZnVuICgpIC0+XG4gICAgICAgIExpc3QucmV2XG4gICAgICAgICAgKExpc3QuZm9sZCBjaG9pY2VzIH5pbml0OltdIH5mOihmdW4gYWMgKENob2ljZS5UICh0LCBmKSkgLT5cbiAgICAgICAgICAgICBtYXRjaCBwZWVrIHQgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBhY1xuICAgICAgICAgICAgIHwgU29tZSB2IC0+IGYgdiA6OiBhYykpKSlcbiAgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgaW5cbiAgdW5yZWdpc3RlcnNcbiAgOj0gTGlzdC5mb2xkIGNob2ljZXMgfmluaXQ6VW5yZWdpc3Rlci5OaWwgfmY6KGZ1biBhY2MgKENob2ljZS5UICh0LCBmKSkgLT5cbiAgICBDb25zICh0LCBmLCBEZWZlcnJlZDAuYWRkX2hhbmRsZXIgdCByZWFkeSBleGVjdXRpb25fY29udGV4dCwgYWNjKSk7XG4gIEl2YXIucmVhZCByZXN1bHRcbjs7XG5cbmxldCByZWMgY2hvb3NlX3Jlc3VsdCBjaG9pY2VzID1cbiAgbWF0Y2ggY2hvaWNlcyB3aXRoXG4gIHwgVW5yZWdpc3Rlci5OaWwgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgVW5yZWdpc3Rlci5Db25zICh0LCBmLCBfLCByZXN0KSAtPlxuICAgIChtYXRjaCBwZWVrIHQgd2l0aFxuICAgICB8IE5vbmUgLT4gY2hvb3NlX3Jlc3VsdCByZXN0XG4gICAgIHwgU29tZSB2IC0+IGYgdilcbjs7XG5cbmxldCBnZW5lcmljX2Nob29zZSBjaG9pY2VzID1cbiAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGluXG4gICgqIEEgYmFjay1wYXRjaGVkIHJlZiBjb3VsZCBiZSB1c2VkIGhlcmUsIGJ1dCB1c2luZyBsYXp5IHNhdmVzIHNvbWUgbWVtb3J5XG4gICAgIGJlY2F1c2UgdGhlIEdDIGV2ZW50dWFsbHkgcmVtb3ZlcyB0aGUgZXh0cmEgaW5kaXJlY3Rpb24uICopXG4gIGxldCByZWMgdW5yZWdpc3RlcnMgPVxuICAgIGxhenlcbiAgICAgIChMaXN0LmZvbGRfcmlnaHQgY2hvaWNlcyB+aW5pdDpVbnJlZ2lzdGVyLk5pbCB+ZjooZnVuIChDaG9pY2UuVCAodCwgZikpIGFjYyAtPlxuICAgICAgICAgVW5yZWdpc3Rlci5Db25zICh0LCBmLCBEZWZlcnJlZDAuYWRkX2hhbmRsZXIgdCByZWFkeSBleGVjdXRpb25fY29udGV4dCwgYWNjKSkpXG4gIGFuZCByZWFkeSA6ICdhLiAnYSAtPiB1bml0ID1cbiAgICBmdW4gXyAtPlxuICAgICAgaWYgSXZhci5pc19lbXB0eSByZXN1bHRcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdW5yZWdpc3RlcnMgPSBMYXp5LmZvcmNlIHVucmVnaXN0ZXJzIGluXG4gICAgICAgIFVucmVnaXN0ZXIucHJvY2VzcyB1bnJlZ2lzdGVycztcbiAgICAgICAgSXZhci5maWxsIHJlc3VsdCAoY2hvb3NlX3Jlc3VsdCB1bnJlZ2lzdGVycykpXG4gIGluXG4gIGxldCAoXyA6IF8pID0gTGF6eS5mb3JjZSB1bnJlZ2lzdGVycyBpblxuICBJdmFyLnJlYWQgcmVzdWx0XG47O1xuXG4oKiBbY2hvb3NlMl0gaXMgYSBzcGVjaWFsaXphdGlvbiBvZiBbY2hvb3NlXSB0aGF0IGhhcyBiZXR0ZXIgbWVtb3J5IHVzYWdlLlxuICAgQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywgW2Nob29zZTJdIGtlZXBzIDIyIGV4dHJhIHdvcmRzIGFsaXZlXG4gICBmb3IgdGhlIGR1cmF0aW9uIG9mIGNob2ljZSBzdGF5aW5nIHVuZGV0ZXJtaW5lZCwgd2hpbGUgdGhlIGVxdWl2YWxlbnQgZ2VuZXJpY1xuICAgW2Nob29zZV0ga2VlcHMgMjcgKHNlZSB0aGUgYmVuY2htYXJrIGluIC4uL2JlbmNoL2Jpbi9iZW5jaF9jaG9vc2VfbWVtb3J5X3VzYWdlLm1sKS4gKilcbmxldCBjaG9vc2UyIGEgZmEgYiBmYiA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBpblxuICBsZXQgcmVjIGFfaGFuZGxlciA9IGxhenkgKERlZmVycmVkMC5hZGRfaGFuZGxlciBhIHJlYWR5IGV4ZWN1dGlvbl9jb250ZXh0KVxuICBhbmQgYl9oYW5kbGVyID0gbGF6eSAoRGVmZXJyZWQwLmFkZF9oYW5kbGVyIGIgcmVhZHkgZXhlY3V0aW9uX2NvbnRleHQpXG4gIGFuZCByZWFkeSA6ICdhLiAnYSAtPiB1bml0ID1cbiAgICBmdW4gXyAtPlxuICAgICAgaWYgSXZhci5pc19lbXB0eSByZXN1bHRcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBUaGUgb3JkZXIgb2YgdGhlc2Ugb3BlcmF0aW9ucyBtYXR0ZXJzOlxuICAgICAgICAgICBpZiB3ZSBjYWxsIFtmYl0gb3IgW2ZhXSBmaXJzdCBhbmQgW3JlbW92ZV9oYW5kbGVyXSBhZnRlciwgdGhlblxuICAgICAgICAgICBhbnkgZXhjZXB0aW9ucyByYWlzZWQgd2lsbCBjYXVzZSB0aGUgaGFuZGxlcnMgdG8gcmVtYWluIGFuZCB0aGVuXG4gICAgICAgICAgIHRoZSBcInNlY29uZCBjaG9pY2VcIiBnZXRzIGEgY2hhbmNlIHRvIHJ1bi5cbiAgICAgICAgKilcbiAgICAgICAgcmVtb3ZlX2hhbmRsZXIgYSAoTGF6eS5mb3JjZSBhX2hhbmRsZXIpO1xuICAgICAgICByZW1vdmVfaGFuZGxlciBiIChMYXp5LmZvcmNlIGJfaGFuZGxlcik7XG4gICAgICAgIG1hdGNoIHBlZWsgYSB3aXRoXG4gICAgICAgIHwgU29tZSBhdiAtPiBJdmFyLmZpbGwgcmVzdWx0IChmYSBhdilcbiAgICAgICAgfCBOb25lIC0+IEl2YXIuZmlsbCByZXN1bHQgKGZiICh2YWx1ZV9leG4gYikpKVxuICBpblxuICBsZXQgKF8gOiBfKSA9IExhenkuZm9yY2UgYV9oYW5kbGVyIGluXG4gIGxldCAoXyA6IF8pID0gTGF6eS5mb3JjZSBiX2hhbmRsZXIgaW5cbiAgSXZhci5yZWFkIHJlc3VsdFxuOztcblxubGV0IGNob29zZSBjaG9pY2VzID1cbiAgbWF0Y2ggY2hvaWNlcyB3aXRoXG4gIHwgWyBDaG9pY2UuVCAoYSwgZmEpOyBDaG9pY2UuVCAoYiwgZmIpIF0gLT4gY2hvb3NlMiBhIGZhIGIgZmJcbiAgfCBjaG9pY2VzIC0+IGdlbmVyaWNfY2hvb3NlIGNob2ljZXNcbjs7XG5cbmxldCBhbnlfZiB0cyBmID0gY2hvb3NlIChMaXN0Lm1hcCB0cyB+ZjooZnVuIHQgLT4gY2hvaWNlIHQgZikpXG5sZXQgYW55IHRzID0gYW55X2YgdHMgRm4uaWRcbmxldCBhbnlfdW5pdCB0cyA9IGFueV9mIHRzIChGbi5pZ25vcmUgOiB1bml0IC0+IHVuaXQpXG5cbmxldCBmb3JfIHN0YXJ0IH50b18gfmRvXyA9XG4gIGlmIHN0YXJ0ID4gdG9fXG4gIHRoZW4gcmV0dXJuICgpXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGxldCViaW5kICgpID0gZG9fIGkgaW5cbiAgICAgIGlmIGkgPj0gdG9fIHRoZW4gcmV0dXJuICgpIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIHN0YXJ0KVxuOztcblxubGV0IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgY3JlYXRlIChmdW4gZmluaXNoZWQgLT5cbiAgICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgICAgZiBzdGF0ZVxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IGBSZXBlYXQgc3RhdGUgLT4gbG9vcCBzdGF0ZVxuICAgICAgfCBgRmluaXNoZWQgcmVzdWx0IC0+IEl2YXIuZmlsbCBmaW5pc2hlZCByZXN1bHRcbiAgICBpblxuICAgIGxvb3Agc3RhdGUpXG47O1xuXG5sZXQgZm9yZXZlciBzdGF0ZSBmID1cbiAgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIChmdW4gc3RhdGUgLT5cbiAgICBsZXQlbWFwIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgIGBSZXBlYXQgc3RhdGUpXG4gID4+PiBuZXZlcl9yZXR1cm5zXG47O1xuXG50eXBlIGhvdyA9IE1vbmFkX3NlcXVlbmNlLmhvdyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgdHlwZSBNb25hZF9zZXF1ZW5jZSA9IE1vbmFkX3NlcXVlbmNlLlMgd2l0aCB0eXBlICdhIG1vbmFkIDo9ICdhIHRcblxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgYiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICB8IHggOjogeHMgLT4gZiBiIHggPj4+IGZ1biBiIC0+IGxvb3AgeHMgYlxuICAgIGluXG4gICAgbG9vcCB0IGluaXQpXG47O1xuXG5sZXQgc2VxbWFwIHQgfmYgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBicyBhIC0+IGYgYSA+PnwgZnVuIGIgLT4gYiA6OiBicykgPj58IExpc3QucmV2XG5sZXQgYWxsIGRzID0gc2VxbWFwIGRzIH5mOkZuLmlkXG5sZXQgYWxsX3VuaXQgZHMgPSBmb2xkIGRzIH5pbml0OigpIH5mOihmdW4gKCkgZCAtPiBkKVxubGV0IG9rIHggPSB4ID4+fCBmdW4geCAtPiBPayB4XG5cbm1vZHVsZSBGb3JfdGVzdHMgPSBzdHJ1Y3RcbiAgbGV0IGdlbmVyaWNfY2hvb3NlID0gZ2VuZXJpY19jaG9vc2VcbmVuZFxuIiwib3BlbiBEZWZlcnJlZDFcbmluY2x1ZGUgSW5maXhcbmluY2x1ZGUgTGV0X3N5bnRheFxuXG5sZXQgY2hvaWNlID0gY2hvaWNlXG5sZXQgY2hvb3NlID0gY2hvb3NlXG5sZXQgZG9uJ3Rfd2FpdF9mb3IgPSBkb24ndF93YWl0X2ZvclxubGV0IG5ldmVyID0gbmV2ZXJcbmxldCByZXR1cm4gPSByZXR1cm5cbmxldCB1cG9uID0gdXBvblxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdSA9XG4gIHwgRW1wdHkgb2YgJ2EgSXZhci50XG4gIHwgRnVsbFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSAnYSB0ID0gJ2EgdSByZWYgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IEZ1bGwgLT4gKClcbiAgICB8IEVtcHR5IGl2YXIgLT4gYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKVxuOztcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBpdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IHQgPSByZWYgKEVtcHR5IGl2YXIpIGluXG4gIHQsIEl2YXIucmVhZCBpdmFyXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBFbXB0eSBfIC0+IHRydWVcbiAgfCBGdWxsIC0+IGZhbHNlXG47O1xuXG5sZXQgZmlsbCB0IGEgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgRW1wdHkgaSAtPlxuICAgIHQgOj0gRnVsbDtcbiAgICBJdmFyLmZpbGwgaSBhXG4gIHwgRnVsbCAtPiByYWlzZV9zIFslbWVzc2FnZSBcImF0dGVtcHQgdG8gZmlsbCBmdWxsIGl2YXJcIl1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgU3RyZWFtID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG5leHQgRGVmZXJyZWQudFxuXG4gIGFuZCAnYSBuZXh0ID0gJ2EgVHlwZXMuU3RyZWFtLm5leHQgPVxuICAgIHwgTmlsXG4gICAgfCBDb25zIG9mICdhICogJ2EgdFxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIGxldCByZWMgbG9vcCBkIGFjIDogU2V4cC50ID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTGlzdCAoTGlzdC5yZXYgKFNleHAuQXRvbSBcIi4uLlwiIDo6IGFjKSlcbiAgICAgIHwgU29tZSBOaWwgLT4gTGlzdCAoTGlzdC5yZXYgYWMpXG4gICAgICB8IFNvbWUgKENvbnMgKGEsIHQpKSAtPiBsb29wIHQgKHNleHBfb2ZfYSBhIDo6IGFjKVxuICAgIGluXG4gICAgbG9vcCB0IFtdXG4gIDs7XG5cbiAgbGV0IG5leHQgdCA9IHRcbmVuZFxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5UYWlsLnQgPVxuICB7ICgqIFtuZXh0XSBwb2ludHMgYXQgdGhlIHRhaWwgb2YgdGhlIHN0cmVhbSAqKSBtdXRhYmxlIG5leHQgOiAnYSBTdHJlYW0ubmV4dCBJdmFyLnQgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG5sZXQgc2V4cF9vZl90IF8gdCA6IFNleHAudCA9XG4gIEF0b20gKGlmIEl2YXIuaXNfZW1wdHkgdC5uZXh0IHRoZW4gXCI8b3BlbiB0YWlsPlwiIGVsc2UgXCI8Y2xvc2VkIHRhaWw+XCIpXG47O1xuXG5sZXQgY3JlYXRlICgpID0geyBuZXh0ID0gSXZhci5jcmVhdGUgKCkgfVxubGV0IGNvbGxlY3QgdCA9IEl2YXIucmVhZCAobmV4dCB0KVxubGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIChuZXh0IHQpXG5cbmxldCBmaWxsX2V4biB0IHYgPVxuICBpZiBpc19jbG9zZWQgdCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwic3RyZWFtIGlzIGNsb3NlZFwiXSBlbHNlIEl2YXIuZmlsbCAobmV4dCB0KSB2XG47O1xuXG5sZXQgY2xvc2VfZXhuIHQgPSBmaWxsX2V4biB0IE5pbFxubGV0IGNsb3NlX2lmX29wZW4gdCA9IGlmIG5vdCAoaXNfY2xvc2VkIHQpIHRoZW4gSXZhci5maWxsIChuZXh0IHQpIE5pbFxuXG5sZXQgZXh0ZW5kIHQgdiA9XG4gIGxldCBuZXh0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgZmlsbF9leG4gdCAoQ29ucyAodiwgSXZhci5yZWFkIG5leHQpKTtcbiAgdC5uZXh0IDwtIG5leHRcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxubW9kdWxlIFN0cmVhbSA9IFRhaWwuU3RyZWFtXG5tb2R1bGUgTW9uaXRvciA9IE1vbml0b3IwXG5pbmNsdWRlIE1vbml0b3JcblxudHlwZSBtb25pdG9yID0gdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm5hbWU6aWdub3JlXG4gICAgICB+aGVyZTppZ25vcmVcbiAgICAgIH5pZDppZ25vcmVcbiAgICAgIH5mb3J3YXJkaW5nOmlnbm9yZVxuICAgICAgfm5leHRfZXJyb3I6KGNoZWNrIChmdW4gbmV4dF9lcnJvciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgbmV4dF9lcnJvcikpKVxuICAgICAgfmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzOmlnbm9yZVxuICAgICAgfnRhaWxzX2Zvcl9hbGxfZXJyb3JzOmlnbm9yZVxuICAgICAgfmhhc19zZWVuX2Vycm9yOmlnbm9yZSlcbjs7XG5cbmxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSlcbmxldCBjdXJyZW50ICgpID0gRXhlY3V0aW9uX2NvbnRleHQubW9uaXRvciAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSlcbmxldCBkZXRhY2ggdCA9IHQuZm9yd2FyZGluZyA8LSBEZXRhY2hlZFxuXG50eXBlIGhhbmRsZXJfc3RhdGUgPVxuICB8IFVuaW5pdGlhbGl6ZWRcbiAgfCBSdW5uaW5nIG9mIChFeGVjdXRpb25fY29udGV4dC50ICogKGV4biAtPiB1bml0KSkgQmFnLkVsdC50XG4gIHwgVGVybWluYXRlZFxuXG5sZXQgZGV0YWNoX2FuZF9pdGVyX2Vycm9ycyB0IH5mID1cbiAgZGV0YWNoIHQ7XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgbGV0IGhhbmRsZXJfc3RhdGVfcmVmID0gcmVmIFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IHJ1bl9mIGV4biA9XG4gICAgbWF0Y2ggIWhhbmRsZXJfc3RhdGVfcmVmIHdpdGhcbiAgICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBUZXJtaW5hdGVkIC0+ICgpXG4gICAgfCBSdW5uaW5nIGJhZ19lbHQgLT5cbiAgICAgICh0cnkgZiBleG4gd2l0aFxuICAgICAgIHwgaW5uZXJfZXhuIC0+XG4gICAgICAgICBoYW5kbGVyX3N0YXRlX3JlZiA6PSBUZXJtaW5hdGVkO1xuICAgICAgICAgQmFnLnJlbW92ZSB0LmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIGJhZ19lbHQ7XG4gICAgICAgICAoKiBbcnVuX2ZdIGFsd2F5cyBydW5zIGluIFtleGVjdXRpb25fY29udGV4dF0uICBIZW5jZSwgW3JhaXNlIGlubmVyX2V4bl0gc2VuZHNcbiAgICAgICAgICAgIFtpbm5lcl9leG5dIHRvIFtleGVjdXRpb25fY29udGV4dF0ncyBtb25pdG9yLCBpLmUuIHRoZSBtb25pdG9yIGluIGVmZmVjdCB3aGVuXG4gICAgICAgICAgICBbZGV0YWNoX2FuZF9pdGVyX2Vycm9yc10gd2FzIGNhbGxlZC4gKilcbiAgICAgICAgIHJhaXNlIGlubmVyX2V4bilcbiAgaW5cbiAgaGFuZGxlcl9zdGF0ZV9yZWZcbiAgOj0gUnVubmluZyAoQmFnLmFkZCB0LmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIChleGVjdXRpb25fY29udGV4dCwgcnVuX2YpKVxuOztcblxubGV0IGRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSB0ID1cbiAgZGV0YWNoIHQ7XG4gIGxldCB0YWlsID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgdC50YWlsc19mb3JfYWxsX2Vycm9ycyA8LSB0YWlsIDo6IHQudGFpbHNfZm9yX2FsbF9lcnJvcnM7XG4gIFRhaWwuY29sbGVjdCB0YWlsXG47O1xuXG5sZXQgZ2V0X25leHRfZXJyb3IgdCA9IEl2YXIucmVhZCB0Lm5leHRfZXJyb3JcblxubGV0IGRldGFjaF9hbmRfZ2V0X25leHRfZXJyb3IgdCA9XG4gIGRldGFjaCB0O1xuICBnZXRfbmV4dF9lcnJvciB0XG47O1xuXG5sZXQgY3JlYXRlID9oZXJlID9pbmZvID9uYW1lICgpID1cbiAgbGV0IHBhcmVudCA9IGN1cnJlbnQgKCkgaW5cbiAgY3JlYXRlX3dpdGhfcGFyZW50ID9oZXJlID9pbmZvID9uYW1lIChTb21lIHBhcmVudClcbjs7XG5cbm1vZHVsZSBNb25pdG9yX2V4biA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZXhuIDogZXhuXG4gICAgOyBiYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgICA7IGJhY2t0cmFjZV9oaXN0b3J5IDogQmFja3RyYWNlLnQgbGlzdFxuICAgIDsgbW9uaXRvciA6IE1vbml0b3IudFxuICAgIH1cblxuICBsZXQgYmFja3RyYWNlIHQgPSB0LmJhY2t0cmFjZVxuICBsZXQgZXh0cmFjdF9leG4gdCA9IHQuZXhuXG5cbiAgbGV0IGJhY2t0cmFjZV90cnVuY2F0aW9uX2hldXJpc3RpY3MgPVxuICAgIGxldCBqb2JfcXVldWUgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImpvYl9xdWV1ZS5tbFxcXCJcIiBpblxuICAgIGxldCBkZWZlcnJlZDAgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImRlZmVycmVkMC5tbFxcXCJcIiBpblxuICAgIGxldCBkZWZlcnJlZDEgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImRlZmVycmVkMS5tbFxcXCJcIiBpblxuICAgIGxldCBtb25pdG9yID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJtb25pdG9yLm1sXFxcIlwiIGluXG4gICAgbGV0IGltcG9ydDAgPSBcIlJhaXNlZCBhdCBmaWxlIFxcXCJpbXBvcnQwLm1sXFxcIlwiIGluXG4gICAgbGV0IGVycm9yID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJlcnJvci5tbFxcXCJcIiBpblxuICAgIGZ1biB0cmFjZXMgLT5cbiAgICAgICgqIC4uL3Rlc3QvdGVzdF90cnlfd2l0aF9lcnJvcl9kaXNwbGF5Lm1sIG1ha2VzIHN1cmUgdGhpcyBzdGF5cyB1cC10by1kYXRlLiAqKVxuICAgICAgbGV0IHRyYWNlcyA9XG4gICAgICAgIG1hdGNoIHRyYWNlcyB3aXRoXG4gICAgICAgIHwgdDEgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDEgfnByZWZpeDppbXBvcnQwIC0+XG4gICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICB8IHQyIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6ZXJyb3IgLT5cbiAgICAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICAgIHwgdDMgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDMgfnByZWZpeDplcnJvciAtPiByZXN0XG4gICAgICAgICAgICAgIHwgXyAtPiByZXN0KVxuICAgICAgICAgICB8IF8gLT4gcmVzdClcbiAgICAgICAgfCBfIC0+IHRyYWNlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIExpc3QucmV2IHRyYWNlcyB3aXRoXG4gICAgICB8IHQxIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQxIH5wcmVmaXg6am9iX3F1ZXVlIC0+XG4gICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgIHwgdDIgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDpqb2JfcXVldWUgLT5cbiAgICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgfCB0MiA6OiByZXN0XG4gICAgICAgICAgICAgIHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4OmRlZmVycmVkMFxuICAgICAgICAgICAgICAgICgqIGJpbmQgKilcbiAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6ZGVmZXJyZWQxXG4gICAgICAgICAgICAgICAgKCogbWFwICopXG4gICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4Om1vbml0b3JcbiAgICAgICAgICAgICAgKCogdHJ5X3dpdGggKikgLT4gTGlzdC5yZXYgcmVzdFxuICAgICAgICAgICAgfCBfIC0+IExpc3QucmV2IHJlc3QpXG4gICAgICAgICB8IF8gLT4gTGlzdC5yZXYgcmVzdClcbiAgICAgIHwgXyAtPiB0cmFjZXNcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHsgZXhuOyBiYWNrdHJhY2U7IGJhY2t0cmFjZV9oaXN0b3J5OyBtb25pdG9yIH0gPVxuICAgIGxldCBtb25pdG9yID1cbiAgICAgIGxldCBuYW1lID1cbiAgICAgICAgbWF0Y2ggSW5mby50b19zdHJpbmdfaHVtIG1vbml0b3IubmFtZSB3aXRoXG4gICAgICAgIHwgXCJcIiAtPiBOb25lXG4gICAgICAgIHwgcyAtPiBTb21lIHNcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID1cbiAgICAgICAgbWF0Y2ggbW9uaXRvci5oZXJlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGhlcmUgLT5cbiAgICAgICAgICAoKiBXZSBkaXNwbGF5IHRoZSBmdWxsIGZpbGVuYW1lLCB3aGVyZWFzIGJhY2t0cmFjZXMgb25seSBoYXZlIGJhc2VuYW1lcywgYnV0XG4gICAgICAgICAgICAgcGVyaGFwcyB0aGF0J3Mgd2hhdCBzaG91bGQgY2hhbmdlLiAqKVxuICAgICAgICAgIGxldCBjb2x1bW4gPSBoZXJlLnBvc19jbnVtIC0gaGVyZS5wb3NfYm9sIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKCogV2UgaGlkZSBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyB3aGVuIFthbV9ydW5uaW5nX3Rlc3RdIHRvIG1ha2UgdGVzdCBvdXRwdXRcbiAgICAgICAgICAgICAgIG1vcmUgcm9idXN0LiAgVGhpcyBzYXZlcyBwZW9wbGUgbWFudWFsbHkgaGlkaW5nIHRoZSBudW1iZXJzIG9yIGV2ZW4gd29yc2UsXG4gICAgICAgICAgICAgICBsZWF2aW5nIHRoZW0gaW4gdGVzdCBvdXRwdXQuICBIaWRpbmcgaW4gdGVzdCBpcyBkaWZmZXJlbnQgY2hvaWNlIGZvclxuICAgICAgICAgICAgICAgYmVoYXZpb3IgdGhhbiBvdXIgY29kZWJhc2UgbWFrZXMgZm9yIFtCYWNrdHJhY2UuZWxpZGVdLCB3aGljaCBoYXMgZGVmYXVsdFxuICAgICAgICAgICAgICAgW2ZhbHNlXSwgYW5kIHRodXMgc2hvd3MgYmFja3RyYWNlcyBpbiB0ZXN0LiAgVGhlcmUgYXJlIGEgY291cGxlIHJlYXNvbnMgZm9yXG4gICAgICAgICAgICAgICB0aGlzIGRpZmZlcmVudCBjaG9pY2UuICBGaXJzdCwgZXhwZWN0LXRlc3QgbWFjaGluZXJ5IGhhcyBjaGVjayB0byBwcmV2ZW50XG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIGZyb20gYXBwZWFyaW5nIGluIHRlc3Qgb3V0cHV0LiAgSXQgaGFzIG5vIHN1Y2ggY2hlY2tzIGZvciBsaW5lXG4gICAgICAgICAgICAgICBhbmQgY29sdW1uIG51bWJlcnMuICBTZWNvbmQsIHdoZW4gdGhlcmUgaXMgYSByZWFsIGVycm9yIGFuZCB5b3Ugd2FudCB0byBzZWVcbiAgICAgICAgICAgICAgIHRoZSBiYWNrdHJhY2UsIHRocm93aW5nIGF3YXkgdGhlIHdob2xlIGJhY2t0cmFjZSBsb3NlcyBhIGxvdCBvZiBwb3RlbnRpYWxseVxuICAgICAgICAgICAgICAgdXNlZnVsIGluZm9ybWF0aW9uIHRoYXQgbWF5IGJlIGhhcmQgdG8gcmVjb3Zlci4gIFdoZXJlYXMgd2UncmUganVzdFxuICAgICAgICAgICAgICAgdGhyb3dpbmcgYSB3YXkgYSBsaW5lIG51bWJlciBhbmQgY29sdW1uLCB3aGljaCBhcmUgYSBtaW5vciBjb252ZW5pZW5jZVxuICAgICAgICAgICAgICAgZ2l2ZW4gdGhhdCB0aGUgZmlsZW5hbWUgaGFzIG1vc3Qgb2YgdGhlIGluZm9ybWF0aW9uLiAqKVxuICAgICAgICAgICAgKGlmIGFtX3J1bm5pbmdfdGVzdFxuICAgICAgICAgICAgIHRoZW4gc3ByaW50ZiBcImZpbGUgJVMsIGxpbmUgTElORSwgY2hhcmFjdGVycyBDMS1DMlwiIGhlcmUucG9zX2ZuYW1lXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcImZpbGUgJVMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWRcIlxuICAgICAgICAgICAgICAgICBoZXJlLnBvc19mbmFtZVxuICAgICAgICAgICAgICAgICBoZXJlLnBvc19sbnVtXG4gICAgICAgICAgICAgICAgIGNvbHVtblxuICAgICAgICAgICAgICAgICBjb2x1bW4pXG4gICAgICBpblxuICAgICAgbWF0Y2ggcG9zLCBuYW1lIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIHBvcywgTm9uZSAtPiBbIHNwcmludGYgXCJDYXVnaHQgYnkgbW9uaXRvciBhdCAlc1wiIHBvcyBdXG4gICAgICB8IE5vbmUsIFNvbWUgbmFtZSAtPiBbIHNwcmludGYgXCJDYXVnaHQgYnkgbW9uaXRvciAlc1wiIG5hbWUgXVxuICAgICAgfCBTb21lIHBvcywgU29tZSBuYW1lIC0+IFsgc3ByaW50ZiBcIkNhdWdodCBieSBtb25pdG9yICVzIGF0ICVzXCIgbmFtZSBwb3MgXVxuICAgIGluXG4gICAgbGV0IGJhY2t0cmFjZSA9XG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSBiYWNrdHJhY2UgLT4gQmFja3RyYWNlLnRvX3N0cmluZ19saXN0IGJhY2t0cmFjZVxuICAgICAgaW5cbiAgICAgIGJhY2t0cmFjZV90cnVuY2F0aW9uX2hldXJpc3RpY3MgYmFja3RyYWNlIEAgbW9uaXRvclxuICAgIGluXG4gICAgbGV0IGxpc3RfaWZfbm90X2VtcHR5ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBfIDo6IF8gYXMgbCAtPiBTb21lIGxcbiAgICBpblxuICAgIFslc2V4cFxuICAgICAgKGV4biA6IGV4bilcbiAgICAsIChsaXN0X2lmX25vdF9lbXB0eSBiYWNrdHJhY2UgOiAoc3RyaW5nIGxpc3Qgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICwgYGJhY2t0cmFjZV9oaXN0b3J5XG4gICAgICAgIChsaXN0X2lmX25vdF9lbXB0eSBiYWNrdHJhY2VfaGlzdG9yeSA6IChCYWNrdHJhY2UudCBsaXN0IG9wdGlvbltAc2V4cC5vcHRpb25dKSldXG4gIDs7XG5lbmRcblxuZXhjZXB0aW9uIE1vbml0b3JfZXhuIG9mIE1vbml0b3JfZXhuLnRcblxubGV0ICgpID1cbiAgU2V4cGxpYi5Db252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1vbml0b3JfZXhuXSAoZnVuY3Rpb25cbiAgICB8IE1vbml0b3JfZXhuIHQgLT4gWyVzZXhwIFwibW9uaXRvci5tbC5FcnJvclwiIDo6ICh0IDogTW9uaXRvcl9leG4udCldXG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCBleHRyYWN0X2V4biBleG4gPVxuICBtYXRjaCBleG4gd2l0aFxuICB8IE1vbml0b3JfZXhuIGVycm9yIC0+IGVycm9yLmV4blxuICB8IGV4biAtPiBleG5cbjs7XG5cbmxldCBzZW5kX2V4biB0ID8oYmFja3RyYWNlID0gYEdldCkgZXhuID1cbiAgbGV0IGV4biA9XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICB8IE1vbml0b3JfZXhuIF8gLT4gZXhuXG4gICAgfCBfIC0+XG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgICAgICAgfCBgR2V0IC0+IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnRfZm9yX2V4biBleG5cbiAgICAgICAgfCBgVGhpcyBiIC0+IFNvbWUgYlxuICAgICAgaW5cbiAgICAgIGxldCBiYWNrdHJhY2VfaGlzdG9yeSA9IChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKS5iYWNrdHJhY2VfaGlzdG9yeSBpblxuICAgICAgTW9uaXRvcl9leG4geyBNb25pdG9yX2V4bi5leG47IGJhY2t0cmFjZTsgYmFja3RyYWNlX2hpc3Rvcnk7IG1vbml0b3IgPSB0IH1cbiAgaW5cbiAgaWYgRGVidWcubW9uaXRvcl9zZW5kX2V4biB0aGVuIERlYnVnLmxvZyBcIk1vbml0b3Iuc2VuZF9leG5cIiAodCwgZXhuKSBbJXNleHBfb2Y6IHQgKiBleG5dO1xuICB0Lmhhc19zZWVuX2Vycm9yIDwtIHRydWU7XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgSXZhci5maWxsIHQubmV4dF9lcnJvciBleG47XG4gICAgdC5uZXh0X2Vycm9yIDwtIEl2YXIuY3JlYXRlICgpO1xuICAgIG1hdGNoIHQuZm9yd2FyZGluZyB3aXRoXG4gICAgfCBEZXRhY2hlZCAtPlxuICAgICAgaWYgRGVidWcubW9uaXRvcl9zZW5kX2V4blxuICAgICAgdGhlblxuICAgICAgICBEZWJ1Zy5sb2cgXCJNb25pdG9yLnNlbmRfZXhuIGZvdW5kIGxpc3RlbmluZyBtb25pdG9yXCIgKHQsIGV4bikgWyVzZXhwX29mOiB0ICogZXhuXTtcbiAgICAgIEJhZy5pdGVyIHQuaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgfmY6KGZ1biAoZXhlY3V0aW9uX2NvbnRleHQsIGYpIC0+XG4gICAgICAgIFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGV4bik7XG4gICAgICBMaXN0Lml0ZXIgdC50YWlsc19mb3JfYWxsX2Vycm9ycyB+ZjooZnVuIHRhaWwgLT4gVGFpbC5leHRlbmQgdGFpbCBleG4pXG4gICAgfCBQYXJlbnQgcGFyZW50IC0+IGxvb3AgcGFyZW50XG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+XG4gICAgICAoKiBEbyBub3QgY2hhbmdlIHRoaXMgYnJhbmNoIHRvIHByaW50IHRoZSBleGNlcHRpb24gb3IgdG8gZXhpdC4gIEhhdmluZyB0aGVcbiAgICAgICAgIHNjaGVkdWxlciByYWlzZSBhbiB1bmNhdWdodCBleGNlcHRpb24gaXMgdGhlIG5lY2Vzc2FyeSBiZWhhdmlvciBmb3IgcHJvZ3JhbXNcbiAgICAgICAgIHRoYXQgY2FsbCBbU2NoZWR1bGVyLmdvXSBhbmQgd2FudCB0byBoYW5kbGUgaXQuICopXG4gICAgICBTY2hlZHVsZXIuKGdvdF91bmNhdWdodF9leG4gKHQgKCkpKSBleG4gKCFBc3luY19rZXJuZWxfY29uZmlnLnRhc2tfaWQgKCkpXG4gIGluXG4gIGxvb3AgdFxuOztcblxubW9kdWxlIEV4cG9ydGVkX2Zvcl9zY2hlZHVsZXIgPSBzdHJ1Y3RcbiAgbGV0IHdpdGhpbl9jb250ZXh0IGNvbnRleHQgZiA9XG4gICAgU2NoZWR1bGVyLih3aXRoX2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgY29udGV4dCB+ZjooZnVuICgpIC0+XG4gICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggZiB3aXRoXG4gICAgICB8IE9rIHggLT4gT2sgeFxuICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgc2VuZF9leG4gKEV4ZWN1dGlvbl9jb250ZXh0Lm1vbml0b3IgY29udGV4dCkgZXhuIH5iYWNrdHJhY2U6YEdldDtcbiAgICAgICAgRXJyb3IgKCkpXG4gIDs7XG5cbiAgbGV0IHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIGxldCB0bXBfY29udGV4dCA9XG4gICAgICBFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZSAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSkgP21vbml0b3IgP3ByaW9yaXR5XG4gICAgaW5cbiAgICB3aXRoaW5fY29udGV4dCB0bXBfY29udGV4dCBmXG4gIDs7XG5cbiAgbGV0IHdpdGhpbicgP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIG1hdGNoIHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgd2l0aFxuICAgIHwgRXJyb3IgKCkgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICB8IE9rIGQgLT4gZFxuICA7O1xuXG4gIGxldCB3aXRoaW5fdiA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbWF0Y2ggd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiB3aXRoXG4gICAgfCBFcnJvciAoKSAtPiBOb25lXG4gICAgfCBPayB4IC0+IFNvbWUgeFxuICA7O1xuXG4gIGxldCB3aXRoaW4gP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIG1hdGNoIHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgd2l0aFxuICAgIHwgRXJyb3IgKCkgLT4gKClcbiAgICB8IE9rICgpIC0+ICgpXG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayB4ID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBTY2hlZHVsZXIuZW5xdWV1ZVxuICAgICAgc2NoZWR1bGVyXG4gICAgICAoRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2VcbiAgICAgICAgIChTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIpXG4gICAgICAgICA/bW9uaXRvclxuICAgICAgICAgP3ByaW9yaXR5KVxuICAgICAgd29ya1xuICAgICAgeFxuICA7O1xuXG4gIGxldCBzY2hlZHVsZSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayA9IHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayAoKVxuXG4gIGxldCBzY2hlZHVsZScgPVxuICAgICgqIEZvciBwZXJmb3JtYW5jZSwgd2UgdXNlIFtzY2hlZHVsZV93aXRoX2RhdGFdIHdpdGggYSBjbG9zZWQgZnVuY3Rpb24sIGFuZCBpbmxpbmVcbiAgICAgICBbRGVmZXJyZWQuY3JlYXRlXS4gKilcbiAgICBsZXQgdXBvbl93b3JrX2ZpbGxfaSAod29yaywgaSkgPSB1cG9uICh3b3JrICgpKSAoZnVuIGEgLT4gSXZhci5maWxsIGkgYSkgaW5cbiAgICBmdW4gP21vbml0b3IgP3ByaW9yaXR5IHdvcmsgLT5cbiAgICAgIGxldCBpID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgdXBvbl93b3JrX2ZpbGxfaSAod29yaywgaSk7XG4gICAgICBJdmFyLnJlYWQgaVxuICA7O1xuXG4gIGxldCBwcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCBmID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgICBzdGFnZSAoZnVuIGEgLT4gU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSlcbiAgOztcblxuICBsZXQgcHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQnIGYgPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICAgIGxldCBjYWxsX2FuZF9maWxsIChmLCBhLCBpKSA9IHVwb24gKGYgYSkgKGZ1biByIC0+IEl2YXIuZmlsbCBpIHIpIGluXG4gICAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpIC0+XG4gICAgICAgIFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBjYWxsX2FuZF9maWxsIChmLCBhLCBpKSkpXG4gIDs7XG5lbmRcblxub3BlbiBFeHBvcnRlZF9mb3Jfc2NoZWR1bGVyXG5cbmxldCBzdHJlYW1faXRlciBzdHJlYW0gfmYgPVxuICBsZXQgcmVjIGxvb3Agc3RyZWFtID1cbiAgICBTdHJlYW0ubmV4dCBzdHJlYW1cbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAodiwgc3RyZWFtKSAtPlxuICAgICAgbG9vcCBzdHJlYW07XG4gICAgICBmIHZcbiAgaW5cbiAgbG9vcCBzdHJlYW1cbjs7XG5cbigqIEFuIFsnYSBPa19hbmRfZXhucy50XSByZXByZXNlbnRzIHRoZSBvdXRwdXQgb2YgYSBjb21wdXRhdGlvbiBydW5uaW5nIGluIGEgZGV0YWNoZWRcbiAgIG1vbml0b3IuICopXG5tb2R1bGUgT2tfYW5kX2V4bnMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG9rIDogJ2EgRGVmZXJyZWQudFxuICAgIDsgZXhucyA6IGV4biBTdHJlYW0udFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1biBmID1cbiAgICAoKiBXZSBjYWxsIFtjcmVhdGVfd2l0aF9wYXJlbnQgTm9uZV0gYmVjYXVzZSBbbW9uaXRvcl0gZG9lcyBub3QgbmVlZCBhIHBhcmVudC4gIEl0XG4gICAgICAgZG9lcyBub3QgYmVjYXVzZSB3ZSBjYWxsIFtkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvcl0gYW5kIGRlYWwgd2l0aCB0aGVcbiAgICAgICBlcnJvcnMgZXhwbGljaXRseSwgdGh1cyBbc2VuZF9leG5dIHdvdWxkIG5ldmVyIHByb3BhZ2F0ZSBhbiBleG4gcGFzdCBbbW9uaXRvcl0uICopXG4gICAgbGV0IG1vbml0b3IgPSBjcmVhdGVfd2l0aF9wYXJlbnQgP2hlcmUgP2luZm8gP25hbWUgTm9uZSBpblxuICAgIGxldCBleG5zID0gZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIG1vbml0b3IgaW5cbiAgICBsZXQgb2sgPVxuICAgICAgbWF0Y2ggcnVuIHdpdGhcbiAgICAgIHwgYE5vdyAtPiB3aXRoaW4nIH5tb25pdG9yIGZcbiAgICAgIHwgYFNjaGVkdWxlIC0+IHNjaGVkdWxlJyB+bW9uaXRvciBmXG4gICAgaW5cbiAgICB7IG9rOyBleG5zIH1cbiAgOztcbmVuZFxuXG5sZXQgZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvdW5kX2Vycm9yc1xuICAgICAgcmVzdWx0X2ZpbGxlclxuICAgICAgcmVzdWx0XG4gICAgICBleG5zXG4gICAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHRcbiAgPVxuICBpZiBJdmFyX2ZpbGxlci5pc19lbXB0eSByZXN1bHRfZmlsbGVyXG4gIHRoZW4gKFxuICAgIEl2YXJfZmlsbGVyLmZpbGwgcmVzdWx0X2ZpbGxlciByZXN1bHQ7XG4gICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IGV4bnMpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCB0cnlfd2l0aF9sb2dfZXhuIDogKGV4biAtPiB1bml0KSByZWYgPVxuICAgIHJlZiAoZnVuIGV4biAtPlxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJmYWlsZWQgdG8gc2V0IFtNb25pdG9yLkV4cGVydC50cnlfd2l0aF9sb2dfZXhuXVwiIChleG4gOiBFeG4udCldKVxuICA7O1xuZW5kXG5cbmxldCBtYWtlX2hhbmRsZV9leG4gcmVzdCA9XG4gIG1hdGNoIHJlc3Qgd2l0aFxuICB8IGBMb2cgLT5cbiAgICAoKiBXZSBhcmUgY2FyZWZ1bCB0byBub3QgY2xvc2Ugb3ZlciBjdXJyZW50IGNvbnRleHQsIHdoaWNoIGlzIG5vdCBuZWVkZWQuICopXG4gICAgIUV4cGVydC50cnlfd2l0aF9sb2dfZXhuXG4gIHwgYFJhaXNlIC0+XG4gICAgbGV0IHBhcmVudCA9IGN1cnJlbnQgKCkgaW5cbiAgICBmdW4gZXhuIC0+IHNlbmRfZXhuIHBhcmVudCBleG4gP2JhY2t0cmFjZTpOb25lXG4gIHwgYENhbGwgZiAtPlxuICAgIGxldCBwYXJlbnQgPSBjdXJyZW50ICgpIGluXG4gICAgZnVuIGV4biAtPiB3aXRoaW4gfm1vbml0b3I6cGFyZW50IChmdW4gKCkgLT4gZiBleG4pXG47O1xuXG5sZXQgdHJ5X3dpdGhcbiAgICAgID9oZXJlXG4gICAgICA/aW5mb1xuICAgICAgPyhuYW1lID0gXCJcIilcbiAgICAgID9leHRyYWN0X2V4bjooZG9fZXh0cmFjdF9leG4gPSBmYWxzZSlcbiAgICAgID8ocnVuID0gYE5vdylcbiAgICAgID8ocmVzdCA9IGBSYWlzZSlcbiAgICAgIGZcbiAgPVxuICBsZXQgeyBPa19hbmRfZXhucy5vazsgZXhucyB9ID0gT2tfYW5kX2V4bnMuY3JlYXRlID9oZXJlID9pbmZvIH5uYW1lIH5ydW4gZiBpblxuICBsZXQgaGFuZGxlX2V4biA9IG1ha2VfaGFuZGxlX2V4biByZXN0IGluXG4gIGxldCBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQgZXhucyA9IHN0cmVhbV9pdGVyIGV4bnMgfmY6aGFuZGxlX2V4biBpblxuICAoKiBXZSBydW4gW3dpdGhpbicgfm1vbml0b3I6bWFpbl0gdG8gYXZvaWQgaG9sZGluZyBvbiB0byByZWZlcmVuY2VzIHRvIHRoZSBldmFsdWF0aW9uXG4gICAgIGNvbnRleHQgaW4gd2hpY2ggW3RyeV93aXRoXSB3YXMgY2FsbGVkLiAgVGhpcyBhdm9pZHMgYSBzcGFjZSBsZWFrIHdoZW4gYSBjaGFpbiBvZlxuICAgICBbdHJ5X3dpdGhdJ3MgYXJlIHJ1biBlYWNoIG5lc3RlZCB3aXRoaW4gdGhlIHByZXZpb3VzIG9uZS4gIFdpdGhvdXQgdGhlIFt3aXRoaW4nXSwgdGhlXG4gICAgIGVycm9yIGhhbmRsaW5nIGZvciB0aGUgaW5uZXJtb3N0IFt0cnlfd2l0aF0gd291bGQga2VlcCBhbGl2ZSB0aGUgZW50aXJlIGNoYWluLiAqKVxuICB3aXRoaW4nIH5tb25pdG9yOm1haW4gKGZ1biAoKSAtPlxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgb2tcbiAgICB0aGVuIChcbiAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCBleG5zO1xuICAgICAgcmV0dXJuIChPayAoRGVmZXJyZWQudmFsdWVfZXhuIG9rKSkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVzdWx0X2ZpbGxlciwgcmVzdWx0ID0gSXZhcl9maWxsZXIuY3JlYXRlICgpIGluXG4gICAgICB1cG9uIG9rIChmdW4gcmVzIC0+XG4gICAgICAgIGZpbGxfcmVzdWx0X2FuZF9oYW5kbGVfYmFja2dyb3VuZF9lcnJvcnNcbiAgICAgICAgICByZXN1bHRfZmlsbGVyXG4gICAgICAgICAgKE9rIHJlcylcbiAgICAgICAgICBleG5zXG4gICAgICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0KTtcbiAgICAgIHVwb24gKFN0cmVhbS5uZXh0IGV4bnMpIChmdW5jdGlvblxuICAgICAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBDb25zIChleG4sIGV4bnMpIC0+XG4gICAgICAgICAgbGV0IGV4biA9IGlmIGRvX2V4dHJhY3RfZXhuIHRoZW4gZXh0cmFjdF9leG4gZXhuIGVsc2UgZXhuIGluXG4gICAgICAgICAgZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvdW5kX2Vycm9yc1xuICAgICAgICAgICAgcmVzdWx0X2ZpbGxlclxuICAgICAgICAgICAgKEVycm9yIGV4bilcbiAgICAgICAgICAgIGV4bnNcbiAgICAgICAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCk7XG4gICAgICByZXN1bHQpKVxuOztcblxubGV0IHRyeV93aXRoX29yX2Vycm9yID9oZXJlID9pbmZvID8obmFtZSA9IFwidHJ5X3dpdGhfb3JfZXJyb3JcIikgP2V4dHJhY3RfZXhuID9yZXN0IGYgPVxuICB0cnlfd2l0aCBmID9oZXJlID9pbmZvIH5uYW1lID9leHRyYWN0X2V4biB+cnVuOmBOb3cgP3Jlc3QgPj58IE9yX2Vycm9yLm9mX2V4bl9yZXN1bHRcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luX29yX2Vycm9yXG4gICAgICA/aGVyZVxuICAgICAgP2luZm9cbiAgICAgID8obmFtZSA9IFwidHJ5X3dpdGhfam9pbl9vcl9lcnJvclwiKVxuICAgICAgP2V4dHJhY3RfZXhuXG4gICAgICA/cmVzdFxuICAgICAgZlxuICA9XG4gIHRyeV93aXRoX29yX2Vycm9yIGYgP2hlcmUgP2luZm8gfm5hbWUgP2V4dHJhY3RfZXhuID9yZXN0ID4+fCBPcl9lcnJvci5qb2luXG47O1xuXG5sZXQgcHJvdGVjdCA/aGVyZSA/aW5mbyA/KG5hbWUgPSBcIk1vbml0b3IucHJvdGVjdFwiKSA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCBmIH5maW5hbGx5ID1cbiAgbGV0JWJpbmQgciA9IHRyeV93aXRoID9leHRyYWN0X2V4biA/aGVyZSA/aW5mbyA/cnVuID9yZXN0IH5uYW1lIGYgaW5cbiAgbGV0JW1hcCBmciA9XG4gICAgdHJ5X3dpdGhcbiAgICAgIH5leHRyYWN0X2V4bjpmYWxzZVxuICAgICAgP2hlcmVcbiAgICAgID9pbmZvXG4gICAgICB+cnVuOmBTY2hlZHVsZSAoKiBjb25zaWRlciBbfnJ1bjpgTm93XSAqKVxuICAgICAgP3Jlc3RcbiAgICAgIH5uYW1lOlwiZmluYWxseVwiXG4gICAgICBmaW5hbGx5XG4gIGluXG4gIG1hdGNoIHIsIGZyIHdpdGhcbiAgfCBFcnJvciBleG4sIEVycm9yIGZpbmFsbHlfZXhuIC0+XG4gICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJBc3luYyBmaW5hbGx5XCIgKGV4biA6IGV4bikgKGZpbmFsbHlfZXhuIDogZXhuKV1cbiAgfCBFcnJvciBlLCBPayAoKSB8IE9rIF8sIEVycm9yIGUgLT4gcmFpc2UgZVxuICB8IE9rIHIsIE9rICgpIC0+IHJcbjs7XG5cbmxldCBoYW5kbGVfZXJyb3JzID9oZXJlID9pbmZvID9uYW1lIGYgaGFuZGxlciA9XG4gIGxldCB7IE9rX2FuZF9leG5zLm9rOyBleG5zIH0gPSBPa19hbmRfZXhucy5jcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1bjpgTm93IGYgaW5cbiAgc3RyZWFtX2l0ZXIgZXhucyB+ZjpoYW5kbGVyO1xuICBva1xuOztcblxubGV0IGNhdGNoX3N0cmVhbSA/aGVyZSA/aW5mbyA/bmFtZSBmID1cbiAgbGV0IHsgT2tfYW5kX2V4bnMuZXhuczsgXyB9ID1cbiAgICBPa19hbmRfZXhucy5jcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1bjpgTm93IChmdW4gKCkgLT5cbiAgICAgIGYgKCk7XG4gICAgICByZXR1cm4gKCkpXG4gIGluXG4gIGV4bnNcbjs7XG5cbmxldCBjYXRjaCA/aGVyZSA/aW5mbyA/bmFtZSBmID1cbiAgbWF0Y2glbWFwIFN0cmVhbS5uZXh0IChjYXRjaF9zdHJlYW0gP2hlcmUgP2luZm8gP25hbWUgZikgd2l0aFxuICB8IENvbnMgKHgsIF8pIC0+IHhcbiAgfCBOaWwgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNb25pdG9yLmNhdGNoIGdvdCB1bmV4cGVjdGVkIGVtcHR5IHN0cmVhbVwiXVxuOztcblxubGV0IGNhdGNoX2Vycm9yID9oZXJlID9pbmZvID9uYW1lIGYgPSBjYXRjaCA/aGVyZSA/aW5mbyA/bmFtZSBmID4+fCBFcnJvci5vZl9leG5cblxubW9kdWxlIEZvcl90ZXN0cyA9IHN0cnVjdFxuICBsZXQgcGFyZW50IHQgPVxuICAgIG1hdGNoIHQuZm9yd2FyZGluZyB3aXRoXG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+IE5vbmVcbiAgICB8IFBhcmVudCBwYXJlbnQgLT4gU29tZSBwYXJlbnRcbiAgICB8IERldGFjaGVkIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZGVwdGggdCA9XG4gICAgbGV0IHJlYyBsb29wIHQgbiA9XG4gICAgICBtYXRjaCBwYXJlbnQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gblxuICAgICAgfCBTb21lIHQgLT4gbG9vcCB0IChuICsgMSlcbiAgICBpblxuICAgIGxvb3AgdCAwXG4gIDs7XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuaW5jbHVkZSBUYWlsLlN0cmVhbVxuXG5sZXQgZmlyc3RfZXhuIHQgPVxuICBtYXRjaCVtYXAgbmV4dCB0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTdHJlYW0uZmlyc3Qgb2YgZW1wdHkgc3RyZWFtXCJdXG4gIHwgQ29ucyAoeCwgXykgLT4geFxuOztcblxubGV0IGZvbGQnIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBiID1cbiAgICAgIHVwb24gKG5leHQgdCkgKGZ1bmN0aW9uXG4gICAgICAgIHwgTmlsIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgICB8IENvbnMgKHYsIHQpIC0+IHVwb24gKGYgYiB2KSAobG9vcCB0KSlcbiAgICBpblxuICAgIGxvb3AgdCBpbml0KVxuOztcblxuKCogW2ZvbGRdIGlzIGltcGxlbWVudGVkIHRvIGF2b2lkIHBlci1zdHJlYW0tZWxlbWVudCBkZWZlcnJlZCBvdmVyaGVhZCBpbiB0aGUgY2FzZSB3aGVuXG4gICBtdWx0aXBsZSBzdHJlYW0gZWxlbWVudHMgYXJlIGF2YWlsYWJsZSBzaW11bHRhbmVvdXNseS4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBiID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKG5leHQgdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IHVwb24gKG5leHQgdCkgKGZ1biBuZXh0IC0+IGxvb3BfbmV4dCBuZXh0IGIpXG4gICAgICB8IFNvbWUgbmV4dCAtPiBsb29wX25leHQgbmV4dCBiXG4gICAgYW5kIGxvb3BfbmV4dCBuZXh0IGIgPVxuICAgICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIHwgQ29ucyAodiwgdCkgLT4gbG9vcCB0IChmIGIgdilcbiAgICBpblxuICAgIGxvb3AgdCBpbml0KVxuOztcblxubGV0IGxlbmd0aCB0ID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIF8gLT4gbiArIDEpXG5sZXQgaXRlcicgdCB+ZiA9IGZvbGQnIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSB2IC0+IGYgdilcblxubGV0IGNsb3NlZCB0ID1cbiAgbWF0Y2ggRGVmZXJyZWQucGVlayAobmV4dCB0KSB3aXRoXG4gIHwgU29tZSBOaWwgLT4gcmV0dXJuICgpXG4gIHwgXyAtPiBpdGVyJyB0IH5mOihmdW4gXyAtPiByZXR1cm4gKCkpXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAoaXRlcicgdCB+ZjooZnVuIGEgLT5cbiAgICAgICBmIGE7XG4gICAgICAgcmV0dXJuICgpKSlcbjs7XG5cbmxldCBjcmVhdGUgZiA9XG4gIGxldCB0YWlsID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgKCogY29sbGVjdCBiZWZvcmUgY2FsbGluZyBbZl0sIGluIGNhc2UgW2ZdIGltbWVkaWF0ZWx5IGV4dGVuZHMuICopXG4gIGxldCB0ID0gVGFpbC5jb2xsZWN0IHRhaWwgaW5cbiAgZiB0YWlsO1xuICB0XG47O1xuXG5sZXQgdW5mb2xkIGIgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgbGV0IHJlYyBsb29wIGIgPVxuICAgICAgdXBvbiAoZiBiKSAoZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgICAgfCBTb21lIChhLCBiKSAtPlxuICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgYTtcbiAgICAgICAgICBsb29wIGIpXG4gICAgaW5cbiAgICBsb29wIGIpXG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBUYWlsLmV4dGVuZCB0YWlsIHgpO1xuICAgIFRhaWwuY2xvc2VfZXhuIHRhaWwpXG47O1xuXG5sZXQgdG9fbGlzdCBzID0gZm9sZCcgcyB+aW5pdDpbXSB+ZjooZnVuIGIgYSAtPiByZXR1cm4gKGEgOjogYikpID4+fCBMaXN0LnJldlxubGV0IGNvcHlfdG9fdGFpbCB0IHRhaWwgPSBpdGVyJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKFRhaWwuZXh0ZW5kIHRhaWwgYSkpXG5cbmxldCBhcHBlbmQgdDEgdDIgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvbiAoY29weV90b190YWlsIHQxIHRhaWwpIChmdW4gKCkgLT5cbiAgICAgIHVwb24gKGNvcHlfdG9fdGFpbCB0MiB0YWlsKSAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKSlcbjs7XG5cbmxldCBjb25jYXQgdCA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uIChpdGVyJyB0IH5mOihmdW4gdCAtPiBjb3B5X3RvX3RhaWwgdCB0YWlsKSkgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBmaWx0ZXInIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biB2IC0+XG4gICAgICAgICBtYXRjaCVtYXAgZiB2IHdpdGhcbiAgICAgICAgIHwgZmFsc2UgLT4gKClcbiAgICAgICAgIHwgdHJ1ZSAtPiBUYWlsLmV4dGVuZCB0YWlsIHYpKVxuICAgICAgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBmaWx0ZXJfZGVwcmVjYXRlZCB0IH5mID0gZmlsdGVyJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKGYgYSkpXG5cbmxldCBmaWx0ZXJfbWFwJyB0IH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb25cbiAgICAgIChpdGVyJyB0IH5mOihmdW4gdiAtPlxuICAgICAgICAgbWF0Y2glbWFwIGYgdiB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSB2IC0+IFRhaWwuZXh0ZW5kIHRhaWwgdikpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGZpbHRlcl9tYXBfZGVwcmVjYXRlZCB0IH5mID0gZmlsdGVyX21hcCcgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKVxuXG5sZXQgbWFwJyB0IH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb24gKGl0ZXInIHQgfmY6KGZ1biB2IC0+IGYgdiA+PnwgVGFpbC5leHRlbmQgdGFpbCkpIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgbWFwIHQgfmYgPSBtYXAnIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSlcblxubGV0IGZpcnN0X24gcyBuID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGxldCByZWMgbG9vcCBzIG4gPVxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgZWxzZVxuICAgICAgICB1cG9uIChuZXh0IHMpIChmdW5jdGlvblxuICAgICAgICAgIHwgTmlsIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgICAgICB8IENvbnMgKHgsIHQpIC0+XG4gICAgICAgICAgICBUYWlsLmV4dGVuZCB0YWlsIHg7XG4gICAgICAgICAgICBsb29wIHQgKG4gLSAxKSlcbiAgICBpblxuICAgIGxvb3AgcyBuKVxuOztcblxubGV0IGF2YWlsYWJsZV9ub3cgdCA9XG4gIGxldCByZWMgbG9vcCB0IGFjID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChuZXh0IHQpIHdpdGhcbiAgICB8IE5vbmUgfCBTb21lIE5pbCAtPiBMaXN0LnJldiBhYywgdFxuICAgIHwgU29tZSAoQ29ucyAoeCwgdCkpIC0+IGxvb3AgdCAoeCA6OiBhYylcbiAgaW5cbiAgbG9vcCB0IFtdXG47O1xuXG5sZXQgc3BsaXQgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpID8oZiA9IGZ1biBfIC0+IGBDb250aW51ZSkgdCA9XG4gIGxldCByZWFzb25fZm9yX3N0b3BwaW5nID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IHByZWZpeCA9IFRhaWwuY3JlYXRlICgpIGluXG4gIGxldCBmaW5pc2ggdiA9XG4gICAgVGFpbC5jbG9zZV9leG4gcHJlZml4O1xuICAgIEl2YXIuZmlsbCByZWFzb25fZm9yX3N0b3BwaW5nIHZcbiAgaW5cbiAgbGV0IHJlYyBsb29wIHQgPVxuICAgIGNob29zZSBbIGNob2ljZSBzdG9wIChmdW4gKCkgLT4gYFN0b3BwZWQpOyBjaG9pY2UgKG5leHQgdCkgKGZ1biBvIC0+IGBOZXh0IG8pIF1cbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IGBTdG9wcGVkIC0+IGZpbmlzaCAoYFN0b3BwZWQgdClcbiAgICB8IGBOZXh0IG8gLT5cbiAgICAgIChtYXRjaCBvIHdpdGhcbiAgICAgICB8IE5pbCAtPiBmaW5pc2ggYEVuZF9vZl9zdHJlYW1cbiAgICAgICB8IENvbnMgKGEsIHQpIC0+XG4gICAgICAgICAobWF0Y2ggZiBhIHdpdGhcbiAgICAgICAgICB8IGBDb250aW51ZSAtPlxuICAgICAgICAgICAgVGFpbC5leHRlbmQgcHJlZml4IGE7XG4gICAgICAgICAgICBsb29wIHRcbiAgICAgICAgICB8IGBGb3VuZCBiIC0+IGZpbmlzaCAoYEZvdW5kIChiLCB0KSkpKVxuICBpblxuICBsb29wIHQ7XG4gIFRhaWwuY29sbGVjdCBwcmVmaXgsIEl2YXIucmVhZCByZWFzb25fZm9yX3N0b3BwaW5nXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbGV0IF8sIGZvdW5kID0gc3BsaXQgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gYEZvdW5kIGEgZWxzZSBgQ29udGludWUpIGluXG4gIG1hdGNoJW1hcCBmb3VuZCB3aXRoXG4gIHwgYFN0b3BwZWQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCAoYEVuZF9vZl9zdHJlYW0gfCBgRm91bmQgXykgYXMgeCAtPiB4XG47O1xuXG5sZXQgdW5ncm91cCB0ID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb25cbiAgICAgIChpdGVyJyB0IH5mOihmdW4gbCAtPlxuICAgICAgICAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IFRhaWwuZXh0ZW5kIHRhaWwgeCk7XG4gICAgICAgICByZXR1cm4gKCkpKVxuICAgICAgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBpbnRlcmxlYXZlIHRzID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgICgqIFRoZSBpbnRlcmxlYXZlZCBzdHJlYW0gc2hvdWxkIGJlIGNsb3NlZCB3aGVuIHRoZSBvdXRlciBzdHJlYW0gYW5kIGFsbCBvZlxuICAgICAgIHRoZSBpbm5lciBzdHJlYW1zIGhhdmUgYmVlbiBjbG9zZWQuICBLZWVwIGEgY291bnQgb2YgdGhlIG51bWJlciBvZiBvcGVuXG4gICAgICAgc3RyZWFtcyBhbmQgY2xvc2UgdGhlIGludGVybGVhdmVkIHN0cmVhbSB3aGVuIHRoYXQgY291bnQgYmVjb21lc1xuICAgICAgIHplcm8uICopXG4gICAgbGV0IG51bV9vcGVuID0gcmVmIDEgaW5cbiAgICAoKiAxIGZvciB0aGUgb3V0ZXIgc3RyZWFtIHRoYXQgaXMgb3BlbiAqKVxuICAgIGxldCBjbG9zZSAoKSA9XG4gICAgICBudW1fb3BlbiA6PSAhbnVtX29wZW4gLSAxO1xuICAgICAgaWYgIW51bV9vcGVuID0gMCB0aGVuIFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICBpblxuICAgIGxldCBvdXRlcl9jbG9zZWQgPVxuICAgICAgaXRlcicgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgIG51bV9vcGVuIDo9ICFudW1fb3BlbiArIDE7XG4gICAgICAgIHVwb24gKGNvcHlfdG9fdGFpbCB0IHRhaWwpIGNsb3NlO1xuICAgICAgICByZXR1cm4gKCkpXG4gICAgaW5cbiAgICB1cG9uIG91dGVyX2Nsb3NlZCBjbG9zZSlcbjs7XG5cbmxldCB0YWtlX3VudGlsIHQgZCA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICB1cG9uXG4gICAgICAgIChjaG9vc2UgWyBjaG9pY2UgZCAoZnVuICgpIC0+IGBTdG9wKTsgY2hvaWNlIChuZXh0IHQpIChmdW4geiAtPiBgTmV4dCB6KSBdKVxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IGBTdG9wIHwgYE5leHQgTmlsIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgICAgICB8IGBOZXh0IChDb25zICh4LCB0KSkgLT5cbiAgICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgeDtcbiAgICAgICAgICAgIGxvb3AgdClcbiAgICBpblxuICAgIGxvb3AgdClcbjs7XG5cbmxldCBpdGVyX2R1cmFibHknIHQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBuZXh0IHRcbiAgICAgID4+PiBmdW5jdGlvblxuICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCAoKVxuICAgICAgfCBDb25zICh4LCB0KSAtPlxuICAgICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgICAgICB+cmVzdDpgUmFpc2VcbiAgICAgICAgICAoZnVuICgpIC0+IGYgeClcbiAgICAgICAgPj4+IGZ1biB6IC0+XG4gICAgICAgIGxvb3AgdDtcbiAgICAgICAgKG1hdGNoIHogd2l0aFxuICAgICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgICAgfCBFcnJvciBlIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZSlcbiAgICBpblxuICAgIGxvb3AgdClcbjs7XG5cbmxldCBpdGVyX2R1cmFibHlfcmVwb3J0X2VuZCB0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgbmV4dCB0XG4gICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgIHwgTmlsIC0+IEl2YXIuZmlsbCByZXN1bHQgKClcbiAgICAgIHwgQ29ucyAoeCwgdCkgLT5cbiAgICAgICAgKCogV2UgaW1tZWRpYXRlbHkgY2FsbCBbbG9vcF0sIHRodXMgbWFraW5nIHRoZSBpdGVyIGR1cmFibGUuICBBbnkgZXhjZXB0aW9uc1xuICAgICAgICAgICByYWlzZWQgYnkgW2ZdIHdpbGwgbm90IHByZXZlbnQgdGhlIGxvb3AgZnJvbSBjb250aW51aW5nLCBhbmQgd2lsbCBnbyB0byB0aGVcbiAgICAgICAgICAgbW9uaXRvciBvZiB3aG9tZXZlciBjYWxsZWQgW2l0ZXJfZHVyYWJseV9yZXBvcnRfZW5kXS4gKilcbiAgICAgICAgbG9vcCB0O1xuICAgICAgICBmIHhcbiAgICBpblxuICAgIGxvb3AgdClcbjs7XG5cbmxldCBpdGVyX2R1cmFibHkgdCB+ZiA9IGRvbid0X3dhaXRfZm9yIChpdGVyX2R1cmFibHlfcmVwb3J0X2VuZCB0IH5mKVxuXG5sZXQgb2ZfZnVuIGYgPVxuICB1bmZvbGQgKCkgfmY6KGZ1biAoKSAtPlxuICAgIGxldCVtYXAgYSA9IGYgKCkgaW5cbiAgICBTb21lIChhLCAoKSkpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgKCdhLCAncGVybWlzc2lvbikgdCA9ICgnYSwgJ3Blcm1pc3Npb24pIFR5cGVzLkJ2YXIudFxuXG50eXBlICdhIHJlcHIgPSAnYSBUeXBlcy5CdmFyLnJlcHIgPVxuICB7IG11dGFibGUgaGFzX2FueV93YWl0ZXJzIDogYm9vbFxuICA7IG11dGFibGUgaXZhciA6ICdhIEl2YXIudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgXyB0ID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gcmVwciBbJXNleHBfb2Y6IF8gcmVwcl0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHJlcHIgZiBpblxuICAgIEZpZWxkc19vZl9yZXByLml0ZXJcbiAgICAgIH5oYXNfYW55X3dhaXRlcnM6XG4gICAgICAgIChjaGVjayAoZnVuIGhhc19hbnlfd2FpdGVycyAtPlxuICAgICAgICAgICBpZiBJdmFyLmhhc19oYW5kbGVycyByZXByLml2YXIgdGhlbiBhc3NlcnQgaGFzX2FueV93YWl0ZXJzKSlcbiAgICAgIH5pdmFyOlxuICAgICAgICAoY2hlY2sgKGZ1biBpdmFyIC0+XG4gICAgICAgICAgIEl2YXIuaW52YXJpYW50IGludmFyaWFudF9hIGl2YXI7XG4gICAgICAgICAgIGFzc2VydCAoSXZhci5pc19lbXB0eSBpdmFyKSkpKVxuOztcblxubGV0IHNleHBfb2ZfdCBfIF8gdCA9XG4gIGxldCB7IGhhc19hbnlfd2FpdGVyczsgaXZhciA9IF8gfSA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gICgqIFdlIGRvbid0IHNob3cgW2l2YXJdIGJlY2F1c2UgaXQncyBhbHdheXMgZW1wdHkuICopXG4gIFslbWVzc2FnZSAoaGFzX2FueV93YWl0ZXJzIDogYm9vbCldXG47O1xuXG5pbmNsdWRlIFNjaGVkdWxlcjEuQnZhclxuXG5sZXQgYnJvYWRjYXN0IHQgYSA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgaWYgcmVwci5oYXNfYW55X3dhaXRlcnNcbiAgdGhlbiAoXG4gICAgcmVwci5oYXNfYW55X3dhaXRlcnMgPC0gZmFsc2U7XG4gICAgSXZhci5maWxsIHJlcHIuaXZhciBhO1xuICAgIHJlcHIuaXZhciA8LSBJdmFyLmNyZWF0ZSAoKSlcbjs7XG5cbmxldCB3YWl0IHQgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIHJlcHIuaGFzX2FueV93YWl0ZXJzIDwtIHRydWU7XG4gIEl2YXIucmVhZCByZXByLml2YXJcbjs7XG5cbmxldCBoYXNfYW55X3dhaXRlcnMgdCA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgcmVwci5oYXNfYW55X3dhaXRlcnNcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxuXG5sZXQgZGVidWcgPSBEZWJ1Zy5jbG9ja1xuXG5tb2R1bGUgQWxhcm0gPSBUaW1pbmdfd2hlZWwuQWxhcm1cbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcblxubGV0IHVwb24gPSBEZWZlcnJlZC51cG9uXG5sZXQgY2hvb3NlID0gRGVmZXJyZWQuY2hvb3NlXG5sZXQgY2hvaWNlID0gRGVmZXJyZWQuY2hvaWNlXG5sZXQgKCA+Pj4gKSA9IHVwb25cblxubW9kdWxlIFQxID0gc3RydWN0XG4gIGluY2x1ZGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLlQxXG5cbiAgKCogV2UgZG9uJ3QgaW5jbHVkZSB0aGUgW2lkXSBpbiB0aGUgc2V4cCBiZWNhdXNlIHRoZSB1c2VyIChyaWdodGx5KSBjYW4ndCBjb250cm9sIGl0LCBzb1xuICAgICBpdCdzIGhhcmQgdG8gbWFrZSBpdCBkZXRlcm1pbmlzdGljIGluIHRlc3RzLiAqKVxuICBsZXQgc2V4cF9vZl90XG4gICAgICAgIF9cbiAgICAgICAgeyBpZCA9IF9cbiAgICAgICAgOyBhZHZhbmNlX2Vycm9ycyA9IF9cbiAgICAgICAgOyBhbV9hZHZhbmNpbmcgPSBfXG4gICAgICAgIDsgZXZlbnRzXG4gICAgICAgIDsgZmlyZWRfZXZlbnRzID0gX1xuICAgICAgICA7IGhhbmRsZV9maXJlZCA9IF9cbiAgICAgICAgOyBpc193YWxsX2Nsb2NrXG4gICAgICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IF9cbiAgICAgICAgOyBzY2hlZHVsZXIgPSBfXG4gICAgICAgIH1cbiAgICA9XG4gICAgaWYgaXNfd2FsbF9jbG9ja1xuICAgIHRoZW4gWyVtZXNzYWdlIFwiPHdhbGxfY2xvY2s+XCJdXG4gICAgZWxzZVxuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIChpc193YWxsX2Nsb2NrIDogYm9vbClcbiAgICAgICAgICAoKiBXZSBkb24ndCBkaXNwbGF5IHRoZSBbSm9iLnRdcyBpbiBbZXZlbnRzXSBiZWNhdXNlIHRob3NlIGFyZVxuICAgICAgICAgICAgIHBvb2wgcG9pbnRlcnMsIHdoaWNoIGFyZSB1bmluZm9ybWF0aXZlLiAqKVxuICAgICAgICAgIChldmVudHMgOiBfIFRpbWluZ193aGVlbC50KV1cbiAgOztcbmVuZFxuXG5vcGVuIFQxXG5cbm1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlYWRfd3JpdGUgVDEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5lbmRcblxudHlwZSB0ID0gcmVhZCBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xubGV0IHJlYWRfb25seSAodCA6IFs+IHJlYWQgXSBUMS50KSA9ICh0IDo+IHQpXG5sZXQgY3JlYXRlID0gU2NoZWR1bGVyLmNyZWF0ZV90aW1lX3NvdXJjZVxubGV0IHdhbGxfY2xvY2sgPSBTY2hlZHVsZXIud2FsbF9jbG9ja1xubGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiB0LmV2ZW50c1xubGV0IGlzX3dhbGxfY2xvY2sgdCA9IHQuaXNfd2FsbF9jbG9ja1xubGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IHQuZXZlbnRzXG5sZXQgdGltaW5nX3doZWVsX25vdyB0ID0gVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50c1xubGV0IGlkIHQgPSB0LmlkXG5cbm1vZHVsZSBJZCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5JZFxuXG5sZXQgbm93IHQgPVxuICBpZiB0LmlzX3dhbGxfY2xvY2tcbiAgdGhlblxuICAgICgqIEZvciB0aGUgd2FsbC1jbG9jayB0aW1lLXNvdXJjZSwgd2UgdXNlIFtUaW1lX25zLm5vdyAoKV0gcmF0aGVyIHRoYW5cbiAgICAgICBbVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50c10uICBUaGUgbGF0dGVyIGlzIG9ubHkgdXBkYXRlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaFxuICAgICAgIGN5Y2xlLiAgVGhlcmUgY2FuIGJlIHN1YnN0YW50aWFsIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIHdoZW4gcGVvcGxlIGRvIGxvbmdcbiAgICAgICBydW5uaW5nIGNvbXB1dGF0aW9ucyBvciBtaXggYmxvY2tpbmcgY29kZSB3aXRoIGFzeW5jLiAgQW5kIGh1bWFucyBleHBlY3QgdGhhdFxuICAgICAgIHdhbGwtY2xvY2sgdGltZSBpcyBiYXNlZCBvbiBbVGltZS5ub3ddLCBub3Qgc29tZSBhcnRpZmFjdCBvZiBhc3luY1xuICAgICAgIGltcGxlbWVudGF0aW9uLiAqKVxuICAgIFRpbWVfbnMubm93ICgpXG4gIGVsc2UgdGltaW5nX3doZWVsX25vdyB0XG47O1xuXG4oKiBXZSBwcmVhbGxvY2F0ZSBbc2VuZF9leG5dIHRvIGF2b2lkIGFsbG9jYXRpbmcgaXQgb24gZWFjaCBjYWxsIHRvIFthZHZhbmNlX2Nsb2NrXS4gKilcbmxldCBzZW5kX2V4biA9IFNvbWUgTW9uaXRvci5zZW5kX2V4blxubGV0IGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmFkdmFuY2VfY2xvY2sgdCB+dG9fIH5zZW5kX2V4blxubGV0IGFkdmFuY2VfZGlyZWN0bHlfYnkgdCBieSA9IGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOihUaW1lX25zLmFmdGVyIChub3cgdCkgYnkpXG5sZXQgYWR2YW5jZSA9IGFkdmFuY2VfZGlyZWN0bHlcbmxldCBhZHZhbmNlX2J5ID0gYWR2YW5jZV9kaXJlY3RseV9ieVxubGV0IGZpcmVfcGFzdF9hbGFybXMgdCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5maXJlX3Bhc3RfYWxhcm1zIHQgfnNlbmRfZXhuXG5sZXQgeWllbGQgdCA9IEJ2YXIud2FpdCAoU2NoZWR1bGVyLnlpZWxkIHQuc2NoZWR1bGVyKVxubGV0IGNhbl9ydW5fYV9qb2IgdCA9IFNjaGVkdWxlci5udW1fcGVuZGluZ19qb2JzIHQgPiAwIHx8IEJ2YXIuaGFzX2FueV93YWl0ZXJzIHQueWllbGRcblxubW9kdWxlIEVhZ2VyX2RlZmVycmVkID0gc3RydWN0XG4gIGxldCBiaW5kX3VuaXQgdCB+ZiA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCB0XG4gICAgdGhlbiBmICgpXG4gICAgZWxzZSAoXG4gICAgICBsZXQlYmluZCAoKSA9IHQgaW5cbiAgICAgIGYgKCkpXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID1cbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHRcbiAgICB0aGVuIHJldHVybiAoZiAoRGVmZXJyZWQudmFsdWVfZXhuIHQpKVxuICAgIGVsc2UgRGVmZXJyZWQubWFwIHQgfmZcbiAgOztcbmVuZFxuXG5sZXQgYWR2YW5jZV9ieV9hbGFybXMgP3dhaXRfZm9yIHQgfnRvXyA9XG4gIGxldCBydW5fcXVldWVkX2FsYXJtcyAoKSA9XG4gICAgKCogRXZlcnkgdGltZSB3ZSB3YW50IHRvIHJ1biBxdWV1ZWQgYWxhcm1zIHdlIG5lZWQgdG8geWllbGQgY29udHJvbCBiYWNrIHRvIHRoZVxuICAgICAgIFtBc3luYy5TY2hlZHVsZXJdIGFuZCBbd2FpdF9mb3JdIGFueSBsb2dpYyB0aGF0IGlzIHN1cHBvc2VkIHRvIGZpbmlzaCBhdCB0aGlzIHRpbWVcbiAgICAgICBiZWZvcmUgYWR2YW5jaW5nLiAgSWYgbm8gW3dhaXRfZm9yXSBsb2dpYyBpcyBzcGVjaWZpZWQgd2UgY2FuIHNpbXBseSB5aWVsZCBjb250cm9sXG4gICAgICAgYnkgaW52b2tpbmcgW3lpZWxkIHRdLCB3aGljaCBlbnF1ZXVlcyBhbm90aGVyIGpvYiBhdCB0aGUgZW5kIG9mIHRoZSBzY2hlZHVsZXIgam9iXG4gICAgICAgcXVldWUgc28gYWxhcm0gam9icyBoYXZlIHRoZSBvcHBvcnR1bml0eSB0byBydW4gYmVmb3JlIHdlIGFkdmFuY2UuICopXG4gICAgbWF0Y2ggd2FpdF9mb3Igd2l0aFxuICAgIHwgTm9uZSAtPiB5aWVsZCB0XG4gICAgfCBTb21lIGYgLT4gZiAoKVxuICBpblxuICBsZXQgb25lX3N0ZXAgKCkgPVxuICAgIGlmIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5hbnlfZmlyZWRfZXZlbnRzX3RvX3J1biB0XG4gICAgdGhlbiBub3cgdCwgYGNvbnRpbnVlXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBUaW1pbmdfd2hlZWwubWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQuZXZlbnRzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0b18sIGBmaW5pc2hcbiAgICAgIHwgU29tZSBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgLT5cbiAgICAgICAgaWYgVGltZV9ucy4oID49ICkgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHRvX1xuICAgICAgICB0aGVuIHRvXywgYGZpbmlzaFxuICAgICAgICBlbHNlIG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCwgYGNvbnRpbnVlKVxuICBpblxuICBsZXQgcmVjIHdhbGtfYWxhcm1zICgpID1cbiAgICBsZXQgYWR2YW5jZV90bywgbmV4dCA9IG9uZV9zdGVwICgpIGluXG4gICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b186YWR2YW5jZV90bztcbiAgICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICAgRWFnZXJfZGVmZXJyZWQuYmluZF91bml0IChydW5fcXVldWVkX2FsYXJtcyAoKSkgfmY6KGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IGBmaW5pc2ggLT4gcmV0dXJuICgpXG4gICAgICB8IGBjb250aW51ZSAtPiB3YWxrX2FsYXJtcyAoKSlcbiAgaW5cbiAgKCogVGhpcyBmaXJzdCBbcnVuX3F1ZXVlZF9hbGFybXNdIGNhbGwgYWxsb3dzIFtDbG9ja19ucy5ldmVyeV0gdGhlIG9wcG9ydHVuaXR5IHRvIHJ1blxuICAgICBpdHMgY29udGludWF0aW9uIGRlZmVycmVkcyBzbyB0aGF0IHRoZXkgY2FuIHJlc2NoZWR1bGUgYWxhcm1zLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHlcbiAgICAgdXNlZnVsIGluIG91ciBcImFkdmFuY2UgaGl0cyBpbnRlcm1lZGlhdGUgYWxhcm1zXCIgdW5pdCB0ZXN0IGJlbG93LCBidXQgbGlrZWx5IHVzZWZ1bFxuICAgICBpbiBvdGhlciBjYXNlcyB3aGVyZSBbZXZlcnldIGlzIHN5bmNocm9ub3VzbHkgZm9sbG93ZWQgYnkgW2FkdmFuY2VdLiAqKVxuICBsZXQlYmluZCAoKSA9IHJ1bl9xdWV1ZWRfYWxhcm1zICgpIGluXG4gIHdhbGtfYWxhcm1zICgpXG47O1xuXG5sZXQgYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfdGltaW5nX3doZWVsX2ludGVydmFsID93YWl0X2ZvciB0IH50b18gPVxuICBsZXQgcnVuX3F1ZXVlZF9hbGFybXMgKCkgPVxuICAgICgqIEV2ZXJ5IHRpbWUgd2Ugd2FudCB0byBydW4gcXVldWVkIGFsYXJtcyB3ZSBuZWVkIHRvIHlpZWxkIGNvbnRyb2wgYmFjayB0byB0aGVcbiAgICAgICBbQXN5bmMuU2NoZWR1bGVyXSBhbmQgW3dhaXRfZm9yXSBhbnkgbG9naWMgdGhhdCBpcyBzdXBwb3NlZCB0byBmaW5pc2ggYXQgdGhpcyB0aW1lXG4gICAgICAgYmVmb3JlIGFkdmFuY2luZy4gIElmIG5vIFt3YWl0X2Zvcl0gbG9naWMgaXMgc3BlY2lmaWVkIHdlIGNhbiBzaW1wbHkgeWllbGQgY29udHJvbFxuICAgICAgIGJ5IGludm9raW5nIFt5aWVsZCB0XSwgd2hpY2ggZW5xdWV1ZXMgYW5vdGhlciBqb2IgYXQgdGhlIGVuZCBvZiB0aGUgc2NoZWR1bGVyIGpvYlxuICAgICAgIHF1ZXVlIHNvIGFsYXJtIGpvYnMgaGF2ZSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuIGJlZm9yZSB3ZSBhZHZhbmNlLiAqKVxuICAgIG1hdGNoIHdhaXRfZm9yIHdpdGhcbiAgICB8IE5vbmUgLT4geWllbGQgdFxuICAgIHwgU29tZSBmIC0+IGYgKClcbiAgaW5cbiAgbGV0IGZpbmlzaCAoKSA9XG4gICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b187XG4gICAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAgICgqIHNvIHRoYXQgYWxhcm1zIHNjaGVkdWxlZCBhdCBvciBiZWZvcmUgW3RvX10gZmlyZSAqKVxuICAgIHJ1bl9xdWV1ZWRfYWxhcm1zICgpXG4gIGluXG4gIGxldCByZWMgd2Fsa19hbGFybXMgKCkgPVxuICAgIG1hdGNoIG5leHRfYWxhcm1fZmlyZXNfYXQgdCB3aXRoXG4gICAgfCBOb25lIC0+IGZpbmlzaCAoKVxuICAgIHwgU29tZSBuZXh0X2FsYXJtX2ZpcmVzX2F0IC0+XG4gICAgICBpZiBUaW1lX25zLiggPj0gKSBuZXh0X2FsYXJtX2ZpcmVzX2F0IHRvX1xuICAgICAgdGhlbiBmaW5pc2ggKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXzooVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdC5ldmVudHMpO1xuICAgICAgICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICAgICAgIGxldCBxdWV1ZWRfYWxhcm1zX3JhbiA9IHJ1bl9xdWV1ZWRfYWxhcm1zICgpIGluXG4gICAgICAgIEVhZ2VyX2RlZmVycmVkLmJpbmRfdW5pdCBxdWV1ZWRfYWxhcm1zX3JhbiB+Zjp3YWxrX2FsYXJtcylcbiAgaW5cbiAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAoKiBUaGlzIGZpcnN0IFtydW5fcXVldWVkX2FsYXJtc10gY2FsbCBhbGxvd3MgW0Nsb2NrX25zLmV2ZXJ5XSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuXG4gICAgIGl0cyBjb250aW51YXRpb24gZGVmZXJyZWRzIHNvIHRoYXQgdGhleSBjYW4gcmVzY2hlZHVsZSBhbGFybXMuICBUaGlzIGlzIHBhcnRpY3VsYXJseVxuICAgICB1c2VmdWwgaW4gb3VyIFwiYWR2YW5jZSBoaXRzIGludGVybWVkaWF0ZSBhbGFybXNcIiB1bml0IHRlc3QgYmVsb3csIGJ1dCBsaWtlbHkgdXNlZnVsXG4gICAgIGluIG90aGVyIGNhc2VzIHdoZXJlIFtldmVyeV0gaXMgc3luY2hyb25vdXNseSBmb2xsb3dlZCBieSBbYWR2YW5jZV0uICopXG4gIGxldCViaW5kICgpID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgd2Fsa19hbGFybXMgKClcbjs7XG5cbmxldCBhZHZhbmNlX2J5X2FsYXJtc19ieSA/d2FpdF9mb3IgdCBieSA9XG4gIGFkdmFuY2VfYnlfYWxhcm1zID93YWl0X2ZvciB0IH50b186KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBieSlcbjs7XG5cbmxldCBzcGFuX3RvX3RpbWUgdCBzcGFuID0gVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW5cblxubGV0IHNjaGVkdWxlX2pvYiB0IH5hdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBsZXQgYWxhcm0gPVxuICAgIFRpbWluZ193aGVlbC5hZGRcbiAgICAgIHQuZXZlbnRzXG4gICAgICB+YXRcbiAgICAgIChKb2Jfb3JfZXZlbnQub2Zfam9iIChTY2hlZHVsZXIuY3JlYXRlX2pvYiB0LnNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGEpKVxuICBpblxuICAobWF0Y2ggdC5zY2hlZHVsZXIuZXZlbnRfYWRkZWRfaG9vayB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmIC0+IGYgYXQpO1xuICBhbGFybVxuOztcblxubGV0IHJ1bl9hdF9pbnRlcm5hbCB0IHRpbWUgZiBhID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdC5zY2hlZHVsZXIgaW5cbiAgaWYgVGltZV9ucy4oID4gKSB0aW1lIChUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzKVxuICB0aGVuIHNjaGVkdWxlX2pvYiB0IH5hdDp0aW1lIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuICBlbHNlIChcbiAgICBTY2hlZHVsZXIuZW5xdWV1ZSB0LnNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gICAgQWxhcm0ubnVsbCAoKSlcbjs7XG5cbmxldCBydW5fYXQgdCB0aW1lIGYgYSA9IGlnbm9yZSAocnVuX2F0X2ludGVybmFsIHQgdGltZSBmIGEgOiBfIEFsYXJtLnQpXG5sZXQgcnVuX2FmdGVyIHQgc3BhbiBmIGEgPSBydW5fYXQgdCAoc3Bhbl90b190aW1lIHQgc3BhbikgZiBhXG5cbmxldCBhdCA9XG4gIGxldCBmaWxsIHJlc3VsdCA9IEl2YXIuZmlsbCByZXN1bHQgKCkgaW5cbiAgZnVuIHQgdGltZSAtPlxuICAgIGlmIFRpbWVfbnMuKCA8PSApIHRpbWUgKFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHMpXG4gICAgdGhlbiByZXR1cm4gKClcbiAgICBlbHNlIChcbiAgICAgIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgaWdub3JlIChydW5fYXRfaW50ZXJuYWwgdCB0aW1lIGZpbGwgcmVzdWx0IDogXyBBbGFybS50KTtcbiAgICAgIEl2YXIucmVhZCByZXN1bHQpXG47O1xuXG5sZXQgYWZ0ZXIgdCBzcGFuID0gYXQgdCAoc3Bhbl90b190aW1lIHQgc3BhbilcblxubGV0IHJlbW92ZV9hbGFybSB0IGFsYXJtIDogdW5pdCA9XG4gIGxldCBqb2Jfb3JfZXZlbnQgPSBBbGFybS52YWx1ZSB0LmV2ZW50cyBhbGFybSBpblxuICAobGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gICBsZXQgKEsgaykgPSBraW5kIGpvYl9vcl9ldmVudCBpblxuICAgbWF0Y2ggaywgcHJvamVjdCBrIGpvYl9vcl9ldmVudCB3aXRoXG4gICB8IEpvYiwgam9iIC0+IFNjaGVkdWxlci5mcmVlX2pvYiB0LnNjaGVkdWxlciBqb2JcbiAgIHwgRXZlbnQsIF8gLT5cbiAgICAgKCogVGhpcyBpcyB1bnJlYWNoYWJsZSBiZWNhdXNlIFthbGFybV0gb25seSBldmVyIGNvbWVzIGZyb20gW0V2ZW50LmFsYXJtXSB3aGljaCBvbmx5XG4gICAgICAgIGV2ZXIgZ2V0cyBwb3B1bGF0ZWQgYnkgYSBjYWxsIHRvIFtzY2hlZHVsZV9qb2JdLiAqKVxuICAgICBhc3NlcnQgZmFsc2UpO1xuICBUaW1pbmdfd2hlZWwucmVtb3ZlIHQuZXZlbnRzIGFsYXJtXG47O1xuXG5sZXQgcmVtb3ZlX2FsYXJtX2lmX3NjaGVkdWxlZCB0IGFsYXJtID1cbiAgaWYgVGltaW5nX3doZWVsLm1lbSB0LmV2ZW50cyBhbGFybSB0aGVuIHJlbW92ZV9hbGFybSB0IGFsYXJtXG47O1xuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZpcmVkID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgeyBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgQWxhcm0udFxuICAgIDsgbXV0YWJsZSBmaXJlIDogdW5pdCAtPiB1bml0XG4gICAgOyAoKiBBcyBsb25nIGFzIFtJdmFyLmlzX2VtcHR5IGZpcmVkXSwgd2UgaGF2ZSBub3QgeWV0IGNvbW1pdHRlZCB0byB3aGV0aGVyIHRoZSBldmVudFxuICAgICAgICAgd2lsbCBoYXBwZW4gb3IgYmUgYWJvcnRlZC4gIFdoZW4gW0l2YXIuaXNfZW1wdHkgZmlyZWRdLCB0aGUgYWxhcm0gbWF5IG9yIG1heSBub3RcbiAgICAgICAgIGJlIGluIHRoZSB0aW1pbmcgd2hlZWwgLS0gaWYgaXQgaXNuJ3QsIHRoZW4gdGhlcmUncyBhIGpvYiBpbiBBc3luYydzIGpvYiBxdWV1ZVxuICAgICAgICAgdGhhdCB3aWxsIGZpcmUgdGhlIGV2ZW50LCB1bmxlc3MgaXQgaXMgYWJvcnRlZCBiZWZvcmUgdGhhdCBqb2IgY2FuIHJ1bi4gKilcbiAgICAgIGZpcmVkIDogKCdhLCAnaCkgRmlyZWQudCBJdmFyLnRcbiAgICA7ICgqIFtudW1fZmlyZXNfdG9fc2tpcF0gaXMgdXNlZCB0byByZXNjaGVkdWxlIGV2ZW50cyB0aGF0IGhhdmUgZmlyZWQgYW5kIGVudGVyZWQgdGhlXG4gICAgICAgICBBc3luYyBqb2IgcXVldWUsIGJ1dCBoYXZlIG5vdCB5ZXQgcnVuLiAgVGhvc2Ugam9icyBvbmx5IHJ1biBpZiBbbnVtX2ZpcmVzX3RvX3NraXBcbiAgICAgICAgID0gMF0sIGFuZCBvdGhlcndpc2UganVzdCBkZWNyZW1lbnQgaXQuICBTbywgdG8gcmVzY2hlZHVsZSBhbiBldmVudCBpbiBzdWNoIGFcbiAgICAgICAgIHN0YXRlLCB3ZSBpbmNyZW1lbnQgW251bV9maXJlc190b19za2lwXSBhbmQgYWRkIGEgbmV3IGFsYXJtIHRvIHRoZSB0aW1pbmdcbiAgICAgICAgIHdoZWVsLiAqKVxuICAgICAgbXV0YWJsZSBudW1fZmlyZXNfdG9fc2tpcCA6IGludFxuICAgIDsgKCogW3NjaGVkdWxlZF9hdF0gaXMgdGhlIHRpbWUgYXQgd2hpY2ggW3RdIGhhcyBtb3N0IHJlY2VudGx5IGJlZW4gc2NoZWR1bGVkIHRvIGZpcmUuXG4gICAgICAgICBXaGlsZSBbdC5hbGFybV0gaXMgc3RpbGwgaW4gdGhlIHRpbWluZyB3aGVlbCwgdGhpcyBpcyB0aGUgc2FtZSBhcyBbQWxhcm0uYXRcbiAgICAgICAgIHQuYWxhcm1dLiAqKVxuICAgICAgbXV0YWJsZSBzY2hlZHVsZWRfYXQgOiBUaW1lX25zLnRcbiAgICA7IHRpbWVfc291cmNlIDogU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICB0eXBlIHRfdW5pdCA9ICh1bml0LCB1bml0KSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGZpcmVkIHQgPSBJdmFyLnJlYWQgdC5maXJlZFxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgaW52YXJpYW50X2ggdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGV2ZW50cyA9IHQudGltZV9zb3VyY2UuZXZlbnRzIGluXG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5hbGFybTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBhbGFybSAtPlxuICAgICAgICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmZpcmVkXG4gICAgICAgICAgICAgdGhlbiBhc3NlcnQgKG5vdCAoVGltaW5nX3doZWVsLm1lbSBldmVudHMgYWxhcm0pKVxuICAgICAgICAgICAgIGVsc2UgaWYgVGltaW5nX3doZWVsLm1lbSBldmVudHMgYWxhcm1cbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAoSm9iX29yX2V2ZW50LmlzX2pvYiAoQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSkpKVxuICAgICAgICB+ZmlyZTppZ25vcmVcbiAgICAgICAgfmZpcmVkOlxuICAgICAgICAgIChjaGVjayAoZnVuIChmaXJlZCA6IF8gRmlyZWQudCBJdmFyLnQpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoSXZhci5yZWFkIGZpcmVkKSB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IGludmFyaWFudF9hIGFcbiAgICAgICAgICAgICB8IFNvbWUgKEhhcHBlbmVkIGgpIC0+IGludmFyaWFudF9oIGgpKVxuICAgICAgICB+bnVtX2ZpcmVzX3RvX3NraXA6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbnVtX2ZpcmVzX3RvX3NraXAgLT4gYXNzZXJ0IChudW1fZmlyZXNfdG9fc2tpcCA+PSAwKSkpXG4gICAgICAgIH5zY2hlZHVsZWRfYXQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gc2NoZWR1bGVkX2F0IC0+XG4gICAgICAgICAgICAgaWYgVGltaW5nX3doZWVsLm1lbSBldmVudHMgdC5hbGFybVxuICAgICAgICAgICAgIHRoZW4gWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XSBzY2hlZHVsZWRfYXQgfmV4cGVjdDooQWxhcm0uYXQgZXZlbnRzIHQuYWxhcm0pKSlcbiAgICAgICAgfnRpbWVfc291cmNlOmlnbm9yZSlcbiAgOztcblxuICBtb2R1bGUgU3RhdHVzID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgICAgfCBTY2hlZHVsZWRfYXQgb2YgVGltZV9ucy50XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHN0YXR1cyB0IDogXyBTdGF0dXMudCA9XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoSXZhci5yZWFkIHQuZmlyZWQpIHdpdGhcbiAgICB8IE5vbmUgLT4gU2NoZWR1bGVkX2F0IHQuc2NoZWR1bGVkX2F0XG4gICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IEFib3J0ZWQgYVxuICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gSGFwcGVuZWQgaFxuICA7O1xuXG4gIG1vZHVsZSBBYm9ydF9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBPa1xuICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgb2YgJ2FcbiAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCBvZiAnaFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBhYm9ydCB0IGEgOiBfIEFib3J0X3Jlc3VsdC50ID1cbiAgICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcIlRpbWVfc291cmNlLkV2ZW50LmFib3J0XCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChmaXJlZCB0KSB3aXRoXG4gICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IFByZXZpb3VzbHlfYWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBQcmV2aW91c2x5X2hhcHBlbmVkIGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIEl2YXIuZmlsbCB0LmZpcmVkIChBYm9ydGVkIGEpO1xuICAgICAgcmVtb3ZlX2FsYXJtX2lmX3NjaGVkdWxlZCB0LnRpbWVfc291cmNlIHQuYWxhcm07XG4gICAgICBPa1xuICA7O1xuXG4gIGxldCBhYm9ydF9leG4gdCBhID1cbiAgICBtYXRjaCBhYm9ydCB0IGEgd2l0aFxuICAgIHwgT2sgLT4gKClcbiAgICB8IFByZXZpb3VzbHlfaGFwcGVuZWQgXyAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJDbG9jay5FdmVudC5hYm9ydF9leG4gZmFpbGVkIHRvIGFib3J0IGV2ZW50IHRoYXQgcHJldmlvdXNseSBoYXBwZW5lZFwiXVxuICAgIHwgUHJldmlvdXNseV9hYm9ydGVkIF8gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiQ2xvY2suRXZlbnQuYWJvcnRfZXhuIGZhaWxlZCB0byBhYm9ydCBldmVudCB0aGF0IHByZXZpb3VzbHkgYWJvcnRlZFwiXVxuICA7O1xuXG4gIGxldCBhYm9ydF9pZl9wb3NzaWJsZSB0IGEgPSBpZ25vcmUgKGFib3J0IHQgYSA6IF8gQWJvcnRfcmVzdWx0LnQpXG4gIGxldCBzY2hlZHVsZSB0ID0gdC5hbGFybSA8LSBydW5fYXRfaW50ZXJuYWwgdC50aW1lX3NvdXJjZSB0LnNjaGVkdWxlZF9hdCB0LmZpcmUgKClcblxuICBtb2R1bGUgUmVzY2hlZHVsZV9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBPa1xuICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgb2YgJ2FcbiAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCBvZiAnaFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCByZXNjaGVkdWxlX2F0IHQgYXQgOiBfIFJlc2NoZWR1bGVfcmVzdWx0LnQgPVxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgRGVidWcubG9nIFwiVGltZV9zb3VyY2UuRXZlbnQucmVzY2hlZHVsZV9hdFwiICh0LCBhdCkgWyVzZXhwX29mOiAoXywgXykgdCAqIFRpbWVfbnMudF07XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoZmlyZWQgdCkgd2l0aFxuICAgIHwgU29tZSAoQWJvcnRlZCBhKSAtPiBQcmV2aW91c2x5X2Fib3J0ZWQgYVxuICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gUHJldmlvdXNseV9oYXBwZW5lZCBoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgZXZlbnRzID0gdC50aW1lX3NvdXJjZS5ldmVudHMgaW5cbiAgICAgIGxldCBpc19pbl90aW1pbmdfd2hlZWwgPSBUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyB0LmFsYXJtIGluXG4gICAgICBsZXQgYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlX2Z1dHVyZSA9XG4gICAgICAgIFRpbWVfbnMuKCA+ICkgYXQgKFRpbWluZ193aGVlbC5ub3cgZXZlbnRzKVxuICAgICAgaW5cbiAgICAgIHQuc2NoZWR1bGVkX2F0IDwtIGF0O1xuICAgICAgKG1hdGNoIGFtX3RyeWluZ190b19yZXNjaGVkdWxlX2luX3RoZV9mdXR1cmUsIGlzX2luX3RpbWluZ193aGVlbCB3aXRoXG4gICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gKClcbiAgICAgICB8IGZhbHNlLCB0cnVlIC0+XG4gICAgICAgICB0LnRpbWVfc291cmNlLmhhbmRsZV9maXJlZCB0LmFsYXJtO1xuICAgICAgICAgVGltaW5nX3doZWVsLnJlbW92ZSBldmVudHMgdC5hbGFybVxuICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT5cbiAgICAgICAgIHQubnVtX2ZpcmVzX3RvX3NraXAgPC0gdC5udW1fZmlyZXNfdG9fc2tpcCArIDE7XG4gICAgICAgICBzY2hlZHVsZSB0XG4gICAgICAgfCB0cnVlLCB0cnVlIC0+IFRpbWluZ193aGVlbC5yZXNjaGVkdWxlIGV2ZW50cyB0LmFsYXJtIH5hdCk7XG4gICAgICBPa1xuICA7O1xuXG4gIGxldCByZXNjaGVkdWxlX2FmdGVyIHQgc3BhbiA9IHJlc2NoZWR1bGVfYXQgdCAoc3Bhbl90b190aW1lIHQudGltZV9zb3VyY2Ugc3BhbilcblxuICBsZXQgcnVuX2F0IHRpbWVfc291cmNlIHNjaGVkdWxlZF9hdCBmIHogPVxuICAgIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiVGltZV9zb3VyY2UuRXZlbnQucnVuX2F0XCIgc2NoZWR1bGVkX2F0IFslc2V4cF9vZjogVGltZV9ucy50XTtcbiAgICBsZXQgdCA9XG4gICAgICB7IGFsYXJtID0gQWxhcm0ubnVsbCAoKVxuICAgICAgOyBmaXJlID0gaWdub3JlICgqIHNldCBiZWxvdyAqKVxuICAgICAgOyBmaXJlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICA7IG51bV9maXJlc190b19za2lwID0gMFxuICAgICAgOyBzY2hlZHVsZWRfYXRcbiAgICAgIDsgdGltZV9zb3VyY2UgPSByZWFkX29ubHkgdGltZV9zb3VyY2VcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCBmaXJlICgpID1cbiAgICAgICgqIFtmaXJlXSBydW5zIGluIGFuIEFzeW5jIGpvYi4gIFRoZSBldmVudCBtYXkgaGF2ZSBiZWVuIGFib3J0ZWQgYWZ0ZXIgdGhlIGpvYlxuICAgICAgICAgd2FzIGVucXVldWVkLCBzbyBbZmlyZV0gbXVzdCBjaGVjayBbZmlyZWRdLiAqKVxuICAgICAgaWYgSXZhci5pc19lbXB0eSB0LmZpcmVkXG4gICAgICB0aGVuXG4gICAgICAgIGlmIHQubnVtX2ZpcmVzX3RvX3NraXAgPiAwXG4gICAgICAgIHRoZW4gdC5udW1fZmlyZXNfdG9fc2tpcCA8LSB0Lm51bV9maXJlc190b19za2lwIC0gMVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gZiB6IGluXG4gICAgICAgICAgKCogW2Ygel0gbWF5IGhhdmUgYWJvcnRlZCB0aGUgZXZlbnQsIHNvIHdlIG11c3QgY2hlY2sgW2ZpcmVkXSBhZ2Fpbi4gKilcbiAgICAgICAgICBpZiBJdmFyLmlzX2VtcHR5IHQuZmlyZWQgdGhlbiBJdmFyLmZpbGwgdC5maXJlZCAoSGFwcGVuZWQgcmVzdWx0KSlcbiAgICBpblxuICAgIHQuZmlyZSA8LSBmaXJlO1xuICAgIHNjaGVkdWxlIHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBhdCB0aW1lX3NvdXJjZSB0aW1lID0gcnVuX2F0IHRpbWVfc291cmNlIHRpbWUgaWdub3JlICgpXG5cbiAgbGV0IHJ1bl9hZnRlciB0aW1lX3NvdXJjZSBzcGFuIGYgYSA9XG4gICAgcnVuX2F0IHRpbWVfc291cmNlIChzcGFuX3RvX3RpbWUgdGltZV9zb3VyY2Ugc3BhbikgZiBhXG4gIDs7XG5cbiAgbGV0IGFmdGVyIHRpbWVfc291cmNlIHNwYW4gPSBhdCB0aW1lX3NvdXJjZSAoc3Bhbl90b190aW1lIHRpbWVfc291cmNlIHNwYW4pXG5lbmRcblxubGV0IGF0X3RpbWVzID8oc3RvcCA9IERlZmVycmVkLm5ldmVyICgpKSB0IG5leHRfdGltZSA9XG4gIGxldCB0YWlsID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBjaG9vc2VcbiAgICAgIFsgY2hvaWNlIHN0b3AgKGZ1biAoKSAtPiBgU3RvcCk7IGNob2ljZSAoYXQgdCAobmV4dF90aW1lICgpKSkgKGZ1biAoKSAtPiBgVGljaykgXVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgYFN0b3AgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgIHwgYFRpY2sgLT5cbiAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgKCk7XG4gICAgICBsb29wICgpXG4gIGluXG4gIGxvb3AgKCk7XG4gIFRhaWwuY29sbGVjdCB0YWlsXG47O1xuXG5sZXQgYXRfdmFyeWluZ19pbnRlcnZhbHMgP3N0b3AgdCBjb21wdXRlX3NwYW4gPVxuICBhdF90aW1lcyB0ID9zdG9wIChmdW4gKCkgLT4gVGltZV9ucy5hZnRlciAobm93IHQpIChjb21wdXRlX3NwYW4gKCkpKVxuOztcblxubGV0IGF0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgdCBpbnRlcnZhbCA9XG4gIGxldCBzdGFydCA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gbm93IHRcbiAgaW5cbiAgYXRfdGltZXMgdCA/c3RvcCAoZnVuICgpIC0+XG4gICAgVGltZV9ucy5uZXh0X211bHRpcGxlIH5iYXNlOnN0YXJ0IH5hZnRlcjoobm93IHQpIH5pbnRlcnZhbCAoKSlcbjs7XG5cbm1vZHVsZSBDb250aW51ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgSW1tZWRpYXRlbHlcbiAgICB8IEFmdGVyIG9mIFRpbWVfbnMuU3Bhbi50XG4gICAgfCBOZXh0X211bHRpcGxlIG9mIFRpbWVfbnMudCAqIFRpbWVfbnMuU3Bhbi50XG5cbiAgbGV0IGltbWVkaWF0ZWx5ID0gSW1tZWRpYXRlbHlcblxuICBsZXQgYXQgdCB0aW1lX3NvdXJjZSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBJbW1lZGlhdGVseSAtPiBUaW1pbmdfd2hlZWwubm93IHRpbWVfc291cmNlLmV2ZW50c1xuICAgIHwgQWZ0ZXIgc3BhbiAtPiBzcGFuX3RvX3RpbWUgdGltZV9zb3VyY2Ugc3BhblxuICAgIHwgTmV4dF9tdWx0aXBsZSAoYmFzZSwgaW50ZXJ2YWwpIC0+XG4gICAgICBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2UgfmFmdGVyOihub3cgdGltZV9zb3VyY2UpIH5pbnRlcnZhbCAoKVxuICA7O1xuZW5kXG5cbmxldCBydW5fcmVwZWF0ZWRseVxuICAgICAgPyhzdGFydCA9IHJldHVybiAoKSlcbiAgICAgID9zdG9wXG4gICAgICA/KGNvbnRpbnVlX29uX2Vycm9yID0gdHJ1ZSlcbiAgICAgID8oZmluaXNoZWQgPSBJdmFyLmNyZWF0ZSAoKSlcbiAgICAgIHRcbiAgICAgIH5mXG4gICAgICB+Y29udGludWVcbiAgPVxuICBzdGFydFxuICA+Pj4gZnVuICgpIC0+XG4gIGxldCBhbGFybSA9IHJlZiAoQWxhcm0ubnVsbCAoKSkgaW5cbiAgbGV0IHN0b3AgPVxuICAgIG1hdGNoIHN0b3Agd2l0aFxuICAgIHwgTm9uZSAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgIHwgU29tZSBzdG9wIC0+XG4gICAgICB1cG9uIHN0b3AgKGZ1biAoKSAtPlxuICAgICAgICBpZiBUaW1pbmdfd2hlZWwubWVtIHQuZXZlbnRzICFhbGFybVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByZW1vdmVfYWxhcm0gdCAhYWxhcm07XG4gICAgICAgICAgSXZhci5maWxsX2lmX2VtcHR5IGZpbmlzaGVkICgpKSk7XG4gICAgICBzdG9wXG4gIGluXG4gICgqIFtydW5fZl0sIFtjb250aW51ZV9mXSwgYW5kIFtjb250aW51ZV90cnlfd2l0aF0gYXJlIGRlZmluZWQgc28gdGhhdCB3ZSBhbGxvY2F0ZSB0aGVpclxuICAgICBjbG9zdXJlcyBvbmNlLCBub3Qgb25jZSBwZXIgaXRlcmF0aW9uLiAqKVxuICBsZXQgcmVjIHJ1bl9mICgpID1cbiAgICAoKiBCZWZvcmUgY2FsbGluZyBbZl0sIHdlIHN5bmNocm9ub3VzbHkgY2hlY2sgd2hldGhlciBbc3RvcF0gaXMgZGV0ZXJtaW5lZC4gKilcbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHN0b3BcbiAgICB0aGVuIEl2YXIuZmlsbF9pZl9lbXB0eSBmaW5pc2hlZCAoKVxuICAgIGVsc2UgaWYgY29udGludWVfb25fZXJyb3JcbiAgICB0aGVuIE1vbml0b3IudHJ5X3dpdGggZiB+cnVuOmBOb3cgfnJlc3Q6YFJhaXNlID4+PiBjb250aW51ZV90cnlfd2l0aFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGQgPSBmICgpIGluXG4gICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGQgdGhlbiBjb250aW51ZV9mICgpIGVsc2UgZCA+Pj4gY29udGludWVfZilcbiAgYW5kIGNvbnRpbnVlX2YgKCkgPVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgIHRoZW4gSXZhci5maWxsX2lmX2VtcHR5IGZpbmlzaGVkICgpXG4gICAgZWxzZSBhbGFybSA6PSBydW5fYXRfaW50ZXJuYWwgdCAoQ29udGludWUuYXQgY29udGludWUgdCkgcnVuX2YgKClcbiAgYW5kIGNvbnRpbnVlX3RyeV93aXRoIG9yX2Vycm9yID1cbiAgICAobWF0Y2ggb3JfZXJyb3Igd2l0aFxuICAgICB8IE9rICgpIC0+ICgpXG4gICAgIHwgRXJyb3IgZXJyb3IgLT4gTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBlcnJvcik7XG4gICAgY29udGludWVfZiAoKVxuICBpblxuICBydW5fZiAoKVxuOztcblxubGV0IGV2ZXJ5JyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCB0IHNwYW4gZiA9XG4gIGlmIFRpbWVfbnMuU3Bhbi4oIDw9ICkgc3BhbiBUaW1lX25zLlNwYW4uemVyb1xuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZV9zb3VyY2UuZXZlcnkgZ290IG5vbnBvc2l0aXZlIHNwYW5cIiAoc3BhbiA6IFRpbWVfbnMuU3Bhbi50KV07XG4gIHJ1bl9yZXBlYXRlZGx5IHQgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgfmYgfmNvbnRpbnVlOihBZnRlciBzcGFuKVxuOztcblxubGV0IGV2ZXJ5ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgdCBzcGFuIGYgPVxuICBldmVyeScgdCA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZDpOb25lIHNwYW4gKGZ1biAoKSAtPlxuICAgIGYgKCk7XG4gICAgcmV0dXJuICgpKVxuOztcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgdCBpbnRlcnZhbCBmID1cbiAgbGV0IG5vdyA9IG5vdyB0IGluXG4gIGxldCBiYXNlLCBzdGFydCA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgTm9uZSAtPiBub3csIE5vbmVcbiAgICB8IFNvbWUgc3RhcnQgLT5cbiAgICAgICggc3RhcnRcbiAgICAgICwgU29tZVxuICAgICAgICAgIChhdFxuICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAoVGltZV9ucy5uZXh0X211bHRpcGxlXG4gICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICB+YmFzZTpzdGFydFxuICAgICAgICAgICAgICAgIH5hZnRlcjpub3dcbiAgICAgICAgICAgICAgICB+Y2FuX2VxdWFsX2FmdGVyOnRydWVcbiAgICAgICAgICAgICAgICB+aW50ZXJ2YWwpKSApXG4gIGluXG4gIHJ1bl9yZXBlYXRlZGx5XG4gICAgdFxuICAgID9zdGFydFxuICAgID9zdG9wXG4gICAgP2NvbnRpbnVlX29uX2Vycm9yXG4gICAgfmZcbiAgICB+Y29udGludWU6KE5leHRfbXVsdGlwbGUgKGJhc2UsIGludGVydmFsKSlcbjs7XG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgdCBpbnRlcnZhbCBmID1cbiAgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIChmdW4gKCkgLT5cbiAgICBmICgpO1xuICAgIHJldHVybiAoKSlcbjs7XG5cbmxldCB3aXRoX3RpbWVvdXQgdCBzcGFuIGQgPVxuICBsZXQgdGltZW91dCA9IEV2ZW50LmFmdGVyIHQgc3BhbiBpblxuICBjaG9vc2VcbiAgICAoKiBUaGUgY29kZSBiZWxvdyBkb2VzIGV4aGF1c3RpdmUgY2FzZSBhbmFseXNpcyBpbiBib3RoIFtjaG9pY2Vdcy4gIEJlY2F1c2UgW3RpbWVvdXRdXG4gICAgICAgZG9lcyBub3QgZXNjYXBlIHRoZSBzY29wZSBvZiB0aGlzIGZ1bmN0aW9uLCBjZXJ0YWluIGNhc2VzIHNob3VsZCBiZSBpbXBvc3NpYmxlLCBhbmRcbiAgICAgICBhcmUgbWFya2VkIGFzIHN1Y2ggd2l0aCBleGNlcHRpb25zLiAgV2UgZG8gbm90IGV4cGVjdCB0aG9zZSBleGNlcHRpb25zIHRvIG9jY3VyLFxuICAgICAgIGJ1dCBpZiB0aGV5IGRvLCBpdCBsaWtlbHkgaW5kaWNhdGVzIGEgYnVnIGluIFtjaG9vc2VdIHJhdGhlciB0aGFuXG4gICAgICAgW3dpdGhfdGltZW91dF0uICopXG4gICAgWyBjaG9pY2UgZCAoZnVuIHYgLT5cbiAgICAgICAgKG1hdGNoIEV2ZW50LmFib3J0IHRpbWVvdXQgKCkgd2l0aFxuICAgICAgICAgKCogW1ByZXZpb3VzbHlfaGFwcGVuZWRdIGNhbiBvY2N1ciBpZiBib3RoIFtkXSBhbmQgW3dhaXRdIGJlY29tZSBkZXRlcm1pbmVkIGF0XG4gICAgICAgICAgICB0aGUgc2FtZSB0aW1lLCBlLmcuIFt3aXRoX3RpbWVvdXQgKHNlYyAwLikgKHJldHVybiAoKSldLiAqKVxuICAgICAgICAgfCBPayB8IFByZXZpb3VzbHlfaGFwcGVuZWQgKCkgLT4gKClcbiAgICAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkICgpIC0+XG4gICAgICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZV9zb3VyY2Uud2l0aF90aW1lb3V0IGJ1Zzogc2hvdWxkIG9ubHkgYWJvcnQgb25jZVwiXSk7XG4gICAgICAgIGBSZXN1bHQgdilcbiAgICA7IGNob2ljZSAoRXZlbnQuZmlyZWQgdGltZW91dCkgKGZ1bmN0aW9uXG4gICAgICAgIHwgSGFwcGVuZWQgKCkgLT4gYFRpbWVvdXRcbiAgICAgICAgfCBBYm9ydGVkICgpIC0+XG4gICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgYnVnOiBib3RoIGNvbXBsZXRlZCBhbmQgdGltZWQgb3V0XCJdKVxuICAgIF1cbjs7XG5cbmxldCBkdXJhdGlvbl9vZiB0IGYgPVxuICBsZXQgc3RhcnQgPSBub3cgdCBpblxuICAoKiBFYWdlciBtYXAgdG8gcHJvdmlkZSBtb3JlIGFjY3VyYXRlIHRpbWluZ3Mgd2hlbiBbZl0gaXMgc3luY2hyb25vdXMuICopXG4gIEVhZ2VyX2RlZmVycmVkLm1hcCAoZiAoKSkgfmY6KGZ1biByZXN1bHQgLT5cbiAgICBsZXQgZHVyYXRpb24gPSBUaW1lX25zLmRpZmYgKG5vdyB0KSBzdGFydCBpblxuICAgIHJlc3VsdCwgZHVyYXRpb24pXG47O1xuXG5sZXQgb2Zfc3luY2hyb25vdXMgdCA9IHRcbmxldCB0b19zeW5jaHJvbm91cyB0ID0gdFxuXG5sZXQgdGltaW5nX3doZWVsX2hhc19ldmVudF9hdF9vcl9iZWZvcmUgd2hlZWwgdGltZSA9XG4gIGlmIFRpbWluZ193aGVlbC5pc19lbXB0eSB3aGVlbFxuICB0aGVuIGZhbHNlXG4gIGVsc2UgKFxuICAgIGxldCBuZXh0X2FsYXJtID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHdoZWVsIGluXG4gICAgVGltZV9uc19pbl90aGlzX2RpcmVjdG9yeS4obmV4dF9hbGFybSA8PSB0aW1lKSlcbjs7XG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5X2lmX3F1aWVzY2VudCB0IH50b18gPVxuICBsZXQgaXNfcXVlc2NlbnQgPVxuICAgICgqIFNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUganVzdCBhIGZhc3QgY2FzZSBvZiBbYWR2YW5jZV9ieV9hbGFybXNdLFxuICAgICAgIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNhbGwgdG8gW1NjaGVkdWxlci55aWVsZCAoKV0gY2FuIGJlIGVsaWRlZCxcbiAgICAgICBoZW5jZSB0aGUgW2Nhbl9ydW5fYV9qb2JdIGNoZWNrLlxuXG4gICAgICAgV2UncmUgbm90IGNoZWNraW5nIGVwb2xsLCBhbmQgd2UncmUgbm90IGNoZWNraW5nIHRoZSBbZXh0ZXJuYWxfam9ic10uICBUaGF0IGlzIGFuXG4gICAgICAgb2JzZXJ2YWJsZSBkaWZmZXJlbmNlLCBidXQgc2luY2UgW2FkdmFuY2VfYnlfYWxhcm1zID93YWl0X2ZvcjpOb25lXSBpcyBhbHJlYWR5XG4gICAgICAgcHJldHR5IGJyb2tlbiB3aGVuIHdhaXRpbmcgZm9yIGV4dGVybmFsIGV2ZW50cywgaXQncyBub3QgZ29pbmcgdG8gYmUgbWVhbmluZ2Z1bC5cbiAgICAqKVxuICAgIGNhbl9ydW5fYV9qb2IgdC5zY2hlZHVsZXJcbiAgICB8fCBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuaGFzX2V2ZW50c190b19ydW4gdFxuICAgIHx8IHRpbWluZ193aGVlbF9oYXNfZXZlbnRfYXRfb3JfYmVmb3JlIHQuZXZlbnRzIHRvX1xuICBpblxuICBpZiBpc19xdWVzY2VudFxuICB0aGVuIGZhbHNlXG4gIGVsc2UgKFxuICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fO1xuICAgIHRydWUpXG47O1xuIiwidHlwZSB0ID0gdW5pdCAtPiB1bml0XG5cbm1vZHVsZSBIYW5kbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUudFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxubW9kdWxlIFN0cmVhbSA9IEFzeW5jX3N0cmVhbVxuaW5jbHVkZSAoU2NoZWR1bGVyIDogbW9kdWxlIHR5cGUgb2YgU2NoZWR1bGVyIHdpdGggbW9kdWxlIEJ2YXIgOj0gU2NoZWR1bGVyLkJ2YXIpXG5cbmxldCB0ID0gU2NoZWR1bGVyLnRcblxuaW5jbHVkZSBNb25pdG9yLkV4cG9ydGVkX2Zvcl9zY2hlZHVsZXJcblxubGV0IGZpbmRfbG9jYWwga2V5ID0gRXhlY3V0aW9uX2NvbnRleHQuZmluZF9sb2NhbCAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGtleVxuXG5sZXQgd2l0aF9sb2NhbCBrZXkgdmFsdWUgfmYgPVxuICBsZXQgdCA9IHQgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgICBFeGVjdXRpb25fY29udGV4dC53aXRoX2xvY2FsIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQpIGtleSB2YWx1ZVxuICBpblxuICB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0IHQgZXhlY3V0aW9uX2NvbnRleHQgfmZcbjs7XG5cbmxldCBtYWluX2V4ZWN1dGlvbl9jb250ZXh0ID0gKHQgKCkpLm1haW5fZXhlY3V0aW9uX2NvbnRleHRcbmxldCBjYW5fcnVuX2Ffam9iIHQgPSBudW1fcGVuZGluZ19qb2JzIHQgPiAwIHx8IEJ2YXIuaGFzX2FueV93YWl0ZXJzIHQueWllbGRcbmxldCBoYXNfdXBjb21pbmdfZXZlbnQgdCA9IG5vdCAoVGltaW5nX3doZWVsLmlzX2VtcHR5IChldmVudHMgdCkpXG5sZXQgbmV4dF91cGNvbWluZ19ldmVudCB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgKGV2ZW50cyB0KVxubGV0IG5leHRfdXBjb21pbmdfZXZlbnRfZXhuIHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gKGV2ZW50cyB0KVxubGV0IGV2ZW50X3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiAoZXZlbnRzIHQpXG5sZXQgY3ljbGVfc3RhcnQgdCA9IHQuY3ljbGVfc3RhcnRcblxubGV0IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mID1cbiAgKCogVXNpbmcgYW4gYXJyYXkgcmF0aGVyIHRoYW4gYSBsaXN0IGZvciBjYWNoZSBlZmZpY2llbmN5LiBUaGlzIGFuZFxuICAgICBbcnVuX2V2ZXJ5X2N5Y2xlX2VuZF0gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBwcm9ncmFtIGluaXRpYWxpemF0aW9uLCBzbyB0aGVcbiAgICAgYWxsb2NhdGlvbiBhbmQgZ2FyYmFnZSBjcmVhdGlvbiBzaG91bGQgbm90IGJlIGFuIGlzc3VlLlxuXG4gICAgIE5vdGUgdGhhdCBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gTiB0aW1lcyB0YWtlcyBPKE5eMikgdGltZSwgYnV0IHRoaXMgc2hvdWxkIGJlIGZpbmVcbiAgICAgYmVjYXVzZSBOIGlzIHNtYWxsLiBTYW1lIGZvciBbcnVuX2V2ZXJ5X2N5Y2xlX2VuZF0uICopXG4gIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDwtIEFycmF5LmFwcGVuZCBbfCBmIHxdIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0XG47O1xuXG5sZXQgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCB0IH5mID1cbiAgdC5ydW5fZXZlcnlfY3ljbGVfZW5kIDwtIEFycmF5LmFwcGVuZCBbfCBmIHxdIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZFxuOztcblxubGV0IGFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rIHQgfmYgPVxuICBsZXQgaGFuZGxlID0gVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUuY3JlYXRlICgpIGluXG4gIEhhc2h0YmwuYWRkX2V4biB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSB+a2V5OmhhbmRsZSB+ZGF0YTpmO1xuICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjtcbiAgaGFuZGxlXG47O1xuXG5sZXQgYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rIHQgfmYgPVxuICBsZXQgaGFuZGxlID0gVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUuY3JlYXRlICgpIGluXG4gIEhhc2h0YmwuYWRkX2V4biB0LnJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgfmtleTpoYW5kbGUgfmRhdGE6ZjtcbiAgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCB0IH5mO1xuICBoYW5kbGVcbjs7XG5cbmxldCBhcnJheV9yZW1vdmVfZmlyc3QgYXJyIH5mID1cbiAgbWF0Y2ggQXJyYXkuZmluZGkgYXJyIH5mIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChpZHgsIF8pIC0+XG4gICAgU29tZVxuICAgICAgKEFycmF5LmluaXRcbiAgICAgICAgIChBcnJheS5sZW5ndGggYXJyIC0gMSlcbiAgICAgICAgIH5mOihmdW4gaSAtPiBpZiBpIDwgaWR4IHRoZW4gYXJyLihpKSBlbHNlIGFyci4oaSArIDEpKSlcbjs7XG5cbmxldCByZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgYXJyIGYgPVxuICAoKiBSZW1vdmUgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgW2ZdIGZyb20gW2Fycl0uIE1vcmUgdGhhbiBvbmUgaW5zdGFuY2UgbWF5IGJlIHByZXNlbnQsXG4gICAgIGJ1dCByZW1vdmFsIGlzIHJlZmVyZW5jZS1jb3VudGVkIGJ5IFtydW5fZXZlcnlfY3ljbGVfKHN0YXJ0fGVuZClfc3RhdGVdIHRhYmxlcy4gKilcbiAgbWF0Y2ggYXJyYXlfcmVtb3ZlX2ZpcnN0IH5mOihmdW4gXyBnIC0+IHBoeXNfZXF1YWwgZiBnKSBhcnIgd2l0aFxuICB8IFNvbWUgYXJyIC0+IGFyclxuICB8IE5vbmUgLT5cbiAgICAoKiBUaGlzIHNob3VsZCBiZSB1bnJlYWNoYWJsZSwgc2VlIHRoZSBbaW52YXJpYW50XSBpbiBbc2NoZWR1bGVyMS5tbF0uICopXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiU2NoZWR1bGVyLnJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayBjYWxsZWQgd2l0aCBhIGhvb2sgdGhhdCBpc24ndCByZWdpc3RlcmVkXCJdXG47O1xuXG5sZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2tfZXhuIHQgaGFuZGxlID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FuZF9yZW1vdmUgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgaGFuZGxlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgZmFpbHdpdGggXCJBdHRlbXB0ZWQgdG8gcmVtb3ZlIGEgY3ljbGUgc3RhcnQgaG9vayB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQuXCJcbiAgfCBTb21lIGYgLT5cbiAgICB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCA8LSByZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgZlxuOztcblxubGV0IHJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leG4gdCBoYW5kbGUgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYW5kX3JlbW92ZSB0LnJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgaGFuZGxlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgZmFpbHdpdGggXCJBdHRlbXB0ZWQgdG8gcmVtb3ZlIGEgY3ljbGUgZW5kIGhvb2sgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkLlwiXG4gIHwgU29tZSBmIC0+IHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCA8LSByZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgdC5ydW5fZXZlcnlfY3ljbGVfZW5kIGZcbjs7XG5cbmxldCBtYXBfY3ljbGVfdGltZXMgdCB+ZiA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmY6KGZ1biAoKSAtPiBUYWlsLmV4dGVuZCB0YWlsIChmIHQubGFzdF9jeWNsZV90aW1lKSkpXG47O1xuXG5sZXQgbG9uZ19jeWNsZXMgdCB+YXRfbGVhc3QgPVxuICBTdHJlYW0uY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mOihmdW4gKCkgLT5cbiAgICAgIGlmIFRpbWVfbnMuU3Bhbi4oID49ICkgdC5sYXN0X2N5Y2xlX3RpbWUgYXRfbGVhc3RcbiAgICAgIHRoZW4gVGFpbC5leHRlbmQgdGFpbCB0Lmxhc3RfY3ljbGVfdGltZSkpXG47O1xuXG5sZXQgY3ljbGVfbnVtX2pvYnMgdCA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmY6KGZ1biAoKSAtPiBUYWlsLmV4dGVuZCB0YWlsIHQubGFzdF9jeWNsZV9udW1fam9icykpXG47O1xuXG5sZXQgY3ljbGVfY291bnQgdCA9IHQuY3ljbGVfY291bnRcblxubGV0IHNldF9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSB0IGludCA9XG4gIHQubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgPC0gTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUuY3JlYXRlX2V4biBpbnRcbjs7XG5cbmxldCBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSB0ID1cbiAgTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUucmF3IHQubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbjs7XG5cbmxldCBzZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgdCBmID0gdC50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA8LSBmXG5cbmxldCB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIFRocmVhZF9zYWZlX3F1ZXVlLmVucXVldWUgdC5leHRlcm5hbF9qb2JzIChFeHRlcm5hbF9qb2IuVCAoZXhlY3V0aW9uX2NvbnRleHQsIGYsIGEpKTtcbiAgdC50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayAoKVxuOztcblxubGV0IHNldF9ldmVudF9hZGRlZF9ob29rIHQgZiA9IHQuZXZlbnRfYWRkZWRfaG9vayA8LSBTb21lIGZcbmxldCBzZXRfam9iX3F1ZXVlZF9ob29rIHQgZiA9IHQuam9iX3F1ZXVlZF9ob29rIDwtIFNvbWUgZlxuXG5sZXQgY3JlYXRlX2FsYXJtIHQgZiA9XG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCBpblxuICBHYy5FeHBlcnQuQWxhcm0uY3JlYXRlIChmdW4gKCkgLT5cbiAgICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgKCkpXG47O1xuXG5sZXQgYWRkX2ZpbmFsaXplciB0IGhlYXBfYmxvY2sgZiA9XG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCBpblxuICBsZXQgZmluYWxpemVyIGhlYXBfYmxvY2sgPVxuICAgICgqIEhlcmUgd2UgY2FuIGJlIGluIGFueSB0aHJlYWQsIGFuZCBtYXkgbm90IGJlIGhvbGRpbmcgdGhlIGFzeW5jIGxvY2suICBTbywgd2UgY2FuXG4gICAgICAgb25seSBkbyB0aHJlYWQtc2FmZSB0aGluZ3MuXG5cbiAgICAgICBCeSBwdXR0aW5nIFtoZWFwX2Jsb2NrXSBpbiBbZXh0ZXJuYWxfam9ic10sIHdlIGFyZSBrZWVwaW5nIGl0IGFsaXZlIHVudGlsIHRoZSBuZXh0XG4gICAgICAgdGltZSB0aGUgYXN5bmMgc2NoZWR1bGVyIGdldHMgYXJvdW5kIHRvIGRlcXVldWVpbmcgaXQuICBDYWxsaW5nXG4gICAgICAgW3QudGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tdIGVuc3VyZXMgdGhhdCB3aWxsIGhhcHBlbiBpbiBzaG9ydCBvcmRlci4gIFRodXMsXG4gICAgICAgd2UgYXJlIG5vdCBkcmFtYXRpY2FsbHkgaW5jcmVhc2luZyB0aGUgbGlmZXRpbWUgb2YgW2hlYXBfYmxvY2tdLCBzaW5jZSB0aGUgT0NhbWxcbiAgICAgICBydW50aW1lIGFscmVhZHkgcmVzdXJyZWN0ZWQgW2hlYXBfYmxvY2tdIHNvIHRoYXQgd2UgY291bGQgcmVmZXIgdG8gaXQgaGVyZS4gIFRoZVxuICAgICAgIE9DYW1sIHJ1bnRpbWUgYWxyZWFkeSByZW1vdmVkIHRoZSBmaW5hbGl6ZXIgZnVuY3Rpb24gd2hlbiBpdCBub3RpY2VkIFtoZWFwX2Jsb2NrXVxuICAgICAgIGNvdWxkIGJlIGZpbmFsaXplZCwgc28gdGhlcmUgaXMgbm8gaW5maW5pdGUgbG9vcCBpbiB3aGljaCB3ZSBhcmUgY2F1c2luZyB0aGVcbiAgICAgICBmaW5hbGl6ZXIgdG8gcnVuIGFnYWluLiAgQWxzbywgT0NhbWwgZG9lcyBub3QgaW1wb3NlIGFueSByZXF1aXJlbWVudCBvbiBmaW5hbGl6ZXJcbiAgICAgICBmdW5jdGlvbnMgdGhhdCB0aGV5IG5lZWQgdG8gZGlzcG9zZSBvZiB0aGUgYmxvY2ssIHNvIGl0J3MgZmluZSB0aGF0IHdlIGtlZXBcbiAgICAgICBbaGVhcF9ibG9ja10gYXJvdW5kIHVudGlsIGxhdGVyLiAqKVxuICAgIGlmIERlYnVnLmZpbmFsaXplcnMgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiZW5xdWV1ZWluZyBmaW5hbGl6ZXJcIjtcbiAgICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgaGVhcF9ibG9ja1xuICBpblxuICBpZiBEZWJ1Zy5maW5hbGl6ZXJzIHRoZW4gRGVidWcubG9nX3N0cmluZyBcImFkZGluZyBmaW5hbGl6ZXJcIjtcbiAgKCogV2UgdXNlIFtDYW1sLkdjLmZpbmFsaXNlXSBpbnN0ZWFkIG9mIFtDb3JlLkdjLmFkZF9maW5hbGl6ZXJdIGJlY2F1c2UgdGhlIGxhdHRlclxuICAgICBoYXMgaXRzIG93biB3cmFwcGVyIGFyb3VuZCBbQ2FtbC5HYy5maW5hbGlzZV0gdG8gcnVuIGZpbmFsaXplcnMgc3luY2hyb25vdXNseS4gKilcbiAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZSBmaW5hbGl6ZXIgaGVhcF9ibG9jayB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgKCogW0hlYXBfYmxvY2tdIGVuc3VyZXMgdGhhdCB0aGlzIHdpbGwgb25seSBmYWlsIGZvciBzdGF0aWMgZGF0YSwgaW4gd2hpY2ggY2FzZSB3ZVxuICAgICAgIGNhbiBkcm9wIHRoZSBmaW5hbGl6ZXIgc2luY2UgdGhlIGJsb2NrIHdpbGwgbmV2ZXIgYmUgY29sbGVjdGVkLiopXG4gICAgKClcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyX2V4biB0IHggZiA9XG4gIGFkZF9maW5hbGl6ZXIgdCAoSGVhcF9ibG9jay5jcmVhdGVfZXhuIHgpIChmdW4gaGVhcF9ibG9jayAtPlxuICAgIGYgKEhlYXBfYmxvY2sudmFsdWUgaGVhcF9ibG9jaykpXG47O1xuXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0IHQgaGVhcF9ibG9jayBmID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIGxldCBmaW5hbGl6ZXIgKCkgPVxuICAgICgqIEhlcmUgd2UgY2FuIGJlIGluIGFueSB0aHJlYWQsIGFuZCBtYXkgbm90IGJlIGhvbGRpbmcgdGhlIGFzeW5jIGxvY2suICBTbywgd2UgY2FuXG4gICAgICAgb25seSBkbyB0aHJlYWQtc2FmZSB0aGluZ3MuICopXG4gICAgaWYgRGVidWcuZmluYWxpemVyc1xuICAgIHRoZW4gRGVidWcubG9nX3N0cmluZyBcImVucXVldWVpbmcgZmluYWxpemVyICh1c2luZyAnbGFzdCcgc2VtYW50aWMpXCI7XG4gICAgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgdCBleGVjdXRpb25fY29udGV4dCBmICgpXG4gIGluXG4gIGlmIERlYnVnLmZpbmFsaXplcnMgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiYWRkaW5nIGZpbmFsaXplciAodXNpbmcgJ2xhc3QnIHNlbWFudGljKVwiO1xuICAoKiBXZSB1c2UgW0NhbWwuR2MuZmluYWxpc2VfbGFzdF0gaW5zdGVhZCBvZiBbQ29yZS5HYy5hZGRfZmluYWxpemVyX2xhc3RdIGJlY2F1c2VcbiAgICAgdGhlIGxhdHRlciBoYXMgaXRzIG93biB3cmFwcGVyIGFyb3VuZCBbQ2FtbC5HYy5maW5hbGlzZV9sYXN0XSB0byBydW4gZmluYWxpemVyc1xuICAgICBzeW5jaHJvbm91c2x5LiAqKVxuICB0cnkgU3RkbGliLkdjLmZpbmFsaXNlX2xhc3QgZmluYWxpemVyIGhlYXBfYmxvY2sgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICgqIFtIZWFwX2Jsb2NrXSBlbnN1cmVzIHRoYXQgdGhpcyB3aWxsIG9ubHkgZmFpbCBmb3Igc3RhdGljIGRhdGEsIGluIHdoaWNoIGNhc2Ugd2VcbiAgICAgICBjYW4gZHJvcCB0aGUgZmluYWxpemVyIHNpbmNlIHRoZSBibG9jayB3aWxsIG5ldmVyIGJlIGNvbGxlY3RlZC4qKVxuICAgICgpXG47O1xuXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0X2V4biB0IHggZiA9IGFkZF9maW5hbGl6ZXJfbGFzdCB0IChIZWFwX2Jsb2NrLmNyZWF0ZV9leG4geCkgZlxuXG4oKiogW2ZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kXSBzZXRzIHRoZSBudW1iZXIgb2Ygbm9ybWFsIGpvYnMgYWxsb3dlZCB0byBydW4gaW4gdGhpc1xuICAgIGN5Y2xlIHRvIHplcm8uICBUaHVzLCBhZnRlciB0aGUgY3VycmVudGx5IHJ1bm5pbmcgam9iIGNvbXBsZXRlcywgdGhlIHNjaGVkdWxlciB3aWxsXG4gICAgc3dpdGNoIHRvIGxvdyBwcmlvcml0eSBqb2JzIGFuZCB0aGVuIGVuZCB0aGUgY3VycmVudCBjeWNsZS4gKilcbmxldCBmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCB0ID1cbiAgSm9iX3F1ZXVlLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzIDBcbjs7XG5cbigqIFdlIHByZWFsbG9jYXRlIFtzZW5kX2V4bl0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBvbiBlYWNoIGNhbGwgdG8gW2FkdmFuY2VfY2xvY2tdLiAqKVxubGV0IHNlbmRfZXhuID0gU29tZSBNb25pdG9yLnNlbmRfZXhuXG5cbmxldCBhZHZhbmNlX2Nsb2NrIHQgfm5vdyA9XG4gIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5hZHZhbmNlX2ludGVybmFsIHQudGltZV9zb3VyY2UgfnRvXzpub3cgfnNlbmRfZXhuXG47O1xuXG5sZXQgcnVuX2N5Y2xlIHQgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcInJ1bl9jeWNsZSBzdGFydGluZ1wiIHQgWyVzZXhwX29mOiB0XTtcbiAgbGV0IG5vdyA9IFRpbWVfbnMubm93ICgpIGluXG4gIHQuY3ljbGVfY291bnQgPC0gdC5jeWNsZV9jb3VudCArIDE7XG4gIHQuY3ljbGVfc3RhcnQgPC0gbm93O1xuICB0LmluX2N5Y2xlIDwtIHRydWU7XG4gIEJ2YXIuYnJvYWRjYXN0IHQueWllbGQgKCk7XG4gIGxldCBudW1fam9ic19ydW5fYXRfc3RhcnRfb2ZfY3ljbGUgPSBudW1fam9ic19ydW4gdCBpblxuICBBcnJheS5pdGVyIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IH5mOihmdW4gZiAtPiBmICgpKTtcbiAgYWR2YW5jZV9jbG9jayB0IH5ub3c7XG4gIHN0YXJ0X2N5Y2xlIHQgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHk6dC5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZTtcbiAgbGV0IHJlYyBydW5fam9icyB0ID1cbiAgICBtYXRjaCBTY2hlZHVsZXIucnVuX2pvYnMgdCB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBleG4gfmJhY2t0cmFjZTooYFRoaXMgYmFja3RyYWNlKTtcbiAgICAgICgqIFtydW5fam9ic10gc3RvcHBlZCBkdWUgdG8gYW4gZXhuLiAgVGhlcmUgbWF5IHN0aWxsIGJlIGpvYnMgdGhhdCBjb3VsZCBiZVxuICAgICAgICAgcnVuIHRoaXMgY3ljbGUsIHNvIFtydW5fam9ic10gYWdhaW4uICopXG4gICAgICBydW5fam9icyB0XG4gIGluXG4gIHJ1bl9qb2JzIHQ7XG4gIGxldCBjeWNsZV90aW1lID0gVGltZV9ucy5kaWZmIChUaW1lX25zLm5vdyAoKSkgdC5jeWNsZV9zdGFydCBpblxuICB0Lmxhc3RfY3ljbGVfdGltZSA8LSBjeWNsZV90aW1lO1xuICB0Lmxhc3RfY3ljbGVfbnVtX2pvYnMgPC0gbnVtX2pvYnNfcnVuIHQgLSBudW1fam9ic19ydW5fYXRfc3RhcnRfb2ZfY3ljbGU7XG4gIHQudG90YWxfY3ljbGVfdGltZSA8LSBUaW1lX25zLlNwYW4uKHQudG90YWxfY3ljbGVfdGltZSArIGN5Y2xlX3RpbWUpO1xuICBpZiBCdmFyLmhhc19hbnlfd2FpdGVycyB0LnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluICYmIG51bV9wZW5kaW5nX2pvYnMgdCA9IDBcbiAgdGhlbiBCdmFyLmJyb2FkY2FzdCB0LnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluICgpO1xuICBBcnJheS5pdGVyIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCB+ZjooZnVuIGYgLT4gZiAoKSk7XG4gIHQuaW5fY3ljbGUgPC0gZmFsc2U7XG4gIGlmIGRlYnVnXG4gIHRoZW5cbiAgICBEZWJ1Zy5sb2dcbiAgICAgIFwicnVuX2N5Y2xlIGZpbmlzaGVkXCJcbiAgICAgICh1bmNhdWdodF9leG4gdCwgaXNfc29tZSAobmV4dF91cGNvbWluZ19ldmVudCB0KSlcbiAgICAgIFslc2V4cF9vZjogRXJyb3IudCBvcHRpb24gKiBib29sXVxuOztcblxubGV0IHJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gKCkgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluIHN0YXJ0aW5nXCI7XG4gIGxldCB0ID0gdCAoKSBpblxuICBpZiBpc19kZWFkIHRcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gY2Fubm90IHByb2NlZWQgLS0gc2NoZWR1bGVyIGlzIGRlYWRcIlxuICAgICAgICAgIH5zY2hlZHVsZXI6KHQgOiB0KV07XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgcnVuX2N5Y2xlIHQ7XG4gICAgYWR2YW5jZV9jbG9jayB0IH5ub3c6KFRpbWVfbnMubm93ICgpKTtcbiAgICBpZiBjYW5fcnVuX2Ffam9iIHQgdGhlbiBsb29wICgpXG4gIGluXG4gIGxvb3AgKCk7XG4gICgqIFJlc2V0IHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBjb250ZXh0IHRvIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB3aGVuIHdlJ3JlIG5vdCBpblxuICAgICBhIGpvYiwgW2N1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgPSBtYWluX2V4ZWN1dGlvbl9jb250ZXh0XS4gKilcbiAgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgdC5tYWluX2V4ZWN1dGlvbl9jb250ZXh0O1xuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluIGZpbmlzaGVkXCI7XG4gIE9wdGlvbi5pdGVyICh1bmNhdWdodF9leG4gdCkgfmY6RXJyb3IucmFpc2Vcbjs7XG5cbmxldCBtYWtlX2FzeW5jX3VudXNhYmxlICgpID1cbiAgbGV0IHQgPSAhdF9yZWYgaW5cbiAgdC5jaGVja19hY2Nlc3NcbiAgPC0gU29tZVxuICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICByYWlzZV9zIFslc2V4cCBcIkFzeW5jIHNjaGVkdWxlciBpcyB1bnVzYWJsZSBkdWUgdG8gW21ha2VfYXN5bmNfdW51c2FibGVdXCJdKVxuOztcblxubGV0IHJlc2V0X2luX2ZvcmtlZF9wcm9jZXNzICgpID1cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwicmVzZXRfaW5fZm9ya2VkX3Byb2Nlc3NcIjtcbiAgKCogVGhlcmUgaXMgbm8gbmVlZCB0byBlbXB0eSBbbWFpbl9tb25pdG9yX2hvbGVdLiAqKVxuICBTY2hlZHVsZXIuKHRfcmVmIDo9IGNyZWF0ZSAoKSlcbjs7XG5cbmxldCBjaGVja19pbnZhcmlhbnRzIHQgPSB0LmNoZWNrX2ludmFyaWFudHNcbmxldCBzZXRfY2hlY2tfaW52YXJpYW50cyB0IGIgPSB0LmNoZWNrX2ludmFyaWFudHMgPC0gYlxubGV0IHNldF9yZWNvcmRfYmFja3RyYWNlcyB0IGIgPSB0LnJlY29yZF9iYWNrdHJhY2VzIDwtIGJcbmxldCB5aWVsZCB0ID0gQnZhci53YWl0IHQueWllbGRcblxubGV0IHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluID8obWF5X3JldHVybl9pbW1lZGlhdGVseSA9IGZhbHNlKSB0ID1cbiAgaWYgbWF5X3JldHVybl9pbW1lZGlhdGVseSAmJiBudW1fcGVuZGluZ19qb2JzIHQgPSAwXG4gIHRoZW4gcmV0dXJuICgpXG4gIGVsc2UgQnZhci53YWl0IHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW5cbjs7XG5cbmxldCB5aWVsZF9ldmVyeSB+biA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiU2NoZWR1bGVyLnlpZWxkX2V2ZXJ5IGdvdCBub25wb3NpdGl2ZSBjb3VudFwiIChuIDogaW50KV1cbiAgZWxzZSBpZiBuID0gMVxuICB0aGVuIHN0YWdlIChmdW4gdCAtPiB5aWVsZCB0KVxuICBlbHNlIChcbiAgICBsZXQgY291bnRfdW50aWxfeWllbGQgPSByZWYgbiBpblxuICAgIHN0YWdlIChmdW4gdCAtPlxuICAgICAgZGVjciBjb3VudF91bnRpbF95aWVsZDtcbiAgICAgIGlmICFjb3VudF91bnRpbF95aWVsZCA+IDBcbiAgICAgIHRoZW4gcmV0dXJuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgY291bnRfdW50aWxfeWllbGQgOj0gbjtcbiAgICAgICAgeWllbGQgdCkpKVxuOztcblxubGV0IHRvdGFsX2N5Y2xlX3RpbWUgdCA9XG4gICgqIEFkanVzdCBmb3IgdGhlIGZhY3QgdGhlIGNhbGxlcidzIHByb2JhYmx5IGFuIEFzeW5jIGpvYi4gKilcbiAgaWYgdC5pbl9jeWNsZVxuICB0aGVuIChcbiAgICBsZXQgdGhpc19jeWNsZV90aW1lID0gVGltZV9ucy4oZGlmZiAobm93ICgpKSB0LmN5Y2xlX3N0YXJ0KSBpblxuICAgIFRpbWVfbnMuU3Bhbi4odC50b3RhbF9jeWNsZV90aW1lICsgdGhpc19jeWNsZV90aW1lKSlcbiAgZWxzZSB0LnRvdGFsX2N5Y2xlX3RpbWVcbjs7XG5cbm1vZHVsZSBWZXJ5X2xvd19wcmlvcml0eV93b3JrID0gc3RydWN0XG4gIG1vZHVsZSBXb3JrZXJfcmVzdWx0ID0gVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLkV4ZWNfcmVzdWx0XG5cblxuICBsZXQgcmVjIHJ1biB0ID0gcnVuX3dvcmtlcnMgdCB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZzoxXzAwMFxuXG4gIGFuZCBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID1cbiAgICBpZiBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID0gMFxuICAgIHRoZW4geWllbGRfdGhlbl9ydW4gdFxuICAgIGVsc2UgaWYgbm90IChEZXF1ZS5pc19lbXB0eSB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgd29ya2VyID0gRGVxdWUuZGVxdWV1ZV9mcm9udF9leG4gdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIGluXG4gICAgICBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCB3b3JrZXIuZXhlY3V0aW9uX2NvbnRleHQ7XG4gICAgICBydW5fd29ya2VyIHQgd29ya2VyIH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nKVxuXG4gIGFuZCB5aWVsZF90aGVuX3J1biB0ID1cbiAgICBpZiBub3QgKERlcXVlLmlzX2VtcHR5IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycylcbiAgICB0aGVuIERlZmVycmVkLnVwb24gKHlpZWxkIHQpIChmdW4gKCkgLT4gcnVuIHQpXG5cbiAgYW5kIHJ1bl93b3JrZXIgdCB3b3JrZXIgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPVxuICAgIGFzc2VydCAocGh5c19lcXVhbCB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgd29ya2VyLmV4ZWN1dGlvbl9jb250ZXh0KTtcbiAgICBpZiBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID0gMFxuICAgIHRoZW4gKFxuICAgICAgRGVxdWUuZW5xdWV1ZV9mcm9udCB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgd29ya2VyO1xuICAgICAgeWllbGRfdGhlbl9ydW4gdClcbiAgICBlbHNlIChcbiAgICAgIGxldCBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID0gbnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyAtIDEgaW5cbiAgICAgIG1hdGNoIHdvcmtlci5leGVjICgpIHdpdGhcbiAgICAgIHwgRmluaXNoZWQgLT4gcnVuX3dvcmtlcnMgdCB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZ1xuICAgICAgfCBOb3RfZmluaXNoZWQgLT4gcnVuX3dvcmtlciB0IHdvcmtlciB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZ1xuICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIGxldCBidCA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICAgICAgTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBleG4gfmJhY2t0cmFjZTooYFRoaXMgYnQpO1xuICAgICAgICBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nKVxuICA7O1xuXG4gIGxldCBlbnF1ZXVlIH5mID1cbiAgICBsZXQgdCA9IHQgKCkgaW5cbiAgICBsZXQgcXVldWUgPSB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgaW5cbiAgICBsZXQgcnVubmluZyA9IG5vdCAoRGVxdWUuaXNfZW1wdHkgcXVldWUpIGluXG4gICAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmNyZWF0ZV9saWtlIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQpIH5wcmlvcml0eTpMb3dcbiAgICBpblxuICAgIERlcXVlLmVucXVldWVfYmFjayBxdWV1ZSB7IGV4ZWN1dGlvbl9jb250ZXh0OyBleGVjID0gZiB9O1xuICAgIGlmIG5vdCBydW5uaW5nIHRoZW4gZW5xdWV1ZSB0IGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB0XG4gIDs7XG5lbmRcblxubW9kdWxlIEZvcl9iZW5jaCA9IHN0cnVjdFxuICBsZXQgYWR2YW5jZV9jbG9jayA9IGFkdmFuY2VfY2xvY2tcbmVuZFxuXG5sZXQgaW5fY3ljbGUgdCA9IHQuaW5fY3ljbGVcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIENvdW50aW5nX3NlbWFwaG9yZSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgd2FpdF90b19hY3F1aXJlX2pvYl90b2tlbiA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCByZWxlYXNlX2pvYl90b2tlbiA6IHQgLT4gdW5pdFxuICB2YWwgYWJvcnQgOiB0IC0+IHVuaXRcbiAgdmFsIGNyZWF0ZSA6IG1heF9jb25jdXJyZW50X2pvYnM6aW50IC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBtYXhfY29uY3VycmVudF9qb2JzIDogaW50XG4gICAgOyBtdXRhYmxlIHdhaXRlciA6IHVuaXQgSXZhci50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBhYm9ydGVkIDogYm9vbFxuICAgIH1cblxuICBsZXQgd2FpdF90b19hY3F1aXJlX2pvYl90b2tlbiAoeyBtYXhfY29uY3VycmVudF9qb2JzOyB3YWl0ZXI7IGFib3J0ZWQgfSBhcyB0KSA9XG4gICAgbWF0Y2ggYWJvcnRlZCB3aXRoXG4gICAgfCB0cnVlIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgaWYgbWF4X2NvbmN1cnJlbnRfam9icyA+IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICB0Lm1heF9jb25jdXJyZW50X2pvYnMgPC0gbWF4X2NvbmN1cnJlbnRfam9icyAtIDE7XG4gICAgICAgIERlZmVycmVkLnJldHVybiAoKSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBhc3NlcnQgKE9wdGlvbi5pc19ub25lIHdhaXRlcik7XG4gICAgICAgIGxldCBpdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgICAgdC53YWl0ZXIgPC0gU29tZSBpdmFyO1xuICAgICAgICBJdmFyLnJlYWQgaXZhcilcbiAgOztcblxuICBsZXQgcmVsZWFzZV9qb2JfdG9rZW4gKHsgbWF4X2NvbmN1cnJlbnRfam9iczsgd2FpdGVyOyBhYm9ydGVkID0gXyB9IGFzIHQpID1cbiAgICBtYXRjaCB3YWl0ZXIgd2l0aFxuICAgIHwgU29tZSBpdmFyIC0+XG4gICAgICBJdmFyLmZpbGwgaXZhciAoKTtcbiAgICAgIHQud2FpdGVyIDwtIE5vbmVcbiAgICB8IE5vbmUgLT4gdC5tYXhfY29uY3VycmVudF9qb2JzIDwtIG1heF9jb25jdXJyZW50X2pvYnMgKyAxXG4gIDs7XG5cbiAgbGV0IGFib3J0IHQgPVxuICAgIHQuYWJvcnRlZCA8LSB0cnVlO1xuICAgIHQud2FpdGVyIDwtIE5vbmVcbiAgOztcblxuICBsZXQgY3JlYXRlIH5tYXhfY29uY3VycmVudF9qb2JzID1cbiAgICB7IG1heF9jb25jdXJyZW50X2pvYnM7IHdhaXRlciA9IE5vbmU7IGFib3J0ZWQgPSBmYWxzZSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGNvbXB1dGUgOlxuICAgICAgICBFeGVjdXRpb25fY29udGV4dC50IC0+IENvdW50aW5nX3NlbWFwaG9yZS50IC0+ICgnYSBEZWZlcnJlZC50IC0+IHVuaXQpIC0+IHVuaXRcbiAgICB9XG4gIFtAQHVuYm94ZWRdXG5cbiAgbGV0IHJldHVybiB4ID0geyBjb21wdXRlID0gKGZ1biBfIF8gayAtPiBrIChyZXR1cm4geCkpIH1cblxuICBsZXQgbWFwID1cbiAgICBgQ3VzdG9tXG4gICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgIHsgY29tcHV0ZSA9XG4gICAgICAgICAgICAgKGZ1biBleGVjX2N0eCBzZW1hcGhvcmUgayAtPlxuICAgICAgICAgICAgICAgIHQuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biBkIC0+XG4gICAgICAgICAgICAgICAgICBrXG4gICAgICAgICAgICAgICAgICAgIChsZXQlbWFwIHJlc3VsdCA9IGQgaW5cbiAgICAgICAgICAgICAgICAgICAgIGYgcmVzdWx0KSkpXG4gICAgICAgICB9KVxuICA7O1xuXG4gIGxldCBhcHBseSB0X2YgdCA9XG4gICAgeyBjb21wdXRlID1cbiAgICAgICAgKGZ1biBleGVjX2N0eCBzZW1hcGhvcmUgayAtPlxuICAgICAgICAgICB0X2YuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biBkZiAtPlxuICAgICAgICAgICAgIHQuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biBkdiAtPlxuICAgICAgICAgICAgICAga1xuICAgICAgICAgICAgICAgICAobGV0JWJpbmQgZiA9IGRmIGluXG4gICAgICAgICAgICAgICAgICBsZXQlbWFwIHYgPSBkdiBpblxuICAgICAgICAgICAgICAgICAgZiB2KSkpKVxuICAgIH1cbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoVClcblxubGV0IGVucXVldWUnIHNjaGVkdWxlciBjdHggZiA9XG4gIGxldCBpdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGN0eCAoZnVuICgpIC0+IHVwb24gKGYgKCkpIChJdmFyLmZpbGwgaXZhcikpICgpO1xuICBJdmFyLnJlYWQgaXZhclxuOztcblxubGV0IGpvYiBmID1cbiAgeyBjb21wdXRlID1cbiAgICAgIChmdW4gZXhlY19jdHggc2VtYXBob3JlIGsgLT5cbiAgICAgICAgIERlZmVycmVkLnVwb24gKENvdW50aW5nX3NlbWFwaG9yZS53YWl0X3RvX2FjcXVpcmVfam9iX3Rva2VuIHNlbWFwaG9yZSkgKGZ1biAoKSAtPlxuICAgICAgICAgICBrXG4gICAgICAgICAgICAgKGVucXVldWUnIChTY2hlZHVsZXIudCAoKSkgZXhlY19jdHggKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgIGxldCVtYXAgYSA9IGYgKCkgaW5cbiAgICAgICAgICAgICAgICBDb3VudGluZ19zZW1hcGhvcmUucmVsZWFzZV9qb2JfdG9rZW4gc2VtYXBob3JlO1xuICAgICAgICAgICAgICAgIGEpKSkpXG4gIH1cbjs7XG5cbmxldCBydW4gdCB+bWF4X2NvbmN1cnJlbnRfam9icyA9XG4gIGxldCBzZW1hcGhvcmUgPSBDb3VudGluZ19zZW1hcGhvcmUuY3JlYXRlIH5tYXhfY29uY3VycmVudF9qb2JzIGluXG4gICgqIFRoZSBuYW1lIGlzIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nIGluIG9yZGVyIHRvIHByZXZlbnQgW01vbml0b3Iuc2VuZF9leG5dXG4gICAgIGZyb20gYXBwZW5kaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgbW9uaXRvciB0byB0aGUgZXhjZXB0aW9ucyB3ZSBmb3J3YXJkLlxuICAgICBUaGlzIG1hdHRlcnMgYmVjYXVzZSB3ZSB3YW50IHNpbWxpYXIgYmVoYXZpb3IgdG8gW1Rocm90dGxlXSBhbmQgbm90IGJyZWFrXG4gICAgIGV4aXN0aW5nIHRlc3RzLiAqKVxuICBsZXQgbW9uaXRvciA9IE1vbml0b3IuY3JlYXRlIH5uYW1lOlwiXCIgKCkgaW5cbiAgbGV0IHBhcmVudF9tb25pdG9yID0gTW9uaXRvci5jdXJyZW50ICgpIGluXG4gIE1vbml0b3IuZGV0YWNoX2FuZF9pdGVyX2Vycm9ycyBtb25pdG9yIH5mOihmdW4gZXJyIC0+XG4gICAgQ291bnRpbmdfc2VtYXBob3JlLmFib3J0IHNlbWFwaG9yZTtcbiAgICBNb25pdG9yLnNlbmRfZXhuIHBhcmVudF9tb25pdG9yIGVycik7XG4gIGxldCBleGVjX2N0eCA9XG4gICAgRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2VcbiAgICAgIH5tb25pdG9yXG4gICAgICAoU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKFNjaGVkdWxlci50ICgpKSlcbiAgaW5cbiAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICB0LmNvbXB1dGUgZXhlY19jdHggc2VtYXBob3JlIChmdW4gciAtPiBEZWZlcnJlZC51cG9uIHIgKEl2YXIuZmlsbCBpdmFyKSk7XG4gIEl2YXIucmVhZCBpdmFyXG47O1xuXG5sZXQgb2ZfdGh1bmsgdGh1bmsgPVxuICB7IGNvbXB1dGUgPVxuICAgICAgKGZ1biBleGVjX2N0eCBzZW1hcGhvcmUgayAtPlxuICAgICAgICAgbGV0IHQgPSB0aHVuayAoKSBpblxuICAgICAgICAgdC5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSBrKVxuICB9XG47O1xuXG5sZXQgKCAqPiApIHQxIHQyID1cbiAgeyBjb21wdXRlID1cbiAgICAgIChmdW4gZXhlY19jdHggc2VtYXBob3JlIGsgLT5cbiAgICAgICAgIHQxLmNvbXB1dGUgZXhlY19jdHggc2VtYXBob3JlIChmdW4gZDEgLT5cbiAgICAgICAgICAgdDIuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biBkMiAtPlxuICAgICAgICAgICAgIGtcbiAgICAgICAgICAgICAgIChsZXQlYmluZCAoKSA9IGQxIGluXG4gICAgICAgICAgICAgICAgZDIpKSkpXG4gIH1cbjs7XG5cbmxldCBib3RoX3VuaXQgPSAoICo+IClcbiIsIm9wZW4hIEJhc2VcblxudHlwZSBfIHQgPVxuICB8IFN0YWNrIDogJ2EgU3RhY2sudCAtPiAnYSB0XG4gIHwgQ291bnRlciA6IHsgbXV0YWJsZSBsZW5ndGggOiBpbnQgfSAtPiB1bml0IHRcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBvZl9saXN0IGxpc3QgPSBTdGFjayAoU3RhY2sub2ZfbGlzdCBsaXN0KVxuXG5sZXQgY3JlYXRlX2NvdW50ZXIgfmxlbmd0aCA9XG4gIGlmIGxlbmd0aCA8IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIltTdGFja19vcl9jb3VudGVyLmNyZWF0ZV9jb3VudGVyXSBnb3QgbmVnYXRpdmUgbGVuZ3RoXCIgKGxlbmd0aCA6IGludCldO1xuICBDb3VudGVyIHsgbGVuZ3RoIH1cbjs7XG5cbmxldCBsZW5ndGggKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5sZW5ndGggc1xuICB8IENvdW50ZXIgciAtPiByLmxlbmd0aFxuOztcblxubGV0IGNsZWFyICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2suY2xlYXIgc1xuICB8IENvdW50ZXIgciAtPiByLmxlbmd0aCA8LSAwXG47O1xuXG5sZXQgcHVzaCAodHlwZSBhKSAodCA6IGEgdCkgYSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2sucHVzaCBzIGFcbiAgfCBDb3VudGVyIHIgLT4gci5sZW5ndGggPC0gci5sZW5ndGggKyAxXG47O1xuXG5sZXQgcG9wX2V4biAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLnBvcF9leG4gc1xuICB8IENvdW50ZXIgciAtPlxuICAgIGlmIHIubGVuZ3RoID0gMCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiW1N0YWNrX29yX2NvdW50ZXIucG9wX2V4bl0gb2YgZW1wdHkgc3RhY2tcIl07XG4gICAgci5sZW5ndGggPC0gci5sZW5ndGggLSAxXG47O1xuXG5sZXQgaXRlciAodHlwZSBhKSAodCA6IGEgdCkgfihmIDogYSAtPiB1bml0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2suaXRlciBzIH5mXG4gIHwgQ291bnRlciByIC0+XG4gICAgZm9yIF8gPSAxIHRvIHIubGVuZ3RoIGRvXG4gICAgICBmICgpXG4gICAgZG9uZVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxudHlwZSAnYSBvdXRjb21lID1cbiAgWyBgT2sgb2YgJ2FcbiAgfCBgQWJvcnRlZFxuICB8IGBSYWlzZWQgb2YgZXhuXG4gIF1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSBJbnRlcm5hbF9qb2IgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNyZWF0ZSA6ICgnYSAtPiAnYiBEZWZlcnJlZC50KSAtPiAnYSB0ICogJ2Igb3V0Y29tZSBEZWZlcnJlZC50XG5cbiAgKCogRXZlcnkgaW50ZXJuYWwgam9iIHdpbGwgZXZlbnR1YWxseSBiZSBlaXRoZXIgW3J1bl0gb3IgW2Fib3J0XWVkLCBidXQgbm90IGJvdGguICopXG5cbiAgdmFsIHJ1biA6ICdhIHQgLT4gJ2EgLT4gWyBgT2sgfCBgUmFpc2VkIF0gRGVmZXJyZWQudFxuICB2YWwgYWJvcnQgOiBfIHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBzdGFydCA6IFsgYEFib3J0IHwgYFN0YXJ0IG9mICdhIF0gSXZhci50XG4gICAgOyBvdXRjb21lIDogWyBgT2sgfCBgQWJvcnRlZCB8IGBSYWlzZWQgXSBEZWZlcnJlZC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgd29yayA9XG4gICAgbGV0IHN0YXJ0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1hdGNoJWJpbmQgSXZhci5yZWFkIHN0YXJ0IHdpdGhcbiAgICAgIHwgYEFib3J0IC0+IHJldHVybiBgQWJvcnRlZFxuICAgICAgfCBgU3RhcnQgYSAtPlxuICAgICAgICAobWF0Y2glbWFwXG4gICAgICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICAgICAoZnVuICgpIC0+IHdvcmsgYSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgT2sgYSAtPiBgT2sgYVxuICAgICAgICAgfCBFcnJvciBleG4gLT4gYFJhaXNlZCBleG4pXG4gICAgaW5cbiAgICBsZXQgb3V0Y29tZSA9XG4gICAgICBtYXRjaCVtYXAgcmVzdWx0IHdpdGhcbiAgICAgIHwgYE9rIF8gLT4gYE9rXG4gICAgICB8IGBBYm9ydGVkIC0+IGBBYm9ydGVkXG4gICAgICB8IGBSYWlzZWQgXyAtPiBgUmFpc2VkXG4gICAgaW5cbiAgICBsZXQgdCA9IHsgc3RhcnQ7IG91dGNvbWUgfSBpblxuICAgIHQsIHJlc3VsdFxuICA7O1xuXG4gIGxldCBydW4gdCBhID1cbiAgICBJdmFyLmZpbGwgdC5zdGFydCAoYFN0YXJ0IGEpO1xuICAgIG1hdGNoJW1hcCB0Lm91dGNvbWUgd2l0aFxuICAgIHwgYEFib3J0ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCAoYE9rIHwgYFJhaXNlZCkgYXMgeCAtPiB4XG4gIDs7XG5cbiAgbGV0IGFib3J0IHQgPSBJdmFyLmZpbGwgdC5zdGFydCBgQWJvcnRcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IGNvbnRpbnVlX29uX2Vycm9yIDogYm9vbFxuICA7IG1heF9jb25jdXJyZW50X2pvYnMgOiBpbnRcbiAgOyAoKiBbam9iX3Jlc291cmNlc19ub3RfaW5fdXNlXSBob2xkcyByZXNvdXJjZXMgdGhhdCBhcmUgbm90IGN1cnJlbnRseSBpbiB1c2UgYnkgYVxuICAgICAgIHJ1bm5pbmcgam9iLiAqKVxuICAgIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSA6ICdhIFN0YWNrX29yX2NvdW50ZXIudFxuICA7XG4gICAgKCogW2pvYnNfd2FpdGluZ190b19zdGFydF0gaXMgdGhlIHF1ZXVlIG9mIGpvYnMgdGhhdCBoYXZlbid0IHlldCBzdGFydGVkLiAqKVxuICAgIGpvYnNfd2FpdGluZ190b19zdGFydCA6ICdhIEludGVybmFsX2pvYi50IFF1ZXVlLnRcbiAgOyAoKiBbMCA8PSBudW1fam9ic19ydW5uaW5nIDw9IG1heF9jb25jdXJyZW50X2pvYnNdLiAqKVxuICAgIG11dGFibGUgbnVtX2pvYnNfcnVubmluZyA6IGludFxuICA7ICgqIFtjYXBhY2l0eV9hdmFpbGFibGVdIGlzIFtTb21lIGl2YXJdIGlmIHVzZXIgY29kZSBoYXMgY2FsbGVkIFtjYXBhY2l0eV9hdmFpbGFibGUgdF1cbiAgICAgICBhbmQgaXMgd2FpdGluZyB0byBiZSBub3RpZmllZCB3aGVuIGNhcGFjaXR5IGlzIGF2YWlsYWJsZSBpbiB0aGUgdGhyb3R0bGUuXG4gICAgICAgW21heWJlX3N0YXJ0X2pvYl0gd2lsbCBmaWxsIFtpdmFyXSB3aGVuIGNhcGFjaXR5IGJlY29tZXMgYXZhaWxhYmxlLCBpLmUuIHdoZW5cbiAgICAgICBbam9ic193YWl0aW5nX3RvX3N0YXJ0XSBpcyBlbXB0eSBhbmQgW251bV9qb2JzX3J1bm5pbmcgPCBtYXhfY29uY3VycmVudF9qb2JzXS4gKilcbiAgICBtdXRhYmxlIGNhcGFjaXR5X2F2YWlsYWJsZSA6IHVuaXQgSXZhci50IG9wdGlvblxuICA7ICgqIFtpc19kZWFkXSBpcyB0cnVlIGlmIFt0XSB3YXMga2lsbGVkIGR1ZSB0byBhIGpvYiByYWlzaW5nIGFuIGV4Y2VwdGlvbiBvciBba2lsbCB0XVxuICAgICAgIGJlaW5nIGNhbGxlZC4gKilcbiAgICBtdXRhYmxlIGlzX2RlYWQgOiBib29sXG4gIDsgKCogW2NsZWFuc10gaG9sZHMgZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gY2xlYW4gZWFjaCByZXNvdXJjZSB3aGVuIFt0XSBpc1xuICAgICAgIGtpbGxlZC4gKilcbiAgICBtdXRhYmxlIGNsZWFucyA6ICgnYSAtPiB1bml0IERlZmVycmVkLnQpIGxpc3RcbiAgOyAoKiBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF0gaXMgdGhlIG51bWJlciBvZiByZXNvdXJjZXMgd2hvc2UgY2xlYW4gZnVuY3Rpb25zIGhhdmVcbiAgICAgICBub3QgeWV0IGNvbXBsZXRlZC4gIFdoaWxlIFt0XSBpcyBhbGl2ZSwgW251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPVxuICAgICAgIG1heF9jb25jdXJyZW50X2pvYnNdLiAgT25jZSBbdF0gaXMga2lsbGVkLCBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF0gZGVjcmVhc2VzIHRvXG4gICAgICAgemVybyBvdmVyIHRpbWUgYXMgdGhlIGNsZWFuIGZ1bmN0aW9ucyBjb21wbGV0ZS4gKilcbiAgICBtdXRhYmxlIG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgOiBpbnRcbiAgOyAoKiBbY2xlYW5lZF0gYmVjb21lcyBkZXRlcm1pbmVkIHdoZW4gW251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWRdIHJlYWNoZXMgemVybyxcbiAgICAgICBpLmUuIGFmdGVyIFt0XSBpcyBraWxsZWQgYW5kIGFsbCBpdHMgY2xlYW4gZnVuY3Rpb25zIGNvbXBsZXRlLiAqKVxuICAgIGNsZWFuZWQgOiB1bml0IEl2YXIudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA6IHVuaXQgPVxuICB0cnlcbiAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+Y29udGludWVfb25fZXJyb3I6aWdub3JlXG4gICAgICB+bWF4X2NvbmN1cnJlbnRfam9iczpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2NvbmN1cnJlbnRfam9icyAtPiBhc3NlcnQgKG1heF9jb25jdXJyZW50X2pvYnMgPiAwKSkpXG4gICAgICB+am9iX3Jlc291cmNlc19ub3RfaW5fdXNlOlxuICAgICAgICAoY2hlY2sgKGZ1biBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgLT5cbiAgICAgICAgICAgU3RhY2tfb3JfY291bnRlci5pdGVyIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSB+ZjppbnZhcmlhbnRfYTtcbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBTdGFja19vcl9jb3VudGVyLmxlbmd0aCBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2VcbiAgICAgICAgICAgICA9IGlmIHQuaXNfZGVhZCB0aGVuIDAgZWxzZSB0Lm1heF9jb25jdXJyZW50X2pvYnMgLSB0Lm51bV9qb2JzX3J1bm5pbmcpKSlcbiAgICAgIH5qb2JzX3dhaXRpbmdfdG9fc3RhcnQ6XG4gICAgICAgIChjaGVjayAoZnVuY3Rpb24gam9ic193YWl0aW5nX3RvX3N0YXJ0IC0+XG4gICAgICAgICAgIGlmIHQuaXNfZGVhZCB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgam9ic193YWl0aW5nX3RvX3N0YXJ0KSkpXG4gICAgICB+bnVtX2pvYnNfcnVubmluZzpcbiAgICAgICAgKGNoZWNrIChmdW4gbnVtX2pvYnNfcnVubmluZyAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9qb2JzX3J1bm5pbmcgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobnVtX2pvYnNfcnVubmluZyA8PSB0Lm1heF9jb25jdXJyZW50X2pvYnMpO1xuICAgICAgICAgICBpZiBudW1fam9ic19ydW5uaW5nIDwgdC5tYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSB0LmpvYnNfd2FpdGluZ190b19zdGFydCkpKVxuICAgICAgfmNhcGFjaXR5X2F2YWlsYWJsZTpcbiAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgfCBTb21lIGl2YXIgLT4gYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKSlcbiAgICAgIH5pc19kZWFkOmlnbm9yZVxuICAgICAgfmNsZWFuczppZ25vcmVcbiAgICAgIH5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIDw9IHQubWF4X2NvbmN1cnJlbnRfam9icyk7XG4gICAgICAgICAgIGlmIG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPCB0Lm1heF9jb25jdXJyZW50X2pvYnMgdGhlbiBhc3NlcnQgdC5pc19kZWFkKSlcbiAgICAgIH5jbGVhbmVkOlxuICAgICAgICAoY2hlY2sgKGZ1biBjbGVhbmVkIC0+XG4gICAgICAgICAgIGlmIEl2YXIuaXNfZnVsbCBjbGVhbmVkIHRoZW4gYXNzZXJ0ICh0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSAwKSkpXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaHJvdHRsZS5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgKHQgOiBfIHQpXVxuOztcblxubW9kdWxlIFQyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2tpbmQpIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgdFxuZW5kXG5cbmxldCBudW1fam9ic193YWl0aW5nX3RvX3N0YXJ0IHQgPSBRdWV1ZS5sZW5ndGggdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnRcblxubGV0IGNsZWFuX3Jlc291cmNlIHQgYSA9XG4gIERlZmVycmVkLmFsbF91bml0IChMaXN0Lm1hcCB0LmNsZWFucyB+ZjooZnVuIGYgLT4gZiBhKSlcbiAgPj4+IGZ1biAoKSAtPlxuICB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPC0gdC5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIC0gMTtcbiAgaWYgdC5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID0gMCB0aGVuIEl2YXIuZmlsbCB0LmNsZWFuZWQgKClcbjs7XG5cbmxldCBraWxsIHQgPVxuICBpZiBub3QgdC5pc19kZWFkXG4gIHRoZW4gKFxuICAgIHQuaXNfZGVhZCA8LSB0cnVlO1xuICAgIFF1ZXVlLml0ZXIgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQgfmY6SW50ZXJuYWxfam9iLmFib3J0O1xuICAgIFF1ZXVlLmNsZWFyIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0O1xuICAgIFN0YWNrX29yX2NvdW50ZXIuaXRlciB0LmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSB+ZjooZnVuIGEgLT4gY2xlYW5fcmVzb3VyY2UgdCBhKTtcbiAgICBTdGFja19vcl9jb3VudGVyLmNsZWFyIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlKVxuOztcblxubGV0IGF0X2tpbGwgdCBmID1cbiAgKCogV2UgcHJlc2VydmUgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHNvIHRoYXQgZXhjZXB0aW9ucyByYWlzZWQgYnkgW2ZdIGdvIHRvIHRoZSBtb25pdG9yXG4gICAgIGluIGVmZmVjdCB3aGVuIFthdF9raWxsXSB3YXMgY2FsbGVkLiAqKVxuICBsZXQgZiA9IHVuc3RhZ2UgKE1vbml0b3IuRXhwb3J0ZWRfZm9yX3NjaGVkdWxlci5wcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCcgZikgaW5cbiAgdC5jbGVhbnMgPC0gZiA6OiB0LmNsZWFuc1xuOztcblxubGV0IGNsZWFuZWQgdCA9IEl2YXIucmVhZCB0LmNsZWFuZWRcblxubGV0IHJlYyBzdGFydF9qb2IgdCA9XG4gIGFzc2VydCAobm90IHQuaXNfZGVhZCk7XG4gIGFzc2VydCAodC5udW1fam9ic19ydW5uaW5nIDwgdC5tYXhfY29uY3VycmVudF9qb2JzKTtcbiAgYXNzZXJ0IChub3QgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KSk7XG4gIGxldCBqb2IgPSBRdWV1ZS5kZXF1ZXVlX2V4biB0LmpvYnNfd2FpdGluZ190b19zdGFydCBpblxuICB0Lm51bV9qb2JzX3J1bm5pbmcgPC0gdC5udW1fam9ic19ydW5uaW5nICsgMTtcbiAgbGV0IGpvYl9yZXNvdXJjZSA9IFN0YWNrX29yX2NvdW50ZXIucG9wX2V4biB0LmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSBpblxuICBJbnRlcm5hbF9qb2IucnVuIGpvYiBqb2JfcmVzb3VyY2VcbiAgPj4+IGZ1biByZXMgLT5cbiAgdC5udW1fam9ic19ydW5uaW5nIDwtIHQubnVtX2pvYnNfcnVubmluZyAtIDE7XG4gIChtYXRjaCByZXMgd2l0aFxuICAgfCBgT2sgLT4gKClcbiAgIHwgYFJhaXNlZCAtPiBpZiBub3QgdC5jb250aW51ZV9vbl9lcnJvciB0aGVuIGtpbGwgdCk7XG4gIGlmIHQuaXNfZGVhZFxuICB0aGVuIGNsZWFuX3Jlc291cmNlIHQgam9iX3Jlc291cmNlXG4gIGVsc2UgKFxuICAgIFN0YWNrX29yX2NvdW50ZXIucHVzaCB0LmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSBqb2JfcmVzb3VyY2U7XG4gICAgaWYgbm90IChRdWV1ZS5pc19lbXB0eSB0LmpvYnNfd2FpdGluZ190b19zdGFydClcbiAgICB0aGVuIHN0YXJ0X2pvYiB0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB0LmNhcGFjaXR5X2F2YWlsYWJsZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBpdmFyIC0+XG4gICAgICAgIEl2YXIuZmlsbCBpdmFyICgpO1xuICAgICAgICB0LmNhcGFjaXR5X2F2YWlsYWJsZSA8LSBOb25lKSlcbjs7XG5cbmxldCBjcmVhdGVfaW50ZXJuYWwgfmNvbnRpbnVlX29uX2Vycm9yIGpvYl9yZXNvdXJjZXMgPVxuICBsZXQgbWF4X2NvbmN1cnJlbnRfam9icyA9IFN0YWNrX29yX2NvdW50ZXIubGVuZ3RoIGpvYl9yZXNvdXJjZXMgaW5cbiAgeyBjb250aW51ZV9vbl9lcnJvclxuICA7IG1heF9jb25jdXJyZW50X2pvYnNcbiAgOyBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgPSBqb2JfcmVzb3VyY2VzXG4gIDsgam9ic193YWl0aW5nX3RvX3N0YXJ0ID0gUXVldWUuY3JlYXRlICgpXG4gIDsgbnVtX2pvYnNfcnVubmluZyA9IDBcbiAgOyBjYXBhY2l0eV9hdmFpbGFibGUgPSBOb25lXG4gIDsgaXNfZGVhZCA9IGZhbHNlXG4gIDsgY2xlYW5zID0gW11cbiAgOyBudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID0gbWF4X2NvbmN1cnJlbnRfam9ic1xuICA7IGNsZWFuZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICB9XG47O1xuXG5sZXQgY3JlYXRlX3dpdGggfmNvbnRpbnVlX29uX2Vycm9yIGpvYl9yZXNvdXJjZXMgPVxuICBjcmVhdGVfaW50ZXJuYWwgfmNvbnRpbnVlX29uX2Vycm9yIChTdGFja19vcl9jb3VudGVyLm9mX2xpc3Qgam9iX3Jlc291cmNlcylcbjs7XG5cbm1vZHVsZSBTZXF1ZW5jZXIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlID8oY29udGludWVfb25fZXJyb3IgPSBmYWxzZSkgYSA9IGNyZWF0ZV93aXRoIH5jb250aW51ZV9vbl9lcnJvciBbIGEgXVxuZW5kXG5cbmxldCBjcmVhdGUgfmNvbnRpbnVlX29uX2Vycm9yIH5tYXhfY29uY3VycmVudF9qb2JzID1cbiAgaWYgbWF4X2NvbmN1cnJlbnRfam9icyA8PSAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaHJvdHRsZS5jcmVhdGUgcmVxdWlyZXMgcG9zaXRpdmUgbWF4X2NvbmN1cnJlbnRfam9icywgYnV0IGdvdFwiXG4gICAgICAgICAgKG1heF9jb25jdXJyZW50X2pvYnMgOiBpbnQpXTtcbiAgY3JlYXRlX2ludGVybmFsXG4gICAgfmNvbnRpbnVlX29uX2Vycm9yXG4gICAgKFN0YWNrX29yX2NvdW50ZXIuY3JlYXRlX2NvdW50ZXIgfmxlbmd0aDptYXhfY29uY3VycmVudF9qb2JzKVxuOztcblxubW9kdWxlIEpvYiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHsgaW50ZXJuYWxfam9iIDogJ2EgSW50ZXJuYWxfam9iLnRcbiAgICA7IHJlc3VsdCA6IFsgYE9rIG9mICdiIHwgYEFib3J0ZWQgfCBgUmFpc2VkIG9mIGV4biBdIERlZmVycmVkLnRcbiAgICB9XG5cbiAgbGV0IHJlc3VsdCB0ID0gdC5yZXN1bHRcbiAgbGV0IGFib3J0IHQgPSBJbnRlcm5hbF9qb2IuYWJvcnQgdC5pbnRlcm5hbF9qb2JcblxuICBsZXQgY3JlYXRlIGYgPVxuICAgIGxldCBpbnRlcm5hbF9qb2IsIHJlc3VsdCA9IEludGVybmFsX2pvYi5jcmVhdGUgZiBpblxuICAgIHsgaW50ZXJuYWxfam9iOyByZXN1bHQgfVxuICA7O1xuZW5kXG5cbmxldCBlbnF1ZXVlJyB0IGYgPVxuICBsZXQgam9iID0gSm9iLmNyZWF0ZSBmIGluXG4gIGlmIHQuaXNfZGVhZFxuICB0aGVuIEpvYi5hYm9ydCBqb2JcbiAgZWxzZSAoXG4gICAgUXVldWUuZW5xdWV1ZSB0LmpvYnNfd2FpdGluZ190b19zdGFydCBqb2IuaW50ZXJuYWxfam9iO1xuICAgIGlmIHQubnVtX2pvYnNfcnVubmluZyA8IHQubWF4X2NvbmN1cnJlbnRfam9icyB0aGVuIHN0YXJ0X2pvYiB0KTtcbiAgSm9iLnJlc3VsdCBqb2Jcbjs7XG5cbmxldCBoYW5kbGVfZW5xdWV1ZV9yZXN1bHQgcmVzdWx0ID1cbiAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgfCBgT2sgYSAtPiBhXG4gIHwgYEFib3J0ZWQgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJ0aHJvdHRsZSBhYm9ydGVkIGpvYlwiXVxuICB8IGBSYWlzZWQgZXhuIC0+IHJhaXNlIGV4blxuOztcblxubGV0IGVucXVldWUgdCBmID0gZW5xdWV1ZScgdCBmID4+fCBoYW5kbGVfZW5xdWV1ZV9yZXN1bHRcblxubGV0IGVucXVldWVfZXhjbHVzaXZlIHQgZiA9XG4gIGxldCBuID0gdC5tYXhfY29uY3VycmVudF9qb2JzIGluXG4gIGlmIEludC4oID49ICkgbiAxXzAwMF8wMDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslc2V4cFxuICAgICAgICBcIltlbnF1ZXVlX2V4Y2x1c2l2ZV0gd2FzIGNhbGxlZCB3aXRoIGEgdmVyeSBsYXJnZSB2YWx1ZSBvZiBcXFxuICAgICAgICAgW21heF9jb25jdXJyZW50X2pvYnNdLiBUaGlzIGRvZXNuJ3Qgd29yay5cIl07XG4gIGxldCBkb25lXyA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGFzc2VydCAobiA+IDApO1xuICBsZXQgZl9wbGFjZWhvbGRlciBfc2xvdCA9IEl2YXIucmVhZCBkb25lXyBpblxuICBmb3IgXyA9IDEgdG8gbiAtIDEgZG9cbiAgICBkb24ndF93YWl0X2ZvciAoZW5xdWV1ZSB0IGZfcGxhY2Vob2xkZXIpXG4gIGRvbmU7XG4gIGxldCVtYXAgcmVzdWx0ID0gZW5xdWV1ZScgdCAoZnVuIF9zbG90IC0+IGYgKCkpIGluXG4gIEl2YXIuZmlsbCBkb25lXyAoKTtcbiAgaGFuZGxlX2VucXVldWVfcmVzdWx0IHJlc3VsdFxuOztcblxubGV0IG1vbmFkX3NlcXVlbmNlX2hvdyB+aG93IH5mID1cbiAgc3RhZ2VcbiAgICAobWF0Y2ggaG93IHdpdGhcbiAgICAgfCBgUGFyYWxsZWwgLT4gZlxuICAgICB8IChgU2VxdWVudGlhbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgIGxldCBtYXhfY29uY3VycmVudF9qb2JzID1cbiAgICAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICAgICB8IGBTZXF1ZW50aWFsIC0+IDFcbiAgICAgICAgIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPiBtYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgaW5cbiAgICAgICBsZXQgdCA9IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3I6ZmFsc2Ugfm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgICAgICBmdW4gYSAtPiBlbnF1ZXVlIHQgKGZ1biAoKSAtPiBmIGEpKVxuOztcblxubGV0IG1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZiA9XG4gIHN0YWdlXG4gICAgKG1hdGNoIGhvdyB3aXRoXG4gICAgIHwgYFBhcmFsbGVsIC0+IGZcbiAgICAgfCAoYFNlcXVlbnRpYWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgICBsZXQgbWF4X2NvbmN1cnJlbnRfam9icyA9XG4gICAgICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgICAgfCBgU2VxdWVudGlhbCAtPiAxXG4gICAgICAgICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT4gbWF4X2NvbmN1cnJlbnRfam9ic1xuICAgICAgIGluXG4gICAgICAgbGV0IHQgPSBjcmVhdGUgfmNvbnRpbnVlX29uX2Vycm9yOmZhbHNlIH5tYXhfY29uY3VycmVudF9qb2JzIGluXG4gICAgICAgZnVuIGExIGEyIC0+IGVucXVldWUgdCAoZnVuICgpIC0+IGYgYTEgYTIpKVxuOztcblxubGV0IHByaW9yX2pvYnNfZG9uZSB0ID1cbiAgKCogV2UgcXVldWUgW3QubWF4X2NvbmN1cnJlbnRfam9ic10gZHVtbXkgam9icyBhbmQgd2hlbiB0aGV5IGFyZSBhbGwgc3RhcnRlZCB3ZSBrbm93XG4gICAgIHRoYXQgYWxsIHByaW9yIGpvYnMgZmluaXNoZWQuICBXZSBtYWtlIHN1cmUgdGhhdCBhbGwgZHVtbXkgam9icyB3YWl0IGZvciB0aGUgbGFzdCBvbmVcbiAgICAgdG8gZ2V0IHN0YXJ0ZWQgYmVmb3JlIGZpbmlzaGluZy4gKilcbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gYWxsX2R1bW15X2pvYnNfcnVubmluZyAtPlxuICAgIGxldCBkdW1teV9qb2JzX3J1bm5pbmcgPSByZWYgMCBpblxuICAgIGZvciBfID0gMSB0byB0Lm1heF9jb25jdXJyZW50X2pvYnMgZG9cbiAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgIChlbnF1ZXVlIHQgKGZ1biBfIC0+XG4gICAgICAgICAgIGluY3IgZHVtbXlfam9ic19ydW5uaW5nO1xuICAgICAgICAgICBpZiAhZHVtbXlfam9ic19ydW5uaW5nID0gdC5tYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgICAgIHRoZW4gSXZhci5maWxsIGFsbF9kdW1teV9qb2JzX3J1bm5pbmcgKCk7XG4gICAgICAgICAgIEl2YXIucmVhZCBhbGxfZHVtbXlfam9ic19ydW5uaW5nKSlcbiAgICBkb25lKVxuOztcblxubGV0IGNhcGFjaXR5X2F2YWlsYWJsZSB0ID1cbiAgaWYgbnVtX2pvYnNfcnVubmluZyB0IDwgbWF4X2NvbmN1cnJlbnRfam9icyB0XG4gIHRoZW4gcmV0dXJuICgpXG4gIGVsc2UgKFxuICAgIG1hdGNoIHQuY2FwYWNpdHlfYXZhaWxhYmxlIHdpdGhcbiAgICB8IFNvbWUgaXZhciAtPiBJdmFyLnJlYWQgaXZhclxuICAgIHwgTm9uZSAtPiBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+IHQuY2FwYWNpdHlfYXZhaWxhYmxlIDwtIFNvbWUgaXZhcikpXG47O1xuIiwib3BlbiEgQ29yZVxuaW5jbHVkZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTBcblxubGV0IGNyZWF0ZSA9IFNjaGVkdWxlcjEuY3JlYXRlX3RpbWVfc291cmNlXG5sZXQgd2FsbF9jbG9jayA9IFNjaGVkdWxlcjEud2FsbF9jbG9ja1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNjaGVkdWxlclxuXG5sZXQgZW5xdWV1ZV9qb2IgZXhlY3V0aW9uX2NvbnRleHQgZiBhID0gZW5xdWV1ZSAodCAoKSkgZXhlY3V0aW9uX2NvbnRleHQgZiBhXG5cbmxldCB0aHJlYWRfc2FmZV9lbnF1ZXVlX2pvYiBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiAodCAoKSkgZXhlY3V0aW9uX2NvbnRleHQgZiBhXG47O1xuXG5sZXQgY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpXG5sZXQgY3ljbGVfY291bnQgKCkgPSBjeWNsZV9jb3VudCAodCAoKSlcbmxldCBjeWNsZV9zdGFydF9ucyAoKSA9IGN5Y2xlX3N0YXJ0ICh0ICgpKVxubGV0IGN5Y2xlX3N0YXJ0ICgpID0gVGltZV9ucy50b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgKGN5Y2xlX3N0YXJ0X25zICgpKVxubGV0IGN5Y2xlX3RpbWVzX25zICgpID0gbWFwX2N5Y2xlX3RpbWVzICh0ICgpKSB+ZjpGbi5pZFxubGV0IGN5Y2xlX3RpbWVzICgpID0gbWFwX2N5Y2xlX3RpbWVzICh0ICgpKSB+ZjpUaW1lX25zLlNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0XG5sZXQgdG90YWxfY3ljbGVfdGltZSAoKSA9IHRvdGFsX2N5Y2xlX3RpbWUgKHQgKCkpXG5sZXQgbGFzdF9jeWNsZV90aW1lICgpID0gbGFzdF9jeWNsZV90aW1lICh0ICgpKVxubGV0IGxvbmdfY3ljbGVzIH5hdF9sZWFzdCA9IGxvbmdfY3ljbGVzICh0ICgpKSB+YXRfbGVhc3RcbmxldCBldmVudF9wcmVjaXNpb25fbnMgKCkgPSBldmVudF9wcmVjaXNpb24gKHQgKCkpXG5sZXQgZXZlbnRfcHJlY2lzaW9uICgpID0gVGltZV9ucy5TcGFuLnRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCAoZXZlbnRfcHJlY2lzaW9uX25zICgpKVxuXG5sZXQgc2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIGkgPVxuICBzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgKHQgKCkpIGlcbjs7XG5cbmxldCBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSAoKSA9IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlICh0ICgpKVxubGV0IHNldF9yZWNvcmRfYmFja3RyYWNlcyBib29sID0gc2V0X3JlY29yZF9iYWNrdHJhY2VzICh0ICgpKSBib29sXG5sZXQgZm9yY2VfY3VycmVudF9jeWNsZV90b19lbmQgKCkgPSBmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCAodCAoKSlcbmxldCB5aWVsZCAoKSA9IHlpZWxkICh0ICgpKVxuXG5sZXQgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gP21heV9yZXR1cm5faW1tZWRpYXRlbHkgKCkgPVxuICB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA/bWF5X3JldHVybl9pbW1lZGlhdGVseSAodCAoKSlcbjs7XG5cbmxldCB5aWVsZF9ldmVyeSB+biA9XG4gIGxldCB5aWVsZF9ldmVyeSA9IFN0YWdlZC51bnN0YWdlICh5aWVsZF9ldmVyeSB+bikgaW5cbiAgbGV0IHQgPSB0ICgpIGluXG4gIHN0YWdlIChmdW4gKCkgLT4geWllbGRfZXZlcnkgdClcbjs7XG5cbmxldCBudW1fam9ic19ydW4gKCkgPSBudW1fam9ic19ydW4gKHQgKCkpXG5sZXQgbnVtX3BlbmRpbmdfam9icyAoKSA9IG51bV9wZW5kaW5nX2pvYnMgKHQgKCkpXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gPSBydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluXG4gIGxldCBsYXN0X2N5Y2xlX251bV9qb2JzICgpID0gbGFzdF9jeWNsZV9udW1fam9icyAodCAoKSlcbiAgbGV0IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCBmID0gcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0ICh0ICgpKSB+ZlxuICBsZXQgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCBmID0gcnVuX2V2ZXJ5X2N5Y2xlX2VuZCAodCAoKSkgfmZcbiAgbGV0IGFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rIH5mID0gYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2sgKHQgKCkpIH5mXG4gIGxldCBhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2sgfmYgPSBhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2sgKHQgKCkpIH5mXG5cbiAgbGV0IHJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rX2V4biBoYW5kbGUgPVxuICAgIHJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rX2V4biAodCAoKSkgaGFuZGxlXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leG4gaGFuZGxlID1cbiAgICByZW1vdmVfZXZlcnlfY3ljbGVfZW5kX2hvb2tfZXhuICh0ICgpKSBoYW5kbGVcbiAgOztcblxuICBsZXQgd2l0aF9leGVjdXRpb25fY29udGV4dCBleGVjdXRpb25fY29udGV4dCBmID1cbiAgICB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSBleGVjdXRpb25fY29udGV4dCB+ZlxuICA7O1xuXG4gIGxldCB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSBleGVjdXRpb25fY29udGV4dCB+ZiB4ID1cbiAgICB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSAodCAoKSkgZXhlY3V0aW9uX2NvbnRleHQgfmYgeFxuICA7O1xuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gU2NoZWR1bGVyXG4iLCIoKiogU2NoZWR1bGUgam9icyB0byBydW4gYXQgYSB0aW1lIGluIHRoZSBmdXR1cmUuXG5cbiAgICBUaGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgaGVhcCBvZiBldmVudHMsIG9uZSBmb3IgZWFjaCBqb2IgdGhhdCBuZWVkcyB0b1xuICAgIHJ1biBpbiB0aGUgZnV0dXJlLiAgVGhlIEFzeW5jIHNjaGVkdWxlciBpcyByZXNwb25zaWJsZSBmb3Igd2FraW5nIHVwIGF0IHRoZSByaWdodCB0aW1lXG4gICAgdG8gcnVuIHRoZSBqb2JzLiAqKVxuXG5vcGVuIENvcmVcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgT3JfdGltZW91dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIFsgYFJlc3VsdCBvZiAnYVxuICAgIHwgYFRpbWVvdXRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgQ2xvY2sgPSBzaWdcbiAgbW9kdWxlIE9yX3RpbWVvdXQgPSBPcl90aW1lb3V0XG5cbiAgbW9kdWxlIFRpbWUgOiBzaWdcbiAgICBtb2R1bGUgU3BhbiA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgZW5kXG5cbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgKCoqIFtydW5fYXQgdGltZSBmIGFdIHJ1bnMgW2YgYV0gYXMgc29vbiBhcyBwb3NzaWJsZSBhZnRlciBbdGltZV0uICBJZiBbdGltZV0gaXMgaW4gdGhlXG4gICAgICBwYXN0LCB0aGVuIFtydW5fYXRdIHdpbGwgaW1tZWRpYXRlbHkgc2NoZWR1bGUgYSBqb2IgW3RdIHRoYXQgd2lsbCBydW4gW2YgYV0uICBJbiBub1xuICAgICAgc2l0dWF0aW9uIHdpbGwgW3J1bl9hdF0gYWN0dWFsbHkgY2FsbCBbZl0gaXRzZWxmLiAgVGhlIGNhbGwgdG8gW2ZdIHdpbGwgYWx3YXlzIGJlIGluXG4gICAgICBhbm90aGVyIGpvYi4gKilcbiAgdmFsIHJ1bl9hdCA6IFRpbWUudCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuXG4gICgqKiBbcnVuX2FmdGVyXSBpcyBsaWtlIFtydW5fYXRdLCBleGNlcHQgdGhhdCBvbmUgc3BlY2lmaWVzIGEgdGltZSBzcGFuIHJhdGhlciB0aGFuIGFuXG4gICAgICBhYnNvbHV0ZSB0aW1lLiAqKVxuICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcblxuICAoKiogW2F0IHRpbWVdIHJldHVybnMgYSBkZWZlcnJlZCBbZF0gdGhhdCB3aWxsIGJlY29tZSBkZXRlcm1pbmVkIGFzIHNvb24gYXMgcG9zc2libGVcbiAgICAgIGFmdGVyIFt0aW1lXS4gKilcbiAgdmFsIGF0IDogVGltZS50IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBbYWZ0ZXJdIGlzIGxpa2UgW2F0XSwgZXhjZXB0IHRoYXQgb25lIHNwZWNpZmllcyBhIHRpbWUgc3BhbiByYXRoZXIgdGhhbiBhbiBhYnNvbHV0ZVxuICAgICAgdGltZS4gKilcbiAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFt3aXRoX3RpbWVvdXQgc3BhbiBkXSByZXR1cm5zIGEgZGVmZXJyZWQgdGhhdCB3aWxsIGJlY29tZSBkZXRlcm1pbmVkIGFmdGVyIGVpdGhlclxuICAgICAgW3NwYW5dIGVsYXBzZXMgb3IgW2RdIGlzIGRldGVybWluZWQsIHJldHVybmluZyBlaXRoZXIgW2BUaW1lb3V0XSBvciBbYFJlc3VsdF1cbiAgICAgIGRlcGVuZGluZyBvbiB3aGljaCBvbmUgc3VjY2VlZGVkIGZpcnN0LiAgQXQgdGhlIHRpbWUgdGhlIHJldHVybmVkIGRlZmVycmVkIGJlY29tZXNcbiAgICAgIGRldGVybWluZWQsIGJvdGggdGhpbmdzIG1heSBoYXZlIGhhcHBlbmVkLCBpbiB3aGljaCBjYXNlIFtgUmVzdWx0XSBpcyBnaXZlblxuICAgICAgcHJlZmVyZW5jZS4gKilcbiAgdmFsIHdpdGhfdGltZW91dCA6IFRpbWUuU3Bhbi50IC0+ICdhIERlZmVycmVkLnQgLT4gJ2EgT3JfdGltZW91dC50IERlZmVycmVkLnRcblxuICAoKiogRXZlbnRzIHByb3ZpZGUgdmFyaWFudHMgb2YgW3J1bl9hdF0gYW5kIFtydW5fYWZ0ZXJdIHdpdGggdGhlIGFiaWxpdHkgdG8gYWJvcnQgb3JcbiAgICAgIHJlc2NoZWR1bGUgYW4gZXZlbnQgdGhhdCBoYXNuJ3QgeWV0IGhhcHBlbmVkLiAgT25jZSBhbiBldmVudCBoYXBwZW5zIG9yIGlzIGFib3J0ZWQsXG4gICAgICBBc3luYyBkb2Vzbid0IHVzZSBhbnkgc3BhY2UgZm9yIHRyYWNraW5nIGl0LiAqKVxuICBtb2R1bGUgRXZlbnQgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2gpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlIHRfdW5pdCA9ICh1bml0LCB1bml0KSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgc2NoZWR1bGVkX2F0IDogKF8sIF8pIHQgLT4gVGltZS50XG5cbiAgICBtb2R1bGUgU3RhdHVzIDogc2lnXG4gICAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgICB8IEFib3J0ZWQgb2YgJ2FcbiAgICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgICAgICB8IFNjaGVkdWxlZF9hdCBvZiBUaW1lLnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICAoKiogSWYgW3N0YXR1c10gcmV0dXJucyBbU2NoZWR1bGVkX2F0IHRpbWVdLCBpdCBpcyBwb3NzaWJsZSB0aGF0IFt0aW1lIDwgVGltZS5ub3cgKCldXG4gICAgICAgIGlmIEFzeW5jJ3Mgc2NoZWR1bGVyIGhhc24ndCB5ZXQgZ290dGVuIHRoZSBjaGFuY2UgdG8gdXBkYXRlIGl0cyBjbG9jaywgZS5nLiwgZHVlXG4gICAgICAgIHRvIHVzZXIgam9icyBydW5uaW5nLiAqKVxuICAgIHZhbCBzdGF0dXMgOiAoJ2EsICdoKSB0IC0+ICgnYSwgJ2gpIFN0YXR1cy50XG5cbiAgICAoKiogTGV0IFt0ID0gcnVuX2F0IHRpbWUgZiB6XS4gIEF0IFt0aW1lXSwgdGhpcyBydW5zIFtmIHpdIGFuZCB0cmFuc2l0aW9ucyBbc3RhdHVzIHRdXG4gICAgICAgIHRvIFtIYXBwZW5lZCBoXSwgd2hlcmUgW2hdIGlzIHJlc3VsdCBvZiBbZiB6XS5cblxuICAgICAgICBNb3JlIHByZWNpc2VseSwgYXQgW3RpbWVdLCBwcm92aWRlZCBbYWJvcnQgdCBhXSBoYXMgbm90IHByZXZpb3VzbHkgYmVlbiBjYWxsZWQsXG4gICAgICAgIHRoaXMgd2lsbCBjYWxsIFtmIHpdLCB3aXRoIHRoZSBndWFyYW50ZWUgdGhhdCBbc3RhdHVzIHQgPSBTY2hlZHVsZWRfYXQgdGltZV0uICBJZlxuICAgICAgICBbZiB6XSByZXR1cm5zIFtoXSBhbmQgZGlkIG5vdCBjYWxsIFthYm9ydCB0IGFdLCB0aGVuIFtzdGF0dXMgdF0gYmVjb21lcyBbSGFwcGVuZWRcbiAgICAgICAgaF0uICBJZiBbZiB6XSBjYWxscyBbYWJvcnQgdCBhXSwgdGhlbiB0aGUgcmVzdWx0IG9mIFtmXSBpcyBpZ25vcmVkLCBhbmQgW3N0YXR1cyB0XVxuICAgICAgICBpcyBbQWJvcnRlZCBhXS5cblxuICAgICAgICBJZiBbZiB6XSByYWlzZXMsIHRoZW4gW3N0YXR1cyB0XSBkb2VzIG5vdCB0cmFuc2l0aW9uIGFuZCByZW1haW5zIFtTY2hlZHVsZWRfYXRcbiAgICAgICAgdGltZV0sIGFuZCB0aGUgZXhjZXB0aW9uIGlzIHNlbnQgdG8gdGhlIG1vbml0b3IgaW4gZWZmZWN0IHdoZW4gW3J1bl9hdF0gd2FzXG4gICAgICAgIGNhbGxlZC4gKilcbiAgICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgneiAtPiAnaCkgLT4gJ3ogLT4gKF8sICdoKSB0XG5cbiAgICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcblxuICAgIG1vZHVsZSBBYm9ydF9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5BYm9ydF9yZXN1bHRcblxuICAgICgqKiBbYWJvcnQgdF0gY2hhbmdlcyBbc3RhdHVzIHRdIHRvIFtBYm9ydGVkXSBhbmQgcmV0dXJucyBbT2tdLCB1bmxlc3MgW3RdXG4gICAgICAgIHByZXZpb3VzbHkgaGFwcGVuZWQgb3Igd2FzIHByZXZpb3VzbHkgYWJvcnRlZC4gKilcbiAgICB2YWwgYWJvcnQgOiAoJ2EsICdoKSB0IC0+ICdhIC0+ICgnYSwgJ2gpIEFib3J0X3Jlc3VsdC50XG5cbiAgICAoKiogW2Fib3J0X2V4biB0IGFdIHJldHVybnMgW3VuaXRdIGlmIFthYm9ydCB0IGEgPSBgT2tdLCBhbmQgb3RoZXJ3aXNlIHJhaXNlcy4gKilcbiAgICB2YWwgYWJvcnRfZXhuIDogKCdhLCAnaCkgdCAtPiAnYSAtPiB1bml0XG5cbiAgICAoKiogW2Fib3J0X2lmX3Bvc3NpYmxlIHQgYSA9IGlnbm9yZSAoYWJvcnQgdCBhKV0uICopXG4gICAgdmFsIGFib3J0X2lmX3Bvc3NpYmxlIDogKCdhLCBfKSB0IC0+ICdhIC0+IHVuaXRcblxuICAgIG1vZHVsZSBGaXJlZCA9IFRpbWVfc291cmNlLkV2ZW50LkZpcmVkXG5cbiAgICB2YWwgZmlyZWQgOiAoJ2EsICdoKSB0IC0+ICgnYSwgJ2gpIEZpcmVkLnQgRGVmZXJyZWQudFxuXG4gICAgbW9kdWxlIFJlc2NoZWR1bGVfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuUmVzY2hlZHVsZV9yZXN1bHRcblxuICAgICgqKiBbcmVzY2hlZHVsZV9hdCB0XSBhbmQgW3Jlc2NoZWR1bGVfYWZ0ZXIgdF0gY2hhbmdlIHRoZSB0aW1lIHRoYXQgW3RdIHdpbGwgZmlyZSwgaWZcbiAgICAgICAgcG9zc2libGUsIGFuZCBpZiBub3QsIGdpdmUgYSByZWFzb24gd2h5LiAgTGlrZSBbcnVuX2F0XSwgaWYgdGhlIHJlcXVlc3RlZCB0aW1lIGlzXG4gICAgICAgIGluIHRoZSBwYXN0LCB0aGUgZXZlbnQgd2lsbCBiZSBzY2hlZHVsZWQgdG8gcnVuIGltbWVkaWF0ZWx5LiAgSWYgW3Jlc2NoZWR1bGVfYXQgdFxuICAgICAgICB0aW1lID0gT2tdLCB0aGVuIHN1YnNlcXVlbnRseSBbc2NoZWR1bGVkX2F0IHQgPSB0aW1lXS4gICopXG4gICAgdmFsIHJlc2NoZWR1bGVfYXQgOiAoJ2EsICdoKSB0IC0+IFRpbWUudCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG5cbiAgICB2YWwgcmVzY2hlZHVsZV9hZnRlciA6ICgnYSwgJ2gpIHQgLT4gVGltZS5TcGFuLnQgLT4gKCdhLCAnaCkgUmVzY2hlZHVsZV9yZXN1bHQudFxuXG4gICAgKCoqIFthdCB0aW1lXSAgICBpcyBbcnVuX2F0ICAgIHRpbWUgaWdub3JlICgpXS5cbiAgICAgICAgW2FmdGVyIHRpbWVdIGlzIFtydW5fYWZ0ZXIgdGltZSBpZ25vcmUgKCldLlxuXG4gICAgICAgIFlvdSBzaG91bGQgZ2VuZXJhbGx5IHByZWZlciB0byB1c2UgdGhlIFtydW5fKl0gZnVuY3Rpb25zLCB3aGljaCBhbGxvdyB5b3UgdG9cbiAgICAgICAgc3luY2hyb25vdXNseSB1cGRhdGUgc3RhdGUgdmlhIGEgdXNlci1zdXBwbGllZCBmdW5jdGlvbiB3aGVuIHRoZSBldmVudFxuICAgICAgICB0cmFuc2l0aW9ucyB0byBbSGFwcGVuZWRdLiAgVGhhdCBpcywgdGhlcmUgaXMgYW4gaW1wb3J0YW50IGRpZmZlcmVuY2UgYmV0d2VlbjpcblxuICAgICAgICB7W1xuICAgICAgICAgIGxldCB0ID0gcnVuX2F0IHRpbWUgZiAoKSBdfVxuXG4gICAgICAgIGFuZDpcblxuICAgICAgICB7W1xuICAgICAgICAgIGxldCB0ID0gYXQgdGltZSBpblxuICAgICAgICAgIGZpcmVkIHRcbiAgICAgICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgICAgICB8IEhhcHBlbmVkICgpIC0+IGYgKClcbiAgICAgICAgICB8IEFib3J0ZWQgKCkgLT4gKCkgXX1cblxuICAgICAgICBXaXRoIFtydW5fYXRdLCBpZiBbc3RhdHVzIHQgPSBIYXBwZW5lZF0sIG9uZSBrbm93cyB0aGF0IFtmXSBoYXMgcnVuLiAgV2l0aCBbYXRdXG4gICAgICAgIGFuZCBbZmlyZWRdLCBvbmUgZG9lcyBub3Qga25vdyB3aGV0aGVyIFtmXSBoYXMgeWV0IHJ1bjsgaXQgbWF5IHN0aWxsIGJlIHNjaGVkdWxlZFxuICAgICAgICB0byBydW4uICBUaHVzLCB3aXRoIFthdF0gYW5kIFtmaXJlZF0sIGl0IGlzIGVhc3kgdG8gaW50cm9kdWNlIGEgcmFjZS4gIEZvclxuICAgICAgICBleGFtcGxlLCBjb25zaWRlciB0aGVzZSB0d28gY29kZSBzbmlwcGV0czpcblxuICAgICAgICB7W1xuICAgICAgICAgIGxldCB0ID0gRXZlbnQuYWZ0ZXIgKHNlYyAyLikgaW5cbiAgICAgICAgICB1cG9uIChFdmVudC5maXJlZCB0KSAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgQWJvcnRlZCAoKSAtPiAoKVxuICAgICAgICAgICAgfCBIYXBwZW5lZCAoKSAtPiBwcmludGYgXCJUaW1lciBmaXJlZFwiKTtcbiAgICAgICAgICB1cG9uIGRlZmVycmVkX2V2ZW50IChmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEV2ZW50LmFib3J0IHQgKCkgd2l0aFxuICAgICAgICAgICAgfCBPayAtPiBwcmludGYgXCJFdmVudCBvY2N1cnJlZFwiXG4gICAgICAgICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCAoKSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCAoKSAtPiBwcmludGYgXCJFdmVudCBvY2N1cnJlZCBhZnRlciB0aW1lciBmaXJlZFwiKTsgXX1cblxuICAgICAgICB7W1xuICAgICAgICAgIGxldCB0ID0gRXZlbnQucnVuX2FmdGVyIChzZWMgMi4pIHByaW50ZiBcIlRpbWVyIGZpcmVkXCIgaW5cbiAgICAgICAgICB1cG9uIGRlZmVycmVkX2V2ZW50IChmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEV2ZW50LmFib3J0IHQgKCkgd2l0aFxuICAgICAgICAgICAgfCBPayAtPiBwcmludGYgXCJFdmVudCBvY2N1cnJlZFwiXG4gICAgICAgICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCAoKSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCAoKSAtPiBwcmludGYgXCJFdmVudCBvY2N1cnJlZCBhZnRlciB0aW1lciBmaXJlZFwiKTsgXX1cblxuICAgICAgICBJbiBib3RoIHNuaXBwZXRzLCBpZiBbRXZlbnQuYWJvcnRdIHJldHVybnMgW09rXSwgXCJUaW1lciBmaXJlZFwiIGlzIG5ldmVyIHByaW50ZWQuXG4gICAgICAgIEhvd2V2ZXIsIHRoZSBmaXJzdCBzbmlwcGV0IG1pZ2h0IHByaW50IFwiRXZlbnQgb2NjdXJyZWQgYWZ0ZXIgdGltZXIgZmlyZWRcIiBhbmQgdGhlblxuICAgICAgICBcIlRpbWVyIGZpcmVkXCIuICBUaGlzIGNvbmZ1c2VkIG9yZGVyaW5nIGNhbm5vdCBoYXBwZW4gd2l0aCBbRXZlbnQucnVuX2FmdGVyXS4gKilcbiAgICB2YWwgYXQgOiBUaW1lLnQgLT4gKF8sIHVuaXQpIHRcblxuICAgIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IChfLCB1bml0KSB0XG4gIGVuZFxuXG4gICgqKiBbYXRfdmFyeWluZ19pbnRlcnZhbHMgZiA/c3RvcF0gcmV0dXJucyBhIHN0cmVhbSB3aG9zZSBuZXh0IGVsZW1lbnQgYmVjb21lc1xuICAgICAgZGV0ZXJtaW5lZCBieSBjYWxsaW5nIFtmICgpXSBhbmQgd2FpdGluZyBmb3IgdGhhdCBhbW91bnQgb2YgdGltZSwgYW5kIHRoZW4gbG9vcGluZ1xuICAgICAgdG8gZGV0ZXJtaW5lIHN1YnNlcXVlbnQgZWxlbWVudHMuICBUaGUgc3RyZWFtIHdpbGwgZW5kIGFmdGVyIFtzdG9wXSBiZWNvbWVzXG4gICAgICBkZXRlcm1pbmVkLiAqKVxuICB2YWwgYXRfdmFyeWluZ19pbnRlcnZhbHNcbiAgICA6ICA/c3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiAodW5pdCAtPiBUaW1lLlNwYW4udClcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG5cbiAgKCoqIFthdF9pbnRlcnZhbHMgaW50ZXJ2YWwgP3N0YXJ0ID9zdG9wXSByZXR1cm5zIGEgc3RyZWFtIHdob3NlIGVsZW1lbnRzIHdpbGwgYmVjb21lXG4gICAgICBkZXRlcm1pbmVkIGF0IG5vbm5lZ2F0aXZlIGludGVnZXIgbXVsdGlwbGVzIG9mIFtpbnRlcnZhbF0gYWZ0ZXIgdGhlIFtzdGFydF0gdGltZSxcbiAgICAgIHVudGlsIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQ6XG5cbiAgICAgIHt2XG4gICAgICAgIHN0YXJ0ICsgMCAqIGludGVydmFsXG4gICAgICAgIHN0YXJ0ICsgMSAqIGludGVydmFsXG4gICAgICAgIHN0YXJ0ICsgMiAqIGludGVydmFsXG4gICAgICAgIHN0YXJ0ICsgMyAqIGludGVydmFsXG4gICAgICAgIC4uLlxuICAgICAgdn1cblxuICAgICAgTm90ZSB0aGF0IG9ubHkgZWxlbWVudHMgdGhhdCBhcmUgc3RyaWN0bHkgaW4gdGhlIGZ1dHVyZSBldmVyIGJlY29tZSBkZXRlcm1pbmVkLlxuICAgICAgSW4gcGFydGljdWxhciwgaWYgW3N0YXJ0XSBpcyBub3QgaW4gdGhlIGZ1dHVyZSwgb3IgW3N0YXJ0XSBpcyBub3QgcHJvdmlkZWQsXG4gICAgICB0aGVuIHRoZXJlIHdpbGwgYmUgbm8gZWxlbWVudCBiZWZvcmUgdGhlIFtpbnRlcnZhbF0gaGFzIHBhc3NlZC5cblxuICAgICAgSWYgdGhlIGludGVydmFsIGlzIHRvbyBzbWFsbCBvciB0aGUgQ1BVIGlzIHRvbyBsb2FkZWQsIFthdF9pbnRlcnZhbHNdIHdpbGwgc2tpcFxuICAgICAgdW50aWwgdGhlIG5leHQgdXBjb21pbmcgbXVsdGlwbGUgb2YgW2ludGVydmFsXSBhZnRlciBbc3RhcnRdLiAqKVxuICB2YWwgYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudFxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gdW5pdCBBc3luY19zdHJlYW0udFxuXG4gICgqKiBbZXZlcnknID9zdGFydCA/c3RvcCBzcGFuIGZdIHJ1bnMgW2YgKCldIGV2ZXJ5IFtzcGFuXSBhbW91bnQgb2YgdGltZSBzdGFydGluZyB3aGVuXG4gICAgICBbc3RhcnRdIGJlY29tZXMgZGV0ZXJtaW5lZCBhbmQgc3RvcHBpbmcgd2hlbiBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkLiAgW2V2ZXJ5J11cbiAgICAgIHdhaXRzIHVudGlsIHRoZSBvdXRjb21lIG9mIFtmICgpXSBiZWNvbWVzIGRldGVybWluZWQgYmVmb3JlIHdhaXRpbmcgZm9yIHRoZSBuZXh0XG4gICAgICBbc3Bhbl0uXG5cbiAgICAgIEl0IGlzIGd1YXJhbnRlZWQgdGhhdCBpZiBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkLCBldmVuIGR1cmluZyBldmFsdWF0aW9uIG9mIFtmXSxcbiAgICAgIHRoZW4gW2ZdIHdpbGwgbm90IGJlIGNhbGxlZCBhZ2FpbiBieSBhIHN1YnNlcXVlbnQgaXRlcmF0aW9uIG9mIHRoZSBsb29wLlxuXG4gICAgICBJdCBpcyBhbiBlcnJvciBmb3IgW3NwYW5dIHRvIGJlIG5vbnBvc2l0aXZlLlxuXG4gICAgICBbY29udGludWVfb25fZXJyb3JdIGNvbnRyb2xzIHdoYXQgc2hvdWxkIGhhcHBlbiBpZiBbZl0gcmFpc2VzIGFuIGV4Y2VwdGlvbi5cbiAgICAgIFdpdGggW35jb250aW51ZV9vbl9lcnJvcjpmYWxzZV0sIGl0ZXJhdGlvbiBvbmx5IGNvbnRpbnVlcyBpZiBbZl0gc3VjY2Vzc2Z1bGx5XG4gICAgICByZXR1cm5zIGEgZGVmZXJyZWQgYW5kIHRoYXQgZGVmZXJyZWQgaXMgZGV0ZXJtaW5lZC5cbiAgICAgIFdpdGggW35jb250aW51ZV9vbl9lcnJvcjp0cnVlXSwgaXRlcmF0aW9uIGFsc28gY29udGludWVzIGlmIFtmXSByYWlzZXMgYW4gZXhjZXB0aW9uLlxuICAgICAgSWYgW2ZdIHJhaXNlcyBhbiBleGNlcHRpb24gYXN5bmNocm9ub3VzbHksIHRoaXMgbWF5IGNhdXNlIHVzIHRvIHByb2NlZWQgd2l0aCB0aGVcbiAgICAgIG5leHQgaXRlcmF0aW9uIHdoaWxlIHRoZSBwcmV2aW91cyBjYWxsIHRvIFtmXSBpcyBzdGlsbCBydW5uaW5nLlxuXG4gICAgICBFeGNlcHRpb25zIHJhaXNlZCBieSBbZl0gYXJlIGFsd2F5cyBzZW50IHRvIHRoZSBtb25pdG9yIGluIGVmZmVjdCB3aGVuIFtldmVyeSddIHdhc1xuICAgICAgY2FsbGVkLCBldmVuIHdpdGggW35jb250aW51ZV9vbl9lcnJvcjp0cnVlXS5cblxuICAgICAgSWYgW2ZpbmlzaGVkXSBpcyBzdXBwbGllZCwgW2V2ZXJ5J10gd2lsbCBmaWxsIGl0IG9uY2UgYWxsIG9mIHRoZSBmb2xsb3dpbmcgYmVjb21lXG4gICAgICBkZXRlcm1pbmVkOiBbc3RhcnRdLCBbc3RvcF0sIGFuZCB0aGUgb3V0Y29tZSBvZiB0aGUgZmluYWwgY2FsbCB0byBbZl0uICopXG4gIHZhbCBldmVyeSdcbiAgICA6ICA/c3RhcnQ6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtyZXR1cm4gKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiA/ZmluaXNoZWQ6dW5pdCBJdmFyLnRcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtldmVyeSA/c3RhcnQgP3N0b3Agc3BhbiBmXSBpc1xuICAgICAgW2V2ZXJ5JyA/c3RhcnQgP3N0b3Agc3BhbiAoZnVuICgpIC0+IGYgKCk7IHJldHVybiAoKSldLiAqKVxuICB2YWwgZXZlcnlcbiAgICA6ICA/c3RhcnQ6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtyZXR1cm4gKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wIHNwYW4gZl0gcnVucyBbZigpXSBhdCBpbmNyZW1lbnRzIG9mIFtzdGFydCArIGkgKlxuICAgICAgc3Bhbl0gZm9yIG5vbm5lZ2F0aXZlIGludGVnZXJzIFtpXSwgdW50aWwgW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZC5cbiAgICAgIElmIHRoZSByZXN1bHQgb2YgW2ZdIGlzIG5vdCBkZXRlcm1pbmVkIGZhc3QgZW5vdWdoIHRoZW4gdGhlIG5leHQgaW50ZXJ2YWwocylcbiAgICAgIGFyZSBza2lwcGVkIHNvIHRoYXQgdGhlcmUgYXJlIG5ldmVyIG11bHRpcGxlIGNvbmN1cnJlbnQgaW52b2NhdGlvbnMgb2YgW2ZdIGluXG4gICAgICBmbGlnaHQuXG5cbiAgICAgIEV4Y2VwdGlvbnMgcmFpc2VkIGJ5IFtmXSBhcmUgYWx3YXlzIHNlbnQgdG8gbW9uaXRvciBpbiBlZmZlY3Qgd2hlblxuICAgICAgW3J1bl9hdF9pbnRlcnZhbHMnXSB3YXMgY2FsbGVkLCBldmVuIHdpdGggW35jb250aW51ZV9vbl9lcnJvcjp0cnVlXS4gKilcbiAgdmFsIHJ1bl9hdF9pbnRlcnZhbHMnXG4gICAgOiAgP3N0YXJ0OlRpbWUudCAoKiogZGVmYXVsdCBpcyBbVGltZS5ub3cgKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3Igc3BhbiBmXSBpcyBlcXVpdmFsZW50IHRvOlxuXG4gICAgICB7W1xuICAgICAgICBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHNwYW5cbiAgICAgICAgICAoZnVuICgpIC0+IGYgKCk7IHJldHVybiAoKSkgXX0gKilcbiAgdmFsIHJ1bl9hdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtkdXJhdGlvbl9vZiBmXSBpbnZva2VzIFtmICgpXSBhbmQgbWVhc3VyZXMgaG93IGxvbmcgaXQgdGFrZXMgZnJvbSB0aGUgaW52b2NhdGlvblxuICAgICAgdG8gYWZ0ZXIgdGhlIGRlZmVycmVkIGlzIGRldGVybWluZWQuXG5cbiAgICAgIE5vdGUgdGhhdCB0aGUgbWVhc3VyZW1lbnQgaXMgbm90IGV4YWN0OyBiZWNhdXNlIGl0IGludm9sdmVzIGFuIGFkZGl0aW9uYWwgbWFwIG9uIHRoZVxuICAgICAgZGVmZXJyZWQsIHRoZSB0aW1pbmcgYWxzbyBpbmNsdWRlcyB0aGUgZHVyYXRpb24gb2Ygam9icyBpbiB0aGUgam9iIHF1ZXVlIHdoZW4gW2YgKCldXG4gICAgICBpcyBkZXRlcm1pbmVkLiAqKVxuICB2YWwgZHVyYXRpb25fb2YgOiAodW5pdCAtPiAnYSBEZWZlcnJlZC50KSAtPiAoJ2EgKiBUaW1lLlNwYW4udCkgRGVmZXJyZWQudFxuZW5kXG5cbigqKiBbQ2xvY2tfZGVwcmVjYXRlZF0gaXMgdXNlZCBpbiBbUmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZV0gdG8gY3JlYXRlIGEgY2xvY2tcbiAgICBtb2R1bGUgaW4gd2hpY2ggYWxsIGZ1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZC4gKilcbm1vZHVsZSB0eXBlIENsb2NrX2RlcHJlY2F0ZWQgPSBzaWdcbiAgbW9kdWxlIE9yX3RpbWVvdXQgPSBPcl90aW1lb3V0XG5cbiAgbW9kdWxlIFRpbWUgOiBzaWdcbiAgICBtb2R1bGUgU3BhbiA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgZW5kXG5cbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgdmFsIHJ1bl9hdCA6IFRpbWUudCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHJ1bl9hZnRlciA6IFRpbWUuU3Bhbi50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgYXQgOiBUaW1lLnQgLT4gdW5pdCBEZWZlcnJlZC50IFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiB1bml0IERlZmVycmVkLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCB3aXRoX3RpbWVvdXQgOiBUaW1lLlNwYW4udCAtPiAnYSBEZWZlcnJlZC50IC0+ICdhIE9yX3RpbWVvdXQudCBEZWZlcnJlZC50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICBtb2R1bGUgRXZlbnQgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2gpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlIHRfdW5pdCA9ICh1bml0LCB1bml0KSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB2YWwgaW52YXJpYW50IDogJ2EgSW52YXJpYW50LnQgLT4gJ2IgSW52YXJpYW50LnQgLT4gKCdhLCAnYikgdCBJbnZhcmlhbnQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBzY2hlZHVsZWRfYXQgOiAoXywgXykgdCAtPiBUaW1lLnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgU3RhdHVzIDogc2lnXG4gICAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgICB8IEFib3J0ZWQgb2YgJ2FcbiAgICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgICAgICB8IFNjaGVkdWxlZF9hdCBvZiBUaW1lLnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICB2YWwgc3RhdHVzIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBTdGF0dXMudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgQWJvcnRfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuQWJvcnRfcmVzdWx0XG5cbiAgICB2YWwgYWJvcnQgOiAoJ2EsICdoKSB0IC0+ICdhIC0+ICgnYSwgJ2gpIEFib3J0X3Jlc3VsdC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGFib3J0X2V4biA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gdW5pdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhYm9ydF9pZl9wb3NzaWJsZSA6ICgnYSwgXykgdCAtPiAnYSAtPiB1bml0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIEZpcmVkID0gVGltZV9zb3VyY2UuRXZlbnQuRmlyZWRcblxuICAgIHZhbCBmaXJlZCA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgRmlyZWQudCBEZWZlcnJlZC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIFJlc2NoZWR1bGVfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuUmVzY2hlZHVsZV9yZXN1bHRcblxuICAgIHZhbCByZXNjaGVkdWxlX2F0IDogKCdhLCAnaCkgdCAtPiBUaW1lLnQgLT4gKCdhLCAnaCkgUmVzY2hlZHVsZV9yZXN1bHQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCByZXNjaGVkdWxlX2FmdGVyIDogKCdhLCAnaCkgdCAtPiBUaW1lLlNwYW4udCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGF0IDogVGltZS50IC0+IChfLCB1bml0KSB0IFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IChfLCB1bml0KSB0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuICBlbmRcblxuICB2YWwgYXRfdmFyeWluZ19pbnRlcnZhbHNcbiAgICA6ICA/c3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiAodW5pdCAtPiBUaW1lLlNwYW4udClcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudFxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gdW5pdCBBc3luY19zdHJlYW0udFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGV2ZXJ5J1xuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+ID9maW5pc2hlZDp1bml0IEl2YXIudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBldmVyeVxuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgcnVuX2F0X2ludGVydmFscydcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudCAoKiogZGVmYXVsdCBpcyBbVGltZS5ub3cgKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGR1cmF0aW9uX29mIDogKHVuaXQgLT4gJ2EgRGVmZXJyZWQudCkgLT4gKCdhICogVGltZS5TcGFuLnQpIERlZmVycmVkLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuZW5kXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIChcbnN0cnVjdFxuICBbQEBAd2FybmluZyBcIi0zXCJdXG5cbiAgbW9kdWxlIF8gKEMgOiBDbG9jaykgOiBDbG9ja19kZXByZWNhdGVkID0gQ1xuXG4gIG1vZHVsZSBfIChDIDogQ2xvY2tfZGVwcmVjYXRlZCkgOiBDbG9jayA9IENcbmVuZCA6XG5zaWcgZW5kKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIENsb2NrID0gQ2xvY2tfaW50Zi5DbG9ja1xubW9kdWxlIHR5cGUgQ2xvY2tfZGVwcmVjYXRlZCA9IENsb2NrX2ludGYuQ2xvY2tfZGVwcmVjYXRlZFxuXG5tb2R1bGUgT3JfdGltZW91dCA9IENsb2NrX2ludGYuT3JfdGltZW91dFxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcblxubGV0IHRpbWVfc291cmNlICgpID0gKFNjaGVkdWxlci50ICgpKS50aW1lX3NvdXJjZSB8PiBUaW1lX3NvdXJjZS5vZl9zeW5jaHJvbm91c1xubGV0IGFmdGVyIHNwYW4gPSBUaW1lX3NvdXJjZS5hZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW5cbmxldCBhdCB0aW1lID0gVGltZV9zb3VyY2UuYXQgKHRpbWVfc291cmNlICgpKSB0aW1lXG5cbmxldCBhdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCBjb21wdXRlX3NwYW4gPVxuICBUaW1lX3NvdXJjZS5hdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCAodGltZV9zb3VyY2UgKCkpIGNvbXB1dGVfc3BhblxuOztcblxubGV0IGF0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgaW50ZXJ2YWwgPVxuICBUaW1lX3NvdXJjZS5hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wICh0aW1lX3NvdXJjZSAoKSkgaW50ZXJ2YWxcbjs7XG5cbmxldCBldmVyeScgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgc3BhbiBmID1cbiAgVGltZV9zb3VyY2UuZXZlcnknID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmXG47O1xuXG5sZXQgZXZlcnkgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBzcGFuIGYgPVxuICBUaW1lX3NvdXJjZS5ldmVyeSA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmXG47O1xuXG5sZXQgcnVuX2FmdGVyIHNwYW4gZiBhID0gVGltZV9zb3VyY2UucnVuX2FmdGVyICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmIGFcbmxldCBydW5fYXQgdGltZSBmIGEgPSBUaW1lX3NvdXJjZS5ydW5fYXQgKHRpbWVfc291cmNlICgpKSB0aW1lIGYgYVxuXG5sZXQgcnVuX2F0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIGludGVydmFsIGYgPVxuICBUaW1lX3NvdXJjZS5ydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgKHRpbWVfc291cmNlICgpKSBpbnRlcnZhbCBmXG47O1xuXG5sZXQgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBpbnRlcnZhbCBmID1cbiAgVGltZV9zb3VyY2UucnVuX2F0X2ludGVydmFscydcbiAgICA/c3RhcnRcbiAgICA/c3RvcFxuICAgID9jb250aW51ZV9vbl9lcnJvclxuICAgICh0aW1lX3NvdXJjZSAoKSlcbiAgICBpbnRlcnZhbFxuICAgIGZcbjs7XG5cbmxldCB3aXRoX3RpbWVvdXQgc3BhbiBkID0gVGltZV9zb3VyY2Uud2l0aF90aW1lb3V0ICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBkXG5sZXQgZHVyYXRpb25fb2YgZiA9IFRpbWVfc291cmNlLmR1cmF0aW9uX29mICh0aW1lX3NvdXJjZSAoKSkgZlxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX3NvdXJjZS5FdmVudFxuXG4gIGxldCBhZnRlciBzcGFuID0gYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuXG4gIGxldCBydW5fYWZ0ZXIgc3BhbiBmIGEgPSBydW5fYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuIGYgYVxuICBsZXQgYXQgdGltZSA9IGF0ICh0aW1lX3NvdXJjZSAoKSkgdGltZVxuICBsZXQgcnVuX2F0IHRpbWUgZiB6ID0gcnVuX2F0ICh0aW1lX3NvdXJjZSAoKSkgdGltZSBmIHpcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIGkgYiA9XG4gICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRcbiAgICAgIHRoZW4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICBlbHNlIGYgaSBiIHQuKGkpID4+PiBmdW4gYiAtPiBsb29wIChpICsgMSkgYlxuICAgIGluXG4gICAgbG9vcCAwIGluaXQpXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG5sZXQgc2VxbWFwaSB0IH5mID1cbiAgbGV0JW1hcCBicyA9IGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT4gZiBpIGEgPj58IGZ1biBiIC0+IGIgOjogYnMpIGluXG4gIEFycmF5Lm9mX2xpc3QgKENvcmUuTGlzdC5yZXYgYnMpXG47O1xuXG5sZXQgYWxsIGRzID0gc2VxbWFwaSBkcyB+ZjooZnVuIF8geCAtPiB4KVxubGV0IGFsbF91bml0IGRzID0gRGVmZXJyZWQuaWdub3JlX20gKGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpKVxuXG5sZXQgaXRlcmkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgYWxsX3VuaXQgKEFycmF5Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbjs7XG5cbmxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgIGFsbCAoQXJyYXkubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbjs7XG5cbmxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYm9vbHMgPSBtYXBpIHQgfmhvdyB+ZiBpblxuICBBcnJheS5vZl9saXN0X3JldlxuICAgIChBcnJheS5mb2xkMl9leG4gdCBib29scyB+aW5pdDpbXSB+ZjooZnVuIGFjIHggYiAtPiBpZiBiIHRoZW4geCA6OiBhYyBlbHNlIGFjKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgQXJyYXkuZmlsdGVyX29wdFxuXG5sZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID1cbiAgbGV0JW1hcCB0ID0gbWFwaSB0IH5ob3cgfmYgaW5cbiAgQXJyYXkuY29uY2F0IChBcnJheS50b19saXN0IHQpXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRcbiAgICB0aGVuIHJldHVybiBOb25lXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCViaW5kIGYgaSB0LihpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXV4IChpICsgMSlcbiAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gIGluXG4gIGF1eCAwXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gXyBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIGVsdCBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiB0cnVlXG4gIHwgTm9uZSAtPiBmYWxzZVxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBub3QgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiBmYWxzZVxuICB8IE5vbmUgLT4gdHJ1ZVxuOztcblxubGV0IGl0ZXIgfmhvdyB0IH5mID0gaXRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgfmhvdyB0IH5mID0gZmlsdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGNvbmNhdF9tYXAgfmhvdyB0IH5mID0gY29uY2F0X21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChBcnJheS5pbml0IG4gfmY6Rm4uaWQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBpIGIgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgfCB4IDo6IHhzIC0+IGYgaSBiIHggPj4+IGZ1biBiIC0+IGxvb3AgeHMgKGkgKyAxKSBiXG4gICAgaW5cbiAgICBsb29wIHQgMCBpbml0KVxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBfIGEgeCAtPiBmIGEgeClcblxubGV0IHNlcW1hcGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGkgYSBpblxuICAgIGIgOjogYnMpXG4gID4+fCBMaXN0LnJldlxuOztcblxubGV0IGFsbCBkcyA9IHNlcW1hcGkgZHMgfmY6KGZ1biBfIHggLT4geClcbmxldCBhbGxfdW5pdCBkcyA9IERlZmVycmVkLmlnbm9yZV9tIChmb2xkIGRzIH5pbml0OigpIH5mOihmdW4gKCkgZCAtPiBkKSlcblxubGV0IGl0ZXJpIH5ob3cgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYFBhcmFsbGVsIGFzIGhvdyAtPlxuICAgIGFsbF91bml0IChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgam9iX2NvdW50IC0+XG4gICAgbGV0IHJlYyBnZW5fY29tcHV0YXRpb24gaWR4ID0gZnVuY3Rpb25cbiAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICBUaHJvdHRsZWQub2ZfdGh1bmsgKGZ1biAoKSAtPlxuICAgICAgICAgIFRocm90dGxlZC5ib3RoX3VuaXRcbiAgICAgICAgICAgIChUaHJvdHRsZWQuam9iIChmdW4gKCkgLT4gZiBpZHggeCkpXG4gICAgICAgICAgICAoZ2VuX2NvbXB1dGF0aW9uIChpZHggKyAxKSB4cykpXG4gICAgICB8IFtdIC0+IFRocm90dGxlZC5yZXR1cm4gKClcbiAgICBpblxuICAgIFRocm90dGxlZC5ydW4gKGdlbl9jb21wdXRhdGlvbiAwIHQpIH5tYXhfY29uY3VycmVudF9qb2JzOmpvYl9jb3VudFxuICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG47O1xuXG5sZXQgbWFwaSB+aG93IHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBQYXJhbGxlbCBhcyBob3cgLT5cbiAgICBhbGwgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBqb2JfY291bnQgLT5cbiAgICBsZXQgcmVjIGdlbl9jb21wdXRhdGlvbiBpZHggPSBmdW5jdGlvblxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgIFRocm90dGxlZC5vZl90aHVuayAoZnVuICgpIC0+XG4gICAgICAgICAgVGhyb3R0bGVkLm1hcDJcbiAgICAgICAgICAgIChUaHJvdHRsZWQuam9iIChmdW4gKCkgLT4gZiBpZHggeCkpXG4gICAgICAgICAgICAoZ2VuX2NvbXB1dGF0aW9uIChpZHggKyAxKSB4cylcbiAgICAgICAgICAgIH5mOihmdW4geSB5cyAtPiB5IDo6IHlzKSlcbiAgICAgIHwgW10gLT4gVGhyb3R0bGVkLnJldHVybiBbXVxuICAgIGluXG4gICAgVGhyb3R0bGVkLnJ1biAoZ2VuX2NvbXB1dGF0aW9uIDAgdCkgfm1heF9jb25jdXJyZW50X2pvYnM6am9iX2NvdW50XG4gIHwgYFNlcXVlbnRpYWwgLT4gc2VxbWFwaSB0IH5mXG47O1xuXG5sZXQgZmlsdGVyaSB+aG93IHQgfmYgPVxuICBsZXQlbWFwIGJvb2xzID0gbWFwaSB0IH5ob3cgfmYgaW5cbiAgTGlzdC5yZXYgKExpc3QuZm9sZDJfZXhuIHQgYm9vbHMgfmluaXQ6W10gfmY6KGZ1biBhYyB4IGIgLT4gaWYgYiB0aGVuIHggOjogYWMgZWxzZSBhYykpXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuZmlsdGVyX29wdFxubGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmNvbmNhdFxuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGZpbmRfbWFwaSB0IH5mIGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAobWF0Y2glYmluZCBmIGkgaGQgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gIGluXG4gIGZpbmRfbWFwaSB0IH5mIDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IG1hcCB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyIH5ob3cgdCB+ZiA9IGZpbHRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPSBjb25jYXRfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGluaXQgfmhvdyBuIH5mID0gbWFwIH5ob3cgKExpc3QuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgTGlzdCA9IERlZmVycmVkX2xpc3Rcbm1vZHVsZSBUaHJvdHRsZWRfbWFwID0gTWFwLk1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoVGhyb3R0bGVkKVxuXG50eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE1hcC50XG5cbmxldCBjaGFuZ2UgdCBrIH5mID1cbiAgbGV0JW1hcCBvcHQgPSBmIChNYXAuZmluZCB0IGspIGluXG4gIE1hcC5jaGFuZ2UgdCBrIH5mOihmdW4gXyAtPiBvcHQpXG47O1xuXG5sZXQgdXBkYXRlIHQgayB+ZiA9XG4gIGxldCVtYXAgZGF0YSA9IGYgKE1hcC5maW5kIHQgaykgaW5cbiAgTWFwLnNldCB0IH5rZXk6ayB+ZGF0YVxuOztcblxubGV0IGl0ZXJfa2V5cyB+aG93IHQgfmYgPSBMaXN0Lml0ZXIgfmhvdyAoTWFwLmtleXMgdCkgfmZcbmxldCBpdGVyIH5ob3cgdCB+ZiA9IExpc3QuaXRlciB+aG93IChNYXAuZGF0YSB0KSB+ZlxubGV0IGl0ZXJpIH5ob3cgdCB+ZiA9IExpc3QuaXRlciB+aG93IChNYXAudG9fYWxpc3QgdCkgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPiBmIH5rZXkgfmRhdGEpXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIgPVxuICAgIE1hcC5mb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFsaXN0IC0+IChrZXksIGRhdGEpIDo6IGFsaXN0KVxuICBpblxuICBMaXN0LmZvbGQgYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIgfmluaXQgfmY6KGZ1biBhYyAoa2V5LCBkYXRhKSAtPiBmIH5rZXkgfmRhdGEgYWMpXG47O1xuXG5sZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID1cbiAgbGV0IGFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyID1cbiAgICBNYXAuZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhbGlzdCAtPiAoa2V5LCBkYXRhKSA6OiBhbGlzdClcbiAgaW5cbiAgTGlzdC5mb2xkIGFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyIH5pbml0IH5mOihmdW4gYWMgKGtleSwgZGF0YSkgLT4gZiB+a2V5IH5kYXRhIGFjKVxuOztcblxubW9kdWxlIEpvYiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID1cbiAgICB7IGtleSA6ICdhXG4gICAgOyBkYXRhIDogJ2JcbiAgICA7IG11dGFibGUgcmVzdWx0IDogJ2Mgb3B0aW9uXG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5lbmRcblxubGV0IGZpbHRlcl9tYXBpX3NlcXVlbnRpYWwgdCB+ZiA9XG4gIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgdCBpblxuICBsZXQgc2VxdWVuY2UgPSBNYXAudG9fc2VxdWVuY2Ugfm9yZGVyOmBJbmNyZWFzaW5nX2tleSB0IGluXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGRcbiAgICAgIHNlcXVlbmNlXG4gICAgICB+aW5pdDpCYXNlLk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuQnVpbGRfaW5jcmVhc2luZy5lbXB0eVxuICAgICAgfmY6KGZ1biBzIChrZXksIGRhdGEpIH5rIC0+XG4gICAgICAgIHVwb24gKGYgfmtleSB+ZGF0YSkgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGsgc1xuICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgICAgIEJhc2UuTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5CdWlsZF9pbmNyZWFzaW5nLmFkZF9leG5cbiAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICAgICB+a2V5XG4gICAgICAgICAgICAgICAgfmRhdGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBrIHMpKVxuICAgICAgfmZpbmlzaDooZnVuIHggLT5cbiAgICAgICAgSXZhci5maWxsXG4gICAgICAgICAgaXZhclxuICAgICAgICAgIChNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlXG4gICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICAoQmFzZS5NYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLkJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZSB4KSkpKVxuOztcblxubGV0IGZpbHRlcl9tYXBpX21heF9jb25jdXJyZW50IHQgfmYgfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICBsZXQgY29tcHV0YXRpb24gPVxuICAgIFRocm90dGxlZF9tYXAuZmlsdGVyX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgIFRocm90dGxlZC5qb2IgKGZ1biAoKSAtPiBmIH5rZXkgfmRhdGEpKVxuICBpblxuICBUaHJvdHRsZWQucnVuIGNvbXB1dGF0aW9uIH5tYXhfY29uY3VycmVudF9qb2JzXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgU2VxdWVudGlhbCAtPiBmaWx0ZXJfbWFwaV9zZXF1ZW50aWFsIHQgfmZcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+XG4gICAgZmlsdGVyX21hcGlfbWF4X2NvbmN1cnJlbnQgdCB+ZiB+bWF4X2NvbmN1cnJlbnRfam9ic1xuICB8IGBQYXJhbGxlbCAtPlxuICAgIGxldCBqb2JzID0gcmVmIFtdIGluXG4gICAgbGV0IGpvYl9tYXAgPVxuICAgICAgTWFwLm1hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgbGV0IGpvYiA9IHsgSm9iLmtleTsgZGF0YTsgcmVzdWx0ID0gTm9uZSB9IGluXG4gICAgICAgIGpvYnMgOj0gam9iIDo6ICFqb2JzO1xuICAgICAgICBqb2IpXG4gICAgaW5cbiAgICBsZXQlbWFwICgpID1cbiAgICAgIExpc3QuaXRlciB+aG93IChCYXNlLkxpc3QucmV2ICFqb2JzKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCB7IEpvYi5rZXk7IGRhdGE7IHJlc3VsdCA9IF8gfSBhcyBqb2IgLT5cbiAgICAgICAgICBsZXQlbWFwIHggPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgICAgICBqb2IucmVzdWx0IDwtIHgpXG4gICAgaW5cbiAgICBNYXAuZmlsdGVyX21hcCBqb2JfbWFwIH5mOkpvYi5yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBmaWx0ZXJfa2V5cyB+aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbGV0JW1hcCBiID0gZiBrZXkgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaWx0ZXIgfmhvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+XG4gICAgbGV0JW1hcCBiID0gZiBkYXRhIGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZGF0YSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmlsdGVyaSB+aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbGV0JW1hcCBiID0gZiB+a2V5IH5kYXRhIGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZGF0YSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgbWFwaV9tYXhfY29uY3VycmVudCB0IH5mIH5tYXhfY29uY3VycmVudF9qb2JzID1cbiAgbGV0IGNvbXB1dGF0aW9uID1cbiAgICBUaHJvdHRsZWRfbWFwLm1hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gVGhyb3R0bGVkLmpvYiAoZnVuICgpIC0+IGYgfmtleSB+ZGF0YSkpXG4gIGluXG4gIFRocm90dGxlZC5ydW4gY29tcHV0YXRpb24gfm1heF9jb25jdXJyZW50X2pvYnNcbjs7XG5cbmxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYFNlcXVlbnRpYWwgfCBgUGFyYWxsZWwgLT5cbiAgICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICBsZXQlbWFwIHogPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgIFNvbWUgeilcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+XG4gICAgbWFwaV9tYXhfY29uY3VycmVudCB0IH5mIH5tYXhfY29uY3VycmVudF9qb2JzXG47O1xuXG5sZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IG1lcmdlIH5ob3cgdDEgdDIgfmYgPVxuICBmaWx0ZXJfbWFwXG4gICAgfmhvd1xuICAgIChNYXAubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5IHogLT4gU29tZSAoZnVuICgpIC0+IGYgfmtleSB6KSkpXG4gICAgfmY6KGZ1biB0aHVuayAtPiB0aHVuayAoKSlcbjs7XG5cbmxldCBhbGwgdCA9IG1hcCB0IH5mOkZuLmlkIH5ob3c6YFNlcXVlbnRpYWxcbiIsIm9wZW4hIENvcmVcbm9wZW4hIERlZmVycmVkX3N0ZFxuaW5jbHVkZSBEZWZlcnJlZF9tZW1vX2ludGZcblxubW9kdWxlIE1ha2UgKE0gOiBNb25hZC5JbmZpeCB3aXRoIHR5cGUgJ2EgdCA9ICdhIERlZmVycmVkMS50KSA6XG4gIFMgd2l0aCB0eXBlICdhIGRlZmVycmVkIDo9ICdhIE0udCA9IHN0cnVjdFxuICBvcGVuISBNXG5cbiAgbGV0IHJlcmFpc2UgPSBmdW5jdGlvblxuICAgIHwgT2sgeCAtPiB4XG4gICAgfCBFcnJvciBleG4gLT4gRXhuLnJlcmFpc2UgZXhuIFwiY2F1Z2h0IGV4Y2VwdGlvbiBpbiBtZW1vaXplZCBmdW5jdGlvblwiXG4gIDs7XG5cbiAgbGV0IGdlbmVyYWwnICh0eXBlIGEpIH5ydW4gKGhhc2hhYmxlIDogKG1vZHVsZSBIYXNoYWJsZS5TX3BsYWluIHdpdGggdHlwZSB0ID0gYSkpIGYgPVxuICAgIGxldCBtb2R1bGUgSGFzaGFibGUgPSAodmFsIGhhc2hhYmxlKSBpblxuICAgIGxldCBmID1cbiAgICAgIE1lbW8uZ2VuZXJhbCB+aGFzaGFibGU6SGFzaGFibGUuaGFzaGFibGUgKGZ1biBhIC0+XG4gICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgICAgfnJ1blxuICAgICAgICAgIChmdW4gKCkgLT4gZiBhKSlcbiAgICBpblxuICAgIFN0YWdlZC5zdGFnZSAoZnVuIGEgLT4gZiBhID4+fCByZXJhaXNlKVxuICA7O1xuXG4gIGxldCBnZW5lcmFsIGhhc2hhYmxlIGYgPSBnZW5lcmFsJyB+cnVuOmBOb3cgaGFzaGFibGUgZlxuXG4gIGxldCByZWN1cnNpdmUgKHR5cGUgYSkgKGhhc2hhYmxlIDogKG1vZHVsZSBIYXNoYWJsZS5TX3BsYWluIHdpdGggdHlwZSB0ID0gYSkpIGZfb25lc3RlcCA9XG4gICAgbGV0IHJlYyBtZW1vaXplZCA9XG4gICAgICBsYXp5XG4gICAgICAgIChnZW5lcmFsJ1xuICAgICAgICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgICAgICBoYXNoYWJsZVxuICAgICAgICAgICAoZl9vbmVzdGVwIChmdW4geCAtPiAodW5zdGFnZSAoZm9yY2UgbWVtb2l6ZWQpKSB4KSkpXG4gICAgaW5cbiAgICBmb3JjZSBtZW1vaXplZFxuICA7O1xuXG4gIGxldCB1bml0IGYgPVxuICAgIGxldCBmID1cbiAgICAgIE1lbW8udW5pdCAoZnVuICgpIC0+XG4gICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgICAgfnJ1bjpgTm93XG4gICAgICAgICAgZilcbiAgICBpblxuICAgIFN0YWdlZC5zdGFnZSAoZnVuICgpIC0+IGYgKCkgPj58IHJlcmFpc2UpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBNYWtlIChEZWZlcnJlZDEpXG4iLCJvcGVuIENvcmVcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBPcHRpb24udCBEZWZlcnJlZC50XG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgcmV0dXJuIGEgPSBEZWZlcnJlZC5yZXR1cm4gKFNvbWUgYSlcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgRGVmZXJyZWQuYmluZCB0IH5mOihmdW5jdGlvblxuICAgICAgICB8IFNvbWUgYSAtPiBmIGFcbiAgICAgICAgfCBOb25lIC0+IERlZmVycmVkLnJldHVybiBOb25lKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHQgfmYgPSBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHIgLT4gT3B0aW9uLm1hcCByIH5mKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdlcnJvcikgdCA9ICgnYSwgJ2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50XG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBjb21iaW5lIHQxIHQyIH5vayB+ZXJyID1cbiAgbGV0JW1hcCB0MSA9IHQxXG4gIGFuZCB0MiA9IHQyIGluXG4gIFJlc3VsdC5jb21iaW5lIHQxIHQyIH5vayB+ZXJyXG47O1xuXG5pbmNsdWRlIE1vbmFkLk1ha2UyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCByZXR1cm4gYSA9IERlZmVycmVkLnJldHVybiAoT2sgYSlcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgRGVmZXJyZWQuYmluZCB0IH5mOihmdW5jdGlvblxuICAgICAgICB8IE9rIGEgLT4gZiBhXG4gICAgICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiBEZWZlcnJlZC5yZXR1cm4gZXJyb3IpXG4gICAgOztcblxuICAgIGxldCBtYXAgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBSZXN1bHQubWFwIHIgfmYpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGZhaWwgeCA9IERlZmVycmVkLnJldHVybiAoRXJyb3IgeClcbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcbmxldCBtYXBfZXJyb3IgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBSZXN1bHQubWFwX2Vycm9yIHIgfmYpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgTW9uaXRvciA9IHN0cnVjdFxuICBsZXQgdHJ5X3dpdGggPSBNb25pdG9yLnRyeV93aXRoXG5lbmRcblxuKCogQ29waWVkIHRvIFtlYWdlcl9kZWZlcnJlZF9vcl9lcnJvci5tbF0uICBUaGVyZSBzaG91bGQgYmUgbm8gZGlmZnMgYmVsb3cgdGhpcyBsaW5lLiAqKVxuXG5pbmNsdWRlIChEZWZlcnJlZF9yZXN1bHQgOiBNb25hZC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBEZWZlcnJlZF9yZXN1bHQudClcblxudHlwZSAnYSB0ID0gJ2EgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbmluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGxldCBhcHBseSBmIHggPVxuICAgICAgRGVmZXJyZWRfcmVzdWx0LmNvbWJpbmVcbiAgICAgICAgZlxuICAgICAgICB4XG4gICAgICAgIH5vazooZnVuIGYgeCAtPiBmIHgpXG4gICAgICAgIH5lcnI6KGZ1biBlMSBlMiAtPiBFcnJvci5vZl9saXN0IFsgZTE7IGUyIF0pXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSByZXR1cm5cblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgKCogZnJvbSBBcHBsaWNhdGl2ZS5NYWtlICopXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICBlbmRcbmVuZFxuXG5vcGVuIExldF9zeW50YXhcblxubGV0IGZhaWwgZXJyb3IgPSBEZWZlcnJlZC5yZXR1cm4gKFJlc3VsdC5mYWlsIGVycm9yKVxubGV0IG9rX2V4biB0ID0gRGVmZXJyZWQubWFwIHQgfmY6T3JfZXJyb3Iub2tfZXhuXG5sZXQgb2ZfZXhuID9iYWNrdHJhY2UgZXhuID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5vZl9leG4gP2JhY2t0cmFjZSBleG4pXG5sZXQgb2ZfZXhuX3Jlc3VsdCA/YmFja3RyYWNlIHQgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3Iub2ZfZXhuX3Jlc3VsdCA/YmFja3RyYWNlKVxubGV0IGVycm9yIG1zZyB2IHNleHBfb2YgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yIG1zZyB2IHNleHBfb2YpXG5sZXQgZXJyb3JfcyBzZXhwID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zIHNleHApXG5sZXQgZXJyb3Jfc3RyaW5nIG1zZyA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIG1zZylcbmxldCBlcnJvcmYgZm9ybWF0ID0ga3NwcmludGYgZXJyb3Jfc3RyaW5nIGZvcm1hdFxubGV0IHRhZyB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnIH50YWcpXG5sZXQgdGFnX3MgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZ19zIH50YWcpXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnX3NfbGF6eSB+dGFnKVxuXG5sZXQgdGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHQgLT4gT3JfZXJyb3IudGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgdW5pbXBsZW1lbnRlZCBtc2cgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLnVuaW1wbGVtZW50ZWQgbXNnKVxubGV0IGNvbWJpbmVfZXJyb3JzIGwgPSBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5jb21iaW5lX2Vycm9yc1xubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbCA9IERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcblxubGV0IGZpbHRlcl9va19hdF9sZWFzdF9vbmUgbCA9XG4gIERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmZpbHRlcl9va19hdF9sZWFzdF9vbmVcbjs7XG5cbmxldCBmaW5kX21hcF9vayBsIH5mID1cbiAgRGVmZXJyZWQucmVwZWF0X3VudGlsX2ZpbmlzaGVkIChsLCBbXSkgKGZ1biAobCwgZXJyb3JzKSAtPlxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGxldCBlcnJvcnMgPSBFcnJvci5vZl9saXN0IChMaXN0LnJldiBlcnJvcnMpIGluXG4gICAgICBEZWZlcnJlZC5yZXR1cm4gKGBGaW5pc2hlZCAoRXJyb3IgZXJyb3JzKSlcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBEZWZlcnJlZC5tYXAgKGYgaGQpIH5mOihmdW5jdGlvblxuICAgICAgICB8IEVycm9yIGN1cnJlbnRfZXJyb3IgLT4gYFJlcGVhdCAodGwsIGN1cnJlbnRfZXJyb3IgOjogZXJyb3JzKVxuICAgICAgICB8IE9rIHJlc3VsdCAtPiBgRmluaXNoZWQgKE9rIHJlc3VsdCkpKVxuOztcblxubGV0IG9rX3VuaXQgPSByZXR1cm4gKClcblxubGV0IHRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYgPVxuICBEZWZlcnJlZC5tYXAgKE1vbml0b3IudHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZikgfmY6KGZ1bmN0aW9uXG4gICAgfCBFcnJvciBleG4gLT4gRXJyb3IgKEVycm9yLm9mX2V4biBleG4pXG4gICAgfCBPayBfIGFzIG9rIC0+IG9rKVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZiA9XG4gIERlZmVycmVkLm1hcCAodHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZikgfmY6T3JfZXJyb3Iuam9pblxuOztcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgbGV0IGZvbGRpIGxpc3QgfmluaXQ6YWNjIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgaSBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gYWNjXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCViaW5kIGFjYyA9IGYgaSBhY2MgaGQgaW5cbiAgICAgICAgbG9vcCAoaSArIDEpIGFjYyB0bFxuICAgIGluXG4gICAgbG9vcCAwIGFjYyBsaXN0XG4gIDs7XG5cbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBfIGEgeCAtPiBmIGEgeClcblxuICBsZXQgc2VxbWFwaSB0IH5mID1cbiAgICBmb2xkaSB0IH5pbml0OltdIH5mOihmdW4gaSBicyBhIC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgYSBpblxuICAgICAgYiA6OiBicylcbiAgICA+PnwgTGlzdC5yZXZcbiAgOztcblxuICBsZXQgYWxsID0gYWxsXG4gIGxldCBhbGxfdW5pdCA9IGFsbF91bml0XG5cbiAgbGV0IGl0ZXJpIH5ob3cgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbF91bml0IChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBmb2xkaSB0IH5pbml0OigpIH5mOihmdW4gaSAoKSB4IC0+IGYgaSB4KVxuICA7O1xuXG4gIGxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gc2VxbWFwaSB0IH5mXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmZpbHRlcl9vcHRcbiAgbGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmNvbmNhdFxuXG4gIGxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gICAgZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgeCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgICBsZXQgcmVjIGZpbmRfbWFwaSB0IH5mIGkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IHJldHVybiBOb25lXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCViaW5kIGYgaSBoZCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gZmluZF9tYXBpIHRsIH5mIChpICsgMSlcbiAgICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gICAgaW5cbiAgICBmaW5kX21hcGkgdCB+ZiAwXG4gIDs7XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5cbiAgbGV0IGZpbmRpIHQgfmYgPVxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZCB0IH5mID1cbiAgICBmaW5kX21hcCB0IH5mOihmdW4gZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZXhpc3RzaSB0IH5mID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiB0cnVlXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiBmYWxzZVxuICAgIHwgTm9uZSAtPiB0cnVlXG4gIDs7XG5cbiAgbGV0IGl0ZXIgfmhvdyB0IH5mID0gaXRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IG1hcCB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXIgfmhvdyB0IH5mID0gZmlsdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPSBjb25jYXRfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgaW5pdCB+aG93IG4gfmYgPSBtYXAgfmhvdyAoTGlzdC5pbml0IG4gfmY6Rm4uaWQpIH5mXG5lbmRcblxubGV0IHJlYyByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZiA9XG4gIG1hdGNoJWJpbmQgZiBzdGF0ZSB3aXRoXG4gIHwgYFJlcGVhdCBzdGF0ZSAtPiByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZlxuICB8IGBGaW5pc2hlZCBzdGF0ZSAtPiByZXR1cm4gc3RhdGVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgTGlzdCA9IERlZmVycmVkX2xpc3RcblxuKCogV2UgaW1wbGVtZW50IGFsbCBvZiB0aGUgW1F1ZXVlXSBvcGVyYXRpb25zIGJ5IGNvbnZlcnRpbmcgdGhlIHF1ZXVlIHRvIGEgbGlzdCBhbmQgdGhlblxuICAgdXNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgW0xpc3RdIG9wZXJhdGlvbi4gIFdlIHVzZSBsaXN0cyByYXRoZXIgdGhhbiBhcnJheXMgYmVjYXVzZVxuICAgYXJyYXlzIGxvbmdlciB0aGFuIGEgY2VydGFpbiBsZW5ndGggYXJlIGFsbG9jYXRlZCBpbiB0aGUgbWFqb3IgaGVhcCwgd2hpY2ggY2FuIGNhdXNlXG4gICB1bm5lY2Vzc2FyeSBwcm9tb3Rpb24gb2YgdGhlIGVsZW1lbnRzIGluIHRoZSBxdWV1ZS4gIEFsc28sIHdoZW4gb25lIGlzIGZvbGRpbmcgb3JcbiAgIGl0ZXJhdGluZyBvdmVyIGFuIGFycmF5LCB0aGUgZW50aXJlIGFycmF5IG11c3QgYmUga2VwdCBhbGl2ZS4gIFdoZW4gZm9sZGluZyBvclxuICAgaXRlcmF0aW5nIG92ZXIgYSBsaXN0LCBvbmx5IHRoZSByZW1haW5pbmcgdGFpbCBvZiB0aGUgbGlzdCBpcyBrZXB0IGFsaXZlLiAgU28sIHVzaW5nXG4gICBhcnJheXMgcmF0aGVyIHRoYW4gbGlzdHMgd291bGQgaW5jcmVhc2UgdGhlIGxpdmUtc3BhY2UgbmVlZGVkIGJ5IHRoZSBwcm9ncmFtLiAqKVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmluaXQgfmZcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBMaXN0LmZvbGQgKFF1ZXVlLnRvX2xpc3QgdCkgfmluaXQgfmZcbmxldCBhbGwgdCA9IExpc3QuYWxsIChRdWV1ZS50b19saXN0IHQpID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgYWxsX3VuaXQgdCA9IExpc3QuYWxsX3VuaXQgKFF1ZXVlLnRvX2xpc3QgdClcbmxldCBpdGVyIH5ob3cgdCB+ZiA9IExpc3QuaXRlciB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgaXRlcmkgfmhvdyB0IH5mID0gTGlzdC5pdGVyaSB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgbWFwIH5ob3cgdCB+ZiA9IExpc3QubWFwIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBtYXBpIH5ob3cgdCB+ZiA9IExpc3QubWFwaSB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgaW5pdCB+aG93IG4gfmYgPSBMaXN0LmluaXQgfmhvdyBuIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyIH5ob3cgdCB+ZiA9IExpc3QuZmlsdGVyIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9IExpc3QuZmlsdGVyaSB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBMaXN0LmZpbHRlcl9tYXAgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9IExpc3QuZmlsdGVyX21hcGkgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxuXG5sZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPVxuICBMaXN0LmNvbmNhdF9tYXAgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZjooZnVuIHggLT4gZiB4ID4+fCBRdWV1ZS50b19saXN0KVxuICA+PnwgUXVldWUub2ZfbGlzdFxuOztcblxubGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9XG4gIExpc3QuY29uY2F0X21hcGkgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZjooZnVuIGkgeCAtPiBmIGkgeCA+PnwgUXVldWUudG9fbGlzdClcbiAgPj58IFF1ZXVlLm9mX2xpc3Rcbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID0gTGlzdC5maW5kX21hcCAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmRfbWFwaSB0IH5mID0gTGlzdC5maW5kX21hcGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBmaW5kIHQgfmYgPSBMaXN0LmZpbmQgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBmaW5kaSB0IH5mID0gTGlzdC5maW5kaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZvcl9hbGwgdCB+ZiA9IExpc3QuZm9yX2FsbCAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZvcl9hbGxpIHQgfmYgPSBMaXN0LmZvcl9hbGxpIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGV4aXN0c2kgdCB+ZiA9IExpc3QuZXhpc3RzaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbigqIFtmb2xkX21hcGkgfmhvdyB0IH5pbml0IH5tYXBpX2YgfmZvbGRfZl0gaXMgYSBtb3JlIGVmZmljaWVudCB2ZXJzaW9uIG9mOlxuXG4gICB7W1xuICAgICBmb2xkIH5pbml0IH5mOihmdW4gYiBhIC0+IHJldHVybiAoZm9sZF9mIGIgYSkpIChtYXBpIHQgfmhvdyB+ZjptYXBpX2YpIF19XG5cbiAgIEl0IGF2b2lkcyBjcmVhdGluZyB0aGUgaW50ZXJtZWRpYXRlIHNlcXVlbmNlIHRoYXQgd291bGQgcmVzdWx0IGZyb20gW21hcGldLCBhbmRcbiAgIGFsbG93cyB0aGUgW2ZvbGRdIHRvIHByb2NlZWQgY29uY3VycmVudGx5IHdpdGggdGhlIFttYXBpXSwgc28gdGhhdCBvbmUgY2FuIGFjY3VtdWxhdGVcbiAgIHRoZSByZXN1bHQgYXMgc29vbiBhcyBwb3NzaWJsZSwgcG9zc2libHkgYXZvaWRpbmcgY3JlYXRpbmcgYW4gaW50ZXJtZWRpYXRlIHN0cnVjdHVyZVxuICAgKGUuZy4gW2l0ZXJpXSBhbmQgW2ZpbHRlcl9tYXBdIHVzZXMgW2ZvbGRfbWFwaV0gdG8gZG8gdGhpcykuICopXG5sZXQgZm9sZF9tYXBpXG4gICAgICAodHlwZSBhIGIgYylcbiAgICAgID8oaG93ID0gYFNlcXVlbnRpYWwpXG4gICAgICAodCA6IGEgU2VxdWVuY2UudClcbiAgICAgIH4oaW5pdCA6IGMpXG4gICAgICB+KG1hcGlfZiA6IGludCAtPiBhIC0+IGIgRGVmZXJyZWQudClcbiAgICAgIH4oZm9sZF9mIDogYyAtPiBiIC0+IGMpXG4gIDogYyBEZWZlcnJlZC50XG4gID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgU2VxdWVudGlhbCAtPlxuICAgIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWMgbG9vcCBpIHQgKGMgOiBjKSA9XG4gICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEl2YXIuZmlsbCByZXN1bHQgY1xuICAgICAgfCBTb21lIChhLCB0KSAtPiB1cG9uIChtYXBpX2YgaSBhKSAoZnVuIGIgLT4gbG9vcCAoaSArIDEpIHQgKGZvbGRfZiBjIGIpKVxuICAgIGluXG4gICAgbG9vcCAwIHQgaW5pdDtcbiAgICBJdmFyLnJlYWQgcmVzdWx0XG4gIHwgYFBhcmFsbGVsIC0+XG4gICAgbGV0IHJlYyBsb29wIGkgdCAoYyA6IGMgRGVmZXJyZWQudCkgPVxuICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoaSArIDEpXG4gICAgICAgICAgdFxuICAgICAgICAgIChsZXQlYmluZCBiID0gbWFwaV9mIGkgYSBpblxuICAgICAgICAgICBsZXQlbWFwIGMgPSBjIGluXG4gICAgICAgICAgIGZvbGRfZiBjIGIpXG4gICAgaW5cbiAgICBsb29wIDAgdCAocmV0dXJuIGluaXQpXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPlxuICAgIGxldCB0aHJvdHRsZSA9IFRocm90dGxlLmNyZWF0ZSB+bWF4X2NvbmN1cnJlbnRfam9icyB+Y29udGludWVfb25fZXJyb3I6ZmFsc2UgaW5cbiAgICAoKiBbbG9vcF0gZm9yY2VzIHRoZSBpbnB1dCBzZXF1ZW5jZSBhbmQgZW5xdWV1ZXMgYSB0aHJvdHRsZSBqb2Igb25seSBpZiB0aGVyZSBpc1xuICAgICAgIGNhcGFjaXR5IGF2YWlsYWJsZS4gKilcbiAgICBsZXQgcmVjIGxvb3AgaSB0IChjIDogYyBEZWZlcnJlZC50KSA9XG4gICAgICBsZXQlYmluZCAoKSA9IFRocm90dGxlLmNhcGFjaXR5X2F2YWlsYWJsZSB0aHJvdHRsZSBpblxuICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoaSArIDEpXG4gICAgICAgICAgdFxuICAgICAgICAgIChsZXQlYmluZCBiID0gVGhyb3R0bGUuZW5xdWV1ZSB0aHJvdHRsZSAoZnVuICgpIC0+IG1hcGlfZiBpIGEpIGluXG4gICAgICAgICAgIGxldCVtYXAgYyA9IGMgaW5cbiAgICAgICAgICAgZm9sZF9mIGMgYilcbiAgICBpblxuICAgIGxvb3AgMCB0IChyZXR1cm4gaW5pdClcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgU2VxdWVuY2UuZGVsYXllZF9mb2xkXG4gICAgdFxuICAgIH5pbml0OigwLCBpbml0KVxuICAgIH5mOihmdW4gKGksIGIpIGEgfmsgLT5cbiAgICAgIGxldCViaW5kIGIgPSBmIGkgYiBhIGluXG4gICAgICBrIChpICsgMSwgYikpXG4gICAgfmZpbmlzaDooZnVuIChfLCBiKSAtPiByZXR1cm4gYilcbjs7XG5cbigqIFtmb2xkXSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgW2ZvbGRpXSB0byBzYXZlIHRoZSBpbnRlcm1lZGlhdGUgY2xvc3VyZVxuICAgYWxsb2NhdGlvbi4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGQgdCB+aW5pdCB+ZjooZnVuIGIgYSB+ayAtPiBmIGIgYSA+Pj0gaykgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBhbGwgdCA9XG4gIGxldCVtYXAgcmVzID1cbiAgICBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBhY2N1bSBkIC0+XG4gICAgICBsZXQlbWFwIGEgPSBkIGluXG4gICAgICBhIDo6IGFjY3VtKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiByZXMpXG47O1xuXG5sZXQgYWxsX3VuaXQgdCA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIHYgLT4gdilcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByZXR1cm4gTm9uZVxuICAgIHwgU29tZSAodiwgcmVzdCkgLT5cbiAgICAgIChtYXRjaCViaW5kIGYgaSB2IHdpdGhcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXBpIHJlc3QgfmYgKGkgKyAxKVxuICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gIGluXG4gIGZpbmRfbWFwaSB0IH5mIDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlcmkgfmhvdyB0IH5mIDogdW5pdCBEZWZlcnJlZC50ID1cbiAgZm9sZF9tYXBpIH5ob3cgdCB+bWFwaV9mOmYgfmluaXQ6KCkgfmZvbGRfZjooZnVuICgpICgpIC0+ICgpKVxuOztcblxubGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgbGV0JW1hcCBicyA9XG4gICAgZm9sZF9tYXBpIH5ob3cgdCB+bWFwaV9mOihmdW4gaSBhIC0+IGYgaSBhKSB+aW5pdDpbXSB+Zm9sZF9mOihmdW4gYnMgYiAtPiBiIDo6IGJzKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiBicylcbjs7XG5cbigqIFtmaWx0ZXJfbWFwaV0gaXMgaW1wbGVtZW50ZWQgdXNpbmcgW2ZvbGRfbWFwaV0gcmF0aGVyIHRoYW4gW21hcF0gc28gdGhhdCB3ZSBuZXZlciBuZWVkXG4gICB0byBrZWVwIGEgbG9uZyBzdHJlYW0gb2YgaW50ZXJtZWRpYXRlIFtOb25lXSByZXN1bHRzIGluIHRoZSBhY2N1bXVsYXRvciwgb25seSB0byBsYXRlclxuICAgZmlsdGVyIHRoZW0gYWxsIG91dC4gKilcbmxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPVxuICBsZXQlbWFwIGJzID1cbiAgICBmb2xkX21hcGlcbiAgICAgIHRcbiAgICAgIH5ob3dcbiAgICAgIH5tYXBpX2Y6KGZ1biBpIGEgLT4gZiBpIGEpXG4gICAgICB+aW5pdDpbXVxuICAgICAgfmZvbGRfZjooZnVuIGJzIG1heWJlX3YgLT5cbiAgICAgICAgbWF0Y2ggbWF5YmVfdiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBic1xuICAgICAgICB8IFNvbWUgYiAtPiBiIDo6IGJzKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiBicylcbjs7XG5cbmxldCBjb25jYXRfbWFwaSB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZiA+PnwgU2VxdWVuY2UuY29uY2F0XG5cbmxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIGkgYSAtPlxuICAgIG1hdGNoJW1hcCBmIGkgYSB3aXRoXG4gICAgfCB0cnVlIC0+IFNvbWUgYVxuICAgIHwgZmFsc2UgLT4gTm9uZSlcbjs7XG5cbmxldCBpdGVyIH5ob3cgdCB+ZiA9IGl0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgfmhvdyB0IH5mID0gZmlsdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgaW5pdCB+aG93IG4gfmYgPSBtYXAgfmhvdyAoU2VxdWVuY2UuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQ2xvY2tfbnMgPSBDbG9ja19uc1xubW9kdWxlIFRpbWVfbnMgPSBUaW1lX25zXG5tb2R1bGUgVGltZSA9IFRpbWVfZmxvYXRcbm1vZHVsZSBBc3luY19rZXJuZWxfc2NoZWR1bGVyID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlclxubW9kdWxlIERhdGUgPSBEYXRlXG5cbmxldCBhZnRlciA9IENsb2NrX25zLmFmdGVyXG5sZXQgYXQgPSBDbG9ja19ucy5hdFxubGV0IGV2ZXJ5ID0gQ2xvY2tfbnMuZXZlcnlcbmxldCB3aXRoX3RpbWVvdXQgPSBDbG9ja19ucy53aXRoX3RpbWVvdXRcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5cbmxldCBzaG93X2RlYnVnX21lc3NhZ2VzID0gcmVmIGZhbHNlXG5sZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIGZhbHNlXG5cbm1vZHVsZSBGbHVzaGVkX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYE9rXG4gICAgfCBgUmVhZGVyX2Nsb3NlZFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5cbiAgbGV0IGNvbWJpbmUgKGwgOiB0IERlZmVycmVkLnQgbGlzdCkgPVxuICAgIGxldCVtYXAgbCA9IERlZmVycmVkLmFsbCBsIGluXG4gICAgbWF0Y2ggTGlzdC5tZW0gbCBgUmVhZGVyX2Nsb3NlZCB+ZXF1YWwgd2l0aFxuICAgIHwgdHJ1ZSAtPiBgUmVhZGVyX2Nsb3NlZFxuICAgIHwgZmFsc2UgLT4gYE9rXG4gIDs7XG5lbmRcblxuKCogQSBbQ29uc3VtZXIudF0gYWN0cyBhcyB0aGUgbW9uaXRvciBvZiBzb21lIHByb2Nlc3MgdGhhdCByZWFkcyB2YWx1ZXMgZnJvbSBhIHBpcGUgYW5kXG4gICBwcm9jZXNzZXMgdGhlbSwgYWxsb3dpbmcgdGhhdCBwcm9jZXNzOlxuICAgLSB0byBjb21tdW5pY2F0ZSB0aGF0IGl0IGhhcyB0YWtlbiByZXNwb25zaWJpbGl0eSBmb3IgdGhlIHZhbHVlc1xuICAgLSB0byBzaWduYWwgd2hlbiBpdCBoYXMgZmluaXNoZWQgd2l0aCB0aGUgdmFsdWVzIHRvIGludGVyZXN0ZWQgcGFydGllcyAodmlhXG4gICAgIFtkb3duc3RyZWFtX2ZsdXNoZWRdKVxuXG4gICBJdCBpcyB1c2VkIGluIHR3byBzdGVwczpcblxuICAgMS4gY2FsbGluZyBbQ29uc3VtZXIuc3RhcnRdIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgY29uc3VtZXIgdGFrZXMgdmFsdWVzIG91dCBvZiB0aGVcbiAgIFBpcGUgdmlhIFtyZWFkXSBvciBbcmVhZCddLlxuXG4gICAyLiBjYWxsaW5nIFtDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtXS5cblxuICAgQnkgY2FsbGluZyBbdmFsdWVzX3NlbnRfZG93bnN0cmVhbV0gb25lIGFzc2VydHMgdGhhdCB0aGUgW2Rvd25zdHJlYW1fZmx1c2hlZF0gZnVuY3Rpb25cbiAgIHN1cHBsaWVkIHRvIFtjcmVhdGVdIHdpbGwgbm93IHdhaXQgZm9yIHRoaXMgdmFsdWUuXG5cbiAgIElmIG5vIFtDb25zdW1lci50XSBpcyBzdXBwbGllZCB3aGVuIGEgdmFsdWUgaXMgcmVhZCB0aGVuIHRoZSB2YWx1ZSBpcyBkZWZpbmVkIHRvIGJlXG4gICBmbHVzaGVkIGF0IHRoYXQgdGltZS4gKilcbm1vZHVsZSBDb25zdW1lciA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgcGlwZV9pZDppbnRcbiAgICAtPiBkb3duc3RyZWFtX2ZsdXNoZWQ6KHVuaXQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50KVxuICAgIC0+IHRcblxuICB2YWwgcGlwZV9pZCA6IHQgLT4gaW50XG4gIHZhbCBzdGFydCA6IHQgLT4gdW5pdFxuICB2YWwgdmFsdWVzX3NlbnRfZG93bnN0cmVhbSA6IHQgLT4gdW5pdFxuICB2YWwgdmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1c2hlZCA6IHQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHBpcGVfaWQgOiBpbnRcbiAgICA7ICgqIFt2YWx1ZXNfcmVhZF0gcmVmbGVjdHMgd2hldGhlciB2YWx1ZXMgdGhlIGNvbnN1bWVyIGhhcyByZWFkIGZyb20gdGhlIHBpcGUgaGF2ZSBiZWVuXG4gICAgICAgICBzZW50IGRvd25zdHJlYW0gb3IgaWYgbm90LCBob2xkcyBhbiBpdmFyIHRoYXQgaXMgdG8gYmUgZmlsbGVkIHdoZW4gdGhleSBhcmUuICopXG4gICAgICBtdXRhYmxlXG4gICAgICAgIHZhbHVlc19yZWFkIDpcbiAgICAgICAgWyBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSBvZiB1bml0IEl2YXIudCBdXG4gICAgOyAoKiBbZG93bnN0cmVhbV9mbHVzaGVkICgpXSByZXR1cm5zIHdoZW4gYWxsIHByaW9yIHZhbHVlcyB0aGF0IHRoZSBjb25zdW1lciBoYXNcbiAgICAgICAgIHBhc3NlZCBkb3duc3RyZWFtIGhhdmUgYmVlbiBmbHVzaGVkIGFsbCB0aGUgd2F5IGRvd24gdGhlIGNoYWluIG9mIHBpcGVzLiAqKVxuICAgICAgZG93bnN0cmVhbV9mbHVzaGVkIDogdW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgICB0cnlcbiAgICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+cGlwZV9pZDppZ25vcmVcbiAgICAgICAgfnZhbHVlc19yZWFkOlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+ICgpXG4gICAgICAgICAgICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpKVxuICAgICAgICB+ZG93bnN0cmVhbV9mbHVzaGVkOmlnbm9yZVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUuQ29uc3VtZXIuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pIH5waXBlOih0IDogdCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB+cGlwZV9pZCB+ZG93bnN0cmVhbV9mbHVzaGVkID1cbiAgICB7IHBpcGVfaWQ7IHZhbHVlc19yZWFkID0gYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW07IGRvd25zdHJlYW1fZmx1c2hlZCB9XG4gIDs7XG5cbiAgbGV0IHN0YXJ0IHQgPVxuICAgIG1hdGNoIHQudmFsdWVzX3JlYWQgd2l0aFxuICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIF8gLT4gKClcbiAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+XG4gICAgICB0LnZhbHVlc19yZWFkIDwtIGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSAoSXZhci5jcmVhdGUgKCkpXG4gIDs7XG5cbiAgbGV0IHZhbHVlc19zZW50X2Rvd25zdHJlYW0gdCA9XG4gICAgbWF0Y2ggdC52YWx1ZXNfcmVhZCB3aXRoXG4gICAgfCBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSAtPiAoKVxuICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIGl2YXIgLT5cbiAgICAgIEl2YXIuZmlsbCBpdmFyICgpO1xuICAgICAgdC52YWx1ZXNfcmVhZCA8LSBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbVxuICA7O1xuXG4gIGxldCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkIHQgPVxuICAgIG1hdGNoIHQudmFsdWVzX3JlYWQgd2l0aFxuICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT4gdC5kb3duc3RyZWFtX2ZsdXNoZWQgKClcbiAgICB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSB3aGVuX3NlbnRfZG93bnN0cmVhbSAtPlxuICAgICAgbGV0JWJpbmQgKCkgPSBJdmFyLnJlYWQgd2hlbl9zZW50X2Rvd25zdHJlYW0gaW5cbiAgICAgIHQuZG93bnN0cmVhbV9mbHVzaGVkICgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEJsb2NrZWRfcmVhZCA9IHN0cnVjdFxuICAoKiBBIFtCbG9ja2VkX3JlYWQudF0gcmVwcmVzZW50cyBhIGJsb2NrZWQgcmVhZCBhdHRlbXB0LiAgSWYgc29tZW9uZSByZWFkcyBmcm9tIGFuIGVtcHR5XG4gICAgIHBpcGUsIHRoZXkgZW5xdWV1ZSBhIFtCbG9ja2VkX3JlYWQudF0gaW4gdGhlIHF1ZXVlIG9mIFtibG9ja2VkX3JlYWRzXS4gIExhdGVyLCB3aGVuXG4gICAgIHZhbHVlcyBhcmUgd3JpdHRlbiB0byBhIHBpcGUsIHRoYXQgd2lsbCBjYXVzZSBzb21lIG51bWJlciBvZiBibG9ja2VkIHJlYWRzIHRvIGJlXG4gICAgIGZpbGxlZCwgZmlyc3QgY29tZSBmaXJzdCBzZXJ2ZS4gIFRoZSBibG9ja2VkLXJlYWQgY29uc3RydWN0b3Igc3BlY2lmaWVzIGhvdyBtYW55XG4gICAgIHZhbHVlcyBhIHJlYWQgc2hvdWxkIGNvbnN1bWUgZnJvbSB0aGUgcGlwZSB3aGVuIGl0IGdldHMgaXRzIHR1cm4uXG5cbiAgICAgSWYgYSBwaXBlIGlzIGNsb3NlZCwgdGhlbiBhbGwgYmxvY2tlZCByZWFkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIFtgRW9mXS4gKilcbiAgdHlwZSAnYSB3YW50cyA9XG4gICAgfCBaZXJvIG9mIFsgYEVvZiB8IGBPayBdIEl2YXIudFxuICAgIHwgT25lIG9mIFsgYEVvZiB8IGBPayBvZiAnYSBdIEl2YXIudFxuICAgIHwgQXRfbW9zdCBvZiBpbnQgKiBbIGBFb2YgfCBgT2sgb2YgJ2EgUXVldWUudCBdIEl2YXIudFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB3YW50cyA6ICdhIHdhbnRzXG4gICAgOyBjb25zdW1lciA6IENvbnN1bWVyLnQgb3B0aW9uXG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfndhbnRzOlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFplcm8gXyB8IE9uZSBfIC0+ICgpXG4gICAgICAgICAgICAgfCBBdF9tb3N0IChpLCBfKSAtPiBhc3NlcnQgKGkgPiAwKSkpXG4gICAgICAgIH5jb25zdW1lcjpcbiAgICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGNvbnN1bWVyIC0+IENvbnN1bWVyLmludmFyaWFudCBjb25zdW1lcikpXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+XG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUuQmxvY2tlZF9yZWFkLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSB+cGlwZToodCA6IF8gdCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB3YW50cyBjb25zdW1lciA9IHsgd2FudHM7IGNvbnN1bWVyIH1cblxuICBsZXQgaXNfZW1wdHkgdCA9XG4gICAgbWF0Y2ggdC53YW50cyB3aXRoXG4gICAgfCBaZXJvIGkgLT4gSXZhci5pc19lbXB0eSBpXG4gICAgfCBPbmUgaSAtPiBJdmFyLmlzX2VtcHR5IGlcbiAgICB8IEF0X21vc3QgKF8sIGkpIC0+IEl2YXIuaXNfZW1wdHkgaVxuICA7O1xuXG4gIGxldCBmaWxsX3dpdGhfZW9mIHQgPVxuICAgIG1hdGNoIHQud2FudHMgd2l0aFxuICAgIHwgWmVybyBpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgICB8IE9uZSBpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgICB8IEF0X21vc3QgKF8sIGkpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgOztcbmVuZFxuXG5tb2R1bGUgQmxvY2tlZF9mbHVzaCA9IHN0cnVjdFxuICAoKiBBIFtCbG9ja2VkX2ZsdXNoLnRdIHJlcHJlc2VudHMgYSBibG9ja2VkIGZsdXNoIG9wZXJhdGlvbiwgd2hpY2ggY2FuIGJlIGVuYWJsZWQgYnkgYVxuICAgICBmdXR1cmUgcmVhZC4gIElmIHNvbWVvbmUgZG9lcyBbZmx1c2hlZCBwXSBvbiBhIHBpcGUsIHRoYXQgYmxvY2tzIHVudGlsIGV2ZXJ5dGhpbmdcbiAgICAgdGhhdCdzIGN1cnJlbnRseSBpbiB0aGUgcGlwZSBhdCB0aGF0IHBvaW50IGhhcyBkcmFpbmVkIG91dCBvZiB0aGUgcGlwZS4gIFdoZW4gd2UgY2FsbFxuICAgICBbZmx1c2hlZF0sIGl0IHJlY29yZHMgdGhlIHRvdGFsIGFtb3VudCBvZiBkYXRhIHRoYXQgaGFzIGJlZW4gd3JpdHRlbiBzbyBmYXIgaW5cbiAgICAgW2ZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWRdLiAgV2UgZmlsbCB0aGUgW0ZsdXNoLnRdIHdpdGggW2BPa10gd2hlbiB0aGlzIGFtb3VudCBvZlxuICAgICBkYXRhIGhhcyBiZWVuIHJlYWQgZnJvbSB0aGUgcGlwZS5cblxuICAgICBBIFtCbG9ja2VkX2ZsdXNoLnRdIGNhbiBhbHNvIGJlIGZpbGxlZCB3aXRoIFtgUmVhZGVyX2Nsb3NlZF0sIHdoaWNoIGhhcHBlbnMgd2hlbiB0aGVcbiAgICAgcmVhZGVyIGVuZCBvZiB0aGUgcGlwZSBpcyBjbG9zZWQsIGFuZCB3ZSBhcmUgdGh1cyBzdXJlIHRoYXQgdGhlIHVucmVhZCBlbGVtZW50cyBwcmVjZWRpbmcgdGhlIGZsdXNoIHdpbGwgbmV2ZXIgYmUgcmVhZC4gKilcbiAgdHlwZSB0ID1cbiAgICB7IGZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgOiBpbnRcbiAgICA7IHJlYWR5IDogWyBgT2sgfCBgUmVhZGVyX2Nsb3NlZCBdIEl2YXIudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBmaWxsIHQgdiA9IEl2YXIuZmlsbCB0LnJlYWR5IHZcbmVuZFxuXG50eXBlICgnYSwgJ3BoYW50b20pIHQgPVxuICB7ICgqIFtpZF0gaXMgYW4gaW50ZWdlciB1c2VkIHRvIGRpc3Rpbmd1aXNoIHBpcGVzIHdoZW4gZGVidWdnaW5nLiAqKVxuICAgIGlkIDogaW50IFNleHBfaGlkZGVuX2luX3Rlc3QudFxuICA7ICgqIFtpbmZvXSBpcyB1c2VyLXByb3ZpZGVkIGFyYml0cmFyeSBzZXhwLCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiAqKVxuICAgIG11dGFibGUgaW5mbyA6IFNleHAudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyAoKiBbYnVmZmVyXSBob2xkcyB2YWx1ZXMgd3JpdHRlbiB0byB0aGUgcGlwZSB0aGF0IGhhdmUgbm90IHlldCBiZWVuIHJlYWQuICopXG4gICAgbXV0YWJsZSBidWZmZXIgOiAnYSBRdWV1ZS50XG4gIDsgKCogW3NpemVfYnVkZ2V0XSBnb3Zlcm5zIHB1c2hiYWNrIG9uIHdyaXRlcnMgdG8gdGhlIHBpcGUuXG5cbiAgICAgICBUaGVyZSBpcyAqbm8qIGludmFyaWFudCB0aGF0IFtRdWV1ZS5sZW5ndGggYnVmZmVyIDw9IHNpemVfYnVkZ2V0XS5cbiAgICAgICBUaGVyZSBpcyBubyBoYXJkIHVwcGVyIGJvdW5kIG9uIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdGhhdCBjYW4gYmUgc3R1ZmZlZCBpbnRvIHRoZVxuICAgICAgIFtidWZmZXJdLiBUaGlzIGlzIGR1ZSB0byB0aGUgd2F5IHdlIGhhbmRsZSB3cml0ZXMuIFdoZW4gd2UgZG8gYSB3cml0ZSwgYWxsIG9mIHRoZVxuICAgICAgIHZhbHVlcyB3cml0dGVuIGFyZSBpbW1lZGlhdGVseSBlbnF1ZXVlZCBpbnRvIFtidWZmZXJdLiBBZnRlciB0aGUgd3JpdGUsIGlmXG4gICAgICAgW1F1ZXVlLmxlbmd0aCBidWZmZXIgPD0gdC5zaXplX2J1ZGdldF0sIHRoZW4gdGhlIHdyaXRlciB3aWxsIGJlIG5vdGlmaWVkIHRvXG4gICAgICAgY29udGludWUgd3JpdGluZy4gQWZ0ZXIgdGhlIHdyaXRlLCBpZiBbbGVuZ3RoIHQgPiB0LnNpemVfYnVkZ2V0XSwgdGhlbiB0aGUgd3JpdGVcbiAgICAgICB3aWxsIGJsb2NrIHVudGlsIHRoZSBwaXBlIGlzIHVuZGVyIGJ1ZGdldC4gKilcbiAgICBtdXRhYmxlIHNpemVfYnVkZ2V0IDogaW50XG4gIDsgKCogW3Jlc2VydmVkX3NwYWNlXSBjb3VudHMgYWdhaW5zdCBbc2l6ZV9idWRnZXRdIHdpdGhvdXQgYWN0dWFsbHkgYnVmZmVyaW5nIGFueXRoaW5nXG4gICAgICAgeWV0LiBXaGVuIGl0J3MgcG9zaXRpdmUsIHdyaXRlcyBkZWNyZW1lbnQgaXQuICopXG4gICAgbXV0YWJsZSByZXNlcnZlZF9zcGFjZSA6IGludFxuICA7ICgqIFtwdXNoYmFja10gaXMgdXNlZCB0byBnaXZlIGZlZWRiYWNrIHRvIHdyaXRlcnMgYWJvdXQgd2hldGhlciB0aGV5IHNob3VsZCB3cml0ZSB0b1xuICAgICAgIHRoZSBwaXBlLiBbcHVzaGJhY2tdIGlzIGZ1bGwgaWZmIFtsZW5ndGggdCArIHJlc2VydmVkX3NwYWNlIHQgPD0gdC5zaXplX2J1ZGdldCB8fFxuICAgICAgIGlzX2Nsb3NlZCB0XS4gKilcbiAgICBtdXRhYmxlIHB1c2hiYWNrIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbbnVtX3ZhbHVlc19yZWFkXSBrZWVwcyB0cmFjayBvZiB0aGUgdG90YWwgbnVtYmVyIG9mIHZhbHVlcyB0aGF0IGhhdmUgYmVlbiByZWFkXG4gICAgICAgZnJvbSB0aGUgcGlwZS4gIFdlIGRvIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IG92ZXJmbG93IGluIFtudW1fdmFsdWVzX3JlYWRdLiAgWW91J2RcbiAgICAgICBuZWVkIHRvIHdyaXRlIDJeNjIgZWxlbWVudHMgdG8gdGhlIHBpcGUsIHdoaWNoIHdvdWxkIHRha2UgYWJvdXQgMTQ2IHllYXJzLCBhdCBhXG4gICAgICAgZmxvdyByYXRlIG9mIDEgc2l6ZS11bml0L25hbm9zZWNvbmQuICopXG4gICAgbXV0YWJsZSBudW1fdmFsdWVzX3JlYWQgOiBpbnRcbiAgKCogW2Jsb2NrZWRfZmx1c2hlc10gaG9sZHMgZmx1c2hlcyB3aG9zZSBwcmVjZWRpbmcgZWxlbWVudHMgaGF2ZSBub3QgYmVlbiBjb21wbGV0ZWx5XG4gICAgIHJlYWQuICBGb3IgZWFjaCBibG9ja2VkIGZsdXNoLCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgbmVlZCB0byBiZSByZWFkIGZyb20gdGhlXG4gICAgIHBpcGUgaW4gb3JkZXIgdG8gZmlsbCB0aGUgZmx1c2ggaXMgICAgICAgICAgICAgICAgICAgICAgICA6XG5cbiAgICAgZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCAtIG51bV92YWx1ZXNfcmVhZFxuXG4gICAgIEtlZXBpbmcgdGhlIGRhdGEgaW4gdGhpcyBmb3JtIGFsbG93cyB1cyB0byBjaGFuZ2UgYSBzaW5nbGUgZmllbGQobnVtX3ZhbHVlc19yZWFkKVxuICAgICB3aGVuIHdlIGNvbnN1bWUgdmFsdWVzIGluc3RlYWQgb2YgaGF2aW5nIHRvIGl0ZXJhdGUgb3ZlciB0aGUgd2hvbGUgcXVldWUgb2ZcbiAgICAgZmx1c2hlcy4gKilcbiAgOyBibG9ja2VkX2ZsdXNoZXMgOiBCbG9ja2VkX2ZsdXNoLnQgUXVldWUudFxuICA7ICgqIFtibG9ja2VkX3JlYWRzXSBob2xkcyByZWFkcyB0aGF0IGFyZSB3YWl0aW5nIG9uIGRhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgcGlwZS4gKilcbiAgICBibG9ja2VkX3JlYWRzIDogJ2EgQmxvY2tlZF9yZWFkLnQgUXVldWUudFxuICA7ICgqIFtjbG9zZWRdIGlzIGZpbGxlZCB3aGVuIHdlIGNsb3NlIHRoZSB3cml0ZSBlbmQgb2YgdGhlIHBpcGUuICopXG4gICAgY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbcmVhZF9jbG9zZWRdIGlzIGZpbGxlZCB3aGVuIHdlIGNsb3NlIHRoZSByZWFkIGVuZCBvZiB0aGUgcGlwZS4gKilcbiAgICByZWFkX2Nsb3NlZCA6IHVuaXQgSXZhci50XG4gIDsgKCogW2NvbnN1bWVyc10gaXMgYSBsaXN0IG9mIGFsbCBjb25zdW1lcnMgdGhhdCBtYXkgYmUgaGFuZGxpbmcgdmFsdWVzIHJlYWQgZnJvbSB0aGVcbiAgICAgICBwaXBlLiAqKVxuICAgIG11dGFibGUgY29uc3VtZXJzIDogQ29uc3VtZXIudCBsaXN0XG4gIDsgKCogW3Vwc3RyZWFtX2ZsdXNoZWRzXSBoYXMgYSBmdW5jdGlvbiBmb3IgZWFjaCBwaXBlIGltbWVkaWF0ZWx5IHVwc3RyZWFtIG9mIHRoaXMgb25lLlxuICAgICAgIFRoYXQgZnVuY3Rpb24gd2Fsa3MgdG8gdGhlIGhlYWQocykgb2YgdGhlIHVwc3RyZWFtIHBpcGUsIGFuZCBjYWxsc1xuICAgICAgIFtkb3duc3RyZWFtX2ZsdXNoZWRdIG9uIHRoZSBoZWFkKHMpLiAgU2VlIHRoZSBkZWZpbml0aW9uIG9mIFt1cHN0cmVhbV9mbHVzaGVkXVxuICAgICAgIGJlbG93LiAqKVxuICAgIHVwc3RyZWFtX2ZsdXNoZWRzIDogKHVuaXQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50KSBCYWcudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBlZmZlY3RpdmVfc2l6ZV9idWRnZXQgdCA9IHQuc2l6ZV9idWRnZXQgLSB0LnJlc2VydmVkX3NwYWNlXG5cbnR5cGUgKCdhLCAncGhhbnRvbSkgcGlwZSA9ICgnYSwgJ3BoYW50b20pIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGhhc2ggdCA9IEhhc2h0YmwuaGFzaCB0LmlkXG5sZXQgZXF1YWwgKHQxIDogKF8sIF8pIHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxubGV0IGNvbXBhcmUgdDEgdDIgPSBJbnQuY29tcGFyZSB0MS5pZCB0Mi5pZFxubGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQuY2xvc2VkXG5sZXQgaXNfcmVhZF9jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LnJlYWRfY2xvc2VkXG5sZXQgY2xvc2VkIHQgPSBJdmFyLnJlYWQgdC5jbG9zZWRcbmxldCBwdXNoYmFjayB0ID0gSXZhci5yZWFkIHQucHVzaGJhY2tcbmxldCBsZW5ndGggdCA9IFF1ZXVlLmxlbmd0aCB0LmJ1ZmZlclxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcbmxldCB1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIHQgfmRlbHRhID0gdC5udW1fdmFsdWVzX3JlYWQgPC0gdC5udW1fdmFsdWVzX3JlYWQgKyBkZWx0YVxuXG5sZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgdHJ5XG4gICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmlkOmlnbm9yZVxuICAgICAgfmluZm86aWdub3JlXG4gICAgICB+YnVmZmVyOmlnbm9yZVxuICAgICAgfnNpemVfYnVkZ2V0OihjaGVjayAoZnVuIHNpemVfYnVkZ2V0IC0+IGFzc2VydCAoc2l6ZV9idWRnZXQgPj0gMCkpKVxuICAgICAgfnJlc2VydmVkX3NwYWNlOihjaGVjayAoZnVuIHJlc2VydmVkX3NwYWNlIC0+IGFzc2VydCAocmVzZXJ2ZWRfc3BhY2UgPj0gMCkpKVxuICAgICAgfnB1c2hiYWNrOlxuICAgICAgICAoY2hlY2sgKGZ1biBwdXNoYmFjayAtPlxuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIEJvb2wuZXF1YWxcbiAgICAgICAgICAgICAgIChJdmFyLmlzX2Z1bGwgcHVzaGJhY2spXG4gICAgICAgICAgICAgICAobGVuZ3RoIHQgPD0gZWZmZWN0aXZlX3NpemVfYnVkZ2V0IHQgfHwgaXNfY2xvc2VkIHQpKSkpXG4gICAgICB+bnVtX3ZhbHVlc19yZWFkOmlnbm9yZVxuICAgICAgfmJsb2NrZWRfZmx1c2hlczpcbiAgICAgICAgKGNoZWNrIChmdW4gYmxvY2tlZF9mbHVzaGVzIC0+XG4gICAgICAgICAgIFF1ZXVlLml0ZXIgYmxvY2tlZF9mbHVzaGVzIH5mOihmdW4gKGYgOiBCbG9ja2VkX2ZsdXNoLnQpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChmLmZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgPiB0Lm51bV92YWx1ZXNfcmVhZCkpO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIExpc3QuaXNfc29ydGVkXG4gICAgICAgICAgICAgICB+Y29tcGFyZTpJbnQuY29tcGFyZVxuICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAoUXVldWUudG9fbGlzdCBibG9ja2VkX2ZsdXNoZXMpXG4gICAgICAgICAgICAgICAgICB+ZjpCbG9ja2VkX2ZsdXNoLmZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQpKTtcbiAgICAgICAgICAgaWYgaXNfZW1wdHkgdCB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgYmxvY2tlZF9mbHVzaGVzKSkpXG4gICAgICB+YmxvY2tlZF9yZWFkczpcbiAgICAgICAgKGNoZWNrIChmdW4gYmxvY2tlZF9yZWFkcyAtPlxuICAgICAgICAgICAoKiBJZiBkYXRhIGlzIGF2YWlsYWJsZSwgbm8gb25lIGlzIHdhaXRpbmcgZm9yIGl0LiAgVGhpcyB3b3VsZCBuZWVkIHRvIGNoYW5nZSBpZlxuICAgICAgICAgICAgICB3ZSBldmVyIGltcGxlbWVudCBbcmVhZF9leGFjdGx5XSBhcyBhbiBhdG9taWMgb3BlcmF0aW9uLiAqKVxuICAgICAgICAgICBpZiBub3QgKGlzX2VtcHR5IHQpIHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX3JlYWRzKTtcbiAgICAgICAgICAgUXVldWUuaXRlciBibG9ja2VkX3JlYWRzIH5mOihmdW4gcmVhZCAtPlxuICAgICAgICAgICAgIEJsb2NrZWRfcmVhZC5pbnZhcmlhbnQgcmVhZDtcbiAgICAgICAgICAgICBhc3NlcnQgKEJsb2NrZWRfcmVhZC5pc19lbXB0eSByZWFkKSk7XG4gICAgICAgICAgICgqIFlvdSBuZXZlciBibG9jayB0cnlpbmcgdG8gcmVhZCBhIGNsb3NlZCBwaXBlLiAqKVxuICAgICAgICAgICBpZiBpc19jbG9zZWQgdCB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgYmxvY2tlZF9yZWFkcykpKVxuICAgICAgfmNsb3NlZDppZ25vcmVcbiAgICAgIH5yZWFkX2Nsb3NlZDppZ25vcmVcbiAgICAgIH5jb25zdW1lcnM6XG4gICAgICAgIChjaGVjayAoZnVuIGwgLT5cbiAgICAgICAgICAgTGlzdC5pdGVyIGwgfmY6KGZ1biBjb25zdW1lciAtPlxuICAgICAgICAgICAgIENvbnN1bWVyLmludmFyaWFudCBjb25zdW1lcjtcbiAgICAgICAgICAgICBhc3NlcnQgKENvbnN1bWVyLnBpcGVfaWQgY29uc3VtZXIgPSB0LmlkKSkpKVxuICAgICAgfnVwc3RyZWFtX2ZsdXNoZWRzOmlnbm9yZVxuICB3aXRoXG4gIHwgZXhuIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgfnBpcGU6KHQgOiAoXywgXykgdCldXG47O1xuXG5tb2R1bGUgUmVhZGVyID0gc3RydWN0XG4gIHR5cGUgcGhhbnRvbSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICdhIHQgPSAoJ2EsIHBoYW50b20pIHBpcGUgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5lbmRcblxubW9kdWxlIFdyaXRlciA9IHN0cnVjdFxuICB0eXBlIHBoYW50b20gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAnYSB0ID0gKCdhLCBwaGFudG9tKSBwaXBlIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuZW5kXG5cbmxldCBpZF9yZWYgPSByZWYgMFxuXG5sZXQgY3JlYXRlX2ludGVybmFsIH5zaXplX2J1ZGdldCB+aW5mbyB+aW5pdGlhbF9idWZmZXIgPVxuICBpbmNyIGlkX3JlZjtcbiAgbGV0IHQgPVxuICAgIHsgaWQgPSAhaWRfcmVmXG4gICAgOyBpbmZvXG4gICAgOyBjbG9zZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgcmVhZF9jbG9zZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDtcbiAgICAgIHNpemVfYnVkZ2V0XG4gICAgOyByZXNlcnZlZF9zcGFjZSA9IDBcbiAgICA7IHB1c2hiYWNrID0gSXZhci5jcmVhdGUgKClcbiAgICA7IGJ1ZmZlciA9IGluaXRpYWxfYnVmZmVyXG4gICAgOyBudW1fdmFsdWVzX3JlYWQgPSAwXG4gICAgOyBibG9ja2VkX2ZsdXNoZXMgPSBRdWV1ZS5jcmVhdGUgKClcbiAgICA7IGJsb2NrZWRfcmVhZHMgPSBRdWV1ZS5jcmVhdGUgKClcbiAgICA7IGNvbnN1bWVycyA9IFtdXG4gICAgOyB1cHN0cmVhbV9mbHVzaGVkcyA9IEJhZy5jcmVhdGUgKClcbiAgICB9XG4gIGluXG4gIHRcbjs7XG5cbmxldCB2YWxpZGF0ZV9zaXplX2J1ZGdldCBzaXplX2J1ZGdldCA9XG4gIGlmIHNpemVfYnVkZ2V0IDwgMFxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwibmVnYXRpdmUgc2l6ZV9idWRnZXRcIiAoc2l6ZV9idWRnZXQgOiBpbnQpXVxuICBlbHNlIHNpemVfYnVkZ2V0XG47O1xuXG5sZXQgY3JlYXRlID9zaXplX2J1ZGdldCA/aW5mbyAoKSA9XG4gIGxldCBzaXplX2J1ZGdldCA9XG4gICAgbWF0Y2ggc2l6ZV9idWRnZXQgd2l0aFxuICAgIHwgU29tZSB2IC0+IHZhbGlkYXRlX3NpemVfYnVkZ2V0IHZcbiAgICB8IE5vbmUgLT4gMFxuICBpblxuICBsZXQgdCA9IGNyZWF0ZV9pbnRlcm5hbCB+c2l6ZV9idWRnZXQgfmluZm8gfmluaXRpYWxfYnVmZmVyOihRdWV1ZS5jcmVhdGUgKCkpIGluXG4gICgqIGluaXRpYWxseSwgdGhlIHBpcGUgZG9lcyBub3QgcHVzaGJhY2sgKilcbiAgSXZhci5maWxsIHQucHVzaGJhY2sgKCk7XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgdCwgdFxuOztcblxubGV0IHVwZGF0ZV9wdXNoYmFjayB0ID1cbiAgaWYgbGVuZ3RoIHQgPD0gZWZmZWN0aXZlX3NpemVfYnVkZ2V0IHQgfHwgaXNfY2xvc2VkIHRcbiAgdGhlbiBJdmFyLmZpbGxfaWZfZW1wdHkgdC5wdXNoYmFjayAoKVxuICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LnB1c2hiYWNrXG4gIHRoZW4gdC5wdXNoYmFjayA8LSBJdmFyLmNyZWF0ZSAoKVxuOztcblxubGV0IGNsb3NlIHQgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgXCJjbG9zZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgbm90IChpc19jbG9zZWQgdClcbiAgdGhlbiAoXG4gICAgSXZhci5maWxsIHQuY2xvc2VkICgpO1xuICAgIGlmIGlzX2VtcHR5IHRcbiAgICB0aGVuIChcbiAgICAgIFF1ZXVlLml0ZXIgdC5ibG9ja2VkX3JlYWRzIH5mOkJsb2NrZWRfcmVhZC5maWxsX3dpdGhfZW9mO1xuICAgICAgUXVldWUuY2xlYXIgdC5ibG9ja2VkX3JlYWRzKTtcbiAgICB1cGRhdGVfcHVzaGJhY2sgdClcbjs7XG5cbmxldCBjbG9zZV9yZWFkIHQgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgXCJjbG9zZV9yZWFkXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBpZiBub3QgKGlzX3JlYWRfY2xvc2VkIHQpXG4gIHRoZW4gKFxuICAgIEl2YXIuZmlsbCB0LnJlYWRfY2xvc2VkICgpO1xuICAgIFF1ZXVlLml0ZXIgdC5ibG9ja2VkX2ZsdXNoZXMgfmY6KGZ1biBmbHVzaCAtPiBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggYFJlYWRlcl9jbG9zZWQpO1xuICAgIFF1ZXVlLmNsZWFyIHQuYmxvY2tlZF9mbHVzaGVzO1xuICAgIFF1ZXVlLmNsZWFyIHQuYnVmZmVyO1xuICAgIHQucmVzZXJ2ZWRfc3BhY2UgPC0gMDtcbiAgICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgICAoKiB3ZSBqdXN0IGNsZWFyZWQgdGhlIGJ1ZmZlciwgc28gbWF5IG5lZWQgdG8gZmlsbCBbdC5wdXNoYmFja10gKilcbiAgICBjbG9zZSB0KVxuOztcblxubGV0IGNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4Y2VwdGlvbiA/c2l6ZV9idWRnZXQgZiA9XG4gIGxldCByLCB3ID0gY3JlYXRlID9zaXplX2J1ZGdldCAoKSBpblxuICB1cG9uIChmIHcpIChmdW4gKCkgLT4gY2xvc2Ugdyk7XG4gIHJcbjs7XG5cbmxldCBjcmVhdGVfcmVhZGVyID9zaXplX2J1ZGdldCB+Y2xvc2Vfb25fZXhjZXB0aW9uIGYgPVxuICBpZiBub3QgY2xvc2Vfb25fZXhjZXB0aW9uXG4gIHRoZW4gY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uID9zaXplX2J1ZGdldCBmXG4gIGVsc2UgKFxuICAgIGxldCByLCB3ID0gY3JlYXRlID9zaXplX2J1ZGdldCAoKSBpblxuICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAoTW9uaXRvci5wcm90ZWN0XG4gICAgICAgICAoZnVuICgpIC0+IGYgdylcbiAgICAgICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgICAgICAgY2xvc2UgdztcbiAgICAgICAgICAgcmV0dXJuICgpKSk7XG4gICAgcilcbjs7XG5cbmxldCBjcmVhdGVfd3JpdGVyID9zaXplX2J1ZGdldCBmID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKE1vbml0b3IucHJvdGVjdFxuICAgICAgIChmdW4gKCkgLT4gZiByKVxuICAgICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgICAgIGNsb3NlX3JlYWQgcjtcbiAgICAgICAgIHJldHVybiAoKSkpO1xuICB3XG47O1xuXG5sZXQgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyID1cbiAgT3B0aW9uLml0ZXIgY29uc3VtZXIgfmY6Q29uc3VtZXIuc3RhcnQ7XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWF0Y2ggUXVldWUucGVlayB0LmJsb2NrZWRfZmx1c2hlcyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGZsdXNoIC0+XG4gICAgICBpZiB0Lm51bV92YWx1ZXNfcmVhZCA+PSBmbHVzaC5maWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkXG4gICAgICB0aGVuIChcbiAgICAgICAgaWdub3JlIChRdWV1ZS5kZXF1ZXVlX2V4biB0LmJsb2NrZWRfZmx1c2hlcyA6IEJsb2NrZWRfZmx1c2gudCk7XG4gICAgICAgIChtYXRjaCBjb25zdW1lciB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gQmxvY2tlZF9mbHVzaC5maWxsIGZsdXNoIGBPa1xuICAgICAgICAgfCBTb21lIGNvbnN1bWVyIC0+XG4gICAgICAgICAgIHVwb25cbiAgICAgICAgICAgICAoQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1c2hlZCBjb25zdW1lcilcbiAgICAgICAgICAgICAoZnVuIGZsdXNoX3Jlc3VsdCAtPiBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggZmx1c2hfcmVzdWx0KSk7XG4gICAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKClcbjs7XG5cbigqIFtjb25zdW1lX2FsbCB0XSByZWFkcyBhbGwgdGhlIGVsZW1lbnRzIGluIFt0XS4gKilcbmxldCBjb25zdW1lX2FsbCB0IGNvbnN1bWVyID1cbiAgbGV0IHJlc3VsdCA9IHQuYnVmZmVyIGluXG4gIHQuYnVmZmVyIDwtIFF1ZXVlLmNyZWF0ZSAoKTtcbiAgdXBkYXRlX251bV92YWx1ZXNfcmVhZCB0IH5kZWx0YTooUXVldWUubGVuZ3RoIHJlc3VsdCk7XG4gIHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lcjtcbiAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gIHJlc3VsdFxuOztcblxubGV0IGNvbnN1bWVfb25lIHQgY29uc3VtZXIgPVxuICBhc3NlcnQgKGxlbmd0aCB0ID49IDEpO1xuICBsZXQgcmVzdWx0ID0gUXVldWUuZGVxdWV1ZV9leG4gdC5idWZmZXIgaW5cbiAgdXBkYXRlX251bV92YWx1ZXNfcmVhZCB0IH5kZWx0YToxO1xuICB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXI7XG4gIHVwZGF0ZV9wdXNoYmFjayB0O1xuICByZXN1bHRcbjs7XG5cbmxldCBjb25zdW1lIHQgfm1heF9xdWV1ZV9sZW5ndGggY29uc3VtZXIgPVxuICBhc3NlcnQgKG1heF9xdWV1ZV9sZW5ndGggPj0gMCk7XG4gIGlmIG1heF9xdWV1ZV9sZW5ndGggPj0gbGVuZ3RoIHRcbiAgdGhlbiBjb25zdW1lX2FsbCB0IGNvbnN1bWVyXG4gIGVsc2UgKFxuICAgIHVwZGF0ZV9udW1fdmFsdWVzX3JlYWQgdCB+ZGVsdGE6bWF4X3F1ZXVlX2xlbmd0aDtcbiAgICB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXI7XG4gICAgbGV0IHJlc3VsdCA9IFF1ZXVlLmNyZWF0ZSB+Y2FwYWNpdHk6bWF4X3F1ZXVlX2xlbmd0aCAoKSBpblxuICAgIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzp0LmJ1ZmZlciB+ZHN0OnJlc3VsdCB+bGVuOm1heF9xdWV1ZV9sZW5ndGggKCk7XG4gICAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gICAgcmVzdWx0KVxuOztcblxubGV0IHNldF9zaXplX2J1ZGdldCB0IHNpemVfYnVkZ2V0ID1cbiAgbGV0IHNpemVfYnVkZ2V0ID0gdmFsaWRhdGVfc2l6ZV9idWRnZXQgc2l6ZV9idWRnZXQgaW5cbiAgdC5zaXplX2J1ZGdldCA8LSBzaXplX2J1ZGdldDtcbiAgdXBkYXRlX3B1c2hiYWNrIHRcbjs7XG5cbmxldCByZXNlcnZlX3NwYWNlIHQgbiA9XG4gIGlmIG4gPCAwIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJyZXNlcnZpbmcgbmVnYXRpdmUgc3BhY2VcIiAobiA6IGludCldO1xuICBsZXQgcmVzZXJ2ZWRfc3BhY2UgPSB0LnJlc2VydmVkX3NwYWNlICsgbiBpblxuICBpZiByZXNlcnZlZF9zcGFjZSA8IDBcbiAgdGhlblxuICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwib3ZlcmZsb3cgd2hlbiByZXNlcnZpbmcgc3BhY2VcIiAodC5yZXNlcnZlZF9zcGFjZSA6IGludCkgKG4gOiBpbnQpXTtcbiAgdC5yZXNlcnZlZF9zcGFjZSA8LSByZXNlcnZlZF9zcGFjZTtcbiAgdXBkYXRlX3B1c2hiYWNrIHRcbjs7XG5cbmxldCBmaWxsX2Jsb2NrZWRfcmVhZHMgdCA9XG4gIHdoaWxlIChub3QgKFF1ZXVlLmlzX2VtcHR5IHQuYmxvY2tlZF9yZWFkcykpICYmIG5vdCAoaXNfZW1wdHkgdCkgZG9cbiAgICBsZXQgYmxvY2tlZF9yZWFkID0gUXVldWUuZGVxdWV1ZV9leG4gdC5ibG9ja2VkX3JlYWRzIGluXG4gICAgbGV0IGNvbnN1bWVyID0gYmxvY2tlZF9yZWFkLmNvbnN1bWVyIGluXG4gICAgbWF0Y2ggYmxvY2tlZF9yZWFkLndhbnRzIHdpdGhcbiAgICB8IFplcm8gaXZhciAtPiBJdmFyLmZpbGwgaXZhciBgT2tcbiAgICB8IE9uZSBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIChgT2sgKGNvbnN1bWVfb25lIHQgY29uc3VtZXIpKVxuICAgIHwgQXRfbW9zdCAobWF4X3F1ZXVlX2xlbmd0aCwgaXZhcikgLT5cbiAgICAgIEl2YXIuZmlsbCBpdmFyIChgT2sgKGNvbnN1bWUgdCB+bWF4X3F1ZXVlX2xlbmd0aCBjb25zdW1lcikpXG4gIGRvbmVcbjs7XG5cbmxldCBkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSB0IG4gPSB0LnJlc2VydmVkX3NwYWNlIDwtIEludC5tYXggMCAodC5yZXNlcnZlZF9zcGFjZSAtIG4pXG5cbigqIGNoZWNrcyBhbGwgaW52YXJpYW50cywgY2FsbHMgYSBwYXNzZWQgaW4gZiB0byBoYW5kbGUgYSB3cml0ZSwgdGhlbiB1cGRhdGVzIHJlYWRzIGFuZFxuICAgcHVzaGJhY2sgKilcbmxldCBzdGFydF93cml0ZSB0IH5zaXplID1cbiAgaWYgIXNob3dfZGVidWdfbWVzc2FnZXMgdGhlbiBlcHJpbnRzIFwid3JpdGVcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIGlzX2Nsb3NlZCB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJ3cml0ZSB0byBjbG9zZWQgcGlwZVwiIH5waXBlOih0IDogKF8sIF8pIHQpXTtcbiAgZGVjcmVhc2VfcmVzZXJ2ZWRfc3BhY2UgdCBzaXplXG47O1xuXG5sZXQgZmluaXNoX3dyaXRlIHQgPVxuICBmaWxsX2Jsb2NrZWRfcmVhZHMgdDtcbiAgdXBkYXRlX3B1c2hiYWNrIHRcbjs7XG5cbmxldCB0cmFuc2Zlcl9pbl93aXRob3V0X3B1c2hiYWNrIHQgfmZyb20gPVxuICBzdGFydF93cml0ZSB0IH5zaXplOihRdWV1ZS5sZW5ndGggZnJvbSk7XG4gIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzpmcm9tIH5kc3Q6dC5idWZmZXIgKCk7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgdHJhbnNmZXJfaW4gdCB+ZnJvbSA9XG4gIHRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZnJvbTtcbiAgcHVzaGJhY2sgdFxuOztcblxubGV0IGNvcHlfaW5fd2l0aG91dF9wdXNoYmFjayB0IH5mcm9tID1cbiAgc3RhcnRfd3JpdGUgdCB+c2l6ZTooUXVldWUubGVuZ3RoIGZyb20pO1xuICBRdWV1ZS5pdGVyIGZyb20gfmY6KGZ1biB4IC0+IFF1ZXVlLmVucXVldWUgdC5idWZmZXIgeCk7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG4oKiBbd3JpdGUnXSBpcyB1c2VkIGludGVybmFsbHkgKilcbmxldCB3cml0ZScgdCBxID0gdHJhbnNmZXJfaW4gdCB+ZnJvbTpxXG5cbmxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgdmFsdWUgPVxuICBzdGFydF93cml0ZSB0IH5zaXplOjE7XG4gIFF1ZXVlLmVucXVldWUgdC5idWZmZXIgdmFsdWU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgd3JpdGUgdCB2YWx1ZSA9XG4gIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB2YWx1ZTtcbiAgcHVzaGJhY2sgdFxuOztcblxubGV0IHdyaXRlX3doZW5fcmVhZHkgdCB+ZiA9XG4gIGxldCVtYXAgKCkgPSBwdXNoYmFjayB0IGluXG4gIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYENsb3NlZCBlbHNlIGBPayAoZiAoZnVuIHggLT4gd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHgpKVxuOztcblxubGV0IHdyaXRlX2lmX29wZW4gdCB4ID0gaWYgbm90IChpc19jbG9zZWQgdCkgdGhlbiB3cml0ZSB0IHggZWxzZSByZXR1cm4gKClcblxubGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2tfaWZfb3BlbiB0IHggPVxuICBpZiBub3QgKGlzX2Nsb3NlZCB0KSB0aGVuIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4XG47O1xuXG5sZXQgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgP2NvbnN1bWVyIHQgPVxuICBtYXRjaCBjb25zdW1lciB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgY29uc3VtZXIgLT5cbiAgICBpZiB0LmlkIDw+IENvbnN1bWVyLnBpcGVfaWQgY29uc3VtZXJcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiQXR0ZW1wdCB0byB1c2UgY29uc3VtZXIgd2l0aCB3cm9uZyBwaXBlXCJcbiAgICAgICAgICAgIChjb25zdW1lciA6IENvbnN1bWVyLnQpXG4gICAgICAgICAgICB+cGlwZToodCA6IF8gUmVhZGVyLnQpXVxuOztcblxubGV0IHN0YXJ0X3JlYWQgP2NvbnN1bWVyIHQgbGFiZWwgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgbGFiZWwgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyB0ID9jb25zdW1lclxuOztcblxubGV0IGdlbl9yZWFkX25vdyA/Y29uc3VtZXIgdCBjb25zdW1lID1cbiAgc3RhcnRfcmVhZCB0IFwicmVhZF9ub3dcIiA/Y29uc3VtZXI7XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBpZiBpc19jbG9zZWQgdCB0aGVuIGBFb2YgZWxzZSBgTm90aGluZ19hdmFpbGFibGVcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSB0LmJsb2NrZWRfcmVhZHMpO1xuICAgICgqIGZyb20gW2ludmFyaWFudF0gYW5kIFtub3QgKGlzX2VtcHR5IHQpXSAqKVxuICAgIGBPayAoY29uc3VtZSB0IGNvbnN1bWVyKSlcbjs7XG5cbmxldCBnZXRfbWF4X3F1ZXVlX2xlbmd0aCB+bWF4X3F1ZXVlX2xlbmd0aCA9XG4gIG1hdGNoIG1heF9xdWV1ZV9sZW5ndGggd2l0aFxuICB8IE5vbmUgLT4gSW50Lm1heF92YWx1ZVxuICB8IFNvbWUgbWF4X3F1ZXVlX2xlbmd0aCAtPlxuICAgIGlmIG1heF9xdWV1ZV9sZW5ndGggPD0gMFxuICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJtYXhfcXVldWVfbGVuZ3RoIDw9IDBcIiAobWF4X3F1ZXVlX2xlbmd0aCA6IGludCldO1xuICAgIG1heF9xdWV1ZV9sZW5ndGhcbjs7XG5cbmxldCByZWFkX25vdycgP2NvbnN1bWVyID9tYXhfcXVldWVfbGVuZ3RoIHQgPVxuICBsZXQgbWF4X3F1ZXVlX2xlbmd0aCA9IGdldF9tYXhfcXVldWVfbGVuZ3RoIH5tYXhfcXVldWVfbGVuZ3RoIGluXG4gIGdlbl9yZWFkX25vdyB0ID9jb25zdW1lciAoZnVuIHQgY29uc3VtZXIgLT4gY29uc3VtZSB0IH5tYXhfcXVldWVfbGVuZ3RoIGNvbnN1bWVyKVxuOztcblxubGV0IHJlYWRfbm93ID9jb25zdW1lciB0ID0gZ2VuX3JlYWRfbm93IHQgP2NvbnN1bWVyIGNvbnN1bWVfb25lXG5sZXQgcGVlayB0ID0gUXVldWUucGVlayB0LmJ1ZmZlclxuXG5sZXQgY2xlYXIgdCA9XG4gIG1hdGNoIHJlYWRfbm93JyB0IHdpdGhcbiAgfCBgRW9mIHwgYE5vdGhpbmdfYXZhaWxhYmxlIHwgYE9rIF8gLT4gKClcbjs7XG5cbmxldCByZWFkJyA/Y29uc3VtZXIgP21heF9xdWV1ZV9sZW5ndGggdCA9XG4gIGxldCBtYXhfcXVldWVfbGVuZ3RoID0gZ2V0X21heF9xdWV1ZV9sZW5ndGggfm1heF9xdWV1ZV9sZW5ndGggaW5cbiAgc3RhcnRfcmVhZCB0IFwicmVhZCdcIiA/Y29uc3VtZXI7XG4gIG1hdGNoIHJlYWRfbm93JyB0ID9jb25zdW1lciB+bWF4X3F1ZXVlX2xlbmd0aCB3aXRoXG4gIHwgKGBPayBfIHwgYEVvZikgYXMgciAtPiByZXR1cm4gclxuICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgIFF1ZXVlLmVucXVldWVcbiAgICAgICAgdC5ibG9ja2VkX3JlYWRzXG4gICAgICAgIChCbG9ja2VkX3JlYWQuY3JlYXRlIChBdF9tb3N0IChtYXhfcXVldWVfbGVuZ3RoLCBpdmFyKSkgY29uc3VtZXIpKVxuOztcblxubGV0IHJlYWQgP2NvbnN1bWVyIHQgPVxuICBzdGFydF9yZWFkIHQgXCJyZWFkXCIgP2NvbnN1bWVyO1xuICBpZiBpc19lbXB0eSB0XG4gIHRoZW5cbiAgICBpZiBpc19jbG9zZWQgdFxuICAgIHRoZW4gcmV0dXJuIGBFb2ZcbiAgICBlbHNlXG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgICAgIFF1ZXVlLmVucXVldWUgdC5ibG9ja2VkX3JlYWRzIChCbG9ja2VkX3JlYWQuKGNyZWF0ZSAoT25lIGl2YXIpKSBjb25zdW1lcikpXG4gIGVsc2UgKFxuICAgIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgdC5ibG9ja2VkX3JlYWRzKTtcbiAgICByZXR1cm4gKGBPayAoY29uc3VtZV9vbmUgdCBjb25zdW1lcikpKVxuOztcblxubGV0IHJlYWRfZXhuID9jb25zdW1lciB0ID1cbiAgbWF0Y2glbWFwIHJlYWQgP2NvbnN1bWVyIHQgd2l0aFxuICB8IGBPayB2YWx1ZSAtPiB2YWx1ZVxuICB8IGBFb2YgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLnJlYWRfZXhuOiByZWNlaXZlZCBFT0ZcIl1cbjs7XG5cbmxldCB2YWx1ZXNfYXZhaWxhYmxlIHQgPVxuICBzdGFydF9yZWFkIHQgXCJ2YWx1ZXNfYXZhaWxhYmxlXCI7XG4gIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgdGhlbiByZXR1cm4gYE9rXG4gIGVsc2UgaWYgaXNfY2xvc2VkIHRcbiAgdGhlbiByZXR1cm4gYEVvZlxuICBlbHNlIChcbiAgICBtYXRjaCBRdWV1ZS5sYXN0IHQuYmxvY2tlZF9yZWFkcyB3aXRoXG4gICAgfCBTb21lIHsgY29uc3VtZXIgPSBOb25lOyB3YW50cyA9IFplcm8gaXZhciB9IC0+XG4gICAgICAoKiBUaGlzIGNhc2UgaXMgYW4gb3B0aW1pemF0aW9uIGZvciBtdWx0aXBsZSBjYWxscyB0byBbdmFsdWVzX2F2YWlsYWJsZV0gaW5cbiAgICAgICAgIHNlcXVlbmNlLiAgSXQgY2F1c2VzIHRoZW0gdG8gYWxsIHNoYXJlIHRoZSBzYW1lIGl2YXIsIHJhdGhlciB0aGFuIGFsbG9jYXRlXG4gICAgICAgICBhbiBpdmFyIHBlciBjYWxsLiAqKVxuICAgICAgSXZhci5yZWFkIGl2YXJcbiAgICB8IF8gLT5cbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgICAgUXVldWUuZW5xdWV1ZSB0LmJsb2NrZWRfcmVhZHMgKEJsb2NrZWRfcmVhZC4oY3JlYXRlIChaZXJvIGl2YXIpKSBOb25lKSkpXG47O1xuXG5sZXQgcmVhZF9jaG9pY2UgdCA9IGNob2ljZSAodmFsdWVzX2F2YWlsYWJsZSB0KSAoZnVuIChfIDogWyBgT2sgfCBgRW9mIF0pIC0+IHJlYWRfbm93IHQpXG5cbmxldCByZWFkX2Nob2ljZV9zaW5nbGVfY29uc3VtZXJfZXhuIHQgaGVyZSA9XG4gIERlZmVycmVkLkNob2ljZS5tYXAgKHJlYWRfY2hvaWNlIHQpIH5mOihmdW5jdGlvblxuICAgIHwgKGBPayBfIHwgYEVvZikgYXMgeCAtPiB4XG4gICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJQaXBlLnJlYWRfY2hvaWNlX3NpbmdsZV9jb25zdW1lcl9leG46IGNob2ljZSB3YXMgZW5hYmxlZCBidXQgcGlwZSBpcyBlbXB0eTsgXFxcbiAgICAgICAgICAgdGhpcyBpcyBsaWtlbHkgZHVlIHRvIGEgcmFjZSBjb25kaXRpb24gd2l0aCBvbmUgb3IgbW9yZSBvdGhlciBjb25zdW1lcnNcIlxuICAgICAgICAgICAgKGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV0pXG47O1xuXG4oKiBbcmVhZF9leGFjdGx5IHQgfm51bV92YWx1ZXNdIGxvb3BzLCBnZXR0aW5nIHlvdSBhbGwgW251bV92YWx1ZXNdIGl0ZW1zLCB1cFxuICAgdG8gRU9GLiAqKVxubGV0IHJlYWRfZXhhY3RseSA/Y29uc3VtZXIgdCB+bnVtX3ZhbHVlcyA9XG4gIHN0YXJ0X3JlYWQgdCBcInJlYWRfZXhhY3RseVwiID9jb25zdW1lcjtcbiAgaWYgbnVtX3ZhbHVlcyA8PSAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLnJlYWRfZXhhY3RseSBnb3QgbnVtX3ZhbHVlcyA8PSAwXCIgKG51bV92YWx1ZXMgOiBpbnQpXTtcbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gZmluaXNoIC0+XG4gICAgbGV0IHJlc3VsdCA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBsZXQgYWxyZWFkeV9yZWFkID0gUXVldWUubGVuZ3RoIHJlc3VsdCBpblxuICAgICAgYXNzZXJ0IChhbHJlYWR5X3JlYWQgPD0gbnVtX3ZhbHVlcyk7XG4gICAgICBpZiBhbHJlYWR5X3JlYWQgPSBudW1fdmFsdWVzXG4gICAgICB0aGVuIEl2YXIuZmlsbCBmaW5pc2ggKGBFeGFjdGx5IHJlc3VsdClcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZCcgP2NvbnN1bWVyIHQgfm1heF9xdWV1ZV9sZW5ndGg6KG51bV92YWx1ZXMgLSBhbHJlYWR5X3JlYWQpXG4gICAgICAgID4+PiBmdW5jdGlvblxuICAgICAgICB8IGBFb2YgLT4gSXZhci5maWxsIGZpbmlzaCAoaWYgYWxyZWFkeV9yZWFkID0gMCB0aGVuIGBFb2YgZWxzZSBgRmV3ZXIgcmVzdWx0KVxuICAgICAgICB8IGBPayBxIC0+XG4gICAgICAgICAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOnEgfmRzdDpyZXN1bHQgKCk7XG4gICAgICAgICAgbG9vcCAoKVxuICAgIGluXG4gICAgbG9vcCAoKSlcbjs7XG5cbmxldCBkb3duc3RyZWFtX2ZsdXNoZWQgdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlblxuICAgIGlmIExpc3QuaXNfZW1wdHkgdC5jb25zdW1lcnNcbiAgICB0aGVuIHJldHVybiBgT2tcbiAgICBlbHNlXG4gICAgICBGbHVzaGVkX3Jlc3VsdC5jb21iaW5lXG4gICAgICAgIChMaXN0Lm1hcCB0LmNvbnN1bWVycyB+ZjpDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkKVxuICBlbHNlXG4gICAgKCogW3RdIG1pZ2h0IGJlIGNsb3NlZC4gIEJ1dCB0aGUgcmVhZCBlbmQgY2FuJ3QgYmUgY2xvc2VkLCBiZWNhdXNlIGlmIGl0IHdlcmUsIHRoZW5cbiAgICAgICBbdF0gd291bGQgYmUgZW1wdHkuICBJZiB0aGUgd3JpdGUgZW5kIGlzIGNsb3NlZCBidXQgbm90IHRoZSByZWFkIGVuZCwgdGhlbiB3ZSB3YW50XG4gICAgICAgdG8gZW5xdWV1ZSBhIGJsb2NrZWQgZmx1c2ggYmVjYXVzZSB0aGUgZW5xdWV1ZWQgdmFsdWVzIG1heSBnZXQgcmVhZC4gKilcbiAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZWFkeSAtPlxuICAgICAgUXVldWUuZW5xdWV1ZVxuICAgICAgICB0LmJsb2NrZWRfZmx1c2hlc1xuICAgICAgICB7IGZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgPSB0Lm51bV92YWx1ZXNfcmVhZCArIGxlbmd0aCB0OyByZWFkeSB9KVxuOztcblxuKCogSW4gcHJhY3RpY2UsIGFsb25nIHdpdGggW0xpbmsuY3JlYXRlXSBhbmQgW2FkZF91cHN0cmVhbV9mbHVzaGVkXSwgW3Vwc3RyZWFtX2ZsdXNoZWRdXG4gICB0cmF2ZXJzZXMgdGhlIGdyYXBoIG9mIGxpbmtlZCBwaXBlcyB1cCB0byB0aGUgaGVhZHMgYW5kIHRoZW4gY2FsbHMgW2Rvd25zdHJlYW1fZmx1c2hlZF1cbiAgIG9uIHRoZW0uICopXG5sZXQgdXBzdHJlYW1fZmx1c2hlZCB0ID1cbiAgaWYgQmFnLmlzX2VtcHR5IHQudXBzdHJlYW1fZmx1c2hlZHNcbiAgdGhlbiBkb3duc3RyZWFtX2ZsdXNoZWQgdFxuICBlbHNlXG4gICAgQmFnLnRvX2xpc3QgdC51cHN0cmVhbV9mbHVzaGVkc1xuICAgIHw+IExpc3QubWFwIH5mOihmdW4gZiAtPiBmICgpKVxuICAgIHw+IEZsdXNoZWRfcmVzdWx0LmNvbWJpbmVcbjs7XG5cbmxldCBhZGRfdXBzdHJlYW1fZmx1c2hlZCB0IHVwc3RyZWFtX2ZsdXNoZWQgPSBCYWcuYWRkIHQudXBzdHJlYW1fZmx1c2hlZHMgdXBzdHJlYW1fZmx1c2hlZFxuXG5sZXQgYWRkX2NvbnN1bWVyIHQgfmRvd25zdHJlYW1fZmx1c2hlZCA9XG4gIGxldCBjb25zdW1lciA9IENvbnN1bWVyLmNyZWF0ZSB+cGlwZV9pZDp0LmlkIH5kb3duc3RyZWFtX2ZsdXNoZWQgaW5cbiAgdC5jb25zdW1lcnMgPC0gY29uc3VtZXIgOjogdC5jb25zdW1lcnM7XG4gIGNvbnN1bWVyXG47O1xuXG4oKiBBIFtMaW5rLnRdIGxpbmtzIGZsdXNoaW5nIG9mIHR3byBwaXBlcyB0b2dldGhlci4gKilcbm1vZHVsZSBMaW5rIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1cHN0cmVhbTooXywgXykgcGlwZSAtPiBkb3duc3RyZWFtOihfLCBfKSBwaXBlIC0+IHRcbiAgdmFsIGNvbnN1bWVyIDogdCAtPiBDb25zdW1lci50XG5cbiAgKCogW3VubGlua191cHN0cmVhbV0gcmVtb3ZlcyBkb3duc3RyZWFtJ3MgcmVmZXJlbmNlIHRvIHVwc3RyZWFtLiAqKVxuXG4gIHZhbCB1bmxpbmtfdXBzdHJlYW0gOiB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHVucGFja2VkID1cbiAgICB7IGRvd25zdHJlYW0gOiAoJ2EsICdiKSB0XG4gICAgOyBjb25zdW1lciA6IENvbnN1bWVyLnRcbiAgICA7IHVwc3RyZWFtX2ZsdXNoZWRzX2JhZ19lbHQgOiAodW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnQpIEJhZy5FbHQudFxuICAgIH1cblxuICB0eXBlIHQgPSBUIDogKF8sIF8pIHVucGFja2VkIC0+IHRcblxuICBsZXQgY29uc3VtZXIgKFQgdCkgPSB0LmNvbnN1bWVyXG5cbiAgbGV0IGNyZWF0ZSB+dXBzdHJlYW0gfmRvd25zdHJlYW0gPVxuICAgIFRcbiAgICAgIHsgZG93bnN0cmVhbVxuICAgICAgOyBjb25zdW1lciA9XG4gICAgICAgICAgYWRkX2NvbnN1bWVyIHVwc3RyZWFtIH5kb3duc3RyZWFtX2ZsdXNoZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgICAgZG93bnN0cmVhbV9mbHVzaGVkIGRvd25zdHJlYW0pXG4gICAgICA7IHVwc3RyZWFtX2ZsdXNoZWRzX2JhZ19lbHQgPVxuICAgICAgICAgIGFkZF91cHN0cmVhbV9mbHVzaGVkIGRvd25zdHJlYW0gKGZ1biAoKSAtPiB1cHN0cmVhbV9mbHVzaGVkIHVwc3RyZWFtKVxuICAgICAgfVxuICA7O1xuXG4gIGxldCB1bmxpbmtfdXBzdHJlYW0gKFQgdCkgPVxuICAgIEJhZy5yZW1vdmUgdC5kb3duc3RyZWFtLnVwc3RyZWFtX2ZsdXNoZWRzIHQudXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbHVzaGVkID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDb25zdW1lciBvZiBDb25zdW1lci50XG4gICAgfCBXaGVuX3ZhbHVlX3Byb2Nlc3NlZFxuICAgIHwgV2hlbl92YWx1ZV9yZWFkXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IGZvbGRfZ2VuXG4gICAgICAocmVhZF9ub3cgOiA/Y29uc3VtZXI6Q29uc3VtZXIudCAtPiBfIFJlYWRlci50IC0+IF8pXG4gICAgICA/KGZsdXNoZWQgPSBGbHVzaGVkLldoZW5fdmFsdWVfcmVhZClcbiAgICAgIHRcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICA9XG4gIGxldCBjb25zdW1lciA9XG4gICAgbWF0Y2ggZmx1c2hlZCB3aXRoXG4gICAgfCBXaGVuX3ZhbHVlX3JlYWQgLT4gTm9uZVxuICAgIHwgQ29uc3VtZXIgY29uc3VtZXIgLT4gU29tZSBjb25zdW1lclxuICAgIHwgV2hlbl92YWx1ZV9wcm9jZXNzZWQgLT5cbiAgICAgICgqIFRoZSBmYWN0IHRoYXQgXCJubyBjb25zdW1lclwiIGJlaGF2ZXMgZGlmZmVyZW50IGZyb20gXCJ0cml2aWFsIGNvbnN1bWVyXCIgaXMgd2VpcmQsXG4gICAgICAgICBidXQgdGhhdCdzIGhvdyB0aGUgY29uc3VtZXIgbWFjaGluZXJ5IHdvcmtzLiAqKVxuICAgICAgU29tZSAoYWRkX2NvbnN1bWVyIHQgfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+IHJldHVybiBgT2spKVxuICBpblxuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIHQgP2NvbnN1bWVyO1xuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBmaW5pc2hlZCAtPlxuICAgICgqIFdlIGRvIFt2YWx1ZXNfYXZhaWxhYmxlIHQgPj4+XSB0byBlbnN1cmUgdGhhdCBbZl0gaXMgb25seSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuXG4gICAgICAgU2VlIFsxXSBmb3IgbW9yZSBkZXRhaWxzLiAqKVxuICAgICgqIFsxXSBGb3IgbmV3IGVtcHR5IHBpcGVzIGNyZWF0ZWQgYXQgdG9wLWxldmVsIHdlIHdhbnQgdG8gYXZvaWQgaW1tZWRpYXRlbHlcbiAgICAgICBzY2hlZHVsaW5nIGEgam9iIG9uIHRoZSBzY2hlZHVsZXIgKHNlZSBbU2NoZWR1bGVyLnJhaXNlX2lmX2FueV9qb2JzX3dlcmVfc2NoZWR1bGVkXSkuXG4gICAgICAgSnVzdCBbcmV0dXJuICgpID4+Pl0gZG9lc24ndCB3b3JrOiBbcmV0dXJuICgpXSBjcmVhdGVzIGEgZnVsbCBpdmFyIHRoYXQgY2F1c2VzXG4gICAgICAgWz4+Pl0gdG8gc2NoZWR1bGUgYSBqb2IuICopXG4gICAgdmFsdWVzX2F2YWlsYWJsZSB0XG4gICAgPj4+IGZ1biAoXyA6IFsgYE9rIHwgYEVvZiBdKSAtPlxuICAgIGxldCByZWMgbG9vcCBiID1cbiAgICAgIG1hdGNoIHJlYWRfbm93IHQgP2NvbnN1bWVyIHdpdGhcbiAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgZmluaXNoZWQgYlxuICAgICAgfCBgT2sgdiAtPiBmIGIgdiBjb250aW51ZVxuICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gdmFsdWVzX2F2YWlsYWJsZSB0ID4+PiBmdW4gXyAtPiBsb29wIGJcbiAgICBhbmQgY29udGludWUgYiA9XG4gICAgICBPcHRpb24uaXRlciBjb25zdW1lciB+ZjpDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtO1xuICAgICAgbG9vcCBiXG4gICAgaW5cbiAgICBsb29wIGluaXQpXG47O1xuXG5sZXQgZm9sZCcgP2ZsdXNoZWQgP21heF9xdWV1ZV9sZW5ndGggdCB+aW5pdCB+ZiA9XG4gIGZvbGRfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpID9mbHVzaGVkIHQgfmluaXQgfmY6KGZ1biBiIHEgbG9vcCAtPlxuICAgIGYgYiBxID4+PiBsb29wKVxuOztcblxubGV0IGZvbGQgP2ZsdXNoZWQgdCB+aW5pdCB+ZiA9XG4gIGZvbGRfZ2VuIHJlYWRfbm93ID9mbHVzaGVkIHQgfmluaXQgfmY6KGZ1biBiIGEgbG9vcCAtPiBmIGIgYSA+Pj4gbG9vcClcbjs7XG5cbmxldCBmb2xkX3dpdGhvdXRfcHVzaGJhY2sgP2NvbnN1bWVyIHQgfmluaXQgfmYgPVxuICBmb2xkX2dlblxuICAgIHJlYWRfbm93XG4gICAgdFxuICAgIH5pbml0XG4gICAgfmY6KGZ1biBiIGEgbG9vcCAtPiBsb29wIChmIGIgYSkpXG4gICAgP2ZsdXNoZWQ6XG4gICAgICAobWF0Y2ggY29uc3VtZXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgfCBTb21lIGMgLT4gU29tZSAoQ29uc3VtZXIgYykpXG47O1xuXG5sZXQgd2l0aF9lcnJvcl90b19jdXJyZW50X21vbml0b3IgPyhjb250aW51ZV9vbl9lcnJvciA9IGZhbHNlKSBmIGEgPVxuICBpZiBub3QgY29udGludWVfb25fZXJyb3JcbiAgdGhlbiBmIGFcbiAgZWxzZSAoXG4gICAgbWF0Y2glbWFwXG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5ydW46YFNjaGVkdWxlXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgKGZ1biAoKSAtPiBmIGEpXG4gICAgd2l0aFxuICAgIHwgT2sgKCkgLT4gKClcbiAgICB8IEVycm9yIGV4biAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIChNb25pdG9yLmV4dHJhY3RfZXhuIGV4bikpXG47O1xuXG5sZXQgaXRlcicgP2NvbnRpbnVlX29uX2Vycm9yID9mbHVzaGVkID9tYXhfcXVldWVfbGVuZ3RoIHQgfmYgPVxuICBmb2xkJyA/bWF4X3F1ZXVlX2xlbmd0aCA/Zmx1c2hlZCB0IH5pbml0OigpIH5mOihmdW4gKCkgcSAtPlxuICAgIHdpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yID9jb250aW51ZV9vbl9lcnJvciBmIHEpXG47O1xuXG5sZXQgaXRlciA/Y29udGludWVfb25fZXJyb3IgP2ZsdXNoZWQgdCB+ZiA9XG4gIGZvbGRfZ2VuIHJlYWRfbm93ID9mbHVzaGVkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBhIGxvb3AgLT5cbiAgICB3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciA/Y29udGludWVfb25fZXJyb3IgZiBhID4+PiBmdW4gKCkgLT4gbG9vcCAoKSlcbjs7XG5cbigqIFtpdGVyX3dpdGhvdXRfcHVzaGJhY2tdIGlzIGEgY29tbW9uIGNhc2UsIHNvIHdlIGltcGxlbWVudCBpdCBpbiBhbiBvcHRpbWl6ZWQgbWFubmVyLFxuICAgcmF0aGVyIHRoYW4gdmlhIFtpdGVyXS4gIFRoZSBpbXBsZW1lbnRhdGlvbiByZWFkcyBvbmx5IG9uZSBlbGVtZW50IGF0IGEgdGltZSwgc28gdGhhdFxuICAgaWYgW2ZdIGNsb3NlcyBbdF0gb3IgcmFpc2VzLCBubyBtb3JlIGVsZW1lbnRzIHdpbGwgYmUgcmVhZC4gKilcbmxldCBpdGVyX3dpdGhvdXRfcHVzaGJhY2tcbiAgICAgID9jb25zdW1lclxuICAgICAgPyhjb250aW51ZV9vbl9lcnJvciA9IGZhbHNlKVxuICAgICAgP21heF9pdGVyYXRpb25zX3Blcl9qb2JcbiAgICAgIHRcbiAgICAgIH5mXG4gID1cbiAgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgdCA/Y29uc3VtZXI7XG4gIGxldCBtYXhfaXRlcmF0aW9uc19wZXJfam9iID1cbiAgICBtYXRjaCBtYXhfaXRlcmF0aW9uc19wZXJfam9iIHdpdGhcbiAgICB8IE5vbmUgLT4gSW50Lm1heF92YWx1ZVxuICAgIHwgU29tZSBtYXhfaXRlcmF0aW9uc19wZXJfam9iIC0+XG4gICAgICBpZiBtYXhfaXRlcmF0aW9uc19wZXJfam9iIDw9IDBcbiAgICAgIHRoZW5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJpdGVyX3dpdGhvdXRfcHVzaGJhY2sgZ290IG5vbi1wb3NpdGl2ZSBtYXhfaXRlcmF0aW9uc19wZXJfam9iXCJcbiAgICAgICAgICAgICAgKG1heF9pdGVyYXRpb25zX3Blcl9qb2IgOiBpbnQpXTtcbiAgICAgIG1heF9pdGVyYXRpb25zX3Blcl9qb2JcbiAgaW5cbiAgbGV0IGYgPVxuICAgIGlmIG5vdCBjb250aW51ZV9vbl9lcnJvclxuICAgIHRoZW4gZlxuICAgIGVsc2VcbiAgICAgIGZ1biBhIC0+XG4gICAgICAgIHRyeSBmIGEgd2l0aFxuICAgICAgICB8IGV4biAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4blxuICBpblxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBmaW5pc2hlZCAtPlxuICAgICgqIFdlIGRvIFt2YWx1ZXNfYXZhaWxhYmxlIHQgPj4+XSB0byBlbnN1cmUgdGhhdCBbZl0gaXMgb25seSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuXG4gICAgICAgU2VlIFsxXSBmb3IgbW9yZSBkZXRhaWxzLiAqKVxuICAgIHZhbHVlc19hdmFpbGFibGUgdFxuICAgID4+PiBmdW4gKF8gOiBbIGBPayB8IGBFb2YgXSkgLT5cbiAgICBsZXQgcmVjIHN0YXJ0ICgpID0gbG9vcCB+cmVtYWluaW5nOm1heF9pdGVyYXRpb25zX3Blcl9qb2JcbiAgICBhbmQgbG9vcCB+cmVtYWluaW5nID1cbiAgICAgIGlmIHJlbWFpbmluZyA9IDBcbiAgICAgIHRoZW4gcmV0dXJuICgpID4+PiBmdW4gKCkgLT4gc3RhcnQgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCByZWFkX25vdyB0ID9jb25zdW1lciB3aXRoXG4gICAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgZmluaXNoZWQgKClcbiAgICAgICAgfCBgT2sgYSAtPlxuICAgICAgICAgIGYgYTtcbiAgICAgICAgICBsb29wIH5yZW1haW5pbmc6KHJlbWFpbmluZyAtIDEpXG4gICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+IHZhbHVlc19hdmFpbGFibGUgdCA+Pj4gZnVuIF8gLT4gc3RhcnQgKCkpXG4gICAgaW5cbiAgICBzdGFydCAoKSlcbjs7XG5cbmxldCBkcmFpbiB0ID0gaXRlcicgdCB+ZjooZnVuIF8gLT4gcmV0dXJuICgpKVxubGV0IGRyYWluX2FuZF9jb3VudCB0ID0gZm9sZCcgdCB+aW5pdDowIH5mOihmdW4gc3VtIHEgLT4gcmV0dXJuIChzdW0gKyBRdWV1ZS5sZW5ndGggcSkpXG5cbmxldCByZWFkX2FsbCBpbnB1dCA9XG4gIGxldCByZXN1bHQgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0JW1hcCAoKSA9XG4gICAgaXRlcicgaW5wdXQgfmY6KGZ1biBxIC0+XG4gICAgICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6cSB+ZHN0OnJlc3VsdCAoKTtcbiAgICAgIHJldHVybiAoKSlcbiAgaW5cbiAgcmVzdWx0XG47O1xuXG5sZXQgdG9fbGlzdCByID0gcmVhZF9hbGwgciA+PnwgUXVldWUudG9fbGlzdFxuXG5sZXQgdG9fc3RyZWFtX2RlcHJlY2F0ZWQgdCA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgaXRlcl93aXRob3V0X3B1c2hiYWNrIHQgfmY6KGZ1biB4IC0+IFRhaWwuZXh0ZW5kIHRhaWwgeClcbiAgICA+Pj4gZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpXG47O1xuXG4oKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgW29mX3N0cmVhbV9kZXByZWNhdGVkXSBkb2VzIGFzIG11Y2ggYmF0Y2hpbmcgYXMgcG9zc2libGUuICBJdFxuICAgZ3JhYnMgYXMgbWFueSBpdGVtcyBhcyBhcmUgYXZhaWxhYmxlIGludG8gYW4gaW50ZXJuYWwgcXVldWUuICBPbmNlIGl0IGhhcyBncmFiYmVkXG4gICBldmVyeXRoaW5nLCBpdCB3cml0ZXMgaXQgdG8gdGhlIHBpcGUgYW5kIHRoZW4gYmxvY2tzIHdhaXRpbmcgZm9yIHRoZSBuZXh0IGVsZW1lbnQgZnJvbVxuICAgdGhlIHN0cmVhbS5cblxuICAgVGhlcmUncyBubyBwb3NzaWJpbGl0eSB0aGF0IHdlJ2xsIHN0YXJ2ZSB0aGUgcGlwZSByZWFkaW5nIGFuIGVuZGxlc3Mgc3RyZWFtLCBqdXN0XG4gICBhY2N1bXVsYXRpbmcgdGhlIGVsZW1lbnRzIGludG8gb3VyIHByaXZhdGUgcXVldWUgZm9yZXZlciB3aXRob3V0IGV2ZXIgd3JpdGluZyB0aGVtXG4gICBkb3duc3RyZWFtIHRvIHRoZSBwaXBlLiAgV2h5PyBiZWNhdXNlIHdoaWxlIHdlJ3JlIHJ1bm5pbmcsIHRoZSBzdHJlYW0tcHJvZHVjZXIgKmlzbid0KlxuICAgcnVubmluZyAtLSB0aGVyZSBhcmUgbm8gQXN5bmMgYmxvY2sgcG9pbnRzIGluIHRoZSBxdWV1ZS1hY2N1bXVsYXRvciBsb29wLiAgU28gdGhlXG4gICBxdWV1ZS1hY2N1bXVsYXRvciBsb29wIHdpbGwgZXZlbnR1YWxseSBjYXRjaCB1cCB0byB0aGUgY3VycmVudCBzdHJlYW0gdGFpbCwgYXQgd2hpY2hcbiAgIHBvaW50IHdlJ2xsIGRvIHRoZSBwaXBlLXdyaXRlIGFuZCB0aGVuIGJsb2NrIG9uIHRoZSBzdHJlYW0uLi4gdGh1cyBnaXZpbmcgdGhlXG4gICBzdHJlYW0tcHJvZHVjZXIgYSBjaGFuY2UgdG8gbWFrZSBtb3JlIGVsZW1lbnRzLlxuXG4gICBPbmUgY2FuJ3QgaW1wbGVtZW50IFtvZl9zdHJlYW1dIHVzaW5nIFtTdHJlYW0uaXRlcl0gb3IgW1N0cmVhbS5pdGVyJ10gYmVjYXVzZSB5b3VcbiAgIG5lZWQgdG8gYmUgYWJsZSB0byBzdG9wIGVhcmx5IHdoZW4gdGhlIGNvbnN1bWVyIGNsb3NlcyB0aGUgcGlwZS4gIEFsc28sIHVzaW5nIGVpdGhlclxuICAgb2YgdGhvc2Ugd291bGQgZW50YWlsIHNpZ25pZmljYW50bHkgbW9yZSBkZWZlcnJlZCBvdmVyaGVhZCwgd2hlcmVhcyB0aGUgYmVsb3dcbiAgIGltcGxlbWVudGF0aW9uIHVzZXMgYSBkZWZlcnJlZCBvbmx5IHdoZW4gaXQgbmVlZHMgdG8gd2FpdCBmb3IgZGF0YSBmcm9tIHRoZSBzdHJlYW0uICopXG5sZXQgb2Zfc3RyZWFtX2RlcHJlY2F0ZWQgcyA9XG4gIGxldCByLCB3ID0gY3JlYXRlICgpIGluXG4gIGxldCBxID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCB0cmFuc2ZlciAoKSA9XG4gICAgaWYgbm90IChRdWV1ZS5pc19lbXB0eSBxKVxuICAgIHRoZW5cbiAgICAgICgqIENhbiBub3QgcHVzaGJhY2sgb24gdGhlIHN0cmVhbSwgc28gaWdub3JlIHRoZSBwdXNoYmFjayBvbiB0aGUgcGlwZS4gKilcbiAgICAgIGRvbid0X3dhaXRfZm9yICh3cml0ZScgdyBxKVxuICBpblxuICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgYXNzZXJ0IChub3QgKGlzX2Nsb3NlZCB3KSk7XG4gICAgbGV0IG5leHRfZGVmZXJyZWQgPSBTdHJlYW0ubmV4dCBzIGluXG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayBuZXh0X2RlZmVycmVkIHdpdGhcbiAgICB8IFNvbWUgbmV4dCAtPiBsb29wX25leHQgbmV4dFxuICAgIHwgTm9uZSAtPlxuICAgICAgdHJhbnNmZXIgKCk7XG4gICAgICB1cG9uIG5leHRfZGVmZXJyZWQgY2hlY2tfY2xvc2VkX2xvb3BfbmV4dFxuICBhbmQgY2hlY2tfY2xvc2VkX2xvb3BfbmV4dCBuZXh0ID0gaWYgbm90IChpc19jbG9zZWQgdykgdGhlbiBsb29wX25leHQgbmV4dFxuICBhbmQgbG9vcF9uZXh0ID0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPlxuICAgICAgdHJhbnNmZXIgKCk7XG4gICAgICBjbG9zZSB3XG4gICAgfCBDb25zICh4LCBzKSAtPlxuICAgICAgUXVldWUuZW5xdWV1ZSBxIHg7XG4gICAgICBsb29wIHNcbiAgaW5cbiAgbG9vcCBzO1xuICByXG47O1xuXG5sZXQgdHJhbnNmZXJfZ2VuXG4gICAgICAocmVhZF9ub3cgOiA/Y29uc3VtZXI6Q29uc3VtZXIudCAtPiBfIFJlYWRlci50IC0+IF8pXG4gICAgICB3cml0ZVxuICAgICAgaW5wdXRcbiAgICAgIG91dHB1dFxuICAgICAgfmZcbiAgPVxuICBpZiAhY2hlY2tfaW52YXJpYW50XG4gIHRoZW4gKFxuICAgIGludmFyaWFudCBpbnB1dDtcbiAgICBpbnZhcmlhbnQgb3V0cHV0KTtcbiAgbGV0IGxpbmsgPSBMaW5rLmNyZWF0ZSB+dXBzdHJlYW06aW5wdXQgfmRvd25zdHJlYW06b3V0cHV0IGluXG4gIGxldCBjb25zdW1lciA9IExpbmsuY29uc3VtZXIgbGluayBpblxuICAoKiBXaGVuIHdlJ3JlIGRvbmUgd2l0aCBbaW5wdXRdLCB3ZSB1bmxpbmsgdG8gcmVtb3ZlIHBvaW50ZXJzIGZyb21cbiAgICAgW291dHB1dF0gdG8gW2lucHV0XSwgd2hpY2ggd291bGQgY2F1c2UgYSBzcGFjZSBsZWFrIGlmIHdlIGhhZCBzaW5nbGUgbG9uZy1saXZlZFxuICAgICBvdXRwdXQgaW50byB3aGljaCB3ZSB0cmFuc2ZlciBsb3RzIG9mIHNob3J0LWxpdmVkIGlucHV0cy4gKilcbiAgbGV0IHVubGluayAoKSA9IExpbmsudW5saW5rX3Vwc3RyZWFtIGxpbmsgaW5cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IGlucHV0X2F2YWlsYWJsZV9vcl9vdXRwdXRfY2xvc2VkICgpID1cbiAgICAgIGNob29zZSBbIGNob2ljZSAodmFsdWVzX2F2YWlsYWJsZSBpbnB1dCkgaWdub3JlOyBjaG9pY2UgKGNsb3NlZCBvdXRwdXQpIGlnbm9yZSBdXG4gICAgaW5cbiAgICAoKiBXZSBkbyBbaW5wdXRfYXZhaWxhYmxlX29yX291dHB1dF9jbG9zZWQgKCkgPj4+XSB0byBlbnN1cmUgdGhhdCBbZl0gaXMgb25seSBjYWxsZWRcbiAgICAgICBhc3luY2hyb25vdXNseS4gU2VlIFsxXSBmb3IgbW9yZSBkZXRhaWxzLiAqKVxuICAgIGlucHV0X2F2YWlsYWJsZV9vcl9vdXRwdXRfY2xvc2VkICgpXG4gICAgPj4+IGZ1biAoKSAtPlxuICAgIGxldCBvdXRwdXRfY2xvc2VkICgpID1cbiAgICAgIGNsb3NlX3JlYWQgaW5wdXQ7XG4gICAgICB1bmxpbmsgKCk7XG4gICAgICBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgaWYgaXNfY2xvc2VkIG91dHB1dFxuICAgICAgdGhlbiBvdXRwdXRfY2xvc2VkICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcmVhZF9ub3cgaW5wdXQgfmNvbnN1bWVyIHdpdGhcbiAgICAgICAgfCBgRW9mIC0+XG4gICAgICAgICAgdW5saW5rICgpO1xuICAgICAgICAgIEl2YXIuZmlsbCByZXN1bHQgKClcbiAgICAgICAgfCBgT2sgeCAtPiBmIHggY29udGludWVcbiAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gaW5wdXRfYXZhaWxhYmxlX29yX291dHB1dF9jbG9zZWQgKCkgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuICAgIGFuZCBjb250aW51ZSB5ID1cbiAgICAgIGlmIGlzX2Nsb3NlZCBvdXRwdXRcbiAgICAgIHRoZW4gb3V0cHV0X2Nsb3NlZCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBwdXNoYmFjayA9IHdyaXRlIG91dHB1dCB5IGluXG4gICAgICAgIENvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW0gY29uc3VtZXI7XG4gICAgICAgIHB1c2hiYWNrID4+PiBmdW4gKCkgLT4gbG9vcCAoKSlcbiAgICBpblxuICAgIGxvb3AgKCkpXG47O1xuXG5sZXQgdHJhbnNmZXInID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IG91dHB1dCB+ZiA9XG4gIHRyYW5zZmVyX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgb3V0cHV0IH5mOihmdW4gcSBrIC0+IGYgcSA+Pj4gaylcbjs7XG5cbmxldCB0cmFuc2ZlciBpbnB1dCBvdXRwdXQgfmYgPVxuICB0cmFuc2Zlcl9nZW4gcmVhZF9ub3cgd3JpdGUgaW5wdXQgb3V0cHV0IH5mOihmdW4gYSBrIC0+IGsgKGYgYSkpXG47O1xuXG5sZXQgdHJhbnNmZXJfaWQgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgb3V0cHV0ID1cbiAgdHJhbnNmZXJfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCBvdXRwdXQgfmY6KGZ1biBxIGsgLT4gayBxKVxuOztcblxubGV0IG1hcF9nZW4gcmVhZCB3cml0ZSBpbnB1dCB+ZiA9XG4gIGxldCBpbmZvID0gT3B0aW9uLm1hcCBpbnB1dC5pbmZvIH5mOihmdW4gaW5mbyAtPiBbJXNleHAgTWFwcGVkIChpbmZvIDogU2V4cC50KV0pIGluXG4gIGxldCByZXN1bHQsIG91dHB1dCA9IGNyZWF0ZSA/aW5mbyAoKSBpblxuICB1cG9uICh0cmFuc2Zlcl9nZW4gcmVhZCB3cml0ZSBpbnB1dCBvdXRwdXQgfmYpIChmdW4gKCkgLT4gY2xvc2Ugb3V0cHV0KTtcbiAgcmVzdWx0XG47O1xuXG5sZXQgbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+IGYgcSA+Pj4gaylcbjs7XG5cbmxldCBtYXAgaW5wdXQgfmYgPSBtYXBfZ2VuIHJlYWRfbm93IHdyaXRlIGlucHV0IH5mOihmdW4gYSBrIC0+IGsgKGYgYSkpXG5cbmxldCBjb25jYXRfbWFwX2xpc3QgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmYgPVxuICBtYXBfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCB+ZjooZnVuIHEgayAtPlxuICAgIGsgKFF1ZXVlLmNvbmNhdF9tYXAgcSB+ZikpXG47O1xuXG5sZXQgZmlsdGVyX21hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmYgPVxuICBtYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mOihmdW4gcSAtPlxuICAgIERlZmVycmVkLlF1ZXVlLmZpbHRlcl9tYXAgfmhvdzpgU2VxdWVudGlhbCBxIH5mKVxuOztcblxubGV0IGZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmYgPVxuICBtYXBfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCB+ZjooZnVuIHEgayAtPlxuICAgIGsgKFF1ZXVlLmZpbHRlcl9tYXAgcSB+ZjooZnVuIHggLT4gaWYgaXNfcmVhZF9jbG9zZWQgaW5wdXQgdGhlbiBOb25lIGVsc2UgZiB4KSkpXG47O1xuXG5sZXQgZm9sZGluZ19maWx0ZXJfbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZiA9XG4gIGxldCBhY2N1bSA9IHJlZiBpbml0IGluXG4gIGZpbHRlcl9tYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mOihmdW4geCAtPlxuICAgIGxldCVtYXAgYSwgeCA9IGYgIWFjY3VtIHggaW5cbiAgICBhY2N1bSA6PSBhO1xuICAgIHgpXG47O1xuXG5sZXQgZm9sZGluZ19maWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mID1cbiAgbGV0IGFjY3VtID0gcmVmIGluaXQgaW5cbiAgZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZjooZnVuIHggLT5cbiAgICBsZXQgYSwgeCA9IGYgIWFjY3VtIHggaW5cbiAgICBhY2N1bSA6PSBhO1xuICAgIHgpXG47O1xuXG5sZXQgZm9sZGluZ19tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmYgPVxuICBmb2xkaW5nX2ZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmY6KGZ1biBhY2N1bSBhIC0+XG4gICAgbGV0IGFjY3VtLCBiID0gZiBhY2N1bSBhIGluXG4gICAgYWNjdW0sIFNvbWUgYilcbjs7XG5cbmxldCBmaWx0ZXIgaW5wdXQgfmYgPSBmaWx0ZXJfbWFwIGlucHV0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKVxuXG5sZXQgb2ZfcXVldWVfaW50ZXJuYWwgcXVldWUgPVxuICBsZXQgdCA9IGNyZWF0ZV9pbnRlcm5hbCB+c2l6ZV9idWRnZXQ6MCB+aW5mbzpOb25lIH5pbml0aWFsX2J1ZmZlcjpxdWV1ZSBpblxuICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gIHVwZGF0ZV9wdXNoYmFjayB0O1xuICB0XG47O1xuXG5sZXQgb2ZfcXVldWUgcXVldWUgPSBvZl9xdWV1ZV9pbnRlcm5hbCAoUXVldWUuY29weSBxdWV1ZSlcbmxldCBvZl9saXN0IGwgPSBvZl9xdWV1ZV9pbnRlcm5hbCAoUXVldWUub2ZfbGlzdCBsKVxubGV0IGVtcHR5ICgpID0gb2ZfbGlzdCBbXVxuXG5sZXQgc2luZ2xldG9uIHggPVxuICBsZXQgcmVhZGVyLCB3cml0ZXIgPSBjcmVhdGUgKCkgaW5cbiAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgeDtcbiAgY2xvc2Ugd3JpdGVyO1xuICByZWFkZXJcbjs7XG5cbmxldCB1bmZvbGQgfmluaXQ6cyB+ZiA9XG4gICgqIFRvIGdldCBzb21lIGJhdGNoaW5nLCB3ZSBydW4gdGhlIGNvbnRpbnVhdGlvbiBpbW1lZGlhdGVseSBpZiB0aGUgZGVmZXJyZWQgaXNcbiAgICAgZGV0ZXJtaW5lZC4gIEhvd2V2ZXIsIHdlIGFsd2F5cyBjaGVjayBmb3IgcHVzaGJhY2suICBCZWNhdXNlIHNpemUgYnVkZ2V0IGNhbid0IGJlXG4gICAgIGluZmluaXRlLCB0aGUgYmVsb3cgbG9vcCBpcyBndWFyYW50ZWVkIHRvIGV2ZW50dWFsbHkgeWllbGQgdG8gdGhlIHNjaGVkdWxlci4gKilcbiAgbGV0ICggPj49fiApIGQgZiA9XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICB8IE5vbmUgLT4gZCA+Pj0gZlxuICAgIHwgU29tZSB4IC0+IGYgeFxuICBpblxuICBjcmVhdGVfcmVhZGVyIH5jbG9zZV9vbl9leGNlcHRpb246ZmFsc2UgKGZ1biB3cml0ZXIgLT5cbiAgICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgICBmIHNcbiAgICAgID4+PX4gZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiByZXR1cm4gKClcbiAgICAgIHwgU29tZSAoYSwgcykgLT5cbiAgICAgICAgaWYgaXNfY2xvc2VkIHdyaXRlciB0aGVuIHJldHVybiAoKSBlbHNlIHdyaXRlIHdyaXRlciBhID4+PX4gZnVuICgpIC0+IGxvb3Agc1xuICAgIGluXG4gICAgbG9vcCBzKVxuOztcblxubGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgY3JlYXRlX3JlYWRlciB+Y2xvc2Vfb25fZXhjZXB0aW9uOmZhbHNlIChmdW4gd3JpdGVyIC0+XG4gICAgbGV0IHJlYyBlbnF1ZXVlX24gc2VxdWVuY2UgaSA9XG4gICAgICBpZiBpIDw9IDBcbiAgICAgIHRoZW4gc2VxdWVuY2VcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHNlcXVlbmNlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNlcXVlbmNlXG4gICAgICAgIHwgU29tZSAoYSwgc2VxdWVuY2UpIC0+XG4gICAgICAgICAgZGVjcmVhc2VfcmVzZXJ2ZWRfc3BhY2Ugd3JpdGVyIDE7XG4gICAgICAgICAgUXVldWUuZW5xdWV1ZSB3cml0ZXIuYnVmZmVyIGE7XG4gICAgICAgICAgZW5xdWV1ZV9uIHNlcXVlbmNlIChpIC0gMSkpXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3Agc2VxdWVuY2UgPVxuICAgICAgaWYgaXNfY2xvc2VkIHdyaXRlciB8fCBTZXF1ZW5jZS5pc19lbXB0eSBzZXF1ZW5jZVxuICAgICAgdGhlbiByZXR1cm4gKClcbiAgICAgIGVsc2UgKFxuICAgICAgICAoKiBbc2l6ZTowXSBoZXJlIGFzIHdlIGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlIHNlcXVlbmNlIHN0YXRpY2FsbHkuIFdlJ2xsXG4gICAgICAgICAgIGNhbGwgW2RlY3JlYXNlX3Jlc2VydmVkX3NwYWNlXSBhcyB3ZSBnby5cbiAgICAgICAgICAgKGFsdGhvdWdoIHJlYWxpc3RpY2FsbHksIGl0J3MgaW1wb3NzaWJsZSBmb3IgdGhlIHVzZXIgdG8gcmVzZXJ2ZSBzcGFjZSBpblxuICAgICAgICAgICB0aGlzIHBpcGUgYmVjYXVzZSB5b3UgbmVlZCBhIHBpcGUgd3JpdGVyIGZvciB0aGF0LCBidXQgW29mX3NlcXVlbmNlXSByZXR1cm5zXG4gICAgICAgICAgIGEgcmVhZGVyKSAqKVxuICAgICAgICBzdGFydF93cml0ZSB3cml0ZXIgfnNpemU6MDtcbiAgICAgICAgbGV0IHNlcXVlbmNlID0gZW5xdWV1ZV9uIHNlcXVlbmNlICgxICsgd3JpdGVyLnNpemVfYnVkZ2V0IC0gbGVuZ3RoIHdyaXRlcikgaW5cbiAgICAgICAgZmluaXNoX3dyaXRlIHdyaXRlcjtcbiAgICAgICAgbGV0JWJpbmQgKCkgPSBwdXNoYmFjayB3cml0ZXIgaW5cbiAgICAgICAgbG9vcCBzZXF1ZW5jZSlcbiAgICBpblxuICAgIGxvb3Agc2VxdWVuY2UpXG47O1xuXG50eXBlICdhIHRvX3NlcXVlbmNlX2VsdCA9XG4gIHwgVmFsdWUgb2YgJ2FcbiAgfCBXYWl0X2ZvciA6IF8gRGVmZXJyZWQudCAtPiBfIHRvX3NlcXVlbmNlX2VsdFxuXG5sZXQgdG9fc2VxdWVuY2UgdCA9XG4gIFNlcXVlbmNlLnVuZm9sZCB+aW5pdDooKSB+ZjooZnVuICgpIC0+XG4gICAgbWF0Y2ggcmVhZF9ub3cgdCB3aXRoXG4gICAgfCBgRW9mIC0+IE5vbmVcbiAgICB8IGBPayBhIC0+IFNvbWUgKFZhbHVlIGEsICgpKVxuICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+IFNvbWUgKFdhaXRfZm9yICh2YWx1ZXNfYXZhaWxhYmxlIHQpLCAoKSkpXG47O1xuXG5sZXQgaW50ZXJsZWF2ZV9waXBlIGlucHV0cyA9XG4gIGxldCBvdXRwdXQsIG91dHB1dF93cml0ZXIgPSBjcmVhdGUgfmluZm86WyVzZXhwIFwiUGlwZS5pbnRlcmxlYXZlXCJdICgpIGluXG4gICgqIFdlIGtlZXAgYSByZWZlcmVuY2UgY291bnQgb2YgYWxsIHRoZSBwaXBlcyB0aGF0IFtpbnRlcmxlYXZlX3BpcGVdIGlzIG1hbmFnaW5nO1xuICAgICBbaW5wdXRzXSBjb3VudHMgYXMgb25lLiAgV2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IGRyb3BzIHRvIHplcm8sIHdlIGtub3cgdGhhdCBhbGxcbiAgICAgcGlwZXMgYXJlIGNsb3NlZCBhbmQgd2UgY2FuIGNsb3NlIFtvdXRwdXRfd3JpdGVyXS4gKilcbiAgbGV0IG51bV9waXBlc19yZW1haW5pbmcgPSByZWYgMSBpblxuICBsZXQgZGVjcl9udW1fcGlwZXNfcmVtYWluaW5nICgpID1cbiAgICBkZWNyIG51bV9waXBlc19yZW1haW5pbmc7XG4gICAgaWYgIW51bV9waXBlc19yZW1haW5pbmcgPSAwIHRoZW4gY2xvc2Ugb3V0cHV0X3dyaXRlclxuICBpblxuICBkb24ndF93YWl0X2ZvclxuICAgIChsZXQlbWFwICgpID1cbiAgICAgICBpdGVyX3dpdGhvdXRfcHVzaGJhY2sgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT5cbiAgICAgICAgIGluY3IgbnVtX3BpcGVzX3JlbWFpbmluZztcbiAgICAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgICAgIChsZXQlbWFwICgpID0gdHJhbnNmZXJfaWQgaW5wdXQgb3V0cHV0X3dyaXRlciBpblxuICAgICAgICAgICAgZGVjcl9udW1fcGlwZXNfcmVtYWluaW5nICgpKSlcbiAgICAgaW5cbiAgICAgZGVjcl9udW1fcGlwZXNfcmVtYWluaW5nICgpKTtcbiAgKCogZm9yIFtpbnB1dHNdICopXG4gIG91dHB1dFxuOztcblxubGV0IGludGVybGVhdmUgaW5wdXRzID1cbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIExpc3QuaXRlciBpbnB1dHMgfmY6aW52YXJpYW50O1xuICBpbnRlcmxlYXZlX3BpcGUgKG9mX2xpc3QgaW5wdXRzKVxuOztcblxubGV0IG1lcmdlIGlucHV0cyB+Y29tcGFyZSA9XG4gIG1hdGNoIGlucHV0cyB3aXRoXG4gIHwgW10gLT4gZW1wdHkgKClcbiAgfCBbIGlucHV0IF0gLT4gaW5wdXRcbiAgfCBpbnB1dHMgLT5cbiAgICBsZXQgbW9kdWxlIEhlYXAgPSBQYWlyaW5nX2hlYXAgaW5cbiAgICBsZXQgciwgdyA9IGNyZWF0ZSAoKSBpblxuICAgIHVwb24gKGNsb3NlZCB3KSAoZnVuICgpIC0+IExpc3QuaXRlciBpbnB1dHMgfmY6Y2xvc2VfcmVhZCk7XG4gICAgbGV0IGhlYXAgPSBIZWFwLmNyZWF0ZSB+Y21wOihmdW4gKGExLCBfKSAoYTIsIF8pIC0+IGNvbXBhcmUgYTEgYTIpICgpIGluXG4gICAgbGV0IGhhbmRsZV9yZWFkIGlucHV0IGVvZl9vcl9vayA9XG4gICAgICBtYXRjaCBlb2Zfb3Jfb2sgd2l0aFxuICAgICAgfCBgRW9mIC0+ICgpXG4gICAgICB8IGBPayB2IC0+IEhlYXAuYWRkIGhlYXAgKHYsIGlucHV0KVxuICAgIGluXG4gICAgbGV0IHJlYyBwb3BfaGVhcF9hbmRfbG9vcCAoKSA9XG4gICAgICAoKiBBdCB0aGlzIHBvaW50LCBhbGwgaW5wdXRzIG5vdCBhdCBFb2Ygb2NjdXIgaW4gW2hlYXBdIGV4YWN0bHkgb25jZSwgc28gd2Uga25vd1xuICAgICAgICAgd2hhdCB0aGUgbmV4dCBvdXRwdXQgZWxlbWVudCBpcy4gIFtwb3BfaGVhcF9hbmRfbG9vcF0gcmVwZWF0ZWRseSB0YWtlcyBlbGVtZW50c1xuICAgICAgICAgZnJvbSB0aGUgaW5wdXRzIGFzIGxvbmcgYXMgaXQgaGFzIG9uZSBmcm9tIGVhY2ggaW5wdXQuICBUaGlzIGlzIGRvbmVcbiAgICAgICAgIHN5bmNocm9ub3VzbHkgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgYSBkZWZlcnJlZCBmb3IgZWFjaCBlbGVtZW50IG9mIHRoZSBvdXRwdXQgLS1cbiAgICAgICAgIHRoZXJlJ3Mgbm8gbmVlZCB0byBwdXNoYmFjayBzaW5jZSB0aGF0IGlzIG9ubHkgbW92aW5nIGVsZW1lbnRzIGZyb20gb25lIHBpcGUgdG9cbiAgICAgICAgIGFub3RoZXIuICBBcyBzb29uIGFzIFtwb3BfaGVhcF9hbmRfbG9vcF0gY2FuJ3QgZ2V0IGFuIGVsZW1lbnQgZnJvbSBzb21lIGlucHV0LCBpdFxuICAgICAgICAgd2FpdHMgb24gcHVzaGJhY2sgZnJvbSB0aGUgb3V0cHV0LCBzaW5jZSBpdCBoYXMgdG8gd2FpdCBvbiB0aGUgaW5wdXQgYW55d2F5LlxuICAgICAgICAgVGhpcyBhbHNvIHByZXZlbnRzIFttZXJnZV0gZnJvbSBjb25zdW1pbmcgaW5wdXRzIGF0IGEgcmF0ZSBmYXN0ZXIgdGhhbiBpdHMgb3V0cHV0XG4gICAgICAgICBpcyBjb25zdW1lZC4gKilcbiAgICAgIG1hdGNoIEhlYXAucG9wIGhlYXAgd2l0aFxuICAgICAgfCBOb25lIC0+IGNsb3NlIHdcbiAgICAgIHwgU29tZSAodiwgaW5wdXQpIC0+XG4gICAgICAgIGlmIG5vdCAoaXNfY2xvc2VkIHcpXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdyB2O1xuICAgICAgICAgIGlmIEhlYXAubGVuZ3RoIGhlYXAgPSAwXG4gICAgICAgICAgdGhlbiB1cG9uICh0cmFuc2Zlcl9pZCBpbnB1dCB3KSAoZnVuICgpIC0+IGNsb3NlIHcpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCByZWFkX25vdyBpbnB1dCB3aXRoXG4gICAgICAgICAgICB8IChgRW9mIHwgYE9rIF8pIGFzIHggLT5cbiAgICAgICAgICAgICAgaGFuZGxlX3JlYWQgaW5wdXQgeDtcbiAgICAgICAgICAgICAgcG9wX2hlYXBfYW5kX2xvb3AgKClcbiAgICAgICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgICAgIHB1c2hiYWNrIHdcbiAgICAgICAgICAgICAgPj4+IGZ1biAoKSAtPlxuICAgICAgICAgICAgICByZWFkIGlucHV0XG4gICAgICAgICAgICAgID4+PiBmdW4geCAtPlxuICAgICAgICAgICAgICBoYW5kbGVfcmVhZCBpbnB1dCB4O1xuICAgICAgICAgICAgICBwb3BfaGVhcF9hbmRfbG9vcCAoKSkpXG4gICAgaW5cbiAgICBsZXQgaW5pdGlhbF9wdXNoID1cbiAgICAgIERlZmVycmVkLkxpc3QuaXRlciB+aG93OmBTZXF1ZW50aWFsIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+XG4gICAgICAgIGxldCVtYXAgeCA9IHJlYWQgaW5wdXQgaW5cbiAgICAgICAgaGFuZGxlX3JlYWQgaW5wdXQgeClcbiAgICBpblxuICAgIHVwb24gaW5pdGlhbF9wdXNoIHBvcF9oZWFwX2FuZF9sb29wO1xuICAgIHJcbjs7XG5cbmxldCBjb25jYXRfcGlwZSBpbnB1dHMgPVxuICBsZXQgciA9XG4gICAgY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uIChmdW4gdyAtPlxuICAgICAgbGV0IGxpbmsgPSBMaW5rLmNyZWF0ZSB+dXBzdHJlYW06aW5wdXRzIH5kb3duc3RyZWFtOncgaW5cbiAgICAgIGxldCBjb25zdW1lciA9IExpbmsuY29uc3VtZXIgbGluayBpblxuICAgICAgaXRlciB+Zmx1c2hlZDooQ29uc3VtZXIgY29uc3VtZXIpIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+IHRyYW5zZmVyX2lkIGlucHV0IHcpKVxuICBpblxuICB1cG9uIChjbG9zZWQgcikgKGZ1biAoKSAtPiBjbG9zZSBpbnB1dHMpO1xuICByXG47O1xuXG5sZXQgY29uY2F0IGlucHV0cyA9XG4gIGNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4Y2VwdGlvbiAoZnVuIHcgLT5cbiAgICBEZWZlcnJlZC5MaXN0Lml0ZXIgfmhvdzpgU2VxdWVudGlhbCBpbnB1dHMgfmY6KGZ1biBpbnB1dCAtPiB0cmFuc2Zlcl9pZCBpbnB1dCB3KSlcbjs7XG5cbmxldCBmb3JrIHQgfnB1c2hiYWNrX3VzZXMgPVxuICBsZXQgcmVhZGVyMCwgd3JpdGVyMCA9IGNyZWF0ZSAoKSBpblxuICBsZXQgcmVhZGVyMSwgd3JpdGVyMSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgY29uc3VtZXIgPVxuICAgIGFkZF9jb25zdW1lciB0IH5kb3duc3RyZWFtX2ZsdXNoZWQ6KGZ1biAoKSAtPlxuICAgICAgbGV0IHNvbWVfcmVhZGVyX3dhc19jbG9zZWQgPSAhc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCBpblxuICAgICAgbWF0Y2glbWFwXG4gICAgICAgIEZsdXNoZWRfcmVzdWx0LmNvbWJpbmUgWyBkb3duc3RyZWFtX2ZsdXNoZWQgd3JpdGVyMDsgZG93bnN0cmVhbV9mbHVzaGVkIHdyaXRlcjEgXVxuICAgICAgd2l0aFxuICAgICAgfCBgUmVhZGVyX2Nsb3NlZCAtPiBgUmVhZGVyX2Nsb3NlZFxuICAgICAgfCBgT2sgLT5cbiAgICAgICAgKCogSW4gdGhpcyBjYXNlLCB0aGVyZSBjb3VsZCBoYXZlIGJlZW4gbm8gcGVuZGluZyBpdGVtcyBpbiBbd3JpdGVyMF0gbm9yIGluXG4gICAgICAgICAgIFt3cml0ZXIxXSwgaW4gd2hpY2ggY2FzZSB3ZSBjb3VsZCBoYXZlIGhhZCBhIGNsb3NlZCBwaXBlIHRoYXQgbWlzc2VkIHNvbWVcbiAgICAgICAgICAgd3JpdGVzLCBidXQgW0ZsdXNoZWRfcmVzdWx0LmNvbWJpbmVdIHdvdWxkIHN0aWxsIGhhdmUgcmV0dXJuZWQgW2BPa10gKilcbiAgICAgICAgaWYgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCB0aGVuIGBSZWFkZXJfY2xvc2VkIGVsc2UgYE9rKVxuICBpblxuICBkb24ndF93YWl0X2ZvclxuICAgIChsZXQgc3RpbGxfb3BlbiA9IFsgd3JpdGVyMDsgd3JpdGVyMSBdIGluXG4gICAgIGxldCBmaWx0ZXJfb3BlbiBzdGlsbF9vcGVuID1cbiAgICAgICAoKiBPbmx5IGNhbGwgW2ZpbHRlcl0gYW5kIHJlYWxsb2NhdGUgbGlzdCBpZiBzb21ldGhpbmcgd2lsbCBnZXQgZmlsdGVyZWQgKilcbiAgICAgICBpZiBub3QgKExpc3QuZXhpc3RzIHN0aWxsX29wZW4gfmY6aXNfY2xvc2VkKVxuICAgICAgIHRoZW4gc3RpbGxfb3BlblxuICAgICAgIGVsc2UgKFxuICAgICAgICAgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCA6PSB0cnVlO1xuICAgICAgICAgbGV0IHN0aWxsX29wZW4gPSBMaXN0LmZpbHRlciBzdGlsbF9vcGVuIH5mOihmdW4gdyAtPiBub3QgKGlzX2Nsb3NlZCB3KSkgaW5cbiAgICAgICAgIGlmIExpc3QuaXNfZW1wdHkgc3RpbGxfb3BlbiB0aGVuIGNsb3NlIHQ7XG4gICAgICAgICBzdGlsbF9vcGVuKVxuICAgICBpblxuICAgICBsZXQlYmluZCBzdGlsbF9vcGVuID1cbiAgICAgICBmb2xkJyB0IH5mbHVzaGVkOihDb25zdW1lciBjb25zdW1lcikgfmluaXQ6c3RpbGxfb3BlbiB+ZjooZnVuIHN0aWxsX29wZW4gcXVldWUgLT5cbiAgICAgICAgIGxldCBzdGlsbF9vcGVuID0gZmlsdGVyX29wZW4gc3RpbGxfb3BlbiBpblxuICAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBzdGlsbF9vcGVuXG4gICAgICAgICB0aGVuIHJldHVybiBbXVxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICAgIG1hdGNoIHB1c2hiYWNrX3VzZXMgd2l0aFxuICAgICAgICAgICAgIHwgYEZhc3RfY29uc3VtZXJfb25seSAtPiBEZWZlcnJlZC5hbnkgKExpc3QubWFwIHN0aWxsX29wZW4gfmY6cHVzaGJhY2spXG4gICAgICAgICAgICAgfCBgQm90aF9jb25zdW1lcnMgLT4gRGVmZXJyZWQuYWxsX3VuaXQgKExpc3QubWFwIHN0aWxsX29wZW4gfmY6cHVzaGJhY2spXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBzdGlsbF9vcGVuID0gZmlsdGVyX29wZW4gc3RpbGxfb3BlbiBpblxuICAgICAgICAgICBMaXN0Lml0ZXIgc3RpbGxfb3BlbiB+ZjooZnVuIHcgLT4gY29weV9pbl93aXRob3V0X3B1c2hiYWNrIHcgfmZyb206cXVldWUpO1xuICAgICAgICAgICBzdGlsbF9vcGVuKSlcbiAgICAgaW5cbiAgICAgTGlzdC5pdGVyIHN0aWxsX29wZW4gfmY6Y2xvc2U7XG4gICAgIHJldHVybiAoKSk7XG4gIHJlYWRlcjAsIHJlYWRlcjFcbjs7XG5cbmxldCBzZXRfaW5mbyB0IGluZm8gPSBzZXRfaW5mbyB0IChTb21lIGluZm8pXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxuXG50eXBlICgnYSwgJ3BoYW50b20pIHQgPVxuICB7IGN1cnJlbnRfdmFsdWUgOiAnYSBNb3B0aW9uLnRcbiAgOyB0YWtlbiA6ICh1bml0LCByZWFkX3dyaXRlKSBCdmFyLnRcbiAgOyBtdXRhYmxlIHZhbHVlX2F2YWlsYWJsZSA6IHVuaXQgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHZhbHVlX2F2YWlsYWJsZSB0ID0gSXZhci5yZWFkIHQudmFsdWVfYXZhaWxhYmxlXG5sZXQgaXNfZW1wdHkgdCA9IE1vcHRpb24uaXNfbm9uZSB0LmN1cnJlbnRfdmFsdWVcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfICh0IDogXyB0KSA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmN1cnJlbnRfdmFsdWU6KGNoZWNrIChNb3B0aW9uLmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+dGFrZW46KGNoZWNrIChCdmFyLmludmFyaWFudCBVbml0LmludmFyaWFudCBpZ25vcmUpKVxuICAgICAgfnZhbHVlX2F2YWlsYWJsZTpcbiAgICAgICAgKGNoZWNrIChmdW4gdmFsdWVfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAgICAgICAgKEl2YXIuaXNfZnVsbCB2YWx1ZV9hdmFpbGFibGUpXG4gICAgICAgICAgICAgfmV4cGVjdDooTW9wdGlvbi5pc19zb21lIHQuY3VycmVudF92YWx1ZSkpKSlcbjs7XG5cbmxldCBwZWVrIHQgPSBNb3B0aW9uLmdldCB0LmN1cnJlbnRfdmFsdWVcblxubGV0IHBlZWtfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNdmFyLnBlZWtfZXhuIGNhbGxlZCBvbiBlbXB0eSBtdmFyXCJdO1xuICBNb3B0aW9uLmdldF9zb21lX2V4biB0LmN1cnJlbnRfdmFsdWVcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IFslc2V4cCAocGVlayB0IDogYSBvcHRpb24pXVxuXG5tb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCByZWFkX3dyaXRlKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaW52YXJpYW50IGludmFyaWFudF9hIGlnbm9yZSB0XG5lbmRcblxubW9kdWxlIFJlYWRfb25seSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCByZWFkKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaW52YXJpYW50IGludmFyaWFudF9hIGlnbm9yZSB0XG5lbmRcblxubGV0IHJlYWRfb25seSAodCA6ICgnYSwgWz4gcmVhZCBdKSB0KSA9ICh0IDo+ICgnYSwgcmVhZCkgdClcbmxldCB3cml0ZV9vbmx5ICh0IDogKCdhLCBbPiB3cml0ZSBdKSB0KSA9ICh0IDo+ICgnYSwgd3JpdGUpIHQpXG5cbmxldCBjcmVhdGUgKCkgPVxuICB7IGN1cnJlbnRfdmFsdWUgPSBNb3B0aW9uLmNyZWF0ZSAoKVxuICA7IHRha2VuID0gQnZhci5jcmVhdGUgKClcbiAgOyB2YWx1ZV9hdmFpbGFibGUgPSBJdmFyLmNyZWF0ZSAoKVxuICB9XG47O1xuXG5sZXQgdGFrZV9ub25lbXB0eSB0ID1cbiAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IHIgPSBNb3B0aW9uLmdldF9zb21lX2V4biB0LmN1cnJlbnRfdmFsdWUgaW5cbiAgTW9wdGlvbi5zZXRfbm9uZSB0LmN1cnJlbnRfdmFsdWU7XG4gIEJ2YXIuYnJvYWRjYXN0IHQudGFrZW4gKCk7XG4gIHQudmFsdWVfYXZhaWxhYmxlIDwtIEl2YXIuY3JlYXRlICgpO1xuICByXG47O1xuXG5sZXQgdGFrZV9ub3dfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNdmFyLnRha2VfZXhuIGNhbGxlZCBvbiBlbXB0eSBtdmFyXCJdO1xuICB0YWtlX25vbmVtcHR5IHRcbjs7XG5cbmxldCB0YWtlX25vdyB0ID0gaWYgbm90IChpc19lbXB0eSB0KSB0aGVuIFNvbWUgKHRha2Vfbm9uZW1wdHkgdCkgZWxzZSBOb25lXG5cbmxldCByZWMgdGFrZSB0ID1cbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIHJldHVybiAodGFrZV9ub25lbXB0eSB0KVxuICBlbHNlIChcbiAgICBsZXQlYmluZCAoKSA9IHZhbHVlX2F2YWlsYWJsZSB0IGluXG4gICAgdGFrZSB0KVxuOztcblxubGV0IHNldCB0IHYgPVxuICBNb3B0aW9uLnNldF9zb21lIHQuY3VycmVudF92YWx1ZSB2O1xuICBJdmFyLmZpbGxfaWZfZW1wdHkgdC52YWx1ZV9hdmFpbGFibGUgKClcbjs7XG5cbmxldCB1cGRhdGUgdCB+ZiA9IHNldCB0IChmIChwZWVrIHQpKVxubGV0IHVwZGF0ZV9leG4gdCB+ZiA9IHNldCB0IChmIChwZWVrX2V4biB0KSlcbmxldCB0YWtlbiB0ID0gQnZhci53YWl0IHQudGFrZW5cblxubGV0IHJlYyBwdXQgdCB2ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIChcbiAgICBzZXQgdCB2O1xuICAgIHJldHVybiAoKSlcbiAgZWxzZSAoXG4gICAgbGV0JWJpbmQgKCkgPSB0YWtlbiB0IGluXG4gICAgcHV0IHQgdilcbjs7XG5cbmxldCBwaXBlX3doZW5fcmVhZHkgdCA9XG4gIGxldCByLCB3ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBsZXQlYmluZCAoKSA9IHZhbHVlX2F2YWlsYWJsZSB0IGluXG4gICAgaWYgbm90IChQaXBlLmlzX2Nsb3NlZCB3KVxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggdGFrZV9ub3cgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoKVxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgbGV0JWJpbmQgKCkgPSBQaXBlLndyaXRlIHcgeCBpblxuICAgICAgICBsb29wICgpKVxuICAgIGVsc2UgcmV0dXJuICgpXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yIChsb29wICgpKTtcbiAgclxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHN0YXJ0IDogdW5pdCBJdmFyLnRcbiAgICA7IHJlc3VsdCA6ICdhIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgIH1cblxuICBsZXQgY3JlYXRlID8ocmVzdF9leG4gPSBgTG9nKSBmID1cbiAgICBsZXQgc3RhcnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIHsgc3RhcnRcbiAgICA7IHJlc3VsdCA9XG4gICAgICAgIChsZXQlYmluZCAoKSA9IEl2YXIucmVhZCBzdGFydCBpblxuICAgICAgICAgTW9uaXRvci50cnlfd2l0aF9vcl9lcnJvclxuICAgICAgICAgICB+cmVzdDpyZXN0X2V4blxuICAgICAgICAgICBmKVxuICAgIH1cbiAgOztcblxuICBsZXQgY3JlYXRlX29yX2Vycm9yID8ocmVzdF9leG4gPSBgTG9nKSBmID1cbiAgICBsZXQgc3RhcnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIHsgc3RhcnRcbiAgICA7IHJlc3VsdCA9XG4gICAgICAgIChsZXQlYmluZCAoKSA9IEl2YXIucmVhZCBzdGFydCBpblxuICAgICAgICAgTW9uaXRvci50cnlfd2l0aF9qb2luX29yX2Vycm9yXG4gICAgICAgICAgIH5yZXN0OnJlc3RfZXhuXG4gICAgICAgICAgIGYpXG4gICAgfVxuICA7O1xuXG4gIGxldCB3YWl0IHQgPSB0LnJlc3VsdFxuICBsZXQgd2FpdF9leG4gdCA9IHdhaXQgdCA+Pnwgb2tfZXhuXG4gIGxldCBzdGFydCB0ID0gSXZhci5maWxsX2lmX2VtcHR5IHQuc3RhcnQgKClcblxuICBsZXQgZm9yY2UgdCA9XG4gICAgc3RhcnQgdDtcbiAgICB3YWl0IHRcbiAgOztcblxuICBsZXQgZm9yY2VfZXhuIHQgPSBmb3JjZSB0ID4+fCBva19leG5cbiAgbGV0IHJldHVybiBhID0gY3JlYXRlIChmdW4gKCkgLT4gcmV0dXJuIGEpXG5cbiAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgY3JlYXRlIChmdW4gKCkgLT5cbiAgICAgIGxldCViaW5kIGEgPSBmb3JjZV9leG4gdCBpblxuICAgICAgZm9yY2VfZXhuIChmIGEpKVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IGNyZWF0ZSAoZnVuICgpIC0+IGZvcmNlX2V4biB0ID4+fCBmKVxuICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgTW9uYWQuTWFrZSAoVClcblxubGV0IGJpbmQnIHQgZiA9IGJpbmQgdCB+ZjooZnVuIGEgLT4gY3JlYXRlIChmdW4gKCkgLT4gZiBhKSlcbmxldCBpc19mb3JjZWQgdCA9IEl2YXIuaXNfZnVsbCB0LnN0YXJ0XG5sZXQgaXNfZGV0ZXJtaW5lZCB0ID0gRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCB0LnJlc3VsdFxubGV0IHBlZWsgdCA9IERlZmVycmVkLnBlZWsgdC5yZXN1bHRcbmxldCBwZWVrX2V4biB0ID0gT3B0aW9uLm1hcCAocGVlayB0KSB+Zjpva19leG5cbiIsIm9wZW4gQ29yZVxuXG50eXBlICdhIHQgPSB7IHdhaXRzIDogJ2EgSXZhci50IFF1ZXVlLnQgfSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY3JlYXRlICgpID0geyB3YWl0cyA9IFF1ZXVlLmNyZWF0ZSAoKSB9XG5sZXQgd2FpdCB0ID0gRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPiBRdWV1ZS5lbnF1ZXVlIHQud2FpdHMgaXZhcilcbmxldCBzaWduYWwgdCBhID0gT3B0aW9uLml0ZXIgKFF1ZXVlLmRlcXVldWUgdC53YWl0cykgfmY6KGZ1biBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGEpXG5cbmxldCBicm9hZGNhc3QgdCBhID1cbiAgUXVldWUuaXRlciB0LndhaXRzIH5mOihmdW4gaXZhciAtPiBJdmFyLmZpbGwgaXZhciBhKTtcbiAgUXVldWUuY2xlYXIgdC53YWl0c1xuOztcbiIsIm9wZW4gQ29yZVxuaW5jbHVkZSBHY1xuXG4oKiogW2FkZF9maW5hbGl6ZXIgZiB4XSBpcyBsaWtlIFtHYy5maW5hbGlzZSBmIHhdLCBleGNlcHQgdGhhdCB0aGUgZmluYWxpemVyIGlzIGd1YXJhbnRlZWRcbiAgICB0byBydW4gYXMgYW4gQXN5bmMgam9iIChpLmUuIHdpdGhvdXQgaW50ZXJydXB0aW5nIG90aGVyIEFzeW5jIGpvYnMpLiAgVW5wcm90ZWN0ZWQgdXNlXG4gICAgb2YgW0NhbWwuR2MuZmluYWxpc2VdIG9yIFtDb3JlLkdjLmFkZF9maW5hbGl6ZXJdIGluIEFzeW5jIHByb2dyYW1zIGlzIHdyb25nLCBiZWNhdXNlXG4gICAgdGhlIGZpbmFsaXplcnMgd29uJ3QgaG9sZCB0aGUgYXN5bmMgbG9jaywgYW5kIHRodXMgY291bGQgaW50ZXJsZWF2ZSBhcmJpdHJhcmlseSB3aXRoXG4gICAgYXN5bmMgam9icy4gKilcbmxldCBhZGRfZmluYWxpemVyIGhlYXBfYmxvY2sgZiA9IFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplciAodCAoKSkpIGhlYXBfYmxvY2sgZlxuXG5sZXQgYWRkX2ZpbmFsaXplcl9leG4gaGVhcF9ibG9jayBmID0gU2NoZWR1bGVyLihhZGRfZmluYWxpemVyX2V4biAodCAoKSkpIGhlYXBfYmxvY2sgZlxubGV0IGFkZF9maW5hbGl6ZXJfbGFzdCBoZWFwX2Jsb2NrIGYgPSBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXJfbGFzdCAodCAoKSkpIGhlYXBfYmxvY2sgZlxuXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0X2V4biBoZWFwX2Jsb2NrIGYgPVxuICBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXJfbGFzdF9leG4gKHQgKCkpKSBoZWFwX2Jsb2NrIGZcbjs7XG5cbm1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICBtb2R1bGUgQWxhcm0gPSBHYy5FeHBlcnQuQWxhcm1cblxuICB0eXBlIHQgPSBBbGFybS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBmID0gU2NoZWR1bGVyLihjcmVhdGVfYWxhcm0gKHQgKCkpKSBmXG4gIGxldCBkZWxldGUgPSBBbGFybS5kZWxldGVcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgc2lnbmF0dXJlcyB0aGF0IGV4dGVuZCBbQ29yZS5JbnZhcmlhbnRdIHdpdGggYW4gW0FzeW5jXVxuICAgIHN1Ym1vZHVsZSBmb3IgaW52YXJpYW50cyB0aGF0IHVzZSBhc3luYyBjb21wdXRhdGlvbiBhbmQgcmV0dXJuIFt1bml0IERlZmVycmVkLnRdLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFzeW5jID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIC0+IHVuaXQgRGVmZXJyZWQudFxuICB0eXBlICdhIGludiA9ICdhIHRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgaW52YXJpYW50IDogdCBpbnZcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBpbnYgLT4gJ2EgdCBpbnZcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBpbnYgLT4gJ2IgaW52IC0+ICgnYSwgJ2IpIHQgaW52XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYiBpbnYgLT4gJ2MgaW52IC0+ICgnYSwgJ2IsICdjKSB0IGludlxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBc3luY19pbnZhcmlhbnQgPSBzaWdcbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBDb3JlLkludmFyaWFudFxuXG4gIG1vZHVsZSBBc3luYyA6IHNpZ1xuICAgIG9wZW4gQXN5bmNcblxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSBBc3luYy50XG5cbiAgICBtb2R1bGUgdHlwZSBTID0gU1xuICAgIG1vZHVsZSB0eXBlIFMxID0gUzFcbiAgICBtb2R1bGUgdHlwZSBTMiA9IFMyXG4gICAgbW9kdWxlIHR5cGUgUzMgPSBTM1xuXG4gICAgdmFsIGludmFyaWFudFxuICAgICAgOiAgU291cmNlX2NvZGVfcG9zaXRpb24udFxuICAgICAgLT4gJ2FcbiAgICAgIC0+ICgnYSAtPiBTZXhwLnQpXG4gICAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgICAtPiB1bml0IERlZmVycmVkLnRcblxuICAgICgqKiBbY2hlY2tfZmllbGRdIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHJlY29yZCBmaWVsZHMgd2hlbiB1c2luZyBbW0BAZGVyaXZpbmcgZmllbGRzXV0uXG4gICAgICAgIElkaW9tYXRpYyB1c2FnZSBsb29rcyBsaWtlOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgdHlwZSB0ID0geyBmb28gOiBGb28udCA7IGJhciA6IEJhci50IH1cbiAgICAgICAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICAgICAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgICAgICAgSW52YXJpYW50LkFzeW5jLmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIGxldCBjaGVjayBpbnYgPSBJbnZhcmlhbnQuQXN5bmMuY2hlY2tfZmllbGQgdCBpbnYgaW5cbiAgICAgICAgICAgICAgRmllbGRzLmZvbGQgfmluaXQ6KHJldHVybiAoKSlcbiAgICAgICAgICAgICAgICB+Zm9vOiAoY2hlY2sgRm9vLmludmFyaWFudClcbiAgICAgICAgICAgICAgICB+YmFyOiAoY2hlY2sgQmFyLmludmFyaWFudCkgXX1cblxuICAgICAgICBXaGVuIHNvbWUgZmllbGRzIGhhdmUgc3luY2hyb25vdXMgaW52YXJpYW50cywgb3IgZG8gbm90IG5lZWQgdG8gYmUgY2hlY2tlZCwgaXRcbiAgICAgICAgbWF5IGJlIHVzZWZ1bCB0byBkZWZpbmUgYSBzZWNvbmQgd3JhcHBlciBhcm91bmQgW2NoZWNrX2ZpZWxkXTpcblxuICAgICAgICB7W1xuICAgICAgICAgIHR5cGUgdCA9IHsgZm9vIDogRm9vLnQgOyBiYXIgOiBCYXIudCA7IHF1dXggOiBRdXV4LnQgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgICBJbnZhcmlhbnQuQXN5bmMuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgbGV0IGNoZWNrJyBpbnYgPSBJbnZhcmlhbnQuQXN5bmMuY2hlY2tfZmllbGQgdCBpbnYgaW5cbiAgICAgICAgICAgICAgbGV0IGNoZWNrIGludiA9IGNoZWNrJyAoZnVuIHggLT4gaW52IHg7IHJldHVybiAoKSkgaW5cbiAgICAgICAgICAgICAgRmllbGRzLmZvbGQgfmluaXQ6KHJldHVybiAoKSlcbiAgICAgICAgICAgICAgICB+Zm9vOiAgKGNoZWNrJyBGb28uaW52YXJpYW50KVxuICAgICAgICAgICAgICAgIH5iYXI6ICAoY2hlY2sgIEJhci5pbnZhcmlhbnQpXG4gICAgICAgICAgICAgICAgfnF1dXg6IChjaGVjayAgaWdub3JlKSBdfSAqKVxuICAgIHZhbCBjaGVja19maWVsZCA6ICdhIC0+ICdiIHQgLT4gdW5pdCBEZWZlcnJlZC50IC0+ICgnYSwgJ2IpIEZpZWxkLnQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBEZWZlcnJlZC5MZXRfc3ludGF4XG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29yZS5JbnZhcmlhbnRcblxubW9kdWxlIEFzeW5jID0gc3RydWN0XG4gIGluY2x1ZGUgQXN5bmNfaW52YXJpYW50X2ludGYuQXN5bmNcblxuICBsZXQgaW52YXJpYW50IGhlcmUgdCBzZXhwX29mX3QgZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5ydW46YFNjaGVkdWxlXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgZlxuICAgICAgICB+ZXh0cmFjdF9leG46dHJ1ZVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciBleG4gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJpbnZhcmlhbnQgZmFpbGVkXCIgfl86KGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KSAoZXhuIDogZXhuKSB+XzoodCA6IHQpXVxuICA7O1xuXG4gIGxldCBjaGVja19maWVsZCB0IGYgd2FpdF9mb3JfcHJldmlvdXMgZmllbGQgPVxuICAgIGxldCViaW5kICgpID0gd2FpdF9mb3JfcHJldmlvdXMgaW5cbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICB+ZXh0cmFjdF9leG46dHJ1ZVxuICAgICAgICAoZnVuICgpIC0+IGYgKEZpZWxkLmdldCBmaWVsZCB0KSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcInByb2JsZW0gd2l0aCBmaWVsZFwiIH5maWVsZDooRmllbGQubmFtZSBmaWVsZCA6IHN0cmluZykgKGV4biA6IGV4bildXG4gIDs7XG5lbmRcbiIsIigqKiBDb250YWlucyBBc3luYydzIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzLCBsaWtlIHt7IUFzeW5jX2tlcm5lbC5EZWZlcnJlZH1bRGVmZXJyZWRdfSxcbiAgICB7eyFBc3luY19rZXJuZWwuSXZhcn1bSXZhcl19LCBhbmQge3shQXN5bmNfa2VybmVsLkNsb2NrX2ludGYuQ2xvY2t9W0Nsb2NrXX0uXG5cbiAgICBbQXN5bmNfa2VybmVsXSBpcyBkZXNpZ25lZCB0byBkZXBlbmQgb25seSBvbiB7eyFDb3JlfVtDb3JlXX0gYW5kIHNvIGlzIG1vcmVcbiAgICBwbGF0Zm9ybS1pbmRlcGVuZGVudC4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQXN5bmNfa2VybmVsX2NvbmZpZyA9IEFzeW5jX2tlcm5lbF9jb25maWdcbm1vZHVsZSBBc3luY19rZXJuZWxfcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZSA9IFJlcXVpcmVfZXhwbGljaXRfdGltZV9zb3VyY2Vcbm1vZHVsZSBBc3luY19rZXJuZWxfc2NoZWR1bGVyID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlclxubW9kdWxlIEJ2YXIgPSBCdmFyXG5tb2R1bGUgQ2xvY2tfbnMgPSBDbG9ja19uc1xubW9kdWxlIENvbmRpdGlvbiA9IEFzeW5jX2NvbmRpdGlvblxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWRcbm1vZHVsZSBFeGVjdXRpb25fY29udGV4dCA9IEV4ZWN1dGlvbl9jb250ZXh0XG5tb2R1bGUgR2MgPSBBc3luY19nY1xubW9kdWxlIEludmFyaWFudCA9IEFzeW5jX2ludmFyaWFudFxubW9kdWxlIEl2YXIgPSBJdmFyXG5tb2R1bGUgTGF6eV9kZWZlcnJlZCA9IExhenlfZGVmZXJyZWRcbm1vZHVsZSBNb25hZF9zZXF1ZW5jZSA9IE1vbmFkX3NlcXVlbmNlXG5tb2R1bGUgTW9uaXRvciA9IE1vbml0b3Jcbm1vZHVsZSBNdmFyID0gTXZhclxubW9kdWxlIFBpcGUgPSBQaXBlXG5tb2R1bGUgUHJpb3JpdHkgPSBQcmlvcml0eVxubW9kdWxlIFNlcXVlbmNlciA9IFRocm90dGxlLlNlcXVlbmNlclxubW9kdWxlIFN0cmVhbSA9IEFzeW5jX3N0cmVhbVxubW9kdWxlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Vcbm1vZHVsZSBUYWlsID0gVGFpbFxubW9kdWxlIFRocm90dGxlID0gVGhyb3R0bGVcbm1vZHVsZSBUaHJvdHRsZWQgPSBUaHJvdHRsZWRcbm1vZHVsZSBUaW1lX3NvdXJjZSA9IFRpbWVfc291cmNlXG5cblxuKCoqIHsyIFRvcGxldmVsIGZ1bmN0aW9ucyB9XG5cbiAgICBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBicm9hZGx5IHVzZWZ1bCB3aGVuIHdyaXRpbmcgQXN5bmMgcHJvZ3JhbXMsIGFuZCBzbyBhcmUgbWFkZVxuICAgIGF2YWlsYWJsZSBhdCB0aGUgdG9wbGV2ZWwuICopXG5cblxubGV0IGFmdGVyID0gQ2xvY2tfbnMuYWZ0ZXJcbmxldCBhdCA9IENsb2NrX25zLmF0XG5sZXQgY2F0Y2ggPSBNb25pdG9yLmNhdGNoXG5sZXQgY2hvaWNlID0gRGVmZXJyZWQuY2hvaWNlXG5sZXQgY2hvb3NlID0gRGVmZXJyZWQuY2hvb3NlXG5sZXQgZG9uJ3Rfd2FpdF9mb3IgPSBEZWZlcnJlZC5kb24ndF93YWl0X2ZvclxubGV0IGV2ZXJ5ID0gQ2xvY2tfbnMuZXZlcnlcbmxldCBuZXZlciA9IERlZmVycmVkLm5ldmVyXG5sZXQgc2NoZWR1bGUgPSBTY2hlZHVsZXIuc2NoZWR1bGVcbmxldCBzY2hlZHVsZScgPSBTY2hlZHVsZXIuc2NoZWR1bGUnXG5sZXQgdHJ5X3dpdGggPSBNb25pdG9yLnRyeV93aXRoXG5sZXQgdXBvbiA9IERlZmVycmVkLnVwb25cbmxldCB3aXRoX3RpbWVvdXQgPSBDbG9ja19ucy53aXRoX3RpbWVvdXRcbmxldCB3aXRoaW4gPSBTY2hlZHVsZXIud2l0aGluXG5sZXQgd2l0aGluJyA9IFNjaGVkdWxlci53aXRoaW4nXG5cbigqKiB7MiBJbmZpeCBvcGVyYXRvcnMgYW5kIFtMZXRfc3ludGF4XSBzdXBwb3J0fSAqKVxuXG5pbmNsdWRlIChEZWZlcnJlZCA6IE1vbmFkLkluZml4IHdpdGggdHlwZSAnYSB0IDo9ICdhIERlZmVycmVkLnQpXG5cbigqKiBlcXVpdmFsZW50IHRvIHshRGVmZXJyZWQudXBvbn0uICopXG5sZXQgKCA+Pj4gKSA9IERlZmVycmVkLkluZml4LiggPj4+IClcblxuKCoqIGVxdWl2YWxlbnQgdG8geyFEZWZlcnJlZC5SZXN1bHQuYmluZH0uICopXG5sZXQgKCA+Pj0/ICkgPSBEZWZlcnJlZC5SZXN1bHQuKCA+Pj0gKVxuXG4oKiogZXF1aXZhbGVudCB0byB7IURlZmVycmVkLlJlc3VsdC5tYXB9LiAqKVxubGV0ICggPj58PyApID0gRGVmZXJyZWQuUmVzdWx0LiggPj58IClcblxuaW5jbHVkZSBEZWZlcnJlZC5MZXRfc3ludGF4XG5cbigqKi8qKilcblxuKCoqIFRoZSBtb2R1bGVzIGluIFtBc3luY19rZXJuZWxfcHJpdmF0ZV0gYXJlIHVzZWQgZm9yIGNvbnN0cnVjdGluZyBhbmQgdGVzdGluZyBBc3luYywgYW5kXG4gICAgc2hvdWxkIG5vdCBvdGhlcndpc2UgYmUgdXNlZC4gKilcbm1vZHVsZSBBc3luY19rZXJuZWxfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgRGVidWcgPSBEZWJ1Z1xuICBtb2R1bGUgSXZhcjAgPSBJdmFyMFxuICBtb2R1bGUgSXZhcl9maWxsZXIgPSBJdmFyX2ZpbGxlclxuICBtb2R1bGUgSm9iID0gSm9iXG4gIG1vZHVsZSBTdGFja19vcl9jb3VudGVyID0gU3RhY2tfb3JfY291bnRlclxuZW5kXG5cbigqKi8qKilcblxuKCogVGhpcyB0ZXN0IG11c3QgYmUgaW4gdGhpcyBsaWJyYXJ5LCBiZWNhdXNlIGl0IHJlcXVpcmVzIFtyZXR1cm5dIHRvIGJlIGlubGluZWQuICBNb3ZpbmdcbiAgIGl0IHRvIGFub3RoZXIgbGlicmFyeSB3aWxsIGNhdXNlIGl0IHRvIGJyZWFrIHdpdGggW1hfTElCUkFSWV9JTkxJTklORz1mYWxzZV0uICopXG5sZXQldGVzdF91bml0IFwiW3JldHVybiAoKV0gZG9lcyBub3QgYWxsb2NhdGVcIiA9XG4gIGxldCB3MSA9IEdjLm1pbm9yX3dvcmRzICgpIGluXG4gIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAocmV0dXJuICgpKSA6IF8gRGVmZXJyZWQudCk7XG4gIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoRGVmZXJyZWQucmV0dXJuICgpKSA6IF8gRGVmZXJyZWQudCk7XG4gIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoRGVmZXJyZWQuTGV0X3N5bnRheC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5MZXRfc3ludGF4LkxldF9zeW50YXgucmV0dXJuICgpKSA6IF8gRGVmZXJyZWQudCk7XG4gIGxldCB3MiA9IEdjLm1pbm9yX3dvcmRzICgpIGluXG4gIFsldGVzdF9yZXN1bHQ6IGludF0gdzIgfmV4cGVjdDp3MVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgKydhIHQgPSAnYSBEZWZlcnJlZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHJldHVybiA9IERlZmVycmVkLnJldHVyblxuXG4gIGxldCBiaW5kIHQgfmYgPVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgdCB0aGVuIGYgKERlZmVycmVkLnZhbHVlX2V4biB0KSBlbHNlIERlZmVycmVkLmJpbmQgdCB+ZlxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCB0XG4gICAgdGhlbiByZXR1cm4gKGYgKERlZmVycmVkLnZhbHVlX2V4biB0KSlcbiAgICBlbHNlIERlZmVycmVkLm1hcCB0IH5mXG4gIDs7XG5cbiAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIE1vbmFkLk1ha2UgKFQpXG5cbmxldCBjcmVhdGUgPSBEZWZlcnJlZC5jcmVhdGVcbmxldCBkb24ndF93YWl0X2ZvciA9IERlZmVycmVkLmRvbid0X3dhaXRfZm9yXG5sZXQgaW52YXJpYW50ID0gRGVmZXJyZWQuaW52YXJpYW50XG5sZXQgaXNfZGV0ZXJtaW5lZCA9IERlZmVycmVkLmlzX2RldGVybWluZWRcbmxldCBuZXZlciA9IERlZmVycmVkLm5ldmVyXG5sZXQgcGVlayA9IERlZmVycmVkLnBlZWtcbmxldCB1bml0ID0gRGVmZXJyZWQudW5pdFxubGV0IHZhbHVlX2V4biA9IERlZmVycmVkLnZhbHVlX2V4blxubGV0IHVwb24gdCBmID0gaWYgaXNfZGV0ZXJtaW5lZCB0IHRoZW4gZiAodmFsdWVfZXhuIHQpIGVsc2UgRGVmZXJyZWQudXBvbiB0IGZcblxubGV0IGJvdGggdDEgdDIgPVxuICBjcmVhdGUgKGZ1biByZXN1bHQgLT4gdXBvbiB0MSAoZnVuIGExIC0+IHVwb24gdDIgKGZ1biBhMiAtPiBJdmFyLmZpbGwgcmVzdWx0IChhMSwgYTIpKSkpXG47O1xuXG5sZXQgb2sgdCA9IGlmIGlzX2RldGVybWluZWQgdCB0aGVuIHJldHVybiAoT2sgKHZhbHVlX2V4biB0KSkgZWxzZSBEZWZlcnJlZC5vayB0XG5sZXQgaWdub3JlX20gdCA9IGlmIGlzX2RldGVybWluZWQgdCB0aGVuIHVuaXQgZWxzZSBEZWZlcnJlZC5pZ25vcmVfbSB0XG5cbmxldCBhbnkgdHMgPVxuICBtYXRjaCBMaXN0LmZpbmQgdHMgfmY6aXNfZGV0ZXJtaW5lZCB3aXRoXG4gIHwgU29tZSB4IC0+IHJldHVybiAodmFsdWVfZXhuIHgpXG4gIHwgTm9uZSAtPiBEZWZlcnJlZC5hbnkgdHNcbjs7XG5cbmxldCBhbnlfdW5pdCB0cyA9XG4gIGlmIExpc3QuZXhpc3RzIHRzIH5mOihpc19kZXRlcm1pbmVkIDogdW5pdCB0IC0+IGJvb2wpXG4gIHRoZW4gdW5pdFxuICBlbHNlIERlZmVycmVkLmFueV91bml0IHRzXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIGxldCAoID4+PiApID0gdXBvblxuZW5kXG5cbmxldCByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZiA9XG4gIGxldCBvcGVuIEluZml4IGluXG4gIGNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICAgIGYgc3RhdGVcbiAgICAgID4+PiBmdW5jdGlvblxuICAgICAgfCBgUmVwZWF0IHN0YXRlIC0+IGxvb3Agc3RhdGVcbiAgICAgIHwgYEZpbmlzaGVkIHJlc3VsdCAtPiBJdmFyLmZpbGwgZmluaXNoZWQgcmVzdWx0XG4gICAgaW5cbiAgICBsb29wIHN0YXRlKVxuOztcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgb3BlbiBJbmZpeFxuICBvcGVuIExldF9zeW50YXhcblxuICBsZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gICAgY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgdCBpIGIgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgICAgfCB4IDo6IHhzIC0+IGYgaSBiIHggPj4+IGZ1biBiIC0+IGxvb3AgeHMgKGkgKyAxKSBiXG4gICAgICBpblxuICAgICAgbG9vcCB0IDAgaW5pdClcbiAgOztcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG4gIGxldCBzZXFtYXBpIHQgfmYgPVxuICAgIGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgICBiIDo6IGJzKVxuICAgID4+fCBMaXN0LnJldlxuICA7O1xuXG4gIGxldCBhbGwgZHMgPSBzZXFtYXBpIGRzIH5mOihmdW4gXyB4IC0+IHgpXG4gIGxldCBhbGxfdW5pdCBkcyA9IGlnbm9yZV9tIChmb2xkIGRzIH5pbml0OigpIH5mOihmdW4gKCkgZCAtPiBkKSA6IHVuaXQgVC50KVxuXG4gIGxldCBpdGVyaSB+aG93IHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGxfdW5pdCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbiAgOztcblxuICBsZXQgbWFwaSB+aG93IHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGwgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuICA7O1xuXG4gIGxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gICAgbGV0JW1hcCBib29scyA9IG1hcGkgdCB+aG93IH5mIGluXG4gICAgTGlzdC5yZXZcbiAgICAgIChMaXN0LmZvbGQyX2V4biB0IGJvb2xzIH5pbml0OltdIH5mOihmdW4gYWMgeCBiIC0+IGlmIGIgdGhlbiB4IDo6IGFjIGVsc2UgYWMpKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5maWx0ZXJfb3B0XG4gIGxldCBjb25jYXRfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5jb25jYXRcblxuICBsZXQgZmluZF9tYXBpIHQgfmYgPVxuICAgIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoJWJpbmQgZiBpIGhkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgICBpblxuICAgIGZpbmRfbWFwaSB0IH5mIDBcbiAgOztcblxuICBsZXQgZmluZGkgdCB+ZiA9XG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gZWx0IC0+IGlmJW1hcCBmIGVsdCB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcblxuICBsZXQgZXhpc3RzaSB0IH5mID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiB0cnVlXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiBmYWxzZVxuICAgIHwgTm9uZSAtPiB0cnVlXG4gIDs7XG5cbiAgbGV0IGl0ZXIgfmhvdyB0IH5mID0gaXRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IG1hcCB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXIgfmhvdyB0IH5mID0gZmlsdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPSBjb25jYXRfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgaW5pdCB+aG93IG4gfmYgPSBtYXAgfmhvdyAoTGlzdC5pbml0IG4gfmY6Rm4uaWQpIH5mXG5lbmRcblxubGV0IGFsbF91bml0ID0gTGlzdC5hbGxfdW5pdFxuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBEZWZlcnJlZCA9IEVhZ2VyX2RlZmVycmVkMFxub3BlbiBEZWZlcnJlZC5MZXRfc3ludGF4XG5cbigqIENvcGllZCBmcm9tIFtkZWZlcnJlZF9yZXN1bHQubWxdLiAgVGhlcmUgc2hvdWxkIGJlIG5vIGRpZmZzIGJlbG93IHRoaXMgbGluZS4gKilcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdlcnJvcikgdCA9ICgnYSwgJ2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50XG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBjb21iaW5lIHQxIHQyIH5vayB+ZXJyID1cbiAgbGV0JW1hcCB0MSA9IHQxXG4gIGFuZCB0MiA9IHQyIGluXG4gIFJlc3VsdC5jb21iaW5lIHQxIHQyIH5vayB+ZXJyXG47O1xuXG5pbmNsdWRlIE1vbmFkLk1ha2UyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCByZXR1cm4gYSA9IERlZmVycmVkLnJldHVybiAoT2sgYSlcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgRGVmZXJyZWQuYmluZCB0IH5mOihmdW5jdGlvblxuICAgICAgICB8IE9rIGEgLT4gZiBhXG4gICAgICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiBEZWZlcnJlZC5yZXR1cm4gZXJyb3IpXG4gICAgOztcblxuICAgIGxldCBtYXAgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBSZXN1bHQubWFwIHIgfmYpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGZhaWwgeCA9IERlZmVycmVkLnJldHVybiAoRXJyb3IgeClcbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcbmxldCBtYXBfZXJyb3IgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBSZXN1bHQubWFwX2Vycm9yIHIgfmYpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19rZXJuZWxcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRWFnZXJfZGVmZXJyZWQwXG5tb2R1bGUgRGVmZXJyZWRfcmVzdWx0ID0gRWFnZXJfZGVmZXJyZWRfcmVzdWx0XG5cbm1vZHVsZSBNb25pdG9yID0gc3RydWN0XG4gIGxldCB0cnlfd2l0aCA/KHJ1biA9IGBOb3cpID0gTW9uaXRvci50cnlfd2l0aCB+cnVuXG5lbmRcblxuKCogQ29waWVkIGZyb20gW2RlZmVycmVkX29yX2Vycm9yLm1sXS4gIFRoZXJlIHNob3VsZCBiZSBubyBkaWZmcyBiZWxvdyB0aGlzIGxpbmUuICopXG5cbmluY2x1ZGUgKERlZmVycmVkX3Jlc3VsdCA6IE1vbmFkLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIERlZmVycmVkX3Jlc3VsdC50KVxuXG50eXBlICdhIHQgPSAnYSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgbGV0IGFwcGx5IGYgeCA9XG4gICAgICBEZWZlcnJlZF9yZXN1bHQuY29tYmluZVxuICAgICAgICBmXG4gICAgICAgIHhcbiAgICAgICAgfm9rOihmdW4gZiB4IC0+IGYgeClcbiAgICAgICAgfmVycjooZnVuIGUxIGUyIC0+IEVycm9yLm9mX2xpc3QgWyBlMTsgZTIgXSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAoKiBmcm9tIEFwcGxpY2F0aXZlLk1ha2UgKilcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4gTGV0X3N5bnRheFxuXG5sZXQgZmFpbCBlcnJvciA9IERlZmVycmVkLnJldHVybiAoUmVzdWx0LmZhaWwgZXJyb3IpXG5sZXQgb2tfZXhuIHQgPSBEZWZlcnJlZC5tYXAgdCB+ZjpPcl9lcnJvci5va19leG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLm9mX2V4biA/YmFja3RyYWNlIGV4bilcbmxldCBvZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UgdCA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci5vZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UpXG5sZXQgZXJyb3IgbXNnIHYgc2V4cF9vZiA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3IgbXNnIHYgc2V4cF9vZilcbmxldCBlcnJvcl9zIHNleHAgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3Mgc2V4cClcbmxldCBlcnJvcl9zdHJpbmcgbXNnID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgbXNnKVxubGV0IGVycm9yZiBmb3JtYXQgPSBrc3ByaW50ZiBlcnJvcl9zdHJpbmcgZm9ybWF0XG5sZXQgdGFnIHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWcgfnRhZylcbmxldCB0YWdfcyB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnX3MgfnRhZylcbmxldCB0YWdfc19sYXp5IHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWdfc19sYXp5IH50YWcpXG5cbmxldCB0YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIERlZmVycmVkLm1hcCB0IH5mOihmdW4gdCAtPiBPcl9lcnJvci50YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCB1bmltcGxlbWVudGVkIG1zZyA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IudW5pbXBsZW1lbnRlZCBtc2cpXG5sZXQgY29tYmluZV9lcnJvcnMgbCA9IERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzXG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsID0gRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuXG5sZXQgZmlsdGVyX29rX2F0X2xlYXN0X29uZSBsID1cbiAgRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuZmlsdGVyX29rX2F0X2xlYXN0X29uZVxuOztcblxubGV0IGZpbmRfbWFwX29rIGwgfmYgPVxuICBEZWZlcnJlZC5yZXBlYXRfdW50aWxfZmluaXNoZWQgKGwsIFtdKSAoZnVuIChsLCBlcnJvcnMpIC0+XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgbGV0IGVycm9ycyA9IEVycm9yLm9mX2xpc3QgKExpc3QucmV2IGVycm9ycykgaW5cbiAgICAgIERlZmVycmVkLnJldHVybiAoYEZpbmlzaGVkIChFcnJvciBlcnJvcnMpKVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIERlZmVycmVkLm1hcCAoZiBoZCkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgRXJyb3IgY3VycmVudF9lcnJvciAtPiBgUmVwZWF0ICh0bCwgY3VycmVudF9lcnJvciA6OiBlcnJvcnMpXG4gICAgICAgIHwgT2sgcmVzdWx0IC0+IGBGaW5pc2hlZCAoT2sgcmVzdWx0KSkpXG47O1xuXG5sZXQgb2tfdW5pdCA9IHJldHVybiAoKVxuXG5sZXQgdHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZiA9XG4gIERlZmVycmVkLm1hcCAoTW9uaXRvci50cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmKSB+ZjooZnVuY3Rpb25cbiAgICB8IEVycm9yIGV4biAtPiBFcnJvciAoRXJyb3Iub2ZfZXhuIGV4bilcbiAgICB8IE9rIF8gYXMgb2sgLT4gb2spXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmID1cbiAgRGVmZXJyZWQubWFwICh0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmKSB+ZjpPcl9lcnJvci5qb2luXG47O1xuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBsZXQgZm9sZGkgbGlzdCB+aW5pdDphY2MgfmYgPVxuICAgIGxldCByZWMgbG9vcCBpIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiBhY2NcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgbGV0JWJpbmQgYWNjID0gZiBpIGFjYyBoZCBpblxuICAgICAgICBsb29wIChpICsgMSkgYWNjIHRsXG4gICAgaW5cbiAgICBsb29wIDAgYWNjIGxpc3RcbiAgOztcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG4gIGxldCBzZXFtYXBpIHQgfmYgPVxuICAgIGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgICBiIDo6IGJzKVxuICAgID4+fCBMaXN0LnJldlxuICA7O1xuXG4gIGxldCBhbGwgPSBhbGxcbiAgbGV0IGFsbF91bml0ID0gYWxsX3VuaXRcblxuICBsZXQgaXRlcmkgfmhvdyB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsX3VuaXQgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG4gIDs7XG5cbiAgbGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsIChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuZmlsdGVyX29wdFxuICBsZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbiAgbGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSB4IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZF9tYXBpIHQgfmYgPVxuICAgIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoJWJpbmQgZiBpIGhkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgICBpblxuICAgIGZpbmRfbWFwaSB0IH5mIDBcbiAgOztcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcblxuICBsZXQgZmluZGkgdCB+ZiA9XG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPVxuICAgIGZpbmRfbWFwIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IHRydWVcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IGZhbHNlXG4gICAgfCBOb25lIC0+IHRydWVcbiAgOztcblxuICBsZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChMaXN0LmluaXQgbiB+ZjpGbi5pZCkgfmZcbmVuZFxuXG5sZXQgcmVjIHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgbWF0Y2glYmluZCBmIHN0YXRlIHdpdGhcbiAgfCBgUmVwZWF0IHN0YXRlIC0+IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmXG4gIHwgYEZpbmlzaGVkIHN0YXRlIC0+IHJldHVybiBzdGF0ZVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFMgPSBFYWdlcl9kZWZlcnJlZF9pbnRmLlNcblxuaW5jbHVkZSBFYWdlcl9kZWZlcnJlZDFcblxubW9kdWxlIFVzZSA9IHN0cnVjdFxuICBtb2R1bGUgRGVmZXJyZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBEZWZlcnJlZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEVhZ2VyX2RlZmVycmVkMVxuICBlbmRcblxuICBpbmNsdWRlIChFYWdlcl9kZWZlcnJlZDEgOiBNb25hZC5JbmZpeCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBEZWZlcnJlZC50KVxuICBpbmNsdWRlIEVhZ2VyX2RlZmVycmVkMS5MZXRfc3ludGF4XG5cbiAgbGV0IHVwb24gPSBFYWdlcl9kZWZlcnJlZDEudXBvblxuICBsZXQgKCA+Pj4gKSA9IEVhZ2VyX2RlZmVycmVkMS5JbmZpeC4oID4+PiApXG5cbiAgbGV0ICggPj49PyApIHggZiA9XG4gICAgeFxuICAgID4+PSBmdW5jdGlvblxuICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiByZXR1cm4gZXJyb3JcbiAgICB8IE9rIHYgLT4gZiB2XG4gIDs7XG5cbiAgbGV0ICggPj58PyApIHggZiA9XG4gICAgeFxuICAgID4+fCBmdW5jdGlvblxuICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiBlcnJvclxuICAgIHwgT2sgdiAtPiBPayAoZiB2KVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ2xvc2VkXG4gICAgfCBXcml0ZV9pbl9wcm9ncmVzc1xuICAgIHwgT2tfdG9fd3JpdGVcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaXNfY2xvc2VkID0gZnVuY3Rpb25cbiAgICB8IENsb3NlZCAtPiB0cnVlXG4gICAgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBmYWxzZVxuICAgIHwgT2tfdG9fd3JpdGUgLT4gZmFsc2VcbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2FsbGJhY2tfYXJpdHkgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgPVxuICAgIHwgQXJpdHkxIDogKCdhIC0+IHVuaXQpIHRcbiAgICB8IEFyaXR5MV9sb2NhbCA6ICgoJ2FbQGxvY2FsXSkgLT4gdW5pdCkgdFxuICAgIHwgQXJpdHkyIDogKCdhIC0+ICdiIC0+IHVuaXQpIHRcbiAgICB8IEFyaXR5MyA6ICgnYSAtPiAnYiAtPiAnYyAtPiB1bml0KSB0XG4gICAgfCBBcml0eTQgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gdW5pdCkgdFxuICAgIHwgQXJpdHk1IDogKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+IHVuaXQpIHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdXNlc19sb2NhbF9hcmdzIDogdHlwZSBhLiBhIHQgLT4gYm9vbCA9IGZ1bmN0aW9uXG4gICAgfCBBcml0eTEgLT4gZmFsc2VcbiAgICB8IEFyaXR5MV9sb2NhbCAtPiB0cnVlXG4gICAgfCBBcml0eTIgLT4gZmFsc2VcbiAgICB8IEFyaXR5MyAtPiBmYWxzZVxuICAgIHwgQXJpdHk0IC0+IGZhbHNlXG4gICAgfCBBcml0eTUgLT4gZmFsc2VcbiAgOztcbmVuZFxuXG5tb2R1bGUgTGFzdF92YWx1ZSA6IHNpZ1xuICB0eXBlICdjYWxsYmFjayB0XG5cbiAgdmFsIGNyZWF0ZV9leG4gOiAnY2FsbGJhY2sgQ2FsbGJhY2tfYXJpdHkudCAtPiAnY2FsbGJhY2sgdFxuICB2YWwgc2V0MSA6ICgnYSAtPiB1bml0KSB0IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHNldDIgOiAoJ2EgLT4gJ2IgLT4gdW5pdCkgdCAtPiAnYSAtPiAnYiAtPiB1bml0XG4gIHZhbCBzZXQzIDogKCdhIC0+ICdiIC0+ICdjIC0+IHVuaXQpIHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdFxuICB2YWwgc2V0NCA6ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiB1bml0KSB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IHVuaXRcbiAgdmFsIHNldDUgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gdW5pdCkgdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiB1bml0XG4gIHZhbCBzZW5kIDogJ2NhbGxiYWNrIHQgLT4gJ2NhbGxiYWNrIC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIF8gdHVwbGUgPVxuICAgIHwgVHVwbGUxIDogeyBtdXRhYmxlIGFyZzEgOiAnYSB9IC0+ICgnYSAtPiB1bml0KSB0dXBsZVxuICAgIHwgVHVwbGUyIDpcbiAgICAgICAgeyBtdXRhYmxlIGFyZzEgOiAnYVxuICAgICAgICA7IG11dGFibGUgYXJnMiA6ICdiXG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhIC0+ICdiIC0+IHVuaXQpIHR1cGxlXG4gICAgfCBUdXBsZTMgOlxuICAgICAgICB7IG11dGFibGUgYXJnMSA6ICdhXG4gICAgICAgIDsgbXV0YWJsZSBhcmcyIDogJ2JcbiAgICAgICAgOyBtdXRhYmxlIGFyZzMgOiAnY1xuICAgICAgICB9XG4gICAgICAgIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiB1bml0KSB0dXBsZVxuICAgIHwgVHVwbGU0IDpcbiAgICAgICAgeyBtdXRhYmxlIGFyZzEgOiAnYVxuICAgICAgICA7IG11dGFibGUgYXJnMiA6ICdiXG4gICAgICAgIDsgbXV0YWJsZSBhcmczIDogJ2NcbiAgICAgICAgOyBtdXRhYmxlIGFyZzQgOiAnZFxuICAgICAgICB9XG4gICAgICAgIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiB1bml0KSB0dXBsZVxuICAgIHwgVHVwbGU1IDpcbiAgICAgICAgeyBtdXRhYmxlIGFyZzEgOiAnYVxuICAgICAgICA7IG11dGFibGUgYXJnMiA6ICdiXG4gICAgICAgIDsgbXV0YWJsZSBhcmczIDogJ2NcbiAgICAgICAgOyBtdXRhYmxlIGFyZzQgOiAnZFxuICAgICAgICA7IG11dGFibGUgYXJnNSA6ICdlXG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+IHVuaXQpIHR1cGxlXG5cbiAgdHlwZSAnY2FsbGJhY2sgdCA9ICdjYWxsYmFjayB0dXBsZSBvcHRpb24gcmVmXG5cbiAgbGV0IGNyZWF0ZV9leG4gKHR5cGUgY2FsbGJhY2spIChhcml0eSA6IGNhbGxiYWNrIENhbGxiYWNrX2FyaXR5LnQpIDogY2FsbGJhY2sgdCA9XG4gICAgaWYgQ2FsbGJhY2tfYXJpdHkudXNlc19sb2NhbF9hcmdzIGFyaXR5XG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkNhbm5vdCBzYXZlIGxhc3QgdmFsdWUgd2hlbiB1c2luZyBsb2NhbCBhcmdzXCIgKGFyaXR5IDogXyBDYWxsYmFja19hcml0eS50KV07XG4gICAgcmVmIE5vbmVcbiAgOztcblxuICBsZXQgc2V0MSB0IGEgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gdCA6PSBTb21lIChUdXBsZTEgeyBhcmcxID0gYSB9KVxuICAgIHwgU29tZSAoVHVwbGUxIGFyZ3MpIC0+IGFyZ3MuYXJnMSA8LSBhXG4gIDs7XG5cbiAgbGV0IHNldDIgdCBhIGIgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gdCA6PSBTb21lIChUdXBsZTIgeyBhcmcxID0gYTsgYXJnMiA9IGIgfSlcbiAgICB8IFNvbWUgKFR1cGxlMiBhcmdzKSAtPlxuICAgICAgYXJncy5hcmcxIDwtIGE7XG4gICAgICBhcmdzLmFyZzIgPC0gYlxuICA7O1xuXG4gIGxldCBzZXQzIHQgYSBiIGMgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gdCA6PSBTb21lIChUdXBsZTMgeyBhcmcxID0gYTsgYXJnMiA9IGI7IGFyZzMgPSBjIH0pXG4gICAgfCBTb21lIChUdXBsZTMgYXJncykgLT5cbiAgICAgIGFyZ3MuYXJnMSA8LSBhO1xuICAgICAgYXJncy5hcmcyIDwtIGI7XG4gICAgICBhcmdzLmFyZzMgPC0gY1xuICA7O1xuXG4gIGxldCBzZXQ0IHQgYSBiIGMgZCA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlNCB7IGFyZzEgPSBhOyBhcmcyID0gYjsgYXJnMyA9IGM7IGFyZzQgPSBkIH0pXG4gICAgfCBTb21lIChUdXBsZTQgYXJncykgLT5cbiAgICAgIGFyZ3MuYXJnMSA8LSBhO1xuICAgICAgYXJncy5hcmcyIDwtIGI7XG4gICAgICBhcmdzLmFyZzMgPC0gYztcbiAgICAgIGFyZ3MuYXJnNCA8LSBkXG4gIDs7XG5cbiAgbGV0IHNldDUgdCBhcmcxIGFyZzIgYXJnMyBhcmc0IGFyZzUgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gdCA6PSBTb21lIChUdXBsZTUgeyBhcmcxOyBhcmcyOyBhcmczOyBhcmc0OyBhcmc1IH0pXG4gICAgfCBTb21lIChUdXBsZTUgYXJncykgLT5cbiAgICAgIGFyZ3MuYXJnMSA8LSBhcmcxO1xuICAgICAgYXJncy5hcmcyIDwtIGFyZzI7XG4gICAgICBhcmdzLmFyZzMgPC0gYXJnMztcbiAgICAgIGFyZ3MuYXJnNCA8LSBhcmc0O1xuICAgICAgYXJncy5hcmc1IDwtIGFyZzVcbiAgOztcblxuICBsZXQgc2VuZCAodHlwZSBjYWxsYmFjaykgKHQgOiBjYWxsYmFjayB0KSAoY2FsbGJhY2sgOiBjYWxsYmFjaykgOiB1bml0ID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIChUdXBsZTEgeyBhcmcxIH0pIC0+IGNhbGxiYWNrIGFyZzFcbiAgICB8IFNvbWUgKFR1cGxlMiB7IGFyZzE7IGFyZzIgfSkgLT4gY2FsbGJhY2sgYXJnMSBhcmcyXG4gICAgfCBTb21lIChUdXBsZTMgeyBhcmcxOyBhcmcyOyBhcmczIH0pIC0+IGNhbGxiYWNrIGFyZzEgYXJnMiBhcmczXG4gICAgfCBTb21lIChUdXBsZTQgeyBhcmcxOyBhcmcyOyBhcmczOyBhcmc0IH0pIC0+IGNhbGxiYWNrIGFyZzEgYXJnMiBhcmczIGFyZzRcbiAgICB8IFNvbWUgKFR1cGxlNSB7IGFyZzE7IGFyZzI7IGFyZzM7IGFyZzQ7IGFyZzUgfSkgLT4gY2FsbGJhY2sgYXJnMSBhcmcyIGFyZzMgYXJnNCBhcmc1XG4gIDs7XG5lbmRcblxubW9kdWxlIE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQWxsb3dcbiAgICB8IEFsbG93X2FuZF9zZW5kX2xhc3RfdmFsdWVcbiAgICB8IFJhaXNlXG4gIFtAQGRlcml2aW5nIGVudW1lcmF0ZSwgc2V4cF9vZl1cblxuICBsZXQgYWxsb3dfc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlID0gZnVuY3Rpb25cbiAgICB8IEFsbG93IC0+IHRydWVcbiAgICB8IEFsbG93X2FuZF9zZW5kX2xhc3RfdmFsdWUgLT4gdHJ1ZVxuICAgIHwgUmFpc2UgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgc2F2ZV9sYXN0X3ZhbHVlX2V4biB0IGNhbGxiYWNrX2FyaXR5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEFsbG93X2FuZF9zZW5kX2xhc3RfdmFsdWUgLT4gU29tZSAoTGFzdF92YWx1ZS5jcmVhdGVfZXhuIGNhbGxiYWNrX2FyaXR5KVxuICAgIHwgQWxsb3cgLT4gTm9uZVxuICAgIHwgUmFpc2UgLT4gTm9uZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBCdXNfaWQgPSBVbmlxdWVfaWQuSW50NjMgKClcblxubW9kdWxlIFN1YnNjcmliZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnY2FsbGJhY2sgdCA9XG4gICAgeyBidXNfaWQgOiBCdXNfaWQudFxuICAgIDsgY2FsbGJhY2sgOiAnY2FsbGJhY2tcbiAgICA7IGV4dHJhY3RfZXhuIDogYm9vbFxuICAgIDsgKCogW3N1YnNjcmliZXJzX2luZGV4XSBpcyB0aGUgaW5kZXggb2YgdGhpcyBzdWJzY3JpYmVyIGluIHRoZSBidXMncyBbc3Vic2NyaWJlcnNdXG4gICAgICAgICBhcnJheS4gIFstMV0gaW5kaWNhdGVzIHRoYXQgdGhpcyBzdWJzY3JpYmVyIGlzIG5vdCBzdWJzY3JpYmVkLiAqKVxuICAgICAgbXV0YWJsZSBzdWJzY3JpYmVyc19pbmRleCA6IGludFxuICAgIDsgb25fY2FsbGJhY2tfcmFpc2UgOiAoRXJyb3IudCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG9uX2Nsb3NlIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBzdWJzY3JpYmVkX2Zyb20gOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgbGV0IGlzX3N1YnNjcmliZWQgdCB+dG9fID0gdC5zdWJzY3JpYmVyc19pbmRleCA+PSAwICYmIEJ1c19pZC5lcXVhbCB0LmJ1c19pZCB0b19cblxuICBsZXQgc2V4cF9vZl90XG4gICAgICAgIF9cbiAgICAgICAgeyBjYWxsYmFjayA9IF9cbiAgICAgICAgOyBidXNfaWQgPSBfXG4gICAgICAgIDsgZXh0cmFjdF9leG5cbiAgICAgICAgOyBzdWJzY3JpYmVyc19pbmRleFxuICAgICAgICA7IG9uX2NhbGxiYWNrX3JhaXNlXG4gICAgICAgIDsgb25fY2xvc2UgPSBfXG4gICAgICAgIDsgc3Vic2NyaWJlZF9mcm9tXG4gICAgICAgIH1cbiAgICA6IFNleHAudFxuICAgID1cbiAgICBMaXN0XG4gICAgICBbIEF0b20gXCJCdXMuU3Vic2NyaWJlci50XCJcbiAgICAgIDsgWyVtZXNzYWdlXG4gICAgICAgIFwiXCJcbiAgICAgICAgICB+c3Vic2NyaWJlcnNfaW5kZXg6XG4gICAgICAgICAgICAoaWYgUHB4X2lubGluZV90ZXN0X2xpYi5hbV9ydW5uaW5nIHRoZW4gTm9uZSBlbHNlIFNvbWUgc3Vic2NyaWJlcnNfaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoaW50IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICAob25fY2FsbGJhY2tfcmFpc2UgOiAoKEVycm9yLnQgLT4gdW5pdCkgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIH5leHRyYWN0X2V4bjpcbiAgICAgICAgICAgIChpZiBleHRyYWN0X2V4biB0aGVuIFNvbWUgdHJ1ZSBlbHNlIE5vbmUgOiAoYm9vbCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgKHN1YnNjcmliZWRfZnJvbSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuICAgICAgXVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmJ1c19pZDppZ25vcmVcbiAgICAgICAgfmNhbGxiYWNrOihjaGVjayBpbnZhcmlhbnRfYSlcbiAgICAgICAgfmV4dHJhY3RfZXhuOmlnbm9yZVxuICAgICAgICB+c3Vic2NyaWJlcnNfaW5kZXg6aWdub3JlXG4gICAgICAgIH5vbl9jYWxsYmFja19yYWlzZTppZ25vcmVcbiAgICAgICAgfm9uX2Nsb3NlOmlnbm9yZVxuICAgICAgICB+c3Vic2NyaWJlZF9mcm9tOmlnbm9yZSlcbiAgOztcblxuICBsZXQgY3JlYXRlXG4gICAgICAgIHN1YnNjcmliZWRfZnJvbVxuICAgICAgICB+Y2FsbGJhY2tcbiAgICAgICAgfmJ1c19pZFxuICAgICAgICB+ZXh0cmFjdF9leG5cbiAgICAgICAgfnN1YnNjcmliZXJzX2luZGV4XG4gICAgICAgIH5vbl9jYWxsYmFja19yYWlzZVxuICAgICAgICB+b25fY2xvc2VcbiAgICA9XG4gICAgeyBidXNfaWRcbiAgICA7IGNhbGxiYWNrXG4gICAgOyBleHRyYWN0X2V4blxuICAgIDsgc3Vic2NyaWJlcnNfaW5kZXhcbiAgICA7IG9uX2NhbGxiYWNrX3JhaXNlXG4gICAgOyBvbl9jbG9zZVxuICAgIDsgc3Vic2NyaWJlZF9mcm9tXG4gICAgfVxuICA7O1xuZW5kXG5cbnR5cGUgKCdjYWxsYmFjaywgJ3BoYW50b20pIHQgPVxuICB7IGJ1c19pZCA6IEJ1c19pZC50XG4gIDsgbmFtZSA6IEluZm8udCBvcHRpb25cbiAgOyBjYWxsYmFja19hcml0eSA6ICdjYWxsYmFjayBDYWxsYmFja19hcml0eS50XG4gIDsgY3JlYXRlZF9mcm9tIDogU291cmNlX2NvZGVfcG9zaXRpb24udFxuICA7IG9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSA6IE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS50XG4gIDsgb25fY2FsbGJhY2tfcmFpc2UgOiBFcnJvci50IC0+IHVuaXRcbiAgOyBsYXN0X3ZhbHVlIDogJ2NhbGxiYWNrIExhc3RfdmFsdWUudCBvcHRpb25cbiAgOyBtdXRhYmxlIHN0YXRlIDogU3RhdGUudFxuICA7IG11dGFibGUgd3JpdGVfZXZlcl9jYWxsZWQgOiBib29sXG4gIDsgbXV0YWJsZSBudW1fc3Vic2NyaWJlcnMgOiBpbnRcbiAgOyAoKiBbc3Vic2NyaWJlcnNdIGNvbnRhaW5zIGFsbCBzdWJzY3JpYmVycyB0byB0aGUgYnVzLCBpbiBhIGNvbnRpZ3VvdXMgcHJlZml4IGZyb21cbiAgICAgICBpbmRleCBbMF0gdG8gW251bV9zdWJzY3JpYmVycyAtIDFdLiAqKVxuICAgIG11dGFibGUgc3Vic2NyaWJlcnMgOiAnY2FsbGJhY2sgU3Vic2NyaWJlci50IE9wdGlvbl9hcnJheS50XG4gIDsgKCogW2NhbGxiYWNrc10gaG9sZHMgdGhlIGNhbGxiYWNrcyBvZiB0aGUgY29ycmVzcG9uZGluZyBlbnRyaWVzIG9mIFtzdWJzY3JpYmVyc10uICopXG4gICAgbXV0YWJsZSBjYWxsYmFja3MgOiAnY2FsbGJhY2sgT3B0aW9uX2FycmF5LnRcbiAgOyBtdXRhYmxlIHVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgOiAnY2FsbGJhY2sgU3Vic2NyaWJlci50IGxpc3RcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG5sZXQgc2V4cF9vZl90XG4gICAgICBfXG4gICAgICBfXG4gICAgICB7IGJ1c19pZCA9IF9cbiAgICAgIDsgY2FsbGJhY2tfYXJpdHlcbiAgICAgIDsgY2FsbGJhY2tzID0gX1xuICAgICAgOyBjcmVhdGVkX2Zyb21cbiAgICAgIDsgbGFzdF92YWx1ZSA9IF9cbiAgICAgIDsgbmFtZVxuICAgICAgOyBudW1fc3Vic2NyaWJlcnNcbiAgICAgIDsgb25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlXG4gICAgICA7IG9uX2NhbGxiYWNrX3JhaXNlID0gX1xuICAgICAgOyBzdGF0ZVxuICAgICAgOyBzdWJzY3JpYmVyc1xuICAgICAgOyB3cml0ZV9ldmVyX2NhbGxlZFxuICAgICAgOyB1bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlID0gX1xuICAgICAgfVxuICA9XG4gIGxldCBzdWJzY3JpYmVycyA9XG4gICAgQXJyYXkuaW5pdCBudW1fc3Vic2NyaWJlcnMgfmY6KGZ1biBpIC0+IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gc3Vic2NyaWJlcnMgaSlcbiAgaW5cbiAgWyVtZXNzYWdlXG4gICAgXCJcIlxuICAgICAgKG5hbWUgOiAoSW5mby50IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgIChjYWxsYmFja19hcml0eSA6IF8gQ2FsbGJhY2tfYXJpdHkudClcbiAgICAgIChjcmVhdGVkX2Zyb20gOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KVxuICAgICAgKG9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSA6IE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS50KVxuICAgICAgKHN0YXRlIDogU3RhdGUudClcbiAgICAgICh3cml0ZV9ldmVyX2NhbGxlZCA6IGJvb2wpXG4gICAgICAoc3Vic2NyaWJlcnMgOiBfIFN1YnNjcmliZXIudCBBcnJheS50KV1cbjs7XG5cbnR5cGUgKCdjYWxsYmFjaywgJ3BoYW50b20pIGJ1cyA9ICgnY2FsbGJhY2ssICdwaGFudG9tKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCByZWFkX29ubHkgdCA9ICh0IDo+IChfLCByZWFkKSB0KVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmJ1c19pZDppZ25vcmVcbiAgICAgIH5uYW1lOmlnbm9yZVxuICAgICAgfmNhbGxiYWNrczpcbiAgICAgICAgKGNoZWNrIChmdW4gY2FsbGJhY2tzIC0+XG4gICAgICAgICAgIGFzc2VydCAoT3B0aW9uX2FycmF5Lmxlbmd0aCBjYWxsYmFja3MgPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuc3Vic2NyaWJlcnMpO1xuICAgICAgICAgICBmb3IgaSA9IDAgdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBjYWxsYmFja3MgLSAxIGRvXG4gICAgICAgICAgICAgaWYgaSA8IHQubnVtX3N1YnNjcmliZXJzXG4gICAgICAgICAgICAgdGhlbiBpbnZhcmlhbnRfYSAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBjYWxsYmFja3MgaSlcbiAgICAgICAgICAgICBlbHNlIGFzc2VydCAoT3B0aW9uX2FycmF5LmlzX25vbmUgY2FsbGJhY2tzIGkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfmNhbGxiYWNrX2FyaXR5Omlnbm9yZVxuICAgICAgfmNyZWF0ZWRfZnJvbTppZ25vcmVcbiAgICAgIH5udW1fc3Vic2NyaWJlcnM6KGNoZWNrIChmdW4gbnVtX3N1YnNjcmliZXJzIC0+IGFzc2VydCAobnVtX3N1YnNjcmliZXJzID49IDApKSlcbiAgICAgIH5vbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGU6aWdub3JlXG4gICAgICB+b25fY2FsbGJhY2tfcmFpc2U6aWdub3JlXG4gICAgICB+bGFzdF92YWx1ZTppZ25vcmVcbiAgICAgIH5zdGF0ZTppZ25vcmVcbiAgICAgIH53cml0ZV9ldmVyX2NhbGxlZDppZ25vcmVcbiAgICAgIH5zdWJzY3JpYmVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gc3Vic2NyaWJlcnMgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIE9wdGlvbl9hcnJheS5sZW5ndGggc3Vic2NyaWJlcnMgLSAxIGRvXG4gICAgICAgICAgICAgaWYgaSA8IHQubnVtX3N1YnNjcmliZXJzXG4gICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICBsZXQgc3Vic2NyaWJlciA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gc3Vic2NyaWJlcnMgaSBpblxuICAgICAgICAgICAgICAgU3Vic2NyaWJlci5pbnZhcmlhbnQgaW52YXJpYW50X2Egc3Vic2NyaWJlcjtcbiAgICAgICAgICAgICAgIGFzc2VydCAoaSA9IHN1YnNjcmliZXIuc3Vic2NyaWJlcnNfaW5kZXgpKVxuICAgICAgICAgICAgIGVsc2UgYXNzZXJ0IChPcHRpb25fYXJyYXkuaXNfbm9uZSBzdWJzY3JpYmVycyBpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH51bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlOmlnbm9yZSlcbjs7XG5cbmxldCBpc19jbG9zZWQgdCA9IFN0YXRlLmlzX2Nsb3NlZCB0LnN0YXRlXG5cbm1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gIHR5cGUgJ2NhbGxiYWNrIHQgPSAoJ2NhbGxiYWNrLCByZWFkX3dyaXRlKSBidXMgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgaWdub3JlIHRcbmVuZFxuXG5tb2R1bGUgUmVhZF9vbmx5ID0gc3RydWN0XG4gIHR5cGUgJ2NhbGxiYWNrIHQgPSAoJ2NhbGxiYWNrLCByZWFkKSBidXMgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgaWdub3JlIHRcbmVuZFxuXG5sZXRbQGNvbGRdIHN0YXJ0X3dyaXRlX2ZhaWxpbmcgdCA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENsb3NlZCAtPlxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiW0J1cy53cml0ZV0gY2FsbGVkIG9uIGNsb3NlZCBidXNcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdXG4gIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiW0J1cy53cml0ZV0gY2FsbGVkIGZyb20gY2FsbGJhY2sgb24gdGhlIHNhbWUgYnVzXCJcbiAgICAgIHRcbiAgICAgIFslc2V4cF9vZjogKF8sIF8pIHRdXG4gIHwgT2tfdG9fd3JpdGUgLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG5sZXQgY2FwYWNpdHkgdCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5zdWJzY3JpYmVyc1xuXG5sZXQgbWF5YmVfc2hyaW5rX2NhcGFjaXR5IHQgPVxuICBpZiB0Lm51bV9zdWJzY3JpYmVycyAqIDQgPD0gY2FwYWNpdHkgdFxuICB0aGVuIChcbiAgICBsZXQgZGVzaXJlZF9jYXBhY2l0eSA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gICAgbGV0IGNvcHlfYW5kX3NocmluayBhcnJheSA9XG4gICAgICBsZXQgbmV3X2FycmF5ID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOmRlc2lyZWRfY2FwYWNpdHkgaW5cbiAgICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICAgIH5zcmM6YXJyYXlcbiAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICB+ZHN0Om5ld19hcnJheVxuICAgICAgICB+ZHN0X3BvczowXG4gICAgICAgIH5sZW46dC5udW1fc3Vic2NyaWJlcnM7XG4gICAgICBuZXdfYXJyYXlcbiAgICBpblxuICAgIHQuc3Vic2NyaWJlcnMgPC0gY29weV9hbmRfc2hyaW5rIHQuc3Vic2NyaWJlcnM7XG4gICAgdC5jYWxsYmFja3MgPC0gY29weV9hbmRfc2hyaW5rIHQuY2FsbGJhY2tzKVxuOztcblxubGV0IGFkZF9zdWJzY3JpYmVyIHQgKHN1YnNjcmliZXIgOiBfIFN1YnNjcmliZXIudCkgfmF0X3N1YnNjcmliZXJzX2luZGV4ID1cbiAgc3Vic2NyaWJlci5zdWJzY3JpYmVyc19pbmRleCA8LSBhdF9zdWJzY3JpYmVyc19pbmRleDtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuc3Vic2NyaWJlcnMgYXRfc3Vic2NyaWJlcnNfaW5kZXggc3Vic2NyaWJlcjtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuY2FsbGJhY2tzIGF0X3N1YnNjcmliZXJzX2luZGV4IHN1YnNjcmliZXIuY2FsbGJhY2tcbjs7XG5cbmxldCByZW1vdmVfc3Vic2NyaWJlciB0IChzdWJzY3JpYmVyIDogXyBTdWJzY3JpYmVyLnQpID1cbiAgbGV0IHN1YnNjcmliZXJzX2luZGV4ID0gc3Vic2NyaWJlci5zdWJzY3JpYmVyc19pbmRleCBpblxuICBzdWJzY3JpYmVyLnN1YnNjcmliZXJzX2luZGV4IDwtIC0xO1xuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5zdWJzY3JpYmVycyBzdWJzY3JpYmVyc19pbmRleDtcbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuY2FsbGJhY2tzIHN1YnNjcmliZXJzX2luZGV4XG47O1xuXG5sZXQgdW5zdWJzY3JpYmVfYXNzdW1pbmdfdmFsaWRfc3Vic2NyaWJlciB0IChzdWJzY3JpYmVyIDogXyBTdWJzY3JpYmVyLnQpID1cbiAgbGV0IHN1YnNjcmliZXJfaW5kZXggPSBzdWJzY3JpYmVyLnN1YnNjcmliZXJzX2luZGV4IGluXG4gIGxldCBsYXN0X3N1YnNjcmliZXJfaW5kZXggPSB0Lm51bV9zdWJzY3JpYmVycyAtIDEgaW5cbiAgcmVtb3ZlX3N1YnNjcmliZXIgdCBzdWJzY3JpYmVyO1xuICBpZiBzdWJzY3JpYmVyX2luZGV4IDwgbGFzdF9zdWJzY3JpYmVyX2luZGV4XG4gIHRoZW4gKFxuICAgIGxldCBsYXN0X3N1YnNjcmliZXIgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuc3Vic2NyaWJlcnMgbGFzdF9zdWJzY3JpYmVyX2luZGV4IGluXG4gICAgcmVtb3ZlX3N1YnNjcmliZXIgdCBsYXN0X3N1YnNjcmliZXI7XG4gICAgYWRkX3N1YnNjcmliZXIgdCBsYXN0X3N1YnNjcmliZXIgfmF0X3N1YnNjcmliZXJzX2luZGV4OnN1YnNjcmliZXJfaW5kZXgpO1xuICB0Lm51bV9zdWJzY3JpYmVycyA8LSB0Lm51bV9zdWJzY3JpYmVycyAtIDE7XG4gIG1heWJlX3Nocmlua19jYXBhY2l0eSB0XG47O1xuXG5sZXQgdW5zdWJzY3JpYmUgdCBzdWJzY3JpYmVyID1cbiAgaWYgU3Vic2NyaWJlci5pc19zdWJzY3JpYmVkIHN1YnNjcmliZXIgfnRvXzp0LmJ1c19pZFxuICB0aGVuIChcbiAgICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICB8IFdyaXRlX2luX3Byb2dyZXNzIC0+XG4gICAgICB0LnVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgPC0gc3Vic2NyaWJlciA6OiB0LnVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGVcbiAgICB8IENsb3NlZCAtPlxuICAgICAgKCogVGhpcyBjYW4gaGFwcGVuIGlmIGR1cmluZyBbd3JpdGVdLCBbdW5zdWJzY3JpYmVdIGlzIGNhbGxlZCBhZnRlciBbY2xvc2VdLiAgV2VcbiAgICAgICAgIGRvbid0IGRvIGFueXRoaW5nIGhlcmUgYmVjYXVzZSBhbGwgc3Vic2NyaWJlcnMgd2lsbCBiZSB1bnN1YnNjcmliZWQgYWZ0ZXIgdGhlXG4gICAgICAgICBbd3JpdGVdIGZpbmlzaGVzLiAqKVxuICAgICAgKClcbiAgICB8IE9rX3RvX3dyaXRlIC0+IHVuc3Vic2NyaWJlX2Fzc3VtaW5nX3ZhbGlkX3N1YnNjcmliZXIgdCBzdWJzY3JpYmVyKVxuOztcblxubGV0W0Bjb2xkXSB1bnN1YnNjcmliZV9hZnRlcl9maW5pc2hfd3JpdGUgdCA9XG4gIExpc3QuaXRlciB0LnVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgfmY6KHVuc3Vic2NyaWJlX2Fzc3VtaW5nX3ZhbGlkX3N1YnNjcmliZXIgdCk7XG4gIHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSA8LSBbXVxuOztcblxubGV0W0Bjb2xkXSB1bnN1YnNjcmliZV9hbGwgdCA9XG4gIGFzc2VydCAoaXNfY2xvc2VkIHQpO1xuICBmb3IgaSA9IDAgdG8gdC5udW1fc3Vic2NyaWJlcnMgLSAxIGRvXG4gICAgbGV0IHN1YnNjcmliZXIgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuc3Vic2NyaWJlcnMgaSBpblxuICAgIE9wdGlvbi5pdGVyIHN1YnNjcmliZXIub25fY2xvc2UgfmY6KGZ1biBvbl9jbG9zZSAtPiBvbl9jbG9zZSAoKSk7XG4gICAgcmVtb3ZlX3N1YnNjcmliZXIgdCBzdWJzY3JpYmVyXG4gIGRvbmU7XG4gIHQubnVtX3N1YnNjcmliZXJzIDwtIDA7XG4gIG1heWJlX3Nocmlua19jYXBhY2l0eSB0XG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGZpbmlzaF93cml0ZSB0ID1cbiAgaWYgbm90IChMaXN0LmlzX2VtcHR5IHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSkgdGhlbiB1bnN1YnNjcmliZV9hZnRlcl9maW5pc2hfd3JpdGUgdDtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIC0+IHVuc3Vic2NyaWJlX2FsbCB0XG4gIHwgT2tfdG9fd3JpdGUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gdC5zdGF0ZSA8LSBPa190b193cml0ZVxuOztcblxubGV0W0Bjb2xkXSBjbG9zZSB0ID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIC0+ICgpXG4gIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gdC5zdGF0ZSA8LSBDbG9zZWRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIHQuc3RhdGUgPC0gQ2xvc2VkO1xuICAgIHVuc3Vic2NyaWJlX2FsbCB0XG47O1xuXG5sZXQgY2FsbF9vbl9jYWxsYmFja19yYWlzZSB0IGVycm9yID1cbiAgdHJ5IHQub25fY2FsbGJhY2tfcmFpc2UgZXJyb3Igd2l0aFxuICB8IGV4biAtPlxuICAgIGNsb3NlIHQ7XG4gICAgcmFpc2UgZXhuXG47O1xuXG5sZXQgY2FsbGJhY2tfcmFpc2VkIHQgaSBleG4gPVxuICAoKiBbaV0gd2FzIGluY3JlbWVudGVkIGJlZm9yZSB0aGUgY2FsbGJhY2sgd2FzIGNhbGxlZCwgc28gd2UgaGF2ZSB0byBzdWJ0cmFjdCBvbmVcbiAgICAgaGVyZS4gIFdlIGRvIHRoaXMgaGVyZSwgcmF0aGVyIHRoYW4gYXQgdGhlIGNhbGwgc2l0ZSwgYmVjYXVzZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiAgICAgY2FsbCBzaXRlcyBkdWUgdG8gdGhlIG9wdGltaXphdGlvbnMgbmVlZGVkIHRvIGtlZXAgdGhpcyB6ZXJvLWFsbG9jLiAqKVxuICBsZXQgc3Vic2NyaWJlciA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5zdWJzY3JpYmVycyAoaSAtIDEpIGluXG4gIGxldCBlcnJvciA9XG4gICAgbWF0Y2ggc3Vic2NyaWJlci5leHRyYWN0X2V4biB3aXRoXG4gICAgfCB0cnVlIC0+IEVycm9yLm9mX2V4biBleG5cbiAgICB8IGZhbHNlIC0+XG4gICAgICAoKiBUaGlzIFtCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpXSBpcyBpbnRlbmRlZCB0byBncmFiIHRoZSBiYWNrdHJhY2Ugb2YgdGhlIFt0cnlcbiAgICAgICAgIC4uLiB3aXRoXSdzIHRoYXQgY2FsbCBbY2FsbGJhY2tfcmFpc2VkXS4gIFRoZSBjYWxsIGlzIGhlcmUgcmF0aGVyIHRoYW4gZWFybGllciBzb1xuICAgICAgICAgdGhhdCB3ZSBvbmx5IGRvIGl0IHdoZW4gW3N1YnNjcmliZXIuZXh0cmFjdF9leG4gPSBmYWxzZV0uICopXG4gICAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiQnVzIHN1YnNjcmliZXIgcmFpc2VkXCJcbiAgICAgICAgICAoZXhuIDogZXhuKVxuICAgICAgICAgIChiYWNrdHJhY2UgOiBCYWNrdHJhY2UudClcbiAgICAgICAgICAoc3Vic2NyaWJlciA6IF8gU3Vic2NyaWJlci50KV1cbiAgICAgIHw+IFslb2Zfc2V4cDogRXJyb3IudF1cbiAgaW5cbiAgbWF0Y2ggc3Vic2NyaWJlci5vbl9jYWxsYmFja19yYWlzZSB3aXRoXG4gIHwgTm9uZSAtPiBjYWxsX29uX2NhbGxiYWNrX3JhaXNlIHQgZXJyb3JcbiAgfCBTb21lIGYgLT5cbiAgICAodHJ5IGYgZXJyb3Igd2l0aFxuICAgICB8IGV4biAtPlxuICAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgY2FsbF9vbl9jYWxsYmFja19yYWlzZVxuICAgICAgICAgdFxuICAgICAgICAgKGxldCBvcmlnaW5hbF9lcnJvciA9IGVycm9yIGluXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIkJ1cyBzdWJzY3JpYmVyJ3MgW29uX2NhbGxiYWNrX3JhaXNlXSByYWlzZWRcIlxuICAgICAgICAgICAgICAoZXhuIDogZXhuKVxuICAgICAgICAgICAgICAoYmFja3RyYWNlIDogQmFja3RyYWNlLnQpXG4gICAgICAgICAgICAgIChvcmlnaW5hbF9lcnJvciA6IEVycm9yLnQpXVxuICAgICAgICAgIHw+IFslb2Zfc2V4cDogRXJyb3IudF0pKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGEgaSA9XG4gICgqIFdlIGNvbnNpZGVyZWQgdXNpbmcgW09wdGlvbl9hcnJheS5nZXRfc29tZV9leG5dIGFuZFxuICAgICBbT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG5dIGhlcmUsIGJ1dCBib3RoIGFyZSBzaWduaWZpY2FudGx5IHNsb3dlci4gIENoZWNrXG4gICAgIHRoZSB3cml0ZSBiZW5jaG1hcmtzIGluIFtiZW5jaF9idXMubWxdIGJlZm9yZSBjaGFuZ2luZyB0aGlzLiAqKVxuICBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2Fzc3VtaW5nX3NvbWUgYSBpXG47O1xuXG5sZXQgd3JpdGVfbm9uX29wdGltaXplZCB0IGNhbGxiYWNrcyBhMSA9XG4gIGxldCBsZW4gPSB0Lm51bV9zdWJzY3JpYmVycyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgdHJ5XG4gICAgICBsZXQgY2FsbGJhY2sgPSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAhaSBpblxuICAgICAgaW5jciBpO1xuICAgICAgY2FsbGJhY2sgYTFcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgIWkgZXhuXG4gIGRvbmU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgd3JpdGVfbG9jYWxfbm9uX29wdGltaXplZCB0IGNhbGxiYWNrcyAoYTEgW0Bsb2NhbF0pID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZTJfbm9uX29wdGltaXplZCB0IGNhbGxiYWNrcyBhMSBhMiA9XG4gIGxldCBsZW4gPSB0Lm51bV9zdWJzY3JpYmVycyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgdHJ5XG4gICAgICBsZXQgY2FsbGJhY2sgPSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAhaSBpblxuICAgICAgaW5jciBpO1xuICAgICAgY2FsbGJhY2sgYTEgYTJcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgIWkgZXhuXG4gIGRvbmU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgd3JpdGUzX25vbl9vcHRpbWl6ZWQgdCBjYWxsYmFja3MgYTEgYTIgYTMgPVxuICBsZXQgbGVuID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIHRyeVxuICAgICAgbGV0IGNhbGxiYWNrID0gdW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgIWkgaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGNhbGxiYWNrIGExIGEyIGEzXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0ICFpIGV4blxuICBkb25lO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHdyaXRlNF9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIGExIGEyIGEzIGE0ID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMSBhMiBhMyBhNFxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZTVfbm9uX29wdGltaXplZCB0IGNhbGxiYWNrcyBhMSBhMiBhMyBhNCBhNSA9XG4gIGxldCBsZW4gPSB0Lm51bV9zdWJzY3JpYmVycyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgdHJ5XG4gICAgICBsZXQgY2FsbGJhY2sgPSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAhaSBpblxuICAgICAgaW5jciBpO1xuICAgICAgY2FsbGJhY2sgYTEgYTIgYTMgYTQgYTVcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgIWkgZXhuXG4gIGRvbmU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG4oKiBUaGUgW3dyaXRlX05dIGZ1bmN0aW9ucyBhcmUgd3JpdHRlbiB0byBtaW5pbWlzZSByZWdpc3RlcnMgbGl2ZSBhY3Jvc3MgZnVuY3Rpb24gY2FsbHNcbiAgICh0aGVzZSBoYXZlIHRvIGJlIHNwaWxsZWQpLiAgVGhleSBhcmUgYWxzbyBhbm5vdGF0ZWQgZm9yIHBhcnRpYWwgaW5saW5pbmcgKHRoZVxuICAgb25lLWNhbGxiYWNrIGNhc2UgYmVjb21lcyBpbmxpbmVkIHdoZXJlYXMgdGhlID4xLWNhbGxiYWNrLWNhc2UgcmVxdWlyZXMgYSBmdXJ0aGVyXG4gICBkaXJlY3QgY2FsbCkuICopXG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGUgdCBhMSA9XG4gIGxldCBjYWxsYmFja3MgPSB0LmNhbGxiYWNrcyBpblxuICB0LndyaXRlX2V2ZXJfY2FsbGVkIDwtIHRydWU7XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENsb3NlZCB8IFdyaXRlX2luX3Byb2dyZXNzIC0+IHN0YXJ0X3dyaXRlX2ZhaWxpbmcgdFxuICB8IE9rX3RvX3dyaXRlIC0+XG4gICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPiAwXG4gICAgdGhlbiAoXG4gICAgICB0LnN0YXRlIDwtIFdyaXRlX2luX3Byb2dyZXNzO1xuICAgICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPSAxXG4gICAgICB0aGVuIChcbiAgICAgICAgKHRyeSAodW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgMCkgYTEgd2l0aFxuICAgICAgICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgMSBleG4pO1xuICAgICAgICBmaW5pc2hfd3JpdGUgdClcbiAgICAgIGVsc2UgKHdyaXRlX25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEpO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZXQxIGxhc3RfdmFsdWUgYTEpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHdyaXRlX2xvY2FsIHQgKGExIFtAbG9jYWxdKSA9XG4gIGxldCBjYWxsYmFja3MgPSB0LmNhbGxiYWNrcyBpblxuICB0LndyaXRlX2V2ZXJfY2FsbGVkIDwtIHRydWU7XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENsb3NlZCB8IFdyaXRlX2luX3Byb2dyZXNzIC0+IHN0YXJ0X3dyaXRlX2ZhaWxpbmcgdFxuICB8IE9rX3RvX3dyaXRlIC0+XG4gICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPiAwXG4gICAgdGhlbiAoXG4gICAgICB0LnN0YXRlIDwtIFdyaXRlX2luX3Byb2dyZXNzO1xuICAgICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPSAxXG4gICAgICB0aGVuIChcbiAgICAgICAgKHRyeSAodW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgMCkgYTEgd2l0aFxuICAgICAgICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgMSBleG4pO1xuICAgICAgICBmaW5pc2hfd3JpdGUgdClcbiAgICAgIGVsc2UgKHdyaXRlX2xvY2FsX25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHdyaXRlMiB0IGExIGEyID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSBhMiB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGUyX25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEgYTIpO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZXQyIGxhc3RfdmFsdWUgYTEgYTIpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHdyaXRlMyB0IGExIGEyIGEzID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSBhMiBhMyB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGUzX25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEgYTIgYTMpO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZXQzIGxhc3RfdmFsdWUgYTEgYTIgYTMpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHdyaXRlNCB0IGExIGEyIGEzIGE0ID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSBhMiBhMyBhNCB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGU0X25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEgYTIgYTMgYTQpO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZXQ0IGxhc3RfdmFsdWUgYTEgYTIgYTMgYTQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHdyaXRlNSB0IGExIGEyIGEzIGE0IGE1ID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSBhMiBhMyBhNCBhNSB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGU1X25vbl9vcHRpbWl6ZWQgW0BpbmxpbmVkIG5ldmVyXSkgdCBjYWxsYmFja3MgYTEgYTIgYTMgYTQgYTUpO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZXQ1IGxhc3RfdmFsdWUgYTEgYTIgYTMgYTQgYTUpXG47O1xuXG5sZXQgYWxsb3dfc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlIHQgPVxuICBPbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUuYWxsb3dfc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlXG4gICAgdC5vbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbjs7XG5cbmxldCBjcmVhdGVfZXhuXG4gICAgICA/bmFtZVxuICAgICAgY3JlYXRlZF9mcm9tXG4gICAgICBjYWxsYmFja19hcml0eVxuICAgICAgfihvbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUgOiBPbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUudClcbiAgICAgIH5vbl9jYWxsYmFja19yYWlzZVxuICA9XG4gIGxldCBsYXN0X3ZhbHVlID1cbiAgICBPbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUuc2F2ZV9sYXN0X3ZhbHVlX2V4blxuICAgICAgb25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlXG4gICAgICBjYWxsYmFja19hcml0eVxuICBpblxuICB7IGJ1c19pZCA9IEJ1c19pZC5jcmVhdGUgKClcbiAgOyBuYW1lXG4gIDsgY2FsbGJhY2tfYXJpdHlcbiAgOyBjcmVhdGVkX2Zyb21cbiAgOyBudW1fc3Vic2NyaWJlcnMgPSAwXG4gIDsgb25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlXG4gIDsgb25fY2FsbGJhY2tfcmFpc2VcbiAgOyBsYXN0X3ZhbHVlXG4gIDsgc3Vic2NyaWJlcnMgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46MFxuICA7IGNhbGxiYWNrcyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjowXG4gIDsgc3RhdGUgPSBPa190b193cml0ZVxuICA7IHdyaXRlX2V2ZXJfY2FsbGVkID0gZmFsc2VcbiAgOyB1bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlID0gW11cbiAgfVxuOztcblxubGV0IGNhbl9zdWJzY3JpYmUgdCA9IGFsbG93X3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSB0IHx8IG5vdCB0LndyaXRlX2V2ZXJfY2FsbGVkXG5cbmxldCBlbmxhcmdlX2NhcGFjaXR5IHQgPVxuICBsZXQgY2FwYWNpdHkgPSBjYXBhY2l0eSB0IGluXG4gIGxldCBuZXdfY2FwYWNpdHkgPSBJbnQubWF4IDEgKGNhcGFjaXR5ICogMikgaW5cbiAgbGV0IGNvcHlfYW5kX2RvdWJsZSBhcnJheSA9XG4gICAgbGV0IG5ld19hcnJheSA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpuZXdfY2FwYWNpdHkgaW5cbiAgICBPcHRpb25fYXJyYXkuYmxpdCB+c3JjOmFycmF5IH5zcmNfcG9zOjAgfmRzdDpuZXdfYXJyYXkgfmRzdF9wb3M6MCB+bGVuOmNhcGFjaXR5O1xuICAgIG5ld19hcnJheVxuICBpblxuICB0LnN1YnNjcmliZXJzIDwtIGNvcHlfYW5kX2RvdWJsZSB0LnN1YnNjcmliZXJzO1xuICB0LmNhbGxiYWNrcyA8LSBjb3B5X2FuZF9kb3VibGUgdC5jYWxsYmFja3Ncbjs7XG5cbmxldCBzdWJzY3JpYmVfZXhuXG4gICAgICA/KGV4dHJhY3RfZXhuID0gZmFsc2UpXG4gICAgICA/b25fY2FsbGJhY2tfcmFpc2VcbiAgICAgID9vbl9jbG9zZVxuICAgICAgdFxuICAgICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgICB+ZjpjYWxsYmFja1xuICA9XG4gIGlmIG5vdCAoY2FuX3N1YnNjcmliZSB0KVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIkJ1cy5zdWJzY3JpYmVfZXhuIGNhbGxlZCBhZnRlciBmaXJzdCB3cml0ZVwiXG4gICAgICBbJXNleHAgfn4oc3Vic2NyaWJlZF9mcm9tIDogU291cmNlX2NvZGVfcG9zaXRpb24udCksIHsgYnVzID0gKHQgOiAoXywgXykgdCkgfV1cbiAgICAgIFslc2V4cF9vZjogU2V4cC50XTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIC0+XG4gICAgKCogQW55dGhpbmcgdGhhdCBzYXRpc2ZpZXMgdGhlIHJldHVybiB0eXBlIHdpbGwgZG8uICBTaW5jZSB0aGUgc3Vic2NyaWJlciBpcyBuZXZlclxuICAgICAgIHN0b3JlZCBpbiB0aGUgYXJyYXlzLCB0aGUgW29uX2Nsb3NlXSBjYWxsYmFjayB3aWxsIG5ldmVyIGJlIGNhbGxlZC4gKilcbiAgICBTdWJzY3JpYmVyLmNyZWF0ZVxuICAgICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgICB+YnVzX2lkOnQuYnVzX2lkXG4gICAgICB+Y2FsbGJhY2tcbiAgICAgIH5leHRyYWN0X2V4blxuICAgICAgfnN1YnNjcmliZXJzX2luZGV4OigtMSlcbiAgICAgIH5vbl9jYWxsYmFja19yYWlzZVxuICAgICAgfm9uX2Nsb3NlXG4gIHwgT2tfdG9fd3JpdGUgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPlxuICAgICgqIFRoZSBjb2RlIGJlbG93IHNpZGUgZWZmZWN0cyBbdF0sIHdoaWNoIHBvdGVudGlhbGx5IGNvdWxkIGludGVyZmVyZSB3aXRoIGEgd3JpdGUgaW5cbiAgICAgICBwcm9ncmVzcy4gIEhvd2V2ZXIsIHRoZSBzaWRlIGVmZmVjdHMgZG9uJ3QgY2hhbmdlIHRoZSBwcmVmaXggb2YgW3QuY2FsbGJhY2tzXSB0aGF0XG4gICAgICAgd3JpdGUgdXNlczsgdGhleSBvbmx5IGNoYW5nZSBbdC5jYWxsYmFja3NdIGJleW9uZCB0aGF0IHByZWZpeC4gIEFuZCBhbGwgd3JpdGVzXG4gICAgICAgZXh0cmFjdCBbdC5udW1fc3Vic2NyaWJlcnNdIGF0IHRoZSBzdGFydCwgc28gdGhhdCB0aGV5IHdpbGwgbm90IHNlZSBhbnkgc3Vic2VxdWVudFxuICAgICAgIGNoYW5nZXMgdG8gaXQuICopXG4gICAgbGV0IHN1YnNjcmliZXIgPVxuICAgICAgU3Vic2NyaWJlci5jcmVhdGVcbiAgICAgICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgICAgIH5idXNfaWQ6dC5idXNfaWRcbiAgICAgICAgfmNhbGxiYWNrXG4gICAgICAgIH5leHRyYWN0X2V4blxuICAgICAgICB+c3Vic2NyaWJlcnNfaW5kZXg6dC5udW1fc3Vic2NyaWJlcnNcbiAgICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlXG4gICAgICAgIH5vbl9jbG9zZVxuICAgIGluXG4gICAgaWYgY2FwYWNpdHkgdCA9IHQubnVtX3N1YnNjcmliZXJzIHRoZW4gZW5sYXJnZV9jYXBhY2l0eSB0O1xuICAgIGFkZF9zdWJzY3JpYmVyIHQgc3Vic2NyaWJlciB+YXRfc3Vic2NyaWJlcnNfaW5kZXg6dC5udW1fc3Vic2NyaWJlcnM7XG4gICAgdC5udW1fc3Vic2NyaWJlcnMgPC0gdC5udW1fc3Vic2NyaWJlcnMgKyAxO1xuICAgIChtYXRjaCB0Lmxhc3RfdmFsdWUgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGxhc3RfdmFsdWUgLT4gTGFzdF92YWx1ZS5zZW5kIGxhc3RfdmFsdWUgY2FsbGJhY2spO1xuICAgIHN1YnNjcmliZXJcbjs7XG5cbmxldCBpdGVyX2V4biA/ZXh0cmFjdF9leG4gdCBzdWJzY3JpYmVkX2Zyb20gfmYgPVxuICBpZiBub3QgKGNhbl9zdWJzY3JpYmUgdClcbiAgdGhlblxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQnVzLml0ZXJfZXhuIGNhbGxlZCBhZnRlciBmaXJzdCB3cml0ZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlnbm9yZSAoc3Vic2NyaWJlX2V4biA/ZXh0cmFjdF9leG4gdCBzdWJzY3JpYmVkX2Zyb20gfmYgOiBfIFN1YnNjcmliZXIudClcbjs7XG5cbm1vZHVsZSBGb2xkX2FyaXR5ID0gc3RydWN0XG4gIHR5cGUgKF8sIF8sIF8pIHQgPVxuICAgIHwgQXJpdHkxIDogKCdhIC0+IHVuaXQsICdzIC0+ICdhIC0+ICdzLCAncykgdFxuICAgIHwgQXJpdHkyIDogKCdhIC0+ICdiIC0+IHVuaXQsICdzIC0+ICdhIC0+ICdiIC0+ICdzLCAncykgdFxuICAgIHwgQXJpdHkzIDogKCdhIC0+ICdiIC0+ICdjIC0+IHVuaXQsICdzIC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdzLCAncykgdFxuICAgIHwgQXJpdHk0IDogKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IHVuaXQsICdzIC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdzLCAncykgdFxuICAgIHwgQXJpdHk1XG4gICAgICA6ICggJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gdW5pdFxuICAgICAgICAsICdzIC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+ICdzXG4gICAgICAgICwgJ3MgKVxuICAgICAgICAgIHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgZm9sZF9leG5cbiAgICAgID9leHRyYWN0X2V4blxuICAgICAgKHR5cGUgYyBmIHMpXG4gICAgICAodCA6IChjLCBfKSB0KVxuICAgICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgICAoZm9sZF9hcml0eSA6IChjLCBmLCBzKSBGb2xkX2FyaXR5LnQpXG4gICAgICB+KGluaXQgOiBzKVxuICAgICAgfihmIDogZilcbiAgPVxuICBsZXQgc3RhdGUgPSByZWYgaW5pdCBpblxuICBpZiBub3QgKGNhbl9zdWJzY3JpYmUgdClcbiAgdGhlblxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQnVzLmZvbGRfZXhuIGNhbGxlZCBhZnRlciBmaXJzdCB3cml0ZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGl0ZXJfZXhuXG4gICAgP2V4dHJhY3RfZXhuXG4gICAgdFxuICAgIHN1YnNjcmliZWRfZnJvbVxuICAgIH5mOlxuICAgICAgKG1hdGNoIGZvbGRfYXJpdHkgd2l0aFxuICAgICAgIHwgQXJpdHkxIC0+IGZ1biBhMSAtPiBzdGF0ZSA6PSBmICFzdGF0ZSBhMVxuICAgICAgIHwgQXJpdHkyIC0+IGZ1biBhMSBhMiAtPiBzdGF0ZSA6PSBmICFzdGF0ZSBhMSBhMlxuICAgICAgIHwgQXJpdHkzIC0+IGZ1biBhMSBhMiBhMyAtPiBzdGF0ZSA6PSBmICFzdGF0ZSBhMSBhMiBhM1xuICAgICAgIHwgQXJpdHk0IC0+IGZ1biBhMSBhMiBhMyBhNCAtPiBzdGF0ZSA6PSBmICFzdGF0ZSBhMSBhMiBhMyBhNFxuICAgICAgIHwgQXJpdHk1IC0+IGZ1biBhMSBhMiBhMyBhNCBhNSAtPiBzdGF0ZSA6PSBmICFzdGF0ZSBhMSBhMiBhMyBhNCBhNSlcbjs7XG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQgYXNzZXJ0X25vX2FsbG9jYXRpb24gYnVzIGNhbGxiYWNrIHdyaXRlID1cbiAgICAgIGxldCBidXNfciA9IHJlYWRfb25seSBidXMgaW5cbiAgICAgIGlnbm9yZSAoc3Vic2NyaWJlX2V4biBidXNfciBbJWhlcmVdIH5mOmNhbGxiYWNrIDogXyBTdWJzY3JpYmVyLnQpO1xuICAgICAgbGV0IHN0YXJ0aW5nX21pbm9yX3dvcmRzID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgICAgIGxldCBzdGFydGluZ19tYWpvcl93b3JkcyA9IEdjLm1ham9yX3dvcmRzICgpIGluXG4gICAgICB3cml0ZSAoKTtcbiAgICAgIGxldCBlbmRpbmdfbWlub3Jfd29yZHMgPSBHYy5taW5vcl93b3JkcyAoKSBpblxuICAgICAgbGV0IGVuZGluZ19tYWpvcl93b3JkcyA9IEdjLm1ham9yX3dvcmRzICgpIGluXG4gICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdIChlbmRpbmdfbWlub3Jfd29yZHMgLSBzdGFydGluZ19taW5vcl93b3JkcykgfmV4cGVjdDowO1xuICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAoZW5kaW5nX21ham9yX3dvcmRzIC0gc3RhcnRpbmdfbWFqb3Jfd29yZHMpIH5leHBlY3Q6MFxuICAgIDs7XG5cbiAgICAoKiBUaGlzIHRlc3Qgb25seSB3b3JrcyB3aGVuIFt3cml0ZV0gaXMgcHJvcGVybHkgaW5saW5lZC4gIEl0IGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0XG4gICAgICAgW3dyaXRlXSBuZXZlciBhbGxvY2F0ZXMgaW4gYW55IHNpdHVhdGlvbi4gIEZvciBleGFtcGxlLCBpZiB0aGlzIHRlc3QgaXMgbW92ZWQgdG9cbiAgICAgICBhbm90aGVyIGxpYnJhcnkgYW5kIHJ1biB3aXRoIFhfTElCUkFSWV9JTkxJTklORz1mYWxzZSwgaXQgZmFpbHMuICopXG4gICAgbGV0JXRlc3RfdW5pdCBcIndyaXRlIGRvZXNuJ3QgYWxsb2NhdGUgd2hlbiBpbmxpbmVkXCIgPVxuICAgICAgbGV0IGNyZWF0ZSBjcmVhdGVkX2Zyb20gYXJpdHkgPVxuICAgICAgICBjcmVhdGVfZXhuXG4gICAgICAgICAgY3JlYXRlZF9mcm9tXG4gICAgICAgICAgYXJpdHlcbiAgICAgICAgICB+b25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlOlJhaXNlXG4gICAgICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlOkVycm9yLnJhaXNlXG4gICAgICBpblxuICAgICAgbGV0IGJ1czEgPSBjcmVhdGUgWyVoZXJlXSBBcml0eTEgaW5cbiAgICAgIGxldCBidXMyID0gY3JlYXRlIFslaGVyZV0gQXJpdHkyIGluXG4gICAgICBsZXQgYnVzMyA9IGNyZWF0ZSBbJWhlcmVdIEFyaXR5MyBpblxuICAgICAgbGV0IGJ1czQgPSBjcmVhdGUgWyVoZXJlXSBBcml0eTQgaW5cbiAgICAgIGxldCBidXM1ID0gY3JlYXRlIFslaGVyZV0gQXJpdHk1IGluXG4gICAgICBhc3NlcnRfbm9fYWxsb2NhdGlvbiBidXMxIChmdW4gKCkgLT4gKCkpIChmdW4gKCkgLT4gd3JpdGUgYnVzMSAoKSk7XG4gICAgICBhc3NlcnRfbm9fYWxsb2NhdGlvbiBidXMyIChmdW4gKCkgKCkgLT4gKCkpIChmdW4gKCkgLT4gd3JpdGUyIGJ1czIgKCkgKCkpO1xuICAgICAgYXNzZXJ0X25vX2FsbG9jYXRpb24gYnVzMyAoZnVuICgpICgpICgpIC0+ICgpKSAoZnVuICgpIC0+IHdyaXRlMyBidXMzICgpICgpICgpKTtcbiAgICAgIGFzc2VydF9ub19hbGxvY2F0aW9uXG4gICAgICAgIGJ1czRcbiAgICAgICAgKGZ1biAoKSAoKSAoKSAoKSAtPiAoKSlcbiAgICAgICAgKGZ1biAoKSAtPiB3cml0ZTQgYnVzNCAoKSAoKSAoKSAoKSk7XG4gICAgICBhc3NlcnRfbm9fYWxsb2NhdGlvblxuICAgICAgICBidXM1XG4gICAgICAgIChmdW4gKCkgKCkgKCkgKCkgKCkgLT4gKCkpXG4gICAgICAgIChmdW4gKCkgLT4gd3JpdGU1IGJ1czUgKCkgKCkgKCkgKCkgKCkpXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxub3BlbiEgQXN5bmNfa2VybmVsX3JlcXVpcmVfZXhwbGljaXRfdGltZV9zb3VyY2VcbmluY2x1ZGUgUGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbF9pbnRmXG5cbigqIFRoaXMgcG9zaXRpb24gc2hvd3MgdXAgaW4gdGVzdHMgaW4gYSB3YXkgdGhhdCBpcyBkaWZmaWN1bHQgdG8gc3VwcHJlc3MsIHNvIHdlIGRlZmluZSBpdFxuICAgaGVyZSBpbiBhIHBsYWNlIHRoYXQgaXMgdW5saWtlbHkgdG8gY2hhbmdlIHZlcnkgb2Z0ZW4gKilcbmxldCBkdW1teV9zcmNfcG9zX3RoYXRfc2hvd3NfdXBfaW5fdGVzdHMgPSBbJWhlcmVdXG5cbm1vZHVsZSBNYWtlIChDb25uIDogQ2xvc2FibGUpID0gc3RydWN0XG4gIG1vZHVsZSBDb25uID0gc3RydWN0XG4gICAgaW5jbHVkZSBDb25uXG5cbiAgICBsZXQgc2V4cF9vZl90IChfIDogdCkgOiBTZXhwLnQgPSBBdG9tIFwiPENvbm4udD5cIlxuICBlbmRcblxuICB0eXBlIGNvbm4gPSBDb25uLnRcblxuICBtb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhZGRyZXNzIHQgPVxuICAgICAgfCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3RcbiAgICAgIHwgT2J0YWluZWRfYWRkcmVzcyBvZiAnYWRkcmVzc1xuICAgICAgfCBGYWlsZWRfdG9fY29ubmVjdCBvZiBFcnJvci50XG4gICAgICB8IENvbm5lY3RlZCBvZiAoY29ubltAc2V4cC5vcGFxdWVdKVxuICAgICAgfCBEaXNjb25uZWN0ZWRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdHlwZSAnYWRkcmVzcyBldmVudCA9ICdhZGRyZXNzIHRcblxuICAgIG1vZHVsZSBIYW5kbGVyID0gc3RydWN0XG4gICAgICB0eXBlICdhZGRyZXNzIHQgPVxuICAgICAgICB7IHNlcnZlcl9uYW1lIDogc3RyaW5nXG4gICAgICAgIDsgb25fZXZlbnQgOiAnYWRkcmVzcyBldmVudCAtPiB1bml0IERlZmVycmVkLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIGxldCBsb2dfbGV2ZWwgPSBmdW5jdGlvblxuICAgICAgfCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3QgfCBDb25uZWN0ZWQgXyB8IERpc2Nvbm5lY3RlZCB8IE9idGFpbmVkX2FkZHJlc3MgXyAtPiBgSW5mb1xuICAgICAgfCBGYWlsZWRfdG9fY29ubmVjdCBfIC0+IGBFcnJvclxuICAgIDs7XG5cbiAgICBsZXQgaGFuZGxlIHQgeyBIYW5kbGVyLnNlcnZlcl9uYW1lID0gXzsgb25fZXZlbnQgfSA9IG9uX2V2ZW50IHRcbiAgZW5kXG5cbiAgKCogQSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gdGhhdCBpcyBwb2x5bW9ycGhpYyBpbiB0aGUgYWRkcmVzcyB0eXBlLiAgV2UgaGlkZSBhd2F5IHRoaXNcbiAgICAgdHlwZSBsYXRlciBzaW5jZSBpdCBvbmx5IGFwcGVhcnMgaW4gdGhlIHR5cGUgb2YgW2NyZWF0ZV0uICopXG4gIG1vZHVsZSBQb2x5ID0gc3RydWN0XG4gICAgdHlwZSAnYWRkcmVzcyB0ID1cbiAgICAgIHsgZ2V0X2FkZHJlc3MgOiB1bml0IC0+ICdhZGRyZXNzIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgICAgOyBjb25uZWN0IDogJ2FkZHJlc3MgLT4gQ29ubi50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgICAgOyByZXRyeV9kZWxheSA6IHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50XG4gICAgICA7IG11dGFibGUgY29ubiA6IFsgYE9rIG9mIENvbm4udCB8IGBDbG9zZV9zdGFydGVkIF0gSXZhci50XG4gICAgICA7IG11dGFibGUgbmV4dF9jb25uZWN0X3Jlc3VsdCA6IENvbm4udCBPcl9lcnJvci50IEl2YXIudFxuICAgICAgOyBldmVudF9oYW5kbGVyIDogJ2FkZHJlc3MgRXZlbnQuSGFuZGxlci50XG4gICAgICA7IGV2ZW50X2J1cyA6ICh1bml0IEV2ZW50LnQgLT4gdW5pdCwgcmVhZF93cml0ZSkgQnVzLnRcbiAgICAgIDsgY2xvc2Vfc3RhcnRlZCA6IHVuaXQgSXZhci50XG4gICAgICA7IGNsb3NlX2ZpbmlzaGVkIDogdW5pdCBJdmFyLnRcbiAgICAgIDsgZG9uJ3RfcmVjb25uZWN0IDogdW5pdCBJdmFyLnRcbiAgICAgIDsgYWRkcmVzc19lcXVhbCA6ICdhZGRyZXNzIC0+ICdhZGRyZXNzIC0+IGJvb2xcbiAgICAgIDsgc2V4cF9vZl9hZGRyZXNzIDogJ2FkZHJlc3MgLT4gU2V4cC50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IHNlcnZlcl9uYW1lIHQgPSB0LmV2ZW50X2hhbmRsZXIuc2VydmVyX25hbWVcblxuICAgIGxldCBoYW5kbGVfZXZlbnQgKHR5cGUgYWRkcmVzcykgdCAoZXZlbnQgOiBhZGRyZXNzIEV2ZW50LnQpID1cbiAgICAgIEJ1cy53cml0ZVxuICAgICAgICB0LmV2ZW50X2J1c1xuICAgICAgICAobWF0Y2ggZXZlbnQgd2l0aFxuICAgICAgICAgfCBPYnRhaW5lZF9hZGRyZXNzIChfIDogYWRkcmVzcykgLT4gT2J0YWluZWRfYWRkcmVzcyAoKVxuICAgICAgICAgfCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3QgLT4gQXR0ZW1wdGluZ190b19jb25uZWN0XG4gICAgICAgICB8IEZhaWxlZF90b19jb25uZWN0IGUgLT4gRmFpbGVkX3RvX2Nvbm5lY3QgZVxuICAgICAgICAgfCBDb25uZWN0ZWQgY29ubiAtPiBDb25uZWN0ZWQgY29ublxuICAgICAgICAgfCBEaXNjb25uZWN0ZWQgLT4gRGlzY29ubmVjdGVkKTtcbiAgICAgIEV2ZW50LmhhbmRsZSBldmVudCB0LmV2ZW50X2hhbmRsZXJcbiAgICA7O1xuXG4gICAgKCogVGhpcyBmdW5jdGlvbiBmb2N1c2VzIGluIG9uIHRoZSB0aGUgZXJyb3IgaXRzZWxmLCBkaXNjYXJkaW5nIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoXG4gICAgICAgbW9uaXRvciBjYXVnaHQgdGhlIGVycm9yLCBpZiBhbnkuXG5cbiAgICAgICBJZiB3ZSBkb24ndCBkbyB0aGlzLCB3ZSBzb21ldGltZXMgZW5kIHVwIHdpdGggbm9pc3kgbG9ncyB3aGljaCByZXBvcnQgdGhlIHNhbWUgZXJyb3JcbiAgICAgICBhZ2FpbiBhbmQgYWdhaW4sIGRpZmZlcmluZyBvbmx5IGFzIHRvIHdoYXQgbW9uaXRvciBjYXVnaHQgdGhlbS4gKilcbiAgICBsZXQgc2FtZV9lcnJvciBlMSBlMiA9XG4gICAgICBsZXQgdG9fc2V4cCBlID0gRXhuLnNleHBfb2ZfdCAoTW9uaXRvci5leHRyYWN0X2V4biAoRXJyb3IudG9fZXhuIGUpKSBpblxuICAgICAgU2V4cC5lcXVhbCAodG9fc2V4cCBlMSkgKHRvX3NleHAgZTIpXG4gICAgOztcblxuICAgICgqIENvbnRpbnVlIHRyeWluZyB0byBjb25uZWN0IHVudGlsIHdlIGFyZSBhYmxlIHRvIGRvIHNvLCBpbiB3aGljaCBjYXNlIHdlIHJldHVybiBib3RoXG4gICAgICAgdGhlIG5ldyBjb25uZWN0aW9uIGFuZCBhIGRlZmVycmVkIHRoYXQgd2lsbCBiZWNvbWUgZGV0ZXJtaW5lZCBvbmNlIHdlIGFyZSByZWFkeSBmb3JcbiAgICAgICB0aGUgbmV4dCByZWNvbm5lY3Rpb24gYXR0ZW1wdC4gKilcbiAgICBsZXQgdHJ5X2Nvbm5lY3RpbmdfdW50aWxfc3VjY2Vzc2Z1bCB0ID1cbiAgICAgICgqIFdlIHRha2UgY2FyZSBub3QgdG8gc3BhbSBsb2dzIHdpdGggdGhlIHNhbWUgbWVzc2FnZSBvdmVyIGFuZCBvdmVyIGJ5IGNvbXBhcmluZ1xuICAgICAgICAgZWFjaCBsb2cgbWVzc2FnZSB0aGUgdGhlIHByZXZpb3VzIG9uZSBvZiB0aGUgc2FtZSB0eXBlLiAqKVxuICAgICAgbGV0IHByZXZpb3VzX2FkZHJlc3MgPSByZWYgTm9uZSBpblxuICAgICAgbGV0IHByZXZpb3VzX2Vycm9yID0gcmVmIE5vbmUgaW5cbiAgICAgIGxldCBjb25uZWN0ICgpID1cbiAgICAgICAgdC5nZXRfYWRkcmVzcyAoKVxuICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCBFcnJvciBlIC0+IHJldHVybiAoRXJyb3IgZSlcbiAgICAgICAgfCBPayBhZGRyIC0+XG4gICAgICAgICAgbGV0IHNhbWVfYXNfcHJldmlvdXNfYWRkcmVzcyA9XG4gICAgICAgICAgICBtYXRjaCAhcHJldmlvdXNfYWRkcmVzcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSBwcmV2aW91c19hZGRyZXNzIC0+IHQuYWRkcmVzc19lcXVhbCBhZGRyIHByZXZpb3VzX2FkZHJlc3NcbiAgICAgICAgICBpblxuICAgICAgICAgIHByZXZpb3VzX2FkZHJlc3MgOj0gU29tZSBhZGRyO1xuICAgICAgICAgIChpZiBzYW1lX2FzX3ByZXZpb3VzX2FkZHJlc3NcbiAgICAgICAgICAgdGhlbiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgIGVsc2UgaGFuZGxlX2V2ZW50IHQgKE9idGFpbmVkX2FkZHJlc3MgYWRkcikpXG4gICAgICAgICAgPj49IGZ1biAoKSAtPiB0LmNvbm5lY3QgYWRkclxuICAgICAgaW5cbiAgICAgIGxldCBjb25uZWN0ICgpID1cbiAgICAgICAgKCogQ2F0Y2ggZXhjZXB0aW9ucyByYWlzZWQgYnkgdGhlIHVzZXItcHJvdmlkZWQgW3QuZ2V0X2FkZHJlc3NdIG9yIFt0LmNvbm5lY3RdICopXG4gICAgICAgIERlZmVycmVkLk9yX2Vycm9yLnRyeV93aXRoX2pvaW4gfmV4dHJhY3RfZXhuOmFtX3J1bm5pbmdfdGVzdCBjb25uZWN0XG4gICAgICBpblxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBJdmFyLmZpbGwgdC5jb25uIGBDbG9zZV9zdGFydGVkO1xuICAgICAgICAgIHJldHVybiBgQ2xvc2Vfc3RhcnRlZClcbiAgICAgICAgZWxzZSBpZiBJdmFyLmlzX2Z1bGwgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgdGhlbiByZXR1cm4gYERvbid0X3JlY29ubmVjdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZyA9IHQucmV0cnlfZGVsYXkgKCkgaW5cbiAgICAgICAgICBsZXQlYmluZCBjb25uZWN0X3Jlc3VsdCA9IGNvbm5lY3QgKCkgaW5cbiAgICAgICAgICBJdmFyLmZpbGwgdC5uZXh0X2Nvbm5lY3RfcmVzdWx0IGNvbm5lY3RfcmVzdWx0O1xuICAgICAgICAgIHQubmV4dF9jb25uZWN0X3Jlc3VsdCA8LSBJdmFyLmNyZWF0ZSAoKTtcbiAgICAgICAgICBtYXRjaCBjb25uZWN0X3Jlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayBjb25uIC0+XG4gICAgICAgICAgICBJdmFyLmZpbGwgdC5jb25uIChgT2sgY29ubik7XG4gICAgICAgICAgICByZXR1cm4gKGBPayAoY29ubiwgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZykpXG4gICAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICAgIGxldCBzYW1lX2FzX3ByZXZpb3VzX2Vycm9yID1cbiAgICAgICAgICAgICAgbWF0Y2ggIXByZXZpb3VzX2Vycm9yIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgICAgIHwgU29tZSBwcmV2aW91c19lcnIgLT4gc2FtZV9lcnJvciBlcnIgcHJldmlvdXNfZXJyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcHJldmlvdXNfZXJyb3IgOj0gU29tZSBlcnI7XG4gICAgICAgICAgICAoaWYgc2FtZV9hc19wcmV2aW91c19lcnJvclxuICAgICAgICAgICAgIHRoZW4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICAgIGVsc2UgaGFuZGxlX2V2ZW50IHQgKEZhaWxlZF90b19jb25uZWN0IGVycikpXG4gICAgICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICBEZWZlcnJlZC5hbnlcbiAgICAgICAgICAgICAgWyByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICA+Pj0gZnVuICgpIC0+IGxvb3AgKCkpXG4gICAgICBpblxuICAgICAgbG9vcCAoKVxuICAgIDs7XG5cbiAgICBsZXQgYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0aXZlX2Nvbm5lY3Rpb24gdCA9XG4gICAgICBJdmFyLmZpbGwgdC5jbG9zZV9zdGFydGVkICgpO1xuICAgICAgSXZhci5maWxsIHQuY2xvc2VfZmluaXNoZWQgKCk7XG4gICAgICBJdmFyLmZpbGwgdC5jb25uIGBDbG9zZV9zdGFydGVkXG4gICAgOztcblxuICAgIGxldCBjcmVhdGVcbiAgICAgICAgICAodHlwZSBhZGRyZXNzKVxuICAgICAgICAgIH5zZXJ2ZXJfbmFtZVxuICAgICAgICAgID8ob25fZXZlbnQgPSBmdW4gXyAtPiBEZWZlcnJlZC51bml0KVxuICAgICAgICAgID9yZXRyeV9kZWxheVxuICAgICAgICAgID8ocmFuZG9tX3N0YXRlID0gYFN0YXRlIFJhbmRvbS5TdGF0ZS5kZWZhdWx0KVxuICAgICAgICAgID8odGltZV9zb3VyY2UgPSBUaW1lX3NvdXJjZS53YWxsX2Nsb2NrICgpKVxuICAgICAgICAgIH5jb25uZWN0XG4gICAgICAgICAgfmFkZHJlc3M6KG1vZHVsZSBBZGRyZXNzIDogQWRkcmVzcyB3aXRoIHR5cGUgdCA9IGFkZHJlc3MpXG4gICAgICAgICAgZ2V0X2FkZHJlc3NcbiAgICAgID1cbiAgICAgIGxldCBldmVudF9oYW5kbGVyID0geyBFdmVudC5IYW5kbGVyLnNlcnZlcl9uYW1lOyBvbl9ldmVudCB9IGluXG4gICAgICBsZXQgZGVmYXVsdF9yZXRyeV9kZWxheSA9XG4gICAgICAgIEZuLmNvbnN0IChUaW1lX25zLlNwYW4ub2Zfc2VjIChpZiBhbV9ydW5uaW5nX3Rlc3QgdGhlbiAwLjEgZWxzZSAxMC4pKVxuICAgICAgaW5cbiAgICAgIGxldCBub25fcmFuZG9taXplZF9kZWxheSA9IE9wdGlvbi52YWx1ZSByZXRyeV9kZWxheSB+ZGVmYXVsdDpkZWZhdWx0X3JldHJ5X2RlbGF5IGluXG4gICAgICBsZXQgcmV0cnlfZGVsYXlfc3BhbiA9XG4gICAgICAgIG1hdGNoIHJhbmRvbV9zdGF0ZSB3aXRoXG4gICAgICAgIHwgYE5vbl9yYW5kb20gLT4gbm9uX3JhbmRvbWl6ZWRfZGVsYXlcbiAgICAgICAgfCBgU3RhdGUgcmFuZG9tX3N0YXRlIC0+XG4gICAgICAgICAgZnVuICgpIC0+XG4gICAgICAgICAgICBsZXQgc3BhbiA9IG5vbl9yYW5kb21pemVkX2RlbGF5ICgpIGluXG4gICAgICAgICAgICBsZXQgc3BhbiA9IFRpbWVfbnMuU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICAgICAgbGV0IGRpc3RhbmNlID0gUmFuZG9tLlN0YXRlLmZsb2F0IHJhbmRvbV9zdGF0ZSAoc3BhbiAqLiAwLjMpIGluXG4gICAgICAgICAgICBsZXQgd2FpdCA9XG4gICAgICAgICAgICAgIGlmIFJhbmRvbS5TdGF0ZS5ib29sIHJhbmRvbV9zdGF0ZVxuICAgICAgICAgICAgICB0aGVuIHNwYW4gKy4gZGlzdGFuY2VcbiAgICAgICAgICAgICAgZWxzZSBzcGFuIC0uIGRpc3RhbmNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgVGltZV9ucy5TcGFuLm9mX3NlYyB3YWl0XG4gICAgICBpblxuICAgICAgbGV0IHJldHJ5X2RlbGF5ICgpID0gVGltZV9zb3VyY2UuYWZ0ZXIgdGltZV9zb3VyY2UgKHJldHJ5X2RlbGF5X3NwYW4gKCkpIGluXG4gICAgICBsZXQgdCA9XG4gICAgICAgIHsgZXZlbnRfaGFuZGxlclxuICAgICAgICA7IGV2ZW50X2J1cyA9XG4gICAgICAgICAgICBCdXMuY3JlYXRlX2V4blxuICAgICAgICAgICAgICAoaWYgYW1fcnVubmluZ190ZXN0IHRoZW4gZHVtbXlfc3JjX3Bvc190aGF0X3Nob3dzX3VwX2luX3Rlc3RzIGVsc2UgWyVoZXJlXSlcbiAgICAgICAgICAgICAgQXJpdHkxXG4gICAgICAgICAgICAgIH5vbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGU6QWxsb3dfYW5kX3NlbmRfbGFzdF92YWx1ZVxuICAgICAgICAgICAgICB+b25fY2FsbGJhY2tfcmFpc2U6aWdub3JlXG4gICAgICAgIDsgZ2V0X2FkZHJlc3NcbiAgICAgICAgOyBjb25uZWN0XG4gICAgICAgIDsgbmV4dF9jb25uZWN0X3Jlc3VsdCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgIDsgcmV0cnlfZGVsYXlcbiAgICAgICAgOyBjb25uID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBjbG9zZV9zdGFydGVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBjbG9zZV9maW5pc2hlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgIDsgZG9uJ3RfcmVjb25uZWN0ID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBhZGRyZXNzX2VxdWFsID0gQWRkcmVzcy5lcXVhbFxuICAgICAgICA7IHNleHBfb2ZfYWRkcmVzcyA9IEFkZHJlc3Muc2V4cF9vZl90XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICAoKiB0aGlzIGxvb3AgZmluaXNoZXMgb25jZSBbY2xvc2UgdF0gaGFzIGJlZW4gY2FsbGVkLCBpbiB3aGljaCBjYXNlIGl0IG1ha2VzIHN1cmUgdG9cbiAgICAgICAgIGxlYXZlIFt0LmNvbm5dIGZpbGxlZCB3aXRoIFtgQ2xvc2Vfc3RhcnRlZF0uICopXG4gICAgICBkb24ndF93YWl0X2ZvclxuICAgICAgQEAgRGVmZXJyZWQucmVwZWF0X3VudGlsX2ZpbmlzaGVkICgpIChmdW4gKCkgLT5cbiAgICAgICAgbGV0JWJpbmQgKCkgPSBoYW5kbGVfZXZlbnQgdCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3QgaW5cbiAgICAgICAgbWF0Y2glYmluZCB0cnlfY29ubmVjdGluZ191bnRpbF9zdWNjZXNzZnVsIHQgd2l0aFxuICAgICAgICB8IGBDbG9zZV9zdGFydGVkIC0+IHJldHVybiAoYEZpbmlzaGVkICgpKVxuICAgICAgICB8IGBEb24ndF9yZWNvbm5lY3QgLT5cbiAgICAgICAgICBhYm9ydF9yZWNvbm5lY3Rpbmdfd2l0aF9ub19hY3RpdmVfY29ubmVjdGlvbiB0O1xuICAgICAgICAgIHJldHVybiAoYEZpbmlzaGVkICgpKVxuICAgICAgICB8IGBPayAoY29ubiwgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZykgLT5cbiAgICAgICAgICBsZXQlYmluZCAoKSA9IGhhbmRsZV9ldmVudCB0IChDb25uZWN0ZWQgY29ubikgaW5cbiAgICAgICAgICBsZXQlYmluZCAoKSA9IENvbm4uY2xvc2VfZmluaXNoZWQgY29ubiBpblxuICAgICAgICAgIHQuY29ubiA8LSBJdmFyLmNyZWF0ZSAoKTtcbiAgICAgICAgICBsZXQlYmluZCAoKSA9IGhhbmRsZV9ldmVudCB0IERpc2Nvbm5lY3RlZCBpblxuICAgICAgICAgICgqIHdhaXRzIHVudGlsIFtyZXRyeV9kZWxheSAoKV0gdGltZSBoYXMgcGFzc2VkIHNpbmNlIHRoZSB0aW1lIGp1c3QgYmVmb3JlIHdlIGxhc3RcbiAgICAgICAgICAgICB0cmllZCB0byBjb25uZWN0IHJhdGhlciB0aGFuIHRoZSB0aW1lIHdlIG5vdGljZWQgYmVpbmcgZGlzY29ubmVjdGVkLCBzbyB0aGF0IGlmXG4gICAgICAgICAgICAgYSBsb25nLWxpdmVkIGNvbm5lY3Rpb24gZGllcywgd2Ugd2lsbCBhdHRlbXB0IHRvIHJlY29ubmVjdCBpbW1lZGlhdGVseS4gKilcbiAgICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICAgIERlZmVycmVkLmFueVxuICAgICAgICAgICAgICBbIHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmdcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuZG9uJ3RfcmVjb25uZWN0XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIEl2YXIuZmlsbCB0LmNvbm4gYENsb3NlX3N0YXJ0ZWQ7XG4gICAgICAgICAgICBgRmluaXNoZWQgKCkpXG4gICAgICAgICAgZWxzZSBpZiBJdmFyLmlzX2Z1bGwgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdGl2ZV9jb25uZWN0aW9uIHQ7XG4gICAgICAgICAgICBgRmluaXNoZWQgKCkpXG4gICAgICAgICAgZWxzZSBgUmVwZWF0ICgpKTtcbiAgICAgIHRcbiAgICA7O1xuXG4gICAgbGV0IGNvbm5lY3RlZCB0ID1cbiAgICAgICgqIFRha2UgY2FyZSBub3QgdG8gcmV0dXJuIGEgY29ubmVjdGlvbiB0aGF0IGlzIGtub3duIHRvIGJlIGNsb3NlZCBhdCB0aGUgdGltZVxuICAgICAgICAgW2Nvbm5lY3RlZF0gd2FzIGNhbGxlZC4gIFRoaXMgY291bGQgaGFwcGVuIGluIGNsaWVudCBjb2RlIHRoYXQgYmVoYXZlcyBsaWtlXG4gICAgICAgICB7W1xuICAgICAgICAgICBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjLmNvbm5lY3RlZCB0XG4gICAgICAgICAgID4+PSBmdW4gYzEgLT5cbiAgICAgICAgICAgLi4uXG4gICAgICAgICAgICAgUnBjLkNvbm5lY3Rpb24uY2xvc2VfZmluaXNoZWQgYzFcbiAgICAgICAgICAgKCogYXQgdGhpcyBwb2ludCB3ZSBhcmUgaW4gYSByYWNlIHdpdGggdGhlIHNhbWUgY2FsbCBpbnNpZGVcbiAgICAgICAgICAgICAgcGVyc2lzdGVudF9jbGllbnQubWwgKilcbiAgICAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjLmNvbm5lY3RlZCB0XG4gICAgICAgICAgICgqIGRlcGVuZGluZyBvbiBob3cgdGhlIHJhY2UgdHVybnMgb3V0LCB3ZSBkb24ndCB3YW50IHRvIGdldCBhIGNsb3NlZCBjb25uZWN0aW9uXG4gICAgICAgICAgICAgIGhlcmUgKilcbiAgICAgICAgICAgPj49IGZ1biBjMiAtPlxuICAgICAgICAgICAuLi5cbiAgICAgICAgIF19XG4gICAgICAgICBUaGlzIGRvZXNuJ3QgcmVtb3ZlIHRoZSByYWNlIGNvbmRpdGlvbiwgYnV0IGl0IG1ha2VzIGl0IGxlc3MgbGlrZWx5IHRvIGhhcHBlbi5cbiAgICAgICopXG4gICAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgICBsZXQgZCA9IEl2YXIucmVhZCB0LmNvbm4gaW5cbiAgICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgZFxuICAgICAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYENsb3NlX3N0YXJ0ZWQgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICAgICAgICAgIHwgYE9rIGNvbm4gLT4gcmV0dXJuIGNvbm4pXG4gICAgICAgIHwgU29tZSBgQ2xvc2Vfc3RhcnRlZCAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgICAgICB8IFNvbWUgKGBPayBjb25uKSAtPlxuICAgICAgICAgIGlmIENvbm4uaXNfY2xvc2VkIGNvbm5cbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAoKiBnaXZlIHRoZSByZWNvbm5lY3Rpb24gbG9vcCBhIGNoYW5jZSB0byBvdmVyd3JpdGUgdGhlIGl2YXIgKilcbiAgICAgICAgICAgIENvbm4uY2xvc2VfZmluaXNoZWQgY29ubiA+Pj0gbG9vcFxuICAgICAgICAgIGVsc2UgcmV0dXJuIGNvbm5cbiAgICAgIGluXG4gICAgICBsb29wICgpXG4gICAgOztcblxuICAgIGxldCBjdXJyZW50X2Nvbm5lY3Rpb24gdCA9XG4gICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChJdmFyLnJlYWQgdC5jb25uKSB3aXRoXG4gICAgICB8IE5vbmUgfCBTb21lIGBDbG9zZV9zdGFydGVkIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoYE9rIGNvbm4pIC0+IFNvbWUgY29ublxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2VfZmluaXNoZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlX2ZpbmlzaGVkXG4gICAgbGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuXG4gICAgbGV0IGNsb3NlIHQgPVxuICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgdGhlblxuICAgICAgICAoKiBBbm90aGVyIGNhbGwgdG8gY2xvc2UgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcy4gIFdhaXQgZm9yIGl0IHRvIGZpbmlzaC4gKilcbiAgICAgICAgY2xvc2VfZmluaXNoZWQgdFxuICAgICAgZWxzZSAoXG4gICAgICAgIEl2YXIuZmlsbCB0LmNsb3NlX3N0YXJ0ZWQgKCk7XG4gICAgICAgIEl2YXIucmVhZCB0LmNvbm5cbiAgICAgICAgPj49IGZ1biBjb25uX29wdCAtPlxuICAgICAgICAobWF0Y2ggY29ubl9vcHQgd2l0aFxuICAgICAgICAgfCBgQ2xvc2Vfc3RhcnRlZCAtPiBEZWZlcnJlZC51bml0XG4gICAgICAgICB8IGBPayBjb25uIC0+IENvbm4uY2xvc2UgY29ubilcbiAgICAgICAgPj58IGZ1biAoKSAtPiBJdmFyLmZpbGwgdC5jbG9zZV9maW5pc2hlZCAoKSlcbiAgICA7O1xuXG4gICAgbGV0IGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdF9jb25uZWN0aW9uX2Nsb3NlZCA9XG4gICAgICBPcl9lcnJvci5lcnJvcl9zIFslbWVzc2FnZSBcIlBlcnNpc3RlbnQgY29ubmVjdGlvbiBjbG9zZWRcIl1cbiAgICA7O1xuXG4gICAgbGV0IGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCB0ID1cbiAgICAgIGlmIGlzX2Nsb3NlZCB0XG4gICAgICB0aGVuIHJldHVybiBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3RfY29ubmVjdGlvbl9jbG9zZWRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBjdXJyZW50X2Nvbm5lY3Rpb24gdCB3aXRoXG4gICAgICAgIHwgU29tZSB4IHdoZW4gbm90IChDb25uLmlzX2Nsb3NlZCB4KSAtPiByZXR1cm4gKE9rIHgpXG4gICAgICAgIHwgU29tZSAoXyA6IENvbm4udCkgfCBOb25lIC0+XG4gICAgICAgICAgRGVmZXJyZWQuY2hvb3NlXG4gICAgICAgICAgICBbIGNob2ljZSAoSXZhci5yZWFkIHQuY2xvc2Vfc3RhcnRlZCkgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgIGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdF9jb25uZWN0aW9uX2Nsb3NlZClcbiAgICAgICAgICAgIDsgY2hvaWNlIChJdmFyLnJlYWQgdC5uZXh0X2Nvbm5lY3RfcmVzdWx0KSBGbi5pZFxuICAgICAgICAgICAgXSlcbiAgICA7O1xuXG4gICAgbGV0IGNsb3NlX3doZW5fY3VycmVudF9jb25uZWN0aW9uX2lzX2Nsb3NlZCB0ID1cbiAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSB0LmRvbid0X3JlY29ubmVjdCAoKVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgdCA9IFQgOiAnYWRkcmVzcyBQb2x5LnQgLT4gdCBbQEB1bmJveGVkXVxuXG4gIGxldCBzZXhwX29mX3QgKFQgdCkgPSBQb2x5LnNleHBfb2ZfdCB0LnNleHBfb2ZfYWRkcmVzcyB0XG5cbiAgbGV0IGNsb3NlX3doZW5fY3VycmVudF9jb25uZWN0aW9uX2lzX2Nsb3NlZCAoVCB0KSA9XG4gICAgUG9seS5jbG9zZV93aGVuX2N1cnJlbnRfY29ubmVjdGlvbl9pc19jbG9zZWQgdFxuICA7O1xuXG4gIGxldCBjbG9zZV9maW5pc2hlZCAoVCB0KSA9IFBvbHkuY2xvc2VfZmluaXNoZWQgdFxuICBsZXQgaXNfY2xvc2VkIChUIHQpID0gUG9seS5pc19jbG9zZWQgdFxuICBsZXQgZXZlbnRfYnVzIChUIHQpID0gQnVzLnJlYWRfb25seSB0LmV2ZW50X2J1c1xuICBsZXQgY2xvc2UgKFQgdCkgPSBQb2x5LmNsb3NlIHRcbiAgbGV0IHNlcnZlcl9uYW1lIChUIHQpID0gUG9seS5zZXJ2ZXJfbmFtZSB0XG4gIGxldCBjdXJyZW50X2Nvbm5lY3Rpb24gKFQgdCkgPSBQb2x5LmN1cnJlbnRfY29ubmVjdGlvbiB0XG4gIGxldCBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QgKFQgdCkgPSBQb2x5LmNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCB0XG4gIGxldCBjb25uZWN0ZWQgKFQgdCkgPSBQb2x5LmNvbm5lY3RlZCB0XG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICB+c2VydmVyX25hbWVcbiAgICAgICAgP29uX2V2ZW50XG4gICAgICAgID9yZXRyeV9kZWxheVxuICAgICAgICA/cmFuZG9tX3N0YXRlXG4gICAgICAgID90aW1lX3NvdXJjZVxuICAgICAgICB+Y29ubmVjdFxuICAgICAgICB+YWRkcmVzc1xuICAgICAgICBnZXRfYWRkcmVzc1xuICAgID1cbiAgICBUXG4gICAgICAoUG9seS5jcmVhdGVcbiAgICAgICAgIH5zZXJ2ZXJfbmFtZVxuICAgICAgICAgP29uX2V2ZW50XG4gICAgICAgICA/cmV0cnlfZGVsYXlcbiAgICAgICAgID9yYW5kb21fc3RhdGVcbiAgICAgICAgID90aW1lX3NvdXJjZVxuICAgICAgICAgfmNvbm5lY3RcbiAgICAgICAgIH5hZGRyZXNzXG4gICAgICAgICBnZXRfYWRkcmVzcylcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxuXG50eXBlIHQgPVxuICB8IEtyYlxuICB8IEtyYl90ZXN0X21vZGVcbiAgfCBScGNcbltAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cCwgYmluX2lvXVxuXG5sZXQgbWFnaWNfd29yZCA9IGZ1bmN0aW9uXG4gIHwgS3JiIC0+IFwiS1JCMlwiXG4gIHwgS3JiX3Rlc3RfbW9kZSAtPiBcIktCVFwiXG4gIHwgUnBjIC0+IFwiUlBDXCJcbjs7XG5cbmxldCBnZW5fbWFnaWNfbnVtYmVyIHdvcmQgPVxuICBTdHJpbmcudG9fbGlzdF9yZXYgd29yZFxuICB8PiBMaXN0LmZvbGQgfmluaXQ6MCB+ZjooZnVuIGFjYyBjIC0+IChhY2MgKiAyNTYpICsgQ2hhci50b19pbnQgYylcbjs7XG5cbmxldCBtYWdpY19udW1iZXIgdCA9IGdlbl9tYWdpY19udW1iZXIgKG1hZ2ljX3dvcmQgdClcbmxldCBieV9tYWdpY19udW1iZXIgPSBJbnQuTWFwLm9mX2FsaXN0X2V4biAoTGlzdC5tYXAgYWxsIH5mOihmdW4gcCAtPiBtYWdpY19udW1iZXIgcCwgcCkpXG5cbigqIFdlIG9uY2UgbWludGVkIGEgbmV3IG1hZ2ljIG51bWJlciBmb3IgS3JiIGluIG9yZGVyIHRvIGNoYW5nZSB0aGUgcHJvdG9jb2xcbiAgIG5lZ290aWF0aW9uLiAgTGV0J3MgYmUgY2FyZWZ1bCB0aGF0IHdlIGRvbid0IHJldXNlIHRoZSBvbGQgbWFnaWMgbnVtYmVyICopXG5sZXQgcmV0aXJlZF9rcmJfd29yZCA9IFwiS1JCXCJcblxuKCogRW5zdXJlIHRlc3RzIGJyZWFrIGlmIHRoZSBtYWdpYyBudW1iZXJzIGFyZSBjaGFuZ2VkICopXG5sZXQldGVzdF91bml0IFwibWFnaWMgbnVtYmVyc1wiID1cbiAgYXNzZXJ0IChnZW5fbWFnaWNfbnVtYmVyIHJldGlyZWRfa3JiX3dvcmQgPSA0XzM0Nl80NDMpO1xuICBhc3NlcnQgKG1hZ2ljX251bWJlciBLcmIgPSA4NDNfMjA3XzI0Myk7XG4gIGFzc2VydCAobWFnaWNfbnVtYmVyIEtyYl90ZXN0X21vZGUgPSA1XzUyMV85OTUpO1xuICBhc3NlcnQgKG1hZ2ljX251bWJlciBScGMgPSA0XzQxMV80NzQpXG47O1xuXG5tb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgbGV0IGFsbF9tYWdpY19udW1iZXJzX2luY2x1ZGluZ19yZXRpcmVkID1cbiAgICBsYXp5IChyZXRpcmVkX2tyYl93b3JkIDo6IExpc3QubWFwIGFsbCB+ZjptYWdpY193b3JkIHw+IExpc3QubWFwIH5mOmdlbl9tYWdpY19udW1iZXIpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbmluY2x1ZGUgTGlzdF93aXRoX21heF9sZW5faW50ZlxuXG5tb2R1bGUgTWFrZSAoQ29uZmlnIDogQ29uZmlnKSA9IHN0cnVjdFxuICBpbmNsdWRlIENvbmZpZ1xuXG4gIHR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBiaW5fd3JpdGVdXG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fID0gTGlzdC5fX2Jpbl9yZWFkX3RfX1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gICAgdHJ5IEJpbl9wcm90LlJlYWQuYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4gfm1heF9sZW4gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIHdpdGhcbiAgICB8IGV4biAtPiBFeG4ucmVyYWlzZSBleG4gKEluZm8udG9fc3RyaW5nX2h1bSBjb250ZXh0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgKGJpbl9yZWFkZXJfYSA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyKSA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90IGJpbl9yZWFkZXJfYS5yZWFkXG4gICAgOyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyX2EucmVhZFxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgKGJpbl9hIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy50KSA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNoYXBlID0gYmluX3NoYXBlX3QgYmluX2Euc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCBiaW5fYS53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCBiaW5fYS5yZWFkZXJcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3RfZXhuIGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgaWYgbGVuID4gbWF4X2xlblxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiTGlzdCBpcyB0b28gbGFyZ2VcIiAoY29udGV4dCA6IEluZm8udCkgKGxlbiA6IGludCkgKG1heF9sZW4gOiBpbnQpXTtcbiAgICBsXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA9IExpc3Quc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCB0X29mX2Egc2V4cCA9XG4gICAgbGV0IHQgPSBMaXN0LnRfb2Zfc2V4cCB0X29mX2Egc2V4cCBpblxuICAgIG9mX2xpc3RfZXhuIHRcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxubW9kdWxlIEtub3duX3Byb3RvY29sID0gS25vd25fcHJvdG9jb2xcblxubGV0IG1heF9zdXBwb3J0ZWRfdmVyc2lvbiA9IDFfMDAwXzAwMFxubGV0IG91dHNpZGVfbWF4X3N1cHBvcnRlZF92ZXJzaW9uX3JhbmdlIG51bSA9IG51bSA+IG1heF9zdXBwb3J0ZWRfdmVyc2lvblxuXG5tb2R1bGUgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlID1cbiAgTGlzdF93aXRoX21heF9sZW4uTWFrZSAoc3RydWN0XG4gICAgbGV0IG1heF9sZW4gPSAxMDBcbiAgICBsZXQgY29udGV4dCA9IEluZm8ub2Zfc3RyaW5nIFwiUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXJcIlxuICBlbmQpXG5cbnR5cGUgdCA9IGludCBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUudFxuW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG5sZXQga25vd25fcHJvdG9jb2xfbWFnaWNfbnVtYmVycyA9IGxhenkgKE1hcC5rZXlfc2V0IEtub3duX3Byb3RvY29sLmJ5X21hZ2ljX251bWJlcilcblxubGV0IGNyZWF0ZV9leG4gPyhhZGRpdGlvbmFsX21hZ2ljX251bWJlcnMgPSBbXSkgfnByb3RvY29sIH5zdXBwb3J0ZWRfdmVyc2lvbnMgKCkgPVxuICBsZXQgcHJvdG9jb2xfbWFnaWNfbnVtYmVyID0gS25vd25fcHJvdG9jb2wubWFnaWNfbnVtYmVyIHByb3RvY29sIGluXG4gIGlmIExpc3QuZXhpc3RzIHN1cHBvcnRlZF92ZXJzaW9ucyB+ZjpvdXRzaWRlX21heF9zdXBwb3J0ZWRfdmVyc2lvbl9yYW5nZVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVW5hYmxlIHRvIGFkdmVydGlzZSB2ZXJzaW9ucyBsYXJnZXIgdGhhbiBtYXggc3VwcG9ydGVkIHZlcnNpb25cIlxuICAgICAgICAgIChtYXhfc3VwcG9ydGVkX3ZlcnNpb24gOiBpbnQpXG4gICAgICAgICAgKHN1cHBvcnRlZF92ZXJzaW9ucyA6IGludCBsaXN0KV07XG4gIGlmIExpc3QuZXhpc3RzIGFkZGl0aW9uYWxfbWFnaWNfbnVtYmVycyB+ZjooRm4ubm9uIG91dHNpZGVfbWF4X3N1cHBvcnRlZF92ZXJzaW9uX3JhbmdlKVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW2FkZGl0aW9uYWxfbWFnaWNfbnVtYmVyc10gc2hvdWxkbid0IGJlIHdpdGhpbiBbbWF4X3N1cHBvcnRlZF92ZXJzaW9uXSByYW5nZVwiXG4gICAgICAgICAgKG1heF9zdXBwb3J0ZWRfdmVyc2lvbiA6IGludClcbiAgICAgICAgICAoYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIDogaW50IGxpc3QpXTtcbiAgaWYgTGlzdC5leGlzdHNcbiAgICAgICBhZGRpdGlvbmFsX21hZ2ljX251bWJlcnNcbiAgICAgICB+ZjooU2V0Lm1lbSAoZm9yY2Uga25vd25fcHJvdG9jb2xfbWFnaWNfbnVtYmVycykpXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbYWRkaXRpb25hbF9tYWdpY19udW1iZXJzXSBzaG91bGRuJ3QgYmUgb3ZlcmxhcHBpbmcgd2l0aCBwb3RlbnRpYWwgXFxcbiAgICAgICAgIFtwcm90b2NvbF9tYWdpY19udW1iZXJdc1wiXG4gICAgICAgICAgKGFkZGl0aW9uYWxfbWFnaWNfbnVtYmVycyA6IGludCBsaXN0KVxuICAgICAgICAgIH5rbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzOihmb3JjZSBrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzIDogSW50LlNldC50KV07XG4gIHByb3RvY29sX21hZ2ljX251bWJlciA6OiAoYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIEAgc3VwcG9ydGVkX3ZlcnNpb25zKVxuICB8PiBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUub2ZfbGlzdF9leG5cbjs7XG5cbmxldCByYXdfdmVyc2lvbl9saXN0ICh0IDogdCkgPSAodCA6PiBpbnQgbGlzdClcblxubGV0IGdldF9wcm90b2NvbCAodCA6IHQpID1cbiAgbGV0IHByb3RvY29scywgdmVyc2lvbnMsIF9hZGRpdGlvbmFsX21hZ2ljX251bWJlcnMgPVxuICAgIExpc3QucGFydGl0aW9uM19tYXBcbiAgICAgICh0IDo+IGludCBsaXN0KVxuICAgICAgfmY6KGZ1biB2IC0+XG4gICAgICAgIG1hdGNoIE1hcC5maW5kIEtub3duX3Byb3RvY29sLmJ5X21hZ2ljX251bWJlciB2IHdpdGhcbiAgICAgICAgfCBTb21lIHAgLT4gYEZzdCBwXG4gICAgICAgIHwgTm9uZSAtPiBpZiBvdXRzaWRlX21heF9zdXBwb3J0ZWRfdmVyc2lvbl9yYW5nZSB2IHRoZW4gYFRyZCB2IGVsc2UgYFNuZCB2KVxuICBpblxuICBtYXRjaCBwcm90b2NvbHMgd2l0aFxuICB8IFtdIC0+IE9rIChOb25lLCBJbnQuU2V0Lm9mX2xpc3QgdmVyc2lvbnMpXG4gIHwgWyBwIF0gLT4gT2sgKFNvbWUgcCwgSW50LlNldC5vZl9saXN0IHZlcnNpb25zKVxuICB8IF8gLT5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubmVnb3RpYXRlXTogbXVsdGlwbGUgbWFnaWMgbnVtYmVycyBzZWVuLlwiXG4gICAgICAgICAgKHByb3RvY29scyA6IEtub3duX3Byb3RvY29sLnQgbGlzdClcbiAgICAgICAgICAodmVyc2lvbnMgOiBpbnQgbGlzdCldXG47O1xuXG5sZXQgbmVnb3RpYXRlIH5hbGxvd19sZWdhY3lfcGVlciB+KHVzIDogdCkgfihwZWVyIDogdCkgPVxuICBsZXQgb3BlbiBPcl9lcnJvci5MZXRfc3ludGF4IGluXG4gIGxldCViaW5kIHVzX3Byb3RvY29sLCB1c192ZXJzaW9ucyA9IGdldF9wcm90b2NvbCB1cyBpblxuICBsZXQlYmluZCBwZWVyX3Byb3RvY29sLCBwZWVyX3ZlcnNpb25zID0gZ2V0X3Byb3RvY29sIHBlZXIgaW5cbiAgbGV0JWJpbmQgdXNfcHJvdG9jb2wgPVxuICAgIG1hdGNoIHVzX3Byb3RvY29sIHdpdGhcbiAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuICAgIHwgTm9uZSAtPiBlcnJvcl9zIFslbWVzc2FnZSBcIk5vIG1hZ2ljIG51bWJlcnMgc2VlblwiICh1c192ZXJzaW9ucyA6IEludC5TZXQudCldXG4gIGluXG4gIGxldCViaW5kIHBlZXJfcHJvdG9jb2wgPVxuICAgIG1hdGNoIHBlZXJfcHJvdG9jb2wgd2l0aFxuICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gICAgfCBOb25lIC0+XG4gICAgICAoKiB3ZSBhc3N1bWUgcGVlciBpcyBzcGVha2luZyBvdXIgcHJvdG9jb2wgaWYgW2FsbG93X2xlZ2FjeV9wZWVyXSAqKVxuICAgICAgaWYgYWxsb3dfbGVnYWN5X3BlZXJcbiAgICAgIHRoZW4gcmV0dXJuIHVzX3Byb3RvY29sXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHBlZXJfcHJvdG9jb2wgPSBgVW5rbm93biBpblxuICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBjb25mbGljdGluZyBtYWdpYyBwcm90b2NvbCBudW1iZXJzXCJcbiAgICAgICAgICAgICAgKHVzX3Byb3RvY29sIDogS25vd25fcHJvdG9jb2wudClcbiAgICAgICAgICAgICAgKHBlZXJfcHJvdG9jb2wgOiBbIGBVbmtub3duIF0pXSlcbiAgaW5cbiAgaWYgbm90IChbJWNvbXBhcmUuZXF1YWw6IEtub3duX3Byb3RvY29sLnRdIHVzX3Byb3RvY29sIHBlZXJfcHJvdG9jb2wpXG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubmVnb3RpYXRlXTogY29uZmxpY3RpbmcgbWFnaWMgcHJvdG9jb2wgbnVtYmVyc1wiXG4gICAgICAgICAgKHVzX3Byb3RvY29sIDogS25vd25fcHJvdG9jb2wudClcbiAgICAgICAgICAocGVlcl9wcm90b2NvbCA6IEtub3duX3Byb3RvY29sLnQpXVxuICBlbHNlIChcbiAgICBsZXQgcHJvdG9jb2wgPSB1c19wcm90b2NvbCBpblxuICAgIG1hdGNoIFNldC5tYXhfZWx0IChTZXQuaW50ZXIgdXNfdmVyc2lvbnMgcGVlcl92ZXJzaW9ucykgd2l0aFxuICAgIHwgU29tZSB2ZXJzaW9uIC0+IE9rIHZlcnNpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubmVnb3RpYXRlXTogbm8gc2hhcmVkIHZlcnNpb24gbnVtYmVyc1wiXG4gICAgICAgICAgICAodXNfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAocGVlcl92ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChwcm90b2NvbCA6IEtub3duX3Byb3RvY29sLnQpXSlcbjs7XG5cbmxldCBtYXRjaGVzX21hZ2ljX3ByZWZpeCAodCA6IHQpIH5wcm90b2NvbCA9XG4gIGxldCBtYWdpY19udW1iZXIgPSBLbm93bl9wcm90b2NvbC5tYWdpY19udW1iZXIgcHJvdG9jb2wgaW5cbiAgTGlzdC5tZW0gfmVxdWFsOkludC5lcXVhbCAocmF3X3ZlcnNpb25fbGlzdCB0KSBtYWdpY19udW1iZXJcbjs7XG5cbmxldCBjb250YWluc19tYWdpY19wcmVmaXggfnByb3RvY29sID1cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyIChtYXRjaGVzX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wpIGJpbl90LnJlYWRlclxuOztcblxubGV0IGFueV9tYWdpY19wcmVmaXggPVxuICBsZXQgZiB0ID1cbiAgICBMaXN0LmZpbmQgS25vd25fcHJvdG9jb2wuYWxsIH5mOihmdW4gcHJvdG9jb2wgLT4gbWF0Y2hlc19tYWdpY19wcmVmaXggfnByb3RvY29sIHQpXG4gIGluXG4gIEJpbl9wcm90LlR5cGVfY2xhc3MuY252X3JlYWRlciBmIGJpbl90LnJlYWRlclxuOztcblxubGV0IG1hZ2ljX251bWJlcl9iaW5fc2l6ZSA9IDVcblxubW9kdWxlIE1hZ2ljX3ByZWZpeF9iaW5fcmVwciA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBiaW5fd3JpdGVdXG5cbiAgKCogVGhlIGJpbiBwcm90IHJlcHJlc2VudGF0aW9uIG9mIGEgcHJvdG9jb2wgdmVyc2lvbiBoZWFkZXIgaXMgdGhlIHN0YW5kYXJkXG4gICAgIHJlcHJlc2VudGF0aW9uIGZvciBhbiBpbnQgbGlzdDpcblxuICAgICB8IG5hdDAgaW5kaWNhdGluZyBzaXplIHwgZWxlbWVudCAwIHwgZWxlbWVudCAxIHwgLi4uXG5cbiAgICAgW2NyZWF0ZV9leG5dIHdpbGwgYWx3YXlzIHB1dCB0aGUga25vd24gcHJvdG9jb2wgbWFnaWMgbnVtYmVyIGFzIFwiZWxlbWVudCAwXCIuXG5cbiAgICAgVGhlIGJpbiBzaXplIG9mIFwibmF0MCBpbmRpY2F0aW5nIHNpemVcIiBhbmQgXCJlbGVtZW50IDBcIiBpcyBmaXhlZCAodGhlcmUgYXJlIGV4cGVjdFxuICAgICB0ZXN0cyB0byBtYWtlIHN1cmUgd2UgbmV2ZXIgY2hhbmdlIHRoZW0pLiAqKVxuICBsZXQgYmluX3NpemUgPVxuICAgIGJpbl9zaXplX3QgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLm1heF9sZW5cbiAgICArIG1hZ2ljX251bWJlcl9iaW5fc2l6ZVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IChfbGlzdF9sZW5ndGggOiBCaW5fcHJvdC5OYXQwLnQpID0gQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiBpblxuICAgIEJpbl9wcm90LlJlYWQuYmluX3JlYWRfaW50IGJ1ZiB+cG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgPVxuICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gSW50Ll9fYmluX3JlYWRfdF9fIH1cbiAgOztcbmVuZFxuXG5sZXQgYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlcyA9XG4gIEJpbl9wcm90LlR5cGVfY2xhc3MuY252X3JlYWRlclxuICAgIChmdW4gbWFnaWNfbnVtYmVyIC0+IChNYXAuZmluZCBLbm93bl9wcm90b2NvbC5ieV9tYWdpY19udW1iZXIpIG1hZ2ljX251bWJlcilcbiAgICBNYWdpY19wcmVmaXhfYmluX3JlcHIuYmluX3JlYWRlcl90XG47O1xuXG5sZXQgYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlc19iaW5fc2l6ZSA9IE1hZ2ljX3ByZWZpeF9iaW5fcmVwci5iaW5fc2l6ZVxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCByYXdfdmVyc2lvbl9saXN0ID0gcmF3X3ZlcnNpb25fbGlzdFxuZW5kXG5cbm1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICBtb2R1bGUgTWFrZV9saXN0X3dpdGhfbWF4X2xlbiA9IExpc3Rfd2l0aF9tYXhfbGVuLk1ha2VcblxuICBsZXQgbWFnaWNfbnVtYmVyX2Jpbl9zaXplID0gbWFnaWNfbnVtYmVyX2Jpbl9zaXplXG4gIGxldCBtYXhfc3VwcG9ydGVkX3ZlcnNpb24gPSBtYXhfc3VwcG9ydGVkX3ZlcnNpb25cbmVuZFxuXG5sZXQldGVzdF91bml0IFwiYmluIHNpemVzIGFyZSBub3QgY2hhbmdlZCBieSBhY2NpZGVudFwiID1cbiAgKCogRW5zdXJlIHRoZSBiaW5fc2l6ZSBvZiBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICAgICBpcyBhbHdheXMgMS4gVGhpcyBtZWFucyB0aGF0IHJlZ2FyZGxlc3Mgb2YgaG93IGxvbmcgdGhlIGxpc3Qgb2YgdmVyc2lvbnMgaW4gdGhlXG4gICAgIHByb3RvY29sIGhlYWRlciBpcywgdGhlIHJlcHJlc2VudGF0aW9uIHdpbGwgYmUgdGhlIHNhbWUgbnVtYmVyIG9mIGJ5dGVzLiBUaGVcbiAgICAgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50IGp1bXBzIHRvIDMgYnl0ZXMgYXQgdGhlIHZhbHVlIDEyOC4gKilcbiAgbGV0IGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSA9XG4gICAgSW50LmJpbl9zaXplX3QgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLm1heF9sZW5cbiAgaW5cbiAgYXNzZXJ0IChib3VuZGVkX2xpc3RfYmluX3NpemUgPSAxKTtcbiAgYXNzZXJ0ICg2ID0gbWFnaWNfbnVtYmVyX2Jpbl9zaXplICsgYm91bmRlZF9saXN0X2Jpbl9zaXplKTtcbiAgYXNzZXJ0IChcbiAgICBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzX2Jpbl9zaXplXG4gICAgPSBtYWdpY19udW1iZXJfYmluX3NpemUgKyBib3VuZGVkX2xpc3RfYmluX3NpemUpXG47O1xuIiwidHlwZSB0ID0gQmluX3Byb3QuTmF0MC50XG5bQEBkZXJpdmluZyBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODk5ZTJmNGEtNDkwYS0xMWU2LWI2OGYtYmJkNjI0NzI1MTZjXCJdXG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICBbJWV4cGVjdCB7fCA1OTVmMmE2MGYxMTgxNmIyOWE3MmRkYWIxNzAwMmI1NiB8fV1cbjs7XG5cbmxldCBiaW5fdCA9IEJpbl9wcm90LlR5cGVfY2xhc3MuYmluX25hdDBcbmxldCBiaW5fc2l6ZV90ID0gQmluX3Byb3QuU2l6ZS5iaW5fc2l6ZV9uYXQwXG5sZXQgYmluX3dyaXRlcl90ID0gQmluX3Byb3QuVHlwZV9jbGFzcy5iaW5fd3JpdGVyX25hdDBcbmxldCBiaW5fd3JpdGVfdCA9IEJpbl9wcm90LldyaXRlLmJpbl93cml0ZV9uYXQwXG5sZXQgYmluX3JlYWRlcl90ID0gQmluX3Byb3QuVHlwZV9jbGFzcy5iaW5fcmVhZGVyX25hdDBcbmxldCBiaW5fcmVhZF90ID0gQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9uYXQwXG5cbmxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmIF92bmF0MCA9XG4gIEJpbl9wcm90LkNvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBvZl9pbnRfZXhuID0gQmluX3Byb3QuTmF0MC5vZl9pbnRcbiIsIm9wZW4gQ29yZVxub3BlbiBQb2x5XG5cbmxldCBvZl93cml0ZXIgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlOyBzaXplIH0gPVxuICBsZXQgd3JpdGUgYnVmIH5wb3MgYSA9XG4gICAgbGV0IGxlbiA9IE5hdDAub2ZfaW50X2V4biAoc2l6ZSBhKSBpblxuICAgIGxldCBwb3MgPSBOYXQwLmJpbl93cml0ZV90IGJ1ZiB+cG9zIGxlbiBpblxuICAgIHdyaXRlIGJ1ZiB+cG9zIGFcbiAgaW5cbiAgbGV0IHNpemUgYSA9XG4gICAgbGV0IGxlbiA9IE5hdDAub2ZfaW50X2V4biAoc2l6ZSBhKSBpblxuICAgIE5hdDAuYmluX3NpemVfdCBsZW4gKyAoKGxlbiA6IEJpbl9wcm90Lk5hdDAudCkgOj4gaW50KVxuICBpblxuICB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfVxuOztcblxubGV0IG9mX3R5cGVfY2xhc3MgKGJpbl9hIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnQpID0gb2Zfd3JpdGVyIGJpbl9hLndyaXRlclxuXG5sZXQldGVzdF9tb2R1bGUgXyA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0IGJpZ3N0cmluZ19iaW5fcHJvdCBzID1cbiAgICAgIGxldCBiaWdzdHJpbmcgPSBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCBCeXRlcy5iaW5fd3JpdGVyX3QgcyBpblxuICAgICAgQmluX3Byb3QuVXRpbHMuYmluX2R1bXAgQmlnc3RyaW5nLlN0YWJsZS5WMS5iaW5fd3JpdGVyX3QgYmlnc3RyaW5nXG4gICAgOztcblxuICAgIGxldCBiaW5fcHJvdF93aXRoX2xlbmd0aCBzID1cbiAgICAgIGxldCB3cml0ZXJfd2l0aF9sZW5ndGggPSBvZl93cml0ZXIgQnl0ZXMuYmluX3dyaXRlcl90IGluXG4gICAgICBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCB3cml0ZXJfd2l0aF9sZW5ndGggc1xuICAgIDs7XG5cbiAgICBsZXQgdGVzdCBsZW4gPVxuICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICBsZXQgYmlnc3RyaW5nX3ZlcnNpb24gPSBiaWdzdHJpbmdfYmluX3Byb3QgcyBpblxuICAgICAgbGV0IHdpdGhfbGVuZ3RoX3ZlcnNpb24gPSBiaW5fcHJvdF93aXRoX2xlbmd0aCBzIGluXG4gICAgICBpZiBCaWdzdHJpbmcudG9fc3RyaW5nIGJpZ3N0cmluZ192ZXJzaW9uIDw+IEJpZ3N0cmluZy50b19zdHJpbmcgd2l0aF9sZW5ndGhfdmVyc2lvblxuICAgICAgdGhlbiBmYWlsd2l0aGYgXCJtaXNtYXRjaCBmb3IgbGVuZ3RoICVkXCIgbGVuICgpXG4gICAgOztcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICBmb3IgbGVuID0gMCB0byBJbnQucG93IDIgMTAgZG9cbiAgICAgICAgdGVzdCBsZW5cbiAgICAgIGRvbmU7XG4gICAgICBmb3IgcG93ID0gMTAgdG8gMjAgZG9cbiAgICAgICAgbGV0IHggPSBJbnQucG93IDIgcG93IGluXG4gICAgICAgIHRlc3QgKHggLSAxKTtcbiAgICAgICAgdGVzdCB4O1xuICAgICAgICB0ZXN0ICh4ICsgMSlcbiAgICAgIGRvbmVcbiAgICA7O1xuICBlbmQpXG47O1xuIiwib3BlbiBDb3JlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyB2ZXJzaW9uIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBlcXVhbCwgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgIFslZXhwZWN0IHt8IDQ1MjFmNDRkYmM2MDk4YzBhZmMyNzcwY2M4NDU1MmIxIHx9XVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoU3RhYmxlLlYxKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTdGFibGUuVjEpXG5cbmxldCBzdW1tYXJpemUgdHMgPVxuICBMaXN0Lm1hcCB0cyB+ZjooZnVuIHsgbmFtZTsgdmVyc2lvbiB9IC0+IG5hbWUsIHZlcnNpb24pXG4gIHw+IFN0cmluZy5NYXAub2ZfYWxpc3RfZm9sZCB+aW5pdDpJbnQuU2V0LmVtcHR5IH5mOkNvcmUuU2V0LmFkZFxuOztcblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBsZXQgZGVzY3JpcHRpb25zID1cbiAgICBbIHsgbmFtZSA9IFwiZm9vXCI7IHZlcnNpb24gPSAxIH1cbiAgICA7IHsgbmFtZSA9IFwiZm9vXCI7IHZlcnNpb24gPSAyIH1cbiAgICA7IHsgbmFtZSA9IFwiYmFyXCI7IHZlcnNpb24gPSA1IH1cbiAgICBdXG4gIGluXG4gIGxldCBzdW1tYXJ5ID0gc3VtbWFyaXplIGRlc2NyaXB0aW9ucyBpblxuICBwcmludF9zIFslc2V4cCAoc3VtbWFyeSA6IEludC5TZXQudCBTdHJpbmcuTWFwLnQpXTtcbiAgWyVleHBlY3Qge3wgKChiYXIgKDUpKSAoZm9vICgxIDIpKSkgfH1dXG47O1xuIiwib3BlbiEgQ29yZVxuXG50eXBlICdhIHQgPVxuICB8IEF1dGhvcml6ZWQgb2YgJ2FcbiAgfCBOb3RfYXV0aG9yaXplZCBvZiBFcnJvci50XG5cbmxldCBiaW5kIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBdXRob3JpemVkIGEgLT4gZiBhXG4gIHwgTm90X2F1dGhvcml6ZWQgXyBhcyB0IC0+IHRcbjs7XG5cbmxldCBiaW5kX2RlZmVycmVkIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBdXRob3JpemVkIGEgLT4gZiBhXG4gIHwgTm90X2F1dGhvcml6ZWQgXyBhcyB0IC0+IEVhZ2VyX2RlZmVycmVkLnJldHVybiB0XG47O1xuXG5sZXQgbWFwX2RlZmVycmVkIHQgfmYgPVxuICBiaW5kX2RlZmVycmVkIHQgfmY6KGZ1biBhIC0+IEVhZ2VyX2RlZmVycmVkLm1hcCAoZiBhKSB+ZjooZnVuIGEgLT4gQXV0aG9yaXplZCBhKSlcbjs7XG5cbmxldCBsaWZ0X2RlZmVycmVkID0gbWFwX2RlZmVycmVkIH5mOkZuLmlkXG4iLCIoKiogQXN5bmNfcnBjIHByb3RvY29sIHR5cGVzLCBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgKilcblxuKCogV0FSTklORzogZG8gbm90IGNoYW5nZSBhbnkgb2YgdGhlc2UgdHlwZXMgd2l0aG91dCBnb29kIHJlYXNvbiAqKVxuXG5vcGVuIEJpbl9wcm90LlN0ZFxub3BlbiBTZXhwbGliLlN0ZFxubW9kdWxlIENvcmVfZm9yX3Rlc3RpbmcgPSBDb3JlXG5tb2R1bGUgUnBjX3RhZyA6IENvcmUuSWRlbnRpZmlhYmxlID0gQ29yZS5TdHJpbmdcbm1vZHVsZSBRdWVyeV9pZCA9IENvcmUuVW5pcXVlX2lkLkludDYzIChzdHJ1Y3QgZW5kKVxuXG5tb2R1bGUgVW51c2VkX3F1ZXJ5X2lkIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgdmFsIHQgOiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUXVlcnlfaWQudCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICBbJWV4cGVjdCB7fCAyYjUyOGY0YjIyZjA4ZTI4ODc2ZmZlMDIzOTMxNWFjMiB8fV1cbiAgOztcblxuICBsZXQgdCA9IFF1ZXJ5X2lkLmNyZWF0ZSAoKVxuZW5kXG5cbm1vZHVsZSBScGNfZXJyb3IgOiBzaWdcbiAgb3BlbiBDb3JlXG5cbiAgdHlwZSB0ID1cbiAgICB8IEJpbl9pb19leG4gb2YgU2V4cC50XG4gICAgfCBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIHwgV3JpdGVfZXJyb3Igb2YgU2V4cC50XG4gICAgfCBVbmNhdWdodF9leG4gb2YgU2V4cC50XG4gICAgfCBVbmltcGxlbWVudGVkX3JwYyBvZiBScGNfdGFnLnQgKiBbIGBWZXJzaW9uIG9mIGludCBdXG4gICAgfCBVbmtub3duX3F1ZXJ5X2lkIG9mIFF1ZXJ5X2lkLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEJpbl9pb19leG4gb2YgQ29yZS5TZXhwLnRcbiAgICAgIHwgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICAgIHwgV3JpdGVfZXJyb3Igb2YgQ29yZS5TZXhwLnRcbiAgICAgIHwgVW5jYXVnaHRfZXhuIG9mIENvcmUuU2V4cC50XG4gICAgICB8IFVuaW1wbGVtZW50ZWRfcnBjIG9mIFJwY190YWcudCAqIFsgYFZlcnNpb24gb2YgQ29yZS5JbnQuU3RhYmxlLlYxLnQgXVxuICAgICAgfCBVbmtub3duX3F1ZXJ5X2lkIG9mIFF1ZXJ5X2lkLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIGNvbXBhcmVdXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzdGFibGVcIiA9XG4gICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICBbJWV4cGVjdCB7fCA4Y2M3NjZiZWZhMmNmNTY1ZWExNDdkOWZjZDVlYWFhYiB8fV1cbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb3JlLkNvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgUnBjX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsIFJwY19lcnJvci50KSBDb3JlLlJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgdF07XG4gICAgWyVleHBlY3Qge3wgNTg3MzRhNjNhNWM4M2MxYjdjYmZjM2ZlZGZhM2FlODIgfH1dXG4gIDs7XG5lbmRcblxubW9kdWxlIEhlYWRlciA9IFByb3RvY29sX3ZlcnNpb25faGVhZGVyXG5cbm1vZHVsZSBRdWVyeV92MSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgeyB0YWcgOiBScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGlkIDogUXVlcnlfaWQudFxuICAgIDsgZGF0YSA6ICdhXG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgWyVleHBlY3Qge3wgYmU1ODg4NjkxZDczNDI3YjNhYzhlYTMwMGMxNjk0MjIgfH1dXG4gIDs7XG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuZW5kXG5cbm1vZHVsZSBRdWVyeSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgeyB0YWcgOiBScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGlkIDogUXVlcnlfaWQudFxuICAgIDsgbWV0YWRhdGEgOiBzdHJpbmcgb3B0aW9uXG4gICAgOyBkYXRhIDogJ2FcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCBlZjcwZWEyZGQwYmI4MTJhNjAxZDI4ODEwZTY2MzdkNCB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG5cbiAgbGV0IHRvX3YxIHsgdGFnOyB2ZXJzaW9uOyBpZDsgbWV0YWRhdGEgPSAoXyA6IHN0cmluZyBvcHRpb24pOyBkYXRhIH0gOiBfIFF1ZXJ5X3YxLnQgPVxuICAgIHsgdGFnOyB2ZXJzaW9uOyBpZDsgZGF0YSB9XG4gIDs7XG5cbiAgbGV0IG9mX3YxID9tZXRhZGF0YSB7IFF1ZXJ5X3YxLnRhZzsgdmVyc2lvbjsgaWQ7IGRhdGEgfSA9XG4gICAgeyB0YWc7IHZlcnNpb247IGlkOyBtZXRhZGF0YTsgZGF0YSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIFJlc3BvbnNlID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB7IGlkIDogUXVlcnlfaWQudFxuICAgIDsgZGF0YSA6ICdhIFJwY19yZXN1bHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCBuZWVkc19sZW5ndGhdO1xuICAgIFslZXhwZWN0IHt8IGEyMmE3NmYxOTJiM2E0ZWMxYzM3MTE3YzZiYjI1MmY1IHx9XVxuICA7O1xuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbmVuZFxuXG5tb2R1bGUgU3RyZWFtX3F1ZXJ5ID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICBbIGBRdWVyeSBvZiAnYVxuICAgIHwgYEFib3J0XG4gICAgXVxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgWyVleHBlY3Qge3wgMmMzNzg2ODc2MTk3MWM3OGNjMzU1ZDQzZjA4NTQ4NjAgfH1dXG4gIDs7XG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuICB0eXBlIG5hdDBfdCA9IE5hdDAudCBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIGJpbl93cml0ZV1cbmVuZFxuXG5tb2R1bGUgU3RyZWFtX2luaXRpYWxfbWVzc2FnZSA9IHN0cnVjdFxuICB0eXBlICgncmVzcG9uc2UsICdlcnJvcikgdCA9XG4gICAgeyB1bnVzZWRfcXVlcnlfaWQgOiBVbnVzZWRfcXVlcnlfaWQudFxuICAgIDsgaW5pdGlhbCA6ICgncmVzcG9uc2UsICdlcnJvcikgQ29yZS5SZXN1bHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogKHVuaXQsIHVuaXQpIHRdO1xuICAgIFslZXhwZWN0IHt8IDQ2ZjIzMWRkYjdmYTU5ZGE5YzI3NzU5ZDUwYWUwMWE5IHx9XVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTdHJlYW1fcmVzcG9uc2VfZGF0YSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgWyBgT2sgb2YgJ2FcbiAgICB8IGBFb2ZcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCBjMWRiY2RjZmUyYjEyZTc5N2VjNjRmMGQ3NGRmMTgxMSB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG4gIHR5cGUgbmF0MF90ID0gTmF0MC50IG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgYmluX3dyaXRlXVxuZW5kXG5cbm1vZHVsZSBNZXNzYWdlID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB8IEhlYXJ0YmVhdFxuICAgIHwgUXVlcnlfdjEgb2YgJ2EgUXVlcnlfdjEubmVlZHNfbGVuZ3RoXG4gICAgfCBSZXNwb25zZSBvZiAnYSBSZXNwb25zZS5uZWVkc19sZW5ndGhcbiAgICB8IFF1ZXJ5IG9mICdhIFF1ZXJ5Lm5lZWRzX2xlbmd0aFxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgWyVleHBlY3Qge3wgZjYwY2UyZDEwNGUyZjBkOTI3MWY2MjJlY2Q5N2NlYTggfH1dXG4gIDs7XG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBzZXhwX29mXVxuICB0eXBlIG5hdDBfdCA9IE5hdDAudCBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIGJpbl93cml0ZV1cbmVuZFxuXG5sZXQldGVzdCBcInYxIG1lc3NhZ2UgY29tcGF0aWJpbGl0eVwiID1cbiAgbGV0IG1vZHVsZSBNZXNzYWdlX3YxID0gc3RydWN0XG4gICAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgICAgfCBIZWFydGJlYXRcbiAgICAgIHwgUXVlcnkgb2YgJ2EgUXVlcnlfdjEubmVlZHNfbGVuZ3RoXG4gICAgICB8IFJlc3BvbnNlIG9mICdhIFJlc3BvbnNlLm5lZWRzX2xlbmd0aFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgICBbJWV4cGVjdCB7fCAxNDk2NWIwZGI5ODQ0ZTZiMzc2MTUxZGQ4OTA4MDhlOCB8fV1cbiAgICA7O1xuICBlbmRcbiAgaW5cbiAgbGV0IHRhZyA9IFJwY190YWcub2Zfc3RyaW5nIFwicnBjXCIgaW5cbiAgbGV0IHF1ZXJ5X2lkID0gUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gIGxldCB2MV9xdWVyeSA9IHsgUXVlcnlfdjEudGFnOyB2ZXJzaW9uID0gMTsgaWQgPSBxdWVyeV9pZDsgZGF0YSA9ICgpIH0gaW5cbiAgbGV0IHJlc3BvbnNlID0geyBSZXNwb25zZS5pZCA9IHF1ZXJ5X2lkOyBkYXRhID0gT2sgKCkgfSBpblxuICBsZXQgdjEgPSBNZXNzYWdlX3YxLlsgSGVhcnRiZWF0OyBRdWVyeSB2MV9xdWVyeTsgUmVzcG9uc2UgcmVzcG9uc2UgXSBpblxuICBsZXQgdjIgPSBNZXNzYWdlLlsgSGVhcnRiZWF0OyBRdWVyeV92MSB2MV9xdWVyeTsgUmVzcG9uc2UgcmVzcG9uc2UgXSBpblxuICBsZXQgdjFfc3RyID1cbiAgICBDb3JlX2Zvcl90ZXN0aW5nLkJpbl9wcm90LldyaXRlci50b19zdHJpbmdcbiAgICAgIFslYmluX3dyaXRlcjogdW5pdCBNZXNzYWdlX3YxLm5lZWRzX2xlbmd0aCBsaXN0XVxuICAgICAgdjFcbiAgaW5cbiAgbGV0IHYyX3N0ciA9XG4gICAgQ29yZV9mb3JfdGVzdGluZy5CaW5fcHJvdC5Xcml0ZXIudG9fc3RyaW5nXG4gICAgICBbJWJpbl93cml0ZXI6IHVuaXQgTWVzc2FnZS5uZWVkc19sZW5ndGggbGlzdF1cbiAgICAgIHYyXG4gIGluXG4gIFN0cmluZy5lcXVhbCB2MV9zdHIgdjJfc3RyXG47O1xuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuISBDb3JlLkNvcmVfc3RhYmxlXG5cbiAgKCogV2UgY2FuJ3QgbWFrZSBbQmluX3Byb3QuU2hhcGUudF0gYmluYWJsZSBkaXJlY3RseSBiZWNhdXNlIHRoYXQgd291bGQgaW50cm9kdWNlIGFcbiAgICAgY2lyY3VsYXIgZGVwZW5kZW5jeSwgc28gd2UgbWFrZSBpdCBbQmluYWJsZS5PZl9zZXhwYWJsZV93aXRoX3V1aWRdIGhlcmUgaW5zdGVhZC4gVGhpc1xuICAgICBhbGxvd3MgdXMgdG8gc2VuZCB0aGUgc2hhcGUgb3ZlciB0aGUgd2lyZSBhcyBwYXJ0IG9mIHRoZVxuICAgICBbVmVyc2lvbmVkX3JwYy5TaGFwZV9tZW51LnRdLiBbQmluX3Byb3QuU2hhcGUuQ2Fub25pY2FsLnRdLCB0aG91Z2ggZXhwb3NlZCBhbmRcbiAgICAgdGhlcmVmb3JlIGJpbmFibGUsIGlzIG5vdCBhIHN1aXRhYmxlIGFsdGVybmF0aXZlIGJlY2F1c2UgaXQgaGFzIGFuIGV4cG9uZW50aWFsXG4gICAgIGV4cGFuc2lvbi4gKilcbiAgbW9kdWxlIFNoYXBlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEJpbl9wcm90LlNoYXBlLlN0YWJsZS5WMVxuXG4gICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiMGFhNTM1NDktYWQ4OC00YjRmLWFiYzctMWY4NDUzZTdhYTExXCJcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQmluYWJsZS5PZl9zZXhwYWJsZS5WMiAoVClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgUnBjIG9mXG4gICAgICAgICAgeyBxdWVyeSA6IFNoYXBlLlYxLnRcbiAgICAgICAgICA7IHJlc3BvbnNlIDogU2hhcGUuVjEudFxuICAgICAgICAgIH1cbiAgICAgIHwgT25lX3dheSBvZiB7IG1zZyA6IFNoYXBlLlYxLnQgfVxuICAgICAgfCBTdHJlYW1pbmdfcnBjIG9mXG4gICAgICAgICAgeyBxdWVyeSA6IFNoYXBlLlYxLnRcbiAgICAgICAgICA7IGluaXRpYWxfcmVzcG9uc2UgOiBTaGFwZS5WMS50XG4gICAgICAgICAgOyB1cGRhdGVfcmVzcG9uc2UgOiBTaGFwZS5WMS50XG4gICAgICAgICAgOyBlcnJvciA6IFNoYXBlLlYxLnRcbiAgICAgICAgICB9XG4gICAgICB8IFVua25vd25cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gIGVuZFxuZW5kXG5cbm9wZW4hIENvcmVcblxubW9kdWxlIFNoYXBlID0gc3RydWN0XG4gIHR5cGUgdCA9IEJpbl9wcm90LlNoYXBlLnRcblxuICAoKiBBbiB1bnN0YWJsZSBzZXhwZXIgdGhhdCdzIHVzZWZ1bCBmb3IgZXhwZWN0IHRlc3RzLCBwcmludGluZyBvdXQgdGhlIHNoYXBlIGRpZ2VzdHNcbiAgICAgaW5zdGVhZCBvZiB0aGUgc2hhcGVzIHRoZW1zZWx2ZXMuICopXG4gIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAoQmluX3Byb3QuU2hhcGUuZXZhbF90b19kaWdlc3Rfc3RyaW5nIHQgOiBzdHJpbmcpXVxuZW5kXG5cbnR5cGUgdCA9IFN0YWJsZS5WMS50ID1cbiAgfCBScGMgb2ZcbiAgICAgIHsgcXVlcnkgOiBTaGFwZS50XG4gICAgICA7IHJlc3BvbnNlIDogU2hhcGUudFxuICAgICAgfVxuICB8IE9uZV93YXkgb2YgeyBtc2cgOiBTaGFwZS50IH1cbiAgfCBTdHJlYW1pbmdfcnBjIG9mXG4gICAgICB7IHF1ZXJ5IDogU2hhcGUudFxuICAgICAgOyBpbml0aWFsX3Jlc3BvbnNlIDogU2hhcGUudFxuICAgICAgOyB1cGRhdGVfcmVzcG9uc2UgOiBTaGFwZS50XG4gICAgICA7IGVycm9yIDogU2hhcGUudFxuICAgICAgfVxuICB8IFVua25vd25cbltAQGRlcml2aW5nIHNleHBfb2ZdXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbnR5cGUgJ2EgbWVzc2FnZV9oYW5kbGVyID0gQmlnc3RyaW5nLnQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+ICdhXG5cbm1vZHVsZSBIYW5kbGVyX3Jlc3VsdCA9IHN0cnVjdFxuICAoKiogUmVzdWx0IG9mIGFuIFtvbl9tZXNzYWdlXSBjYWxsYmFjay4gIFdlIHNwbGl0IHRoZSBbQ29udGludWVdIGFuZCBbV2FpdCBfXSBjYXNlcyB0b1xuICAgICAgbWFrZSBpdCBjbGVhciB0aGF0IFtDb250aW51ZV0gaXMgdGhlIGV4cGVjdGVkIGNhc2UuICBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGJlXG4gICAgICBvcHRpbWl6ZWQgZm9yIHRoaXMgY2FzZS4gKilcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFN0b3Agb2YgJ2FcbiAgICB8IENvbnRpbnVlXG4gICAgfCBXYWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuZW5kXG5cblxubW9kdWxlIHR5cGUgUmVhZGVyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBjbG9zZSA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCBpc19jbG9zZWQgOiB0IC0+IGJvb2xcbiAgdmFsIGJ5dGVzX3JlYWQgOiB0IC0+IEludDYzLnRcblxuICAoKiogU3RhcnQgcmVhZGluZyBpbmNvbWluZyBtZXNzYWdlcyBhbmQgcGFzcyB0aGVtIHRvIFtvbl9tZXNzYWdlXSwgdW50aWwgaXQgcmV0dXJuc1xuICAgICAgW1N0b3AgX10uXG5cbiAgICAgIFtvbl9lbmRfb2ZfYmF0Y2hdIGlzIGNhbGxlZCBhZnRlciBwcm9jZXNzaW5nIGEgYmF0Y2ggb2YgbWVzc2FnZXMsIGJlZm9yZSB3YWl0aW5nIGZvclxuICAgICAgdGhlIGZpbGUgZGVzY3JpcHRvciB0byBiZWNvbWUgcmVhZGFibGUgYWdhaW4uICopXG4gIHZhbCByZWFkX2ZvcmV2ZXJcbiAgICA6ICB0XG4gICAgLT4gb25fbWVzc2FnZTooQmlnc3RyaW5nLnQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+ICdhIEhhbmRsZXJfcmVzdWx0LnQpXG4gICAgLT4gb25fZW5kX29mX2JhdGNoOih1bml0IC0+IHVuaXQpXG4gICAgLT4gKCdhLCBbIGBFb2YgfCBgQ2xvc2VkIF0pIFJlc3VsdC50IERlZmVycmVkLnRcbmVuZFxuXG5tb2R1bGUgU2VuZF9yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSBtZXNzYWdlX3Rvb19iaWcgPVxuICAgIHsgc2l6ZSA6IGludFxuICAgIDsgbWF4X21lc3NhZ2Vfc2l6ZSA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICdhIHQgPVxuICAgIHwgU2VudCBvZiAnYVxuICAgIHwgQ2xvc2VkXG4gICAgfCBNZXNzYWdlX3Rvb19iaWcgb2YgbWVzc2FnZV90b29fYmlnXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgV3JpdGVyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBjbG9zZSA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCBpc19jbG9zZWQgOiB0IC0+IGJvb2xcbiAgdmFsIG1vbml0b3IgOiB0IC0+IE1vbml0b3IudFxuICB2YWwgYnl0ZXNfdG9fd3JpdGUgOiB0IC0+IGludFxuICB2YWwgYnl0ZXNfd3JpdHRlbiA6IHQgLT4gSW50NjMudFxuXG4gICgqKiBCZWNvbWVzIGRldGVybWluZWQgd2hlbiBpdCBpcyBubyBsb25nZXIgcG9zc2libGUgdG8gc2VuZCBtZXNzYWdlIHVzaW5nIHRoaXMgd3JpdGVyLFxuICAgICAgZm9yIGluc3RhbmNlIHdoZW4gdGhlIHdyaXRlciBpcyBjbG9zZWQgb3IgdGhlIGNvbnN1bWVyIGxlYXZlcy5cblxuICAgICAgVGhlIHJlc3VsdCBvZiB0aGlzIGZ1bmN0aW9uIGlzIGNhY2hlZCBieSBbUnBjLlRyYW5zcG9ydF0gKilcbiAgdmFsIHN0b3BwZWQgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBbZmx1c2hlZCB0XSByZXR1cm5zIGEgZGVmZXJyZWQgdGhhdCBtdXN0IGJlY29tZSBkZXRlcm1pbmVkIHdoZW4gYWxsIHByaW9yIHNlbnRcbiAgICAgIG1lc3NhZ2VzIGFyZSBkZWxpdmVyZWQuXG5cbiAgICAgIEl0IG11c3QgYmUgT0sgdG8gY2FsbCBbZmx1c2hlZCB0XSBhZnRlciBbdF0gaGFzIGJlZW4gY2xvc2VkLiAqKVxuICB2YWwgZmx1c2hlZCA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFtyZWFkeV90b193cml0ZSB0XSBiZWNvbWVzIGRldGVybWluZWQgd2hlbiBpdCBpcyBhIGdvb2QgdGltZSB0byBzZW5kIG1lc3NhZ2VzXG4gICAgICBhZ2Fpbi4gQXN5bmMgUlBDIGNhbGxzIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgc2VuZGluZyBhIGJhdGNoIG9mIG1lc3NhZ2VzLCB0byBhdm9pZFxuICAgICAgZmxvb2RpbmcgdGhlIHRyYW5zcG9ydC5cblxuICAgICAgVXNpbmcgW2xldCByZWFkeV90b193cml0ZSA9IGZsdXNoZWRdIGlzIGFuIGFjY2VwdGFibGUgaW1wbGVtZW50YXRpb24uICopXG4gIHZhbCByZWFkeV90b193cml0ZSA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIEFsbCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBzZW5kIGV4YWN0bHkgb25lIG1lc3NhZ2UuICopXG5cbiAgdmFsIHNlbmRfYmluX3Byb3QgOiB0IC0+ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyIC0+ICdhIC0+IHVuaXQgU2VuZF9yZXN1bHQudFxuXG4gIHZhbCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICA6ICB0XG4gICAgLT4gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAtPiAnYVxuICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgIC0+IHBvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdCBTZW5kX3Jlc3VsdC50XG5cbiAgKCoqIFNhbWUgYXMgW3NlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ10gYnV0IHRoZSBiaWdzdHJpbmcgY2FuJ3QgYmUgbW9kaWZpZWQgdW50aWwgdGhlXG4gICAgICByZXR1cm5lZCBkZWZlcnJlZCBiZWNvbWVzIGRldGVybWluZWQuICBUaGlzIGNhbiBiZSB1c2VkIHRvIGF2b2lkIGNvcHlpbmcgdGhlXG4gICAgICBiaWdzdHJpbmcuICopXG4gIHZhbCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbiAgICA6ICB0XG4gICAgLT4gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAtPiAnYVxuICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgIC0+IHBvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdCBEZWZlcnJlZC50IFNlbmRfcmVzdWx0LnRcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG5tb2R1bGUgSGVhZGVyID0gc3RydWN0XG4gIGxldCBsZW5ndGggPSA4XG4gIGxldCB1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zID0gQmlnc3RyaW5nLnVuc2FmZV9nZXRfaW50NjRfbGVfZXhuIGJ1ZiB+cG9zXG5cbiAgbGV0IHVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3MgcGF5bG9hZF9sZW4gPVxuICAgIEJpZ3N0cmluZy51bnNhZmVfc2V0X2ludDY0X2xlIGJ1ZiB+cG9zIHBheWxvYWRfbGVuXG4gIDs7XG5lbmRcblxubW9kdWxlIEhhbmRsZXJfcmVzdWx0ID0gVHJhbnNwb3J0X2ludGYuSGFuZGxlcl9yZXN1bHRcblxubW9kdWxlIFJlYWRlciA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gVHJhbnNwb3J0X2ludGYuUmVhZGVyXG5cbiAgdHlwZSB0ID0gVCA6IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKSAqICdhIC0+IHRcblxuICBsZXQgcGFjayBtIHQgPSBUIChtLCB0KVxuXG4gICgqIFdlIHB1dCB0eXBlIGFubm90YXRpb25zIHRvIGJlIHN1cmUgdGhlIHR5cGUgaXMgbm90IGEgZnVuY3Rpb24gdHlwZSwgaS5lLiB0byBhdm9pZFxuICAgICBjcmVhdGluZyBjbG9zdXJlcyAqKVxuICBsZXQgc2V4cF9vZl90IChUICgobW9kdWxlIE0pLCB0KSkgOiBTZXhwLnQgPSBNLnNleHBfb2ZfdCB0XG4gIGxldCBjbG9zZSAoVCAoKG1vZHVsZSBNKSwgdCkpIDogdW5pdCBEZWZlcnJlZC50ID0gTS5jbG9zZSB0XG4gIGxldCBpc19jbG9zZWQgKFQgKChtb2R1bGUgTSksIHQpKSA6IGJvb2wgPSBNLmlzX2Nsb3NlZCB0XG4gIGxldCBieXRlc19yZWFkIChUICgobW9kdWxlIE0pLCB0KSkgOiBJbnQ2My50ID0gTS5ieXRlc19yZWFkIHRcblxuICBsZXQgcmVhZF9mb3JldmVyIChUICgobW9kdWxlIE0pLCB0KSkgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCA6IF8gRGVmZXJyZWQudCA9XG4gICAgTS5yZWFkX2ZvcmV2ZXIgdCB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoXG4gIDs7XG5cbiAgbGV0IHJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3QgdCAoYmluX3JlYWRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIpID1cbiAgICByZWFkX2ZvcmV2ZXJcbiAgICAgIHRcbiAgICAgIH5vbl9tZXNzYWdlOihmdW4gYnVmIH5wb3MgfmxlbiAtPlxuICAgICAgICBsZXQgcG9zX3JlZiA9IHJlZiBwb3MgaW5cbiAgICAgICAgbGV0IHggPSBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIGlmICFwb3NfcmVmIDw+IHBvcyArIGxlblxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICBcIm1lc3NhZ2UgbGVuZ3RoICglZCkgZGlkIG5vdCBtYXRjaCBleHBlY3RlZCBsZW5ndGggKCVkKVwiXG4gICAgICAgICAgICAoIXBvc19yZWYgLSBwb3MpXG4gICAgICAgICAgICBsZW5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGVsc2UgU3RvcCB4KVxuICAgICAgfm9uX2VuZF9vZl9iYXRjaDppZ25vcmVcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2VuZF9yZXN1bHQgPSBUcmFuc3BvcnRfaW50Zi5TZW5kX3Jlc3VsdFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBUcmFuc3BvcnRfaW50Zi5Xcml0ZXJcblxuICB0eXBlICdhIHdyaXRlciA9XG4gICAgeyBpbXBsIDogKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgOyB0IDogJ2FcbiAgICAoKiBXZSBjYWNoZSB0aGUgcmVzdWx0IG9mIFtzdG9wcGVkXSBiZWNhdXNlIGl0IGlzIG9mdGVuIHRoZSBbRGVmZXJyZWQuYW55XSBvZiBzZXZlcmFsXG4gICAgICAgb3RoZXIgZGVmZXJyZWRzIGFuZCB3ZSB3YW50IFtjYW5fc2VuZF0gdG8gYmUgc2ltcGxlLiAqKVxuICAgIDsgc3RvcHBlZCA6IHVuaXQgRGVmZXJyZWQudFxuICAgIH1cblxuICB0eXBlIHQgPSBUIDogJ2Egd3JpdGVyIC0+IHRcblxuICBsZXQgcGFjayAodHlwZSBhKSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgdCA9XG4gICAgVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBzdG9wcGVkID0gTS5zdG9wcGVkIHQgfVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IFNleHAudCA9IE0uc2V4cF9vZl90IHRcbiAgbGV0IGNsb3NlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiB1bml0IERlZmVycmVkLnQgPSBNLmNsb3NlIHRcbiAgbGV0IGlzX2Nsb3NlZCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogYm9vbCA9IE0uaXNfY2xvc2VkIHRcbiAgbGV0IG1vbml0b3IgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IE1vbml0b3IudCA9IE0ubW9uaXRvciB0XG4gIGxldCBieXRlc190b193cml0ZSAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogaW50ID0gTS5ieXRlc190b193cml0ZSB0XG4gIGxldCBieXRlc193cml0dGVuIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBJbnQ2My50ID0gTS5ieXRlc193cml0dGVuIHRcbiAgbGV0IGZsdXNoZWQgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9IE0uZmx1c2hlZCB0XG5cbiAgbGV0IHJlYWR5X3RvX3dyaXRlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiB1bml0IERlZmVycmVkLnQgPVxuICAgIE0ucmVhZHlfdG9fd3JpdGUgdFxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90IChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgYmluX3dyaXRlciB4IDogXyBTZW5kX3Jlc3VsdC50ID1cbiAgICBNLnNlbmRfYmluX3Byb3QgdCBiaW5fd3JpdGVyIHhcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgICAgIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSlcbiAgICAgICAgYmluX3dyaXRlclxuICAgICAgICB4XG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgOiBfIFNlbmRfcmVzdWx0LnRcbiAgICA9XG4gICAgTS5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG4gICAgICAgIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSlcbiAgICAgICAgYmluX3dyaXRlclxuICAgICAgICB4XG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgOiBfIFNlbmRfcmVzdWx0LnRcbiAgICA9XG4gICAgTS5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmcgdCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgOztcblxuICBsZXQgc3RvcHBlZCAoVCB7IHN0b3BwZWQ7IF8gfSkgPSBzdG9wcGVkXG5cbiAgbGV0IGNhbl9zZW5kIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IHN0b3BwZWQgfSkgPVxuICAgIG5vdCAoTS5pc19jbG9zZWQgdCB8fCBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHN0b3BwZWQpXG4gIDs7XG5cbiAgbGV0IHRyYW5zZmVyIHQgPyhtYXhfbnVtX3ZhbHVlc19wZXJfcmVhZCA9IDFfMDAwKSBwaXBlIGYgPVxuICAgIGxldCBjb25zdW1lciA9XG4gICAgICBQaXBlLmFkZF9jb25zdW1lciBwaXBlIH5kb3duc3RyZWFtX2ZsdXNoZWQ6KGZ1biAoKSAtPlxuICAgICAgICBsZXQlbWFwICgpID0gZmx1c2hlZCB0IGluXG4gICAgICAgIGBPaylcbiAgICBpblxuICAgIGxldCBlbmRfb2ZfcGlwZSA9XG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgICAgIGxldCByZWMgaXRlciAoKSA9XG4gICAgICAgICAgaWYgY2FuX3NlbmQgdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgUGlwZS5yZWFkX25vdycgcGlwZSB+Y29uc3VtZXIgfm1heF9xdWV1ZV9sZW5ndGg6bWF4X251bV92YWx1ZXNfcGVyX3JlYWRcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgYE9rIHEgLT5cbiAgICAgICAgICAgICAgUXVldWUuaXRlciBxIH5mO1xuICAgICAgICAgICAgICBQaXBlLkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW0gY29uc3VtZXI7XG4gICAgICAgICAgICAgIHJlYWR5X3RvX3dyaXRlIHQgPj4+IGl0ZXJcbiAgICAgICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgICAgIFBpcGUudmFsdWVzX2F2YWlsYWJsZSBwaXBlID4+PiBmdW4gKGBPayB8IGBFb2YpIC0+IGl0ZXIgKClcbiAgICAgICAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgaXZhciAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgaXRlciAoKSlcbiAgICBpblxuICAgIGxldCVtYXAgKCkgPSBEZWZlcnJlZC5hbnkgWyBlbmRfb2ZfcGlwZTsgc3RvcHBlZCB0IF0gaW5cbiAgICBQaXBlLmNsb3NlX3JlYWQgcGlwZVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9XG4gIHsgcmVhZGVyIDogUmVhZGVyLnRcbiAgOyB3cml0ZXIgOiBXcml0ZXIudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY2xvc2UgdCA9XG4gIGxldCViaW5kICgpID0gV3JpdGVyLmNsb3NlIHQud3JpdGVyIGluXG4gIFJlYWRlci5jbG9zZSB0LnJlYWRlclxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gUHJvdG9jb2xcblxuKCoqIFRoZSB0eXBlcyBvZiB0aGUgW0ltcGxlbWVudGF0aW9uXSBhbmQgW0ltcGxlbWVudGF0aW9uc10gbW9kdWxlcywgd2hpY2ggaGF2ZVxuICAgIGEgZGVwZW5kZW5jeSBjeWxlOiBbSW1wbGVtZW50YXRpb25dIC0+IFtEaXJlY3Rfc3RyZWFtX3dyaXRlcl0gLT5cbiAgICBbSW1wbGVtZW50YXRpb25zXSAtPiBbSW1wbGVtZW50YXRpb25dLiAqKVxuXG5tb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXJfaWQgPSBVbmlxdWVfaWQuSW50NjMgKClcblxubW9kdWxlIE9uX2V4Y2VwdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgY2FsbGJhY2sgOiAoZXhuIC0+IHVuaXQpIG9wdGlvbiBbQHNleHAub21pdF9uaWxdXG4gICAgOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA6IGJvb2xcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHJlYyBJbXBsZW1lbnRhdGlvbiA6IHNpZ1xuICBtb2R1bGUgRXhwZXJ0IDogc2lnXG4gICAgbW9kdWxlIFJlc3BvbmRlciA6IHNpZ1xuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBxdWVyeV9pZCA6IFF1ZXJ5X2lkLnRcbiAgICAgICAgOyB3cml0ZXIgOiBUcmFuc3BvcnQuV3JpdGVyLnRcbiAgICAgICAgOyBtdXRhYmxlIHJlc3BvbmRlZCA6IGJvb2xcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgdHlwZSBpbXBsZW1lbnRhdGlvbl9yZXN1bHQgPVxuICAgICAgfCBSZXBsaWVkXG4gICAgICB8IERlbGF5ZWRfcmVzcG9uc2Ugb2YgdW5pdCBEZWZlcnJlZC50XG4gIGVuZFxuXG4gIG1vZHVsZSBGIDogc2lnXG4gICAgdHlwZSAoXywgXykgcmVzdWx0X21vZGUgPVxuICAgICAgfCBCbG9ja2luZyA6ICgnYSwgJ2EgT3Jfbm90X2F1dGhvcml6ZWQudCkgcmVzdWx0X21vZGVcbiAgICAgIHwgRGVmZXJyZWQgOiAoJ2EsICdhIE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudCkgcmVzdWx0X21vZGVcblxuICAgIHR5cGUgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbCA9XG4gICAgICB8IFBpcGUgb2ZcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAgIC0+ICgnaW5pdCAqICd1cGRhdGUgUGlwZS5SZWFkZXIudCwgJ2luaXQpIFJlc3VsdC50IE9yX25vdF9hdXRob3JpemVkLnRcbiAgICAgICAgICAgICAgICBEZWZlcnJlZC50KVxuICAgICAgfCBEaXJlY3Qgb2ZcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAgIC0+ICd1cGRhdGUgRGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAtPiAoJ2luaXQsICdpbml0KSBSZXN1bHQudCBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpXG5cbiAgICB0eXBlICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX3JwYyA9XG4gICAgICB7IGJpbl9xdWVyeV9yZWFkZXIgOiAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgIDsgYmluX2luaXRfd3JpdGVyIDogJ2luaXQgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgIDsgYmluX3VwZGF0ZV93cml0ZXIgOiAndXBkYXRlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAoKiAnaW5pdCBjYW4gYmUgYW4gZXJyb3Igb3IgYW4gaW5pdGlhbCBzdGF0ZSAqKVxuICAgICAgOyBpbXBsIDogKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbFxuICAgICAgfVxuXG4gICAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgICAgIHwgT25lX3dheSA6XG4gICAgICAgICAgJ21zZyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdtc2cgLT4gdW5pdCBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBPbmVfd2F5X2V4cGVydCA6XG4gICAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAgICAtPiB1bml0IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IFJwYyA6XG4gICAgICAgICAgJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICAgKiAncmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICAgICAqICgnY29ubmVjdGlvbl9zdGF0ZSAtPiAncXVlcnkgLT4gJ3Jlc3VsdClcbiAgICAgICAgICAqICgncmVzcG9uc2UsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBScGNfZXhwZXJ0IDpcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gRXhwZXJ0LlJlc3BvbmRlci50XG4gICAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAgICAtPiAncmVzdWx0KVxuICAgICAgICAgICogKEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBTdHJlYW1pbmdfcnBjIDpcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19ycGNcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gIGVuZFxuXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9XG4gICAgeyB0YWcgOiBScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGYgOiAnY29ubmVjdGlvbl9zdGF0ZSBGLnRcbiAgICA7IHNoYXBlcyA6IFJwY19zaGFwZXMudCBMYXp5LnRcbiAgICA7IG9uX2V4Y2VwdGlvbiA6IE9uX2V4Y2VwdGlvbi50XG4gICAgfVxuZW5kID1cbiAgSW1wbGVtZW50YXRpb25cblxuYW5kIEltcGxlbWVudGF0aW9ucyA6IHNpZ1xuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjID1cbiAgICBbIGBSYWlzZVxuICAgIHwgYENvbnRpbnVlXG4gICAgfCBgQ2xvc2VfY29ubmVjdGlvblxuICAgIHwgYENhbGwgb2ZcbiAgICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgLT4gcnBjX3RhZzpzdHJpbmdcbiAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgLT4gWyBgQ2xvc2VfY29ubmVjdGlvbiB8IGBDb250aW51ZSBdXG4gICAgfCBgRXhwZXJ0IG9mXG4gICAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgIC0+IHJwY190YWc6c3RyaW5nXG4gICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgIC0+IEltcGxlbWVudGF0aW9uLkV4cGVydC5SZXNwb25kZXIudFxuICAgICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdCBEZWZlcnJlZC50XG4gICAgXVxuXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9XG4gICAgeyBpbXBsZW1lbnRhdGlvbnMgOiAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbi50IERlc2NyaXB0aW9uLlRhYmxlLnRcbiAgICA7IG9uX3Vua25vd25fcnBjIDogJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNcbiAgICB9XG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSBpbXBsZW1lbnRhdGlvbnMgPSAnY29ubmVjdGlvbl9zdGF0ZSB0XG5cbiAgbW9kdWxlIHJlYyBJbnN0YW5jZSA6IHNpZ1xuICAgIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlID1cbiAgICAgIHwgUGlwZSA6IF8gUGlwZS5SZWFkZXIudCAtPiBzdHJlYW1pbmdfcmVzcG9uc2VcbiAgICAgIHwgRGlyZWN0IDogXyBEaXJlY3Rfc3RyZWFtX3dyaXRlci50IC0+IHN0cmVhbWluZ19yZXNwb25zZVxuXG4gICAgdHlwZSAnYSB1bnBhY2tlZCA9XG4gICAgICB7IGltcGxlbWVudGF0aW9ucyA6ICdhIGltcGxlbWVudGF0aW9uc1xuICAgICAgOyB3cml0ZXIgOiBUcmFuc3BvcnQuV3JpdGVyLnRcbiAgICAgIDsgb3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIDogKFF1ZXJ5X2lkLnQsIHN0cmVhbWluZ19yZXNwb25zZSkgSGFzaHRibC50XG4gICAgICA7IG11dGFibGUgc3RvcHBlZCA6IGJvb2xcbiAgICAgIDsgY29ubmVjdGlvbl9zdGF0ZSA6ICdhXG4gICAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgICAgIDsgY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIDogSW5mby50IERlZmVycmVkLnRcbiAgICAgIDsgbXV0YWJsZVxuICAgICAgICBsYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gOlxuICAgICAgICAgIChEZXNjcmlwdGlvbi50ICogJ2EgSW1wbGVtZW50YXRpb24udCkgb3B0aW9uXG4gICAgICA7IHBhY2tlZF9zZWxmIDogdFxuICAgICAgfVxuXG4gICAgYW5kIHQgPSBUIDogXyB1bnBhY2tlZCAtPiB0XG4gIGVuZFxuZW5kID1cbiAgSW1wbGVtZW50YXRpb25zXG5cbmFuZCBEaXJlY3Rfc3RyZWFtX3dyaXRlciA6IHNpZ1xuICBtb2R1bGUgUGVuZGluZ19yZXNwb25zZSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IE5vcm1hbCBvZiAnYVxuICAgICAgfCBFeHBlcnQgb2Ygc3RyaW5nXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ZSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IE5vdF9zdGFydGVkIG9mICdhIFBlbmRpbmdfcmVzcG9uc2UudCBRdWV1ZS50XG4gICAgICB8IFN0YXJ0ZWRcbiAgZW5kXG5cbiAgbW9kdWxlIElkID0gRGlyZWN0X3N0cmVhbV93cml0ZXJfaWRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgaWQgOiBJZC50XG4gICAgOyBtdXRhYmxlIHN0YXRlIDogJ2EgU3RhdGUudFxuICAgIDsgY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgICA7IGluc3RhbmNlIDogSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnRcbiAgICA7IHF1ZXJ5X2lkIDogUXVlcnlfaWQudFxuICAgIDsgc3RyZWFtX3dyaXRlciA6ICdhIENhY2hlZF9iaW5fd3JpdGVyLnRcbiAgICA7IGdyb3VwcyA6ICdhIGdyb3VwX2VudHJ5IEJhZy50XG4gICAgfVxuXG4gIGFuZCAnYSBncm91cF9lbnRyeSA9XG4gICAgeyBncm91cCA6ICdhIERpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLnRcbiAgICA7IGVsZW1lbnRfaW5fZ3JvdXAgOiAnYSB0IEJhZy5FbHQudFxuICAgIH1cblxuICBtb2R1bGUgR3JvdXAgOiBzaWdcbiAgICB0eXBlICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyID0gJ2EgdFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgKCogW2NvbXBvbmVudHNdIGlzIG9ubHkgdHJhY2tlZCBzZXBhcmF0ZWx5IGZyb20gW2NvbXBvbmVudHNfYnlfaWRdIHNvIHdlIGNhbiBpdGVyYXRlXG4gICAgICAgICAgIG92ZXIgaXRzIGVsZW1lbnRzIG1vcmUgcXVpY2tseSB0aGFuIHdlIGNvdWxkIGl0ZXJhdGUgb3ZlciB0aGUgdmFsdWVzIG9mXG4gICAgICAgICAgIFtjb21wb25lbnRzX2J5X2lkXS4gKilcbiAgICAgICAgbXV0YWJsZSBjb21wb25lbnRzIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLnRcbiAgICAgIDsgY29tcG9uZW50c19ieV9pZCA6ICdhIGNvbXBvbmVudCBJZC5UYWJsZS50XG4gICAgICA7IGJ1ZmZlciA6IEJpZ3N0cmluZy50IHJlZlxuICAgICAgfVxuXG4gICAgYW5kICdhIGNvbXBvbmVudCA9XG4gICAgICB7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLkVsdC50XG4gICAgICA7IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIDogJ2EgZ3JvdXBfZW50cnkgQmFnLkVsdC50XG4gICAgICB9XG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgOj0gJ2EgdFxuZW5kID1cbiAgRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuYW5kIENhY2hlZF9iaW5fd3JpdGVyIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBoZWFkZXJfcHJlZml4IDogc3RyaW5nICgqIEJpbl9wcm90dGVkIGNvbnN0YW50IHByZWZpeCBvZiB0aGUgbWVzc2FnZSAqKVxuICAgIDsgbXV0YWJsZSBkYXRhX2xlbiA6IE5hdDAudFxuICAgIDsgYmluX3dyaXRlciA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgfVxuZW5kID1cbiAgQ2FjaGVkX2Jpbl93cml0ZXJcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxudHlwZSB0ID0gSW1wbGVtZW50YXRpb25fdHlwZXMuT25fZXhjZXB0aW9uLnQgPVxuICB7IGNhbGxiYWNrIDogKGV4biAtPiB1bml0KSBvcHRpb24gW0BzZXhwLm9taXRfbmlsXVxuICA7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlIDogYm9vbFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY2xvc2VfY29ubmVjdGlvbiA9IHsgY2FsbGJhY2sgPSBOb25lOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA9IHRydWUgfVxubGV0IGNvbnRpbnVlID0geyBjYWxsYmFjayA9IE5vbmU7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlID0gZmFsc2UgfVxuXG5sZXQgaGFuZGxlX2V4blxuICAgICAgeyBjYWxsYmFjazsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgfVxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgZXhuXG4gID1cbiAgT3B0aW9uLml0ZXIgY2FsbGJhY2sgfmY6KGZ1biBjYWxsYmFjayAtPiBjYWxsYmFjayBleG4pO1xuICBpZiBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZVxuICB0aGVuIE1vbml0b3Iuc2VuZF9leG4gY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4blxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gUHJvdG9jb2xcbm9wZW4gSW1wbGVtZW50YXRpb25fdHlwZXMuSW1wbGVtZW50YXRpb25cblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBtb2R1bGUgUmVzcG9uZGVyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRXhwZXJ0LlJlc3BvbmRlci50ID1cbiAgICAgIHsgcXVlcnlfaWQgOiBRdWVyeV9pZC50XG4gICAgICA7IHdyaXRlciA6IFRyYW5zcG9ydC5Xcml0ZXIudFxuICAgICAgOyBtdXRhYmxlIHJlc3BvbmRlZCA6IGJvb2xcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGNyZWF0ZSBxdWVyeV9pZCB3cml0ZXIgPSB7IHF1ZXJ5X2lkOyB3cml0ZXI7IHJlc3BvbmRlZCA9IGZhbHNlIH1cbiAgZW5kXG5cbiAgdHlwZSBpbXBsZW1lbnRhdGlvbl9yZXN1bHQgPSBFeHBlcnQuaW1wbGVtZW50YXRpb25fcmVzdWx0ID1cbiAgICB8IFJlcGxpZWRcbiAgICB8IERlbGF5ZWRfcmVzcG9uc2Ugb2YgdW5pdCBEZWZlcnJlZC50XG5lbmRcblxubW9kdWxlIEYgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSByZXN1bHRfbW9kZSA9ICgnYSwgJ2IpIEYucmVzdWx0X21vZGUgPVxuICAgIHwgQmxvY2tpbmcgOiAoJ2EsICdhIE9yX25vdF9hdXRob3JpemVkLnQpIHJlc3VsdF9tb2RlXG4gICAgfCBEZWZlcnJlZCA6ICgnYSwgJ2EgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KSByZXN1bHRfbW9kZVxuXG4gIHR5cGUgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbCA9XG4gICAgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBGLnN0cmVhbWluZ19pbXBsID1cbiAgICB8IFBpcGUgb2ZcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgIC0+ICgnaW5pdCAqICd1cGRhdGUgUGlwZS5SZWFkZXIudCwgJ2luaXQpIFJlc3VsdC50IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICB8IERpcmVjdCBvZlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+ICdxdWVyeVxuICAgICAgICAgLT4gJ3VwZGF0ZSBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAtPiAoJ2luaXQsICdpbml0KSBSZXN1bHQudCBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpXG5cbiAgdHlwZSAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19ycGMgPVxuICAgICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgRi5zdHJlYW1pbmdfcnBjID1cbiAgICB7IGJpbl9xdWVyeV9yZWFkZXIgOiAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICA7IGJpbl9pbml0X3dyaXRlciA6ICdpbml0IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgOyBiaW5fdXBkYXRlX3dyaXRlciA6ICd1cGRhdGUgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAoKiAnaW5pdCBjYW4gYmUgYW4gZXJyb3Igb3IgYW4gaW5pdGlhbCBzdGF0ZSAqKVxuICAgIDsgaW1wbCA6ICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX2ltcGxcbiAgICB9XG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID0gJ2Nvbm5lY3Rpb25fc3RhdGUgRi50ID1cbiAgICB8IE9uZV93YXkgOlxuICAgICAgICAnbXNnIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdtc2cgLT4gdW5pdCBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IE9uZV93YXlfZXhwZXJ0IDpcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAgLT4gdW5pdCBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFJwYyA6XG4gICAgICAgICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICAgICAqICdyZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAqICgnY29ubmVjdGlvbl9zdGF0ZSAtPiAncXVlcnkgLT4gJ3Jlc3VsdClcbiAgICAgICAgKiAoJ3Jlc3BvbnNlLCAncmVzdWx0KSByZXN1bHRfbW9kZVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgfCBScGNfZXhwZXJ0IDpcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiBFeHBlcnQuUmVzcG9uZGVyLnRcbiAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAtPiAncmVzdWx0KVxuICAgICAgICAqIChFeHBlcnQuaW1wbGVtZW50YXRpb25fcmVzdWx0LCAncmVzdWx0KSByZXN1bHRfbW9kZVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgfCBTdHJlYW1pbmdfcnBjIDpcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfcnBjXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcblxuICBsZXQgc2V4cF9vZl90IF8gPSBmdW5jdGlvblxuICAgIHwgT25lX3dheV9leHBlcnQgXyB8IE9uZV93YXkgXyAtPiBbJW1lc3NhZ2UgXCJvbmUtd2F5XCJdXG4gICAgfCBScGNfZXhwZXJ0IF8gfCBScGMgXyAtPiBbJW1lc3NhZ2UgXCJycGNcIl1cbiAgICB8IFN0cmVhbWluZ19ycGMgXyAtPiBbJW1lc3NhZ2UgXCJzdHJlYW1pbmctcnBjXCJdXG4gIDs7XG5cbiAgbGV0IGxpZnQgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBPbmVfd2F5IChiaW5fbXNnLCBpbXBsKSAtPlxuICAgICAgbGV0IGltcGwgc3RhdGUgc3RyID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHN0cilcbiAgICAgIGluXG4gICAgICBPbmVfd2F5IChiaW5fbXNnLCBpbXBsKVxuICAgIHwgT25lX3dheV9leHBlcnQgaW1wbCAtPlxuICAgICAgT25lX3dheV9leHBlcnRcbiAgICAgICAgKGZ1biBzdGF0ZSBidWYgfnBvcyB+bGVuIC0+XG4gICAgICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmRfZGVmZXJyZWQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSBidWYgfnBvcyB+bGVuKSlcbiAgICB8IFJwYyAoYmluX3F1ZXJ5LCBiaW5fcmVzcG9uc2UsIGltcGwsIEJsb2NraW5nKSAtPlxuICAgICAgbGV0IGltcGwgc3RhdGUgcSA9XG4gICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSBxKVxuICAgICAgaW5cbiAgICAgIFJwYyAoYmluX3F1ZXJ5LCBiaW5fcmVzcG9uc2UsIGltcGwsIEJsb2NraW5nKVxuICAgIHwgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgRGVmZXJyZWQpIC0+XG4gICAgICBsZXQgaW1wbCBzdGF0ZSBxID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHEpXG4gICAgICBpblxuICAgICAgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgRGVmZXJyZWQpXG4gICAgfCBScGNfZXhwZXJ0IChpbXBsLCBCbG9ja2luZykgLT5cbiAgICAgIGxldCBpbXBsIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4pXG4gICAgICBpblxuICAgICAgUnBjX2V4cGVydCAoaW1wbCwgQmxvY2tpbmcpXG4gICAgfCBScGNfZXhwZXJ0IChpbXBsLCBEZWZlcnJlZCkgLT5cbiAgICAgIGxldCBpbXBsIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmRfZGVmZXJyZWQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4pXG4gICAgICBpblxuICAgICAgUnBjX2V4cGVydCAoaW1wbCwgRGVmZXJyZWQpXG4gICAgfCBTdHJlYW1pbmdfcnBjIHsgYmluX3F1ZXJ5X3JlYWRlcjsgYmluX2luaXRfd3JpdGVyOyBiaW5fdXBkYXRlX3dyaXRlcjsgaW1wbCB9IC0+XG4gICAgICBsZXQgaW1wbCA9XG4gICAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgICB8IFBpcGUgaW1wbCAtPlxuICAgICAgICAgIFBpcGVcbiAgICAgICAgICAgIChmdW4gc3RhdGUgcSAtPlxuICAgICAgICAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSBxKSlcbiAgICAgICAgfCBEaXJlY3QgaW1wbCAtPlxuICAgICAgICAgIERpcmVjdFxuICAgICAgICAgICAgKGZ1biBzdGF0ZSBxIHcgLT5cbiAgICAgICAgICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmRfZGVmZXJyZWQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgICAgICAgICBpbXBsIGF1dGhvcml6ZWRfc3RhdGUgcSB3KSlcbiAgICAgIGluXG4gICAgICBTdHJlYW1pbmdfcnBjIHsgYmluX3F1ZXJ5X3JlYWRlcjsgYmluX2luaXRfd3JpdGVyOyBiaW5fdXBkYXRlX3dyaXRlcjsgaW1wbCB9XG4gIDs7XG5cbiAgbGV0IGxpZnRfZGVmZXJyZWQgKHR5cGUgYSBiKSAodCA6IGIgdCkgfihmIDogYSAtPiBiIERlZmVycmVkLnQpIDogYSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE9uZV93YXkgKGJpbl9tc2csIGltcGwpIC0+XG4gICAgICBPbmVfd2F5XG4gICAgICAgICggYmluX21zZ1xuICAgICAgICAsIGZ1biBzdGF0ZSBzdHIgLT4gRWFnZXJfZGVmZXJyZWQuYmluZCAoZiBzdGF0ZSkgfmY6KGZ1biBzdGF0ZSAtPiBpbXBsIHN0YXRlIHN0cilcbiAgICAgICAgKVxuICAgIHwgT25lX3dheV9leHBlcnQgaW1wbCAtPlxuICAgICAgT25lX3dheV9leHBlcnRcbiAgICAgICAgKGZ1biBzdGF0ZSBidWYgfnBvcyB+bGVuIC0+XG4gICAgICAgICAgIEVhZ2VyX2RlZmVycmVkLmJpbmQgKGYgc3RhdGUpIH5mOihmdW4gc3RhdGUgLT4gaW1wbCBzdGF0ZSBidWYgfnBvcyB+bGVuKSlcbiAgICB8IFJwYyAoYmluX3F1ZXJ5LCBiaW5fcmVzcG9uc2UsIGltcGwsIEJsb2NraW5nKSAtPlxuICAgICAgUnBjXG4gICAgICAgICggYmluX3F1ZXJ5XG4gICAgICAgICwgYmluX3Jlc3BvbnNlXG4gICAgICAgICwgKGZ1biBzdGF0ZSBxIC0+XG4gICAgICAgICAgICAgbGV0JW1hcC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgICBpbXBsIHN0YXRlIHEpXG4gICAgICAgICwgRGVmZXJyZWQgKVxuICAgIHwgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgRGVmZXJyZWQpIC0+XG4gICAgICBScGNcbiAgICAgICAgKCBiaW5fcXVlcnlcbiAgICAgICAgLCBiaW5fcmVzcG9uc2VcbiAgICAgICAgLCAoZnVuIHN0YXRlIHEgLT5cbiAgICAgICAgICAgICBsZXQlYmluZC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgICBpbXBsIHN0YXRlIHEpXG4gICAgICAgICwgRGVmZXJyZWQgKVxuICAgIHwgUnBjX2V4cGVydCAoaW1wbCwgRGVmZXJyZWQpIC0+XG4gICAgICBScGNfZXhwZXJ0XG4gICAgICAgICggKGZ1biBzdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4gLT5cbiAgICAgICAgICAgIGxldCViaW5kLkVhZ2VyX2RlZmVycmVkIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgICAgICAgICAgaW1wbCBzdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4pXG4gICAgICAgICwgRGVmZXJyZWQgKVxuICAgIHwgUnBjX2V4cGVydCAoaW1wbCwgQmxvY2tpbmcpIC0+XG4gICAgICBScGNfZXhwZXJ0XG4gICAgICAgICggKGZ1biBzdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4gLT5cbiAgICAgICAgICAgIGxldCVtYXAuRWFnZXJfZGVmZXJyZWQgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgICAgICAgICBpbXBsIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbilcbiAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgfCBTdHJlYW1pbmdfcnBjIHsgYmluX3F1ZXJ5X3JlYWRlcjsgYmluX2luaXRfd3JpdGVyOyBiaW5fdXBkYXRlX3dyaXRlcjsgaW1wbCB9IC0+XG4gICAgICBsZXQgaW1wbCA9XG4gICAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgICB8IFBpcGUgaW1wbCAtPlxuICAgICAgICAgIFBpcGVcbiAgICAgICAgICAgIChmdW4gc3RhdGUgcSAtPlxuICAgICAgICAgICAgICAgbGV0JWJpbmQuRWFnZXJfZGVmZXJyZWQgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgICAgICAgICAgICBpbXBsIHN0YXRlIHEpXG4gICAgICAgIHwgRGlyZWN0IGltcGwgLT5cbiAgICAgICAgICBEaXJlY3RcbiAgICAgICAgICAgIChmdW4gc3RhdGUgcSB3IC0+XG4gICAgICAgICAgICAgICBsZXQlYmluZC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgICAgIGltcGwgc3RhdGUgcSB3KVxuICAgICAgaW5cbiAgICAgIFN0cmVhbWluZ19ycGMgeyBiaW5fcXVlcnlfcmVhZGVyOyBiaW5faW5pdF93cml0ZXI7IGJpbl91cGRhdGVfd3JpdGVyOyBpbXBsIH1cbiAgOztcbmVuZFxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvbi50ID1cbiAgeyB0YWcgOiBScGNfdGFnLnRcbiAgOyB2ZXJzaW9uIDogaW50XG4gIDsgZiA6ICdjb25uZWN0aW9uX3N0YXRlIEYudFxuICA7IHNoYXBlcyA6IFJwY19zaGFwZXMudCBMYXp5LnRcbiAgOyBvbl9leGNlcHRpb24gOiBPbl9leGNlcHRpb24udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IFJwY190YWcudG9fc3RyaW5nIHQudGFnOyB2ZXJzaW9uID0gdC52ZXJzaW9uIH1cbmxldCBzaGFwZXMgdCA9IGZvcmNlIHQuc2hhcGVzXG5cbmxldCBsaWZ0ICh0eXBlIGEgYikgKHQgOiBhIHQpIH4oZiA6IGIgLT4gYSkgOiBiIHQgPVxuICB7IHQgd2l0aCBmID0gRi5saWZ0IHQuZiB+ZjooZnVuIGIgLT4gT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoZiBiKSkgfVxuOztcblxubGV0IHdpdGhfYXV0aG9yaXphdGlvbiB0IH5mID0geyB0IHdpdGggZiA9IEYubGlmdCB0LmYgfmYgfVxubGV0IGxpZnRfZGVmZXJyZWQgdCB+ZiA9IHsgdCB3aXRoIGYgPSBGLmxpZnRfZGVmZXJyZWQgdC5mIH5mIH1cbmxldCB1cGRhdGVfb25fZXhjZXB0aW9uIHQgfmYgPSB7IHQgd2l0aCBvbl9leGNlcHRpb24gPSBmIHQub25fZXhjZXB0aW9uIH1cbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbmluY2x1ZGUgUHJvdG9jb2wuUnBjX2Vycm9yXG5pbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFByb3RvY29sLlJwY19lcnJvcilcblxuZXhjZXB0aW9uIFJwYyBvZiB0ICogSW5mby50IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCByYWlzZSB0IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gPSByYWlzZSAoUnBjICh0LCBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uKSlcblxubGV0IHNleHBfb2ZfdCB0IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBDb25uZWN0aW9uX2Nsb3NlZCAtPlxuICAgIFslc2V4cCBgQ29ubmVjdGlvbl9jbG9zZWQgKGdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiAoKSA6IFNleHAudCldXG4gIHwgQmluX2lvX2V4biBfXG4gIHwgV3JpdGVfZXJyb3IgX1xuICB8IFVuY2F1Z2h0X2V4biBfXG4gIHwgVW5pbXBsZW1lbnRlZF9ycGMgX1xuICB8IFVua25vd25fcXVlcnlfaWQgXyAtPiBzZXhwX29mX3QgdFxuOztcblxuKCogaXQgd291bGQgbWFrZSBzZW5zZSB0byBqdXN0IHRha2UgYSBbQ29ubmVjdGlvbi50XSwgYnV0IHdlIHRha2UgaXRzIHBpZWNlcyBpbnN0ZWFkIHRvXG4gICBhdm9pZCBhIGRlcGVuZGVuY3kgY3ljbGUgKilcbmxldCB0b19lcnJvclxuICAgICAgdFxuICAgICAgfnJwY19kZXNjcmlwdGlvbjp7IERlc2NyaXB0aW9uLm5hbWUgPSBycGNfbmFtZTsgdmVyc2lvbiA9IHJwY192ZXJzaW9uIH1cbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gID1cbiAgbGV0IHJwY19lcnJvciA9XG4gICAgc2V4cF9vZl90IHQgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbjooZnVuICgpIC0+XG4gICAgICBsZXQgY2xvc2VfcmVhc29uID1cbiAgICAgICAgKCogVXN1YWxseSAoYWx3YXlzPykgaGVyZSB3ZSB3aWxsIGhhdmUgdGhlIGRlZmVycmVkIGFscmVhZHkgZnVsbFxuICAgICAgICAgICBiZWNhdXNlIENvbm5lY3Rpb25fY2xvc2VkIGVycm9yIG1lYW5zIHRoZSBjb25uZWN0aW9uIGlzIGFscmVhZHlcbiAgICAgICAgICAgY2xvc2VkICopXG4gICAgICAgIERlZmVycmVkLnBlZWsgY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgICBpblxuICAgICAgWyVzZXhwIChjbG9zZV9yZWFzb24gOiBJbmZvLnQgb3B0aW9uKV0pXG4gIGluXG4gIEVycm9yLmNyZWF0ZV9zXG4gICAgWyVzZXhwXG4gICAgICB7IHJwY19lcnJvciA6IFNleHAudFxuICAgICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uIDogSW5mby50XG4gICAgICA7IHJwY19uYW1lIDogc3RyaW5nXG4gICAgICA7IHJwY192ZXJzaW9uIDogaW50XG4gICAgICB9XVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxuXG50eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGxvY2FsX3N0b3JhZ2Vfa2V5ID1cbiAgVW5pdl9tYXAuS2V5LmNyZWF0ZSB+bmFtZTpcImFzeW5jX3JwY19rZXJuZWxfbWV0YWRhdGFcIiBbJXNleHBfb2Y6IHRdXG47O1xuXG5sZXQgZ2V0ICgpID0gQXN5bmNfa2VybmVsLkFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuZmluZF9sb2NhbCBsb2NhbF9zdG9yYWdlX2tleVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgd2l0aF9tZXRhZGF0YSBtZXRhZGF0YSB+ZiA9XG4gICAgQXN5bmNfa2VybmVsLkFzeW5jX2tlcm5lbF9zY2hlZHVsZXIud2l0aF9sb2NhbCBsb2NhbF9zdG9yYWdlX2tleSBtZXRhZGF0YSB+ZlxuICA7O1xuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbnR5cGUgJ2EgdCA9ICgnYSwgUnBjX2Vycm9yLnQpIFJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCB0XTtcbiAgWyVleHBlY3Qge3wgNTg3MzRhNjNhNWM4M2MxYjdjYmZjM2ZlZGZhM2FlODIgfH1dXG47O1xuXG50eXBlIGxvY2F0ZWRfZXJyb3IgPVxuICB7IGxvY2F0aW9uIDogc3RyaW5nXG4gIDsgZXhuIDogRXhuLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IHVuY2F1Z2h0X2V4biB+bG9jYXRpb24gZXhuID1cbiAgRXJyb3IgKFJwY19lcnJvci5VbmNhdWdodF9leG4gKHNleHBfb2ZfbG9jYXRlZF9lcnJvciB7IGxvY2F0aW9uOyBleG4gfSkpXG47O1xuXG5sZXQgYmluX2lvX2V4biB+bG9jYXRpb24gZXhuID1cbiAgRXJyb3IgKFJwY19lcnJvci5CaW5faW9fZXhuIChzZXhwX29mX2xvY2F0ZWRfZXJyb3IgeyBsb2NhdGlvbjsgZXhuIH0pKVxuOztcblxubGV0IHRyeV93aXRoID9vbl9iYWNrZ3JvdW5kX2V4Y2VwdGlvbiA/cnVuIH5sb2NhdGlvbiBmID1cbiAgbGV0IHggPVxuICAgIGxldCByZXN0ID1cbiAgICAgIG1hdGNoIG9uX2JhY2tncm91bmRfZXhjZXB0aW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBgTG9nXG4gICAgICB8IFNvbWUgY2FsbGJhY2sgLT4gYENhbGwgY2FsbGJhY2tcbiAgICBpblxuICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgIH5yZXN0XG4gICAgICB+cnVuOihPcHRpb24udmFsdWUgcnVuIH5kZWZhdWx0OmBTY2hlZHVsZSlcbiAgICAgIGZcbiAgaW5cbiAgbGV0IGpvaW4gPSBmdW5jdGlvblxuICAgIHwgT2sgeCAtPiB4XG4gICAgfCBFcnJvciBleG4gLT4gdW5jYXVnaHRfZXhuIH5sb2NhdGlvbiBleG5cbiAgaW5cbiAgbWF0Y2ggRGVmZXJyZWQucGVlayB4IHdpdGhcbiAgfCBOb25lIC0+IHggPj58IGpvaW5cbiAgfCBTb21lIHggLT4gcmV0dXJuIChqb2luIHgpXG47O1xuXG5sZXQgb3JfZXJyb3IgfnJwY19kZXNjcmlwdGlvbiB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbiB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkID1cbiAgUmVzdWx0Lm1hcF9lcnJvclxuICAgIH5mOlxuICAgICAgKFJwY19lcnJvci50b19lcnJvclxuICAgICAgICAgfnJwY19kZXNjcmlwdGlvblxuICAgICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQpXG47O1xuIiwib3BlbiBDb3JlXG5cbigqIHV0aWxpdHkgZnVuY3Rpb24gZm9yIGJpbi1pbydpbmcgb3V0IG9mIGEgQmlnc3RyaW5nLnQgKilcbmxldCBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgKGJpbl9yZWFkZXJfdCA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIpXG4gICAgICA/YWRkX2xlblxuICAgICAgYnVmXG4gICAgICB+cG9zX3JlZlxuICAgICAgfihsZW4gOiBOYXQwLnQpXG4gICAgICB+bG9jYXRpb25cbiAgPVxuICB0cnlcbiAgICBsZXQgaW5pdF9wb3MgPSAhcG9zX3JlZiBpblxuICAgIGxldCBkYXRhID0gYmluX3JlYWRlcl90LnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgbGV0IGFkZF9sZW4gPVxuICAgICAgbWF0Y2ggYWRkX2xlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gMFxuICAgICAgfCBTb21lIGFkZF9sZW4gLT4gYWRkX2xlbiBkYXRhXG4gICAgaW5cbiAgICBpZiAhcG9zX3JlZiAtIGluaXRfcG9zICsgYWRkX2xlbiA8PiAobGVuIDo+IGludClcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aGZcbiAgICAgICAgXCJtZXNzYWdlIGxlbmd0aCAoJWQpIGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgbGVuZ3RoICglZClcIlxuICAgICAgICAoIXBvc19yZWYgLSBpbml0X3BvcylcbiAgICAgICAgKGxlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgICAgICgpO1xuICAgIE9rIGRhdGFcbiAgd2l0aFxuICB8IGUgLT4gUnBjX3Jlc3VsdC5iaW5faW9fZXhuIH5sb2NhdGlvbiBlXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIFBvbHlcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFV0aWxcbm9wZW4gSW1wbGVtZW50YXRpb25fdHlwZXMuSW1wbGVtZW50YXRpb25zXG5tb2R1bGUgUCA9IFByb3RvY29sXG5tb2R1bGUgV3JpdGVyID0gVHJhbnNwb3J0LldyaXRlclxuXG4oKiBUaGUgUmVzdWx0IG1vbmFkIGlzIGFsc28gdXNlZC4gKilcbmxldCAoID4+fH4gKSA9IFJlc3VsdC4oID4+fCApXG5cbigqIENvbW11dGUgUmVzdWx0IGFuZCBEZWZlcnJlZC4gKilcbmxldCBkZWZlcl9yZXN1bHQgOiAnYSAnYi4gKCdhIERlZmVycmVkLnQsICdiKSBSZXN1bHQudCAtPiAoJ2EsICdiKSBSZXN1bHQudCBEZWZlcnJlZC50XG4gID0gZnVuY3Rpb25cbiAgICB8IEVycm9yIF8gYXMgZXJyIC0+IHJldHVybiBlcnJcbiAgICB8IE9rIGQgLT5cbiAgICAgIChtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbGV0JW1hcCB4ID0gZCBpblxuICAgICAgICAgT2sgeFxuICAgICAgIHwgU29tZSBkIC0+IHJldHVybiAoT2sgZCkpXG47O1xuXG5tb2R1bGUgUmVzcG9uZGVyID0gSW1wbGVtZW50YXRpb24uRXhwZXJ0LlJlc3BvbmRlclxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjID1cbiAgWyBgUmFpc2VcbiAgfCBgQ29udGludWVcbiAgfCBgQ2xvc2VfY29ubmVjdGlvblxuICB8IGBDYWxsIG9mXG4gICAgICAnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgLT4gcnBjX3RhZzpzdHJpbmdcbiAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAtPiBbIGBDbG9zZV9jb25uZWN0aW9uIHwgYENvbnRpbnVlIF1cbiAgXVxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjX3dpdGhfZXhwZXJ0ID1cbiAgWyAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY1xuICB8IGBFeHBlcnQgb2ZcbiAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgIC0+IFJlc3BvbmRlci50XG4gICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgLT4gcG9zOmludFxuICAgICAgLT4gbGVuOmludFxuICAgICAgLT4gdW5pdCBEZWZlcnJlZC50XG4gIF1cblxudHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID0gJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb25fdHlwZXMuSW1wbGVtZW50YXRpb25zLnQgPVxuICB7IGltcGxlbWVudGF0aW9ucyA6ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uLnQgRGVzY3JpcHRpb24uVGFibGUudFxuICA7IG9uX3Vua25vd25fcnBjIDogJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNfd2l0aF9leHBlcnRcbiAgfVxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIGltcGxlbWVudGF0aW9ucyA9ICdjb25uZWN0aW9uX3N0YXRlIHRcblxubGV0IGRlc2NyaXB0aW9ucyB0ID0gSGFzaHRibC5rZXlzIHQuaW1wbGVtZW50YXRpb25zXG5cbm1vZHVsZSBJbnN0YW5jZSA9IHN0cnVjdFxuICB0eXBlIHN0cmVhbWluZ19yZXNwb25zZSA9IEluc3RhbmNlLnN0cmVhbWluZ19yZXNwb25zZSA9XG4gICAgfCBQaXBlIDogXyBQaXBlLlJlYWRlci50IC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICAgIHwgRGlyZWN0IDpcbiAgICAgICAgKF8gSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXIudFtAc2V4cC5vcGFxdWVdKVxuICAgICAgICAtPiBzdHJlYW1pbmdfcmVzcG9uc2VcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlIHN0cmVhbWluZ19yZXNwb25zZXMgPSAoUC5RdWVyeV9pZC50LCBzdHJlYW1pbmdfcmVzcG9uc2UpIEhhc2h0YmwudFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdW5wYWNrZWQgPSAnYSBJbnN0YW5jZS51bnBhY2tlZCA9XG4gICAgeyBpbXBsZW1lbnRhdGlvbnMgOiAoJ2EgaW1wbGVtZW50YXRpb25zW0BzZXhwLm9wYXF1ZV0pXG4gICAgOyB3cml0ZXIgOiBXcml0ZXIudFxuICAgIDsgb3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIDogc3RyZWFtaW5nX3Jlc3BvbnNlc1xuICAgIDsgbXV0YWJsZSBzdG9wcGVkIDogYm9vbFxuICAgIDsgY29ubmVjdGlvbl9zdGF0ZSA6ICdhXG4gICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uIDogSW5mby50XG4gICAgOyBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgRGVmZXJyZWQudFxuICAgIDsgbXV0YWJsZVxuICAgICAgbGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIDpcbiAgICAgICAgKERlc2NyaXB0aW9uLnQgKiAoJ2EgSW1wbGVtZW50YXRpb24udFtAc2V4cC5vcGFxdWVdKSkgb3B0aW9uXG4gICAgKCogW3BhY2tlZF9zZWxmXSBpcyBoZXJlIHNvIHdlIGNhbiBlc3NlbnRpYWxseSBwYWNrIGFuIHVucGFja2VkIGluc3RhbmNlIHdpdGhvdXQgZG9pbmdcbiAgICAgICBhbnkgYWRkaXRpb25hbCBhbGxvY2F0aW9uLiAqKVxuICAgIDsgcGFja2VkX3NlbGYgOiAodFtAc2V4cC5vcGFxdWVdKVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBhbmQgdCA9IEluc3RhbmNlLnQgPSBUIDogXyB1bnBhY2tlZCAtPiB0XG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IFslc2V4cF9vZjogXyB1bnBhY2tlZF0gdFxuXG4gIGxldCBzZW5kX3dyaXRlX2Vycm9yIHQgaWQgc2V4cCA9XG4gICAgbGV0IGRhdGEgOiBfIFAuTWVzc2FnZS50ID0gUmVzcG9uc2UgeyBpZDsgZGF0YSA9IEVycm9yIChXcml0ZV9lcnJvciBzZXhwKSB9IGluXG4gICAgbWF0Y2ggV3JpdGVyLnNlbmRfYmluX3Byb3QgdC53cml0ZXIgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IGRhdGEgd2l0aFxuICAgIHwgU2VudCAoKSB8IENsb3NlZCAtPiAoKVxuICAgIHwgTWVzc2FnZV90b29fYmlnIF8gYXMgciAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJXNleHBcbiAgICAgICAgICBcIkZhaWxlZCB0byBzZW5kIHdyaXRlIGVycm9yIHRvIGNsaWVudFwiXG4gICAgICAgICwgeyBlcnJvciA9IChzZXhwIDogU2V4cC50KTsgcmVhc29uID0gKHIgOiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50KSB9XVxuICA7O1xuXG4gIGxldCBoYW5kbGVfc2VuZF9yZXN1bHQgdCBpZCAocmVzdWx0IDogXyBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCkgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBTZW50ICgpIC0+ICgpXG4gICAgfCBDbG9zZWQgLT4gKClcbiAgICB8IE1lc3NhZ2VfdG9vX2JpZyBfIGFzIHIgLT5cbiAgICAgIHNlbmRfd3JpdGVfZXJyb3IgdCBpZCAoWyVzZXhwX29mOiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XSByKVxuICA7O1xuXG4gIGxldCB3cml0ZV9tZXNzYWdlIHQgYmluX3dyaXRlciB4IH5pZCA9XG4gICAgaWYgbm90IHQuc3RvcHBlZFxuICAgIHRoZW4gV3JpdGVyLnNlbmRfYmluX3Byb3QgdC53cml0ZXIgYmluX3dyaXRlciB4IHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0IGlkXG4gIDs7XG5cbiAgbGV0IHdyaXRlX21lc3NhZ2VfZXhwZXJ0IHQgYmluX3dyaXRlciB4IH5idWYgfnBvcyB+bGVuIH5pZCA9XG4gICAgaWYgbm90IHQuc3RvcHBlZFxuICAgIHRoZW5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdC53cml0ZXIgYmluX3dyaXRlciB4IH5idWYgfnBvcyB+bGVuXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdCBpZFxuICA7O1xuXG4gIGxldCB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl93cml0ZXJfZGF0YSBkYXRhID1cbiAgICBsZXQgYmluX3dyaXRlciA9XG4gICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uZWVkc19sZW5ndGggKFdyaXRlcl93aXRoX2xlbmd0aC5vZl93cml0ZXIgYmluX3dyaXRlcl9kYXRhKVxuICAgIGluXG4gICAgd3JpdGVfbWVzc2FnZSB0IH5pZCBiaW5fd3JpdGVyIChSZXNwb25zZSB7IGlkOyBkYXRhIH0pXG4gIDs7XG5cbiAgbW9kdWxlIENhY2hlZF9iaW5fd3JpdGVyIDogc2lnXG4gICAgdHlwZSAnYSB0ID0gJ2EgSW1wbGVtZW50YXRpb25fdHlwZXMuQ2FjaGVkX2Jpbl93cml0ZXIudFxuXG4gICAgdmFsIGNyZWF0ZSA6IGlkOlAuUXVlcnlfaWQudCAtPiBiaW5fd3JpdGVyOidhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyIC0+ICdhIHRcbiAgICB2YWwgcHJlcF93cml0ZSA6ICdhIHQgLT4gJ2EgLT4gKCdhIHQgKiAnYSkgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICB2YWwgcHJlcF93cml0ZV9leHBlcnQgOiAnYSB0IC0+IGxlbjppbnQgLT4gJ2EgdCBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIHZhbCBwcmVwX3dyaXRlX3N0cmluZyA6ICdhIHQgLT4gc3RyaW5nIC0+ICgnYSB0ICogc3RyaW5nKSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBJbXBsZW1lbnRhdGlvbl90eXBlcy5DYWNoZWRfYmluX3dyaXRlci50ID1cbiAgICAgIHsgaGVhZGVyX3ByZWZpeCA6IHN0cmluZyAoKiBCaW5fcHJvdHRlZCBjb25zdGFudCBwcmVmaXggb2YgdGhlIG1lc3NhZ2UgKilcbiAgICAgIDsgKCogTGVuZ3RoIG9mIHRoZSB1c2VyIGRhdGEgcGFydC4gV2Ugc2V0IHRoaXMgZmllbGQgd2hlbiBzZW5kaW5nIGEgbWVzc2FnZS4gVGhpc1xuICAgICAgICAgICByZWxpZXMgb24gdGhlIGZhY3QgdGhhdCB0aGUgbWVzc2FnZSBpcyBzZXJpYWxpemVkIGltbWVkaWF0ZWx5ICh3aGljaCBpcyB0aGVcbiAgICAgICAgICAgb25seSBhY2NlcHRhYmxlIHNlbWFudGljcyBmb3IgdGhlIHRyYW5zcG9ydCBsYXllciBhbnl3YXksIGFzIGl0IGRvZXNuJ3Qga25vdyBpZlxuICAgICAgICAgICB0aGUgdmFsdWUgaXMgbXV0YWJsZSBvciBub3QpLlxuXG4gICAgICAgICAgIFtkYXRhX2xlbl0gaXMgcGFzc2VkIHRvIGJpbi1wcm90IHdyaXRlcnMgYnkgbXV0YXRpbmcgW2RhdGFfbGVuXSBpbnN0ZWFkIG9mIGJ5XG4gICAgICAgICAgIHBhc3NpbmcgYW4gYWRkaXRpb25hbCBhcmd1bWVudCB0byBhdm9pZCBzb21lIGFsbG9jYXRpb24uXG4gICAgICAgICopXG4gICAgICAgIG11dGFibGUgZGF0YV9sZW4gOiBOYXQwLnRcbiAgICAgIDsgYmluX3dyaXRlciA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICB9XG5cblxuICAgIHR5cGUgdm9pZCA9IFZvaWRcblxuICAgIGxldCBiaW5fc2l6ZV92b2lkIFZvaWQgPSAwXG4gICAgbGV0IGJpbl93cml0ZV92b2lkIF9idWYgfnBvcyBWb2lkID0gcG9zXG5cbiAgICB0eXBlIHZvaWRfbWVzc2FnZSA9IHZvaWQgUC5NZXNzYWdlLm5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fd3JpdGVdXG5cbiAgICB0eXBlIHZvaWRfc3RyZWFtX3Jlc3BvbnNlX2RhdGEgPSB2b2lkIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEubmVlZHNfbGVuZ3RoXG4gICAgW0BAZGVyaXZpbmcgYmluX3dyaXRlXVxuXG4gICAgKCogVGhpcyBpcyBub3QgcmUtZW50cmFudCBidXQgQXN5bmMgY29kZSBhbHdheXMgcnVucyBvbiBvbmUgdGhyZWFkIGF0IGEgdGltZSAqKVxuICAgIGxldCBidWZmZXIgPSBCaWdzdHJpbmcuY3JlYXRlIDMyXG5cbiAgICBsZXQgY2FjaGVfYmluX3Byb3R0ZWQgKGJpbl93cml0ZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyKSB4ID1cbiAgICAgIGxldCBsZW4gPSBiaW5fd3JpdGVyLndyaXRlIGJ1ZmZlciB+cG9zOjAgeCBpblxuICAgICAgQmlnc3RyaW5nLlRvX3N0cmluZy5zdWIgYnVmZmVyIH5wb3M6MCB+bGVuXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgKHR5cGUgYSkgfmlkIH5iaW5fd3JpdGVyIDogYSB0ID1cbiAgICAgIGxldCBoZWFkZXJfcHJlZml4ID1cbiAgICAgICAgY2FjaGVfYmluX3Byb3R0ZWQgYmluX3dyaXRlcl92b2lkX21lc3NhZ2UgKFJlc3BvbnNlIHsgaWQ7IGRhdGEgPSBPayBWb2lkIH0pXG4gICAgICBpblxuICAgICAgeyBoZWFkZXJfcHJlZml4OyBiaW5fd3JpdGVyOyBkYXRhX2xlbiA9IE5hdDAub2ZfaW50X2V4biAwIH1cbiAgICA7O1xuXG4gICAgKCogVGhpcyBwYXJ0IG9mIHRoZSBtZXNzYWdlIGhlYWRlciBpcyBhIGNvbnN0YW50LCBtYWtlIGl0IGEgbGl0ZXJhbCB0byBtYWtlIHRoZVxuICAgICAgIHdyaXRpbmcgY29kZSBzbGlnaHRseSBmYXN0ZXIuICopXG4gICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9sZW4gPSA0XG4gICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hc19pbnQzMiA9IDB4OGE3OWxcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJzdHJlYW1fcmVzcG9uc2VfKiBjb25zdGFudHMgYXJlIGNvcnJlY3RcIiA9XG4gICAgICBsZXQgbGVuID1cbiAgICAgICAgYmluX3dyaXRlcl92b2lkX3N0cmVhbV9yZXNwb25zZV9kYXRhLndyaXRlXG4gICAgICAgICAgYnVmZmVyXG4gICAgICAgICAgfnBvczowXG4gICAgICAgICAgKGBPayBWb2lkIDogdm9pZF9zdHJlYW1fcmVzcG9uc2VfZGF0YSlcbiAgICAgIGluXG4gICAgICBhc3NlcnQgKGxlbiA9IHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9sZW4pO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgQmlnc3RyaW5nLnVuc2FmZV9nZXRfaW50MzJfdF9sZSBidWZmZXIgfnBvczowXG4gICAgICAgID0gc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2FzX2ludDMyKVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlX3N0cmluZ19ub19sZW5ndGggYnVmIH5wb3Mgc3RyID1cbiAgICAgIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICAgICgqIFZlcnkgbG93LWxldmVsIGJpbl9wcm90IHN0dWZmLi4uICopXG4gICAgICBCaW5fcHJvdC5Db21tb24uYXNzZXJ0X3BvcyBwb3M7XG4gICAgICBsZXQgbmV4dCA9IHBvcyArIHN0cl9sZW4gaW5cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5jaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgQmluX3Byb3QuQ29tbW9uLnVuc2FmZV9ibGl0X3N0cmluZ19idWYgfnNyY19wb3M6MCBzdHIgfmRzdF9wb3M6cG9zIGJ1ZiB+bGVuOnN0cl9sZW47XG4gICAgICBuZXh0XG4gICAgOztcblxuICAgICgqIFRoZSB0d28gZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSB0aGUgMyB2YXJpYW50cyBleHBvc2VkIGJ5IHRoaXMgbW9kdWxlLiBUaGV5XG4gICAgICAgc2VyaWFsaXplIGEgW1Jlc3BvbnNlIHsgaWQ7IGRhdGEgPSBPayAoYE9rIGRhdGFfbGVuKSB9XSB2YWx1ZSwgdGFraW5nIGNhcmUgb2ZcbiAgICAgICB3cml0aW5nIHRoZSBbTmF0MC50XSBsZW5ndGggcHJlZml4IHdoZXJlIGFwcHJvcmlhdGUuXG5cbiAgICAgICBCZWFyIGluIG1pbmQgdGhhdCB0aGVyZSBhcmUgdHdvIGxldmVscyBvZiBsZW5ndGggcHJlZml4ZXMgZm9yIHN0cmVhbSByZXNwb25zZSBkYXRhXG4gICAgICAgbWVzc2FnZTogb25lIGZvciB0aGUgdXNlciBkYXRhICh1bmRlciB0aGUgYE9rLCBiZWZvcmUgdGhlIGFjdHVhbCBkYXRhKSwgYW5kIG9uZSBmb3JcbiAgICAgICB0aGUgcmVzcG9uc2UgZGF0YSAodW5kZXIgdGhlIC5kYXRhIGZpZWxkLCBiZWZvcmUgdGhlIE9rKS4gKilcbiAgICBsZXQgYmluX3NpemVfbmF0MF9oZWFkZXIgeyBoZWFkZXJfcHJlZml4OyBkYXRhX2xlbjsgXyB9ID1cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiA9XG4gICAgICAgIHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9sZW4gKyBOYXQwLmJpbl9zaXplX3QgZGF0YV9sZW5cbiAgICAgIGluXG4gICAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuID1cbiAgICAgICAgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbmF0MF9sZW4gKyAoZGF0YV9sZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgICAgaW5cbiAgICAgIFN0cmluZy5sZW5ndGggaGVhZGVyX3ByZWZpeFxuICAgICAgKyBOYXQwLmJpbl9zaXplX3QgKE5hdDAub2ZfaW50X2V4biBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4pXG4gICAgICArIHN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgYnVmIH5wb3MgeyBoZWFkZXJfcHJlZml4OyBkYXRhX2xlbjsgXyB9ID1cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCBidWYgfnBvcyBoZWFkZXJfcHJlZml4IGluXG4gICAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuID1cbiAgICAgICAgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlblxuICAgICAgICArIE5hdDAuYmluX3NpemVfdCBkYXRhX2xlblxuICAgICAgICArIChkYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgICBpblxuICAgICAgbGV0IHBvcyA9IE5hdDAuYmluX3dyaXRlX3QgYnVmIH5wb3MgKE5hdDAub2ZfaW50X2V4biBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4pIGluXG4gICAgICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5jaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgQmlnc3RyaW5nLnVuc2FmZV9zZXRfaW50MzJfdF9sZSBidWYgfnBvcyBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXNfaW50MzI7XG4gICAgICBOYXQwLmJpbl93cml0ZV90IGJ1ZiB+cG9zOm5leHQgZGF0YV9sZW5cbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZXJfbmF0MF9oZWFkZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID1cbiAgICAgIHsgc2l6ZSA9IGJpbl9zaXplX25hdDBfaGVhZGVyOyB3cml0ZSA9IGJpbl93cml0ZV9uYXQwX2hlYWRlciB9XG4gICAgOztcblxuICAgIGxldCBiaW5fc2l6ZV9tZXNzYWdlICh0LCBfKSA9IGJpbl9zaXplX25hdDBfaGVhZGVyIHQgKyAodC5kYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG5cbiAgICBsZXQgYmluX3dyaXRlX21lc3NhZ2UgYnVmIH5wb3MgKHQsIGRhdGEpID1cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgYnVmIH5wb3MgdCBpblxuICAgICAgdC5iaW5fd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIGRhdGFcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZSA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgICAgeyBzaXplID0gYmluX3NpemVfbWVzc2FnZTsgd3JpdGUgPSBiaW5fd3JpdGVfbWVzc2FnZSB9XG4gICAgOztcblxuICAgIGxldCBiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZyAodCwgXykgPVxuICAgICAgYmluX3NpemVfbmF0MF9oZWFkZXIgdCArICh0LmRhdGFfbGVuIDogTmF0MC50IDo+IGludClcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZV9tZXNzYWdlX2FzX3N0cmluZyBidWYgfnBvcyAodCwgc3RyKSA9XG4gICAgICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDBfaGVhZGVyIGJ1ZiB+cG9zIHQgaW5cbiAgICAgIGJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIGJ1ZiB+cG9zIHN0clxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgICAgeyBzaXplID0gYmluX3NpemVfbWVzc2FnZV9hc19zdHJpbmc7IHdyaXRlID0gYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIH1cbiAgICA7O1xuXG4gICAgbGV0IHByZXBfd3JpdGUgdCBkYXRhID1cbiAgICAgIHQuZGF0YV9sZW4gPC0gTmF0MC5vZl9pbnRfZXhuICh0LmJpbl93cml0ZXIuc2l6ZSBkYXRhKTtcbiAgICAgIGJpbl93cml0ZXJfbWVzc2FnZVxuICAgIDs7XG5cbiAgICBsZXQgcHJlcF93cml0ZV9zdHJpbmcgdCBzdHIgPVxuICAgICAgdC5kYXRhX2xlbiA8LSBOYXQwLm9mX2ludF9leG4gKFN0cmluZy5sZW5ndGggc3RyKTtcbiAgICAgIGJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmdcbiAgICA7O1xuXG4gICAgbGV0IHByZXBfd3JpdGVfZXhwZXJ0IHQgfmxlbiA9XG4gICAgICB0LmRhdGFfbGVuIDwtIE5hdDAub2ZfaW50X2V4biBsZW47XG4gICAgICBiaW5fd3JpdGVyX25hdDBfaGVhZGVyXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuICAgIG1vZHVsZSBTdGF0ZSA9IFQuU3RhdGVcbiAgICBtb2R1bGUgSWQgPSBULklkXG5cbiAgICB0eXBlICdhIHQgPSAnYSBULnQgPVxuICAgICAgeyBpZCA6IElkLnRcbiAgICAgIDsgbXV0YWJsZSBzdGF0ZSA6ICdhIFN0YXRlLnRcbiAgICAgIDsgY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgICAgIDsgaW5zdGFuY2UgOiBJbnN0YW5jZS50XG4gICAgICA7IHF1ZXJ5X2lkIDogUC5RdWVyeV9pZC50XG4gICAgICA7IHN0cmVhbV93cml0ZXIgOiAnYSBDYWNoZWRfYmluX3dyaXRlci50XG4gICAgICA7IGdyb3VwcyA6ICdhIGdyb3VwX2VudHJ5IEJhZy50XG4gICAgICB9XG5cbiAgICBhbmQgJ2EgZ3JvdXBfZW50cnkgPSAnYSBULmdyb3VwX2VudHJ5ID1cbiAgICAgIHsgZ3JvdXAgOiAnYSBULkdyb3VwLnRcbiAgICAgIDsgZWxlbWVudF9pbl9ncm91cCA6ICdhIHQgQmFnLkVsdC50XG4gICAgICB9XG5cbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbiAgICBsZXQgY2xvc2VkIHQgPSBJdmFyLnJlYWQgdC5jbG9zZWRcblxuICAgIGxldCBmbHVzaGVkIHQgPVxuICAgICAgbGV0IChUIGluc3RhbmNlKSA9IHQuaW5zdGFuY2UgaW5cbiAgICAgIFRyYW5zcG9ydC5Xcml0ZXIuZmx1c2hlZCBpbnN0YW5jZS53cml0ZXJcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZXIgdCA9IHQuc3RyZWFtX3dyaXRlci5iaW5fd3JpdGVyXG5cbiAgICBsZXQgd3JpdGVfZW9mIHsgaW5zdGFuY2UgPSBUIGluc3RhbmNlOyBxdWVyeV9pZDsgXyB9ID1cbiAgICAgIHdyaXRlX3Jlc3BvbnNlIGluc3RhbmNlIHF1ZXJ5X2lkIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEuYmluX3dyaXRlcl9uYXQwX3QgKE9rIGBFb2YpXG4gICAgOztcblxuICAgICgqIFt3cml0ZV9tZXNzYWdlX3N0cmluZ10gYW5kIFt3cml0ZV9tZXNzYWdlXSBib3RoIGFsbG9jYXRlIDMgd29yZHMgZm9yIHRoZSB0dXBsZXMuXG4gICAgICAgW3dyaXRlX21lc3NhZ2VfZXhwZXJ0XSBkb2VzIG5vdCBhbGxvY2F0ZS4gKilcblxuICAgIGxldCB3cml0ZV9tZXNzYWdlX3N0cmluZyB0IHggPVxuICAgICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmcgPVxuICAgICAgICBDYWNoZWRfYmluX3dyaXRlci5wcmVwX3dyaXRlX3N0cmluZyB0LnN0cmVhbV93cml0ZXIgeFxuICAgICAgaW5cbiAgICAgIGxldCAoVCBpbnN0YW5jZSkgPSB0Lmluc3RhbmNlIGluXG4gICAgICB3cml0ZV9tZXNzYWdlXG4gICAgICAgIGluc3RhbmNlXG4gICAgICAgIH5pZDp0LnF1ZXJ5X2lkXG4gICAgICAgIGJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmdcbiAgICAgICAgKHQuc3RyZWFtX3dyaXRlciwgeClcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2UgdCB4ID1cbiAgICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2UgPSBDYWNoZWRfYmluX3dyaXRlci5wcmVwX3dyaXRlIHQuc3RyZWFtX3dyaXRlciB4IGluXG4gICAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5pbnN0YW5jZSBpblxuICAgICAgd3JpdGVfbWVzc2FnZSBpbnN0YW5jZSB+aWQ6dC5xdWVyeV9pZCBiaW5fd3JpdGVyX21lc3NhZ2UgKHQuc3RyZWFtX3dyaXRlciwgeClcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2VfZXhwZXJ0IHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZSA9IENhY2hlZF9iaW5fd3JpdGVyLnByZXBfd3JpdGVfZXhwZXJ0IHQuc3RyZWFtX3dyaXRlciB+bGVuIGluXG4gICAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5pbnN0YW5jZSBpblxuICAgICAgd3JpdGVfbWVzc2FnZV9leHBlcnRcbiAgICAgICAgaW5zdGFuY2VcbiAgICAgICAgfmlkOnQucXVlcnlfaWRcbiAgICAgICAgYmluX3dyaXRlcl9tZXNzYWdlXG4gICAgICAgIHQuc3RyZWFtX3dyaXRlclxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2Vfd2l0aG91dF9yZW1vdmluZ19mcm9tX2luc3RhbmNlIHQgPVxuICAgICAgaWYgbm90IChJdmFyLmlzX2Z1bGwgdC5jbG9zZWQpXG4gICAgICB0aGVuIChcbiAgICAgICAgSXZhci5maWxsIHQuY2xvc2VkICgpO1xuICAgICAgICBsZXQgZ3JvdXBzID0gdC5ncm91cHMgaW5cbiAgICAgICAgaWYgbm90IChCYWcuaXNfZW1wdHkgZ3JvdXBzKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQXN5bmNfa2VybmVsX3NjaGVkdWxlci5Qcml2YXRlLlZlcnlfbG93X3ByaW9yaXR5X3dvcmsuZW5xdWV1ZSB+ZjooZnVuICgpIC0+XG4gICAgICAgICAgICBtYXRjaCBCYWcucmVtb3ZlX29uZSBncm91cHMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IEZpbmlzaGVkXG4gICAgICAgICAgICB8IFNvbWUgeyBncm91cDsgZWxlbWVudF9pbl9ncm91cCB9IC0+XG4gICAgICAgICAgICAgIEJhZy5yZW1vdmUgZ3JvdXAuY29tcG9uZW50cyBlbGVtZW50X2luX2dyb3VwO1xuICAgICAgICAgICAgICBIYXNodGJsLnJlbW92ZSBncm91cC5jb21wb25lbnRzX2J5X2lkIHQuaWQ7XG4gICAgICAgICAgICAgIE5vdF9maW5pc2hlZCk7XG4gICAgICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICB8IE5vdF9zdGFydGVkIF8gLT4gKClcbiAgICAgICAgfCBTdGFydGVkIC0+IHdyaXRlX2VvZiB0KVxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2UgKHsgaW5zdGFuY2UgPSBUIGluc3RhbmNlOyBxdWVyeV9pZDsgXyB9IGFzIHQpID1cbiAgICAgIGNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbnN0YW5jZSB0O1xuICAgICAgSGFzaHRibC5yZW1vdmUgaW5zdGFuY2Uub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIHF1ZXJ5X2lkXG4gICAgOztcblxuICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCA9XG4gICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbiAgICAgIHRoZW4gYENsb3NlZFxuICAgICAgZWxzZSAoXG4gICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgIHwgTm90X3N0YXJ0ZWQgcSAtPiBRdWV1ZS5lbnF1ZXVlIHEgKE5vcm1hbCB4KVxuICAgICAgICAgfCBTdGFydGVkIC0+IHdyaXRlX21lc3NhZ2UgdCB4KTtcbiAgICAgICAgYE9rKVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGUgKHsgaW5zdGFuY2UgPSBUIGluc3RhbmNlOyBfIH0gYXMgdCkgeCA9XG4gICAgICBtYXRjaCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCB3aXRoXG4gICAgICB8IGBDbG9zZWQgLT4gYENsb3NlZFxuICAgICAgfCBgT2sgLT4gYEZsdXNoZWQgKFdyaXRlci5mbHVzaGVkIGluc3RhbmNlLndyaXRlcilcbiAgICA7O1xuXG4gICAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxuICAgICAgICB0aGVuIGBDbG9zZWRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICB8IE5vdF9zdGFydGVkIHEgLT5cbiAgICAgICAgICAgICBRdWV1ZS5lbnF1ZXVlIHEgKEV4cGVydCAoQmlnc3RyaW5nLlRvX3N0cmluZy5zdWIgYnVmIH5wb3MgfmxlbikpXG4gICAgICAgICAgIHwgU3RhcnRlZCAtPiB3cml0ZV9tZXNzYWdlX2V4cGVydCB0IH5idWYgfnBvcyB+bGVuKTtcbiAgICAgICAgICBgT2spXG4gICAgICA7O1xuXG4gICAgICBsZXQgd3JpdGUgKHsgaW5zdGFuY2UgPSBUIGluc3RhbmNlOyBfIH0gYXMgdCkgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICBtYXRjaCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW4gd2l0aFxuICAgICAgICB8IGBDbG9zZWQgLT4gYENsb3NlZFxuICAgICAgICB8IGBPayAtPiBgRmx1c2hlZCAoV3JpdGVyLmZsdXNoZWQgaW5zdGFuY2Uud3JpdGVyKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBzdGFydCB0ID1cbiAgICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgfCBTdGFydGVkIC0+IGZhaWx3aXRoIFwiYXR0ZW1wdGVkIHRvIHN0YXJ0IHdyaXRlciB3aGljaCB3YXMgYWxyZWFkeSBzdGFydGVkXCJcbiAgICAgIHwgTm90X3N0YXJ0ZWQgcSAtPlxuICAgICAgICB0LnN0YXRlIDwtIFN0YXJ0ZWQ7XG4gICAgICAgIFF1ZXVlLml0ZXIgcSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vcm1hbCB4IC0+IHdyaXRlX21lc3NhZ2UgdCB4XG4gICAgICAgICAgfCBFeHBlcnQgeCAtPiB3cml0ZV9tZXNzYWdlX3N0cmluZyB0IHgpO1xuICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZWQgdGhlbiB3cml0ZV9lb2YgdFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb25cbiAgICAgICAgKHJlc3VsdCA6IChfLCBScGNfZXJyb3IudCkgUmVzdWx0LnQpXG4gICAgICAgIG9uX2V4Y2VwdGlvblxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBFcnJvciAoVW5jYXVnaHRfZXhuIHNleHApIC0+XG4gICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciAoRXhuLmNyZWF0ZV9zIHNleHApXG4gICAgfCBFcnJvciBfIHwgT2sgXyAtPiAoKVxuICA7O1xuXG4gIGxldCBhdXRob3JpemF0aW9uX2ZhaWx1cmVfcmVzdWx0IGVycm9yIH5ycGNfa2luZCA9XG4gICAgbGV0IGV4biA9IEVycm9yLnRvX2V4biBlcnJvciBpblxuICAgIFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICBleG5cbiAgICAgIH5sb2NhdGlvbjpbJXN0cmluZyBcInNlcnZlci1zaWRlICV7cnBjX2tpbmR9IGF1dGhvcml6YXRpb25cIl1cbiAgOztcblxuICBsZXQgYXBwbHlfc3RyZWFtaW5nX2ltcGxlbWVudGF0aW9uXG4gICAgICAgIHRcbiAgICAgICAgeyBJbXBsZW1lbnRhdGlvbi5GLmJpbl9xdWVyeV9yZWFkZXI7IGJpbl9pbml0X3dyaXRlcjsgYmluX3VwZGF0ZV93cml0ZXI7IGltcGwgfVxuICAgICAgICB+bGVuXG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+aWRcbiAgICAgICAgfihvbl9leGNlcHRpb24gOiBPbl9leGNlcHRpb24udClcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgID1cbiAgICBsZXQgZGF0YSA9XG4gICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICBiaW5fcXVlcnlfcmVhZGVyXG4gICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmxlblxuICAgICAgICB+bG9jYXRpb246XCJzdHJlYW1pbmdfcnBjIHNlcnZlci1zaWRlIHF1ZXJ5IHVuLWJpbi1pbydpbmdcIlxuICAgIGluXG4gICAgbGV0IChUIGluc3RhbmNlKSA9IHQucGFja2VkX3NlbGYgaW5cbiAgICBsZXQgc3RyZWFtX3dyaXRlciA9IENhY2hlZF9iaW5fd3JpdGVyLmNyZWF0ZSB+aWQgfmJpbl93cml0ZXI6YmluX3VwZGF0ZV93cml0ZXIgaW5cbiAgICBsZXQgaW1wbF93aXRoX3N0YXRlID1cbiAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgfCBQaXBlIGYgLT4gYFBpcGUgZlxuICAgICAgfCBEaXJlY3QgZiAtPlxuICAgICAgICBsZXQgd3JpdGVyIDogXyBEaXJlY3Rfc3RyZWFtX3dyaXRlci50ID1cbiAgICAgICAgICB7IGlkID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuSWQuY3JlYXRlICgpXG4gICAgICAgICAgOyBzdGF0ZSA9IE5vdF9zdGFydGVkIChRdWV1ZS5jcmVhdGUgKCkpXG4gICAgICAgICAgOyBjbG9zZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICAgIDsgaW5zdGFuY2UgPSB0LnBhY2tlZF9zZWxmXG4gICAgICAgICAgOyBxdWVyeV9pZCA9IGlkXG4gICAgICAgICAgOyBncm91cHMgPSBCYWcuY3JlYXRlICgpXG4gICAgICAgICAgOyBzdHJlYW1fd3JpdGVyXG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBIYXNodGJsLnNldCB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+a2V5OmlkIH5kYXRhOihEaXJlY3Qgd3JpdGVyKTtcbiAgICAgICAgYERpcmVjdCAoZiwgd3JpdGVyKVxuICAgIGluXG4gICAgbGV0IHJ1bl9pbXBsIGltcGwgc3BsaXRfb2sgaGFuZGxlX29rID1cbiAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICBScGNfcmVzdWx0LnRyeV93aXRoXG4gICAgICAgICAgP29uX2JhY2tncm91bmRfZXhjZXB0aW9uOm9uX2V4Y2VwdGlvbi5jYWxsYmFja1xuICAgICAgICAgIChmdW4gKCkgLT4gZGVmZXJfcmVzdWx0IChkYXRhID4+fH4gaW1wbCkpXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcGlwZV9ycGMgY29tcHV0YXRpb25cIlxuICAgICAgaW5cbiAgICAgIEVhZ2VyX2RlZmVycmVkLnVwb24gcmVzdWx0IChmdW5jdGlvblxuICAgICAgICB8IEVycm9yIChScGNfZXJyb3IuVW5jYXVnaHRfZXhuIHNleHAgYXMgZXJyKSAtPlxuICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChFcnJvciBlcnIpO1xuICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuXG4gICAgICAgICAgICBvbl9leGNlcHRpb25cbiAgICAgICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgICAgIChFeG4uY3JlYXRlX3Mgc2V4cClcbiAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZDtcbiAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9pbml0X3dyaXRlciAoRXJyb3IgZXJyKVxuICAgICAgICB8IE9rIChPcl9ub3RfYXV0aG9yaXplZC5Ob3RfYXV0aG9yaXplZCBlcnJvcikgLT5cbiAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZDtcbiAgICAgICAgICB3cml0ZV9yZXNwb25zZVxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgaWRcbiAgICAgICAgICAgIGJpbl9pbml0X3dyaXRlclxuICAgICAgICAgICAgKGF1dGhvcml6YXRpb25fZmFpbHVyZV9yZXN1bHQgZXJyb3IgfnJwY19raW5kOlwicGlwZV9ycGNcIilcbiAgICAgICAgfCBPayAoQXV0aG9yaXplZCAoRXJyb3IgZXJyb3IpKSAtPlxuICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChPayBlcnJvcilcbiAgICAgICAgfCBPayAoQXV0aG9yaXplZCAoT2sgb2spKSAtPlxuICAgICAgICAgIGxldCBpbml0aWFsLCByZXN0ID0gc3BsaXRfb2sgb2sgaW5cbiAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9pbml0X3dyaXRlciAoT2sgaW5pdGlhbCk7XG4gICAgICAgICAgaGFuZGxlX29rIHJlc3QpXG4gICAgaW5cbiAgICBtYXRjaCBpbXBsX3dpdGhfc3RhdGUgd2l0aFxuICAgIHwgYFBpcGUgZiAtPlxuICAgICAgcnVuX2ltcGxcbiAgICAgICAgKGZ1biBkYXRhIC0+IGYgdC5jb25uZWN0aW9uX3N0YXRlIGRhdGEpXG4gICAgICAgIEZuLmlkXG4gICAgICAgIChmdW4gcGlwZV9yIC0+XG4gICAgICAgICAgIEhhc2h0Ymwuc2V0IHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5rZXk6aWQgfmRhdGE6KFBpcGUgcGlwZV9yKTtcbiAgICAgICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgICAgICAoV3JpdGVyLnRyYW5zZmVyIHQud3JpdGVyIHBpcGVfciAoZnVuIGRhdGEgLT5cbiAgICAgICAgICAgICAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlID0gQ2FjaGVkX2Jpbl93cml0ZXIucHJlcF93cml0ZSBzdHJlYW1fd3JpdGVyIGRhdGEgaW5cbiAgICAgICAgICAgICAgICB3cml0ZV9tZXNzYWdlIGluc3RhbmNlIH5pZCBiaW5fd3JpdGVyX21lc3NhZ2UgKHN0cmVhbV93cml0ZXIsIGRhdGEpKSk7XG4gICAgICAgICAgIFBpcGUuY2xvc2VkIHBpcGVfclxuICAgICAgICAgICA+Pj4gZnVuICgpIC0+XG4gICAgICAgICAgIFBpcGUudXBzdHJlYW1fZmx1c2hlZCBwaXBlX3JcbiAgICAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgYE9rIHwgYFJlYWRlcl9jbG9zZWQgLT5cbiAgICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEuYmluX3dyaXRlcl9uYXQwX3QgKE9rIGBFb2YpO1xuICAgICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkKVxuICAgIHwgYERpcmVjdCAoZiwgd3JpdGVyKSAtPlxuICAgICAgcnVuX2ltcGxcbiAgICAgICAgKGZ1biBkYXRhIC0+IGYgdC5jb25uZWN0aW9uX3N0YXRlIGRhdGEgd3JpdGVyKVxuICAgICAgICAoZnVuIHggLT4geCwgKCkpXG4gICAgICAgIChmdW4gKCkgLT4gRGlyZWN0X3N0cmVhbV93cml0ZXIuc3RhcnQgd3JpdGVyKVxuICA7O1xuXG4gIGxldCBhcHBseV9pbXBsZW1lbnRhdGlvbidcbiAgICAgICAgdFxuICAgICAgICBpbXBsZW1lbnRhdGlvblxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgfm9uX2V4Y2VwdGlvblxuICAgIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudFxuICAgID1cbiAgICBsZXQgaWQgPSBxdWVyeS5pZCBpblxuICAgIG1hdGNoIGltcGxlbWVudGF0aW9uIHdpdGhcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuT25lX3dheSAoYmluX3F1ZXJ5X3JlYWRlciwgZikgLT5cbiAgICAgIGxldCBxdWVyeV9jb250ZW50cyA9XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgYmluX3F1ZXJ5X3JlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIG9uZS13YXkgcnBjIG1lc3NhZ2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICBpblxuICAgICAgKG1hdGNoIHF1ZXJ5X2NvbnRlbnRzIHdpdGhcbiAgICAgICB8IEVycm9yIF8gYXMgZXJyIC0+IFN0b3AgZXJyXG4gICAgICAgfCBPayBxIC0+XG4gICAgICAgICAodHJ5XG4gICAgICAgICAgICAoKiBXZSBkb24ndCBjbG9zZSBjb25uZWN0aW9ucyBvbiB1bmF1dGhvcml6ZWQgUlBDcy4gU2luY2UgdGhlcmUgaXMgbm8gd2F5IHRvXG4gICAgICAgICAgICAgICBjb21tdW5pY2F0ZSBmYWlsdXJlIGJhY2sgdG8gdGhlIHNlbmRlciBpbiBvbmUtd2F5IHJwY3MsIHdlIGRvIG5vdGhpbmcuIFRoZVxuICAgICAgICAgICAgICAgZGVmZXJyZWQgKGFuZCBhbnkgZGVmZXJyZWQgZXhjZXB0aW9ucykgYXJlIGRyb3BwZWQgaGVyZSBhcyBhIGNvbnNlcXVlbmNlIG9mXG4gICAgICAgICAgICAgICBbbGlmdF9kZWZlcnJlZF0gZXhpc3RpbmcgZm9yIG9uZS13YXkgcnBjcy4gV2UgdXNlIFtFYWdlcl9kZWZlcnJlZF0gc28gaW5cbiAgICAgICAgICAgICAgIHRoZSBub24tYmxvY2tpbmcgY2FzZXMgdGhpcyB3aWxsIHN0aWxsIHJ1biBzeW5jaHJvbm91c2x5LiAqKVxuICAgICAgICAgICAgbGV0IChfIDogXyBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpID0gZiB0LmNvbm5lY3Rpb25fc3RhdGUgcSBpblxuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgICAgIGlmIG9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBTdG9wXG4gICAgICAgICAgICAgICAgKFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICAgICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgb25lLXdheSBycGMgY29tcHV0YXRpb25cIilcbiAgICAgICAgICAgIGVsc2UgQ29udGludWUpKVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5PbmVfd2F5X2V4cGVydCBmIC0+XG4gICAgICAodHJ5XG4gICAgICAgICBsZXQgbGVuID0gKHF1ZXJ5LmRhdGEgOj4gaW50KSBpblxuICAgICAgICAgbGV0IChfIDogXyBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpID1cbiAgICAgICAgICAgZiB0LmNvbm5lY3Rpb25fc3RhdGUgcmVhZF9idWZmZXIgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZiB+bGVuXG4gICAgICAgICBpblxuICAgICAgICAgcmVhZF9idWZmZXJfcG9zX3JlZiA6PSAhcmVhZF9idWZmZXJfcG9zX3JlZiArIGxlbjtcbiAgICAgICAgIENvbnRpbnVlXG4gICAgICAgd2l0aFxuICAgICAgIHwgZXhuIC0+XG4gICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG47XG4gICAgICAgICBpZiBvbl9leGNlcHRpb24uY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWVcbiAgICAgICAgIHRoZW5cbiAgICAgICAgICAgU3RvcFxuICAgICAgICAgICAgIChScGNfcmVzdWx0LnVuY2F1Z2h0X2V4blxuICAgICAgICAgICAgICAgIGV4blxuICAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIG9uZS13YXkgcnBjIGV4cGVydCBjb21wdXRhdGlvblwiKVxuICAgICAgICAgZWxzZSBDb250aW51ZSlcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuUnBjIChiaW5fcXVlcnlfcmVhZGVyLCBiaW5fcmVzcG9uc2Vfd3JpdGVyLCBmLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIGxldCBxdWVyeV9jb250ZW50cyA9XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgYmluX3F1ZXJ5X3JlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJwYyBxdWVyeSB1bi1iaW4taW8naW5nXCJcbiAgICAgIGluXG4gICAgICBsZXQgb3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCByZXN1bHQgLT4gT2sgcmVzdWx0XG4gICAgICAgIHwgTm90X2F1dGhvcml6ZWQgZXJyb3IgLT4gYXV0aG9yaXphdGlvbl9mYWlsdXJlX3Jlc3VsdCBlcnJvciB+cnBjX2tpbmQ6XCJycGNcIlxuICAgICAgaW5cbiAgICAgIChtYXRjaCByZXN1bHRfbW9kZSB3aXRoXG4gICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkJsb2NraW5nIC0+XG4gICAgICAgICAodHJ5XG4gICAgICAgICAgICBSZXN1bHQuYmluZCBxdWVyeV9jb250ZW50cyB+ZjooZnVuIHF1ZXJ5IC0+XG4gICAgICAgICAgICAgIGYgdC5jb25uZWN0aW9uX3N0YXRlIHF1ZXJ5IHw+IG9yX25vdF9hdXRob3JpemVkX3RvX3JwY19yZXN1bHQpXG4gICAgICAgICAgICB8PiB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXJcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgICgqIEluIHRoZSBbRGVmZXJyZWRdIGJyYW5jaCB3ZSB1c2UgW01vbml0b3IudHJ5X3dpdGhdLCB3aGljaCBpbmNsdWRlc1xuICAgICAgICAgICAgICAgYmFja3RyYWNlcyB3aGVuIGl0IGNhdGNoZXMgYW4gZXhjZXB0aW9uLiBGb3IgY29uc2lzdGVuY3ksIHdlIGFsc28gZ2V0XG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIGhlcmUuICopXG4gICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgICAgICAgbGV0IHNleHAgPVxuICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICB7IGxvY2F0aW9uID0gXCJzZXJ2ZXItc2lkZSBibG9ja2luZyBycGMgY29tcHV0YXRpb25cIlxuICAgICAgICAgICAgICAgIDsgZXhuIDogZXhuXG4gICAgICAgICAgICAgICAgOyBiYWNrdHJhY2UgOiBCYWNrdHJhY2UudFxuICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyIChFcnJvciAoUnBjX2Vycm9yLlVuY2F1Z2h0X2V4biBzZXhwKSk7XG4gICAgICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG4pXG4gICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkRlZmVycmVkIC0+XG4gICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICgqIFdlIGdlbmVyYWxseSB0cnkgdG8gd3JpdGUgYSByZXNwb25zZSBiZWZvcmUgaGFuZGxpbmcgW29uX2V4Y2VwdGlvbl0gc28gaWYgd2VcbiAgICAgICAgICAgICAgYXJlIGNsb3NpbmcgdGhlIGNvbm5lY3Rpb24gd2Ugc3RpbGwgYWN0dWFsbHkgc2VuZCB0aGUgcmVzcG9uc2UgYmFjay4gV2hlbiB3ZVxuICAgICAgICAgICAgICBwYXNzIFtvbl9leGNlcHRpb24uY2FsbGJhY2tdIGhlcmUsIHdlIGFyZSBtYWtpbmcgaXQgcG9zc2libGUgZm9yIHJhaXNlZFxuICAgICAgICAgICAgICBleGNlcHRpb25zIG5vdCB0byBiZSB3cml0dGVuIGJhY2sgdG8gdGhlIGNsaWVudCAoZS5nLiBpZiB0aGUgaW1wbGVtZW50YXRpb25cbiAgICAgICAgICAgICAgcmFpc2VzIGJvdGggYXN5bmNocm9ub3VzbHkgYW5kIHN5bmNocm9ub3VzbHkpLiBUaGlzIHdvdWxkIGJlIGhhcmQgdG8gaGFuZGxlXG4gICAgICAgICAgICAgIGluIGEgbW9yZSBwcmluY2lwbGVkIHdheS4gKilcbiAgICAgICAgICAgUnBjX3Jlc3VsdC50cnlfd2l0aFxuICAgICAgICAgICAgID9vbl9iYWNrZ3JvdW5kX2V4Y2VwdGlvbjpvbl9leGNlcHRpb24uY2FsbGJhY2tcbiAgICAgICAgICAgICB+cnVuOmBOb3dcbiAgICAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBycGMgY29tcHV0YXRpb25cIlxuICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBxdWVyeV9jb250ZW50cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gRGVmZXJyZWQucmV0dXJuIChFcnJvciBlcnIpXG4gICAgICAgICAgICAgICAgfCBPayBxdWVyeSAtPlxuICAgICAgICAgICAgICAgICAgRWFnZXJfZGVmZXJyZWQubWFwXG4gICAgICAgICAgICAgICAgICAgIChmIHQuY29ubmVjdGlvbl9zdGF0ZSBxdWVyeSlcbiAgICAgICAgICAgICAgICAgICAgfmY6b3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsdClcbiAgICAgICAgIGluXG4gICAgICAgICAoKiBJbiB0aGUgY29tbW9uIGNhc2UgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gcmV0dXJucyBhIHZhbHVlIGltbWVkaWF0ZWx5LCB3ZSB3aWxsXG4gICAgICAgICAgICB3cml0ZSB0aGUgcmVzcG9uc2UgaW1tZWRpYXRlbHkgYXMgd2VsbCAodGhpcyBpcyBhbHNvIHdoeSB0aGUgYWJvdmUgW3RyeV93aXRoXVxuICAgICAgICAgICAgaGFzIFt+cnVuOmBOb3ddKS4gIFRoaXMgY2FuIGJlIGEgYmlnIHBlcmZvcm1hbmNlIHdpbiBmb3Igc2VydmVycyB0aGF0IGdldCBtYW55XG4gICAgICAgICAgICBxdWVyaWVzIGluIGEgc2luZ2xlIEFzeW5jIGN5Y2xlLiAqKVxuICAgICAgICAgKG1hdGNoIERlZmVycmVkLnBlZWsgZGF0YSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICA+Pj4gZnVuIGRhdGEgLT5cbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3Jlc3BvbnNlX3dyaXRlciBkYXRhO1xuICAgICAgICAgICAgbWF5YmVfZGlzcGF0Y2hfb25fZXhjZXB0aW9uIGRhdGEgb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyIGRhdGE7XG4gICAgICAgICAgICBtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24gZGF0YSBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvcikpO1xuICAgICAgQ29udGludWVcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuUnBjX2V4cGVydCAoZiwgcmVzdWx0X21vZGUpIC0+XG4gICAgICBsZXQgcmVzcG9uZGVyID0gSW1wbGVtZW50YXRpb24uRXhwZXJ0LlJlc3BvbmRlci5jcmVhdGUgcXVlcnkuaWQgdC53cml0ZXIgaW5cbiAgICAgIGxldCBkID1cbiAgICAgICAgKCogV2UgbmVlZCB0aGUgW01vbml0b3IudHJ5X3dpdGhdIGV2ZW4gZm9yIHRoZSBibG9ja2luZyBtb2RlIGFzIHRoZSBpbXBsZW1lbnRhdGlvblxuICAgICAgICAgICBtaWdodCByZXR1cm4gW0RlbGF5ZWRfcmVwb25zZV0sIHNvIHdlIGRvbid0IGJvdGhlciBvcHRpbWl6aW5nIHRoZSBibG9ja2luZ1xuICAgICAgICAgICBtb2RlLiAqKVxuICAgICAgICBsZXQgcmVzdCA9XG4gICAgICAgICAgbWF0Y2ggb25fZXhjZXB0aW9uLmNhbGxiYWNrIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGBMb2dcbiAgICAgICAgICB8IFNvbWUgY2FsbGJhY2sgLT4gYENhbGwgY2FsbGJhY2tcbiAgICAgICAgaW5cbiAgICAgICAgTW9uaXRvci50cnlfd2l0aCB+cmVzdCB+cnVuOmBOb3cgKGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBsZW4gPSAocXVlcnkuZGF0YSA6PiBpbnQpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICBmIHQuY29ubmVjdGlvbl9zdGF0ZSByZXNwb25kZXIgcmVhZF9idWZmZXIgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZiB+bGVuXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCByZXN1bHRfbW9kZSB3aXRoXG4gICAgICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkRlZmVycmVkIC0+IHJlc3VsdFxuICAgICAgICAgIHwgSW1wbGVtZW50YXRpb24uRi5CbG9ja2luZyAtPiBEZWZlcnJlZC5yZXR1cm4gcmVzdWx0KVxuICAgICAgaW5cbiAgICAgIGxldCBjb21wdXRhdGlvbl9mYWlsdXJlX3Jlc3VsdCBleG4gPVxuICAgICAgICBScGNfcmVzdWx0LnVuY2F1Z2h0X2V4biBleG4gfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcnBjIGV4cGVydCBjb21wdXRhdGlvblwiXG4gICAgICBpblxuICAgICAgbGV0IGhhbmRsZV9leG4gcmVzdWx0ID1cbiAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgaWYgcmVzcG9uZGVyLnJlc3BvbmRlZFxuICAgICAgICAgIHRoZW4gcmVzdWx0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl93cml0ZXJfdW5pdCByZXN1bHQ7XG4gICAgICAgICAgICBPayAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgcmVzdWx0XG4gICAgICBpblxuICAgICAgbGV0IGNoZWNrX3Jlc3BvbmRlZCAoKSA9XG4gICAgICAgIGlmIHJlc3BvbmRlci5yZXNwb25kZWRcbiAgICAgICAgdGhlbiBPayAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaGFuZGxlX2V4blxuICAgICAgICAgICAgKGNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IChGYWlsdXJlIFwiRXhwZXJ0IGltcGxlbWVudGF0aW9uIGRpZCBub3QgcmVwbHlcIikpXG4gICAgICBpblxuICAgICAgbGV0IGQgPVxuICAgICAgICBsZXQgb3BlbiBFYWdlcl9kZWZlcnJlZC5MZXRfc3ludGF4IGluXG4gICAgICAgIG1hdGNoJW1hcCBkIHdpdGhcbiAgICAgICAgfCBPayAoQXV0aG9yaXplZCByZXN1bHQpIC0+XG4gICAgICAgICAgbGV0IGQgPVxuICAgICAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgIHwgUmVwbGllZCAtPiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgICB8IERlbGF5ZWRfcmVzcG9uc2UgZCAtPiBkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGRcbiAgICAgICAgICB0aGVuIGNoZWNrX3Jlc3BvbmRlZCAoKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgdXBvbiBkIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgY2hlY2tfcmVzcG9uZGVkICgpXG4gICAgICAgICAgICAgIHw+IFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgICAgICAgICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS50YWc7IHZlcnNpb24gPSBxdWVyeS52ZXJzaW9uIH1cbiAgICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjp0LmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOnQuY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgIHw+IG9rX2V4bik7XG4gICAgICAgICAgICBPayAoKSlcbiAgICAgICAgfCBPayAoTm90X2F1dGhvcml6ZWQgZXJyb3IpIC0+XG4gICAgICAgICAgaGFuZGxlX2V4biAoYXV0aG9yaXphdGlvbl9mYWlsdXJlX3Jlc3VsdCBlcnJvciB+cnBjX2tpbmQ6XCJycGMgZXhwZXJ0XCIpXG4gICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGhhbmRsZV9leG4gKGNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IGV4bikgaW5cbiAgICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG47XG4gICAgICAgICAgcmVzdWx0XG4gICAgICBpblxuICAgICAgKG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBXYWl0XG4gICAgICAgICAgIChsZXQlbWFwIHIgPSBkIGluXG4gICAgICAgICAgICBva19leG5cbiAgICAgICAgICAgICAgKFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgICAgICAgICAgICAgfnJwY19kZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LnRhZzsgdmVyc2lvbiA9IHF1ZXJ5LnZlcnNpb24gfVxuICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjp0LmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDp0LmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgICAgICAgICByKSlcbiAgICAgICB8IFNvbWUgcmVzdWx0IC0+XG4gICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IENvbnRpbnVlXG4gICAgICAgICAgfCBFcnJvciBfIC0+IFN0b3AgcmVzdWx0KSlcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuU3RyZWFtaW5nX3JwYyBzdHJlYW1pbmdfcnBjIC0+XG4gICAgICBsZXQgc3RyZWFtX3F1ZXJ5ID1cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICBQLlN0cmVhbV9xdWVyeS5iaW5fcmVhZGVyX25hdDBfdFxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHBpcGVfcnBjIHN0cmVhbV9xdWVyeSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICB+YWRkX2xlbjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYEFib3J0IC0+IDBcbiAgICAgICAgICAgIHwgYFF1ZXJ5IChsZW4gOiBOYXQwLnQpIC0+IChsZW4gOj4gaW50KSlcbiAgICAgIGluXG4gICAgICAobWF0Y2ggc3RyZWFtX3F1ZXJ5IHdpdGhcbiAgICAgICB8IEVycm9yIF9lcnIgLT4gKClcbiAgICAgICB8IE9rIGBBYm9ydCAtPlxuICAgICAgICAgKCogTm90ZSB0aGF0IHRoZXJlJ3Mgc29tZSBkZWxheSBiZXR3ZWVuIHdoZW4gd2UgcmVjZWl2ZSBhIHBpcGUgUlBDIHF1ZXJ5IGFuZFxuICAgICAgICAgICAgd2hlbiB3ZSBwdXQgc29tZXRoaW5nIGluIFtvcGVuX3N0cmVhbWluZ19yZXNwb25zZXNdICh3ZSB3YWl0IGZvclxuICAgICAgICAgICAgYSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHRvIHJldHVybikuIER1cmluZyB0aGlzIHRpbWUsIGFuIGFib3J0IG1lc3NhZ2Ugd291bGRcbiAgICAgICAgICAgIGp1c3QgYmUgaWdub3JlZC4gVGhlIGRpc3BhdGNoZXIgY2FuJ3QgYWJvcnQgdGhlIHF1ZXJ5IHdoaWxlIHRoaXMgaXNcbiAgICAgICAgICAgIGhhcHBlbmluZywgdGhvdWdoLCBzaW5jZSB0aGUgaW50ZXJmYWNlIGRvZXNuJ3QgZXhwb3NlIHRoZSBJRCByZXF1aXJlZCB0b1xuICAgICAgICAgICAgYWJvcnQgdGhlIHF1ZXJ5IHVudGlsIGFmdGVyIGEgcmVzcG9uc2UgaGFzIGJlZW4gcmV0dXJuZWQuICopXG4gICAgICAgICBPcHRpb24uaXRlciAoSGFzaHRibC5maW5kIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIHF1ZXJ5LmlkKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgfCBQaXBlIHBpcGUgLT4gUGlwZS5jbG9zZV9yZWFkIHBpcGVcbiAgICAgICAgICAgfCBEaXJlY3QgdyAtPiBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZSB3KVxuICAgICAgIHwgT2sgKGBRdWVyeSBsZW4pIC0+XG4gICAgICAgICBhcHBseV9zdHJlYW1pbmdfaW1wbGVtZW50YXRpb25cbiAgICAgICAgICAgdFxuICAgICAgICAgICBzdHJlYW1pbmdfcnBjXG4gICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgIH5pZFxuICAgICAgICAgICB+b25fZXhjZXB0aW9uXG4gICAgICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IpO1xuICAgICAgQ29udGludWVcbiAgOztcblxuICBsZXQgYXBwbHlfaW1wbGVtZW50YXRpb25cbiAgICAgICAgdFxuICAgICAgICBpbXBsZW1lbnRhdGlvblxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgfm9uX2V4Y2VwdGlvblxuICAgIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudFxuICAgID1cbiAgICBhcHBseV9pbXBsZW1lbnRhdGlvbidcbiAgICAgIHRcbiAgICAgIGltcGxlbWVudGF0aW9uXG4gICAgICB+cXVlcnlcbiAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgIH5vbl9leGNlcHRpb25cbiAgOztcblxuICBsZXQgZmx1c2ggKFQgdCkgPVxuICAgIGFzc2VydCAobm90IHQuc3RvcHBlZCk7XG4gICAgbGV0IHByb2R1Y2Vyc19mbHVzaGVkID1cbiAgICAgIEhhc2h0YmwuZm9sZCB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+aW5pdDpbXSB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBhY2MgLT5cbiAgICAgICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgIHwgRGlyZWN0IF8gLT4gYWNjXG4gICAgICAgIHwgUGlwZSBwaXBlIC0+IERlZmVycmVkLmlnbm9yZV9tIChQaXBlLnVwc3RyZWFtX2ZsdXNoZWQgcGlwZSkgOjogYWNjKVxuICAgIGluXG4gICAgRGVmZXJyZWQuYWxsX3VuaXQgcHJvZHVjZXJzX2ZsdXNoZWRcbiAgOztcblxuICBsZXQgc3RvcCAoVCB0KSA9XG4gICAgdC5zdG9wcGVkIDwtIHRydWU7XG4gICAgSGFzaHRibC5pdGVyIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5mOihmdW5jdGlvblxuICAgICAgfCBEaXJlY3Qgd3JpdGVyIC0+XG4gICAgICAgICgqIERvbid0IHJlbW92ZSB0aGUgd3JpdGVyIGZyb20gdGhlIGluc3RhbmNlLCBhcyB0aGF0IHdvdWxkIG1vZGlmeSB0aGUgaGFzaHRhYmxlXG4gICAgICAgICAgIHRoYXQgd2UgYXJlIGN1cnJlbnRseSBpdGVyYXRpbmcgb3Zlci4gKilcbiAgICAgICAgRGlyZWN0X3N0cmVhbV93cml0ZXIuY2xvc2Vfd2l0aG91dF9yZW1vdmluZ19mcm9tX2luc3RhbmNlIHdyaXRlclxuICAgICAgfCBQaXBlIF8gLT4gKCkpO1xuICAgIEhhc2h0YmwuY2xlYXIgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXNcbiAgOztcblxuICBsZXQgaGFuZGxlX3Vua25vd25fcnBjIG9uX3Vua25vd25fcnBjIGVycm9yIHQgcXVlcnkgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50ID1cbiAgICBtYXRjaCBvbl91bmtub3duX3JwYyB3aXRoXG4gICAgfCBgQ29udGludWUgLT4gQ29udGludWVcbiAgICB8IGBSYWlzZSAtPiBScGNfZXJyb3IucmFpc2UgZXJyb3IgdC5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgfCBgQ2xvc2VfY29ubmVjdGlvbiAtPiBTdG9wIChPayAoKSlcbiAgICB8IGBDYWxsIGYgLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgZlxuICAgICAgICAgICB0LmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgfnJwY190YWc6KFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkuUC5RdWVyeS50YWcpXG4gICAgICAgICAgIH52ZXJzaW9uOnF1ZXJ5LnZlcnNpb25cbiAgICAgICB3aXRoXG4gICAgICAgfCBgQ2xvc2VfY29ubmVjdGlvbiAtPiBTdG9wIChPayAoKSlcbiAgICAgICB8IGBDb250aW51ZSAtPiBDb250aW51ZSlcbiAgOztcblxuICBsZXQgaGFuZGxlX3F1ZXJ5X2ludGVybmFsXG4gICAgICAgIHRcbiAgICAgICAgfihxdWVyeSA6IE5hdDAudCBQLlF1ZXJ5LnQpXG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgPVxuICAgIGxldCB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfSA9IHQuaW1wbGVtZW50YXRpb25zIGluXG4gICAgbGV0IGRlc2NyaXB0aW9uIDogRGVzY3JpcHRpb24udCA9XG4gICAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LnRhZzsgdmVyc2lvbiA9IHF1ZXJ5LnZlcnNpb24gfVxuICAgIGluXG4gICAgbWF0Y2ggdC5sYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gd2l0aFxuICAgIHwgU29tZSAobGFzdF9kZXNjLCBpbXBsZW1lbnRhdGlvbikgd2hlbiBEZXNjcmlwdGlvbi5lcXVhbCBsYXN0X2Rlc2MgZGVzY3JpcHRpb24gLT5cbiAgICAgIGFwcGx5X2ltcGxlbWVudGF0aW9uXG4gICAgICAgIHRcbiAgICAgICAgaW1wbGVtZW50YXRpb24uZlxuICAgICAgICB+cXVlcnlcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgfm9uX2V4Y2VwdGlvbjppbXBsZW1lbnRhdGlvbi5vbl9leGNlcHRpb25cbiAgICB8IE5vbmUgfCBTb21lIF8gLT5cbiAgICAgIChtYXRjaCBIYXNodGJsLmZpbmQgaW1wbGVtZW50YXRpb25zIGRlc2NyaXB0aW9uIHdpdGhcbiAgICAgICB8IFNvbWUgaW1wbGVtZW50YXRpb24gLT5cbiAgICAgICAgIHQubGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIDwtIFNvbWUgKGRlc2NyaXB0aW9uLCBpbXBsZW1lbnRhdGlvbik7XG4gICAgICAgICBhcHBseV9pbXBsZW1lbnRhdGlvblxuICAgICAgICAgICB0XG4gICAgICAgICAgIGltcGxlbWVudGF0aW9uLmZcbiAgICAgICAgICAgfm9uX2V4Y2VwdGlvbjppbXBsZW1lbnRhdGlvbi5vbl9leGNlcHRpb25cbiAgICAgICAgICAgfnF1ZXJ5XG4gICAgICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICAobWF0Y2ggb25fdW5rbm93bl9ycGMgd2l0aFxuICAgICAgICAgIHwgYEV4cGVydCBpbXBsIC0+XG4gICAgICAgICAgICBsZXQgeyBQLlF1ZXJ5LnRhZzsgdmVyc2lvbjsgaWQ7IG1ldGFkYXRhID0gKF8gOiBzdHJpbmcgb3B0aW9uKTsgZGF0YSA9IGxlbiB9ID1cbiAgICAgICAgICAgICAgcXVlcnlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgICAgIGxldCByZXNwb25kZXIgPSBSZXNwb25kZXIuY3JlYXRlIGlkIHQud3JpdGVyIGluXG4gICAgICAgICAgICAgIGltcGxcbiAgICAgICAgICAgICAgICB0LmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgICAgICB+cnBjX3RhZzooUC5ScGNfdGFnLnRvX3N0cmluZyB0YWcpXG4gICAgICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgICAgICByZXNwb25kZXJcbiAgICAgICAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgICAgICAgIH5wb3M6IXJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgICB+bGVuOihsZW4gOj4gaW50KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIENvbnRpbnVlIGVsc2UgV2FpdCBkXG4gICAgICAgICAgfCAoYENvbnRpbnVlIHwgYFJhaXNlIHwgYENsb3NlX2Nvbm5lY3Rpb24gfCBgQ2FsbCBfKSBhcyBvbl91bmtub3duX3JwYyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yID0gUnBjX2Vycm9yLlVuaW1wbGVtZW50ZWRfcnBjIChxdWVyeS50YWcsIGBWZXJzaW9uIHF1ZXJ5LnZlcnNpb24pIGluXG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IHF1ZXJ5LmlkIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdCAoRXJyb3IgZXJyb3IpO1xuICAgICAgICAgICAgaGFuZGxlX3Vua25vd25fcnBjIG9uX3Vua25vd25fcnBjIGVycm9yIHQgcXVlcnkpKVxuICA7O1xuXG4gIGxldCBoYW5kbGVfcXVlcnlcbiAgICAgICAgKFQgdClcbiAgICAgICAgfihxdWVyeSA6IE5hdDAudCBQLlF1ZXJ5LnQpXG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgPVxuICAgIGlmIHQuc3RvcHBlZCB8fCBXcml0ZXIuaXNfY2xvc2VkIHQud3JpdGVyXG4gICAgdGhlbiBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQuU3RvcCAoT2sgKCkpXG4gICAgZWxzZVxuICAgICAgUnBjX21ldGFkYXRhLlByaXZhdGUud2l0aF9tZXRhZGF0YSBxdWVyeS5tZXRhZGF0YSB+ZjooZnVuICgpIC0+XG4gICAgICAgIGhhbmRsZV9xdWVyeV9pbnRlcm5hbFxuICAgICAgICAgIHRcbiAgICAgICAgICB+cXVlcnlcbiAgICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IpXG4gIDs7XG5lbmRcblxubW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gSW5zdGFuY2UuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxubGV0IGNyZWF0ZSB+aW1wbGVtZW50YXRpb25zOmkncyB+b25fdW5rbm93bl9ycGMgPVxuICAoKiBNYWtlIHN1cmUgdGhlIHRhZ3MgYXJlIHVuaXF1ZS4gKilcbiAgbGV0IGltcGxlbWVudGF0aW9ucyA9IERlc2NyaXB0aW9uLlRhYmxlLmNyZWF0ZSB+c2l6ZToxMCAoKSBpblxuICBsZXQgZHVwcyA9IERlc2NyaXB0aW9uLkhhc2hfc2V0LmNyZWF0ZSB+c2l6ZToxMCAoKSBpblxuICBMaXN0Lml0ZXIgaSdzIH5mOihmdW4gKGkgOiBfIEltcGxlbWVudGF0aW9uLnQpIC0+XG4gICAgbGV0IGRlc2NyaXB0aW9uID1cbiAgICAgIHsgRGVzY3JpcHRpb24ubmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgaS50YWc7IHZlcnNpb24gPSBpLnZlcnNpb24gfVxuICAgIGluXG4gICAgbWF0Y2ggSGFzaHRibC5hZGQgaW1wbGVtZW50YXRpb25zIH5rZXk6ZGVzY3JpcHRpb24gfmRhdGE6aSB3aXRoXG4gICAgfCBgT2sgLT4gKClcbiAgICB8IGBEdXBsaWNhdGUgLT4gSGFzaF9zZXQuYWRkIGR1cHMgZGVzY3JpcHRpb24pO1xuICBpZiBub3QgKEhhc2hfc2V0LmlzX2VtcHR5IGR1cHMpXG4gIHRoZW4gRXJyb3IgKGBEdXBsaWNhdGVfaW1wbGVtZW50YXRpb25zIChIYXNoX3NldC50b19saXN0IGR1cHMpKVxuICBlbHNlIE9rIHsgaW1wbGVtZW50YXRpb25zOyBvbl91bmtub3duX3JwYyA6PiBfIG9uX3Vua25vd25fcnBjX3dpdGhfZXhwZXJ0IH1cbjs7XG5cbmxldCBpbnN0YW50aWF0ZVxuICAgICAgdFxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB+d3JpdGVyXG4gID1cbiAgbGV0IHJlYyB1bnBhY2tlZCA6IF8gSW5zdGFuY2UudW5wYWNrZWQgPVxuICAgIHsgaW1wbGVtZW50YXRpb25zID0gdFxuICAgIDsgd3JpdGVyXG4gICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgPSBIYXNodGJsLlBvbHkuY3JlYXRlIH5zaXplOjEwICgpXG4gICAgOyBjb25uZWN0aW9uX3N0YXRlXG4gICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgOyBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICA7IHN0b3BwZWQgPSBmYWxzZVxuICAgIDsgbGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uID0gTm9uZVxuICAgIDsgcGFja2VkX3NlbGYgPSBJbnN0YW5jZS5UIHVucGFja2VkXG4gICAgfVxuICBpblxuICB1bnBhY2tlZC5wYWNrZWRfc2VsZlxuOztcblxuZXhjZXB0aW9uIER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgb2YgRGVzY3JpcHRpb24udCBsaXN0IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCBjcmVhdGVfZXhuIH5pbXBsZW1lbnRhdGlvbnMgfm9uX3Vua25vd25fcnBjID1cbiAgbWF0Y2ggY3JlYXRlIH5pbXBsZW1lbnRhdGlvbnMgfm9uX3Vua25vd25fcnBjIHdpdGhcbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciAoYER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgZHVwcykgLT4gcmFpc2UgKER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgZHVwcylcbjs7XG5cbmxldCBudWxsICgpID0gY3JlYXRlX2V4biB+aW1wbGVtZW50YXRpb25zOltdIH5vbl91bmtub3duX3JwYzpgUmFpc2VcblxubGV0IGFkZF9leG4gdCAoaW1wbGVtZW50YXRpb24gOiBfIEltcGxlbWVudGF0aW9uLnQpID1cbiAgbGV0IGRlc2MgOiBEZXNjcmlwdGlvbi50ID1cbiAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIGltcGxlbWVudGF0aW9uLnRhZzsgdmVyc2lvbiA9IGltcGxlbWVudGF0aW9uLnZlcnNpb24gfVxuICBpblxuICBsZXQgaW1wbGVtZW50YXRpb25zID0gSGFzaHRibC5jb3B5IHQuaW1wbGVtZW50YXRpb25zIGluXG4gIG1hdGNoIEhhc2h0YmwuYWRkIGltcGxlbWVudGF0aW9ucyB+a2V5OmRlc2MgfmRhdGE6aW1wbGVtZW50YXRpb24gd2l0aFxuICB8IGBEdXBsaWNhdGUgLT4gcmFpc2UgKER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgWyBkZXNjIF0pXG4gIHwgYE9rIC0+IHsgdCB3aXRoIGltcGxlbWVudGF0aW9ucyB9XG47O1xuXG5sZXQgYWRkIHQgaW1wbGVtZW50YXRpb24gPSBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGFkZF9leG4gdCBpbXBsZW1lbnRhdGlvbilcblxubGV0IGxpZnQgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIH0gfmYgPVxuICBsZXQgaW1wbGVtZW50YXRpb25zID0gSGFzaHRibC5tYXAgaW1wbGVtZW50YXRpb25zIH5mOihJbXBsZW1lbnRhdGlvbi5saWZ0IH5mKSBpblxuICBsZXQgb25fdW5rbm93bl9ycGMgPVxuICAgIG1hdGNoIG9uX3Vua25vd25fcnBjIHdpdGhcbiAgICB8IChgUmFpc2UgfCBgQ29udGludWUgfCBgQ2xvc2VfY29ubmVjdGlvbikgYXMgeCAtPiB4XG4gICAgfCBgQ2FsbCBjYWxsIC0+IGBDYWxsIChmdW4gc3RhdGUgLT4gY2FsbCAoZiBzdGF0ZSkpXG4gICAgfCBgRXhwZXJ0IGV4cGVydCAtPiBgRXhwZXJ0IChmdW4gc3RhdGUgLT4gZXhwZXJ0IChmIHN0YXRlKSlcbiAgaW5cbiAgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIH1cbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlc3BvbmRlciA9IFJlc3BvbmRlclxuXG4gIG1vZHVsZSBScGNfcmVzcG9uZGVyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gUmVzcG9uZGVyLnRcblxuICAgIGxldCBjYW5ub3Rfc2VuZCByID1cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiTWVzc2FnZSBjYW5ub3QgYmUgc2VudFwiXG4gICAgICAgIHJcbiAgICAgICAgWyVzZXhwX29mOiBfIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XVxuICAgIDs7XG5cbiAgICBsZXQgbWFya19yZXNwb25kZWQgKHQgOiB0KSA9XG4gICAgICBpZiB0LnJlc3BvbmRlZFxuICAgICAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIkFscmVhZHkgcmVzcG9uZGVkXCIgdCBbJXNleHBfb2Y6IFJlc3BvbmRlci50XTtcbiAgICAgIHQucmVzcG9uZGVkIDwtIHRydWVcbiAgICA7O1xuXG4gICAgbGV0IHNjaGVkdWxlICh0IDogdCkgYnVmIH5wb3MgfmxlbiA9XG4gICAgICBtYXJrX3Jlc3BvbmRlZCB0O1xuICAgICAgbGV0IGhlYWRlciA6IE5hdDAudCBQLk1lc3NhZ2UudCA9XG4gICAgICAgIFJlc3BvbnNlIHsgaWQgPSB0LnF1ZXJ5X2lkOyBkYXRhID0gT2sgKE5hdDAub2ZfaW50X2V4biBsZW4pIH1cbiAgICAgIGluXG4gICAgICBtYXRjaFxuICAgICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG4gICAgICAgICAgdC53cml0ZXJcbiAgICAgICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgICBoZWFkZXJcbiAgICAgICAgICB+YnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgIHdpdGhcbiAgICAgIHwgU2VudCBkIC0+IGBGbHVzaGVkIGRcbiAgICAgIHwgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+IGNhbm5vdF9zZW5kIHJcbiAgICA7O1xuXG4gICAgbGV0IGhhbmRsZV9zZW5kX3Jlc3VsdCA6IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQgLT4gdW5pdCA9IGZ1bmN0aW9uXG4gICAgICB8IFNlbnQgKCkgfCBDbG9zZWQgLT4gKClcbiAgICAgIHwgTWVzc2FnZV90b29fYmlnIF8gYXMgciAtPiBjYW5ub3Rfc2VuZCByXG4gICAgOztcblxuICAgIGxldCB3cml0ZV9iaWdzdHJpbmcgKHQgOiB0KSBidWYgfnBvcyB+bGVuID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBsZXQgaGVhZGVyIDogTmF0MC50IFAuTWVzc2FnZS50ID1cbiAgICAgICAgUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayAoTmF0MC5vZl9pbnRfZXhuIGxlbikgfVxuICAgICAgaW5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICAgICAgdC53cml0ZXJcbiAgICAgICAgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90XG4gICAgICAgIGhlYWRlclxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0XG4gICAgOztcblxuICAgIGxldCB3cml0ZV9lcnJvciAodCA6IHQpIGVycm9yID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBsZXQgZGF0YSA9XG4gICAgICAgIFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcmF3IHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgKEVycm9yLnRvX2V4biBlcnJvcilcbiAgICAgIGluXG4gICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdFxuICAgICAgICB0LndyaXRlclxuICAgICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgKFJlc3BvbnNlIHsgaWQgPSB0LnF1ZXJ5X2lkOyBkYXRhIH0pXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2Jpbl9wcm90ICh0IDogdCkgYmluX3dyaXRlcl9hIGEgPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICAgIHQud3JpdGVyXG4gICAgICAgIChQLk1lc3NhZ2UuYmluX3dyaXRlcl9uZWVkc19sZW5ndGggKFdyaXRlcl93aXRoX2xlbmd0aC5vZl93cml0ZXIgYmluX3dyaXRlcl9hKSlcbiAgICAgICAgKFJlc3BvbnNlIHsgaWQgPSB0LnF1ZXJ5X2lkOyBkYXRhID0gT2sgYSB9KVxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGNyZWF0ZV9leG4gPSBjcmVhdGVfZXhuXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm1vZHVsZSBUaW1lX25zID0gQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbm1vZHVsZSBQID0gUHJvdG9jb2xcbm1vZHVsZSBSZWFkZXIgPSBUcmFuc3BvcnQuUmVhZGVyXG5tb2R1bGUgV3JpdGVyID0gVHJhbnNwb3J0LldyaXRlclxuXG5tb2R1bGUgSGFuZHNoYWtlX2Vycm9yID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRW9mXG4gICAgICB8IFRyYW5zcG9ydF9jbG9zZWRcbiAgICAgIHwgVGltZW91dFxuICAgICAgfCBSZWFkaW5nX2hlYWRlcl9mYWlsZWQgb2YgRXJyb3IudFxuICAgICAgfCBOZWdvdGlhdGlvbl9mYWlsZWQgb2YgRXJyb3IudFxuICAgICAgfCBOZWdvdGlhdGVkX3VuZXhwZWN0ZWRfdmVyc2lvbiBvZiBpbnRcbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGV4Y2VwdGlvbiBIYW5kc2hha2VfZXJyb3Igb2YgKHQgKiBJbmZvLnQpIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgbGV0IHRvX2V4biB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbiB0ID0gSGFuZHNoYWtlX2Vycm9yICh0LCBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uKVxuZW5kXG5cbm1vZHVsZSBIZWFkZXIgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICB2YWwgdjEgOiB0XG4gIHZhbCB2MiA6IHRcbiAgdmFsIG5lZ290aWF0ZSA6IHVzOnQgLT4gcGVlcjp0IC0+IChpbnQsIEhhbmRzaGFrZV9lcnJvci50KSByZXN1bHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFAuSGVhZGVyXG5cbiAgbGV0IGNyZWF0ZSB+c3VwcG9ydGVkX3ZlcnNpb25zID1cbiAgICBQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5jcmVhdGVfZXhuICgpIH5wcm90b2NvbDpScGMgfnN1cHBvcnRlZF92ZXJzaW9uc1xuICA7O1xuXG4gIGxldCB2MiA9IGNyZWF0ZSB+c3VwcG9ydGVkX3ZlcnNpb25zOlsgMTsgMiBdXG4gIGxldCB2MSA9IGNyZWF0ZSB+c3VwcG9ydGVkX3ZlcnNpb25zOlsgMSBdXG5cbiAgbGV0IG5lZ290aWF0ZSB+dXMgfnBlZXIgPVxuICAgIG1hdGNoIG5lZ290aWF0ZSB+YWxsb3dfbGVnYWN5X3BlZXI6dHJ1ZSB+dXMgfnBlZXIgd2l0aFxuICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoSGFuZHNoYWtlX2Vycm9yLk5lZ290aWF0aW9uX2ZhaWxlZCBlKVxuICAgIHwgT2sgaSAtPiBPayBpXG4gIDs7XG5lbmRcblxubW9kdWxlIFByb3RvY29sX3dyaXRlciA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgc2V4cF9vZl93cml0ZXIgOiB0IC0+IFNleHAudFxuICB2YWwgY3JlYXRlX2JlZm9yZV9uZWdvdGlhdGlvbiA6IFdyaXRlci50IC0+IHRcbiAgdmFsIHNldF9uZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gOiB0IC0+IGludCAtPiB1bml0XG5cbiAgdmFsIHNlbmRfcXVlcnlcbiAgICA6ICB0XG4gICAgLT4gJ3F1ZXJ5IFAuUXVlcnkudFxuICAgIC0+IGJpbl93cml0ZXJfcXVlcnk6J3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgLT4gdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudFxuXG4gIHZhbCBzZW5kX2V4cGVydF9xdWVyeVxuICAgIDogIHRcbiAgICAtPiB1bml0IFAuUXVlcnkudFxuICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgIC0+IHBvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nOlxuICAgICAgICAgKFdyaXRlci50XG4gICAgICAgICAgLT4gUC5NZXNzYWdlLm5hdDBfdCBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAgIC0+IFAuTWVzc2FnZS5uYXQwX3RcbiAgICAgICAgICAtPiBidWY6Qmlnc3RyaW5nLnRcbiAgICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAgIC0+ICdyZXN1bHQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQpXG4gICAgLT4gJ3Jlc3VsdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudFxuXG4gIHZhbCBzZW5kX2hlYXJ0YmVhdCA6IHQgLT4gdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudFxuICB2YWwgY2FuX3NlbmQgOiB0IC0+IGJvb2xcbiAgdmFsIGJ5dGVzX3RvX3dyaXRlIDogdCAtPiBpbnRcbiAgdmFsIGJ5dGVzX3dyaXR0ZW4gOiB0IC0+IEludDYzLnRcbiAgdmFsIGZsdXNoZWQgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuICB2YWwgc3RvcHBlZCA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCBjbG9zZSA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA6IGludCBTZXRfb25jZS50XG4gICAgOyB3cml0ZXIgOiBXcml0ZXIudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl93cml0ZXIgdCA9IFslc2V4cF9vZjogV3JpdGVyLnRdIHQud3JpdGVyXG5cbiAgbGV0IGNyZWF0ZV9iZWZvcmVfbmVnb3RpYXRpb24gd3JpdGVyID1cbiAgICB7IG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA9IFNldF9vbmNlLmNyZWF0ZSAoKTsgd3JpdGVyIH1cbiAgOztcblxuICBsZXQgc2V0X25lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiB0IG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA9XG4gICAgU2V0X29uY2Uuc2V0X2V4biB0Lm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiBbJWhlcmVdIG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvblxuICA7O1xuXG4gIGxldCBxdWVyeV9tZXNzYWdlIHQgcXVlcnkgOiBfIFAuTWVzc2FnZS50ID1cbiAgICBtYXRjaCBTZXRfb25jZS5nZXRfZXhuIHQubmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIFslaGVyZV0gd2l0aFxuICAgIHwgMSAtPiBRdWVyeV92MSAoUC5RdWVyeS50b192MSBxdWVyeSlcbiAgICB8IF8gLT4gUXVlcnkgcXVlcnlcbiAgOztcblxuICBsZXQgc2VuZF9xdWVyeSB0IHF1ZXJ5IH5iaW5fd3JpdGVyX3F1ZXJ5ID1cbiAgICBsZXQgbWVzc2FnZSA9IHF1ZXJ5X21lc3NhZ2UgdCBxdWVyeSBpblxuICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICB0LndyaXRlclxuICAgICAgKFAuTWVzc2FnZS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aCAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3dyaXRlciBiaW5fd3JpdGVyX3F1ZXJ5KSlcbiAgICAgIG1lc3NhZ2VcbiAgOztcblxuICBsZXQgc2VuZF9leHBlcnRfcXVlcnkgdCBxdWVyeSB+YnVmIH5wb3MgfmxlbiB+c2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nID1cbiAgICBsZXQgaGVhZGVyID0gcXVlcnlfbWVzc2FnZSB0IHsgcXVlcnkgd2l0aCBkYXRhID0gTmF0MC5vZl9pbnRfZXhuIGxlbiB9IGluXG4gICAgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIHQud3JpdGVyIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdCBoZWFkZXIgfmJ1ZiB+cG9zIH5sZW5cbiAgOztcblxuICBsZXQgc2VuZF9oZWFydGJlYXQgdCA9XG4gICAgV3JpdGVyLnNlbmRfYmluX3Byb3QgdC53cml0ZXIgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IEhlYXJ0YmVhdFxuICA7O1xuXG4gIGxldCBvZl93cml0ZXIgZiB0ID0gZiB0LndyaXRlclxuICBsZXQgY2FuX3NlbmQgPSBvZl93cml0ZXIgV3JpdGVyLmNhbl9zZW5kXG4gIGxldCBieXRlc190b193cml0ZSA9IG9mX3dyaXRlciBXcml0ZXIuYnl0ZXNfdG9fd3JpdGVcbiAgbGV0IGJ5dGVzX3dyaXR0ZW4gPSBvZl93cml0ZXIgV3JpdGVyLmJ5dGVzX3dyaXR0ZW5cbiAgbGV0IGZsdXNoZWQgPSBvZl93cml0ZXIgV3JpdGVyLmZsdXNoZWRcbiAgbGV0IHN0b3BwZWQgPSBvZl93cml0ZXIgV3JpdGVyLnN0b3BwZWRcbiAgbGV0IGNsb3NlID0gb2Zfd3JpdGVyIFdyaXRlci5jbG9zZVxuZW5kXG5cbm1vZHVsZSBIZWFydGJlYXRfY29uZmlnID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyB0aW1lb3V0IDogVGltZV9ucy5TcGFuLnRcbiAgICA7IHNlbmRfZXZlcnkgOiBUaW1lX25zLlNwYW4udFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBmaWVsZHNdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICBbJWV4cGVjdCB7fCA3NGExZjQ3NWJmYjJlZWQ1YTUwOWJhNzFjZDc4OTFkMiB8fV1cbiAgOztcblxuICBsZXQgY3JlYXRlXG4gICAgICAgID8odGltZW91dCA9IFRpbWVfbnMuU3Bhbi5vZl9zZWMgMzAuKVxuICAgICAgICA/KHNlbmRfZXZlcnkgPSBUaW1lX25zLlNwYW4ub2Zfc2VjIDEwLilcbiAgICAgICAgKClcbiAgICA9XG4gICAgeyB0aW1lb3V0OyBzZW5kX2V2ZXJ5IH1cbiAgOztcblxuICBtb2R1bGUgUnVudGltZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG11dGFibGUgdGltZW91dCA6IFRpbWVfbnMuU3Bhbi50XG4gICAgICA7IHNlbmRfZXZlcnkgOiBUaW1lX25zLlNwYW4udFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCB0b19ydW50aW1lIHsgdGltZW91dDsgc2VuZF9ldmVyeSB9ID0geyBSdW50aW1lLnRpbWVvdXQ7IHNlbmRfZXZlcnkgfVxuZW5kXG5cbnR5cGUgcmVzcG9uc2VfaGFuZGxlciA9XG4gIE5hdDAudCBQLlJlc3BvbnNlLnRcbiAgLT4gcmVhZF9idWZmZXI6Qmlnc3RyaW5nLnRcbiAgLT4gcmVhZF9idWZmZXJfcG9zX3JlZjppbnQgcmVmXG4gIC0+IFsgYGtlZXBcbiAgICAgfCBgd2FpdCBvZiB1bml0IERlZmVycmVkLnRcbiAgICAgfCBgcmVtb3ZlIG9mIHVuaXQgUnBjX3Jlc3VsdC50XG4gICAgIHwgYHJlbW92ZV9hbmRfd2FpdCBvZiB1bml0IERlZmVycmVkLnRcbiAgICAgXVxuXG50eXBlIHQgPVxuICB7IGRlc2NyaXB0aW9uIDogSW5mby50XG4gIDsgaGVhcnRiZWF0X2NvbmZpZyA6IEhlYXJ0YmVhdF9jb25maWcuUnVudGltZS50XG4gIDsgbXV0YWJsZSBoZWFydGJlYXRfY2FsbGJhY2tzIDogKHVuaXQgLT4gdW5pdCkgYXJyYXlcbiAgOyBtdXRhYmxlIGxhc3Rfc2Vlbl9hbGl2ZSA6IFRpbWVfbnMudFxuICA7IG1heF9tZXRhZGF0YV9zaXplIDogQnl0ZV91bml0cy50XG4gIDsgcmVhZGVyIDogUmVhZGVyLnRcbiAgOyB3cml0ZXIgOiBQcm90b2NvbF93cml0ZXIudFxuICA7IG9wZW5fcXVlcmllcyA6IChQLlF1ZXJ5X2lkLnQsIChyZXNwb25zZV9oYW5kbGVyW0BzZXhwLm9wYXF1ZV0pKSBIYXNodGJsLnRcbiAgOyBjbG9zZV9zdGFydGVkIDogSW5mby50IEl2YXIudFxuICA7IGNsb3NlX2ZpbmlzaGVkIDogdW5pdCBJdmFyLnRcbiAgKCogVGhlcmUncyBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBjb25uZWN0aW9ucyBhbmQgdGhlaXIgaW1wbGVtZW50YXRpb24gaW5zdGFuY2VzXG4gICAgICh0aGUgbGF0dGVyIGRlcGVuZHMgb24gdGhlIGNvbm5lY3Rpb24gc3RhdGUsIHdoaWNoIGlzIGdpdmVuIGFjY2VzcyB0byB0aGUgY29ubmVjdGlvblxuICAgICB3aGVuIGl0IGlzIGNyZWF0ZWQpLiAqKVxuICA7IGltcGxlbWVudGF0aW9uc19pbnN0YW5jZSA6IEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS50IFNldF9vbmNlLnRcbiAgOyB0aW1lX3NvdXJjZSA6IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLnRcbiAgOyBoZWFydGJlYXRfZXZlbnQgOiBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC50IFNldF9vbmNlLnRcbiAgOyBuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gOiBpbnQgU2V0X29uY2UudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90X2h1bV93cml0ZXIgdCA9XG4gIFslc2V4cFxuICAgIHsgZGVzY3JpcHRpb24gOiBJbmZvLnQgPSB0LmRlc2NyaXB0aW9uOyB3cml0ZXIgOiBQcm90b2NvbF93cml0ZXIud3JpdGVyID0gdC53cml0ZXIgfV1cbjs7XG5cbmxldCBkZXNjcmlwdGlvbiB0ID0gdC5kZXNjcmlwdGlvblxubGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuXG5sZXQgd3JpdGVyIHQgPVxuICBpZiBpc19jbG9zZWQgdCB8fCBub3QgKFByb3RvY29sX3dyaXRlci5jYW5fc2VuZCB0LndyaXRlcilcbiAgdGhlbiBFcnJvciBgQ2xvc2VkXG4gIGVsc2UgT2sgdC53cml0ZXJcbjs7XG5cbmxldCBieXRlc190b193cml0ZSB0ID0gUHJvdG9jb2xfd3JpdGVyLmJ5dGVzX3RvX3dyaXRlIHQud3JpdGVyXG5sZXQgYnl0ZXNfd3JpdHRlbiB0ID0gUHJvdG9jb2xfd3JpdGVyLmJ5dGVzX3dyaXR0ZW4gdC53cml0ZXJcbmxldCBieXRlc19yZWFkIHQgPSBSZWFkZXIuYnl0ZXNfcmVhZCB0LnJlYWRlclxubGV0IGZsdXNoZWQgdCA9IFByb3RvY29sX3dyaXRlci5mbHVzaGVkIHQud3JpdGVyXG5cbmxldCBoYW5kbGVfc2VuZF9yZXN1bHQgOiB0IC0+ICdhIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50IC0+ICdhID1cbiAgZnVuIHQgciAtPlxuICBtYXRjaCByIHdpdGhcbiAgfCBTZW50IHggLT4geFxuICB8IENsb3NlZCAtPlxuICAgICgqIEFsbCBvZiB0aGUgcGxhY2VzIHdlIGNhbGwgW2hhbmRsZV9zZW5kX3Jlc3VsdF0gY2hlY2sgd2hldGhlciBbdF0gaXMgY2xvc2VkXG4gICAgICAgKHVzdWFsbHkgdmlhIHRoZSBbd3JpdGVyXSBmdW5jdGlvbiBhYm92ZSkuIFRoaXMgY2hlY2tzIHdoZXRoZXIgW3Qud3JpdGVyXSBpc1xuICAgICAgIGNsb3NlZCwgd2hpY2ggc2hvdWxkIG5vdCBoYXBwZW4gdW5sZXNzIFt0XSBpcyBjbG9zZWQuICopXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJSUEMgY29ubmVjdGlvbiBnb3QgY2xvc2VkIHdyaXRlclwiIHQgc2V4cF9vZl90X2h1bV93cml0ZXJcbiAgfCBNZXNzYWdlX3Rvb19iaWcgXyAtPlxuICAgIHJhaXNlX3NcbiAgICAgIFslc2V4cFxuICAgICAgICBcIk1lc3NhZ2UgY2Fubm90IGJlIHNlbnRcIlxuICAgICAgLCB7IHJlYXNvbiA9IChyIDogXyBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCk7IGNvbm5lY3Rpb24gPSAodCA6IHRfaHVtX3dyaXRlcikgfV1cbjs7XG5cbmxldCBkaXNwYXRjaCB0IH5yZXNwb25zZV9oYW5kbGVyIH5iaW5fd3JpdGVyX3F1ZXJ5IH4ocXVlcnkgOiBfIFAuUXVlcnkudCkgPVxuICBtYXRjaCB3cml0ZXIgdCB3aXRoXG4gIHwgRXJyb3IgYENsb3NlZCBhcyByIC0+IHJcbiAgfCBPayB3cml0ZXIgLT5cbiAgICBsZXQgcXVlcnkgPVxuICAgICAgbWF0Y2ggcXVlcnkubWV0YWRhdGEgd2l0aFxuICAgICAgfCBTb21lIG1ldGFkYXRhIC0+XG4gICAgICAgIHsgcXVlcnkgd2l0aFxuICAgICAgICAgIG1ldGFkYXRhID1cbiAgICAgICAgICAgIFNvbWUgKFN0cmluZy5wcmVmaXggbWV0YWRhdGEgKEJ5dGVfdW5pdHMuYnl0ZXNfaW50X2V4biB0Lm1heF9tZXRhZGF0YV9zaXplKSlcbiAgICAgICAgfVxuICAgICAgfCBOb25lIC0+IHF1ZXJ5XG4gICAgaW5cbiAgICBPcHRpb24uaXRlciByZXNwb25zZV9oYW5kbGVyIH5mOihmdW4gcmVzcG9uc2VfaGFuZGxlciAtPlxuICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3F1ZXJpZXMgfmtleTpxdWVyeS5pZCB+ZGF0YTpyZXNwb25zZV9oYW5kbGVyKTtcbiAgICBQcm90b2NvbF93cml0ZXIuc2VuZF9xdWVyeSB3cml0ZXIgcXVlcnkgfmJpbl93cml0ZXJfcXVlcnkgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQ7XG4gICAgT2sgKClcbjs7XG5cbmxldCBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgZG9fc2VuZFxuICAgICAgP21ldGFkYXRhXG4gICAgICB0XG4gICAgICB+dGFnXG4gICAgICB+dmVyc2lvblxuICAgICAgYnVmXG4gICAgICB+cG9zXG4gICAgICB+bGVuXG4gICAgICB+cmVzcG9uc2VfaGFuZGxlclxuICA9XG4gIG1hdGNoIHdyaXRlciB0IHdpdGhcbiAgfCBFcnJvciBgQ2xvc2VkIC0+IEVycm9yIGBDbG9zZWRcbiAgfCBPayB3cml0ZXIgLT5cbiAgICBsZXQgaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIGxldCBxdWVyeSA6IHVuaXQgUC5RdWVyeS50ID0geyB0YWc7IHZlcnNpb247IGlkOyBtZXRhZGF0YTsgZGF0YSA9ICgpIH0gaW5cbiAgICBPcHRpb24uaXRlciByZXNwb25zZV9oYW5kbGVyIH5mOihmdW4gcmVzcG9uc2VfaGFuZGxlciAtPlxuICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3F1ZXJpZXMgfmtleTppZCB+ZGF0YTpyZXNwb25zZV9oYW5kbGVyKTtcbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIFByb3RvY29sX3dyaXRlci5zZW5kX2V4cGVydF9xdWVyeVxuICAgICAgICB3cml0ZXJcbiAgICAgICAgcXVlcnlcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICAgICAgfnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZzpkb19zZW5kXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdFxuICAgIGluXG4gICAgT2sgcmVzdWx0XG47O1xuXG5sZXQgZGlzcGF0Y2hfYmlnc3RyaW5nID0gbWFrZV9kaXNwYXRjaF9iaWdzdHJpbmcgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuXG5sZXQgc2NoZWR1bGVfZGlzcGF0Y2hfYmlnc3RyaW5nID1cbiAgbWFrZV9kaXNwYXRjaF9iaWdzdHJpbmcgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZ1xuOztcblxubGV0IGhhbmRsZV9yZXNwb25zZSB0IChyZXNwb25zZSA6IF8gUC5SZXNwb25zZS50KSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIHQub3Blbl9xdWVyaWVzIHJlc3BvbnNlLmlkIHdpdGhcbiAgfCBOb25lIC0+IFN0b3AgKEVycm9yIChScGNfZXJyb3IuVW5rbm93bl9xdWVyeV9pZCByZXNwb25zZS5pZCkpXG4gIHwgU29tZSByZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgKG1hdGNoIHJlc3BvbnNlX2hhbmRsZXIgcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmIHdpdGhcbiAgICAgfCBga2VlcCAtPiBDb250aW51ZVxuICAgICB8IGB3YWl0IHdhaXQgLT4gV2FpdCB3YWl0XG4gICAgIHwgYHJlbW92ZV9hbmRfd2FpdCB3YWl0IC0+XG4gICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3F1ZXJpZXMgcmVzcG9uc2UuaWQ7XG4gICAgICAgV2FpdCB3YWl0XG4gICAgIHwgYHJlbW92ZSByZW1vdmFsX2NpcmN1bXN0YW5jZXMgLT5cbiAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fcXVlcmllcyByZXNwb25zZS5pZDtcbiAgICAgICAobWF0Y2ggcmVtb3ZhbF9jaXJjdW1zdGFuY2VzIHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBDb250aW51ZVxuICAgICAgICB8IEVycm9yIGUgLT5cbiAgICAgICAgICAobWF0Y2ggZSB3aXRoXG4gICAgICAgICAgIHwgVW5pbXBsZW1lbnRlZF9ycGMgXyAtPiBDb250aW51ZVxuICAgICAgICAgICB8IEJpbl9pb19leG4gX1xuICAgICAgICAgICB8IENvbm5lY3Rpb25fY2xvc2VkXG4gICAgICAgICAgIHwgV3JpdGVfZXJyb3IgX1xuICAgICAgICAgICB8IFVuY2F1Z2h0X2V4biBfXG4gICAgICAgICAgIHwgVW5rbm93bl9xdWVyeV9pZCBfIC0+IFN0b3AgKEVycm9yIGUpKSkpXG47O1xuXG5sZXQgaGFuZGxlX21zZ1xuICAgICAgdFxuICAgICAgKG1zZyA6IF8gUC5NZXNzYWdlLnQpXG4gICAgICB+cmVhZF9idWZmZXJcbiAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudFxuICA9XG4gIG1hdGNoIG1zZyB3aXRoXG4gIHwgSGVhcnRiZWF0IC0+XG4gICAgQXJyYXkuaXRlciB0LmhlYXJ0YmVhdF9jYWxsYmFja3MgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICAgIENvbnRpbnVlXG4gIHwgUmVzcG9uc2UgcmVzcG9uc2UgLT4gaGFuZGxlX3Jlc3BvbnNlIHQgcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gIHwgUXVlcnkgcXVlcnkgLT5cbiAgICBsZXQgaW5zdGFuY2UgPSBTZXRfb25jZS5nZXRfZXhuIHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIFslaGVyZV0gaW5cbiAgICBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UuaGFuZGxlX3F1ZXJ5XG4gICAgICBpbnN0YW5jZVxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgfnF1ZXJ5XG4gICAgICB+cmVhZF9idWZmZXJcbiAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gIHwgUXVlcnlfdjEgcXVlcnkgLT5cbiAgICBsZXQgaW5zdGFuY2UgPSBTZXRfb25jZS5nZXRfZXhuIHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIFslaGVyZV0gaW5cbiAgICBsZXQgcXVlcnkgPSBQLlF1ZXJ5Lm9mX3YxIHF1ZXJ5IGluXG4gICAgSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLmhhbmRsZV9xdWVyeVxuICAgICAgaW5zdGFuY2VcbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgIH5xdWVyeVxuICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuOztcblxubGV0IGNsb3NlX3JlYXNvbiB0IH5vbl9jbG9zZSA9XG4gIGxldCByZWFzb24gPSBJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkIGluXG4gIG1hdGNoIG9uX2Nsb3NlIHdpdGhcbiAgfCBgc3RhcnRlZCAtPiByZWFzb25cbiAgfCBgZmluaXNoZWQgLT5cbiAgICBsZXQlYmluZCAoKSA9IEl2YXIucmVhZCB0LmNsb3NlX2ZpbmlzaGVkIGluXG4gICAgcmVhc29uXG47O1xuXG5sZXQgY2xvc2VfZmluaXNoZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlX2ZpbmlzaGVkXG5cbmxldCBhZGRfaGVhcnRiZWF0X2NhbGxiYWNrIHQgZiA9XG4gICgqIEFkZGluZyBoZWFydGJlYXQgY2FsbGJhY2tzIGlzIHJlbGF0aXZlbHkgcmFyZSwgYnV0IHRoZSBjYWxsYmFja3MgYXJlIHRyaWdnZXJlZCBhIGxvdC5cbiAgICAgVGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG1ha2VzIHRoZSBhZGRpdGlvbiBxdWFkcmF0aWMgZm9yIHRoZSBzYWtlIG9mIGtlZXBpbmcgdGhlXG4gICAgIHRyaWdnZXJpbmcgY2hlYXAuICopXG4gIHQuaGVhcnRiZWF0X2NhbGxiYWNrcyA8LSBBcnJheS5hcHBlbmQgW3wgZiB8XSB0LmhlYXJ0YmVhdF9jYWxsYmFja3Ncbjs7XG5cbmxldCByZXNldF9oZWFydGJlYXRfdGltZW91dCB0IHRpbWVvdXQgPVxuICB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dCA8LSB0aW1lb3V0O1xuICB0Lmxhc3Rfc2Vlbl9hbGl2ZSA8LSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZVxuOztcblxubGV0IGxhc3Rfc2Vlbl9hbGl2ZSB0ID0gdC5sYXN0X3NlZW5fYWxpdmVcblxubGV0IGFib3J0X2hlYXJ0YmVhdGluZyB0ID1cbiAgT3B0aW9uLml0ZXIgKFNldF9vbmNlLmdldCB0LmhlYXJ0YmVhdF9ldmVudCkgfmY6KGZ1biBldmVudCAtPlxuICAgIG1hdGNoIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LmFib3J0IHQudGltZV9zb3VyY2UgZXZlbnQgd2l0aFxuICAgIHwgT2sgfCBQcmV2aW91c2x5X3Vuc2NoZWR1bGVkIC0+ICgpKVxuOztcblxubGV0IGNsb3NlID8oc3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0ID0gVGltZV9ucy5TcGFuLm9mX2ludF9zZWMgNSkgfnJlYXNvbiB0ID1cbiAgaWYgbm90IChpc19jbG9zZWQgdClcbiAgdGhlbiAoXG4gICAgYWJvcnRfaGVhcnRiZWF0aW5nIHQ7XG4gICAgSXZhci5maWxsIHQuY2xvc2Vfc3RhcnRlZCByZWFzb247XG4gICAgKG1hdGNoIFNldF9vbmNlLmdldCB0LmltcGxlbWVudGF0aW9uc19pbnN0YW5jZSB3aXRoXG4gICAgIHwgTm9uZSAtPiBEZWZlcnJlZC51bml0XG4gICAgIHwgU29tZSBpbnN0YW5jZSAtPlxuICAgICAgIGxldCBmbHVzaGVkID0gSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLmZsdXNoIGluc3RhbmNlIGluXG4gICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBmbHVzaGVkXG4gICAgICAgdGhlbiAoXG4gICAgICAgICBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2Uuc3RvcCBpbnN0YW5jZTtcbiAgICAgICAgIGZsdXNoZWQpXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICAgRGVmZXJyZWQuYW55X3VuaXRcbiAgICAgICAgICAgICBbIGZsdXNoZWRcbiAgICAgICAgICAgICA7IFByb3RvY29sX3dyaXRlci5zdG9wcGVkIHQud3JpdGVyXG4gICAgICAgICAgICAgOyBUaW1lX3NvdXJjZS5hZnRlclxuICAgICAgICAgICAgICAgICAoVGltZV9zb3VyY2Uub2Zfc3luY2hyb25vdXMgdC50aW1lX3NvdXJjZSlcbiAgICAgICAgICAgICAgICAgc3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0XG4gICAgICAgICAgICAgXVxuICAgICAgICAgaW5cbiAgICAgICAgIEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5zdG9wIGluc3RhbmNlKSlcbiAgICA+Pj4gZnVuICgpIC0+XG4gICAgUHJvdG9jb2xfd3JpdGVyLmNsb3NlIHQud3JpdGVyXG4gICAgPj4+IGZ1biAoKSAtPiBSZWFkZXIuY2xvc2UgdC5yZWFkZXIgPj4+IGZ1biAoKSAtPiBJdmFyLmZpbGwgdC5jbG9zZV9maW5pc2hlZCAoKSk7XG4gIGNsb3NlX2ZpbmlzaGVkIHRcbjs7XG5cbmxldCBvbl9tZXNzYWdlIHQgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciA9XG4gIGxldCBmIGJ1ZiB+cG9zIH5sZW46XyA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnQgPVxuICAgIGxldCBwb3NfcmVmID0gcmVmIHBvcyBpblxuICAgIGxldCBuYXQwX21zZyA9IFAuTWVzc2FnZS5iaW5fcmVhZF9uYXQwX3QgYnVmIH5wb3NfcmVmIGluXG4gICAgbWF0Y2hcbiAgICAgIGhhbmRsZV9tc2dcbiAgICAgICAgdFxuICAgICAgICBuYXQwX21zZ1xuICAgICAgICB+cmVhZF9idWZmZXI6YnVmXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmOnBvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgIHdpdGhcbiAgICB8IENvbnRpbnVlIC0+IENvbnRpbnVlXG4gICAgfCBXYWl0IF8gYXMgcmVzIC0+IHJlc1xuICAgIHwgU3RvcCByZXN1bHQgLT5cbiAgICAgIGxldCByZWFzb24gPVxuICAgICAgICBsZXQgbXNnID0gXCJScGMgbWVzc2FnZSBoYW5kbGluZyBsb29wIHN0b3BwZWRcIiBpblxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IE9rICgpIC0+IEluZm8ub2Zfc3RyaW5nIG1zZ1xuICAgICAgICB8IEVycm9yIGUgLT5cbiAgICAgICAgICBJbmZvLmNyZWF0ZVxuICAgICAgICAgICAgbXNnXG4gICAgICAgICAgICBlXG4gICAgICAgICAgICAoUnBjX2Vycm9yLnNleHBfb2ZfdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgICBcIkNvbm5lY3Rpb24ub25fbWVzc2FnZSByZXN1bHRlZCBpbiBDb25uZWN0aW9uX2Nsb3NlZCBlcnJvci4gVGhpcyBpcyBcXFxuICAgICAgICAgICAgICAgICAgd2VpcmQuXCJdKSlcbiAgICAgIGluXG4gICAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uKTtcbiAgICAgIFN0b3AgcmVhc29uXG4gIGluXG4gIFN0YWdlZC5zdGFnZSBmXG47O1xuXG5sZXQgaGVhcnRiZWF0X25vdyB0ID1cbiAgbGV0IHNpbmNlX2xhc3RfaGVhcnRiZWF0ID1cbiAgICBUaW1lX25zLmRpZmYgKFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlKSB0Lmxhc3Rfc2Vlbl9hbGl2ZVxuICBpblxuICBpZiBUaW1lX25zLlNwYW4uKCA+ICkgc2luY2VfbGFzdF9oZWFydGJlYXQgdC5oZWFydGJlYXRfY29uZmlnLnRpbWVvdXRcbiAgdGhlbiAoXG4gICAgbGV0IHJlYXNvbiAoKSA9XG4gICAgICBzcHJpbnRmXG4gICAgICAgICFcIk5vIGhlYXJ0YmVhdHMgcmVjZWl2ZWQgZm9yICV7c2V4cDpUaW1lX25zLlNwYW4udH0uXCJcbiAgICAgICAgdC5oZWFydGJlYXRfY29uZmlnLnRpbWVvdXRcbiAgICBpblxuICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb246KEluZm8ub2ZfdGh1bmsgcmVhc29uKSkpXG4gIGVsc2UgKFxuICAgIG1hdGNoIHdyaXRlciB0IHdpdGhcbiAgICB8IEVycm9yIGBDbG9zZWQgLT4gKClcbiAgICB8IE9rIHdyaXRlciAtPiBQcm90b2NvbF93cml0ZXIuc2VuZF9oZWFydGJlYXQgd3JpdGVyIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0KVxuOztcblxubGV0IGRlZmF1bHRfaGFuZHNoYWtlX3RpbWVvdXQgPSBUaW1lX25zLlNwYW4ub2Zfc2VjIDMwLlxuXG5sZXQgY2xlYW51cCB0IH5yZWFzb24gZXhuID1cbiAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIH5yZWFzb24gdCk7XG4gIGlmIG5vdCAoSGFzaHRibC5pc19lbXB0eSB0Lm9wZW5fcXVlcmllcylcbiAgdGhlbiAoXG4gICAgbGV0IGVycm9yID1cbiAgICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICB8IFJwY19lcnJvci5ScGMgKGVycm9yLCAoXyA6IEluZm8udCkpIC0+IGVycm9yXG4gICAgICB8IGV4biAtPiBVbmNhdWdodF9leG4gKEV4bi5zZXhwX29mX3QgZXhuKVxuICAgIGluXG4gICAgKCogY2xlYW4gdXAgb3BlbiBzdHJlYW1pbmcgcmVzcG9uc2VzICopXG4gICAgKCogYW4gdW5mb3J0dW5hdGUgaGFjazsgb2sgYmVjYXVzZSB0aGUgcmVzcG9uc2UgaGFuZGxlciB3aWxsIGhhdmUgbm90aGluZ1xuICAgICAgIHRvIHJlYWQgZm9sbG93aW5nIGEgcmVzcG9uc2Ugd2hlcmUgW2RhdGFdIGlzIGFuIGVycm9yICopXG4gICAgbGV0IGR1bW15X2J1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgMSBpblxuICAgIGxldCBkdW1teV9yZWYgPSByZWYgMCBpblxuICAgIEhhc2h0YmwuaXRlcmkgdC5vcGVuX3F1ZXJpZXMgfmY6KGZ1biB+a2V5OnF1ZXJ5X2lkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIgLT5cbiAgICAgIGlnbm9yZVxuICAgICAgICAocmVzcG9uc2VfaGFuZGxlclxuICAgICAgICAgICB+cmVhZF9idWZmZXI6ZHVtbXlfYnVmZmVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmOmR1bW15X3JlZlxuICAgICAgICAgICB7IGlkID0gcXVlcnlfaWQ7IGRhdGEgPSBFcnJvciBlcnJvciB9KSk7XG4gICAgSGFzaHRibC5jbGVhciB0Lm9wZW5fcXVlcmllcztcbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgZHVtbXlfYnVmZmVyKVxuOztcblxubGV0IHNjaGVkdWxlX2hlYXJ0YmVhdHMgdCA9XG4gIHQubGFzdF9zZWVuX2FsaXZlIDwtIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlO1xuICBsZXQgaGVhcnRiZWF0X2Zyb21fbm93X29uID1cbiAgICAoKiBbYXRfaW50ZXJ2YWxzXSB3aWxsIHNjaGVkdWxlIHRoZSBmaXJzdCBoZWFydGJlYXQgdGhlIGZpcnN0IHRpbWUgdGhlIHRpbWVfc291cmNlIGlzXG4gICAgICAgYWR2YW5jZWQgKilcbiAgICBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC5hdF9pbnRlcnZhbHNcbiAgICAgIHQudGltZV9zb3VyY2VcbiAgICAgIHQuaGVhcnRiZWF0X2NvbmZpZy5zZW5kX2V2ZXJ5XG4gICAgICAoZnVuICgpIC0+IGhlYXJ0YmVhdF9ub3cgdClcbiAgaW5cbiAgU2V0X29uY2Uuc2V0X2V4biB0LmhlYXJ0YmVhdF9ldmVudCBbJWhlcmVdIGhlYXJ0YmVhdF9mcm9tX25vd19vblxuOztcblxubGV0IHJ1bl9hZnRlcl9oYW5kc2hha2VcbiAgICAgIHRcbiAgICAgIHdyaXRlclxuICAgICAgfm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvblxuICAgICAgfmltcGxlbWVudGF0aW9uc1xuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIH53cml0ZXJfbW9uaXRvcl9leG5zXG4gID1cbiAgUHJvdG9jb2xfd3JpdGVyLnNldF9uZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gdC53cml0ZXIgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uO1xuICBsZXQgaW5zdGFuY2UgPVxuICAgIEltcGxlbWVudGF0aW9ucy5pbnN0YW50aWF0ZVxuICAgICAgaW1wbGVtZW50YXRpb25zXG4gICAgICB+d3JpdGVyXG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjp0LmRlc2NyaXB0aW9uXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkKVxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGU6KGNvbm5lY3Rpb25fc3RhdGUgdClcbiAgaW5cbiAgU2V0X29uY2Uuc2V0X2V4biB0LmltcGxlbWVudGF0aW9uc19pbnN0YW5jZSBbJWhlcmVdIGluc3RhbmNlO1xuICBsZXQgY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yID0gTW9uaXRvci5jcmVhdGUgfm5hbWU6XCJSUEMgY2xvc2UgY29ubmVjdGlvbiBtb25pdG9yXCIgKCkgaW5cbiAgTW9uaXRvci5kZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIGNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciB+ZjooZnVuIGV4biAtPlxuICAgIGxldCByZWFzb24gPVxuICAgICAgSW5mby5jcmVhdGVfcyBbJW1lc3NhZ2UgXCJVbmNhdWdodCBleGNlcHRpb24gaW4gaW1wbGVtZW50YXRpb25cIiAoZXhuIDogRXhuLnQpXVxuICAgIGluXG4gICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIH5yZWFzb24gdCkpO1xuICBsZXQgbW9uaXRvciA9IE1vbml0b3IuY3JlYXRlIH5uYW1lOlwiUlBDIGNvbm5lY3Rpb24gbG9vcFwiICgpIGluXG4gIGxldCByZWFzb24gbmFtZSBleG4gPVxuICAgIGV4biwgSW5mby50YWcgKEluZm8ub2ZfZXhuIGV4bikgfnRhZzooXCJleG4gcmFpc2VkIGluIFJQQyBjb25uZWN0aW9uIFwiIF4gbmFtZSlcbiAgaW5cbiAgU3RyZWFtLml0ZXJcbiAgICAoU3RyZWFtLmludGVybGVhdmVcbiAgICAgICAoU3RyZWFtLm9mX2xpc3RcbiAgICAgICAgICBbIFN0cmVhbS5tYXAgfmY6KHJlYXNvbiBcImxvb3BcIikgKE1vbml0b3IuZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIG1vbml0b3IpXG4gICAgICAgICAgOyBTdHJlYW0ubWFwIH5mOihyZWFzb24gXCJXcml0ZXIudFwiKSB3cml0ZXJfbW9uaXRvcl9leG5zXG4gICAgICAgICAgXSkpXG4gICAgfmY6KGZ1biAoZXhuLCByZWFzb24pIC0+IGNsZWFudXAgdCBleG4gfnJlYXNvbik7XG4gIHdpdGhpbiB+bW9uaXRvciAoZnVuICgpIC0+XG4gICAgc2NoZWR1bGVfaGVhcnRiZWF0cyB0O1xuICAgIFJlYWRlci5yZWFkX2ZvcmV2ZXJcbiAgICAgIHQucmVhZGVyXG4gICAgICB+b25fbWVzc2FnZTooU3RhZ2VkLnVuc3RhZ2UgKG9uX21lc3NhZ2UgdCB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yKSlcbiAgICAgIH5vbl9lbmRfb2ZfYmF0Y2g6KGZ1biAoKSAtPlxuICAgICAgICB0Lmxhc3Rfc2Vlbl9hbGl2ZSA8LSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZSlcbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IE9rIHJlYXNvbiAtPiBjbGVhbnVwIHQgfnJlYXNvbiAoUnBjX2Vycm9yLlJwYyAoQ29ubmVjdGlvbl9jbG9zZWQsIHQuZGVzY3JpcHRpb24pKVxuICAgICgqIFRoZSBwcm90b2NvbCBpcyBzdWNoIHRoYXQgcmlnaHQgbm93LCB0aGUgb25seSBvdXRjb21lIG9mIHRoZSBvdGhlciBzaWRlIGNsb3NpbmcgdGhlXG4gICAgICAgY29ubmVjdGlvbiBub3JtYWxseSBpcyB0aGF0IHdlIGdldCBhbiBlb2YuICopXG4gICAgfCBFcnJvciAoYEVvZiB8IGBDbG9zZWQpIC0+XG4gICAgICBjbGVhbnVwXG4gICAgICAgIHRcbiAgICAgICAgfnJlYXNvbjooSW5mby5vZl9zdHJpbmcgXCJFT0Ygb3IgY29ubmVjdGlvbiBjbG9zZWRcIilcbiAgICAgICAgKFJwY19lcnJvci5ScGMgKENvbm5lY3Rpb25fY2xvc2VkLCB0LmRlc2NyaXB0aW9uKSkpXG47O1xuXG5sZXQgZG9faGFuZHNoYWtlIHQgd3JpdGVyIH5oYW5kc2hha2VfdGltZW91dCB+aGVhZGVyID1cbiAgaWYgbm90IChXcml0ZXIuY2FuX3NlbmQgd3JpdGVyKVxuICB0aGVuIHJldHVybiAoRXJyb3IgSGFuZHNoYWtlX2Vycm9yLlRyYW5zcG9ydF9jbG9zZWQpXG4gIGVsc2UgKFxuICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90IHdyaXRlciBIZWFkZXIuYmluX3Qud3JpdGVyIGhlYWRlciB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdDtcbiAgICAoKiBJZiB3ZSB1c2UgW21heF9jb25uZWN0aW9uc10gaW4gdGhlIHNlcnZlciwgdGhlbiB0aGlzIHJlYWQgbWF5IGp1c3QgaGFuZyB1bnRpbCB0aGVcbiAgICAgICBzZXJ2ZXIgc3RhcnRzIGFjY2VwdGluZyBuZXcgY29ubmVjdGlvbnMgKHdoaWNoIGNvdWxkIGJlIG5ldmVyKS4gIFRoYXQgaXMgd2h5IGFcbiAgICAgICB0aW1lb3V0IGlzIHVzZWQgKilcbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICB+cnVuOmBOb3dcbiAgICAgICAgKGZ1biAoKSAtPiBSZWFkZXIucmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCB0LnJlYWRlciBIZWFkZXIuYmluX3QucmVhZGVyKVxuICAgIGluXG4gICAgbWF0Y2glbWFwXG4gICAgICBUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXRcbiAgICAgICAgKFRpbWVfc291cmNlLm9mX3N5bmNocm9ub3VzIHQudGltZV9zb3VyY2UpXG4gICAgICAgIGhhbmRzaGFrZV90aW1lb3V0XG4gICAgICAgIHJlc3VsdFxuICAgIHdpdGhcbiAgICB8IGBUaW1lb3V0IC0+XG4gICAgICAoKiBUaGVyZSdzIGEgcGVuZGluZyByZWFkLCB0aGUgcmVhZGVyIGlzIGJhc2ljYWxseSB1c2VsZXNzIG5vdywgc28gd2UgY2xlYW4gaXRcbiAgICAgICAgIHVwLiAqKVxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbjooSW5mby5vZl9zdHJpbmcgXCJIYW5kc2hha2UgdGltZW91dFwiKSk7XG4gICAgICBFcnJvciBIYW5kc2hha2VfZXJyb3IuVGltZW91dFxuICAgIHwgYFJlc3VsdCAoRXJyb3IgZXhuKSAtPlxuICAgICAgbGV0IHJlYXNvbiA9IEluZm8ub2Zfc3RyaW5nIFwiW1JlYWRlci5yZWFkX29uZV9tZXNzYWdlX2Jpbl9wcm90XSByYWlzZWRcIiBpblxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbik7XG4gICAgICBFcnJvciAoUmVhZGluZ19oZWFkZXJfZmFpbGVkIChFcnJvci5vZl9leG4gZXhuKSlcbiAgICB8IGBSZXN1bHQgKE9rIChFcnJvciBgRW9mKSkgLT4gRXJyb3IgRW9mXG4gICAgfCBgUmVzdWx0IChPayAoRXJyb3IgYENsb3NlZCkpIC0+IEVycm9yIFRyYW5zcG9ydF9jbG9zZWRcbiAgICB8IGBSZXN1bHQgKE9rIChPayBwZWVyKSkgLT4gSGVhZGVyLm5lZ290aWF0ZSB+dXM6aGVhZGVyIH5wZWVyKVxuOztcblxubGV0IGNvbnRhaW5zX21hZ2ljX3ByZWZpeCA9IFByb3RvY29sX3ZlcnNpb25faGVhZGVyLmNvbnRhaW5zX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2w6UnBjXG5sZXQgZGVmYXVsdF9oYW5kc2hha2VfaGVhZGVyID0gSGVhZGVyLnYyXG5cbmxldCBoYW5kc2hha2VfaGVhZGVyX292ZXJyaWRlX2tleSA9XG4gIFVuaXZfbWFwLktleS5jcmVhdGUgfm5hbWU6XCJhc3luYyBycGMgaGFuZHNoYWtlIGhlYWRlciBvdmVycmlkZVwiIFslc2V4cF9vZjogSGVhZGVyLnRdXG47O1xuXG5sZXQgZ2V0X2hhbmRzaGFrZV9oZWFkZXIgKCkgPVxuICBBc3luY19rZXJuZWxfc2NoZWR1bGVyLmZpbmRfbG9jYWwgaGFuZHNoYWtlX2hlYWRlcl9vdmVycmlkZV9rZXlcbiAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OmRlZmF1bHRfaGFuZHNoYWtlX2hlYWRlclxuOztcblxubGV0IGNyZWF0ZVxuICAgICAgP2ltcGxlbWVudGF0aW9uc1xuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgID8oaGFuZHNoYWtlX3RpbWVvdXQgPSBkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0KVxuICAgICAgPyhoZWFydGJlYXRfY29uZmlnID0gSGVhcnRiZWF0X2NvbmZpZy5jcmVhdGUgKCkpXG4gICAgICA/KG1heF9tZXRhZGF0YV9zaXplID0gQnl0ZV91bml0cy5vZl9raWxvYnl0ZXMgMS4pXG4gICAgICA/KGRlc2NyaXB0aW9uID0gSW5mby5vZl9zdHJpbmcgXCI8Y3JlYXRlZC1kaXJlY3RseT5cIilcbiAgICAgID8odGltZV9zb3VyY2UgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS53YWxsX2Nsb2NrICgpKVxuICAgICAgKHsgcmVhZGVyOyB3cml0ZXIgfSA6IFRyYW5zcG9ydC50KVxuICA9XG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPVxuICAgIG1hdGNoIGltcGxlbWVudGF0aW9ucyB3aXRoXG4gICAgfCBOb25lIC0+IEltcGxlbWVudGF0aW9ucy5udWxsICgpXG4gICAgfCBTb21lIHMgLT4gc1xuICBpblxuICBsZXQgdCA9XG4gICAgeyBkZXNjcmlwdGlvblxuICAgIDsgaGVhcnRiZWF0X2NvbmZpZyA9IEhlYXJ0YmVhdF9jb25maWcudG9fcnVudGltZSBoZWFydGJlYXRfY29uZmlnXG4gICAgOyBoZWFydGJlYXRfY2FsbGJhY2tzID0gW3x8XVxuICAgIDsgbGFzdF9zZWVuX2FsaXZlID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHRpbWVfc291cmNlXG4gICAgOyBtYXhfbWV0YWRhdGFfc2l6ZVxuICAgIDsgcmVhZGVyXG4gICAgOyB3cml0ZXIgPSBQcm90b2NvbF93cml0ZXIuY3JlYXRlX2JlZm9yZV9uZWdvdGlhdGlvbiB3cml0ZXJcbiAgICA7IG9wZW5fcXVlcmllcyA9IEhhc2h0YmwuUG9seS5jcmVhdGUgfnNpemU6MTAgKClcbiAgICA7IGNsb3NlX3N0YXJ0ZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgY2xvc2VfZmluaXNoZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgaW1wbGVtZW50YXRpb25zX2luc3RhbmNlID0gU2V0X29uY2UuY3JlYXRlICgpXG4gICAgOyB0aW1lX3NvdXJjZVxuICAgIDsgaGVhcnRiZWF0X2V2ZW50ID0gU2V0X29uY2UuY3JlYXRlICgpXG4gICAgOyBuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gPSBTZXRfb25jZS5jcmVhdGUgKClcbiAgICB9XG4gIGluXG4gIGxldCB3cml0ZXJfbW9uaXRvcl9leG5zID0gTW9uaXRvci5kZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gKFdyaXRlci5tb25pdG9yIHdyaXRlcikgaW5cbiAgdXBvbiAoV3JpdGVyLnN0b3BwZWQgd3JpdGVyKSAoZnVuICgpIC0+XG4gICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbjooSW5mby5vZl9zdHJpbmcgXCJSUEMgdHJhbnNwb3J0IHN0b3BwZWRcIikpKTtcbiAgbGV0IGhlYWRlciA9IGdldF9oYW5kc2hha2VfaGVhZGVyICgpIGluXG4gIG1hdGNoJW1hcCBkb19oYW5kc2hha2UgdCB3cml0ZXIgfmhhbmRzaGFrZV90aW1lb3V0IH5oZWFkZXIgd2l0aFxuICB8IE9rIG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiAtPlxuICAgIHJ1bl9hZnRlcl9oYW5kc2hha2VcbiAgICAgIHRcbiAgICAgIHdyaXRlclxuICAgICAgfm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvblxuICAgICAgfmltcGxlbWVudGF0aW9uc1xuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIH53cml0ZXJfbW9uaXRvcl9leG5zO1xuICAgIE9rIHRcbiAgfCBFcnJvciBlcnJvciAtPlxuICAgIEVycm9yIChIYW5kc2hha2VfZXJyb3IudG9fZXhuIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOmRlc2NyaXB0aW9uIGVycm9yKVxuOztcblxubGV0IHdpdGhfY2xvc2VcbiAgICAgID9pbXBsZW1lbnRhdGlvbnNcbiAgICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgID9kZXNjcmlwdGlvblxuICAgICAgP3RpbWVfc291cmNlXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgdHJhbnNwb3J0XG4gICAgICB+ZGlzcGF0Y2hfcXVlcmllc1xuICAgICAgfm9uX2hhbmRzaGFrZV9lcnJvclxuICA9XG4gIGxldCBoYW5kbGVfaGFuZHNoYWtlX2Vycm9yID1cbiAgICBtYXRjaCBvbl9oYW5kc2hha2VfZXJyb3Igd2l0aFxuICAgIHwgYENhbGwgZiAtPiBmXG4gICAgfCBgUmFpc2UgLT4gcmFpc2VcbiAgaW5cbiAgbGV0JWJpbmQgdCA9XG4gICAgY3JlYXRlXG4gICAgICA/aW1wbGVtZW50YXRpb25zXG4gICAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgICA/ZGVzY3JpcHRpb25cbiAgICAgID90aW1lX3NvdXJjZVxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIHRyYW5zcG9ydFxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBFcnJvciBlIC0+XG4gICAgbGV0JWJpbmQgKCkgPSBUcmFuc3BvcnQuY2xvc2UgdHJhbnNwb3J0IGluXG4gICAgaGFuZGxlX2hhbmRzaGFrZV9lcnJvciBlXG4gIHwgT2sgdCAtPlxuICAgIE1vbml0b3IucHJvdGVjdFxuICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgIH5yZXN0OmBMb2dcbiAgICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgICAgY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIlJwYy5Db25uZWN0aW9uLndpdGhfY2xvc2UgZmluaXNoZWRcIikpXG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgICBsZXQlYmluZCByZXN1bHQgPSBkaXNwYXRjaF9xdWVyaWVzIHQgaW5cbiAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbnMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICB8IFNvbWUgXyAtPiBjbG9zZV9maW5pc2hlZCB0XG4gICAgICAgICBpblxuICAgICAgICAgcmVzdWx0KVxuOztcblxubGV0IHNlcnZlcl93aXRoX2Nsb3NlXG4gICAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgICA/ZGVzY3JpcHRpb25cbiAgICAgID90aW1lX3NvdXJjZVxuICAgICAgdHJhbnNwb3J0XG4gICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgfm9uX2hhbmRzaGFrZV9lcnJvclxuICA9XG4gIGxldCBvbl9oYW5kc2hha2VfZXJyb3IgPVxuICAgIG1hdGNoIG9uX2hhbmRzaGFrZV9lcnJvciB3aXRoXG4gICAgfCBgQ2FsbCBmIC0+IGBDYWxsIGZcbiAgICB8IGBSYWlzZSAtPiBgUmFpc2VcbiAgICB8IGBJZ25vcmUgLT4gYENhbGwgKGZ1biBfIC0+IERlZmVycmVkLnVuaXQpXG4gIGluXG4gIHdpdGhfY2xvc2VcbiAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgID9kZXNjcmlwdGlvblxuICAgID90aW1lX3NvdXJjZVxuICAgIHRyYW5zcG9ydFxuICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgIH5vbl9oYW5kc2hha2VfZXJyb3JcbiAgICB+ZGlzcGF0Y2hfcXVlcmllczooZnVuIF8gLT4gRGVmZXJyZWQudW5pdClcbjs7XG5cbmxldCBjbG9zZVxuICAgICAgP3N0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dFxuICAgICAgPyhyZWFzb24gPSBJbmZvLm9mX3N0cmluZyBcIlJwYy5Db25uZWN0aW9uLmNsb3NlXCIpXG4gICAgICB0XG4gID1cbiAgY2xvc2UgP3N0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dCB+cmVhc29uIHRcbjs7XG5cbm1vZHVsZSBDbGllbnRfaW1wbGVtZW50YXRpb25zID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdzIHQgPVxuICAgIHsgY29ubmVjdGlvbl9zdGF0ZSA6IHQgLT4gJ3NcbiAgICA7IGltcGxlbWVudGF0aW9ucyA6ICdzIEltcGxlbWVudGF0aW9ucy50XG4gICAgfVxuXG4gIGxldCBudWxsICgpID1cbiAgICB7IGNvbm5lY3Rpb25fc3RhdGUgPSAoZnVuIF8gLT4gKCkpOyBpbXBsZW1lbnRhdGlvbnMgPSBJbXBsZW1lbnRhdGlvbnMubnVsbCAoKSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIG1vZHVsZSBIZWFkZXIgPSBIZWFkZXJcblxuICBsZXQgd2l0aF9hc3luY19leGVjdXRpb25fY29udGV4dCB+Y29udGV4dCB+ZiA9XG4gICAgQXN5bmNfa2VybmVsX3NjaGVkdWxlci53aXRoX2xvY2FsIGhhbmRzaGFrZV9oZWFkZXJfb3ZlcnJpZGVfa2V5IChTb21lIGNvbnRleHQpIH5mXG4gIDs7XG5lbmRcbiIsIlxub3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBVdGlsXG5tb2R1bGUgUCA9IFByb3RvY29sXG5tb2R1bGUgRGVzY3JpcHRpb24gPSBEZXNjcmlwdGlvblxubW9kdWxlIE9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvblxubW9kdWxlIEltcGxlbWVudGF0aW9uID0gSW1wbGVtZW50YXRpb25cbm1vZHVsZSBJbXBsZW1lbnRhdGlvbnMgPSBJbXBsZW1lbnRhdGlvbnNcbm1vZHVsZSBUcmFuc3BvcnQgPSBUcmFuc3BvcnRcbm1vZHVsZSBDb25uZWN0aW9uID0gQ29ubmVjdGlvblxuXG4oKiBUaGUgUmVzdWx0IG1vbmFkIGlzIGFsc28gdXNlZC4gKilcbmxldCAoID4+PX4gKSA9IFJlc3VsdC4oID4+PSApXG5sZXQgKCA+Pnx+ICkgPSBSZXN1bHQuKCA+PnwgKVxuXG5tb2R1bGUgUnBjX2NvbW1vbiA9IHN0cnVjdFxuICBsZXQgZGlzcGF0Y2hfcmF3J1xuICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgY29ublxuICAgICAgICB+dGFnXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5XG4gICAgICAgIH5xdWVyeVxuICAgICAgICB+cXVlcnlfaWRcbiAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXJcbiAgICA9XG4gICAgbGV0IHF1ZXJ5ID0geyBQLlF1ZXJ5LnRhZzsgdmVyc2lvbjsgaWQgPSBxdWVyeV9pZDsgbWV0YWRhdGE7IGRhdGEgPSBxdWVyeSB9IGluXG4gICAgbWF0Y2ggQ29ubmVjdGlvbi5kaXNwYXRjaCBjb25uIH5yZXNwb25zZV9oYW5kbGVyIH5iaW5fd3JpdGVyX3F1ZXJ5IH5xdWVyeSB3aXRoXG4gICAgfCBPayAoKSAtPiBPayAoKVxuICAgIHwgRXJyb3IgYENsb3NlZCAtPiBFcnJvciBScGNfZXJyb3IuQ29ubmVjdGlvbl9jbG9zZWRcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfcmF3ID9tZXRhZGF0YSBjb25uIH50YWcgfnZlcnNpb24gfmJpbl93cml0ZXJfcXVlcnkgfnF1ZXJ5IH5xdWVyeV9pZCB+ZiA9XG4gICAgbGV0IHJlc3BvbnNlX2l2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIChtYXRjaFxuICAgICAgIGRpc3BhdGNoX3JhdydcbiAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgY29ublxuICAgICAgICAgfnRhZ1xuICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5XG4gICAgICAgICB+cXVlcnlcbiAgICAgICAgIH5xdWVyeV9pZFxuICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6KFNvbWUgKGYgcmVzcG9uc2VfaXZhcikpXG4gICAgIHdpdGhcbiAgICAgfCBPayAoKSAtPiAoKVxuICAgICB8IEVycm9yIF8gYXMgZSAtPiBJdmFyLmZpbGwgcmVzcG9uc2VfaXZhciBlKTtcbiAgICBJdmFyLnJlYWQgcmVzcG9uc2VfaXZhclxuICA7O1xuZW5kXG5cbm1vZHVsZSBScGMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3F1ZXJ5LCAncmVzcG9uc2UpIHQgPVxuICAgIHsgdGFnIDogUC5ScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGJpbl9xdWVyeSA6ICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGJpbl9yZXNwb25zZSA6ICdyZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IHF1ZXJ5X3R5cGVfaWQgOiAncXVlcnkgVHlwZV9lcXVhbC5JZC50XG4gICAgOyByZXNwb25zZV90eXBlX2lkIDogJ3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIH1cblxuICBsZXQgY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSA9XG4gICAgbGV0IHF1ZXJ5X3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OnF1ZXJ5XCJdIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06cmVzcG9uc2VcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIHsgdGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBuYW1lXG4gICAgOyB2ZXJzaW9uXG4gICAgOyBiaW5fcXVlcnlcbiAgICA7IGJpbl9yZXNwb25zZVxuICAgIDsgcXVlcnlfdHlwZV9pZFxuICAgIDsgcmVzcG9uc2VfdHlwZV9pZFxuICAgIH1cbiAgOztcblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LnRhZ1xuICBsZXQgdmVyc2lvbiB0ID0gdC52ZXJzaW9uXG4gIGxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gbmFtZSB0OyB2ZXJzaW9uID0gdmVyc2lvbiB0IH1cbiAgbGV0IHF1ZXJ5X3R5cGVfaWQgdCA9IHQucXVlcnlfdHlwZV9pZFxuICBsZXQgcmVzcG9uc2VfdHlwZV9pZCB0ID0gdC5yZXNwb25zZV90eXBlX2lkXG4gIGxldCBiaW5fcXVlcnkgdCA9IHQuYmluX3F1ZXJ5XG4gIGxldCBiaW5fcmVzcG9uc2UgdCA9IHQuYmluX3Jlc3BvbnNlXG5cbiAgbGV0IHNoYXBlcyB0ID1cbiAgICBScGNfc2hhcGVzLlJwYyB7IHF1ZXJ5ID0gdC5iaW5fcXVlcnkuc2hhcGU7IHJlc3BvbnNlID0gdC5iaW5fcmVzcG9uc2Uuc2hhcGUgfVxuICA7O1xuXG4gIGxldCBibG9ja2luZ19ub19hdXRob3JpemF0aW9uIGYgc3RhdGUgcXVlcnkgPVxuICAgIE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKGYgc3RhdGUgcXVlcnkpXG4gIDs7XG5cbiAgbGV0IGRlZmVycmVkX25vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSBxdWVyeSA9XG4gICAgRWFnZXJfZGVmZXJyZWQubWFwIChmIHN0YXRlIHF1ZXJ5KSB+ZjooZnVuIGEgLT4gT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCBhKVxuICA7O1xuXG4gIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9XG4gICAgICAgIFJwY1xuICAgICAgICAgICggdC5iaW5fcXVlcnkucmVhZGVyXG4gICAgICAgICAgLCB0LmJpbl9yZXNwb25zZS53cml0ZXJcbiAgICAgICAgICAsIGRlZmVycmVkX25vX2F1dGhvcml6YXRpb24gZlxuICAgICAgICAgICwgRGVmZXJyZWQgKVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCcgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9XG4gICAgICAgIFJwY1xuICAgICAgICAgICggdC5iaW5fcXVlcnkucmVhZGVyXG4gICAgICAgICAgLCB0LmJpbl9yZXNwb25zZS53cml0ZXJcbiAgICAgICAgICAsIGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZlxuICAgICAgICAgICwgQmxvY2tpbmcgKVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoJyA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQgcmVzcG9uc2VfaGFuZGxlclxuICAgICAgICAgIGl2YXJcbiAgICAgICAgICAocmVzcG9uc2UgOiBfIFAuUmVzcG9uc2UudClcbiAgICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgPVxuICAgICAgbGV0IHJlc3BvbnNlID1cbiAgICAgICAgcmVzcG9uc2UuZGF0YVxuICAgICAgICA+Pj1+IGZ1biBsZW4gLT5cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICB0LmJpbl9yZXNwb25zZS5yZWFkZXJcbiAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmxvY2F0aW9uOlwiY2xpZW50LXNpZGUgcnBjIHJlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgaW5cbiAgICAgIEl2YXIuZmlsbCBpdmFyIHJlc3BvbnNlO1xuICAgICAgYHJlbW92ZSAoT2sgKCkpXG4gICAgaW5cbiAgICBsZXQgcXVlcnlfaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIFJwY19jb21tb24uZGlzcGF0Y2hfcmF3XG4gICAgICA/bWV0YWRhdGFcbiAgICAgIGNvbm5cbiAgICAgIH50YWc6dC50YWdcbiAgICAgIH52ZXJzaW9uOnQudmVyc2lvblxuICAgICAgfmJpbl93cml0ZXJfcXVlcnk6dC5iaW5fcXVlcnkud3JpdGVyXG4gICAgICB+cXVlcnlcbiAgICAgIH5xdWVyeV9pZFxuICAgICAgfmY6cmVzcG9uc2VfaGFuZGxlclxuICA7O1xuXG4gIGxldCBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHQgPVxuICAgIFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgIHJlc3VsdFxuICAgICAgfnJwY19kZXNjcmlwdGlvbjooZGVzY3JpcHRpb24gdClcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOihDb25uZWN0aW9uLmRlc2NyaXB0aW9uIGNvbm4pXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgOztcblxuICBsZXQgZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0JW1hcCByZXN1bHQgPSBkaXNwYXRjaCcgP21ldGFkYXRhIHQgY29ubiBxdWVyeSBpblxuICAgIHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdFxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9leG4gP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSA+PnwgT3JfZXJyb3Iub2tfZXhuXG4gIDs7XG5cbiAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgIG1vZHVsZSBSZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbnMuRXhwZXJ0LlJwY19yZXNwb25kZXJcblxuICAgIGxldCBtYWtlX2Rpc3BhdGNoXG4gICAgICAgICAgZG9fZGlzcGF0Y2hcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgID1cbiAgICAgIGxldCByZXNwb25zZV9oYW5kbGVyIDogQ29ubmVjdGlvbi5yZXNwb25zZV9oYW5kbGVyID1cbiAgICAgICAgZnVuIHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZiAtPlxuICAgICAgICAgIG1hdGNoIHJlc3BvbnNlLmRhdGEgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgICAgaGFuZGxlX2Vycm9yXG4gICAgICAgICAgICAgIChFcnJvci50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgKFJwY19lcnJvci5zZXhwX29mX3RcbiAgICAgICAgICAgICAgICAgICAgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbjooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgICAgICAgICAoRGVmZXJyZWQucGVlayAoQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgOiBJbmZvLnQgb3B0aW9uKV0pXG4gICAgICAgICAgICAgICAgICAgIGUpKTtcbiAgICAgICAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgICAgICAgIHwgT2sgbGVuIC0+XG4gICAgICAgICAgICBsZXQgbGVuID0gKGxlbiA6IE5hdDAudCA6PiBpbnQpIGluXG4gICAgICAgICAgICBsZXQgZCA9IGhhbmRsZV9yZXNwb25zZSByZWFkX2J1ZmZlciB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmIH5sZW4gaW5cbiAgICAgICAgICAgIHJlYWRfYnVmZmVyX3Bvc19yZWYgOj0gIXJlYWRfYnVmZmVyX3Bvc19yZWYgKyBsZW47XG4gICAgICAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGQgdGhlbiBgcmVtb3ZlIChPayAoKSkgZWxzZSBgcmVtb3ZlX2FuZF93YWl0IGRcbiAgICAgIGluXG4gICAgICBkb19kaXNwYXRjaFxuICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgY29ublxuICAgICAgICB+dGFnOihQLlJwY190YWcub2Zfc3RyaW5nIHJwY190YWcpXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIGJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6KFNvbWUgcmVzcG9uc2VfaGFuZGxlcilcbiAgICA7O1xuXG4gICAgbGV0IGRpc3BhdGNoXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICA9XG4gICAgICBtYXRjaFxuICAgICAgICBtYWtlX2Rpc3BhdGNoXG4gICAgICAgICAgQ29ubmVjdGlvbi5kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgKCkgLT4gYE9rXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIGxldCBzY2hlZHVsZV9kaXNwYXRjaFxuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgbWFrZV9kaXNwYXRjaFxuICAgICAgICAgIENvbm5lY3Rpb24uc2NoZWR1bGVfZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICB3aXRoXG4gICAgICB8IE9rIGQgLT4gYEZsdXNoZWQgZFxuICAgICAgfCBFcnJvciBgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIDs7XG5cbiAgICB0eXBlIGltcGxlbWVudGF0aW9uX3Jlc3VsdCA9IEltcGxlbWVudGF0aW9uLkV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQgPVxuICAgICAgfCBSZXBsaWVkXG4gICAgICB8IERlbGF5ZWRfcmVzcG9uc2Ugb2YgdW5pdCBEZWZlcnJlZC50XG5cbiAgICBsZXQgZGVmZXJyZWRfbm9fYXV0aG9yaXphdGlvbiBmIHN0YXRlIHJlc3BvbmRlciBidWYgfnBvcyB+bGVuID1cbiAgICAgIEVhZ2VyX2RlZmVycmVkLm1hcCAoZiBzdGF0ZSByZXNwb25kZXIgYnVmIH5wb3MgfmxlbikgfmY6KGZ1biBhIC0+XG4gICAgICAgIE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgYSlcbiAgICA7O1xuXG4gICAgbGV0IGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSByZXNwb25kZXIgYnVmIH5wb3MgfmxlbiA9XG4gICAgICBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIChmIHN0YXRlIHJlc3BvbmRlciBidWYgfnBvcyB+bGVuKVxuICAgIDs7XG5cbiAgICBsZXQgaW1wbGVtZW50ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSB0IGYgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIGYsIERlZmVycmVkKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnQnID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSB0IGYgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChibG9ja2luZ19ub19hdXRob3JpemF0aW9uIGYsIEJsb2NraW5nKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnRfZm9yX3RhZ19hbmRfdmVyc2lvblxuICAgICAgICAgID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKVxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBmXG4gICAgICA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgcnBjX3RhZ1xuICAgICAgOyB2ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIGYsIERlZmVycmVkKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IFJwY19zaGFwZXMuVW5rbm93blxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uJ1xuICAgICAgICAgID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKVxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBmXG4gICAgICA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgcnBjX3RhZ1xuICAgICAgOyB2ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChibG9ja2luZ19ub19hdXRob3JpemF0aW9uIGYsIEJsb2NraW5nKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IFJwY19zaGFwZXMuVW5rbm93blxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgT25lX3dheSA9IHN0cnVjdFxuICB0eXBlICdtc2cgdCA9XG4gICAgeyB0YWcgOiBQLlJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgYmluX21zZyA6ICdtc2cgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBtc2dfdHlwZV9pZCA6ICdtc2cgVHlwZV9lcXVhbC5JZC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgbGV0IG5hbWUgdCA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC50YWdcblxuICBsZXQgY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fbXNnID1cbiAgICBsZXQgbXNnX3R5cGVfaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06bXNnXCJdIHNleHBfb2Zfb3BhcXVlIGluXG4gICAgeyB0YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIG5hbWU7IHZlcnNpb247IGJpbl9tc2c7IG1zZ190eXBlX2lkIH1cbiAgOztcblxuICBsZXQgc2hhcGVzIHQgPSBScGNfc2hhcGVzLk9uZV93YXkgeyBtc2cgPSB0LmJpbl9tc2cuc2hhcGUgfVxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBtc2dfdHlwZV9pZCB0ID0gdC5tc2dfdHlwZV9pZFxuXG4gIGxldCBub19hdXRob3JpemF0aW9uIGYgc3RhdGUgcXVlcnkgPVxuICAgIEVhZ2VyX2RlZmVycmVkLnJldHVybiAoT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoZiBzdGF0ZSBxdWVyeSkpXG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uKSB0IGYgPVxuICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICA7IGYgPSBPbmVfd2F5ICh0LmJpbl9tc2cucmVhZGVyLCBub19hdXRob3JpemF0aW9uIGYpXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgZGlzcGF0Y2gnID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCBxdWVyeV9pZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgUnBjX2NvbW1vbi5kaXNwYXRjaF9yYXcnXG4gICAgICA/bWV0YWRhdGFcbiAgICAgIGNvbm5cbiAgICAgIH50YWc6dC50YWdcbiAgICAgIH52ZXJzaW9uOnQudmVyc2lvblxuICAgICAgfmJpbl93cml0ZXJfcXVlcnk6dC5iaW5fbXNnLndyaXRlclxuICAgICAgfnF1ZXJ5XG4gICAgICB+cXVlcnlfaWRcbiAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgOztcblxuICBsZXQgcnBjX3Jlc3VsdF90b19vcl9lcnJvciB0IGNvbm4gcmVzdWx0ID1cbiAgICBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICByZXN1bHRcbiAgICAgIH5ycGNfZGVzY3JpcHRpb246KGRlc2NyaXB0aW9uIHQpXG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjooQ29ubmVjdGlvbi5kZXNjcmlwdGlvbiBjb25uKVxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDooQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGRpc3BhdGNoJyA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IHw+IGZ1biByZXN1bHQgLT4gcnBjX3Jlc3VsdF90b19vcl9lcnJvciB0IGNvbm4gcmVzdWx0XG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX2V4biA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBPcl9lcnJvci5va19leG4gKGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkpXG4gIDs7XG5cbiAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgIGxldCBub19hdXRob3JpemF0aW9uIGYgc3RhdGUgYnVmIH5wb3MgfmxlbiA9XG4gICAgICBFYWdlcl9kZWZlcnJlZC5yZXR1cm4gKE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKGYgc3RhdGUgYnVmIH5wb3MgfmxlbikpXG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY2xvc2VfY29ubmVjdGlvbikgdCBmID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgICAgOyBmID0gT25lX3dheV9leHBlcnQgKG5vX2F1dGhvcml6YXRpb24gZilcbiAgICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgZGlzcGF0Y2hcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICB7IHRhZzsgdmVyc2lvbjsgYmluX21zZyA9IF87IG1zZ190eXBlX2lkID0gXyB9XG4gICAgICAgICAgY29ublxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICA9XG4gICAgICBtYXRjaFxuICAgICAgICBDb25uZWN0aW9uLmRpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+dGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgKCkgLT4gYE9rXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIGxldCBzY2hlZHVsZV9kaXNwYXRjaFxuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIHsgdGFnOyB2ZXJzaW9uOyBiaW5fbXNnID0gXzsgbXNnX3R5cGVfaWQgPSBfIH1cbiAgICAgICAgICBjb25uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgID1cbiAgICAgIG1hdGNoXG4gICAgICAgIENvbm5lY3Rpb24uc2NoZWR1bGVfZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH50YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICAgICAgd2l0aFxuICAgICAgfCBPayBmbHVzaGVkIC0+IGBGbHVzaGVkIGZsdXNoZWRcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGlwZV9jbG9zZV9yZWFzb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENsb3NlZF9sb2NhbGx5XG4gICAgfCBDbG9zZWRfcmVtb3RlbHlcbiAgICB8IEVycm9yIG9mIEVycm9yLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgWyVleHBlY3Qge3wgNzQ4YzhiZjQ1MDJkMDk3OGQwMDdiZjdmOTZhN2VmN2YgfH1dXG4gIDs7XG5cbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgPVxuICAgICAgICB8IENsb3NlZF9sb2NhbGx5XG4gICAgICAgIHwgQ2xvc2VkX3JlbW90ZWx5XG4gICAgICAgIHwgRXJyb3Igb2YgRXJyb3IuU3RhYmxlLlYyLnRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDc0OGM4YmY0NTAyZDA5NzhkMDA3YmY3Zjk2YTdlZjdmIHx9XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuKCogdGhlIGJhc2lzIG9mIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgUGlwZV9ycGMgYW5kIFN0YXRlX3JwYyAqKVxubW9kdWxlIFN0cmVhbWluZ19ycGMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEluaXRpYWxfbWVzc2FnZSA9IFAuU3RyZWFtX2luaXRpYWxfbWVzc2FnZVxuXG4gIHR5cGUgKCdxdWVyeSwgJ2luaXRpYWxfcmVzcG9uc2UsICd1cGRhdGVfcmVzcG9uc2UsICdlcnJvcl9yZXNwb25zZSkgdCA9XG4gICAgeyB0YWcgOiBQLlJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgYmluX3F1ZXJ5IDogJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX2luaXRpYWxfcmVzcG9uc2UgOiAnaW5pdGlhbF9yZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGJpbl91cGRhdGVfcmVzcG9uc2UgOiAndXBkYXRlX3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX2Vycm9yX3Jlc3BvbnNlIDogJ2Vycm9yX3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgIDsgcXVlcnlfdHlwZV9pZCA6ICdxdWVyeSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IGluaXRpYWxfcmVzcG9uc2VfdHlwZV9pZCA6ICdpbml0aWFsX3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIDsgdXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWQgOiAndXBkYXRlX3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIDsgZXJyb3JfcmVzcG9uc2VfdHlwZV9pZCA6ICdlcnJvcl9yZXNwb25zZSBUeXBlX2VxdWFsLklkLnRcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgfmJpbl9pbml0aWFsX3Jlc3BvbnNlXG4gICAgICAgIH5iaW5fdXBkYXRlX3Jlc3BvbnNlXG4gICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgfmFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlXG4gICAgICAgIH5hbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlXG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCBjbGllbnRfcHVzaGVzX2JhY2sgPVxuICAgICAgbWF0Y2ggY2xpZW50X3B1c2hlc19iYWNrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lICgpIC0+IHRydWVcbiAgICBpblxuICAgIGxldCBxdWVyeV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTpxdWVyeVwiXSBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgbGV0IGluaXRpYWxfcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZVxuICAgICAgICB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06JXthbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZX1cIl1cbiAgICAgICAgc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCB1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZVxuICAgICAgICB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06JXthbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlfVwiXVxuICAgICAgICBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgbGV0IGVycm9yX3Jlc3BvbnNlX3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OmVycm9yXCJdIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICB7IHRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgbmFtZVxuICAgIDsgdmVyc2lvblxuICAgIDsgYmluX3F1ZXJ5XG4gICAgOyBiaW5faW5pdGlhbF9yZXNwb25zZVxuICAgIDsgYmluX3VwZGF0ZV9yZXNwb25zZVxuICAgIDsgYmluX2Vycm9yX3Jlc3BvbnNlID0gYmluX2Vycm9yXG4gICAgOyBjbGllbnRfcHVzaGVzX2JhY2tcbiAgICA7IHF1ZXJ5X3R5cGVfaWRcbiAgICA7IGluaXRpYWxfcmVzcG9uc2VfdHlwZV9pZFxuICAgIDsgdXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWRcbiAgICA7IGVycm9yX3Jlc3BvbnNlX3R5cGVfaWRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1ha2VfaW5pdGlhbF9tZXNzYWdlIHggPVxuICAgIHsgSW5pdGlhbF9tZXNzYWdlLnVudXNlZF9xdWVyeV9pZCA9IFAuVW51c2VkX3F1ZXJ5X2lkLnQ7IGluaXRpYWwgPSB4IH1cbiAgOztcblxuICBsZXQgc2hhcGVzIHQgPVxuICAgIFJwY19zaGFwZXMuU3RyZWFtaW5nX3JwY1xuICAgICAgeyBxdWVyeSA9IHQuYmluX3F1ZXJ5LnNoYXBlXG4gICAgICA7IGluaXRpYWxfcmVzcG9uc2UgPSB0LmJpbl9pbml0aWFsX3Jlc3BvbnNlLnNoYXBlXG4gICAgICA7IHVwZGF0ZV9yZXNwb25zZSA9IHQuYmluX3VwZGF0ZV9yZXNwb25zZS5zaGFwZVxuICAgICAgOyBlcnJvciA9IHQuYmluX2Vycm9yX3Jlc3BvbnNlLnNoYXBlXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudF9nZW4gdCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgaW1wbCA9XG4gICAgbGV0IGJpbl9pbml0X3dyaXRlciA9XG4gICAgICBJbml0aWFsX21lc3NhZ2UuYmluX3dyaXRlcl90XG4gICAgICAgIHQuYmluX2luaXRpYWxfcmVzcG9uc2Uud3JpdGVyXG4gICAgICAgIHQuYmluX2Vycm9yX3Jlc3BvbnNlLndyaXRlclxuICAgIGluXG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9XG4gICAgICAgIFN0cmVhbWluZ19ycGNcbiAgICAgICAgICB7IGJpbl9xdWVyeV9yZWFkZXIgPSB0LmJpbl9xdWVyeS5yZWFkZXJcbiAgICAgICAgICA7IGJpbl9pbml0X3dyaXRlclxuICAgICAgICAgIDsgYmluX3VwZGF0ZV93cml0ZXIgPSB0LmJpbl91cGRhdGVfcmVzcG9uc2Uud3JpdGVyXG4gICAgICAgICAgOyBpbXBsXG4gICAgICAgICAgfVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgbGV0IGYgYyBxdWVyeSA9XG4gICAgICBtYXRjaCVtYXAgZiBjIHF1ZXJ5IHdpdGhcbiAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgIE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKEVycm9yIChtYWtlX2luaXRpYWxfbWVzc2FnZSAoRXJyb3IgZXJyKSkpXG4gICAgICB8IE9rIChpbml0aWFsLCBwaXBlKSAtPiBBdXRob3JpemVkIChPayAobWFrZV9pbml0aWFsX21lc3NhZ2UgKE9rIGluaXRpYWwpLCBwaXBlKSlcbiAgICBpblxuICAgIGltcGxlbWVudF9nZW4gdCA/b25fZXhjZXB0aW9uIChQaXBlIGYpXG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudF9kaXJlY3QgP29uX2V4Y2VwdGlvbiB0IGYgPVxuICAgIGxldCBmIGMgcXVlcnkgd3JpdGVyID1cbiAgICAgIG1hdGNoJW1hcCBmIGMgcXVlcnkgd3JpdGVyIHdpdGhcbiAgICAgIHwgRXJyb3IgXyBhcyB4IC0+IE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKEVycm9yIChtYWtlX2luaXRpYWxfbWVzc2FnZSB4KSlcbiAgICAgIHwgT2sgXyBhcyB4IC0+IEF1dGhvcml6ZWQgKE9rIChtYWtlX2luaXRpYWxfbWVzc2FnZSB4KSlcbiAgICBpblxuICAgIGltcGxlbWVudF9nZW4gP29uX2V4Y2VwdGlvbiB0IChEaXJlY3QgZilcbiAgOztcblxuICBsZXQgYWJvcnQgdCBjb25uIGlkID1cbiAgICBsZXQgcXVlcnkgPVxuICAgICAgeyBQLlF1ZXJ5LnRhZyA9IHQudGFnOyB2ZXJzaW9uID0gdC52ZXJzaW9uOyBpZDsgbWV0YWRhdGEgPSBOb25lOyBkYXRhID0gYEFib3J0IH1cbiAgICBpblxuICAgIGlnbm9yZVxuICAgICAgKENvbm5lY3Rpb24uZGlzcGF0Y2hcbiAgICAgICAgIGNvbm5cbiAgICAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5OlAuU3RyZWFtX3F1ZXJ5LmJpbl93cml0ZXJfbmF0MF90XG4gICAgICAgICB+cXVlcnlcbiAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgICAgICA6ICh1bml0LCBbIGBDbG9zZWQgXSkgUmVzdWx0LnQpXG4gIDs7XG5cbiAgbW9kdWxlIFBpcGVfbWVzc2FnZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFVwZGF0ZSBvZiAnYVxuICAgICAgfCBDbG9zZWQgb2YgWyBgQnlfcmVtb3RlX3NpZGUgfCBgRXJyb3Igb2YgRXJyb3IudCBdXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3Jlc3BvbnNlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQ29udGludWVcbiAgICAgIHwgV2FpdCBvZiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfbWV0YWRhdGEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBxdWVyeV9pZCA6IFAuUXVlcnlfaWQudFxuICAgICAgOyBjbG9zZV9yZWFzb24gOiBQaXBlX2Nsb3NlX3JlYXNvbi50IERlZmVycmVkLnRcbiAgICAgIH1cblxuICAgIGxldCBpZCB0ID0gdC5xdWVyeV9pZFxuICAgIGxldCBjbG9zZV9yZWFzb24gdCA9IHQuY2xvc2VfcmVhc29uXG4gIGVuZFxuXG4gIG1vZHVsZSBSZXNwb25zZV9zdGF0ZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBVcGRhdGVfaGFuZGxlciA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9yZXNwb25zZS50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgSW5pdGlhbCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdxLCAnaSwgJ3UsICdlLCAnZXh0cmEpIHQgPVxuICAgICAgICB7IHJwYyA6ICgncSwgJ2ksICd1LCAnZSkgdFxuICAgICAgICA7IHF1ZXJ5X2lkIDogUC5RdWVyeV9pZC50XG4gICAgICAgIDsgbWFrZV91cGRhdGVfaGFuZGxlciA6IHVuaXQgLT4gJ2V4dHJhICogJ3UgVXBkYXRlX2hhbmRsZXIudFxuICAgICAgICA7IGl2YXIgOiAoUC5RdWVyeV9pZC50ICogJ2kgKiAnZXh0cmEsICdlKSBSZXN1bHQudCBScGNfcmVzdWx0LnQgSXZhci50XG4gICAgICAgIDsgY29ubmVjdGlvbiA6IENvbm5lY3Rpb24udFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgV2FpdGluZ19mb3JfaW5pdGlhbF9yZXNwb25zZSA6ICgncSwgJ2ksICd1LCAnZSwgJ2V4dHJhKSBJbml0aWFsLnQgLT4gJ3UgdFxuICAgICAgICB8IFdyaXRpbmdfdXBkYXRlcyBvZiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciAqICdhIFVwZGF0ZV9oYW5kbGVyLnRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBzdGF0ZSA6ICdhIFN0YXRlLnQgfVxuICBlbmRcblxuICBsZXQgcmVhZF9lcnJvclxuICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uXG4gICAgICAgIChoYW5kbGVyIDogXyBSZXNwb25zZV9zdGF0ZS5VcGRhdGVfaGFuZGxlci50KVxuICAgICAgICBlcnJcbiAgICA9XG4gICAgbGV0IGNvcmVfZXJyID1cbiAgICAgIEVycm9yLnRfb2Zfc2V4cCAoUnBjX2Vycm9yLnNleHBfb2ZfdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGVycilcbiAgICBpblxuICAgIGlnbm9yZSAoaGFuZGxlciAoQ2xvc2VkIChgRXJyb3IgY29yZV9lcnIpKSA6IFBpcGVfcmVzcG9uc2UudCk7XG4gICAgYHJlbW92ZSAoRXJyb3IgZXJyKVxuICA7O1xuXG4gIGxldCBlb2YgKGhhbmRsZXIgOiBfIFJlc3BvbnNlX3N0YXRlLlVwZGF0ZV9oYW5kbGVyLnQpID1cbiAgICBpZ25vcmUgKGhhbmRsZXIgKENsb3NlZCBgQnlfcmVtb3RlX3NpZGUpIDogUGlwZV9yZXNwb25zZS50KTtcbiAgICBgcmVtb3ZlIChPayAoKSlcbiAgOztcblxuICBsZXQgcmVzcG9uc2VfaGFuZGxlciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGluaXRpYWxfc3RhdGVcbiAgICA6IENvbm5lY3Rpb24ucmVzcG9uc2VfaGFuZGxlclxuICAgID1cbiAgICBsZXQgb3BlbiBSZXNwb25zZV9zdGF0ZSBpblxuICAgIGxldCBzdGF0ZSA9IHsgc3RhdGUgPSBXYWl0aW5nX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIGluaXRpYWxfc3RhdGUgfSBpblxuICAgIGZ1biByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWYgLT5cbiAgICAgIG1hdGNoIHN0YXRlLnN0YXRlIHdpdGhcbiAgICAgIHwgV3JpdGluZ191cGRhdGVzIChiaW5fcmVhZGVyX3VwZGF0ZSwgaGFuZGxlcikgLT5cbiAgICAgICAgKG1hdGNoIHJlc3BvbnNlLmRhdGEgd2l0aFxuICAgICAgICAgfCBFcnJvciBlcnIgLT4gcmVhZF9lcnJvciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGhhbmRsZXIgZXJyXG4gICAgICAgICB8IE9rIGxlbiAtPlxuICAgICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICAgICAgIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEuYmluX3JlYWRlcl9uYXQwX3RcbiAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBzdHJlYW1pbmdfcnBjIHJlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgICAgICAgfmFkZF9sZW46KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgIHwgYEVvZiAtPiAwXG4gICAgICAgICAgICAgICAgIHwgYE9rIChsZW4gOiBOYXQwLnQpIC0+IChsZW4gOj4gaW50KSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgKG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gcmVhZF9lcnJvciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGhhbmRsZXIgZXJyXG4gICAgICAgICAgICB8IE9rIGBFb2YgLT4gZW9mIGhhbmRsZXJcbiAgICAgICAgICAgIHwgT2sgKGBPayBsZW4pIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgICAgICAgYmluX3JlYWRlcl91cGRhdGVcbiAgICAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBzdHJlYW1pbmdfcnBjIHJlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAobWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIGVyciAtPiByZWFkX2Vycm9yIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaGFuZGxlciBlcnJcbiAgICAgICAgICAgICAgIHwgT2sgZGF0YSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggaGFuZGxlciAoVXBkYXRlIGRhdGEpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQ29udGludWUgLT4gYGtlZXBcbiAgICAgICAgICAgICAgICAgIHwgV2FpdCBkIC0+IGB3YWl0IGQpKSkpXG4gICAgICB8IFN0YXRlLldhaXRpbmdfZm9yX2luaXRpYWxfcmVzcG9uc2UgaW5pdGlhbF9oYW5kbGVyIC0+XG4gICAgICAgICgqIFdlIG5ldmVyIHVzZSBbYHJlbW92ZSAoRXJyb3IgXyldIGhlcmUsIHNpbmNlIHRoYXQgaW5kaWNhdGVzIHRoYXQgdGhlXG4gICAgICAgICAgIGNvbm5lY3Rpb24gc2hvdWxkIGJlIGNsb3NlZCwgYW5kIHRoZXNlIGFyZSBcIm5vcm1hbFwiIGVycm9ycy4gKEluIGNvbnRyYXN0LCB0aGVcbiAgICAgICAgICAgZXJyb3JzIHdlIGdldCBpbiB0aGUgW1dyaXRpbmdfdXBkYXRlc190b19waXBlXSBjYXNlIGluZGljYXRlIG1vcmUgc2VyaW91c1xuICAgICAgICAgICBwcm9ibGVtcy4pIEluc3RlYWQsIHdlIGp1c3QgcHV0IGVycm9ycyBpbiBbaXZhcl0uICopXG4gICAgICAgIGxldCBlcnJvciBlcnIgPVxuICAgICAgICAgIEl2YXIuZmlsbCBpbml0aWFsX2hhbmRsZXIuaXZhciAoRXJyb3IgZXJyKTtcbiAgICAgICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIHJlc3BvbnNlLmRhdGEgd2l0aFxuICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyb3IgZXJyXG4gICAgICAgICB8IE9rIGxlbiAtPlxuICAgICAgICAgICBsZXQgaW5pdGlhbCA9XG4gICAgICAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICAgICAgIChJbml0aWFsX21lc3NhZ2UuYmluX3JlYWRlcl90XG4gICAgICAgICAgICAgICAgICBpbml0aWFsX2hhbmRsZXIucnBjLmJpbl9pbml0aWFsX3Jlc3BvbnNlLnJlYWRlclxuICAgICAgICAgICAgICAgICAgaW5pdGlhbF9oYW5kbGVyLnJwYy5iaW5fZXJyb3JfcmVzcG9uc2UucmVhZGVyKVxuICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHN0cmVhbWluZ19ycGMgaW5pdGlhbF9yZXNwb25zZSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgKG1hdGNoIGluaXRpYWwgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyb3IgZXJyXG4gICAgICAgICAgICB8IE9rIGluaXRpYWxfbXNnIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBpbml0aWFsX21zZy5pbml0aWFsIHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgICAgICAgIEl2YXIuZmlsbCBpbml0aWFsX2hhbmRsZXIuaXZhciAoT2sgKEVycm9yIGVycikpO1xuICAgICAgICAgICAgICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICAgICAgICAgICAgIHwgT2sgaW5pdGlhbCAtPlxuICAgICAgICAgICAgICAgICBsZXQgZXh0cmEsIGhhbmRsZXIgPSBpbml0aWFsX2hhbmRsZXIubWFrZV91cGRhdGVfaGFuZGxlciAoKSBpblxuICAgICAgICAgICAgICAgICBJdmFyLmZpbGxcbiAgICAgICAgICAgICAgICAgICBpbml0aWFsX2hhbmRsZXIuaXZhclxuICAgICAgICAgICAgICAgICAgIChPayAoT2sgKGluaXRpYWxfaGFuZGxlci5xdWVyeV9pZCwgaW5pdGlhbCwgZXh0cmEpKSk7XG4gICAgICAgICAgICAgICAgIHN0YXRlLnN0YXRlXG4gICAgICAgICAgICAgICAgIDwtIFdyaXRpbmdfdXBkYXRlc1xuICAgICAgICAgICAgICAgICAgICAgIChpbml0aWFsX2hhbmRsZXIucnBjLmJpbl91cGRhdGVfcmVzcG9uc2UucmVhZGVyLCBoYW5kbGVyKTtcbiAgICAgICAgICAgICAgICAgYGtlZXApKSlcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfZ2VuID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgbWFrZV91cGRhdGVfaGFuZGxlciA9XG4gICAgbGV0IGJpbl93cml0ZXJfcXVlcnkgPVxuICAgICAgUC5TdHJlYW1fcXVlcnkuYmluX3dyaXRlcl9uZWVkc19sZW5ndGhcbiAgICAgICAgKFdyaXRlcl93aXRoX2xlbmd0aC5vZl90eXBlX2NsYXNzIHQuYmluX3F1ZXJ5KVxuICAgIGluXG4gICAgbGV0IHF1ZXJ5ID0gYFF1ZXJ5IHF1ZXJ5IGluXG4gICAgbGV0IHF1ZXJ5X2lkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBScGNfY29tbW9uLmRpc3BhdGNoX3Jhd1xuICAgICAgP21ldGFkYXRhXG4gICAgICBjb25uXG4gICAgICB+cXVlcnlfaWRcbiAgICAgIH50YWc6dC50YWdcbiAgICAgIH52ZXJzaW9uOnQudmVyc2lvblxuICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgIH5xdWVyeVxuICAgICAgfmY6KGZ1biBpdmFyIC0+XG4gICAgICAgIHJlc3BvbnNlX2hhbmRsZXJcbiAgICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAoRGVmZXJyZWQucGVlayAoQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gICAgICAgICAgICAgICA6IEluZm8udCBvcHRpb24pXSlcbiAgICAgICAgICB7IHJwYyA9IHQ7IHF1ZXJ5X2lkOyBjb25uZWN0aW9uID0gY29ubjsgaXZhcjsgbWFrZV91cGRhdGVfaGFuZGxlciB9KVxuICAgID4+fCBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICAgICAgfnJwY19kZXNjcmlwdGlvbjp7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHQudGFnOyB2ZXJzaW9uID0gdC52ZXJzaW9uIH1cbiAgICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjooQ29ubmVjdGlvbi5kZXNjcmlwdGlvbiBjb25uKVxuICAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9pdGVyID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgfmYgPVxuICAgIG1hdGNoJW1hcCBkaXNwYXRjaF9nZW4gP21ldGFkYXRhIHQgY29ubiBxdWVyeSAoZnVuICgpIC0+ICgpLCBmKSB3aXRoXG4gICAgfCAoRXJyb3IgXyB8IE9rIChFcnJvciBfKSkgYXMgZSAtPiBlXG4gICAgfCBPayAoT2sgKGlkLCBpbml0LCAoKSkpIC0+IE9rIChPayAoaWQsIGluaXQpKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGRpc3BhdGNoX2dlbiA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IChmdW4gKCkgLT5cbiAgICAgICAgbGV0IHBpcGVfciwgcGlwZV93ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICAgICAgKCogU2V0IGEgc21hbGwgYnVmZmVyIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHB1c2hiYWNrIGV2ZW50cyAqKVxuICAgICAgICBQaXBlLnNldF9zaXplX2J1ZGdldCBwaXBlX3cgMTAwO1xuICAgICAgICBsZXQgY2xvc2VfcmVhc29uIDogUGlwZV9jbG9zZV9yZWFzb24udCBJdmFyLnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgICBsZXQgZiA6IF8gUmVzcG9uc2Vfc3RhdGUuVXBkYXRlX2hhbmRsZXIudCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBVcGRhdGUgZGF0YSAtPlxuICAgICAgICAgICAgaWYgbm90IChQaXBlLmlzX2Nsb3NlZCBwaXBlX3cpXG4gICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHBpcGVfdyBkYXRhO1xuICAgICAgICAgICAgICBpZiB0LmNsaWVudF9wdXNoZXNfYmFjayAmJiBQaXBlLmxlbmd0aCBwaXBlX3cgPj0gUGlwZS5zaXplX2J1ZGdldCBwaXBlX3dcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIFdhaXRcbiAgICAgICAgICAgICAgICAgIChtYXRjaCVtYXAgUGlwZS5kb3duc3RyZWFtX2ZsdXNoZWQgcGlwZV93IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBPayB8IGBSZWFkZXJfY2xvc2VkIC0+ICgpKVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlKVxuICAgICAgICAgICAgZWxzZSBDb250aW51ZVxuICAgICAgICAgIHwgQ2xvc2VkIHJlYXNvbiAtPlxuICAgICAgICAgICAgSXZhci5maWxsX2lmX2VtcHR5XG4gICAgICAgICAgICAgIGNsb3NlX3JlYXNvblxuICAgICAgICAgICAgICAobWF0Y2ggcmVhc29uIHdpdGhcbiAgICAgICAgICAgICAgIHwgYEJ5X3JlbW90ZV9zaWRlIC0+IENsb3NlZF9yZW1vdGVseVxuICAgICAgICAgICAgICAgfCBgRXJyb3IgZXJyIC0+IEVycm9yIGVycik7XG4gICAgICAgICAgICBQaXBlLmNsb3NlIHBpcGVfdztcbiAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgIGluXG4gICAgICAgIChwaXBlX3IsIGNsb3NlX3JlYXNvbiksIGYpXG4gICAgd2l0aFxuICAgIHwgKEVycm9yIF8gfCBPayAoRXJyb3IgXykpIGFzIGUgLT4gZVxuICAgIHwgT2sgKE9rIChpZCwgaW5pdCwgKHBpcGVfciwgY2xvc2VfcmVhc29uKSkpIC0+XG4gICAgICB1cG9uIChQaXBlLmNsb3NlZCBwaXBlX3IpIChmdW4gKCkgLT5cbiAgICAgICAgaWYgbm90IChJdmFyLmlzX2Z1bGwgY2xvc2VfcmVhc29uKVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBhYm9ydCB0IGNvbm4gaWQ7XG4gICAgICAgICAgSXZhci5maWxsX2lmX2VtcHR5IGNsb3NlX3JlYXNvbiBDbG9zZWRfbG9jYWxseSkpO1xuICAgICAgbGV0IHBpcGVfbWV0YWRhdGEgOiBQaXBlX21ldGFkYXRhLnQgPVxuICAgICAgICB7IHF1ZXJ5X2lkID0gaWQ7IGNsb3NlX3JlYXNvbiA9IEl2YXIucmVhZCBjbG9zZV9yZWFzb24gfVxuICAgICAgaW5cbiAgICAgIE9rIChPayAocGlwZV9tZXRhZGF0YSwgaW5pdCwgcGlwZV9yKSlcbiAgOztcbmVuZFxuXG4oKiBBIFBpcGVfcnBjIGlzIGxpa2UgYSBTdHJlYW1pbmdfcnBjLCBleGNlcHQgd2UgZG9uJ3QgY2FyZSBhYm91dCBpbml0aWFsIHN0YXRlIC0gdGh1c1xuICAgaXQgaXMgcmVzdHJpY3RlZCB0byB1bml0IGFuZCB1bHRpbWF0ZWx5IGlnbm9yZWQgKilcbm1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICB0eXBlICgncXVlcnksICdyZXNwb25zZSwgJ2Vycm9yKSB0ID0gKCdxdWVyeSwgdW5pdCwgJ3Jlc3BvbnNlLCAnZXJyb3IpIFN0cmVhbWluZ19ycGMudFxuXG4gIG1vZHVsZSBJZCA9IFAuUXVlcnlfaWRcbiAgbW9kdWxlIE1ldGFkYXRhID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhXG5cbiAgbGV0IGNyZWF0ZSA/Y2xpZW50X3B1c2hlc19iYWNrIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSB+YmluX2Vycm9yICgpID1cbiAgICBTdHJlYW1pbmdfcnBjLmNyZWF0ZVxuICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgfm5hbWVcbiAgICAgIH52ZXJzaW9uXG4gICAgICB+YmluX3F1ZXJ5XG4gICAgICB+YmluX2luaXRpYWxfcmVzcG9uc2U6VW5pdC5iaW5fdFxuICAgICAgfmJpbl91cGRhdGVfcmVzcG9uc2U6YmluX3Jlc3BvbnNlXG4gICAgICB+YmluX2Vycm9yXG4gICAgICAoKiBbaW5pdGlhbF9yZXNwb25zZV0gZG9lc24ndCBzaG93IHVwIGluIFtQaXBlX3JwY10ncyBzaWduYXR1cmUsXG4gICAgICAgICBzbyB0aGUgdHlwZS1pZCBjcmVhdGVkIHVzaW5nIFthbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZV0gaXNcbiAgICAgICAgIHVucmVhY2hhYmxlLiAqKVxuICAgICAgfmFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlOlwiXCJcbiAgICAgIH5hbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlOlwicmVzcG9uc2VcIlxuICAgICAgKClcbiAgOztcblxuICBsZXQgYmluX3F1ZXJ5IHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX3F1ZXJ5XG4gIGxldCBiaW5fcmVzcG9uc2UgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fdXBkYXRlX3Jlc3BvbnNlXG4gIGxldCBiaW5fZXJyb3IgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fZXJyb3JfcmVzcG9uc2VcbiAgbGV0IGNsaWVudF9wdXNoZXNfYmFjayB0ID0gdC5TdHJlYW1pbmdfcnBjLmNsaWVudF9wdXNoZXNfYmFja1xuXG4gIGxldCBpbXBsZW1lbnQgP29uX2V4Y2VwdGlvbiB0IGYgPVxuICAgIFN0cmVhbWluZ19ycGMuaW1wbGVtZW50ID9vbl9leGNlcHRpb24gdCAoZnVuIGEgcXVlcnkgLT5cbiAgICAgIGxldCVtYXAgeCA9IGYgYSBxdWVyeSBpblxuICAgICAgeCA+Pnx+IGZ1biB4IC0+ICgpLCB4KVxuICA7O1xuXG4gIG1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbiAgICBtb2R1bGUgR3JvdXAgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBCdWZmZXIgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gQmlnc3RyaW5nLnQgcmVmXG5cbiAgICAgICAgbGV0IGNyZWF0ZSA/KGluaXRpYWxfc2l6ZSA9IDQwOTYpICgpID1cbiAgICAgICAgICBpZiBpbml0aWFsX3NpemUgPCAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuQnVmZmVyLmNyZWF0ZSBnb3QgbmVnYXRpdmUgYnVmZmVyIFxcXG4gICAgICAgICAgICAgICBzaXplXCJcbiAgICAgICAgICAgICAgaW5pdGlhbF9zaXplXG4gICAgICAgICAgICAgIEludC5zZXhwX29mX3Q7XG4gICAgICAgICAgcmVmIChCaWdzdHJpbmcuY3JlYXRlIGluaXRpYWxfc2l6ZSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyID0gJ2EgdFxuXG4gICAgICBtb2R1bGUgVCA9IEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFQuR3JvdXAudCA9XG4gICAgICAgIHsgbXV0YWJsZSBjb21wb25lbnRzIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLnRcbiAgICAgICAgOyBjb21wb25lbnRzX2J5X2lkIDogJ2EgY29tcG9uZW50IElkLlRhYmxlLnRcbiAgICAgICAgOyBidWZmZXIgOiBCaWdzdHJpbmcudCByZWZcbiAgICAgICAgfVxuXG4gICAgICBhbmQgJ2EgY29tcG9uZW50ID0gJ2EgVC5Hcm91cC5jb21wb25lbnQgPVxuICAgICAgICB7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwIDogJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgQmFnLkVsdC50XG4gICAgICAgIDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgOiAnYSBULmdyb3VwX2VudHJ5IEJhZy5FbHQudFxuICAgICAgICB9XG5cbiAgICAgIGxldCBjcmVhdGUgP2J1ZmZlciAoKSA9XG4gICAgICAgIGxldCBidWZmZXIgPVxuICAgICAgICAgIG1hdGNoIGJ1ZmZlciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgKClcbiAgICAgICAgICB8IFNvbWUgYiAtPiBiXG4gICAgICAgIGluXG4gICAgICAgIHsgY29tcG9uZW50cyA9IEJhZy5jcmVhdGUgKCk7IGNvbXBvbmVudHNfYnlfaWQgPSBJZC5UYWJsZS5jcmVhdGUgKCk7IGJ1ZmZlciB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgbGVuZ3RoIHQgPSBCYWcubGVuZ3RoIHQuY29tcG9uZW50c1xuXG4gICAgICBsZXQgYWRkX2V4biB0ICh3cml0ZXIgOiBfIEltcGxlbWVudGF0aW9ucy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50KSA9XG4gICAgICAgIGlmIGlzX2Nsb3NlZCB3cml0ZXJcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICBcIlJwYy5QaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC5hZGRfZXhuOiBjYW5ub3QgYWRkIGEgY2xvc2VkIGRpcmVjdCBcXFxuICAgICAgICAgICAgIHN0cmVhbSB3cml0ZXJcIjtcbiAgICAgICAgaWYgSGFzaHRibC5tZW0gdC5jb21wb25lbnRzX2J5X2lkIHdyaXRlci5pZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLmFkZF9leG46IHRyeWluZyB0byBhZGQgYSBkaXJlY3QgXFxcbiAgICAgICAgICAgICBzdHJlYW0gd3JpdGVyIHRoYXQgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBncm91cFwiO1xuICAgICAgICAobWF0Y2ggQmFnLmNob29zZSB0LmNvbXBvbmVudHMgd2l0aFxuICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICB8IFNvbWUgb25lIC0+XG4gICAgICAgICAgIGxldCBvbmUgPSBCYWcuRWx0LnZhbHVlIG9uZSBpblxuICAgICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgKGJpbl93cml0ZXIgb25lKSAoYmluX3dyaXRlciB3cml0ZXIpKVxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLmFkZDogY2Fubm90IGFkZCBhIGRpcmVjdCBzdHJlYW0gXFxcbiAgICAgICAgICAgICAgICB3cml0ZXIgd2l0aCBhIGRpZmZlcmVudCBiaW5fd3JpdGVyXCIpO1xuICAgICAgICBsZXQgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgPSBCYWcuYWRkIHQuY29tcG9uZW50cyB3cml0ZXIgaW5cbiAgICAgICAgbGV0IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyID1cbiAgICAgICAgICBCYWcuYWRkIHdyaXRlci5ncm91cHMgeyBncm91cCA9IHQ7IGVsZW1lbnRfaW5fZ3JvdXAgPSB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCB9XG4gICAgICAgIGluXG4gICAgICAgIEhhc2h0YmwuYWRkX2V4blxuICAgICAgICAgIHQuY29tcG9uZW50c19ieV9pZFxuICAgICAgICAgIH5rZXk6d3JpdGVyLmlkXG4gICAgICAgICAgfmRhdGE6eyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgfVxuICAgICAgOztcblxuICAgICAgbGV0IHJlbW92ZSB0ICh3cml0ZXIgOiBfIEltcGxlbWVudGF0aW9ucy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50KSA9XG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9hbmRfcmVtb3ZlIHQuY29tcG9uZW50c19ieV9pZCB3cml0ZXIuaWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXA7IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIH0gLT5cbiAgICAgICAgICBCYWcucmVtb3ZlIHQuY29tcG9uZW50cyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cDtcbiAgICAgICAgICBCYWcucmVtb3ZlIHdyaXRlci5ncm91cHMgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXJcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19saXN0IHQgPSBCYWcudG9fbGlzdCB0LmNvbXBvbmVudHNcblxuICAgICAgbGV0IGZsdXNoZWRfb3JfY2xvc2VkIHQgPVxuICAgICAgICB0b19saXN0IHRcbiAgICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biB0IC0+IERlZmVycmVkLmFueV91bml0IFsgZmx1c2hlZCB0OyBjbG9zZWQgdCBdKVxuICAgICAgICB8PiBEZWZlcnJlZC5hbGxfdW5pdFxuICAgICAgOztcblxuICAgICAgbGV0IGZsdXNoZWQgdCA9IGZsdXNoZWRfb3JfY2xvc2VkIHRcblxuICAgICAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgICAgICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgICBCYWcuaXRlciB0LmNvbXBvbmVudHMgfmY6KGZ1biBkaXJlY3Rfc3RyZWFtX3dyaXRlciAtPlxuICAgICAgICAgICAgKCogV3JpdGVycyBhcmUgYXV0b21hdGljYWxseSBzY2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZWlyIGdyb3VwcyB3aGVuXG4gICAgICAgICAgICAgICBjbG9zZWQsIHNvIFtgQ2xvc2VkXSBoZXJlIGp1c3QgbWVhbnMgdGhhdCB0aGUgcmVtb3ZhbCBkaWRuJ3QgaGFwcGVuIHlldC4gKilcbiAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAoRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgZGlyZWN0X3N0cmVhbV93cml0ZXIgfmJ1ZiB+cG9zIH5sZW5cbiAgICAgICAgICAgICAgIDogWyBgT2sgfCBgQ2xvc2VkIF0pKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cml0ZSB0IH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW47XG4gICAgICAgICAgZmx1c2hlZF9vcl9jbG9zZWQgdFxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCA9XG4gICAgICAgIG1hdGNoIEJhZy5jaG9vc2UgdC5jb21wb25lbnRzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBvbmUgLT5cbiAgICAgICAgICBsZXQgb25lID0gQmFnLkVsdC52YWx1ZSBvbmUgaW5cbiAgICAgICAgICBsZXQgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlOyBzaXplIH0gPSBiaW5fd3JpdGVyIG9uZSBpblxuICAgICAgICAgIGxldCBidWZmZXIgPSAhKHQuYnVmZmVyKSBpblxuICAgICAgICAgICgqIE9wdGltaXN0aWMgZmlyc3QgdHJ5ICopXG4gICAgICAgICAgKG1hdGNoIHdyaXRlIGJ1ZmZlciB+cG9zOjAgeCB3aXRoXG4gICAgICAgICAgIHwgbGVuIC0+IEV4cGVydC53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZjpidWZmZXIgfnBvczowIH5sZW5cbiAgICAgICAgICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgICAgICAgICgqIEl0J3MgbGlrZWx5IHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyBkdWUgdG8gYSBidWZmZXIgb3ZlcmZsb3csIHNvIHJlc2l6ZSB0aGVcbiAgICAgICAgICAgICAgICBpbnRlcm5hbCBidWZmZXIgYW5kIHRyeSBhZ2Fpbi4gVGVjaG5pY2FsbHkgd2UgY291bGQgbWF0Y2ggb25cbiAgICAgICAgICAgICAgICBbQmluX3Byb3QuQ29tbW9uLkJ1ZmZlcl9zaG9ydF0gb25seSwgaG93ZXZlciB3ZSBjYW4ndCBlYXNpbHkgZW5mb3JjZSB0aGF0XG4gICAgICAgICAgICAgICAgY3VzdG9tIGJpbl93cml0ZV94eHggZnVuY3Rpb25zIHJhaXNlIHRoaXMgcGFydGljdWxhciBleGNlcHRpb24gYW5kIG5vdFxuICAgICAgICAgICAgICAgIFtJbnZhbGlkX2FyZ3VtZW50XSBvciBbRmFpbHVyZV0gZm9yIGluc3RhbmNlLiAqKVxuICAgICAgICAgICAgIGxldCBsZW4gPSBzaXplIHggaW5cbiAgICAgICAgICAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmZmVyO1xuICAgICAgICAgICAgIGxldCBidWZmZXIgPSBCaWdzdHJpbmcuY3JlYXRlIChJbnQuY2VpbF9wb3cyIGxlbikgaW5cbiAgICAgICAgICAgICB0LmJ1ZmZlciA6PSBidWZmZXI7XG4gICAgICAgICAgICAgbGV0IGxlbiA9IHdyaXRlIGJ1ZmZlciB+cG9zOjAgeCBpblxuICAgICAgICAgICAgIEV4cGVydC53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZjpidWZmZXIgfnBvczowIH5sZW4pXG4gICAgICA7O1xuXG4gICAgICBsZXQgd3JpdGUgdCB4ID1cbiAgICAgICAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHg7XG4gICAgICAgIGZsdXNoZWRfb3JfY2xvc2VkIHRcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBpbXBsZW1lbnRfZGlyZWN0ID9vbl9leGNlcHRpb24gdCBmID1cbiAgICBTdHJlYW1pbmdfcnBjLmltcGxlbWVudF9kaXJlY3QgP29uX2V4Y2VwdGlvbiB0IGZcbiAgOztcblxuICBsZXQgZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0JW1hcCByZXNwb25zZSA9IFN0cmVhbWluZ19ycGMuZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSBpblxuICAgIHJlc3BvbnNlID4+fH4gZnVuIHggLT4geCA+Pnx+IGZ1biAobWV0YWRhdGEsICgpLCBwaXBlX3IpIC0+IHBpcGVfciwgbWV0YWRhdGFcbiAgOztcblxuICBleGNlcHRpb24gUGlwZV9ycGNfZmFpbGVkXG5cbiAgbGV0IGRpc3BhdGNoX2V4biA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3VsdCA9IGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgaW5cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgcnBjX2Vycm9yIC0+IHJhaXNlIChFcnJvci50b19leG4gcnBjX2Vycm9yKVxuICAgIHwgT2sgKEVycm9yIF8pIC0+IHJhaXNlIFBpcGVfcnBjX2ZhaWxlZFxuICAgIHwgT2sgKE9rIHBpcGVfYW5kX2lkKSAtPiBwaXBlX2FuZF9pZFxuICA7O1xuXG4gIG1vZHVsZSBQaXBlX21lc3NhZ2UgPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWVzc2FnZVxuICBtb2R1bGUgUGlwZV9yZXNwb25zZSA9IFN0cmVhbWluZ19ycGMuUGlwZV9yZXNwb25zZVxuXG4gIGxldCBkaXNwYXRjaF9pdGVyID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgfmYgPVxuICAgIGxldCVtYXAgcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLmRpc3BhdGNoX2l0ZXIgP21ldGFkYXRhIHQgY29ubiBxdWVyeSB+ZiBpblxuICAgIHJlc3BvbnNlID4+fH4gZnVuIHggLT4geCA+Pnx+IGZ1biAoaWQsICgpKSAtPiBpZFxuICA7O1xuXG4gIGxldCBhYm9ydCA9IFN0cmVhbWluZ19ycGMuYWJvcnRcbiAgbGV0IGNsb3NlX3JlYXNvbiA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXRhZGF0YS5jbG9zZV9yZWFzb25cbiAgbGV0IG5hbWUgdCA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC5TdHJlYW1pbmdfcnBjLnRhZ1xuICBsZXQgdmVyc2lvbiB0ID0gdC5TdHJlYW1pbmdfcnBjLnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLnF1ZXJ5X3R5cGVfaWRcbiAgbGV0IGVycm9yX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5lcnJvcl9yZXNwb25zZV90eXBlX2lkXG4gIGxldCByZXNwb25zZV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMudXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWRcbmVuZFxuXG5tb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gIHR5cGUgKCdxdWVyeSwgJ3N0YXRlLCAndXBkYXRlLCAnZXJyb3IpIHQgPVxuICAgICgncXVlcnksICdzdGF0ZSwgJ3VwZGF0ZSwgJ2Vycm9yKSBTdHJlYW1pbmdfcnBjLnRcblxuICBtb2R1bGUgSWQgPSBQLlF1ZXJ5X2lkXG4gIG1vZHVsZSBNZXRhZGF0YSA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXRhZGF0YVxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgICB+bmFtZVxuICAgICAgICB+dmVyc2lvblxuICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgIH5iaW5fc3RhdGVcbiAgICAgICAgfmJpbl91cGRhdGVcbiAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAoKVxuICAgID1cbiAgICBTdHJlYW1pbmdfcnBjLmNyZWF0ZVxuICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgfm5hbWVcbiAgICAgIH52ZXJzaW9uXG4gICAgICB+YmluX3F1ZXJ5XG4gICAgICB+YmluX2luaXRpYWxfcmVzcG9uc2U6YmluX3N0YXRlXG4gICAgICB+YmluX3VwZGF0ZV9yZXNwb25zZTpiaW5fdXBkYXRlXG4gICAgICB+YmluX2Vycm9yXG4gICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2U6XCJzdGF0ZVwiXG4gICAgICB+YWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZTpcInVwZGF0ZVwiXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBiaW5fcXVlcnkgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fcXVlcnlcbiAgbGV0IGJpbl9zdGF0ZSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9pbml0aWFsX3Jlc3BvbnNlXG4gIGxldCBiaW5fdXBkYXRlIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX3VwZGF0ZV9yZXNwb25zZVxuICBsZXQgYmluX2Vycm9yIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX2Vycm9yX3Jlc3BvbnNlXG4gIGxldCBpbXBsZW1lbnQgPSBTdHJlYW1pbmdfcnBjLmltcGxlbWVudFxuICBsZXQgaW1wbGVtZW50X2RpcmVjdCA9IFN0cmVhbWluZ19ycGMuaW1wbGVtZW50X2RpcmVjdFxuXG4gIGxldCBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5kaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IGluXG4gICAgcmVzcG9uc2VcbiAgICA+Pnx+IGZ1biB4IC0+IHggPj58fiBmdW4gKG1ldGFkYXRhLCBzdGF0ZSwgdXBkYXRlX3IpIC0+IHN0YXRlLCB1cGRhdGVfciwgbWV0YWRhdGFcbiAgOztcblxuICBsZXQgYWJvcnQgPSBTdHJlYW1pbmdfcnBjLmFib3J0XG4gIGxldCBjbG9zZV9yZWFzb24gPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWV0YWRhdGEuY2xvc2VfcmVhc29uXG4gIGxldCBjbGllbnRfcHVzaGVzX2JhY2sgdCA9IHQuU3RyZWFtaW5nX3JwYy5jbGllbnRfcHVzaGVzX2JhY2tcbiAgbGV0IG5hbWUgdCA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC5TdHJlYW1pbmdfcnBjLnRhZ1xuICBsZXQgdmVyc2lvbiB0ID0gdC5TdHJlYW1pbmdfcnBjLnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLnF1ZXJ5X3R5cGVfaWRcbiAgbGV0IHN0YXRlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5pbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IHVwZGF0ZV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMudXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IGVycm9yX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5lcnJvcl9yZXNwb25zZV90eXBlX2lkXG5lbmRcblxubW9kdWxlIEFueSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgUnBjIDogKCdxLCAncikgUnBjLnQgLT4gdFxuICAgIHwgUGlwZSA6ICgncSwgJ3IsICdlKSBQaXBlX3JwYy50IC0+IHRcbiAgICB8IFN0YXRlIDogKCdxLCAncywgJ3UsICdlKSBTdGF0ZV9ycGMudCAtPiB0XG4gICAgfCBPbmVfd2F5IDogJ20gT25lX3dheS50IC0+IHRcblxuICBsZXQgZGVzY3JpcHRpb24gPSBmdW5jdGlvblxuICAgIHwgUnBjIHJwYyAtPiBScGMuZGVzY3JpcHRpb24gcnBjXG4gICAgfCBQaXBlIHJwYyAtPiBQaXBlX3JwYy5kZXNjcmlwdGlvbiBycGNcbiAgICB8IFN0YXRlIHJwYyAtPiBTdGF0ZV9ycGMuZGVzY3JpcHRpb24gcnBjXG4gICAgfCBPbmVfd2F5IHJwYyAtPiBPbmVfd2F5LmRlc2NyaXB0aW9uIHJwY1xuICA7O1xuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIERlc2NyaXB0aW9uID0gRGVzY3JpcHRpb24uU3RhYmxlXG4gIG1vZHVsZSBQaXBlX2Nsb3NlX3JlYXNvbiA9IFBpcGVfY2xvc2VfcmVhc29uLlN0YWJsZVxuICBtb2R1bGUgUnBjID0gUnBjXG4gIG1vZHVsZSBQaXBlX3JwYyA9IFBpcGVfcnBjXG4gIG1vZHVsZSBTdGF0ZV9ycGMgPSBTdGF0ZV9ycGNcbiAgbW9kdWxlIE9uZV93YXkgPSBPbmVfd2F5XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gUnBjXG5cbm1vZHVsZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICB0eXBlICdpbnB1dCB0ID1cbiAgICB8IFQgOlxuICAgICAgICB7IGNvbnZlcnQgOiAnaW5wdXQgLT4gJ291dHB1dFxuICAgICAgICA7IHdyaXRlciA6ICdvdXRwdXQgRGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICB9XG4gICAgICAgIC0+ICdpbnB1dCB0XG5cbiAgbGV0IGNyZWF0ZSB+Y29udmVydCB+d3JpdGVyID0gVCB7IGNvbnZlcnQ7IHdyaXRlciB9XG5cbiAgbGV0IHdyaXRlIChUIHsgY29udmVydDsgd3JpdGVyIH0pIGlucHV0ID1cbiAgICBEaXJlY3Rfc3RyZWFtX3dyaXRlci53cml0ZSB3cml0ZXIgKGNvbnZlcnQgaW5wdXQpXG4gIDs7XG5cbiAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgKFQgeyBjb252ZXJ0OyB3cml0ZXIgfSkgaW5wdXQgPVxuICAgIERpcmVjdF9zdHJlYW1fd3JpdGVyLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChjb252ZXJ0IGlucHV0KVxuICA7O1xuXG4gIGxldCBjbG9zZSAoVCB7IGNvbnZlcnQgPSBfOyB3cml0ZXIgfSkgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZSB3cml0ZXJcbiAgbGV0IGlzX2Nsb3NlZCAoVCB7IGNvbnZlcnQgPSBfOyB3cml0ZXIgfSkgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5pc19jbG9zZWQgd3JpdGVyXG4gIGxldCBjbG9zZWQgKFQgeyBjb252ZXJ0ID0gXzsgd3JpdGVyIH0pID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuY2xvc2VkIHdyaXRlclxuZW5kXG5cbmxldCBmYWlsZWRfY29udmVyc2lvbiB4ID1cbiAgRXJyb3IuY3JlYXRlXG4gICAgXCJ0eXBlIGNvbnZlcnNpb24gZmFpbHVyZVwiXG4gICAgeFxuICAgIFslc2V4cF9vZjpcbiAgICAgIFsgYE1zZyB8IGBRdWVyeSB8IGBSZXNwb25zZSB8IGBFcnJvciB8IGBTdGF0ZSB8IGBVcGRhdGUgXVxuICAgICAgKiBbIGBScGMgb2Ygc3RyaW5nIF1cbiAgICAgICogWyBgVmVyc2lvbiBvZiBpbnQgXVxuICAgICAgKiBleG5dXG47O1xuXG5sZXQgbXVsdGlwbGVfcmVnaXN0cmF0aW9ucyB4ID1cbiAgRXJyb3IuY3JlYXRlXG4gICAgXCJtdWx0aXBsZSBycGMgcmVnaXN0cmF0aW9uc1wiXG4gICAgeFxuICAgIFslc2V4cF9vZjogWyBgUnBjIG9mIHN0cmluZyBdICogWyBgVmVyc2lvbiBvZiBpbnQgXV1cbjs7XG5cbmxldCB1bmtub3duX3ZlcnNpb24geCA9IEVycm9yLmNyZWF0ZSBcInVua25vd24gcnBjIHZlcnNpb25cIiB4IFslc2V4cF9vZjogc3RyaW5nICogaW50XVxuXG5tb2R1bGUgQ2FsbGVlX2NvbnZlcnRzID0gc3RydWN0XG4gIG1vZHVsZSBScGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2ltcGxlID0gc3RydWN0XG4gICAgICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgYWRhcHRlciA9XG4gICAgICAgIHsgYWRhcHQgOlxuICAgICAgICAgICAgJ3N0YXRlLiAoJ3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzcG9uc2UgRGVmZXJyZWQudCkgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnRcbiAgICAgICAgfVxuXG4gICAgICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgdCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IGFkYXB0ZXJzIDogKCdxdWVyeSwgJ3Jlc3BvbnNlKSBhZGFwdGVyIEludC5NYXAudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICAgIGxldCBjcmVhdGUgfm5hbWUgPSB7IG5hbWU7IGFkYXB0ZXJzID0gSW50Lk1hcC5lbXB0eSB9XG5cbiAgICAgIGxldCB3cmFwX2Vycm9yIGZuIHN0YXRlIHF1ZXJ5ID1cbiAgICAgICAgbWF0Y2glbWFwIGZuIHN0YXRlIHF1ZXJ5IHdpdGhcbiAgICAgICAgfCBPayB2YWx1ZSAtPiBPayB2YWx1ZVxuICAgICAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yIChFcnJvci50b19zdHJpbmdfaHVtIGVycm9yKVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZCB7IG5hbWU7IGFkYXB0ZXJzIH0gcnBjIGFkYXB0ZXIgPVxuICAgICAgICBpZiBTdHJpbmcuKCA8PiApIG5hbWUgKFJwYy5uYW1lIHJwYylcbiAgICAgICAgdGhlblxuICAgICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgICBcIlJwYyBuYW1lcyBkb24ndCBhZ3JlZVwiXG4gICAgICAgICAgICAobmFtZSwgUnBjLm5hbWUgcnBjKVxuICAgICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB2ZXJzaW9uID0gUnBjLnZlcnNpb24gcnBjIGluXG4gICAgICAgICAgbWF0Y2ggTWFwLmZpbmQgYWRhcHRlcnMgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgICAgIFwiVmVyc2lvbiBhbHJlYWR5IGV4aXN0c1wiXG4gICAgICAgICAgICAgIChuYW1lLCB2ZXJzaW9uKVxuICAgICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIGludF1cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCBhZGFwdGVycyA9IE1hcC5zZXQgYWRhcHRlcnMgfmtleTp2ZXJzaW9uIH5kYXRhOmFkYXB0ZXIgaW5cbiAgICAgICAgICAgIE9rIHsgbmFtZTsgYWRhcHRlcnMgfSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGRfcnBjX3ZlcnNpb24gdCBvbGRfcnBjIHVwZ3JhZGUgZG93bmdyYWRlID1cbiAgICAgICAgbGV0IGFkYXB0IGZuID1cbiAgICAgICAgICBsZXQgYWRhcHRlZCBzdGF0ZSBvbGRfcXVlcnkgPVxuICAgICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBmbiBzdGF0ZSAodXBncmFkZSBvbGRfcXVlcnkpIGluXG4gICAgICAgICAgICBkb3duZ3JhZGUgcmVzdWx0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBScGMuaW1wbGVtZW50IG9sZF9ycGMgYWRhcHRlZFxuICAgICAgICBpblxuICAgICAgICBhZGQgdCBvbGRfcnBjIHsgYWRhcHQgfVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF9ycGNfdmVyc2lvbl93aXRoX2ZhaWx1cmUgdCBvbGRfcnBjIHVwZ3JhZGVfb3JfZXJyb3IgZG93bmdyYWRlX29yX2Vycm9yID1cbiAgICAgICAgbGV0IGFkYXB0IGZuID1cbiAgICAgICAgICBsZXQgYWRhcHRlZCBzdGF0ZSBvbGRfcXVlcnkgPVxuICAgICAgICAgICAgbGV0IG9wZW4gRGVmZXJyZWQuUmVzdWx0LkxldF9zeW50YXggaW5cbiAgICAgICAgICAgIGxldCViaW5kIHF1ZXJ5ID0gRGVmZXJyZWQucmV0dXJuICh1cGdyYWRlX29yX2Vycm9yIG9sZF9xdWVyeSkgaW5cbiAgICAgICAgICAgIGxldCViaW5kIHJlc3BvbnNlID0gZm4gc3RhdGUgcXVlcnkgaW5cbiAgICAgICAgICAgIERlZmVycmVkLnJldHVybiAoZG93bmdyYWRlX29yX2Vycm9yIHJlc3BvbnNlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgUnBjLmltcGxlbWVudCBvbGRfcnBjICh3cmFwX2Vycm9yIGFkYXB0ZWQpXG4gICAgICAgIGluXG4gICAgICAgIGFkZCB0IG9sZF9ycGMgeyBhZGFwdCB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3ZlcnNpb24gdCB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgdXBncmFkZSBkb3duZ3JhZGUgPVxuICAgICAgICBsZXQgcnBjID0gUnBjLmNyZWF0ZSB+bmFtZTp0Lm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIGluXG4gICAgICAgIGFkZF9ycGNfdmVyc2lvbiB0IHJwYyB1cGdyYWRlIGRvd25ncmFkZVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF92ZXJzaW9uX3dpdGhfZmFpbHVyZSB0IH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSB1cGdyYWRlIGRvd25ncmFkZSA9XG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lOnQubmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgaW5cbiAgICAgICAgYWRkX3JwY192ZXJzaW9uX3dpdGhfZmFpbHVyZSB0IHJwYyB1cGdyYWRlIGRvd25ncmFkZVxuICAgICAgOztcblxuICAgICAgbGV0IGltcGxlbWVudCB0IGZuID0gTWFwLmRhdGEgdC5hZGFwdGVycyB8PiBMaXN0Lm1hcCB+ZjooZnVuIHsgYWRhcHQgfSAtPiBhZGFwdCBmbilcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gcXVlcnkgLT4gcmVzcG9uc2UgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9ICdzIC0+IHZlcnNpb246aW50IC0+IE1vZGVsLnF1ZXJ5IC0+IE1vZGVsLnJlc3BvbnNlIERlZmVycmVkLnRcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5IDogKGludCwgaW1wbGVtZW50ZXIgKiBBbnkudCkgSGFzaHRibC50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF9ycGMpIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIFJwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxKSB3aXRoXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgICAgRXJyb3IucmFpc2UgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgfCBPayBxIC0+XG4gICAgICAgICAgICAgICAgbGV0JW1hcCByID0gZiBzIH52ZXJzaW9uIHEgaW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsIHIpIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBPayByIC0+IHJcbiAgICAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5ScGMgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBxdWVyeVxuICAgICAgICAgICAgLT4gKHJlc3BvbnNlIFBpcGUuUmVhZGVyLnQsIGVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfZGlyZWN0X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgICAgICAtPiByZXNwb25zZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAgLT4gKHVuaXQsIGVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICB0eXBlIGVycm9yXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuXG4gICAgICB0eXBlICdzIGltcGwgPVxuICAgICAgICB8IFBpcGUgb2ZcbiAgICAgICAgICAgICgnc1xuICAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgICAtPiAoTW9kZWwucmVzcG9uc2UgUGlwZS5SZWFkZXIudCwgTW9kZWwuZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIHwgRGlyZWN0IG9mXG4gICAgICAgICAgICAoJ3NcbiAgICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgICAgLT4gTW9kZWwucmVzcG9uc2UgVmVyc2lvbmVkX2RpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgICAgICAtPiAodW5pdCwgTW9kZWwuZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG5cbiAgICAgIHR5cGUgaW1wbGVtZW50ZXIgPVxuICAgICAgICB7IGltcGxlbWVudCA6ICdzLiBsb2dfdmVyc2lvbjooaW50IC0+IHVuaXQpIC0+ICdzIGltcGwgLT4gJ3MgSW1wbGVtZW50YXRpb24udCB9XG5cbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpX2dlbiA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBpbXBsID1cbiAgICAgICAgbGV0IGxvZ192ZXJzaW9uID1cbiAgICAgICAgICBtYXRjaCBsb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWdub3JlXG4gICAgICAgICAgKCogcHJldmVudCBjYWxsaW5nIFtmXSBtb3JlIHRoYW4gb25jZSBwZXIgdmVyc2lvbiAqKVxuICAgICAgICAgIHwgU29tZSBmIC0+IE1lbW8uZ2VuZXJhbCAoZiB+bmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoaSwgXykgLT4gaS5pbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGltcGwpXG4gICAgICA7O1xuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBpbXBsZW1lbnRfbXVsdGlfZ2VuID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIChQaXBlIGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgaW1wbGVtZW50X2RpcmVjdF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgaW1wbGVtZW50X211bHRpX2dlbiA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiAoRGlyZWN0IGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgdmFsIG1vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgdmFsIGVycm9yX29mX21vZGVsIDogTW9kZWwuZXJyb3IgLT4gZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pIDogVmVyc2lvbl9zaGFyZWQpIChDb252ZXJ0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9lbHQgOiAoTW9kZWwucmVzcG9uc2UgLT4gVmVyc2lvbl9pLnJlc3BvbnNlKSBPcl9lcnJvci50XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X3BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgTW9kZWwucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBWZXJzaW9uX2kucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG4gICAgICAgIG9wZW4gQ29udmVydFxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFBpcGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3Jlc3BvbnNlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cmFwcGVkX21vZGVsX29mX3F1ZXJ5IHEgPVxuICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgfCBxIC0+IHFcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgd3JhcHBlZF9lcnJvcl9vZl9tb2RlbCBlcnJvciA9XG4gICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLmVycm9yX29mX21vZGVsIGVycm9yIHdpdGhcbiAgICAgICAgICB8IGVycm9yIC0+IEVycm9yIGVycm9yXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGltcGwgPVxuICAgICAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgICAgIHwgUGlwZSBmIC0+XG4gICAgICAgICAgICBQaXBlX3JwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoJWJpbmQgZiBzIH52ZXJzaW9uICh3cmFwcGVkX21vZGVsX29mX3F1ZXJ5IHEpIHdpdGhcbiAgICAgICAgICAgICAgfCBPayBwaXBlIC0+XG4gICAgICAgICAgICAgICAgTW9uaXRvci5oYW5kbGVfZXJyb3JzXG4gICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IHJldHVybiAoT2sgKGNvbnZlcnRfcGlwZSBwaXBlKSkpXG4gICAgICAgICAgICAgICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gcmV0dXJuICh3cmFwcGVkX2Vycm9yX29mX21vZGVsIGVycm9yKSlcbiAgICAgICAgICB8IERpcmVjdCBmIC0+XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPcl9lcnJvci5va19leG4gY29udmVydF9lbHQgaW5cbiAgICAgICAgICAgIFBpcGVfcnBjLmltcGxlbWVudF9kaXJlY3QgcnBjIChmdW4gcyBxIGRzdyAtPlxuICAgICAgICAgICAgICBsZXQgd3JpdGVyID1cbiAgICAgICAgICAgICAgICBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIuY3JlYXRlIH5jb252ZXJ0OmNvbnZlcnRfZWx0IH53cml0ZXI6ZHN3XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoJW1hcCBmIHMgfnZlcnNpb24gKHdyYXBwZWRfbW9kZWxfb2ZfcXVlcnkgcSkgd3JpdGVyIHdpdGhcbiAgICAgICAgICAgICAgfCBPayAoKSAtPiBPayAoKVxuICAgICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+IHdyYXBwZWRfZXJyb3Jfb2ZfbW9kZWwgZXJyb3IpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooeyBpbXBsZW1lbnQgfSwgQW55LlBpcGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnQgLT4gcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9XG4gICAgICAgICAgICAgIE9yX2Vycm9yLmVycm9yX3N0cmluZyBcImNhbm5vdCB1c2UgZGlyZWN0IGludGVyZmFjZSB3aXRoIFJlZ2lzdGVyX3Jhd1wiXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlID0gVmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT2sgVmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlIHBpcGUgPSBQaXBlLm1hcCBwaXBlIH5mOlZlcnNpb25faS5yZXNwb25zZV9vZl9tb2RlbFxuICAgICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgc3RhdGVcbiAgICAgIHR5cGUgdXBkYXRlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBxdWVyeVxuICAgICAgICAgICAgLT4gKHN0YXRlICogdXBkYXRlIFBpcGUuUmVhZGVyLnQsIGVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9XG4gICAgICAgICdzXG4gICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgIC0+IChNb2RlbC5zdGF0ZSAqIE1vZGVsLnVwZGF0ZSBQaXBlLlJlYWRlci50LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudFxuXG4gICAgICB0eXBlIGltcGxlbWVudGVyID1cbiAgICAgICAgeyBpbXBsZW1lbnQgOiAncy4gbG9nX3ZlcnNpb246KGludCAtPiB1bml0KSAtPiAncyBpbXBsIC0+ICdzIEltcGxlbWVudGF0aW9uLnQgfVxuXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgbGV0IGxvZ192ZXJzaW9uID1cbiAgICAgICAgICBtYXRjaCBsb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWdub3JlXG4gICAgICAgICAgKCogcHJldmVudCBjYWxsaW5nIFtmXSBtb3JlIHRoYW4gb25jZSBwZXIgdmVyc2lvbiAqKVxuICAgICAgICAgIHwgU29tZSBmIC0+IE1lbW8uZ2VuZXJhbCAoZiB+bmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoaSwgXykgLT4gaS5pbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHN0YXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSB1cGRhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5xdWVyeVxuICAgICAgICB2YWwgc3RhdGVfb2ZfbW9kZWwgOiBNb2RlbC5zdGF0ZSAtPiBzdGF0ZVxuICAgICAgICB2YWwgZXJyb3Jfb2ZfbW9kZWwgOiBNb2RlbC5lcnJvciAtPiBlcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCB1cGRhdGVfb2ZfbW9kZWxcbiAgICAgICAgICAgIDogIE1vZGVsLnN0YXRlXG4gICAgICAgICAgICAtPiBNb2RlbC51cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID1cbiAgICAgICAgICBTdGF0ZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fc3RhdGVcbiAgICAgICAgICAgIH5iaW5fdXBkYXRlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGltcGxlbWVudCB+bG9nX3ZlcnNpb24gZiA9XG4gICAgICAgICAgICBTdGF0ZV9ycGMuaW1wbGVtZW50IHJwYyAoZnVuIHMgcSAtPlxuICAgICAgICAgICAgICBsb2dfdmVyc2lvbiB2ZXJzaW9uO1xuICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfcXVlcnkgcSB3aXRoXG4gICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IHEgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2glYmluZCBmIHMgfnZlcnNpb24gcSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgT2sgKG1vZGVsX3N0YXRlLCBwaXBlKSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBzdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kuc3RhdGVfb2ZfbW9kZWwgbW9kZWxfc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBzdGF0ZSAtPiBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgU3RhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIE1vbml0b3IuaGFuZGxlX2Vycm9yc1xuICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChPayAoc3RhdGUsIFZlcnNpb25faS51cGRhdGVfb2ZfbW9kZWwgbW9kZWxfc3RhdGUgcGlwZSkpKVxuICAgICAgICAgICAgICAgICAgICAgKGZ1biBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFVwZGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPlxuICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5lcnJvcl9vZl9tb2RlbCBlcnJvciB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBlcnJvciAtPiBFcnJvciBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuU3RhdGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9tb2RlbCA6IE1vZGVsLnVwZGF0ZSAtPiB1cGRhdGVcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBSZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCBfc3RhdGUgcGlwZSA9IFBpcGUubWFwIH5mOnVwZGF0ZV9vZl9tb2RlbCBwaXBlXG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBtc2dcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gbXNnIC0+IHVuaXQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBtc2dcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9ICdzIC0+IHZlcnNpb246aW50IC0+IE1vZGVsLm1zZyAtPiB1bml0XG5cbiAgICAgIHR5cGUgaW1wbGVtZW50ZXIgPVxuICAgICAgICB7IGltcGxlbWVudCA6ICdzLiBsb2dfdmVyc2lvbjooaW50IC0+IHVuaXQpIC0+ICdzIGltcGwgLT4gJ3MgSW1wbGVtZW50YXRpb24udCB9XG5cbiAgICAgIGxldCByZWdpc3RyeSA6IChpbnQsIGltcGxlbWVudGVyICogQW55LnQpIEhhc2h0YmwudCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfcnBjKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIG1zZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9tc2cgOiBtc2cgLT4gTW9kZWwubXNnXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IE9uZV93YXkuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fbXNnXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIE9uZV93YXkuaW1wbGVtZW50IHJwYyAoZnVuIHMgcSAtPlxuICAgICAgICAgICAgICBsb2dfdmVyc2lvbiB2ZXJzaW9uO1xuICAgICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kubW9kZWxfb2ZfbXNnIHEpIHdpdGhcbiAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBNc2csIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgfCBPayBxIC0+IGYgcyB+dmVyc2lvbiBxKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuT25lX3dheSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1lbnUgPSBzdHJ1Y3RcbiAgKCoqKioqKioqKioqKioqKioqIHNvbWUgcHJvaGliaXRpb25zIGZvciB0aGlzIG1vZHVsZSAqKioqKioqKioqKioqKioqKipcblxuICAgICAgICAgICAgICAgICAgICAgKDEpICEhISBuZXZlciBwcnVuZSBvbGQgdmVyc2lvbnMgb2YgdGhpcyBycGMgISEhXG5cbiAgICAgICAgICAgICAgICAgICAgIEl0IGlzIHRvbyBmdW5kYW1lbnRhbCB0byB0aGUgd29ya2luZ3Mgb2YgdmFyaW91cyB2ZXJzaW9uaW5nXG4gICAgICAgICAgICAgICAgICAgICBzY2hlbWVzIGFuZCBpdCBwcm9iYWJseSB3b24ndCBjaGFuZ2UgdmVyeSBtdWNoIGFueXdheS5cblxuICAgICAgICAgICAgICAgICAgICAgKDIpICEhISBvbmx5IGV2ZXIgc2F5IFwid2l0aCBiaW5faW9cIiBvbiBidWlsdC1pbiBvY2FtbCB0eXBlcyAhISFcblxuICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZXMgb2YgYnVpbHQtaW4gdHlwZXMgYXJlIGludCwgbGlzdCwgc3RyaW5nLCBldGMuXG5cbiAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgdG8gcHJvdGVjdCBvdXJzZWx2ZXMgYWdhaW5zdCBjaGFuZ2VzIHRvIENvcmUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlcywgZm9yIGV4YW1wbGUuXG5cbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICBtb2R1bGUgTW9kZWwgPSBzdHJ1Y3RcbiAgICBsZXQgbmFtZSA9IFwiX19WZXJzaW9uZWRfcnBjLk1lbnVcIlxuXG4gICAgdHlwZSBxdWVyeSA9IHVuaXRcbiAgICB0eXBlIHJlc3BvbnNlID0gRGVzY3JpcHRpb24udCBsaXN0XG4gIGVuZFxuXG4gIGluY2x1ZGUgQ2FsbGVlX2NvbnZlcnRzLlJwYy5NYWtlIChNb2RlbClcblxuICBsZXQgcnBjX25hbWUgPSBNb2RlbC5uYW1lXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGxldCB2ZXJzaW9uID0gMVxuXG4gICAgICB0eXBlIHF1ZXJ5ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHF1ZXJ5XTtcbiAgICAgICAgWyVleHBlY3Qge3wgODZiYTVkZjc0N2VlYzgzN2YwYjM5MWRkNDlmMzNmOWUgfH1dXG4gICAgICA7O1xuXG4gICAgICB0eXBlIHJlc3BvbnNlID0gKHN0cmluZyAqIGludCkgbGlzdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHJlc3BvbnNlXTtcbiAgICAgICAgWyVleHBlY3Qge3wgNGMxZTUwYzkzYjM4YzJhZDA1NTRjYmQ5MjliZWYzYWMgfH1dXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgcSA9IHFcblxuICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID1cbiAgICAgICAgTGlzdC5tYXAgfmY6KGZ1biB7IERlc2NyaXB0aW9uLm5hbWU7IHZlcnNpb24gfSAtPiBuYW1lLCB2ZXJzaW9uKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgUmVnaXN0ZXIgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBDdXJyZW50X3ZlcnNpb24gPSBWMVxuXG4gIGxldCBhZGQgaW1wbHMgPVxuICAgIGxldCBtZW51ID0gTGlzdC5tYXAgaW1wbHMgfmY6SW1wbGVtZW50YXRpb24uZGVzY3JpcHRpb24gaW5cbiAgICBsZXQgbWVudV9pbXBscyA9IGltcGxlbWVudF9tdWx0aSAoZnVuIF8gfnZlcnNpb246XyAoKSAtPiByZXR1cm4gbWVudSkgaW5cbiAgICBpbXBscyBAIG1lbnVfaW1wbHNcbiAgOztcblxuICB0eXBlIHQgPSBJbnQuU2V0LnQgU3RyaW5nLlRhYmxlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc3VwcG9ydGVkX3JwY3MgdCA9XG4gICAgbGV0IG9wZW4gTGlzdC5MZXRfc3ludGF4IGluXG4gICAgbGV0JWJpbmQgbmFtZSwgdmVyc2lvbnMgPSBIYXNodGJsLnRvX2FsaXN0IHQgaW5cbiAgICBsZXQlbWFwIHZlcnNpb24gPSBTZXQudG9fbGlzdCB2ZXJzaW9ucyBpblxuICAgIHsgRGVzY3JpcHRpb24ubmFtZTsgdmVyc2lvbiB9XG4gIDs7XG5cbiAgbGV0IHN1cHBvcnRlZF92ZXJzaW9ucyB0IH5ycGNfbmFtZSA9XG4gICAgT3B0aW9uLnZhbHVlIH5kZWZhdWx0OkludC5TZXQuZW1wdHkgKEhhc2h0YmwuZmluZCB0IHJwY19uYW1lKVxuICA7O1xuXG4gIGxldCBvZl9lbnRyaWVzIGVudHJpZXMgPVxuICAgIEhhc2h0YmwubWFwIH5mOkludC5TZXQub2ZfbGlzdCAoU3RyaW5nLlRhYmxlLm9mX2FsaXN0X211bHRpIGVudHJpZXMpXG4gIDs7XG5cbiAgbGV0IGF1eF9yZXF1ZXN0IGRpc3BhdGNoIGNvbm4gPVxuICAgIGxldCVtYXAgcmVzdWx0ID0gZGlzcGF0Y2ggQ3VycmVudF92ZXJzaW9uLnJwYyBjb25uICgpIGluXG4gICAgUmVzdWx0Lm1hcCByZXN1bHQgfmY6b2ZfZW50cmllc1xuICA7O1xuXG4gIGxldCByZXF1ZXN0IGNvbm4gPSBhdXhfcmVxdWVzdCBScGMuZGlzcGF0Y2ggY29ublxuICBsZXQgcmVxdWVzdCcgY29ubiA9IGF1eF9yZXF1ZXN0IFJwYy5kaXNwYXRjaCcgY29ublxuXG4gIGxldCBjcmVhdGUgZGVzY3JpcHRpb25zID1cbiAgICBMaXN0Lm1hcCBkZXNjcmlwdGlvbnMgfmY6KGZ1biB7IERlc2NyaXB0aW9uLm5hbWU7IHZlcnNpb24gfSAtPiBuYW1lLCB2ZXJzaW9uKVxuICAgIHw+IG9mX2VudHJpZXNcbiAgOztcblxuICBtb2R1bGUgV2l0aF9zaGFwZXMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTW9kZWwgPSBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gXCJfX1ZlcnNpb25lZF9ycGMuU2hhcGVfbWVudVwiXG5cbiAgICAgIHR5cGUgcXVlcnkgPSB1bml0XG4gICAgICB0eXBlIHJlc3BvbnNlID0gKERlc2NyaXB0aW9uLnQgKiBScGNfc2hhcGVzLnQpIGxpc3RcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgQ2FsbGVlX2NvbnZlcnRzLlJwYy5NYWtlIChNb2RlbClcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IHZlcnNpb24gPSAxXG5cbiAgICAgICAgdHlwZSBxdWVyeSA9IHVuaXQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogcXVlcnldO1xuICAgICAgICAgIFslZXhwZWN0IHt8IDg2YmE1ZGY3NDdlZWM4MzdmMGIzOTFkZDQ5ZjMzZjllIHx9XVxuICAgICAgICA7O1xuXG4gICAgICAgIHR5cGUgcmVzcG9uc2UgPSAoRGVzY3JpcHRpb24uU3RhYmxlLlYxLnQgKiBScGNfc2hhcGVzLlN0YWJsZS5WMS50KSBsaXN0XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHJlc3BvbnNlXTtcbiAgICAgICAgICBbJWV4cGVjdCB7fCBiNGJkYzAxYjdlYWQ5MDdlNmQwZDNmM2Q4OTcwMGYxYiB8fV1cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBGbi5pZFxuICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSBGbi5pZFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBSZWdpc3RlciAoVClcbiAgICBlbmRcblxuICAgIG1vZHVsZSBDdXJyZW50X3ZlcnNpb24gPSBWMVxuXG4gICAgdHlwZSB0ID0gKERlc2NyaXB0aW9uLnQgKiBScGNfc2hhcGVzLnQpIGxpc3RcblxuICAgIGxldCBhZGQgaW1wbHMgPVxuICAgICAgbGV0IHNoYXBlX21lbnUgPVxuICAgICAgICBMaXN0Lm1hcCBpbXBscyB+ZjooZnVuIGltcGwgLT5cbiAgICAgICAgICBJbXBsZW1lbnRhdGlvbi5kZXNjcmlwdGlvbiBpbXBsLCBJbXBsZW1lbnRhdGlvbi5zaGFwZXMgaW1wbClcbiAgICAgIGluXG4gICAgICBsZXQgc2hhcGVfbWVudV9pbXBscyA9IGltcGxlbWVudF9tdWx0aSAoZnVuIF8gfnZlcnNpb246XyAoKSAtPiByZXR1cm4gc2hhcGVfbWVudSkgaW5cbiAgICAgIGFkZCBpbXBscyBAIHNoYXBlX21lbnVfaW1wbHNcbiAgICA7O1xuXG4gICAgbGV0IHJlcXVlc3QgY29ubiA9IFJwYy5kaXNwYXRjaCBDdXJyZW50X3ZlcnNpb24ucnBjIGNvbm4gKClcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbm5lY3Rpb25fd2l0aF9tZW51ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBjb25uZWN0aW9uIDogQ29ubmVjdGlvbi50XG4gICAgOyBtZW51IDogTWVudS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgbGV0IGNyZWF0ZSBjb25uZWN0aW9uID1cbiAgICBsZXQgb3BlbiBEZWZlcnJlZC5Pcl9lcnJvci5MZXRfc3ludGF4IGluXG4gICAgbGV0JW1hcCBtZW51ID0gTWVudS5yZXF1ZXN0IGNvbm5lY3Rpb24gaW5cbiAgICB7IGNvbm5lY3Rpb247IG1lbnUgfVxuICA7O1xuXG4gIGxldCBjcmVhdGVfZGlyZWN0bHkgY29ubmVjdGlvbiBtZW51ID0geyBjb25uZWN0aW9uOyBtZW51IH1cbmVuZFxuXG5tb2R1bGUgQ2FsbGVyX2NvbnZlcnRzID0gc3RydWN0XG4gIGxldCBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvbiB+cnBjX25hbWUgfmNhbGxlcl92ZXJzaW9ucyB+Y2FsbGVlX3ZlcnNpb25zIH5jYWxsZWVfbWVudSA9XG4gICAgbWF0Y2ggU2V0Lm1heF9lbHQgKFNldC5pbnRlciBjYWxsZWVfdmVyc2lvbnMgY2FsbGVyX3ZlcnNpb25zKSB3aXRoXG4gICAgfCBTb21lIHZlcnNpb24gLT4gT2sgdmVyc2lvblxuICAgIHwgTm9uZSAtPlxuICAgICAgZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImNhbGxlciBhbmQgY2FsbGVlIHNoYXJlIG5vIGNvbW1vbiB2ZXJzaW9ucyBmb3IgcnBjXCJcbiAgICAgICAgICAgIChycGNfbmFtZSA6IHN0cmluZylcbiAgICAgICAgICAgIChjYWxsZXJfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAoY2FsbGVlX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKGNhbGxlZV9tZW51IDogTWVudS50KV1cbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJoaWdoZXN0IHZlcnNpb24gbnVtYmVyIGlzIHRha2VuIGluIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXCIgPVxuICAgIGxldCBycGNfbmFtZSA9IFwidGhlLXJwY1wiIGluXG4gICAgbGV0IG1lbnUgPSBNZW51Lm9mX2VudHJpZXMgWyBycGNfbmFtZSwgMiBdIGluXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvblxuICAgICAgICB+cnBjX25hbWVcbiAgICAgICAgfmNhbGxlcl92ZXJzaW9uczooSW50LlNldC5vZl9saXN0IFsgMTsgMjsgMyBdKVxuICAgICAgICB+Y2FsbGVlX3ZlcnNpb25zOihJbnQuU2V0Lm9mX2xpc3QgWyAyIF0pXG4gICAgICAgIH5jYWxsZWVfbWVudTptZW51XG4gICAgaW5cbiAgICBwcmludF9zIFslc2V4cCAocmVzdWx0IDogaW50IE9yX2Vycm9yLnQpXTtcbiAgICBbJWV4cGVjdCB7fCAoT2sgMikgfH1dXG4gIDs7XG5cbiAgbGV0JWV4cGVjdF90ZXN0IFwiZXJyb3IgZnJvbSBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvbiBsb29rcyByZWFzb25hYmxlXCIgPVxuICAgIGxldCB0aGVfcnBjID0gXCJ0aGUtcnBjXCIgaW5cbiAgICBsZXQgbm90X3RoZV9ycGMgPSBcIm90aGVyLXJwY1wiIGluXG4gICAgbGV0IG1lbnUgPSBNZW51Lm9mX2VudHJpZXMgWyBub3RfdGhlX3JwYywgMTsgbm90X3RoZV9ycGMsIDIgXSBpblxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cbiAgICAgICAgfnJwY19uYW1lOnRoZV9ycGNcbiAgICAgICAgfmNhbGxlcl92ZXJzaW9uczooSW50LlNldC5vZl9saXN0IFsgMTsgMjsgMyBdKVxuICAgICAgICB+Y2FsbGVlX3ZlcnNpb25zOihNZW51LnN1cHBvcnRlZF92ZXJzaW9ucyBtZW51IH5ycGNfbmFtZTp0aGVfcnBjKVxuICAgICAgICB+Y2FsbGVlX21lbnU6bWVudVxuICAgIGluXG4gICAgcHJpbnRfcyBbJXNleHAgKHJlc3VsdCA6IGludCBPcl9lcnJvci50KV07XG4gICAgWyVleHBlY3RcbiAgICAgIHt8XG4gICAgICAoRXJyb3JcbiAgICAgICAoXCJjYWxsZXIgYW5kIGNhbGxlZSBzaGFyZSBubyBjb21tb24gdmVyc2lvbnMgZm9yIHJwY1wiIChycGNfbmFtZSB0aGUtcnBjKVxuICAgICAgICAoY2FsbGVyX3ZlcnNpb25zICgxIDIgMykpIChjYWxsZWVfdmVyc2lvbnMgKCkpXG4gICAgICAgIChjYWxsZWVfbWVudSAoKG90aGVyLXJwYyAoMSAyKSkpKSkpfH1dXG4gIDs7XG5cbiAgbW9kdWxlIERpc3BhdGNoID0gc3RydWN0XG4gICAgbW9kdWxlIE1ha2UgKE0gOiBNb25hZCkgPSBzdHJ1Y3RcbiAgICAgIG9wZW4gTVxuXG4gICAgICBsZXQgd2l0aF9zcGVjaWZpY192ZXJzaW9uIH52ZXJzaW9uIH5jb25uZWN0aW9uIH5uYW1lIH5xdWVyeSB+ZGlzcGF0Y2hlciB+cmVnaXN0cnkgPVxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByZXR1cm4gKEVycm9yICh1bmtub3duX3ZlcnNpb24gKG5hbWUsIHZlcnNpb24pKSlcbiAgICAgICAgfCBTb21lIChkaXNwYXRjaCwgX3JwYykgLT4gZGlzcGF0Y2hlciBkaXNwYXRjaCBjb25uZWN0aW9uIHF1ZXJ5XG4gICAgICA7O1xuXG4gICAgICBsZXQgd2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICAgIHsgQ29ubmVjdGlvbl93aXRoX21lbnUuY29ubmVjdGlvbjsgbWVudSB9XG4gICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgICB+ZGlzcGF0Y2hlclxuICAgICAgICA9XG4gICAgICAgIGxldCBjYWxsZWVfdmVyc2lvbnMgPSBNZW51LnN1cHBvcnRlZF92ZXJzaW9ucyBtZW51IH5ycGNfbmFtZTpuYW1lIGluXG4gICAgICAgIGxldCBjYWxsZXJfdmVyc2lvbnMgPSB2ZXJzaW9ucyAoKSBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXG4gICAgICAgICAgICB+cnBjX25hbWU6bmFtZVxuICAgICAgICAgICAgfmNhbGxlcl92ZXJzaW9uc1xuICAgICAgICAgICAgfmNhbGxlZV92ZXJzaW9uc1xuICAgICAgICAgICAgfmNhbGxlZV9tZW51Om1lbnVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IEVycm9yIGUgLT4gcmV0dXJuIChFcnJvciBlKVxuICAgICAgICB8IE9rIHZlcnNpb24gLT5cbiAgICAgICAgICB3aXRoX3NwZWNpZmljX3ZlcnNpb24gfnZlcnNpb24gfmNvbm5lY3Rpb24gfm5hbWUgfnF1ZXJ5IH5yZWdpc3RyeSB+ZGlzcGF0Y2hlclxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBBc3luYyA9IE1ha2UgKERlZmVycmVkKVxuICAgIG1vZHVsZSBEaXJlY3QgPSBNYWtlIChNb25hZC5JZGVudClcbiAgZW5kXG5cbiAgbW9kdWxlIFJwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gcmVzcG9uc2UgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgcXVlcnkgPVxuICAgICAgICBEaXNwYXRjaC5Bc3luYy53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgcXVlcnlcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOkZuLmlkXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXInIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIHF1ZXJ5X29mX21vZGVsIDogTW9kZWwucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2UgOiBNb2RlbC5xdWVyeSAtPiByZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZVxuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGRpc3BhdGNoIGNvbm4gbXEgPVxuICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLnF1ZXJ5X29mX21vZGVsIG1xKSB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAoRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICB8IE9rIHEgLT5cbiAgICAgICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBScGMuZGlzcGF0Y2ggcnBjIGNvbm4gcSBpblxuICAgICAgICAgICAgICBSZXN1bHQuYmluZCByZXN1bHQgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1vZGVsX29mX3Jlc3BvbnNlIG1xIHIpIHdpdGhcbiAgICAgICAgICAgICAgICB8IE9rIHIgLT4gT2sgclxuICAgICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55LlJwYyBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIHF1ZXJ5X29mX21vZGVsIDogTW9kZWwucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2UgOiByZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgICAgUmVnaXN0ZXInIChzdHJ1Y3RcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlIF8gciA9IG1vZGVsX29mX3Jlc3BvbnNlIHJcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgIC0+IChyZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBQaXBlX3JwYy5NZXRhZGF0YS50LCBlcnJvcikgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgZGlzcGF0Y2hfaXRlcl9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgIC0+IGY6KHJlc3BvbnNlIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcnBjLlBpcGVfcmVzcG9uc2UudClcbiAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIGVycm9yKSBSZXN1bHQudCBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIGFib3J0X211bHRpIDogQ29ubmVjdGlvbl93aXRoX21lbnUudCAtPiBQaXBlX3JwYy5JZC50IC0+IHVuaXQgT3JfZXJyb3IudFxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBkaXNwYXRjaGVyID1cbiAgICAgICAgeyBhYm9ydCA6IENvbm5lY3Rpb24udCAtPiBQaXBlX3JwYy5JZC50IC0+IHVuaXRcbiAgICAgICAgOyBkaXNwYXRjaCA6XG4gICAgICAgICAgICBDb25uZWN0aW9uLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgICAtPiAoIE1vZGVsLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgICAgICwgTW9kZWwuZXJyb3IgKVxuICAgICAgICAgICAgICAgICBSZXN1bHQudFxuICAgICAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgICAgIERlZmVycmVkLnRcbiAgICAgICAgOyBkaXNwYXRjaF9pdGVyIDpcbiAgICAgICAgICAgIENvbm5lY3Rpb24udFxuICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgIC0+IGY6KE1vZGVsLnJlc3BvbnNlIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcnBjLlBpcGVfcmVzcG9uc2UudClcbiAgICAgICAgICAgIC0+IChQaXBlX3JwYy5JZC50LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICAgIH1cblxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgOiAoZGlzcGF0Y2hlciAqIEFueS50KSBJbnQuVGFibGUudCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfaXRlcl9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSB+ZiA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6KGZ1biB7IGRpc3BhdGNoX2l0ZXI7IF8gfSBjb25uIHF1ZXJ5IC0+IGRpc3BhdGNoX2l0ZXIgY29ubiBxdWVyeSB+ZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6KGZ1biB7IGRpc3BhdGNoOyBfIH0gY29ubiBxdWVyeSAtPiBkaXNwYXRjaCBjb25uIHF1ZXJ5KVxuICAgICAgOztcblxuICAgICAgbGV0IGFib3J0X211bHRpIGNvbm5fd2l0aF9tZW51IGlkID1cbiAgICAgICAgRGlzcGF0Y2guRGlyZWN0LndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBpZFxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6KGZ1biB7IGFib3J0OyBfIH0gY29ubiBpZCAtPlxuICAgICAgICAgICAgYWJvcnQgY29ubiBpZDtcbiAgICAgICAgICAgIE9rICgpKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5lcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kgOiBWZXJzaW9uX3NoYXJlZCkgKENvbnZlcnQgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X2VsdCA6IChWZXJzaW9uX2kucmVzcG9uc2UgLT4gTW9kZWwucmVzcG9uc2UpIE9yX2Vycm9yLnRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfcGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICBWZXJzaW9uX2kucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBNb2RlbC5yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuICAgICAgICBvcGVuIENvbnZlcnRcblxuICAgICAgICBsZXQgcnBjID1cbiAgICAgICAgICBQaXBlX3JwYy5jcmVhdGVcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICAgICAgfmJpbl9yZXNwb25zZVxuICAgICAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFjazooT3B0aW9uLnNvbWVfaWYgY2xpZW50X3B1c2hlc19iYWNrICgpKVxuICAgICAgICAgICAgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgd3JhcHBlZF9xdWVyeV9vZl9tb2RlbCBxID1cbiAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kucXVlcnlfb2ZfbW9kZWwgcSB3aXRoXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICByZXR1cm4gKEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFF1ZXJ5LCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgIHwgcSAtPiByZXR1cm4gKE9rIHEpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNvbnZlcnRfcmVzdWx0IHJlc3VsdCB+Y29udmVydF9vayA9XG4gICAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IEVycm9yIF8gYXMgZSAtPiBlXG4gICAgICAgICAgfCBPayAoRXJyb3IgZSkgLT5cbiAgICAgICAgICAgIChtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfZXJyb3IgZSB3aXRoXG4gICAgICAgICAgICAgfCBlJyAtPiBPayAoRXJyb3IgZScpXG4gICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICB8IE9rIChPayBvaykgLT4gT2sgKE9rIChjb252ZXJ0X29rIG9rKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBxID1cbiAgICAgICAgICB3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIHFcbiAgICAgICAgICA+Pj0/IGZ1biBxIC0+XG4gICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBQaXBlX3JwYy5kaXNwYXRjaCBycGMgY29ubiBxIGluXG4gICAgICAgICAgY29udmVydF9yZXN1bHQgcmVzdWx0IH5jb252ZXJ0X29rOihmdW4gKHBpcGUsIGlkKSAtPiBjb252ZXJ0X3BpcGUgcGlwZSwgaWQpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGRpc3BhdGNoX2l0ZXIgY29ubiBxIH5mID1cbiAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPcl9lcnJvci5va19leG4gY29udmVydF9lbHQgaW5cbiAgICAgICAgICB3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIHFcbiAgICAgICAgICA+Pj0/IGZ1biBxIC0+XG4gICAgICAgICAgbGV0IGNvbnZlcnRfbWVzc2FnZSAobSA6IF8gUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQpID1cbiAgICAgICAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICAgICAgfCBDbG9zZWQgXyBhcyBjbG9zZWQgLT4gY2xvc2VkXG4gICAgICAgICAgICB8IFVwZGF0ZSB1IC0+IFVwZGF0ZSAoY29udmVydF9lbHQgdSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID1cbiAgICAgICAgICAgIFBpcGVfcnBjLmRpc3BhdGNoX2l0ZXIgcnBjIGNvbm4gcSB+ZjooZnVuIG1lc3NhZ2UgLT5cbiAgICAgICAgICAgICAgZiAoY29udmVydF9tZXNzYWdlIG1lc3NhZ2UpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgY29udmVydF9yZXN1bHQgcmVzdWx0IH5jb252ZXJ0X29rOkZuLmlkXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGFib3J0IGNvbm4gaWQgPSBQaXBlX3JwYy5hYm9ydCBycGMgY29ubiBpZFxuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgSGFzaHRibC5zZXRcbiAgICAgICAgICAgICAgcmVnaXN0cnlcbiAgICAgICAgICAgICAgfmtleTp2ZXJzaW9uXG4gICAgICAgICAgICAgIH5kYXRhOih7IGFib3J0OyBkaXNwYXRjaDsgZGlzcGF0Y2hfaXRlciB9LCBBbnkuUGlwZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgICA6ICByZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiBNb2RlbC5yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJDYW5ub3QgdXNlIERpcmVjdCB3aXRoIFJlZ2lzdGVyX3Jhd1wiXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlID0gVmVyc2lvbl9pLm1vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT2sgVmVyc2lvbl9pLm1vZGVsX29mX3Jlc3BvbnNlXG5cbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgcnMgPVxuICAgICAgICAgICAgICBQaXBlLm1hcCBycyB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2UgciB3aXRoXG4gICAgICAgICAgICAgICAgfCByIC0+IE9rIHJcbiAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIFZlcnNpb25faS52ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSBzdGF0ZVxuICAgICAgdHlwZSB1cGRhdGVcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gKCBzdGF0ZSAqIHVwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBTdGF0ZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAsIGVycm9yIClcbiAgICAgICAgICAgICBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSBzdGF0ZVxuICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICB0eXBlIGVycm9yXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6Rm4uaWRcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHN0YXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSB1cGRhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgbW9kZWxfb2Zfc3RhdGUgOiBzdGF0ZSAtPiBNb2RlbC5zdGF0ZVxuICAgICAgICB2YWwgbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5lcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIDogIHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiBNb2RlbC51cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9XG4gICAgICAgICAgU3RhdGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3N0YXRlXG4gICAgICAgICAgICB+YmluX3VwZGF0ZVxuICAgICAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFjazooT3B0aW9uLnNvbWVfaWYgY2xpZW50X3B1c2hlc19iYWNrICgpKVxuICAgICAgICAgICAgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLnF1ZXJ5X29mX21vZGVsIHEgd2l0aFxuICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIChFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIHwgcSAtPlxuICAgICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFN0YXRlX3JwYy5kaXNwYXRjaCBycGMgY29ubiBxIGluXG4gICAgICAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT4gRXJyb3IgZXhuXG4gICAgICAgICAgICAgICB8IE9rIChFcnJvciBlKSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX2Vycm9yIGUgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBlJyAtPiBPayAoRXJyb3IgZScpXG4gICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICAgICB8IE9rIChPayAoc3RhdGUsIHBpcGUsIGlkKSkgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9zdGF0ZSBzdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgU3RhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgICAgIHwgc3RhdGUgLT4gT2sgKE9rIChzdGF0ZSwgVmVyc2lvbl9pLm1vZGVsX29mX3VwZGF0ZSBwaXBlLCBpZCkpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55LlN0YXRlIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl91cGRhdGUgOiB1cGRhdGUgLT4gTW9kZWwudXBkYXRlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgcnMgPVxuICAgICAgICAgICAgICBQaXBlLm1hcCBycyB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfdXBkYXRlIHIgd2l0aFxuICAgICAgICAgICAgICAgIHwgciAtPiBPayByXG4gICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBVcGRhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT25lX3dheSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgbXNnXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aSA6IENvbm5lY3Rpb25fd2l0aF9tZW51LnQgLT4gbXNnIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBtc2dcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IG1zZyA9XG4gICAgICAgIERpc3BhdGNoLkRpcmVjdC53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgbXNnXG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjpGbi5pZFxuICAgICAgOztcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIG1zZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBtc2dfb2ZfbW9kZWwgOiBNb2RlbC5tc2cgLT4gbXNnXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IE9uZV93YXkuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fbXNnXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBxID1cbiAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tc2dfb2ZfbW9kZWwgcSkgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgTXNnLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICB8IE9rIHEgLT4gT25lX3dheS5kaXNwYXRjaCBycGMgY29ubiBxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooZGlzcGF0Y2gsIEFueS5PbmVfd2F5IHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQm90aF9jb252ZXJ0ID0gc3RydWN0XG4gIG1vZHVsZSBQbGFpbiA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlZV9xdWVyeVxuICAgICAgdHlwZSBjYWxsZXJfcmVzcG9uc2VcbiAgICAgIHR5cGUgY2FsbGVlX3Jlc3BvbnNlXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IGNhbGxlcl9xdWVyeVxuICAgICAgICAtPiBjYWxsZXJfcmVzcG9uc2UgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlIC0+IHZlcnNpb246aW50IC0+IGNhbGxlZV9xdWVyeSAtPiBjYWxsZWVfcmVzcG9uc2UgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLlJwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5ScGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbiA6IHNpZ1xuICAgICAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCBxdWVyeV9vZl9jYWxsZXJfbW9kZWwgOiBDYWxsZXIucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gQ2FsbGVlLnF1ZXJ5XG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbCA6IENhbGxlZS5yZXNwb25zZSAtPiByZXNwb25zZVxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2UgOiByZXNwb25zZSAtPiBDYWxsZXIucmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvblxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9yZXNwb25zZSA9IGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQldGVzdCBfID0gSW50LlNldC5lcXVhbCAoQ2FsbGVyLnZlcnNpb25zICgpKSAoQ2FsbGVlLnZlcnNpb25zICgpKVxuICAgICAgZW5kXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSA9IENhbGxlci5kaXNwYXRjaF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfbXVsdGlcblxuICAgICAgKCogTm90ZTogQ2FsbGVyLnZlcnNpb25zIGlzIHRoZSBzYW1lIGFzIENhbGxlZS52ZXJzaW9ucywgc28gaXQgZG9lc24ndCBtYXR0ZXIgd2hpY2hcbiAgICAgICAgIG9uZSB3ZSBjYWxsIGhlcmUuIFNhbWUgZm9yIFtycGNzXS4gKilcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IENhbGxlci52ZXJzaW9ucyAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBDYWxsZXIucnBjcyAoKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNhbGxlcl9xdWVyeVxuICAgICAgdHlwZSBjYWxsZWVfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVyX3Jlc3BvbnNlXG4gICAgICB0eXBlIGNhbGxlZV9yZXNwb25zZVxuICAgICAgdHlwZSBjYWxsZXJfZXJyb3JcbiAgICAgIHR5cGUgY2FsbGVlX2Vycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IGNhbGxlcl9xdWVyeVxuICAgICAgICAtPiAoIGNhbGxlcl9yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBQaXBlX3JwYy5NZXRhZGF0YS50XG4gICAgICAgICAgICwgY2FsbGVyX2Vycm9yIClcbiAgICAgICAgICAgICBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBkaXNwYXRjaF9pdGVyX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+IGY6KGNhbGxlcl9yZXNwb25zZSBQaXBlX3JwYy5QaXBlX21lc3NhZ2UudCAtPiBQaXBlX3JwYy5QaXBlX3Jlc3BvbnNlLnQpXG4gICAgICAgIC0+IChQaXBlX3JwYy5JZC50LCBjYWxsZXJfZXJyb3IpIFJlc3VsdC50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgYWJvcnRfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gY2FsbGVlX3F1ZXJ5XG4gICAgICAgICAgICAtPiAoY2FsbGVlX3Jlc3BvbnNlIFBpcGUuUmVhZGVyLnQsIGNhbGxlZV9lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgaW1wbGVtZW50X2RpcmVjdF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBjYWxsZWVfcXVlcnlcbiAgICAgICAgICAgIC0+IGNhbGxlZV9yZXNwb25zZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAgLT4gKHVuaXQsIGNhbGxlZV9lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgICB0eXBlIGVycm9yXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBDYWxsZWUgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuUGlwZV9ycGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlclxuICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBDYWxsZWUgPSBDYWxsZWVfY29udmVydHMuUGlwZV9ycGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgcXVlcnlfb2ZfY2FsbGVyX21vZGVsIDogTW9kZWwuQ2FsbGVyLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBjYWxsZWVfbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5DYWxsZWUucXVlcnlcbiAgICAgICAgdmFsIGVycm9yX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS5lcnJvciAtPiBlcnJvclxuICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuQ2FsbGVyLmVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuQ2FsbGVlLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcblxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIDogIHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLkNhbGxlci5yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlID0gY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IE1vZGVsLkNhbGxlci5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCByZXNwb25zZV9vZl9tb2RlbCA9IHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IGVycm9yX29mX21vZGVsID0gZXJyb3Jfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlID0gY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgZGlzcGF0Y2hfaXRlcl9tdWx0aSA9IENhbGxlci5kaXNwYXRjaF9pdGVyX211bHRpXG4gICAgICBsZXQgYWJvcnRfbXVsdGkgPSBDYWxsZXIuYWJvcnRfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X2RpcmVjdF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfZGlyZWN0X211bHRpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlZV9xdWVyeVxuICAgICAgdHlwZSBjYWxsZXJfc3RhdGVcbiAgICAgIHR5cGUgY2FsbGVlX3N0YXRlXG4gICAgICB0eXBlIGNhbGxlcl91cGRhdGVcbiAgICAgIHR5cGUgY2FsbGVlX3VwZGF0ZVxuICAgICAgdHlwZSBjYWxsZXJfZXJyb3JcbiAgICAgIHR5cGUgY2FsbGVlX2Vycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IGNhbGxlcl9xdWVyeVxuICAgICAgICAtPiAoIGNhbGxlcl9zdGF0ZSAqIGNhbGxlcl91cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogU3RhdGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgLCBjYWxsZXJfZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBjYWxsZWVfcXVlcnlcbiAgICAgICAgICAgIC0+IChjYWxsZWVfc3RhdGUgKiBjYWxsZWVfdXBkYXRlIFBpcGUuUmVhZGVyLnQsIGNhbGxlZV9lcnJvcikgUmVzdWx0LnRcbiAgICAgICAgICAgICAgICAgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgICAgdHlwZSB1cGRhdGVcbiAgICAgICAgICB0eXBlIGVycm9yXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLlN0YXRlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5TdGF0ZV9ycGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgc3RhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHVwZGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCBxdWVyeV9vZl9jYWxsZXJfbW9kZWwgOiBNb2RlbC5DYWxsZXIucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLkNhbGxlZS5xdWVyeVxuICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3N0YXRlIDogc3RhdGUgLT4gTW9kZWwuQ2FsbGVyLnN0YXRlXG4gICAgICAgIHZhbCBzdGF0ZV9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUuc3RhdGUgLT4gc3RhdGVcbiAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLkNhbGxlci5lcnJvclxuICAgICAgICB2YWwgZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIDogIHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiBNb2RlbC5DYWxsZXIudXBkYXRlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIDogIE1vZGVsLkNhbGxlZS5zdGF0ZVxuICAgICAgICAgICAgLT4gTW9kZWwuQ2FsbGVlLnVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiB1cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgc3RhdGVfb2ZfbW9kZWwgPSBzdGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCB1cGRhdGVfb2ZfbW9kZWwgPSB1cGRhdGVfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3N0YXRlID0gY2FsbGVyX21vZGVsX29mX3N0YXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfdXBkYXRlID0gY2FsbGVyX21vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX2Vycm9yID0gY2FsbGVyX21vZGVsX29mX2Vycm9yXG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUudXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIDogdXBkYXRlIC0+IE1vZGVsLkNhbGxlci51cGRhdGVcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgc3RhdGVfb2ZfbW9kZWwgPSBzdGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCB1cGRhdGVfb2ZfbW9kZWwgPSB1cGRhdGVfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2Zfc3RhdGUgPSBjYWxsZXJfbW9kZWxfb2Zfc3RhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgPSBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfbXNnXG4gICAgICB0eXBlIGNhbGxlZV9tc2dcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpIDogQ29ubmVjdGlvbl93aXRoX21lbnUudCAtPiBjYWxsZXJfbXNnIC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBjYWxsZWVfbXNnIC0+IHVuaXQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgbW9kdWxlIENhbGxlciA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBDYWxsZWUgOiBzaWdcbiAgICAgICAgICB0eXBlIG1zZ1xuICAgICAgICBlbmRcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgbW9kdWxlIENhbGxlciA9IENhbGxlcl9jb252ZXJ0cy5PbmVfd2F5Lk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLk9uZV93YXkuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbiA6IHNpZ1xuICAgICAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG5cbiAgICAgICAgICB0eXBlIG1zZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgbXNnX29mX2NhbGxlcl9tb2RlbCA6IENhbGxlci5tc2cgLT4gbXNnXG4gICAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9tc2cgOiBtc2cgLT4gQ2FsbGVlLm1zZ1xuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX21zZyA9IGNhbGxlZV9tb2RlbF9vZl9tc2dcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBtc2dfb2ZfbW9kZWwgPSBtc2dfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuXG4gICAgICAoKiBOb3RlOiBDYWxsZXIudmVyc2lvbnMgaXMgdGhlIHNhbWUgYXMgQ2FsbGVlLnZlcnNpb25zLCBzbyBpdCBkb2Vzbid0IG1hdHRlciB3aGljaFxuICAgICAgICAgb25lIHdlIGNhbGwgaGVyZS4gU2FtZSBmb3IgW3JwY3NdLiAqKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBUcmFuc3BvcnRcbiAgbW9kdWxlIEhlYWRlciA9IEhlYWRlclxuICBtb2R1bGUgSGFuZGxlcl9yZXN1bHQgPSBIYW5kbGVyX3Jlc3VsdFxuICBtb2R1bGUgU2VuZF9yZXN1bHQgPSBTZW5kX3Jlc3VsdFxuICBtb2R1bGUgUmVhZGVyID0gUmVhZGVyXG4gIG1vZHVsZSBXcml0ZXIgPSBXcml0ZXJcbmVuZFxuXG5sZXQgcmVjIHBpcGVfcmVhZCB0IGYgPVxuICBtYXRjaCViaW5kIFBpcGUudmFsdWVzX2F2YWlsYWJsZSB0IHdpdGhcbiAgfCBgRW9mIC0+IGYgYEVvZlxuICB8IGBPayAtPlxuICAgIChtYXRjaCBQaXBlLnJlYWRfbm93JyB0IHdpdGhcbiAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gcGlwZV9yZWFkIHQgZlxuICAgICB8IChgRW9mIHwgYE9rIF8pIGFzIHJlcyAtPiBmIHJlcylcbjs7XG5cbm1vZHVsZSB0eXBlIERBVEEgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBhZGRfdG9fYmlnYnVmZmVyIDogQmlnYnVmZmVyLnQgLT4gdCAtPiB1bml0XG4gIHZhbCB0b19iaWdzdHJpbmcgOiB0IC0+IEJpZ3N0cmluZy50XG4gIHZhbCBvZl9iaWdzdHJpbmcgOiBCaWdzdHJpbmcudCAtPiB0XG5lbmRcblxubW9kdWxlIFBpcGVfYW5kX2J1ZmZlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcGlwZSA6ICdhIFBpcGUuUmVhZGVyLnRcbiAgICA7IGJ1ZmZlciA6IEJpZ2J1ZmZlci50XG4gICAgOyBtdXRhYmxlIGJ5dGVzX3JlYWQgOiBJbnQ2My50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgcGlwZSA9XG4gICAgeyBwaXBlOyBidWZmZXIgPSBCaWdidWZmZXIuY3JlYXRlIEhlYWRlci5sZW5ndGg7IGJ5dGVzX3JlYWQgPSBJbnQ2My56ZXJvIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgUGlwZV9yZWFkZXIgKERhdGEgOiBEQVRBKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBEYXRhLnQgUGlwZV9hbmRfYnVmZmVyLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY2xvc2UgKHQgOiB0KSA9XG4gICAgUGlwZS5jbG9zZV9yZWFkIHQucGlwZTtcbiAgICBEZWZlcnJlZC51bml0XG4gIDs7XG5cbiAgbGV0IGlzX2Nsb3NlZCAodCA6IHQpID0gUGlwZS5pc19jbG9zZWQgdC5waXBlXG4gIGxldCBieXRlc19yZWFkICh0IDogdCkgPSB0LmJ5dGVzX3JlYWRcblxuICBsZXQgcmVhZF9mb3JldmVyICh0IDogdCkgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCA6IChfLCBfKSBEZWZlcnJlZC5SZXN1bHQudCA9XG4gICAgbGV0IGJ1ZmZlciA9IHQuYnVmZmVyIGluXG4gICAgKCogRGVxdWV1ZSB1bnRpbCBlbm91Z2ggZGF0YSAoW25lZWRdKSBpcyBhdmFpbGFibGUgYW5kIHRyeSByZWFkIG1lc3NhZ2VzICopXG4gICAgbGV0IHJlYyBwcm9jZXNzX3F1ZXVlIH5uZWVkIHF1ZXVlID1cbiAgICAgIG1hdGNoIFF1ZXVlLmRlcXVldWUgcXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIFF1ZXVlIGlzIGVtcHR5IC0gd2UgbmVlZCB0byB3YWl0IGZvciBtb3JlIGRhdGEgKilcbiAgICAgICAgcmV0dXJuIChTZWNvbmQgbmVlZClcbiAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgIGxldCBidWZmX2xlbiA9IEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyIGluXG4gICAgICAgIGxldCBkYXRhX2xlbiA9IERhdGEubGVuZ3RoIGRhdGEgaW5cbiAgICAgICAgaWYgYnVmZl9sZW4gPSAwICYmIGRhdGFfbGVuID49IG5lZWRcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIFdlIGhhdmUgZW5vdWdoIGRhdGEgYW5kIGJ1ZmZlciBpcyBlbXB0eS5cbiAgICAgICAgICAgICBUaGlzIGlzIHRoZSBjb21tb24gY2FzZSB3aGVyZSBldmVyeSBiaW5fcHJvdCBtZXNzYWdlIGlzIHNlbnQgaW4gaXRzIG93blxuICAgICAgICAgICAgIHdlYnNvY2tldCBmcmFtZSAqKVxuICAgICAgICAgIHByb2Nlc3NfZGF0YSB+cG9zOjAgfmRhdGE6KERhdGEudG9fYmlnc3RyaW5nIGRhdGEpIH5sZW5ndGg6ZGF0YV9sZW4gcXVldWVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogU2xvdyBwYXRoLiBXZSBoYXZlIHRvIGFjY3VtdWxhdGUgW0JpZ3N0cmluZy50XXMgKilcbiAgICAgICAgICBEYXRhLmFkZF90b19iaWdidWZmZXIgYnVmZmVyIGRhdGE7XG4gICAgICAgICAgaWYgQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgPj0gbmVlZFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVGhlcmUgaXMgZW5vdWdoIGRhdGEgaW4gdGhlIGJ1ZmZlciAqKVxuICAgICAgICAgICAgbGV0IGRhdGEgPSBCaWdidWZmZXIudm9sYXRpbGVfY29udGVudHMgYnVmZmVyIGluXG4gICAgICAgICAgICBsZXQgbGVuZ3RoID0gQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgaW5cbiAgICAgICAgICAgIHByb2Nlc3NfZGF0YSB+cG9zOjAgfmRhdGEgfmxlbmd0aCBxdWV1ZSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKiBXZSBuZWVkIG1vcmUgZGF0YSAtIGtlZXAgcHJvY2Vzc2luZyB0aGUgcXVldWUgKilcbiAgICAgICAgICAgIHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUpXG4gICAgKCogUmVhZCBhcyBtYW55IG1lc3NhZ2VzIGFzIHBvc3NpYmxlIGZyb20gdGhlIGN1cnJlbnQgZGF0YSAqKVxuICAgIGFuZCBwcm9jZXNzX2RhdGEgfnBvcyB+ZGF0YSB+bGVuZ3RoIHF1ZXVlID1cbiAgICAgIGlmIGxlbmd0aCA+PSBIZWFkZXIubGVuZ3RoXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHBheWxvYWRfbGVuID0gSGVhZGVyLnVuc2FmZV9nZXRfcGF5bG9hZF9sZW5ndGggZGF0YSB+cG9zIGluXG4gICAgICAgIGxldCB0b3RhbF9sZW4gPSBIZWFkZXIubGVuZ3RoICsgcGF5bG9hZF9sZW4gaW5cbiAgICAgICAgaWYgbGVuZ3RoID49IHRvdGFsX2xlblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICB0LmJ5dGVzX3JlYWQgPC0gSW50NjMuKHQuYnl0ZXNfcmVhZCArIG9mX2ludCBwYXlsb2FkX2xlbik7XG4gICAgICAgICAgbWF0Y2ggb25fbWVzc2FnZSBkYXRhIH5wb3M6KHBvcyArIEhlYWRlci5sZW5ndGgpIH5sZW46cGF5bG9hZF9sZW4gd2l0aFxuICAgICAgICAgIHwgSGFuZGxlcl9yZXN1bHQuU3RvcCB4IC0+XG4gICAgICAgICAgICBsZXQgcG9zID0gcG9zICsgdG90YWxfbGVuIGluXG4gICAgICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoIC0gdG90YWxfbGVuIGluXG4gICAgICAgICAgICAoKiBNYWtlIHN1cmUgdGhhdCBhbGwgZGF0YSB3ZSd2ZSByZWFkIChhbmQgbm90IFwiY29uc3VtZWRcIikgZnJvbSB0aGUgcGlwZVxuICAgICAgICAgICAgICAgaXMga2VwdCBpbiB0aGUgYnVmZmVyLlxuICAgICAgICAgICAgICAgVGhhdCBpcyB0aGUgcmVtYWluaW5nIGJpdHMgaW4gW2RhdGFdIGFuZCBhbGwgY29udGVudHMgaW4gW3F1ZXVlXS5cbiAgICAgICAgICAgICopXG4gICAgICAgICAgICBzZXRfYnVmZmVyIH5wb3Mgfmxlbmd0aCB+ZGF0YTtcbiAgICAgICAgICAgIFF1ZXVlLml0ZXIgcXVldWUgfmY6KGZ1biBkYXRhIC0+IERhdGEuYWRkX3RvX2JpZ2J1ZmZlciBidWZmZXIgZGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gKEZpcnN0IHgpXG4gICAgICAgICAgfCAoQ29udGludWUgfCBXYWl0IF8pIGFzIGNvbnRpbnVlX29yX3dhaXQgLT5cbiAgICAgICAgICAgIGxldCViaW5kICgpID1cbiAgICAgICAgICAgICAgbWF0Y2ggY29udGludWVfb3Jfd2FpdCB3aXRoXG4gICAgICAgICAgICAgIHwgSGFuZGxlcl9yZXN1bHQuU3RvcCBfIC0+XG4gICAgICAgICAgICAgICAgKCogSW1wb3NzaWJsZTogdGhpcyBicmFuY2ggZG9lcyBub3QgY29udGFpbiBbU3RvcCBfXSAqKVxuICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICB8IENvbnRpbnVlIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgICAgfCBXYWl0IGQgLT4gZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSBwb3MgKyB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGggLSB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgIGFzc2VydCAobGVuZ3RoID49IDApO1xuICAgICAgICAgICAgaWYgbGVuZ3RoID4gMFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAoKiBQcm9jZXNzIHRoZSByZXN0IG9mIHRoZSBkYXRhLlxuICAgICAgICAgICAgICAgICBNb3JlIHRoYW4gb25lIGJpbl9wcm90IG1lc3NhZ2Ugd2FzIHNlbnQgaW5zaWRlIHRoZSB3ZWJzb2NrZXQgZnJhbWUgKilcbiAgICAgICAgICAgICAgcHJvY2Vzc19kYXRhIH5wb3MgfmRhdGEgfmxlbmd0aCBxdWV1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoKiBsZW5ndGggPSAwICopXG4gICAgICAgICAgICAgICgqIEFsbCBkYXRhIHdhcyByZWFkIC0ga2VlcCBwcm9jZXNzaW5nIHRoZSBxdWV1ZSAqKVxuICAgICAgICAgICAgICBzZXRfYnVmZmVyX2FuZF9wcm9jZXNzX3F1ZXVlIH5uZWVkOkhlYWRlci5sZW5ndGggfnBvcyB+bGVuZ3RoOjAgfnF1ZXVlIH5kYXRhKVxuICAgICAgICBlbHNlIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQ6dG90YWxfbGVuIH5wb3Mgfmxlbmd0aCB+cXVldWUgfmRhdGEpXG4gICAgICBlbHNlIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQ6SGVhZGVyLmxlbmd0aCB+cG9zIH5sZW5ndGggfnF1ZXVlIH5kYXRhXG4gICAgYW5kIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhID1cbiAgICAgIGlmIGxlbmd0aCA9IDBcbiAgICAgIHRoZW4gQmlnYnVmZmVyLmNsZWFyIGJ1ZmZlclxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBkYXRhID0gQmlnc3RyaW5nLnN1YiBkYXRhIH5wb3MgfmxlbjpsZW5ndGggaW5cbiAgICAgICAgQmlnYnVmZmVyLmNsZWFyIGJ1ZmZlcjtcbiAgICAgICAgQmlnYnVmZmVyLmFkZF9iaWdzdHJpbmcgYnVmZmVyIGRhdGEpXG4gICAgYW5kIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQgfnBvcyB+bGVuZ3RoIH5xdWV1ZSB+ZGF0YSA9XG4gICAgICBzZXRfYnVmZmVyIH5wb3Mgfmxlbmd0aCB+ZGF0YTtcbiAgICAgIHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWVcbiAgICBpblxuICAgIGxldCByZWMgd2FpdF9mb3JfcmVhZCB+bmVlZCA9XG4gICAgICBwaXBlX3JlYWQgdC5waXBlIChmdW5jdGlvblxuICAgICAgICB8IGBFb2YgLT4gcmV0dXJuIChFcnJvciBgRW9mKVxuICAgICAgICB8IGBPayBxdWV1ZSAtPiBwcm9jZXNzX3F1ZXVlIH5uZWVkIHF1ZXVlID4+PSBlbmRfb2ZfYmF0Y2hfYW5kX2NvbnRpbnVlKVxuICAgIGFuZCBlbmRfb2ZfYmF0Y2hfYW5kX2NvbnRpbnVlIG5leHQgPVxuICAgICAgb25fZW5kX29mX2JhdGNoICgpO1xuICAgICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IEZpcnN0IHJlc3VsdCAtPiByZXR1cm4gKE9rIHJlc3VsdClcbiAgICAgIHwgU2Vjb25kIG5lZWQgLT4gd2FpdF9mb3JfcmVhZCB+bmVlZFxuICAgIGluXG4gICAgbGV0IHN0YXJ0X3Byb2Nlc3NpbmdfZXhpc3RpbmdfZGF0YSB+ZGF0YSB+bGVuZ3RoID1cbiAgICAgIHByb2Nlc3NfZGF0YSB+cG9zOjAgfmRhdGEgfmxlbmd0aCAoUXVldWUuY3JlYXRlICgpKSA+Pj0gZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZVxuICAgIGluXG4gICAgKCogV2UgZWl0aGVyIHN0YXJ0IGJ5XG4gICAgICAgLSBwcm9jZXNzaW5nIHJlbWFpbmluZyBiaXRzIGluIHRoZSBidWZmZXJcbiAgICAgICAtIG9yIHdhaXRpbmcgZm9yIG1vcmUgZGF0YSBpbiB0aGUgcGlwZSAqKVxuICAgIGxldCBuZWVkID0gSGVhZGVyLmxlbmd0aCBpblxuICAgIGxldCBsZW5ndGggPSBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciBpblxuICAgIGlmIEludC4oIDwgKSBsZW5ndGggbmVlZFxuICAgIHRoZW4gd2FpdF9mb3JfcmVhZCB+bmVlZFxuICAgIGVsc2Ugc3RhcnRfcHJvY2Vzc2luZ19leGlzdGluZ19kYXRhIH5sZW5ndGggfmRhdGE6KEJpZ2J1ZmZlci52b2xhdGlsZV9jb250ZW50cyBidWZmZXIpXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRGF0YS50XG5cbiAgICBsZXQgb2ZfYmlnc3RyaW5nID0gRGF0YS5vZl9iaWdzdHJpbmdcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBpcGVfYW5kX21vbml0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHBpcGUgOiAnYSBQaXBlLldyaXRlci50XG4gICAgOyBtb25pdG9yIDogTW9uaXRvci50XG4gICAgOyBtdXRhYmxlIGJ5dGVzX3dyaXR0ZW4gOiBJbnQ2My50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgcGlwZSA9IHsgcGlwZTsgbW9uaXRvciA9IE1vbml0b3IuY3JlYXRlICgpOyBieXRlc193cml0dGVuID0gSW50NjMuemVybyB9XG5lbmRcblxuKCogV2UgZG9uJ3QgcGVyZm9ybSBhbnkgYnVmZmVyaW5nIGhlcmUuXG4gICBBIG1lc3NhZ2UgaXMgY29uc2lkZXIgdG8gYmUgZmx1c2hlZCBhcyBzb29uIGFzIGl0IGVudGVycyB0aGUgcGlwZS4gKilcbm1vZHVsZSBQaXBlX3dyaXRlciAoRGF0YSA6IERBVEEpID0gc3RydWN0XG4gIHR5cGUgdCA9IERhdGEudCBQaXBlX2FuZF9tb25pdG9yLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY2xvc2UgKHQgOiB0KSA9XG4gICAgUGlwZS5jbG9zZSB0LnBpcGU7XG4gICAgRGVmZXJyZWQudW5pdFxuICA7O1xuXG4gIGxldCBpc19jbG9zZWQgKHQgOiB0KSA9IFBpcGUuaXNfY2xvc2VkIHQucGlwZVxuICBsZXQgbW9uaXRvciAodCA6IHQpID0gdC5tb25pdG9yXG5cbiAgKCogQmVjYXVzZSB3ZSBkb24ndCBtYWludGFpbiBhbnkgYnVmZmVyLCB0aGVyZSBhcmUgbm8gcGVuZGluZyB3cml0ZXMgKilcbiAgbGV0IGJ5dGVzX3RvX3dyaXRlIChfIDogdCkgPSAwXG4gIGxldCBieXRlc193cml0dGVuICh0IDogdCkgPSB0LmJ5dGVzX3dyaXR0ZW5cbiAgbGV0IHN0b3BwZWQgKHQgOiB0KSA9IFBpcGUuY2xvc2VkIHQucGlwZVxuXG4gICgqIFdlIGNvbnNpZGVyIHRoYXQgYSBtZXNzYWdlIGlzIGZsdXNoZWQgYXMgc29vbiBhcyBpdCByZWFjaGVzIHRoZSB1bmRlcmxpbmluZ1xuICAgICB0cmFuc3BvcnQuICopXG4gIGxldCBmbHVzaGVkIChfIDogdCkgPSBEZWZlcnJlZC51bml0XG4gIGxldCByZWFkeV90b193cml0ZSA9IGZsdXNoZWRcbiAgbGV0IHNlbnRfcmVzdWx0IHggOiBfIFNlbmRfcmVzdWx0LnQgPSBTZW50IHhcblxuICBsZXQgY2hlY2tfY2xvc2VkICh0IDogdCkgZiA9XG4gICAgaWYgbm90IChQaXBlLmlzX2Nsb3NlZCB0LnBpcGUpIHRoZW4gZiAoKSBlbHNlIFNlbmRfcmVzdWx0LkNsb3NlZFxuICA7O1xuXG4gIGxldCBpbmNyX2J5dGVzX3dyaXR0ZW4gKHQgOiB0KSBudW1fYnl0ZXMgPVxuICAgIHQuYnl0ZXNfd3JpdHRlbiA8LSBJbnQ2My4odC5ieXRlc193cml0dGVuICsgb2ZfaW50IG51bV9ieXRlcylcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdCB0IHdyaXRlciB4ID1cbiAgICBjaGVja19jbG9zZWQgdCAoZnVuICgpIC0+XG4gICAgICBsZXQgYnVmID0gQmluX3Byb3QuVXRpbHMuYmluX2R1bXAgfmhlYWRlcjp0cnVlIHdyaXRlciB4IGluXG4gICAgICBsZXQgZGF0YSA9IERhdGEub2ZfYmlnc3RyaW5nIGJ1ZiBpblxuICAgICAgaW5jcl9ieXRlc193cml0dGVuIHQgKERhdGEubGVuZ3RoIGRhdGEpO1xuICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQucGlwZSBkYXRhO1xuICAgICAgc2VudF9yZXN1bHQgKCkpXG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgICAgICB0XG4gICAgICAgICh3cml0ZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyKVxuICAgICAgICB4XG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuOnBheWxvYWRfc2l6ZVxuICAgID1cbiAgICBjaGVja19jbG9zZWQgdCAoZnVuICgpIC0+XG4gICAgICAoKiBXcml0ZSB0aGUgc2l6ZSBoZWFkZXIgbWFudWFsbHkgYW5kIGNvbmNhdGVuYXRlIHRoZSB0d28gKilcbiAgICAgIGxldCBkYXRhX3NpemUgPSB3cml0ZXIuc2l6ZSB4IGluXG4gICAgICBsZXQgZGF0YSA9IEJpZ3N0cmluZy5jcmVhdGUgKGRhdGFfc2l6ZSArIEhlYWRlci5sZW5ndGggKyBwYXlsb2FkX3NpemUpIGluXG4gICAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBkYXRhIH5wb3M6MCAoZGF0YV9zaXplICsgcGF5bG9hZF9zaXplKTtcbiAgICAgIGxldCBkc3RfcG9zID0gd3JpdGVyLndyaXRlIGRhdGEgfnBvczpIZWFkZXIubGVuZ3RoIHggaW5cbiAgICAgIEJpZ3N0cmluZy5ibGl0IH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OmRhdGEgfmRzdF9wb3MgfmxlbjpwYXlsb2FkX3NpemU7XG4gICAgICBsZXQgZGF0YSA9IERhdGEub2ZfYmlnc3RyaW5nIGRhdGEgaW5cbiAgICAgIGluY3JfYnl0ZXNfd3JpdHRlbiB0IChEYXRhLmxlbmd0aCBkYXRhKTtcbiAgICAgIFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB0LnBpcGUgZGF0YTtcbiAgICAgIHNlbnRfcmVzdWx0ICgpKVxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmcgdCB3cml0ZXIgeCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgbWF0Y2ggc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIHQgd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW4gd2l0aFxuICAgIHwgU2VudCAoKSAtPiBzZW50X3Jlc3VsdCBEZWZlcnJlZC51bml0XG4gICAgfCAoQ2xvc2VkIHwgTWVzc2FnZV90b29fYmlnIF8pIGFzIHIgLT4gclxuICA7O1xuZW5kXG5cbm1vZHVsZSBCaWdzdHJpbmdfZGF0YSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCaWdzdHJpbmcudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBsZW5ndGggPSBCaWdzdHJpbmcubGVuZ3RoXG4gIGxldCBhZGRfdG9fYmlnYnVmZmVyID0gQmlnYnVmZmVyLmFkZF9iaWdzdHJpbmdcbiAgbGV0IHRvX2JpZ3N0cmluZyB4ID0geFxuICBsZXQgb2ZfYmlnc3RyaW5nIHggPSB4XG5lbmRcblxubW9kdWxlIFN0cmluZ19kYXRhID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0cmluZy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcbiAgbGV0IGFkZF90b19iaWdidWZmZXIgPSBCaWdidWZmZXIuYWRkX3N0cmluZ1xuICBsZXQgdG9fYmlnc3RyaW5nIHggPSBCaWdzdHJpbmcub2Zfc3RyaW5nIHhcbiAgbGV0IG9mX2JpZ3N0cmluZyB4ID0gQmlnc3RyaW5nLnRvX3N0cmluZyB4XG5lbmRcblxubW9kdWxlIEJpZ3N0cmluZ19waXBlX3JlYWRlciA9IFBpcGVfcmVhZGVyIChCaWdzdHJpbmdfZGF0YSlcbm1vZHVsZSBCaWdzdHJpbmdfcGlwZV93cml0ZXIgPSBQaXBlX3dyaXRlciAoQmlnc3RyaW5nX2RhdGEpXG5tb2R1bGUgU3RyaW5nX3BpcGVfcmVhZGVyID0gUGlwZV9yZWFkZXIgKFN0cmluZ19kYXRhKVxubW9kdWxlIFN0cmluZ19waXBlX3dyaXRlciA9IFBpcGVfd3JpdGVyIChTdHJpbmdfZGF0YSlcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFN0cmluZyA6IHN0cmluZyB0XG4gICAgfCBCaWdzdHJpbmcgOiBiaWdzdHJpbmcgdFxuXG4gIGxldCBzdHJpbmcgPSBTdHJpbmdcbiAgbGV0IGJpZ3N0cmluZyA9IEJpZ3N0cmluZ1xuZW5kXG5cbmxldCBtYWtlX3JlYWRlciAodHlwZSBhKSAoeCA6IGEgS2luZC50KSAocmVhZGVyIDogYSBQaXBlLlJlYWRlci50KSA9XG4gIGxldCByZWFkZXIgPSBQaXBlX2FuZF9idWZmZXIuY3JlYXRlIHJlYWRlciBpblxuICBtYXRjaCB4IHdpdGhcbiAgfCBLaW5kLlN0cmluZyAtPiBSZWFkZXIucGFjayAobW9kdWxlIFN0cmluZ19waXBlX3JlYWRlcikgcmVhZGVyXG4gIHwgS2luZC5CaWdzdHJpbmcgLT4gUmVhZGVyLnBhY2sgKG1vZHVsZSBCaWdzdHJpbmdfcGlwZV9yZWFkZXIpIHJlYWRlclxuOztcblxubGV0IG1ha2Vfd3JpdGVyICh0eXBlIGEpICh4IDogYSBLaW5kLnQpICh3cml0ZXIgOiBhIFBpcGUuV3JpdGVyLnQpID1cbiAgbGV0IHdyaXRlciA9IFBpcGVfYW5kX21vbml0b3IuY3JlYXRlIHdyaXRlciBpblxuICBtYXRjaCB4IHdpdGhcbiAgfCBLaW5kLlN0cmluZyAtPiBXcml0ZXIucGFjayAobW9kdWxlIFN0cmluZ19waXBlX3dyaXRlcikgd3JpdGVyXG4gIHwgS2luZC5CaWdzdHJpbmcgLT4gV3JpdGVyLnBhY2sgKG1vZHVsZSBCaWdzdHJpbmdfcGlwZV93cml0ZXIpIHdyaXRlclxuOztcblxubGV0IGNyZWF0ZSBraW5kIHJlYWRlciB3cml0ZXIgPVxuICB7IFRyYW5zcG9ydC5yZWFkZXIgPSBtYWtlX3JlYWRlciBraW5kIHJlYWRlcjsgd3JpdGVyID0gbWFrZV93cml0ZXIga2luZCB3cml0ZXIgfVxuOztcblxuKCogVGVzdGluZyAqKVxuXG5tb2R1bGUgdHlwZSBUcmFuc3BvcnRfcmVhZGVyID0gc2lnXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIG9mX2JpZ3N0cmluZyA6IEJpZ3N0cmluZy50IC0+IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBUcmFuc3BvcnQuUmVhZGVyLlMgd2l0aCB0eXBlIHQgPSBGb3JfdGVzdGluZy50IFBpcGVfYW5kX2J1ZmZlci50XG5lbmRcblxubW9kdWxlIFRlc3RfcmVhZGVyIChUcmFuc3BvcnRfcmVhZGVyIDogVHJhbnNwb3J0X3JlYWRlcikgPSBzdHJ1Y3RcbiAgb3BlbiBUcmFuc3BvcnRfcmVhZGVyLkZvcl90ZXN0aW5nXG5cbiAgbGV0IGRlZmF1bHRfbWVzc2FnZSA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJGT09CQVIxMjNcIlxuXG4gIGxldCBjcmVhdGVfbWVzc2FnZV9idWYgKG1lc3NhZ2UgOiBCaWdzdHJpbmcudCkgOiBCaWdzdHJpbmcudCA9XG4gICAgbGV0IG1lc3NhZ2VfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlIGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgKEhlYWRlci5sZW5ndGggKyBtZXNzYWdlX2xlbikgaW5cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIG1lc3NhZ2VfbGVuO1xuICAgIEJpZ3N0cmluZy5ibGl0XG4gICAgICB+c3JjOm1lc3NhZ2VcbiAgICAgIH5kc3Q6YnVmXG4gICAgICB+c3JjX3BvczowXG4gICAgICB+ZHN0X3BvczpIZWFkZXIubGVuZ3RoXG4gICAgICB+bGVuOm1lc3NhZ2VfbGVuO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWVzc2FnZSAoKSA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2VcblxuICBsZXQgb25fbWVzc2FnZSA/KG1lc3NhZ2UgPSBkZWZhdWx0X21lc3NhZ2UpIG9uX21lc3NhZ2VfY291bnQgYnVmZmVyIH5wb3MgfmxlbiA9XG4gICAgb25fbWVzc2FnZV9jb3VudCA6PSAhb25fbWVzc2FnZV9jb3VudCArIDE7XG4gICAgWyV0ZXN0X3Jlc3VsdDogQmlnc3RyaW5nLnRdIChCaWdzdHJpbmcuc3ViIGJ1ZmZlciB+cG9zIH5sZW4pIH5leHBlY3Q6bWVzc2FnZTtcbiAgICBIYW5kbGVyX3Jlc3VsdC5Db250aW51ZVxuICA7O1xuXG4gIGxldCBvbl9lbmRfb2ZfYmF0Y2ggb25fZW5kX29mX2JhdGNoX2NvdW50ICgpID0gaW5jciBvbl9lbmRfb2ZfYmF0Y2hfY291bnRcbiAgbGV0IHdhaXQgKCkgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyLkV4cGVydC5ydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluICgpXG5cbiAgbGV0IHJ1bl90ZXN0IHJ1biB2ZXJpZnkgPVxuICAgIGxldCByZWFkZXIsIHdyaXRlciA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gICAgbGV0IG9uX21lc3NhZ2VfY291bnQgPSByZWYgMCBpblxuICAgIGxldCBvbl9lbmRfb2ZfYmF0Y2hfY291bnQgPSByZWYgMCBpblxuICAgIGxldCBvbl9tZXNzYWdlID0gb25fbWVzc2FnZSBvbl9tZXNzYWdlX2NvdW50IGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaCA9IG9uX2VuZF9vZl9iYXRjaCBvbl9lbmRfb2ZfYmF0Y2hfY291bnQgaW5cbiAgICBpZ25vcmUgKFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyIHJlYWRlciB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoKTtcbiAgICB3YWl0ICgpO1xuICAgIHJ1biAoZnVuIHggLT4gUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciAob2ZfYmlnc3RyaW5nIHgpKTtcbiAgICB3YWl0ICgpO1xuICAgIHZlcmlmeSB+b25fbWVzc2FnZV9jb3VudCB+b25fZW5kX29mX2JhdGNoX2NvdW50XG4gIDs7XG5cbiAgbGV0IHZlcmlmeSB+b25fbWVzc2FnZV9jb3VudCB+b25fZW5kX29mX2JhdGNoX2NvdW50IG1lc3NhZ2VfY291bnQgYmF0Y2hfY291bnQgPVxuICAgIFsldGVzdF9yZXN1bHQ6IGludF0gIW9uX21lc3NhZ2VfY291bnQgfmV4cGVjdDptZXNzYWdlX2NvdW50O1xuICAgIFsldGVzdF9yZXN1bHQ6IGludF0gIW9uX2VuZF9vZl9iYXRjaF9jb3VudCB+ZXhwZWN0OmJhdGNoX2NvdW50XG4gIDs7XG5cbiAgbGV0IHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGUgPSB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpXG5cbiAgKCogTm90IGVub3VnaCBkYXRhLCB3ZSBuZWVkIHRvIGFjY3VtdWxhdGUgKilcbiAgbGV0IHdyaXRlXzFfbXNnXzNfY2h1bmsgd3JpdGUgPVxuICAgIGxldCBidWYgPSBjcmVhdGVfbWVzc2FnZV9idWYgKEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJcIikgaW5cbiAgICBsZXQgbWVzc2FnZV9yYXcgPSBkZWZhdWx0X21lc3NhZ2UgaW5cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIChCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2VfcmF3KTtcbiAgICB3cml0ZSBidWY7XG4gICAgd2FpdCAoKTtcbiAgICBsZXQgbXNnX2xlbiA9IEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZV9yYXcgaW5cbiAgICBsZXQgc3BsaXRfYXQgPSBtc2dfbGVuIC8gMiBpblxuICAgIGxldCBwYXJ0MSA9IEJpZ3N0cmluZy5zdWIgbWVzc2FnZV9yYXcgfnBvczowIH5sZW46c3BsaXRfYXQgaW5cbiAgICBsZXQgcGFydDIgPSBCaWdzdHJpbmcuc3ViIG1lc3NhZ2VfcmF3IH5wb3M6c3BsaXRfYXQgfmxlbjoobXNnX2xlbiAtIHNwbGl0X2F0KSBpblxuICAgIHdyaXRlIHBhcnQxO1xuICAgIHdhaXQgKCk7XG4gICAgd3JpdGUgcGFydDJcbiAgOztcblxuICAoKiBUb28gbXVjaCBkYXRhLCB3ZSBuZWVkIHRvIGxvb3Agd2l0aGluZyB0aGUgc2FtZSBiYXRjaCAqKVxuICBsZXQgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZSA9XG4gICAgbGV0IG9uZV9tc2cgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlIGluXG4gICAgbGV0IHR3b19tc2cgPSBCaWdzdHJpbmcuY29uY2F0IFsgb25lX21zZzsgb25lX21zZyBdIGluXG4gICAgd3JpdGUgdHdvX21zZ1xuICA7O1xuXG4gIGxldCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgd3JpdGUgPVxuICAgIGxldCBvbmVfbXNnID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZSBpblxuICAgIGxldCB0d29fbXNnID0gQmlnc3RyaW5nLmNvbmNhdCBbIG9uZV9tc2c7IG9uZV9tc2cgXSBpblxuICAgIGZvciBpID0gMCB0byBCaWdzdHJpbmcubGVuZ3RoIHR3b19tc2cgLSAxIGRvXG4gICAgICB3cml0ZSAoQmlnc3RyaW5nLnN1YiB0d29fbXNnIH5wb3M6aSB+bGVuOjEpO1xuICAgICAgd2FpdCAoKVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8xX21zZ18xX2NodW5rICh2ZXJpZnkgMSAxKVxuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGVcbiAgICBpblxuICAgIHJ1bl90ZXN0IGYgKHZlcmlmeSAyIDEpXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfM19jaHVuayAodmVyaWZ5IDEgMylcbiAgbGV0JXRlc3RfdW5pdCBfID0gcnVuX3Rlc3Qgd3JpdGVfMl9tc2dfMV9jaHVuayAodmVyaWZ5IDIgMSlcbiAgbGV0JXRlc3RfdW5pdCBfID0gcnVuX3Rlc3Qgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rICh2ZXJpZnkgMiAzNClcblxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSk7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpXG4gICAgaW5cbiAgICBydW5fdGVzdCBmICh2ZXJpZnkgNyA0MClcbiAgOztcblxuICBsZXQldGVzdF91bml0IFwiY2FuIGNhbGwgcmVhZF9mb3JldmVyIG11bHRpcGxlIHRpbWVzXCIgPVxuICAgIGxldCByZWFkZXIsIHdyaXRlciA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaCAoKSA9ICgpIGluXG4gICAgbGV0IHdyaXRlIHggPSBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChvZl9iaWdzdHJpbmcgeCkgaW5cbiAgICBsZXQgbnVtID0gcmVmIDAgaW5cbiAgICBsZXQgc3RvcF9hZnRlcl9vbl9tZXNzYWdlIGJ1ZmZlciB+cG9zIH5sZW4gPVxuICAgICAgaW5jciBudW07XG4gICAgICBbJXRlc3RfcmVzdWx0OiBCaWdzdHJpbmcudF0gKEJpZ3N0cmluZy5zdWIgYnVmZmVyIH5wb3MgfmxlbikgfmV4cGVjdDpkZWZhdWx0X21lc3NhZ2U7XG4gICAgICBIYW5kbGVyX3Jlc3VsdC5TdG9wICgpXG4gICAgaW5cbiAgICB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlO1xuICAgIFBpcGUuY2xvc2Ugd3JpdGVyO1xuICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAobGV0JWJpbmQgeCA9XG4gICAgICAgICBUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlclxuICAgICAgICAgICByZWFkZXJcbiAgICAgICAgICAgfm9uX21lc3NhZ2U6c3RvcF9hZnRlcl9vbl9tZXNzYWdlXG4gICAgICAgICAgIH5vbl9lbmRfb2ZfYmF0Y2hcbiAgICAgICBpblxuICAgICAgIGFzc2VydCAoUmVzdWx0LmlzX29rIHgpO1xuICAgICAgIGxldCViaW5kIHggPVxuICAgICAgICAgVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXJcbiAgICAgICAgICAgcmVhZGVyXG4gICAgICAgICAgIH5vbl9tZXNzYWdlOnN0b3BfYWZ0ZXJfb25fbWVzc2FnZVxuICAgICAgICAgICB+b25fZW5kX29mX2JhdGNoXG4gICAgICAgaW5cbiAgICAgICBhc3NlcnQgKFJlc3VsdC5pc19vayB4KTtcbiAgICAgICBEZWZlcnJlZC51bml0KTtcbiAgICB3YWl0ICgpO1xuICAgIFsldGVzdF9yZXN1bHQ6IEludC50XSB+ZXhwZWN0OjIgIW51bVxuICA7O1xuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBcIlRlc3RfcmVhZGVyX3N0cmluZ1wiID0gKG1vZHVsZSBUZXN0X3JlYWRlciAoU3RyaW5nX3BpcGVfcmVhZGVyKSlcbmxldCV0ZXN0X21vZHVsZSBcIlRlc3RfcmVhZGVyX2JpZ3N0cmluZ1wiID0gKG1vZHVsZSBUZXN0X3JlYWRlciAoQmlnc3RyaW5nX3BpcGVfcmVhZGVyKSlcblxubW9kdWxlIEJlbmNoX3JlYWRlciAoVHJhbnNwb3J0X3JlYWRlciA6IFRyYW5zcG9ydF9yZWFkZXIpID0gc3RydWN0XG4gIG9wZW4gVHJhbnNwb3J0X3JlYWRlci5Gb3JfdGVzdGluZ1xuXG4gIGxldCBkZWZhdWx0X21lc3NhZ2UgPSBCaWdzdHJpbmcub2Zfc3RyaW5nIFwiRk9PQkFSMTIzXCJcblxuICBsZXQgY3JlYXRlX21lc3NhZ2VfYnVmIChtZXNzYWdlIDogQmlnc3RyaW5nLnQpIDogQmlnc3RyaW5nLnQgPVxuICAgIGxldCBtZXNzYWdlX2xlbiA9IEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZSBpblxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcuY3JlYXRlIChIZWFkZXIubGVuZ3RoICsgbWVzc2FnZV9sZW4pIGluXG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCBtZXNzYWdlX2xlbjtcbiAgICBCaWdzdHJpbmcuYmxpdFxuICAgICAgfnNyYzptZXNzYWdlXG4gICAgICB+ZHN0OmJ1ZlxuICAgICAgfnNyY19wb3M6MFxuICAgICAgfmRzdF9wb3M6SGVhZGVyLmxlbmd0aFxuICAgICAgfmxlbjptZXNzYWdlX2xlbjtcbiAgICBidWZcbiAgOztcblxuICBsZXQgY3JlYXRlX21lc3NhZ2UgKCkgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlXG4gIGxldCBvbmVfbWVzc2FnZSA9IGNyZWF0ZV9tZXNzYWdlICgpXG4gIGxldCB0d29fbWVzc2FnZXMgPSBCaWdzdHJpbmcuY29uY2F0IFsgb25lX21lc3NhZ2U7IG9uZV9tZXNzYWdlIF1cblxuICBsZXQgb25lX21lc3NhZ2VfcDEsIG9uZV9tZXNzYWdlX3AyID1cbiAgICBsZXQgbXNnX2xlbiA9IEJpZ3N0cmluZy5sZW5ndGggb25lX21lc3NhZ2UgaW5cbiAgICBsZXQgc3BsaXRfYXQgPSBtc2dfbGVuIC8gMiBpblxuICAgIGxldCBwYXJ0MSA9IEJpZ3N0cmluZy5zdWIgb25lX21lc3NhZ2UgfnBvczowIH5sZW46c3BsaXRfYXQgaW5cbiAgICBsZXQgcGFydDIgPSBCaWdzdHJpbmcuc3ViIG9uZV9tZXNzYWdlIH5wb3M6c3BsaXRfYXQgfmxlbjoobXNnX2xlbiAtIHNwbGl0X2F0KSBpblxuICAgIHBhcnQxLCBwYXJ0MlxuICA7O1xuXG4gIGxldCBvbl9tZXNzYWdlIF9idWZmZXIgfnBvczpfIH5sZW46XyA9IEhhbmRsZXJfcmVzdWx0LkNvbnRpbnVlXG4gIGxldCBvbl9lbmRfb2ZfYmF0Y2ggKCkgPSAoKVxuICBsZXQgd2FpdCAoKSA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuRXhwZXJ0LnJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gKClcblxuICBsZXQgcnVuX3Rlc3QgcnVuID1cbiAgICBsZXQgcmVhZGVyLCB3cml0ZXIgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWFkZXIgPSBQaXBlX2FuZF9idWZmZXIuY3JlYXRlIHJlYWRlciBpblxuICAgIGxldCBvbl9tZXNzYWdlID0gb25fbWVzc2FnZSBpblxuICAgIGxldCBvbl9lbmRfb2ZfYmF0Y2ggPSBvbl9lbmRfb2ZfYmF0Y2ggaW5cbiAgICBpZ25vcmUgKFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyIHJlYWRlciB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoKTtcbiAgICB3YWl0ICgpO1xuICAgIGZvciBfID0gMCB0byAxMDAgZG9cbiAgICAgIHJ1biAoZnVuIHggLT4gUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciAob2ZfYmlnc3RyaW5nIHgpKVxuICAgIGRvbmU7XG4gICAgd2FpdCAoKVxuICA7O1xuXG4gIGxldCB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlID0gd3JpdGUgb25lX21lc3NhZ2VcblxuICAoKiBOb3QgZW5vdWdoIGRhdGEsIHdlIG5lZWQgdG8gYWNjdW11bGF0ZSAqKVxuICBsZXQgYnVmID0gY3JlYXRlX21lc3NhZ2VfYnVmIChCaWdzdHJpbmcub2Zfc3RyaW5nIFwiXCIpXG5cbiAgbGV0IHdyaXRlXzFfbXNnXzNfY2h1bmsgd3JpdGUgPVxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgKEJpZ3N0cmluZy5sZW5ndGggb25lX21lc3NhZ2UpO1xuICAgIHdyaXRlIGJ1ZjtcbiAgICB3cml0ZSBvbmVfbWVzc2FnZV9wMTtcbiAgICB3cml0ZSBvbmVfbWVzc2FnZV9wMlxuICA7O1xuXG4gICgqIFRvbyBtdWNoIGRhdGEsIHdlIG5lZWQgdG8gbG9vcCB3aXRoaW5nIHRoZSBzYW1lIGJhdGNoICopXG4gIGxldCB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlID0gd3JpdGUgdHdvX21lc3NhZ2VzXG5cbiAgbGV0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZSA9XG4gICAgZm9yIGkgPSAwIHRvIEJpZ3N0cmluZy5sZW5ndGggdHdvX21lc3NhZ2VzIC0gMSBkb1xuICAgICAgd3JpdGUgKEJpZ3N0cmluZy5zdWIgdHdvX21lc3NhZ2VzIH5wb3M6aSB+bGVuOjEpXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCViZW5jaCBcIndyaXRlXzFfbXNnXzFfY2h1bmtcIiA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzFfY2h1bmtcblxuICBsZXQlYmVuY2ggXCJ3cml0ZV8yX21zZ18xX2NodW5rXCIgPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlXG4gICAgaW5cbiAgICBydW5fdGVzdCBmXG4gIDs7XG5cbiAgbGV0JWJlbmNoIFwid3JpdGVfMV9tc2dfM19jaHVua1wiID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfM19jaHVua1xuICBsZXQlYmVuY2ggXCJ3cml0ZV8yX21zZ18xX2NodW5rXCIgPSBydW5fdGVzdCB3cml0ZV8yX21zZ18xX2NodW5rXG4gIGxldCViZW5jaCBcIndyaXRlXzJfbXNnX29uZV9ieXRlXCIgPSBydW5fdGVzdCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmtcblxuICBsZXQlYmVuY2ggXCJtdWx0aVwiID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpO1xuICAgICAgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpXG4gICAgaW5cbiAgICBydW5fdGVzdCBmXG4gIDs7XG5lbmRcblxubGV0JWJlbmNoX21vZHVsZSBcIlRlc3RfcmVhZGVyX3N0cmluZ1wiID0gKG1vZHVsZSBCZW5jaF9yZWFkZXIgKFN0cmluZ19waXBlX3JlYWRlcikpXG5sZXQlYmVuY2hfbW9kdWxlIFwiVGVzdF9yZWFkZXJfYmlnc3RyaW5nXCIgPSAobW9kdWxlIEJlbmNoX3JlYWRlciAoQmlnc3RyaW5nX3BpcGVfcmVhZGVyKSlcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxuaW5jbHVkZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25fa2VybmVsXG5cbm1vZHVsZSBWZXJzaW9uZWRfcnBjID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gVmVyc2lvbmVkX3JwYy5Db25uZWN0aW9uX3dpdGhfbWVudS50XG5cbiAgICBsZXQgcnBjX2Nvbm5lY3Rpb24gPSBWZXJzaW9uZWRfcnBjLkNvbm5lY3Rpb25fd2l0aF9tZW51LmNvbm5lY3Rpb25cbiAgICBsZXQgY2xvc2UgdCA9IFJwYy5Db25uZWN0aW9uLmNsb3NlIChycGNfY29ubmVjdGlvbiB0KVxuICAgIGxldCBpc19jbG9zZWQgdCA9IFJwYy5Db25uZWN0aW9uLmlzX2Nsb3NlZCAocnBjX2Nvbm5lY3Rpb24gdClcbiAgICBsZXQgY2xvc2VfZmluaXNoZWQgdCA9IFJwYy5Db25uZWN0aW9uLmNsb3NlX2ZpbmlzaGVkIChycGNfY29ubmVjdGlvbiB0KVxuICBlbmQpXG5cbm1vZHVsZSBScGMgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBScGMuQ29ubmVjdGlvbi50XG5cbiAgICBsZXQgY2xvc2UgdCA9IFJwYy5Db25uZWN0aW9uLmNsb3NlIHRcbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBScGMuQ29ubmVjdGlvbi5pc19jbG9zZWQgdFxuICAgIGxldCBjbG9zZV9maW5pc2hlZCB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2VfZmluaXNoZWQgdFxuICBlbmQpXG4iLCJtb2R1bGUgUnBjID0gUnBjXG5tb2R1bGUgVmVyc2lvbmVkX3JwYyA9IFZlcnNpb25lZF9ycGNcbm1vZHVsZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24gPSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25cbm1vZHVsZSBQaXBlX3RyYW5zcG9ydCA9IFBpcGVfdHJhbnNwb3J0XG5tb2R1bGUgUnBjX2Vycm9yID0gUnBjX2Vycm9yXG5tb2R1bGUgUnBjX3Jlc3VsdCA9IFJwY19yZXN1bHRcbm1vZHVsZSBScGNfc2hhcGVzID0gUnBjX3NoYXBlc1xubW9kdWxlIE9yX25vdF9hdXRob3JpemVkID0gT3Jfbm90X2F1dGhvcml6ZWRcblxubW9kdWxlIFJwY19tZXRhZGF0YSA6XG4gIG1vZHVsZSB0eXBlIG9mIFJwY19tZXRhZGF0YSB3aXRoIG1vZHVsZSBQcml2YXRlIDo9IFJwY19tZXRhZGF0YS5Qcml2YXRlID1cbiAgUnBjX21ldGFkYXRhXG5cbm1vZHVsZSBBc3luY19ycGNfa2VybmVsX3N0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgUnBjID0gUnBjLlN0YWJsZVxuZW5kXG5cbm1vZHVsZSBBc3luY19ycGNfa2VybmVsX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbm5lY3Rpb24gPSBDb25uZWN0aW9uXG4gIG1vZHVsZSBQcm90b2NvbCA9IFByb3RvY29sXG4gIG1vZHVsZSBUcmFuc3BvcnQgPSBUcmFuc3BvcnRcblxuICBsZXQgZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dCA9IENvbm5lY3Rpb24uZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dFxuZW5kXG4iLCJvcGVuIFN0cmluZ1xuXG5sZXQgc3RyaW5nX2FmdGVyIHMgbiA9IFN0cmluZy5zdWIgcyBuIChTdHJpbmcubGVuZ3RoIHMgLSBuKVxuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKDIgKiBsZW4pIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgJ1snIHwgJ10nIHwgJyonIHwgJy4nIHwgJ1xcXFwnIHwgJz8nIHwgJysnIHwgJ14nIHwgJyQnIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1xcXFwnO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICBkb25lO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cblxuKCogTm90IHRhaWwgcmVjdXJzaXZlIGZvciBcInBlcmZvcm1hbmNlXCIsIHBsZWFzZSBjaG9vc2UgbG93IHZhbHVlcyBmb3JcbiAgIFttYXhdLiBUaGUgaWRlYSBpcyB0aGF0IG1heCBpcyBhbHdheXMgc21hbGwgYmVjYXVzZSBpdCdzIGhhcmRcbiAgIGNvZGUgKilcbmxldCBzcGxpdF9jaGFyX2JvdW5kZWQgc3RyIH5vbiB+bWF4ID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2UgaWYgbWF4ID0gMSB0aGVuIFtzdHJdXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3Agb2Zmc2V0IHRva2VucyA9XG4gICAgICBpZiB0b2tlbnMgPSBtYXggLSAxXG4gICAgICB0aGVuIFtzdWIgc3RyIG9mZnNldCAobGVuZ3RoIHN0ciAtIG9mZnNldCldXG4gICAgICBlbHNlXG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4X2Zyb20gc3RyIG9mZnNldCBvbiBpblxuICAgICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICAgIFwiXCI6Oihsb29wIChvZmZzZXQgKyAxKSAodG9rZW5zICsgMSkpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHRva2VuID0gU3RyaW5nLnN1YiBzdHIgb2Zmc2V0IChpbmRleCAtIG9mZnNldCkgaW5cbiAgICAgICAgICAgIHRva2VuOjoobG9vcCAoaW5kZXggKyAxKSAodG9rZW5zICsgMSkpXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFtzdWIgc3RyIG9mZnNldCAobGVuZ3RoIHN0ciAtIG9mZnNldCldXG4gICAgaW4gbG9vcCAwIDBcblxubGV0IHNwbGl0X2NoYXJfdW5ib3VuZGVkIHN0ciB+b24gPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCBhY2Mgb2Zmc2V0ID1cbiAgICAgIHRyeSBiZWdpblxuICAgICAgICBsZXQgaW5kZXggPSByaW5kZXhfZnJvbSBzdHIgb2Zmc2V0IG9uIGluXG4gICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICBsb29wIChcIlwiOjphY2MpIChpbmRleCAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgdG9rZW4gPSBzdWIgc3RyIChpbmRleCArIDEpIChvZmZzZXQgLSBpbmRleCkgaW5cbiAgICAgICAgICBsb29wICh0b2tlbjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgZW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPiAoc3ViIHN0ciAwIChvZmZzZXQgKyAxKSk6OmFjY1xuICAgIGluIGxvb3AgW10gKGxlbmd0aCBzdHIgLSAxKVxuXG5sZXQgb2ZfY2hhciA9IFN0cmluZy5tYWtlIDFcblxubGV0IGZ1bGxfc3BsaXQgc3RyIH5vbiA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHNlcCA9IG9mX2NoYXIgb24gaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIG9mZnNldCA9XG4gICAgICB0cnkgYmVnaW5cbiAgICAgICAgbGV0IGluZGV4ID0gcmluZGV4X2Zyb20gc3RyIG9mZnNldCBvbiBpblxuICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgbG9vcCAoc2VwOjphY2MpIChpbmRleCAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgdG9rZW4gPSBzdWIgc3RyIChpbmRleCArIDEpIChvZmZzZXQgLSBpbmRleCkgaW5cbiAgICAgICAgICBsb29wIChzZXA6OnRva2VuOjphY2MpIChpbmRleCAtIDEpXG4gICAgICBlbmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICAgIHRoZW4gKHN1YiBzdHIgMCAob2Zmc2V0ICsgMSkpOjphY2NcbiAgICAgICAgZWxzZSBhY2NcbiAgICBpbiBsb29wIFtdIChsZW5ndGggc3RyIC0gMSlcblxuKCogY29weWluZyBjb3JlJ3MgY29udmVudGlvbiBmb3IgU3RyaW5nLnNwbGl0IGJ1dCB3aXRoIGFuIG9wdGlvbmFsIG1heFxuICAgYXJndW1lbnQgKilcbmxldCBzcGxpdCA/bWF4IHMgfm9uID1cbiAgbWF0Y2ggbWF4IHdpdGhcbiAgfCBOb25lIC0+IHNwbGl0X2NoYXJfdW5ib3VuZGVkIHMgfm9uXG4gIHwgU29tZSBtYXggLT4gICAgICAgICAgICAgICAgICgqIGFzc2VydCAobWF4IDwgMTAwKTsgKilcbiAgICBzcGxpdF9jaGFyX2JvdW5kZWQgcyB+b24gfm1heFxuXG5sZXQgcmluZGV4X2Zyb21fb24gcyB+b2Zmc2V0IH5vbiA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIG9uIHMuW2ldIHRoZW4gaVxuICAgIGVsc2UgbG9vcCAoaSAtIDEpXG4gIGluIGxvb3Agb2Zmc2V0XG5cbmxldCB0cmltX2xlZnRfc3ViIHMgfnBvcyB+bGVuIH5jaGFycyA9XG4gIGxldCBzdGFydF9wb3MgPVxuICAgIGxldCBmaW5hbCA9IHBvcyArIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBsYXN0X2NoYXIgaSA9XG4gICAgICBpZiBpID0gZmluYWwgdGhlbiBsYXN0X2NoYXJcbiAgICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIGNoYXJzIHMuW2ldIHRoZW4gbG9vcCAoaSArIDEpIChpICsgMSlcbiAgICAgIGVsc2UgbGFzdF9jaGFyXG4gICAgaW4gbG9vcCBwb3MgcG9zXG4gIGluXG4gIGxldCBuZXdfbGVuID0gbGVuIC0gKHN0YXJ0X3BvcyAtIHBvcykgaW5cbiAgU3RyaW5nLnN1YiBzIHN0YXJ0X3BvcyBuZXdfbGVuXG5cbmxldCBzcGxpdF90cmltX2xlZnQgc3RyIH5vbiB+dHJpbSA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHJlYyBsb29wIGFjYyBvZmZzZXQgPVxuICAgICAgdHJ5IGJlZ2luXG4gICAgICAgIGxldCBpbmRleCA9IHJpbmRleF9mcm9tX29uIHN0ciB+b2Zmc2V0IH5vbiBpblxuICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgbG9vcCAoXCJcIjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHRva2VuID0gdHJpbV9sZWZ0X3N1YiBzdHIgfnBvczooaW5kZXggKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgfmxlbjoob2Zmc2V0IC0gaW5kZXgpIH5jaGFyczp0cmltIGluXG4gICAgICAgICAgbG9vcCAodG9rZW46OmFjYykgKGluZGV4IC0gMSlcbiAgICAgIGVuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHRyaW1fbGVmdF9zdWIgc3RyIH5wb3M6MCB+bGVuOihvZmZzZXQgKyAxKSB+Y2hhcnM6dHJpbSk6OmFjY1xuICAgIGluIGxvb3AgW10gKGxlbmd0aCBzdHIgLSAxKVxuXG5leGNlcHRpb24gRm91bmRfaW50IG9mIGludFxuXG5sZXQgZmlyc3RfY2hhcl9uZSBzIGMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAwICYmIHMuWzBdIDw+IGNcblxubGV0IHRyaW1fbGVmdCBzID1cbiAgaWYgZmlyc3RfY2hhcl9uZSBzICcgJyB0aGVuIHNcbiAgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICB0cnlcbiAgICAgIGZvciBpPTAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBpZiBzLltpXSA8PiAnICcgdGhlbiByYWlzZSAoRm91bmRfaW50IGkpXG4gICAgICBkb25lO1xuICAgICAgXCJcIlxuICAgIHdpdGggRm91bmRfaW50IG5vbl9zcGFjZSAtPlxuICAgICAgc3ViIHMgbm9uX3NwYWNlIChsZW4gLSBub25fc3BhY2UpXG5cbmxldCBzdWJzdHJfZXEgPyhzdGFydD0wKSBzIH5wYXR0ZXJuID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcGF0dGVybiAtIDEgZG9cbiAgICAgIGlmIHMuW2kgKyBzdGFydF0gPD4gcGF0dGVybi5baV0gdGhlbiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggXyAtPiBmYWxzZVxuXG5sZXQgZmluZF9mcm9tID8oc3RhcnQ9MCkgc3RyIH5wYXR0ZXJuID1cbiAgdHJ5XG4gICAgZm9yIGkgPSBzdGFydCB0byAoU3RyaW5nLmxlbmd0aCBzdHIpIC0gKFN0cmluZy5sZW5ndGggcGF0dGVybikgZG9cbiAgICAgIGlmIHN1YnN0cl9lcSB+c3RhcnQ6aSBzdHIgfnBhdHRlcm4gdGhlblxuICAgICAgICByYWlzZSAoRm91bmRfaW50IGkpXG4gICAgZG9uZTtcbiAgICBOb25lXG4gIHdpdGhcbiAgfCBGb3VuZF9pbnQgaSAtPiBTb21lIGlcbiAgfCAgXyAtPiBOb25lXG5cbmxldCBmaW5kX21pbiBsIH5mID1cbiAgbGV0IHJlYyBsb29wIHggZnggPSBmdW5jdGlvblxuICAgIHwgW10gLT4gU29tZSAoeCwgZngpXG4gICAgfCB4Jzo6eHMgLT5cbiAgICAgIGxldCBmeCcgPSBmIHgnIGluXG4gICAgICBpZiBmeCcgPCBmeCB0aGVuIGxvb3AgeCcgZngnIHhzXG4gICAgICBlbHNlIGxvb3AgeCBmeCB4c1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeDo6eHMgLT4gbG9vcCB4IChmIHgpIHhzXG5cbmxldCByZXBsYWNlX2FsbCBzdHIgfnBhdHRlcm4gfndpdGhfID1cbiAgbGV0IChzbGVuLCBwbGVuKSA9IFN0cmluZy4obGVuZ3RoIHN0ciwgbGVuZ3RoIHBhdHRlcm4pIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIHNsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIG1hdGNoIGZpbmRfZnJvbSB+c3RhcnQ6aSBzdHIgfnBhdHRlcm4gd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChzbGVuIC0gaSk7XG4gICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gICAgfCBTb21lIGogLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoaiAtIGkpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHdpdGhfO1xuICAgICAgbG9vcCAoaiArIHBsZW4pXG4gIGluIGxvb3AgMFxuXG5leGNlcHRpb24gRm91bmRfcmVwbGFjZSBvZiBpbnQgKiBzdHJpbmcgKiBzdHJpbmdcblxubGV0IHJlcGxhY2VfYWxsX2Fzc29jIHN0ciB0YmwgPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIHNsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gc2xlbiB0aGVuIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgICBlbHNlXG4gICAgICBsZXQgciA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBmb3VuZCA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgIGxldCBlID1cbiAgICAgICAgICAgIGZpbmRfbWluIHRibCB+ZjooZnVuIChwYXR0ZXJuLCB3aXRoXykgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZmluZF9mcm9tIH5zdGFydDppIHN0ciB+cGF0dGVybiB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAgIC0+IG1heF9pbnRcbiAgICAgICAgICAgICAgfCBTb21lIGogd2hlbiBqID0gaSAtPiByYWlzZSAoRm91bmRfcmVwbGFjZSAoaiwgcGF0dGVybiwgd2l0aF8pKVxuICAgICAgICAgICAgICB8IFNvbWUgaiAtPiBmb3VuZCA6PSB0cnVlOyBqKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgKChwYXR0ZXJuLCB3aXRoXyksIGopIHdoZW4gIWZvdW5kIC0+IFNvbWUgKGosIHBhdHRlcm4sIHdpdGhfKVxuICAgICAgICAgIHwgU29tZSBfIC0+IE5vbmVcbiAgICAgICAgd2l0aCBGb3VuZF9yZXBsYWNlIChqLCBwYXR0ZXJuLCB3aXRoXykgLT4gU29tZSAoaiwgcGF0dGVybiwgd2l0aF8pXG4gICAgICBpblxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChzbGVuIC0gaSk7XG4gICAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgICAgIHwgU29tZSAoaiwgcGF0dGVybiwgd2l0aF8pIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoaiAtIGkpO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgd2l0aF87XG4gICAgICAgIGxvb3AgKGogKyBTdHJpbmcubGVuZ3RoIHBhdHRlcm4pXG4gIGluIGxvb3AgMFxuXG5sZXQgaXRlcmkgZiBsID1cbiAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IHg6OnhzIC0+IChmIGkgeCk7IGxvb3AgKHN1Y2MgaSkgeHNcbiAgaW4gbG9vcCAwIGxcblxubGV0IG9mX2xpc3QgeHMgPVxuICBsZXQgbCA9IExpc3QubGVuZ3RoIHhzIGluXG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIGwgaW5cbiAgaXRlcmkgKGZ1biBpIGMgLT4gQnl0ZXMuc2V0IHMgaSBjKSB4cztcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPVxuICAgIGlmIGkgPSAtMSB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIGxvb3AgKHMuW2ldIDo6IGFjYykgKHByZWQgaSlcbiAgaW4gbG9vcCBbXSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcblxubGV0IG9mX2FycmF5IGEgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgbGV0IGJ5dGVzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIEJ5dGVzLnNldCBieXRlcyBpIGEuKGkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnl0ZXNcblxubGV0IHRvX2FycmF5IHMgPSBBcnJheS5pbml0IChTdHJpbmcubGVuZ3RoIHMpIChTdHJpbmcuZ2V0IHMpXG5cbigqIHJpcHBlZCBvZmYgZnJvbSBvbmUgb2YgZGJ1ZW56bGkncyBsaWJzICopXG5sZXQgY3V0IHMgfm9uID1cbiAgbGV0IHNlcF9tYXggPSBsZW5ndGggb24gLSAxIGluXG4gIGlmIHNlcF9tYXggPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmdleHQuY3V0OiBlbXB0eSBzZXBhcmF0b3JcIiBlbHNlXG4gICAgbGV0IHNfbWF4ID0gbGVuZ3RoIHMgLSAxIGluXG4gICAgaWYgc19tYXggPCAwIHRoZW4gTm9uZSBlbHNlXG4gICAgICBsZXQgayA9IHJlZiAwIGluXG4gICAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgICAoKiBXZSBydW4gZnJvbSB0aGUgc3RhcnQgb2YgW3NdIHRvIGVuZCB3aXRoIFtpXSB0cnlpbmcgdG8gbWF0Y2ggdGhlXG4gICAgICAgICBmaXJzdCBjaGFyYWN0ZXIgb2YgW29uXSBpbiBbc10uIElmIHRoaXMgbWF0Y2hlcywgd2UgdmVyaWZ5IHRoYXRcbiAgICAgICAgIHRoZSB3aG9sZSBbb25dIGlzIG1hdGNoZWQgdXNpbmcgW2tdLiBJZiBpdCBkb2Vzbid0IG1hdGNoIHdlXG4gICAgICAgICBjb250aW51ZSB0byBsb29rIGZvciBbb25dIHdpdGggW2ldLiBJZiBpdCBtYXRjaGVzIHdlIGV4aXQgdGhlXG4gICAgICAgICBsb29wIGFuZCBleHRyYWN0IGEgc3Vic3RyaW5nIGZyb20gdGhlIHN0YXJ0IG9mIFtzXSB0byB0aGVcbiAgICAgICAgIHBvc2l0aW9uIGJlZm9yZSB0aGUgW29uXSB3ZSBmb3VuZCBhbmQgYW5vdGhlciBmcm9tIHRoZSBwb3NpdGlvblxuICAgICAgICAgYWZ0ZXIgdGhlIFtvbl0gd2UgZm91bmQgdG8gZW5kIG9mIHN0cmluZy4gSWYgW2ldIGlzIHN1Y2ggdGhhdCBub1xuICAgICAgICAgc2VwYXJhdG9yIGNhbiBiZSBmb3VuZCB3ZSBleGl0IHRoZSBsb29wIGFuZCByZXR1cm4gdGhlIG5vIG1hdGNoXG4gICAgICAgICBjYXNlLiAqKVxuICAgICAgdHJ5XG4gICAgICAgIHdoaWxlICghaSArIHNlcF9tYXggPD0gc19tYXgpIGRvXG4gICAgICAgICAgKCogQ2hlY2sgcmVtYWluaW5nIFtvbl0gY2hhcnMgbWF0Y2gsIGFjY2VzcyB0byB1bnNhZmUgcyAoIWkgKyAhaykgaXNcbiAgICAgICAgICAgICBndWFyYW50ZWVkIGJ5IGxvb3AgaW52YXJpYW50LiAqKVxuICAgICAgICAgIGlmIHVuc2FmZV9nZXQgcyAhaSA8PiB1bnNhZmVfZ2V0IG9uIDAgdGhlbiBpbmNyIGkgZWxzZSBiZWdpblxuICAgICAgICAgICAgayA6PSAxO1xuICAgICAgICAgICAgd2hpbGUgKCFrIDw9IHNlcF9tYXggJiYgdW5zYWZlX2dldCBzICghaSArICFrKSA9IHVuc2FmZV9nZXQgb24gIWspXG4gICAgICAgICAgICBkbyBpbmNyIGsgZG9uZTtcbiAgICAgICAgICAgIGlmICFrIDw9IHNlcF9tYXggdGhlbiAoKiBubyBtYXRjaCAqKSBpbmNyIGkgZWxzZSByYWlzZSBFeGl0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGRvbmU7XG4gICAgICAgIE5vbmUgKCogbm8gbWF0Y2ggaW4gdGhlIHdob2xlIHN0cmluZy4gKilcbiAgICAgIHdpdGhcbiAgICAgIHwgRXhpdCAtPiAoKiBpIGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlcGFyYXRvciAqKVxuICAgICAgICBsZXQgbGVmdF9lbmQgPSAhaSAtIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X3N0YXJ0ID0gIWkgKyBzZXBfbWF4ICsgMSBpblxuICAgICAgICBTb21lIChzdWIgcyAwIChsZWZ0X2VuZCArIDEpLFxuICAgICAgICAgICAgICBzdWIgcyByaWdodF9zdGFydCAoc19tYXggLSByaWdodF9zdGFydCArIDEpKVxuXG5sZXQgcmN1dCBzIH5vbiA9XG4gIGxldCBzZXBfbWF4ID0gbGVuZ3RoIG9uIC0gMSBpblxuICBpZiBzZXBfbWF4IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nZXh0LnJjdXQ6IGVtcHR5IHNlcGFyYXRvclwiIGVsc2VcbiAgICBsZXQgc19tYXggPSBsZW5ndGggcyAtIDEgaW5cbiAgICBpZiBzX21heCA8IDAgdGhlbiBOb25lIGVsc2VcbiAgICAgIGxldCBrID0gcmVmIDAgaW5cbiAgICAgIGxldCBpID0gcmVmIHNfbWF4IGluXG4gICAgICAoKiBXZSBydW4gZnJvbSB0aGUgZW5kIG9mIFtzXSB0byB0aGUgYmVnaW5uaW5nIHdpdGggW2ldIHRyeWluZyB0b1xuICAgICAgICAgbWF0Y2ggdGhlIGxhc3QgY2hhcmFjdGVyIG9mIFtvbl0gaW4gW3NdLiBJZiB0aGlzIG1hdGNoZXMsIHdlXG4gICAgICAgICB2ZXJpZnkgdGhhdCB0aGUgd2hvbGUgW29uXSBpcyBtYXRjaGVkIHVzaW5nIFtrXSAod2UgZG8gdGhhdFxuICAgICAgICAgYmFja3dhcmRzKS4gIElmIGl0IGRvZXNuJ3QgbWF0Y2ggd2UgY29udGludWUgdG8gbG9vayBmb3IgW29uXVxuICAgICAgICAgd2l0aCBbaV0uICBJZiBpdCBtYXRjaGVzIHdlIGV4aXQgdGhlIGxvb3AgYW5kIGV4dHJhY3QgYVxuICAgICAgICAgc3Vic3RyaW5nIGZyb20gdGhlIHN0YXJ0IG9mIFtzXSB0byB0aGUgcG9zaXRpb24gYmVmb3JlIHRoZVxuICAgICAgICAgW29uXSB3ZSBmb3VuZCBhbmQgYW5vdGhlciBmcm9tIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgW29uXSB3ZVxuICAgICAgICAgZm91bmQgdG8gZW5kIG9mIHN0cmluZy4gIElmIFtpXSBpcyBzdWNoIHRoYXQgbm8gc2VwYXJhdG9yIGNhblxuICAgICAgICAgYmUgZm91bmQgd2UgZXhpdCB0aGUgbG9vcCBhbmQgcmV0dXJuIHRoZSBubyBtYXRjaCBjYXNlLiAqKVxuICAgICAgdHJ5XG4gICAgICAgIHdoaWxlICghaSA+PSBzZXBfbWF4KSBkb1xuICAgICAgICAgIGlmIHVuc2FmZV9nZXQgcyAhaSA8PiB1bnNhZmVfZ2V0IG9uIHNlcF9tYXggdGhlbiBkZWNyIGkgZWxzZSBiZWdpblxuICAgICAgICAgICAgKCogQ2hlY2sgcmVtYWluaW5nIFtvbl0gY2hhcnMgbWF0Y2gsIGFjY2VzcyB0byB1bnNhZmVfZ2V0XG4gICAgICAgICAgICAgICBzIChzZXBfc3RhcnQgKyAhaykgaXMgZ3VhcmFudGVlZCBieSBsb29wIGludmFyaWFudC4gKilcbiAgICAgICAgICAgIGxldCBzZXBfc3RhcnQgPSAhaSAtIHNlcF9tYXggaW5cbiAgICAgICAgICAgIGsgOj0gc2VwX21heCAtIDE7XG4gICAgICAgICAgICB3aGlsZSAoIWsgPj0gMCAmJiB1bnNhZmVfZ2V0IHMgKHNlcF9zdGFydCArICFrKSA9IHVuc2FmZV9nZXQgb24gIWspXG4gICAgICAgICAgICBkbyBkZWNyIGsgZG9uZTtcbiAgICAgICAgICAgIGlmICFrID49IDAgdGhlbiAoKiBubyBtYXRjaCAqKSBkZWNyIGkgZWxzZSByYWlzZSBFeGl0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGRvbmU7XG4gICAgICAgIE5vbmUgKCogbm8gbWF0Y2ggaW4gdGhlIHdob2xlIHN0cmluZy4gKilcbiAgICAgIHdpdGhcbiAgICAgIHwgRXhpdCAtPiAoKiBpIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHNlcGFyYXRvciAqKVxuICAgICAgICBsZXQgbGVmdF9lbmQgPSAhaSAtIHNlcF9tYXggLSAxIGluXG4gICAgICAgIGxldCByaWdodF9zdGFydCA9ICFpICsgMSBpblxuICAgICAgICBTb21lIChzdWIgcyAwIChsZWZ0X2VuZCArIDEpLFxuICAgICAgICAgICAgICBzdWIgcyByaWdodF9zdGFydCAoc19tYXggLSByaWdodF9zdGFydCArIDEpKVxuXG5sZXQgY2hvcF9wcmVmaXggcyB+cHJlZml4ID1cbiAgbGV0IHByZWZpeF9sID0gU3RyaW5nLmxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHN0cmluZ19sID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIHByZWZpeF9sID4gc3RyaW5nX2wgdGhlbiBOb25lXG4gIGVsc2VcbiAgICB0cnlcbiAgICAgIGZvciBpID0gMCB0byBwcmVmaXhfbCAtIDEgZG9cbiAgICAgICAgaWYgcy5baV0gPD4gcHJlZml4LltpXSB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICBkb25lO1xuICAgICAgU29tZSAoU3RyaW5nLnN1YiBzIHByZWZpeF9sIChzdHJpbmdfbCAtIHByZWZpeF9sKSlcbiAgICB3aXRoIF8gLT4gTm9uZVxuXG5sZXQgZHJvcCBzIG4gPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBuID49IGxcbiAgdGhlbiBcIlwiXG4gIGVsc2UgU3RyaW5nLnN1YiBzIG4gKGwgLSBuKVxuXG5sZXQgdGFrZSBzIG4gPVxuICBpZiBuID49IFN0cmluZy5sZW5ndGggc1xuICB0aGVuIHNcbiAgZWxzZSBTdHJpbmcuc3ViIHMgMCBuXG4iLCJ0eXBlIGJpZ3N0cmluZyA9XG4gIChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbnR5cGUgdCA9IGJpZ3N0cmluZ1xuXG5sZXQgY3JlYXRlIHNpemUgPSBCaWdhcnJheS4oQXJyYXkxLmNyZWF0ZSBjaGFyIGNfbGF5b3V0IHNpemUpXG5sZXQgZW1wdHkgICAgICAgPSBjcmVhdGUgMFxuXG5tb2R1bGUgQkExID0gQmlnYXJyYXkuQXJyYXkxXG5cbmxldCBsZW5ndGggdCA9IEJBMS5kaW0gdFxuXG5leHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV9yZWZfMVwiXG5leHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGNoYXIgICAgICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0ICAgICAgICAgICAgOiB0ICAgICAgIC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X3RvX2JpZ3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3RvX2J5dGVzICAgOiB0ICAgICAgIC0+IHNyY19vZmY6aW50IC0+IEJ5dGVzLnQgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzXCIgICAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zyb21fYnl0ZXMgOiBCeXRlcy50IC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcIiAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIDogc3RyaW5nIC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcIiAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXAgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gaW50ID1cbiAgXCJiaWdzdHJpbmdhZl9tZW1jbXBfYmlnc3RyaW5nXCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcF9zdHJpbmcgOiB0IC0+IGludCAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiBpbnQgPVxuICBcImJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY2hyIDogdCAtPiBpbnQgLT4gY2hhciAtPiBpbnQgLT4gaW50ID1cbiAgXCJiaWdzdHJpbmdhZl9tZW1jaHJcIiBbQEBub2FsbG9jXVxuXG5sZXQgc3ViIHQgfm9mZiB+bGVuID1cbiAgQkExLnN1YiB0IG9mZiBsZW5cblxubGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfYm91bmRzIG9wIGJ1ZmZlcl9sZW4gb2ZmIGxlbiA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIkJpZ3N0cmluZ2FmLiVzIGludmFsaWQgcmFuZ2U6IHsgYnVmZmVyX2xlbjogJWQsIG9mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3AgYnVmZmVyX2xlbiBvZmYgbGVuXG4gIGluXG4gIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IG1lc3NhZ2UpXG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9ib3VuZHNfYmxpdCBvcCBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbiA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIkJpZ3N0cmluZ2FmLiVzIGludmFsaWQgcmFuZ2U6IHsgc3JjX2xlbjogJWQsIHNyY19vZmY6ICVkLCBkc3RfbGVuOiAlZCwgZHN0X29mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3Agc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW5cbiAgaW5cbiAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgbWVzc2FnZSlcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2JvdW5kc19tZW1jbXAgb3AgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiQmlnc3RyaW5nYWYuJXMgaW52YWxpZCByYW5nZTogeyBidWYxX2xlbjogJWQsIGJ1ZjFfb2ZmOiAlZCwgYnVmMl9sZW46ICVkLCBidWYyX29mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3AgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuXG4gIGluXG4gIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IG1lc3NhZ2UpXG47O1xuXG4oKiBBIG5vdGUgb24gYm91bmRzIGNoZWNraW5nLlxuICpcbiAqIFRoZSBjb2RlIHNob3VsZCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIGJsaXQgZG9lc24ndFxuICogcnVuIG9mZiB0aGUgZW5kIG9mIHRoZSBpbnB1dCBidWZmZXI6XG4gKlxuICogICB7W29mZiArIGxlbiA8PSBidWZmZXJfbGVuXX1cbiAqXG4gKiBIb3dldmVyLCB0aGlzIG1heSBsZWFkIHRvIGFuIGludGVnZXIgb3ZlcmZsb3cgZm9yIGxhcmdlIHZhbHVlcyBvZiBbb2ZmXSxcbiAqIGUuZy4sIFttYXhfaW50XSwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgY29tcGFyaXNvbiB0byByZXR1cm4gW3RydWVdIHdoZW4gaXRcbiAqIHNob3VsZCByZWFsbHkgcmV0dXJuIFtmYWxzZV0uXG4gKlxuICogQW4gZXF1aXZhbGVudCBjb21wYXJpc29uIHRoYXQgZG9lcyBub3QgcnVuIGludG8gdGhpcyBpbnRlZ2VyIG92ZXJmbG93XG4gKiBwcm9ibGVtIGlzOlxuICpcbiAqICAge1tidWZmZXJfbGVuIC0gb2ZmID0+IGxlbl19XG4gKlxuICogVGhpcyBpcyBjaGVja2luZyB0aGF0IHRoZSBpbnB1dCBidWZmZXIsIGxlc3MgdGhlIG9mZnNldCwgaXMgc3VmZmljaWVudGx5XG4gKiBsb25nIHRvIHBlcmZvcm0gdGhlIGJsaXQuIFNpbmNlIHRoZSBleHByZXNzaW9uIGlzIHN1YnRyYWN0aW5nIFtvZmZdIHJhdGhlclxuICogdGhhbiBhZGRpbmcgaXQsIGl0IGRvZXNuJ3Qgc3VmZmVyIGZyb20gdGhlIG92ZXJmbG93IHRoYXQgdGhlIHByZXZpb3VzXG4gKiBpbmVxdWFsaXR5IGRpZC4gQXMgbG9uZyBhcyB0aGVyZSBpcyBhIGNoZWNrIHRvIGVuc3VyZSB0aGF0IFtvZmZdIGlzIG5vdFxuICogbmVnYXRpdmUsIGl0IHdvbid0IHVuZGVyZmxvdyBlaXRoZXIuICopXG5cbmxldCBjb3B5IHQgfm9mZiB+bGVuID1cbiAgbGV0IGJ1ZmZlcl9sZW4gPSBsZW5ndGggdCBpblxuICBpZiBsZW4gPCAwIHx8IG9mZiA8IDAgfHwgYnVmZmVyX2xlbiAtIG9mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwiY29weVwiIGJ1ZmZlcl9sZW4gb2ZmIGxlbjtcbiAgbGV0IGRzdCA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXQgdCB+c3JjX29mZjpvZmYgZHN0IH5kc3Rfb2ZmOjAgfmxlbjtcbiAgZHN0XG47O1xuXG5sZXQgc3Vic3RyaW5nIHQgfm9mZiB+bGVuID1cbiAgbGV0IGJ1ZmZlcl9sZW4gPSBsZW5ndGggdCBpblxuICBpZiBsZW4gPCAwIHx8IG9mZiA8IDAgfHwgYnVmZmVyX2xlbiAtIG9mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwic3Vic3RyaW5nXCIgYnVmZmVyX2xlbiBvZmYgbGVuO1xuICBsZXQgYiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgdCB+c3JjX29mZjpvZmYgYiB+ZHN0X29mZjowIH5sZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYlxuOztcblxubGV0IHRvX3N0cmluZyB0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIGxldCBiID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF90b19ieXRlcyB0IH5zcmNfb2ZmOjAgYiB+ZHN0X29mZjowIH5sZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYlxuOztcblxubGV0IG9mX3N0cmluZyB+b2ZmIH5sZW4gcyA9XG4gIGxldCBidWZmZXJfbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIGxlbiA8IDAgfHwgb2ZmIDwgMCB8fCBidWZmZXJfbGVuIC0gb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJvZl9zdHJpbmdcIiBidWZmZXJfbGVuIG9mZiBsZW47XG4gIGxldCBiID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzIH5zcmNfb2ZmOm9mZiBiIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgYlxuOztcblxubGV0IGJsaXQgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBsZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gbGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgc3JjX29mZiA8IDAgfHwgc3JjX2xlbiAtIHNyY19vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdFwiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0XCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0IHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlblxuOztcblxubGV0IGJsaXRfZnJvbV9zdHJpbmcgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBTdHJpbmcubGVuZ3RoIHNyYyBpblxuICBsZXQgZHN0X2xlbiA9IGxlbmd0aCBkc3QgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fc3RyaW5nXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9zdHJpbmdcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX3N0cmluZ1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICB1bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBibGl0X2Zyb21fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBCeXRlcy5sZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gbGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0X2Zyb21fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgYmxpdF90b19ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBCeXRlcy5sZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF90b19ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X3RvX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIGRzdF9vZmYgPCAwIHx8IGRzdF9sZW4gLSBkc3Rfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfdG9fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgbWVtY21wIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW4gPVxuICBsZXQgYnVmMV9sZW4gPSBsZW5ndGggYnVmMSBpblxuICBsZXQgYnVmMl9sZW4gPSBsZW5ndGggYnVmMiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYxX29mZiA8IDAgfHwgYnVmMV9sZW4gLSBidWYxX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcFwiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMl9vZmYgPCAwIHx8IGJ1ZjJfbGVuIC0gYnVmMl9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIHVuc2FmZV9tZW1jbXAgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlblxuOztcblxubGV0IG1lbWNtcF9zdHJpbmcgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlbiA9XG4gIGxldCBidWYxX2xlbiA9IGxlbmd0aCBidWYxIGluXG4gIGxldCBidWYyX2xlbiA9IFN0cmluZy5sZW5ndGggYnVmMiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wX3N0cmluZ1wiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMV9vZmYgPCAwIHx8IGJ1ZjFfbGVuIC0gYnVmMV9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBfc3RyaW5nXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYyX29mZiA8IDAgfHwgYnVmMl9sZW4gLSBidWYyX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcF9zdHJpbmdcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIHVuc2FmZV9tZW1jbXBfc3RyaW5nIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW5cbjs7XG5cbmxldCBtZW1jaHIgYnVmIGJ1Zl9vZmYgY2hyIGxlbiA9XG4gIGxldCBidWZfbGVuID0gbGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJtZW1jaHJcIiBidWZfbGVuIGJ1Zl9vZmYgbGVuO1xuICBpZiBidWZfb2ZmIDwgMCB8fCBidWZfbGVuIC0gYnVmX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwibWVtY2hyXCIgYnVmX2xlbiBidWZfb2ZmIGxlbjtcbiAgdW5zYWZlX21lbWNociBidWYgYnVmX29mZiBjaHIgbGVuXG5cbigqIFNhZmUgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludCAgIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQxNlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NFwiXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX2dldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19nZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0XCJcblxubW9kdWxlIFN3YXAgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50MzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50NjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfc2V0XzE2IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgYnMgb2ZmIChic3dhcDE2IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3NldF8zMiBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfc2V0XzMyIGJzIG9mZiAoYnN3YXBfaW50MzIgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfc2V0XzY0IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgYnMgb2ZmIChic3dhcF9pbnQ2NCBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19nZXRfMTYgYnMgb2ZmID1cbiAgICBic3dhcDE2IChjYW1sX2JpZ3N0cmluZ19nZXRfMTYgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19nZXRfMzIgYnMgb2ZmID1cbiAgICBic3dhcF9pbnQzMiAoY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IGJzIG9mZiA9XG4gICAgYnN3YXBfaW50NjQgKGNhbWxfYmlnc3RyaW5nX2dldF82NCBicyBvZmYpXG5cbiAgbGV0IGdldF9pbnQxNl9zaWduX2V4dGVuZGVkIHggb2ZmID1cbiAgICAoKGNhbWxfYmlnc3RyaW5nX2dldF8xNiB4IG9mZikgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5lbmRcblxubGV0IHNldF9pbnQxNl9sZSwgc2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8xNiwgY2FtbF9iaWdzdHJpbmdfc2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfc2V0XzE2ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzE2XG5cbmxldCBzZXRfaW50MzJfbGUsIHNldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3NldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3NldF8zMiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8zMlxuXG5sZXQgc2V0X2ludDY0X2xlLCBzZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzY0LCBjYW1sX2JpZ3N0cmluZ19zZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfNjRcblxubGV0IGdldF9pbnQxNl9sZSwgZ2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8xNiwgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzE2XG5cbmxldCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9ub3N3YXAgeCBvZmYgPVxuICAoKGNhbWxfYmlnc3RyaW5nX2dldF8xNiAgICAgIHggb2ZmKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX2xlLCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9iZSAgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQgICwgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwXG4gIGVsc2UgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwLCBTd2FwLmdldF9pbnQxNl9zaWduX2V4dGVuZGVkXG5cbmxldCBnZXRfaW50MzJfbGUsIGdldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfMzIsIGNhbWxfYmlnc3RyaW5nX2dldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX2dldF8zMiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8zMlxuXG5sZXQgZ2V0X2ludDY0X2xlLCBnZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzY0LCBjYW1sX2JpZ3N0cmluZ19nZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19nZXRfNjQgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfNjRcblxuKCogVW5zYWZlIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2dVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NHVcIlxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2dVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0dVwiXG5cbm1vZHVsZSBVU3dhcCA9IHN0cnVjdFxuICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuICBleHRlcm5hbCBic3dhcF9pbnQzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuICBleHRlcm5hbCBic3dhcF9pbnQ2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IGJzIG9mZiAoYnN3YXAxNiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIGJzIG9mZiAoYnN3YXBfaW50MzIgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCBicyBvZmYgKGJzd2FwX2ludDY0IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgYnMgb2ZmID1cbiAgICBic3dhcDE2IChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiBicyBvZmYgPVxuICAgIGJzd2FwX2ludDMyIChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCBicyBvZmYgPVxuICAgIGJzd2FwX2ludDY0IChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0IGJzIG9mZilcbmVuZFxuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9sZSwgdW5zYWZlX3NldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTZcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfbGUsIHVuc2FmZV9zZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyXG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X2xlLCB1bnNhZmVfc2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NFxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9sZSwgdW5zYWZlX2dldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTZcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSB4IG9mZiA9XG4gICgodW5zYWZlX2dldF9pbnQxNl9sZSB4IG9mZikgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfYmUgeCBvZmYgPVxuICAoKHVuc2FmZV9nZXRfaW50MTZfYmUgeCBvZmYgKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfbGUsIHVuc2FmZV9nZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyXG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2xlLCB1bnNhZmVfZ2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NFxuIiwidHlwZSAnYSBzdGF0ZSA9XG4gIHwgUGFydGlhbCBvZiAnYSBwYXJ0aWFsXG4gIHwgRG9uZSAgICBvZiBpbnQgKiAnYVxuICB8IEZhaWwgICAgb2YgaW50ICogc3RyaW5nIGxpc3QgKiBzdHJpbmdcblxuYW5kICdhIHBhcnRpYWwgPVxuICB7IGNvbW1pdHRlZCA6IGludFxuICA7IGNvbnRpbnVlICA6IEJpZ3N0cmluZ2FmLnQgLT4gb2ZmOmludCAtPiBsZW46aW50IC0+IE1vcmUudCAtPiAnYSBzdGF0ZSB9XG5cblxubGV0IHN0YXRlX3RvX29wdGlvbiB4ID0gbWF0Y2ggeCB3aXRoXG4gIHwgRG9uZShfLCB2KSAtPiBTb21lIHZcbiAgfCBGYWlsIF8gICAgIC0+IE5vbmVcbiAgfCBQYXJ0aWFsIF8gIC0+IE5vbmVcblxubGV0IGZhaWxfdG9fc3RyaW5nIG1hcmtzIGVyciA9XG4gIFN0cmluZy5jb25jYXQgXCIgPiBcIiBtYXJrcyBeIFwiOiBcIiBeIGVyclxuXG5sZXQgc3RhdGVfdG9fcmVzdWx0IHggPSBtYXRjaCB4IHdpdGhcbiAgfCBEb25lKF8sIHYpICAgICAgICAgIC0+IE9rIHZcbiAgfCBQYXJ0aWFsIF8gICAgICAgICAgIC0+IEVycm9yIFwiaW5jb21wbGV0ZSBpbnB1dFwiXG4gIHwgRmFpbChfLCBtYXJrcywgZXJyKSAtPiBFcnJvciAoZmFpbF90b19zdHJpbmcgbWFya3MgZXJyKVxuIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ29weXJpZ2h0IChjKSAyMDE3IEluaGFiaXRlZCBUeXBlIExMQy5cblxuICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgICBhcmUgbWV0OlxuXG4gICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9yc1xuICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZVxuICAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NcbiAgICBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICAgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAgICBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcbiAgICBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAgICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTilcbiAgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsXG4gICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOXG4gICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFXG4gICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG50eXBlIHQgPVxuICB7IG11dGFibGUgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA6IGludFxuICA7IGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgICAgICAgICA6IGludFxuICA7IG9mZiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludFxuICA7IGxlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludFxuICA7IGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICA6IEJpZ3N0cmluZ2FmLnRcbiAgfVxuXG5sZXQgY3JlYXRlIGJ1ZmZlciB+b2ZmIH5sZW4gfmNvbW1pdHRlZF9ieXRlcyA9XG4gIHsgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA9IGNvbW1pdHRlZF9ieXRlc1xuICA7IGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgPSBjb21taXR0ZWRfYnl0ZXNcbiAgOyBvZmZcbiAgOyBsZW5cbiAgOyBidWZmZXIgfVxuXG5sZXQgbGVuZ3RoICAgICAgICAgICAgICAgICB0ID0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzICsgdC5sZW5cbmxldCBjbGllbnRfY29tbWl0dGVkX2J5dGVzIHQgPSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXNcbmxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgPSB0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXNcblxubGV0IGNvbW1pdHRlZF9ieXRlc19kaXNjcmVwYW5jeSB0ID0gdC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIC0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzXG5sZXQgYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgIHQgPSBjb21taXR0ZWRfYnl0ZXNfZGlzY3JlcGFuY3kgdFxuXG5sZXQgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHQgPSB0LmxlbiAtIGJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IHRcblxubGV0IGludmFyaWFudCB0ID1cbiAgYXNzZXJ0IChwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgKyBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdCA9IGxlbmd0aCB0KTtcbiAgYXNzZXJ0IChwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgLSBjbGllbnRfY29tbWl0dGVkX2J5dGVzICAgdCA9IGJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IHQpO1xuOztcblxubGV0IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgPVxuICB0Lm9mZiArIHBvcyAtIHQuY2xpZW50X2NvbW1pdHRlZF9ieXRlc1xuXG5sZXQgYXBwbHkgdCBwb3MgbGVuIH5mID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgZiB0LmJ1ZmZlciB+b2ZmIH5sZW5cblxubGV0IHVuc2FmZV9nZXRfY2hhciB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2xlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9sZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfbGUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2xlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9sZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfbGUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2JlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9iZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfYmUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2JlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9iZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfYmUgdC5idWZmZXIgb2ZmXG5cbmxldCBjb3VudF93aGlsZSB0IHBvcyB+ZiA9XG4gIGxldCBidWZmZXIgPSB0LmJ1ZmZlciBpblxuICBsZXQgb2ZmICAgID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBsZXQgaSAgICAgID0gcmVmIG9mZiBpblxuICBsZXQgbGltaXQgID0gdC5vZmYgKyB0LmxlbiBpblxuICB3aGlsZSAhaSA8IGxpbWl0ICYmIGYgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgYnVmZmVyICFpKSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICAhaSAtIG9mZlxuOztcblxubGV0IGNvbW1pdCB0IHBvcyA9XG4gIHQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA8LSBwb3Ncbjs7XG4iLCJtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFBhcnRpYWwgb2YgJ2EgcGFydGlhbFxuICAgIHwgTGF6eSAgICBvZiAnYSB0IExhenkudFxuICAgIHwgRG9uZSAgICBvZiBpbnQgKiAnYVxuICAgIHwgRmFpbCAgICBvZiBpbnQgKiBzdHJpbmcgbGlzdCAqIHN0cmluZ1xuXG4gIGFuZCAnYSBwYXJ0aWFsID1cbiAgICB7IGNvbW1pdHRlZCA6IGludFxuICAgIDsgY29udGludWUgIDogQmlnc3RyaW5nYWYudCAtPiBvZmY6aW50IC0+IGxlbjppbnQgLT4gTW9yZS50IC0+ICdhIHQgfVxuXG5lbmRcbnR5cGUgJ2Egd2l0aF9zdGF0ZSA9IElucHV0LnQgLT4gIGludCAtPiBNb3JlLnQgLT4gJ2FcblxudHlwZSAnYSBmYWlsdXJlID0gKHN0cmluZyBsaXN0IC0+IHN0cmluZyAtPiAnYSBTdGF0ZS50KSB3aXRoX3N0YXRlXG50eXBlICgnYSwgJ3IpIHN1Y2Nlc3MgPSAoJ2EgLT4gJ3IgU3RhdGUudCkgd2l0aF9zdGF0ZVxuXG50eXBlICdhIHQgPVxuICB7IHJ1biA6ICdyLiAoJ3IgZmFpbHVyZSAtPiAoJ2EsICdyKSBzdWNjZXNzIC0+ICdyIFN0YXRlLnQpIHdpdGhfc3RhdGUgfVxuXG5sZXQgZmFpbF9rICAgIGlucHV0IHBvcyBfIG1hcmtzIG1zZyA9XG4gIFN0YXRlLkZhaWwocG9zIC0gSW5wdXQuY2xpZW50X2NvbW1pdHRlZF9ieXRlcyBpbnB1dCwgbWFya3MsIG1zZylcbmxldCBzdWNjZWVkX2sgaW5wdXQgcG9zIF8gICAgICAgdiAgID1cbiAgU3RhdGUuRG9uZShwb3MgLSBJbnB1dC5jbGllbnRfY29tbWl0dGVkX2J5dGVzIGlucHV0LCB2KVxuXG5sZXQgcmVjIHRvX2V4cG9ydGVkX3N0YXRlID0gZnVuY3Rpb25cbiAgfCBTdGF0ZS5QYXJ0aWFsIHtjb21taXR0ZWQ7Y29udGludWV9IC0+XG4gICAgIEV4cG9ydGVkX3N0YXRlLlBhcnRpYWxcbiAgICAgICB7IGNvbW1pdHRlZFxuICAgICAgIDsgY29udGludWUgPVxuICAgICAgICAgICBmdW4gYnMgfm9mZiB+bGVuIG1vcmUgLT5cbiAgICAgICAgICAgdG9fZXhwb3J0ZWRfc3RhdGUgKGNvbnRpbnVlIGJzIH5vZmYgfmxlbiBtb3JlKX1cbiAgfCBTdGF0ZS5Eb25lIChpLHgpIC0+IEV4cG9ydGVkX3N0YXRlLkRvbmUgKGkseClcbiAgfCBTdGF0ZS5GYWlsIChpLCBzbCwgcykgLT4gRXhwb3J0ZWRfc3RhdGUuRmFpbCAoaSwgc2wsIHMpXG4gIHwgU3RhdGUuTGF6eSB4IC0+IHRvX2V4cG9ydGVkX3N0YXRlIChMYXp5LmZvcmNlIHgpXG5cbmxldCBwYXJzZSBwID1cbiAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIEJpZ3N0cmluZ2FmLmVtcHR5IH5jb21taXR0ZWRfYnl0ZXM6MCB+b2ZmOjAgfmxlbjowIGluXG4gIHRvX2V4cG9ydGVkX3N0YXRlIChwLnJ1biBpbnB1dCAwIEluY29tcGxldGUgZmFpbF9rIHN1Y2NlZWRfaylcblxubGV0IHBhcnNlX2JpZ3N0cmluZyBwIGlucHV0ID1cbiAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIGlucHV0IH5jb21taXR0ZWRfYnl0ZXM6MCB+b2ZmOjAgfmxlbjooQmlnc3RyaW5nYWYubGVuZ3RoIGlucHV0KSBpblxuICBFeHBvcnRlZF9zdGF0ZS5zdGF0ZV90b19yZXN1bHQgKHRvX2V4cG9ydGVkX3N0YXRlIChwLnJ1biBpbnB1dCAwIENvbXBsZXRlIGZhaWxfayBzdWNjZWVkX2spKVxuXG5tb2R1bGUgTW9uYWQgPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiB2ID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlIHZcbiAgICB9XG5cbiAgbGV0IGZhaWwgbXNnID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIF9zdWNjIC0+XG4gICAgICBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIG1zZ1xuICAgIH1cblxuICBsZXQgKD4+PSkgcCBmID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyB2ID0gKGYgdikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICAgIH1cblxuICBsZXQgKD4+fCkgcCBmID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyB2ID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyAoZiB2KSBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICAgIH1cblxuICBsZXQgKDwkPikgZiBtID1cbiAgICBtID4+fCBmXG5cbiAgbGV0ICg8Kj4pIGYgbSA9XG4gICAgKCogZiA+Pj0gZnVuIGYgLT4gbSA+PnwgZiAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MwIGlucHV0MCBwb3MwIG1vcmUwIGYgPVxuICAgICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgbSA9IHN1Y2MgaW5wdXQxIHBvczEgbW9yZTEgKGYgbSkgaW5cbiAgICAgICAgbS5ydW4gaW5wdXQwIHBvczAgbW9yZTAgZmFpbCBzdWNjMVxuICAgICAgaW5cbiAgICAgIGYucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzAgfVxuXG4gIGxldCBsaWZ0IGYgbSA9XG4gICAgZiA8JD4gbVxuXG4gIGxldCBsaWZ0MiBmIG0xIG0yID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtMSA9XG4gICAgICAgIGxldCBzdWNjMiBpbnB1dDIgcG9zMiBtb3JlMiBtMiA9IHN1Y2MgaW5wdXQyIHBvczIgbW9yZTIgKGYgbTEgbTIpIGluXG4gICAgICAgIG0yLnJ1biBpbnB1dDEgcG9zMSBtb3JlMSBmYWlsIHN1Y2MyXG4gICAgICBpblxuICAgICAgbTEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzEgfVxuXG4gIGxldCBsaWZ0MyBmIG0xIG0yIG0zID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtMSA9XG4gICAgICAgIGxldCBzdWNjMiBpbnB1dDIgcG9zMiBtb3JlMiBtMiA9XG4gICAgICAgICAgbGV0IHN1Y2MzIGlucHV0MyBwb3MzIG1vcmUzIG0zID1cbiAgICAgICAgICAgIHN1Y2MgaW5wdXQzIHBvczMgbW9yZTMgKGYgbTEgbTIgbTMpIGluXG4gICAgICAgICAgbTMucnVuIGlucHV0MiBwb3MyIG1vcmUyIGZhaWwgc3VjYzMgaW5cbiAgICAgICAgbTIucnVuIGlucHV0MSBwb3MxIG1vcmUxIGZhaWwgc3VjYzJcbiAgICAgIGluXG4gICAgICBtMS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMSB9XG5cbiAgbGV0IGxpZnQ0IGYgbTEgbTIgbTMgbTQgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0xID1cbiAgICAgICAgbGV0IHN1Y2MyIGlucHV0MiBwb3MyIG1vcmUyIG0yID1cbiAgICAgICAgICBsZXQgc3VjYzMgaW5wdXQzIHBvczMgbW9yZTMgbTMgPVxuICAgICAgICAgICAgbGV0IHN1Y2M0IGlucHV0NCBwb3M0IG1vcmU0IG00ID1cbiAgICAgICAgICAgICAgc3VjYyBpbnB1dDQgcG9zNCBtb3JlNCAoZiBtMSBtMiBtMyBtNCkgaW5cbiAgICAgICAgICAgIG00LnJ1biBpbnB1dDMgcG9zMyBtb3JlMyBmYWlsIHN1Y2M0IGluXG4gICAgICAgICAgbTMucnVuIGlucHV0MiBwb3MyIG1vcmUyIGZhaWwgc3VjYzMgaW5cbiAgICAgICAgbTIucnVuIGlucHV0MSBwb3MxIG1vcmUxIGZhaWwgc3VjYzJcbiAgICAgIGluXG4gICAgICBtMS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMSB9XG5cbiAgbGV0ICggKj4pIGEgYiA9XG4gICAgKCogYSA+Pj0gZnVuIF8gLT4gYiAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIF8gPSBiLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIGEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYydcbiAgICB9XG5cbiAgbGV0ICg8KiApIGEgYiA9XG4gICAgKCogYSA+Pj0gZnVuIHggLT4gYiA+PnwgZnVuIF8gLT4geCAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MwIGlucHV0MCBwb3MwIG1vcmUwIHggPVxuICAgICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgXyA9IHN1Y2MgaW5wdXQxIHBvczEgbW9yZTEgeCBpblxuICAgICAgICBiLnJ1biBpbnB1dDAgcG9zMCBtb3JlMCBmYWlsIHN1Y2MxXG4gICAgICBpblxuICAgICAgYS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMCB9XG5lbmRcblxubW9kdWxlIENob2ljZSA9IHN0cnVjdFxuICBsZXQgKDw/PikgcCBtYXJrID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyBtYXJrcyBtc2cgPVxuICAgICAgICBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIChtYXJrOjptYXJrcykgbXNnIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsJyBzdWNjXG4gICAgfVxuXG4gIGxldCAoPHw+KSBwIHEgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnIG1hcmtzIG1zZyA9XG4gICAgICAgICgqIFRoZSBvbmx5IHR3byBjb25zdHJ1Y3RvcnMgdGhhdCBpbnRyb2R1Y2UgbmV3IGZhaWx1cmUgY29udGludWF0aW9ucyBhcmVcbiAgICAgICAgICogWzw/Pl0gYW5kIFs8fD5dLiBJZiB0aGUgaW5pdGlhbCBpbnB1dCBwb3NpdGlvbiBpcyBsZXNzIHRoYW4gdGhlIGxlbmd0aFxuICAgICAgICAgKiBvZiB0aGUgY29tbWl0dGVkIGlucHV0LCB0aGVuIGNhbGxpbmcgdGhlIGZhaWx1cmUgY29udGludWF0aW9uIHdpbGxcbiAgICAgICAgICogaGF2ZSB0aGUgZWZmZWN0IG9mIHVud2luZGluZyBhbGwgY2hvaWNlcyBhbmQgY29sbGVjdGluZyBtYXJrcyBhbG9uZ1xuICAgICAgICAgKiB0aGUgd2F5LiAqKVxuICAgICAgICBpZiBwb3MgPCBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIGlucHV0JyB0aGVuXG4gICAgICAgICAgZmFpbCBpbnB1dCcgcG9zJyBtb3JlIG1hcmtzIG1zZ1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcS5ydW4gaW5wdXQnIHBvcyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwnIHN1Y2NcbiAgICB9XG5lbmRcblxubW9kdWxlIE1vbmFkX3VzZV9mb3JfZGVidWdnaW5nID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSBNb25hZC5yZXR1cm5cbiAgbGV0IGZhaWwgICA9IE1vbmFkLmZhaWxcbiAgbGV0ICg+Pj0pICA9IE1vbmFkLig+Pj0pXG5cbiAgbGV0ICg+PnwpIG0gZiA9IG0gPj49IGZ1biB4IC0+IHJldHVybiAoZiB4KVxuXG4gIGxldCAoPCQ+KSBmIG0gPSBtID4+fCBmXG4gIGxldCAoPCo+KSBmIG0gPSBmID4+PSBmdW4gZiAtPiBtID4+fCBmXG5cbiAgbGV0IGxpZnQgID0gKD4+fClcbiAgbGV0IGxpZnQyIGYgbTEgbTIgICAgICAgPSBmIDwkPiBtMSA8Kj4gbTJcbiAgbGV0IGxpZnQzIGYgbTEgbTIgbTMgICAgPSBmIDwkPiBtMSA8Kj4gbTIgPCo+IG0zXG4gIGxldCBsaWZ0NCBmIG0xIG0yIG0zIG00ID0gZiA8JD4gbTEgPCo+IG0yIDwqPiBtMyA8Kj4gbTRcblxuICBsZXQgKCAqPikgYSBiID0gYSA+Pj0gZnVuIF8gLT4gYlxuICBsZXQgKDwqICkgYSBiID0gYSA+Pj0gZnVuIHggLT4gYiA+PnwgZnVuIF8gLT4geFxuZW5kXG4iLCJ0eXBlIHQgPVxuICB7IG11dGFibGUgYnVmIDogQmlnc3RyaW5nYWYudFxuICA7IG11dGFibGUgb2ZmIDogaW50XG4gIDsgbXV0YWJsZSBsZW4gOiBpbnQgfVxuXG5sZXQgb2ZfYmlnc3RyaW5nIH5vZmYgfmxlbiBidWYgPVxuICBhc3NlcnQgKG9mZiA+PSAwKTtcbiAgYXNzZXJ0IChCaWdzdHJpbmdhZi5sZW5ndGggYnVmID49IGxlbiAtIG9mZik7XG4gIHsgYnVmOyBvZmY7IGxlbiB9XG5cbmxldCBjcmVhdGUgbGVuID1cbiAgb2ZfYmlnc3RyaW5nIH5vZmY6MCB+bGVuOjAgKEJpZ3N0cmluZ2FmLmNyZWF0ZSBsZW4pXG5cbmxldCB3cml0YWJsZV9zcGFjZSB0ID1cbiAgQmlnc3RyaW5nYWYubGVuZ3RoIHQuYnVmIC0gdC5sZW5cblxubGV0IHRyYWlsaW5nX3NwYWNlIHQgPVxuICBCaWdzdHJpbmdhZi5sZW5ndGggdC5idWYgLSAodC5vZmYgKyB0LmxlbilcblxubGV0IGNvbXByZXNzIHQgPVxuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdCB0LmJ1ZiB+c3JjX29mZjp0Lm9mZiB0LmJ1ZiB+ZHN0X29mZjowIH5sZW46dC5sZW47XG4gIHQub2ZmIDwtIDBcblxubGV0IGdyb3cgdCB0b19jb3B5ID1cbiAgbGV0IG9sZF9sZW4gPSBCaWdzdHJpbmdhZi5sZW5ndGggdC5idWYgaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgb2xkX2xlbiBpblxuICBsZXQgc3BhY2UgPSB3cml0YWJsZV9zcGFjZSB0IGluXG4gIHdoaWxlIHNwYWNlICsgIW5ld19sZW4gLSBvbGRfbGVuIDwgdG9fY29weSBkb1xuICAgIG5ld19sZW4gOj0gKDMgKiAhbmV3X2xlbikgLyAyXG4gIGRvbmU7XG4gIGxldCBuZXdfYnVmID0gQmlnc3RyaW5nYWYuY3JlYXRlICFuZXdfbGVuIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0IHQuYnVmIH5zcmNfb2ZmOnQub2ZmIG5ld19idWYgfmRzdF9vZmY6MCB+bGVuOnQubGVuO1xuICB0LmJ1ZiA8LSBuZXdfYnVmO1xuICB0Lm9mZiA8LSAwXG5cbmxldCBlbnN1cmUgdCB0b19jb3B5ID1cbiAgaWYgdHJhaWxpbmdfc3BhY2UgdCA8IHRvX2NvcHkgdGhlblxuICAgIGlmIHdyaXRhYmxlX3NwYWNlIHQgPj0gdG9fY29weVxuICAgIHRoZW4gY29tcHJlc3MgdFxuICAgIGVsc2UgZ3JvdyB0IHRvX2NvcHlcblxubGV0IHdyaXRlX3BvcyB0ID1cbiAgdC5vZmYgKyB0LmxlblxuXG5sZXQgZmVlZF9zdHJpbmcgdCB+b2ZmIH5sZW4gc3RyID1cbiAgYXNzZXJ0IChvZmYgPj0gMCk7XG4gIGFzc2VydCAoU3RyaW5nLmxlbmd0aCBzdHIgPj0gbGVuIC0gb2ZmKTtcbiAgZW5zdXJlIHQgbGVuO1xuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzdHIgfnNyY19vZmY6b2ZmIHQuYnVmIH5kc3Rfb2ZmOih3cml0ZV9wb3MgdCkgfmxlbjtcbiAgdC5sZW4gPC0gdC5sZW4gKyBsZW5cblxubGV0IGZlZWRfYmlnc3RyaW5nIHQgfm9mZiB+bGVuIGIgPVxuICBhc3NlcnQgKG9mZiA+PSAwKTtcbiAgYXNzZXJ0IChCaWdzdHJpbmdhZi5sZW5ndGggYiA+PSBsZW4gLSBvZmYpO1xuICBlbnN1cmUgdCBsZW47XG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0IGIgfnNyY19vZmY6b2ZmIHQuYnVmIH5kc3Rfb2ZmOih3cml0ZV9wb3MgdCkgfmxlbjtcbiAgdC5sZW4gPC0gdC5sZW4gKyBsZW5cblxubGV0IGZlZWRfaW5wdXQgdCA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyAgICBzIC0+IGZlZWRfc3RyaW5nICAgIHQgfm9mZjowIH5sZW46KFN0cmluZyAgICAgLmxlbmd0aCBzKSBzXG4gIHwgYEJpZ3N0cmluZyBiIC0+IGZlZWRfYmlnc3RyaW5nIHQgfm9mZjowIH5sZW46KEJpZ3N0cmluZ2FmLmxlbmd0aCBiKSBiXG5cbmxldCBzaGlmdCB0IG4gPVxuICBhc3NlcnQgKHQubGVuID49IG4pO1xuICB0Lm9mZiA8LSB0Lm9mZiArIG47XG4gIHQubGVuIDwtIHQubGVuIC0gblxuXG5sZXQgZm9yX3JlYWRpbmcgeyBidWY7IG9mZjsgbGVuIH0gPVxuICBCaWdzdHJpbmdhZi5zdWIgfm9mZiB+bGVuIGJ1ZlxuXG5tb2R1bGUgVW5jb25zdW1lZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgYnVmIDogQmlnc3RyaW5nYWYudFxuICAgIDsgb2ZmIDogaW50XG4gICAgOyBsZW4gOiBpbnQgfVxuZW5kXG5cbmxldCB1bmNvbnN1bWVkID8oc2hpZnQ9MCkgeyBidWY7IG9mZjsgbGVuIH0gPVxuICBhc3NlcnQgKGxlbiA+PSBzaGlmdCk7XG4gIHsgVW5jb25zdW1lZC5idWY7IG9mZiA9IG9mZiArIHNoaWZ0OyBsZW4gPSBsZW4gLSBzaGlmdCB9XG5cbmxldCBvZl91bmNvbnN1bWVkIHsgVW5jb25zdW1lZC5idWY7IG9mZjsgbGVuIH0gPVxuICB7IGJ1Zjsgb2ZmOyBsZW4gfVxuXG50eXBlIHVuY29uc3VtZWQgPSBVbmNvbnN1bWVkLnQgPVxuICB7IGJ1ZiA6IEJpZ3N0cmluZ2FmLnRcbiAgOyBvZmYgOiBpbnRcbiAgOyBsZW4gOiBpbnQgfVxuIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ29weXJpZ2h0IChjKSAyMDE2IEluaGFiaXRlZCBUeXBlIExMQy5cblxuICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgICBhcmUgbWV0OlxuXG4gICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9yc1xuICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZVxuICAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NcbiAgICBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICAgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAgICBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcbiAgICBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAgICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTilcbiAgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsXG4gICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOXG4gICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFXG4gICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG5tb2R1bGUgQmlnYXJyYXkgPSBzdHJ1Y3RcbiAgKCogRG8gbm90IGFjY2VzcyBCaWdhcnJheSBvcGVyYXRpb25zIGRpcmVjdGx5LiBJZiBhbnl0aGluZydzIG5lZWRlZCwgcmVmZXIgdG9cbiAgICogdGhlIGludGVybmFsIEJpZ3N0cmluZyBtb2R1bGUuICopXG5lbmRcblxudHlwZSBiaWdzdHJpbmcgPSBCaWdzdHJpbmdhZi50XG5cblxubW9kdWxlIFVuYnVmZmVyZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQYXJzZXJcblxuICBpbmNsdWRlIEV4cG9ydGVkX3N0YXRlXG5cbiAgdHlwZSBtb3JlID0gTW9yZS50ID1cbiAgICB8IENvbXBsZXRlXG4gICAgfCBJbmNvbXBsZXRlXG5lbmRcblxuaW5jbHVkZSBVbmJ1ZmZlcmVkXG5pbmNsdWRlIFBhcnNlci5Nb25hZFxuaW5jbHVkZSBQYXJzZXIuQ2hvaWNlXG5cbm1vZHVsZSBCdWZmZXJlZCA9IHN0cnVjdFxuICB0eXBlIHVuY29uc3VtZWQgPSBCdWZmZXJpbmcudW5jb25zdW1lZCA9XG4gICAgeyBidWYgOiBiaWdzdHJpbmdcbiAgICA7IG9mZiA6IGludFxuICAgIDsgbGVuIDogaW50IH1cblxuICB0eXBlIGlucHV0ID1cbiAgICBbIGBCaWdzdHJpbmcgb2YgYmlnc3RyaW5nXG4gICAgfCBgU3RyaW5nICAgIG9mIHN0cmluZyBdXG5cbiAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgfCBQYXJ0aWFsIG9mIChbIGlucHV0IHwgYEVvZiBdIC0+ICdhIHN0YXRlKVxuICAgIHwgRG9uZSAgICBvZiB1bmNvbnN1bWVkICogJ2FcbiAgICB8IEZhaWwgICAgb2YgdW5jb25zdW1lZCAqIHN0cmluZyBsaXN0ICogc3RyaW5nXG5cbiAgbGV0IGZyb21fdW5idWZmZXJlZF9zdGF0ZSB+ZiBidWZmZXJpbmcgPSBmdW5jdGlvblxuICAgIHwgVW5idWZmZXJlZC5QYXJ0aWFsIHAgICAgICAgICAtPiBQYXJ0aWFsIChmIHApXG4gICAgfCBVbmJ1ZmZlcmVkLkRvbmUoY29uc3VtZWQsIHYpIC0+XG4gICAgICBsZXQgdW5jb25zdW1lZCA9IEJ1ZmZlcmluZy51bmNvbnN1bWVkIH5zaGlmdDpjb25zdW1lZCBidWZmZXJpbmcgaW5cbiAgICAgIERvbmUodW5jb25zdW1lZCwgdilcbiAgICB8IFVuYnVmZmVyZWQuRmFpbChjb25zdW1lZCwgbWFya3MsIG1zZykgLT5cbiAgICAgIGxldCB1bmNvbnN1bWVkID0gQnVmZmVyaW5nLnVuY29uc3VtZWQgfnNoaWZ0OmNvbnN1bWVkIGJ1ZmZlcmluZyBpblxuICAgICAgRmFpbCh1bmNvbnN1bWVkLCBtYXJrcywgbXNnKVxuXG4gIGxldCBwYXJzZSA/KGluaXRpYWxfYnVmZmVyX3NpemU9MHgxMDAwKSBwID1cbiAgICBpZiBpbml0aWFsX2J1ZmZlcl9zaXplIDwgMSB0aGVuXG4gICAgICBmYWlsd2l0aCBcInBhcnNlOiBpbnZhbGlkIGFyZ3VtZW50LCBpbml0aWFsX2J1ZmZlcl9zaXplIDwgMVwiO1xuICAgIGxldCBidWZmZXJpbmcgPSBCdWZmZXJpbmcuY3JlYXRlIGluaXRpYWxfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgcmVjIGYgcCBpbnB1dCA9XG4gICAgICBCdWZmZXJpbmcuc2hpZnQgYnVmZmVyaW5nIHAuY29tbWl0dGVkO1xuICAgICAgbGV0IG1vcmUgOiBNb3JlLnQgPVxuICAgICAgICBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICAgIHwgYEVvZiAgICAgICAgICAgIC0+IENvbXBsZXRlXG4gICAgICAgIHwgI2lucHV0IGFzIGlucHV0IC0+XG4gICAgICAgICAgQnVmZmVyaW5nLmZlZWRfaW5wdXQgYnVmZmVyaW5nIGlucHV0O1xuICAgICAgICAgIEluY29tcGxldGVcbiAgICAgIGluXG4gICAgICBsZXQgZm9yX3JlYWRpbmcgPSBCdWZmZXJpbmcuZm9yX3JlYWRpbmcgYnVmZmVyaW5nIGluXG4gICAgICBwLmNvbnRpbnVlIGZvcl9yZWFkaW5nIH5vZmY6MCB+bGVuOihCaWdzdHJpbmdhZi5sZW5ndGggZm9yX3JlYWRpbmcpIG1vcmVcbiAgICAgIHw+IGZyb21fdW5idWZmZXJlZF9zdGF0ZSBidWZmZXJpbmcgfmZcbiAgICBpblxuICAgIFVuYnVmZmVyZWQucGFyc2UgcFxuICAgIHw+IGZyb21fdW5idWZmZXJlZF9zdGF0ZSBidWZmZXJpbmcgfmZcblxuICBsZXQgZmVlZCBzdGF0ZSBpbnB1dCA9XG4gICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgIHwgUGFydGlhbCBrIC0+IGsgaW5wdXRcbiAgICB8IEZhaWwodW5jb25zdW1lZCwgbWFya3MsIG1zZykgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgIHwgYEVvZiAgIC0+IHN0YXRlXG4gICAgICB8ICNpbnB1dCBhcyBpbnB1dCAtPlxuICAgICAgICBsZXQgYnVmZmVyaW5nID0gQnVmZmVyaW5nLm9mX3VuY29uc3VtZWQgdW5jb25zdW1lZCBpblxuICAgICAgICBCdWZmZXJpbmcuZmVlZF9pbnB1dCBidWZmZXJpbmcgaW5wdXQ7XG4gICAgICAgIEZhaWwoQnVmZmVyaW5nLnVuY29uc3VtZWQgYnVmZmVyaW5nLCBtYXJrcywgbXNnKVxuICAgICAgZW5kXG4gICAgfCBEb25lKHVuY29uc3VtZWQsIHYpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICB8IGBFb2YgICAtPiBzdGF0ZVxuICAgICAgfCAjaW5wdXQgYXMgaW5wdXQgLT5cbiAgICAgICAgbGV0IGJ1ZmZlcmluZyA9IEJ1ZmZlcmluZy5vZl91bmNvbnN1bWVkIHVuY29uc3VtZWQgaW5cbiAgICAgICAgQnVmZmVyaW5nLmZlZWRfaW5wdXQgYnVmZmVyaW5nIGlucHV0O1xuICAgICAgICBEb25lKEJ1ZmZlcmluZy51bmNvbnN1bWVkIGJ1ZmZlcmluZywgdilcbiAgICAgIGVuZFxuXG4gIGxldCBzdGF0ZV90b19vcHRpb24gPSBmdW5jdGlvblxuICAgIHwgRG9uZShfLCB2KSAtPiBTb21lIHZcbiAgICB8IFBhcnRpYWwgXyAgLT4gTm9uZVxuICAgIHwgRmFpbCBfICAgICAtPiBOb25lXG5cbiAgbGV0IHN0YXRlX3RvX3Jlc3VsdCA9IGZ1bmN0aW9uXG4gICAgfCBQYXJ0aWFsIF8gICAgICAgICAgIC0+IEVycm9yIFwiaW5jb21wbGV0ZSBpbnB1dFwiXG4gICAgfCBEb25lKF8sIHYpICAgICAgICAgIC0+IE9rIHZcbiAgICB8IEZhaWwoXywgbWFya3MsIG1zZykgLT4gRXJyb3IgKFVuYnVmZmVyZWQuZmFpbF90b19zdHJpbmcgbWFya3MgbXNnKVxuXG4gIGxldCBzdGF0ZV90b191bmNvbnN1bWVkID0gZnVuY3Rpb25cbiAgICB8IERvbmUodW5jb25zdW1lZCwgXylcbiAgICB8IEZhaWwodW5jb25zdW1lZCwgXywgXykgLT4gU29tZSB1bmNvbnN1bWVkXG4gICAgfCBQYXJ0aWFsIF8gICAgICAgICAgICAgIC0+IE5vbmVcblxuZW5kXG5cbigqKiBCRUdJTjogZ2V0dGluZyBpbnB1dCAqKVxuXG5sZXQgcmVjIHByb21wdCBpbnB1dCBwb3MgZmFpbCBzdWNjID1cbiAgKCogW3Byb21wdF0gc2hvdWxkIG9ubHkgY2FsbCBbc3VjY10gaWYgaXQgaGFzIHJlY2VpdmVkIG1vcmUgaW5wdXQuIElmIHRoZXJlXG4gICAqIGlzIG5vIGNoYW5jZSB0aGF0IHRoZSBpbnB1dCB3aWxsIGdyb3csIGkuZS4sIFttb3JlID0gQ29tcGxldGVdLCB0aGVuXG4gICAqIFtwcm9tcHRdIHNob3VsZCBjYWxsIFtmYWlsXS4gT3RoZXJ3aXNlIChpbiB0aGUgY2FzZSB3aGVyZSB0aGUgaW5wdXRcbiAgICogaGFzbid0IGdyb3duIGJ1dCBbbW9yZSA9IEluY29tcGxldGVdIGp1c3QgcHJvbXB0IGFnYWluLiAqKVxuICBsZXQgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzID0gSW5wdXQucGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIGlucHV0IGluXG4gIGxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzICAgPSBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzICAgaW5wdXQgaW5cbiAgKCogVGhlIGNvbnRpbnVhdGlvbiBzaG91bGQgbm90IGhvbGQgYW55IHJlZmVyZW5jZXMgdG8gaW5wdXQgYWJvdmUuICopXG4gIGxldCBjb250aW51ZSBpbnB1dCB+b2ZmIH5sZW4gbW9yZSA9XG4gICAgaWYgbGVuIDwgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHRoZW5cbiAgICAgIGZhaWx3aXRoIFwicHJvbXB0OiBpbnB1dCBzaHJ1bmshXCI7XG4gICAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIGlucHV0IH5vZmYgfmxlbiB+Y29tbWl0dGVkX2J5dGVzOnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5cbiAgICBpZiBsZW4gPSBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdGhlblxuICAgICAgbWF0Y2ggKG1vcmUgOiBNb3JlLnQpIHdpdGhcbiAgICAgIHwgQ29tcGxldGUgICAtPiBmYWlsIGlucHV0IHBvcyBNb3JlLkNvbXBsZXRlXG4gICAgICB8IEluY29tcGxldGUgLT4gcHJvbXB0IGlucHV0IHBvcyBmYWlsIHN1Y2NcbiAgICBlbHNlXG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlXG4gIGluXG4gIFN0YXRlLlBhcnRpYWwgeyBjb21taXR0ZWQgPSBJbnB1dC5ieXRlc19mb3JfY2xpZW50X3RvX2NvbW1pdCBpbnB1dDsgY29udGludWUgfVxuXG5sZXQgZGVtYW5kX2lucHV0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbWF0Y2ggKG1vcmUgOiBNb3JlLnQpIHdpdGhcbiAgICB8IENvbXBsZXRlICAgLT4gZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIm5vdCBlbm91Z2ggaW5wdXRcIlxuICAgIHwgSW5jb21wbGV0ZSAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyAoKVxuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID0gZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyBbXSBcIm5vdCBlbm91Z2ggaW5wdXRcIiBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbmxldCBlbnN1cmVfc3VzcGVuZGVkIG4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjID1cbiAgbGV0IHJlYyBnbyA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCcgc3VjYycgLT5cbiAgICAgIGlmIHBvcycgKyBuIDw9IElucHV0Lmxlbmd0aCBpbnB1dCcgdGhlblxuICAgICAgICBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyAoKVxuICAgICAgZWxzZVxuICAgICAgICAoZGVtYW5kX2lucHV0ICo+IGdvKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCcgc3VjYydcbiAgICB9XG4gIGluXG4gIChkZW1hbmRfaW5wdXQgKj4gZ28pLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2NcblxubGV0IHVuc2FmZV9hcHBseSBsZW4gfmYgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIChJbnB1dC5hcHBseSBpbnB1dCBwb3MgbGVuIH5mKVxuICB9XG5cbmxldCB1bnNhZmVfYXBwbHlfb3B0IGxlbiB+ZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIG1hdGNoIElucHV0LmFwcGx5IGlucHV0IHBvcyBsZW4gfmYgd2l0aFxuICAgIHwgRXJyb3IgZSAtPiBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIGVcbiAgICB8IE9rICAgIHggLT4gc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIHhcbiAgfVxuXG5sZXQgZW5zdXJlIG4gcCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGlmIHBvcyArIG4gPD0gSW5wdXQubGVuZ3RoIGlucHV0XG4gICAgdGhlbiBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2NcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKCkgPSBwLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIGVuc3VyZV9zdXNwZW5kZWQgbiBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxuKCoqIEVORDogZ2V0dGluZyBpbnB1dCAqKVxuXG5sZXQgYXRfZW5kX29mX2lucHV0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgXyBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgZmFsc2VcbiAgICBlbHNlIG1hdGNoIG1vcmUgd2l0aFxuICAgIHwgQ29tcGxldGUgLT4gc3VjYyBpbnB1dCBwb3MgbW9yZSB0cnVlXG4gICAgfCBJbmNvbXBsZXRlIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIGZhbHNlXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIHRydWUgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgZW5kX29mX2lucHV0ID1cbiAgYXRfZW5kX29mX2lucHV0XG4gID4+PSBmdW5jdGlvblxuICAgIHwgdHJ1ZSAgLT4gcmV0dXJuICgpXG4gICAgfCBmYWxzZSAtPiBmYWlsIFwiZW5kX29mX2lucHV0XCJcblxubGV0IGFkdmFuY2UgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcImFkdmFuY2VcIlxuICBlbHNlXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPiBzdWNjIGlucHV0IChwb3MgKyBuKSBtb3JlICgpIH1cbiAgICBpblxuICAgIGVuc3VyZSBuIHBcblxubGV0IHBvcyA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT4gc3VjYyBpbnB1dCBwb3MgbW9yZSBwb3MgfVxuXG5sZXQgYXZhaWxhYmxlID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKElucHV0Lmxlbmd0aCBpbnB1dCAtIHBvcylcbiAgfVxuXG5sZXQgY29tbWl0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIElucHV0LmNvbW1pdCBpbnB1dCBwb3M7XG4gICAgc3VjYyBpbnB1dCBwb3MgbW9yZSAoKSB9XG5cbigqIERvIG5vdCB1c2UgdGhpcyBpZiBbcF0gY29udGFpbnMgYSBbY29tbWl0XS4gKilcbmxldCB1bnNhZmVfbG9va2FoZWFkIHAgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgc3VjYycgaW5wdXQnIF8gbW9yZScgdiA9IHN1Y2MgaW5wdXQnIHBvcyBtb3JlJyB2IGluXG4gICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJyB9XG5cbmxldCBwZWVrX2NoYXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKFNvbWUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpKVxuICAgIGVsc2UgaWYgbW9yZSA9IENvbXBsZXRlIHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgKFNvbWUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCcgcG9zJykpXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIE5vbmUgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG4oKiBUaGlzIHBhcnNlciBpcyB0b28gaW1wb3J0YW50IHRvIG5vdCBiZSBvcHRpbWl6ZWQuIERvIGEgY3VzdG9tIGpvYi4gKilcbmxldCByZWMgcGVla19jaGFyX2ZhaWwgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXRcbiAgICB0aGVuIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpID1cbiAgICAgICAgcGVla19jaGFyX2ZhaWwucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgZW5zdXJlX3N1c3BlbmRlZCAxIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG5sZXQgc2F0aXNmeSBmID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgaWYgZiBjXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgY1xuICAgICAgZWxzZSBQcmludGYua3NwcmludGYgKGZhaWwgaW5wdXQgcG9zIG1vcmUgW10pIFwic2F0aXNmeTogJUNcIiBjXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpID1cbiAgICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQnIHBvcycgaW5cbiAgICAgICAgaWYgZiBjXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCcgKHBvcycgKyAxKSBtb3JlJyBjXG4gICAgICAgIGVsc2UgUHJpbnRmLmtzcHJpbnRmIChmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdKSBcInNhdGlzZnk6ICVDXCIgY1xuICAgICAgaW5cbiAgICAgIGVuc3VyZV9zdXNwZW5kZWQgMSBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxubGV0IGNoYXIgYyA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGlmIElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgPSBjXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgY1xuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIChQcmludGYuc3ByaW50ZiBcImNoYXIgJUNcIiBjKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IG5vdF9jaGFyIGMgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYycgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBpZiBjIDw+IGMnXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgYydcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSAoUHJpbnRmLnNwcmludGYgXCJub3QgY2hhciAlQ1wiIGMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X2NoYXIgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcykgIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgaW50OCBpID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpIGluXG4gICAgICBpZiBjID0gaSBsYW5kIDB4ZmZcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjXG4gICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gKFByaW50Zi5zcHJpbnRmIFwiaW50OCAlZFwiIGkpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X3VpbnQ4ID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoQ2hhci5jb2RlIGMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X2ludDggPVxuICAoKiBodHRwczovL2dyYXBoaWNzLnN0YW5mb3JkLmVkdS9+c2VhbmRlci9iaXRoYWNrcy5odG1sI1ZhcmlhYmxlU2lnbkV4dGVuZFJpc2t5ICopXG4gIGxldCBzID0gU3lzLmludF9zaXplIC0gOCBpblxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlICgoQ2hhci5jb2RlIGMgbHNsIHMpIGFzciBzKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IHNraXAgZiA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGlmIGYgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgKClcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcInNraXBcIiB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IHJlYyBjb3VudF93aGlsZSB+aW5pdCB+ZiB+d2l0aF9idWZmZXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgbGVuICAgICAgICAgPSBJbnB1dC5jb3VudF93aGlsZSBpbnB1dCAocG9zICsgaW5pdCkgfmYgaW5cbiAgICBsZXQgaW5wdXRfbGVuICAgPSBJbnB1dC5sZW5ndGggaW5wdXQgaW5cbiAgICBsZXQgaW5pdCcgICAgICAgPSBpbml0ICsgbGVuIGluXG4gICAgKCogQ2hlY2sgaWYgdGhlIGxvb3AgdGVybWluYXRlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW5wdXRcbiAgICAgKiBidWZmZXIuIElmIHNvLCB0aGVuIHByb21wdCBmb3IgYWRkaXRpb25hbCBpbnB1dCBhbmQgY29udGludWUuICopXG4gICAgaWYgcG9zICsgaW5pdCcgPCBpbnB1dF9sZW4gfHwgbW9yZSA9IENvbXBsZXRlXG4gICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBpbml0JykgbW9yZSAoSW5wdXQuYXBwbHkgaW5wdXQgcG9zIGluaXQnIH5mOndpdGhfYnVmZmVyKVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIChjb3VudF93aGlsZSB+aW5pdDppbml0JyB+ZiB+d2l0aF9idWZmZXIpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2NcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIChwb3MnICsgaW5pdCcpIG1vcmUnIChJbnB1dC5hcHBseSBpbnB1dCcgcG9zJyBpbml0JyB+Zjp3aXRoX2J1ZmZlcilcbiAgICAgIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IHJlYyBjb3VudF93aGlsZTEgfmYgfndpdGhfYnVmZmVyID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IGxlbiAgICAgICAgID0gSW5wdXQuY291bnRfd2hpbGUgaW5wdXQgcG9zIH5mIGluXG4gICAgbGV0IGlucHV0X2xlbiAgID0gSW5wdXQubGVuZ3RoIGlucHV0IGluXG4gICAgKCogQ2hlY2sgaWYgdGhlIGxvb3AgdGVybWluYXRlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW5wdXRcbiAgICAgKiBidWZmZXIuIElmIHNvLCB0aGVuIHByb21wdCBmb3IgYWRkaXRpb25hbCBpbnB1dCBhbmQgY29udGludWUuICopXG4gICAgaWYgbGVuIDwgMVxuICAgIHRoZW5cbiAgICAgIGlmIHBvcyA8IGlucHV0X2xlbiB8fCBtb3JlID0gQ29tcGxldGVcbiAgICAgIHRoZW4gZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcImNvdW50X3doaWxlMVwiXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgICAgKGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXIpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2NcbiAgICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgICBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdIFwiY291bnRfd2hpbGUxXCJcbiAgICAgICAgaW5cbiAgICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICAgIGVsc2UgaWYgcG9zICsgbGVuIDwgaW5wdXRfbGVuIHx8IG1vcmUgPSBDb21wbGV0ZVxuICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIChJbnB1dC5hcHBseSBpbnB1dCBwb3MgbGVuIH5mOndpdGhfYnVmZmVyKVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIChjb3VudF93aGlsZSB+aW5pdDpsZW4gfmYgfndpdGhfYnVmZmVyKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyAocG9zJyArIGxlbikgbW9yZScgKElucHV0LmFwcGx5IGlucHV0JyBwb3MnIGxlbiB+Zjp3aXRoX2J1ZmZlcilcbiAgICAgIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IHN0cmluZ18gZiBzID1cbiAgKCogWFhYKHNlbGlvcG91KTogSW5lZmZpY2llbnQuIENvdWxkIGNoZWNrIHByZWZpeCBlcXVhbGl0eSB0byBzaG9ydC1jaXJjdWl0XG4gICAqIHRoZSBpby4gKilcbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBlbnN1cmUgIGxlbiAodW5zYWZlX2FwcGx5X29wdCBsZW4gfmY6KGZ1biBidWZmZXIgfm9mZiB+bGVuIC0+XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIHdoaWxlICFpIDwgbGVuICYmIENoYXIuZXF1YWwgKGYgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgYnVmZmVyIChvZmYgKyAhaSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGYgKFN0cmluZy51bnNhZmVfZ2V0IHMgIWkpKVxuICAgIGRvXG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGlmIGxlbiA9ICFpXG4gICAgdGhlbiBPayAoQmlnc3RyaW5nYWYuc3Vic3RyaW5nIGJ1ZmZlciB+b2ZmIH5sZW4pXG4gICAgZWxzZSBFcnJvciBcInN0cmluZ1wiKSlcblxubGV0IHN0cmluZyBzICAgID0gc3RyaW5nXyAoZnVuIHggLT4geCkgc1xubGV0IHN0cmluZ19jaSBzID0gc3RyaW5nXyBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbmxldCBza2lwX3doaWxlIGYgPVxuICBjb3VudF93aGlsZSB+aW5pdDowIH5mIH53aXRoX2J1ZmZlcjooZnVuIF8gfm9mZjpfIH5sZW46XyAtPiAoKSlcblxubGV0IHRha2UgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcInRha2U6IG4gPCAwXCJcbiAgZWxzZVxuICAgIGxldCBuID0gbWF4IG4gMCBpblxuICAgIGVuc3VyZSBuICh1bnNhZmVfYXBwbHkgbiB+ZjpCaWdzdHJpbmdhZi5zdWJzdHJpbmcpXG5cbmxldCB0YWtlX2JpZ3N0cmluZyBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwidGFrZV9iaWdzdHJpbmc6IG4gPCAwXCJcbiAgZWxzZVxuICAgIGxldCBuID0gbWF4IG4gMCBpblxuICAgIGVuc3VyZSBuICh1bnNhZmVfYXBwbHkgbiB+ZjpCaWdzdHJpbmdhZi5jb3B5KVxuXG5sZXQgdGFrZV9iaWdzdHJpbmdfd2hpbGUgZiA9XG4gIGNvdW50X3doaWxlIH5pbml0OjAgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLmNvcHlcblxubGV0IHRha2VfYmlnc3RyaW5nX3doaWxlMSBmID1cbiAgY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5jb3B5XG5cbmxldCB0YWtlX2JpZ3N0cmluZ190aWxsIGYgPVxuICB0YWtlX2JpZ3N0cmluZ193aGlsZSAoZnVuIGMgLT4gbm90IChmIGMpKVxuXG5sZXQgcGVla19zdHJpbmcgbiA9XG4gIHVuc2FmZV9sb29rYWhlYWQgKHRha2UgbilcblxubGV0IHRha2Vfd2hpbGUgZiA9XG4gIGNvdW50X3doaWxlIH5pbml0OjAgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xuXG5sZXQgdGFrZV93aGlsZTEgZiA9XG4gIGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5cbmxldCB0YWtlX3RpbGwgZiA9XG4gIHRha2Vfd2hpbGUgKGZ1biBjIC0+IG5vdCAoZiBjKSlcblxubGV0IGNob2ljZSA/KGZhaWx1cmVfbXNnPVwibm8gbW9yZSBjaG9pY2VzXCIpIHBzID1cbiAgTGlzdC5mb2xkX3JpZ2h0ICg8fD4pIHBzIChmYWlsIGZhaWx1cmVfbXNnKVxuXG5sZXQgZml4X2RpcmVjdCBmID1cbiAgbGV0IHJlYyBwID0gbGF6eSAoZiByKVxuICBhbmQgciA9IHsgcnVuID0gZnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAoTGF6eS5mb3JjZSBwKS5ydW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYyB9XG4gIGluXG4gIHJcblxubGV0IGZpeF9sYXp5IH5tYXhfc3RlcHMgZiA9XG4gIGxldCBzdGVwcyA9IHJlZiBtYXhfc3RlcHMgaW5cbiAgbGV0IHJlYyBwID0gbGF6eSAoZiByKVxuICBhbmQgciA9IHsgcnVuID0gZnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBkZWNyIHN0ZXBzO1xuICAgIGlmICFzdGVwcyA8IDBcbiAgICB0aGVuIChcbiAgICAgIHN0ZXBzIDo9IG1heF9zdGVwcztcbiAgICAgIFN0YXRlLkxhenkgKGxhenkgKChMYXp5LmZvcmNlIHApLnJ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjKSkpXG4gICAgZWxzZVxuICAgICAgKExhenkuZm9yY2UgcCkucnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2NcbiAgICAgICAgICB9XG4gIGluXG4gIHJcblxubGV0IGZpeCA9IG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IE5hdGl2ZSAtPiBmaXhfZGlyZWN0XG4gIHwgQnl0ZWNvZGUgLT4gZml4X2RpcmVjdFxuICB8IE90aGVyIF8gLT4gZnVuIGYgLT4gZml4X2xhenkgfm1heF9zdGVwczoyMCBmXG5cbmxldCBvcHRpb24geCBwID1cbiAgcCA8fD4gcmV0dXJuIHhcblxubGV0IGNvbnMgeCB4cyA9IHggOjogeHNcblxubGV0IHJlYyBsaXN0IHBzID1cbiAgbWF0Y2ggcHMgd2l0aFxuICB8IFtdICAgIC0+IHJldHVybiBbXVxuICB8IHA6OnBzIC0+IGxpZnQyIGNvbnMgcCAobGlzdCBwcylcblxubGV0IGNvdW50IG4gcCA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcImNvdW50OiBuIDwgMFwiXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgfCAwIC0+IHJldHVybiBbXVxuICAgICAgfCBuIC0+IGxpZnQyIGNvbnMgcCAobG9vcCAobiAtIDEpKVxuICAgIGluXG4gICAgbG9vcCBuXG5cbmxldCBtYW55IHAgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgKGxpZnQyIGNvbnMgcCBtKSA8fD4gcmV0dXJuIFtdKVxuXG5sZXQgbWFueTEgcCA9XG4gIGxpZnQyIGNvbnMgcCAobWFueSBwKVxuXG5sZXQgbWFueV90aWxsIHAgdCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICAodCAqPiByZXR1cm4gW10pIDx8PiAobGlmdDIgY29ucyBwIG0pKVxuXG5sZXQgc2VwX2J5MSBzIHAgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgbGlmdDIgY29ucyBwICgocyAqPiBtKSA8fD4gcmV0dXJuIFtdKSlcblxubGV0IHNlcF9ieSBzIHAgPVxuICAobGlmdDIgY29ucyBwICgocyAqPiBzZXBfYnkxIHMgcCkgPHw+IHJldHVybiBbXSkpIDx8PiByZXR1cm4gW11cblxubGV0IHNraXBfbWFueSBwID1cbiAgZml4IChmdW4gbSAtPlxuICAgICAgKChwID4+fCBmdW4gXyAtPiB0cnVlKSA8fD4gcmV0dXJuIGZhbHNlKSA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiBtXG4gICAgICB8IGZhbHNlIC0+IHJldHVybiAoKVxuICAgIClcblxubGV0IHNraXBfbWFueTEgcCA9XG4gIHAgKj4gc2tpcF9tYW55IHBcblxubGV0IGVuZF9vZl9saW5lID1cbiAgKGNoYXIgJ1xcbicgKj4gcmV0dXJuICgpKSA8fD4gKHN0cmluZyBcIlxcclxcblwiICo+IHJldHVybiAoKSkgPD8+IFwiZW5kX29mX2xpbmVcIlxuXG5sZXQgc2Nhbl8gc3RhdGUgZiB+d2l0aF9idWZmZXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgc3RhdGUgPSByZWYgc3RhdGUgaW5cbiAgICBsZXQgcGFyc2VyID1cbiAgICAgIGNvdW50X3doaWxlIH5pbml0OjAgfmY6KGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGYgIXN0YXRlIGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIHN0YXRlJyAtPiBzdGF0ZSA6PSBzdGF0ZSc7IHRydWUpXG4gICAgICB+d2l0aF9idWZmZXJcbiAgICAgID4+fCBmdW4geCAtPiB4LCAhc3RhdGVcbiAgICBpblxuICAgIHBhcnNlci5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIH1cblxubGV0IHNjYW4gc3RhdGUgZiA9XG4gIHNjYW5fIHN0YXRlIGYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xuXG5sZXQgc2Nhbl9zdGF0ZSBzdGF0ZSBmID1cbiAgc2Nhbl8gc3RhdGUgZiB+d2l0aF9idWZmZXI6KGZ1biBfIH5vZmY6XyB+bGVuOl8gLT4gKCkpXG4gID4+fCBmdW4gKCgpLCBzdGF0ZSkgLT4gc3RhdGVcblxubGV0IHNjYW5fc3RyaW5nIHN0YXRlIGYgPVxuICBzY2FuIHN0YXRlIGYgPj58IGZzdFxuXG5sZXQgY29uc3VtZV93aXRoIHAgZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBzdGFydCA9IHBvcyBpblxuICAgIGxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzID0gSW5wdXQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpbnB1dCAgaW5cbiAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgXyA9XG4gICAgICBpZiBwYXJzZXJfY29tbWl0dGVkX2J5dGVzIDw+IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5wdXQnXG4gICAgICB0aGVuIGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10gXCJjb25zdW1lZDogcGFyc2VyIGNvbW1pdHRlZFwiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxlbiA9IHBvcycgLSBzdGFydCBpblxuICAgICAgICBsZXQgY29uc3VtZWQgPSBJbnB1dC5hcHBseSBpbnB1dCcgc3RhcnQgbGVuIH5mIGluXG4gICAgICAgIHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgY29uc3VtZWQpXG4gICAgaW5cbiAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gIH1cblxubGV0IGNvbnN1bWVkICAgICAgICAgICBwID0gY29uc3VtZV93aXRoIHAgQmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5sZXQgY29uc3VtZWRfYmlnc3RyaW5nIHAgPSBjb25zdW1lX3dpdGggcCBCaWdzdHJpbmdhZi5jb3B5XG5cbmxldCBib3RoIGEgYiA9IGxpZnQyIChmdW4gYSBiIC0+IGEsIGIpIGEgYlxubGV0IG1hcCB0IH5mID0gdCA+PnwgZlxubGV0IGJpbmQgdCB+ZiA9IHQgPj49IGZcbmxldCBtYXAyIGEgYiB+ZiA9IGxpZnQyIGYgYSBiXG5sZXQgbWFwMyBhIGIgYyB+ZiA9IGxpZnQzIGYgYSBiIGNcbmxldCBtYXA0IGEgYiBjIGQgfmYgPSBsaWZ0NCBmIGEgYiBjIGRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgbGV0ICggPj49ICkgPSAoID4+PSApXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBib3RoID0gYm90aFxuICAgIGxldCBtYXAyID0gbWFwMlxuICAgIGxldCBtYXAzID0gbWFwM1xuICAgIGxldCBtYXA0ID0gbWFwNFxuICBlbmRcbmVuZFxuXG5sZXQgKCBsZXQrICkgPSAoID4+fCApXG5sZXQgKCBsZXQqICkgPSAoID4+PSApXG5sZXQgKCBhbmQrICkgPSBib3RoXG5cbm1vZHVsZSBCRSA9IHN0cnVjdFxuICAoKiBYWFgoc2VsaW9wb3UpOiBUaGUgcGF0dGVybiBpbiBib3RoIHRoaXMgbW9kdWxlIGFuZCBbTEVdIGFyZSBhIGNvbXByb21pc2VcbiAgICogYmV0d2VlbiBlZmZpY2llbmN5IGFuZCBjb2RlIHJldXNlLiBCeSBpbmxpbmluZyBbZW5zdXJlXSB5b3UgY2FuIHJlY292ZXJcbiAgICogYWJvdXQgMiBuYW5vc2Vjb25kcyBvbiBhdmVyYWdlLiBUaGF0IG1heSBhZGQgdXAgaW4gY2VydGFpbiBhcHBsaWNhdGlvbnMuXG4gICAqXG4gICAqIFRoaXMgcGF0dGVybiBkb2VzIG5vdCBhbGxvY2F0ZSBpbiB0aGUgZmFzdCAoc3VjY2VzcykgcGF0aC5cbiAgICogKilcbiAgbGV0IGludDE2IG4gPVxuICAgIGxldCBieXRlcyA9IDIgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW5wdXQudW5zYWZlX2dldF9pbnQxNl9iZSBpbnB1dCBwb3MgPSAobiBsYW5kIDB4ZmZmZilcbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJCRS5pbnQxNlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDMyIG4gPVxuICAgIGxldCBieXRlcyA9IDQgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50MzIuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50MzJfYmUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiQkUuaW50MzJcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQ2NCBuID1cbiAgICBsZXQgYnl0ZXMgPSA4IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDY0LmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDY0X2JlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkJFLmludDY0XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgYW55X3VpbnQxNiA9XG4gICAgZW5zdXJlIDIgKHVuc2FmZV9hcHBseSAyIH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9iZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50MTYgID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfYmUgIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQzMiAgPVxuICAgIGVuc3VyZSA0ICh1bnNhZmVfYXBwbHkgNCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfYmUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDY0ID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2JlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9mbG9hdCA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50MzIuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9iZSBicyBvZmYpKSlcblxuICBsZXQgYW55X2RvdWJsZSA9XG4gICAgZW5zdXJlIDggKHVuc2FmZV9hcHBseSA4IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50NjQuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9iZSBicyBvZmYpKSlcbmVuZFxuXG5tb2R1bGUgTEUgPSBzdHJ1Y3RcbiAgbGV0IGludDE2IG4gPVxuICAgIGxldCBieXRlcyA9IDIgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW5wdXQudW5zYWZlX2dldF9pbnQxNl9sZSBpbnB1dCBwb3MgPSAobiBsYW5kIDB4ZmZmZilcbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJMRS5pbnQxNlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDMyIG4gPVxuICAgIGxldCBieXRlcyA9IDQgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50MzIuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50MzJfbGUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiTEUuaW50MzJcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQ2NCBuID1cbiAgICBsZXQgYnl0ZXMgPSA4IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDY0LmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDY0X2xlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkxFLmludDY0XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuXG4gIGxldCBhbnlfdWludDE2ID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2xlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQxNiAgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSAgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDMyICA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9sZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50NjQgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfbGUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2Zsb2F0ID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQzMi5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2xlIGJzIG9mZikpKVxuXG4gIGxldCBhbnlfZG91YmxlID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQ2NC5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2xlIGJzIG9mZikpKVxuZW5kXG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgbGV0IHRha2UgbiBmID1cbiAgICBsZXQgbiA9IG1heCBuIDAgaW5cbiAgICBlbnN1cmUgbiAodW5zYWZlX2FwcGx5IG4gfmYpXG5cbiAgbGV0IHBlZWsgbiBmID1cbiAgICB1bnNhZmVfbG9va2FoZWFkICh0YWtlIG4gZilcblxuICBsZXQgdGFrZV93aGlsZSBjaGVjayBmID1cbiAgICBjb3VudF93aGlsZSB+aW5pdDowIH5mOmNoZWNrIH53aXRoX2J1ZmZlcjpmXG5cbiAgbGV0IHRha2Vfd2hpbGUxIGNoZWNrIGYgPVxuICAgIGNvdW50X3doaWxlMSB+ZjpjaGVjayB+d2l0aF9idWZmZXI6ZlxuXG4gIGxldCB0YWtlX3RpbGwgY2hlY2sgZiA9XG4gICAgdGFrZV93aGlsZSAoZnVuIGMgLT4gbm90IChjaGVjayBjKSkgZlxuZW5kXG5cbm1vZHVsZSBDb25zdW1lID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBQcmVmaXhcbiAgICB8IEFsbFxuZW5kXG5cbmxldCBwYXJzZV9iaWdzdHJpbmcgfmNvbnN1bWUgcCBicyA9XG4gIGxldCBwID1cbiAgICBtYXRjaCAoY29uc3VtZSA6IENvbnN1bWUudCkgd2l0aFxuICAgIHwgUHJlZml4IC0+IHBcbiAgICB8IEFsbCAtPiBwIDwqIGVuZF9vZl9pbnB1dFxuICBpblxuICBVbmJ1ZmZlcmVkLnBhcnNlX2JpZ3N0cmluZyBwIGJzXG5cbmxldCBwYXJzZV9zdHJpbmcgfmNvbnN1bWUgcCBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnMgID0gQmlnc3RyaW5nYWYuY3JlYXRlIGxlbiBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzIH5zcmNfb2ZmOjAgYnMgfmRzdF9vZmY6MCB+bGVuO1xuICBwYXJzZV9iaWdzdHJpbmcgfmNvbnN1bWUgcCBic1xuIiwiKCpcbiAqIENvcHlyaWdodCAoYykgMjAxMi0yMDE0IEFuaWwgTWFkaGF2YXBlZGR5IDxhbmlsQHJlY29pbC5vcmc+XG4gKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBEYXZpZCBTaGVldHMgPHNoZWV0c0BhbHVtLm1pdC5lZHU+XG4gKlxuICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG4gKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlXG4gKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTXG4gKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GXG4gKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUlxuICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFU1xuICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOXG4gKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRlxuICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbiAqXG4gKilcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxudHlwZSBjb21wb25lbnQgPSBbXG4gIHwgYFNjaGVtZVxuICB8IGBBdXRob3JpdHlcbiAgfCBgVXNlcmluZm8gKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcbiAgfCBgSG9zdCAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuICB8IGBQYXRoXG4gIHwgYFF1ZXJ5XG4gIHwgYFF1ZXJ5X2tleVxuICB8IGBRdWVyeV92YWx1ZVxuICB8IGBGcmFnbWVudFxuICB8IGBHZW5lcmljXG4gIHwgYEN1c3RvbSBvZiAoY29tcG9uZW50ICogc3RyaW5nICogc3RyaW5nKSAoKiAoY29tcG9uZW50ICogc2FmZSBjaGFycyAqIHVuc2FmZSBjaGFycykgKilcbl1cblxudHlwZSBwY3RfZW5jb2RlciA9IHtcbiAgICBzY2hlbWU6IGNvbXBvbmVudDtcbiAgICB1c2VyaW5mbzogY29tcG9uZW50O1xuICAgIGhvc3Q6IGNvbXBvbmVudDtcbiAgICBwYXRoOiBjb21wb25lbnQ7XG4gICAgcXVlcnlfa2V5OiBjb21wb25lbnQ7XG4gICAgcXVlcnlfdmFsdWU6IGNvbXBvbmVudDtcbiAgICBmcmFnbWVudDogY29tcG9uZW50O1xuICB9XG5cbmxldCByZWMgaXRlcl9jb25jYXQgZm4gc2VwIGJ1ZiA9IGZ1bmN0aW9uXG4gIHwgbGFzdDo6W10gLT4gZm4gYnVmIGxhc3RcbiAgfCBlbDo6cmVzdCAtPlxuICAgIGZuIGJ1ZiBlbDtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgc2VwO1xuICAgIGl0ZXJfY29uY2F0IGZuIHNlcCBidWYgcmVzdFxuICB8IFtdIC0+ICgpXG5cbmxldCByZXZfaW50ZXJqZWN0IGUgbHN0ID1cbiAgbGV0IHJlYyBhdXggYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdICAtPiBhY2NcbiAgICB8IHg6OnhzIC0+IGF1eCAoeDo6ZTo6YWNjKSB4c1xuICBpbiBtYXRjaCBsc3Qgd2l0aFxuICB8IFtdICAtPiBbXVxuICB8IGg6OnQgLT4gYXV4IFtoXSB0XG5cbmxldCBjb21wYXJlX29wdCBjIHQgdCcgPSBtYXRjaCB0LCB0JyB3aXRoXG4gIHwgTm9uZSwgICBOb25lICAgLT4gMFxuICB8IFNvbWUgXywgTm9uZSAgIC0+IDFcbiAgfCBOb25lLCAgIFNvbWUgXyAtPiAtMVxuICB8IFNvbWUgYSwgU29tZSBiIC0+IGMgYSBiXG5cbmxldCByZWMgY29tcGFyZV9saXN0IGYgdCB0JyA9IG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBbXSwgICAgW10gICAgLT4gIDBcbiAgfCBfOjpfLCAgW10gICAgLT4gIDFcbiAgfCBbXSwgICAgXzo6XyAgLT4gLTFcbiAgfCB4Ojp4cywgeTo6eXMgLT5cbiAgICBtYXRjaCBmIHggeSB3aXRoIDAgLT4gY29tcGFyZV9saXN0IGYgeHMgeXMgfCBjIC0+IGNcblxuKCoqIFNhZmUgY2hhcmFjdGVycyB0aGF0IGFyZSBhbHdheXMgYWxsb3dlZCBpbiBhIFVSSVxuICAqIFVuZm9ydHVuYXRlbHksIHRoaXMgdmFyaWVzIGRlcGVuZGluZyBvbiB3aGljaCBiaXQgb2YgdGhlIFVSSVxuICAqIGlzIGJlaW5nIHBhcnNlZCwgc28gdGhlcmUgYXJlIG11bHRpcGxlIHZhcmlhbnRzIChhbmQgdGhpc1xuICAqIHNldCBpcyBwcm9iYWJseSBub3QgZXhoYXVzdGl2ZS4gVE9ETzogY2hlY2suXG4qKVxudHlwZSBzYWZlX2NoYXJzID0gYm9vbCBhcnJheVxuXG5tb2R1bGUgdHlwZSBTY2hlbWUgPSBzaWdcbiAgdmFsIHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCA6IGNvbXBvbmVudCAtPiBzYWZlX2NoYXJzXG4gIHZhbCBub3JtYWxpemVfaG9zdCA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGNhbm9uaWNhbGl6ZV9wb3J0IDogaW50IG9wdGlvbiAtPiBpbnQgb3B0aW9uXG4gIHZhbCBjYW5vbmljYWxpemVfcGF0aCA6IHN0cmluZyBsaXN0IC0+IHN0cmluZyBsaXN0XG5lbmRcblxubW9kdWxlIEdlbmVyaWMgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgbGV0IHN1Yl9kZWxpbXMgYSA9XG4gICAgbGV0IHN1YmQgPSBcIiEkJicoKSorLDs9XCIgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdWJkIC0gMSBkb1xuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgc3ViZC5baV0gaW5cbiAgICAgIGEuKGMpIDwtIHRydWVcbiAgICBkb25lO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFycyA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkubWFrZSAyNTYgZmFsc2UgaW5cbiAgICBsZXQgYWx3YXlzX3NhZmUgPVxuICAgICAgXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OV8uLX5cIiBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIGFsd2F5c19zYWZlIC0gMSBkb1xuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgYWx3YXlzX3NhZmUuW2ldIGluXG4gICAgICBhLihjKSA8LSB0cnVlXG4gICAgZG9uZTtcbiAgICBhXG5cbiAgbGV0IHBjaGFyIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBzdWJfZGVsaW1zIChBcnJheS5jb3B5IHNhZmVfY2hhcnMpIGluXG4gICAgYS4oQ2hhci5jb2RlICc6JykgPC0gdHJ1ZTtcbiAgICBhLihDaGFyLmNvZGUgJ0AnKSA8LSB0cnVlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3Jfc2NoZW1lIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnMgaW5cbiAgICBhLihDaGFyLmNvZGUgJysnKSA8LSB0cnVlO1xuICAgIGFcblxuICAoKiogU2FmZSBjaGFyYWN0ZXJzIGZvciB0aGUgcGF0aCBjb21wb25lbnQgb2YgYSBVUkkgKilcbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3BhdGggOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IHN1Yl9kZWxpbXMgKEFycmF5LmNvcHkgcGNoYXIpIGluXG4gICAgKCogZGVsaW1pdGVyOiBub24tc2VnbWVudCBkZWxpbWl0aW5nIHVzZXMgc2hvdWxkIGJlIHBjdCBlbmNvZGVkICopXG4gICAgYS4oQ2hhci5jb2RlICcvJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9xdWVyeSA6IHNhZmVfY2hhcnMgPVxuICAgICgqIFRPRE86IFdoYXQgYWJvdXQge1wiIVwiLFwiJFwiLFwiLFwifT8gU2VlIDxodHRwczovL2dpdGh1Yi5jb20vYXZzbS9vY2FtbC11cmkvY29tbWl0LzFlZjNmMWRmYjQxYmRiNGYzM2YyMjNmZmUxNmU2MmEzMzk3NTY2MWEjZGlmZi03NDBmMmRlNTNjOWViMzZlOTY3MGRkZmJkYjliYTkxNFIxNzE+ICopXG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHBjaGFyIGluXG4gICAgYS4oQ2hhci5jb2RlICcvJykgPC0gdHJ1ZTtcbiAgICBhLihDaGFyLmNvZGUgJz8nKSA8LSB0cnVlO1xuICAgICgqICcmJyBpcyBzYWZlIGJ1dCB3ZSBzaG91bGQgZW5jb2RlIGxpdGVyYWxzIHRvIGF2b2lkIGFtYmlndWl0eVxuICAgICAgIHdpdGggdGhlIGFscmVhZHkgcGFyc2VkIHFzIHBhcmFtcyAqKVxuICAgIGEuKENoYXIuY29kZSAnJicpIDwtIGZhbHNlO1xuICAgICgqICc7JyBpcyBzYWZlIGJ1dCBzb21lIHN5c3RlbXMgdHJlYXQgaXQgbGlrZSAnJicuICopXG4gICAgYS4oQ2hhci5jb2RlICc7JykgPC0gZmFsc2U7XG4gICAgYS4oQ2hhci5jb2RlICcrJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9xdWVyeV9rZXkgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFyc19mb3JfcXVlcnkgaW5cbiAgICBhLihDaGFyLmNvZGUgJz0nKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5IGluXG4gICAgYS4oQ2hhci5jb2RlICcsJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9mcmFnbWVudCA6IHNhZmVfY2hhcnMgPSBzYWZlX2NoYXJzX2Zvcl9xdWVyeVxuXG4gICgqKiBTYWZlIGNoYXJhY3RlcnMgZm9yIHRoZSB1c2VyaW5mbyBzdWJjb21wb25lbnQgb2YgYSBVUkkuXG4gICAgICBUT0RPOiB0aGlzIG5lZWRzIG1vcmUgcmVzZXJ2ZWQgY2hhcmFjdGVycyBhZGRlZCAqKVxuICBsZXQgc2FmZV9jaGFyc19mb3JfdXNlcmluZm8gOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFycyBpblxuICAgICgqIGRlbGltaXRlcjogbm9uLXNlZ21lbnQgZGVsaW1pdGluZyB1c2VzIHNob3VsZCBiZSBwY3QgZW5jb2RlZCAqKVxuICAgIGEuKENoYXIuY29kZSAnOicpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgcmVjIHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCA9IGZ1bmN0aW9uXG4gICAgfCBgUGF0aCAtPiBzYWZlX2NoYXJzX2Zvcl9wYXRoXG4gICAgfCBgVXNlcmluZm8gLT4gc2FmZV9jaGFyc19mb3JfdXNlcmluZm9cbiAgICB8IGBRdWVyeSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeVxuICAgIHwgYFF1ZXJ5X2tleSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeV9rZXlcbiAgICB8IGBRdWVyeV92YWx1ZSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeV92YWx1ZVxuICAgIHwgYEZyYWdtZW50IC0+IHNhZmVfY2hhcnNfZm9yX2ZyYWdtZW50XG4gICAgfCBgU2NoZW1lIC0+IHNhZmVfY2hhcnNfZm9yX3NjaGVtZVxuICAgIHwgYEN1c3RvbSAoKGNvbXBvbmVudCA6IGNvbXBvbmVudCksIHNhZmUsIHVuc2FmZSkgLT5cbiAgICAgICBsZXQgc2FmZV9jaGFycyA9IEFycmF5LmNvcHkgKHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCBjb21wb25lbnQpIGluXG4gICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc2FmZSAtIDEgZG9cbiAgICAgICAgIGxldCBjID0gQ2hhci5jb2RlIHNhZmUuW2ldIGluXG4gICAgICAgICBzYWZlX2NoYXJzLihjKSA8LSB0cnVlXG4gICAgICAgZG9uZTtcbiAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCB1bnNhZmUgLSAxIGRvXG4gICAgICAgICBsZXQgYyA9IENoYXIuY29kZSB1bnNhZmUuW2ldIGluXG4gICAgICAgICBzYWZlX2NoYXJzLihjKSA8LSBmYWxzZVxuICAgICAgIGRvbmU7XG4gICAgICAgc2FmZV9jaGFyc1xuICAgIHwgYEdlbmVyaWNcbiAgICB8IF8gLT4gc2FmZV9jaGFyc1xuXG4gIGxldCBub3JtYWxpemVfaG9zdCBoc28gPSBoc29cblxuICBsZXQgY2Fub25pY2FsaXplX3BvcnQgcG9ydCA9IHBvcnRcbiAgbGV0IGNhbm9uaWNhbGl6ZV9wYXRoIHBhdGggPSBwYXRoXG5lbmRcblxubW9kdWxlIEh0dHAgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgbGV0IG5vcm1hbGl6ZV9ob3N0IGhzID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBoc1xuXG4gIGxldCBjYW5vbmljYWxpemVfcG9ydCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgODAgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IFNvbWUgeFxuXG4gIGxldCBjYW5vbmljYWxpemVfcGF0aCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXCIvXCJdXG4gICAgfCB4ICAtPiB4XG5lbmRcblxubW9kdWxlIEh0dHBzIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgSHR0cFxuXG4gIGxldCBjYW5vbmljYWxpemVfcG9ydCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgNDQzIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBTb21lIHhcbmVuZFxuXG5tb2R1bGUgRmlsZSA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBsZXQgbm9ybWFsaXplX2hvc3QgaHMgPVxuICAgIGxldCBocyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaHMgaW5cbiAgICBpZiBocz1cImxvY2FsaG9zdFwiIHRoZW4gXCJcIiBlbHNlIGhzXG5lbmRcblxubW9kdWxlIFVybiA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuZW5kXG5cbmxldCBtb2R1bGVfb2Zfc2NoZW1lID0gZnVuY3Rpb25cbiAgfCBTb21lIHMgLT4gYmVnaW4gbWF0Y2ggU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzIHdpdGhcbiAgICAgIHwgXCJodHRwXCIgLT4gKG1vZHVsZSBIdHRwIDogU2NoZW1lKVxuICAgICAgfCBcImh0dHBzXCIgIC0+IChtb2R1bGUgSHR0cHMgOiBTY2hlbWUpXG4gICAgICB8IFwiZmlsZVwiIC0+IChtb2R1bGUgRmlsZSA6IFNjaGVtZSlcbiAgICAgIHwgXCJ1cm5cIiAgLT4gKG1vZHVsZSBVcm4gOiBTY2hlbWUpXG4gICAgICB8IF8gLT4gKG1vZHVsZSBHZW5lcmljIDogU2NoZW1lKVxuICAgIGVuZFxuICB8IE5vbmUgLT4gKG1vZHVsZSBHZW5lcmljIDogU2NoZW1lKVxuXG4oKiogUG9ydGlvbnMgb2YgdGhlIFVSTCBtdXN0IGJlIGNvbnZlcnRlZCB0by1hbmQtZnJvbSBwZXJjZW50LWVuY29kaW5nXG4gICogYW5kIHRoaXMgcmVhbGx5LCByZWFsbHkgc2hvdWxkbid0IGJlIG1peGVkIHVwLiBTbyB0aGlzIFBjdCBtb2R1bGVcbiAgKiBkZWZpbmVzIGFic3RyYWN0IFBjdC5lbmNvZGVkIGFuZCBQY3QuZGVjb2RlZCB0eXBlcyB3aGljaCBzZXRzIHRoZVxuICAqIHN0YXRlIG9mIHRoZSB1bmRlcmx5aW5nIHN0cmluZy4gIFRoZXJlIGFyZSBmdW5jdGlvbnMgdG8gXCJjYXN0XCIgdG9cbiAgKiBhbmQgZnJvbSB0aGVzZSBhbmQgbm9ybWFsIHN0cmluZ3MsIGFuZCB0aGlzIHByb21vdGVzIGEgYml0IG9mXG4gICogaW50ZXJuYWwgc2FmZXR5LiAgVGhlc2UgdHlwZXMgYXJlIG5vdCBleHBvc2VkIHRvIHRoZSBleHRlcm5hbFxuICAqIGludGVyZmFjZSwgYXMgY2FzdGluZyB0by1hbmQtZnJvbSBpcyBxdWl0ZSBhIGJpdCBvZiBoYXNzbGUgYW5kXG4gICogcHJvYmFibHkgbm90IGEgbG90IG9mIHVzZSB0byB0aGUgYXZlcmFnZSBjb25zdW1lciBvZiB0aGlzIGxpYnJhcnlcbiopXG5tb2R1bGUgUGN0IDogc2lnXG4gIHR5cGUgZW5jb2RlZFxuICB0eXBlIGRlY29kZWRcblxuICB2YWwgZW5jb2RlIDogP3NjaGVtZTpzdHJpbmcgLT4gP2NvbXBvbmVudDpjb21wb25lbnQgLT4gZGVjb2RlZCAtPiBlbmNvZGVkXG4gIHZhbCBkZWNvZGUgOiBlbmNvZGVkIC0+IGRlY29kZWRcblxuICAoKiBUaGUgZW1wdHkgZGVjb2RlZCBzdHJpbmcgKilcbiAgdmFsIGVtcHR5X2RlY29kZWQgOiBkZWNvZGVkXG4gICgqIElkZW50aXR5IGZ1bmN0aW9ucyBzbyB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgY2FzdCB3aGVuIHVzaW5nIHRoZW0gYmVsb3cgKilcbiAgdmFsIGNhc3RfZW5jb2RlZCA6IHN0cmluZyAtPiBlbmNvZGVkXG4gIHZhbCBjYXN0X2RlY29kZWQgOiBzdHJpbmcgLT4gZGVjb2RlZFxuICB2YWwgdW5jYXN0X2VuY29kZWQgOiBlbmNvZGVkIC0+IHN0cmluZ1xuICB2YWwgdW5jYXN0X2RlY29kZWQgOiBkZWNvZGVkIC0+IHN0cmluZ1xuICAoKiBMaWZ0IEhPRnMgZm9yIG1hcHMgb3ZlciBlbmNvZGluZ3MsIGRlY29kaW5ncywgYW5kIHN0cmluZ3MgKilcbiAgdmFsIGxpZnRfZW5jb2RlZCA6IChlbmNvZGVkIC0+IGVuY29kZWQpIC0+IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGxpZnRfZGVjb2RlZCA6IChkZWNvZGVkIC0+IGRlY29kZWQpIC0+IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIHVubGlmdF9lbmNvZGVkIDogKHN0cmluZyAtPiBzdHJpbmcpIC0+IGVuY29kZWQgLT4gZW5jb2RlZFxuICB2YWwgdW5saWZ0X2RlY29kZWQgOiAoc3RyaW5nIC0+IHN0cmluZykgLT4gZGVjb2RlZCAtPiBkZWNvZGVkXG4gIHZhbCB1bmxpZnRfZGVjb2RlZDIgOiAoc3RyaW5nIC0+IHN0cmluZyAtPiAnYSkgLT4gZGVjb2RlZCAtPiBkZWNvZGVkIC0+ICdhXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBlbmNvZGVkID0gc3RyaW5nXG4gIHR5cGUgZGVjb2RlZCA9IHN0cmluZ1xuICBsZXQgY2FzdF9lbmNvZGVkIHggPSB4XG4gIGxldCBjYXN0X2RlY29kZWQgeCA9IHhcbiAgbGV0IGVtcHR5X2RlY29kZWQgPSBcIlwiXG4gIGxldCB1bmNhc3RfZGVjb2RlZCB4ID0geFxuICBsZXQgdW5jYXN0X2VuY29kZWQgeCA9IHhcblxuICBsZXQgbGlmdF9lbmNvZGVkIGYgPSBmXG4gIGxldCBsaWZ0X2RlY29kZWQgZiA9IGZcbiAgbGV0IHVubGlmdF9lbmNvZGVkIGYgPSBmXG4gIGxldCB1bmxpZnRfZGVjb2RlZCBmID0gZlxuICBsZXQgdW5saWZ0X2RlY29kZWQyIGYgPSBmXG5cbiAgKCoqIFNjYW4gZm9yIHJlc2VydmVkIGNoYXJhY3RlcnMgYW5kIHJlcGxhY2UgdGhlbSB3aXRoXG4gICAgICBwZXJjZW50LWVuY29kZWQgZXF1aXZhbGVudHMuXG4gICAgICBAcmV0dXJuIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZyAqKVxuICBsZXQgZW5jb2RlID9zY2hlbWUgPyhjb21wb25lbnQ9YFBhdGgpIGIgPVxuICAgIGxldCBtb2R1bGUgU2NoZW1lID0gKHZhbCAobW9kdWxlX29mX3NjaGVtZSBzY2hlbWUpIDogU2NoZW1lKSBpblxuICAgIGxldCBzYWZlX2NoYXJzID0gU2NoZW1lLnNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCBjb21wb25lbnQgaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBiIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBzY2FuIHN0YXJ0IGN1ciA9XG4gICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydCk7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgYyA9IENoYXIuY29kZSBiLltjdXJdIGluXG4gICAgICAgIGlmIHNhZmVfY2hhcnMuKGMpIHRoZW5cbiAgICAgICAgICBzY2FuIHN0YXJ0IChjdXIrMSlcbiAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgIGlmIGN1ciA+IHN0YXJ0IHRoZW4gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydCk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQcmludGYuc3ByaW50ZiBcIiUlJTAyWFwiIGMpO1xuICAgICAgICAgIHNjYW4gKGN1cisxKSAoY3VyKzEpXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgaW5cbiAgICBzY2FuIDAgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IGludF9vZl9oZXhfY2hhciBjID1cbiAgICBsZXQgYyA9IGludF9vZl9jaGFyIChDaGFyLnVwcGVyY2FzZV9hc2NpaSBjKSAtIDQ4IGluXG4gICAgaWYgYyA+IDlcbiAgICB0aGVuIGlmIGMgPiAxNiAmJiBjIDwgMjNcbiAgICAgIHRoZW4gYyAtIDdcbiAgICAgIGVsc2UgZmFpbHdpdGggXCJpbnRfb2ZfaGV4X2NoYXJcIlxuICAgIGVsc2UgaWYgYyA+PSAwXG4gICAgdGhlbiBjXG4gICAgZWxzZSBmYWlsd2l0aCBcImludF9vZl9oZXhfY2hhclwiXG5cbiAgKCoqIFNjYW4gZm9yIHBlcmNlbnQtZW5jb2RpbmcgYW5kIGNvbnZlcnQgdGhlbSBpbnRvIEFTQ0lJLlxuICAgICAgQHJldHVybiBhIHBlcmNlbnQtZGVjb2RlZCBzdHJpbmcgKilcbiAgbGV0IGRlY29kZSBiID1cbiAgICAoKiBUT0RPOiBTaG91bGQgYm90aCBzdHJpY3QgYW5kIG5vbi1zdHJpY3QgdmVyc2lvbnMgYmUgZXhwb3NlZD8gKilcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBiIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBzY2FuIHN0YXJ0IGN1ciA9XG4gICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydClcbiAgICAgIGVsc2UgaWYgYi5bY3VyXSA9ICclJyB0aGVuIGJlZ2luXG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBiIHN0YXJ0IChjdXItc3RhcnQpO1xuICAgICAgICBsZXQgY3VyID0gY3VyICsgMSBpblxuICAgICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnJSdcbiAgICAgICAgZWxzZSBtYXRjaCBpbnRfb2ZfaGV4X2NoYXIgYi5bY3VyXSB3aXRoXG4gICAgICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICBzY2FuIGN1ciBjdXJcbiAgICAgICAgfCBoaWdoYml0cyAtPiBiZWdpblxuICAgICAgICAgIGxldCBjdXIgPSBjdXIgKyAxIGluXG4gICAgICAgICAgaWYgY3VyID49IGxlbiB0aGVuIGJlZ2luXG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgYi5bY3VyLTFdXG4gICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIGxldCBzdGFydF9hdCA9XG4gICAgICAgICAgICAgIG1hdGNoIGludF9vZl9oZXhfY2hhciBiLltjdXJdIHdpdGhcbiAgICAgICAgICAgICAgfCBsb3diaXRzIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgKGhpZ2hiaXRzIGxzbCA0ICsgbG93Yml0cykpO1xuICAgICAgICAgICAgICAgIGN1cisxXG4gICAgICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGIuW2N1ci0xXTtcbiAgICAgICAgICAgICAgICBjdXJcbiAgICAgICAgICAgIGluIHNjYW4gc3RhcnRfYXQgc3RhcnRfYXRcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBzY2FuIHN0YXJ0IChjdXIrMSlcbiAgICBpblxuICAgIHNjYW4gMCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbmVuZFxuXG4oKiBQZXJjZW50IGVuY29kZSBhIHN0cmluZyAqKVxubGV0IHBjdF9lbmNvZGUgP3NjaGVtZSA/KGNvbXBvbmVudD1gUGF0aCkgcyA9XG4gIFBjdC4odW5jYXN0X2VuY29kZWQgKGVuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgKGNhc3RfZGVjb2RlZCBzKSkpXG5cbmxldCBwY3RfZW5jb2RlclxuICAgICAgPyhzY2hlbWU9YFNjaGVtZSlcbiAgICAgID8odXNlcmluZm89YFVzZXJpbmZvKVxuICAgICAgPyhob3N0PWBIb3N0KVxuICAgICAgPyhwYXRoPWBQYXRoKVxuICAgICAgPyhxdWVyeV9rZXk9YFF1ZXJ5X2tleSlcbiAgICAgID8ocXVlcnlfdmFsdWU9YFF1ZXJ5X3ZhbHVlKVxuICAgICAgPyhmcmFnbWVudD1gRnJhZ21lbnQpXG4gICAgICAoKSA9XG4gIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcGF0aDsgcXVlcnlfa2V5OyBxdWVyeV92YWx1ZTsgZnJhZ21lbnQgfVxuXG4oKiBQZXJjZW50IGRlY29kZSBhIHN0cmluZyAqKVxubGV0IHBjdF9kZWNvZGUgcyA9IFBjdC4odW5jYXN0X2RlY29kZWQgKGRlY29kZSAoY2FzdF9lbmNvZGVkIHMpKSlcblxuKCogVXNlcmluZm8gc3RyaW5nIGhhbmRsaW5nLCB0byBhbmQgZnJvbSBhbiBpZCAqIGNyZWRlbnRpYWwgcGFpciAqKVxubW9kdWxlIFVzZXJpbmZvID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyAqIHN0cmluZyBvcHRpb25cblxuICBsZXQgY29tcGFyZSAodSxwKSAodScscCcpID1cbiAgICBtYXRjaCBTdHJpbmcuY29tcGFyZSB1IHUnIHdpdGhcbiAgICB8IDAgLT4gY29tcGFyZV9vcHQgU3RyaW5nLmNvbXBhcmUgcCBwJ1xuICAgIHwgYyAtPiBjXG5cbiAgbGV0IHVzZXJpbmZvX29mX2VuY29kZWQgdXMgPVxuICAgIG1hdGNoIFN0cmluZ2V4dC5zcGxpdCB+bWF4OjIgfm9uOic6JyB1cyB3aXRoXG4gICAgfCBbXSAtPiAoXCJcIixOb25lKVxuICAgIHwgW3VdIC0+IChwY3RfZGVjb2RlIHUsTm9uZSlcbiAgICB8IHU6OnA6Ol8gLT4gKHBjdF9kZWNvZGUgdSxTb21lIChwY3RfZGVjb2RlIHApKVxuXG4gIGxldCBlbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudCAodSxwbykgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcuKFxuICAgICAgMSArIChsZW5ndGggdSkgKyAobWF0Y2ggcG8gd2l0aCBOb25lIC0+IDAgfCBTb21lIHAgLT4gbGVuZ3RoIHApKVxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCB1KTtcbiAgICBiZWdpbiBtYXRjaCBwbyB3aXRoIE5vbmUgLT4gKCk7XG4gICAgfCBTb21lIHAgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJzonO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCBwKVxuICAgIGVuZDtcbiAgICBQY3QuY2FzdF9lbmNvZGVkIChCdWZmZXIuY29udGVudHMgYnVmKVxuZW5kXG5cbmxldCB1c2VyaW5mb19vZl9lbmNvZGVkID0gVXNlcmluZm8udXNlcmluZm9fb2ZfZW5jb2RlZFxubGV0IGVuY29kZWRfb2ZfdXNlcmluZm8gP3NjaGVtZSB+Y29tcG9uZW50ID0gVXNlcmluZm8uZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnRcblxuKCogUGF0aCBzdHJpbmcgaGFuZGxpbmcsIHRvIGFuZCBmcm9tIGEgbGlzdCBvZiBwYXRoIHRva2VucyAqKVxubW9kdWxlIFBhdGggPSBzdHJ1Y3RcbiAgKCogSW52YXJpYW50OiBldmVyeSBlbGVtZW50IGlzIG5vbi16ZXJvLCBzbGFzaGVzICgvKSBvbmx5IG9jY3VyIGFsb25lLiAqKVxuICAoKiBZZXMsIGl0J3MgYmV0dGVyIHRoaXMgd2F5LiBUaGlzIG1lYW5zIHlvdSBjYW4gcmV0YWluIHNlcGFyYXRvclxuICAgICBjb250ZXh0IGluIHJlY3Vyc2lvbiAoZS5nLiByZW1vdmVfZG90X3NlZ21lbnRzIGZvciByZWxhdGl2ZSByZXNvbHV0aW9uKS4gKilcblxuICB0eXBlIHQgPSBzdHJpbmcgbGlzdFxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZV9saXN0IFN0cmluZy5jb21wYXJlXG5cbiAgKCogTWFrZSBhIHBhdGggdG9rZW4gbGlzdCBmcm9tIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZyAqKVxuICBsZXQgcGF0aF9vZl9lbmNvZGVkIHBzID1cbiAgICBsZXQgdG9rbCA9IFN0cmluZ2V4dC5mdWxsX3NwbGl0IHBzIH5vbjonLycgaW5cbiAgICBMaXN0Lm1hcCBwY3RfZGVjb2RlIHRva2xcblxuICAoKiBTdWJyb3V0aW5lIGZvciByZXNvbHZlIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yLjQ+ICopXG4gIGxldCByZW1vdmVfZG90X3NlZ21lbnRzIHAgPVxuICAgIGxldCByZXZwID0gTGlzdC5yZXYgcCBpblxuICAgIGxldCByZWMgbG9vcCBhc2NlbnNpb24gb3V0cCA9IGZ1bmN0aW9uXG4gICAgICB8IFwiL1wiOjpcIi4uXCI6OnIgfCBcIi4uXCI6OnIgLT4gbG9vcCAoYXNjZW5zaW9uICsgMSkgb3V0cCByXG4gICAgICB8IFwiL1wiOjpcIi5cIjo6ciAgfCBcIi5cIjo6ciAgLT4gbG9vcCBhc2NlbnNpb24gb3V0cCByXG4gICAgICB8IFwiL1wiOjpbXSB8IFtdIHdoZW4gTGlzdC4obGVuZ3RoIHAgPiAwICYmIGhkIHAgPSBcIi9cIikgLT4gXCIvXCI6Om91dHBcbiAgICAgIHwgW10gd2hlbiBhc2NlbnNpb24gPiAwIC0+IExpc3QucmV2X2FwcGVuZFxuICAgICAgICAoXCIvXCI6OihyZXZfaW50ZXJqZWN0IFwiL1wiIEFycmF5Lih0b19saXN0IChtYWtlIGFzY2Vuc2lvbiBcIi4uXCIpKSkpIG91dHBcbiAgICAgIHwgW10gLT4gTGlzdC4oaWYgbGVuZ3RoIG91dHAgPiAwICYmIGhkIG91dHAgPSBcIi9cIiB0aGVuIHRsIG91dHAgZWxzZSBvdXRwKVxuICAgICAgfCBcIi9cIjo6XCIvXCI6OnIgd2hlbiBhc2NlbnNpb24gPiAwIC0+IGxvb3AgKGFzY2Vuc2lvbiAtIDEpIG91dHAgKFwiL1wiOjpyKVxuICAgICAgfCBcIi9cIjo6Xzo6ciB3aGVuIGFzY2Vuc2lvbiA+IDAgLT4gbG9vcCAoYXNjZW5zaW9uIC0gMSkgb3V0cCByXG4gICAgICB8IHM6OnIgLT4gbG9vcCAwIChzOjpvdXRwKSByXG4gICAgaW4gbG9vcCAwIFtdIHJldnBcblxuICBsZXQgZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudCBwID1cbiAgICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBjIHRvayAtPiBTdHJpbmcubGVuZ3RoIHRvayArIGMpIDAgcCBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIGl0ZXJfY29uY2F0IChmdW4gYnVmIC0+IGZ1bmN0aW9uXG4gICAgfCBcIi9cIiAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcvJ1xuICAgIHwgc2VnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgc2VnKVxuICAgICkgXCJcIiBidWYgcDtcbiAgICBQY3QuY2FzdF9lbmNvZGVkIChCdWZmZXIuY29udGVudHMgYnVmKVxuXG4gICgqIFN1YnJvdXRpbmUgZm9yIHJlc29sdmUgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIuMz4gKilcbiAgbGV0IG1lcmdlIGJob3N0IGJwYXRoIHJlbHBhdGggPVxuICAgIG1hdGNoIGJob3N0LCBMaXN0LnJldiBicGF0aCB3aXRoXG4gICAgfCBTb21lIF8sIFtdIC0+IFwiL1wiOjpyZWxwYXRoXG4gICAgfCBfLCAoXCIvXCI6OnJicGF0aCB8IF86OlwiL1wiOjpyYnBhdGgpIC0+IExpc3QucmV2X2FwcGVuZCAoXCIvXCI6OnJicGF0aCkgcmVscGF0aFxuICAgIHwgXywgXyAtPiByZWxwYXRoXG5lbmRcblxubGV0IHBhdGhfb2ZfZW5jb2RlZCA9IFBhdGgucGF0aF9vZl9lbmNvZGVkXG5sZXQgZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudCA9IFBhdGguZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudFxuXG4oKiBRdWVyeSBzdHJpbmcgaGFuZGxpbmcsIHRvIGFuZCBmcm9tIGFuIGFzc29jIGxpc3Qgb2Yga2V5L3ZhbHVlcyAqKVxubW9kdWxlIFF1ZXJ5ID0gc3RydWN0XG5cbiAgdHlwZSBrdiA9IChzdHJpbmcgKiBzdHJpbmcgbGlzdCkgbGlzdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBLViBvZiBrdlxuICAgIHwgUmF3IG9mIHN0cmluZyBvcHRpb24gKiBrdiBMYXp5LnRcblxuICBsZXQgY29tcGFyZSB4IHkgPSBtYXRjaCB4LCB5IHdpdGhcbiAgICB8IEtWIGt2bCwgS1Yga3ZsJ1xuICAgIHwgUmF3IChfLCBsYXp5IGt2bCksIEtWIGt2bCdcbiAgICB8IEtWIGt2bCwgUmF3IChfLCBsYXp5IGt2bCcpIC0+XG4gICAgICBjb21wYXJlX2xpc3QgKGZ1biAoayx2bCkgKGsnLHZsJykgLT5cbiAgICAgICAgbWF0Y2ggU3RyaW5nLmNvbXBhcmUgayBrJyB3aXRoXG4gICAgICAgIHwgMCAtPiBjb21wYXJlX2xpc3QgU3RyaW5nLmNvbXBhcmUgdmwgdmwnXG4gICAgICAgIHwgYyAtPiBjXG4gICAgICApIGt2bCBrdmwnXG4gICAgfCBSYXcgKHJhdyxfKSwgUmF3IChyYXcnLF8pIC0+IGNvbXBhcmVfb3B0IFN0cmluZy5jb21wYXJlIHJhdyByYXcnXG5cbiAgbGV0IGZpbmQgcSBrID0gdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBxKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHNwbGl0X3F1ZXJ5IHFzID1cbiAgICBsZXQgZWxzID0gU3RyaW5nZXh0LnNwbGl0IH5vbjonJicgcXMgaW5cbiAgICAoKiBSZXBsYWNlIGEgKyBpbiBhIHF1ZXJ5IHN0cmluZyB3aXRoIGEgc3BhY2UgaW4tcGxhY2UgKilcbiAgICBsZXQgcGx1c190b19zcGFjZSBzID1cbiAgICAgIGxldCBzID0gQnl0ZXMudW5zYWZlX29mX3N0cmluZyBzIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQnl0ZXMubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIGlmIEJ5dGVzLmdldCBzIGkgPSAnKycgdGhlbiBCeXRlcy5zZXQgcyBpICcgJ1xuICAgICAgZG9uZTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc1xuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IChrOjp2OjpfKTo6dGwgLT5cbiAgICAgICAgbGV0IG4gPSBwbHVzX3RvX3NwYWNlIGssXG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0cmluZ2V4dC5zcGxpdCB+b246JywnIChwbHVzX3RvX3NwYWNlIHYpIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBbXSAtPiBbXCJcIl0gfCBsIC0+IGwpIGluXG4gICAgICAgIGxvb3AgKG46OmFjYykgdGxcbiAgICAgIHwgW2tdOjp0bCAtPlxuICAgICAgICBsZXQgbiA9IHBsdXNfdG9fc3BhY2UgaywgW10gaW5cbiAgICAgICAgbG9vcCAobjo6YWNjKSB0bFxuICAgICAgfCBbXTo6dGwgLT4gbG9vcCAoKFwiXCIsIFtdKTo6YWNjKSB0bFxuICAgICAgfCBbXSAtPiBhY2NcbiAgICBpblxuICAgIG1hdGNoIGVscyB3aXRoXG4gICAgfCBbXSAgLT4gW1wiXCIsW11dXG4gICAgfCBlbHMgLT4gbG9vcCBbXVxuICAgICAgKExpc3QucmV2X21hcCAoZnVuIGVsIC0+IFN0cmluZ2V4dC5zcGxpdCB+b246Jz0nIGVsIH5tYXg6MikgZWxzKVxuXG4gICgqIE1ha2UgYSBxdWVyeSB0dXBsZSBsaXN0IGZyb20gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nICopXG4gIGxldCBxdWVyeV9vZl9lbmNvZGVkIHFzID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAoaywgdikgLT4gKHBjdF9kZWNvZGUgaywgTGlzdC5tYXAgcGN0X2RlY29kZSB2KSlcbiAgICAgIChzcGxpdF9xdWVyeSBxcylcblxuICAoKiBBc3NlbWJsZSBhIHF1ZXJ5IHN0cmluZyBzdWl0YWJsZSBmb3IgcHV0dGluZyBpbnRvIGEgVVJJLlxuICAgKiBUdXBsZSBpbnB1dHMgYXJlIHBlcmNlbnQgZGVjb2RlZCBhbmQgd2lsbCBiZSBlbmNvZGVkIGJ5XG4gICAqIHRoaXMgZnVuY3Rpb24uXG4gICopXG4gIGxldCBlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgbCA9XG4gICAgbGV0IGxlbiA9IExpc3QuZm9sZF9sZWZ0IChmdW4gYSAoayx2KSAtPlxuICAgICAgICBhICsgKFN0cmluZy5sZW5ndGggaylcbiAgICAgICAgKyAoTGlzdC5mb2xkX2xlZnQgKGZ1biBhIHMgLT4gYSsoU3RyaW5nLmxlbmd0aCBzKSsxKSAwIHYpICsgMikgKC0xKSBsIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgaXRlcl9jb25jYXQgKGZ1biBidWYgKGssdikgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5xdWVyeV9rZXkgayk7XG4gICAgICAgIGlmIHYgPD4gW10gdGhlbiAoXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnPSc7XG4gICAgICAgICAgaXRlcl9jb25jYXQgKGZ1biBidWYgcyAtPlxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZcbiAgICAgICAgICAgICAgICAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucXVlcnlfdmFsdWUgcylcbiAgICAgICAgICAgICkgXCIsXCIgYnVmIHYpXG4gICAgICApIFwiJlwiIGJ1ZiBsO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgb2ZfcmF3IHFzID1cbiAgICBsZXQgbGF6eV9xdWVyeSA9IExhenkuZnJvbV9mdW4gKGZ1biAoKSAtPiBxdWVyeV9vZl9lbmNvZGVkIHFzKSBpblxuICAgIFJhdyAoU29tZSBxcywgbGF6eV9xdWVyeSlcblxuICBsZXQga3YgPSBmdW5jdGlvbiBSYXcgKF8sIGxhenkga3YpIHwgS1Yga3YgLT4ga3ZcbmVuZFxuXG5sZXQgcXVlcnlfb2ZfZW5jb2RlZCA9IFF1ZXJ5LnF1ZXJ5X29mX2VuY29kZWRcbmxldCBlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgPSBRdWVyeS5lbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWVcblxuKCogVHlwZSBvZiB0aGUgVVJJLCB3aXRoIG1vc3QgYml0cyBiZWluZyBvcHRpb25hbCAqKVxudHlwZSB0ID0ge1xuICBzY2hlbWU6IFBjdC5kZWNvZGVkIG9wdGlvbjtcbiAgdXNlcmluZm86IFVzZXJpbmZvLnQgb3B0aW9uO1xuICBob3N0OiBbIGBJcHY0X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgIHwgYElwdjZfbGl0ZXJhbCBvZiBzdHJpbmdcbiAgICAgICAgfCBgSG9zdCBvZiBQY3QuZGVjb2RlZF0gb3B0aW9uIDtcbiAgcG9ydDogaW50IG9wdGlvbjtcbiAgcGF0aDogUGF0aC50O1xuICBxdWVyeTogUXVlcnkudDtcbiAgZnJhZ21lbnQ6IFBjdC5kZWNvZGVkIG9wdGlvbjtcbn1cblxubGV0IGVtcHR5ID0ge1xuICBzY2hlbWUgPSBOb25lO1xuICB1c2VyaW5mbyA9IE5vbmU7XG4gIGhvc3QgPSBOb25lO1xuICBwb3J0ID0gTm9uZTtcbiAgcGF0aCA9IFtdO1xuICBxdWVyeSA9IFF1ZXJ5LlJhdyAoTm9uZSwgTGF6eS5mcm9tX3ZhbCBbXSk7XG4gIGZyYWdtZW50ID0gTm9uZTtcbn1cblxubGV0IGNvbXBhcmVfZGVjb2RlZCA9IFBjdC51bmxpZnRfZGVjb2RlZDIgU3RyaW5nLmNvbXBhcmVcbmxldCBjb21wYXJlX2RlY29kZWRfb3B0ID0gY29tcGFyZV9vcHQgY29tcGFyZV9kZWNvZGVkXG5sZXQgY29tcGFyZV9ob3N0IGgxIGgyID1cbiAgbWF0Y2ggaDEsIGgyIHdpdGhcbiAgfCBgSXB2NF9saXRlcmFsIGlwMSwgYElwdjRfbGl0ZXJhbCBpcDIgLT4gU3RyaW5nLmNvbXBhcmUgaXAxIGlwMlxuICB8IGBJcHY2X2xpdGVyYWwgaXAxLCBgSXB2Nl9saXRlcmFsIGlwMiAtPiBTdHJpbmcuY29tcGFyZSBpcDEgaXAyXG4gIHwgYEhvc3QgaDEsIGBIb3N0IGgyIC0+IGNvbXBhcmVfZGVjb2RlZCBoMSBoMlxuICB8IF8gLT4gLTFcbmxldCBjb21wYXJlX2hvc3Rfb3B0ID0gY29tcGFyZV9vcHQgY29tcGFyZV9ob3N0XG5cbmxldCBjb21wYXJlIHQgdCcgPVxuICAobWF0Y2ggY29tcGFyZV9ob3N0X29wdCB0Lmhvc3QgdCcuaG9zdCB3aXRoXG4gIHwgMCAtPiAobWF0Y2ggY29tcGFyZV9kZWNvZGVkX29wdCB0LnNjaGVtZSB0Jy5zY2hlbWUgd2l0aFxuICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZV9vcHQgKGZ1biBwIHAnIC0+XG4gICAgICBpZiBwIDwgcCcgdGhlbiAtMSBlbHNlIGlmIHAgPiBwJyB0aGVuIDEgZWxzZSAwXG4gICAgKSB0LnBvcnQgdCcucG9ydCB3aXRoXG4gICAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmVfb3B0IFVzZXJpbmZvLmNvbXBhcmUgdC51c2VyaW5mbyB0Jy51c2VyaW5mbyB3aXRoXG4gICAgICAgIHwgMCAtPiAobWF0Y2ggUGF0aC5jb21wYXJlIHQucGF0aCB0Jy5wYXRoIHdpdGhcbiAgICAgICAgICB8IDAgLT4gKG1hdGNoIFF1ZXJ5LmNvbXBhcmUgdC5xdWVyeSB0Jy5xdWVyeSB3aXRoXG4gICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9kZWNvZGVkX29wdCB0LmZyYWdtZW50IHQnLmZyYWdtZW50XG4gICAgICAgICAgICB8IGMgLT4gYylcbiAgICAgICAgICB8IGMgLT4gYylcbiAgICAgICAgfCBjIC0+IGMpXG4gICAgICB8IGMgLT4gYylcbiAgICB8IGMgLT4gYylcbiAgfCBjIC0+IGMpXG5cbmxldCBlcXVhbCB0IHQnID0gY29tcGFyZSB0IHQnID0gMFxuXG5sZXQgdW5jYXN0X29wdCA9IGZ1bmN0aW9uXG4gIHwgU29tZSBoIC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCBoKVxuICB8IE5vbmUgLT4gTm9uZVxuXG5sZXQgbm9ybWFsaXplIHNjaGVtIHVyaSA9XG4gIGxldCBtb2R1bGUgU2NoZW1lID1cbiAgICAodmFsIChtb2R1bGVfb2Zfc2NoZW1lICh1bmNhc3Rfb3B0IHNjaGVtKSkgOiBTY2hlbWUpIGluXG4gIGxldCBkb2IgZiA9IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT4gU29tZSAoUGN0LnVubGlmdF9kZWNvZGVkIGYgeClcbiAgICB8IE5vbmUgLT4gTm9uZVxuICBpbiB7dXJpIHdpdGhcbiAgICAgIHNjaGVtZT1kb2IgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSB1cmkuc2NoZW1lO1xuICAgICAgaG9zdD0gbWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICAgICAgIHwgU29tZSAoYElwdjRfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgU29tZSAoYElwdjRfbGl0ZXJhbCAoU2NoZW1lLm5vcm1hbGl6ZV9ob3N0IGhvc3QpKVxuICAgICAgIHwgU29tZSAoYElwdjZfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgU29tZSAoYElwdjZfbGl0ZXJhbCAoU2NoZW1lLm5vcm1hbGl6ZV9ob3N0IGhvc3QpKVxuICAgICAgIHwgU29tZSAoYEhvc3QgaG9zdCkgLT5cbiAgICAgICAgIFNvbWUgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIChTY2hlbWUubm9ybWFsaXplX2hvc3QgKFBjdC51bmNhc3RfZGVjb2RlZCBob3N0KSkpKVxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgIH1cblxuKCoqIENvbnZlcnQgYSBVUkkgc3RydWN0dXJlIGludG8gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nXG4gICAgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjM+XG4qKVxubGV0IHRvX3N0cmluZyA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPVxuICBsZXQgc2NoZW1lID0gbWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIHMpXG4gICAgfCBOb25lIC0+IE5vbmUgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gICgqIFBlcmNlbnQgZW5jb2RlIGEgZGVjb2RlZCBzdHJpbmcgYW5kIGFkZCBpdCB0byB0aGUgYnVmZmVyICopXG4gIGxldCBhZGRfcGN0X3N0cmluZyA/KGNvbXBvbmVudD1gUGF0aCkgeCA9XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQY3QudW5jYXN0X2VuY29kZWQgKFBjdC5lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHgpKVxuICBpblxuICAobWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICB8Tm9uZSAtPiAoKVxuICAgfFNvbWUgeCAtPlxuICAgICBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnNjaGVtZSB4O1xuICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc6J1xuICApO1xuICAoKiBVUkkgaGFzIGEgaG9zdCBpZiBhbnkgaG9zdC1yZWxhdGVkIGNvbXBvbmVudCBpcyBzZXQuIERlZmF1bHRzIHRvIFwiXCIuICopXG4gIGlmIChtYXRjaCB1cmkudXNlcmluZm8sIHVyaS5ob3N0LCB1cmkucG9ydCB3aXRoXG4gIHwgU29tZSBfLCBfLCBfIHwgXywgU29tZSBfLCBfIHwgXywgXywgU29tZSBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIi8vXCI7XG4gIChtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSB1c2VyaW5mbyAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZlxuICAgICAgKFBjdC51bmNhc3RfZW5jb2RlZCAoZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIudXNlcmluZm8gdXNlcmluZm8pKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdAJ1xuICApO1xuICAobWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSAoYEhvc3QgaG9zdCkgLT5cbiAgICBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLmhvc3QgaG9zdDtcbiAgfFNvbWUgKGBJcHY0X2xpdGVyYWwgaG9zdCkgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIGhvc3RcbiAgfFNvbWUgKGBJcHY2X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1snO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIGhvc3Q7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICddJ1xuICApO1xuICAobWF0Y2ggdXJpLnBvcnQgd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSBwb3J0IC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnOic7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChzdHJpbmdfb2ZfaW50IHBvcnQpXG4gICk7XG4gIChtYXRjaCB1cmkucGF0aCB3aXRoICgqIEhhbmRsZSByZWxhdGl2ZSBwYXRocyBjb3JyZWN0bHkgKilcbiAgfCBbXSAtPiAoKVxuICB8IFwiL1wiOjpfIC0+XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQY3QudW5jYXN0X2VuY29kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnBhdGggdXJpLnBhdGgpKVxuICB8IGZpcnN0X3NlZ21lbnQ6Ol8gLT5cbiAgICAobWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICAgICB8IFNvbWUgXyAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcvJ1xuICAgICB8IE5vbmUgLT5cbiAgICAgICAoKiBlbnN1cmUgcm91bmR0cmlwIGJ5IGZvcmNpbmcgcmVsYXRpdmUgcGF0aCBpbnRlcnByZXRhdGlvbiBub3Qgc2NoZW1lICopXG4gICAgICAgbWF0Y2ggU3RyaW5nZXh0LmZpbmRfZnJvbSBmaXJzdF9zZWdtZW50IH5wYXR0ZXJuOlwiOlwiIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICB8IFNvbWUgXyAtPiBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgIHwgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIuL1wiXG4gICAgKTtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZcbiAgICAgIChQY3QudW5jYXN0X2VuY29kZWQgKGVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aCkpXG4gICk7XG4gIFF1ZXJ5LihtYXRjaCB1cmkucXVlcnkgd2l0aFxuICAgIHwgUmF3IChOb25lLF8pIHwgS1YgW10gLT4gKClcbiAgICB8IFJhdyAoXyxsYXp5IHEpIHwgS1YgcSAtPiAoKiBub3JtYWxpemUgZS5nLiBwZXJjZW50IGNhcGl0YWxpemF0aW9uICopXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc/JztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lIH5wY3RfZW5jb2RlciBxKVxuICApO1xuICAobWF0Y2ggdXJpLmZyYWdtZW50IHdpdGhcbiAgIHxOb25lIC0+ICgpXG4gICB8U29tZSBmIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJyMnOyBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLmZyYWdtZW50IGZcbiAgKTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4oKiBWYXJpb3VzIGFjY2Vzc29yIGZ1bmN0aW9ucywgYXMgdGhlIGV4dGVybmFsIHVyaSB0eXBlIGlzIGFic3RyYWN0ICAqKVxubGV0IGdldF9kZWNvZGVkX29wdCA9IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8U29tZSB4IC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCB4KVxubGV0IHNjaGVtZSB1cmkgPSBnZXRfZGVjb2RlZF9vcHQgdXJpLnNjaGVtZVxubGV0IHdpdGhfc2NoZW1lIHVyaSA9XG4gIGZ1bmN0aW9uXG4gIHxTb21lIHNjaGVtZSAtPiB7IHVyaSB3aXRoIHNjaGVtZT1Tb21lIChQY3QuY2FzdF9kZWNvZGVkIHNjaGVtZSkgfVxuICB8Tm9uZSAtPiB7IHVyaSB3aXRoIHNjaGVtZT1Ob25lIH1cblxubGV0IGhvc3QgdXJpID1cbiAgbWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGBJcHY0X2xpdGVyYWwgaCB8IGBJcHY2X2xpdGVyYWwgaCkgLT4gU29tZSBoXG4gIHwgU29tZSAoYEhvc3QgaCkgLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIGgpXG5cbmxldCBob3N0X3dpdGhfZGVmYXVsdCA/KGRlZmF1bHQ9XCJsb2NhbGhvc3RcIikgdXJpID1cbiAgbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICB8Tm9uZSAtPiBkZWZhdWx0XG4gIHxTb21lIGggLT4gaFxuXG5sZXQgdXNlcmluZm8gPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgdXJpID0gbWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHVzZXJpbmZvIC0+IFNvbWUgKFBjdC51bmNhc3RfZW5jb2RlZCAobWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICAgfCBOb25lIC0+IGVuY29kZWRfb2ZfdXNlcmluZm8gfmNvbXBvbmVudDpwY3RfZW5jb2Rlci51c2VyaW5mbyB1c2VyaW5mb1xuICAgIHwgU29tZSBzIC0+IGVuY29kZWRfb2ZfdXNlcmluZm8gfnNjaGVtZTooUGN0LnVuY2FzdF9kZWNvZGVkIHMpIH5jb21wb25lbnQ6cGN0X2VuY29kZXIudXNlcmluZm8gdXNlcmluZm8pKVxubGV0IHdpdGhfdXNlcmluZm8gdXJpIHVzZXJpbmZvID1cbiAgbGV0IHVzZXJpbmZvID0gbWF0Y2ggdXNlcmluZm8gd2l0aFxuICAgIHwgU29tZSB1IC0+IFNvbWUgKHVzZXJpbmZvX29mX2VuY29kZWQgdSlcbiAgICB8IE5vbmUgLT4gTm9uZVxuICBpblxuICBtYXRjaCBob3N0IHVyaSB3aXRoXG4gIHwgTm9uZSAtPiB7IHVyaSB3aXRoIGhvc3Q9U29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgXCJcIikpOyB1c2VyaW5mbz11c2VyaW5mbyB9XG4gIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggdXNlcmluZm89dXNlcmluZm8gfVxuXG5sZXQgdXNlciB1cmkgPSBtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKHVzZXIsIF8pIC0+IFNvbWUgdXNlclxuXG5sZXQgcGFzc3dvcmQgdXJpID0gbWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfCBOb25lIHwgU29tZSAoXywgTm9uZSkgLT4gTm9uZVxuICB8IFNvbWUgKF8sIFNvbWUgcGFzcykgLT4gU29tZSBwYXNzXG5sZXQgd2l0aF9wYXNzd29yZCB1cmkgcGFzc3dvcmQgPVxuICBsZXQgcmVzdWx0IHVzZXJpbmZvID0gbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICAgIHwgTm9uZSAtPiB7IHVyaSB3aXRoIGhvc3Q9U29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgXCJcIikpOyB1c2VyaW5mbz11c2VyaW5mbyB9XG4gICAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCB1c2VyaW5mbz11c2VyaW5mbyB9XG4gIGluXG4gIG1hdGNoIHVyaS51c2VyaW5mbywgcGFzc3dvcmQgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gdXJpXG4gIHwgTm9uZSwgU29tZSBfIC0+IHJlc3VsdCAoU29tZSAoXCJcIixwYXNzd29yZCkpXG4gIHwgU29tZSAodXNlcixfKSwgXyAtPiByZXN1bHQgKFNvbWUgKHVzZXIsIHBhc3N3b3JkKSlcblxubGV0IHBvcnQgdXJpID0gdXJpLnBvcnRcbmxldCB3aXRoX3BvcnQgdXJpIHBvcnQgPVxuICBtYXRjaCBob3N0IHVyaSB3aXRoXG4gIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggcG9ydD1wb3J0IH1cbiAgfCBOb25lIC0+IGJlZ2luXG4gICAgIG1hdGNoIHBvcnQgd2l0aFxuICAgICB8IE5vbmUgLT4geyB1cmkgd2l0aCBob3N0PU5vbmU7IHBvcnQ9Tm9uZSB9XG4gICAgIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggaG9zdD1Tb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBcIlwiKSk7IHBvcnQ9cG9ydCB9XG4gIGVuZFxuXG4oKiBSZXR1cm4gdGhlIHBhdGggY29tcG9uZW50ICopXG5sZXQgcGF0aCA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPSBQY3QudW5jYXN0X2VuY29kZWQgKG1hdGNoIHVyaS5zY2hlbWUgd2l0aFxuICB8IE5vbmUgLT4gZW5jb2RlZF9vZl9wYXRoIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aFxuICB8IFNvbWUgcyAtPiBlbmNvZGVkX29mX3BhdGggfnNjaGVtZTooUGN0LnVuY2FzdF9kZWNvZGVkIHMpIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aClcbmxldCB3aXRoX3BhdGggdXJpIHBhdGggPVxuICBsZXQgcGF0aCA9IHBhdGhfb2ZfZW5jb2RlZCBwYXRoIGluXG4gIG1hdGNoIGhvc3QgdXJpLCBwYXRoIHdpdGhcbiAgfCBOb25lLCBfIHwgU29tZSBfLCBcIi9cIjo6XyB8IFNvbWUgXywgW10gLT4geyB1cmkgd2l0aCBwYXRoPXBhdGggfVxuICB8IFNvbWUgXywgXyAgLT4geyB1cmkgd2l0aCBwYXRoPVwiL1wiOjpwYXRoIH1cblxubGV0IGZyYWdtZW50IHVyaSA9IGdldF9kZWNvZGVkX29wdCB1cmkuZnJhZ21lbnRcbmxldCB3aXRoX2ZyYWdtZW50IHVyaSA9XG4gIGZ1bmN0aW9uXG4gIHxOb25lIC0+IHsgdXJpIHdpdGggZnJhZ21lbnQ9Tm9uZSB9XG4gIHxTb21lIGZyYWcgLT4geyB1cmkgd2l0aCBmcmFnbWVudD1Tb21lIChQY3QuY2FzdF9kZWNvZGVkIGZyYWcpIH1cblxubGV0IHF1ZXJ5IHVyaSA9IFF1ZXJ5Lmt2IHVyaS5xdWVyeVxubGV0IHZlcmJhdGltX3F1ZXJ5ID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9IFF1ZXJ5LihtYXRjaCB1cmkucXVlcnkgd2l0aFxuICB8IFJhdyAocXMsXykgLT4gcXNcbiAgfCBLViBbXSAtPiBOb25lXG4gIHwgS1Yga3YgLT4gU29tZSAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lOihzY2hlbWUgdXJpKSB+cGN0X2VuY29kZXIga3YpXG4pXG5sZXQgZ2V0X3F1ZXJ5X3BhcmFtJyB1cmkgayA9IFF1ZXJ5LihmaW5kIChrdiB1cmkucXVlcnkpIGspXG5sZXQgZ2V0X3F1ZXJ5X3BhcmFtIHVyaSBrID1cbiAgbWF0Y2ggZ2V0X3F1ZXJ5X3BhcmFtJyB1cmkgayB3aXRoXG4gIHxOb25lIC0+IE5vbmVcbiAgfFNvbWUgdiAtPiBTb21lIChTdHJpbmcuY29uY2F0IFwiLFwiIHYpXG5cbmxldCB3aXRoX3F1ZXJ5IHVyaSBxdWVyeSA9IHsgdXJpIHdpdGggcXVlcnk9UXVlcnkuS1YgcXVlcnkgfVxubGV0IHFfcyBxID0gTGlzdC5tYXAgKGZ1biAoayx2KSAtPiBrLFt2XSkgcVxubGV0IHdpdGhfcXVlcnknIHVyaSBxdWVyeSA9IHdpdGhfcXVlcnkgdXJpIChxX3MgcXVlcnkpXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtIHVyaSBwID0gUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKHA6OihrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbScgdXJpIChrLHYpID1cbiAgUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKChrLFt2XSk6OihrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbXMgdXJpIHBzID0gUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKHBzQChrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbXMnIHVyaSBwcyA9XG4gIFF1ZXJ5Lih7IHVyaSB3aXRoIHF1ZXJ5PUtWICgocV9zIHBzKUAoa3YgdXJpLnF1ZXJ5KSkgfSlcbmxldCByZW1vdmVfcXVlcnlfcGFyYW0gdXJpIGsgPSBRdWVyeS4oXG4gIHsgdXJpIHdpdGggcXVlcnk9S1YgKExpc3QuZmlsdGVyIChmdW4gKGsnLF8pIC0+IGs8PmsnKSAoa3YgdXJpLnF1ZXJ5KSkgfVxuKVxuXG4oKiBDb25zdHJ1Y3QgZW5jb2RlZCBwYXRoIGFuZCBxdWVyeSBjb21wb25lbnRzICopXG5sZXQgcGF0aF9hbmRfcXVlcnkgdXJpID1cbiAgbWF0Y2ggKHBhdGggdXJpKSwgKHF1ZXJ5IHVyaSkgd2l0aFxuICB8XCJcIiwgW10gLT4gXCIvXCIgKCogVE9ETzogV2hhdCBhYm91dCBzYW1lIGRvY3VtZW50PyAoLykgKilcbiAgfFwiXCIsIHEgLT4gKCogVE9ETzogV2hhdCBhYm91dCBzYW1lIGRvY3VtZW50PyAoLykgKilcbiAgICBsZXQgc2NoZW1lID0gdW5jYXN0X29wdCB1cmkuc2NoZW1lIGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIvPyVzXCIgKGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSBxKVxuICB8cCwgW10gLT4gcFxuICB8cCwgcSAtPlxuICAgIGxldCBzY2hlbWUgPSB1bmNhc3Rfb3B0IHVyaS5zY2hlbWUgaW5cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzPyVzXCIgcCAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lIHEpXG5cbigqIFRPRE86IGZ1bmN0aW9ucyB0byBhZGQgYW5kIHJlbW92ZSBmcm9tIGEgVVJJICopXG5cbigqIFJlc29sdmUgYSBVUkkgd3J0IGEgYmFzZSBVUkkgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjI+ICopXG5sZXQgcmVzb2x2ZSBzY2hlbSBiYXNlIHVyaSA9XG4gIGxldCBzY2hlbSA9IFNvbWUgKFBjdC5jYXN0X2RlY29kZWQgKG1hdGNoIHNjaGVtZSBiYXNlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAgc2NoZW1cbiAgICAgIHwgU29tZSBzY2hlbWUgLT4gc2NoZW1lXG4gICAgKSkgaW5cbiAgbm9ybWFsaXplIHNjaGVtXG4gICAgUGF0aC4obWF0Y2ggc2NoZW1lIHVyaSwgdXNlcmluZm8gdXJpLCBob3N0IHVyaSB3aXRoXG4gICAgfCBTb21lIF8sIF8sIF8gLT5cbiAgICAgIHt1cmkgd2l0aCBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgdXJpLnBhdGh9XG4gICAgfCBOb25lLCBTb21lIF8sIF9cbiAgICB8IE5vbmUsIF8sIFNvbWUgXyAtPlxuICAgICAge3VyaSB3aXRoIHNjaGVtZT1iYXNlLnNjaGVtZTsgcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIHVyaS5wYXRofVxuICAgIHwgTm9uZSwgTm9uZSwgTm9uZSAtPlxuICAgICAgbGV0IHVyaSA9IHt1cmkgd2l0aCBzY2hlbWU9YmFzZS5zY2hlbWU7IHVzZXJpbmZvPWJhc2UudXNlcmluZm87XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9YmFzZS5ob3N0OyBwb3J0PWJhc2UucG9ydH0gaW5cbiAgICAgIGxldCBwYXRoX3N0ciA9IHBhdGggdXJpIGluXG4gICAgICBpZiBwYXRoX3N0cj1cIlwiXG4gICAgICB0aGVuIHsgdXJpIHdpdGhcbiAgICAgICAgICAgICBwYXRoPWJhc2UucGF0aDtcbiAgICAgICAgICAgICBxdWVyeT1tYXRjaCB1cmkucXVlcnkgd2l0aFxuICAgICAgICAgICAgICAgfCBRdWVyeS5SYXcgKE5vbmUsXykgfCBRdWVyeS5LViBbXSAtPiBiYXNlLnF1ZXJ5XG4gICAgICAgICAgICAgICB8IF8gLT4gdXJpLnF1ZXJ5XG4gICAgICAgICAgIH1cbiAgICAgIGVsc2UgaWYgcGF0aF9zdHIuWzBdPScvJ1xuICAgICAgdGhlbiB7dXJpIHdpdGggcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIHVyaS5wYXRofVxuICAgICAgZWxzZSB7dXJpIHdpdGhcbiAgICAgICAgcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIChtZXJnZSBiYXNlLmhvc3QgYmFzZS5wYXRoIHVyaS5wYXRoKTtcbiAgICAgIH1cbiAgICApXG5cbmxldCBjYW5vbmljYWxpemUgdXJpID1cbiAgbGV0IHVyaSA9IHJlc29sdmUgXCJcIiBlbXB0eSB1cmkgaW5cbiAgbGV0IG1vZHVsZSBTY2hlbWUgPVxuICAgICh2YWwgKG1vZHVsZV9vZl9zY2hlbWUgKHVuY2FzdF9vcHQgdXJpLnNjaGVtZSkpIDogU2NoZW1lKSBpblxuICB7IHVyaSB3aXRoXG4gICAgcG9ydD1TY2hlbWUuY2Fub25pY2FsaXplX3BvcnQgdXJpLnBvcnQ7XG4gICAgcGF0aD1TY2hlbWUuY2Fub25pY2FsaXplX3BhdGggdXJpLnBhdGg7XG4gIH1cblxubGV0IHBwIHBwZiB1cmkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAodG9fc3RyaW5nIHVyaSlcbmxldCBwcF9odW0gcHBmIHVyaSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmcgdXJpKVxuXG5tb2R1bGUgUGFyc2VyID0gc3RydWN0XG4gIG9wZW4gQW5nc3Ryb21cblxuICBsZXQgc3RyaW5nX29mX2NoYXIgPSBTdHJpbmcubWFrZSAxXG5cbiAgbGV0IHN0cmluZ19vZl9jaGFyX2xpc3QgY2hhcnMgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2NoYXIgY2hhcnMpXG5cbiAgbGV0IHNjaGVtZSA9XG4gICAgbGlmdFxuICAgICAgKGZ1biBzIC0+IFNvbWUgKFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcykpKVxuICAgICAgKHRha2Vfd2hpbGUgKGZ1biBjIC0+IGMgPD4gJzonICYmIGMgPD4gJy8nICYmIGMgPD4gJz8nICYmIGMgPD4gJyMnKVxuICAgICAgPCogY2hhciAnOicpXG4gICAgPHw+IHJldHVybiBOb25lXG5cbiAgbGV0IGlzX2RpZ2l0ID0gZnVuY3Rpb24gJzAnIC4uICc5JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBoZXhfZGlnaXQgPVxuICAgIHNhdGlzZnkgKGZ1bmN0aW9uXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgaGV4YWRlY2ltYWwgPSBsaWZ0IHN0cmluZ19vZl9jaGFyX2xpc3QgKG1hbnkgaGV4X2RpZ2l0KVxuXG4gIGxldCBjX2RvdCA9IGNoYXIgJy4nXG5cbiAgbGV0IGNfYXQgPSBjaGFyICdAJ1xuXG4gIGxldCBjX2NvbG9uID0gY2hhciAnOidcblxuICBsZXQgZGVjX29jdGV0ID1cbiAgICB0YWtlX3doaWxlMSAoZnVuY3Rpb24gJzAnIC4uICc5JyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgPj49IGZ1biBudW0gLT5cbiAgICBpZiBpbnRfb2Zfc3RyaW5nIG51bSA8IDI1NiB0aGVuXG4gICAgICByZXR1cm4gbnVtXG4gICAgZWxzZVxuICAgICAgZmFpbCBcImludmFsaWQgb2N0ZWN0XCJcblxuICBsZXQgaXB2NF9hZGRyZXNzID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biB0aHJlZSBvbmUgLT4gU3RyaW5nLmNvbmNhdCBcIi5cIiB0aHJlZSBeIFwiLlwiIF4gb25lKVxuICAgICAgKGNvdW50IDMgKGRlY19vY3RldCA8KiBjX2RvdCkpXG4gICAgICBkZWNfb2N0ZXRcblxuICAoKiAtLSBhZnRlciBkb3VibGUgY29sb24sIElQdjQgZG90dGVkIG5vdGF0aW9uIGNvdWxkIGFwcGVhciBhbnl3aGVyZSAqKVxuICBsZXQgYWZ0ZXJfZG91YmxlX2NvbG9uID1cbiAgICBmaXggKGZ1biBmIC0+XG4gICAgICAgIGxpc3QgWyBpcHY0X2FkZHJlc3MgXVxuICAgICAgICA8fD4gbGlmdDIgKGZ1biB4IHkgLT4geCA6OiB5KSBoZXhhZGVjaW1hbCAoY19jb2xvbiAqPiBmIDx8PiByZXR1cm4gW10pKVxuXG4gIGxldCBkb3VibGVfY29sb24gY291bnQgPVxuICAgIGFmdGVyX2RvdWJsZV9jb2xvbiA+Pj0gKGZ1biByZXN0IC0+XG4gICAgbGV0IGZpbGxlcl9sZW5ndGggPSA4IC0gY291bnQgLSBMaXN0Lmxlbmd0aCByZXN0IGluXG4gICAgaWYgZmlsbGVyX2xlbmd0aCA8PSAwIHRoZW5cbiAgICAgIGZhaWwgXCJ0b28gbWFueSBwYXJ0cyBpbiBJUHY2IGFkZHJlc3NcIlxuICAgIGVsc2VcbiAgICAgIHJldHVybiAoXCJcIiA6OiByZXN0KSlcbiAgICA8fD4gcmV0dXJuIFtcIlwiXVxuXG4gIGxldCByZWMgcGFydCA9IGZ1bmN0aW9uXG4gICAgfCA3IC0+XG4gICAgICAoKiBtYXggOCBwYXJ0cyBpbiBhbiBJUHY2IGFkZHJlc3MgKilcbiAgICAgIGxpZnQgKGZ1biB4IC0+IFsgeCBdKSBoZXhhZGVjaW1hbFxuICAgIHwgNiAtPlxuICAgICAgKCogYWZ0ZXIgNiBwYXJ0cyBpdCBjb3VsZCBlbmQgaW4gSVB2NCBkb3R0ZWQgbm90YXRpb24gKilcbiAgICAgIGxpc3QgWyBpcHY0X2FkZHJlc3MgXSA8fD4gaGV4X3BhcnQgNlxuICAgIHwgbiAtPlxuICAgICAgaGV4X3BhcnQgblxuXG4gIGFuZCBoZXhfcGFydCBuID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biB4IHkgLT4geCA6OiB5KVxuICAgICAgaGV4YWRlY2ltYWxcbiAgICAgIChjX2NvbG9uICo+IChjX2NvbG9uICo+IGRvdWJsZV9jb2xvbiAobiArIDEpIDx8PiBwYXJ0IChuICsgMSkpKVxuXG4gIGxldCByZWMgc3BsaXRfd2l0aCBmIHhzID1cbiAgICBtYXRjaCB4cyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgW10sIFtdXG4gICAgfCB5IDo6IHlzIC0+XG4gICAgICBpZiBmIHkgdGhlblxuICAgICAgICBsZXQgenMsIHRzID0gc3BsaXRfd2l0aCBmIHlzIGluXG4gICAgICAgIHkgOjogenMsIHRzXG4gICAgICBlbHNlXG4gICAgICAgIFtdLCB4c1xuXG4gIGxldCBpcHY2ID1cbiAgICBsZXQgZm9ybWF0X2FkZHIgc2VnbWVudHMgPVxuICAgICAgbGV0IGJlZm9yZV9kb3VibGVfY29sb24sIGFmdGVyX2RvdWJsZV9jb2xvbiA9XG4gICAgICAgIHNwbGl0X3dpdGggKGZ1biBzZWdtZW50IC0+IHNlZ21lbnQgPD4gXCJcIikgc2VnbWVudHNcbiAgICAgIGluXG4gICAgICBsZXQgYmVmb3JlID0gU3RyaW5nLmNvbmNhdCBcIjpcIiBiZWZvcmVfZG91YmxlX2NvbG9uIGluXG4gICAgICBsZXQgcmVzID1cbiAgICAgICAgbWF0Y2ggYWZ0ZXJfZG91YmxlX2NvbG9uIHdpdGhcbiAgICAgICAgfCBcIlwiIDo6IHhzIC0+XG4gICAgICAgICAgYmVmb3JlIF4gXCI6OlwiIF4gU3RyaW5nLmNvbmNhdCBcIjpcIiB4c1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBiZWZvcmVcbiAgICAgIGluXG4gICAgICByZXNcbiAgICBpblxuICAgIGxpZnQgZm9ybWF0X2FkZHIgKGNfY29sb24gKj4gY19jb2xvbiAqPiBkb3VibGVfY29sb24gMCA8fD4gcGFydCAwKVxuXG4gIGxldCBpcHY2X2FkZHJlc3MgPVxuICAgIChjaGFyICdbJykgKj4gaXB2NiA8KiAoY2hhciAnXScpXG5cbiAgbGV0IHBjdF9lbmNvZGVkID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biBwY3QgZGlnaXRzIC0+IHN0cmluZ19vZl9jaGFyX2xpc3QgKHBjdCA6OiBkaWdpdHMpKVxuICAgICAgKGNoYXIgJyUnKVxuICAgICAgKGNvdW50IDIgaGV4X2RpZ2l0KVxuXG4gIGxldCBzdWJfZGVsaW1zID1cbiAgICBzYXRpc2Z5IChmdW5jdGlvblxuICAgICAgICB8ICchJyB8ICckJyB8ICcmJyB8ICdcXCcnIHwgJygnIHwgJyknIHwgJyonIHwgJysnIHwgJywnIHwgJzsnIHwgJz0nIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgdW5yZXNlcnZlZCA9XG4gICAgKCogXCJbQS1aYS16MC05LS5ffl1cIiAqKVxuICAgIHNhdGlzZnkgKGZ1bmN0aW9uXG4gICAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgfCAnMCcgLi4gJzknIHwgJy0nIHwgJy4nIHwgJ18nIHwgJ34nIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgcmVnX25hbWUgPVxuICAgIGxpZnRcbiAgICAgIChTdHJpbmcuY29uY2F0IFwiXCIpXG4gICAgICAobWFueVxuICAgICAgICAgKGNob2ljZVxuICAgICAgICAgICAgWyBzdHJpbmdfb2ZfY2hhciA8JD4gdW5yZXNlcnZlZFxuICAgICAgICAgICAgOyBwY3RfZW5jb2RlZFxuICAgICAgICAgICAgOyBzdHJpbmdfb2ZfY2hhciA8JD4gc3ViX2RlbGltc1xuICAgICAgICAgICAgXSkpXG5cbiAgbGV0IGhvc3QgPVxuICAgIGNob2ljZVxuICAgICAgWyBpcHY0X2FkZHJlc3MgPj58IChmdW4gaCAtPiBgSXB2NF9saXRlcmFsIGgpXG4gICAgICA7IGlwdjZfYWRkcmVzcyA+PnwgKGZ1biBoIC0+IGBJcHY2X2xpdGVyYWwgaClcbiAgICAgIDsgcmVnX25hbWUgPj58IChmdW4gcyAtPiBgSG9zdCAoUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBzKSkpXG4gICAgICAoKiBUT0RPKGRpbm9zYXVyZSk6IEFjY29yZGluZyB0byBSRkMzOTg2OlxuXG4gICAgICAgICBob3N0ICAgICAgICA9IElQLWxpdGVyYWwgLyBJUHY0YWRkcmVzcyAvIHJlZy1uYW1lXG4gICAgICAgICBJUC1saXRlcmFsICA9IFwiW1wiICggSVB2NmFkZHJlc3MgLyBJUHZGdXR1cmUgICkgXCJdXCJcbiAgICAgICAgIElQdkZ1dHVyZSAgID0gXCJ2XCIgMSpIRVhESUcgXCIuXCIgMSooIHVucmVzZXJ2ZWQgLyBzdWItZGVsaW1zIC8gXCI6XCIgKVxuXG4gICAgICAgICBJUHZGdXR1cmUgaXMgbm90IGltcGxlbWVudGVkLiBXZSBzaG91bGQgaGFuZGxlIGl0OlxuXG4gICAgICAgICBJUHZGdXR1cmUgICA9IFwidlwiIDEqSEVYRElHIFwiLlwiIDEqKCB1bnJlc2VydmVkIC8gc3ViLWRlbGltcyAvIFwiOlwiIClcbiAgICAgICAqKVxuICAgICAgXVxuXG4gIGxldCB1c2VyaW5mbyA9XG4gICAgbGlmdFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCBzID0gU3RyaW5nLmNvbmNhdCBcIlwiIHggaW5cbiAgICAgICAgU29tZSAoVXNlcmluZm8udXNlcmluZm9fb2ZfZW5jb2RlZCBzKSlcbiAgICAgIChtYW55XG4gICAgICAgICAoY2hvaWNlXG4gICAgICAgICAgICBbIHN0cmluZ19vZl9jaGFyIDwkPiB1bnJlc2VydmVkXG4gICAgICAgICAgICA7IHBjdF9lbmNvZGVkXG4gICAgICAgICAgICA7IHN0cmluZ19vZl9jaGFyIDwkPiBzdWJfZGVsaW1zXG4gICAgICAgICAgICA7IHN0cmluZ19vZl9jaGFyIDwkPiBjX2NvbG9uXG4gICAgICAgICAgICBdKVxuICAgICAgPCogY19hdClcbiAgICA8fD4gcmV0dXJuIE5vbmVcblxuICBsZXQgcG9ydCA9XG4gICAgcGVla19jaGFyID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSAnOicgLT5cbiAgICAgIGNfY29sb24gKj4gdGFrZV93aGlsZSBpc19kaWdpdCA+PnwgZnVuIHBvcnQgLT5cbiAgICAgIGxldCBkZWNvZGVkID0gUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBwb3J0KSBpblxuICAgICAgKHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIChQY3QudW5jYXN0X2RlY29kZWQgZGVjb2RlZCkpIHdpdGggXyAtPiBOb25lKVxuICAgIHwgU29tZSBfIHwgTm9uZSAtPlxuICAgICAgcmV0dXJuIE5vbmVcblxuICBsZXQgYXV0aG9yaXR5ID1cbiAgICBzdHJpbmcgXCIvL1wiXG4gICAgKj4gbGlmdDNcbiAgICAgICAgIChmdW4gdXNlcmluZm8gaG9zdCBwb3J0IC0+XG4gICAgICAgICAgIHVzZXJpbmZvLCBTb21lIGhvc3QsIHBvcnQpXG4gICAgICAgICB1c2VyaW5mb1xuICAgICAgICAgaG9zdFxuICAgICAgICAgcG9ydFxuICAgIDx8PiByZXR1cm4gKE5vbmUsIE5vbmUsIE5vbmUpXG5cbiAgbGV0IHBhdGggPVxuICAgIGxpZnRcbiAgICAgIFBhdGgucGF0aF9vZl9lbmNvZGVkXG4gICAgICAodGFrZV93aGlsZSAoZnVuY3Rpb24gJz8nIHwgJyMnIC0+IGZhbHNlIHwgXyAtPiB0cnVlKSlcblxuICBsZXQgcXVlcnkgPVxuICAgIGxpZnRcbiAgICAgIFF1ZXJ5Lm9mX3Jhd1xuICAgICAgKGNoYXIgJz8nICo+IHRha2VfdGlsbCAoZnVuY3Rpb24gJyMnIC0+IHRydWUgfCBfIC0+IGZhbHNlKSlcbiAgICA8fD4gcmV0dXJuIChRdWVyeS5SYXcgKE5vbmUsIExhenkuZnJvbV92YWwgW10pKVxuXG4gIGxldCBmcmFnbWVudCA9XG4gICAgbGlmdFxuICAgICAgKGZ1biBzIC0+IFNvbWUgKFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcykpKVxuICAgICAgKGNoYXIgJyMnICo+IHRha2Vfd2hpbGUgKGZ1biBfIC0+IHRydWUpKVxuICAgIDx8PiByZXR1cm4gTm9uZVxuXG4gIGxldCBfdXJpX3JlZmVyZW5jZSA9XG4gICAgbGlmdDRcbiAgICAgIChmdW4gc2NoZW1lICh1c2VyaW5mbywgaG9zdCwgcG9ydCkgcGF0aCBxdWVyeSBmcmFnbWVudCAtPlxuICAgICAgICBub3JtYWxpemUgc2NoZW1lIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH0pXG4gICAgICBzY2hlbWVcbiAgICAgIGF1dGhvcml0eVxuICAgICAgcGF0aFxuICAgICAgcXVlcnlcbiAgICA8Kj4gZnJhZ21lbnRcblxuICAoKiBYWFgoYW5tb250ZWlybyk6IEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMgd2l0aCB0aGUgb2xkIHJlZ2V4IHBhcnNlciwgd2VcbiAgICogb25seSBwYXJzZSB1bnRpbCB0aGUgZmlyc3QgbmV3bGluZSBjaGFyYWN0ZXIgYW5kIGRyb3AgZXZlcnl0aGluZyBlbHNlXG4gICAqIGFmdGVyIHRoYXQgKilcbiAgbGV0IHVyaV9yZWZlcmVuY2UgPVxuICAgIHRha2Vfd2hpbGUgKGZ1bmN0aW9uIHwgJ1xcbicgLT4gZmFsc2UgfCBfIC0+IHRydWUpID4+fCBmdW4gcyAtPlxuICAgICAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOkFsbCBfdXJpX3JlZmVyZW5jZSBzIHdpdGhcbiAgICAgIHwgT2sgdCAtPiB0XG4gICAgICB8IEVycm9yIF8gLT5cbiAgICAgICAgKCogU2hvdWxkbid0IHJlYWxseSBoYXBwZW4gaWYgdGhlIHBhcnNlciBpcyBmb3JnaXZpbmcuICopXG4gICAgICAgIGVtcHR5XG5lbmRcblxubGV0IGRlY29kZV9ob3N0IGhvc3QgPVxuICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6QWxsIFBhcnNlci5ob3N0IGhvc3Qgd2l0aFxuICB8IE9rIHBhcnNlZCAtPiBwYXJzZWRcbiAgfCBFcnJvciBfIC0+XG4gICAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOkFsbCBQYXJzZXIuaXB2NiBob3N0IHdpdGhcbiAgICB8IE9rIHBhcnNlZCAtPiAoYElwdjZfbGl0ZXJhbCBwYXJzZWQpXG4gICAgfCBFcnJvciBfIC0+IChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBob3N0KSlcblxuKCogTWFrZSBhIFVSSSByZWNvcmQuIFRoaXMgaXMgYSBiaXQgbW9yZSBpbmVmZmljaWVudCB0aGFuIGl0IG5lZWRzIHRvIGJlIGR1ZSB0byB0aGVcbiAqIGNhc3RpbmcvdW5jYXN0aW5nICh3aGljaCBpc24ndCBmdWxseSBpZGVudGl0eSBkdWUgdG8gdGhlIG9wdGlvbiBib3gpLCBidXQgaXQgaXNcbiAqIG5vIGJpZyBkZWFsIGZvciBub3cuXG4qKVxubGV0IG1ha2UgP3NjaGVtZSA/dXNlcmluZm8gP2hvc3QgP3BvcnQgP3BhdGggP3F1ZXJ5ID9mcmFnbWVudCAoKSA9XG4gIGxldCBkZWNvZGUgPSBmdW5jdGlvblxuICAgIHxTb21lIHggLT4gU29tZSAoUGN0LmNhc3RfZGVjb2RlZCB4KSB8Tm9uZSAtPiBOb25lIGluXG4gIGxldCBob3N0ID0gbWF0Y2ggdXNlcmluZm8sIGhvc3QsIHBvcnQgd2l0aFxuICAgIHwgXywgU29tZSBfLCBfIHwgTm9uZSwgTm9uZSwgTm9uZSAtPiBob3N0XG4gICAgfCBTb21lIF8sIE5vbmUsIF8gfCBfLCBOb25lLCBTb21lIF8gLT4gU29tZSBcIlwiXG4gIGluXG4gIGxldCB1c2VyaW5mbyA9IG1hdGNoIHVzZXJpbmZvIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSB8IFNvbWUgdSAtPiBTb21lICh1c2VyaW5mb19vZl9lbmNvZGVkIHUpIGluXG4gIGxldCBwYXRoID0gbWF0Y2ggcGF0aCB3aXRoXG4gICAgfE5vbmUgLT4gW10gfCBTb21lIHAgLT5cbiAgICAgIGxldCBwYXRoID0gcGF0aF9vZl9lbmNvZGVkIHAgaW5cbiAgICAgIG1hdGNoIGhvc3QsIHBhdGggd2l0aFxuICAgICAgfCBOb25lLCBfIHwgU29tZSBfLCBcIi9cIjo6XyB8IFNvbWUgXywgW10gLT4gcGF0aFxuICAgICAgfCBTb21lIF8sIF8gIC0+IFwiL1wiOjpwYXRoXG4gIGluXG4gIGxldCBxdWVyeSA9IG1hdGNoIHF1ZXJ5IHdpdGhcbiAgICB8IE5vbmUgLT4gUXVlcnkuS1YgW11cbiAgICB8IFNvbWUgcCAtPiBRdWVyeS5LViBwXG4gIGluXG4gIGxldCBzY2hlbWUgPSBkZWNvZGUgc2NoZW1lIGluXG4gIG5vcm1hbGl6ZSBzY2hlbWVcbiAgICB7IHNjaGVtZTsgdXNlcmluZm87XG4gICAgICBob3N0ID1cbiAgICAgICAgKG1hdGNoIGhvc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgaG9zdCAtPiBTb21lIChkZWNvZGVfaG9zdCBob3N0KVxuICAgICAgICB8IE5vbmUgLT4gTm9uZSk7XG4gICAgICBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQ9ZGVjb2RlIGZyYWdtZW50IH1cblxubGV0IHdpdGhfaG9zdCB1cmkgaG9zdCA9XG4gIHsgdXJpIHdpdGhcbiAgICBob3N0ID0gKG1hdGNoIGhvc3Qgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGhvc3QgLT4gU29tZSAoZGVjb2RlX2hvc3QgaG9zdClcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICB9XG5cbmxldCB3aXRoX3VyaSA/c2NoZW1lID91c2VyaW5mbyA/aG9zdCA/cG9ydCA/cGF0aCA/cXVlcnkgP2ZyYWdtZW50IHVyaSA9XG4gIGxldCB3aXRoX3BhdGhfb3B0IHUgbyA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IHdpdGhfcGF0aCB1IFwiXCJcbiAgICB8IFNvbWUgcCAtPiB3aXRoX3BhdGggdSBwXG4gIGluXG4gIGxldCB3aXRoX3F1ZXJ5X29wdCB1IG8gPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiB3aXRoX3F1ZXJ5IHUgW11cbiAgICB8IFNvbWUgcSAtPiB3aXRoX3F1ZXJ5IHUgcVxuICBpblxuICBsZXQgd2l0aF8gZiBvIHUgPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiB1XG4gICAgfCBTb21lIHggLT4gZiB1IHhcbiAgaW5cbiAgd2l0aF8gd2l0aF9zY2hlbWUgc2NoZW1lIHVyaVxuICB8PiB3aXRoXyB3aXRoX3VzZXJpbmZvIHVzZXJpbmZvXG4gIHw+IHdpdGhfIHdpdGhfaG9zdCBob3N0XG4gIHw+IHdpdGhfIHdpdGhfcG9ydCBwb3J0XG4gIHw+IHdpdGhfIHdpdGhfcGF0aF9vcHQgcGF0aFxuICB8PiB3aXRoXyB3aXRoX3F1ZXJ5X29wdCBxdWVyeVxuICB8PiB3aXRoXyB3aXRoX2ZyYWdtZW50IGZyYWdtZW50XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gICgqIFRvIHByZXNlcnZlIHRoZSBvbGQgcmVnZXggcGFyc2VyJ3MgYmVoYXZpb3IsIHdlIG9ubHkgcGFyc2UgYSBwcmVmaXgsIGFuZFxuICAgKiBzdG9wIHdoZW5ldmVyIHdlIGNhbid0IHBhcnNlIG1vcmUuICopXG4gIG1hdGNoIEFuZ3N0cm9tLnBhcnNlX3N0cmluZyB+Y29uc3VtZTpQcmVmaXggUGFyc2VyLnVyaV9yZWZlcmVuY2UgcyB3aXRoXG4gIHwgT2sgdCAtPiB0XG4gIHwgRXJyb3IgXyAtPlxuICAgICgqIFNob3VsZG4ndCByZWFsbHkgaGFwcGVuIGlmIHRoZSBwYXJzZXIgaXMgZm9yZ2l2aW5nLiAqKVxuICAgIGVtcHR5XG5cbm1vZHVsZSBBYnNvbHV0ZV9odHRwID0gc3RydWN0XG4gIHR5cGUgdXJpID0gdFxuICB0eXBlIHQgPVxuICAgIHsgc2NoZW1lIDogWyBgSHR0cCB8IGBIdHRwcyBdO1xuICAgICAgdXNlcmluZm86IFVzZXJpbmZvLnQgb3B0aW9uO1xuICAgICAgaG9zdDogWyBgSXB2NF9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBgSXB2Nl9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBgSG9zdCBvZiBQY3QuZGVjb2RlZF07XG4gICAgICBwb3J0IDogaW50IG9wdGlvbjtcbiAgICAgIHBhdGggOiBQYXRoLnQ7XG4gICAgICBxdWVyeSA6IFF1ZXJ5LnQ7XG4gICAgICBmcmFnbWVudCA6IFBjdC5kZWNvZGVkIG9wdGlvblxuICAgIH1cblxuICBsZXQgKCBsZXQqICkgPSBSZXN1bHQuYmluZFxuXG4gIGxldCB0b191cmkgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfSA9XG4gICAgbGV0IHNjaGVtZSA9XG4gICAgICBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgfCBgSHR0cCAtPiBQY3QuY2FzdF9kZWNvZGVkIFwiaHR0cFwiXG4gICAgICB8IGBIdHRwcyAtPiBQY3QuY2FzdF9kZWNvZGVkIFwiaHR0cHNcIlxuICAgIGluXG4gICAgKHsgc2NoZW1lID0gU29tZSBzY2hlbWU7XG4gICAgICAgdXNlcmluZm87XG4gICAgICAgaG9zdCA9IFNvbWUgaG9zdDtcbiAgICAgICBwb3J0O1xuICAgICAgIHBhdGg7XG4gICAgICAgcXVlcnk7XG4gICAgICAgZnJhZ21lbnQgfSA6IHVyaSlcbiAgOztcblxuICBsZXQgb2ZfdXJpICh7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudCB9OiB1cmkpID1cbiAgICBsZXQqIHNjaGVtZSA9XG4gICAgICBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEVycm9yIChgTXNnIFwiTm8gc2NoZW1lIHByZXNlbnQgaW4gVVJJXCIpXG4gICAgICB8IFNvbWUgc2NoZW1lIC0+XG4gICAgICAgIChtYXRjaCBQY3QudW5jYXN0X2RlY29kZWQgc2NoZW1lIHdpdGhcbiAgICAgICAgIHwgXCJodHRwXCIgLT4gT2sgYEh0dHBcbiAgICAgICAgIHwgXCJodHRwc1wiIC0+IE9rIGBIdHRwc1xuICAgICAgICAgfCB1bnN1cHBvcnRlZF9zY2hlbWUgLT5cbiAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAoYE1zZ1xuICAgICAgICAgICAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiT25seSBodHRwIGFuZCBodHRwcyBVUklzIGFyZSBzdXBwb3J0ZWQuICVzIGlzIGludmFsaWQuXCJcbiAgICAgICAgICAgICAgICAgICB1bnN1cHBvcnRlZF9zY2hlbWUpKSlcbiAgICBpblxuICAgIGxldCogaG9zdCA9IE9wdGlvbi50b19yZXN1bHQgfm5vbmU6KGBNc2cgXCJob3N0IGlzIHJlcXVpcmVkIGZvciBIVFRQKFMpIHVyaXNcIikgaG9zdCBpblxuICAgIE9rIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH1cbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nIHMgPSBtYXRjaCBvZl9zdHJpbmcgcyB8PiBvZl91cmkgd2l0aFxuICAgIHwgT2sgdCAtPiB0XG4gICAgfCBFcnJvciAoYE1zZyBlcnJvcikgLT4gZmFpbHdpdGggZXJyb3JcblxuICBsZXQgdG9fc3RyaW5nID9wY3RfZW5jb2RlciB0ID0gdG9fdXJpIHQgfD4gdG9fc3RyaW5nID9wY3RfZW5jb2RlclxuXG4gIGxldCBub3JtYWxpemUgdCA9XG4gICAgeyB0IHdpdGhcbiAgICAgIGhvc3QgPSBtYXRjaCB0Lmhvc3Qgd2l0aFxuICAgICAgIHwgKGBJcHY0X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIChgSXB2NF9saXRlcmFsIChTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhvc3QpKVxuICAgICAgIHwgKGBJcHY2X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIChgSXB2Nl9saXRlcmFsIChTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhvc3QpKVxuICAgICAgIHwgKGBIb3N0IGhvc3QpIC0+XG4gICAgICAgICAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgKFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgKFBjdC51bmNhc3RfZGVjb2RlZCBob3N0KSkpKVxuICAgIH1cblxuICBsZXQgbWFrZSB+c2NoZW1lIH5ob3N0ID91c2VyaW5mbyA/cG9ydCA/cGF0aCA/cXVlcnkgP2ZyYWdtZW50ICgpID1cbiAgICBsZXQgZGVjb2RlID0gZnVuY3Rpb25cbiAgICAgIHxTb21lIHggLT4gU29tZSAoUGN0LmNhc3RfZGVjb2RlZCB4KSB8Tm9uZSAtPiBOb25lIGluXG4gICAgbGV0IHVzZXJpbmZvID0gbWF0Y2ggdXNlcmluZm8gd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmUgfCBTb21lIHUgLT4gU29tZSAodXNlcmluZm9fb2ZfZW5jb2RlZCB1KSBpblxuICAgIGxldCBwYXRoID0gbWF0Y2ggcGF0aCB3aXRoXG4gICAgICB8Tm9uZSAtPiBbXSB8IFNvbWUgcCAtPlxuICAgICAgICBsZXQgcGF0aCA9IHBhdGhfb2ZfZW5jb2RlZCBwIGluXG4gICAgICAgIG1hdGNoIHBhdGggd2l0aFxuICAgICAgICB8ICBcIi9cIjo6XyB8ICBbXSAtPiBwYXRoXG4gICAgICAgIHwgXyAgLT4gXCIvXCI6OnBhdGhcbiAgICBpblxuICAgIGxldCBxdWVyeSA9IG1hdGNoIHF1ZXJ5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBRdWVyeS5LViBbXVxuICAgICAgfCBTb21lIHAgLT4gUXVlcnkuS1YgcFxuICAgIGluXG4gICAgbm9ybWFsaXplXG4gICAgICB7IHNjaGVtZTtcbiAgICAgICAgdXNlcmluZm87XG4gICAgICAgIGhvc3Q9IGRlY29kZV9ob3N0IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudD1kZWNvZGUgZnJhZ21lbnQgfVxuXG4gIGxldCBob3N0IHQgPVxuICAgIG1hdGNoIHQuaG9zdCB3aXRoXG4gICAgfCAoYElwdjRfbGl0ZXJhbCBoIHwgYElwdjZfbGl0ZXJhbCBoKSAtPiBoXG4gICAgfCAoYEhvc3QgaCkgLT4gKFBjdC51bmNhc3RfZGVjb2RlZCBoKVxuXG4gIGxldCBzY2hlbWUgdCA9IHQuc2NoZW1lXG5lbmRcbiIsIm9wZW4gVXJpXG5cbm1vZHVsZSBEZXJpdmVkID1cbnN0cnVjdFxuXG5cdG9wZW4gU2V4cGxpYjAuU2V4cF9jb252XG5cblx0dHlwZSBjb21wb25lbnQgPSBbXG5cdCAgfCBgU2NoZW1lXG5cdCAgfCBgQXV0aG9yaXR5XG5cdCAgfCBgVXNlcmluZm8gKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcblx0ICB8IGBIb3N0ICgqIHN1YmNvbXBvbmVudCBvZiBhdXRob3JpdHkgaW4gc29tZSBzY2hlbWVzICopXG5cdCAgfCBgUGF0aFxuXHQgIHwgYFF1ZXJ5XG5cdCAgfCBgUXVlcnlfa2V5XG5cdCAgfCBgUXVlcnlfdmFsdWVcblx0ICB8IGBGcmFnbWVudFxuICAgICAgICAgIHwgYEdlbmVyaWNcbiAgICAgICAgICB8IGBDdXN0b20gb2YgKGNvbXBvbmVudCAqIHN0cmluZyAqIHN0cmluZylcblx0XSBbQEBkZXJpdmluZyBzZXhwXVxuXG5cdHR5cGUgdCA9IHtcbiAgICAgICAgICBzY2hlbWU6IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgdXNlcmluZm86IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgaG9zdDogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBwb3J0OiBpbnQgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHBhdGg6IHN0cmluZyBbQGRlZmF1bHQgXCJcIl0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBxdWVyeTogKHN0cmluZyAqIHN0cmluZyBsaXN0KSBsaXN0IFtAc2V4cC5saXN0XTtcbiAgICAgICAgICBmcmFnbWVudDogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXVxuXHR9IFtAQGRlcml2aW5nIHNleHBdXG5cbmVuZFxuXG5vcGVuIERlcml2ZWRcblxubGV0IGNvbXBvbmVudF9vZl9zZXhwID0gY29tcG9uZW50X29mX3NleHBcbmxldCBzZXhwX29mX2NvbXBvbmVudCA9IHNleHBfb2ZfY29tcG9uZW50XG5cbmxldCB0X29mX3NleHAgc2V4cCA9XG5cdGxldCB0ID0gdF9vZl9zZXhwIHNleHAgaW5cblx0VXJpLm1ha2Vcblx0XHQ/c2NoZW1lOnQuc2NoZW1lXG5cdFx0P3VzZXJpbmZvOnQudXNlcmluZm9cblx0XHQ/aG9zdDp0Lmhvc3Rcblx0XHQ/cG9ydDp0LnBvcnRcblx0XHR+cGF0aDp0LnBhdGhcblx0XHR+cXVlcnk6dC5xdWVyeVxuXHRcdD9mcmFnbWVudDp0LmZyYWdtZW50XG5cdFx0KClcblxubGV0IHNleHBfb2ZfdCB0ID1cblx0c2V4cF9vZl90IHtcblx0XHRzY2hlbWUgPSBzY2hlbWUgdDtcblx0XHR1c2VyaW5mbyA9IHVzZXJpbmZvIHQ7XG5cdFx0aG9zdCA9IGhvc3QgdDtcblx0XHRwb3J0ID0gcG9ydCB0O1xuXHRcdHBhdGggPSBwYXRoIHQ7XG5cdFx0cXVlcnkgPSBxdWVyeSB0O1xuXHRcdGZyYWdtZW50ID0gZnJhZ21lbnQgdFxuXHR9XG5cbnR5cGUgY29tcG9uZW50ID0gVXJpLmNvbXBvbmVudFxubGV0IGNvbXBhcmUgYSBiID0gVXJpLmNvbXBhcmUgYSBiXG5sZXQgZXF1YWwgYSBiID0gVXJpLmVxdWFsIGEgYlxudHlwZSB0ID0gVXJpLnRcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gQ29yZVxuXG5sZXQgaXNfdmFsaWRfaWQgcyA9XG4gIGlmIFN0cmluZy5lcXVhbCBzIFwiXCJcbiAgdGhlbiBmYWxzZVxuICBlbHNlIChcbiAgICBtYXRjaCBzLlswXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IGZhbHNlXG4gICAgfCBfIC0+XG4gICAgICBTdHJpbmcuZm9yX2FsbCBzIH5mOihmdW5jdGlvblxuICAgICAgICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJ18nIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZSkpXG47O1xuXG5sZXQgaXNfdmFsaWRfZmllbGRfbmFtZSB+c2VlbiBuYW1lID0gaXNfdmFsaWRfaWQgbmFtZSAmJiBub3QgKFNldC5tZW0gc2VlbiBuYW1lKVxuXG5sZXQgcmVjIGtleV92YWx1ZV9zaGFwZSB+c2VlbiB+cmV2X2FjYyBsaXN0ID1cbiAgbWF0Y2ggKGxpc3QgOiBTZXhwLnQgbGlzdCkgd2l0aFxuICB8IFtdIC0+IFNvbWUgKExpc3QucmV2IHJldl9hY2MpXG4gIHwgQXRvbSBuYW1lIDo6IHJlc3Qgd2hlbiBpc192YWxpZF9maWVsZF9uYW1lIH5zZWVuIG5hbWUgLT5cbiAgICBsZXQgcmV2X2FjYyA9IChuYW1lLCBOb25lKSA6OiByZXZfYWNjIGluXG4gICAgbGV0IHNlZW4gPSBTZXQuYWRkIHNlZW4gbmFtZSBpblxuICAgIGtleV92YWx1ZV9zaGFwZSB+c2VlbiB+cmV2X2FjYyByZXN0XG4gIHwgTGlzdCBbIEF0b20gbmFtZTsgdiBdIDo6IHJlc3Qgd2hlbiBpc192YWxpZF9maWVsZF9uYW1lIH5zZWVuIG5hbWUgLT5cbiAgICBsZXQgcmV2X2FjYyA9IChuYW1lLCBTb21lIHYpIDo6IHJldl9hY2MgaW5cbiAgICBsZXQgc2VlbiA9IFNldC5hZGQgc2VlbiBuYW1lIGluXG4gICAga2V5X3ZhbHVlX3NoYXBlIH5zZWVuIH5yZXZfYWNjIHJlc3RcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgYW55X29mX3NleHAgPSBmdW5jdGlvblxuICB8IFNleHAuQXRvbSBzIC0+IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBzKVxuICB8IFNleHAuTGlzdCBbIEF0b20gbmFtZTsgdiBdIC0+IEpzLlVuc2FmZS5vYmogW3wgbmFtZSwgYW55X29mX3NleHAgdiB8XVxuICB8IFNleHAuTGlzdCBsIC0+XG4gICAgKG1hdGNoIGtleV92YWx1ZV9zaGFwZSB+c2VlbjpTdHJpbmcuU2V0LmVtcHR5IH5yZXZfYWNjOltdIGwgd2l0aFxuICAgICB8IE5vbmUgLT4gTGlzdC5tYXAgbCB+Zjphbnlfb2Zfc2V4cCB8PiBBcnJheS5vZl9saXN0IHw+IEpzLmFycmF5IHw+IEpzLlVuc2FmZS5pbmplY3RcbiAgICAgfCBTb21lIFtdIC0+IEpzLmFycmF5IFt8fF0gfD4gSnMuVW5zYWZlLmluamVjdFxuICAgICB8IFNvbWUgbCAtPlxuICAgICAgIEpzLlVuc2FmZS5vYmpcbiAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBuYW1lLCBTb21lIHYgLT4gbmFtZSwgYW55X29mX3NleHAgdlxuICAgICAgICAgICAgfCBuYW1lLCBOb25lIC0+IG5hbWUsIEpzLlVuc2FmZS5pbmplY3QgSnMubnVsbClcbiAgICAgICAgICB8PiBBcnJheS5vZl9saXN0KSlcbjs7XG5cbmxldCBsb2dfcyBzZXhwID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKGFueV9vZl9zZXhwIHNleHApXG5sZXQgbG9nX3NfYXNfc3RyaW5nIHNleHAgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIChTZXhwLnRvX3N0cmluZ19odW0gc2V4cCkpXG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgdHlwZSB1ID0geyBzb21lX25hbWUgOiBzdHJpbmcgfSBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRm9vXG4gICAgICB8IEJhciBvZlxuICAgICAgICAgIHsgZmllbGQxIDogdVxuICAgICAgICAgIDsgZmllbGQyIDogc3RyaW5nIG9wdGlvblxuICAgICAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcbiAgaW5cbiAgbGV0IHRvX3N0cmluZyA6IEpzLlVuc2FmZS5hbnkgLT4gc3RyaW5nID1cbiAgICBmdW4gYW55IC0+IEpzLnRvX3N0cmluZyAoSnMuX0pTT04jI3N0cmluZ2lmeSBhbnkgOiBKcy5qc19zdHJpbmcgSnMudClcbiAgaW5cbiAgbGV0IG9wZW4gTSBpblxuICBwcmludF9lbmRsaW5lICh0b19zdHJpbmcgKGFueV9vZl9zZXhwIChzZXhwX29mX3QgRm9vKSkpO1xuICBbJWV4cGVjdCB7fCBcIkZvb1wiIHx9XTtcbiAgcHJpbnRfZW5kbGluZVxuICAgICh0b19zdHJpbmdcbiAgICAgICAoYW55X29mX3NleHBcbiAgICAgICAgICAoc2V4cF9vZl90XG4gICAgICAgICAgICAgKEJhciB7IGZpZWxkMSA9IHsgc29tZV9uYW1lID0gXCJkZWJ1Z1wiIH07IGZpZWxkMiA9IFNvbWUgXCJvdGhlciBzdHJpbmdcIiB9KSkpKTtcbiAgWyVleHBlY3Qge3wge1wiQmFyXCI6bnVsbCxcImZpZWxkMVwiOntcInNvbWVfbmFtZVwiOlwiZGVidWdcIn0sXCJmaWVsZDJcIjpbXCJvdGhlciBzdHJpbmdcIl19IHx9XVxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwiZHVwbGljYXRlIGtleXMgYXJlIGRpc3BsYXllZCBjb3JyZWN0bHlcIiA9XG4gIGxldCB0b19zdHJpbmcgOiBKcy5VbnNhZmUuYW55IC0+IHN0cmluZyA9XG4gICAgZnVuIGFueSAtPiBKcy50b19zdHJpbmcgKEpzLl9KU09OIyNzdHJpbmdpZnkgYW55IDogSnMuanNfc3RyaW5nIEpzLnQpXG4gIGluXG4gIGxldCBzZXhwX3dpdGhfZHVwbGljYXRlX2tleXMgPSB7fCAoKEEgQikgKEEgQykpIHx9IHw+IFNleHAub2Zfc3RyaW5nIGluXG4gIHByaW50X2VuZGxpbmUgKHRvX3N0cmluZyAoYW55X29mX3NleHAgc2V4cF93aXRoX2R1cGxpY2F0ZV9rZXlzKSk7XG4gIFslZXhwZWN0IHt8IFt7XCJBXCI6XCJCXCJ9LHtcIkFcIjpcIkNcIn1dIHx9XVxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwibm8gc3RhY2sgb3ZlcmZsb3dcIiA9XG4gIGxldCBhID0gQXJyYXkuaW5pdCAxMDAwMCB+ZjooZnVuIGkgLT4gc3ByaW50ZiBcImYlZFwiIGksIGkpIGluXG4gIGxldCBzZXhwID0gWyVzZXhwX29mOiAoc3RyaW5nICogaW50KSBhcnJheV0gYSBpblxuICBsZXQgeCA9IGFueV9vZl9zZXhwIHNleHAgaW5cbiAgcHJpbnRmIFwiJWRcIiAoSnMuVW5zYWZlLmNvZXJjZSB4KSMjLmY5OTk7XG4gIFslZXhwZWN0IHt8IDk5OSB8fV1cbjs7XG4iLCJtb2R1bGUgQXN5bmNfanNfZGVidWcgPSBEZWJ1Z1xub3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgVXJpID0gc3RydWN0XG4gIGluY2x1ZGUgVXJpXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFVyaV9zZXhwLnNleHBfb2ZfdFxuZW5kXG5cbm1vZHVsZSBXZWJzb2NrZXRfY29ubmVjdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IEFzeW5jX3JwY19rZXJuZWwuUnBjLkNvbm5lY3Rpb25cblxuICB0eXBlICgncmVzdCwgJ2ltcGxlbWVudGF0aW9ucykgY2xpZW50X3QgPVxuICAgID91cmk6VXJpLnRcbiAgICAtPiA/aGVhcnRiZWF0X2NvbmZpZzpULkhlYXJ0YmVhdF9jb25maWcudFxuICAgIC0+ID9kZXNjcmlwdGlvbjpJbmZvLnRcbiAgICAtPiA/aW1wbGVtZW50YXRpb25zOidpbXBsZW1lbnRhdGlvbnMgVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLnRcbiAgICAtPiAncmVzdFxuXG4gIG1vZHVsZSBDbG9zZV9jb2RlIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgICB2YWwgb2ZfZXZlbnQgOiBfIFdlYlNvY2tldHMuY2xvc2VFdmVudCBKcy50IC0+IHRcbiAgICB2YWwgbm9ybWFsX2Nsb3N1cmUgOiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgY2xvc2VfZXZlbnRfY29kZSA9IGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGFsbF9vZl9jbG9zZV9ldmVudF9jb2RlID0gW11cblxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5vcm1hbF9jbG9zdXJlXG4gICAgICB8IEdvaW5nX2F3YXlcbiAgICAgIHwgUHJvdG9jb2xfZXJyb3JcbiAgICAgIHwgVW5zdXBwb3J0ZWRfZGF0YVxuICAgICAgfCBOb19zdGF0dXNfUmVjZWl2ZWRcbiAgICAgIHwgQWJub3JtYWxfY2xvc3VyZVxuICAgICAgfCBJbnZhbGlkX2ZyYW1lX3BheWxvYWRfZGF0YVxuICAgICAgfCBQb2xpY3lfdmlvbGF0aW9uXG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZ1xuICAgICAgfCBNaXNzaW5nX2V4dGVuc2lvblxuICAgICAgfCBJbnRlcm5hbF9lcnJvclxuICAgICAgfCBTZXJ2aWNlX3Jlc3RhcnRcbiAgICAgIHwgVHJ5X2FnYWluX2xhdGVyXG4gICAgICB8IEJhZF9nYXRld2F5XG4gICAgICB8IFRMU19oYW5kc2hha2VcbiAgICAgIHwgVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlIG9mIGNsb3NlX2V2ZW50X2NvZGVcbiAgICAgIHwgSW52YWxpZF9jbG9zZV9ldmVudF9jb2RlIG9mIGNsb3NlX2V2ZW50X2NvZGVcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHBdXG5cbiAgICBsZXQgbm9ybWFsX2Nsb3N1cmUgPSBOb3JtYWxfY2xvc3VyZVxuXG4gICAgbGV0IG9mX2ludCA9IGZ1bmN0aW9uXG4gICAgICB8IDEwMDAgLT4gTm9ybWFsX2Nsb3N1cmVcbiAgICAgIHwgMTAwMSAtPiBHb2luZ19hd2F5XG4gICAgICB8IDEwMDIgLT4gUHJvdG9jb2xfZXJyb3JcbiAgICAgIHwgMTAwMyAtPiBVbnN1cHBvcnRlZF9kYXRhXG4gICAgICB8IDEwMDUgLT4gTm9fc3RhdHVzX1JlY2VpdmVkXG4gICAgICB8IDEwMDYgLT4gQWJub3JtYWxfY2xvc3VyZVxuICAgICAgfCAxMDA3IC0+IEludmFsaWRfZnJhbWVfcGF5bG9hZF9kYXRhXG4gICAgICB8IDEwMDggLT4gUG9saWN5X3Zpb2xhdGlvblxuICAgICAgfCAxMDA5IC0+IE1lc3NhZ2VfdG9vX2JpZ1xuICAgICAgfCAxMDEwIC0+IE1pc3NpbmdfZXh0ZW5zaW9uXG4gICAgICB8IDEwMTEgLT4gSW50ZXJuYWxfZXJyb3JcbiAgICAgIHwgMTAxMiAtPiBTZXJ2aWNlX3Jlc3RhcnRcbiAgICAgIHwgMTAxMyAtPiBUcnlfYWdhaW5fbGF0ZXJcbiAgICAgIHwgMTAxNCAtPiBCYWRfZ2F0ZXdheVxuICAgICAgfCAxMDE1IC0+IFRMU19oYW5kc2hha2VcbiAgICAgIHwgY29kZSAtPlxuICAgICAgICBpZiBjb2RlID49IDMwMDAgJiYgY29kZSA8PSA0OTk5XG4gICAgICAgIHRoZW4gVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlIGNvZGVcbiAgICAgICAgZWxzZSBJbnZhbGlkX2Nsb3NlX2V2ZW50X2NvZGUgY29kZVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZXZlbnQgY2xvc2VfZXZlbnQgPSBvZl9pbnQgY2xvc2VfZXZlbnQjIy5jb2RlXG5cbiAgICBsZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgICAgIHwgTm9ybWFsX2Nsb3N1cmUgLT4gMTAwMFxuICAgICAgfCBHb2luZ19hd2F5IC0+IDEwMDFcbiAgICAgIHwgUHJvdG9jb2xfZXJyb3IgLT4gMTAwMlxuICAgICAgfCBVbnN1cHBvcnRlZF9kYXRhIC0+IDEwMDNcbiAgICAgIHwgTm9fc3RhdHVzX1JlY2VpdmVkIC0+IDEwMDVcbiAgICAgIHwgQWJub3JtYWxfY2xvc3VyZSAtPiAxMDA2XG4gICAgICB8IEludmFsaWRfZnJhbWVfcGF5bG9hZF9kYXRhIC0+IDEwMDdcbiAgICAgIHwgUG9saWN5X3Zpb2xhdGlvbiAtPiAxMDA4XG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZyAtPiAxMDA5XG4gICAgICB8IE1pc3NpbmdfZXh0ZW5zaW9uIC0+IDEwMTBcbiAgICAgIHwgSW50ZXJuYWxfZXJyb3IgLT4gMTAxMVxuICAgICAgfCBTZXJ2aWNlX3Jlc3RhcnQgLT4gMTAxMlxuICAgICAgfCBUcnlfYWdhaW5fbGF0ZXIgLT4gMTAxM1xuICAgICAgfCBCYWRfZ2F0ZXdheSAtPiAxMDE0XG4gICAgICB8IFRMU19oYW5kc2hha2UgLT4gMTAxNVxuICAgICAgfCBVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUgY29kZSAtPiBjb2RlXG4gICAgICB8IEludmFsaWRfY2xvc2VfZXZlbnRfY29kZSBjb2RlIC0+IGNvZGVcbiAgICA7O1xuXG4gICAgbGV0JXRlc3RfdW5pdCBcInRvX2ludCAtPiBvZl9pbnQgcm91bmQtdHJpcFwiID1cbiAgICAgIExpc3QuaXRlciBhbGwgfmY6KGZ1biB0IC0+IGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiB0XSAob2ZfaW50ICh0b19pbnQgdCkpIHQpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBjbG9zZV93ZWJzb2NrZXQgKHdlYnNvY2tldCA6IFdlYlNvY2tldHMud2ViU29ja2V0IEpzLnQpIHJlYXNvbiA9XG4gICAgKCogW2Nsb3NlX3dpdGhDb2RlQW5kUmVhc29uXSBkb2VzIG5vdGhpbmcgaWYgdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeSBDbG9zZWQuICopXG4gICAgbGV0IGNsb3NlIHJlYXNvbiA9XG4gICAgICAoKiBUaGUgY29kZSBtdXN0IGJlIGVpdGhlciAxMDAwIChOb3JtYWxfY2xvc3VyZSksIG9yIGJldHdlZW4gMzAwMCBhbmQgNDk5OVxuICAgICAgICAgKFVua25vd25fY2xvc2VfZXZlbnRfY29kZSkuICopXG4gICAgICB3ZWJzb2NrZXQjI2Nsb3NlX3dpdGhDb2RlQW5kUmVhc29uXG4gICAgICAgIENsb3NlX2NvZGUuKHRvX2ludCBub3JtYWxfY2xvc3VyZSlcbiAgICAgICAgKEpzLnN0cmluZyByZWFzb24pXG4gICAgaW5cbiAgICBtYXRjaCBjbG9zZSByZWFzb24gd2l0aFxuICAgIHwgKCkgLT4gKClcbiAgICB8IGV4Y2VwdGlvbiAoXyA6IEV4bi50KSAtPlxuICAgICAgKCogdGhpcyBjYW4gZmFpbCBpZiBbcmVhc29uXSBpcyB0b28gbG9uZyBvciBjb250YWlucyBpbnZhbGlkIFVURjggKilcbiAgICAgIGNsb3NlIFwiY2xvc2UtcmVhc29uLXdhcy10b28tbG9uZy1vci1jb250YWlucy1pbnZhbGlkLXV0ZjhcIlxuICA7O1xuXG4gIGxldCBjb25uZWN0X3dlYnNvY2tldCB1cmwgfmZyb21fc2VydmVyIH50b19zZXJ2ZXIgPVxuICAgIG1hdGNoIG5ldyVqcyBXZWJTb2NrZXRzLndlYlNvY2tldCAoSnMuc3RyaW5nIChVcmkudG9fc3RyaW5nIHVybCkpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBKc19lcnJvci5FeG4gZXhuIC0+XG4gICAgICAoKiBlLmcuIFNFQ1VSSVRZX0VSUiwgdGhvdWdoIG5vdGUgdGhhdCBlLmcuIGNvbm5lY3RpbmcgdG8gd3M6Ly8gZnJvbSBhIGh0dHBzOi8vIHBhZ2VcbiAgICAgICAgIGluIGNocm9tZSBzZWVtcyB0byBtYW5pZmVzdCBhcyBzdWNjZXNzZnVsIGNvbnN0cnVjdGlvbiBidXQgaW1tZWRpYXRlIGNsb3N1cmVcbiAgICAgICAgIChzZWUgYmVsb3cpLiAgKilcbiAgICAgIHJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIChKc19lcnJvci5tZXNzYWdlIGV4bikpXG4gICAgfCBleGNlcHRpb24gZXhuIC0+IHJldHVybiAoT3JfZXJyb3Iub2ZfZXhuIGV4bilcbiAgICB8IHdlYnNvY2tldCAtPlxuICAgICAgbGV0IGNvbm5lY3RlZF9pdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIGxldCBjbGVhbnVwIH5yZWFzb24gPVxuICAgICAgICAoKiBJZiB3ZSBoYXZlbid0IGNvbm5lY3RlZCB5ZXQsIHRoZW4gY29ubmVjdGluZyBqdXN0IGZhaWxlZC4gT3RoZXJ3aXNlIGl0IHdhcyB0aGVcbiAgICAgICAgICAgY2xvc3VyZSBvZiBhbiBleGlzdGluZyBjb25uZWN0aW9uLiAqKVxuICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgY29ubmVjdGVkX2l2YXIgKEVycm9yIHJlYXNvbik7XG4gICAgICAgICgqIFtQaXBlLmNsb3NlXSBhbmQgW1dlYlNvY2tldC5jbG9zZV0gYXJlIGFsbCBpZGVtcG90ZW50LiAqKVxuICAgICAgICBQaXBlLmNsb3NlIGZyb21fc2VydmVyO1xuICAgICAgICBQaXBlLmNsb3NlX3JlYWQgdG9fc2VydmVyO1xuICAgICAgICBjbG9zZV93ZWJzb2NrZXQgd2Vic29ja2V0IChFcnJvci50b19zdHJpbmdfaHVtIHJlYXNvbilcbiAgICAgIGluXG4gICAgICBsZXQgb25jbG9zZSAoY2xvc2VfZXZlbnQgOiBfIFdlYlNvY2tldHMuY2xvc2VFdmVudCBKcy50KSA9XG4gICAgICAgICgqIFRoZSBSUEMgQVBJIGRvZXNuJ3QgZ2l2ZSB1cyBhIGdvb2QgcGxhY2UgdG8gcHV0IGRldGFpbHMgYWJvdXQgX3doeV8gdGhlXG4gICAgICAgICAgIGNvbm5lY3Rpb24gY2xvc2VkLlxuXG4gICAgICAgICAgIE5vdGUgdGhhdCBpbiBDaHJvbWUgW2Nsb3NlX2V2ZW50IyMucmVhc29uXSBpcyB0eXBpY2FsbHkgZW1wdHkgYW5kXG4gICAgICAgICAgIFtjbG9zZV9ldmVudCMjLmNvZGVdIGRvZXNuJ3QgYWN0dWFsbHkgcHJvdmlkZSB0aGF0IG11Y2ggaW5zaWdodCBpbnRvIHdoeSB0aGVcbiAgICAgICAgICAgY29ubmVjdGlvbiBmYWlsZWQgKGl0J3MgYXZhaWxhYmxlIGluIHRoZSBpbnNwZWN0b3IgY29uc29sZSwgYnV0IGFzIGZhciBhcyBJIGNhblxuICAgICAgICAgICB0ZWxsLCBub3QgYXZhaWxhYmxlIHRvIHVzKS4gU28gaXQncyBub3QgbGlrZSB3ZSdyZSBsb3NpbmcgbXVjaCBhbnl3YXkuICopXG4gICAgICAgIGxldCByZWFzb24gPVxuICAgICAgICAgIGxldCB3aGF0X2hhcHBlbmVkID1cbiAgICAgICAgICAgIG1hdGNoIEl2YXIuaXNfZnVsbCBjb25uZWN0ZWRfaXZhciB3aXRoXG4gICAgICAgICAgICB8IGZhbHNlIC0+IFwiY29ubmVjdGlvbiBmYWlsZWRcIlxuICAgICAgICAgICAgfCB0cnVlIC0+IFwiY2xvc2VkXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICFcIldlYlNvY2tldCAlcyAoJXtzZXhwOkNsb3NlX2NvZGUudH0pXCJcbiAgICAgICAgICAgIHdoYXRfaGFwcGVuZWRcbiAgICAgICAgICAgIChDbG9zZV9jb2RlLm9mX2V2ZW50IGNsb3NlX2V2ZW50KVxuICAgICAgICBpblxuICAgICAgICBjbGVhbnVwIH5yZWFzb246KEVycm9yLm9mX3N0cmluZyByZWFzb24pO1xuICAgICAgICBKcy5fZmFsc2VcbiAgICAgIGluXG4gICAgICBsZXQgb25tZXNzYWdlIChldmVudCA6IF8gV2ViU29ja2V0cy5tZXNzYWdlRXZlbnQgSnMudCkgPVxuICAgICAgICBsZXQgZGF0YSA9IFR5cGVkX2FycmF5LkJpZ3N0cmluZy5vZl9hcnJheUJ1ZmZlciBldmVudCMjLmRhdGFfYnVmZmVyIGluXG4gICAgICAgIFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFja19pZl9vcGVuIGZyb21fc2VydmVyIGRhdGE7XG4gICAgICAgIEpzLl9mYWxzZVxuICAgICAgaW5cbiAgICAgIGxldCBjb25uZWN0ZWQgKCkgPSBJdmFyLmZpbGxfaWZfZW1wdHkgY29ubmVjdGVkX2l2YXIgKE9rICgpKSBpblxuICAgICAgd2Vic29ja2V0IyMuYmluYXJ5VHlwZSA6PSBKcy5zdHJpbmcgXCJhcnJheWJ1ZmZlclwiO1xuICAgICAgKCogaWYgdGhlIHdlYnNvY2tldCBpcyBhbHJlYWR5IGNsb3NlZCwgW29uY2xvc2VdIHdvbid0IGJlIHJlLWZpcmVkIHdoZW4gd2UgYWRkIG91clxuICAgICAgICAgaGFuZGxlci4gKilcbiAgICAgIChtYXRjaCB3ZWJzb2NrZXQjIy5yZWFkeVN0YXRlIHdpdGhcbiAgICAgICB8IENPTk5FQ1RJTkcgLT5cbiAgICAgICAgIHdlYnNvY2tldCMjLm9ub3BlblxuICAgICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biAoXyA6IF8gRG9tLmV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgIGNvbm5lY3RlZCAoKTtcbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICAgICAgIHwgT1BFTiAtPiBjb25uZWN0ZWQgKClcbiAgICAgICB8IENMT1NJTkcgfCBDTE9TRUQgLT5cbiAgICAgICAgICgqIGUuZy4sIFJlZnVzZWQgdG8gY29ubmVjdCB0byB3czogYmVjYXVzZSBpdCB2aW9sYXRlcyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAqKVxuICAgICAgICAgY2xlYW51cCB+cmVhc29uOihFcnJvci5vZl9zdHJpbmcgXCJXZWJTb2NrZXQgZmFpbGVkIGltbWVkaWF0ZWx5IChpbGxlZ2FsIFVSST8pXCIpKTtcbiAgICAgICgqIFVwb24gYW4gZXJyb3IsIFtvbmVycm9yXSBmaXJlcyBhbmQgdGhlbiBbb25jbG9zZV0gZmlyZXMgKGl0J3MgcG9zc2libGUgZm9yIGFcbiAgICAgICAgIGdyYWNlZnVsIGNsb3N1cmUgdG8gY2FsbCBbb25jbG9zZV0gb25seSkuIFNpbmNlIEFzeW5jX1JQQyBoYXMgbm8gbm90aW9uIG9mXG4gICAgICAgICBncmFjZWZ1bCBjbG9zdXJlLCB3ZSBvbmx5IG5lZWQgdG8gaGFuZGxlIFtvbmNsb3NlXSBhbnl3YXkuIEZ1cnRoZXIsIHRoZSBldmVudFxuICAgICAgICAgcGFzc2VkIHRvIFtvbmVycm9yXSBjb250YWlucyBubyBleHRyYSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXJyb3IuICBOb3RlIHRoYXQgd2VcbiAgICAgICAgIHN0aWxsIGxpc3RlbiB0byBbb25lcnJvcl0gdG8gcHJldmVudCB0aGUgZXJyb3IgZnJvbSBsZWFraW5nIHRvIHVuY29udHJvbGxlZFxuICAgICAgICAgY29udGV4dCAqKVxuICAgICAgd2Vic29ja2V0IyMub25lcnJvclxuICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biAoXyA6IF8gRG9tLmV2ZW50IEpzLnQpIC0+XG4gICAgICAgIEFzeW5jX2pzX2RlYnVnLmxvZ19zIFslbWVzc2FnZSBcIndlYnNvY2tldCBlbmNvdW50ZXJlZCB1bmV4cGVjdGVkIGVycm9yXCJdO1xuICAgICAgICBKcy5fZmFsc2UpO1xuICAgICAgd2Vic29ja2V0IyMub25tZXNzYWdlIDo9IERvbS5oYW5kbGVyIG9ubWVzc2FnZTtcbiAgICAgIHdlYnNvY2tldCMjLm9uY2xvc2UgOj0gRG9tLmhhbmRsZXIgb25jbG9zZTtcbiAgICAgIGxldCBjb25uZWN0ZWRfZGVmZXJyZWQgPSBJdmFyLnJlYWQgY29ubmVjdGVkX2l2YXIgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgIChtYXRjaCViaW5kIGNvbm5lY3RlZF9kZWZlcnJlZCB3aXRoXG4gICAgICAgICB8IEVycm9yIChfIDogRXJyb3IudCkgLT4gcmV0dXJuICgpXG4gICAgICAgICB8IE9rICgpIC0+XG4gICAgICAgICAgIFBpcGUuaXRlcl93aXRob3V0X3B1c2hiYWNrIHRvX3NlcnZlciB+ZjooZnVuIGRhdGEgLT5cbiAgICAgICAgICAgICBtYXRjaCAod2Vic29ja2V0IyMucmVhZHlTdGF0ZSA6IFdlYlNvY2tldHMucmVhZHlTdGF0ZSkgd2l0aFxuICAgICAgICAgICAgIHwgQ09OTkVDVElORyAtPlxuICAgICAgICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJCVUc6IG9ub3BlbiBjYWxsZWQgYnV0IHJlYWR5U3RhdGUgaXMgQ09OTkVDVElOR1wiXVxuICAgICAgICAgICAgIHwgQ0xPU0lORyB8IENMT1NFRCAtPiAoKVxuICAgICAgICAgICAgIHwgT1BFTiAtPlxuICAgICAgICAgICAgICAgbGV0IGJ1ZmZlciA9IFR5cGVkX2FycmF5LkJpZ3N0cmluZy50b19hcnJheUJ1ZmZlciBkYXRhIGluXG4gICAgICAgICAgICAgICAodHJ5IHdlYnNvY2tldCMjc2VuZF9idWZmZXIgYnVmZmVyIHdpdGhcbiAgICAgICAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2UgKEVycm9yLnRhZyB+dGFnOlwid2Vic29ja2V0IyNzZW5kX2J1ZmZlclwiIChFcnJvci5vZl9leG4gZXhuKSkpKSk7XG4gICAgICBsZXQgY2xlYW51cF93aGVuX2FfcGlwZV9pc19jbG9zZWQgPVxuICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICBEZWZlcnJlZC5hbnlfdW5pdCBbIFBpcGUuY2xvc2VkIHRvX3NlcnZlcjsgUGlwZS5jbG9zZWQgZnJvbV9zZXJ2ZXIgXVxuICAgICAgICBpblxuICAgICAgICBjbGVhbnVwIH5yZWFzb246KEVycm9yLm9mX3N0cmluZyBcIlJQQyBjb25uZWN0aW9uIGNsb3NlZCBieSBjbGllbnRcIilcbiAgICAgIGluXG4gICAgICBkb24ndF93YWl0X2ZvciBjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZDtcbiAgICAgIGNvbm5lY3RlZF9kZWZlcnJlZFxuICA7O1xuXG4gIGxldCBkZWZhdWx0X3VyaSAoKSA9XG4gICAgbGV0IHNjaGVtZSA9IGlmIFN0cmluZy5lcXVhbCBVcmwuQ3VycmVudC5wcm90b2NvbCBcImh0dHBzOlwiIHRoZW4gXCJ3c3NcIiBlbHNlIFwid3NcIiBpblxuICAgIGxldCBwb3J0ID1cbiAgICAgIG1hdGNoIFVybC5DdXJyZW50LnBvcnQgd2l0aFxuICAgICAgfCBTb21lIHBvcnQgLT4gcG9ydFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGlmIFN0cmluZy5lcXVhbCBVcmwuQ3VycmVudC5wcm90b2NvbCBcImh0dHBzOlwiXG4gICAgICAgIHRoZW4gVXJsLmRlZmF1bHRfaHR0cHNfcG9ydFxuICAgICAgICBlbHNlIFVybC5kZWZhdWx0X2h0dHBfcG9ydFxuICAgIGluXG4gICAgbGV0IGhvc3QgPSBVcmwuQ3VycmVudC5ob3N0IGluXG4gICAgVXJpLm1ha2UgfnNjaGVtZSB+aG9zdCB+cG9ydCAoKVxuICA7O1xuXG4gIGxldCBjbGllbnQgPyh1cmkgPSBkZWZhdWx0X3VyaSAoKSkgP2hlYXJ0YmVhdF9jb25maWcgP2Rlc2NyaXB0aW9uID9pbXBsZW1lbnRhdGlvbnMgKCkgPVxuICAgIGxldCBkZXNjcmlwdGlvbiA9XG4gICAgICBJbmZvLmNyZWF0ZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIndlYnNvY2tldFwiIChkZXNjcmlwdGlvbiA6IChJbmZvLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKSAodXJpIDogVXJpLnQpXVxuICAgIGluXG4gICAgbGV0IG1ha2VfY29ubmVjdGlvbiB0cmFuc3BvcnQgPVxuICAgICAgbGV0IGNyZWF0ZSB7IFQuQ2xpZW50X2ltcGxlbWVudGF0aW9ucy5jb25uZWN0aW9uX3N0YXRlOyBpbXBsZW1lbnRhdGlvbnMgfSA9XG4gICAgICAgIFQuY3JlYXRlXG4gICAgICAgICAgdHJhbnNwb3J0XG4gICAgICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgICAgICB+ZGVzY3JpcHRpb25cbiAgICAgICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIGluXG4gICAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbnMgd2l0aFxuICAgICAgfCBOb25lIC0+IGNyZWF0ZSAoVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLm51bGwgKCkpXG4gICAgICB8IFNvbWUgaW1wbGVtZW50YXRpb25zIC0+IGNyZWF0ZSBpbXBsZW1lbnRhdGlvbnNcbiAgICBpblxuICAgIGxldCBmcm9tX3NlcnZlcl9yLCBmcm9tX3NlcnZlcl93ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgdG9fc2VydmVyX3IsIHRvX3NlcnZlcl93ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBtYXRjaCViaW5kXG4gICAgICBjb25uZWN0X3dlYnNvY2tldCB1cmkgfmZyb21fc2VydmVyOmZyb21fc2VydmVyX3cgfnRvX3NlcnZlcjp0b19zZXJ2ZXJfclxuICAgIHdpdGhcbiAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT4gcmV0dXJuIGVycm9yXG4gICAgfCBPayAoKSAtPlxuICAgICAgbGV0IHRyYW5zcG9ydCA9XG4gICAgICAgIEFzeW5jX3JwY19rZXJuZWwuUGlwZV90cmFuc3BvcnQuY3JlYXRlXG4gICAgICAgICAgQXN5bmNfcnBjX2tlcm5lbC5QaXBlX3RyYW5zcG9ydC5LaW5kLmJpZ3N0cmluZ1xuICAgICAgICAgIGZyb21fc2VydmVyX3JcbiAgICAgICAgICB0b19zZXJ2ZXJfd1xuICAgICAgaW5cbiAgICAgIChtYXRjaCViaW5kIG1ha2VfY29ubmVjdGlvbiB0cmFuc3BvcnQgd2l0aFxuICAgICAgIHwgT2sgY29ubmVjdGlvbiAtPiByZXR1cm4gKE9rIGNvbm5lY3Rpb24pXG4gICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgIGxldCViaW5kICgpID0gQXN5bmNfcnBjX2tlcm5lbC5ScGMuVHJhbnNwb3J0LmNsb3NlIHRyYW5zcG9ydCBpblxuICAgICAgICAgcmV0dXJuIChPcl9lcnJvci5vZl9leG4gZXhuKSlcbiAgOztcblxuICBsZXQgY2xpZW50X2V4biA/dXJpID9oZWFydGJlYXRfY29uZmlnID9kZXNjcmlwdGlvbiA/aW1wbGVtZW50YXRpb25zICgpID1cbiAgICBjbGllbnQgP3VyaSA/aGVhcnRiZWF0X2NvbmZpZyA/ZGVzY3JpcHRpb24gP2ltcGxlbWVudGF0aW9ucyAoKSA+PnwgT3JfZXJyb3Iub2tfZXhuXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBBc3luY19ycGNfa2VybmVsLlJwY1xuXG5tb2R1bGUgQ29ubmVjdGlvbiA9IHN0cnVjdFxuICBpbmNsdWRlIENvbm5lY3Rpb25cbiAgaW5jbHVkZSBXZWJzb2NrZXRfY29ubmVjdGlvblxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19ycGNfa2VybmVsXG5cbm1vZHVsZSBVcmkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFVyaVxuXG4gICAgbGV0IHRvX3N0cmluZyBzID0gVXJpLnRvX3N0cmluZyBzXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLk9mX3N0cmluZ2FibGUgKFQpXG5lbmRcblxubW9kdWxlIFJwYyA9IHN0cnVjdFxuICBpbmNsdWRlIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGNcblxuICBsZXQgY3JlYXRlX2Zyb21fdXJpID0gUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jcmVhdGUgfmFkZHJlc3M6KG1vZHVsZSBVcmkpXG5cbiAgbGV0IGNyZWF0ZV9mcm9tX3VyaV9vcHRpb24gPVxuICAgIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY3JlYXRlXG4gICAgICB+YWRkcmVzczpcbiAgICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBVcmkudCBvcHRpb24gW0BAZGVyaXZpbmcgZXF1YWwsIHNleHBdXG4gICAgICAgIGVuZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgVmVyc2lvbmVkX3JwYyA9IEFzeW5jX3JwY19rZXJuZWwuUGVyc2lzdGVudF9jb25uZWN0aW9uLlZlcnNpb25lZF9ycGNcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBPcHQgPSBKcy5PcHRcbm1vZHVsZSBPcHRkZWYgPSBKcy5PcHRkZWZcblxubW9kdWxlIFJlc3BvbnNlX3R5cGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgWG1sSHR0cFJlcXVlc3QucmVzcG9uc2UgPVxuICAgIHwgQXJyYXlCdWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IE9wdC50IHRcbiAgICB8IEJsb2IgOiAjRmlsZS5ibG9iIEpzLnQgSnMuT3B0LnQgdFxuICAgIHwgRG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgSnMudCBPcHQudCB0XG4gICAgfCBKU09OIDogJ2EgT3B0LnQgdFxuICAgIHwgVGV4dCA6IEpzLmpzX3N0cmluZyBKcy50IHRcbiAgICB8IERlZmF1bHQgOiBzdHJpbmcgdFxuZW5kXG5cbm1vZHVsZSBSZXNwb25zZSA9IHN0cnVjdFxuICB0eXBlICdyZXNwb25zZSB0ID1cbiAgICB7IGNvZGUgOiBpbnRcbiAgICA7IGdldF9oZWFkZXIgOiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICAgIDsgY29udGVudCA6ICdyZXNwb25zZVxuICAgIH1cbmVuZFxuXG5tb2R1bGUgUG9zdF9ib2R5ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBCbG9iIG9mIEZpbGUuYmxvYiBKcy50XG4gICAgfCBEb2N1bWVudCBvZiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgSnMudFxuICAgIHwgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgRm9ybV9kYXRhIG9mIEZvcm0uZm9ybURhdGEgSnMudFxuZW5kXG5cbm1vZHVsZSBNZXRob2Rfd2l0aF9hcmdzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBHZXQgb2YgKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAgIHwgUG9zdCBvZiBQb3N0X2JvZHkudCBvcHRpb25cbmVuZFxuXG50eXBlICdrIHdpdGhfcmVxdWVzdF9hcmdzID1cbiAgP2hlYWRlcnM6KHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAtPiA/b25fcHJvZ3Jlc3M6KGxvYWRlZDppbnQgLT4gdG90YWw6aW50IC0+IHVuaXQpXG4gIC0+ID9vbl91cGxvYWRfcHJvZ3Jlc3M6KGxvYWRlZDppbnQgLT4gdG90YWw6aW50IC0+IHVuaXQpXG4gIC0+IHVybDpzdHJpbmdcbiAgLT4gJ2tcblxubGV0IGhhc19nZXRfYXJncyB1cmwgPSBPcHRpb24uaXNfc29tZSAoU3RyaW5nLmluZGV4IHVybCAnPycpXG5cbmxldCByZXF1ZXN0XG4gICAgICA/KGhlYWRlcnMgPSBbXSlcbiAgICAgID9vbl9wcm9ncmVzc1xuICAgICAgP29uX3VwbG9hZF9wcm9ncmVzc1xuICAgICAgfnVybFxuICAgICAgKHR5cGUgcmVzcClcbiAgICAgIH4ocmVzcG9uc2VfdHlwZSA6IHJlc3AgUmVzcG9uc2VfdHlwZS50KVxuICAgICAgKG1ldGhvZF93aXRoX2FyZ3MgOiBNZXRob2Rfd2l0aF9hcmdzLnQpXG4gID1cbiAgbGV0IHVybCwgbWV0aG9kX3N0cmluZyA9XG4gICAgbWF0Y2ggbWV0aG9kX3dpdGhfYXJncyB3aXRoXG4gICAgfCBHZXQgYXJncyAtPlxuICAgICAgdXJsIF4gKGlmIGhhc19nZXRfYXJncyB1cmwgdGhlbiBcIiZcIiBlbHNlIFwiP1wiKSBeIFVybC5lbmNvZGVfYXJndW1lbnRzIGFyZ3MsIFwiR0VUXCJcbiAgICB8IFBvc3QgX2JvZHkgLT4gdXJsLCBcIlBPU1RcIlxuICBpblxuICBsZXQgcmVxID0gWG1sSHR0cFJlcXVlc3QuY3JlYXRlICgpIGluXG4gIHJlcSMjX29wZW4gKEpzLnN0cmluZyBtZXRob2Rfc3RyaW5nKSAoSnMuc3RyaW5nIHVybCkgSnMuX3RydWU7XG4gIChsZXQgb3BlbiBSZXNwb25zZV90eXBlIGluXG4gICBtYXRjaCByZXNwb25zZV90eXBlIHdpdGhcbiAgIHwgQXJyYXlCdWZmZXIgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImFycmF5YnVmZmVyXCJcbiAgIHwgQmxvYiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYmxvYlwiXG4gICB8IERvY3VtZW50IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJkb2N1bWVudFwiXG4gICB8IEpTT04gLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImpzb25cIlxuICAgfCBUZXh0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJ0ZXh0XCJcbiAgIHwgRGVmYXVsdCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiXCIpO1xuICBMaXN0Lml0ZXIgaGVhZGVycyB+ZjooZnVuIChuYW1lLCB2YWx1ZSkgLT5cbiAgICByZXEjI3NldFJlcXVlc3RIZWFkZXIgKEpzLnN0cmluZyBuYW1lKSAoSnMuc3RyaW5nIHZhbHVlKSk7XG4gIGxldCByZXNwb25zZSA6IHJlc3AgUmVzcG9uc2UudCBPcl9lcnJvci50IEl2YXIudCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIHJlcSMjLm9uZXJyb3JcbiAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgSXZhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJOZXR3b3JrIGVycm9yXCIpO1xuICAgIEpzLl90cnVlKTtcbiAgcmVxIyMub250aW1lb3V0XG4gIDo9IERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgIEl2YXIuZmlsbF9pZl9lbXB0eSByZXNwb25zZSAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiVGltZW91dFwiKTtcbiAgICBKcy5fdHJ1ZSk7XG4gIHJlcSMjLm9ucmVhZHlzdGF0ZWNoYW5nZVxuICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPlxuICAgIG1hdGNoIHJlcSMjLnJlYWR5U3RhdGUgd2l0aFxuICAgIHwgRE9ORSAtPlxuICAgICAgbGV0IHJlcyA9XG4gICAgICAgIGlmIHJlcSMjLnN0YXR1cyA+PSAyMDAgJiYgcmVxIyMuc3RhdHVzIDwgMzAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCViaW5kLk9yX2Vycm9yIGNvbnRlbnQgOiByZXNwIE9yX2Vycm9yLnQgPVxuICAgICAgICAgICAgbGV0IGdldF90ZXh0X2NvbnRlbnRzX29yX2Vycm9yICgpID1cbiAgICAgICAgICAgICAgT3B0LmNhc2VcbiAgICAgICAgICAgICAgICByZXEjIy5yZXNwb25zZVRleHRcbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIHNob3VsZCBub3QgYmUgZW50ZXJlZCBhcyBwZXIgdGhlIHNwZWNpZmljYXRpb24gb2ZcbiAgICAgICAgICAgICAgICAgICAgICBYTUxIdHRwUmVxdWVzdCBhdCBNRE4gd2ViIGRvY3MsIGJlY2F1c2UgaWYgYSByZXF1ZXN0IGlzIHN1Y2Nlc3NmdWwsXG4gICAgICAgICAgICAgICAgICAgICAgaW4gc3RhdGUgW0RPTkVdIGFuZCByZXNwb25zZV90eXBlIFtUZXh0XSBvciBbRGVmYXVsdF0sXG4gICAgICAgICAgICAgICAgICAgICAgW3Jlc3BvbnNlVGV4dF0gc2hvdWxkIG5vdCBiZSBbbnVsbF0uXG4gICAgICAgICAgICAgICAgICAgICAgU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdC9yZXNwb25zZVRleHRcbiAgICAgICAgICAgICAgICAgICAqKVxuICAgICAgICAgICAgICAgICAgIGVycm9yX3NcbiAgICAgICAgICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgICAgICAgICBcIk5vIHJlc3BvbnNlIHJldHVybmVkIGRlc3BpdGUgc3VjY2Vzc2Z1bCByZXF1ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICwgeyBjb2RlID0gKHJlcSMjLnN0YXR1cyA6IGludClcbiAgICAgICAgICAgICAgICAgICAgICAgOyBzdGF0dXNfdGV4dCA9IChKcy50b19zdHJpbmcgcmVxIyMuc3RhdHVzVGV4dCA6IHN0cmluZylcbiAgICAgICAgICAgICAgICAgICAgICAgfV0pXG4gICAgICAgICAgICAgICAgUmVzdWx0LnJldHVyblxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBvcGVuIFJlc3BvbnNlX3R5cGUgaW5cbiAgICAgICAgICAgIG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICAgICAgICAgICAgfCBBcnJheUJ1ZmZlciAtPiBPayAoRmlsZS5Db2VyY2VUby5hcnJheUJ1ZmZlciByZXEjIy5yZXNwb25zZSlcbiAgICAgICAgICAgIHwgQmxvYiAtPiBPayAoRmlsZS5Db2VyY2VUby5ibG9iIHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBEb2N1bWVudCAtPiBPayAoRmlsZS5Db2VyY2VUby5kb2N1bWVudCByZXEjIy5yZXNwb25zZSlcbiAgICAgICAgICAgIHwgSlNPTiAtPiBPayAoRmlsZS5Db2VyY2VUby5qc29uIHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBUZXh0IC0+IGdldF90ZXh0X2NvbnRlbnRzX29yX2Vycm9yICgpXG4gICAgICAgICAgICB8IERlZmF1bHQgLT4gT3JfZXJyb3IubWFwIChnZXRfdGV4dF9jb250ZW50c19vcl9lcnJvciAoKSkgfmY6SnMudG9fc3RyaW5nXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZ2V0X2hlYWRlciBzID1cbiAgICAgICAgICAgIE9wdC5jYXNlXG4gICAgICAgICAgICAgIChyZXEjI2dldFJlc3BvbnNlSGVhZGVyIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgICAgICAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgICAgICAgICAgIChmdW4gdiAtPiBTb21lIChKcy50b19zdHJpbmcgdikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBPayB7IFJlc3BvbnNlLmNvbnRlbnQ7IGNvZGUgPSByZXEjIy5zdGF0dXM7IGdldF9oZWFkZXIgfSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICBcIlJlcXVlc3QgZmFpbGVkXCJcbiAgICAgICAgICAgICwgeyBjb2RlID0gKHJlcSMjLnN0YXR1cyA6IGludClcbiAgICAgICAgICAgICAgOyBzdGF0dXNfdGV4dCA9IChKcy50b19zdHJpbmcgcmVxIyMuc3RhdHVzVGV4dCA6IHN0cmluZylcbiAgICAgICAgICAgICAgfV1cbiAgICAgIGluXG4gICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgcmVzXG4gICAgfCBfIC0+ICgpKTtcbiAgT3B0aW9uLml0ZXIgb25fcHJvZ3Jlc3MgfmY6KGZ1biBvbl9wcm9ncmVzcyAtPlxuICAgIHJlcSMjLm9ucHJvZ3Jlc3NcbiAgICA6PSBEb20uaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgIG9uX3Byb2dyZXNzIH5sb2FkZWQ6ZSMjLmxvYWRlZCB+dG90YWw6ZSMjLnRvdGFsO1xuICAgICAgSnMuX3RydWUpKTtcbiAgT3B0ZGVmLml0ZXIgcmVxIyMudXBsb2FkIChmdW4gdXBsb2FkIC0+XG4gICAgT3B0aW9uLml0ZXIgb25fdXBsb2FkX3Byb2dyZXNzIH5mOihmdW4gb25fdXBsb2FkX3Byb2dyZXNzIC0+XG4gICAgICB1cGxvYWQjIy5vbnByb2dyZXNzXG4gICAgICA6PSBEb20uaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgICAgb25fdXBsb2FkX3Byb2dyZXNzIH5sb2FkZWQ6ZSMjLmxvYWRlZCB+dG90YWw6ZSMjLnRvdGFsO1xuICAgICAgICBKcy5fdHJ1ZSkpKTtcbiAgKG1hdGNoIG1ldGhvZF93aXRoX2FyZ3Mgd2l0aFxuICAgfCBHZXQgXyAtPiByZXEjI3NlbmQgSnMubnVsbFxuICAgfCBQb3N0IGJvZHkgLT5cbiAgICAgKG1hdGNoIGJvZHkgd2l0aFxuICAgICAgfCBOb25lIC0+IHJlcSMjc2VuZCBKcy5udWxsXG4gICAgICB8IFNvbWUgYm9keSAtPlxuICAgICAgICAobWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICB8IEJsb2IgYiAtPiByZXEjI3NlbmRfYmxvYiBiXG4gICAgICAgICB8IERvY3VtZW50IGQgLT4gcmVxIyNzZW5kX2RvY3VtZW50IGRcbiAgICAgICAgIHwgU3RyaW5nIHMgLT4gcmVxIyNzZW5kIChKcy5zb21lIChKcy5zdHJpbmcgcykpXG4gICAgICAgICB8IEZvcm1fZGF0YSBmZCAtPiByZXEjI3NlbmRfZm9ybURhdGEgZmQpKSk7XG4gIEl2YXIucmVhZCByZXNwb25zZVxuOztcblxubGV0IGdldCA/KGFyZ3VtZW50cyA9IFtdKSB1cmwgPVxuICBEZWZlcnJlZC5Pcl9lcnJvci5tYXBcbiAgICB+ZjooZnVuIHJlc3AgLT4gcmVzcC5jb250ZW50KVxuICAgIChyZXF1ZXN0IH51cmwgfnJlc3BvbnNlX3R5cGU6RGVmYXVsdCAoR2V0IGFyZ3VtZW50cykpXG47O1xuXG5sZXQgcG9zdCA/Ym9keSB1cmwgPVxuICBEZWZlcnJlZC5Pcl9lcnJvci5tYXBcbiAgICB+ZjooZnVuIHJlc3AgLT4gcmVzcC5jb250ZW50KVxuICAgIChyZXF1ZXN0IH51cmwgfnJlc3BvbnNlX3R5cGU6RGVmYXVsdCAoUG9zdCBib2R5KSlcbjs7XG4iLCJvcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gQ29yZS5UaW1lX25zXG5tb2R1bGUgQ2xvY2tfbnMgPSBBc3luY19rZXJuZWwuQ2xvY2tfbnNcbm1vZHVsZSBTY2hlZHVsZXIgPSBBc3luY19rZXJuZWwuQXN5bmNfa2VybmVsX3NjaGVkdWxlci5Qcml2YXRlXG5vcGVuIEpzX29mX29jYW1sXG5cbmxldCBzbGVlcCBkID0gQ2xvY2tfbnMuYWZ0ZXIgKFRpbWVfbnMuU3Bhbi5vZl9zZWMgZClcbmxldCB5aWVsZCAoKSA9IFNjaGVkdWxlci55aWVsZCAoU2NoZWR1bGVyLnQgKCkpXG5cbmxldCByZWMgZXh0cmFjdF9qc19lcnJvciAoZXhuIDogZXhuKSA6IChzdHJpbmcgbGlzdCAqIEpzX2Vycm9yLnQpIG9wdGlvbiA9XG4gIG1hdGNoIGV4biB3aXRoXG4gIHwgRXhuLlJlcmFpc2VkIChtc2csIGV4bikgLT5cbiAgICAobWF0Y2ggZXh0cmFjdF9qc19lcnJvciBleG4gd2l0aFxuICAgICB8IFNvbWUgKG1lc3NhZ2VzLCBqc19lcnJvcikgLT4gU29tZSAobXNnIDo6IG1lc3NhZ2VzLCBqc19lcnJvcilcbiAgICAgfCBOb25lIC0+IE5vbmUpXG4gIHwgZXhuIC0+XG4gICAgKG1hdGNoIEpzX2Vycm9yLm9mX2V4biBleG4gd2l0aFxuICAgICB8IFNvbWUganNfZXJyb3IgLT4gU29tZSAoW10sIGpzX2Vycm9yKVxuICAgICB8IE5vbmUgLT4gTm9uZSlcbjs7XG5cbmxldCBwcmV0dHlfcHJpbnRfZXhjZXB0aW9uIG5hbWUgZXhuID1cbiAgbGV0IGV4biA9IEFzeW5jX2tlcm5lbC5Nb25pdG9yLmV4dHJhY3RfZXhuIGV4biBpblxuICBsZXQgY2xhc3NpZmljYXRpb24gPVxuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgfCBKc19lcnJvci5FeG4gZXJyIC0+IGBKcyBlcnJcbiAgICB8IGV4biAtPlxuICAgICAgKG1hdGNoIGV4dHJhY3RfanNfZXJyb3IgZXhuIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gYEV4biBleG5cbiAgICAgICB8IFNvbWUgZXJyIC0+IGBKc19hbmRfZXhuIChleG4sIGVycikpXG4gIGluXG4gIG1hdGNoIGNsYXNzaWZpY2F0aW9uIHdpdGhcbiAgfCBgSnMgZXJyIC0+IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiAoSnMuc3RyaW5nIG5hbWUpIGVyclxuICB8IGBFeG4gZXhuIC0+IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiAoSnMuc3RyaW5nIG5hbWUpIChKcy5zdHJpbmcgKEV4bi50b19zdHJpbmcgZXhuKSlcbiAgfCBgSnNfYW5kX2V4biAoZXhuLCAobWVzc2FnZXMsIGVycikpIC0+XG4gICAgKG1hdGNoIG1lc3NhZ2VzIHdpdGhcbiAgICAgfCBbXSAtPiBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwIChKcy5zdHJpbmcgbmFtZSlcbiAgICAgfCBoZCA6OiByZXN0IC0+XG4gICAgICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cCAoSnMuc3RyaW5nIGhkKTtcbiAgICAgICBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIG5hbWUpO1xuICAgICAgIExpc3QuaXRlciByZXN0IH5mOihmdW4gbWVzc2FnZSAtPiBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIChKcy5zdHJpbmcgbWVzc2FnZSkpKTtcbiAgICAoKiBXZSBmaXJzdCBvdXRwdXQgdGhlIHN0cmluZ2lmaWVkIG9jYW1sIGV4Y2VwdGlvbiAqKVxuICAgIEZpcmVidWcuY29uc29sZSMjZ3JvdXBDb2xsYXBzZWQgKEpzLnN0cmluZyBcIk9DYW1sIEV4Y2VwdGlvblwiKTtcbiAgICBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIChFeG4udG9fc3RyaW5nIGV4bikpO1xuICAgIEZpcmVidWcuY29uc29sZSMjZ3JvdXBFbmQ7XG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciBlcnI7XG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cEVuZFxuOztcblxubGV0IHJ1biA9XG4gIGxldCBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBJZGxlXG4gICAgICB8IFJ1bm5pbmdcbiAgICAgIHwgV2lsbF9ydW5fc29vblxuICBlbmRcbiAgaW5cbiAgbGV0IG1vZHVsZSBOZXh0X3dha2V1cCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEF0IG9mIFRpbWVfbnMudCAqIGZsb2F0XG4gICAgICB8IE5vX3dha2V1cFxuICAgICAgfCBTb29uXG4gIGVuZFxuICBpblxuICBsZXQgc3RhdGUgPSByZWYgU3RhdGUuSWRsZSBpblxuICBsZXQgdGltZW91dHMgPSBTdGFjay5jcmVhdGUgKCkgaW5cbiAgbGV0IHJ1bl9hZnRlciB+ZiB+bXMgPSBpZ25vcmUgKERvbV9odG1sLnNldFRpbWVvdXQgZiBtcyA6IERvbV9odG1sLnRpbWVvdXRfaWRfc2FmZSkgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBsZXQgdCA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgbWF0Y2ggIXN0YXRlLCBTY2hlZHVsZXIudW5jYXVnaHRfZXhuIHQgd2l0aFxuICAgIHwgXywgU29tZSBfIHwgU3RhdGUuUnVubmluZywgTm9uZSAtPiAoKVxuICAgIHwgKFN0YXRlLklkbGUgfCBTdGF0ZS5XaWxsX3J1bl9zb29uKSwgTm9uZSAtPlxuICAgICAgc3RhdGUgOj0gU3RhdGUuUnVubmluZztcbiAgICAgIFNjaGVkdWxlci5ydW5fY3ljbGUgdDtcbiAgICAgIGxldCBuZXh0X3dha2V1cCA6IE5leHRfd2FrZXVwLnQgPVxuICAgICAgICBpZiBTY2hlZHVsZXIuY2FuX3J1bl9hX2pvYiB0XG4gICAgICAgIHRoZW4gU29vblxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBTY2hlZHVsZXIubmV4dF91cGNvbWluZ19ldmVudCB0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9fd2FrZXVwXG4gICAgICAgICAgfCBTb21lIG5leHQgLT5cbiAgICAgICAgICAgIGxldCBub3cgPSBUaW1lX25zLm5vdyAoKSBpblxuICAgICAgICAgICAgbGV0IGQgPSBUaW1lX25zLmRpZmYgbmV4dCBub3cgaW5cbiAgICAgICAgICAgIGxldCBkX21zID0gVGltZV9ucy5TcGFuLnRvX21zIGQgaW5cbiAgICAgICAgICAgIGlmIEZsb2F0LiggPD0gKSBkX21zIDAuIHRoZW4gU29vbiBlbHNlIEF0IChuZXh0LCBkX21zKSlcbiAgICAgIGluXG4gICAgICBPcHRpb24uaXRlciAoU2NoZWR1bGVyLnVuY2F1Z2h0X2V4bl91bndyYXBwZWQgdCkgfmY6KGZ1biAoZXhuLCBfc2V4cCkgLT5cbiAgICAgICAgbWF0Y2ggQXN5bmNfa2VybmVsLk1vbml0b3IuZXh0cmFjdF9leG4gZXhuIHdpdGhcbiAgICAgICAgfCBKc19lcnJvci5FeG4gZXJyIC0+IEpzX2Vycm9yLnJhaXNlXyBlcnJcbiAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAobWF0Y2ggSnNfZXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBleG5cbiAgICAgICAgICAgfCBTb21lIGVyciAtPlxuICAgICAgICAgICAgICgqIEhhY2sgdG8gZ2V0IGEgYmV0dGVyIGJhY2t0cmFjZSAqKVxuICAgICAgICAgICAgIHByZXR0eV9wcmludF9leGNlcHRpb24gXCJFcnJvcjpcIiBleG47XG4gICAgICAgICAgICAgKCogQW5kIHRoZW4gcmFpc2UgdGhlIGVtYmVkZGVkIGphdmFzY3JpcHQgZXJyb3IgdGhhdCBwcm92aWRlcyBhIHByb3BlclxuICAgICAgICAgICAgICAgIGJhY2t0cmFjZSB3aXRoIGdvb2Qgc291cmNlbWFwIHN1cHBvcnQuXG4gICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhpcyBqYXZhc2NyaXB0IGVycm9yIGlzIHByb2JhYmx5IG5vdCBtZWFuaW5nZnVsIHdoaWNoIGlzIHdoeVxuICAgICAgICAgICAgICAgIHdlIGZpcnN0IG91dHB1dCB0aGUgc2VyaWFsaXphdGlvbiBvZiBvY2FtbCBleGNlcHRpb24uICopXG4gICAgICAgICAgICAgSnNfZXJyb3IucmFpc2VfIGVycikpO1xuICAgICAgKG1hdGNoIG5leHRfd2FrZXVwIHdpdGhcbiAgICAgICB8IE5vX3dha2V1cCAtPiBzdGF0ZSA6PSBJZGxlXG4gICAgICAgfCBTb29uIC0+XG4gICAgICAgICBzdGF0ZSA6PSBXaWxsX3J1bl9zb29uO1xuICAgICAgICAgcnVuX2FmdGVyIH5mOmxvb3Agfm1zOjAuXG4gICAgICAgfCBBdCAoYXQsIGRfbXMpIC0+XG4gICAgICAgICBzdGF0ZSA6PSBJZGxlO1xuICAgICAgICAgaWYgU3RhY2suaXNfZW1wdHkgdGltZW91dHMgfHwgVGltZV9ucy4oIDwgKSBhdCAoU3RhY2sudG9wX2V4biB0aW1lb3V0cylcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBTdGFjay5wdXNoIHRpbWVvdXRzIGF0O1xuICAgICAgICAgICBydW5fYWZ0ZXIgfmY6cnVuX3RpbWVvdXQgfm1zOmRfbXMpKVxuICBhbmQgcnVuX3RpbWVvdXQgKCkgPVxuICAgICgqIEVhY2ggY2FsbCB0byBbcnVuX3RpbWVvdXRdIHJlbW92ZXMgZXhhY3RseSBvbmUgZWxlbWVudCBmcm9tIFt0aW1lb3V0c10uICBUaGlzXG4gICAgICAgbWFpbnRhaW5zIHRoZSBpbnZhcmlhbnQgdGhhdCBbU3RhY2subGVuZ3RoIHRpbWVvdXRzXSBpcyBleGFjdGx5IHRoZSBudW1iZXIgb2ZcbiAgICAgICBvdXRzdGFuZGluZyB0aW1lb3V0cyB3ZSBoYXZlIHJlZ2lzdGVyZWQuICopXG4gICAgaWdub3JlIChTdGFjay5wb3BfZXhuIHRpbWVvdXRzIDogVGltZV9ucy50KTtcbiAgICBsb29wICgpXG4gIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICFzdGF0ZSB3aXRoXG4gICAgfCBTdGF0ZS5JZGxlIC0+XG4gICAgICBydW5fYWZ0ZXIgfmY6bG9vcCB+bXM6MC47XG4gICAgICBzdGF0ZSA6PSBTdGF0ZS5XaWxsX3J1bl9zb29uXG4gICAgfCBTdGF0ZS5SdW5uaW5nIHwgU3RhdGUuV2lsbF9ydW5fc29vbiAtPiAoKVxuOztcblxubGV0IGluaXRpYWxpemVkX3JlZiA9IHJlZiBmYWxzZVxuXG5sZXQgaW5pdGlhbGl6YXRpb24gPVxuICBsYXp5XG4gICAgKGxldCB0ID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICAgaW5pdGlhbGl6ZWRfcmVmIDo9IHRydWU7XG4gICAgIFNjaGVkdWxlci5zZXRfam9iX3F1ZXVlZF9ob29rIHQgKGZ1biBfIC0+IHJ1biAoKSk7XG4gICAgIFNjaGVkdWxlci5zZXRfZXZlbnRfYWRkZWRfaG9vayB0IChmdW4gXyAtPiBydW4gKCkpO1xuICAgICBTY2hlZHVsZXIuc2V0X3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIHQgcnVuO1xuICAgICBBc3luY19rZXJuZWwuTW9uaXRvci5FeHBlcnQudHJ5X3dpdGhfbG9nX2V4blxuICAgICA6PSBwcmV0dHlfcHJpbnRfZXhjZXB0aW9uIFwiQXN5bmNfa2VybmVsOiBNb25pdG9yLnRyeV93aXRoXCI7XG4gICAgIEFzeW5jX2tlcm5lbC5Nb25pdG9yLmRldGFjaF9hbmRfaXRlcl9lcnJvcnNcbiAgICAgICBBc3luY19rZXJuZWwuTW9uaXRvci5tYWluXG4gICAgICAgfmY6KHByZXR0eV9wcmludF9leGNlcHRpb24gXCJBc3luY19rZXJuZWw6IFVuaGFuZGxlZCBleGNlcHRpb25cIik7XG4gICAgIHJ1biAoKSlcbjs7XG5cbmxldCBpbml0ICgpID0gZm9yY2UgaW5pdGlhbGl6YXRpb25cbmxldCBpbml0aWFsaXplZCAoKSA9ICFpbml0aWFsaXplZF9yZWZcblxubGV0IGRvY3VtZW50X2xvYWRlZCA9XG4gIGxldCBqc19zdHJpbmdfY29tcGFyZSBzID1cbiAgICBsZXQgY29tcGFyZV91c2luZ19qYXZhc2NyaXB0X3RyaXBsZV9lcXVhbF9mb3Jfc3RyaW5ncyA9IHBoeXNfZXF1YWwgaW5cbiAgICBjb21wYXJlX3VzaW5nX2phdmFzY3JpcHRfdHJpcGxlX2VxdWFsX2Zvcl9zdHJpbmdzIChKcy5zdHJpbmcgcylcbiAgaW5cbiAgbGV0IHJlYWR5X3N0YXRlX2NoYW5nZSA9IFwicmVhZHlzdGF0ZWNoYW5nZVwiIGluXG4gIGxldCBjb21wbGV0ZSA9IFwiY29tcGxldGVcIiBpblxuICBsZXQgcmVhZHlzdGF0ZWNoYW5nZV9ldiA9IERvbS5FdmVudC5tYWtlIHJlYWR5X3N0YXRlX2NoYW5nZSBpblxuICBsZXQgYWRkX2V2ZW50IHRhcmdldCBldnQgaGFuZGxlciA9XG4gICAgaWdub3JlXG4gICAgICAoRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lciB0YXJnZXQgZXZ0IGhhbmRsZXIgSnMuX2ZhbHNlIDogRG9tLmV2ZW50X2xpc3RlbmVyX2lkKVxuICBpblxuICBmdW4gKCkgLT5cbiAgICBpZiBqc19zdHJpbmdfY29tcGFyZSBjb21wbGV0ZSBEb21faHRtbC5kb2N1bWVudCMjLnJlYWR5U3RhdGVcbiAgICB0aGVuIEFzeW5jX2tlcm5lbC5EZWZlcnJlZC51bml0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbG9hZGVkID0gQXN5bmNfa2VybmVsLkl2YXIuY3JlYXRlICgpIGluXG4gICAgICBsZXQgaGFuZGxlciBldnQgPVxuICAgICAgICBpZiAobm90IChqc19zdHJpbmdfY29tcGFyZSByZWFkeV9zdGF0ZV9jaGFuZ2UgZXZ0IyMuX3R5cGUpKVxuICAgICAgICB8fCBqc19zdHJpbmdfY29tcGFyZSBjb21wbGV0ZSBEb21faHRtbC5kb2N1bWVudCMjLnJlYWR5U3RhdGVcbiAgICAgICAgdGhlbiBBc3luY19rZXJuZWwuSXZhci5maWxsX2lmX2VtcHR5IGxvYWRlZCAoKTtcbiAgICAgICAgSnMuX3RydWVcbiAgICAgIGluXG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwuZG9jdW1lbnQgRG9tX2h0bWwuRXZlbnQuZG9tQ29udGVudExvYWRlZCAoRG9tLmhhbmRsZXIgaGFuZGxlcik7XG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwuZG9jdW1lbnQgcmVhZHlzdGF0ZWNoYW5nZV9ldiAoRG9tLmhhbmRsZXIgaGFuZGxlcik7XG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwud2luZG93IERvbV9odG1sLkV2ZW50LmxvYWQgKERvbS5oYW5kbGVyIGhhbmRsZXIpO1xuICAgICAgQXN5bmNfa2VybmVsLkl2YXIucmVhZCBsb2FkZWQpXG47O1xuIiwibW9kdWxlIFJwYyA9IFJwY1xubW9kdWxlIEh0dHAgPSBIdHRwXG5tb2R1bGUgRGVidWcgPSBEZWJ1Z1xubW9kdWxlIFBlcnNpc3RlbnRfY29ubmVjdGlvbiA9IFBlcnNpc3RlbnRfY29ubmVjdGlvblxuaW5jbHVkZSBBc3luY19qczBcblxubGV0IGxvZ19zID0gRGVidWcubG9nX3NcbmxldCBsb2dfc19hc19zdHJpbmcgPSBEZWJ1Zy5sb2dfc19hc19zdHJpbmdcbiIsIm9wZW4hIEJhc2VcblxuKCogVGhlIFtkYXRhXSBhcnJheSBpcyBhbiBpbXBsaWNpdCBiaW5hcnkgdHJlZSB3aXRoIFtjaGlsZHJlbl9sZW5ndGggKiAyIC0gMV0gbm9kZXMsXG4gICB3aXRoIGVhY2ggbm9kZSBiZWluZyB0aGUgc3VtIG9mIHRoZSB0d28gY2hpbGQgbm9kZXMgYW5kIHRoZSByb290IG5vZGUgYmVpbmcgdGhlIDB0aFxuICAgbm9kZS4gIFRoZSBsZWF2ZXMgb2YgdGhlIHRyZWUgYXJlIHRoZSBsYXN0IFtudW1fbGVhdmVzXSBub2Rlcy5cblxuICAgVGhlIGNoaWxkcmVuIGFyZSBub3QgbmVjZXNzYXJpbHkgYWxsIGF0IHRoZSBzYW1lIGxldmVsIG9mIHRoZSB0cmVlLiBGb3IgaW5zdGFuY2UgaWZcbiAgIHlvdSBoYXZlIDMgY2hpbGRyZW4gW3wgYTsgYjsgYyB8XTpcblxuICAge3ZcbiAgICAgICAgICBvXG4gICAgICAgICAvIFxcXG4gICAgICAgIG8gICBjXG4gICAgICAgLyBcXFxuICAgICAgYSAgIGJcbiAgIHZ9XG5cbiAgIFdlIHdhbnQgdGhpcyB0cmVlIHRvIGJlIHJlcHJlc2VudGF0ZWQgYXMgW3wgbzsgbzsgYzsgYTsgYiB8XSwgaS5lLiB3ZSBuZWVkIHRvIGFwcGx5XG4gICBmaXJzdCBhIHJvdGF0aW9uIHRoZW4gYSB0cmFuc2xhdGlvbiB0byBjb252ZXJ0IGFuIGluZGV4IGluIFt8IGE7IGI7IGMgfF0gdG8gYSAobGVhZilcbiAgIGluZGV4IGluIFt8IG87IG87IGM7IGE7IGIgfF0uICopXG50eXBlICdhIHQgPVxuICB7IGRhdGEgOiAnYSBPcHRpb25fYXJyYXkudFxuICA7IG51bV9sZWF2ZXMgOiBpbnRcbiAgOyBudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgOiBpbnRcbiAgOyByZWR1Y2UgOiAnYSAtPiAnYSAtPiAnYVxuICA7IHNleHBfb2ZfYSA6ICdhIC0+IFNleHAudFxuICB9XG5cbmxldCBsZW5ndGggdCA9IHQubnVtX2xlYXZlc1xuXG4oKiB7dlxuICAgICBwYXJlbnQ6ICAgICAgMCAgMSAgMiAgMyAgNCAgNSAgNiAgNyAgOCAgOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAuLi5cbiAgICAgbGVmdCBjaGlsZDogIDEgIDMgIDUgIDcgIDkgMTEgMTMgMTUgMTcgMTkgMjEgMjMgMjUgMjcgMjkgMzEgMzMgMzUgMzcgMzkgLi4uXG4gICAgIHJpZ2h0IGNoaWxkOiAyICA0ICA2ICA4IDEwIDEyIDE0IDE2IDE4IDIwIDIyIDI0IDI2IDI4IDMwIDMyIDM0IDM2IDM4IDQwIC4uLiB2fSAqKVxubGV0IHBhcmVudF9pbmRleCB+Y2hpbGRfaW5kZXggPSAoY2hpbGRfaW5kZXggLSAxKSAvIDJcbmxldCBsZWZ0X2NoaWxkX2luZGV4IH5wYXJlbnRfaW5kZXggPSAocGFyZW50X2luZGV4ICogMikgKyAxXG5sZXQgcmlnaHRfY2hpbGRfaW5kZXggfmxlZnRfY2hpbGRfaW5kZXggPSBsZWZ0X2NoaWxkX2luZGV4ICsgMVxuXG4oKiBUaGUgZmlyc3QgW251bV9sZWF2ZXMtMV0gZWxlbWVudHMgYXJlIGludGVybmFsIG5vZGVzIG9mIHRoZSB0cmVlLiAgVGhlIG5leHRcbiAgIFtudW1fbGVhdmVzXSBlbGVtZW50cyBhcmUgdGhlIGxlYXZlcy4gKilcbmxldCBudW1fYnJhbmNoZXMgdCA9IHQubnVtX2xlYXZlcyAtIDFcbmxldCBpbmRleF9pc19sZWFmIHQgaSA9IGkgPj0gbnVtX2JyYW5jaGVzIHRcblxuKCogVGhlIHRyZWUgaXMgY29tcGxldGUsIGJ1dCBub3QgbmVjZXNzYXJpbHkgcGVyZmVjdCwgc28gd2UgcGVyZm9ybSBzb21lIHJvdGF0aW9uIG9mIHRoZVxuICAgbGVhdmVzIHRvIGVuc3VyZSB0aGF0IG91ciByZWR1Y3Rpb25zIHByZXNlcnZlIG9yZGVyaW5nLiAqKVxubGV0IGxlYWZfaW5kZXggdCBpID1cbiAgKCogVGhlIHRyZWUgbGF5b3V0IGlzIGxldmVsIG9yZGVyLiAgQW55IGxlYXZlcyBpbiB0aGUgc2Vjb25kIHRvIGxhc3QgbGV2ZWwgbmVlZCB0byBvY2N1clxuICAgICBpbiB0aGUgYXJyYXkgYmVmb3JlIHRoZSBsZWF2ZXMgaW4gdGhlIGJvdHRvbSBsZXZlbC4gKilcbiAgbGV0IHJvdGF0ZWRfaW5kZXggPVxuICAgIGxldCBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXkgPSBpICsgdC5udW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgaW5cbiAgICBpZiBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXkgPCB0Lm51bV9sZWF2ZXNcbiAgICB0aGVuIG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheVxuICAgIGVsc2Ugb2Zmc2V0X2Zyb21fc3RhcnRfb2ZfbGVhdmVzX2luX2FycmF5IC0gdC5udW1fbGVhdmVzXG4gIGluXG4gICgqIFRoZSBsZWF2ZXMgb2NjdXIgYWZ0ZXIgdGhlIGJyYW5jaGVzIGluIHRoZSBhcnJheS4gKilcbiAgcm90YXRlZF9pbmRleCArIG51bV9icmFuY2hlcyB0XG47O1xuXG5sZXQgZ2V0X2xlYWYgdCBpID0gT3B0aW9uX2FycmF5LmdldCB0LmRhdGEgKGxlYWZfaW5kZXggdCBpKVxubGV0IHRvX2xpc3QgdCA9IExpc3QuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiBnZXRfbGVhZiB0IGkpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwICh0b19saXN0IHQgOiBhIG9wdGlvbiBsaXN0KV1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbGV0IGRhdGEgPSB0LmRhdGEgaW5cbiAgZm9yIGkgPSAwIHRvIE9wdGlvbl9hcnJheS5sZW5ndGggZGF0YSAtIDEgZG9cbiAgICBtYXRjaCBPcHRpb25fYXJyYXkuZ2V0IGRhdGEgaSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGEgLT4gaW52YXJpYW50X2EgYVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbnVtX2JyYW5jaGVzIHQgLSAxIGRvXG4gICAgbGV0IGxlZnQgPSBsZWZ0X2NoaWxkX2luZGV4IH5wYXJlbnRfaW5kZXg6aSBpblxuICAgIGxldCByaWdodCA9IHJpZ2h0X2NoaWxkX2luZGV4IH5sZWZ0X2NoaWxkX2luZGV4OmxlZnQgaW5cbiAgICBsZXQgbGVmdF9pc19ub25lID0gT3B0aW9uX2FycmF5LmlzX25vbmUgZGF0YSBsZWZ0IGluXG4gICAgbGV0IHJpZ2h0X2lzX25vbmUgPSBPcHRpb25fYXJyYXkuaXNfbm9uZSBkYXRhIHJpZ2h0IGluXG4gICAgaWYgT3B0aW9uX2FycmF5LmlzX3NvbWUgZGF0YSBpXG4gICAgdGhlbiBhc3NlcnQgKG5vdCAobGVmdF9pc19ub25lIHx8IHJpZ2h0X2lzX25vbmUpKVxuICAgIGVsc2VcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIGluZGV4X2lzX2xlYWYgdCBsZWZ0IHx8IGluZGV4X2lzX2xlYWYgdCByaWdodCB8fCBsZWZ0X2lzX25vbmUgfHwgcmlnaHRfaXNfbm9uZSlcbiAgZG9uZVxuOztcblxubGV0IGNyZWF0ZV9leG4gPyhzZXhwX29mX2EgPSBbJXNleHBfb2Y6IF9dKSAoKSB+bGVuOm51bV9sZWF2ZXMgfnJlZHVjZSA9XG4gIGlmIG51bV9sZWF2ZXMgPCAxXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJub24tcG9zaXRpdmUgbnVtYmVyIG9mIGxlYXZlcyBpbiBiYWxhbmNlZCByZWR1Y2VyXCIgKG51bV9sZWF2ZXMgOiBpbnQpXTtcbiAgbGV0IG51bV9icmFuY2hlcyA9IG51bV9sZWF2ZXMgLSAxIGluXG4gIGxldCBudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgPSBJbnQuY2VpbF9wb3cyIG51bV9sZWF2ZXMgLSBudW1fbGVhdmVzIGluXG4gIGxldCBkYXRhID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOihudW1fYnJhbmNoZXMgKyBudW1fbGVhdmVzKSBpblxuICB7IGRhdGE7IG51bV9sZWF2ZXM7IG51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbDsgcmVkdWNlOyBzZXhwX29mX2EgfVxuOztcblxubGV0IHZhbGlkYXRlX2luZGV4IHQgaSA9XG4gIGlmIGkgPCAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJhdHRlbXB0IHRvIGFjY2VzcyBuZWdhdGl2ZSBpbmRleCBpbiBiYWxhbmNlZCByZWR1Y2VyXCIgfmluZGV4OihpIDogaW50KV07XG4gIGxldCBsZW5ndGggPSB0Lm51bV9sZWF2ZXMgaW5cbiAgaWYgaSA+PSBsZW5ndGhcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcImF0dGVtcHQgdG8gYWNjZXNzIG91dCBvZiBib3VuZHMgaW5kZXggaW4gYmFsYW5jZWQgcmVkdWNlclwiXG4gICAgICAgICAgfmluZGV4OihpIDogaW50KVxuICAgICAgICAgIChsZW5ndGggOiBpbnQpXVxuOztcblxubGV0IHNldF9leG4gdCBpIGEgPVxuICB2YWxpZGF0ZV9pbmRleCB0IGk7XG4gIGxldCBkYXRhID0gdC5kYXRhIGluXG4gIGxldCBpID0gcmVmIChsZWFmX2luZGV4IHQgaSkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIGRhdGEgIWkgYTtcbiAgd2hpbGUgIWkgPD4gMCBkb1xuICAgIGxldCBwYXJlbnQgPSBwYXJlbnRfaW5kZXggfmNoaWxkX2luZGV4OiFpIGluXG4gICAgaWYgT3B0aW9uX2FycmF5LmlzX25vbmUgZGF0YSBwYXJlbnRcbiAgICB0aGVuIGkgOj0gMFxuICAgIGVsc2UgKFxuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSBkYXRhIHBhcmVudDtcbiAgICAgIGkgOj0gcGFyZW50KVxuICBkb25lXG47O1xuXG5sZXQgZ2V0X2V4biB0IGkgPVxuICB2YWxpZGF0ZV9pbmRleCB0IGk7XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5kYXRhIChsZWFmX2luZGV4IHQgaSlcbjs7XG5cbmxldCByZWMgY29tcHV0ZV9leG4gdCBpID1cbiAgaWYgT3B0aW9uX2FycmF5LmlzX3NvbWUgdC5kYXRhIGlcbiAgdGhlbiBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biB0LmRhdGEgaVxuICBlbHNlIChcbiAgICBsZXQgbGVmdCA9IGxlZnRfY2hpbGRfaW5kZXggfnBhcmVudF9pbmRleDppIGluXG4gICAgbGV0IHJpZ2h0ID0gcmlnaHRfY2hpbGRfaW5kZXggfmxlZnRfY2hpbGRfaW5kZXg6bGVmdCBpblxuICAgIGlmIGxlZnQgPj0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmRhdGFcbiAgICB0aGVuIChcbiAgICAgICgqIElmIHdlIGdldCBoZXJlLCB0aGUgcGFyZW50IHdhcyBhbiB1bnNldCBsZWFmLiAqKVxuICAgICAgbGV0IHNleHBfb2ZfYSA9IHQuc2V4cF9vZl9hIGluXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiYXR0ZW1wdCB0byBjb21wdXRlIGJhbGFuY2VkIHJlZHVjZXIgd2l0aCB1bnNldCBlbGVtZW50c1wiXG4gICAgICAgICAgICB+YmFsYW5jZWRfcmVkdWNlcjoodCA6IGEgdCldKTtcbiAgICBsZXQgYSA9IHQucmVkdWNlIChjb21wdXRlX2V4biB0IGxlZnQpIChjb21wdXRlX2V4biB0IHJpZ2h0KSBpblxuICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdC5kYXRhIGkgYTtcbiAgICBhKVxuOztcblxubGV0IGNvbXB1dGVfZXhuIHQgPSBjb21wdXRlX2V4biB0IDBcbiIsIm9wZW4hIENvcmVcblxubW9kdWxlIFRpbWVfbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX25zXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFRpbWVfbnMuQWx0ZXJuYXRlX3NleHAuc2V4cF9vZl90XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBpbml0IDogJ2FcbiAgOyBzdGVwcyA6IChUaW1lX25zLnQgKiAnYSkgU2VxdWVuY2UudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgeyBpbml0OyBzdGVwcyA9IF8gfSA9IGludmFyaWFudF9hIGluaXRcblxubGV0IHJlYyB2YWx1ZV9pbnRlcm5hbCBpbml0IHN0ZXBzIH5hdCA9XG4gIG1hdGNoIFNlcXVlbmNlLm5leHQgc3RlcHMgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgKCh0LCBhKSwgc3RlcHMpIC0+XG4gICAgaWYgVGltZV9ucy4oIDwgKSBhdCB0IHRoZW4gaW5pdCBlbHNlIHZhbHVlX2ludGVybmFsIGEgc3RlcHMgfmF0XG47O1xuXG5sZXQgdmFsdWUgdCB+YXQgPSB2YWx1ZV9pbnRlcm5hbCB0LmluaXQgdC5zdGVwcyB+YXRcbmxldCBjb25zdGFudCBpbml0ID0geyBpbml0OyBzdGVwcyA9IFNlcXVlbmNlLmVtcHR5IH1cblxubGV0IGNyZWF0ZV9leG4gfmluaXQgfnN0ZXBzID1cbiAgaWYgbm90XG4gICAgICAgKExpc3QuaXNfc29ydGVkIHN0ZXBzIH5jb21wYXJlOihmdW4gKHRpbWUxLCBfKSAodGltZTIsIF8pIC0+XG4gICAgICAgICAgVGltZV9ucy5jb21wYXJlIHRpbWUxIHRpbWUyKSlcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltTdGVwX2Z1bmN0aW9uLmNyZWF0ZV9leG5dIGdvdCB1bnNvcnRlZCB0aW1lc1wiXG4gICAgICAgICAgfnN0ZXBzOihzdGVwcyB8PiBMaXN0Lm1hcCB+Zjpmc3QgOiBUaW1lX25zLnQgbGlzdCldO1xuICB7IGluaXQ7IHN0ZXBzID0gc3RlcHMgfD4gU2VxdWVuY2Uub2ZfbGlzdCB9XG47O1xuXG5sZXQgY3JlYXRlX2Zyb21fc2VxdWVuY2UgfmluaXQgfnN0ZXBzID0geyBpbml0OyBzdGVwcyB9XG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBXZWFrID0gU3RkbGliLldlYWtcblxudHlwZSAnYSB0ID0gJ2EgSGVhcF9ibG9jay50IFdlYWsudFxuXG5sZXQgY3JlYXRlIH5sZW4gPSBXZWFrLmNyZWF0ZSBsZW5cbmxldCBsZW5ndGggdCA9IFdlYWsubGVuZ3RoIHRcbmxldCBzZXQgPSBXZWFrLnNldFxuXG5sZXQgc2V0X2V4biB0IGkgeCA9IHNldCB0IGkgKE9wdGlvbi5tYXAgeCB+ZjpIZWFwX2Jsb2NrLmNyZWF0ZV9leG4pXG5cbmxldCBnZXQgPSBXZWFrLmdldFxubGV0IGlzX3NvbWUgdCBpID0gV2Vhay5jaGVjayB0IGlcbmxldCBpc19ub25lIHQgaSA9IG5vdCAoaXNfc29tZSB0IGkpXG5sZXQgdG9fYXJyYXkgdCA9IEFycmF5LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gZ2V0IHQgaSlcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHBfb2Y6IGEgSGVhcF9ibG9jay50IG9wdGlvbiBhcnJheV0gKHRvX2FycmF5IHQpXG5cbmxldCBpdGVyIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgbWF0Y2ggZ2V0IHQgaSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHYgLT4gZiAoSGVhcF9ibG9jay52YWx1ZSB2KVxuICBkb25lXG5cbmxldCBpdGVyaSB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIG1hdGNoIGdldCB0IGkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB2IC0+IGYgaSAoSGVhcF9ibG9jay52YWx1ZSB2KVxuICBkb25lXG5cbmxldCBibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgV2Vhay5ibGl0IHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuIiwiKCogV2UgaW1wbGVtZW50IGEgd2VhayBwb2ludGVyIHVzaW5nIGEgW1dlYWtfYXJyYXkudF0uICopXG5cbm9wZW4hIEJhc2VcblxudHlwZSAnYSB0ID0gJ2EgV2Vha19hcnJheS50XG5cbmxldCBjcmVhdGUgKCkgPSBXZWFrX2FycmF5LmNyZWF0ZSB+bGVuOjFcblxuKCogV2UgdXNlIGEgd2VhayBhcnJheSBvZiBsZW5ndGggMSwgc28gdGhlIHdlYWsgcG9pbnRlciBpcyBhdCBpbmRleCAwLiAqKVxubGV0IGluZGV4ID0gMFxuXG5sZXQgZ2V0IHQgPSBXZWFrX2FycmF5LmdldCB0IGluZGV4XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKGdldCB0IDogYSBIZWFwX2Jsb2NrLnQgb3B0aW9uKV1cblxubGV0IGlzX25vbmUgdCA9IFdlYWtfYXJyYXkuaXNfbm9uZSB0IGluZGV4XG5sZXQgaXNfc29tZSB0ID0gV2Vha19hcnJheS5pc19zb21lIHQgaW5kZXhcblxubGV0IHNldCB0IGJsb2NrID0gV2Vha19hcnJheS5zZXQgdCBpbmRleCAoU29tZSBibG9jaylcbiIsIm9wZW4hIEJhc2VcblxuXG50eXBlICgnYSwgJ2IpIHQgPVxuICB7IGVudHJ5X2J5X2tleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoJ2EsICdiIFdlYWtfcG9pbnRlci50KSBIYXNodGJsLnRcbiAgOyBrZXlzX3dpdGhfdW51c2VkX2RhdGEgICAgICAgICAgICAgICAgICAgIDogJ2EgVGhyZWFkX3NhZmVfcXVldWUudFxuICA7IG11dGFibGUgdGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgOiB1bml0IC0+IHVuaXRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIFVzaW5nX2hhc2hhYmxlID0gc3RydWN0XG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIGhhc2hhYmxlID1cbiAgICB7IGVudHJ5X2J5X2tleSAgICAgICAgICAgICAgICAgICAgID1cbiAgICAgICAgSGFzaHRibC5jcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplXG4gICAgICAgICAgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuXG4gICAgOyBrZXlzX3dpdGhfdW51c2VkX2RhdGEgICAgICAgICAgICA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgdGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgPSBpZ25vcmVcbiAgICB9XG4gIDs7XG5lbmRcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9XG4gIFVzaW5nX2hhc2hhYmxlLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2hhYmxlLm9mX2tleSBtKVxuOztcblxubGV0IHNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSB0IH50aHJlYWRfc2FmZV9mID1cbiAgdC50aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSA8LSB0aHJlYWRfc2FmZV9mO1xuOztcblxubGV0IHJlbW92ZSB0IGtleSA9IEhhc2h0YmwucmVtb3ZlIHQuZW50cnlfYnlfa2V5IGtleVxuXG4oKiBJbiBvcmRlciBmb3IgYSBjYWxsIHRvIFtyZWNsYWltX3NwYWNlX2Zvcl9rZXlzX3dpdGhfdW51c2VkX2RhdGFdIHRvIHJlY2xhaW0gYSBrZXkgdGhhdFxuICAgd2FzIHByZXZpb3VzbHkgZmluYWxpemVkLCB0aGUgd2VhayBwb2ludGVyIG11c3QgaGF2ZSBiZWVuIGNsZWFyZWQuICBUaGlzIHJlbGllcyBvbiB0aGVcbiAgIGZhY3QgdGhhdCB0aGUgT0NhbWwgZ2FyYmFnZSBjb2xsZWN0b3IgY2xlYXJzIHdlYWtzIGFuZCB0aGVuIHJ1bnMgZmluYWxpemVycy4gKilcbmxldCByZWNsYWltX3NwYWNlX2Zvcl9rZXlzX3dpdGhfdW51c2VkX2RhdGEgdCA9XG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCB0LmtleXNfd2l0aF91bnVzZWRfZGF0YSA+IDAgZG9cbiAgICBsZXQga2V5ID0gVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gdC5rZXlzX3dpdGhfdW51c2VkX2RhdGEgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdC5lbnRyeV9ieV9rZXkga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZW50cnkgLT4gaWYgV2Vha19wb2ludGVyLmlzX25vbmUgZW50cnkgdGhlbiByZW1vdmUgdCBrZXlcbiAgZG9uZTtcbjs7XG5cbmxldCBnZXRfZW50cnkgdCBrZXkgPVxuICBIYXNodGJsLmZpbmRfb3JfYWRkIHQuZW50cnlfYnlfa2V5IGtleVxuICAgIH5kZWZhdWx0OihmdW4gKCkgLT4gV2Vha19wb2ludGVyLmNyZWF0ZSAoKSk7XG47O1xuXG5sZXQgbWVtIHQga2V5ID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIHQuZW50cnlfYnlfa2V5IGtleSB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgZW50cnkgLT4gV2Vha19wb2ludGVyLmlzX3NvbWUgZW50cnlcbjs7XG5cbmxldCBrZXlfaXNfdXNpbmdfc3BhY2UgdCBrZXkgPSBIYXNodGJsLm1lbSB0LmVudHJ5X2J5X2tleSBrZXlcblxubGV0IHNldF9kYXRhIHQga2V5IGVudHJ5IChkYXRhIDogXyBIZWFwX2Jsb2NrLnQpID1cbiAgV2Vha19wb2ludGVyLnNldCBlbnRyeSBkYXRhO1xuICBsZXQgY2xlYW51cCAoKSA9XG4gICAgRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+XG4gICAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQua2V5c193aXRoX3VudXNlZF9kYXRhIGtleTtcbiAgICAgIHQudGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgKCkpXG4gIGluXG4gIHRyeSBTdGRsaWIuR2MuZmluYWxpc2VfbGFzdCBjbGVhbnVwIGRhdGEgd2l0aFxuICAoKiBJbiB0aGlzIGNhc2UsIFt4XSBpcyBrbm93biB0byBiZSBzdGF0aWMgZGF0YSwgd2hpY2ggd2lsbFxuICAgICBuZXZlciBiZSBjb2xsZWN0ZWQgYnkgdGhlIEdDIGFueXdheSwgc28gaXQncyBzYWZlIHRvIGRyb3AgKilcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gKClcblxuOztcblxubGV0IHJlcGxhY2UgdCB+a2V5IH5kYXRhID0gc2V0X2RhdGEgdCBrZXkgKGdldF9lbnRyeSB0IGtleSkgZGF0YVxuXG5sZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICBsZXQgZW50cnkgPSBnZXRfZW50cnkgdCBrZXkgaW5cbiAgaWYgV2Vha19wb2ludGVyLmlzX3NvbWUgZW50cnlcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIldlYWtfaGFzaHRibC5hZGRfZXhuIG9mIGtleSBpbiB1c2VcIiB+XzoodCA6IChfLCBfKSB0KSBbJWhlcmVdXTtcbiAgc2V0X2RhdGEgdCBrZXkgZW50cnkgZGF0YTtcbjs7XG5cbmxldCBmaW5kIHQga2V5ID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIHQuZW50cnlfYnlfa2V5IGtleSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBlbnRyeSAtPiBXZWFrX3BvaW50ZXIuZ2V0IGVudHJ5XG47O1xuXG5sZXQgZmluZF9vcl9hZGQgdCBrZXkgfmRlZmF1bHQgPVxuICBsZXQgZW50cnkgPSBnZXRfZW50cnkgdCBrZXkgaW5cbiAgbWF0Y2ggV2Vha19wb2ludGVyLmdldCBlbnRyeSB3aXRoXG4gIHwgU29tZSB2IC0+IHZcbiAgfCBOb25lIC0+XG4gICAgbGV0IGRhdGEgPSBkZWZhdWx0ICgpIGluXG4gICAgc2V0X2RhdGEgdCBrZXkgZW50cnkgZGF0YTtcbiAgICBkYXRhXG47O1xuIiwidHlwZSB0ID1cbiAgfCBCZWZvcmVcbiAgfCBBZnRlclxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiIsIlslJWltcG9ydCBcImRlYnVnLm1saFwiXVxuXG5vcGVuIENvcmVcblxuKCogQWxsIFthc3NlcnRdcyBhbmQgb3RoZXIgY2hlY2tzIHRocm91Z2hvdXQgdGhlIGNvZGUgYXJlIGd1YXJkZWQgYnkgW2lmIGRlYnVnXS4gIFRoZVxuICAgREVCVUcgdmFyaWFibGUgaXMgc2V0IGluIHRoZSBsaWIgW2luY3JlbWVudGFsXSBhbmQgdW5zZXQgaW4gdGhlIGxpYlxuICAgW2luY3JlbWVudGFsX2RlYnVnXSwgYnV0IGFwYXJ0IGZyb20gdGhhdCB0aGV5IGFyZSBpZGVudGljYWwuICBUZXN0cyBhcmUgcnVuIHdpdGggYm90aFxuICAgdGhlIHByb2R1Y3Rpb24gYW5kIGRlYnVnIGxpYiwgYW5kIHVzZXJzIGNhbiBjaG9vc2UgdG8gYnVpbGQgd2l0aCB0aGUgZGVidWcgbGlicmFyeSwgaWZcbiAgIHRoZXkgc3VzcGVjdCB0aGV5IGZvdW5kIGEgYnVnIGluIGluY3JlbWVudGFsLiAqKVxuXG5bJSVpZiBKU0NfREVCVUddXG5cbmxldCBkZWJ1ZyA9IHRydWVcblxuWyUlZWxzZV1cblxubGV0IGRlYnVnID0gZmFsc2VcblxuWyUlZW5kaWZdXG5cbmxldCBjb25jYXQgPSBTdHJpbmcuY29uY2F0XG5sZXQgdGFnIG5hbWUgYSBzZXhwX29mX2EgPSAobmFtZSwgYSkgfD4gWyVzZXhwX29mOiBzdHJpbmcgKiBhXVxuXG5tb2R1bGUgU3RlcF9mdW5jdGlvbiA9IEluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb25cblxubW9kdWxlIFRpbWVfbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX25zXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFRpbWVfbnMuQWx0ZXJuYXRlX3NleHAuc2V4cF9vZl90XG5lbmRcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG4gIGluY2x1ZGUgQXJyYXlcblxuICAoKiBOb3QgZGVmaW5pbmcgYWxpYXNlcyBpbiBwcm9kdWN0aW9uIG1vZGUsIHNpbmNlIHRoZXkgYnJlYWsgdHlwZSBzcGVjaWFsaXphdGlvbiBvZlxuICAgICBhcnJheSBhY2Nlc3Nlcy4gKilcbiAgWyUlaWYgSlNDX0RFQlVHXVxuXG4gIGxldCB1bnNhZmVfZ2V0ID0gZ2V0XG4gIGxldCB1bnNhZmVfc2V0ID0gc2V0XG5cbiAgWyUlZW5kaWZdXG5cbiAgKCogUmVxdWlyZXMgW2xlbiA+PSBsZW5ndGggdF0uICopXG4gIGxldCByZWFsbG9jIHQgfmxlbiBhID1cbiAgICBsZXQgbmV3X3QgPSBjcmVhdGUgfmxlbiBhIGluXG4gICAgQXJyYXkuYmxpdCB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om5ld190IH5kc3RfcG9zOjAgfmxlbjoobGVuZ3RoIHQpO1xuICAgIG5ld190XG4gIDs7XG5lbmRcblxubW9kdWxlIFVvcHQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVb3B0XG5cbiAgbGV0IHVuc2FmZV92YWx1ZSA9IGlmIGRlYnVnIHRoZW4gdmFsdWVfZXhuIGVsc2UgdW5zYWZlX3ZhbHVlXG5lbmRcblxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVbmlmb3JtX2FycmF5XG5cbiAgWyUlaWYgSlNDX0RFQlVHXVxuXG4gIGxldCB1bnNhZmVfZ2V0ID0gZ2V0XG4gIGxldCB1bnNhZmVfc2V0ID0gc2V0X3dpdGhfY2FtbF9tb2RpZnlcblxuICBbJSVlbHNlXVxuXG4gICgqIFVuaWZvcm1fYXJyYXkgaXMgYmVpbmcgXCJzbWFydFwiIGJ5IGNoZWNraW5nIGlmIGVsZW1lbnRzIGFyZSBpbnRlZ2VycywgYnV0IFVvcHQudFxuICAgICBhbG1vc3QgbmV2ZXIgY29udGFpbiBpbnRlZ2Vycywgc28gdGhlIGV4dHJhIGNoZWNrIHRvIG1ha2UgZ2VuZXJhdGVkIGNvZGUgaGFyZGVyIHRvXG4gICAgIHJlYWQgYW5kIHBvdGVudGlhbGx5IHNsb3dlci4gKilcbiAgbGV0IHVuc2FmZV9zZXQgPSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnlcbiAgbGV0IHNldCA9IHNldF93aXRoX2NhbWxfbW9kaWZ5XG5cbiAgWyUlZW5kaWZdXG5cbiAgKCogUmVxdWlyZXMgW2xlbiA+PSBsZW5ndGggdF0uICopXG4gIGxldCByZWFsbG9jIHQgfmxlbiA9XG4gICAgbGV0IG5ld190ID0gY3JlYXRlIH5sZW4gVW9wdC5ub25lIGluXG4gICAgYmxpdCB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om5ld190IH5kc3RfcG9zOjAgfmxlbjoobGVuZ3RoIHQpO1xuICAgIG5ld190XG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA9IFRpbWluZ193aGVlbC5BbGFybV9wcmVjaXNpb25cbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9XG4gICgqIFdlIHNwZWNpYWxpemUgc29tZSBjdXRvZmZzIHRvIGF2b2lkIGFuIGluZGlyZWN0IGZ1bmN0aW9uIGNhbGw7IGluIHBhcnRpY3VsYXIgd2VcbiAgICAgc3BlY2lhbGl6ZSB0aGUgZGVmYXVsdCAoYW5kIGhlbmNlIG92ZXJ3aGVsbWluZ2x5IGNvbW1vbikgY2FzZSBvZiBwaHlzaWNhbFxuICAgICBlcXVhbGl0eS4gKilcbiAgfCBBbHdheXNcbiAgfCBOZXZlclxuICB8IFBoeXNfZXF1YWxcbiAgfCBDb21wYXJlIG9mICgnYSAtPiAnYSAtPiBpbnQpXG4gIHwgRXF1YWwgb2YgKCdhIC0+ICdhIC0+IGJvb2wpXG4gIHwgRiBvZiAob2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiBib29sKVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQWx3YXlzIHwgTmV2ZXIgfCBQaHlzX2VxdWFsIHwgQ29tcGFyZSBfIHwgRXF1YWwgXyB8IEYgXyAtPiAoKSlcbjs7XG5cbmxldCBjcmVhdGUgZiA9IEYgZlxubGV0IG9mX2NvbXBhcmUgZiA9IENvbXBhcmUgZlxubGV0IG9mX2VxdWFsIGYgPSBFcXVhbCBmXG5sZXQgbmV2ZXIgPSBOZXZlclxubGV0IGFsd2F5cyA9IEFsd2F5c1xubGV0IHBvbHlfZXF1YWwgPSBFcXVhbCBQb2x5LmVxdWFsXG5cbmxldCBzaG91bGRfY3V0b2ZmIHQgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgUGh5c19lcXVhbCAtPiBwaHlzX2VxdWFsIG9sZF92YWx1ZSBuZXdfdmFsdWVcbiAgfCBOZXZlciAtPiBmYWxzZVxuICB8IEFsd2F5cyAtPiB0cnVlXG4gIHwgQ29tcGFyZSBmIC0+IGYgb2xkX3ZhbHVlIG5ld192YWx1ZSA9IDBcbiAgfCBFcXVhbCBmIC0+IGYgb2xkX3ZhbHVlIG5ld192YWx1ZVxuICB8IEYgZiAtPiBmIH5vbGRfdmFsdWUgfm5ld192YWx1ZVxuOztcblxubGV0IGVxdWFsIHQxIHQyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBBbHdheXMsIEFsd2F5cyAtPiB0cnVlXG4gIHwgQWx3YXlzLCBfIC0+IGZhbHNlXG4gIHwgTmV2ZXIsIE5ldmVyIC0+IHRydWVcbiAgfCBOZXZlciwgXyAtPiBmYWxzZVxuICB8IFBoeXNfZXF1YWwsIFBoeXNfZXF1YWwgLT4gdHJ1ZVxuICB8IFBoeXNfZXF1YWwsIF8gLT4gZmFsc2VcbiAgfCBDb21wYXJlIGYxLCBDb21wYXJlIGYyIC0+IHBoeXNfZXF1YWwgZjEgZjJcbiAgfCBDb21wYXJlIF8sIF8gLT4gZmFsc2VcbiAgfCBFcXVhbCBmMSwgRXF1YWwgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IEVxdWFsIF8sIF8gLT4gZmFsc2VcbiAgfCBGIGYxLCBGIGYyIC0+IHBoeXNfZXF1YWwgZjEgZjJcbiAgfCBGIF8sIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBwaHlzX2VxdWFsID0gUGh5c19lcXVhbFxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFN0cmluZ19saXN0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBsaXN0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IubWFrZSB+c2V4cF9vZl90IH5jb21wYXJlKVxuZW5kXG5cbnR5cGUgZG90ID1cbiAgeyBsYWJlbCA6IFNldC5NKFN0cmluZ19saXN0KS50XG4gIDsgYXR0cmlidXRlcyA6IHN0cmluZyBTdHJpbmcuTWFwLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSB0ID1cbiAgfCBEb3Qgb2YgZG90XG4gIHwgSW5mbyBvZiBJbmZvLnRcbiAgfCBBcHBlbmQgb2ZcbiAgICAgIHsgcHJpb3IgOiB0XG4gICAgICA7IG5ld18gOiB0XG4gICAgICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW5mbyBpbmZvID0gSW5mbyBpbmZvXG5sZXQgYXBwZW5kIHByaW9yIG5ld18gPSBBcHBlbmQgeyBwcmlvcjsgbmV3XyB9XG5cbmxldCBkb3QgfmxhYmVsIH5hdHRyaWJ1dGVzID1cbiAgbGV0IGxhYmVsID0gU2V0LnNpbmdsZXRvbiAobW9kdWxlIFN0cmluZ19saXN0KSBsYWJlbCBpblxuICBEb3QgeyBsYWJlbDsgYXR0cmlidXRlcyB9XG47O1xuXG5sZXQgcmVjIHRvX2RvdCA9IGZ1bmN0aW9uXG4gIHwgSW5mbyBpIC0+XG4gICAgeyBsYWJlbCA9IFNldC5zaW5nbGV0b24gKG1vZHVsZSBTdHJpbmdfbGlzdCkgWyBJbmZvLnRvX3N0cmluZ19odW0gaSBdXG4gICAgOyBhdHRyaWJ1dGVzID0gU3RyaW5nLk1hcC5lbXB0eVxuICAgIH1cbiAgfCBEb3QgZG90IC0+IGRvdFxuICB8IEFwcGVuZCB7IHByaW9yOyBuZXdfIH0gLT5cbiAgICBsZXQgcHJpb3IgPSB0b19kb3QgcHJpb3IgaW5cbiAgICBsZXQgbmV3XyA9IHRvX2RvdCBuZXdfIGluXG4gICAgbGV0IGxhYmVsID0gU2V0LnVuaW9uIHByaW9yLmxhYmVsIG5ld18ubGFiZWwgaW5cbiAgICBsZXQgYXR0cmlidXRlcyA9XG4gICAgICBNYXAubWVyZ2Vfc2tld2VkXG4gICAgICAgIHByaW9yLmF0dHJpYnV0ZXNcbiAgICAgICAgbmV3Xy5hdHRyaWJ1dGVzXG4gICAgICAgIH5jb21iaW5lOihmdW4gfmtleTpfIF9sZWZ0IHJpZ2h0IC0+IHJpZ2h0KVxuICAgIGluXG4gICAgeyBsYWJlbDsgYXR0cmlidXRlcyB9XG47O1xuXG5sZXQgZXNjYXBlX2RvdF9zdHJpbmcgcyA9XG4gICgqIGh0dHBzOi8vZ3JhcGh2aXoub3JnL2RvYy9pbmZvL2xhbmcuaHRtbCAqKVxuICBcIlxcXCJcIiBeIFN0cmluZy5zdWJzdHJfcmVwbGFjZV9hbGwgcyB+cGF0dGVybjpcIlxcXCJcIiB+d2l0aF86XCJcXFxcXFxcIlwiIF4gXCJcXFwiXCJcbjs7XG5cbmxldCBlc2NhcGVfcmVjb3JkX2xhYmVsIHMgPVxuICAoKiBodHRwczovL2dyYXBodml6Lm9yZy9kb2MvaW5mby9zaGFwZXMuaHRtbCAqKVxuICBTdHJpbmcuY29uY2F0X21hcCBzIH5mOihmdW5jdGlvblxuICAgIHwgKCc8JyB8ICc+JyB8ICd7JyB8ICd9JyB8ICd8JyB8ICdcXFxcJyB8ICcgJykgYXMgYyAtPiBcIlxcXFxcIiBeIFN0cmluZy5vZl9jaGFyIGNcbiAgICB8IGMgLT4gU3RyaW5nLm9mX2NoYXIgYylcbjs7XG5cbmxldCB0b19zdHJpbmcgfm5hbWUgeyBsYWJlbDsgYXR0cmlidXRlcyB9ID1cbiAgbGV0IGxhYmVsID1cbiAgICBsYWJlbFxuICAgIHw+IFNldC50b19saXN0XG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBjb2xzIC0+XG4gICAgICBcIntcIiBeIFN0cmluZy5jb25jYXQgKExpc3QubWFwIGNvbHMgfmY6ZXNjYXBlX3JlY29yZF9sYWJlbCkgfnNlcDpcInxcIiBeIFwifVwiKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcInxcIlxuICAgIHw+IGZ1biBzIC0+IFwie1wiIF4gcyBeIFwifVwiXG4gIGluXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBhdHRyaWJ1dGVzXG4gICAgfD4gTWFwLnRvX2FsaXN0XG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biAoaywgdikgLT5cbiAgICAgIHNwcmludGYge3wgJXM9JXN8fSAoZXNjYXBlX2RvdF9zdHJpbmcgaykgKGVzY2FwZV9kb3Rfc3RyaW5nIHYpKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIlxuICBpblxuICBzcHJpbnRmIHt8ICAlcyBbc2hhcGU9TXJlY29yZCBsYWJlbD0lcyAlc118fSBuYW1lIChlc2NhcGVfZG90X3N0cmluZyBsYWJlbCkgYXR0cmlidXRlc1xuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludFxuXG5sZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQgPj0gMSlcblxubGV0IG5leHQgPVxuICBsZXQgciA9IHJlZiAwIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgcjtcbiAgICAhclxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludFxuXG5sZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQgPj0gLTEpXG5sZXQgbm9uZSA9IC0xXG5sZXQgaXNfbm9uZSB0ID0gdCA9IG5vbmVcbmxldCBpc19zb21lIHQgPSB0ID49IDBcbmxldCBhZGQxIHQgPSB0ICsgMVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBQcmV2aW91c191cGRhdGVfa2luZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmV2ZXJfYmVlbl91cGRhdGVkXG4gICAgfCBOZWNlc3NhcnlcbiAgICB8IENoYW5nZWRcbiAgICB8IEludmFsaWRhdGVkXG4gICAgfCBVbm5lY2Vzc2FyeVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSBOb2RlX3VwZGF0ZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgTmVjZXNzYXJ5IG9mICdhXG4gICAgfCBDaGFuZ2VkIG9mICdhICogJ2FcbiAgICB8IEludmFsaWRhdGVkXG4gICAgfCBVbm5lY2Vzc2FyeVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgZiA6ICdhIE5vZGVfdXBkYXRlLnQgLT4gdW5pdFxuICA7IG11dGFibGUgcHJldmlvdXNfdXBkYXRlX2tpbmQgOiBQcmV2aW91c191cGRhdGVfa2luZC50XG4gIDsgY3JlYXRlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGNyZWF0ZSBmIH5hdDpjcmVhdGVkX2F0ID0geyBmOyBwcmV2aW91c191cGRhdGVfa2luZCA9IE5ldmVyX2JlZW5fdXBkYXRlZDsgY3JlYXRlZF9hdCB9XG5cbmxldCByZWFsbHlfcnVuIHQgKG5vZGVfdXBkYXRlIDogXyBOb2RlX3VwZGF0ZS50KSA9XG4gIHQucHJldmlvdXNfdXBkYXRlX2tpbmRcbiAgPC0gKG1hdGNoIG5vZGVfdXBkYXRlIHdpdGhcbiAgICB8IE5lY2Vzc2FyeSBfIC0+IE5lY2Vzc2FyeVxuICAgIHwgQ2hhbmdlZCBfIC0+IENoYW5nZWRcbiAgICB8IEludmFsaWRhdGVkIC0+IEludmFsaWRhdGVkXG4gICAgfCBVbm5lY2Vzc2FyeSAtPiBVbm5lY2Vzc2FyeSk7XG4gIHQuZiBub2RlX3VwZGF0ZVxuOztcblxubGV0IHJ1biB0IChub2RlX3VwZGF0ZSA6IF8gTm9kZV91cGRhdGUudCkgfm5vdyA9XG4gICgqIFdlIG9ubHkgcnVuIHRoZSBoYW5kbGVyIGlmIHdhcyBjcmVhdGVkIGluIGFuIGVhcmxpZXIgc3RhYmlsaXphdGlvbiBjeWNsZS4gIElmIHRoZVxuICAgICBoYW5kbGVyIHdhcyBjcmVhdGVkIGJ5IGFub3RoZXIgb24tdXBkYXRlIGhhbmRsZXIgZHVyaW5nIHRoZSBydW5uaW5nIG9mIG9uLXVwZGF0ZVxuICAgICBoYW5kbGVycyBpbiB0aGUgY3VycmVudCBzdGFiaWxpemF0aW9uLCB3ZSB0cmVhdCB0aGUgYWRkZWQgaGFuZGxlciBhcyBpZiBpdCB3ZXJlIGFkZGVkXG4gICAgIGFmdGVyIHRoaXMgc3RhYmlsaXphdGlvbiBmaW5pc2hlZC4gIFdlIHdpbGwgcnVuIGl0IGF0IHRoZSBuZXh0IHN0YWJpbGl6YXRpb24sIGJlY2F1c2VcbiAgICAgdGhlIG5vZGUgd2l0aCB0aGUgaGFuZGxlciB3YXMgcHVzaGVkIG9uIFtzdGF0ZS5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0uICopXG4gIGlmIFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmUgdC5jcmVhdGVkX2F0IG5vdyA8IDBcbiAgdGhlbiAoXG4gICAgbWF0Y2ggdC5wcmV2aW91c191cGRhdGVfa2luZCwgbm9kZV91cGRhdGUgd2l0aFxuICAgICgqIE9uY2UgYSBub2RlIGlzIGludmFsaWRhdGVkLCB0aGVyZSB3aWxsIG5ldmVyIGJlIGZ1cnRoZXIgaW5mb3JtYXRpb24gdG8gcHJvdmlkZSxcbiAgICAgICBzaW5jZSBpbmNyZW1lbnRhbCBkb2VzIG5vdCBhbGxvdyBhbiBpbnZhbGlkIG5vZGUgdG8gYmVjb21lIHZhbGlkLiAqKVxuICAgIHwgSW52YWxpZGF0ZWQsIF8gLT4gKClcbiAgICAoKiBUaGVzZSBjYXNlcyBjYW4gaGFwcGVuIGlmIGEgbm9kZSBpcyBoYW5kbGVkIGFmdGVyIHN0YWJpbGl6YXRpb24gZHVlIHRvIGFub3RoZXJcbiAgICAgICBoYW5kbGVyLiAgQnV0IGZvciB0aGUgY3VycmVudCBoYW5kbGVyLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvIGJlY2F1c2UgdGhlcmUgaXMgbm9cbiAgICAgICBuZXcgaW5mb3JtYXRpb24gdG8gcHJvdmlkZS4gKilcbiAgICB8IENoYW5nZWQsIE5lY2Vzc2FyeSBfIHwgTmVjZXNzYXJ5LCBOZWNlc3NhcnkgXyB8IFVubmVjZXNzYXJ5LCBVbm5lY2Vzc2FyeSAtPiAoKVxuICAgICgqIElmIHRoaXMgaGFuZGxlciBoYXNuJ3Qgc2VlbiBhIG5vZGUgdGhhdCBpcyBjaGFuZ2luZywgd2UgdHJlYXQgdGhlIHVwZGF0ZSBhcyBhblxuICAgICAgIGluaXRpYWxpemF0aW9uLiAqKVxuICAgIHwgKE5ldmVyX2JlZW5fdXBkYXRlZCB8IFVubmVjZXNzYXJ5KSwgQ2hhbmdlZCAoXywgYSkgLT4gcmVhbGx5X3J1biB0IChOZWNlc3NhcnkgYSlcbiAgICAoKiBBbGwgb3RoZXIgdXBkYXRlcyBhcmUgcnVuIGFzIGlzLiAqKVxuICAgIHwgTmV2ZXJfYmVlbl91cGRhdGVkLCAoTmVjZXNzYXJ5IF8gfCBVbm5lY2Vzc2FyeSB8IEludmFsaWRhdGVkKVxuICAgIHwgVW5uZWNlc3NhcnksIChOZWNlc3NhcnkgXyB8IEludmFsaWRhdGVkKVxuICAgIHwgTmVjZXNzYXJ5LCAoQ2hhbmdlZCBfIHwgVW5uZWNlc3NhcnkgfCBJbnZhbGlkYXRlZClcbiAgICB8IENoYW5nZWQsIChDaGFuZ2VkIF8gfCBVbm5lY2Vzc2FyeSB8IEludmFsaWRhdGVkKSAtPiByZWFsbHlfcnVuIHQgbm9kZV91cGRhdGUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgeyBleG4gOiBleG5cbiAgOyBiYWNrdHJhY2UgOiBCYWNrdHJhY2UudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY3JlYXRlIGV4biA9IHsgZXhuOyBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIH1cblxubGV0IHJlcmFpc2Vfd2l0aF9tZXNzYWdlIHsgZXhuOyBiYWNrdHJhY2UgfSBtc2cgPVxuICBFeG4ucmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgKEV4bi5SZXJhaXNlZCAobXNnLCBleG4pKSBiYWNrdHJhY2Vcbjs7XG5cbmxldCByZXJhaXNlIHsgZXhuOyBiYWNrdHJhY2UgfSA9IEV4bi5yYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSBleG4gYmFja3RyYWNlXG4iLCIoKiBUaGlzIG1vZHVsZSBoYXMgYSBnaWFudCBbbW9kdWxlIHJlY10gZGVmaW5pbmcgYWxsIHRoZSBtdXR1YWxseSByZWN1cnNpdmUgdHlwZXMgdXNlZFxuICAgaW4gdGhlIGltcGxlbWVudGF0aW9uLiAgVGhlIGRlZmluaXRpb24gb2YgZWFjaCB0eXBlIGlzIHRoZW4gcmVwZWF0ZWQgaW4gaXRzIGZpbGU7XG4gICBjb21tZW50cyBiZWxvbmcgdGhlcmUsIG5vdCBoZXJlLlxuXG4gICBXZSBwdXQganVzdCBlbm91Z2ggc2V4cCBjb252ZXJ0ZXJzIGhlcmUgdG8gZGlzcGxheSBub2RlIGlkcy4gIFRoZSBkZXRhaWxlZCBzZXhwXG4gICBjb252ZXJ0ZXJzIGFyZSBnZW5lcmF0ZWQgdmlhIFt3aXRoIHNleHBdIGluIHRoZSBpbmRpdmlkdWFsIGZpbGVzLiAgRGVmaW5pbmcgdGhlIHNleHBcbiAgIGNvbnZlcnRlcnMgb3V0c2lkZSBvZiB0aGUgW21vZHVsZSByZWNdIG1ha2VzIGl0IGltcG9zc2libGUgdG8gYWNjaWRlbnRhbGx5IGludHJvZHVjZSBhXG4gICBzZXhwIGNvbnZlcnRlciB0aGF0IHdvdWxkIHRyeSB0byBwcm9kdWNlIGFuIGluZmluaXRlIHNleHAuXG4qKVxuXG5vcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5cbm1vZHVsZSByZWMgQWRqdXN0X2hlaWdodHNfaGVhcCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2xvd2VyX2JvdW5kIDogaW50XG4gICAgOyBtdXRhYmxlIG1heF9oZWlnaHRfc2VlbiA6IGludFxuICAgIDsgbXV0YWJsZSBub2Rlc19ieV9oZWlnaHQgOiBOb2RlLlBhY2tlZC50IFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgICB9XG5lbmQgPVxuICBBZGp1c3RfaGVpZ2h0c19oZWFwXG5cbmFuZCBBbGFybSA6IHNpZ1xuICB0eXBlIHQgPSBBbGFybV92YWx1ZS50IFRpbWluZ193aGVlbC5BbGFybS50XG5lbmQgPVxuICBBbGFybVxuXG5hbmQgQWxhcm1fdmFsdWUgOiBzaWdcbiAgbW9kdWxlIEFjdGlvbiA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEF0IG9mIEF0LnRcbiAgICAgIHwgQXRfaW50ZXJ2YWxzIG9mIEF0X2ludGVydmFscy50XG4gICAgICB8IFNuYXBzaG90IDogXyBTbmFwc2hvdC50IC0+IHRcbiAgICAgIHwgU3RlcF9mdW5jdGlvbiA6IF8gU3RlcF9mdW5jdGlvbl9ub2RlLnQgLT4gdFxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgYWN0aW9uIDogQWN0aW9uLnRcbiAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IHQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgQWxhcm1fdmFsdWVcblxuYW5kIEFycmF5X2ZvbGQgOiBzaWdcbiAgdHlwZSAoJ2EsICdhY2MpIHQgPVxuICAgIHsgaW5pdCA6ICdhY2NcbiAgICA7IGYgOiAnYWNjIC0+ICdhIC0+ICdhY2NcbiAgICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gICAgfVxuZW5kID1cbiAgQXJyYXlfZm9sZFxuXG5hbmQgQXQgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG1haW4gOiBCZWZvcmVfb3JfYWZ0ZXIudCBOb2RlLnRcbiAgICA7IGF0IDogVGltZV9ucy50XG4gICAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICAgIDsgY2xvY2sgOiBDbG9jay50XG4gICAgfVxuZW5kID1cbiAgQXRcblxuYW5kIEF0X2ludGVydmFscyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbWFpbiA6IHVuaXQgTm9kZS50XG4gICAgOyBiYXNlIDogVGltZV9ucy50XG4gICAgOyBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50XG4gICAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICAgIDsgY2xvY2sgOiBDbG9jay50XG4gICAgfVxuZW5kID1cbiAgQXRfaW50ZXJ2YWxzXG5cbmFuZCBCaW5kIDogc2lnXG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgeyBtYWluIDogJ2IgTm9kZS50XG4gICAgOyBtdXRhYmxlIGYgOiAnYSAtPiAnYiBOb2RlLnRcbiAgICA7IGxocyA6ICdhIE5vZGUudFxuICAgIDsgbGhzX2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gICAgOyBtdXRhYmxlIHJocyA6ICdiIE5vZGUudCBVb3B0LnRcbiAgICA7IG11dGFibGUgcmhzX3Njb3BlIDogU2NvcGUudFxuICAgIDsgbXV0YWJsZSBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIH1cbmVuZCA9XG4gIEJpbmRcblxuYW5kIENsb2NrIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyB0aW1pbmdfd2hlZWwgOiBBbGFybV92YWx1ZS50IFRpbWluZ193aGVlbC50XG4gICAgOyBub3cgOiBUaW1lX25zLnQgVmFyLnRcbiAgICA7IGhhbmRsZV9maXJlZCA6IEFsYXJtLnQgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBmaXJlZF9hbGFybV92YWx1ZXMgOiBBbGFybV92YWx1ZS50IFVvcHQudFxuICAgIH1cbmVuZCA9XG4gIENsb2NrXG5cbmFuZCBFeHBlcnQgOiBzaWdcbiAgdHlwZSAnYSBlZGdlID1cbiAgICB7IGNoaWxkIDogJ2EgTm9kZS50XG4gICAgOyBvbl9jaGFuZ2UgOiAnYSAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGluZGV4IDogaW50IFVvcHQudFxuICAgIH1cblxuICB0eXBlIHBhY2tlZF9lZGdlID0gRSA6ICdhIGVkZ2UgLT4gcGFja2VkX2VkZ2UgW0BAdW5ib3hlZF1cblxuICB0eXBlICdhIHQgPVxuICAgIHsgZiA6IHVuaXQgLT4gJ2FcbiAgICA7IG9uX29ic2VydmFiaWxpdHlfY2hhbmdlIDogaXNfbm93X29ic2VydmFibGU6Ym9vbCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGNoaWxkcmVuIDogcGFja2VkX2VkZ2UgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIDsgbXV0YWJsZSBudW1fY2hpbGRyZW4gOiBpbnRcbiAgICA7IG11dGFibGUgZm9yY2Vfc3RhbGUgOiBib29sXG4gICAgOyBtdXRhYmxlIG51bV9pbnZhbGlkX2NoaWxkcmVuIDogaW50XG4gICAgOyBtdXRhYmxlIHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDogYm9vbFxuICAgIH1cbmVuZCA9XG4gIEV4cGVydFxuXG5hbmQgRnJlZXplIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyBjaGlsZCA6ICdhIE5vZGUudFxuICAgIDsgb25seV9mcmVlemVfd2hlbiA6ICdhIC0+IGJvb2xcbiAgICB9XG5lbmQgPVxuICBGcmVlemVcblxuYW5kIElmX3RoZW5fZWxzZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgdGVzdCA6IGJvb2wgTm9kZS50XG4gICAgOyB0ZXN0X2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnRfYnJhbmNoIDogJ2EgTm9kZS50IFVvcHQudFxuICAgIDsgdGhlbl8gOiAnYSBOb2RlLnRcbiAgICA7IGVsc2VfIDogJ2EgTm9kZS50XG4gICAgfVxuZW5kID1cbiAgSWZfdGhlbl9lbHNlXG5cbmFuZCBJbnRlcm5hbF9vYnNlcnZlciA6IHNpZ1xuICBtb2R1bGUgU3RhdGUgOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBDcmVhdGVkXG4gICAgICB8IEluX3VzZVxuICAgICAgfCBEaXNhbGxvd2VkXG4gICAgICB8IFVubGlua2VkXG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIHN0YXRlIDogU3RhdGUudFxuICAgIDsgb2JzZXJ2aW5nIDogJ2EgTm9kZS50XG4gICAgOyBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBwcmV2X2luX2FsbCA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX2FsbCA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBwcmV2X2luX29ic2VydmluZyA6ICdhIHQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fb2JzZXJ2aW5nIDogJ2EgdCBVb3B0LnRcbiAgICB9XG5cbiAgdHlwZSAnYSBpbnRlcm5hbF9vYnNlcnZlciA9ICdhIHRcblxuICBtb2R1bGUgUGFja2VkIDogc2lnXG4gICAgdHlwZSB0ID0gVCA6IF8gaW50ZXJuYWxfb2JzZXJ2ZXIgLT4gdCBbQEB1bmJveGVkXVxuICBlbmRcbmVuZCA9XG4gIEludGVybmFsX29ic2VydmVyXG5cbmFuZCBKb2luIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyBsaHMgOiAnYSBOb2RlLnQgTm9kZS50XG4gICAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgICA7IG11dGFibGUgcmhzIDogJ2EgTm9kZS50IFVvcHQudFxuICAgIH1cbmVuZCA9XG4gIEpvaW5cblxuYW5kIEtpbmQgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEFycmF5X2ZvbGQgOiAoXywgJ2EpIEFycmF5X2ZvbGQudCAtPiAnYSB0XG4gICAgfCBBdCA6IEF0LnQgLT4gQmVmb3JlX29yX2FmdGVyLnQgdFxuICAgIHwgQXRfaW50ZXJ2YWxzIDogQXRfaW50ZXJ2YWxzLnQgLT4gdW5pdCB0XG4gICAgfCBCaW5kX2xoc19jaGFuZ2UgOiAoXywgXykgQmluZC50IC0+IHVuaXQgdFxuICAgIHwgQmluZF9tYWluIDogKF8sICdhKSBCaW5kLnQgLT4gJ2EgdFxuICAgIHwgQ29uc3Qgb2YgJ2FcbiAgICB8IEV4cGVydCBvZiAnYSBFeHBlcnQudFxuICAgIHwgRnJlZXplIG9mICdhIEZyZWV6ZS50XG4gICAgfCBJZl90ZXN0X2NoYW5nZSA6IF8gSWZfdGhlbl9lbHNlLnQgLT4gdW5pdCB0XG4gICAgfCBJZl90aGVuX2Vsc2Ugb2YgJ2EgSWZfdGhlbl9lbHNlLnRcbiAgICB8IEludmFsaWRcbiAgICB8IEpvaW5fbGhzX2NoYW5nZSA6IF8gSm9pbi50IC0+IHVuaXQgdFxuICAgIHwgSm9pbl9tYWluIG9mICdhIEpvaW4udFxuICAgIHwgTWFwIDogKCdhMSAtPiAnYSkgKiAnYTEgTm9kZS50IC0+ICdhIHRcbiAgICB8IFNuYXBzaG90IG9mICdhIFNuYXBzaG90LnRcbiAgICB8IFN0ZXBfZnVuY3Rpb24gb2YgJ2EgU3RlcF9mdW5jdGlvbl9ub2RlLnRcbiAgICB8IFVuaW5pdGlhbGl6ZWRcbiAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIDogKF8sICdhKSBVbm9yZGVyZWRfYXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgICB8IFZhciBvZiAnYSBWYXIudFxuICAgIHwgTWFwMiA6ICgnYTEgLT4gJ2EyIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50IC0+ICdhIHRcbiAgICB8IE1hcDMgOiAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgKiAnYTMgTm9kZS50IC0+ICdhIHRcbiAgICB8IE1hcDQgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwNSA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDYgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDcgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwOCA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDkgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDEwIDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhMTAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTEgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMiA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTMgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2ExMlxuICAgICAgICAgLT4gJ2ExM1xuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAqICdhMTIgTm9kZS50XG4gICAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTQgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2ExMlxuICAgICAgICAgLT4gJ2ExM1xuICAgICAgICAgLT4gJ2ExNFxuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAqICdhMTIgTm9kZS50XG4gICAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxNSA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYTEzXG4gICAgICAgICAtPiAnYTE0XG4gICAgICAgICAtPiAnYTE1XG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgICAqICdhMTQgTm9kZS50XG4gICAgICAgICogJ2ExNSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuZW5kID1cbiAgS2luZFxuXG5hbmQgTm9kZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgaWQgOiBOb2RlX2lkLnRcbiAgICA7IHN0YXRlIDogU3RhdGUudFxuICAgIDsgbXV0YWJsZSByZWNvbXB1dGVkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgbXV0YWJsZSB2YWx1ZV9vcHQgOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUga2luZCA6ICdhIEtpbmQudFxuICAgIDsgbXV0YWJsZSBjdXRvZmYgOiAnYSBDdXRvZmYudFxuICAgIDsgbXV0YWJsZSBjaGFuZ2VkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgbXV0YWJsZSBudW1fb25fdXBkYXRlX2hhbmRsZXJzIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9wYXJlbnRzIDogaW50XG4gICAgO1xuICAgICAgbXV0YWJsZSBwYXJlbnQxX2FuZF9iZXlvbmQgOiBOb2RlLlBhY2tlZC50IFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgICA7IG11dGFibGUgcGFyZW50MCA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGNyZWF0ZWRfaW4gOiBTY29wZS50XG4gICAgOyBtdXRhYmxlIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgaGVpZ2h0IDogaW50XG4gICAgOyBtdXRhYmxlIGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA6IGludFxuICAgIDsgbXV0YWJsZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogaW50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG9sZF92YWx1ZV9vcHQgOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgb2JzZXJ2ZXJzIDogJ2EgSW50ZXJuYWxfb2JzZXJ2ZXIudCBVb3B0LnRcbiAgICA7IG11dGFibGUgaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBib29sXG4gICAgOyBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgICA7IG11dGFibGUgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4IDogaW50IGFycmF5XG4gICAgOyBtdXRhYmxlIGZvcmNlX25lY2Vzc2FyeSA6IGJvb2xcbiAgICA7IG11dGFibGUgdXNlcl9pbmZvIDogRG90X3VzZXJfaW5mby50IG9wdGlvblxuICAgIDsgY3JlYXRpb25fYmFja3RyYWNlIDogQmFja3RyYWNlLnQgb3B0aW9uXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIG1vZHVsZSBQYWNrZWQgOiBzaWdcbiAgICB0eXBlICdhIG5vZGUgPSAnYSB0XG4gICAgdHlwZSB0ID0gVCA6IF8gbm9kZSAtPiB0IFtAQGRlcml2aW5nIHNleHBfb2ZdIFtAQHVuYm94ZWRdXG4gIGVuZFxuXG4gIHZhbCBpc192YWxpZCA6IF8gdCAtPiBib29sXG4gIHZhbCBpc19uZWNlc3NhcnkgOiBfIHQgLT4gYm9vbFxuICB2YWwgdHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgOiAnYSB0IC0+ICdiIHQgLT4gKCdhLCAnYikgVHlwZV9lcXVhbC50IG9wdGlvblxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIE5vZGUgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIE5vZGVcbiAgICBlbmRcbiAgICB3aXRoIG1vZHVsZSBQYWNrZWQgOj0gTm9kZS5QYWNrZWQpXG5cbiAgbGV0IHNleHBfb2ZfdCBfIHQgPSBjb25jYXQgWyBcIm5cIjsgTm9kZV9pZC50b19zdHJpbmcgdC5pZCBdIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuXG4gIG1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIG5vZGUgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSB0ID0gVCA6IF8gbm9kZSAtPiB0IFtAQHVuYm94ZWRdXG5cbiAgICBsZXQgc2V4cF9vZl90IChUIHQpID0gdCB8PiBbJXNleHBfb2Y6IF8gbm9kZV1cbiAgZW5kXG5cbiAgbGV0IGlzX3ZhbGlkIHQgPVxuICAgIG1hdGNoIHQua2luZCB3aXRoXG4gICAgfCBJbnZhbGlkIC0+IGZhbHNlXG4gICAgfCBfIC0+IHRydWVcbiAgOztcblxuICAoKiBbaXNfbmVjZXNzYXJ5XSBpcyBkZWZpbmVkIGhlcmUgYmVjYXVzZSB3ZSBuZWVkIGl0IGJlZm9yZSBub2RlLm1sIGlzIGF2YWlsYWJsZS4gIEl0IGlzXG4gICAgIHVzZWQgZHVyaW5nIGdyYXBoIG1hbmlwdWxhdGlvbiwgYW5kIHNvIGlzIHdyaXR0ZW4gd2l0aCBzb21lIGNhcmUgdG8gYmUgZmFzdC4gKilcbiAgbGV0IGlzX25lY2Vzc2FyeSB0ID1cbiAgICB0Lm51bV9wYXJlbnRzID4gMFxuICAgIHx8IFVvcHQuaXNfc29tZSB0Lm9ic2VydmVyc1xuICAgIHx8IChtYXRjaCB0LmtpbmQgd2l0aFxuICAgICAgfCBGcmVlemUgXyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfHwgdC5mb3JjZV9uZWNlc3NhcnlcbiAgOztcblxuICBsZXQgdF9pc19pbmplY3RpdmUgKHR5cGUgYSBiKSAoVCA6IChhIHQsIGIgdCkgVHlwZV9lcXVhbC50KSA6IChhLCBiKSBUeXBlX2VxdWFsLnQgPSBUXG5cbiAgbGV0IHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lICh0eXBlIGEgYikgKHQxIDogYSB0KSAodDIgOiBiIHQpID1cbiAgICAoKiBUaGlzIGlzIHR5cGUtc2FmZSBhc3N1bWluZyBubyBvbmUgY2FuIGdpdmUgdGhlIHNhbWUgaW5jcmVtZW50YWwgbm9kZSB0d28gZGlmZmVyZW50XG4gICAgICAgdHlwZXMuICBUaGlzIGlzIHRydWUgYmVjYXVzZSB0aGUgZmllbGQgW211dGFibGUgb2xkX3ZhbHVlX29wdCA6ICdhIG9wdGlvbl0gcHJldmVudHNcbiAgICAgICBib3RoIHN1YnR5cGluZyBhbmQgcGFyYW1ldGVyaWMgcG9seW1vcnBoaXNtLiAgQnV0IHRoaXMgYWxsb3dzIHRvIGJyZWFrXG4gICAgICAgYWJzdHJhY3Rpb25zLCBhcyBpbiBzb21lb25lIGNvdWxkIHdyaXRlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdFxuICAgICAgICAgdHlwZSB1ICgqID0gdCB1bmRlcm5lYXRoICopXG4gICAgICAgICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0IEluY3IudCAqIHUgSW5jci50ICgqIHRoZSB0d28gaW5jcmVtZW50YWxzIGFyZSBwaHlzX2VxdWFsICopXG4gICAgICAgXX1cblxuICAgICAgIGFuZCB3ZSB3b3VsZCBmaWd1cmUgb3V0IHRoYXQgdHlwZSB0ID0gdS4gIEhvd2V2ZXIsIHdlIGNvdWxkIGFkZCBhIFR5cGVfZXF1YWwuSWQgdG9cbiAgICAgICBub2RlcyBhbmQgZG8gdGhlIHNhbWUsIHNvIGl0IHNlZW1zIHRvIGJlIGEgbW9yZSBnZW5lcmFsIGlzc3VlLiAqKVxuICAgIGlmIHBoeXNfc2FtZSB0MSB0MlxuICAgIHRoZW4gU29tZSAodF9pc19pbmplY3RpdmUgKE9iai5tYWdpYyAoVCA6IF8gVHlwZV9lcXVhbC50KSA6IChhIHQsIGIgdCkgVHlwZV9lcXVhbC50KSlcbiAgICBlbHNlIE5vbmVcbiAgOztcbmVuZFxuXG5hbmQgT2JzZXJ2ZXIgOiBzaWdcbiAgdHlwZSAnYSB0ID0gJ2EgSW50ZXJuYWxfb2JzZXJ2ZXIudCByZWZcbmVuZCA9XG4gIE9ic2VydmVyXG5cbmFuZCBPbmx5X2luX2RlYnVnIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX25vZGUgOiBOb2RlLlBhY2tlZC50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgOiBOb2RlLlBhY2tlZC50IGxpc3RcbiAgICB9XG5lbmQgPVxuICBPbmx5X2luX2RlYnVnXG5cbmFuZCBQYWNrZWRfd2Vha19oYXNodGJsIDogc2lnXG4gIHR5cGUgdCA9IFQgOiAoXywgXykgV2Vha19oYXNodGJsLnQgLT4gdFxuZW5kID1cbiAgUGFja2VkX3dlYWtfaGFzaHRibFxuXG5hbmQgUmVjb21wdXRlX2hlYXAgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICAgIDsgbXV0YWJsZSBub2Rlc19ieV9oZWlnaHQgOiBOb2RlLlBhY2tlZC50IFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgICB9XG5lbmQgPVxuICBSZWNvbXB1dGVfaGVhcFxuXG5hbmQgUnVuX29uX3VwZGF0ZV9oYW5kbGVycyA6IHNpZ1xuICB0eXBlIHQgPSBUIDogJ2EgTm9kZS50ICogJ2EgT25fdXBkYXRlX2hhbmRsZXIuTm9kZV91cGRhdGUudCAtPiB0XG5lbmQgPVxuICBSdW5fb25fdXBkYXRlX2hhbmRsZXJzXG5cbmFuZCBTY29wZSA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHwgVG9wXG4gICAgfCBCaW5kIDogKF8sIF8pIEJpbmQudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFRvcFxuICAgIHwgQmluZCA6IChfLCBfKSBCaW5kLnQgLT4gdFxuXG4gIGxldCBzZXhwX29mX3QgPSBmdW5jdGlvblxuICAgIHwgVG9wIC0+IFwiVG9wXCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgfCBCaW5kIGJpbmQgLT4gYmluZC5tYWluIHw+IFslc2V4cF9vZjogXyBOb2RlLnRdXG4gIDs7XG5lbmRcblxuYW5kIFNuYXBzaG90IDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyBhdCA6IFRpbWVfbnMudFxuICAgIDsgYmVmb3JlIDogJ2FcbiAgICA7IHZhbHVlX2F0IDogJ2EgTm9kZS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBTbmFwc2hvdFxuXG5hbmQgU3RhdGUgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICA7IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgOiBib29sXG4gICAgOyBtdXRhYmxlIHN0YWJpbGl6YXRpb25fbnVtIDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgbXV0YWJsZSBjdXJyZW50X3Njb3BlIDogU2NvcGUudFxuICAgIDsgcmVjb21wdXRlX2hlYXAgOiBSZWNvbXB1dGVfaGVhcC50XG4gICAgOyBhZGp1c3RfaGVpZ2h0c19oZWFwIDogQWRqdXN0X2hlaWdodHNfaGVhcC50XG4gICAgOyBwcm9wYWdhdGVfaW52YWxpZGl0eSA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgbXV0YWJsZSBudW1fYWN0aXZlX29ic2VydmVycyA6IGludFxuICAgIDsgbXV0YWJsZSBhbGxfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gICAgOyBmaW5hbGl6ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICAgIDsgbmV3X29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IGRpc2FsbG93ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDogVmFyLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gICAgOyBydW5fb25fdXBkYXRlX2hhbmRsZXJzIDogUnVuX29uX3VwZGF0ZV9oYW5kbGVycy50IFN0YWNrLnRcbiAgICA7IG11dGFibGUgb25seV9pbl9kZWJ1ZyA6IE9ubHlfaW5fZGVidWcudFxuICAgIDsgd2Vha19oYXNodGJscyA6IFBhY2tlZF93ZWFrX2hhc2h0YmwudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gICAgOyBtdXRhYmxlIGtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UgOiBib29sXG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5IDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2NoYW5nZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2NyZWF0ZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2ludmFsaWRhdGVkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fdmFyX3NldHMgOiBpbnRcbiAgICB9XG5lbmQgPVxuICBTdGF0ZVxuXG5hbmQgU3RhdHVzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgfCBTdGFiaWxpemluZ1xuICAgIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnNcbiAgICB8IE5vdF9zdGFiaWxpemluZ1xuICAgIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIG9mIFJhaXNlZF9leG4udFxuZW5kID1cbiAgU3RhdHVzXG5cbmFuZCBTdGVwX2Z1bmN0aW9uX25vZGUgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IG11dGFibGUgY2hpbGQgOiAnYSBTdGVwX2Z1bmN0aW9uLnQgTm9kZS50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBleHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSB1cGNvbWluZ19zdGVwcyA6IChUaW1lX25zLnQgKiAnYSkgU2VxdWVuY2UudFxuICAgIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgICA7IG11dGFibGUgYWxhcm1fdmFsdWUgOiBBbGFybV92YWx1ZS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBTdGVwX2Z1bmN0aW9uX25vZGVcblxuYW5kIFVub3JkZXJlZF9hcnJheV9mb2xkIDogc2lnXG4gIHR5cGUgKCdhLCAnYWNjKSB0ID1cbiAgICB7IG1haW4gOiAnYWNjIE5vZGUudFxuICAgIDsgaW5pdCA6ICdhY2NcbiAgICA7IGYgOiAnYWNjIC0+ICdhIC0+ICdhY2NcbiAgICA7IHVwZGF0ZSA6ICdhY2MgLT4gb2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiAnYWNjXG4gICAgOyBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIDogaW50XG4gICAgOyBjaGlsZHJlbiA6ICdhIE5vZGUudCBhcnJheVxuICAgIDsgbXV0YWJsZSBmb2xkX3ZhbHVlIDogJ2FjYyBVb3B0LnRcbiAgICA7IG11dGFibGUgbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgOiBpbnRcbiAgICB9XG5lbmQgPVxuICBVbm9yZGVyZWRfYXJyYXlfZm9sZFxuXG5hbmQgVmFyIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIHZhbHVlIDogJ2FcbiAgICA7IG11dGFibGUgdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIHNldF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IHdhdGNoIDogJ2EgTm9kZS50XG4gICAgfVxuXG4gIHR5cGUgJ2EgdmFyIDo9ICdhIHRcblxuICBtb2R1bGUgUGFja2VkIDogc2lnXG4gICAgdHlwZSB0ID0gVCA6IF8gdmFyIC0+IHQgW0BAdW5ib3hlZF1cbiAgZW5kXG5lbmQgPVxuICBWYXJcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuVmFyLnQgPVxuICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICA7ICgqIFt2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25dIGlzIG9ubHkgc2V0IHRvIFtVb3B0LnNvbWVdIGlmIHRoZSB1c2VyIGNhbGxzXG4gICAgICAgW1Zhci5zZXRdIGR1cmluZyBzdGFiaWxpemF0aW9uLCBpbiB3aGljaCBjYXNlIGl0IGhvbGRzIHRoZSAobGFzdCkgdmFsdWUgc2V0LiAgQXRcbiAgICAgICB0aGUgZW5kIG9mIHN0YWJpbGl6YXRpb24sIGFsbCBzdWNoIHZhcmlhYmxlcyBhcmUgcHJvY2Vzc2VkIHRvIGRvIFt0LnZhbHVlIDwtXG4gICAgICAgdC52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25dLiAqKVxuICAgIG11dGFibGUgdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDogJ2EgVW9wdC50XG4gIDsgKCogW3NldF9hdF0gdGhlIHN0YWJpbGl6YXRpb24gbnVtYmVyIGluIGVmZmVjdCB0aGUgbW9zdCByZWNlbnQgdGltZSBbdC52YWx1ZV0gY2hhbmdlZC5cbiAgICAgICBUaGlzIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyB0aGUgc3RhYmlsaXphdGlvbiBudW1iZXIgaW4gZWZmZWN0IHRoZSBtb3N0XG4gICAgICAgcmVjZW50IHRpbWUgW1Zhci5zZXQgdF0gd2FzIGNhbGxlZCwgZHVlIHRvIHRoZSBlZmZlY3Qgb2YgW1Zhci5zZXRdIGR1cmluZ1xuICAgICAgIHN0YWJpbGl6YXRpb24gYmVpbmcgZGVsYXllZCB1bnRpbCBhZnRlciB0aGUgc3RhYmlsaXphdGlvbi4gKilcbiAgICBtdXRhYmxlIHNldF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyB3YXRjaCA6ICdhIE5vZGUudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH52YWx1ZTooY2hlY2sgaW52YXJpYW50X2EpXG4gICAgICB+dmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uOihjaGVjayAoVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfnNldF9hdDooY2hlY2sgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50KVxuICAgICAgfndhdGNoOlxuICAgICAgICAoY2hlY2sgKGZ1biAod2F0Y2ggOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggd2F0Y2gua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKSAoKiBwb3NzaWJsZSB3aXRoIFt+dXNlX2N1cnJlbnRfc2NvcGU6dHJ1ZV0gKilcbiAgICAgICAgICAgfCBWYXIgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKSlcbjs7XG5cbmxldCBpbmNyX3N0YXRlIHQgPSB0LndhdGNoLnN0YXRlXG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB2YXIgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgdCA9IFR5cGVzLlZhci5QYWNrZWQudCA9IFQgOiBfIHZhciAtPiB0IFtAQHVuYm94ZWRdIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IGxhdGVzdF92YWx1ZSB0ID1cbiAgaWYgVW9wdC5pc19zb21lIHQudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXG4gIHRoZW4gVW9wdC51bnNhZmVfdmFsdWUgdC52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25cbiAgZWxzZSB0LnZhbHVlXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxubW9kdWxlIFVwZGF0ZSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgRl9pbnZlcnNlIG9mICgnYiAtPiAnYSAtPiAnYilcbiAgICB8IFVwZGF0ZSBvZiAoJ2IgLT4gb2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiAnYilcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdXBkYXRlIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgVXBkYXRlIHVwZGF0ZSAtPiB1cGRhdGVcbiAgICB8IEZfaW52ZXJzZSBmX2ludmVyc2UgLT5cbiAgICAgIGZ1biBmb2xkX3ZhbHVlIH5vbGRfdmFsdWUgfm5ld192YWx1ZSAtPiBmIChmX2ludmVyc2UgZm9sZF92YWx1ZSBvbGRfdmFsdWUpIG5ld192YWx1ZVxuICA7O1xuZW5kXG5cbnR5cGUgKCdhLCAnYWNjKSB0ID0gKCdhLCAnYWNjKSBUeXBlcy5Vbm9yZGVyZWRfYXJyYXlfZm9sZC50ID1cbiAgeyBtYWluIDogJ2FjYyBOb2RlLnRcbiAgOyBpbml0IDogJ2FjY1xuICA7IGYgOiAnYWNjIC0+ICdhIC0+ICdhY2NcbiAgOyB1cGRhdGUgOiAnYWNjIC0+IG9sZF92YWx1ZTonYSAtPiBuZXdfdmFsdWU6J2EgLT4gJ2FjY1xuICA7IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgOiBpbnRcbiAgOyBjaGlsZHJlbiA6ICdhIE5vZGUudCBhcnJheVxuICA7IG11dGFibGUgZm9sZF92YWx1ZSA6ICdhY2MgVW9wdC50XG4gIDsgbXV0YWJsZSBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA6IGludFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IChfLCBfKSB0KSAodDIgOiAoXywgXykgdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBpbnZhcmlhbnRfYWNjIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+aW5pdDooY2hlY2sgaW52YXJpYW50X2FjYylcbiAgICAgIH5mOmlnbm9yZVxuICAgICAgfnVwZGF0ZTppZ25vcmVcbiAgICAgIH5jaGlsZHJlbjpcbiAgICAgICAgKGNoZWNrIChmdW4gY2hpbGRyZW4gLT5cbiAgICAgICAgICAgQXJyYXkuaXRlciBjaGlsZHJlbiB+ZjooZnVuIChjaGlsZCA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hIGNoaWxkLnZhbHVlX29wdDtcbiAgICAgICAgICAgICBpZiB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwgdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfc29tZSBjaGlsZC52YWx1ZV9vcHQpKSkpXG4gICAgICB+Zm9sZF92YWx1ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gZm9sZF92YWx1ZSAtPlxuICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYWNjIGZvbGRfdmFsdWU7XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAgICAgICAgKFVvcHQuaXNfc29tZSBmb2xkX3ZhbHVlKVxuICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAodC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcykpKVxuICAgICAgfm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDw9IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcykpKVxuICAgICAgfmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXM6XG4gICAgICAgIChjaGVjayAoZnVuIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgLT5cbiAgICAgICAgICAgYXNzZXJ0IChmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzID4gMCkpKSlcbjs7XG5cbmxldCBjcmVhdGUgfmluaXQgfmYgfnVwZGF0ZSB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB+Y2hpbGRyZW4gfm1haW4gPVxuICB7IGluaXRcbiAgOyBmXG4gIDsgdXBkYXRlID0gVXBkYXRlLnVwZGF0ZSB1cGRhdGUgfmZcbiAgOyBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIDsgY2hpbGRyZW5cbiAgOyBtYWluXG4gIDsgZm9sZF92YWx1ZSA9XG4gICAgICBVb3B0Lm5vbmVcbiAgKCogV2UgbWFrZSBbbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPSBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXVxuICAgICBzbyB0aGF0IHRoZXJlIHdpbGwgYmUgYSBmdWxsIGNvbXB1dGF0aW9uIHRoZSBuZXh0IHRpbWUgdGhlIG5vZGUgaXMgY29tcHV0ZWQuICopXG4gIDsgbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPSBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIH1cbjs7XG5cbmxldCBmdWxsX2NvbXB1dGUgeyBpbml0OyBmOyBjaGlsZHJlbjsgXyB9ID1cbiAgbGV0IHJlc3VsdCA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgcmVzdWx0IDo9IGYgIXJlc3VsdCAoVW9wdC52YWx1ZV9leG4gKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkudmFsdWVfb3B0KVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgY29tcHV0ZSB0ID1cbiAgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA9IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICB0aGVuIChcbiAgICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIDA7XG4gICAgdC5mb2xkX3ZhbHVlIDwtIFVvcHQuc29tZSAoZnVsbF9jb21wdXRlIHQpKTtcbiAgVW9wdC52YWx1ZV9leG4gdC5mb2xkX3ZhbHVlXG47O1xuXG5sZXQgZm9yY2VfZnVsbF9jb21wdXRlIHQgPVxuICB0LmZvbGRfdmFsdWUgPC0gVW9wdC5ub25lO1xuICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuOztcblxubGV0IGNoaWxkX2NoYW5nZWRcbiAgICAgICh0eXBlIGEgYilcbiAgICAgICh0IDogKGEsIF8pIHQpXG4gICAgICB+KGNoaWxkIDogYiBOb2RlLnQpXG4gICAgICB+Y2hpbGRfaW5kZXhcbiAgICAgIH4ob2xkX3ZhbHVlX29wdCA6IGIgVW9wdC50KVxuICAgICAgfihuZXdfdmFsdWUgOiBiKVxuICA9XG4gIGxldCBjaGlsZF9hdF9pbmRleCA9IHQuY2hpbGRyZW4uKGNoaWxkX2luZGV4KSBpblxuICBtYXRjaCBOb2RlLnR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIGNoaWxkIGNoaWxkX2F0X2luZGV4IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1Vub3JkZXJlZF9hcnJheV9mb2xkLmNoaWxkX2NoYW5nZWRdIG1pc21hdGNoXCJcbiAgICAgICAgICB+dW5vcmRlcmVkX2FycmF5X2ZvbGQ6KHQgOiAoXywgXykgdClcbiAgICAgICAgICAoY2hpbGRfaW5kZXggOiBpbnQpXG4gICAgICAgICAgKGNoaWxkIDogXyBOb2RlLnQpXVxuICB8IFNvbWUgVCAtPlxuICAgIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgLSAxXG4gICAgdGhlbiAoXG4gICAgICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgKyAxO1xuICAgICAgKCogV2Ugb25seSByZWFjaCB0aGlzIGNhc2UgaWYgd2UgaGF2ZSBhbHJlYWR5IGRvbmUgYSBmdWxsIGNvbXB1dGUsIGluIHdoaWNoIGNhc2VcbiAgICAgICAgIFtVb3B0LmlzX3NvbWUgdC5mb2xkX3ZhbHVlXSBhbmQgW1VvcHQuaXNfc29tZSBvbGRfdmFsdWVfb3B0XS4gKilcbiAgICAgIHQuZm9sZF92YWx1ZVxuICAgICAgPC0gVW9wdC5zb21lXG4gICAgICAgICAgICh0LnVwZGF0ZVxuICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gdC5mb2xkX3ZhbHVlKVxuICAgICAgICAgICAgICB+b2xkX3ZhbHVlOihVb3B0LnZhbHVlX2V4biBvbGRfdmFsdWVfb3B0KVxuICAgICAgICAgICAgICB+bmV3X3ZhbHVlKSlcbiAgICBlbHNlIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICB0aGVuIGZvcmNlX2Z1bGxfY29tcHV0ZSB0XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQWxhcm0gPSBUaW1pbmdfd2hlZWwuQWxhcm1cblxudHlwZSB0ID0gKFR5cGVzLkFsYXJtX3ZhbHVlLnRbQHNleHAub3BhcXVlXSkgQWxhcm0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IG51bGwgPSBBbGFybS5udWxsICgpXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgQWxhcm1fdmFsdWUgPSBUeXBlcy5BbGFybV92YWx1ZVxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlN0ZXBfZnVuY3Rpb25fbm9kZS50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgbXV0YWJsZSBjaGlsZCA6ICdhIFN0ZXBfZnVuY3Rpb24udCBOb2RlLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBleHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IG11dGFibGUgdmFsdWUgOiAnYSBVb3B0LnRcbiAgOyBtdXRhYmxlIHVwY29taW5nX3N0ZXBzIDogKFRpbWVfbnMudCAqICdhKSBTZXF1ZW5jZS50XG4gIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgOyBtdXRhYmxlIGFsYXJtX3ZhbHVlIDogKEFsYXJtX3ZhbHVlLnRbQHNleHAub3BhcXVlXSlcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHBoeXNfc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IENvbnN0IF8gLT4gKCkgKCogaGFwcGVucyB3aGVuIFt1cGNvbWluZ19zdGVwc10gYmVjb21lcyBlbXB0eS4gKilcbiAgICAgICAgICAgfCBTdGVwX2Z1bmN0aW9uIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jaGlsZDppZ25vcmVcbiAgICAgIH5leHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0Omlnbm9yZVxuICAgICAgfnZhbHVlOihjaGVjayAoVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfnVwY29taW5nX3N0ZXBzOmlnbm9yZVxuICAgICAgfmFsYXJtOihjaGVjayBBbGFybS5pbnZhcmlhbnQpXG4gICAgICB+YWxhcm1fdmFsdWU6XG4gICAgICAgIChjaGVjayAoZnVuIChhbGFybV92YWx1ZSA6IEFsYXJtX3ZhbHVlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIGFsYXJtX3ZhbHVlLmFjdGlvbiB3aXRoXG4gICAgICAgICAgIHwgU3RlcF9mdW5jdGlvbiB0MiAtPiBhc3NlcnQgKHBoeXNfc2FtZSB0IHQyKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuXG5sZXQgcmVjIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIGExIHN0ZXBzID1cbiAgbWF0Y2ggU2VxdWVuY2UubmV4dCBzdGVwcyB3aXRoXG4gIHwgU29tZSAoKHN0ZXBfYXQsIGEyKSwgc3RlcHMyKSB3aGVuIFRpbWVfbnMuKCA+PSApIHRvXyBzdGVwX2F0IC0+XG4gICAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gYTIgc3RlcHMyXG4gIHwgXyAtPlxuICAgIHQudmFsdWUgPC0gVW9wdC5zb21lIGExO1xuICAgIHQudXBjb21pbmdfc3RlcHMgPC0gc3RlcHNcbjs7XG5cbmxldCBhZHZhbmNlIHQgfnRvXyA9IGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIChVb3B0LnZhbHVlX2V4biB0LnZhbHVlKSB0LnVwY29taW5nX3N0ZXBzXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgKCdhLCAnYWNjKSB0ID0gKCdhLCAnYWNjKSBUeXBlcy5BcnJheV9mb2xkLnQgPVxuICB7IGluaXQgOiAnYWNjXG4gIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBpbnZhcmlhbnRfYWNjIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5pbml0OihjaGVjayBpbnZhcmlhbnRfYWNjKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+Y2hpbGRyZW46XG4gICAgICAgIChjaGVjayAoZnVuIGNoaWxkcmVuIC0+XG4gICAgICAgICAgIEFycmF5Lml0ZXIgY2hpbGRyZW4gfmY6KGZ1biAoY2hpbGQgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSBjaGlsZC52YWx1ZV9vcHQpKSkpXG47O1xuXG5sZXQgY29tcHV0ZSB7IGluaXQ7IGY7IGNoaWxkcmVuIH0gPVxuICBsZXQgcmVzdWx0ID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICByZXN1bHQgOj0gZiAhcmVzdWx0IChVb3B0LnZhbHVlX2V4biAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKS52YWx1ZV9vcHQpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSB0ID0gVHlwZXMuQXQudCA9XG4gIHsgbWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudFxuICA7IGF0IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQ29uc3QgQWZ0ZXIgLT4gKCkgKCogaGFwcGVucyBvbmNlIHRoZSBjdXJyZW50IHRpbWUgcGFzc2VzIFt0LmF0XS4gKilcbiAgICAgICAgICAgfCBBdCB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+YXQ6aWdub3JlXG4gICAgICB+YWxhcm06KGNoZWNrIEFsYXJtLmludmFyaWFudClcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgdCA9IFR5cGVzLkF0X2ludGVydmFscy50ID1cbiAgeyBtYWluIDogdW5pdCBOb2RlLnRcbiAgOyBiYXNlIDogVGltZV9ucy50XG4gIDsgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udFxuICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gIDsgY2xvY2sgOiAoVHlwZXMuQ2xvY2sudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQXRfaW50ZXJ2YWxzIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5iYXNlOmlnbm9yZVxuICAgICAgfmludGVydmFsOihjaGVjayAoZnVuIGludGVydmFsIC0+IGFzc2VydCAoVGltZV9ucy5TcGFuLmlzX3Bvc2l0aXZlIGludGVydmFsKSkpXG4gICAgICB+YWxhcm06KGNoZWNrIEFsYXJtLmludmFyaWFudClcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIEJpbmQgPSBUeXBlcy5CaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcbm1vZHVsZSBTY29wZSA9IFR5cGVzLlNjb3BlXG5cbnR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIEJpbmQudCA9XG4gIHsgbWFpbiA6ICdiIE5vZGUudFxuICA7ICgqIFtmXSBpcyB0aGUgdXNlci1zdXBwbGllZCBmdW5jdGlvbiB0aGF0IHdlIHJ1biBlYWNoIHRpbWUgW3QubGhzXSBjaGFuZ2VzLiAgSXQgaXNcbiAgICAgICBtdXRhYmxlIG9ubHkgc28gd2UgY2FuIGNsZWFyIGl0IHdoZW4gW3RdIGlzIGludmFsaWRhdGVkLiAqKVxuICAgIG11dGFibGUgZiA6ICdhIC0+ICdiIE5vZGUudFxuICA7IGxocyA6ICdhIE5vZGUudFxuICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICA7ICgqIFtyaHNdIGlzIGluaXRpYWxseSBbbm9uZV0sIGFuZCBhZnRlciB0aGF0IGlzIFtzb21lXSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBtb3N0IHJlY2VudFxuICAgICAgIGNhbGwgdG8gW2ZdLiAqKVxuICAgIG11dGFibGUgcmhzIDogJ2IgTm9kZS50IFVvcHQudFxuICA7ICgqIFtyaHNfc2NvcGVdIGlzIHRoZSBzY29wZSBpbiB3aGljaCBbdC5mXSBpcyBydW4sIGkuZS4gaXQgaXMgW1Njb3BlLkJpbmQgdF0uICBJdCBpc1xuICAgICAgIFttdXRhYmxlXSBvbmx5IHRvIGF2b2lkIGEgW2xldCByZWNdIGR1cmluZyBjcmVhdGlvbi4gKilcbiAgICBtdXRhYmxlIHJoc19zY29wZSA6IFNjb3BlLnRcbiAgOyAoKiBbYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXSBpcyB0aGUgaGVhZCBvZiB0aGUgc2luZ2x5LWxpbmtlZCBsaXN0IG9mIG5vZGVzIGNyZWF0ZWQgb25cbiAgICAgICB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIFt0XSwgaS5lLiBpbiBbdC5yaHNfc2NvcGVdLiAqKVxuICAgIG11dGFibGUgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiAoXywgXykgdCkgKHQyIDogKF8sIF8pIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpc192YWxpZCB0ID1cbiAgbWF0Y2ggdC5tYWluLmtpbmQgd2l0aFxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgfCBfIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIHQgfihmIDogTm9kZS5QYWNrZWQudCAtPiB1bml0KSA9XG4gIGxldCByID0gcmVmIHQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCAoVCBub2RlX29uX3JocykgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgIHIgOj0gbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGU7XG4gICAgZiAoVCBub2RlX29uX3JocylcbiAgZG9uZVxuOztcblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgX2ludmFyaWFudF9iIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBCaW5kX21haW4gdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+bGhzOmlnbm9yZVxuICAgICAgfmxoc19jaGFuZ2U6XG4gICAgICAgIChjaGVjayAoZnVuIChsaHNfY2hhbmdlIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBsaHNfY2hhbmdlLmNyZWF0ZWRfaW4gdC5tYWluLmNyZWF0ZWRfaW4pO1xuICAgICAgICAgICBtYXRjaCBsaHNfY2hhbmdlLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBCaW5kX2xoc19jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfnJoczppZ25vcmVcbiAgICAgIH5yaHNfc2NvcGU6XG4gICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgfCBTY29wZS5Ub3AgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgIHwgQmluZCB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JykpKVxuICAgICAgfmFsbF9ub2Rlc19jcmVhdGVkX29uX3JoczpcbiAgICAgICAgKGNoZWNrIChmdW4gXyAtPlxuICAgICAgICAgICBpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBub2RlLmNyZWF0ZWRfaW4gdC5yaHNfc2NvcGUpO1xuICAgICAgICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUgdGhlbiBhc3NlcnQgKHQubGhzX2NoYW5nZS5oZWlnaHQgPCBub2RlLmhlaWdodCkpKSkpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSBlZGdlID0gJ2EgVHlwZXMuRXhwZXJ0LmVkZ2UgPVxuICB7IGNoaWxkIDogJ2EgTm9kZS50XG4gIDsgb25fY2hhbmdlIDogJ2EgLT4gdW5pdFxuICA7ICgqIFtpbmRleF0gaXMgZGVmaW5lZCB3aGVuZXZlciB0aGUgW2VkZ2VdIGlzIGluIHRoZSBbY2hpbGRyZW5dIG9mIHNvbWUgW3RdLiBUaGVuIGl0IGlzXG4gICAgICAgdGhlIGluZGV4IG9mIHRoaXMgW2VkZ2VdIGluIHRoYXQgW2NoaWxkcmVuXSBhcnJheS4gSXQgbWlnaHQgc2VlbSByZWR1bmRhbnQgd2l0aCBhbGxcbiAgICAgICB0aGUgb3RoZXIgaW5kZXhlcyB3ZSBoYXZlLCBidXQgaXQgaXMgbmVjZXNzYXJ5IHRvIHJlbW92ZSBjaGlsZHJlbi4gIFRoZSBpbmRleCBtYXlcbiAgICAgICBjaGFuZ2UgYXMgc2libGluZyBjaGlsZHJlbiBhcmUgcmVtb3ZlZC4gKilcbiAgICBtdXRhYmxlIGluZGV4IDogaW50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHBhY2tlZF9lZGdlID0gVHlwZXMuRXhwZXJ0LnBhY2tlZF9lZGdlID0gRSA6ICdhIGVkZ2UgLT4gcGFja2VkX2VkZ2VcbltAQHVuYm94ZWRdIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkV4cGVydC50ID1cbiAgeyBmIDogdW5pdCAtPiAnYVxuICA7IG9uX29ic2VydmFiaWxpdHlfY2hhbmdlIDogaXNfbm93X29ic2VydmFibGU6Ym9vbCAtPiB1bml0XG4gIDsgbXV0YWJsZSBjaGlsZHJlbiA6IHBhY2tlZF9lZGdlIFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgOyBtdXRhYmxlIG51bV9jaGlsZHJlbiA6IGludFxuICA7ICgqIFdoZW4gc2V0LCBtYWtlcyB0aGUgbm9kZSBvZiBbdF0gc3RhbGUuICBJdCBpcyBzZXQgd2hlbiB0aGUgc2V0IG9mIGNoaWxkcmVuIGNoYW5nZXMuXG4gICAgICAgT3RoZXJ3aXNlIHRoZSBub3JtYWwgY2hlY2sgb2Ygc3RhbGVuZXNzIChjb21wYXJpbmcgdGhlIFtjaGFuZ2VkX2F0XSBmaWVsZCBvZlxuICAgICAgIGNoaWxkcmVuIGFuZCB0aGUgW3JlY29tcHV0ZWRfYXRdIGZpZWxkIGZvciB0aGUgbm9kZSBvZiBbdF0pIHdvdWxkIG5vdCBiZSBlbm91Z2guXG4gICAgICAgVGhpcyBwbGF5cyBhIHJvbGUgc2ltaWxhciB0byB0aGUgY3V0b2ZmIG9mIFtOZXZlcl0gZm9yIHRoZSBsaHMtY2hhbmdlIG9mIGJpbmRzLCBidXRcbiAgICAgICB3ZSBkb24ndCBoYXZlIGEgc3BlY2lhbCBjaGlsZC4gKilcbiAgICBtdXRhYmxlIGZvcmNlX3N0YWxlIDogYm9vbFxuICA7ICgqIFRoZSBudW1iZXIgb2YgaW52YWxpZCBjaGlsZHJlbiB0aGF0IHBvaW50IHRvIHVzLiAgVXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgbm9kZVxuICAgICAgIG9mIFt0XSBuZWVkcyB0byBpbnZhbGlkYXRlZCwgd2l0aG91dCBpdGVyYXRpbmcgb3ZlciBhbGwgdGhlIGNoaWxkcmVuLiAgVGhpcyBpcyBub3RcbiAgICAgICBuZWVkZWQgZm9yIG90aGVyIG5vZGVzLCBiZWNhdXNlIHRoZXJlIGFyZSBubyBvdGhlciBub2RlcyB0aGF0IGhhdmUgYSBwb3RlbnRpYWxseVxuICAgICAgIGxhcmdlIGFuZCBkeW5hbWljIHNldCBvZiBjaGlsZHJlbi4gKilcbiAgICBtdXRhYmxlIG51bV9pbnZhbGlkX2NoaWxkcmVuIDogaW50XG4gIDsgKCogV2hldGhlciB3ZSB3aWxsIGZpcmUgdGhlIFtvbl9jaGFuZ2VdIGNhbGxiYWNrcyBmb3IgYWxsIGNoaWxkcmVuIHdoZW4gdGhlIG5vZGUgb2YgW3RdXG4gICAgICAgaXRzZWxmIHJ1bnMuICBVc2VkIHRvIG1ha2Ugc3VyZSB3ZSByZXJ1biBldmVyeXRoaW5nIGFmdGVyIFt0XSBzd2l0Y2hlcyBmcm9tXG4gICAgICAgdW5vYnNlcnZhYmxlIGFuZCBiYWNrIHRvIG9ic2VydmFibGUuICopXG4gICAgbXV0YWJsZSB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA6IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudFxuICAgICAgX2ludmFyaWFudF9hXG4gICAgICB7IGYgPSBfXG4gICAgICA7IGNoaWxkcmVuXG4gICAgICA7IG51bV9jaGlsZHJlblxuICAgICAgOyBmb3JjZV9zdGFsZSA9IF9cbiAgICAgIDsgbnVtX2ludmFsaWRfY2hpbGRyZW5cbiAgICAgIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgPSBfXG4gICAgICA7IHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzID0gX1xuICAgICAgfVxuICA9XG4gIGFzc2VydCAobnVtX2NoaWxkcmVuIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIGNoaWxkcmVuKTtcbiAgaWdub3JlIG51bV9pbnZhbGlkX2NoaWxkcmVuO1xuICAoKiBpbnZhcmlhbnQgaXMgYmVsb3csIGJlY2F1c2Ugd2UgbmVlZCBzb21lIGNvbnRleHQgKilcbiAgVW5pZm9ybV9hcnJheS5pdGVyaSBjaGlsZHJlbiB+ZjooZnVuIGkgdW9wdCAtPlxuICAgIG1hdGNoIGkgPCBudW1fY2hpbGRyZW4gd2l0aFxuICAgIHwgdHJ1ZSAtPlxuICAgICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gdW9wdCBpblxuICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAoVW9wdC52YWx1ZV9leG4gci5pbmRleCkgfmV4cGVjdDppXG4gICAgfCBmYWxzZSAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSB1b3B0KSlcbjs7XG5cbmxldCBpbnZhcmlhbnRfYWJvdXRfbnVtX2ludmFsaWRfY2hpbGRyZW4gdCB+aXNfbmVjZXNzYXJ5ID1cbiAgbGV0IHsgY2hpbGRyZW47IG51bV9jaGlsZHJlbjsgbnVtX2ludmFsaWRfY2hpbGRyZW47IF8gfSA9IHQgaW5cbiAgaWYgbm90IGlzX25lY2Vzc2FyeVxuICB0aGVuIFsldGVzdF9yZXN1bHQ6IGludF0gbnVtX2ludmFsaWRfY2hpbGRyZW4gfmV4cGVjdDowXG4gIGVsc2UgKFxuICAgIGxldCBjb3VudF9pbnZhbGlkX2NoaWxkcmVuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbnVtX2NoaWxkcmVuIC0gMSBkb1xuICAgICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkcmVuIGkpIGluXG4gICAgICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgci5jaGlsZCkgdGhlbiBpbmNyIGNvdW50X2ludmFsaWRfY2hpbGRyZW5cbiAgICBkb25lO1xuICAgIFsldGVzdF9yZXN1bHQ6IGludF0gbnVtX2ludmFsaWRfY2hpbGRyZW4gfmV4cGVjdDohY291bnRfaW52YWxpZF9jaGlsZHJlbilcbjs7XG5cbmxldCBjcmVhdGUgfmYgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlID1cbiAgeyBmXG4gIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2VcbiAgOyBjaGlsZHJlbiA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbiAgOyBudW1fY2hpbGRyZW4gPSAwXG4gIDsgZm9yY2Vfc3RhbGUgPSBmYWxzZVxuICA7IG51bV9pbnZhbGlkX2NoaWxkcmVuID0gMFxuICA7IHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzID0gdHJ1ZVxuICB9XG47O1xuXG5sZXQgbWFrZV9zdGFsZSB0ID1cbiAgaWYgdC5mb3JjZV9zdGFsZVxuICB0aGVuIGBBbHJlYWR5X3N0YWxlXG4gIGVsc2UgKFxuICAgIHQuZm9yY2Vfc3RhbGUgPC0gdHJ1ZTtcbiAgICBgT2spXG47O1xuXG5sZXQgaW5jcl9pbnZhbGlkX2NoaWxkcmVuIHQgPSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIDwtIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gKyAxXG5sZXQgZGVjcl9pbnZhbGlkX2NoaWxkcmVuIHQgPSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIDwtIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gLSAxXG5cbmxldCBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgdCA9XG4gIGlmIHQubnVtX2NoaWxkcmVuID49IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQuY2hpbGRyZW5cbiAgdGhlbiAoXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKHQubnVtX2NoaWxkcmVuID0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5jaGlsZHJlbik7XG4gICAgbGV0IG5ld19tYXggPSBJbnQubWF4IDIgKDIgKiBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LmNoaWxkcmVuKSBpblxuICAgIHQuY2hpbGRyZW4gPC0gVW5pZm9ybV9hcnJheS5yZWFsbG9jIHQuY2hpbGRyZW4gfmxlbjpuZXdfbWF4KVxuOztcblxubGV0IGFkZF9jaGlsZF9lZGdlIHQgcGFja2VkX2VkZ2UgPVxuICBsZXQgKEUgZWRnZSkgPSBwYWNrZWRfZWRnZSBpblxuICBhc3NlcnQgKFVvcHQuaXNfbm9uZSBlZGdlLmluZGV4KTtcbiAgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHQ7XG4gIGxldCBuZXdfY2hpbGRfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiBpblxuICBlZGdlLmluZGV4IDwtIFVvcHQuc29tZSBuZXdfY2hpbGRfaW5kZXg7XG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQuY2hpbGRyZW4gbmV3X2NoaWxkX2luZGV4IChVb3B0LnNvbWUgcGFja2VkX2VkZ2UpO1xuICB0Lm51bV9jaGlsZHJlbiA8LSB0Lm51bV9jaGlsZHJlbiArIDE7XG4gIHQuZm9yY2Vfc3RhbGUgPC0gdHJ1ZTtcbiAgKCogV2Ugd2lsbCBidW1wIHRoZSBudW1iZXIgb2YgaW52YWxpZCBjaGlsZHJlbiBpZiBuZWNlc3Nhcnkgd2hlbiBjb25uZWN0aW5nIGNoaWxkIGFuZFxuICAgICBwYXJlbnQuICBTYW1lIHRoaW5nIGZvciBydW5uaW5nIHRoZSBbb25fY2hhbmdlXSBjYWxsYmFja3MuICopXG4gIG5ld19jaGlsZF9pbmRleFxuOztcblxubGV0IHN3YXBfY2hpbGRyZW4gdCB+Y2hpbGRfaW5kZXgxIH5jaGlsZF9pbmRleDIgPVxuICBsZXQgKEUgZWRnZTEpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgxKSBpblxuICBsZXQgKEUgZWRnZTIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgyKSBpblxuICBlZGdlMS5pbmRleCA8LSBVb3B0LnNvbWUgY2hpbGRfaW5kZXgyO1xuICBlZGdlMi5pbmRleCA8LSBVb3B0LnNvbWUgY2hpbGRfaW5kZXgxO1xuICBVbmlmb3JtX2FycmF5LnN3YXAgdC5jaGlsZHJlbiBjaGlsZF9pbmRleDEgY2hpbGRfaW5kZXgyXG47O1xuXG5sZXQgbGFzdF9jaGlsZF9lZGdlX2V4biB0ID1cbiAgbGV0IGxhc3RfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiAtIDEgaW5cbiAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gbGFzdF9pbmRleClcbjs7XG5cbmxldCByZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biB0ID1cbiAgbGV0IGxhc3RfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiAtIDEgaW5cbiAgbGV0IHBhY2tlZF9lZGdlX29wdCA9IFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gbGFzdF9pbmRleCBpblxuICBVbmlmb3JtX2FycmF5LnNldCB0LmNoaWxkcmVuIGxhc3RfaW5kZXggVW9wdC5ub25lO1xuICB0Lm51bV9jaGlsZHJlbiA8LSBsYXN0X2luZGV4O1xuICB0LmZvcmNlX3N0YWxlIDwtIHRydWU7XG4gIGFzc2VydCAoVW9wdC5pc19zb21lIHBhY2tlZF9lZGdlX29wdCk7XG4gIGxldCAoRSBlZGdlKSA9IFVvcHQudW5zYWZlX3ZhbHVlIHBhY2tlZF9lZGdlX29wdCBpblxuICBlZGdlLmluZGV4IDwtIFVvcHQubm9uZVxuOztcblxubGV0IGJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIHQgPVxuICBpZiB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuID4gMFxuICB0aGVuIGBJbnZhbGlkXG4gIGVsc2UgKFxuICAgIHQuZm9yY2Vfc3RhbGUgPC0gZmFsc2U7XG4gICAgbGV0IHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzID0gdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyBpblxuICAgIHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPC0gZmFsc2U7XG4gICAgaWYgd2lsbF9maXJlX2FsbF9jYWxsYmFja3NcbiAgICB0aGVuXG4gICAgICBmb3IgaSA9IDAgdG8gdC5udW1fY2hpbGRyZW4gLSAxIGRvXG4gICAgICAgIGxldCAoRSByKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGkpIGluXG4gICAgICAgIHIub25fY2hhbmdlIChVb3B0LnZhbHVlX2V4biByLmNoaWxkLnZhbHVlX29wdClcbiAgICAgIGRvbmU7XG4gICAgYE9rKVxuOztcblxubGV0IG9ic2VydmFiaWxpdHlfY2hhbmdlIHQgfmlzX25vd19vYnNlcnZhYmxlID1cbiAgdC5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSB+aXNfbm93X29ic2VydmFibGU7XG4gIGlmIG5vdCBpc19ub3dfb2JzZXJ2YWJsZVxuICB0aGVuIChcbiAgICB0LndpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDwtIHRydWU7XG4gICAgKCogSWYgd2UgZG9uJ3QgcmVzZXQgbnVtX2ludmFsaWRfY2hpbGRyZW4sIHdlIHdvdWxkIGRvdWJsZSBjb3VudCB0aGVtOiBqdXN0IGltYWdpbmVcbiAgICAgICB3aGF0IGhhcHBlbnMgd2UgaWYgcmVjb25uZWN0L2Rpc2Nvbm5lY3QvcmVjb25uZWN0L2Rpc2Nvbm5lY3Qgd2l0aCBhbiBpbnZhbGlkXG4gICAgICAgY2hpbGQuICopXG4gICAgdC5udW1faW52YWxpZF9jaGlsZHJlbiA8LSAwKVxuOztcblxubGV0IHJ1bl9lZGdlX2NhbGxiYWNrIHQgfmNoaWxkX2luZGV4ID1cbiAgaWYgbm90IHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3NcbiAgdGhlbiAoXG4gICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgpIGluXG4gICAgKCogVGhpcyB2YWx1ZSBpcyBub3QgbmVjZXNzYXJpbHkgc2V0LCBiZWNhdXNlIHdlIHRyeSB0byBydW4gdGhpcyB3aGVuIGNvbm5lY3RpbmcgdGhlXG4gICAgICAgbm9kZSB0byBpdHMgY2hpbGRyZW4sIHdoaWNoIGNvdWxkIGJlIGJlZm9yZSB0aGV5IGhhdmUgcnVuIGV2ZW4gb25jZS4gIEFsc28gdGhlIG5vZGVcbiAgICAgICBjb3VsZCBiZSBpbnZhbGlkLiAqKVxuICAgIGlmIFVvcHQuaXNfc29tZSByLmNoaWxkLnZhbHVlX29wdFxuICAgIHRoZW4gci5vbl9jaGFuZ2UgKFVvcHQudW5zYWZlX3ZhbHVlIHIuY2hpbGQudmFsdWVfb3B0KSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5pbmNsdWRlIFR5cGVzLlNjb3BlXG5cbmxldCB0b3AgPSBUb3BcblxubGV0IGlzX3RvcCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IHRydWVcbiAgfCBCaW5kIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpbnZhcmlhbnQgPSBmdW5jdGlvblxuICB8IFRvcCAtPiAoKVxuICB8IEJpbmQgYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaWdub3JlIGJpbmRcbjs7XG5cbigqIFVubGlrZSBmb3Igbm9kZXMsIHRoZXJlIGlzIG5vIGludmFyaWFudCBbaXNfbmVjZXNzYXJ5IHQgPD0+IGhlaWdodCA+IC0xXSAoZG9lc24ndCB3b3JrXG4gICBiZWNhdXNlIG9mIFtUb3BdKS4gIFRoaXMgaXMgZmluZSBzaW5jZSB0aGUgaGVpZ2h0IG9mIGEgc2NvcGUgaXMgb25seSB1c2VkIHRvIGNvbnN0cmFpblxuICAgb3RoZXIgaGVpZ2h0cywgbm90IHRvIHNjaGVkdWxlIGl0LiAqKVxubGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IC0xXG4gIHwgQmluZCBiaW5kIC0+IGJpbmQubGhzX2NoYW5nZS5oZWlnaHRcbjs7XG5cbmxldCBpc192YWxpZCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IHRydWVcbiAgfCBCaW5kIGJpbmQgLT4gQmluZC5pc192YWxpZCBiaW5kXG47O1xuXG5sZXQgaXNfbmVjZXNzYXJ5ID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gdHJ1ZVxuICB8IEJpbmQgYmluZCAtPiBOb2RlLmlzX25lY2Vzc2FyeSBiaW5kLm1haW5cbjs7XG5cbmxldCBhZGRfbm9kZSB0IChub2RlIDogXyBOb2RlLnQpID1cbiAgYXNzZXJ0IChwaHlzX2VxdWFsIG5vZGUuY3JlYXRlZF9pbiB0KTtcbiAgbWF0Y2ggdCB3aXRoXG4gIHwgVG9wIC0+ICgpXG4gIHwgQmluZCBiaW5kIC0+XG4gICAgbm9kZS5uZXh0X25vZGVfaW5fc2FtZV9zY29wZSA8LSBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocztcbiAgICBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA8LSBVb3B0LnNvbWUgKFR5cGVzLk5vZGUuUGFja2VkLlQgbm9kZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuRnJlZXplLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBjaGlsZCA6ICdhIE5vZGUudFxuICA7IG9ubHlfZnJlZXplX3doZW4gOiAnYSAtPiBib29sXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBhc3NlcnQgKFNjb3BlLmlzX3RvcCBtYWluLmNyZWF0ZWRfaW4pO1xuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKCkgKCogaGFwcGVucyB3aGVuIGZyZWV6aW5nIGFuIGludmFsaWQgdmFsdWUgKilcbiAgICAgICAgICAgfCBDb25zdCBfIC0+ICgpICgqIGhhcHBlbnMgb24gYmVjb21pbmcgZnJvemVuICopXG4gICAgICAgICAgIHwgRnJlZXplIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jaGlsZDppZ25vcmVcbiAgICAgIH5vbmx5X2ZyZWV6ZV93aGVuOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSWZfdGhlbl9lbHNlLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyB0ZXN0IDogYm9vbCBOb2RlLnRcbiAgOyB0ZXN0X2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gIDsgbXV0YWJsZSBjdXJyZW50X2JyYW5jaCA6ICdhIE5vZGUudCBVb3B0LnRcbiAgOyB0aGVuXyA6ICdhIE5vZGUudFxuICA7IGVsc2VfIDogJ2EgTm9kZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSWZfdGhlbl9lbHNlIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gKCkpKVxuICAgICAgfnRlc3Q6aWdub3JlXG4gICAgICB+dGVzdF9jaGFuZ2U6XG4gICAgICAgIChjaGVjayAoZnVuICh0ZXN0X2NoYW5nZSA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCB0ZXN0X2NoYW5nZS5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSWZfdGVzdF9jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmN1cnJlbnRfYnJhbmNoOlxuICAgICAgICAoY2hlY2sgKGZ1biBjdXJyZW50X2JyYW5jaCAtPlxuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgY3VycmVudF9icmFuY2hcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IGN1cnJlbnRfYnJhbmNoID0gVW9wdC52YWx1ZV9leG4gY3VycmVudF9icmFuY2ggaW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGh5c19lcXVhbCBjdXJyZW50X2JyYW5jaCB0LnRoZW5fIHx8IHBoeXNfZXF1YWwgY3VycmVudF9icmFuY2ggdC5lbHNlXykpKSlcbiAgICAgIH50aGVuXzppZ25vcmVcbiAgICAgIH5lbHNlXzppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkpvaW4udCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IGxocyA6ICdhIE5vZGUudCBOb2RlLnRcbiAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgOyBtdXRhYmxlIHJocyA6ICdhIE5vZGUudCBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBKb2luX21haW4gdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmxoczppZ25vcmVcbiAgICAgIH5saHNfY2hhbmdlOlxuICAgICAgICAoY2hlY2sgKGZ1biAobGhzX2NoYW5nZSA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBsaHNfY2hhbmdlLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBKb2luX2xoc19jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfnJoczppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlNuYXBzaG90LnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBhdCA6IFRpbWVfbnMudFxuICA7IGJlZm9yZSA6ICdhXG4gIDsgdmFsdWVfYXQgOiAnYSBOb2RlLnRcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIGFzc2VydCAoU2NvcGUuaXNfdG9wIG1haW4uY3JlYXRlZF9pbik7XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKSAoKiBoYXBwZW5zIHdoZW4gc25hcHNob3R0aW5nIGFuIGludmFsaWQgbm9kZSAqKVxuICAgICAgICAgICB8IENvbnN0IF8gLT4gKCkgKCogaGFwcGVucyBhZnRlciB0aGUgc25hcHNob3QgKilcbiAgICAgICAgICAgfCBTbmFwc2hvdCB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+YXQ6aWdub3JlXG4gICAgICB+YmVmb3JlOihjaGVjayBpbnZhcmlhbnRfYSlcbiAgICAgIH52YWx1ZV9hdDppZ25vcmVcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLktpbmQudCA9XG4gIHwgQXJyYXlfZm9sZCA6IChfLCAnYSkgQXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgfCBBdCA6IEF0LnQgLT4gQmVmb3JlX29yX2FmdGVyLnQgdFxuICB8IEF0X2ludGVydmFscyA6IEF0X2ludGVydmFscy50IC0+IHVuaXQgdFxuICB8IEJpbmRfbGhzX2NoYW5nZSA6IChfLCBfKSBCaW5kLnQgLT4gdW5pdCB0XG4gIHwgQmluZF9tYWluIDogKF8sICdhKSBCaW5kLnQgLT4gJ2EgdFxuICB8IENvbnN0IG9mICdhXG4gIHwgRXhwZXJ0IG9mICdhIEV4cGVydC50XG4gIHwgRnJlZXplIG9mICdhIEZyZWV6ZS50XG4gIHwgSWZfdGVzdF9jaGFuZ2UgOiBfIElmX3RoZW5fZWxzZS50IC0+IHVuaXQgdFxuICB8IElmX3RoZW5fZWxzZSBvZiAnYSBJZl90aGVuX2Vsc2UudFxuICB8IEludmFsaWRcbiAgfCBKb2luX2xoc19jaGFuZ2UgOiBfIEpvaW4udCAtPiB1bml0IHRcbiAgfCBKb2luX21haW4gb2YgJ2EgSm9pbi50XG4gIHwgTWFwIDogKCdhMSAtPiAnYSkgKiAnYTEgTm9kZS50IC0+ICdhIHRcbiAgfCBTbmFwc2hvdCBvZiAnYSBTbmFwc2hvdC50XG4gIHwgU3RlcF9mdW5jdGlvbiBvZiAnYSBTdGVwX2Z1bmN0aW9uX25vZGUudFxuICB8IFVuaW5pdGlhbGl6ZWRcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCA6IChfLCAnYSkgVW5vcmRlcmVkX2FycmF5X2ZvbGQudCAtPiAnYSB0XG4gIHwgVmFyIG9mICdhIFZhci50XG4gIHwgTWFwMiA6ICgnYTEgLT4gJ2EyIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50IC0+ICdhIHRcbiAgfCBNYXAzIDogKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50ICogJ2EzIE5vZGUudCAtPiAnYSB0XG4gIHwgTWFwNCA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50ICogJ2EzIE5vZGUudCAqICdhNCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA1IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA2IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA3IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA4IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA5IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMCA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMSA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYTExIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDEyIDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMyA6XG4gICAgICAoJ2ExXG4gICAgICAgLT4gJ2EyXG4gICAgICAgLT4gJ2EzXG4gICAgICAgLT4gJ2E0XG4gICAgICAgLT4gJ2E1XG4gICAgICAgLT4gJ2E2XG4gICAgICAgLT4gJ2E3XG4gICAgICAgLT4gJ2E4XG4gICAgICAgLT4gJ2E5XG4gICAgICAgLT4gJ2ExMFxuICAgICAgIC0+ICdhMTFcbiAgICAgICAtPiAnYTEyXG4gICAgICAgLT4gJ2ExM1xuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDE0IDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYTEzXG4gICAgICAgLT4gJ2ExNFxuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDE1IDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYTEzXG4gICAgICAgLT4gJ2ExNFxuICAgICAgIC0+ICdhMTVcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgICogJ2ExNSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBuYW1lIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBBcnJheV9mb2xkIF8gLT4gXCJBcnJheV9mb2xkXCJcbiAgfCBBdCBfIC0+IFwiQXRcIlxuICB8IEF0X2ludGVydmFscyBfIC0+IFwiQXRfaW50ZXJ2YWxzXCJcbiAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPiBcIkJpbmRfbGhzX2NoYW5nZVwiXG4gIHwgQmluZF9tYWluIF8gLT4gXCJCaW5kX21haW5cIlxuICB8IENvbnN0IF8gLT4gXCJDb25zdFwiXG4gIHwgRXhwZXJ0IF8gLT4gXCJFeHBlcnRcIlxuICB8IEZyZWV6ZSBfIC0+IFwiRnJlZXplXCJcbiAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+IFwiSWZfdGVzdF9jaGFuZ2VcIlxuICB8IElmX3RoZW5fZWxzZSBfIC0+IFwiSWZfdGhlbl9lbHNlXCJcbiAgfCBJbnZhbGlkIC0+IFwiSW52YWxpZFwiXG4gIHwgSm9pbl9saHNfY2hhbmdlIF8gLT4gXCJKb2luX2xoc19jaGFuZ2VcIlxuICB8IEpvaW5fbWFpbiBfIC0+IFwiSm9pbl9tYWluXCJcbiAgfCBNYXAgXyAtPiBcIk1hcFwiXG4gIHwgTWFwMiBfIC0+IFwiTWFwMlwiXG4gIHwgTWFwMyBfIC0+IFwiTWFwM1wiXG4gIHwgTWFwNCBfIC0+IFwiTWFwNFwiXG4gIHwgTWFwNSBfIC0+IFwiTWFwNVwiXG4gIHwgTWFwNiBfIC0+IFwiTWFwNlwiXG4gIHwgTWFwNyBfIC0+IFwiTWFwN1wiXG4gIHwgTWFwOCBfIC0+IFwiTWFwOFwiXG4gIHwgTWFwOSBfIC0+IFwiTWFwOVwiXG4gIHwgTWFwMTAgXyAtPiBcIk1hcDEwXCJcbiAgfCBNYXAxMSBfIC0+IFwiTWFwMTFcIlxuICB8IE1hcDEyIF8gLT4gXCJNYXAxMlwiXG4gIHwgTWFwMTMgXyAtPiBcIk1hcDEzXCJcbiAgfCBNYXAxNCBfIC0+IFwiTWFwMTRcIlxuICB8IE1hcDE1IF8gLT4gXCJNYXAxNVwiXG4gIHwgU25hcHNob3QgXyAtPiBcIlNuYXBzaG90XCJcbiAgfCBTdGVwX2Z1bmN0aW9uIF8gLT4gXCJTdGVwX2Z1bmN0aW9uXCJcbiAgfCBVbmluaXRpYWxpemVkIC0+IFwiVW5pbml0aWFsaXplZFwiXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPiBcIlVub3JkZXJlZF9hcnJheV9mb2xkXCJcbiAgfCBWYXIgXyAtPiBcIlZhclwiXG47O1xuXG5sZXQgaW52YXJpYW50IDogdHlwZSBhLiBhIEludmFyaWFudC50IC0+IGEgdCBJbnZhcmlhbnQudCA9XG4gIGZ1biBpbnZhcmlhbnRfYSB0IC0+XG4gIG1hdGNoIHQgd2l0aFxuICB8IEFycmF5X2ZvbGQgYXJyYXlfZm9sZCAtPiBBcnJheV9mb2xkLmludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2EgYXJyYXlfZm9sZFxuICB8IEF0IGF0IC0+IEF0LmludmFyaWFudCBhdFxuICB8IEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMgLT4gQXRfaW50ZXJ2YWxzLmludmFyaWFudCBhdF9pbnRlcnZhbHNcbiAgfCBCaW5kX2xoc19jaGFuZ2UgYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaWdub3JlIGJpbmRcbiAgfCBCaW5kX21haW4gYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2EgYmluZFxuICB8IENvbnN0IGEgLT4gaW52YXJpYW50X2EgYVxuICB8IEV4cGVydCBlIC0+IEV4cGVydC5pbnZhcmlhbnQgaW52YXJpYW50X2EgZVxuICB8IEZyZWV6ZSBmcmVlemUgLT4gRnJlZXplLmludmFyaWFudCBpbnZhcmlhbnRfYSBmcmVlemVcbiAgfCBJZl90ZXN0X2NoYW5nZSBpZl90aGVuX2Vsc2UgLT4gSWZfdGhlbl9lbHNlLmludmFyaWFudCBpZ25vcmUgaWZfdGhlbl9lbHNlXG4gIHwgSWZfdGhlbl9lbHNlIGlmX3RoZW5fZWxzZSAtPiBJZl90aGVuX2Vsc2UuaW52YXJpYW50IGludmFyaWFudF9hIGlmX3RoZW5fZWxzZVxuICB8IEludmFsaWQgLT4gKClcbiAgfCBKb2luX2xoc19jaGFuZ2Ugam9pbiAtPiBKb2luLmludmFyaWFudCBpZ25vcmUgam9pblxuICB8IEpvaW5fbWFpbiBqb2luIC0+IEpvaW4uaW52YXJpYW50IGludmFyaWFudF9hIGpvaW5cbiAgfCBNYXAgX1xuICB8IE1hcDIgX1xuICB8IE1hcDMgX1xuICB8IE1hcDQgX1xuICB8IE1hcDUgX1xuICB8IE1hcDYgX1xuICB8IE1hcDcgX1xuICB8IE1hcDggX1xuICB8IE1hcDkgX1xuICB8IE1hcDEwIF9cbiAgfCBNYXAxMSBfXG4gIHwgTWFwMTIgX1xuICB8IE1hcDEzIF9cbiAgfCBNYXAxNCBfXG4gIHwgTWFwMTUgXyAtPiAoKVxuICB8IFNuYXBzaG90IHNuYXBzaG90IC0+IFNuYXBzaG90LmludmFyaWFudCBpbnZhcmlhbnRfYSBzbmFwc2hvdFxuICB8IFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlIC0+XG4gICAgU3RlcF9mdW5jdGlvbl9ub2RlLmludmFyaWFudCBpbnZhcmlhbnRfYSBzdGVwX2Z1bmN0aW9uX25vZGVcbiAgfCBVbmluaXRpYWxpemVkIC0+ICgpXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdW5vcmRlcmVkX2FycmF5X2ZvbGQgLT5cbiAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5pbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9hIHVub3JkZXJlZF9hcnJheV9mb2xkXG4gIHwgVmFyIHZhciAtPiBWYXIuaW52YXJpYW50IGlnbm9yZSB2YXJcbjs7XG5cbmxldCBpbml0aWFsX251bV9jaGlsZHJlbiAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBdCBfIC0+IDBcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiAwXG4gIHwgQmluZF9saHNfY2hhbmdlIF8gLT4gMVxuICB8IEJpbmRfbWFpbiBfIC0+IDJcbiAgfCBDb25zdCBfIC0+IDBcbiAgfCBFeHBlcnQgXyAtPiAwXG4gIHwgRnJlZXplIF8gLT4gMVxuICB8IElmX3Rlc3RfY2hhbmdlIF8gLT4gMVxuICB8IElmX3RoZW5fZWxzZSBfIC0+IDJcbiAgfCBJbnZhbGlkIC0+IDBcbiAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPiAxXG4gIHwgSm9pbl9tYWluIF8gLT4gMlxuICB8IE1hcCBfIC0+IDFcbiAgfCBNYXAyIF8gLT4gMlxuICB8IE1hcDMgXyAtPiAzXG4gIHwgTWFwNCBfIC0+IDRcbiAgfCBNYXA1IF8gLT4gNVxuICB8IE1hcDYgXyAtPiA2XG4gIHwgTWFwNyBfIC0+IDdcbiAgfCBNYXA4IF8gLT4gOFxuICB8IE1hcDkgXyAtPiA5XG4gIHwgTWFwMTAgXyAtPiAxMFxuICB8IE1hcDExIF8gLT4gMTFcbiAgfCBNYXAxMiBfIC0+IDEyXG4gIHwgTWFwMTMgXyAtPiAxM1xuICB8IE1hcDE0IF8gLT4gMTRcbiAgfCBNYXAxNSBfIC0+IDE1XG4gIHwgU25hcHNob3QgXyAtPiAwXG4gIHwgU3RlcF9mdW5jdGlvbiBfIC0+IDFcbiAgfCBVbmluaXRpYWxpemVkIC0+IDBcbiAgfCBWYXIgXyAtPiAwXG4gIHwgQXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gQXJyYXkubGVuZ3RoIGNoaWxkcmVuXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+IEFycmF5Lmxlbmd0aCBjaGlsZHJlblxuOztcblxubGV0IGJpbmRfcmhzX2NoaWxkX2luZGV4ID0gMVxubGV0IGZyZWV6ZV9jaGlsZF9pbmRleCA9IDBcbmxldCBpZl9icmFuY2hfY2hpbGRfaW5kZXggPSAxXG5sZXQgam9pbl9yaHNfY2hpbGRfaW5kZXggPSAxXG5cbigqIFdlIGRvIG5vdCBpbXBsZW1lbnQgdGhlIHRpbWUtYmFzZWQgbm9kZXMgKFtBdF0sIFtBdF9pbnRlcnZhbHNdLCBbU25hcHNob3RdLFxuICAgW1N0ZXBfZnVuY3Rpb25dKSBhcyBwYXJlbnRzIG9mIHRoZSBjdXJyZW50LXRpbWUgbm9kZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gIFdlIGRvbid0XG4gICB3YW50IGFsbCBzdWNoIG5vZGVzIHRvIGJlIHJlY29tcHV0ZWQgd2hlbmV2ZXIgdGhlIHRpbWUgY2hhbmdlcywgd2hpY2ggd291bGQgYmUgaG9ycmlibHlcbiAgIGlubmVmaWNpZW50LiAgSW5zdGVhZCwgd2Ugb25seSB3YW50IHRoZW0gdG8gYmUgcmVjb21wdXRlZCBhdCB0aGUgXCJyaWdodFwiIHRpbWUsXG4gICBpLmUuIHdoZW4gdGltZSBwYXNzZXMgc29tZSB0aHJlc2hvbGQgcmVsZXZhbnQgdG8gdGhlbS4gIFdlIGRvIHRoaXMgdmlhIHNjaGVkdWxpbmdcbiAgIGFsYXJtcyBhdCB0aG9zZSB0aHJlc2hvbGRzLiAqKVxubGV0IGl0ZXJpX2NoaWxkcmVuICh0eXBlIGEpICh0IDogYSB0KSB+KGYgOiBpbnQgLT4gTm9kZS5QYWNrZWQudCAtPiB1bml0KSA6IHVuaXQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgICBmIGkgKFQgKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkpXG4gICAgZG9uZVxuICB8IEF0IF8gLT4gKClcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiAoKVxuICB8IEJpbmRfbGhzX2NoYW5nZSBiaW5kIC0+IGYgMCAoVCBiaW5kLmxocylcbiAgfCBCaW5kX21haW4geyBsaHNfY2hhbmdlOyByaHM7IF8gfSAtPlxuICAgICgqIFZhcmlvdXMgY29kZSwgZS5nLiBbc3RhdGUuYmVjYW1lX25lY2Vzc2FyeV0sIHJlbGllcyBvbiBwcm9jZXNzaW5nIFtsaHNfY2hhbmdlXVxuICAgICAgIGJlZm9yZSBbcmhzXS4gKilcbiAgICBmIDAgKFQgbGhzX2NoYW5nZSk7XG4gICAgaWYgVW9wdC5pc19zb21lIHJocyB0aGVuIGYgMSAoVCAoVW9wdC51bnNhZmVfdmFsdWUgcmhzKSlcbiAgfCBDb25zdCBfIC0+ICgpXG4gIHwgRXhwZXJ0IHsgY2hpbGRyZW47IG51bV9jaGlsZHJlbjsgXyB9IC0+XG4gICAgZm9yIGkgPSAwIHRvIG51bV9jaGlsZHJlbiAtIDEgZG9cbiAgICAgIGxldCAoRXhwZXJ0LkUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpIGluXG4gICAgICBmIGkgKFQgci5jaGlsZClcbiAgICBkb25lXG4gIHwgRnJlZXplIHsgY2hpbGQ7IF8gfSAtPiBmIDAgKFQgY2hpbGQpXG4gIHwgSWZfdGVzdF9jaGFuZ2UgeyB0ZXN0OyBfIH0gLT4gZiAwIChUIHRlc3QpXG4gIHwgSWZfdGhlbl9lbHNlIHsgdGVzdF9jaGFuZ2U7IGN1cnJlbnRfYnJhbmNoOyBfIH0gLT5cbiAgICBmIDAgKFQgdGVzdF9jaGFuZ2UpO1xuICAgIGlmIFVvcHQuaXNfc29tZSBjdXJyZW50X2JyYW5jaCB0aGVuIGYgMSAoVCAoVW9wdC51bnNhZmVfdmFsdWUgY3VycmVudF9icmFuY2gpKVxuICB8IEludmFsaWQgLT4gKClcbiAgfCBKb2luX2xoc19jaGFuZ2UgeyBsaHM7IF8gfSAtPiBmIDAgKFQgbGhzKVxuICB8IEpvaW5fbWFpbiB7IGxoc19jaGFuZ2U7IHJoczsgXyB9IC0+XG4gICAgZiAwIChUIGxoc19jaGFuZ2UpO1xuICAgIGlmIFVvcHQuaXNfc29tZSByaHMgdGhlbiBmIDEgKFQgKFVvcHQudW5zYWZlX3ZhbHVlIHJocykpXG4gIHwgU25hcHNob3QgXyAtPiAoKVxuICB8IFN0ZXBfZnVuY3Rpb24geyBjaGlsZDsgXyB9IC0+XG4gICAgaWYgVW9wdC5pc19zb21lIGNoaWxkIHRoZW4gZiAwIChUIChVb3B0LnVuc2FmZV92YWx1ZSBjaGlsZCkpXG4gIHwgVW5pbml0aWFsaXplZCAtPiAoKVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgICBmIGkgKFQgKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkpXG4gICAgZG9uZVxuICB8IFZhciBfIC0+ICgpXG4gIHwgTWFwIChfLCBub2RlMCkgLT4gZiAwIChUIG5vZGUwKVxuICB8IE1hcDIgKF8sIG5vZGUwLCBub2RlMSkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSlcbiAgfCBNYXAzIChfLCBub2RlMCwgbm9kZTEsIG5vZGUyKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpXG4gIHwgTWFwNCAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKVxuICB8IE1hcDUgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNClcbiAgfCBNYXA2IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpXG4gIHwgTWFwNyAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KVxuICB8IE1hcDggKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNykgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNylcbiAgfCBNYXA5IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNiwgbm9kZTcsIG5vZGU4KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpXG4gIHwgTWFwMTAgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNywgbm9kZTgsIG5vZGU5KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSlcbiAgfCBNYXAxMSAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3LCBub2RlOCwgbm9kZTksIG5vZGUxMClcbiAgICAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApXG4gIHwgTWFwMTJcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSlcbiAgfCBNYXAxM1xuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTFcbiAgICAgICwgbm9kZTEyICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSk7XG4gICAgZiAxMiAoVCBub2RlMTIpXG4gIHwgTWFwMTRcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExXG4gICAgICAsIG5vZGUxMlxuICAgICAgLCBub2RlMTMgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKTtcbiAgICBmIDEyIChUIG5vZGUxMik7XG4gICAgZiAxMyAoVCBub2RlMTMpXG4gIHwgTWFwMTVcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExXG4gICAgICAsIG5vZGUxMlxuICAgICAgLCBub2RlMTNcbiAgICAgICwgbm9kZTE0ICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSk7XG4gICAgZiAxMiAoVCBub2RlMTIpO1xuICAgIGYgMTMgKFQgbm9kZTEzKTtcbiAgICBmIDE0IChUIG5vZGUxNClcbjs7XG5cbigqIFtzbG93X2dldF9jaGlsZF0gaXMgb25seSB1c2VkIGJ5IFtOb2RlLmludmFyaWFudF0sIHNvIHdlIGRvbid0IG1pbmQgdXNpbmcgW3dpdGhfcmV0dXJuXVxuICAgYW5kIFtpdGVyaV9jaGlsZHJlbl0uICBJZiB3ZSBldmVyIG5lZWQgYSBmYXN0IFtnZXRfY2hpbGRdLCB3ZSBjb2RlZCBpdCBpbiByZXZcbiAgIDQ4ZGJmZDAzYzljNS4gKilcbmxldCBzbG93X2dldF9jaGlsZCA6IHR5cGUgYS4gYSB0IC0+IGluZGV4Ol8gLT4gTm9kZS5QYWNrZWQudCA9XG4gIGZ1biB0IH5pbmRleCAtPlxuICBtYXRjaCB0IHdpdGhcbiAgfCBBcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBUIGNoaWxkcmVuLihpbmRleClcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gVCBjaGlsZHJlbi4oaW5kZXgpXG4gIHwgRXhwZXJ0IHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGxldCAoRSBlZGdlKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZHJlbiBpbmRleCkgaW5cbiAgICBUIGVkZ2UuY2hpbGRcbiAgfCBfIC0+XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gaSBjaGlsZCAtPiBpZiBpID0gaW5kZXggdGhlbiByLnJldHVybiBjaGlsZCk7XG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIktpbmQuc2xvd19nZXRfY2hpbGQgZ290IGludmFsaWQgaW5kZXhcIlxuICAgICAgICAoaW5kZXgsIHQpXG4gICAgICAgIFslc2V4cF9vZjogaW50ICogXyB0XSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIEtpbmRcbm1vZHVsZSBJbnRlcm5hbF9vYnNlcnZlciA9IFR5cGVzLkludGVybmFsX29ic2VydmVyXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcbm9wZW4gTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5Ob2RlLnQgPVxuICB7ICgqIFtpZF0gaXMgYSB1bmlxdWUgaWQgZm9yIHRoZSBub2RlLiAqKVxuICAgIGlkIDogTm9kZV9pZC50XG4gIDsgc3RhdGUgOiAoVHlwZXMuU3RhdGUudFtAc2V4cC5vcGFxdWVdKVxuICA7ICgqIFRoZSBmaWVsZHMgZnJvbSBbcmVjb21wdXRlZF9hdF0gdG8gW2NyZWF0ZWRfaW5dIGFyZSBncm91cGVkIHRvZ2V0aGVyIGFuZCBhcmUgaW4gdGhlXG4gICAgICAgc2FtZSBvcmRlciBhcyB0aGV5IGFyZSB1c2VkIGJ5IFtTdGF0ZS5yZWNvbXB1dGVdIFRoaXMgaGFzIGEgcG9zaXRpdmUgcGVyZm9ybWFuY2VcbiAgICAgICBpbXBhY3QgZHVlIHRvIGNhY2hlIGVmZmVjdHMuICBEb24ndCBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZXNlIG5vZGVzIHdpdGhvdXRcbiAgICAgICBwZXJmb3JtYW5jZSB0ZXN0aW5nLiAqKVxuICAgICgqIFtyZWNvbXB1dGVkX2F0XSBpcyB0aGUgbGFzdCBzdGFiaWxpemF0aW9uIHdoZW4gW3RdJ3MgdmFsdWUgd2FzIHJlY29tcHV0ZWQsIGV2ZW4gaWZcbiAgICAgICBpdCB3YXMgY3V0IG9mZi4gKilcbiAgICBtdXRhYmxlIHJlY29tcHV0ZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgKCogW3ZhbHVlX29wdF0gc3RhcnRzIGFzIFtub25lXSwgYW5kIHRoZSBmaXJzdCB0aW1lIFt0XSBpcyBjb21wdXRlZCBpdCBpcyBzZXQgdG9cbiAgICAgICBbc29tZV0sIGFuZCByZW1haW5zIFtzb21lXSB0aGVyZWFmdGVyLCB1bnRpbCBbdF0gaXMgaW52YWxpZGF0ZWQsIGlmIGV2ZXIuICopXG4gICAgbXV0YWJsZSB2YWx1ZV9vcHQgOiAnYSBVb3B0LnRcbiAgOyAoKiBba2luZF0gaXMgdGhlIGtpbmQgb2YgREFHIG5vZGUgW3RdIGlzLiAgW2tpbmRdIGlzIG11dGFibGUgYm90aCBmb3IgaW5pdGlhbGl6YXRpb25cbiAgICAgICBhbmQgYmVjYXVzZSBpdCBjYW4gY2hhbmdlLCBlLmcuIGlmIFt0XSBpcyBpbnZhbGlkYXRlZC4gKilcbiAgICBtdXRhYmxlIGtpbmQgOiAnYSBLaW5kLnRcbiAgOyBtdXRhYmxlIGN1dG9mZiA6ICdhIEN1dG9mZi50XG4gIDsgKCogW2NoYW5nZWRfYXRdIGlzIHRoZSBsYXN0IHN0YWJpbGl6YXRpb24gd2hlbiB0aGlzIG5vZGUgd2FzIGNvbXB1dGVkIGFuZCBub3QgY3V0IG9mZi5cbiAgICAgICBJdCBpcyB1c2VkIHRvIGRldGVjdCB3aGVuIFt0XSdzIHBhcmVudHMgYXJlIHN0YWxlIGFuZCAoYmVjYXVzZSBhbGwgcGFyZW50cyBhcmVcbiAgICAgICBuZWNlc3NhcnkpIG5lZWQgdG8gYmUgcmVjb21wdXRlZC4gKilcbiAgICBtdXRhYmxlIGNoYW5nZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgKCogW251bV9vbl91cGRhdGVfaGFuZGxlcnNdIGlzIFtMaXN0Lmxlbmd0aCB0Lm9uX3VwZGF0ZV9oYW5kbGVyc10gcGx1cyB0aGUgbnVtYmVyIG9mXG4gICAgICAgb24tdXBkYXRlIGhhbmRsZXJzIHN1bW1lZCBvdmVyIGFsbCBvYnNlcnZlcnMgaW4gW3Qub2JzZXJ2ZXJzXS4gIEl0IGlzIHVzZWQgdG9cbiAgICAgICBxdWlja2x5IGRlY2lkZSB3aGV0aGVyIFt0XSBuZWVkcyB0byBiZSBhZGRlZCB0byBbc3RhdGUuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dXG4gICAgICAgd2hlbiBbdF0gY2hhbmdlcy4gIFtudW1fb25fdXBkYXRlX2hhbmRsZXJzXSB3aWxsIGRlY3JlYXNlIHdoZW4gYW4gb2JzZXJ2ZXIgaXNcbiAgICAgICByZW1vdmVkIGZyb20gW3Qub2JzZXJ2ZXJzXSwgaWYgdGhlIG9ic2VydmVyIGhhcyBvbi11cGRhdGUgaGFuZGxlcnMuICopXG4gICAgbXV0YWJsZSBudW1fb25fdXBkYXRlX2hhbmRsZXJzIDogaW50XG4gIDsgKCogVGhlIHBhcmVudHMgb2YgW3RdIGFyZSB0aGUgbm9kZXMgdGhhdCBkZXBlbmQgb24gaXQsIGFuZCBzaG91bGQgYmUgY29tcHV0ZWQgd2hlbiBbdF1cbiAgICAgICBjaGFuZ2VzLCBvbmNlIGFsbCBvZiB0aGVpciBvdGhlciBjaGlsZHJlbiBhcmUgdXAgdG8gZGF0ZS4gIFtudW1fcGFyZW50c10gaXMgdGhlXG4gICAgICAgbnVtYmVyIG9mIHBhcmVudHMuICBJZiBbbnVtX3BhcmVudHMgPj0gMV0sIHRoZW4gW3BhcmVudDBdIGlzIHRoZSBmaXJzdCBwYXJlbnQuXG4gICAgICAgW3BhcmVudDFfYW5kX2JleW9uZF0gaG9sZHMgdGhlIHJlbWFpbmluZyBwYXJlbnRzLiAgVGhlIG9yZGVyIG9mIHRoZSBwYXJlbnRzIGRvZXNuJ3RcbiAgICAgICBtYXR0ZXIuICBPbmUgbm9kZSBtYXkgb2NjdXIgbXVsdGlwbGUgdGltZXMgYXMgYSBwYXJlbnQgb2YgYW5vdGhlciAoZS5nLiBjb25zaWRlclxuICAgICAgIFttYXAyIG4xIG4xIH5mXSkuXG5cbiAgICAgICBUaGlzIHJlcHJlc2VudGF0aW9uIGlzIG9wdGltaXplZCBmb3IgdGhlIG92ZXJ3aGVsbWluZ2x5IGNvbW1vbiBjYXNlIHRoYXQgYSBub2RlIGhhc1xuICAgICAgIG9ubHkgb25lIHBhcmVudC4gKilcbiAgICBtdXRhYmxlIG51bV9wYXJlbnRzIDogaW50XG4gIDsgbXV0YWJsZSBwYXJlbnQxX2FuZF9iZXlvbmQgOiBQYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gIDsgbXV0YWJsZSBwYXJlbnQwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2NyZWF0ZWRfaW5dIGlzIGluaXRpYWxseSB0aGUgc2NvcGUgdGhhdCB0aGUgbm9kZSBpcyBjcmVhdGVkIGluLiAgSWYgYSBub2RlIGlzXG4gICAgICAgbGF0ZXIgXCJyZXNjb3BlZFwiLCB0aGVuIGNyZWF0ZWRfaW4gd2lsbCBiZSBhZGp1c3RlZCB0byB0aGUgbmV3IHNjb3BlIHRoYXQgdGhlIG5vZGVcbiAgICAgICBpcyBwYXJ0IG9mLiAqKVxuICAgIG11dGFibGUgY3JlYXRlZF9pbiA6IFNjb3BlLnRcbiAgOyAoKiBbbmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdIHNpbmdseSBsaW5rcyBhbGwgbm9kZXMgY3JlYXRlZCBpbiBbdC5jcmVhdGVkX2luXS4gKilcbiAgICBtdXRhYmxlIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2hlaWdodF0gaXMgdXNlZCB0byB2aXNpdCBub2RlcyBpbiB0b3BvbG9naWNhbCBvcmRlci4gIElmIFtpc19uZWNlc3NhcnkgdF0sIHRoZW5cbiAgICAgICBbaGVpZ2h0ID4gYy5oZWlnaHRdIGZvciBhbGwgY2hpbGRyZW4gW2NdIG9mIFt0XSwgYW5kIFtoZWlnaHQgPiBTY29wZS5oZWlnaHRcbiAgICAgICB0LmNyZWF0ZWRfaW5dLiAgSWYgW25vdCAoaXNfbmVjZXNzYXJ5IHQpXSwgdGhlbiBbaGVpZ2h0ID0gLTFdLiAqKVxuICAgIG11dGFibGUgaGVpZ2h0IDogaW50XG4gIDsgKCogW2hlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF0gaXMgdGhlIGhlaWdodCBhdCB3aGljaCBbdF0gaXMgc3RvcmVkIGluIHRoZSByZWNvbXB1dGVcbiAgICAgICBoZWFwLCBhbmQgaXMgbm9uLW5lZ2F0aXZlIGlmZiBbdF0gaXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAgSWYgW3RdIGlzIHRoZVxuICAgICAgIHJlY29tcHV0ZSBoZWFwLCB0aGVuIHR5cGljYWxseSBbdC5oZWlnaHQgPSB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF07IGhvd2V2ZXIsXG4gICAgICAgd2hpbGUgaGVpZ2h0IGlzIGJlaW5nIGFkanVzdGVkLCBvbmUgY2FuIHRlbXBvcmFyaWx5IGhhdmUgW3QuaGVpZ2h0ID5cbiAgICAgICB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF0uICBXaGVuIGhlaWdodCBhZGp1c3RtZW50IGZpbmlzaGVzLCBlcXVhbGl0eSBpcyByZXN0b3JlZFxuICAgICAgIGJ5IGluY3JlYXNpbmcgW3QuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXSB0byBbdC5oZWlnaHRdIGFuZCBzaGlmdGluZyBbdF0nc1xuICAgICAgIHBvc2l0aW9uIGluIHRoZSByZWNvbXB1dGUgaGVhcC4gKilcbiAgICBtdXRhYmxlIGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA6IGludFxuICA7ICgqIFtwcmV2X2luX3JlY29tcHV0ZV9oZWFwXSBhbmQgW25leHRfaW5fcmVjb21wdXRlX2hlYXBdIGRvdWJseSBsaW5rIGFsbCBub2RlcyBvZiB0aGVcbiAgICAgICBzYW1lIGhlaWdodCBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICopXG4gICAgbXV0YWJsZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2hlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXSBpcyB1c2VkIG9ubHkgZHVyaW5nIGhlaWdodCBhZGp1c3RtZW50LCBhbmQgaXNcbiAgICAgICBub24tbmVnYXRpdmUgaWZmIFt0XSBpcyBpbiB0aGUgYWRqdXN0LWhlaWdodHMgaGVhcC4gIEl0IGhvbGRzIHRoZSBwcmUtYWRqdXN0ZWRcbiAgICAgICBoZWlnaHQgb2YgW3RdLiAqKVxuICAgIG11dGFibGUgaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBpbnRcbiAgOyAoKiBbbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXSBzaW5nbHkgbGlua3MgYWxsIG5vZGVzIG9mIHRoZSBzYW1lIGhlaWdodCBpbiB0aGVcbiAgICAgICBhZGp1c3QtaGVpZ2h0cyBoZWFwLiAqKVxuICAgIG11dGFibGUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW29sZF92YWx1ZV9vcHRdIGlzIHVzZWQgb25seSBkdXJpbmcgc3RhYmlsaXphdGlvbiwgYW5kIG9ubHkgaWZcbiAgICAgICBbdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMF0uICBJdCBob2xkcyB0aGUgcHJlLXN0YWJpbGl6YXRpb24gdmFsdWUgb2YgW3RdLiAgSXRcbiAgICAgICBpcyBjbGVhcmVkIHdoZW4gcnVubmluZyBbdF0ncyBvbi11cGRhdGUgaGFuZGxlcnMsIGFuZCBzbyBpcyBhbHdheXMgW1VvcHQubm9uZV1cbiAgICAgICBiZXR3ZWVuIHN0YWJpbGl6YXRpb25zLiAqKVxuICAgIG11dGFibGUgb2xkX3ZhbHVlX29wdCA6ICdhIFVvcHQudFxuICA7ICgqIFtvYnNlcnZlcnNdIGlzIHRoZSBoZWFkIG9mIHRoZSBkb3VibHktbGlua2VkIGxpc3Qgb2Ygb2JzZXJ2ZXJzIG9mIFt0XSwgb3JcbiAgICAgICBbVW9wdC5ub25lXSBpZiB0aGVyZSBhcmUgbm8gb2JzZXJ2ZXJzLiAqKVxuICAgIG11dGFibGUgb2JzZXJ2ZXJzIDogKCdhIEludGVybmFsX29ic2VydmVyLnRbQHNleHAub3BhcXVlXSkgVW9wdC50XG4gIDsgKCogW2lzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSBpcyB1c2VkIHRvIGF2b2lkIHB1c2hpbmcgdGhlIHNhbWUgbm9kZSBtdWx0aXBsZVxuICAgICAgIHRpbWVzIG9udG8gW3N0YXRlLmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXS4gKilcbiAgICBtdXRhYmxlIGlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogYm9vbFxuICA7ICgqIFtvbl91cGRhdGVfaGFuZGxlcnNdIGlzIHRoZSBmdW5jdGlvbnMgc3VwcGxpZWQgdG8gW0luY3JlbWVudGFsLm9uX3VwZGF0ZV0gdG8gYmUgcnVuXG4gICAgICAgYXMgZGVzY3JpYmVkIGluIHRoZSBtb2R1bGUgW09uX3VwZGF0ZV9oYW5kbGVyXS4gIFtvbl91cGRhdGVfaGFuZGxlcnNdIGRvZXMgbm90XG4gICAgICAgY29udGFpbiB0aGUgb24tdXBkYXRlIGhhbmRsZXJzIGluIFt0Lm9ic2VydmVyc10uICBbb25fdXBkYXRlX2hhbmRsZXJzXSBvbmx5IGV2ZXJcbiAgICAgICBnZXRzIGxvbmdlcjsgdGhlcmUgaXMgbm8gd2F5IHRvIHJlbW92ZSBlbGVtZW50cy4gKilcbiAgICBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICA7IG11dGFibGUgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IDogaW50IGFycmF5XG4gIDsgbXV0YWJsZSBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgOyBtdXRhYmxlIGZvcmNlX25lY2Vzc2FyeSA6IGJvb2xcbiAgOyBtdXRhYmxlIHVzZXJfaW5mbyA6IERvdF91c2VyX2luZm8udCBvcHRpb25cbiAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcbmxldCBwYWNrZWRfc2FtZSAoUGFja2VkLlQgdDEpIChQYWNrZWQuVCB0MikgPSBzYW1lIHQxIHQyXG5sZXQgaXNfbmVjZXNzYXJ5ID0gTm9kZS5pc19uZWNlc3NhcnlcbmxldCBpbml0aWFsX251bV9jaGlsZHJlbiB0ID0gS2luZC5pbml0aWFsX251bV9jaGlsZHJlbiB0LmtpbmRcbmxldCBpdGVyaV9jaGlsZHJlbiB0IH5mID0gS2luZC5pdGVyaV9jaGlsZHJlbiB0LmtpbmQgfmZcbmxldCBpc192YWxpZCA9IE5vZGUuaXNfdmFsaWRcbmxldCB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSA9IHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lXG5cbmxldCB1c2VyX2luZm8gdCA9XG4gIG1hdGNoIHQudXNlcl9pbmZvIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChJbmZvIGkpIC0+IFNvbWUgaVxuICB8IFNvbWUgb3RoZXIgLT4gU29tZSAoSW5mby5jcmVhdGVfcyAoRG90X3VzZXJfaW5mby5zZXhwX29mX3Qgb3RoZXIpKVxuOztcblxubGV0IHNldF91c2VyX2luZm8gdCBpbmZvID1cbiAgdC51c2VyX2luZm9cbiAgPC0gKG1hdGNoIGluZm8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGkgLT4gU29tZSAoSW5mbyBpKSlcbjs7XG5cbmxldCBhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IHQgfmxhYmVsIH5hdHRycyA9XG4gIGxldCBuZXdfID0gRG90X3VzZXJfaW5mby5kb3QgfmxhYmVsIH5hdHRyaWJ1dGVzOmF0dHJzIGluXG4gIHQudXNlcl9pbmZvXG4gIDwtIChtYXRjaCB0LnVzZXJfaW5mbyB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgbmV3X1xuICAgIHwgU29tZSBvdGhlciAtPiBTb21lIChEb3RfdXNlcl9pbmZvLmFwcGVuZCBvdGhlciBuZXdfKSlcbjs7XG5cbmxldCBlZGdlX2lzX3N0YWxlIH5jaGlsZCB+cGFyZW50ID1cbiAgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSBjaGlsZC5jaGFuZ2VkX2F0IHBhcmVudC5yZWNvbXB1dGVkX2F0ID4gMFxuOztcblxubGV0IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHQgPVxuICBsZXQgaXNfc3RhbGUgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+XG4gICAgaWYgZWRnZV9pc19zdGFsZSB+Y2hpbGQgfnBhcmVudDp0IHRoZW4gaXNfc3RhbGUgOj0gdHJ1ZSk7XG4gICFpc19zdGFsZVxuOztcblxubGV0IGlzX3N0YWxlIDogdHlwZSBhLiBhIHQgLT4gYm9vbCA9XG4gIGZ1biAodCA6IGEgdCkgLT5cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICAoKiBBIGNvbnN0IG5vZGUgaXMgc3RhbGUgb25seSBhdCBpbml0aWFsaXphdGlvbi4gKilcbiAgfCBDb25zdCBfIC0+IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gICgqIFRpbWUtYmFzZWQgbm9kZXMgYXJlIGNvbnNpZGVyZWQgc3RhbGUgd2hlbiBbdC5yZWNvbXB1dGVkX2F0XSBpcyBub25lLCB3aGljaCBoYXBwZW5zXG4gICAgIGF0IGluaXRpYWxpemF0aW9uIGFuZCB3aGVuIHRoZSBhbGFybSBtZWNoYW5pc20gbWFrZXMgYSBub2RlIHN0YWxlIChpdCBzZXRzIHRoZVxuICAgICBbdC5yZWNvbXB1dGVkX2F0XSB0byBbU3RhYmlsaXphdGlvbl9udW0ubm9uZV0pLiAqKVxuICB8IEF0IF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICB8IFNuYXBzaG90IF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgKCogV2UgbmV2ZXIgY29uc2lkZXIgYW4gaW52YWxpZGF0ZWQgbm9kZSB0byBiZSBzdGFsZSAtLSB3aGVuIHdlIGludmFsaWRhdGUgYSBub2RlLCB3ZVxuICAgICBpbW1lZGlhdGVseSBwcm9wYWdhdGUgaW52YWxpZGl0eSB0byBpdHMgYW5jZXN0b3JzLiAqKVxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgKCogQSBbVmFyXSBub2RlIGlzIHN0YWxlIGlmIGl0IHdhcyBzZXQgc2luY2UgaXQgd2FzIHJlY29tcHV0ZWQuICopXG4gIHwgVmFyIHsgc2V0X2F0OyBfIH0gLT4gU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSBzZXRfYXQgdC5yZWNvbXB1dGVkX2F0ID4gMFxuICAoKiBOb2RlcyB0aGF0IGhhdmUgY2hpbGRyZW4uICopXG4gIHwgQmluZF9saHNfY2hhbmdlIF8gLT5cbiAgICBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdCB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG4gIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBBcnJheV9mb2xkIF9cbiAgfCBCaW5kX21haW4gX1xuICB8IEZyZWV6ZSBfXG4gIHwgSWZfdGhlbl9lbHNlIF9cbiAgfCBKb2luX21haW4gX1xuICB8IE1hcCBfXG4gIHwgTWFwMiBfXG4gIHwgTWFwMyBfXG4gIHwgTWFwNCBfXG4gIHwgTWFwNSBfXG4gIHwgTWFwNiBfXG4gIHwgTWFwNyBfXG4gIHwgTWFwOCBfXG4gIHwgTWFwOSBfXG4gIHwgTWFwMTAgX1xuICB8IE1hcDExIF9cbiAgfCBNYXAxMiBfXG4gIHwgTWFwMTMgX1xuICB8IE1hcDE0IF9cbiAgfCBNYXAxNSBfXG4gIHwgU3RlcF9mdW5jdGlvbiBfXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBFeHBlcnQgeyBmb3JjZV9zdGFsZTsgXyB9IC0+XG4gICAgZm9yY2Vfc3RhbGVcbiAgICB8fCBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICAgIHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbjs7XG5cbmxldCBuZWVkc190b19iZV9jb21wdXRlZCB0ID0gaXNfbmVjZXNzYXJ5IHQgJiYgaXNfc3RhbGUgdFxubGV0IGlzX2luX3JlY29tcHV0ZV9oZWFwIHQgPSB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA+PSAwXG5sZXQgaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCB0ID0gdC5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA+PSAwXG5cbmxldCBnZXRfcGFyZW50IHQgfmluZGV4ID1cbiAgVW9wdC52YWx1ZV9leG5cbiAgICAoaWYgaW5kZXggPSAwIHRoZW4gdC5wYXJlbnQwIGVsc2UgVW5pZm9ybV9hcnJheS5nZXQgdC5wYXJlbnQxX2FuZF9iZXlvbmQgKGluZGV4IC0gMSkpXG47O1xuXG5sZXQgaXRlcmlfcGFyZW50cyB0IH5mID1cbiAgaWYgdC5udW1fcGFyZW50cyA+IDBcbiAgdGhlbiAoXG4gICAgZiAwIChVb3B0LnZhbHVlX2V4biB0LnBhcmVudDApO1xuICAgIGZvciBpbmRleCA9IDEgdG8gdC5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgIGYgaW5kZXggKFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LnBhcmVudDFfYW5kX2JleW9uZCAoaW5kZXggLSAxKSkpXG4gICAgZG9uZSlcbjs7XG5cbmxldCBoYXNfY2hpbGQgdCB+Y2hpbGQgPVxuICBsZXQgaGFzID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGNoaWxkJykgLT4gaGFzIDo9ICFoYXMgfHwgc2FtZSBjaGlsZCBjaGlsZCcpO1xuICAhaGFzXG47O1xuXG5sZXQgaGFzX2ludmFsaWRfY2hpbGQgdCA9XG4gIGxldCBoYXMgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+IGhhcyA6PSAhaGFzIHx8IG5vdCAoaXNfdmFsaWQgY2hpbGQpKTtcbiAgIWhhc1xuOztcblxubGV0IGhhc19wYXJlbnQgKHQgOiBfIHQpIH5wYXJlbnQgPVxuICBsZXQgaGFzID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX3BhcmVudHMgdCB+ZjooZnVuIF8gKFQgcGFyZW50JykgLT4gaGFzIDo9ICFoYXMgfHwgc2FtZSBwYXJlbnQgcGFyZW50Jyk7XG4gICFoYXNcbjs7XG5cbmxldCBzaG91bGRfYmVfaW52YWxpZGF0ZWQgOiB0eXBlIGEuIGEgdCAtPiBib29sID1cbiAgZnVuIHQgLT5cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgKCogbm9kZXMgd2l0aCBubyBjaGlsZHJlbiAqKVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQXQgXyAtPiBmYWxzZVxuICB8IEF0X2ludGVydmFscyBfIC0+IGZhbHNlXG4gIHwgQ29uc3QgXyB8IFNuYXBzaG90IF8gfCBWYXIgXyAtPiBmYWxzZVxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgKCogTm9kZXMgd2l0aCBhIGZpeGVkIHNldCBvZiBjaGlsZHJlbiBhcmUgaW52YWxpZCBpZiBhbnkgY2hpbGQgaXMgaW52YWxpZC4gKilcbiAgfCBBcnJheV9mb2xkIF9cbiAgfCBGcmVlemUgX1xuICB8IE1hcCBfXG4gIHwgTWFwMiBfXG4gIHwgTWFwMyBfXG4gIHwgTWFwNCBfXG4gIHwgTWFwNSBfXG4gIHwgTWFwNiBfXG4gIHwgTWFwNyBfXG4gIHwgTWFwOCBfXG4gIHwgTWFwOSBfXG4gIHwgTWFwMTAgX1xuICB8IE1hcDExIF9cbiAgfCBNYXAxMiBfXG4gIHwgTWFwMTMgX1xuICB8IE1hcDE0IF9cbiAgfCBNYXAxNSBfXG4gIHwgU3RlcF9mdW5jdGlvbiBfXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPiBoYXNfaW52YWxpZF9jaGlsZCB0XG4gICgqIEEgKl9jaGFuZ2Ugbm9kZSBpcyBpbnZhbGlkIGlmIHRoZSBub2RlIGl0IGlzIHdhdGNoaW5nIGZvciBjaGFuZ2VzIGlzIGludmFsaWQgKHNhbWVcbiAgICAgcmVhc29uIGFzIGFib3ZlKS4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBbaGFzX2ludmFsaWRfY2hpbGQgdF0uICopXG4gIHwgQmluZF9saHNfY2hhbmdlIHsgbGhzOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHMpXG4gIHwgSWZfdGVzdF9jaGFuZ2UgeyB0ZXN0OyBfIH0gLT4gbm90IChpc192YWxpZCB0ZXN0KVxuICB8IEpvaW5fbGhzX2NoYW5nZSB7IGxoczsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzKVxuICAoKiBbQmluZF9tYWluXSwgW0lmX3RoZW5fZWxzZV0sIGFuZCBbSm9pbl9tYWluXSBhcmUgaW52YWxpZCBpZiB0aGVpciAqX2NoYW5nZSBjaGlsZCBpcyxcbiAgICAgYnV0IG5vdCBuZWNlc3NhcmlseSBpZiB0aGVpciBvdGhlciBjaGlsZHJlbiBhcmUgLS0gdGhlIGdyYXBoIG1heSBiZSByZXN0cnVjdHVyZWQgdG9cbiAgICAgYXZvaWQgdGhlIGludmFsaWRpdHkgb2YgdGhvc2UuICopXG4gIHwgQmluZF9tYWluIHsgbGhzX2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzX2NoYW5nZSlcbiAgfCBJZl90aGVuX2Vsc2UgeyB0ZXN0X2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgdGVzdF9jaGFuZ2UpXG4gIHwgSm9pbl9tYWluIHsgbGhzX2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzX2NoYW5nZSlcbiAgfCBFeHBlcnQgXyAtPlxuICAgICgqIFRoaXMgaXMgc2ltaWxhciB0byB3aGF0IHdlIGRvIGZvciBiaW5kIGFib3ZlLCBleGNlcHQgdGhhdCBhbnkgaW52YWxpZCBjaGlsZCBjYW4gYmVcbiAgICAgICByZW1vdmVkLCBzbyB3ZSBjYW4gb25seSB0ZWxsIGlmIGFuIGV4cGVydCBub2RlIGJlY29tZXMgaW52YWxpZCB3aGVuIGFsbCBpdHNcbiAgICAgICBkZXBlbmRlbmNpZXMgaGF2ZSBmaXJlZCAod2hpY2ggaW4gcHJhY3RpY2UgbWVhbnMgd2hlbiB3ZSBhcmUgYWJvdXQgdG8gcnVuIGl0KS4gKilcbiAgICBmYWxzZVxuOztcblxubGV0IGZvbGRfb2JzZXJ2ZXJzICh0IDogXyB0KSB+aW5pdCB+ZiA9XG4gIGxldCByID0gcmVmIHQub2JzZXJ2ZXJzIGluXG4gIGxldCBhYyA9IHJlZiBpbml0IGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCBvYnNlcnZlciA9IFVvcHQudmFsdWVfZXhuICFyIGluXG4gICAgciA6PSBvYnNlcnZlci5uZXh0X2luX29ic2VydmluZztcbiAgICBhYyA6PSBmICFhYyBvYnNlcnZlclxuICBkb25lO1xuICAhYWNcbjs7XG5cbmxldCBpdGVyX29ic2VydmVycyB0IH5mID0gZm9sZF9vYnNlcnZlcnMgdCB+aW5pdDooKSB+ZjooZnVuICgpIG9ic2VydmVyIC0+IGYgb2JzZXJ2ZXIpXG5cbmxldCBpbnZhcmlhbnQgKHR5cGUgYSkgKGludmFyaWFudF9hIDogYSAtPiB1bml0KSAodCA6IGEgdCkgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIFsldGVzdF9lcTogYm9vbF0gKG5lZWRzX3RvX2JlX2NvbXB1dGVkIHQpIChpc19pbl9yZWNvbXB1dGVfaGVhcCB0KTtcbiAgICBpZiBpc19uZWNlc3NhcnkgdFxuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0ICh0LmhlaWdodCA+IFNjb3BlLmhlaWdodCB0LmNyZWF0ZWRfaW4pO1xuICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+XG4gICAgICAgIGFzc2VydCAodC5oZWlnaHQgPiBjaGlsZC5oZWlnaHQpO1xuICAgICAgICBhc3NlcnQgKGhhc19wYXJlbnQgY2hpbGQgfnBhcmVudDp0KSk7XG4gICAgICBhc3NlcnQgKG5vdCAoc2hvdWxkX2JlX2ludmFsaWRhdGVkIHQpKSk7XG4gICAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gXyAoVCBwYXJlbnQpIC0+XG4gICAgICBhc3NlcnQgKGhhc19jaGlsZCBwYXJlbnQgfmNoaWxkOnQpO1xuICAgICAgYXNzZXJ0IChpc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgICAgIGFzc2VydCAodC5oZWlnaHQgPCBwYXJlbnQuaGVpZ2h0KSk7XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5pZDooY2hlY2sgTm9kZV9pZC5pbnZhcmlhbnQpXG4gICAgICB+c3RhdGU6aWdub3JlXG4gICAgICB+cmVjb21wdXRlZF9hdDooY2hlY2sgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50KVxuICAgICAgfnZhbHVlX29wdDpcbiAgICAgICAgKGNoZWNrIChmdW4gdmFsdWVfb3B0IC0+XG4gICAgICAgICAgIGlmIGlzX3ZhbGlkIHQgJiYgbm90IChpc19zdGFsZSB0KSB0aGVuIGFzc2VydCAoVW9wdC5pc19zb21lIHZhbHVlX29wdCk7XG4gICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hIHZhbHVlX29wdCkpXG4gICAgICB+a2luZDpcbiAgICAgICAgKGNoZWNrIChmdW4ga2luZCAtPlxuICAgICAgICAgICBLaW5kLmludmFyaWFudCBpbnZhcmlhbnRfYSBraW5kO1xuICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgfCBFeHBlcnQgZSAtPlxuICAgICAgICAgICAgIEV4cGVydC5pbnZhcmlhbnRfYWJvdXRfbnVtX2ludmFsaWRfY2hpbGRyZW4gZSB+aXNfbmVjZXNzYXJ5Oihpc19uZWNlc3NhcnkgdClcbiAgICAgICAgICAgfCBfIC0+ICgpKSlcbiAgICAgIH5jdXRvZmY6KGNoZWNrIChDdXRvZmYuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH5jaGFuZ2VkX2F0OlxuICAgICAgICAoY2hlY2sgKGZ1biBjaGFuZ2VkX2F0IC0+XG4gICAgICAgICAgIFN0YWJpbGl6YXRpb25fbnVtLmludmFyaWFudCBjaGFuZ2VkX2F0O1xuICAgICAgICAgICBpZiBTdGFiaWxpemF0aW9uX251bS5pc19zb21lIHQucmVjb21wdXRlZF9hdFxuICAgICAgICAgICB0aGVuIGFzc2VydCAoU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSBjaGFuZ2VkX2F0IHQucmVjb21wdXRlZF9hdCA8PSAwKSkpXG4gICAgICB+bnVtX29uX3VwZGF0ZV9oYW5kbGVyczpcbiAgICAgICAgKGNoZWNrXG4gICAgICAgICAgIChbJXRlc3RfcmVzdWx0OiBpbnRdXG4gICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgKExpc3QubGVuZ3RoIHQub25fdXBkYXRlX2hhbmRsZXJzXG4gICAgICAgICAgICAgICAgICsgZm9sZF9vYnNlcnZlcnMgdCB+aW5pdDowIH5mOihmdW4gbiB7IG9uX3VwZGF0ZV9oYW5kbGVyczsgXyB9IC0+XG4gICAgICAgICAgICAgICAgICAgbiArIExpc3QubGVuZ3RoIG9uX3VwZGF0ZV9oYW5kbGVycykpKSlcbiAgICAgIH5udW1fcGFyZW50czpcbiAgICAgICAgKGNoZWNrIChmdW4gbnVtX3BhcmVudHMgLT5cbiAgICAgICAgICAgYXNzZXJ0IChudW1fcGFyZW50cyA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fcGFyZW50cyA8PSAxICsgVW5pZm9ybV9hcnJheS5sZW5ndGggdC5wYXJlbnQxX2FuZF9iZXlvbmQpKSlcbiAgICAgIH5wYXJlbnQxX2FuZF9iZXlvbmQ6XG4gICAgICAgIChjaGVjayAoZnVuIHBhcmVudDFfYW5kX2JleW9uZCAtPlxuICAgICAgICAgICBmb3IgcGFyZW50X2luZGV4ID0gMSB0byBVbmlmb3JtX2FycmF5Lmxlbmd0aCBwYXJlbnQxX2FuZF9iZXlvbmQgZG9cbiAgICAgICAgICAgICBbJXRlc3RfZXE6IGJvb2xdXG4gICAgICAgICAgICAgICAocGFyZW50X2luZGV4IDwgdC5udW1fcGFyZW50cylcbiAgICAgICAgICAgICAgIChVb3B0LmlzX3NvbWUgKFVuaWZvcm1fYXJyYXkuZ2V0IHBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5wYXJlbnQwOlxuICAgICAgICAoY2hlY2sgKGZ1biBwYXJlbnQwIC0+XG4gICAgICAgICAgIFsldGVzdF9lcTogYm9vbF0gKHQubnVtX3BhcmVudHMgPiAwKSAoVW9wdC5pc19zb21lIHBhcmVudDApKSlcbiAgICAgIH5jcmVhdGVkX2luOihjaGVjayBTY29wZS5pbnZhcmlhbnQpXG4gICAgICB+bmV4dF9ub2RlX2luX3NhbWVfc2NvcGU6XG4gICAgICAgIChjaGVjayAoZnVuIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIC0+XG4gICAgICAgICAgIGlmIFNjb3BlLmlzX3RvcCB0LmNyZWF0ZWRfaW4gfHwgbm90IChpc192YWxpZCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlKSkpXG4gICAgICB+aGVpZ2h0OlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHQgLT5cbiAgICAgICAgICAgaWYgaXNfbmVjZXNzYXJ5IHQgdGhlbiBhc3NlcnQgKGhlaWdodCA+PSAwKSBlbHNlIGFzc2VydCAoaGVpZ2h0ID0gLTEpKSlcbiAgICAgIH5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCAtPlxuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA+PSAtMSk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDw9IHQuaGVpZ2h0KSkpXG4gICAgICB+cHJldl9pbl9yZWNvbXB1dGVfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gKHByZXZfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnQpIC0+XG4gICAgICAgICAgIGlmIG5vdCAoaXNfaW5fcmVjb21wdXRlX2hlYXAgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIHByZXZfaW5fcmVjb21wdXRlX2hlYXBcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IChUIHByZXYpID0gVW9wdC52YWx1ZV9leG4gcHJldl9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICAgICAgICAgICAgIGFzc2VydCAocGFja2VkX3NhbWUgKFQgdCkgKFVvcHQudmFsdWVfZXhuIHByZXYubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCkpO1xuICAgICAgICAgICAgIGFzc2VydCAodC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBwcmV2LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCkpKSlcbiAgICAgIH5uZXh0X2luX3JlY29tcHV0ZV9oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biAobmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA6IFBhY2tlZC50IFVvcHQudCkgLT5cbiAgICAgICAgICAgaWYgbm90IChpc19pbl9yZWNvbXB1dGVfaGVhcCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKFQgbmV4dCkgPSBVb3B0LnZhbHVlX2V4biBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gICAgICAgICAgICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCB0KSAoVW9wdC52YWx1ZV9leG4gbmV4dC5wcmV2X2luX3JlY29tcHV0ZV9oZWFwKSk7XG4gICAgICAgICAgICAgYXNzZXJ0ICh0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IG5leHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKSkpKVxuICAgICAgfmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCAtPlxuICAgICAgICAgICBpZiBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA+PSAwXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8IHQuaGVpZ2h0KSkpXG4gICAgICB+bmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biAobmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogUGFja2VkLnQgVW9wdC50KSAtPlxuICAgICAgICAgICBpZiBub3QgKGlzX2luX2FkanVzdF9oZWlnaHRzX2hlYXAgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXApXG4gICAgICAgICAgIGVsc2UgaWYgVW9wdC5pc19zb21lIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKFQgbmV4dCkgPSBVb3B0LnZhbHVlX2V4biBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgaW5cbiAgICAgICAgICAgICBhc3NlcnQgKGlzX2luX2FkanVzdF9oZWlnaHRzX2hlYXAgbmV4dCk7XG4gICAgICAgICAgICAgYXNzZXJ0ICh0LmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gbmV4dC5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCkpKSlcbiAgICAgIH5vbGRfdmFsdWVfb3B0OihjaGVjayAoVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfm9ic2VydmVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gXyAtPlxuICAgICAgICAgICBpdGVyX29ic2VydmVycyB0IH5mOihmdW4geyBzdGF0ZTsgb2JzZXJ2aW5nOyBfIH0gLT5cbiAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgdCBvYnNlcnZpbmcpO1xuICAgICAgICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2UpKSlcbiAgICAgIH5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbjppZ25vcmVcbiAgICAgIH5vbl91cGRhdGVfaGFuZGxlcnM6aWdub3JlXG4gICAgICB+dXNlcl9pbmZvOmlnbm9yZVxuICAgICAgfm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleDpcbiAgICAgICAgKGNoZWNrIChmdW4gbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IC0+XG4gICAgICAgICAgIChtYXRjaCB0LmtpbmQgd2l0aFxuICAgICAgICAgICAgfCBFeHBlcnQgXyAtPiAoKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGludF1cbiAgICAgICAgICAgICAgICAoQXJyYXkubGVuZ3RoIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleClcbiAgICAgICAgICAgICAgICB+ZXhwZWN0Oihpbml0aWFsX251bV9jaGlsZHJlbiB0KSk7XG4gICAgICAgICAgIGlmIGlzX25lY2Vzc2FyeSB0XG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gY2hpbGRfaW5kZXggKFQgY2hpbGQpIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBwYWNrZWRfc2FtZVxuICAgICAgICAgICAgICAgICAgIChUIHQpXG4gICAgICAgICAgICAgICAgICAgKGdldF9wYXJlbnRcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZFxuICAgICAgICAgICAgICAgICAgICAgIH5pbmRleDpteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSkpKTtcbiAgICAgICAgICAgaWYgZGVidWcgJiYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICAgICAgICAgdGhlbiBBcnJheS5pdGVyIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCB+ZjooZnVuIHggLT4gYXNzZXJ0ICh4ID0gLTEpKSkpXG4gICAgICB+bXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4OlxuICAgICAgICAoY2hlY2sgKGZ1biBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XVxuICAgICAgICAgICAgIChBcnJheS5sZW5ndGggbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4KVxuICAgICAgICAgICAgIH5leHBlY3Q6KFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQucGFyZW50MV9hbmRfYmV5b25kICsgMSk7XG4gICAgICAgICAgIGl0ZXJpX3BhcmVudHMgdCB+ZjooZnVuIHBhcmVudF9pbmRleCAoVCBwYXJlbnQpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBhY2tlZF9zYW1lXG4gICAgICAgICAgICAgICAgIChUIHQpXG4gICAgICAgICAgICAgICAgIChLaW5kLnNsb3dfZ2V0X2NoaWxkXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudC5raW5kXG4gICAgICAgICAgICAgICAgICAgIH5pbmRleDpteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkpKSk7XG4gICAgICAgICAgIGlmIGRlYnVnICYmIG5vdCAoaXNfbmVjZXNzYXJ5IHQpXG4gICAgICAgICAgIHRoZW4gQXJyYXkuaXRlciBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggfmY6KGZ1biB4IC0+IGFzc2VydCAoeCA9IC0xKSkpKVxuICAgICAgfmZvcmNlX25lY2Vzc2FyeTppZ25vcmVcbiAgICAgIH5jcmVhdGlvbl9iYWNrdHJhY2U6aWdub3JlKVxuOztcblxubGV0IHVuc2FmZV92YWx1ZSB0ID0gVW9wdC51bnNhZmVfdmFsdWUgdC52YWx1ZV9vcHRcblxubGV0IHZhbHVlX2V4biB0ID1cbiAgaWYgVW9wdC5pc19zb21lIHQudmFsdWVfb3B0XG4gIHRoZW4gVW9wdC51bnNhZmVfdmFsdWUgdC52YWx1ZV9vcHRcbiAgZWxzZSBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImF0dGVtcHQgdG8gZ2V0IHZhbHVlIG9mIGFuIGludmFsaWQgbm9kZVwiIHQgWyVzZXhwX29mOiBfIHRdXG47O1xuXG5sZXQgZ2V0X2N1dG9mZiB0ID0gdC5jdXRvZmZcbmxldCBzZXRfY3V0b2ZmIHQgY3V0b2ZmID0gdC5jdXRvZmYgPC0gY3V0b2ZmXG5cbmxldCBpc19jb25zdCB0ID1cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgfCBDb25zdCBfIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgb25fdXBkYXRlIHQgb25fdXBkYXRlX2hhbmRsZXIgPVxuICB0Lm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBvbl91cGRhdGVfaGFuZGxlciA6OiB0Lm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzIDwtIHQubnVtX29uX3VwZGF0ZV9oYW5kbGVycyArIDFcbjs7XG5cbmxldCBydW5fb25fdXBkYXRlX2hhbmRsZXJzIHQgbm9kZV91cGRhdGUgfm5vdyA9XG4gIGxldCByID0gcmVmIHQub25fdXBkYXRlX2hhbmRsZXJzIGluXG4gIHdoaWxlIG5vdCAoTGlzdC5pc19lbXB0eSAhcikgZG9cbiAgICBtYXRjaCAhciB3aXRoXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHJlc3QgLT5cbiAgICAgIHIgOj0gcmVzdDtcbiAgICAgIE9uX3VwZGF0ZV9oYW5kbGVyLnJ1biBvbl91cGRhdGVfaGFuZGxlciBub2RlX3VwZGF0ZSB+bm93XG4gIGRvbmU7XG4gIGxldCByID0gcmVmIHQub2JzZXJ2ZXJzIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCBvYnNlcnZlciA9IFVvcHQudmFsdWVfZXhuICFyIGluXG4gICAgciA6PSBvYnNlcnZlci5uZXh0X2luX29ic2VydmluZztcbiAgICBsZXQgciA9IHJlZiBvYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnMgaW5cbiAgICB3aGlsZSBub3QgKExpc3QuaXNfZW1wdHkgIXIpIGRvXG4gICAgICBtYXRjaCAhciB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBvbl91cGRhdGVfaGFuZGxlciA6OiByZXN0IC0+XG4gICAgICAgIHIgOj0gcmVzdDtcbiAgICAgICAgKCogV2UgaGF2ZSB0byB0ZXN0IFtzdGF0ZV0gYmVmb3JlIGVhY2ggb24tdXBkYXRlIGhhbmRsZXIsIGJlY2F1c2UgYW4gb24tdXBkYXRlXG4gICAgICAgICAgIGhhbmRsZXIgbWlnaHQgZGlzYWJsZSBpdHMgb3duIG9ic2VydmVyLCB3aGljaCBzaG91bGQgcHJldmVudCBvdGhlciBvbi11cGRhdGVcbiAgICAgICAgICAgaGFuZGxlcnMgaW4gdGhlIHNhbWUgb2JzZXJ2ZXIgZnJvbSBydW5uaW5nLiAqKVxuICAgICAgICAobWF0Y2ggb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgIHwgSW5fdXNlIC0+IE9uX3VwZGF0ZV9oYW5kbGVyLnJ1biBvbl91cGRhdGVfaGFuZGxlciBub2RlX3VwZGF0ZSB+bm93KVxuICAgIGRvbmVcbiAgZG9uZVxuOztcblxubGV0IHNldF9raW5kIHQga2luZCA9XG4gIHQua2luZCA8LSBraW5kO1xuICB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleFxuICA8LSBBcnJheS5jcmVhdGUgfmxlbjooS2luZC5pbml0aWFsX251bV9jaGlsZHJlbiBraW5kKSAoLTEpXG47O1xuXG5sZXQgY3JlYXRlIHN0YXRlIGNyZWF0ZWRfaW4ga2luZCA9XG4gIGxldCB0ID1cbiAgICB7IGlkID0gTm9kZV9pZC5uZXh0ICgpXG4gICAgOyBzdGF0ZVxuICAgIDsgcmVjb21wdXRlZF9hdCA9IFN0YWJpbGl6YXRpb25fbnVtLm5vbmVcbiAgICA7IHZhbHVlX29wdCA9IFVvcHQubm9uZVxuICAgIDsga2luZFxuICAgIDsgY3V0b2ZmID0gQ3V0b2ZmLnBoeXNfZXF1YWxcbiAgICA7IGNoYW5nZWRfYXQgPSBTdGFiaWxpemF0aW9uX251bS5ub25lXG4gICAgOyBudW1fb25fdXBkYXRlX2hhbmRsZXJzID0gMFxuICAgIDsgbnVtX3BhcmVudHMgPSAwXG4gICAgOyBwYXJlbnQxX2FuZF9iZXlvbmQgPSBVbmlmb3JtX2FycmF5LmVtcHR5XG4gICAgOyBwYXJlbnQwID0gVW9wdC5ub25lXG4gICAgOyBjcmVhdGVkX2luXG4gICAgOyBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSA9IFVvcHQubm9uZVxuICAgIDsgaGVpZ2h0ID0gLTFcbiAgICA7IGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IC0xXG4gICAgOyBwcmV2X2luX3JlY29tcHV0ZV9oZWFwID0gVW9wdC5ub25lXG4gICAgOyBuZXh0X2luX3JlY29tcHV0ZV9oZWFwID0gVW9wdC5ub25lXG4gICAgOyBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IC0xXG4gICAgOyBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IG9sZF92YWx1ZV9vcHQgPSBVb3B0Lm5vbmVcbiAgICA7IG9ic2VydmVycyA9IFVvcHQubm9uZVxuICAgIDsgaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gPSBmYWxzZVxuICAgIDsgb25fdXBkYXRlX2hhbmRsZXJzID0gW11cbiAgICA7IG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCA9XG4gICAgICAgIEFycmF5LmNyZWF0ZSB+bGVuOihLaW5kLmluaXRpYWxfbnVtX2NoaWxkcmVuIGtpbmQpICgtMSlcbiAgICAoKiBbbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4XSBoYXMgb25lIGVsZW1lbnQgYmVjYXVzZSBpdCBtYXkgbmVlZCB0byBob2xkXG4gICAgICAgdGhlIGNoaWxkIGluZGV4IG9mIFtwYXJlbnQwXS4gKilcbiAgICA7IG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCA9IFt8IC0xIHxdXG4gICAgOyBmb3JjZV9uZWNlc3NhcnkgPSBmYWxzZVxuICAgIDsgdXNlcl9pbmZvID0gTm9uZVxuICAgIDsgY3JlYXRpb25fYmFja3RyYWNlID1cbiAgICAgICAgKGlmIHN0YXRlLmtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UgdGhlbiBTb21lIChCYWNrdHJhY2UuZ2V0ICgpKSBlbHNlIE5vbmUpXG4gICAgfVxuICBpblxuICBTY29wZS5hZGRfbm9kZSBjcmVhdGVkX2luIHQ7XG4gICgqIFtpbnZhcmlhbnRdIGRvZXMgbm90IHlldCBob2xkIGhlcmUgYmVjYXVzZSBtYW55IHVzZXMgb2YgW05vZGUuY3JlYXRlXSB1c2UgW2tpbmQgPVxuICAgICBVbmluaXRpYWxpemVkXSwgYW5kIHRoZW4gbXV0YXRlIFt0LmtpbmRdIGxhdGVyLiAqKVxuICB0XG47O1xuXG5sZXQgbWF4X251bV9wYXJlbnRzIHQgPSAxICsgVW5pZm9ybV9hcnJheS5sZW5ndGggdC5wYXJlbnQxX2FuZF9iZXlvbmRcblxubGV0IG1ha2Vfc3BhY2VfZm9yX3BhcmVudF9pZl9uZWNlc3NhcnkgdCA9XG4gIGlmIHQubnVtX3BhcmVudHMgPSBtYXhfbnVtX3BhcmVudHMgdFxuICB0aGVuIChcbiAgICBsZXQgbmV3X21heF9udW1fcGFyZW50cyA9IDIgKiBtYXhfbnVtX3BhcmVudHMgdCBpblxuICAgIHQucGFyZW50MV9hbmRfYmV5b25kXG4gICAgPC0gVW5pZm9ybV9hcnJheS5yZWFsbG9jIHQucGFyZW50MV9hbmRfYmV5b25kIH5sZW46KG5ld19tYXhfbnVtX3BhcmVudHMgLSAxKTtcbiAgICB0Lm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleFxuICAgIDwtIEFycmF5LnJlYWxsb2MgdC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggfmxlbjpuZXdfbWF4X251bV9wYXJlbnRzICgtMSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAodC5udW1fcGFyZW50cyA8IG1heF9udW1fcGFyZW50cyB0KVxuOztcblxubGV0IG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSB0IH5jaGlsZF9pbmRleCA9XG4gIGxldCBtYXhfbnVtX2NoaWxkcmVuID0gQXJyYXkubGVuZ3RoIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IGluXG4gIGlmIGNoaWxkX2luZGV4ID49IG1heF9udW1fY2hpbGRyZW5cbiAgdGhlbiAoXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkX2luZGV4ID0gbWF4X251bV9jaGlsZHJlbik7XG4gICAgbGV0IG5ld19tYXhfbnVtX2NoaWxkcmVuID0gSW50Lm1heCAyICgyICogbWF4X251bV9jaGlsZHJlbikgaW5cbiAgICB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleFxuICAgIDwtIEFycmF5LnJlYWxsb2MgdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggfmxlbjpuZXdfbWF4X251bV9jaGlsZHJlbiAoLTEpKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkX2luZGV4IDwgQXJyYXkubGVuZ3RoIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4KVxuOztcblxubGV0IHNldF9wYXJlbnQgOiB0eXBlIGEuIGNoaWxkOmEgdCAtPiBwYXJlbnQ6UGFja2VkLnQgVW9wdC50IC0+IHBhcmVudF9pbmRleDppbnQgLT4gdW5pdCA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+cGFyZW50X2luZGV4IC0+XG4gIGlmIHBhcmVudF9pbmRleCA9IDBcbiAgdGhlbiBjaGlsZC5wYXJlbnQwIDwtIHBhcmVudFxuICBlbHNlIFVuaWZvcm1fYXJyYXkuc2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkgcGFyZW50XG47O1xuXG5sZXQgbGlua1xuICA6IHR5cGUgYSBiLiBjaGlsZDphIHQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHBhcmVudDpiIHQgLT4gcGFyZW50X2luZGV4OmludCAtPiB1bml0XG4gID1cbiAgZnVuIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4IC0+XG4gIHNldF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQ6KFVvcHQuc29tZSAoUGFja2VkLlQgcGFyZW50KSkgfnBhcmVudF9pbmRleDtcbiAgY2hpbGQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpIDwtIGNoaWxkX2luZGV4O1xuICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleCkgPC0gcGFyZW50X2luZGV4XG47O1xuXG5sZXQgdW5saW5rXG4gIDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gcGFyZW50OmIgdCAtPiBwYXJlbnRfaW5kZXg6aW50IC0+IHVuaXRcbiAgPVxuICBmdW4gfmNoaWxkIH5jaGlsZF9pbmRleCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgc2V0X3BhcmVudCB+Y2hpbGQgfnBhcmVudDpVb3B0Lm5vbmUgfnBhcmVudF9pbmRleDtcbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgY2hpbGQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpIDwtIC0xO1xuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSA8LSAtMSlcbjs7XG5cbmxldCBhZGRfcGFyZW50IDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBwYXJlbnQ6YiB0IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBtYWtlX3NwYWNlX2Zvcl9wYXJlbnRfaWZfbmVjZXNzYXJ5IGNoaWxkO1xuICBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgcGFyZW50IH5jaGlsZF9pbmRleDtcbiAgbGluayB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleDpjaGlsZC5udW1fcGFyZW50cztcbiAgY2hpbGQubnVtX3BhcmVudHMgPC0gY2hpbGQubnVtX3BhcmVudHMgKyAxXG47O1xuXG5sZXQgcmVtb3ZlX3BhcmVudCA6IHR5cGUgYSBiLiBjaGlsZDphIHQgLT4gcGFyZW50OmIgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gdW5pdCA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXggLT5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkLm51bV9wYXJlbnRzID49IDEpO1xuICBsZXQgcGFyZW50X2luZGV4ID0gcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpIGluXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCBwYXJlbnQpIChnZXRfcGFyZW50IGNoaWxkIH5pbmRleDpwYXJlbnRfaW5kZXgpKTtcbiAgbGV0IGxhc3RfcGFyZW50X2luZGV4ID0gY2hpbGQubnVtX3BhcmVudHMgLSAxIGluXG4gIGlmIHBhcmVudF9pbmRleCA8IGxhc3RfcGFyZW50X2luZGV4XG4gIHRoZW4gKFxuICAgIGxldCAoVCBwYXJlbnQpID1cbiAgICAgIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZC5wYXJlbnQxX2FuZF9iZXlvbmQgKGxhc3RfcGFyZW50X2luZGV4IC0gMSkpXG4gICAgaW5cbiAgICBsaW5rXG4gICAgICB+Y2hpbGRcbiAgICAgIH5jaGlsZF9pbmRleDpjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGxhc3RfcGFyZW50X2luZGV4KVxuICAgICAgfnBhcmVudFxuICAgICAgfnBhcmVudF9pbmRleCk7XG4gIHVubGluayB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleDpsYXN0X3BhcmVudF9pbmRleDtcbiAgY2hpbGQubnVtX3BhcmVudHMgPC0gY2hpbGQubnVtX3BhcmVudHMgLSAxXG47O1xuXG5sZXQgc3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZCBwYXJlbnQgfmNoaWxkMSB+Y2hpbGRfaW5kZXgxIH5jaGlsZDIgfmNoaWxkX2luZGV4MiA9XG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIGFzc2VydCAocGFja2VkX3NhbWUgKFQgY2hpbGQxKSAoS2luZC5zbG93X2dldF9jaGlsZCBwYXJlbnQua2luZCB+aW5kZXg6Y2hpbGRfaW5kZXgxKSk7XG4gICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCBjaGlsZDIpIChLaW5kLnNsb3dfZ2V0X2NoaWxkIHBhcmVudC5raW5kIH5pbmRleDpjaGlsZF9pbmRleDIpKSk7XG4gIGxldCBpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxID1cbiAgICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDEpXG4gIGluXG4gIGxldCBpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQyID1cbiAgICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDIpXG4gIGluXG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIGFzc2VydCAoXG4gICAgICBjaGlsZDEubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxKSA9IGNoaWxkX2luZGV4MSk7XG4gICAgYXNzZXJ0IChcbiAgICAgIGNoaWxkMi5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDIpID0gY2hpbGRfaW5kZXgyKSk7XG4gICgqIG5vdyBzdGFydCBzd2FwcGluZyAqKVxuICBjaGlsZDEubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxKSA8LSBjaGlsZF9pbmRleDI7XG4gIGNoaWxkMi5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDIpIDwtIGNoaWxkX2luZGV4MTtcbiAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgxKSA8LSBpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQyO1xuICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDIpIDwtIGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDFcbjs7XG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUGFja2VkLnQgPSBUIDogXyBUeXBlcy5Ob2RlLnQgLT4gdCBbQEB1bmJveGVkXVxuXG4gIGxldCBzZXhwX29mX3QgKFQgdCkgPSB0IHw+IFslc2V4cF9vZjogXyB0XVxuICBsZXQgaW52YXJpYW50IChUIHQpID0gaW52YXJpYW50IGlnbm9yZSB0XG5cbiAgbW9kdWxlIEFzX2xpc3QgKE0gOiBzaWdcbiAgICAgIHZhbCBuZXh0IDogUGFja2VkLnQgLT4gUGFja2VkLnQgVW9wdC50XG4gICAgZW5kKSA9XG4gIHN0cnVjdFxuICAgIHR5cGUgdCA9IFBhY2tlZC50IFVvcHQudFxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgYWMgPSByZWYgaW5pdCBpblxuICAgICAgbGV0IHIgPSByZWYgdCBpblxuICAgICAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgICAgIGxldCBwYWNrZWRfbm9kZSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgICAgIHIgOj0gTS5uZXh0IHBhY2tlZF9ub2RlO1xuICAgICAgICBhYyA6PSBmICFhYyBwYWNrZWRfbm9kZVxuICAgICAgZG9uZTtcbiAgICAgICFhY1xuICAgIDs7XG5cbiAgICBsZXQgaXRlciB0IH5mID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgbiAtPiBmIG4pXG4gICAgbGV0IGludmFyaWFudCB0ID0gaXRlciB0IH5mOmludmFyaWFudFxuICAgIGxldCBsZW5ndGggdCA9IGZvbGQgdCB+aW5pdDowIH5mOihmdW4gbiBfIC0+IG4gKyAxKVxuICAgIGxldCB0b19saXN0IHQgPSBMaXN0LnJldiAoZm9sZCB0IH5pbml0OltdIH5mOihmdW4gYWMgbiAtPiBuIDo6IGFjKSlcbiAgICBsZXQgc2V4cF9vZl90IHQgPSB0b19saXN0IHQgfD4gWyVzZXhwX29mOiBQYWNrZWQudCBsaXN0XVxuICBlbmRcblxuICBsZXQgaXRlcl9kZXNjZW5kYW50c19pbnRlcm5hbCB0cyB+ZiA9XG4gICAgbGV0IHNlZW4gPSBOb2RlX2lkLkhhc2hfc2V0LmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWMgaXRlcl9kZXNjZW5kYW50cyAoVCB0KSA9XG4gICAgICBpZiBub3QgKEhhc2hfc2V0Lm1lbSBzZWVuIHQuaWQpXG4gICAgICB0aGVuIChcbiAgICAgICAgSGFzaF9zZXQuYWRkIHNlZW4gdC5pZDtcbiAgICAgICAgZiAoVCB0KTtcbiAgICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gdCAtPiBpdGVyX2Rlc2NlbmRhbnRzIHQpKVxuICAgIGluXG4gICAgTGlzdC5pdGVyIHRzIH5mOml0ZXJfZGVzY2VuZGFudHM7XG4gICAgc2VlblxuICA7O1xuXG4gIGxldCBpdGVyX2Rlc2NlbmRhbnRzIHRzIH5mID0gaWdub3JlIChpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIHRzIH5mIDogXyBIYXNoX3NldC50KVxuXG4gIG1vZHVsZSBEb3RfdXNlcl9pbmZvID0gc3RydWN0XG4gICAgaW5jbHVkZSBEb3RfdXNlcl9pbmZvXG5cbiAgICBsZXQgZGVmYXVsdCB+bmFtZSB0ID1cbiAgICAgIERvdF91c2VyX2luZm8uZG90XG4gICAgICAgIH5sYWJlbDpbIG5hbWU7IEtpbmQubmFtZSB0LmtpbmQ7IHNwcmludGYgXCJoZWlnaHQ9JWRcIiB0LmhlaWdodCBdXG4gICAgICAgIH5hdHRyaWJ1dGVzOlN0cmluZy5NYXAuZW1wdHlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgYXBwZW5kX3VzZXJfaW5mb19ncmFwaHZpeiAoVCB0KSA9IGFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXogdFxuXG4gIGxldCBwcmludF9ub2RlIG91dCB+bmFtZSB0ID1cbiAgICBsZXQgZGVmYXVsdCA9IERvdF91c2VyX2luZm8uZGVmYXVsdCB+bmFtZSB0IGluXG4gICAgbGV0IGluZm8gPVxuICAgICAgbWF0Y2ggdC51c2VyX2luZm8gd2l0aFxuICAgICAgfCBOb25lIC0+IGRlZmF1bHRcbiAgICAgIHwgU29tZSB1c2VyX2luZm8gLT4gRG90X3VzZXJfaW5mby5hcHBlbmQgZGVmYXVsdCB1c2VyX2luZm9cbiAgICBpblxuICAgIGZwcmludGYgb3V0IFwiJXNcXG5cIiAoRG90X3VzZXJfaW5mby50b19zdHJpbmcgfm5hbWUgKERvdF91c2VyX2luZm8udG9fZG90IGluZm8pKVxuICA7O1xuXG4gIGxldCBzYXZlX2RvdCBvdXQgdHMgPVxuICAgIGxldCBub2RlX25hbWUgPVxuICAgICAgaWYgYW1fcnVubmluZ190ZXN0XG4gICAgICB0aGVuIGZ1biBfIC0+IFwibiMjI1wiXG4gICAgICBlbHNlIGZ1biBub2RlIC0+IFwiblwiIF4gTm9kZV9pZC50b19zdHJpbmcgbm9kZS5pZFxuICAgIGluXG4gICAgZnByaW50ZiBvdXQgXCJkaWdyYXBoIEcge1xcblwiO1xuICAgIGZwcmludGYgb3V0IFwiICByYW5rZGlyID0gQlRcXG5cIjtcbiAgICBsZXQgYmluZF9lZGdlcyA9IHJlZiBbXSBpblxuICAgIGxldCBzZWVuID1cbiAgICAgIGl0ZXJfZGVzY2VuZGFudHNfaW50ZXJuYWwgdHMgfmY6KGZ1biAoVCB0KSAtPlxuICAgICAgICBsZXQgbmFtZSA9IG5vZGVfbmFtZSB0IGluXG4gICAgICAgIHByaW50X25vZGUgb3V0IH5uYW1lIHQ7XG4gICAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGZyb21fKSAtPlxuICAgICAgICAgIGZwcmludGYgb3V0IFwiICAlcyAtPiAlc1xcblwiIChub2RlX25hbWUgZnJvbV8pIG5hbWUpO1xuICAgICAgICBtYXRjaCB0LmtpbmQgd2l0aFxuICAgICAgICB8IEJpbmRfbGhzX2NoYW5nZSBiaW5kIC0+XG4gICAgICAgICAgQmluZC5pdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIGJpbmQgfmY6KGZ1biB0b18gLT5cbiAgICAgICAgICAgIGJpbmRfZWRnZXMgOj0gKFQgdCwgdG9fKSA6OiAhYmluZF9lZGdlcylcbiAgICAgICAgfCBfIC0+ICgpKVxuICAgIGluXG4gICAgTGlzdC5pdGVyICFiaW5kX2VkZ2VzIH5mOihmdW4gKFQgZnJvbSwgVCB0b18pIC0+XG4gICAgICBpZiBIYXNoX3NldC5tZW0gc2VlbiB0b18uaWRcbiAgICAgIHRoZW4gZnByaW50ZiBvdXQgXCIgICVzIC0+ICVzIFtzdHlsZT1kYXNoZWRdXFxuXCIgKG5vZGVfbmFtZSBmcm9tKSAobm9kZV9uYW1lIHRvXykpO1xuICAgIGZwcmludGYgb3V0IFwifVxcbiUhXCJcbiAgOztcblxuICBsZXQgc2F2ZV9kb3RfdG9fZmlsZSBmaWxlIHRzID1cbiAgICBPdXRfY2hhbm5lbC53aXRoX2ZpbGUgZmlsZSB+ZjooZnVuIG91dCAtPiBzYXZlX2RvdCBvdXQgdHMpXG4gIDs7XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIEFzX3JlY29tcHV0ZV9saXN0ID0gTm9kZS5QYWNrZWQuQXNfbGlzdCAoc3RydWN0XG4gICAgbGV0IG5leHQgKE5vZGUuUGFja2VkLlQgbm9kZSkgPSBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXBcbiAgZW5kKVxuXG5tb2R1bGUgTm9kZXNfYnlfaGVpZ2h0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEFzX3JlY29tcHV0ZV9saXN0LnQgVW5pZm9ybV9hcnJheS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgKCogV2UgZGlzcGxheSB0aGUgc21hbGxlc3QgcHJlZml4IG9mIFtub2Rlc19ieV9oZWlnaHRdIHRoYXQgaW5jbHVkZXMgYWxsIG5vZGVzLiAqKVxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBtYXhfbm9uZW1wdHlfaW5kZXggPSByZWYgKC0xKSBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlcmkgdCB+ZjooZnVuIGkgbCAtPiBpZiBVb3B0LmlzX3NvbWUgbCB0aGVuIG1heF9ub25lbXB0eV9pbmRleCA6PSBpKTtcbiAgICBVbmlmb3JtX2FycmF5LnN1YiB0IH5wb3M6MCB+bGVuOighbWF4X25vbmVtcHR5X2luZGV4ICsgMSkgfD4gWyVzZXhwX29mOiB0XVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLlJlY29tcHV0ZV9oZWFwLnQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGVzX2J5X2hlaWdodC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IG1heF9oZWlnaHRfYWxsb3dlZCB0ID0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQgLSAxXG5sZXQgaXNfZW1wdHkgdCA9IHQubGVuZ3RoID0gMFxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmxlbmd0aDpcbiAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgIGxldCBhY3R1YWxfbGVuZ3RoID0gcmVmIDAgaW5cbiAgICAgICAgICAgVW5pZm9ybV9hcnJheS5pdGVyIHQubm9kZXNfYnlfaGVpZ2h0IH5mOihmdW4gbm9kZSAtPlxuICAgICAgICAgICAgIGFjdHVhbF9sZW5ndGggOj0gIWFjdHVhbF9sZW5ndGggKyBBc19yZWNvbXB1dGVfbGlzdC5sZW5ndGggbm9kZSk7XG4gICAgICAgICAgIFsldGVzdF9lcTogaW50XSBsZW5ndGggIWFjdHVhbF9sZW5ndGgpKVxuICAgICAgfmhlaWdodF9sb3dlcl9ib3VuZDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0X2xvd2VyX2JvdW5kIC0+XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9sb3dlcl9ib3VuZCA8PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCk7XG4gICAgICAgICAgIGZvciBoZWlnaHQgPSAwIHRvIGhlaWdodF9sb3dlcl9ib3VuZCAtIDEgZG9cbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0KSlcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+bm9kZXNfYnlfaGVpZ2h0OlxuICAgICAgICAoY2hlY2sgKGZ1biBub2Rlc19ieV9oZWlnaHQgLT5cbiAgICAgICAgICAgVW5pZm9ybV9hcnJheS5pdGVyaSBub2Rlc19ieV9oZWlnaHQgfmY6KGZ1biBoZWlnaHQgbm9kZSAtPlxuICAgICAgICAgICAgIEFzX3JlY29tcHV0ZV9saXN0Lml0ZXIgbm9kZSB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gaGVpZ2h0KTtcbiAgICAgICAgICAgICAgIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKSkpKSkpXG47O1xuXG5sZXQgY3JlYXRlX25vZGVzX2J5X2hlaWdodCB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgVW5pZm9ybV9hcnJheS5jcmVhdGUgfmxlbjoobWF4X2hlaWdodF9hbGxvd2VkICsgMSkgVW9wdC5ub25lXG47O1xuXG5sZXQgc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0IG1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIGlmIGRlYnVnXG4gIHRoZW5cbiAgICBmb3IgaSA9IG1heF9oZWlnaHRfYWxsb3dlZCArIDEgdG8gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQgLSAxIGRvXG4gICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaSkpXG4gICAgZG9uZTtcbiAgbGV0IHNyYyA9IHQubm9kZXNfYnlfaGVpZ2h0IGluXG4gIGxldCBkc3QgPSBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWQgaW5cbiAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgfnNyY1xuICAgIH5zcmNfcG9zOjBcbiAgICB+ZHN0XG4gICAgfmRzdF9wb3M6MFxuICAgIH5sZW46KG1pbiAoVW5pZm9ybV9hcnJheS5sZW5ndGggc3JjKSAoVW5pZm9ybV9hcnJheS5sZW5ndGggZHN0KSk7XG4gIHQubm9kZXNfYnlfaGVpZ2h0IDwtIGRzdDtcbiAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gbWluIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBkc3QpXG47O1xuXG5sZXQgY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICB7IGxlbmd0aCA9IDBcbiAgOyBoZWlnaHRfbG93ZXJfYm91bmQgPSBtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxXG4gIDsgbm9kZXNfYnlfaGVpZ2h0ID0gY3JlYXRlX25vZGVzX2J5X2hlaWdodCB+bWF4X2hlaWdodF9hbGxvd2VkXG4gIH1cbjs7XG5cbmxldCBzZXRfbmV4dCAocHJldiA6IE5vZGUuUGFja2VkLnQgVW9wdC50KSB+bmV4dCA9XG4gIGlmIFVvcHQuaXNfc29tZSBwcmV2XG4gIHRoZW4gKFxuICAgIGxldCAoVCBwcmV2KSA9IFVvcHQudW5zYWZlX3ZhbHVlIHByZXYgaW5cbiAgICBwcmV2Lm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gbmV4dClcbjs7XG5cbmxldCBzZXRfcHJldiAobmV4dCA6IE5vZGUuUGFja2VkLnQgVW9wdC50KSB+cHJldiA9XG4gIGlmIFVvcHQuaXNfc29tZSBuZXh0XG4gIHRoZW4gKFxuICAgIGxldCAoVCBuZXh0KSA9IFVvcHQudW5zYWZlX3ZhbHVlIG5leHQgaW5cbiAgICBuZXh0LnByZXZfaW5fcmVjb21wdXRlX2hlYXAgPC0gcHJldilcbjs7XG5cbmxldCBsaW5rICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBsZXQgaGVpZ2h0ID0gbm9kZS5oZWlnaHQgaW5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gIG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDwtIGhlaWdodDtcbiAgbGV0IG5leHQgPSBVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgaW5cbiAgbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIDwtIG5leHQ7XG4gIHNldF9wcmV2IG5leHQgfnByZXY6KFVvcHQuc29tZSAoTm9kZS5QYWNrZWQuVCBub2RlKSk7XG4gIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgKFVvcHQuc29tZSAoTm9kZS5QYWNrZWQuVCBub2RlKSlcbjs7XG5cbmxldCB1bmxpbmsgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGxldCBwcmV2ID0gbm9kZS5wcmV2X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gIGxldCBuZXh0ID0gbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gIGlmIHBoeXNfc2FtZVxuICAgICAgIChVb3B0LnNvbWUgbm9kZSlcbiAgICAgICAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApXG4gIHRoZW4gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIG5leHQ7XG4gIHNldF9wcmV2IG5leHQgfnByZXY7XG4gIHNldF9uZXh0IHByZXYgfm5leHQ7XG4gIG5vZGUucHJldl9pbl9yZWNvbXB1dGVfaGVhcCA8LSBVb3B0Lm5vbmVcbjs7XG5cbigqIFdlIGRvbid0IHNldCBbbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwXSBoZXJlLCBidXQgcmF0aGVyIGFmdGVyIGNhbGxpbmcgW3VubGlua10uICopXG5cbmxldCBhZGQgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGlmIGRlYnVnICYmIChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgfHwgbm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImluY29ycmVjdCBhdHRlbXB0IHRvIGFkZCBub2RlIHRvIHJlY29tcHV0ZSBoZWFwXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm9kZS5oZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICBsZXQgaGVpZ2h0ID0gbm9kZS5oZWlnaHQgaW5cbiAgaWYgaGVpZ2h0IDwgdC5oZWlnaHRfbG93ZXJfYm91bmQgdGhlbiB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBoZWlnaHQ7XG4gIGxpbmsgdCBub2RlO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCByZW1vdmUgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGlmIGRlYnVnICYmICgobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpKSB8fCBOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiaW5jb3JyZWN0IFtyZW1vdmVdIG9mIG5vZGUgZnJvbSByZWNvbXB1dGUgaGVhcFwiXG4gICAgICBub2RlXG4gICAgICBbJXNleHBfb2Y6IF8gTm9kZS50XTtcbiAgdW5saW5rIHQgbm9kZTtcbiAgbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIDwtIFVvcHQubm9uZTtcbiAgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gLTE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMVxuOztcblxubGV0IGluY3JlYXNlX2hlaWdodCAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChub2RlLmhlaWdodCA+IG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKTtcbiAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgICBhc3NlcnQgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSkpO1xuICB1bmxpbmsgdCBub2RlO1xuICBsaW5rIHQgbm9kZVxuOztcblxubGV0IG1pbl9oZWlnaHQgdCA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0XG4gIGVsc2UgKFxuICAgIGxldCBub2Rlc19ieV9oZWlnaHQgPSB0Lm5vZGVzX2J5X2hlaWdodCBpblxuICAgIHdoaWxlIFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgbm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kKSBkb1xuICAgICAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gdC5oZWlnaHRfbG93ZXJfYm91bmQgKyAxXG4gICAgZG9uZSk7XG4gIHQuaGVpZ2h0X2xvd2VyX2JvdW5kXG47O1xuXG5sZXQgcmVtb3ZlX21pbiB0IDogTm9kZS5QYWNrZWQudCA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IG5vZGVzX2J5X2hlaWdodCA9IHQubm9kZXNfYnlfaGVpZ2h0IGluXG4gIGxldCBub2RlID0gcmVmIChVbmlmb3JtX2FycmF5LmdldCBub2Rlc19ieV9oZWlnaHQgdC5oZWlnaHRfbG93ZXJfYm91bmQpIGluXG4gIHdoaWxlIFVvcHQuaXNfbm9uZSAhbm9kZSBkb1xuICAgIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIHQuaGVpZ2h0X2xvd2VyX2JvdW5kICsgMTtcbiAgICBpZiBkZWJ1ZyAmJiB0LmhlaWdodF9sb3dlcl9ib3VuZCA+PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUmVjb21wdXRlX2hlYXAucmVtb3ZlX21pbiB1bmV4cGVjdGVkbHkgcmVhY2hlZCBlbmQgb2YgaGVhcFwiXG4gICAgICAgIHRcbiAgICAgICAgWyVzZXhwX29mOiB0XTtcbiAgICBub2RlIDo9IFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZFxuICBkb25lO1xuICBsZXQgKFQgbm9kZSkgPSBVb3B0LnVuc2FmZV92YWx1ZSAhbm9kZSBpblxuICBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBsZXQgbmV4dCA9IG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICBVbmlmb3JtX2FycmF5LnNldCB0Lm5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZCBuZXh0O1xuICBzZXRfcHJldiBuZXh0IH5wcmV2OlVvcHQubm9uZTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBub2RlLnByZXZfaW5fcmVjb21wdXRlX2hlYXApO1xuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gVW9wdC5ub25lO1xuICBUIG5vZGVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcblxubW9kdWxlIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QgPSBOb2RlLlBhY2tlZC5Bc19saXN0IChzdHJ1Y3RcbiAgICBsZXQgbmV4dCAoTm9kZS5QYWNrZWQuVCBub2RlKSA9IG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXG4gIGVuZClcblxubW9kdWxlIE5vZGVzX2J5X2hlaWdodCA9IHN0cnVjdFxuICB0eXBlIHQgPSBBc19hZGp1c3RfaGVpZ2h0c19saXN0LnQgVW5pZm9ybV9hcnJheS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICBsZXQgbWF4X25vbmVtcHR5X2luZGV4ID0gcmVmICgtMSkgaW5cbiAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIHQgfmY6KGZ1biBpIGwgLT4gaWYgVW9wdC5pc19zb21lIGwgdGhlbiBtYXhfbm9uZW1wdHlfaW5kZXggOj0gaSk7XG4gICAgVW5pZm9ybV9hcnJheS5zdWIgdCB+cG9zOjAgfmxlbjooIW1heF9ub25lbXB0eV9pbmRleCArIDEpIHw+IFslc2V4cF9vZjogdF1cbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgVW5pZm9ybV9hcnJheS5pdGVyaSB0IH5mOihmdW4gaGVpZ2h0IG5vZGVzIC0+XG4gICAgICAgIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QuaW52YXJpYW50IG5vZGVzO1xuICAgICAgICBBc19hZGp1c3RfaGVpZ2h0c19saXN0Lml0ZXIgbm9kZXMgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgICAgICAgIGFzc2VydCAobm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IGhlaWdodCk7XG4gICAgICAgICAgYXNzZXJ0IChub2RlLmhlaWdodCA+IG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXApO1xuICAgICAgICAgIGlmIE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZVxuICAgICAgICAgIHRoZW4gYXNzZXJ0IChub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXApKSkpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgICBVbmlmb3JtX2FycmF5LmNyZWF0ZSB+bGVuOihtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxKSBVb3B0Lm5vbmVcbiAgOztcblxuICBsZXQgbGVuZ3RoIHQgPVxuICAgIGxldCByID0gcmVmIDAgaW5cbiAgICBVbmlmb3JtX2FycmF5Lml0ZXIgdCB+ZjooZnVuIG5vZGUgLT4gciA6PSAhciArIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QubGVuZ3RoIG5vZGUpO1xuICAgICFyXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gVHlwZXMuQWRqdXN0X2hlaWdodHNfaGVhcC50ID1cbiAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgaGVpZ2h0X2xvd2VyX2JvdW5kIDogaW50XG4gIDsgbXV0YWJsZSBtYXhfaGVpZ2h0X3NlZW4gOiBpbnRcbiAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGVzX2J5X2hlaWdodC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcbmxldCBtYXhfaGVpZ2h0X2FsbG93ZWQgdCA9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0IC0gMVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmxlbmd0aDpcbiAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+IGFzc2VydCAobGVuZ3RoID0gTm9kZXNfYnlfaGVpZ2h0Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCkpKVxuICAgICAgfmhlaWdodF9sb3dlcl9ib3VuZDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0X2xvd2VyX2JvdW5kIC0+XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9sb3dlcl9ib3VuZCA8PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCk7XG4gICAgICAgICAgIGZvciBoZWlnaHQgPSAwIHRvIGhlaWdodF9sb3dlcl9ib3VuZCAtIDEgZG9cbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0KSlcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+bWF4X2hlaWdodF9zZWVuOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfaGVpZ2h0X3NlZW4gLT5cbiAgICAgICAgICAgYXNzZXJ0IChtYXhfaGVpZ2h0X3NlZW4gPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobWF4X2hlaWdodF9zZWVuIDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KSkpXG4gICAgICB+bm9kZXNfYnlfaGVpZ2h0OihjaGVjayBOb2Rlc19ieV9oZWlnaHQuaW52YXJpYW50KSlcbjs7XG5cbmxldCBjcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIHsgbGVuZ3RoID0gMFxuICA7IGhlaWdodF9sb3dlcl9ib3VuZCA9IG1heF9oZWlnaHRfYWxsb3dlZCArIDFcbiAgOyBtYXhfaGVpZ2h0X3NlZW4gPSAwXG4gIDsgbm9kZXNfYnlfaGVpZ2h0ID0gTm9kZXNfYnlfaGVpZ2h0LmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkXG4gIH1cbjs7XG5cbmxldCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQgbWF4X2hlaWdodF9hbGxvd2VkID1cbiAgaWYgbWF4X2hlaWdodF9hbGxvd2VkIDwgdC5tYXhfaGVpZ2h0X3NlZW5cbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJjYW5ub3Qgc2V0X21heF9oZWlnaHRfYWxsb3dlZCBsZXNzIHRoYW4gdGhlIG1heCBoZWlnaHQgYWxyZWFkeSBzZWVuXCJcbiAgICAgIChtYXhfaGVpZ2h0X2FsbG93ZWQsIGBtYXhfaGVpZ2h0X3NlZW4gdC5tYXhfaGVpZ2h0X3NlZW4pXG4gICAgICBbJXNleHBfb2Y6IGludCAqIFsgYG1heF9oZWlnaHRfc2VlbiBvZiBpbnQgXV07XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChpc19lbXB0eSB0KTtcbiAgdC5ub2Rlc19ieV9oZWlnaHQgPC0gTm9kZXNfYnlfaGVpZ2h0LmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkXG47O1xuXG5sZXQgYWRkX3VubGVzc19tZW0gKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGlmIG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSAtMVxuICB0aGVuIChcbiAgICBsZXQgaGVpZ2h0ID0gbm9kZS5oZWlnaHQgaW5cbiAgICAoKiBXZSBwcm9jZXNzIG5vZGVzIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgcHJlLWFkanVzdGVkIGhlaWdodCwgc28gaXQgaXMgYSBidWcgaWYgd2VcbiAgICAgICBldmVyIHRyeSB0byBhZGQgYSBub2RlIHRoYXQgd291bGQgdmlvbGF0ZSB0aGF0LiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChoZWlnaHQgPj0gdC5oZWlnaHRfbG93ZXJfYm91bmQpO1xuICAgICgqIFdoZW5ldmVyIHdlIHNldCBhIG5vZGUncyBoZWlnaHQsIHdlIHVzZSBbc2V0X2hlaWdodF0sIHdoaWNoIGVuZm9yY2VzIHRoaXMuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gICAgbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSBoZWlnaHQ7XG4gICAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxO1xuICAgIG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodDtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0IChVb3B0LnNvbWUgKE5vZGUuUGFja2VkLlQgbm9kZSkpKVxuOztcblxubGV0IHJlbW92ZV9taW5fZXhuIHQgOiBOb2RlLlBhY2tlZC50ID1cbiAgaWYgZGVidWcgJiYgaXNfZW1wdHkgdFxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJBZGp1c3RfaGVpZ2h0c19oZWFwLnJlbW92ZV9taW4gb2YgZW1wdHkgaGVhcFwiIHQgWyVzZXhwX29mOiB0XTtcbiAgbGV0IHIgPSByZWYgdC5oZWlnaHRfbG93ZXJfYm91bmQgaW5cbiAgd2hpbGUgVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCAhcikgZG9cbiAgICBpbmNyIHJcbiAgZG9uZTtcbiAgbGV0IGhlaWdodCA9ICFyIGluXG4gIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIGhlaWdodDtcbiAgbGV0IChUIG5vZGUpID0gVW9wdC51bnNhZmVfdmFsdWUgKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQpIGluXG4gIG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gLTE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCBub2RlLm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcDtcbiAgbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gVW9wdC5ub25lO1xuICBUIG5vZGVcbjs7XG5cbmxldCBzZXRfaGVpZ2h0IHQgKG5vZGUgOiBfIE5vZGUudCkgaGVpZ2h0ID1cbiAgaWYgaGVpZ2h0ID4gdC5tYXhfaGVpZ2h0X3NlZW5cbiAgdGhlbiAoXG4gICAgdC5tYXhfaGVpZ2h0X3NlZW4gPC0gaGVpZ2h0O1xuICAgIGlmIGhlaWdodCA+IG1heF9oZWlnaHRfYWxsb3dlZCB0XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJub2RlIHdpdGggdG9vIGxhcmdlIGhlaWdodFwiXG4gICAgICAgIChgSGVpZ2h0IGhlaWdodCwgYE1heCAobWF4X2hlaWdodF9hbGxvd2VkIHQpKVxuICAgICAgICBbJXNleHBfb2Y6IFsgYEhlaWdodCBvZiBpbnQgXSAqIFsgYE1heCBvZiBpbnQgXV0pO1xuICBub2RlLmhlaWdodCA8LSBoZWlnaHRcbjs7XG5cbmxldCBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50IHQgfm9yaWdpbmFsX2NoaWxkIH5vcmlnaW5hbF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgY2hpbGQpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgaWYgTm9kZS5zYW1lIHBhcmVudCBvcmlnaW5hbF9jaGlsZFxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImFkZGluZyBlZGdlIG1hZGUgZ3JhcGggY3ljbGljXCJcbiAgICAgIChgY2hpbGQgb3JpZ2luYWxfY2hpbGQsIGBwYXJlbnQgb3JpZ2luYWxfcGFyZW50KVxuICAgICAgWyVzZXhwX29mOiBbIGBjaGlsZCBvZiBfIE5vZGUudCBdICogWyBgcGFyZW50IG9mIF8gTm9kZS50IF1dO1xuICBpZiBjaGlsZC5oZWlnaHQgPj0gcGFyZW50LmhlaWdodFxuICB0aGVuIChcbiAgICBhZGRfdW5sZXNzX21lbSB0IHBhcmVudDtcbiAgICAoKiBXZSBzZXQgW3BhcmVudC5oZWlnaHRdIGFmdGVyIGFkZGluZyBbcGFyZW50XSB0byB0aGUgaGVhcCwgc28gdGhhdCBbcGFyZW50XSBnb2VzXG4gICAgICAgaW4gdGhlIGhlYXAgd2l0aCBpdHMgcHJlLWFkanVzdGVkIGhlaWdodC4gKilcbiAgICBzZXRfaGVpZ2h0IHQgcGFyZW50IChjaGlsZC5oZWlnaHQgKyAxKSlcbjs7XG5cbmxldCBhZGp1c3RfaGVpZ2h0c1xuICAgICAgKHR5cGUgYSBiKVxuICAgICAgdFxuICAgICAgcmVjb21wdXRlX2hlYXBcbiAgICAgIH5jaGlsZDoob3JpZ2luYWxfY2hpbGQgOiBhIE5vZGUudClcbiAgICAgIH5wYXJlbnQ6KG9yaWdpbmFsX3BhcmVudCA6IGIgTm9kZS50KVxuICA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChpc19lbXB0eSB0KTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG9yaWdpbmFsX2NoaWxkLmhlaWdodCA+PSBvcmlnaW5hbF9wYXJlbnQuaGVpZ2h0KTtcbiAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gb3JpZ2luYWxfcGFyZW50LmhlaWdodDtcbiAgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudFxuICAgIHRcbiAgICB+b3JpZ2luYWxfY2hpbGRcbiAgICB+b3JpZ2luYWxfcGFyZW50XG4gICAgfmNoaWxkOm9yaWdpbmFsX2NoaWxkXG4gICAgfnBhcmVudDpvcmlnaW5hbF9wYXJlbnQ7XG4gIHdoaWxlIGxlbmd0aCB0ID4gMCBkb1xuICAgIGxldCAoVCBjaGlsZCkgPSByZW1vdmVfbWluX2V4biB0IGluXG4gICAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBjaGlsZFxuICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuaW5jcmVhc2VfaGVpZ2h0IHJlY29tcHV0ZV9oZWFwIGNoaWxkO1xuICAgIGlmIGNoaWxkLm51bV9wYXJlbnRzID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IChUIHBhcmVudCkgPSBVb3B0LnZhbHVlX2V4biBjaGlsZC5wYXJlbnQwIGluXG4gICAgICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50IHQgfm9yaWdpbmFsX2NoaWxkIH5vcmlnaW5hbF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQ7XG4gICAgICBmb3IgcGFyZW50X2luZGV4ID0gMSB0byBjaGlsZC5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgICAgbGV0IChUIHBhcmVudCkgPVxuICAgICAgICAgIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZC5wYXJlbnQxX2FuZF9iZXlvbmQgKHBhcmVudF9pbmRleCAtIDEpKVxuICAgICAgICBpblxuICAgICAgICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50IHQgfm9yaWdpbmFsX2NoaWxkIH5vcmlnaW5hbF9wYXJlbnQgfmNoaWxkIH5wYXJlbnRcbiAgICAgIGRvbmUpO1xuICAgIG1hdGNoIGNoaWxkLmtpbmQgd2l0aFxuICAgIHwgQmluZF9saHNfY2hhbmdlIHsgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzOyBfIH0gLT5cbiAgICAgIGxldCByID0gcmVmIGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyBpblxuICAgICAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgICAgIGxldCAoVCBub2RlX29uX3JocykgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgICAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlX29uX3Joc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudFxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgfm9yaWdpbmFsX2NoaWxkXG4gICAgICAgICAgICB+b3JpZ2luYWxfcGFyZW50XG4gICAgICAgICAgICB+Y2hpbGRcbiAgICAgICAgICAgIH5wYXJlbnQ6bm9kZV9vbl9yaHNcbiAgICAgIGRvbmVcbiAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGlzX2VtcHR5IHQpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAob3JpZ2luYWxfY2hpbGQuaGVpZ2h0IDwgb3JpZ2luYWxfcGFyZW50LmhlaWdodClcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQWN0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLkFsYXJtX3ZhbHVlLkFjdGlvbi50ID1cbiAgICB8IEF0IG9mIEF0LnRcbiAgICB8IEF0X2ludGVydmFscyBvZiBBdF9pbnRlcnZhbHMudFxuICAgIHwgU25hcHNob3QgOiBfIFNuYXBzaG90LnQgLT4gdFxuICAgIHwgU3RlcF9mdW5jdGlvbiA6IF8gU3RlcF9mdW5jdGlvbl9ub2RlLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBmdW5jdGlvblxuICAgIHwgQXQgYXQgLT4gQXQuaW52YXJpYW50IGF0XG4gICAgfCBBdF9pbnRlcnZhbHMgYXRfaW50ZXJ2YWxzIC0+IEF0X2ludGVydmFscy5pbnZhcmlhbnQgYXRfaW50ZXJ2YWxzXG4gICAgfCBTbmFwc2hvdCBzbmFwc2hvdCAtPiBTbmFwc2hvdC5pbnZhcmlhbnQgaWdub3JlIHNuYXBzaG90XG4gICAgfCBTdGVwX2Z1bmN0aW9uIHN0ZXBfZnVuY3Rpb25fbm9kZSAtPlxuICAgICAgU3RlcF9mdW5jdGlvbl9ub2RlLmludmFyaWFudCBpZ25vcmUgc3RlcF9mdW5jdGlvbl9ub2RlXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gVHlwZXMuQWxhcm1fdmFsdWUudCA9XG4gIHsgYWN0aW9uIDogQWN0aW9uLnRcbiAgOyAoKiBbbmV4dF9maXJlZF0gc2luZ2x5IGxpbmtzIGFsbCBhbGFybSB2YWx1ZXMgdGhhdCBmaXJlIGR1cmluZyBhIHNpbmdsZSBjYWxsIHRvXG4gICAgICAgW2FkdmFuY2VfY2xvY2tdLiAqKVxuICAgIG11dGFibGUgbmV4dF9maXJlZCA6ICh0IFVvcHQudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyIH5hY3Rpb246KGNoZWNrIEFjdGlvbi5pbnZhcmlhbnQpIH5uZXh0X2ZpcmVkOmlnbm9yZSlcbjs7XG5cbmxldCBjcmVhdGUgYWN0aW9uID0geyBhY3Rpb247IG5leHRfZmlyZWQgPSBVb3B0Lm5vbmUgfVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbmZpZ19pbnRmXG5cbm1vZHVsZSBEZWZhdWx0ICgpID0gc3RydWN0XG4gIGxldCBiaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzID0gdHJ1ZVxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlclxuXG5tb2R1bGUgUGFja2VkXyA9IHN0cnVjdFxuICBpbmNsdWRlIFR5cGVzLkludGVybmFsX29ic2VydmVyLlBhY2tlZFxuXG4gIGxldCBzZXhwX29mX3QgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID1cbiAgICBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgfD4gWyVzZXhwX29mOiBfIFR5cGVzLk5vZGUudF1cbiAgOztcblxuICBsZXQgcHJldl9pbl9hbGwgKFQgdCkgPSB0LnByZXZfaW5fYWxsXG4gIGxldCBuZXh0X2luX2FsbCAoVCB0KSA9IHQubmV4dF9pbl9hbGxcbiAgbGV0IHNldF9wcmV2X2luX2FsbCAoVCB0MSkgdDIgPSB0MS5wcmV2X2luX2FsbCA8LSB0MlxuICBsZXQgc2V0X25leHRfaW5fYWxsIChUIHQxKSB0MiA9IHQxLm5leHRfaW5fYWxsIDwtIHQyXG5lbmRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLkludGVybmFsX29ic2VydmVyLlN0YXRlLnQgPVxuICAgIHwgQ3JlYXRlZFxuICAgIHwgSW5fdXNlXG4gICAgfCBEaXNhbGxvd2VkXG4gICAgfCBVbmxpbmtlZFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkludGVybmFsX29ic2VydmVyLnQgPVxuICB7ICgqIFN0YXRlIHRyYW5zaXRpb25zOlxuXG4gICAgICAge3ZcbiAgICAgICAgIENyZWF0ZWQgLS0+IEluX3VzZSAtLT4gRGlzYWxsb3dlZCAtLT4gVW5saW5rZWRcbiAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXG4gICAgICAgICAgIFxcLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS9cbiAgICAgICB2fSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiBTdGF0ZS50XG4gIDsgb2JzZXJ2aW5nIDogJ2EgTm9kZS50XG4gIDsgbXV0YWJsZSBvbl91cGRhdGVfaGFuZGxlcnMgOiAnYSBPbl91cGRhdGVfaGFuZGxlci50IGxpc3RcbiAgOyAoKiBbe3ByZXYsbmV4dH1faW5fYWxsXSBkb3VibHkgbGluayBhbGwgb2JzZXJ2ZXJzIGluIFtzdGF0ZS5hbGxfb2JzZXJ2ZXJzXS4gKilcbiAgICBtdXRhYmxlIHByZXZfaW5fYWxsIDogUGFja2VkXy50IFVvcHQudFxuICA7IG11dGFibGUgbmV4dF9pbl9hbGwgOiBQYWNrZWRfLnQgVW9wdC50XG4gIDsgKCogW3twcmV2LG5leHR9X2luX29ic2VydmluZ10gZG91Ymx5IGxpbmsgYWxsIG9ic2VydmVycyBvZiBbb2JzZXJ2aW5nXS4gKilcbiAgICBtdXRhYmxlIHByZXZfaW5fb2JzZXJ2aW5nIDogKCdhIHRbQHNleHAub3BhcXVlXSkgVW9wdC50XG4gIDsgbXV0YWJsZSBuZXh0X2luX29ic2VydmluZyA6ICgnYSB0W0BzZXhwLm9wYXF1ZV0pIFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbnR5cGUgJ2EgaW50ZXJuYWxfb2JzZXJ2ZXIgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbmNyX3N0YXRlIHQgPSB0Lm9ic2VydmluZy5zdGF0ZVxuXG5sZXQgdXNlX2lzX2FsbG93ZWQgdCA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENyZWF0ZWQgfCBJbl91c2UgLT4gdHJ1ZVxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPiBmYWxzZVxuOztcblxubGV0IHNhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5sZXQgc2FtZV9hc19wYWNrZWQgKHQxIDogXyB0KSAoUGFja2VkXy5UIHQyKSA9IHNhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfnN0YXRlOmlnbm9yZVxuICAgICAgfm9ic2VydmluZzooY2hlY2sgKE5vZGUuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH5vbl91cGRhdGVfaGFuZGxlcnM6XG4gICAgICAgIChjaGVjayAoZnVuIG9uX3VwZGF0ZV9oYW5kbGVycyAtPlxuICAgICAgICAgICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgfCBDcmVhdGVkIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICB8IFVubGlua2VkIC0+IGFzc2VydCAoTGlzdC5pc19lbXB0eSBvbl91cGRhdGVfaGFuZGxlcnMpKSlcbiAgICAgIH5wcmV2X2luX2FsbDpcbiAgICAgICAgKGNoZWNrIChmdW4gcHJldl9pbl9hbGwgLT5cbiAgICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBwcmV2X2luX2FsbCkpO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgcHJldl9pbl9hbGxcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBzYW1lX2FzX3BhY2tlZFxuICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4biAoUGFja2VkXy5uZXh0X2luX2FsbCAoVW9wdC52YWx1ZV9leG4gcHJldl9pbl9hbGwpKSkpKSlcbiAgICAgIH5uZXh0X2luX2FsbDpcbiAgICAgICAgKGNoZWNrIChmdW4gbmV4dF9pbl9hbGwgLT5cbiAgICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X2luX2FsbCkpO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9hbGxcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBzYW1lX2FzX3BhY2tlZFxuICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4biAoUGFja2VkXy5wcmV2X2luX2FsbCAoVW9wdC52YWx1ZV9leG4gbmV4dF9pbl9hbGwpKSkpKSlcbiAgICAgIH5wcmV2X2luX29ic2VydmluZzpcbiAgICAgICAgKGNoZWNrIChmdW4gcHJldl9pbl9vYnNlcnZpbmcgLT5cbiAgICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBwcmV2X2luX29ic2VydmluZykpO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgcHJldl9pbl9vYnNlcnZpbmdcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBwaHlzX2VxdWFsXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChuZXh0X2luX29ic2VydmluZyAoVW9wdC52YWx1ZV9leG4gcHJldl9pbl9vYnNlcnZpbmcpKSkpKSlcbiAgICAgIH5uZXh0X2luX29ic2VydmluZzpcbiAgICAgICAgKGNoZWNrIChmdW4gbmV4dF9pbl9vYnNlcnZpbmcgLT5cbiAgICAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X2luX29ic2VydmluZykpO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9vYnNlcnZpbmdcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBwaHlzX2VxdWFsXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChwcmV2X2luX29ic2VydmluZyAoVW9wdC52YWx1ZV9leG4gbmV4dF9pbl9vYnNlcnZpbmcpKSkpKSkpXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDcmVhdGVkIC0+XG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIk9ic2VydmVyLnZhbHVlX2V4biBjYWxsZWQgd2l0aG91dCBzdGFiaWxpemluZ1wiXG4gICAgICB0XG4gICAgICBbJXNleHBfb2Y6IF8gdF1cbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCBhZnRlciBkaXNhbGxvd19mdXR1cmVfdXNlXCJcbiAgICAgIHRcbiAgICAgIFslc2V4cF9vZjogXyB0XVxuICB8IEluX3VzZSAtPlxuICAgIGxldCB1b3B0ID0gdC5vYnNlcnZpbmcudmFsdWVfb3B0IGluXG4gICAgaWYgVW9wdC5pc19ub25lIHVvcHRcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImF0dGVtcHQgdG8gZ2V0IHZhbHVlIG9mIGFuIGludmFsaWQgbm9kZVwiIHQgWyVzZXhwX29mOiBfIHRdO1xuICAgIFVvcHQudW5zYWZlX3ZhbHVlIHVvcHRcbjs7XG5cbmxldCBvbl91cGRhdGVfZXhuIHQgb25fdXBkYXRlX2hhbmRsZXIgPVxuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT5cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIm9uX3VwZGF0ZSBkaXNhbGxvd2VkXCIgdCBbJXNleHBfb2Y6IF8gdF1cbiAgfCBDcmVhdGVkIHwgSW5fdXNlIC0+XG4gICAgdC5vbl91cGRhdGVfaGFuZGxlcnMgPC0gb25fdXBkYXRlX2hhbmRsZXIgOjogdC5vbl91cGRhdGVfaGFuZGxlcnM7XG4gICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgfCBDcmVhdGVkIC0+XG4gICAgICAgKCogV2UnbGwgYnVtcCBbb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnNdIHdoZW4gW3RdIGlzIGFjdHVhbGx5IGFkZGVkIHRvXG4gICAgICAgICAgW29ic2VydmluZy5vYnNlcnZlcnNdIGF0IHRoZSBzdGFydCBvZiB0aGUgbmV4dCBzdGFiaWxpemF0aW9uLiAqKVxuICAgICAgICgpXG4gICAgIHwgSW5fdXNlIC0+XG4gICAgICAgbGV0IG9ic2VydmluZyA9IHQub2JzZXJ2aW5nIGluXG4gICAgICAgb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPC0gb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgKyAxKVxuOztcblxubGV0IHVubGlua19mcm9tX29ic2VydmluZyB0ID1cbiAgbGV0IHByZXYgPSB0LnByZXZfaW5fb2JzZXJ2aW5nIGluXG4gIGxldCBuZXh0ID0gdC5uZXh0X2luX29ic2VydmluZyBpblxuICB0LnByZXZfaW5fb2JzZXJ2aW5nIDwtIFVvcHQubm9uZTtcbiAgdC5uZXh0X2luX29ic2VydmluZyA8LSBVb3B0Lm5vbmU7XG4gIGlmIFVvcHQuaXNfc29tZSBuZXh0IHRoZW4gKFVvcHQudW5zYWZlX3ZhbHVlIG5leHQpLnByZXZfaW5fb2JzZXJ2aW5nIDwtIHByZXY7XG4gIGlmIFVvcHQuaXNfc29tZSBwcmV2IHRoZW4gKFVvcHQudW5zYWZlX3ZhbHVlIHByZXYpLm5leHRfaW5fb2JzZXJ2aW5nIDwtIG5leHQ7XG4gIGxldCBvYnNlcnZpbmcgPSB0Lm9ic2VydmluZyBpblxuICBpZiBwaHlzX2VxdWFsIHQgKFVvcHQudmFsdWVfZXhuIG9ic2VydmluZy5vYnNlcnZlcnMpIHRoZW4gb2JzZXJ2aW5nLm9ic2VydmVycyA8LSBuZXh0O1xuICBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc1xuICA8LSBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVycyAtIExpc3QubGVuZ3RoIHQub25fdXBkYXRlX2hhbmRsZXJzO1xuICB0Lm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBbXVxuOztcblxubGV0IHVubGlua19mcm9tX2FsbCB0ID1cbiAgbGV0IHByZXYgPSB0LnByZXZfaW5fYWxsIGluXG4gIGxldCBuZXh0ID0gdC5uZXh0X2luX2FsbCBpblxuICB0LnByZXZfaW5fYWxsIDwtIFVvcHQubm9uZTtcbiAgdC5uZXh0X2luX2FsbCA8LSBVb3B0Lm5vbmU7XG4gIGlmIFVvcHQuaXNfc29tZSBuZXh0IHRoZW4gUGFja2VkXy5zZXRfcHJldl9pbl9hbGwgKFVvcHQudW5zYWZlX3ZhbHVlIG5leHQpIHByZXY7XG4gIGlmIFVvcHQuaXNfc29tZSBwcmV2IHRoZW4gUGFja2VkXy5zZXRfbmV4dF9pbl9hbGwgKFVvcHQudW5zYWZlX3ZhbHVlIHByZXYpIG5leHRcbjs7XG5cbmxldCB1bmxpbmsgdCA9XG4gIHVubGlua19mcm9tX29ic2VydmluZyB0O1xuICB1bmxpbmtfZnJvbV9hbGwgdFxuOztcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICBpbmNsdWRlIFBhY2tlZF9cblxuICBsZXQgc2V4cF9vZl90IChUIGludGVybmFsX29ic2VydmVyKSA9XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIgfD4gWyVzZXhwX29mOiBfIGludGVybmFsX29ic2VydmVyXVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgKFQgdCkgPSBpbnZhcmlhbnQgaWdub3JlIHRcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgSW50ZXJuYWxfb2JzZXJ2ZXIudCByZWYgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIuaW52YXJpYW50IGludmFyaWFudF9hICF0XG5sZXQgb2JzZXJ2aW5nIHQgPSBJbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgIXRcbmxldCB1c2VfaXNfYWxsb3dlZCB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIudXNlX2lzX2FsbG93ZWQgIXRcbmxldCB2YWx1ZV9leG4gdCA9IEludGVybmFsX29ic2VydmVyLnZhbHVlX2V4biAhdFxubGV0IGluY3Jfc3RhdGUgdCA9IEludGVybmFsX29ic2VydmVyLmluY3Jfc3RhdGUgIXRcblxubGV0IG9uX3VwZGF0ZV9leG4gdCBvbl91cGRhdGVfaGFuZGxlciA9XG4gIEludGVybmFsX29ic2VydmVyLm9uX3VwZGF0ZV9leG4gIXQgb25fdXBkYXRlX2hhbmRsZXJcbjs7XG4iLCIoKiBbU3RhdGVdIGRlZmluZXMgdGhlIGdsb2JhbCBzdGF0ZSBvZiB3aGljaCB0aGVyZSBpcyBvbmUgaW5zdGFuY2UgZm9yIGVhY2ggY2FsbCB0b1xuICAgW0luY3JlbWVudGFsLk1ha2VdLlxuXG4gICBUaGlzIG1vZHVsZSBkb2VzIG5vdCBoYXZlIGFuIG1saSBiZWNhdXNlIGl0IHdvdWxkIGVzc2VudGlhbGx5IGR1cGxpY2F0ZVxuICAgW0luY3JlbWVudGFsLlNdLCBleGNlcHQgYWRkaW5nIGFuIGV4dHJhIFtTdGF0ZS50XSBhcmd1bWVudCB0byBmdW5jdGlvbnMuICopXG5cbm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxuXG50eXBlIHN0YXR1cyA9IFR5cGVzLlN0YXR1cy50ID1cbiAgfCBTdGFiaWxpemluZ1xuICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzXG4gIHwgTm90X3N0YWJpbGl6aW5nXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIG9mIFJhaXNlZF9leG4udFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIE5vZGVfdXBkYXRlID0gT25fdXBkYXRlX2hhbmRsZXIuTm9kZV91cGRhdGVcblxubW9kdWxlIFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuUnVuX29uX3VwZGF0ZV9oYW5kbGVycy50ID0gVCA6ICdhIE5vZGUudCAqICdhIE5vZGVfdXBkYXRlLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgKFQgKG5vZGUsIF9ub2RlX3VwZGF0ZSkgYXMgdCkgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPiBOb2RlLmludmFyaWFudCBpZ25vcmUgbm9kZSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgT25seV9pbl9kZWJ1ZyA9IHN0cnVjdFxuICAoKiBFeHRyYSBzdGF0ZSBrZXB0IG9ubHkgd2hlbiBbZGVidWddIGZvciB0aGUgcHVycG9zZSBvZiB3cml0aW5nIGFzc2VydGlvbnMuICopXG4gIHR5cGUgdCA9IFR5cGVzLk9ubHlfaW5fZGVidWcudCA9XG4gICAgeyBtdXRhYmxlIGN1cnJlbnRseV9ydW5uaW5nX25vZGUgOiBOb2RlLlBhY2tlZC50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgOiBOb2RlLlBhY2tlZC50IGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmN1cnJlbnRseV9ydW5uaW5nX25vZGU6aWdub3JlXG4gICAgICAgIH5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGU6aWdub3JlKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgKCkgPVxuICAgIHsgY3VycmVudGx5X3J1bm5pbmdfbm9kZSA9IE5vbmU7IGV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA9IFtdIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgUGFja2VkX3dlYWtfaGFzaHRibCA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5QYWNrZWRfd2Vha19oYXNodGJsLnQgPSBUIDogKF8sIF8pIFdlYWtfaGFzaHRibC50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5TdGF0ZS50ID1cbiAgeyBtdXRhYmxlIHN0YXR1cyA6IHN0YXR1c1xuICA7IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgOiBib29sXG4gIDsgKCogW3N0YWJpbGl6YXRpb25fbnVtXSBzdGFydHMgYXQgemVybywgYW5kIGlzIGluY3JlbWVudGVkIGF0IHRoZSBlbmQgb2YgZWFjaFxuICAgICAgIHN0YWJpbGl6YXRpb24uICopXG4gICAgbXV0YWJsZSBzdGFiaWxpemF0aW9uX251bSA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyBtdXRhYmxlIGN1cnJlbnRfc2NvcGUgOiBTY29wZS50XG4gIDsgcmVjb21wdXRlX2hlYXAgOiBSZWNvbXB1dGVfaGVhcC50XG4gIDsgYWRqdXN0X2hlaWdodHNfaGVhcCA6IEFkanVzdF9oZWlnaHRzX2hlYXAudFxuICA7ICgqIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0gaG9sZHMgbm9kZXMgdGhhdCBoYXZlIGludmFsaWQgY2hpbGRyZW4gdGhhdCBzaG91bGQgYmVcbiAgICAgICBjb25zaWRlcmVkIGZvciBpbnZhbGlkYXRpb24uICBJdCBpcyBvbmx5IHVzZWQgZHVyaW5nIGdyYXBoIHJlc3RydWN0dXJpbmc6XG4gICAgICAgW2ludmFsaWRhdGVfbm9kZV0gYW5kIFthZGRfcGFyZW50XS4gIE9uY2UgYW4gZWxlbWVudCBpcyBhZGRlZCB0byB0aGUgc3RhY2ssIHdlIHRoZW5cbiAgICAgICBpdGVyYXRlIHVudGlsIGludmFsaWRpdHkgaGFzIHByb3BhZ2F0ZWQgdG8gYWxsIGFuY2VzdG9ycyBhcyBuZWNlc3NhcnksIGFjY29yZGluZyB0b1xuICAgICAgIFtOb2RlLnNob3VsZF9iZV9pbnZhbGlkYXRlZF0uICopXG4gICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgOyAoKiBbbnVtX2FjdGl2ZV9vYnNlcnZlcnNdIGlzIHRoZSBudW1iZXIgb2Ygb2JzZXJ2ZXJzIHdob3NlIHN0YXRlIGlzIFtDcmVhdGVkXSBvclxuICAgICAgIFtJbl91c2VdLiAqKVxuICAgIG11dGFibGUgbnVtX2FjdGl2ZV9vYnNlcnZlcnMgOiBpbnRcbiAgOyAoKiBbYWxsX29ic2VydmVyc10gaXMgdGhlIGRvdWJseS1saW5rZWQgbGlzdCBvZiBhbGwgb2JzZXJ2ZXJzIGluIGVmZmVjdCwgb3IgdGhhdCBoYXZlXG4gICAgICAgYmVlbiBkaXNhbGxvd2VkIHNpbmNlIHRoZSBtb3N0IHJlY2VudCBzdGFydCBvZiBhIHN0YWJpbGl6YXRpb24gLS0gdGhlc2UgaGF2ZVxuICAgICAgIFtzdGF0ZV0gYXMgW0luX3VzZV0gb3IgW0Rpc2FsbG93ZWRdLiAqKVxuICAgIG11dGFibGUgYWxsX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFVvcHQudFxuICA7ICgqIFdlIGVucXVldWUgZmluYWxpemVkIG9ic2VydmVycyBpbiBhIHRocmVhZC1zYWZlIHF1ZXVlLCBmb3IgaGFuZGxpbmcgZHVyaW5nXG4gICAgICAgc3RhYmlsaXphdGlvbi4gIFdlIHVzZSBhIHRocmVhZC1zYWZlIHF1ZXVlIGJlY2F1c2UgT0NhbWwgZmluYWxpemVycyBjYW4gcnVuIGluIGFueVxuICAgICAgIHRocmVhZC4gKilcbiAgICBmaW5hbGl6ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICA7ICgqIFtuZXdfb2JzZXJ2ZXJzXSBob2xkcyBvYnNlcnZlcnMgY3JlYXRlZCBzaW5jZSB0aGUgbW9zdCByZWNlbnQgc3RhcnQgb2YgYVxuICAgICAgIHN0YWJpbGl6YXRpb24gLS0gdGhlc2UgaGF2ZSBbc3RhdGVdIGFzIFtDcmVhdGVkXSBvciBbVW5saW5rZWRdLiAgQXQgdGhlIHN0YXJ0IG9mXG4gICAgICAgc3RhYmlsaXphdGlvbiwgd2UgbGluayBpbnRvIFthbGxfb2JzZXJ2ZXJzXSBhbGwgb2JzZXJ2ZXJzIGluIFtuZXdfb2JzZXJ2ZXJzXSB3aG9zZVxuICAgICAgIHN0YXRlIGlzIFtDcmVhdGVkXSBhbmQgYWRkIHRoZW0gdG8gdGhlIFtvYnNlcnZlcnNdIG9mIHRoZSBub2RlIHRoZXkgYXJlIG9ic2VydmluZy5cbiAgICAgICBXZSBzdHJ1Y3R1cmUgdGhpbmdzIHRoaXMgd2F5IHRvIGFsbG93IG9ic2VydmVycyB0byBiZSBjcmVhdGVkIGR1cmluZyBzdGFiaWxpemF0aW9uXG4gICAgICAgd2hpbGUgcnVubmluZyB1c2VyIGNvZGUgKFttYXBdLCBbYmluZF0sIGV0YyksIGJ1dCB0byBub3QgaGF2ZSB0byBkZWFsIHdpdGggbm9kZXNcbiAgICAgICBiZWNvbWluZyBuZWNlc3NhcnkgYW5kIHRoZSB0aGUgZ3JhcGggY2hhbmdpbmcgZHVyaW5nIHN1Y2ggY29kZS4gKilcbiAgICBuZXdfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFtkaXNhbGxvd2VkX29ic2VydmVyc10gaG9sZHMgYWxsIG9ic2VydmVycyB0aGF0IGhhdmUgYmVlbiBkaXNhbGxvd2VkIHNpbmNlIHRoZSBtb3N0XG4gICAgICAgcmVjZW50IHN0YXJ0IG9mIGEgc3RhYmlsaXphdGlvbiAtLSB0aGVzZSBoYXZlIFtzdGF0ZSA9IERpc2FsbG93ZWRdLiAgQXQgdGhlIHN0YXJ0XG4gICAgICAgb2Ygc3RhYmlsaXphdGlvbiwgdGhlc2UgYXJlIHVubGlua2VkIGZyb20gW2FsbF9vYnNlcnZlcnNdIGFuZCB0aGVpciBzdGF0ZSBpc1xuICAgICAgIGNoYW5nZWQgdG8gW1VubGlua2VkXS4gIFdlIHN0cnVjdHVyZSB0aGluZ3MgdGhpcyB3YXkgdG8gYWxsb3cgdXNlciBjb2RlIHJ1bm5pbmdcbiAgICAgICBkdXJpbmcgc3RhYmlsaXphdGlvbiB0byBjYWxsIFtkaXNhbGxvd19mdXR1cmVfdXNlXSwgYnV0IHRvIG5vdCBoYXZlIHRvIGRlYWwgd2l0aFxuICAgICAgIG5vZGVzIGJlY29taW5nIHVubmVjZXNzYXJ5IGFuZCB0aGUgZ3JhcGggY2hhbmdpbmcgZHVyaW5nIHN1Y2ggY29kZS4gKilcbiAgICBkaXNhbGxvd2VkX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFN0YWNrLnRcbiAgOyAoKiBXZSBkZWxheSBhbGwgW1Zhci5zZXRdIGNhbGxzIHRoYXQgaGFwcGVuIGR1cmluZyBzdGFiaWxpemF0aW9uIHNvIHRoYXQgdGhleSB0YWtlXG4gICAgICAgZWZmZWN0IGFmdGVyIHN0YWJpbGl6YXRpb24uICBBbGwgdmFyaWFibGVzIHNldCBkdXJpbmcgc3RhYmlsaXphdGlvbiBhcmUgcHVzaGVkIG9uXG4gICAgICAgW3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbl0gcmF0aGVyIHRoYW4gc2V0dGluZyB0aGVtLiAgVGhlbiwgYWZ0ZXIgdGhlIGdyYXBoIGhhc1xuICAgICAgIHN0YWJpbGl6ZWQsIHdlIGRvIGFsbCB0aGUgc2V0cywgc28gdGhhdCB0aGV5IHRha2UgZWZmZWN0IGF0IHRoZSBzdGFydCBvZiB0aGUgbmV4dFxuICAgICAgIHN0YWJpbGl6YXRpb24uICopXG4gICAgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDogVmFyLlBhY2tlZC50IFN0YWNrLnRcbiAgOyAoKiBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dIGhhcyBhbGwgbm9kZXMgd2l0aCBoYW5kbGVycyB0byBjb25zaWRlciBydW5uaW5nIGF0IHRoZVxuICAgICAgIGVuZCBvZiB0aGUgbmV4dCBzdGFiaWxpemF0aW9uLiAgQXQgdGhlIGVuZCBvZiBzdGFiaWxpemF0aW9uLCB3ZSBjb25zaWRlciBlYWNoIG5vZGVcbiAgICAgICBpbiBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLCBhbmQgaWYgd2UgZGVjaWRlIHRvIHJ1biBpdHMgb24tdXBkYXRlIGhhbmRsZXJzLFxuICAgICAgIHB1c2ggaXQgb24gW3J1bl9vbl91cGRhdGVfaGFuZGxlcnNdLiAgVGhlbiwgb25jZSB3ZSd2ZSBjb25zaWRlcmVkIGFsbCBub2RlcyBpblxuICAgICAgIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0sIHdlIGl0ZXJhdGUgdGhyb3VnaCBbcnVuX29uX3VwZGF0ZV9oYW5kbGVyc10gYW5kXG4gICAgICAgYWN0dWFsbHkgcnVuIHRoZSBoYW5kbGVycy5cblxuICAgICAgIFRoZXNlIHR3byBwYXNzZXMgYXJlIGVzc2VudGlhbCBmb3IgY29ycmVjdG5lc3MuICBEdXJpbmcgdGhlIGZpcnN0IHBhc3MsIHdlIGhhdmVuJ3RcbiAgICAgICBydW4gYW55IHVzZXIgaGFuZGxlcnMsIHNvIHdlIGtub3cgdGhhdCB0aGUgc3RhdGUgaXMgZXhhY3RseSBhcyBpdCB3YXMgd2hlblxuICAgICAgIHN0YWJpbGl6YXRpb24gZmluaXNoZWQuICBJbiBwYXJ0aWN1bGFyLCB3ZSBrbm93IHRoYXQgaWYgYSBub2RlIGlzIG5lY2Vzc2FyeSwgdGhlblxuICAgICAgIGl0IGhhcyBhIHN0YWJsZSB2YWx1ZTsgb25jZSB1c2VyIGhhbmRsZXJzIHJ1biwgd2UgZG9uJ3Qga25vdyB0aGlzLiAgRHVyaW5nIHRoZVxuICAgICAgIHNlY29uZCBwYXNzLCB1c2VyIGhhbmRsZXJzIGNhbiBtYWtlIGNhbGxzIHRvIGFueSBpbmNyZW1lbnRhbCBmdW5jdGlvbiBleGNlcHQgZm9yXG4gICAgICAgW3N0YWJpbGl6ZV0uICBJbiBwYXJ0aWN1bGFyLCBzb21lIGZ1bmN0aW9ucyBwdXNoIG5vZGVzIG9uXG4gICAgICAgW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXS4gIEJ1dCBubyBmdW5jdGlvbnMgKGV4Y2VwdCBmb3IgW3N0YWJpbGl6ZV0pIG1vZGlmeVxuICAgICAgIFtydW5fb25fdXBkYXRlX2hhbmRsZXJzXS4gKilcbiAgICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICA7IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgOiBSdW5fb25fdXBkYXRlX2hhbmRsZXJzLnQgU3RhY2sudFxuICA7IG11dGFibGUgb25seV9pbl9kZWJ1ZyA6IE9ubHlfaW5fZGVidWcudFxuICA7IHdlYWtfaGFzaHRibHMgOiBQYWNrZWRfd2Vha19oYXNodGJsLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICA7IG11dGFibGUga2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSA6IGJvb2xcbiAgOyAoKiBTdGF0cy4gIFRoZXNlIGFyZSBhbGwgaW5jcmVtZW50ZWQgYXQgdGhlIGFwcHJvcHJpYXRlIHBsYWNlLCBhbmQgbmV2ZXIgZGVjcmVtZW50ZWQuICopXG4gICAgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2NoYW5nZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19jcmVhdGVkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfaW52YWxpZGF0ZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0IDogaW50XG4gIDsgbXV0YWJsZSBudW1fdmFyX3NldHMgOiBpbnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5tb2R1bGUgQ2xvY2sgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuQ2xvY2sudCA9XG4gICAgeyAoKiBXZSB1c2UgW3RpbWluZ193aGVlbF0gZm9yIHRpbWUtYmFzZWQgaW5jcmVtZW50YWxzLiAgW25vd10gaXMgYSB2YXJpYWJsZSBob2xkaW5nXG4gICAgICAgICB0aGUgY3VycmVudCB0aW1lLiAgW2hhbmRsZV9maXJlZF0gaXMgdGhlIGNsb3N1cmUgcGFzc2VkIHRvXG4gICAgICAgICBbVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2tdLiAgSXQgbGlua3MgYWxsIHRoZSBmaXJlZCBhbGFybSB2YWx1ZXMgaW50b1xuICAgICAgICAgW2ZpcmVkX2FsYXJtX3ZhbHVlc10uICBBZnRlciBbVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2tdIHJldHVybnMsIGl0IHRoZW5cbiAgICAgICAgIHdhbGtzIHRocm91Z2ggdGhlIGxpbmtlZCBsaXN0IGFuZCBhY3R1YWxseSBmaXJlcyB0aGVtLiAgVGhpcyB0d28tcGFzcyBhcHByb2FjaCBpc1xuICAgICAgICAgbmVjZXNzYXJ5IGJlY2F1c2Ugb25lIGlzIG5vdCBhbGxvd2VkIHRvIGNhbGwgW1RpbWluZ193aGVlbF0gZnVuY3Rpb25zIGZyb20gdGhlXG4gICAgICAgICBbaGFuZGxlX2ZpcmVkXSB0aGF0IG9uZSBwYXNzZXMgdG8gW1RpbWluZ193aGVlbC5hZHZhbmNlX2Nsb2NrXS4gKilcbiAgICAgIHRpbWluZ193aGVlbCA6IEFsYXJtX3ZhbHVlLnQgVGltaW5nX3doZWVsLnRcbiAgICA7IG5vdyA6IFRpbWVfbnMudCBWYXIudFxuICAgIDsgaGFuZGxlX2ZpcmVkIDogQWxhcm0udCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGZpcmVkX2FsYXJtX3ZhbHVlcyA6IEFsYXJtX3ZhbHVlLnQgVW9wdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfm5vdzpcbiAgICAgICAgICAoY2hlY2sgKGZ1biAobm93IDogXyBWYXIudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuZXF1YWwgbm93LnZhbHVlIChUaW1pbmdfd2hlZWwubm93IHQudGltaW5nX3doZWVsKSkpKVxuICAgICAgICB+aGFuZGxlX2ZpcmVkOmlnbm9yZVxuICAgICAgICB+ZmlyZWRfYWxhcm1fdmFsdWVzOlxuICAgICAgICAgIChjaGVjayAoZnVuIGZpcmVkX2FsYXJtX3ZhbHVlcyAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBmaXJlZF9hbGFybV92YWx1ZXMpKSlcbiAgICAgICAgfnRpbWluZ193aGVlbDooY2hlY2sgKFRpbWluZ193aGVlbC5pbnZhcmlhbnQgQWxhcm1fdmFsdWUuaW52YXJpYW50KSkpXG4gIDs7XG5cbiAgbGV0IGluY3Jfc3RhdGUgdCA9IFZhci5pbmNyX3N0YXRlIHQubm93XG5lbmRcblxubGV0IG5vdyAoY2xvY2sgOiBDbG9jay50KSA9IGNsb2NrLm5vdy52YWx1ZVxubGV0IHRpbWluZ193aGVlbF9sZW5ndGggKGNsb2NrIDogQ2xvY2sudCkgPSBUaW1pbmdfd2hlZWwubGVuZ3RoIGNsb2NrLnRpbWluZ193aGVlbFxubGV0IG51bV9zdGFiaWxpemVzIHQgPSBTdGFiaWxpemF0aW9uX251bS50b19pbnQgdC5zdGFiaWxpemF0aW9uX251bVxubGV0IG1heF9oZWlnaHRfYWxsb3dlZCB0ID0gQWRqdXN0X2hlaWdodHNfaGVhcC5tYXhfaGVpZ2h0X2FsbG93ZWQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG5sZXQgbWF4X2hlaWdodF9zZWVuIHQgPSBBZGp1c3RfaGVpZ2h0c19oZWFwLm1heF9oZWlnaHRfc2VlbiB0LmFkanVzdF9oZWlnaHRzX2hlYXBcblxubGV0IGl0ZXJfb2JzZXJ2ZXJzIHQgfmYgPVxuICBsZXQgciA9IHJlZiB0LmFsbF9vYnNlcnZlcnMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IG9ic2VydmVyID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IEludGVybmFsX29ic2VydmVyLlBhY2tlZC5uZXh0X2luX2FsbCBvYnNlcnZlcjtcbiAgICBmIG9ic2VydmVyXG4gIGRvbmVcbjs7XG5cbmxldCBkaXJlY3RseV9vYnNlcnZlZCB0ID1cbiAgbGV0IHIgOiBOb2RlLlBhY2tlZC50IGxpc3QgcmVmID0gcmVmIFtdIGluXG4gIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biAoVCBpbnRlcm5hbF9vYnNlcnZlcikgLT5cbiAgICByIDo9IFQgaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nIDo6ICFyKTtcbiAgIXJcbjs7XG5cbmxldCBzYXZlX2RvdCB0IG91dCA9IE5vZGUuUGFja2VkLnNhdmVfZG90IG91dCAoZGlyZWN0bHlfb2JzZXJ2ZWQgdClcbmxldCBzYXZlX2RvdF90b19maWxlIHQgZmlsZSA9IE5vZGUuUGFja2VkLnNhdmVfZG90X3RvX2ZpbGUgZmlsZSAoZGlyZWN0bHlfb2JzZXJ2ZWQgdClcbmxldCBpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIHQgfmYgPSBOb2RlLlBhY2tlZC5pdGVyX2Rlc2NlbmRhbnRzIChkaXJlY3RseV9vYnNlcnZlZCB0KSB+ZlxuXG5tb2R1bGUgU3RhdHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG1heF9udW1fcGFyZW50cyA6IGludFxuICAgIDsgcGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyZW50cyA6IChpbnQgKiBQZXJjZW50LnQpIGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBdXG5lbmRcblxubGV0IHN0YXRzIHQgPVxuICBsZXQgbWF4X251bV9wYXJlbnRzID0gcmVmICgtMSkgaW5cbiAgbGV0IG51bV9uZWNlc3Nhcnlfbm9kZXMgPSByZWYgMCBpblxuICBpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgIGluY3IgbnVtX25lY2Vzc2FyeV9ub2RlcztcbiAgICBtYXhfbnVtX3BhcmVudHMgOj0gSW50Lm1heCAhbWF4X251bV9wYXJlbnRzIG5vZGUubnVtX3BhcmVudHMpO1xuICBsZXQgbWF4X251bV9wYXJlbnRzID0gIW1heF9udW1fcGFyZW50cyBpblxuICBsZXQgbnVtX25vZGVzX2J5X251bV9wYXJlbnRzID0gQXJyYXkuY3JlYXRlIH5sZW46KG1heF9udW1fcGFyZW50cyArIDEpIDAgaW5cbiAgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICBsZXQgbnVtX3BhcmVudHMgPSBub2RlLm51bV9wYXJlbnRzIGluXG4gICAgbnVtX25vZGVzX2J5X251bV9wYXJlbnRzLihudW1fcGFyZW50cykgPC0gbnVtX25vZGVzX2J5X251bV9wYXJlbnRzLihudW1fcGFyZW50cykgKyAxKTtcbiAgbGV0IHBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhcmVudHMgPVxuICAgIEFycmF5LmZvbGRpIG51bV9ub2Rlc19ieV9udW1fcGFyZW50cyB+aW5pdDpbXSB+ZjooZnVuIGkgYWMgbnVtX25vZGVzIC0+XG4gICAgICBpZiBudW1fbm9kZXMgPSAwXG4gICAgICB0aGVuIGFjXG4gICAgICBlbHNlIChpLCBQZXJjZW50Lm9mX211bHQgKGZsb2F0IG51bV9ub2RlcyAvLiBmbG9hdCAhbnVtX25lY2Vzc2FyeV9ub2RlcykpIDo6IGFjKVxuICAgIHw+IExpc3QucmV2XG4gIGluXG4gIHsgU3RhdHMubWF4X251bV9wYXJlbnRzOyBwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXJlbnRzIH1cbjs7XG5cbmxldCBhbV9zdGFiaWxpemluZyB0ID1cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgU3RhYmlsaXppbmcgLT4gdHJ1ZVxuICB8IE5vdF9zdGFiaWxpemluZyAtPiBmYWxzZVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgUmFpc2VkX2V4bi5yZXJhaXNlX3dpdGhfbWVzc2FnZVxuICAgICAgcmFpc2VkX2V4blxuICAgICAgXCJjYW5ub3QgY2FsbCBhbV9zdGFiaWxpemluZyAtLSBzdGFiaWxpemUgcHJldmlvdXNseSByYWlzZWRcIlxuOztcblxubGV0IGludmFyaWFudCB0ID1cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBfIC0+ICgpXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBTdGFiaWxpemluZyB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBpdGVyX29ic2VydmVycyB0IH5mOihmdW4gKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpIC0+XG4gICAgICAgIChtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+XG4gICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICBcIm1lbWJlciBvZiBhbGxfb2JzZXJ2ZXJzIHdpdGggdW5leHBlY3RlZCBzdGF0ZVwiXG4gICAgICAgICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXJcbiAgICAgICAgICAgICBbJXNleHBfb2Y6IF8gSW50ZXJuYWxfb2JzZXJ2ZXIudF0pO1xuICAgICAgICBJbnRlcm5hbF9vYnNlcnZlci5pbnZhcmlhbnQgaWdub3JlIGludGVybmFsX29ic2VydmVyKTtcbiAgICAgIGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgIE5vZGUuaW52YXJpYW50IGlnbm9yZSBub2RlO1xuICAgICAgICBpZiBub3QgKGFtX3N0YWJpbGl6aW5nIHQpIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbm9kZS5vbGRfdmFsdWVfb3B0KTtcbiAgICAgICAgYXNzZXJ0IChub2RlLmhlaWdodCA8PSBBZGp1c3RfaGVpZ2h0c19oZWFwLm1heF9oZWlnaHRfc2VlbiB0LmFkanVzdF9oZWlnaHRzX2hlYXApKTtcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9hbGxvd2VkIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxuICAgICAgICA9IFJlY29tcHV0ZV9oZWFwLm1heF9oZWlnaHRfYWxsb3dlZCB0LnJlY29tcHV0ZV9oZWFwKTtcbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5zdGF0dXM6aWdub3JlXG4gICAgICAgIH5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzOmlnbm9yZVxuICAgICAgICB+c3RhYmlsaXphdGlvbl9udW06KGNoZWNrIFN0YWJpbGl6YXRpb25fbnVtLmludmFyaWFudClcbiAgICAgICAgfmN1cnJlbnRfc2NvcGU6XG4gICAgICAgICAgKGNoZWNrIChmdW4gY3VycmVudF9zY29wZSAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgY3VycmVudF9zY29wZSBTY29wZS50b3ApKSlcbiAgICAgICAgfnJlY29tcHV0ZV9oZWFwOihjaGVjayBSZWNvbXB1dGVfaGVhcC5pbnZhcmlhbnQpXG4gICAgICAgIH5hZGp1c3RfaGVpZ2h0c19oZWFwOlxuICAgICAgICAgIChjaGVjayAoZnVuIGFkanVzdF9oZWlnaHRzX2hlYXAgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKEFkanVzdF9oZWlnaHRzX2hlYXAubGVuZ3RoIGFkanVzdF9oZWlnaHRzX2hlYXAgPSAwKTtcbiAgICAgICAgICAgICBBZGp1c3RfaGVpZ2h0c19oZWFwLmludmFyaWFudCBhZGp1c3RfaGVpZ2h0c19oZWFwKSlcbiAgICAgICAgfnByb3BhZ2F0ZV9pbnZhbGlkaXR5OlxuICAgICAgICAgIChjaGVjayAoZnVuIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChTdGFjay5pc19lbXB0eSBwcm9wYWdhdGVfaW52YWxpZGl0eSkpKVxuICAgICAgICB+bnVtX2FjdGl2ZV9vYnNlcnZlcnM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbnVtX2FjdGl2ZV9vYnNlcnZlcnMgLT4gYXNzZXJ0IChudW1fYWN0aXZlX29ic2VydmVycyA+PSAwKSkpXG4gICAgICAgIH5hbGxfb2JzZXJ2ZXJzOmlnbm9yZVxuICAgICAgICB+ZmluYWxpemVkX29ic2VydmVyczppZ25vcmVcbiAgICAgICAgfm5ld19vYnNlcnZlcnM6XG4gICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgKFN0YWNrLmludmFyaWFudCAoZnVuIHBhY2tlZCAtPlxuICAgICAgICAgICAgICAgIEludGVybmFsX29ic2VydmVyLlBhY2tlZC5pbnZhcmlhbnQgcGFja2VkO1xuICAgICAgICAgICAgICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICAgICAgICAgICAgICAoKiBXaGVuIGFuIG9ic2VydmVyIGlzIGFkZGVkIHRvIFtuZXdfb2JzZXJ2ZXJzXSwgaXQgaGFzIFtzdGF0ZSA9IENyZWF0ZWRdLlxuICAgICAgICAgICAgICAgICAgIFRoZSBvbmx5IHBvc3NpYmxlIHRyYW5zaXRpb25zIGZyb20gdGhlcmUgYXJlIHRvIFtVbmxpbmtlZF0gb3IgdG9cbiAgICAgICAgICAgICAgICAgICBbSW5fdXNlXSwgd2hpY2ggYWxzbyByZW1vdmVzIGl0IGZyb20gW25ld19vYnNlcnZlcnNdLCBuZXZlciB0byBiZSBhZGRlZFxuICAgICAgICAgICAgICAgICAgIGFnYWluLiAgVGh1cyBpdCBpcyBpbXBvc3NpYmxlIGZvciBhbiBvYnNlcnZlciBpbiBbbmV3X29ic2VydmVyc10gdG8gYmVcbiAgICAgICAgICAgICAgICAgICBbSW5fdXNlXSBvciBbRGlzYWxsb3dlZF0uICopXG4gICAgICAgICAgICAgICAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+IGFzc2VydCBmYWxzZSkpKVxuICAgICAgICB+ZGlzYWxsb3dlZF9vYnNlcnZlcnM6XG4gICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgKFN0YWNrLmludmFyaWFudCAoZnVuIHBhY2tlZCAtPlxuICAgICAgICAgICAgICAgIEludGVybmFsX29ic2VydmVyLlBhY2tlZC5pbnZhcmlhbnQgcGFja2VkO1xuICAgICAgICAgICAgICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBDcmVhdGVkIHwgSW5fdXNlIHwgVW5saW5rZWQgLT4gYXNzZXJ0IGZhbHNlKSkpXG4gICAgICAgIH5zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb246XG4gICAgICAgICAgKGNoZWNrIChmdW4gc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIC0+XG4gICAgICAgICAgICAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICAgICAgICAgICAgIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChTdGFjay5pc19lbXB0eSBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pXG4gICAgICAgICAgICAgfCBTdGFiaWxpemluZyAtPlxuICAgICAgICAgICAgICAgU3RhY2suaW52YXJpYW50XG4gICAgICAgICAgICAgICAgIChmdW4gKFZhci5QYWNrZWQuVCB2YXIpIC0+XG4gICAgICAgICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19zb21lIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pKVxuICAgICAgICAgICAgICAgICBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pKVxuICAgICAgICB+aGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb246KGNoZWNrIChTdGFjay5pbnZhcmlhbnQgTm9kZS5QYWNrZWQuaW52YXJpYW50KSlcbiAgICAgICAgfnJ1bl9vbl91cGRhdGVfaGFuZGxlcnM6KGNoZWNrIChTdGFjay5pbnZhcmlhbnQgUnVuX29uX3VwZGF0ZV9oYW5kbGVycy5pbnZhcmlhbnQpKVxuICAgICAgICB+b25seV9pbl9kZWJ1ZzooY2hlY2sgT25seV9pbl9kZWJ1Zy5pbnZhcmlhbnQpXG4gICAgICAgIH53ZWFrX2hhc2h0YmxzOmlnbm9yZVxuICAgICAgICB+a2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZTppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeTppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19jaGFuZ2VkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2NyZWF0ZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfaW52YWxpZGF0ZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfcmVjb21wdXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0Omlnbm9yZVxuICAgICAgICB+bnVtX3Zhcl9zZXRzOmlnbm9yZSlcbjs7XG5cbmxldCBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWUgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyID1cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IE5vdF9zdGFiaWxpemluZyAtPiAoKVxuICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIC0+XG4gICAgaWYgbm90IGFsbG93X2luX3VwZGF0ZV9oYW5kbGVyXG4gICAgdGhlbiAoXG4gICAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLmdldCAoKSBpblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgKHNwcmludGYgXCJjYW5ub3QgJXMgZHVyaW5nIG9uLXVwZGF0ZSBoYW5kbGVyc1wiIG5hbWUpXG4gICAgICAgIGJhY2t0cmFjZVxuICAgICAgICBbJXNleHBfb2Y6IEJhY2t0cmFjZS50XSlcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIFJhaXNlZF9leG4ucmVyYWlzZV93aXRoX21lc3NhZ2VcbiAgICAgIHJhaXNlZF9leG5cbiAgICAgIChzcHJpbnRmIFwiY2Fubm90ICVzIC0tIHN0YWJpbGl6ZSBwcmV2aW91c2x5IHJhaXNlZFwiIG5hbWUpXG4gIHwgU3RhYmlsaXppbmcgLT5cbiAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLmdldCAoKSBpblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgKHNwcmludGYgXCJjYW5ub3QgJXMgZHVyaW5nIHN0YWJpbGl6YXRpb25cIiBuYW1lKVxuICAgICAgYmFja3RyYWNlXG4gICAgICBbJXNleHBfb2Y6IEJhY2t0cmFjZS50XVxuOztcblxubGV0IHNldF9oZWlnaHQgKG5vZGUgOiBfIE5vZGUudCkgaGVpZ2h0ID1cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIEFkanVzdF9oZWlnaHRzX2hlYXAuc2V0X2hlaWdodCB0LmFkanVzdF9oZWlnaHRzX2hlYXAgbm9kZSBoZWlnaHRcbjs7XG5cbmxldCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQgaGVpZ2h0ID1cbiAgZW5zdXJlX25vdF9zdGFiaWxpemluZyB0IH5uYW1lOlwic2V0X21heF9oZWlnaHRfYWxsb3dlZFwiIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlcjp0cnVlO1xuICBBZGp1c3RfaGVpZ2h0c19oZWFwLnNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwIGhlaWdodDtcbiAgUmVjb21wdXRlX2hlYXAuc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0LnJlY29tcHV0ZV9oZWFwIGhlaWdodFxuOztcblxubGV0IGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgaWYgbm90IG5vZGUuaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25cbiAgdGhlbiAoXG4gICAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gICAgbm9kZS5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA8LSB0cnVlO1xuICAgIFN0YWNrLnB1c2ggdC5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiAoVCBub2RlKSlcbjs7XG5cbmxldCByZWMgcmVtb3ZlX2NoaWxkcmVuIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIHBhcmVudCAtPlxuICBOb2RlLml0ZXJpX2NoaWxkcmVuIHBhcmVudCB+ZjooZnVuIGNoaWxkX2luZGV4IChUIGNoaWxkKSAtPlxuICAgIHJlbW92ZV9jaGlsZCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXgpXG5cbmFuZCByZW1vdmVfY2hpbGQgOiB0eXBlIGEgYi4gY2hpbGQ6YiBOb2RlLnQgLT4gcGFyZW50OmEgTm9kZS50IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBOb2RlLnJlbW92ZV9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICBjaGVja19pZl91bm5lY2Vzc2FyeSBjaGlsZFxuXG5hbmQgY2hlY2tfaWZfdW5uZWNlc3NhcnkgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPiBpZiBub3QgKE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUpIHRoZW4gYmVjYW1lX3VubmVjZXNzYXJ5IG5vZGVcblxuYW5kIGJlY2FtZV91bm5lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICB0Lm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgPC0gdC5udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5ICsgMTtcbiAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMCB0aGVuIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGU7XG4gIG5vZGUuaGVpZ2h0IDwtIC0xO1xuICByZW1vdmVfY2hpbGRyZW4gbm9kZTtcbiAgKG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHUgLT4gVW5vcmRlcmVkX2FycmF5X2ZvbGQuZm9yY2VfZnVsbF9jb21wdXRlIHVcbiAgIHwgRXhwZXJ0IHAgLT4gRXhwZXJ0Lm9ic2VydmFiaWxpdHlfY2hhbmdlIHAgfmlzX25vd19vYnNlcnZhYmxlOmZhbHNlXG4gICB8IF8gLT4gKCkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKTtcbiAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlIHRoZW4gUmVjb21wdXRlX2hlYXAucmVtb3ZlIHQucmVjb21wdXRlX2hlYXAgbm9kZVxuOztcblxubGV0IHJlbW92ZV9hbGFybSAoY2xvY2sgOiBDbG9jay50KSBhbGFybSA9XG4gIGlmIFRpbWluZ193aGVlbC5tZW0gY2xvY2sudGltaW5nX3doZWVsIGFsYXJtXG4gIHRoZW4gVGltaW5nX3doZWVsLnJlbW92ZSBjbG9jay50aW1pbmdfd2hlZWwgYWxhcm1cbjs7XG5cbigqIEFuIGludmFsaWQgbm9kZSBpcyBub2RlIHdob3NlIGtpbmQgaXMgW0ludmFsaWRdLiAgQSBub2RlJ3Mga2luZCBpcyBzZXQgdG8gW0ludmFsaWRdXG4gICB3aGVuIHRoZSBsaHMgb2YgaXRzIHNjb3BlIGNoYW5nZXMsIG9yIG9uZSBpZiBpdHMgY2hpbGRyZW4gcHJvcGFnYXRlIHRoZSBpbnZhbGlkaXR5XG4gICB1cHdhcmQgKHNlZSBbTm9kZS5zaG91bGRfYmVfaW52YWxpZGF0ZWRdIHRvIHNlZSBpbiB3aGljaCBjYXNlIGludmFsaWRpdHkgcHJvcGFnYXRpb25cbiAgIHN0b3BzKS4gIEludmFsaWRhdGluZyBhIG5vZGUgZGlzY29ubmVjdHMgaXQgZnJvbSBpdHMgY2hpbGRyZW4sIHdoaWNoIG1lYW5zOlxuXG4gICAxLiBhbiBpbnZhbGlkIG5vZGUgY2Fubm90IGVuZCB1cCBvbiB0aGUgc2NoZWR1bGVyIChpZiBpdCBpcyBvbiB0aGUgc2NoZWR1bGVyIHdoZW5cbiAgIGl0IGlzIGludmFsaWRhdGVkLCBpdCBpcyByZW1vdmVkKVxuICAgMi4gYW4gaW52YWxpZCBub2RlIGRvZXNuJ3QgbWFrZSBpdHMgY2hpbGRyZW4gbmVjZXNzYXJ5IGFueW1vcmUuXG5cbiAgIEludmFsaWQgbm9kZXMgdXN1YWxseSBoYXZlIG5vIHBhcmVudHMsIGJlY2F1c2UgdGhlIHVwd2FyZCBpbnZhbGlkaXR5IHByb3BhZ2F0aW9uIG1lYW5zXG4gICB0aGF0IHRoZWlyIHBhcmVudHMgd2lsbCB0aGVtc2VsdmVzIGJlY29tZSBpbnZhbGlkIGFuZCBkaXNjb25uZWN0IGZyb20gdGhlaXIgY2hpbGRyZW4uXG4gICBIb3dldmVyLCBbaWZdLCBbam9pbl0gb3IgW2JpbmRdIGFyZSBub3QgaW52YWxpZGF0ZWQgYnkgdGhlIHVwd2FyZCBwcm9wYWdhdGlvbiwgc28gYW5cbiAgIGludmFsaWQgbm9kZSBjYW4gc3RpbGwgaGF2ZSBwYXJlbnRzLiAgSW52YWxpZCBub2RlcyBjYW4gYmUgbmVjZXNzYXJ5LCBpbiB0aGUgY2FzZSB3aGVyZVxuICAgdGhleSBoYXZlIHBhcmVudHMsIGFuZCBhbHNvIHdoZW4gdGhleSBhcmUgb2JzZXJ2ZWQuXG5cbiAgIFRoZSB1cHdhcmQgcHJvcGFnYXRpb24gb2YgaW52YWxpZGl0eSBoYXBwZW5zIGJvdGggd2hlbiBhIG5vZGUgYmVjb21lcyBpbnZhbGlkLCBhbmQgd2hlblxuICAgdHJ5aW5nIHRvIGFkZCBhbiBlZGdlIGZyb20gYW4gaW52YWxpZCBjaGlsZCBub2RlIHRvIGFub3RoZXIgbm9kZS4gIEJlY2F1c2UgaW52YWxpZGl0eVxuICAgaXMgb25seSBwcm9wYWdhdGVkIHVwd2FyZCwgYW5kIGJlY2F1c2UgdGhlIHJocyBvZiBhIGJpbmQgaXMgaW52YWxpZGF0ZWQgYmVmb3JlIGl0XG4gICBleGVjdXRlcywgYSBub2RlIGNhbm5vdCBiZSBib3RoIGNvbXB1dGVkIGFuZCBpbnZhbGlkYXRlZCBpbiB0aGUgc2FtZSBzdGFiaWxpemF0aW9uLlxuXG4gICBXaGVuIGludmFsaWRhdGluZywgd2UgY2FuJ3QgYXNzdW1lIG11Y2ggYWJvdXQgdGhlIG5vZGVzIHdlIHZpc2l0LiAgV2UgY2Fubm90IGFzc3VtZVxuICAgdGhhdCBub2RlcyBhcmUgdmFsaWQgKHRoZSByaHMgY2FuIGNvbnRhaW4gcHJldmlvdXNseSBpbnZhbGlkYXRlZCBub2RlcyksIG9yIHRoYXQgbm9kZXNcbiAgIGFyZSB1bm5lY2Vzc2FyeSAobm9kZXMgY2FuIGJlIG1hZGUgbmVjZXNzYXJ5IHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGVpciBjb250YWluaW5nXG4gICBiaW5kcykuICopXG5cbmxldCByZWMgaW52YWxpZGF0ZV9ub2RlIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgaWYgTm9kZS5pc192YWxpZCBub2RlXG4gIHRoZW4gKFxuICAgIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICAgIGlmIG5vZGUubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDAgdGhlbiBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBub2RlO1xuICAgIG5vZGUudmFsdWVfb3B0IDwtIFVvcHQubm9uZTtcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5vZGUub2xkX3ZhbHVlX29wdCk7XG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgbm9kZS5yZWNvbXB1dGVkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgdC5udW1fbm9kZXNfaW52YWxpZGF0ZWQgPC0gdC5udW1fbm9kZXNfaW52YWxpZGF0ZWQgKyAxO1xuICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAgICAgKCogVGhlIG5vZGUgZG9lc24ndCBoYXZlIGNoaWxkcmVuIGFueW1vcmUsIHNvIHdlIGNhbiBsb3dlciBpdHMgaGVpZ2h0IGFzIG11Y2ggYXNcbiAgICAgICAgIHBvc3NpYmxlLCB0byBvbmUgZ3JlYXRlciB0aGFuIHRoZSBzY29wZSBpdCB3YXMgY3JlYXRlZCBpbi4gIEFsc28sIGJlY2F1c2Ugd2VcbiAgICAgICAgIGFyZSBsb3dlcmluZyB0aGUgaGVpZ2h0LCB3ZSBkb24ndCBuZWVkIHRvIGFkanVzdCBhbnkgb2YgaXRzIGFuY2VzdG9ycycgaGVpZ2h0cy5cbiAgICAgICAgIFdlIGNvdWxkIGxlYXZlIHRoZSBoZWlnaHQgYWxvbmUsIGJ1dCB3ZSBtYXkgYXMgd2VsbCBsb3dlciBpdCBhcyBtdWNoIGFzXG4gICAgICAgICBwb3NzaWJsZSB0byBhdm9pZCBtYWtpbmcgdGhlIGhlaWdodHMgb2YgYW55IGZ1dHVyZSBhbmNlc3RvcnMgdW5uZWNlc3NhcmlseVxuICAgICAgICAgbGFyZ2UuICopXG4gICAgICBub2RlLmhlaWdodCA8LSBTY29wZS5oZWlnaHQgbm9kZS5jcmVhdGVkX2luICsgMSk7XG4gICAgKCogV2UgZG9uJ3Qgc2V0IFtub2RlLmNyZWF0ZWRfaW5dIG9yIFtub2RlLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXTsgd2UgbGVhdmUgW25vZGVdXG4gICAgICAgaW4gdGhlIHNjb3BlIGl0IHdhcyBjcmVhdGVkIGluLiAgSWYgdGhhdCBzY29wZSBpcyBldmVyIGludmFsaWRhdGVkLCB0aGVuIHRoYXRcbiAgICAgICB3aWxsIGNsZWFyIFtub2RlLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXSAqKVxuICAgIChtYXRjaCBub2RlLmtpbmQgd2l0aFxuICAgICB8IEF0IGF0IC0+IHJlbW92ZV9hbGFybSBhdC5jbG9jayBhdC5hbGFybVxuICAgICB8IEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMgLT4gcmVtb3ZlX2FsYXJtIGF0X2ludGVydmFscy5jbG9jayBhdF9pbnRlcnZhbHMuYWxhcm1cbiAgICAgfCBCaW5kX21haW4gYmluZCAtPiBpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmhzIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgIHwgU3RlcF9mdW5jdGlvbiB7IGFsYXJtOyBjbG9jazsgXyB9IC0+IHJlbW92ZV9hbGFybSBjbG9jayBhbGFybVxuICAgICB8IF8gLT4gKCkpO1xuICAgIE5vZGUuc2V0X2tpbmQgbm9kZSBJbnZhbGlkO1xuICAgICgqIElmIHdlIGNhbGxlZCBbcHJvcGFnYXRlX2ludmFsaWRpdHldIHJpZ2h0IGF3YXkgb24gdGhlIHBhcmVudHMsIHdlIHdvdWxkIGdldCBpbnRvXG4gICAgICAgdHJvdWJsZS4gIFRoZSBwYXJlbnQgd291bGQgZGlzY29ubmVjdCBpdHNlbGYgZnJvbSB0aGUgY3VycmVudCBub2RlLCB0aHVzXG4gICAgICAgbW9kaWZ5aW5nIHRoZSBsaXN0IG9mIHBhcmVudHMgd2UgaXRlcmF0ZSBvbi4gIEV2ZW4gaWYgd2UgbWFkZSBhIHNwZWNpYWwgY2FzZSwgaXRcbiAgICAgICBzdGlsbCB3b3VsZG4ndCBiZSBlbm91Z2ggdG8gaGFuZGxlIG90aGVyIGNhc2VzIHdoZXJlIHRoZSBsaXN0IG9mIHBhcmVudHMgaXNcbiAgICAgICBtb2RpZmllZCAoZS5nLiB3aGVuIFtsaHNdIGlzIGludmFsaWRhdGVkIGluIHRoZSBleGFtcGxlIGluIHRoZSBjb21tZW50IGFib3V0XG4gICAgICAgW2Nhbl9yZWNvbXB1dGVfbm93XSBmYXIgYmVsb3cpLiAqKVxuICAgIGZvciBpbmRleCA9IDAgdG8gbm9kZS5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgIFN0YWNrLnB1c2ggdC5wcm9wYWdhdGVfaW52YWxpZGl0eSAoTm9kZS5nZXRfcGFyZW50IG5vZGUgfmluZGV4KVxuICAgIGRvbmU7XG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKSk7XG4gICAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlIHRoZW4gUmVjb21wdXRlX2hlYXAucmVtb3ZlIHQucmVjb21wdXRlX2hlYXAgbm9kZSlcblxuYW5kIGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgbm9kZSA9XG4gIGxldCByID0gcmVmIG5vZGUgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZSA8LSBVb3B0Lm5vbmU7XG4gICAgaW52YWxpZGF0ZV9ub2RlIG5vZGVfb25fcmhzXG4gIGRvbmVcbjs7XG5cbigqIFdoZW4gW25vdCB0LmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHNdIGFuZCBhIGJpbmQncyBsaHMgY2hhbmdlcywgd2UgbW92ZVxuICAgbm9kZXMgY3JlYXRlZCBvbiB0aGUgYmluZCdzIHJocyB1cCB0byBpdHMgcGFyZW50IGJpbmQsIGFzIG9wcG9zZWQgdG8gW1Njb3BlLlRvcF0uICBUaGlzXG4gICBtYWludGFpbnMgdGhlaXIgZGVwZW5kZW5jZSBvbiB2YWxpZCBiaW5kIGxlZnQtaGFuZCBzaWRlcywgYW5kIGtlZXBzIHRoZW0gaGlnaGVyIGluIHRoZVxuICAgZ3JhcGguICBUaGlzIGluIHR1cm4gbWVhbnMgdGhhdCB3ZSB3aWxsIGNvbnRpbnVlIHRvIGNvbXB1dGUgdGhvc2Ugbm9kZXMgYWZ0ZXIgdGhlXG4gICBwYXJlbnQgYmluZCdzIGxocywgd2hpY2ggZ2l2ZXMgdGhlbSBtb3JlIG9mIGEgY2hhbmNlIHRvIGJlY29tZSB1bm5lY2Vzc2FyeSBhbmQgbm90IGJlXG4gICBjb21wdXRlZCBzaG91bGQgdGhlIHBhcmVudCBiaW5kJ3MgbGhzIGNoYW5nZS4gKilcbmxldCByZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzIF90IChmaXJzdF9ub2RlX29uX3JocyA6IE5vZGUuUGFja2VkLnQgVW9wdC50KSB+bmV3X3Njb3BlID1cbiAgbGV0IHIgPSByZWYgZmlyc3Rfbm9kZV9vbl9yaHMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZSA8LSBVb3B0Lm5vbmU7XG4gICAgbm9kZV9vbl9yaHMuY3JlYXRlZF9pbiA8LSBuZXdfc2NvcGU7XG4gICAgU2NvcGUuYWRkX25vZGUgbmV3X3Njb3BlIG5vZGVfb25fcmhzXG4gIGRvbmVcbjs7XG5cbmxldCBwcm9wYWdhdGVfaW52YWxpZGl0eSB0ID1cbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5KSBkb1xuICAgIGxldCAoVCBub2RlKSA9IFN0YWNrLnBvcF9leG4gdC5wcm9wYWdhdGVfaW52YWxpZGl0eSBpblxuICAgIGlmIE5vZGUuaXNfdmFsaWQgbm9kZVxuICAgIHRoZW5cbiAgICAgIGlmIE5vZGUuc2hvdWxkX2JlX2ludmFsaWRhdGVkIG5vZGVcbiAgICAgIHRoZW4gaW52YWxpZGF0ZV9ub2RlIG5vZGVcbiAgICAgIGVsc2UgKFxuICAgICAgICAoKiBbTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlXSBpcyB0cnVlIGJlY2F1c2VcbiAgICAgICAgICAgLSBub2RlIGlzIG5lY2Vzc2FyeS4gVGhpcyBpcyBiZWNhdXNlIGNoaWxkcmVuIGNhbiBvbmx5IHBvaW50IHRvIG5lY2Vzc2FyeVxuICAgICAgICAgICAgIHBhcmVudHNcbiAgICAgICAgICAgLSBub2RlIGlzIHN0YWxlLiBUaGlzIGlzIGJlY2F1c2U6IEZvciBiaW5kLCBpZiwgam9pbiwgdGhpcyBpcyB0cnVlIGJlY2F1c2VcbiAgICAgICAgICAgLSBlaXRoZXIgdGhlIGludmFsaWRhdGlvbiBpcyBjYXVzZWQgYnkgdGhlIGxocyBjaGFuZ2luZyAoaW4gd2hpY2ggY2FzZSB0aGVcbiAgICAgICAgICAgICBsaHMtY2hhbmdlIG5vZGUgYmVpbmcgbmV3ZXIgbWFrZXMgdXMgc3RhbGUpLlxuICAgICAgICAgICAtIG9yIGEgY2hpbGQgYmVjYW1lIGludmFsaWQgdGhpcyBzdGFiaWxpemF0aW9uIGN5Y2xlLCBpbiB3aGljaCBjYXNlIGl0IGhhc1xuICAgICAgICAgICAgIHQuY2hhbmdlZF9hdCBvZiBbdC5zdGFiaWxpemF0aW9uX251bV0sIGFuZCBzbyBbbm9kZV0gaXMgc3RhbGVcbiAgICAgICAgICAgLSBvciBbbm9kZV0ganVzdCBiZWNhbWUgbmVjZXNzYXJ5IGFuZCB0cmllZCBjb25uZWN0aW5nIHRvIGFuIGFscmVhZHkgaW52YWxpZFxuICAgICAgICAgICAgIGNoaWxkLiBJbiB0aGF0IGNhc2UsIFtjaGlsZC5jaGFuZ2VkX2F0ID4gbm9kZS5yZWNvbXB1dGVkX2F0XSBmb3IgdGhhdCBjaGlsZCxcbiAgICAgICAgICAgICBiZWNhdXNlIGlmIHdlIGhhZCBiZWVuIHJlY29tcHV0ZWQgd2hlbiB0aGF0IGNoaWxkIGNoYW5nZWQsIHdlIHdvdWxkIGhhdmUgYmVlblxuICAgICAgICAgICAgIG1hZGUgaW52YWxpZCBiYWNrIHRoZW4uICBGb3IgZXhwZXJ0IG5vZGVzLCB0aGUgYXJndW1lbnQgaXMgdGhlIHNhbWUsIGV4Y2VwdFxuICAgICAgICAgICAgIHRoYXQgaW5zdGVhZCBvZiBsaHMtY2hhbmdlIG5vZGVzIG1ha2UgdGhlIGV4cGVydCBub2RlcyBzdGFsZSwgaXQncyBtYWRlIHN0YWxlXG4gICAgICAgICAgICAgZXhwbGljaXRlbHkgd2hlbiBhZGRpbmcgb3IgcmVtb3ZpbmcgY2hpbGRyZW4uICopXG4gICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpO1xuICAgICAgICAobWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgICAgICAgIHwgRXhwZXJ0IGV4cGVydCAtPlxuICAgICAgICAgICAoKiBJZiBtdWx0aXBsZSBjaGlsZHJlbiBhcmUgaW52YWxpZCwgdGhleSB3aWxsIHB1c2ggdXMgYXMgbWFueSB0aW1lcyBvbiB0aGVcbiAgICAgICAgICAgICAgcHJvcGFnYXRpb24gc3RhY2ssIHNvIHdlIGNvdW50IHRoZW0gcmlnaHQuICopXG4gICAgICAgICAgIEV4cGVydC5pbmNyX2ludmFsaWRfY2hpbGRyZW4gZXhwZXJ0XG4gICAgICAgICB8IGtpbmQgLT5cbiAgICAgICAgICAgaWYgZGVidWdcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgICAgfCBCaW5kX21haW4gXyB8IElmX3RoZW5fZWxzZSBfIHwgSm9pbl9tYWluIF8gLT4gKClcbiAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZSAoKiBub2RlcyB3aXRoIG5vIGNoaWxkcmVuIGFyZSBuZXZlciBwdXNoZWQgb24gdGhlIHN0YWNrICopKSk7XG4gICAgICAgICgqIFdlIGRvIG5vdCBjaGVjayBbTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlXSBoZXJlLCBiZWNhdXNlIGl0IHNob3VsZCBiZVxuICAgICAgICAgICB0cnVlLCBhbmQgYmVjYXVzZSBjb21wdXRpbmcgaXQgdGFrZXMgTyhudW1iZXIgb2YgY2hpbGRyZW4pLCBub2RlIGNhbiBiZSBwdXNoZWRcbiAgICAgICAgICAgb24gdGhlIHN0YWNrIG9uY2UgcGVyIGNoaWxkLCBhbmQgZXhwZXJ0IG5vZGVzIGNhbiBoYXZlIGxvdHMgb2YgY2hpbGRyZW4uICopXG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIG5vZGUpXG4gIGRvbmVcbjs7XG5cbigqIFthZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHMgdCB+Y2hpbGQgfnBhcmVudF0gYWRkcyBbcGFyZW50XSBhcyBhIHBhcmVudCBvZlxuICAgW2NoaWxkXSwgYW5kIG1ha2VzIFtjaGlsZF0gYW5kIGFsbCBpdHMgZGVzY2VuZGFudHMgbmVjZXNzYXJ5LCBlbnN1cmluZyB0aGVpciBoZWlnaHRzXG4gICBhcmUgYWNjdXJhdGUuICBUaGVyZSBpcyBubyBndWFyYW50ZWUgYWJvdXQgdGhlIHJlbGF0aXZlIGhlaWdodHMgb2YgW2NoaWxkXSBhbmQgW3BhcmVudF1cbiAgIHRob3VnaC4gKilcbmxldCByZWMgYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzXG4gIDogdHlwZSBhIGIuIGNoaWxkOmEgTm9kZS50IC0+IHBhcmVudDpiIE5vZGUudCAtPiBjaGlsZF9pbmRleDppbnQgLT4gdW5pdFxuICA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXggLT5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gIGxldCB0ID0gY2hpbGQuc3RhdGUgaW5cbiAgbGV0IHdhc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeSBjaGlsZCBpblxuICBOb2RlLmFkZF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgY2hpbGQpIHRoZW4gU3RhY2sucHVzaCB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IChUIHBhcmVudCk7XG4gIGlmIG5vdCB3YXNfbmVjZXNzYXJ5IHRoZW4gYmVjYW1lX25lY2Vzc2FyeSBjaGlsZDtcbiAgbWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICB8IEV4cGVydCBlIC0+IEV4cGVydC5ydW5fZWRnZV9jYWxsYmFjayBlIH5jaGlsZF9pbmRleFxuICB8IF8gLT4gKClcblxuYW5kIGJlY2FtZV9uZWNlc3NhcnkgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICAoKiBbU2NvcGUuaXNfbmVjZXNzYXJ5IG5vZGUuY3JlYXRlZF9pbl0gaXMgdHJ1ZSAoYXNzdW1pbmcgdGhlIHNjb3BlIGl0c2VsZiBpcyB2YWxpZClcbiAgICAgYmVjYXVzZSBbTm9kZS5pdGVyX2NoaWxkcmVuXSBiZWxvdyBmaXJzdCB2aXNpdHMgdGhlIGxocy1jaGFuZ2Ugb2YgYmluZCBub2RlcyBhbmRcbiAgICAgdGhlbiB0aGUgcmhzLiAqKVxuICBpZiBOb2RlLmlzX3ZhbGlkIG5vZGUgJiYgbm90IChTY29wZS5pc19uZWNlc3Nhcnkgbm9kZS5jcmVhdGVkX2luKVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRyeWluZyB0byBtYWtlIGEgbm9kZSBuZWNlc3Nhcnkgd2hvc2UgZGVmaW5pbmcgYmluZCBpcyBub3QgbmVjZXNzYXJ5XCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgdC5udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSA8LSB0Lm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5ICsgMTtcbiAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMCB0aGVuIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGU7XG4gICgqIFNpbmNlIFtub2RlXSBiZWNhbWUgbmVjZXNzYXJ5LCB0byByZXN0b3JlIHRoZSBpbnZhcmlhbnQsIHdlIG5lZWQgdG86XG5cbiAgICAgLSBhZGQgcGFyZW50IHBvaW50ZXJzIHRvIFtub2RlXSBmcm9tIGl0cyBjaGlsZHJlbi5cbiAgICAgLSBzZXQgW25vZGVdJ3MgaGVpZ2h0LlxuICAgICAtIGFkZCBbbm9kZV0gdG8gdGhlIHJlY29tcHV0ZSBoZWFwLCBpZiBuZWNlc3NhcnkuICopXG4gIHNldF9oZWlnaHQgbm9kZSAoU2NvcGUuaGVpZ2h0IG5vZGUuY3JlYXRlZF9pbiArIDEpO1xuICBOb2RlLml0ZXJpX2NoaWxkcmVuIG5vZGUgfmY6KGZ1biBjaGlsZF9pbmRleCAoVCBjaGlsZCkgLT5cbiAgICBhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHMgfmNoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGRfaW5kZXg7XG4gICAgKCogTm93IHRoYXQgY2hpbGQgaXMgbmVjZXNzYXJ5LCBpdCBzaG91bGQgaGF2ZSBhIHZhbGlkIGhlaWdodC4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGQuaGVpZ2h0ID49IDApO1xuICAgIGlmIGNoaWxkLmhlaWdodCA+PSBub2RlLmhlaWdodCB0aGVuIHNldF9oZWlnaHQgbm9kZSAoY2hpbGQuaGVpZ2h0ICsgMSkpO1xuICAoKiBOb3cgdGhhdCB0aGUgaGVpZ2h0IGlzIGNvcnJlY3QsIG1heWJlIGFkZCBbbm9kZV0gdG8gdGhlIHJlY29tcHV0ZSBoZWFwLiAgW25vZGVdXG4gICAgIGp1c3QgYmVjYW1lIG5lY2Vzc2FyeSwgc28gaXQgY2FuJ3QgaGF2ZSBiZWVuIGluIHRoZSByZWNvbXB1dGUgaGVhcC4gIFNpbmNlIFtub2RlXVxuICAgICBpcyBuZWNlc3NhcnksIHdlIHNob3VsZCBhZGQgaXQgdG8gdGhlIHJlY29tcHV0ZSBoZWFwIGlmZiBpdCBpcyBzdGFsZS4gKilcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBub2RlKTtcbiAgaWYgTm9kZS5pc19zdGFsZSBub2RlIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgbm9kZTtcbiAgbWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgfCBFeHBlcnQgcCAtPiBFeHBlcnQub2JzZXJ2YWJpbGl0eV9jaGFuZ2UgcCB+aXNfbm93X29ic2VydmFibGU6dHJ1ZVxuICB8IF8gLT4gKClcbjs7XG5cbmxldCBiZWNhbWVfbmVjZXNzYXJ5IG5vZGUgPVxuICBiZWNhbWVfbmVjZXNzYXJ5IG5vZGU7XG4gIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IG5vZGUuc3RhdGVcbjs7XG5cbmxldCBhZGRfcGFyZW50IH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICBsZXQgdCA9IHBhcmVudC5zdGF0ZSBpblxuICAoKiBJbiB0aGUgY2FzZSB3aGVuIHRoZSBlZGdlIGJlaW5nIGFkZGVkIGNyZWF0ZXMgYSBjeWNsZSwgaXQgaXMgcG9zc2libGUgZm9yIHRoZVxuICAgICByZWN1cnNpb24gaW4gW2FkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0c10gdG8gcmVhY2ggW3BhcmVudF0gYXMgYSBkZXNjZW5kYW50XG4gICAgIG9mIFtjaGlsZF0uICBJbiB0aGF0IGNhc2UsIHRoZSByZWN1cnNpb24gdGVybWluYXRlcywgYmVjYXVzZSBbTm9kZS5pc19uZWNlc3NhcnlcbiAgICAgcGFyZW50XS4gIFdlIHRoZW4gcmV0dXJuIGhlcmUgYW5kIHN1YnNlcXVlbnRseSBkZXRlY3QgdGhlIGN5Y2xlIGluXG4gICAgIFthZGp1c3RfaGVpZ2h0c10uICopXG4gIGFkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0cyB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gICgqIFdlIGFkanVzdCBoZWlnaHRzIHNvIHRoYXQgd2UgZW5zdXJlIHRoZXJlIGFyZSBubyBjeWNsZXMgYmVmb3JlIGNhbGxpbmdcbiAgICAgW3Byb3BhZ2F0ZV9pbnZhbGlkaXR5XS4gKilcbiAgaWYgY2hpbGQuaGVpZ2h0ID49IHBhcmVudC5oZWlnaHRcbiAgdGhlblxuICAgIEFkanVzdF9oZWlnaHRzX2hlYXAuYWRqdXN0X2hlaWdodHNcbiAgICAgIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxuICAgICAgdC5yZWNvbXB1dGVfaGVhcFxuICAgICAgfmNoaWxkXG4gICAgICB+cGFyZW50O1xuICBwcm9wYWdhdGVfaW52YWxpZGl0eSB0O1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgKCogd2Ugb25seSBhZGQgbmVjZXNzYXJ5IHBhcmVudHMgKilcbiAgaWYgKG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBwYXJlbnQpKVxuICAmJiAoU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSBwYXJlbnQucmVjb21wdXRlZF9hdFxuICAgICAgfHwgTm9kZS5lZGdlX2lzX3N0YWxlIH5jaGlsZCB+cGFyZW50KVxuICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHBhcmVudFxuOztcblxubGV0IHJ1bl93aXRoX3Njb3BlIHQgc2NvcGUgfmYgPVxuICBsZXQgc2F2ZWQgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgdC5jdXJyZW50X3Njb3BlIDwtIHNjb3BlO1xuICB0cnlcbiAgICBsZXQgdiA9IGYgKCkgaW5cbiAgICB0LmN1cnJlbnRfc2NvcGUgPC0gc2F2ZWQ7XG4gICAgdlxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgdC5jdXJyZW50X3Njb3BlIDwtIHNhdmVkO1xuICAgIHJhaXNlIGV4blxuOztcblxubGV0IHdpdGhpbl9zY29wZSB0IHNjb3BlIH5mID1cbiAgaWYgbm90IChTY29wZS5pc192YWxpZCBzY29wZSlcbiAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImF0dGVtcHQgdG8gcnVuIHdpdGhpbiBhbiBpbnZhbGlkIHNjb3BlXCIgdCBbJXNleHBfb2Y6IHRdO1xuICBydW5fd2l0aF9zY29wZSB0IHNjb3BlIH5mXG47O1xuXG5sZXQgY2hhbmdlX2NoaWxkXG4gIDogdHlwZSBhIGIuXG4gICAgcGFyZW50OmEgTm9kZS50XG4gICAgLT4gb2xkX2NoaWxkOmIgTm9kZS50IFVvcHQudFxuICAgIC0+IG5ld19jaGlsZDpiIE5vZGUudFxuICAgIC0+IGNoaWxkX2luZGV4OmludFxuICAgIC0+IHVuaXRcbiAgPVxuICBmdW4gfnBhcmVudCB+b2xkX2NoaWxkIH5uZXdfY2hpbGQgfmNoaWxkX2luZGV4IC0+XG4gIGlmIFVvcHQuaXNfbm9uZSBvbGRfY2hpbGRcbiAgdGhlbiBhZGRfcGFyZW50IH5jaGlsZDpuZXdfY2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXhcbiAgZWxzZSAoXG4gICAgbGV0IG9sZF9jaGlsZCA9IFVvcHQudW5zYWZlX3ZhbHVlIG9sZF9jaGlsZCBpblxuICAgIGlmIG5vdCAocGh5c19lcXVhbCBvbGRfY2hpbGQgbmV3X2NoaWxkKVxuICAgIHRoZW4gKFxuICAgICAgKCogV2UgcmVtb3ZlIFtvbGRfY2hpbGRdIGJlZm9yZSBhZGRpbmcgW25ld19jaGlsZF0sIGJlY2F1c2UgdGhleSBzaGFyZSB0aGUgc2FtZVxuICAgICAgICAgY2hpbGQgaW5kZXguICopXG4gICAgICBOb2RlLnJlbW92ZV9wYXJlbnQgfmNoaWxkOm9sZF9jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgICAgICgqIFdlIGZvcmNlIFtvbGRfY2hpbGRdIHRvIHRlbXBvcmFyaWx5IGJlIG5lY2Vzc2FyeSBzbyB0aGF0IFthZGRfcGFyZW50XSBjYW4ndFxuICAgICAgICAgbWlzdGFrZW5seSB0aGluayBpdCBpcyB1bm5lY2Vzc2FyeSBhbmQgdHJhbnNpdGlvbiBpdCB0byBuZWNlc3NhcnkgKHdoaWNoIHdvdWxkXG4gICAgICAgICBhZGQgZHVwbGljYXRlIGVkZ2VzIGFuZCBicmVhayB0aGluZ3MgaG9ycmlibHkpLiAqKVxuICAgICAgb2xkX2NoaWxkLmZvcmNlX25lY2Vzc2FyeSA8LSB0cnVlO1xuICAgICAgYWRkX3BhcmVudCB+Y2hpbGQ6bmV3X2NoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICAgICAgb2xkX2NoaWxkLmZvcmNlX25lY2Vzc2FyeSA8LSBmYWxzZTtcbiAgICAgICgqIFdlIFtjaGVja19pZl91bm5lY2Vzc2FyeV0gYWZ0ZXIgW2FkZF9wYXJlbnRdLCBzbyB0aGF0IHdlIGRvbid0IHVubmVjZXNzYXJpbHlcbiAgICAgICAgIHRyYW5zaXRpb24gbm9kZXMgZnJvbSBuZWNlc3NhcnkgdG8gdW5uZWNlc3NhcnkgYW5kIHRoZW4gYmFjayBhZ2Fpbi4gKilcbiAgICAgIGNoZWNrX2lmX3VubmVjZXNzYXJ5IG9sZF9jaGlsZCkpXG47O1xuXG5sZXQgYWRkX2FsYXJtIGNsb2NrIH5hdCBhbGFybV92YWx1ZSA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IChub3cgY2xvY2spKTtcbiAgVGltaW5nX3doZWVsLmFkZCBjbG9jay50aW1pbmdfd2hlZWwgfmF0IGFsYXJtX3ZhbHVlXG47O1xuXG5sZXQgcmVjIHJlY29tcHV0ZSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICB0Lm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZSA8LSBTb21lIChUIG5vZGUpO1xuICAgIHQub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgPC0gW10pO1xuICB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkIDwtIHQubnVtX25vZGVzX3JlY29tcHV0ZWQgKyAxO1xuICBub2RlLnJlY29tcHV0ZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgbWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgfCBBcnJheV9mb2xkIGFycmF5X2ZvbGQgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKEFycmF5X2ZvbGQuY29tcHV0ZSBhcnJheV9mb2xkKVxuICB8IEF0IHsgYXQ7IGNsb2NrOyBfIH0gLT5cbiAgICAoKiBJdCBpcyBhIGJ1ZyBpZiB3ZSB0cnkgdG8gY29tcHV0ZSBhbiBbQXRdIG5vZGUgYWZ0ZXIgW2F0XS4gIFthZHZhbmNlX2Nsb2NrXSB3YXNcbiAgICAgICBzdXBwb3NlZCB0byBjb252ZXJ0IGl0IHRvIGEgW0NvbnN0XSBhdCB0aGUgYXBwcm9wcmlhdGUgdGltZS4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVGltZV9ucy4oID4gKSBhdCAobm93IGNsb2NrKSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgQmVmb3JlXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKClcbiAgfCBCaW5kX2xoc19jaGFuZ2VcbiAgICAgICh7IG1haW5cbiAgICAgICA7IGZcbiAgICAgICA7IGxoc1xuICAgICAgIDsgcmhzX3Njb3BlXG4gICAgICAgOyByaHMgPSBvbGRfcmhzXG4gICAgICAgOyBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgPSBvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICAgOyBfXG4gICAgICAgfSBhcyBiaW5kKSAtPlxuICAgICgqIFdlIGNsZWFyIFthbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNdIHNvIGl0IHdpbGwgaG9sZCBqdXN0IHRoZSBub2RlcyBjcmVhdGVkIGJ5XG4gICAgICAgdGhpcyBjYWxsIHRvIFtmXS4gKilcbiAgICBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA8LSBVb3B0Lm5vbmU7XG4gICAgbGV0IHJocyA9IHJ1bl93aXRoX3Njb3BlIHQgcmhzX3Njb3BlIH5mOihmdW4gKCkgLT4gZiAoTm9kZS52YWx1ZV9leG4gbGhzKSkgaW5cbiAgICBiaW5kLnJocyA8LSBVb3B0LnNvbWUgcmhzO1xuICAgICgqIEFudGljaXBhdGUgd2hhdCBbbWF5YmVfY2hhbmdlX3ZhbHVlXSB3aWxsIGRvLCB0byBtYWtlIHN1cmUgQmluZF9tYWluIGlzIHN0YWxlXG4gICAgICAgcmlnaHQgYXdheS4gVGhpcyB3YXksIGlmIHRoZSBuZXcgY2hpbGQgaXMgaW52YWxpZCwgd2UnbGwgc2F0aXNmeSB0aGUgaW52YXJpYW50XG4gICAgICAgc2F5aW5nIHRoYXQgW25lZWRzX3RvX2JlX2NvbXB1dGVkIGJpbmRfbWFpbl0gaW4gW3Byb3BhZ2F0ZV9pbnZhbGlkaXR5XSAqKVxuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGNoYW5nZV9jaGlsZFxuICAgICAgfnBhcmVudDptYWluXG4gICAgICB+b2xkX2NoaWxkOm9sZF9yaHNcbiAgICAgIH5uZXdfY2hpbGQ6cmhzXG4gICAgICB+Y2hpbGRfaW5kZXg6S2luZC5iaW5kX3Joc19jaGlsZF9pbmRleDtcbiAgICBpZiBVb3B0LmlzX3NvbWUgb2xkX3Joc1xuICAgIHRoZW4gKFxuICAgICAgKCogV2UgaW52YWxpZGF0ZSBhZnRlciBbY2hhbmdlX2NoaWxkXSwgYmVjYXVzZSBpbnZhbGlkYXRpb24gY2hhbmdlcyB0aGUgW2tpbmRdIG9mXG4gICAgICAgICBub2RlcyB0byBbSW52YWxpZF0sIHdoaWNoIG1lYW5zIHRoYXQgd2UgY2FuIG5vIGxvbmdlciB2aXNpdCB0aGVpciBjaGlsZHJlbi5cbiAgICAgICAgIEFsc28sIHRoZSBbb2xkX3Joc10gbm9kZXMgYXJlIHR5cGljYWxseSBtYWRlIHVubmVjZXNzYXJ5IGJ5IFtjaGFuZ2VfY2hpbGRdLCBhbmRcbiAgICAgICAgIHNvIGJ5IGludmFsaWRhdGluZyBhZnRlcndhcmRzLCB3ZSB3aWxsIG5vdCB3YXN0ZSB0aW1lIGFkZGluZyB0aGVtIHRvIHRoZVxuICAgICAgICAgcmVjb21wdXRlIGhlYXAgYW5kIHRoZW4gcmVtb3ZpbmcgdGhlbS4gKilcbiAgICAgIGlmIHQuYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3Joc1xuICAgICAgdGhlbiBpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmhzIG9sZF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgIGVsc2VcbiAgICAgICAgcmVzY29wZV9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgICAgIHRcbiAgICAgICAgICBvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICAgICAgfm5ld19zY29wZTptYWluLmNyZWF0ZWRfaW47XG4gICAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSB0KTtcbiAgICAoKiBbbm9kZV0gd2FzIHZhbGlkIGF0IHRoZSBzdGFydCBvZiB0aGUgW0JpbmRfbGhzX2NoYW5nZV0gYnJhbmNoLCBhbmQgaW52YWxpZGF0aW9uXG4gICAgICAgb25seSB2aXNpdHMgaGlnaGVyIG5vZGVzLCBzbyBbbm9kZV0gaXMgc3RpbGwgdmFsaWQuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfdmFsaWQgbm9kZSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKClcbiAgfCBCaW5kX21haW4geyByaHM7IF8gfSAtPiBjb3B5X2NoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGQ6KFVvcHQudmFsdWVfZXhuIHJocylcbiAgfCBDb25zdCBhIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIGFcbiAgfCBGcmVlemUgeyBjaGlsZDsgb25seV9mcmVlemVfd2hlbjsgXyB9IC0+XG4gICAgbGV0IHZhbHVlID0gTm9kZS52YWx1ZV9leG4gY2hpbGQgaW5cbiAgICBpZiBvbmx5X2ZyZWV6ZV93aGVuIHZhbHVlXG4gICAgdGhlbiAoXG4gICAgICByZW1vdmVfY2hpbGRyZW4gbm9kZTtcbiAgICAgIE5vZGUuc2V0X2tpbmQgbm9kZSAoQ29uc3QgdmFsdWUpO1xuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSB0aGVuIHNldF9oZWlnaHQgbm9kZSAwIGVsc2UgYmVjYW1lX3VubmVjZXNzYXJ5IG5vZGUpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIHZhbHVlXG4gIHwgSWZfdGVzdF9jaGFuZ2UgKHsgbWFpbjsgY3VycmVudF9icmFuY2g7IHRlc3Q7IHRoZW5fOyBlbHNlXzsgXyB9IGFzIGlmX3RoZW5fZWxzZSkgLT5cbiAgICBsZXQgZGVzaXJlZF9icmFuY2ggPSBpZiBOb2RlLnZhbHVlX2V4biB0ZXN0IHRoZW4gdGhlbl8gZWxzZSBlbHNlXyBpblxuICAgIGlmX3RoZW5fZWxzZS5jdXJyZW50X2JyYW5jaCA8LSBVb3B0LnNvbWUgZGVzaXJlZF9icmFuY2g7XG4gICAgKCogc2VlIHRoZSBjb21tZW50IGluIEJpbmRfbGhzX2NoYW5nZSAqKVxuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGNoYW5nZV9jaGlsZFxuICAgICAgfnBhcmVudDptYWluXG4gICAgICB+b2xkX2NoaWxkOmN1cnJlbnRfYnJhbmNoXG4gICAgICB+bmV3X2NoaWxkOmRlc2lyZWRfYnJhbmNoXG4gICAgICB+Y2hpbGRfaW5kZXg6S2luZC5pZl9icmFuY2hfY2hpbGRfaW5kZXg7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKClcbiAgfCBJZl90aGVuX2Vsc2UgeyBjdXJyZW50X2JyYW5jaDsgXyB9IC0+XG4gICAgY29weV9jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkOihVb3B0LnZhbHVlX2V4biBjdXJyZW50X2JyYW5jaClcbiAgfCBJbnZhbGlkIC0+XG4gICAgKCogV2UgbmV2ZXIgaGF2ZSBpbnZhbGlkIG5vZGVzIGluIHRoZSByZWNvbXB1dGUgaGVhcDsgdGhleSBhcmUgbmV2ZXIgc3RhbGUuICopXG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgSm9pbl9saHNfY2hhbmdlICh7IGxoczsgbWFpbjsgcmhzID0gb2xkX3JoczsgXyB9IGFzIGpvaW4pIC0+XG4gICAgbGV0IHJocyA9IE5vZGUudmFsdWVfZXhuIGxocyBpblxuICAgIGpvaW4ucmhzIDwtIFVvcHQuc29tZSByaHM7XG4gICAgKCogc2VlIHRoZSBjb21tZW50IGluIEJpbmRfbGhzX2NoYW5nZSAqKVxuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGNoYW5nZV9jaGlsZFxuICAgICAgfnBhcmVudDptYWluXG4gICAgICB+b2xkX2NoaWxkOm9sZF9yaHNcbiAgICAgIH5uZXdfY2hpbGQ6cmhzXG4gICAgICB+Y2hpbGRfaW5kZXg6S2luZC5qb2luX3Joc19jaGlsZF9pbmRleDtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IEpvaW5fbWFpbiB7IHJoczsgXyB9IC0+IGNvcHlfY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZDooVW9wdC52YWx1ZV9leG4gcmhzKVxuICB8IE1hcCAoZiwgbjEpIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChmIChOb2RlLnZhbHVlX2V4biBuMSkpXG4gIHwgU25hcHNob3QgeyBhdDsgYmVmb3JlOyBjbG9jazsgXyB9IC0+XG4gICAgKCogSXQgaXMgYSBidWcgaWYgd2UgdHJ5IHRvIGNvbXB1dGUgYSBbU25hcHNob3RdIGFuZCB0aGUgYWxhcm0gc2hvdWxkIGhhdmUgZmlyZWQuXG4gICAgICAgW2FkdmFuY2VfY2xvY2tdIHdhcyBzdXBwb3NlZCB0byBjb252ZXJ0IGl0IHRvIGEgW0ZyZWV6ZV0gYXQgdGhlIGFwcHJvcHJpYXRlXG4gICAgICAgdGltZS4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVGltZV9ucy4oID4gKSBhdCAobm93IGNsb2NrKSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgYmVmb3JlXG4gIHwgU3RlcF9mdW5jdGlvbiAoeyBjaGlsZDsgY2xvY2s7IF8gfSBhcyBzdGVwX2Z1bmN0aW9uX25vZGUpIC0+XG4gICAgaWYgVW9wdC5pc19zb21lIGNoaWxkXG4gICAgdGhlbiAoXG4gICAgICBsZXQgY2hpbGQgPSBVb3B0LnZhbHVlX2V4biBjaGlsZCBpblxuICAgICAgaWYgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZVxuICAgICAgICAgICBjaGlsZC5jaGFuZ2VkX2F0XG4gICAgICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5leHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0XG4gICAgICAgICA+IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdCA8LSBjaGlsZC5jaGFuZ2VkX2F0O1xuICAgICAgICByZW1vdmVfYWxhcm0gY2xvY2sgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtO1xuICAgICAgICBsZXQgc3RlcF9mdW5jdGlvbiA9IE5vZGUudmFsdWVfZXhuIGNoaWxkIGluXG4gICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS52YWx1ZSA8LSBVb3B0LnNvbWUgKFN0ZXBfZnVuY3Rpb24uaW5pdCBzdGVwX2Z1bmN0aW9uKTtcbiAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLnVwY29taW5nX3N0ZXBzIDwtIFN0ZXBfZnVuY3Rpb24uc3RlcHMgc3RlcF9mdW5jdGlvbjtcbiAgICAgICAgKCogSWYgdGhlIGNoaWxkIGlzIGEgY29uc3RhbnQsIHdlIGRyb3Agb3VyIHJlZmVyZW5jZSB0byBpdCwgdG8gYXZvaWQgaG9sZGluZyBvbiB0b1xuICAgICAgICAgICB0aGUgZW50aXJlIHN0ZXAgZnVuY3Rpb24uICopXG4gICAgICAgIGlmIE5vZGUuaXNfY29uc3QgY2hpbGRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgcmVtb3ZlX2NoaWxkcmVuIG5vZGU7XG4gICAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmNoaWxkIDwtIFVvcHQubm9uZTtcbiAgICAgICAgICBzZXRfaGVpZ2h0IG5vZGUgKFNjb3BlLmhlaWdodCBub2RlLmNyZWF0ZWRfaW4gKyAxKSkpKTtcbiAgICBTdGVwX2Z1bmN0aW9uX25vZGUuYWR2YW5jZSBzdGVwX2Z1bmN0aW9uX25vZGUgfnRvXzoobm93IGNsb2NrKTtcbiAgICBsZXQgc3RlcF9mdW5jdGlvbl92YWx1ZSA9IFVvcHQudmFsdWVfZXhuIHN0ZXBfZnVuY3Rpb25fbm9kZS52YWx1ZSBpblxuICAgIChtYXRjaCBTZXF1ZW5jZS5oZCBzdGVwX2Z1bmN0aW9uX25vZGUudXBjb21pbmdfc3RlcHMgd2l0aFxuICAgICB8IE5vbmUgLT4gaWYgVW9wdC5pc19ub25lIGNoaWxkIHRoZW4gTm9kZS5zZXRfa2luZCBub2RlIChDb25zdCBzdGVwX2Z1bmN0aW9uX3ZhbHVlKVxuICAgICB8IFNvbWUgKGF0LCBfKSAtPlxuICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5hbGFybSA8LSBhZGRfYWxhcm0gY2xvY2sgfmF0IHN0ZXBfZnVuY3Rpb25fbm9kZS5hbGFybV92YWx1ZSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgc3RlcF9mdW5jdGlvbl92YWx1ZVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHUgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKFVub3JkZXJlZF9hcnJheV9mb2xkLmNvbXB1dGUgdSlcbiAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICB8IFZhciB2YXIgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgdmFyLnZhbHVlXG4gIHwgTWFwMiAoZiwgbjEsIG4yKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChmIChOb2RlLnZhbHVlX2V4biBuMSkgKE5vZGUudmFsdWVfZXhuIG4yKSlcbiAgfCBNYXAzIChmLCBuMSwgbjIsIG4zKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSAoTm9kZS52YWx1ZV9leG4gbjIpIChOb2RlLnZhbHVlX2V4biBuMykpXG4gIHwgTWFwNCAoZiwgbjEsIG4yLCBuMywgbjQpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZiAoTm9kZS52YWx1ZV9leG4gbjEpIChOb2RlLnZhbHVlX2V4biBuMikgKE5vZGUudmFsdWVfZXhuIG4zKSAoTm9kZS52YWx1ZV9leG4gbjQpKVxuICB8IE1hcDUgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpKVxuICB8IE1hcDYgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KSlcbiAgfCBNYXA3IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNykgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpKVxuICB8IE1hcDggKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpKVxuICB8IE1hcDkgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjkpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KSlcbiAgfCBNYXAxMCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApKVxuICB8IE1hcDExIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSkpXG4gIHwgTWFwMTIgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKSlcbiAgfCBNYXAxMyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTMpKVxuICB8IE1hcDE0IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEzKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xNCkpXG4gIHwgTWFwMTUgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0LCBuMTUpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjE1KSlcbiAgfCBFeHBlcnQgZXhwZXJ0IC0+XG4gICAgKG1hdGNoIEV4cGVydC5iZWZvcmVfbWFpbl9jb21wdXRhdGlvbiBleHBlcnQgd2l0aFxuICAgICB8IGBJbnZhbGlkIC0+XG4gICAgICAgaW52YWxpZGF0ZV9ub2RlIG5vZGU7XG4gICAgICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgdFxuICAgICB8IGBPayAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoZXhwZXJ0LmYgKCkpKVxuXG5hbmQgY29weV9jaGlsZCA6IHR5cGUgYS4gcGFyZW50OmEgTm9kZS50IC0+IGNoaWxkOmEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gfnBhcmVudCB+Y2hpbGQgLT5cbiAgaWYgTm9kZS5pc192YWxpZCBjaGlsZFxuICB0aGVuIG1heWJlX2NoYW5nZV92YWx1ZSBwYXJlbnQgKE5vZGUudmFsdWVfZXhuIGNoaWxkKVxuICBlbHNlIChcbiAgICBpbnZhbGlkYXRlX25vZGUgcGFyZW50O1xuICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHBhcmVudC5zdGF0ZSlcblxuYW5kIG1heWJlX2NoYW5nZV92YWx1ZSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gYSAtPiB1bml0ID1cbiAgZnVuIG5vZGUgbmV3X3ZhbHVlIC0+XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICBsZXQgb2xkX3ZhbHVlX29wdCA9IG5vZGUudmFsdWVfb3B0IGluXG4gIGlmIFVvcHQuaXNfbm9uZSBvbGRfdmFsdWVfb3B0XG4gIHx8IG5vdFxuICAgICAgIChDdXRvZmYuc2hvdWxkX2N1dG9mZlxuICAgICAgICAgIG5vZGUuY3V0b2ZmXG4gICAgICAgICAgfm9sZF92YWx1ZTooVW9wdC51bnNhZmVfdmFsdWUgb2xkX3ZhbHVlX29wdClcbiAgICAgICAgICB+bmV3X3ZhbHVlKVxuICB0aGVuIChcbiAgICBub2RlLnZhbHVlX29wdCA8LSBVb3B0LnNvbWUgbmV3X3ZhbHVlO1xuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIHQubnVtX25vZGVzX2NoYW5nZWQgPC0gdC5udW1fbm9kZXNfY2hhbmdlZCArIDE7XG4gICAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgbm9kZS5vbGRfdmFsdWVfb3B0IDwtIG9sZF92YWx1ZV9vcHQ7XG4gICAgICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBub2RlKTtcbiAgICBpZiBub2RlLm51bV9wYXJlbnRzID49IDFcbiAgICB0aGVuIChcbiAgICAgIGZvciBwYXJlbnRfaW5kZXggPSAxIHRvIG5vZGUubnVtX3BhcmVudHMgLSAxIGRvXG4gICAgICAgIGxldCAoVCBwYXJlbnQpID1cbiAgICAgICAgICBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgbm9kZS5wYXJlbnQxX2FuZF9iZXlvbmQgKHBhcmVudF9pbmRleCAtIDEpKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICAgICAgICAgfCBFeHBlcnQgZXhwZXJ0IC0+XG4gICAgICAgICAgIGxldCBjaGlsZF9pbmRleCA9IG5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpIGluXG4gICAgICAgICAgIEV4cGVydC5ydW5fZWRnZV9jYWxsYmFjayB+Y2hpbGRfaW5kZXggZXhwZXJ0XG4gICAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHUgLT5cbiAgICAgICAgICAgVW5vcmRlcmVkX2FycmF5X2ZvbGQuY2hpbGRfY2hhbmdlZFxuICAgICAgICAgICAgIHVcbiAgICAgICAgICAgICB+Y2hpbGQ6bm9kZVxuICAgICAgICAgICAgIH5jaGlsZF9pbmRleDpub2RlLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KVxuICAgICAgICAgICAgIH5vbGRfdmFsdWVfb3B0XG4gICAgICAgICAgICAgfm5ld192YWx1ZVxuICAgICAgICAgfCBfIC0+ICgpKTtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgcGFyZW50KTtcbiAgICAgICAgKCogV2UgZG9uJ3QgZG8gdGhlIFtjYW5fcmVjb21wdXRlX25vd10gb3B0aW1pemF0aW9uLiAgU2luY2UgbW9zdCBub2RlcyBvbmx5IGhhdmVcbiAgICAgICAgICAgb25lIHBhcmVudCwgaXQgaXMgbm90IHByb2JhYmx5IG5vdCBhIGJpZyBsb3NzLiAgSWYgd2UgZGlkIGl0IGFueXdheSwgd2UnZFxuICAgICAgICAgICBoYXZlIHRvIGJlIGNhcmVmdWwsIGJlY2F1c2Ugd2hpbGUgd2UgaXRlcmF0ZSBvdmVyIHRoZSBsaXN0IG9mIHBhcmVudHMsIHdlXG4gICAgICAgICAgIHdvdWxkIGV4ZWN1dGUgdGhlbSwgYW5kIGluIHBhcnRpY3VsYXIgd2UgY2FuIGV4ZWN1dGUgbGhzLWNoYW5nZSBub2RlcyB3aG8gY2FuXG4gICAgICAgICAgIGNoYW5nZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBsaXN0IG9mIHBhcmVudHMgd2UgaXRlcmF0ZSBvbi4gIFRoaW5rIGFib3V0OlxuXG4gICAgICAgICAgIHtbXG4gICAgICAgICAgICAgbGhzID4+PSBmdW4gYiAtPiBpZiBiIHRoZW4gbGhzID4+fCBGbi5pZCBlbHNlIGNvbnN0IGJcbiAgICAgICAgICAgXX1cblxuICAgICAgICAgICBJZiB0aGUgb3B0aW1pemF0aW9uIGtpY2tzIGluIHdoZW4gd2UgcHJvcGFnYXRlIGNoYW5nZSB0byB0aGUgcGFyZW50cyBvZiBbbGhzXVxuICAgICAgICAgICAod2hpY2ggY2hhbmdlcyBmcm9tIFt0cnVlXSB0byBbZmFsc2VdKSwgd2UgY291bGQgZXhlY3V0ZSB0aGUgW2xocy1jaGFuZ2VdXG4gICAgICAgICAgIGZpcnN0LCB3aGljaCB3b3VsZCBtYWtlIGRpc2Nvbm5lY3QgdGhlIFttYXBdIG5vZGUgZnJvbSBbbGhzXS4gIEFuZCB0aGVuIHdlXG4gICAgICAgICAgIHdvdWxkIGV4ZWN1dGUgdGhlIHNlY29uZCBjaGlsZCBvZiB0aGUgW2xoc10sIHdoaWNoIGRvZXNuJ3QgZXhpc3QgYW55bW9yZSBhbmRcbiAgICAgICAgICAgaW5jcmVtZW50YWwgd291bGQgc2VnZmF1bHQgKHRoZXJlIG1heSBiZSBhIGxlc3MgbmFpdmUgd2F5IG9mIG1ha2luZyB0aGlzIHdvcmtcbiAgICAgICAgICAgdGhvdWdoKS4gKilcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudClcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBwYXJlbnRcbiAgICAgIGRvbmU7XG4gICAgICBsZXQgKFQgcGFyZW50KSA9IFVvcHQudmFsdWVfZXhuIG5vZGUucGFyZW50MCBpblxuICAgICAgKG1hdGNoIHBhcmVudC5raW5kIHdpdGhcbiAgICAgICB8IEV4cGVydCBwIC0+XG4gICAgICAgICBsZXQgY2hpbGRfaW5kZXggPSBub2RlLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oMCkgaW5cbiAgICAgICAgIEV4cGVydC5ydW5fZWRnZV9jYWxsYmFjayB+Y2hpbGRfaW5kZXggcFxuICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPlxuICAgICAgICAgVW5vcmRlcmVkX2FycmF5X2ZvbGQuY2hpbGRfY2hhbmdlZFxuICAgICAgICAgICB1XG4gICAgICAgICAgIH5jaGlsZDpub2RlXG4gICAgICAgICAgIH5jaGlsZF9pbmRleDpub2RlLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oMClcbiAgICAgICAgICAgfm9sZF92YWx1ZV9vcHRcbiAgICAgICAgICAgfm5ld192YWx1ZVxuICAgICAgIHwgXyAtPiAoKSk7XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBwYXJlbnQpO1xuICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudClcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgY2FuX3JlY29tcHV0ZV9ub3cgPVxuICAgICAgICAgIG1hdGNoIHBhcmVudC5raW5kIHdpdGhcbiAgICAgICAgICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgKCogVGhlc2Ugbm9kZXMgYXJlbid0IHBhcmVudHMuICopXG4gICAgICAgICAgfCBBdCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgQXRfaW50ZXJ2YWxzIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBDb25zdCBfIHwgSW52YWxpZCB8IFNuYXBzaG90IF8gfCBWYXIgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAoKiBUaGVzZSBub2RlcyBoYXZlIG1vcmUgdGhhbiBvbmUgY2hpbGQuICopXG4gICAgICAgICAgfCBBcnJheV9mb2xkIF9cbiAgICAgICAgICB8IE1hcDIgX1xuICAgICAgICAgIHwgTWFwMyBfXG4gICAgICAgICAgfCBNYXA0IF9cbiAgICAgICAgICB8IE1hcDUgX1xuICAgICAgICAgIHwgTWFwNiBfXG4gICAgICAgICAgfCBNYXA3IF9cbiAgICAgICAgICB8IE1hcDggX1xuICAgICAgICAgIHwgTWFwOSBfXG4gICAgICAgICAgfCBNYXAxMCBfXG4gICAgICAgICAgfCBNYXAxMSBfXG4gICAgICAgICAgfCBNYXAxMiBfXG4gICAgICAgICAgfCBNYXAxMyBfXG4gICAgICAgICAgfCBNYXAxNCBfXG4gICAgICAgICAgfCBNYXAxNSBfXG4gICAgICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfXG4gICAgICAgICAgfCBFeHBlcnQgXyAtPiBmYWxzZVxuICAgICAgICAgICgqIFdlIGNhbiBpbW1lZGlhdGVseSByZWNvbXB1dGUgW3BhcmVudF0gaWYgbm8gb3RoZXIgbm9kZSBuZWVkcyB0byBiZSBzdGFibGVcbiAgICAgICAgICAgICBiZWZvcmUgY29tcHV0aW5nIGl0LiAgSWYgW3BhcmVudF0gaGFzIGEgc2luZ2xlIGNoaWxkIChpLmUuIFtub2RlXSksIHRoZW5cbiAgICAgICAgICAgICB0aGlzIGFtb3VudHMgdG8gY2hlY2tpbmcgdGhhdCBbcGFyZW50XSB3b24ndCBiZSBpbnZhbGlkYXRlZCwgaS5lLiB0aGF0XG4gICAgICAgICAgICAgW3BhcmVudF0ncyBzY29wZSBoYXMgYWxyZWFkeSBzdGFiaWxpemVkLiAqKVxuICAgICAgICAgIHwgQmluZF9saHNfY2hhbmdlIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IEZyZWV6ZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgTWFwIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IFN0ZXBfZnVuY3Rpb24gXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgICgqIEZvciB0aGVzZSwgd2UgbmVlZCB0byBjaGVjayB0aGF0IHRoZSBcIl9jaGFuZ2VcIiBjaGlsZCBoYXMgYWxyZWFkeSBiZWVuXG4gICAgICAgICAgICAgZXZhbHVhdGVkIChpZiBuZWVkZWQpLiAgSWYgc28sIHRoaXMgYWxzbyBpbXBsaWVzOlxuXG4gICAgICAgICAgICAge1tcbiAgICAgICAgICAgICAgIG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgICAgXX0gKilcbiAgICAgICAgICB8IEJpbmRfbWFpbiBiIC0+IG5vZGUuaGVpZ2h0ID4gYi5saHNfY2hhbmdlLmhlaWdodFxuICAgICAgICAgIHwgSWZfdGhlbl9lbHNlIGkgLT4gbm9kZS5oZWlnaHQgPiBpLnRlc3RfY2hhbmdlLmhlaWdodFxuICAgICAgICAgIHwgSm9pbl9tYWluIGogLT4gbm9kZS5oZWlnaHQgPiBqLmxoc19jaGFuZ2UuaGVpZ2h0XG4gICAgICAgIGluXG4gICAgICAgIGlmIGNhbl9yZWNvbXB1dGVfbm93XG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGRcbiAgICAgICAgICA8LSB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkICsgMTtcbiAgICAgICAgICByZWNvbXB1dGUgcGFyZW50KVxuICAgICAgICBlbHNlIGlmIHBhcmVudC5oZWlnaHQgPD0gUmVjb21wdXRlX2hlYXAubWluX2hlaWdodCB0LnJlY29tcHV0ZV9oZWFwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIElmIFtwYXJlbnQuaGVpZ2h0XSBpcyBbPD1dIHRoZSBoZWlnaHQgb2YgYWxsIG5vZGVzIGluIHRoZSByZWNvbXB1dGUgaGVhcFxuICAgICAgICAgICAgIChwb3NzaWJseSBiZWNhdXNlIHRoZSByZWNvbXB1dGUgaGVhcCBpcyBlbXB0eSksIHRoZW4gd2UgY2FuIHJlY29tcHV0ZVxuICAgICAgICAgICAgIFtwYXJlbnRdIGltbWVkaWF0ZWx5IGFuZCBzYXZlIGFkZGluZyBpdCB0byBhbmQgdGhlbiByZW1vdmluZyBpdCBmcm9tIHRoZVxuICAgICAgICAgICAgIHJlY29tcHV0ZSBoZWFwLiAqKVxuICAgICAgICAgIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0XG4gICAgICAgICAgPC0gdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQgKyAxO1xuICAgICAgICAgIHJlY29tcHV0ZSBwYXJlbnQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIHBhcmVudCk7XG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBwYXJlbnQpKTtcbiAgICAgICAgICBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBwYXJlbnQpKSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGludmFyaWFudCB0XG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHJlY29tcHV0ZV9maXJzdF9ub2RlX3RoYXRfaXNfbmVjZXNzYXJ5IHIgPVxuICBsZXQgKFQgbm9kZSkgPSBSZWNvbXB1dGVfaGVhcC5yZW1vdmVfbWluIHIgaW5cbiAgaWYgZGVidWcgJiYgbm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwibm9kZSB1bmV4cGVjdGVkbHkgZG9lcyBub3QgbmVlZCB0byBiZSBjb21wdXRlZFwiXG4gICAgICBub2RlXG4gICAgICBbJXNleHBfb2Y6IF8gTm9kZS50XTtcbiAgcmVjb21wdXRlIG5vZGVcbjs7XG5cbmxldCB1bmxpbmtfZGlzYWxsb3dlZF9vYnNlcnZlcnMgdCA9XG4gIHdoaWxlIFN0YWNrLmxlbmd0aCB0LmRpc2FsbG93ZWRfb2JzZXJ2ZXJzID4gMCBkb1xuICAgIGxldCBwYWNrZWQgPSBTdGFjay5wb3BfZXhuIHQuZGlzYWxsb3dlZF9vYnNlcnZlcnMgaW5cbiAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gcGFja2VkIGluXG4gICAgaWYgZGVidWdcbiAgICB0aGVuXG4gICAgICBhc3NlcnQgKFxuICAgICAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRGlzYWxsb3dlZCAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZSk7XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgPC0gVW5saW5rZWQ7XG4gICAgbGV0IChUIGFsbF9vYnNlcnZlcnMpID0gVW9wdC52YWx1ZV9leG4gdC5hbGxfb2JzZXJ2ZXJzIGluXG4gICAgaWYgSW50ZXJuYWxfb2JzZXJ2ZXIuc2FtZSBpbnRlcm5hbF9vYnNlcnZlciBhbGxfb2JzZXJ2ZXJzXG4gICAgdGhlbiB0LmFsbF9vYnNlcnZlcnMgPC0gaW50ZXJuYWxfb2JzZXJ2ZXIubmV4dF9pbl9hbGw7XG4gICAgSW50ZXJuYWxfb2JzZXJ2ZXIudW5saW5rIGludGVybmFsX29ic2VydmVyO1xuICAgIGNoZWNrX2lmX3VubmVjZXNzYXJ5IGludGVybmFsX29ic2VydmVyLm9ic2VydmluZ1xuICBkb25lXG47O1xuXG5sZXQgZGlzYWxsb3dfZnV0dXJlX3VzZSBpbnRlcm5hbF9vYnNlcnZlciA9XG4gIGxldCB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIuaW5jcl9zdGF0ZSBpbnRlcm5hbF9vYnNlcnZlciBpblxuICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+ICgpXG4gIHwgQ3JlYXRlZCAtPlxuICAgIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgPC0gdC5udW1fYWN0aXZlX29ic2VydmVycyAtIDE7XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgPC0gVW5saW5rZWQ7XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2hhbmRsZXJzIDwtIFtdXG4gIHwgSW5fdXNlIC0+XG4gICAgdC5udW1fYWN0aXZlX29ic2VydmVycyA8LSB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIC0gMTtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBEaXNhbGxvd2VkO1xuICAgIFN0YWNrLnB1c2ggdC5kaXNhbGxvd2VkX29ic2VydmVycyAoVCBpbnRlcm5hbF9vYnNlcnZlcilcbjs7XG5cbmxldCBkaXNhbGxvd19maW5hbGl6ZWRfb2JzZXJ2ZXJzIHQgPVxuICB3aGlsZSBUaHJlYWRfc2FmZV9xdWV1ZS5sZW5ndGggdC5maW5hbGl6ZWRfb2JzZXJ2ZXJzID4gMCBkb1xuICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biB0LmZpbmFsaXplZF9vYnNlcnZlcnMgaW5cbiAgICBpZiBMaXN0LmlzX2VtcHR5IGludGVybmFsX29ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVyc1xuICAgIHRoZW4gZGlzYWxsb3dfZnV0dXJlX3VzZSBpbnRlcm5hbF9vYnNlcnZlclxuICBkb25lXG47O1xuXG5sZXQgb2JzZXJ2ZXJfZmluYWxpemVyIHQgPVxuICBzdGFnZSAoZnVuIG9ic2VydmVyIC0+XG4gICAgbGV0IGludGVybmFsX29ic2VydmVyID0gIW9ic2VydmVyIGluXG4gICAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LmZpbmFsaXplZF9vYnNlcnZlcnMgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpKVxuOztcblxubGV0IGNyZWF0ZV9vYnNlcnZlciA/KHNob3VsZF9maW5hbGl6ZSA9IHRydWUpIChvYnNlcnZpbmcgOiBfIE5vZGUudCkgPVxuICBsZXQgdCA9IG9ic2VydmluZy5zdGF0ZSBpblxuICBsZXQgaW50ZXJuYWxfb2JzZXJ2ZXIgOiBfIEludGVybmFsX29ic2VydmVyLnQgPVxuICAgIHsgc3RhdGUgPSBDcmVhdGVkXG4gICAgOyBvYnNlcnZpbmdcbiAgICA7IG9uX3VwZGF0ZV9oYW5kbGVycyA9IFtdXG4gICAgOyBwcmV2X2luX2FsbCA9IFVvcHQubm9uZVxuICAgIDsgbmV4dF9pbl9hbGwgPSBVb3B0Lm5vbmVcbiAgICA7IHByZXZfaW5fb2JzZXJ2aW5nID0gVW9wdC5ub25lXG4gICAgOyBuZXh0X2luX29ic2VydmluZyA9IFVvcHQubm9uZVxuICAgIH1cbiAgaW5cbiAgU3RhY2sucHVzaCB0Lm5ld19vYnNlcnZlcnMgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpO1xuICBsZXQgb2JzZXJ2ZXIgPSByZWYgaW50ZXJuYWxfb2JzZXJ2ZXIgaW5cbiAgaWYgc2hvdWxkX2ZpbmFsaXplXG4gIHRoZW4gR2MuRXhwZXJ0LmFkZF9maW5hbGl6ZXJfZXhuIG9ic2VydmVyICh1bnN0YWdlIChvYnNlcnZlcl9maW5hbGl6ZXIgdCkpO1xuICB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIDwtIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgKyAxO1xuICBvYnNlcnZlclxuOztcblxubGV0IGFkZF9uZXdfb2JzZXJ2ZXJzIHQgPVxuICB3aGlsZSBTdGFjay5sZW5ndGggdC5uZXdfb2JzZXJ2ZXJzID4gMCBkb1xuICAgIGxldCBwYWNrZWQgPSBTdGFjay5wb3BfZXhuIHQubmV3X29ic2VydmVycyBpblxuICAgIGxldCBtb2R1bGUgUGFja2VkID0gSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkIGluXG4gICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBVbmxpbmtlZCAtPiAoKVxuICAgIHwgQ3JlYXRlZCAtPlxuICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgPC0gSW5fdXNlO1xuICAgICAgbGV0IG9sZF9hbGxfb2JzZXJ2ZXJzID0gdC5hbGxfb2JzZXJ2ZXJzIGluXG4gICAgICBpZiBVb3B0LmlzX3NvbWUgb2xkX2FsbF9vYnNlcnZlcnNcbiAgICAgIHRoZW4gKFxuICAgICAgICBpbnRlcm5hbF9vYnNlcnZlci5uZXh0X2luX2FsbCA8LSBvbGRfYWxsX29ic2VydmVycztcbiAgICAgICAgUGFja2VkLnNldF9wcmV2X2luX2FsbCAoVW9wdC51bnNhZmVfdmFsdWUgb2xkX2FsbF9vYnNlcnZlcnMpIChVb3B0LnNvbWUgcGFja2VkKSk7XG4gICAgICB0LmFsbF9vYnNlcnZlcnMgPC0gVW9wdC5zb21lIHBhY2tlZDtcbiAgICAgIGxldCBvYnNlcnZpbmcgPSBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgaW5cbiAgICAgIGxldCB3YXNfbmVjZXNzYXJ5ID0gTm9kZS5pc19uZWNlc3Nhcnkgb2JzZXJ2aW5nIGluXG4gICAgICBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc1xuICAgICAgPC0gb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnNcbiAgICAgICAgICsgTGlzdC5sZW5ndGggaW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2hhbmRsZXJzO1xuICAgICAgbGV0IG9sZF9vYnNlcnZlcnMgPSBvYnNlcnZpbmcub2JzZXJ2ZXJzIGluXG4gICAgICBpZiBVb3B0LmlzX3NvbWUgb2xkX29ic2VydmVyc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGludGVybmFsX29ic2VydmVyLm5leHRfaW5fb2JzZXJ2aW5nIDwtIG9sZF9vYnNlcnZlcnM7XG4gICAgICAgIChVb3B0LnVuc2FmZV92YWx1ZSBvbGRfb2JzZXJ2ZXJzKS5wcmV2X2luX29ic2VydmluZyA8LSBVb3B0LnNvbWUgaW50ZXJuYWxfb2JzZXJ2ZXIpO1xuICAgICAgb2JzZXJ2aW5nLm9ic2VydmVycyA8LSBVb3B0LnNvbWUgaW50ZXJuYWxfb2JzZXJ2ZXI7XG4gICAgICAoKiBCeSBhZGRpbmcgW2ludGVybmFsX29ic2VydmVyXSB0byBbb2JzZXJ2aW5nLm9ic2VydmVyc10sIHdlIG1heSBoYXZlIGFkZGVkXG4gICAgICAgICBvbi11cGRhdGUgaGFuZGxlcnMgdG8gW29ic2VydmluZ10uICBXZSBuZWVkIHRvIGhhbmRsZSBbb2JzZXJ2aW5nXSBhZnRlciB0aGlzXG4gICAgICAgICBzdGFiaWxpemF0aW9uIHRvIGdpdmUgdGhvc2UgaGFuZGxlcnMgYSBjaGFuY2UgdG8gcnVuLiAqKVxuICAgICAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gb2JzZXJ2aW5nO1xuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IG9ic2VydmluZyk7XG4gICAgICBpZiBub3Qgd2FzX25lY2Vzc2FyeSB0aGVuIGJlY2FtZV9uZWNlc3Nhcnkgb2JzZXJ2aW5nXG4gIGRvbmVcbjs7XG5cbmxldCBvYnNlcnZlcl92YWx1ZV9leG4gb2JzZXJ2ZXIgPVxuICBsZXQgdCA9IE9ic2VydmVyLmluY3Jfc3RhdGUgb2JzZXJ2ZXIgaW5cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IE5vdF9zdGFiaWxpemluZyB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIC0+IE9ic2VydmVyLnZhbHVlX2V4biBvYnNlcnZlclxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgUmFpc2VkX2V4bi5yZXJhaXNlX3dpdGhfbWVzc2FnZVxuICAgICAgcmFpc2VkX2V4blxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGFmdGVyIHN0YWJpbGl6ZSBwcmV2aW91c2x5IHJhaXNlZFwiXG4gIHwgU3RhYmlsaXppbmcgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCBkdXJpbmcgc3RhYmlsaXphdGlvblwiXG4gICAgICBvYnNlcnZlclxuICAgICAgWyVzZXhwX29mOiBfIE9ic2VydmVyLnRdXG47O1xuXG5sZXQgb2JzZXJ2ZXJfdmFsdWUgb2JzZXJ2ZXIgPVxuICB0cnkgT2sgKG9ic2VydmVyX3ZhbHVlX2V4biBvYnNlcnZlcikgd2l0aFxuICB8IGV4biAtPiBFcnJvciAoRXJyb3Iub2ZfZXhuIGV4bilcbjs7XG5cbmxldCBub2RlX29uX3VwZGF0ZSAodHlwZSBhKSAobm9kZSA6IGEgTm9kZS50KSB+ZiA9XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICBOb2RlLm9uX3VwZGF0ZSBub2RlIChPbl91cGRhdGVfaGFuZGxlci5jcmVhdGUgZiB+YXQ6dC5zdGFiaWxpemF0aW9uX251bSk7XG4gIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGVcbjs7XG5cbmxldCBvYnNlcnZlcl9vbl91cGRhdGVfZXhuIG9ic2VydmVyIH5mID1cbiAgbGV0IHQgPSBPYnNlcnZlci5pbmNyX3N0YXRlIG9ic2VydmVyIGluXG4gIE9ic2VydmVyLm9uX3VwZGF0ZV9leG4gb2JzZXJ2ZXIgKE9uX3VwZGF0ZV9oYW5kbGVyLmNyZWF0ZSBmIH5hdDp0LnN0YWJpbGl6YXRpb25fbnVtKTtcbiAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gKE9ic2VydmVyLm9ic2VydmluZyBvYnNlcnZlcilcbjs7XG5cbmxldCBzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyB2YXIgdmFsdWUgPVxuICBsZXQgdCA9IFZhci5pbmNyX3N0YXRlIHZhciBpblxuICB0Lm51bV92YXJfc2V0cyA8LSB0Lm51bV92YXJfc2V0cyArIDE7XG4gIHZhci52YWx1ZSA8LSB2YWx1ZTtcbiAgaWYgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSB2YXIuc2V0X2F0IHQuc3RhYmlsaXphdGlvbl9udW0gPCAwXG4gIHRoZW4gKFxuICAgIHZhci5zZXRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBsZXQgd2F0Y2ggPSB2YXIud2F0Y2ggaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19zdGFsZSB3YXRjaCk7XG4gICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgd2F0Y2ggJiYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHdhdGNoKVxuICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgd2F0Y2gpXG47O1xuXG5sZXQgc2V0X3ZhciB2YXIgdmFsdWUgPVxuICBsZXQgdCA9IFZhci5pbmNyX3N0YXRlIHZhciBpblxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBOb3Rfc3RhYmlsaXppbmcgLT5cbiAgICBzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyB2YXIgdmFsdWVcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIFJhaXNlZF9leG4ucmVyYWlzZV93aXRoX21lc3NhZ2VcbiAgICAgIHJhaXNlZF9leG5cbiAgICAgIFwiY2Fubm90IHNldCB2YXIgLS0gc3RhYmlsaXphdGlvbiBwcmV2aW91c2x5IHJhaXNlZFwiXG4gIHwgU3RhYmlsaXppbmcgLT5cbiAgICBpZiBVb3B0LmlzX25vbmUgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvblxuICAgIHRoZW4gU3RhY2sucHVzaCB0LnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiAoVCB2YXIpO1xuICAgIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gPC0gVW9wdC5zb21lIHZhbHVlXG47O1xuXG5sZXQgcmVjbGFpbV9zcGFjZV9pbl93ZWFrX2hhc2h0YmxzIHQgPVxuICB3aGlsZSBUaHJlYWRfc2FmZV9xdWV1ZS5sZW5ndGggdC53ZWFrX2hhc2h0YmxzID4gMCBkb1xuICAgIGxldCAoVCB3ZWFrX2hhc2h0YmwpID0gVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gdC53ZWFrX2hhc2h0YmxzIGluXG4gICAgV2Vha19oYXNodGJsLnJlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YSB3ZWFrX2hhc2h0YmxcbiAgZG9uZVxuOztcblxubGV0IHN0YWJpbGl6ZV9zdGFydCB0ID1cbiAgdC5zdGF0dXMgPC0gU3RhYmlsaXppbmc7XG4gIGRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMgdDtcbiAgKCogSnVzdCBsaWtlIGZvciBiaW5kcywgd2UgYWRkIG5ldyBvYnNlcnZlcnMgYmVmb3JlIHJlbW92aW5nIGRpc2FsbG93ZWQgb2JzZXJ2ZXJzIHRvXG4gICAgIHBvdGVudGlhbGx5IGF2b2lkIHN3aXRjaGluZyB0aGUgb2JzZXJ2YWJpbGl0eSBvZiBzb21lIG5vZGVzIGJhY2sgYW5kIGZvcnRoLiAqKVxuICBhZGRfbmV3X29ic2VydmVycyB0O1xuICB1bmxpbmtfZGlzYWxsb3dlZF9vYnNlcnZlcnMgdDtcbiAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdFxuOztcblxubGV0IHN0YWJpbGl6ZV9lbmQgdCA9XG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIHQub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlIDwtIE5vbmU7XG4gICAgdC5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA8LSBbXSk7XG4gICgqIFdlIGluY3JlbWVudCBbdC5zdGFiaWxpemF0aW9uX251bV0gYmVmb3JlIGhhbmRsaW5nIHZhcmlhYmxlcyBzZXQgZHVyaW5nXG4gICAgIHN0YWJpbGl6YXRpb24sIHNvIHRoYXQgdGhleSBhcmUgdHJlYXRlZCBhcyBzZXQgZHVyaW5nIHRoZSBuZXcgc3RhYmlsaXphdGlvbiBjeWNsZS5cbiAgICAgQWxzbywgd2UgaW5jcmVtZW50IGJlZm9yZSBydW5uaW5nIG9uLXVwZGF0ZSBoYW5kbGVycywgdG8gYXZvaWQgcnVubmluZyBvbiB1cGRhdGVcbiAgICAgaGFuZGxlcnMgY3JlYXRlZCBkdXJpbmcgb24gdXBkYXRlIGhhbmRsZXJzLiAqKVxuICB0LnN0YWJpbGl6YXRpb25fbnVtIDwtIFN0YWJpbGl6YXRpb25fbnVtLmFkZDEgdC5zdGFiaWxpemF0aW9uX251bTtcbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbikgZG9cbiAgICBsZXQgKFQgdmFyKSA9IFN0YWNrLnBvcF9leG4gdC5zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gaW5cbiAgICBsZXQgdmFsdWUgPSBVb3B0LnZhbHVlX2V4biB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIGluXG4gICAgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA8LSBVb3B0Lm5vbmU7XG4gICAgc2V0X3Zhcl93aGlsZV9ub3Rfc3RhYmlsaXppbmcgdmFyIHZhbHVlXG4gIGRvbmU7XG4gIHdoaWxlIG5vdCAoU3RhY2suaXNfZW1wdHkgdC5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbikgZG9cbiAgICBsZXQgKFQgbm9kZSkgPSBTdGFjay5wb3BfZXhuIHQuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gaW5cbiAgICBub2RlLmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDwtIGZhbHNlO1xuICAgIGxldCBvbGRfdmFsdWUgPSBub2RlLm9sZF92YWx1ZV9vcHQgaW5cbiAgICBub2RlLm9sZF92YWx1ZV9vcHQgPC0gVW9wdC5ub25lO1xuICAgIGxldCBub2RlX3VwZGF0ZSA6IF8gTm9kZV91cGRhdGUudCA9XG4gICAgICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgbm9kZSlcbiAgICAgIHRoZW4gSW52YWxpZGF0ZWRcbiAgICAgIGVsc2UgaWYgbm90IChOb2RlLmlzX25lY2Vzc2FyeSBub2RlKVxuICAgICAgdGhlbiBVbm5lY2Vzc2FyeVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXdfdmFsdWUgPSBVb3B0LnZhbHVlX2V4biBub2RlLnZhbHVlX29wdCBpblxuICAgICAgICBpZiBVb3B0LmlzX25vbmUgb2xkX3ZhbHVlXG4gICAgICAgIHRoZW4gTmVjZXNzYXJ5IG5ld192YWx1ZVxuICAgICAgICBlbHNlIENoYW5nZWQgKFVvcHQudW5zYWZlX3ZhbHVlIG9sZF92YWx1ZSwgbmV3X3ZhbHVlKSlcbiAgICBpblxuICAgIFN0YWNrLnB1c2ggdC5ydW5fb25fdXBkYXRlX2hhbmRsZXJzIChUIChub2RlLCBub2RlX3VwZGF0ZSkpXG4gIGRvbmU7XG4gIHQuc3RhdHVzIDwtIFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzO1xuICBsZXQgbm93ID0gdC5zdGFiaWxpemF0aW9uX251bSBpblxuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQucnVuX29uX3VwZGF0ZV9oYW5kbGVycykgZG9cbiAgICBsZXQgKFQgKG5vZGUsIG5vZGVfdXBkYXRlKSkgPSBTdGFjay5wb3BfZXhuIHQucnVuX29uX3VwZGF0ZV9oYW5kbGVycyBpblxuICAgIE5vZGUucnVuX29uX3VwZGF0ZV9oYW5kbGVycyBub2RlIG5vZGVfdXBkYXRlIH5ub3dcbiAgZG9uZTtcbiAgdC5zdGF0dXMgPC0gTm90X3N0YWJpbGl6aW5nO1xuICByZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMgdFxuOztcblxubGV0IHJhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uIHQgZXhuID1cbiAgbGV0IHJhaXNlZCA9IFJhaXNlZF9leG4uY3JlYXRlIGV4biBpblxuICB0LnN0YXR1cyA8LSBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkO1xuICBSYWlzZWRfZXhuLnJlcmFpc2UgcmFpc2VkXG47O1xuXG5sZXQgc3RhYmlsaXplIHQgPVxuICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJzdGFiaWxpemVcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6ZmFsc2U7XG4gIHRyeVxuICAgIHN0YWJpbGl6ZV9zdGFydCB0O1xuICAgIGxldCByID0gdC5yZWNvbXB1dGVfaGVhcCBpblxuICAgIHdoaWxlIFJlY29tcHV0ZV9oZWFwLmxlbmd0aCByID4gMCBkb1xuICAgICAgcmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uZWNlc3NhcnkgclxuICAgIGRvbmU7XG4gICAgc3RhYmlsaXplX2VuZCB0XG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb24gdCBleG5cbjs7XG5cbm1vZHVsZSBTdGVwX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgS2VlcF9nb2luZ1xuICAgIHwgRG9uZVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgdCA6IFN0ZXBfcmVzdWx0LnQgPVxuICB0cnlcbiAgICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgfCBOb3Rfc3RhYmlsaXppbmcgLT5cbiAgICAgIHN0YWJpbGl6ZV9zdGFydCB0O1xuICAgICAgS2VlcF9nb2luZ1xuICAgIHwgU3RhYmlsaXppbmcgLT5cbiAgICAgIGxldCByID0gdC5yZWNvbXB1dGVfaGVhcCBpblxuICAgICAgaWYgUmVjb21wdXRlX2hlYXAubGVuZ3RoIHIgPiAwXG4gICAgICB0aGVuIChcbiAgICAgICAgcmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uZWNlc3NhcnkgcjtcbiAgICAgICAgS2VlcF9nb2luZylcbiAgICAgIGVsc2UgKFxuICAgICAgICBzdGFiaWxpemVfZW5kIHQ7XG4gICAgICAgIERvbmUpXG4gICAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBfIC0+XG4gICAgICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJzdGVwXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOmZhbHNlO1xuICAgICAgYXNzZXJ0IGZhbHNlXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICAobWF0Y2ggdC5zdGF0dXMgd2l0aFxuICAgICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBfIC0+XG4gICAgICAgKCogSWYgc3RhYmlsaXphdGlvbiBoYXMgYWxyZWFkeSByYWlzZWQsIHRoZW4gW2V4bl0gaXMgbWVyZWx5IGEgbm90aWZpY2F0aW9uIG9mIHRoaXNcbiAgICAgICAgICBmYWN0LCByYXRoZXIgdGhhbiB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uIGl0c2VsZi4gIFdlIHNob3VsZCBqdXN0IHByb3BhZ2F0ZSBbZXhuXVxuICAgICAgICAgIGZvcndhcmQ7IGNhbGxpbmcgW3JhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uXSB3b3VsZCBzdG9yZSBbZXhuXSBhcyB0aGUgZXhjZXB0aW9uXG4gICAgICAgICAgdGhhdCBpbml0aWFsbHkgcmFpc2VkIGR1cmluZyBzdGFiaWxpemF0aW9uLiAqKVxuICAgICAgIHJhaXNlIGV4blxuICAgICB8IF8gLT4gcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb24gdCBleG4pXG47O1xuXG5sZXQgY3JlYXRlX25vZGVfaW4gdCBjcmVhdGVkX2luIGtpbmQgPVxuICB0Lm51bV9ub2Rlc19jcmVhdGVkIDwtIHQubnVtX25vZGVzX2NyZWF0ZWQgKyAxO1xuICBOb2RlLmNyZWF0ZSB0IGNyZWF0ZWRfaW4ga2luZFxuOztcblxubGV0IGNyZWF0ZV9ub2RlIHQga2luZCA9IGNyZWF0ZV9ub2RlX2luIHQgdC5jdXJyZW50X3Njb3BlIGtpbmRcbmxldCBjcmVhdGVfbm9kZV90b3AgdCBraW5kID0gY3JlYXRlX25vZGVfaW4gdCBTY29wZS50b3Aga2luZFxuXG5sZXQgY3JlYXRlX3ZhciB0ID8odXNlX2N1cnJlbnRfc2NvcGUgPSBmYWxzZSkgdmFsdWUgPVxuICBsZXQgc2NvcGUgPSBpZiB1c2VfY3VycmVudF9zY29wZSB0aGVuIHQuY3VycmVudF9zY29wZSBlbHNlIFNjb3BlLnRvcCBpblxuICBsZXQgd2F0Y2ggPSBjcmVhdGVfbm9kZV9pbiB0IHNjb3BlIFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IHZhciA9XG4gICAgeyBWYXIudmFsdWVcbiAgICA7IHZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA9IFVvcHQubm9uZVxuICAgIDsgc2V0X2F0ID0gdC5zdGFiaWxpemF0aW9uX251bVxuICAgIDsgd2F0Y2hcbiAgICB9XG4gIGluXG4gIE5vZGUuc2V0X2tpbmQgd2F0Y2ggKFZhciB2YXIpO1xuICB2YXJcbjs7XG5cbigqIEEgW2NvbnN0XSB2YWx1ZSBjb3VsZCBjb21lIGZyb20gdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiBhbiBvdXRlciBiaW5kLiAgU28sIHdlIGNyZWF0ZSBhXG4gICBbY29uc3RdIG5vZGUgaW4gdGhlIGN1cnJlbnQgc2NvcGUsIG5vdCBpbiBbU2NvcGUudG9wXS4gKilcbmxldCBjb25zdCB0IGEgPSBjcmVhdGVfbm9kZSB0IChDb25zdCBhKVxubGV0IG1hcCAobiA6IF8gTm9kZS50KSB+ZiA9IGNyZWF0ZV9ub2RlIG4uc3RhdGUgKE1hcCAoZiwgbikpXG5sZXQgbWFwMiAobjEgOiBfIE5vZGUudCkgbjIgfmYgPSBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMiAoZiwgbjEsIG4yKSlcblxubGV0IGJvdGggKG4xIDogXyBOb2RlLnQpIChuMiA6IF8gTm9kZS50KSA9XG4gIG1hdGNoIG4xLCBuMiB3aXRoXG4gIHwgeyBraW5kID0gQ29uc3QgYTsgXyB9LCB7IGtpbmQgPSBDb25zdCBiOyBfIH0gLT4gY29uc3QgbjEuc3RhdGUgKGEsIGIpXG4gIHwgXyAtPiBtYXAyIG4xIG4yIH5mOlR1cGxlMi5jcmVhdGVcbjs7XG5cbmxldCBtYXAzIChuMSA6IF8gTm9kZS50KSBuMiBuMyB+ZiA9IGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAzIChmLCBuMSwgbjIsIG4zKSlcbmxldCBtYXA0IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCB+ZiA9IGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA0IChmLCBuMSwgbjIsIG4zLCBuNCkpXG5cbmxldCBtYXA1IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUpKVxuOztcblxubGV0IG1hcDYgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDYgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYpKVxuOztcblxubGV0IG1hcDcgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDcgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43KSlcbjs7XG5cbmxldCBtYXA4IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA4IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgpKVxuOztcblxubGV0IG1hcDkgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDkgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjkpKVxuOztcblxubGV0IG1hcDEwIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTAgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCkpXG47O1xuXG5sZXQgbWFwMTEgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTEgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExKSlcbjs7XG5cbmxldCBtYXAxMiAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTIgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIpKVxuOztcblxubGV0IG1hcDEzIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIG4xMiBuMTMgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMTMgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMykpXG47O1xuXG5sZXQgbWFwMTQgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIG4xMyBuMTQgfmYgPVxuICBjcmVhdGVfbm9kZVxuICAgIG4xLnN0YXRlXG4gICAgKE1hcDE0IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCkpXG47O1xuXG5sZXQgbWFwMTUgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIG4xMyBuMTQgbjE1IH5mID1cbiAgY3JlYXRlX25vZGVcbiAgICBuMS5zdGF0ZVxuICAgIChNYXAxNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzLCBuMTQsIG4xNSkpXG47O1xuXG5sZXQgcHJlc2VydmVfY3V0b2ZmIH4oaW5wdXQgOiBfIE5vZGUudCkgfm91dHB1dCA9XG4gIE5vZGUuc2V0X2N1dG9mZlxuICAgIG91dHB1dFxuICAgIChDdXRvZmYuY3JlYXRlIChmdW4gfm9sZF92YWx1ZTpfIH5uZXdfdmFsdWU6XyAtPlxuICAgICAgIFN0YWJpbGl6YXRpb25fbnVtLmVxdWFsIGlucHV0LmNoYW5nZWRfYXQgb3V0cHV0LmNoYW5nZWRfYXQpKVxuOztcblxubGV0IGRlcGVuZF9vbiBpbnB1dCB+ZGVwZW5kX29uID1cbiAgbGV0IG91dHB1dCA9IG1hcDIgaW5wdXQgZGVwZW5kX29uIH5mOihmdW4gYSBfIC0+IGEpIGluXG4gIHByZXNlcnZlX2N1dG9mZiB+aW5wdXQgfm91dHB1dDtcbiAgb3V0cHV0XG47O1xuXG5sZXQgbmVjZXNzYXJ5X2lmX2FsaXZlIGlucHV0ID1cbiAgKCogSWYgW291dHB1dF0gaXMgYWxpdmUsIHRoZW4gW29ic2VydmVyXSBpcyBhbGl2ZSwgdGhlbiBbaW5wdXRdIGlzIG5lY2Vzc2FyeS4gIElmXG4gICAgIFtvdXRwdXRdIGlzIHVubmVjZXNzYXJ5LCB0aGVuIFtvdXRwdXRdIGlzIG5vdCBhIHBhcmVudCBvZiBbaW5wdXRdLCBhbmQgdGh1c1xuICAgICBbb3V0cHV0XSdzIGxpdmVuZXNzIGlzIGRlcGVuZGVudCBzb2xlbHkgb24gdXNlciBjb2RlLiAgQW5kIGluIHBhcnRpY3VsYXIsIGlmIFtvdXRwdXRdXG4gICAgIGRpZXMsIHRoZW4gW29ic2VydmVyXSB3aWxsIGJlIGZpbmFsaXplZCwgYW5kIHRoZW4gdXBvbiB0aGUgbmV4dCBzdGFiaWxpemF0aW9uLFxuICAgICBbaW5wdXRdIHdpbGwgYmVjb21lIHVubmVjZXNzYXJ5IChhdCBsZWFzdCB3aXRoIHJlc3BlY3QgdG8gW291dHB1dF0pLiAqKVxuICBsZXQgb2JzZXJ2ZXIgPSBjcmVhdGVfb2JzZXJ2ZXIgaW5wdXQgaW5cbiAgbGV0IG91dHB1dCA9XG4gICAgbWFwIGlucHV0IH5mOihmdW4gYSAtPlxuICAgICAgR2Mua2VlcF9hbGl2ZSBvYnNlcnZlcjtcbiAgICAgIGEpXG4gIGluXG4gIHByZXNlcnZlX2N1dG9mZiB+aW5wdXQgfm91dHB1dDtcbiAgb3V0cHV0XG47O1xuXG5sZXQgYmluZCAobGhzIDogXyBOb2RlLnQpIH5mID1cbiAgbGV0IHQgPSBsaHMuc3RhdGUgaW5cbiAgbGV0IGxoc19jaGFuZ2UgPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IGJpbmQgPVxuICAgIHsgQmluZC5tYWluXG4gICAgOyBmXG4gICAgOyBsaHNcbiAgICA7IGxoc19jaGFuZ2VcbiAgICA7IHJocyA9IFVvcHQubm9uZVxuICAgIDsgcmhzX3Njb3BlID0gU2NvcGUudG9wXG4gICAgOyBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgPSBVb3B0Lm5vbmVcbiAgICB9XG4gIGluXG4gICgqIFdlIHNldCBbbGhzX2NoYW5nZV0gdG8gbmV2ZXIgY3V0b2ZmIHNvIHRoYXQgd2hlbmV2ZXIgW2xoc10gY2hhbmdlcywgW21haW5dIGlzXG4gICAgIHJlY29tcHV0ZWQuICBUaGlzIGlzIG5lY2Vzc2FyeSB0byBoYW5kbGUgY2FzZXMgd2hlcmUgW2ZdIHJldHVybnMgYW4gZXhpc3Rpbmcgc3RhYmxlXG4gICAgIG5vZGUsIGluIHdoaWNoIGNhc2UgdGhlIFtsaHNfY2hhbmdlXSB3b3VsZCBiZSB0aGUgb25seSB0aGluZyBjYXVzaW5nIFttYWluXSB0byBiZVxuICAgICBzdGFsZS4gKilcbiAgTm9kZS5zZXRfY3V0b2ZmIGxoc19jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBiaW5kLnJoc19zY29wZSA8LSBCaW5kIGJpbmQ7XG4gIE5vZGUuc2V0X2tpbmQgbGhzX2NoYW5nZSAoQmluZF9saHNfY2hhbmdlIGJpbmQpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKEJpbmRfbWFpbiBiaW5kKTtcbiAgbWFpblxuOztcblxubGV0IGJpbmQyIG4xIG4yIH5mID1cbiAgYmluZCAobWFwMiBuMSBuMiB+ZjooZnVuIHYxIHYyIC0+IHYxLCB2MikpIH5mOihmdW4gKHYxLCB2MikgLT4gZiB2MSB2Milcbjs7XG5cbmxldCBiaW5kMyBuMSBuMiBuMyB+ZiA9XG4gIGJpbmQgKG1hcDMgbjEgbjIgbjMgfmY6KGZ1biB2MSB2MiB2MyAtPiB2MSwgdjIsIHYzKSkgfmY6KGZ1biAodjEsIHYyLCB2MykgLT4gZiB2MSB2MiB2Mylcbjs7XG5cbmxldCBiaW5kNCBuMSBuMiBuMyBuNCB+ZiA9XG4gIGJpbmRcbiAgICAobWFwNCBuMSBuMiBuMyBuNCB+ZjooZnVuIHYxIHYyIHYzIHY0IC0+IHYxLCB2MiwgdjMsIHY0KSlcbiAgICB+ZjooZnVuICh2MSwgdjIsIHYzLCB2NCkgLT4gZiB2MSB2MiB2MyB2NClcbjs7XG5cbmxldCBqb2luIChsaHMgOiBfIE5vZGUudCkgPVxuICBsZXQgdCA9IGxocy5zdGF0ZSBpblxuICBsZXQgbGhzX2NoYW5nZSA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgam9pbiA9IHsgSm9pbi5saHM7IGxoc19jaGFuZ2U7IHJocyA9IFVvcHQubm9uZTsgbWFpbiB9IGluXG4gIE5vZGUuc2V0X2N1dG9mZiBsaHNfY2hhbmdlIEN1dG9mZi5uZXZlcjtcbiAgTm9kZS5zZXRfa2luZCBsaHNfY2hhbmdlIChKb2luX2xoc19jaGFuZ2Ugam9pbik7XG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoSm9pbl9tYWluIGpvaW4pO1xuICBtYWluXG47O1xuXG5sZXQgaWZfICh0ZXN0IDogXyBOb2RlLnQpIH50aGVuXyB+ZWxzZV8gPVxuICBsZXQgdCA9IHRlc3Quc3RhdGUgaW5cbiAgbGV0IHRlc3RfY2hhbmdlID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBpZl90aGVuX2Vsc2UgPVxuICAgIHsgSWZfdGhlbl9lbHNlLnRlc3Q7IHRoZW5fOyBlbHNlXzsgdGVzdF9jaGFuZ2U7IG1haW47IGN1cnJlbnRfYnJhbmNoID0gVW9wdC5ub25lIH1cbiAgaW5cbiAgTm9kZS5zZXRfY3V0b2ZmIHRlc3RfY2hhbmdlIEN1dG9mZi5uZXZlcjtcbiAgTm9kZS5zZXRfa2luZCB0ZXN0X2NoYW5nZSAoSWZfdGVzdF9jaGFuZ2UgaWZfdGhlbl9lbHNlKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChJZl90aGVuX2Vsc2UgaWZfdGhlbl9lbHNlKTtcbiAgbWFpblxuOztcblxubGV0IGxhenlfZnJvbV9mdW4gdCB+ZiA9XG4gIGxldCBzY29wZSA9IHQuY3VycmVudF9zY29wZSBpblxuICBMYXp5LmZyb21fZnVuIChmdW4gKCkgLT4gd2l0aGluX3Njb3BlIHQgc2NvcGUgfmYpXG47O1xuXG5sZXQgZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZSA9IDRcblxubGV0IG1lbW9pemVfZnVuX2J5X2tleVxuICAgICAgPyhpbml0aWFsX3NpemUgPSBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplKVxuICAgICAgdFxuICAgICAgaGFzaGFibGVcbiAgICAgIHByb2plY3Rfa2V5XG4gICAgICBmXG4gID1cbiAgKCogSGVyZSdzIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB3ZSBnZXQgW3QuY3VycmVudF9zY29wZV0gaGVyZSwgYW5kIHRoZW4gY2FsbFxuICAgICBbd2l0aGluX3Njb3BlXSBiZWxvdy4gIENvbnNpZGVyIHRoaXMgKGltcG9zc2libGUpIGFsdGVybmF0ZSBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICBbbWVtb2l6ZV9mdW5fYnlfa2V5XTpcblxuICAgICB7W1xuICAgICAgIGxldCB0YWJsZSA9XG4gICAgICAgICBIYXNodGJsLm9mX2FsaXN0X2V4biBoYXNoYWJsZVxuICAgICAgICAgICAoTGlzdC5tYXAgYWxsX3Bvc3NpYmxlX2FfdmFsdWVzIH5mOihmdW4gYSAtPiAocHJvamVjdF9rZXkgYSwgZiBhKSlcbiAgICAgICBpblxuICAgICAgIHN0YWdlIChmdW4ga2V5IC0+IEhhc2h0YmwuZmluZF9leG4gdGFibGUgKHByb2plY3Rfa2V5IGEpKVxuICAgICBdfVxuXG4gICAgIFRoaXMgaW1wbGVtZW50YXRpb24gZG9lc24ndCB1c2UgW2N1cnJlbnRfc2NvcGVdIG9yIFt3aXRoaW5fc2NvcGVdLiAgQWxsIGNhbGxzIHRvIFtmXVxuICAgICBuYXR1cmFsbHkgb2NjdXIgaW4gW3QuY3VycmVudF9zY29wZV0uXG5cbiAgICAgU3VjaCBhbiBpbXBsZW1lbnRhdGlvbiBpcyBpbXBvc3NpYmxlIGJlY2F1c2Ugd2UgZG8gbm90IGhhdmUgW2FsbF9wb3NzaWJsZV9hX3ZhbHVlc10uXG4gICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBiZWxvdyB1c2VzIFt3aXRoaW5fc2NvcGVdIHRvIGNhbGwgW2YgYV0gaW4gdGhlIHNjb3BlIHRoYXQgd2FzXG4gICAgIGN1cnJlbnQgYXQgdGhlIHBvaW50IG9mIHRoZSBjYWxsIHRvIFttZW1vaXplX2Z1bl9ieV9rZXldIHNvIHRoYXQgd2UgY2FuIHRoaW5rIG9mIHRoZVxuICAgICBbdGFibGVdIGFzIGhhdmluZyBiZWVuIGNyZWF0ZWQgdGhlbiwgd2hlbiBpdCBpbiByZWFsaXR5IGlzIGNyZWF0ZWQgb24tZGVtYW5kLiAqKVxuICBsZXQgc2NvcGUgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgbGV0IHRhYmxlID0gSGFzaHRibC5jcmVhdGUgaGFzaGFibGUgfnNpemU6aW5pdGlhbF9zaXplIGluXG4gIHN0YWdlIChmdW4gYSAtPlxuICAgIGxldCBrZXkgPSBwcm9qZWN0X2tleSBhIGluXG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIHRhYmxlIGtleSB3aXRoXG4gICAgfCBTb21lIGIgLT4gYlxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGIgPSB3aXRoaW5fc2NvcGUgdCBzY29wZSB+ZjooZnVuICgpIC0+IGYgYSkgaW5cbiAgICAgIEhhc2h0YmwuYWRkX2V4biB0YWJsZSB+a2V5IH5kYXRhOmI7XG4gICAgICBiKVxuOztcblxubGV0IGFycmF5X2ZvbGQgdCBjaGlsZHJlbiB+aW5pdCB+ZiA9XG4gIGlmIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiA9IDBcbiAgdGhlbiBjb25zdCB0IGluaXRcbiAgZWxzZSBjcmVhdGVfbm9kZSB0IChBcnJheV9mb2xkIHsgaW5pdDsgZjsgY2hpbGRyZW4gfSlcbjs7XG5cbmxldCBhbGwgdCB0cyA9IGFycmF5X2ZvbGQgdCAoQXJyYXkub2ZfbGlzdF9yZXYgdHMpIH5pbml0OltdIH5mOihmdW4gYWMgYSAtPiBhIDo6IGFjKVxuXG5tb2R1bGUgVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlID0gVW5vcmRlcmVkX2FycmF5X2ZvbGQuVXBkYXRlXG5cbmxldCB1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgICAgdFxuICAgICAgPyhmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzID0gSW50Lm1heF92YWx1ZSlcbiAgICAgIGNoaWxkcmVuXG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgICAgIH51cGRhdGVcbiAgPVxuICBpZiBBcnJheS5sZW5ndGggY2hpbGRyZW4gPSAwXG4gIHRoZW4gY29uc3QgdCBpbml0XG4gIGVsc2UgaWYgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA8PSAwXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwidW5vcmRlcmVkX2FycmF5X2ZvbGQgZ290IG5vbi1wb3NpdGl2ZSBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXCJcbiAgICAgIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICAgIFslc2V4cF9vZjogaW50XVxuICBlbHNlIChcbiAgICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICAgIE5vZGUuc2V0X2tpbmRcbiAgICAgIG1haW5cbiAgICAgIChVbm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgICAgICAgKFVub3JkZXJlZF9hcnJheV9mb2xkLmNyZWF0ZVxuICAgICAgICAgICAgfmluaXRcbiAgICAgICAgICAgIH5mXG4gICAgICAgICAgICB+dXBkYXRlXG4gICAgICAgICAgICB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgICAgICAgICAgfmNoaWxkcmVuXG4gICAgICAgICAgICB+bWFpbikpO1xuICAgIG1haW4pXG47O1xuXG5sZXQgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkIHQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfmluaXQgfmYgfmZfaW52ZXJzZSA9XG4gIGxldCBmIChhY2N1bSwgbnVtX2ludmFsaWQpIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBhY2N1bSwgbnVtX2ludmFsaWQgKyAxXG4gICAgfCBTb21lIHggLT4gZiBhY2N1bSB4LCBudW1faW52YWxpZFxuICBpblxuICBsZXQgZl9pbnZlcnNlIChhY2N1bSwgbnVtX2ludmFsaWQpIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBhY2N1bSwgbnVtX2ludmFsaWQgLSAxXG4gICAgfCBTb21lIHggLT4gZl9pbnZlcnNlIGFjY3VtIHgsIG51bV9pbnZhbGlkXG4gIGluXG4gIG1hcFxuICAgICh1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgICAgIHRcbiAgICAgICB0c1xuICAgICAgIH5pbml0Oihpbml0LCAwKVxuICAgICAgIH5mXG4gICAgICAgfnVwZGF0ZTooRl9pbnZlcnNlIGZfaW52ZXJzZSlcbiAgICAgICA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcylcbiAgICB+ZjooZnVuIChhY2N1bSwgbnVtX2ludmFsaWQpIC0+IGlmIG51bV9pbnZhbGlkID0gMCB0aGVuIFNvbWUgYWNjdW0gZWxzZSBOb25lKVxuOztcblxubGV0IGF0X2xlYXN0X2tfb2YgdCBub2RlcyB+ayA9XG4gIGxldCBib29sX3RvX2ludCBiID0gaWYgYiB0aGVuIDEgZWxzZSAwIGluXG4gIG1hcFxuICAgIH5mOihmdW4gaSAtPiBpID49IGspXG4gICAgKHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgdFxuICAgICAgIG5vZGVzXG4gICAgICAgfmluaXQ6MFxuICAgICAgIH5mOihmdW4gbnVtX3RydWUgYiAtPiBudW1fdHJ1ZSArIGJvb2xfdG9faW50IGIpXG4gICAgICAgfnVwZGF0ZTooRl9pbnZlcnNlIChmdW4gbnVtX3RydWUgYiAtPiBudW1fdHJ1ZSAtIGJvb2xfdG9faW50IGIpKSlcbjs7XG5cbmxldCBleGlzdHMgdCBub2RlcyA9IGF0X2xlYXN0X2tfb2YgdCBub2RlcyB+azoxXG5sZXQgZm9yX2FsbCB0IG5vZGVzID0gYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rOihBcnJheS5sZW5ndGggbm9kZXMpXG5cbmxldCBzdW0gdCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBub2RlcyB+emVybyB+YWRkIH5zdWIgPVxuICB1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgIHRcbiAgICBub2Rlc1xuICAgIH5pbml0Onplcm9cbiAgICB+ZjphZGRcbiAgICB+dXBkYXRlOihGX2ludmVyc2Ugc3ViKVxuICAgID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG47O1xuXG5sZXQgb3B0X3N1bSB0ID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIG5vZGVzIH56ZXJvIH5hZGQgfnN1YiA9XG4gIG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgIHRcbiAgICBub2Rlc1xuICAgIH5pbml0Onplcm9cbiAgICB+ZjphZGRcbiAgICB+Zl9pbnZlcnNlOnN1YlxuICAgID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG47O1xuXG5sZXQgc3VtX2ludCB0IG5vZGVzID0gc3VtIHQgbm9kZXMgfnplcm86MCB+YWRkOiggKyApIH5zdWI6KCAtIClcblxubGV0IHN1bV9mbG9hdCB0IG5vZGVzID1cbiAgc3VtXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfnplcm86MC5cbiAgICB+YWRkOiggKy4gKVxuICAgIH5zdWI6KCAtLiApXG4gICAgfmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXM6KEFycmF5Lmxlbmd0aCBub2Rlcylcbjs7XG5cbmxldCBzZXRfZnJlZXplIChub2RlIDogXyBOb2RlLnQpIH5jaGlsZCB+b25seV9mcmVlemVfd2hlbiA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChTY29wZS5pc190b3Agbm9kZS5jcmVhdGVkX2luKTtcbiAgKCogQnkgbWFraW5nIFtub2RlLmtpbmRdIGJlIFtGcmVlemVdLCB3ZSBhcmUgbWFraW5nIFtOb2RlLmlzX25lY2Vzc2FyeSBub2RlXS4gKilcbiAgbGV0IHdhc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeSBub2RlIGluXG4gIE5vZGUuc2V0X2tpbmQgbm9kZSAoRnJlZXplIHsgbWFpbiA9IG5vZGU7IGNoaWxkOyBvbmx5X2ZyZWV6ZV93aGVuIH0pO1xuICBpZiB3YXNfbmVjZXNzYXJ5XG4gIHRoZW4gYWRkX3BhcmVudCB+Y2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDpLaW5kLmZyZWV6ZV9jaGlsZF9pbmRleFxuICBlbHNlIGJlY2FtZV9uZWNlc3Nhcnkgbm9kZVxuOztcblxubGV0IGZyZWV6ZSAoY2hpbGQgOiBfIE5vZGUudCkgfm9ubHlfZnJlZXplX3doZW4gPVxuICBsZXQgdCA9IGNoaWxkLnN0YXRlIGluXG4gIGxldCBub2RlID0gY3JlYXRlX25vZGVfdG9wIHQgVW5pbml0aWFsaXplZCBpblxuICBzZXRfZnJlZXplIG5vZGUgfmNoaWxkIH5vbmx5X2ZyZWV6ZV93aGVuO1xuICBub2RlXG47O1xuXG5sZXQgYXQgY2xvY2sgdGltZSA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBpZiBUaW1lX25zLiggPD0gKSB0aW1lIChub3cgY2xvY2spXG4gIHRoZW4gY29uc3QgdCBCZWZvcmVfb3JfYWZ0ZXIuQWZ0ZXJcbiAgZWxzZSAoXG4gICAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgICBsZXQgYXQgPSB7IEF0LmF0ID0gdGltZTsgbWFpbjsgYWxhcm0gPSBBbGFybS5udWxsOyBjbG9jayB9IGluXG4gICAgTm9kZS5zZXRfa2luZCBtYWluIChBdCBhdCk7XG4gICAgYXQuYWxhcm0gPC0gYWRkX2FsYXJtIGNsb2NrIH5hdDp0aW1lIChBbGFybV92YWx1ZS5jcmVhdGUgKEF0IGF0KSk7XG4gICAgbWFpbilcbjs7XG5cbmxldCBhZnRlciBjbG9jayBzcGFuID0gYXQgY2xvY2sgKFRpbWVfbnMuYWRkIChub3cgY2xvY2spIHNwYW4pXG5cbmxldCBuZXh0X2ludGVydmFsX2FsYXJtX3N0cmljdCAoY2xvY2sgOiBDbG9jay50KSB+YmFzZSB+aW50ZXJ2YWwgPVxuICBsZXQgYWZ0ZXIgPSBub3cgY2xvY2sgaW5cbiAgbGV0IGF0ID0gVGltZV9ucy5uZXh0X211bHRpcGxlIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgfmNhbl9lcXVhbF9hZnRlcjpmYWxzZSAoKSBpblxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVGltZV9ucy4oID4gKSBhdCBhZnRlcik7XG4gIGF0XG47O1xuXG5sZXQgYXRfaW50ZXJ2YWxzIChjbG9jayA6IENsb2NrLnQpIGludGVydmFsID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuU3Bhbi4oIDwgKSBpbnRlcnZhbCAoVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiBjbG9jay50aW1pbmdfd2hlZWwpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiYXRfaW50ZXJ2YWxzIGdvdCB0b28gc21hbGwgaW50ZXJ2YWxcIlxuICAgICAgaW50ZXJ2YWxcbiAgICAgIFslc2V4cF9vZjogVGltZV9ucy5TcGFuLnRdO1xuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgYmFzZSA9IG5vdyBjbG9jayBpblxuICBsZXQgYXRfaW50ZXJ2YWxzID0geyBBdF9pbnRlcnZhbHMubWFpbjsgYmFzZTsgaW50ZXJ2YWw7IGFsYXJtID0gQWxhcm0ubnVsbDsgY2xvY2sgfSBpblxuICBOb2RlLnNldF9raW5kIG1haW4gKEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMpO1xuICAoKiBbbWFpbiA6IHVuaXQgTm9kZS50XSwgc28gd2UgbWFrZSBpdCBuZXZlciBjdXRvZmYgc28gaXQgY2hhbmdlcyBlYWNoIHRpbWUgaXQgaXNcbiAgICAgcmVjb21wdXRlZC4gKilcbiAgTm9kZS5zZXRfY3V0b2ZmIG1haW4gQ3V0b2ZmLm5ldmVyO1xuICBhdF9pbnRlcnZhbHMuYWxhcm1cbiAgPC0gYWRkX2FsYXJtXG4gICAgICAgY2xvY2tcbiAgICAgICB+YXQ6KG5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IGNsb2NrIH5iYXNlIH5pbnRlcnZhbClcbiAgICAgICAoQWxhcm1fdmFsdWUuY3JlYXRlIChBdF9pbnRlcnZhbHMgYXRfaW50ZXJ2YWxzKSk7XG4gIG1haW5cbjs7XG5cbmxldCBzbmFwc2hvdCBjbG9jayB2YWx1ZV9hdCB+YXQgfmJlZm9yZSA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBpZiBUaW1lX25zLiggPD0gKSBhdCAobm93IGNsb2NrKVxuICB0aGVuXG4gICAgaWYgVGltZV9ucy4oIDwgKSBhdCAobm93IGNsb2NrKVxuICAgIHRoZW4gT3JfZXJyb3IuZXJyb3IgXCJjYW5ub3QgdGFrZSBzbmFwc2hvdCBpbiB0aGUgcGFzdFwiIGF0IFslc2V4cF9vZjogVGltZV9ucy50XVxuICAgIGVsc2UgT2sgKGZyZWV6ZSB2YWx1ZV9hdCB+b25seV9mcmVlemVfd2hlbjooRm4uY29uc3QgdHJ1ZSkpXG4gIGVsc2UgKFxuICAgIGxldCBtYWluID0gY3JlYXRlX25vZGVfdG9wIHQgVW5pbml0aWFsaXplZCBpblxuICAgIGxldCBzbmFwc2hvdCA9IHsgU25hcHNob3QubWFpbjsgYXQ7IGJlZm9yZTsgdmFsdWVfYXQ7IGNsb2NrIH0gaW5cbiAgICBOb2RlLnNldF9raW5kIG1haW4gKFNuYXBzaG90IHNuYXBzaG90KTtcbiAgICAoKiBVbmxpa2Ugb3RoZXIgdGltZS1iYXNlZCBpbmNyZW1lbnRhbHMsIGEgc25hcHNob3QgaXMgY3JlYXRlZCBpbiBbU2NvcGUudG9wXSBhbmRcbiAgICAgICBjYW5ub3QgYmUgaW52YWxpZGF0ZWQgYnkgaXRzIHNjb3BlLiAgVGh1cywgdGhlcmUgaXMgbm8gbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZVxuICAgICAgIGFsYXJtIHRoYXQgaXMgYWRkZWQsIGJlY2F1c2UgaXQgd2lsbCBuZXZlciBuZWVkIHRvIGJlIHJlbW92ZWQgZWFybHkuICopXG4gICAgaWdub3JlIChhZGRfYWxhcm0gY2xvY2sgfmF0IChBbGFybV92YWx1ZS5jcmVhdGUgKFNuYXBzaG90IHNuYXBzaG90KSkgOiBBbGFybS50KTtcbiAgICBPayBtYWluKVxuOztcblxubGV0IGluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24gY2xvY2sgY2hpbGQgPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IHN0ZXBfZnVuY3Rpb25fbm9kZSA9XG4gICAgeyBTdGVwX2Z1bmN0aW9uX25vZGUubWFpblxuICAgIDsgdmFsdWUgPSBVb3B0Lm5vbmVcbiAgICA7IGNoaWxkID0gVW9wdC5zb21lIGNoaWxkXG4gICAgOyBleHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0ID0gU3RhYmlsaXphdGlvbl9udW0ubm9uZVxuICAgIDsgdXBjb21pbmdfc3RlcHMgPSBTZXF1ZW5jZS5lbXB0eVxuICAgIDsgYWxhcm0gPSBBbGFybS5udWxsXG4gICAgOyBhbGFybV92YWx1ZSA9IE9iai5tYWdpYyBOb25lICgqIHNldCBiZWxvdyAqKVxuICAgIDsgY2xvY2tcbiAgICB9XG4gIGluXG4gIHN0ZXBfZnVuY3Rpb25fbm9kZS5hbGFybV92YWx1ZSA8LSBBbGFybV92YWx1ZS5jcmVhdGUgKFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChTdGVwX2Z1bmN0aW9uIHN0ZXBfZnVuY3Rpb25fbm9kZSk7XG4gIG1haW5cbjs7XG5cbmxldCBtYWtlX3N0YWxlIChub2RlIDogXyBOb2RlLnQpID1cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIG5vZGUucmVjb21wdXRlZF9hdCA8LSBTdGFiaWxpemF0aW9uX251bS5ub25lO1xuICAoKiBmb3JjZSB0aGUgbm9kZSB0byBiZSBzdGFsZSAqKVxuICBpZiBOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUgJiYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgbm9kZVxuOztcblxubGV0IGFkdmFuY2VfY2xvY2sgKGNsb2NrIDogQ2xvY2sudCkgfnRvXyA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJhZHZhbmNlX2Nsb2NrXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOnRydWU7XG4gIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIFRpbWVfbnMuKCA+ICkgdG9fIChub3cgY2xvY2spXG4gIHRoZW4gKFxuICAgIHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIGNsb2NrLm5vdyB0b187XG4gICAgVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2sgY2xvY2sudGltaW5nX3doZWVsIH50b18gfmhhbmRsZV9maXJlZDpjbG9jay5oYW5kbGVfZmlyZWQ7XG4gICAgVGltaW5nX3doZWVsLmZpcmVfcGFzdF9hbGFybXMgY2xvY2sudGltaW5nX3doZWVsIH5oYW5kbGVfZmlyZWQ6Y2xvY2suaGFuZGxlX2ZpcmVkO1xuICAgIHdoaWxlIFVvcHQuaXNfc29tZSBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgZG9cbiAgICAgIGxldCBhbGFybV92YWx1ZSA9IFVvcHQudW5zYWZlX3ZhbHVlIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyBpblxuICAgICAgY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzIDwtIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQ7XG4gICAgICBhbGFybV92YWx1ZS5uZXh0X2ZpcmVkIDwtIFVvcHQubm9uZTtcbiAgICAgIG1hdGNoIGFsYXJtX3ZhbHVlLmFjdGlvbiB3aXRoXG4gICAgICB8IEF0IHsgbWFpbjsgXyB9IC0+XG4gICAgICAgIGlmIE5vZGUuaXNfdmFsaWQgbWFpblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBOb2RlLnNldF9raW5kIG1haW4gKENvbnN0IEFmdGVyKTtcbiAgICAgICAgICBtYWtlX3N0YWxlIG1haW4pXG4gICAgICB8IEF0X2ludGVydmFscyAoeyBtYWluOyBiYXNlOyBpbnRlcnZhbDsgXyB9IGFzIGF0X2ludGVydmFscykgLT5cbiAgICAgICAgaWYgTm9kZS5pc192YWxpZCBtYWluXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGF0X2ludGVydmFscy5hbGFybVxuICAgICAgICAgIDwtIGFkZF9hbGFybVxuICAgICAgICAgICAgICAgY2xvY2tcbiAgICAgICAgICAgICAgIH5hdDoobmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QgY2xvY2sgfmJhc2UgfmludGVydmFsKVxuICAgICAgICAgICAgICAgYWxhcm1fdmFsdWU7XG4gICAgICAgICAgbWFrZV9zdGFsZSBtYWluKVxuICAgICAgfCBTbmFwc2hvdCB7IG1haW47IHZhbHVlX2F0OyBfIH0gLT5cbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfdmFsaWQgbWFpbik7XG4gICAgICAgIHNldF9mcmVlemUgbWFpbiB+Y2hpbGQ6dmFsdWVfYXQgfm9ubHlfZnJlZXplX3doZW46KGZ1biBfIC0+IHRydWUpO1xuICAgICAgICBtYWtlX3N0YWxlIG1haW5cbiAgICAgIHwgU3RlcF9mdW5jdGlvbiB7IG1haW47IF8gfSAtPiBpZiBOb2RlLmlzX3ZhbGlkIG1haW4gdGhlbiBtYWtlX3N0YWxlIG1haW5cbiAgICBkb25lO1xuICAgIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHQpXG47O1xuXG5sZXQgY3JlYXRlX2Nsb2NrIHQgfnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0ID1cbiAgbGV0IHRpbWluZ193aGVlbCA9IFRpbWluZ193aGVlbC5jcmVhdGUgfmNvbmZpZzp0aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydCBpblxuICBsZXQgcmVjIGNsb2NrIDogQ2xvY2sudCA9XG4gICAgeyBub3cgPSBjcmVhdGVfdmFyIHQgc3RhcnRcbiAgICA7IGhhbmRsZV9maXJlZFxuICAgIDsgZmlyZWRfYWxhcm1fdmFsdWVzID0gVW9wdC5ub25lXG4gICAgOyB0aW1pbmdfd2hlZWxcbiAgICB9XG4gIGFuZCBoYW5kbGVfZmlyZWQgYWxhcm0gPVxuICAgIGxldCBhbGFybV92YWx1ZSA9IFRpbWluZ193aGVlbC5BbGFybS52YWx1ZSBjbG9jay50aW1pbmdfd2hlZWwgYWxhcm0gaW5cbiAgICBhbGFybV92YWx1ZS5uZXh0X2ZpcmVkIDwtIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcztcbiAgICBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgPC0gVW9wdC5zb21lIGFsYXJtX3ZhbHVlXG4gIGluXG4gIGNsb2NrXG47O1xuXG5sZXQgY3JlYXRlIChtb2R1bGUgQ29uZmlnIDogQ29uZmlnLkluY3JlbWVudGFsX2NvbmZpZykgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIGxldCBhZGp1c3RfaGVpZ2h0c19oZWFwID0gQWRqdXN0X2hlaWdodHNfaGVhcC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCBpblxuICBsZXQgcmVjb21wdXRlX2hlYXAgPSBSZWNvbXB1dGVfaGVhcC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCBpblxuICBsZXQgdCA9XG4gICAgeyBzdGF0dXMgPSBOb3Rfc3RhYmlsaXppbmdcbiAgICA7IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgPSBDb25maWcuYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3Joc1xuICAgIDsgc3RhYmlsaXphdGlvbl9udW0gPSBTdGFiaWxpemF0aW9uX251bS56ZXJvXG4gICAgOyBjdXJyZW50X3Njb3BlID0gU2NvcGUudG9wXG4gICAgOyBhZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgOyByZWNvbXB1dGVfaGVhcFxuICAgIDsgcHJvcGFnYXRlX2ludmFsaWRpdHkgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IG51bV9hY3RpdmVfb2JzZXJ2ZXJzID0gMFxuICAgIDsgYWxsX29ic2VydmVycyA9IFVvcHQubm9uZVxuICAgIDsgZmluYWxpemVkX29ic2VydmVycyA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgZGlzYWxsb3dlZF9vYnNlcnZlcnMgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IG5ld19vYnNlcnZlcnMgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IG9ubHlfaW5fZGVidWcgPSBPbmx5X2luX2RlYnVnLmNyZWF0ZSAoKVxuICAgIDsgd2Vha19oYXNodGJscyA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsga2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSA9IGZhbHNlXG4gICAgOyBudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSA9IDBcbiAgICA7IG51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgPSAwXG4gICAgOyBudW1fbm9kZXNfY2hhbmdlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19pbnZhbGlkYXRlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19jcmVhdGVkID0gMFxuICAgIDsgbnVtX25vZGVzX3JlY29tcHV0ZWQgPSAwXG4gICAgOyBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZCA9IDBcbiAgICA7IG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCA9IDBcbiAgICA7IG51bV92YXJfc2V0cyA9IDBcbiAgICB9XG4gIGluXG4gIHRcbjs7XG5cbmxldCB3ZWFrX21lbW9pemVfZnVuX2J5X2tleVxuICAgICAgPyhpbml0aWFsX3NpemUgPSBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplKVxuICAgICAgdFxuICAgICAgaGFzaGFibGVcbiAgICAgIHByb2plY3Rfa2V5XG4gICAgICBmXG4gID1cbiAgbGV0IHNjb3BlID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIGxldCB0YWJsZSA9IFdlYWtfaGFzaHRibC5jcmVhdGUgfnNpemU6aW5pdGlhbF9zaXplIGhhc2hhYmxlIGluXG4gIGxldCBwYWNrZWQgPSBQYWNrZWRfd2Vha19oYXNodGJsLlQgdGFibGUgaW5cbiAgV2Vha19oYXNodGJsLnNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSB0YWJsZSB+dGhyZWFkX3NhZmVfZjooZnVuICgpIC0+XG4gICAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LndlYWtfaGFzaHRibHMgcGFja2VkKTtcbiAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgbGV0IGtleSA9IHByb2plY3Rfa2V5IGEgaW5cbiAgICBtYXRjaCBXZWFrX2hhc2h0YmwuZmluZCB0YWJsZSBrZXkgd2l0aFxuICAgIHwgU29tZSBiIC0+IGJcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBiID0gd2l0aGluX3Njb3BlIHQgc2NvcGUgfmY6KGZ1biAoKSAtPiBmIGEpIGluXG4gICAgICBXZWFrX2hhc2h0YmwuYWRkX2V4biB0YWJsZSB+a2V5IH5kYXRhOmI7XG4gICAgICBiKVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAoKiBHaXZlbiB0aGF0IGludmFsaWQgbm9kZSBhcmUgYXQgYXR0ZW1wdCBhdCBhdm9pZGluZyBicmVha2luZyB0aGUgZW50aXJlIGluY3JlbWVudGFsXG4gICAgIGNvbXB1dGF0aW9uIG9uIHByb2JsZW1zLCBsZXQncyBqdXN0IGlnbm9yZSBhbnkgb3BlcmF0aW9uIG9uIGFuIGludmFsaWQgaW5jcmVtZW50YWxcbiAgICAgcmF0aGVyIHRoYW4gcmFpc2luZy4gKilcbiAgbGV0IGV4cGVydF9raW5kX29mX25vZGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICAgIG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICAgfCBFeHBlcnQgZSAtPiBVb3B0LnNvbWUgZVxuICAgIHwgSW52YWxpZCAtPiBVb3B0Lm5vbmVcbiAgICB8IGtpbmQgLT4gcmFpc2VfcyBbJXNleHAgXCJ1bmV4cGVjdGVkIGtpbmQgZm9yIGV4cGVydCBub2RlXCIsIChraW5kIDogXyBLaW5kLnQpXVxuICA7O1xuXG4gIGxldCBjcmVhdGUgc3RhdGUgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIGYgPVxuICAgIGxldCBlID0gRXhwZXJ0LmNyZWF0ZSB+ZiB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgaW5cbiAgICBsZXQgbm9kZSA9IGNyZWF0ZV9ub2RlIHN0YXRlIChFeHBlcnQgZSkgaW5cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIGlmIE9wdGlvbi5pc19zb21lIHN0YXRlLm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZVxuICAgICAgdGhlblxuICAgICAgICBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZVxuICAgICAgICA8LSBUIG5vZGUgOjogc3RhdGUub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGU7XG4gICAgbm9kZVxuICA7O1xuXG4gIGxldCBjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biBzdGF0ZSBuYW1lID1cbiAgICBtYXRjaCBzdGF0ZS5vbmx5X2luX2RlYnVnLmN1cnJlbnRseV9ydW5uaW5nX25vZGUgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZV9zIFslc2V4cCAoXCJjYW4gb25seSBjYWxsIFwiIF4gbmFtZSBeIFwiIGR1cmluZyBzdGFiaWxpemF0aW9uXCIgOiBzdHJpbmcpXVxuICAgIHwgU29tZSBjdXJyZW50IC0+IGN1cnJlbnRcbiAgOztcblxuICAoKiBOb3RlIHRoYXQgdGhlIHR3byBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBub3Qgc3ltbWV0cmljIG9mIG9uZSBhbm90aGVyOiBpbiBbbGV0IHkgPVxuICAgICBtYXAgeF0sIFt4XSBpcyBhbHdheXMgYSBjaGlsZCBvZiBbeV0gKGFzc3VtaW5nIFt4XSBkb2Vzbid0IGJlY29tZSBpbnZhbGlkKSBidXQgW3ldIGluXG4gICAgIG9ubHkgYSBwYXJlbnQgb2YgW3hdIGlmIHkgaXMgbmVjZXNzYXJ5LiAqKVxuICBsZXQgYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBuYW1lID1cbiAgICBsZXQgKFQgY3VycmVudCkgPSBjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biBzdGF0ZSBuYW1lIGluXG4gICAgaWYgbm90IChOb2RlLmhhc19jaGlsZCBub2RlIH5jaGlsZDpjdXJyZW50KVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgKFwiY2FuIG9ubHkgY2FsbCBcIiBeIG5hbWUgXiBcIiBvbiBwYXJlbnQgbm9kZXNcIiA6IHN0cmluZylcbiAgICAgICAgLCB+fihub2RlLmtpbmQgOiBfIEtpbmQudClcbiAgICAgICAgLCB+fihjdXJyZW50LmtpbmQgOiBfIEtpbmQudCldXG4gIDs7XG5cbiAgbGV0IGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX3BhcmVudCBzdGF0ZSBub2RlIG5hbWUgPVxuICAgIGxldCAoVCBjdXJyZW50KSA9IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgaW5cbiAgICBpZiBub3QgKE5vZGUuaGFzX3BhcmVudCB+cGFyZW50OmN1cnJlbnQgbm9kZSlcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIChcImNhbiBvbmx5IGNhbGwgXCIgXiBuYW1lIF4gXCIgb24gY2hpbGRyZW4gbm9kZXNcIiA6IHN0cmluZylcbiAgICAgICAgLCB+fihub2RlLmtpbmQgOiBfIEtpbmQudClcbiAgICAgICAgLCB+fihjdXJyZW50LmtpbmQgOiBfIEtpbmQudCldXG4gIDs7XG5cbiAgbGV0IG1ha2Vfc3RhbGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICAgIGxldCBzdGF0ZSA9IG5vZGUuc3RhdGUgaW5cbiAgICBsZXQgZV9vcHQgPSBleHBlcnRfa2luZF9vZl9ub2RlIG5vZGUgaW5cbiAgICBpZiBVb3B0LmlzX3NvbWUgZV9vcHRcbiAgICB0aGVuIChcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBcIm1ha2Vfc3RhbGVcIjtcbiAgICAgIGxldCBlID0gVW9wdC51bnNhZmVfdmFsdWUgZV9vcHQgaW5cbiAgICAgIG1hdGNoIEV4cGVydC5tYWtlX3N0YWxlIGUgd2l0aFxuICAgICAgfCBgQWxyZWFkeV9zdGFsZSAtPiAoKVxuICAgICAgfCBgT2sgLT5cbiAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgc3RhdGUucmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgOztcblxuICBsZXQgaW52YWxpZGF0ZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBcImludmFsaWRhdGVcIjtcbiAgICBpbnZhbGlkYXRlX25vZGUgbm9kZTtcbiAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSBzdGF0ZVxuICA7O1xuXG4gIGxldCBhZGRfZGVwZW5kZW5jeSAobm9kZSA6IF8gTm9kZS50KSAoZGVwIDogXyBFeHBlcnQuZWRnZSkgPVxuICAgIGxldCBzdGF0ZSA9IG5vZGUuc3RhdGUgaW5cbiAgICBsZXQgZV9vcHQgPSBleHBlcnRfa2luZF9vZl9ub2RlIG5vZGUgaW5cbiAgICBpZiBVb3B0LmlzX3NvbWUgZV9vcHRcbiAgICB0aGVuIChcbiAgICAgIGlmIGRlYnVnXG4gICAgICB0aGVuXG4gICAgICAgIGlmIGFtX3N0YWJpbGl6aW5nIHN0YXRlXG4gICAgICAgICYmIG5vdFxuICAgICAgICAgICAgIChMaXN0Lm1lbVxuICAgICAgICAgICAgICAgIH5lcXVhbDpwaHlzX2VxdWFsXG4gICAgICAgICAgICAgICAgc3RhdGUub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGVcbiAgICAgICAgICAgICAgICAoVCBub2RlKSlcbiAgICAgICAgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwiYWRkX2RlcGVuZGVuY3lcIjtcbiAgICAgIGxldCBlID0gVW9wdC51bnNhZmVfdmFsdWUgZV9vcHQgaW5cbiAgICAgIGxldCBuZXdfY2hpbGRfaW5kZXggPSBFeHBlcnQuYWRkX2NoaWxkX2VkZ2UgZSAoRSBkZXApIGluXG4gICAgICAoKiBbbm9kZV0gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgbmVjZXNzYXJ5LCBldmVuIGlmIHdlIGFyZSBydW5uaW5nIGluIGEgY2hpbGQgb2ZcbiAgICAgICAgIFtub2RlXSwgYmVjYXVzZSB3ZSBjb3VsZCBiZSBydW5uaW5nIGR1ZSB0byBhIHBhcmVudCBvdGhlciB0aGFuIFtub2RlXSBtYWtpbmcgdXNcbiAgICAgICAgIG5lY2Vzc2FyeS4gKilcbiAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRfcGFyZW50IH5jaGlsZDpkZXAuY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDpuZXdfY2hpbGRfaW5kZXg7XG4gICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpO1xuICAgICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgc3RhdGUucmVjb21wdXRlX2hlYXAgbm9kZSkpXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9kZXBlbmRlbmN5IChub2RlIDogXyBOb2RlLnQpIChlZGdlIDogXyBFeHBlcnQuZWRnZSkgPVxuICAgIGxldCBzdGF0ZSA9IG5vZGUuc3RhdGUgaW5cbiAgICBsZXQgZV9vcHQgPSBleHBlcnRfa2luZF9vZl9ub2RlIG5vZGUgaW5cbiAgICBpZiBVb3B0LmlzX3NvbWUgZV9vcHRcbiAgICB0aGVuIChcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBcInJlbW92ZV9kZXBlbmRlbmN5XCI7XG4gICAgICBsZXQgZSA9IFVvcHQudW5zYWZlX3ZhbHVlIGVfb3B0IGluXG4gICAgICAoKiBbbm9kZV0gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgbmVjZXNzYXJ5LCBmb3IgdGhlIHJlYXNvbiBzdGF0ZWQgaW5cbiAgICAgICAgIFthZGRfZGVwZW5kZW5jeV0gKilcbiAgICAgIGxldCBlZGdlX2luZGV4ID0gVW9wdC52YWx1ZV9leG4gZWRnZS5pbmRleCBpblxuICAgICAgbGV0IChFIGxhc3RfZWRnZSkgPSBFeHBlcnQubGFzdF9jaGlsZF9lZGdlX2V4biBlIGluXG4gICAgICBsZXQgbGFzdF9lZGdlX2luZGV4ID0gVW9wdC52YWx1ZV9leG4gbGFzdF9lZGdlLmluZGV4IGluXG4gICAgICBpZiBlZGdlX2luZGV4IDw+IGxhc3RfZWRnZV9pbmRleFxuICAgICAgdGhlbiAoXG4gICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgICAgdGhlblxuICAgICAgICAgIE5vZGUuc3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZFxuICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgfmNoaWxkMTplZGdlLmNoaWxkXG4gICAgICAgICAgICB+Y2hpbGRfaW5kZXgxOmVkZ2VfaW5kZXhcbiAgICAgICAgICAgIH5jaGlsZDI6bGFzdF9lZGdlLmNoaWxkXG4gICAgICAgICAgICB+Y2hpbGRfaW5kZXgyOmxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgRXhwZXJ0LnN3YXBfY2hpbGRyZW4gZSB+Y2hpbGRfaW5kZXgxOmVkZ2VfaW5kZXggfmNoaWxkX2luZGV4MjpsYXN0X2VkZ2VfaW5kZXg7XG4gICAgICAgIGlmIGRlYnVnIHRoZW4gTm9kZS5pbnZhcmlhbnQgaWdub3JlIG5vZGUpO1xuICAgICAgRXhwZXJ0LnJlbW92ZV9sYXN0X2NoaWxkX2VkZ2VfZXhuIGU7XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19zdGFsZSBub2RlKTtcbiAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgIHRoZW4gKFxuICAgICAgICByZW1vdmVfY2hpbGQgfmNoaWxkOmVkZ2UuY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDpsYXN0X2VkZ2VfaW5kZXg7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlO1xuICAgICAgICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgZWRnZS5jaGlsZCkgdGhlbiBFeHBlcnQuZGVjcl9pbnZhbGlkX2NoaWxkcmVuIGUpKVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIERlcGVuZGVuY3kgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgRXhwZXJ0LmVkZ2UgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlID8ob25fY2hhbmdlID0gaWdub3JlKSBjaGlsZCA6IF8gdCA9IHsgY2hpbGQ7IG9uX2NoYW5nZTsgaW5kZXggPSBVb3B0Lm5vbmUgfVxuXG4gIGxldCB2YWx1ZSAodCA6IF8gdCkgPVxuICAgIGxldCBzdGF0ZSA9IHQuY2hpbGQuc3RhdGUgaW5cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIFN0YXRlLkV4cGVydC5hc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19wYXJlbnRcbiAgICAgICAgc3RhdGVcbiAgICAgICAgdC5jaGlsZFxuICAgICAgICBcIkRlcGVuZGVuY3kudmFsdWVcIjtcbiAgICAoKiBOb3QgZXhwb3NpbmcgdGhlIF9leG4sIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBhZHZlcnRpc2VkIGFzIGJlaW5nIHVzYWJsZSBvbmx5XG4gICAgICAgaW5zaWRlIHRoZSBjYWxsYmFja3Mgb2YgcGFyZW50cywgd2hlcmUgaXQgd2lsbCBub3QgcmFpc2UuICopXG4gICAgTm9kZS52YWx1ZV9leG4gdC5jaGlsZFxuICA7O1xuZW5kXG5cbm1vZHVsZSBOb2RlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSBOb2RlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIHN0YXRlID8ob25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgPSBmdW4gfmlzX25vd19vYnNlcnZhYmxlOl8gLT4gKCkpIGYgPVxuICAgIFN0YXRlLkV4cGVydC5jcmVhdGUgc3RhdGUgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIGZcbiAgOztcblxuICBsZXQgbWFrZV9zdGFsZSA9IFN0YXRlLkV4cGVydC5tYWtlX3N0YWxlXG4gIGxldCB3YXRjaCA9IEZuLmlkXG4gIGxldCBpbnZhbGlkYXRlID0gU3RhdGUuRXhwZXJ0LmludmFsaWRhdGVcbiAgbGV0IGFkZF9kZXBlbmRlbmN5ID0gU3RhdGUuRXhwZXJ0LmFkZF9kZXBlbmRlbmN5XG4gIGxldCByZW1vdmVfZGVwZW5kZW5jeSA9IFN0YXRlLkV4cGVydC5yZW1vdmVfZGVwZW5kZW5jeVxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubGV0IGNyZWF0ZSBzdGF0ZSBjaGlsZHJlbiB+ZiB+cmVkdWNlID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBjaGlsZHJlbiBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVkdWNlciA9IEJhbGFuY2VkX3JlZHVjZXIuY3JlYXRlX2V4biAoKSB+bGVuIH5yZWR1Y2UgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIEJhbGFuY2VkX3JlZHVjZXIuaW52YXJpYW50IChjb25zdCAoKSkgcmVkdWNlcjtcbiAgICBsZXQgbm9kZSA9XG4gICAgICBFeHBlcnQxLk5vZGUuY3JlYXRlIHN0YXRlIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGEgPSBCYWxhbmNlZF9yZWR1Y2VyLmNvbXB1dGVfZXhuIHJlZHVjZXIgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlbiBCYWxhbmNlZF9yZWR1Y2VyLmludmFyaWFudCAoY29uc3QgKCkpIHJlZHVjZXI7XG4gICAgICAgIGEpXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgRXhwZXJ0MS5Ob2RlLmFkZF9kZXBlbmRlbmN5XG4gICAgICAgIG5vZGVcbiAgICAgICAgKEV4cGVydDEuRGVwZW5kZW5jeS5jcmVhdGUgY2hpbGRyZW4uKGkpIH5vbl9jaGFuZ2U6KGZ1biBhIC0+XG4gICAgICAgICAgIEJhbGFuY2VkX3JlZHVjZXIuc2V0X2V4biByZWR1Y2VyIGkgKGYgYSk7XG4gICAgICAgICAgIGlmIGRlYnVnIHRoZW4gQmFsYW5jZWRfcmVkdWNlci5pbnZhcmlhbnQgKGNvbnN0ICgpKSByZWR1Y2VyKSlcbiAgICBkb25lO1xuICAgIFNvbWUgKEV4cGVydDEuTm9kZS53YXRjaCBub2RlKSlcbjs7XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyBtb3N0bHkgYSB3cmFwcGVyIGFyb3VuZCBbU3RhdGVdIGZ1bmN0aW9ucy4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluY3JlbWVudGFsX2ludGZcblxubW9kdWxlIHR5cGUgSW5jcmVtZW50YWxfY29uZmlnID0gQ29uZmlnLkluY3JlbWVudGFsX2NvbmZpZ1xuXG5tb2R1bGUgQ29uZmlnID0gQ29uZmlnXG5cbmxldCBkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCA9IDEyOFxuXG5tb2R1bGUgR2VuZXJpYyA9IHN0cnVjdFxuICBtb2R1bGUgQ3V0b2ZmID0gQ3V0b2ZmXG4gIG1vZHVsZSBTdGVwX2Z1bmN0aW9uID0gU3RlcF9mdW5jdGlvblxuXG4gIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhdGVcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICB2YWwgdCA6IHRcbiAgICBlbmRcblxuICAgIGxldCBjcmVhdGVfaW50ZXJuYWwgPSBjcmVhdGVcblxuICAgIGxldCBjcmVhdGUgPyhtYXhfaGVpZ2h0X2FsbG93ZWQgPSBkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCkgKCkgOiAobW9kdWxlIFMpID1cbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgIGxldCB0ID0gY3JlYXRlIChtb2R1bGUgQ29uZmlnLkRlZmF1bHQgKCkpIH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgICAgIGVuZClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU2NvcGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNjb3BlXG5cbiAgICBsZXQgY3VycmVudCAoc3RhdGUgOiBTdGF0ZS50KSAoKSA9IHN0YXRlLmN1cnJlbnRfc2NvcGVcbiAgICBsZXQgd2l0aGluIHN0YXRlIHQgfmYgPSBTdGF0ZS53aXRoaW5fc2NvcGUgc3RhdGUgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIE5vZGVcblxuICBsZXQgc3RhdGUgdCA9IHQuc3RhdGVcbiAgbGV0IHBhY2sgdCA9IFBhY2tlZC5UIHRcbiAgbGV0IGNvbnN0IHN0YXRlIGEgPSBTdGF0ZS5jb25zdCBzdGF0ZSBhXG4gIGxldCByZXR1cm4gPSBjb25zdFxuICBsZXQgb2JzZXJ2ZSA9IFN0YXRlLmNyZWF0ZV9vYnNlcnZlclxuICBsZXQgbWFwID0gU3RhdGUubWFwXG4gIGxldCBiaW5kID0gU3RhdGUuYmluZFxuXG4gIG1vZHVsZSBOX2FyeV9tYXBfYW5kX2JpbmQgPSBzdHJ1Y3RcbiAgICBsZXQgbWFwMiA9IFN0YXRlLm1hcDJcbiAgICBsZXQgbWFwMyA9IFN0YXRlLm1hcDNcbiAgICBsZXQgbWFwNCA9IFN0YXRlLm1hcDRcbiAgICBsZXQgbWFwNSA9IFN0YXRlLm1hcDVcbiAgICBsZXQgbWFwNiA9IFN0YXRlLm1hcDZcbiAgICBsZXQgbWFwNyA9IFN0YXRlLm1hcDdcbiAgICBsZXQgbWFwOCA9IFN0YXRlLm1hcDhcbiAgICBsZXQgbWFwOSA9IFN0YXRlLm1hcDlcbiAgICBsZXQgbWFwMTAgPSBTdGF0ZS5tYXAxMFxuICAgIGxldCBtYXAxMSA9IFN0YXRlLm1hcDExXG4gICAgbGV0IG1hcDEyID0gU3RhdGUubWFwMTJcbiAgICBsZXQgbWFwMTMgPSBTdGF0ZS5tYXAxM1xuICAgIGxldCBtYXAxNCA9IFN0YXRlLm1hcDE0XG4gICAgbGV0IG1hcDE1ID0gU3RhdGUubWFwMTVcbiAgICBsZXQgYmluZDIgPSBTdGF0ZS5iaW5kMlxuICAgIGxldCBiaW5kMyA9IFN0YXRlLmJpbmQzXG4gICAgbGV0IGJpbmQ0ID0gU3RhdGUuYmluZDRcbiAgZW5kXG5cbiAgaW5jbHVkZSBOX2FyeV9tYXBfYW5kX2JpbmRcblxuICBtb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICAgIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIEluZml4XG5cbiAgbGV0IGpvaW4gPSBTdGF0ZS5qb2luXG4gIGxldCBpZl8gPSBTdGF0ZS5pZl9cbiAgbGV0IGxhenlfZnJvbV9mdW4gc3RhdGUgZiA9IFN0YXRlLmxhenlfZnJvbV9mdW4gc3RhdGUgfmZcbiAgbGV0IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUgPSBTdGF0ZS5kZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplXG4gIGxldCBtZW1vaXplX2Z1bl9ieV9rZXkgPSBTdGF0ZS5tZW1vaXplX2Z1bl9ieV9rZXlcblxuICBsZXQgbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBzdGF0ZSBoYXNoYWJsZSBmID1cbiAgICBtZW1vaXplX2Z1bl9ieV9rZXkgc3RhdGUgP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBGbi5pZCBmXG4gIDs7XG5cbiAgbGV0IGFycmF5X2ZvbGQgc3RhdGUgdHMgfmluaXQgfmYgPSBTdGF0ZS5hcnJheV9mb2xkIHN0YXRlIHRzIH5pbml0IH5mXG4gIGxldCByZWR1Y2VfYmFsYW5jZWQgc3RhdGUgdHMgfmYgfnJlZHVjZSA9IFJlZHVjZV9iYWxhbmNlZC5jcmVhdGUgc3RhdGUgdHMgfmYgfnJlZHVjZVxuXG4gIG1vZHVsZSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUgPSBTdGF0ZS5Vbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGVcblxuICBsZXQgdW5vcmRlcmVkX2FycmF5X2ZvbGQgPSBTdGF0ZS51bm9yZGVyZWRfYXJyYXlfZm9sZFxuICBsZXQgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkID0gU3RhdGUub3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkXG4gIGxldCBhbGwgPSBTdGF0ZS5hbGxcbiAgbGV0IGV4aXN0cyA9IFN0YXRlLmV4aXN0c1xuICBsZXQgZm9yX2FsbCA9IFN0YXRlLmZvcl9hbGxcbiAgbGV0IGJvdGggPSBTdGF0ZS5ib3RoXG4gIGxldCBzdW0gPSBTdGF0ZS5zdW1cbiAgbGV0IG9wdF9zdW0gPSBTdGF0ZS5vcHRfc3VtXG4gIGxldCBzdW1faW50ID0gU3RhdGUuc3VtX2ludFxuICBsZXQgc3VtX2Zsb2F0ID0gU3RhdGUuc3VtX2Zsb2F0XG5cbiAgbW9kdWxlIFZhciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyXG5cbiAgICBsZXQgY3JlYXRlID0gU3RhdGUuY3JlYXRlX3ZhclxuICAgIGxldCBzZXQgPSBTdGF0ZS5zZXRfdmFyXG4gICAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG4gICAgbGV0IHdhdGNoIHQgPSB0LndhdGNoXG5cbiAgICAoKiBXZSBvdmVycmlkZSBbc2V4cF9vZl90XSB0byBqdXN0IHNob3cgdGhlIHZhbHVlLCByYXRoZXIgdGhhbiB0aGUgaW50ZXJuYWxcbiAgICAgICByZXByZXNlbnRhdGlvbi4gKilcbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gdC52YWx1ZSB8PiBbJXNleHBfb2Y6IGFdXG4gICAgbGV0IHJlcGxhY2UgdCB+ZiA9IHNldCB0IChmIChsYXRlc3RfdmFsdWUgdCkpXG4gIGVuZFxuXG4gIG1vZHVsZSBPYnNlcnZlciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgT2JzZXJ2ZXJcblxuICAgIG1vZHVsZSBVcGRhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgSW5pdGlhbGl6ZWQgb2YgJ2FcbiAgICAgICAgfCBDaGFuZ2VkIG9mICdhICogJ2FcbiAgICAgICAgfCBJbnZhbGlkYXRlZFxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIGxldCBvbl91cGRhdGVfZXhuIHQgfihmIDogXyBVcGRhdGUudCAtPiB1bml0KSA9XG4gICAgICBTdGF0ZS5vYnNlcnZlcl9vbl91cGRhdGVfZXhuIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgTmVjZXNzYXJ5IGEgLT4gZiAoSW5pdGlhbGl6ZWQgYSlcbiAgICAgICAgfCBDaGFuZ2VkIChhMSwgYTIpIC0+IGYgKENoYW5nZWQgKGExLCBhMikpXG4gICAgICAgIHwgSW52YWxpZGF0ZWQgLT4gZiBJbnZhbGlkYXRlZFxuICAgICAgICB8IFVubmVjZXNzYXJ5IC0+XG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcIkluY3JlbWVudGFsIGJ1ZyAtLSBPYnNlcnZlci5vbl91cGRhdGVfZXhuIGdvdCB1bmV4cGVjdGVkIHVwZGF0ZSBVbm5lY2Vzc2FyeVwiXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBbJXNleHBfb2Y6IF8gdF0pXG4gICAgOztcblxuICAgIGxldCBkaXNhbGxvd19mdXR1cmVfdXNlIHQgPSBTdGF0ZS5kaXNhbGxvd19mdXR1cmVfdXNlICF0XG4gICAgbGV0IHZhbHVlID0gU3RhdGUub2JzZXJ2ZXJfdmFsdWVcbiAgICBsZXQgdmFsdWVfZXhuID0gU3RhdGUub2JzZXJ2ZXJfdmFsdWVfZXhuXG5cbiAgICAoKiBXZSBvdmVycmlkZSBbc2V4cF9vZl90XSB0byBqdXN0IHNob3cgdGhlIHZhbHVlLCByYXRoZXIgdGhhbiB0aGUgaW50ZXJuYWxcbiAgICAgICByZXByZXNlbnRhdGlvbi4gKilcbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSAodCA6IF8gdCkgPVxuICAgICAgbWF0Y2ggIXQuc3RhdGUgd2l0aFxuICAgICAgfCBDcmVhdGVkIC0+IFslbWVzc2FnZSBcIjx1bnN0YWJpbGl6ZWQ+XCJdXG4gICAgICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPiBbJW1lc3NhZ2UgXCI8ZGlzYWxsb3dlZD5cIl1cbiAgICAgIHwgSW5fdXNlIC0+XG4gICAgICAgIGxldCB1b3B0ID0gIXQub2JzZXJ2aW5nLnZhbHVlX29wdCBpblxuICAgICAgICBpZiBVb3B0LmlzX25vbmUgdW9wdFxuICAgICAgICB0aGVuIFslbWVzc2FnZSBcIjxpbnZhbGlkPlwiXVxuICAgICAgICBlbHNlIFslc2V4cCAoVW9wdC51bnNhZmVfdmFsdWUgdW9wdCA6IGEpXVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBCZWZvcmVfb3JfYWZ0ZXIgPSBCZWZvcmVfb3JfYWZ0ZXJcblxuICBtb2R1bGUgQ2xvY2sgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFN0YXRlLkNsb2NrXG5cbiAgICBsZXQgc3RhdGUgPSBpbmNyX3N0YXRlXG5cbiAgICBsZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnID1cbiAgICAgIGxldCBhbGFybV9wcmVjaXNpb24gPSBBbGFybV9wcmVjaXNpb24uYWJvdXRfb25lX21pbGxpc2Vjb25kIGluXG4gICAgICBsZXQgbGV2ZWxfYml0cyA9IFsgMTQ7IDEzOyA1IF0gaW5cbiAgICAgIFRpbWluZ193aGVlbC5Db25maWcuY3JlYXRlXG4gICAgICAgIH5hbGFybV9wcmVjaXNpb25cbiAgICAgICAgfmxldmVsX2JpdHM6XG4gICAgICAgICAgKFRpbWluZ193aGVlbC5MZXZlbF9iaXRzLmNyZWF0ZV9leG4gbGV2ZWxfYml0cyB+ZXh0ZW5kX3RvX21heF9udW1fYml0czp0cnVlKVxuICAgICAgICAoKVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlIHN0YXRlID8odGltaW5nX3doZWVsX2NvbmZpZyA9IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZykgfnN0YXJ0ICgpID1cbiAgICAgICgqIE1ha2Ugc3VyZSBbc3RhcnRdIGlzIHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgbWljcm9zZWNvbmQuICBPdGhlcndpc2UsIGlmIHlvdVxuICAgICAgICAgZmVlZCBbQ2xvY2subm93ICgpXSB0byBhIHRpbWUgZnVuY3Rpb24sIGl0IGNhbiBiZSByb3VuZGVkIGRvd24gdG8gYSB0aW1lIGluXG4gICAgICAgICB0aGUgcGFzdCwgY2F1c2luZyBlcnJvcnMuICopXG4gICAgICBsZXQgc3RhcnQgPVxuICAgICAgICBUaW1lX25zLm9mX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxuICAgICAgICAgIChUaW1lX25zLnRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCBzdGFydClcbiAgICAgIGluXG4gICAgICBTdGF0ZS5jcmVhdGVfY2xvY2sgc3RhdGUgfnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0XG4gICAgOztcblxuICAgIGxldCBhbGFybV9wcmVjaXNpb24gdCA9IFRpbWluZ193aGVlbC5hbGFybV9wcmVjaXNpb24gdC50aW1pbmdfd2hlZWxcbiAgICBsZXQgdGltaW5nX3doZWVsX2xlbmd0aCA9IFN0YXRlLnRpbWluZ193aGVlbF9sZW5ndGhcbiAgICBsZXQgbm93ID0gU3RhdGUubm93XG4gICAgbGV0IHdhdGNoX25vdyB0ID0gdC5ub3cud2F0Y2hcbiAgICBsZXQgYXQgPSBTdGF0ZS5hdFxuICAgIGxldCBhZnRlciA9IFN0YXRlLmFmdGVyXG4gICAgbGV0IGF0X2ludGVydmFscyA9IFN0YXRlLmF0X2ludGVydmFsc1xuICAgIGxldCBhZHZhbmNlX2Nsb2NrID0gU3RhdGUuYWR2YW5jZV9jbG9ja1xuICAgIGxldCBhZHZhbmNlX2Nsb2NrX2J5IHQgc3BhbiA9IGFkdmFuY2VfY2xvY2sgdCB+dG9fOihUaW1lX25zLmFkZCAobm93IHQpIHNwYW4pXG4gICAgbGV0IGluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24gPSBTdGF0ZS5pbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uXG5cbiAgICBsZXQgc3RlcF9mdW5jdGlvbiB0IH5pbml0IHN0ZXBzID1cbiAgICAgIGluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb25cbiAgICAgICAgdFxuICAgICAgICAoY29uc3QgKGluY3Jfc3RhdGUgdCkgKFN0ZXBfZnVuY3Rpb24uY3JlYXRlX2V4biB+aW5pdCB+c3RlcHMpKVxuICAgIDs7XG5cbiAgICBsZXQgc25hcHNob3QgPSBTdGF0ZS5zbmFwc2hvdFxuICBlbmRcblxuICBsZXQgZnJlZXplID8od2hlbl8gPSBmdW4gXyAtPiB0cnVlKSB0ID0gU3RhdGUuZnJlZXplIHQgfm9ubHlfZnJlZXplX3doZW46d2hlbl9cbiAgbGV0IGRlcGVuZF9vbiB0IH5kZXBlbmRfb24gPSBTdGF0ZS5kZXBlbmRfb24gdCB+ZGVwZW5kX29uXG4gIGxldCBuZWNlc3NhcnlfaWZfYWxpdmUgPSBTdGF0ZS5uZWNlc3NhcnlfaWZfYWxpdmVcblxuICBtb2R1bGUgVXBkYXRlID0gT25fdXBkYXRlX2hhbmRsZXIuTm9kZV91cGRhdGVcblxuICBsZXQgb25fdXBkYXRlID0gU3RhdGUubm9kZV9vbl91cGRhdGVcbiAgbGV0IHN0YWJpbGl6ZSBzdGF0ZSA9IFN0YXRlLnN0YWJpbGl6ZSBzdGF0ZVxuICBsZXQgYW1fc3RhYmlsaXppbmcgc3RhdGUgPSBTdGF0ZS5hbV9zdGFiaWxpemluZyBzdGF0ZVxuICBsZXQgc2F2ZV9kb3QgPSBTdGF0ZS5zYXZlX2RvdFxuICBsZXQgc2F2ZV9kb3RfdG9fZmlsZSA9IFN0YXRlLnNhdmVfZG90X3RvX2ZpbGVcblxuICBtb2R1bGUgTm9kZV92YWx1ZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IEludmFsaWRcbiAgICAgIHwgTmVjZXNzYXJ5X21heWJlX3N0YWxlIG9mICdhIG9wdGlvblxuICAgICAgfCBVbm5lY2Vzc2FyeV9tYXliZV9zdGFsZSBvZiAnYSBvcHRpb25cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgbm9kZV92YWx1ZSB0IDogXyBOb2RlX3ZhbHVlLnQgPVxuICAgIGlmIG5vdCAoaXNfdmFsaWQgdClcbiAgICB0aGVuIEludmFsaWRcbiAgICBlbHNlIGlmIGlzX25lY2Vzc2FyeSB0XG4gICAgdGhlbiBOZWNlc3NhcnlfbWF5YmVfc3RhbGUgKFVvcHQudG9fb3B0aW9uIHQudmFsdWVfb3B0KVxuICAgIGVsc2UgVW5uZWNlc3NhcnlfbWF5YmVfc3RhbGUgKFVvcHQudG9fb3B0aW9uIHQudmFsdWVfb3B0KVxuICA7O1xuXG4gICgqIFdlIG92ZXJyaWRlIFtzZXhwX29mX3RdIHRvIHNob3cganVzdCB0aGUgdmFsdWUsIHJhdGhlciB0aGFuIHRoZSBpbnRlcm5hbFxuICAgICByZXByZXNlbnRhdGlvbi4gIFdlIG9ubHkgc2hvdyB0aGUgdmFsdWUgaWYgaXQgaXMgbmVjZXNzYXJ5IGFuZCB2YWxpZC4gKilcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgaWYgbm90IChpc192YWxpZCB0KVxuICAgIHRoZW4gXCI8aW52YWxpZD5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBlbHNlIGlmIG5vdCAoaXNfbmVjZXNzYXJ5IHQpXG4gICAgdGhlbiBcIjx1bm5lY2Vzc2FyeT5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBlbHNlIGlmIFVvcHQuaXNfbm9uZSB0LnZhbHVlX29wdFxuICAgIHRoZW4gXCI8dW5jb21wdXRlZD5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBlbHNlIHVuc2FmZV92YWx1ZSB0IHw+IFslc2V4cF9vZjogYV1cbiAgOztcblxuICBtb2R1bGUgRXhwZXJ0ID0gRXhwZXJ0MVxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoID4+PSApID0gKCA+Pj0gKVxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0IGJvdGggdDEgdDIgPSBtYXAyIHQxIHQyIH5mOihmdW4geDEgeDIgLT4geDEsIHgyKVxuXG4gICAgICBpbmNsdWRlIE5fYXJ5X21hcF9hbmRfYmluZFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IHdhdGNoID0gVmFyLndhdGNoXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID0gU3RhdGUud2Vha19tZW1vaXplX2Z1bl9ieV9rZXlcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIHN0YXRlIGhhc2hhYmxlIGYgPVxuICAgIHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgc3RhdGUgaGFzaGFibGUgRm4uaWQgZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfY29uZmlnIChJbmNyZW1lbnRhbF9jb25maWcgOiBJbmNyZW1lbnRhbF9jb25maWcpICgpID0gc3RydWN0XG4gIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGUgR2VuZXJpY1xuXG4gIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhdGVcblxuICAgIGxldCB0ID0gY3JlYXRlX2ludGVybmFsIChtb2R1bGUgSW5jcmVtZW50YWxfY29uZmlnKSB+bWF4X2hlaWdodF9hbGxvd2VkOjEyOFxuICBlbmRcblxuICBtb2R1bGUgQ2xvY2sgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENsb2NrXG5cbiAgICBsZXQgY3JlYXRlID90aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydCAoKSA9XG4gICAgICBjcmVhdGUgP3RpbWluZ193aGVlbF9jb25maWcgU3RhdGUudCB+c3RhcnQgKClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgaW5jbHVkZSBFeHBlcnRcblxuICAgIG1vZHVsZSBOb2RlID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE5vZGVcblxuICAgICAgbGV0IGNyZWF0ZSA/b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZiA9IGNyZWF0ZSBTdGF0ZS50ID9vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBmXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3RlcF9yZXN1bHQgPSBTdGF0ZS5TdGVwX3Jlc3VsdFxuXG4gICAgbGV0IGRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSAoKSA9IFN0YXRlLmRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSBTdGF0ZS50XG4gIGVuZFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBMZXRfc3ludGF4XG5cbiAgICBsZXQgcmV0dXJuIGEgPSByZXR1cm4gU3RhdGUudCBhXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBMZXRfc3ludGF4XG5cbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFNjb3BlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTY29wZVxuXG4gICAgbGV0IGN1cnJlbnQgKCkgPSBjdXJyZW50IFN0YXRlLnQgKClcbiAgICBsZXQgd2l0aGluIHQgfmYgPSB3aXRoaW4gU3RhdGUudCB0IH5mXG4gIGVuZFxuXG4gIG1vZHVsZSBWYXIgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFZhclxuXG4gICAgbGV0IGNyZWF0ZSA/dXNlX2N1cnJlbnRfc2NvcGUgdmFsdWUgPSBjcmVhdGUgP3VzZV9jdXJyZW50X3Njb3BlIFN0YXRlLnQgdmFsdWVcbiAgZW5kXG5cbiAgbGV0IGNvbnN0IGEgPSBjb25zdCBTdGF0ZS50IGFcbiAgbGV0IHJldHVybiBhID0gcmV0dXJuIFN0YXRlLnQgYVxuICBsZXQgYWxsIHRzID0gYWxsIFN0YXRlLnQgdHNcbiAgbGV0IGV4aXN0cyB0cyA9IGV4aXN0cyBTdGF0ZS50IHRzXG4gIGxldCBmb3JfYWxsIHRzID0gZm9yX2FsbCBTdGF0ZS50IHRzXG4gIGxldCBsYXp5X2Zyb21fZnVuIHN0YXRlIGYgPSBTdGF0ZS5sYXp5X2Zyb21fZnVuIHN0YXRlIH5mXG5cbiAgbGV0IG1lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIHByb2plY3Rfa2V5IGYgPVxuICAgIG1lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIFN0YXRlLnQgaGFzaGFibGUgcHJvamVjdF9rZXkgZlxuICA7O1xuXG4gIGxldCBtZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIGYgPSBtZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIFN0YXRlLnQgaGFzaGFibGUgZlxuICBsZXQgYXJyYXlfZm9sZCB0cyB+aW5pdCB+ZiA9IGFycmF5X2ZvbGQgU3RhdGUudCB0cyB+aW5pdCB+ZlxuICBsZXQgcmVkdWNlX2JhbGFuY2VkIHRzIH5mIH5yZWR1Y2UgPSByZWR1Y2VfYmFsYW5jZWQgU3RhdGUudCB0cyB+ZiB+cmVkdWNlXG5cbiAgbGV0IHVub3JkZXJlZF9hcnJheV9mb2xkID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH5pbml0IH5mIH51cGRhdGUgPVxuICAgIHVub3JkZXJlZF9hcnJheV9mb2xkIFN0YXRlLnQgdHMgfmluaXQgfmYgfnVwZGF0ZSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICA7O1xuXG4gIGxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfmluaXQgfmYgfmZfaW52ZXJzZSA9XG4gICAgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIFN0YXRlLnQgdHMgfmluaXQgfmYgfmZfaW52ZXJzZVxuICA7O1xuXG4gIGxldCBzdW0gP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfnplcm8gfmFkZCB+c3ViID1cbiAgICBzdW0gP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgU3RhdGUudCB0cyB+emVybyB+YWRkIH5zdWJcbiAgOztcblxuICBsZXQgb3B0X3N1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+emVybyB+YWRkIH5zdWIgPVxuICAgIG9wdF9zdW0gP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgU3RhdGUudCB0cyB+emVybyB+YWRkIH5zdWJcbiAgOztcblxuICBsZXQgc3VtX2ludCB0cyA9IHN1bV9pbnQgU3RhdGUudCB0c1xuICBsZXQgc3VtX2Zsb2F0IHRzID0gc3VtX2Zsb2F0IFN0YXRlLnQgdHNcbiAgbGV0IHN0YWJpbGl6ZSAoKSA9IHN0YWJpbGl6ZSBTdGF0ZS50XG4gIGxldCBhbV9zdGFiaWxpemluZyAoKSA9IGFtX3N0YWJpbGl6aW5nIFN0YXRlLnRcbiAgbGV0IHNhdmVfZG90IG91dCA9IHNhdmVfZG90IFN0YXRlLnQgb3V0XG4gIGxldCBzYXZlX2RvdF90b19maWxlIGZpbGUgPSBPdXRfY2hhbm5lbC53aXRoX2ZpbGUgZmlsZSB+ZjpzYXZlX2RvdFxuICBsZXQgbGF6eV9mcm9tX2Z1biBmID0gbGF6eV9mcm9tX2Z1biBTdGF0ZS50IGZcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBwcm9qZWN0X2tleSBmID1cbiAgICB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIFN0YXRlLnQgaGFzaGFibGUgcHJvamVjdF9rZXkgZlxuICA7O1xuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuID9pbml0aWFsX3NpemUgaGFzaGFibGUgZiA9XG4gICAgd2Vha19tZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIFN0YXRlLnQgaGFzaGFibGUgZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlICgpID0gTWFrZV93aXRoX2NvbmZpZyAoQ29uZmlnLkRlZmF1bHQgKCkpICgpXG5pbmNsdWRlIEdlbmVyaWNcblxubW9kdWxlIEFkZF93aXRuZXNzMCAoTSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBzaWdcbiAgdHlwZSAndyB0ID0gTS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ3cgdCA9IE0udFxuXG4gIGxldCBpbnZhcmlhbnQgXyB0ID0gTS5pbnZhcmlhbnQgdFxuICBsZXQgc2V4cF9vZl90IF8gdCA9IE0uc2V4cF9vZl90IHRcbmVuZFxuXG5tb2R1bGUgQWRkX3dpdG5lc3MxIChNIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGVuZCkgOiBzaWdcbiAgdHlwZSAoJ2EsICd3KSB0ID0gJ2EgTS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAndykgdCA9ICdhIE0udFxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgXyB0ID0gTS5pbnZhcmlhbnQgaW52YXJpYW50X2EgdFxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBNLnNleHBfb2ZfdCBzZXhwX29mX2EgdFxuZW5kXG5cbm1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICBpbmNsdWRlIENsb2NrXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MwIChDbG9jaylcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGluY2x1ZGUgRXhwZXJ0XG5cbiAgbW9kdWxlIERlcGVuZGVuY3kgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERlcGVuZGVuY3lcblxuICAgIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBEZXBlbmRlbmN5XG5cbiAgICAgICAgbGV0IGludmFyaWFudCBfIF8gPSAoKVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgTm9kZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTm9kZVxuXG4gICAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE5vZGVcblxuICAgICAgICBsZXQgaW52YXJpYW50IF8gXyA9ICgpXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGVwX3Jlc3VsdCA9IFN0YXRlLlN0ZXBfcmVzdWx0XG5cbiAgbGV0IGRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSBzdGF0ZSA9IFN0YXRlLmRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSBzdGF0ZVxuZW5kXG5cbm1vZHVsZSBOb2RlID0gc3RydWN0XG4gIGluY2x1ZGUgTm9kZVxuICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoTm9kZSlcbmVuZFxuXG50eXBlICgnYSwgJ3cpIHQgPSAoJ2EsICd3KSBOb2RlLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbnR5cGUgKCdhLCAndykgaW5jcmVtZW50YWwgPSAoJ2EsICd3KSB0XG5cbmxldCBpbnZhcmlhbnQgPSBOb2RlLmludmFyaWFudFxuXG5tb2R1bGUgT2JzZXJ2ZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBPYnNlcnZlclxuICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoT2JzZXJ2ZXIpXG5lbmRcblxubW9kdWxlIFNjb3BlID0gc3RydWN0XG4gIGluY2x1ZGUgU2NvcGVcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczAgKFNjb3BlKVxuZW5kXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YXRlXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MwIChTdGF0ZSlcbmVuZFxuXG5tb2R1bGUgVmFyID0gc3RydWN0XG4gIGluY2x1ZGUgVmFyXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChWYXIpXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHN0YXRlX3dpdG5lc3MgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlXG4gICAgU19nZW5cbiAgICB3aXRoIHR5cGUgJ2EgdCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgaW5jcmVtZW50YWxcbiAgICB3aXRoIHR5cGUgQmVmb3JlX29yX2FmdGVyLnQgPSBCZWZvcmVfb3JfYWZ0ZXIudFxuICAgIHdpdGggdHlwZSBDbG9jay50ID0gc3RhdGVfd2l0bmVzcyBDbG9jay50XG4gICAgd2l0aCB0eXBlICdhIEN1dG9mZi50ID0gJ2EgQ3V0b2ZmLnRcbiAgICB3aXRoIHR5cGUgJ2EgRXhwZXJ0LkRlcGVuZGVuY3kudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgRXhwZXJ0LkRlcGVuZGVuY3kudFxuICAgIHdpdGggdHlwZSAnYSBFeHBlcnQuTm9kZS50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBFeHBlcnQuTm9kZS50XG4gICAgd2l0aCB0eXBlIEV4cGVydC5TdGVwX3Jlc3VsdC50ID0gRXhwZXJ0LlN0ZXBfcmVzdWx0LnRcbiAgICB3aXRoIHR5cGUgJ2EgT2JzZXJ2ZXIudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgT2JzZXJ2ZXIudFxuICAgIHdpdGggdHlwZSAnYSBPYnNlcnZlci5VcGRhdGUudCA9ICdhIE9ic2VydmVyLlVwZGF0ZS50XG4gICAgd2l0aCB0eXBlIFBhY2tlZC50ID0gUGFja2VkLnRcbiAgICB3aXRoIHR5cGUgU2NvcGUudCA9IHN0YXRlX3dpdG5lc3MgU2NvcGUudFxuICAgIHdpdGggdHlwZSBTdGF0ZS50ID0gc3RhdGVfd2l0bmVzcyBTdGF0ZS50XG4gICAgd2l0aCB0eXBlIFN0YXRlLlN0YXRzLnQgPSBTdGF0ZS5TdGF0cy50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIFVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZS50ID1cbiAgICAgICAgICAgKCdhLCAnYikgVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlLnRcbiAgICB3aXRoIHR5cGUgJ2EgVXBkYXRlLnQgPSAnYSBVcGRhdGUudFxuICAgIHdpdGggdHlwZSAnYSBWYXIudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgVmFyLnRcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgZGVidWcgPSBkZWJ1Z1xuZW5kXG4iLCJcbm9wZW4gQmFzZVxuXG5tb2R1bGUgQ29tbXV0YXRpdmVfZ3JvdXAgPSBzdHJ1Y3RcbiAgKCoqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgaW50ZXJmYWNlIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcblxuICAgICAgKyBhc3NvY2lhdGl2aXR5OiBbKGEgKyBiKSArIGMgPSBhICsgKGIgKyBjKV1cbiAgICAgICsgaWRlbnRpdHk6IFt6ZXJvICsgYSA9IGEgKyB6ZXJvID0gYV1cbiAgICAgICsgaW52ZXJzZXM6IGdpdmVuIGFueSBbYV0gdGhlcmUgZXhpc3RzIGEgKHVuaXF1ZSkgZWx0IFtiXSBzdWNoIHRoYXQgW2EgKyBiID0gYiArIGEgPVxuICAgICAgemVyb11cbiAgICAgICsgY29tbXV0YXRpdml0eTogW2EgKyBiID0gYiArIGFdXG4gICopXG5cbiAgbW9kdWxlIHR5cGUgV2l0aG91dF9zZXhwID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgKCspICA6IHQgLT4gdCAtPiB0XG4gICAgdmFsICgtKSAgOiB0IC0+IHQgLT4gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG4gICAgaW5jbHVkZSBXaXRob3V0X3NleHAgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVmVjdG9yX3NwYWNlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcbiAgICBpbmNsdWRlIENvbW11dGF0aXZlX2dyb3VwLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIHZhbCBzY2FsZSA6IHQgLT4gZmxvYXQgLT4gdFxuICBlbmRcbmVuZFxuIiwib3BlbiEgQ29yZVxuXG5tb2R1bGUgSW5zdHJ1bWVudGF0aW9uID0gc3RydWN0XG4gICgqKiBBbGwgW0luY3JfbWFwXSBmdW5jdGlvbnMgdGFrZSBhbiBvcHRpb25hbCBbaW5zdHJ1bWVudGF0aW9uXSBwYXJhbWV0ZXIgdGhhdCBoYXMgdHlwZVxuICAgICAgW0luc3RydW1lbnRhdGlvbi50XS4gIEEgdmFsdWUgb2YgdGhpcyB0eXBlIGlzIGEgcmVjb3JkIGNvbnRhaW5pbmcgYSBmdW5jdGlvbiB3aGljaFxuICAgICAgaXMgcG9seW1vcnBoaWMgb3ZlciBhIHVuaXZlcnNhbGx5LXF1YW50aWZpZWQgdHlwZSBbJ2FdLiBUaGlzIGZ1bmN0aW9uIGlzIHBhc3NlZFxuICAgICAgYSBbdW5pdCAtPiAnYV0gZnVuY3Rpb24sIHdoaWNoIG11c3QgYmUgaW1tZWRpYXRlbHkgZXhlY3V0ZWQsIGFuZCB0aGUgcmVzdWx0IG9mXG4gICAgICB3aGljaCBtdXN0IGJlIHJldHVybmVkLlxuXG4gICAgICBUaGUgZnVuY3Rpb24gcGFzc2VkIHRvIHRoZSBpbnN0cnVtZW50b3Igd2lsbCBiZSBkb2luZyB0aGUgYnVsayBvZiB0aGUgd29yayBmb3IgdGhlXG4gICAgICBbSW5jcl9tYXBdIGZ1bmN0aW9uIGluIHF1ZXN0aW9uICh1c3VhbGx5IGEgW01hcC5mb2xkX3N5bW1ldHJpY19kaWZmXSkuXG5cbiAgICAgIFlvdSBtYXkgd2FudCB0byB1c2UgdGhlIEluc3RydW1lbnRhdGlvbiBBUEkgdG8gYXNzaXN0IGluIHBlcmZvcm1hbmNlIHByb2ZpbGluZyBsaWtlXG4gICAgICBzbzpcblxuICAgICAge1tcbiAgICAgICAgbGV0IHByb2ZpbGUgbmFtZSA9XG4gICAgICAgICAgeyBJbmNyX21hcC5JbnN0cnVtZW50YXRpb24uZiA9IGZ1biBmIC0+XG4gICAgICAgICAgICAgIGxldCBiZWZvcmUgPSBUaW1lLm5vdyAoKSBpblxuICAgICAgICAgICAgICBsZXQgciA9IGYgKCkgaW5cbiAgICAgICAgICAgICAgbGV0IGFmdGVyID0gVGltZS5ub3cgKCkgaW5cbiAgICAgICAgICAgICAgbGV0IGRlbHRhID0gVGltZS5zdWIgYWZ0ZXIgYmVmb3JlIGluXG4gICAgICAgICAgICAgIHByaW50ZiBcIiVzIHRvb2sgJXNcIiBuYW1lIChUaW1lLlNwYW4udG9fc3RyaW5nX2h1bSBkZWx0YSk7XG4gICAgICAgICAgICAgIHJcbiAgICAgICAgICB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgSW5jcl9tYXAubWFwIH5pbnN0cnVtZW50YXRpb246KHByb2ZpbGUgXCJmb29cIikgfmY6bWFwX2Zvb1xuICAgICAgXX0gKilcblxuICB0eXBlIHQgPSB7IGYgOiAnYS4gKHVuaXQgLT4gJ2EpIC0+ICdhIH0gW0BAdW5ib3hlZF1cbmVuZFxuXG4oKiogW1NfZ2VuXSBpcyB0aGUgdHlwZSBvZiB0aGUgbW9kdWxlIHJldHVybmVkIGJ5IFtJbmNyX21hcC5NYWtlXS4gIEl0IGlzIGEgc3BlY2lhbGl6YXRpb25cbiAgICBvZiB0aGUgaW50ZXJmYWNlIG9mIFtJbmNyX21hcF0sIHdpdGg6XG5cbiAgICAtIHRoZSBbJ3ddIHN0YXRlX3dpdG5lc3MgdHlwZSBwYXJhbWV0ZXIgcmVtb3ZlZFxuICAgIC0gdGhlIFtJbmNyZW1lbnRhbC5TdGF0ZS50XSBhcmd1bWVudCByZW1vdmVkXG5cbiAgICBUaGUgY29tbWVudHMgZm9yIGNvbXBvbmVudHMgb2YgW1NfZ2VuXSBhcmUgaW4gW21vZHVsZSB0eXBlIEluY3JfbWFwXSBiZWxvdy4gKilcbm1vZHVsZSB0eXBlIFNfZ2VuID0gc2lnXG4gIG1vZHVsZSBJbmNyIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICBtb2R1bGUgQ3V0b2ZmIDogc2lnXG4gICAgICB0eXBlICdhIHRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEluc3RydW1lbnRhdGlvbiA9IEluc3RydW1lbnRhdGlvblxuXG4gIHZhbCBvZl9zZXRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCdrLCAnY21wKSBTZXQudCBJbmNyLnRcbiAgICAtPiAoJ2ssIHVuaXQsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MilcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YxIC0+ICd2MiBvcHRpb24pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBtYXBcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YxIC0+ICd2MilcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGZpbHRlcl9tYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIEluY3IudCAtPiAndjIgb3B0aW9uIEluY3IudClcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgSW5jci50IC0+ICd2MiBJbmNyLnQpXG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBmaWx0ZXJfbWFwJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YxIEluY3IudCAtPiAndjIgb3B0aW9uIEluY3IudClcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcCdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KCd2MSBJbmNyLnQgLT4gJ3YyIEluY3IudClcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgKiAoJ2ssICd2MywgJ2NtcCkgTWFwLnQpIEluY3IudFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSBJbmNyLnQgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudCBJbmNyLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCAqICgnaywgJ3YzLCAnY21wKSBNYXAudCkgSW5jci50XG5cbiAgdmFsIHVub3JkZXJlZF9mb2xkXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID91cGRhdGU6KGtleTonayAtPiBvbGRfZGF0YTondiAtPiBuZXdfZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gP3NwZWNpYWxpemVkX2luaXRpYWw6KGluaXQ6J2FjYyAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCAtPiAnYWNjKVxuICAgIC0+ID9maW5hbGl6ZTooJ2FjYyAtPiAnYWNjKVxuICAgIC0+ID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OmJvb2xcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBhZGQ6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiByZW1vdmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiAnYWNjIEluY3IudFxuXG4gIHZhbCB1bm9yZGVyZWRfZm9sZF93aXRoX2V4dHJhXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID9leHRyYV9lcXVhbDooJ2V4dHJhIC0+ICdleHRyYSAtPiBib29sKVxuICAgIC0+ID91cGRhdGU6KGtleTonayAtPiBvbGRfZGF0YTondiAtPiBuZXdfZGF0YTondiAtPiAnYWNjIC0+ICdleHRyYSAtPiAnYWNjKVxuICAgIC0+ID9zcGVjaWFsaXplZF9pbml0aWFsOihpbml0OidhY2MgLT4gKCdrLCAndiwgJ2UpIE1hcC50IC0+ICdleHRyYSAtPiAnYWNjKVxuICAgIC0+ID9maW5hbGl6ZTooJ2FjYyAtPiAnYWNjKVxuICAgIC0+ID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OmJvb2xcbiAgICAtPiAoJ2ssICd2LCAnZSkgTWFwLnQgSW5jci50XG4gICAgLT4gJ2V4dHJhIEluY3IudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiByZW1vdmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gZXh0cmFfY2hhbmdlZDpcbiAgICAgICAgIChvbGRfZXh0cmE6J2V4dHJhXG4gICAgICAgICAgLT4gbmV3X2V4dHJhOidleHRyYVxuICAgICAgICAgIC0+IGlucHV0OignaywgJ3YsICdlKSBNYXAudFxuICAgICAgICAgIC0+ICdhY2NcbiAgICAgICAgICAtPiAnYWNjKVxuICAgIC0+ICdhY2MgSW5jci50XG5cbiAgdmFsIGN1dG9mZlxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjdXRvZmY6J3YgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwaV9jb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sxIC0+IGRhdGE6J3YgLT4gJ2syKVxuICAgIC0+ICgnazIsIGludCwgJ2NtcDIpIE1hcC50IEluY3IudFxuXG4gIHZhbCBtYXBfY291bnRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ2syKVxuICAgIC0+ICgnazIsIGludCwgJ2NtcDIpIE1hcC50IEluY3IudFxuXG4gIHZhbCBtYXBpX21pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICdyIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWFwaV9tYXhcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAncilcbiAgICAtPiAnciBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1hcF9taW5cbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAncilcbiAgICAtPiAnciBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1hcF9tYXhcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAncilcbiAgICAtPiAnciBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1pbl92YWx1ZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOigndiwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICd2IG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWF4X3ZhbHVlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCd2LCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3Ygb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtYXBpX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICgnciAqICdyKSBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1hcF9ib3VuZHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAncilcbiAgICAtPiAoJ3IgKiAncikgb3B0aW9uIEluY3IudFxuXG4gIHZhbCB2YWx1ZV9ib3VuZHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ3YgKiAndikgb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtZXJnZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbF9sZWZ0OigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP2RhdGFfZXF1YWxfcmlnaHQ6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiAoJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQgLT4gJ3YzIG9wdGlvbilcbiAgICAtPiAoJ2ssICd2MywgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1lcmdlX2JvdGhfc29tZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbF9sZWZ0OigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP2RhdGFfZXF1YWxfcmlnaHQ6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiA/b3V0X2VxdWFsOigndjMgLT4gJ3YzIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gJ3YxIC0+ICd2MiAtPiAndjMpXG4gICAgLT4gKCdrLCAndjMsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCB1bnppcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/bGVmdF9yZXN1bHRfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/cmlnaHRfcmVzdWx0X2VxdWFsOigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEgKiAndjIsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnQgKiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHVuemlwX21hcGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP2xlZnRfcmVzdWx0X2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP3JpZ2h0X3Jlc3VsdF9lcXVhbDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICd2MSAqICd2MilcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50ICogKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCB1bnppcF9tYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2IEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiBJbmNyLnQgLT4gJ3YxIEluY3IudCAqICd2MiBJbmNyLnQpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudCAqICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWVyZ2UnXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6KCd2MSwgJ3YyKSBNYXAuTWVyZ2VfZWxlbWVudC50IEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbF9sZWZ0OigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP2RhdGFfZXF1YWxfcmlnaHQ6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiAoJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQgSW5jci50IC0+ICd2MyBvcHRpb24gSW5jci50KVxuICAgIC0+ICgnaywgJ3YzLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgZmxhdHRlbiA6ICgnaywgJ3YgSW5jci50LCAnY21wKSBNYXAudCAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgam9pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoJ2ssICd2IEluY3IudCwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHNlcGFyYXRlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiBJbmNyLnQsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBrZXlzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YsICdjKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2ssICdjKSBTZXQudCBJbmNyLnRcblxuICB2YWwgcmFua1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBCYXNlLk1hcC50IEluY3IudFxuICAgIC0+ICdrIEluY3IudFxuICAgIC0+IGludCBvcHRpb24gSW5jci50XG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+ICgnayBNYXliZV9ib3VuZC5Bc19sb3dlcl9ib3VuZC50ICogJ2sgTWF5YmVfYm91bmQuQXNfdXBwZXJfYm91bmQudCkgb3B0aW9uIEluY3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBzdWJyYW5nZV9ieV9yYW5rXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IChpbnQgTWF5YmVfYm91bmQuQXNfbG93ZXJfYm91bmQudCAqIGludCBNYXliZV9ib3VuZC5Bc191cHBlcl9ib3VuZC50KSBJbmNyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgcmVrZXlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrMSAtPiBkYXRhOid2IC0+ICdrMilcbiAgICAtPiAoJ2syLCAndiwgJ2NtcDIpIE1hcC50IEluY3IudFxuXG4gIHZhbCBpbmRleF9ieWlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5kZXg6KGtleTonaW5uZXJfa2V5IC0+IGRhdGE6J3YgLT4gJ291dGVyX2tleSBvcHRpb24pXG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBpbmRleF9ieVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdvdXRlcl9rZXksICdvdXRlcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpbmRleDooJ3YgLT4gJ291dGVyX2tleSBvcHRpb24pXG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTpib29sXG4gICAgLT4gP3VwZGF0ZTpcbiAgICAgICAgIChvdXRlcl9rZXk6J291dGVyX2tleVxuICAgICAgICAgIC0+IGlubmVyX2tleTonaW5uZXJfa2V5XG4gICAgICAgICAgLT4gb2xkX2RhdGE6J3ZcbiAgICAgICAgICAtPiBuZXdfZGF0YTondlxuICAgICAgICAgIC0+ICdhY2NcbiAgICAgICAgICAtPiAnYWNjKVxuICAgIC0+ICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBhZGQ6KG91dGVyX2tleTonb3V0ZXJfa2V5IC0+IGlubmVyX2tleTonaW5uZXJfa2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+IHJlbW92ZToob3V0ZXJfa2V5OidvdXRlcl9rZXkgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gJ2FjYyBJbmNyLnRcblxuICB2YWwgdHJhbnNwb3NlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnazIsICdrMl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAoJ2syLCAndiwgJ2syX2NtcCkgTWFwLnQsICdrMV9jbXApIE1hcC50IEluY3IudFxuICAgIC0+ICgnazIsICgnazEsICd2LCAnazFfY21wKSBNYXAudCwgJ2syX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGNvbGxhcHNlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignaW5uZXJfa2V5LCAnaW5uZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCAnb3V0ZXJfa2V5ICogJ2lubmVyX2tleVxuICAgICAgICwgJ3ZcbiAgICAgICAsICgnb3V0ZXJfY21wLCAnaW5uZXJfY21wKSBUdXBsZTIuY29tcGFyYXRvcl93aXRuZXNzIClcbiAgICAgICAgIE1hcC50XG4gICAgICAgICBJbmNyLnRcblxuICB2YWwgY29sbGFwc2VfYnlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IG1lcmdlX2tleXM6KCdvdXRlcl9rZXkgLT4gJ2lubmVyX2tleSAtPiAnY29tYmluZWRfa2V5KVxuICAgIC0+IGNvbXBhcmF0b3I6KCdjb21iaW5lZF9rZXksICdjb21iaW5lZF9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2NvbWJpbmVkX2tleSwgJ3YsICdjb21iaW5lZF9jbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBleHBhbmRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdvdXRlcl9rZXkgKiAnaW5uZXJfa2V5LCAndiwgJ3R1cGxlX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gb3V0ZXJfY29tcGFyYXRvcjooJ291dGVyX2tleSwgJ291dGVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGlubmVyX2NvbXBhcmF0b3I6KCdpbm5lcl9rZXksICdpbm5lcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGNvdW50aVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+IGludCBJbmNyLnRcblxuICB2YWwgY291bnRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKF8sICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IGludCBJbmNyLnRcblxuICB2YWwgZm9yX2FsbGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiBib29sIEluY3IudFxuXG4gIHZhbCBmb3JfYWxsXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+IChfLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YgLT4gYm9vbClcbiAgICAtPiBib29sIEluY3IudFxuXG4gIHZhbCBleGlzdHNpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gYm9vbCBJbmNyLnRcblxuICB2YWwgZXhpc3RzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+IChfLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YgLT4gYm9vbClcbiAgICAtPiBib29sIEluY3IudFxuXG4gIHZhbCBzdW1cbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKF8sICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiAobW9kdWxlIEFic3RyYWN0X2FsZ2VicmEuQ29tbXV0YXRpdmVfZ3JvdXAuV2l0aG91dF9zZXhwIHdpdGggdHlwZSB0ID0gJ3UpXG4gICAgLT4gZjooJ3YgLT4gJ3UpXG4gICAgLT4gJ3UgSW5jci50XG5cbiAgbW9kdWxlIExvb2t1cCA6IHNpZ1xuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgdmFsIGNyZWF0ZVxuICAgICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAgIC0+IGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAgIHZhbCBmaW5kIDogKCdrLCAndiwgXykgdCAtPiAnayAtPiAndiBvcHRpb24gSW5jci50XG5cbiAgICBtb2R1bGUgTSAoSyA6IHNpZ1xuICAgICAgICB0eXBlIHRcbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIGVuZCkgOiBzaWdcbiAgICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBGb3JfZGVidWcgOiBzaWdcbiAgICAgIHZhbCBzZXhwX29mX3QgOiAoJ2sgLT4gU2V4cC50KSAtPiAoJ3YgLT4gU2V4cC50KSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IFNleHAudFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgOiBzaWdcbiAgICB2YWwgZmluZF9rZXlfcmFuZ2VfbGluZWFyXG4gICAgICA6ICBmcm9tOmludFxuICAgICAgLT4gdG9fOmludFxuICAgICAgLT4gKCdhLCAnYiwgJ2MpIEJhc2UuTWFwLnRcbiAgICAgIC0+ICgnYSAqICdhIG9wdGlvbikgb3B0aW9uXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluY3JfbWFwID0gc2lnXG4gICgqKiBGdW5jdGlvbnMgZm9yIHVzaW5nIG1hcHMgZWZmaWNpZW50bHkgd2l0aGluIEluY3JlbWVudGFsLiAgVGhlIGdvYWwgb2YgdGhlIGFsZ29yaXRobXNcbiAgICAgIGhlcmUgaXMgdG8gZG8gd29yayBvbiB0aGUgb3V0cHV0IG9mIHRoZSBjb21wdXRhdGlvbiBwcm9wb3J0aW9uYWwgdG8gdGhlIGFtb3VudCBvZlxuICAgICAgd29yayBkb25lIG9uIHRoZSBpbnB1dC4gIGkuZS4sIFtrXSBtb2RpZmljYXRpb25zIHRvIHRoZSBpbnB1dCBtYXAgZm9yIHNvbWVcbiAgICAgIGNvbXB1dGF0aW9uIHdpbGwgcmVzdWx0IGluIFtrXSBtb2RpZmljYXRpb25zIHRvIHRoZSBvdXRwdXQgbWFwLiAgVGhlIGNoYW5nZXMgdG8gdGhlXG4gICAgICBpbnB1dCBtYXAgYXJlIHR5cGljYWxseSBjb21wdXRlZCB1c2luZyBbTWFwLnN5bW1ldHJpY19kaWZmXS5cblxuICAgICAgVW5sZXNzIHN0YXRlZCBvdGhlcndpc2UsIHRoZSBub24taW5jcmVtZW50YWwgc2VtYW50aWNzIG9mIHRoZXNlIGZ1bmN0aW9ucyAoaS5lLi4sXG4gICAgICBpZ25vcmluZyBwZXJmb3JtYW5jZSkgaXMgdGhlIHNhbWUgYXMgdGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb24gaW4gQ29yZSdzIFtNYXBdXG4gICAgICBtb2R1bGUuICAqKVxuXG4gIG1vZHVsZSBJbnN0cnVtZW50YXRpb24gPSBJbnN0cnVtZW50YXRpb25cblxuICB2YWwgb2Zfc2V0XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICdjbXApIFNldC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssIHVuaXQsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24pXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MilcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOigndjEgLT4gJ3YyIG9wdGlvbilcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBtYXBcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCd2MSAtPiAndjIpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgZmlsdGVyX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOigndjEsICd3KSBJbmNyZW1lbnRhbC50IC0+ICgndjIgb3B0aW9uLCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBtYXAnXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCgndjEsICd3KSBJbmNyZW1lbnRhbC50IC0+ICgndjIsICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGZpbHRlcl9tYXAnXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCgndjEsICd3KSBJbmNyZW1lbnRhbC50IC0+ICgndjIgb3B0aW9uLCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBtYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTooJ3YxLCAndykgSW5jcmVtZW50YWwudCAtPiAoJ3YyLCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCAqICgnaywgJ3YzLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgcGFydGl0aW9uX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6XG4gICAgICAgICAoa2V5OidrXG4gICAgICAgICAgLT4gZGF0YTooJ3YxLCAndykgSW5jcmVtZW50YWwudFxuICAgICAgICAgIC0+ICgoJ3YyLCAndjMpIEVpdGhlci50LCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50ICogKCdrLCAndjMsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbdW5vcmRlcmVkX2ZvbGQgaSB+aW5pdCB+YWRkIH5yZW1vdmVdIGNvbnN0cnVjdHMgYSBtb3JlIGluY3JlbWVudGFsIHZlcnNpb24gb2Y6XG5cbiAgICAgIHtbXG4gICAgICAgIGxldCVtYXAgbSA9IGkgaW5cbiAgICAgICAgTWFwLmZvbGQgbSB+aW5pdCB+ZjphZGRcbiAgICAgIF19XG5cbiAgICAgIGFzc3VtaW5nIHRoYXQgW3JlbW92ZV0gaXMgdGhlIGludmVyc2Ugb2YgW2FkZF0sIGFuZCB0aGF0IHRoZSBvcGVyYXRpb25zIGZvclxuICAgICAgZGlmZmVyZW50IGtleXMgY2FuIGJlIHBlcmZvcm1lZCBpbiBhbnkgb3JkZXIuIE5vdGUgdGhhdCBbZGF0YV9lcXVhbF0gZGVmYXVsdHNcbiAgICAgIHRvIFtwaHlzX2VxdWFsXSwgYnV0IGEgbW9yZSBwcmVjaXNlIGVxdWFsaXR5IGNhbiBiZSBwcm92aWRlZCBpbnN0ZWFkLlxuXG4gICAgICBXaGVuIHRoZSBkYXRhIGZvciBhIGtleSB1cGRhdGVzLCBieSBkZWZhdWx0IFtyZW1vdmVdIGlzIGNhbGxlZCBvbiB0aGUgb2xkIGRhdGFcbiAgICAgIGFuZCB0aGVuIFthZGRdIGlzIGNhbGxlZCBvbiB0aGUgbmV3IGRhdGEuXG4gICAgICBbdXBkYXRlXSBwcm92aWRlcyBhbiBhbHRlcm5hdGl2ZSBzaW5nbGUgZnVuY3Rpb24gdG8gY2FsbCBlYWNoIHRpbWUgYSBrZXkncyBkYXRhXG4gICAgICB1cGRhdGVzLCBhbmQgY2FuIGJlIHVzZWQgdG8gaW1wcm92ZSBlZmZpY2llbmN5LlxuXG4gICAgICBGb3IgdGhlIGluaXRpYWwgY29tcHV0YXRpb24sIGJ5IGRlZmF1bHQgW2FkZF0gaXMgY2FsbGVkIG9uIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlXG4gICAgICBtYXAuIEFzIHRoaXMgY2FuIGJlIGluZWZmaWNpZW50LCBbc3BlY2lhbGl6ZWRfaW5pdGlhbF0gY2FuIGJlIHByb3ZpZGVkIHRvIHBlcmZvcm1cbiAgICAgIHRoZSBjb21wdXRhdGlvbiBpbiBhIG1vcmUgZWZmZWN0aXZlIHdheS5cblxuICAgICAgSWYgW3JldmVydF90b19pbml0X3doZW5fZW1wdHldIGlzIHRydWUsIHRoZW4gaWYgdGhlIGlucHV0IG1hcCB0cmFuc2l0aW9ucyBmcm9tXG4gICAgICBiZWluZyBmdWxsIHRvIGVtcHR5LCB0aGVuIGluc3RlYWQgb2YgY2FsbGluZyBbcmVtb3ZlXSBvbiBldmVyeSBrdi1wYWlyLCBpdCB3aWxsXG4gICAgICBpbnN0ZWFkIGp1c3Qgc2V0IHRoZSBvdXRwdXQgdG8gd2hhdGV2ZXIgeW91J3ZlIHBhc3NlZCBhcyBbaW5pdF0uXG4gICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBbcmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eV0gaXMgW2ZhbHNlXSwgc28gdGhpcyBvcHRpbWl6YXRpb25cbiAgICAgIGRvZXMgbm90IGFwcGx5IGF1dG9tYXRpY2FsbHkuXG5cbiAgICAgIFtmaW5hbGl6ZV0gZGVmYXVsdHMgdG8gW0ZuLmlkXSBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBhY2N1bXVsYXRvciB2YWx1ZVxuICAgICAgaXMgc3RvcmVkIGFuZCByZXR1cm5lZCBkdXJpbmcgc3RhYmlsaXphdGlvbi4gIFlvdSBjYW4gdXNlIGl0IHRvIGUuZy4gcHJvY2VzcyB0aGVcbiAgICAgIGZvbGQgb3BlcmF0aW9ucyBpbiBhIGRpZmZlcmVudCBvcmRlci4gKilcbiAgdmFsIHVub3JkZXJlZF9mb2xkXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID91cGRhdGU6KGtleTonayAtPiBvbGRfZGF0YTondiAtPiBuZXdfZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gP3NwZWNpYWxpemVkX2luaXRpYWw6KGluaXQ6J2FjYyAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCAtPiAnYWNjKVxuICAgIC0+ID9maW5hbGl6ZTooJ2FjYyAtPiAnYWNjKVxuICAgIC0+ID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OmJvb2xcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gYWRkOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gcmVtb3ZlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gKCdhY2MsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFt1bm9yZGVyZWRfZm9sZF93aXRoX2V4dHJhXSBpcyBzaW1pbGFyIHRvIFt1bm9yZGVyZWRfZm9sZF0sIGJ1dCBpdCBhbHNvXG4gICAgICBkZXBlbmRzIG9uIGFub3RoZXIgYXJiaXRyYXJ5IGluY3JlbWVudGFsIHZhbHVlIHdoaWNoIGNhbiBiZSBmYWN0b3JlZCBpbnRvXG4gICAgICB0aGUgZm9sZGluZyBjb21wdXRhdGlvbi4gKilcbiAgdmFsIHVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmFcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP2V4dHJhX2VxdWFsOignZXh0cmEgLT4gJ2V4dHJhIC0+IGJvb2wpXG4gICAgLT4gP3VwZGF0ZTooa2V5OidrIC0+IG9sZF9kYXRhOid2IC0+IG5ld19kYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gP3NwZWNpYWxpemVkX2luaXRpYWw6KGluaXQ6J2FjYyAtPiAoJ2ssICd2LCAnZSkgTWFwLnQgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gP2ZpbmFsaXplOignYWNjIC0+ICdhY2MpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ICgoJ2ssICd2LCAnZSkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCdleHRyYSwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBhZGQ6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gcmVtb3ZlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdleHRyYSAtPiAnYWNjKVxuICAgIC0+IGV4dHJhX2NoYW5nZWQ6XG4gICAgICAgICAob2xkX2V4dHJhOidleHRyYVxuICAgICAgICAgIC0+IG5ld19leHRyYTonZXh0cmFcbiAgICAgICAgICAtPiBpbnB1dDooJ2ssICd2LCAnZSkgTWFwLnRcbiAgICAgICAgICAtPiAnYWNjXG4gICAgICAgICAgLT4gJ2FjYylcbiAgICAtPiAoJ2FjYywgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW2N1dG9mZl0gYXBwbGllcyBhIGN1dG9mZiB0byB2YWx1ZXMgaW4gdGhlIG1hcCBhcyB0aGV5IHBhc3MgdGhyb3VnaCB0aGVcbiAgICAgIGZ1bmN0aW9uLiAgSXQgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGNhbGxpbmcgW0luY3JfbWFwLm1hcCddIHdpdGggYW5cbiAgICAgIFtJbmNyLnNldF9jdXRvZmZdIGluc2lkZSwgYnV0IHdpdGggY29uc2lkZXJhYmx5IGJldHRlciBwZXJmb3JtYW5jZSBhbmRcbiAgICAgIG1lbW9yeSB1c2FnZS4gKilcbiAgdmFsIGN1dG9mZlxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY3V0b2ZmOid2IEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBHaXZlbiBhbiBpbnB1dCBtYXAgYW5kIGEgZnVuY3Rpb24gbWFwcGluZyBhIGt2LXBhaXIgdG8gYSBuZXdcbiAgICAgIHZhbHVlLCBbbWFwaV9jb3VudF0gd2lsbCBjb21wdXRlIGEgbXVsdGktc2V0IGtleWVkIG9uIHRoYXRcbiAgICAgIG5ldyB2YWx1ZS5cblxuICAgICAgQW55IHZhbHVlIHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhdmUgYSBjb3VudCBvZiBcIjBcIiBpcyBpbnN0ZWFkXG4gICAgICByZW1vdmVkIGZyb20gdGhlIG1hcC5cblxuICAgICAgSXQgaXMgYXNzdW1lZCB0aGF0IFtmXSBpcyBxdWl0ZSBmYXN0IGFzIHRoZSBmdW5jdGlvbiB3aWxsIGJlXG4gICAgICBjYWxsZWQgbW9yZSBvZnRlbiB0aGFuIHN0cmljdGx5IG5lY2Vzc2FyeSwgYnV0IGl0IGRvZXMgdGhpc1xuICAgICAgaW4gb3JkZXIgdG8gYXZvaWQgYWxsb2NhdGluZyBhbiBleHRyYSBtYXAuICBJZiBbZl0gaXMgdmVyeSBzbG93XG4gICAgICBhbmQgeW91IGRvbid0IG1pbmQgdGhlIGV4dHJhIGFsbG9jYXRpb25zLCB1c2VcbiAgICAgIFtJbmNyX21hcC5pbmRleF9ieWldIGNvbXBvc2VkIHdpdGggW0luY3JfbWFwLm1hcCB+ZjpNYXAubGVuZ3RoXSAqKVxuICB2YWwgbWFwaV9jb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrMSwgJ3YsICdjbXAxKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrMSAtPiBkYXRhOid2IC0+ICdrMilcbiAgICAtPiAoKCdrMiwgaW50LCAnY21wMikgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFRoZSBzYW1lIGFzIFttYXBpX2NvdW50XSBidXQgdGhlIFtmXSBmdW5jdGlvbiBvbmx5IGdldHMgdG8gc2VlIHRoZVxuICAgICAgZGF0YSBpbnN0ZWFkIG9mIGJvdGggdGhlIGtleSBhbmQgdGhlIGRhdGEuICopXG4gIHZhbCBtYXBfY291bnRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnazEsICd2LCAnY21wMSkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdrMilcbiAgICAtPiAoKCdrMiwgaW50LCAnY21wMikgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBzbWFsbGVzdCBbcl0gd2hlcmUgW3JdIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXIgaW4gdGhlXG4gICAgICBpbnB1dCBtYXAuICopXG4gIHZhbCBtYXBpX21pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAncilcbiAgICAtPiAoJ3Igb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgbGFyZ2VzdCBbcl0gd2hlcmUgW3JdIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXIgaW4gdGhlXG4gICAgICBpbnB1dCBtYXAuICopXG4gIHZhbCBtYXBpX21heFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAncilcbiAgICAtPiAoJ3Igb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgc21hbGxlc3QgW3JdIHdoZXJlIFtyXSBpcyBjb21wdXRlZCBmb3IgZWFjaCBrdi1wYWlyIGluIHRoZVxuICAgICAgaW5wdXQgbWFwLiAqKVxuICB2YWwgbWFwX21pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAncilcbiAgICAtPiAoJ3Igb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgbGFyZ2VzdCBbcl0gd2hlcmUgW3JdIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXIgaW4gdGhlXG4gICAgICBpbnB1dCBtYXAuICopXG4gIHZhbCBtYXBfbWF4XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICgnciBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBzbWFsbGVzdCBkYXRhIHZhbHVlIGZyb20gdGhlIGlucHV0IG1hcC4gKilcbiAgdmFsIG1pbl92YWx1ZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ3Ygb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgbGFyZ2VzdCBkYXRhIHZhbHVlIGZyb20gdGhlIGlucHV0IG1hcC4gKilcbiAgdmFsIG1heF92YWx1ZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ3Ygb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyBbbWluICogbWF4XSB3aGVyZSB0aGUgdmFsdWUgaXMgY29tcHV0ZWQgZm9yIGVhY2gga3YtcGFpclxuICAgICAgaW4gdGhlIGlucHV0IG1hcCAqKVxuICB2YWwgbWFwaV9ib3VuZHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3IpXG4gICAgLT4gKCgnciAqICdyKSBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIFttaW4gKiBtYXhdIHdoZXJlIHRoZSB2YWx1ZSBpcyBjb21wdXRlZCBmb3IgZWFjaCBrdi1wYWlyXG4gICAgICBpbiB0aGUgaW5wdXQgbWFwICopXG4gIHZhbCBtYXBfYm91bmRzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICgoJ3IgKiAncikgb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgc21hbGxlc3QgYW5kIGxhcmdlc3QgZGF0YSB2YWx1ZSBmcm9tIHRoZSBpbnB1dCBtYXAuICopXG4gIHZhbCB2YWx1ZV9ib3VuZHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCd2LCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCgndiAqICd2KSBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cblxuICAoKiogTGlrZSBbbWVyZ2VdIGluIFtCYXNlLk1hcC5tZXJnZV0uIE5vdGUgdGhhdCBbZl0gaXMgY2FsbGVkIGF0IG1vc3Qgb25jZSBwZXIga2V5IGluXG4gICAgICBhbnkgZ2l2ZW4gc3RhYmlsaXphdGlvbi4gKilcbiAgdmFsIG1lcmdlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gKCd2MSwgJ3YyKSBNYXAuTWVyZ2VfZWxlbWVudC50IC0+ICd2MyBvcHRpb24pXG4gICAgLT4gKCgnaywgJ3YzLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW21lcmdlX2JvdGhfc2FtZV0gaXMgbGlrZSBbbWVyZ2VdLCBidXQgb3B0aW1pemVkIGZvciB0aGUgY2FzZSB3aGVyZSB5b3Ugb25seSBjYXJlXG4gICAgICBhYm91dCB0aGUgY2FzZSB3aGVyZSBib3RoIG1hcHMgY29udGFpbiBhIHBhcnRpY3VsYXIga2V5LiAqKVxuICB2YWwgbWVyZ2VfYm90aF9zb21lXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ID9vdXRfZXF1YWw6KCd2MyAtPiAndjMgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+ICd2MSAtPiAndjIgLT4gJ3YzKVxuICAgIC0+ICgoJ2ssICd2MywgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIExpa2UgW21lcmdlXSwgYnV0IG9wZXJhdGluZyB1c2luZyBpbmNyZW1lbnRhbCBub2Rlcy4gVGhpcyBpcyBhIGdvb2QgdXNlIGNhc2UgZm9yXG4gICAgICBbcHB4X3BhdHRlcm5fYmluZF0uICopXG4gIHZhbCBtZXJnZSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjooJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbF9sZWZ0OigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP2RhdGFfZXF1YWxfcmlnaHQ6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjpcbiAgICAgICAgIChrZXk6J2tcbiAgICAgICAgICAtPiAoKCd2MSwgJ3YyKSBNYXAuTWVyZ2VfZWxlbWVudC50LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgICAgIC0+ICgndjMgb3B0aW9uLCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjMsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCB1bnppcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/bGVmdF9yZXN1bHRfZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gICAgLT4gP3JpZ2h0X3Jlc3VsdF9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAnYSAqICdiLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAnYSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50ICogKCgnaywgJ2IsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbdW56aXBfbWFwaV0gaXMgc2ltaWxhciB0byBbTGlzdC51bnppcF0sIGJ1dCBmb3IgaW5jcmVtZW50YWwgbWFwcy4gTm90ZSB0aGF0IFtmXSBtYXlcbiAgICAgIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiBhIHNpbmdsZSBlbGVtZW50LiAqKVxuICB2YWwgdW56aXBfbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/bGVmdF9yZXN1bHRfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/cmlnaHRfcmVzdWx0X2VxdWFsOigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICd2MSAqICd2MilcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgICogKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3VuemlwX21hcGknXSBpcyBsaWtlIFt1bnppcF9tYXBpXSwgYnV0IGFsbG93cyB5b3UgdG8gZGVmaW5lIHRoZSBtYXBwaW5nIGZyb20gdGhlXG4gICAgICBpbnB1dCBtYXAncyBlbGVtZW50cyB0byB0aGUgb3V0cHV0IG1hcHMnIGVsZW1lbnRzIGluY3JlbWVudGFsbHkuXG5cbiAgICAgIFRoZSBuYWl2ZSBpbXBsZW1lbnRhdGlvbiAoc2VlIGJlbG93KSBwcm9kdWNlcyB3b3JzZSBJbmNyZW1lbnRhbCBncmFwaHMuXG5cbiAgICAgIHtbXG4gICAgICAgIGxldCB0ZW1wID1cbiAgICAgICAgICBJbmNyX21hcC5tYXBpJyBpbnB1dCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgICAgIGYgfmtleSB+ZGF0YSB8PiBUdXBsZTIudW5jdXJyeSBJbmNyLmJvdGgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsZWZ0ID0gSW5jcl9tYXAubWFwIHRlbXAgfmY6VHVwbGUyLmdldDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0ID0gSW5jcl9tYXAubWFwIHRlbXAgfmY6VHVwbGUyLmdldDIgaW5cbiAgICAgICAgbGVmdCwgcmlnaHRcbiAgICAgIF19ICopXG4gIHZhbCB1bnppcF9tYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2IEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6XG4gICAgICAgICAoa2V5OidrXG4gICAgICAgICAgLT4gZGF0YTooJ3YsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKCd2MSwgJ3cpIEluY3JlbWVudGFsLnQgKiAoJ3YyLCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgICogKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogVGhpcyBpcyB0aGUgXCJlYXN5XCIgdmVyc2lvbiBvZiBbam9pbl0gKilcbiAgdmFsIGZsYXR0ZW5cbiAgICA6ICAndyBJbmNyZW1lbnRhbC5TdGF0ZS50XG4gICAgLT4gKCdrLCAoJ3YsICd3KSBJbmNyZW1lbnRhbC50LCAnY21wKSBNYXAudFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogVGhlIG5vbi1pbmNyZW1lbnRhbCBzZW1hbnRpY3Mgb2YgdGhpcyBmdW5jdGlvbiBpcyB0aGUgaWRlbnRpdHkgZnVuY3Rpb24uICBJdHNcbiAgICAgIHB1cnBvc2UgaXMgdG8gY29sbGFwc2UgdGhlIGV4dHJhIGxldmVsIG9mIGluY3JlbWVudGFsaXR5IGF0IHRoZSBsZXZlbCBvZiB0aGUgZGF0YSBvZlxuICAgICAgdGhlIG1hcC4qKVxuICB2YWwgam9pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoKCdrLCAoJ3YsICd3KSBJbmNyZW1lbnRhbC50LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIHNlcGFyYXRlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLnQsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBrZXlzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICd2LCAnYykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ2MpIFNldC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgW3JhbmtdIG9mIGEga2V5IChnaXZlbiBpbmNyZW1lbnRhbGx5KSBpbnNpZGUgb2YgYSBtYXAgKGFsc29cbiAgICAgIGluY3JlbWVudGFsKS4gIFRoZSB0cmFkaXRpb25hbCBbTWFwLnJhbmtdIGZ1bmN0aW9uIGlzIE8obiksIGFuZCB0aGlzIGluY3JlbWVudGFsXG4gICAgICByYW5rIGZ1bmN0aW9uIGhhcyB0aGUgZm9sbG93aW5nIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljczpcblxuICAgICAgZGVmaW5pdGlvbnM6XG4gICAgICBuIDogdGhlIHNpemUgb2YgdGhlIG1hcFxuICAgICAgciA6IHRoZSB0aW1lIHRvIGNvbXB1dGUgW01hcC5zeW1tZXRyaWNfZGlmZl0gYmV0d2VlbiB0aGUgdHdvIG1hcHNcbiAgICAgIGsgOiB0aGUgY2hhbmdlIGluIHJhbmsgb2YgdGhlIGtleSBiZXR3ZWVuIHR3byBzdGFiaWxpemF0aW9uc1xuXG4gICAgICBub3RlIHRoYXQgW3JdIGFuZCBba10gYXJlIF9tdWNoXyBzbWFsbGVyIHRoYW4gW25dIGZvciBtb3N0IHByYWN0aWNhbCBwdXJwb3Nlc1xuXG4gICAgICAtIE8obG9nIG4pIHdoZW4gdGhlIGtleSBpcyBub3QgaW4gdGhlIG1hcC5cbiAgICAgICAgVGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb3RoZXIgZXZlcnkgb3RoZXIgc2NlbmFyaW8uXG4gICAgICAtIE8obikgb24gdGhlIGluaXRpYWwgc3RhYmlsaXphdGlvblxuICAgICAgLSBPKG4pIHdoZW4gdGhlIGtleSB0cmFuc2l0aW9ucyBmcm9tIG5vdCBiZWluZyBpbiB0aGUgbWFwIHRvIGJlaW5nIGluIHRoZSBtYXBcbiAgICAgIC0gTyhsb2cgbiArIHIpIHdoZW4gdGhlIG1hcCBjaGFuZ2VzXG4gICAgICAtIE8obG9nIG4gKyBrKSB3aGVuIHRoZSBrZXkgY2hhbmdlc1xuICAgICAgLSBPKGxvZyBuICsgciArIGspIHdoZW4gYm90aCBrZXkgYW5kIG1hcCBjaGFuZ2UgKilcbiAgdmFsIHJhbmtcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIEJhc2UuTWFwLnQsICdzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCdrLCAnc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgIC0+IChpbnQgb3B0aW9uLCAnc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbc3VicmFuZ2UgbWFwIChtaW4sIG1heCldIGNvbnN0cnVjdHMgYW4gaW5jcmVtZW50YWwgc3VibWFwIHRoYXQgaW5jbHVkZXMgYWxsIG9mIHRoZVxuICAgICAga2V5cyBhbmQgZGF0YSBmcm9tIFttYXBdIGJldHdlZW4gW21pbl0gYW5kIFttYXhdLCBhbmQgbm9uZSBvZiB0aGUga2V5cyBvdXRzaWRlIHRoZVxuICAgICAgcmFuZ2UuXG5cbiAgICAgIFtzdWJyYW5nZSBtYXAgTm9uZV0gaXMgdGhlIGVtcHR5IG1hcC4gW3JhbmdlXSBiZWluZyBbTm9uZV0gbWVhbnMgbm8gZWxlbWVudHMgYXJlXG4gICAgICBjaG9zZW4uXG5cbiAgICAgIE5vdGUgdGhhdCBpbmNyZW1lbnRhbCBjaGFuZ2VzIGhhdmUgYSBydW50aW1lIG9mIE8oKGsgKyBtKSBsb2cgbikgd2hlcmUgayBpcyB0aGUgc2l6ZVxuICAgICAgb2YgdGhlIGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mIHRoZSBjaGFuZ2VzIHRvIHRoZVxuICAgICAgZWxlbWVudHMgY29udGFpbmVkIGJ5IHRoZSByYW5nZS4gVGhlIGNvbXBsZXhpdHkgb2YgdGhlIGluaXRpYWwgY29tcHV0YXRpb24gaXMgdGhlXG4gICAgICBzYW1lIGFzIHRoZSBpbmNyZW1lbnRhbCBjb21wdXRhdGlvbiwgd2l0aCBzb21lIHNpbXBsaWZpY2F0aW9uLiBrID0gMCBiZWNhdXNlIHdlIGhhdmVcbiAgICAgIG5vdCBtYWRlIGFueSBjaGFuZ2VzIHRvIHRoZSB1bmRlcmx5aW5nIG1hcCB5ZXQsIGFuZCBtIGVxdWFscyB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UsXG4gICAgICBiZWNhdXNlIHRoZSBpbml0aWFsIHJhbmdlIGlzIGVtcHR5LiAqKVxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICggKCdrIE1heWJlX2JvdW5kLkFzX2xvd2VyX2JvdW5kLnQgKiAnayBNYXliZV9ib3VuZC5Bc191cHBlcl9ib3VuZC50KSBvcHRpb25cbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtzdWJyYW5nZV9ieV9yYW5rIG1hcCAocywgZSldIGNvbnN0cnVjdHMgYW4gaW5jcmVtZW50YWwgc3VibWFwIHRoYXQgaW5jbHVkZXMgKGUtcysxKVxuICAgICAga2V5cyBiZXR3ZWVuIHMtdGggYW5kIGUtdGgsIGluY2x1c2l2ZS5cblxuICAgICAgSWYgcyBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIG1hcCBsZW5ndGgsIHRoZSByZXN1bHQgaXMgZW1wdHkuXG4gICAgICBJZiBlIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gbWFwIGxlbmd0aCwgdGhlIHJlc3VsdCBjb250YWlucyBrZXlzIGZyb20gcy10aCB0byB0aGVcbiAgICAgIGxhc3Qgb25lLlxuXG4gICAgICBSYWlzZXMgZm9yIGludmFsaWQgaW5kaWNlcyAtIHMgPCAwIG9yIGUgPCBzLlxuXG4gICAgICBSdW50aW1lIG9mIHRoZSBpbml0aWFsIGNvbXB1dGF0aW9uIGlzIE8obWluKGUsIG4tcykgKyBsb2cobikpLCBpLmUuIGxpbmVhcixcbiAgICAgIGJ1dCBvcHRpbWl6ZWQgZm9yIHJhbmdlcyBjbG9zZSB0byBiZWdpbm5pbmcgb3IgZW5kLlxuXG4gICAgICBSdW50aW1lIG9mIHRoZSBpbmNyZW1lbnRhbCBjb21wdXRhdGlvbiBpcyBPKGxvZyhuKSArIGsgKyAobSttJykgKiBsb2cobikpIHdoZXJlOlxuICAgICAgLSBrIGlzIHRoZSBzaXplIG9mIHRoZSBkaWZmXG4gICAgICAtIG0gaXMgdGhlIHRvdGFsIGltcGFjdCBvZiBtYXAgY2hhbmdlcyBvbiB0aGUgcmFuZ2UsIGJvdW5kZWQgYnkgayAoZS5nLiBpZiB3ZSBhZGRcbiAgICAgICAgMTAwMSBrZXlzIGFuZCByZW1vdmUgMTAwMCBiZWxvdyBzLCB0aGVuIG0gPSAxKVxuICAgICAgLSBtJyA9IE8oIHxuZXcgcyAtIG9sZCBzfCArIHxuZXcgZSAtIG9sZCBlfCApLlxuICAqKVxuICB2YWwgc3VicmFuZ2VfYnlfcmFua1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCBpbnQgTWF5YmVfYm91bmQuQXNfbG93ZXJfYm91bmQudCAqIGludCBNYXliZV9ib3VuZC5Bc191cHBlcl9ib3VuZC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbcmVrZXldIHRyYW5zZm9ybXMgYSBtYXAgYnkgbW9kaWZ5aW5nIHRoZSB0eXBlIG9mIHRoZSBrZXkuICBUaGUgdXNlciBpc1xuICAgICAgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIHRoYXQgW2ZdIGRvZXNuJ3QgcmV0dXJuIHRoZSBzYW1lIG91dHB1dCBrZXkgZm9yXG4gICAgICBtdWx0aXBsZSBpbnB1dCBrZXlzLlxuXG4gICAgICBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgW2ZdIGlzIGNoZWFwIHRvIGNvbXB1dGUgYW5kIGFjY29yZGluZ2x5IG1heSBjYWxsXG4gICAgICBpdCBtdWx0aXBsZSB0aW1lcy4gKilcbiAgdmFsIHJla2V5XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2sxLCAndiwgJ2NtcDEpIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sxIC0+IGRhdGE6J3YgLT4gJ2syKVxuICAgIC0+ICgoJ2syLCAndiwgJ2NtcDIpIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbaW5kZXhfYnlpIG1hcCB+Y29tcGFyYXRvciB+aW5kZXhdIGNvbnN0cnVjdHMgYW4gaW5jcmVtZW50YWwgbWFwLW9mLW1hcHMgd2hlcmUgZWFjaFxuICAgICAga2V5LWRhdGEgcGFpciBvZiB0aGUgaW5wdXQgbWFwIGlzIHByZXNlbnQgaW4gb25lIChvciBub25lKSBvZiB0aGUgaW5uZXIgbWFwcy5cbiAgICAgIFtpbmRleF0gc3BlY2lmaWVzIHRoZSBvdXRlciBtYXAga2V5IHVuZGVyIHdoaWNoIGVhY2ggb3JpZ2luYWwga2V5LWRhdGEgcGFpciBpc1xuICAgICAgZm91bmQuXG5cbiAgICAgIEFsbCBvZiB0aGUgcmVzdWx0aW5nIGlubmVyIG1hcHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgbm9uLWVtcHR5OyBpZiB0aGUgaW5uZXIgbWFwXG4gICAgICB3b3VsZCBvdGhlcndpc2UgYmUgZW1wdHksIHRoZW4gdGhlIGtleSBmb3IgdGhhdCBtYXAgaXMgaW5zdGVhZCByZW1vdmVkIGZyb20gdGhlXG4gICAgICBvdXRlciBtYXAuXG5cbiAgICAgIEFuIGFsbC1hdC1vbmNlIHZlcnNpb24gb2YgW2luZGV4X2J5XSB3b3VsZCBsb29rIGxpa2U6XG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBpbmRleF9ieWkgbWFwIH5jb21wYXJhdG9yIH5pbmRleCA9XG4gICAgICAgICAgTWFwLnRvX2FsaXN0IG1hcFxuICAgICAgICAgIHw+IExpc3QuZmlsdGVyX21hcCB+ZjooZnVuIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgICBtYXRjaCBpbmRleCB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgaW5kZXggLT4gU29tZSAoaW5kZXgsIChrZXksIGRhdGEpKSlcbiAgICAgICAgICB8PiBNYXAub2ZfYWxpc3RfbXVsdGkgY29tcGFyYXRvclxuICAgICAgICAgIHw+IE1hcC5tYXAgfmY6KE1hcC5vZl9hbGlzdF9leG4gKE1hcC5jb21wYXJhdG9yX3MgbWFwKSlcbiAgICAgICAgOztcbiAgICAgIF19ICopXG4gIHZhbCBpbmRleF9ieWlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ291dGVyX2tleSwgJ291dGVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGluZGV4OihrZXk6J2lubmVyX2tleSAtPiBkYXRhOid2IC0+ICdvdXRlcl9rZXkgb3B0aW9uKVxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtpbmRleF9ieSBtYXAgfmNvbXBhcmF0b3IgfmluZGV4XSBpcyBsaWtlIFtpbmRleF9ieWkgbWFwIH5jb21wYXJhdG9yIH5pbmRleF0sIGJ1dFxuICAgICAgdGhlIFtpbmRleF0gZnVuY3Rpb24gZG9lcyBub3QgdGFrZSB0aGUgaW5uZXIgbWFwJ3MgW2tleV0uICopXG4gIHZhbCBpbmRleF9ieVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5kZXg6KCd2IC0+ICdvdXRlcl9rZXkgb3B0aW9uKVxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OmJvb2xcbiAgICAtPiA/dXBkYXRlOlxuICAgICAgICAgKG91dGVyX2tleTonb3V0ZXJfa2V5XG4gICAgICAgICAgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXlcbiAgICAgICAgICAtPiBvbGRfZGF0YTondlxuICAgICAgICAgIC0+IG5ld19kYXRhOid2XG4gICAgICAgICAgLT4gJ2FjY1xuICAgICAgICAgIC0+ICdhY2MpXG4gICAgLT4gKCAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBhZGQ6KG91dGVyX2tleTonb3V0ZXJfa2V5IC0+IGlubmVyX2tleTonaW5uZXJfa2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+IHJlbW92ZToob3V0ZXJfa2V5OidvdXRlcl9rZXkgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gKCdhY2MsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFt0cmFuc3Bvc2VdIGZsaXBzIHRoZSBvcmRlciBvZiBhIGRvdWJseSBuZXN0ZWQgaW5jcmVtZW50YWwgbWFwLlxuXG4gICAgICBBbGwgaW5uZXIgbWFwIGluc3RhbmNlcyB3aWxsIGhhdmUgYXQgbGVhc3Qgb25lIGVsZW1lbnQuICopXG4gIHZhbCB0cmFuc3Bvc2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrMiwgJ2syX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgoJ2sxLCAoJ2syLCAndiwgJ2syX2NtcCkgTWFwLnQsICdrMV9jbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2syLCAoJ2sxLCAndiwgJ2sxX2NtcCkgTWFwLnQsICdrMl9jbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBjb2xsYXBzZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdpbm5lcl9rZXksICdpbm5lcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoICggJ291dGVyX2tleSAqICdpbm5lcl9rZXlcbiAgICAgICAgICwgJ3ZcbiAgICAgICAgICwgKCdvdXRlcl9jbXAsICdpbm5lcl9jbXApIFR1cGxlMi5jb21wYXJhdG9yX3dpdG5lc3MgKVxuICAgICAgICAgICBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbY29sbGFwc2VfYnldIGlzIHNpbWlsYXIgdG8gW2NvbGxhcHNlXSwgYnV0IGl0IGFsbG93cyB0aGUgdXNlciB0b1xuICAgICAgY2hvb3NlIGhvdyB0byBjb21iaW5lIHRoZSB0d28ga2V5cyBmcm9tIHRoZSBvdXRlciBhbmQgaW5uZXIgbWFwcy5cbiAgICAgIFRoaXMgZG9lcyBtZWFuIHRoYXQgaXQncyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGltcGxlbWVudG9yIG9mIHRoZVxuICAgICAgW21lcmdlX2tleXNdIGZ1bmN0aW9uIHRvIHVwaG9sZCB0aGlzIGludmFyaWFudDpcblxuICAgICAgPiBhIG1lcmdlZC1rZXkgYmVpbmcgZXF1YWwgdG8gYW5vdGhlciBtZXJnZWQta2V5IGltcGxpZXMgdGhhdCB0aGVcbiAgICAgID4gb3V0ZXIta2V5cyBhbmQgaW5uZXIta2V5cyB3aGljaCB3ZXJlIHVzZWQgdG8gYnVpbGQgdGhlIG1lcmdlZCBrZXlzIGFsc29cbiAgICAgID4gY29tcGFyZSB0byBiZSBlcXVhbCB0byBvbmUgYW5vdGhlclxuXG4gICAgICBUaGUgW35jb21wYXJhdG9yXSBhcmd1bWVudCB0aGUgZmlyc3QtY2xhc3MgbW9kdWxlIG9mIHRoZSBvdXRwdXQga2V5LCBpdFxuICAgICAgdXN1YWxseSBsb29rcyBsaWtlIHRoaXM6XG4gICAgICBbIH5jb21wYXJhdG9yOihtb2R1bGUgQ29tYmluZWRfa2V5KSBdXG4gICAgICBidXQgbWFrZSBzdXJlIHRoYXQgdGhlIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBbQ29tcGFyYXRvci5TXSBzaWduYXR1cmUuICopXG4gIHZhbCBjb2xsYXBzZV9ieVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuICAgIC0+IG1lcmdlX2tleXM6KCdvdXRlcl9rZXkgLT4gJ2lubmVyX2tleSAtPiAnY29tYmluZWRfa2V5KVxuICAgIC0+IGNvbXBhcmF0b3I6KCdjb21iaW5lZF9rZXksICdjb21iaW5lZF9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoKCdjb21iaW5lZF9rZXksICd2LCAnY29tYmluZWRfY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29udmVydCBhIG1hcCB3aXRoIHR1cGxlcyBmb3Iga2V5cyBpbnRvIGEgbmVzdGVkIG1hcC4gVGhpcyBvcGVyYXRpb24gaXMgcm91Z2hseSB0aGVcbiAgICAgIGludmVyc2Ugb2YgW2NvbGxhcHNlXSwgdGhvdWdoIGlmIHRoZXJlIGFyZSBvdXRlciBrZXlzIGluIHRoZSB1bmNvbGxhcHNlZCBtYXAgdGhhdFxuICAgICAgY29ycmVzcG9uZCB0byBlbXB0eSBpbm5lciBtYXBzLCB0aGUgb3V0ZXIga2V5cyB3aWxsIGJlIGRyb3BwZWQgZnJvbSB0aGUgZXhwYW5kZWRcbiAgICAgIG1hcC4gKilcbiAgdmFsIGV4cGFuZFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdvdXRlcl9rZXkgKiAnaW5uZXJfa2V5LCAndiwgJ3R1cGxlX2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gb3V0ZXJfY29tcGFyYXRvcjooJ291dGVyX2tleSwgJ291dGVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGlubmVyX2NvbXBhcmF0b3I6KCdpbm5lcl9rZXksICdpbm5lcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBjb3VudGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gKGludCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgY291bnRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKChfLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooJ3YgLT4gYm9vbClcbiAgICAtPiAoaW50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmb3JfYWxsaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiAoYm9vbCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgZm9yX2FsbFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKF8sICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IChib29sLCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBleGlzdHNpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+IChib29sLCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBleGlzdHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKChfLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooJ3YgLT4gYm9vbClcbiAgICAtPiAoYm9vbCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogSW5jcmVtZW50YWxseSBjb21wdXRlIHRoZSBzdW0gb2YgYWxsIG9mIHRoZSB2YWx1ZXMgaW4gdGhlIG1hcC5cblxuICAgICAgQmV3YXJlIG9mIGZsb2F0J3MgbmVnYXRpdmUgaW5maW5pdGllcy4gVGhleSBhcmVuJ3QgY29tbXV0YXRpdmUgYW5kIHdpbGwgbWlzYmVoYXZlXG4gICAgICBoZXJlLlxuICAqKVxuICB2YWwgc3VtXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoXywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IChtb2R1bGUgQWJzdHJhY3RfYWxnZWJyYS5Db21tdXRhdGl2ZV9ncm91cC5XaXRob3V0X3NleHAgd2l0aCB0eXBlIHQgPSAndSlcbiAgICAtPiBmOigndiAtPiAndSlcbiAgICAtPiAoJ3UsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFsoJ2ssICd2KSBMb29rdXAudF0gcHJvdmlkZXMgYSB3YXkgdG8gbG9va3VwIGtleXMgaW4gYSBtYXAgd2hpY2ggdXNlcyBzeW1tZXRyaWNcbiAgICAgIGRpZmZzIHRvIHRyaWdnZXIgdXBkYXRlcyBvZiB0aGUgbG9va3Vwcy5cblxuICAgICAgVGhlIGNvbXBsZXhpdHkgb2YgYW4gdXBkYXRlIGRlcGVuZHMgb246XG4gICAgICAtIFtuXTogdGhlIG51bWJlciBvZiBrZXlzIGluIHRoZSBsYXJnZXIgb2YgdGhlIG9sZC91cGRhdGVkIGlucHV0IG1hcFxuICAgICAgLSBba106IHRoZSBudW1iZXIgb2YgbG9va3VwIG5vZGVzIGNyZWF0ZWQgdXNpbmcgW2ZpbmRdXG4gICAgICAtIFttXTogdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgc3ltZGlmZiBvZiB0aGUgbWFwc1xuICAgICAgLSBbc3ltZGlmZihuKV06IHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgdGhlIHN5bWRpZmYgb24gdGhlIG1hcCAobSA8PSBzeW1kaWZmKG4pIDw9IG4pXG5cbiAgICAgIEVhY2ggdXBkYXRlIHNob3VsZCBjb3N0IFtPKHN5bWRpZmYobikgKyBtICogbG9nIGspXSwgc28gdGhpcyB3aWxsIGJlIGVmZmljaWVudCB3aGVuXG4gICAgICB0aGVyZSBhcmUgYSBsb3Qgb2YgbG9va3VwcyAoY2xvc2UgdG8gbikgaW50byBhIG1hcCB3aGljaCBjYW4gYmUgZWZmaWNpZW50bHlcbiAgICAgIHN5bWRpZmZlZCAoYW5kIHRoZXJlZm9yZSBoYXMgYSBzbWFsbCBudW1iZXIgb2YgY2hhbmdlcyBhbHNvKS4gVGhlIGNvc3Qgb2YgdXBkYXRpbmdcbiAgICAgIHdoZW4gcGVyZm9ybWluZyB0aGUgc2FtZSBsb29rdXBzIGJ5IG1lYW5zIG9mIFtJbmNyLm1hcCB+ZjooZnVuIG0gLT4gTWFwLmZpbmQgbSBrZXkpXVxuICAgICAgaXMgW08oayAqIGxvZyBuKV0uXG4gICopXG4gIG1vZHVsZSBMb29rdXAgOiBzaWdcbiAgICB0eXBlICgnaywgJ3YsICdjbXAsICd3KSB0XG5cbiAgICAoKiogQ3JlYXRlIHRoZSBsb29rdXAgc3RydWN0dXJlIG9uIGFuIGluY3JlbWVudGFsIG1hcC4gKilcbiAgICB2YWwgY3JlYXRlXG4gICAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAgIC0+IGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXAsICd3KSB0XG5cbiAgICAoKiogQ3JlYXRlIGEgbm9kZSB3aGljaCBwZXJmb3JtcyBbTWFwLmZpbmRdIG9uIHRoZSBpbnB1dCBtYXAuXG5cbiAgICAgICAgW2ZpbmQgKGNyZWF0ZSBpbmNyX21hcCkga2V5XSBzaG91bGQgYmUgZXF1aXZhbGVudCB0byBbSW5jci5tYXAgfmY6KGZ1biBtIC0+XG4gICAgICAgIE1hcC5maW5kIG0ga2V5KSBpbmNyX21hcF0sIGJ1dCB3aGVuIHlvdSBjYWxsIFtmaW5kXSBtYW55IHRpbWVzIGZvciBhIHNpbmdsZVxuICAgICAgICBbY3JlYXRlXSB0aGUgbm9kZXMgc2hvdWxkIHVwZGF0ZSBtb3JlIGVmZmljaWVudGx5IGluIHN0YWJpbGlzYXRpb24gd2hlbiBbaW5jcl9tYXBdXG4gICAgICAgIGNoYW5nZXMgaW4gYSB3YXkgd2hpY2ggY2FuIGJlIGVmZmljaWVudGx5IGRpZmZlZC5cblxuICAgICAgICBUaGlzIHdpbGwgcmUtdXNlIGV4aXN0aW5nIG5vZGVzIHdoZW4gaXQgY2FuLCBidXQgd2lsbCBub3QgYWx3YXlzIGRvIHNvLlxuICAgICopXG4gICAgdmFsIGZpbmQgOiAoJ2ssICd2LCBfLCAndykgdCAtPiAnayAtPiAoJ3Ygb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICAgKCoqIEEgY29udmVuaWVudCB3YXkgdG8gcmVmZXIgdG8gdGhlIHR5cGUgZm9yIGEgZ2l2ZW4ga2V5LiAqKVxuICAgIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICAgIHR5cGUgdFxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kKSA6IHNpZ1xuICAgICAgdHlwZSBub25yZWMgKCd2LCAndykgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcywgJ3cpIHRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBGb3JfZGVidWcgOiBzaWdcbiAgICAgIHZhbCBzZXhwX29mX3QgOiAoJ2sgLT4gU2V4cC50KSAtPiAoJ3YgLT4gU2V4cC50KSAtPiAoJ2ssICd2LCAnY21wLCBfKSB0IC0+IFNleHAudFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgOiBzaWdcbiAgICB2YWwgZmluZF9rZXlfcmFuZ2VfbGluZWFyXG4gICAgICA6ICBmcm9tOmludFxuICAgICAgLT4gdG9fOmludFxuICAgICAgLT4gKCdhLCAnYiwgJ2MpIEJhc2UuTWFwLnRcbiAgICAgIC0+ICgnYSAqICdhIG9wdGlvbikgb3B0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFNfZ2VuID0gU19nZW5cblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSBzdGF0ZV93aXRuZXNzXG5cbiAgICBpbmNsdWRlXG4gICAgICBTX2dlblxuICAgICAgd2l0aCB0eXBlICdhIEluY3IudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgIGFuZCB0eXBlICdhIEluY3IuQ3V0b2ZmLnQgPSAnYSBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgICAgIGFuZCB0eXBlICgnaywgJ3YsICdjbXApIExvb2t1cC50ID0gKCdrLCAndiwgJ2NtcCwgc3RhdGVfd2l0bmVzcykgTG9va3VwLnRcbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEluY3IgOiBJbmNyZW1lbnRhbC5TKSA6XG4gICAgUyB3aXRoIHR5cGUgc3RhdGVfd2l0bmVzcyA6PSBJbmNyLnN0YXRlX3dpdG5lc3MgYW5kIG1vZHVsZSBJbmNyIDo9IEluY3JcbmVuZFxuIiwib3BlbiEgQ29yZVxuaW5jbHVkZSBJbmNyX21hcF9pbnRmXG5cbmxldCBub19pbnN0cnVtZW50YXRpb24gPSB7IEluc3RydW1lbnRhdGlvbi5mID0gKGZ1biBmIC0+IGYgKCkpIH1cblxuKCoqIFRoaXMgdHlwZSBsZXRzIHVzIGNhcHR1cmUgdGhlIGtpbmQgb2YgbWFwIGZ1bmN0aW9uIGJlaW5nIHBlcmZvcm1lZCwgc28gd2UgY2FuIHdpdGhcbiAgICBvbmUgaW1wbGVtZW50YXRpb24gcGVyZm9ybSBtYXAgYW5kIGZpbHRlci1tYXAgb3BlcmF0aW9ucy5cblxuICAgIEhlcmUsIFsnaW5wdXRfZGF0YV0gaXMgdGhlIHR5cGUgb2YgZGF0YSBpbiB0aGUgaW5wdXQgbWFwLCBbJ291dHB1dF9kYXRhXSBpcyB0aGUgdHlwZVxuICAgIG9mIGRhdGEgaW4gdGhlIG91dHB1dCBtYXAsIGFuZCBbJ2Zfb3V0cHV0XSBpcyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIFt+Zl0gZnVuY3Rpb25cbiAgICBwYXNzZWQgdG8gdGhlIG1hcHBpbmcgZnVuY3Rpb24uICopXG5tb2R1bGUgTWFwX3R5cGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2lucHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgJ2Zfb3V0cHV0KSB0ID1cbiAgICB8IE1hcCA6ICgnaW5wdXRfZGF0YSwgJ291dHB1dF9kYXRhLCAnb3V0cHV0X2RhdGEpIHRcbiAgICB8IEZpbHRlcl9tYXAgOiAoJ2lucHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgJ291dHB1dF9kYXRhIG9wdGlvbikgdFxuXG4gICgqIFRoZSBleHRyYSB0eXBlIHZhcmlhYmxlICdhIGlzIHRvIGFsbG93IGluIGZ1dHVyZTpcbiAgICAgfCBGaWx0ZXIgOiAoJ291dHB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsIGJvb2wpIHQgKilcbmVuZFxuXG5tb2R1bGUgR2VuZXJpYyA9IHN0cnVjdFxuICBsZXQgd2l0aF9vbGQgfmluc3RydW1lbnRhdGlvbiBpIH5mID1cbiAgICBsZXQgb3BlbiBJbmNyZW1lbnRhbC5MZXRfc3ludGF4IGluXG4gICAgbGV0IG9sZCA9IHJlZiBOb25lIGluXG4gICAgbGV0JW1hcCBhID0gaSBpblxuICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICBsZXQgYiA9IGYgfm9sZDohb2xkIGEgaW5cbiAgICAgIG9sZCA6PSBTb21lIChhLCBiKTtcbiAgICAgIGIpXG4gIDs7XG5cbiAgbGV0IGN1dG9mZiA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgbWFwIH5jdXRvZmYgPVxuICAgIGxldCBkYXRhX2VxdWFsIG9sZF92YWx1ZSBuZXdfdmFsdWUgPVxuICAgICAgSW5jcmVtZW50YWwuQ3V0b2ZmLnNob3VsZF9jdXRvZmYgY3V0b2ZmIH5vbGRfdmFsdWUgfm5ld192YWx1ZVxuICAgIGluXG4gICAgd2l0aF9vbGQgfmluc3RydW1lbnRhdGlvbiBtYXAgfmY6KGZ1biB+b2xkIGN1ciAtPlxuICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjdXJcbiAgICAgIHwgU29tZSAoX29sZF9pbiwgb2xkKSAtPlxuICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZiB+ZGF0YV9lcXVhbCB+aW5pdDpvbGQgb2xkIGN1ciB+ZjooZnVuIGFjYyAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICB8IGBMZWZ0IF9vbGQgLT4gTWFwLnJlbW92ZSBhY2Mga2V5XG4gICAgICAgICAgfCBgUmlnaHQgbmV3XyAtPiBNYXAuYWRkX2V4biBhY2MgfmtleSB+ZGF0YTpuZXdfXG4gICAgICAgICAgfCBgVW5lcXVhbCAoX29sZCwgbmV3X3ZhbHVlKSAtPiBNYXAuc2V0IGFjYyB+a2V5IH5kYXRhOm5ld192YWx1ZSkpXG4gIDs7XG5cbiAgbGV0IHVub3JkZXJlZF9mb2xkXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICA/c3BlY2lhbGl6ZWRfaW5pdGlhbFxuICAgICAgICA/KGZpbmFsaXplID0gRm4uaWQpXG4gICAgICAgID8ocmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eSA9IGZhbHNlKVxuICAgICAgICBtYXBcbiAgICAgICAgfmluaXRcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlXG4gICAgPVxuICAgIGxldCB1cGRhdGUgPVxuICAgICAgbGV0IGRlZmF1bHQgfmtleSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyA9XG4gICAgICAgIGFkZCB+a2V5IH5kYXRhOm5ld19kYXRhIChyZW1vdmUgfmtleSB+ZGF0YTpvbGRfZGF0YSBhY2MpXG4gICAgICBpblxuICAgICAgT3B0aW9uLnZhbHVlIHVwZGF0ZSB+ZGVmYXVsdFxuICAgIGluXG4gICAgd2l0aF9vbGQgfmluc3RydW1lbnRhdGlvbiBtYXAgfmY6KGZ1biB+b2xkIG5ld19pbiAtPlxuICAgICAgbGV0IGFjYyA9XG4gICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCBzcGVjaWFsaXplZF9pbml0aWFsIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IE1hcC5mb2xkIH5pbml0IH5mOmFkZCBuZXdfaW5cbiAgICAgICAgICAgfCBTb21lIGluaXRpYWwgLT4gaW5pdGlhbCB+aW5pdCBuZXdfaW4pXG4gICAgICAgIHwgU29tZSAob2xkX2luLCBvbGRfb3V0KSAtPlxuICAgICAgICAgIGlmIHJldmVydF90b19pbml0X3doZW5fZW1wdHkgJiYgTWFwLmxlbmd0aCBuZXdfaW4gPSAwXG4gICAgICAgICAgdGhlbiBpbml0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgfmluaXQ6b2xkX291dFxuICAgICAgICAgICAgICBvbGRfaW5cbiAgICAgICAgICAgICAgbmV3X2luXG4gICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgIH5mOihmdW4gYWNjIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgICAgICAgICAgIHwgYExlZnQgb2xkIC0+IHJlbW92ZSB+a2V5IH5kYXRhOm9sZCBhY2NcbiAgICAgICAgICAgICAgICB8IGBSaWdodCBuZXdfIC0+IGFkZCB+a2V5IH5kYXRhOm5ld18gYWNjXG4gICAgICAgICAgICAgICAgfCBgVW5lcXVhbCAob2xkLCBuZXdfKSAtPiB1cGRhdGUgfmtleSB+b2xkX2RhdGE6b2xkIH5uZXdfZGF0YTpuZXdfIGFjYylcbiAgICAgIGluXG4gICAgICBmaW5hbGl6ZSBhY2MpXG4gIDs7XG5cbiAgbGV0IHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICBpbmNyX21hcFxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICA9XG4gICAgbGV0IHVwZGF0ZSA9XG4gICAgICBtYXRjaCB1cGRhdGUgd2l0aFxuICAgICAgfCBTb21lIHVwZGF0ZSAtPiB1cGRhdGVcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgICAgYWRkXG4gICAgICAgICAgICB+b3V0ZXJfa2V5XG4gICAgICAgICAgICB+aW5uZXJfa2V5XG4gICAgICAgICAgICB+ZGF0YTpuZXdfZGF0YVxuICAgICAgICAgICAgKHJlbW92ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6b2xkX2RhdGEgYWNjKVxuICAgIGluXG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIGluY3JfbWFwXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgfmluaXRcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5Om91dGVyX2tleSB+b2xkX2RhdGE6b2xkX2lubmVyX21hcCB+bmV3X2RhdGE6bmV3X2lubmVyX21hcCBhY2MgLT5cbiAgICAgICAgKE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmIG9sZF9pbm5lcl9tYXAgbmV3X2lubmVyX21hcCB+ZGF0YV9lcXVhbClcbiAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICB+ZjooZnVuIGFjYyAoaW5uZXJfa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICB8IGBMZWZ0IGRhdGFfcmVtb3ZlZCAtPiByZW1vdmUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOmRhdGFfcmVtb3ZlZCBhY2NcbiAgICAgICAgICAgIHwgYFJpZ2h0IGRhdGFfYWRkZWQgLT4gYWRkIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpkYXRhX2FkZGVkIGFjY1xuICAgICAgICAgICAgfCBgVW5lcXVhbCAob2xkX2RhdGEsIG5ld19kYXRhKSAtPlxuICAgICAgICAgICAgICB1cGRhdGUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjKSBbQG5vbnRhaWxdKVxuICAgICAgfmFkZDooZnVuIH5rZXk6b3V0ZXJfa2V5IH5kYXRhOmlubmVyX21hcCBhY2MgLT5cbiAgICAgICAgTWFwLmZvbGQgaW5uZXJfbWFwIH5pbml0OmFjYyB+ZjooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIGFjYyAtPlxuICAgICAgICAgIGFkZCB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGEgYWNjKSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5Om91dGVyX2tleSB+ZGF0YTppbm5lcl9tYXAgYWNjIC0+XG4gICAgICAgIE1hcC5mb2xkIGlubmVyX21hcCB+aW5pdDphY2MgfmY6KGZ1biB+a2V5OmlubmVyX2tleSB+ZGF0YSBhY2MgLT5cbiAgICAgICAgICByZW1vdmUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhIGFjYykpXG4gIDs7XG5cbiAgbGV0IHdpdGhfY29tcGFyYXRvcicgZ2V0X2NvbXBhcmF0b3IgeCBmID1cbiAgICBJbmNyZW1lbnRhbC5iaW5kIChJbmNyZW1lbnRhbC5mcmVlemUgKEluY3JlbWVudGFsLm1hcCB4IH5mOmdldF9jb21wYXJhdG9yKSkgfmZcbiAgOztcblxuICAoKiogQ2FwdHVyZXMgdGhlIGNvbXBhcmF0b3IgKHdoaWNoIGNhbid0IGNoYW5nZSBhbnl3YXksIHNpbmNlIHRoZSB0eXBlIGRldGVybWluZXMgdGhlXG4gICAgICBjb21wYXJhdG9yKSBieSBmcmVlemluZyB0aGUgY29ycmVzcG9uZGluZyBtYXAuICBOb3RlIHRoYXQgYnkgZmlyc3QgdXNpbmcgSW5jcmVtZW50YWwubWFwIHRvXG4gICAgICBnZXQgdGhlIGNvbXBhcmF0b3Igb3V0IG9mIHRoZSBtYXAsIHdlIGFsbG93IHRoZSBpbml0aWFsIG1hcCBpdHNlbGYgdG8gYmUgZ2FyYmFnZVxuICAgICAgY29sbGVjdGVkICopXG4gIGxldCB3aXRoX2NvbXBhcmF0b3IgbWFwIGYgPSB3aXRoX2NvbXBhcmF0b3InIE1hcC5jb21wYXJhdG9yIG1hcCBmXG5cbiAgbGV0IG9mX3NldCA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgc2V0ID1cbiAgICB3aXRoX2NvbXBhcmF0b3InIFNldC5jb21wYXJhdG9yIHNldCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBvbGRfaW5wdXQgPSByZWYgKFNldC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yKSBpblxuICAgICAgbGV0IG9sZF9vdXRwdXQgPSByZWYgKE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yKSBpblxuICAgICAgSW5jcmVtZW50YWwubWFwIHNldCB+ZjooZnVuIG5ld19pbnB1dCAtPlxuICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBuZXdfb3V0cHV0ID1cbiAgICAgICAgICAgIFNlcXVlbmNlLmZvbGRcbiAgICAgICAgICAgICAgKFNldC5zeW1tZXRyaWNfZGlmZiAhb2xkX2lucHV0IG5ld19pbnB1dClcbiAgICAgICAgICAgICAgfmluaXQ6IW9sZF9vdXRwdXRcbiAgICAgICAgICAgICAgfmY6KGZ1biBvdXRwdXQgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IEZpcnN0IGsgLT4gTWFwLnJlbW92ZSBvdXRwdXQga1xuICAgICAgICAgICAgICAgIHwgU2Vjb25kIGsgLT4gTWFwLmFkZF9leG4gb3V0cHV0IH5rZXk6ayB+ZGF0YTooKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG9sZF9pbnB1dCA6PSBuZXdfaW5wdXQ7XG4gICAgICAgICAgb2xkX291dHB1dCA6PSBuZXdfb3V0cHV0O1xuICAgICAgICAgIG5ld19vdXRwdXQpKSlcbiAgOztcblxuICBsZXQgZ2VuZXJpY19tYXBpXG4gICAgICAgICh0eXBlIGlucHV0X2RhdGEgb3V0cHV0X2RhdGEgZl9vdXRwdXQgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgKHdpdG5lc3MgOiAoaW5wdXRfZGF0YSwgb3V0cHV0X2RhdGEsIGZfb3V0cHV0KSBNYXBfdHlwZS50KVxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChtYXAgOiAoKCdrZXksIGlucHV0X2RhdGEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGYgOiBrZXk6J2tleSAtPiBkYXRhOmlucHV0X2RhdGEgLT4gZl9vdXRwdXQpXG4gICAgPVxuICAgIHdpdGhfb2xkIH5pbnN0cnVtZW50YXRpb24gbWFwIH5mOihmdW4gfm9sZCBpbnB1dCAtPlxuICAgICAgbWF0Y2ggb2xkLCBNYXAubGVuZ3RoIGlucHV0IHdpdGhcbiAgICAgIHwgXywgMCB8IE5vbmUsIF8gLT5cbiAgICAgICAgKG1hdGNoIHdpdG5lc3Mgd2l0aFxuICAgICAgICAgfCBNYXBfdHlwZS5NYXAgLT4gKE1hcC5tYXBpIGlucHV0IH5mIDogKCdrZXksIG91dHB1dF9kYXRhLCAnY21wKSBNYXAudClcbiAgICAgICAgIHwgTWFwX3R5cGUuRmlsdGVyX21hcCAtPiBNYXAuZmlsdGVyX21hcGkgaW5wdXQgfmYpXG4gICAgICB8IFNvbWUgKG9sZF9pbnB1dCwgb2xkX291dHB1dCksIF8gLT5cbiAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICBvbGRfaW5wdXRcbiAgICAgICAgICBpbnB1dFxuICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgfmluaXQ6b2xkX291dHB1dFxuICAgICAgICAgIH5mOihmdW4gb3V0cHV0IChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICB8IGBMZWZ0IF8gLT4gTWFwLnJlbW92ZSBvdXRwdXQga2V5XG4gICAgICAgICAgICB8IGBSaWdodCBuZXdfZGF0YSB8IGBVbmVxdWFsIChfLCBuZXdfZGF0YSkgLT5cbiAgICAgICAgICAgICAgbGV0IHJlcyA9IGYgfmtleSB+ZGF0YTpuZXdfZGF0YSBpblxuICAgICAgICAgICAgICAobWF0Y2ggd2l0bmVzcyB3aXRoXG4gICAgICAgICAgICAgICB8IE1hcF90eXBlLk1hcCAtPiBNYXAuc2V0IG91dHB1dCB+a2V5IH5kYXRhOnJlc1xuICAgICAgICAgICAgICAgfCBNYXBfdHlwZS5GaWx0ZXJfbWFwIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCByZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE1hcC5yZW1vdmUgb3V0cHV0IGtleVxuICAgICAgICAgICAgICAgICAgfCBTb21lIG91dHB1dF9kYXRhIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGE6b3V0cHV0X2RhdGEpKSkpXG4gIDs7XG5cbiAgbGV0IG1hcGkgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgZ2VuZXJpY19tYXBpIE1hcCB+aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZlxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBnZW5lcmljX21hcGkgRmlsdGVyX21hcCB+aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZlxuICA7O1xuXG4gIGxldCBtYXAgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIG1hcGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBmaWx0ZXJfbWFwaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHdpdGhfb2xkMiB+aW5zdHJ1bWVudGF0aW9uIGkxIGkyIH5mID1cbiAgICBsZXQgb2xkID0gcmVmIE5vbmUgaW5cbiAgICBJbmNyZW1lbnRhbC5tYXAyIGkxIGkyIH5mOihmdW4gYTEgYTIgLT5cbiAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgIGxldCBiID0gZiB+b2xkOiFvbGQgYTEgYTIgaW5cbiAgICAgICAgb2xkIDo9IFNvbWUgKGExLCBhMiwgYik7XG4gICAgICAgIGIpKVxuICA7O1xuXG4gIGxldCB1bm9yZGVyZWRfZm9sZF93aXRoX2V4dHJhXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KGV4dHJhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICA/c3BlY2lhbGl6ZWRfaW5pdGlhbFxuICAgICAgICA/KGZpbmFsaXplID0gRm4uaWQpXG4gICAgICAgID8ocmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eSA9IGZhbHNlKVxuICAgICAgICBtYXBcbiAgICAgICAgZXh0cmFcbiAgICAgICAgfmluaXRcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlXG4gICAgICAgIH5leHRyYV9jaGFuZ2VkXG4gICAgPVxuICAgIGxldCB1cGRhdGUgPVxuICAgICAgbGV0IGRlZmF1bHQgfmtleSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyBleHRyYSA9XG4gICAgICAgIGFkZCB+a2V5IH5kYXRhOm5ld19kYXRhIChyZW1vdmUgfmtleSB+ZGF0YTpvbGRfZGF0YSBhY2MgZXh0cmEpIGV4dHJhXG4gICAgICBpblxuICAgICAgT3B0aW9uLnZhbHVlIHVwZGF0ZSB+ZGVmYXVsdFxuICAgIGluXG4gICAgd2l0aF9vbGQyIH5pbnN0cnVtZW50YXRpb24gbWFwIGV4dHJhIH5mOihmdW4gfm9sZCBuZXdfaW4gbmV3X2V4dHJhIC0+XG4gICAgICBsZXQgYWNjID1cbiAgICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHNwZWNpYWxpemVkX2luaXRpYWwgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBNYXAuZm9sZCBuZXdfaW4gfmluaXQgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgfmtleSB+ZGF0YSBhY2MgbmV3X2V4dHJhKVxuICAgICAgICAgICB8IFNvbWUgaW5pdGlhbCAtPiBpbml0aWFsIH5pbml0IG5ld19pbiBuZXdfZXh0cmEpXG4gICAgICAgIHwgU29tZSAob2xkX2luLCBvbGRfZXh0cmEsIG9sZF9vdXQpIC0+XG4gICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICBpZiBleHRyYV9lcXVhbCBvbGRfZXh0cmEgbmV3X2V4dHJhXG4gICAgICAgICAgICB0aGVuIG9sZF9vdXRcbiAgICAgICAgICAgIGVsc2UgZXh0cmFfY2hhbmdlZCB+b2xkX2V4dHJhIH5uZXdfZXh0cmEgfmlucHV0Om9sZF9pbiBvbGRfb3V0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiByZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5ICYmIE1hcC5sZW5ndGggbmV3X2luID0gMFxuICAgICAgICAgIHRoZW4gaW5pdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgIH5pbml0OmFjY1xuICAgICAgICAgICAgICBvbGRfaW5cbiAgICAgICAgICAgICAgbmV3X2luXG4gICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgIH5mOihmdW4gYWNjIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgICAgICAgICAgIHwgYExlZnQgb2xkIC0+IHJlbW92ZSB+a2V5IH5kYXRhOm9sZCBhY2MgbmV3X2V4dHJhXG4gICAgICAgICAgICAgICAgfCBgUmlnaHQgbmV3XyAtPiBhZGQgfmtleSB+ZGF0YTpuZXdfIGFjYyBuZXdfZXh0cmFcbiAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChvbGQsIG5ld18pIC0+XG4gICAgICAgICAgICAgICAgICB1cGRhdGUgfmtleSB+b2xkX2RhdGE6b2xkIH5uZXdfZGF0YTpuZXdfIGFjYyBuZXdfZXh0cmEpXG4gICAgICBpblxuICAgICAgZmluYWxpemUgYWNjKVxuICA7O1xuXG4gIGxldCBtYXBpX2NvdW50XG4gICAgICAgICh0eXBlIGEgY21wKVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgaW5wdXRcbiAgICAgICAgfihjb21wYXJhdG9yIDogKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSBhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcCkpXG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCBtb2R1bGUgTSA9ICh2YWwgY29tcGFyYXRvcikgaW5cbiAgICBsZXQgYWRkIG5ld19rZXkgYWNjID1cbiAgICAgIE1hcC51cGRhdGUgYWNjIG5ld19rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiAxXG4gICAgICAgIHwgU29tZSBuIC0+IG4gKyAxKVxuICAgIGluXG4gICAgbGV0IHJlbW92ZSBuZXdfa2V5IGFjYyA9XG4gICAgICBNYXAuY2hhbmdlIGFjYyBuZXdfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgMSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBuIC0+IFNvbWUgKG4gLSAxKSlcbiAgICBpblxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICB+ZGF0YV9lcXVhbFxuICAgICAgaW5wdXRcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBNKSlcbiAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgKGYgfmtleSB+ZGF0YSkgYWNjKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IHJlbW92ZSAoZiB+a2V5IH5kYXRhKSBhY2MpXG4gICAgICB+dXBkYXRlOihmdW4gfmtleSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICBsZXQgcHJldl9rZXkgPSBmIH5rZXkgfmRhdGE6b2xkX2RhdGEgaW5cbiAgICAgICAgbGV0IG5ld19rZXkgPSBmIH5rZXkgfmRhdGE6bmV3X2RhdGEgaW5cbiAgICAgICAgaWYgTS5jb21wYXJhdG9yLmNvbXBhcmUgcHJldl9rZXkgbmV3X2tleSA9IDBcbiAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgZWxzZSBhY2MgfD4gcmVtb3ZlIHByZXZfa2V5IHw+IGFkZCBuZXdfa2V5KVxuICA7O1xuXG4gIGxldCBtYXBfY291bnQgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9jb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+XG4gICAgICBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IG1pbl9oZWxwZXIgbWFwID1cbiAgICBtYXRjaCBNYXAubWluX2VsdCBtYXAgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChtaW4sIF8pIC0+IFNvbWUgbWluXG4gIDs7XG5cbiAgbGV0IG1heF9oZWxwZXIgbWFwID1cbiAgICBtYXRjaCBNYXAubWF4X2VsdCBtYXAgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChtYXgsIF8pIC0+IFNvbWUgbWF4XG4gIDs7XG5cbiAgbGV0IGJvdW5kc19oZWxwZXIgbWFwID1cbiAgICBtYXRjaCBNYXAubWluX2VsdCBtYXAsIE1hcC5tYXhfZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1pbiwgXyksIFNvbWUgKG1heCwgXykgLT4gU29tZSAobWluLCBtYXgpXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBtYXBpX21pbiA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXBcbiAgICAgIH5mOm1pbl9oZWxwZXJcbiAgICAgIChtYXBpX2NvdW50ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYpXG4gIDs7XG5cbiAgbGV0IG1hcGlfbWF4ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcFxuICAgICAgfmY6bWF4X2hlbHBlclxuICAgICAgKG1hcGlfY291bnQgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZilcbiAgOztcblxuICBsZXQgbWFwaV9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwXG4gICAgICB+Zjpib3VuZHNfaGVscGVyXG4gICAgICAobWFwaV9jb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mKVxuICA7O1xuXG4gIGxldCBtYXBfbWluID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfbWluID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICAgIGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWFwX21heCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBtYXBpX21heCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+XG4gICAgICBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IG1pbl92YWx1ZSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yID1cbiAgICBtYXBfbWluID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6Rm4uaWRcbiAgOztcblxuICBsZXQgbWF4X3ZhbHVlID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgPVxuICAgIG1hcF9tYXggP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjpGbi5pZFxuICA7O1xuXG4gIGxldCBtYXBfYm91bmRzID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfYm91bmRzID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICAgIGYgZGF0YSlcbiAgOztcblxuICBsZXQgdmFsdWVfYm91bmRzID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgPVxuICAgIG1hcF9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjpGbi5pZFxuICA7O1xuXG4gIGxldCBtZXJnZV9zaGFyZWRfaW1wbFxuICAgICAgICB+b2xkXG4gICAgICAgIH5uZXdfbGVmdF9tYXBcbiAgICAgICAgfm5ld19yaWdodF9tYXBcbiAgICAgICAgfmRhdGFfZXF1YWxfbGVmdFxuICAgICAgICB+ZGF0YV9lcXVhbF9yaWdodFxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgY29tcGFyYXRvciA9IE1hcC5jb21wYXJhdG9yIG5ld19sZWZ0X21hcCBpblxuICAgIGxldCBvbGRfbGVmdF9tYXAsIG9sZF9yaWdodF9tYXAsIG9sZF9vdXRwdXQgPVxuICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgZW1wdHkgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgICBlbXB0eSwgZW1wdHksIGVtcHR5XG4gICAgICB8IFNvbWUgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgbGVmdF9kaWZmID1cbiAgICAgIE1hcC5zeW1tZXRyaWNfZGlmZiBvbGRfbGVmdF9tYXAgbmV3X2xlZnRfbWFwIH5kYXRhX2VxdWFsOmRhdGFfZXF1YWxfbGVmdFxuICAgIGluXG4gICAgbGV0IHJpZ2h0X2RpZmYgPVxuICAgICAgTWFwLnN5bW1ldHJpY19kaWZmIG9sZF9yaWdodF9tYXAgbmV3X3JpZ2h0X21hcCB+ZGF0YV9lcXVhbDpkYXRhX2VxdWFsX3JpZ2h0XG4gICAgaW5cbiAgICAoKiBXZSBtZXJnZSB0aGUgdHdvIHNpZGVzIG9mIHRoZSBkaWZmcyB0b2dldGhlciBzbyB3ZSBjYW4gbWFrZSBzdXJlIHRvIGhhbmRsZSBlYWNoXG4gICAgICAga2V5IGV4YWN0bHkgb25jZS4gVGhpcyByZWxpZXMgb24gc3ltbWV0cmljIGRpZmYgZ2l2aW5nIHNvcnRlZCBvdXRwdXQuICopXG4gICAgU2VxdWVuY2UubWVyZ2Vfd2l0aF9kdXBsaWNhdGVzXG4gICAgICBsZWZ0X2RpZmZcbiAgICAgIHJpZ2h0X2RpZmZcbiAgICAgIH5jb21wYXJlOihmdW4gKGxlZnRfa2V5LCBfKSAocmlnaHRfa2V5LCBfKSAtPiBjb21wYXJhdG9yLmNvbXBhcmUgbGVmdF9rZXkgcmlnaHRfa2V5KVxuICAgIHw+IFNlcXVlbmNlLmZvbGQgfmluaXQ6b2xkX291dHB1dCB+ZjooZnVuIG91dHB1dCBkaWZmX2VsZW1lbnQgLT5cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBtYXRjaCBkaWZmX2VsZW1lbnQgd2l0aFxuICAgICAgICB8IExlZnQgKGtleSwgXykgfCBSaWdodCAoa2V5LCBfKSAtPiBrZXlcbiAgICAgICAgfCBCb3RoICgobGVmdF9rZXksIF8pLCAoX3JpZ2h0X2tleSwgXykpIC0+XG4gICAgICAgICAgKCogY29tcGFyaXNvbiBmdW5jdGlvbnMgY2FuIGJlIGV4cGVuc2l2ZSEgKilcbiAgICAgICAgICAoKiBhc3NlcnQgKGNvbXBhcmF0b3IuY29tcGFyZSBsZWZ0X2tleSByaWdodF9rZXkgPSAwKTsgKilcbiAgICAgICAgICBsZWZ0X2tleVxuICAgICAgaW5cbiAgICAgIGYgfm9sZF9vdXRwdXQgfmtleSB+b3V0cHV0IH5kaWZmX2VsZW1lbnQpXG4gIDs7XG5cbiAgbGV0IG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50ID0gZnVuY3Rpb25cbiAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgIHwgYFJpZ2h0IHggfCBgVW5lcXVhbCAoXywgeCkgLT4gU29tZSB4XG4gIDs7XG5cbiAgbGV0IG1lcmdlXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/KGRhdGFfZXF1YWxfbGVmdCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8oZGF0YV9lcXVhbF9yaWdodCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIGxlZnRfbWFwXG4gICAgICAgIHJpZ2h0X21hcFxuICAgICAgICB+ZlxuICAgID1cbiAgICB3aXRoX29sZDJcbiAgICAgIGxlZnRfbWFwXG4gICAgICByaWdodF9tYXBcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgIH5mOihmdW4gfm9sZCBuZXdfbGVmdF9tYXAgbmV3X3JpZ2h0X21hcCAtPlxuICAgICAgICBtZXJnZV9zaGFyZWRfaW1wbFxuICAgICAgICAgIH5vbGRcbiAgICAgICAgICB+bmV3X2xlZnRfbWFwXG4gICAgICAgICAgfm5ld19yaWdodF9tYXBcbiAgICAgICAgICB+ZGF0YV9lcXVhbF9sZWZ0XG4gICAgICAgICAgfmRhdGFfZXF1YWxfcmlnaHRcbiAgICAgICAgICB+ZjooZnVuIH5vbGRfb3V0cHV0Ol8gfmtleSB+b3V0cHV0IH5kaWZmX2VsZW1lbnQgLT5cbiAgICAgICAgICAgICgqIFRoZXNlIHZhbHVlcyByZXByZXNlbnQgd2hldGhlciB0aGVyZSBpcyBkYXRhIGZvciB0aGUgZ2l2ZW4ga2V5IGluIHRoZSBuZXdcbiAgICAgICAgICAgICAgIGlucHV0IGluIHRoZSBsZWZ0IGFuZCByaWdodCBtYXAuICopXG4gICAgICAgICAgICBsZXQgbGVmdF9kYXRhX29wdCwgcmlnaHRfZGF0YV9vcHQgPVxuICAgICAgICAgICAgICBtYXRjaCBkaWZmX2VsZW1lbnQgd2l0aFxuICAgICAgICAgICAgICB8IEJvdGggKChfLCBsZWZ0X2RpZmYpLCAoXywgcmlnaHRfZGlmZikpIC0+XG4gICAgICAgICAgICAgICAgbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgbGVmdF9kaWZmLCBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCByaWdodF9kaWZmXG4gICAgICAgICAgICAgIHwgTGVmdCAoXywgbGVmdF9kaWZmKSAtPlxuICAgICAgICAgICAgICAgIG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IGxlZnRfZGlmZiwgTWFwLmZpbmQgbmV3X3JpZ2h0X21hcCBrZXlcbiAgICAgICAgICAgICAgfCBSaWdodCAoXywgcmlnaHRfZGlmZikgLT5cbiAgICAgICAgICAgICAgICBNYXAuZmluZCBuZXdfbGVmdF9tYXAga2V5LCBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCByaWdodF9kaWZmXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG91dHB1dF9kYXRhX29wdCA9XG4gICAgICAgICAgICAgIG1hdGNoIGxlZnRfZGF0YV9vcHQsIHJpZ2h0X2RhdGFfb3B0IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIHgsIE5vbmUgLT4gZiB+a2V5IChgTGVmdCB4KVxuICAgICAgICAgICAgICB8IE5vbmUsIFNvbWUgeSAtPiBmIH5rZXkgKGBSaWdodCB5KVxuICAgICAgICAgICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IGYgfmtleSAoYEJvdGggKHgsIHkpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIG91dHB1dF9kYXRhX29wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTWFwLnJlbW92ZSBvdXRwdXQga2V5XG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBNYXAuc2V0IG91dHB1dCB+a2V5IH5kYXRhKSlcbiAgOztcblxuICBsZXQgbWVyZ2VfYm90aF9zb21lXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/KGRhdGFfZXF1YWxfbGVmdCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8oZGF0YV9lcXVhbF9yaWdodCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8ob3V0X2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgbGVmdF9tYXBcbiAgICAgICAgcmlnaHRfbWFwXG4gICAgICAgIH5mXG4gICAgPVxuICAgIHdpdGhfb2xkMlxuICAgICAgbGVmdF9tYXBcbiAgICAgIHJpZ2h0X21hcFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgfmY6KGZ1biB+b2xkIG5ld19sZWZ0X21hcCBuZXdfcmlnaHRfbWFwIC0+XG4gICAgICAgIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgbmV3X2xlZnRfbWFwIGluXG4gICAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICAgIG1hdGNoIE1hcC5sZW5ndGggbmV3X2xlZnRfbWFwLCBNYXAubGVuZ3RoIG5ld19yaWdodF9tYXAgd2l0aFxuICAgICAgICAoKiBCZWNhdXNlIHdlIG9ubHkgY2FyZSBhYm91dCBrZXlzIHRoYXQgYXJlIGluIGJvdGggbWFwcywgaWYgZWl0aGVyIG1hcCBpc1xuICAgICAgICAgICBlbXB0eSwgYmFpbCBlYXJseS4gKilcbiAgICAgICAgfCAwLCBfIHwgXywgMCAtPiBlbXB0eVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBtZXJnZV9zaGFyZWRfaW1wbFxuICAgICAgICAgICAgfm9sZFxuICAgICAgICAgICAgfm5ld19sZWZ0X21hcFxuICAgICAgICAgICAgfm5ld19yaWdodF9tYXBcbiAgICAgICAgICAgIH5kYXRhX2VxdWFsX2xlZnRcbiAgICAgICAgICAgIH5kYXRhX2VxdWFsX3JpZ2h0XG4gICAgICAgICAgICB+ZjooZnVuIH5vbGRfb3V0cHV0IH5rZXkgfm91dHB1dCB+ZGlmZl9lbGVtZW50IC0+XG4gICAgICAgICAgICAgIGxldCBsZWZ0X2FuZF9yaWdodF9kYXRhX29wdCA9XG4gICAgICAgICAgICAgICAgbGV0IG9wZW4gT3B0aW9uLkxldF9zeW50YXggaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBkaWZmX2VsZW1lbnQgd2l0aFxuICAgICAgICAgICAgICAgIHwgQm90aCAoKF8sIGxlZnRfZGlmZiksIChfLCByaWdodF9kaWZmKSkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCViaW5kIGxlZnRfZGF0YSA9IG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IGxlZnRfZGlmZiBpblxuICAgICAgICAgICAgICAgICAgbGV0JW1hcCByaWdodF9kYXRhID0gbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgcmlnaHRfZGlmZiBpblxuICAgICAgICAgICAgICAgICAgbGVmdF9kYXRhLCByaWdodF9kYXRhXG4gICAgICAgICAgICAgICAgfCBMZWZ0IChfLCBsZWZ0X2RpZmYpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQlYmluZCBsZWZ0X2RhdGEgPSBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCBsZWZ0X2RpZmYgaW5cbiAgICAgICAgICAgICAgICAgIGxldCVtYXAgcmlnaHRfZGF0YSA9IE1hcC5maW5kIG5ld19yaWdodF9tYXAga2V5IGluXG4gICAgICAgICAgICAgICAgICBsZWZ0X2RhdGEsIHJpZ2h0X2RhdGFcbiAgICAgICAgICAgICAgICB8IFJpZ2h0IChfLCByaWdodF9kaWZmKSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBtYXRjaCBhcm0gYmluZHMgW3JpZ2h0X2RhdGFdIGZpcnN0IGJlY2F1c2UgdGhlIG1hcCBsb29rdXBcbiAgICAgICAgICAgICAgICAgICAgIGlzIHNsb3dlciB0aGFuIGNhbGxpbmcgW25ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50XS4gKilcbiAgICAgICAgICAgICAgICAgIGxldCViaW5kIHJpZ2h0X2RhdGEgPSBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCByaWdodF9kaWZmIGluXG4gICAgICAgICAgICAgICAgICBsZXQlbWFwIGxlZnRfZGF0YSA9IE1hcC5maW5kIG5ld19sZWZ0X21hcCBrZXkgaW5cbiAgICAgICAgICAgICAgICAgIGxlZnRfZGF0YSwgcmlnaHRfZGF0YVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiBsb29rIGZvciB0aGUgcHJldmlvdXNseSBjb21wdXRlZCB2YWx1ZSB0byBzZWUgaWYgd2UgYWN0dWFsbHkgbmVlZCB0b1xuICAgICAgICAgICAgICAgICBhZGQgb3IgcmVtb3ZlIHRoZSBrZXkuICopXG4gICAgICAgICAgICAgIGxldCBwcmV2X291dCA9IE1hcC5maW5kIG9sZF9vdXRwdXQga2V5IGluXG4gICAgICAgICAgICAgIG1hdGNoIGxlZnRfYW5kX3JpZ2h0X2RhdGFfb3B0IHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lICh4LCB5KSAtPlxuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gZiB+a2V5IHggeSBpblxuICAgICAgICAgICAgICAgIChtYXRjaCBwcmV2X291dCB3aXRoXG4gICAgICAgICAgICAgICAgICgqIGlmIHRoZSBuZXcgcmVzdWx0IGlzIHRoZSBzYW1lIGFzIHRoZSBvbGQsIGRvbid0IGNoYW5nZSB0aGUgbWFwICopXG4gICAgICAgICAgICAgICAgIHwgU29tZSBwcmV2X291dCB3aGVuIG91dF9lcXVhbCBkYXRhIHByZXZfb3V0IC0+IG91dHB1dFxuICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTWFwLnNldCBvdXRwdXQgfmtleSB+ZGF0YSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIHByZXZfb3V0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IG91dHB1dFxuICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXkpKSlcbiAgOztcblxuICBsZXQgZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgKHR5cGUgaW5wdXRfZGF0YSBvdXRwdXRfZGF0YSBmX291dHB1dCBzdGF0ZV93aXRuZXNzKVxuICAgICAgICAod2l0bmVzcyA6IChpbnB1dF9kYXRhLCBvdXRwdXRfZGF0YSwgZl9vdXRwdXQpIE1hcF90eXBlLnQpXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2N1dG9mZlxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAobGhzIDogKCgna2V5LCBpbnB1dF9kYXRhLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihjb21wYXJhdG9yIDogKCdrZXksICdjbXApIENvbXBhcmF0b3IudClcbiAgICAgICAgfihmIDpcbiAgICAgICAgICAgIGtleTona2V5XG4gICAgICAgICAgLT4gZGF0YTooaW5wdXRfZGF0YSwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgICAgIC0+IChmX291dHB1dCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA6ICgoJ2tleSwgb3V0cHV0X2RhdGEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGxocyBpblxuICAgIGxldCBlbXB0eV9tYXAgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgIGxldCBwcmV2X21hcCA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcHJldl9ub2RlcyA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgYWNjIDogKCdrZXksIG91dHB1dF9kYXRhLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhYWNjKSBpblxuICAgIGxldCAob25faW5uZXJfY2hhbmdlIDoga2V5OidrZXkgLT4gZl9vdXRwdXQgLT4gdW5pdCkgPVxuICAgICAgbWF0Y2ggd2l0bmVzcyB3aXRoXG4gICAgICB8IE1hcF90eXBlLk1hcCAtPiBmdW4gfmtleSBkYXRhIC0+IGFjYyA6PSBNYXAuc2V0ICFhY2MgfmtleSB+ZGF0YVxuICAgICAgfCBNYXBfdHlwZS5GaWx0ZXJfbWFwIC0+XG4gICAgICAgIGZ1biB+a2V5IG9wdCAtPlxuICAgICAgICAgIGxldCBvbGQgPSAhYWNjIGluXG4gICAgICAgICAgYWNjXG4gICAgICAgICAgOj0gKG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTWFwLnJlbW92ZSBvbGQga2V5XG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBNYXAuc2V0IG9sZCB+a2V5IH5kYXRhKVxuICAgIGluXG4gICAgbGV0IHJlYyBsaHNfY2hhbmdlID1cbiAgICAgIGxhenlcbiAgICAgICAgKEluY3JlbWVudGFsLm1hcCBsaHMgfmY6KGZ1biBtYXAgLT5cbiAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgICAgICBsZXQgbmV3X25vZGVzID1cbiAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgICFwcmV2X21hcFxuICAgICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgICAgfmluaXQ6IXByZXZfbm9kZXNcbiAgICAgICAgICAgICAgICAgfmY6KGZ1biBub2RlcyAoa2V5LCBjaGFuZ2VkKSAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIF9kZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUubWFrZV9zdGFsZSBub2RlO1xuICAgICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlLCBkZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZXMgPSBNYXAucmVtb3ZlIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IHJlc3VsdCBkZXA7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gTWFwLnJlbW92ZSAhYWNjIGtleTtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5pbnZhbGlkYXRlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgIHwgYFJpZ2h0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgTWFwLmZpbmRfZXhuICFwcmV2X21hcCBrZXkpXG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgT3B0aW9uLml0ZXIgY3V0b2ZmIH5mOihmdW4gYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5zZXRfY3V0b2ZmIChFLk5vZGUud2F0Y2ggbm9kZSkgYyk7XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbm9kZSAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgbGhzX2NoYW5nZSkpO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IHVzZXJfZnVuY3Rpb25fZGVwID1cbiAgICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmIH5rZXkgfmRhdGE6KEUuTm9kZS53YXRjaCBub2RlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICB+b25fY2hhbmdlOihvbl9pbm5lcl9jaGFuZ2UgfmtleSlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IHVzZXJfZnVuY3Rpb25fZGVwO1xuICAgICAgICAgICAgICAgICAgICAgTWFwLnNldCBub2RlcyB+a2V5IH5kYXRhOihub2RlLCB1c2VyX2Z1bmN0aW9uX2RlcCkpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBwcmV2X25vZGVzIDo9IG5ld19ub2RlcztcbiAgICAgICAgICAgICBwcmV2X21hcCA6PSBtYXApKSlcbiAgICBpblxuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGxoc19jaGFuZ2UpKTtcbiAgICBFLk5vZGUud2F0Y2ggcmVzdWx0XG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpJyA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBnZW5lcmljX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICBNYXBfdHlwZS5GaWx0ZXJfbWFwXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2N1dG9mZlxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBcbiAgICAgICAgfmZcbiAgICAgICAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG1hcGknID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3InXG4gICAgICAgIE1hcF90eXBlLk1hcFxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID9jdXRvZmZcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwXG4gICAgICAgIH5mXG4gICAgICAgIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBtYXAnID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIG1hcGknID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBmaWx0ZXJfbWFwaScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IG1lcmdlJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWxfbGVmdCA/ZGF0YV9lcXVhbF9yaWdodCBtYXAxIG1hcDIgfmYgPVxuICAgIG1lcmdlXG4gICAgICA/aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbF9sZWZ0XG4gICAgICA/ZGF0YV9lcXVhbF9yaWdodFxuICAgICAgbWFwMVxuICAgICAgbWFwMlxuICAgICAgfmY6KGZ1biB+a2V5Ol8gZGlmZiAtPiBTb21lIGRpZmYpXG4gICAgfD4gZmlsdGVyX21hcGknID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiB+ZjooZnVuIH5rZXkgfmRhdGE6ZGlmZiAtPiBmIH5rZXkgZGlmZilcbiAgOztcblxuICBsZXQgdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgKHR5cGUgdiB2MSB2MiBzdGF0ZV93aXRuZXNzKVxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID8oZGF0YV9lcXVhbCA6IHYgLT4gdiAtPiBib29sID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhsZWZ0X3Jlc3VsdF9lcXVhbCA6IHYxIC0+IHYxIC0+IGJvb2wgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KHJpZ2h0X3Jlc3VsdF9lcXVhbCA6IHYyIC0+IHYyIC0+IGJvb2wgPSBwaHlzX2VxdWFsKVxuICAgICAgICAoaW5wdXQgOiAoKCdrZXksIHYsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50KVxuICAgICAgICB+KGYgOiBrZXk6J2tleSAtPiBkYXRhOnYgLT4gdjEgKiB2MilcbiAgICA6ICgoJ2tleSwgdjEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAqICgoJ2tleSwgdjIsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGlucHV0IGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IGxlZnRfYWNjIDogKCdrZXksIHYxLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGxlZnRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFsZWZ0X2FjYykgaW5cbiAgICBsZXQgcmlnaHRfYWNjIDogKCdrZXksIHYyLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJpZ2h0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhcmlnaHRfYWNjKSBpblxuICAgIGxldCBwcmV2X21hcCA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgaW5wdXRfY2hhbmdlID1cbiAgICAgIEluY3JlbWVudGFsLm1hcCBpbnB1dCB+ZjooZnVuIG1hcCAtPlxuICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBsZWZ0LCByaWdodCA9XG4gICAgICAgICAgICBtYXRjaCBNYXAuaXNfZW1wdHkgIXByZXZfbWFwLCBNYXAuaXNfZW1wdHkgbWFwIHdpdGhcbiAgICAgICAgICAgIHwgdHJ1ZSwgdHJ1ZSB8IGZhbHNlLCB0cnVlIC0+IGVtcHR5X21hcCwgZW1wdHlfbWFwXG4gICAgICAgICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgICAgICAgICgqIE1hcHBpbmcgb24gYSBtYXAgaXMgd2F5IGZhc3RlciB0aGFuIHN5bW1ldHJpYyBkaWZmaW5nIGFuZCB0aGVuXG4gICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBtYXBzIHVwIHBpZWNlIGJ5IHBpZWNlLCBzbyB3ZSBkbyB0aGlzIHdoZW5ldmVyIHdlXG4gICAgICAgICAgICAgICAgIHRyYW5zaXRpb24gZnJvbSBcImVtcHR5XCIgdG8gXCJzb21ldGhpbmdcIiwgd2hpY2ggd2lsbCBhbG1vc3QgYWx3YXlzXG4gICAgICAgICAgICAgICAgIGhhcHBlbiBvbiB0aGUgZmlyc3Qgc3RhYmlsaXphdGlvbi4gKilcbiAgICAgICAgICAgICAgbGV0IGxlZnQgPVxuICAgICAgICAgICAgICAgIE1hcC5tYXBpIG1hcCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBsLCBfID0gZiB+a2V5IH5kYXRhIGluXG4gICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgcmlnaHQgPVxuICAgICAgICAgICAgICAgIE1hcC5tYXBpIG1hcCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBfLCByID0gZiB+a2V5IH5kYXRhIGluXG4gICAgICAgICAgICAgICAgICByKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZWZ0LCByaWdodFxuICAgICAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICFwcmV2X21hcFxuICAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgIH5pbml0OighbGVmdF9hY2MsICFyaWdodF9hY2MpXG4gICAgICAgICAgICAgICAgfmY6KGZ1biAobGVmdCwgcmlnaHQpIChrZXksIGNoYW5nZWQpIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2VkIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKHByZXYsIG5ld18pIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmV2X2EsIHByZXZfYiA9IGYgfmtleSB+ZGF0YTpwcmV2IGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdfYSwgbmV3X2IgPSBmIH5rZXkgfmRhdGE6bmV3XyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbGVmdCA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgbGVmdF9yZXN1bHRfZXF1YWwgcHJldl9hIG5ld19hXG4gICAgICAgICAgICAgICAgICAgICAgdGhlbiBsZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBNYXAuc2V0IGxlZnQgfmtleSB+ZGF0YTpuZXdfYVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgcmlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmIHJpZ2h0X3Jlc3VsdF9lcXVhbCBwcmV2X2IgbmV3X2JcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuIHJpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBNYXAuc2V0IHJpZ2h0IH5rZXkgfmRhdGE6bmV3X2JcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGVmdCwgcmlnaHRcbiAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBNYXAucmVtb3ZlIGxlZnQga2V5LCBNYXAucmVtb3ZlIHJpZ2h0IGtleVxuICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgZWxlbWVudCAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgYSwgYiA9IGYgfmtleSB+ZGF0YTplbGVtZW50IGluXG4gICAgICAgICAgICAgICAgICAgIE1hcC5zZXQgbGVmdCB+a2V5IH5kYXRhOmEsIE1hcC5zZXQgcmlnaHQgfmtleSB+ZGF0YTpiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsICFsZWZ0X2FjYyBsZWZ0KSB0aGVuIEUuTm9kZS5tYWtlX3N0YWxlIGxlZnRfcmVzdWx0O1xuICAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCAhcmlnaHRfYWNjIHJpZ2h0KSB0aGVuIEUuTm9kZS5tYWtlX3N0YWxlIHJpZ2h0X3Jlc3VsdDtcbiAgICAgICAgICBsZWZ0X2FjYyA6PSBsZWZ0O1xuICAgICAgICAgIHJpZ2h0X2FjYyA6PSByaWdodDtcbiAgICAgICAgICBwcmV2X21hcCA6PSBtYXApKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGlucHV0X2NoYW5nZSk7XG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSBpbnB1dF9jaGFuZ2UpO1xuICAgIEUuTm9kZS53YXRjaCBsZWZ0X3Jlc3VsdCwgRS5Ob2RlLndhdGNoIHJpZ2h0X3Jlc3VsdFxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICA/bGVmdF9yZXN1bHRfZXF1YWxcbiAgICAgICAgP3JpZ2h0X3Jlc3VsdF9lcXVhbFxuICAgICAgICBpbnB1dFxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgcGFpciA9XG4gICAgICB3aXRoX2NvbXBhcmF0b3IgaW5wdXQgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICAgIGlucHV0XG4gICAgICAgIHw+IHVuemlwX21hcGlfd2l0aF9jb21wYXJhdG9yXG4gICAgICAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgICAgICAgP2xlZnRfcmVzdWx0X2VxdWFsXG4gICAgICAgICAgICAgP3JpZ2h0X3Jlc3VsdF9lcXVhbFxuICAgICAgICAgICAgIH5jb21wYXJhdG9yXG4gICAgICAgICAgICAgfmZcbiAgICAgICAgfD4gVHVwbGUyLnVuY3VycnkgSW5jcmVtZW50YWwuYm90aClcbiAgICBpblxuICAgIEluY3JlbWVudGFsLm1hcCB+Zjpmc3QgcGFpciwgSW5jcmVtZW50YWwubWFwIH5mOnNuZCBwYWlyXG4gIDs7XG5cbiAgbGV0IHVuemlwID9pbnN0cnVtZW50YXRpb24gP2xlZnRfcmVzdWx0X2VxdWFsID9yaWdodF9yZXN1bHRfZXF1YWwgaW5wdXQgPVxuICAgIGxldCBkYXRhX2VxdWFsID1cbiAgICAgIE9wdGlvbi5tYXAyIGxlZnRfcmVzdWx0X2VxdWFsIHJpZ2h0X3Jlc3VsdF9lcXVhbCB+ZjooZnVuIGwgciAtPlxuICAgICAgICBUdXBsZTIuZXF1YWwgfmVxMTpsIH5lcTI6cilcbiAgICBpblxuICAgIHVuemlwX21hcGlcbiAgICAgID9pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICA/bGVmdF9yZXN1bHRfZXF1YWxcbiAgICAgID9yaWdodF9yZXN1bHRfZXF1YWxcbiAgICAgIGlucHV0XG4gICAgICB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBkYXRhKVxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgKHR5cGUgdiB2MSB2MiBzdGF0ZV93aXRuZXNzKVxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID9jdXRvZmZcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKGlucHV0IDogKCgna2V5LCB2LCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihjb21wYXJhdG9yIDogKCdrZXksICdjbXApIENvbXBhcmF0b3IudClcbiAgICAgICAgfihmIDpcbiAgICAgICAgICAgIGtleTona2V5XG4gICAgICAgICAgLT4gZGF0YToodiwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgICAgIC0+ICh2MSwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudCAqICh2Miwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA6ICgoJ2tleSwgdjEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAqICgoJ2tleSwgdjIsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGlucHV0IGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHByZXZfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBwcmV2X25vZGVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBsZWZ0X2FjYyA6ICgna2V5LCB2MSwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBsZWZ0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhbGVmdF9hY2MpIGluXG4gICAgbGV0IHJpZ2h0X2FjYyA6ICgna2V5LCB2MiwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByaWdodF9yZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIXJpZ2h0X2FjYykgaW5cbiAgICBsZXQgbGVmdF9vbl9pbm5lcl9jaGFuZ2UgfmtleSBkYXRhID0gbGVmdF9hY2MgOj0gTWFwLnNldCAhbGVmdF9hY2MgfmtleSB+ZGF0YSBpblxuICAgIGxldCByaWdodF9vbl9pbm5lcl9jaGFuZ2UgfmtleSBkYXRhID0gcmlnaHRfYWNjIDo9IE1hcC5zZXQgIXJpZ2h0X2FjYyB+a2V5IH5kYXRhIGluXG4gICAgbGV0IHJlYyBpbnB1dF9jaGFuZ2UgPVxuICAgICAgbGF6eVxuICAgICAgICAoSW5jcmVtZW50YWwubWFwIGlucHV0IH5mOihmdW4gbWFwIC0+XG4gICAgICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgICAgbGV0IG5ld19ub2RlcyA9XG4gICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICAhcHJldl9tYXBcbiAgICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICAgIH5pbml0OiFwcmV2X25vZGVzXG4gICAgICAgICAgICAgICAgIH5mOihmdW4gbm9kZXMgKGtleSwgY2hhbmdlZCkgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2VkIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlLCBfbGVmdF9kZXAsIF9yaWdodF9kZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUubWFrZV9zdGFsZSBub2RlO1xuICAgICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlLCBsZWZ0X2RlcCwgcmlnaHRfZGVwID0gTWFwLmZpbmRfZXhuIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGVzID0gTWFwLnJlbW92ZSBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5yZW1vdmVfZGVwZW5kZW5jeSBsZWZ0X3Jlc3VsdCBsZWZ0X2RlcDtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5yZW1vdmVfZGVwZW5kZW5jeSByaWdodF9yZXN1bHQgcmlnaHRfZGVwO1xuICAgICAgICAgICAgICAgICAgICAgbGVmdF9hY2MgOj0gTWFwLnJlbW92ZSAhbGVmdF9hY2Mga2V5O1xuICAgICAgICAgICAgICAgICAgICAgcmlnaHRfYWNjIDo9IE1hcC5yZW1vdmUgIXJpZ2h0X2FjYyBrZXk7XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuaW52YWxpZGF0ZSBub2RlO1xuICAgICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgICB8IGBSaWdodCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIE1hcC5maW5kX2V4biAhcHJldl9tYXAga2V5KVxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIE9wdGlvbi5pdGVyIGN1dG9mZiB+ZjooZnVuIGMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuc2V0X2N1dG9mZiAoRS5Ob2RlLndhdGNoIG5vZGUpIGMpO1xuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IG5vZGUgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGlucHV0X2NoYW5nZSkpO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGxlZnRfaW5jciwgcmlnaHRfaW5jciA9IGYgfmtleSB+ZGF0YTooRS5Ob2RlLndhdGNoIG5vZGUpIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgbGVmdF91c2VyX2Z1bmN0aW9uX2RlcCA9XG4gICAgICAgICAgICAgICAgICAgICAgIEUuRGVwZW5kZW5jeS5jcmVhdGUgbGVmdF9pbmNyIH5vbl9jaGFuZ2U6KGxlZnRfb25faW5uZXJfY2hhbmdlIH5rZXkpXG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IHJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwID1cbiAgICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0X2luY3JcbiAgICAgICAgICAgICAgICAgICAgICAgICB+b25fY2hhbmdlOihyaWdodF9vbl9pbm5lcl9jaGFuZ2UgfmtleSlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgbGVmdF91c2VyX2Z1bmN0aW9uX2RlcDtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByaWdodF9yZXN1bHQgcmlnaHRfdXNlcl9mdW5jdGlvbl9kZXA7XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc2V0XG4gICAgICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgICAgICAgIH5rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgfmRhdGE6KG5vZGUsIGxlZnRfdXNlcl9mdW5jdGlvbl9kZXAsIHJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIHByZXZfbm9kZXMgOj0gbmV3X25vZGVzO1xuICAgICAgICAgICAgIHByZXZfbWFwIDo9IG1hcCkpKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBpbnB1dF9jaGFuZ2UpKTtcbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmlnaHRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBpbnB1dF9jaGFuZ2UpKTtcbiAgICBFLk5vZGUud2F0Y2ggbGVmdF9yZXN1bHQsIEUuTm9kZS53YXRjaCByaWdodF9yZXN1bHRcbiAgOztcblxuICBsZXQgdW56aXBfbWFwaScgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBsZXQgcGFpciA9XG4gICAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgICBtYXBcbiAgICAgICAgfD4gdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3InIH5pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbCB+Y29tcGFyYXRvciB+ZlxuICAgICAgICB8PiBUdXBsZTIudW5jdXJyeSBJbmNyZW1lbnRhbC5ib3RoKVxuICAgIGluXG4gICAgSW5jcmVtZW50YWwubWFwIH5mOmZzdCBwYWlyLCBJbmNyZW1lbnRhbC5tYXAgfmY6c25kIHBhaXJcbiAgOztcblxuICBsZXQga2V5cyA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgbWFwID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IGFkZCB+a2V5IH5kYXRhOl8gYWNjID0gU2V0LmFkZCBhY2Mga2V5IGluXG4gICAgICBsZXQgcmVtb3ZlIH5rZXkgfmRhdGE6XyBhY2MgPSBTZXQucmVtb3ZlIGFjYyBrZXkgaW5cbiAgICAgIGxldCBkYXRhX2VxdWFsIF8gXyA9IHRydWUgaW5cbiAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgIG1hcFxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgIH5pbml0OihTZXQuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcilcbiAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmUpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgZW1wdHkgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgfmluaXQ6KGVtcHR5LCBlbXB0eSlcbiAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICB+dXBkYXRlOihmdW4gfmtleSB+b2xkX2RhdGE6XyB+bmV3X2RhdGE6ZGF0YSAoZmlyc3QsIHNlY29uZCkgLT5cbiAgICAgICAgICBtYXRjaCBmIH5rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgIHwgRmlyc3QgZGF0YSAtPiBNYXAuc2V0IGZpcnN0IH5rZXkgfmRhdGEsIE1hcC5yZW1vdmUgc2Vjb25kIGtleVxuICAgICAgICAgIHwgU2Vjb25kIGRhdGEgLT4gTWFwLnJlbW92ZSBmaXJzdCBrZXksIE1hcC5zZXQgc2Vjb25kIH5rZXkgfmRhdGEpXG4gICAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIChmaXJzdCwgc2Vjb25kKSAtPlxuICAgICAgICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCBkYXRhIC0+IE1hcC5hZGRfZXhuIGZpcnN0IH5rZXkgfmRhdGEsIHNlY29uZFxuICAgICAgICAgIHwgU2Vjb25kIGRhdGEgLT4gZmlyc3QsIE1hcC5hZGRfZXhuIHNlY29uZCB+a2V5IH5kYXRhKVxuICAgICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YTpfIChmaXJzdCwgc2Vjb25kKSAtPlxuICAgICAgICAgIE1hcC5yZW1vdmUgZmlyc3Qga2V5LCBNYXAucmVtb3ZlIHNlY29uZCBrZXkpKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwaScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgbWFwaScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZlxuICAgIHw+IHBhcnRpdGlvbl9tYXBpID9pbnN0cnVtZW50YXRpb24gfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZGF0YSlcbiAgOztcblxuICBsZXQgZmxhdHRlbiBzdGF0ZSBtYXAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCByZXN1bHQgPSByZWYgKE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihNYXAuY29tcGFyYXRvciBtYXApKSBpblxuICAgIGxldCBub2RlID0gRS5Ob2RlLmNyZWF0ZSBzdGF0ZSAoZnVuICgpIC0+ICFyZXN1bHQpIGluXG4gICAgTWFwLml0ZXJpIG1hcCB+ZjooZnVuIH5rZXkgfmRhdGE6aW5jciAtPlxuICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5XG4gICAgICAgIG5vZGVcbiAgICAgICAgKEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5jciB+b25fY2hhbmdlOihmdW4gYSAtPlxuICAgICAgICAgICByZXN1bHQgOj0gTWFwLnNldCAhcmVzdWx0IH5rZXkgfmRhdGE6YSkpKTtcbiAgICBFLk5vZGUud2F0Y2ggbm9kZVxuICA7O1xuXG4gIGxldCBqb2luX3dpdGhfY29tcGFyYXRvciB+aW5zdHJ1bWVudGF0aW9uIG1hcF9pbmNyIH5jb21wYXJhdG9yID1cbiAgICBsZXQgbW9kdWxlIEUgPSBJbmNyZW1lbnRhbC5FeHBlcnQgaW5cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBtYXBfaW5jciBpblxuICAgIGxldCBlbXB0eV9tYXAgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgIGxldCByZXN1bHRfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBvbGRfbWFwX29mX2luY3JzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBjdXJyZW50X2RlcGVuZGVuY2llcyA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFyZXN1bHRfbWFwKSBpblxuICAgIGxldCBhZGRfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IH5kYXRhX25vZGUgPVxuICAgICAgbGV0IG5ld19kZXAgPVxuICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlIGRhdGFfbm9kZSB+b25fY2hhbmdlOihmdW4gZGF0YSAtPlxuICAgICAgICAgIHJlc3VsdF9tYXAgOj0gTWFwLnNldCAhcmVzdWx0X21hcCB+a2V5IH5kYXRhKVxuICAgICAgaW5cbiAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgbmV3X2RlcDtcbiAgICAgIE1hcC5zZXQgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSB+ZGF0YTpuZXdfZGVwXG4gICAgaW5cbiAgICBsZXQgcmVtb3ZlX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSA9XG4gICAgICBsZXQgZGVwID0gTWFwLmZpbmRfZXhuIGN1cnJlbnRfZGVwZW5kZW5jaWVzIGtleSBpblxuICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IHJlc3VsdCBkZXA7XG4gICAgICByZXN1bHRfbWFwIDo9IE1hcC5yZW1vdmUgIXJlc3VsdF9tYXAga2V5O1xuICAgICAgTWFwLnJlbW92ZSBjdXJyZW50X2RlcGVuZGVuY2llcyBrZXlcbiAgICBpblxuICAgIGxldCBsaHNfY2hhbmdlID1cbiAgICAgIEluY3JlbWVudGFsLm1hcCBtYXBfaW5jciB+ZjooZnVuIG1hcF9vZl9pbmNycyAtPlxuICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBuZXdfZGVwZW5kZW5jeV9tYXAgPVxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWw6cGh5c19lcXVhbFxuICAgICAgICAgICAgICAhb2xkX21hcF9vZl9pbmNyc1xuICAgICAgICAgICAgICBtYXBfb2ZfaW5jcnNcbiAgICAgICAgICAgICAgfmluaXQ6IWN1cnJlbnRfZGVwZW5kZW5jaWVzXG4gICAgICAgICAgICAgIH5mOihmdW4gY3VycmVudF9kZXBlbmRlbmNpZXMgKGtleSwgZGlmZikgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gcmVtb3ZlX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleVxuICAgICAgICAgICAgICAgIHwgYFJpZ2h0IGRhdGFfbm9kZSAtPiBhZGRfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IH5kYXRhX25vZGVcbiAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChfLCBkYXRhX25vZGUpIC0+XG4gICAgICAgICAgICAgICAgICByZW1vdmVfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IHw+IGFkZF9zdWJub2RlIH5rZXkgfmRhdGFfbm9kZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGN1cnJlbnRfZGVwZW5kZW5jaWVzIDo9IG5ld19kZXBlbmRlbmN5X21hcDtcbiAgICAgICAgICBvbGRfbWFwX29mX2luY3JzIDo9IG1hcF9vZl9pbmNycykpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGxoc19jaGFuZ2UpO1xuICAgIEUuTm9kZS53YXRjaCByZXN1bHRcbiAgOztcblxuICBsZXQgam9pbiA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgbWFwID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgam9pbl93aXRoX2NvbXBhcmF0b3Igfmluc3RydW1lbnRhdGlvbiBtYXAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbW9kdWxlIFNlcGFyYXRlX3N0YXRlID0gc3RydWN0XG4gICAgdHlwZSAoJ2ssICd2LCAnY21wLCAndykgdCA9XG4gICAgICB7IG11dGFibGUgaW5wdXRfbWFwIDogKCdrLCAndiwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgbXV0YWJsZSBleHBlcnRfbm9kZXMgOiAoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLnQsICdjbXApIE1hcC50XG4gICAgICA7IG11dGFibGUgb3V0cHV0X21hcCA6ICgnaywgKCd2LCAndykgSW5jcmVtZW50YWwudCwgJ2NtcCkgTWFwLnRcbiAgICAgIH1cblxuICAgIGxldCBjcmVhdGUgY29tcGFyYXRvciA9XG4gICAgICBsZXQgZW1wdHkgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgeyBpbnB1dF9tYXAgPSBlbXB0eTsgZXhwZXJ0X25vZGVzID0gZW1wdHk7IG91dHB1dF9tYXAgPSBlbXB0eSB9XG4gICAgOztcblxuICAgIGxldCBjcmVhdGVfbG9va3VwX25vZGUgc3RhdGUgdCBrZXkgPVxuICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuY3JlYXRlIHN0YXRlIChmdW4gKCkgLT4gTWFwLmZpbmRfZXhuIHQuaW5wdXRfbWFwIGtleSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2VwYXJhdGUgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pIGlucHV0X21hcCB+ZGF0YV9lcXVhbCA9XG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgaW5wdXRfbWFwIGluXG4gICAgd2l0aF9jb21wYXJhdG9yIGlucHV0X21hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBzdGF0ZSA9IFNlcGFyYXRlX3N0YXRlLmNyZWF0ZSBjb21wYXJhdG9yIGluXG4gICAgICBsZXQgb3V0cHV0X21hcF9ub2RlID1cbiAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gc3RhdGUub3V0cHV0X21hcClcbiAgICAgIGluXG4gICAgICBsZXQgbWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfY2hhbmdlZCBub2RlIH5pbnB1dF9tYXBfY2hhbmdlZCA9XG4gICAgICAgIGxldCBkZXBlbmRlbmN5ID1cbiAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuRGVwZW5kZW5jeS5jcmVhdGUgKExhenkuZm9yY2VfdmFsIGlucHV0X21hcF9jaGFuZ2VkKVxuICAgICAgICBpblxuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5hZGRfZGVwZW5kZW5jeSBub2RlIGRlcGVuZGVuY3lcbiAgICAgIGluXG4gICAgICAoKiBXZSB3YW50IHRvIG1ha2Ugbm9kZXMgZGVwZW5kIG9uIFtpbnB1dF9tYXBfY2hhbmdlZF0gc28gdGhhdCBbaW5wdXRfbWFwX2NoYW5nZWRdXG4gICAgICAgICBpcyBhbGxvd2VkIHRvIG1ha2UgdGhlbSBzdGFsZSwgYnV0IHdlIGRvIG5vdCB3YW50IHRoZW0gdG8gYmUgcmVjb21wdXRlZCBmb3IgYW55XG4gICAgICAgICBvdGhlciByZWFzb24uIFNvIHdlIG1ha2UgW2lucHV0X21hcF9jaGFuZ2VkXSBhIHVuaXQgaW5jcmVtZW50YWwgKHRoYXQgdGhlcmVmb3JlXG4gICAgICAgICBuZXZlciBjaGFuZ2VzKSBhbmQgdGhpcyB3YXkgW291dHB1dF9tYXBfbm9kZV0gYW5kIHRoZSBsb29rdXAgbm9kZXMgd2lsbCBvbmx5IGJlXG4gICAgICAgICByZWNvbXB1dGVkIHdoZW4gdGhleSBhcmUgZXhwbGljaXRseSBtYWRlIHN0YWxlLlxuICAgICAgKilcbiAgICAgIGxldCByZWMgaW5wdXRfbWFwX2NoYW5nZWQgPVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKEluY3JlbWVudGFsLm1hcCBpbnB1dF9tYXAgfmY6KGZ1biBpbnB1dF9tYXAgLT5cbiAgICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgbGV0IHByZXZfaW5wdXRfbWFwID0gc3RhdGUuaW5wdXRfbWFwIGluXG4gICAgICAgICAgICAgICBsZXQgZXhwZXJ0X25vZGVzLCBvdXRwdXRfbWFwID1cbiAgICAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICAgICBwcmV2X2lucHV0X21hcFxuICAgICAgICAgICAgICAgICAgIGlucHV0X21hcFxuICAgICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgICAgfmluaXQ6KHN0YXRlLmV4cGVydF9ub2Rlcywgc3RhdGUub3V0cHV0X21hcClcbiAgICAgICAgICAgICAgICAgICB+ZjooZnVuIChleHBlcnRfbm9kZXMsIG91dHB1dF9tYXApIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IGBMZWZ0IF9vbGRfdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9sZF9ub2RlID0gTWFwLmZpbmRfZXhuIGV4cGVydF9ub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuaW52YWxpZGF0ZSBvbGRfbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUubWFrZV9zdGFsZSBvdXRwdXRfbWFwX25vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgIE1hcC5yZW1vdmUgZXhwZXJ0X25vZGVzIGtleSwgTWFwLnJlbW92ZSBvdXRwdXRfbWFwIGtleVxuICAgICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgX25ld192YWx1ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgU2VwYXJhdGVfc3RhdGUuY3JlYXRlX2xvb2t1cF9ub2RlIGluY3JlbWVudGFsX3N0YXRlIHN0YXRlIGtleVxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGVfZGVwZW5kX29uX2lucHV0X21hcF9jaGFuZ2VkIG5vZGUgfmlucHV0X21hcF9jaGFuZ2VkO1xuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIG91dHB1dF9tYXBfbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgKCBNYXAuYWRkX2V4biBleHBlcnRfbm9kZXMgfmtleSB+ZGF0YTpub2RlXG4gICAgICAgICAgICAgICAgICAgICAgICwgTWFwLmFkZF9leG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH5rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH5kYXRhOihJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBub2RlKSApXG4gICAgICAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChfb2xkX3ZhbHVlLCBfbmV3X3ZhbHVlKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIChNYXAuZmluZF9leG4gZXhwZXJ0X25vZGVzIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgIGV4cGVydF9ub2Rlcywgb3V0cHV0X21hcClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBzdGF0ZS5pbnB1dF9tYXAgPC0gaW5wdXRfbWFwO1xuICAgICAgICAgICAgICAgc3RhdGUuZXhwZXJ0X25vZGVzIDwtIGV4cGVydF9ub2RlcztcbiAgICAgICAgICAgICAgIHN0YXRlLm91dHB1dF9tYXAgPC0gb3V0cHV0X21hcCkpKVxuICAgICAgaW5cbiAgICAgIG1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwX2NoYW5nZWQgb3V0cHV0X21hcF9ub2RlIH5pbnB1dF9tYXBfY2hhbmdlZDtcbiAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIG91dHB1dF9tYXBfbm9kZSlcbiAgOztcblxuICAoKiBKdXN0IGZvciBkZXJpdmluZyBzdHJ1Y3R1cmFsIGVxdWFsaXR5LiAqKVxuICB0eXBlICdhIG1heWJlX2JvdW5kX3N0cnVjdHVyYWxseSA9ICdhIE1heWJlX2JvdW5kLnQgPVxuICAgIHwgSW5jbCBvZiAnYVxuICAgIHwgRXhjbCBvZiAnYVxuICAgIHwgVW5ib3VuZGVkXG4gIFtAQGRlcml2aW5nIGVxdWFsXVxuXG4gIGxldCBzdWJyYW5nZVxuICAgICAgICAodHlwZSBrIHYgY21wIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAobWFwX2luY3IgOiAoKGssIHYsIGNtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIHJhbmdlXG4gICAgPVxuICAgIHdpdGhfb2xkMiB+aW5zdHJ1bWVudGF0aW9uIG1hcF9pbmNyIHJhbmdlIH5mOihmdW4gfm9sZCBtYXAgcmFuZ2UgLT5cbiAgICAgIGxldCBjb21wYXJlID0gKE1hcC5jb21wYXJhdG9yIG1hcCkuY29tcGFyZSBpblxuICAgICAgbGV0IGVxdWFsIGwgciA9IGNvbXBhcmUgbCByID0gMCBpblxuICAgICAgbGV0ICggPiApIGEgYiA9IGNvbXBhcmUgYSBiID4gMFxuICAgICAgYW5kICggPj0gKSBhIGIgPSBjb21wYXJlIGEgYiA+PSAwIGluXG4gICAgICBsZXQgbWF5YmVfYm91bmRfZXF1YWwgYSBiIDogYm9vbCA9IGVxdWFsX21heWJlX2JvdW5kX3N0cnVjdHVyYWxseSBlcXVhbCBhIGIgaW5cbiAgICAgIGxldCByYW5nZV9pc19lbXB0eSB+bWluIH5tYXggOiBib29sID1cbiAgICAgICAgbWF0Y2ggbWluLCBtYXggd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCwgKFVuYm91bmRlZCB8IEV4Y2wgXyB8IEluY2wgXykgfCAoRXhjbCBfIHwgSW5jbCBfKSwgVW5ib3VuZGVkIC0+IGZhbHNlXG4gICAgICAgIHwgSW5jbCBtaW4sIEluY2wgbWF4IC0+IG1pbiA+IG1heFxuICAgICAgICB8IEV4Y2wgbWluLCBFeGNsIG1heCB8IEluY2wgbWluLCBFeGNsIG1heCB8IEV4Y2wgbWluLCBJbmNsIG1heCAtPiBtaW4gPj0gbWF4XG4gICAgICBpblxuICAgICAgbGV0IHJhbmdlX2luY2x1ZGVzIH5taW4gfm1heCBrZXkgOiBib29sID1cbiAgICAgICAgTWF5YmVfYm91bmQuaXNfbG93ZXJfYm91bmQgbWluIH5vZl86a2V5IH5jb21wYXJlXG4gICAgICAgICYmIE1heWJlX2JvdW5kLmlzX3VwcGVyX2JvdW5kIG1heCB+b2ZfOmtleSB+Y29tcGFyZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHJhbmdlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiBFbXB0eSBuZXcgcmFuZ2UgbWVhbnMgZW1wdHkgbWFwICopXG4gICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihNYXAuY29tcGFyYXRvciBtYXApXG4gICAgICB8IFNvbWUgKChtaW4sIG1heCkgYXMgcmFuZ2UpIC0+XG4gICAgICAgIGxldCBmcm9tX3NjcmF0Y2ggKCkgPSBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDptaW4gfnVwcGVyX2JvdW5kOm1heCBpblxuICAgICAgICAobWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgIHwgTm9uZSB8IFNvbWUgKF8sIE5vbmUsIF8pIC0+XG4gICAgICAgICAgICgqIG5vIG9sZCByYW5nZSAqKVxuICAgICAgICAgICBmcm9tX3NjcmF0Y2ggKClcbiAgICAgICAgIHwgU29tZSAoXywgU29tZSAob2xkX21pbiwgb2xkX21heCksIF8pXG4gICAgICAgICAgIHdoZW4gcmFuZ2VfaXNfZW1wdHkgfm1pbjpvbGRfbWluIH5tYXg6b2xkX21heFxuICAgICAgICAgICAgIHx8IHJhbmdlX2lzX2VtcHR5IH5taW4gfm1heDpvbGRfbWF4XG4gICAgICAgICAgICAgfHwgcmFuZ2VfaXNfZW1wdHkgfm1pbjpvbGRfbWluIH5tYXggLT5cbiAgICAgICAgICAgKCogZW1wdHkgb2xkIHJhbmdlIG9yIG9sZCByYW5nZSBkaXNqb2ludCB3aXRoIG5ldyAqKVxuICAgICAgICAgICBmcm9tX3NjcmF0Y2ggKClcbiAgICAgICAgIHwgU29tZSAob2xkX21hcCwgU29tZSAoKG9sZF9taW4sIG9sZF9tYXgpIGFzIG9sZF9yYW5nZSksIG9sZF9yZXMpIC0+XG4gICAgICAgICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgICAgICAgICgqIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGtleSBpcyBpbiBib3RoIG5ldyBhbmQgb2xkIHJhbmdlcyAqKVxuICAgICAgICAgICAgIGxldCBpbl9yYW5nZV9pbnRlcnNlY3Rpb24ga2V5ID1cbiAgICAgICAgICAgICAgIHJhbmdlX2luY2x1ZGVzIH5taW4gfm1heCBrZXlcbiAgICAgICAgICAgICAgICYmIHJhbmdlX2luY2x1ZGVzIH5taW46b2xkX21pbiB+bWF4Om9sZF9tYXgga2V5XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoKiBBcHBseSBjaGFuZ2VzIHRvIGtleXMgd2hpY2ggYXJlIGluIHRoZSBpbnRlcnNlY3Rpb24gb2YgYm90aCByYW5nZXMuXG5cbiAgICAgICAgICAgICAgICBbb3V0c2lkZV0gaXMgdGhlIG51bWJlciBvZiB1cGRhdGVzIG91dHNpZGUgdGhlIHJhbmdlIGludGVyc2VjdGlvbiB0aGF0IHdlXG4gICAgICAgICAgICAgICAgdG9sZXJhdGUgYmVmb3JlIGdpdmluZyB1cCBhbmQgcmVjb25zdHJ1Y3RpbmcgYmFzZWQgb24gdGhlIG5ldyByYW5nZS4gVGhpc1xuICAgICAgICAgICAgICAgIGlzIGFuIG9wdGltaXNhdGlvbiBpbiB0aGUgY2FzZSB0aGF0IHRoZSBtYXAgY2hhbmdlcyBpbiBhIHZlcnkgYmlnIHdheSwgYXRcbiAgICAgICAgICAgICAgICB3aGljaCBwb2ludCBjb21wdXRpbmcgYmFzZWQgb24gdGhlIG5ldyByYW5nZSBpcyBjaGVhcGVyLiAgKilcbiAgICAgICAgICAgICBsZXQgYXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb24gKG91dHNpZGUsIG1hcCkgKGtleSwgZGF0YSkgPVxuICAgICAgICAgICAgICAgaWYgaW5fcmFuZ2VfaW50ZXJzZWN0aW9uIGtleVxuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gb3V0c2lkZSwgTWFwLnJlbW92ZSBtYXAga2V5XG4gICAgICAgICAgICAgICAgIHwgYFJpZ2h0IGRhdGEgfCBgVW5lcXVhbCAoXywgZGF0YSkgLT4gb3V0c2lkZSwgTWFwLnNldCBtYXAgfmtleSB+ZGF0YSlcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBsZXQgb3V0c2lkZSA9IG91dHNpZGUgLSAxIGluXG4gICAgICAgICAgICAgICAgIGlmIEludC5PLihvdXRzaWRlIDwgMClcbiAgICAgICAgICAgICAgICAgdGhlbiByZXR1cm4gKGZyb21fc2NyYXRjaCAoKSlcbiAgICAgICAgICAgICAgICAgZWxzZSBvdXRzaWRlLCBNYXAucmVtb3ZlIG1hcCBrZXkpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoKiBGaXJzdCB1cGRhdGUgdGhlIGtleXMgaW4gL2JvdGgvIHRoZSBvbGQgYW5kIHRoZSBuZXcgcmFuZ2UuICopXG4gICAgICAgICAgICAgbGV0IHdpdGhfdXBkYXRlZF92YWx1ZXNfaW5faW50ZXJzZWN0aW9uID1cbiAgICAgICAgICAgICAgICgqIEN1dG9mZiB0aGUgYmlnIGRpZmYgY29tcHV0YXRpb24gaWYgd2UgcmVhY2ggTyh8c3VibWFwfCkgbnVtYmVyIG9mXG4gICAgICAgICAgICAgICAgICBjaGFuZ2VzIHRoYXQgYXJlIG91dHNpZGUgdGhlIHJhbmdlICopXG4gICAgICAgICAgICAgICBsZXQgb3V0c2lkZV9jdXRvZmYgPSBNYXAubGVuZ3RoIG9sZF9yZXMgLyA0IGluXG4gICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICBvbGRfbWFwXG4gICAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgICB+aW5pdDoob3V0c2lkZV9jdXRvZmYsIG9sZF9yZXMpXG4gICAgICAgICAgICAgICAgIH5mOmFwcGx5X2RpZmZfaW5faW50ZXJzZWN0aW9uXG4gICAgICAgICAgICAgICB8PiBzbmRcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGlmIFR1cGxlMi5lcXVhbCB+ZXExOm1heWJlX2JvdW5kX2VxdWFsIH5lcTI6bWF5YmVfYm91bmRfZXF1YWwgb2xkX3JhbmdlIHJhbmdlXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgKCogVGhlcmUgYXJlIG5vIGtleXMgdG8gcmVtb3ZlIGFuZCBldmVyeXRoaW5nIGluIHJhbmdlIGlzIHVwZGF0ZWQuICopXG4gICAgICAgICAgICAgICB3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2VjdGlvblxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgKCogUmVtb3ZlIGFueSBrZXlzIHdoaWNoIGFyZSBub3QgaW4gdGhlIG5ldyByYW5nZS4gKilcbiAgICAgICAgICAgICAgIGxldCB3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlID1cbiAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlXG4gICAgICAgICAgICAgICAgICAgd2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICB+bG93ZXJfYm91bmQ6bWluXG4gICAgICAgICAgICAgICAgICAgfnVwcGVyX2JvdW5kOm1heFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICgqIEFkZCBpbiBhbnkga2V5cyB3aGljaCBhcmUgaW4gdGhlIG5ldyByYW5nZSBidXQgbm90IHRoZSBvbGQgcmFuZ2UuICopXG4gICAgICAgICAgICAgICBsZXQgd2l0aF9uZXdfa2V5c19ub3dfaW5fcmFuZ2UgPVxuICAgICAgICAgICAgICAgICBsZXQgbWFwX2FwcGVuZF9leG4gbG93ZXJfcGFydCB1cHBlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBNYXAuYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgICAgICAgICAgICAgICAgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyAtPlxuICAgICAgICAgICAgICAgICAgICAgZmFpbHdpdGggXCJpbXBvc3NpYmxlIGNhc2U6IEJVRyBpbiBpbmNyX21hcC5tbCBzdWJyYW5nZVwiXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIGxldCBsb3dlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBvbGRfbWluIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVuYm91bmRlZCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgICAgICAgICAgICAgICB8IEV4Y2wgb2xkX21pbiAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6bWluIH51cHBlcl9ib3VuZDooSW5jbCBvbGRfbWluKVxuICAgICAgICAgICAgICAgICAgIHwgSW5jbCBvbGRfbWluIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDptaW4gfnVwcGVyX2JvdW5kOihFeGNsIG9sZF9taW4pXG4gICAgICAgICAgICAgICAgIGFuZCB1cHBlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBvbGRfbWF4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVuYm91bmRlZCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgICAgICAgICAgICAgICB8IEV4Y2wgb2xkX21heCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6KEluY2wgb2xkX21heCkgfnVwcGVyX2JvdW5kOm1heFxuICAgICAgICAgICAgICAgICAgIHwgSW5jbCBvbGRfbWF4IC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDooRXhjbCBvbGRfbWF4KSB+dXBwZXJfYm91bmQ6bWF4XG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIG1hcF9hcHBlbmRfZXhuXG4gICAgICAgICAgICAgICAgICAgbG93ZXJfcGFydFxuICAgICAgICAgICAgICAgICAgIChtYXBfYXBwZW5kX2V4biB3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlIHVwcGVyX3BhcnQpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgd2l0aF9uZXdfa2V5c19ub3dfaW5fcmFuZ2UpKSkpXG4gIDs7XG5cbiAgbGV0IHJla2V5XG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+Y29tcGFyYXRvcjpvdXRlcl9jb21wYXJhdG9yXG4gICAgICAgIH5mXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICBtYXBfaW5jclxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgIH5pbml0OihNYXAuZW1wdHkgb3V0ZXJfY29tcGFyYXRvciwgW10pXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSAob3V0cHV0LCBhZGRzKSAtPlxuICAgICAgICBsZXQgbmV3X2VudHJ5ID0gZiB+a2V5IH5kYXRhLCBkYXRhIGluXG4gICAgICAgIG91dHB1dCwgbmV3X2VudHJ5IDo6IGFkZHMpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YSAob3V0cHV0LCBhZGRzKSAtPiBNYXAucmVtb3ZlIG91dHB1dCAoZiB+a2V5IH5kYXRhKSwgYWRkcylcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgKG91dHB1dCwgYWRkcykgLT5cbiAgICAgICAgbGV0IHByZXZfa2V5ID0gZiB+a2V5IH5kYXRhOm9sZF9kYXRhIGluXG4gICAgICAgIGxldCBuZXdfa2V5ID0gZiB+a2V5IH5kYXRhOm5ld19kYXRhIGluXG4gICAgICAgIGlmIChNYXAuY29tcGFyYXRvciBvdXRwdXQpLmNvbXBhcmUgcHJldl9rZXkgbmV3X2tleSA9IDBcbiAgICAgICAgdGhlbiBNYXAuc2V0IG91dHB1dCB+a2V5Om5ld19rZXkgfmRhdGE6bmV3X2RhdGEsIGFkZHNcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IG91dHB1dCA9IE1hcC5yZW1vdmUgb3V0cHV0IHByZXZfa2V5IGluXG4gICAgICAgICAgb3V0cHV0LCAobmV3X2tleSwgbmV3X2RhdGEpIDo6IGFkZHMpKVxuICAgICAgfmZpbmFsaXplOihmdW4gKG91dHB1dCwgYWRkcykgLT5cbiAgICAgICAgbGV0IG91dHB1dCA9XG4gICAgICAgICAgTGlzdC5mb2xkIGFkZHMgfmluaXQ6b3V0cHV0IH5mOihmdW4gb3V0cHV0IChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgICBNYXAuYWRkX2V4biBvdXRwdXQgfmtleSB+ZGF0YSlcbiAgICAgICAgaW5cbiAgICAgICAgb3V0cHV0LCBbXSlcbiAgICB8PiBJbmNyZW1lbnRhbC5tYXAgfmY6ZnN0XG4gIDs7XG5cbiAgbGV0IGluZGV4X2J5aVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwX2luY3JcbiAgICAgICAgfmNvbXBhcmF0b3I6b3V0ZXJfY29tcGFyYXRvclxuICAgICAgICB+aW5kZXhcbiAgICA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcF9pbmNyIChmdW4gaW5uZXJfY29tcGFyYXRvciAtPlxuICAgICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+aW5pdDooTWFwLmVtcHR5IG91dGVyX2NvbXBhcmF0b3IpXG4gICAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgICAgfmFkZDooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIG91dGVyX21hcCAtPlxuICAgICAgICAgIG1hdGNoIGluZGV4IH5rZXk6aW5uZXJfa2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gb3V0ZXJfbWFwXG4gICAgICAgICAgfCBTb21lIG91dGVyX2tleSAtPlxuICAgICAgICAgICAgTWFwLnVwZGF0ZSBvdXRlcl9tYXAgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gaW5uZXJfa2V5IGRhdGEgfmNvbXBhcmF0b3I6aW5uZXJfY29tcGFyYXRvclxuICAgICAgICAgICAgICB8IFNvbWUgaW5uZXJfbWFwIC0+IE1hcC5hZGRfZXhuIGlubmVyX21hcCB+a2V5OmlubmVyX2tleSB+ZGF0YSkpXG4gICAgICAgIH5yZW1vdmU6KGZ1biB+a2V5OmlubmVyX2tleSB+ZGF0YSBvdXRlcl9tYXAgLT5cbiAgICAgICAgICBtYXRjaCBpbmRleCB+a2V5OmlubmVyX2tleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG91dGVyX21hcFxuICAgICAgICAgIHwgU29tZSBvdXRlcl9rZXkgLT5cbiAgICAgICAgICAgIE1hcC5jaGFuZ2Ugb3V0ZXJfbWFwIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgZmFpbHdpdGggXCJCVUc6IEhpdCBzdXBwb3NlZGx5IGltcG9zc2libGUgY2FzZSBpbiBJbmNyX21hcC5pbmRleF9ieVwiXG4gICAgICAgICAgICAgIHwgU29tZSBpbm5lcl9tYXAgLT5cbiAgICAgICAgICAgICAgICBsZXQgaW5uZXJfbWFwID0gTWFwLnJlbW92ZSBpbm5lcl9tYXAgaW5uZXJfa2V5IGluXG4gICAgICAgICAgICAgICAgaWYgTWFwLmlzX2VtcHR5IGlubmVyX21hcCB0aGVuIE5vbmUgZWxzZSBTb21lIGlubmVyX21hcCkpKVxuICA7O1xuXG4gIGxldCBpbmRleF9ieSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5jb21wYXJhdG9yIH5pbmRleCA9XG4gICAgaW5kZXhfYnlpXG4gICAgICA/aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICB+aW5kZXg6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gaW5kZXggZGF0YSlcbiAgOztcblxuXG4gICgqKiBGaW5kIHR3byBrZXlzIGluIG1hcCBieSBpbmRleCwgTyhuKS4gV2UgdXNlIGp1c3Qgb25lIGZvbGQgKHR3byBNYXAubnRoIHdvdWxkIHVzZSB0d28pXG4gICAgICBhbmQgb3B0aW1pemUgZm9yIGtleXMgY2xvc2UgdG8gZWl0aGVyIGJlZ2lubmluZyBvciBlbmQgYnkgdXNpbmcgZWl0aGVyIGZvbGQgb3JcbiAgICAgIGZvbGRfcmlnaHQuXG4gICopXG4gIG1vZHVsZSBLZXlfc3RhdHVzID0gc3RydWN0XG4gICAgdHlwZSAnayB0ID1cbiAgICAgIHwgS25vd24gb2YgJ2tcbiAgICAgIHwgS25vd25fbm9uZVxuICAgICAgfCBVbmtub3duXG5cbiAgICBsZXQgaXNfa25vd24gPSBmdW5jdGlvblxuICAgICAgfCBVbmtub3duIC0+IGZhbHNlXG4gICAgICB8IF8gLT4gdHJ1ZVxuICAgIDs7XG5cbiAgICBsZXQgdG9fb3B0aW9uID0gZnVuY3Rpb25cbiAgICAgIHwgVW5rbm93biB8IEtub3duX25vbmUgLT4gTm9uZVxuICAgICAgfCBLbm93biBrIC0+IFNvbWUga1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBmaW5kX2tleV9yYW5nZV9saW5lYXIgKHR5cGUgaykgfmZyb20gfnRvXyAobWFwIDogKGssIF8sIF8pIE1hcC50KVxuICAgIDogKGsgKiBrIG9wdGlvbikgb3B0aW9uXG4gICAgPVxuICAgIGxldCBvcGVuIEtleV9zdGF0dXMgaW5cbiAgICBsZXQgbGVuID0gTWFwLmxlbmd0aCBtYXAgaW5cbiAgICBsZXQgYmVnaW5fa2V5ID0gaWYgSW50LiggPj0gKSBmcm9tIGxlbiB0aGVuIEtub3duX25vbmUgZWxzZSBVbmtub3duIGluXG4gICAgbGV0IGVuZF9rZXkgPSBpZiBJbnQuKCA+PSApIHRvXyBsZW4gdGhlbiBLbm93bl9ub25lIGVsc2UgVW5rbm93biBpblxuICAgIGxldCBmaW5kX2tleXMgZm9sZCB+c3RhcnRfcG9zIH5hZHZhbmNlX3BvcyA9XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgICAgZm9sZFxuICAgICAgICAgIG1hcFxuICAgICAgICAgIH5pbml0OihiZWdpbl9rZXksIGVuZF9rZXksIHN0YXJ0X3BvcylcbiAgICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGE6XyAoYmVnaW5fa2V5LCBlbmRfa2V5LCBwb3MpIC0+XG4gICAgICAgICAgICBsZXQgYmVnaW5fa2V5ID0gaWYgSW50LiggPSApIHBvcyBmcm9tIHRoZW4gS25vd24ga2V5IGVsc2UgYmVnaW5fa2V5IGluXG4gICAgICAgICAgICBsZXQgZW5kX2tleSA9IGlmIEludC4oID0gKSBwb3MgdG9fIHRoZW4gS25vd24ga2V5IGVsc2UgZW5kX2tleSBpblxuICAgICAgICAgICAgaWYgaXNfa25vd24gYmVnaW5fa2V5ICYmIGlzX2tub3duIGVuZF9rZXlcbiAgICAgICAgICAgIHRoZW4gcmV0dXJuIChiZWdpbl9rZXksIGVuZF9rZXksIHBvcylcbiAgICAgICAgICAgIGVsc2UgYmVnaW5fa2V5LCBlbmRfa2V5LCBhZHZhbmNlX3BvcyBwb3MpKVxuICAgIGluXG4gICAgbGV0IGJlZ2luX2tleSwgZW5kX2tleSwgXyA9XG4gICAgICAoKiBTZWFyY2hpbmcgZnJvbSBsZWZ0IHRha2VzIE8odG9fKSwgZnJvbSByaWdodCAtIE8obGVuIC0gZnJvbSksIHNvIHNlbGVjdCB0aGVcbiAgICAgICAgIHNtYWxsZXIgb25lLiAqKVxuICAgICAgaWYgdG9fIDwgbGVuIC0gZnJvbVxuICAgICAgdGhlbiBmaW5kX2tleXMgTWFwLmZvbGQgfnN0YXJ0X3BvczowIH5hZHZhbmNlX3BvczooZnVuIHBvcyAtPiBwb3MgKyAxKVxuICAgICAgZWxzZSBmaW5kX2tleXMgTWFwLmZvbGRfcmlnaHQgfnN0YXJ0X3BvczoobGVuIC0gMSkgfmFkdmFuY2VfcG9zOihmdW4gcG9zIC0+IHBvcyAtIDEpXG4gICAgaW5cbiAgICBPcHRpb24ubWFwIChLZXlfc3RhdHVzLnRvX29wdGlvbiBiZWdpbl9rZXkpIH5mOihmdW4gYmVnaW5fa2V5IC0+XG4gICAgICBiZWdpbl9rZXksIEtleV9zdGF0dXMudG9fb3B0aW9uIGVuZF9rZXkpXG4gIDs7XG5cbiAgbGV0IG50aF9mcm9tX2VpdGhlcl9zaWRlICh0eXBlIGspIG4gKG1hcCA6IChrLCBfLCBfKSBNYXAudCkgOiBrIG9wdGlvbiA9XG4gICAgT3B0aW9uLm1hcCB+Zjpmc3QgKGZpbmRfa2V5X3JhbmdlX2xpbmVhciB+ZnJvbTpuIH50b186biBtYXApXG4gIDs7XG5cbiAgKCoqIEZpbmQga2V5IFtieV0gcG9zaXRpb25zIGVhcmxpZXIvbGF0ZXIgaW4gYSBtYXAuIFJldHVybnMgbm9uZSBpZiBvdXQgb2YgYm91bmRzLiAqKVxuICBsZXQgcmVjIG9mZnNldCAoa2V5IDogJ2spIChtYXAgOiAoJ2ssIF8sIF8pIE1hcC50KSB+YnkgOiAnayBvcHRpb24gPVxuICAgIGlmIEludC4oID0gKSBieSAwXG4gICAgdGhlbiBTb21lIGtleVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNsb3Nlc3RfZGlyLCBhZGQgPVxuICAgICAgICBpZiBJbnQuKCA8ICkgYnkgMCB0aGVuIGBMZXNzX3RoYW4sIDEgZWxzZSBgR3JlYXRlcl90aGFuLCAtMVxuICAgICAgaW5cbiAgICAgIG1hdGNoIE1hcC5jbG9zZXN0X2tleSBtYXAgY2xvc2VzdF9kaXIga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgKGtleSwgXykgLT4gb2Zmc2V0IGtleSBtYXAgfmJ5OihieSArIGFkZCkpXG4gIDs7XG5cbiAgKCoqIEZpbmQgaG93IHdlIG5lZWQgdG8gbW92ZSBba2V5XSBpZiBbY2hhbmdlZF9rZXldIGNoYW5nZWQgaW4gdGhlIGdpdmVuXG4gICAgICB3YXkgKilcbiAgbGV0IGZpbmRfb2Zmc2V0IH5jb21wYXJlIH5rZXkgfmNoYW5nZWRfa2V5IGNoYW5nZSA9XG4gICAgaWYgSW50LiggPCApIChjb21wYXJlIGNoYW5nZWRfa2V5IGtleSkgMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgIHwgYExlZnQgXyAtPiAxXG4gICAgICB8IGBSaWdodCBfIC0+IC0xXG4gICAgICB8IF8gLT4gMClcbiAgICBlbHNlIDBcbiAgOztcblxuICBsZXQgcmFua1xuICAgICAgICAodHlwZSBrIHYgY21wIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICAobWFwIDogKChrLCB2LCBjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICAoa2V5IDogKGssIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXkgPSBjb21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICAgIGxldCBzYW1lX2tleSBhIGIgPSBjb21wYXJlX2tleSBhIGIgPSAwIGluXG4gICAgICBsZXQgd2hlbl9rZXlfY2hhbmdlZCB+bWFwIH5vbGRfa2V5IH5uZXdfa2V5IH5vbGRfcmFuayA9XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IG5ld19rZXkgb2xkX2tleSA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogSWYgdGhlIG5ldyBrZXkgaXMgc21hbGxlciB0aGFuIHRoZSBvbGQga2V5LCBmaW5kIHRoZSBzaXplIG9mIHRoZSBtYXAgc3VicmFuZ2VcbiAgICAgICAgICAgICBiZXR3ZWVuIHRoZW0gYW5kIHN1YnRyYWN0IGl0IGZyb20gdGhlIHByZXZpb3VzIHJhbmsgKilcbiAgICAgICAgICBsZXQgbG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kID0gRXhjbCBuZXdfa2V5LCBFeGNsIG9sZF9rZXkgaW5cbiAgICAgICAgICBsZXQgc3VicmFuZ2UgPSBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgaW5cbiAgICAgICAgICBvbGRfcmFuayAtIE1hcC5sZW5ndGggc3VicmFuZ2UgLSAxKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBPdGhlcndpc2UsIHRoZSBuZXcga2V5IGlzIGxhcmdlciB0aGFuIHRoZSBvbGQga2V5LCBzbyBmaW5kIHRoZSBzaXplIG9mIHRoZVxuICAgICAgICAgICAgIG1hcCBzdWJyYW5nZSBiZXR3ZWVuIHRoZW0gYW5kIGFkZCBpdCB0byB0aGUgcHJldmlvdXMgcmFuayAqKVxuICAgICAgICAgIGxldCBsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQgPSBFeGNsIG9sZF9rZXksIEV4Y2wgbmV3X2tleSBpblxuICAgICAgICAgIGxldCBzdWJyYW5nZSA9IE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCBpblxuICAgICAgICAgIG9sZF9yYW5rICsgTWFwLmxlbmd0aCBzdWJyYW5nZSArIDEpXG4gICAgICBpblxuICAgICAgbGV0IHdoZW5fbWFwX2NoYW5nZWQgfm9sZF9tYXAgfm5ld19tYXAgfmtleSB+b2xkX3JhbmsgPVxuICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICgqIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGRhdGEsIHNvIG9wdGltaXplIHRoZXNlIGNoZWNrcyAqKVxuICAgICAgICAgIH5kYXRhX2VxdWFsOihmdW4gXyBfIC0+IHRydWUpXG4gICAgICAgICAgb2xkX21hcFxuICAgICAgICAgIG5ld19tYXBcbiAgICAgICAgICB+aW5pdDpvbGRfcmFua1xuICAgICAgICAgIH5mOihmdW4gYWNjIChkaWZmX2tleSwgZGlmZikgLT5cbiAgICAgICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICAgICAgfCBgTGVmdCBfIHdoZW4gY29tcGFyZV9rZXkgZGlmZl9rZXkga2V5IDwgMCAtPiBhY2MgLSAxXG4gICAgICAgICAgICB8IGBSaWdodCBfIHdoZW4gY29tcGFyZV9rZXkgZGlmZl9rZXkga2V5IDwgMCAtPiBhY2MgKyAxXG4gICAgICAgICAgICB8IF8gLT4gYWNjKVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgcHJvY2VzcyB+KG9sZCA6ICgoaywgdiwgXykgTWFwLnQgKiBfICogXykgb3B0aW9uKSBuZXdfbWFwIChuZXdfa2V5IDogaykgPVxuICAgICAgICBpZiBub3QgKE1hcC5tZW0gbmV3X21hcCBuZXdfa2V5KVxuICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgICAoKiBJZiB0aGUgbWFwIGFuZCBrZXkgYXJlIHRoZSBzYW1lLCBqdXN0IHJldXNlIHRoZSBvbGQgcmFuayAqKVxuICAgICAgICAgIHwgU29tZSAob2xkX21hcCwgb2xkX2tleSwgb2xkX3JhbmspXG4gICAgICAgICAgICB3aGVuIHBoeXNfZXF1YWwgbmV3X21hcCBvbGRfbWFwICYmIHNhbWVfa2V5IG9sZF9rZXkgbmV3X2tleSAtPiBvbGRfcmFua1xuICAgICAgICAgICgqIElmIHRoZSBtYXAgaXMgdGhlIHNhbWUgYnV0IHRoZSBrZXkgY2hhbmdlZCAqKVxuICAgICAgICAgIHwgU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykgd2hlbiBwaHlzX2VxdWFsIG5ld19tYXAgb2xkX21hcCAtPlxuICAgICAgICAgICAgU29tZSAod2hlbl9rZXlfY2hhbmdlZCB+bWFwOm5ld19tYXAgfm9sZF9rZXkgfm5ld19rZXkgfm9sZF9yYW5rKVxuICAgICAgICAgICgqIElmIHRoZSBrZXkgaXMgdGhlIHNhbWUgYnV0IHRoZSBtYXAgY2hhbmdlZCAqKVxuICAgICAgICAgIHwgU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykgd2hlbiBzYW1lX2tleSBuZXdfa2V5IG9sZF9rZXkgLT5cbiAgICAgICAgICAgIFNvbWUgKHdoZW5fbWFwX2NoYW5nZWQgfm9sZF9tYXAgfm5ld19tYXAgfmtleTpuZXdfa2V5IH5vbGRfcmFuaylcbiAgICAgICAgICAoKiBJZiBib3RoIHRoZSBtYXAgYW5kIHRoZSBrZXkgY2hhbmdlZCwgdGhpcyBjYW4gYmUgc2ltdWxhdGVkIGFzIHRoZVxuICAgICAgICAgICAgIG1hcCBjaGFuZ2luZyBmb2xsb3dlZCBieSB0aGUga2V5IGNoYW5naW5nICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSAtPlxuICAgICAgICAgICAgKCogV2UgY2FsbCBbcHJvY2Vzc10gcmVjdXJzaXZlbHkgaW5zdGVhZCBvZiBkaXJlY3RseSBjYWxsaW5nXG4gICAgICAgICAgICAgICBbd2hlbl9tYXBfY2hhbmdlZF0gZm9sbG93ZWQgYnkgW3doZW5fa2V5X2NoYW5nZWRdIHNpbmNlIGl0IG1pZ2h0IGJlIHRoZVxuICAgICAgICAgICAgICAgY2FzZSB0aGF0IFtvbGRfa2V5XSBpcyBpbiBbb2xkX21hcF0gYW5kIFtuZXdfa2V5XSBpcyBpbiBbbmV3X21hcF0sIGJ1dFxuICAgICAgICAgICAgICAgW29sZF9rZXldIGlzIG5vdCBpbiBbbmV3X21hcF0uICopXG4gICAgICAgICAgICBsZXQgb2xkX3JhbmsgPVxuICAgICAgICAgICAgICBwcm9jZXNzIH5vbGQ6KFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspKSBuZXdfbWFwIG9sZF9rZXlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBwcm9jZXNzIH5vbGQ6KFNvbWUgKG5ld19tYXAsIG9sZF9rZXksIG9sZF9yYW5rKSkgbmV3X21hcCBuZXdfa2V5XG4gICAgICAgICAgKCogSWYgdGhlIHByZXZpb3VzIGtleSB3YXMgbm90IGluIHRoZSBtYXAgb3IgdGhpcyBpcyB0aGUgZmlyc3Qgc3RhYmlsaXphdGlvbixcbiAgICAgICAgICAgICBjb21wdXRlIHRoZSByYW5rIGZyb20gc2NyYXRjaCAqKVxuICAgICAgICAgIHwgU29tZSAoXywgXywgTm9uZSkgfCBOb25lIC0+IE1hcC5yYW5rIG5ld19tYXAgbmV3X2tleSlcbiAgICAgIGluXG4gICAgICB3aXRoX29sZDIgfmluc3RydW1lbnRhdGlvbiBtYXAga2V5IH5mOnByb2Nlc3MpXG4gIDs7XG5cbiAgKCoqIFJhbmdlIG1hcCBieSBpbmRpY2VzICopXG4gIGxldCBzdWJyYW5nZV9ieV9yYW5rXG4gICAgICAgICh0eXBlIGsgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIChtYXAgOiAoKGssIF8sIF8pIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICAocmFuZ2UgOiAoaW50IE1heWJlX2JvdW5kLnQgKiBpbnQgTWF5YmVfYm91bmQudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA9XG4gICAgbGV0IGZpbmRfa2V5X3JhbmdlIChyYW5nZSA6IChpbnQgKiBpbnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICA6ICgoayAqIGsgb3B0aW9uKSBvcHRpb24sIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgID1cbiAgICAgIHdpdGhfb2xkMiBtYXAgcmFuZ2Ugfmluc3RydW1lbnRhdGlvbiB+ZjooZnVuIH5vbGQgbWFwIChmcm9tLCB0b18pIC0+XG4gICAgICAgICgqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBubyBrZXlzLCBvbmx5IGJlZ2luIGtleSwgb3IgYmVnaW4gYW5kIGVuZCBrZXlzLlxuICAgICAgICAgICBUaGVzZSBhcmUgdGhlIGtleXMgYXQgW2Zyb21dIGFuZCBbdG9fXSBwb3NpdGlvbnMgaW4gdGhlIG1hcCwgb3IgTm9uZSBpZiB0aGVcbiAgICAgICAgICAgaW5kaWNlcyBhcmUgdG9vIGJpZy4gQXMgYWx3YXlzIFswIDw9IGZyb20gJiYgZnJvbSA8PSB0b19dLCB0aGVyZSBpcyBub1xuICAgICAgICAgICBwb3NzaWJpbGl0eSBvZiBvbmx5IFt0b19dIGJlaW5nIGEgdmFsaWQgcG9zaXRpb24uXG4gICAgICAgICopXG4gICAgICAgIGlmIEludC4oIDwgKSB0b18gZnJvbSB8fCBJbnQuKCA8ICkgZnJvbSAwXG4gICAgICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJJbnZhbGlkIGluZGljZXNcIiAoZnJvbSA6IGludCkgKHRvXyA6IGludCldO1xuICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIChvbGRfZnJvbSwgb2xkX3RvKSwgU29tZSAoYmVnaW5fa2V5LCBlbmRfa2V5X29wdCkpIC0+XG4gICAgICAgICAgbGV0IGZpbmRfb2Zmc2V0ID0gZmluZF9vZmZzZXQgfmNvbXBhcmU6KE1hcC5jb21wYXJhdG9yIG1hcCkuY29tcGFyZSBpblxuICAgICAgICAgIGxldCByYW5nZV9vZmZzZXRfYmVnaW4gPSBmcm9tIC0gb2xkX2Zyb20gaW5cbiAgICAgICAgICBsZXQgcmFuZ2Vfb2Zmc2V0X2VuZCA9IHRvXyAtIG9sZF90byBpblxuICAgICAgICAgIGxldCBhZGp1c3RfYW5kX29mZnNldCB+Ynkga2V5ID1cbiAgICAgICAgICAgIGxldCBieSA9IGJ5ICsgaWYgYnkgPj0gMCAmJiBub3QgKE1hcC5tZW0gbWFwIGtleSkgdGhlbiAxIGVsc2UgMCBpblxuICAgICAgICAgICAgb2Zmc2V0IGtleSBtYXAgfmJ5XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBXZSBvbmx5IGNhcmUgYWJvdXQgdGhlIGtleXMgY2hhbmdpbmcgYW5kIG5vdCB0aGUgZGF0YSwgc28gW2RhdGFfZXF1YWxdIGhlcmVcbiAgICAgICAgICAgICBjYW4gYmUgYWx3YXlzIHRydWUgKilcbiAgICAgICAgICBsZXQgZGlmZiB+aW5pdCB+ZiA9XG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZiB+ZGF0YV9lcXVhbDooZnVuIF8gXyAtPiB0cnVlKSBvbGRfbWFwIG1hcCB+aW5pdCB+ZlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGJlZ2luX2tleV9vcHQsIGVuZF9rZXlfb3B0ID1cbiAgICAgICAgICAgIG1hdGNoIGVuZF9rZXlfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBlbmRfa2V5IC0+XG4gICAgICAgICAgICAgIGxldCBtYXBfb2Zmc2V0X2JlZ2luLCBtYXBfb2Zmc2V0X2VuZCA9XG4gICAgICAgICAgICAgICAgZGlmZiB+aW5pdDooMCwgMCkgfmY6KGZ1biAob2Zmc2V0X2JlZ2luLCBvZmZzZXRfZW5kKSAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgICAgICAgICAoIG9mZnNldF9iZWdpbiArIGZpbmRfb2Zmc2V0IH5rZXk6YmVnaW5fa2V5IH5jaGFuZ2VkX2tleTprZXkgY2hhbmdlXG4gICAgICAgICAgICAgICAgICAsIG9mZnNldF9lbmQgKyBmaW5kX29mZnNldCB+a2V5OmVuZF9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2UgKSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCBhZGp1c3RfYW5kX29mZnNldCBiZWdpbl9rZXkgfmJ5OihtYXBfb2Zmc2V0X2JlZ2luICsgcmFuZ2Vfb2Zmc2V0X2JlZ2luKVxuICAgICAgICAgICAgICAsIGFkanVzdF9hbmRfb2Zmc2V0IGVuZF9rZXkgfmJ5OihtYXBfb2Zmc2V0X2VuZCArIHJhbmdlX29mZnNldF9lbmQpIClcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBsZXQgbWFwX29mZnNldF9iZWdpbiA9XG4gICAgICAgICAgICAgICAgZGlmZiB+aW5pdDowIH5mOihmdW4gb2Zmc2V0X2JlZ2luIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICAgIG9mZnNldF9iZWdpbiArIGZpbmRfb2Zmc2V0IH5rZXk6YmVnaW5fa2V5IH5jaGFuZ2VkX2tleTprZXkgY2hhbmdlKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGFkanVzdF9hbmRfb2Zmc2V0IGJlZ2luX2tleSB+Ynk6KG1hcF9vZmZzZXRfYmVnaW4gKyByYW5nZV9vZmZzZXRfYmVnaW4pXG4gICAgICAgICAgICAgICwgbnRoX2Zyb21fZWl0aGVyX3NpZGUgdG9fIG1hcCApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhc3NlcnQgKE9wdGlvbi5mb3JfYWxsIH5mOihNYXAubWVtIG1hcCkgYmVnaW5fa2V5X29wdCk7XG4gICAgICAgICAgYXNzZXJ0IChPcHRpb24uZm9yX2FsbCB+ZjooTWFwLm1lbSBtYXApIGVuZF9rZXlfb3B0KTtcbiAgICAgICAgICBPcHRpb24ubWFwIGJlZ2luX2tleV9vcHQgfmY6KGZ1biBiZWdpbl9rZXkgLT4gYmVnaW5fa2V5LCBlbmRfa2V5X29wdClcbiAgICAgICAgfCBOb25lIHwgU29tZSAoXywgXywgTm9uZSkgLT5cbiAgICAgICAgICAoKiBPbiBmaXJzdCBydW4gKHdoZW4gd2UgaGF2ZSB0bykgb3Igd2hlbiBib3RoIHRoZSBrZXlzIGFyZSBub25lLCBydW4gTyhuKVxuICAgICAgICAgICAgIHNjYW4uIFRoaXMgaXMgZmluZSBmb3Iga2V5cy1hcmUtbm9uZSBjYXNlIGFzIGl0IGhhcHBlbnMgd2hlbiB0aGUgcG9zaXRpb25zXG4gICAgICAgICAgICAgYXJlIHBhc3QgZW5kIG9mIHRoZSBtYXAsIHNvIHRoZXkgc2hvdWxkbid0IGJlIHRvbyBmYXIgZnJvbSBlbmQgYWZ0ZXIgdGhlXG4gICAgICAgICAgICAgbWFwIGNoYW5nZXMsIGFuZCBbZmluZF9rZXlfcmFuZ2VfbGluZWFyXSBpcyBmYXN0IGluIHN1Y2ggY2FzZS4gKilcbiAgICAgICAgICBmaW5kX2tleV9yYW5nZV9saW5lYXIgbWFwIH5mcm9tIH50b18pXG4gICAgaW5cbiAgICAoKiBIYW5kbGUgZGlmZmVyZW50IE1heWJlX2JvdW5kIGNhc2VzIGFuZCBjYWxsIGZpbmRfa2V5X3JhbmdlIGlmIG5lY2Vzc2FyeS4gSXQnc1xuICAgICAgIG5pY2VyIHRvIGRvIHRoaXMgaGVyZSBhcyBvcHBvc2VkIHRvIG1ha2luZyBmaW5kX2tleV9yYW5nZSBldmVuIG1vcmUgY29tcGxpY2F0ZWQgKilcbiAgICBsZXQgb3BlbiBJbmNyZW1lbnRhbC5MZXRfc3ludGF4IGluXG4gICAgbGV0ICggPj4+ICkgbmV3XyBib3VuZCA9IE1heWJlX2JvdW5kLm1hcCB+ZjooZnVuIF8gLT4gbmV3XykgYm91bmQgaW5cbiAgICBsZXQgcmV0dXJuID0gSW5jcmVtZW50YWwucmV0dXJuIChJbmNyZW1lbnRhbC5zdGF0ZSBtYXApIGluXG4gICAgbGV0IGtleV9yYW5nZSA9XG4gICAgICBtYXRjaCVwYXR0ZXJuX2JpbmQgcmFuZ2Ugd2l0aFxuICAgICAgfCBNYXliZV9ib3VuZC5VbmJvdW5kZWQsIE1heWJlX2JvdW5kLlVuYm91bmRlZCAtPlxuICAgICAgICByZXR1cm4gKFNvbWUgKE1heWJlX2JvdW5kLlVuYm91bmRlZCwgTWF5YmVfYm91bmQuVW5ib3VuZGVkKSlcbiAgICAgIHwgKCAoKE1heWJlX2JvdW5kLkluY2wgbCB8IE1heWJlX2JvdW5kLkV4Y2wgbCkgYXMgbGIpXG4gICAgICAgICwgKChNYXliZV9ib3VuZC5JbmNsIHUgfCBNYXliZV9ib3VuZC5FeGNsIHUpIGFzIHViKSApIC0+XG4gICAgICAgIGxldCVtYXAga2V5X3JhbmdlID0gZmluZF9rZXlfcmFuZ2UgKEluY3JlbWVudGFsLmJvdGggbCB1KVxuICAgICAgICBhbmQgbGIgPSBsYlxuICAgICAgICBhbmQgdWIgPSB1YiBpblxuICAgICAgICAobWF0Y2gga2V5X3JhbmdlIHdpdGhcbiAgICAgICAgIHwgU29tZSAoYmVnaW5fa2V5LCBTb21lIGVuZF9rZXkpIC0+IFNvbWUgKGJlZ2luX2tleSA+Pj4gbGIsIGVuZF9rZXkgPj4+IHViKVxuICAgICAgICAgfCBTb21lIChiZWdpbl9rZXksIE5vbmUpIC0+IFNvbWUgKGJlZ2luX2tleSA+Pj4gbGIsIFVuYm91bmRlZClcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCAoKE1heWJlX2JvdW5kLkluY2wgbCB8IE1heWJlX2JvdW5kLkV4Y2wgbCkgYXMgbGIpLCBNYXliZV9ib3VuZC5VbmJvdW5kZWQgLT5cbiAgICAgICAgbGV0JW1hcCBrZXlfcmFuZ2UgPSBmaW5kX2tleV9yYW5nZSAoSW5jcmVtZW50YWwuYm90aCBsIGwpXG4gICAgICAgIGFuZCBsYiA9IGxiIGluXG4gICAgICAgIChtYXRjaCBrZXlfcmFuZ2Ugd2l0aFxuICAgICAgICAgfCBTb21lIChrZXksIF8pIC0+IFNvbWUgKGtleSA+Pj4gbGIsIFVuYm91bmRlZClcbiAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgICAgfCBNYXliZV9ib3VuZC5VbmJvdW5kZWQsICgoTWF5YmVfYm91bmQuSW5jbCB1IHwgTWF5YmVfYm91bmQuRXhjbCB1KSBhcyB1YikgLT5cbiAgICAgICAgbGV0JW1hcCBrZXlfcmFuZ2UgPSBmaW5kX2tleV9yYW5nZSAoSW5jcmVtZW50YWwuYm90aCB1IHUpXG4gICAgICAgIGFuZCB1YiA9IHViIGluXG4gICAgICAgIChtYXRjaCBrZXlfcmFuZ2Ugd2l0aFxuICAgICAgICAgfCBTb21lIChrZXksIF8pIC0+IFNvbWUgKFVuYm91bmRlZCwga2V5ID4+PiB1YilcbiAgICAgICAgICgqIEluIHRoaXMgY2FzZSwgdGhlIHVwcGVyIGJvdW5kIHdhcyBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZVxuICAgICAgICAgICAgbWFwLCBzbyB0aGUgdXBwZXIgYm91bmQgZm9yIHRoZSBrZXkgcmFuZ2UgaXMgW1VuYm91bmRlZF0uXG4gICAgICAgICAgICBUaGlzIGJlaGF2aW9yIGlzIGRlbW9uc3RyYXRlZCBpbiBhIHRlc3QgaW4gWy4uL3Rlc3QvdGVzdF9zdWJyYW5nZS5tbF0uICopXG4gICAgICAgICB8IE5vbmUgLT4gU29tZSAoVW5ib3VuZGVkLCBVbmJvdW5kZWQpKVxuICAgIGluXG4gICAgc3VicmFuZ2UgP2RhdGFfZXF1YWwgbWFwIGtleV9yYW5nZVxuICA7O1xuXG4gIGxldCB0cmFuc3Bvc2VcbiAgICA6IHR5cGUgazEgazIgdiBrMV9jbXAgazJfY21wIHN0YXRlX3dpdG5lc3MuXG4gICAgICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgICAtPiA/ZGF0YV9lcXVhbDoodiAtPiB2IC0+IGJvb2wpXG4gICAgICAtPiAoazIsIGsyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgICAgLT4gKChrMSwgKGsyLCB2LCBrMl9jbXApIE1hcC50LCBrMV9jbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAtPiAoKGsyLCAoazEsIHYsIGsxX2NtcCkgTWFwLnQsIGsyX2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgZnVuID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKSBrMl9jb21wYXJhdG9yIG0gLT5cbiAgICAgIHdpdGhfY29tcGFyYXRvciBtIChmdW4gazFfY29tcGFyYXRvciAtPlxuICAgICAgICBsZXQgdXBkYXRlXG4gICAgICAgICAgOiAga2V5OmsxIC0+IG9sZF9kYXRhOihrMiwgdiwgazJfY21wKSBNYXAudCAtPiBuZXdfZGF0YTooazIsIHYsIGsyX2NtcCkgTWFwLnRcbiAgICAgICAgICAgIC0+IChrMiwgKGsxLCB2LCBrMV9jbXApIE1hcC50LCBrMl9jbXApIE1hcC50XG4gICAgICAgICAgICAtPiAoazIsIChrMSwgdiwgazFfY21wKSBNYXAudCwgazJfY21wKSBNYXAudFxuICAgICAgICAgID1cbiAgICAgICAgICBmdW4gfmtleTprMSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgb2xkX2RhdGFcbiAgICAgICAgICAgICAgbmV3X2RhdGFcbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgfmluaXQ6YWNjXG4gICAgICAgICAgICAgIH5mOihmdW4gYWNjIChrMiwgZGlmZikgLT5cbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgeCB8IGBVbmVxdWFsIChfLCB4KSAtPiBTb21lIHhcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIE1hcC5jaGFuZ2UgYWNjIGsyIH5mOihmdW4gYWNjX2lubmVyIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjX2lubmVyID1cbiAgICAgICAgICAgICAgICAgICAgTWFwLmNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2NfaW5uZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICB+ZGVmYXVsdDooTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6azFfY29tcGFyYXRvcikpXG4gICAgICAgICAgICAgICAgICAgICAgazFcbiAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuIF8gLT4gdmFsdWUpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgaWYgTWFwLmlzX2VtcHR5IGFjY19pbm5lciB0aGVuIE5vbmUgZWxzZSBTb21lIGFjY19pbm5lcikpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhZGQgfmtleSB+ZGF0YSA9XG4gICAgICAgICAgdXBkYXRlIH5rZXkgfm9sZF9kYXRhOihNYXAuZW1wdHkgazJfY29tcGFyYXRvcikgfm5ld19kYXRhOmRhdGFcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlbW92ZSB+a2V5IH5kYXRhID1cbiAgICAgICAgICB1cGRhdGUgfmtleSB+b2xkX2RhdGE6ZGF0YSB+bmV3X2RhdGE6KE1hcC5lbXB0eSBrMl9jb21wYXJhdG9yKVxuICAgICAgICBpblxuICAgICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICAgIG1cbiAgICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgICAgfmluaXQ6KE1hcC5lbXB0eSBrMl9jb21wYXJhdG9yKVxuICAgICAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgICAgICB+dXBkYXRlXG4gICAgICAgICAgfmFkZFxuICAgICAgICAgIH5yZW1vdmUpXG4gIDs7XG5cbiAgbGV0IGNvbGxhcHNlX2J5XG4gICAgICAgICh0eXBlIG91dGVyX2tleSBvdXRlcl9jbXAgaW5uZXJfa2V5IGlubmVyX2NtcCBjb21iaW5lZF9rZXkgY29tYmluZWRfY21wKVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcF9pbmNyIDpcbiAgICAgICAgICAgKChvdXRlcl9rZXksIChpbm5lcl9rZXksIF8sIGlubmVyX2NtcCkgTWFwLnQsIG91dGVyX2NtcCkgTWFwLnQsIF8pIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4obWVyZ2Vfa2V5cyA6IG91dGVyX2tleSAtPiBpbm5lcl9rZXkgLT4gY29tYmluZWRfa2V5KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoY29tYmluZWRfa2V5LCBjb21iaW5lZF9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgY29tcGFyYXRvcilcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH51cGRhdGU6KGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhOl8gfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICBNYXAuc2V0IGFjYyB+a2V5OihtZXJnZV9rZXlzIG91dGVyX2tleSBpbm5lcl9rZXkpIH5kYXRhOm5ld19kYXRhKVxuICAgICAgfmFkZDooZnVuIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLmFkZF9leG4gYWNjIH5rZXk6KG1lcmdlX2tleXMgb3V0ZXJfa2V5IGlubmVyX2tleSkgfmRhdGEpXG4gICAgICB+cmVtb3ZlOihmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOl8gYWNjIC0+XG4gICAgICAgIE1hcC5yZW1vdmUgYWNjIChtZXJnZV9rZXlzIG91dGVyX2tleSBpbm5lcl9rZXkpKVxuICA7O1xuXG4gIGxldCBjb2xsYXBzZVxuICAgICAgICAodHlwZSBvdXRlcl9rZXkgb3V0ZXJfY21wIGlubmVyX2tleSBpbm5lcl9jbXApXG4gICAgICAgID9pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcF9pbmNyIDpcbiAgICAgICAgICAgKChvdXRlcl9rZXksIChpbm5lcl9rZXksIF8sIGlubmVyX2NtcCkgTWFwLnQsIG91dGVyX2NtcCkgTWFwLnQsIF8pIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH5jb21wYXJhdG9yOihpbm5lcl9jb21wYXJhdG9yIDogKGlubmVyX2tleSwgaW5uZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50KVxuICAgID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwX2luY3IgKGZ1biBvdXRlcl9jb21wYXJhdG9yIC0+XG4gICAgICBsZXQgbW9kdWxlIENtcCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBvdXRlcl9rZXkgKiBpbm5lcl9rZXlcbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAob3V0ZXJfY21wLCBpbm5lcl9jbXApIFR1cGxlMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICBsZXQgY29tcGFyYXRvciA9XG4gICAgICAgICAgbGV0IGlubmVyX2NvbXBhcmF0b3IgPVxuICAgICAgICAgICAgbGV0IG1vZHVsZSBNID0gKHZhbCBpbm5lcl9jb21wYXJhdG9yKSBpblxuICAgICAgICAgICAgTS5jb21wYXJhdG9yXG4gICAgICAgICAgaW5cbiAgICAgICAgICBUdXBsZTIuY29tcGFyYXRvciBvdXRlcl9jb21wYXJhdG9yIGlubmVyX2NvbXBhcmF0b3JcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGNvbGxhcHNlX2J5XG4gICAgICAgID9pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwX2luY3JcbiAgICAgICAgfm1lcmdlX2tleXM6VHVwbGUyLmNyZWF0ZVxuICAgICAgICB+Y29tcGFyYXRvcjoobW9kdWxlIENtcCkpXG4gIDs7XG5cbiAgbGV0IGV4cGFuZFxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwX2luY3JcbiAgICAgICAgfm91dGVyX2NvbXBhcmF0b3JcbiAgICAgICAgfmlubmVyX2NvbXBhcmF0b3JcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSBvdXRlcl9jb21wYXJhdG9yKVxuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXk6KG91dGVyX2tleSwgaW5uZXJfa2V5KSB+b2xkX2RhdGE6XyB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgIE1hcC51cGRhdGUgYWNjIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTWFwLnNpbmdsZXRvbiBpbm5lcl9jb21wYXJhdG9yIGlubmVyX2tleSBuZXdfZGF0YVxuICAgICAgICAgIHwgU29tZSBtYXAgLT4gTWFwLnNldCBtYXAgfmtleTppbm5lcl9rZXkgfmRhdGE6bmV3X2RhdGEpKVxuICAgICAgfmFkZDooZnVuIH5rZXk6KG91dGVyX2tleSwgaW5uZXJfa2V5KSB+ZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLnVwZGF0ZSBhY2Mgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBNYXAuc2luZ2xldG9uIGlubmVyX2NvbXBhcmF0b3IgaW5uZXJfa2V5IGRhdGFcbiAgICAgICAgICB8IFNvbWUgbWFwIC0+IE1hcC5hZGRfZXhuIG1hcCB+a2V5OmlubmVyX2tleSB+ZGF0YSkpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleToob3V0ZXJfa2V5LCBpbm5lcl9rZXkpIH5kYXRhOl8gYWNjIC0+XG4gICAgICAgIE1hcC5jaGFuZ2UgYWNjIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBtYXAgLT5cbiAgICAgICAgICAgIGxldCBtYXAgPSBNYXAucmVtb3ZlIG1hcCBpbm5lcl9rZXkgaW5cbiAgICAgICAgICAgIE9wdGlvbi5zb21lX2lmIChub3QgKE1hcC5pc19lbXB0eSBtYXApKSBtYXApKVxuICA7O1xuXG4gIGxldCBjb3VudGkgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDowXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSBjb3VudCAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudClcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhIGNvdW50IC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGNvdW50IC0gMSBlbHNlIGNvdW50KVxuICA7O1xuXG4gIGxldCBjb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBjb3VudGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IGV4aXN0c2kgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwIChjb3VudGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZikgfmY6KGZ1biBjb3VudCAtPlxuICAgICAgY291bnQgPD4gMClcbiAgOztcblxuICBsZXQgZXhpc3RzID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIGV4aXN0c2kgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHN1bVxuICAgICAgICAodHlwZSB1KVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcF9pbmNyIDogKChfLCBfLCBfKSBNYXAudCwgXykgSW5jcmVtZW50YWwudClcbiAgICAgICAgKG1vZHVsZSBHcm91cCA6IEFic3RyYWN0X2FsZ2VicmEuQ29tbXV0YXRpdmVfZ3JvdXAuV2l0aG91dF9zZXhwIHdpdGggdHlwZSB0ID0gdSlcbiAgICAgICAgfmZcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmluaXQ6R3JvdXAuemVyb1xuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfmFkZDooZnVuIH5rZXk6XyB+ZGF0YTp2IGFjYyAtPiBHcm91cC4oICsgKSBhY2MgKGYgdikpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleTpfIH5kYXRhOnYgYWNjIC0+IEdyb3VwLiggLSApIGFjYyAoZiB2KSlcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwXG4gICAgICAoY291bnRpID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgICBub3QgKGYgfmtleSB+ZGF0YSkpKVxuICAgICAgfmY6KGZ1biBjb3VudCAtPiBjb3VudCA9IDApXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGwgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgZm9yX2FsbGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHVub3JkZXJlZF9mb2xkXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICA/dXBkYXRlXG4gICAgICAgID9zcGVjaWFsaXplZF9pbml0aWFsXG4gICAgICAgID9maW5hbGl6ZVxuICAgICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgICBtYXBcbiAgICAgICAgfmluaXRcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgP3VwZGF0ZVxuICAgICAgP3NwZWNpYWxpemVkX2luaXRpYWxcbiAgICAgID9maW5hbGl6ZVxuICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgIG1hcFxuICAgICAgfmluaXRcbiAgICAgIH5hZGRcbiAgICAgIH5yZW1vdmVcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICAgID91cGRhdGVcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbml0XG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZVxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICA/dXBkYXRlXG4gICAgICBtYXBcbiAgICAgIH5pbml0XG4gICAgICB+YWRkXG4gICAgICB+cmVtb3ZlXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbGV0IGZpbmRfa2V5X3JhbmdlX2xpbmVhciA9IGZpbmRfa2V5X3JhbmdlX2xpbmVhclxuICBlbmRcblxuICBtb2R1bGUgTG9va3VwID0gc3RydWN0XG4gICAgdHlwZSAoJ3YsICd3KSBlbnRyeSA9XG4gICAgICB7IG11dGFibGUgc2F2ZWRfdmFsdWUgOiAndiBvcHRpb25cbiAgICAgIDsgbm9kZSA6ICgndiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS50XG4gICAgICB9XG5cbiAgICB0eXBlICgnaywgJ3YsICdjbXAsICd3KSB0ID1cbiAgICAgIHsgbXV0YWJsZSBzYXZlZF9tYXAgOiAoJ2ssICd2LCAnY21wKSBNYXAudFxuICAgICAgKCogV2UgbWF5IGhhdmUgbXVsdGlwbGUgZW50cmllcyBwZXIga2V5IGlmIG5vZGVzIGJlY29tZSBuZWNlc3NhcnkgYWdhaW4gYWZ0ZXIgYmVpbmdcbiAgICAgICAgIHJlbW92ZWQuICopXG4gICAgICA7IG11dGFibGUgbG9va3VwX2VudHJpZXMgOiAoJ2ssICgndiwgJ3cpIGVudHJ5IGxpc3QsICdjbXApIE1hcC50XG4gICAgICA7IHVwZGF0ZXJfbm9kZSA6ICh1bml0LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgOyBzY29wZSA6ICd3IEluY3JlbWVudGFsLlNjb3BlLnRcbiAgICAgIH1cblxuICAgIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICAgIHR5cGUgdFxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ3YsICd3KSB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzLCAndykgdFxuICAgIGVuZFxuXG4gICAgbGV0IGNyZWF0ZVxuICAgICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgICAgaW5wdXRfbWFwXG4gICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgID1cbiAgICAgIGxldCByZWMgc2VsZiA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAobGV0IHVwZGF0ZXJfbm9kZSA9XG4gICAgICAgICAgICAgSW5jcmVtZW50YWwubWFwIGlucHV0X21hcCB+ZjooZnVuIGlucHV0X21hcCAtPlxuICAgICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IChsYXp5IHNlbGYpID0gc2VsZiBpblxuICAgICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICAgIHNlbGYuc2F2ZWRfbWFwXG4gICAgICAgICAgICAgICAgICAgaW5wdXRfbWFwXG4gICAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgICB+aW5pdDooKVxuICAgICAgICAgICAgICAgICAgIH5mOihmdW4gKCkgKGtleSwgY2hhbmdlZF92YWx1ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBlbnRyaWVzID0gTWFwLmZpbmRfbXVsdGkgc2VsZi5sb29rdXBfZW50cmllcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIExpc3QuaXRlciBlbnRyaWVzIH5mOihmdW4gZW50cnkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgPC0gKG1hdGNoIGNoYW5nZWRfdmFsdWUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgbmV3X3ZhbHVlIHwgYFVuZXF1YWwgKF8sIG5ld192YWx1ZSkgLT4gU29tZSBuZXdfdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIGVudHJ5Lm5vZGUpKTtcbiAgICAgICAgICAgICAgICAgc2VsZi5zYXZlZF9tYXAgPC0gaW5wdXRfbWFwKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICAgICAgIHsgc2F2ZWRfbWFwID0gZW1wdHlfbWFwXG4gICAgICAgICAgIDsgbG9va3VwX2VudHJpZXMgPSBlbXB0eV9tYXBcbiAgICAgICAgICAgOyB1cGRhdGVyX25vZGVcbiAgICAgICAgICAgOyBzY29wZSA9IEluY3JlbWVudGFsLlNjb3BlLmN1cnJlbnQgKEluY3JlbWVudGFsLnN0YXRlIGlucHV0X21hcCkgKClcbiAgICAgICAgICAgfSlcbiAgICAgIGluXG4gICAgICBMYXp5LmZvcmNlIHNlbGZcbiAgICA7O1xuXG4gICAgbGV0W0Bjb2xkXSBzbG93X3BhdGhfbGlua19lbnRyeSB0IGVudHJ5IH5rZXkgfmlzX25vd19vYnNlcnZhYmxlID1cbiAgICAgIGxldCAobGF6eSBlbnRyeSkgPSBlbnRyeSBpblxuICAgICAgbGV0IGN1cnJlbnRfZW50cmllcyA9IE1hcC5maW5kX211bHRpIHQubG9va3VwX2VudHJpZXMga2V5IGluXG4gICAgICBsZXQgaXNfbGlua2VkID0gTGlzdC5leGlzdHMgY3VycmVudF9lbnRyaWVzIH5mOihwaHlzX2VxdWFsIGVudHJ5KSBpblxuICAgICAgaWYgQm9vbC5lcXVhbCBpc19saW5rZWQgaXNfbm93X29ic2VydmFibGVcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaWYgaXNfbm93X29ic2VydmFibGVcbiAgICAgIHRoZW5cbiAgICAgICAgdC5sb29rdXBfZW50cmllc1xuICAgICAgICA8LSBNYXAudXBkYXRlIHQubG9va3VwX2VudHJpZXMga2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSAob3RoZXJfZW50cnkgOjogXyBhcyBvdGhlcl9lbnRyaWVzKSAtPlxuICAgICAgICAgICAgKCogVXBkYXRlIHRoaXMgZW50cnkncyB2YWx1ZSB0byBiZSBjdXJyZW50LiAqKVxuICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWUgPC0gb3RoZXJfZW50cnkuc2F2ZWRfdmFsdWU7XG4gICAgICAgICAgICBlbnRyeSA6OiBvdGhlcl9lbnRyaWVzXG4gICAgICAgICAgfCBOb25lIHwgU29tZSBbXSAtPlxuICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWUgPC0gTWFwLmZpbmQgdC5zYXZlZF9tYXAga2V5O1xuICAgICAgICAgICAgWyBlbnRyeSBdKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXdfZW50cmllcyA9XG4gICAgICAgICAgTGlzdC5maWx0ZXIgY3VycmVudF9lbnRyaWVzIH5mOihmdW4geCAtPiBub3QgKHBoeXNfZXF1YWwgZW50cnkgeCkpXG4gICAgICAgIGluXG4gICAgICAgIHQubG9va3VwX2VudHJpZXNcbiAgICAgICAgPC0gKGlmIExpc3QuaXNfZW1wdHkgbmV3X2VudHJpZXNcbiAgICAgICAgICAgIHRoZW4gTWFwLnJlbW92ZSB0Lmxvb2t1cF9lbnRyaWVzIGtleVxuICAgICAgICAgICAgZWxzZSBNYXAuc2V0IHQubG9va3VwX2VudHJpZXMgfmtleSB+ZGF0YTpuZXdfZW50cmllcykpXG4gICAgOztcblxuICAgIGxldFtAY29sZF0gc2xvd19wYXRoX2NyZWF0ZV9ub2RlIHQga2V5ID1cbiAgICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIHQudXBkYXRlcl9ub2RlIGluXG4gICAgICBJbmNyZW1lbnRhbC5TY29wZS53aXRoaW4gaW5jcmVtZW50YWxfc3RhdGUgdC5zY29wZSB+ZjooZnVuICgpIC0+XG4gICAgICAgIGxldCByZWMgZW50cnkgPVxuICAgICAgICAgIGxhenlcbiAgICAgICAgICAgIHsgc2F2ZWRfdmFsdWUgPSBNYXAuZmluZCB0LnNhdmVkX21hcCBrZXlcbiAgICAgICAgICAgIDsgbm9kZSA9XG4gICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuY3JlYXRlXG4gICAgICAgICAgICAgICAgICBpbmNyZW1lbnRhbF9zdGF0ZVxuICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiAoZm9yY2UgZW50cnkpLnNhdmVkX3ZhbHVlKVxuICAgICAgICAgICAgICAgICAgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlOihzbG93X3BhdGhfbGlua19lbnRyeSB0IGVudHJ5IH5rZXkpXG4gICAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCAobGF6eSBlbnRyeSkgPSBlbnRyeSBpblxuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5hZGRfZGVwZW5kZW5jeVxuICAgICAgICAgIGVudHJ5Lm5vZGVcbiAgICAgICAgICAoSW5jcmVtZW50YWwuRXhwZXJ0LkRlcGVuZGVuY3kuY3JlYXRlIHQudXBkYXRlcl9ub2RlKTtcbiAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggZW50cnkubm9kZSlcbiAgICA7O1xuXG4gICAgbGV0IGZpbmQgdCBrZXkgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmRfbXVsdGkgdC5sb29rdXBfZW50cmllcyBrZXkgd2l0aFxuICAgICAgfCBlbnRyeSA6OiBfIC0+IEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIGVudHJ5Lm5vZGVcbiAgICAgIHwgW10gLT4gc2xvd19wYXRoX2NyZWF0ZV9ub2RlIHQga2V5XG4gICAgOztcblxuICAgIG1vZHVsZSBGb3JfZGVidWcgPSBzdHJ1Y3RcbiAgICAgIGxldFtAY29sZF0gc2V4cF9vZl9lbnRyeSBzZXhwX29mX3ZhbHVlIGVudHJ5ID1cbiAgICAgICAgbGV0IHsgc2F2ZWRfdmFsdWU7IG5vZGUgfSA9IGVudHJ5IGluXG4gICAgICAgIGxldCBub2RlID0gSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggbm9kZSBpblxuICAgICAgICBbJXNleHBcbiAgICAgICAgICB7IHNhdmVkX3ZhbHVlIDogdmFsdWUgb3B0aW9uXG4gICAgICAgICAgOyBub2RlX2luZm8gPSAoSW5jcmVtZW50YWwudXNlcl9pbmZvIG5vZGUgOiAoSW5mby50IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICA7IG5vZGVfaXNfY29uc3QgPVxuICAgICAgICAgICAgICAoT3B0aW9uLnNvbWVfaWYgKEluY3JlbWVudGFsLmlzX2NvbnN0IG5vZGUpICgpXG4gICAgICAgICAgICAgICA6ICh1bml0IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICA7IG5vZGVfaXNfaW52YWxpZCA9XG4gICAgICAgICAgICAgIChPcHRpb24uc29tZV9pZiAobm90IChJbmNyZW1lbnRhbC5pc192YWxpZCBub2RlKSkgKClcbiAgICAgICAgICAgICAgIDogKHVuaXQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIDsgbm9kZV9pc191bm5lY2Vzc2FyeSA9XG4gICAgICAgICAgICAgIChPcHRpb24uc29tZV9pZiAobm90IChJbmNyZW1lbnRhbC5pc19uZWNlc3Nhcnkgbm9kZSkpICgpXG4gICAgICAgICAgICAgICA6ICh1bml0IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICB9XVxuICAgICAgOztcblxuICAgICAgbGV0W0Bjb2xkXSBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl92YWx1ZSB0ID1cbiAgICAgICAgbGV0IGluZm9fcGVyX2tleSA9XG4gICAgICAgICAgTWFwLm1lcmdlIHQuc2F2ZWRfbWFwIHQubG9va3VwX2VudHJpZXMgfmY6KGZ1biB+a2V5IGRhdGEgLT5cbiAgICAgICAgICAgIGxldCBhY3R1YWxfdmFsdWUsIGVudHJpZXMgPVxuICAgICAgICAgICAgICBtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgICAgICAgfCBgTGVmdCB4IC0+IFNvbWUgeCwgW11cbiAgICAgICAgICAgICAgfCBgUmlnaHQgeSAtPiBOb25lLCB5XG4gICAgICAgICAgICAgIHwgYEJvdGggKHgsIHkpIC0+IFNvbWUgeCwgeVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgeyBrZXkgOiBrZXlcbiAgICAgICAgICAgICAgICA7IGFjdHVhbF92YWx1ZSA6ICh2YWx1ZSBvcHRpb25bQHNleHAub3B0aW9uXSlcbiAgICAgICAgICAgICAgICA7IGVudHJpZXMgOiB2YWx1ZSBlbnRyeSBsaXN0XG4gICAgICAgICAgICAgICAgfV0pXG4gICAgICAgIGluXG4gICAgICAgIFNleHAuTGlzdCAoTWFwLmRhdGEgaW5mb19wZXJfa2V5KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHN0YXRlX3dpdG5lc3NcblxuICBpbmNsdWRlXG4gICAgU19nZW5cbiAgICB3aXRoIHR5cGUgJ2EgSW5jci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgIGFuZCB0eXBlICdhIEluY3IuQ3V0b2ZmLnQgPSAnYSBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgICBhbmQgdHlwZSAoJ2ssICd2LCAnY21wKSBMb29rdXAudCA9ICgnaywgJ3YsICdjbXAsIHN0YXRlX3dpdG5lc3MpIEdlbmVyaWMuTG9va3VwLnRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSW5jciA6IEluY3JlbWVudGFsLlMpID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJpY1xuICBtb2R1bGUgSW5zdHJ1bWVudGF0aW9uID0gSW5zdHJ1bWVudGF0aW9uXG5cbiAgbGV0IGZsYXR0ZW4geCA9IGZsYXR0ZW4gSW5jci5TdGF0ZS50IHhcblxuICBtb2R1bGUgTG9va3VwID0gc3RydWN0XG4gICAgaW5jbHVkZSBMb29rdXBcblxuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXAsIEluY3Iuc3RhdGVfd2l0bmVzcykgTG9va3VwLnRcblxuICAgIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICAgIHR5cGUgdFxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kKSA6IHNpZ1xuICAgICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEdlbmVyaWNcbiIsIm9wZW4gQ29yZVxuXG5tb2R1bGUgTWFrZSAoSW5jciA6IEluY3JlbWVudGFsLlNfZ2VuKSA9IHN0cnVjdFxuICBtb2R1bGUgRSA9IEluY3IuRXhwZXJ0XG5cbiAgKCogSGFzaHRibCBzdGFydHMgb3V0IGF0IGEgcmlkaWN1bG91cyBzaXplIG9mIDEyOC4gVGhpcyBpcyBhIG1vcmUgcmVhc29uYWJsZSBudW1iZXJcbiAgICAgb2YgYmlucyB0byBoYXZlLiAqKVxuICBsZXQgaGFzaHRibF9zaXplID0gMTBcblxuICAoKiogW3NldHVwX2dlbmVyYXRvcl0gc2V0cyB1cCB0aGUgc3RhZ2VkIGNvbnZlcnNpb24uXG5cbiAgICAgIFtoYXNoYWJsZV0gaXMgdXNlZCB0byBidWlsZCBhIHRhYmxlIG9mIG5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMuIFdlIGRyb3AgdW5uZWNlc3NhcnlcbiAgICAgIGRlcGVuZGVuY2llcyB0byBhbGxvdyB0aGVtIHRvIGJlIGNvbGxlY3RlZC5cblxuICAgICAgW2NvbXB1dGVfb3V0cHV0IGtleV0gcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIG91dHB1dCBub2RlIGNvcnJlc3BvbmRpbmcgdG8gW2tleV0uXG4gICAgICBbY29tcHV0ZV9vdXRwdXRdIGlzIGNsb3NlZCBvdmVyIHRoZSBtdXRhYmxlIHN0YXRlIGRldGVybWluaW5nIHRoZSBjdXJyZW50IHZhbHVlIG9mXG4gICAgICB0aGUgc2VsZWN0b3IncyBpbnB1dC5cblxuICAgICAgW21ha2VfaW5wdXRfbm9kZV0gbWFrZXMgc3VyZSB0aGF0IHdoZW4gdGhlIG11dGFibGUgc3RhdGUgaW5zaWRlIFtjb21wdXRlX291dHB1dF0gaXNcbiAgICAgIHVwZGF0ZWQsIHRoZSBjb3JyZXNwb25kaW5nIG5vZGVzIGluIHRoZSBbbmVjZXNzYXJ5X2RlcGVuZGVuY2llc10gdGFibGUgYXJlIG1hZGVcbiAgICAgIHN0YWxlLiAgKilcbiAgbGV0IHNldHVwX2dlbmVyYXRvclxuICAgICAgICAoaGFzaGFibGUgOiAnYSBIYXNodGJsX2ludGYuSGFzaGFibGUudClcbiAgICAgICAgfihjb21wdXRlX291dHB1dCA6ICdhIC0+ICdiKVxuICAgICAgICB+KG1ha2VfaW5wdXRfbm9kZSA6IG1ha2Vfa2V5X3N0YWxlOignYSAtPiB1bml0KSAtPiB1bml0IEluY3IudClcbiAgICA6ICgnYSAtPiAnYiBJbmNyLnQpIFN0YWdlZC50XG4gICAgPVxuICAgIGxldCBuZWNlc3NhcnlfZGVwZW5kZW5jaWVzID0gSGFzaHRibC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfnNpemU6aGFzaHRibF9zaXplIH5oYXNoYWJsZSAoKSBpblxuICAgIGxldCAoaW5wdXRfbm9kZSA6IHVuaXQgSW5jci50KSA9XG4gICAgICBsZXQgbWFrZV9rZXlfc3RhbGUga2V5ID1cbiAgICAgICAgSGFzaHRibC5maW5kIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMga2V5XG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpbXVxuICAgICAgICB8PiBMaXN0Lml0ZXIgfmY6RS5Ob2RlLm1ha2Vfc3RhbGVcbiAgICAgIGluXG4gICAgICBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlXG4gICAgaW5cbiAgICAoKiBTZXQgdGhlIGN1dG9mZiBzbyB0aGF0IHdlIG5ldmVyIHBhc3MgYXV0b21hdGljYWxseSBmcm9tIHRoZSB1cGRhdGUgdG8gdGhlIG5vZGVzLiBXZVxuICAgICAgIHdhbnQgZXZlcnl0aGluZyB0byBnbyB0aHJvdWdoIFttYWtlX2tleV9zdGFsZV0gKilcbiAgICBJbmNyLnNldF9jdXRvZmYgaW5wdXRfbm9kZSBJbmNyLkN1dG9mZi5hbHdheXM7XG4gICAgc3RhZ2UgKGZ1biBrZXkgLT5cbiAgICAgIGxldCBpbnB1dF9kZXAgPSBFLkRlcGVuZGVuY3kuY3JlYXRlIGlucHV0X25vZGUgaW5cbiAgICAgIGxldCByZWMgb3V0cHV0X25vZGUgPSBsYXp5IChcbiAgICAgICAgRS5Ob2RlLmNyZWF0ZVxuICAgICAgICAgIChmdW4gKCkgLT4gY29tcHV0ZV9vdXRwdXQga2V5KVxuICAgICAgICAgIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZTooZnVuIH5pc19ub3dfb2JzZXJ2YWJsZSAtPlxuICAgICAgICAgICAgaWYgaXNfbm93X29ic2VydmFibGUgdGhlblxuICAgICAgICAgICAgICBIYXNodGJsLmFkZF9tdWx0aSBuZWNlc3NhcnlfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGE6KGZvcmNlIG91dHB1dF9ub2RlKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBIYXNodGJsLmNoYW5nZSBuZWNlc3NhcnlfZGVwZW5kZW5jaWVzIGtleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBMaXN0LmZpbHRlciBsIH5mOihGbi5ub24gKHBoeXNfZXF1YWwgKGZvcmNlIG91dHB1dF9ub2RlKSkpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCBsJyAtPiBTb21lIGwnXG4gICAgICAgICAgICAgICkpKVxuICAgICAgaW5cbiAgICAgIGxldCBvdXRwdXRfbm9kZSA9IGZvcmNlIG91dHB1dF9ub2RlIGluXG4gICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgb3V0cHV0X25vZGUgaW5wdXRfZGVwO1xuICAgICAgRS5Ob2RlLndhdGNoIG91dHB1dF9ub2RlXG4gICAgKVxuXG4gICgqKiBUaGlzIGNyZWF0ZXMgYSB1bml0IGluY3JlbWVudGFsIHRoYXQgZmlyZXMgd2hlbmV2ZXIgdGhlIGlucHV0IGluY3JlbWVudGFsXG4gICAgICBmaXJlcy4gV2hlbiB0aGF0IG9jY3VycywgaXQgdXBkYXRlcyBbc2VsZWN0ZWRdIHRvIG1hdGNoIHRoZSBjdXJyZW50IHZhbHVlIG9mXG4gICAgICBbaW5wdXRdLCBhbmQgY2FsbHMgW21ha2Vfa2V5X3N0YWxlXSBmb3IgYm90aCB0aGUgb2xkIGFuZCBuZXcgdmFsdWUgb2YgdGhlXG4gICAgICBpbmNyZW1lbnRhbC4gKilcbiAgbGV0IHVwZGF0ZV9vbmUgfmlucHV0IH5zZWxlY3RlZCB+bWFrZV9zdGFsZSA9XG4gICAgSW5jci5tYXAgaW5wdXQgfmY6KGZ1biBpbnAgLT5cbiAgICAgIE9wdGlvbi5pdGVyIGlucCB+ZjptYWtlX3N0YWxlO1xuICAgICAgT3B0aW9uLml0ZXIgIXNlbGVjdGVkIH5mOm1ha2Vfc3RhbGU7XG4gICAgICBzZWxlY3RlZCA6PSBpbnBcbiAgICApXG5cbiAgbGV0IHNlbGVjdF9vbmUnXG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIChpbnB1dCA6IGEgb3B0aW9uIEluY3IudClcbiAgICA9XG4gICAgbGV0IHNlbGVjdGVkID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgY29tcHV0ZV9vdXRwdXQga2V5ID1cbiAgICAgIG1hdGNoICFzZWxlY3RlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSBrZXknIC0+IEguY29tcGFyZSBrZXkga2V5JyA9IDBcbiAgICBpblxuICAgIGxldCBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlID1cbiAgICAgIHVwZGF0ZV9vbmUgfmlucHV0IH5zZWxlY3RlZCB+bWFrZV9zdGFsZTptYWtlX2tleV9zdGFsZVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIEguaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X29uZSBoIGlucHV0ID1cbiAgICBzZWxlY3Rfb25lJyBoIChJbmNyLm1hcCB+ZjpPcHRpb24uc29tZSBpbnB1dClcblxuICBsZXQgc2VsZWN0X29uZV92YWx1ZSdcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgfmRlZmF1bHRcbiAgICAgICAgaW5wdXRcbiAgICA9XG4gICAgbGV0IHNlbGVjdGVkID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgY29tcHV0ZV9vdXRwdXQga2V5ID1cbiAgICAgIG1hdGNoICFzZWxlY3RlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGVmYXVsdFxuICAgICAgfCBTb21lIChrZXknLCBkYXRhKSAtPiBpZiBILmNvbXBhcmUga2V5IGtleScgPSAwIHRoZW4gZGF0YSBlbHNlIGRlZmF1bHRcbiAgICBpblxuICAgIGxldCBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlID1cbiAgICAgIHVwZGF0ZV9vbmUgfnNlbGVjdGVkIH5pbnB1dCB+bWFrZV9zdGFsZTooZnVuIChrZXksIF8pIC0+IG1ha2Vfa2V5X3N0YWxlIGtleSlcbiAgICBpblxuICAgIHNldHVwX2dlbmVyYXRvciBILmhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5cbiAgbGV0IHNlbGVjdF9vbmVfdmFsdWUgaCB+ZGVmYXVsdCBpbnB1dCA9XG4gICAgc2VsZWN0X29uZV92YWx1ZScgaCB+ZGVmYXVsdCAoSW5jci5tYXAgfmY6T3B0aW9uLnNvbWUgaW5wdXQpXG5cbiAgbGV0IHNlbGVjdF9tYW55X3ZhbHVlc1xuICAgICAgICAodHlwZSBhKVxuICAgICAgICAobW9kdWxlIEggOiBIYXNoYWJsZS5Db21tb24gd2l0aCB0eXBlIHQgPSBhKVxuICAgICAgICB+ZGVmYXVsdFxuICAgICAgICBpbnB1dFxuICAgID1cbiAgICBsZXQgaGFzaGFibGUgPSBILmhhc2hhYmxlIGluXG4gICAgbGV0IHNlbGVjdGVkID0gSGFzaHRibC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfnNpemU6aGFzaHRibF9zaXplIH5oYXNoYWJsZSAoKSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgSGFzaHRibC5maW5kIHNlbGVjdGVkIGtleSB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHRcbiAgICBpblxuICAgIGxldCBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlID1cbiAgICAgIEluY3IubWFwIGlucHV0IH5mOihmdW4gaW5wIC0+XG4gICAgICAgIEhhc2h0YmwuaXRlcl9rZXlzIHNlbGVjdGVkIH5mOm1ha2Vfa2V5X3N0YWxlO1xuICAgICAgICBIYXNodGJsLmNsZWFyIHNlbGVjdGVkO1xuICAgICAgICBMaXN0Lml0ZXIgaW5wIH5mOihmdW4gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICBtYWtlX2tleV9zdGFsZSBrZXk7XG4gICAgICAgICAgSGFzaHRibC5zZXQgc2VsZWN0ZWQgfmtleSB+ZGF0YVxuICAgICAgICApKVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIGhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5cbiAgbGV0IHNlbGVjdF9tYW55XG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIGlucHV0XG4gICAgPVxuICAgIGxldCBoYXNoYWJsZSA9IEguaGFzaGFibGUgaW5cbiAgICBsZXQgc2VsZWN0ZWQgPSBIYXNoX3NldC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfnNpemU6aGFzaHRibF9zaXplIH5oYXNoYWJsZSAoKSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPSBIYXNoX3NldC5tZW0gc2VsZWN0ZWQga2V5IGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgSW5jci5tYXAgaW5wdXQgfmY6KGZ1biBpbnAgLT5cbiAgICAgICAgbGV0IG9sZF9zZXQgPSBIYXNoX3NldC5jb3B5IHNlbGVjdGVkIGluXG4gICAgICAgIEhhc2hfc2V0LmNsZWFyIHNlbGVjdGVkO1xuXG4gICAgICAgIExpc3QuaXRlciBpbnAgfmY6KGZ1biBrZXkgLT5cbiAgICAgICAgICBpZiBub3QgKEhhc2hfc2V0Lm1lbSBvbGRfc2V0IGtleSkgdGhlblxuICAgICAgICAgICAgbWFrZV9rZXlfc3RhbGUga2V5O1xuICAgICAgICAgIEhhc2hfc2V0LmFkZCBzZWxlY3RlZCBrZXlcbiAgICAgICAgKTtcblxuICAgICAgICBIYXNoX3NldC5pdGVyIG9sZF9zZXQgfmY6KGZ1biBrZXkgLT5cbiAgICAgICAgICBpZiBub3QgKEhhc2hfc2V0Lm1lbSBzZWxlY3RlZCBrZXkpIHRoZW5cbiAgICAgICAgICAgIG1ha2Vfa2V5X3N0YWxlIGtleTtcbiAgICAgICAgKSlcbiAgICBpblxuICAgIHNldHVwX2dlbmVyYXRvciBoYXNoYWJsZSB+Y29tcHV0ZV9vdXRwdXQgfm1ha2VfaW5wdXRfbm9kZVxuZW5kXG5cbiIsImV4dGVybmFsIGpzX3Byb2ZfbWFyayA6IHN0cmluZyAtPiB1bml0ID0gXCJqc19wcm9mX21hcmtcIlxuZXh0ZXJuYWwganNfcHJvZl9tZWFzdXJlIDogc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gdW5pdCA9IFwianNfcHJvZl9tZWFzdXJlXCJcbmV4dGVybmFsIGpzX3Byb2ZfY2xlYXJfbWFya3MgOiB1bml0IC0+IHVuaXQgPSBcImpzX3Byb2ZfY2xlYXJfbWFya3NcIlxuZXh0ZXJuYWwganNfcHJvZl9jbGVhcl9tZWFzdXJlcyA6IHVuaXQgLT4gdW5pdCA9IFwianNfcHJvZl9jbGVhcl9tZWFzdXJlc1wiXG5cbmxldCBtYXJrIG5hbWUgPSBqc19wcm9mX21hcmsgbmFtZVxubGV0IG1lYXN1cmUgfm5hbWUgfnN0YXJ0IH5lbmRfID0ganNfcHJvZl9tZWFzdXJlIG5hbWUgc3RhcnQgZW5kX1xuXG5sZXQgcmVjb3JkIG5hbWUgfmYgPVxuICBsZXQgYmVmb3JlX25hbWUgPSBuYW1lIF4gXCJfYmVmb3JlXCIgaW5cbiAgbGV0IGFmdGVyX25hbWUgPSBuYW1lIF4gXCJfYWZ0ZXJcIiBpblxuICBsZXQgKCkgPSBtYXJrIGJlZm9yZV9uYW1lIGluXG4gIGxldCByZXMgPSBmICgpIGluXG4gIGxldCAoKSA9IG1hcmsgYWZ0ZXJfbmFtZSBpblxuICBtZWFzdXJlIH5uYW1lIH5zdGFydDpiZWZvcmVfbmFtZSB+ZW5kXzphZnRlcl9uYW1lO1xuICByZXNcbjs7XG5cbmxldCBjbGVhcl9tYXJrcyAoKSA9IGpzX3Byb2ZfY2xlYXJfbWFya3MgKClcbmxldCBjbGVhcl9tZWFzdXJlcyAoKSA9IGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXMgKClcblxubW9kdWxlIE1hbnVhbCA9IHN0cnVjdFxuICBsZXQgbWFyayA9IG1hcmtcbiAgbGV0IG1lYXN1cmUgPSBtZWFzdXJlXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBWaXJ0dWFsX2RvbVxuXG50eXBlIHQgPVxuICB7IGZpbGVuYW1lIDogc3RyaW5nXG4gIDsgbWltZXR5cGUgOiBzdHJpbmdcbiAgOyBjb250ZW50cyA6IHN0cmluZ1xuICB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBjcmVhdGUgPSBGaWVsZHMuY3JlYXRlXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHNwcmludGYgXCI8ZG93bmxvYWRlcjogJXM+XCIgdC5maWxlbmFtZSlcblxubGV0IHRyaWdnZXIgeyBmaWxlbmFtZTsgbWltZXR5cGU7IGNvbnRlbnRzIH0gPVxuICBsZXQgb3BlbiBKc19vZl9vY2FtbCBpblxuICBpZiBQcHhfaW5saW5lX3Rlc3RfbGliLmFtX3J1bm5pbmdcbiAgdGhlblxuICAgIHByaW50X3NcbiAgICAgIFslbWVzc2FnZSBcIkRvd25sb2FkIHRyaWdnZXJlZFwiIChmaWxlbmFtZSA6IHN0cmluZykgKG1pbWV0eXBlIDogc3RyaW5nKSBjb250ZW50c11cbiAgZWxzZSAoXG4gICAgKCogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE5MzI4ODkxLzU1ODU5MiAqKVxuICAgIGxldCBhID0gRG9tX2h0bWwuY3JlYXRlQSBEb21faHRtbC5kb2N1bWVudCBpblxuICAgIGxldCBjb250ZW50c19iaWdzdHIgPVxuICAgICAgVHlwZWRfYXJyYXkuQmlnc3RyaW5nLnRvX2FycmF5QnVmZmVyIChCaWdzdHJpbmcub2Zfc3RyaW5nIGNvbnRlbnRzKVxuICAgIGluXG4gICAgbGV0IGJsb2IgPVxuICAgICAgKCogRG9uJ3QgdXNlIFtibG9iX2Zyb21fc3RyaW5nXS4gVGhhdCBoYXMgYW4gYXR0cmFjdGl2ZSB0eXBlIGJ1dCB3b3JrcyBieSBmaXJzdFxuICAgICAgICAgY29udmVydGluZyBvdXIgT0NhbWwgc3RyaW5nIHRvIGEgSmF2YXNjcmlwdCBzdHJpbmcsIHdoaWNoIGNvbnZlcnRzIHRvXG4gICAgICAgICBVVEYtMTYuIElmIHRoZSBzdHJpbmcgY29udGFpbnMgcmFuZG9tIGJpbmFyeSBkYXRhIHRoYXQgd2lsbCBkaXN0b3J0IGl0LiAqKVxuICAgICAgRmlsZS5ibG9iX2Zyb21fYW55IFsgYGFycmF5QnVmZmVyIGNvbnRlbnRzX2JpZ3N0ciBdIH5jb250ZW50VHlwZTptaW1ldHlwZVxuICAgIGluXG4gICAgbGV0IHVybCA9IERvbV9odG1sLndpbmRvdyMjLl9VUkwjI2NyZWF0ZU9iamVjdFVSTCBibG9iIGluXG4gICAgYSMjc2V0QXR0cmlidXRlIChKcy5zdHJpbmcgXCJocmVmXCIpIHVybDtcbiAgICBhIyNzZXRBdHRyaWJ1dGUgKEpzLnN0cmluZyBcImRvd25sb2FkXCIpIChKcy5zdHJpbmcgZmlsZW5hbWUpO1xuICAgIGEjI2NsaWNrO1xuICAgIERvbV9odG1sLndpbmRvdyMjLl9VUkwjI3Jldm9rZU9iamVjdFVSTCB1cmwpXG47O1xuXG5tb2R1bGUgQnV0dG9uID0gc3RydWN0XG4gIGxldCBjcmVhdGVcbiAgICAgICAgPyhlbmFibGVkID0gdHJ1ZSlcbiAgICAgICAgPyhvbl9jbGljayA9IGZ1biBfIC0+IFZkb20uRWZmZWN0Lklnbm9yZSlcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICB+Z2V0X2Rvd25sb2FkXG4gICAgICAgIH5idXR0b25fdGV4dFxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgb3BlbiBWZG9tIGluXG4gICAgbGV0IHRyaWdnZXJfY3N2X2Rvd25sb2FkIGV2ID1cbiAgICAgIHRyaWdnZXIgKGdldF9kb3dubG9hZCAoKSk7XG4gICAgICBvbl9jbGljayBldlxuICAgIGluXG4gICAgbGV0IGVuYWJsZWRfZGlzYWJsZWQgPVxuICAgICAgaWYgZW5hYmxlZCB0aGVuIFtdIGVsc2UgWyBBdHRyLmRpc2FibGVkOyBBdHRyLnN0eWxlIChDc3NfZ2VuLmNvbG9yIChgTmFtZSBcImdyZXlcIikpIF1cbiAgICBpblxuICAgIGxldCBhdHRycyA9XG4gICAgICBbIGV4dHJhX2F0dHJzOyBlbmFibGVkX2Rpc2FibGVkOyBbIEF0dHIub25fY2xpY2sgdHJpZ2dlcl9jc3ZfZG93bmxvYWQgXSBdXG4gICAgICB8PiBMaXN0LmNvbmNhdFxuICAgIGluXG4gICAgTm9kZS5idXR0b24gfmF0dHJzOlsgQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgXSBbIE5vZGUudGV4dCBidXR0b25fdGV4dCBdXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm1vZHVsZSBJbmNyID0gSW5jcmVtZW50YWwuTWFrZSAoKVxuXG4oKiBUaGlzIGlzIHRoZSBkZWZhdWx0IGNsb2NrIGZvciBydW5uaW5nIGNsaWVudHMsIGJ1dCBib25zYWkgdGVzdHMgaGF2ZSB0aGVpclxuICAgb3duIHNlcGFyYXRlIGNsb2NrcyAqKVxubGV0IGNsb2NrID0gSW5jci5DbG9jay5jcmVhdGUgfnN0YXJ0OihUaW1lX25zLm5vdyAoKSkgKClcblxuaW5jbHVkZSBJbmNyXG5tb2R1bGUgTWFwID0gSW5jcl9tYXAuTWFrZSAoSW5jcilcbm1vZHVsZSBTZWxlY3QgPSBJbmNyX3NlbGVjdC5NYWtlIChJbmNyKVxuIiwib3BlbiBWaXJ0dWFsX2RvbVxub3BlbiBDb3JlXG5cbnR5cGUgKCdhY3Rpb24sICdtb2RlbCwgJ3N0YXRlLCAnZXh0cmEpIHdpdGhfZXh0cmEgPVxuICB7IGFwcGx5X2FjdGlvbiA6ICdhY3Rpb24gLT4gJ3N0YXRlIC0+IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiAnbW9kZWxcbiAgOyB1cGRhdGVfdmlzaWJpbGl0eSA6IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiAnbW9kZWxcbiAgOyB2aWV3IDogVmRvbS5Ob2RlLnRcbiAgOyBvbl9kaXNwbGF5IDogJ3N0YXRlIC0+IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiB1bml0XG4gIDsgZXh0cmEgOiAnZXh0cmFcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG50eXBlICgnYWN0aW9uLCAnc3RhdGUsICdtb2RlbCkgdCA9ICgnYWN0aW9uLCAnc3RhdGUsICdtb2RlbCwgdW5pdCkgd2l0aF9leHRyYVxuXG5sZXQgY3JlYXRlX3dpdGhfZXh0cmEgP2FwcGx5X2FjdGlvbiA/dXBkYXRlX3Zpc2liaWxpdHkgP29uX2Rpc3BsYXkgfmV4dHJhIG1vZGVsIHZpZXcgPVxuICBsZXQgYXBwbHlfYWN0aW9uID1cbiAgICBPcHRpb24udmFsdWUgYXBwbHlfYWN0aW9uIH5kZWZhdWx0OihmdW4gXyBfIH5zY2hlZHVsZV9hY3Rpb246XyAtPiBtb2RlbClcbiAgaW5cbiAgbGV0IHVwZGF0ZV92aXNpYmlsaXR5ID1cbiAgICBPcHRpb24udmFsdWUgdXBkYXRlX3Zpc2liaWxpdHkgfmRlZmF1bHQ6KGZ1biB+c2NoZWR1bGVfYWN0aW9uOl8gLT4gbW9kZWwpXG4gIGluXG4gIGxldCBvbl9kaXNwbGF5ID0gT3B0aW9uLnZhbHVlIG9uX2Rpc3BsYXkgfmRlZmF1bHQ6KGZ1biBfIH5zY2hlZHVsZV9hY3Rpb246XyAtPiAoKSkgaW5cbiAgeyBhcHBseV9hY3Rpb247IHVwZGF0ZV92aXNpYmlsaXR5OyBvbl9kaXNwbGF5OyBleHRyYTsgdmlldyB9XG47O1xuXG5sZXQgY3JlYXRlID0gY3JlYXRlX3dpdGhfZXh0cmEgfmV4dHJhOigpXG4iLCJvcGVuISBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG4oKiogQ29tbW9uIG1vZHVsZSB0eXBlcyAqKVxubW9kdWxlIHR5cGUgTW9kZWwgPSBzaWdcbiAgdHlwZSB0XG5cblxuICAoKiogQSBmdW5jdGlvbiBmb3IgdGVzdGluZyB3aGV0aGVyIHRoZSBtb2RlbCBoYXMgY2hhbmdlZCBlbm91Z2ggdG8gcmVxdWlyZSByZWZpcmluZ1xuICAgICAgdGhlIGluY3JlbWVudGFsIGdyYXBoLlxuXG4gICAgICBJdCdzIGJlc3QgaWYgdGhlIHZhbHVlcyBpbiB0aGUgbW9kZWwgc3VwcG9ydCBhIHNlbWFudGljYWxseSByZWFzb25hYmxlIGN1dG9mZlxuICAgICAgZnVuY3Rpb24gd2hpY2ggbGV0cyB5b3UgYXZvaWQgaW5maW5pdGUgcmVjb21wdXRhdGlvbiBsb29wcyB0aGF0IGNhbiBvdGhlcndpc2UgYmVcbiAgICAgIHRyaWdnZXJlZCBieSB0aGUgdmlzaWJpbGl0eSBjaGVja3MuIEZvciB0aGlzIHJlYXNvbiwgaXQncyB0eXBpY2FsbHkgYSBnb29kIGlkZWEgdG9cbiAgICAgIGF2b2lkIGhhdmluZyBzaW1wbGUgY2xvc3VyZXMgc3RvcmVkIGluIHRoZSBtb2RlbC5cblxuICAgICAgVGhhdCBzYWlkLCBpdCBkb2VzIHdvcmsgaWYgeW91IHB1dCBwaHlzX2VxdWFsIGluIGZvciB0aGUgY3V0b2ZmLiAqKVxuICB2YWwgY3V0b2ZmIDogdCAtPiB0IC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY3Rpb24gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgU3RhdGUgPSBzaWdcbiAgKCoqIFJlcHJlc2VudHMgdGhlIGltcGVyYXRpdmUgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIGFuIGFwcGxpY2F0aW9uLCB0eXBpY2FsbHkgdXNlZCBmb3JcbiAgICAgIGhvdXNpbmcgdGhpbmdzIGxpa2UgY29tbXVuaWNhdGlvbiBBc3luYy1SUEMgY29ubmVjdGlvbnMuICopXG4gIHR5cGUgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIE1vZGVsIDogTW9kZWxcbiAgbW9kdWxlIEFjdGlvbiA6IEFjdGlvblxuICBtb2R1bGUgU3RhdGUgOiBTdGF0ZVxuXG4gICgqKiBbb25fc3RhcnR1cF0gaXMgY2FsbGVkIG9uY2UsIHJpZ2h0IGFmdGVyIHRoZSBpbml0aWFsIERPTSBpcyBzZXQgdG8gdGhlIHZpZXcgdGhhdFxuICAgICAgY29ycmVzcG9uZHMgdG8gdGhlIGluaXRpYWwgc3RhdGUuIFRoaXMgaXMgdXNlZnVsIGZvciBkb2luZyB0aGluZ3MgbGlrZSBzdGFydGluZyB1cFxuICAgICAgYXN5bmMgcHJvY2Vzc2VzLiAgTm90ZSB0aGF0IHRoaXMgcGFydCBvZiB0aGUgY29tcHV0YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBhbnlcbiAgICAgIGluY3JlbWVudGFsaXR5LCBzaW5jZSBpdCdzIG9ubHkgcnVuIG9uY2UuICopXG4gIHZhbCBvbl9zdGFydHVwIDogc2NoZWR1bGVfYWN0aW9uOihBY3Rpb24udCAtPiB1bml0KSAtPiBNb2RlbC50IC0+IFN0YXRlLnQgRGVmZXJyZWQudFxuXG4gICgqKiBbY3JlYXRlXSBpcyBhIGZ1bmN0aW9uIHRoYXQgaW5jcmVtZW50YWxseSBjb25zdHJ1Y3RzIGEgeyFDb21wb25lbnR9LiBOb3RlIHRoYXQgYVxuICAgICAgW0NvbXBvbmVudF0gc3VwcG9ydHMgZnVuY3Rpb25zIGxpa2UgW2FwcGx5X2FjdGlvbl0sIHdoaWNoIHJldHVybiBhIG5ldyBbTW9kZWwudF0sXG4gICAgICB3aXRob3V0IHRha2luZyBhIG1vZGVsIGFzIGFuIGV4cGxpY2l0IGlucHV0LiAgVGhlIGludGVudCBpcyBmb3IgW2FwcGx5X2FjdGlvbl0gdG9cbiAgICAgIGhhdmUgYWNjZXNzIHRvIHRoZSBjdXJyZW50IG1vZGVsIHZpYSBpdHMgY29uc3RydWN0aW9uXG5cbiAgICAgIEhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0aGlzIG1pZ2h0IGxvb2sgaW4gcHJhY3RpY2UuXG5cbiAgICAgIHtbXG4gICAgICAgIG1vZHVsZSBNb2RlbCA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHsgY291bnRlciA6IGludCB9IFtAQGRlcml2aW5nIGZpZWxkcywgY29tcGFyZV1cblxuICAgICAgICAgIGxldCBjdXRvZmYgdDEgdDIgPSBjb21wYXJlIHQxIHQyID0gMFxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSB1bml0XG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBJbmNyZW1lbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGxldCBzaG91bGRfbG9nIF8gPSBmYWxzZVxuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgaW5pdGlhbF9tb2RlbCA9IHsgTW9kZWwuY291bnRlciA9IDAgfVxuXG4gICAgICAgIGxldCBvbl9zdGFydHVwIH5zY2hlZHVsZV9hY3Rpb25zIF9tb2RlbCA9XG4gICAgICAgICAgZXZlcnkgKFRpbWVfbnMuU3Bhbi5vZl9zZWMgMS4pIChmdW4gKCkgLT5cbiAgICAgICAgICAgIHNjaGVkdWxlX2FjdGlvbnMgWyBBY3Rpb24uSW5jcmVtZW50IF0pO1xuICAgICAgICAgIERlZmVycmVkLnVuaXRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWw6XyB+aW5qZWN0Ol8gPVxuICAgICAgICAgIGxldCBvcGVuIEluY3IuTGV0X3N5bnRheCBpblxuICAgICAgICAgIGxldCVtYXAgYXBwbHlfYWN0aW9uID1cbiAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9IG1vZGVsID4+fCBNb2RlbC5jb3VudGVyIGluXG4gICAgICAgICAgICBmdW4gKEluY3JlbWVudCA6IEFjdGlvbi50KSBfIH5zY2hlZHVsZV9hY3Rpb25zOl8gLT5cbiAgICAgICAgICAgICAgeyBNb2RlbC5jb3VudGVyID0gY291bnRlciArIDEgfVxuICAgICAgICAgIGFuZCB2aWV3ID1cbiAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9XG4gICAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9IG1vZGVsID4+fCBNb2RlbC5jb3VudGVyIGluXG4gICAgICAgICAgICAgIFZkb20uTm9kZS5kaXYgW10gWyBWZG9tLk5vZGUudGV4dCAoSW50LnRvX3N0cmluZyBjb3VudGVyKSBdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgVmRvbS5Ob2RlLmJvZHkgW10gWyBjb3VudGVyIF1cbiAgICAgICAgICBhbmQgbW9kZWwgPSBtb2RlbCBpblxuICAgICAgICAgICgqIE5vdGUgdGhhdCB3ZSBkb24ndCBpbmNsdWRlIFtvbl9kaXNwbGF5XSBvciBbdXBkYXRlX3Zpc2liaWxpdHldLCBzaW5jZVxuICAgICAgICAgICAgIHRoZXNlIGFyZSBvcHRpb25hbCBhcmd1bWVudHMgKilcbiAgICAgICAgICBDb21wb25lbnQuY3JlYXRlIH5hcHBseV9hY3Rpb24gbW9kZWwgdmlld1xuICAgICAgICA7OyBdfVxuXG4gICAgICBUaGUgZnVsbCBjb2RlIGZvciB0aGlzIGV4YW1wbGUgY2FuIGJlIGZvdW5kIGluIGV4YW1wbGVzL2NvdW50ZXIuXG4gICopXG4gIHZhbCBjcmVhdGVcbiAgICA6ICBNb2RlbC50IEluY3IudFxuICAgIC0+IG9sZF9tb2RlbDpNb2RlbC50IEluY3IudFxuICAgICgqKiBbb2xkX21vZGVsXSBjb250YWlucyB0aGUgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUgbW9kZWwgKilcbiAgICAtPiBpbmplY3Q6KEFjdGlvbi50IC0+IHVuaXQgVmRvbS5FZmZlY3QudClcbiAgICAoKiogW2luamVjdF0gZ2l2ZXMgeW91IHRoZSBhYmlsaXR5IHRvIGNyZWF0ZSBldmVudCBoYW5kbGVycyBpbiB0aGUgdmlydHVhbCBET00uIEluXG4gICAgICAgIHlvdXIgZXZlbnQgaGFuZGxlciwgY2FsbCB0aGlzIGZ1bmN0aW9uIG9uIHRoZSBhY3Rpb24geW91IHdvdWxkIGxpa2UgdG9cbiAgICAgICAgc2NoZWR1bGUuIFZpcnR1YWwgRE9NIHdpbGwgYXV0b21hdGljYWxseSBkZWxlZ2F0ZSB0aGF0IGFjdGlvbiBiYWNrIHRvIHRoZVxuICAgICAgICBbU3RhcnRfYXBwXSBtYWluIGxvb3AuICopXG4gICAgLT4gKEFjdGlvbi50LCBNb2RlbC50LCBTdGF0ZS50KSBDb21wb25lbnQudCBJbmNyLnRcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICB0eXBlICgnc3RhdGUsICdtb2RlbCwgJ2FjdGlvbikgc25hcHNob3QgPVxuICAgIHsgdmlldyA6IFZkb20uTm9kZS50XG4gICAgOyBhcHBseV9hY3Rpb24gOlxuICAgICAgICAnc3RhdGUgLT4gc2NoZWR1bGVfZXZlbnQ6KHVuaXQgVWlfZWZmZWN0LnQgLT4gdW5pdCkgLT4gJ21vZGVsIC0+ICdhY3Rpb24gLT4gJ21vZGVsXG4gICAgOyB1cGRhdGVfdmlzaWJpbGl0eSA6ICdtb2RlbCAtPiBzY2hlZHVsZV9ldmVudDoodW5pdCBVaV9lZmZlY3QudCAtPiB1bml0KSAtPiAnbW9kZWxcbiAgICA7IG9uX2Rpc3BsYXkgOiAnc3RhdGUgLT4gc2NoZWR1bGVfZXZlbnQ6KHVuaXQgVWlfZWZmZWN0LnQgLT4gdW5pdCkgLT4gdW5pdFxuICAgIH1cblxuICBtb2R1bGUgdHlwZSBTX2Zvcl9ib25zYWkgPSBzaWdcbiAgICBtb2R1bGUgTW9kZWwgOiBNb2RlbFxuICAgIG1vZHVsZSBBY3Rpb24gOiBBY3Rpb25cbiAgICBtb2R1bGUgU3RhdGUgOiBTdGF0ZVxuXG4gICAgdmFsIGFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIDogQWN0aW9uLnQgLT4gYm9vbFxuICAgIHZhbCBvbl9zdGFydHVwIDogc2NoZWR1bGVfYWN0aW9uOihBY3Rpb24udCAtPiB1bml0KSAtPiBNb2RlbC50IC0+IFN0YXRlLnQgRGVmZXJyZWQudFxuXG4gICAgdmFsIGNyZWF0ZVxuICAgICAgOiAgTW9kZWwudCBJbmNyLnRcbiAgICAgIC0+IG9sZF9tb2RlbDpNb2RlbC50IEluY3IudFxuICAgICAgLT4gaW5qZWN0OihBY3Rpb24udCAtPiB1bml0IFZkb20uRWZmZWN0LnQpXG4gICAgICAtPiAoU3RhdGUudCwgTW9kZWwudCwgQWN0aW9uLnQpIHNuYXBzaG90IEluY3IudFxuICBlbmRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgUmVjdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgdG9wIDogJ2FcbiAgICA7IGxlZnQgOiAnYVxuICAgIDsgYm90dG9tIDogJ2FcbiAgICA7IHJpZ2h0IDogJ2FcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gIGxldCBtYXAgdCB+ZiA9XG4gICAgeyB0b3AgPSBmIHQudG9wOyBsZWZ0ID0gZiB0LmxlZnQ7IGJvdHRvbSA9IGYgdC5ib3R0b207IHJpZ2h0ID0gZiB0LnJpZ2h0IH1cbiAgOztcblxuICBsZXQgaW50X2hlaWdodCB0ID0gdC5ib3R0b20gLSB0LnRvcFxuICBsZXQgaW50X3dpZHRoIHQgPSB0LnJpZ2h0IC0gdC5sZWZ0XG4gIGxldCBmbG9hdF9oZWlnaHQgdCA9IHQuYm90dG9tIC0uIHQudG9wXG4gIGxldCBmbG9hdF93aWR0aCB0ID0gdC5yaWdodCAtLiB0LmxlZnRcbmVuZFxuXG5sZXQgcm91bmRfZmxvYXRfcmVjdCA/KHJvdW5kID0gRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuKSA9IFJlY3QubWFwIH5mOnJvdW5kXG5cbnR5cGUgcm93c19vcl9jb2x1bW5zID1cbiAgfCBSb3dzXG4gIHwgQ29sdW1uc1xuW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCB2YXJpYW50cywgY29tcGFyZV1cblxubGV0IGlubmVySGVpZ2h0ICgpID0gRG9tX2h0bWwud2luZG93IyMuaW5uZXJIZWlnaHRcbmxldCBpbm5lcldpZHRoICgpID0gRG9tX2h0bWwud2luZG93IyMuaW5uZXJXaWR0aFxuXG5sZXQgZWxlbWVudF9pc19pbl92aWV3cG9ydCAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA9XG4gIGxldCByZWN0ID0gZWx0IyNnZXRCb3VuZGluZ0NsaWVudFJlY3QgaW5cbiAgRmxvYXQuKCA+PSApIHJlY3QjIy50b3AgMC5cbiAgJiYgRmxvYXQuKCA+PSApIHJlY3QjIy5sZWZ0IDAuXG4gICYmIEZsb2F0LiggPD0gKSByZWN0IyMuYm90dG9tIChGbG9hdC5vZl9pbnQgKGlubmVySGVpZ2h0ICgpKSlcbiAgJiYgRmxvYXQuKCA8PSApIHJlY3QjIy5yaWdodCAoRmxvYXQub2ZfaW50IChpbm5lcldpZHRoICgpKSlcbjs7XG5cbigqKiBTY3JvbGxzIHRvIHRoZSBpdGVtIG1hcmtlZCBhcyBcImtlZXAtaW4tdmlld1wiICopXG5sZXQgc2Nyb2xsID8oaWQgPSBcImtlZXAtaW4tdmlld1wiKSAoKSA9XG4gIG1hdGNoIERvbV9odG1sLmdldEVsZW1lbnRCeUlkX29wdCBpZCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZWx0IC0+IGlmIG5vdCAoZWxlbWVudF9pc19pbl92aWV3cG9ydCBlbHQpIHRoZW4gZWx0IyNzY3JvbGxJbnRvVmlldyBKcy5fdHJ1ZVxuOztcblxuKCogTm90IHlldCBzdXBwb3J0ZWQgb24gQ2hyb21lLiAgTWF5YmUgd2Ugc2hvdWxkIHVzZSBqUXVlcnk/XG4gICB7W1xuICAgICBsZXQgc2Nyb2xsX2ludG9fdmlldyAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA6IHVuaXQgPVxuICAgICAgIGVsdCMjc2Nyb2xsSW50b1ZpZXcgKG9iamVjdCVqc1xuICAgICAgICAgdmFsIGJsb2NrID0gSnMuc3RyaW5nIFwic3RhcnRcIlxuICAgICAgICAgdmFsIGJlaGF2aW9yID0gSnMuc3RyaW5nIFwic21vb3RoXCJcbiAgICAgICBlbmQpXG4gICBdfVxuKilcbigqIFt2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgZWxdIGdldHMgYm91bmRpbmcgcmVjdCBvZiBbZWx0XS4gVGhlIGJvdW5kaW5nIHJlY3QgaXNcbiAgIHJlbGF0aXZlIHRvIHRoZSB2aWV3IHBvcnQgKilcbmxldCB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOiBmbG9hdCBSZWN0LnQgPVxuICBsZXQgcmVjdCA9IGVsdCMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGluXG4gIHsgUmVjdC50b3AgPSByZWN0IyMudG9wXG4gIDsgbGVmdCA9IHJlY3QjIy5sZWZ0XG4gIDsgYm90dG9tID0gcmVjdCMjLmJvdHRvbVxuICA7IHJpZ2h0ID0gcmVjdCMjLnJpZ2h0XG4gIH1cbjs7XG5cbmxldCB2aWV3cG9ydF9yZWN0ICgpID1cbiAgeyBSZWN0LnRvcCA9IDA7IGxlZnQgPSAwOyBib3R0b20gPSBpbm5lckhlaWdodCAoKTsgcmlnaHQgPSBpbm5lcldpZHRoICgpIH1cbjs7XG5cbmxldCBjbGllbnRfcmVjdF9vZl9lbGVtZW50IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIDogZmxvYXQgUmVjdC50ID1cbiAgbGV0IGJvdW5kaW5nX3JlY3QgPSB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgZWx0IGluXG4gIHsgYm91bmRpbmdfcmVjdCB3aXRoXG4gICAgYm90dG9tID0gYm91bmRpbmdfcmVjdC50b3AgKy4gRmxvYXQub2ZfaW50IGVsdCMjLmNsaWVudEhlaWdodFxuICA7IHJpZ2h0ID0gYm91bmRpbmdfcmVjdC5sZWZ0ICsuIEZsb2F0Lm9mX2ludCBlbHQjIy5jbGllbnRXaWR0aFxuICB9XG47O1xuXG5sZXQgY2xpZW50X3JlY3QgKCkgPVxuICB7IFJlY3QudG9wID0gMFxuICA7IGxlZnQgPSAwXG4gIDsgYm90dG9tID0gRG9tX2h0bWwuZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQjIy5jbGllbnRIZWlnaHRcbiAgOyByaWdodCA9IERvbV9odG1sLmRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IyMuY2xpZW50V2lkdGhcbiAgfVxuOztcblxuXG4oKiogU2ltcGxlIHdyYXBwZXIgZm9yIHRoZSBiaW5hcnktc2VhcmNoIGZ1bmN0b3IgICAqKVxubGV0IGJpbmFyeV9zZWFyY2ggKHR5cGUgZWx0KSB+bGVuZ3RoIH5nZXQgfmNvbXBhcmUgbW9kZSB4ID1cbiAgbGV0IG1vZHVsZSBCcyA9XG4gICAgQmluYXJ5X3NlYXJjaGFibGUuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyBlbHQgPSBlbHRcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB1bml0XG5cbiAgICAgIGxldCBnZXQgKCkgbiA9IGdldCBuXG4gICAgICBsZXQgbGVuZ3RoICgpID0gbGVuZ3RoXG4gICAgZW5kKVxuICBpblxuICBCcy5iaW5hcnlfc2VhcmNoICgpIH5jb21wYXJlIG1vZGUgeFxuOztcblxuKCoqIFNlYXJjaGVzIHRocm91Z2ggZWxlbWVudHMgaW5kZXhlZCBmcm9tIFswXSB0byBbbGVuZ3RoIC0gMV0uICopXG5sZXQgZWxlbWVudF9zZWFyY2ggfmxlbmd0aCB+bnRoX2VsZW1lbnRfaWQgfnNlYXJjaF9ieSBtb2RlIGxheW91dCB4ID1cbiAgbGV0IGdldCA9XG4gICAgbGV0IG50aF9lbGVtZW50IG4gPVxuICAgICAgbGV0IGlkID0gbnRoX2VsZW1lbnRfaWQgbiBpblxuICAgICAgbWF0Y2ggRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWRfb3B0IGlkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJFbGVtZW50ICVzIG5vdCBmb3VuZFwiIGlkICgpXG4gICAgICB8IFNvbWUgZWx0IC0+IGVsdFxuICAgIGluXG4gICAgbGV0IGZpcnN0ID0gdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IChudGhfZWxlbWVudCAwKSBpblxuICAgIGxldCBsYXN0ID0gdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IChudGhfZWxlbWVudCAobGVuZ3RoIC0gMSkpIGluXG4gICAgKCogQ29tcHV0ZSB0aGUgbid0aCBlbGVtZW50IGluIGEgbm9ybWFsaXplZCB3YXksIGFzIGlmIHRoZSBpbmRleGluZyBhbHdheXMgZ29lcyBpblxuICAgICAgIGluY3JlYXNpbmcgb3JkZXIgZnJvbSB0b3AgdG9wIGJvdHRvbSAqKVxuICAgIGxldCBudGhfZWxlbWVudF9ub3JtYWxpemVkIG4gPVxuICAgICAgbGV0IGlzX2FzY2VuZGluZyA9XG4gICAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIHwgUm93cyAtPiBGbG9hdC4oIDw9ICkgZmlyc3QudG9wIGxhc3QudG9wXG4gICAgICAgIHwgQ29sdW1ucyAtPiBGbG9hdC4oIDw9ICkgZmlyc3QubGVmdCBsYXN0LmxlZnRcbiAgICAgIGluXG4gICAgICBudGhfZWxlbWVudCAoaWYgaXNfYXNjZW5kaW5nIHRoZW4gbiBlbHNlIGxlbmd0aCAtIG4gLSAxKVxuICAgIGluXG4gICAgZnVuIG4gLT4gc2VhcmNoX2J5ICh2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKG50aF9lbGVtZW50X25vcm1hbGl6ZWQgbikpXG4gIGluXG4gIGJpbmFyeV9zZWFyY2ggfmxlbmd0aCB+Z2V0IH5jb21wYXJlOkZsb2F0LmNvbXBhcmUgbW9kZSB4XG47O1xuXG5sZXQgZmluZF92aXNpYmxlX3JhbmdlIH5sZW5ndGggfm50aF9lbGVtZW50X2lkIGxheW91dCA9XG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCBlbGVtZW50X3NlYXJjaCA9IGVsZW1lbnRfc2VhcmNoIH5sZW5ndGggfm50aF9lbGVtZW50X2lkIGluXG4gICAgbGV0IHZpZXdwb3J0X3JlY3QgPSB2aWV3cG9ydF9yZWN0ICgpIGluXG4gICAgbGV0IGZpcnN0ID1cbiAgICAgIGxldCBzZWFyY2hfYnksIHRhcmdldCA9XG4gICAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIHwgUm93cyAtPiBSZWN0LmJvdHRvbSwgdmlld3BvcnRfcmVjdC50b3BcbiAgICAgICAgfCBDb2x1bW5zIC0+IFJlY3QucmlnaHQsIHZpZXdwb3J0X3JlY3QubGVmdFxuICAgICAgaW5cbiAgICAgIGVsZW1lbnRfc2VhcmNoIH5zZWFyY2hfYnkgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBsYXlvdXQgKEZsb2F0Lm9mX2ludCB0YXJnZXQpXG4gICAgaW5cbiAgICBsZXQgbGFzdCA9XG4gICAgICBsZXQgc2VhcmNoX2J5LCB0YXJnZXQgPVxuICAgICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICB8IFJvd3MgLT4gUmVjdC50b3AsIHZpZXdwb3J0X3JlY3QuYm90dG9tXG4gICAgICAgIHwgQ29sdW1ucyAtPiBSZWN0LmxlZnQsIHZpZXdwb3J0X3JlY3QucmlnaHRcbiAgICAgIGluXG4gICAgICBlbGVtZW50X3NlYXJjaCB+c2VhcmNoX2J5IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBsYXlvdXQgKEZsb2F0Lm9mX2ludCB0YXJnZXQpXG4gICAgaW5cbiAgICAoKiBCb3RoIFtmaXJzdF0gYW5kIFtsYXN0XSBuZWVkIHRvIGJlIFtTb21lXS4gT3RoZXJ3aXNlLCBmb3IgZXhhbXBsZSBpZiB0aGUgd2hvbGVcbiAgICAgICB0YWJsZSBpcyBiZWxvdyB2aWV3IHBvcnQsIHRoZW4gW2ZpcnN0XSB3aWxsIGJlIFtTb21lXSwgW2xhc3RdIHdpbGwgYmUgW05vbmVdICopXG4gICAgT3B0aW9uLmJvdGggZmlyc3QgbGFzdClcbjs7XG5cbmxldCBnZXRfc2Nyb2xsX2NvbnRhaW5lcl9qc19leHByID1cbiAgSnMuVW5zYWZlLnB1cmVfanNfZXhwclxuICAgIHtqc3xcbiAgICAgIChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICB2YXIgZG9jID0gZWxlbWVudC5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50O1xuICAgICAgICB2YXIgd2luID0gZG9jLmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbiAgICAgICAgdmFyIHJlID0gLyhhdXRvfHNjcm9sbCkvO1xuXG4gICAgICAgIGlmIChlbGVtZW50ID09PSBkb2MpIHtcbiAgICAgICAgICByZXR1cm4gZG9jO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGN1ciA9IGVsZW1lbnQucGFyZW50Tm9kZTtcblxuICAgICAgICB3aGlsZSAoY3VyLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICB2YXIgc3R5bGUgPSB3aW4uZ2V0Q29tcHV0ZWRTdHlsZShjdXIpO1xuXG4gICAgICAgICAgaWYgKHJlLnRlc3Qoc3R5bGUub3ZlcmZsb3cgKyBzdHlsZS5vdmVyZmxvd1kgKyBzdHlsZS5vdmVyZmxvd1gpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3VyO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1ciA9IGN1ci5wYXJlbnROb2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRvYztcbiAgICAgIH0pXG4gICAgfGpzfVxuOztcblxubGV0IGdldF9zY3JvbGxfY29udGFpbmVyIChlbCA6ICNEb20ubm9kZSBKcy50KSA6IERvbS5ub2RlIEpzLnQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgZ2V0X3Njcm9sbF9jb250YWluZXJfanNfZXhwciBbfCBKcy5VbnNhZmUuaW5qZWN0IGVsIHxdXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiBWaXJ0dWFsX2RvbVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBQZXJmb3JtYW5jZSA9IEphdmFzY3JpcHRfcHJvZmlsaW5nXG5cbmxldCB0aW1lcl9zdGFydCBzIH5kZWJ1ZyB+cHJvZmlsZSA9XG4gIGlmIHByb2ZpbGUgdGhlbiBQZXJmb3JtYW5jZS5NYW51YWwubWFyayAocyBeIFwiYmVmb3JlXCIpO1xuICBpZiBkZWJ1ZyB0aGVuIEZpcmVidWcuY29uc29sZSMjdGltZSAoSnMuc3RyaW5nIHMpXG47O1xuXG5sZXQgdGltZXJfc3RvcCBzIH5kZWJ1ZyB+cHJvZmlsZSA9XG4gIGlmIHByb2ZpbGVcbiAgdGhlbiAoXG4gICAgbGV0IGJlZm9yZSA9IHMgXiBcImJlZm9yZVwiIGluXG4gICAgbGV0IGFmdGVyID0gcyBeIFwiYWZ0ZXJcIiBpblxuICAgIFBlcmZvcm1hbmNlLk1hbnVhbC5tYXJrIGFmdGVyO1xuICAgIFBlcmZvcm1hbmNlLk1hbnVhbC5tZWFzdXJlIH5uYW1lOnMgfnN0YXJ0OmJlZm9yZSB+ZW5kXzphZnRlcik7XG4gIGlmIGRlYnVnIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyN0aW1lRW5kIChKcy5zdHJpbmcgcylcbjs7XG5cbmxldCBwcmludF9lcnJvcmYgZm10ID0ga3NwcmludGYgKGZ1biBzIC0+IEZpcmVidWcuY29uc29sZSMjZXJyb3IgKEpzLnN0cmluZyBzKSkgZm10XG5cbm1vZHVsZSBSZXF1ZXN0X2lkcyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG5cbiAgdmFsIHNldF9vbmNlX2V4blxuICAgIDogIHRcbiAgICAtPiBhbmltYXRpb25fZnJhbWVfaWQ6RG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWRcbiAgICAtPiBzZXRfdGltZW91dF9pZDpEb21faHRtbC50aW1lb3V0X2lkXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBjYW5jZWxsZWQgOiB0IC0+IGJvb2xcbiAgdmFsIGNhbmNlbCA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgaWRzID1cbiAgICB8IEVtcHR5XG4gICAgfCBDYW5jZWxsZWRcbiAgICB8IElkcyBvZlxuICAgICAgICB7IGFuaW1hdGlvbl9mcmFtZV9pZCA6IERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkXG4gICAgICAgIDsgc2V0X3RpbWVvdXRfaWQgOiBEb21faHRtbC50aW1lb3V0X2lkXG4gICAgICAgIH1cblxuICB0eXBlIHQgPSBpZHMgcmVmXG5cbiAgbGV0IGNyZWF0ZSAoKSA6IHQgPSByZWYgRW1wdHlcblxuICBsZXQgc2V0X29uY2VfZXhuICh0IDogdCkgfmFuaW1hdGlvbl9mcmFtZV9pZCB+c2V0X3RpbWVvdXRfaWQgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IENhbmNlbGxlZCAtPlxuICAgICAgKCogVGhpcyBzaG91bGQgbm90IGhhcHBlbiwgYnV0IGxldCdzIGJlIGRlZmVuc2l2ZS4gKilcbiAgICAgIERvbV9odG1sLndpbmRvdyMjY2FuY2VsQW5pbWF0aW9uRnJhbWUgYW5pbWF0aW9uX2ZyYW1lX2lkO1xuICAgICAgRG9tX2h0bWwud2luZG93IyNjbGVhclRpbWVvdXQgc2V0X3RpbWVvdXRfaWRcbiAgICB8IEVtcHR5IC0+IHQgOj0gSWRzIHsgYW5pbWF0aW9uX2ZyYW1lX2lkOyBzZXRfdGltZW91dF9pZCB9XG4gICAgfCBJZHMgXyAtPiBpbnZhbGlkX2FyZyBcInJlcXVlc3RfaWRzIGFscmVhZHkgc2V0XCJcbiAgOztcblxuICBsZXQgY2FuY2VsbGVkIHggPVxuICAgIG1hdGNoICF4IHdpdGhcbiAgICB8IENhbmNlbGxlZCAtPiB0cnVlXG4gICAgfCBFbXB0eSB8IElkcyBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGNhbmNlbCAodCA6IHQpID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBDYW5jZWxsZWQgLT4gKClcbiAgICB8IEVtcHR5IC0+IHQgOj0gQ2FuY2VsbGVkXG4gICAgfCBJZHMgeyBhbmltYXRpb25fZnJhbWVfaWQ7IHNldF90aW1lb3V0X2lkIH0gLT5cbiAgICAgIERvbV9odG1sLndpbmRvdyMjY2FuY2VsQW5pbWF0aW9uRnJhbWUgYW5pbWF0aW9uX2ZyYW1lX2lkO1xuICAgICAgRG9tX2h0bWwud2luZG93IyNjbGVhclRpbWVvdXQgc2V0X3RpbWVvdXRfaWQ7XG4gICAgICB0IDo9IENhbmNlbGxlZFxuICA7O1xuZW5kXG5cbigqKiBbcmVxdWVzdF9hbmltYXRpb25fZnJhbWVdIG5vdGlmaWVzIHRoZSBicm93c2VyIHRoYXQgeW91IHdvdWxkIGxpa2UgdG8gZG8gc29tZVxuICAgIGNvbXB1dGF0aW9uIGJlZm9yZSB0aGUgbmV4dCByZXBhaW50LiBCZWNhdXNlIHRoaXMgbmVlZHMgdG8gb2NjdXIgaW4gdGhlIHNhbWVcbiAgICBzeW5jaHJvbm91cyBjYWxsIChjYWxsZWQgYmVmb3JlIHRoZSBuZXh0IHJlcGFpbnQpLCByZXR1cm5pbmcgYSBEZWZlcnJlZC50IHdpbGwgbm90XG4gICAgd29yay4gSW5zdGVhZCwgeW91IHBhc3MgaW4gYSBqb2IgdG8gYmUgcnVuIGJlZm9yZSB0aGUgcmVwYWludC5cblxuICAgIE5vdGUgdGhhdCBpZiBbY2FsbGJhY2tdIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgd29yayBiZWZvcmUgZG9pbmcgRE9NIGNoYW5nZXMsIHRob3NlXG4gICAgY2hhbmdlcyB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVwYWludCBhbmQgd2lsbCBiZSBzYXZlZCB1bnRpbCB0aGUgZm9sbG93aW5nIG9uZS5cblxuICAgIFdoZW4gdGhlIHRhYiBpcyBpbiB0aGUgYmFja2dyb3VuZCwgdGhlIGJyb3dzZXJzIG5hdGl2ZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgZnVuY3Rpb25cbiAgICB3aWxsIG5ldmVyIGNhbGwgdGhlIGNhbGxiYWNrLCBzbyBpbiBvcmRlciB0byBjb250aW51ZSBwcm9jZXNzaW5nIGV2ZW50cywgd2Ugc2V0IGFuXG4gICAgYWx0ZXJuYXRlIHNldFRpbWVvdXQgYXQgMSBzZWNvbmQuXG4qKVxubGV0IHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGNhbGxiYWNrID1cbiAgKCogV2UgY2FwdHVyZSB0aGUgY3VycmVudCBjb250ZXh0IHRvIHVzZSBpdCBsYXRlciB3aGVuIGhhbmRsaW5nIGNhbGxiYWNrcyBmcm9tXG4gICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSwgc2luY2UgZXhjZXB0aW9ucyByYWlzZWQgdG8gdGhhdCB3b3VsZCBvdGhlcndpc2Ugbm90IGdvIHRocm91Z2hcbiAgICAgb3VyIG9yZGluYXJ5IEFzeW5jIG1vbml0b3IuICopXG4gIGxldCBjdXJyZW50X2NvbnRleHQgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkgaW5cbiAgbGV0IHJlcXVlc3RfaWRzID0gUmVxdWVzdF9pZHMuY3JlYXRlICgpIGluXG4gIGxldCBjYWxsYmFjayAoKSA9XG4gICAgaWYgUmVxdWVzdF9pZHMuY2FuY2VsbGVkIHJlcXVlc3RfaWRzXG4gICAgdGhlbiAoKVxuICAgIGVsc2UgKFxuICAgICAgUmVxdWVzdF9pZHMuY2FuY2VsIHJlcXVlc3RfaWRzO1xuICAgICAgbGV0IGNhbGxiYWNrX3Jlc3VsdCA9XG4gICAgICAgIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIud2l0aGluX2NvbnRleHQgY3VycmVudF9jb250ZXh0IGNhbGxiYWNrXG4gICAgICBpblxuICAgICAgaWdub3JlIChjYWxsYmFja19yZXN1bHQgOiAodW5pdCwgdW5pdCkgUmVzdWx0LnQpKVxuICBpblxuICBsZXQgYW5pbWF0aW9uX2ZyYW1lX2lkID1cbiAgICBsZXQgYW5pbWF0aW9uX2NhbGxiYWNrID0gSnMud3JhcF9jYWxsYmFjayAoZnVuIF8gLT4gY2FsbGJhY2sgKCkpIGluXG4gICAgRG9tX2h0bWwud2luZG93IyNyZXF1ZXN0QW5pbWF0aW9uRnJhbWUgYW5pbWF0aW9uX2NhbGxiYWNrXG4gIGluXG4gIGxldCBzZXRfdGltZW91dF9pZCA9XG4gICAgbGV0IHRpbWVvdXRfY2FsbGJhY2sgPSBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPiBjYWxsYmFjayAoKSkgaW5cbiAgICAoKiAxMDAwIG1zID0gMXM7ICBDaG9zZW4gYmVjYXVzZSBiYWNrZ3JvdW5kZWQgdGFuZ2xlIHNlbmRzIHJlcXVlc3RzXG4gICAgICAgYXQgYXBwcm94aW1hdGVseSB0aGlzIHJhdGUuICopXG4gICAgbGV0IHRpbWVvdXQgPSAxMDAwLjAgaW5cbiAgICBEb21faHRtbC53aW5kb3cjI3NldFRpbWVvdXQgdGltZW91dF9jYWxsYmFjayB0aW1lb3V0XG4gIGluXG4gIFJlcXVlc3RfaWRzLnNldF9vbmNlX2V4biByZXF1ZXN0X2lkcyB+YW5pbWF0aW9uX2ZyYW1lX2lkIH5zZXRfdGltZW91dF9pZFxuOztcblxuKCoqIFRoZSBKc19vZl9vY2FtbCB0eXBlIERvbV9odG1sLmVsZW1lbnQgZG9lc24ndCBoYXZlIHRoZSBjb3JyZWN0IG9wdGlvbnMgZm9yXG4gICAgdGhlaXIgYGZvY3VzYCBtZXRob2QuIENhc3QgdG8gdGhpcyBpbiBvcmRlciB0byB3b3JrIGFyb3VuZCB0aGlzIGJ1Zy4gICopXG50eXBlIGZvY3VzYWJsZSA9XG4gIDwgZm9jdXMgOiA8IHByZXZlbnRTY3JvbGwgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcCA+IEpzLnQgLT4gdW5pdCBKcy5tZXRoID5cblxubGV0IGFzX2ZvY3VzYWJsZSA6IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiBmb2N1c2FibGUgSnMudCA9IEpzLlVuc2FmZS5jb2VyY2VcblxuKCoqIFtWaXNpYmlsaXR5XSBlbmNhcHN1bGF0ZXMgdGhlIGRpcnR5aW5nIGFuZCBjbGVhbmluZyBvZiB0aGUgdmlzaWJpbGl0eSBmbGFnXG5cbiAgICBUaGUgdmlld3BvcnQgc3RhcnRzIG91dCBkaXJ0eS4gV2hlbiB3ZSBsb29rIGF0IHRoZSBET00gdG8gY29tcHV0ZSB3aGF0IGlzIHZpc2libGUgYnlcbiAgICBjYWxsaW5nIFt1cGRhdGVfdmlzaWJpbGl0eV0sIHRoZSB2aWV3cG9ydCB0aGVuIGJlY29tZXMgY2xlYW4uIEFueSB0aW1lIHRoZSB1c2VyXG4gICAgc2Nyb2xscyBvdXIgcGFnZSBvciByZXNpemVzIHRoZSB3aW5kb3csIHRoZSB2aWV3cG9ydCBiZWNvbWVzIGRpcnR5IGFnYWluLiBJZiB3ZSB1cGRhdGVcbiAgICB0aGUgRE9NLCB0aGUgdmlld3BvcnQgYmVjb21lcyBkaXJ0eSBhZ2FpbiBiZWNhdXNlIGEgRE9NIHVwZGF0ZSBjb3VsZCBjYXVzZSBhIHJlZmxvdyxcbiAgICBtb3ZpbmcgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIHZpc2libGUuXG5cbiAgICBXZSBoYXZlIGltcGxlbWVudGVkIHRoaXMgYXMgYSBmbGFnIGluc3RlYWQgb2YgcmVxdWlyaW5nIHRoZSB1c2VycyB0byBzZW5kIGFuIGFjdGlvbiBvblxuICAgIHNjcm9sbCBiZWNhdXNlIGl0IHdvdWxkIG1ha2Ugbm8gc2Vuc2UgdG8gY29tcHV0ZSB0aGUgdmlzaWJpbGl0eSBvbiB0aGUgdmlydHVhbC1kb21cbiAgICB3aGVuIHRoZSB2aXJ0dWFsLWRvbSBkb2VzIG5vdCBtYXRjaCB0aGUgYWN0dWFsIGRvbSAoYXMgaXQgaXMgaW4gdGhlIG1pZGRsZSBvZlxuICAgIFthcHBseV9hY3Rpb25zXSkuICopXG5tb2R1bGUgVmlzaWJpbGl0eSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlX2FzX2RpcnR5IDogdW5pdCAtPiB0XG4gIHZhbCBtYXJrX2NsZWFuIDogdCAtPiB1bml0XG4gIHZhbCBtYXJrX2RpcnR5IDogdCAtPiB1bml0XG4gIHZhbCBpc19kaXJ0eSA6IHQgLT4gYm9vbFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgbXV0YWJsZSB3aGVuX2RpcnR5IDogdW5pdCBJdmFyLnQgfVxuXG4gIGxldCBjcmVhdGVfYXNfZGlydHkgKCkgPSB7IHdoZW5fZGlydHkgPSBJdmFyLmNyZWF0ZV9mdWxsICgpIH1cbiAgbGV0IG1hcmtfZGlydHkgdCA9IEl2YXIuZmlsbF9pZl9lbXB0eSB0LndoZW5fZGlydHkgKClcbiAgbGV0IGlzX2RpcnR5IHQgPSBJdmFyLmlzX2Z1bGwgdC53aGVuX2RpcnR5XG4gIGxldCBtYXJrX2NsZWFuIHQgPSBpZiBpc19kaXJ0eSB0IHRoZW4gdC53aGVuX2RpcnR5IDwtIEl2YXIuY3JlYXRlICgpXG5lbmRcblxubW9kdWxlIExvZ2dpbmdfZmlsdGVyID0gc3RydWN0XG4gIG1vZHVsZSBTdHJpbmdfYmxhbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nIEJsYW5nLnQgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZV1cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHwgQWxsXG4gICAgfCBOb25lXG4gICAgfCBOYW1lZF9maWx0ZXJfYmxhbmcgb2YgU3RyaW5nX2JsYW5nLnRcbiAgICB8IEN1c3RvbV9maWx0ZXIgb2YgKFNleHAudCAtPiBib29sKVxuZW5kXG5cbm1vZHVsZSBEZWJ1Z19mbGFncyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbG9nZ2luZ19maWx0ZXIgOiB1bml0IC0+IExvZ2dpbmdfZmlsdGVyLnRcbiAgICA7IHNob3VsZF9wcm9maWxlIDogdW5pdCAtPiBib29sXG4gICAgOyBzaG91bGRfZGVidWcgOiB1bml0IC0+IGJvb2xcbiAgICB9XG5cbiAgdmFsIGluaXRfYXBwXG4gICAgOiAgYXBwX2lkOnN0cmluZ1xuICAgIC0+IGZpbHRlcl9uYW1lczpTdHJpbmcuU2V0LnRcbiAgICAtPiBkZWJ1Zzpib29sXG4gICAgLT4gc3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGxvZ2dpbmdfZmlsdGVyIDogdW5pdCAtPiBMb2dnaW5nX2ZpbHRlci50XG4gICAgOyBzaG91bGRfcHJvZmlsZSA6IHVuaXQgLT4gYm9vbFxuICAgIDsgc2hvdWxkX2RlYnVnIDogdW5pdCAtPiBib29sXG4gICAgfVxuXG4gIG1vZHVsZSBBcHBfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBmaWx0ZXJfbmFtZXMgOiBTdHJpbmcuU2V0LnRcbiAgICAgIDsgbG9nZ2luZ19maWx0ZXIgOiBMb2dnaW5nX2ZpbHRlci50IHJlZlxuICAgICAgOyBzaG91bGRfcHJvZmlsZSA6IGJvb2wgcmVmXG4gICAgICA7IHNob3VsZF9kZWJ1ZyA6IGJvb2wgcmVmXG4gICAgICB9XG5cbiAgICBsZXQgc2V0X2xvZ2dpbmdfZmlsdGVyIHQgfmxvZ2dpbmdfZmlsdGVyID0gdC5sb2dnaW5nX2ZpbHRlciA6PSBsb2dnaW5nX2ZpbHRlclxuICAgIGxldCBzZXRfc2hvdWxkX3Byb2ZpbGUgdCB+c2hvdWxkX3Byb2ZpbGUgPSB0LnNob3VsZF9wcm9maWxlIDo9IHNob3VsZF9wcm9maWxlXG4gICAgbGV0IHNldF9zaG91bGRfZGVidWcgdCB+c2hvdWxkX2RlYnVnID0gdC5zaG91bGRfZGVidWcgOj0gc2hvdWxkX2RlYnVnXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgZ2xvYmFsID0gb2JqZWN0XG4gICAgbWV0aG9kIHN0YXJ0TG9nZ2luZ0FsbCA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3RhcnRMb2dnaW5nIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgICAgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdGFydExvZ2dpbmdDdXN0b20gOlxuICAgICAgKChKcy5qc19zdHJpbmcgSnMudCAtPiBib29sIEpzLnQpIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0b3BMb2dnaW5nIDogKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0YXJ0UHJvZmlsaW5nIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdG9wUHJvZmlsaW5nIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdGFydERlYnVnZ2luZyA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3RvcERlYnVnZ2luZyA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc2F2ZUluY3JlbWVudGFsR3JhcGggOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuICBlbmRcblxuICBsZXQgZ2xvYmFsIDogZ2xvYmFsIEpzLnQgPSBKcy5VbnNhZmUuZ2xvYmFsXG4gIGxldCBnbG9iYWxfaXNfaW5pdGlhbGl6ZWQgPSByZWYgZmFsc2VcbiAgbGV0IGFwcF9zdGF0ZXMgOiBBcHBfc3RhdGUudCBTdHJpbmcuVGFibGUudCA9IFN0cmluZy5UYWJsZS5jcmVhdGUgKClcblxuICBsZXQgc2luZ2xlX2xpbmVfc3RyaW5nX2xpc3Qgc3RyaW5ncyA9XG4gICAgc3RyaW5ncyB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIlxcXCJcIiBeIHN0ciBeIFwiXFxcIlwiKSB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG4gIDs7XG5cbiAgbGV0IG11bHRpX2xpbmVfc3RyaW5nX2xpc3Qgc3RyaW5ncyA9XG4gICAgc3RyaW5ncyB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIiAgXCIgXiBzdHIpIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiXG4gIDs7XG5cbiAgbGV0IGluaXRfZ2xvYmFsIH5hcHBfZmlsdGVycyAoKSA9XG4gICAgbGV0IHdpdGhfYXBwX2lkX29wdCB1cGRhdGVfc3RhdGUgYXBwX2lkX29wdCA9XG4gICAgICBsZXQgYXBwX2lkX29wdCA9IEpzLk9wdC50b19vcHRpb24gYXBwX2lkX29wdCB8PiBPcHRpb24ubWFwIH5mOkpzLnRvX3N0cmluZyBpblxuICAgICAgbWF0Y2ggYXBwX2lkX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gSGFzaHRibC5pdGVyIGFwcF9zdGF0ZXMgfmY6dXBkYXRlX3N0YXRlXG4gICAgICB8IFNvbWUgYXBwX2lkIC0+XG4gICAgICAgIChtYXRjaCBIYXNodGJsLmZpbmQgYXBwX3N0YXRlcyBhcHBfaWQgd2l0aFxuICAgICAgICAgfCBTb21lIHN0YXRlIC0+IHVwZGF0ZV9zdGF0ZSBzdGF0ZVxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIHByaW50X2Vycm9yZlxuICAgICAgICAgICAgIFwiVW5hYmxlIHRvIGZpbmQgYXBwIHdpdGggaWQgXFxcIiVzXFxcIi4gVmFsaWQgYXBwIGlkcyBhcmU6ICVzXCJcbiAgICAgICAgICAgICBhcHBfaWRcbiAgICAgICAgICAgICAoSGFzaHRibC5rZXlzIGFwcF9zdGF0ZXMgfD4gc2luZ2xlX2xpbmVfc3RyaW5nX2xpc3QpKVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciBsb2dnaW5nX2ZpbHRlciA9XG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKEFwcF9zdGF0ZS5zZXRfbG9nZ2luZ19maWx0ZXIgfmxvZ2dpbmdfZmlsdGVyKVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9zaG91bGRfcHJvZmlsZSBzaG91bGRfcHJvZmlsZSA9XG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKEFwcF9zdGF0ZS5zZXRfc2hvdWxkX3Byb2ZpbGUgfnNob3VsZF9wcm9maWxlKVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9zaG91bGRfZGVidWcgc2hvdWxkX2RlYnVnID1cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoQXBwX3N0YXRlLnNldF9zaG91bGRfZGVidWcgfnNob3VsZF9kZWJ1ZylcbiAgICBpblxuICAgIGdsb2JhbCMjLnN0YXJ0TG9nZ2luZ0FsbCA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfbG9nZ2luZ19maWx0ZXIgQWxsKTtcbiAgICBnbG9iYWwjIy5zdGFydExvZ2dpbmdcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gYmxhbmdfc3RyIC0+XG4gICAgICBsZXQgYmxhbmdfc3RyID0gSnMudG9fc3RyaW5nIGJsYW5nX3N0ciBpblxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChmdW4gYXBwX3N0YXRlIC0+XG4gICAgICAgIGxldCBibGFuZyA9IEJsYW5nLnRfb2Zfc2V4cCBTdHJpbmcudF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyBibGFuZ19zdHIpIGluXG4gICAgICAgIGxldCBpbnZhbGlkX25hbWVzID1cbiAgICAgICAgICBCbGFuZy5mb2xkIGJsYW5nIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgfmY6KGZ1biBpbnZhbGlkX25hbWVzIG5hbWUgLT5cbiAgICAgICAgICAgIGlmIFNldC5tZW0gYXBwX3N0YXRlLmZpbHRlcl9uYW1lcyBuYW1lXG4gICAgICAgICAgICB0aGVuIGludmFsaWRfbmFtZXNcbiAgICAgICAgICAgIGVsc2UgU2V0LmFkZCBpbnZhbGlkX25hbWVzIG5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIGlmIFNldC5pc19lbXB0eSBpbnZhbGlkX25hbWVzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBBcHBfc3RhdGUuc2V0X2xvZ2dpbmdfZmlsdGVyXG4gICAgICAgICAgICBhcHBfc3RhdGVcbiAgICAgICAgICAgIH5sb2dnaW5nX2ZpbHRlcjooTmFtZWRfZmlsdGVyX2JsYW5nIGJsYW5nKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcHJpbnRfZXJyb3JmXG4gICAgICAgICAgICBcIlVuYWJsZSB0byBmaW5kIG5hbWVkIGZpbHRlcihzKTogJXMuIFZhbGlkIG5hbWVzIGFyZTpcXG4lc1wiXG4gICAgICAgICAgICAoU2V0LnRvX2xpc3QgaW52YWxpZF9uYW1lcyB8PiBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdClcbiAgICAgICAgICAgIChTZXQudG9fbGlzdCBhcHBfc3RhdGUuZmlsdGVyX25hbWVzIHw+IG11bHRpX2xpbmVfc3RyaW5nX2xpc3QpKSk7XG4gICAgZ2xvYmFsIyMuc3RhcnRMb2dnaW5nQ3VzdG9tXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGZpbHRlciAtPlxuICAgICAgbGV0IGZpbHRlciBhY3Rpb25fc2V4cCA9XG4gICAgICAgIGFjdGlvbl9zZXhwIHw+IFNleHAudG9fc3RyaW5nIHw+IEpzLnN0cmluZyB8PiBmaWx0ZXIgfD4gSnMudG9fYm9vbFxuICAgICAgaW5cbiAgICAgIHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciAoQ3VzdG9tX2ZpbHRlciBmaWx0ZXIpKTtcbiAgICBnbG9iYWwjIy5zdG9wTG9nZ2luZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfbG9nZ2luZ19maWx0ZXIgTm9uZSk7XG4gICAgZ2xvYmFsIyMuc3RhcnRQcm9maWxpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9wcm9maWxlIHRydWUpO1xuICAgIGdsb2JhbCMjLnN0b3BQcm9maWxpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9wcm9maWxlIGZhbHNlKTtcbiAgICBnbG9iYWwjIy5zdGFydERlYnVnZ2luZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX2RlYnVnIHRydWUpO1xuICAgIGdsb2JhbCMjLnN0b3BEZWJ1Z2dpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9kZWJ1ZyBmYWxzZSk7XG4gICAgZ2xvYmFsIyMuc2F2ZUluY3JlbWVudGFsR3JhcGhcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gKCkgLT5cbiAgICAgIGxldCBmaWxlbmFtZSA9IFwiY3VycmVudF9pbmNyX2RvbV9kb3RfZ3JhcGguZG90XCIgaW5cbiAgICAgIFVpX2luY3Iuc2F2ZV9kb3RfdG9fZmlsZSBmaWxlbmFtZTtcbiAgICAgIGxldCBjb250ZW50cyA9IEluX2NoYW5uZWwucmVhZF9hbGwgZmlsZW5hbWUgaW5cbiAgICAgIFZkb21fZmlsZV9kb3dubG9hZC5jcmVhdGUgfmZpbGVuYW1lIH5taW1ldHlwZTpcInBsYWluL3RleHRcIiB+Y29udGVudHNcbiAgICAgIHw+IFZkb21fZmlsZV9kb3dubG9hZC50cmlnZ2VyKTtcbiAgICBsZXQgZ3JvdXAgcyB+ZiA9XG4gICAgICBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwQ29sbGFwc2VkIChKcy5zdHJpbmcgcyk7XG4gICAgICBmICgpO1xuICAgICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cEVuZFxuICAgIGluXG4gICAgbGV0IGxvZyBzID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyBzKSBpblxuICAgIGdyb3VwIFwiSW5jcl9kb20gLyBCb25zYWkgQ29uc29sZVwiIH5mOihmdW4gKCkgLT5cbiAgICAgIGdyb3VwIFwiQWN0aW9uIExvZ2dpbmdcIiB+ZjooZnVuICgpIC0+XG4gICAgICAgIGxvZ1xuICAgICAgICAgIHt8TG9nZ2luZyBwcmludHMgYWN0aW9uIGluZm8gdG8gdGhlIGNvbnNvbGUuIEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIFRvIHN0YXJ0IGxvZ2dpbmcsIHR5cGUgb25lIG9mIHRoZSBmb2xsb3dpbmc6XG5zdGFydExvZ2dpbmdBbGwoW2FwcF9pZF0pIC0gbG9nIGFsbCBhY3Rpb25zXG5zdGFydExvZ2dpbmcoZmlsdGVyX25hbWUgWywgYXBwX2lkXSkgLSBmaWx0ZXIgYWN0aW9ucyB1c2luZyBhIHByZS1kZWZpbmVkIG5hbWVkIGZpbHRlciBbZmlsdGVyX25hbWVdXG5zdGFydExvZ2dpbmcoZmlsdGVyX25hbWVfYmxhbmcgWywgYXBwX2lkXSkgLSBmaWx0ZXIgYWN0aW9ucyB1c2luZyBhIGJsYW5nIG9mIG5hbWVkIGZpbHRlcnMgW2ZpbHRlcl9uYW1lX2JsYW5nXVxuc3RhcnRMb2dnaW5nQ3VzdG9tKGZpbHRlciBbLCBhcHBfaWRdKSAtIGZpbHRlciBhY3Rpb25zIHVzaW5nIGEgY3VzdG9tIGZ1bmN0aW9uIFtmaWx0ZXJdIGZyb20gYSBzdHJpbmcgKHRoZSBhY3Rpb24gc2V4cCkgdG8gYSBib29sXG5UbyBzdG9wIGxvZ2dpbmcsIHR5cGU6IHN0b3BMb2dnaW5nKFthcHBfaWRdKXx9KTtcbiAgICAgIGdyb3VwIFwiQWN0aW9uIFByb2ZpbGluZ1wiIH5mOihmdW4gKCkgLT5cbiAgICAgICAgbG9nXG4gICAgICAgICAge3xQcm9maWxpbmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC5cblRvIHN0YXJ0IHByb2ZpbGluZywgdHlwZTogc3RhcnRQcm9maWxpbmcoW2FwcF9pZF0pXG5UbyBzdG9wIHByb2ZpbGluZywgdHlwZTogc3RvcFByb2ZpbGluZyhbYXBwX2lkXSl8fSk7XG4gICAgICBncm91cCBcIkRlYnVnZ2luZ1wiIH5mOihmdW4gKCkgLT5cbiAgICAgICAgbG9nXG4gICAgICAgICAge3xEZWJ1Z2dpbmcgcHJpbnRzIHRpbWluZyBpbmZvIHRvIHRoZSBjb25zb2xlLiBJdCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkIGJ5IHRoZSBhcHAuXG5UbyBzdGFydCBkZWJ1Z2dpbmcsIHR5cGU6IHN0YXJ0RGVidWdnaW5nKFthcHBfaWRdKVxuVG8gc3RvcCBkZWJ1Z2dpbmcsIHR5cGU6IHN0b3BEZWJ1Z2dpbmcoW2FwcF9pZF0pXG5cblthcHBfaWRdIGlzIGVxdWFsIHRvIHRoZSBpZCBvZiB0aGUgZWxlbWVudCB0aGF0IHRoZSBpbmNyLWRvbSBhcHAgaXMgYm91bmQgdG8uIElmIHRoZSBwYWdlIG9ubHkgaGFzIG9uZSBhcHAgb3IgeW91IHdhbnQgdG8gYXBwbHkgdGhlIGFjdGlvbiB0byBhbGwgYXBwcywgeW91IGNhbiBwYXNzIGluIFtudWxsXSAob3IgZm9yIHNpbmdsZS1hcmd1bWVudCBmdW5jdGlvbnMsIG9taXQgaXQgYWx0b2dldGhlcikufH0pO1xuICAgICAgbG9nIGFwcF9maWx0ZXJzKVxuICA7O1xuXG4gIGxldCBpbml0X2FwcCB+YXBwX2lkIH5maWx0ZXJfbmFtZXMgfmRlYnVnIH5zdG9wID1cbiAgICBsZXQgYXBwX2luaXRfbWVzc2FnZSA9XG4gICAgICBzcHJpbnRmXG4gICAgICAgIHt8QXZhaWxhYmxlIGxvZ2dpbmcgZmlsdGVycyBmb3IgXCIlc1wiOlxuJXN8fVxuICAgICAgICBhcHBfaWRcbiAgICAgICAgKFNldC50b19saXN0IGZpbHRlcl9uYW1lcyB8PiBtdWx0aV9saW5lX3N0cmluZ19saXN0KVxuICAgIGluXG4gICAgaWYgbm90ICFnbG9iYWxfaXNfaW5pdGlhbGl6ZWRcbiAgICB0aGVuIChcbiAgICAgIGluaXRfZ2xvYmFsIH5hcHBfZmlsdGVyczphcHBfaW5pdF9tZXNzYWdlICgpO1xuICAgICAgZ2xvYmFsX2lzX2luaXRpYWxpemVkIDo9IHRydWUpXG4gICAgZWxzZSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIGFwcF9pbml0X21lc3NhZ2UpO1xuICAgIGxldCBsb2dnaW5nX2ZpbHRlciA9IHJlZiBMb2dnaW5nX2ZpbHRlci5Ob25lIGluXG4gICAgbGV0IHNob3VsZF9wcm9maWxlID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHNob3VsZF9kZWJ1ZyA9IHJlZiBkZWJ1ZyBpblxuICAgIEhhc2h0Ymwuc2V0XG4gICAgICBhcHBfc3RhdGVzXG4gICAgICB+a2V5OmFwcF9pZFxuICAgICAgfmRhdGE6eyBmaWx0ZXJfbmFtZXM7IGxvZ2dpbmdfZmlsdGVyOyBzaG91bGRfcHJvZmlsZTsgc2hvdWxkX2RlYnVnIH07XG4gICAgdXBvbiBzdG9wIChmdW4gKCkgLT4gSGFzaHRibC5yZW1vdmUgYXBwX3N0YXRlcyBhcHBfaWQpO1xuICAgIHsgbG9nZ2luZ19maWx0ZXIgPSAoZnVuICgpIC0+ICFsb2dnaW5nX2ZpbHRlcilcbiAgICA7IHNob3VsZF9wcm9maWxlID0gKGZ1biAoKSAtPiAhc2hvdWxkX3Byb2ZpbGUpXG4gICAgOyBzaG91bGRfZGVidWcgPSAoZnVuICgpIC0+ICFzaG91bGRfZGVidWcpXG4gICAgfVxuICA7O1xuZW5kXG5cbigqIEFkZHMgdGhlIG5lY2Vzc2FyeSBhdHRyaWJ1dGUgdG8gdGhlIHJvb3Qgbm9kZSBzbyB0aGF0IGl0IGNhbiBpbnRlcmNlcHRcbiAgIGtleWJvYXJkIGV2ZW50cy5cbiAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvdGFiaW5kZXggKilcbmxldCBvdmVycmlkZV9yb290X2VsZW1lbnQgcm9vdCA9XG4gIGxldCBvcGVuIFZkb20gaW5cbiAgbGV0IHNob3VsZF9hZGRfZm9jdXNfbW9kaWZpZXJzIGVsZW1lbnQgPVxuICAgIGVsZW1lbnQgfD4gTm9kZS5FbGVtZW50LmF0dHJzIHw+IEF0dHIuRXhwZXJ0LmNvbnRhaW5zX25hbWUgXCJkaXNhYmxlX3RhYl9pbmRleFwiIHw+IG5vdFxuICBpblxuICBtYXRjaCAocm9vdCA6IE5vZGUudCkgd2l0aFxuICB8IEVsZW1lbnQgZWxlbWVudCB3aGVuIHNob3VsZF9hZGRfZm9jdXNfbW9kaWZpZXJzIGVsZW1lbnQgLT5cbiAgICBsZXQgYWRkX25ld19hdHRycyBhdHRycyA9XG4gICAgICBWZG9tLkF0dHIuKHN0eWxlIChDc3NfZ2VuLm91dGxpbmUgfnN0eWxlOmBOb25lICgpKSBAIHRhYmluZGV4IDAgQCBhdHRycylcbiAgICBpblxuICAgIGVsZW1lbnQgfD4gTm9kZS5FbGVtZW50Lm1hcF9hdHRycyB+ZjphZGRfbmV3X2F0dHJzIHw+IE5vZGUuRWxlbWVudFxuICB8IF8gLT4gcm9vdFxuOztcblxubGV0IHJlYyBnZXRfdGFnX25hbWUgKG5vZGUgOiBWZG9tLk5vZGUudCkgPVxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBFbGVtZW50IGUgLT4gU29tZSAoVmRvbS5Ob2RlLkVsZW1lbnQudGFnIGUpXG4gIHwgTGF6eSB7IHQ7IF8gfSAtPiBnZXRfdGFnX25hbWUgKExhenkuZm9yY2UgdClcbiAgfCBOb25lIHwgVGV4dCBfIHwgV2lkZ2V0IF8gLT4gTm9uZVxuOztcblxubGV0IHN0YXJ0X2JvbnNhaVxuICAgICAgKHR5cGUgbW9kZWwgYWN0aW9uKVxuICAgICAgPyhkZWJ1ZyA9IGZhbHNlKVxuICAgICAgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpXG4gICAgICA/KG5hbWVkX2xvZ2dpbmdfZmlsdGVycyA9IFtdKVxuICAgICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkXG4gICAgICB+aW5pdGlhbF9tb2RlbFxuICAgICAgKG1vZHVsZSBBcHAgOiBBcHBfaW50Zi5Qcml2YXRlLlNfZm9yX2JvbnNhaVxuICAgICAgICB3aXRoIHR5cGUgTW9kZWwudCA9IG1vZGVsXG4gICAgICAgICBhbmQgdHlwZSBBY3Rpb24udCA9IGFjdGlvbilcbiAgPVxuICAoKiBUaGlzIGlzIGlkZW1wb3RlbnQgYW5kIHNvIGZpbmUgdG8gZG8uICopXG4gIEFzeW5jX2pzLmluaXQgKCk7XG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGxldCViaW5kICgpID0gQXN5bmNfanMuZG9jdW1lbnRfbG9hZGVkICgpIGluXG4gICAgIGxldCBtb2RlbF92ID0gSW5jci5WYXIuY3JlYXRlIGluaXRpYWxfbW9kZWwgaW5cbiAgICAgbGV0IG1vZGVsID0gSW5jci5WYXIud2F0Y2ggbW9kZWxfdiBpblxuICAgICBsZXQgbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXlfdiA9IEluY3IuVmFyLmNyZWF0ZSBpbml0aWFsX21vZGVsIGluXG4gICAgIGxldCBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSA9IEluY3IuVmFyLndhdGNoIG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YgaW5cbiAgICAgbGV0IGN1dG9mZiA9XG4gICAgICAgSW5jci5DdXRvZmYuY3JlYXRlIChmdW4gfm9sZF92YWx1ZSB+bmV3X3ZhbHVlIC0+XG4gICAgICAgICBBcHAuTW9kZWwuY3V0b2ZmIG9sZF92YWx1ZSBuZXdfdmFsdWUpXG4gICAgIGluXG4gICAgIEluY3Iuc2V0X2N1dG9mZiBtb2RlbCBjdXRvZmY7XG4gICAgIEluY3Iuc2V0X2N1dG9mZiBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSBjdXRvZmY7XG4gICAgIGxldCBhY3Rpb25fcXVldWUgPSBEZXF1ZS5jcmVhdGUgKCkgaW5cbiAgICAgbGV0IG1vZHVsZSBFdmVudCA9XG4gICAgICAgVmRvbS5FZmZlY3QuRGVmaW5lIChzdHJ1Y3RcbiAgICAgICAgIG1vZHVsZSBBY3Rpb24gPSBBcHAuQWN0aW9uXG5cbiAgICAgICAgIGxldCBoYW5kbGUgYWN0aW9uID0gRGVxdWUuZW5xdWV1ZV9iYWNrIGFjdGlvbl9xdWV1ZSBhY3Rpb25cbiAgICAgICBlbmQpXG4gICAgIGluXG4gICAgIGxldCB2aXNpYmlsaXR5ID0gVmlzaWJpbGl0eS5jcmVhdGVfYXNfZGlydHkgKCkgaW5cbiAgICAgbGV0IHZpZXdwb3J0X2NoYW5nZWQgKCkgPSBWaXNpYmlsaXR5Lm1hcmtfZGlydHkgdmlzaWJpbGl0eSBpblxuICAgICAoKiBUaGlzIHJlZ2lzdGVycyB0aGUgW3ZpZXdwb3J0X2NoYW5nZWRdIGhhbmRsZXIgd2l0aCBWaXJ0dWFsX2RvbS4gSWYgZXZlbnQgaGFuZGxlcnNcbiAgICAgICAgdXNlIHRoZSBbVmRvbS5FZmZlY3QuVmlld3BvcnRfY2hhbmdlZF0gZXZlbnQsIHdlIGFyZSBub3RpZmllZC4gKilcbiAgICAgbGV0IG1vZHVsZSBfID1cbiAgICAgICBWZG9tLkVmZmVjdC5EZWZpbmVfdmlzaWJpbGl0eSAoc3RydWN0XG4gICAgICAgICBsZXQgaGFuZGxlID0gdmlld3BvcnRfY2hhbmdlZFxuICAgICAgIGVuZClcbiAgICAgaW5cbiAgICAgbGV0IGdldF92aWV3LCBnZXRfYXBwbHlfYWN0aW9uLCBnZXRfdXBkYXRlX3Zpc2liaWxpdHksIGdldF9vbl9kaXNwbGF5ID1cbiAgICAgICBsZXQgb2JzID1cbiAgICAgICAgIEluY3Iub2JzZXJ2ZVxuICAgICAgICAgICAoQXBwLmNyZWF0ZSBtb2RlbCB+b2xkX21vZGVsOm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5IH5pbmplY3Q6RXZlbnQuaW5qZWN0KVxuICAgICAgIGluXG4gICAgICAgbGV0IGZldGNoIChmIDogXyBBcHBfaW50Zi5Qcml2YXRlLnNuYXBzaG90IC0+IF8pICgpID1cbiAgICAgICAgIGYgKEluY3IuT2JzZXJ2ZXIudmFsdWVfZXhuIG9icylcbiAgICAgICBpblxuICAgICAgICggZmV0Y2ggKGZ1biB7IHZpZXc7IF8gfSAtPiB2aWV3KVxuICAgICAgICwgZmV0Y2ggKGZ1biB7IGFwcGx5X2FjdGlvbjsgXyB9IC0+IGFwcGx5X2FjdGlvbilcbiAgICAgICAsIGZldGNoIChmdW4geyB1cGRhdGVfdmlzaWJpbGl0eTsgXyB9IC0+IHVwZGF0ZV92aXNpYmlsaXR5KVxuICAgICAgICwgZmV0Y2ggKGZ1biB7IG9uX2Rpc3BsYXk7IF8gfSAtPiBvbl9kaXNwbGF5KSApXG4gICAgIGluXG4gICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICBsZXQgbmFtZWRfbG9nZ2luZ19maWx0ZXJzID1cbiAgICAgICAoXCJhbGxcIiwgRm4uY29uc3QgdHJ1ZSkgOjogKFwibm9uZVwiLCBGbi5jb25zdCBmYWxzZSkgOjogbmFtZWRfbG9nZ2luZ19maWx0ZXJzXG4gICAgICAgfD4gU3RyaW5nLlRhYmxlLm9mX2FsaXN0X2V4blxuICAgICBpblxuICAgICBsZXQgeyBEZWJ1Z19mbGFncy5sb2dnaW5nX2ZpbHRlcjsgc2hvdWxkX3Byb2ZpbGU7IHNob3VsZF9kZWJ1ZyB9ID1cbiAgICAgICBsZXQgZmlsdGVyX25hbWVzID0gSGFzaHRibC5rZXlzIG5hbWVkX2xvZ2dpbmdfZmlsdGVycyB8PiBTdHJpbmcuU2V0Lm9mX2xpc3QgaW5cbiAgICAgICBEZWJ1Z19mbGFncy5pbml0X2FwcCB+YXBwX2lkOmJpbmRfdG9fZWxlbWVudF93aXRoX2lkIH5maWx0ZXJfbmFtZXMgfmRlYnVnIH5zdG9wXG4gICAgIGluXG4gICAgIGxldCBodG1sID0gZ2V0X3ZpZXcgKCkgaW5cbiAgICAgbGV0IGh0bWxfZG9tID0gVmRvbS5Ob2RlLnRvX2RvbSBodG1sIGluXG4gICAgIGxldCBlbGVtID0gRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWRfZXhuIGJpbmRfdG9fZWxlbWVudF93aXRoX2lkIGluXG4gICAgIGxldCBwYXJlbnQgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlOlslaGVyZV0gKEpzLk9wdC50b19vcHRpb24gZWxlbSMjLnBhcmVudE5vZGUpIGluXG4gICAgIERvbS5yZXBsYWNlQ2hpbGQgcGFyZW50IGh0bWxfZG9tIGVsZW07XG4gICAgICgqIHdlIG1ha2Ugc3VyZSB0byBjYWxsIFt2aWV3cG9ydF9jaGFuZ2VkXSB3aGVuZXZlciB0aGUgd2luZG93IHJlc2l6ZXMgb3IgdGhlIHNjcm9sbFxuICAgICAgICBjb250YWluZXIgaW4gd2hpY2ggb3VyIEhUTUwgaXMgbG9jYXRlZCBpcyBzY3JvbGxlZC4gKilcbiAgICAgbGV0IGNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCBldmVudF9uYW1lIHdoZXJlID1cbiAgICAgICBpZ25vcmVcbiAgICAgICAgIChEb20uYWRkRXZlbnRMaXN0ZW5lclxuICAgICAgICAgICAgd2hlcmVcbiAgICAgICAgICAgIChEb20uRXZlbnQubWFrZSBldmVudF9uYW1lKVxuICAgICAgICAgICAgKERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgdmlld3BvcnRfY2hhbmdlZCAoKTtcbiAgICAgICAgICAgICAgIEpzLl90cnVlKSlcbiAgICAgICAgICAgIEpzLl9mYWxzZVxuICAgICAgICAgIDogRG9tLmV2ZW50X2xpc3RlbmVyX2lkKVxuICAgICBpblxuICAgICBjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQgXCJzY3JvbGxcIiAoSnNfbWlzYy5nZXRfc2Nyb2xsX2NvbnRhaW5lciBodG1sX2RvbSk7XG4gICAgIGNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCBcInJlc2l6ZVwiIERvbV9odG1sLndpbmRvdztcbiAgICAgbGV0JWJpbmQgc3RhdGUgPVxuICAgICAgIEFwcC5vbl9zdGFydHVwXG4gICAgICAgICB+c2NoZWR1bGVfYWN0aW9uOihmdW4gYSAtPiBVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZSAoRXZlbnQuaW5qZWN0IGEpKVxuICAgICAgICAgKEluY3IuVmFyLnZhbHVlIG1vZGVsX3YpXG4gICAgIGluXG4gICAgIGxldCBwcmV2X2h0bWwgPSByZWYgaHRtbCBpblxuICAgICBsZXQgcHJldl9lbHQgPSByZWYgaHRtbF9kb20gaW5cbiAgICAgbGV0IHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpID1cbiAgICAgICBsZXQgZWxlbWVudCA9ICFwcmV2X2VsdCBpblxuICAgICAgICgqIElmIHRoZSBlbGVtZW50IHRvIGZvY3VzIGlzIGFuIGVsZW1lbnQsIGNhc3QgaXQgaW50byB0aGVcbiAgICAgICAgICBtb3JlIHBlcm1pc3NpdmUgXCJmb2N1c2FibGVcIiB0eXBlIGRlZmluZWQgYXQgdGhlIHRvcCBvZlxuICAgICAgICAgIHRoaXMgZmlsZSwgYW5kIHRoZW4gZm9jdXMgdGhhdC4gKilcbiAgICAgICBEb21faHRtbC5Db2VyY2VUby5lbGVtZW50IGVsZW1lbnRcbiAgICAgICB8PiBKcy5PcHQudG9fb3B0aW9uXG4gICAgICAgfD4gT3B0aW9uLm1hcCB+Zjphc19mb2N1c2FibGVcbiAgICAgICB8PiBPcHRpb24uaXRlciB+ZjooZnVuIGVsZW1lbnQgLT5cbiAgICAgICAgIGVsZW1lbnQjI2ZvY3VzXG4gICAgICAgICAgIChvYmplY3QlanNcbiAgICAgICAgICAgICB2YWwgcHJldmVudFNjcm9sbCA9IEpzLl90cnVlXG4gICAgICAgICAgIGVuZCkpXG4gICAgIGluXG4gICAgIGxldCB0aW1lcl9zdGFydCBzID1cbiAgICAgICB0aW1lcl9zdGFydCBzIH5kZWJ1Zzooc2hvdWxkX2RlYnVnICgpKSB+cHJvZmlsZTooc2hvdWxkX3Byb2ZpbGUgKCkpXG4gICAgIGluXG4gICAgIGxldCB0aW1lcl9zdG9wIHMgPVxuICAgICAgIHRpbWVyX3N0b3AgcyB+ZGVidWc6KHNob3VsZF9kZWJ1ZyAoKSkgfnByb2ZpbGU6KHNob3VsZF9wcm9maWxlICgpKVxuICAgICBpblxuICAgICAoKlxuICAgICAgICBUYWtlIGFjdGlvbiBvbiBhbnkgYmx1ciBldmVudCwgcmVmb2N1c2luZyB0byB0aGUgcm9vdCBub2RlIGlmIHRoZSByZWxhdGVkVGFyZ2V0IGlzXG4gICAgICAgIG51bGwgb3IgdW5kZWZpbmVkLCBzaWduaWZ5aW5nIHRoYXQgZm9jdXMgd2FzIGxvc3QgYW5kIHdvdWxkIG90aGVyd2lzZSBiZSByZXNldCB0b1xuICAgICAgICB0aGUgYm9keSBub2RlLlxuXG4gICAgICAgIFRoZSBKcy5fdHJ1ZSBwYXJhbWV0ZXIgcHJvdmlkZWQgdG8gRG9tLmFkZEV2ZW50TGlzdGVuZXIgaXMgdGhlIHVzZUNhcHR1cmVcbiAgICAgICAgcGFyYW1ldGVyIGRlc2NyaWJlZCBoZXJlOlxuICAgICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRUYXJnZXQvYWRkRXZlbnRMaXN0ZW5lclxuICAgICAqKVxuICAgICBpZ25vcmVcbiAgICAgQEAgRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiAgICAgICAgICBEb21faHRtbC53aW5kb3dcbiAgICAgICAgICBEb21faHRtbC5FdmVudC5ibHVyXG4gICAgICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBlIC0+XG4gICAgICAgICAgICAgKCogW0pzLlVuc2FmZS4qXSBpcyBsaWtlIFtPYmoubWFnaWNdLiBXZSBzaG91bGQgYmUgZXhwbGljaXQgYWJvdXQgd2hhdCB3ZVxuICAgICAgICAgICAgICAgIGV4cGVjdC4gKilcbiAgICAgICAgICAgICBsZXQgZVxuICAgICAgICAgICAgICAgOiA8IHJlbGF0ZWRUYXJnZXQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3AgPiBKcy50XG4gICAgICAgICAgICAgICA9XG4gICAgICAgICAgICAgICBKcy5VbnNhZmUuY29lcmNlIGVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCByZWxhdGVkX3RhcmdldCA9IGUjIy5yZWxhdGVkVGFyZ2V0IGluXG4gICAgICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCByZWxhdGVkX3RhcmdldCkgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKTtcbiAgICAgICAgICAgICBKcy5fdHJ1ZSkpXG4gICAgICAgICAgSnMuX3RydWU7XG4gICAgIGxldCB1cGRhdGVfdmlzaWJpbGl0eSAoKSA9XG4gICAgICAgVmlzaWJpbGl0eS5tYXJrX2NsZWFuIHZpc2liaWxpdHk7XG4gICAgICAgbGV0IG5ld19tb2RlbCA9XG4gICAgICAgICAoZ2V0X3VwZGF0ZV92aXNpYmlsaXR5ICgpKVxuICAgICAgICAgICB+c2NoZWR1bGVfZXZlbnQ6VWlfZWZmZWN0LkV4cGVydC5oYW5kbGVcbiAgICAgICAgICAgKEluY3IuVmFyLmxhdGVzdF92YWx1ZSBtb2RlbF92KVxuICAgICAgIGluXG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX3YgbmV3X21vZGVsO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwic3RhYmlsaXplXCI7XG4gICAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcInN0YWJpbGl6ZVwiXG4gICAgIGluXG4gICAgIGxldCBtYXliZV9sb2dfYWN0aW9uID1cbiAgICAgICBsZXQgc2FmZV9maWx0ZXIgfm5hbWUgZmlsdGVyIGFjdGlvbiA9XG4gICAgICAgICBtYXRjaCBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGZpbHRlciBhY3Rpb24pIHdpdGhcbiAgICAgICAgIHwgT2sgc2hvdWxkX2xvZyAtPiBzaG91bGRfbG9nXG4gICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICBwcmludF9lcnJvcmYgIVwiRXhjZXB0aW9uIHJhaXNlZCBieSAlczogJXtFcnJvciNodW19XCIgbmFtZSBlcnI7XG4gICAgICAgICAgIGZhbHNlXG4gICAgICAgaW5cbiAgICAgICBsZXQgbmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlID1cbiAgICAgICAgIENvcmUuTWVtby5vZl9jb21wYXJhYmxlXG4gICAgICAgICAgIChtb2R1bGUgTG9nZ2luZ19maWx0ZXIuU3RyaW5nX2JsYW5nKVxuICAgICAgICAgICAoZnVuIGJsYW5nIC0+XG4gICAgICAgICAgICAgIGxldCBmaWx0ZXIgPSBIYXNodGJsLmZpbmRfZXhuIG5hbWVkX2xvZ2dpbmdfZmlsdGVycyBpblxuICAgICAgICAgICAgICBzYWZlX2ZpbHRlclxuICAgICAgICAgICAgICAgIH5uYW1lOihzcHJpbnRmICFcIm5hbWVkIGZpbHRlciBibGFuZyBcXFwiJXtzZXhwOnN0cmluZyBCbGFuZy50fVxcXCJcIiBibGFuZylcbiAgICAgICAgICAgICAgICAobWF0Y2ggYmxhbmcgd2l0aFxuICAgICAgICAgICAgICAgICB8IEJhc2UgbmFtZSAtPiBmaWx0ZXIgbmFtZVxuICAgICAgICAgICAgICAgICB8IF8gLT4gZnVuIGFjdGlvbiAtPiBCbGFuZy5ldmFsIGJsYW5nIChmdW4gbmFtZSAtPiBmaWx0ZXIgbmFtZSBhY3Rpb24pKSlcbiAgICAgICBpblxuICAgICAgIGZ1biBhY3Rpb24gLT5cbiAgICAgICAgIGxldCBzaG91bGRfbG9nX2FjdGlvbiA9XG4gICAgICAgICAgIG1hdGNoIGxvZ2dpbmdfZmlsdGVyICgpIHdpdGhcbiAgICAgICAgICAgfCBBbGwgLT4gdHJ1ZVxuICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgfCBOYW1lZF9maWx0ZXJfYmxhbmcgYmxhbmcgLT4gbmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlIGJsYW5nIGFjdGlvblxuICAgICAgICAgICB8IEN1c3RvbV9maWx0ZXIgZmlsdGVyIC0+XG4gICAgICAgICAgICAgc2FmZV9maWx0ZXJcbiAgICAgICAgICAgICAgIH5uYW1lOlwiY3VzdG9tIGZpbHRlclwiXG4gICAgICAgICAgICAgICAoZnVuIGFjdGlvbiAtPiBmaWx0ZXIgKEFwcC5BY3Rpb24uc2V4cF9vZl90IGFjdGlvbikpXG4gICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgIGluXG4gICAgICAgICBpZiBzaG91bGRfbG9nX2FjdGlvblxuICAgICAgICAgdGhlbiBBc3luY19qcy5sb2dfc19hc19zdHJpbmcgWyVtZXNzYWdlIFwiQWN0aW9uXCIgKGFjdGlvbiA6IEFwcC5BY3Rpb24udCldXG4gICAgIGluXG4gICAgIGxldCBhcHBseV9hY3Rpb24gYWN0aW9uID1cbiAgICAgICBtYXliZV9sb2dfYWN0aW9uIGFjdGlvbjtcbiAgICAgICBpZiBBcHAuYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24gYWN0aW9uXG4gICAgICAgdGhlbiAoXG4gICAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZS1mb3ItYWN0aW9uXCI7XG4gICAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemUtZm9yLWFjdGlvblwiKVxuICAgICAgIGVsc2UgaWYgc2hvdWxkX2RlYnVnICgpXG4gICAgICAgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnIChKcy5zdHJpbmcgXCJhY3Rpb24gYXBwbGllZCB3aXRob3V0IHN0YWJpbGl6aW5nXCIpO1xuICAgICAgIGxldCBuZXdfbW9kZWwgPVxuICAgICAgICAgKGdldF9hcHBseV9hY3Rpb24gKCkpXG4gICAgICAgICAgIHN0YXRlXG4gICAgICAgICAgIH5zY2hlZHVsZV9ldmVudDpVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZVxuICAgICAgICAgICAoSW5jci5WYXIubGF0ZXN0X3ZhbHVlIG1vZGVsX3YpXG4gICAgICAgICAgIGFjdGlvblxuICAgICAgIGluXG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX3YgbmV3X21vZGVsXG4gICAgIGluXG4gICAgIGxldCByZWMgYXBwbHlfYWN0aW9ucyAoKSA9XG4gICAgICAgbWF0Y2ggRGVxdWUuZGVxdWV1ZV9mcm9udCBhY3Rpb25fcXVldWUgd2l0aFxuICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgIHwgU29tZSBhY3Rpb24gLT5cbiAgICAgICAgIGFwcGx5X2FjdGlvbiBhY3Rpb247XG4gICAgICAgICBhcHBseV9hY3Rpb25zICgpXG4gICAgIGluXG4gICAgIGxldCBwZXJmb3JtX3VwZGF0ZSAoKSA9XG4gICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemVcIjtcbiAgICAgICAoKiBUaGUgY2xvY2sgaXMgc2V0IG9ubHkgb25jZSBwZXIgY2FsbCB0byBwZXJmb3JtX3VwZGF0ZSwgc28gdGhhdCBhbGwgYWN0aW9ucyB0aGF0XG4gICAgICAgICAgb2NjdXIgYmVmb3JlIGVhY2ggZGlzcGxheSB1cGRhdGUgb2NjdXIgXCJhdCB0aGUgc2FtZSB0aW1lLlwiICopXG4gICAgICAgbGV0IG5vdyA9XG4gICAgICAgICBsZXQgZGF0ZSA9IG5ldyVqcyBKcy5kYXRlX25vdyBpblxuICAgICAgICAgVGltZV9ucy5TcGFuLm9mX21zIGRhdGUjI2dldFRpbWUgfD4gVGltZV9ucy5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgICAgaW5cbiAgICAgICBJbmNyLkNsb2NrLmFkdmFuY2VfY2xvY2sgSW5jci5jbG9jayB+dG9fOm5vdztcbiAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJ0b3RhbFwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwidXBkYXRlIHZpc2liaWxpdHlcIjtcbiAgICAgICBpZiBWaXNpYmlsaXR5LmlzX2RpcnR5IHZpc2liaWxpdHkgdGhlbiB1cGRhdGVfdmlzaWJpbGl0eSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwidXBkYXRlIHZpc2liaWxpdHlcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcImFwcGx5IGFjdGlvbnNcIjtcbiAgICAgICBhcHBseV9hY3Rpb25zICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJhcHBseSBhY3Rpb25zXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemVcIjtcbiAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplXCI7XG4gICAgICAgbGV0IGh0bWwgPSBnZXRfdmlldyAoKSBpblxuICAgICAgIGxldCBodG1sID0gb3ZlcnJpZGVfcm9vdF9lbGVtZW50IGh0bWwgaW5cbiAgICAgICB0aW1lcl9zdGFydCBcImRpZmZcIjtcbiAgICAgICBsZXQgcGF0Y2ggPSBWZG9tLk5vZGUuUGF0Y2guY3JlYXRlIH5wcmV2aW91czohcHJldl9odG1sIH5jdXJyZW50Omh0bWwgaW5cbiAgICAgICB0aW1lcl9zdG9wIFwiZGlmZlwiO1xuICAgICAgIGlmIG5vdCAoVmRvbS5Ob2RlLlBhdGNoLmlzX2VtcHR5IHBhdGNoKSB0aGVuIFZpc2liaWxpdHkubWFya19kaXJ0eSB2aXNpYmlsaXR5O1xuICAgICAgIHRpbWVyX3N0YXJ0IFwicGF0Y2hcIjtcbiAgICAgICBsZXQgZWx0ID0gVmRvbS5Ob2RlLlBhdGNoLmFwcGx5IHBhdGNoICFwcmV2X2VsdCBpblxuICAgICAgIHRpbWVyX3N0b3AgXCJwYXRjaFwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwib25fZGlzcGxheVwiO1xuICAgICAgIChnZXRfb25fZGlzcGxheSAoKSkgc3RhdGUgfnNjaGVkdWxlX2V2ZW50OlVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlO1xuICAgICAgIHRpbWVyX3N0b3AgXCJvbl9kaXNwbGF5XCI7XG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YgKEluY3IuVmFyLnZhbHVlIG1vZGVsX3YpO1xuICAgICAgIGxldCBvbGRfdGFnX25hbWUgPSBnZXRfdGFnX25hbWUgIXByZXZfaHRtbCBpblxuICAgICAgIGxldCBuZXdfdGFnX25hbWUgPSBnZXRfdGFnX25hbWUgaHRtbCBpblxuICAgICAgIGxldCB0YWdzX3RoZV9zYW1lID0gT3B0aW9uLmVxdWFsIFN0cmluZy5lcXVhbCBvbGRfdGFnX25hbWUgbmV3X3RhZ19uYW1lIGluXG4gICAgICAgcHJldl9odG1sIDo9IGh0bWw7XG4gICAgICAgcHJldl9lbHQgOj0gZWx0O1xuICAgICAgIHRpbWVyX3N0b3AgXCJ0b3RhbFwiO1xuICAgICAgIGlmIHNob3VsZF9kZWJ1ZyAoKSB0aGVuIEZpcmVidWcuY29uc29sZSMjZGVidWcgKEpzLnN0cmluZyBcIi0tLS0tLS1cIik7XG4gICAgICAgKCogQ2hhbmdpbmcgdGhlIHRhZyBuYW1lIGNhdXNlcyBmb2N1cyB0byBiZSBsb3N0LiAgUmVmb2N1cyBpbiB0aGF0IGNhc2UuICopXG4gICAgICAgaWYgbm90IHRhZ3NfdGhlX3NhbWUgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKVxuICAgICBpblxuICAgICAoKiBXZSB1c2UgW3JlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lXSBzbyB0aGF0IGJyb3dzZXIgdGVsbHMgdXMgd2hlcmUgaXQncyB0aW1lIHRvXG4gICAgICAgIHJlZnJlc2ggdGhlIFVJLiBBbGwgdGhlIGFjdGlvbnMgd2lsbCBiZSBwcm9jZXNzZWQgYW5kIHRoZSBjaGFuZ2VzIHByb3BhZ2F0ZWRcbiAgICAgICAgdG8gdGhlIERPTSBpbiBvbmUgZnJhbWUuICopXG4gICAgIGxldCByZWMgY2FsbGJhY2sgKCkgPVxuICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgICAgIHRoZW4gKClcbiAgICAgICBlbHNlIChcbiAgICAgICAgIHBlcmZvcm1fdXBkYXRlICgpO1xuICAgICAgICAgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2spXG4gICAgIGluXG4gICAgICgqIFdlIHdhbnQgdGhlIHJvb3QgZWxlbWVudCB0byBzdGFydCBvdXQgZm9jdXNlZCwgc28gcGVyZm9ybSBhbiBpbml0aWFsXG4gICAgICAgIHVwZGF0ZS9yZW5kZXIsIHRoZW4gaW1tZWRpYXRlbHkgZm9jdXMgdGhlIHJvb3QgKHVubGVzcyBhIG5vbi1ib2R5IGVsZW1lbnQgYWxyZWFkeVxuICAgICAgICBoYXMgZm9jdXMpLiAgVGhpcyBmb2N1c2luZyBjYW4ndCBoYXBwZW4gaW5zaWRlIG9mIHRoZSBgY2FsbGJhY2tgIGJlY2F1c2UgdGhlbiBpdFxuICAgICAgICB3b3VsZCByZWZvY3VzIHJvb3QgZXZlcnkgZnJhbWUuICAqKVxuICAgICBwZXJmb3JtX3VwZGF0ZSAoKTtcbiAgICAgKG1hdGNoIEpzLk9wdC50b19vcHRpb24gRG9tX2h0bWwuZG9jdW1lbnQjIy5hY3RpdmVFbGVtZW50IHdpdGhcbiAgICAgIHwgU29tZSBlbCAtPiBpZiBKcy5PcHQudGVzdCAoRG9tX2h0bWwuQ29lcmNlVG8uYm9keSBlbCkgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKVxuICAgICAgfCBOb25lIC0+IHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpKTtcbiAgICAgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2s7XG4gICAgIERlZmVycmVkLm5ldmVyICgpKVxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHN0YXJ0X2JvbnNhaSA9IHN0YXJ0X2JvbnNhaVxuZW5kXG5cbmxldCBzdGFydFxuICAgICAgKHR5cGUgbW9kZWwgYWN0aW9uKVxuICAgICAgPyhkZWJ1ZyA9IGZhbHNlKVxuICAgICAgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpXG4gICAgICA/KG5hbWVkX2xvZ2dpbmdfZmlsdGVycyA9IFtdKVxuICAgICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkXG4gICAgICB+aW5pdGlhbF9tb2RlbFxuICAgICAgKG1vZHVsZSBBcHAgOiBBcHBfaW50Zi5TIHdpdGggdHlwZSBNb2RlbC50ID0gbW9kZWwgYW5kIHR5cGUgQWN0aW9uLnQgPSBhY3Rpb24pXG4gID1cbiAgc3RhcnRfYm9uc2FpXG4gICAgfmRlYnVnXG4gICAgfnN0b3BcbiAgICB+bmFtZWRfbG9nZ2luZ19maWx0ZXJzXG4gICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkXG4gICAgfmluaXRpYWxfbW9kZWxcbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgaW5jbHVkZSBBcHBcblxuICAgICAgbGV0IGFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIF8gPSB0cnVlXG5cbiAgICAgIGxldCBjcmVhdGUgbW9kZWwgfm9sZF9tb2RlbCB+aW5qZWN0ID1cbiAgICAgICAgbGV0IG9wZW4gSW5jci5MZXRfc3ludGF4IGluXG4gICAgICAgIGxldCVtYXAgY29tcG9uZW50ID0gY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWwgfmluamVjdCBpblxuICAgICAgICBsZXQgdmlldyA9IENvbXBvbmVudC52aWV3IGNvbXBvbmVudCBpblxuICAgICAgICBsZXQgYXBwbHlfYWN0aW9uIHN0YXRlIH5zY2hlZHVsZV9ldmVudCBfbW9kZWwgYWN0aW9uID1cbiAgICAgICAgICBsZXQgc2NoZWR1bGVfYWN0aW9uIGEgPSBzY2hlZHVsZV9ldmVudCAoaW5qZWN0IGEpIGluXG4gICAgICAgICAgQ29tcG9uZW50LmFwcGx5X2FjdGlvbiBjb21wb25lbnQgYWN0aW9uIHN0YXRlIH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHVwZGF0ZV92aXNpYmlsaXR5IF9tb2RlbCB+c2NoZWR1bGVfZXZlbnQgPVxuICAgICAgICAgIGxldCBzY2hlZHVsZV9hY3Rpb24gYSA9IHNjaGVkdWxlX2V2ZW50IChpbmplY3QgYSkgaW5cbiAgICAgICAgICBDb21wb25lbnQudXBkYXRlX3Zpc2liaWxpdHkgY29tcG9uZW50IH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG9uX2Rpc3BsYXkgc3RhdGUgfnNjaGVkdWxlX2V2ZW50ID1cbiAgICAgICAgICBsZXQgc2NoZWR1bGVfYWN0aW9uIGEgPSBzY2hlZHVsZV9ldmVudCAoaW5qZWN0IGEpIGluXG4gICAgICAgICAgQ29tcG9uZW50Lm9uX2Rpc3BsYXkgY29tcG9uZW50IHN0YXRlIH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgeyBBcHBfaW50Zi5Qcml2YXRlLnZpZXc7IGFwcGx5X2FjdGlvbjsgdXBkYXRlX3Zpc2liaWxpdHk7IG9uX2Rpc3BsYXkgfVxuICAgICAgOztcbiAgICBlbmQpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tLlZkb21cbmluY2x1ZGUgVmRvbV9pbnB1dF93aWRnZXRzX2ludGZcblxubW9kdWxlIE1lcmdlX2JlaGF2aW9yID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBNZXJnZVxuICAgIHwgTGVnYWN5X2RvbnRfbWVyZ2VcbmVuZFxuXG5tb2R1bGUgRGVjaW1hbCA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdFxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgdClcbiAgICB0aGVuIGZhaWx3aXRoZiBcIkNhbm5vdCByZXByZXNlbnQgbm9uLWZpbml0ZSBmbG9hdCBhcyBkZWNpbWFsOiAlZlwiIHQgKClcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIGxldCB0ID0gRmxvYXQub2Zfc3RyaW5nIHMgaW5cbiAgICBpbnZhcmlhbnQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICBpbnZhcmlhbnQgdDtcbiAgICBzcHJpbnRmIFwiJS4xMmdcIiB0XG4gIDs7XG5lbmRcblxubW9kdWxlIFZhbGlkYXRlZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgSW5pdGlhbFxuICAgICgqIFRoaXMgaXMgdXNlZCB0byBhdm9pZCBtYXJraW5nIGFzIGludmFsaWQgYSBmaWVsZCB0aGF0IGhhc24ndCBldmVyIGJlZW5cbiAgICAgICB0b3VjaGVkIGJ5IHRoZSB1c2VyLCB0byBpbXByb3ZlIFVYLiAqKVxuICAgIHwgVmFsaWQgb2ZcbiAgICAgICAgeyBpbnB1dCA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICAgIH1cbiAgICB8IEludmFsaWQgb2ZcbiAgICAgICAgeyBpbnB1dCA6IHN0cmluZ1xuICAgICAgICA7IGxhc3RfdmFsaWQgOiAnYSBvcHRpb25cbiAgICAgICAgOyBlcnJvciA6IHN0cmluZ1xuICAgICAgICB9XG4gIFtAQGRlcml2aW5nIGVxdWFsLCBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbiAgdHlwZSAnYSB1cGRhdGUgPSAnYSB0IFtAQGRlcml2aW5nIGVxdWFsLCBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbiAgbGV0IGxpZnQgKHR5cGUgYSkgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gYSB0XG5cbiAgICAgIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgICAgICB8IEluaXRpYWwgLT4gXCJcIlxuICAgICAgICB8IEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZCA9IF87IGVycm9yID0gXyB9IC0+IGlucHV0XG4gICAgICAgIHwgVmFsaWQgeyBpbnB1dDsgdmFsdWUgfSAtPlxuICAgICAgICAgIChtYXRjaCBpbnB1dCB3aXRoXG4gICAgICAgICAgIHwgU29tZSBpbnB1dCAtPiBpbnB1dFxuICAgICAgICAgICB8IE5vbmUgLT4gTS50b19zdHJpbmcgdmFsdWUpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICB0cnkgVmFsaWQgeyBpbnB1dCA9IFNvbWUgczsgdmFsdWUgPSBNLm9mX3N0cmluZyBzIH0gd2l0aFxuICAgICAgICB8IGV4biAtPiBJbnZhbGlkIHsgaW5wdXQgPSBzOyBsYXN0X3ZhbGlkID0gTm9uZTsgZXJyb3IgPSBFeG4udG9fc3RyaW5nIGV4biB9XG4gICAgICA7O1xuICAgIGVuZCA6IFN0cmluZ2FibGUuU1xuICAgICAgd2l0aCB0eXBlIHQgPSBhIHQpXG4gIDs7XG5cbiAgbGV0IGluaXRpYWxfZW1wdHkgPSBJbml0aWFsXG4gIGxldCByZXR1cm4gdmFsdWUgPSBWYWxpZCB7IGlucHV0ID0gTm9uZTsgdmFsdWUgfVxuXG4gIGxldCBnZXRfY3VycmVudCA9IGZ1bmN0aW9uXG4gICAgfCBWYWxpZCB7IGlucHV0ID0gXzsgdmFsdWUgfSAtPiBTb21lIHZhbHVlXG4gICAgfCBJbnZhbGlkIF8gfCBJbml0aWFsIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZ2V0X2xhc3QgPSBmdW5jdGlvblxuICAgIHwgVmFsaWQgeyBpbnB1dCA9IF87IHZhbHVlIH0gLT4gU29tZSB2YWx1ZVxuICAgIHwgSW52YWxpZCB7IGlucHV0ID0gXzsgbGFzdF92YWxpZDsgZXJyb3IgPSBfIH0gLT4gbGFzdF92YWxpZFxuICAgIHwgSW5pdGlhbCAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGdldF9lcnJvciA9IGZ1bmN0aW9uXG4gICAgfCBJbml0aWFsIHwgVmFsaWQgXyAtPiBOb25lXG4gICAgfCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkID0gXzsgZXJyb3IgfSAtPiBTb21lIGVycm9yXG4gIDs7XG5cbiAgbGV0IGlzX2ludmFsaWQgPSBmdW5jdGlvblxuICAgIHwgSW52YWxpZCBfIC0+IHRydWVcbiAgICB8IFZhbGlkIF8gfCBJbml0aWFsIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGlzX2luaXRpYWxfZW1wdHkgPSBmdW5jdGlvblxuICAgIHwgSW5pdGlhbCAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSBvbGQgbmV3XyA9XG4gICAgbWF0Y2ggb2xkLCBuZXdfIHdpdGhcbiAgICB8IEluaXRpYWwsIF8gLT4gbmV3X1xuICAgIHwgXywgVmFsaWQgXyAtPiBuZXdfXG4gICAgfCBWYWxpZCB7IGlucHV0ID0gXzsgdmFsdWUgPSBvbGQgfSwgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gXzsgZXJyb3IgfSAtPlxuICAgICAgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gU29tZSBvbGQ7IGVycm9yIH1cbiAgICB8ICggSW52YWxpZCB7IGlucHV0ID0gXzsgbGFzdF92YWxpZDsgZXJyb3IgPSBfIH1cbiAgICAgICwgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gTm9uZTsgZXJyb3IgfSApIC0+XG4gICAgICBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQ7IGVycm9yIH1cbiAgICB8IEludmFsaWQgXywgSW52YWxpZCB7IGlucHV0ID0gXzsgbGFzdF92YWxpZCA9IFNvbWUgXzsgZXJyb3IgPSBfIH0gLT4gbmV3X1xuICAgIHwgXywgSW5pdGlhbCAtPiBvbGRcbiAgOztcbmVuZFxuXG5sZXQgbWF5YmVfaW52YWxpZCB2YWxpZGF0ZWQgYXR0cnMgPVxuICBpZiBWYWxpZGF0ZWQuaXNfaW52YWxpZCB2YWxpZGF0ZWRcbiAgdGhlbiBBdHRyLmNyZWF0ZSBcImFyaWEtaW52YWxpZFwiIFwidHJ1ZVwiIDo6IGF0dHJzXG4gIGVsc2UgYXR0cnNcbjs7XG5cbm1vZHVsZSBUaW1lX2NvbXBhdCA9IHN0cnVjdFxuICBtb2R1bGUgT2ZkYXkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUaW1lX25zLk9mZGF5LnRcblxuICAgIGxldCBvZl9zdHJpbmcgPSBUaW1lX25zLk9mZGF5Lm9mX3N0cmluZ1xuXG4gICAgKCogVGhlIGJyb3dzZXIgZXhwZWN0cyBhIEhIOm1tIGZvcm1hdCB3aXRoIG9wdGlvbmFsIHRyYWlsaW5nIFwiOnNzXCIgb3IgXCI6c3MuU1NTXCI7XG4gICAgICAgW1RpbWVfbnMuT2ZkYXkudG9fc3RyaW5nXSBwcm92aWRlcyBwcmVjaXNpb24gaW4gbmFub3NlY29uZHMsIHdoaWNoIGlzIHRvbyBtdWNoLiAqKVxuICAgIGxldCB0b19zdHJpbmcgPSBUaW1lX25zLk9mZGF5LnRvX21pbGxpc2Vjb25kX3N0cmluZ1xuICBlbmRcblxuICBsZXQgem9uZWQgem9uZSA6IChtb2R1bGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gVGltZV9ucy50KSA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFRpbWVfbnMudFxuXG4gICAgICAoKiBGb3JtYXQgZnJvbSB0aGUgYnJvd3NlcjogeXl5eS1NTS1kZFRoaDptbSAqKVxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgbGV0IHBhcnRzID0gU3RyaW5nLnNwbGl0X29uX2NoYXJzIHMgfm9uOlsgJ1QnOyAnOicgXSBpblxuICAgICAgICBsZXQgZGF0ZSA9IExpc3QubnRoX2V4biBwYXJ0cyAwIHw+IERhdGUub2Zfc3RyaW5nIGluXG4gICAgICAgIGxldCBociA9IExpc3QubnRoX2V4biBwYXJ0cyAxIHw+IEludC5vZl9zdHJpbmcgaW5cbiAgICAgICAgbGV0IG1pbiA9IExpc3QubnRoX2V4biBwYXJ0cyAyIHw+IEludC5vZl9zdHJpbmcgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gVGltZV9ucy5PZmRheS5jcmVhdGUgfmhyIH5taW4gKCkgaW5cbiAgICAgICAgVGltZV9ucy5vZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgIGxldCBzID0gVGltZV9ucy50b19zdHJpbmdfaXNvODYwMV9iYXNpYyB+em9uZSB0IGluXG4gICAgICAgICgqIFRoZSBicm93c2VyIGV4cGVjdCBhIHl5eXktTU0tZGRUaGg6bW0gZm9ybWF0IGFuZCBpdCBhbGxvd3NcbiAgICAgICAgICAgdHJhaWxpbmcgXCI6c3NcIiBvciBcIjpzcy5TU1NcIi5cblxuICAgICAgICAgICB0b19zdHJpbmdfaXNvODYwMV9iYXNpYyBmb3JtYXQ6IDIwMTktMDEtMzBUMDE6MDA6MDAuMDAwMDAwMDAwKzAxOjAwXG5cbiAgICAgICAgICAgZGVzaXJlZCBmb3JtYXQgYWZ0ZXIgY3V0dGluZzogICAyMDE5LTAxLTMwVDAxOjAwOjAwXG4gICAgICAgICopXG4gICAgICAgIFN0cmluZy5sc3BsaXQyX2V4biB+b246Jy4nIHMgfD4gVHVwbGUyLmdldDFcbiAgICAgIDs7XG4gICAgZW5kKVxuICA7O1xuZW5kXG5cbmxldCBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQgYXR0cnMgPSBpZiBkaXNhYmxlZCB0aGVuIEF0dHIuZGlzYWJsZWQgOjogYXR0cnMgZWxzZSBhdHRyc1xubGV0IGFkZF9hdHRycyBhdHRycycgYXR0cnMgPSBhdHRycyBAIGF0dHJzJyB8PiBBdHRycy5tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXNcblxubGV0IG1lcmdlID0gZnVuY3Rpb25cbiAgfCBNZXJnZV9iZWhhdmlvci5NZXJnZSAtPiBBdHRyLm1hbnlcbiAgfCBMZWdhY3lfZG9udF9tZXJnZSAtPiBBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuOztcblxubGV0IHN0cnVjdHVyYWxfbGlzdFxuICAgICAgPyhvcmllbnRhdGlvbiA9IGBWZXJ0aWNhbClcbiAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgIGF0dHJzXG4gICAgICBjaGlsZHJlblxuICA9XG4gIGxldCBsYXlvdXRfc3R5bGUgPVxuICAgIG1hdGNoIG9yaWVudGF0aW9uIHdpdGhcbiAgICB8IGBWZXJ0aWNhbCAtPiBDc3NfZ2VuLihkaXNwbGF5IGBCbG9jaylcbiAgICB8IGBIb3Jpem9udGFsIC0+IENzc19nZW4uKGRpc3BsYXkgYElubGluZV9ibG9jaylcbiAgaW5cbiAgTm9kZS51bFxuICAgIH5hdHRyczpcbiAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgIChbIEF0dHIuc3R5bGVcbiAgICAgICAgICAgICAgIENzc19nZW4uKGNyZWF0ZSB+ZmllbGQ6XCJsaXN0LXN0eWxlXCIgfnZhbHVlOlwibm9uZVwiIEA+IG1hcmdpbl9sZWZ0IChgUHggMCkpXG4gICAgICAgICAgIF1cbiAgICAgICAgICAgfD4gYWRkX2F0dHJzIGF0dHJzKVxuICAgICAgXVxuICAgIChMaXN0Lm1hcCBjaGlsZHJlbiB+ZjooZnVuIGNoaWxkIC0+XG4gICAgICAgTm9kZS5saSB+YXR0cnM6WyBBdHRyLnN0eWxlIGxheW91dF9zdHlsZSBdIFsgY2hpbGQgXSkpXG47O1xuXG5tb2R1bGUgVmFsdWVfbm9ybWFsaXppbmdfaG9vayA9IHN0cnVjdFxuICBtb2R1bGUgVW5zYWZlID0gSnNfb2Zfb2NhbWwuSnMuVW5zYWZlXG4gIG9wZW4gSnNfb2Zfb2NhbWxcbiAgb3BlbiBKc19vZl9vY2FtbC5Eb21faHRtbFxuXG4gIGxldCBpc19hY3RpdmUgZWxlbWVudCA9XG4gICAgbGV0IGRvY3VtZW50X2FjdGl2ZV9lbGVtZW50ID0gVW5zYWZlLmdldCBkb2N1bWVudCAoSnMuc3RyaW5nIFwiYWN0aXZlRWxlbWVudFwiKSBpblxuICAgIHBoeXNfZXF1YWwgZWxlbWVudCBkb2N1bWVudF9hY3RpdmVfZWxlbWVudFxuICA7O1xuXG4gIGxldCB2YWx1ZV9wcm9wZXJ0eSA9IEpzLnN0cmluZyBcInZhbHVlXCJcbiAgbGV0IGdldF92YWx1ZSBlbGVtZW50IDogJ2EgSnMudCA9IFVuc2FmZS5nZXQgZWxlbWVudCB2YWx1ZV9wcm9wZXJ0eVxuICBsZXQgc2V0X3ZhbHVlIGVsZW1lbnQgdmFsdWUgPSBVbnNhZmUuc2V0IGVsZW1lbnQgdmFsdWVfcHJvcGVydHkgdmFsdWVcblxuICBsZXQgaW5zdGFsbF9ldmVudF9oYW5kbGVyIGVsZW1lbnQgfmYgPVxuICAgICgqIFRoaXMgZXZlbnQgaGFuZGxlciBub3JtYWxpemVzIHRoZSB2YWx1ZSBvbiB0aGUgaW5wdXQgZWxlbWVudCBvbiB0aGUgW2NoYW5nZV0gZXZlbnQuXG4gICAgICAgRm9yIGEgdGV4dCBlbnRyeSwgdGhpcyBtZWFucyB3aGVuIHRoZSB1c2VyIHByZXNzZXMgZW50ZXIsIGFuZCB3aGVuIHRoZSB1c2VyIGJsdXJzXG4gICAgICAgdGhlIGVsZW1lbnQuIFdoeSBkb24ndCB3ZSBzaW1wbHkgW3RvX3N0cmluZ10gdGhlIHZhbHVlIGluIHRoZSBtb2RlbD8gQmVjYXVzZSBmb3JcbiAgICAgICBzb21lIGlucHV0IGVsZW1lbnRzLCB5b3UgY2FuIGhhdmUgYSBjaGFuZ2UgZXZlbnQgdGhhdCBmaXJlcyBhZnRlciB0aGUgdmFsdWUgY2hhbmdlc1xuICAgICAgIGJ1dCBiZWZvcmUgW0luY3JfZG9tXSBjYW4gdXBkYXRlIHRoZSBtb2RlbC4gRm9yIGV4YW1wbGUsIHRoaXMgaGFwcGVucyB3aGVuIHlvdVxuICAgICAgIHByZXNzIHRoZSB1cCBhcnJvdyBvbiBhIG51bWJlciBpbnB1dC4gVGhpcyBsZWFkcyB0byBhIGJ1ZyB3aGVyZSB0aGUgdmFsdWUgaW4gdGhlXG4gICAgICAgbW9kZWwgc3dhcHMgYmFjayBhbmQgZm9ydGggd2l0aCB0aGUgdmFsdWUgaW4gdGhlIGVsZW1lbnQuICopXG4gICAgbGV0IGNoYW5nZV9oYW5kbGVyIF8gPVxuICAgICAgbGV0IHZhbHVlID0gSnMudG9fc3RyaW5nIChnZXRfdmFsdWUgZWxlbWVudCkgaW5cbiAgICAgIE9wdGlvbi5pdGVyIChmIHZhbHVlKSB+ZjooZnVuIG5vcm1hbGl6ZWQgLT5cbiAgICAgICAgc2V0X3ZhbHVlIGVsZW1lbnQgKEpzLnN0cmluZyBub3JtYWxpemVkKSk7XG4gICAgICBKcy5fdHJ1ZVxuICAgIGluXG4gICAgbGV0IGNoYW5nZV9oYW5kbGVyID0gRG9tLmhhbmRsZXIgY2hhbmdlX2hhbmRsZXIgaW5cbiAgICBhZGRFdmVudExpc3RlbmVyIGVsZW1lbnQgRXZlbnQuY2hhbmdlIGNoYW5nZV9oYW5kbGVyIEpzLl9mYWxzZVxuICA7O1xuXG4gIG1vZHVsZSBNID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB7IG11dGFibGUgZXZlbnRfaWQgOiBldmVudF9saXN0ZW5lcl9pZCB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgdmFsdWUgOiBzdHJpbmdcbiAgICAgICAgOyBmIDogc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgICAgICAgfVxuXG4gICAgICBsZXQgc2V4cF9vZl90IHsgdmFsdWU7IF8gfSA9IFNleHAuQXRvbSB2YWx1ZVxuICAgICAgbGV0IGNvbWJpbmUgX2xlZnQgcmlnaHQgPSByaWdodFxuICAgIGVuZFxuXG4gICAgbGV0IGluaXQgeyBJbnB1dC52YWx1ZTsgZiB9IGVsZW1lbnQgPVxuICAgICAgaWYgbm90IChpc19hY3RpdmUgZWxlbWVudCkgdGhlbiBzZXRfdmFsdWUgZWxlbWVudCAoSnMuc3RyaW5nIHZhbHVlKTtcbiAgICAgIGxldCBldmVudF9pZCA9IGluc3RhbGxfZXZlbnRfaGFuZGxlciBlbGVtZW50IH5mIGluXG4gICAgICB7IFN0YXRlLmV2ZW50X2lkIH1cbiAgICA7O1xuXG4gICAgbGV0IG9uX21vdW50IF9pbnB1dCBfc3RhdGUgX2VsZW1lbnQgPSAoKVxuXG4gICAgbGV0IGRlc3Ryb3kgX2lucHV0IHsgU3RhdGUuZXZlbnRfaWQgfSBfZWxlbWVudCA9IHJlbW92ZUV2ZW50TGlzdGVuZXIgZXZlbnRfaWRcbiAgICBbQEBvY2FtbC53YXJuaW5nXG4gICAgICAgXCItNjhcIl1cbiAgICA7O1xuXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0IH5uZXdfaW5wdXQgc3RhdGUgZWxlbWVudCA9XG4gICAgICBkZXN0cm95IG9sZF9pbnB1dCBzdGF0ZSBlbGVtZW50O1xuICAgICAgbGV0IHsgU3RhdGUuZXZlbnRfaWQgfSA9IGluaXQgbmV3X2lucHV0IGVsZW1lbnQgaW5cbiAgICAgIHN0YXRlLlN0YXRlLmV2ZW50X2lkIDwtIGV2ZW50X2lkXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBBdHRyLkhvb2tzLk1ha2UgKE0pXG5cbiAgKCogW2NyZWF0ZSB2YWx1ZSB+Zl0gd2lsbCBzZXQgdGhlIFwidmFsdWVcIiBwcm9wZXJ0eSB0byBbdmFsdWVdIGlmIHRoZSBlbGVtZW50IGlzIG5vdFxuICAgICBmb2N1c2VkIGFuZCBvbiBlYWNoIGNoYW5nZSwgcnVuIHRoZSBjdXJyZW50IHZhbHVlIHRocm91Z2ggW2ZdIHRvIHJlLXNldCBpdC4gQWdhaW4sXG4gICAgIHRoaXMgb25seSBoYXBwZW5zIGlmIHRoZSBlbGVtZW50IGlzIG5vdCBmb2N1c2VkLiBJZiBbZl0gcmV0dXJucyBbTm9uZV0sIG5vIGNoYW5nZVxuICAgICB0YWtlcyBwbGFjZS4gKilcbiAgbGV0IGNyZWF0ZSB2YWx1ZSB+ZiA9IEF0dHIuY3JlYXRlX2hvb2sgXCJ2YWx1ZTpub3JtYWxpemVkXCIgKGNyZWF0ZSB7IHZhbHVlOyBmIH0pXG5lbmRcblxubW9kdWxlIERyb3Bkb3duID0gc3RydWN0XG4gIGxldCBpbXBsXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhleHRyYV9vcHRpb25fYXR0cnMgPSBGbi5jb25zdCBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+ZXF1YWxcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH50b19zdHJpbmdcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBOb2RlLnNlbGVjdFxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChbIEF0dHIuY2xhc3NfIFwid2lkZ2V0LWRyb3Bkb3duXCJcbiAgICAgICAgICAgICA7IEF0dHIub25fY2hhbmdlIChmdW4gXyB2YWx1ZSAtPlxuICAgICAgICAgICAgICAgICBvbl9jaGFuZ2UgKEludC5vZl9zdHJpbmcgdmFsdWUgfD4gTGlzdC5udGhfZXhuIHZhbHVlcykpXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgKExpc3QubWFwaSB2YWx1ZXMgfmY6KGZ1biBpbmRleCB2YWx1ZSAtPlxuICAgICAgICAgTm9kZS5vcHRpb25cbiAgICAgICAgICAgfmF0dHJzOlxuICAgICAgICAgICAgIChbIEF0dHIudmFsdWUgKEludC50b19zdHJpbmcgaW5kZXgpXG4gICAgICAgICAgICAgIDsgQXR0ci5ib29sX3Byb3BlcnR5IFwic2VsZWN0ZWRcIiAoZXF1YWwgdmFsdWUgc2VsZWN0ZWQpXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgQCBleHRyYV9vcHRpb25fYXR0cnMgdmFsdWUpXG4gICAgICAgICAgIFsgTm9kZS50ZXh0ICh0b19zdHJpbmcgdmFsdWUpIF0pKVxuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIHZhbHVlc1xuICAgICAgfmVxdWFsOk0uZXF1YWxcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cblxuICBsZXQgb2ZfdmFsdWVzX29wdFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICA/KHBsYWNlaG9sZGVyID0gXCJcIilcbiAgICAgICAgKG1vZHVsZSBNIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgbGV0IHZhbHVlcyA9IE5vbmUgOjogTGlzdC5tYXAgdmFsdWVzIH5mOk9wdGlvbi5zb21lIGluXG4gICAgbGV0IHRvX3N0cmluZyA9IE9wdGlvbi52YWx1ZV9tYXAgfmRlZmF1bHQ6cGxhY2Vob2xkZXIgfmY6TS50b19zdHJpbmcgaW5cbiAgICBsZXQgZXh0cmFfb3B0aW9uX2F0dHJzID1cbiAgICAgIE9wdGlvbi5tYXAgZXh0cmFfb3B0aW9uX2F0dHJzIH5mOihmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIHZhbHVlIC0+IGYgdmFsdWUpXG4gICAgaW5cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgdmFsdWVzXG4gICAgICB+ZXF1YWw6WyVlcXVhbDogTS50IG9wdGlvbl1cbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1cbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICBNLmFsbFxuICAgICAgfmVxdWFsOk0uZXF1YWxcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1fb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgID8ocGxhY2Vob2xkZXIgPSBcIlwiKVxuICAgICAgICAobW9kdWxlIE0gOiBFbnVtIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgbGV0IHZhbHVlcyA9IE5vbmUgOjogTGlzdC5tYXAgTS5hbGwgfmY6T3B0aW9uLnNvbWUgaW5cbiAgICBsZXQgdG9fc3RyaW5nID0gT3B0aW9uLnZhbHVlX21hcCB+ZGVmYXVsdDpwbGFjZWhvbGRlciB+ZjpNLnRvX3N0cmluZyBpblxuICAgIGxldCBleHRyYV9vcHRpb25fYXR0cnMgPVxuICAgICAgT3B0aW9uLm1hcCBleHRyYV9vcHRpb25fYXR0cnMgfmY6KGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICB8IFNvbWUgdmFsdWUgLT4gZiB2YWx1ZSlcbiAgICBpblxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICB2YWx1ZXNcbiAgICAgIH5lcXVhbDpbJWVxdWFsOiBNLnQgb3B0aW9uXVxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2VsZWN0YWJsZV9zdHlsZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmF0aXZlXG4gICAgfCBCdXR0b25fbGlrZSBvZiB7IGV4dHJhX2F0dHJzIDogY2hlY2tlZDpib29sIC0+IEF0dHIudCBsaXN0IH1cblxuICBsZXQgYmFyZWJvbmVzX2J1dHRvbl9saWtlID1cbiAgICBCdXR0b25fbGlrZVxuICAgICAgeyBleHRyYV9hdHRycyA9XG4gICAgICAgICAgKGZ1biB+Y2hlY2tlZCAtPlxuICAgICAgICAgICAgIGlmIGNoZWNrZWRcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBbIEF0dHIuc3R5bGVcbiAgICAgICAgICAgICAgICAgICBDc3NfZ2VuLihcbiAgICAgICAgICAgICAgICAgICAgIGJvcmRlciB+d2lkdGg6KGBQeCAxKSB+Y29sb3I6KGBIZXggXCIjRDBEMEQwXCIpIH5zdHlsZTpgU29saWQgKClcbiAgICAgICAgICAgICAgICAgICAgIEA+IGJhY2tncm91bmRfY29sb3IgKGBIZXggXCIjNDA0MDQwXCIpXG4gICAgICAgICAgICAgICAgICAgICBAPiBjb2xvciAoYEhleCBcIiNGN0Y3RjdcIikpXG4gICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgWyBBdHRyLnN0eWxlXG4gICAgICAgICAgICAgICAgICAgQ3NzX2dlbi4oXG4gICAgICAgICAgICAgICAgICAgICBib3JkZXIgfndpZHRoOihgUHggMSkgfmNvbG9yOihgSGV4IFwiI0QwRDBEMFwiKSB+c3R5bGU6YFNvbGlkICgpXG4gICAgICAgICAgICAgICAgICAgICBAPiBiYWNrZ3JvdW5kX2NvbG9yIChgSGV4IFwiI0VGRUZFRlwiKSlcbiAgICAgICAgICAgICAgIF0pXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGhpZGVfbmF0aXZlX2lucHV0cyA9XG4gICAgQ3NzX2dlbi4oY3JlYXRlIH5maWVsZDpcImFwcGVhcmFuY2VcIiB+dmFsdWU6XCJub25lXCIgQD4gdW5pZm9ybV9tYXJnaW4gKGBQeCAwKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2hlY2tib3ggPSBzdHJ1Y3RcbiAgbGV0IGltcGxcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5sYWJlbFxuICAgICAgICB+b25fdG9nZ2xlXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS5sYWJlbFxuICAgICAgfmF0dHJzOlsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKSBleHRyYV9hdHRycyBdXG4gICAgICBbIE5vZGUuaW5wdXRcbiAgICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiY2hlY2tib3hcIlxuICAgICAgICAgICAgIDsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl90b2dnbGUpXG4gICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJjaGVja2VkXCIgaXNfY2hlY2tlZFxuICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQpXG4gICAgICAgICAgKClcbiAgICAgIDsgTm9kZS50ZXh0IGxhYmVsXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IHNpbXBsZVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfmxhYmVsXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS5kaXZcbiAgICAgIH5hdHRyczpbIEF0dHIuY2xhc3NfIFwiY2hlY2tib3gtY29udGFpbmVyXCIgXVxuICAgICAgWyBpbXBsID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgfmlzX2NoZWNrZWQgfmxhYmVsIH5vbl90b2dnbGUgfm1lcmdlX2JlaGF2aW9yICgpIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2hlY2tsaXN0ID0gc3RydWN0XG4gIGxldCBpbXBsXG4gICAgICAgID8oc3R5bGUgPSBTZWxlY3RhYmxlX3N0eWxlLk5hdGl2ZSlcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID9sYXlvdXRcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgICA9XG4gICAgbGV0IGlucHV0X2F0dHJzLCBsYWJlbF9hdHRycyA9XG4gICAgICBtYXRjaCBzdHlsZSB3aXRoXG4gICAgICB8IE5hdGl2ZSAtPiBbXSwgZnVuIH5jaGVja2VkOl8gLT4gW11cbiAgICAgIHwgQnV0dG9uX2xpa2UgeyBleHRyYV9hdHRycyB9IC0+XG4gICAgICAgIFsgQXR0ci5zdHlsZSBTZWxlY3RhYmxlX3N0eWxlLmhpZGVfbmF0aXZlX2lucHV0cyBdLCBleHRyYV9hdHRyc1xuICAgIGluXG4gICAgc3RydWN0dXJhbF9saXN0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgICAgID9vcmllbnRhdGlvbjpsYXlvdXRcbiAgICAgIChbIEF0dHIuY2xhc3NlcyBbIFwid2lkZ2V0LWNoZWNrbGlzdFwiOyBcImNoZWNrYm94LWNvbnRhaW5lclwiIF0gXVxuICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgIChMaXN0Lm1hcCB2YWx1ZXMgfmY6KGZ1biBpdGVtIC0+XG4gICAgICAgICBOb2RlLmxhYmVsXG4gICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgICAgICAgKGV4dHJhX2F0dHJzIEAgbGFiZWxfYXR0cnMgfmNoZWNrZWQ6KGlzX2NoZWNrZWQgaXRlbSkpXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICBbIE5vZGUuaW5wdXRcbiAgICAgICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl90b2dnbGUgaXRlbSlcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5ib29sX3Byb3BlcnR5IFwiY2hlY2tlZFwiIChpc19jaGVja2VkIGl0ZW0pXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICBAIGlucHV0X2F0dHJzXG4gICAgICAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAoKVxuICAgICAgICAgICA7IE5vZGUudGV4dCAodG9fc3RyaW5nIGl0ZW0pXG4gICAgICAgICAgIF0pKVxuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP3N0eWxlXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP2xheW91dFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IERpc3BsYXkgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/c3R5bGVcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICA/bGF5b3V0XG4gICAgICB2YWx1ZXNcbiAgICAgIH5pc19jaGVja2VkXG4gICAgICB+b25fdG9nZ2xlXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgb2ZfZW51bVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/c3R5bGVcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW0gd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+b25fdG9nZ2xlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9zdHlsZVxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIE0uYWxsXG4gICAgICB+aXNfY2hlY2tlZFxuICAgICAgfm9uX3RvZ2dsZVxuICAgICAgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5lbmRcblxubW9kdWxlIE11bHRpX3NlbGVjdCA9IHN0cnVjdFxuICBtb2R1bGUgUmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBOb19hY3Rpb25cbiAgICAgIHwgQ2xlYXJfYWxsXG4gICAgICB8IFNlbGVjdF9hbGxcbiAgZW5kXG5cbiAgbGV0IGltcGxcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgID8ocmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IgPSBSZXBlYXRlZF9jbGlja19iZWhhdmlvci5Ob19hY3Rpb24pXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/c2l6ZVxuICAgICAgICAobW9kdWxlIE0gOiBTZXQgd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgID1cbiAgICBsZXQgb3BlbiBKc19vZl9vY2FtbCBpblxuICAgIGxldCBzaXplID0gT3B0aW9uLnZhbHVlIHNpemUgfmRlZmF1bHQ6KExpc3QubGVuZ3RoIHZhbHVlcykgaW5cbiAgICBsZXQgYXR0cnMgPVxuICAgICAgWyBBdHRyLmNyZWF0ZSBcIm11bHRpcGxlXCIgXCJcIlxuICAgICAgOyBBdHRyLmNyZWF0ZSBcInNpemVcIiAoSW50LnRvX3N0cmluZyBzaXplKVxuICAgICAgOyBBdHRyLm9uX2NoYW5nZSAoZnVuIGV2dCAoXyA6IHN0cmluZykgLT5cbiAgICAgICAgICBsZXQgdGFyZ2V0ID1cbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIEpzLk9wdC50b19vcHRpb24gKEpzLk9wdC5iaW5kIGV2dCMjLnRhcmdldCBEb21faHRtbC5Db2VyY2VUby5zZWxlY3QpXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgdGFyZ2V0IC0+IHRhcmdldFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgICAgXCJNdWx0aV9zZWxlY3QgW29uX2NoYW5nZV0gZXZlbnQgZmlyZWQgd2l0aCBhIG1pc3NpbmcgdGFyZ2V0IG9yIHRhcmdldCBcXFxuICAgICAgICAgICAgICAgICB0aGF0IHdhcyBub3QgYSBzZWxlY3QgZWxlbWVudC5cIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGNvbGxlY3Rpb25fdG9fbGlzdCBjb2xsZWN0aW9uID1cbiAgICAgICAgICAgIExpc3QuaW5pdCBjb2xsZWN0aW9uIyMubGVuZ3RoIH5mOihmdW4gaSAtPlxuICAgICAgICAgICAgICBKcy5PcHQuZ2V0IChjb2xsZWN0aW9uIyNpdGVtIGkpIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvcHRpb25zID0gY29sbGVjdGlvbl90b19saXN0IHRhcmdldCMjLm9wdGlvbnMgaW5cbiAgICAgICAgICBsZXQgc2VsZWN0ZWRfdmFsdWVzID1cbiAgICAgICAgICAgIExpc3QuZmlsdGVyX21hcCAoTGlzdC56aXBfZXhuIHZhbHVlcyBvcHRpb25zKSB+ZjooZnVuICh2YWx1ZSwgb3B0aW9uKSAtPlxuICAgICAgICAgICAgICBPcHRpb24uc29tZV9pZiAoSnMudG9fYm9vbCBvcHRpb24jIy5zZWxlY3RlZCkgdmFsdWUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBvbl9jaGFuZ2UgKFNldC5vZl9saXN0IChtb2R1bGUgTSkgc2VsZWN0ZWRfdmFsdWVzKSlcbiAgICAgIF1cbiAgICAgIEAgZXh0cmFfYXR0cnNcbiAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgIGluXG4gICAgbGV0IG9wdGlvbnMgPVxuICAgICAgTGlzdC5tYXAgdmFsdWVzIH5mOihmdW4gdmFsdWUgLT5cbiAgICAgICAgbGV0IGlzX3NlbGVjdGVkID0gU2V0Lm1lbSBzZWxlY3RlZCB2YWx1ZSBpblxuICAgICAgICBOb2RlLm9wdGlvblxuICAgICAgICAgICgqIFtBdHRyLmJvb2xfcHJvcGVydHldIGtlZXBzIHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW9uIGluIHN5bmMgYnkgc2V0dGluZyB0aGUgSlNcbiAgICAgICAgICAgICBwcm9wZXJ0eS4gW0F0dHIuc2VsZWN0ZWRdIG1vZGlmaWVzIHRoZSBET00gYXR0cmlidXRlIHNvIHRoYXQgc2VsZWN0ZWQgb3B0aW9uc1xuICAgICAgICAgICAgIGNhbiBiZSBzdHlsZWQgd2l0aCBDU1MuIFtBdHRyLnNlbGVjdGVkXSBhbG9uZSBkb2VzIG5vdCB1cGRhdGUgdGhlIHN0YXRlXG4gICAgICAgICAgICAgcHJvcGVybHkgaWYgdGhlIG1vZGVsIGNoYW5nZXMsIHNvIGJvdGggYXJlIG5lZWRlZC4gKilcbiAgICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgICAoWyBTb21lIChBdHRyLmJvb2xfcHJvcGVydHkgXCJzZWxlY3RlZFwiIGlzX3NlbGVjdGVkKVxuICAgICAgICAgICAgIDsgU29tZVxuICAgICAgICAgICAgICAgICAoQXR0ci5vbl9jbGljayAoZnVuIGV2dCAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgd2FzX3JlcGVhdGVkX2NsaWNrID1cbiAgICAgICAgICAgICAgICAgICAgICAobm90IChKcy50b19ib29sIGV2dCMjLmN0cmxLZXkpKVxuICAgICAgICAgICAgICAgICAgICAgICYmIFNldC5lcXVhbCBzZWxlY3RlZCAoU2V0LnNpbmdsZXRvbiAobW9kdWxlIE0pIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB3YXNfcmVwZWF0ZWRfY2xpY2ssIHJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBmYWxzZSwgXyB8IHRydWUsIE5vX2FjdGlvbiAtPiBFZmZlY3QuSWdub3JlXG4gICAgICAgICAgICAgICAgICAgIHwgdHJ1ZSwgQ2xlYXJfYWxsIC0+IG9uX2NoYW5nZSAoU2V0LmVtcHR5IChtb2R1bGUgTSkpXG4gICAgICAgICAgICAgICAgICAgIHwgdHJ1ZSwgU2VsZWN0X2FsbCAtPiBvbl9jaGFuZ2UgKFNldC5vZl9saXN0IChtb2R1bGUgTSkgdmFsdWVzKSkpXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IExpc3QuZmlsdGVyX29wdClcbiAgICAgICAgICBbIE5vZGUudGV4dCAoTS50b19zdHJpbmcgdmFsdWUpIF0pXG4gICAgaW5cbiAgICBOb2RlLnNlbGVjdCB+YXR0cnM6WyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpIGF0dHJzIF0gb3B0aW9uc1xuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zaXplXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5MZWdhY3lfZG9udF9tZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogU2V0IHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9yZXBlYXRlZF9jbGlja19iZWhhdmlvclxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c2l6ZVxuICAgICAgKG1vZHVsZSBNKVxuICAgICAgdmFsdWVzXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH5vbl9jaGFuZ2VcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBvZl9lbnVtXG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/c2l6ZVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW1fc2V0IHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zaXplXG4gICAgICAobW9kdWxlIE0pXG4gICAgICBNLmFsbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcbmVuZFxuXG5tb2R1bGUgRW50cnkgPSBzdHJ1Y3RcbiAgbW9kdWxlIENhbGxfb25faW5wdXRfd2hlbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IFRleHRfY2hhbmdlZFxuICAgICAgfCBFbnRlcl9rZXlfcHJlc3NlZF9vcl9mb2N1c19sb3N0XG5cbiAgICBsZXQgbGlzdGVuZXIgPSBmdW5jdGlvblxuICAgICAgfCBUZXh0X2NoYW5nZWQgLT4gQXR0ci5vbl9pbnB1dFxuICAgICAgfCBFbnRlcl9rZXlfcHJlc3NlZF9vcl9mb2N1c19sb3N0IC0+IEF0dHIub25fY2hhbmdlXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG5vcm1hbGl6ZSAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMpIHMgPVxuICAgIG1hdGNoIE0udG9fc3RyaW5nIChNLm9mX3N0cmluZyBzKSB3aXRoXG4gICAgfCBleGNlcHRpb24gXyAtPiBTb21lIFwiXCJcbiAgICB8IHYgLT4gU29tZSB2XG4gIDs7XG5cbiAgbGV0IG1heWJlX29uX3JldHVybiBvbl9yZXR1cm4gYXR0cnMgPVxuICAgIG1hdGNoIG9uX3JldHVybiB3aXRoXG4gICAgfCBOb25lIC0+IGF0dHJzXG4gICAgfCBTb21lIG9uX3JldHVybiAtPlxuICAgICAgQXR0ci5vbl9rZXlkb3duIChmdW4gZXYgLT5cbiAgICAgICAgaWYgZXYjIy5rZXlDb2RlID0gMTMgdGhlbiBvbl9yZXR1cm4gKCkgZWxzZSBFZmZlY3QuSWdub3JlKVxuICAgICAgOjogYXR0cnNcbiAgOztcblxuICBsZXQgaW5wdXRfbm9kZVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhwbGFjZWhvbGRlciA9IFwiXCIpXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgYXR0cnNcbiAgICA9XG4gICAgTm9kZS5pbnB1dFxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChhdHRyc1xuICAgICAgICAgICAgIHw+IGFkZF9hdHRyc1xuICAgICAgICAgICAgICAgICAgWyBBdHRyLnBsYWNlaG9sZGVyIHBsYWNlaG9sZGVyOyBBdHRyLmNyZWF0ZSBcInNwZWxsY2hlY2tcIiBcImZhbHNlXCIgXVxuICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgKClcbiAgOztcblxuICBsZXQgcmF3XG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID9vbl9yZXR1cm5cbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIFsgQXR0ci5zdHJpbmdfcHJvcGVydHkgXCJ2YWx1ZVwiIHZhbHVlOyBBdHRyLm9uX2lucHV0IChmdW4gX2V2IC0+IG9uX2lucHV0KSBdXG4gICAgfD4gbWF5YmVfb25fcmV0dXJuIG9uX3JldHVyblxuICAgIHw+IGlucHV0X25vZGUgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhzaG91bGRfbm9ybWFsaXplID0gdHJ1ZSlcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dHlwZV9hdHRyc1xuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIGxldCB2YWx1ZSA9XG4gICAgICBsZXQgdmFsdWUgPSBPcHRpb24udmFsdWVfbWFwIH5mOk0udG9fc3RyaW5nIHZhbHVlIH5kZWZhdWx0OlwiXCIgaW5cbiAgICAgIGlmIHNob3VsZF9ub3JtYWxpemVcbiAgICAgIHRoZW4gVmFsdWVfbm9ybWFsaXppbmdfaG9vay5jcmVhdGUgdmFsdWUgfmY6KG5vcm1hbGl6ZSAobW9kdWxlIE0pKVxuICAgICAgZWxzZSBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSB2YWx1ZSB+ZjooY29uc3QgTm9uZSlcbiAgICBpblxuICAgIFsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiAtPiBmdW5jdGlvblxuICAgICAgICB8IFwiXCIgLT4gb25faW5wdXQgTm9uZVxuICAgICAgICB8IHMgLT4gb25faW5wdXQgKE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IE0ub2Zfc3RyaW5nIHMpKSlcbiAgICA7IHZhbHVlXG4gICAgXVxuICAgIHw+IGFkZF9hdHRycyB0eXBlX2F0dHJzXG4gICAgfD4gaW5wdXRfbm9kZSA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkID9wbGFjZWhvbGRlciB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nYWJsZVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBNKVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwidGV4dFwiIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgdmFsaWRhdGVkXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgP29uX3JldHVyblxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgbGV0IChtb2R1bGUgVikgPSBWYWxpZGF0ZWQubGlmdCAobW9kdWxlIE0pIGluXG4gICAgbGV0IHZhbHVlX2F0dHIgPVxuICAgICAgbWF0Y2ggKHZhbHVlIDogVi50KSB3aXRoXG4gICAgICB8IEluaXRpYWwgLT4gQXR0ci5zdHJpbmdfcHJvcGVydHkgXCJ2YWx1ZVwiIFwiXCJcbiAgICAgIHwgXyAtPiBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSAoVi50b19zdHJpbmcgdmFsdWUpIH5mOihub3JtYWxpemUgKG1vZHVsZSBWKSlcbiAgICBpblxuICAgIFsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiBzIC0+XG4gICAgICAgIG9uX2lucHV0IChWLm9mX3N0cmluZyBzKSlcbiAgICA7IHZhbHVlX2F0dHJcbiAgICA7IEF0dHIudHlwZV8gXCJ0ZXh0XCJcbiAgICBdXG4gICAgfD4gbWF5YmVfb25fcmV0dXJuIG9uX3JldHVyblxuICAgIHw+IG1heWJlX2ludmFsaWQgdmFsdWVcbiAgICB8PiBpbnB1dF9ub2RlID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCB0ZXh0XG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIG9mX3N0cmluZ2FibGVcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgU3RyaW5nKVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBwYXNzd29yZFxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBTdHJpbmcpXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJwYXNzd29yZFwiIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgbnVtYmVyXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfnN0ZXBcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJudW1iZXJcIjsgQXR0ci5jcmVhdGVfZmxvYXQgXCJzdGVwXCIgc3RlcCBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IHJhbmdlXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfnN0ZXBcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJyYW5nZVwiOyBBdHRyLmNyZWF0ZV9mbG9hdCBcInN0ZXBcIiBzdGVwIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgdGltZVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBUaW1lX2NvbXBhdC5PZmRheSlcbiAgICAgIH5zaG91bGRfbm9ybWFsaXplOmZhbHNlXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJ0aW1lXCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBkYXRlXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIERhdGUpXG4gICAgICB+c2hvdWxkX25vcm1hbGl6ZTpmYWxzZVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwiZGF0ZVwiIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgZGF0ZXRpbWVfbG9jYWxcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/dXRjX29mZnNldFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IGhvdXJzID1cbiAgICAgICgqIEluIHRlc3RzLCB3ZSB1c2UgVVRDIGFzIHRoZSBsb2NhbCB0aW1lem9uZSAoaS5lLiBvZmZzZXQgMCkuIFRoaXMgcHJldmVudHMgY2hhbmdlc1xuICAgICAgICAgYmV0d2VlbiB0ZXN0IG91dHB1dCBhcm91bmQgZGF5bGlnaHQgc2F2aW5ncyB0aW1lLCBhbmQgaWYgW3V0Y19vZmZzZXRdIGlzbid0XG4gICAgICAgICBzdXBwbGllZCwgdGhlbiBjYWxsZXJzIHNob3VsZCBiZSBpbmRpZmZlcmVudCB0byB3aGF0IG9mZnNldCBnZXRzIHVzZWQgaGVyZS4gKilcbiAgICAgIG1hdGNoIENvcmUuYW1fcnVubmluZ190ZXN0IHx8IFBweF9pbmxpbmVfdGVzdF9saWIuYW1fcnVubmluZyB3aXRoXG4gICAgICB8IHRydWUgLT4gMFxuICAgICAgfCBmYWxzZSAtPlxuICAgICAgICBPcHRpb24udmFsdWVfbWFwXG4gICAgICAgICAgdXRjX29mZnNldFxuICAgICAgICAgICgqIGdldFRpbWV6b25lT2Zmc2V0IHJldHVybnMgdGhlIHRpbWUgem9uZSBkaWZmZXJlbmNlLCBpbiBtaW51dGVzLCBmcm9tIGN1cnJlbnRcbiAgICAgICAgICAgICBsb2NhbGUgdG8gVVRDLiBVdGMgb2Zmc2V0IGlzIHRoZSBkaWZmZXJlbmNlIGZyb20gVVRDIHRvIGN1cnJlbnQgbG9jYWxlIHdoaWNoXG4gICAgICAgICAgICAgaXMgd2hlcmUgdGhlIG1pbnVzIGNvbWVzIGZyb20uXG5cbiAgICAgICAgICAgICBUaGUgbWludXRlcyBoYXZlIHRvIGJlIGNvbnZlcnRlZCB0byBob3VycyBzaW5jZSB0aGF0IGlzIHRoZSBmb3JtYXRcbiAgICAgICAgICAgICBUaW1lLlpvbmUub2ZfdXRjX29mZnNldCBleHBlY3RzIGZvciB0aGUgdXRjX29mZnNldC4gKilcbiAgICAgICAgICB+ZGVmYXVsdDooKG5ldyVqcyBKc19vZl9vY2FtbC5Kcy5kYXRlX25vdykjI2dldFRpbWV6b25lT2Zmc2V0IC8gLTYwKVxuICAgICAgICAgIH5mOihmdW4gdXRjX29mZnNldCAtPiBUaW1lX25zLlNwYW4udG9faHIgdXRjX29mZnNldCB8PiBGbG9hdC50b19pbnQpXG4gICAgaW5cbiAgICBsZXQgKG1vZHVsZSBab25lZF90aW1lKSA9IFRpbWVfY29tcGF0LnpvbmVkIChUaW1lX2Zsb2F0LlpvbmUub2ZfdXRjX29mZnNldCB+aG91cnMpIGluXG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgWm9uZWRfdGltZSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcImRhdGV0aW1lLWxvY2FsXCIgXVxuICAgICAgfnNob3VsZF9ub3JtYWxpemU6ZmFsc2VcbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgdGV4dF9hcmVhXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhjYWxsX29uX2lucHV0X3doZW4gPSBDYWxsX29uX2lucHV0X3doZW4uVGV4dF9jaGFuZ2VkKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID8ocGxhY2Vob2xkZXIgPSBcIlwiKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS50ZXh0YXJlYVxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChbIEF0dHIucGxhY2Vob2xkZXIgcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICA7IENhbGxfb25faW5wdXRfd2hlbi5saXN0ZW5lciBjYWxsX29uX2lucHV0X3doZW4gKGZ1biBfZXYgdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgb25faW5wdXQgdmFsdWUpXG4gICAgICAgICAgICAgOyBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSB2YWx1ZSB+ZjpPcHRpb24ucmV0dXJuXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgW11cbiAgOztcblxuICAoKiBBY2NvcmRpbmcgdG9cbiAgICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0L2NvbG9yI1ZhbHVlIHRoZVxuICAgICB2YWx1ZSBtdXN0IGJlIHNldCBpbiBoZXggZm9ybWF0IGFuZCB3aWxsIGFsd2F5cyBjb21lcyBiYWNrIGluIGhleCBmb3JtYXQuICopXG4gIGxldCBjb2xvcl9waWNrZXJcbiAgICAgICAgPyhleHRyYV9hdHRyID0gQXR0ci5lbXB0eSlcbiAgICAgICAgPyhjYWxsX29uX2lucHV0X3doZW4gPSBDYWxsX29uX2lucHV0X3doZW4uVGV4dF9jaGFuZ2VkKVxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCAoYEhleCB2YWx1ZV8pID0gdmFsdWUgaW5cbiAgICBbIEF0dHIuKHR5cGVfIFwiY29sb3JcIiBAIHZhbHVlX3Byb3AgdmFsdWVfIEAgZXh0cmFfYXR0cilcbiAgICA7IENhbGxfb25faW5wdXRfd2hlbi5saXN0ZW5lciBjYWxsX29uX2lucHV0X3doZW4gKGZ1biBfZXYgcyAtPiBvbl9pbnB1dCAoYEhleCBzKSlcbiAgICBdXG4gICAgfD4gaW5wdXRfbm9kZSA/ZGlzYWJsZWQgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5lbmRcblxubW9kdWxlIEJ1dHRvbiA9IHN0cnVjdFxuICBsZXQgd2l0aF92YWxpZGF0aW9uXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB0ZXh0XG4gICAgICAgIH52YWxpZGF0aW9uXG4gICAgICAgIH5vbl9jbGlja1xuICAgID1cbiAgICBtYXRjaCB2YWxpZGF0aW9uIHdpdGhcbiAgICB8IE9rIHJlc3VsdCAtPlxuICAgICAgTm9kZS5idXR0b25cbiAgICAgICAgfmF0dHJzOlxuICAgICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgICAoWyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrIHJlc3VsdCk7IEF0dHIudHlwZV8gXCJidXR0b25cIiBdXG4gICAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAgICAgXVxuICAgICAgICBbIE5vZGUudGV4dCB0ZXh0IF1cbiAgICB8IEVycm9yIHJlYXNvbiAtPlxuICAgICAgTm9kZS5idXR0b25cbiAgICAgICAgfmF0dHJzOlxuICAgICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgICAoWyBBdHRyLmRpc2FibGVkXG4gICAgICAgICAgICAgICA7IEF0dHIudHlwZV8gXCJidXR0b25cIlxuICAgICAgICAgICAgICAgOyBBdHRyLmNyZWF0ZSBcInRvb2x0aXBcIiByZWFzb25cbiAgICAgICAgICAgICAgIDsgQXR0ci5jcmVhdGUgXCJ0b29sdGlwLXBvc2l0aW9uXCIgXCJ0b3BcIlxuICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICAgIF1cbiAgICAgICAgWyBOb2RlLnRleHQgdGV4dCBdXG4gIDs7XG5cbiAgbGV0IHNpbXBsZVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB0ZXh0XG4gICAgICAgIH5vbl9jbGlja1xuICAgID1cbiAgICBOb2RlLmJ1dHRvblxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJidXR0b25cIjsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl9jbGljayAoKSkgXVxuICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgWyBOb2RlLnRleHQgdGV4dCBdXG4gIDs7XG5lbmRcblxubW9kdWxlIFJhZGlvX2J1dHRvbnMgPSBzdHJ1Y3RcbiAgbGV0IGltcGxcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID8oc3R5bGUgOiBTZWxlY3RhYmxlX3N0eWxlLnQgPSBOYXRpdmUpXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfm9yaWVudGF0aW9uXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH5vbl9jbGlja1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgICAgICB+ZXF1YWxcbiAgICAgICAgdmFsdWVzXG4gICAgPVxuICAgIGxldCBpbnB1dF9hdHRycywgbGFiZWxfYXR0cnMgPVxuICAgICAgbWF0Y2ggc3R5bGUgd2l0aFxuICAgICAgfCBOYXRpdmUgLT4gW10sIGZ1biB+Y2hlY2tlZDpfIC0+IFtdXG4gICAgICB8IEJ1dHRvbl9saWtlIHsgZXh0cmFfYXR0cnMgfSAtPlxuICAgICAgICBbIEF0dHIuc3R5bGUgU2VsZWN0YWJsZV9zdHlsZS5oaWRlX25hdGl2ZV9pbnB1dHMgXSwgZXh0cmFfYXR0cnNcbiAgICBpblxuICAgIHN0cnVjdHVyYWxfbGlzdFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gICAgICB+b3JpZW50YXRpb25cbiAgICAgIChbIEF0dHIuY2xhc3NlcyBbIFwid2lkZ2V0LXJhZGlvLWJ1dHRvbnNcIjsgXCJyYWRpby1idXR0b24tY29udGFpbmVyXCIgXSBdXG4gICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgKExpc3QubWFwIHZhbHVlcyB+ZjooZnVuIGl0ZW0gLT5cbiAgICAgICAgIGxldCBjaGVja2VkID0gT3B0aW9uLnZhbHVlX21hcCBzZWxlY3RlZCB+ZGVmYXVsdDpmYWxzZSB+ZjooZXF1YWwgaXRlbSkgaW5cbiAgICAgICAgIE5vZGUubGFiZWxcbiAgICAgICAgICAgfmF0dHJzOlsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKSAobGFiZWxfYXR0cnMgfmNoZWNrZWQpIF1cbiAgICAgICAgICAgWyBOb2RlLmlucHV0XG4gICAgICAgICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICA7IEF0dHIubmFtZSBuYW1lXG4gICAgICAgICAgICAgICAgICA7IEF0dHIuY2xhc3NlcyBbIFwicmFkaW8tYnV0dG9uXCIgXVxuICAgICAgICAgICAgICAgICAgOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrIGl0ZW0pXG4gICAgICAgICAgICAgICAgICA7IEF0dHIuYm9vbF9wcm9wZXJ0eSBcImNoZWNrZWRcIiBjaGVja2VkXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICBAIGlucHV0X2F0dHJzXG4gICAgICAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAoKVxuICAgICAgICAgICA7IE5vZGUudGV4dCAodG9fc3RyaW5nIGl0ZW0pXG4gICAgICAgICAgIF0pKVxuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/c3R5bGVcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIEUgOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH5vbl9jbGlja1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgdmFsdWVzXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c3R5bGVcbiAgICAgIH5vcmllbnRhdGlvbjpgVmVydGljYWxcbiAgICAgIH5uYW1lXG4gICAgICB+b25fY2xpY2tcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpFLnRvX3N0cmluZ1xuICAgICAgfmVxdWFsOkUuZXF1YWxcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgICAgdmFsdWVzXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc19ob3Jpem9udGFsXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3N0eWxlXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBFIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+bmFtZVxuICAgICAgICB+b25fY2xpY2tcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIHZhbHVlc1xuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3N0eWxlXG4gICAgICB+b3JpZW50YXRpb246YEhvcml6b250YWxcbiAgICAgIH5uYW1lXG4gICAgICB+b25fY2xpY2tcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpFLnRvX3N0cmluZ1xuICAgICAgfmVxdWFsOkUuZXF1YWxcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgICAgdmFsdWVzXG4gIDs7XG5lbmRcblxubW9kdWxlIEZpbGVfc2VsZWN0ID0gc3RydWN0XG4gIG1vZHVsZSBKcyA9IEpzX29mX29jYW1sLkpzXG5cbiAgbGV0IGFjY2VwdF9hdHRycyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IEF0dHIuZW1wdHlcbiAgICB8IFNvbWUgYWNjZXB0cyAtPlxuICAgICAgQXR0ci5jcmVhdGVcbiAgICAgICAgXCJhY2NlcHRcIlxuICAgICAgICAoTGlzdC5tYXAgYWNjZXB0cyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgfCBgRXh0ZW5zaW9uIHMgLT4gaWYgU3RyaW5nLmlzX3ByZWZpeCBzIH5wcmVmaXg6XCIuXCIgdGhlbiBzIGVsc2UgXCIuXCIgXiBzXG4gICAgICAgICAgIHwgYE1pbWV0eXBlIHMgLT4gcylcbiAgICAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIilcbiAgOztcblxuICBsZXQgbGlzdFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID9hY2NlcHRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS5pbnB1dFxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJmaWxlXCJcbiAgICAgICAgICAgICA7IGFjY2VwdF9hdHRycyBhY2NlcHRcbiAgICAgICAgICAgICA7IEF0dHIuY3JlYXRlIFwibXVsdGlwbGVcIiBcIlwiXG4gICAgICAgICAgICAgOyBBdHRyLm9uX2ZpbGVfaW5wdXQgKGZ1biBfZXYgZmlsZV9saXN0IC0+XG4gICAgICAgICAgICAgICAgIGxldCBmaWxlcyA9XG4gICAgICAgICAgICAgICAgICAgTGlzdC5pbml0IGZpbGVfbGlzdCMjLmxlbmd0aCB+ZjooZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGZpbGVfbGlzdCMjaXRlbSBpXG4gICAgICAgICAgICAgICAgICAgICB8PiBKcy5PcHQudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICB8PiBPcHRpb24udmFsdWVfZXhuIH5tZXNzYWdlOlslc3RyaW5nIFwiY291bGRuJ3QgZ2V0IGZpbGUgJXtpI0ludH1cIl0pXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIG9uX2lucHV0IGZpbGVzKVxuICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAgIF1cbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IHNpbmdsZVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID9hY2NlcHRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS5pbnB1dFxuICAgICAgfmF0dHJzOlxuICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJmaWxlXCJcbiAgICAgICAgICAgICA7IGFjY2VwdF9hdHRycyBhY2NlcHRcbiAgICAgICAgICAgICA7IEF0dHIub25fZmlsZV9pbnB1dCAoZnVuIF9ldiBmaWxlX2xpc3QgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGZpbGUgPSBmaWxlX2xpc3QjI2l0ZW0gMCB8PiBKcy5PcHQudG9fb3B0aW9uIGluXG4gICAgICAgICAgICAgICAgIG9uX2lucHV0IGZpbGUpXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgKClcbiAgOztcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAoQykgSmVhbi1DaHJpc3RvcGhlIEZpbGxpYXRyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIFRoaXMgc29mdHdhcmUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAgICAqKVxuKCogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAqKVxuKCogIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgICAgICAgICAgICAqKVxuKCogIGRlc2NyaWJlZCBpbiBmaWxlIExJQ0VOU0UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAgICAqKVxuKCogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAqKVxuKCogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKnMgTWFwcyBvZiBpbnRlZ2VycyBpbXBsZW1lbnRlZCBhcyBQYXRyaWNpYSB0cmVlcywgZm9sbG93aW5nIENocmlzXG4gICAgT2thc2FraSBhbmQgQW5kcmV3IEdpbGwncyBwYXBlciB7XFxlbSBGYXN0IE1lcmdlYWJsZSBJbnRlZ2VyIE1hcHN9XG4gICAgKHtcXHR0XFxzbWFsbCBodHRwOi8vd3d3LmNzLmNvbHVtYmlhLmVkdS9cXH57fWNkby9wYXBlcnMuaHRtbFxcI21sOThtYXBzfSkuXG4gICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIG1vZHVsZSBbUHRzZXRdIHdoaWNoIGlzIGFsc28gYmFzZWQgb24gdGhlXG4gICAgc2FtZSBkYXRhLXN0cnVjdHVyZS4gKilcblxudHlwZSBrZXkgPSBpbnRcblxudHlwZSAnYSB0ID1cbiAgfCBFbXB0eVxuICB8IExlYWYgb2YgaW50ICogJ2FcbiAgfCBCcmFuY2ggb2YgaW50ICogaW50ICogJ2EgdCAqICdhIHRcblxubGV0IGVtcHR5ID0gRW1wdHlcblxubGV0IGlzX2VtcHR5IHQgPSB0ID0gRW1wdHlcblxubGV0IHplcm9fYml0IGsgbSA9IChrIGxhbmQgbSkgPT0gMFxuXG5sZXQgcmVjIG1lbSBrID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBmYWxzZVxuICB8IExlYWYgKGosXykgLT4gayA9PSBqXG4gIHwgQnJhbmNoIChfLCBtLCBsLCByKSAtPiBtZW0gayAoaWYgemVyb19iaXQgayBtIHRoZW4gbCBlbHNlIHIpXG5cbmxldCByZWMgZmluZCBrID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGsgPT0gaiB0aGVuIHggZWxzZSByYWlzZSBOb3RfZm91bmRcbiAgfCBCcmFuY2ggKF8sIG0sIGwsIHIpIC0+IGZpbmQgayAoaWYgemVyb19iaXQgayBtIHRoZW4gbCBlbHNlIHIpXG5cbmxldCBmaW5kX29wdCBrIG0gPSB0cnkgU29tZSAoZmluZCBrIG0pIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuKCogTm90ZTogZmluZF9maXJzdC9sYXN0IGhhdmUgdG8gbG9vayBpbiBib3RoIHN1YnRyZWVzXG4gICBhcyB0aGVzZSBhcmUgbGl0dGxlLWVuZGlhbiBQYXRyaWNpYSB0cmVlcyAqKVxubGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiBTb21lIChqLHgpIGVsc2UgTm9uZVxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2ZpcnN0X29wdCBmIGwsIGZpbmRfZmlyc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT5cbiAgICAgICAgaWYgbGsgPCByayB0aGVuIFNvbWUgKGxrLGx2KSBlbHNlIFNvbWUgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IFNvbWUgdlxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG5cbmxldCBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gKGoseCkgZWxzZSByYWlzZSBOb3RfZm91bmRcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9maXJzdF9vcHQgZiBsLCBmaW5kX2ZpcnN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+IGlmIGxrIDwgcmsgdGhlbiAobGssbHYpIGVsc2UgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiBTb21lIChqLHgpIGVsc2UgTm9uZVxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2xhc3Rfb3B0IGYgbCwgZmluZF9sYXN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+XG4gICAgICAgIGlmIGxrID4gcmsgdGhlbiBTb21lIChsayxsdikgZWxzZSBTb21lIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiBTb21lIHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuXG5sZXQgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gKGoseCkgZWxzZSByYWlzZSBOb3RfZm91bmRcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9sYXN0X29wdCBmIGwsIGZpbmRfbGFzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPiBpZiBsayA+IHJrIHRoZW4gKGxrLGx2KSBlbHNlIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiB2XG4gICAgfCBOb25lLCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgbG93ZXN0X2JpdCB4ID0geCBsYW5kICgteClcblxubGV0IGJyYW5jaGluZ19iaXQgcDAgcDEgPSBsb3dlc3RfYml0IChwMCBseG9yIHAxKVxuXG5sZXQgbWFzayBwIG0gPSBwIGxhbmQgKG0tMSlcblxubGV0IGpvaW4gKHAwLHQwLHAxLHQxKSA9XG4gIGxldCBtID0gYnJhbmNoaW5nX2JpdCBwMCBwMSBpblxuICBpZiB6ZXJvX2JpdCBwMCBtIHRoZW5cbiAgICBCcmFuY2ggKG1hc2sgcDAgbSwgbSwgdDAsIHQxKVxuICBlbHNlXG4gICAgQnJhbmNoIChtYXNrIHAwIG0sIG0sIHQxLCB0MClcblxubGV0IG1hdGNoX3ByZWZpeCBrIHAgbSA9IChtYXNrIGsgbSkgPT0gcFxuXG5sZXQgYWRkIGsgeCB0ID1cbiAgbGV0IHJlYyBpbnMgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTGVhZiAoayx4KVxuICAgIHwgTGVhZiAoaixfKSBhcyB0IC0+XG4gICAgICBpZiBqID09IGsgdGhlbiBMZWFmIChrLHgpIGVsc2Ugam9pbiAoaywgTGVhZiAoayx4KSwgaiwgdClcbiAgICB8IEJyYW5jaCAocCxtLHQwLHQxKSBhcyB0IC0+XG4gICAgICBpZiBtYXRjaF9wcmVmaXggayBwIG0gdGhlblxuXHRpZiB6ZXJvX2JpdCBrIG0gdGhlblxuXHQgIEJyYW5jaCAocCwgbSwgaW5zIHQwLCB0MSlcblx0ZWxzZVxuXHQgIEJyYW5jaCAocCwgbSwgdDAsIGlucyB0MSlcbiAgICAgIGVsc2Vcblx0am9pbiAoaywgTGVhZiAoayx4KSwgcCwgdClcbiAgaW5cbiAgaW5zIHRcblxubGV0IHNpbmdsZXRvbiBrIHYgPVxuICBhZGQgayB2IGVtcHR5XG5cbmxldCBicmFuY2ggPSBmdW5jdGlvblxuICB8IChfLF8sRW1wdHksdCkgLT4gdFxuICB8IChfLF8sdCxFbXB0eSkgLT4gdFxuICB8IChwLG0sdDAsdDEpICAgLT4gQnJhbmNoIChwLG0sdDAsdDEpXG5cbmxldCByZW1vdmUgayB0ID1cbiAgbGV0IHJlYyBybXYgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKGosXykgYXMgdCAtPiBpZiBrID09IGogdGhlbiBFbXB0eSBlbHNlIHRcbiAgICB8IEJyYW5jaCAocCxtLHQwLHQxKSBhcyB0IC0+XG4gICAgICBpZiBtYXRjaF9wcmVmaXggayBwIG0gdGhlblxuXHRpZiB6ZXJvX2JpdCBrIG0gdGhlblxuXHQgIGJyYW5jaCAocCwgbSwgcm12IHQwLCB0MSlcblx0ZWxzZVxuXHQgIGJyYW5jaCAocCwgbSwgdDAsIHJtdiB0MSlcbiAgICAgIGVsc2Vcblx0dFxuICBpblxuICBybXYgdFxuXG5sZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwXG4gIHwgTGVhZiBfIC0+IDFcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gY2FyZGluYWwgdDAgKyBjYXJkaW5hbCB0MVxuXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBMZWFmIChrLHgpIC0+IGYgayB4XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGl0ZXIgZiB0MDsgaXRlciBmIHQxXG5cbmxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoayx4KSAtPiBMZWFmIChrLCBmIHgpXG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IEJyYW5jaCAocCwgbSwgbWFwIGYgdDAsIG1hcCBmIHQxKVxuXG5sZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLHgpIC0+IExlYWYgKGssIGYgayB4KVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBCcmFuY2ggKHAsIG0sIG1hcGkgZiB0MCwgbWFwaSBmIHQxKVxuXG5sZXQgcmVjIGZvbGQgZiBzIGFjY3UgPSBtYXRjaCBzIHdpdGhcbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgTGVhZiAoayx4KSAtPiBmIGsgeCBhY2N1XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGZvbGQgZiB0MCAoZm9sZCBmIHQxIGFjY3UpXG5cbmxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiB0cnVlXG4gIHwgTGVhZiAoaywgdikgIC0+IHAgayB2XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGZvcl9hbGwgcCB0MCAmJiBmb3JfYWxsIHAgdDFcblxubGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gZmFsc2VcbiAgfCBMZWFmIChrLCB2KSAtPiBwIGsgdlxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBleGlzdHMgcCB0MCB8fCBleGlzdHMgcCB0MVxuXG5sZXQgcmVjIGZpbHRlciBwciA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLCB2KSBhcyB0IC0+IGlmIHByIGsgdiB0aGVuIHQgZWxzZSBFbXB0eVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBicmFuY2ggKHAsIG0sIGZpbHRlciBwciB0MCwgZmlsdGVyIHByIHQxKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgcHIgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoaywgdikgLT4gKG1hdGNoIHByIGsgdiB3aXRoIFNvbWUgdicgLT4gTGVhZiAoaywgdicpIHwgTm9uZSAtPiBFbXB0eSlcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gYnJhbmNoIChwLCBtLCBmaWx0ZXJfbWFwIHByIHQwLCBmaWx0ZXJfbWFwIHByIHQxKVxuXG5sZXQgcGFydGl0aW9uIHAgcyA9XG4gIGxldCByZWMgcGFydCAodCxmIGFzIGFjYykgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgfCBMZWFmIChrLCB2KSAtPiBpZiBwIGsgdiB0aGVuIChhZGQgayB2IHQsIGYpIGVsc2UgKHQsIGFkZCBrIHYgZilcbiAgICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBwYXJ0IChwYXJ0IGFjYyB0MCkgdDFcbiAgaW5cbiAgcGFydCAoRW1wdHksIEVtcHR5KSBzXG5cbmxldCByZWMgY2hvb3NlID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChrLCB2KSAtPiAoaywgdilcbiAgfCBCcmFuY2ggKF8sIF8sIHQwLCBfKSAtPiBjaG9vc2UgdDAgICAoKiB3ZSBrbm93IHRoYXQgW3QwXSBpcyBub24tZW1wdHkgKilcblxubGV0IHJlYyBjaG9vc2Vfb3B0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaywgdikgLT4gU29tZSAoaywgdilcbiAgfCBCcmFuY2ggKF8sIF8sIHQwLCBfKSAtPiBjaG9vc2Vfb3B0IHQwICAgKCogd2Uga25vdyB0aGF0IFt0MF0gaXMgbm9uLWVtcHR5ICopXG5cbmxldCBzcGxpdCB4IG0gPVxuICBsZXQgY29sbCBrIHYgKGwsIGIsIHIpID1cbiAgICBpZiBrIDwgeCB0aGVuIGFkZCBrIHYgbCwgYiwgclxuICAgIGVsc2UgaWYgayA+IHggdGhlbiBsLCBiLCBhZGQgayB2IHJcbiAgICBlbHNlIGwsIFNvbWUgdiwgclxuICBpblxuICBmb2xkIGNvbGwgbSAoZW1wdHksIE5vbmUsIGVtcHR5KVxuXG5sZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChrLCB2KSAtPiAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbGV0IChrcywgXykgYXMgYnMgPSBtaW5fYmluZGluZyBzIGluXG4gICAgbGV0IChrdCwgXykgYXMgYnQgPSBtaW5fYmluZGluZyB0IGluXG4gICAgaWYga3MgPCBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IHJlYyBtaW5fYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChrLCB2KSAtPiBTb21lIChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBtYXRjaCAobWluX2JpbmRpbmdfb3B0IHMsIG1pbl9iaW5kaW5nX29wdCB0KSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IE5vbmUsIGJ0IC0+IGJ0XG4gICAgfCBicywgTm9uZSAtPiBic1xuICAgIHwgKFNvbWUgKGtzLCBfKSBhcyBicyksIChTb21lIChrdCwgXykgYXMgYnQpIC0+XG4gICAgICBpZiBrcyA8IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgcmVjIG1heF9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChrLCB2KSAtPiAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbGV0IChrcywgXykgYXMgYnMgPSBtYXhfYmluZGluZyBzIGluXG4gICAgbGV0IChrdCwgXykgYXMgYnQgPSBtYXhfYmluZGluZyB0IGluXG4gICAgaWYga3MgPiBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IHJlYyBtYXhfYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChrLCB2KSAtPiBTb21lIChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBtYXRjaCBtYXhfYmluZGluZ19vcHQgcywgbWF4X2JpbmRpbmdfb3B0IHQgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCBOb25lLCBidCAtPiBidFxuICAgIHwgYnMsIE5vbmUgLT4gYnNcbiAgICB8IChTb21lIChrcywgXykgYXMgYnMpLCAoU29tZSAoa3QsIF8pIGFzIGJ0KSAtPlxuICAgICAgaWYga3MgPiBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IGJpbmRpbmdzIG0gPVxuICBmb2xkIChmdW4gayB2IGFjYyAtPiAoaywgdikgOjogYWNjKSBtIFtdXG5cbigqIHdlIG9yZGVyIGNvbnN0cnVjdG9ycyBhcyBFbXB0eSA8IExlYWYgPCBCcmFuY2ggKilcbmxldCBjb21wYXJlIGNtcCB0MSB0MiA9XG4gIGxldCByZWMgY29tcGFyZV9hdXggdDEgdDIgPSBtYXRjaCB0MSx0MiB3aXRoXG4gICAgfCBFbXB0eSwgRW1wdHkgLT4gMFxuICAgIHwgRW1wdHksIF8gLT4gLTFcbiAgICB8IF8sIEVtcHR5IC0+IDFcbiAgICB8IExlYWYgKGsxLHgxKSwgTGVhZiAoazIseDIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgazEgazIgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZSBjbXAgeDEgeDJcbiAgICB8IExlYWYgXywgQnJhbmNoIF8gLT4gLTFcbiAgICB8IEJyYW5jaCBfLCBMZWFmIF8gLT4gMVxuICAgIHwgQnJhbmNoIChwMSxtMSxsMSxyMSksIEJyYW5jaCAocDIsbTIsbDIscjIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgcDEgcDIgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuXHRsZXQgYyA9IGNvbXBhcmUgbTEgbTIgaW5cblx0aWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2F1eCBsMSBsMiBpblxuICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgY29tcGFyZV9hdXggcjEgcjJcbiAgaW5cbiAgY29tcGFyZV9hdXggdDEgdDJcblxubGV0IGVxdWFsIGVxIHQxIHQyID1cbiAgbGV0IHJlYyBlcXVhbF9hdXggdDEgdDIgPSBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgKGsxLHgxKSwgTGVhZiAoazIseDIpIC0+IGsxID0gazIgJiYgZXEgeDEgeDJcbiAgICB8IEJyYW5jaCAocDEsbTEsbDEscjEpLCBCcmFuY2ggKHAyLG0yLGwyLHIyKSAtPlxuICAgICAgcDEgPSBwMiAmJiBtMSA9IG0yICYmIGVxdWFsX2F1eCBsMSBsMiAmJiBlcXVhbF9hdXggcjEgcjJcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgZXF1YWxfYXV4IHQxIHQyXG5cbmxldCBtZXJnZSBmIG0xIG0yID1cbiAgbGV0IGFkZCBtIGsgPSBmdW5jdGlvbiBOb25lIC0+IG0gfCBTb21lIHYgLT4gYWRkIGsgdiBtIGluXG4gICgqIGZpcnN0IGNvbnNpZGVyIGFsbCBiaW5kaW5ncyBpbiBtMSAqKVxuICBsZXQgbSA9IGZvbGRcbiAgICAgIChmdW4gazEgdjEgbSAtPiBhZGQgbSBrMSAoZiBrMSAoU29tZSB2MSkgKGZpbmRfb3B0IGsxIG0yKSkpIG0xIGVtcHR5IGluXG4gICgqIHRoZW4gYmluZGluZ3MgaW4gbTIgdGhhdCBhcmUgbm90IGluIG0xICopXG4gIGZvbGQgKGZ1biBrMiB2MiBtIC0+IGlmIG1lbSBrMiBtMSB0aGVuIG0gZWxzZSBhZGQgbSBrMiAoZiBrMiBOb25lIChTb21lIHYyKSkpXG4gICAgbTIgbVxuXG5sZXQgdXBkYXRlIHggZiBtID1cbiAgbWF0Y2ggZiAoZmluZF9vcHQgeCBtKSB3aXRoXG4gIHwgTm9uZSAtPiByZW1vdmUgeCBtXG4gIHwgU29tZSB6IC0+IGFkZCB4IHogbVxuXG5sZXQgdW5zaWduZWRfbHQgbiBtID0gbiA+PSAwICYmIChtIDwgMCB8fCBuIDwgbSlcblxubGV0IHJlYyB1bmlvbiBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSwgdCAgLT4gdFxuICB8IHQsIEVtcHR5ICAtPiB0XG4gIHwgTGVhZiAoayx2MSksIHQgLT5cbiAgICAgIHVwZGF0ZSBrIChmdW5jdGlvbiBOb25lIC0+IFNvbWUgdjEgfCBTb21lIHYyIC0+IGYgayB2MSB2MikgdFxuICB8IHQsIExlYWYgKGssdjIpIC0+XG4gICAgICB1cGRhdGUgayAoZnVuY3Rpb24gTm9uZSAtPiBTb21lIHYyIHwgU29tZSB2MSAtPiBmIGsgdjEgdjIpIHRcbiAgfCAoQnJhbmNoIChwLG0sczAsczEpIGFzIHMpLCAoQnJhbmNoIChxLG4sdDAsdDEpIGFzIHQpIC0+XG4gICAgICBpZiBtID09IG4gJiYgbWF0Y2hfcHJlZml4IHEgcCBtIHRoZW5cblx0KCogVGhlIHRyZWVzIGhhdmUgdGhlIHNhbWUgcHJlZml4LiBNZXJnZSB0aGUgc3VidHJlZXMuICopXG5cdGJyYW5jaCAocCwgbSwgdW5pb24gZiAoczAsdDApLCB1bmlvbiBmIChzMSx0MSkpXG4gICAgICBlbHNlIGlmIHVuc2lnbmVkX2x0IG0gbiAmJiBtYXRjaF9wcmVmaXggcSBwIG0gdGhlblxuXHQoKiBbcV0gY29udGFpbnMgW3BdLiBNZXJnZSBbdF0gd2l0aCBhIHN1YnRyZWUgb2YgW3NdLiAqKVxuXHRpZiB6ZXJvX2JpdCBxIG0gdGhlblxuXHQgIGJyYW5jaCAocCwgbSwgdW5pb24gZiAoczAsdCksIHMxKVxuICAgICAgICBlbHNlXG5cdCAgYnJhbmNoIChwLCBtLCBzMCwgdW5pb24gZiAoczEsdCkpXG4gICAgICBlbHNlIGlmIHVuc2lnbmVkX2x0IG4gbSAmJiBtYXRjaF9wcmVmaXggcCBxIG4gdGhlblxuXHQoKiBbcF0gY29udGFpbnMgW3FdLiBNZXJnZSBbc10gd2l0aCBhIHN1YnRyZWUgb2YgW3RdLiAqKVxuXHRpZiB6ZXJvX2JpdCBwIG4gdGhlblxuXHQgIGJyYW5jaCAocSwgbiwgdW5pb24gZiAocyx0MCksIHQxKVxuXHRlbHNlXG5cdCAgYnJhbmNoIChxLCBuLCB0MCwgdW5pb24gZiAocyx0MSkpXG4gICAgICBlbHNlXG5cdCgqIFRoZSBwcmVmaXhlcyBkaXNhZ3JlZS4gKilcblx0am9pbiAocCwgcywgcSwgdClcblxubGV0IHVuaW9uIGYgcyB0ID0gdW5pb24gZiAocyx0KVxuXG5sZXQgdG9fc2VxIG0gPVxuICBsZXQgcmVjIHByZXBlbmRfc2VxIG0gcyA9IG1hdGNoIG0gd2l0aFxuICAgIHwgRW1wdHkgLT4gc1xuICAgIHwgTGVhZiAoaywgdikgLT4gZnVuICgpIC0+IFNlcS5Db25zKChrLHYpLCBzKVxuICAgIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPiBwcmVwZW5kX3NlcSBsIChwcmVwZW5kX3NlcSByIHMpXG4gIGluXG4gIHByZXBlbmRfc2VxIG0gU2VxLmVtcHR5XG5cbmxldCB0b19zZXFfZnJvbSBrIG0gPVxuICBsZXQgcmVjIHByZXBlbmRfc2VxIG0gcyA9IG1hdGNoIG0gd2l0aFxuICAgIHwgRW1wdHkgLT4gc1xuICAgIHwgTGVhZiAoa2V5LCB2KSAtPiBpZiBrZXkgPj0gayB0aGVuIGZ1biAoKSAtPiBTZXEuQ29ucygoa2V5LHYpLCBzKSBlbHNlIHNcbiAgICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT4gcHJlcGVuZF9zZXEgbCAocHJlcGVuZF9zZXEgciBzKVxuICBpblxuICBwcmVwZW5kX3NlcSBtIFNlcS5lbXB0eVxuXG5sZXQgYWRkX3NlcSBzIG0gPVxuICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoaywgdikgLT4gYWRkIGsgdiBtKSBtIHNcblxubGV0IG9mX3NlcSBzID1cbiAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssIHYpIC0+IGFkZCBrIHYgbSkgZW1wdHkgc1xuIiwibGV0IHV0Zjhfb2ZfY29kZSBidWYgeCA9XG4gIGxldCBhZGQgPSBCdWZmZXIuYWRkX2NoYXIgaW5cblxuICAoKiBTdHJhaWdodCA8PSBkb2Vzbid0IHdvcmsgd2l0aCBzaWduZWQgMzEtYml0IGludHMgKilcbiAgbGV0IG1heGJpdHMgbiB4ID0geCBsc3IgbiA9IDAgaW5cblxuICBpZiBtYXhiaXRzIDcgeCB0aGVuICgqIDcgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociB4KVxuICBlbHNlIGlmIG1heGJpdHMgMTEgeCB0aGVuIChcbiAgICAoKiA1ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDAxMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMTYgeCB0aGVuIChcbiAgICAoKiA0ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTEwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMDAxMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMjEgeCB0aGVuIChcbiAgICAoKiAzICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDAwMDExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMjYgeCB0aGVuIChcbiAgICAoKiAyICsgNiArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTExMDAwIGxvciAoKHggbHNyIDI0KSBsYW5kIDBiMDAwMDAwMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIChcbiAgICBhc3NlcnQgKG1heGJpdHMgMzEgeCk7XG4gICAgKCogMSArIDYgKyA2ICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTExMDAgbG9yICgoeCBsc3IgMzApIGxhbmQgMGIwMDAwMDAwMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAyNCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcblxubGV0IGNvZGVfb2Zfc3Vycm9nYXRlX3BhaXIgaSBqID1cbiAgbGV0IGhpZ2gxMCA9IGkgLSAweEQ4MDAgaW5cbiAgbGV0IGxvdzEwID0gaiAtIDB4REMwMCBpblxuICAweDEwMDAwICsgKChoaWdoMTAgbHNsIDEwKSBsb3IgbG93MTApXG5cbmxldCB1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIGJ1ZiBpIGogPVxuICB1dGY4X29mX2NvZGUgYnVmIChjb2RlX29mX3N1cnJvZ2F0ZV9wYWlyIGkgailcbiIsImxldCB2ZXJzaW9uID0gXCIyLjIuMlwiXG5cbmV4Y2VwdGlvbiBKc29uX2Vycm9yIG9mIHN0cmluZ1xuXG5sZXQganNvbl9lcnJvciBzID0gcmFpc2UgKEpzb25fZXJyb3IgcylcblxuZXhjZXB0aW9uIEVuZF9vZl9hcnJheVxuZXhjZXB0aW9uIEVuZF9vZl9vYmplY3RcbmV4Y2VwdGlvbiBFbmRfb2ZfdHVwbGVcbmV4Y2VwdGlvbiBFbmRfb2ZfaW5wdXRcblxudHlwZSBsZXhlcl9zdGF0ZSA9IHtcbiAgYnVmIDogQnVmZmVyLnQ7ICgqIEJ1ZmZlciB1c2VkIHRvIGFjY3VtdWxhdGUgc3Vic3RyaW5ncyAqKVxuICBtdXRhYmxlIGxudW0gOiBpbnQ7ICgqIEN1cnJlbnQgbGluZSBudW1iZXIgKHN0YXJ0aW5nIGZyb20gMSkgKilcbiAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgICAoKiBBYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBjdXJyZW50IGxpbmVcbiAgICAgICAgIChzdGFydGluZyBmcm9tIDApICopXG4gIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uOyAoKiBOYW1lIGRlc2NyaWJpbmcgdGhlIGlucHV0IGZpbGUgKilcbn1cblxubW9kdWxlIExleGVyX3N0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IGxleGVyX3N0YXRlID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuZW5kXG5cbmxldCBpbml0X2xleGVyID9idWYgP2ZuYW1lID8obG51bSA9IDEpICgpID1cbiAgbGV0IGJ1ZiA9IG1hdGNoIGJ1ZiB3aXRoIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAyNTYgfCBTb21lIGJ1ZiAtPiBidWYgaW5cbiAgeyBidWY7IGxudW07IGJvbCA9IDA7IGZuYW1lIH1cbiIsImxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanVuayBidWYgbiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyBidWYgbiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanVua19yZWMgYnVmIG4gbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyIFwibGliL2xleGVyX3V0aWxzLm1sbFwiXG4gICAgICAgICggKCkgKVxuIyA5OCBcImxpYi9sZXhlcl91dGlscy5tbFwiXG5cbiAgfCAxIC0+XG4jIDMgXCJsaWIvbGV4ZXJfdXRpbHMubWxsXCJcbiAgICAgIChcbiAgICAgaWYgbiA8PSAwIHRoZW4gKClcbiAgICAgZWxzZSBiZWdpblxuICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgKExleGluZy5sZXhlbWVfY2hhciBsZXhidWYgMCk7XG4gICAgICAgcmVhZF9qdW5rIGJ1ZiAobiAtIDEpIGxleGJ1ZlxuICAgICBlbmRcbiAgICAgKVxuIyAxMDkgXCJsaWIvbGV4ZXJfdXRpbHMubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2p1bmtfcmVjIGJ1ZiBuIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDExIFwibGliL2xleGVyX3V0aWxzLm1sbFwiXG4gXG5sZXQgcmVhZF9qdW5rX3dpdGhvdXRfcG9zaXRpb25zIGJ1ZiBuIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gIGxldCBsZXhfYWJzX3BvcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyBpblxuICBsZXQgbGV4X3N0YXJ0X3BvcyA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gIHJlYWRfanVuayBidWYgbiBsZXhidWY7XG4gIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIGxleF9zdGFydF9wb3MgKyAxO1xuICBsZXhidWYubGV4X2Fic19wb3MgPC0gbGV4X2Fic19wb3NcblxuIyAxMjUgXCJsaWIvbGV4ZXJfdXRpbHMubWxcIlxuIiwiXG4oKiogezMgVHlwZSBvZiB0aGUgSlNPTiB0cmVlfSAqKVxuXG50eXBlIHQgPVxuICAgIFtcbiAgICB8IGBOdWxsXG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgfCBgSW50IG9mIGludFxuICAgIHwgYEZsb2F0IG9mIGZsb2F0XG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX2Zsb2F0IG9iIGZcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcblxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9zdGRfZmxvYXQgb2IgZlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG5cbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cblxubGV0IHRvX2J1ZmZlciA/KHN1ZiA9IFwiXCIpID8oc3RkID0gZmFsc2UpIG9iIHggPVxuICBpZiBzdGQgdGhlblxuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgZWxzZVxuICAgIHdyaXRlX2pzb24gb2IgeDtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3VmXG5cbmxldCB0b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlwiKSA/c3RkIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgdG9fY2hhbm5lbCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvYyB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX291dHB1dCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvdXQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICAoKiB0aGlzIHJlcXVpcmVzIGFuIGludCBhbmQgbmV2ZXIgdXNlcyBpdC4gVGhpcyBpcyBkb25lIHRvIHByZXNlcnZlXG4gICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgdG8gbm90IGJyZWFrIHRoZSBzaWduYXR1ciBidXQgY2FuIHNhZmVseVxuICAgICBiZSBjaGFuZ2VkIHRvIHJlcXVpcmUgdW5pdCBpbiBhIGZ1dHVyZSBjb21wYXRpYmlsaXR5LWJyZWFraW5nXG4gICAgIHJlbGVhc2UgKilcbiAgbGV0IF8gOiBpbnQgPSBvdXQjb3V0cHV0IChCdWZmZXIuY29udGVudHMgb2IpIDAgKEJ1ZmZlci5sZW5ndGggb2IpIGluXG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgeCAtPiB4XG5cbm1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICB8IGBJbnQgeCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2ZfaW50IHgpXG4gICAgfCBgRmxvYXQgeCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgc3RkIHRoZW4gc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgICBlbHNlIGpzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgaW5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYFN0cmluZyBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcblxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbmVuZFxuXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEludCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBGbG9hdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUZcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFN0cmluZyB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICB8IGBJbnQgYSwgYEludCBiIC0+IGEgPSBiXG4gICAgfCBgRmxvYXQgYSwgYEZsb2F0IGIgLT4gYSA9IGJcbiAgICB8IGBTdHJpbmcgYSwgYFN0cmluZyBiIC0+IGEgPSBiXG4gICAgfCBgQXNzb2MgeHMsIGBBc3NvYyB5cyAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5cyA9IGZ1biAoa2V5LCBfKSAoa2V5JywgXykgLT4gU3RyaW5nLmNvbXBhcmUga2V5IGtleScgaW5cbiAgICAgIGxldCB4cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHhzIGluXG4gICAgICBsZXQgeXMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB5cyBpblxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgKGZ1biAoa2V5LCB2YWx1ZSkgKGtleScsIHZhbHVlJykgLT5cbiAgICAgICAgbWF0Y2gga2V5ID0ga2V5JyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+IGVxdWFsIHZhbHVlIHZhbHVlJykgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IF8gLT4gZmFsc2VcblxubGV0IHByZXR0eV9wcmludCA/c3RkIG91dCB4ID0gUHJldHR5LnBwID9zdGQgb3V0IHhcbmxldCBwcmV0dHlfdG9fc3RyaW5nID9zdGQgeCA9IFByZXR0eS50b19zdHJpbmcgP3N0ZCB4XG5sZXQgcHJldHR5X3RvX2NoYW5uZWwgP3N0ZCBvYyB4ID0gUHJldHR5LnRvX2NoYW5uZWwgP3N0ZCBvYyB4XG5cbiMgMSBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIG1vZHVsZSBMZXhpbmcgPVxuICAgICgqXG4gICAgICBXZSBvdmVycmlkZSBMZXhpbmcuZW5naW5lIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IHBvc2l0aW9uXG4gICAgICByZWNvcmQgZWFjaCB0aW1lIGEgcnVsZSBpcyBtYXRjaGVkLlxuICAgICAgVGhpcyByZWR1Y2VzIHRvdGFsIHBhcnNpbmcgdGltZSBieSBhYm91dCAzMSUuXG4gICAgKilcbiAgc3RydWN0XG4gICAgaW5jbHVkZSBMZXhpbmdcblxuICAgIGV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcblxuICAgIGxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gICAgICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICAgICAgKCpcbiAgICAgIGlmIHJlc3VsdCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgICAgIGVuZDtcbiAgICAgICopXG4gICAgICByZXN1bHRcbiAgZW5kXG5cbiAgKCogc2VlIGRlc2NyaXB0aW9uIGluIGNvbW1vbi5tbGkgKilcbiAgdHlwZSBsZXhlcl9zdGF0ZSA9IENvbW1vbi5MZXhlcl9zdGF0ZS50ID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBkZWMgYyA9XG4gICAgQ2hhci5jb2RlIGMgLSA0OFxuXG4gIGxldCBoZXggYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICcwJy4uJzknIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcbiAgICAgIHwgJ2EnLi4nZicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyArIDEwXG4gICAgICB8ICdBJy4uJ0YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyAxMFxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIGxldCBjdXN0b21fZXJyb3IgZGVzY3IgdiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBvZmZzID0gbGV4YnVmLmxleF9hYnNfcG9zIC0gMSBpblxuICAgIGxldCBib2wgPSB2LmJvbCBpblxuICAgIGxldCBwb3MxID0gb2ZmcyArIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIC0gYm9sIC0gMSBpblxuICAgIGxldCBwb3MyID0gbWF4IHBvczEgKG9mZnMgKyBsZXhidWYubGV4X2N1cnJfcG9zIC0gYm9sKSBpblxuICAgIGxldCBmaWxlX2xpbmUgPVxuICAgICAgbWF0Y2ggdi5mbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBcIkxpbmVcIlxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgUHJpbnRmLnNwcmludGYgXCJGaWxlICVzLCBsaW5lXCIgc1xuICAgIGluXG4gICAgbGV0IGJ5dGVzID1cbiAgICAgIGlmIHBvczEgPSBwb3MyIHRoZW5cbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCJieXRlICVpXCIgKHBvczErMSlcbiAgICAgIGVsc2VcbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCJieXRlcyAlaS0laVwiIChwb3MxKzEpIChwb3MyKzEpXG4gICAgaW5cbiAgICBsZXQgbXNnID0gUHJpbnRmLnNwcmludGYgXCIlcyAlaSwgJXM6XFxuJXNcIiBmaWxlX2xpbmUgdi5sbnVtIGJ5dGVzIGRlc2NyIGluXG4gICAgQ29tbW9uLmpzb25fZXJyb3IgbXNnXG5cblxuICBsZXQgbGV4ZXJfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJyVzJ1wiIGRlc2NyIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikpXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBsb25nX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQganVuayA9IExleGluZy5sZXhlbWUgbGV4YnVmIGluXG4gICAgbGV0IGJ1Zl9zaXplID0gMzIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBidWZfc2l6ZSBpblxuICAgIGxldCAoKSA9IExleGVyX3V0aWxzLnJlYWRfanVua193aXRob3V0X3Bvc2l0aW9ucyBidWYgYnVmX3NpemUgbGV4YnVmIGluXG4gICAgbGV0IGV4dHJhX2p1bmsgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAnJXMlcydcIiBkZXNjciBqdW5rIGV4dHJhX2p1bmspXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBtaW4xMCA9IG1pbl9pbnQgLyAxMCAtIChpZiBtaW5faW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcbiAgbGV0IG1heDEwID0gbWF4X2ludCAvIDEwICsgKGlmIG1heF9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuXG4gIGV4Y2VwdGlvbiBJbnRfb3ZlcmZsb3dcblxuICBsZXQgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPj0gbWF4MTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuICsgZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIHRyeSBgSW50IChleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWYpXG4gICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmXG5cbiAgbGV0IGV4dHJhY3RfbmVnYXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSAgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgMSBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPD0gbWluMTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuIC0gZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPiAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIHRyeSBgSW50IChleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWYpXG4gICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmXG5cbiAgbGV0IG5ld2xpbmUgdiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIHYubG51bSA8LSB2LmxudW0gKyAxO1xuICAgIHYuYm9sIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3NcblxuICBsZXQgYWRkX2xleGVtZSBidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgQnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbiAgbGV0IG1hcF9sZXhlbWUgZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBmIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlbikgMCBsZW5cblxuICB0eXBlIHZhcmlhbnRfa2luZCA9IFsgYEVkZ3lfYnJhY2tldCB8IGBTcXVhcmVfYnJhY2tldCB8IGBEb3VibGVfcXVvdGUgXVxuXG4jIDE1NCBcImxpYi9yZWFkLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIzNlxcMjU1XFwyMzdcXDI1NVxcMDAzXFwwMDBcXDIzOVxcMjU1XFwwMTZcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNDlcXDI1NVxcMDg1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NFxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDI1M1xcMjU1XFwwMTFcXDAwMFxcMjUyXFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjUxXFwyNTVcXDAyMVxcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDIyXFwwMDBcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIyXFwwMDBcXDAxMlxcMDAwXFwwMDhcXDAwMFxcMjUwXFwyNTVcXFxuICAgIFxcMTE5XFwwMDBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTYxXFwwMDBcXDE3MVxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDIwOVxcMDAwXFxcbiAgICBcXDI0MFxcMjU1XFwwMTFcXDAwMFxcMDM4XFwwMDBcXDI1MlxcMjU1XFwwNjVcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMTBcXDAwMFxcXG4gICAgXFwyNTJcXDI1NVxcMTYzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjM0XFwwMDBcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMDQ4XFwwMDFcXFxuICAgIFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDEyNlxcMDAxXFxcbiAgICBcXDE0OVxcMDAxXFwyNDlcXDI1NVxcMDM5XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDM4XFwwMDBcXDE4N1xcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNDhcXDAwMVxcMDE1XFwwMDJcXDI1NVxcMjU1XFwyMjBcXDAwMFxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMDM5XFwwMDJcXFxuICAgIFxcMTA5XFwwMDJcXDAxNFxcMDAxXFwwODhcXDAwMlxcMTY0XFwwMDJcXDE4N1xcMDAyXFwyMjVcXDAwMlxcMDEzXFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDFcXFxuICAgIFxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDFcXDAwNVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwwMjNcXDAwMFxcMjU0XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDBcXDA0OFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAxXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDEzN1xcMDAwXFwxMDRcXDAwMFxcMDg5XFwwMDBcXDA4OFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDBcXDEzN1xcMDAwXFwxNzdcXDAwMFxcMjU0XFwyNTVcXDE4M1xcMDAwXFwxNjhcXDAwMFxcMTY2XFwwMDBcXFxuICAgIFxcMTgzXFwwMDBcXDAwMlxcMDAwXFwyNTNcXDI1NVxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxODdcXDAwMFxcMDA0XFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDA1M1xcMDAyXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwxMDNcXDAwMVxcMjU1XFwyNTVcXDI0OFxcMDAyXFwyNTRcXDI1NVxcXG4gICAgXFwwMDZcXDAwM1xcMDMwXFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDUwXFwwMDNcXFxuICAgIFxcMDc0XFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwM1xcMDg0XFwwMDNcXDEwOFxcMDAzXFxcbiAgICBcXDI0OVxcMjU1XFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI0NFxcMDAwXFwxMjBcXDAwM1xcMTQyXFwwMDNcXDE3OVxcMDAwXFwxOTRcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDE5MFxcMDAwXFwxODhcXDAwMFxcMTg3XFwwMDBcXDE5M1xcMDAwXFwxODNcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDE5MVxcMDAwXFwyMDFcXDAwMFxcMjAwXFwwMDBcXDE5NlxcMDAwXFwyMDNcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwxNTdcXDAwM1xcMDk1XFwwMDNcXDE3NFxcMDAzXFwxOTZcXDAwM1xcMjA2XFwwMDNcXDIxNlxcMDAzXFwyMjhcXDAwM1xcXG4gICAgXFwyMzlcXDAwM1xcMDYwXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMDg3XFwwMDRcXDI1NVxcMjU1XFwxNDVcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjFcXDAwNFxcMjU1XFwyNTVcXDIyOVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE4XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMTFcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODlcXDAwMFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDk1XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzNcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjIyXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDVcXDIzN1xcMjU1XFwyMzhcXDI1NVxcMDEwXFwwMDBcXDI0MFxcMjU1XFwwNDRcXDAwMVxcXG4gICAgXFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMDYxXFwwMDFcXDAwMlxcMDA0XFwyNDlcXDI1NVxcMDQ1XFwwMDVcXFxuICAgIFxcMjA5XFwwMDBcXDIyOFxcMDAwXFwyMTFcXDAwMFxcMjMyXFwwMDBcXDIyNVxcMDAwXFwyMjNcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIzNVxcMDAwXFwyMzRcXDAwMFxcMDA4XFwwMDFcXDI1NFxcMjU1XFwwMDRcXDAwMVxcMDIzXFwwMDFcXDI1M1xcMjU1XFwwNTRcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMDMxXFwwMDFcXDAyOVxcMDAxXFwwMzJcXDAwMVxcMDM5XFwwMDFcXDA0OVxcMDAxXFwwNDVcXDAwMVxcMjUxXFwyNTVcXFxuICAgIFxcMDU3XFwwMDFcXDA4MlxcMDAxXFwwODBcXDAwMVxcMDc4XFwwMDFcXDA4NFxcMDAxXFwwNzRcXDAwMVxcMDg2XFwwMDFcXDI1MFxcMjU1XFxcbiAgICBcXDExMFxcMDA1XFwwMTJcXDAwNFxcMTIzXFwwMDVcXDE1NVxcMDA1XFwxNjVcXDAwNVxcMTc3XFwwMDVcXDE4N1xcMDA1XFwxOTdcXDAwNVxcXG4gICAgXFwyNDFcXDI1NVxcMTk5XFwwMDFcXDA3N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDE1NFxcMDAyXFwyMjJcXDAwNVxcMjA5XFwwMDVcXFxuICAgIFxcMTU1XFwwMDJcXDIzOVxcMDA1XFwwNTNcXDAwNlxcMDc2XFwwMDZcXDExNFxcMDA2XFwwMTZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTUyXFwwMDZcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjI3XFwwMDZcXDI1NVxcMjU1XFwwODVcXDAwN1xcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAxMVxcMDAwXFwyNDdcXDI1NVxcMDc2XFwwMDJcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzFcXDAwMlxcMjQzXFwwMDVcXDA1MVxcMDA3XFwxMDBcXDAwMVxcMTE1XFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMThcXDAwMVxcMTU0XFwwMDFcXDE3MVxcMDAxXFwyNTVcXDI1NVxcMTczXFwwMDFcXDE3NlxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg3XFwwMDFcXDI1M1xcMDAxXFwyMzBcXDAwMVxcMjMwXFwwMDFcXDIzNFxcMDAxXFwyNDdcXDAwMVxcMjM3XFwwMDFcXFxuICAgIFxcMjM0XFwwMDFcXDAwOVxcMDAyXFwwMTlcXDAwMlxcMDE5XFwwMDJcXDAxNVxcMDAyXFwwMjFcXDAwMlxcMDExXFwwMDJcXDAwN1xcMDAyXFxcbiAgICBcXDE0MlxcMDA2XFwxNTJcXDAwNlxcMTE2XFwwMDdcXDE3MFxcMDA3XFwxODBcXDAwN1xcMTkwXFwwMDdcXDIwMFxcMDA3XFwyMTBcXDAwN1xcXG4gICAgXFwyNDhcXDI1NVxcMTIwXFwwMDJcXDE2N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDIxNlxcMDAyXFwwODJcXDAwN1xcMjIwXFwwMDdcXFxuICAgIFxcMjM2XFwwMDJcXDI0NFxcMDA3XFwwNThcXDAwOFxcMDgxXFwwMDhcXDExOVxcMDA4XFwwNzZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTU3XFwwMDhcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjMyXFwwMDhcXDI1NVxcMjU1XFwxMzVcXDAwMlxcXG4gICAgXFwxMjBcXDAwMlxcMjUzXFwyNTVcXDEwMFxcMDAyXFwyNTRcXDI1NVxcMTgyXFwwMDJcXDI1NVxcMjU1XFwwMTFcXDAwMlxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMlxcMjU1XFwyNTVcXDE3OFxcMDAyXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDE4M1xcMDAyXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIxXFwwMDJcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA5N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDEzOFxcMDAwXFwwMDBcXDAwMFxcMTQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTg3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxN1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTIxXFwwMDFcXDEyNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxNDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTkzXFwwMDFcXDE5N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjIwXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIzM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0MFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMTcwXFwwMDBcXDEzNFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxNFxcMDAxXFwwMTNcXDAwMFxcMDQ5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDA1NlxcMDAwXFwxMThcXDAwMFxcMDA2XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDFcXDEzN1xcMDAwXFwwMDBcXDAwMlxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMTM4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMTRcXDAwMFxcMTEwXFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAzMFxcMDAwXFwwNDhcXDAwMFxcMDA4XFwwMDBcXDExNFxcMDAwXFwyMDlcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAxXFxcbiAgICBcXDAxM1xcMDAxXFwwMjlcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxN1xcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDIzXFwwMDBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAzNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDIwXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMzdcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA2MVxcMDAwXFwwODVcXDAwMFxcMDQ4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA2N1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODZcXDAwMFxcMTQzXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMTQ0XFwwMDBcXFxuICAgIFxcMTQ1XFwwMDBcXDE0NlxcMDAwXFwwNTVcXDAwMFxcMTQ4XFwwMDBcXDA1NVxcMDAwXFwxNDlcXDAwMFxcMDQ4XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwxNTBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMFxcMTYxXFwwMDBcXDA2NlxcMDAwXFwxNThcXDAwMFxcMDUzXFwwMDBcXDE1OVxcMDAwXFwwNTNcXDAwMFxcMTYwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDE2NVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NlxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwxMTZcXDAwMFxcXG4gICAgXFwxMzJcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMjhcXDAwMFxcMTM5XFwwMDBcXDEzNFxcMDAwXFwxNjRcXDAwMFxcMDkzXFwwMDBcXFxuICAgIFxcMTcxXFwwMDBcXDA3N1xcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzJcXDAwMFxcMTEyXFwwMDBcXDE3M1xcMDAwXFxcbiAgICBcXDE3NFxcMDAwXFwyMTBcXDAwMFxcMjI2XFwwMDBcXDIwOFxcMDAwXFwyMTFcXDAwMFxcMjEyXFwwMDBcXDA1OVxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwxMzRcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE2XFwwMDBcXDIxOFxcMDAwXFwxNDFcXDAwMFxcMjE5XFwwMDBcXFxuICAgIFxcMDkzXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTIzXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMjI0XFwwMDBcXDEzNlxcMDAwXFxcbiAgICBcXDA5NVxcMDAwXFwyMjVcXDAwMFxcMDM1XFwwMDFcXDA2NVxcMDAxXFwyMzRcXDAwMFxcMTU1XFwwMDBcXDAwNVxcMDAxXFwwOTdcXDAwMVxcXG4gICAgXFwyNTBcXDAwMFxcMjU1XFwyNTVcXDI1NFxcMDAwXFwwNTdcXDAwMVxcMDYxXFwwMDFcXDA5NVxcMDAxXFwwNzdcXDAwMFxcMDQ0XFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA4OFxcMDAxXFwwMDlcXDAwMVxcMDI5XFwwMDFcXDA3NlxcMDAwXFwxMjRcXDAwMFxcMDMzXFwwMDFcXDAxOFxcMDAxXFxcbiAgICBcXDA3NVxcMDAwXFwwOThcXDAwMFxcMDE5XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDg3XFwwMDFcXDEyMFxcMDAxXFwwODlcXDAwMVxcXG4gICAgXFwwNzRcXDAwMFxcMjI1XFwwMDBcXDA1M1xcMDAxXFwxMjFcXDAwMVxcMDczXFwwMDBcXDA5MFxcMDAxXFwwNzJcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk4XFwwMDBcXDExM1xcMDAxXFwxMjJcXDAwMFxcMDkxXFwwMDFcXDA2NFxcMDAwXFwwMDRcXDAwMVxcXG4gICAgXFwwOTNcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwxNTZcXDAwMFxcMTEyXFwwMDFcXDA5NFxcMDAxXFwwOTZcXDAwMVxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwxMDBcXDAwMVxcMTU3XFwwMDBcXFxuICAgIFxcMTAxXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDE4M1xcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMDI0XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDEwMlxcMDAxXFwxMDNcXDAwMVxcMTA1XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxMDZcXDAwMVxcMTA3XFwwMDFcXDA0OFxcMDAxXFwwNDBcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxMTBcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwxMTFcXDAwMVxcXG4gICAgXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDE3MVxcMDAxXFwwMzFcXDAwMVxcMTcwXFwwMDFcXDAyM1xcMDAxXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA5MlxcMDAwXFwxNjhcXDAwMVxcMDYzXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMjQ4XFwwMDBcXDE2NVxcMDAxXFwyNTJcXDAwMFxcXG4gICAgXFwxNjJcXDAwMVxcMDU5XFwwMDFcXDA2OVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDAzOVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDE2M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwxMjBcXDAwMFxcMDAyXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMTY2XFwwMDFcXDA1NVxcMDAxXFwxNTNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDdcXDAwMVxcMTY3XFwwMDFcXDE2NFxcMDAxXFwxNjlcXDAwMVxcMDE2XFwwMDFcXDE2NFxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA1MVxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDEzN1xcMDAxXFwxNjRcXDAwMVxcMTcyXFwwMDFcXDE4NVxcMDAxXFwxMzZcXDAwMVxcMTczXFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDE3NFxcMDAxXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNDZcXDAwMVxcXG4gICAgXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDE4MFxcMDAwXFwxNjRcXDAwMVxcMTg0XFwwMDFcXDE4MVxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDEyNFxcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDE5MlxcMDAxXFwxNzhcXDAwMVxcXG4gICAgXFwwMjFcXDAwMVxcMTc5XFwwMDFcXDA5N1xcMDAwXFwxOTNcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTgzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDIxNlxcMDAxXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDE4NFxcMDAxXFwyMTZcXDAwMVxcMjA5XFwwMDFcXDA5N1xcMDAwXFxcbiAgICBcXDIyM1xcMDAxXFwwOTdcXDAwMFxcMjA4XFwwMDFcXDIzMFxcMDAxXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDIxOVxcMDAxXFwwMzdcXDAwMVxcXG4gICAgXFwyMTZcXDAwMVxcMjE3XFwwMDFcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMTZcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMjE4XFwwMDFcXDI1MFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMjRcXDAwMVxcMTI0XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMjFcXDAwMVxcMDAwXFwwMDBcXDI1M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5NlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyMzVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjQxXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDAwMVxcMjQyXFwwMDFcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI0NlxcMDAxXFwxMjlcXDAwMVxcMTI5XFwwMDFcXFxuICAgIFxcMjI4XFwwMDFcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDAwXFwwMDBcXDE5OFxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMjM0XFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMVxcMTc3XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDIwMVxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAwXFwyMDZcXDAwMVxcMTIzXFwwMDFcXDE4OVxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTg5XFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTk1XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNDhcXDAwMVxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMjAyXFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjI2XFwwMDBcXDE5NVxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMjFcXDAwMVxcMjM5XFwwMDFcXFxuICAgIFxcMjU0XFwwMDFcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMjQ0XFwwMDFcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg2XFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTEzXFwwMDFcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwMDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDIzOFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAxXFwwNzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzFcXDAwMVxcMDc2XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDFcXDExOVxcMDAxXFwwMDBcXDAwMFxcMTE5XFwwMDFcXDAwMFxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE3XFwwMDFcXDAwMFxcMDAwXFwwNzVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTg1XFwwMDFcXDAwMFxcMDAwXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE5MVxcMDAxXFwxNDJcXDAwMVxcMTkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDZcXDAwMVxcMTQ3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMTUzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3N1xcMDAxXFwxNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTU2XFwwMDFcXDAwMFxcMDAwXFwxNDhcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDE1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTg3XFwwMDFcXDAwMFxcMDAwXFwxNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAxXFwwMDBcXDAwMFxcMTg5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE5OVxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMTRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjVcXDAwMFxcMTM4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwM1xcMDAwXFwxNjlcXDAwMFxcMTM0XFwwMDBcXDE3NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTI1XFwwMDBcXDEyOVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyMzZcXDAwMVxcMTM2XFwwMDBcXDI1NVxcMDAxXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDAxMFxcMDAwXFwxMzZcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwxMDdcXDAwMFxcMTAyXFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDI5XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDIwOFxcMDAwXFwyMzNcXDAwMFxcMjU1XFwwMDBcXFxuICAgIFxcMDEyXFwwMDFcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDYwXFwwMDBcXDAxMVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyNFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMjJcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDMzXFwwMDBcXDAxOFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMTlcXDAwMFxcMDM1XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NVxcMDAwXFwwNDZcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NVxcMDAwXFwxNDBcXDAwMFxcMDYwXFwwMDBcXDAxM1xcMDAwXFwxNDNcXDAwMFxcXG4gICAgXFwxNDRcXDAwMFxcMTQ1XFwwMDBcXDA0OFxcMDAwXFwxNDdcXDAwMFxcMDQ4XFwwMDBcXDE0OFxcMDAwXFwwMzlcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNjVcXDAwMFxcMDM5XFwwMDBcXDE0OVxcMDAwXFxcbiAgICBcXDE1MFxcMDAwXFwxNTZcXDAwMFxcMDYzXFwwMDBcXDE1N1xcMDAwXFwwNTFcXDAwMFxcMTU4XFwwMDBcXDA1MVxcMDAwXFwxNTlcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMTU1XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTU1XFwwMDBcXDA5MVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2OFxcMDAwXFwxMDJcXDAwMFxcMTA3XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDEzMVxcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMTMzXFwwMDBcXDE2M1xcMDAwXFwwOTRcXDAwMFxcXG4gICAgXFwxNjVcXDAwMFxcMDY4XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE3MVxcMDAwXFwxMTFcXDAwMFxcMTcyXFwwMDBcXFxuICAgIFxcMTczXFwwMDBcXDIwNlxcMDAwXFwyMDNcXDAwMFxcMjA3XFwwMDBcXDIxMFxcMDAwXFwyMTFcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDEzM1xcMDAwXFwyMTJcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE3XFwwMDBcXDE0MFxcMDAwXFwyMThcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMTlcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMTMzXFwwMDBcXFxuICAgIFxcMDkxXFwwMDBcXDIwM1xcMDAwXFwwMzRcXDAwMVxcMDYyXFwwMDFcXDIzM1xcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAxXFxcbiAgICBcXDI0N1xcMDAwXFwwNjBcXDAwMFxcMjUxXFwwMDBcXDA1NFxcMDAxXFwwNThcXDAwMVxcMDgxXFwwMDFcXDA2OFxcMDAwXFwwNDFcXDAwMVxcXG4gICAgXFwwODJcXDAwMVxcMDgzXFwwMDFcXDAwNlxcMDAxXFwwMjZcXDAwMVxcMDY4XFwwMDBcXDExOVxcMDAwXFwwMzBcXDAwMVxcMDE1XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDA5NFxcMDAwXFwwMTVcXDAwMVxcMDg0XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDcxXFwwMDFcXDA4OFxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwyMDNcXDAwMFxcMDUwXFwwMDFcXDA3MVxcMDAxXFwwNjhcXDAwMFxcMDg5XFwwMDFcXDA2OFxcMDAwXFwwNjhcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwOTdcXDAwMFxcMDc2XFwwMDFcXDExOVxcMDAwXFwwOTBcXDAwMVxcMDYzXFwwMDBcXDAwMVxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDE1MlxcMDAwXFwwNzZcXDAwMVxcMDkzXFwwMDFcXDA5NVxcMDAxXFwwOTdcXDAwMVxcMDk4XFwwMDFcXDA0NVxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OVxcMDAxXFwxNTJcXDAwMFxcXG4gICAgXFwxMDBcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwwMjBcXDAwMVxcMDc2XFwwMDFcXDA2NVxcMDAwXFwwMjBcXDAwMVxcMTAxXFwwMDFcXDEwMlxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDEwNVxcMDAxXFwxMDZcXDAwMVxcMDQ1XFwwMDFcXDAzNlxcMDAxXFwxMDdcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDExMFxcMDAxXFxcbiAgICBcXDAyNlxcMDAxXFwxMjFcXDAwMVxcMTU3XFwwMDFcXDAzMFxcMDAxXFwxNThcXDAwMVxcMDIwXFwwMDFcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDE1OVxcMDAxXFwwNjJcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwyNDdcXDAwMFxcMTYwXFwwMDFcXDI1MVxcMDAwXFxcbiAgICBcXDE2MVxcMDAxXFwwNThcXDAwMVxcMDY4XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA5NFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDM2XFwwMDFcXDA0MVxcMDAxXFwwOTdcXDAwMFxcMTYyXFwwMDFcXFxuICAgIFxcMTYzXFwwMDFcXDExOVxcMDAwXFwwMDFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwxNjVcXDAwMVxcMDU0XFwwMDFcXDE1MlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwNlxcMDAxXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMTVcXDAwMVxcMTY5XFwwMDFcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDUwXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTMzXFwwMDFcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTU0XFwwMDFcXDEzM1xcMDAxXFwxNzJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTczXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA0NVxcMDAxXFxcbiAgICBcXDE3NFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAxXFwxNTRcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTIyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMTQ4XFwwMDFcXDE3N1xcMDAxXFxcbiAgICBcXDAyMFxcMDAxXFwxNzhcXDAwMVxcMDk4XFwwMDBcXDE0OFxcMDAxXFwxNzlcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcXG4gICAgXFwxODNcXDAwMVxcMjE2XFwwMDFcXDE5M1xcMDAxXFwwOTVcXDAwMFxcMTU0XFwwMDFcXDIxNlxcMDAxXFwyMDVcXDAwMVxcMDk4XFwwMDBcXFxuICAgIFxcMjIyXFwwMDFcXDA5NVxcMDAwXFwyMDVcXDAwMVxcMjI5XFwwMDFcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMjE4XFwwMDFcXDAzNlxcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwyMTVcXDAwMVxcMjU1XFwyNTVcXDIxOFxcMDAxXFwyMTVcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMTZcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDIxNVxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMjJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk4XFwwMDBcXDI1NVxcMjU1XFwyMTVcXDAwMVxcMjQ3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOThcXDAwMFxcMjU1XFwyNTVcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMDk4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIyMFxcMDAxXFwyNTVcXDI1NVxcMjUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5OFxcMDAwXFwxMjFcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMDk4XFwwMDBcXDA5OFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDI1MVxcMDAxXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjQzXFwwMDFcXDEyNVxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDI1NVxcMjU1XFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyMzFcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwxNzZcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMjU1XFwyNTVcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTg1XFwwMDBcXDIwNVxcMDAxXFwxMjJcXDAwMVxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFxcbiAgICBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTJcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkzXFwwMDFcXDI0N1xcMDAxXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOTlcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwxOTlcXDAwMFxcMTI1XFwwMDFcXDEyOFxcMDAxXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcXG4gICAgXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwyMDRcXDAwMFxcMTk0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDBcXDIyMFxcMDAxXFwyMzhcXDAwMVxcXG4gICAgXFwyNTFcXDAwMVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyNDNcXDAwMVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjRcXDAwMVxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMTk3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDIyOFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFxcbiAgICBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFxcbiAgICBcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDE5OVxcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjM3XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwxMTJcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExNVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTVcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXFxuICAgIFxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXFxuICAgIFxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcXG4gICAgXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMjU1XFwyNTVcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDEyNlxcMDAxXFwxMjlcXDAwMVxcMTI2XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyOVxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTg0XFwwMDFcXDEzOFxcMDAxXFwxODRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXFxuICAgIFxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTU2XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwxODZcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTk4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDFcXDI1NVxcMjU1XFwxODdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTg2XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxNzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgdHJ1ZSApXG4jIDEwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDE3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCBmYWxzZSApXG4jIDEwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDE3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgTnVsbCApXG4jIDEwMjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDE3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmFuXG4gICAgICAgICAgICAgICAgKVxuIyAxMDM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAxODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IGluZmluaXR5XG4gICAgICAgICAgICAgICAgKVxuIyAxMDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgIClcbiMgMTA1NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgMTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgYFN0cmluZyAoZmluaXNoX3N0cmluZyB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICApXG4jIDEwNjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDIwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiApXG4jIDEwNzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDIwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiApXG4jIDEwNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgKGZsb2F0X29mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgICAgICAgICAgICApXG4jIDEwODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyAyMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYEFzc29jIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExMTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyAyMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICBgTGlzdCAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTIgLT5cbiMgMjUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDExNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMyAtPlxuIyAyNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMTE3MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE0IC0+XG4jIDI4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE3OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE1IC0+XG4jIDI4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNiAtPlxuIyAyODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNyAtPlxuIyAyODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOCAtPlxuIyAyODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMTk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTkgLT5cbiMgMjkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMTIwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiA1OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBCdWZmZXIuY29udGVudHMgdi5idWYgKVxuIyAxMjE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAyOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTIyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMjk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAyOTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTIzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIDYzXG5hbmQgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggbGV0IGIgPSB2LmJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICBmIChCdWZmZXIuY29udGVudHMgYikgMCAoQnVmZmVyLmxlbmd0aCBiKSApXG4jIDEyNDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDEyNTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxMjU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTI2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiA2OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIGNcbiMgMTI3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgYyApXG4jIDEyNzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxiJyApXG4jIDEyODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFwwMTInIClcbiMgMTI4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nIClcbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHInIClcbiMgMTI5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgMzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHQnIClcbiMgMTMwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbmxldFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIGFcbiMgMTMxMCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcbiMgMTMxNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyAxMzIwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTMyNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpIGluXG4jIDMyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeCA+PSAweEQ4MDAgJiYgeCA8PSAweERCRkYgdGhlblxuICAgICAgICAgICAgIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBDb2RlYy51dGY4X29mX2NvZGUgdi5idWYgeFxuXG4gICAgICAgICApXG4jIDEzMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDMyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZVwiIHYgbGV4YnVmIClcbiMgMTM0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgODJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIGFcbiMgMTM2MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuIyAxMzY1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgMTM3MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTM3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDUpIGluXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB5ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeSA+PSAweERDMDAgJiYgeSA8PSAweERGRkYgdGhlblxuICAgICAgICAgICAgIENvZGVjLnV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgdi5idWYgeCB5XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCBsb3cgc3Vycm9nYXRlIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIlxuICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgIClcbiMgMTM4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIk1pc3NpbmcgZXNjYXBlIHNlcXVlbmNlIHJlcHJlc2VudGluZyBsb3cgc3Vycm9nYXRlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIiB2IGxleGJ1ZiApXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMzk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgOTFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAobGVuKzEpIGluXG4gICAgICAgICAgIEJ5dGVzLnNldCBzIDAgJ1wiJztcbiAgICAgICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBzIDEgbGVuO1xuICAgICAgICAgICBCeXRlcy50b19zdHJpbmcgc1xuICAgICAgICAgKVxuIyAxNDE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMTQyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgMTAyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9IHJlYWRfanNvbiB2IGxleGJ1ZiBpblxuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmO1xuICAgICAgICAgICBTb21lIHggKVxuIyAxNDQwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBOb25lIClcbiMgMTQ0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2x0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIDEwN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAxNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgMTExXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTQ4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb21tYSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiAxMTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTUxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE1MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgMTE5XG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYEVkZ3lfYnJhY2tldCApXG4jIDE1MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBgRG91YmxlX3F1b3RlIClcbiMgMTUzOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBTcXVhcmVfYnJhY2tldCApXG4jIDE1NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnLCAnXFxcIicgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTU0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiAxMjVcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTU2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAxNTcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG4jIDE1NzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcbiMgMTU4MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2VvZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiAxMzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNTkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTU5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiAxMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYxMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAxNjMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgMTQwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCAoKSApXG4jIDE2NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdudWxsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE2NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE2NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbF9pZl9wb3NzaWJsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIDE0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2NjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjY5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Jvb2wgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiAxNTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2ODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2ODYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY5MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAndHJ1ZScgb3IgJ2ZhbHNlJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTcwNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIDE3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3MjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnRlZ2VyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE3NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50ZWdlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQ1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDMyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIDE4NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDMyLm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTc2OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQzMi5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50MzIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTc4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQzMiBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3OTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc5NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50NjQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgMTkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQ3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50NjQub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxODExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDY0Lm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQ2NCBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxODI5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0OTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDY0IGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTgzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxODM5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udW1iZXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIDE5OVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5hbiApXG4jIDE4NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBpbmZpbml0eSApXG4jIDE4NTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuZWdfaW5maW5pdHkgKVxuIyAxODYxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmxvYXRfb2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikgKVxuIyAxODY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA1MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBmbG9hdCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMuICopXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5hTlwiIC0+IG5hblxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJJbmZpbml0eVwiIC0+IGluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBcIi1JbmZpbml0eVwiIC0+IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYSBudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgKVxuIyAxODg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA1MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIG51bWJlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE4OTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDUyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTg5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgMjMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDE5MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1xcXCInIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTkxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgMjM3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTkzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyA1MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIHNcbiMgMTk0MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA1MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcyApXG4jIDE5NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfaWRlbnQgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgMjQyXG5hbmQgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTk2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIG1hcF9sZXhlbWUgZiBsZXhidWYgKVxuIyAxOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTk3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc2VxdWVuY2UgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMDA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1NjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjAxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgMjUxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjA0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgMjU1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAyMDY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgMjU3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDgzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDIwODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDU5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjA5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjYyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjEzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMTM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2MjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIxNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgMjY2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTU5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIDI2OFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjE3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIxODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgMjcxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIyMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjIxNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIDI3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMjI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIyMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiAyODJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIyODYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI5MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sY3VybCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiAyODZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjMwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2ODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIDI5MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAyMzMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgMjkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjM0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMjM1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjM1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIDI5N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzNzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjM4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV90dXBsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIDMwMVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmYWxzZSApXG4jIDIzOTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCB0cnVlIClcbiMgMjQwMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQwNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNzA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiAzMDZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDIzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0MjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQzMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ycGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgMzEwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiAzMTRcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcmJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiAzMThcbmFuZCBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIDMyMlxuYW5kIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDczNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDczNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDc0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNTQxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyA3NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjU0NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjU1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNTc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgNzY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI1OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA3ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjYxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEyIC0+XG4jIDgwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyNjMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTMgLT5cbiMgODE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTQgLT5cbiMgODE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE1IC0+XG4jIDgxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE2IC0+XG4jIDgxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE3IC0+XG4jIDgxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI2NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOCAtPlxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAyNjYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiAzNzhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDI2NzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAyNjc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjY4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiAzODlcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmIClcbiMgMjY5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAyNzAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI3MDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNzEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiAzOTRcbmFuZCBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI3MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI3MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDg0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNzM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI3NDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgMzk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuIyAyNzUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNzU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd7JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI3ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDg4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI4MDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyODI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA5MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjg0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgOTMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyA5MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg2MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgOTM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgOTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjg3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDkzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDI4NzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDQ1MFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcIic7XG4gICAgICAgICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmXG4gICAgICAgICApXG4jIDI4OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAyODk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjkwMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiA0NjFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonO1xuICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfZ3QgdiBsZXhidWYgKVxuIyAyOTE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcbiMgMjkyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyOTI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjkzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgNDY2XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjk0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcbiMgMjk0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTYzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI5NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjk1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgNDcxXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTY3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5ODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA5ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMzAwMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIDQ3OFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nO1xuICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAzMDE0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5ODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMDE5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiA0ODBcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzAzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7IHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMzAzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzA0MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMDQ2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgNDg1XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMzA1OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzA2MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgNDg3XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMwNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDMwODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMDg1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMDkwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiA0OTJcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJztcbiAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAzMTA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzEwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgNDk0XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMxMjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDMxMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgNDk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonIClcbiMgMzE0OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzE1MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzE1OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgNTAzXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuIyAzMTcwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzE4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgNTA3XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiKi9cIiApXG4jIDMxOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG4jIDMxOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG4jIDMyMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcbiMgMzIwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBsZXQgXyA9IChyZWFkX2pzb24gOiBsZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+IHQpXG5cbiAgbGV0IHJlYWRfdCA9IHJlYWRfanNvblxuXG4gIGxldCByZWFkX2ludDggdiBsZXhidWYgPVxuICAgIGxldCBuID0gcmVhZF9pbnQgdiBsZXhidWYgaW5cbiAgICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW5cbiAgICAgIGxleGVyX2Vycm9yIFwiSW50OCBvdmVyZmxvd1wiIHYgbGV4YnVmXG4gICAgZWxzZVxuICAgICAgY2hhcl9vZl9pbnQgblxuXG4gIGxldCByZWFkX2xpc3QgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBMaXN0LnJldiAocmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYpXG5cbiAgbGV0IGFycmF5X29mX3Jldl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICBbXSAtPiBbfCB8XVxuICAgICAgfCB4IDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICAgIHIgOj0gTGlzdC50bCAhclxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgYVxuXG4gIGxldCByZWFkX2FycmF5IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgbGV0IGwgPSByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiBpblxuICAgIGFycmF5X29mX3Jldl9saXN0IGxcblxuICAoKiBSZWFkIGEgSlNPTiBvYmplY3QsIHJlYWRpbmcgdGhlIGtleXMgaW50byBPQ2FtbCBzdHJpbmdzXG4gICAgIChwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKilcbiAgbGV0IHJlYWRfZmllbGRzIHJlYWRfZmllbGQgaW5pdF9hY2MgdiA9XG4gICAgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9pZGVudCByZWFkX2ZpZWxkIGluaXRfYWNjIHZcblxuICBsZXQgZmluaXNoIHYgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgIGlmIG5vdCAocmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBsb25nX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZTpcIiB2IGxleGJ1ZlxuXG4gIGxldCBpbml0X2xleGVyID0gQ29tbW9uLmluaXRfbGV4ZXJcblxuICBsZXQgZnJvbV9sZXhidWYgdiA/KHN0cmVhbSA9IGZhbHNlKSBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG5cbiAgICBsZXQgeCA9XG4gICAgICBpZiByZWFkX2VvZiBsZXhidWYgdGhlblxuICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX2lucHV0XG4gICAgICBlbHNlXG4gICAgICAgIHJlYWRfanNvbiB2IGxleGJ1ZlxuICAgIGluXG5cbiAgICBpZiBub3Qgc3RyZWFtIHRoZW5cbiAgICAgIGZpbmlzaCB2IGxleGJ1ZjtcblxuICAgIHhcblxuXG4gIGxldCBmcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyBpblxuICAgICAgY2xvc2VfaW4gaWM7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICAgIHJhaXNlIGVcblxuICBleGNlcHRpb24gRmluYWxseSBvZiBleG4gKiBleG5cblxuICBsZXQgc2VxX2Zyb21fbGV4YnVmIHYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIGxleGJ1ZiA9XG4gICAgbGV0IHN0cmVhbSA9IFNvbWUgdHJ1ZSBpblxuICAgIGxldCByZWMgZiAoKSA9XG4gICAgICB0cnkgU2VxLkNvbnMgKGZyb21fbGV4YnVmIHYgP3N0cmVhbSBsZXhidWYsIGYpXG4gICAgICB3aXRoXG4gICAgICAgICAgQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgZmluICgpO1xuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICAgICh0cnkgZmluICgpIHdpdGggZmluX2UgLT4gcmFpc2UgKEZpbmFsbHkgKGUsIGZpbl9lKSkpO1xuICAgICAgICAgICAgcmFpc2UgZVxuICAgIGluXG4gICAgZlxuXG4gIGxldCBzZXFfZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4gIGxldCBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgP2ZpbiBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IH5maW4gbGV4YnVmXG5cbiAgdHlwZSBqc29uX2xpbmUgPSBbIGBKc29uIG9mIHQgfCBgRXhuIG9mIGV4biBdXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9jaGFubmVsXG4gICAgICA/YnVmID8oZmluID0gZnVuICgpIC0+ICgpKSA/Zm5hbWUgP2xudW06KGxudW0wID0gMSkgaWMgPVxuICAgIGxldCBidWYgPVxuICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgKEJ1ZmZlci5jcmVhdGUgMjU2KVxuICAgICAgICB8IFNvbWUgXyAtPiBidWZcbiAgICBpblxuICAgIGxldCByZWMgZiBsbnVtID0gZnVuICgpIC0+XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxpbmUgPSBpbnB1dF9saW5lIGljIGluXG4gICAgICAgIFNlcS5Db25zIChgSnNvbiAoZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgfmxudW0gbGluZSksIGYgKGxudW0gKyAxKSlcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfZmlsZSAtPiBmaW4gKCk7IFNlcS5OaWxcbiAgICAgICAgfCBlIC0+IFNlcS5Db25zIChgRXhuIGUsIGYgKGxudW0gKyAxKSlcbiAgICBpblxuICAgIGYgbG51bTBcblxuICBsZXQgbGluZXNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGluZXNlcV9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluID9mbmFtZSA/bG51bSBpY1xuXG4gIGxldCBwcmV0dGlmeSA/c3RkIHMgPVxuICAgIHByZXR0eV90b19zdHJpbmcgP3N0ZCAoZnJvbV9zdHJpbmcgcylcblxuICBsZXQgY29tcGFjdCA/c3RkOl8gcyA9XG4gICAgdG9fc3RyaW5nIChmcm9tX3N0cmluZyBzKVxuXG4jIDMzNzUgXCJsaWIvcmVhZC5tbFwiXG5cbm1vZHVsZSBVdGlsID0gc3RydWN0XG5leGNlcHRpb24gVHlwZV9lcnJvciBvZiBzdHJpbmcgKiB0XG5cbmxldCB0eXBlb2YgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBfIC0+IFwib2JqZWN0XCJcbiAgfCBgQm9vbCBfIC0+IFwiYm9vbFwiXG4gIHwgYEZsb2F0IF8gLT4gXCJmbG9hdFwiXG4gIHwgYEludCBfIC0+IFwiaW50XCJcbiAgfCBgTGlzdCBfIC0+IFwiYXJyYXlcIlxuICB8IGBOdWxsIC0+IFwibnVsbFwiXG4gIHwgYFN0cmluZyBfIC0+IFwic3RyaW5nXCJcbiAgfCBgSW50bGl0IF8gLT4gXCJpbnRsaXRcIlxuICB8IGBGbG9hdGxpdCBfIC0+IFwiZmxvYXRsaXRcIlxuICB8IGBUdXBsZSBfIC0+IFwidHVwbGVcIlxuICB8IGBWYXJpYW50IF8gLT4gXCJ2YXJpYW50XCJcblxubGV0IHR5cGVyciBtc2cganMgPSByYWlzZSAoVHlwZV9lcnJvciAobXNnIF4gdHlwZW9mIGpzLCBqcykpXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nICogdFxuXG5sZXQgYXNzb2MgbmFtZSBvYmogPSB0cnkgTGlzdC5hc3NvYyBuYW1lIG9iaiB3aXRoIE5vdF9mb3VuZCAtPiBgTnVsbFxuXG5sZXQgbWVtYmVyIG5hbWUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gYXNzb2MgbmFtZSBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IG1lbWJlciAnXCIgXiBuYW1lIF4gXCInIG9mIG5vbi1vYmplY3QgdHlwZSBcIikganNcblxubGV0IHJlYyBwYXRoIGwgb2JqID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gU29tZSBvYmpcbiAgfCBrZXkgOjogbCAtPiAoXG4gICAgICBtYXRjaCBvYmogd2l0aFxuICAgICAgfCBgQXNzb2MgYXNzb2MgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Mga2V5IGFzc29jIHdpdGhcbiAgICAgICAgICB8IG9iaiAtPiBwYXRoIGwgb2JqXG4gICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IGluZGV4IGkgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMganMgLT5cbiAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICBsZXQgd3JhcHBlZF9pbmRleCA9IGlmIGkgPCAwIHRoZW4gbGVuICsgaSBlbHNlIGkgaW5cbiAgICAgIGlmIHdyYXBwZWRfaW5kZXggPCAwIHx8IHdyYXBwZWRfaW5kZXggPj0gbGVuIHRoZW5cbiAgICAgICAgcmFpc2UgKFVuZGVmaW5lZCAoXCJJbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG91dCBvZiBib3VuZHNcIiwganMpKVxuICAgICAgZWxzZSBMaXN0Lm50aCBsIHdyYXBwZWRfaW5kZXhcbiAgfCBqcyAtPlxuICAgICAgdHlwZXJyIChcIkNhbid0IGdldCBpbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG9mIG5vbi1hcnJheSB0eXBlIFwiKSBqc1xuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gYExpc3QgKExpc3QubWFwIGYgbClcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBtYXAgZnVuY3Rpb24gb3ZlciBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgdG9fYXNzb2MgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gb2JqXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgb2JqZWN0LCBnb3QgXCIganNcblxubGV0IHRvX29wdGlvbiBmID0gZnVuY3Rpb24gYE51bGwgLT4gTm9uZSB8IHggLT4gU29tZSAoZiB4KVxubGV0IHRvX2Jvb2wgPSBmdW5jdGlvbiBgQm9vbCBiIC0+IGIgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sLCBnb3QgXCIganNcblxubGV0IHRvX2Jvb2xfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+IFNvbWUgYlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gZmxvYXQgaVxuICB8IGBGbG9hdCBmIC0+IGZcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IFNvbWUgKGZsb2F0IGkpXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgfCBgRmxvYXQgZiAtPiBmXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXRfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBpXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50LCBnb3QgXCIganNcblxubGV0IHRvX2ludF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBTb21lIGlcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIGBMaXN0IGwgLT4gbCB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGFycmF5LCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBzIC0+IHNcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcsIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBzIC0+IFNvbWUgc1xuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCBjb252ZXJ0X2VhY2ggZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBmIGxcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBjb252ZXJ0IGVhY2ggZWxlbWVudCBvZiBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgcmVjIHJldl9maWx0ZXJfbWFwIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmV2X2ZpbHRlcl9tYXAgZiBhY2MgdGxcbiAgICAgIHwgU29tZSB5IC0+IHJldl9maWx0ZXJfbWFwIGYgKHkgOjogYWNjKSB0bClcblxubGV0IGZpbHRlcl9tYXAgZiBsID0gTGlzdC5yZXYgKHJldl9maWx0ZXJfbWFwIGYgW10gbClcblxubGV0IHJlYyByZXZfZmxhdHRlbiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBMaXN0IGwyIC0+IHJldl9mbGF0dGVuIChMaXN0LnJldl9hcHBlbmQgbDIgYWNjKSB0bFxuICAgICAgfCBfIC0+IHJldl9mbGF0dGVuIGFjYyB0bClcblxubGV0IGZsYXR0ZW4gbCA9IExpc3QucmV2IChyZXZfZmxhdHRlbiBbXSBsKVxuXG5sZXQgZmlsdGVyX2luZGV4IGkgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgbCAtPiAoIHRyeSBTb21lIChMaXN0Lm50aCBsIGkpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfbGlzdCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYExpc3QgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcblxubGV0IGZpbHRlcl9tZW1iZXIgayBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgQXNzb2MgbCAtPiAoIHRyeSBTb21lIChMaXN0LmFzc29jIGsgbCkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9hc3NvYyBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEFzc29jIGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2Jvb2wgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBCb29sIHggLT4gU29tZSB4IHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2ludCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgICBmdW5jdGlvblxuICAgICAgfCAgYEludCB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICApIGxcblxubGV0IGZpbHRlcl9mbG9hdCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfbnVtYmVyIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBgSW50IHggLT4gU29tZSAoZmxvYXQgeClcbiAgICAgIHwgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9zdHJpbmcgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIGBTdHJpbmcgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQga2V5cyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChrZXksIF8pIC0+IGtleSlcblxubGV0IHZhbHVlcyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChfLCB2YWx1ZSkgLT4gdmFsdWUpXG5cbmxldCBjb21iaW5lIChmaXJzdCA6IHQpIChzZWNvbmQgOiB0KSA9XG4gIG1hdGNoIChmaXJzdCwgc2Vjb25kKSB3aXRoXG4gIHwgYEFzc29jIGEsIGBBc3NvYyBiIC0+IChgQXNzb2MgKGEgQCBiKSA6IHQpXG4gIHwgYSwgYiAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkV4cGVjdGVkIHR3byBvYmplY3RzLCBjaGVjayBpbnB1dHNcIilcbmVuZFxuXG4iLCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICB8IGBJbnRsaXQgb2Ygc3RyaW5nXG4gICAgfCBgRmxvYXRsaXQgb2Ygc3RyaW5nXG4gICAgfCBgU3RyaW5nbGl0IG9mIHN0cmluZ1xuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICB8IGBUdXBsZSBvZiB0IGxpc3RcbiAgICB8IGBWYXJpYW50IG9mIChzdHJpbmcgKiB0IG9wdGlvbilcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV90dXBsZSBvYiBsXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfdmFyaWFudCBvYiBzIG9cblxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcoJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJyknXG5cbmFuZCB3cml0ZV92YXJpYW50IG9iIHMgbyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPCc7XG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICAobWF0Y2ggbyB3aXRoXG4gICAgICAgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgICAgIHdyaXRlX2pzb24gb2IgeFxuICApO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJz4nXG5cbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX3N0ZF9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX3N0ZF9saXN0IG9iIGxcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3N0ZF90dXBsZSBvYiBsXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvID1cbiAgbWF0Y2ggbyB3aXRoXG4gICAgICBOb25lIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgICAgICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICAgIHdyaXRlX3N0ZF9qc29uIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gICgqIHRoaXMgcmVxdWlyZXMgYW4gaW50IGFuZCBuZXZlciB1c2VzIGl0LiBUaGlzIGlzIGRvbmUgdG8gcHJlc2VydmVcbiAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB0byBub3QgYnJlYWsgdGhlIHNpZ25hdHVyIGJ1dCBjYW4gc2FmZWx5XG4gICAgIGJlIGNoYW5nZWQgdG8gcmVxdWlyZSB1bml0IGluIGEgZnV0dXJlIGNvbXBhdGliaWxpdHktYnJlYWtpbmdcbiAgICAgcmVsZWFzZSAqKVxuICBsZXQgXyA6IGludCA9IG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYikgaW5cbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCBgVHVwbGUgbCAtPlxuICAgICAgYFR1cGxlIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgYXMgeCAtPlxuICAgICAgbGV0IHYnID0gc29ydCB2IGluXG4gICAgICBpZiB2ID09IHYnIHRoZW4geFxuICAgICAgZWxzZVxuICAgICAgICBgVmFyaWFudCAoaywgU29tZSB2JylcbiAgfCB4IC0+IHhcblxubW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuKCpcbiAgIFByZXR0eS1wcmludCBKU09OIGRhdGEgaW4gYW4gYXR0ZW1wdCB0byBtYXhpbWl6ZSByZWFkYWJpbGl0eS5cblxuICAgMS4gV2hhdCBmaXRzIG9uIG9uZSBsaW5lIHN0YXlzIG9uIG9uZSBsaW5lLlxuICAgMi4gV2hhdCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSBnZXRzIHByaW50ZWQgbW9yZSB2ZXJ0aWNhbGx5IHNvIGFzIHRvIG5vdFxuICAgICAgZXhjZWVkIGEgcmVhc29uYWJsZSBwYWdlIHdpZHRoLCBpZiBwb3NzaWJsZS5cblxuICAgQXJyYXlzIGNvbnRhaW5pbmcgb25seSBzaW1wbGUgZWxlbWVudHMgKFwiYXRvbXNcIikgYXJlIHByZXR0eS1wcmludGVkIHdpdGhcbiAgIGVuZC1vZi1saW5lIHdyYXBwaW5nIGxpa2Ugb3JkaW5hcnkgdGV4dDpcblxuICAgICBbXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLFxuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIlxuICAgICBdXG5cbiAgIE90aGVyIGFycmF5cyBhcmUgcHJpbnRlZCBlaXRoZXIgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZXkgZml0IG9uIGEgc2luZ2xlIGxpbmU6XG5cbiAgICAgWyB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9IF1cblxuICAgb3JcblxuICAgICBbXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9XG4gICAgIF1cbiopXG5cbmxldCBwcF9saXN0IHNlcCBwcHggb3V0IGwgPVxuICBsZXQgcHBfc2VwIG91dCAoKSA9IEZvcm1hdC5mcHJpbnRmIG91dCBcIiVzQCBcIiBzZXAgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcHggb3V0IGxcblxubGV0IGlzX2F0b20gKHg6IFs+IHRdKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBOdWxsXG4gIHwgYEJvb2wgX1xuICB8IGBJbnQgX1xuICB8IGBGbG9hdCBfXG4gIHwgYFN0cmluZyBfXG4gIHwgYEludGxpdCBfXG4gIHwgYEZsb2F0bGl0IF9cbiAgfCBgU3RyaW5nbGl0IF9cbiAgfCBgTGlzdCBbXVxuICB8IGBBc3NvYyBbXVxuICB8IGBUdXBsZSBbXVxuICB8IGBWYXJpYW50IChfLCBOb25lKSAtPiB0cnVlXG4gIHwgYExpc3QgX1xuICB8IGBBc3NvYyBfXG4gIHwgYFR1cGxlIF9cbiAgfCBgVmFyaWFudCAoXywgU29tZSBfKSAtPiBmYWxzZVxuXG5sZXQgaXNfYXRvbV9saXN0IGwgPVxuICBMaXN0LmZvcl9hbGwgaXNfYXRvbSBsXG5cbigqXG4gICBpbnNpZGVfYm94OiBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBhbHJlYWR5IHdpdGhpbiBhIGJveCB0aGF0IGltcG9zZXNcbiAgIGEgY2VydGFpbiBzdHlsZSBhbmQgd2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBmb3JcbiAgIHByaW50aW5nIGZpZWxkIHZhbHVlcyBsaWtlIHRoaXM6XG5cbiAgICAgZm9vOiBbXG4gICAgICAgYmFyXG4gICAgIF1cblxuICAgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGVsc2UgbGlrZVxuXG4gICAgIGZvbzpcbiAgICAgICBbXG4gICAgICAgICBiYXJcbiAgICAgICBdXG4qKVxubGV0IHJlYyBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIChvdXQ6Rm9ybWF0LmZvcm1hdHRlcikgKHg6dCkgOiB1bml0ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIm51bGxcIlxuICAgIHwgYEJvb2wgeCAtPiBGb3JtYXQucHBfcHJpbnRfYm9vbCBvdXQgeFxuICAgIHwgYEludGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgVHVwbGUgbCAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaWYgbCA9IFtdIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiKClcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxob3YyPlwiO1xuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiKEAsJWFAOzwwIC0yPilcIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgICAgICAgKVxuICAgIHwgYFZhcmlhbnQgKHMsIE5vbmUpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZ2xpdCBzIGluXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgcmVwcmVzZW50YXRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjwlcz5cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG5cbiAgICB8IGBWYXJpYW50IChzLCBTb21lIHgpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZ2xpdCBzIGluXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IFsgcmVwcmVzZW50YXRpb247IHggXSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBvcCA9IGpzb25fc3RyaW5nX29mX3N0cmluZyBzIGluXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPEBbPGh2Mj4lczogJWFAXT5cIiBvcCAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBJbnRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgRmxvYXRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBTdHJpbmdsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmdsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFR1cGxlIHR1cCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBUdXBsZSAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIGUgLT5cbiAgICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgICBwcCBmbXQgZTtcbiAgICAgICAgICAgdHJ1ZSkgZmFsc2UgdHVwKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBWYXJpYW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBuYW1lO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgIChtYXRjaCB2YWx1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25lXCJcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKFNvbWUgXCI7XG4gICAgICAgIHBwIGZtdCB4O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIilcIik7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICAgIHwgYEludGxpdCBhLCBgSW50bGl0IGIgLT4gYSA9IGJcbiAgICB8IGBGbG9hdGxpdCBhLCBgRmxvYXRsaXQgYiAtPiBhID0gYlxuICAgIHwgYFN0cmluZ2xpdCBhLCBgU3RyaW5nbGl0IGIgLT4gYSA9IGJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYFR1cGxlIHhzLCBgVHVwbGUgeXNcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSksIGBWYXJpYW50IChuYW1lJywgdmFsdWUnKSAtPlxuICAgICAgKG1hdGNoIG5hbWUgPSBuYW1lJyB3aXRoXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUsIHZhbHVlJyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8IF8gLT4gZmFsc2VcblxubGV0IHByZXR0eV9wcmludCA/c3RkIG91dCB4ID0gUHJldHR5LnBwID9zdGQgb3V0IHhcbmxldCBwcmV0dHlfdG9fc3RyaW5nID9zdGQgeCA9IFByZXR0eS50b19zdHJpbmcgP3N0ZCB4XG5sZXQgcHJldHR5X3RvX2NoYW5uZWwgP3N0ZCBvYyB4ID0gUHJldHR5LnRvX2NoYW5uZWwgP3N0ZCBvYyB4XG5cbiMgMSBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIG1vZHVsZSBMZXhpbmcgPVxuICAgICgqXG4gICAgICBXZSBvdmVycmlkZSBMZXhpbmcuZW5naW5lIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IHBvc2l0aW9uXG4gICAgICByZWNvcmQgZWFjaCB0aW1lIGEgcnVsZSBpcyBtYXRjaGVkLlxuICAgICAgVGhpcyByZWR1Y2VzIHRvdGFsIHBhcnNpbmcgdGltZSBieSBhYm91dCAzMSUuXG4gICAgKilcbiAgc3RydWN0XG4gICAgaW5jbHVkZSBMZXhpbmdcblxuICAgIGV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcblxuICAgIGxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gICAgICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICAgICAgKCpcbiAgICAgIGlmIHJlc3VsdCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgICAgIGVuZDtcbiAgICAgICopXG4gICAgICByZXN1bHRcbiAgZW5kXG5cbiAgKCogc2VlIGRlc2NyaXB0aW9uIGluIGNvbW1vbi5tbGkgKilcbiAgdHlwZSBsZXhlcl9zdGF0ZSA9IENvbW1vbi5MZXhlcl9zdGF0ZS50ID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBkZWMgYyA9XG4gICAgQ2hhci5jb2RlIGMgLSA0OFxuXG4gIGxldCBoZXggYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICcwJy4uJzknIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcbiAgICAgIHwgJ2EnLi4nZicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyArIDEwXG4gICAgICB8ICdBJy4uJ0YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyAxMFxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIGxldCBjdXN0b21fZXJyb3IgZGVzY3IgdiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBvZmZzID0gbGV4YnVmLmxleF9hYnNfcG9zIC0gMSBpblxuICAgIGxldCBib2wgPSB2LmJvbCBpblxuICAgIGxldCBwb3MxID0gb2ZmcyArIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIC0gYm9sIC0gMSBpblxuICAgIGxldCBwb3MyID0gbWF4IHBvczEgKG9mZnMgKyBsZXhidWYubGV4X2N1cnJfcG9zIC0gYm9sKSBpblxuICAgIGxldCBmaWxlX2xpbmUgPVxuICAgICAgbWF0Y2ggdi5mbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBcIkxpbmVcIlxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgUHJpbnRmLnNwcmludGYgXCJGaWxlICVzLCBsaW5lXCIgc1xuICAgIGluXG4gICAgbGV0IGJ5dGVzID1cbiAgICAgIGlmIHBvczEgPSBwb3MyIHRoZW5cbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCJieXRlICVpXCIgKHBvczErMSlcbiAgICAgIGVsc2VcbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCJieXRlcyAlaS0laVwiIChwb3MxKzEpIChwb3MyKzEpXG4gICAgaW5cbiAgICBsZXQgbXNnID0gUHJpbnRmLnNwcmludGYgXCIlcyAlaSwgJXM6XFxuJXNcIiBmaWxlX2xpbmUgdi5sbnVtIGJ5dGVzIGRlc2NyIGluXG4gICAgQ29tbW9uLmpzb25fZXJyb3IgbXNnXG5cblxuICBsZXQgbGV4ZXJfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJyVzJ1wiIGRlc2NyIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikpXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBsb25nX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQganVuayA9IExleGluZy5sZXhlbWUgbGV4YnVmIGluXG4gICAgbGV0IGJ1Zl9zaXplID0gMzIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBidWZfc2l6ZSBpblxuICAgIGxldCAoKSA9IExleGVyX3V0aWxzLnJlYWRfanVua193aXRob3V0X3Bvc2l0aW9ucyBidWYgYnVmX3NpemUgbGV4YnVmIGluXG4gICAgbGV0IGV4dHJhX2p1bmsgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAnJXMlcydcIiBkZXNjciBqdW5rIGV4dHJhX2p1bmspXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBtaW4xMCA9IG1pbl9pbnQgLyAxMCAtIChpZiBtaW5faW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcbiAgbGV0IG1heDEwID0gbWF4X2ludCAvIDEwICsgKGlmIG1heF9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuXG4gIGV4Y2VwdGlvbiBJbnRfb3ZlcmZsb3dcblxuICBsZXQgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPj0gbWF4MTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuICsgZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgICAgYEludGxpdCAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG5cbiAgbGV0IGV4dHJhY3RfbmVnYXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSAgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgMSBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPD0gbWluMTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuIC0gZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPiAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgICAgYEludGxpdCAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG5cbiAgbGV0IG5ld2xpbmUgdiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIHYubG51bSA8LSB2LmxudW0gKyAxO1xuICAgIHYuYm9sIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3NcblxuICBsZXQgYWRkX2xleGVtZSBidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgQnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbiAgbGV0IG1hcF9sZXhlbWUgZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBmIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlbikgMCBsZW5cblxuICB0eXBlIHZhcmlhbnRfa2luZCA9IFsgYEVkZ3lfYnJhY2tldCB8IGBTcXVhcmVfYnJhY2tldCB8IGBEb3VibGVfcXVvdGUgXVxuXG4jIDE1NCBcImxpYi9yZWFkLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIzNlxcMjU1XFwyMzdcXDI1NVxcMDAzXFwwMDBcXDIzOVxcMjU1XFwwMTZcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNDlcXDI1NVxcMDg1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NFxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDI1M1xcMjU1XFwwMTFcXDAwMFxcMjUyXFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjUxXFwyNTVcXDAyMVxcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDIyXFwwMDBcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIyXFwwMDBcXDAxMlxcMDAwXFwwMDhcXDAwMFxcMjUwXFwyNTVcXFxuICAgIFxcMTE5XFwwMDBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTYxXFwwMDBcXDE3MVxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDIwOVxcMDAwXFxcbiAgICBcXDI0MFxcMjU1XFwwMTFcXDAwMFxcMDM4XFwwMDBcXDI1MlxcMjU1XFwwNjVcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMTBcXDAwMFxcXG4gICAgXFwyNTJcXDI1NVxcMTYzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjM0XFwwMDBcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMDQ4XFwwMDFcXFxuICAgIFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDEyNlxcMDAxXFxcbiAgICBcXDE0OVxcMDAxXFwyNDlcXDI1NVxcMDM5XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDM4XFwwMDBcXDE4N1xcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNDhcXDAwMVxcMDE1XFwwMDJcXDI1NVxcMjU1XFwyMjBcXDAwMFxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMDM5XFwwMDJcXFxuICAgIFxcMTA5XFwwMDJcXDAxNFxcMDAxXFwwODhcXDAwMlxcMTY0XFwwMDJcXDE4N1xcMDAyXFwyMjVcXDAwMlxcMDEzXFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDFcXFxuICAgIFxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDFcXDAwNVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwwMjNcXDAwMFxcMjU0XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDBcXDA0OFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAxXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDEzN1xcMDAwXFwxMDRcXDAwMFxcMDg5XFwwMDBcXDA4OFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDBcXDEzN1xcMDAwXFwxNzdcXDAwMFxcMjU0XFwyNTVcXDE4M1xcMDAwXFwxNjhcXDAwMFxcMTY2XFwwMDBcXFxuICAgIFxcMTgzXFwwMDBcXDAwMlxcMDAwXFwyNTNcXDI1NVxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxODdcXDAwMFxcMDA0XFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDA1M1xcMDAyXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwxMDNcXDAwMVxcMjU1XFwyNTVcXDI0OFxcMDAyXFwyNTRcXDI1NVxcXG4gICAgXFwwMDZcXDAwM1xcMDMwXFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDUwXFwwMDNcXFxuICAgIFxcMDc0XFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwM1xcMDg0XFwwMDNcXDEwOFxcMDAzXFxcbiAgICBcXDI0OVxcMjU1XFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI0NFxcMDAwXFwxMjBcXDAwM1xcMTQyXFwwMDNcXDE3OVxcMDAwXFwxOTRcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDE5MFxcMDAwXFwxODhcXDAwMFxcMTg3XFwwMDBcXDE5M1xcMDAwXFwxODNcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDE5MVxcMDAwXFwyMDFcXDAwMFxcMjAwXFwwMDBcXDE5NlxcMDAwXFwyMDNcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwxNTdcXDAwM1xcMDk1XFwwMDNcXDE3NFxcMDAzXFwxOTZcXDAwM1xcMjA2XFwwMDNcXDIxNlxcMDAzXFwyMjhcXDAwM1xcXG4gICAgXFwyMzlcXDAwM1xcMDYwXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMDg3XFwwMDRcXDI1NVxcMjU1XFwxNDVcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjFcXDAwNFxcMjU1XFwyNTVcXDIyOVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE4XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMTFcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODlcXDAwMFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDk1XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzNcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjIyXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDVcXDIzN1xcMjU1XFwyMzhcXDI1NVxcMDEwXFwwMDBcXDI0MFxcMjU1XFwwNDRcXDAwMVxcXG4gICAgXFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMDYxXFwwMDFcXDAwMlxcMDA0XFwyNDlcXDI1NVxcMDQ1XFwwMDVcXFxuICAgIFxcMjA5XFwwMDBcXDIyOFxcMDAwXFwyMTFcXDAwMFxcMjMyXFwwMDBcXDIyNVxcMDAwXFwyMjNcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIzNVxcMDAwXFwyMzRcXDAwMFxcMDA4XFwwMDFcXDI1NFxcMjU1XFwwMDRcXDAwMVxcMDIzXFwwMDFcXDI1M1xcMjU1XFwwNTRcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMDMxXFwwMDFcXDAyOVxcMDAxXFwwMzJcXDAwMVxcMDM5XFwwMDFcXDA0OVxcMDAxXFwwNDVcXDAwMVxcMjUxXFwyNTVcXFxuICAgIFxcMDU3XFwwMDFcXDA4MlxcMDAxXFwwODBcXDAwMVxcMDc4XFwwMDFcXDA4NFxcMDAxXFwwNzRcXDAwMVxcMDg2XFwwMDFcXDI1MFxcMjU1XFxcbiAgICBcXDExMFxcMDA1XFwwMTJcXDAwNFxcMTIzXFwwMDVcXDE1NVxcMDA1XFwxNjVcXDAwNVxcMTc3XFwwMDVcXDE4N1xcMDA1XFwxOTdcXDAwNVxcXG4gICAgXFwyNDFcXDI1NVxcMTk5XFwwMDFcXDA3N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDE1NFxcMDAyXFwyMjJcXDAwNVxcMjA5XFwwMDVcXFxuICAgIFxcMTU1XFwwMDJcXDIzOVxcMDA1XFwwNTNcXDAwNlxcMDc2XFwwMDZcXDExNFxcMDA2XFwwMTZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTUyXFwwMDZcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjI3XFwwMDZcXDI1NVxcMjU1XFwwODVcXDAwN1xcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAxMVxcMDAwXFwyNDdcXDI1NVxcMDc2XFwwMDJcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzFcXDAwMlxcMjQzXFwwMDVcXDA1MVxcMDA3XFwxMDBcXDAwMVxcMTE1XFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMThcXDAwMVxcMTU0XFwwMDFcXDE3MVxcMDAxXFwyNTVcXDI1NVxcMTczXFwwMDFcXDE3NlxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg3XFwwMDFcXDI1M1xcMDAxXFwyMzBcXDAwMVxcMjMwXFwwMDFcXDIzNFxcMDAxXFwyNDdcXDAwMVxcMjM3XFwwMDFcXFxuICAgIFxcMjM0XFwwMDFcXDAwOVxcMDAyXFwwMTlcXDAwMlxcMDE5XFwwMDJcXDAxNVxcMDAyXFwwMjFcXDAwMlxcMDExXFwwMDJcXDAwN1xcMDAyXFxcbiAgICBcXDE0MlxcMDA2XFwxNTJcXDAwNlxcMTE2XFwwMDdcXDE3MFxcMDA3XFwxODBcXDAwN1xcMTkwXFwwMDdcXDIwMFxcMDA3XFwyMTBcXDAwN1xcXG4gICAgXFwyNDhcXDI1NVxcMTIwXFwwMDJcXDE2N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDIxNlxcMDAyXFwwODJcXDAwN1xcMjIwXFwwMDdcXFxuICAgIFxcMjM2XFwwMDJcXDI0NFxcMDA3XFwwNThcXDAwOFxcMDgxXFwwMDhcXDExOVxcMDA4XFwwNzZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTU3XFwwMDhcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjMyXFwwMDhcXDI1NVxcMjU1XFwxMzVcXDAwMlxcXG4gICAgXFwxMjBcXDAwMlxcMjUzXFwyNTVcXDEwMFxcMDAyXFwyNTRcXDI1NVxcMTgyXFwwMDJcXDI1NVxcMjU1XFwwMTFcXDAwMlxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMlxcMjU1XFwyNTVcXDE3OFxcMDAyXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDE4M1xcMDAyXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIxXFwwMDJcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA5N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDEzOFxcMDAwXFwwMDBcXDAwMFxcMTQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTg3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxN1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTIxXFwwMDFcXDEyNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxNDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTkzXFwwMDFcXDE5N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjIwXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIzM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0MFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMTcwXFwwMDBcXDEzNFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxNFxcMDAxXFwwMTNcXDAwMFxcMDQ5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDA1NlxcMDAwXFwxMThcXDAwMFxcMDA2XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDFcXDEzN1xcMDAwXFwwMDBcXDAwMlxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMTM4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMTRcXDAwMFxcMTEwXFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAzMFxcMDAwXFwwNDhcXDAwMFxcMDA4XFwwMDBcXDExNFxcMDAwXFwyMDlcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAxXFxcbiAgICBcXDAxM1xcMDAxXFwwMjlcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxN1xcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDIzXFwwMDBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAzNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDIwXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMzdcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA2MVxcMDAwXFwwODVcXDAwMFxcMDQ4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA2N1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODZcXDAwMFxcMTQzXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMTQ0XFwwMDBcXFxuICAgIFxcMTQ1XFwwMDBcXDE0NlxcMDAwXFwwNTVcXDAwMFxcMTQ4XFwwMDBcXDA1NVxcMDAwXFwxNDlcXDAwMFxcMDQ4XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwxNTBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMFxcMTYxXFwwMDBcXDA2NlxcMDAwXFwxNThcXDAwMFxcMDUzXFwwMDBcXDE1OVxcMDAwXFwwNTNcXDAwMFxcMTYwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDE2NVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NlxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwxMTZcXDAwMFxcXG4gICAgXFwxMzJcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMjhcXDAwMFxcMTM5XFwwMDBcXDEzNFxcMDAwXFwxNjRcXDAwMFxcMDkzXFwwMDBcXFxuICAgIFxcMTcxXFwwMDBcXDA3N1xcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzJcXDAwMFxcMTEyXFwwMDBcXDE3M1xcMDAwXFxcbiAgICBcXDE3NFxcMDAwXFwyMTBcXDAwMFxcMjI2XFwwMDBcXDIwOFxcMDAwXFwyMTFcXDAwMFxcMjEyXFwwMDBcXDA1OVxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwxMzRcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE2XFwwMDBcXDIxOFxcMDAwXFwxNDFcXDAwMFxcMjE5XFwwMDBcXFxuICAgIFxcMDkzXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTIzXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMjI0XFwwMDBcXDEzNlxcMDAwXFxcbiAgICBcXDA5NVxcMDAwXFwyMjVcXDAwMFxcMDM1XFwwMDFcXDA2NVxcMDAxXFwyMzRcXDAwMFxcMTU1XFwwMDBcXDAwNVxcMDAxXFwwOTdcXDAwMVxcXG4gICAgXFwyNTBcXDAwMFxcMjU1XFwyNTVcXDI1NFxcMDAwXFwwNTdcXDAwMVxcMDYxXFwwMDFcXDA5NVxcMDAxXFwwNzdcXDAwMFxcMDQ0XFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA4OFxcMDAxXFwwMDlcXDAwMVxcMDI5XFwwMDFcXDA3NlxcMDAwXFwxMjRcXDAwMFxcMDMzXFwwMDFcXDAxOFxcMDAxXFxcbiAgICBcXDA3NVxcMDAwXFwwOThcXDAwMFxcMDE5XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDg3XFwwMDFcXDEyMFxcMDAxXFwwODlcXDAwMVxcXG4gICAgXFwwNzRcXDAwMFxcMjI1XFwwMDBcXDA1M1xcMDAxXFwxMjFcXDAwMVxcMDczXFwwMDBcXDA5MFxcMDAxXFwwNzJcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk4XFwwMDBcXDExM1xcMDAxXFwxMjJcXDAwMFxcMDkxXFwwMDFcXDA2NFxcMDAwXFwwMDRcXDAwMVxcXG4gICAgXFwwOTNcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwxNTZcXDAwMFxcMTEyXFwwMDFcXDA5NFxcMDAxXFwwOTZcXDAwMVxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwxMDBcXDAwMVxcMTU3XFwwMDBcXFxuICAgIFxcMTAxXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDE4M1xcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMDI0XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDEwMlxcMDAxXFwxMDNcXDAwMVxcMTA1XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxMDZcXDAwMVxcMTA3XFwwMDFcXDA0OFxcMDAxXFwwNDBcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxMTBcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwxMTFcXDAwMVxcXG4gICAgXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDE3MVxcMDAxXFwwMzFcXDAwMVxcMTcwXFwwMDFcXDAyM1xcMDAxXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA5MlxcMDAwXFwxNjhcXDAwMVxcMDYzXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMjQ4XFwwMDBcXDE2NVxcMDAxXFwyNTJcXDAwMFxcXG4gICAgXFwxNjJcXDAwMVxcMDU5XFwwMDFcXDA2OVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDAzOVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDE2M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwxMjBcXDAwMFxcMDAyXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMTY2XFwwMDFcXDA1NVxcMDAxXFwxNTNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDdcXDAwMVxcMTY3XFwwMDFcXDE2NFxcMDAxXFwxNjlcXDAwMVxcMDE2XFwwMDFcXDE2NFxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA1MVxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDEzN1xcMDAxXFwxNjRcXDAwMVxcMTcyXFwwMDFcXDE4NVxcMDAxXFwxMzZcXDAwMVxcMTczXFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDE3NFxcMDAxXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNDZcXDAwMVxcXG4gICAgXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDE4MFxcMDAwXFwxNjRcXDAwMVxcMTg0XFwwMDFcXDE4MVxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDEyNFxcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDE5MlxcMDAxXFwxNzhcXDAwMVxcXG4gICAgXFwwMjFcXDAwMVxcMTc5XFwwMDFcXDA5N1xcMDAwXFwxOTNcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTgzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDIxNlxcMDAxXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDE4NFxcMDAxXFwyMTZcXDAwMVxcMjA5XFwwMDFcXDA5N1xcMDAwXFxcbiAgICBcXDIyM1xcMDAxXFwwOTdcXDAwMFxcMjA4XFwwMDFcXDIzMFxcMDAxXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDIxOVxcMDAxXFwwMzdcXDAwMVxcXG4gICAgXFwyMTZcXDAwMVxcMjE3XFwwMDFcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMTZcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMjE4XFwwMDFcXDI1MFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMjRcXDAwMVxcMTI0XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMjFcXDAwMVxcMDAwXFwwMDBcXDI1M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5NlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyMzVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjQxXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDAwMVxcMjQyXFwwMDFcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI0NlxcMDAxXFwxMjlcXDAwMVxcMTI5XFwwMDFcXFxuICAgIFxcMjI4XFwwMDFcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDAwXFwwMDBcXDE5OFxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMjM0XFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMVxcMTc3XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDIwMVxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAwXFwyMDZcXDAwMVxcMTIzXFwwMDFcXDE4OVxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTg5XFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTk1XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNDhcXDAwMVxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMjAyXFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjI2XFwwMDBcXDE5NVxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMjFcXDAwMVxcMjM5XFwwMDFcXFxuICAgIFxcMjU0XFwwMDFcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMjQ0XFwwMDFcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg2XFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTEzXFwwMDFcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwMDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDIzOFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAxXFwwNzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzFcXDAwMVxcMDc2XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDFcXDExOVxcMDAxXFwwMDBcXDAwMFxcMTE5XFwwMDFcXDAwMFxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE3XFwwMDFcXDAwMFxcMDAwXFwwNzVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTg1XFwwMDFcXDAwMFxcMDAwXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE5MVxcMDAxXFwxNDJcXDAwMVxcMTkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDZcXDAwMVxcMTQ3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMTUzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3N1xcMDAxXFwxNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTU2XFwwMDFcXDAwMFxcMDAwXFwxNDhcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDE1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTg3XFwwMDFcXDAwMFxcMDAwXFwxNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAxXFwwMDBcXDAwMFxcMTg5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE5OVxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMTRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjVcXDAwMFxcMTM4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwM1xcMDAwXFwxNjlcXDAwMFxcMTM0XFwwMDBcXDE3NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTI1XFwwMDBcXDEyOVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyMzZcXDAwMVxcMTM2XFwwMDBcXDI1NVxcMDAxXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDAxMFxcMDAwXFwxMzZcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwxMDdcXDAwMFxcMTAyXFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDI5XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDIwOFxcMDAwXFwyMzNcXDAwMFxcMjU1XFwwMDBcXFxuICAgIFxcMDEyXFwwMDFcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDYwXFwwMDBcXDAxMVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyNFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMjJcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDMzXFwwMDBcXDAxOFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMTlcXDAwMFxcMDM1XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NVxcMDAwXFwwNDZcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NVxcMDAwXFwxNDBcXDAwMFxcMDYwXFwwMDBcXDAxM1xcMDAwXFwxNDNcXDAwMFxcXG4gICAgXFwxNDRcXDAwMFxcMTQ1XFwwMDBcXDA0OFxcMDAwXFwxNDdcXDAwMFxcMDQ4XFwwMDBcXDE0OFxcMDAwXFwwMzlcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNjVcXDAwMFxcMDM5XFwwMDBcXDE0OVxcMDAwXFxcbiAgICBcXDE1MFxcMDAwXFwxNTZcXDAwMFxcMDYzXFwwMDBcXDE1N1xcMDAwXFwwNTFcXDAwMFxcMTU4XFwwMDBcXDA1MVxcMDAwXFwxNTlcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMTU1XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTU1XFwwMDBcXDA5MVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2OFxcMDAwXFwxMDJcXDAwMFxcMTA3XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDEzMVxcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMTMzXFwwMDBcXDE2M1xcMDAwXFwwOTRcXDAwMFxcXG4gICAgXFwxNjVcXDAwMFxcMDY4XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE3MVxcMDAwXFwxMTFcXDAwMFxcMTcyXFwwMDBcXFxuICAgIFxcMTczXFwwMDBcXDIwNlxcMDAwXFwyMDNcXDAwMFxcMjA3XFwwMDBcXDIxMFxcMDAwXFwyMTFcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDEzM1xcMDAwXFwyMTJcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE3XFwwMDBcXDE0MFxcMDAwXFwyMThcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMTlcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMTMzXFwwMDBcXFxuICAgIFxcMDkxXFwwMDBcXDIwM1xcMDAwXFwwMzRcXDAwMVxcMDYyXFwwMDFcXDIzM1xcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAxXFxcbiAgICBcXDI0N1xcMDAwXFwwNjBcXDAwMFxcMjUxXFwwMDBcXDA1NFxcMDAxXFwwNThcXDAwMVxcMDgxXFwwMDFcXDA2OFxcMDAwXFwwNDFcXDAwMVxcXG4gICAgXFwwODJcXDAwMVxcMDgzXFwwMDFcXDAwNlxcMDAxXFwwMjZcXDAwMVxcMDY4XFwwMDBcXDExOVxcMDAwXFwwMzBcXDAwMVxcMDE1XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDA5NFxcMDAwXFwwMTVcXDAwMVxcMDg0XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDcxXFwwMDFcXDA4OFxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwyMDNcXDAwMFxcMDUwXFwwMDFcXDA3MVxcMDAxXFwwNjhcXDAwMFxcMDg5XFwwMDFcXDA2OFxcMDAwXFwwNjhcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwOTdcXDAwMFxcMDc2XFwwMDFcXDExOVxcMDAwXFwwOTBcXDAwMVxcMDYzXFwwMDBcXDAwMVxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDE1MlxcMDAwXFwwNzZcXDAwMVxcMDkzXFwwMDFcXDA5NVxcMDAxXFwwOTdcXDAwMVxcMDk4XFwwMDFcXDA0NVxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OVxcMDAxXFwxNTJcXDAwMFxcXG4gICAgXFwxMDBcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwwMjBcXDAwMVxcMDc2XFwwMDFcXDA2NVxcMDAwXFwwMjBcXDAwMVxcMTAxXFwwMDFcXDEwMlxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDEwNVxcMDAxXFwxMDZcXDAwMVxcMDQ1XFwwMDFcXDAzNlxcMDAxXFwxMDdcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDExMFxcMDAxXFxcbiAgICBcXDAyNlxcMDAxXFwxMjFcXDAwMVxcMTU3XFwwMDFcXDAzMFxcMDAxXFwxNThcXDAwMVxcMDIwXFwwMDFcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDE1OVxcMDAxXFwwNjJcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwyNDdcXDAwMFxcMTYwXFwwMDFcXDI1MVxcMDAwXFxcbiAgICBcXDE2MVxcMDAxXFwwNThcXDAwMVxcMDY4XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA5NFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDM2XFwwMDFcXDA0MVxcMDAxXFwwOTdcXDAwMFxcMTYyXFwwMDFcXFxuICAgIFxcMTYzXFwwMDFcXDExOVxcMDAwXFwwMDFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwxNjVcXDAwMVxcMDU0XFwwMDFcXDE1MlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwNlxcMDAxXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMTVcXDAwMVxcMTY5XFwwMDFcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDUwXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTMzXFwwMDFcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTU0XFwwMDFcXDEzM1xcMDAxXFwxNzJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTczXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA0NVxcMDAxXFxcbiAgICBcXDE3NFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAxXFwxNTRcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTIyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMTQ4XFwwMDFcXDE3N1xcMDAxXFxcbiAgICBcXDAyMFxcMDAxXFwxNzhcXDAwMVxcMDk4XFwwMDBcXDE0OFxcMDAxXFwxNzlcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcXG4gICAgXFwxODNcXDAwMVxcMjE2XFwwMDFcXDE5M1xcMDAxXFwwOTVcXDAwMFxcMTU0XFwwMDFcXDIxNlxcMDAxXFwyMDVcXDAwMVxcMDk4XFwwMDBcXFxuICAgIFxcMjIyXFwwMDFcXDA5NVxcMDAwXFwyMDVcXDAwMVxcMjI5XFwwMDFcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMjE4XFwwMDFcXDAzNlxcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwyMTVcXDAwMVxcMjU1XFwyNTVcXDIxOFxcMDAxXFwyMTVcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMTZcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDIxNVxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMjJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk4XFwwMDBcXDI1NVxcMjU1XFwyMTVcXDAwMVxcMjQ3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOThcXDAwMFxcMjU1XFwyNTVcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMDk4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIyMFxcMDAxXFwyNTVcXDI1NVxcMjUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5OFxcMDAwXFwxMjFcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMDk4XFwwMDBcXDA5OFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDI1MVxcMDAxXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjQzXFwwMDFcXDEyNVxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDI1NVxcMjU1XFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyMzFcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwxNzZcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMjU1XFwyNTVcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTg1XFwwMDBcXDIwNVxcMDAxXFwxMjJcXDAwMVxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFxcbiAgICBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTJcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkzXFwwMDFcXDI0N1xcMDAxXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOTlcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwxOTlcXDAwMFxcMTI1XFwwMDFcXDEyOFxcMDAxXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcXG4gICAgXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwyMDRcXDAwMFxcMTk0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDBcXDIyMFxcMDAxXFwyMzhcXDAwMVxcXG4gICAgXFwyNTFcXDAwMVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyNDNcXDAwMVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjRcXDAwMVxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMTk3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDIyOFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFxcbiAgICBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFxcbiAgICBcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDE5OVxcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjM3XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwxMTJcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExNVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTVcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXFxuICAgIFxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXFxuICAgIFxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcXG4gICAgXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMjU1XFwyNTVcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDEyNlxcMDAxXFwxMjlcXDAwMVxcMTI2XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyOVxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTg0XFwwMDFcXDEzOFxcMDAxXFwxODRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXFxuICAgIFxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTU2XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwxODZcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTk4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDFcXDI1NVxcMjU1XFwxODdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTg2XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxNzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgdHJ1ZSApXG4jIDEwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDE3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCBmYWxzZSApXG4jIDEwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDE3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgTnVsbCApXG4jIDEwMjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDE3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgXCJOYU5cIlxuICAgICAgICAgICAgICAgIClcbiMgMTAzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMTgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCBcIkluZmluaXR5XCJcbiAgICAgICAgICAgICAgICApXG4jIDEwNDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgXCItSW5maW5pdHlcIlxuICAgICAgICAgICAgICAgIClcbiMgMTA1NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgMTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBTdHJpbmdsaXQgKGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgKVxuIyAxMDY4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyAyMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgKVxuIyAxMDczIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyAyMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgKVxuIyAxMDc4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyAyMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0bGl0IChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgKVxuIyAxMDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgMjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBBc3NvYyAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgMjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgYExpc3QgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTEzNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEyIC0+XG4jIDI1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGBUdXBsZSAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTU5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTMgLT5cbiMgMjc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBjb25zID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGBWYXJpYW50IChjb25zLCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTczIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTQgLT5cbiMgMjg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTc4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTUgLT5cbiMgMjg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE4MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE2IC0+XG4jIDI4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE3IC0+XG4jIDI4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE4IC0+XG4jIDI4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDExOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOSAtPlxuIyAyOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAxMjAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIDU4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDI5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jb250ZW50cyB2LmJ1ZiApXG4jIDEyMTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDI5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxMjIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAyOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDEyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDI5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMjMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX3N0cmluZyB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgNjNcbmFuZCBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBsZXQgYiA9IHYuYnVmIGluXG4gICAgICAgICAgICAgICAgICAgIGYgKEJ1ZmZlci5jb250ZW50cyBiKSAwIChCdWZmZXIubGVuZ3RoIGIpIClcbiMgMTI0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTI1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDEyNTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDMwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMjYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIDY4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgY1xuIyAxMjc1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cbiMgMzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiBjIClcbiMgMTI3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXGInIClcbiMgMTI4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXDAxMicgKVxuIyAxMjg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbicgKVxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAzMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xccicgKVxuIyAxMjk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyAzMTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcdCcgKVxuIyAxMzA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxubGV0XG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgYVxuIyAxMzEwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuIyAxMzE1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDEzMjAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuIyAxMzI1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNCkgaW5cbiMgMzIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB4ID49IDB4RDgwMCAmJiB4IDw9IDB4REJGRiB0aGVuXG4gICAgICAgICAgICAgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWZcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIENvZGVjLnV0Zjhfb2ZfY29kZSB2LmJ1ZiB4XG5cbiAgICAgICAgIClcbiMgMTMzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgMzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlXCIgdiBsZXhidWYgKVxuIyAxMzQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTM0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiA4MlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgYVxuIyAxMzYwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiXG4jIDEzNjUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyAxMzcwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNClcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuIyAxMzc1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNSkgaW5cbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHkgPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB5ID49IDB4REMwMCAmJiB5IDw9IDB4REZGRiB0aGVuXG4gICAgICAgICAgICAgQ29kZWMudXRmOF9vZl9zdXJyb2dhdGVfcGFpciB2LmJ1ZiB4IHlcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGxvdyBzdXJyb2dhdGUgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiXG4gICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgKVxuIyAxMzg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiTWlzc2luZyBlc2NhcGUgc2VxdWVuY2UgcmVwcmVzZW50aW5nIGxvdyBzdXJyb2dhdGUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiIHYgbGV4YnVmIClcbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEzOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA5MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgICAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIChsZW4rMSkgaW5cbiAgICAgICAgICAgQnl0ZXMuc2V0IHMgMCAnXCInO1xuICAgICAgICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIHMgMSBsZW47XG4gICAgICAgICAgIEJ5dGVzLnRvX3N0cmluZyBzXG4gICAgICAgICApXG4jIDE0MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAxNDIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMDJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID0gcmVhZF9qc29uIHYgbGV4YnVmIGluXG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWY7XG4gICAgICAgICAgIFNvbWUgeCApXG4jIDE0NDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIE5vbmUgKVxuIyAxNDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgMTA3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM2OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDE0NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiAxMTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbW1hIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIDExNVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE1MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTUyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMTlcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgRWRneV9icmFja2V0IClcbiMgMTUzMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGBEb3VibGVfcXVvdGUgKVxuIyAxNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYFNxdWFyZV9icmFja2V0IClcbiMgMTU0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcsICdcXFwiJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAzODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE1NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDEyNVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNTY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzOTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG4jIDE1NzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcbiMgMTU3NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAxNTgxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZW9mIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIDEzMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE1OTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNTk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIDEzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjEwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDE2MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiAxNDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoICgpIClcbiMgMTY0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ251bGwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTY0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTY1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsX2lmX3Bvc3NpYmxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgMTQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY2NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYm9vbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIDE1MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY4MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY4NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjkxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd0cnVlJyBvciAnZmFsc2UnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTcwMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzA2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgMTc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTcyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludGVnZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTc0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnRlZ2VyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTc1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50MzIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgMTg1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQ1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50MzIub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzY5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDMyLm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQzMiBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxNzg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDMyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTc5MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzk3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQ2NCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiAxOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQ2NC5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE4MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQ4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50NjQub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDY0IGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE4MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50NjQgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxODM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE4MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bWJlciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgMTk5XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmFuIClcbiMgMTg1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGluZmluaXR5IClcbiMgMTg1NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5lZ19pbmZpbml0eSApXG4jIDE4NjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDUwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmbG9hdF9vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKSApXG4jIDE4NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDUwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGZsb2F0IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3Jlcy4gKilcbiAgICAgICAgICAgICAgICAgICAgZmxvYXRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiTmFOXCIgLT4gbmFuXG4gICAgICAgICAgICAgICAgICAgICAgfCBcIkluZmluaXR5XCIgLT4gaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IFwiLUluZmluaXR5XCIgLT4gbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYSBudW1iZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhIG51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICApXG4jIDE4ODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDUyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgbnVtYmVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTg5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgNTIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxODk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiAyMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTkxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXFxcIicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiAyMzdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxOTM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxubGV0XG4jIDUzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgc1xuIyAxOTQwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDUzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBzIClcbiMgMTk0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDUzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTk1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9pZGVudCB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiAyNDJcbmFuZCBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxOTY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbWFwX2xleGVtZSBmIGxleGJ1ZiApXG4jIDE5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5ODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zZXF1ZW5jZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIwMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU2MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjAxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiAyNTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU2NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMDQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjA1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiAyNTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1ODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDIwNjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIwNzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiAyNTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIwODMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMjA4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjA5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGUgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNjJcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgICAgIClcbiMgMjEzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMTM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2MjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIxNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgMjY2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTU5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIDI2OFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjE3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIxODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgMjcxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIyMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjIxNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIDI3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMjI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIyMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiAyODJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIyODYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI5MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sY3VybCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiAyODZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjMwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2ODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIDI5MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAyMzMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgMjkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjM0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMjM1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjM1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIDI5N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzNzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjM4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV90dXBsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIDMwMVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmYWxzZSApXG4jIDIzOTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCB0cnVlIClcbiMgMjQwMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQwNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNzA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiAzMDZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDIzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0MjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQzMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ycGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgMzEwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiAzMTRcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcmJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiAzMThcbmFuZCBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIDMyMlxuYW5kIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDczNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDczNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDc0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNTQxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyA3NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjU0NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjU1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNTc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgNzY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI1OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA3ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI2MTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMiAtPlxuIyA4MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjYzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEzIC0+XG4jIDgxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjYzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE0IC0+XG4jIDgxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNSAtPlxuIyA4MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNiAtPlxuIyA4MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNyAtPlxuIyA4MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNjU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTggLT5cbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMjY2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgMzc4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAyNjc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMjY3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI2ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgMzg5XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZiApXG4jIDI2OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMjcwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNzA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjcxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgMzk0XG5hbmQgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNzI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNzMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjczNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNzQwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIDM5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcbiMgMjc1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjc1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAneyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNzg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4ODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdbJztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyODAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcoJztcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyODI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA5MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzwnO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjg0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgOTMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyA5MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg2MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgOTM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgOTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjg3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDkzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDI4NzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDQ1MFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcIic7XG4gICAgICAgICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmXG4gICAgICAgICApXG4jIDI4OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAyODk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjkwMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiA0NjFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonO1xuICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfZ3QgdiBsZXhidWYgKVxuIyAyOTE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcbiMgMjkyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyOTI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjkzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgNDY2XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjk0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcbiMgMjk0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTYzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI5NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjk1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgNDcxXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTY3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5ODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA5ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMzAwMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIDQ3OFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nO1xuICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAzMDE0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5ODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMDE5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiA0ODBcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzAzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7IHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMzAzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzA0MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMDQ2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgNDg1XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMzA1OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzA2MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgNDg3XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMwNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDMwODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMDg1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMDkwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiA0OTJcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJztcbiAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAzMTA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzEwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgNDk0XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMxMjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDMxMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgNDk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonIClcbiMgMzE0OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzE1MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzE1OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgNTAzXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuIyAzMTcwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzE4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgNTA3XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiKi9cIiApXG4jIDMxOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG4jIDMxOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG4jIDMyMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcbiMgMzIwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBsZXQgXyA9IChyZWFkX2pzb24gOiBsZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+IHQpXG5cbiAgbGV0IHJlYWRfdCA9IHJlYWRfanNvblxuXG4gIGxldCByZWFkX2ludDggdiBsZXhidWYgPVxuICAgIGxldCBuID0gcmVhZF9pbnQgdiBsZXhidWYgaW5cbiAgICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW5cbiAgICAgIGxleGVyX2Vycm9yIFwiSW50OCBvdmVyZmxvd1wiIHYgbGV4YnVmXG4gICAgZWxzZVxuICAgICAgY2hhcl9vZl9pbnQgblxuXG4gIGxldCByZWFkX2xpc3QgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBMaXN0LnJldiAocmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYpXG5cbiAgbGV0IGFycmF5X29mX3Jldl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICBbXSAtPiBbfCB8XVxuICAgICAgfCB4IDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICAgIHIgOj0gTGlzdC50bCAhclxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgYVxuXG4gIGxldCByZWFkX2FycmF5IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgbGV0IGwgPSByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiBpblxuICAgIGFycmF5X29mX3Jldl9saXN0IGxcblxuICAoKiBSZWFkIGEgSlNPTiBvYmplY3QsIHJlYWRpbmcgdGhlIGtleXMgaW50byBPQ2FtbCBzdHJpbmdzXG4gICAgIChwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKilcbiAgbGV0IHJlYWRfZmllbGRzIHJlYWRfZmllbGQgaW5pdF9hY2MgdiA9XG4gICAgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9pZGVudCByZWFkX2ZpZWxkIGluaXRfYWNjIHZcblxuICBsZXQgZmluaXNoIHYgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgIGlmIG5vdCAocmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBsb25nX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZTpcIiB2IGxleGJ1ZlxuXG4gIGxldCBpbml0X2xleGVyID0gQ29tbW9uLmluaXRfbGV4ZXJcblxuICBsZXQgZnJvbV9sZXhidWYgdiA/KHN0cmVhbSA9IGZhbHNlKSBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG5cbiAgICBsZXQgeCA9XG4gICAgICBpZiByZWFkX2VvZiBsZXhidWYgdGhlblxuICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX2lucHV0XG4gICAgICBlbHNlXG4gICAgICAgIHJlYWRfanNvbiB2IGxleGJ1ZlxuICAgIGluXG5cbiAgICBpZiBub3Qgc3RyZWFtIHRoZW5cbiAgICAgIGZpbmlzaCB2IGxleGJ1ZjtcblxuICAgIHhcblxuXG4gIGxldCBmcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyBpblxuICAgICAgY2xvc2VfaW4gaWM7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICAgIHJhaXNlIGVcblxuICBleGNlcHRpb24gRmluYWxseSBvZiBleG4gKiBleG5cblxuICBsZXQgc2VxX2Zyb21fbGV4YnVmIHYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIGxleGJ1ZiA9XG4gICAgbGV0IHN0cmVhbSA9IFNvbWUgdHJ1ZSBpblxuICAgIGxldCByZWMgZiAoKSA9XG4gICAgICB0cnkgU2VxLkNvbnMgKGZyb21fbGV4YnVmIHYgP3N0cmVhbSBsZXhidWYsIGYpXG4gICAgICB3aXRoXG4gICAgICAgICAgQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgZmluICgpO1xuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICAgICh0cnkgZmluICgpIHdpdGggZmluX2UgLT4gcmFpc2UgKEZpbmFsbHkgKGUsIGZpbl9lKSkpO1xuICAgICAgICAgICAgcmFpc2UgZVxuICAgIGluXG4gICAgZlxuXG4gIGxldCBzZXFfZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4gIGxldCBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgP2ZpbiBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IH5maW4gbGV4YnVmXG5cbiAgdHlwZSBqc29uX2xpbmUgPSBbIGBKc29uIG9mIHQgfCBgRXhuIG9mIGV4biBdXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9jaGFubmVsXG4gICAgICA/YnVmID8oZmluID0gZnVuICgpIC0+ICgpKSA/Zm5hbWUgP2xudW06KGxudW0wID0gMSkgaWMgPVxuICAgIGxldCBidWYgPVxuICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgKEJ1ZmZlci5jcmVhdGUgMjU2KVxuICAgICAgICB8IFNvbWUgXyAtPiBidWZcbiAgICBpblxuICAgIGxldCByZWMgZiBsbnVtID0gZnVuICgpIC0+XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxpbmUgPSBpbnB1dF9saW5lIGljIGluXG4gICAgICAgIFNlcS5Db25zIChgSnNvbiAoZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgfmxudW0gbGluZSksIGYgKGxudW0gKyAxKSlcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfZmlsZSAtPiBmaW4gKCk7IFNlcS5OaWxcbiAgICAgICAgfCBlIC0+IFNlcS5Db25zIChgRXhuIGUsIGYgKGxudW0gKyAxKSlcbiAgICBpblxuICAgIGYgbG51bTBcblxuICBsZXQgbGluZXNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGluZXNlcV9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluID9mbmFtZSA/bG51bSBpY1xuXG4gIGxldCBwcmV0dGlmeSA/c3RkIHMgPVxuICAgIHByZXR0eV90b19zdHJpbmcgP3N0ZCAoZnJvbV9zdHJpbmcgcylcblxuICBsZXQgY29tcGFjdCA/c3RkOl8gcyA9XG4gICAgdG9fc3RyaW5nIChmcm9tX3N0cmluZyBzKVxuXG4jIDMzNzUgXCJsaWIvcmVhZC5tbFwiXG5cbm1vZHVsZSBVdGlsID0gc3RydWN0XG5leGNlcHRpb24gVHlwZV9lcnJvciBvZiBzdHJpbmcgKiB0XG5cbmxldCB0eXBlb2YgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBfIC0+IFwib2JqZWN0XCJcbiAgfCBgQm9vbCBfIC0+IFwiYm9vbFwiXG4gIHwgYEZsb2F0IF8gLT4gXCJmbG9hdFwiXG4gIHwgYExpc3QgXyAtPiBcImFycmF5XCJcbiAgfCBgTnVsbCAtPiBcIm51bGxcIlxuICB8IGBTdHJpbmcgXyAtPiBcInN0cmluZ1wiXG4gIHwgYEludGxpdCBfIC0+IFwiaW50bGl0XCJcbiAgfCBgRmxvYXRsaXQgXyAtPiBcImZsb2F0bGl0XCJcbiAgfCBgU3RyaW5nbGl0IF8gLT4gXCJzdHJpbmdsaXRcIlxuICB8IGBUdXBsZSBfIC0+IFwidHVwbGVcIlxuICB8IGBWYXJpYW50IF8gLT4gXCJ2YXJpYW50XCJcblxubGV0IHR5cGVyciBtc2cganMgPSByYWlzZSAoVHlwZV9lcnJvciAobXNnIF4gdHlwZW9mIGpzLCBqcykpXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nICogdFxuXG5sZXQgYXNzb2MgbmFtZSBvYmogPSB0cnkgTGlzdC5hc3NvYyBuYW1lIG9iaiB3aXRoIE5vdF9mb3VuZCAtPiBgTnVsbFxuXG5sZXQgbWVtYmVyIG5hbWUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gYXNzb2MgbmFtZSBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IG1lbWJlciAnXCIgXiBuYW1lIF4gXCInIG9mIG5vbi1vYmplY3QgdHlwZSBcIikganNcblxubGV0IHJlYyBwYXRoIGwgb2JqID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gU29tZSBvYmpcbiAgfCBrZXkgOjogbCAtPiAoXG4gICAgICBtYXRjaCBvYmogd2l0aFxuICAgICAgfCBgQXNzb2MgYXNzb2MgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Mga2V5IGFzc29jIHdpdGhcbiAgICAgICAgICB8IG9iaiAtPiBwYXRoIGwgb2JqXG4gICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IGluZGV4IGkgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMganMgLT5cbiAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICBsZXQgd3JhcHBlZF9pbmRleCA9IGlmIGkgPCAwIHRoZW4gbGVuICsgaSBlbHNlIGkgaW5cbiAgICAgIGlmIHdyYXBwZWRfaW5kZXggPCAwIHx8IHdyYXBwZWRfaW5kZXggPj0gbGVuIHRoZW5cbiAgICAgICAgcmFpc2UgKFVuZGVmaW5lZCAoXCJJbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG91dCBvZiBib3VuZHNcIiwganMpKVxuICAgICAgZWxzZSBMaXN0Lm50aCBsIHdyYXBwZWRfaW5kZXhcbiAgfCBqcyAtPlxuICAgICAgdHlwZXJyIChcIkNhbid0IGdldCBpbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG9mIG5vbi1hcnJheSB0eXBlIFwiKSBqc1xuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gYExpc3QgKExpc3QubWFwIGYgbClcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBtYXAgZnVuY3Rpb24gb3ZlciBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgdG9fYXNzb2MgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gb2JqXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgb2JqZWN0LCBnb3QgXCIganNcblxubGV0IHRvX29wdGlvbiBmID0gZnVuY3Rpb24gYE51bGwgLT4gTm9uZSB8IHggLT4gU29tZSAoZiB4KVxubGV0IHRvX2Jvb2wgPSBmdW5jdGlvbiBgQm9vbCBiIC0+IGIgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sLCBnb3QgXCIganNcblxubGV0IHRvX2Jvb2xfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+IFNvbWUgYlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyID0gZnVuY3Rpb25cbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50LCBnb3QgXCIganNcblxubGV0IHRvX2ludF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19saXN0ID0gZnVuY3Rpb24gYExpc3QgbCAtPiBsIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYXJyYXksIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcsIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZyBvciBudWxsLCBnb3QgXCIganNcblxubGV0IGNvbnZlcnRfZWFjaCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGYgbFxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IGNvbnZlcnQgZWFjaCBlbGVtZW50IG9mIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCByZWMgcmV2X2ZpbHRlcl9tYXAgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXZfZmlsdGVyX21hcCBmIGFjYyB0bFxuICAgICAgfCBTb21lIHkgLT4gcmV2X2ZpbHRlcl9tYXAgZiAoeSA6OiBhY2MpIHRsKVxuXG5sZXQgZmlsdGVyX21hcCBmIGwgPSBMaXN0LnJldiAocmV2X2ZpbHRlcl9tYXAgZiBbXSBsKVxuXG5sZXQgcmVjIHJldl9mbGF0dGVuIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYExpc3QgbDIgLT4gcmV2X2ZsYXR0ZW4gKExpc3QucmV2X2FwcGVuZCBsMiBhY2MpIHRsXG4gICAgICB8IF8gLT4gcmV2X2ZsYXR0ZW4gYWNjIHRsKVxuXG5sZXQgZmxhdHRlbiBsID0gTGlzdC5yZXYgKHJldl9mbGF0dGVuIFtdIGwpXG5cbmxldCBmaWx0ZXJfaW5kZXggaSBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgTGlzdCBsIC0+ICggdHJ5IFNvbWUgKExpc3QubnRoIGwgaSkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9saXN0IGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgTGlzdCBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxuXG5sZXQgZmlsdGVyX21lbWJlciBrIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBBc3NvYyBsIC0+ICggdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBsKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2Fzc29jIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQXNzb2MgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfYm9vbCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEJvb2wgeCAtPiBTb21lIHggfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfaW50IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgbFxuXG5sZXQgZmlsdGVyX2Zsb2F0IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfbnVtYmVyIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBrZXlzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKGtleSwgXykgLT4ga2V5KVxuXG5sZXQgdmFsdWVzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKF8sIHZhbHVlKSAtPiB2YWx1ZSlcblxubGV0IGNvbWJpbmUgKGZpcnN0IDogdCkgKHNlY29uZCA6IHQpID1cbiAgbWF0Y2ggKGZpcnN0LCBzZWNvbmQpIHdpdGhcbiAgfCBgQXNzb2MgYSwgYEFzc29jIGIgLT4gKGBBc3NvYyAoYSBAIGIpIDogdClcbiAgfCBhLCBiIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRXhwZWN0ZWQgdHdvIG9iamVjdHMsIGNoZWNrIGlucHV0c1wiKVxuZW5kXG5cbiIsIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIHwgYEludCBvZiBpbnRcbiAgICB8IGBJbnRsaXQgb2Ygc3RyaW5nXG4gICAgfCBgRmxvYXQgb2YgZmxvYXRcbiAgICB8IGBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIHwgYFR1cGxlIG9mIHQgbGlzdFxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgb3B0aW9uKVxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuXG5sZXQgcmVjIHRvX2Jhc2ljIDogdCAtPiBCYXNpYy50ID0gZnVuY3Rpb25cbiAgfCAoYE51bGwgfCBgQm9vbCBfIHwgYEludCBfIHwgYEZsb2F0IF8gfCBgU3RyaW5nIF8pIGFzIHggLT4geFxuICB8IGBJbnRsaXQgcyAtPiBgU3RyaW5nIHNcbiAgfCBgTGlzdCBsIHwgYFR1cGxlIGwgLT4gYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgdG9fYmFzaWMgbCkpXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGBBc3NvYyAoTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgdG9fYmFzaWMgdikpIGwpKVxuICB8IGBWYXJpYW50IChrLCBOb25lKSAtPiBgU3RyaW5nIGtcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSAtPiBgTGlzdCBbIGBTdHJpbmcgazsgdG9fYmFzaWMgdiBdXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfZmxvYXQgb2IgZlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfdHVwbGUgb2IgbFxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKCc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcpJ1xuXG5hbmQgd3JpdGVfdmFyaWFudCBvYiBzIG8gPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJzwnO1xuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgKG1hdGNoIG8gd2l0aFxuICAgICAgIE5vbmUgLT4gKClcbiAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICAgICB3cml0ZV9qc29uIG9iIHhcbiAgKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc+J1xuXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfc3RkX2Zsb2F0IG9iIGZcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfc3RkX3R1cGxlIG9iIGxcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG9cblxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG8gPVxuICBtYXRjaCBvIHdpdGhcbiAgICAgIE5vbmUgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICAgICAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgICAgd3JpdGVfc3RkX2pzb24gb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgKCogdGhpcyByZXF1aXJlcyBhbiBpbnQgYW5kIG5ldmVyIHVzZXMgaXQuIFRoaXMgaXMgZG9uZSB0byBwcmVzZXJ2ZVxuICAgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIG5vdCBicmVhayB0aGUgc2lnbmF0dXIgYnV0IGNhbiBzYWZlbHlcbiAgICAgYmUgY2hhbmdlZCB0byByZXF1aXJlIHVuaXQgaW4gYSBmdXR1cmUgY29tcGF0aWJpbGl0eS1icmVha2luZ1xuICAgICByZWxlYXNlICopXG4gIGxldCBfIDogaW50ID0gb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKSBpblxuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX2ZpbGUgP2xlbiA/c3RkID8oc3VmID0gXCJcXG5cIikgZmlsZSB4ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICB0b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHg7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbmxldCBzZXFfdG9fYnVmZmVyID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYiBzdCA9XG4gIFNlcS5pdGVyICh0b19idWZmZXIgfnN1ZiA/c3RkIG9iKSBzdFxuXG5sZXQgc2VxX3RvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgc3QgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICBzZXFfdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBzdDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCBzZXFfdG9fY2hhbm5lbCA/YnVmID8obGVuPTIwOTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYyBzZXEgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIFNlcS5pdGVyIChmdW4ganNvbiAtPlxuICAgIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IganNvbjtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICkgc2VxXG5cbmxldCBzZXFfdG9fZmlsZSA/bGVuID8oc3VmID0gXCJcXG5cIikgP3N0ZCBmaWxlIHN0ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyBzdDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxuXG5sZXQgcmVjIHNvcnQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHNvcnQgdikpIGwpIGluXG4gICAgICBgQXNzb2MgKExpc3Quc3RhYmxlX3NvcnQgKGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikgbClcbiAgfCBgTGlzdCBsIC0+XG4gICAgICBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IGBUdXBsZSBsIC0+XG4gICAgICBgVHVwbGUgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSBhcyB4IC0+XG4gICAgICBsZXQgdicgPSBzb3J0IHYgaW5cbiAgICAgIGlmIHYgPT0gdicgdGhlbiB4XG4gICAgICBlbHNlXG4gICAgICAgIGBWYXJpYW50IChrLCBTb21lIHYnKVxuICB8IHggLT4geFxuXG5tb2R1bGUgUHJldHR5ID0gc3RydWN0XG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgfCBgSW50IHggLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX2ludCB4KVxuICAgIHwgYEZsb2F0IHggLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIHN0ZCB0aGVuIHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgICAgZWxzZSBqc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG4gICAgfCBgSW50bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYExpc3QgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJbXVwiXG4gICAgfCBgTGlzdCBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIGlmIGlzX2F0b21fbGlzdCBsIHRoZW5cbiAgICAgICAgKCogdXNlIGxpbmUgd3JhcHBpbmcgbGlrZSB3ZSB3b3VsZCBkbyBmb3IgYSBwYXJhZ3JhcGggb2YgdGV4dCAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGhvdj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGxcbiAgICAgIGVsc2VcbiAgICAgICAgKCogcHJpbnQgdGhlIGVsZW1lbnRzIGhvcml6b250YWxseSBpZiB0aGV5IGZpdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgb3RoZXJ3aXNlIHByaW50IHRoZW0gaW4gYSBjb2x1bW4gKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxodj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgQXNzb2MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJ7fVwiXG4gICAgfCBgQXNzb2MgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJ7QDs8MSAwPiVhQDs8MSAtMj59XCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdF9maWVsZCBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYFR1cGxlIGwgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgbClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGlmIGwgPSBbXSB0aGVuXG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIigpXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aG92Mj5cIjtcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIihALCVhQDs8MCAtMj4pXCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgICAgICAgIClcbiAgICB8IGBWYXJpYW50IChzLCBOb25lKSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmcgcyBpblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IHJlcHJlc2VudGF0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8JXM+XCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuXG4gICAgfCBgVmFyaWFudCAocywgU29tZSB4KSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmcgcyBpblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBbIHJlcHJlc2VudGF0aW9uOyB4IF0pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgb3AgPSBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjxAWzxodjI+JXM6ICVhQF0+XCIgb3AgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5hbmQgZm9ybWF0X2ZpZWxkIHN0ZCBvdXQgKG5hbWUsIHgpID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVzOiAlYUBdXCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBuYW1lKSAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmxldCBwcCA/KHN0ZCA9IGZhbHNlKSBvdXQgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lYUBdXCIgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgKHggOj4gdClcblxubGV0IHRvX3N0cmluZyA/c3RkIHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChwcCA/c3RkKSB4XG5cbmxldCB0b19jaGFubmVsID9zdGQgb2MgeCA9XG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhQD9cIiAocHAgP3N0ZCkgeFxuZW5kXG5cbmxldCByZWMgcHAgZm10ID1cbiAgZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcImBOdWxsXCJcbiAgfCBgQm9vbCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEJvb2wgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlQlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgSW50IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJWRcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEludGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBGbG9hdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUZcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFN0cmluZyB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgVHVwbGUgdHVwIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFR1cGxlIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgZSAtPlxuICAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgIHBwIGZtdCBlO1xuICAgICAgICAgICB0cnVlKSBmYWxzZSB0dXApO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFZhcmlhbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIG5hbWU7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgKG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbmVcIlxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIoU29tZSBcIjtcbiAgICAgICAgcHAgZm10IHg7XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKVwiKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuXG5sZXQgc2hvdyB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcCB4XG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgYE51bGwsIGBOdWxsIC0+IHRydWVcbiAgfCBgQm9vbCBhLCBgQm9vbCBiIC0+IGEgPSBiXG4gIHwgYEludCBhLCBgSW50IGIgLT4gYSA9IGJcbiAgICB8IGBJbnRsaXQgYSwgYEludGxpdCBiIC0+IGEgPSBiXG4gICAgfCBgRmxvYXQgYSwgYEZsb2F0IGIgLT4gYSA9IGJcbiAgICB8IGBTdHJpbmcgYSwgYFN0cmluZyBiIC0+IGEgPSBiXG4gICAgfCBgQXNzb2MgeHMsIGBBc3NvYyB5cyAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5cyA9IGZ1biAoa2V5LCBfKSAoa2V5JywgXykgLT4gU3RyaW5nLmNvbXBhcmUga2V5IGtleScgaW5cbiAgICAgIGxldCB4cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHhzIGluXG4gICAgICBsZXQgeXMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB5cyBpblxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgKGZ1biAoa2V5LCB2YWx1ZSkgKGtleScsIHZhbHVlJykgLT5cbiAgICAgICAgbWF0Y2gga2V5ID0ga2V5JyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+IGVxdWFsIHZhbHVlIHZhbHVlJykgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBUdXBsZSB4cywgYFR1cGxlIHlzXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpLCBgVmFyaWFudCAobmFtZScsIHZhbHVlJykgLT5cbiAgICAgIChtYXRjaCBuYW1lID0gbmFtZScgd2l0aFxuICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIG1hdGNoIHZhbHVlLCB2YWx1ZScgd2l0aFxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IGVxdWFsIHggeVxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBfIC0+IGZhbHNlXG5cbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBtb2R1bGUgTGV4aW5nID1cbiAgICAoKlxuICAgICAgV2Ugb3ZlcnJpZGUgTGV4aW5nLmVuZ2luZSBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBhIG5ldyBwb3NpdGlvblxuICAgICAgcmVjb3JkIGVhY2ggdGltZSBhIHJ1bGUgaXMgbWF0Y2hlZC5cbiAgICAgIFRoaXMgcmVkdWNlcyB0b3RhbCBwYXJzaW5nIHRpbWUgYnkgYWJvdXQgMzElLlxuICAgICopXG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTGV4aW5nXG5cbiAgICBleHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5cbiAgICBsZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICAgICAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgICAgICgqXG4gICAgICBpZiByZXN1bHQgPj0gMCB0aGVuIGJlZ2luXG4gICAgICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICAgICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gICAgICBlbmQ7XG4gICAgICAqKVxuICAgICAgcmVzdWx0XG4gIGVuZFxuXG4gICgqIHNlZSBkZXNjcmlwdGlvbiBpbiBjb21tb24ubWxpICopXG4gIHR5cGUgbGV4ZXJfc3RhdGUgPSBDb21tb24uTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiRmlsZSAlcywgbGluZVwiIHNcbiAgICBpblxuICAgIGxldCBieXRlcyA9XG4gICAgICBpZiBwb3MxID0gcG9zMiB0aGVuXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZSAlaVwiIChwb3MxKzEpXG4gICAgICBlbHNlXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IFByaW50Zi5zcHJpbnRmIFwiJXMgJWksICVzOlxcbiVzXCIgZmlsZV9saW5lIHYubG51bSBieXRlcyBkZXNjciBpblxuICAgIENvbW1vbi5qc29uX2Vycm9yIG1zZ1xuXG5cbiAgbGV0IGxleGVyX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbG9uZ19lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IGp1bmsgPSBMZXhpbmcubGV4ZW1lIGxleGJ1ZiBpblxuICAgIGxldCBidWZfc2l6ZSA9IDMyIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgYnVmX3NpemUgaW5cbiAgICBsZXQgKCkgPSBMZXhlcl91dGlscy5yZWFkX2p1bmtfd2l0aG91dF9wb3NpdGlvbnMgYnVmIGJ1Zl9zaXplIGxleGJ1ZiBpblxuICAgIGxldCBleHRyYV9qdW5rID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJyVzJXMnXCIgZGVzY3IganVuayBleHRyYV9qdW5rKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbWluMTAgPSBtaW5faW50IC8gMTAgLSAoaWYgbWluX2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG4gIGxldCBtYXgxMCA9IG1heF9pbnQgLyAxMCArIChpZiBtYXhfaW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcblxuICBleGNlcHRpb24gSW50X292ZXJmbG93XG5cbiAgbGV0IGV4dHJhY3RfcG9zaXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuID49IG1heDEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiArIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuIDwgMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgYEludGxpdCAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG5cbiAgbGV0IGV4dHJhY3RfbmVnYXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSAgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgMSBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPD0gbWluMTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuIC0gZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPiAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIHRyeSBgSW50IChleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWYpXG4gICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICBgSW50bGl0IChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcblxuICBsZXQgbmV3bGluZSB2IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgdi5sbnVtIDwtIHYubG51bSArIDE7XG4gICAgdi5ib2wgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgbGV4YnVmLmxleF9jdXJyX3Bvc1xuXG4gIGxldCBhZGRfbGV4ZW1lIGJ1ZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBCdWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxuICBsZXQgbWFwX2xleGVtZSBmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGYgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuKSAwIGxlblxuXG4gIHR5cGUgdmFyaWFudF9raW5kID0gWyBgRWRneV9icmFja2V0IHwgYFNxdWFyZV9icmFja2V0IHwgYERvdWJsZV9xdW90ZSBdXG5cbiMgMTU0IFwibGliL3JlYWQubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjM2XFwyNTVcXDIzN1xcMjU1XFwwMDNcXDAwMFxcMjM5XFwyNTVcXDAxNlxcMDAwXFwyNDJcXDI1NVxcMjQzXFwyNTVcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMDBcXDAwMFxcMDMxXFwwMDBcXDI0OVxcMjU1XFwwODVcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU0XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMjUzXFwyNTVcXDAxMVxcMDAwXFwyNTJcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwyNTFcXDI1NVxcMDIxXFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMjJcXDAwMFxcMDIwXFwwMDBcXDAxNlxcMDAwXFwwMjJcXDAwMFxcMDEyXFwwMDBcXDAwOFxcMDAwXFwyNTBcXDI1NVxcXG4gICAgXFwxMTlcXDAwMFxcMTI5XFwwMDBcXDEzOVxcMDAwXFwxNjFcXDAwMFxcMTcxXFwwMDBcXDE4MVxcMDAwXFwxOTNcXDAwMFxcMjA5XFwwMDBcXFxuICAgIFxcMjQwXFwyNTVcXDAxMVxcMDAwXFwwMzhcXDAwMFxcMjUyXFwyNTVcXDA2NVxcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDExMFxcMDAwXFxcbiAgICBcXDI1MlxcMjU1XFwxNjNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzRcXDAwMFxcMjQ3XFwyNTVcXDI0OFxcMjU1XFwwNDhcXDAwMVxcXG4gICAgXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMTI2XFwwMDFcXFxuICAgIFxcMTQ5XFwwMDFcXDI0OVxcMjU1XFwwMzlcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzhcXDAwMFxcMTg3XFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI0OFxcMDAxXFwwMTVcXDAwMlxcMjU1XFwyNTVcXDIyMFxcMDAwXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwwMzlcXDAwMlxcXG4gICAgXFwxMDlcXDAwMlxcMDE0XFwwMDFcXDA4OFxcMDAyXFwxNjRcXDAwMlxcMTg3XFwwMDJcXDIyNVxcMDAyXFwwMTNcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMVxcXG4gICAgXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMVxcMDA1XFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDAyM1xcMDAwXFwyNTRcXDI1NVxcMDIwXFwwMDBcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwNDJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwNTNcXDAwMFxcMDQ4XFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDFcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMTM3XFwwMDBcXDEwNFxcMDAwXFwwODlcXDAwMFxcMDg4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMFxcMTM3XFwwMDBcXDE3N1xcMDAwXFwyNTRcXDI1NVxcMTgzXFwwMDBcXDE2OFxcMDAwXFwxNjZcXDAwMFxcXG4gICAgXFwxODNcXDAwMFxcMDAyXFwwMDBcXDI1M1xcMjU1XFwxNzdcXDAwMFxcMTcyXFwwMDBcXDE4N1xcMDAwXFwwMDRcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMDUzXFwwMDJcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDEwM1xcMDAxXFwyNTVcXDI1NVxcMjQ4XFwwMDJcXDI1NFxcMjU1XFxcbiAgICBcXDAwNlxcMDAzXFwwMzBcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAzXFwwNTBcXDAwM1xcXG4gICAgXFwwNzRcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAzXFwwODRcXDAwM1xcMTA4XFwwMDNcXFxuICAgIFxcMjQ5XFwyNTVcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjQ0XFwwMDBcXDEyMFxcMDAzXFwxNDJcXDAwM1xcMTc5XFwwMDBcXDE5NFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMTkwXFwwMDBcXDE4OFxcMDAwXFwxODdcXDAwMFxcMTkzXFwwMDBcXDE4M1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwyNTRcXDI1NVxcMTkxXFwwMDBcXDIwMVxcMDAwXFwyMDBcXDAwMFxcMTk2XFwwMDBcXDIwM1xcMDAwXFwxOTNcXDAwMFxcMTg5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDE1N1xcMDAzXFwwOTVcXDAwM1xcMTc0XFwwMDNcXDE5NlxcMDAzXFwyMDZcXDAwM1xcMjE2XFwwMDNcXDIyOFxcMDAzXFxcbiAgICBcXDIzOVxcMDAzXFwwNjBcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwwODdcXDAwNFxcMjU1XFwyNTVcXDE0NVxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyMVxcMDA0XFwyNTVcXDI1NVxcMjI5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMxXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMThcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM4XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMFxcMDAxXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjA4XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIxMVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4OVxcMDAwXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwOTVcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzM1xcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMjJcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwNVxcMjM3XFwyNTVcXDIzOFxcMjU1XFwwMTBcXDAwMFxcMjQwXFwyNTVcXDA0NFxcMDAxXFxcbiAgICBcXDI0M1xcMjU1XFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDI0NlxcMjU1XFwwNjFcXDAwMVxcMDAyXFwwMDRcXDI0OVxcMjU1XFwwNDVcXDAwNVxcXG4gICAgXFwyMDlcXDAwMFxcMjI4XFwwMDBcXDIxMVxcMDAwXFwyMzJcXDAwMFxcMjI1XFwwMDBcXDIyM1xcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjM1XFwwMDBcXDIzNFxcMDAwXFwwMDhcXDAwMVxcMjU0XFwyNTVcXDAwNFxcMDAxXFwwMjNcXDAwMVxcMjUzXFwyNTVcXDA1NFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwwMzFcXDAwMVxcMDI5XFwwMDFcXDAzMlxcMDAxXFwwMzlcXDAwMVxcMDQ5XFwwMDFcXDA0NVxcMDAxXFwyNTFcXDI1NVxcXG4gICAgXFwwNTdcXDAwMVxcMDgyXFwwMDFcXDA4MFxcMDAxXFwwNzhcXDAwMVxcMDg0XFwwMDFcXDA3NFxcMDAxXFwwODZcXDAwMVxcMjUwXFwyNTVcXFxuICAgIFxcMTEwXFwwMDVcXDAxMlxcMDA0XFwxMjNcXDAwNVxcMTU1XFwwMDVcXDE2NVxcMDA1XFwxNzdcXDAwNVxcMTg3XFwwMDVcXDE5N1xcMDA1XFxcbiAgICBcXDI0MVxcMjU1XFwxOTlcXDAwMVxcMDc3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMTU0XFwwMDJcXDIyMlxcMDA1XFwyMDlcXDAwNVxcXG4gICAgXFwxNTVcXDAwMlxcMjM5XFwwMDVcXDA1M1xcMDA2XFwwNzZcXDAwNlxcMTE0XFwwMDZcXDAxNlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTJcXDAwNlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjdcXDAwNlxcMjU1XFwyNTVcXDA4NVxcMDA3XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDExXFwwMDBcXDI0N1xcMjU1XFwwNzZcXDAwMlxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzMVxcMDAyXFwyNDNcXDAwNVxcMDUxXFwwMDdcXDEwMFxcMDAxXFwxMTVcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDExOFxcMDAxXFwxNTRcXDAwMVxcMTcxXFwwMDFcXDI1NVxcMjU1XFwxNzNcXDAwMVxcMTc2XFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODdcXDAwMVxcMjUzXFwwMDFcXDIzMFxcMDAxXFwyMzBcXDAwMVxcMjM0XFwwMDFcXDI0N1xcMDAxXFwyMzdcXDAwMVxcXG4gICAgXFwyMzRcXDAwMVxcMDA5XFwwMDJcXDAxOVxcMDAyXFwwMTlcXDAwMlxcMDE1XFwwMDJcXDAyMVxcMDAyXFwwMTFcXDAwMlxcMDA3XFwwMDJcXFxuICAgIFxcMTQyXFwwMDZcXDE1MlxcMDA2XFwxMTZcXDAwN1xcMTcwXFwwMDdcXDE4MFxcMDA3XFwxOTBcXDAwN1xcMjAwXFwwMDdcXDIxMFxcMDA3XFxcbiAgICBcXDI0OFxcMjU1XFwxMjBcXDAwMlxcMTY3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjE2XFwwMDJcXDA4MlxcMDA3XFwyMjBcXDAwN1xcXG4gICAgXFwyMzZcXDAwMlxcMjQ0XFwwMDdcXDA1OFxcMDA4XFwwODFcXDAwOFxcMTE5XFwwMDhcXDA3NlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTdcXDAwOFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMzJcXDAwOFxcMjU1XFwyNTVcXDEzNVxcMDAyXFxcbiAgICBcXDEyMFxcMDAyXFwyNTNcXDI1NVxcMTAwXFwwMDJcXDI1NFxcMjU1XFwxODJcXDAwMlxcMjU1XFwyNTVcXDAxMVxcMDAyXFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0NlxcMDAyXFwyNTVcXDI1NVxcMTc4XFwwMDJcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMTgzXFwwMDJcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAyXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjFcXDAwMlxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTM4XFwwMDBcXDAwMFxcMDAwXFwxNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxODdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDM4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxMjFcXDAwMVxcMTI1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDE0NFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTNcXDAwMVxcMTk3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwN1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjMzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjdcXDAwMFxcMTM5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAwM1xcMDAwXFwxNzBcXDAwMFxcMTM0XFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDExXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDE0XFwwMDFcXDAxM1xcMDAwXFwwNDlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDU2XFwwMDBcXDExOFxcMDAwXFwwMDZcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMVxcMTM3XFwwMDBcXDAwMFxcMDAyXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwxMzhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDAxNFxcMDAwXFwxMTBcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDE1XFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDMwXFwwMDBcXDA0OFxcMDAwXFwwMDhcXDAwMFxcMTE0XFwwMDBcXDIwOVxcMDAwXFwyMzZcXDAwMFxcMDAwXFwwMDFcXFxuICAgIFxcMDEzXFwwMDFcXDAyOVxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDE3XFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyNVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNVxcMDAwXFwwMjNcXDAwMFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDM0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMjBcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDQxXFwwMDBcXDAzN1xcMDAwXFwwNDhcXDAwMFxcMDA5XFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDdcXDAwMFxcMDYxXFwwMDBcXDA4NVxcMDAwXFwwNDhcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDY3XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NlxcMDAwXFwxNDNcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwxNDRcXDAwMFxcXG4gICAgXFwxNDVcXDAwMFxcMTQ2XFwwMDBcXDA1NVxcMDAwXFwxNDhcXDAwMFxcMDU1XFwwMDBcXDE0OVxcMDAwXFwwNDhcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDE1MFxcMDAwXFxcbiAgICBcXDE1MVxcMDAwXFwxNjFcXDAwMFxcMDY2XFwwMDBcXDE1OFxcMDAwXFwwNTNcXDAwMFxcMTU5XFwwMDBcXDA1M1xcMDAwXFwxNjBcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMTY1XFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MlxcMDAwXFwxNjNcXDAwMFxcMTY2XFwwMDBcXDA5M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwxMDNcXDAwMFxcMTA4XFwwMDBcXDExNlxcMDAwXFxcbiAgICBcXDEzMlxcMDAwXFwxMzRcXDAwMFxcMTM1XFwwMDBcXDEyOFxcMDAwXFwxMzlcXDAwMFxcMTM0XFwwMDBcXDE2NFxcMDAwXFwwOTNcXDAwMFxcXG4gICAgXFwxNzFcXDAwMFxcMDc3XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE3MlxcMDAwXFwxMTJcXDAwMFxcMTczXFwwMDBcXFxuICAgIFxcMTc0XFwwMDBcXDIxMFxcMDAwXFwyMjZcXDAwMFxcMjA4XFwwMDBcXDIxMVxcMDAwXFwyMTJcXDAwMFxcMDU5XFwwMDBcXDA4M1xcMDAwXFxcbiAgICBcXDEzNFxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTZcXDAwMFxcMjE4XFwwMDBcXDE0MVxcMDAwXFwyMTlcXDAwMFxcXG4gICAgXFwwOTNcXDAwMFxcMjIwXFwwMDBcXDIyMVxcMDAwXFwxMjNcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwyMjRcXDAwMFxcMTM2XFwwMDBcXFxuICAgIFxcMDk1XFwwMDBcXDIyNVxcMDAwXFwwMzVcXDAwMVxcMDY1XFwwMDFcXDIzNFxcMDAwXFwxNTVcXDAwMFxcMDA1XFwwMDFcXDA5N1xcMDAxXFxcbiAgICBcXDI1MFxcMDAwXFwyNTVcXDI1NVxcMjU0XFwwMDBcXDA1N1xcMDAxXFwwNjFcXDAwMVxcMDk1XFwwMDFcXDA3N1xcMDAwXFwwNDRcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDg4XFwwMDFcXDAwOVxcMDAxXFwwMjlcXDAwMVxcMDc2XFwwMDBcXDEyNFxcMDAwXFwwMzNcXDAwMVxcMDE4XFwwMDFcXFxuICAgIFxcMDc1XFwwMDBcXDA5OFxcMDAwXFwwMTlcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwODdcXDAwMVxcMTIwXFwwMDFcXDA4OVxcMDAxXFxcbiAgICBcXDA3NFxcMDAwXFwyMjVcXDAwMFxcMDUzXFwwMDFcXDEyMVxcMDAxXFwwNzNcXDAwMFxcMDkwXFwwMDFcXDA3MlxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOThcXDAwMFxcMTEzXFwwMDFcXDEyMlxcMDAwXFwwOTFcXDAwMVxcMDY0XFwwMDBcXDAwNFxcMDAxXFxcbiAgICBcXDA5M1xcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDE1NlxcMDAwXFwxMTJcXDAwMVxcMDk0XFwwMDFcXDA5NlxcMDAxXFwwOThcXDAwMVxcMDk5XFwwMDFcXDA0OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDEwMFxcMDAxXFwxNTdcXDAwMFxcXG4gICAgXFwxMDFcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMTgzXFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwwMjRcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMTAyXFwwMDFcXDEwM1xcMDAxXFwxMDVcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDEwNlxcMDAxXFwxMDdcXDAwMVxcMDQ4XFwwMDFcXDA0MFxcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDExMFxcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDExMVxcMDAxXFxcbiAgICBcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMTcxXFwwMDFcXDAzMVxcMDAxXFwxNzBcXDAwMVxcMDIzXFwwMDFcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDkyXFwwMDBcXDE2OFxcMDAxXFwwNjNcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwyNDhcXDAwMFxcMTY1XFwwMDFcXDI1MlxcMDAwXFxcbiAgICBcXDE2MlxcMDAxXFwwNTlcXDAwMVxcMDY5XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDI1NVxcMjU1XFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDM5XFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMTYzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDEyMFxcMDAwXFwwMDJcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwxNjZcXDAwMVxcMDU1XFwwMDFcXDE1M1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAwN1xcMDAxXFwxNjdcXDAwMVxcMTY0XFwwMDFcXDE2OVxcMDAxXFwwMTZcXDAwMVxcMTY0XFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDUxXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTM3XFwwMDFcXDE2NFxcMDAxXFwxNzJcXDAwMVxcMTg1XFwwMDFcXDEzNlxcMDAxXFwxNzNcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMTc0XFwwMDFcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA0NlxcMDAxXFxcbiAgICBcXDE3NVxcMDAxXFwxNzZcXDAwMVxcMTgwXFwwMDBcXDE2NFxcMDAxXFwxODRcXDAwMVxcMTgxXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTI0XFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMTkyXFwwMDFcXDE3OFxcMDAxXFxcbiAgICBcXDAyMVxcMDAxXFwxNzlcXDAwMVxcMDk3XFwwMDBcXDE5M1xcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFwxODNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMjE2XFwwMDFcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMTg0XFwwMDFcXDIxNlxcMDAxXFwyMDlcXDAwMVxcMDk3XFwwMDBcXFxuICAgIFxcMjIzXFwwMDFcXDA5N1xcMDAwXFwyMDhcXDAwMVxcMjMwXFwwMDFcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjE5XFwwMDFcXDAzN1xcMDAxXFxcbiAgICBcXDIxNlxcMDAxXFwyMTdcXDAwMVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIxNlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwyMThcXDAwMVxcMjUwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEyNFxcMDAxXFwxMjRcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIyMVxcMDAxXFwwMDBcXDAwMFxcMjUzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDIzNVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyNDFcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMDAxXFwyNDJcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjQ2XFwwMDFcXDEyOVxcMDAxXFwxMjlcXDAwMVxcXG4gICAgXFwyMjhcXDAwMVxcMDAwXFwwMDBcXDE5NlxcMDAxXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwMDBcXDAwMFxcMTk4XFwwMDFcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAxXFwyMzRcXDAwMVxcXG4gICAgXFwxMzRcXDAwMVxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMVxcMDAxXFwxNzdcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODhcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMjAxXFwwMDFcXDIyN1xcMDAxXFwwMDBcXDAwMFxcMTkxXFwwMDBcXDIwNlxcMDAxXFwxMjNcXDAwMVxcMTg5XFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxODlcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTVcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI0OFxcMDAxXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwyMDJcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMjZcXDAwMFxcMTk1XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDIyMVxcMDAxXFwyMzlcXDAwMVxcXG4gICAgXFwyNTRcXDAwMVxcMDAwXFwwMDBcXDIwN1xcMDAwXFwyNDRcXDAwMVxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMDNcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMVxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIzMFxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODZcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTNcXDAwMVxcMDAwXFwwMDBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDAwMFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDIwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMjQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjM4XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA0XFwwMDFcXDA3M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMVxcMDAwXFwwMDBcXDA3MVxcMDAxXFwwNzZcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwODBcXDAwMVxcMTE5XFwwMDFcXDAwMFxcMDAwXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDA4MVxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTdcXDAwMVxcMDAwXFwwMDBcXDA3NVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxODVcXDAwMVxcMDAwXFwwMDBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyN1xcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyN1xcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTkxXFwwMDFcXDE0MlxcMDAxXFwxOTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0NlxcMDAxXFwxNDdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwxNTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc3XFwwMDFcXDE1MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNTZcXDAwMVxcMDAwXFwwMDBcXDE0OFxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTQ5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTM5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OFxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxODdcXDAwMVxcMDAwXFwwMDBcXDE2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTlcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE2MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg5XFwwMDFcXDAwMFxcMDAwXFwxODlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTk5XFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIxNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjExXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDU3XFwwMDBcXDI1NVxcMjU1XFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAzXFwwMDBcXDE2OVxcMDAwXFwxMzRcXDAwMFxcMTc0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTJcXDAwMVxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFwxMjVcXDAwMFxcMTI5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDIzNlxcMDAxXFwxMzZcXDAwMFxcMjU1XFwwMDFcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDEwXFwwMDBcXDEzNlxcMDAwXFwxMDJcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDAwXFwwMDBcXDEwN1xcMDAwXFwxMDJcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMjlcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMjA4XFwwMDBcXDIzM1xcMDAwXFwyNTVcXDAwMFxcXG4gICAgXFwwMTJcXDAwMVxcMDE1XFwwMDBcXDAxN1xcMDAwXFwwNjBcXDAwMFxcMDExXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDI0XFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDM0XFwwMDBcXDAyMlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAxNFxcMDAwXFxcbiAgICBcXDAyN1xcMDAwXFwwMzNcXDAwMFxcMDE4XFwwMDBcXDAyM1xcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAxOVxcMDAwXFwwMzVcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDM2XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ1XFwwMDBcXDA0NlxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXDAxMVxcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFxcbiAgICBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg1XFwwMDBcXDE0MFxcMDAwXFwwNjBcXDAwMFxcMDEzXFwwMDBcXDE0M1xcMDAwXFxcbiAgICBcXDE0NFxcMDAwXFwxNDVcXDAwMFxcMDQ4XFwwMDBcXDE0N1xcMDAwXFwwNDhcXDAwMFxcMTQ4XFwwMDBcXDAzOVxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA2NVxcMDAwXFwwMzlcXDAwMFxcMTQ5XFwwMDBcXFxuICAgIFxcMTUwXFwwMDBcXDE1NlxcMDAwXFwwNjNcXDAwMFxcMTU3XFwwMDBcXDA1MVxcMDAwXFwxNThcXDAwMFxcMDUxXFwwMDBcXDE1OVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFxcbiAgICBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwxNTVcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYxXFwwMDBcXDE2MlxcMDAwXFwxNTVcXDAwMFxcMDkxXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTdcXDAwMFxcMDY4XFwwMDBcXDEwMlxcMDAwXFwxMDdcXDAwMFxcMTE1XFwwMDBcXFxuICAgIFxcMTMxXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMTI1XFwwMDBcXDEzOFxcMDAwXFwxMzNcXDAwMFxcMTYzXFwwMDBcXDA5NFxcMDAwXFxcbiAgICBcXDE2NVxcMDAwXFwwNjhcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTcxXFwwMDBcXDExMVxcMDAwXFwxNzJcXDAwMFxcXG4gICAgXFwxNzNcXDAwMFxcMjA2XFwwMDBcXDIwM1xcMDAwXFwyMDdcXDAwMFxcMjEwXFwwMDBcXDIxMVxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMTMzXFwwMDBcXDIxMlxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTdcXDAwMFxcMTQwXFwwMDBcXDIxOFxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwyMTlcXDAwMFxcMjIwXFwwMDBcXDExOVxcMDAwXFwyMjFcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwxMzNcXDAwMFxcXG4gICAgXFwwOTFcXDAwMFxcMjAzXFwwMDBcXDAzNFxcMDAxXFwwNjJcXDAwMVxcMjMzXFwwMDBcXDE1MlxcMDAwXFwwMDFcXDAwMVxcMDgwXFwwMDFcXFxuICAgIFxcMjQ3XFwwMDBcXDA2MFxcMDAwXFwyNTFcXDAwMFxcMDU0XFwwMDFcXDA1OFxcMDAxXFwwODFcXDAwMVxcMDY4XFwwMDBcXDA0MVxcMDAxXFxcbiAgICBcXDA4MlxcMDAxXFwwODNcXDAwMVxcMDA2XFwwMDFcXDAyNlxcMDAxXFwwNjhcXDAwMFxcMTE5XFwwMDBcXDAzMFxcMDAxXFwwMTVcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMDk0XFwwMDBcXDAxNVxcMDAxXFwwODRcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwNzFcXDAwMVxcMDg4XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDIwM1xcMDAwXFwwNTBcXDAwMVxcMDcxXFwwMDFcXDA2OFxcMDAwXFwwODlcXDAwMVxcMDY4XFwwMDBcXDA2OFxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA5N1xcMDAwXFwwNzZcXDAwMVxcMTE5XFwwMDBcXDA5MFxcMDAxXFwwNjNcXDAwMFxcMDAxXFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMTUyXFwwMDBcXDA3NlxcMDAxXFwwOTNcXDAwMVxcMDk1XFwwMDFcXDA5N1xcMDAxXFwwOThcXDAwMVxcMDQ1XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk5XFwwMDFcXDE1MlxcMDAwXFxcbiAgICBcXDEwMFxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDAyMFxcMDAxXFwwNzZcXDAwMVxcMDY1XFwwMDBcXDAyMFxcMDAxXFwxMDFcXDAwMVxcMTAyXFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMTA1XFwwMDFcXDEwNlxcMDAxXFwwNDVcXDAwMVxcMDM2XFwwMDFcXDEwN1xcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMTEwXFwwMDFcXFxuICAgIFxcMDI2XFwwMDFcXDEyMVxcMDAxXFwxNTdcXDAwMVxcMDMwXFwwMDFcXDE1OFxcMDAxXFwwMjBcXDAwMVxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwOTFcXDAwMFxcMTU5XFwwMDFcXDA2MlxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDI0N1xcMDAwXFwxNjBcXDAwMVxcMjUxXFwwMDBcXFxuICAgIFxcMTYxXFwwMDFcXDA1OFxcMDAxXFwwNjhcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDk0XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMzZcXDAwMVxcMDQxXFwwMDFcXDA5N1xcMDAwXFwxNjJcXDAwMVxcXG4gICAgXFwxNjNcXDAwMVxcMTE5XFwwMDBcXDAwMVxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDE2NVxcMDAxXFwwNTRcXDAwMVxcMTUyXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDA2XFwwMDFcXDE2NlxcMDAxXFwxNjdcXDAwMVxcMTY4XFwwMDFcXDAxNVxcMDAxXFwxNjlcXDAwMVxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNTBcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxMzNcXDAwMVxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNTRcXDAwMVxcMTMzXFwwMDFcXDE3MlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzNcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDQ1XFwwMDFcXFxuICAgIFxcMTc0XFwwMDFcXDE3NVxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDFcXDE1NFxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxMjJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwxNDhcXDAwMVxcMTc3XFwwMDFcXFxuICAgIFxcMDIwXFwwMDFcXDE3OFxcMDAxXFwwOThcXDAwMFxcMTQ4XFwwMDFcXDE3OVxcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFxcbiAgICBcXDE4M1xcMDAxXFwyMTZcXDAwMVxcMTkzXFwwMDFcXDA5NVxcMDAwXFwxNTRcXDAwMVxcMjE2XFwwMDFcXDIwNVxcMDAxXFwwOThcXDAwMFxcXG4gICAgXFwyMjJcXDAwMVxcMDk1XFwwMDBcXDIwNVxcMDAxXFwyMjlcXDAwMVxcMjU1XFwyNTVcXDA5NVxcMDAwXFwyMThcXDAwMVxcMDM2XFwwMDFcXFxuICAgIFxcMjE1XFwwMDFcXDIxNVxcMDAxXFwyNTVcXDI1NVxcMjE4XFwwMDFcXDIxNVxcMDAxXFwwOTVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIxNlxcMDAxXFwwOTVcXDAwMFxcMjU1XFwyNTVcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMjE1XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEyMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOThcXDAwMFxcMjU1XFwyNTVcXDIxNVxcMDAxXFwyNDdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMTI1XFwwMDFcXDEyOFxcMDAxXFwwOThcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjIwXFwwMDFcXDI1NVxcMjU1XFwyNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk4XFwwMDBcXDEyMVxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxOTRcXDAwMVxcMDk4XFwwMDBcXDI1NVxcMjU1XFwwOThcXDAwMFxcMDk4XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIzOFxcMDAxXFwyNTVcXDI1NVxcMjUxXFwwMDFcXDIzOFxcMDAxXFwyNTVcXDI1NVxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNDNcXDAwMVxcMTI1XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTk3XFwwMDFcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI1NVxcMjU1XFwxOTRcXDAwMVxcMjU1XFwyNTVcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDIzMVxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk3XFwwMDFcXDE3NlxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwyNTVcXDI1NVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxODVcXDAwMFxcMjA1XFwwMDFcXDEyMlxcMDAxXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXFxuICAgIFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTNcXDAwMVxcMjQ3XFwwMDFcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OVxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDE5OVxcMDAwXFwxMjVcXDAwMVxcMTI4XFwwMDFcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFxcbiAgICBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDIwNFxcMDAwXFwxOTRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjIwXFwwMDFcXDIzOFxcMDAxXFxcbiAgICBcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMTk5XFwwMDBcXDI0M1xcMDAxXFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNFxcMDAxXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwxOTdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjI4XFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXFxuICAgIFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NVxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXFxuICAgIFxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTkyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMTk5XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyMzdcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTE1XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNVxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcXG4gICAgXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcXG4gICAgXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFxcbiAgICBcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMTI2XFwwMDFcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI5XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxODRcXDAwMVxcMTM4XFwwMDFcXDE4NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcXG4gICAgXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNTZcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDE4NlxcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxOThcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMVxcMjU1XFwyNTVcXDE4N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxODZcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcXG4gICAgXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyMDFcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcmVhZF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCB0cnVlIClcbiMgMTAxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIGZhbHNlIClcbiMgMTAxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBOdWxsIClcbiMgMTAyMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBuYW5cbiAgICAgICAgICAgICAgICApXG4jIDEwMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDE4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgaW5maW5pdHlcbiAgICAgICAgICAgICAgICApXG4jIDEwNDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgKVxuIyAxMDU2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyAxOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICBgU3RyaW5nIChmaW5pc2hfc3RyaW5nIHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgIClcbiMgMTA2OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgMjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmIClcbiMgMTA3MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgMjA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmIClcbiMgMTA3OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCAoZmxvYXRfb2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikpXG4gICAgICAgICAgICAgICAgIClcbiMgMTA4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDIxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICBgQXNzb2MgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTExNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDIzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBMaXN0IChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMiAtPlxuIyAyNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBgVHVwbGUgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTE1OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEzIC0+XG4jIDI3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgY29ucyA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBgVmFyaWFudCAoY29ucywgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgIClcbiMgMTE3MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE0IC0+XG4jIDI4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE3OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE1IC0+XG4jIDI4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNiAtPlxuIyAyODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNyAtPlxuIyAyODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOCAtPlxuIyAyODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMTk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTkgLT5cbiMgMjkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMTIwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiA1OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBCdWZmZXIuY29udGVudHMgdi5idWYgKVxuIyAxMjE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAyOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTIyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMjk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAyOTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTIzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIDYzXG5hbmQgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggbGV0IGIgPSB2LmJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICBmIChCdWZmZXIuY29udGVudHMgYikgMCAoQnVmZmVyLmxlbmd0aCBiKSApXG4jIDEyNDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDEyNTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxMjU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTI2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiA2OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIGNcbiMgMTI3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgYyApXG4jIDEyNzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxiJyApXG4jIDEyODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFwwMTInIClcbiMgMTI4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nIClcbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHInIClcbiMgMTI5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgMzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHQnIClcbiMgMTMwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbmxldFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIGFcbiMgMTMxMCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcbiMgMTMxNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyAxMzIwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTMyNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpIGluXG4jIDMyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeCA+PSAweEQ4MDAgJiYgeCA8PSAweERCRkYgdGhlblxuICAgICAgICAgICAgIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBDb2RlYy51dGY4X29mX2NvZGUgdi5idWYgeFxuXG4gICAgICAgICApXG4jIDEzMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDMyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZVwiIHYgbGV4YnVmIClcbiMgMTM0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgODJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIGFcbiMgMTM2MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuIyAxMzY1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgMTM3MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTM3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDUpIGluXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB5ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeSA+PSAweERDMDAgJiYgeSA8PSAweERGRkYgdGhlblxuICAgICAgICAgICAgIENvZGVjLnV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgdi5idWYgeCB5XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCBsb3cgc3Vycm9nYXRlIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIlxuICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgIClcbiMgMTM4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIk1pc3NpbmcgZXNjYXBlIHNlcXVlbmNlIHJlcHJlc2VudGluZyBsb3cgc3Vycm9nYXRlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIiB2IGxleGJ1ZiApXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMzk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgOTFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAobGVuKzEpIGluXG4gICAgICAgICAgIEJ5dGVzLnNldCBzIDAgJ1wiJztcbiAgICAgICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBzIDEgbGVuO1xuICAgICAgICAgICBCeXRlcy50b19zdHJpbmcgc1xuICAgICAgICAgKVxuIyAxNDE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMTQyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgMTAyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9IHJlYWRfanNvbiB2IGxleGJ1ZiBpblxuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmO1xuICAgICAgICAgICBTb21lIHggKVxuIyAxNDQwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBOb25lIClcbiMgMTQ0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2x0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIDEwN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAxNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgMTExXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTQ4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb21tYSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiAxMTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTUxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE1MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgMTE5XG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYEVkZ3lfYnJhY2tldCApXG4jIDE1MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBgRG91YmxlX3F1b3RlIClcbiMgMTUzOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBTcXVhcmVfYnJhY2tldCApXG4jIDE1NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnLCAnXFxcIicgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTU0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiAxMjVcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTU2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAxNTcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG4jIDE1NzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcbiMgMTU4MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2VvZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiAxMzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNTkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTU5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiAxMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYxMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAxNjMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgMTQwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCAoKSApXG4jIDE2NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdudWxsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE2NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE2NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbF9pZl9wb3NzaWJsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIDE0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2NjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjY5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Jvb2wgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiAxNTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2ODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2ODYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY5MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAndHJ1ZScgb3IgJ2ZhbHNlJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTcwNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIDE3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3MjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnRlZ2VyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE3NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50ZWdlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQ1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDMyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIDE4NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDMyLm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTc2OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQzMi5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50MzIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTc4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQzMiBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3OTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc5NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50NjQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgMTkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQ3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50NjQub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxODExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDY0Lm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQ2NCBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxODI5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0OTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDY0IGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTgzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxODM5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udW1iZXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIDE5OVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5hbiApXG4jIDE4NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBpbmZpbml0eSApXG4jIDE4NTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuZWdfaW5maW5pdHkgKVxuIyAxODYxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmxvYXRfb2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikgKVxuIyAxODY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA1MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBmbG9hdCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMuICopXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5hTlwiIC0+IG5hblxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJJbmZpbml0eVwiIC0+IGluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBcIi1JbmZpbml0eVwiIC0+IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYSBudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgKVxuIyAxODg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA1MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIG51bWJlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE4OTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDUyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTg5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgMjMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDE5MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1xcXCInIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTkxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgMjM3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTkzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyA1MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIHNcbiMgMTk0MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA1MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcyApXG4jIDE5NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfaWRlbnQgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgMjQyXG5hbmQgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTk2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIG1hcF9sZXhlbWUgZiBsZXhidWYgKVxuIyAxOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTk3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc2VxdWVuY2UgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMDA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1NjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjAxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgMjUxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjA0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgMjU1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAyMDY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgMjU3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDgzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDIwODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDU5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjA5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjYyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgICAgICApXG4jIDIxMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjEzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMTQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIDI2NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjE1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE1OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiAyNjhcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIxNzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDI3MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiAyNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjIyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgMjgyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMjg2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyOTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGN1cmwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgMjg2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjMxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiAyOTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMjMzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjMzNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDI5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDIzNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzNTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjM2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiAyOTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjM3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdHVwbGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiAzMDFcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmFsc2UgKVxuIyAyMzk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggdHJ1ZSApXG4jIDI0MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDcwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9scGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgMzA2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQyMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDI4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcnBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIDMxMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgMzE0XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgMzE4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiAzMjJcbmFuZCBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA3NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjU0MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgNzQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjU3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDc2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNTk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgNzgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNjE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTIgLT5cbiMgODAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI2MzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMyAtPlxuIyA4MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2MzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNCAtPlxuIyA4MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTUgLT5cbiMgODE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTYgLT5cbiMgODE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTcgLT5cbiMgODE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjY1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE4IC0+XG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDI2NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDM3OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMjY3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDI2NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDgyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNjg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDM4OVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWYgKVxuIyAyNjk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDI3MDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjcwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI3MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIDM5NFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjcyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjczMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI3MzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjc0MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiAzOTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG4jIDI3NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI3NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ3snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjc4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnWyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjgwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKCc7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjgyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgOTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc8JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI4NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDkzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgOTMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDkzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDkzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI4NzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA5MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAyODc2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA0NTBcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXCInO1xuICAgICAgICAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZlxuICAgICAgICAgKVxuIyAyODkwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMjg5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgNDYxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JztcbiAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX2d0IHYgbGV4YnVmIClcbiMgMjkxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG4jIDI5MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjkyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIDQ2NlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI5NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG4jIDI5NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk2MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyOTUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIDQ3MVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5ODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgOTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDMwMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiA0NzhcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JztcbiAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMzAxNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzAxOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgNDgwXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMwMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nOyByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDMwMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMwNDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA0NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIDQ4NVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDMwNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMwNjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDQ4N1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMDc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAzMDgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzA4NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA5MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgNDkyXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7XG4gICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMzEwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMxMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDQ5NFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAzMTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzEzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzEzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIDQ5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JyApXG4jIDMxNDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIDUwM1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcbiMgMzE3MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDUwN1xuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIiovXCIgKVxuIyAzMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAzMTk3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAzMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG4jIDMyMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiBcbiAgbGV0IF8gPSAocmVhZF9qc29uIDogbGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0KVxuXG4gIGxldCByZWFkX3QgPSByZWFkX2pzb25cblxuICBsZXQgcmVhZF9pbnQ4IHYgbGV4YnVmID1cbiAgICBsZXQgbiA9IHJlYWRfaW50IHYgbGV4YnVmIGluXG4gICAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuXG4gICAgICBsZXhlcl9lcnJvciBcIkludDggb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuICAgIGVsc2VcbiAgICAgIGNoYXJfb2ZfaW50IG5cblxuICBsZXQgcmVhZF9saXN0IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgTGlzdC5yZXYgKHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmKVxuXG4gIGxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgW10gLT4gW3wgfF1cbiAgICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICAgIGEuKGkpIDwtIExpc3QuaGQgIXI7XG4gICAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGFcblxuICBsZXQgcmVhZF9hcnJheSByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIGxldCBsID0gcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgaW5cbiAgICBhcnJheV9vZl9yZXZfbGlzdCBsXG5cbiAgKCogUmVhZCBhIEpTT04gb2JqZWN0LCByZWFkaW5nIHRoZSBrZXlzIGludG8gT0NhbWwgc3RyaW5nc1xuICAgICAocHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpICopXG4gIGxldCByZWFkX2ZpZWxkcyByZWFkX2ZpZWxkIGluaXRfYWNjIHYgPVxuICAgIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfaWRlbnQgcmVhZF9maWVsZCBpbml0X2FjYyB2XG5cbiAgbGV0IGZpbmlzaCB2IGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICBpZiBub3QgKHJlYWRfZW9mIGxleGJ1ZikgdGhlblxuICAgICAgbG9uZ19lcnJvciBcIkp1bmsgYWZ0ZXIgZW5kIG9mIEpTT04gdmFsdWU6XCIgdiBsZXhidWZcblxuICBsZXQgaW5pdF9sZXhlciA9IENvbW1vbi5pbml0X2xleGVyXG5cbiAgbGV0IGZyb21fbGV4YnVmIHYgPyhzdHJlYW0gPSBmYWxzZSkgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuXG4gICAgbGV0IHggPVxuICAgICAgaWYgcmVhZF9lb2YgbGV4YnVmIHRoZW5cbiAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkX2pzb24gdiBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggdiBsZXhidWY7XG5cbiAgICB4XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIHRyeVxuICAgICAgbGV0IHggPSBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgaW5cbiAgICAgIGNsb3NlX2luIGljO1xuICAgICAgeFxuICAgIHdpdGggZSAtPlxuICAgICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgICByYWlzZSBlXG5cbiAgZXhjZXB0aW9uIEZpbmFsbHkgb2YgZXhuICogZXhuXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiB2ID8oZmluID0gZnVuICgpIC0+ICgpKSBsZXhidWYgPVxuICAgIGxldCBzdHJlYW0gPSBTb21lIHRydWUgaW5cbiAgICBsZXQgcmVjIGYgKCkgPVxuICAgICAgdHJ5IFNlcS5Db25zIChmcm9tX2xleGJ1ZiB2ID9zdHJlYW0gbGV4YnVmLCBmKVxuICAgICAgd2l0aFxuICAgICAgICAgIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgICAgICAgIGZpbiAoKTtcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgICAodHJ5IGZpbiAoKSB3aXRoIGZpbl9lIC0+IHJhaXNlIChGaW5hbGx5IChlLCBmaW5fZSkpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgIGZcblxuICBsZXQgc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2ID9maW4gbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiB+ZmluIGxleGJ1ZlxuXG4gIHR5cGUganNvbl9saW5lID0gWyBgSnNvbiBvZiB0IHwgYEV4biBvZiBleG4gXVxuXG4gIGxldCBsaW5lc2VxX2Zyb21fY2hhbm5lbFxuICAgICAgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lID9sbnVtOihsbnVtMCA9IDEpIGljID1cbiAgICBsZXQgYnVmID1cbiAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIChCdWZmZXIuY3JlYXRlIDI1NilcbiAgICAgICAgfCBTb21lIF8gLT4gYnVmXG4gICAgaW5cbiAgICBsZXQgcmVjIGYgbG51bSA9IGZ1biAoKSAtPlxuICAgICAgdHJ5XG4gICAgICAgIGxldCBsaW5lID0gaW5wdXRfbGluZSBpYyBpblxuICAgICAgICBTZXEuQ29ucyAoYEpzb24gKGZyb21fc3RyaW5nID9idWYgP2ZuYW1lIH5sbnVtIGxpbmUpLCBmIChsbnVtICsgMSkpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2ZpbGUgLT4gZmluICgpOyBTZXEuTmlsXG4gICAgICAgIHwgZSAtPiBTZXEuQ29ucyAoYEV4biBlLCBmIChsbnVtICsgMSkpXG4gICAgaW5cbiAgICBmIGxudW0wXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxpbmVzZXFfZnJvbV9jaGFubmVsID9idWYgfmZpbiA/Zm5hbWUgP2xudW0gaWNcblxuICBsZXQgcHJldHRpZnkgP3N0ZCBzID1cbiAgICBwcmV0dHlfdG9fc3RyaW5nID9zdGQgKGZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IGNvbXBhY3QgP3N0ZDpfIHMgPVxuICAgIHRvX3N0cmluZyAoZnJvbV9zdHJpbmcgcylcblxuIyAzMzc1IFwibGliL3JlYWQubWxcIlxuXG5tb2R1bGUgVXRpbCA9IHN0cnVjdFxuZXhjZXB0aW9uIFR5cGVfZXJyb3Igb2Ygc3RyaW5nICogdFxuXG5sZXQgdHlwZW9mID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgXyAtPiBcIm9iamVjdFwiXG4gIHwgYEJvb2wgXyAtPiBcImJvb2xcIlxuICB8IGBGbG9hdCBfIC0+IFwiZmxvYXRcIlxuICB8IGBJbnQgXyAtPiBcImludFwiXG4gIHwgYExpc3QgXyAtPiBcImFycmF5XCJcbiAgfCBgTnVsbCAtPiBcIm51bGxcIlxuICB8IGBTdHJpbmcgXyAtPiBcInN0cmluZ1wiXG4gIHwgYEludGxpdCBfIC0+IFwiaW50bGl0XCJcbiAgfCBgRmxvYXRsaXQgXyAtPiBcImZsb2F0bGl0XCJcbiAgfCBgVHVwbGUgXyAtPiBcInR1cGxlXCJcbiAgfCBgVmFyaWFudCBfIC0+IFwidmFyaWFudFwiXG5cbmxldCB0eXBlcnIgbXNnIGpzID0gcmFpc2UgKFR5cGVfZXJyb3IgKG1zZyBeIHR5cGVvZiBqcywganMpKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZyAqIHRcblxubGV0IGFzc29jIG5hbWUgb2JqID0gdHJ5IExpc3QuYXNzb2MgbmFtZSBvYmogd2l0aCBOb3RfZm91bmQgLT4gYE51bGxcblxubGV0IG1lbWJlciBuYW1lID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IGFzc29jIG5hbWUgb2JqXG4gIHwganMgLT4gdHlwZXJyIChcIkNhbid0IGdldCBtZW1iZXIgJ1wiIF4gbmFtZSBeIFwiJyBvZiBub24tb2JqZWN0IHR5cGUgXCIpIGpzXG5cbmxldCByZWMgcGF0aCBsIG9iaiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFNvbWUgb2JqXG4gIHwga2V5IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggb2JqIHdpdGhcbiAgICAgIHwgYEFzc29jIGFzc29jIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jIGtleSBhc3NvYyB3aXRoXG4gICAgICAgICAgfCBvYmogLT4gcGF0aCBsIG9ialxuICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbmRleCBpID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIGpzIC0+XG4gICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgbGV0IHdyYXBwZWRfaW5kZXggPSBpZiBpIDwgMCB0aGVuIGxlbiArIGkgZWxzZSBpIGluXG4gICAgICBpZiB3cmFwcGVkX2luZGV4IDwgMCB8fCB3cmFwcGVkX2luZGV4ID49IGxlbiB0aGVuXG4gICAgICAgIHJhaXNlIChVbmRlZmluZWQgKFwiSW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvdXQgb2YgYm91bmRzXCIsIGpzKSlcbiAgICAgIGVsc2UgTGlzdC5udGggbCB3cmFwcGVkX2luZGV4XG4gIHwganMgLT5cbiAgICAgIHR5cGVyciAoXCJDYW4ndCBnZXQgaW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvZiBub24tYXJyYXkgdHlwZSBcIikganNcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IGBMaXN0IChMaXN0Lm1hcCBmIGwpXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgbWFwIGZ1bmN0aW9uIG92ZXIgbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHRvX2Fzc29jID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IG9ialxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG9iamVjdCwgZ290IFwiIGpzXG5cbmxldCB0b19vcHRpb24gZiA9IGZ1bmN0aW9uIGBOdWxsIC0+IE5vbmUgfCB4IC0+IFNvbWUgKGYgeClcbmxldCB0b19ib29sID0gZnVuY3Rpb24gYEJvb2wgYiAtPiBiIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCwgZ290IFwiIGpzXG5cbmxldCB0b19ib29sX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPiBTb21lIGJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlciA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IGZsb2F0IGlcbiAgfCBgRmxvYXQgZiAtPiBmXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlcl9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBTb21lIChmbG9hdCBpKVxuICB8IGBGbG9hdCBmIC0+IFNvbWUgZlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIHwgYEZsb2F0IGYgLT4gZlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0LCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0X29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gaVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnRfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gU29tZSBpXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBgTGlzdCBsIC0+IGwgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBhcnJheSwgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyAtPiBzXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyAtPiBTb21lIHNcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgY29udmVydF9lYWNoIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgZiBsXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgY29udmVydCBlYWNoIGVsZW1lbnQgb2Ygbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHJlYyByZXZfZmlsdGVyX21hcCBmIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+IHJldl9maWx0ZXJfbWFwIGYgYWNjIHRsXG4gICAgICB8IFNvbWUgeSAtPiByZXZfZmlsdGVyX21hcCBmICh5IDo6IGFjYykgdGwpXG5cbmxldCBmaWx0ZXJfbWFwIGYgbCA9IExpc3QucmV2IChyZXZfZmlsdGVyX21hcCBmIFtdIGwpXG5cbmxldCByZWMgcmV2X2ZsYXR0ZW4gYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgTGlzdCBsMiAtPiByZXZfZmxhdHRlbiAoTGlzdC5yZXZfYXBwZW5kIGwyIGFjYykgdGxcbiAgICAgIHwgXyAtPiByZXZfZmxhdHRlbiBhY2MgdGwpXG5cbmxldCBmbGF0dGVuIGwgPSBMaXN0LnJldiAocmV2X2ZsYXR0ZW4gW10gbClcblxubGV0IGZpbHRlcl9pbmRleCBpIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBMaXN0IGwgLT4gKCB0cnkgU29tZSAoTGlzdC5udGggbCBpKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2xpc3QgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBMaXN0IGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5cbmxldCBmaWx0ZXJfbWVtYmVyIGsgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYEFzc29jIGwgLT4gKCB0cnkgU29tZSAoTGlzdC5hc3NvYyBrIGwpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfYXNzb2MgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBBc3NvYyBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9ib29sIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQm9vbCB4IC0+IFNvbWUgeCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9pbnQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgIGBJbnQgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKSBsXG5cbmxldCBmaWx0ZXJfZmxvYXQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICBgRmxvYXQgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX251bWJlciBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgICAgYEludCB4IC0+IFNvbWUgKGZsb2F0IHgpXG4gICAgICB8IGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBgU3RyaW5nIHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGtleXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoa2V5LCBfKSAtPiBrZXkpXG5cbmxldCB2YWx1ZXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoXywgdmFsdWUpIC0+IHZhbHVlKVxuXG5sZXQgY29tYmluZSAoZmlyc3QgOiB0KSAoc2Vjb25kIDogdCkgPVxuICBtYXRjaCAoZmlyc3QsIHNlY29uZCkgd2l0aFxuICB8IGBBc3NvYyBhLCBgQXNzb2MgYiAtPiAoYEFzc29jIChhIEAgYikgOiB0KVxuICB8IGEsIGIgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJFeHBlY3RlZCB0d28gb2JqZWN0cywgY2hlY2sgaW5wdXRzXCIpXG5lbmRcblxuIiwiXG4oKiogezMgVHlwZSBvZiB0aGUgSlNPTiB0cmVlfSAqKVxuXG50eXBlIHQgPVxuICAgIFtcbiAgICB8IGBOdWxsXG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgfCBgSW50IG9mIGludFxuICAgIHwgYEludGxpdCBvZiBzdHJpbmdcbiAgICB8IGBGbG9hdCBvZiBmbG9hdFxuICAgIHwgYEZsb2F0bGl0IG9mIHN0cmluZ1xuICAgIHwgYFN0cmluZyBvZiBzdHJpbmdcbiAgICB8IGBTdHJpbmdsaXQgb2Ygc3RyaW5nXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIHwgYFR1cGxlIG9mIHQgbGlzdFxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgb3B0aW9uKVxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGYgaW5cbiAgbGV0IHMgPVxuICAgIG1hdGNoIHNpZ25pZmljYW50X2ZpZ3VyZXMgd2l0aFxuICAgICAgICAxIC0+IHNwcmludGYgXCIlLjFnXCIgeFxuICAgICAgfCAyIC0+IHNwcmludGYgXCIlLjJnXCIgeFxuICAgICAgfCAzIC0+IHNwcmludGYgXCIlLjNnXCIgeFxuICAgICAgfCA0IC0+IHNwcmludGYgXCIlLjRnXCIgeFxuICAgICAgfCA1IC0+IHNwcmludGYgXCIlLjVnXCIgeFxuICAgICAgfCA2IC0+IHNwcmludGYgXCIlLjZnXCIgeFxuICAgICAgfCA3IC0+IHNwcmludGYgXCIlLjdnXCIgeFxuICAgICAgfCA4IC0+IHNwcmludGYgXCIlLjhnXCIgeFxuICAgICAgfCA5IC0+IHNwcmludGYgXCIlLjlnXCIgeFxuICAgICAgfCAxMCAtPiBzcHJpbnRmIFwiJS4xMGdcIiB4XG4gICAgICB8IDExIC0+IHNwcmludGYgXCIlLjExZ1wiIHhcbiAgICAgIHwgMTIgLT4gc3ByaW50ZiBcIiUuMTJnXCIgeFxuICAgICAgfCAxMyAtPiBzcHJpbnRmIFwiJS4xM2dcIiB4XG4gICAgICB8IDE0IC0+IHNwcmludGYgXCIlLjE0Z1wiIHhcbiAgICAgIHwgMTUgLT4gc3ByaW50ZiBcIiUuMTVnXCIgeFxuICAgICAgfCAxNiAtPiBzcHJpbnRmIFwiJS4xNmdcIiB4XG4gICAgICB8IF8gLT4gc3ByaW50ZiBcIiUuMTdnXCIgeFxuICBpblxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBqc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfc3RkX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX2Zsb2F0IG9iIGZcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV90dXBsZSBvYiBsXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfdmFyaWFudCBvYiBzIG9cblxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcoJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJyknXG5cbmFuZCB3cml0ZV92YXJpYW50IG9iIHMgbyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPCc7XG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICAobWF0Y2ggbyB3aXRoXG4gICAgICAgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgICAgIHdyaXRlX2pzb24gb2IgeFxuICApO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJz4nXG5cbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9zdGRfZmxvYXQgb2IgZlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfc3RkX3R1cGxlIG9iIGxcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG9cblxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG8gPVxuICBtYXRjaCBvIHdpdGhcbiAgICAgIE5vbmUgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICAgICAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgICAgd3JpdGVfc3RkX2pzb24gb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgKCogdGhpcyByZXF1aXJlcyBhbiBpbnQgYW5kIG5ldmVyIHVzZXMgaXQuIFRoaXMgaXMgZG9uZSB0byBwcmVzZXJ2ZVxuICAgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIG5vdCBicmVhayB0aGUgc2lnbmF0dXIgYnV0IGNhbiBzYWZlbHlcbiAgICAgYmUgY2hhbmdlZCB0byByZXF1aXJlIHVuaXQgaW4gYSBmdXR1cmUgY29tcGF0aWJpbGl0eS1icmVha2luZ1xuICAgICByZWxlYXNlICopXG4gIGxldCBfIDogaW50ID0gb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKSBpblxuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX2ZpbGUgP2xlbiA/c3RkID8oc3VmID0gXCJcXG5cIikgZmlsZSB4ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICB0b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHg7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbmxldCBzZXFfdG9fYnVmZmVyID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYiBzdCA9XG4gIFNlcS5pdGVyICh0b19idWZmZXIgfnN1ZiA/c3RkIG9iKSBzdFxuXG5sZXQgc2VxX3RvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgc3QgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICBzZXFfdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBzdDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCBzZXFfdG9fY2hhbm5lbCA/YnVmID8obGVuPTIwOTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYyBzZXEgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIFNlcS5pdGVyIChmdW4ganNvbiAtPlxuICAgIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IganNvbjtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICkgc2VxXG5cbmxldCBzZXFfdG9fZmlsZSA/bGVuID8oc3VmID0gXCJcXG5cIikgP3N0ZCBmaWxlIHN0ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyBzdDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxuXG5sZXQgcmVjIHNvcnQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHNvcnQgdikpIGwpIGluXG4gICAgICBgQXNzb2MgKExpc3Quc3RhYmxlX3NvcnQgKGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikgbClcbiAgfCBgTGlzdCBsIC0+XG4gICAgICBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IGBUdXBsZSBsIC0+XG4gICAgICBgVHVwbGUgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSBhcyB4IC0+XG4gICAgICBsZXQgdicgPSBzb3J0IHYgaW5cbiAgICAgIGlmIHYgPT0gdicgdGhlbiB4XG4gICAgICBlbHNlXG4gICAgICAgIGBWYXJpYW50IChrLCBTb21lIHYnKVxuICB8IHggLT4geFxuXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEludCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBJbnRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgRmxvYXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVGXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBGbG9hdGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFN0cmluZyB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBTdHJpbmdsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmdsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFR1cGxlIHR1cCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBUdXBsZSAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIGUgLT5cbiAgICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgICBwcCBmbXQgZTtcbiAgICAgICAgICAgdHJ1ZSkgZmFsc2UgdHVwKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBWYXJpYW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBuYW1lO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgIChtYXRjaCB2YWx1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25lXCJcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKFNvbWUgXCI7XG4gICAgICAgIHBwIGZtdCB4O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIilcIik7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICB8IGBJbnQgYSwgYEludCBiIC0+IGEgPSBiXG4gICAgfCBgSW50bGl0IGEsIGBJbnRsaXQgYiAtPiBhID0gYlxuICAgIHwgYEZsb2F0IGEsIGBGbG9hdCBiIC0+IGEgPSBiXG4gICAgfCBgRmxvYXRsaXQgYSwgYEZsb2F0bGl0IGIgLT4gYSA9IGJcbiAgICB8IGBTdHJpbmcgYSwgYFN0cmluZyBiIC0+IGEgPSBiXG4gICAgfCBgU3RyaW5nbGl0IGEsIGBTdHJpbmdsaXQgYiAtPiBhID0gYlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgVHVwbGUgeHMsIGBUdXBsZSB5c1xuICAgIHwgYExpc3QgeHMsIGBMaXN0IHlzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiBlcXVhbCB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSwgYFZhcmlhbnQgKG5hbWUnLCB2YWx1ZScpIC0+XG4gICAgICAobWF0Y2ggbmFtZSA9IG5hbWUnIHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBtYXRjaCB2YWx1ZSwgdmFsdWUnIHdpdGhcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgXyAtPiBmYWxzZVxuXG5tb2R1bGUgUHJldHR5ID0gc3RydWN0XG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgfCBgSW50IHggLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX2ludCB4KVxuICAgIHwgYEZsb2F0IHggLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIHN0ZCB0aGVuIHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgICAgZWxzZSBqc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG4gICAgfCBgSW50bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYEZsb2F0bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBUdXBsZSBsIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpZiBsID0gW10gdGhlblxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCIoKVwiXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGhvdjI+XCI7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCIoQCwlYUA7PDAgLTI+KVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICAgICAgICApXG4gICAgfCBgVmFyaWFudCAocywgTm9uZSkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCByZXByZXNlbnRhdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPCVzPlwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcblxuICAgIHwgYFZhcmlhbnQgKHMsIFNvbWUgeCkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgWyByZXByZXNlbnRhdGlvbjsgeCBdKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG9wID0ganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8QFs8aHYyPiVzOiAlYUBdPlwiIG9wIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbmVuZFxuXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIiwib3BlbiBTdGRMYWJlbHNcbm9wZW4gTW9yZUxhYmVsc1xub3BlbiEgWW9qc29uXG5cbnR5cGUgdCA9IFlvanNvbi5TYWZlLnRcblxubGV0IHlvanNvbl9vZl91bml0ICgpIDogdCA9IGBOdWxsXG5sZXQgeW9qc29uX29mX2Jvb2wgYiA6IHQgPSBgQm9vbCBiXG5sZXQgeW9qc29uX29mX3N0cmluZyBzdHIgOiB0ID0gYFN0cmluZyBzdHJcbmxldCB5b2pzb25fb2ZfYnl0ZXMgYnl0ZXMgOiB0ID0gYFN0cmluZyAoQnl0ZXMudG9fc3RyaW5nIGJ5dGVzKVxubGV0IHlvanNvbl9vZl9jaGFyIGMgOiB0ID0gYFN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKVxubGV0IHlvanNvbl9vZl9pbnQgbiA6IHQgPSBgSW50IG5cbmxldCB5b2pzb25fb2ZfZmxvYXQgbiA6IHQgPSBgRmxvYXQgblxubGV0IHlvanNvbl9vZl9pbnQzMiAobiA6IEludDMyLnQpIDogdCA9IGBJbnRsaXQgKEludDMyLnRvX3N0cmluZyBuKVxubGV0IHlvanNvbl9vZl9pbnQ2NCAobiA6IEludDY0LnQpIDogdCA9IGBJbnRsaXQgKEludDY0LnRvX3N0cmluZyBuKVxubGV0IHlvanNvbl9vZl9uYXRpdmVpbnQgbiA6IHQgPSBgSW50bGl0IChOYXRpdmVpbnQudG9fc3RyaW5nIG4pXG5sZXQgeW9qc29uX29mX3JlZiB5b2pzb25fb2ZfX2EgcmYgPSB5b2pzb25fb2ZfX2EgIXJmXG5sZXQgeW9qc29uX29mX2xhenlfdCB5b2pzb25fb2ZfX2EgbHYgPSB5b2pzb25fb2ZfX2EgKExhenkuZm9yY2UgbHYpXG5cbmxldCB5b2pzb25fb2Zfb3B0aW9uIHlvanNvbl9vZl9fYSA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+IHlvanNvbl9vZl9fYSB4XG4gIHwgTm9uZSAtPiBgTnVsbFxuOztcblxubGV0IHlvanNvbl9vZl9wYWlyIHlvanNvbl9vZl9fYSB5b2pzb25fb2ZfX2IgKGEsIGIpID1cbiAgYExpc3QgWyB5b2pzb25fb2ZfX2EgYTsgeW9qc29uX29mX19iIGIgXVxuOztcblxubGV0IHlvanNvbl9vZl90cmlwbGUgeW9qc29uX29mX19hIHlvanNvbl9vZl9fYiB5b2pzb25fb2ZfX2MgKGEsIGIsIGMpID1cbiAgYExpc3QgWyB5b2pzb25fb2ZfX2EgYTsgeW9qc29uX29mX19iIGI7IHlvanNvbl9vZl9fYyBjIF1cbjs7XG5cbigqIExpc3QucmV2IChMaXN0LnJldl9tYXAgLi4uKSBpcyB0YWlsIHJlY3Vyc2l2ZSwgdGhlIE9DYW1sIHN0YW5kYXJkXG4gICBsaWJyYXJ5IExpc3QubWFwIGlzIE5PVC4gKilcbmxldCB5b2pzb25fb2ZfbGlzdCB5b2pzb25fb2ZfX2EgbHN0ID0gYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgfmY6eW9qc29uX29mX19hIGxzdCkpXG5cbmxldCB5b2pzb25fb2ZfYXJyYXkgeW9qc29uX29mX19hIGFyID1cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBBcnJheS5sZW5ndGggYXIgLSAxIGRvd250byAwIGRvXG4gICAgbHN0X3JlZiA6PSB5b2pzb25fb2ZfX2EgYXIuKGkpIDo6ICFsc3RfcmVmXG4gIGRvbmU7XG4gIGBMaXN0ICFsc3RfcmVmXG47O1xuXG5sZXQgeW9qc29uX29mX2hhc2h0YmwgeW9qc29uX29mX2tleSB5b2pzb25fb2ZfdmFsIGh0YmwgPVxuICBsZXQgY29sbCB+a2V5OmsgfmRhdGE6diBhY2MgPSBgTGlzdCBbIHlvanNvbl9vZl9rZXkgazsgeW9qc29uX29mX3ZhbCB2IF0gOjogYWNjIGluXG4gIGBMaXN0IChIYXNodGJsLmZvbGQgaHRibCB+aW5pdDpbXSB+Zjpjb2xsKVxuOztcblxubGV0IHlvanNvbl9vZl9vcGFxdWUgXyA9IGBTdHJpbmcgXCI8b3BhcXVlPlwiXG5sZXQgeW9qc29uX29mX2Z1biBfID0gYFN0cmluZyBcIjxmdW4+XCJcblxuZXhjZXB0aW9uIE9mX3lvanNvbl9lcnJvciBvZiBleG4gKiB0XG5cbmxldCByZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzID0gcmVmIHRydWVcbmxldCBvZl95b2pzb25fZXJyb3JfZXhuIGV4YyB5b2pzb24gPSByYWlzZSAoT2ZfeW9qc29uX2Vycm9yIChleGMsIHlvanNvbikpXG5sZXQgb2ZfeW9qc29uX2Vycm9yIHdoYXQgeW9qc29uID0gcmFpc2UgKE9mX3lvanNvbl9lcnJvciAoRmFpbHVyZSB3aGF0LCB5b2pzb24pKVxuXG5sZXQgdW5pdF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTnVsbCAtPiAoKVxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwidW5pdF9vZl95b2pzb246IGBOdWxsIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGJvb2xfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEJvb2wgdiAtPiB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJib29sX29mX3lvanNvbjogdHJ1ZS9mYWxzZSBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBzdHJpbmdfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYFN0cmluZyBzdHIgLT4gc3RyXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJzdHJpbmdfb2ZfeW9qc29uOiBzdHJpbmcgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgYnl0ZXNfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYFN0cmluZyBzdHIgLT4gQnl0ZXMub2Zfc3RyaW5nIHN0clxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiYnl0ZXNfb2ZfeW9qc29uOiBzdHJpbmcgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgY2hhcl9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgU3RyaW5nIHN0ciAtPlxuICAgIGlmIFN0cmluZy5sZW5ndGggc3RyIDw+IDFcbiAgICB0aGVuIG9mX3lvanNvbl9lcnJvciBcImNoYXJfb2ZfeW9qc29uOiBzdHJpbmcgbXVzdCBjb250YWluIG9uZSBjaGFyYWN0ZXIgb25seVwiIHlvanNvbjtcbiAgICBzdHIuWzBdXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJjaGFyX29mX3lvanNvbjogc3RyaW5nIG9mIHNpemUgb25lIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGludF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgSW50IHYgLT4gdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaW50X29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBmbG9hdF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgRmxvYXQgdiAtPiB2XG4gIHwgYEludCBpIC0+IGZsb2F0X29mX2ludCBpXG4gIHwgYEludGxpdCBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0clxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiZmxvYXRfb2ZfeW9qc29uOiBmbG9hdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBpbnQzMl9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgSW50bGl0IHN0ciAtPiBJbnQzMi5vZl9zdHJpbmcgc3RyXG4gIHwgYEludCB2IC0+IEludDMyLm9mX2ludCB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJpbnQzMl9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaW50NjRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludGxpdCBzdHIgLT4gSW50NjQub2Zfc3RyaW5nIHN0clxuICB8IGBJbnQgdiAtPiBJbnQ2NC5vZl9pbnQgdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaW50NjRfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IG5hdGl2ZWludF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgSW50bGl0IHN0ciAtPiBOYXRpdmVpbnQub2Zfc3RyaW5nIHN0clxuICB8IGBJbnQgdiAtPiBOYXRpdmVpbnQub2ZfaW50IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcIm5hdGl2ZWludF9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgcmVmX29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID0gcmVmIChhX19vZl95b2pzb24geW9qc29uKVxubGV0IGxhenlfdF9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9IExhenkuZnJvbV92YWwgKGFfX29mX3lvanNvbiB5b2pzb24pXG5cbmxldCBvcHRpb25fb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBlbCAtPiBTb21lIChhX19vZl95b2pzb24gZWwpXG47O1xuXG5sZXQgcGFpcl9vZl95b2pzb24gYV9fb2ZfeW9qc29uIGJfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IFsgYV95b2pzb247IGJfeW9qc29uIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3lvanNvbiBhX3lvanNvbiBpblxuICAgIGxldCBiID0gYl9fb2ZfeW9qc29uIGJfeW9qc29uIGluXG4gICAgYSwgYlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwicGFpcl9vZl95b2pzb246IGludmFsaWQgZm9ybWF0XCIgeW9qc29uXG47O1xuXG5sZXQgdHJpcGxlX29mX3lvanNvbiBhX19vZl95b2pzb24gYl9fb2ZfeW9qc29uIGNfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IFsgYV95b2pzb247IGJfeW9qc29uOyBjX3lvanNvbiBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl95b2pzb24gYV95b2pzb24gaW5cbiAgICBsZXQgYiA9IGJfX29mX3lvanNvbiBiX3lvanNvbiBpblxuICAgIGxldCBjID0gY19fb2ZfeW9qc29uIGNfeW9qc29uIGluXG4gICAgYSwgYiwgY1xuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwidHJpcGxlX29mX3lvanNvbjogaW52YWxpZCBmb3JtYXRcIiB5b2pzb25cbjs7XG5cbmxldCBsaXN0X29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBsc3QgLT5cbiAgICBsZXQgcmV2X2xzdCA9IExpc3QucmV2X21hcCBsc3QgfmY6YV9fb2ZfeW9qc29uIGluXG4gICAgTGlzdC5yZXYgcmV2X2xzdFxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwibGlzdF9vZl95b2pzb246IGxpc3QgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgYXJyYXlfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IFtdIC0+IFt8fF1cbiAgfCBgTGlzdCAoaCA6OiB0KSAtPlxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCB0ICsgMSBpblxuICAgIGxldCByZXMgPSBBcnJheS5tYWtlIGxlbiAoYV9fb2ZfeW9qc29uIGgpIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXNcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIHJlcy4oaSkgPC0gYV9fb2ZfeW9qc29uIGg7XG4gICAgICAgIGxvb3AgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBsb29wIDEgdFxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiYXJyYXlfb2ZfeW9qc29uOiBsaXN0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGhhc2h0Ymxfb2ZfeW9qc29uIGtleV9vZl95b2pzb24gdmFsX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IGxzdCAtPlxuICAgIGxldCBodGJsID0gSGFzaHRibC5jcmVhdGUgMCBpblxuICAgIGxldCBhY3QgPSBmdW5jdGlvblxuICAgICAgfCBgTGlzdCBbIGtfeW9qc29uOyB2X3lvanNvbiBdIC0+XG4gICAgICAgIEhhc2h0YmwuYWRkIGh0YmwgfmtleTooa2V5X29mX3lvanNvbiBrX3lvanNvbikgfmRhdGE6KHZhbF9vZl95b2pzb24gdl95b2pzb24pXG4gICAgICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaGFzaHRibF9vZl95b2pzb246IHR1cGxlIGxpc3QgbmVlZGVkXCIgeW9qc29uXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgbHN0IH5mOmFjdDtcbiAgICBodGJsXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJoYXNodGJsX29mX3lvanNvbjogbGlzdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBvcGFxdWVfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciBcIm9wYXF1ZV9vZl95b2pzb246IGNhbm5vdCBjb252ZXJ0IG9wYXF1ZSB2YWx1ZXNcIiB5b2pzb25cbjs7XG5cbmxldCBmdW5fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciBcImZ1bl9vZl95b2pzb246IGNhbm5vdCBjb252ZXJ0IGZ1bmN0aW9uIHZhbHVlc1wiIHlvanNvblxuOztcblxubW9kdWxlIFByaW1pdGl2ZXMgPSBzdHJ1Y3RcbiAgbGV0IHlvanNvbl9vZl9hcnJheSA9IHlvanNvbl9vZl9hcnJheVxuICBsZXQgYXJyYXlfb2ZfeW9qc29uID0gYXJyYXlfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfYm9vbCA9IHlvanNvbl9vZl9ib29sXG4gIGxldCBib29sX29mX3lvanNvbiA9IGJvb2xfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfY2hhciA9IHlvanNvbl9vZl9jaGFyXG4gIGxldCBjaGFyX29mX3lvanNvbiA9IGNoYXJfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfZmxvYXQgPSB5b2pzb25fb2ZfZmxvYXRcbiAgbGV0IGZsb2F0X29mX3lvanNvbiA9IGZsb2F0X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2ludCA9IHlvanNvbl9vZl9pbnRcbiAgbGV0IGludF9vZl95b2pzb24gPSBpbnRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfaW50MzIgPSB5b2pzb25fb2ZfaW50MzJcbiAgbGV0IGludDMyX29mX3lvanNvbiA9IGludDMyX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2ludDY0ID0geW9qc29uX29mX2ludDY0XG4gIGxldCBpbnQ2NF9vZl95b2pzb24gPSBpbnQ2NF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9saXN0ID0geW9qc29uX29mX2xpc3RcbiAgbGV0IGxpc3Rfb2ZfeW9qc29uID0gbGlzdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9uYXRpdmVpbnQgPSB5b2pzb25fb2ZfbmF0aXZlaW50XG4gIGxldCBuYXRpdmVpbnRfb2ZfeW9qc29uID0gbmF0aXZlaW50X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX29wdGlvbiA9IHlvanNvbl9vZl9vcHRpb25cbiAgbGV0IG9wdGlvbl9vZl95b2pzb24gPSBvcHRpb25fb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfcmVmID0geW9qc29uX29mX3JlZlxuICBsZXQgcmVmX29mX3lvanNvbiA9IHJlZl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9zdHJpbmcgPSB5b2pzb25fb2Zfc3RyaW5nXG4gIGxldCBzdHJpbmdfb2ZfeW9qc29uID0gc3RyaW5nX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2J5dGVzID0geW9qc29uX29mX2J5dGVzXG4gIGxldCBieXRlc19vZl95b2pzb24gPSBieXRlc19vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl91bml0ID0geW9qc29uX29mX3VuaXRcbiAgbGV0IHVuaXRfb2ZfeW9qc29uID0gdW5pdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9sYXp5X3QgPSB5b2pzb25fb2ZfbGF6eV90XG4gIGxldCBsYXp5X3Rfb2ZfeW9qc29uID0gbGF6eV90X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2hhc2h0YmwgPSB5b2pzb25fb2ZfaGFzaHRibFxuICBsZXQgaGFzaHRibF9vZl95b2pzb24gPSBoYXNodGJsX29mX3lvanNvblxuZW5kXG4iLCIoKiBDb252X2Vycm9yOiBNb2R1bGUgZm9yIEhhbmRsaW5nIEVycm9ycyBkdXJpbmcgQXV0b21hdGVkIFlvanNvblxuICAgQ29udmVyc2lvbnMgKilcblxub3BlbiEgU3RkTGFiZWxzXG5vcGVuIFlvanNvbl9jb252XG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgdHVwbGVzICopXG5cbmxldCB0dXBsZV9vZl9zaXplX25fZXhwZWN0ZWQgbG9jIG4geW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiB0dXBsZSBvZiBzaXplICVkIGV4cGVjdGVkXCIgbG9jIG4pIHlvanNvblxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgc3VtIHR5cGVzICopXG5cbmxldCBzdGFnX25vX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB0aGlzIGNvbnN0cnVjdG9yIGRvZXMgbm90IHRha2UgYXJndW1lbnRzXCIpIHlvanNvblxuOztcblxubGV0IHN0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgdGFnIHlvanNvbiA9XG4gIGxldCBtc2cgPVxuICAgIHNwcmludGYgXCIlc19vZl95b2pzb246IHN1bSB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCIgbG9jIHRhZ1xuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHN0YWdfdGFrZXNfYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHRoaXMgY29uc3RydWN0b3IgcmVxdWlyZXMgYXJndW1lbnRzXCIpIHlvanNvblxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhIG5lc3RlZCBsaXN0XCIpIHlvanNvblxuOztcblxubGV0IGVtcHR5X2xpc3RfaW52YWxpZF9zdW0gbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGFuIGVtcHR5IGxpc3RcIikgeW9qc29uXG47O1xuXG5sZXQgdW5leHBlY3RlZF9zdGFnIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdW5leHBlY3RlZCB2YXJpYW50IGNvbnN0cnVjdG9yXCIpIHlvanNvblxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcmVjb3JkcyAqKVxuXG5sZXQgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdCB+bG9jIHJldl9mbGRfbmFtZXMgeW9qc29uID1cbiAgbGV0IGZsZF9uYW1lc19zdHIgPSBTdHJpbmcuY29uY2F0IChMaXN0LnJldiByZXZfZmxkX25hbWVzKSB+c2VwOlwiIFwiIGluXG4gIGxldCBtc2cgPSBzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiAlczogJXNcIiBsb2Mgd2hhdCBmbGRfbmFtZXNfc3RyIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgeW9qc29uID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImR1cGxpY2F0ZSBmaWVsZHNcIiB+bG9jIHJldl9mbGRfbmFtZXMgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX2V4dHJhX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb24gPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZXh0cmEgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHlvanNvblxuOztcblxubGV0IHJlYyByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIGZpZWxkcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgZmllbGRzKSB+c2VwOlwiIFwiXG4gIHwgKHRydWUsIGZpZWxkKSA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgKGZpZWxkIDo6IGZpZWxkcykgcmVzdFxuICB8IF8gOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIGZpZWxkcyByZXN0XG47O1xuXG5sZXQgcmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyBsb2MgeW9qc29uIGxzdCA9XG4gIGxldCB1bmRlZmluZWQgPSByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIFtdIGxzdCBpblxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiB0aGUgZm9sbG93aW5nIHJlY29yZCBlbGVtZW50cyB3ZXJlIHVuZGVmaW5lZDogJXNcIiBsb2MgdW5kZWZpbmVkXG4gIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGxvYyB5b2pzb24gPVxuICBsZXQgbXNnID0gbG9jIF4gXCJfb2ZfeW9qc29uOiBsaXN0IGluc3RlYWQgb2YgYXRvbSBmb3IgcmVjb3JkIGV4cGVjdGVkXCIgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCByZWNvcmRfcG9seV9maWVsZF92YWx1ZSBsb2MgeW9qc29uID1cbiAgbGV0IG1zZyA9XG4gICAgbG9jXG4gICAgXiBcIl9vZl95b2pzb246IGNhbm5vdCBjb252ZXJ0IHZhbHVlcyBvZiB0eXBlcyByZXN1bHRpbmcgZnJvbSBwb2x5bW9ycGhpYyByZWNvcmQgXFxcbiAgICAgICBmaWVsZHNcIlxuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcG9seW1vcnBoaWMgdmFyaWFudHMgKilcblxuZXhjZXB0aW9uIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX3ZhcmlhbnRfbWF0Y2ggKCkgPSByYWlzZSBOb192YXJpYW50X21hdGNoXG5cbmxldCBub19tYXRjaGluZ192YXJpYW50X2ZvdW5kIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogbm8gbWF0Y2hpbmcgdmFyaWFudCBmb3VuZFwiKSB5b2pzb25cbjs7XG5cbmxldCBwdGFnX25vX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBwb2x5bW9ycGhpYyB2YXJpYW50IGRvZXMgbm90IHRha2UgYXJndW1lbnRzXCIpIHlvanNvblxuOztcblxubGV0IHB0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgY25zdHIgeW9qc29uID1cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZlxuICAgICAgXCIlc19vZl95b2pzb246IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiXG4gICAgICBsb2NcbiAgICAgIGNuc3RyXG4gIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcHRhZ190YWtlc19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgdGFrZXMgYW4gYXJndW1lbnRcIikgeW9qc29uXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yXG4gICAgKGxvYyBeIFwiX29mX3lvanNvbjogYSBuZXN0ZWQgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIilcbiAgICB5b2pzb25cbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvclxuICAgIChsb2MgXiBcIl9vZl95b2pzb246IHRoZSBlbXB0eSBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKVxuICAgIHlvanNvblxuOztcblxubGV0IGVtcHR5X3R5cGUgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB0cnlpbmcgdG8gY29udmVydCBhbiBlbXB0eSB0eXBlXCIpIHlvanNvblxuOztcbiIsIm1vZHVsZSBZb2pzb25fY29udl9lcnJvciA9IFlvanNvbl9jb252X2Vycm9yXG5tb2R1bGUgWW9qc29uX2NvbnYgPSBZb2pzb25fY29udlxubW9kdWxlIFlvanNvbmFibGUgPSBZb2pzb25hYmxlX2ludGZcbm1vZHVsZSBZb2pzb24gPSBZb2pzb25cblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBvcHRpb24gPVxuICAgIHwgTm9uZVxuICAgIHwgU29tZSBvZiAnYVxuZW5kXG5cbmV4dGVybmFsIGlnbm9yZSA6IF8gLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5leHRlcm5hbCBwb2x5X2VxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxubGV0ICggISApIDogJ2EgcmVmIC0+ICdhID0gZnVuIHggLT4gIXhcbiIsIiMgMSBcInBweF9kZXJpdmluZ19ydW50aW1lLmNwcG8ubWxcIlxudHlwZSBub25yZWMgaW50ID0gaW50XG50eXBlIG5vbnJlYyBjaGFyID0gY2hhclxudHlwZSBub25yZWMgc3RyaW5nID0gc3RyaW5nXG50eXBlIG5vbnJlYyBmbG9hdCA9IGZsb2F0XG50eXBlIG5vbnJlYyBib29sID0gYm9vbFxudHlwZSBub25yZWMgdW5pdCA9IHVuaXRcbnR5cGUgbm9ucmVjIGV4biA9IGV4blxudHlwZSBub25yZWMgJ2EgYXJyYXkgPSAnYSBhcnJheVxudHlwZSBub25yZWMgJ2EgbGlzdCA9ICdhIGxpc3RcbnR5cGUgbm9ucmVjICdhIG9wdGlvbiA9ICdhIG9wdGlvblxudHlwZSBub25yZWMgbmF0aXZlaW50ID0gbmF0aXZlaW50XG50eXBlIG5vbnJlYyBpbnQzMiA9IGludDMyXG50eXBlIG5vbnJlYyBpbnQ2NCA9IGludDY0XG50eXBlIG5vbnJlYyAnYSBsYXp5X3QgPSAnYSBsYXp5X3RcbnR5cGUgbm9ucmVjIGJ5dGVzID0gYnl0ZXNcblxuIyAxOCBcInBweF9kZXJpdmluZ19ydW50aW1lLmNwcG8ubWxcIlxuKCogV2UgcmVxdWlyZSA0LjA4IHdoaWxlIDQuMDcgYWxyZWFkeSBoYXMgYSBTdGRsaWIgbW9kdWxlLlxuICAgSW4gNC4wNywgdGhlIHR5cGUgZXF1YWxpdGllcyBvbiBTdGRsaWIuUGVydmFzaXZlc1xuICAgYXJlIG5vdCBzdHJvbmcgZW5vdWdoIGZvciB0aGUgJ2luY2x1ZGUgU3RkbGliJ1xuICAgYmVsb3cgdG8gc2F0aXNmeSB0aGUgc2lnbmF0dXJlIGNvbnN0cmFpbnRzIG9uXG4gICBQcHhfZGVyaXZpbmdfcnVudGltZS5QZXJ2YXNpdmVzLiAqKVxubW9kdWxlIFN0ZGxpYiA9IFN0ZGxpYlxuXG5pbmNsdWRlIFN0ZGxpYlxuXG5tb2R1bGUgUmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHJlc3VsdCA9XG4gICAgfCBPayBvZiAnYVxuICAgIHwgRXJyb3Igb2YgJ2JcblxuICB0eXBlICgnYSwgJ2IpIHJlc3VsdCA9ICgnYSwgJ2IpIHQgPVxuICAgIHwgT2sgb2YgJ2FcbiAgICB8IEVycm9yIG9mICdiXG5lbmRcbiIsIlxudHlwZSB0ID0gaW50XG5sZXQgZXF1YWwgKHggOiBpbnQpICh5IDogaW50KSA9IHggPSB5XG5sZXQgY29tcGFyZSAoeCA6IGludCkgKHkgOiBpbnQpID0gY29tcGFyZSB4IHlcbmxldCB0b19pbnQgeCA9IHhcbmxldCBwcCA9IEZvcm1hdC5wcF9wcmludF9pbnRcblxubGV0IGludGVyc2VjdCB4IHkgPSB4IGxhbmQgeSA8PiAwXG5sZXQgKCsrKSB4IHkgPSB4IGxvciB5XG5cbmxldCBkdW1teSA9IC0xXG5sZXQgaW5leGlzdGFudCA9IDFcbmxldCBsZXR0ZXIgPSAyXG5sZXQgbm90X2xldHRlciA9IDRcbmxldCBuZXdsaW5lID0gOFxubGV0IGxhc3RuZXdsaW5lID0gMTZcbmxldCBzZWFyY2hfYm91bmRhcnkgPSAzMlxuXG5sZXQgZnJvbV9jaGFyID0gZnVuY3Rpb25cbiAgKCogU2hvdWxkIG1hdGNoIFtjd29yZF0gZGVmaW5pdGlvbiAqKVxuICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgfCAnMCcuLic5JyB8ICdfJyB8ICdcXDE3MCcgfCAnXFwxODEnIHwgJ1xcMTg2J1xuICB8ICdcXDE5MicuLidcXDIxNCcgfCAnXFwyMTYnLi4nXFwyNDYnIHwgJ1xcMjQ4Jy4uJ1xcMjU1JyAtPlxuICAgIGxldHRlclxuICB8ICdcXG4nIC0+XG4gICAgbm90X2xldHRlciArKyBuZXdsaW5lXG4gIHwgXyAtPlxuICAgIG5vdF9sZXR0ZXJcbiIsIigqKiBWZXJ5IHNtYWxsIHRvb2xpbmcgZm9yIGZvcm1hdCBwcmludGVycy4gKilcblxuaW5jbHVkZSBGb3JtYXRcblxudHlwZSAnYSB0ID0gRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0XG5cbmxldCBsaXN0ID0gcHBfcHJpbnRfbGlzdFxubGV0IHN0ciA9IHBwX3ByaW50X3N0cmluZ1xubGV0IHNleHAgZm10IHMgcHAgeCA9IGZwcmludGYgZm10IFwiQFs8Mz4oJXNAICVhKUBdXCIgcyBwcCB4XG5sZXQgcGFpciBwcDEgcHAyIGZtdCAodjEsdjIpID1cbiAgcHAxIGZtdCB2MTsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDsgcHAyIGZtdCB2MlxubGV0IHRyaXBsZSBwcDEgcHAyIHBwMyBmbXQgKHYxLCB2MiwgdjMpID1cbiAgcHAxIGZtdCB2MTsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDtcbiAgcHAyIGZtdCB2MjsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDtcbiAgcHAzIGZtdCB2M1xubGV0IGludCA9IHBwX3ByaW50X2ludFxubGV0IG9wdGludCBmbXQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGkgLT4gZnByaW50ZiBmbXQgXCJAICVkXCIgaVxuXG5sZXQgcXVvdGUgZm10IHMgPSBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJXNcXFwiXCIgc1xuXG5sZXQgcHBfb2xpc3QgcHBfZWxlbSBmbXQgPVxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwzPltAICVhQCBdQF1cIlxuICAgIChwcF9wcmludF9saXN0XG4gICAgICAgfnBwX3NlcDooZnVuIGZtdCAoKSAtPiBmcHJpbnRmIGZtdCBcIjtAIFwiKVxuICAgICAgIHBwX2VsZW0pXG5cbmxldCBwcF9zdHJfbGlzdCA9IHBwX29saXN0IHF1b3RlXG5cbmxldCB0b190b19zdHJpbmcgcHAgeCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBwcCBmbXQgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbnR5cGUgYyA9IGludFxudHlwZSB0ID0gKGMgKiBjKSBsaXN0XG5cbmxldCByZWMgdW5pb24gbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBsXG4gIHwgW10sIF8gLT4gbCdcbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiArIDEgPCBjMScgdGhlblxuICAgICAgKGMxLCBjMik6OnVuaW9uIHIgbCdcbiAgICBlbHNlIGlmIGMyJyArIDEgPCBjMSB0aGVuXG4gICAgICAoYzEnLCBjMicpOjp1bmlvbiBsIHInXG4gICAgZWxzZSBpZiBjMiA8IGMyJyB0aGVuXG4gICAgICB1bmlvbiByICgobWluIGMxIGMxJywgYzInKTo6cicpXG4gICAgZWxzZVxuICAgICAgdW5pb24gKChtaW4gYzEgYzEnLCBjMik6OnIpIHInXG5cbmxldCByZWMgaW50ZXIgbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBbXVxuICB8IFtdLCBfIC0+IFtdXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgPCBjMScgdGhlblxuICAgICAgaW50ZXIgciBsJ1xuICAgIGVsc2UgaWYgYzInIDwgYzEgdGhlblxuICAgICAgaW50ZXIgbCByJ1xuICAgIGVsc2UgaWYgYzIgPCBjMicgdGhlblxuICAgICAgKG1heCBjMSBjMScsIGMyKTo6aW50ZXIgciBsJ1xuICAgIGVsc2VcbiAgICAgIChtYXggYzEgYzEnLCBjMicpOjppbnRlciBsIHInXG5cbmxldCByZWMgZGlmZiBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IGxcbiAgfCBbXSwgXyAtPiBbXVxuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyIDwgYzEnIHRoZW5cbiAgICAgIChjMSwgYzIpOjpkaWZmIHIgbCdcbiAgICBlbHNlIGlmIGMyJyA8IGMxIHRoZW5cbiAgICAgIGRpZmYgbCByJ1xuICAgIGVsc2VcbiAgICAgIGxldCByJycgPSBpZiBjMicgPCBjMiB0aGVuIChjMicgKyAxLCBjMikgOjogciBlbHNlIHIgaW5cbiAgICAgIGlmIGMxIDwgYzEnIHRoZW5cbiAgICAgICAgKGMxLCBjMScgLSAxKTo6ZGlmZiByJycgcidcbiAgICAgIGVsc2VcbiAgICAgICAgZGlmZiByJycgcidcblxubGV0IHNpbmdsZSBjID0gW2MsIGNdXG5cbmxldCBhZGQgYyBsID0gdW5pb24gKHNpbmdsZSBjKSBsXG5cbmxldCBzZXEgYyBjJyA9IGlmIGMgPD0gYycgdGhlbiBbYywgYyddIGVsc2UgW2MnLCBjXVxuXG5sZXQgcmVjIG9mZnNldCBvIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgICAgICAgIC0+IFtdXG4gIHwgKGMxLCBjMikgOjogciAtPiAoYzEgKyBvLCBjMiArIG8pIDo6IG9mZnNldCBvIHJcblxubGV0IGVtcHR5ID0gW11cblxubGV0IHJlYyBtZW0gKGMgOiBpbnQpIHMgPVxuICBtYXRjaCBzIHdpdGhcbiAgICBbXSAgICAgICAgICAgICAgLT4gZmFsc2VcbiAgfCAoYzEsIGMyKSA6OiByZW0gLT4gaWYgYyA8PSBjMiB0aGVuIGMgPj0gYzEgZWxzZSBtZW0gYyByZW1cblxuKCoqKiopXG5cbnR5cGUgaGFzaCA9IGludFxuXG5sZXQgcmVjIGhhc2hfcmVjID0gZnVuY3Rpb25cbiAgfCBbXSAgICAgICAgLT4gMFxuICB8IChpLCBqKTo6ciAtPiBpICsgMTMgKiBqICsgMjU3ICogaGFzaF9yZWMgclxubGV0IGhhc2ggbCA9IChoYXNoX3JlYyBsKSBsYW5kIDB4M0ZGRkZGRkZcblxuKCoqKiopXG5cbmxldCBwcmludF9vbmUgY2ggKGMxLCBjMikgPVxuICBpZiBjMSA9IGMyIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkXCIgYzFcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWQtJWRcIiBjMSBjMlxuXG5sZXQgcHAgPSBGbXQubGlzdCBwcmludF9vbmVcblxubGV0IHJlYyBpdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8ICh4LCB5KTo6eHMgLT5cbiAgICBmIHggeTtcbiAgICBpdGVyIHhzICB+ZlxuXG5sZXQgb25lX2NoYXIgPSBmdW5jdGlvblxuICB8IFtpLCBqXSB3aGVuIGkgPSBqIC0+IFNvbWUgaVxuICB8IF8gLT4gTm9uZVxuXG5cbm1vZHVsZSBDU2V0TWFwID0gTWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IGludCAqIChpbnQgKiBpbnQpIGxpc3RcbiAgICBsZXQgY29tcGFyZSAoaSwgdSkgKGosIHYpID1cbiAgICAgIGxldCBjID0gY29tcGFyZSBpIGogaW5cbiAgICAgIGlmIGMgPD4gMFxuICAgICAgdGhlbiBjXG4gICAgICBlbHNlIGNvbXBhcmUgdSB2XG4gIGVuZClcblxubGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZF9yaWdodCBmIHQgaW5pdFxuXG5sZXQgY3NpbmdsZSBjID0gc2luZ2xlIChDaGFyLmNvZGUgYylcblxubGV0IGNhbnkgPSBbMCwgMjU1XVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCByZWMgcHJlcGVuZCBzIHggbCA9XG4gIG1hdGNoIHMsIGwgd2l0aFxuICB8IFtdLCBfIC0+IGxcbiAgfCBfciwgW10gLT4gW11cbiAgfCAoX2MsIGMnKSA6OiByLCAoW2QsIF9kJ10sIF94JykgOjogX3InIHdoZW4gYycgPCBkIC0+IHByZXBlbmQgciB4IGxcbiAgfCAoYywgYycpIDo6IHIsIChbZCwgZCddLCB4JykgOjogcicgLT5cbiAgICBpZiBjIDw9IGQgdGhlbiBiZWdpblxuICAgICAgaWYgYycgPCBkJ1xuICAgICAgdGhlbiAoW2QsIGMnXSwgeCBAIHgnKSA6OiBwcmVwZW5kIHIgeCAoKFtjJyArIDEsIGQnXSwgeCcpIDo6IHInKVxuICAgICAgZWxzZSAoW2QsIGQnXSwgeCBAIHgnKSA6OiBwcmVwZW5kIHMgeCByJ1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBjID4gZCdcbiAgICAgIHRoZW4gKFtkLCBkJ10sIHgnKSA6OiBwcmVwZW5kIHMgeCByJ1xuICAgICAgZWxzZSAoW2QsIGMgLSAxXSwgeCcpIDo6IHByZXBlbmQgcyB4ICgoW2MsIGQnXSwgeCcpIDo6IHInKVxuICAgIGVuZFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBwaWNrID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBpbnZhbGlkX2FyZyBcIlJlX2NzZXQucGlja1wiXG4gIHwgKHgsIF8pOjpfIC0+IHhcbiIsIlxubW9kdWxlIFBtYXJrID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuICBsZXQgZXF1YWwgKHggOiBpbnQpICh5IDogaW50KSA9IHggPSB5XG4gIGxldCBjb21wYXJlICh4IDogaW50KSAoeSA6IGludCkgPSBjb21wYXJlIHggeVxuICBsZXQgciA9IHJlZiAwXG4gIGxldCBnZW4gKCkgPSBpbmNyIHIgOyAhclxuXG4gIGxldCBwcCA9IEZvcm1hdC5wcF9wcmludF9pbnRcbmVuZFxuXG5pbmNsdWRlIFBtYXJrXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2UoUG1hcmspXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG50eXBlIHNlbSA9IFsgYExvbmdlc3QgfCBgU2hvcnRlc3QgfCBgRmlyc3QgXVxuXG50eXBlIHJlcF9raW5kID0gWyBgR3JlZWR5IHwgYE5vbl9ncmVlZHkgXVxuXG50eXBlIG1hcmsgPSBpbnRcbnR5cGUgaWR4ID0gaW50XG5cbnR5cGUgZXhwciA9IHsgaWQgOiBpbnQ7IGRlZiA6IGRlZiB9XG5cbmFuZCBkZWYgPVxuICAgIENzdCBvZiBDc2V0LnRcbiAgfCBBbHQgb2YgZXhwciBsaXN0XG4gIHwgU2VxIG9mIHNlbSAqIGV4cHIgKiBleHByXG4gIHwgRXBzXG4gIHwgUmVwIG9mIHJlcF9raW5kICogc2VtICogZXhwclxuICB8IE1hcmsgb2YgaW50XG4gIHwgRXJhc2Ugb2YgaW50ICogaW50XG4gIHwgQmVmb3JlIG9mIENhdGVnb3J5LnRcbiAgfCBBZnRlciBvZiBDYXRlZ29yeS50XG4gIHwgUG1hcmsgb2YgUG1hcmsudFxuXG5sZXQgaGFzaF9jb21iaW5lIGggYWNjdSA9IGFjY3UgKiA2NTU5OSArIGhcblxubW9kdWxlIE1hcmtzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtYXJrcyA6IChpbnQgKiBpbnQpIGxpc3RcbiAgICA7IHBtYXJrcyA6IFBtYXJrLlNldC50IH1cblxuICBsZXQgZW1wdHkgPSB7IG1hcmtzID0gW10gOyBwbWFya3MgPSBQbWFyay5TZXQuZW1wdHkgfVxuXG4gIGxldCByZWMgbWVyZ2VfbWFya3Nfb2Zmc2V0IG9sZCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgb2xkXG4gICAgfCAoaSwgdikgOjogcmVtIC0+XG4gICAgICBsZXQgbncnID0gbWVyZ2VfbWFya3Nfb2Zmc2V0IChMaXN0LnJlbW92ZV9hc3NxIGkgb2xkKSByZW0gaW5cbiAgICAgIGlmIHYgPSAtMiB0aGVuXG4gICAgICAgIG53J1xuICAgICAgZWxzZVxuICAgICAgICAoaSwgdikgOjogbncnXG5cbiAgbGV0IG1lcmdlIG9sZCBudyA9XG4gICAgeyBtYXJrcyA9IG1lcmdlX21hcmtzX29mZnNldCBvbGQubWFya3MgbncubWFya3NcbiAgICA7IHBtYXJrcyA9IFBtYXJrLlNldC51bmlvbiBvbGQucG1hcmtzIG53LnBtYXJrcyB9XG5cbiAgbGV0IHJlYyBoYXNoX21hcmtzX29mZnNldCBsIGFjY3UgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgW10gICAgICAgICAgLT4gYWNjdVxuICAgIHwgKGEsIGkpIDo6IHIgLT4gaGFzaF9tYXJrc19vZmZzZXQgciAoaGFzaF9jb21iaW5lIGEgKGhhc2hfY29tYmluZSBpIGFjY3UpKVxuXG4gIGxldCBoYXNoIG0gYWNjdSA9XG4gICAgaGFzaF9tYXJrc19vZmZzZXQgbS5tYXJrcyAoaGFzaF9jb21iaW5lIChIYXNodGJsLmhhc2ggbS5wbWFya3MpIGFjY3UpXG5cbiAgbGV0IHJlYyBtYXJrc19zZXRfaWR4IGlkeCA9IGZ1bmN0aW9uXG4gICAgfCAoYSwgLTEpIDo6IHJlbSAtPlxuICAgICAgKGEsIGlkeCkgOjogbWFya3Nfc2V0X2lkeCBpZHggcmVtXG4gICAgfCBtYXJrcyAtPlxuICAgICAgbWFya3NcblxuICBsZXQgbWFya3Nfc2V0X2lkeCBtYXJrcyBpZHggPVxuICAgIHsgbWFya3Mgd2l0aCBtYXJrcyA9IG1hcmtzX3NldF9pZHggaWR4IG1hcmtzLm1hcmtzIH1cblxuICBsZXQgcHBfbWFya3MgY2ggdCA9XG4gICAgbWF0Y2ggdC5tYXJrcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgKClcbiAgICB8IChhLCBpKSA6OiByIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkLSVkXCIgYSBpO1xuICAgICAgTGlzdC5pdGVyIChmdW4gKGEsIGkpIC0+IEZvcm1hdC5mcHJpbnRmIGNoIFwiICVkLSVkXCIgYSBpKSByXG5lbmRcblxuKCoqKiopXG5cbmxldCBwcF9zZW0gY2ggayA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgY2hcbiAgICAobWF0Y2ggayB3aXRoXG4gICAgICAgYFNob3J0ZXN0IC0+IFwic2hvcnRcIlxuICAgICB8IGBMb25nZXN0ICAtPiBcImxvbmdcIlxuICAgICB8IGBGaXJzdCAgICAtPiBcImZpcnN0XCIpXG5cblxubGV0IHBwX3JlcF9raW5kIGZtdCA9IGZ1bmN0aW9uXG4gIHwgYEdyZWVkeSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIkdyZWVkeVwiXG4gIHwgYE5vbl9ncmVlZHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25fZ3JlZWR5XCJcblxubGV0IHJlYyBwcCBjaCBlID1cbiAgbGV0IG9wZW4gRm10IGluXG4gIG1hdGNoIGUuZGVmIHdpdGhcbiAgICBDc3QgbCAtPlxuICAgIHNleHAgY2ggXCJjc3RcIiBDc2V0LnBwIGw7XG4gIHwgQWx0IGwgLT5cbiAgICBzZXhwIGNoIFwiYWx0XCIgKGxpc3QgcHApIGxcbiAgfCBTZXEgKGssIGUsIGUnKSAtPlxuICAgIHNleHAgY2ggXCJzZXFcIiAodHJpcGxlIHBwX3NlbSBwcCBwcCkgKGssIGUsIGUnKVxuICB8IEVwcyAtPlxuICAgIHN0ciBjaCBcImVwc1wiXG4gIHwgUmVwIChfcmssIGssIGUpIC0+XG4gICAgc2V4cCBjaCBcInJlcFwiIChwYWlyIHBwX3NlbSBwcCkgKGssIGUpXG4gIHwgTWFyayBpIC0+XG4gICAgc2V4cCBjaCBcIm1hcmtcIiBpbnQgaVxuICB8IFBtYXJrIGkgLT5cbiAgICBzZXhwIGNoIFwicG1hcmtcIiBpbnQgKGkgOj4gaW50KVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIHNleHAgY2ggXCJlcmFzZVwiIChwYWlyIGludCBpbnQpIChiLCBlKVxuICB8IEJlZm9yZSBjIC0+XG4gICAgc2V4cCBjaCBcImJlZm9yZVwiIENhdGVnb3J5LnBwIGNcbiAgfCBBZnRlciBjIC0+XG4gICAgc2V4cCBjaCBcImFmdGVyXCIgQ2F0ZWdvcnkucHAgY1xuXG5cbigqKioqKVxuXG5sZXQgcmVjIGZpcnN0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgTm9uZVxuICB8IHggOjogciAtPlxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICBOb25lICAgICAgICAgIC0+IGZpcnN0IGYgclxuICAgIHwgU29tZSBfIGFzIHJlcyAtPiByZXNcblxuKCoqKiopXG5cbnR5cGUgaWRzID0gaW50IHJlZlxubGV0IGNyZWF0ZV9pZHMgKCkgPSByZWYgMFxuXG5sZXQgZXBzX2V4cHIgPSB7IGlkID0gMDsgZGVmID0gRXBzIH1cblxubGV0IG1rX2V4cHIgaWRzIGRlZiA9XG4gIGluY3IgaWRzO1xuICB7IGlkID0gIWlkczsgZGVmID0gZGVmIH1cblxubGV0IGVtcHR5IGlkcyA9IG1rX2V4cHIgaWRzIChBbHQgW10pXG5cbmxldCBjc3QgaWRzIHMgPVxuICBpZiBDc2V0LmlzX2VtcHR5IHNcbiAgdGhlbiBlbXB0eSBpZHNcbiAgZWxzZSBta19leHByIGlkcyAoQ3N0IHMpXG5cbmxldCBhbHQgaWRzID0gZnVuY3Rpb25cbiAgfCBbXSAgLT4gZW1wdHkgaWRzXG4gIHwgW2NdIC0+IGNcbiAgfCBsICAgLT4gbWtfZXhwciBpZHMgKEFsdCBsKVxuXG5sZXQgc2VxIGlkcyBraW5kIHggeSA9XG4gIG1hdGNoIHguZGVmLCB5LmRlZiB3aXRoXG4gICAgQWx0IFtdLCBfICAgICAgICAgICAgICAgICAtPiB4XG4gIHwgXywgQWx0IFtdICAgICAgICAgICAgICAgICAtPiB5XG4gIHwgRXBzLCBfICAgICAgICAgICAgICAgICAgICAtPiB5XG4gIHwgXywgRXBzIHdoZW4ga2luZCA9IGBGaXJzdCAtPiB4XG4gIHwgXyAgICAgICAgICAgICAgICAgICAgICAgICAtPiBta19leHByIGlkcyAoU2VxIChraW5kLCB4LCB5KSlcblxubGV0IGlzX2VwcyBleHByID1cbiAgbWF0Y2ggZXhwci5kZWYgd2l0aFxuICB8IEVwcyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgZXBzIGlkcyA9IG1rX2V4cHIgaWRzIEVwc1xuXG5sZXQgcmVwIGlkcyBraW5kIHNlbSB4ID0gbWtfZXhwciBpZHMgKFJlcCAoa2luZCwgc2VtLCB4KSlcblxubGV0IG1hcmsgaWRzIG0gPSBta19leHByIGlkcyAoTWFyayBtKVxuXG5sZXQgcG1hcmsgaWRzIGkgPSBta19leHByIGlkcyAoUG1hcmsgaSlcblxubGV0IGVyYXNlIGlkcyBtIG0nID0gbWtfZXhwciBpZHMgKEVyYXNlIChtLCBtJykpXG5cbmxldCBiZWZvcmUgaWRzIGMgPSBta19leHByIGlkcyAoQmVmb3JlIGMpXG5cbmxldCBhZnRlciBpZHMgYyA9IG1rX2V4cHIgaWRzIChBZnRlciBjKVxuXG4oKioqKilcblxubGV0IHJlYyByZW5hbWUgaWRzIHggPVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gICAgQ3N0IF8gfCBFcHMgfCBNYXJrIF8gfCBQbWFyayBfIHwgRXJhc2UgXyB8IEJlZm9yZSBfIHwgQWZ0ZXIgXyAtPlxuICAgIG1rX2V4cHIgaWRzIHguZGVmXG4gIHwgQWx0IGwgLT5cbiAgICBta19leHByIGlkcyAoQWx0IChMaXN0Lm1hcCAocmVuYW1lIGlkcykgbCkpXG4gIHwgU2VxIChrLCB5LCB6KSAtPlxuICAgIG1rX2V4cHIgaWRzIChTZXEgKGssIHJlbmFtZSBpZHMgeSwgcmVuYW1lIGlkcyB6KSlcbiAgfCBSZXAgKGcsIGssIHkpIC0+XG4gICAgbWtfZXhwciBpZHMgKFJlcCAoZywgaywgcmVuYW1lIGlkcyB5KSlcblxuKCoqKiopXG5cbnR5cGUgaGFzaCA9IGludFxudHlwZSBtYXJrX2luZm9zID0gaW50IGFycmF5XG50eXBlIHN0YXR1cyA9IEZhaWxlZCB8IE1hdGNoIG9mIG1hcmtfaW5mb3MgKiBQbWFyay5TZXQudCB8IFJ1bm5pbmdcblxubW9kdWxlIEUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFRTZXEgb2YgdCBsaXN0ICogZXhwciAqIHNlbVxuICAgIHwgVEV4cCBvZiBNYXJrcy50ICogZXhwclxuICAgIHwgVE1hdGNoIG9mIE1hcmtzLnRcblxuICBsZXQgcmVjIGVxdWFsIGwxIGwyID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIFtdIC0+XG4gICAgICB0cnVlXG4gICAgfCBUU2VxIChsMScsIGUxLCBfKSA6OiByMSwgVFNlcSAobDInLCBlMiwgXykgOjogcjIgLT5cbiAgICAgIGUxLmlkID0gZTIuaWQgJiYgZXF1YWwgbDEnIGwyJyAmJiBlcXVhbCByMSByMlxuICAgIHwgVEV4cCAobWFya3MxLCBlMSkgOjogcjEsIFRFeHAgKG1hcmtzMiwgZTIpIDo6IHIyIC0+XG4gICAgICBlMS5pZCA9IGUyLmlkICYmIG1hcmtzMSA9IG1hcmtzMiAmJiBlcXVhbCByMSByMlxuICAgIHwgVE1hdGNoIG1hcmtzMSA6OiByMSwgVE1hdGNoIG1hcmtzMiA6OiByMiAtPlxuICAgICAgbWFya3MxID0gbWFya3MyICYmIGVxdWFsIHIxIHIyXG4gICAgfCBfIC0+XG4gICAgICBmYWxzZVxuXG4gIGxldCByZWMgaGFzaCBsIGFjY3UgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGFjY3VcbiAgICB8IFRTZXEgKGwnLCBlLCBfKSA6OiByIC0+XG4gICAgICBoYXNoIHIgKGhhc2hfY29tYmluZSAweDE3MmExYmNlIChoYXNoX2NvbWJpbmUgZS5pZCAoaGFzaCBsJyBhY2N1KSkpXG4gICAgfCBURXhwIChtYXJrcywgZSkgOjogciAtPlxuICAgICAgaGFzaCByXG4gICAgICAgIChoYXNoX2NvbWJpbmUgMHgyYjRjMGQ3NyAoaGFzaF9jb21iaW5lIGUuaWQgKE1hcmtzLmhhc2ggbWFya3MgYWNjdSkpKVxuICAgIHwgVE1hdGNoIG1hcmtzIDo6IHIgLT5cbiAgICAgIGhhc2ggciAoaGFzaF9jb21iaW5lIDB4MWMyMDVhZDUgKE1hcmtzLmhhc2ggbWFya3MgYWNjdSkpXG5cbiAgbGV0IHRleHAgbWFya3MgeCA9IFRFeHAgKG1hcmtzLCB4KVxuXG4gIGxldCB0c2VxIGtpbmQgeCB5IHJlbSA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IHJlbVxuICAgIHwgW1RFeHAgKG1hcmtzLCB7ZGVmID0gRXBzIDsgX30pXSAtPiBURXhwIChtYXJrcywgeSkgOjogcmVtXG4gICAgfCBfICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IFRTZXEgKHgsIHksIGtpbmQpIDo6IHJlbVxuXG4gIGxldCByZWMgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeSA9XG4gICAgbWF0Y2ggZSB3aXRoXG4gICAgfCBUTWF0Y2ggbWFya3MgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oTWF0Y2hAICVhKUBdXCIgTWFya3MucHBfbWFya3MgbWFya3NcbiAgICB8IFRTZXEgKGwnLCB4LCBfa2luZCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oU2VxQCBcIjtcbiAgICAgIHByaW50X3N0YXRlX2xzdCBjaCBsJyB4O1xuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAICVhKUBdXCIgcHAgeFxuICAgIHwgVEV4cCAobWFya3MsIHtkZWYgPSBFcHM7IF99KSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihFeHBAICVkQCAoJWEpQCAoZXBzKSlAXVwiIHkuaWQgTWFya3MucHBfbWFya3MgbWFya3NcbiAgICB8IFRFeHAgKG1hcmtzLCB4KSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihFeHBAICVkQCAoJWEpQCAlYSlAXVwiIHguaWQgTWFya3MucHBfbWFya3MgbWFya3MgcHAgeFxuXG4gIGFuZCBwcmludF9zdGF0ZV9sc3QgY2ggbCB5ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIigpXCJcbiAgICB8IGUgOjogcmVtIC0+XG4gICAgICBwcmludF9zdGF0ZV9yZWMgY2ggZSB5O1xuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gZSAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkAgfCBcIjtcbiAgICAgICAgICAgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeSlcbiAgICAgICAgcmVtXG5cbiAgbGV0IHBwIGNoIHQgPSBwcmludF9zdGF0ZV9sc3QgY2ggW3RdIHsgaWQgPSAwOyBkZWYgPSBFcHMgfVxuZW5kXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgaWR4OiBpZHhcbiAgICA7IGNhdGVnb3J5OiBDYXRlZ29yeS50XG4gICAgOyBkZXNjOiBFLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBzdGF0dXM6IHN0YXR1cyBvcHRpb25cbiAgICA7IGhhc2g6IGhhc2ggfVxuXG4gIGxldCBkdW1teSA9XG4gICAgeyBpZHggPSAtMVxuICAgIDsgY2F0ZWdvcnkgPSBDYXRlZ29yeS5kdW1teVxuICAgIDsgZGVzYyA9IFtdXG4gICAgOyBzdGF0dXMgPSBOb25lXG4gICAgOyBoYXNoID0gLTEgfVxuXG4gIGxldCBoYXNoIGlkeCBjYXQgZGVzYyA9XG4gICAgRS5oYXNoIGRlc2MgKGhhc2hfY29tYmluZSBpZHggKGhhc2hfY29tYmluZSAoQ2F0ZWdvcnkudG9faW50IGNhdCkgMCkpIGxhbmQgMHgzRkZGRkZGRlxuXG4gIGxldCBtayBpZHggY2F0IGRlc2MgPVxuICAgIHsgaWR4XG4gICAgOyBjYXRlZ29yeSA9IGNhdFxuICAgIDsgZGVzY1xuICAgIDsgc3RhdHVzID0gTm9uZVxuICAgIDsgaGFzaCA9IGhhc2ggaWR4IGNhdCBkZXNjfVxuXG4gIGxldCBjcmVhdGUgY2F0IGUgPSBtayAwIGNhdCBbRS5URXhwIChNYXJrcy5lbXB0eSwgZSldXG5cbiAgbGV0IGVxdWFsIHggeSA9XG4gICAgKHguaGFzaCA6IGludCkgPSB5Lmhhc2ggJiYgKHguaWR4IDogaW50KSA9IHkuaWR4ICYmXG4gICAgQ2F0ZWdvcnkuZXF1YWwgeC5jYXRlZ29yeSB5LmNhdGVnb3J5ICYmIEUuZXF1YWwgeC5kZXNjIHkuZGVzY1xuXG4gIGxldCBjb21wYXJlIHggeSA9XG4gICAgbGV0IGMgPSBjb21wYXJlICh4Lmhhc2ggOiBpbnQpIHkuaGFzaCBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgbGV0IGMgPSBDYXRlZ29yeS5jb21wYXJlIHguY2F0ZWdvcnkgeS5jYXRlZ29yeSBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgIGNvbXBhcmUgeC5kZXNjIHkuZGVzY1xuXG4gIHR5cGUgdCcgPSB0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZShcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHQnXG4gICAgICBsZXQgZXF1YWwgPSBlcXVhbFxuICAgICAgbGV0IGhhc2ggdCA9IHQuaGFzaFxuICAgIGVuZClcbmVuZFxuXG4oKioqKiBGaW5kIGEgZnJlZSBpbmRleCAqKioqKVxuXG50eXBlIHdvcmtpbmdfYXJlYSA9IGJvb2wgYXJyYXkgcmVmXG5cbmxldCBjcmVhdGVfd29ya2luZ19hcmVhICgpID0gcmVmIFt8IGZhbHNlIHxdXG5cbmxldCBpbmRleF9jb3VudCB3ID0gQXJyYXkubGVuZ3RoICF3XG5cbmxldCByZXNldF90YWJsZSBhID0gQXJyYXkuZmlsbCBhIDAgKEFycmF5Lmxlbmd0aCBhKSBmYWxzZVxuXG5sZXQgcmVjIG1hcmtfdXNlZF9pbmRpY2VzIHRibCA9XG4gIExpc3QuaXRlciAoZnVuY3Rpb25cbiAgICAgIHwgRS5UU2VxIChsLCBfLCBfKSAtPiBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgbFxuICAgICAgfCBFLlRFeHAgKG1hcmtzLCBfKVxuICAgICAgfCBFLlRNYXRjaCBtYXJrcyAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biAoXywgaSkgLT4gaWYgaSA+PSAwIHRoZW4gdGJsLihpKSA8LSB0cnVlKVxuICAgICAgICAgIG1hcmtzLk1hcmtzLm1hcmtzKVxuXG5sZXQgcmVjIGZpbmRfZnJlZSB0YmwgaWR4IGxlbiA9XG4gIGlmIGlkeCA9IGxlbiB8fCBub3QgdGJsLihpZHgpIHRoZW4gaWR4IGVsc2UgZmluZF9mcmVlIHRibCAoaWR4ICsgMSkgbGVuXG5cbmxldCBmcmVlX2luZGV4IHRibF9yZWYgbCA9XG4gIGxldCB0YmwgPSAhdGJsX3JlZiBpblxuICByZXNldF90YWJsZSB0Ymw7XG4gIG1hcmtfdXNlZF9pbmRpY2VzIHRibCBsO1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHRibCBpblxuICBsZXQgaWR4ID0gZmluZF9mcmVlIHRibCAwIGxlbiBpblxuICBpZiBpZHggPSBsZW4gdGhlbiB0YmxfcmVmIDo9IEFycmF5Lm1ha2UgKDIgKiBsZW4pIGZhbHNlO1xuICBpZHhcblxuKCoqKiogQ29tcHV0YXRpb24gb2YgdGhlIG5leHQgc3RhdGUgKioqKilcblxubGV0IHJlbW92ZV9tYXRjaGVzID0gTGlzdC5maWx0ZXIgKGZ1bmN0aW9uIEUuVE1hdGNoIF8gLT4gZmFsc2UgfCBfIC0+IHRydWUpXG5cbmxldCByZWMgc3BsaXRfYXRfbWF0Y2hfcmVjIGwnID0gZnVuY3Rpb25cbiAgfCBbXSAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IEUuVE1hdGNoIF8gOjogciAtPiAoTGlzdC5yZXYgbCcsIHJlbW92ZV9tYXRjaGVzIHIpXG4gIHwgeCA6OiByICAgICAgICAtPiBzcGxpdF9hdF9tYXRjaF9yZWMgKHggOjogbCcpIHJcblxubGV0IHNwbGl0X2F0X21hdGNoIGwgPSBzcGxpdF9hdF9tYXRjaF9yZWMgW10gbFxuXG5sZXQgcmVjIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgbCB5ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT5cbiAgICAoW10sIHByZXYpXG4gIHwgRS5UTWF0Y2ggXyBhcyB4IDo6IF8gLT4gKCogVHJ1bmNhdGUgYWZ0ZXIgZmlyc3QgbWF0Y2ggKilcbiAgICAoW3hdLCBwcmV2KVxuICB8IEUuVFNlcSAobCcsIHgsIGtpbmQpIDo6IHIgLT5cbiAgICBsZXQgKGwnJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiBsJyB4IGluXG4gICAgbGV0IChyJywgcHJldicnKSA9IHJlbW92ZV9kdXBsaWNhdGVzIHByZXYnIHIgeSBpblxuICAgIChFLnRzZXEga2luZCBsJycgeCByJywgcHJldicnKVxuICB8IEUuVEV4cCAoX21hcmtzLCB7ZGVmID0gRXBzOyBffSkgYXMgZSA6OiByIC0+XG4gICAgaWYgTGlzdC5tZW1xIHkuaWQgcHJldiB0aGVuXG4gICAgICByZW1vdmVfZHVwbGljYXRlcyBwcmV2IHIgeVxuICAgIGVsc2VcbiAgICAgIGxldCAocicsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzICh5LmlkIDo6IHByZXYpIHIgeSBpblxuICAgICAgKGUgOjogcicsIHByZXYnKVxuICB8IEUuVEV4cCAoX21hcmtzLCB4KSBhcyBlIDo6IHIgLT5cbiAgICBpZiBMaXN0Lm1lbXEgeC5pZCBwcmV2IHRoZW5cbiAgICAgIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgciB5XG4gICAgZWxzZVxuICAgICAgbGV0IChyJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgKHguaWQgOjogcHJldikgciB5IGluXG4gICAgICAoZSA6OiByJywgcHJldicpXG5cbmxldCByZWMgc2V0X2lkeCBpZHggPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgW11cbiAgfCBFLlRNYXRjaCBtYXJrcyA6OiByIC0+XG4gICAgRS5UTWF0Y2ggKE1hcmtzLm1hcmtzX3NldF9pZHggbWFya3MgaWR4KSA6OiBzZXRfaWR4IGlkeCByXG4gIHwgRS5UU2VxIChsJywgeCwga2luZCkgOjogciAtPlxuICAgIEUuVFNlcSAoc2V0X2lkeCBpZHggbCcsIHgsIGtpbmQpIDo6IHNldF9pZHggaWR4IHJcbiAgfCBFLlRFeHAgKG1hcmtzLCB4KSA6OiByIC0+XG4gICAgRS5URXhwICgoTWFya3MubWFya3Nfc2V0X2lkeCBtYXJrcyBpZHgpLCB4KSA6OiBzZXRfaWR4IGlkeCByXG5cbmxldCBmaWx0ZXJfbWFya3MgYiBlIG1hcmtzID1cbiAge21hcmtzIHdpdGggTWFya3MubWFya3MgPSBMaXN0LmZpbHRlciAoZnVuIChpLCBfKSAtPiBpIDwgYiB8fCBpID4gZSkgbWFya3MuTWFya3MubWFya3MgfVxuXG5sZXQgcmVjIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHggcmVtID1cbiAgKCpGb3JtYXQuZXByaW50ZiBcIiVkQC5cIiB4LmlkOyopXG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgICBDc3QgcyAtPlxuICAgIGlmIENzZXQubWVtIGMgcyB0aGVuIEUudGV4cCBtYXJrcyBlcHNfZXhwciA6OiByZW0gZWxzZSByZW1cbiAgfCBBbHQgbCAtPlxuICAgIGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtXG4gIHwgU2VxIChraW5kLCB5LCB6KSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeScgeiByZW1cbiAgfCBSZXAgKHJlcF9raW5kLCBraW5kLCB5KSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBsZXQgKHknJywgbWFya3MnKSA9XG4gICAgICBtYXRjaFxuICAgICAgICBmaXJzdFxuICAgICAgICAgIChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKSB5J1xuICAgICAgd2l0aFxuICAgICAgICBOb25lICAgICAgICAtPiAoeScsIG1hcmtzKVxuICAgICAgfCBTb21lIG1hcmtzJyAtPiAocmVtb3ZlX21hdGNoZXMgeScsIG1hcmtzJylcbiAgICBpblxuICAgIGJlZ2luIG1hdGNoIHJlcF9raW5kIHdpdGhcbiAgICAgICAgYEdyZWVkeSAgICAgLT4gRS50c2VxIGtpbmQgeScnIHggKEUuVE1hdGNoIG1hcmtzJyA6OiByZW0pXG4gICAgICB8IGBOb25fZ3JlZWR5IC0+IEUuVE1hdGNoIG1hcmtzIDo6IEUudHNlcSBraW5kIHknJyB4IHJlbVxuICAgIGVuZFxuICB8IEVwcyAtPlxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IE1hcmsgaSAtPlxuICAgIGxldCBtYXJrcyA9IHsgbWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IChpLCAtMSkgOjogTGlzdC5yZW1vdmVfYXNzcSBpIG1hcmtzLk1hcmtzLm1hcmtzIH0gaW5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBQbWFyayBpIC0+XG4gICAgbGV0IG1hcmtzID0geyBtYXJrcyB3aXRoIE1hcmtzLnBtYXJrcyA9IFBtYXJrLlNldC5hZGQgaSBtYXJrcy5NYXJrcy5wbWFya3MgfSBpblxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIEUuVE1hdGNoIChmaWx0ZXJfbWFya3MgYiBlIG1hcmtzKSA6OiByZW1cbiAgfCBCZWZvcmUgY2F0JycgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgbmV4dF9jYXQgY2F0JycgdGhlbiBFLlRNYXRjaCBtYXJrcyA6OiByZW0gZWxzZSByZW1cbiAgfCBBZnRlciBjYXQnJyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBwcmV2X2NhdCBjYXQnJyB0aGVuIEUuVE1hdGNoIG1hcmtzIDo6IHJlbSBlbHNlIHJlbVxuXG5hbmQgZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+XG4gICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeVxuICAgICAgKGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHIgcmVtKVxuXG5hbmQgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHkgeiByZW0gPVxuICBtYXRjaFxuICAgIGZpcnN0IChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKSB5XG4gIHdpdGhcbiAgICBOb25lIC0+XG4gICAgRS50c2VxIGtpbmQgeSB6IHJlbVxuICB8IFNvbWUgbWFya3MgLT5cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgIGBMb25nZXN0IC0+XG4gICAgICBFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgelxuICAgICAgICAoZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeiByZW0pXG4gICAgfCBgU2hvcnRlc3QgLT5cbiAgICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHpcbiAgICAgICAgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IHJlbSlcbiAgICB8IGBGaXJzdCAtPlxuICAgICAgbGV0ICh5JywgeScnKSA9IHNwbGl0X2F0X21hdGNoIHkgaW5cbiAgICAgIEUudHNlcSBraW5kIHknIHpcbiAgICAgICAgKGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHogKEUudHNlcSBraW5kIHknJyB6IHJlbSkpXG5cbmxldCByZWMgZGVsdGFfMyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeCByZW0gPVxuICBtYXRjaCB4IHdpdGhcbiAgICBFLlRTZXEgKHksIHosIGtpbmQpIC0+XG4gICAgbGV0IHknID0gZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5JyB6IHJlbVxuICB8IEUuVEV4cCAobWFya3MsIGUpIC0+XG4gICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgZSByZW1cbiAgfCBFLlRNYXRjaCBfIC0+XG4gICAgeCA6OiByZW1cblxuYW5kIGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPlxuICAgIGRlbHRhXzMgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHlcbiAgICAgIChkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCByIHJlbSlcblxubGV0IGRlbHRhIHRibF9yZWYgbmV4dF9jYXQgY2hhciBzdCA9XG4gIGxldCBwcmV2X2NhdCA9IHN0LlN0YXRlLmNhdGVnb3J5IGluXG4gIGxldCAoZXhwcicsIF8pID1cbiAgICByZW1vdmVfZHVwbGljYXRlcyBbXVxuICAgICAgKGRlbHRhXzQgY2hhciB+bmV4dF9jYXQgfnByZXZfY2F0IHN0LlN0YXRlLmRlc2MgW10pXG4gICAgICBlcHNfZXhwciBpblxuICBsZXQgaWR4ID0gZnJlZV9pbmRleCB0YmxfcmVmIGV4cHInIGluXG4gIGxldCBleHByJycgPSBzZXRfaWR4IGlkeCBleHByJyBpblxuICBTdGF0ZS5tayBpZHggbmV4dF9jYXQgZXhwcicnXG5cbigqKioqKVxuXG5sZXQgcmVjIHJlZF90ciA9IGZ1bmN0aW9uXG4gIHwgW10gfCBbX10gYXMgbCAtPlxuICAgIGxcbiAgfCAoKHMxLCBzdDEpIGFzIHRyMSkgOjogKChzMiwgc3QyKSBhcyB0cjIpIDo6IHJlbSAtPlxuICAgIGlmIFN0YXRlLmVxdWFsIHN0MSBzdDIgdGhlblxuICAgICAgcmVkX3RyICgoQ3NldC51bmlvbiBzMSBzMiwgc3QxKSA6OiByZW0pXG4gICAgZWxzZVxuICAgICAgdHIxIDo6IHJlZF90ciAodHIyIDo6IHJlbSlcblxubGV0IHNpbXBsX3RyIGwgPVxuICBMaXN0LnNvcnRcbiAgICAoZnVuIChzMSwgXykgKHMyLCBfKSAtPiBjb21wYXJlIHMxIHMyKVxuICAgIChyZWRfdHIgKExpc3Quc29ydCAoZnVuIChfLCBzdDEpIChfLCBzdDIpIC0+IFN0YXRlLmNvbXBhcmUgc3QxIHN0MikgbCkpXG5cbigqKioqKVxuXG5sZXQgcHJlcGVuZF9kZXJpdiA9IExpc3QuZm9sZF9yaWdodCAoZnVuIChzLCB4KSBsIC0+IENzZXQucHJlcGVuZCBzIHggbClcblxubGV0IHJlYyByZXN0cmljdCBzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChzJywgeCcpIDo6IHJlbSAtPlxuICAgIGxldCBzJycgPSBDc2V0LmludGVyIHMgcycgaW5cbiAgICBpZiBDc2V0LmlzX2VtcHR5IHMnJ1xuICAgIHRoZW4gcmVzdHJpY3QgcyByZW1cbiAgICBlbHNlIChzJycsIHgnKSA6OiByZXN0cmljdCBzIHJlbVxuXG5sZXQgcmVjIHJlbW92ZV9tYXJrcyBiIGUgcmVtID1cbiAgaWYgYiA+IGUgdGhlbiByZW0gZWxzZSByZW1vdmVfbWFya3MgYiAoZSAtIDEpICgoZSwgLTIpIDo6IHJlbSlcblxubGV0IHJlYyBwcmVwZW5kX21hcmtzX2V4cHIgbSA9IGZ1bmN0aW9uXG4gIHwgRS5UU2VxIChsLCBlJywgcykgLT4gRS5UU2VxIChwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0gbCwgZScsIHMpXG4gIHwgRS5URXhwIChtJywgZScpICAgLT4gRS5URXhwIChNYXJrcy5tZXJnZSBtIG0nLCBlJylcbiAgfCBFLlRNYXRjaCBtJyAgICAgICAtPiBFLlRNYXRjaCAoTWFya3MubWVyZ2UgbSBtJylcblxuYW5kIHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSBsID1cbiAgTGlzdC5tYXAgKHByZXBlbmRfbWFya3NfZXhwciBtKSBsXG5cbmxldCBwcmVwZW5kX21hcmtzIG0gPVxuICBMaXN0Lm1hcCAoZnVuIChzLCB4KSAtPiAocywgcHJlcGVuZF9tYXJrc19leHByX2xzdCBtIHgpKVxuXG5sZXQgcmVjIGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHggcmVtID1cbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICB8IENzdCBzIC0+XG4gICAgQ3NldC5wcmVwZW5kIHMgW0UudGV4cCBtYXJrcyBlcHNfZXhwcl0gcmVtXG4gIHwgQWx0IGwgLT5cbiAgICBkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBsIHJlbVxuICB8IFNlcSAoa2luZCwgeSwgeikgLT5cbiAgICBsZXQgeScgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHknIHogcmVtXG4gIHwgUmVwIChyZXBfa2luZCwga2luZCwgeSkgLT5cbiAgICBsZXQgeScgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB6KSByZW0gLT5cbiAgICAgICAgIGxldCAoeicsIG1hcmtzJykgPVxuICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgIGZpcnN0XG4gICAgICAgICAgICAgICAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSlcbiAgICAgICAgICAgICAgIHpcbiAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIE5vbmUgICAgICAgIC0+ICh6LCBtYXJrcylcbiAgICAgICAgICAgfCBTb21lIG1hcmtzJyAtPiAocmVtb3ZlX21hdGNoZXMgeiwgbWFya3MnKVxuICAgICAgICAgaW5cbiAgICAgICAgIENzZXQucHJlcGVuZCBzXG4gICAgICAgICAgIChtYXRjaCByZXBfa2luZCB3aXRoXG4gICAgICAgICAgICAgIGBHcmVlZHkgICAgIC0+IEUudHNlcSBraW5kIHonIHggW0UuVE1hdGNoIG1hcmtzJ11cbiAgICAgICAgICAgIHwgYE5vbl9ncmVlZHkgLT4gRS5UTWF0Y2ggbWFya3MgOjogRS50c2VxIGtpbmQgeicgeCBbXSlcbiAgICAgICAgICAgcmVtKVxuICAgICAgeScgcmVtXG4gIHwgRXBzIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IE1hcmsgaSAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKChpLCAtMSkgOjogTGlzdC5yZW1vdmVfYXNzcSBpIG1hcmtzLk1hcmtzLm1hcmtzKX1dIHJlbVxuICB8IFBtYXJrIF8gLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFyc1xuICAgICAgW0UuVE1hdGNoIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKHJlbW92ZV9tYXJrcyBiIGUgKGZpbHRlcl9tYXJrcyBiIGUgbWFya3MpLk1hcmtzLm1hcmtzKX1dIHJlbVxuICB8IEJlZm9yZSBjYXQnIC0+XG4gICAgQ3NldC5wcmVwZW5kIChMaXN0LmFzc3EgY2F0JyBjYXRlZ29yaWVzKSBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IEFmdGVyIGNhdCcgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgY2F0IGNhdCcgdGhlbiBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtIGVsc2UgcmVtXG5cbmFuZCBkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT4gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeVxuICAgICAgICAgICAgICAgIChkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCByIHJlbSlcblxuYW5kIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5IHogcmVtID1cbiAgaWZcbiAgICBMaXN0LmV4aXN0c1xuICAgICAgKGZ1biAoX3MsIHhsKSAtPlxuICAgICAgICAgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIEUuVE1hdGNoIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIHhsKVxuICAgICAgeVxuICB0aGVuXG4gICAgbGV0IHonID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBNYXJrcy5lbXB0eSBjYXQgeiBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeSkgcmVtIC0+XG4gICAgICAgICBtYXRjaFxuICAgICAgICAgICBmaXJzdCAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSlcbiAgICAgICAgICAgICB5XG4gICAgICAgICB3aXRoXG4gICAgICAgICAgIE5vbmUgLT5cbiAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHkgeiBbXSkgcmVtXG4gICAgICAgICB8IFNvbWUgbWFya3MgLT5cbiAgICAgICAgICAgbGV0IHonJyA9IHByZXBlbmRfbWFya3MgbWFya3MgeicgaW5cbiAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgICAgYExvbmdlc3QgLT5cbiAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogW10pIChcbiAgICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSByZW0pXG4gICAgICAgICAgIHwgYFNob3J0ZXN0IC0+XG4gICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIChcbiAgICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiBbXSkgcmVtKVxuICAgICAgICAgICB8IGBGaXJzdCAtPlxuICAgICAgICAgICAgIGxldCAoeScsIHknJykgPSBzcGxpdF9hdF9tYXRjaCB5IGluXG4gICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHknIHogW10pIChcbiAgICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSAoXG4gICAgICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5JycgeiBbXSkgcmVtKSkpXG4gICAgICB5IHJlbVxuICBlbHNlXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB4bCkgcmVtIC0+IENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB4bCB6IFtdKSByZW0pIHkgcmVtXG5cbmxldCByZWMgZGVyaXZfMyBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeCByZW0gPVxuICBtYXRjaCB4IHdpdGhcbiAgICBFLlRTZXEgKHksIHosIGtpbmQpIC0+XG4gICAgbGV0IHknID0gZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5JyB6IHJlbVxuICB8IEUuVEV4cCAobWFya3MsIGUpIC0+XG4gICAgZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgZSByZW1cbiAgfCBFLlRNYXRjaCBfIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbeF0gcmVtXG5cbmFuZCBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT4gZGVyaXZfMyBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeVxuICAgICAgICAgICAgICAgIChkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCByIHJlbSlcblxubGV0IGRlcml2IHRibF9yZWYgYWxsX2NoYXJzIGNhdGVnb3JpZXMgc3QgPVxuICBsZXQgZGVyID0gZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBzdC5TdGF0ZS5jYXRlZ29yeSBzdC5TdGF0ZS5kZXNjXG4gICAgICBbKGFsbF9jaGFycywgW10pXSBpblxuICBzaW1wbF90ciAoXG4gICAgTGlzdC5mb2xkX3JpZ2h0IChmdW4gKHMsIGV4cHIpIHJlbSAtPlxuICAgICAgICBsZXQgKGV4cHInLCBfKSA9IHJlbW92ZV9kdXBsaWNhdGVzIFtdIGV4cHIgZXBzX2V4cHIgaW5cbigqXG5Gb3JtYXQuZXByaW50ZiBcIkBbPDM+QFslYUBdOiAlYSAvICVhQF1ALlwiIENzZXQucHJpbnQgcyBwcmludF9zdGF0ZSBleHByIHByaW50X3N0YXRlIGV4cHInO1xuKilcbiAgICAgICAgbGV0IGlkeCA9IGZyZWVfaW5kZXggdGJsX3JlZiBleHByJyBpblxuICAgICAgICBsZXQgZXhwcicnID0gc2V0X2lkeCBpZHggZXhwcicgaW5cbiAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IChmdW4gKGNhdCcsIHMnKSByZW0gLT5cbiAgICAgICAgICAgIGxldCBzJycgPSBDc2V0LmludGVyIHMgcycgaW5cbiAgICAgICAgICAgIGlmIENzZXQuaXNfZW1wdHkgcycnXG4gICAgICAgICAgICB0aGVuIHJlbVxuICAgICAgICAgICAgZWxzZSAocycnLCBTdGF0ZS5tayBpZHggY2F0JyBleHByJycpIDo6IHJlbSlcbiAgICAgICAgICBjYXRlZ29yaWVzIHJlbSkgZGVyIFtdKVxuXG4oKioqKilcblxubGV0IGZsYXR0ZW5fbWF0Y2ggbSA9XG4gIGxldCBtYSA9IExpc3QuZm9sZF9sZWZ0IChmdW4gbWEgKGksIF8pIC0+IG1heCBtYSBpKSAoLTEpIG0gaW5cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgKG1hICsgMSkgKC0xKSBpblxuICBMaXN0Lml0ZXIgKGZ1biAoaSwgdikgLT4gcmVzLihpKSA8LSB2KSBtO1xuICByZXNcblxubGV0IHN0YXR1cyBzID1cbiAgbWF0Y2ggcy5TdGF0ZS5zdGF0dXMgd2l0aFxuICAgIFNvbWUgc3QgLT5cbiAgICBzdFxuICB8IE5vbmUgLT5cbiAgICBsZXQgc3QgPVxuICAgICAgbWF0Y2ggcy5TdGF0ZS5kZXNjIHdpdGhcbiAgICAgICAgW10gICAgICAgICAgICAgIC0+IEZhaWxlZFxuICAgICAgfCBFLlRNYXRjaCBtIDo6IF8gLT4gTWF0Y2ggKGZsYXR0ZW5fbWF0Y2ggbS5NYXJrcy5tYXJrcywgbS5NYXJrcy5wbWFya3MpXG4gICAgICB8IF8gICAgICAgICAgICAgICAtPiBSdW5uaW5nXG4gICAgaW5cbiAgICBzLlN0YXRlLnN0YXR1cyA8LSBTb21lIHN0O1xuICAgIHN0XG4iLCIoKiBJbiByZWFsaXR5LCB0aGlzIGNhbiByZWFsbHkgYmUgcmVwcmVzZW50ZWQgYXMgYSBib29sIGFycmF5LlxuXG4gICBUaGUgcmVwcmVzZW50YXRpb24gaXMgYmVzdCB0aG91Z2h0IG9mIGFzIGEgbGlzdCBvZiBhbGwgY2hhcnMgYWxvbmcgd2l0aCBhXG4gICBmbGFnOlxuXG4gICAoYSwgMCksIChiLCAxKSwgKGMsIDApLCAoZCwgMCksIC4uLlxuXG4gICBjaGFyYWN0ZXJzIGJlbG9uZ2luZyB0byB0aGUgc2FtZSBjb2xvciBhcmUgcmVwcmVzZW50ZWQgYnkgc2VxdW5jZXMgb2ZcbiAgIGNoYXJhY3RlcnMgd2l0aCB0aGUgZmxhZyBzZXQgdG8gMC5cbiopXG5cbnR5cGUgdCA9IEJ5dGVzLnRcblxubGV0IG1ha2UgKCkgPSBCeXRlcy5tYWtlIDI1NyAnXFwwMDAnXG5cbmxldCBmbGF0dGVuIGNtID1cbiAgbGV0IGMgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGxldCBjb2xvcl9yZXByID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBsZXQgdiA9IHJlZiAwIGluXG4gIEJ5dGVzLnNldCBjIDAgJ1xcMDAwJztcbiAgQnl0ZXMuc2V0IGNvbG9yX3JlcHIgMCAnXFwwMDAnO1xuICBmb3IgaSA9IDEgdG8gMjU1IGRvXG4gICAgaWYgQnl0ZXMuZ2V0IGNtIGkgPD4gJ1xcMDAwJyB0aGVuIGluY3IgdjtcbiAgICBCeXRlcy5zZXQgYyBpIChDaGFyLmNociAhdik7XG4gICAgQnl0ZXMuc2V0IGNvbG9yX3JlcHIgIXYgKENoYXIuY2hyIGkpXG4gIGRvbmU7XG4gIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGMsIEJ5dGVzLnN1Yl9zdHJpbmcgY29sb3JfcmVwciAwICghdiArIDEpLCAhdiArIDEpXG5cbigqIG1hcmsgYWxsIHRoZSBlbmRwb2ludHMgb2YgdGhlIGludGVydmFscyBvZiB0aGUgY2hhciBzZXQgd2l0aCB0aGUgMSBieXRlICopXG5sZXQgc3BsaXQgcyBjbSA9XG4gIENzZXQuaXRlciBzIH5mOihmdW4gaSBqIC0+XG4gICAgICBCeXRlcy5zZXQgY20gaSAnXFwwMDEnO1xuICAgICAgQnl0ZXMuc2V0IGNtIChqICsgMSkgJ1xcMDAxJztcbiAgICApXG4iLCIoKiBSZXN1bHQgb2YgYSBzdWNjZXNzZnVsIG1hdGNoLiAqKVxudHlwZSB0ID1cbiAgeyBzIDogc3RyaW5nXG4gIDsgbWFya3MgOiBBdXRvbWF0YS5tYXJrX2luZm9zXG4gIDsgcG1hcmtzIDogUG1hcmsuU2V0LnRcbiAgOyBncG9zIDogaW50IGFycmF5XG4gIDsgZ2NvdW50IDogaW50XG4gIH1cblxubGV0IG9mZnNldCB0IGkgPVxuICBpZiAyICogaSArIDEgPj0gQXJyYXkubGVuZ3RoIHQubWFya3MgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICBpZiBtMSA9IC0xIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gIChwMSwgcDIpXG5cbmxldCBnZXQgdCBpID1cbiAgbGV0IChwMSwgcDIpID0gb2Zmc2V0IHQgaSBpblxuICBTdHJpbmcuc3ViIHQucyBwMSAocDIgLSBwMSlcblxubGV0IHN0YXJ0IHN1YnMgaSA9IGZzdCAob2Zmc2V0IHN1YnMgaSlcblxubGV0IHN0b3Agc3VicyBpID0gc25kIChvZmZzZXQgc3VicyBpKVxuXG5sZXQgdGVzdCB0IGkgPVxuICBpZiAyICogaSA+PSBBcnJheS5sZW5ndGggdC5tYXJrcyB0aGVuXG4gICAgZmFsc2VcbiAgZWxzZVxuICAgIGxldCBpZHggPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZHggPD4gLTFcblxubGV0IGdldF9vcHQgdCBpID1cbiAgaWYgdGVzdCB0IGlcbiAgdGhlbiBTb21lIChnZXQgdCBpKVxuICBlbHNlIE5vbmVcblxubGV0IGR1bW15X29mZnNldCA9ICgtMSwgLTEpXG5cbmxldCBhbGxfb2Zmc2V0IHQgPVxuICBsZXQgcmVzID0gQXJyYXkubWFrZSB0Lmdjb3VudCBkdW1teV9vZmZzZXQgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0Lm1hcmtzIC8gMiAtIDEgZG9cbiAgICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZiBtMSA8PiAtMSB0aGVuIGJlZ2luXG4gICAgICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICAgICAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAgICAgcmVzLihpKSA8LSAocDEsIHAyKVxuICAgIGVuZFxuICBkb25lO1xuICByZXNcblxubGV0IGR1bW15X3N0cmluZyA9IFwiXCJcblxubGV0IGFsbCB0ID1cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgdC5nY291bnQgZHVtbXlfc3RyaW5nIGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC5tYXJrcyAvIDIgLSAxIGRvXG4gICAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWYgbTEgPD4gLTEgdGhlbiBiZWdpblxuICAgICAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgICAgIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgICAgIHJlcy4oaSkgPC0gU3RyaW5nLnN1YiB0LnMgcDEgKHAyIC0gcDEpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgcHAgZm10IHQgPVxuICBsZXQgbWF0Y2hlcyA9XG4gICAgbGV0IG9mZnNldHMgPSBhbGxfb2Zmc2V0IHQgaW5cbiAgICBsZXQgc3RycyA9IGFsbCB0IGluXG4gICAgQXJyYXkudG9fbGlzdCAoXG4gICAgICBBcnJheS5pbml0IChBcnJheS5sZW5ndGggc3RycykgKGZ1biBpIC0+IHN0cnMuKGkpLCBvZmZzZXRzLihpKSlcbiAgICApIGluXG4gIGxldCBvcGVuIEZtdCBpblxuICBsZXQgcHBfbWF0Y2ggZm10IChzdHIsIChzdGFydCwgc3RvcCkpID1cbiAgICBmcHJpbnRmIGZtdCBcIkBbKCVzICglZCAlZCkpQF1cIiBzdHIgc3RhcnQgc3RvcCBpblxuICBzZXhwIGZtdCBcIkdyb3VwXCIgKGxpc3QgcHBfbWF0Y2gpIG1hdGNoZXNcblxubGV0IG5iX2dyb3VwcyB0ID0gdC5nY291bnRcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbmxldCByZWMgaXRlciBuIGYgdiA9IGlmIG4gPSAwIHRoZW4gdiBlbHNlIGl0ZXIgKG4gLSAxKSBmIChmIHYpXG5cbigqKioqKVxuXG5sZXQgdW5rbm93biA9IC0yXG5sZXQgYnJlYWsgPSAtM1xuXG50eXBlIG1hdGNoX2luZm8gPVxuICB8IE1hdGNoIG9mIEdyb3VwLnRcbiAgfCBGYWlsZWRcbiAgfCBSdW5uaW5nIG9mIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSA6IGludCB9XG5cbnR5cGUgc3RhdGUgPVxuICB7IGlkeCA6IGludDtcbiAgICAoKiBJbmRleCBvZiB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgcG9zaXRpb24gdGFibGUuXG4gICAgICAgTm90IHlldCBjb21wdXRlZCB0cmFuc2l0aW9ucyBwb2ludCB0byBhIGR1bW15IHN0YXRlIHdoZXJlXG4gICAgICAgW2lkeF0gaXMgc2V0IHRvIFt1bmtub3duXTtcbiAgICAgICBJZiBbaWR4XSBpcyBzZXQgdG8gW2JyZWFrXSBmb3Igc3RhdGVzIHRoYXQgZWl0aGVyIGFsd2F5c1xuICAgICAgIHN1Y2NlZWQgb3IgYWx3YXlzIGZhaWwuICopXG4gICAgcmVhbF9pZHggOiBpbnQ7XG4gICAgKCogVGhlIHJlYWwgaW5kZXgsIGluIGNhc2UgW2lkeF0gaXMgc2V0IHRvIFticmVha10gKilcbiAgICBuZXh0IDogc3RhdGUgYXJyYXk7XG4gICAgKCogVHJhbnNpdGlvbiB0YWJsZSwgaW5kZXhlZCBieSBjb2xvciAqKVxuICAgIG11dGFibGUgZmluYWwgOlxuICAgICAgKENhdGVnb3J5LnQgKlxuICAgICAgIChBdXRvbWF0YS5pZHggKiBBdXRvbWF0YS5zdGF0dXMpKSBsaXN0O1xuICAgICgqIE1hcHBpbmcgZnJvbSB0aGUgY2F0ZWdvcnkgb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvXG4gICAgICAgLSB0aGUgaW5kZXggd2hlcmUgdGhlIG5leHQgcG9zaXRpb24gc2hvdWxkIGJlIHNhdmVkXG4gICAgICAgLSBwb3NzaWJseSwgdGhlIGxpc3Qgb2YgbWFya3MgKGFuZCB0aGUgY29ycmVzcG9uZGluZyBpbmRpY2VzKVxuICAgICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgYmVzdCBtYXRjaCAqKVxuICAgIGRlc2MgOiBBdXRvbWF0YS5TdGF0ZS50XG4gICAgKCogRGVzY3JpcHRpb24gb2YgdGhpcyBzdGF0ZSBvZiB0aGUgYXV0b21hdGEgKikgfVxuXG4oKiBBdXRvbWF0YSAoY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uKSAqKVxudHlwZSByZSA9XG4gIHsgaW5pdGlhbCA6IEF1dG9tYXRhLmV4cHI7XG4gICAgKCogVGhlIHdob2xlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKVxuICAgIG11dGFibGUgaW5pdGlhbF9zdGF0ZXMgOiAoQ2F0ZWdvcnkudCAqIHN0YXRlKSBsaXN0O1xuICAgICgqIEluaXRpYWwgc3RhdGVzLCBpbmRleGVkIGJ5IGluaXRpYWwgY2F0ZWdvcnkgKilcbiAgICBjb2xvcnMgOiBzdHJpbmc7XG4gICAgKCogQ29sb3IgdGFibGUgKilcbiAgICBjb2xvcl9yZXByIDogc3RyaW5nO1xuICAgICgqIFRhYmxlIGZyb20gY29sb3JzIHRvIG9uZSBjaGFyYWN0ZXIgb2YgdGhpcyBjb2xvciAqKVxuICAgIG5jb2xvciA6IGludDtcbiAgICAoKiBOdW1iZXIgb2YgY29sb3JzLiAqKVxuICAgIGxubCA6IGludDtcbiAgICAoKiBDb2xvciBvZiB0aGUgbGFzdCBuZXdsaW5lLiAtMSBpZiB1bm5lY2Vzc2FyeSAqKVxuICAgIHRibCA6IEF1dG9tYXRhLndvcmtpbmdfYXJlYTtcbiAgICAoKiBUZW1wb3JhcnkgdGFibGUgdXNlZCB0byBjb21wdXRlIHRoZSBmaXJzdCBhdmFpbGFibGUgaW5kZXhcbiAgICAgICB3aGVuIGNvbXB1dGluZyBhIG5ldyBzdGF0ZSAqKVxuICAgIHN0YXRlcyA6IHN0YXRlIEF1dG9tYXRhLlN0YXRlLlRhYmxlLnQ7XG4gICAgKCogU3RhdGVzIG9mIHRoZSBkZXRlcm1pbmlzdGljIGF1dG9tYXRhICopXG4gICAgZ3JvdXBfbmFtZXMgOiAoc3RyaW5nICogaW50KSBsaXN0O1xuICAgICgqIE5hbWVkIGdyb3VwcyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uICopXG4gICAgZ3JvdXBfY291bnQgOiBpbnRcbiAgICAoKiBOdW1iZXIgb2YgZ3JvdXBzIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gKikgfVxuXG5sZXQgcHBfcmUgY2ggcmUgPSBBdXRvbWF0YS5wcCBjaCByZS5pbml0aWFsXG5cbmxldCBwcmludF9yZSA9IHBwX3JlXG5cbmxldCBncm91cF9jb3VudCByZSA9IHJlLmdyb3VwX2NvdW50XG5cbmxldCBncm91cF9uYW1lcyByZSA9IHJlLmdyb3VwX25hbWVzXG5cbigqIEluZm9ybWF0aW9uIHVzZWQgZHVyaW5nIG1hdGNoaW5nICopXG50eXBlIGluZm8gPVxuICB7IHJlIDogcmU7XG4gICAgKCogVGhlIGF1dG9tYXRhICopXG4gICAgY29sb3JzIDogc3RyaW5nO1xuICAgICgqIENvbG9yIHRhYmxlIChbeC5jb2xvcnMgPSB4LnJlLmNvbG9yc10pXG4gICAgICAgU2hvcnRjdXQgdXNlZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyAqKVxuICAgIG11dGFibGUgcG9zaXRpb25zIDogaW50IGFycmF5O1xuICAgICgqIEFycmF5IG9mIG1hcmsgcG9zaXRpb25zXG4gICAgICAgVGhlIG1hcmsgYXJlIG9mZiBieSBvbmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKilcbiAgICBwb3MgOiBpbnQ7XG4gICAgKCogUG9zaXRpb24gd2hlcmUgdGhlIG1hdGNoIGlzIHN0YXJ0ZWQgKilcbiAgICBsYXN0IDogaW50XG4gICAgKCogUG9zaXRpb24gd2hlcmUgdGhlIG1hdGNoIHNob3VsZCBzdG9wICopIH1cblxuXG4oKioqKilcblxubGV0IGNhdGVnb3J5IHJlIH5jb2xvciA9XG4gIGlmIGNvbG9yID0gLTEgdGhlblxuICAgIENhdGVnb3J5LmluZXhpc3RhbnRcbiAgICAoKiBTcGVjaWFsIGNhdGVnb3J5IGZvciB0aGUgbGFzdCBuZXdsaW5lICopXG4gIGVsc2UgaWYgY29sb3IgPSByZS5sbmwgdGhlblxuICAgIENhdGVnb3J5LihsYXN0bmV3bGluZSArKyBuZXdsaW5lICsrIG5vdF9sZXR0ZXIpXG4gIGVsc2VcbiAgICBDYXRlZ29yeS5mcm9tX2NoYXIgKHJlLmNvbG9yX3JlcHIuW2NvbG9yXSlcblxuKCoqKiopXG5cbmxldCBkdW1teV9uZXh0ID0gW3x8XVxuXG5sZXQgdW5rbm93bl9zdGF0ZSA9XG4gIHsgaWR4ID0gdW5rbm93bjsgcmVhbF9pZHggPSAwO1xuICAgIG5leHQgPSBkdW1teV9uZXh0OyBmaW5hbCA9IFtdO1xuICAgIGRlc2MgPSBBdXRvbWF0YS5TdGF0ZS5kdW1teSB9XG5cbmxldCBta19zdGF0ZSBuY29sIGRlc2MgPVxuICBsZXQgYnJlYWtfc3RhdGUgPVxuICAgIG1hdGNoIEF1dG9tYXRhLnN0YXR1cyBkZXNjIHdpdGhcbiAgICB8IEF1dG9tYXRhLlJ1bm5pbmcgLT4gZmFsc2VcbiAgICB8IEF1dG9tYXRhLkZhaWxlZFxuICAgIHwgQXV0b21hdGEuTWF0Y2ggXyAtPiB0cnVlXG4gIGluXG4gIHsgaWR4ID0gaWYgYnJlYWtfc3RhdGUgdGhlbiBicmVhayBlbHNlIGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4O1xuICAgIHJlYWxfaWR4ID0gZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHg7XG4gICAgbmV4dCA9IGlmIGJyZWFrX3N0YXRlIHRoZW4gZHVtbXlfbmV4dCBlbHNlIEFycmF5Lm1ha2UgbmNvbCB1bmtub3duX3N0YXRlO1xuICAgIGZpbmFsID0gW107XG4gICAgZGVzYyB9XG5cbmxldCBmaW5kX3N0YXRlIHJlIGRlc2MgPVxuICB0cnlcbiAgICBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5maW5kIHJlLnN0YXRlcyBkZXNjXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0ID0gbWtfc3RhdGUgcmUubmNvbG9yIGRlc2MgaW5cbiAgICBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5hZGQgcmUuc3RhdGVzIGRlc2Mgc3Q7XG4gICAgc3RcblxuKCoqKiogTWF0Y2ggd2l0aCBtYXJrcyAqKioqKVxuXG5sZXQgZGVsdGEgaW5mbyBjYXQgfmNvbG9yIHN0ID1cbiAgbGV0IGRlc2MgPSBBdXRvbWF0YS5kZWx0YSBpbmZvLnJlLnRibCBjYXQgY29sb3Igc3QuZGVzYyBpblxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGluZm8ucG9zaXRpb25zIGluXG4gIGlmIGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4ID0gbGVuICYmIGxlbiA+IDAgdGhlbiBiZWdpblxuICAgIGxldCBwb3MgPSBpbmZvLnBvc2l0aW9ucyBpblxuICAgIGluZm8ucG9zaXRpb25zIDwtIEFycmF5Lm1ha2UgKDIgKiBsZW4pIDA7XG4gICAgQXJyYXkuYmxpdCBwb3MgMCBpbmZvLnBvc2l0aW9ucyAwIGxlblxuICBlbmQ7XG4gIGRlc2NcblxubGV0IHZhbGlkYXRlIGluZm8gKHM6c3RyaW5nKSB+cG9zIHN0ID1cbiAgbGV0IGNvbG9yID0gQ2hhci5jb2RlIChpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICBsZXQgY2F0ID0gY2F0ZWdvcnkgaW5mby5yZSB+Y29sb3IgaW5cbiAgbGV0IGRlc2MnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yIHN0IGluXG4gIGxldCBzdCcgPSBmaW5kX3N0YXRlIGluZm8ucmUgZGVzYycgaW5cbiAgc3QubmV4dC4oY29sb3IpIDwtIHN0J1xuXG5sZXQgcmVjIGxvb3AgaW5mbyBzIH5wb3Mgc3QgPVxuICBpZiBwb3MgPCBpbmZvLmxhc3QgdGhlblxuICAgIGxldCBzdCcgPSBzdC5uZXh0LihDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgICBsZXQgaWR4ID0gc3QnLmlkeCBpblxuICAgIGlmIGlkeCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucG9zaXRpb25zLihpZHgpIDwtIHBvcztcbiAgICAgIGxvb3AgaW5mbyBzIH5wb3M6KHBvcyArIDEpIHN0J1xuICAgIGVuZCBlbHNlIGlmIGlkeCA9IGJyZWFrIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucG9zaXRpb25zLihzdCcucmVhbF9pZHgpIDwtIHBvcztcbiAgICAgIHN0J1xuICAgIGVuZCBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICAgIHZhbGlkYXRlIGluZm8gcyB+cG9zIHN0O1xuICAgICAgbG9vcCBpbmZvIHMgfnBvcyBzdFxuICAgIGVuZFxuICBlbHNlXG4gICAgc3RcblxubGV0IHJlYyBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3Qgc3QgPVxuICBpZiBwb3MgPCBsYXN0IHRoZW5cbiAgICBsZXQgc3QnID0gc3QubmV4dC4oQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gICAgaWYgc3QnLmlkeCA+PSAwIHRoZW5cbiAgICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvczoocG9zICsgMSkgfmxhc3Qgc3QnXG4gICAgZWxzZSBpZiBzdCcuaWR4ID0gYnJlYWsgdGhlblxuICAgICAgc3QnXG4gICAgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgICB2YWxpZGF0ZSBpbmZvIHMgfnBvcyBzdDtcbiAgICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBzdFxuICAgIGVuZFxuICBlbHNlXG4gICAgc3RcblxubGV0IGZpbmFsIGluZm8gc3QgY2F0ID1cbiAgdHJ5XG4gICAgTGlzdC5hc3NxIGNhdCBzdC5maW5hbFxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCcgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3I6KC0xKSBzdCBpblxuICAgIGxldCByZXMgPSAoc3QnLkF1dG9tYXRhLlN0YXRlLmlkeCwgQXV0b21hdGEuc3RhdHVzIHN0JykgaW5cbiAgICBzdC5maW5hbCA8LSAoY2F0LCByZXMpIDo6IHN0LmZpbmFsO1xuICAgIHJlc1xuXG5sZXQgZmluZF9pbml0aWFsX3N0YXRlIHJlIGNhdCA9XG4gIHRyeVxuICAgIExpc3QuYXNzcSBjYXQgcmUuaW5pdGlhbF9zdGF0ZXNcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QgPSBmaW5kX3N0YXRlIHJlIChBdXRvbWF0YS5TdGF0ZS5jcmVhdGUgY2F0IHJlLmluaXRpYWwpIGluXG4gICAgcmUuaW5pdGlhbF9zdGF0ZXMgPC0gKGNhdCwgc3QpIDo6IHJlLmluaXRpYWxfc3RhdGVzO1xuICAgIHN0XG5cbmxldCBnZXRfY29sb3IgcmUgKHM6c3RyaW5nKSBwb3MgPVxuICBpZiBwb3MgPCAwIHRoZW5cbiAgICAtMVxuICBlbHNlXG4gICAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBpZiBwb3MgPj0gc2xlbiB0aGVuXG4gICAgICAtMVxuICAgIGVsc2UgaWYgcG9zID0gc2xlbiAtIDEgJiYgcmUubG5sIDw+IC0xICYmIHMuW3Bvc10gPSAnXFxuJyB0aGVuXG4gICAgICAoKiBTcGVjaWFsIGNhc2UgZm9yIHRoZSBsYXN0IG5ld2xpbmUgKilcbiAgICAgIHJlLmxubFxuICAgIGVsc2VcbiAgICAgIENoYXIuY29kZSByZS5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXVxuXG5sZXQgcmVjIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zIHN0IH5ncm91cHMgPVxuICBsZXQgc3QnID0gc3QubmV4dC4oaW5mby5yZS5sbmwpIGluXG4gIGlmIHN0Jy5pZHggPj0gMCB0aGVuIGJlZ2luXG4gICAgaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKHN0Jy5pZHgpIDwtIHBvcztcbiAgICBzdCdcbiAgZW5kIGVsc2UgaWYgc3QnLmlkeCA9IGJyZWFrIHRoZW4gYmVnaW5cbiAgICBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oc3QnLnJlYWxfaWR4KSA8LSBwb3M7XG4gICAgc3QnXG4gIGVuZCBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICBsZXQgY29sb3IgPSBpbmZvLnJlLmxubCBpblxuICAgIGxldCByZWFsX2MgPSBDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSAnXFxuJ10gaW5cbiAgICBsZXQgY2F0ID0gY2F0ZWdvcnkgaW5mby5yZSB+Y29sb3IgaW5cbiAgICBsZXQgZGVzYycgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3I6cmVhbF9jIHN0IGluXG4gICAgbGV0IHN0JyA9IGZpbmRfc3RhdGUgaW5mby5yZSBkZXNjJyBpblxuICAgIHN0Lm5leHQuKGNvbG9yKSA8LSBzdCc7XG4gICAgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3Mgc3Qgfmdyb3Vwc1xuICBlbmRcblxubGV0IHJlYyBzY2FuX3N0ciBpbmZvIChzOnN0cmluZykgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzID1cbiAgbGV0IHBvcyA9IGluZm8ucG9zIGluXG4gIGxldCBsYXN0ID0gaW5mby5sYXN0IGluXG4gIGlmIChsYXN0ID0gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAmJiBpbmZvLnJlLmxubCA8PiAtMVxuICAgICAgJiYgbGFzdCA+IHBvc1xuICAgICAgJiYgU3RyaW5nLmdldCBzIChsYXN0IC0gMSkgPSAnXFxuJylcbiAgdGhlbiBiZWdpblxuICAgIGxldCBpbmZvID0geyBpbmZvIHdpdGggbGFzdCA9IGxhc3QgLSAxIH0gaW5cbiAgICBsZXQgc3QgPSBzY2FuX3N0ciBpbmZvIHMgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzIGluXG4gICAgaWYgc3QuaWR4ID0gYnJlYWsgdGhlblxuICAgICAgc3RcbiAgICBlbHNlXG4gICAgICBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvczoobGFzdCAtIDEpIHN0IH5ncm91cHNcbiAgZW5kIGVsc2UgaWYgZ3JvdXBzIHRoZW5cbiAgICBsb29wIGluZm8gcyB+cG9zIGluaXRpYWxfc3RhdGVcbiAgZWxzZVxuICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBpbml0aWFsX3N0YXRlXG5cbigqIFRoaXMgZnVuY3Rpb24gYWRkcyBhIGZpbmFsIGJvdW5kYXJ5IGNoZWNrIG9uIHRoZSBpbnB1dC5cbiAgIFRoaXMgaXMgdXNlZnVsIHRvIGluZGljYXRlIHRoYXQgdGhlIG91dHB1dCBmYWlsZWQgYmVjYXVzZVxuICAgb2YgaW5zdWZmaWNpZW50IGlucHV0LCBvciB0byB2ZXJpZnkgdGhhdCB0aGUgb3V0cHV0IGFjdHVhbGx5XG4gICBtYXRjaGVzIGZvciByZWdleCB0aGF0IGhhdmUgYm91bmRhcnkgY29uZGl0aW9ucyB3aXRoIHJlc3BlY3RcbiAgIHRvIHRoZSBpbnB1dCBzdHJpbmcuXG4gKilcbmxldCBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzID1cbiAgbGV0IGZpbmFsX2NhdCA9XG4gICAgaWYgbGFzdCA9IHNsZW4gdGhlblxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBpbmV4aXN0YW50KVxuICAgIGVsc2VcbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgY2F0ZWdvcnkgcmUgfmNvbG9yOihnZXRfY29sb3IgcmUgcyBsYXN0KSlcbiAgaW5cbiAgbGV0IChpZHgsIHJlcykgPSBmaW5hbCBpbmZvIHN0IGZpbmFsX2NhdCBpblxuICAobWF0Y2ggZ3JvdXBzLCByZXMgd2l0aFxuICB8IHRydWUsIE1hdGNoIF8gLT4gaW5mby5wb3NpdGlvbnMuKGlkeCkgPC0gbGFzdFxuICB8IF8gLT4gKCkpO1xuICByZXNcblxubGV0IG1hdGNoX3N0ciB+Z3JvdXBzIH5wYXJ0aWFsIHJlIHMgfnBvcyB+bGVuID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGxhc3QgPSBpZiBsZW4gPSAtMSB0aGVuIHNsZW4gZWxzZSBwb3MgKyBsZW4gaW5cbiAgbGV0IGluZm8gPVxuICAgIHsgcmUgOyBjb2xvcnMgPSByZS5jb2xvcnM7IHBvcyA7IGxhc3RcbiAgICA7IHBvc2l0aW9ucyA9XG4gICAgICAgIGlmIGdyb3VwcyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IG4gPSBBdXRvbWF0YS5pbmRleF9jb3VudCByZS50YmwgKyAxIGluXG4gICAgICAgICAgaWYgbiA8PSAxMCB0aGVuXG4gICAgICAgICAgICBbfDA7MDswOzA7MDswOzA7MDswOzB8XVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEFycmF5Lm1ha2UgbiAwXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgW3x8XSB9XG4gIGluXG4gIGxldCBpbml0aWFsX2NhdCA9XG4gICAgaWYgcG9zID0gMCB0aGVuXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGluZXhpc3RhbnQpXG4gICAgZWxzZVxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeVxuICAgICAgICAgICAgICAgICsrIGNhdGVnb3J5IHJlIH5jb2xvcjooZ2V0X2NvbG9yIHJlIHMgKHBvcyAtIDEpKSlcbiAgaW5cbiAgbGV0IGluaXRpYWxfc3RhdGUgPSBmaW5kX2luaXRpYWxfc3RhdGUgcmUgaW5pdGlhbF9jYXQgaW5cbiAgbGV0IHN0ID0gc2Nhbl9zdHIgaW5mbyBzIGluaXRpYWxfc3RhdGUgfmdyb3VwcyBpblxuICBsZXQgcmVzID1cbiAgICBpZiBzdC5pZHggPSBicmVhayB8fCAocGFydGlhbCAmJiBub3QgZ3JvdXBzKSB0aGVuXG4gICAgICBBdXRvbWF0YS5zdGF0dXMgc3QuZGVzY1xuICAgIGVsc2UgaWYgcGFydGlhbCAmJiBncm91cHMgdGhlblxuICAgICAgbWF0Y2ggQXV0b21hdGEuc3RhdHVzIHN0LmRlc2Mgd2l0aFxuICAgICAgfCBNYXRjaCBfIHwgRmFpbGVkIGFzIHN0YXR1cyAtPiBzdGF0dXNcbiAgICAgIHwgUnVubmluZyAtPlxuICAgICAgICAoKiBUaGlzIGNvdWxkIGJlIGJlY2F1c2UgaXQncyBzdGlsbCBub3QgZnVsbHkgbWF0Y2hlZCwgb3IgaXRcbiAgICAgICAgICAgY291bGQgYmUgdGhhdCBiZWNhdXNlIHdlIG5lZWQgdG8gcnVuIHNwZWNpYWwgZW5kIG9mIGlucHV0XG4gICAgICAgICAgIGNoZWNrcy4gKilcbiAgICAgICAgKG1hdGNoIGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHMgd2l0aFxuICAgICAgICAgfCBNYXRjaCBfIGFzIHN0YXR1cyAtPiBzdGF0dXNcbiAgICAgICAgIHwgRmFpbGVkIHwgUnVubmluZyAtPlxuICAgICAgICAgICAoKiBBIGZhaWx1cmUgaGVyZSBqdXN0IG1lYW5zIHRoYXQgd2UgbmVlZCBtb3JlIGRhdGEsIGkuZS5cbiAgICAgICAgICAgICAgaXQncyBhIHBhcnRpYWwgbWF0Y2guICopXG4gICAgICAgICAgIFJ1bm5pbmcpXG4gICAgZWxzZSBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzXG4gIGluXG4gIG1hdGNoIHJlcyB3aXRoXG4gICAgQXV0b21hdGEuTWF0Y2ggKG1hcmtzLCBwbWFya3MpIC0+XG4gICAgTWF0Y2ggeyBzIDsgbWFya3M7IHBtYXJrcyA7IGdwb3MgPSBpbmZvLnBvc2l0aW9uczsgZ2NvdW50ID0gcmUuZ3JvdXBfY291bnR9XG4gIHwgQXV0b21hdGEuRmFpbGVkIC0+IEZhaWxlZFxuICB8IEF1dG9tYXRhLlJ1bm5pbmcgLT5cbiAgICBsZXQgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSA9IGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLigwKSBlbHNlIDAgaW5cbiAgICBSdW5uaW5nIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSB9XG5cbmxldCBta19yZSB+aW5pdGlhbCB+Y29sb3JzIH5jb2xvcl9yZXByIH5uY29sb3IgfmxubCB+Z3JvdXBfbmFtZXMgfmdyb3VwX2NvdW50ID1cbiAgeyBpbml0aWFsIDtcbiAgICBpbml0aWFsX3N0YXRlcyA9IFtdO1xuICAgIGNvbG9ycztcbiAgICBjb2xvcl9yZXByO1xuICAgIG5jb2xvcjtcbiAgICBsbmw7XG4gICAgdGJsID0gQXV0b21hdGEuY3JlYXRlX3dvcmtpbmdfYXJlYSAoKTtcbiAgICBzdGF0ZXMgPSBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5jcmVhdGUgOTc7XG4gICAgZ3JvdXBfbmFtZXM7XG4gICAgZ3JvdXBfY291bnQgfVxuXG4oKioqKiBDaGFyYWN0ZXIgc2V0cyAqKioqKVxuXG5sZXQgY3NlcSBjIGMnID0gQ3NldC5zZXEgKENoYXIuY29kZSBjKSAoQ2hhci5jb2RlIGMnKVxubGV0IGNhZGQgYyBzID0gQ3NldC5hZGQgKENoYXIuY29kZSBjKSBzXG5cbmxldCB0cmFuc19zZXQgY2FjaGUgY20gcyA9XG4gIG1hdGNoIENzZXQub25lX2NoYXIgcyB3aXRoXG4gIHwgU29tZSBpIC0+IENzZXQuY3NpbmdsZSBjbS5baV1cbiAgfCBOb25lIC0+XG4gICAgbGV0IHYgPSAoQ3NldC5oYXNoX3JlYyBzLCBzKSBpblxuICAgIHRyeVxuICAgICAgQ3NldC5DU2V0TWFwLmZpbmQgdiAhY2FjaGVcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IGwgPVxuICAgICAgICBDc2V0LmZvbGRfcmlnaHRcbiAgICAgICAgICBzXG4gICAgICAgICAgfmY6KGZ1biAoaSwgaikgbCAtPiBDc2V0LnVuaW9uIChjc2VxIGNtLltpXSBjbS5bal0pIGwpXG4gICAgICAgICAgfmluaXQ6Q3NldC5lbXB0eVxuICAgICAgaW5cbiAgICAgIGNhY2hlIDo9IENzZXQuQ1NldE1hcC5hZGQgdiBsICFjYWNoZTtcbiAgICAgIGxcblxuKCoqKiopXG5cbnR5cGUgcmVnZXhwID1cbiAgICBTZXQgb2YgQ3NldC50XG4gIHwgU2VxdWVuY2Ugb2YgcmVnZXhwIGxpc3RcbiAgfCBBbHRlcm5hdGl2ZSBvZiByZWdleHAgbGlzdFxuICB8IFJlcGVhdCBvZiByZWdleHAgKiBpbnQgKiBpbnQgb3B0aW9uXG4gIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgfCBTZW0gb2YgQXV0b21hdGEuc2VtICogcmVnZXhwXG4gIHwgU2VtX2dyZWVkeSBvZiBBdXRvbWF0YS5yZXBfa2luZCAqIHJlZ2V4cFxuICB8IEdyb3VwIG9mIHN0cmluZyBvcHRpb24gKiByZWdleHAgfCBOb19ncm91cCBvZiByZWdleHAgfCBOZXN0IG9mIHJlZ2V4cFxuICB8IENhc2Ugb2YgcmVnZXhwIHwgTm9fY2FzZSBvZiByZWdleHBcbiAgfCBJbnRlcnNlY3Rpb24gb2YgcmVnZXhwIGxpc3RcbiAgfCBDb21wbGVtZW50IG9mIHJlZ2V4cCBsaXN0XG4gIHwgRGlmZmVyZW5jZSBvZiByZWdleHAgKiByZWdleHBcbiAgfCBQbWFyayBvZiBQbWFyay50ICogcmVnZXhwXG5cbm1vZHVsZSBWaWV3ID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlZ2V4cCA9XG4gICAgICBTZXQgb2YgQ3NldC50XG4gICAgfCBTZXF1ZW5jZSBvZiByZWdleHAgbGlzdFxuICAgIHwgQWx0ZXJuYXRpdmUgb2YgcmVnZXhwIGxpc3RcbiAgICB8IFJlcGVhdCBvZiByZWdleHAgKiBpbnQgKiBpbnQgb3B0aW9uXG4gICAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gICAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gICAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICAgIHwgU2VtIG9mIEF1dG9tYXRhLnNlbSAqIHJlZ2V4cFxuICAgIHwgU2VtX2dyZWVkeSBvZiBBdXRvbWF0YS5yZXBfa2luZCAqIHJlZ2V4cFxuICAgIHwgR3JvdXAgb2Ygc3RyaW5nIG9wdGlvbiAqIHJlZ2V4cCB8IE5vX2dyb3VwIG9mIHJlZ2V4cCB8IE5lc3Qgb2YgcmVnZXhwXG4gICAgfCBDYXNlIG9mIHJlZ2V4cCB8IE5vX2Nhc2Ugb2YgcmVnZXhwXG4gICAgfCBJbnRlcnNlY3Rpb24gb2YgcmVnZXhwIGxpc3RcbiAgICB8IENvbXBsZW1lbnQgb2YgcmVnZXhwIGxpc3RcbiAgICB8IERpZmZlcmVuY2Ugb2YgcmVnZXhwICogcmVnZXhwXG4gICAgfCBQbWFyayBvZiBQbWFyay50ICogcmVnZXhwXG5cbiAgbGV0IHZpZXcgdCA9IHRcbmVuZFxuXG5sZXQgcmVjIHBwIGZtdCB0ID1cbiAgbGV0IG9wZW4gRm10IGluXG4gIGxldCB2YXIgcyByZSA9IHNleHAgZm10IHMgcHAgcmUgaW5cbiAgbGV0IHNlcSBzIHJlbCA9IHNleHAgZm10IHMgKGxpc3QgcHApIHJlbCBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXQgcyAtPiAgc2V4cCBmbXQgXCJTZXRcIiBDc2V0LnBwIHNcbiAgfCBTZXF1ZW5jZSBzcSAtPiBzZXEgXCJTZXF1ZW5jZVwiIHNxXG4gIHwgQWx0ZXJuYXRpdmUgYWx0IC0+IHNlcSBcIkFsdGVybmF0aXZlXCIgYWx0XG4gIHwgUmVwZWF0IChyZSwgc3RhcnQsIHN0b3ApIC0+XG4gICAgbGV0IHBwJyBmbXQgKCkgPSBmcHJpbnRmIGZtdCBcIiVhQCAlZCVhXCIgcHAgcmUgICBzdGFydCAgIG9wdGludCBzdG9wIGluXG4gICAgc2V4cCBmbXQgXCJSZXBlYXRcIiBwcCcgKClcbiAgfCBCZWdfb2ZfbGluZSAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2ZfbGluZVwiXG4gIHwgRW5kX29mX2xpbmUgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX2xpbmVcIlxuICB8IEJlZ19vZl93b3JkICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl93b3JkXCJcbiAgfCBFbmRfb2Zfd29yZCAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2Zfd29yZFwiXG4gIHwgTm90X2JvdW5kICAgICAgICAtPiBzdHIgZm10IFwiTm90X2JvdW5kXCJcbiAgfCBCZWdfb2Zfc3RyICAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2Zfc3RyXCJcbiAgfCBFbmRfb2Zfc3RyICAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2Zfc3RyXCJcbiAgfCBMYXN0X2VuZF9vZl9saW5lIC0+IHN0ciBmbXQgXCJMYXN0X2VuZF9vZl9saW5lXCJcbiAgfCBTdGFydCAgICAgICAgICAgIC0+IHN0ciBmbXQgXCJTdGFydFwiXG4gIHwgU3RvcCAgICAgICAgICAgICAtPiBzdHIgZm10IFwiU3RvcFwiXG4gIHwgU2VtIChzZW0sIHJlKSAgICAtPlxuICAgIHNleHAgZm10IFwiU2VtXCIgKHBhaXIgQXV0b21hdGEucHBfc2VtIHBwKSAoc2VtLCByZSlcbiAgfCBTZW1fZ3JlZWR5IChrLCByZSkgLT5cbiAgICBzZXhwIGZtdCBcIlNlbV9ncmVlZHlcIiAocGFpciBBdXRvbWF0YS5wcF9yZXBfa2luZCBwcCkgKGssIHJlKVxuICB8IEdyb3VwIChOb25lLCBjKSAgIC0+IHZhciBcIkdyb3VwXCIgY1xuICB8IEdyb3VwIChTb21lIG4sIGMpIC0+IHNleHAgZm10IFwiTmFtZWRfZ3JvdXBcIiAocGFpciBzdHIgcHApIChuLCBjKVxuICB8IE5vX2dyb3VwIGMgICAgIC0+IHZhciBcIk5vX2dyb3VwXCIgY1xuICB8IE5lc3QgYyAgICAgICAgIC0+IHZhciBcIk5lc3RcIiBjXG4gIHwgQ2FzZSBjICAgICAgICAgLT4gdmFyIFwiQ2FzZVwiIGNcbiAgfCBOb19jYXNlIGMgICAgICAtPiB2YXIgXCJOb19jYXNlXCIgY1xuICB8IEludGVyc2VjdGlvbiBjIC0+IHNlcSBcIkludGVyc2VjdGlvblwiIGNcbiAgfCBDb21wbGVtZW50IGMgICAtPiBzZXEgXCJDb21wbGVtZW50XCIgY1xuICB8IERpZmZlcmVuY2UgKGEsIGIpIC0+IHNleHAgZm10IFwiRGlmZmVyZW5jZVwiIChwYWlyIHBwIHBwKSAoYSwgYilcbiAgfCBQbWFyayAobSwgcikgICAgICAtPiBzZXhwIGZtdCBcIlBtYXJrXCIgKHBhaXIgUG1hcmsucHAgcHApIChtLCByKVxuXG5sZXQgcmVjIGlzX2NoYXJzZXQgPSBmdW5jdGlvblxuICB8IFNldCBfIC0+XG4gICAgdHJ1ZVxuICB8IEFsdGVybmF0aXZlIGwgfCBJbnRlcnNlY3Rpb24gbCB8IENvbXBsZW1lbnQgbCAtPlxuICAgIExpc3QuZm9yX2FsbCBpc19jaGFyc2V0IGxcbiAgfCBEaWZmZXJlbmNlIChyLCByJykgLT5cbiAgICBpc19jaGFyc2V0IHIgJiYgaXNfY2hhcnNldCByJ1xuICB8IFNlbSAoXywgcikgfCBTZW1fZ3JlZWR5IChfLCByKVxuICB8IE5vX2dyb3VwIHIgfCBDYXNlIHIgfCBOb19jYXNlIHIgLT5cbiAgICBpc19jaGFyc2V0IHJcbiAgfCBTZXF1ZW5jZSBfIHwgUmVwZWF0IF8gfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gIHwgTm90X2JvdW5kIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICB8IEdyb3VwIF8gfCBOZXN0IF8gfCBQbWFyayAoXyxfKS0+XG4gICAgZmFsc2VcblxuKCpYWFggVXNlIGEgYmV0dGVyIGFsZ29yaXRobSBhbGxvd2luZyBub24tY29udGlndW91cyByZWdpb25zPyAqKVxuXG5sZXQgY3VwcGVyID1cbiAgQ3NldC51bmlvbiAoY3NlcSAnQScgJ1onKVxuICAgIChDc2V0LnVuaW9uIChjc2VxICdcXDE5MicgJ1xcMjE0JykgKGNzZXEgJ1xcMjE2JyAnXFwyMjInKSlcbmxldCBjbG93ZXIgPSBDc2V0Lm9mZnNldCAzMiBjdXBwZXJcbmxldCBjYWxwaGEgPVxuICBMaXN0LmZvbGRfcmlnaHQgY2FkZCBbJ1xcMTcwJzsgJ1xcMTgxJzsgJ1xcMTg2JzsgJ1xcMjIzJzsgJ1xcMjU1J11cbiAgICAoQ3NldC51bmlvbiBjbG93ZXIgY3VwcGVyKVxubGV0IGNkaWdpdCA9IGNzZXEgJzAnICc5J1xubGV0IGNhbG51bSA9IENzZXQudW5pb24gY2FscGhhIGNkaWdpdFxubGV0IGN3b3JkID0gY2FkZCAnXycgY2FsbnVtXG5cbmxldCBjb2xvcml6ZSBjIHJlZ2V4cCA9XG4gIGxldCBsbmwgPSByZWYgZmFsc2UgaW5cbiAgbGV0IHJlYyBjb2xvcml6ZSByZWdleHAgPVxuICAgIG1hdGNoIHJlZ2V4cCB3aXRoXG4gICAgICBTZXQgcyAgICAgICAgICAgICAgICAgICAgIC0+IENvbG9yX21hcC5zcGxpdCBzIGNcbiAgICB8IFNlcXVlbmNlIGwgICAgICAgICAgICAgICAgLT4gTGlzdC5pdGVyIGNvbG9yaXplIGxcbiAgICB8IEFsdGVybmF0aXZlIGwgICAgICAgICAgICAgLT4gTGlzdC5pdGVyIGNvbG9yaXplIGxcbiAgICB8IFJlcGVhdCAociwgXywgXykgICAgICAgICAgLT4gY29sb3JpemUgclxuICAgIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSAtPiBDb2xvcl9tYXAuc3BsaXQgKENzZXQuY3NpbmdsZSAnXFxuJykgY1xuICAgIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZFxuICAgIHwgTm90X2JvdW5kICAgICAgICAgICAgICAgICAtPiBDb2xvcl9tYXAuc3BsaXQgY3dvcmQgY1xuICAgIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgICB8IFN0YXJ0IHwgU3RvcCAgICAgICAgICAgICAgLT4gKClcbiAgICB8IExhc3RfZW5kX29mX2xpbmUgICAgICAgICAgLT4gbG5sIDo9IHRydWVcbiAgICB8IFNlbSAoXywgcilcbiAgICB8IFNlbV9ncmVlZHkgKF8sIHIpXG4gICAgfCBHcm91cCAoXywgcikgfCBOb19ncm91cCByXG4gICAgfCBOZXN0IHIgfCBQbWFyayAoXyxyKSAgICAgLT4gY29sb3JpemUgclxuICAgIHwgQ2FzZSBfIHwgTm9fY2FzZSBfXG4gICAgfCBJbnRlcnNlY3Rpb24gX1xuICAgIHwgQ29tcGxlbWVudCBfXG4gICAgfCBEaWZmZXJlbmNlIF8gICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICBjb2xvcml6ZSByZWdleHA7XG4gICFsbmxcblxuKCoqKiogQ29tcGlsYXRpb24gKioqKilcblxubGV0IHJlYyBlcXVhbCB4MSB4MiA9XG4gIG1hdGNoIHgxLCB4MiB3aXRoXG4gICAgU2V0IHMxLCBTZXQgczIgLT5cbiAgICBzMSA9IHMyXG4gIHwgU2VxdWVuY2UgbDEsIFNlcXVlbmNlIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IEFsdGVybmF0aXZlIGwxLCBBbHRlcm5hdGl2ZSBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBSZXBlYXQgKHgxJywgaTEsIGoxKSwgUmVwZWF0ICh4MicsIGkyLCBqMikgLT5cbiAgICBpMSA9IGkyICYmIGoxID0gajIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IEJlZ19vZl9saW5lLCBCZWdfb2ZfbGluZVxuICB8IEVuZF9vZl9saW5lLCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkLCBCZWdfb2Zfd29yZFxuICB8IEVuZF9vZl93b3JkLCBFbmRfb2Zfd29yZFxuICB8IE5vdF9ib3VuZCwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciwgQmVnX29mX3N0clxuICB8IEVuZF9vZl9zdHIsIEVuZF9vZl9zdHJcbiAgfCBMYXN0X2VuZF9vZl9saW5lLCBMYXN0X2VuZF9vZl9saW5lXG4gIHwgU3RhcnQsIFN0YXJ0XG4gIHwgU3RvcCwgU3RvcCAtPlxuICAgIHRydWVcbiAgfCBTZW0gKHNlbTEsIHgxJyksIFNlbSAoc2VtMiwgeDInKSAtPlxuICAgIHNlbTEgPSBzZW0yICYmIGVxdWFsIHgxJyB4MidcbiAgfCBTZW1fZ3JlZWR5IChrMSwgeDEnKSwgU2VtX2dyZWVkeSAoazIsIHgyJykgLT5cbiAgICBrMSA9IGsyICYmIGVxdWFsIHgxJyB4MidcbiAgfCBHcm91cCBfLCBHcm91cCBfIC0+ICgqIERvIG5vdCBtZXJnZSBncm91cHMhICopXG4gICAgZmFsc2VcbiAgfCBOb19ncm91cCB4MScsIE5vX2dyb3VwIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBOZXN0IHgxJywgTmVzdCB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgQ2FzZSB4MScsIENhc2UgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IE5vX2Nhc2UgeDEnLCBOb19jYXNlIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBJbnRlcnNlY3Rpb24gbDEsIEludGVyc2VjdGlvbiBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBDb21wbGVtZW50IGwxLCBDb21wbGVtZW50IGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IERpZmZlcmVuY2UgKHgxJywgeDEnJyksIERpZmZlcmVuY2UgKHgyJywgeDInJykgLT5cbiAgICBlcXVhbCB4MScgeDInICYmIGVxdWFsIHgxJycgeDInJ1xuICB8IFBtYXJrIChtMSwgcjEpLCBQbWFyayAobTIsIHIyKSAtPlxuICAgIFBtYXJrLmVxdWFsIG0xIG0yICYmIGVxdWFsIHIxIHIyXG4gIHwgXyAtPlxuICAgIGZhbHNlXG5cbmFuZCBlcV9saXN0IGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICBbXSwgW10gLT5cbiAgICB0cnVlXG4gIHwgeDEgOjogcjEsIHgyIDo6IHIyIC0+XG4gICAgZXF1YWwgeDEgeDIgJiYgZXFfbGlzdCByMSByMlxuICB8IF8gLT5cbiAgICBmYWxzZVxuXG5sZXQgc2VxdWVuY2UgPSBmdW5jdGlvblxuICB8IFt4XSAtPiB4XG4gIHwgbCAgIC0+IFNlcXVlbmNlIGxcblxubGV0IHJlYyBtZXJnZV9zZXF1ZW5jZXMgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgW11cbiAgfCBBbHRlcm5hdGl2ZSBsJyA6OiByIC0+XG4gICAgbWVyZ2Vfc2VxdWVuY2VzIChsJyBAIHIpXG4gIHwgU2VxdWVuY2UgKHggOjogeSkgOjogciAtPlxuICAgIGJlZ2luIG1hdGNoIG1lcmdlX3NlcXVlbmNlcyByIHdpdGhcbiAgICAgICAgU2VxdWVuY2UgKHgnIDo6IHknKSA6OiByJyB3aGVuIGVxdWFsIHggeCcgLT5cbiAgICAgICAgU2VxdWVuY2UgW3g7IEFsdGVybmF0aXZlIFtzZXF1ZW5jZSB5OyBzZXF1ZW5jZSB5J11dIDo6IHInXG4gICAgICB8IHInIC0+XG4gICAgICAgIFNlcXVlbmNlICh4IDo6IHkpIDo6IHInXG4gICAgZW5kXG4gIHwgeCA6OiByIC0+XG4gICAgeCA6OiBtZXJnZV9zZXF1ZW5jZXMgclxuXG5tb2R1bGUgQSA9IEF1dG9tYXRhXG5cbmxldCBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IgPVxuICBtYXRjaCBraW5kLCBraW5kJyB3aXRoXG4gICAgYEZpcnN0LCBgRmlyc3QgLT4gY3JcbiAgfCBgRmlyc3QsIGsgICAgICAgLT4gQS5zZXEgaWRzIGsgY3IgKEEuZXBzIGlkcylcbiAgfCAgXyAgICAgICAgICAgICAgIC0+IGNyXG5cbigqIFhYWCBzaG91bGQgcHJvYmFibHkgY29tcHV0ZSBhIGNhdGVnb3J5IG1hc2sgKilcbmxldCByZWMgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+XG4gICAgKEEuY3N0IGlkcyAodHJhbnNfc2V0IGNhY2hlIGMgcyksIGtpbmQpXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgICh0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyBsLCBraW5kKVxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBiZWdpbiBtYXRjaCBtZXJnZV9zZXF1ZW5jZXMgbCB3aXRoXG4gICAgICAgIFtyJ10gLT5cbiAgICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgICAoZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyLCBraW5kKVxuICAgICAgfCBtZXJnZWRfc2VxdWVuY2VzIC0+XG4gICAgICAgIChBLmFsdCBpZHNcbiAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgIChmdW4gcicgLT5cbiAgICAgICAgICAgICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeVxuICAgICAgICAgICAgICAgICAgICAgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgICAgICAgICAgICAgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyKVxuICAgICAgICAgICAgICBtZXJnZWRfc2VxdWVuY2VzKSxcbiAgICAgICAgIGtpbmQpXG4gICAgZW5kXG4gIHwgUmVwZWF0IChyJywgaSwgaikgLT5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICBsZXQgcmVtID1cbiAgICAgIG1hdGNoIGogd2l0aFxuICAgICAgICBOb25lIC0+XG4gICAgICAgIEEucmVwIGlkcyBncmVlZHkga2luZCcgY3JcbiAgICAgIHwgU29tZSBqIC0+XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBtYXRjaCBncmVlZHkgd2l0aFxuICAgICAgICAgICAgYEdyZWVkeSAtPlxuICAgICAgICAgICAgZnVuIHJlbSAtPlxuICAgICAgICAgICAgICBBLmFsdCBpZHNcbiAgICAgICAgICAgICAgICBbQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbTsgQS5lcHMgaWRzXVxuICAgICAgICAgIHwgYE5vbl9ncmVlZHkgLT5cbiAgICAgICAgICAgIGZ1biByZW0gLT5cbiAgICAgICAgICAgICAgQS5hbHQgaWRzXG4gICAgICAgICAgICAgICAgW0EuZXBzIGlkczsgQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbV1cbiAgICAgICAgaW5cbiAgICAgICAgaXRlciAoaiAtIGkpIGYgKEEuZXBzIGlkcylcbiAgICBpblxuICAgIChpdGVyIGkgKGZ1biByZW0gLT4gQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbSkgcmVtLCBraW5kKVxuICB8IEJlZ19vZl9saW5lIC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5ld2xpbmUpLCBraW5kKVxuICB8IEVuZF9vZl9saW5lIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBuZXdsaW5lKSwga2luZClcbiAgfCBCZWdfb2Zfd29yZCAtPlxuICAgIChBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKVxuICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkubGV0dGVyKSxcbiAgICAga2luZClcbiAgfCBFbmRfb2Zfd29yZCAtPlxuICAgIChBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmxldHRlcilcbiAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKSxcbiAgICAga2luZClcbiAgfCBOb3RfYm91bmQgLT5cbiAgICAoQS5hbHQgaWRzIFtBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgICAgICAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkubGV0dGVyKVxuICAgICAgICAgICAgICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5sZXR0ZXIpO1xuICAgICAgICAgICAgICAgIEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAgICAgICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSlcbiAgICAgICAgICAgICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXSxcbiAgICAga2luZClcbiAgfCBCZWdfb2Zfc3RyIC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmluZXhpc3RhbnQsIGtpbmQpXG4gIHwgRW5kX29mX3N0ciAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuaW5leGlzdGFudCwga2luZClcbiAgfCBMYXN0X2VuZF9vZl9saW5lIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBsYXN0bmV3bGluZSksIGtpbmQpXG4gIHwgU3RhcnQgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuc2VhcmNoX2JvdW5kYXJ5LCBraW5kKVxuICB8IFN0b3AgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LnNlYXJjaF9ib3VuZGFyeSwga2luZClcbiAgfCBTZW0gKGtpbmQnLCByJykgLT5cbiAgICBsZXQgKGNyLCBraW5kJycpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCcgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIChlbmZvcmNlX2tpbmQgaWRzIGtpbmQnIGtpbmQnJyBjcixcbiAgICAga2luZCcpXG4gIHwgU2VtX2dyZWVkeSAoZ3JlZWR5JywgcicpIC0+XG4gICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHknIHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gIHwgR3JvdXAgKG4sIHInKSAtPlxuICAgIGlmIGlnbl9ncm91cCB0aGVuXG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICAgIGVsc2VcbiAgICAgIGxldCBwID0gIXBvcyBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICAgIHwgU29tZSBuYW1lIC0+IG5hbWVzIDo9IChuYW1lLCBwIC8gMikgOjogIW5hbWVzXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgaW5cbiAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5tYXJrIGlkcyBwKSAoXG4gICAgICAgICAgQS5zZXEgaWRzIGBGaXJzdCBjciAoQS5tYXJrIGlkcyAocCArIDEpKSksXG4gICAgICAga2luZCcpXG4gIHwgTm9fZ3JvdXAgcicgLT5cbiAgICB0cmFuc2xhdGUgaWRzIGtpbmQgdHJ1ZSBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgfCBOZXN0IHInIC0+XG4gICAgbGV0IGIgPSAhcG9zIGluXG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gICAgaW5cbiAgICBsZXQgZSA9ICFwb3MgLSAxIGluXG4gICAgaWYgZSA8IGIgdGhlblxuICAgICAgKGNyLCBraW5kJylcbiAgICBlbHNlXG4gICAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5lcmFzZSBpZHMgYiBlKSBjciwga2luZCcpXG4gIHwgRGlmZmVyZW5jZSBfIHwgQ29tcGxlbWVudCBfIHwgSW50ZXJzZWN0aW9uIF8gfCBOb19jYXNlIF8gfCBDYXNlIF8gLT5cbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBQbWFyayAoaSwgcicpIC0+XG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEucG1hcmsgaWRzIGkpIGNyLCBraW5kJylcblxuYW5kIHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIEEuZXBzIGlkc1xuICB8IFtyXSAtPlxuICAgIGxldCAoY3InLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgciBpblxuICAgIGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjcidcbiAgfCByIDo6IHJlbSAtPlxuICAgIGxldCAoY3InLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgciBpblxuICAgIGxldCBjcicnID1cbiAgICAgIHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHJlbSBpblxuICAgIGlmIEEuaXNfZXBzIGNyJycgdGhlblxuICAgICAgY3InXG4gICAgZWxzZSBpZiBBLmlzX2VwcyBjcicgdGhlblxuICAgICAgY3InJ1xuICAgIGVsc2VcbiAgICAgIEEuc2VxIGlkcyBraW5kJyBjcicgY3InJ1xuXG4oKioqKiBDYXNlICoqKiopXG5cbmxldCBjYXNlX2luc2VucyBzID1cbiAgQ3NldC51bmlvbiBzIChDc2V0LnVuaW9uIChDc2V0Lm9mZnNldCAzMiAoQ3NldC5pbnRlciBzIGN1cHBlcikpXG4gICAgICAgICAgICAgICAgICAoQ3NldC5vZmZzZXQgKC0zMikgKENzZXQuaW50ZXIgcyBjbG93ZXIpKSlcblxubGV0IGFzX3NldCA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT4gc1xuICB8IF8gICAgIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBYWFggU2hvdWxkIHNwbGl0IGFsdGVybmF0aXZlcyBpbnRvICgxKSBjaGFyc2V0cyBhbmQgKDIpIG1vcmVcbiAgIGNvbXBsZXggcmVndWxhciBleHByZXNzaW9uczsgYWx0ZXJuYXRpdmUgc2hvdWxkIHRoZXJlZm9yZSBwcm9iYWJseVxuICAgYmUgZmxhdHRlbiBoZXJlICopXG5sZXQgcmVjIGhhbmRsZV9jYXNlIGlnbl9jYXNlID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPlxuICAgIFNldCAoaWYgaWduX2Nhc2UgdGhlbiBjYXNlX2luc2VucyBzIGVsc2UgcylcbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgU2VxdWVuY2UgKExpc3QubWFwIChoYW5kbGVfY2FzZSBpZ25fY2FzZSkgbClcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGhhbmRsZV9jYXNlIGlnbl9jYXNlKSBsIGluXG4gICAgaWYgaXNfY2hhcnNldCAoQWx0ZXJuYXRpdmUgbCcpIHRoZW5cbiAgICAgIFNldCAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC51bmlvbiBzIChhc19zZXQgcikpIENzZXQuZW1wdHkgbCcpXG4gICAgZWxzZVxuICAgICAgQWx0ZXJuYXRpdmUgbCdcbiAgfCBSZXBlYXQgKHIsIGksIGopIC0+XG4gICAgUmVwZWF0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByLCBpLCBqKVxuICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHIgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wIGFzIHIgLT5cbiAgICByXG4gIHwgU2VtIChrLCByKSAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBTZW0gKGssIHInKVxuICB8IFNlbV9ncmVlZHkgKGssIHIpIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIFNlbV9ncmVlZHkgKGssIHInKVxuICB8IEdyb3VwIChuLCByKSAtPlxuICAgIEdyb3VwIChuLCBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKVxuICB8IE5vX2dyb3VwIHIgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgTm9fZ3JvdXAgcidcbiAgfCBOZXN0IHIgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgTmVzdCByJ1xuICB8IENhc2UgciAtPlxuICAgIGhhbmRsZV9jYXNlIGZhbHNlIHJcbiAgfCBOb19jYXNlIHIgLT5cbiAgICBoYW5kbGVfY2FzZSB0cnVlIHJcbiAgfCBJbnRlcnNlY3Rpb24gbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChmdW4gciAtPiBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSBsIGluXG4gICAgU2V0IChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LmludGVyIHMgKGFzX3NldCByKSkgQ3NldC5jYW55IGwnKVxuICB8IENvbXBsZW1lbnQgbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChmdW4gciAtPiBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSBsIGluXG4gICAgU2V0IChDc2V0LmRpZmYgQ3NldC5jYW55XG4gICAgICAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LnVuaW9uIHMgKGFzX3NldCByKSlcbiAgICAgICAgICAgICAgQ3NldC5lbXB0eSBsJykpXG4gIHwgRGlmZmVyZW5jZSAociwgcicpIC0+XG4gICAgU2V0IChDc2V0LmludGVyIChhc19zZXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpKVxuICAgICAgICAgICAoQ3NldC5kaWZmIENzZXQuY2FueSAoYXNfc2V0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByJykpKSlcbiAgfCBQbWFyayAoaSxyKSAtPiBQbWFyayAoaSxoYW5kbGVfY2FzZSBpZ25fY2FzZSByKVxuXG4oKioqKilcblxubGV0IGNvbXBpbGVfMSByZWdleHAgPVxuICBsZXQgcmVnZXhwID0gaGFuZGxlX2Nhc2UgZmFsc2UgcmVnZXhwIGluXG4gIGxldCBjID0gQ29sb3JfbWFwLm1ha2UgKCkgaW5cbiAgbGV0IG5lZWRfbG5sID0gY29sb3JpemUgYyByZWdleHAgaW5cbiAgbGV0IChjb2xvcnMsIGNvbG9yX3JlcHIsIG5jb2xvcikgPSBDb2xvcl9tYXAuZmxhdHRlbiBjIGluXG4gIGxldCBsbmwgPSBpZiBuZWVkX2xubCB0aGVuIG5jb2xvciBlbHNlIC0xIGluXG4gIGxldCBuY29sb3IgPSBpZiBuZWVkX2xubCB0aGVuIG5jb2xvciArIDEgZWxzZSBuY29sb3IgaW5cbiAgbGV0IGlkcyA9IEEuY3JlYXRlX2lkcyAoKSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgbGV0IG5hbWVzID0gcmVmIFtdIGluXG4gIGxldCAociwga2luZCkgPVxuICAgIHRyYW5zbGF0ZSBpZHNcbiAgICAgIGBGaXJzdCBmYWxzZSBmYWxzZSBgR3JlZWR5IHBvcyBuYW1lcyAocmVmIENzZXQuQ1NldE1hcC5lbXB0eSkgY29sb3JzIHJlZ2V4cCBpblxuICBsZXQgciA9IGVuZm9yY2Vfa2luZCBpZHMgYEZpcnN0IGtpbmQgciBpblxuICAoKkZvcm1hdC5lcHJpbnRmIFwiPCVkICVkPkAuXCIgIWlkcyBuY29sOyopXG4gIG1rX3JlIH5pbml0aWFsOnIgfmNvbG9ycyB+Y29sb3JfcmVwciB+bmNvbG9yIH5sbmwgfmdyb3VwX25hbWVzOihMaXN0LnJldiAhbmFtZXMpIH5ncm91cF9jb3VudDooIXBvcyAvIDIpXG5cbigqKioqKVxuXG5sZXQgcmVjIGFuY2hvcmVkID0gZnVuY3Rpb25cbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgTGlzdC5leGlzdHMgYW5jaG9yZWQgbFxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBMaXN0LmZvcl9hbGwgYW5jaG9yZWQgbFxuICB8IFJlcGVhdCAociwgaSwgXykgLT5cbiAgICBpID4gMCAmJiBhbmNob3JlZCByXG4gIHwgU2V0IF8gfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZFxuICB8IE5vdF9ib3VuZCB8IEVuZF9vZl9zdHIgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RvcFxuICB8IEludGVyc2VjdGlvbiBfIHwgQ29tcGxlbWVudCBfIHwgRGlmZmVyZW5jZSBfIC0+XG4gICAgZmFsc2VcbiAgfCBCZWdfb2Zfc3RyIHwgU3RhcnQgLT5cbiAgICB0cnVlXG4gIHwgU2VtIChfLCByKSB8IFNlbV9ncmVlZHkgKF8sIHIpIHwgR3JvdXAgKF8sIHIpIHwgTm9fZ3JvdXAgciB8IE5lc3QgclxuICB8IENhc2UgciB8IE5vX2Nhc2UgciB8IFBtYXJrIChfLCByKSAtPlxuICAgIGFuY2hvcmVkIHJcblxuKCoqKiopXG5cbnR5cGUgdCA9IHJlZ2V4cFxuXG5sZXQgc3RyIHMgPVxuICBsZXQgbCA9IHJlZiBbXSBpblxuICBmb3IgaSA9IFN0cmluZy5sZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBsIDo9IFNldCAoQ3NldC5jc2luZ2xlIHMuW2ldKSA6OiAhbFxuICBkb25lO1xuICBTZXF1ZW5jZSAhbFxubGV0IGNoYXIgYyA9IFNldCAoQ3NldC5jc2luZ2xlIGMpXG5cbmxldCBhbHQgPSBmdW5jdGlvblxuICB8IFtyXSAtPiByXG4gIHwgbCAgIC0+IEFsdGVybmF0aXZlIGxcbmxldCBzZXEgPSBmdW5jdGlvblxuICB8IFtyXSAtPiByXG4gIHwgbCAgIC0+IFNlcXVlbmNlIGxcblxubGV0IGVtcHR5ID0gYWx0IFtdXG5sZXQgZXBzaWxvbiA9IHNlcSBbXVxubGV0IHJlcG4gciBpIGogPVxuICBpZiBpIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwblwiO1xuICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICB8IFNvbWUgaiB3aGVuIGogPCBpIC0+IGludmFsaWRfYXJnIFwiUmUucmVwblwiXG4gICAgfCBfIC0+ICgpXG4gIGVuZDtcbiAgUmVwZWF0IChyLCBpLCBqKVxubGV0IHJlcCByID0gcmVwbiByIDAgTm9uZVxubGV0IHJlcDEgciA9IHJlcG4gciAxIE5vbmVcbmxldCBvcHQgciA9IHJlcG4gciAwIChTb21lIDEpXG5sZXQgYm9sID0gQmVnX29mX2xpbmVcbmxldCBlb2wgPSBFbmRfb2ZfbGluZVxubGV0IGJvdyA9IEJlZ19vZl93b3JkXG5sZXQgZW93ID0gRW5kX29mX3dvcmRcbmxldCB3b3JkIHIgPSBzZXEgW2JvdzsgcjsgZW93XVxubGV0IG5vdF9ib3VuZGFyeSA9IE5vdF9ib3VuZFxubGV0IGJvcyA9IEJlZ19vZl9zdHJcbmxldCBlb3MgPSBFbmRfb2Zfc3RyXG5sZXQgd2hvbGVfc3RyaW5nIHIgPSBzZXEgW2JvczsgcjsgZW9zXVxubGV0IGxlb2wgPSBMYXN0X2VuZF9vZl9saW5lXG5sZXQgc3RhcnQgPSBTdGFydFxubGV0IHN0b3AgPSBTdG9wXG5sZXQgbG9uZ2VzdCByID0gU2VtIChgTG9uZ2VzdCwgcilcbmxldCBzaG9ydGVzdCByID0gU2VtIChgU2hvcnRlc3QsIHIpXG5sZXQgZmlyc3QgciA9IFNlbSAoYEZpcnN0LCByKVxubGV0IGdyZWVkeSByID0gU2VtX2dyZWVkeSAoYEdyZWVkeSwgcilcbmxldCBub25fZ3JlZWR5IHIgPSBTZW1fZ3JlZWR5IChgTm9uX2dyZWVkeSwgcilcbmxldCBncm91cCA/bmFtZSByID0gR3JvdXAgKG5hbWUsIHIpXG5sZXQgbm9fZ3JvdXAgciA9IE5vX2dyb3VwIHJcbmxldCBuZXN0IHIgPSBOZXN0IHJcbmxldCBtYXJrIHIgPSBsZXQgaSA9IFBtYXJrLmdlbiAoKSBpbiAoaSxQbWFyayAoaSxyKSlcblxubGV0IHNldCBzdHIgPVxuICBsZXQgcyA9IHJlZiBDc2V0LmVtcHR5IGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgZG9cbiAgICBzIDo9IENzZXQudW5pb24gKENzZXQuY3NpbmdsZSBzdHIuW2ldKSAhc1xuICBkb25lO1xuICBTZXQgIXNcblxubGV0IHJnIGMgYycgPSBTZXQgKGNzZXEgYyBjJylcblxubGV0IGludGVyIGwgPVxuICBsZXQgciA9IEludGVyc2VjdGlvbiBsIGluXG4gIGlmIGlzX2NoYXJzZXQgciB0aGVuXG4gICAgclxuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5pbnRlclwiXG5cbmxldCBjb21wbCBsID1cbiAgbGV0IHIgPSBDb21wbGVtZW50IGwgaW5cbiAgaWYgaXNfY2hhcnNldCByIHRoZW5cbiAgICByXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmNvbXBsXCJcblxubGV0IGRpZmYgciByJyA9XG4gIGxldCByJycgPSBEaWZmZXJlbmNlIChyLCByJykgaW5cbiAgaWYgaXNfY2hhcnNldCByJycgdGhlblxuICAgIHInJ1xuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5kaWZmXCJcblxubGV0IGFueSA9IFNldCBDc2V0LmNhbnlcbmxldCBub3RubCA9IFNldCAoQ3NldC5kaWZmIENzZXQuY2FueSAoQ3NldC5jc2luZ2xlICdcXG4nKSlcblxubGV0IGxvd2VyID0gYWx0IFtyZyAnYScgJ3onOyBjaGFyICdcXDE4MSc7IHJnICdcXDIyMycgJ1xcMjQ2JzsgcmcgJ1xcMjQ4JyAnXFwyNTUnXVxubGV0IHVwcGVyID0gYWx0IFtyZyAnQScgJ1onOyByZyAnXFwxOTInICdcXDIxNCc7IHJnICdcXDIxNicgJ1xcMjIyJ11cbmxldCBhbHBoYSA9IGFsdCBbbG93ZXI7IHVwcGVyOyBjaGFyICdcXDE3MCc7IGNoYXIgJ1xcMTg2J11cbmxldCBkaWdpdCA9IHJnICcwJyAnOSdcbmxldCBhbG51bSA9IGFsdCBbYWxwaGE7IGRpZ2l0XVxubGV0IHdvcmRjID0gYWx0IFthbG51bTsgY2hhciAnXyddXG5sZXQgYXNjaWkgPSByZyAnXFwwMDAnICdcXDEyNydcbmxldCBibGFuayA9IHNldCBcIlxcdCBcIlxubGV0IGNudHJsID0gYWx0IFtyZyAnXFwwMDAnICdcXDAzMSc7IHJnICdcXDEyNycgJ1xcMTU5J11cbmxldCBncmFwaCA9IGFsdCBbcmcgJ1xcMDMzJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDI1NSddXG5sZXQgcHJpbnQgPSBhbHQgW3JnICdcXDAzMicgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwyNTUnXVxubGV0IHB1bmN0ID1cbiAgYWx0IFtyZyAnXFwwMzMnICdcXDA0Nyc7IHJnICdcXDA1OCcgJ1xcMDY0JzsgcmcgJ1xcMDkxJyAnXFwwOTYnO1xuICAgICAgIHJnICdcXDEyMycgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwxNjknOyByZyAnXFwxNzEnICdcXDE4MCc7XG4gICAgICAgcmcgJ1xcMTgyJyAnXFwxODUnOyByZyAnXFwxODcnICdcXDE5MSc7IGNoYXIgJ1xcMjE1JzsgY2hhciAnXFwyNDcnXVxubGV0IHNwYWNlID0gYWx0IFtjaGFyICcgJzsgcmcgJ1xcMDA5JyAnXFwwMTMnXVxubGV0IHhkaWdpdCA9IGFsdCBbZGlnaXQ7IHJnICdhJyAnZic7IHJnICdBJyAnRiddXG5cbmxldCBjYXNlIHIgPSBDYXNlIHJcbmxldCBub19jYXNlIHIgPSBOb19jYXNlIHJcblxuKCoqKiopXG5cbmxldCBjb21waWxlIHIgPVxuICBjb21waWxlXzEgKFxuICAgIGlmIGFuY2hvcmVkIHIgdGhlblxuICAgICAgZ3JvdXAgclxuICAgIGVsc2VcbiAgICAgIHNlcSBbc2hvcnRlc3QgKHJlcCBhbnkpOyBncm91cCByXVxuICApXG5cbmxldCBleGVjX2ludGVybmFsIG5hbWUgPyhwb3M9MCkgPyhsZW4gPSAtMSkgfnBhcnRpYWwgfmdyb3VwcyByZSBzID1cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAtMSB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIG5hbWU7XG4gIG1hdGNoX3N0ciB+Z3JvdXBzIH5wYXJ0aWFsIHJlIHMgfnBvcyB+bGVuXG5cbmxldCBleGVjID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCBcIlJlLmV4ZWNcIiA/cG9zID9sZW4gfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgd2l0aFxuICAgIE1hdGNoIHN1YnN0ciAtPiBzdWJzdHJcbiAgfCBfICAgICAgICAgICAgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBleGVjX29wdCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgXCJSZS5leGVjX29wdFwiID9wb3MgP2xlbiB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2VcbiAgICAgICAgICByZSBzIHdpdGhcbiAgICBNYXRjaCBzdWJzdHIgLT4gU29tZSBzdWJzdHJcbiAgfCBfICAgICAgICAgICAgLT4gTm9uZVxuXG5sZXQgZXhlY3AgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6ZmFsc2UgfnBhcnRpYWw6ZmFsc2UgXCJSZS5leGVjcFwiID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBfc3Vic3RyIC0+IHRydWVcbiAgfCBfICAgICAgICAgICAgIC0+IGZhbHNlXG5cbmxldCBleGVjX3BhcnRpYWwgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6ZmFsc2UgfnBhcnRpYWw6dHJ1ZSBcIlJlLmV4ZWNfcGFydGlhbFwiXG4gICAgICAgICAgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIF8gLT4gYEZ1bGxcbiAgfCBSdW5uaW5nIF8gLT4gYFBhcnRpYWxcbiAgfCBGYWlsZWQgIC0+IGBNaXNtYXRjaFxuXG5sZXQgZXhlY19wYXJ0aWFsX2RldGFpbGVkID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6dHJ1ZSBcIlJlLmV4ZWNfcGFydGlhbF9kZXRhaWxlZFwiXG4gICAgICAgICAgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIGdyb3VwIC0+IGBGdWxsIGdyb3VwXG4gIHwgUnVubmluZyB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgfSAtPiBgUGFydGlhbCBub19tYXRjaF9zdGFydHNfYmVmb3JlXG4gIHwgRmFpbGVkICAtPiBgTWlzbWF0Y2hcblxubW9kdWxlIE1hcmsgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBQbWFyay50XG5cbiAgbGV0IHRlc3QgKGcgOiBHcm91cC50KSBwID1cbiAgICBQbWFyay5TZXQubWVtIHAgZy5wbWFya3NcblxuICBsZXQgYWxsIChnIDogR3JvdXAudCkgPSBnLnBtYXJrc1xuXG4gIG1vZHVsZSBTZXQgPSBQbWFyay5TZXRcblxuICBsZXQgZXF1YWwgPSBQbWFyay5lcXVhbFxuXG4gIGxldCBjb21wYXJlID0gUG1hcmsuY29tcGFyZVxuXG5lbmRcblxudHlwZSBzcGxpdF90b2tlbiA9XG4gIFsgYFRleHQgb2Ygc3RyaW5nXG4gIHwgYERlbGltIG9mIEdyb3VwLnRcbiAgXVxuXG5tb2R1bGUgUnNlcSA9IHN0cnVjdFxuICBsZXQgYWxsID8ocG9zPTApID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLmFsbFwiO1xuICAgICgqIGluZGV4IG9mIHRoZSBmaXJzdCBwb3NpdGlvbiB3ZSBkbyBub3QgY29uc2lkZXIuXG4gICAgICAgIXBvcyA8IGxpbWl0IGlzIGFuIGludmFyaWFudCAqKVxuICAgIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLmFsbFwiO1xuICAgICAgICBwb3MrbFxuICAgIGluXG4gICAgKCogaXRlcmF0ZSBvbiBtYXRjaGVzLiBXaGVuIGEgbWF0Y2ggaXMgZm91bmQsIHNlYXJjaCBmb3IgdGhlIG5leHRcbiAgICAgICBvbmUganVzdCBhZnRlciBpdHMgZW5kICopXG4gICAgbGV0IHJlYyBhdXggcG9zICgpID1cbiAgICAgIGlmIHBvcyA+PSBsaW1pdFxuICAgICAgdGhlbiBTZXEuTmlsICgqIG5vIG1vcmUgbWF0Y2hlcyAqKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHNcbiAgICAgICAgICAgICAgICB+cG9zIH5sZW46KGxpbWl0IC0gcG9zKSB3aXRoXG4gICAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAgIGxldCBwb3MgPSBpZiBwMT1wMiB0aGVuIHAyKzEgZWxzZSBwMiBpblxuICAgICAgICAgIFNlcS5Db25zIChzdWJzdHIsIGF1eCBwb3MpXG4gICAgICAgIHwgUnVubmluZyBfXG4gICAgICAgIHwgRmFpbGVkIC0+IFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCBwb3NcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGFsbCA/cG9zID9sZW4gcmUgc1xuICAgIHw+IFNlcS5tYXAgKGZ1biBzdWIgLT4gR3JvdXAuZ2V0IHN1YiAwKVxuXG4gIGxldCBzcGxpdF9mdWxsID8ocG9zPTApID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnNwbGl0XCI7XG4gICAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUuc3BsaXRcIjtcbiAgICAgICAgcG9zK2xcbiAgICBpblxuICAgICgqIGk6IHN0YXJ0IG9mIGRlbGltaXRlZCBzdHJpbmdcbiAgICAgICBwb3M6IGZpcnN0IHBvc2l0aW9uIGFmdGVyIGxhc3QgbWF0Y2ggb2YgW3JlXVxuICAgICAgIGxpbWl0OiBmaXJzdCBpbmRleCB3ZSBpZ25vcmUgKCFwb3MgPCBsaW1pdCBpcyBhbiBpbnZhcmlhbnQpICopXG4gICAgbGV0IHBvczAgPSBwb3MgaW5cbiAgICBsZXQgcmVjIGF1eCBzdGF0ZSBpIHBvcyAoKSA9IG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgIHwgYElkbGUgd2hlbiBwb3MgPj0gbGltaXQgLT5cbiAgICAgICAgaWYgaSA8IGxpbWl0IHRoZW4gKFxuICAgICAgICAgIGxldCBzdWIgPSBTdHJpbmcuc3ViIHMgaSAobGltaXQgLSBpKSBpblxuICAgICAgICAgIFNlcS5Db25zIChgVGV4dCBzdWIsIGF1eCBzdGF0ZSAoaSsxKSBwb3MpXG4gICAgICAgICkgZWxzZSBTZXEuTmlsXG4gICAgICB8IGBJZGxlIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB+cG9zXG4gICAgICAgICAgICAgICAgICAgICAgfmxlbjoobGltaXQgLSBwb3MpIHdpdGhcbiAgICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICAgbGV0IHBvcyA9IGlmIHAxPXAyIHRoZW4gcDIrMSBlbHNlIHAyIGluXG4gICAgICAgICAgbGV0IG9sZF9pID0gaSBpblxuICAgICAgICAgIGxldCBpID0gcDIgaW5cbiAgICAgICAgICBpZiBwMSA+IHBvczAgdGhlbiAoXG4gICAgICAgICAgICAoKiBzdHJpbmcgZG9lcyBub3Qgc3RhcnQgYnkgYSBkZWxpbWl0ZXIgKilcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gU3RyaW5nLnN1YiBzIG9sZF9pIChwMSAtIG9sZF9pKSBpblxuICAgICAgICAgICAgbGV0IHN0YXRlID0gYFlpZWxkIChgRGVsaW0gc3Vic3RyKSBpblxuICAgICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHRleHQsIGF1eCBzdGF0ZSBpIHBvcylcbiAgICAgICAgICApIGVsc2UgU2VxLkNvbnMgKGBEZWxpbSBzdWJzdHIsIGF1eCBzdGF0ZSBpIHBvcylcbiAgICAgICAgfCBSdW5uaW5nIF8gLT4gU2VxLk5pbFxuICAgICAgICB8IEZhaWxlZCAtPlxuICAgICAgICAgIGlmIGkgPCBsaW1pdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHRleHQgPSBTdHJpbmcuc3ViIHMgaSAobGltaXQgLSBpKSBpblxuICAgICAgICAgICAgKCogeWllbGQgbGFzdCBzdHJpbmcgKilcbiAgICAgICAgICAgIFNlcS5Db25zIChgVGV4dCB0ZXh0LCBhdXggc3RhdGUgbGltaXQgcG9zKVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICBlbmRcbiAgICAgIHwgYFlpZWxkIHggLT5cbiAgICAgICAgU2VxLkNvbnMgKHgsIGF1eCBgSWRsZSBpIHBvcylcbiAgICBpblxuICAgIGF1eCBgSWRsZSBwb3MgcG9zXG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgbGV0IHNlcSA9IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgaW5cbiAgICBsZXQgcmVjIGZpbHRlciBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBTZXEuTmlsXG4gICAgICB8IFNlcS5Db25zIChgRGVsaW0gXywgdGwpIC0+IGZpbHRlciB0bCAoKVxuICAgICAgfCBTZXEuQ29ucyAoYFRleHQgcyx0bCkgLT4gU2VxLkNvbnMgKHMsIGZpbHRlciB0bClcbiAgICBpbiBmaWx0ZXIgc2VxXG5lbmRcblxubW9kdWxlIFJsaXN0ID0gc3RydWN0XG4gIGxldCBsaXN0X29mX3NlcSAoczonYSBTZXEudCkgOiAnYSBsaXN0ID1cbiAgICBTZXEuZm9sZF9sZWZ0IChmdW4gbCB4IC0+IHggOjogbCkgW10gcyB8PiBMaXN0LnJldlxuXG4gIGxldCBhbGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLmFsbCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzID0gUnNlcS5tYXRjaGVzID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLnNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLnNwbGl0ID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5lbmRcblxubW9kdWxlIEdlbiA9IHN0cnVjdFxuICB0eXBlICdhIGdlbiA9IHVuaXQgLT4gJ2Egb3B0aW9uXG4gIGxldCBnZW5fb2Zfc2VxIChzOidhIFNlcS50KSA6ICdhIGdlbiA9XG4gICAgbGV0IHIgPSByZWYgcyBpblxuICAgIGZ1biAoKSAtPiBtYXRjaCAhciAoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gTm9uZVxuICAgICAgfCBTZXEuQ29ucyAoeCwgdGwpIC0+XG4gICAgICAgIHIgOj0gdGw7XG4gICAgICAgIFNvbWUgeFxuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA6IF8gZ2VuID1cbiAgICBSc2VxLnNwbGl0ID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyA6IF8gZ2VuID1cbiAgICBSc2VxLnNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBhbGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLmFsbCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLm1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuZW5kXG5cbmxldCByZXBsYWNlID8ocG9zPTApID9sZW4gPyhhbGw9dHJ1ZSkgcmUgfmYgcyA9XG4gIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcGxhY2VcIjtcbiAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgfCBTb21lIGwgLT5cbiAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwbGFjZVwiO1xuICAgICAgcG9zK2xcbiAgaW5cbiAgKCogYnVmZmVyIGludG8gd2hpY2ggd2Ugd3JpdGUgdGhlIHJlc3VsdCAqKVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICAoKiBpdGVyYXRlIG9uIG1hdGNoZWQgc3Vic3RyaW5ncy4gKilcbiAgbGV0IHJlYyBpdGVyIHBvcyA9XG4gICAgaWYgcG9zIDwgbGltaXRcbiAgICB0aGVuXG4gICAgICBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgfnBvcyB+bGVuOihsaW1pdC1wb3MpIHdpdGhcbiAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgKCogYWRkIHN0cmluZyBiZXR3ZWVuIHByZXZpb3VzIG1hdGNoIGFuZCBjdXJyZW50IG1hdGNoICopXG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHBvcyAocDEtcG9zKTtcbiAgICAgICAgKCogd2hhdCBzaG91bGQgd2UgcmVwbGFjZSB0aGUgbWF0Y2hlZCBncm91cCB3aXRoPyAqKVxuICAgICAgICBsZXQgcmVwbGFjaW5nID0gZiBzdWJzdHIgaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHJlcGxhY2luZztcbiAgICAgICAgaWYgYWxsIHRoZW5cbiAgICAgICAgICAoKiBpZiB3ZSBtYXRjaGVkIGEgbm9uLWNoYXIgZS5nLiBeIHdlIG11c3QgbWFudWFsbHkgYWR2YW5jZSBieSAxICopXG4gICAgICAgICAgaXRlciAoXG4gICAgICAgICAgICBpZiBwMT1wMiB0aGVuIChcbiAgICAgICAgICAgICAgKCogYSBub24gY2hhciBjb3VsZCBiZSBwYXN0IHRoZSBlbmQgb2Ygc3RyaW5nLiBlLmcuICQgKilcbiAgICAgICAgICAgICAgaWYgcDIgPCBsaW1pdCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBidWYgcy5bcDJdO1xuICAgICAgICAgICAgICBwMisxXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgcDIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwMiAobGltaXQtcDIpXG4gICAgICB8IFJ1bm5pbmcgXyAtPiAoKVxuICAgICAgfCBGYWlsZWQgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcG9zIChsaW1pdC1wb3MpXG4gIGluXG4gIGl0ZXIgcG9zO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCByZXBsYWNlX3N0cmluZyA/cG9zID9sZW4gP2FsbCByZSB+YnkgcyA9XG4gIHJlcGxhY2UgP3BvcyA/bGVuID9hbGwgcmUgcyB+ZjooZnVuIF8gLT4gYnkpXG5cbmxldCB3aXRuZXNzIHQgPVxuICBsZXQgcmVjIHdpdG5lc3MgPSBmdW5jdGlvblxuICAgIHwgU2V0IGMgLT4gU3RyaW5nLm1ha2UgMSAoQ2hhci5jaHIgKENzZXQucGljayBjKSlcbiAgICB8IFNlcXVlbmNlIHhzIC0+IFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5tYXAgd2l0bmVzcyB4cylcbiAgICB8IEFsdGVybmF0aXZlICh4IDo6IF8pIC0+IHdpdG5lc3MgeFxuICAgIHwgQWx0ZXJuYXRpdmUgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBSZXBlYXQgKHIsIGZyb20sIF90bykgLT5cbiAgICAgIGxldCB3ID0gd2l0bmVzcyByIGluXG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggdyAqIGZyb20pIGluXG4gICAgICBmb3IgX2k9MSB0byBmcm9tIGRvXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgd1xuICAgICAgZG9uZTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgfCBOb19jYXNlIHIgLT4gd2l0bmVzcyByXG4gICAgfCBJbnRlcnNlY3Rpb24gX1xuICAgIHwgQ29tcGxlbWVudCBfXG4gICAgfCBEaWZmZXJlbmNlIChfLCBfKSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IEdyb3VwIChfLCByKVxuICAgIHwgTm9fZ3JvdXAgclxuICAgIHwgTmVzdCByXG4gICAgfCBTZW0gKF8sIHIpXG4gICAgfCBQbWFyayAoXywgcilcbiAgICB8IENhc2UgclxuICAgIHwgU2VtX2dyZWVkeSAoXywgcikgLT4gd2l0bmVzcyByXG4gICAgfCBCZWdfb2ZfbGluZVxuICAgIHwgRW5kX29mX2xpbmVcbiAgICB8IEJlZ19vZl93b3JkXG4gICAgfCBFbmRfb2Zfd29yZFxuICAgIHwgTm90X2JvdW5kXG4gICAgfCBCZWdfb2Zfc3RyXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lXG4gICAgfCBTdGFydFxuICAgIHwgU3RvcFxuICAgIHwgRW5kX29mX3N0ciAtPiBcIlwiIGluXG4gIHdpdG5lc3MgKGhhbmRsZV9jYXNlIGZhbHNlIHQpXG5cbm1vZHVsZSBTZXEgPSBSc2VxXG5tb2R1bGUgTGlzdCA9IFJsaXN0XG5tb2R1bGUgR3JvdXAgPSBHcm91cFxuXG4oKiogezIgRGVwcmVjYXRlZCBmdW5jdGlvbnN9ICopXG5cbmxldCBzcGxpdF9mdWxsX3NlcSA9IFNlcS5zcGxpdF9mdWxsXG5sZXQgc3BsaXRfc2VxID0gU2VxLnNwbGl0XG5sZXQgbWF0Y2hlc19zZXEgPSBTZXEubWF0Y2hlc1xubGV0IGFsbF9zZXEgPSBTZXEuYWxsXG5cbnR5cGUgJ2EgZ2VuICAgICAgICA9ICdhIEdlbi5nZW5cbmxldCBhbGxfZ2VuICAgICAgICA9IEdlbi5hbGxcbmxldCBtYXRjaGVzX2dlbiAgICA9IEdlbi5tYXRjaGVzXG5sZXQgc3BsaXRfZ2VuICAgICAgPSBHZW4uc3BsaXRcbmxldCBzcGxpdF9mdWxsX2dlbiA9IEdlbi5zcGxpdF9mdWxsXG5cblxudHlwZSBzdWJzdHJpbmdzID0gR3JvdXAudFxuXG5sZXQgZ2V0ID0gR3JvdXAuZ2V0XG5sZXQgZ2V0X29mcyA9IEdyb3VwLm9mZnNldFxubGV0IGdldF9hbGwgPSBHcm91cC5hbGxcbmxldCBnZXRfYWxsX29mcyA9IEdyb3VwLmFsbF9vZmZzZXRcbmxldCB0ZXN0ID0gR3JvdXAudGVzdFxuXG50eXBlIG1hcmtpZCA9IE1hcmsudFxuXG5sZXQgbWFya2VkID0gTWFyay50ZXN0XG5sZXQgbWFya19zZXQgPSBNYXJrLmFsbFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCpcbkluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmV2aW91cyBjaGFyYWN0ZXI6XG4tIGRvZXMgbm90IGV4aXN0c1xuLSBpcyBhIGxldHRlclxuLSBpcyBub3QgYSBsZXR0ZXJcbi0gaXMgYSBuZXdsaW5lXG4tIGlzIGxhc3QgbmV3bGluZVxuXG5CZWdpbm5pbmcgb2Ygd29yZDpcbi0gcHJldmlvdXMgaXMgbm90IGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG4tIGN1cnJlbnQgaXMgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIHdvcmQ6XG4tIHByZXZpb3VzIGlzIGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG4tIGN1cnJlbnQgaXMgbm90IGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG5cbkJlZ2lubmluZyBvZiBsaW5lOlxuLSBwcmV2aW91cyBpcyBhIG5ld2xpbmUgb3IgZG9lcyBub3QgZXhpc3RcblxuQmVnaW5uaW5nIG9mIGJ1ZmZlcjpcbi0gcHJldmlvdXMgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIGJ1ZmZlclxuLSBjdXJyZW50IGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiBsaW5lXG4tIGN1cnJlbnQgaXMgYSBuZXdsaW5lIG9yIGRvZXMgbm90IGV4aXN0XG4qKVxuXG4oKlxuUmVwOiBlID0gVCxlIHwgKClcbiAgLSBzZW1hbnRpY3Mgb2YgdGhlIGNvbW1hIChzaG9ydGVzdC9sb25nZXN0L2ZpcnN0KVxuICAtIHNlbWFudGljcyBvZiB0aGUgdW5pb24gKGdyZWVkeS9ub24tZ3JlZWR5KVxuXG5Cb3VuZGVkIHJlcGV0aXRpb25cbiAgYXswLDN9ID0gKGEsKGEsYT8pPyk/XG4qKVxuXG50eXBlIGdyb3VwcyA9IEdyb3VwLnRcblxuaW5jbHVkZSBSbGlzdFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwYXJzZSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgdGVzdDIgYyBjJyA9ICFpICsgMSA8IGwgJiYgcy5bIWldID0gYyAmJiBzLlshaSArIDFdID0gYycgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgYWNjZXB0MiBjIGMnID0gbGV0IHIgPSB0ZXN0MiBjIGMnIGluIGlmIHIgdGhlbiBpIDo9ICFpICsgMjsgciBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdDIgJ1xcXFwnICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0MiAnXFxcXCcgJ3wnIHx8IHRlc3QyICdcXFxcJyAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBSZS5yZXAgciBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIFJlLnJlcDEgciBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIFJlLm9wdCByIGVsc2VcbiAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIFJlLm5vdG5sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBSZS5ib2xcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIFJlLmVvbFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIChicmFja2V0IFtdKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQyICdcXFxcJyAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIFJlLmdyb3VwIHJcbiAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnYCcgdGhlblxuICAgICAgICBSZS5ib3NcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdcXCcnIHRoZW5cbiAgICAgICAgUmUuZW9zXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPScgdGhlblxuICAgICAgICBSZS5zdGFydFxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ2InIHRoZW5cbiAgICAgICAgUmUuYWx0IFtSZS5ib3c7IFJlLmVvd11cbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdCJyB0aGVuXG4gICAgICAgIFJlLm5vdF9ib3VuZGFyeVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJzwnIHRoZW5cbiAgICAgICAgUmUuYm93XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPicgdGhlblxuICAgICAgICBSZS5lb3dcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICd3JyB0aGVuXG4gICAgICAgIFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ1cnIHRoZW5cbiAgICAgICAgUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ1snIHwgJ10nIHwgJy4nIHwgJ14nIHwgJyQnIHwgJ1xcXFwnIGFzIGMgLT5cbiAgICAgICAgICAgIFJlLmNoYXIgY1xuICAgICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgZW5kXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICBjICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBnZXQgKClcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbmxldCByZSA/KGNhc2UgPSB0cnVlKSBzID0gbGV0IHIgPSBwYXJzZSBzIGluIGlmIGNhc2UgdGhlbiByIGVsc2UgUmUubm9fY2FzZSByXG5cbmxldCBjb21waWxlID0gUmUuY29tcGlsZVxubGV0IGNvbXBpbGVfcGF0ID8oY2FzZSA9IHRydWUpIHMgPSBjb21waWxlIChyZSB+Y2FzZSBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqKVxuKCogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqKVxuKCogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAqKVxuKCogIGxpbmtpbmcgZXhjZXB0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2RpZmllZCBieSBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnIgZm9yIGludGVncmF0aW9uIGluIFJFICopXG5cbigqICRJZDogcmVfc3RyLm1sLHYgMS4zIDIwMDIvMDcvMDMgMTU6NDc6NTQgdm91aWxsb24gRXhwICQgKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG50eXBlIHJlZ2V4cCA9XG4gIHsgcmU6IFJlLnRcbiAgOyBtdGNoOiBSZS5yZSBMYXp5LnRcbiAgOyBzcmNoOiBSZS5yZSBMYXp5LnQgfVxuXG5sZXQgY29tcGlsZV9yZWdleHAgcyBjID1cbiAgbGV0IHJlID0gRW1hY3MucmUgfmNhc2U6KG5vdCBjKSBzIGluXG4gIHsgcmVcbiAgOyBtdGNoID0gbGF6eSAoUmUuY29tcGlsZSAoUmUuc2VxIFtSZS5zdGFydDsgcmVdKSlcbiAgOyBzcmNoID0gbGF6eSAoUmUuY29tcGlsZSByZSkgfVxuXG5sZXQgc3RhdGUgPSByZWYgTm9uZVxuXG5sZXQgc3RyaW5nX21hdGNoIHJlIHMgcCA9XG4gIHRyeVxuICAgIHN0YXRlIDo9IFNvbWUgKFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHMpO1xuICAgIHRydWVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIGZhbHNlXG5cbmxldCBzdHJpbmdfcGFydGlhbF9tYXRjaCByZSBzIHAgPVxuICBtYXRjaFxuICAgIFJlLmV4ZWNfcGFydGlhbCB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgc1xuICB3aXRoXG4gICAgYEZ1bGwgICAgIC0+IHN0cmluZ19tYXRjaCByZSBzIHBcbiAgfCBgUGFydGlhbCAgLT4gdHJ1ZVxuICB8IGBNaXNtYXRjaCAtPiBmYWxzZVxuXG5sZXQgc2VhcmNoX2ZvcndhcmQgcmUgcyBwID1cbiAgdHJ5XG4gICAgbGV0IHJlcyA9IFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLnNyY2gpIHMgaW5cbiAgICBzdGF0ZSA6PSBTb21lIHJlcztcbiAgICBmc3QgKFJlLkdyb3VwLm9mZnNldCByZXMgMClcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgcmVjIHNlYXJjaF9iYWNrd2FyZCByZSBzIHAgPVxuICB0cnlcbiAgICBsZXQgcmVzID0gUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgcyBpblxuICAgIHN0YXRlIDo9IFNvbWUgcmVzO1xuICAgIHBcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIGlmIHAgPSAwIHRoZW5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2VcbiAgICAgIHNlYXJjaF9iYWNrd2FyZCByZSBzIChwIC0gMSlcblxubGV0IHZhbGlkX2dyb3VwIG4gPVxuICBuID49IDAgJiYgbiA8IDEwICYmIChcbiAgICBtYXRjaCAhc3RhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBtIC0+IG4gPCBSZS5Hcm91cC5uYl9ncm91cHMgbVxuICApXG5cbmxldCBvZmZzZXRfZ3JvdXAgaSA9XG4gIG1hdGNoICFzdGF0ZSB3aXRoXG4gIHwgU29tZSBtIC0+IFJlLkdyb3VwLm9mZnNldCBtIGlcbiAgfCBOb25lICAgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBncm91cF9sZW4gaSA9XG4gIHRyeVxuICAgIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgaSBpblxuICAgIGUgLSBiXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgMFxuXG5sZXQgcmVjIHJlcGxfbGVuZ3RoIHJlcGwgcCBxIGxlbiA9XG4gIGlmIHAgPCBsZW4gdGhlbiBiZWdpblxuICAgIGlmIHJlcGwuW3BdIDw+ICdcXFxcJyB0aGVuXG4gICAgICByZXBsX2xlbmd0aCByZXBsIChwICsgMSkgKHEgKyAxKSBsZW5cbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgcCA9IHAgKyAxIGluXG4gICAgICBpZiBwID0gbGVuIHRoZW4gZmFpbHdpdGggXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIjtcbiAgICAgIGxldCBxID1cbiAgICAgICAgbWF0Y2ggcmVwbC5bcF0gd2l0aFxuICAgICAgICB8ICdcXFxcJyAtPiBxICsgMVxuICAgICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBxICsgZ3JvdXBfbGVuIChDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCcpXG4gICAgICAgIHwgXyAtPiBxICsgMiBpblxuICAgICAgcmVwbF9sZW5ndGggcmVwbCAocCArIDEpIHEgbGVuXG4gICAgZW5kXG4gIGVuZCBlbHNlXG4gICAgcVxuXG5sZXQgcmVjIHJlcGxhY2Ugb3JpZyByZXBsIHAgcmVzIHEgbGVuID1cbiAgaWYgcCA8IGxlbiB0aGVuIGJlZ2luXG4gICAgbGV0IGMgPSByZXBsLltwXSBpblxuICAgIGlmIGMgPD4gJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIEJ5dGVzLnNldCByZXMgcSBjO1xuICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAxKSByZXMgKHEgKyAxKSBsZW5cbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgbWF0Y2ggcmVwbC5bcCArIDFdIHdpdGhcbiAgICAgICAgJ1xcXFwnIC0+XG4gICAgICAgIEJ5dGVzLnNldCByZXMgcSAnXFxcXCc7XG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgMSkgbGVuXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIChDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgICAgICBsZXQgZCA9IGUgLSBiIGluXG4gICAgICAgICAgICBpZiBkID4gMCB0aGVuIFN0cmluZy5ibGl0IG9yaWcgYiByZXMgcSBkO1xuICAgICAgICAgICAgZFxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAwXG4gICAgICAgIGluXG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgZCkgbGVuXG4gICAgICB8IGMgLT5cbiAgICAgICAgQnl0ZXMuc2V0IHJlcyBxICdcXFxcJztcbiAgICAgICAgQnl0ZXMuc2V0IHJlcyAocSArIDEpIGM7XG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgMikgbGVuXG4gICAgZW5kXG4gIGVuZFxuXG5sZXQgcmVwbGFjZW1lbnRfdGV4dCByZXBsIG9yaWcgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCByZXBsIGluXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgKHJlcGxfbGVuZ3RoIHJlcGwgMCAwIGxlbikgaW5cbiAgcmVwbGFjZSBvcmlnIHJlcGwgMCByZXMgMCAoU3RyaW5nLmxlbmd0aCByZXBsKTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxubGV0IHF1b3RlIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlICgyICogbGVuKSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICdbJyB8ICddJyB8ICcqJyB8ICcuJyB8ICdcXFxcJyB8ICc/JyB8ICcrJyB8ICdeJyB8ICckJyBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICAgIHwgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgZG9uZTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgc3RyaW5nX2JlZm9yZSBzIG4gPSBTdHJpbmcuc3ViIHMgMCBuXG5cbmxldCBzdHJpbmdfYWZ0ZXIgcyBuID0gU3RyaW5nLnN1YiBzIG4gKFN0cmluZy5sZW5ndGggcyAtIG4pXG5cbmxldCBmaXJzdF9jaGFycyBzIG4gPSBTdHJpbmcuc3ViIHMgMCBuXG5cbmxldCBsYXN0X2NoYXJzIHMgbiA9IFN0cmluZy5zdWIgcyAoU3RyaW5nLmxlbmd0aCBzIC0gbikgblxuXG5sZXQgcmVnZXhwIGUgPSBjb21waWxlX3JlZ2V4cCBlIGZhbHNlXG5cbmxldCByZWdleHBfY2FzZV9mb2xkIGUgPSBjb21waWxlX3JlZ2V4cCBlIHRydWVcblxubGV0IHJlZ2V4cF9zdHJpbmcgcyA9IGNvbXBpbGVfcmVnZXhwIChxdW90ZSBzKSBmYWxzZVxuXG5sZXQgcmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQgcyA9IGNvbXBpbGVfcmVnZXhwIChxdW90ZSBzKSB0cnVlXG5cbmxldCBncm91cF9iZWdpbm5pbmcgbiA9XG4gIGlmIG5vdCAodmFsaWRfZ3JvdXAgbikgdGhlbiBpbnZhbGlkX2FyZyBcIlN0ci5ncm91cF9iZWdpbm5pbmdcIjtcbiAgbGV0IHBvcyA9IGZzdCAob2Zmc2V0X2dyb3VwIG4pIGluXG4gIGlmIHBvcyA9IC0xIHRoZW5cbiAgICByYWlzZSBOb3RfZm91bmRcbiAgZWxzZVxuICAgIHBvc1xuXG5sZXQgZ3JvdXBfZW5kIG4gPVxuICBpZiBub3QgKHZhbGlkX2dyb3VwIG4pIHRoZW4gaW52YWxpZF9hcmcgXCJTdHIuZ3JvdXBfZW5kXCI7XG4gIGxldCBwb3MgPSBzbmQgKG9mZnNldF9ncm91cCBuKSBpblxuICBpZiBwb3MgPSAtMSB0aGVuXG4gICAgcmFpc2UgTm90X2ZvdW5kXG4gIGVsc2VcbiAgICBwb3NcblxubGV0IG1hdGNoZWRfZ3JvdXAgbiB0eHQgPVxuICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIG4gaW5cbiAgU3RyaW5nLnN1YiB0eHQgYiAoZSAtIGIpXG5cbmxldCByZXBsYWNlX21hdGNoZWQgcmVwbCBtYXRjaGVkID0gcmVwbGFjZW1lbnRfdGV4dCByZXBsIG1hdGNoZWRcblxubGV0IG1hdGNoX2JlZ2lubmluZyAoKSA9IGdyb3VwX2JlZ2lubmluZyAwXG5hbmQgbWF0Y2hfZW5kICgpID0gZ3JvdXBfZW5kIDBcbmFuZCBtYXRjaGVkX3N0cmluZyB0eHQgPSBtYXRjaGVkX2dyb3VwIDAgdHh0XG5cbmxldCBzdWJzdGl0dXRlX2ZpcnN0IGV4cHIgcmVwbF9mdW4gdGV4dCA9XG4gIHRyeVxuICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZCBleHByIHRleHQgMCBpblxuICAgIFN0cmluZy5jb25jYXQgXCJcIiBbc3RyaW5nX2JlZm9yZSB0ZXh0IHBvcztcbiAgICAgICAgICAgICAgICAgICAgICByZXBsX2Z1biB0ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19hZnRlciB0ZXh0IChtYXRjaF9lbmQgKCkpXVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHRleHRcblxubGV0IGdsb2JhbF9zdWJzdGl0dXRlIGV4cHIgcmVwbF9mdW4gdGV4dCA9XG4gIGxldCByZWMgcmVwbGFjZSBhY2N1IHN0YXJ0IGxhc3Rfd2FzX2VtcHR5ID1cbiAgICBsZXQgc3RhcnRwb3MgPSBpZiBsYXN0X3dhc19lbXB0eSB0aGVuIHN0YXJ0ICsgMSBlbHNlIHN0YXJ0IGluXG4gICAgaWYgc3RhcnRwb3MgPiBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgbWF0Y2ggc2VhcmNoX2ZvcndhcmQgZXhwciB0ZXh0IHN0YXJ0cG9zIHdpdGhcbiAgICAgIHwgcG9zIC0+XG4gICAgICAgIGxldCBlbmRfcG9zID0gbWF0Y2hfZW5kICgpIGluXG4gICAgICAgIGxldCByZXBsX3RleHQgPSByZXBsX2Z1biB0ZXh0IGluXG4gICAgICAgIHJlcGxhY2UgKHJlcGxfdGV4dCA6OiBTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkgOjogYWNjdSlcbiAgICAgICAgICBlbmRfcG9zIChlbmRfcG9zID0gcG9zKVxuICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICBpblxuICBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IChyZXBsYWNlIFtdIDAgZmFsc2UpKVxuXG5sZXQgZ2xvYmFsX3JlcGxhY2UgZXhwciByZXBsIHRleHQgPVxuICBnbG9iYWxfc3Vic3RpdHV0ZSBleHByIChyZXBsYWNlbWVudF90ZXh0IHJlcGwpIHRleHRcbmFuZCByZXBsYWNlX2ZpcnN0IGV4cHIgcmVwbCB0ZXh0ID1cbiAgc3Vic3RpdHV0ZV9maXJzdCBleHByIChyZXBsYWNlbWVudF90ZXh0IHJlcGwpIHRleHRcblxubGV0IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIHJlIHMgcCA9XG4gIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZCByZSBzIHAgaW5cbiAgaWYgbWF0Y2hfZW5kICgpID4gcCB0aGVuXG4gICAgcG9zXG4gIGVsc2UgaWYgcCA8IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgc2VhcmNoX2ZvcndhcmQgcmUgcyAocCArIDEpXG4gIGVsc2VcbiAgICByYWlzZSBOb3RfZm91bmRcblxubGV0IGJvdW5kZWRfc3BsaXQgZXhwciB0ZXh0IG51bSA9XG4gIGxldCBzdGFydCA9XG4gICAgaWYgc3RyaW5nX21hdGNoIGV4cHIgdGV4dCAwIHRoZW4gbWF0Y2hfZW5kICgpIGVsc2UgMCBpblxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPj0gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIHNwbGl0ICgoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpKSA6OiBhY2N1KVxuICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBMaXN0LnJldiAoc3BsaXQgW10gc3RhcnQgbnVtKVxuXG5sZXQgc3BsaXQgZXhwciB0ZXh0ID0gYm91bmRlZF9zcGxpdCBleHByIHRleHQgMFxuXG5sZXQgYm91bmRlZF9zcGxpdF9kZWxpbSBleHByIHRleHQgbnVtID1cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID4gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIHNwbGl0IChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkgOjogYWNjdSlcbiAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgaWYgdGV4dCA9IFwiXCIgdGhlblxuICAgIFtdXG4gIGVsc2VcbiAgICBMaXN0LnJldiAoc3BsaXQgW10gMCBudW0pXG5cbmxldCBzcGxpdF9kZWxpbSBleHByIHRleHQgPSBib3VuZGVkX3NwbGl0X2RlbGltIGV4cHIgdGV4dCAwXG5cbnR5cGUgc3BsaXRfcmVzdWx0ID0gVGV4dCBvZiBzdHJpbmcgfCBEZWxpbSBvZiBzdHJpbmdcblxubGV0IGJvdW5kZWRfZnVsbF9zcGxpdCBleHByIHRleHQgbnVtID1cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID49IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICBUZXh0IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIGxldCBzID0gbWF0Y2hlZF9zdHJpbmcgdGV4dCBpblxuICAgICAgICBpZiBwb3MgPiBzdGFydCB0aGVuXG4gICAgICAgICAgc3BsaXQgKERlbGltIChzKSA6OlxuICAgICAgICAgICAgICAgICBUZXh0IChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcyAtIHN0YXJ0KSkgOjpcbiAgICAgICAgICAgICAgICAgYWNjdSlcbiAgICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHNwbGl0IChEZWxpbSAocykgOjogYWNjdSlcbiAgICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIFRleHQgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIExpc3QucmV2IChzcGxpdCBbXSAwIG51bSlcblxubGV0IGZ1bGxfc3BsaXQgZXhwciB0ZXh0ID0gYm91bmRlZF9mdWxsX3NwbGl0IGV4cHIgdGV4dCAwXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuXG50eXBlIGVuY2xvc2VkID1cbiAgfCBDaGFyIG9mIGNoYXJcbiAgfCBSYW5nZSBvZiBjaGFyICogY2hhclxuXG50eXBlIHBpZWNlID1cbiAgfCBFeGFjdGx5IG9mIGNoYXJcbiAgfCBBbnlfb2Ygb2YgZW5jbG9zZWQgbGlzdFxuICB8IEFueV9idXQgb2YgZW5jbG9zZWQgbGlzdFxuICB8IE9uZVxuICB8IE1hbnlcbiAgfCBNYW55TWFueVxuXG50eXBlIHQgPSBwaWVjZSBsaXN0XG5cbmxldCBvZl9zdHJpbmcgfmRvdWJsZV9hc3RlcmlzayBzIDogdCA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgcmVhZCBjID1cbiAgICBsZXQgciA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gICAgaWYgciB0aGVuIGluY3IgaTtcbiAgICByXG4gIGluXG5cbiAgKCoqXG4gICBbcmVhZF9haGVhZCBwYXR0ZXJuXSB3aWxsIGF0dGVtcHQgdG8gcmVhZCBbcGF0dGVybl0gYW5kIHdpbGwgcmV0dXJuIFt0cnVlXSBpZiBpdCB3YXMgc3VjY2Vzc2Z1bC5cbiAgIElmIGl0IGZhaWxzLCBpdCB3aWxsIHJldHVybiBbZmFsc2VdIGFuZCBub3QgaW5jcmVtZW50IHRoZSByZWFkIGluZGV4LlxuICAqKVxuICBsZXQgcmVhZF9haGVhZCBwYXR0ZXJuID1cbiAgICBsZXQgcGF0dGVybl9sZW4gPSBTdHJpbmcubGVuZ3RoIHBhdHRlcm4gaW5cbiAgICAoKiBpZiB0aGUgcGF0dGVybiB3ZSBhcmUgbG9va2luZyBmb3IgZXhlZWRzIHRoZSByZW1haW5pbmcgbGVuZ3RoIG9mIHMsIHJldHVybiBmYWxzZSBpbW1lZGlhdGVseSAqKVxuICAgIGlmICFpICsgcGF0dGVybl9sZW4gPj0gbCB0aGVuXG4gICAgICBmYWxzZVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBmb3IgaiA9IDAgdG8gcGF0dGVybl9sZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IGZvdW5kID0gbm90IChlb3MgKCkpICYmIHMuWyFpICsgal0gPSBwYXR0ZXJuLltqXSBpblxuICAgICAgICAgIGlmIG5vdCBmb3VuZCB0aGVuIHJhaXNlX25vdHJhY2UgRXhpdDtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaSA6PSAhaSArIHBhdHRlcm5fbGVuO1xuICAgICAgICB0cnVlXG4gICAgICB3aXRoIHwgRXhpdCAgLT4gZmFsc2VcbiAgaW5cblxuICBsZXQgY2hhciAoKSA9XG4gICAgaWdub3JlIChyZWFkICdcXFxcJyA6IGJvb2wpO1xuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCByID0gcy5bIWldIGluXG4gICAgaW5jciBpO1xuICAgIHJcbiAgaW5cblxuICBsZXQgZW5jbG9zZWQgKCkgOiBlbmNsb3NlZCBsaXN0ID1cbiAgICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgICAoKiBUaGlzIHJldHVybnMgdGhlIGxpc3QgaW4gcmV2ZXJzZSBvcmRlciwgYnV0IG9yZGVyIGlzbid0IGltcG9ydGFudCBhbnl3YXkgKilcbiAgICAgIGlmIHMgPD4gW10gJiYgcmVhZCAnXSdcbiAgICAgIHRoZW4gc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgICAgaWYgbm90IChyZWFkICctJylcbiAgICAgICAgdGhlbiBsb29wIChDaGFyIGMgOjogcylcbiAgICAgICAgZWxzZSBpZiByZWFkICddJ1xuICAgICAgICB0aGVuIENoYXIgYyA6OiBDaGFyICctJyA6OiBzXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgbG9vcCAoUmFuZ2UgKGMsIGMnKSA6OiBzKVxuICAgIGluXG4gICAgbG9vcCBbXVxuICBpblxuXG4gIGxldCBwaWVjZSAoKSA9XG4gICAgaWYgZG91YmxlX2FzdGVyaXNrICYmIHJlYWRfYWhlYWQgXCIvKipcIiAmJiBub3QgKGVvcyAoKSlcbiAgICB0aGVuIE1hbnlNYW55XG4gICAgZWxzZSBpZiByZWFkICcqJ1xuICAgIHRoZW4gaWYgZG91YmxlX2FzdGVyaXNrICYmIHJlYWQgJyonXG4gICAgICB0aGVuIE1hbnlNYW55XG4gICAgICBlbHNlIE1hbnlcbiAgICBlbHNlIGlmIHJlYWQgJz8nXG4gICAgdGhlbiBPbmVcbiAgICBlbHNlIGlmIG5vdCAocmVhZCAnWycpXG4gICAgdGhlbiBFeGFjdGx5IChjaGFyICgpKVxuICAgIGVsc2UgaWYgcmVhZCAnXicgfHwgcmVhZCAnISdcbiAgICB0aGVuIEFueV9idXQgKGVuY2xvc2VkICgpKVxuICAgIGVsc2UgQW55X29mIChlbmNsb3NlZCAoKSlcbiAgaW5cblxuICBsZXQgcmVjIGxvb3AgcGllY2VzID1cbiAgICBpZiBlb3MgKClcbiAgICB0aGVuIExpc3QucmV2IHBpZWNlc1xuICAgIGVsc2UgbG9vcCAocGllY2UgKCkgOjogcGllY2VzKVxuICBpblxuXG4gIGxvb3AgW11cblxubGV0IG11bCBsIGwnID1cbiAgTGlzdC5mbGF0dGVuIChMaXN0Lm1hcCAoZnVuIHMgLT4gTGlzdC5tYXAgKGZ1biBzJyAtPiBzIF4gcycpIGwnKSBsKVxuXG5sZXQgZXhwbG9kZSBzdHIgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZWMgZXhwbCBpbm5lciBzIGkgYWNjIGJlZyA9XG4gICAgaWYgaSA+PSBsIHRoZW4gYmVnaW5cbiAgICAgIGlmIGlubmVyIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSwgaSlcbiAgICBlbmQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICB8ICdcXFxcJyAtPiBleHBsIGlubmVyIHMgKGkgKyAyKSBhY2MgYmVnXG4gICAgICB8ICd7JyAtPlxuICAgICAgICBsZXQgKHQsIGknKSA9IGV4cGwgdHJ1ZSAoaSArIDEpIChpICsgMSkgW10gW1wiXCJdIGluXG4gICAgICAgIGV4cGwgaW5uZXIgaScgaScgYWNjXG4gICAgICAgICAgKG11bCBiZWcgKG11bCBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSB0KSlcbiAgICAgIHwgJywnIHdoZW4gaW5uZXIgLT5cbiAgICAgICAgZXhwbCBpbm5lciAoaSArIDEpIChpICsgMSlcbiAgICAgICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSBAIGFjYykgW1wiXCJdXG4gICAgICB8ICd9JyB3aGVuIGlubmVyIC0+XG4gICAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIEAgYWNjLCBpICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBleHBsIGlubmVyIHMgKGkgKyAxKSBhY2MgYmVnXG4gIGluXG4gIExpc3QucmV2IChmc3QgKGV4cGwgZmFsc2UgMCAwIFtdIFtcIlwiXSkpXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVfcGllY2VzICAgICAgICAgICAgICAgIDogUmUudCBsaXN0OyAgKCogbGFzdCBwaWVjZSBhdCBoZWFkIG9mIGxpc3QuICopXG4gICAgcmVtYWluaW5nICAgICAgICAgICAgICAgIDogcGllY2UgbGlzdDsgKCogbGFzdCBwaWVjZSBhdCB0YWlsIG9mIGxpc3QuICopXG4gICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiAgIDogYm9vbDsgICAgICAgKCogdHJ1ZSBhdCBzdGFydCBvZiBwYXR0ZXJuICopXG4gICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50IDogYm9vbDsgICAgICAgKCogdHJ1ZSBhdCBzdGFydCBvZiBwYXR0ZXJuIG9yIGltbWVkaWF0ZWx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgJy8nICopXG4gICAgcGF0aG5hbWUgICAgICAgICAgICAgICAgIDogYm9vbDtcbiAgICBtYXRjaF9iYWNrc2xhc2hlcyAgICAgICAgOiBib29sO1xuICAgIHBlcmlvZCAgICAgICAgICAgICAgICAgICA6IGJvb2w7XG4gIH1cblxuICBsZXQgY3JlYXRlIH5wZXJpb2QgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyByZW1haW5pbmcgPVxuICAgIHtcbiAgICAgIHJlX3BpZWNlcyA9IFtdO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiA9IHRydWU7XG4gICAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgPSB0cnVlO1xuICAgICAgcGF0aG5hbWU7XG4gICAgICBtYXRjaF9iYWNrc2xhc2hlcztcbiAgICAgIHBlcmlvZDtcbiAgICAgIHJlbWFpbmluZztcbiAgICB9XG5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCB0ID1cbiAgICB0LnBlcmlvZCAmJiAoXG4gICAgICB0LmFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gfHxcbiAgICAgICh0LmFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCAmJiB0LnBhdGhuYW1lKVxuICAgIClcblxuICBsZXQgZXhwbGljaXRfc2xhc2ggdCA9IHQucGF0aG5hbWVcblxuICBsZXQgc2xhc2hlcyB0ID1cbiAgICBpZiB0Lm1hdGNoX2JhY2tzbGFzaGVzIHRoZW4gWycvJzsgJ1xcXFwnXSBlbHNlIFsnLyddXG5cbiAgbGV0IGFwcGVuZCA/KGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudD1mYWxzZSkgdCBwaWVjZSA9XG4gICAgeyB0IHdpdGhcbiAgICAgIHJlX3BpZWNlcyA9IHBpZWNlIDo6IHQucmVfcGllY2VzO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiA9IGZhbHNlO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50O1xuICAgIH1cblxuICBsZXQgdG9fcmUgdCA9IFJlLnNlcSAoTGlzdC5yZXYgdC5yZV9waWVjZXMpXG5cbiAgbGV0IG5leHQgdCA9XG4gICAgbWF0Y2ggdC5yZW1haW5pbmcgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgcGllY2UgOjogcmVtYWluaW5nIC0+IFNvbWUgKHBpZWNlLCB7IHQgd2l0aCByZW1haW5pbmcgfSlcbmVuZFxuXG5sZXQgb25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kID1cbiAgUmUuY29tcGwgKFxuICAgIExpc3QuY29uY2F0IFtcbiAgICAgIGlmIGV4cGxpY2l0X3NsYXNoICB0aGVuIExpc3QubWFwIFJlLmNoYXIgc2xhc2hlcyBlbHNlIFtdO1xuICAgICAgaWYgZXhwbGljaXRfcGVyaW9kIHRoZW4gW1JlLmNoYXIgJy4nXSBlbHNlIFtdO1xuICAgIF1cbiAgKVxuXG5sZXQgZW5jbG9zZWQgZW5jbG9zZWQgPVxuICBtYXRjaCBlbmNsb3NlZCB3aXRoXG4gIHwgQ2hhciBjIC0+IFJlLmNoYXIgY1xuICB8IFJhbmdlIChsb3csIGhpZ2gpIC0+IFJlLnJnIGxvdyBoaWdoXG5cbmxldCBlbmNsb3NlZF9zZXQgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Qga2luZCBzZXQgPVxuICBsZXQgc2V0ID0gTGlzdC5tYXAgZW5jbG9zZWQgc2V0IGluXG4gIGxldCBlbmNsb3N1cmUgPVxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgIHwgYEFueV9vZiAtPiBSZS5hbHQgc2V0XG4gICAgfCBgQW55X2J1dCAtPiBSZS5jb21wbCBzZXRcbiAgaW5cbiAgUmUuaW50ZXIgW2VuY2xvc3VyZTsgb25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kXVxuXG5sZXQgZXhhY3RseSBzdGF0ZSBjID1cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIGxldCBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgPSBMaXN0Lm1lbSBjIHNsYXNoZXMgaW5cbiAgbGV0IGNoYXJzID0gaWYgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50IHRoZW4gc2xhc2hlcyBlbHNlIFtjXSBpblxuICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLmFsdCAoTGlzdC5tYXAgUmUuY2hhciBjaGFycykpIH5hbV9hdF9zdGFydF9vZl9jb21wb25lbnRcblxubGV0IG1hbnlfbWFueSBzdGF0ZSA9XG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBzdGF0ZS5TdGF0ZS5wZXJpb2QgJiYgc3RhdGUuU3RhdGUucGF0aG5hbWUgaW5cbiAgbGV0IGZpcnN0X2V4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbGV0IG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kID1cbiAgICBSZS5zZXEgW1xuICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDtcbiAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgIF1cbiAgaW5cbiAgKCogV2UgbXVzdCBtYXRjaCBjb21wb25lbnRzIGluZGl2aWR1YWxseSB3aGVuIFtwZXJpb2RdIGZsYWcgaXMgc2V0LFxuICAgICBtYWtpbmcgc3VyZSB0byBub3QgbWF0Y2ggW1wiZm9vLy5iYXJcIl0uICopXG4gIFN0YXRlLmFwcGVuZCBzdGF0ZSAoXG4gICAgUmUuc2VxIFtcbiAgICAgIFJlLm9wdCAobWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2Q6Zmlyc3RfZXhwbGljaXRfcGVyaW9kKTtcbiAgICAgIFJlLnJlcCAoXG4gICAgICAgIFJlLnNlcSBbXG4gICAgICAgICAgUmUuYWx0IChMaXN0Lm1hcCBSZS5jaGFyIHNsYXNoZXMpO1xuICAgICAgICAgIFJlLm9wdCAobWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2QpO1xuICAgICAgICBdXG4gICAgICApO1xuICAgIF0pXG5cbmxldCBtYW55IChzdGF0ZSA6IFN0YXRlLnQpID1cbiAgbGV0IGV4cGxpY2l0X3NsYXNoID0gU3RhdGUuZXhwbGljaXRfc2xhc2ggc3RhdGUgaW5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgKCogV2hldGhlciB3ZSBtdXN0IGV4cGxpY2l0bHkgbWF0Y2ggcGVyaW9kIGRlcGVuZHMgb24gdGhlIHN1cnJvdW5kaW5nIGNoYXJhY3RlcnMsIGJ1dFxuICAgICBzbGFzaGVzIGFyZSBlYXN5IHRvIGV4cGxpY2l0IG1hdGNoLiBUaGlzIGNvbmRpdGlvbmFsIHNwbGl0cyBvdXQgc29tZSBzaW1wbGUgY2FzZXMuXG4gICopXG4gIGlmIG5vdCBleHBsaWNpdF9wZXJpb2QgdGhlbiBiZWdpblxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QpKVxuICBlbmQgZWxzZSBpZiBub3QgZXhwbGljaXRfc2xhc2ggdGhlbiBiZWdpblxuICAgICgqIEluIHRoaXMgc3RhdGUsIHdlIGV4cGxpY2l0bHkgbWF0Y2ggcGVyaW9kcyBvbmx5IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyAqKVxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUub3B0IChcbiAgICAgIFJlLnNlcSBbXG4gICAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDpmYWxzZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kO1xuICAgICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6ZmFsc2UgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgICBdXG4gICAgKSlcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBsZXQgbm90X2VtcHR5ID1cbiAgICAgIFJlLnNlcSBbXG4gICAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6dHJ1ZTtcbiAgICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgICBdXG4gICAgaW5cbiAgICAoKiBbbWF5YmVfZW1wdHldIGlzIHRoZSBkZWZhdWx0IHRyYW5zbGF0aW9uIG9mIE1hbnksIGV4Y2VwdCBpbiBzb21lIHNwZWNpYWwgY2FzZXMuXG4gICAgKilcbiAgICBsZXQgbWF5YmVfZW1wdHkgPSBSZS5vcHQgbm90X2VtcHR5IGluXG4gICAgbGV0IGVuY2xvc2VkX3NldCBzdGF0ZSBraW5kIHNldCA9XG4gICAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLmFsdCBbXG4gICAgICAgIGVuY2xvc2VkX3NldCBraW5kIHNldCB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOnRydWU7XG4gICAgICAgIFJlLnNlcSBbXG4gICAgICAgICAgbm90X2VtcHR5O1xuICAgICAgICAgICgqIFNpbmNlIFtub3RfZW1wdHldIG1hdGNoZWQsIHN1YnNlcXVlbnQgZG90cyBhcmUgbm90IGxlYWRpbmcuICopXG4gICAgICAgICAgZW5jbG9zZWRfc2V0IGtpbmQgc2V0IH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2U7XG4gICAgICAgIF07XG4gICAgICBdKVxuICAgIGluXG4gICAgbGV0IHJlYyBsb29rYWhlYWQgc3RhdGUgPVxuICAgICAgbWF0Y2ggU3RhdGUubmV4dCBzdGF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIG1heWJlX2VtcHR5XG4gICAgICAoKiBnbG9iICoqID09PSBnbG9iICogLiAqKVxuICAgICAgfCBTb21lIChNYW55LCBzdGF0ZSkgLT4gbG9va2FoZWFkIHN0YXRlXG4gICAgICB8IFNvbWUgKEV4YWN0bHkgYywgc3RhdGUpIC0+XG4gICAgICAgIGxldCBzdGF0ZSA9XG4gICAgICAgICAgU3RhdGUuYXBwZW5kIHN0YXRlXG4gICAgICAgICAgICAoaWYgYyA9ICcuJ1xuICAgICAgICAgICAgIHRoZW4gbm90X2VtcHR5XG4gICAgICAgICAgICAgZWxzZSBtYXliZV9lbXB0eSlcbiAgICAgICAgaW5cbiAgICAgICAgZXhhY3RseSBzdGF0ZSBjXG4gICAgICAoKiBnbG9iICo/ID09PSBnbG9iID8qICopXG4gICAgICB8IFNvbWUgKE9uZSwgc3RhdGUpIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSBub3RfZW1wdHlcbiAgICAgIHwgU29tZSAoQW55X29mIGVuY2xvc2VkLCBzdGF0ZSkgLT4gZW5jbG9zZWRfc2V0IHN0YXRlIGBBbnlfb2YgZW5jbG9zZWRcbiAgICAgIHwgU29tZSAoQW55X2J1dCBlbmNsb3NlZCwgc3RhdGUpIC0+IGVuY2xvc2VkX3NldCBzdGF0ZSBgQW55X2J1dCBlbmNsb3NlZFxuICAgICAgKCogKiB0aGVuICoqID09PSAqKiAqKVxuICAgICAgfCBTb21lIChNYW55TWFueSwgc3RhdGUpIC0+IG1hbnlfbWFueSBzdGF0ZVxuICAgIGluXG4gICAgbG9va2FoZWFkIHN0YXRlXG4gIGVuZFxuXG5sZXQgcGllY2Ugc3RhdGUgcGllY2UgPVxuICBsZXQgZXhwbGljaXRfc2xhc2ggPSBTdGF0ZS5leHBsaWNpdF9zbGFzaCBzdGF0ZSBpblxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBtYXRjaCBwaWVjZSB3aXRoXG4gIHwgT25lIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSAob25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kKVxuICB8IE1hbnkgLT4gbWFueSBzdGF0ZVxuICB8IEFueV9vZiBlbmNsb3NlZCAtPlxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoZW5jbG9zZWRfc2V0IGBBbnlfb2YgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgZW5jbG9zZWQpXG4gIHwgQW55X2J1dCBlbmNsb3NlZCAtPlxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoZW5jbG9zZWRfc2V0IGBBbnlfYnV0IH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGVuY2xvc2VkKVxuICB8IEV4YWN0bHkgYyAtPiBleGFjdGx5IHN0YXRlIGNcbiAgfCBNYW55TWFueSAtPiBtYW55X21hbnkgc3RhdGVcblxubGV0IGdsb2IgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIGdsb2IgPVxuICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgIG1hdGNoIFN0YXRlLm5leHQgc3RhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBTdGF0ZS50b19yZSBzdGF0ZVxuICAgIHwgU29tZSAocCwgc3RhdGUpIC0+IGxvb3AgKHBpZWNlIHN0YXRlIHApXG4gIGluXG4gIGxvb3AgKFN0YXRlLmNyZWF0ZSB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgZ2xvYilcblxubGV0IGdsb2JcbiAgICAgID8oYW5jaG9yZWQgPSBmYWxzZSlcbiAgICAgID8ocGF0aG5hbWUgPSB0cnVlKVxuICAgICAgPyhtYXRjaF9iYWNrc2xhc2hlcyA9IGZhbHNlKVxuICAgICAgPyhwZXJpb2QgPSB0cnVlKVxuICAgICAgPyhleHBhbmRfYnJhY2VzID0gZmFsc2UpXG4gICAgICA/KGRvdWJsZV9hc3RlcmlzayA9IHRydWUpXG4gICAgICBzXG4gID1cbiAgbGV0IHRvX3JlIHMgPVxuICAgIGxldCByZSA9IGdsb2IgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIChvZl9zdHJpbmcgfmRvdWJsZV9hc3RlcmlzayBzKSBpblxuICAgIGlmIGFuY2hvcmVkXG4gICAgdGhlbiBSZS53aG9sZV9zdHJpbmcgcmVcbiAgICBlbHNlIHJlXG4gIGluXG4gIGlmIGV4cGFuZF9icmFjZXNcbiAgdGhlbiBSZS5hbHQgKExpc3QubWFwIHRvX3JlIChleHBsb2RlIHMpKVxuICBlbHNlIHRvX3JlIHNcblxubGV0IGdsb2InID9hbmNob3JlZCBwZXJpb2QgcyA9IGdsb2IgP2FuY2hvcmVkIH5wZXJpb2Qgc1xuXG5sZXQgZ2xvYnggP2FuY2hvcmVkIHMgPSBnbG9iID9hbmNob3JlZCB+ZXhwYW5kX2JyYWNlczp0cnVlIHNcblxubGV0IGdsb2J4JyA/YW5jaG9yZWQgcGVyaW9kIHMgPSBnbG9iID9hbmNob3JlZCB+ZXhwYW5kX2JyYWNlczp0cnVlIH5wZXJpb2Qgc1xuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwb3NpeF9jbGFzc19vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwiYWxwaGFcIiAgLT4gUmUuYWxwaGFcbiAgfCBcImFsbnVtXCIgIC0+IFJlLmFsbnVtXG4gIHwgXCJhc2NpaVwiICAtPiBSZS5hc2NpaVxuICB8IFwiYmxhbmtcIiAgLT4gUmUuYmxhbmtcbiAgfCBcImNudHJsXCIgIC0+IFJlLmNudHJsXG4gIHwgXCJkaWdpdFwiICAtPiBSZS5kaWdpdFxuICB8IFwibG93ZXJcIiAgLT4gUmUubG93ZXJcbiAgfCBcInByaW50XCIgIC0+IFJlLnByaW50XG4gIHwgXCJzcGFjZVwiICAtPiBSZS5zcGFjZVxuICB8IFwidXBwZXJcIiAgLT4gUmUudXBwZXJcbiAgfCBcIndvcmRcIiAgIC0+IFJlLndvcmRjXG4gIHwgXCJwdW5jdFwiICAtPiBSZS5wdW5jdFxuICB8IFwiZ3JhcGhcIiAgLT4gUmUuZ3JhcGhcbiAgfCBcInhkaWdpdFwiIC0+IFJlLnhkaWdpdFxuICB8IGNsYXNzXyAgIC0+IGludmFsaWRfYXJnIChcIkludmFsaWQgcGNyZSBjbGFzczogXCIgXiBjbGFzc18pXG5cbmxldCBwb3NpeF9jbGFzc19zdHJpbmdzID1cbiAgWyBcImFscGhhXCIgOyBcImFsbnVtXCIgOyBcImFzY2lpXCJcbiAgOyBcImJsYW5rXCIgOyBcImNudHJsXCIgOyBcImRpZ2l0XCJcbiAgOyBcImxvd2VyXCIgOyBcInByaW50XCIgOyBcInNwYWNlXCJcbiAgOyBcInVwcGVyXCIgOyBcIndvcmRcIiAgOyBcInB1bmN0XCJcbiAgOyBcImdyYXBoXCIgOyBcInhkaWdpdFwiIF1cblxubGV0IHBhcnNlIG11bHRpbGluZSBkb2xsYXJfZW5kb25seSBkb3RhbGwgdW5ncmVlZHkgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgYWNjZXB0X3MgcycgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMnIGluXG4gICAgdHJ5XG4gICAgICBmb3IgaiA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICB0cnkgaWYgcycuW2pdIDw+IHMuWyFpICsgal0gdGhlbiByYWlzZSBFeGl0XG4gICAgICAgIHdpdGggXyAtPiByYWlzZSBFeGl0XG4gICAgICBkb25lO1xuICAgICAgaSA6PSAhaSArIGxlbjtcbiAgICAgIHRydWVcbiAgICB3aXRoIEV4aXQgLT4gZmFsc2UgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuICBsZXQgdW5nZXQgKCkgPSBkZWNyIGkgaW5cbiAgbGV0IGdyZWVkeV9tb2QgciA9XG4gICAgbGV0IGdyID0gYWNjZXB0ICc/JyBpblxuICAgIGxldCBnciA9IGlmIHVuZ3JlZWR5IHRoZW4gbm90IGdyIGVsc2UgZ3IgaW5cbiAgICBpZiBnciB0aGVuIFJlLm5vbl9ncmVlZHkgciBlbHNlIFJlLmdyZWVkeSByXG4gIGluXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QgJ3wnIHx8IHRlc3QgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gZ3JlZWR5X21vZCAoUmUucmVwIHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gZ3JlZWR5X21vZCAoUmUucmVwMSByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIGdyZWVkeV9tb2QgKFJlLm9wdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICd7JyB0aGVuXG4gICAgICBtYXRjaCBpbnRlZ2VyICgpIHdpdGhcbiAgICAgICAgU29tZSBpIC0+XG4gICAgICAgICAgbGV0IGogPSBpZiBhY2NlcHQgJywnIHRoZW4gaW50ZWdlciAoKSBlbHNlIFNvbWUgaSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICd9JykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICAgICAgICAgIFNvbWUgaiB3aGVuIGogPCBpIC0+IHJhaXNlIFBhcnNlX2Vycm9yIHwgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBncmVlZHlfbW9kIChSZS5yZXBuIHIgaSBqKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgdW5nZXQgKCk7IHJcbiAgICBlbHNlXG4gICAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIGlmIGRvdGFsbCB0aGVuIFJlLmFueSBlbHNlIFJlLm5vdG5sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz8nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICc6JyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgclxuICAgICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyMnIHRoZW4gYmVnaW5cbiAgICAgICAgICBjb21tZW50ICgpXG4gICAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnPCcgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZSAoKSBpblxuICAgICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIFJlLmdyb3VwIH5uYW1lIHJcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBSZS5ncm91cCByXG4gICAgICBlbmRcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgaWYgbXVsdGlsaW5lIHRoZW4gUmUuYm9sIGVsc2UgUmUuYm9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBpZiBtdWx0aWxpbmUgdGhlbiBSZS5lb2wgZWxzZSBpZiBkb2xsYXJfZW5kb25seSB0aGVuIFJlLmxlb2wgZWxzZSBSZS5lb3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5jb21wbCAoYnJhY2tldCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuKCogWFhYXG4gICAtIEJhY2stcmVmZXJlbmNlc1xuICAgLSBcXGN4IChjb250cm9sLXgpLCBcXGRkZFxuKilcbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJ3cnIC0+XG4gICAgICAgICAgUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICB8ICdXJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICB8ICdzJyAtPlxuICAgICAgICAgIFJlLnNwYWNlXG4gICAgICB8ICdTJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5zcGFjZV1cbiAgICAgIHwgJ2QnIC0+XG4gICAgICAgICAgUmUuZGlnaXRcbiAgICAgIHwgJ0QnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLmRpZ2l0XVxuICAgICAgfCAnYicgLT5cbiAgICAgICAgICBSZS5hbHQgW1JlLmJvdzsgUmUuZW93XVxuICAgICAgfCAnQicgLT5cbiAgICAgICAgICBSZS5ub3RfYm91bmRhcnlcbiAgICAgIHwgJ0EnIC0+XG4gICAgICAgICAgUmUuYm9zXG4gICAgICB8ICdaJyAtPlxuICAgICAgICAgIFJlLmxlb2xcbiAgICAgIHwgJ3onIC0+XG4gICAgICAgICAgUmUuZW9zXG4gICAgICB8ICdHJyAtPlxuICAgICAgICAgIFJlLnN0YXJ0XG4gICAgICB8ICdlJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xceDFiJ1xuICAgICAgfCAnZicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHgwYydcbiAgICAgIHwgJ24nIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFxuJ1xuICAgICAgfCAncicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHInXG4gICAgICB8ICd0JyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xcdCdcbiAgICAgIHwgJ3gnIC0+XG4gICAgICAgICAgbGV0IGMxID0gaGV4ZGlnaXQgKCkgaW5cbiAgICAgICAgICBsZXQgYzIgPSBoZXhkaWdpdCAoKSBpblxuICAgICAgICAgIGxldCBjb2RlID0gYzEgKiAxNiArIGMyIGluXG4gICAgICAgICAgUmUuY2hhciAoY2hhcl9vZl9pbnQgY29kZSlcbiAgICAgIHwgJ2EnLi4neicgfCAnQScuLidaJyAtPlxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICcwJy4uJzknIC0+XG4gICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgfCBjIC0+XG4gICAgICAgICAgUmUuY2hhciBjXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ3snIHwgJ1xcXFwnIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBoZXhkaWdpdCAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnXG4gICAgfCAnYScuLidmJyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCAnQScuLidGJyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICdBJyArIDEwXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBpbnRlZ2VyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBOb25lIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBpbnRlZ2VyJyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKVxuICAgIHwgICAgIF8gICAgICAgIC0+IHVuZ2V0ICgpOyBOb25lXG4gIGFuZCBpbnRlZ2VyJyBpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBTb21lIGkgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+XG4gICAgICAgIGxldCBpJyA9IDEwICogaSArIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgIGlmIGknIDwgaSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBpbnRlZ2VyJyBpJ1xuICAgIHwgXyAtPlxuICAgICAgICB1bmdldCAoKTsgU29tZSBpXG4gIGFuZCBuYW1lICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvciBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICgnXycgfCAnYScuLid6JyB8ICdBJy4uJ1onKSBhcyBjIC0+XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMzIgaW5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGM7XG4gICAgICBuYW1lJyBiXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBuYW1lJyBiID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvciBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICgnXycgfCAnYScuLid6JyB8ICdBJy4uJ1onIHwgJzAnLi4nOScpIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGM7XG4gICAgICBuYW1lJyBiXG4gICAgfCAnPicgLT4gQnVmZmVyLmNvbnRlbnRzIGJcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBtYXRjaCBjaGFyICgpIHdpdGhcbiAgICAgIHwgYENoYXIgYyAtPlxuICAgICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggY2hhciAoKSB3aXRoXG4gICAgICAgICAgICAgIGBDaGFyIGMnIC0+XG4gICAgICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgICAgIHwgYFNldCBzdCcgLT5cbiAgICAgICAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHN0JyA6OiBzKVxuICAgICAgICAgIGVuZFxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgICAgfCBgU2V0IHN0IC0+IGJyYWNrZXQgKHN0IDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgIGlmIGMgPSAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc9JyB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICBpZiBhY2NlcHQgJzonIHRoZW5cbiAgICAgICAgbGV0IGNvbXBsID0gYWNjZXB0ICdeJyBpblxuICAgICAgICBsZXQgY2xzID1cbiAgICAgICAgICB0cnkgTGlzdC5maW5kIGFjY2VwdF9zIHBvc2l4X2NsYXNzX3N0cmluZ3NcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSBQYXJzZV9lcnJvciBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdF9zIFwiOl1cIikgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IHJlID1cbiAgICAgICAgICBsZXQgcG9zaXhfY2xhc3MgPSBwb3NpeF9jbGFzc19vZl9zdHJpbmcgY2xzIGluXG4gICAgICAgICAgaWYgY29tcGwgdGhlbiBSZS5jb21wbCBbcG9zaXhfY2xhc3NdIGVsc2UgcG9zaXhfY2xhc3MgaW5cbiAgICAgICAgYFNldCAocmUpXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJy4nKSB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICddJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgYENoYXIgY1xuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYENoYXIgY1xuICAgIGVuZCBlbHNlIGlmIGMgPSAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBsZXQgYyA9IGdldCAoKSBpblxuKCogWFhYXG4gICBcXDEyNywgLi4uXG4qKVxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICdiJyAtPiBgQ2hhciAnXFwwMDgnXG4gICAgICB8ICduJyAtPiBgQ2hhciAnXFxuJyAoKlhYWCopXG4gICAgICB8ICdyJyAtPiBgQ2hhciAnXFxyJyAoKlhYWCopXG4gICAgICB8ICd0JyAtPiBgQ2hhciAnXFx0JyAoKlhYWCopXG4gICAgICB8ICd3JyAtPiBgU2V0IChSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ10pXG4gICAgICB8ICdXJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXSlcbiAgICAgIHwgJ3MnIC0+IGBTZXQgKFJlLnNwYWNlKVxuICAgICAgfCAnUycgLT4gYFNldCAoUmUuY29tcGwgW1JlLnNwYWNlXSlcbiAgICAgIHwgJ2QnIC0+IGBTZXQgKFJlLmRpZ2l0KVxuICAgICAgfCAnRCcgLT4gYFNldCAoUmUuY29tcGwgW1JlLmRpZ2l0XSlcbiAgICAgIHwgJ2EnLi4neicgfCAnQScuLidaJyAtPlxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICcwJy4uJzknIC0+XG4gICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgfCBfIC0+XG4gICAgICAgICAgYENoYXIgY1xuICAgIGVuZCBlbHNlXG4gICAgICBgQ2hhciBjXG4gIGFuZCBjb21tZW50ICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBpZiBhY2NlcHQgJyknIHRoZW4gUmUuZXBzaWxvbiBlbHNlIGJlZ2luIGluY3IgaTsgY29tbWVudCAoKSBlbmRcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbnR5cGUgb3B0ID1cbiAgWyBgVW5ncmVlZHkgfCBgRG90YWxsIHwgYERvbGxhcl9lbmRvbmx5XG4gIHwgYE11bHRpbGluZSB8IGBBbmNob3JlZCB8IGBDYXNlbGVzcyBdXG5cbmxldCByZSAgPyhvcHRzID0gW10pIHMgPVxuICBsZXQgciA9XG4gICAgcGFyc2VcbiAgICAgIChMaXN0Lm1lbXEgYE11bHRpbGluZSBvcHRzKSAoTGlzdC5tZW1xIGBEb2xsYXJfZW5kb25seSBvcHRzKVxuICAgICAgKExpc3QubWVtcSBgRG90YWxsIG9wdHMpIChMaXN0Lm1lbXEgYFVuZ3JlZWR5IG9wdHMpXG4gICAgICBzXG4gIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBBbmNob3JlZCBvcHRzIHRoZW4gUmUuc2VxIFtSZS5zdGFydDsgcl0gZWxzZSByIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBDYXNlbGVzcyBvcHRzIHRoZW4gUmUubm9fY2FzZSByIGVsc2UgciBpblxuICByXG5cbmxldCBjb21waWxlID0gUmUuY29tcGlsZVxubGV0IGNvbXBpbGVfcGF0ID8ob3B0cyA9IFtdKSBzID0gY29tcGlsZSAocmUgfm9wdHMgcylcbiIsIm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yID0gUGVybC5QYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgPSBQZXJsLk5vdF9zdXBwb3J0ZWRcblxudHlwZSByZWdleHAgPSBSZS5yZVxuXG50eXBlIGZsYWcgPSBbIGBDQVNFTEVTUyB8IGBNVUxUSUxJTkUgfCBgQU5DSE9SRUQgfCBgRE9UQUxMIF1cblxudHlwZSBzcGxpdF9yZXN1bHQgPVxuICB8IFRleHQgIG9mIHN0cmluZ1xuICB8IERlbGltIG9mIHN0cmluZ1xuICB8IEdyb3VwIG9mIGludCAqIHN0cmluZ1xuICB8IE5vR3JvdXBcblxudHlwZSBncm91cHMgPSBDb3JlLkdyb3VwLnRcblxubGV0IHJlID8oZmxhZ3MgPSBbXSkgcGF0ID1cbiAgbGV0IG9wdHMgPSBMaXN0Lm1hcCAoZnVuY3Rpb25cbiAgICB8IGBDQVNFTEVTUyAtPiBgQ2FzZWxlc3NcbiAgICB8IGBNVUxUSUxJTkUgLT4gYE11bHRpbGluZVxuICAgIHwgYEFOQ0hPUkVEIC0+IGBBbmNob3JlZFxuICAgIHwgYERPVEFMTCAtPiBgRG90YWxsXG4gICkgZmxhZ3MgaW5cbiAgUGVybC5yZSB+b3B0cyBwYXRcblxubGV0IHJlZ2V4cCA/ZmxhZ3MgcGF0ID0gUmUuY29tcGlsZSAocmUgP2ZsYWdzIHBhdClcblxubGV0IGV4dHJhY3QgfnJleCBzID1cbiAgUmUuR3JvdXAuYWxsIChSZS5leGVjIHJleCBzKVxuXG5sZXQgZXhlYyB+cmV4ID9wb3MgcyA9XG4gIFJlLmV4ZWMgcmV4ID9wb3Mgc1xuXG5sZXQgZ2V0X3N1YnN0cmluZyBzIGkgPVxuICBSZS5Hcm91cC5nZXQgcyBpXG5cbmxldCBuYW1lcyByZXggPVxuICBSZS5ncm91cF9uYW1lcyByZXhcbiAgfD4gTGlzdC5tYXAgZnN0XG4gIHw+IEFycmF5Lm9mX2xpc3RcblxubGV0IGdldF9uYW1lZF9zdWJzdHJpbmcgcmV4IG5hbWUgcyA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICB8IChuLCBpKSA6OiByZW0gd2hlbiBuID0gbmFtZSAtPlxuICAgICAgIGJlZ2luXG4gICAgICAgICB0cnkgZ2V0X3N1YnN0cmluZyBzIGlcbiAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGxvb3AgcmVtXG4gICAgICAgZW5kXG4gICAgfCBfIDo6IHJlbSAtPiBsb29wIHJlbVxuICBpblxuICBsb29wIChSZS5ncm91cF9uYW1lcyByZXgpXG5cbmxldCBnZXRfc3Vic3RyaW5nX29mcyBzIGkgPVxuICBSZS5Hcm91cC5vZmZzZXQgcyBpXG5cbmxldCBwbWF0Y2ggfnJleCBzID1cbiAgUmUuZXhlY3AgcmV4IHNcblxubGV0IHN1YnN0aXR1dGUgfnJleCB+c3Vic3Qgc3RyID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgbGV0IHJlYyBsb29wIHBvcyA9XG4gICAgaWYgcG9zID49IFN0cmluZy5sZW5ndGggc3RyIHRoZW5cbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgZWxzZSBpZiBSZS5leGVjcCB+cG9zIHJleCBzdHIgdGhlbiAoXG4gICAgICBsZXQgc3MgPSBSZS5leGVjIH5wb3MgcmV4IHN0ciBpblxuICAgICAgbGV0IHN0YXJ0LCBmaW4gPSBSZS5Hcm91cC5vZmZzZXQgc3MgMCBpblxuICAgICAgbGV0IHBhdCA9IFJlLkdyb3VwLmdldCBzcyAwIGluXG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBiIHN0ciBwb3MgKHN0YXJ0IC0gcG9zKTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN1YnN0IHBhdCk7XG4gICAgICBsb29wIGZpblxuICAgICkgZWxzZSAoXG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBiIHN0ciBwb3MgKFN0cmluZy5sZW5ndGggc3RyIC0gcG9zKTtcbiAgICAgIGxvb3AgKFN0cmluZy5sZW5ndGggc3RyKVxuICAgIClcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzcGxpdCB+cmV4IHN0ciA9XG4gIGxldCByZWMgbG9vcCBhY2N1IHBvcyA9XG4gICAgaWYgcG9zID49IFN0cmluZy5sZW5ndGggc3RyIHRoZW5cbiAgICAgIExpc3QucmV2IGFjY3VcbiAgICBlbHNlIGlmIFJlLmV4ZWNwIH5wb3MgcmV4IHN0ciB0aGVuIChcbiAgICAgIGxldCBzcyA9IFJlLmV4ZWMgfnBvcyByZXggc3RyIGluXG4gICAgICBsZXQgc3RhcnQsIGZpbiA9IFJlLkdyb3VwLm9mZnNldCBzcyAwIGluXG4gICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIHBvcyAoc3RhcnQgLSBwb3MpIGluXG4gICAgICBsb29wIChzIDo6IGFjY3UpIGZpblxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIHBvcyAoU3RyaW5nLmxlbmd0aCBzdHIgLSBwb3MpIGluXG4gICAgICBsb29wIChzIDo6IGFjY3UpIChTdHJpbmcubGVuZ3RoIHN0cilcbiAgICApIGluXG4gIGxvb3AgW10gMFxuXG4oKiBGcm9tIFBDUkUgKilcbmxldCBzdHJpbmdfdW5zYWZlX3N1YiBzIG9mcyBsZW4gPVxuICBsZXQgciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgQnl0ZXMudW5zYWZlX2JsaXQgcyBvZnMgciAwIGxlbjtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChsZW4gbHNsIDEpIGluXG4gIGxldCBwb3MgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgfCAnXFxcXCcgfCAnXicgfCAnJCcgfCAnLicgfCAnWycgfCAnfCdcbiAgICB8ICcoJyAgfCAnKScgfCAnPycgfCAnKicgfCAnKycgfCAneycgYXMgYyAtPlxuICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyAnXFxcXCc7XG4gICAgICBpbmNyIHBvcztcbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgYzsgaW5jciBwb3NcbiAgICB8IGMgLT4gQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyBjOyBpbmNyIHBvc1xuICBkb25lO1xuICBzdHJpbmdfdW5zYWZlX3N1YiBidWYgMCAhcG9zXG5cbmxldCBmdWxsX3NwbGl0ID8obWF4PTApIH5yZXggcyA9XG4gIGlmIFN0cmluZy5sZW5ndGggcyA9IDAgdGhlbiBbXVxuICBlbHNlIGlmIG1heCA9IDEgdGhlbiBbVGV4dCBzXVxuICBlbHNlXG4gICAgbGV0IHJlc3VsdHMgPSBSZS5zcGxpdF9mdWxsIHJleCBzIGluXG4gICAgbGV0IG1hdGNoZXMgPVxuICAgICAgTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYFRleHQgcyAtPiBbVGV4dCBzXVxuICAgICAgICB8IGBEZWxpbSBkIC0+XG4gICAgICAgICAgbGV0IG1hdGNoZXMgPSBSZS5Hcm91cC5hbGxfb2Zmc2V0IGQgaW5cbiAgICAgICAgICBsZXQgZGVsaW0gPSBSZS5Hcm91cC5nZXQgZCAwIGluXG4gICAgICAgICAgKERlbGltIGRlbGltKTo6KFxuICAgICAgICAgICAgbGV0IGwgPSByZWYgW10gaW5cbiAgICAgICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggbWF0Y2hlcyAtIDEgZG9cbiAgICAgICAgICAgICAgbCA6PVxuICAgICAgICAgICAgICAgIChpZiBtYXRjaGVzLihpKSA9ICgtMSwgLTEpXG4gICAgICAgICAgICAgICAgIHRoZW4gTm9Hcm91cFxuICAgICAgICAgICAgICAgICBlbHNlIEdyb3VwIChpLCBSZS5Hcm91cC5nZXQgZCBpKSlcbiAgICAgICAgICAgICAgICA6OighbClcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBMaXN0LnJldiAhbCkpIHJlc3VsdHMgaW5cbiAgICBMaXN0LmNvbmNhdCBtYXRjaGVzXG5cblxudHlwZSBzdWJzdHJpbmdzID0gR3JvdXAudFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxuKCpcbldoYXQgd2UgY291bGQgKHNob3VsZD8pIGRvOlxuLSBhKiA9PT4gbG9uZ2VzdCAoKHNob3J0ZXN0IChub19ncm91cCBhKSogKSwgYSB8ICgpKSAgKCEhISlcbi0gYWJjIHVuZGVyc3Rvb2QgYXMgKGFiKWNcbi0gXCIoKGE/KXxiKVwiIGFnYWluc3QgXCJhYlwiIHNob3VsZCBub3QgYmluZCB0aGUgZmlyc3Qgc3VicGF0dGVybiB0byBhbnl0aGluZ1xuXG5Ob3RlIHRoYXQgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGhhbmRsZSBcIigoKGFiKWMpZCllXCIgZWZmaWNpZW50bHlcbiopXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBhcnNlIG5ld2xpbmUgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG4gIGxldCB1bmdldCAoKSA9IGRlY3IgaSBpblxuXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QgJ3wnIHx8IHRlc3QgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gUmUucmVwIChSZS5uZXN0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gUmUucmVwMSAoUmUubmVzdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIFJlLm9wdCByIGVsc2VcbiAgICBpZiBhY2NlcHQgJ3snIHRoZW5cbiAgICAgIG1hdGNoIGludGVnZXIgKCkgd2l0aFxuICAgICAgICBTb21lIGkgLT5cbiAgICAgICAgICBsZXQgaiA9IGlmIGFjY2VwdCAnLCcgdGhlbiBpbnRlZ2VyICgpIGVsc2UgU29tZSBpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJ30nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgICAgICAgICAgU29tZSBqIHdoZW4gaiA8IGkgLT4gcmFpc2UgUGFyc2VfZXJyb3IgfCBfIC0+ICgpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIFJlLnJlcG4gKFJlLm5lc3QgcikgaSBqXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICB1bmdldCAoKTsgclxuICAgIGVsc2VcbiAgICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLm5vdG5sIGVsc2UgUmUuYW55XG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgUmUuZ3JvdXAgclxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUuYm9sIGVsc2UgUmUuYm9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUuZW9sIGVsc2UgUmUuZW9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuZGlmZiAoUmUuY29tcGwgKGJyYWNrZXQgW10pKSAoUmUuY2hhciAnXFxuJylcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICd8JyB8ICcoJyB8ICcpJyB8ICcqJyB8ICcrJyB8ICc/J1xuICAgICAgfCAnWycgfCAnLicgfCAnXicgfCAnJCcgfCAneycgfCAnXFxcXCcgYXMgYyAtPiBSZS5jaGFyIGNcbiAgICAgIHwgICAgICAgICAgICAgICAgIF8gICAgICAgICAgICAgICAgICAgICAgIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ3snIHwgJ1xcXFwnIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBpbnRlZ2VyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBOb25lIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBpbnRlZ2VyJyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKVxuICAgIHwgICAgIF8gICAgICAgIC0+IHVuZ2V0ICgpOyBOb25lXG4gIGFuZCBpbnRlZ2VyJyBpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBTb21lIGkgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+XG4gICAgICAgIGxldCBpJyA9IDEwICogaSArIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgIGlmIGknIDwgaSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBpbnRlZ2VyJyBpJ1xuICAgIHwgXyAtPlxuICAgICAgICB1bmdldCAoKTsgU29tZSBpXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICBpZiBjID0gJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPScgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnOicgdGhlbiBiZWdpblxuICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkICgqWFhYKilcbiAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJy4nKSB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICddJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgY1xuICAgICAgZW5kIGVsc2VcbiAgICAgICAgY1xuICAgIGVuZCBlbHNlXG4gICAgICBjXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG50eXBlIG9wdCA9IFtgSUNhc2UgfCBgTm9TdWIgfCBgTmV3bGluZV1cblxubGV0IHJlID8ob3B0cyA9IFtdKSBzID1cbiAgbGV0IHIgPSBwYXJzZSAoTGlzdC5tZW1xIGBOZXdsaW5lIG9wdHMpIHMgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYElDYXNlIG9wdHMgdGhlbiBSZS5ub19jYXNlIHIgZWxzZSByIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBOb1N1YiBvcHRzIHRoZW4gUmUubm9fZ3JvdXAgciBlbHNlIHIgaW5cbiAgclxuXG5sZXQgY29tcGlsZSByZSA9IFJlLmNvbXBpbGUgKFJlLmxvbmdlc3QgcmUpXG5sZXQgY29tcGlsZV9wYXQgPyhvcHRzID0gW10pIHMgPSBjb21waWxlIChyZSB+b3B0cyBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoaXMgbW9kdWxlIG9mZmVycyBhIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYmFzZWQgb24gZGlzam9pbnQgc2V0XG4gICBmb3Jlc3RzLCB3aXRoIHBhdGggY29tcHJlc3Npb24gYW5kIGxpbmtpbmcgYnkgcmFuay4gKilcblxub3BlbiBTdG9yZVxuXG5tb2R1bGUgTWFrZSAoUyA6IFNUT1JFKSA9IHN0cnVjdFxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBUaGUgcmFuayBvZiBhIHZlcnRleCBpcyB0aGUgbWF4aW11bSBsZW5ndGgsIGluIGVkZ2VzLCBvZiBhbiB1bmNvbXByZXNzZWQgcGF0aFxuICAgdGhhdCBsZWFkcyB0byB0aGlzIHZlcnRleC4gSW4gb3RoZXIgd29yZHMsIHRoZSByYW5rIG9mIFt4XSBpcyB0aGUgaGVpZ2h0IG9mXG4gICB0aGUgdHJlZSByb290ZWQgYXQgW3hdIHRoYXQgd291bGQgZXhpc3QgaWYgd2UgZGlkIG5vdCBwZXJmb3JtIHBhdGhcbiAgIGNvbXByZXNzaW9uLiAqKVxuXG50eXBlIHJhbmsgPVxuICBpbnRcblxuKCogVGhlIGNvbnRlbnQgb2YgYSB2ZXJ0ZXggaXMgYSBwb2ludGVyIHRvIGEgcGFyZW50IHZlcnRleCAoaWYgdGhlIHZlcnRleFxuICAgaGFzIGEgcGFyZW50KSBvciBhIHBhaXIgb2YgYSByYW5rIGFuZCBhIHVzZXIgdmFsdWUgKGlmIHRoZSB2ZXJ0ZXggaGFzIG5vXG4gICBwYXJlbnQsIGFuZCBpcyB0aHVzIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXggZm9yIHRoaXMgZXF1aXZhbGVuY2VcbiAgIGNsYXNzKS4gKilcblxuKCogSW4gdGhpcyB2ZXJzaW9uIHRoZSBjb2RlLCB0aGUgdHlwZSBbJ2EgY29udGVudF0gbXVzdCBub3QgbXV0YWJsZS4gSW5kZWVkLFxuICAgZXZlcnkgbXV0YXRpb24gbXVzdCBiZSBwZXJmb3JtZWQgdmlhIFtTLnNldF0uICopXG5cbnR5cGUgJ2EgY29udGVudCA9XG58IExpbmsgb2YgJ2EgcnJlZlxufCBSb290IG9mIHJhbmsgKiAnYVxuXG4oKiBUaGUgdHlwZSBbJ2EgcnJlZl0gcmVwcmVzZW50cyBhIHZlcnRleCBpbiB0aGUgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZS4gKilcblxuYW5kICdhIHJyZWYgPVxuICAnYSBjb250ZW50IFMucnJlZlxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBUaGUgdHlwZSBvZiBzdG9yZXMsIGFuZCB0aGUgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgbmV3IHN0b3JlLCBhcmUgdGhvc2VcbiAgIG9mIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIFtTXS4gKilcblxudHlwZSAnYSBzdG9yZSA9XG4gICdhIGNvbnRlbnQgUy5zdG9yZVxuXG5sZXQgbmV3X3N0b3JlIDogdW5pdCAtPiAnYSBzdG9yZSA9XG4gIFMubmV3X3N0b3JlXG5cbmxldCBjb3B5IDogJ2Egc3RvcmUgLT4gJ2Egc3RvcmUgPVxuICBTLmNvcHlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21ha2UgcyB2XSBjcmVhdGVzIGEgbmV3IHJvb3Qgb2YgcmFuayB6ZXJvLiAqKVxuXG5sZXQgbWFrZSAocyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6ICdhIHJyZWYgPVxuICBTLm1ha2UgcyAoUm9vdCAoMCwgdikpXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtmaW5kIHMgeF0gZmluZHMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBvZiB0aGUgZXF1aXZhbGVuY2UgY2xhc3Mgb2YgW3hdLlxuICAgSXQgZG9lcyBieSBmb2xsb3dpbmcgdGhlIHBhdGggZnJvbSBbeF0gdG8gdGhlIHJvb3QuIFBhdGggY29tcHJlc3Npb24gaXNcbiAgIHBlcmZvcm1lZCAob24gdGhlIHdheSBiYWNrKSBieSBtYWtpbmcgZXZlcnkgdmVydGV4IGFsb25nIHRoZSBwYXRoIGFcbiAgIGRpcmVjdCBjaGlsZCBvZiB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4LiBObyByYW5rIGlzIGFsdGVyZWQuICopXG5cbmxldCByZWMgZmluZCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgcnJlZiA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAoXywgXykgLT5cbiAgICAgIHhcbiAgfCBMaW5rIHkgLT5cbiAgICAgIGxldCB6ID0gZmluZCBzIHkgaW5cbiAgICAgIGlmIFMuZXEgcyB5IHogdGhlblxuICAgICAgICB6XG4gICAgICBlbHNlXG4gICAgICAgIGxldCBsaW5rX3RvX3ogPSBTLmdldCBzIHkgaW5cbiAgICAgICAgUy5zZXQgcyB4IGxpbmtfdG9fejtcbiAgICAgICAgelxuXG5sZXQgaXNfcmVwcmVzZW50YXRpdmUgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6IGJvb2wgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgXyAtPlxuICAgICAgdHJ1ZVxuICB8IExpbmsgXyAtPlxuICAgICAgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2VxIHMgeCB5XSBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHZlcnRpY2VzIFt4XSBhbmQgW3ldIGJlbG9uZyBpbiB0aGUgc2FtZVxuICAgZXF1aXZhbGVuY2UgY2xhc3MuIEl0IGRvZXMgc28gdmlhIHR3byBjYWxscyB0byBbZmluZF0gYW5kIGEgcGh5c2ljYWxcbiAgIGVxdWFsaXR5IHRlc3QuIEFzIGEgZmFzdCBwYXRoLCB3ZSBmaXJzdCB0ZXN0IHdoZXRoZXIgW3hdIGFuZCBbeV0gYXJlXG4gICBwaHlzaWNhbGx5IGVxdWFsLiAqKVxuXG5sZXQgZXEgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIFMuZXEgcyB4IHkgfHwgUy5lcSBzIChmaW5kIHMgeCkgKGZpbmQgcyB5KVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZ2V0XyBzIHhdIHJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBnZXRfIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSA9XG4gIGxldCB4ID0gZmluZCBzIHggaW5cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChfLCB2KSAtPlxuICAgICAgdlxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIFtnZXQgcyB4XSByZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG4oKiBCeSBub3QgY2FsbGluZyBbZmluZF0gaW1tZWRpYXRlbHksIHdlIG9wdGltaXplIHRoZSBjb21tb24gY2FzZXMgd2hlcmUgdGhlXG4gICBwYXRoIG91dCBvZiBbeF0gaGFzIGxlbmd0aCAwIG9yIDEsIGF0IHRoZSBleHBlbnNlIG9mIHRoZSBnZW5lcmFsIGNhc2UuXG4gICBUaHVzLCB3ZSBjYWxsIFtmaW5kXSBvbmx5IGlmIHBhdGggY29tcHJlc3Npb24gbXVzdCBiZSBwZXJmb3JtZWQuICopXG5cbmxldCBnZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChfLCB2KSAtPlxuICAgICAgdlxuICB8IExpbmsgeSAtPlxuICAgICAgbWF0Y2ggUy5nZXQgcyB5IHdpdGhcbiAgICAgIHwgUm9vdCAoXywgdikgLT5cbiAgICAgICAgICB2XG4gICAgICB8IExpbmsgXyAtPlxuICAgICAgICAgIGdldF8gcyB4XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtzZXRfIHMgeF0gdXBkYXRlcyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IHNldF8gKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICBsZXQgeCA9IGZpbmQgcyB4IGluXG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAociwgXykgLT5cbiAgICAgIFMuc2V0IHMgeCAoUm9vdCAociwgdikpXG4gIHwgTGluayBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuKCogW3NldCBzIHhdIHVwZGF0ZXMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbigqIEJ5IG5vdCBjYWxsaW5nIFtmaW5kXSBpbW1lZGlhdGVseSwgd2Ugb3B0aW1pemUgdGhlIGNvbW1vbiBjYXNlcyB3aGVyZSB0aGVcbiAgIHBhdGggb3V0IG9mIFt4XSBoYXMgbGVuZ3RoIDAgb3IgMSwgYXQgdGhlIGV4cGVuc2Ugb2YgdGhlIGdlbmVyYWwgY2FzZS5cbiAgIFRodXMsIHdlIGNhbGwgW2ZpbmRdIG9ubHkgaWYgcGF0aCBjb21wcmVzc2lvbiBtdXN0IGJlIHBlcmZvcm1lZC4gKilcblxubGV0IHNldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAociwgXykgLT5cbiAgICAgIFMuc2V0IHMgeCAoUm9vdCAociwgdikpXG4gIHwgTGluayB5IC0+XG4gICAgICBtYXRjaCBTLmdldCBzIHkgd2l0aFxuICAgICAgfCBSb290IChyLCBfKSAtPlxuICAgICAgICAgIFMuc2V0IHMgeSAoUm9vdCAociwgdikpXG4gICAgICB8IExpbmsgXyAtPlxuICAgICAgICAgIHNldF8gcyB4IHZcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW3VuaW9uIHMgeCB5XSBtZXJnZXMgdGhlIGVxdWl2YWxlbmNlIGNsYXNzZXMgb2YgW3hdIGFuZCBbeV0gYnkgaW5zdGFsbGluZyBhXG4gICBsaW5rIGZyb20gb25lIHJvb3QgdmVydGV4IHRvIHRoZSBvdGhlci4gKilcblxuKCogTGlua2luZyBpcyBieSByYW5rOiB0aGUgc21hbGxlci1yYW5rZWQgdmVydGV4IGlzIG1hZGUgdG8gcG9pbnQgdG8gdGhlXG4gICBsYXJnZXIuIElmIHRoZSB0d28gdmVydGljZXMgaGF2ZSB0aGUgc2FtZSByYW5rLCB0aGVuIGFuIGFyYml0cmFyeSBjaG9pY2VcbiAgIGlzIG1hZGUsIGFuZCB0aGUgcmFuayBvZiB0aGUgbmV3IHJvb3QgaXMgaW5jcmVtZW50ZWQgYnkgb25lLiAqKVxuXG5sZXQgdW5pb24gKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogJ2EgcnJlZiA9XG4gIGxldCB4ID0gZmluZCBzIHhcbiAgYW5kIHkgPSBmaW5kIHMgeSBpblxuICBpZiBTLmVxIHMgeCB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggUy5nZXQgcyB4LCBTLmdldCBzIHkgd2l0aFxuICAgIHwgUm9vdCAocngsIHZ4KSwgUm9vdCAocnksIF8pIC0+XG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeCAoTGluayB5KTsgeVxuICAgICAgICBlbmRcbiAgICAgICAgZWxzZSBpZiByeCA+IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7IHhcbiAgICAgICAgZW5kXG4gICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7XG4gICAgICAgICAgUy5zZXQgcyB4IChSb290IChyeCArIDEsIHZ4KSk7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttZXJnZV0gaXMgYW5hbG9nb3VzIHRvIFt1bmlvbl0sIGJ1dCBpbnZva2VzIGEgdXNlci1zcGVjaWZpZWQgZnVuY3Rpb24gW2ZdXG4gICB0byBjb21wdXRlIHRoZSBuZXcgdmFsdWUgW3ZdIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXF1aXZhbGVuY2UgY2xhc3MuICopXG5cbigqIFRoZSBmdW5jdGlvbiBbZl0gbXVzdCBub3QgYWZmZWN0IHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJ5IG1ha2luZ1xuICAgcmUtZW50cmFudCBjYWxscyB0byBbc2V0XSwgW3VuaW9uXSwgb3IgW21lcmdlXS4gVGhlcmUgYXJlIHR3byByZWFzb25zIGZvclxuICAgdGhpcy4gRmlyc3QsIFtmXSBtYXkgYmUgaW52b2tlZCBhdCBhIHRpbWUgd2hlbiB0aGUgaW52YXJpYW50IG9mIHRoZSBkYXRhXG4gICBzdHJ1Y3R1cmUgaXMgdGVtcG9yYXJpbHkgdmlvbGF0ZWQ6IGluIHRoZSB0aGlyZCBicmFuY2ggYmVsb3csIHRoZSByYW5rIG9mXG4gICBbeF0gaGFzIG5vdCB5ZXQgYmVlbiBpbmNyZWFzZWQgd2hlbiBbZl0gaXMgaW52b2tlZC4gU2Vjb25kLCBtb3JlIHNlcmlvdXNseSxcbiAgIGlmIFtmXSBjb3VsZCBjYWxsLCBzYXksIFt1bmlvbl0sIHRoZW4gdGhhdCBjb3VsZCBjaGFuZ2UgYSBbUm9vdF0gaW50byBhXG4gICBbTGlua10sIHNvIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IGNoYW5nZSBhIFtMaW5rXVxuICAgYmFjayBpbnRvIGEgW1Jvb3RdLCBzb21ldGhpbmcgdGhhdCBkb2VzIG5vdCBtYWtlIGFueSBzZW5zZS4gQWxzbywgaWYgW2ZdXG4gICBjb3VsZCBjYWxsIFtzZXRdLCB0aGVuIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IHVuZG9cbiAgIHRoZSBlZmZlY3Qgb2YgdGhpcyBbc2V0XSBvcGVyYXRpb247IHRoaXMgYWxzbyBkb2VzIG5vdCBtYWtlIHNlbnNlLiAqKVxuXG4oKiBUaGUgdGVzdHMgW2lmIHYgIT0gdnkgdGhlbiAuLi5dIGFuZCBbaWYgdiAhPSB2eCB0aGVuIC4uLl0gYXJlIGludGVuZGVkIHRvXG4gICBzYXZlIGFuIGFsbG9jYXRpb24gYW5kIGEgd3JpdGUgd2hlbiBwb3NzaWJsZS4gKilcblxuKCogV2UgaW52b2tlIFtmXSBiZWZvcmUgcGVyZm9ybWluZyBhbnkgdXBkYXRlLCBzbyB0aGF0IGlmIFtmXSBmYWlsc1xuICAgKGJ5IHJhaXNpbmcgYW4gZXhjZXB0aW9uKSwgdGhlIHN0YXRlIGlzIHVuYWZmZWN0ZWQuICopXG5cbmxldCBtZXJnZSBzIChmIDogJ2EgLT4gJ2EgLT4gJ2EpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6ICdhIHJyZWYgPVxuICBsZXQgeCA9IGZpbmQgcyB4XG4gIGFuZCB5ID0gZmluZCBzIHkgaW5cbiAgaWYgUy5lcSBzIHggeSB0aGVuIHggZWxzZVxuICAgIG1hdGNoIFMuZ2V0IHMgeCwgUy5nZXQgcyB5IHdpdGhcbiAgICB8IFJvb3QgKHJ4LCB2eCksIFJvb3QgKHJ5LCB2eSkgLT5cbiAgICAgICAgbGV0IHYgPSBmIHZ4IHZ5IGluXG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeCAoTGluayB5KTtcbiAgICAgICAgICBpZiB2ICE9IHZ5IHRoZW4gUy5zZXQgcyB5IChSb290IChyeSwgdikpO1xuICAgICAgICAgIHlcbiAgICAgICAgZW5kIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpO1xuICAgICAgICAgIGlmIHYgIT0gdnggdGhlbiBTLnNldCBzIHggKFJvb3QgKHJ4LCB2KSk7XG4gICAgICAgICAgeFxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTtcbiAgICAgICAgICBTLnNldCBzIHggKFJvb3QgKHJ4KzEsIHYpKTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhpcyBtb2R1bGUgb2ZmZXJzIGEgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBiYXNlZCBvbiBkaXNqb2ludCBzZXRcbiAgIGZvcmVzdHMsIHdpdGggcGF0aCBjb21wcmVzc2lvbiBhbmQgbGlua2luZyBieSByYW5rLiAqKVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBUaGUgcmFuayBvZiBhIHZlcnRleCBpcyB0aGUgbWF4aW11bSBsZW5ndGgsIGluIGVkZ2VzLCBvZiBhbiB1bmNvbXByZXNzZWQgcGF0aFxuICAgdGhhdCBsZWFkcyB0byB0aGlzIHZlcnRleC4gSW4gb3RoZXIgd29yZHMsIHRoZSByYW5rIG9mIFt4XSBpcyB0aGUgaGVpZ2h0IG9mXG4gICB0aGUgdHJlZSByb290ZWQgYXQgW3hdIHRoYXQgd291bGQgZXhpc3QgaWYgd2UgZGlkIG5vdCBwZXJmb3JtIHBhdGhcbiAgIGNvbXByZXNzaW9uLiAqKVxuXG50eXBlIHJhbmsgPVxuICBpbnRcblxuKCogVGhlIGNvbnRlbnQgb2YgYSB2ZXJ0ZXggaXMgYSBwb2ludGVyIHRvIGEgcGFyZW50IHZlcnRleCAoaWYgdGhlIHZlcnRleFxuICAgaGFzIGEgcGFyZW50KSBvciBhIHBhaXIgb2YgYSByYW5rIGFuZCBhIHVzZXIgdmFsdWUgKGlmIHRoZSB2ZXJ0ZXggaGFzIG5vXG4gICBwYXJlbnQsIGFuZCBpcyB0aHVzIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXggZm9yIHRoaXMgZXF1aXZhbGVuY2VcbiAgIGNsYXNzKS4gKilcblxuKCogV2UgbWFrZSB0aGUgdHlwZSBbJ2EgY29udGVudF0gbXV0YWJsZSwgYW5kIHdlIG1haW50YWluIHRoZSBwcm9wZXJ0eSB0aGF0XG4gICBldmVyeSB2ZXJ0ZXggdW5pcXVlbHkgb3ducyBpdHMgY29udGVudC4gVGhpcyBhbGxvd3MgdXMgdG8gdXBkYXRlIGEgY29udGVudFxuICAgaW4gcGxhY2UgaW5zdGVhZCBvZiBhbGxvY2F0aW5nIGEgbmV3IGNvbnRlbnQgYW5kIHVwZGF0aW5nIHRoZSB2ZXJ0ZXggd2l0aFxuICAgdGhpcyBuZXcgY29udGVudC5cblxuICAgV2Ugb2J0YWluIHRoZSBwcm9wZXJ0eSB0aGF0OlxuICAgLSBvbmx5IFttYWtlXSBhbGxvY2F0ZXMgYSBuZXcgdmVydGV4IChhIHJlZmVyZW5jZSBhbmQgYSBbUm9vdF0gY29udGVudCk7XG4gICAtIG9ubHkgW3VuaW9uXSBhbmQgW21lcmdlXSBhbGxvY2F0ZSBhIG5ldyBlZGdlIChhIFtMaW5rXSBjb250ZW50KS5cbiAgIFtmaW5kXSwgW2dldF0sIFtzZXRdLCBbZXFdIGFsbG9jYXRlIG5vIG1lbW9yeS4gKilcblxudHlwZSAnYSBjb250ZW50ID1cbnwgTGluayBvZiB7IG11dGFibGUgcGFyZW50IDogJ2EgZWxlbSB9XG58IFJvb3Qgb2YgeyBtdXRhYmxlIHJhbmsgOiByYW5rOyBtdXRhYmxlIHZhbHVlIDogJ2EgfVxuXG4oKiBUaGUgdHlwZSBbJ2EgZWxlbV0gcmVwcmVzZW50cyBhIHZlcnRleCBpbiB0aGUgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZS4gKilcblxuYW5kICdhIGVsZW0gPVxuICAnYSBjb250ZW50IHJlZlxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWFrZSB2XSBjcmVhdGVzIGEgbmV3IHJvb3Qgb2YgcmFuayB6ZXJvLiAqKVxuXG5sZXQgbWFrZSAodiA6ICdhKSA6ICdhIGVsZW0gPVxuICByZWYgKFJvb3QgeyByYW5rID0gMDsgdmFsdWUgPSB2IH0pXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtmaW5kIHhdIGZpbmRzIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXggb2YgdGhlIGVxdWl2YWxlbmNlIGNsYXNzIG9mIFt4XS5cbiAgIEl0IGRvZXMgc28gYnkgZm9sbG93aW5nIHRoZSBwYXRoIGZyb20gW3hdIHRvIHRoZSByb290LiBQYXRoIGNvbXByZXNzaW9uIGlzXG4gICBwZXJmb3JtZWQgKG9uIHRoZSB3YXkgYmFjaykgYnkgbWFraW5nIGV2ZXJ5IHZlcnRleCBhbG9uZyB0aGUgcGF0aCBhXG4gICBkaXJlY3QgY2hpbGQgb2YgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gTm8gcmFuayBpcyBhbHRlcmVkLiAqKVxuXG5sZXQgcmVjIGZpbmQgKHggOiAnYSBlbGVtKSA6ICdhIGVsZW0gPVxuICBtYXRjaCAheCB3aXRoXG4gIHwgUm9vdCBfIC0+XG4gICAgICB4XG4gIHwgTGluayAoeyBwYXJlbnQgPSB5IH0gYXMgbGluaykgLT5cbiAgICAgIGxldCB6ID0gZmluZCB5IGluXG4gICAgICBpZiB6ICE9IHkgdGhlblxuICAgICAgICBsaW5rLnBhcmVudCA8LSB6O1xuICAgICAgelxuXG5sZXQgaXNfcmVwcmVzZW50YXRpdmUgKHggOiAnYSBlbGVtKSA6IGJvb2wgPVxuICBtYXRjaCAheCB3aXRoXG4gIHwgUm9vdCBfIC0+XG4gICAgICB0cnVlXG4gIHwgTGluayBfIC0+XG4gICAgICBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZXEgeCB5XSBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHZlcnRpY2VzIFt4XSBhbmQgW3ldIGJlbG9uZyBpbiB0aGVcbiAgIHNhbWUgZXF1aXZhbGVuY2UgY2xhc3MuIEl0IGRvZXMgc28gdmlhIHR3byBjYWxscyB0byBbZmluZF0gYW5kIGFcbiAgIHBoeXNpY2FsIGVxdWFsaXR5IHRlc3QuIEFzIGEgZmFzdCBwYXRoLCB3ZSBmaXJzdCB0ZXN0IHdoZXRoZXIgW3hdXG4gICBhbmQgW3ldIGFyZSBwaHlzaWNhbGx5IGVxdWFsLiAqKVxuXG5sZXQgZXEgKHggOiAnYSBlbGVtKSAoeSA6ICdhIGVsZW0pIDogYm9vbCA9XG4gIHggPT0geSB8fCBmaW5kIHggPT0gZmluZCB5XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtnZXQgeF0gcmV0dXJucyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IGdldCAoeCA6ICdhIGVsZW0pIDogJ2EgPVxuICBsZXQgeCA9IGZpbmQgeCBpblxuICBtYXRjaCAheCB3aXRoXG4gIHwgUm9vdCB7IHZhbHVlID0gdjsgXyB9IC0+XG4gICAgICB2XG4gIHwgTGluayBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW3NldCB4XSB1cGRhdGVzIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgc2V0ICh4IDogJ2EgZWxlbSkgKHYgOiAnYSkgOiB1bml0ID1cbiAgbGV0IHggPSBmaW5kIHggaW5cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3Qgcm9vdCAtPlxuICAgICAgcm9vdC52YWx1ZSA8LSB2XG4gIHwgTGluayBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW3VuaW9uIHggeV0gbWVyZ2VzIHRoZSBlcXVpdmFsZW5jZSBjbGFzc2VzIG9mIFt4XSBhbmQgW3ldIGJ5IGluc3RhbGxpbmcgYVxuICAgbGluayBmcm9tIG9uZSByb290IHZlcnRleCB0byB0aGUgb3RoZXIuICopXG5cbigqIExpbmtpbmcgaXMgYnkgcmFuazogdGhlIHNtYWxsZXItcmFua2VkIHZlcnRleCBpcyBtYWRlIHRvIHBvaW50IHRvIHRoZVxuICAgbGFyZ2VyLiBJZiB0aGUgdHdvIHZlcnRpY2VzIGhhdmUgdGhlIHNhbWUgcmFuaywgdGhlbiBhbiBhcmJpdHJhcnkgY2hvaWNlXG4gICBpcyBtYWRlLCBhbmQgdGhlIHJhbmsgb2YgdGhlIG5ldyByb290IGlzIGluY3JlbWVudGVkIGJ5IG9uZS4gKilcblxubGV0IHVuaW9uICh4IDogJ2EgZWxlbSkgKHkgOiAnYSBlbGVtKSA6ICdhIGVsZW0gPVxuICBsZXQgeCA9IGZpbmQgeFxuICBhbmQgeSA9IGZpbmQgeSBpblxuICBpZiB4ID09IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCAheCwgIXkgd2l0aFxuICAgIHwgUm9vdCAoeyByYW5rID0gcng7IF8gfSBhcyByb290eCksIFJvb3QgeyByYW5rID0gcnk7IF8gfSAtPlxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICB4IDo9IExpbmsgeyBwYXJlbnQgPSB5IH07XG4gICAgICAgICAgeVxuICAgICAgICBlbmQgZWxzZSBpZiByeCA+IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4IH07XG4gICAgICAgICAgeFxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHh9O1xuICAgICAgICAgIHJvb3R4LnJhbmsgPC0gcnggKyAxO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWVyZ2VdIGlzIGFuYWxvZ291cyB0byBbdW5pb25dLCBidXQgaW52b2tlcyBhIHVzZXItc3BlY2lmaWVkIGZ1bmN0aW9uIFtmXVxuICAgdG8gY29tcHV0ZSB0aGUgbmV3IHZhbHVlIFt2XSBhc3NvY2lhdGVkIHdpdGggdGhlIGVxdWl2YWxlbmNlIGNsYXNzLiAqKVxuXG4oKiBUaGUgZnVuY3Rpb24gW2ZdIG11c3Qgbm90IGFmZmVjdCB0aGUgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBieSBtYWtpbmdcbiAgIHJlLWVudHJhbnQgY2FsbHMgdG8gW3NldF0sIFt1bmlvbl0sIG9yIFttZXJnZV0uIFRoZXJlIGFyZSB0d28gcmVhc29ucyBmb3JcbiAgIHRoaXMuIEZpcnN0LCBbZl0gbWF5IGJlIGludm9rZWQgYXQgYSB0aW1lIHdoZW4gdGhlIGludmFyaWFudCBvZiB0aGUgZGF0YVxuICAgc3RydWN0dXJlIGlzIHRlbXBvcmFyaWx5IHZpb2xhdGVkOiBpbiB0aGUgdGhpcmQgYnJhbmNoIGJlbG93LCB0aGUgcmFuayBvZlxuICAgW3hdIGhhcyBub3QgeWV0IGJlZW4gaW5jcmVhc2VkIHdoZW4gW2ZdIGlzIGludm9rZWQuIFNlY29uZCwgbW9yZSBzZXJpb3VzbHksXG4gICBpZiBbZl0gY291bGQgY2FsbCwgc2F5LCBbdW5pb25dLCB0aGVuIHRoYXQgY291bGQgY2hhbmdlIGEgW1Jvb3RdIGludG8gYVxuICAgW0xpbmtdLCBzbyB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCBjaGFuZ2UgYSBbTGlua11cbiAgIGJhY2sgaW50byBhIFtSb290XSwgc29tZXRoaW5nIHRoYXQgZG9lcyBub3QgbWFrZSBhbnkgc2Vuc2UuIEFsc28sIGlmIFtmXVxuICAgY291bGQgY2FsbCBbc2V0XSwgdGhlbiB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCB1bmRvXG4gICB0aGUgZWZmZWN0IG9mIHRoaXMgW3NldF0gb3BlcmF0aW9uOyB0aGlzIGFsc28gZG9lcyBub3QgbWFrZSBzZW5zZS4gKilcblxuKCogVGhlIHRlc3RzIFtpZiB2ICE9IHZ5IHRoZW4gLi4uXSBhbmQgW2lmIHYgIT0gdnggdGhlbiAuLi5dIGFyZSBpbnRlbmRlZCB0b1xuICAgc2F2ZSBhbiBhbGxvY2F0aW9uIGFuZCBhIHdyaXRlIHdoZW4gcG9zc2libGUuICopXG5cbigqIFdlIGludm9rZSBbZl0gYmVmb3JlIHBlcmZvcm1pbmcgYW55IHVwZGF0ZSwgc28gdGhhdCBpZiBbZl0gZmFpbHNcbiAgIChieSByYWlzaW5nIGFuIGV4Y2VwdGlvbiksIHRoZSBzdGF0ZSBpcyB1bmFmZmVjdGVkLiAqKVxuXG5sZXQgbWVyZ2UgKGYgOiAnYSAtPiAnYSAtPiAnYSkgKHggOiAnYSBlbGVtKSAoeSA6ICdhIGVsZW0pIDogJ2EgZWxlbSA9XG4gIGxldCB4ID0gZmluZCB4XG4gIGFuZCB5ID0gZmluZCB5IGluXG4gIGlmIHggPT0geSB0aGVuIHggZWxzZVxuICAgIG1hdGNoICF4LCAheSB3aXRoXG4gICAgfCBSb290ICh7IHJhbmsgPSByeDsgdmFsdWUgPSB2eCB9IGFzIHJvb3R4KSxcbiAgICAgIFJvb3QgKHsgcmFuayA9IHJ5OyB2YWx1ZSA9IHZ5IH0gYXMgcm9vdHkpIC0+XG4gICAgICAgIGxldCB2ID0gZiB2eCB2eSBpblxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICB4IDo9IExpbmsgeyBwYXJlbnQgPSB5IH07XG4gICAgICAgICAgaWYgdiAhPSB2eSB0aGVuIHJvb3R5LnZhbHVlIDwtIHY7XG4gICAgICAgICAgeVxuICAgICAgICBlbmQgZWxzZSBpZiByeCA+IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4IH07XG4gICAgICAgICAgaWYgdiAhPSB2eCB0aGVuIHJvb3R4LnZhbHVlIDwtIHY7XG4gICAgICAgICAgeFxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHggfTtcbiAgICAgICAgICByb290eC5yYW5rIDwtIHJ4ICsgMTtcbiAgICAgICAgICBpZiB2ICE9IHZ4IHRoZW4gcm9vdHgudmFsdWUgPC0gdjtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBJTlRNQVAgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHZhbCBlbXB0eTogJ2EgdFxuICB2YWwgZmluZDogaW50IC0+ICdhIHQgLT4gJ2FcbiAgdmFsIGFkZDogaW50IC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChJbnRNYXAgOiBJTlRNQVApID0gc3RydWN0XG5cbigqIEEgc3RvcmUgaXMgaW1wbGVtZW50ZWQgYXMgYSBwYWlyIG9mIGFuIGludGVnZXIgYWRkcmVzcyBhbmQgYSBtYXAgb2ZcbiAgIGludGVnZXIgYWRkcmVzc2VzIHRvIHZhbHVlcy4gV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHRoZVxuICAgZG9tYWluIG9mIHRoZSBtYXAgW2NvbnRlbnRdIGlzIHRoZSBzZW1pLW9wZW4gaW50ZXJ2YWwgb2YgemVyb1xuICAgKGluY2x1ZGVkKSB1cCB0byBbbGltaXRdIChleGNsdWRlZCkuICopXG5cbnR5cGUgJ2Egc3RvcmUgPSB7XG4gICgqIFRoZSBuZXh0IGF2YWlsYWJsZSBhZGRyZXNzLiAqKVxuICBtdXRhYmxlIGxpbWl0OiAgIGludDtcbiAgKCogVGhlIGNvbnRlbnQgb2YgdGhlIHN0b3JlLiAqKVxuICBtdXRhYmxlIGNvbnRlbnQ6ICdhIEludE1hcC50XG59XG5cbmxldCBuZXdfc3RvcmUgKCkgPSB7XG4gIGxpbWl0ID0gMDtcbiAgY29udGVudCA9IEludE1hcC5lbXB0eVxufVxuXG4oKiBCZWNhdXNlIGEgcGVyc2lzdGVudCBtYXAgaXMgdXNlZCwgY29weWluZyBhIHN0b3JlIGFtb3VudHMgdG8gY29weWluZ1xuICAgdGhlIG11dGFibGUgcmVjb3JkIGF0IHRoZSByb290LiAqKVxuXG5sZXQgY29weSBzID1cbiAgeyBsaW1pdCA9IHMubGltaXQ7IGNvbnRlbnQgPSBzLmNvbnRlbnQgfVxuXG4oKiBBIHJlZmVyZW5jZSBpcyBqdXN0IGFuIGludGVnZXIgYWRkcmVzcy4gKilcblxudHlwZSAnYSBycmVmID1cbiAgaW50XG5cbmxldCBtYWtlIHMgdiA9XG4gIGxldCB4ID0gcy5saW1pdCBpblxuICBzLmxpbWl0IDwtIHggKyAxO1xuICBzLmNvbnRlbnQgPC0gSW50TWFwLmFkZCB4IHYgcy5jb250ZW50O1xuICB4XG5cbigqIFtjaGVjayBzIHhdIGNoZWNrcyB0aGF0IHRoZSBhZGRyZXNzIFt4XSBpcyBpbiByYW5nZSBmb3IgdGhlIHN0b3JlIFtzXS4gSWZcbiAgIHRoaXMgZHluYW1pYyBjaGVjayBmYWlscywgdGhlbiB0aGUgdXNlciBpcyBjb25mdXNlZCBhbmQgaGFzIHBhc3NlZCB1cyBhblxuICAgYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAoSWYgdGhlIGNoZWNrIHN1Y2NlZWRzLFxuICAgdGhlIHVzZXIgbWF5IGJlIGNvbmZ1c2VkIHRvbyEgYnV0IHdlIGNhbm5vdCBkZXRlY3QgaXQuKSAqKVxuXG5leGNlcHRpb24gSW52YWxpZFJlZlxuXG5sZXQgY2hlY2sgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA9XG4gICgqIFdlIGRvIG5vdCBjaGVjayB0aGF0IFt4XSBpcyBub25uZWdhdGl2ZS4gQW4gb3ZlcmZsb3cgY2Fubm90IG9jY3VyLFxuICAgICBzaW5jZSB0aGF0IHdvdWxkIGltcGx5IHRoYXQgd2UgaGF2ZSBmaWxsZWQgdGhlIG1lbW9yeSB3aXRoIGEgaHVnZVxuICAgICBhcnJheS4gKilcbiAgIGlmIHggPj0gcy5saW1pdCB0aGVuXG4gICAgIHJhaXNlIEludmFsaWRSZWZcblxubGV0IGdldCBzIHggPVxuICAoKiBGYWlsdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIHdvdWxkIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgaGFzIHBhc3NlZCB1c1xuICAgICBhbiBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuICopXG4gIGNoZWNrIHMgeDtcbiAgSW50TWFwLmZpbmQgeCBzLmNvbnRlbnRcblxubGV0IHNldCBzIHggdiA9XG4gICgqIEZhaWx1cmUgb2YgdGhpcyBhc3NlcnRpb24gd291bGQgaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBoYXMgcGFzc2VkIHVzXG4gICAgIGFuIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKilcbiAgY2hlY2sgcyB4O1xuICBzLmNvbnRlbnQgPC0gSW50TWFwLmFkZCB4IHYgcy5jb250ZW50XG5cbmxldCBlcSBzICh4IDogaW50KSAoeSA6IGludCkgPVxuICAoKiBGYWlsdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIHdvdWxkIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgaGFzIHBhc3NlZCB1c1xuICAgICBhbiBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuICopXG4gIGNoZWNrIHMgeDtcbiAgY2hlY2sgcyB5O1xuICB4ID0geVxuXG5lbmRcblxuKCogSW5jbHVkZSB0aGUgbW9zdCBjb21tb24gaW5zdGFuY2Ugb2YgdGhlIGFib3ZlIGZ1bmN0b3IuICopXG5cbmluY2x1ZGUgTWFrZShNYXAuTWFrZShzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG4gIGxldCBjb21wYXJlID0gKC0pICgqIG9rIHNpbmNlIHRoZSBhcmd1bWVudHMgYXJlIG5vbm5lZ2F0aXZlIGludGVnZXJzICopXG5lbmQpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFdoZW4gT0NhbWwncyBidWlsdC1pbiBzdG9yZSBpcyB1c2VkLCBubyBleHBsaWNpdCBzdG9yZSBpcyBuZWVkZWQuICopXG5cbnR5cGUgJ2Egc3RvcmUgPVxuICB1bml0XG5cbmxldCBuZXdfc3RvcmUgKCkgPVxuICAoKVxuXG4oKiBDb3B5aW5nIGlzIG5vdCBzdXBwb3J0ZWQuICopXG5cbmxldCBjb3B5IF9zID1cbiAgYXNzZXJ0IGZhbHNlXG5cbigqIEEgcmVmZXJlbmNlIGlzIGEgcHJpbWl0aXZlIHJlZmVyZW5jZS4gKilcblxudHlwZSAnYSBycmVmID1cbiAgJ2EgcmVmXG5cbmxldCBtYWtlICgpIHYgPVxuICByZWYgdlxuXG5sZXQgZ2V0ICgpIHggPVxuICAheFxuXG5sZXQgc2V0ICgpIHggdiA9XG4gIHggOj0gdlxuXG5sZXQgZXEgKCkgeCB5ID1cbiAgeCA9PSB5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQSByZWZlcmVuY2UgY2VsbCByZWNvcmRzIGJvdGggaXRzIGN1cnJlbnQgKHBvc3NpYmx5IHVuY29tbWl0dGVkKSB2YWx1ZSBhbmRcbiAgIGl0cyBsYXN0IGNvbW1pdHRlZCB2YWx1ZS4gQSBjZWxsIGlzIGNvbnNpZGVyZWQgc3RhYmxlIHdoZW4gdGhlc2UgdHdvIHZhbHVlc1xuICAgYXJlIChwaHlzaWNhbGx5KSBlcXVhbCwgYW5kIHVuc3RhYmxlIG90aGVyd2lzZS4gKilcblxuKCogT25lIGNvdWxkIHBlcmhhcHMgZW5yaWNoIGVhY2ggY2VsbCB3aXRoIGEgcG9pbnRlciB0byBpdHMgc3RvcmUsIHNvIGFzIHRvXG4gICBlbnN1cmUgYXQgcnVudGltZSB0aGF0IHRoZSB1c2VyIGlzIG5vdCBjb25mdXNlZC4gKilcblxudHlwZSAnYSBycmVmID0ge1xuICAoKiBUaGUgY3VycmVudCAocG9zc2libHkgdW5jb21taXR0ZWQpIHZhbHVlLiAqKVxuICBtdXRhYmxlIGN1cnJlbnQ6ICdhO1xuICAoKiBUaGUgbGFzdCBjb21taXR0ZWQgdmFsdWUuICopXG4gIG11dGFibGUgY29tbWl0dGVkOiAnYVxufVxuXG4oKiBBIHRyYW5zYWN0aW9uIGNvbnRhaW5zIGEgc3RhY2sgb2YgYWxsIHVuc3RhYmxlIGNlbGxzIChhbmQgcG9zc2libHkgc29tZVxuICAgc3RhYmxlIGNlbGxzIHRvbywgYWx0aG91Z2ggdGhhdCBpcyB1bmxpa2VseSkuICopXG5cbnR5cGUgJ2EgdHJhbnNhY3Rpb24gPVxuICAnYSBycmVmIFN0YWNrLnRcblxuKCogQSBzdG9yZSBjb250YWlucyBhbiBvcHRpb25hbCB0cmFuc2FjdGlvbi4gVGhpcyBpbmRpY2F0ZXMgd2hldGhlciBhXG4gICB0cmFuc2FjdGlvbiBpcyBjdXJyZW50bHkgb25nb2luZy4gVHJhbnNhY3Rpb25zIGNhbm5vdCBiZSBuZXN0ZWQuICopXG5cbnR5cGUgJ2Egc3RvcmUgPVxuICB7IG11dGFibGUgdHJhbnNhY3Rpb246ICdhIHRyYW5zYWN0aW9uIG9wdGlvbiB9XG5cbmxldCBuZXdfc3RvcmUgKCkgOiAnYSBzdG9yZSA9XG4gIHsgdHJhbnNhY3Rpb24gPSBOb25lIH1cblxuKCogQ29weWluZyBpcyBub3Qgc3VwcG9ydGVkLiAqKVxuXG5sZXQgY29weSBfcyA9XG4gIGFzc2VydCBmYWxzZVxuXG5sZXQgbWFrZSAoX3MgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiAnYSBycmVmID1cbiAgeyBjdXJyZW50ID0gdjsgY29tbWl0dGVkID0gdiB9XG5cbmxldCBnZXQgKF9zIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSA9XG4gIHguY3VycmVudFxuXG5sZXQgc2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgKCogSWYgdGhlIG5ldyB2YWx1ZSBoYXBwZW5zIHRvIGJlIHRoZSBjdXJyZW50IHZhbHVlLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLiAqKVxuICBsZXQgY3VycmVudCA9IHguY3VycmVudCBpblxuICBpZiB2ID09IGN1cnJlbnQgdGhlblxuICAgICgpXG4gIGVsc2UgYmVnaW4gbWF0Y2ggcy50cmFuc2FjdGlvbiB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgKCogT3V0c2lkZSBvZiBhIHRyYW5zYWN0aW9uLCB0d28gbm9ybWFsIHdyaXRlIG9wZXJhdGlvbnMgYXJlIHBlcmZvcm1lZC5cbiAgICAgICAgIFRoZSBjZWxsIHJlbWFpbnMgc3RhYmxlLiBOb3RoaW5nIGlzIGxvZ2dlZC4gKilcbiAgICAgIHguY3VycmVudCA8LSB2O1xuICAgICAgeC5jb21taXR0ZWQgPC0gdlxuICB8IFNvbWUgc3RhY2sgLT5cbiAgICAgICgqIFdlIGFyZSB3aXRoaW4gYSB0cmFuc2FjdGlvbi4gKilcbiAgICAgICgqIElmIHRoaXMgY2VsbCB3YXMgc3RhYmxlIGFuZCBub3cgYmVjb21lcyB1bnN0YWJsZSwgdGhlbiBpdCBtdXN0IGJlXG4gICAgICAgICBpbnNlcnRlZCBpbnRvIHRoZSBzZXQgb2YgdW5zdGFibGUgY2VsbHMsIHdoaWNoIGlzIHJlY29yZGVkIGFzIHBhcnRcbiAgICAgICAgIG9mIHRoZSB0cmFuc2FjdGlvbi4gKilcbiAgICAgIGlmIGN1cnJlbnQgPT0geC5jb21taXR0ZWQgdGhlblxuICAgICAgICBTdGFjay5wdXNoIHggc3RhY2s7XG4gICAgICAoKiBUaGUgY2VsbCBtdXN0IHRoZW4gYmUgdXBkYXRlZC4gSWYgW3ZdIGhhcHBlbnMgdG8gYmUgZXF1YWwgdG9cbiAgICAgICAgIFtjb21taXR0ZWRdLCB0aGlzIGNvdWxkIG1ha2UgdGhlIGNlbGwgc3RhYmxlIGFnYWluLiBXZSBkbyBub3RcbiAgICAgICAgIGNoZWNrIGZvciB0aGlzIHVubGlrZWx5IHNpdHVhdGlvbi4gVGhpcyBtZWFucyB0aGF0IHRoZSBzZXQgb2ZcbiAgICAgICAgIHVuc3RhYmxlIGNlbGxzIGNvdWxkIGFjdHVhbGx5IGNvbnRhaW4gc3RhYmxlIGNlbGxzIHRvby4gKilcbiAgICAgIHguY3VycmVudCA8LSB2XG4gICAgZW5kXG5cbmxldCBlcSAoX3MgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIHggPT0geVxuXG5leGNlcHRpb24gTmVzdGVkVHJhbnNhY3Rpb25BdHRlbXB0XG5cbmxldCBjb21taXQgeCA9XG4gIHguY29tbWl0dGVkIDwtIHguY3VycmVudFxuXG5sZXQgcm9sbGJhY2sgeCA9XG4gIHguY3VycmVudCA8LSB4LmNvbW1pdHRlZFxuXG5sZXQgdGVudGF0aXZlbHkgKHMgOiAnYSBzdG9yZSkgKGYgOiB1bml0IC0+ICdiKSA6ICdiID1cbiAgbWF0Y2ggcy50cmFuc2FjdGlvbiB3aXRoXG4gIHwgU29tZSBfIC0+XG4gICAgICByYWlzZSBOZXN0ZWRUcmFuc2FjdGlvbkF0dGVtcHRcbiAgfCBOb25lIC0+XG4gICAgICBsZXQgc3RhY2sgPSBTdGFjay5jcmVhdGUoKSBpblxuICAgICAgcy50cmFuc2FjdGlvbiA8LSBTb21lIHN0YWNrO1xuICAgICAgdHJ5XG4gICAgICAgIGxldCBiID0gZigpIGluXG4gICAgICAgICgqIENvbW1pdCBldmVyeSB1bnN0YWJsZSBjZWxsLiAqKVxuICAgICAgICBTdGFjay5pdGVyIGNvbW1pdCBzdGFjaztcbiAgICAgICAgKCogQ2xvc2UgdGhlIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgICBzLnRyYW5zYWN0aW9uIDwtIE5vbmU7XG4gICAgICAgICgqIFJlcG9ydCB0aGUgb3V0Y29tZS4gKilcbiAgICAgICAgYlxuICAgICAgd2l0aCBlIC0+XG4gICAgICAgIGxldCBiID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UoKSBpblxuICAgICAgICAoKiBSb2xsIGJhY2sgZXZlcnkgdW5zdGFibGUgY2VsbC4gKilcbiAgICAgICAgU3RhY2suaXRlciByb2xsYmFjayBzdGFjaztcbiAgICAgICAgKCogQ2xvc2UgdGhlIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgICBzLnRyYW5zYWN0aW9uIDwtIE5vbmU7XG4gICAgICAgICgqIFJlcG9ydCB0aGUgb3V0Y29tZS4gKilcbiAgICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgZSBiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQSBzdG9yZSBpcyBpbXBsZW1lbnRlZCBhcyBhbiBleHRlbnNpYmxlIGFycmF5LCB0aGF0IGlzLCBhIHBhaXIgb2YgYW5cbiAgIGludGVnZXIgYWRkcmVzcyBhbmQgYW4gYXJyYXkuIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB0aGUgbGVuZ3RoIG9mXG4gICB0aGUgYXJyYXkgaXMgYXQgbGVhc3QgW2xpbWl0XS4gVGhlIGFyZWEgb2YgdGhlIGFycmF5IGF0IGluZGV4IFtsaW1pdF0gYW5kXG4gICBiZXlvbmQgaXMgY29uc2lkZXJlZCB1bmluaXRpYWxpemVkLiAqKVxuXG4oKiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhpcyBhcmVhIGlzIGZpbGxlZCB3aXRoIGFyYml0cmFyeSB2YWx1ZShzKVxuICAgcHJvdmlkZWQgYnkgdGhlIHVzZXIgaW4gY2FsbHMgdG8gW21ha2VdIG9yIFtzZXRdLiBUaGlzIGlzIG5vdCBpZGVhbCwgYXMgaXRcbiAgIGNhbiBjYXVzZSBhIG1lbW9yeSBsZWFrLiAqKVxuXG50eXBlICdhIHN0b3JlID0ge1xuICAoKiBUaGUgbG9naWNhbCBzaXplIG9mIHRoZSBhcnJheTsgYWxzbywgdGhlIG5leHQgYXZhaWxhYmxlIGFkZHJlc3MuICopXG4gIG11dGFibGUgbGltaXQ6ICAgaW50O1xuICAoKiBUaGUgYXJyYXksIHdob3NlIGxlbmd0aCBpcyBhdCBsZWFzdCBbbGltaXRdLiAqKVxuICBtdXRhYmxlIGNvbnRlbnQ6ICdhIGFycmF5XG59XG5cbigqIFRoZSBhcnJheSBpcyBjcmVhdGVkIHdpdGggYSBzaXplIGFuZCBsZW5ndGggb2YgemVyby4gV2UgaGF2ZSBubyBvdGhlclxuICAgY2hvaWNlLCBzaW5jZSB3ZSBkbyBub3QgaGF2ZSBhIHZhbHVlIG9mIHR5cGUgWydhXSBhdCBoYW5kLiAqKVxuXG5sZXQgbmV3X3N0b3JlICgpIDogJ2Egc3RvcmUgPSB7XG4gIGxpbWl0ID0gMDtcbiAgY29udGVudCA9IFt8fF1cbn1cblxuKCogQ29weWluZyBpcyBzdXBwb3J0ZWQsIGJ1dCBpcyBub3QgY2hlYXAuIFVzZSBhdCB5b3VyIG93biByaXNrLiAqKVxuXG5sZXQgY29weSAocyA6ICdhIHN0b3JlKSA6ICdhIHN0b3JlID1cbiAgeyBsaW1pdCA9IHMubGltaXQ7IGNvbnRlbnQgPSBBcnJheS5jb3B5IHMuY29udGVudCB9XG5cbigqIEEgcmVmZXJlbmNlIGlzIGFuIGluZGV4IGludG8gdGhlIGFycmF5LiAqKVxuXG50eXBlICdhIHJyZWYgPVxuICBpbnRcblxuKCogVGhlIGFycmF5IGp1bXBzIGZyb20gbGVuZ3RoIHplcm8gdG8gbGVuZ3RoIFtkZWZhdWx0X2luaXRpYWxfbGVuZ3RoXSBhcyBzb29uXG4gICBhcyBhIGNhbGwgdG8gW21ha2VdIGlzIG1hZGUuICopXG5cbmxldCBkZWZhdWx0X2luaXRpYWxfbGVuZ3RoID1cbiAgMjU2XG5cbigqIFtlbmxhcmdlIHMgdl0gaW5jcmVhc2VzIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IChpZiBuZWNlc3NhcnkpIHNvIGFzIHRvXG4gICBlbnN1cmUgdGhhdCBbcy5saW1pdF0gYmVjb21lcyBhIHZhbGlkIGluZGV4LiBUaGUgYXJndW1lbnQgW3ZdIGlzIHVzZWQgYXMgYVxuICAgZGVmYXVsdCB2YWx1ZSB0byBmaWxsIHRoZSB1bmluaXRpYWxpemVkIGFyZWEuICopXG5cbmxldCBlbmxhcmdlIChzIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogdW5pdCA9XG4gIGxldCBjb250ZW50ID0gcy5jb250ZW50IGluXG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggY29udGVudCBpblxuICBpZiBzLmxpbWl0ID0gbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBsZXQgbGVuZ3RoJyA9XG4gICAgICBpZiBsZW5ndGggPSAwIHRoZW5cbiAgICAgICAgZGVmYXVsdF9pbml0aWFsX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICAyICogbGVuZ3RoXG4gICAgaW5cbiAgICBhc3NlcnQgKHMubGltaXQgPCBsZW5ndGgnKTtcbiAgICBsZXQgY29udGVudCcgPSBBcnJheS5tYWtlIGxlbmd0aCcgdiBpblxuICAgIEFycmF5LmJsaXQgY29udGVudCAwIGNvbnRlbnQnIDAgbGVuZ3RoO1xuICAgIHMuY29udGVudCA8LSBjb250ZW50J1xuICBlbmRcblxuKCogTm90ZSB0aGF0IHdlIGNhbm5vdCB1c2UgW0FycmF5LnVuc2FmZV9zZXRdIGFuZCBbQXJyYXkudW5zYWZlX2dldF0gd2l0aG91dFxuICAgYW55IHByZWNhdXRpb25zLCBzaW5jZSB0aGUgT0NhbWwgdHlwZS1jaGVja2VyIGNhbm5vdCBndWFyYW50ZWUgdGhhdCB0aGVcbiAgIGluZGljZXMgYXJlIGluIHJhbmdlLiBBIGNvbmZ1c2VkIHVzZXIgY291bGQgcGFzcyByZWZlcmVuY2VzIGludG8gc29tZVxuICAgb3RoZXIgc3RvcmUuIFdlIGNob29zZSB0byBleHBsaWNpdGx5IGNoZWNrIHRoYXQgdGhlIGluZGV4IGlzIHdpdGhpbiB0aGVcbiAgIGxvZ2ljYWwgYm91bmRzIG9mIHRoZSBhcnJheSAtLSB0aGlzIGlzIGEgbW9yZSBwcmVjaXNlIGNoZWNrLiAqKVxuXG5leGNlcHRpb24gSW52YWxpZFJlZlxuXG5sZXQgY2hlY2sgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6IHVuaXQgPVxuICAoKiBXZSBkbyBub3QgY2hlY2sgdGhhdCBbeF0gaXMgbm9ubmVnYXRpdmUuIEFuIG92ZXJmbG93IGNhbm5vdCBvY2N1cixcbiAgICAgc2luY2UgdGhhdCB3b3VsZCBpbXBseSB0aGF0IHdlIGhhdmUgZmlsbGVkIHRoZSBtZW1vcnkgd2l0aCBhIGh1Z2VcbiAgICAgYXJyYXkuICopXG4gIGlmIHggPj0gcy5saW1pdCB0aGVuXG4gICAgcmFpc2UgSW52YWxpZFJlZlxuXG5sZXQgbWFrZSAocyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6ICdhIHJyZWYgPVxuICBlbmxhcmdlIHMgdjtcbiAgbGV0IHggPSBzLmxpbWl0IGluXG4gIHMubGltaXQgPC0geCArIDE7XG4gIEFycmF5LnVuc2FmZV9zZXQgcy5jb250ZW50IHggdjtcbiAgeFxuXG5sZXQgZ2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSA9XG4gIGNoZWNrIHMgeDtcbiAgQXJyYXkudW5zYWZlX2dldCBzLmNvbnRlbnQgeFxuXG5sZXQgc2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgY2hlY2sgcyB4O1xuICBBcnJheS51bnNhZmVfc2V0IHMuY29udGVudCB4IHZcblxubGV0IGVxICAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiBib29sID1cbiAgY2hlY2sgcyB4O1xuICBjaGVjayBzIHk7XG4gIHggPSB5XG4iLCJsZXQgbmJzcCA9IFwiXFx4QzJcXHhBMFwiOyAvLyBVVEYtOCBlbmNvZGluZyBmb3IgVSswMEEwIFwiTm8tYnJlYWsgc3BhY2VcIlxuXG4vLyBOT1RFOiAzMCUgZmFzdGVyIHRoYW4gQ2Ftb21pbGVcbmxldCBsZW5ndGggPSAoczogc3RyaW5nKTogaW50ID0+IHtcbiAgbGV0IHN0b3AgPSBTdHJpbmcubGVuZ3RoKHMpO1xuICBsZXQgcmVjIGRpc3RhbmNlX2F1eCA9IChzdGFydDogaW50LCBjb3VudDogaW50KSA9PlxuICAgIGlmIChzdGFydCArIGNvdW50ID49IHN0b3ApIHtcbiAgICAgIHN0b3AgLSBjb3VudDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG4gPSBDaGFyLmNvZGUoU3RyaW5nLnVuc2FmZV9nZXQocywgc3RhcnQgKyBjb3VudCkpO1xuICAgICAgaWYgKG4gPCAweDgwKSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50KTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZTApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAxKTtcbiAgICAgIH0gZWxzZSBpZiAobiA8IDB4ZjApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50ICsgMyk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgZGlzdGFuY2VfYXV4KDAsIDApO1xufTtcbiIsIi8vIE1hcHMga2V5ZWQgYnkgYW4gZW5kIHBvc2l0aW9uXG4vLyBJbnZhcmllbnQ6IGtleXMgYXJlIGFzY2VuZGluZyBhbmQgdW5pcXVlXG50eXBlIGtleSA9IGludDtcbnR5cGUgdCgnYSkgPSBsaXN0KChrZXksICdhKSk7XG5sZXQgZW1wdHk6ICdhLiB0KCdhKSA9IFtdO1xubGV0IHNpbmdsZXRvbjogJ2EuIChrZXksICdhKSA9PiB0KCdhKSA9IChwb3MsIHgpID0+IFsocG9zLCB4KV07XG5sZXQgcmVjIHVuaW9uOiAnYS4gKCgnYSwgJ2EpID0+ICdhLCB0KCdhKSwgdCgnYSkpID0+IHQoJ2EpID1cbiAgKGYsIHQxLCB0MikgPT5cbiAgICBzd2l0Y2ggKHQxLCB0Mikge1xuICAgIHwgKFtdLCB0X290aGVyKSA9PiB0X290aGVyXG4gICAgfCAodF9vdGhlciwgW10pID0+IHRfb3RoZXJcbiAgICB8IChbKHAxLCB4MSksIC4uLnhzMV0sIFsocDIsIHgyKSwgLi4ueHMyXSkgPT5cbiAgICAgIGlmIChwMSA8IHAyKSB7XG4gICAgICAgIFsocDEsIHgxKSwgLi4udW5pb24oZiwgeHMxLCBbKHAyLCB4MiksIC4uLnhzMl0pXTtcbiAgICAgIH0gZWxzZSBpZiAocDEgPiBwMikge1xuICAgICAgICBbKHAyLCB4MiksIC4uLnVuaW9uKGYsIFsocDEsIHgxKSwgLi4ueHMxXSwgeHMyKV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbKHAxLCBmKHgxLCB4MikpLCAuLi51bmlvbihmLCB4czEsIHhzMildO1xuICAgICAgfVxuICAgIH07XG5sZXQgcmVjIG1hcDogJ2EgJ2IuICgnYSA9PiAnYiwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gWyhwb3MsIGYoeCkpLCAuLi5tYXAoZiwgcmVzdCldO1xubGV0IHJlYyBtYXBpOiAnYSAnYi4gKChrZXksICdhKSA9PiAnYiwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gWyhwb3MsIGYocG9zLCB4KSksIC4uLm1hcGkoZiwgcmVzdCldO1xubGV0IHJlYyBtYXBrOiAnYSAnYi4gKChrZXksICdhKSA9PiAoa2V5LCAnYiksIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIGYgPT5cbiAgICBmdW5cbiAgICB8IFtdID0+IFtdXG4gICAgfCBbKHBvcywgeCksIC4uLnJlc3RdID0+IFtmKHBvcywgeCksIC4uLm1hcGsoZiwgcmVzdCldO1xubGV0IHJlYyBmb2xkX2xlZnQ6ICdhICdiLiAoKGtleSwgJ2IsICdhKSA9PiAnYiwgJ2IsIHQoJ2EpKSA9PiAnYiA9XG4gIChmLCB6KSA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gelxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBmb2xkX2xlZnQoZiwgZihwb3MsIHosIHgpLCByZXN0KTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCA9IHtcbiAgcm93OiBpbnQsXG4gIGNvbDogaW50LFxufTtcblxubGV0IGNvbXBhcmUgPSAocG9zMSwgcG9zMikgPT5cbiAgaWYgKHBvczEucm93IDwgcG9zMi5yb3cpIHtcbiAgICAoLTEpO1xuICB9IGVsc2UgaWYgKHBvczEucm93ID4gcG9zMi5yb3cpIHtcbiAgICAxO1xuICB9IGVsc2Uge1xuICAgIEludC5jb21wYXJlKHBvczEuY29sLCBwb3MyLmNvbCk7XG4gIH07XG5cbmxldCB6ZXJvID0ge3JvdzogMCwgY29sOiAwfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8vIFRPRE86IHJlbmFtZSBBbm5vdCB0byBBbm4/XG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9XG4gIHwgVGV4dChzdHJpbmcpIC8vIEludmFyaWFudDogY29udGFpbnMgbm8gbmV3bGluZXMuIFRleHQoXCJcIikgaXMgaWRlbnRpdHkgZm9yIGBDYXRgXG4gIHwgQ2F0KHQoJ2Fubm90KSwgdCgnYW5ub3QpKSAvLyBBc3NvY2lhdGl2ZVxuICB8IExpbmVicmVha1xuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7IC8vIEFubm90YXRpb25zXG5cbmxldCBhbGlnbiA9IChsOiB0KCdhbm5vdCkpID0+IEFsaWduKGwpO1xubGV0IGFubm90ID0gKGFubm90OiAnYW5ub3QsIGw6IHQoJ2Fubm90KSkgPT4gQW5ub3QoYW5ub3QsIGwpO1xuXG5sZXQgcmVjIHJlbW92ZV9hbm5vdHMgPSAobGF5b3V0OiB0KCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge1xuICBzd2l0Y2ggKGxheW91dCkge1xuICB8IEFubm90KF8sIGwpID0+IHJlbW92ZV9hbm5vdHMobClcbiAgfCBUZXh0KHN0cmluZykgPT4gVGV4dChzdHJpbmcpXG4gIHwgQ2F0KGwxLCBsMikgPT4gQ2F0KHJlbW92ZV9hbm5vdHMobDEpLCByZW1vdmVfYW5ub3RzKGwyKSlcbiAgfCBMaW5lYnJlYWsgPT4gTGluZWJyZWFrXG4gIHwgQWxpZ24obCkgPT4gQWxpZ24ocmVtb3ZlX2Fubm90cyhsKSlcbiAgfTtcbn07XG5cbi8vIFRPRE8/XG4vL2xldCB0ZXh0ID0gKHN0cmluZykgPT4gdF9vZl9sYXlvdXQoVGV4dChzdHJpbmcpKTtcbi8vbGV0IGNhdCA9ICh0MSwgdDIpID0+IHRfb2ZfbGF5b3V0KENhdCh0MSwgdDIpKTtcbi8vbGV0IGxpbmVicmVhayA9IHRfb2ZfbGF5b3V0KGxpbmVicmVhayk7XG5cbi8vIFRPRE86IG1vdmUgdG8gb3duIG1vZHVsZVxudHlwZSB0ZXh0KCdhbm5vdCwgJ2ltcCwgJ3QpID0ge1xuICAvLyBUT0RPOiByZW5hbWUgYGltcGBcbiAgaW1wX29mX3N0cmluZzogc3RyaW5nID0+ICdpbXAsXG4gIGltcF9hcHBlbmQ6ICgnaW1wLCAnaW1wKSA9PiAnaW1wLFxuICBpbXBfbmV3bGluZTogaW50ID0+ICdpbXAsXG4gIGltcF9vZl9hbm5vdDogKCdhbm5vdCwgJ2ltcCkgPT4gJ2ltcCxcbiAgdF9vZl9pbXA6ICdpbXAgPT4gJ3QsXG59O1xuXG5sZXQgbWtfb2ZfbGF5b3V0OiAodGV4dCgnYW5ub3QsICdpbXAsICd0KSwgdCgnYW5ub3QpKSA9PiAndCA9XG4gICh0ZXh0LCBsYXlvdXQpID0+IHtcbiAgICBsZXQgY29sdW1uOiByZWYoaW50KSA9IHJlZigwKTtcbiAgICBsZXQgcmVjIGdvOiAoaW50LCB0KCdhbm5vdCkpID0+ICdpbXAgPVxuICAgICAgKGluZGVudCwgbGF5b3V0KSA9PiB7XG4gICAgICAgIHN3aXRjaCAobGF5b3V0KSB7XG4gICAgICAgIHwgVGV4dChzdHJpbmcpID0+XG4gICAgICAgICAgY29sdW1uIDo9IGNvbHVtbl4gKyBVbmljb2RlLmxlbmd0aChzdHJpbmcpO1xuICAgICAgICAgIHRleHQuaW1wX29mX3N0cmluZyhzdHJpbmcpO1xuICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgbGV0IGltcDEgPSBnbyhpbmRlbnQsIGwxKTtcbiAgICAgICAgICBsZXQgaW1wMiA9IGdvKGluZGVudCwgbDIpO1xuICAgICAgICAgIHRleHQuaW1wX2FwcGVuZChpbXAxLCBpbXAyKTtcbiAgICAgICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgICAgICAvLyBUT0RPOiBubyBpbmRlbnQgaWYgb24gZmluYWwgbGluZSBicmVha1xuICAgICAgICAgIGNvbHVtbiA6PSBpbmRlbnQ7XG4gICAgICAgICAgdGV4dC5pbXBfbmV3bGluZShpbmRlbnQpO1xuICAgICAgICB8IEFsaWduKGwpID0+IGdvKGNvbHVtbl4sIGwpXG4gICAgICAgIHwgQW5ub3QoYW5ub3QsIGwpID0+IHRleHQuaW1wX29mX2Fubm90KGFubm90LCBnbyhpbmRlbnQsIGwpKVxuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB0ZXh0LnRfb2ZfaW1wKGdvKDAsIGxheW91dCkpO1xuICB9O1xuXG5sZXQgc3RyaW5nX29mX2xheW91dDogJ2Fubm90LiB0KCdhbm5vdCkgPT4gc3RyaW5nID1cbiAgbGF5b3V0ID0+IHtcbiAgICBsZXQgcmVjb3JkOiAnYW5ub3QuIHRleHQoJ2Fubm90LCBzdHJpbmcsIHN0cmluZykgPSB7XG4gICAgICBpbXBfb2Zfc3RyaW5nOiBzdHJpbmcgPT4gc3RyaW5nLFxuICAgICAgaW1wX2FwcGVuZDogKHMxLCBzMikgPT4gczEgKysgczIsXG4gICAgICBpbXBfbmV3bGluZTogaW5kZW50ID0+IFwiXFxuXCIgKysgU3RyaW5nLm1ha2UoaW5kZW50LCAnICcpLFxuICAgICAgaW1wX29mX2Fubm90OiAoXywgaW1wKSA9PiBpbXAsXG4gICAgICB0X29mX2ltcDogaW1wID0+IGltcCxcbiAgICB9O1xuICAgIG1rX29mX2xheW91dChyZWNvcmQsIGxheW91dCk7XG4gIH07XG5cbmxldCBzdHJpbmdzX29mX2xheW91dDogJ2Fubm90LiB0KCdhbm5vdCkgPT4gbGlzdCgoaW50LCBzdHJpbmcpKSA9XG4gIGxheW91dCA9PiB7XG4gICAgbGV0IHJlY29yZDpcbiAgICAgICdhbm5vdC5cbiAgICAgIHRleHQoJ2Fubm90LCBsaXN0KChpbnQsIHN0cmluZykpLCBsaXN0KChpbnQsIHN0cmluZykpKVxuICAgICA9IHtcbiAgICAgIGltcF9vZl9zdHJpbmc6IHN0cmluZyA9PiBbKDAsIHN0cmluZyldLFxuICAgICAgaW1wX2FwcGVuZDogKHMxLCBzMikgPT4ge1xuICAgICAgICBzd2l0Y2ggKExpc3QucmV2KHMxKSwgczIpIHtcbiAgICAgICAgfCAoW10sIF8pID0+IHMyXG4gICAgICAgIHwgKF8sIFtdKSA9PiBzMVxuICAgICAgICB8IChcbiAgICAgICAgICAgIFsobGFzdF9pbmRlbnRfMSwgbGFzdF9zdHJpbmdfMSksIC4uLnJlc3QxXSxcbiAgICAgICAgICAgIFsoZmlyc3RfaW5kZW50XzIsIGZpcnN0X3N0cmluZ18yKSwgLi4ucmVzdDJdLFxuICAgICAgICAgICkgPT5cbiAgICAgICAgICBhc3NlcnQoZmlyc3RfaW5kZW50XzIgPT0gMCk7XG4gICAgICAgICAgTGlzdC5yZXYocmVzdDEpXG4gICAgICAgICAgQCBbKGxhc3RfaW5kZW50XzEsIGxhc3Rfc3RyaW5nXzEgKysgZmlyc3Rfc3RyaW5nXzIpLCAuLi5yZXN0Ml07XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgaW1wX25ld2xpbmU6IGluZGVudCA9PiBbKGluZGVudCwgXCJcIildLFxuICAgICAgaW1wX29mX2Fubm90OiAoXywgaW1wKSA9PiBpbXAsXG4gICAgICB0X29mX2ltcDogcyA9PiBzLFxuICAgIH07XG4gICAgbWtfb2ZfbGF5b3V0KHJlY29yZCwgbGF5b3V0KTtcbiAgfTtcbiIsImxldCBzcGxpdF9maXJzdCA9ICh4czogbGlzdCgnYSkpOiAoJ2EsIGxpc3QoJ2EpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gZmFpbHdpdGgoXCJlbXB0eSBsaXN0XCIpXG4gIHwgW2ZpcnN0LCAuLi50cmFpbGluZ10gPT4gKGZpcnN0LCB0cmFpbGluZylcbiAgfTtcblxubGV0IHNwbGl0X2xhc3Rfb3B0ID0gKHhzOiBsaXN0KCdhKSk6IG9wdGlvbigobGlzdCgnYSksICdhKSkgPT5cbiAgc3dpdGNoIChMaXN0LnJldih4cykpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW3ksIC4uLnlzXSA9PiBTb21lKChMaXN0LnJldih5cyksIHkpKVxuICB9O1xubGV0IHNwbGl0X2xhc3QgPSAoeHM6IGxpc3QoJ2EpKTogKGxpc3QoJ2EpLCAnYSkgPT5cbiAgc3dpdGNoIChzcGxpdF9sYXN0X29wdCh4cykpIHtcbiAgfCBOb25lID0+IGZhaWx3aXRoKFwiZW1wdHkgbGlzdFwiKVxuICB8IFNvbWUocikgPT4gclxuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSBib3ggPSB7XG4gIGhlaWdodDogaW50LFxuICB3aWR0aDogaW50LFxufTtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0KCdhbm5vdCkgPSB7XG4gIGxheW91dDogdCcoJ2Fubm90KSxcbiAgbWV0cmljczogbGlzdChib3gpLFxufVxuYW5kIHQnKCdhbm5vdCkgPVxuICB8IExpbmVicmVha1xuICB8IFRleHQoc3RyaW5nKVxuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBDYXQodCgnYW5ub3QpLCB0KCdhbm5vdCkpXG4gIHwgQW5ub3QoJ2Fubm90LCB0KCdhbm5vdCkpO1xuXG50eXBlIHdpdGhfb2Zmc2V0KCdhbm5vdCkgPSAoaW50LCB0KCdhbm5vdCkpO1xuXG5sZXQgaGVpZ2h0ID0gKG06IHQoXykpID0+XG4gIG0ubWV0cmljcyB8PiBMaXN0Lm1hcChib3ggPT4gYm94LmhlaWdodCkgfD4gTGlzdC5mb2xkX2xlZnQoKCspLCAwKTtcblxubGV0IHdpZHRoID0gKH5vZmZzZXQ9MCwgbTogdChfKSkgPT5cbiAgTGlzdC50bChtLm1ldHJpY3MpXG4gIHw+IExpc3QubWFwKGJveCA9PiBib3gud2lkdGgpXG4gIHw+IExpc3QuZm9sZF9sZWZ0KG1heCwgb2Zmc2V0ICsgTGlzdC5oZChtLm1ldHJpY3MpLndpZHRoKTtcblxubGV0IGZvbGQgPVxuICAgIChcbiAgICAgIH5saW5lYnJlYWs6ICdhY2MsXG4gICAgICB+dGV4dDogc3RyaW5nID0+ICdhY2MsXG4gICAgICB+YWxpZ246ICdhY2MgPT4gJ2FjYyxcbiAgICAgIH5jYXQ6ICgnYWNjLCAnYWNjKSA9PiAnYWNjLFxuICAgICAgfmFubm90OlxuICAgICAgICAgLy8gYWxsb3cgY2xpZW50IHRvIGNvbnRyb2wgcmVjdXJzaW9uIGJhc2VkIG9uIGFubm90YXRpb25cbiAgICAgICAgICh0KCdhbm5vdCkgPT4gJ2FjYywgJ2Fubm90LCB0KCdhbm5vdCkpID0+ICdhY2MsXG4gICAgICBtOiB0KCdhbm5vdCksXG4gICAgKVxuICAgIDogJ2FjYyA9PiB7XG4gIGxldCByZWMgZ28gPSAobTogdChfKSkgPT5cbiAgICBzd2l0Y2ggKG0ubGF5b3V0KSB7XG4gICAgfCBMaW5lYnJlYWsgPT4gbGluZWJyZWFrXG4gICAgfCBUZXh0KHMpID0+IHRleHQocylcbiAgICB8IEFsaWduKG0pID0+IGFsaWduKGdvKG0pKVxuICAgIHwgQ2F0KG0xLCBtMikgPT5cbiAgICAgIGxldCBhY2MxID0gZ28obTEpO1xuICAgICAgbGV0IGFjYzIgPSBnbyhtMik7XG4gICAgICBjYXQoYWNjMSwgYWNjMik7XG4gICAgfCBBbm5vdChhbm4sIG0pID0+IGFubm90KGdvLCBhbm4sIG0pXG4gICAgfTtcbiAgZ28obSk7XG59O1xuXG5sZXQgbmV4dF9wb3NpdGlvbiA9XG4gICAgKH5pbmRlbnQ6IGludCwge3JvdywgY29sfTogTWVhc3VyZWRQb3NpdGlvbi50LCBtOiB0KF8pKVxuICAgIDogTWVhc3VyZWRQb3NpdGlvbi50ID0+IHtcbiAgbGV0IHVwZGF0ZWRfcm93ID0gcm93ICsgaGVpZ2h0KG0pIC0gMTtcbiAgbGV0IHVwZGF0ZWRfY29sID0ge1xuICAgIGxldCAobGVhZGluZywgbGFzdCkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KG0ubWV0cmljcyk7XG4gICAgbGFzdC53aWR0aFxuICAgICsgKFxuICAgICAgc3dpdGNoIChsZWFkaW5nKSB7XG4gICAgICB8IFtdID0+IGNvbFxuICAgICAgfCBbXywgLi4uX10gPT4gaW5kZW50XG4gICAgICB9XG4gICAgKTtcbiAgfTtcbiAge3JvdzogdXBkYXRlZF9yb3csIGNvbDogdXBkYXRlZF9jb2x9O1xufTtcblxubGV0IHBvc19mb2xkID1cbiAgICAoXG4gICAgICB+bGluZWJyZWFrOiBNZWFzdXJlZFBvc2l0aW9uLnQgPT4gJ2FjYyxcbiAgICAgIH50ZXh0OiAoTWVhc3VyZWRQb3NpdGlvbi50LCBzdHJpbmcpID0+ICdhY2MsXG4gICAgICB+YWxpZ246IChNZWFzdXJlZFBvc2l0aW9uLnQsICdhY2MpID0+ICdhY2MsXG4gICAgICB+Y2F0OiAoTWVhc3VyZWRQb3NpdGlvbi50LCAnYWNjLCAnYWNjKSA9PiAnYWNjLFxuICAgICAgfmFubm90OlxuICAgICAgICAgLy8gbGV0IGNsaWVudCBjb250cm9sIHJlY3Vyc2lvbiBiYXNlZCBvbiBhbm5vdGF0aW9uXG4gICAgICAgICAoXG4gICAgICAgICAgIH5nbzogdCgnYW5ub3QpID0+ICdhY2MsXG4gICAgICAgICAgIH5pbmRlbnQ6IGludCxcbiAgICAgICAgICAgfnN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsXG4gICAgICAgICAgICdhbm5vdCxcbiAgICAgICAgICAgdCgnYW5ub3QpXG4gICAgICAgICApID0+XG4gICAgICAgICAnYWNjLFxuICAgICAgfmluZGVudD0wLFxuICAgICAgfnN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQ9TWVhc3VyZWRQb3NpdGlvbi56ZXJvLFxuICAgICAgbTogdCgnYW5ub3QpLFxuICAgIClcbiAgICA6ICdhY2MgPT4ge1xuICBsZXQgcmVjIGdvID0gKGluZGVudDogaW50LCBzdGFydDogTWVhc3VyZWRQb3NpdGlvbi50LCBtOiB0KF8pKSA9PlxuICAgIHN3aXRjaCAobS5sYXlvdXQpIHtcbiAgICB8IExpbmVicmVhayA9PiBsaW5lYnJlYWsoc3RhcnQpXG4gICAgfCBUZXh0KHMpID0+IHRleHQoc3RhcnQsIHMpXG4gICAgfCBBbGlnbihtKSA9PiBhbGlnbihzdGFydCwgZ28oc3RhcnQuY29sLCBzdGFydCwgbSkpXG4gICAgfCBDYXQobTEsIG0yKSA9PlxuICAgICAgbGV0IG1pZCA9IG5leHRfcG9zaXRpb24ofmluZGVudCwgc3RhcnQsIG0xKTtcbiAgICAgIGNhdChzdGFydCwgZ28oaW5kZW50LCBzdGFydCwgbTEpLCBnbyhpbmRlbnQsIG1pZCwgbTIpKTtcbiAgICB8IEFubm90KGFubiwgbSkgPT4gYW5ub3QofmdvPWdvKGluZGVudCwgc3RhcnQpLCB+aW5kZW50LCB+c3RhcnQsIGFubiwgbSlcbiAgICB9O1xuICBnbyhpbmRlbnQsIHN0YXJ0LCBtKTtcbn07XG5cbm1vZHVsZSBNYWtlID0gKE1lbW9UYmw6IE1lbW9UYmwuUykgPT4ge1xuICBsZXQgdGFibGU6IE1lbW9UYmwudChMYXlvdXQudCh1bml0KSwgdCh1bml0KSkgPSBNZW1vVGJsLm1rKCk7XG4gIGxldCByZWMgbWsgPSAobDogTGF5b3V0LnQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgc3dpdGNoIChNZW1vVGJsLmdldCh0YWJsZSwgT2JqLm1hZ2ljKGwpKSkge1xuICAgIHwgU29tZShtKSA9PiBPYmoubWFnaWMobSlcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCBtID1cbiAgICAgICAgc3dpdGNoIChsKSB7XG4gICAgICAgIHwgTGluZWJyZWFrID0+XG4gICAgICAgICAgbGV0IGJveCA9IHtoZWlnaHQ6IDEsIHdpZHRoOiAwfTtcbiAgICAgICAgICB7bWV0cmljczogW2JveCwgYm94XSwgbGF5b3V0OiBMaW5lYnJlYWt9O1xuICAgICAgICB8IFRleHQocykgPT4ge1xuICAgICAgICAgICAgbWV0cmljczogW3toZWlnaHQ6IDEsIHdpZHRoOiBVbmljb2RlLmxlbmd0aChzKX1dLFxuICAgICAgICAgICAgbGF5b3V0OiBUZXh0KHMpLFxuICAgICAgICAgIH1cbiAgICAgICAgfCBBbGlnbihsKSA9PlxuICAgICAgICAgIGxldCBtID0gbWsobCk7XG4gICAgICAgICAgbGV0IGJvdW5kaW5nX2JveCA9XG4gICAgICAgICAgICBtLm1ldHJpY3NcbiAgICAgICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgICAgICAoe2hlaWdodDogYmgsIHdpZHRoOiBid30sIHtoZWlnaHQsIHdpZHRofSkgPT5cbiAgICAgICAgICAgICAgICAgICB7aGVpZ2h0OiBiaCArIGhlaWdodCwgd2lkdGg6IG1heChidywgd2lkdGgpfSxcbiAgICAgICAgICAgICAgICAge2hlaWdodDogMCwgd2lkdGg6IDB9LFxuICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB7bWV0cmljczogW2JvdW5kaW5nX2JveF0sIGxheW91dDogQWxpZ24obSl9O1xuICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgbGV0IG0xID0gbWsobDEpO1xuICAgICAgICAgIGxldCBtMiA9IG1rKGwyKTtcbiAgICAgICAgICBsZXQgKGxlYWRpbmcsIGxhc3QpID0gTGlzdFV0aWwuc3BsaXRfbGFzdChtMS5tZXRyaWNzKTtcbiAgICAgICAgICBsZXQgKGZpcnN0LCB0cmFpbGluZykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdChtMi5tZXRyaWNzKTtcbiAgICAgICAgICBsZXQgbWlkX2JveCA9IHtcbiAgICAgICAgICAgIGhlaWdodDogbWF4KGxhc3QuaGVpZ2h0LCBmaXJzdC5oZWlnaHQpLFxuICAgICAgICAgICAgd2lkdGg6IGxhc3Qud2lkdGggKyBmaXJzdC53aWR0aCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHttZXRyaWNzOiBsZWFkaW5nIEAgW21pZF9ib3gsIC4uLnRyYWlsaW5nXSwgbGF5b3V0OiBDYXQobTEsIG0yKX07XG4gICAgICAgIHwgQW5ub3QoYW5ub3QsIGwpID0+XG4gICAgICAgICAgbGV0IG0gPSBtayhsKTtcbiAgICAgICAgICB7Li4ubSwgbGF5b3V0OiBBbm5vdChhbm5vdCwgbSl9O1xuICAgICAgICB9O1xuICAgICAgTWVtb1RibC5zZXQodGFibGUsIE9iai5tYWdpYyhsKSwgT2JqLm1hZ2ljKG0pKTtcbiAgICAgIG07XG4gICAgfTtcbiAgfTtcbn07XG4iLCJ0eXBlIHQgPSB7XG4gIC8vIFN1bSBvZiB0aGUgc3F1YXJlIG9mIGhvdyBtdWNoIGVhY2ggbGluZSBleHRlbmRzIGJleW9uZCBtYXggd2lkdGguICBVc3VhbGx5IHplcm8uXG4gIG92ZXJmbG93X2Nvc3Q6IGludCxcbiAgLy8gSGVpZ2h0IG1pbnVzIG9uZS4gIEEuay5hLiBudW1iZXIgb2YgbGluZSBicmVha3MuXG4gIGhlaWdodF9jb3N0OiBpbnQsXG59O1xuXG5sZXQgbWsgPSAofm92ZXJmbG93X2Nvc3Q6IGludCwgfmhlaWdodF9jb3N0OiBpbnQpOiB0ID0+IHtcbiAgb3ZlcmZsb3dfY29zdCxcbiAgaGVpZ2h0X2Nvc3QsXG59O1xuXG5sZXQgbWtfaGVpZ2h0ID0gKGhlaWdodF9jb3N0OiBpbnQpOiB0ID0+IG1rKH5vdmVyZmxvd19jb3N0PTAsIH5oZWlnaHRfY29zdCk7XG5cbmxldCBta19vdmVyZmxvdyA9IChvdmVyZmxvd19jb3N0OiBpbnQpOiB0ID0+XG4gIG1rKH5vdmVyZmxvd19jb3N0LCB+aGVpZ2h0X2Nvc3Q9MCk7XG5cbmxldCB6ZXJvOiB0ID0ge292ZXJmbG93X2Nvc3Q6IDAsIGhlaWdodF9jb3N0OiAwfTtcblxubGV0IGluZjogdCA9IHtvdmVyZmxvd19jb3N0OiBtYXhfaW50LCBoZWlnaHRfY29zdDogbWF4X2ludH07XG5cbmxldCBhZGQgPSAoYzE6IHQsIGMyOiB0KTogdCA9PiB7XG4gIG92ZXJmbG93X2Nvc3Q6IGMxLm92ZXJmbG93X2Nvc3QgKyBjMi5vdmVyZmxvd19jb3N0LFxuICBoZWlnaHRfY29zdDogYzEuaGVpZ2h0X2Nvc3QgKyBjMi5oZWlnaHRfY29zdCxcbn07XG5cbmxldCBlcSA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGMxLm92ZXJmbG93X2Nvc3QgPT09IGMyLm92ZXJmbG93X2Nvc3QgJiYgYzEuaGVpZ2h0X2Nvc3QgPT09IGMyLmhlaWdodF9jb3N0O1xuXG5sZXQgbHQgPSAoYzE6IHQsIGMyOiB0KTogYm9vbCA9PlxuICBpZiAoYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCkge1xuICAgIGMxLmhlaWdodF9jb3N0IDwgYzIuaGVpZ2h0X2Nvc3Q7XG4gIH0gZWxzZSB7XG4gICAgYzEub3ZlcmZsb3dfY29zdCA8IGMyLm92ZXJmbG93X2Nvc3Q7XG4gIH07XG5cbmxldCBsZXEgPSAoYzE6IHQsIGMyOiB0KTogYm9vbCA9PlxuICBpZiAoYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCkge1xuICAgIGMxLmhlaWdodF9jb3N0IDw9IGMyLmhlaWdodF9jb3N0O1xuICB9IGVsc2Uge1xuICAgIGMxLm92ZXJmbG93X2Nvc3QgPD0gYzIub3ZlcmZsb3dfY29zdDtcbiAgfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbm1vZHVsZSBXaWR0aFBvc0tleSA9IHtcbiAgdHlwZSB0ID0gKGludCwgaW50KTtcbiAgbGV0IGhhc2ggPSAoKHdpZHRoLCBwb3MpKSA9PiAyNTYgKiAyNTYgKiB3aWR0aCArIHBvcztcbiAgbGV0IGVxdWFsID0gKCh3MSwgcDEpLCAodzIsIHAyKSkgPT4gdzEgPT0gdzIgJiYgcDEgPT0gcDI7XG59O1xuXG5tb2R1bGUgTSA9IEhhc2h0YmwuTWFrZShXaWR0aFBvc0tleSk7XG5cbi8vIE5PVEU6IHBvcyBpcyByZWxhdGl2ZSB0byBtb3N0IHJlY2VudCBgQWxpZ25gXG50eXBlIG0nKCdhKSA9IFBvc01hcC50KChDb3N0LnQsICdhKSk7XG50eXBlIG0oJ2EpID0gKH53aWR0aDogaW50LCB+cG9zOiBpbnQpID0+IG0nKCdhKTtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0KCdhbm5vdCkgPSB7XG4gIG1lbTogW0BzZXhwLm9wYXF1ZV0gTS50KG0nKExheW91dC50KCdhbm5vdCkpKSxcbiAgZG9jOiB0JygnYW5ub3QpLFxufVxuW0BkZXJpdmluZyBzZXhwXVxuYW5kIHQnKCdhbm5vdCkgPVxuICB8IFRleHQoc3RyaW5nKSAvLyBUZXh0KFwiXCIpIGlzIGlkZW50aXR5IGZvciBgQ2F0YFxuICB8IENhdCh0KCdhbm5vdCksIHQoJ2Fubm90KSkgLy8gYXNzb2NpYXRpdmVcbiAgfCBMaW5lYnJlYWtcbiAgfCBBbGlnbih0KCdhbm5vdCkpXG4gIHwgQW5ub3QoJ2Fubm90LCB0KCdhbm5vdCkpIC8vIEFubm90YXRpb25zXG4gIHwgRmFpbCAvLyBpZGVudGl0eSBmb3IgYENob2ljZWBcbiAgfCBDaG9pY2UodCgnYW5ub3QpLCB0KCdhbm5vdCkpO1xuXG5sZXQgdF9vZl90JyA9ICh0JzogdCcoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7bWVtOiBNLmNyZWF0ZSgwKSwgZG9jOiB0J307XG5cbmxldCB0ZXh0ID0gKHM6IHN0cmluZykgPT4gdF9vZl90JyhUZXh0KHMpKTtcbmxldCBsaW5lYnJlYWsgPSAoKSA9PiB0X29mX3QnKExpbmVicmVhayk7XG5sZXQgYWxpZ24gPSBkb2MgPT4gdF9vZl90JyhBbGlnbihkb2MpKTtcbmxldCBhbm5vdCA9IChhbm5vdCwgZG9jKSA9PiB0X29mX3QnKEFubm90KGFubm90LCBkb2MpKTtcbmxldCBmYWlsID0gKCkgPT4gdF9vZl90JyhGYWlsKTtcblxubGV0IGVtcHR5ID0gKCkgPT4gdGV4dChcIlwiKTtcbmxldCBzcGFjZSA9ICgpID0+IHRleHQoVW5pY29kZS5uYnNwKTsgLy8gVE9ETzogcGFyYW0gdG8gaHNlcFxuXG5sZXQgaW5kZW50ID0gKCkgPT4gdGV4dChVbmljb2RlLm5ic3AgKysgVW5pY29kZS5uYnNwKTtcbmxldCBpbmRlbnRfYW5kX2FsaWduID0gZG9jID0+IHRfb2ZfdCcoQ2F0KGluZGVudCgpLCBhbGlnbihkb2MpKSk7XG5cbmxldCBoY2F0ID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2F0KHgsIHkpKTtcbmxldCBoY2F0czogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGVtcHR5KClcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdChoY2F0LCBkb2MsIGRvY3MpO1xuXG5sZXQgaHNlcCA9ICh4LCB5KSA9PiB0X29mX3QnKENhdCh4LCB0X29mX3QnKENhdChzcGFjZSgpLCB5KSkpKTtcbmxldCBoc2VwczogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGVtcHR5KClcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdChoc2VwLCBkb2MsIGRvY3MpO1xuXG5sZXQgdnNlcCA9ICh4LCB5KSA9PiB0X29mX3QnKENhdCh4LCB0X29mX3QnKENhdChsaW5lYnJlYWsoKSwgeSkpKSk7XG5sZXQgdnNlcHM6IGxpc3QodCgnYW5ub3QpKSA9PiB0KCdhbm5vdCkgPVxuICBmdW5cbiAgfCBbXSA9PiBmYWlsd2l0aChfX0xPQ19fICsrIFwiOiB2c2VwcyByZXF1aXJlcyBhIG5vbi1lbXB0eSBsaXN0XCIpXG4gIHwgW2RvY10gPT4gZG9jXG4gIHwgW2RvYywgLi4uZG9jc10gPT4gTGlzdC5mb2xkX2xlZnQodnNlcCwgZG9jLCBkb2NzKTtcblxubGV0IGNob2ljZSA9ICh4LCB5KSA9PiB0X29mX3QnKENob2ljZSh4LCB5KSk7XG5sZXQgY2hvaWNlczogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGZhaWwoKVxuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KGNob2ljZSwgZG9jLCBkb2NzKTtcblxubGV0IG1hcF90JzogJ2EgJ2IuICh0JygnYSkgPT4gdCcoJ2IpLCB0KCdhKSkgPT4gdCgnYikgPVxuICAoZiwgZCkgPT4gdF9vZl90JyhmKGQuZG9jKSk7XG5cbmxldCByZWMgbWFwX2Fubm90OiAnYSAnYi4gKCdhID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICAoZiwgZCkgPT5cbiAgICBkXG4gICAgfD4gbWFwX3QnKFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IChUZXh0KF8pIHwgTGluZWJyZWFrIHwgRmFpbCkgYXMgZCcgPT4gZCdcbiAgICAgICAgIHwgQW5ub3QoYW5ub3QsIGQpID0+IEFubm90KGYoYW5ub3QpLCBtYXBfYW5ub3QoZiwgZCkpXG4gICAgICAgICB8IEFsaWduKGQpID0+IEFsaWduKG1hcF9hbm5vdChmLCBkKSlcbiAgICAgICAgIHwgQ2F0KGQxLCBkMikgPT4gQ2F0KG1hcF9hbm5vdChmLCBkMSksIG1hcF9hbm5vdChmLCBkMikpXG4gICAgICAgICB8IENob2ljZShkMSwgZDIpID0+IENob2ljZShtYXBfYW5ub3QoZiwgZDEpLCBtYXBfYW5ub3QoZiwgZDIpKSxcbiAgICAgICApO1xuIiwiLy8gVE9ETzogY29tcHV0ZSBhY3R1YWwgbGF5b3V0IHNpemUgYW5kIHVzZSBpbnN0ZWFkIG9mIHRfb2ZfbGF5b3V0XG5sZXQgcmVjIGFsbDogJ2Fubm90LiBEb2MudCgnYW5ub3QpID0+IGxpc3QoTGF5b3V0LnQoJ2Fubm90KSkgPSB7XG4gIGRvYyA9PiB7XG4gICAgc3dpdGNoIChkb2MuZG9jKSB7XG4gICAgfCBUZXh0KHN0cmluZykgPT4gW0xheW91dC5UZXh0KHN0cmluZyldXG4gICAgfCBDYXQoZDEsIGQyKSA9PlxuICAgICAgbGV0IGxzMSA9IGFsbChkMSk7XG4gICAgICBsZXQgbHMyID0gYWxsKGQyKTtcbiAgICAgIExpc3QuY29uY2F0KFxuICAgICAgICBMaXN0Lm1hcChsMSA9PiBMaXN0Lm1hcChsMiA9PiBMYXlvdXQuQ2F0KGwxLCBsMiksIGxzMiksIGxzMSksXG4gICAgICApO1xuICAgIHwgTGluZWJyZWFrID0+IFtMYXlvdXQuTGluZWJyZWFrXVxuICAgIHwgQWxpZ24oZCkgPT4gTGlzdC5tYXAobCA9PiBMYXlvdXQuQWxpZ24obCksIGFsbChkKSlcbiAgICB8IEFubm90KGFubm90LCBkKSA9PiBMaXN0Lm1hcChsID0+IExheW91dC5Bbm5vdChhbm5vdCwgbCksIGFsbChkKSlcbiAgICB8IEZhaWwgPT4gW11cbiAgICB8IENob2ljZShkMSwgZDIpID0+IGFsbChkMSkgQCBhbGwoZDIpXG4gICAgfTtcbiAgfTtcbn07XG5cbi8vIE5vdGU6IFRoaXMgdW5pb24gaXMgbGVmdCBiaWFzZWRcbmxldCBtJ191bmlvbjogJ2EuIChEb2MubScoJ2EpLCBEb2MubScoJ2EpKSA9PiBEb2MubScoJ2EpID1cbiAgKHAxLCBwMikgPT4ge1xuICAgIGxldCBjb3N0X3VuaW9uID0gKChjb3N0MTogQ29zdC50LCBfKSBhcyB0MSwgKGNvc3QyOiBDb3N0LnQsIF8pIGFzIHQyKSA9PlxuICAgICAgaWYgKENvc3QubGVxKGNvc3QxLCBjb3N0MikpIHtcbiAgICAgICAgdDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0MjtcbiAgICAgIH07XG4gICAgUG9zTWFwLnVuaW9uKGNvc3RfdW5pb24sIHAxLCBwMik7XG4gIH07XG5cbmxldCByZWMgbGF5b3V0X29mX2RvYycgPSAoZG9jOiBEb2MudCh1bml0KSk6IERvYy5tKExheW91dC50KHVuaXQpKSA9PiB7XG4gIGxldCBnID0gKH53aWR0aDogaW50LCB+cG9zOiBpbnQpOiBEb2MubScoTGF5b3V0LnQodW5pdCkpID0+IHtcbiAgICAvLyBUT0RPOiBsaWZ0IHRoZSBzd2l0Y2goZG9jLmRvYykgb3V0c2lkZSB0aGUgbGFtYmRhXG4gICAgc3dpdGNoIChkb2MuZG9jKSB7XG4gICAgfCBUZXh0KHN0cmluZykgPT5cbiAgICAgIC8vIFRPRE86IGNhY2hlIHRleHQgbGVuZ3RoIGluIFRleHQ/XG4gICAgICBsZXQgcG9zJyA9IHBvcyArIFN0cmluZy5sZW5ndGgoc3RyaW5nKTsgLy9Vbmljb2RlLmxlbmd0aChzdHJpbmcpO1xuICAgICAgbGV0IGNvc3QgPVxuICAgICAgICBpZiAocG9zJyA8PSB3aWR0aCkge1xuICAgICAgICAgIENvc3QuemVybztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgb3ZlcmZsb3cgPSBwb3MnIC0gd2lkdGg7XG4gICAgICAgICAgLy8gb3ZlcmZsb3dfY29zdCA9IHN1bSBpIGZyb20gMSB0byBvdmVyZmxvd1xuICAgICAgICAgIGxldCBvdmVyZmxvd19jb3N0ID0gb3ZlcmZsb3cgKiAob3ZlcmZsb3cgKyAxKSAvIDI7XG4gICAgICAgICAgQ29zdC5ta19vdmVyZmxvdyhvdmVyZmxvd19jb3N0KTtcbiAgICAgICAgfTtcbiAgICAgIFBvc01hcC5zaW5nbGV0b24ocG9zJywgKGNvc3QsIExheW91dC5UZXh0KHN0cmluZykpKTtcbiAgICB8IENhdChkMSwgZDIpID0+XG4gICAgICBsZXQgbDEgPSBsYXlvdXRfb2ZfZG9jJyhkMSwgfndpZHRoLCB+cG9zKTtcbiAgICAgIFBvc01hcC5mb2xkX2xlZnQoXG4gICAgICAgIChwb3MsIHosIChjb3N0MSwgbGF5b3V0MSkpID0+IHtcbiAgICAgICAgICBsZXQgbDIgPSBsYXlvdXRfb2ZfZG9jJyhkMiwgfndpZHRoLCB+cG9zKTtcbiAgICAgICAgICBsZXQgbGF5b3V0cyA9XG4gICAgICAgICAgICBQb3NNYXAubWFwKFxuICAgICAgICAgICAgICAoKGNvc3QyLCBsYXlvdXQyKSkgPT5cbiAgICAgICAgICAgICAgICAoQ29zdC5hZGQoY29zdDEsIGNvc3QyKSwgTGF5b3V0LkNhdChsYXlvdXQxLCBsYXlvdXQyKSksXG4gICAgICAgICAgICAgIGwyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBtJ191bmlvbih6LCBsYXlvdXRzKTtcbiAgICAgICAgfSxcbiAgICAgICAgUG9zTWFwLmVtcHR5LFxuICAgICAgICBsMSxcbiAgICAgICk7XG4gICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgIFBvc01hcC5zaW5nbGV0b24oMCwgKENvc3QubWtfaGVpZ2h0KDEpLCBMYXlvdXQuTGluZWJyZWFrKSlcbiAgICB8IEFsaWduKGQpID0+XG4gICAgICBsZXQgbGF5b3V0ID0gbGF5b3V0X29mX2RvYycoZCwgfndpZHRoPXdpZHRoIC0gcG9zLCB+cG9zPTApO1xuICAgICAgUG9zTWFwLm1hcGsoXG4gICAgICAgIChwLCAoYywgbCkpID0+IChwICsgcG9zLCAoYywgTGF5b3V0LkFsaWduKGwpKSksXG4gICAgICAgIGxheW91dCxcbiAgICAgICk7XG4gICAgfCBBbm5vdChhbm5vdCwgZCkgPT5cbiAgICAgIGxldCBsYXlvdXQgPSBsYXlvdXRfb2ZfZG9jJyhkLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgUG9zTWFwLm1hcCgoKGMsIGwpKSA9PiAoYywgTGF5b3V0LkFubm90KGFubm90LCBsKSksIGxheW91dCk7XG4gICAgfCBGYWlsID0+IFBvc01hcC5lbXB0eVxuICAgIHwgQ2hvaWNlKGQxLCBkMikgPT5cbiAgICAgIGxldCBsMSA9IGxheW91dF9vZl9kb2MnKGQxLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgbGV0IGwyID0gbGF5b3V0X29mX2RvYycoZDIsIH53aWR0aCwgfnBvcyk7XG4gICAgICBtJ191bmlvbihsMSwgbDIpO1xuICAgIH07XG4gIH07XG4gIGxldCBoID0gKH53aWR0aDogaW50LCB+cG9zOiBpbnQpOiBEb2MubScoTGF5b3V0LnQodW5pdCkpID0+IHtcbiAgICBsZXQga2V5ID0gKHdpZHRoLCBwb3MpO1xuICAgIHN3aXRjaCAoRG9jLk0uZmluZF9vcHQoZG9jLm1lbSwga2V5KSkge1xuICAgIHwgU29tZSh2YWx1ZSkgPT4gdmFsdWVcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCB2YWx1ZSA9IGcofndpZHRoLCB+cG9zKTtcbiAgICAgIERvYy5NLmFkZChkb2MubWVtLCBrZXksIHZhbHVlKTtcbiAgICAgIHZhbHVlO1xuICAgIH07XG4gIH07XG4gIGg7XG59O1xuXG5sZXQgbGF5b3V0X29mX2RvYyA9XG4gICAgKGRvYzogRG9jLnQoJ2Fubm90KSwgfndpZHRoOiBpbnQsIH5wb3M6IGludCk6IG9wdGlvbihMYXlvdXQudCgnYW5ub3QpKSA9PiB7XG4gIGxldCByZWMgbWluaW11bSA9XG4gICAgICAgICAgKChwb3MsIChjb3N0LCB0KSk6IChpbnQsIChDb3N0LnQsIG9wdGlvbignYSkpKSlcbiAgICAgICAgICA6IChsaXN0KChpbnQsIChDb3N0LnQsICdhKSkpID0+IG9wdGlvbignYSkpID0+IHtcbiAgICBmdW5cbiAgICB8IFtdID0+IHRcbiAgICB8IFsoeF9wb3MsICh4X2Nvc3QsIHgpKSwgLi4ucmVzdF0gPT5cbiAgICAgIC8vIFByZWZlciBsb3dlc3QgY29zdCwgb3IgaWYgc2FtZSBjb3N0LCBwcmVmZXIgZW5kaW5nIGF0IGFuIGVhcmxpZXIgY29sdW1uXG4gICAgICAvLyAoQ29sdW1ucyBhcmUgdW5pcXVlIGJ5IGNvbnN0cnVjdGlvbiBvZiBQb3NNYXAuKVxuICAgICAgaWYgKENvc3QubHQoeF9jb3N0LCBjb3N0KSB8fCBDb3N0LmVxKHhfY29zdCwgY29zdCkgJiYgeF9wb3MgPCBwb3MpIHtcbiAgICAgICAgbWluaW11bSgoeF9wb3MsICh4X2Nvc3QsIFNvbWUoeCkpKSwgcmVzdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtaW5pbXVtKChwb3MsIChjb3N0LCB0KSksIHJlc3QpO1xuICAgICAgfTtcbiAgfTtcbiAgLy8gVE9ETzogdXNlIG9wdGlvbnMgaW5zdGVhZCBvZiBtYXhfaW50XG4gIC8vIGxldCBzdGFydF90aW1lID0gU3lzLnRpbWUoKTtcbiAgbGV0IGwgPVxuICAgIG1pbmltdW0oXG4gICAgICAobWF4X2ludCwgKENvc3QuaW5mLCBOb25lKSksXG4gICAgICBPYmoubWFnaWMobGF5b3V0X29mX2RvYycoT2JqLm1hZ2ljKGRvYyksIH53aWR0aCwgfnBvcykpLFxuICAgICk7XG4gIC8vIGxldCBlbmRfdGltZSA9IFN5cy50aW1lKCk7XG4gIC8qXG4gICBQcmludGYucHJpbnRmKFxuICAgICBcImxheW91dF9vZl9kb2M6ICVkIFxcdCVmXFxuXCIsXG4gICAgIC0xLCAvL2ZzdChMYXp5LmZvcmNlKG1lbW9fdGFibGUpKSMjLnNpemUsXG4gICAgIC8vTWVtb2l6ZS5XZWFrUG9seS5UYWJsZS5sZW5ndGgoZnN0KExhenkuZm9yY2UobWVtb190YWJsZSkpKSxcbiAgICAgMTAwMC4wICouIChlbmRfdGltZSAtLiBzdGFydF90aW1lKSxcbiAgICk7XG4gICAqL1xuICBsO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCgnYW5ub3QpID1cbiAgfCBUZXh0KHN0cmluZylcbiAgfCBIQm94KGxpc3QodCgnYW5ub3QpKSlcbiAgfCBWQm94KGxpc3QodCgnYW5ub3QpKSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7XG5cbm1vZHVsZSBNYWtlID0gKE1lbW9UYmw6IE1lbW9UYmwuUykgPT4ge1xuICBsZXQgaGVpZ2h0X3RibDogTWVtb1RibC50KHQodW5pdCksIGludCkgPSBNZW1vVGJsLm1rKCk7XG4gIGxldCByZWMgaGVpZ2h0ID0gKGJveDogdCgnYW5ub3QpKSA9PlxuICAgIHN3aXRjaCAoTWVtb1RibC5nZXQoaGVpZ2h0X3RibCwgT2JqLm1hZ2ljKGJveCkpKSB7XG4gICAgfCBTb21lKGgpID0+IGhcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCBoID1cbiAgICAgICAgc3dpdGNoIChib3gpIHtcbiAgICAgICAgfCBUZXh0KF8pID0+IDFcbiAgICAgICAgfCBBbm5vdChfLCBiKSA9PiBoZWlnaHQoYilcbiAgICAgICAgfCBIQm94KGJzKSA9PiBicyB8PiBMaXN0Lm1hcChoZWlnaHQpIHw+IExpc3QuZm9sZF9sZWZ0KG1heCwgMSkgLy8gTm90ZTogMSBpcyBIQm94KFtdKSBoZWlnaHRcbiAgICAgICAgfCBWQm94KGJzKSA9PiBicyB8PiBMaXN0Lm1hcChoZWlnaHQpIHw+IExpc3QuZm9sZF9sZWZ0KCgrKSwgMClcbiAgICAgICAgfTtcbiAgICAgIE1lbW9UYmwuc2V0KGhlaWdodF90YmwsIE9iai5tYWdpYyhib3gpLCBoKTtcbiAgICAgIGg7XG4gICAgfTtcblxuICAvLyBOb3RlOiBhbm5vdHMgYXJlIGluc2lkZS1vdXQgKGkuZS4gTGlzdC5oZChhbm5vdHMpIGlzIHRoZSBpbm5lci1tb3N0IGFubm90KVxuICBsZXQgcmVjIGFubm90ID0gKGFubm90czogbGlzdCgnYW5ub3QpLCBib3g6IHQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgc3dpdGNoIChhbm5vdHMpIHtcbiAgICB8IFtdID0+IGJveFxuICAgIHwgW2FubiwgLi4uYW5uc10gPT4gYW5ub3QoYW5ucywgQW5ub3QoYW5uLCBib3gpKVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyBhcHBlbmRfYm94ID1cbiAgICAgICAgICAofmFubm90czogbGlzdCgnYW5ub3QpPVtdLCBib3gxOiB0KCdhbm5vdCksIGJveDI6IHQoJ2Fubm90KSlcbiAgICAgICAgICA6IHQoJ2Fubm90KSA9PlxuICAgIGlmIChoZWlnaHQoYm94MSkgPD0gMSkge1xuICAgICAgSEJveChbYW5ub3QoYW5ub3RzLCBib3gxKSwgYm94Ml0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVjIGFwcGVuZF9sYXN0ID0gKGJzMTogbGlzdCh0KCdhbm5vdCkpKTogbGlzdCh0KCdhbm5vdCkpID0+IHtcbiAgICAgICAgc3dpdGNoIChiczEpIHtcbiAgICAgICAgfCBbXSA9PiBmYWlsd2l0aChcImltcG9zc2libGUgZHVlIHRvIGBib3hfaGVpZ2h0YCBndWFyZFwiKVxuICAgICAgICB8IFtiMV0gPT4gW2FwcGVuZF9ib3gofmFubm90cywgYjEsIGJveDIpXVxuICAgICAgICB8IFtiMSwgLi4uYnMxXSA9PiBbYW5ub3QoYW5ub3RzLCBiMSksIC4uLmFwcGVuZF9sYXN0KGJzMSldXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgc3dpdGNoIChib3gxKSB7XG4gICAgICB8IFRleHQoXykgPT4gZmFpbHdpdGgoXCJpbXBvc3NpYmxlIGR1ZSB0byBgYm94X2hlaWdodGAgZ3VhcmRcIilcbiAgICAgIHwgSEJveChiczEpID0+IEhCb3goYXBwZW5kX2xhc3QoYnMxKSlcbiAgICAgIHwgVkJveChiczEpID0+IFZCb3goYXBwZW5kX2xhc3QoYnMxKSlcbiAgICAgIHwgQW5ub3QoYW5ub3QsIGIpID0+IGFwcGVuZF9ib3gofmFubm90cz1bYW5ub3QsIC4uLmFubm90c10sIGIsIGJveDIpXG4gICAgICB9O1xuICAgIH07XG5cbiAgbGV0IGFwcGVuZF9oYm94ID0gKGJveGVzMTogbGlzdCh0KCdhbm5vdCkpLCBib3hlczI6IGxpc3QodCgnYW5ub3QpKSkgPT4ge1xuICAgIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQoYm94ZXMxKSkge1xuICAgIHwgTm9uZSA9PiBib3hlczJcbiAgICB8IFNvbWUoKGxlYWRpbmcsIGxhc3QpKSA9PiBsZWFkaW5nIEAgW2FwcGVuZF9ib3gobGFzdCwgSEJveChib3hlczIpKV1cbiAgICB9O1xuICB9O1xuXG4gIGxldCB0YWJsZTogTWVtb1RibC50KExheW91dC50KHVuaXQpLCB0KHVuaXQpKSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IG1rID0gKGw6IExheW91dC50KCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge1xuICAgIGxldCBtayA9IChib3hlczogbGlzdChsaXN0KHQoXykpKSkgPT5cbiAgICAgIFZCb3goTGlzdC5tYXAocm93ID0+IEhCb3gocm93KSwgYm94ZXMpKTtcbiAgICBsZXQgcmVjIGdvID0gKGw6IExheW91dC50KF8pKSA9PiB7XG4gICAgICBzd2l0Y2ggKE1lbW9UYmwuZ2V0KHRhYmxlLCBPYmoubWFnaWMobCkpKSB7XG4gICAgICB8IFNvbWUoYm94KSA9PiBPYmoubWFnaWMoYm94KVxuICAgICAgfCBOb25lID0+XG4gICAgICAgIGxldCBib3ggPVxuICAgICAgICAgIHN3aXRjaCAobCkge1xuICAgICAgICAgIHwgTGluZWJyZWFrID0+IFtbXSwgW11dXG4gICAgICAgICAgfCBUZXh0KHMpID0+IFtbVGV4dChzKV1dXG4gICAgICAgICAgfCBBbGlnbihsKSA9PiBbW21rKGdvKGwpKV1dXG4gICAgICAgICAgfCBBbm5vdChhbm4sIGwpID0+XG4gICAgICAgICAgICBnbyhsKSB8PiBMaXN0Lm1hcChyb3cgPT4gW0Fubm90KGFubiwgSEJveChyb3cpKV0pXG4gICAgICAgICAgfCBDYXQobDEsIGwyKSA9PlxuICAgICAgICAgICAgbGV0IChsZWFkaW5nLCBsYXN0KSA9IExpc3RVdGlsLnNwbGl0X2xhc3QoZ28obDEpKTtcbiAgICAgICAgICAgIGxldCAoZmlyc3QsIHRyYWlsaW5nKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGdvKGwyKSk7XG4gICAgICAgICAgICBsZWFkaW5nIEAgW2FwcGVuZF9oYm94KGxhc3QsIGZpcnN0KSwgLi4udHJhaWxpbmddO1xuICAgICAgICAgIH07XG4gICAgICAgIE1lbW9UYmwuc2V0KHRhYmxlLCBPYmoubWFnaWMobCksIE9iai5tYWdpYyhib3gpKTtcbiAgICAgICAgYm94O1xuICAgICAgfTtcbiAgICB9O1xuICAgIG1rKGdvKGwpKTtcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYuUHJpbWl0aXZlcztcblxuLypcbiAgVGhlc2UgYXJlIHRoZSBzeW50YXggdGVzdCBmdW5jdGlvbnMgdXNlZCBmb3IgdGhlIHN5bnRheCB2YWxpZGF0aW9uXG4gIHNlY3Rpb24gb2YgdGhlIGV4ZXJjaXNlcy4gVGhlIHN5bnRheCB0ZXN0cyBhcmUgZGVzaWduZWQgdG9cbiAgZW5zdXJlIHRoYXQgdGhlIHVzZXIgaW1wbGVtZW50YXRpb24gc2F0aXNmaWVzIGNlcnRhaW4gc3ludGF4IHByb3BlcnRpZXNcbiAgZS5nLiB0YWlsIHJlY3Vyc2l2ZSBmdW5jdGlvbiBvciB2YXJpYWJsZSB1c2FnZS5cbiAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN5bnRheF9yZXN1bHQgPSB7XG4gIHJlc3VsdHM6IGxpc3QoYm9vbCksXG4gIHBlcmNlbnRhZ2U6IGZsb2F0LFxufTtcblxubGV0IHJlYyBmaW5kX3Zhcl91cGF0ID0gKG5hbWU6IHN0cmluZywgdXBhdDogVGVybS5VUGF0LnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1cGF0LnRlcm0pIHtcbiAgfCBWYXIoeCkgPT4geCA9PSBuYW1lXG4gIHwgRW1wdHlIb2xlXG4gIHwgV2lsZFxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBCb29sKF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gZmFsc2VcbiAgfCBDb25zKHVwMSwgdXAyKSA9PiBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMSkgfHwgZmluZF92YXJfdXBhdChuYW1lLCB1cDIpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdXApID0+IHthY2MgfHwgZmluZF92YXJfdXBhdChuYW1lLCB1cCl9LCBmYWxzZSwgbClcbiAgfCBQYXJlbnModXApID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXApXG4gIHwgQXAodXAxLCB1cDIpID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAxKSB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMilcbiAgfCBUeXBlQW5uKHVwLCBfKSA9PiBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwKVxuICB9O1xufTtcblxuLypcbiAgSGVscGVyIGZ1bmN0aW9uIHVzZWQgaW4gdGhlIGZ1bmN0aW9uIGZpbmRfZm4gd2hpY2ggdGFrZXMgdGhlXG4gIHBhdHRlcm4gKHVwYXQpIGFuZCB0aGUgZGVmaW5pdGlvbiAoZGVmKSBvZiBhIGxldCBleHByZXNzaW9uIGFuZFxuICBjb2xsZWN0cyBmdW5jdGlvbnMgaW4gZGVmIHRoYXQgYXJlIGJvdW5kIHRvIHZhcmlhYmxlIG5hbWUgaW5cbiAgdXBhdC4gRXhhbXBsZTogZm9yIHRoZSBleHByZXNzaW9uIFwibGV0IChhLGIpID0gKGZ1biB4IC0+IHgrMSwgNDEpIGluXCJcbiAgaWYgbmFtZT1cImFcIiwgdGhlbiBsPVtmdW4geCAtPiB4KzFdXG4gKi9cbmxldCByZWMgZmluZF9pbl9sZXQgPVxuICAgICAgICAoXG4gICAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICAgIHVwYXQ6IFRlcm0uVVBhdC50LFxuICAgICAgICAgIGRlZjogVGVybS5VRXhwLnQsXG4gICAgICAgICAgbDogbGlzdChUZXJtLlVFeHAudCksXG4gICAgICAgIClcbiAgICAgICAgOiBsaXN0KFRlcm0uVUV4cC50KSA9PiB7XG4gIHN3aXRjaCAodXBhdC50ZXJtLCBkZWYudGVybSkge1xuICB8IChQYXJlbnModXApLCBQYXJlbnModWUpKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cCwgdWUsIGwpXG4gIHwgKFBhcmVucyh1cCksIF8pID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCBkZWYsIGwpXG4gIHwgKF8sIFBhcmVucyh1ZSkpID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwYXQsIHVlLCBsKVxuICB8IChUeXBlQW5uKHVwLCBfKSwgXykgPT4gZmluZF9pbl9sZXQobmFtZSwgdXAsIGRlZiwgbClcbiAgfCAoVmFyKHgpLCBGdW4oXykpID0+IHggPT0gbmFtZSA/IFtkZWYsIC4uLmxdIDogbFxuICB8IChUdXBsZShwbCksIFR1cGxlKHVsKSkgPT5cbiAgICBpZiAoTGlzdC5sZW5ndGgocGwpICE9IExpc3QubGVuZ3RoKHVsKSkge1xuICAgICAgbDtcbiAgICB9IGVsc2Uge1xuICAgICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgICAoYWNjLCB1cCwgdWUpID0+IHtmaW5kX2luX2xldChuYW1lLCB1cCwgdWUsIGFjYyl9LFxuICAgICAgICBsLFxuICAgICAgICBwbCxcbiAgICAgICAgdWwsXG4gICAgICApO1xuICAgIH1cbiAgfCAoVmFyKF8pLCBfKVxuICB8IChUdXBsZShfKSwgXylcbiAgfCAoXG4gICAgICBFbXB0eUhvbGUgfCBXaWxkIHwgVHJpdiB8IEludmFsaWQoXykgfCBNdWx0aUhvbGUoXykgfCBJbnQoXykgfCBGbG9hdChfKSB8XG4gICAgICBCb29sKF8pIHxcbiAgICAgIFN0cmluZyhfKSB8XG4gICAgICBMaXN0TGl0KF8pIHxcbiAgICAgIENvbnN0cnVjdG9yKF8pIHxcbiAgICAgIENvbnMoXywgXykgfFxuICAgICAgQXAoXywgXyksXG4gICAgICBfLFxuICAgICkgPT4gbFxuICB9O1xufTtcblxuLypcbiBGaW5kIGFueSBmdW5jdGlvbiBleHByZXNzaW9ucyBpbiB1ZXhwIHRoYXQgYXJlIGJvdW5kIHRvIHZhcmlhYmxlIG5hbWVcbiAqL1xubGV0IHJlYyBmaW5kX2ZuID1cbiAgICAgICAgKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQsIGw6IGxpc3QoVGVybS5VRXhwLnQpKVxuICAgICAgICA6IGxpc3QoVGVybS5VRXhwLnQpID0+IHtcbiAgc3dpdGNoICh1ZXhwLnRlcm0pIHtcbiAgfCBMZXQodXAsIGRlZiwgYm9keSkgPT5cbiAgICBsIHw+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCBkZWYpIHw+IGZpbmRfZm4obmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KHVsKVxuICB8IFR1cGxlKHVsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KChhY2MsIHUxKSA9PiB7ZmluZF9mbihuYW1lLCB1MSwgYWNjKX0sIGwsIHVsKVxuICB8IFR5cEZ1bihfLCBib2R5KVxuICB8IEZ1bihfLCBib2R5KSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgYm9keSlcbiAgfCBUeXBBcCh1MSwgXylcbiAgfCBQYXJlbnModTEpXG4gIHwgVW5PcChfLCB1MSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUxKVxuICB8IFRlc3QodTEpXG4gIHwgRmlsdGVyKF8sIF8sIHUxKSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgdTEpXG4gIHwgQXAodTEsIHUyKVxuICB8IFBpcGVsaW5lKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSB8PiBmaW5kX2ZuKG5hbWUsIHUyKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSB8PiBmaW5kX2ZuKG5hbWUsIHUyKSB8PiBmaW5kX2ZuKG5hbWUsIHUzKVxuICB8IERlZmVycmVkQXAoZm4sIGFyZ3MpID0+XG4gICAgbFxuICAgIHw+IGZpbmRfZm4obmFtZSwgZm4pXG4gICAgfD4gTGlzdC5mb2xkX2xlZnQoKGwsIHUpID0+IGZpbmRfZm4obmFtZSwgdSwgbCksIF8sIGFyZ3MpXG4gIHwgTWF0Y2godTEsIHVsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgKF8sIHVlKSkgPT4ge2ZpbmRfZm4obmFtZSwgdWUsIGFjYyl9LFxuICAgICAgbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSxcbiAgICAgIHVsLFxuICAgIClcbiAgfCBFbXB0eUhvbGVcbiAgfCBUcml2XG4gIHwgRGVmZXJyYWwoXylcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBWYXIoXykgPT4gbFxuICB9O1xufTtcblxuLypcbiBGaW5kcyB3aGV0aGVyIHZhcmlhYmxlIG5hbWUgaXMgZXZlciBtZW50aW9uZWQgaW4gdXBhdC5cbiAqL1xubGV0IHJlYyB2YXJfbWVudGlvbl91cGF0ID0gKG5hbWU6IHN0cmluZywgdXBhdDogVGVybS5VUGF0LnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1cGF0LnRlcm0pIHtcbiAgfCBWYXIoeCkgPT4geCA9PSBuYW1lXG4gIHwgRW1wdHlIb2xlXG4gIHwgV2lsZFxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBCb29sKF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gZmFsc2VcbiAgfCBDb25zKHVwMSwgdXAyKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAxKSB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMilcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVwKSA9PiB7YWNjIHx8IHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXApfSxcbiAgICAgIGZhbHNlLFxuICAgICAgbCxcbiAgICApXG4gIHwgUGFyZW5zKHVwKSA9PiB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKVxuICB8IEFwKHVwMSwgdXAyKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAxKSB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMilcbiAgfCBUeXBlQW5uKHVwLCBfKSA9PiB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKVxuICB9O1xufTtcblxuLypcbiBGaW5kcyB3aGV0aGVyIHZhcmlhYmxlIG5hbWUgaXMgZXZlciBtZW50aW9uZWQgaW4gdWV4cC5cbiAqL1xubGV0IHJlYyB2YXJfbWVudGlvbiA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgVmFyKHgpID0+IHggPT0gbmFtZVxuICB8IEVtcHR5SG9sZVxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBEZWZlcnJhbChfKSA9PiBmYWxzZVxuICB8IEZ1bihhcmdzLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgYXJncykgPyBmYWxzZSA6IHZhcl9tZW50aW9uKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdWUpID0+IHthY2MgfHwgdmFyX21lbnRpb24obmFtZSwgdWUpfSwgZmFsc2UsIGwpXG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApXG4gICAgICA/IGZhbHNlIDogdmFyX21lbnRpb24obmFtZSwgZGVmKSB8fCB2YXJfbWVudGlvbihuYW1lLCBib2R5KVxuICB8IFR5cEZ1bihfLCB1KVxuICB8IFR5cEFwKHUsIF8pXG4gIHwgVGVzdCh1KVxuICB8IFBhcmVucyh1KVxuICB8IFVuT3AoXywgdSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIF8sIHUpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUpXG4gIHwgQXAodTEsIHUyKVxuICB8IFBpcGVsaW5lKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTEpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUyKVxuICB8IERlZmVycmVkQXAodTEsIHVzKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCBMaXN0LmV4aXN0cyh2YXJfbWVudGlvbihuYW1lKSwgdXMpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCB1MSkgfHwgdmFyX21lbnRpb24obmFtZSwgdTIpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUzKVxuICB8IE1hdGNoKGcsIGwpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgZylcbiAgICB8fCBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgIChhY2MsIHBlKSA9PiB7XG4gICAgICAgICAgIGxldCAocCwgZSkgPSBwZTtcbiAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjIHx8IHZhcl9tZW50aW9uKG5hbWUsIGUpO1xuICAgICAgICAgfSxcbiAgICAgICAgIGZhbHNlLFxuICAgICAgICAgbCxcbiAgICAgICApXG4gIH07XG59O1xuXG4vKlxuIEZpbmRzIHdoZXRoZXIgdmFyaWFibGUgbmFtZSBpcyBhcHBsaWVkIG9uIGFub3RoZXIgZXhwcmVzc3Npb24uXG4gaS5lLiBBcChWYXIobmFtZSksIHUpIG9jY3VycyBhbnl3aGVyZSBpbiB0aGUgdWV4cC5cbiAqL1xubGV0IHJlYyB2YXJfYXBwbGllZCA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgVmFyKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgVHJpdlxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IERlZmVycmFsKF8pID0+IGZhbHNlXG4gIHwgRnVuKGFyZ3MsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdmFyX2FwcGxpZWQobmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfYXBwbGllZChuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcClcbiAgICAgID8gZmFsc2UgOiB2YXJfYXBwbGllZChuYW1lLCBkZWYpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIGJvZHkpXG4gIHwgVHlwRnVuKF8sIHUpXG4gIHwgVGVzdCh1KVxuICB8IFBhcmVucyh1KVxuICB8IFVuT3AoXywgdSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIF8sIHUpID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUpXG4gIHwgVHlwQXAodSwgXykgPT5cbiAgICBzd2l0Y2ggKHUudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiBmYWxzZVxuICAgIHwgXyA9PiB2YXJfYXBwbGllZChuYW1lLCB1KVxuICAgIH1cbiAgfCBBcCh1MSwgdTIpID0+XG4gICAgc3dpdGNoICh1MS50ZXJtKSB7XG4gICAgfCBWYXIoeCkgPT4geCA9PSBuYW1lID8gdHJ1ZSA6IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICAgIHwgXyA9PiB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpXG4gICAgfVxuICB8IERlZmVycmVkQXAodTEsIHVzKSA9PlxuICAgIHN3aXRjaCAodTEudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiBMaXN0LmV4aXN0cyh2YXJfYXBwbGllZChuYW1lKSwgdXMpXG4gICAgfCBfID0+IExpc3QuZXhpc3RzKHZhcl9hcHBsaWVkKG5hbWUpLCB1cylcbiAgICB9XG4gIHwgUGlwZWxpbmUodTEsIHUyKSA9PlxuICAgIHN3aXRjaCAodTIudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiB2YXJfYXBwbGllZChuYW1lLCB1MSlcbiAgICB8IF8gPT4gdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICAgIH1cbiAgfCBDb25zKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKSB8fCB2YXJfYXBwbGllZChuYW1lLCB1MylcbiAgfCBNYXRjaChnLCBsKSA9PlxuICAgIHZhcl9hcHBsaWVkKG5hbWUsIGcpXG4gICAgfHwgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAoYWNjLCBwZSkgPT4ge1xuICAgICAgICAgICBsZXQgKHAsIGUpID0gcGU7XG4gICAgICAgICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcCkgPyBmYWxzZSA6IGFjYyB8fCB2YXJfYXBwbGllZChuYW1lLCBlKTtcbiAgICAgICAgIH0sXG4gICAgICAgICBmYWxzZSxcbiAgICAgICAgIGwsXG4gICAgICAgKVxuICB9O1xufTtcblxuLypcbiBDaGVjayB3aGV0aGVyIGFsbCBmdW5jdGlvbnMgYm91bmQgdG8gdmFyaWFibGUgbmFtZSBhcmUgcmVjdXJzaXZlLlxuICovXG5sZXQgaXNfcmVjdXJzaXZlID0gKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQpOiBib29sID0+IHtcbiAgbGV0IGZuX2JvZGllcyA9IFtdIHw+IGZpbmRfZm4obmFtZSwgdWV4cCk7XG4gIGlmIChMaXN0Lmxlbmd0aChmbl9ib2RpZXMpID09IDApIHtcbiAgICBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVlKSA9PiB7YWNjICYmIHZhcl9tZW50aW9uKG5hbWUsIHVlKX0sXG4gICAgICB0cnVlLFxuICAgICAgZm5fYm9kaWVzLFxuICAgICk7XG4gIH07XG59O1xuXG4vKlxuIENoZWNrIGlmIHZhcmlhYmxlIG5hbWUgaXMgbm90IG1lbnRpb25lZCBhbnl3aGVyZSBvdXRzaWRlIG9mXG4gYSB0YWlsIHBvc2l0aW9uIGluIHVleHAuIE5vdGUgdGhhdCBpZiB0aGUgdmFyaWFibGUgaXMgbm90XG4gbWVudGlvbmVkIGFueXdoZXJlIGluIHRoZSBleHByZXNzaW9uLCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlLlxuICovXG5sZXQgcmVjIHRhaWxfY2hlY2sgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVleHAudGVybSkge1xuICB8IEVtcHR5SG9sZVxuICB8IFRyaXZcbiAgfCBEZWZlcnJhbChfKVxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IFZhcihfKSA9PiB0cnVlXG4gIHwgRnVuKGFyZ3MsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCBib2R5KVxuICB8IExldChwLCBkZWYsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSB8fCB2YXJfbWVudGlvbihuYW1lLCBkZWYpXG4gICAgICA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCBib2R5KVxuICB8IExpc3RMaXQobClcbiAgfCBUdXBsZShsKSA9PlxuICAgIC8vSWYgbCBoYXMgbm8gcmVjdXJzaXZlIGNhbGxzIHRoZW4gdHJ1ZVxuICAgICFMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfbWVudGlvbihuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBUZXN0KF8pID0+IGZhbHNlXG4gIHwgVHlBbGlhcyhfLCBfLCB1KVxuICB8IEZpbHRlcihfLCBfLCB1KVxuICB8IFR5cEZ1bihfLCB1KVxuICB8IFR5cEFwKHUsIF8pXG4gIHwgUGFyZW5zKHUpID0+IHRhaWxfY2hlY2sobmFtZSwgdSlcbiAgfCBVbk9wKF8sIHUpID0+ICF2YXJfbWVudGlvbihuYW1lLCB1KVxuICB8IEFwKHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTIpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIHUxKVxuICB8IERlZmVycmVkQXAoZm4sIGFyZ3MpID0+XG4gICAgdGFpbF9jaGVjayhcbiAgICAgIG5hbWUsXG4gICAgICB7aWRzOiBbXSwgdGVybTogQXAoZm4sIHtpZHM6IFtdLCB0ZXJtOiBUdXBsZShhcmdzKX0pfSxcbiAgICApXG4gIHwgUGlwZWxpbmUodTEsIHUyKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1MSkgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgdTIpXG4gIHwgU2VxKHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTEpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gISh2YXJfbWVudGlvbihuYW1lLCB1MSkgfHwgdmFyX21lbnRpb24obmFtZSwgdTIpKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgdTEpXG4gICAgICA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCB1MikgJiYgdGFpbF9jaGVjayhuYW1lLCB1MylcbiAgfCBNYXRjaChnLCBsKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIGcpXG4gICAgICA/IGZhbHNlXG4gICAgICA6IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgIChhY2MsIChwLCBlKSkgPT4ge1xuICAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjICYmIHRhaWxfY2hlY2sobmFtZSwgZSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICAgbCxcbiAgICAgICAgKVxuICB9O1xufTtcblxuLypcbiBDaGVjayB3aGV0aGVyIGFsbCBmdW5jdGlvbnMgYm91bmQgdG8gdmFyaWFibGUgbmFtZSBhcmUgdGFpbCByZWN1cnNpdmUuXG4gKi9cbmxldCBpc190YWlsX3JlY3Vyc2l2ZSA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIGxldCBmbl9ib2RpZXMgPSBbXSB8PiBmaW5kX2ZuKG5hbWUsIHVleHApO1xuICBpZiAoTGlzdC5sZW5ndGgoZm5fYm9kaWVzKSA9PSAwKSB7XG4gICAgZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCB1ZSkgPT4ge2FjYyAmJiB2YXJfbWVudGlvbihuYW1lLCB1ZSkgJiYgdGFpbF9jaGVjayhuYW1lLCB1ZSl9LFxuICAgICAgdHJ1ZSxcbiAgICAgIGZuX2JvZGllcyxcbiAgICApO1xuICB9O1xufTtcblxubGV0IGNoZWNrID1cbiAgICAodWV4cDogVGVybS5VRXhwLnQsIHByZWRpY2F0ZXM6IGxpc3QoVGVybS5VRXhwLnQgPT4gYm9vbCkpOiBzeW50YXhfcmVzdWx0ID0+IHtcbiAgbGV0IHJlc3VsdHMgPSBMaXN0Lm1hcChwcmVkID0+IHt1ZXhwIHw+IHByZWR9LCBwcmVkaWNhdGVzKTtcbiAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoKHByZWRpY2F0ZXMpO1xuICBsZXQgcGFzc2luZyA9IFV0aWwuTGlzdFV0aWwuY291bnRfcHJlZChyZXMgPT4gcmVzLCByZXN1bHRzKTtcblxuICB7XG4gICAgcmVzdWx0cyxcbiAgICBwZXJjZW50YWdlOlxuICAgICAgLy92YWN1b3VzbHkgcGFzc2VzIGlmIHRoZXJlIGFyZSBubyB0ZXN0c1xuICAgICAgbGVuZ3RoID09IDAgPyAxLiA6IGZsb2F0X29mX2ludChwYXNzaW5nKSAvLiBmbG9hdF9vZl9pbnQobGVuZ3RoKSxcbiAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcHJlZGljYXRlID1cbiAgfCBWYXJBcHBsaWVkKHN0cmluZylcbiAgfCBJc1JlY3Vyc2l2ZShzdHJpbmcpXG4gIHwgSXNOb3RSZWN1cnNpdmUoc3RyaW5nKVxuICB8IElzVGFpbFJlY3Vyc2l2ZShzdHJpbmcpO1xuXG5sZXQgcHJlZGljYXRlX2ZuID0gcHJlZGljYXRlID0+IHtcbiAgc3dpdGNoIChwcmVkaWNhdGUpIHtcbiAgfCBWYXJBcHBsaWVkKG5hbWUpID0+IHZhcl9hcHBsaWVkKG5hbWUpXG4gIHwgSXNSZWN1cnNpdmUobmFtZSkgPT4gaXNfcmVjdXJzaXZlKG5hbWUpXG4gIHwgSXNOb3RSZWN1cnNpdmUobmFtZSkgPT4gKHVleHAgPT4gIWlzX3JlY3Vyc2l2ZShuYW1lLCB1ZXhwKSlcbiAgfCBJc1RhaWxSZWN1cnNpdmUobmFtZSkgPT4gaXNfdGFpbF9yZWN1cnNpdmUobmFtZSlcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBIYXozbGNvcmU7XG5vcGVuIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYuUHJpbWl0aXZlcztcblxubW9kdWxlIHR5cGUgRXhlcmNpc2VFbnYgPSB7XG4gIHR5cGUgbm9kZTtcbiAgbGV0IGRlZmF1bHQ6IG5vZGU7XG4gIGxldCBvdXRwdXRfaGVhZGVyOiBzdHJpbmcgPT4gc3RyaW5nO1xufTtcblxubGV0IG91dHB1dF9oZWFkZXJfZ3JhZGluZyA9IF9tb2R1bGVfbmFtZSA9PlxuICBcIm1vZHVsZSBFeGVyY2lzZSA9IEdyYWRlUHJlbHVkZS5FeGVyY2lzZVxcblwiICsrIFwibGV0IHByb21wdCA9ICgpXFxuXCI7XG5cbm1vZHVsZSBGID0gKEV4ZXJjaXNlRW52OiBFeGVyY2lzZUVudikgPT4ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgd3JvbmdfaW1wbCgnY29kZSkgPSB7XG4gICAgaW1wbDogJ2NvZGUsXG4gICAgaGludDogc3RyaW5nLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaWRkZW5fdGVzdHMoJ2NvZGUpID0ge1xuICAgIHRlc3RzOiAnY29kZSxcbiAgICBoaW50czogbGlzdChzdHJpbmcpLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaW50ID0gc3RyaW5nO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzeW50YXhfdGVzdCA9IChoaW50LCBTeW50YXhUZXN0LnByZWRpY2F0ZSk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHN5bnRheF90ZXN0cyA9IGxpc3Qoc3ludGF4X3Rlc3QpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB5b3VyX3Rlc3RzKCdjb2RlKSA9IHtcbiAgICB0ZXN0czogJ2NvZGUsXG4gICAgcmVxdWlyZWQ6IGludCxcbiAgICBwcm92aWRlZDogaW50LFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb2ludF9kaXN0cmlidXRpb24gPSB7XG4gICAgdGVzdF92YWxpZGF0aW9uOiBpbnQsXG4gICAgbXV0YXRpb25fdGVzdGluZzogaW50LFxuICAgIGltcGxfZ3JhZGluZzogaW50LFxuICB9O1xuXG4gIGxldCB2YWxpZGF0ZV9wb2ludF9kaXN0cmlidXRpb24gPVxuICAgICAgKHt0ZXN0X3ZhbGlkYXRpb24sIG11dGF0aW9uX3Rlc3RpbmcsIGltcGxfZ3JhZGluZ306IHBvaW50X2Rpc3RyaWJ1dGlvbikgPT5cbiAgICB0ZXN0X3ZhbGlkYXRpb24gKyBtdXRhdGlvbl90ZXN0aW5nICsgaW1wbF9ncmFkaW5nID09IDEwMFxuICAgICAgPyAoKSA6IGZhaWx3aXRoKFwiSW52YWxpZCBwb2ludCBkaXN0cmlidXRpb24gaW4gZXhlcmNpc2UuXCIpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwKCdjb2RlKSA9IHtcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHZlcnNpb246IGludCxcbiAgICBtb2R1bGVfbmFtZTogc3RyaW5nLFxuICAgIHByb21wdDpcbiAgICAgIFtAcHJpbnRlciAoZm10LCBfKSA9PiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgXCJwcm9tcHRcIildIFtAb3BhcXVlXSBFeGVyY2lzZUVudi5ub2RlLFxuICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICBwcmVsdWRlOiAnY29kZSxcbiAgICBjb3JyZWN0X2ltcGw6ICdjb2RlLFxuICAgIHlvdXJfdGVzdHM6IHlvdXJfdGVzdHMoJ2NvZGUpLFxuICAgIHlvdXJfaW1wbDogJ2NvZGUsXG4gICAgaGlkZGVuX2J1Z3M6IGxpc3Qod3JvbmdfaW1wbCgnY29kZSkpLFxuICAgIGhpZGRlbl90ZXN0czogaGlkZGVuX3Rlc3RzKCdjb2RlKSxcbiAgICBzeW50YXhfdGVzdHMsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGtleSA9IChzdHJpbmcsIGludCk7XG5cbiAgbGV0IGtleV9vZiA9IHAgPT4ge1xuICAgIChwLnRpdGxlLCBwLnZlcnNpb24pO1xuICB9O1xuXG4gIGxldCBmaW5kX2tleV9vcHQgPSAoa2V5LCBzcGVjczogbGlzdChwKCdjb2RlKSkpID0+IHtcbiAgICBzcGVjcyB8PiBVdGlsLkxpc3RVdGlsLmZpbmRpX29wdChzcGVjID0+IGtleV9vZihzcGVjKSA9PSBrZXkpO1xuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb3MgPVxuICAgIHwgUHJlbHVkZVxuICAgIHwgQ29ycmVjdEltcGxcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb25cbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmdcbiAgICB8IFlvdXJJbXBsXG4gICAgfCBIaWRkZW5CdWdzKGludClcbiAgICB8IEhpZGRlblRlc3RzO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzcGVjID0gcChaaXBwZXIudCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRyYW5zaXRpb25hcnlfc3BlYyA9IHAoQ29kZVN0cmluZy50KTtcblxuICBsZXQgbWFwID0gKHA6IHAoJ2EpLCBmOiAnYSA9PiAnYik6IHAoJ2IpID0+IHtcbiAgICB7XG4gICAgICB0aXRsZTogcC50aXRsZSxcbiAgICAgIHZlcnNpb246IHAudmVyc2lvbixcbiAgICAgIG1vZHVsZV9uYW1lOiBwLm1vZHVsZV9uYW1lLFxuICAgICAgcHJvbXB0OiBwLnByb21wdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbjogcC5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICBwcmVsdWRlOiBmKHAucHJlbHVkZSksXG4gICAgICBjb3JyZWN0X2ltcGw6IGYocC5jb3JyZWN0X2ltcGwpLFxuICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICB0ZXN0czogZihwLnlvdXJfdGVzdHMudGVzdHMpLFxuICAgICAgICByZXF1aXJlZDogcC55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICBwcm92aWRlZDogcC55b3VyX3Rlc3RzLnByb3ZpZGVkLFxuICAgICAgfSxcbiAgICAgIHlvdXJfaW1wbDogZihwLnlvdXJfaW1wbCksXG4gICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgcC5oaWRkZW5fYnVnc1xuICAgICAgICB8PiBMaXN0Lm1hcCh3cm9uZ19pbXBsID0+IHtcbiAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICBpbXBsOiBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3Qod3JvbmdfaW1wbC5pbXBsKSxcbiAgICAgICAgICAgICAgIGhpbnQ6IHdyb25nX2ltcGwuaGludCxcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgIH0pLFxuICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QocC5oaWRkZW5fdGVzdHMudGVzdHMpLFxuICAgICAgICBoaW50czogcC5oaWRkZW5fdGVzdHMuaGludHMsXG4gICAgICB9LFxuICAgICAgc3ludGF4X3Rlc3RzOiBwLnN5bnRheF90ZXN0cyxcbiAgICB9O1xuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBlZHMgPSBwKEVkaXRvci50KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3RhdGUgPSB7XG4gICAgcG9zLFxuICAgIGVkcyxcbiAgfTtcblxuICBsZXQga2V5X29mX3N0YXRlID0gKHtlZHMsIF99KSA9PiBrZXlfb2YoZWRzKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyc2lzdGVudF9zdGF0ZSA9IChwb3MsIGxpc3QoKHBvcywgUGVyc2lzdGVudFppcHBlci50KSkpO1xuXG4gIGxldCBlZGl0b3Jfb2Zfc3RhdGU6IHN0YXRlID0+IEVkaXRvci50ID1cbiAgICAoe3BvcywgZWRzLCBffSkgPT5cbiAgICAgIHN3aXRjaCAocG9zKSB7XG4gICAgICB8IFByZWx1ZGUgPT4gZWRzLnByZWx1ZGVcbiAgICAgIHwgQ29ycmVjdEltcGwgPT4gZWRzLmNvcnJlY3RfaW1wbFxuICAgICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IGVkcy55b3VyX3Rlc3RzLnRlc3RzXG4gICAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gZWRzLnlvdXJfdGVzdHMudGVzdHNcbiAgICAgIHwgWW91ckltcGwgPT4gZWRzLnlvdXJfaW1wbFxuICAgICAgfCBIaWRkZW5CdWdzKGkpID0+IExpc3QubnRoKGVkcy5oaWRkZW5fYnVncywgaSkuaW1wbFxuICAgICAgfCBIaWRkZW5UZXN0cyA9PiBlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzXG4gICAgICB9O1xuXG4gIGxldCBwdXRfZWRpdG9yID0gKHtwb3MsIGVkcywgX30gYXMgc3RhdGU6IHN0YXRlLCBlZGl0b3I6IEVkaXRvci50KSA9PlxuICAgIHN3aXRjaCAocG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBwcmVsdWRlOiBlZGl0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBDb3JyZWN0SW1wbCA9PiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgY29ycmVjdF9pbXBsOiBlZGl0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgICAgICAuLi5lZHMueW91cl90ZXN0cyxcbiAgICAgICAgICAgIHRlc3RzOiBlZGl0b3IsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IFlvdXJJbXBsID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICB5b3VyX2ltcGw6IGVkaXRvcixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IEhpZGRlbkJ1Z3MobikgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICAgICAgVXRpbC5MaXN0VXRpbC5wdXRfbnRoKFxuICAgICAgICAgICAgICBuLFxuICAgICAgICAgICAgICB7Li4uTGlzdC5udGgoZWRzLmhpZGRlbl9idWdzLCBuKSwgaW1wbDogZWRpdG9yfSxcbiAgICAgICAgICAgICAgZWRzLmhpZGRlbl9idWdzLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IEhpZGRlblRlc3RzID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgICAgIC4uLmVkcy5oaWRkZW5fdGVzdHMsXG4gICAgICAgICAgICB0ZXN0czogZWRpdG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgZWRpdG9ycyA9ICh7ZWRzLCBffTogc3RhdGUpID0+XG4gICAgW1xuICAgICAgZWRzLnByZWx1ZGUsXG4gICAgICBlZHMuY29ycmVjdF9pbXBsLFxuICAgICAgZWRzLnlvdXJfdGVzdHMudGVzdHMsXG4gICAgICBlZHMueW91cl90ZXN0cy50ZXN0cyxcbiAgICAgIGVkcy55b3VyX2ltcGwsXG4gICAgXVxuICAgIEAgTGlzdC5tYXAod3JvbmdfaW1wbCA9PiB3cm9uZ19pbXBsLmltcGwsIGVkcy5oaWRkZW5fYnVncylcbiAgICBAIFtlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzXTtcblxuICBsZXQgZWRpdG9yX3Bvc2l0aW9ucyA9ICh7ZWRzLCBffTogc3RhdGUpID0+XG4gICAgW1ByZWx1ZGUsIENvcnJlY3RJbXBsLCBZb3VyVGVzdHNUZXN0aW5nLCBZb3VyVGVzdHNWYWxpZGF0aW9uLCBZb3VySW1wbF1cbiAgICBAIExpc3QubWFwaSgoaSwgXykgPT4gSGlkZGVuQnVncyhpKSwgZWRzLmhpZGRlbl9idWdzKVxuICAgIEAgW0hpZGRlblRlc3RzXTtcblxuICBsZXQgcG9zaXRpb25lZF9lZGl0b3JzID0gc3RhdGUgPT5cbiAgICBMaXN0LmNvbWJpbmUoZWRpdG9yX3Bvc2l0aW9ucyhzdGF0ZSksIGVkaXRvcnMoc3RhdGUpKTtcblxuICBsZXQgaWR4X29mX3BvcyA9IChwb3MsIHA6IHAoJ2NvZGUpKSA9PlxuICAgIHN3aXRjaCAocG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IDBcbiAgICB8IENvcnJlY3RJbXBsID0+IDFcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gMlxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiAzXG4gICAgfCBZb3VySW1wbCA9PiA0XG4gICAgfCBIaWRkZW5CdWdzKGkpID0+XG4gICAgICBpZiAoaSA8IExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIDUgKyBpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbHdpdGgoXCJpbnZhbGlkIGhpZGRlbiBidWcgaW5kZXhcIik7XG4gICAgICB9XG4gICAgfCBIaWRkZW5UZXN0cyA9PiA1ICsgTGlzdC5sZW5ndGgocC5oaWRkZW5fYnVncylcbiAgICB9O1xuXG4gIGxldCBwb3Nfb2ZfaWR4ID0gKHA6IHAoJ2NvZGUpLCBpZHg6IGludCkgPT5cbiAgICBzd2l0Y2ggKGlkeCkge1xuICAgIHwgMCA9PiBQcmVsdWRlXG4gICAgfCAxID0+IENvcnJlY3RJbXBsXG4gICAgfCAyID0+IFlvdXJUZXN0c1Rlc3RpbmdcbiAgICB8IDMgPT4gWW91clRlc3RzVmFsaWRhdGlvblxuICAgIHwgNCA9PiBZb3VySW1wbFxuICAgIHwgXyA9PlxuICAgICAgaWYgKGlkeCA8IDApIHtcbiAgICAgICAgZmFpbHdpdGgoXCJuZWdhdGl2ZSBpZHhcIik7XG4gICAgICB9IGVsc2UgaWYgKGlkeCA8IDUgKyBMaXN0Lmxlbmd0aChwLmhpZGRlbl9idWdzKSkge1xuICAgICAgICBIaWRkZW5CdWdzKGlkeCAtIDUpO1xuICAgICAgfSBlbHNlIGlmIChpZHggPT0gNSArIExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIEhpZGRlblRlc3RzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbHdpdGgoXCJlbGVtZW50IGlkeFwiKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gIGxldCBzd2l0Y2hfZWRpdG9yID0gKH5wb3MsIGluc3RydWN0b3JfbW9kZSwgfmV4ZXJjaXNlKSA9PlxuICAgIGlmICghaW5zdHJ1Y3Rvcl9tb2RlKSB7XG4gICAgICBzd2l0Y2ggKHBvcykge1xuICAgICAgfCBIaWRkZW5UZXN0c1xuICAgICAgfCBIaWRkZW5CdWdzKF8pID0+IGV4ZXJjaXNlXG4gICAgICB8IF8gPT4ge2VkczogZXhlcmNpc2UuZWRzLCBwb3N9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB7ZWRzOiBleGVyY2lzZS5lZHMsIHBvc307XG4gICAgfTtcblxuICBsZXQgemlwcGVyX29mX2NvZGUgPSBjb2RlID0+IHtcbiAgICBzd2l0Y2ggKFByaW50ZXIuemlwcGVyX29mX3N0cmluZyhjb2RlKSkge1xuICAgIHwgTm9uZSA9PiBmYWlsd2l0aChcIlRyYW5zaXRpb24gZmFpbGVkLlwiKVxuICAgIHwgU29tZSh6aXBwZXIpID0+IHppcHBlclxuICAgIH07XG4gIH07XG5cbiAgbGV0IHRyYW5zaXRpb246IHRyYW5zaXRpb25hcnlfc3BlYyA9PiBzcGVjID1cbiAgICAoXG4gICAgICB7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgcHJvbXB0LFxuICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgIHByZWx1ZGUsXG4gICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgICAgeW91cl90ZXN0cyxcbiAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICB9LFxuICAgICkgPT4ge1xuICAgICAgbGV0IHByZWx1ZGUgPSB6aXBwZXJfb2ZfY29kZShwcmVsdWRlKTtcbiAgICAgIGxldCBjb3JyZWN0X2ltcGwgPSB6aXBwZXJfb2ZfY29kZShjb3JyZWN0X2ltcGwpO1xuICAgICAgbGV0IHlvdXJfdGVzdHMgPSB7XG4gICAgICAgIGxldCB0ZXN0cyA9IHppcHBlcl9vZl9jb2RlKHlvdXJfdGVzdHMudGVzdHMpO1xuICAgICAgICB7dGVzdHMsIHJlcXVpcmVkOiB5b3VyX3Rlc3RzLnJlcXVpcmVkLCBwcm92aWRlZDogeW91cl90ZXN0cy5wcm92aWRlZH07XG4gICAgICB9O1xuICAgICAgbGV0IHlvdXJfaW1wbCA9IHppcHBlcl9vZl9jb2RlKHlvdXJfaW1wbCk7XG4gICAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAoYWNjLCB7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICAgIGxldCBpbXBsID0gemlwcGVyX29mX2NvZGUoaW1wbCk7XG4gICAgICAgICAgICBhY2MgQCBbe2ltcGwsIGhpbnR9XTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICApO1xuICAgICAgbGV0IGhpZGRlbl90ZXN0cyA9IHtcbiAgICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAgICAgICBsZXQgdGVzdHMgPSB6aXBwZXJfb2ZfY29kZSh0ZXN0cyk7XG4gICAgICAgIHt0ZXN0cywgaGludHN9O1xuICAgICAgfTtcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICBwcm9tcHQsXG4gICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgIH07XG4gICAgfTtcblxuICBsZXQgZWRzX29mX3NwZWMgPVxuICAgICAgKFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgICBwcm9tcHQsXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHByZWx1ZGUsXG4gICAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICAgIHlvdXJfdGVzdHMsXG4gICAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICAgIH0sXG4gICAgICAgIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICApXG4gICAgICA6IGVkcyA9PiB7XG4gICAgbGV0IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uID0gRWRpdG9yLmluaXQofnNldHRpbmdzKTtcbiAgICBsZXQgcHJlbHVkZSA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHByZWx1ZGUpO1xuICAgIGxldCBjb3JyZWN0X2ltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihjb3JyZWN0X2ltcGwpO1xuICAgIGxldCB5b3VyX3Rlc3RzID0ge1xuICAgICAgbGV0IHRlc3RzID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24oeW91cl90ZXN0cy50ZXN0cyk7XG4gICAgICB7dGVzdHMsIHJlcXVpcmVkOiB5b3VyX3Rlc3RzLnJlcXVpcmVkLCBwcm92aWRlZDogeW91cl90ZXN0cy5wcm92aWRlZH07XG4gICAgfTtcbiAgICBsZXQgeW91cl9pbXBsID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24oeW91cl9pbXBsKTtcbiAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgaGlkZGVuX2J1Z3NcbiAgICAgIHw+IExpc3QubWFwKCh7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICAgbGV0IGltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihpbXBsKTtcbiAgICAgICAgICAge2ltcGwsIGhpbnR9O1xuICAgICAgICAgfSk7XG4gICAgbGV0IGhpZGRlbl90ZXN0cyA9IHtcbiAgICAgIGxldCB7dGVzdHMsIGhpbnRzfSA9IGhpZGRlbl90ZXN0cztcbiAgICAgIGxldCB0ZXN0cyA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHRlc3RzKTtcbiAgICAgIHt0ZXN0cywgaGludHN9O1xuICAgIH07XG4gICAge1xuICAgICAgdGl0bGUsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgbW9kdWxlX25hbWUsXG4gICAgICBwcm9tcHQsXG4gICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICBwcmVsdWRlLFxuICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgeW91cl90ZXN0cyxcbiAgICAgIHlvdXJfaW1wbCxcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgc3ludGF4X3Rlc3RzLFxuICAgIH07XG4gIH07XG5cbiAgLy9cbiAgLy8gT2xkIHZlcnNpb24gb2YgYWJvdmUgdGhhdCBkaWQgc3RyaW5nLWJhc2VkIHBhcnNpbmcsIG1heSBiZSB1c2VmdWxcbiAgLy8gZm9yIHRyYW5zaXRpb25zIGJldHdlZW4gemlwcGVyIGRhdGEgc3RydWN0dXJlIHZlcnNpb25zIChUT0RPKVxuICAvL1xuICAvLyBsZXQgZWRpdG9yX29mX2NvZGUgPSAoaW5pdF9pZCwgY29kZSkgPT5cbiAgLy8gICBzd2l0Y2ggKEVkaXRvclV0aWwuZWRpdG9yX29mX2NvZGUoaW5pdF9pZCwgY29kZSkpIHtcbiAgLy8gICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJFeGVyY2lzZSBlcnJvcjogaW52YWxpZCBjb2RlXCIpXG4gIC8vICAgfCBTb21lKHgpID0+IHhcbiAgLy8gICB9O1xuICAvLyBsZXQgZWRzX29mX3NwZWM6IHNwZWMgPT4gZWRzID1cbiAgLy8gICAoXG4gIC8vICAgICB7XG4gIC8vXG4gIC8vICAgICAgIHRpdGxlLFxuICAvLyAgICAgICB2ZXJzaW9uLFxuICAvLyAgICAgICBwcm9tcHQsXG4gIC8vICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgLy8gICAgICAgcHJlbHVkZSxcbiAgLy8gICAgICAgY29ycmVjdF9pbXBsLFxuICAvLyAgICAgICB5b3VyX3Rlc3RzLFxuICAvLyAgICAgICB5b3VyX2ltcGwsXG4gIC8vICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICBoaWRkZW5fdGVzdHMsXG4gIC8vICAgICB9LFxuICAvLyAgICkgPT4ge1xuICAvLyAgICAgbGV0IGlkID0gbmV4dF9pZDtcbiAgLy8gICAgIGxldCAoaWQsIHByZWx1ZGUpID0gZWRpdG9yX29mX2NvZGUoaWQsIHByZWx1ZGUpO1xuICAvLyAgICAgbGV0IChpZCwgY29ycmVjdF9pbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCBjb3JyZWN0X2ltcGwpO1xuICAvLyAgICAgbGV0IChpZCwgeW91cl90ZXN0cykgPSB7XG4gIC8vICAgICAgIGxldCAoaWQsIHRlc3RzKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB5b3VyX3Rlc3RzLnRlc3RzKTtcbiAgLy8gICAgICAgKFxuICAvLyAgICAgICAgIGlkLFxuICAvLyAgICAgICAgIHtcbiAgLy8gICAgICAgICAgIHRlc3RzLFxuICAvLyAgICAgICAgICAgbnVtX3JlcXVpcmVkOiB5b3VyX3Rlc3RzLm51bV9yZXF1aXJlZCxcbiAgLy8gICAgICAgICAgIG1pbmltdW06IHlvdXJfdGVzdHMubWluaW11bSxcbiAgLy8gICAgICAgICB9LFxuICAvLyAgICAgICApO1xuICAvLyAgICAgfTtcbiAgLy8gICAgIGxldCAoaWQsIHlvdXJfaW1wbCkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgeW91cl9pbXBsKTtcbiAgLy8gICAgIGxldCAoaWQsIGhpZGRlbl9idWdzKSA9XG4gIC8vICAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAvLyAgICAgICAgICgoaWQsIGFjYyksIHtpbXBsLCBoaW50fSkgPT4ge1xuICAvLyAgICAgICAgICAgbGV0IChpZCwgaW1wbCkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgaW1wbCk7XG4gIC8vICAgICAgICAgICAoaWQsIGFjYyBAIFt7aW1wbCwgaGludH1dKTtcbiAgLy8gICAgICAgICB9LFxuICAvLyAgICAgICAgIChpZCwgW10pLFxuICAvLyAgICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICApO1xuICAvLyAgICAgbGV0IChpZCwgaGlkZGVuX3Rlc3RzKSA9IHtcbiAgLy8gICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAvLyAgICAgICBsZXQgKGlkLCB0ZXN0cykgPSBlZGl0b3Jfb2ZfY29kZShpZCwgdGVzdHMpO1xuICAvLyAgICAgICAoaWQsIHt0ZXN0cywgaGludHN9KTtcbiAgLy8gICAgIH07XG4gIC8vICAgICB7XG4gIC8vICAgICAgIG5leHRfaWQ6IGlkLFxuICAvLyAgICAgICB0aXRsZSxcbiAgLy8gICAgICAgdmVyc2lvbixcbiAgLy8gICAgICAgcHJvbXB0LFxuICAvLyAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gIC8vICAgICAgIHByZWx1ZGUsXG4gIC8vICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgLy8gICAgICAgeW91cl90ZXN0cyxcbiAgLy8gICAgICAgeW91cl9pbXBsLFxuICAvLyAgICAgICBoaWRkZW5fYnVncyxcbiAgLy8gICAgICAgaGlkZGVuX3Rlc3RzLFxuICAvLyAgICAgfTtcbiAgLy8gICB9O1xuXG4gIGxldCBzZXRfaW5zdHJ1Y3Rvcl9tb2RlID0gKHtlZHMsIF99IGFzIHN0YXRlOiBzdGF0ZSwgbmV3X21vZGU6IGJvb2wpID0+IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBlZHM6IHtcbiAgICAgIC4uLmVkcyxcbiAgICAgIHByZWx1ZGU6IEVkaXRvci5zZXRfcmVhZF9vbmx5KGVkcy5wcmVsdWRlLCAhbmV3X21vZGUpLFxuICAgIH0sXG4gIH07XG5cbiAgbGV0IHZpc2libGVfaW4gPSAocG9zLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgc3dpdGNoIChwb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4gaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgfCBDb3JyZWN0SW1wbCA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gdHJ1ZVxuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiBmYWxzZVxuICAgIHwgWW91ckltcGwgPT4gdHJ1ZVxuICAgIHwgSGlkZGVuQnVncyhfKSA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IEhpZGRlblRlc3RzID0+IGluc3RydWN0b3JfbW9kZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHN0YXRlX29mX3NwZWMgPVxuICAgICAgKHNwZWMsIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wsIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQpOiBzdGF0ZSA9PiB7XG4gICAgbGV0IGVkcyA9IGVkc19vZl9zcGVjKH5zZXR0aW5ncywgc3BlYyk7XG4gICAgc2V0X2luc3RydWN0b3JfbW9kZSh7cG9zOiBZb3VySW1wbCwgZWRzfSwgaW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgfTtcblxuICBsZXQgcGVyc2lzdGVudF9zdGF0ZV9vZl9zdGF0ZSA9XG4gICAgICAoe3BvcywgX30gYXMgc3RhdGU6IHN0YXRlLCB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sKSA9PiB7XG4gICAgbGV0IHppcHBlcnMgPVxuICAgICAgcG9zaXRpb25lZF9lZGl0b3JzKHN0YXRlKVxuICAgICAgfD4gTGlzdC5maWx0ZXIoKChwb3MsIF8pKSA9PiB2aXNpYmxlX2luKHBvcywgfmluc3RydWN0b3JfbW9kZSkpXG4gICAgICB8PiBMaXN0Lm1hcCgoKHBvcywgZWRpdG9yKSkgPT4ge1xuICAgICAgICAgICAocG9zLCBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QoRWRpdG9yLihlZGl0b3Iuc3RhdGUuemlwcGVyKSkpXG4gICAgICAgICB9KTtcbiAgICAocG9zLCB6aXBwZXJzKTtcbiAgfTtcblxuICBsZXQgdW5wZXJzaXN0X3N0YXRlID1cbiAgICAgIChcbiAgICAgICAgKHBvcywgcG9zaXRpb25lZF96aXBwZXJzKTogcGVyc2lzdGVudF9zdGF0ZSxcbiAgICAgICAgfnNwZWM6IHNwZWMsXG4gICAgICAgIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wsXG4gICAgICAgIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICApXG4gICAgICA6IHN0YXRlID0+IHtcbiAgICBsZXQgbG9va3VwID0gKHBvcywgZGVmYXVsdCkgPT5cbiAgICAgIGlmICh2aXNpYmxlX2luKHBvcywgfmluc3RydWN0b3JfbW9kZSkpIHtcbiAgICAgICAgbGV0IHBlcnNpc3RlZF96aXBwZXIgPSBMaXN0LmFzc29jKHBvcywgcG9zaXRpb25lZF96aXBwZXJzKTtcbiAgICAgICAgbGV0IHppcHBlciA9IFBlcnNpc3RlbnRaaXBwZXIudW5wZXJzaXN0KHBlcnNpc3RlZF96aXBwZXIpO1xuICAgICAgICBFZGl0b3IuaW5pdCh6aXBwZXIsIH5zZXR0aW5ncyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBFZGl0b3IuaW5pdChkZWZhdWx0LCB+c2V0dGluZ3MpO1xuICAgICAgfTtcbiAgICBsZXQgcHJlbHVkZSA9IGxvb2t1cChQcmVsdWRlLCBzcGVjLnByZWx1ZGUpO1xuICAgIGxldCBjb3JyZWN0X2ltcGwgPSBsb29rdXAoQ29ycmVjdEltcGwsIHNwZWMuY29ycmVjdF9pbXBsKTtcbiAgICBsZXQgeW91cl90ZXN0c190ZXN0cyA9IGxvb2t1cChZb3VyVGVzdHNWYWxpZGF0aW9uLCBzcGVjLnlvdXJfdGVzdHMudGVzdHMpO1xuICAgIGxldCB5b3VyX2ltcGwgPSBsb29rdXAoWW91ckltcGwsIHNwZWMueW91cl9pbXBsKTtcbiAgICBsZXQgKF8sIGhpZGRlbl9idWdzKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgKChpLCBoaWRkZW5fYnVnczogbGlzdCh3cm9uZ19pbXBsKEVkaXRvci50KSkpLCB7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICBsZXQgaW1wbCA9IGxvb2t1cChIaWRkZW5CdWdzKGkpLCBpbXBsKTtcbiAgICAgICAgICAoaSArIDEsIGhpZGRlbl9idWdzIEAgW3tpbXBsLCBoaW50fV0pO1xuICAgICAgICB9LFxuICAgICAgICAoMCwgW10pLFxuICAgICAgICBzcGVjLmhpZGRlbl9idWdzLFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlc3RzID0gbG9va3VwKEhpZGRlblRlc3RzLCBzcGVjLmhpZGRlbl90ZXN0cy50ZXN0cyk7XG5cbiAgICBzZXRfaW5zdHJ1Y3Rvcl9tb2RlKFxuICAgICAge1xuICAgICAgICBwb3MsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIHRpdGxlOiBzcGVjLnRpdGxlLFxuICAgICAgICAgIHZlcnNpb246IHNwZWMudmVyc2lvbixcbiAgICAgICAgICBtb2R1bGVfbmFtZTogc3BlYy5tb2R1bGVfbmFtZSxcbiAgICAgICAgICBwcm9tcHQ6IHNwZWMucHJvbXB0LFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbjogc3BlYy5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICAgICAgdGVzdHM6IHlvdXJfdGVzdHNfdGVzdHMsXG4gICAgICAgICAgICByZXF1aXJlZDogc3BlYy55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICAgICAgcHJvdmlkZWQ6IHNwZWMueW91cl90ZXN0cy5wcm92aWRlZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHlvdXJfaW1wbCxcbiAgICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgICAgIHRlc3RzOiBoaWRkZW5fdGVzdHNfdGVzdHMsXG4gICAgICAgICAgICBoaW50czogc3BlYy5oaWRkZW5fdGVzdHMuaGludHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzeW50YXhfdGVzdHM6IHNwZWMuc3ludGF4X3Rlc3RzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGluc3RydWN0b3JfbW9kZSxcbiAgICApO1xuICB9O1xuXG4gIC8vICMgU3RpdGNoaW5nXG5cbiAgdHlwZSBzdGl0Y2hlZCgnYSkgPSB7XG4gICAgdGVzdF92YWxpZGF0aW9uOiAnYSwgLy8gcHJlbHVkZSArIGNvcnJlY3RfaW1wbCArIHlvdXJfdGVzdHNcbiAgICB1c2VyX2ltcGw6ICdhLCAvLyBwcmVsdWRlICsgeW91cl9pbXBsXG4gICAgdXNlcl90ZXN0czogJ2EsIC8vIHByZWx1ZGUgKyB5b3VyX2ltcGwgKyB5b3VyX3Rlc3RzXG4gICAgcHJlbHVkZTogJ2EsIC8vIHByZWx1ZGVcbiAgICBpbnN0cnVjdG9yOiAnYSwgLy8gcHJlbHVkZSArIGNvcnJlY3RfaW1wbCArIGhpZGRlbl90ZXN0cy50ZXN0cyAvLyBUT0RPIG9ubHkgbmVlZHMgdG8gcnVuIGluIGluc3RydWN0b3IgbW9kZVxuICAgIGhpZGRlbl9idWdzOiBsaXN0KCdhKSwgLy8gcHJlbHVkZSArIGhpZGRlbl9idWdzW2ldLmltcGwgKyB5b3VyX3Rlc3RzLFxuICAgIGhpZGRlbl90ZXN0czogJ2EsXG4gIH07XG5cbiAgbGV0IHdyYXBfZmlsdGVyID0gKGFjdDogRmlsdGVyQWN0aW9uLmFjdGlvbiwgdGVybTogVGVybS5VRXhwLnQpOiBUZXJtLlVFeHAudCA9PlxuICAgIFRlcm1CYXNlLlVFeHAue1xuICAgICAgdGVybTpcbiAgICAgICAgVGVybUJhc2UuVUV4cC5GaWx0ZXIoXG4gICAgICAgICAgRmlsdGVyQWN0aW9uLihhY3QsIE9uZSksXG4gICAgICAgICAge3Rlcm06IENvbnN0cnVjdG9yKFwiJGVcIiksIGlkczogW0lkLm1rKCldfSxcbiAgICAgICAgICB0ZXJtLFxuICAgICAgICApLFxuICAgICAgaWRzOiBbSWQubWsoKV0sXG4gICAgfTtcblxuICBsZXQgdGVybV9vZiA9IChlZGl0b3I6IEVkaXRvci50KTogVGVybS5VRXhwLnQgPT5cbiAgICBNYWtlVGVybS5mcm9tX3ppcF9mb3Jfc2VtKGVkaXRvci5zdGF0ZS56aXBwZXIpIHw+IGZzdDtcblxuICBsZXQgc3RpdGNoMyA9IChlZDE6IEVkaXRvci50LCBlZDI6IEVkaXRvci50LCBlZDM6IEVkaXRvci50KSA9PlxuICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cChcbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cCh0ZXJtX29mKGVkMSksIHRlcm1fb2YoZWQyKSksXG4gICAgICB0ZXJtX29mKGVkMyksXG4gICAgKTtcblxuICBsZXQgc3RpdGNoX3Rlcm0gPSAoe2VkcywgX306IHN0YXRlKTogc3RpdGNoZWQoVGVybUJhc2UuVUV4cC50KSA9PiB7XG4gICAgbGV0IGluc3RydWN0b3IgPVxuICAgICAgc3RpdGNoMyhlZHMucHJlbHVkZSwgZWRzLmNvcnJlY3RfaW1wbCwgZWRzLmhpZGRlbl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHVzZXJfaW1wbF90ZXJtID0ge1xuICAgICAgbGV0IHlvdXJfaW1wbF90ZXJtID1cbiAgICAgICAgZWRzLnlvdXJfaW1wbCB8PiB0ZXJtX29mIHw+IHdyYXBfZmlsdGVyKEZpbHRlckFjdGlvbi5TdGVwKTtcbiAgICAgIGxldCBwcmVsdWRlX3Rlcm0gPVxuICAgICAgICBlZHMucHJlbHVkZSB8PiB0ZXJtX29mIHw+IHdyYXBfZmlsdGVyKEZpbHRlckFjdGlvbi5FdmFsKTtcbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cChwcmVsdWRlX3Rlcm0sIHlvdXJfaW1wbF90ZXJtKTtcbiAgICB9O1xuICAgIGxldCB0ZXN0X3ZhbGlkYXRpb25fdGVybSA9XG4gICAgICBzdGl0Y2gzKGVkcy5wcmVsdWRlLCBlZHMuY29ycmVjdF9pbXBsLCBlZHMueW91cl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHVzZXJfdGVzdHNfdGVybSA9XG4gICAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAodXNlcl9pbXBsX3Rlcm0sIHRlcm1fb2YoZWRzLnlvdXJfdGVzdHMudGVzdHMpKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlcm0gPVxuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHVzZXJfaW1wbF90ZXJtLCB0ZXJtX29mKGVkcy5oaWRkZW5fdGVzdHMudGVzdHMpKTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb246IHRlc3RfdmFsaWRhdGlvbl90ZXJtLFxuICAgICAgdXNlcl9pbXBsOiB1c2VyX2ltcGxfdGVybSxcbiAgICAgIHVzZXJfdGVzdHM6IHVzZXJfdGVzdHNfdGVybSxcbiAgICAgIC8vIGluc3RydWN0b3Igd29ya3MgaGVyZSBhcyBsb25nIGFzIHlvdSBkb24ndCBzaGFkb3cgYW55dGhpbmcgaW4gdGhlIHByZWx1ZGVcbiAgICAgIHByZWx1ZGU6IGluc3RydWN0b3IsXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICh0KTogVGVybUJhc2UuVUV4cC50ID0+XG4gICAgICAgICAgICBzdGl0Y2gzKGVkcy5wcmVsdWRlLCB0LmltcGwsIGVkcy55b3VyX3Rlc3RzLnRlc3RzKSxcbiAgICAgICAgICBlZHMuaGlkZGVuX2J1Z3MsXG4gICAgICAgICksXG4gICAgICBoaWRkZW5fdGVzdHM6IGhpZGRlbl90ZXN0c190ZXJtLFxuICAgIH07XG4gIH07XG4gIGxldCBzdGl0Y2hfdGVybSA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF90ZXJtKTtcblxuICB0eXBlIHN0aXRjaGVkX3N0YXRpY3MgPSBzdGl0Y2hlZChFZGl0b3IuQ2FjaGVkU3RhdGljcy50KTtcblxuICAvKiBNdWx0aXBsZSBzdGl0Y2hpbmdzIGFyZSBuZWVkZWQgZm9yIGVhY2ggZXhlcmNpc2VcbiAgICAgKHNlZSBjb21tZW50cyBpbiB0aGUgc3RpdGNoZWQgdHlwZSBhYm92ZSlcblxuICAgICBTdGl0Y2hpbmcgaXMgbmVjZXNzYXJ5IHRvIGNvbmNhdGVuYXRlIHRlcm1zXG4gICAgIGZyb20gZGlmZmVyZW50IGVkaXRvcnMsIHdoaWNoIGFyZSB0aGVuIHR5cGVjaGVja2VkLiAqL1xuICBsZXQgc3RpdGNoX3N0YXRpYyA9XG4gICAgICAoc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCB0OiBzdGl0Y2hlZChUZXJtQmFzZS5VRXhwLnQpKVxuICAgICAgOiBzdGl0Y2hlZF9zdGF0aWNzID0+IHtcbiAgICBsZXQgbWsgPSAodGVybTogVGVybUJhc2UuVUV4cC50KTogRWRpdG9yLkNhY2hlZFN0YXRpY3MudCA9PiB7XG4gICAgICAvL05PVEU6IHRoaXMgaXMgZXhwZW5zaXZlIGFuZCBfYWxtb3N0XyByZWR1bmRhbnQgdG8gdGhlIHN0YXRpY3MgaW4gRWRpdG9yXG4gICAgICBsZXQgaW5mb19tYXAgPSBTdGF0aWNzLm1rKHNldHRpbmdzLCBCdWlsdGlucy5jdHhfaW5pdCwgdGVybSk7XG4gICAgICB7dGVybSwgZXJyb3JfaWRzOiBTdGF0aWNzLk1hcC5lcnJvcl9pZHMoaW5mb19tYXApLCBpbmZvX21hcH07XG4gICAgfTtcbiAgICBsZXQgaW5zdHJ1Y3RvciA9IG1rKHQuaW5zdHJ1Y3Rvcik7XG4gICAge1xuICAgICAgdGVzdF92YWxpZGF0aW9uOiBtayh0LnRlc3RfdmFsaWRhdGlvbiksXG4gICAgICB1c2VyX2ltcGw6IG1rKHQudXNlcl9pbXBsKSxcbiAgICAgIHVzZXJfdGVzdHM6IG1rKHQudXNlcl90ZXN0cyksXG4gICAgICBwcmVsdWRlOiBpbnN0cnVjdG9yLCAvLyB3b3JrcyBhcyBsb25nIGFzIHlvdSBkb24ndCBzaGFkb3cgYW55dGhpbmcgaW4gdGhlIHByZWx1ZGVcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVnczogTGlzdC5tYXAobWssIHQuaGlkZGVuX2J1Z3MpLFxuICAgICAgaGlkZGVuX3Rlc3RzOiBtayh0LmhpZGRlbl90ZXN0cyksXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RpdGNoX3N0YXRpYyA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF9zdGF0aWMpO1xuXG4gIGxldCBwcmVsdWRlX2tleSA9IFwicHJlbHVkZVwiO1xuICBsZXQgdGVzdF92YWxpZGF0aW9uX2tleSA9IFwidGVzdF92YWxpZGF0aW9uXCI7XG4gIGxldCB1c2VyX2ltcGxfa2V5ID0gXCJ1c2VyX2ltcGxcIjtcbiAgbGV0IHVzZXJfdGVzdHNfa2V5ID0gXCJ1c2VyX3Rlc3RzXCI7XG4gIGxldCBpbnN0cnVjdG9yX2tleSA9IFwiaW5zdHJ1Y3RvclwiO1xuICBsZXQgaGlkZGVuX2J1Z3Nfa2V5ID0gbiA9PiBcImhpZGRlbl9idWdzX1wiICsrIHN0cmluZ19vZl9pbnQobik7XG4gIGxldCBoaWRkZW5fdGVzdHNfa2V5ID0gXCJoaWRkZW5fdGVzdHNcIjtcblxuICBsZXQga2V5X2Zvcl9zdGF0aWNzID0gKHN0YXRlOiBzdGF0ZSk6IHN0cmluZyA9PlxuICAgIHN3aXRjaCAoc3RhdGUucG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IHByZWx1ZGVfa2V5XG4gICAgfCBDb3JyZWN0SW1wbCA9PiBpbnN0cnVjdG9yX2tleVxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiB0ZXN0X3ZhbGlkYXRpb25fa2V5XG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IHVzZXJfdGVzdHNfa2V5XG4gICAgfCBZb3VySW1wbCA9PiB1c2VyX2ltcGxfa2V5XG4gICAgfCBIaWRkZW5CdWdzKGlkeCkgPT4gaGlkZGVuX2J1Z3Nfa2V5KGlkeClcbiAgICB8IEhpZGRlblRlc3RzID0+IGhpZGRlbl90ZXN0c19rZXlcbiAgICB9O1xuXG4gIGxldCBzcGxpY2VkX2VsYWJzID1cbiAgICAgIChzZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIHN0YXRlOiBzdGF0ZSlcbiAgICAgIDogbGlzdCgoTW9kZWxSZXN1bHRzLmtleSwgREhFeHAudCkpID0+IHtcbiAgICBsZXQge1xuICAgICAgdGVzdF92YWxpZGF0aW9uLFxuICAgICAgdXNlcl9pbXBsLFxuICAgICAgdXNlcl90ZXN0cyxcbiAgICAgIHByZWx1ZGU6IF8sXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICBoaWRkZW5fdGVzdHMsXG4gICAgfSA9XG4gICAgICBzdGl0Y2hfc3RhdGljKHNldHRpbmdzLCBzdGl0Y2hfdGVybShzdGF0ZSkpO1xuICAgIGxldCBlbGFiID0gKHM6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQpID0+XG4gICAgICBJbnRlcmZhY2UuZWxhYm9yYXRlKH5zZXR0aW5ncywgcy5pbmZvX21hcCwgcy50ZXJtKTtcbiAgICBbXG4gICAgICAodGVzdF92YWxpZGF0aW9uX2tleSwgZWxhYih0ZXN0X3ZhbGlkYXRpb24pKSxcbiAgICAgICh1c2VyX2ltcGxfa2V5LCBlbGFiKHVzZXJfaW1wbCkpLFxuICAgICAgKHVzZXJfdGVzdHNfa2V5LCBlbGFiKHVzZXJfdGVzdHMpKSxcbiAgICAgIChpbnN0cnVjdG9yX2tleSwgZWxhYihpbnN0cnVjdG9yKSksXG4gICAgICAoaGlkZGVuX3Rlc3RzX2tleSwgZWxhYihoaWRkZW5fdGVzdHMpKSxcbiAgICBdXG4gICAgQCAoXG4gICAgICBoaWRkZW5fYnVnc1xuICAgICAgfD4gTGlzdC5tYXBpKChuLCBoaWRkZW5fYnVnOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50KSA9PlxuICAgICAgICAgICAoaGlkZGVuX2J1Z3Nfa2V5KG4pLCBlbGFiKGhpZGRlbl9idWcpKVxuICAgICAgICAgKVxuICAgICk7XG4gIH07XG5cbiAgbW9kdWxlIER5bmFtaWNzSXRlbSA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBzdGF0aWNzOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50LFxuICAgICAgcmVzdWx0OiBNb2RlbFJlc3VsdC50LFxuICAgIH07XG4gICAgbGV0IGVtcHR5OiB0ID0ge3N0YXRpY3M6IEVkaXRvci5DYWNoZWRTdGF0aWNzLmVtcHR5LCByZXN1bHQ6IE5vRWxhYn07XG4gICAgbGV0IHN0YXRpY3Nfb25seSA9IChzdGF0aWNzOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50KTogdCA9PiB7XG4gICAgICBzdGF0aWNzLFxuICAgICAgcmVzdWx0OiBOb0VsYWIsXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RhdGljc19vZl9zdGljaGVkX2R5bmFtaWNzID1cbiAgICAgIChzdGF0ZTogc3RhdGUsIHM6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSk6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQgPT5cbiAgICBzd2l0Y2ggKHN0YXRlLnBvcykge1xuICAgIHwgUHJlbHVkZSA9PiBzLnByZWx1ZGUuc3RhdGljc1xuICAgIHwgQ29ycmVjdEltcGwgPT4gcy5pbnN0cnVjdG9yLnN0YXRpY3NcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gcy50ZXN0X3ZhbGlkYXRpb24uc3RhdGljc1xuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiBzLnVzZXJfdGVzdHMuc3RhdGljc1xuICAgIHwgWW91ckltcGwgPT4gcy51c2VyX2ltcGwuc3RhdGljc1xuICAgIHwgSGlkZGVuQnVncyhpZHgpID0+IExpc3QubnRoKHMuaGlkZGVuX2J1Z3MsIGlkeCkuc3RhdGljc1xuICAgIHwgSGlkZGVuVGVzdHMgPT4gcy5oaWRkZW5fdGVzdHMuc3RhdGljc1xuICAgIH07XG5cbiAgLyogR2l2ZW4gdGhlIGV2YWx1YXRpb24gcmVzdWx0cywgY29sbGVjdHMgdGhlXG4gICAgIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvciBwcm9kdWNpbmcgZHluYW1pY1xuICAgICBmZWVkYmFjayovXG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9XG4gICAgICAoXG4gICAgICAgIHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICByZXN1bHRzOiBvcHRpb24oTW9kZWxSZXN1bHRzLnQpLFxuICAgICAgKVxuICAgICAgOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkgPT4ge1xuICAgIGxldCB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgcHJlbHVkZSxcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9ID1cbiAgICAgIHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgbGV0IHJlc3VsdF9vZiA9IGtleSA9PlxuICAgICAgc3dpdGNoIChyZXN1bHRzKSB7XG4gICAgICB8IE5vbmUgPT4gTW9kZWxSZXN1bHQuTm9FbGFiXG4gICAgICB8IFNvbWUocmVzdWx0cykgPT5cbiAgICAgICAgTW9kZWxSZXN1bHRzLmxvb2t1cChyZXN1bHRzLCBrZXkpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1Nb2RlbFJlc3VsdC5Ob0VsYWIpXG4gICAgICB9O1xuXG4gICAgbGV0IHRlc3RfdmFsaWRhdGlvbiA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICBzdGF0aWNzOiB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgIHJlc3VsdDogcmVzdWx0X29mKHRlc3RfdmFsaWRhdGlvbl9rZXkpLFxuICAgICAgfTtcblxuICAgIGxldCB1c2VyX2ltcGwgPVxuICAgICAgRHluYW1pY3NJdGVtLntzdGF0aWNzOiB1c2VyX2ltcGwsIHJlc3VsdDogcmVzdWx0X29mKHVzZXJfaW1wbF9rZXkpfTtcblxuICAgIGxldCB1c2VyX3Rlc3RzID1cbiAgICAgIER5bmFtaWNzSXRlbS57c3RhdGljczogdXNlcl90ZXN0cywgcmVzdWx0OiByZXN1bHRfb2YodXNlcl90ZXN0c19rZXkpfTtcbiAgICBsZXQgcHJlbHVkZSA9IER5bmFtaWNzSXRlbS57c3RhdGljczogcHJlbHVkZSwgcmVzdWx0OiBOb0VsYWJ9O1xuICAgIGxldCBpbnN0cnVjdG9yID1cbiAgICAgIER5bmFtaWNzSXRlbS57c3RhdGljczogaW5zdHJ1Y3RvciwgcmVzdWx0OiByZXN1bHRfb2YoaW5zdHJ1Y3Rvcl9rZXkpfTtcbiAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgTGlzdC5tYXBpKFxuICAgICAgICAobiwgc3RhdGljczogRWRpdG9yLkNhY2hlZFN0YXRpY3MudCkgPT5cbiAgICAgICAgICBEeW5hbWljc0l0ZW0ue3N0YXRpY3MsIHJlc3VsdDogcmVzdWx0X29mKGhpZGRlbl9idWdzX2tleShuKSl9LFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICk7XG4gICAgbGV0IGhpZGRlbl90ZXN0cyA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICBzdGF0aWNzOiBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHJlc3VsdDogcmVzdWx0X29mKGhpZGRlbl90ZXN0c19rZXkpLFxuICAgICAgfTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9XG4gICAgICAoXG4gICAgICAgIHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICByZXN1bHRzOiBvcHRpb24oTW9kZWxSZXN1bHRzLnQpLFxuICAgICAgKVxuICAgICAgOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkgPT5cbiAgICBpZiAoc2V0dGluZ3Muc3RhdGljcyAmJiBzZXR0aW5ncy5keW5hbWljcykge1xuICAgICAgc3RpdGNoX2R5bmFtaWMoc2V0dGluZ3MsIHN0YXRlLCByZXN1bHRzKTtcbiAgICB9IGVsc2UgaWYgKHNldHRpbmdzLnN0YXRpY3MpIHtcbiAgICAgIGxldCB0ID0gc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICAgIHtcbiAgICAgICAgdGVzdF92YWxpZGF0aW9uOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudGVzdF92YWxpZGF0aW9uKSxcbiAgICAgICAgdXNlcl9pbXBsOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudXNlcl9pbXBsKSxcbiAgICAgICAgdXNlcl90ZXN0czogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LnVzZXJfdGVzdHMpLFxuICAgICAgICBpbnN0cnVjdG9yOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQuaW5zdHJ1Y3RvciksXG4gICAgICAgIHByZWx1ZGU6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5wcmVsdWRlKSxcbiAgICAgICAgaGlkZGVuX2J1Z3M6IExpc3QubWFwKER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHksIHQuaGlkZGVuX2J1Z3MpLFxuICAgICAgICBoaWRkZW5fdGVzdHM6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5oaWRkZW5fdGVzdHMpLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAge1xuICAgICAgICB0ZXN0X3ZhbGlkYXRpb246IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgdXNlcl9pbXBsOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIHVzZXJfdGVzdHM6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgaW5zdHJ1Y3RvcjogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICBwcmVsdWRlOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICAgIExpc3QuaW5pdChMaXN0Lmxlbmd0aChzdGF0ZS5lZHMuaGlkZGVuX2J1Z3MpLCBfID0+XG4gICAgICAgICAgICBEeW5hbWljc0l0ZW0uZW1wdHlcbiAgICAgICAgICApLFxuICAgICAgICBoaWRkZW5fdGVzdHM6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgIH07XG4gICAgfTtcbiAgbGV0IHN0aXRjaF9keW5hbWljID0gQ29yZS5NZW1vLmdlbmVyYWwoc3RpdGNoX2R5bmFtaWMpO1xuXG4gIC8vIE1vZHVsZSBFeHBvcnRcblxuICBsZXQgZWRpdG9yX3BwID0gKGZtdCwgZWRpdG9yOiBFZGl0b3IudCkgPT4ge1xuICAgIGxldCB6aXBwZXIgPSBlZGl0b3Iuc3RhdGUuemlwcGVyO1xuICAgIGxldCBzZXJpYWxpemF0aW9uID0gWmlwcGVyLnNob3coemlwcGVyKTtcbiAgICAvLyBsZXQgc3RyaW5nX2xpdGVyYWwgPSBcIlxcXCJcIiArKyBTdHJpbmcuZXNjYXBlZChzZXJpYWxpemF0aW9uKSArKyBcIlxcXCJcIjtcbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgc2VyaWFsaXphdGlvbik7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF9tb2R1bGUgPSAobW9kdWxlX25hbWUsIHtlZHMsIF99OiBzdGF0ZSkgPT4ge1xuICAgIGxldCBwcmVmaXggPVxuICAgICAgXCJsZXQgcHJvbXB0ID0gXCJcbiAgICAgICsrIG1vZHVsZV9uYW1lXG4gICAgICArKyBcIl9wcm9tcHQucHJvbXB0XFxuXCJcbiAgICAgICsrIFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcChlZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBwcmVmaXggKysgcmVjb3JkICsrIFwiXFxuXCI7XG4gICAgZGF0YTtcbiAgfTtcblxuICBsZXQgdHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAgPSAoZm10LCBlZGl0b3I6IEVkaXRvci50KSA9PiB7XG4gICAgbGV0IHppcHBlciA9IGVkaXRvci5zdGF0ZS56aXBwZXI7XG4gICAgbGV0IGNvZGUgPSBQcmludGVyLnRvX3N0cmluZ19iYXNpYyh6aXBwZXIpO1xuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcoZm10LCBcIlxcXCJcIiArKyBTdHJpbmcuZXNjYXBlZChjb2RlKSArKyBcIlxcXCJcIik7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF90cmFuc2l0aW9uYXJ5X21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IHByZWZpeCA9XG4gICAgICBcImxldCBwcm9tcHQgPSBcIlxuICAgICAgKysgbW9kdWxlX25hbWVcbiAgICAgICsrIFwiX3Byb21wdC5wcm9tcHRcXG5cIlxuICAgICAgKysgXCJsZXQgZXhlcmNpc2U6IEV4ZXJjaXNlLnNwZWMgPSBFeGVyY2lzZS50cmFuc2l0aW9uKFwiO1xuICAgIGxldCByZWNvcmQgPSBzaG93X3AodHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBwcmVmaXggKysgcmVjb3JkICsrIFwiKVxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF9ncmFkaW5nX21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IGhlYWRlciA9IG91dHB1dF9oZWFkZXJfZ3JhZGluZyhtb2R1bGVfbmFtZSk7XG4gICAgbGV0IHByZWZpeCA9IFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcChlZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBoZWFkZXIgKysgcHJlZml4ICsrIHJlY29yZCArKyBcIlxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IGJsYW5rX3NwZWMgPVxuICAgICAgKFxuICAgICAgICB+dGl0bGUsXG4gICAgICAgIH5tb2R1bGVfbmFtZSxcbiAgICAgICAgfnBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgfnJlcXVpcmVkX3Rlc3RzLFxuICAgICAgICB+cHJvdmlkZWRfdGVzdHMsXG4gICAgICAgIH5udW1fd3JvbmdfaW1wbHMsXG4gICAgICApID0+IHtcbiAgICBsZXQgcHJlbHVkZSA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IGNvcnJlY3RfaW1wbCA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IHlvdXJfdGVzdHNfdGVzdHMgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCB5b3VyX2ltcGwgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICBMaXN0LmluaXQoXG4gICAgICAgIG51bV93cm9uZ19pbXBscyxcbiAgICAgICAgaSA9PiB7XG4gICAgICAgICAgbGV0IHppcHBlciA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgICAgICAge2ltcGw6IHppcHBlciwgaGludDogXCJUT0RPOiBoaW50IFwiICsrIHN0cmluZ19vZl9pbnQoaSl9O1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlc3RzID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICB7XG4gICAgICB0aXRsZSxcbiAgICAgIHZlcnNpb246IDEsXG4gICAgICBtb2R1bGVfbmFtZSxcbiAgICAgIHByb21wdDogRXhlcmNpc2VFbnYuZGVmYXVsdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiB5b3VyX3Rlc3RzX3Rlc3RzLFxuICAgICAgICByZXF1aXJlZDogcmVxdWlyZWRfdGVzdHMsXG4gICAgICAgIHByb3ZpZGVkOiBwcm92aWRlZF90ZXN0cyxcbiAgICAgIH0sXG4gICAgICB5b3VyX2ltcGwsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0czoge1xuICAgICAgICB0ZXN0czogaGlkZGVuX3Rlc3RzX3Rlc3RzLFxuICAgICAgICBoaW50czogW10sXG4gICAgICB9LFxuICAgICAgc3ludGF4X3Rlc3RzOiBbXSxcbiAgICB9O1xuICB9O1xuXG4gIC8vIEZyb20gU3RvcmVcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgZXhlcmNpc2VfZXhwb3J0ID0ge1xuICAgIGN1cl9leGVyY2lzZToga2V5LFxuICAgIGV4ZXJjaXNlX2RhdGE6IGxpc3QoKGtleSwgcGVyc2lzdGVudF9zdGF0ZSkpLFxuICB9O1xuXG4gIGxldCBzZXJpYWxpemVfZXhlcmNpc2UgPSAoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgIHw+IHNleHBfb2ZfcGVyc2lzdGVudF9zdGF0ZVxuICAgIHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIH07XG5cbiAgbGV0IGRlc2VyaWFsaXplX2V4ZXJjaXNlID0gKGRhdGEsIH5zcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgZGF0YVxuICAgIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmdcbiAgICB8PiBwZXJzaXN0ZW50X3N0YXRlX29mX3NleHBcbiAgICB8PiB1bnBlcnNpc3Rfc3RhdGUofnNwZWMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICB9O1xuXG4gIGxldCBkZXNlcmlhbGl6ZV9leGVyY2lzZV9leHBvcnQgPSBkYXRhID0+IHtcbiAgICBkYXRhIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gZXhlcmNpc2VfZXhwb3J0X29mX3NleHA7XG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIFNleHBsaWIuU3RkO1xub3BlbiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LlByaW1pdGl2ZXM7XG5cbm1vZHVsZSBGID0gKEV4ZXJjaXNlRW52OiBFeGVyY2lzZS5FeGVyY2lzZUVudikgPT4ge1xuICBvcGVuIEV4ZXJjaXNlLkYoRXhlcmNpc2VFbnYpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwZXJjZW50YWdlID0gZmxvYXQ7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb2ludHMgPSBmbG9hdDtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHNjb3JlID0gKHBvaW50cywgcG9pbnRzKTtcblxuICBsZXQgc2NvcmVfb2ZfcGVyY2VudCA9IChwZXJjZW50LCBtYXhfcG9pbnRzKSA9PiB7XG4gICAgbGV0IG1heF9wb2ludHMgPSBmbG9hdF9vZl9pbnQobWF4X3BvaW50cyk7XG4gICAgKHBlcmNlbnQgKi4gbWF4X3BvaW50cywgbWF4X3BvaW50cyk7XG4gIH07XG5cbiAgbW9kdWxlIFRlc3RWYWxpZGF0aW9uUmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIHRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpLFxuICAgICAgcmVxdWlyZWQ6IGludCxcbiAgICAgIHByb3ZpZGVkOiBpbnQsXG4gICAgfTtcblxuICAgIGxldCBtayA9IChlZHM6IGVkcywgdGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpID0+IHtcbiAgICAgIHtcbiAgICAgICAgdGVzdF9yZXN1bHRzLFxuICAgICAgICByZXF1aXJlZDogZWRzLnlvdXJfdGVzdHMucmVxdWlyZWQsXG4gICAgICAgIHByb3ZpZGVkOiBlZHMueW91cl90ZXN0cy5wcm92aWRlZCxcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCk6IHBlcmNlbnRhZ2UgPT4ge1xuICAgICAgc3dpdGNoIChyZXBvcnQudGVzdF9yZXN1bHRzKSB7XG4gICAgICB8IE5vbmUgPT4gMC4wXG4gICAgICB8IFNvbWUodGVzdF9yZXN1bHRzKSA9PlxuICAgICAgICBsZXQgbnVtX3Rlc3RzID0gZmxvYXRfb2ZfaW50KHRlc3RfcmVzdWx0cy50b3RhbCk7XG4gICAgICAgIGxldCByZXF1aXJlZCA9IGZsb2F0X29mX2ludChyZXBvcnQucmVxdWlyZWQpO1xuICAgICAgICBsZXQgcHJvdmlkZWQgPSBmbG9hdF9vZl9pbnQocmVwb3J0LnByb3ZpZGVkKTtcbiAgICAgICAgbGV0IG51bV9wYXNzaW5nID0gZmxvYXRfb2ZfaW50KHRlc3RfcmVzdWx0cy5wYXNzaW5nKTtcblxuICAgICAgICByZXF1aXJlZCAtLiBwcm92aWRlZCA8PSAwLjAgfHwgbnVtX3Rlc3RzIDw9IDAuMFxuICAgICAgICAgID8gMC4wXG4gICAgICAgICAgOiBudW1fcGFzc2luZ1xuICAgICAgICAgICAgLy4gbnVtX3Rlc3RzXG4gICAgICAgICAgICAqLiAoXG4gICAgICAgICAgICAgIEZsb2F0Lm1heChcbiAgICAgICAgICAgICAgICAwLixcbiAgICAgICAgICAgICAgICBGbG9hdC5taW4obnVtX3Rlc3RzIC0uIHByb3ZpZGVkLCByZXF1aXJlZCAtLiBwcm92aWRlZCksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLy4gKHJlcXVpcmVkIC0uIHByb3ZpZGVkKVxuICAgICAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGxldCB0ZXN0X3N1bW1hcnlfc3RyID0gKHRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCkgPT4ge1xuICAgICAgVGVzdFJlc3VsdHMucmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgICAgICB+bj10ZXN0X3Jlc3VsdHMudG90YWwsXG4gICAgICAgIH5wPXRlc3RfcmVzdWx0cy5mYWlsaW5nLFxuICAgICAgICB+cT10ZXN0X3Jlc3VsdHMudW5maW5pc2hlZCxcbiAgICAgICAgfm5fc3RyPVwidGVzdFwiLFxuICAgICAgICB+bnNfc3RyPVwidGVzdHNcIixcbiAgICAgICAgfnBfc3RyPVwiZmFpbGluZ1wiLFxuICAgICAgICB+cV9zdHI9XCJpbmRldGVybWluYXRlXCIsXG4gICAgICAgIH5yX3N0cj1cInZhbGlkXCIsXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIE11dGF0aW9uVGVzdGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7cmVzdWx0czogbGlzdCgoVGVzdFN0YXR1cy50LCBzdHJpbmcpKX07XG5cbiAgICBsZXQgaGlkZGVuX2J1Z19zdGF0dXMgPVxuICAgICAgICAoXG4gICAgICAgICAgdGVzdF92YWxpZGF0aW9uX2RhdGE6IER5bmFtaWNzSXRlbS50LFxuICAgICAgICAgIGhpZGRlbl9idWdfZGF0YTogRHluYW1pY3NJdGVtLnQsXG4gICAgICAgIClcbiAgICAgICAgOiBUZXN0U3RhdHVzLnQgPT4ge1xuICAgICAgc3dpdGNoIChcbiAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHRlc3RfdmFsaWRhdGlvbl9kYXRhLnJlc3VsdCksXG4gICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhoaWRkZW5fYnVnX2RhdGEucmVzdWx0KSxcbiAgICAgICkge1xuICAgICAgfCAoTm9uZSwgXylcbiAgICAgIHwgKF8sIE5vbmUpID0+IEluZGV0XG4gICAgICB8IChTb21lKHRlc3RfdmFsaWRhdGlvbl9kYXRhKSwgU29tZShoaWRkZW5fYnVnX2RhdGEpKSA9PlxuICAgICAgICBsZXQgdmFsaWRhdGlvbl90ZXN0X21hcCA9IHRlc3RfdmFsaWRhdGlvbl9kYXRhLnRlc3RfbWFwO1xuICAgICAgICBsZXQgaGlkZGVuX2J1Z190ZXN0X21hcCA9IGhpZGRlbl9idWdfZGF0YS50ZXN0X21hcDtcblxuICAgICAgICBsZXQgZm91bmQgPVxuICAgICAgICAgIGhpZGRlbl9idWdfdGVzdF9tYXBcbiAgICAgICAgICB8PiBMaXN0LmZpbmRfb3B0KCgoaWQsIGluc3RhbmNlX3JlcG9ydHMpKSA9PiB7XG4gICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gVGVzdE1hcC5qb2ludF9zdGF0dXMoaW5zdGFuY2VfcmVwb3J0cyk7XG4gICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLlBhc3NcbiAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5JbmRldCA9PiBmYWxzZVxuICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkZhaWwgPT5cbiAgICAgICAgICAgICAgICAgbGV0IHZhbGlkYXRpb25fdGVzdF9yZXBvcnRzID1cbiAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uX3Rlc3RfbWFwIHw+IFRlc3RNYXAubG9va3VwKGlkKTtcbiAgICAgICAgICAgICAgICAgc3dpdGNoICh2YWxpZGF0aW9uX3Rlc3RfcmVwb3J0cykge1xuICAgICAgICAgICAgICAgICB8IE5vbmUgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgfCBTb21lKHJlcG9ydHMpID0+XG4gICAgICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IFRlc3RNYXAuam9pbnRfc3RhdHVzKHJlcG9ydHMpO1xuICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLlBhc3MgPT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5GYWlsXG4gICAgICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkluZGV0ID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgfSk7XG4gICAgICAgIHN3aXRjaCAoZm91bmQpIHtcbiAgICAgICAgfCBOb25lID0+IEZhaWxcbiAgICAgICAgfCBTb21lKF8pID0+IFBhc3NcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTsgLy8gZm9yIGVhY2ggaGlkZGVuIGJ1Z1xuICAgIC8vICAgaW4gdGhlIHRlc3QgcmVzdWx0cyBkYXRhLCBmaW5kIGEgdGVzdCBJRCB0aGF0IHBhc3NlcyB0ZXN0IHZhbGlkYXRpb24gYnV0IGZhaWxzIGFnYWluc3RcblxuICAgIGxldCBtayA9XG4gICAgICAgIChcbiAgICAgICAgICB+dGVzdF92YWxpZGF0aW9uOiBEeW5hbWljc0l0ZW0udCxcbiAgICAgICAgICB+aGlkZGVuX2J1Z3Nfc3RhdGU6IGxpc3Qod3JvbmdfaW1wbChFZGl0b3IudCkpLFxuICAgICAgICAgIH5oaWRkZW5fYnVnczogbGlzdChEeW5hbWljc0l0ZW0udCksXG4gICAgICAgIClcbiAgICAgICAgOiB0ID0+IHtcbiAgICAgIGxldCByZXN1bHRzID1cbiAgICAgICAgTGlzdC5tYXAoaGlkZGVuX2J1Z19zdGF0dXModGVzdF92YWxpZGF0aW9uKSwgaGlkZGVuX2J1Z3MpO1xuICAgICAgbGV0IGhpbnRzID1cbiAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgKHdyb25nX2ltcGw6IHdyb25nX2ltcGwoRWRpdG9yLnQpKSA9PiB3cm9uZ19pbXBsLmhpbnQsXG4gICAgICAgICAgaGlkZGVuX2J1Z3Nfc3RhdGUsXG4gICAgICAgICk7XG4gICAgICBsZXQgcmVzdWx0cyA9IExpc3QuY29tYmluZShyZXN1bHRzLCBoaW50cyk7XG4gICAgICB7cmVzdWx0czogcmVzdWx0c307XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCk6IHBlcmNlbnRhZ2UgPT4ge1xuICAgICAgbGV0IHJlc3VsdHMgPSByZXBvcnQucmVzdWx0cztcbiAgICAgIGxldCBudW1fd3JvbmdfaW1wbHMgPSBMaXN0Lmxlbmd0aChyZXN1bHRzKTtcbiAgICAgIGxldCBudW1fcGFzc2VkID1cbiAgICAgICAgcmVzdWx0c1xuICAgICAgICB8PiBMaXN0LmZpbmRfYWxsKCgoc3RhdHVzLCBfKSkgPT4gc3RhdHVzID09IFRlc3RTdGF0dXMuUGFzcylcbiAgICAgICAgfD4gTGlzdC5sZW5ndGg7XG4gICAgICBzd2l0Y2ggKG51bV93cm9uZ19pbXBscykge1xuICAgICAgfCAwID0+IDEuMFxuICAgICAgfCBfID0+IGZsb2F0X29mX2ludChudW1fcGFzc2VkKSAvLiBmbG9hdF9vZl9pbnQobnVtX3dyb25nX2ltcGxzKVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgLy8gVE9ETyBtb3ZlIHRvIHNlcGFyYXRlIG1vZHVsZVxuXG4gICAgbGV0IHN1bW1hcnlfc3RyID0gKH50b3RhbCwgfmZvdW5kKTogc3RyaW5nID0+IHtcbiAgICAgIFRlc3RSZXN1bHRzLnJlc3VsdF9zdW1tYXJ5X3N0cihcbiAgICAgICAgfm49dG90YWwsXG4gICAgICAgIH5wPWZvdW5kLFxuICAgICAgICB+cT0wLFxuICAgICAgICB+bl9zdHI9XCJidWdcIixcbiAgICAgICAgfm5zX3N0cj1cImJ1Z3NcIixcbiAgICAgICAgfnBfc3RyPVwiZXhwb3NlZFwiLFxuICAgICAgICB+cV9zdHI9XCJcIixcbiAgICAgICAgfnJfc3RyPVwidW5yZXZlYWxlZFwiLFxuICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBTeW50YXhSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgaGludGVkX3Jlc3VsdHM6IGxpc3QoKGJvb2wsIGhpbnQpKSxcbiAgICAgIHBlcmNlbnRhZ2UsXG4gICAgfTtcblxuICAgIGxldCBtayA9ICh+eW91cl9pbXBsOiBFZGl0b3IudCwgfnRlc3RzOiBzeW50YXhfdGVzdHMpOiB0ID0+IHtcbiAgICAgIGxldCB1c2VyX2ltcGxfdGVybSA9XG4gICAgICAgIE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oeW91cl9pbXBsLnN0YXRlLnppcHBlcikgfD4gZnN0O1xuXG4gICAgICBsZXQgcHJlZGljYXRlcyA9XG4gICAgICAgIExpc3QubWFwKCgoXywgcCkpID0+IFN5bnRheFRlc3QucHJlZGljYXRlX2ZuKHApLCB0ZXN0cyk7XG4gICAgICBsZXQgaGludHMgPSBMaXN0Lm1hcCgoKGgsIF8pKSA9PiBoLCB0ZXN0cyk7XG4gICAgICBsZXQgc3ludGF4X3Jlc3VsdHMgPSBTeW50YXhUZXN0LmNoZWNrKHVzZXJfaW1wbF90ZXJtLCBwcmVkaWNhdGVzKTtcblxuICAgICAge1xuICAgICAgICBoaW50ZWRfcmVzdWx0czpcbiAgICAgICAgICBMaXN0Lm1hcDIoKHIsIGgpID0+IChyLCBoKSwgc3ludGF4X3Jlc3VsdHMucmVzdWx0cywgaGludHMpLFxuICAgICAgICBwZXJjZW50YWdlOiBzeW50YXhfcmVzdWx0cy5wZXJjZW50YWdlLFxuICAgICAgfTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBJbXBsR3JhZGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBoaW50czogbGlzdChzdHJpbmcpLFxuICAgICAgdGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCksXG4gICAgICBoaW50ZWRfcmVzdWx0czogbGlzdCgoVGVzdFN0YXR1cy50LCBzdHJpbmcpKSxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKH5oaW50czogbGlzdChzdHJpbmcpLCB+dGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpOiB0ID0+IHtcbiAgICAgIGxldCBoaW50ZWRfcmVzdWx0cyA9XG4gICAgICAgIHN3aXRjaCAodGVzdF9yZXN1bHRzKSB7XG4gICAgICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+XG4gICAgICAgICAgbGV0IHN0YXR1c2VzID0gdGVzdF9yZXN1bHRzLnN0YXR1c2VzO1xuICAgICAgICAgIFV0aWwuTGlzdFV0aWwuemlwX2RlZmF1bHRzKFxuICAgICAgICAgICAgc3RhdHVzZXMsXG4gICAgICAgICAgICBoaW50cyxcbiAgICAgICAgICAgIEhhejNsY29yZS5UZXN0U3RhdHVzLkluZGV0LFxuICAgICAgICAgICAgXCJObyBoaW50IGF2YWlsYWJsZS5cIixcbiAgICAgICAgICApO1xuXG4gICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgIFV0aWwuTGlzdFV0aWwuemlwX2RlZmF1bHRzKFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBoaW50cyxcbiAgICAgICAgICAgIEhhejNsY29yZS5UZXN0U3RhdHVzLkluZGV0LFxuICAgICAgICAgICAgXCJFeGVyY2lzZSBjb25maWd1cmF0aW9uIGVycm9yOiBIaW50IHdpdGhvdXQgYSB0ZXN0LlwiLFxuICAgICAgICAgIClcbiAgICAgICAgfTtcbiAgICAgIHtoaW50cywgdGVzdF9yZXN1bHRzLCBoaW50ZWRfcmVzdWx0c307XG4gICAgfTtcblxuICAgIGxldCB0b3RhbCA9IChyZXBvcnQ6IHQpID0+IExpc3QubGVuZ3RoKHJlcG9ydC5oaW50ZWRfcmVzdWx0cyk7XG4gICAgbGV0IG51bV9wYXNzZWQgPSAocmVwb3J0OiB0KSA9PiB7XG4gICAgICByZXBvcnQuaGludGVkX3Jlc3VsdHNcbiAgICAgIHw+IExpc3QuZmluZF9hbGwoKChzdGF0dXMsIF8pKSA9PiBzdGF0dXMgPT0gVGVzdFN0YXR1cy5QYXNzKVxuICAgICAgfD4gTGlzdC5sZW5ndGg7XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCwgc3ludGF4X3JlcG9ydDogU3ludGF4UmVwb3J0LnQpOiBwZXJjZW50YWdlID0+IHtcbiAgICAgIHN5bnRheF9yZXBvcnQucGVyY2VudGFnZVxuICAgICAgKi4gKGZsb2F0X29mX2ludChudW1fcGFzc2VkKHJlcG9ydCkpIC8uIGZsb2F0X29mX2ludCh0b3RhbChyZXBvcnQpKSk7XG4gICAgfTtcblxuICAgIGxldCB0ZXN0X3N1bW1hcnlfc3RyID0gKHRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCkgPT4ge1xuICAgICAgVGVzdFJlc3VsdHMucmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgICAgICB+bj10ZXN0X3Jlc3VsdHMudG90YWwsXG4gICAgICAgIH5wPXRlc3RfcmVzdWx0cy5mYWlsaW5nLFxuICAgICAgICB+cT10ZXN0X3Jlc3VsdHMudW5maW5pc2hlZCxcbiAgICAgICAgfm5fc3RyPVwidGVzdFwiLFxuICAgICAgICB+bnNfc3RyPVwidGVzdHNcIixcbiAgICAgICAgfnBfc3RyPVwiZmFpbGluZ1wiLFxuICAgICAgICB+cV9zdHI9XCJpbmRldGVybWluYXRlXCIsXG4gICAgICAgIH5yX3N0cj1cInZhbGlkXCIsXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIEdyYWRpbmdSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgdGVzdF92YWxpZGF0aW9uX3JlcG9ydDogVGVzdFZhbGlkYXRpb25SZXBvcnQudCxcbiAgICAgIG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0OiBNdXRhdGlvblRlc3RpbmdSZXBvcnQudCxcbiAgICAgIHN5bnRheF9yZXBvcnQ6IFN5bnRheFJlcG9ydC50LFxuICAgICAgaW1wbF9ncmFkaW5nX3JlcG9ydDogSW1wbEdyYWRpbmdSZXBvcnQudCxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKGVkczogZWRzLCB+c3RpdGNoZWRfZHluYW1pY3M6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSkgPT4ge1xuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uOiBlZHMucG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgdGVzdF92YWxpZGF0aW9uX3JlcG9ydDpcbiAgICAgICAgVGVzdFZhbGlkYXRpb25SZXBvcnQubWsoXG4gICAgICAgICAgZWRzLFxuICAgICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhzdGl0Y2hlZF9keW5hbWljcy50ZXN0X3ZhbGlkYXRpb24ucmVzdWx0KSxcbiAgICAgICAgKSxcbiAgICAgIG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0OlxuICAgICAgICBNdXRhdGlvblRlc3RpbmdSZXBvcnQubWsoXG4gICAgICAgICAgfnRlc3RfdmFsaWRhdGlvbj1zdGl0Y2hlZF9keW5hbWljcy50ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgICAgfmhpZGRlbl9idWdzX3N0YXRlPWVkcy5oaWRkZW5fYnVncyxcbiAgICAgICAgICB+aGlkZGVuX2J1Z3M9c3RpdGNoZWRfZHluYW1pY3MuaGlkZGVuX2J1Z3MsXG4gICAgICAgICksXG4gICAgICBzeW50YXhfcmVwb3J0OlxuICAgICAgICBTeW50YXhSZXBvcnQubWsofnlvdXJfaW1wbD1lZHMueW91cl9pbXBsLCB+dGVzdHM9ZWRzLnN5bnRheF90ZXN0cyksXG4gICAgICBpbXBsX2dyYWRpbmdfcmVwb3J0OlxuICAgICAgICBJbXBsR3JhZGluZ1JlcG9ydC5tayhcbiAgICAgICAgICB+aGludHM9ZWRzLmhpZGRlbl90ZXN0cy5oaW50cyxcbiAgICAgICAgICB+dGVzdF9yZXN1bHRzPVxuICAgICAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHN0aXRjaGVkX2R5bmFtaWNzLmhpZGRlbl90ZXN0cy5yZXN1bHQpLFxuICAgICAgICApLFxuICAgIH07XG5cbiAgICBsZXQgb3ZlcmFsbF9zY29yZSA9XG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgICAgICB0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0LFxuICAgICAgICAgICAgbXV0YXRpb25fdGVzdGluZ19yZXBvcnQsXG4gICAgICAgICAgICBzeW50YXhfcmVwb3J0LFxuICAgICAgICAgICAgaW1wbF9ncmFkaW5nX3JlcG9ydCxcbiAgICAgICAgICAgIF8sXG4gICAgICAgICAgfTogdCxcbiAgICAgICAgKVxuICAgICAgICA6IHNjb3JlID0+IHtcbiAgICAgIGxldCAodHZfcG9pbnRzLCB0dl9tYXgpID1cbiAgICAgICAgc2NvcmVfb2ZfcGVyY2VudChcbiAgICAgICAgICBUZXN0VmFsaWRhdGlvblJlcG9ydC5wZXJjZW50YWdlKHRlc3RfdmFsaWRhdGlvbl9yZXBvcnQpLFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbi50ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgICk7XG4gICAgICBsZXQgKG10X3BvaW50cywgbXRfbWF4KSA9XG4gICAgICAgIHNjb3JlX29mX3BlcmNlbnQoXG4gICAgICAgICAgTXV0YXRpb25UZXN0aW5nUmVwb3J0LnBlcmNlbnRhZ2UobXV0YXRpb25fdGVzdGluZ19yZXBvcnQpLFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbi5tdXRhdGlvbl90ZXN0aW5nLFxuICAgICAgICApO1xuICAgICAgbGV0IChpZ19wb2ludHMsIGlnX21heCkgPVxuICAgICAgICBzY29yZV9vZl9wZXJjZW50KFxuICAgICAgICAgIEltcGxHcmFkaW5nUmVwb3J0LnBlcmNlbnRhZ2UoaW1wbF9ncmFkaW5nX3JlcG9ydCwgc3ludGF4X3JlcG9ydCksXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLmltcGxfZ3JhZGluZyxcbiAgICAgICAgKTtcbiAgICAgIGxldCB0b3RhbF9wb2ludHMgPSB0dl9wb2ludHMgKy4gbXRfcG9pbnRzICsuIGlnX3BvaW50cztcbiAgICAgIGxldCBtYXhfcG9pbnRzID0gdHZfbWF4ICsuIG10X21heCArLiBpZ19tYXg7XG4gICAgICAodG90YWxfcG9pbnRzLCBtYXhfcG9pbnRzKTtcbiAgICB9O1xuICB9O1xufTtcbiIsIm1vZHVsZSBFeGVyY2lzZUVudiA9IHtcbiAgdHlwZSBub2RlID0gdW5pdDtcbiAgbGV0IGRlZmF1bHQgPSAoKTtcbiAgbGV0IG91dHB1dF9oZWFkZXIgPSBFeGVyY2lzZS5vdXRwdXRfaGVhZGVyX2dyYWRpbmc7XG59O1xuXG5tb2R1bGUgRXhlcmNpc2UgPSBFeGVyY2lzZS5GKEV4ZXJjaXNlRW52KTtcblxubW9kdWxlIEdyYWRpbmcgPSBHcmFkaW5nLkYoRXhlcmNpc2VFbnYpO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMvMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgZGVidWcgPVxuICBsZXQgX0RFQlVHID1cbiAgICB0cnlcbiAgICAgIFNvbWUoU3lzLmdldGVudiBcIkRFQlVHXCIpXG4gICAgd2l0aCBfIC0+IE5vbmVcbiAgYW5kIF9PTURfREVCVUcgPVxuICAgIHRyeVxuICAgICAgU29tZShTeXMuZ2V0ZW52IFwiT01EX0RFQlVHXCIpXG4gICAgd2l0aCBfIC0+IE5vbmVcbiAgaW5cbiAgbWF0Y2ggX0RFQlVHLCBfT01EX0RFQlVHIHdpdGhcbiAgfCBfLCBTb21lIFwiZmFsc2VcIiAtPlxuICAgICBmYWxzZVxuICB8IFNvbWUgXywgTm9uZSAtPlxuICAgICBlcHJpbnRmIFwib21kOiBkZWJ1ZyBtb2RlIGFjdGl2YXRlZCBiZWNhdXNlIERFQlVHIGlzIHNldCwgXFxcbiAgICAgICAgICAgICAgeW91IGNhbiBkZWFjdGl2YXRlIHRoZSBtb2RlIGJ5IHVuc2V0dGluZyBERUJVRyBcXFxuICAgICAgICAgICAgICBvciBieSBzZXR0aW5nIE9NRF9ERUJVRyB0byB0aGUgc3RyaW5nIFxcXCJmYWxzZVxcXCIuXFxuJSFcIjtcbiAgICAgdHJ1ZVxuICB8IE5vbmUsIE5vbmUgLT5cbiAgICAgZmFsc2VcbiAgfCBfLCBTb21lIF8gLT5cbiAgICAgZXByaW50ZiBcIm9tZDogZGVidWcgbW9kZSBhY3RpdmF0ZWQgYmVjYXVzZSBPTURfREVCVUcgaXMgc2V0XG4gICAgICAgICAgICAgIHRvIGEgdmFsdWUgdGhhdCBpc24ndCB0aGUgc3RyaW5nIFxcXCJmYWxzZVxcXCIuXFxuJSFcIjtcbiAgICAgdHJ1ZVxuXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nXG5cbmxldCB3YXJuID8od2U9ZmFsc2UpIG1zZyA9XG4gIGlmIHdlIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgbXNnKVxuICBlbHNlXG4gICAgZXByaW50ZiBcIihPTUQpIFdhcm5pbmc6ICVzXFxuJSFcIiBtc2dcblxuXG5sZXQgdHJhY2tmaXggPVxuICB0cnlcbiAgICBpZ25vcmUoU3lzLmdldGVudiBcIk9NRF9GSVhcIik7XG4gICAgZXByaW50ZiBcIm9tZDogdHJhY2tpbmcgbW9kZSBhY3RpdmF0ZWQ6IHRva2VuIGxpc3QgYXJlIHZlcnkgb2Z0ZW4gY2hlY2tlZCwgXFxcbiAgICAgICAgICAgICBpdCBtaWdodCB0YWtlIGEgKnZlcnkqIGxvbmcgdGltZSBpZiB5b3VyIGlucHV0IGlzIGxhcmdlLlxcbiUhXCI7XG4gICAgdHJ1ZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGZhbHNlXG5cbmxldCBfID0gaWYgZGVidWcgdGhlbiBQcmludGV4Yy5yZWNvcmRfYmFja3RyYWNlIHRydWVcblxubGV0IHJhaXNlID1cbiAgaWYgZGVidWcgdGhlblxuICAgIChmdW4gZSAtPlxuICAgICAgIGVwcmludGYgXCIoT01EKSBFeGNlcHRpb24gcmFpc2VkOiAlc1xcbiUhXCIgKFByaW50ZXhjLnRvX3N0cmluZyBlKTtcbiAgICAgICByYWlzZSBlKVxuICBlbHNlXG4gICAgcmFpc2VcblxubW9kdWxlIFN0cmluZ1NldCA6IHNpZ1xuICBpbmNsdWRlIFNldC5TIHdpdGggdHlwZSBlbHQgPSBzdHJpbmdcbiAgdmFsIG9mX2xpc3QgOiBlbHQgbGlzdCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXQuTWFrZShTdHJpbmcpXG4gIGxldCBvZl9saXN0IGwgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIHIgZSAtPiBhZGQgZSByKSBlbXB0eSBsXG5lbmRcblxuXG50eXBlICdhIHNwbGl0ID0gJ2EgbGlzdCAtPiAnYSBzcGxpdF9hY3Rpb25cbmFuZCAnYSBzcGxpdF9hY3Rpb24gPVxuICB8IENvbnRpbnVlXG4gIHwgQ29udGludWVfd2l0aCBvZiAnYSBsaXN0ICogJ2EgbGlzdFxuICB8IFNwbGl0IG9mICdhIGxpc3QgKiAnYSBsaXN0XG5cblxubGV0IGZzcGxpdF9yZXYgPyhleGNsPShmdW4gXyAtPiBmYWxzZSkpIH4oZjonYSBzcGxpdCkgbFxuICAgIDogKCdhIGxpc3QgKiAnYSBsaXN0KSBvcHRpb24gPVxuICBsZXQgcmVjIGxvb3AgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGYgW10gd2l0aFxuICAgICAgICAgIHwgU3BsaXQobGVmdCwgcmlnaHQpIC0+ICAgICAgU29tZShsZWZ0QGFjY3UsIHJpZ2h0KVxuICAgICAgICAgIHwgQ29udGludWVfd2l0aChsZWZ0LCB0bCkgLT4gbG9vcCAobGVmdEBhY2N1KSB0bFxuICAgICAgICAgIHwgQ29udGludWUgLT4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICBlbmRcbiAgICB8IGU6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgZXhjbCBsIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2UgbWF0Y2ggZiBsIHdpdGhcbiAgICAgICAgICB8IFNwbGl0KGxlZnQsIHJpZ2h0KSAtPiAgICAgIFNvbWUobGVmdEBhY2N1LCByaWdodClcbiAgICAgICAgICB8IENvbnRpbnVlX3dpdGgobGVmdCwgdGwpIC0+IGxvb3AgKGxlZnRAYWNjdSkgdGxcbiAgICAgICAgICB8IENvbnRpbnVlIC0+ICAgICAgICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIHRsXG4gIGluIGxvb3AgW10gbFxuXG5sZXQgZnNwbGl0ID8oZXhjbD0oZnVuIF8gLT4gZmFsc2UpKSB+ZiBsID1cbiAgbWF0Y2ggZnNwbGl0X3JldiB+ZXhjbDpleGNsIH5mOmYgbCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUocmV2LCBsKSAtPiBTb21lKExpc3QucmV2IHJldiwgbClcblxubGV0IGlkX29mX3N0cmluZyBpZHMgcyA9XG4gIGxldCBuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBvdXQgPSBCdWZmZXIuY3JlYXRlIDAgaW5cbiAgKCogUHV0IFtzXSBpbnRvIFtiXSwgcmVwbGFjaW5nIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3aXRoIGRhc2hlcy4gKilcbiAgbGV0IHJlYyBsb29wIHN0YXJ0ZWQgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiAoKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG91dCBjIDtcbiAgICAgICAgbG9vcCB0cnVlIChpICsgMSlcbiAgICAgICgqIERvbid0IHdhbnQgdG8gc3RhcnQgd2l0aCBkYXNoZXMuICopXG4gICAgICB8IF8gd2hlbiBub3Qgc3RhcnRlZCAtPlxuICAgICAgICBsb29wIGZhbHNlIChpICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb3V0ICctJyA7XG4gICAgICAgIGxvb3AgZmFsc2UgKGkgKyAxKVxuICBpblxuICBsb29wIGZhbHNlIDAgO1xuICBsZXQgcycgPSBCdWZmZXIuY29udGVudHMgb3V0IGluXG4gIGlmIHMnID0gXCJcIiB0aGVuIFwiXCJcbiAgZWxzZVxuICAgICgqIEZpbmQgb3V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gW3MnXSB0aGF0IGlzbid0IGEgZGFzaC4gKilcbiAgICBsZXQgbGFzdF90cmFpbGluZyA9IFxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpIDwgMCB8fCBzJy5baV0gPD4gJy0nIHRoZW4gaVxuICAgICAgICBlbHNlIGxvb3AgKGkgLSAxKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKFN0cmluZy5sZW5ndGggcycgLSAxKVxuICAgIGluXG4gICAgKCogVHJpbSB0cmFpbGluZyBkYXNoZXMuICopXG4gICAgaWRzI21hbmdsZSBAQCBTdHJpbmcuc3ViIHMnIDAgKGxhc3RfdHJhaWxpbmcgKyAxKVxuXG4oKiBvbmx5IGNvbnZlcnQgd2hlbiBcIm5lY2Vzc2FyeVwiICopXG5sZXQgaHRtbGVudGl0aWVzID8obWQ9ZmFsc2UpIHMgPVxuICBsZXQgbW9kdWxlIEJyZWFrID0gc3RydWN0IGV4Y2VwdGlvbiBCcmVhayBlbmQgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICgpXG4gICAgZWxzZVxuICAgICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAoICcwJyAuLiAnOScgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyApIGFzIGMgLT4gQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgICB8ICdcIicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZxdW90O1wiXG4gICAgICAgIHwgJ1xcJycgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiYjMzk7XCJcbiAgICAgICAgfCAnJicgLT5cbiAgICAgICAgICAgIGlmIG1kIHRoZW5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG1hdGNoIHMuW2krMV0gd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnIycgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmZiBqID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzLltqXSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IGZmIChzdWNjIGopXG4gICAgICAgICAgICAgICAgICAgICAgfCAnOycgLT4gKClcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZmYgKGkrMilcbiAgICAgICAgICAgICAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmZiBqID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzLltqXSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPiBmZiAoc3VjYyBqKVxuICAgICAgICAgICAgICAgICAgICAgIHwgJzsnIC0+ICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIEJyZWFrLkJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGZmIChpKzIpXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJlwiXG4gICAgICAgICAgICAgICAgd2l0aCBfIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImYW1wO1wiXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmFtcDtcIlxuICAgICAgICB8ICc8JyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmx0O1wiXG4gICAgICAgIHwgJz4nIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImZ3Q7XCJcbiAgICAgICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIGluIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCBtaW5pbWFsaXplX2JsYW5rcyBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIGwgaW5cbiAgbGV0IHJlYyBsb29wIGYgaSA9XG4gICAgaWYgaSA9IGwgdGhlblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgLT5cbiAgICAgICAgbG9vcCB0cnVlIChzdWNjIGkpXG4gICAgICB8IGMgLT5cbiAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBmIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnICc7XG4gICAgICAgIGxvb3AgZmFsc2UgKHN1Y2MgaSlcbiAgaW4gbG9vcCBmYWxzZSAwXG5cbmxldCByZWMgZWF0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgZTo6dGwgYXMgbCAtPiBpZiBmIGUgdGhlbiBlYXQgZiB0bCBlbHNlIGxcblxuXG5sZXQgcmVjIGV4dHJhY3RfaHRtbF9hdHRyaWJ1dGVzIChodG1sOnN0cmluZykgPVxuICBsZXQgcmVjIGN1dF9vbl9jaGFyX2Zyb20gcyBpIGMgPVxuICAgIG1hdGNoIFN0cmluZy5pbmRleF9mcm9tIHMgaSBjIHdpdGhcbiAgICB8IDAgLT4gXCJcIiwgU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgfCBqIC0+IFN0cmluZy5zdWIgcyBpIChqLWkpLCBTdHJpbmcuc3ViIHMgKGorMSkgKFN0cmluZy5sZW5ndGggcyAtIChqKzEpKVxuICBpblxuICBsZXQgcmVtb3ZlX3ByZWZpeF9zcGFjZXMgcyA9IFxuICAgIGlmIHMgPSBcIlwiIHRoZW5cbiAgICAgIHMgXG4gICAgZWxzZSBpZiBzLlswXSA8PiAnICcgdGhlblxuICAgICAgc1xuICAgIGVsc2VcbiAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgU3RyaW5nLnN1YiBzIGkgKFN0cmluZy5sZW5ndGggcyAtIGkpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgfCAnICcgLT4gbG9vcCAoaSsxKVxuICAgICAgICAgIHwgXyAtPiBTdHJpbmcuc3ViIHMgaSAoU3RyaW5nLmxlbmd0aCBzIC0gaSlcbiAgICAgIGluIGxvb3AgMVxuICBpblxuICBsZXQgcmVtb3ZlX3N1ZmZpeF9zcGFjZXMgcyA9XG4gICAgaWYgcyA9IFwiXCIgdGhlblxuICAgICAgcyBcbiAgICBlbHNlIGlmIHMuW1N0cmluZy5sZW5ndGggcyAtIDFdIDw+ICcgJyB0aGVuXG4gICAgICBzXG4gICAgZWxzZVxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIC0+IGxvb3AgKGktMSlcbiAgICAgICAgfCBfIC0+IFN0cmluZy5zdWIgcyAwIChpKzEpXG4gICAgICBpbiBsb29wIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICBpblxuICBsZXQgcmVjIGxvb3AgcyByZXMgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICByZXNcbiAgICBlbHNlXG4gICAgICBtYXRjaFxuICAgICAgICB0cnlcbiAgICAgICAgICBTb21lICh0YWtlX2F0dHJpYnV0ZSBzIGkpXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcbiAgICAgIHdpdGhcbiAgICAgIHwgU29tZSAoKChfLF8pIGFzIGEpLCBuZXdfcykgLT5cbiAgICAgICAgbG9vcCBuZXdfcyAoYTo6cmVzKSAwXG4gICAgICB8IE5vbmUgLT4gcmVzXG4gIGFuZCB0YWtlX2F0dHJpYnV0ZSBzIGkgPVxuICAgICAgbGV0IG5hbWUsIGFmdGVyX2VxID0gY3V0X29uX2NoYXJfZnJvbSBzIGkgJz0nIGluXG4gICAgICBsZXQgbmFtZSA9IHJlbW92ZV9zdWZmaXhfc3BhY2VzIG5hbWUgaW5cbiAgICAgIGxldCBhZnRlcl9lcSA9IHJlbW92ZV9wcmVmaXhfc3BhY2VzIGFmdGVyX2VxIGluXG4gICAgICBsZXQgdmFsdWUsIHJlc3QgPSBjdXRfb25fY2hhcl9mcm9tIGFmdGVyX2VxIDEgYWZ0ZXJfZXEuWzBdIGluXG4gICAgICAobmFtZSx2YWx1ZSksIHJlbW92ZV9wcmVmaXhfc3BhY2VzIHJlc3RcbiAgaW5cbiAgaWYgKCogSGFzIGl0IGF0IGxlYXN0IG9uZSBhdHRyaWJ1dGU/ICopXG4gICAgdHJ5IFN0cmluZy5pbmRleCBodG1sICc+JyA8IFN0cmluZy5pbmRleCBodG1sICcgJ1xuICAgIHdpdGggTm90X2ZvdW5kIC0+IHRydWVcbiAgdGhlblxuICAgIFtdXG4gIGVsc2VcbiAgbWF0Y2ggaHRtbC5bMV0gd2l0aFxuICB8ICc8JyB8ICcgJyAtPlxuICAgIGV4dHJhY3RfaHRtbF9hdHRyaWJ1dGVzXG4gICAgICAocmVtb3ZlX3ByZWZpeF9zcGFjZXMgKFN0cmluZy5zdWIgaHRtbCAxIChTdHJpbmcubGVuZ3RoIGh0bWwgLSAxKSkpXG4gIHwgXyAtPlxuICAgIHRyeVxuICAgICAgbGV0IGh0bWwgPSBzbmQgKGN1dF9vbl9jaGFyX2Zyb20gaHRtbCAwICcgJykgaW5cbiAgICAgIGxvb3AgKFN0cmluZy5zdWIgaHRtbCAwIChTdHJpbmcuaW5kZXggaHRtbCAnPicpKSBbXSAwXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gW11cblxubGV0IHJlYyBleHRyYWN0X2lubmVyX2h0bWwgKGh0bWw6c3RyaW5nKSA9XG4gIGxldCByZWMgY3V0X29uX2NoYXJfZnJvbSBzIGkgYyA9XG4gICAgbWF0Y2ggU3RyaW5nLmluZGV4X2Zyb20gcyBpIGMgd2l0aFxuICAgIHwgMCAtPiBcIlwiLCBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICB8IGogLT4gU3RyaW5nLnN1YiBzIGkgKGotaSksIFN0cmluZy5zdWIgcyAoaisxKSAoU3RyaW5nLmxlbmd0aCBzIC0gKGorMSkpXG4gIGluXG4gIGxldCByZWMgcmN1dF9vbl9jaGFyX2Zyb20gcyBpIGMgPVxuICAgIG1hdGNoIFN0cmluZy5yaW5kZXhfZnJvbSBzIGkgYyB3aXRoXG4gICAgfCAwIC0+IFwiXCIsIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIHwgaiAtPiBTdHJpbmcuc3ViIHMgMCBqLCBTdHJpbmcuc3ViIHMgKGorMSkgKFN0cmluZy5sZW5ndGggcyAtIChqKzEpKVxuICBpblxuICBsZXQgXywgcCA9IGN1dF9vbl9jaGFyX2Zyb20gaHRtbCAwICc+JyBpblxuICBsZXQgciwgXyA9IHJjdXRfb25fY2hhcl9mcm9tIHAgKFN0cmluZy5sZW5ndGggcCAtIDEpICc8JyBpblxuICByXG5cblxubGV0IGh0bWxfdm9pZF9lbGVtZW50cyA9IFN0cmluZ1NldC5vZl9saXN0IFtcbiAgXCJpbWdcIjtcbiAgXCJpbnB1dFwiO1xuICBcImxpbmtcIjtcbiAgXCJtZXRhXCI7XG4gIFwiYnJcIjtcbiAgXCJoclwiO1xuICBcInNvdXJjZVwiO1xuICBcIndiclwiO1xuICBcInBhcmFtXCI7XG4gIFwiZW1iZWRcIjtcbiAgXCJiYXNlXCI7XG4gIFwiYXJlYVwiO1xuICBcImNvbFwiO1xuICBcInRyYWNrXCI7XG4gIFwia2V5Z2VuXCI7XG5dXG5cbmxldCAoIEAgKSBsMSBsMiA9XG4gIExpc3QucmV2X2FwcGVuZCAoTGlzdC5yZXYgbDEpIGwyXG4iLCJvcGVuIE9tZF91dGlsc1xub3BlbiBQcmludGZcblxuKCoqIHJlZmVyZW5jZXMsIGluc3RhbmNlcyBjcmVhdGVkIGluIFtPbWRfcGFyc2VyLm1haW5fcGFyc2VdIGFuZFxuICAgIGFjY2Vzc2VkIGluIHRoZSBbT21kX2JhY2tlbmRdIG1vZHVsZS4gKilcbm1vZHVsZSBSID0gTWFwLk1ha2UoU3RyaW5nKVxuY2xhc3MgcmVmX2NvbnRhaW5lciA6IG9iamVjdFxuICAgIHZhbCBtdXRhYmxlIGMgOiAoc3RyaW5nICogc3RyaW5nKSBSLnRcbiAgICBtZXRob2QgYWRkX3JlZiA6IFIua2V5IC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gdW5pdFxuICAgIG1ldGhvZCBnZXRfcmVmIDogUi5rZXkgLT4gKHN0cmluZyAqIHN0cmluZykgb3B0aW9uXG4gICAgbWV0aG9kIGdldF9hbGwgOiAoc3RyaW5nICogKHN0cmluZyAqIHN0cmluZykpIGxpc3RcbiAgZW5kID0gb2JqZWN0XG4gIHZhbCBtdXRhYmxlIGMgPSBSLmVtcHR5XG4gIHZhbCBtdXRhYmxlIGMyID0gUi5lbXB0eVxuXG4gIG1ldGhvZCBnZXRfYWxsID0gUi5iaW5kaW5ncyBjXG5cbiAgbWV0aG9kIGFkZF9yZWYgbmFtZSB0aXRsZSB1cmwgPVxuICAgIGMgPC0gUi5hZGQgbmFtZSAodXJsLCB0aXRsZSkgYztcbiAgICBsZXQgbG4gPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIG5hbWUgaW5cbiAgICBpZiBsbiA8PiBuYW1lIHRoZW4gYzIgPC0gUi5hZGQgbG4gKHVybCwgdGl0bGUpIGMyXG5cbiAgbWV0aG9kIGdldF9yZWYgbmFtZSA9XG4gICAgdHJ5XG4gICAgICBsZXQgKHVybCwgdGl0bGUpIGFzIHIgPVxuICAgICAgICB0cnkgUi5maW5kIG5hbWUgY1xuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIGxldCBsbiA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgbmFtZSBpblxuICAgICAgICAgIHRyeSBSLmZpbmQgbG4gY1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBSLmZpbmQgbG4gYzJcbiAgICAgIGluIFNvbWUgclxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBOb25lXG5lbmRcblxudHlwZSBlbGVtZW50ID1cbiAgfCBIMSBvZiB0XG4gIHwgSDIgb2YgdFxuICB8IEgzIG9mIHRcbiAgfCBINCBvZiB0XG4gIHwgSDUgb2YgdFxuICB8IEg2IG9mIHRcbiAgfCBQYXJhZ3JhcGggb2YgdFxuICB8IFRleHQgb2Ygc3RyaW5nXG4gIHwgRW1waCBvZiB0XG4gIHwgQm9sZCBvZiB0XG4gIHwgVWwgb2YgdCBsaXN0XG4gIHwgT2wgb2YgdCBsaXN0XG4gIHwgVWxwIG9mIHQgbGlzdFxuICB8IE9scCBvZiB0IGxpc3RcbiAgfCBDb2RlIG9mIG5hbWUgKiBzdHJpbmdcbiAgfCBDb2RlX2Jsb2NrIG9mIG5hbWUgKiBzdHJpbmdcbiAgfCBCclxuICB8IEhyXG4gIHwgTkxcbiAgfCBVcmwgb2YgaHJlZiAqIHQgKiB0aXRsZVxuICB8IFJlZiBvZiByZWZfY29udGFpbmVyICogbmFtZSAqIHN0cmluZyAqIGZhbGxiYWNrXG4gIHwgSW1nX3JlZiBvZiByZWZfY29udGFpbmVyICogbmFtZSAqIGFsdCAqIGZhbGxiYWNrXG4gIHwgSHRtbCBvZiBuYW1lICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiB0XG4gIHwgSHRtbF9ibG9jayBvZiBuYW1lICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiB0XG4gIHwgSHRtbF9jb21tZW50IG9mIHN0cmluZ1xuICB8IFJhdyBvZiBzdHJpbmdcbiAgfCBSYXdfYmxvY2sgb2Ygc3RyaW5nXG4gIHwgQmxvY2txdW90ZSBvZiB0XG4gIHwgSW1nIG9mIGFsdCAqIHNyYyAqIHRpdGxlXG4gIHwgWCBvZlxuICAgICAgPCBuYW1lIDogc3RyaW5nO1xuICAgICAgICB0b19odG1sIDogP2luZGVudDppbnQgLT4gKHQgLT4gc3RyaW5nKSAtPiB0IC0+IHN0cmluZyBvcHRpb247XG4gICAgICAgIHRvX3NleHByIDogKHQgLT4gc3RyaW5nKSAtPiB0IC0+IHN0cmluZyBvcHRpb247XG4gICAgICAgIHRvX3QgOiB0IC0+IHQgb3B0aW9uID5cbmFuZCBmYWxsYmFjayA9IDwgdG9fc3RyaW5nIDogc3RyaW5nIDsgdG9fdCA6IHQgPlxuYW5kIG5hbWUgPSBzdHJpbmdcbmFuZCBhbHQgPSBzdHJpbmdcbmFuZCBzcmMgPSBzdHJpbmdcbmFuZCBocmVmID0gc3RyaW5nXG5hbmQgdGl0bGUgPSBzdHJpbmdcbmFuZCB0ID0gZWxlbWVudCBsaXN0XG5cblxubGV0IHJlYyBsb29zZV9jb21wYXJlIHQxIHQyID0gbWF0Y2ggdDEsdDIgd2l0aFxuICB8IEgxIGUxOjp0bDEsIEgxIGUyOjp0bDJcbiAgfCBIMiBlMTo6dGwxLCBIMiBlMjo6dGwyXG4gIHwgSDMgZTE6OnRsMSwgSDMgZTI6OnRsMlxuICB8IEg0IGUxOjp0bDEsIEg0IGUyOjp0bDJcbiAgfCBINSBlMTo6dGwxLCBINSBlMjo6dGwyXG4gIHwgSDYgZTE6OnRsMSwgSDYgZTI6OnRsMlxuICB8IEVtcGggZTE6OnRsMSwgRW1waCBlMjo6dGwyXG4gIHwgQm9sZCBlMTo6dGwxLCBCb2xkIGUyOjp0bDJcbiAgfCBCbG9ja3F1b3RlIGUxOjp0bDEsIEJsb2NrcXVvdGUgZTI6OnRsMlxuICB8IFBhcmFncmFwaCBlMTo6dGwxLCBQYXJhZ3JhcGggZTI6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBsb29zZV9jb21wYXJlIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgVWwgZTE6OnRsMSwgVWwgZTI6OnRsMlxuICB8IE9sIGUxOjp0bDEsIE9sIGUyOjp0bDJcbiAgfCBVbHAgZTE6OnRsMSwgVWxwIGUyOjp0bDJcbiAgfCBPbHAgZTE6OnRsMSwgT2xwIGUyOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggbG9vc2VfY29tcGFyZV9saXN0cyBlMSBlMiB3aXRoXG4gICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IChDb2RlIF8gYXMgZTEpOjp0bDEsIChDb2RlIF8gYXMgZTIpOjp0bDJcbiAgfCAoQnIgYXMgZTEpOjp0bDEsIChCciBhcyBlMik6OnRsMlxuICB8IChIciBhcyBlMSk6OnRsMSwgKEhyIGFzIGUyKTo6dGwyXG4gIHwgKE5MIGFzIGUxKTo6dGwxLCAoTkwgYXMgZTIpOjp0bDJcbiAgfCAoSHRtbCBfIGFzIGUxKTo6dGwxLCAoSHRtbCBfIGFzIGUyKTo6dGwyXG4gIHwgKEh0bWxfYmxvY2sgXyBhcyBlMSk6OnRsMSwgKEh0bWxfYmxvY2sgXyBhcyBlMik6OnRsMlxuICB8IChSYXcgXyBhcyBlMSk6OnRsMSwgKFJhdyBfIGFzIGUyKTo6dGwyXG4gIHwgKFJhd19ibG9jayBfIGFzIGUxKTo6dGwxLCAoUmF3X2Jsb2NrIF8gYXMgZTIpOjp0bDJcbiAgfCAoSHRtbF9jb21tZW50IF8gYXMgZTEpOjp0bDEsIChIdG1sX2NvbW1lbnQgXyBhcyBlMik6OnRsMlxuICB8IChJbWcgXyBhcyBlMSk6OnRsMSwgKEltZyBfIGFzIGUyKTo6dGwyXG4gIHwgKFRleHQgXyBhcyBlMSk6OnRsMSwgKFRleHQgXyBhcyBlMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgQ29kZV9ibG9jayhsMSxjMSk6OnRsMSwgQ29kZV9ibG9jayhsMixjMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGwxIGwyLCBTdHJpbmcubGVuZ3RoIGMxIC0gU3RyaW5nLmxlbmd0aCBjMiB3aXRoXG4gICAgICAgICB8IDAsIDAgLT5cbiAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZSBjMSBjMiB3aXRoXG4gICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgMCwgMSAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIGMxIChjMl5cIlxcblwiKSB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCAwLCAtMSAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIChjMV5cIlxcblwiKSBjMiB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpLCBfIC0+IGlcbiAgICAgIClcblxuICB8IFVybCAoaHJlZjEsIHQxLCB0aXRsZTEpOjp0bDEsIFVybCAoaHJlZjIsIHQyLCB0aXRsZTIpOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSBocmVmMSBocmVmMiB3aXRoXG4gICAgICAgICB8IDAgLT4gKG1hdGNoIGxvb3NlX2NvbXBhcmUgdDEgdDIgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZSB0aXRsZTEgdGl0bGUyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgUmVmIChyZWZfY29udGFpbmVyMSwgbmFtZTEsIHgxLCBmYWxsYmFjazEpOjp0bDEsXG4gICAgICAgIFJlZiAocmVmX2NvbnRhaW5lcjIsIG5hbWUyLCB4MiwgZmFsbGJhY2syKTo6dGwyXG4gIHwgSW1nX3JlZiAocmVmX2NvbnRhaW5lcjEsIG5hbWUxLCB4MSwgZmFsbGJhY2sxKTo6dGwxLFxuICAgICAgICBJbWdfcmVmIChyZWZfY29udGFpbmVyMiwgbmFtZTIsIHgyLCBmYWxsYmFjazIpOjp0bDJcbiAgICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIChuYW1lMSwgeDEpIChuYW1lMiwgeDIpIHdpdGhcbiAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgIGxldCBjZmYgPVxuICAgICAgICAgICAgICAgaWYgZmFsbGJhY2sxI3RvX3N0cmluZyA9IGZhbGxiYWNrMiN0b19zdHJpbmcgdGhlblxuICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvb3NlX2NvbXBhcmUgKGZhbGxiYWNrMSN0b190KSAoZmFsbGJhY2syI3RvX3QpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGlmIGNmZiA9IDAgdGhlblxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgIGNvbXBhcmUgKHJlZl9jb250YWluZXIxI2dldF9hbGwpIChyZWZfY29udGFpbmVyMiNnZXRfYWxsKVxuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGNmZlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBYIGUxOjp0bDEsIFggZTI6OnRsMiAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgKGUxI25hbWUpIChlMiNuYW1lKSB3aXRoXG4gICAgICAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmUgKGUxI3RvX3QpIChlMiN0b190KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpIC0+IGkpXG4gIHwgWCBfOjpfLCBfIC0+IDFcbiAgfCBfLCBYIF86Ol8gLT4gLTFcbiAgfCBfIC0+IGNvbXBhcmUgdDEgdDJcblxuYW5kIGxvb3NlX2NvbXBhcmVfbGlzdHMgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIFtdIC0+IDBcbiAgICB8IGUxOjp0bDEsIGUyOjp0bDIgLT5cbiAgICAgICAgKG1hdGNoIGxvb3NlX2NvbXBhcmUgZTEgZTIgd2l0aFxuICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZV9saXN0cyB0bDEgdGwyXG4gICAgICAgICAgIHwgaSAtPiBpKVxuICAgIHwgXywgW10gLT4gMVxuICAgIHwgXyAtPiAtMVxuXG5cbnR5cGUgdG9rID0gKCogQ3MobikgbWVhbnMgKG4rMikgdGltZXMgQyAqKVxufCBBbXBlcnNhbmRcbnwgQW1wZXJzYW5kcyBvZiBpbnRcbnwgQXRcbnwgQXRzIG9mIGludFxufCBCYWNrcXVvdGVcbnwgQmFja3F1b3RlcyBvZiBpbnRcbnwgQmFja3NsYXNoXG58IEJhY2tzbGFzaHMgb2YgaW50XG58IEJhclxufCBCYXJzIG9mIGludFxufCBDYXJldFxufCBDYXJldHMgb2YgaW50XG58IENicmFjZVxufCBDYnJhY2VzIG9mIGludFxufCBDb2xvblxufCBDb2xvbnMgb2YgaW50XG58IENvbW1hXG58IENvbW1hcyBvZiBpbnRcbnwgQ3BhcmVudGhlc2lzXG58IENwYXJlbnRoZXNpc3Mgb2YgaW50XG58IENicmFja2V0XG58IENicmFja2V0cyBvZiBpbnRcbnwgRG9sbGFyXG58IERvbGxhcnMgb2YgaW50XG58IERvdFxufCBEb3RzIG9mIGludFxufCBEb3VibGVxdW90ZVxufCBEb3VibGVxdW90ZXMgb2YgaW50XG58IEV4Y2xhbWF0aW9uXG58IEV4Y2xhbWF0aW9ucyBvZiBpbnRcbnwgRXF1YWxcbnwgRXF1YWxzIG9mIGludFxufCBHcmVhdGVydGhhblxufCBHcmVhdGVydGhhbnMgb2YgaW50XG58IEhhc2hcbnwgSGFzaHMgb2YgaW50XG58IExlc3N0aGFuXG58IExlc3N0aGFucyBvZiBpbnRcbnwgTWludXNcbnwgTWludXNzIG9mIGludFxufCBOZXdsaW5lXG58IE5ld2xpbmVzIG9mIGludFxufCBOdW1iZXIgb2Ygc3RyaW5nXG58IE9icmFjZVxufCBPYnJhY2VzIG9mIGludFxufCBPcGFyZW50aGVzaXNcbnwgT3BhcmVudGhlc2lzcyBvZiBpbnRcbnwgT2JyYWNrZXRcbnwgT2JyYWNrZXRzIG9mIGludFxufCBQZXJjZW50XG58IFBlcmNlbnRzIG9mIGludFxufCBQbHVzXG58IFBsdXNzIG9mIGludFxufCBRdWVzdGlvblxufCBRdWVzdGlvbnMgb2YgaW50XG58IFF1b3RlXG58IFF1b3RlcyBvZiBpbnRcbnwgU2VtaWNvbG9uXG58IFNlbWljb2xvbnMgb2YgaW50XG58IFNsYXNoXG58IFNsYXNocyBvZiBpbnRcbnwgU3BhY2VcbnwgU3BhY2VzIG9mIGludFxufCBTdGFyXG58IFN0YXJzIG9mIGludFxufCBUYWJcbnwgVGFicyBvZiBpbnRcbnwgVGlsZGVcbnwgVGlsZGVzIG9mIGludFxufCBVbmRlcnNjb3JlXG58IFVuZGVyc2NvcmVzIG9mIGludFxufCBXb3JkIG9mIHN0cmluZ1xufCBUYWcgb2YgbmFtZSAqIGV4dGVuc2lvblxuXG5hbmQgZXh0ZW5zaW9uID0gPFxuICBwYXJzZXJfZXh0ZW5zaW9uIDpcbiAgICB0IC0+IHRvayBsaXN0IC0+IHRvayBsaXN0IC0+ICgodCAqIHRvayBsaXN0ICogdG9rIGxpc3QpIG9wdGlvbik7XG4gIHRvX3N0cmluZyA6IHN0cmluZ1xuPlxuXG50eXBlIGV4dGVuc2lvbnMgPSBleHRlbnNpb24gbGlzdFxuXG5sZXQgZW1wdHlfZXh0ZW5zaW9uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID0gTm9uZVxuICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuZW5kXG5cbmxldCByZWMgbm9ybWFsaXNlX21kIGwgPVxuICBpZiBkZWJ1ZyB0aGVuXG4gICAgZXByaW50ZiBcIihPTUQpIG5vcm1hbGlzZV9tZFxcbiUhXCI7XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO05MO05MO05MO11cbiAgICB8IFtOTDtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO11cbiAgICB8IFtOTDtOTF1cbiAgICB8IFtOTF0gLT4gW11cbiAgICB8IFtdIC0+IFtdXG4gICAgfCBOTDo6Tkw6Ok5MOjp0bCAtPiBsb29wIChOTDo6Tkw6OnRsKVxuICAgIHwgVGV4dCB0MTo6VGV4dCB0Mjo6dGwgLT4gbG9vcCAoVGV4dCh0MV50Mik6OnRsKVxuICAgIHwgTkw6OigoKFBhcmFncmFwaCBffEgxIF98SDIgX3xIMyBffEg0IF98SDUgX3xINiBfXG4gICAgICAgICAgICB8Q29kZV9ibG9jayBffE9sIF98VWwgX3xPbHAgX3xVbHAgXyk6Ol8pIGFzIHRsKSAtPiBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGhbVGV4dCBcIiBcIl06OnRsIC0+IGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaFtdOjp0bCAtPiBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGgocCk6OnRsIC0+IFBhcmFncmFwaChsb29wIHApOjpsb29wIHRsXG4gICAgfCBIMSB2Ojp0bCAtPiBIMShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBIMiB2Ojp0bCAtPiBIMihsb29wIHYpOjpsb29wIHRsXG4gICAgfCBIMyB2Ojp0bCAtPiBIMyhsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINCB2Ojp0bCAtPiBINChsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINSB2Ojp0bCAtPiBINShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINiB2Ojp0bCAtPiBINihsb29wIHYpOjpsb29wIHRsXG4gICAgfCBFbXBoIHY6OnRsIC0+IEVtcGgobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgQm9sZCB2Ojp0bCAtPiBCb2xkKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IFVsIHY6OnRsIC0+IFVsKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IE9sIHY6OnRsIC0+IE9sKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IFVscCB2Ojp0bCAtPiBVbHAoTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgT2xwIHY6OnRsIC0+IE9scChMaXN0Lm1hcCBsb29wIHYpOjpsb29wIHRsXG4gICAgfCBCbG9ja3F1b3RlIHY6OnRsIC0+IEJsb2NrcXVvdGUobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgVXJsKGhyZWYsdix0aXRsZSk6OnRsIC0+IFVybChocmVmLChsb29wIHYpLHRpdGxlKTo6bG9vcCB0bFxuICAgIHwgVGV4dCBfXG4gICAgfCBDb2RlIF9cbiAgICB8IENvZGVfYmxvY2sgX1xuICAgIHwgQnJcbiAgICB8IEhyXG4gICAgfCBOTFxuICAgIHwgUmVmIF9cbiAgICB8IEltZ19yZWYgX1xuICAgIHwgSHRtbCBfXG4gICAgfCBIdG1sX2Jsb2NrIF9cbiAgICB8IEh0bWxfY29tbWVudCBfXG4gICAgfCBSYXcgX1xuICAgIHwgUmF3X2Jsb2NrIF9cbiAgICB8IEltZyBfXG4gICAgfCBYIF8gYXMgdjo6dGwgLT4gdjo6bG9vcCB0bFxuICBpblxuICBsZXQgYSA9IGxvb3AgbCBpblxuICBsZXQgYiA9IGxvb3AgYSBpblxuICBpZiBhID0gYiB0aGVuXG4gICAgYVxuICBlbHNlXG4gICAgbm9ybWFsaXNlX21kIGJcblxuXG5cbmxldCBkdW1teV9YID1cbiAgWCAob2JqZWN0XG4gICAgbWV0aG9kIG5hbWUgPSBcImR1bW15XCJcbiAgICBtZXRob2QgdG9faHRtbCA/KGluZGVudD0wKSBfIF8gPSBOb25lXG4gICAgbWV0aG9kIHRvX3NleHByIF8gXyA9IE5vbmVcbiAgICBtZXRob2QgdG9fdCBfID0gTm9uZVxuICBlbmQpXG5cblxubGV0IHJlYyB2aXNpdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IFBhcmFncmFwaCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBQYXJhZ3JhcGgodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEgxIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIMSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDIgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEgyKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIMyB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIMyh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDQgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEg0KHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBINSB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDUodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEg2IHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBINih2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgRW1waCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gRW1waCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQm9sZCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQm9sZCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVWwgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gVWwoTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgT2wgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gT2woTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVWxwIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFVscChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBPbHAgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gT2xwKExpc3QubWFwICh2aXNpdCBmKSB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEJsb2NrcXVvdGUgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQmxvY2txdW90ZSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVXJsKGhyZWYsdix0aXRsZSkgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFVybChocmVmLHZpc2l0IGYgdix0aXRsZSk6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBUZXh0IHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBDb2RlIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBDb2RlX2Jsb2NrIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSZWYgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEltZ19yZWYgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWwgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWxfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWxfY29tbWVudCBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgUmF3IF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSYXdfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEltZyAgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFggIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBCciBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQnI6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIciBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSHI6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBOTCBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gTkw6OnZpc2l0IGYgdGxcbiAgICBlbmRcblxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgY29kZV9zdHlsaXN0ID0gbGFuZzpzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuXG5vcGVuIFByaW50Zlxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cbm9wZW4gT21kX3V0aWxzXG5cbmxldCBkZWZhdWx0X2xhbmd1YWdlID0gcmVmIFwiXCJcblxuXG5cbmxldCB0ZXh0X29mX21kIG1kID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgWCBfIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJsb2NrcXVvdGUgcSA6OiB0bCAtPlxuICAgICAgICBsb29wIHE7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBuYW1lKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIG5hbWUpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0KTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVGV4dCB0IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0KTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3IHQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB0O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXdfYmxvY2sgdCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB0O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgRW1waCBtZCA6OiB0bCAtPlxuICAgICAgICBsb29wIG1kO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCb2xkIG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IChVbCBsIHwgT2wgbCkgOjogdGwgLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gaXRlbSAtPiBsb29wIGl0ZW07IEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nKSBsO1xuICAgICAgICBsb29wIHRsXG4gICAgfCAoVWxwIGwgfCBPbHAgbCkgOjogdGwgLT5cbiAgICAgICAgTGlzdC5pdGVyIGxvb3AgbDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYyk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEhyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2NvbW1lbnQgcyA6OiB0bCAtPlxuICAgICAgICBsb29wIHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMSBtZCA6OiB0bFxuICAgIHwgSDIgbWQgOjogdGxcbiAgICB8IEgzIG1kIDo6IHRsXG4gICAgfCBINCBtZCA6OiB0bFxuICAgIHwgSDUgbWQgOjogdGxcbiAgICB8IEg2IG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE5MIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgICBsb29wIG1kO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCBkZWZhdWx0X2NvZGVfc3R5bGlzdCB+bGFuZyBjb2RlID0gY29kZVxuXG5sZXQgZmlsdGVyX3RleHRfb21kX3JldiBsID1cbiAgbGV0IHJlYyBsb29wIGIgciA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBpZiBiIHRoZW4gciBlbHNlIGxcbiAgICB8IChcIm1lZGlhOnR5cGVcIiwgU29tZSBcInRleHQvb21kXCIpOjp0bCAtPlxuICAgICAgbG9vcCB0cnVlIHIgdGxcbiAgICB8IGU6OnRsIC0+XG4gICAgICBsb29wIGIgKGU6OnIpIHRsXG4gIGluXG4gIGxvb3AgZmFsc2UgW10gbFxuXG5sZXQgcmVtb3ZlX2xpbmtzIDogdCAtPiB0ID1cbiAgT21kX3JlcHJlc2VudGF0aW9uLnZpc2l0XG4gICAgKGZ1biBlIC0+XG4gICAgIG1hdGNoIGUgd2l0aFxuICAgICAgfCBVcmwoXywgdCwgXykgLT4gU29tZSB0XG4gICAgICB8IF8gLT4gTm9uZVxuICAgIClcblxubGV0IHJlYyBodG1sX2FuZF9oZWFkZXJzX29mX21kXG4gICAgPyhyZW1vdmVfaGVhZGVyX2xpbmtzPWZhbHNlKVxuICAgID8ob3ZlcnJpZGU9KGZ1biAoZTplbGVtZW50KSAtPiAoTm9uZTpzdHJpbmcgb3B0aW9uKSkpXG4gICAgPyhwaW5kZW50PWZhbHNlKVxuICAgID8obmwyYnI9ZmFsc2UpXG4gICAgP2NzOihjb2RlX3N0eWxlPWRlZmF1bHRfY29kZV9zdHlsaXN0KVxuICAgIG1kXG4gID1cbiAgbGV0IGlkcyA9IG9iamVjdCh0aGlzKVxuICAgIHZhbCBtdXRhYmxlIGlkcyA9IFN0cmluZ1NldC5hZGQgXCJcIiBTdHJpbmdTZXQuZW1wdHlcbiAgICBtZXRob2QgbWFuZ2xlIGlkID1cbiAgICAgIGxldCByZWMgbSBpID1cbiAgICAgICAgaWYgU3RyaW5nU2V0Lm1lbSBpZCBpZHMgdGhlblxuICAgICAgICAgIGxldCBpZHggPSBpZiBpID4gMCB0aGVuIGlkXlwiX1wiXnN0cmluZ19vZl9pbnQgaSBlbHNlIGlkIGluXG4gICAgICAgICAgaWYgU3RyaW5nU2V0Lm1lbSBpZHggaWRzIHRoZW5cbiAgICAgICAgICAgIG0gKGkrMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoaWRzIDwtIFN0cmluZ1NldC5hZGQgaWR4IGlkcztcbiAgICAgICAgICAgICBpZHgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoaWRzIDwtIFN0cmluZ1NldC5hZGQgaWQgaWRzO1xuICAgICAgICAgICBpZClcbiAgICAgIGluIG0gMFxuICBlbmQgaW5cbiAgbGV0IGVtcHR5IHMgPVxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcbicgLT4gbG9vcCAoaSsxKVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgdHJ1ZVxuICAgIGluXG4gICAgbG9vcCAwXG4gIGluXG4gIGxldCByZW1vdmVfdHJhaWxpbmdfYmxhbmtzIHMgPVxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPCAwIHRoZW4gXCJcIlxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnfCdcXHQnfCdcXG4nIC0+XG4gICAgICAgICAgbG9vcCAocHJlZCBpKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIC0gMSB0aGVuXG4gICAgICAgICAgICBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU3RyaW5nLnN1YiBzIDAgKGkrMSlcbiAgICBpbiBsb29wIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IGhlYWRlcnMgPSByZWYgW10gaW5cbiAgbGV0IHJlYyBsb29wIGluZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBYIHggYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdCAtPiBsb29wIGluZGVudCB0XG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OmluZGVudFxuICAgICAgICAgICAgICAgKGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSkgbWRcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCbG9ja3F1b3RlIHEgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YmxvY2txdW90ZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBxO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2Jsb2NrcXVvdGU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBmYWxsYmFjaykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHJjI2dldF9yZWYgbmFtZSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUoaHJlZiwgdGl0bGUpIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50XG4gICAgICAgICAgICAgICAgKFVybChodG1sZW50aXRpZXMgfm1kOnRydWUgaHJlZixcbiAgICAgICAgICAgICAgICAgICAgIFtUZXh0KHRleHQpXSxcbiAgICAgICAgICAgICAgICAgICAgIGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSlcbiAgICAgICAgICAgICAgICAgOjp0bClcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBsb29wIGluZGVudCAoZmFsbGJhY2sjdG9fdCk7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgZmFsbGJhY2spIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCByYyNnZXRfcmVmIG5hbWUgd2l0aFxuICAgICAgICAgICAgfCBTb21lKHNyYywgdGl0bGUpIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50XG4gICAgICAgICAgICAgICAgKEltZyhodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0LFxuICAgICAgICAgICAgICAgICAgICAgaHRtbGVudGl0aWVzIH5tZDp0cnVlIHNyYyxcbiAgICAgICAgICAgICAgICAgICAgIGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSk6OnRsKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IChmYWxsYmFjayN0b190KTtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIHwgUGFyYWdyYXBoIFtdIDo6IHRsIC0+IGxvb3AgaW5kZW50IHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChsZXQgcyA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgICBpZiBlbXB0eSBzIHRoZW5cbiAgICAgICAgICAgICAoKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8cD5cIjtcbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHJlbW92ZV90cmFpbGluZ19ibGFua3Mgcyk7XG4gICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9wPlxcblwiO1xuICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aW1nIHNyYz0nXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHNyYyk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIicgYWx0PSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0KTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJyBcIjtcbiAgICAgICAgICBpZiB0aXRsZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgIChCdWZmZXIuYWRkX3N0cmluZyBiIFwiIHRpdGxlPSdcIjtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpO1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInIFwiKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBUZXh0IHQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIEJ1ZmZlci5hZGRfc3RyaW5nIGIgdDsgKilcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdCk7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgRW1waCBtZCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxlbT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBtZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9lbT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCb2xkIG1kIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPHN0cm9uZz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBtZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9zdHJvbmc+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKFVsIGx8T2wgbHxVbHAgbHxPbHAgbCBhcyBlKSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKG1hdGNoIGUgd2l0aFxuICAgICAgICAgICAgICB8IE9sIF98T2xwIF8gLT4gXCI8b2w+XCJcbiAgICAgICAgICAgICAgfCBfIC0+IFwiPHVsPlwiKTtcbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgZnVuIGxpIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxsaT5cIjtcbiAgICAgICAgICAgICAgICBsb29wIChpbmRlbnQrMikgbGk7XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvbGk+XCJcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGw7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAobWF0Y2ggZSB3aXRoXG4gICAgICAgICAgICAgIHwgT2wgX3xPbHAgXyAtPiBcIjwvb2w+XCJcbiAgICAgICAgICAgICAgfCBfIC0+IFwiPC91bD5cIik7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbGFuZyA9IFwiXCIgJiYgIWRlZmF1bHRfbGFuZ3VhZ2UgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8cHJlPjxjb2RlPlwiXG4gICAgICAgICAgZWxzZSBpZiBsYW5nID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8cHJlIGNsYXNzPSclcyc+PGNvZGUgY2xhc3M9JyVzJz5cIlxuICAgICAgICAgICAgICAhZGVmYXVsdF9sYW5ndWFnZSAhZGVmYXVsdF9sYW5ndWFnZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxwcmUgY2xhc3M9JyVzJz48Y29kZSBjbGFzcz0nJXMnPlwiIGxhbmcgbGFuZztcbiAgICAgICAgICBsZXQgbmV3X2MgPSBjb2RlX3N0eWxlIH5sYW5nOmxhbmcgYyBpblxuICAgICAgICAgIGlmIGMgPSBuZXdfYyB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBuZXdfYztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9jb2RlPjwvcHJlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IENvZGUobGFuZywgYykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGxhbmcgPSBcIlwiICYmICFkZWZhdWx0X2xhbmd1YWdlID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGNvZGU+XCJcbiAgICAgICAgICBlbHNlIGlmIGxhbmcgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxjb2RlIGNsYXNzPSclcyc+XCIgIWRlZmF1bHRfbGFuZ3VhZ2VcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8Y29kZSBjbGFzcz0nJXMnPlwiIGxhbmc7XG4gICAgICAgICAgbGV0IG5ld19jID0gY29kZV9zdHlsZSB+bGFuZzpsYW5nIGMgaW5cbiAgICAgICAgICBpZiBjID0gbmV3X2MgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDpmYWxzZSBjKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgbmV3X2M7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvY29kZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCciBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxici8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHIgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aHIvPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFJhdyBzIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmF3X2Jsb2NrIHMgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBbXSkgYXMgZSA6OiB0bFxuICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICBsZXQgYXR0cnMgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiIC8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgYXMgZSA6OiB0bCAtPlxuICAgICAgbGV0IGF0dHJzID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBib2R5O1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8LyVzPlwiIHRhZ25hbWU7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkgYXMgZSA6OiB0bCAtPlxuICAgICAgbGV0IGF0dHJzID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGJvZHkgPSBbXSAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIHRoZW5cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgLz5cIjtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICAgIClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCBib2R5O1xuICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgICAgKVxuICAgICAgZW5kXG4gICAgfCBIdG1sX2NvbW1lbnQgcyBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHMgPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgcyBpblxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YSBocmVmPSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgaHJlZik7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIidcIjtcbiAgICAgICAgICBpZiB0aXRsZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgdGl0bGU9J1wiO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJ1wiO1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2E+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgxIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgxIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgxIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDE+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgyIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgyIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgyIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDI+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgzIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgzIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgzIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDM+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg0IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg0IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg0IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDQ+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg1IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg1IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg1IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg2IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg2IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg2IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDY+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgTkwgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIG5sMmJyIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YnIgLz5cIlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBbXSAtPlxuICAgICAgKClcbiAgaW5cbiAgbG9vcCAwIG1kO1xuICBCdWZmZXIuY29udGVudHMgYiwgTGlzdC5yZXYgIWhlYWRlcnNcblxuYW5kIHN0cmluZ19vZl9hdHRycyBhdHRycyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIExpc3QuaXRlclxuICAgIChmdW5jdGlvblxuICAgICAgfCAoYSwgU29tZSB2KSAtPlxuICAgICAgICBpZiBub3QoU3RyaW5nLmNvbnRhaW5zIHYgJ1xcJycpIHRoZW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPSclcydcIiBhIHZcbiAgICAgICAgZWxzZSBpZiBub3QoU3RyaW5nLmNvbnRhaW5zIHYgJ1wiJykgdGhlblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9XFxcIiVzXFxcIlwiIGEgdlxuICAgICAgICBlbHNlXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICB8IGEsIE5vbmUgLT5cbiAgICAgICAgKCogaWYgaHRtbDQgdGhlbiAqKVxuICAgICAgICAoKiAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JyVzJ1wiIGEgYSAqKVxuICAgICAgICAoKiBlbHNlICopXG4gICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JydcIiBhICgqIEhUTUw1ICopXG4gICAgKVxuICAgIGF0dHJzO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5hbmQgaHRtbF9vZl9tZFxuICAgID8ob3ZlcnJpZGU9KGZ1biAoZTplbGVtZW50KSAtPiAoTm9uZTpzdHJpbmcgb3B0aW9uKSkpXG4gICAgPyhwaW5kZW50PWZhbHNlKVxuICAgID8obmwyYnI9ZmFsc2UpXG4gICAgP2NzXG4gICAgbWRcbiAgPVxuICBmc3QgKGh0bWxfYW5kX2hlYWRlcnNfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciA/Y3MgbWQpXG5hbmQgaGVhZGVyc19vZl9tZCA/cmVtb3ZlX2hlYWRlcl9saW5rcyBtZCA9XG4gIHNuZCAoaHRtbF9hbmRfaGVhZGVyc19vZl9tZCA/cmVtb3ZlX2hlYWRlcl9saW5rcyBtZClcblxuXG5sZXQgcmVjIHNleHByX29mX21kIG1kID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBYIHggOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIHgjdG9fdCBtZCB3aXRoXG4gICAgICAgICAgIHwgU29tZSB0IC0+XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihYXCI7XG4gICAgICAgICAgICAgbG9vcCB0O1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCJcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBtYXRjaCB4I3RvX3NleHByIHNleHByX29mX21kIG1kIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFhcIjtcbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIlxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OjAgaHRtbF9vZl9tZCBtZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihYXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoQmxvY2txdW90ZVwiO1xuICAgICAgICBsb29wIHE7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgXykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFJlZiAlUyAlUylcIiBuYW1lIHRleHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgXykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEltZ19yZWYgJVMgJVMpXCIgbmFtZSBhbHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFBhcmFncmFwaFwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSW1nICVTICVTICVTKVwiIGFsdCBzcmMgdGl0bGU7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVGV4dCAlU1wiIHQ7XG4gICAgICAgIGxldCByZWMgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIiAlU1wiIHQ7XG4gICAgICAgICAgICBmIHRsXG4gICAgICAgICAgfCB4IC0+IHhcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRsID0gZiB0bCBpblxuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEVtcGggbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihFbXBoXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCb2xkXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE9sIGwgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKE9sXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpOyBicHJpbnRmIGIgXCIpXCIpIGw7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVWwgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVWxcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7YnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE9scCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihPbHBcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7IGJwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVbHAgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVWxwXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpO2JwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihDb2RlICVTKVwiIGM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGVfYmxvY2sobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKENvZGVfYmxvY2sgJXMpXCIgYztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQnIgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCcilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHIgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIcilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3IHMgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFJhdyAlUylcIiBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXdfYmxvY2sgcyA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoUmF3X2Jsb2NrICVTKVwiIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihIdG1sICVzICVzIFwiIHRhZ25hbWUgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSHRtbF9ibG9jayAlcyAlcyBcIiB0YWduYW1lIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICBsb29wIGJvZHk7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9jb21tZW50IHMgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEh0bWxfY29tbWVudCAlUylcIiBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFVybCAlUyAlUyAlUylcIiBocmVmIChodG1sX29mX21kIHMpIHRpdGxlO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMSBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEgxXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgyIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDJcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDMgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIM1wiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBINCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEg0XCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEg1IG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDVcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihINlwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBOTCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKE5MKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICAgIGxvb3AgbWQ7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMgcyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICogMikgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnLicgYXMgYyAtPlxuICAgICAgICBpZiBpID4gMCAmJlxuICAgICAgICAgICBtYXRjaCBzLltpLTFdIHdpdGhcbiAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJyAnXG4gICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICctJyBhcyBjIC0+XG4gICAgICAgIGlmIChpID0gMCB8fCBtYXRjaCBzLltpLTFdIHdpdGggJyAnfCAnXFxuJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAmJiAoaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIChzLltpKzFdID0gJyAnfHxzLltpKzFdID0gJy0nKSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnKycgYXMgYyAtPlxuICAgICAgICBpZiAoaSA9IDAgfHwgbWF0Y2ggcy5baS0xXSB3aXRoICcgJ3wgJ1xcbicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgJiYgKGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJyAnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICchJyBhcyBjIC0+XG4gICAgICAgIGlmIGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJ1snIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJzwnIGFzIGMgLT5cbiAgICAgICAgaWYgaSA8PiBTdHJpbmcubGVuZ3RoIHMgLSAxICYmXG4gICAgICAgICAgICAgKG1hdGNoIHMuW2krMV0gd2l0aCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnPicgYXMgYyAtPlxuICAgICAgICBpZiBpID0gMCB8fFxuICAgICAgICAgICAgIChtYXRjaCBzLltpLTFdIHdpdGggJyAnIHwgJ1xcbicgLT4gZmFsc2UgfCBfIC0+IHRydWUpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJyMnIGFzIGMgLT5cbiAgICAgICAgIGlmIGkgPSAwIHx8IHMuW2ktMV0gPSAnXFxuJyB0aGVuXG4gICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJ1xcXFwnIHwgJ1snIHwgJ10nIHwgJygnIHwgJyknIHwgJ2AnIHwgJyonIGFzIGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgIGRvbmU7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IHJlYyBtYXJrZG93bl9vZl9tZCBtZCA9XG4gIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1hcmtkb3duX29mX21kKCVTKVxcbiUhXCIgKHNleHByX29mX21kIG1kKTtcbiAgbGV0IHF1b3RlID8oaW5kZW50PTApIHMgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IHJlYyBsb29wIG5sIGkgPVxuICAgICAgaWYgaSA8IGwgdGhlblxuICAgICAgICBiZWdpblxuICAgICAgICAgIGlmIG5sICYmIGkgPCBsIC0gMSB0aGVuXG4gICAgICAgICAgICAoZm9yIGkgPSAxIHRvIGluZGVudCBkb1xuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJyAnXG4gICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPiBcIik7XG4gICAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgbG9vcCB0cnVlIChzdWNjIGkpXG4gICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgICAgICAgbG9vcCBmYWxzZSAoc3VjYyBpKVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBpbiBsb29wIHRydWUgMFxuICBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IGFkZF9zcGFjZXMgbiA9IGZvciBpID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICcgJyBkb25lIGluXG4gIGxldCByZWZlcmVuY2VzID0gcmVmIE5vbmUgaW5cbiAgbGV0IHJlYyBsb29wID8oZnN0X3BfaW5fbGk9dHJ1ZSkgPyhpc19pbl9saXN0PWZhbHNlKSBsaXN0X2luZGVudCBsID1cbiAgICAoKiBbbGlzdF9pbmRlbnQ6IGludF0gaXMgdGhlIGluZGVudGF0aW9uIGxldmVsIGluIG51bWJlciBvZiBzcGFjZXMuICopXG4gICAgKCogW2lzX2luX2xpc3Q6IGJvb2xdIGlzIG5lY2Vzc2FyeSB0byBrbm93IGlmIHdlIGFyZSBpbnNpZGUgYSBwYXJhZ3JhcGhcbiAgICAgICB3aGljaCBpcyBpbnNpZGUgYSBsaXN0IGl0ZW0gYmVjYXVzZSB0aG9zZSBuZWVkIHRvIGJlIGluZGVudGVkISAqKVxuICAgIGxldCBsb29wID8oZnN0X3BfaW5fbGk9ZnN0X3BfaW5fbGkpID8oaXNfaW5fbGlzdD1pc19pbl9saXN0KSBsaXN0X2luZGVudCBsID1cbiAgICAgICAgbG9vcCB+ZnN0X3BfaW5fbGk6ZnN0X3BfaW5fbGkgfmlzX2luX2xpc3Q6aXNfaW5fbGlzdCBsaXN0X2luZGVudCBsXG4gICAgaW5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFggeCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHQgLT4gbG9vcCBsaXN0X2luZGVudCB0XG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OjAgaHRtbF9vZl9tZCBtZCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChxdW90ZSB+aW5kZW50Omxpc3RfaW5kZW50IChtYXJrZG93bl9vZl9tZCBxKSk7XG4gICAgICBpZiB0bCA8PiBbXSB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIGlmICFyZWZlcmVuY2VzID0gTm9uZSB0aGVuIHJlZmVyZW5jZXMgOj0gU29tZSByYztcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCAoUmF3KGZhbGxiYWNrI3RvX3N0cmluZyk6OnRsKVxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgaWYgIXJlZmVyZW5jZXMgPSBOb25lIHRoZW4gcmVmZXJlbmNlcyA6PSBTb21lIHJjO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IChSYXcoZmFsbGJhY2sjdG9fc3RyaW5nKTo6dGwpXG4gICAgfCBQYXJhZ3JhcGggW10gOjogdGwgLT4gbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUGFyYWdyYXBoIG1kIDo6IHRsIC0+XG4gICAgICBpZiBpc19pbl9saXN0IHRoZW5cbiAgICAgICAgaWYgZnN0X3BfaW5fbGkgdGhlblxuICAgICAgICAgIGFkZF9zcGFjZXMgKGxpc3RfaW5kZW50LTIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgbG9vcCB+ZnN0X3BfaW5fbGk6ZmFsc2UgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiXFxuXFxuXCI7XG4gICAgICBsb29wIH5mc3RfcF9pbl9saTpmYWxzZSBsaXN0X2luZGVudCB0bFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgOjogdGwgLT5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIhWyVzXSglcyBcXFwiJXNcXFwiKVwiIGFsdCBzcmMgdGl0bGU7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChlc2NhcGVfbWFya2Rvd25fY2hhcmFjdGVycyB0KTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEVtcGggbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIipcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgT2wgbCA6OiB0bCAtPlxuICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nIHRoZW5cbiAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsZXQgYyA9IHJlZiAwIGluICgqIGRvbid0IHVzZSBMaXN0Lml0ZXJpIGJlY2F1c2UgaXQncyBub3QgaW4gMy4xMiAqKVxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIGM7XG4gICAgICAgICAgICAgICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlZC4gXCIgIWM7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgaWYgbGlzdF9pbmRlbnQgPSAwIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVbCBsIDo6IHRsIC0+XG4gICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbicgdGhlblxuICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgICAgICAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIi0gXCI7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgaWYgbGlzdF9pbmRlbnQgPSAwIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBPbHAgbCA6OiB0bCAtPlxuICAgICAgbGV0IGMgPSByZWYgMCBpbiAoKiBkb24ndCB1c2UgTGlzdC5pdGVyaSBiZWNhdXNlIGl0J3Mgbm90IGluIDMuMTIgKilcbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nXG4gICAgICAgIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgIGluY3IgYztcbiAgICAgICAgYnByaW50ZiBiIFwiJWQuIFwiICFjO1xuICAgICAgICBsb29wIH5pc19pbl9saXN0OnRydWUgKGxpc3RfaW5kZW50KzQpIGxpO1xuICAgICAgICAgICAgICAgKCogUGFyYWdyYXBocyA9PiBObyBuZWVkIG9mICdcXG4nICopXG4gICAgICApIGw7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVbHAgbCA6OiB0bCAtPlxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbidcbiAgICAgICAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgYnByaW50ZiBiIFwiKyBcIjtcbiAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICgqIFBhcmFncmFwaHMgPT4gTm8gbmVlZCBvZiAnXFxuJyAqKVxuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgYmVnaW4gbWF0Y2ggdGwgd2l0aFxuICAgICAgfCAoSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfKTo6X1xuICAgICAgfCBOTDo6KEgxIF8gfCBIMiBfIHwgSDMgXyB8IEg0IF8gfCBINSBfIHwgSDYgXyk6Ol8gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbidcbiAgICAgIHwgXyAtPiAoKVxuICAgICAgZW5kO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQ29kZShfbGFuZywgYykgOjogdGwgLT4gKCogRklYTUUgKilcbiAgICAgIGxldCBuID0gKCogY29tcHV0ZSBob3cgbWFueSBiYWNrcXVvdGVzIHdlIG5lZWQgdG8gdXNlICopXG4gICAgICAgIGxldCBmaWx0ZXIgKG46aW50KSAoczppbnQgbGlzdCkgPVxuICAgICAgICAgIGlmIG4gPiAwICYmIG4gPCAxMCB0aGVuXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIGUgLT4gZSA8PiBuKSBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggYyBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyB4IGIgaSA9XG4gICAgICAgICAgaWYgaSA9IGwgdGhlblxuICAgICAgICAgICAgbWF0Y2ggZmlsdGVyIGIgcyB3aXRoXG4gICAgICAgICAgICB8IGhkOjpfIC0+IGhkXG4gICAgICAgICAgICB8IFtdIC0+IHgrMVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIGMuW2ldIHdpdGhcbiAgICAgICAgICAgIHwgJ2AnIC0+IGxvb3AgcyB4IChzdWNjIGIpIChzdWNjIGkpXG4gICAgICAgICAgICB8IF8gLT4gbG9vcCAoZmlsdGVyIGIgcykgKG1heCBiIHgpIDAgKHN1Y2MgaSlcbiAgICAgICAgaW5cbiAgICAgICAgICBsb29wIFsxOzI7Mzs0OzU7Njs3Ozg7OTsxMF0gMCAwIDBcbiAgICAgIGluXG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgICBpZiBjLlswXSA9ICdgJyB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICcgJztcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiBjO1xuICAgICAgICAgIGlmIGMuW1N0cmluZy5sZW5ndGggYyAtIDFdID0gJ2AnIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJyAnO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChTdHJpbmcubWFrZSBuICdgJyk7XG4gICAgICAgIGVuZDtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgbGV0IG4gPSAoKiBjb21wdXRlIGhvdyBtYW55IGJhY2txdW90ZXMgd2UgbmVlZCB0byB1c2UgKilcbiAgICAgICAgbGV0IGZpbHRlciBuIHMgPVxuICAgICAgICAgIGlmIG4gPiAwICYmIG4gPCAxMCB0aGVuXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIGUgLT4gZSA8PiBuKSBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggYyBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyBiIGkgPVxuICAgICAgICAgIGlmIGkgPSBsIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIGZpbHRlciBiIHMgd2l0aFxuICAgICAgICAgICAgICB8IGhkOjpfIC0+IGhkXG4gICAgICAgICAgICAgIHwgW10gLT4gMFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIGMuW2ldIHdpdGhcbiAgICAgICAgICAgIHwgJ2AnIC0+IGxvb3AgcyAoc3VjYyBiKSAoc3VjYyBpKVxuICAgICAgICAgICAgfCBfIC0+IGxvb3AgKGZpbHRlciBiIHMpIDAgKHN1Y2MgaSlcbiAgICAgICAgaW5cbiAgICAgICAgICBsb29wIFszOzQ7NTs2Ozc7ODs5OzEwXSAwIDBcbiAgICAgIGluXG4gICAgICBsZXQgb3V0cHV0X2luZGVudGVkX2Jsb2NrIG4gcyA9XG4gICAgICAgIGxldCByZWMgbG9vcCBwIGkgPVxuICAgICAgICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBwIHdpdGhcbiAgICAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiAoU3RyaW5nLm1ha2UgbiAnICcpO1xuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIHMuW2ldO1xuICAgICAgICAgICAgICAgIGxvb3Agcy5baV0gKHN1Y2MgaSlcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIHMuW2ldO1xuICAgICAgICAgICAgICAgIGxvb3Agcy5baV0gKHN1Y2MgaSlcbiAgICAgICAgaW4gbG9vcCAnXFxuJyAwXG4gICAgICBpblxuICAgICAgICBpZiBuID0gMCB0aGVuICAoKiBGSVhNRSAqKVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAoKiBjYXNlIHdoZXJlIHdlIGNhbid0IHVzZSBiYWNrcXVvdGVzICopXG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgICAgIG91dHB1dF9pbmRlbnRlZF9ibG9jayAoNCtsaXN0X2luZGVudCkgYztcbiAgICAgICAgICAgIGlmIHRsIDw+IFtdIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblxcblwiXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLm1ha2UgKGxpc3RfaW5kZW50KSAnICcpO1xuICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzJXNcXG5cIiAoU3RyaW5nLm1ha2UgbiAnYCcpXG4gICAgICAgICAgICAgIChpZiBsYW5nID0gXCJcIiB0aGVuICFkZWZhdWx0X2xhbmd1YWdlIGVsc2UgbGFuZyk7XG4gICAgICAgICAgICBvdXRwdXRfaW5kZW50ZWRfYmxvY2sgKGxpc3RfaW5kZW50KSBjO1xuICAgICAgICAgICAgaWYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJyB0aGVuXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLm1ha2UgKGxpc3RfaW5kZW50KSAnICcpO1xuICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXFxuXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgICBlbmQ7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEJyIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGJyIC8+XCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIciA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiogKiAqXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBSYXcgcyA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUmF3X2Jsb2NrIHMgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBbXSkgOjogdGxcbiAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiAvPlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgIGxldCBhID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYSk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgaWYgYSA9PSBhdHRycyB0aGVuXG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgYm9keVxuICAgICAgZWxzZVxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sX29mX21kIGJvZHkpO1xuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IChIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSk6OnRsIC0+XG4gICAgICBsZXQgbmVlZHNfbmV3bGluZXMgPVxuICAgICAgICBtYXRjaCB0bCB3aXRoXG4gICAgICAgIHwgTkwgOjogUGFyYWdyYXBoIHAgOjogX1xuICAgICAgICB8IFBhcmFncmFwaCBwIDo6IF8gLT4gcCA8PiBbXVxuICAgICAgICB8IChIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF9cbiAgICAgICAgICB8IFVsIF8gfCBPbCBfIHwgVWxwIF8gfCBPbHAgXyB8IENvZGUgKF8sIF8pIHwgQ29kZV9ibG9jayAoXywgXylcbiAgICAgICAgICB8IFRleHQgXyB8IEVtcGggXyB8IEJvbGQgXyB8IEJyIHxIciB8IFVybCAoXywgXywgXylcbiAgICAgICAgICB8IFJlZiAoXywgXywgXywgXykgfCBJbWdfcmVmIChfLCBfLCBfLCBfKVxuICAgICAgICAgIHwgSHRtbCAoXywgXywgXylcbiAgICAgICAgICB8IEJsb2NrcXVvdGUgXyB8IEltZyAoXywgXywgXykpIDo6IF8gLT4gdHJ1ZVxuICAgICAgICB8ICggSHRtbF9ibG9jayAoXywgXywgXykgfCBIdG1sX2NvbW1lbnQgX1xuICAgICAgICAgIHwgUmF3IF98UmF3X2Jsb2NrIF8pIDo6IF8tPiBmYWxzZVxuICAgICAgICB8IFggXyA6OiBfIC0+IGZhbHNlXG4gICAgICAgIHwgTkwgOjogXyAtPiBmYWxzZVxuICAgICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICBpblxuICAgICAgaWYgYm9keSA9IFtdICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgdGhlblxuICAgICAgICAoXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIC8+XCI7XG4gICAgICAgICAgaWYgbmVlZHNfbmV3bGluZXMgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXFxuXCI7XG4gICAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgICAgICApXG4gICAgICBlbHNlXG4gICAgICAgIChcbiAgICAgICAgICBsZXQgYSA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYSk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBpZiBhID09IGF0dHJzIHRoZW5cbiAgICAgICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgYm9keVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxfb2ZfbWQgYm9keSk7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgICAgICBpZiBuZWVkc19uZXdsaW5lcyB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cXG5cIjtcbiAgICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgICAgIClcbiAgICB8IEh0bWxfY29tbWVudCBzIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgIGlmIHRpdGxlID0gXCJcIiB0aGVuXG4gICAgICAgIGJwcmludGYgYiBcIlslc10oJXMpXCIgKG1hcmtkb3duX29mX21kIHMpIGhyZWZcbiAgICAgIGVsc2VcbiAgICAgICAgYnByaW50ZiBiIFwiWyVzXSglcyBcXFwiJXNcXFwiKVwiIChtYXJrZG93bl9vZl9tZCBzKSBocmVmIHRpdGxlO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDEgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEgyIG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDMgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDQgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEg1IG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgTkwgOjogdGwgLT5cbiAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA9IDFcbiAgICAgIHx8IChCdWZmZXIubGVuZ3RoIGIgPiAxICYmXG4gICAgICAgICAgbm90KEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPSAnXFxuJ1xuICAgICAgICAgICAgICAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDIpID0gJ1xcbicpKVxuICAgICAgdGhlblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgICBsb29wIDAgbWQ7XG4gICAgYmVnaW4gbWF0Y2ggIXJlZmVyZW5jZXMgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgciAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1biAobmFtZSwgKHVybCwgdGl0bGUpKSAtPlxuICAgICAgICAgICAgICAgaWYgdGl0bGUgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgYnByaW50ZiBiIFwiWyVzXTogJXMgXFxuXCIgbmFtZSB1cmxcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgYnByaW50ZiBiIFwiWyVzXTogJXMgXFxcIiVzXFxcIlxcblwiIG5hbWUgdXJsIHRpdGxlXG4gICAgICAgICAgICApXG4gICAgICAgICAgICByI2dldF9hbGxcbiAgICBlbmQ7XG4gICAgbGV0IHJlcyA9IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIG1hcmtkb3duX29mX21kKCVTKSA9PiAlU1xcbiUhXCJcbiAgICAgICAgKHNleHByX29mX21kIG1kKSByZXM7XG4gICAgcmVzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEltcGxlbWVudGF0aW9uIG5vdGVzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICAqIC0gVGhpcyBtb2R1bGUgc2hvdWxkIGRlcGVuZCBvbiBPQ2FtbCdzIHN0YW5kYXJkIGxpYnJhcnkgb25seSBhbmRcbiAgICogc2hvdWxkIGJlIGFzICdwdXJlIE9DYW1sJyAoaS5lLiBkZXBlbmQgYXMgbGVhc3QgYXMgcG9zc2libGUgb25cbiAgICogZXh0ZXJuYWwgdG9vbHMpIGFzIHBvc3NpYmxlLlxuXG4gICAqIC0gYHdoaWxlJyBsb29wcyBhcmUgc29tZXRpbWVzIHByZWZlcnJlZCB0byByZWN1cnNpb24gYmVjYXVzZSB0aGlzXG4gICAqIG1heSBiZSB1c2VkIG9uIHN5c3RlbXMgd2hlcmUgdGFpbCByZWN1cnNpb24gaXMgbm90IHdlbGxcbiAgICogc3VwcG9ydGVkLiAoSSB0cmllZCB0byB3cml0ZSBcIndoaWxlXCIgYXMgb2Z0ZW4gYXMgcG9zc2libGUsIGJ1dCBpdFxuICAgKiB0dXJuZWQgb3V0IHRoYXQgaXQgd2FzIHByZXR0eSBpbmNvbnZlbmllbnQsIHNvIEkgZG8gdXNlXG4gICAqIHJlY3Vyc2lvbi4gIFdoZW4gSSBoYXZlIHRpbWUsIEknbGwgZG8gc29tZSB0ZXN0cyBhbmQgc2VlIGlmIElcbiAgICogbmVlZCB0byBjb252ZXJ0IHJlY3Vyc2l2ZSBsb29wcyBpbnRvIGl0ZXJhdGl2ZSBsb29wcy4gU29ycnkgaWYgaXRcbiAgICogbWFrZXMgaXQgaGFyZGVyIHRvIHJlYWQuKVxuXG4qKVxuXG4oKiBjbGFzcyB0eXBlIHRhZyA9IG9iamVjdCBtZXRob2QgaXNfbWUgOiAnYS4gJ2EgLT4gYm9vbCBlbmQgKilcblxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cblxudHlwZSB0b2tlbiA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2tcbnR5cGUgdCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuXG5sZXQgc3RyaW5nX29mX3Rva2VuID0gZnVuY3Rpb25cbiAgfCBUYWcgKG5hbWUsIG8pIC0+XG4gICAgaWYgT21kX3V0aWxzLmRlYnVnIHRoZW4gXCJUQUcoXCJebmFtZV5cIilcIiBeIG8jdG9fc3RyaW5nIGVsc2UgbyN0b19zdHJpbmdcbiAgfCBBbXBlcnNhbmQgLT4gXCImXCJcbiAgfCBBbXBlcnNhbmRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnJidcbiAgfCBBdCAtPiBcIkBcIlxuICB8IEF0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ0AnXG4gIHwgQmFja3F1b3RlIC0+IFwiYFwiXG4gIHwgQmFja3F1b3RlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ2AnXG4gIHwgQmFja3NsYXNoIC0+IFwiXFxcXFwiXG4gIHwgQmFja3NsYXNocyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1xcXFwnXG4gIHwgQmFyIC0+IFwifFwiXG4gIHwgQmFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ3wnXG4gIHwgQ2FyZXQgLT4gXCJeXCJcbiAgfCBDYXJldHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdeJ1xuICB8IENicmFjZSAtPiBcIn1cIlxuICB8IENicmFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd9J1xuICB8IENvbG9uIC0+IFwiOlwiXG4gIHwgQ29sb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnOidcbiAgfCBDb21tYSAtPiBcIixcIlxuICB8IENvbW1hcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJywnXG4gIHwgQ3BhcmVudGhlc2lzIC0+IFwiKVwiXG4gIHwgQ3BhcmVudGhlc2lzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyknXG4gIHwgQ2JyYWNrZXQgLT4gXCJdXCJcbiAgfCBDYnJhY2tldHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICddJ1xuICB8IERvbGxhciAtPiBcIiRcIlxuICB8IERvbGxhcnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICckJ1xuICB8IERvdCAtPiBcIi5cIlxuICB8IERvdHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcuJ1xuICB8IERvdWJsZXF1b3RlIC0+IFwiXFxcIlwiXG4gIHwgRG91YmxlcXVvdGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXCInXG4gIHwgRXhjbGFtYXRpb24gLT4gXCIhXCJcbiAgfCBFeGNsYW1hdGlvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICchJ1xuICB8IEVxdWFsIC0+IFwiPVwiXG4gIHwgRXF1YWxzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPSdcbiAgfCBHcmVhdGVydGhhbiAtPiBcIj5cIlxuICB8IEdyZWF0ZXJ0aGFucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJz4nXG4gIHwgSGFzaCAtPiBcIiNcIlxuICB8IEhhc2hzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnIydcbiAgfCBMZXNzdGhhbiAtPiBcIjxcIlxuICB8IExlc3N0aGFucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJzwnXG4gIHwgTWludXMgLT4gXCItXCJcbiAgfCBNaW51c3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICctJ1xuICB8IE5ld2xpbmUgLT4gXCJcXG5cIlxuICB8IE5ld2xpbmVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXFxuJ1xuICB8IE51bWJlciBzIC0+IHNcbiAgfCBPYnJhY2UgLT4gXCJ7XCJcbiAgfCBPYnJhY2VzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAneydcbiAgfCBPcGFyZW50aGVzaXMgLT4gXCIoXCJcbiAgfCBPcGFyZW50aGVzaXNzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKCdcbiAgfCBPYnJhY2tldCAtPiBcIltcIlxuICB8IE9icmFja2V0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1snXG4gIHwgUGVyY2VudCAtPiBcIiVcIlxuICB8IFBlcmNlbnRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnJSdcbiAgfCBQbHVzIC0+IFwiK1wiXG4gIHwgUGx1c3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcrJ1xuICB8IFF1ZXN0aW9uIC0+IFwiP1wiXG4gIHwgUXVlc3Rpb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPydcbiAgfCBRdW90ZSAtPiBcIidcIlxuICB8IFF1b3RlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1xcJydcbiAgfCBTZW1pY29sb24gLT4gXCI7XCJcbiAgfCBTZW1pY29sb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnOydcbiAgfCBTbGFzaCAtPiBcIi9cIlxuICB8IFNsYXNocyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJy8nXG4gIHwgU3BhY2UgLT4gXCIgXCJcbiAgfCBTcGFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcgJ1xuICB8IFN0YXIgLT4gXCIqXCJcbiAgfCBTdGFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyonXG4gIHwgVGFiIC0+IFwiICAgIFwiXG4gIHwgVGFicyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKCgyK24pKjQpICcgJ1xuICB8IFRpbGRlIC0+IFwiflwiXG4gIHwgVGlsZGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnfidcbiAgfCBVbmRlcnNjb3JlIC0+IFwiX1wiXG4gIHwgVW5kZXJzY29yZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdfJ1xuICB8IFdvcmQgcyAtPiBzXG5cblxubGV0IHNpemVfYW5kX25ld2xpbmVzID0gZnVuY3Rpb25cbiAgfCBUYWcgXyAtPiAoMCwgMClcbiAgfCBBbXBlcnNhbmQgfCBBdCB8IEJhY2txdW90ZSB8IEJhY2tzbGFzaCB8IEJhciB8IENhcmV0IHwgQ2JyYWNlXG4gIHwgQ29sb24gfCBDb21tYSB8IENwYXJlbnRoZXNpcyB8IENicmFja2V0IHwgRG9sbGFyIHwgRG90XG4gIHwgRG91YmxlcXVvdGUgfCBFeGNsYW1hdGlvbiB8IEVxdWFsIHwgR3JlYXRlcnRoYW4gfCBIYXNoIHwgTGVzc3RoYW5cbiAgfCBNaW51cyB8IE9icmFjZSB8IE9wYXJlbnRoZXNpcyB8IE9icmFja2V0IHwgUGVyY2VudCB8IFBsdXNcbiAgfCBRdWVzdGlvbiB8IFF1b3RlIHwgU2VtaWNvbG9uIHwgU2xhc2ggfCBTcGFjZSB8IFN0YXIgfCBUYWJcbiAgfCBUaWxkZSB8IFVuZGVyc2NvcmUgLT4gKDEsIDApXG4gIHwgQW1wZXJzYW5kcyB4IHwgQXRzIHggfCBCYWNrcXVvdGVzIHggfCBCYWNrc2xhc2hzIHggfCBCYXJzIHggfCBDYXJldHMgeFxuICB8IENicmFjZXMgeCB8IENvbG9ucyB4IHwgQ29tbWFzIHggfCBDcGFyZW50aGVzaXNzIHggfCBDYnJhY2tldHMgeFxuICB8IERvbGxhcnMgeCB8IERvdHMgeFxuICB8IERvdWJsZXF1b3RlcyB4IHwgRXhjbGFtYXRpb25zIHggfCBFcXVhbHMgeCB8IEdyZWF0ZXJ0aGFucyB4IHwgSGFzaHMgeFxuICB8IExlc3N0aGFucyB4XG4gIHwgTWludXNzIHggfCBPYnJhY2VzIHggfCBPcGFyZW50aGVzaXNzIHggfCBPYnJhY2tldHMgeCB8IFBlcmNlbnRzIHggfCBQbHVzcyB4XG4gIHwgUXVlc3Rpb25zIHggfCBRdW90ZXMgeCB8IFNlbWljb2xvbnMgeCB8IFNsYXNocyB4IHwgU3BhY2VzIHggfCBTdGFycyB4XG4gIHwgVGFicyB4XG4gIHwgVGlsZGVzIHggfCBVbmRlcnNjb3JlcyB4IC0+ICgyK3gsIDApXG4gIHwgTmV3bGluZSAtPiAoMCwgMSlcbiAgfCBOZXdsaW5lcyB4IC0+ICgwLCAyK3gpXG4gIHwgTnVtYmVyIHMgfCBXb3JkIHMgLT4gKFN0cmluZy5sZW5ndGggcywgMClcblxubGV0IGxlbmd0aCB0ID1cbiAgbGV0IGMsIG5sID0gc2l6ZV9hbmRfbmV3bGluZXMgdCBpblxuICBjICsgbmxcblxubGV0IHNwbGl0X2ZpcnN0ID0gZnVuY3Rpb25cbiAgfCBBbXBlcnNhbmRzIG4gLT4gQW1wZXJzYW5kLCAoaWYgbiA+IDAgdGhlbiBBbXBlcnNhbmRzKG4tMSkgZWxzZSBBbXBlcnNhbmQpXG4gIHwgQXRzIG4gLT4gQXQsIChpZiBuID4gMCB0aGVuIEF0cyhuLTEpIGVsc2UgQXQpXG4gIHwgQmFja3F1b3RlcyBuIC0+IEJhY2txdW90ZSwgKGlmIG4gPiAwIHRoZW4gQmFja3F1b3RlcyhuLTEpIGVsc2UgQmFja3F1b3RlKVxuICB8IEJhY2tzbGFzaHMgbiAtPiBCYWNrc2xhc2gsIChpZiBuID4gMCB0aGVuIEJhY2tzbGFzaHMobi0xKSBlbHNlIEJhY2tzbGFzaClcbiAgfCBCYXJzIG4gLT4gQmFyLCAoaWYgbiA+IDAgdGhlbiBCYXJzKG4tMSkgZWxzZSBCYXIpXG4gIHwgQ2FyZXRzIG4gLT4gQ2FyZXQsIChpZiBuID4gMCB0aGVuIENhcmV0cyhuLTEpIGVsc2UgQ2FyZXQpXG4gIHwgQ2JyYWNlcyBuIC0+IENicmFjZSwgKGlmIG4gPiAwIHRoZW4gQ2JyYWNlcyhuLTEpIGVsc2UgQ2JyYWNlKVxuICB8IENvbG9ucyBuIC0+IENvbG9uLCAoaWYgbiA+IDAgdGhlbiBDb2xvbnMobi0xKSBlbHNlIENvbG9uKVxuICB8IENvbW1hcyBuIC0+IENvbW1hLCAoaWYgbiA+IDAgdGhlbiBDb21tYXMobi0xKSBlbHNlIENvbW1hKVxuICB8IENwYXJlbnRoZXNpc3MgbiAtPiBDcGFyZW50aGVzaXMsIChpZiBuID4gMCB0aGVuIENwYXJlbnRoZXNpc3Mobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQ3BhcmVudGhlc2lzKVxuICB8IENicmFja2V0cyBuIC0+IENicmFja2V0LCAoaWYgbiA+IDAgdGhlbiBDYnJhY2tldHMobi0xKSBlbHNlIENicmFja2V0KVxuICB8IERvbGxhcnMgbiAtPiBEb2xsYXIsIChpZiBuID4gMCB0aGVuIERvbGxhcnMobi0xKSBlbHNlIERvbGxhcilcbiAgfCBEb3RzIG4gLT4gRG90LCAoaWYgbiA+IDAgdGhlbiBEb3RzKG4tMSkgZWxzZSBEb3QpXG4gIHwgRG91YmxlcXVvdGVzIG4gLT4gRG91YmxlcXVvdGUsIChpZiBuID4gMCB0aGVuIERvdWJsZXF1b3RlcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRG91YmxlcXVvdGUpXG4gIHwgRXhjbGFtYXRpb25zIG4gLT4gRXhjbGFtYXRpb24sIChpZiBuID4gMCB0aGVuIEV4Y2xhbWF0aW9ucyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRXhjbGFtYXRpb24pXG4gIHwgRXF1YWxzIG4gLT4gRXF1YWwsIChpZiBuID4gMCB0aGVuIEVxdWFscyhuLTEpIGVsc2UgRXF1YWwpXG4gIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW4sIChpZiBuID4gMCB0aGVuIEdyZWF0ZXJ0aGFucyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgR3JlYXRlcnRoYW4pXG4gIHwgSGFzaHMgbiAtPiBIYXNoLCAoaWYgbiA+IDAgdGhlbiBIYXNocyhuLTEpIGVsc2UgSGFzaClcbiAgfCBMZXNzdGhhbnMgbiAtPiBMZXNzdGhhbiwgKGlmIG4gPiAwIHRoZW4gTGVzc3RoYW5zKG4tMSkgZWxzZSBMZXNzdGhhbilcbiAgfCBNaW51c3MgbiAtPiBNaW51cywgKGlmIG4gPiAwIHRoZW4gTWludXNzKG4tMSkgZWxzZSBNaW51cylcbiAgfCBOZXdsaW5lcyBuIC0+IE5ld2xpbmUsIChpZiBuID4gMCB0aGVuIE5ld2xpbmVzKG4tMSkgZWxzZSBOZXdsaW5lKVxuICB8IE9icmFjZXMgbiAtPiBPYnJhY2UsIChpZiBuID4gMCB0aGVuIE9icmFjZXMobi0xKSBlbHNlIE9icmFjZSlcbiAgfCBPcGFyZW50aGVzaXNzIG4gLT4gT3BhcmVudGhlc2lzLCAoaWYgbiA+IDAgdGhlbiBPcGFyZW50aGVzaXNzKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9wYXJlbnRoZXNpcylcbiAgfCBPYnJhY2tldHMgbiAtPiBPYnJhY2tldCwgKGlmIG4gPiAwIHRoZW4gT2JyYWNrZXRzKG4tMSkgZWxzZSBPYnJhY2tldClcbiAgfCBQZXJjZW50cyBuIC0+IFBlcmNlbnQsIChpZiBuID4gMCB0aGVuIFBlcmNlbnRzKG4tMSkgZWxzZSBQZXJjZW50KVxuICB8IFBsdXNzIG4gLT4gUGx1cywgKGlmIG4gPiAwIHRoZW4gUGx1c3Mobi0xKSBlbHNlIFBsdXMpXG4gIHwgUXVlc3Rpb25zIG4gLT4gUXVlc3Rpb24sIChpZiBuID4gMCB0aGVuIFF1ZXN0aW9ucyhuLTEpIGVsc2UgUXVlc3Rpb24pXG4gIHwgUXVvdGVzIG4gLT4gUXVvdGUsIChpZiBuID4gMCB0aGVuIFF1b3RlcyhuLTEpIGVsc2UgUXVvdGUpXG4gIHwgU2VtaWNvbG9ucyBuIC0+IFNlbWljb2xvbiwgKGlmIG4gPiAwIHRoZW4gU2VtaWNvbG9ucyhuLTEpIGVsc2UgU2VtaWNvbG9uKVxuICB8IFNsYXNocyBuIC0+IFNsYXNoLCAoaWYgbiA+IDAgdGhlbiBTbGFzaHMobi0xKSBlbHNlIFNsYXNoKVxuICB8IFNwYWNlcyBuIC0+IFNwYWNlLCAoaWYgbiA+IDAgdGhlbiBTcGFjZXMobi0xKSBlbHNlIFNwYWNlKVxuICB8IFN0YXJzIG4gLT4gU3RhciwgKGlmIG4gPiAwIHRoZW4gU3RhcnMobi0xKSBlbHNlIFN0YXIpXG4gIHwgVGFicyBuIC0+IFRhYiwgKGlmIG4gPiAwIHRoZW4gVGFicyhuLTEpIGVsc2UgVGFiKVxuICB8IFRpbGRlcyBuIC0+IFRpbGRlLCAoaWYgbiA+IDAgdGhlbiBUaWxkZXMobi0xKSBlbHNlIFRpbGRlKVxuICB8IFVuZGVyc2NvcmVzIG4gLT4gVW5kZXJzY29yZSwgKGlmIG4gPiAwIHRoZW4gVW5kZXJzY29yZXMobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVbmRlcnNjb3JlKVxuICB8IEFtcGVyc2FuZCB8IEF0IHwgQmFja3F1b3RlIHwgQmFja3NsYXNoIHwgQmFyIHwgQ2FyZXQgfCBDYnJhY2UgfCBDb2xvblxuICB8IENvbW1hIHwgQ3BhcmVudGhlc2lzIHwgQ2JyYWNrZXQgfCBEb2xsYXIgfCBEb3QgfCBEb3VibGVxdW90ZVxuICB8IEV4Y2xhbWF0aW9uIHwgRXF1YWwgfCBHcmVhdGVydGhhbiB8IEhhc2ggfCBMZXNzdGhhbiB8IE1pbnVzXG4gIHwgTmV3bGluZSB8IE51bWJlciBfIHwgT2JyYWNlIHwgT3BhcmVudGhlc2lzIHwgT2JyYWNrZXQgfCBQZXJjZW50XG4gIHwgUGx1cyB8IFF1ZXN0aW9uIHwgUXVvdGUgfCBTZW1pY29sb24gfCBTbGFzaCB8IFNwYWNlIHwgU3RhciB8IFRhYlxuICB8IFRpbGRlIHwgVW5kZXJzY29yZSB8IFRhZyBfIHwgV29yZCBfIC0+XG4gICAgIGludmFsaWRfYXJnIFwiT21kX2xleGVyLnNwbGl0X2ZpcnN0XCJcblxubW9kdWxlIHR5cGUgSW5wdXQgPVxuc2lnXG4gIHR5cGUgdFxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGdldCA6IHQgLT4gaW50IC0+IGNoYXJcbiAgdmFsIHN1YiA6IHQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IHN0cmluZ1xuZW5kXG5cbm1vZHVsZSBMZXgoSSA6IElucHV0KSA6XG5zaWdcbiAgdmFsIGxleCA6IEkudCAtPiB0XG5lbmQgPVxuc3RydWN0XG4gIGxldCBsZXggKHMgOiBJLnQpID1cbiAgICBsZXQgcmVzdWx0ID0gcmVmIFtdIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsID0gSS5sZW5ndGggcyBpblxuICAgIGxldCByY291bnQgYyA9XG4gICAgICAoKiBbcmNvdW50IGNdIHJldHVybnMgdGhlIG51bWJlciBvZiBpbW1lZGlhdGUgY29uc2VjdXRpdmVcbiAgICAgICAgIG9jY3VycmVuY2VzIG9mIFtjXS4gIEJ5IHNpZGUtZWZmZWN0LCBpdCBpbmNyZWFzZXMgdGhlIHJlZmVyZW5jZVxuICAgICAgICAgY291bnRlciBbaV0uICopXG4gICAgICBsZXQgcmVjIGxvb3AgciA9XG4gICAgICAgIGlmICFpID0gbCB0aGVuIHJcbiAgICAgICAgZWxzZSBpZiBJLmdldCBzICFpID0gYyB0aGVuIChpbmNyIGk7IGxvb3AgKHIrMSkpXG4gICAgICAgIGVsc2UgclxuICAgICAgaW5cbiAgICAgIGxvb3AgMVxuICAgIGluXG4gICAgbGV0IHdvcmQgKCkgPVxuICAgICAgbGV0IHN0YXJ0ID0gIWkgaW5cbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgaWYgIWkgPSBsIHRoZW5cbiAgICAgICAgICAgIFdvcmQoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBJLmdldCBzICFpIHdpdGhcbiAgICAgICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIHwgJyMnIHwgJyonIHwgJy0nIHwgJysnIHwgJ2AnIHwgJ1xcJydcbiAgICAgICAgICAgIHwgJ1wiJyB8ICdcXFxcJyB8ICdfJyB8ICdbJyB8ICddJyB8ICd7JyB8ICd9JyB8ICcoJyB8ICcpJyB8ICc6J1xuICAgICAgICAgICAgfCAnOycgfCAnPicgfCAnficgfCAnPCcgfCAnQCcgfCAnJicgfCAnfCcgfCAnXicgfCAnLicgfCAnLydcbiAgICAgICAgICAgIHwgJyQnIHwgJyUnIHwgJyEnIHwgJz8nIHwgJz0nIC0+XG4gICAgICAgICAgICAgICAgV29yZChJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgICAgICAgfCBjIC0+IGluY3IgaTsgbG9vcCgpXG4gICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGxvb3AoKVxuICAgIGluXG4gICAgbGV0IG1heWJlX251bWJlciAoKSA9XG4gICAgICBsZXQgc3RhcnQgPSAhaSBpblxuICAgICAgd2hpbGVcbiAgICAgICAgIWkgPCBsICYmXG4gICAgICAgIG1hdGNoIEkuZ2V0IHMgIWkgd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGRvXG4gICAgICAgIGluY3IgaVxuICAgICAgZG9uZTtcbiAgICAgIGlmICFpID0gbCB0aGVuXG4gICAgICAgIE51bWJlcihJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBJLmdldCBzICFpIHdpdGhcbiAgICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyB8ICcjJyB8ICcqJyB8ICctJyB8ICcrJyB8ICdgJyB8ICdcXCcnIHwgJ1wiJ1xuICAgICAgICAgIHwgJ1xcXFwnIHwgJ18nIHwgJ1snIHwgJ10nIHwgJ3snIHwgJ30nIHwgJygnIHwgJyknIHwgJzonIHwgJzsnIHwgJz4nXG4gICAgICAgICAgfCAnficgfCAnPCcgfCAnQCcgfCAnJicgfCAnfCcgfCAnXicgfCAnLicgfCAnLycgfCAnJCcgfCAnJScgfCAnISdcbiAgICAgICAgICB8ICc/JyB8ICc9JyAtPlxuICAgICAgICAgICAgICBOdW1iZXIoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaSA6PSBzdGFydDtcbiAgICAgICAgICAgICAgd29yZCgpXG4gICAgICAgIGVuZFxuICAgIGluXG5cbiAgICBsZXQgbl9vY2MgYyA9IGluY3IgaTsgcmNvdW50IGMgaW5cblxuICAgIHdoaWxlICFpIDwgbCBkb1xuICAgICAgbGV0IGMgPSBJLmdldCBzICFpIGluXG4gICAgICBsZXQgdyA9IG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcgJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU3BhY2UgZWxzZSBTcGFjZXMgKG4tMilcbiAgICAgICAgfCAnXFx0JyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTcGFjZXMoMikgZWxzZSBTcGFjZXMoNCpuLTIpXG4gICAgICAgIHwgJ1xcbicgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gTmV3bGluZSBlbHNlIE5ld2xpbmVzIChuLTIpXG4gICAgICAgIHwgJ1xccicgLT4gKCogZWxpbWluYXRpbmcgXFxyIGJ5IGNvbnZlcnRpbmcgYWxsIHN0eWxlcyB0byB1bml4IHN0eWxlICopXG4gICAgICAgICAgaW5jciBpO1xuICAgICAgICAgIGxldCByZWMgY291bnRfcm4geCA9XG4gICAgICAgICAgICBpZiAhaSA8IGwgJiYgSS5nZXQgcyAoIWkpID0gJ1xcbicgdGhlblxuICAgICAgICAgICAgICBpZiAhaSArIDEgPCBsICYmIEkuZ2V0IHMgKCFpKzEpID0gJ1xccicgdGhlblxuICAgICAgICAgICAgICAgIChpIDo9ICFpICsgMjsgY291bnRfcm4gKHgrMSkpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB4XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBybiA9IDEgKyBjb3VudF9ybiAwIGluXG4gICAgICAgICAgaWYgcm4gPSAxIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIG5fb2NjIGMgd2l0aFxuICAgICAgICAgICAgfCAxIC0+IE5ld2xpbmVcbiAgICAgICAgICAgIHwgeCAtPiBhc3NlcnQoeD49Mik7IE5ld2xpbmVzKHgtMilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoYXNzZXJ0KHJuPj0yKTtOZXdsaW5lcyhybi0yKSlcbiAgICAgICAgfCAnIycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEhhc2ggZWxzZSBIYXNocyAobi0yKVxuICAgICAgICB8ICcqJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU3RhciBlbHNlIFN0YXJzIChuLTIpXG4gICAgICAgIHwgJy0nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBNaW51cyBlbHNlIE1pbnVzcyAobi0yKVxuICAgICAgICB8ICcrJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUGx1cyBlbHNlIFBsdXNzIChuLTIpXG4gICAgICAgIHwgJ2AnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBCYWNrcXVvdGUgZWxzZSBCYWNrcXVvdGVzIChuLTIpXG4gICAgICAgIHwgJ1xcJycgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUXVvdGUgZWxzZSBRdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXCInICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb3VibGVxdW90ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBEb3VibGVxdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXFxcXCcgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQmFja3NsYXNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEJhY2tzbGFzaHMgKG4tMilcbiAgICAgICAgfCAnXycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFVuZGVyc2NvcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVW5kZXJzY29yZXMgKG4tMilcbiAgICAgICAgfCAnWycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9icmFja2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9icmFja2V0cyAobi0yKVxuICAgICAgICB8ICddJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2JyYWNrZXQgZWxzZSBDYnJhY2tldHMgKG4tMilcbiAgICAgICAgfCAneycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9icmFjZSBlbHNlIE9icmFjZXMgKG4tMilcbiAgICAgICAgfCAnfScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENicmFjZSBlbHNlIENicmFjZXMgKG4tMilcbiAgICAgICAgfCAnKCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9wYXJlbnRoZXNpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBPcGFyZW50aGVzaXNzIChuLTIpXG4gICAgICAgIHwgJyknICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDcGFyZW50aGVzaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQ3BhcmVudGhlc2lzcyAobi0yKVxuICAgICAgICB8ICc6JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ29sb24gZWxzZSBDb2xvbnMgKG4tMilcbiAgICAgICAgfCAnOycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNlbWljb2xvbiBlbHNlIFNlbWljb2xvbnMgKG4tMilcbiAgICAgICAgfCAnPicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEdyZWF0ZXJ0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEdyZWF0ZXJ0aGFucyAobi0yKVxuICAgICAgICB8ICd+JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gVGlsZGUgZWxzZSBUaWxkZXMgKG4tMilcbiAgICAgICAgfCAnPCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIExlc3N0aGFuIGVsc2UgTGVzc3RoYW5zIChuLTIpXG4gICAgICAgIHwgJ0AnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBBdCBlbHNlIEF0cyAobi0yKVxuICAgICAgICB8ICcmJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQW1wZXJzYW5kIGVsc2UgQW1wZXJzYW5kcyAobi0yKVxuICAgICAgICB8ICd8JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQmFyIGVsc2UgQmFycyAobi0yKVxuICAgICAgICB8ICdeJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2FyZXQgZWxzZSBDYXJldHMgKG4tMilcbiAgICAgICAgfCAnLCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENvbW1hIGVsc2UgQ29tbWFzIChuLTIpXG4gICAgICAgIHwgJy4nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb3QgZWxzZSBEb3RzIChuLTIpXG4gICAgICAgIHwgJy8nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTbGFzaCBlbHNlIFNsYXNocyAobi0yKVxuICAgICAgICB8ICckJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRG9sbGFyIGVsc2UgRG9sbGFycyAobi0yKVxuICAgICAgICB8ICclJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUGVyY2VudCBlbHNlIFBlcmNlbnRzIChuLTIpXG4gICAgICAgIHwgJz0nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBFcXVhbCBlbHNlIEVxdWFscyAobi0yKVxuICAgICAgICB8ICchJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRXhjbGFtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRXhjbGFtYXRpb25zIChuLTIpXG4gICAgICAgIHwgJz8nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBRdWVzdGlvbiBlbHNlIFF1ZXN0aW9ucyAobi0yKVxuICAgICAgICB8ICcwJyAuLiAnOScgLT4gbWF5YmVfbnVtYmVyKClcbiAgICAgICAgfCBjIC0+IHdvcmQoKSBpblxuICAgICAgcmVzdWx0IDo9IHcgOjogIXJlc3VsdFxuICAgIGRvbmU7XG4gICAgTGlzdC5yZXYgIXJlc3VsdFxuZW5kXG5cbm1vZHVsZSBMZXhfc3RyaW5nID0gTGV4KFN0cmluZ0xhYmVscylcbmxldCBsZXggPSBMZXhfc3RyaW5nLmxleFxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLFxuICAgICAgICAgICAgICAgICAgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsXG4gICAgICAgICAgICAgICAgICBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxubW9kdWxlIEJpZ2FycmF5X2lucHV0IDogSW5wdXQgd2l0aCB0eXBlIHQgPSBiaWdzdHJpbmcgPVxuc3RydWN0XG4gIG1vZHVsZSBCQSA9IEJpZ2FycmF5XG5cbiAgdHlwZSB0ID0gYmlnc3RyaW5nXG4gIGxldCBnZXQgPSBCQS5BcnJheTEuZ2V0XG4gIGxldCBsZW5ndGggPSBCQS5BcnJheTEuZGltXG4gIGxldCBzdWIgYXJyIH5wb3MgfmxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBwb3MgPCAwIHx8IHBvcyArIGxlbiA+IEJBLkFycmF5MS5kaW0gYXJyXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5X2lucHV0LnN1YlwiO1xuICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBCeXRlcy51bnNhZmVfc2V0IHMgaSAoQkEuQXJyYXkxLnVuc2FmZV9nZXQgYXJyIChpICsgcG9zKSlcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc1xuZW5kXG5tb2R1bGUgTGV4X2JpZ2FycmF5ID0gTGV4KEJpZ2FycmF5X2lucHV0KVxubGV0IGxleF9iaWdhcnJheSA9IExleF9iaWdhcnJheS5sZXhcblxubGV0IG1ha2Vfc3BhY2UgPSBmdW5jdGlvblxuICB8IDAgLT4gaW52YWxpZF9hcmcgXCJPbWRfbGV4ZXIubWFrZV9zcGFjZVwiXG4gIHwgMSAtPiBTcGFjZVxuICB8IG4gLT4gaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIk9tZF9sZXhlci5tYWtlX3NwYWNlXCIgZWxzZSBTcGFjZXMgKG4tMilcblxuXG4oKlxuKCoqIFtzdHJpbmdfb2ZfdGwgbF0gcmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGwuXG4gICAgW2VzdHJpbmdfb2ZfdGwgbF0gcmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbFxuICAgIChzYW1lIHNlbWFudGljcyBhcyBbU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90bCBsKV0pLiAqKVxubGV0IHN0cmluZ19vZl90bCwgZXN0cmluZ19vZl90bCA9XG4gIGxldCBnIGVzY2FwZWQgdGwgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA0MiBpblxuICAgIGxldCByZWMgbG9vcCA6ICdhIHQgbGlzdCAtPiB1bml0ID0gZnVuY3Rpb25cbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChpZiBlc2NhcGVkIHRoZW4gU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90IGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzdHJpbmdfb2ZfdCBlKTtcbiAgICAgICAgICBsb29wIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgKClcbiAgICBpblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIChsb29wIHRsOyBiKVxuICBpbiBnIGZhbHNlLCBnIHRydWVcbiopXG5cbmxldCBzdHJpbmdfb2ZfdG9rZW5zIHRsID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICBMaXN0Lml0ZXIgKGZ1biBlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl90b2tlbiBlKSkgdGw7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IGRlc3RyaW5nX29mX3Rva2VucyA/KGxpbWl0PW1heF9pbnQpIHRsID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgbGV0IHJlYyBsb29wIChpOmludCkgKHRsaXN0OnRvayBsaXN0KSA6IHVuaXQgPSBtYXRjaCB0bGlzdCB3aXRoXG4gICAgfCBlOjp0bCAtPlxuICAgICAgICBpZiBsaW1pdCA9IGkgdGhlblxuICAgICAgICAgIGxvb3AgaSBbXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKFN0cmluZy5lc2NhcGVkIChzdHJpbmdfb2ZfdG9rZW4gZSkpO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjo6XCI7XG4gICAgICAgICAgICBsb29wIChzdWNjIGkpIHRsXG4gICAgICAgICAgZW5kXG4gICAgfCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiW11cIlxuICBpblxuICAgIEJ1ZmZlci5jb250ZW50cyAobG9vcCAwIHRsOyBiKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMtMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgc2RlYnVnID0gdHJ1ZVxuXG5vcGVuIFByaW50Zlxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cbm9wZW4gT21kX3V0aWxzXG5tb2R1bGUgTCA9IE9tZF9sZXhlclxuXG50eXBlIHIgPSBPbWRfcmVwcmVzZW50YXRpb24udFxuKCoqIGFjY3VtdWxhdG9yIChiZXdhcmUsIHJldmVyc2VkIHRva2VucykgKilcblxuYW5kIHAgPSBPbWRfcmVwcmVzZW50YXRpb24udG9rIGxpc3RcbigqKiBjb250ZXh0IGluZm9ybWF0aW9uOiBwcmV2aW91cyBlbGVtZW50cyAqKVxuXG5hbmQgbCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuKCoqIHRva2VucyB0byBwYXJzZSAqKVxuXG5hbmQgbWFpbl9sb29wID1cbiAgP2h0bWw6Ym9vbCAtPlxuICByIC0+ICgqIGFjY3VtdWxhdG9yIChiZXdhcmUsIHJldmVyc2VkIHRva2VucykgKilcbiAgcCAtPiAoKiBpbmZvOiBwcmV2aW91cyBlbGVtZW50cyAqKVxuICBsIC0+ICgqIHRva2VucyB0byBwYXJzZSAqKVxuICBPbWRfcmVwcmVzZW50YXRpb24udCAoKiBmaW5hbCByZXN1bHQgKilcbigqKiBtb3N0IGltcG9ydGFudCBsb29wICopXG5cblxuKCoqIE4uQi4gUGxlYXNlIGRvIG5vdCB1c2UgdGFidWxhdGlvbnMgaW4geW91ciBNYXJrZG93biBmaWxlISAqKVxuXG5tb2R1bGUgdHlwZSBFbnYgPSBzaWdcbiAgdmFsIHJjOiBPbWRfcmVwcmVzZW50YXRpb24ucmVmX2NvbnRhaW5lclxuICB2YWwgZXh0ZW5zaW9ucyA6IE9tZF9yZXByZXNlbnRhdGlvbi5leHRlbnNpb25zXG4gIHZhbCBkZWZhdWx0X2xhbmcgOiBzdHJpbmdcbiAgdmFsIGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgOiBib29sXG4gIHZhbCBibGluZF9odG1sIDogYm9vbFxuICB2YWwgc3RyaWN0X2h0bWwgOiBib29sXG4gIHZhbCB3YXJuaW5nIDogYm9vbFxuICB2YWwgd2Fybl9lcnJvciA6IGJvb2xcbmVuZFxuXG5tb2R1bGUgVW5pdCA9IHN0cnVjdCBlbmRcblxubW9kdWxlIERlZmF1bHRfZW52IChVbml0OnNpZyBlbmQpIDogRW52ID0gc3RydWN0XG4gIGxldCByYyA9IG5ldyBPbWRfcmVwcmVzZW50YXRpb24ucmVmX2NvbnRhaW5lclxuICBsZXQgZXh0ZW5zaW9ucyA9IFtdXG4gIGxldCBkZWZhdWx0X2xhbmcgPSBcIlwiXG4gIGxldCBnaF91ZW1waF9vcl9ib2xkX3N0eWxlID0gdHJ1ZVxuICBsZXQgYmxpbmRfaHRtbCA9IGZhbHNlXG4gIGxldCBzdHJpY3RfaHRtbCA9IGZhbHNlXG4gIGxldCB3YXJuaW5nID0gZmFsc2VcbiAgbGV0IHdhcm5fZXJyb3IgPSBmYWxzZVxuZW5kXG5cbm1vZHVsZSBNYWtlIChFbnY6RW52KSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBFbnZcblxuICBsZXQgd2FybiA9IE9tZF91dGlscy53YXJuIH53ZTp3YXJuX2Vycm9yXG5cbiAgKCoqIHNldCBvZiBrbm93biBIVE1MIGNvZGVzICopXG4gIGxldCBodG1sY29kZXNfc2V0ID0gU3RyaW5nU2V0Lm9mX2xpc3QgKCogVGhpcyBsaXN0IHNob3VsZCBiZSBjaGVja2VkLi4uICopXG4gICAgICAoKiBsaXN0IGV4dHJhY3RlZCBmcm9tOiBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9jaGFyc2V0Lmh0bWwgKilcbiAgICAgIFsgXCJBRWxpZ1wiOyAgXCJBYWN1dGVcIjsgIFwiQWNpcmNcIjsgIFwiQWdyYXZlXCI7IFwiQWxwaGFcIjsgIFwiQXJpbmdcIjsgIFwiQXRpbGRlXCI7XG4gICAgICAgIFwiQXVtbFwiOyBcIkJldGFcIjsgIFwiQ2NlZGlsXCI7IFwiQ2hpXCI7IFwiRGFnZ2VyXCI7ICBcIkRlbHRhXCI7IFwiRVRIXCI7IFwiRWFjdXRlXCI7XG4gICAgICAgIFwiRWNpcmNcIjsgIFwiRWdyYXZlXCI7ICBcIkVwc2lsb25cIjsgICBcIkV0YVwiOyAgXCJFdW1sXCI7ICBcIkdhbW1hXCI7ICBcIklhY3V0ZVwiO1xuICAgICAgICBcIkljaXJjXCI7IFwiSWdyYXZlXCI7IFwiSW90YVwiOyAgXCJJdW1sXCI7IFwiS2FwcGFcIjsgXCJMYW1iZGFcIjsgXCJNdVwiOyBcIk50aWxkZVwiO1xuICAgICAgICBcIk51XCI7ICBcIk9FbGlnXCI7ICBcIk9hY3V0ZVwiOyAgIFwiT2NpcmNcIjsgIFwiT2dyYXZlXCI7ICBcIk9tZWdhXCI7ICBcIk9taWNyb25cIjtcbiAgICAgICAgXCJPc2xhc2hcIjsgIFwiT3RpbGRlXCI7ICBcIk91bWxcIjsgIFwiUGhpXCI7ICBcIlBpXCI7ICBcIlByaW1lXCI7ICBcIlBzaVwiOyAgXCJSaG9cIjtcbiAgICAgICAgXCJTY2Fyb25cIjsgIFwiU2lnbWFcIjsgICBcIlRIT1JOXCI7ICBcIlRhdVwiOyAgXCJUaGV0YVwiOyAgIFwiVWFjdXRlXCI7ICBcIlVjaXJjXCI7XG4gICAgICAgIFwiVWdyYXZlXCI7IFwiVXBzaWxvblwiOyBcIlV1bWxcIjsgXCJYaVwiOyBcIllhY3V0ZVwiOyBcIll1bWxcIjsgXCJaZXRhXCI7IFwiYWFjdXRlXCI7XG4gICAgICAgIFwiYWNpcmNcIjsgXCJhY3V0ZVwiOyBcImFlbGlnXCI7IFwiYWdyYXZlXCI7IFwiYWxlZnN5bVwiOyBcImFscGhhXCI7IFwiYW1wXCI7IFwiYW5kXCI7XG4gICAgICAgIFwiYW5nXCI7IFwiYXJpbmdcIjsgXCJhc3ltcFwiOyAgXCJhdGlsZGVcIjsgXCJhdW1sXCI7IFwiYmRxdW9cIjsgXCJiZXRhXCI7IFwiYnJ2YmFyXCI7XG4gICAgICAgIFwiYnVsbFwiOyAgXCJjYXBcIjsgIFwiY2NlZGlsXCI7IFwiY2VkaWxcIjsgIFwiY2VudFwiOyAgXCJjaGlcIjsgXCJjaXJjXCI7ICBcImNsdWJzXCI7XG4gICAgICAgIFwiY29uZ1wiOyAgXCJjb3B5XCI7IFwiY3JhcnJcIjsgXCJjdXBcIjsgIFwiY3VycmVuXCI7IFwiZEFyclwiOyAgXCJkYWdnZXJcIjsgXCJkYXJyXCI7XG4gICAgICAgIFwiZGVnXCI7ICBcImRlbHRhXCI7ICBcImRpYW1zXCI7ICAgXCJkaXZpZGVcIjsgIFwiZWFjdXRlXCI7ICBcImVjaXJjXCI7ICBcImVncmF2ZVwiO1xuICAgICAgICBcImVtcHR5XCI7ICBcImVtc3BcIjsgXCJlbnNwXCI7ICBcImVwc2lsb25cIjsgXCJlcXVpdlwiOyAgXCJldGFcIjsgIFwiZXRoXCI7IFwiZXVtbFwiO1xuICAgICAgICBcImV1cm9cIjsgIFwiZXhpc3RcIjsgIFwiZm5vZlwiOyAgXCJmb3JhbGxcIjsgIFwiZnJhYzEyXCI7ICBcImZyYWMxNFwiOyAgXCJmcmFjMzRcIjtcbiAgICAgICAgXCJmcmFzbFwiOyAgXCJnYW1tYVwiOyAgXCJnZVwiOyBcImd0XCI7ICBcImhBcnJcIjsgIFwiaGFyclwiOyBcImhlYXJ0c1wiOyAgXCJoZWxsaXBcIjtcbiAgICAgICAgXCJpYWN1dGVcIjsgXCJpY2lyY1wiOyBcImlleGNsXCI7IFwiaWdyYXZlXCI7IFwiaW1hZ2VcIjsgXCJpbmZpblwiOyBcImludFwiOyBcImlvdGFcIjtcbiAgICAgICAgXCJpcXVlc3RcIjsgXCJpc2luXCI7IFwiaXVtbFwiOyAgXCJrYXBwYVwiOyBcImxBcnJcIjsgXCJsYW1iZGFcIjsgXCJsYW5nXCI7IFwibGFxdW9cIjtcbiAgICAgICAgXCJsYXJyXCI7ICBcImxjZWlsXCI7ICBcImxkcXVvXCI7IFwibGVcIjsgIFwibGZsb29yXCI7ICBcImxvd2FzdFwiOyBcImxvelwiOyAgXCJscm1cIjtcbiAgICAgICAgXCJsc2FxdW9cIjsgXCJsc3F1b1wiOyBcImx0XCI7ICBcIm1hY3JcIjsgXCJtZGFzaFwiOyBcIm1pY3JvXCI7IFwibWlkZG90XCI7IFwibWludXNcIjtcbiAgICAgICAgXCJtdVwiOyBcIm5hYmxhXCI7ICBcIm5ic3BcIjsgXCJuZGFzaFwiOyAgXCJuZVwiOyBcIm5pXCI7IFwibm90XCI7ICBcIm5vdGluXCI7IFwibnN1YlwiO1xuICAgICAgICBcIm50aWxkZVwiOyAgXCJudVwiOyAgIFwib2FjdXRlXCI7ICBcIm9jaXJjXCI7ICBcIm9lbGlnXCI7ICAgXCJvZ3JhdmVcIjsgIFwib2xpbmVcIjtcbiAgICAgICAgXCJvbWVnYVwiOyBcIm9taWNyb25cIjsgXCJvcGx1c1wiOyBcIm9yXCI7IFwib3JkZlwiOyBcIm9yZG1cIjsgXCJvc2xhc2hcIjsgXCJvdGlsZGVcIjtcbiAgICAgICAgXCJvdGltZXNcIjsgIFwib3VtbFwiOyAgXCJwYXJhXCI7ICBcInBhcnRcIjsgIFwicGVybWlsXCI7IFwicGVycFwiOyAgXCJwaGlcIjsgIFwicGlcIjtcbiAgICAgICAgXCJwaXZcIjsgIFwicGx1c21uXCI7ICBcInBvdW5kXCI7IFwicHJpbWVcIjsgIFwicHJvZFwiOyAgXCJwcm9wXCI7IFwicHNpXCI7ICBcInF1b3RcIjtcbiAgICAgICAgXCJyQXJyXCI7ICBcInJhZGljXCI7IFwicmFuZ1wiOyBcInJhcXVvXCI7ICBcInJhcnJcIjsgXCJyY2VpbFwiOyAgXCJyZHF1b1wiOyBcInJlYWxcIjtcbiAgICAgICAgXCJyZWdcIjsgXCJyZmxvb3JcIjsgIFwicmhvXCI7IFwicmxtXCI7IFwicnNhcXVvXCI7ICBcInJzcXVvXCI7IFwic2JxdW9cIjsgXCJzY2Fyb25cIjtcbiAgICAgICAgXCJzZG90XCI7ICBcInNlY3RcIjsgIFwic2h5XCI7IFwic2lnbWFcIjsgIFwic2lnbWFmXCI7ICBcInNpbVwiOyBcInNwYWRlc1wiOyAgXCJzdWJcIjtcbiAgICAgICAgXCJzdWJlXCI7IFwic3VtXCI7IFwic3VwXCI7IFwic3VwMVwiOyAgXCJzdXAyXCI7IFwic3VwM1wiOyBcInN1cGVcIjsgXCJzemxpZ1wiOyBcInRhdVwiO1xuICAgICAgICBcInRoZXJlNFwiOyAgXCJ0aGV0YVwiOyBcInRoZXRhc3ltXCI7ICBcInRoaW5zcFwiOyBcInRob3JuXCI7ICBcInRpbGRlXCI7IFwidGltZXNcIjtcbiAgICAgICAgXCJ0cmFkZVwiOyBcInVBcnJcIjsgXCJ1YWN1dGVcIjsgIFwidWFyclwiOyBcInVjaXJjXCI7IFwidWdyYXZlXCI7IFwidW1sXCI7IFwidXBzaWhcIjtcbiAgICAgICAgXCJ1cHNpbG9uXCI7ICBcInV1bWxcIjsgXCJ3ZWllcnBcIjsgXCJ4aVwiOyAgXCJ5YWN1dGVcIjsgXCJ5ZW5cIjsgIFwieXVtbFwiOyBcInpldGFcIjtcbiAgICAgICAgXCJ6d2pcIjsgXCJ6d25qXCI7IF1cblxuXG4gICgqKiBzZXQgb2Yga25vd24gaW5saW5lIEhUTUwgdGFncyAqKVxuICBsZXQgaW5saW5lX2h0bWx0YWdzX3NldCA9XG4gICAgICAoU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgICAgICgqIGZyb20gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9IVE1ML0lubGluZV9lbGVtZW50cyAqKVxuICAgICAgICAgWyBcImJcIjtcImJpZ1wiO1wiaVwiO1wic21hbGxcIjtcInR0XCI7XG4gICAgICAgICAgIFwiYWJiclwiO1wiYWNyb255bVwiO1wiY2l0ZVwiO1wiY29kZVwiO1wiZGZuXCI7XCJlbVwiO1wia2JkXCI7XCJzdHJvbmdcIjtcInNhbXBcIjtcInZhclwiO1xuICAgICAgICAgICBcImFcIjtcImJkb1wiO1wiYnJcIjtcImltZ1wiO1wibWFwXCI7XCJvYmplY3RcIjtcInFcIjtcInNwYW5cIjtcInN1YlwiO1wic3VwXCI7XG4gICAgICAgICAgIFwiYnV0dG9uXCI7XCJpbnB1dFwiO1wibGFiZWxcIjtcInNlbGVjdFwiO1widGV4dGFyZWFcIjtdKVxuXG4gICgqKiBOLkIuIGl0IHNlZW1zIHRoYXQgdGhlcmUgaXMgbm8gY2xlYXIgZGlzdGluY3Rpb24gYmV0d2VlbiBpbmxpbmVcbiAgICAgIHRhZ3MgYW5kIGJsb2NrLWxldmVsIHRhZ3M6IGluIEhUTUw0IGl0IHdhcyBub3QgY2xlYXIsIGluIEhUTUw1XG4gICAgICBpdCdzIGV2ZW4gbW9yZSBjb21wbGljYXRlZC4gU28sIHRoZSBjaG9pY2UgKmhlcmUqIGlzIHRvIHNwZWNpZnlcbiAgICAgIGEgc2V0IG9mIHRhZ3MgY29uc2lkZXJlZCBhcyBcImlubGluZVwiLCBjZi4gW2lubGluZV9odG1sdGFnc19zZXRdLlxuICAgICAgU28gdGhlcmUgd2lsbCBiZSBpbmxpbmUgdGFncywgbm9uLWlubGluZSB0YWdzLCBhbmQgdW5rbm93blxuICAgICAgdGFncy4qKVxuXG4gICgqKiBzZXQgb2YgSFRNTCB0YWdzIHRoYXQgbWF5IGFwcGVhciBvdXQgb2YgYSBib2R5ICopXG4gIGxldCBub3RpbmJvZHl0YWdzID0gU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgIFtcbiAgICAgICAgXCJ0aXRsZVwiO1xuICAgICAgICBcImxpbmtcIjtcbiAgICAgICAgXCJtZXRhXCI7XG4gICAgICAgIFwic3R5bGVcIjtcbiAgICAgICAgXCJodG1sXCI7XG4gICAgICAgIFwiaGVhZFwiO1xuICAgICAgICBcImJvZHlcIjtcbiAgICAgIF1cblxuICAoKiogQWxsIGtub3duIEhUTUwgdGFncyAqKVxuICBsZXQgaHRtbHRhZ3Nfc2V0ID1cbiAgICBTdHJpbmdTZXQudW5pb24gbm90aW5ib2R5dGFnc1xuICAgICAgKFN0cmluZ1NldC51bmlvbiBpbmxpbmVfaHRtbHRhZ3Nfc2V0XG4gICAgICAgICAoU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgXCJhXCI7XCJhYmJyXCI7XCJhY3JvbnltXCI7XCJhZGRyZXNzXCI7XCJhcHBsZXRcIjtcImFyZWFcIjtcImFydGljbGVcIjtcImFzaWRlXCJcbiAgICAgICAgICAgICAgO1wiYXVkaW9cIjtcImJcIjtcImJhc2VcIjtcImJhc2Vmb250XCI7XCJiZGlcIjtcImJkb1wiO1wiYmlnXCI7XCJibG9ja3F1b3RlXCJcbiAgICAgICAgICAgICAgO1wiYnJcIjtcImJ1dHRvblwiO1wiY2FudmFzXCI7XCJjYXB0aW9uXCI7XCJjZW50ZXJcIjtcImNpdGVcIjtcImNvZGVcIjtcImNvbFwiXG4gICAgICAgICAgICAgIDtcImNvbGdyb3VwXCI7XCJjb21tYW5kXCI7XCJkYXRhbGlzdFwiO1wiZGRcIjtcImRlbFwiO1wiZGV0YWlsc1wiO1wiZGZuXCJcbiAgICAgICAgICAgICAgO1wiZGlhbG9nXCI7XCJkaXJcIjtcImRpdlwiO1wiZGxcIjtcImR0XCI7XCJlbVwiO1wiZW1iZWRcIjtcImZpZWxkc2V0XCJcbiAgICAgICAgICAgICAgO1wiZmlnY2FwdGlvblwiO1wiZmlndXJlXCI7XCJmb250XCI7XCJmb290ZXJcIjtcImZvcm1cIjtcImZyYW1lXCI7XCJmcmFtZXNldFwiXG4gICAgICAgICAgICAgIDtcImgyXCI7XCJoM1wiO1wiaDRcIjtcImg1XCI7XCJoNlwiXG4gICAgICAgICAgICAgIDtcImgxXCI7XCJoZWFkZXJcIjtcImhyXCI7XCJpXCI7XCJpZnJhbWVcIjtcImltZ1wiO1wiaW5wdXRcIjtcImluc1wiO1wia2JkXCJcbiAgICAgICAgICAgICAgO1wia2V5Z2VuXCI7XCJsYWJlbFwiO1wibGVnZW5kXCI7XCJsaVwiO1wibWFwXCI7XCJtYXJrXCI7XCJtZW51XCI7XCJtZXRlclwiO1wibmF2XCJcbiAgICAgICAgICAgICAgO1wibm9mcmFtZXNcIjtcIm5vc2NyaXB0XCI7XCJvYmplY3RcIjtcIm9sXCI7XCJvcHRncm91cFwiO1wib3B0aW9uXCI7XCJvdXRwdXRcIlxuICAgICAgICAgICAgICA7XCJwXCI7XCJwYXJhbVwiO1wicHJlXCI7XCJwcm9ncmVzc1wiO1wicVwiO1wicnBcIjtcInJ0XCI7XCJydWJ5XCI7XCJzXCI7XCJzYW1wXCJcbiAgICAgICAgICAgICAgO1wic2NyaXB0XCI7XCJzZWN0aW9uXCI7XCJzZWxlY3RcIjtcInNtYWxsXCI7XCJzb3VyY2VcIjtcInNwYW5cIjtcInN0cmlrZVwiXG4gICAgICAgICAgICAgIDtcInN0cm9uZ1wiO1wic3R5bGVcIjtcInN1YlwiO1wic3VtbWFyeVwiO1wic3VwXCI7XCJ0YWJsZVwiO1widGJvZHlcIjtcInRkXCJcbiAgICAgICAgICAgICAgO1widGV4dGFyZWFcIjtcInRmb290XCI7XCJ0aFwiO1widGhlYWRcIjtcInRpbWVcIjtcInRyXCI7XCJ0cmFja1wiO1widHRcIjtcInVcIlxuICAgICAgICAgICAgICA7XCJ1bFwiO1widmFyXCI7XCJ2aWRlb1wiO1wid2JyXCJcbiAgICAgICAgICAgIF0pKVxuXG5cbiAgKCoqIFRoaXMgZnVuY3Rpb25zIGZpeGVzIGJhZCBsZXhpbmcgdHJlZXMsIHdoaWNoIG1heSBiZSBidWlsdCB3aGVuXG4gICAgICBleHRyYWN0aW9uIGEgcG9ydGlvbiBvZiBhbm90aGVyIGxleGluZyB0cmVlLiAqKVxuICBsZXQgZml4IGwgPVxuICAgIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICgqIGNvZGUgdG8gZ2VuZXJhdGUgd2hhdCBmb2xsb3dzLi4uXG4gICAgICAgICBMaXN0Lml0ZXIgKGZ1biBlIC0+XG4gICAgICAgICBQcmludGYucHJpbnRmIFwiXG4gICAgICAgICB8ICVzOjolczo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgMVxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MgMDo6dGwpXG4gICAgICAgICB8ICVzcyBuOjolczo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgMlxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MobisxKTo6dGwpXG4gICAgICAgICB8ICVzOjolc3Mgbjo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgM1xcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MobisxKTo6dGwpXG4gICAgICAgICB8ICVzcyBhOjolc3MgYjo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgNFxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MoYStiKzIpOjp0bClcIlxuICAgICAgICAgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSlcbiAgICAgICAgIFtcIkFtcGVyc2FuZFwiOyBcIkF0XCI7IFwiQmFja3F1b3RlXCI7IFwiQmFja3NsYXNoXCI7IFwiQmFyXCI7IFwiQ2FyZXRcIjsgXCJDYnJhY2VcIjsgXCJDb2xvblwiOyBcIkNvbW1hXCI7IFwiQ3BhcmVudGhlc2lzXCI7IFwiQ2JyYWNrZXRcIjsgXCJEb2xsYXJcIjsgXCJEb3RcIjsgXCJEb3VibGVxdW90ZVwiOyBcIkV4Y2xhbWF0aW9uXCI7IFwiRXF1YWxcIjsgXCJHcmVhdGVydGhhblwiOyBcIkhhc2hcIjsgXCJMZXNzdGhhblwiOyBcIk1pbnVzXCI7IFwiTmV3bGluZVwiOyBcIk9icmFjZVwiOyBcIk9wYXJlbnRoZXNpc1wiOyBcIk9icmFja2V0XCI7IFwiUGVyY2VudFwiOyBcIlBsdXNcIjsgXCJRdWVzdGlvblwiOyBcIlF1b3RlXCI7IFwiU2VtaWNvbG9uXCI7IFwiU2xhc2hcIjsgXCJTcGFjZVwiOyBcIlN0YXJcIjsgXCJUYWJcIjsgXCJUaWxkZVwiOyBcIlVuZGVyc2NvcmVcIl07XG4gICAgICAgICBwcmludF9zdHJpbmcgXCJ8IHg6OnRsIC0+IGxvb3AgKHg6OmFjY3UpIHRsXFxufCBbXSAtPiBMaXN0LnJldiBhY2N1XFxuXCI7ICopXG4gICAgICB8IEFtcGVyc2FuZDo6QW1wZXJzYW5kOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMgMDo6dGwpXG4gICAgICB8IEFtcGVyc2FuZHMgbjo6QW1wZXJzYW5kOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMobisxKTo6dGwpXG4gICAgICB8IEFtcGVyc2FuZDo6QW1wZXJzYW5kcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMobisxKTo6dGwpXG4gICAgICB8IEFtcGVyc2FuZHMgYTo6QW1wZXJzYW5kcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMoYStiKzIpOjp0bClcbiAgICAgIHwgQXQ6OkF0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzIDA6OnRsKVxuICAgICAgfCBBdHMgbjo6QXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMobisxKTo6dGwpXG4gICAgICB8IEF0OjpBdHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQXQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEF0cyhuKzEpOjp0bClcbiAgICAgIHwgQXRzIGE6OkF0cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzKGErYisyKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMgMDo6dGwpXG4gICAgICB8IEJhY2txdW90ZXMgbjo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMobisxKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6QmFja3F1b3RlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMobisxKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZXMgYTo6QmFja3F1b3RlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMoYStiKzIpOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrc2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyAwOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyBuOjpCYWNrc2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrc2xhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyBhOjpCYWNrc2xhc2hzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBCYXI6OkJhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzIDA6OnRsKVxuICAgICAgfCBCYXJzIG46OkJhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKG4rMSk6OnRsKVxuICAgICAgfCBCYXI6OkJhcnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKG4rMSk6OnRsKVxuICAgICAgfCBCYXJzIGE6OkJhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKGErYisyKTo6dGwpXG4gICAgICB8IENhcmV0OjpDYXJldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyAwOjp0bClcbiAgICAgIHwgQ2FyZXRzIG46OkNhcmV0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYXJldDo6Q2FyZXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENhcmV0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYXJldHMobisxKTo6dGwpXG4gICAgICB8IENhcmV0cyBhOjpDYXJldHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyhhK2IrMik6OnRsKVxuICAgICAgfCBDYnJhY2U6OkNicmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzIDA6OnRsKVxuICAgICAgfCBDYnJhY2VzIG46OkNicmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2U6OkNicmFjZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2VzIGE6OkNicmFjZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKGErYisyKTo6dGwpXG4gICAgICB8IENvbG9uOjpDb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyAwOjp0bClcbiAgICAgIHwgQ29sb25zIG46OkNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBDb2xvbjo6Q29sb25zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbG9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb2xvbnMobisxKTo6dGwpXG4gICAgICB8IENvbG9ucyBhOjpDb2xvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyhhK2IrMik6OnRsKVxuICAgICAgfCBDb21tYTo6Q29tbWE6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMgMDo6dGwpXG4gICAgICB8IENvbW1hcyBuOjpDb21tYTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyhuKzEpOjp0bClcbiAgICAgIHwgQ29tbWE6OkNvbW1hcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb21tYSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29tbWFzKG4rMSk6OnRsKVxuICAgICAgfCBDb21tYXMgYTo6Q29tbWFzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMoYStiKzIpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzOjpDcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyAwOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyBuOjpDcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzOjpDcGFyZW50aGVzaXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyBhOjpDcGFyZW50aGVzaXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhhK2IrMik6OnRsKVxuICAgICAgfCBDYnJhY2tldDo6Q2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMgMDo6dGwpXG4gICAgICB8IENicmFja2V0cyBuOjpDYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgQ2JyYWNrZXQ6OkNicmFja2V0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2tldCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2tldHMgYTo6Q2JyYWNrZXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMoYStiKzIpOjp0bClcbiAgICAgIHwgRG9sbGFyOjpEb2xsYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyAwOjp0bClcbiAgICAgIHwgRG9sbGFycyBuOjpEb2xsYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhuKzEpOjp0bClcbiAgICAgIHwgRG9sbGFyOjpEb2xsYXJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhuKzEpOjp0bClcbiAgICAgIHwgRG9sbGFycyBhOjpEb2xsYXJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhhK2IrMik6OnRsKVxuICAgICAgfCBEb3Q6OkRvdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzIDA6OnRsKVxuICAgICAgfCBEb3RzIG46OkRvdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKG4rMSk6OnRsKVxuICAgICAgfCBEb3Q6OkRvdHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKG4rMSk6OnRsKVxuICAgICAgfCBEb3RzIGE6OkRvdHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKGErYisyKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlOjpEb3VibGVxdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyAwOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGVzIG46OkRvdWJsZXF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZTo6RG91YmxlcXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdWJsZXF1b3RlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3VibGVxdW90ZXMobisxKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlcyBhOjpEb3VibGVxdW90ZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbjo6RXhjbGFtYXRpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMgMDo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9ucyBuOjpFeGNsYW1hdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgRXhjbGFtYXRpb246OkV4Y2xhbWF0aW9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFeGNsYW1hdGlvbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXhjbGFtYXRpb25zKG4rMSk6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbnMgYTo6RXhjbGFtYXRpb25zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgRXF1YWw6OkVxdWFsOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzIDA6OnRsKVxuICAgICAgfCBFcXVhbHMgbjo6RXF1YWw6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMobisxKTo6dGwpXG4gICAgICB8IEVxdWFsOjpFcXVhbHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXF1YWwgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEVxdWFscyhuKzEpOjp0bClcbiAgICAgIHwgRXF1YWxzIGE6OkVxdWFscyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzKGErYisyKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFuOjpHcmVhdGVydGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyAwOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW5zIG46OkdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbjo6R3JlYXRlcnRoYW5zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEdyZWF0ZXJ0aGFuIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChHcmVhdGVydGhhbnMobisxKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFucyBhOjpHcmVhdGVydGhhbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyhhK2IrMik6OnRsKVxuICAgICAgfCBIYXNoOjpIYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyAwOjp0bClcbiAgICAgIHwgSGFzaHMgbjo6SGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgSGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoSGFzaHMobisxKTo6dGwpXG4gICAgICB8IEhhc2g6Okhhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBIYXNocyBhOjpIYXNocyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBMZXNzdGhhbjo6TGVzc3RoYW46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMgMDo6dGwpXG4gICAgICB8IExlc3N0aGFucyBuOjpMZXNzdGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyhuKzEpOjp0bClcbiAgICAgIHwgTGVzc3RoYW46Okxlc3N0aGFucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBMZXNzdGhhbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTGVzc3RoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBMZXNzdGhhbnMgYTo6TGVzc3RoYW5zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMoYStiKzIpOjp0bClcbiAgICAgIHwgTWludXM6Ok1pbnVzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzIDA6OnRsKVxuICAgICAgfCBNaW51c3Mgbjo6TWludXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MobisxKTo6dGwpXG4gICAgICB8IE1pbnVzOjpNaW51c3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTWludXMgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE1pbnVzcyhuKzEpOjp0bClcbiAgICAgIHwgTWludXNzIGE6Ok1pbnVzcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzKGErYisyKTo6dGwpXG4gICAgICB8IE5ld2xpbmU6Ok5ld2xpbmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzIDA6OnRsKVxuICAgICAgfCBOZXdsaW5lcyBuOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBOZXdsaW5lIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChOZXdsaW5lcyhuKzEpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6TmV3bGluZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMobisxKTo6dGwpXG4gICAgICB8IE5ld2xpbmVzIGE6Ok5ld2xpbmVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzKGErYisyKTo6dGwpXG4gICAgICB8IE9icmFjZTo6T2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMgMDo6dGwpXG4gICAgICB8IE9icmFjZXMgbjo6T2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMobisxKTo6dGwpXG4gICAgICB8IE9icmFjZTo6T2JyYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMobisxKTo6dGwpXG4gICAgICB8IE9icmFjZXMgYTo6T2JyYWNlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzOjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyAwOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyBuOjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzOjpPcGFyZW50aGVzaXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyBhOjpPcGFyZW50aGVzaXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhhK2IrMik6OnRsKVxuICAgICAgfCBPYnJhY2tldDo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMgMDo6dGwpXG4gICAgICB8IE9icmFja2V0cyBuOjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNrZXQ6Ok9icmFja2V0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2tldCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBPYnJhY2tldHMgYTo6T2JyYWNrZXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMoYStiKzIpOjp0bClcbiAgICAgIHwgUGVyY2VudDo6UGVyY2VudDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMgMDo6dGwpXG4gICAgICB8IFBlcmNlbnRzIG46OlBlcmNlbnQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBlcmNlbnQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBlcmNlbnRzKG4rMSk6OnRsKVxuICAgICAgfCBQZXJjZW50OjpQZXJjZW50cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyhuKzEpOjp0bClcbiAgICAgIHwgUGVyY2VudHMgYTo6UGVyY2VudHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMoYStiKzIpOjp0bClcbiAgICAgIHwgUGx1czo6UGx1czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MgMDo6dGwpXG4gICAgICB8IFBsdXNzIG46OlBsdXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBsdXMgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBsdXNzKG4rMSk6OnRsKVxuICAgICAgfCBQbHVzOjpQbHVzcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyhuKzEpOjp0bClcbiAgICAgIHwgUGx1c3MgYTo6UGx1c3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MoYStiKzIpOjp0bClcbiAgICAgIHwgUXVlc3Rpb246OlF1ZXN0aW9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zIDA6OnRsKVxuICAgICAgfCBRdWVzdGlvbnMgbjo6UXVlc3Rpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMobisxKTo6dGwpXG4gICAgICB8IFF1ZXN0aW9uOjpRdWVzdGlvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVlc3Rpb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1ZXN0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgUXVlc3Rpb25zIGE6OlF1ZXN0aW9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zKGErYisyKTo6dGwpXG4gICAgICB8IFF1b3RlOjpRdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyAwOjp0bClcbiAgICAgIHwgUXVvdGVzIG46OlF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBRdW90ZTo6UXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1b3RlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdW90ZXMobisxKTo6dGwpXG4gICAgICB8IFF1b3RlcyBhOjpRdW90ZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBTZW1pY29sb246OlNlbWljb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zIDA6OnRsKVxuICAgICAgfCBTZW1pY29sb25zIG46OlNlbWljb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBTZW1pY29sb246OlNlbWljb2xvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBTZW1pY29sb25zIGE6OlNlbWljb2xvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKGErYisyKTo6dGwpXG4gICAgICB8IFNsYXNoOjpTbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyAwOjp0bClcbiAgICAgIHwgU2xhc2hzIG46OlNsYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBTbGFzaDo6U2xhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNsYXNoIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTbGFzaHMobisxKTo6dGwpXG4gICAgICB8IFNsYXNocyBhOjpTbGFzaHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBTcGFjZTo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMgMDo6dGwpXG4gICAgICB8IFNwYWNlcyBuOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgU3BhY2U6OlNwYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTcGFjZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3BhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBTcGFjZXMgYTo6U3BhY2VzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgU3Rhcjo6U3Rhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMgMDo6dGwpXG4gICAgICB8IFN0YXJzIG46OlN0YXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFN0YXIgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFN0YXJzKG4rMSk6OnRsKVxuICAgICAgfCBTdGFyOjpTdGFycyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyhuKzEpOjp0bClcbiAgICAgIHwgU3RhcnMgYTo6U3RhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMoYStiKzIpOjp0bClcbiAgICAgIHwgVGFiOjpUYWI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyAwOjp0bClcbiAgICAgIHwgVGFicyBuOjpUYWI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhuKzEpOjp0bClcbiAgICAgIHwgVGFiOjpUYWJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhuKzEpOjp0bClcbiAgICAgIHwgVGFicyBhOjpUYWJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhhK2IrMik6OnRsKVxuICAgICAgfCBUaWxkZTo6VGlsZGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMgMDo6dGwpXG4gICAgICB8IFRpbGRlcyBuOjpUaWxkZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyhuKzEpOjp0bClcbiAgICAgIHwgVGlsZGU6OlRpbGRlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUaWxkZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGlsZGVzKG4rMSk6OnRsKVxuICAgICAgfCBUaWxkZXMgYTo6VGlsZGVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMoYStiKzIpOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZTo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMgMDo6dGwpXG4gICAgICB8IFVuZGVyc2NvcmVzIG46OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFVuZGVyc2NvcmUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFVuZGVyc2NvcmVzKG4rMSk6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyhuKzEpOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZXMgYTo6VW5kZXJzY29yZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMoYStiKzIpOjp0bCl8IHg6OnRsIC0+IGxvb3AgKHg6OmFjY3UpIHRsXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGFjY3VcbiAgICBpblxuICAgIGxvb3AgW10gbFxuXG5cbiAgKCogUmVtb3ZlIGFsbCBbTkxdIGFuZCBbQnJdIGF0IHRoZSBiZWdpbm5pbmcuICopXG4gIGxldCByZWMgcmVtb3ZlX2luaXRpYWxfbmV3bGluZXMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IChOTCB8IEJyKSA6OiB0bCAtPiByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyB0bFxuICAgIHwgbCAtPiBsXG5cblxuICAoKiogLSByZWNvZ25pemVzIHBhcmFncmFwaHNcbiAgICAgIC0gZ2x1ZXMgZm9sbG93aW5nIGJsb2NrcXVvdGVzICAqKVxuICBsZXQgbWFrZV9wYXJhZ3JhcGhzIG1kID1cbiAgICBsZXQgcmVjIGxvb3AgY3AgYWNjdSA9IGZ1bmN0aW9uICgqIGNwIG1lYW5zIGN1cnJlbnQgcGFyYWdyYXBoICopXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBhY2N1ID1cbiAgICAgICAgICBtYXRjaCBjcCB3aXRoXG4gICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGFjY3VcbiAgICAgICAgICB8IChOTHxCcik6OmNwIC0+IFBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3VcbiAgICAgICAgICB8IGNwIC0+IFBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3VcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgfCBCbG9ja3F1b3RlIGIxIDo6IEJsb2NrcXVvdGUgYjIgOjogdGwgLT5cbiAgICAgICAgbG9vcCBjcCBhY2N1IChCbG9ja3F1b3RlKGIxQGIyKTo6IHRsKVxuICAgICAgfCBCbG9ja3F1b3RlIGIgOjogdGwgLT5cbiAgICAgICAgbGV0IGUgPSBCbG9ja3F1b3RlKGxvb3AgW10gW10gYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoVWxwIGIpIDo6IHRsIC0+XG4gICAgICAgIGxldCBlID0gVWxwKExpc3QubWFwIChmdW4gbGkgLT4gbG9vcCBbXSBbXSBsaSkgYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoT2xwIGIpIDo6IHRsIC0+XG4gICAgICAgIGxldCBlID0gT2xwKExpc3QubWFwIChmdW4gbGkgLT4gbG9vcCBbXSBbXSBsaSkgYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCBIdG1sX2NvbW1lbnQgXyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICB8IFtdIC0+IGxvb3AgW10gKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgW10gKGU6Ok5MOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgKGU6OmNwKSBhY2N1IHRsKVxuICAgICAgfCAoUmF3X2Jsb2NrIF8gfCBIdG1sX2Jsb2NrIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjpjcEBhY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoQ29kZV9ibG9jayBfIHwgSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfXG4gICAgICAgIHwgT2wgXyB8IFVsIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCBUZXh0IFwiXFxuXCIgOjogXyB8IFBhcmFncmFwaCBfIDo6IF8gLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJPbWRfcGFyc2VyLm1ha2VfcGFyYWdyYXBoc1wiXG4gICAgICB8IChOTHxCcikgOjogKE5MfEJyKSA6OiB0bCAtPlxuICAgICAgICBsZXQgdGwgPSByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyB0bCBpblxuICAgICAgICBiZWdpbiBtYXRjaCBjcCB3aXRoXG4gICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgW10gKE5MOjpOTDo6YWNjdSkgdGxcbiAgICAgICAgICB8IF8gLT4gbG9vcCBbXSAoUGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGxcbiAgICAgICAgZW5kXG4gICAgICB8IFgoeCkgYXMgZSA6OiB0bCAtPlxuICAgICAgICAoKiBJZiB0aGUgZXh0ZW5zaW9uIHJldHVybnMgYSBibG9jayBhcyBmaXJzdCBlbGVtZW50LFxuICAgICAgICAgICB0aGVuIGNvbnNpZGVyIHRoZSBleHRlbnNpb24gYXMgYSBibG9jay4gSG93ZXZlclxuICAgICAgICAgICBkb24ndCB0YWtlIGl0cyBjb250ZW50cyBhcyBpdCBpcyB5ZXQsIHRoZSBjb250ZW50c1xuICAgICAgICAgICBvZiB0aGUgZXh0ZW5zaW9uIHNoYWxsIGJlIGNvbnNpZGVyZWQgZmluYWwgYXMgbGF0ZVxuICAgICAgICAgICBhcyBwb3NzaWJsZS4gKilcbiAgICAgICAgYmVnaW4gbWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6Y3ApIGFjY3UgdGxcbiAgICAgICAgICB8IFNvbWUodCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCAoIEgxIF9cbiAgICAgICAgICAgICAgfCBIMiBfXG4gICAgICAgICAgICAgIHwgSDMgX1xuICAgICAgICAgICAgICB8IEg0IF9cbiAgICAgICAgICAgICAgfCBINSAgX1xuICAgICAgICAgICAgICB8IEg2ICBfXG4gICAgICAgICAgICAgIHwgUGFyYWdyYXBoICBfXG4gICAgICAgICAgICAgIHwgVWwgX1xuICAgICAgICAgICAgICB8IE9sIF9cbiAgICAgICAgICAgICAgfCBVbHAgX1xuICAgICAgICAgICAgICB8IE9scCBfXG4gICAgICAgICAgICAgIHwgQ29kZV9ibG9jayBfXG4gICAgICAgICAgICAgIHwgSHJcbiAgICAgICAgICAgICAgfCBIdG1sX2Jsb2NrIF9cbiAgICAgICAgICAgICAgfCBSYXdfYmxvY2sgX1xuICAgICAgICAgICAgICB8IEJsb2NrcXVvdGUgX1xuICAgICAgICAgICAgICApIDo6IF9cbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPlxuICAgICAgICAgICAgICAgICBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgIGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKGU6OmNwKSBhY2N1IHRsXG4gICAgICAgIGVuZFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjpjcCkgYWNjdSB0bFxuICAgIGluXG4gICAgbGV0IHJlbW92ZV93aGl0ZV9jcnVtYnMgbCA9XG4gICAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgVGV4dCBcIiBcIiA6OiB0bFxuICAgICAgICB8IE5MOjp0bFxuICAgICAgICB8IEJyOjp0bFxuICAgICAgICAgIC0+XG4gICAgICAgICAgbG9vcCB0bFxuICAgICAgICB8IGwgLT4gbFxuICAgICAgaW5cbiAgICAgIExpc3QucmV2IChsb29wIChMaXN0LnJldiBsKSlcbiAgICBpblxuICAgIGxldCByZWMgY2xlYW5fcGFyYWdyYXBocyA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBjbGVhbl9wYXJhZ3JhcGhzXFxuXCI7XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBbXVxuICAgICAgfCBQYXJhZ3JhcGhbXTo6dGwgLT4gdGxcbiAgICAgIHwgUGFyYWdyYXBoKHApIDo6IHRsIC0+XG4gICAgICAgIFBhcmFncmFwaChjbGVhbl9wYXJhZ3JhcGhzXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmVfaW5pdGlhbF9uZXdsaW5lc1xuICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlX3doaXRlX2NydW1icyhub3JtYWxpc2VfbWQgcCkpKSlcbiAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBIMSB2IDo6IHRsIC0+IEgxKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEgyIHYgOjogdGwgLT4gSDIoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDMgdiA6OiB0bCAtPiBIMyhjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBINCB2IDo6IHRsIC0+IEg0KGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEg1IHYgOjogdGwgLT4gSDUoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDYgdiA6OiB0bCAtPiBINihjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBFbXBoIHYgOjogdGwgLT4gRW1waChjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEJvbGQgdiA6OiB0bCAtPiBCb2xkKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVWwgdiA6OiB0bCAtPiBVbChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBPbCB2IDo6IHRsIC0+IE9sKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFVscCB2IDo6IHRsIC0+IFVscChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgT2xwIHYgOjogdGwgLT4gT2xwKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBCbG9ja3F1b3RlIHYgOjogdGwgLT4gQmxvY2txdW90ZShjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFVybChocmVmLHYsdGl0bGUpIDo6IHRsIC0+IFVybChocmVmLChjbGVhbl9wYXJhZ3JhcGhzIHYpLHRpdGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFRleHQgX1xuICAgICAgfCBDb2RlIF9cbiAgICAgIHwgQ29kZV9ibG9jayBfXG4gICAgICB8IEJyXG4gICAgICB8IEhyXG4gICAgICB8IE5MXG4gICAgICB8IFJlZiBfXG4gICAgICB8IEltZ19yZWYgX1xuICAgICAgfCBSYXcgX1xuICAgICAgfCBSYXdfYmxvY2sgX1xuICAgICAgfCBIdG1sIF9cbiAgICAgIHwgSHRtbF9ibG9jayBfXG4gICAgICB8IEh0bWxfY29tbWVudCBfXG4gICAgICB8IEltZyBfXG4gICAgICB8IFggXyBhcyB2IDo6IHRsIC0+IHYgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgIGluXG4gICAgbGV0IHIgPSBjbGVhbl9wYXJhZ3JhcGhzKGxvb3AgW10gW10gbWQpXG4gICAgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBjbGVhbl9wYXJhZ3JhcGhzICVTIC0tPiAlU1xcbiUhXCJcbiAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kIG1kKVxuICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgcik7XG4gICAgclxuXG5cbiAgKCoqIFthc3NlcnRfd2VsbF9mb3JtZWRdIGlzIGEgZGV2ZWxvcGVyJ3MgZnVuY3Rpb24gdGhhdCBoZWxwcyB0b1xuICAgICAgdHJhY2sgYmFkbHkgY29uc3RydWN0ZWQgdG9rZW4gbGlzdHMuICBUaGlzIGZ1bmN0aW9uIGhhcyBhblxuICAgICAgZWZmZWN0IG9ubHkgaWYgW3RyYWNrZml4XSBpcyBbdHJ1ZV0uICAqKVxuICBsZXQgYXNzZXJ0X3dlbGxfZm9ybWVkIChsOnRvayBsaXN0KSA6IHVuaXQgPVxuICAgIGlmIHRyYWNrZml4IHRoZW5cbiAgICAgIGxldCByZWMgZXF1aXYgbDEgbDIgPSBtYXRjaCBsMSwgbDIgd2l0aFxuICAgICAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgICAgIHwgVGFnIF86OnRsMSwgVGFnIF86OnRsMi0+IGVxdWl2IHRsMSB0bDJcbiAgICAgICAgfCBlMTo6dGwxLCBlMjo6dGwyIC0+IGUxID0gZTIgJiYgZXF1aXYgdGwxIHRsMlxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBhc3NlcnQoZXF1aXYgKGZpeCBsKSBsKTtcbiAgICAgICgpXG5cbiAgKCoqIEdlbmVyYXRlIGZhbGxiYWNrIGZvciByZWZlcmVuY2VzLiAqKVxuICBsZXQgZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyBsID1cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmV4dHJhY3RfZmFsbGJhY2tcXG4lIVwiO1xuICAgIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjdVxuICAgICAgfCBlOjp0bCBhcyByIC0+XG4gICAgICAgIGlmIHIgPT0gcmVtYWlucyB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggZSwgcmVtYWlucyB3aXRoXG4gICAgICAgICAgfCBDYnJhY2tldHMgMCwgQ2JyYWNrZXQ6OnIgd2hlbiB0bCA9IHIgLT5cbiAgICAgICAgICAgIGxldCBhY2N1ID0gV29yZCBcIl1cIiA6OiBhY2N1IGluXG4gICAgICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICAgICAgfCBDYnJhY2tldHMgbiwgQ2JyYWNrZXRzIG06OnIgd2hlbiBtICsgMSA9IG4gJiYgdGwgPSByIC0+XG4gICAgICAgICAgICBsZXQgYWNjdSA9IFdvcmQgXCJdXCIgOjogYWNjdSBpblxuICAgICAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbG9vcCAoZTo6YWNjdSkgdGxcbiAgICBpblxuICAgIGxldCBhID0gbG9vcCBbXSBsIGluXG4gICAgb2JqZWN0XG4gICAgICBtZXRob2QgdG9fc3RyaW5nID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGFcbiAgICAgIG1ldGhvZCB0b190ID0gW1RleHQoTC5zdHJpbmdfb2ZfdG9rZW5zIGEpXVxuICAgIGVuZFxuXG5cbiAgbGV0IHVuaW5kZW50X3JldiBuIGxleGVtZXMgPVxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIENBTEw6IE9tZF9wYXJzZXIudW5pbmRlbnRfcmV2XFxuJSFcIjtcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgYWNjdSBjbCA9IGZ1bmN0aW9uXG4gICAgICB8IE5ld2xpbmVzIHg6OihTcGFjZXxTcGFjZXMgXyk6Ok5ld2xpbmVzIHk6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSBjbCAoTmV3bGluZXMoeCt5KzIpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZXMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygxK3gpOjp0bClcbiAgICAgIHwgTmV3bGluZXMgeDo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygxK3gpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygwKTo6dGwpXG5cbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgMCBhcyBubCk6OihTcGFjZXxTcGFjZXMgXyBhcyBzKTo6KFxuICAgICAgICAgIChOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfKVxuICAgICAgICB8ICgoU3RhcnxQbHVzfE1pbnVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6XylcbiAgICAgICAgICBhcyB0bCkgYXMgbCAtPlxuICAgICAgICBpZiBuID0gTC5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgbG9vcCAobmw6OmNsQGFjY3UpIFtdIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoY2xAYWNjdSksIGxcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgMCBhcyBubCk6OihTcGFjZXxTcGFjZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgbGV0IHggPSBMLmxlbmd0aCBzIC0gbiBpblxuICAgICAgICBsb29wIChubDo6Y2xAYWNjdSlcbiAgICAgICAgICAoaWYgeCA+IDAgdGhlbiBbTC5tYWtlX3NwYWNlIHhdIGVsc2UgW10pXG4gICAgICAgICAgdGxcbiAgICAgIHwgTmV3bGluZXMoXyk6Ol8gYXMgbCAtPlxuICAgICAgICAoY2xAYWNjdSksIGxcbiAgICAgIHwgTmV3bGluZTo6XyBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgKGU6OmNsKSB0bFxuICAgICAgfCBbXSBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgIGluXG4gICAgbWF0Y2ggbG9vcCBbXSBbXSBsZXhlbWVzIHdpdGhcbiAgICB8IFtdLCByaWdodCAtPiBbXSwgcmlnaHRcbiAgICB8IGwsIHJpZ2h0IC0+XG4gICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgIGwsIHJpZ2h0XG5cbiAgbGV0IHVuaW5kZW50IG4gbGV4ZW1lcyA9XG4gICAgbGV0IGZzdCwgc25kID0gdW5pbmRlbnRfcmV2IG4gbGV4ZW1lcyBpblxuICAgIExpc3QucmV2IGZzdCwgc25kXG5cbiAgbGV0IHJlYyBpc19ibGFuayA9IGZ1bmN0aW9uXG4gICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUgfCBOZXdsaW5lcyBfKSA6OiB0bCAtPlxuICAgICAgaXNfYmxhbmsgdGxcbiAgICB8IFtdIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICBsZXQgc2VtcGhfb3JfYm9sZCAobjppbnQpIChsOmwpID1cbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgYXNzZXJ0IChuPjAgJiYgbjw0KTtcbiAgICBtYXRjaFxuICAgICAgZnNwbGl0XG4gICAgICAgIH5leGNsOihmdW5jdGlvbiBOZXdsaW5lcyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlN0YXI6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7QmFja3NsYXNoXSx0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpTdGFycyAwOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO0JhY2tzbGFzaF0sU3Rhcjo6dGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6U3RhcnMgbjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3RhcjtCYWNrc2xhc2hdLFN0YXJzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjpTdGFyOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sU3Rhcjo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO3hdLHRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooU3RhcnMgMCBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3Rhcjt4XSxTdGFyOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFN0YXJzIG4gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7eF0sU3RhcnMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyBhcyB4KTo6KFN0YXJ8U3RhcnMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbczt4XSx0bClcbiAgICAgICAgICAgIHwgKFN0YXJ8U3RhcnMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgTC5sZW5ndGggcyA9IG4gdGhlblxuICAgICAgICAgICAgICAgIFNwbGl0KFtdLHRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgbFxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIE5vbmVcbiAgICB8IFNvbWUobGVmdCxyaWdodCkgLT5cbiAgICAgIGlmIGlzX2JsYW5rIGxlZnQgdGhlbiBOb25lIGVsc2UgU29tZShsZWZ0LHJpZ2h0KVxuXG4gIGxldCBzbV91ZW1waF9vcl9ib2xkIChuOmludCkgKGw6bCkgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBhc3NlcnQgKG4+MCAmJiBuPDQpO1xuICAgIG1hdGNoXG4gICAgICBmc3BsaXRcbiAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uIE5ld2xpbmVzIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLHRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIDA6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sdGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyAwIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgbiBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfIGFzIHgpOjooVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtzO3hdLHRsKVxuICAgICAgICAgICAgfCAoVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBMLmxlbmd0aCBzID0gbiB0aGVuXG4gICAgICAgICAgICAgICAgU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICBsXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTm9uZVxuICAgIHwgU29tZShsZWZ0LHJpZ2h0KSAtPlxuICAgICAgaWYgaXNfYmxhbmsgbGVmdCB0aGVuIE5vbmUgZWxzZSBTb21lKGxlZnQscmlnaHQpXG5cblxuICBsZXQgZ2hfdWVtcGhfb3JfYm9sZCAobjppbnQpIChsOmwpID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgYXNzZXJ0IChuPjAgJiYgbjw0KTtcbiAgICBtYXRjaFxuICAgICAgZnNwbGl0XG4gICAgICAgIH5leGNsOihmdW5jdGlvbiBOZXdsaW5lcyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSx0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyAwOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZXMgbjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLFVuZGVyc2NvcmVzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLHRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgMCBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFVuZGVyc2NvcmVzIG4gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyBhcyB4KTo6KFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbczt4XSx0bClcbiAgICAgICAgICAgIHwgKFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6KFdvcmQgX3xOdW1iZXIgXyBhcyB3KTo6IHRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3c7c10sdGwpXG4gICAgICAgICAgICB8IChVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIEwubGVuZ3RoIHMgPSBuIHRoZW5cbiAgICAgICAgICAgICAgICBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgIGxcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBOb25lXG4gICAgfCBTb21lKGxlZnQscmlnaHQpIC0+XG4gICAgICBpZiBpc19ibGFuayBsZWZ0IHRoZW4gTm9uZSBlbHNlIFNvbWUobGVmdCxyaWdodClcblxuXG4gIGxldCB1ZW1waF9vcl9ib2xkIG4gbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogRklYTUU6IHVzZSBycGwgY2FsbC9yZXR1cm4gY29udmVudGlvbiAqKVxuICAgIGlmIGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgdGhlblxuICAgICAgZ2hfdWVtcGhfb3JfYm9sZCBuIGxcbiAgICBlbHNlXG4gICAgICBzbV91ZW1waF9vcl9ib2xkIG4gbFxuXG4gIGxldCBlYXRfYmxhbmsgPVxuICAgIGVhdCAoZnVuY3Rpb24gfFNwYWNlfFNwYWNlcyBffE5ld2xpbmV8TmV3bGluZXMgXyAtPiB0cnVlfCBfIC0+IGZhbHNlKVxuXG5cbiAgKCogdXNlZCBieSB0YWdfX21heWJlX2gxIGFuZCB0YWdfX21heWJlX2gyICopXG4gIGxldCBzZXRleHRfdGl0bGUgbWFpbl9sb29wIChsOmwpIDogKE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdCAqIGwpIG9wdGlvbiA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYyBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gciBsID1cbiAgICAgICgqIElmIHRoZXJlJ3MgYSBiYWxhbmNlZCAoY29tcGxldGUpIGJhY2txdW90ZS1zdGFydGVkIGNvZGUgYmxvY2tcbiAgICAgICAgIHRoZW4gaXQgc2hvdWxkIGJlIFwiaWdub3JlZFwiLCBlbHNlIGl0IG1lYW5zIHRoZSBsaW5lIHRoYXRcbiAgICAgICAgIGZvbGxvd3MgaXMgcGFydCBvZiBhIGNvZGUgYmxvY2ssIHNvIGl0J3Mgbm90IGRlZmluaW5nIGFcbiAgICAgICAgIHNldGV4dC1zdHlsZSB0aXRsZS4gKilcbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpIGRldGVjdF9iYWxhbmNlZF9icXMgbj0lZCByPSVTIGw9JVNcXG4lIVwiXG4gICAgICAgICAgbiAoTC5zdHJpbmdfb2ZfdG9rZW5zIHIpIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgTm9uZVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICBOb25lXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgMDo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyB4Ojp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSAoQmFja3F1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGU6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyAwOjp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpiOjpyKSAoQmFja3F1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGVzIHg6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlIGFzIGIpOjp0bCB3aGVuIG4gPSAxIC0+XG4gICAgICAgIFNvbWUoTGlzdC5yZXYgKGI6OnIpLCB0bClcbiAgICAgIHwgKEJhY2txdW90ZXMgeCBhcyBiKTo6dGwgd2hlbiBuID0geCsyIC0+XG4gICAgICAgIFNvbWUoTGlzdC5yZXYgKGI6OnIpLCB0bClcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChlOjpyKSB0bFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIHIgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICBpZiByID0gW10gdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNvbWUoTGlzdC5yZXYgciwgW10pXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgdGxcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGU6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpiOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgMDo6dGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgMDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgeDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGRldGVjdF9iYWxhbmNlZF9icXMgMSBbXSB0bCB3aXRoXG4gICAgICAgICAgfCBTb21lKGJsLHRsKSAtPiBsb29wIChibEByKSB0bFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIGVuZFxuICAgICAgfCBCYWNrcXVvdGVzKHgpOjp0bCAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBkZXRlY3RfYmFsYW5jZWRfYnFzICh4KzIpIFtdIHRsIHdpdGhcbiAgICAgICAgICB8IFNvbWUoYmwsdGwpIC0+IGxvb3AgKGJsQHIpIHRsXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgZW5kXG4gICAgICB8IE5ld2xpbmU6OihFcXVhbHxFcXVhbHMgX3xNaW51c3xNaW51c3MgXyk6OnRsIC0+XG4gICAgICAgIGlmIHIgPSBbXSB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU29tZShMaXN0LnJldiByLCB0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLnNldGV4dF90aXRsZSBpcyB3cm9uZ2x5IHVzZWQhXFxuJSFcIjtcbiAgICAgICAgTm9uZVxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjpyKSB0bFxuICAgIGluXG4gICAgaWYgbWF0Y2ggbCB3aXRoXG4gICAgICB8IExlc3N0aGFuOjpXb3JkIF86Ol8gLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWFpbl9sb29wIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgKEh0bWxfYmxvY2sgXyB8IENvZGVfYmxvY2sgXyB8IFJhd19ibG9jayBfKTo6XyAtPlxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHJlc3VsdCA9IGxvb3AgW10gbCBpblxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgc2V0ZXh0X3RpdGxlIGw9JVMgcmVzdWx0PSVTLCVTXFxuJSFcIlxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbClcbiAgICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lICh4LHRsKSAtPiBMLnN0cmluZ19vZl90b2tlbnMgeClcbiAgICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lICh4LHRsKSAtPiBMLnN0cmluZ19vZl90b2tlbnMgdGwpO1xuICAgICAgcmVzdWx0XG5cbiAgbGV0IHRhZ19fbWF5YmVfaDEgKG1haW5fbG9vcDptYWluX2xvb3ApID1cbiAgICBUYWcoXCJ0YWdfX21heWJlX2gxXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID1cbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHNldGV4dF90aXRsZSBtYWluX2xvb3AgbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lKHRpdGxlLCB0bCkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IEgxKG1haW5fbG9vcCBbXSBbXSB0aXRsZSkgaW5cbiAgICAgICAgICAgICAgICAgIFNvbWUoKHRpdGxlOjpyKSwgW05ld2xpbmVdLCB0bClcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBXYXJuaW5nOiBPbWRfcGFyc2VyLnRhZ19fbWF5YmVfaDEgaXMgd3JvbmdseSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgKHA9JVMpIVxcblwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHApO1xuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICApXG5cbiAgbGV0IHRhZ19fbWF5YmVfaDIgKG1haW5fbG9vcDptYWluX2xvb3ApID1cbiAgICBUYWcoXCJ0YWdfX21heWJlX2gyXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID1cbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHNldGV4dF90aXRsZSBtYWluX2xvb3AgbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lKHRpdGxlLCB0bCkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IEgyKG1haW5fbG9vcCBbXSBbXSB0aXRsZSkgaW5cbiAgICAgICAgICAgICAgICAgIFNvbWUoKHRpdGxlOjpyKSwgW05ld2xpbmVdLCB0bClcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBXYXJuaW5nOiBPbWRfcGFyc2VyLnRhZ19fbWF5YmVfaDIgaXMgd3JvbmdseSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgKHA9JVMpIVxcblwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHApO1xuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICApXG5cbiAgbGV0IHRhZ19fbWQgbWQgPSAoKiBbbWRdIHNob3VsZCBiZSBpbiByZXZlcnNlICopXG4gICAgVGFnKFwidGFnX19tZFwiLFxuICAgICAgICBvYmplY3RcbiAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgbCA9IFNvbWUobWRAciwgW10sIGwpXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICAgKVxuXG4gICgqIExldCdzIHRhZyB0aGUgbGluZXMgdGhhdCAqbWlnaHQqIGJlIHRpdGxlcyB1c2luZyBzZXRleHQtc3R5bGUuXG4gICAgIFwibWlnaHRcIiBiZWNhdXNlIGlmIHRoZXkgYXJlLCBmb3IgaW5zdGFuY2UsIGluIGEgY29kZSBzZWN0aW9uLFxuICAgICB0aGVuIHRoZXkgYXJlIG5vdCB0aXRsZXMgYXQgYWxsLiAqKVxuICBsZXQgdGFnX3NldGV4dCBtYWluX2xvb3AgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgbGV0IHJlYyBsb29wIHBsIHJlcyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIHwgW05ld2xpbmV8TmV3bGluZXMgX10gLT5cbiAgICAgICAgcGxAcmVzXG4gICAgICB8IChOZXdsaW5lIGFzIGUxKTo6KEVxdWFsfEVxdWFscyBfIGFzIGUyKTo6dGwgLT4gKCogbWlnaHQgYmUgYSBIMS4gKilcbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0X3JldlxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBffEVxdWFsfEVxdWFscyBfKTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pXG4gICAgICAgICAgICAgICAgICB8IF86Ol8gYXMgbCAtPiBTcGxpdChbXSwgbCkpXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShybGVmdCwgKChbXXwoTmV3bGluZXxOZXdsaW5lcyBfKTo6XykgYXMgcmlnaHQpKSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAdGFnX19tYXliZV9oMSBtYWluX2xvb3A6OnJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsb29wIFtdIChlMjo6ZTE6OnBsQHJlcykgW11cbiAgICAgICAgZW5kXG4gICAgICB8IChOZXdsaW5lIGFzIGUxKTo6KE1pbnVzfE1pbnVzcyBfIGFzIGUyKTo6dGwgLT4gKCogbWlnaHQgYmUgYSBIMi4gKilcbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0X3JldlxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBffE1pbnVzfE1pbnVzcyBfKTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pXG4gICAgICAgICAgICAgICAgICB8IF86Ol8gYXMgbCAtPiBTcGxpdChbXSwgbCkpXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShybGVmdCwgKChbXXwoTmV3bGluZXxOZXdsaW5lcyBfKTo6XykgYXMgcmlnaHQpKSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAdGFnX19tYXliZV9oMiBtYWluX2xvb3A6OnJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsb29wIFtdIChlMjo6ZTE6OnBsQHJlcykgW11cbiAgICAgICAgZW5kXG4gICAgICB8IChOZXdsaW5lIHwgTmV3bGluZXMgXyBhcyBlMSk6OnRsIC0+XG4gICAgICAgIGxvb3AgW10gKGUxOjpwbEByZXMpIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OnBsKSByZXMgdGxcbiAgICBpblxuICAgIExpc3QucmV2IChsb29wIFtdIFtdIGxleGVtZXMpXG5cblxuICBsZXQgaHJfbSBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGxvb3AgbiA9IGZ1bmN0aW9uXG4gICAgICB8ICgoTmV3bGluZXMgX3xOZXdsaW5lKTo6dGwpIHwgKFtdIGFzIHRsKSAtPlxuICAgICAgICBpZiBuID49IDMgdGhlbiBTb21lIHRsIGVsc2UgTm9uZVxuICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBsb29wIG4gdGxcbiAgICAgIHwgTWludXM6OnRsIC0+XG4gICAgICAgIGxvb3AgKG4rMSkgdGxcbiAgICAgIHwgTWludXNzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgKHgrMituKSB0bFxuICAgICAgfCBfOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICBpbiBsb29wIDAgbFxuXG4gIGxldCBocl9zIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgbG9vcCBuID0gZnVuY3Rpb25cbiAgICAgIHwgKChOZXdsaW5lfE5ld2xpbmVzIF8pOjp0bCkgfCAoW10gYXMgdGwpIC0+XG4gICAgICAgIGlmIG4gPj0gMyB0aGVuIFNvbWUgdGwgZWxzZSBOb25lXG4gICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGxvb3AgbiB0bFxuICAgICAgfCBTdGFyOjp0bCAtPlxuICAgICAgICBsb29wIChuKzEpIHRsXG4gICAgICB8IFN0YXJzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgKHgrMituKSB0bFxuICAgICAgfCBfOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICBpbiBsb29wIDAgbFxuXG4gIGxldCBociBsID1cbiAgICBtYXRjaCBocl9tIGwgd2l0aFxuICAgIHwgTm9uZSAtPiBocl9zIGxcbiAgICB8IFNvbWUgXyBhcyB0bCAtPiB0bFxuXG4gICgqKiBbYmNvZGVdIHBhcnNlcyBjb2RlIHRoYXQncyBkZWxpbWl0ZWQgYnkgYmFja3F1b3RlKHMpICopXG4gIGxldCBiY29kZSA/KGRlZmF1bHRfbGFuZz1kZWZhdWx0X2xhbmcpIHIgcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgZSwgdGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCAtPiBlLCB0bFxuICAgICAgfCBfIC0+IGZhaWx3aXRoIFwiT21kX3BhcnNlci5iY29kZSBpcyB3cm9uZ2x5IGNhbGxlZFwiXG4gICAgaW5cbiAgICBsZXQgcmVjIGNvZGVfYmxvY2sgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIE5vbmVcbiAgICAgIHwgQmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiBlID0gQmFja3F1b3RlIHRoZW5cbiAgICAgICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmFjY3UgLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgY29kZV9ibG9jayAoQmFja3F1b3RlOjphY2N1KSB0bFxuICAgICAgfCAoQmFja3F1b3RlcyBuIGFzIGIpOjp0bCAtPlxuICAgICAgICBpZiBlID0gYiB0aGVuXG4gICAgICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjphY2N1IC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgU29tZShMaXN0LnJldiBhY2N1LCB0bClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNvZGVfYmxvY2sgKGI6OmFjY3UpIHRsXG4gICAgICB8IFRhZyhfLCBfKTo6dGwgLT5cbiAgICAgICAgY29kZV9ibG9jayBhY2N1IHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGNvZGVfYmxvY2sgKGU6OmFjY3UpIHRsXG4gICAgaW5cbiAgICBtYXRjaCBjb2RlX2Jsb2NrIFtdIHRsIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZShjYiwgbCkgLT5cbiAgICAgIGlmIExpc3QuZXhpc3RzIChmdW5jdGlvbiAoTmV3bGluZXxOZXdsaW5lcyBfKSAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgY2JcbiAgICAgICYmIChtYXRjaCBwIHdpdGggW118W05ld2xpbmV8TmV3bGluZXMgX10gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAmJiAobWF0Y2ggZSB3aXRoIEJhY2txdW90ZXMgbiB3aGVuIG4gPiAwIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgdGhlblxuICAgICAgICBtYXRjaCBjYiB3aXRoXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZSA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGwgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZXMgMCA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMoTmV3bGluZTo6dGwpIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGxhbmcsIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuICAgICAgICB8IFdvcmQgbGFuZyA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IE5ld2xpbmVzIG4gOjogdGxcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogTmV3bGluZXMgbiA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIChOZXdsaW5lcyhuLTEpOjp0bCkgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgTmV3bGluZSA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRsIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGNiIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjbGVhbl9iY29kZSBzID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AxIGkgPVxuICAgICAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuIDBcbiAgICAgICAgICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICAgICB8ICcgJyAtPiBsb29wMShpKzEpXG4gICAgICAgICAgICAgIHwgXyAtPiBpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AyIGkgPVxuICAgICAgICAgICAgaWYgaSA9IC0xIHRoZW4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAgICAgICBlbHNlIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAgICAgfCAnICcgLT4gbG9vcDIoaS0xKVxuICAgICAgICAgICAgICB8IF8gLT4gaSsxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBsb29wMSAwLCBsb29wMiAoU3RyaW5nLmxlbmd0aCBzIC0gMSkgd2l0aFxuICAgICAgICAgIHwgMCwgbiB3aGVuIG4gPSBTdHJpbmcubGVuZ3RoIHMgLSAxIC0+IHNcbiAgICAgICAgICB8IGksIG4gLT4gU3RyaW5nLnN1YiBzIGkgKG4taSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgY2IgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGYgXCIoT01EKSBjbGVhbl9iY29kZSAlUyA9PiAlU1xcbiUhXCIgY29kZSAoY2xlYW5fYmNvZGUgY29kZSk7XG4gICAgICAgIFNvbWUoQ29kZShkZWZhdWx0X2xhbmcsIGNsZWFuX2Jjb2RlIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuXG5cbiAgZXhjZXB0aW9uIE5MX2V4Y2VwdGlvblxuICBleGNlcHRpb24gUHJlbWF0dXJlX2VuZGluZ1xuXG4gICgqICEhRE8gTk9UIERFTEVURSBUSElTISFcbiAgICAgVGhlIHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgdGhlIGdlbmVyYXRlZCBwYXJ0IHRoYXQgZm9sbG93cyByaWdodCBhZnRlci5cbiAgICAgTGlzdC5pdGVyIChmdW4gKGEsYixjKSAtPlxuICAgICBwcmludF9lbmRsaW5lIChcImxldCByZWFkX3VudGlsX1wiXmFeXCIgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5iXlwiIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5iXlwicyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChcIl5iXlwiOjphY2N1KSBuIChcIl5iXlwiOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcIlxuICAgICAgXihpZiBjPD5cIlwiIHRoZW4gXCJcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5jXlwiIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5jXlwicyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChcIl5jXlwiOjphY2N1KSBuIChcIl5jXlwiOjp0bClcbiAgICAgIHwgXCJeY15cIiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IFwiXmNeXCJzIHggYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobit4KzIpIHRsXG4gICAgIFwiIGVsc2UgXCJcIileXG4gICAgIFwiICAgIHwgXCJeYl5cIiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgXCJeYl5cInMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgXCJeYl5cIjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKFwiXmJeXCI6OmFjY3UpIChuLTEpIChcIl5iXlwiOjp0bClcbiAgICAgIHwgXCJeYl5cInMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgXCJeYl5cInMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFwiXmJeXCI6OmFjY3UgLT4gXCJeYl5cInMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IFwiXmJeXCJzIHg6OmFjY3UgLT4gXCJeYl5cInMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBcIl5iXlwiOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChcIl5iXlwicyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXFxcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9cIl5hXlwiICVTIGJxPSViIG5vX25sPSViXFxcXG4lIVxcXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFxcXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfXCJeYV5cIiAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcXFxuJSFcXFwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblwiKSlcblxuICAgICBbIFwiZ3RcIiwgXCJHcmVhdGVydGhhblwiLCBcIkxlc3N0aGFuXCI7XG4gICAgIFwibHRcIiwgXCJMZXNzdGhhblwiLCBcIlwiO1xuICAgICBcImNwYXJlbnRoXCIsIFwiQ3BhcmVudGhlc2lzXCIsIFwiT3BhcmVudGhlc2lzXCI7XG4gICAgIFwib3BhcmVudGhcIiwgXCJPcGFyZW50aGVzaXNcIiwgXCJcIjtcbiAgICAgXCJkcVwiLCBcIkRvdWJsZXF1b3RlXCIsIFwiXCI7XG4gICAgIFwicVwiLCBcIlF1b3RlXCIsIFwiXCI7XG4gICAgIFwib2JyYWNrZXRcIiwgXCJPYnJhY2tldFwiLCBcIlwiO1xuICAgICBcImNicmFja2V0XCIsIFwiQ2JyYWNrZXRcIiwgXCJPYnJhY2tldFwiO1xuICAgICBcInNwYWNlXCIsIFwiU3BhY2VcIiwgXCJcIjtcbiAgICAgXVxuICAqKVxuXG4gICgqIGJlZ2luIGdlbmVyYXRlZCBwYXJ0ICopXG5cbmxldCByZWFkX3VudGlsX2d0ID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoR3JlYXRlcnRoYW4gYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKEdyZWF0ZXJ0aGFucyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChHcmVhdGVydGhhbjo6YWNjdSkgbiAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFuIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbnMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoTGVzc3RoYW46OmFjY3UpIG4gKExlc3N0aGFuOjp0bClcbiAgICAgIHwgTGVzc3RoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobisxKSB0bFxuICAgICAgfCBMZXNzdGhhbnMgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgICAgIHwgR3JlYXRlcnRoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IEdyZWF0ZXJ0aGFucyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBHcmVhdGVydGhhbjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEdyZWF0ZXJ0aGFuOjphY2N1KSAobi0xKSAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbnMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgR3JlYXRlcnRoYW5zKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBHcmVhdGVydGhhbjo6YWNjdSAtPiBHcmVhdGVydGhhbnMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyB4OjphY2N1IC0+IEdyZWF0ZXJ0aGFucyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IEdyZWF0ZXJ0aGFuOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChHcmVhdGVydGhhbnMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2d0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZ3QgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfbHQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoTGVzc3RoYW5zIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKExlc3N0aGFuOjphY2N1KSBuIChMZXNzdGhhbjo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgTGVzc3RoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IExlc3N0aGFucyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBMZXNzdGhhbjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKExlc3N0aGFuOjphY2N1KSAobi0xKSAoTGVzc3RoYW46OnRsKVxuICAgICAgfCBMZXNzdGhhbnMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgTGVzc3RoYW5zKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBMZXNzdGhhbjo6YWNjdSAtPiBMZXNzdGhhbnMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IExlc3N0aGFucyB4OjphY2N1IC0+IExlc3N0aGFucyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IExlc3N0aGFuOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChMZXNzdGhhbnMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2x0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfbHQgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfY3BhcmVudGggPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChDcGFyZW50aGVzaXMgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKENwYXJlbnRoZXNpc3MgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQ3BhcmVudGhlc2lzOjphY2N1KSBuIChDcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpcyBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPcGFyZW50aGVzaXM6OmFjY3UpIG4gKE9wYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IE9wYXJlbnRoZXNpcyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgICAgIHwgQ3BhcmVudGhlc2lzIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBDcGFyZW50aGVzaXNzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENwYXJlbnRoZXNpczo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKENwYXJlbnRoZXNpczo6YWNjdSkgKG4tMSkgKENwYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IENwYXJlbnRoZXNpc3MgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ3BhcmVudGhlc2lzcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgQ3BhcmVudGhlc2lzOjphY2N1IC0+IENwYXJlbnRoZXNpc3MoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IENwYXJlbnRoZXNpc3MgeDo6YWNjdSAtPiBDcGFyZW50aGVzaXNzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gQ3BhcmVudGhlc2lzOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChDcGFyZW50aGVzaXNzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jcGFyZW50aCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NwYXJlbnRoICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX29wYXJlbnRoID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXNzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9wYXJlbnRoZXNpczo6YWNjdSkgbiAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBPcGFyZW50aGVzaXMgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT3BhcmVudGhlc2lzOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoT3BhcmVudGhlc2lzOjphY2N1KSAobi0xKSAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPcGFyZW50aGVzaXNzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBPcGFyZW50aGVzaXM6OmFjY3UgLT4gT3BhcmVudGhlc2lzcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgT3BhcmVudGhlc2lzcyB4OjphY2N1IC0+IE9wYXJlbnRoZXNpc3MoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBPcGFyZW50aGVzaXM6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKE9wYXJlbnRoZXNpc3MoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29wYXJlbnRoICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfZHEgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChEb3VibGVxdW90ZSBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoRG91YmxlcXVvdGVzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKERvdWJsZXF1b3RlOjphY2N1KSBuIChEb3VibGVxdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgRG91YmxlcXVvdGUgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IERvdWJsZXF1b3RlcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBEb3VibGVxdW90ZTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKERvdWJsZXF1b3RlOjphY2N1KSAobi0xKSAoRG91YmxlcXVvdGU6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZXMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgRG91YmxlcXVvdGVzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBEb3VibGVxdW90ZTo6YWNjdSAtPiBEb3VibGVxdW90ZXMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyB4OjphY2N1IC0+IERvdWJsZXF1b3Rlcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IERvdWJsZXF1b3RlOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChEb3VibGVxdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2RxICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZHEgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfcSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFF1b3RlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChRdW90ZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoUXVvdGU6OmFjY3UpIG4gKFF1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBRdW90ZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgUXVvdGVzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFF1b3RlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoUXVvdGU6OmFjY3UpIChuLTEpIChRdW90ZTo6dGwpXG4gICAgICB8IFF1b3RlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBRdW90ZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFF1b3RlOjphY2N1IC0+IFF1b3RlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgUXVvdGVzIHg6OmFjY3UgLT4gUXVvdGVzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gUXVvdGU6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFF1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfcSAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX3EgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfb2JyYWNrZXQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSBuIChPYnJhY2tldDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgT2JyYWNrZXQgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IE9icmFja2V0cyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPYnJhY2tldDo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSAobi0xKSAoT2JyYWNrZXQ6OnRsKVxuICAgICAgfCBPYnJhY2tldHMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT2JyYWNrZXRzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBPYnJhY2tldDo6YWNjdSAtPiBPYnJhY2tldHMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IE9icmFja2V0cyB4OjphY2N1IC0+IE9icmFja2V0cyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IE9icmFja2V0OjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChPYnJhY2tldHMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29icmFja2V0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfY2JyYWNrZXQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChDYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoQ2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKENicmFja2V0OjphY2N1KSBuIChDYnJhY2tldDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXQgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9icmFja2V0cyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPYnJhY2tldDo6YWNjdSkgbiAoT2JyYWNrZXQ6OnRsKVxuICAgICAgfCBPYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IE9icmFja2V0cyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICAgICAgfCBDYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgQ2JyYWNrZXRzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENicmFja2V0Ojp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQ2JyYWNrZXQ6OmFjY3UpIChuLTEpIChDYnJhY2tldDo6dGwpXG4gICAgICB8IENicmFja2V0cyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBDYnJhY2tldHMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IENicmFja2V0OjphY2N1IC0+IENicmFja2V0cygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgQ2JyYWNrZXRzIHg6OmFjY3UgLT4gQ2JyYWNrZXRzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gQ2JyYWNrZXQ6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKENicmFja2V0cyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfY2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jYnJhY2tldCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9zcGFjZSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFNwYWNlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChTcGFjZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoU3BhY2U6OmFjY3UpIG4gKFNwYWNlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBTcGFjZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgU3BhY2VzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFNwYWNlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoU3BhY2U6OmFjY3UpIChuLTEpIChTcGFjZTo6dGwpXG4gICAgICB8IFNwYWNlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBTcGFjZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFNwYWNlOjphY2N1IC0+IFNwYWNlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgU3BhY2VzIHg6OmFjY3UgLT4gU3BhY2VzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gU3BhY2U6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFNwYWNlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfc3BhY2UgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9zcGFjZSAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuICAoKiAvZW5kIGdlbmVyYXRlZCBwYXJ0ICopXG5cbiAgbGV0IHJlYWRfdW50aWxfbmV3bGluZSBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID1cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8ICgoQmFja3NsYXNoIGFzIGEpKSA6OiAoKE5ld2xpbmUgYXMgYikpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGIgOjogYSA6OiBhY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmUgOjogQmFja3NsYXNoIDo6IGFjY3UpIG4gKE5ld2xpbmUgOjogdGwpXG4gICAgICB8ICgoQmFja3NsYXNocyAwIGFzIGUpKSA6OiB0bCAtPiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgIHwgKChCYWNrc2xhc2hzIHggYXMgZSkpIDo6IHRsIC0+XG4gICAgICAgIGlmICh4IG1vZCAyKSA9IDBcbiAgICAgICAgdGhlbiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgICAgZWxzZSBsb29wICgoQmFja3NsYXNocyAoeCAtIDEpKSA6OiBhY2N1KSBuIChCYWNrc2xhc2ggOjogdGwpXG4gICAgICB8ICgoTmV3bGluZSBhcyBlKSkgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlbiAoKExpc3QucmV2IGFjY3UpLCB0bCkgZWxzZSBsb29wIChlIDo6IGFjY3UpIChuIC0gMSkgdGxcbiAgICAgIHwgTmV3bGluZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMFxuICAgICAgICB0aGVuICgoTGlzdC5yZXYgYWNjdSksIChOZXdsaW5lIDo6IHRsKSlcbiAgICAgICAgZWxzZSBsb29wIChOZXdsaW5lIDo6IGFjY3UpIChuIC0gMSkgKE5ld2xpbmUgOjogdGwpXG4gICAgICB8IE5ld2xpbmVzIG4gOjogdGwgLT4gKChMaXN0LnJldiBhY2N1KSwgKChOZXdsaW5lcyAobiAtIDEpKSA6OiB0bCkpXG4gICAgICB8IGUgOjogdGwgLT4gbG9vcCAoZSA6OiBhY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICBpbiBsb29wIFtdIDAgbFxuXG4gICgqIEgxLCBIMiwgSDMsIC4uLiAqKVxuICBsZXQgcmVhZF90aXRsZSAobWFpbl9sb29wOm1haW5fbG9vcCkgbiByIF9wcmV2aW91cyBsZXhlbWVzID1cbiAgICBsZXQgdGl0bGUsIHJlc3QgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IEJhY2tzbGFzaDo6SGFzaDo6dGwgLT5cbiAgICAgICAgICBsb29wIChIYXNoOjpCYWNrc2xhc2g6OmFjY3UpIHRsXG4gICAgICAgIHwgQmFja3NsYXNocyhuKTo6SGFzaDo6dGwgd2hlbiBuIG1vZCAyID0gMSAtPlxuICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaHMobi0xKTo6YWNjdSkgdGxcbiAgICAgICAgfCBCYWNrc2xhc2g6Okhhc2hzKGgpOjp0bCAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHRsIHdpdGhcbiAgICAgICAgICAgIHwgW11cbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8TmV3bGluZXMgXyk6Ol9cbiAgICAgICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNoOjphY2N1KVxuICAgICAgICAgICAgICAgICgoaWYgaCA9IDAgdGhlbiBIYXNoIGVsc2UgSGFzaHMoaC0xKSk6OnRsKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2hzKGgpOjpCYWNrc2xhc2g6OmFjY3UpIHRsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgQmFja3NsYXNocyhuKTo6SGFzaHMoaCk6OnRsIHdoZW4gbiBtb2QgMiA9IDEgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCB0bCB3aXRoXG4gICAgICAgICAgICB8IFtdXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OihOZXdsaW5lfE5ld2xpbmVzIF8pOjpfXG4gICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaHMobik6OmFjY3UpXG4gICAgICAgICAgICAgICAgKChpZiBoID0gMCB0aGVuIEhhc2ggZWxzZSBIYXNocyhoLTEpKTo6dGwpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaHMoaCk6OkJhY2tzbGFzaHMobik6OmFjY3UpIHRsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgKEhhc2h8SGFzaHMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoSGFzaHxIYXNocyBfKSA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyBhcyBsKVxuICAgICAgICB8ICgoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfIGFzIGwpXG4gICAgICAgIHwgKFtdIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoSGFzaHxIYXNocyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKEhhc2h8SGFzaHMgXykgOjogKFNwYWNlfFNwYWNlcyBfKVxuICAgICAgICAgIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIDo6IChbXSBhcyBsKSAtPlxuICAgICAgICAgIG1haW5fbG9vcCBbXSBbXSAoTGlzdC5yZXYgYWNjdSksIGxcbiAgICAgICAgfCBbSGFzaHxIYXNocyBfXVxuICAgICAgICB8IFsoU3BhY2V8U3BhY2VzIF8pOyBIYXNofEhhc2hzIF9dXG4gICAgICAgIHwgWyhTcGFjZXxTcGFjZXMgXyk7IChIYXNofEhhc2hzIF8pOyAoU3BhY2V8U3BhY2VzIF8pXSAtPlxuICAgICAgICAgIG1haW5fbG9vcCBbXSBbXSAoTGlzdC5yZXYgYWNjdSksIFtdXG4gICAgICAgIHwgeDo6dGwgLT5cbiAgICAgICAgICBsb29wICh4OjphY2N1KSB0bFxuICAgICAgaW5cbiAgICAgIGxvb3AgW10gbGV4ZW1lc1xuICAgIGluXG4gICAgbWF0Y2ggbiB3aXRoXG4gICAgfCAxIC0+IFNvbWUoSDEgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgMiAtPiBTb21lKEgyIHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDMgLT4gU29tZShIMyB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCA0IC0+IFNvbWUoSDQgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgNSAtPiBTb21lKEg1IHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDYgLT4gU29tZShINiB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwIGwgPVxuICAgIG1hdGNoIGV4dGVuc2lvbnMgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgXyAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAoZnVuIGYgLT4gZiNwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsKVxuICAgICAgICAgIHwgU29tZShuciwgbnAsIG5sKSBhcyBlIC0+XG4gICAgICAgICAgICAoZnVuIGYgLT4gbWF0Y2ggZiNwYXJzZXJfZXh0ZW5zaW9uIG5yIG5wIG5sIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBlXG4gICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBrIC0+IGspXG4gICAgICAgIClcbiAgICAgICAgTm9uZVxuICAgICAgICBleHRlbnNpb25zXG5cbiAgKCogYmxvY2txdW90ZXMgKilcbiAgbGV0IGVtYWlsc3R5bGVfcXVvdGluZyAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsZXhlbWVzID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgYmxvY2sgY2wgPVxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OihOZXdsaW5lOjpfIGFzIHRsKSAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW10gdGxcbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OlNwYWNlOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW10gdGxcbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OlNwYWNlcyAwOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW1NwYWNlXSB0bFxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6U3BhY2VzIG46OnRsIC0+XG4gICAgICAgIGFzc2VydChuPjApO1xuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW1NwYWNlcyhuLTEpXSB0bFxuXG4gICAgICAoKiBtdWx0aSBwYXJhZ3JhcGggYmxvY2txdW90ZXMgd2l0aCBlbXB0eSBsaW5lcyAqKVxuICAgICAgfCBOZXdsaW5lcyAwOjpHcmVhdGVydGhhbjo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbXSB0bFxuICAgICAgfCBOZXdsaW5lcyAwOjpHcmVhdGVydGhhbjo6U3BhY2VzIDA6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbU3BhY2VdIHRsXG4gICAgICB8IE5ld2xpbmVzIDA6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgbjo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbU3BhY2VzKG4tMSldIHRsXG5cbiAgICAgIHwgKE5ld2xpbmVzIF86Ol8gYXMgbCkgfCAoW10gYXMgbCkgLT4gZml4KExpc3QucmV2KGNsQGJsb2NrKSksIGxcbiAgICAgIHwgZTo6dGwgLT4gbG9vcCBibG9jayAoZTo6Y2wpIHRsXG4gICAgaW5cbiAgICBtYXRjaCBsb29wIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6OmJsb2NrLCB0bCAtPlxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3RpbmcgJVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBibG9jayk7XG4gICAgICBTb21lKChCbG9ja3F1b3RlKG1haW5fbG9vcCBbXSBbXSBibG9jayk6OnIpLCBbTmV3bGluZV0sIHRsKVxuICAgIHwgXyAtPlxuICAgICAgTm9uZVxuXG5cbiAgKCogbWF5YmUgYSByZWZlcmVuY2UgKilcbiAgbGV0IG1heWJlX3JlZmVyZW5jZSAobWFpbl9sb29wOm1haW5fbG9vcCkgcmMgciBfcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIGtub3cgaXQncyBub3QgYSBsaW5rIGFsdGhvdWdoXG4gICAgICAgaXQgc3RhcnRlZCB3aXRoIGEgJ1snICopXG4gICAgKCogU28gaXQgY291bGQgYmUgYSByZWZlcmVuY2Ugb3IgYSBsaW5rIGRlZmluaXRpb24uICopXG4gICAgbGV0IHJlYyBtYXliZV9yZWYgbCA9XG4gICAgICBsZXQgdGV4dCwgcmVtYWlucyA9IHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCBpblxuICAgICAgKCogY2hlY2sgdGhhdCB0aGVyZSBpcyBubyBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgaWYgKHRyeSBpZ25vcmUocmVhZF91bnRpbF9vYnJhY2tldCB+YnE6dHJ1ZSB0ZXh0KTsgdHJ1ZVxuICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBmYWxzZSkgdGhlblxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nOyAoKiA8LS0gaWxsLXBsYWNlZCBvcGVuIGJyYWNrZXQgKilcbiAgICAgIGxldCBibGFuaywgcmVtYWlucyA9IHJlYWRfdW50aWxfb2JyYWNrZXQgfmJxOnRydWUgcmVtYWlucyBpblxuICAgICAgKCogY2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gdW53YW50ZWQgY2hhcmFjdGVycyBiZXR3ZWVuIENCIGFuZCBPQi4gKilcbiAgICAgIGlmIGVhdCAobGV0IGZsYWcgPSByZWYgdHJ1ZSBpblxuICAgICAgICAgICAgICBmdW5jdGlvbiAoKiBhbGxvdyBvbmx5IGEgc3BhY2UsIG11bHRpcGxlIHNwYWNlcywgb3IgYSBuZXdsaW5lICopXG4gICAgICAgICAgICAgIHwgTmV3bGluZSAtPiAhZmxhZyAmJiAoZmxhZyA6PSBmYWxzZTsgdHJ1ZSlcbiAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIC0+ICFmbGFnICYmIChmbGFnIDo9IGZhbHNlOyB0cnVlKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIGJsYW5rIDw+IFtdIHRoZW5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZyAoKiA8LS0gbm90IGEgcmVndWxhciByZWZlcmVuY2UgKilcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSByZW1haW5zIHdpdGhcbiAgICAgICAgfCBbXSwgcmVtYWlucyAtPlxuICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlbWFpbnMgKE9icmFja2V0OjpsKSBpblxuICAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyB0ZXh0IGluICgqIGltcGxpY2l0IGFuY2hvciAqKVxuICAgICAgICAgIFNvbWUoKChSZWYocmMsIGlkLCBpZCwgZmFsbGJhY2spKTo6ciksIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgICAgIHwgaWQsIHJlbWFpbnMgLT5cbiAgICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIChPYnJhY2tldDo6bCkgaW5cbiAgICAgICAgICBTb21lKCgoUmVmKHJjLCBMLnN0cmluZ19vZl90b2tlbnMgaWQsXG4gICAgICAgICAgICAgICAgICAgICBMLnN0cmluZ19vZl90b2tlbnMgdGV4dCwgZmFsbGJhY2spKTo6ciksXG4gICAgICAgICAgICAgICBbQ2JyYWNrZXRdLCByZW1haW5zKVxuICAgIGluXG4gICAgbGV0IHJlYyBtYXliZV9ub25yZWd1bGFyX3JlZiBsID1cbiAgICAgIGxldCB0ZXh0LCByZW1haW5zID0gcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIGluXG4gICAgICAoKiBjaGVjayB0aGF0IHRoZXJlIGlzIG5vIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBpZiAodHJ5IGlnbm9yZShyZWFkX3VudGlsX29icmFja2V0IH5icTp0cnVlIHRleHQpOyB0cnVlXG4gICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IGZhbHNlKSB0aGVuXG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmc7ICgqIDwtLSBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyAoT2JyYWNrZXQ6OmwpIGluXG4gICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgdGV4dCBpbiAoKiBpbXBsaWNpdCBhbmNob3IgKilcbiAgICAgIFNvbWUoKChSZWYocmMsIGlkLCBpZCwgZmFsbGJhY2spKTo6ciksIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgaW5cbiAgICBsZXQgcmVjIG1heWJlX2RlZiBsID1cbiAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCB3aXRoXG4gICAgICB8IF8sIFtdIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgIHwgaWQsIChDb2xvbjo6KFNwYWNlfFNwYWNlcyBfKTo6cmVtYWlucylcbiAgICAgIHwgaWQsIChDb2xvbjo6cmVtYWlucykgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF98TmV3bGluZXxOZXdsaW5lcyBfKTo6IF8gYXMgbCAtPiBTcGxpdChbXSwgbClcbiAgICAgICAgICAgICAgICAgIHwgZTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pKVxuICAgICAgICAgICAgICByZW1haW5zXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSB8IFNvbWUoW10sIF8pIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICB8IFNvbWUodXJsLCByZW1haW5zKSAtPlxuICAgICAgICAgICAgbGV0IHRpdGxlLCByZW1haW5zID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBlYXRcbiAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiB8IChTcGFjZXxTcGFjZXMgX3xOZXdsaW5lfE5ld2xpbmVzIF8pIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICByZW1haW5zXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMoMCk6OnRsIC0+IFtdLCB0bFxuICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjp0bCAtPiByZWFkX3VudGlsX2RxIH5icTp0cnVlIHRsXG4gICAgICAgICAgICAgIHwgUXVvdGVzKDApOjp0bCAtPiBbXSwgdGxcbiAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gcmVhZF91bnRpbF9xIH5icTp0cnVlIHRsXG4gICAgICAgICAgICAgIHwgT3BhcmVudGhlc2lzOjp0bC0+IHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgdGxcbiAgICAgICAgICAgICAgfCBsIC0+IFtdLCBsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHVybCA9XG4gICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggdXJsID4gMiAmJiB1cmwuWzBdID0gJzwnXG4gICAgICAgICAgICAgICAgICYmIHVybC5bU3RyaW5nLmxlbmd0aCB1cmwgLSAxXSA9ICc+JyB0aGVuXG4gICAgICAgICAgICAgICAgU3RyaW5nLnN1YiB1cmwgMSAoU3RyaW5nLmxlbmd0aCB1cmwgLSAyKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdXJsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcmMjYWRkX3JlZiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGlkKSAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlKSB1cmw7XG4gICAgICAgICAgICBTb21lKHIsIFtOZXdsaW5lXSwgcmVtYWlucylcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgIGluXG4gICAgdHJ5XG4gICAgICBtYXliZV9yZWYgbFxuICAgIHdpdGggfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICB0cnlcbiAgICAgICAgbWF5YmVfZGVmIGxcbiAgICAgIHdpdGhcbiAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICB0cnlcbiAgICAgICAgICBtYXliZV9ub25yZWd1bGFyX3JlZiBsXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICAgTm9uZVxuXG5cbiAgKCoqIG1heWJlIGEgbGluayAqKVxuICBsZXQgbWF5YmVfbGluayAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsID1cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAjIG1heWJlX2xpbmtcXG5cIjtcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVhZF91cmwgbmFtZSBsID1cbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpICMgbWF5YmVfbGluaz5yZWFkX3VybCAlU1xcblwiIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxfY3AsIHJfY3AgPVxuICAgICAgICAgIHJlYWRfdW50aWxfY3BhcmVudGggfm5vX25sOnRydWUgfmJxOmZhbHNlIGxcbiAgICAgICAgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBsX2NwPSVTIHJfY3A9JVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsX2NwKVxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcl9jcCk7XG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBsX2RxLCByX2RxID1cbiAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfm5vX25sOnRydWUgfmJxOmZhbHNlIGxcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gbF9kcT0lUyByX2RxPSVTXFxuJSFcIlxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsX2RxKVxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyByX2RxKTtcbiAgICAgICAgICAoKiBtYXliZSB0aXRsZSAqKVxuICAgICAgICAgIGlmIExpc3QubGVuZ3RoIGxfY3AgPiBMaXN0Lmxlbmd0aCBsX2RxIHRoZW4gKCogdGl0bGUgKilcbiAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gdGl0bGVcXG4lIVwiO1xuICAgICAgICAgICAgICBsZXQgdXJsID1cbiAgICAgICAgICAgICAgICBtYXRjaCBMaXN0LnJldiBsX2RxIHdpdGhcbiAgICAgICAgICAgICAgICB8IChOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bFxuICAgICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICAgICAgICAgICAgTC5zdHJpbmdfb2ZfdG9rZW5zIChMaXN0LnJldiB0bClcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIEwuc3RyaW5nX29mX3Rva2VucyBsX2RxXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSwgcmVzdCA9IHJlYWRfdW50aWxfZHEgfm5vX25sOmZhbHNlIH5icTpmYWxzZSByX2RxIGluXG4gICAgICAgICAgICAgIGxldCByZXN0ID0gc25kKHJlYWRfdW50aWxfY3BhcmVudGggcmVzdCkgaW5cbiAgICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICAgIFNvbWUoVXJsKHVybCwgbmFtZSwgdGl0bGUpIDo6IHIsIFtDcGFyZW50aGVzaXNdLCByZXN0KVxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSAoKiBubyB0aXRsZSAqKVxuICAgICAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICB3aXRoIE5MX2V4Y2VwdGlvbiB8IFByZW1hdHVyZV9lbmRpbmcgLT4gKCogbm8gdGl0bGUgKilcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBubyB0aXRsZVxcbiUhXCI7XG4gICAgICAgICAgICBsZXQgdXJsID0gbWF0Y2ggTGlzdC5yZXYgbF9jcCB3aXRoXG4gICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsXG4gICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bCAtPiBMaXN0LnJldiB0bFxuICAgICAgICAgICAgICB8IF8gLT4gbF9jcFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB0aXRsZSwgcmVzdCA9IFtdLCByX2NwIGluXG4gICAgICAgICAgICBsZXQgdXJsID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHVybCBpblxuICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICBTb21lKFVybCh1cmwsIG5hbWUsIHRpdGxlKSA6OiByLCBbQ3BhcmVudGhlc2lzXSwgcmVzdClcbiAgICAgICAgICBlbmRcbiAgICAgIHdpdGggTkxfZXhjZXB0aW9uIHwgUHJlbWF0dXJlX2VuZGluZyAtPlxuICAgICAgICBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVhZF9uYW1lIGwgPVxuICAgICAgKCogaXQncyBub3QgcmVhbGx5IHRoZSBcIm5hbWVcIiBvZiBhIFVSTCBidXQgd2hhdFxuICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhlIGlubmVyIEhUTUwgb2YgYW4gSFRNTCAnQScgdGFnICopXG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAjIG1heWJlX2xpbms+IHJlYWRfbmFtZVxcblwiO1xuICAgICAgdHJ5XG4gICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCB3aXRoXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpczo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChlYXRfYmxhbmsgdGwpXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpc3MgMDo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgICB8IG5hbWUsIChPcGFyZW50aGVzaXNzIG46OnRsKSAtPlxuICAgICAgICAgIHJlYWRfdXJsIChtYWluX2xvb3AgW10gW09icmFja2V0XSBuYW1lKSAoT3BhcmVudGhlc2lzcyhuLTEpOjp0bClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+IE5vbmVcbiAgICBpblxuICAgIHJlYWRfbmFtZSBsXG5cblxuICBsZXQgaGFzX3BhcmFncmFwaHMgbCA9XG4gICAgKCogSGFzIGF0IGxlYXN0IDIgY29uc2VjdXRpdmUgbmV3bGluZXMuICopXG4gICAgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIE5ld2xpbmVzIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGxcblxuICBsZXQgcGFyc2VfbGlzdCAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBpZiBkZWJ1ZyB0aGVuIGJlZ2luXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgcGFyc2VfbGlzdCByPSglcykgcD0oJXMpIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgXCJcIiAoKiAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgKExpc3QucmV2IHIpKSAqKVxuICAgICAgICBcIlwiICgqIChkZXN0cmluZ19vZl90bCBwKSAqKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgfmxpbWl0OjQwIGwpO1xuICAgIGVuZDtcbiAgICBsZXQgbW9kdWxlIFVPID0gc3RydWN0IHR5cGUgb3JkZXJlZCA9IE8gfCBVIGVuZCBpblxuICAgIGxldCBvcGVuIFVPIGluXG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIHBhcnNlX2xpc3Q6IGw9KCVzKVxcbiUhXCIgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgIGxldCBlbmRfb2ZfaXRlbSAoaW5kZW50OmludCkgbCA6IHRvayBzcGxpdF9hY3Rpb24gID0gbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIFNwbGl0KFtdLFtdKVxuICAgICAgfCBOZXdsaW5lcyAwIDo6ICgoU3BhY2VzIG4pIDo6IEdyZWF0ZXJ0aGFuIDo6IChTcGFjZSB8IFNwYWNlcyBfKSA6OiB0bFxuICAgICAgICAgICAgICAgICAgICAgICBhcyBzKSAtPlxuICAgICAgICBhc3NlcnQobj49MCk7XG4gICAgICAgIGlmIG4rMiA9IGluZGVudCs0IHRoZW4gKCogYmxvY2txdW90ZSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChuKzIpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisyKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZXMgMDo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2UgaWYgbisyID49IGluZGVudCs4IHRoZW4gKCogY29kZSBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCBOZXdsaW5lcyAwIDo6IChTcGFjZXMgbiA6OiB0bCBhcyBzKSAtPlxuICAgICAgICBhc3NlcnQobj49MCk7XG4gICAgICAgIGlmIG4rMiA+PSBpbmRlbnQrOCB0aGVuICgqIGNvZGUgaW5zaWRlIGl0ZW0gKilcbiAgICAgICAgICBtYXRjaCB1bmluZGVudCAoaW5kZW50KzQpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygwKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZTo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2UgaWYgbisyID49IGluZGVudCs0IHRoZW4gKCogbmV3IHBhcmFncmFwaCBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCAoTmV3bGluZXMgXykgOjogXyAtPiAoKiBuID4gMCAqKVxuICAgICAgICAoKiBFbmQgb2YgaXRlbSwgc3RvcCAqKVxuICAgICAgICBTcGxpdChbXSwgbClcbiAgICAgIHwgTmV3bGluZSA6OlxuICAgICAgICAoXG4gICAgICAgICAgKChTcGFjZXxTcGFjZXMgXykgOjogKFN0YXJ8TWludXN8UGx1cykgOjogKFNwYWNlfFNwYWNlcyBfKTo6IF8pXG4gICAgICAgIHwgKChTcGFjZXxTcGFjZXMgXykgOjogTnVtYmVyIF8gOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogXylcbiAgICAgICAgfCAoKFN0YXJ8TWludXN8UGx1cykgOjogKFNwYWNlfFNwYWNlcyBfKTo6IF8pXG4gICAgICAgIHwgKE51bWJlciBfIDo6IERvdCA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8pXG4gICAgICAgICAgYXMgdGwpIC0+XG4gICAgICAgIFNwbGl0KFtOZXdsaW5lXSwgdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIHwgU3BhY2VzIF8pIDo6IE5ld2xpbmUgOjogdGwgLT5cbiAgICAgICAgKCogQSBsaW5lIHdpdGggc3BhY2VzIHNob3VsZG4ndCBpbnRlcmZlcmUgaGVyZSxcbiAgICAgICAgICAgd2hpY2ggaXMgYWJvdXQgZXhhY3RseSAyIGNvbnNlY3V0aXZlIG5ld2xpbmVzLFxuICAgICAgICAgICBzbyB3ZSByZXdyaXRlIHRoZSBoZWFkIG9mIHRoZSBsZXhpbmcgc3RyZWFtLiAqKVxuICAgICAgICBDb250aW51ZV93aXRoKFtdLCBOZXdsaW5lcyAwIDo6IHRsKVxuICAgICAgfCBOZXdsaW5lIDo6IChTcGFjZSB8IFNwYWNlcyBfKSA6OiAoTmV3bGluZXMgXykgOjogXyAtPlxuICAgICAgICAoKiBBIGxpbmUgd2l0aCBzcGFjZXMgc2hvdWxkbid0IGludGVyZmVyZSBoZXJlLFxuICAgICAgICAgICB3aGljaCBpcyBhYm91dCBhdCBsZWFzdCAzIGNvbnNlY3V0aXZlIG5ld2xpbmVzLFxuICAgICAgICAgICBzbyB3ZSBzdG9wLiAqKVxuICAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlcyBfIGFzIHMpIDo6IHRsIC0+XG4gICAgICAgIENvbnRpbnVlX3dpdGhcbiAgICAgICAgICAoW3M7XG4gICAgICAgICAgICBUYWcoXCJwYXJzZV9saXN0L3JlbWVtYmVyIHNwYWNlc1wiLFxuICAgICAgICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwID1cbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gU3BhY2VzIF86OnRsIC0+IFNvbWUocixwLFNwYWNlOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgICBOZXdsaW5lXSxcbiAgICAgICAgICAgdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIGFzIHMpIDo6IHRsIC0+XG4gICAgICAgIENvbnRpbnVlX3dpdGhcbiAgICAgICAgICAoW3M7XG4gICAgICAgICAgICBUYWcoXCJwYXJzZV9saXN0L3JlbWVtYmVyIHNwYWNlXCIsXG4gICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgPVxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoU3BhY2V8U3BhY2VzIF8pOjp0bCAtPiBTb21lKHIscCxTcGFjZTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgICBOZXdsaW5lXSxcbiAgICAgICAgICAgdGwpXG4gICAgICB8IF86Ol8gLT5cbiAgICAgICAgQ29udGludWVcbiAgICBpblxuICAgIGxldCByZXZfdG9fdCBsID1cbiAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICAgKCogTmV3bGluZXMgYXQgdGhlIGVuZCBvZiBpdGVtcyBoYXZlIG5vIG1lYW5pbmcgKGV4Y2VwdCB0byBlbmQgdGhlXG4gICAgICAgICBpdGVtIHdoaWNoIGlzIGV4cHJlc3NlZCBieSB0aGUgY29uc3RydWN0b3IgYWxyZWFkeSkuICopXG4gICAgICBsZXQgbCA9IG1hdGNoIGwgd2l0aCAoTmV3bGluZSB8IE5ld2xpbmVzIF8pIDo6IHRsIC0+IHRsIHwgXyAtPiBsIGluXG4gICAgICBtYWluX2xvb3AgW10gW05ld2xpbmVdIChMaXN0LnJldiBsKVxuICAgIGluXG4gICAgbGV0IGFkZCAoc3VibGlzdDplbGVtZW50KSBpdGVtcyA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBhZGRcXG4lIVwiO1xuICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgKE8saW5kZW50cyxpdGVtKTo6dGwgLT5cbiAgICAgICAgKE8saW5kZW50cywoaXRlbUBbc3VibGlzdF0pKTo6dGxcbiAgICAgIHwgKFUsaW5kZW50cyxpdGVtKTo6dGwgLT5cbiAgICAgICAgKFUsaW5kZW50cywoaXRlbUBbc3VibGlzdF0pKTo6dGxcbiAgICBpblxuICAgIGxldCBtYWtlX3VwIH5wIGl0ZW1zIDogT21kX3JlcHJlc2VudGF0aW9uLmVsZW1lbnQgPVxuICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFrZV91cCBwPSViXFxuJSFcIiBwO1xuICAgICAgbGV0IGl0ZW1zID0gTGlzdC5yZXYgaXRlbXMgaW5cbiAgICAgIG1hdGNoIGl0ZW1zIHdpdGhcbiAgICAgIHwgKFUsXyxpdGVtKTo6XyAtPlxuICAgICAgICBpZiBwIHRoZW5cbiAgICAgICAgICBVbHAoTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgVWwoTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgfCAoTyxfLGl0ZW0pOjpfIC0+XG4gICAgICAgIGlmIHAgdGhlblxuICAgICAgICAgIE9scChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBPbChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGZhaWx3aXRoIFwibWFrZV91cCBjYWxsZWQgd2l0aCBbXVwiICgqIGFzc2VydCBmYWxzZSAqKVxuICAgIGluXG4gICAgbGV0IHJlYyBsaXN0X2l0ZW1zIH5wIGluZGVudHMgaXRlbXMgbCA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBsaXN0X2l0ZW1zOiBwPSViIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwIChMLmRlc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgKCogbm8gbW9yZSBsaXN0IGl0ZW1zICopXG4gICAgICB8IFtdIC0+XG4gICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgKCogbW9yZSBsaXN0IGl0ZW1zICopXG4gICAgICAoKiBuZXcgdW5vcmRlcmVkIGl0ZW1zICopXG4gICAgICB8IChTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDApIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKDIzNDYpIG5ld19pdGVtPSVTXFxuJSFcIlxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBuZXdfaXRlbSk7XG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFswXSAoKFUsWzBdLCByZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDA6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoVSxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgXzo6XyAtPlxuICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlOjooU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAxKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMV0gKChVLFsxXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICAgfCAxOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKFUsaW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgaSA+IDEgdGhlblxuICAgICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgICAgICBlbHNlICgqIGkgPCAxIDogbmV3IHN1YiBsaXN0KilcbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wICgxOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKFUsMTo6aW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSldIHJlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlcyBuOjooU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAobisyKSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBzcGFjZXNbXSBsPSglUylcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTsgKCogYe9lLi4uIGxpc3RlcyBtYWwgZm9ybellcyA/ISAqKVxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFtuKzJdICgoVSxbbisyXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzKCVkOjpfKSBuPSVkIGw9KCVTKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgIGkgbiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgICAgICAgICBpZiBpID0gbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBpdGVtcyA9IChVLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pIDo6IGl0ZW1zIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzIGl0ZW1zIHJlc3RcbiAgICAgICAgICAgICAgZWxzZSBpZiBpIDwgbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKChuKzIpOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKFUsKG4rMik6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXVxuICAgICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA+IG4gKyAyICopXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgKCogbmV3IG9yZGVyZWQgaXRlbXMgKilcbiAgICAgIHwgTnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAwKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBuZXdfaXRlbTtcbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgWzBdICgoTyxbMF0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCAwOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKE8saW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IF86Ol8gLT5cbiAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZTo6TnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAxKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMV0gKChPLFsxXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDE6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBpID4gMSB0aGVuXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA8IDEgOiBuZXcgc3ViIGxpc3QqKVxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKDE6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoTywxOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV0gcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cDpwIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZXMgbjo6TnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAobisyKSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzW10gbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pOyAoKiBh72UuLi4gbGlzdGVzIG1hbCBmb3Jt6WVzID8hICopXG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgW24rMl0gKChPLFtuKzJdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBzcGFjZXMoJWQ6Ol8pIG49JWQgbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgaSBuIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGlmIGkgPSBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgIGVsc2UgaWYgaSA8IG4gKyAyIHRoZW5cbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wXG4gICAgICAgICAgICAgICAgICAgICgobisyKTo6aW5kZW50cylcbiAgICAgICAgICAgICAgICAgICAgWyhPLChuKzIpOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV1cbiAgICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cDpwIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA+IG4gKyAyICopXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgKCogKilcbiAgICAgIHwgTmV3bGluZXMgMDo6KChTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OihOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OigoU3BhY2V8U3BhY2VzIF8pOjpTdGFyOjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OigoU3BhY2V8U3BhY2VzIF8pOjpOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICAgIC0+XG4gICAgICAgIGxpc3RfaXRlbXMgfnA6dHJ1ZSBpbmRlbnRzIGl0ZW1zIGxcbiAgICAgIHwgXyAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIGxldCByZWMgc3RyaW5nX29mX2l0ZW1zIGl0ZW1zID1cbiAgICAgICAgICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCAoTyxpbmRlbnQ6Ol8saXRlbSk6OnRsIC0+XG4gICAgICAgICAgICAgICAgIHNwcmludGYgXCIoTyxpPSVkLCVTKVwiIChpbmRlbnQpIChPbWRfYmFja2VuZC5odG1sX29mX21kIGl0ZW0pXG4gICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2l0ZW1zIHRsXG4gICAgICAgICAgICAgIHwgKFUsaW5kZW50OjpfLGl0ZW0pOjp0bCAtPlxuICAgICAgICAgICAgICAgICBzcHJpbnRmIFwiKFUsaT0lZCwlUylcIiAoaW5kZW50KSAoT21kX2JhY2tlbmQuaHRtbF9vZl9tZCBpdGVtKVxuICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pdGVtcyB0bFxuICAgICAgICAgICAgICB8IF8gLT4gXCIod2VpcmQpXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgTkFMSSBwYXJzZV9saXN0OiBsPSglUykgaXRlbXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbCkgKHN0cmluZ19vZl9pdGVtcyBpdGVtcylcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICgqIG5vdCBhIGxpc3QgaXRlbSAqKVxuICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICBpblxuICAgIG1hdGNoIGxpc3RfaXRlbXMgfnA6ZmFsc2UgW10gW10gbCB3aXRoXG4gICAgfCBycCwgbCAtPlxuICAgICAgcnA6OnIsIFtOZXdsaW5lXSwgbFxuXG5cblxuICBsZXQgaWNvZGUgPyhkZWZhdWx0X2xhbmc9ZGVmYXVsdF9sYW5nKSByIF9wIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIGluZGVudGVkIGNvZGU6IHJldHVybnMgKHIscCxsKSB3aGVyZSByIGlzIHRoZSByZXN1bHQsIHAgaXMgdGhlXG4gICAgICAgbGFzdCB0aGluZyByZWFkLCBsIGlzIHRoZSByZW1haW5zICopXG4gICAgbGV0IGR1bW15X3RhZyA9IFRhZyhcImR1bW15X3RhZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uID0gZnVuIHIgcCBsIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgaW5cbiAgICBsZXQgYWNjdSA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICBsZXQgcmVjIGxvb3AgcyB0bCA9IG1hdGNoIHMsIHRsIHdpdGhcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBwKSwgKFNwYWNlfFNwYWNlcygwfDEpKTo6XyAtPlxuICAgICAgICAoKiAxLCAyIG9yIDMgc3BhY2VzLiAqKVxuICAgICAgICAoKiAtPiBSZXR1cm4gd2hhdCdzIGJlZW4gZm91bmQgYXMgY29kZSBiZWNhdXNlIHdoYXQgZm9sbG93cyBpc24ndC4gKilcbiAgICAgICAgQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIEJ1ZmZlci5jb250ZW50cyBhY2N1KSA6OiByLCBbcF0sIHRsXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgcCksIFNwYWNlcyhuKTo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgICgqIEF0IGxlYXN0IDQgc3BhY2VzLCBpdCdzIHN0aWxsIGNvZGUuICopXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICBsb29wXG4gICAgICAgICAgKGlmIG4gPj0gNCB0aGVuIFNwYWNlcyhuLTQpIGVsc2UgaWYgbiA9IDMgdGhlbiBTcGFjZSBlbHNlIGR1bW15X3RhZylcbiAgICAgICAgICB0bFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIHApLCAobm90X3NwYWNlczo6XyBhcyB0bCkgLT4gKCogc3RvcCAqKVxuICAgICAgICBDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgQnVmZmVyLmNvbnRlbnRzIGFjY3UpIDo6IHIsIFtwXSwgdGxcbiAgICAgICgqIC0+IFJldHVybiB3aGF0J3MgYmVlbiBmb3VuZCBhcyBjb2RlIGJlY2F1c2UgaXQncyBubyBtb3JlIGNvZGUuICopXG4gICAgICB8IHAsIGU6OnRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICAoKiBodG1sIGVudGl0aWVzIGFyZSB0byBiZSBjb252ZXJ0ZWQgbGF0ZXIhICopXG4gICAgICAgIGxvb3AgZSB0bFxuICAgICAgfCBwLCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBhY2N1IChMLnN0cmluZ19vZl90b2tlbiBwKTtcbiAgICAgICAgQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIEJ1ZmZlci5jb250ZW50cyBhY2N1KTo6ciwgW3BdLCBbXVxuICAgIGluXG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBTcGFjZXMgbjo6dGwgLT5cbiAgICAgIGlmIG4gPj0gNCB0aGVuXG4gICAgICAgIFNvbWUobG9vcCAoU3BhY2VzKG4tNCkpIHRsKVxuICAgICAgZWxzZSBpZiBuID0gMyB0aGVuXG4gICAgICAgIFNvbWUobG9vcCBTcGFjZSB0bClcbiAgICAgIGVsc2UgU29tZShsb29wIGR1bW15X3RhZyB0bClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cblxuICAoKiBSZXR1cm5zIFsocixwLGwpXSB3aGVyZSBbcl0gaXMgdGhlIHJlc3VsdCwgW3BdIGlzIHRoZSBsYXN0IHRoaW5nXG4gICAgIHJlYWQsIGFuZCBbbF0gaXMgd2hhdCByZW1haW5zLiAqKVxuICBsZXQgc3BhY2VzX2F0X2JlZ2lubmluZ19vZl9saW5lIG1haW5fbG9vcCBkZWZhdWx0X2xhbmcgbiByIHByZXZpb3VzIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGFzc2VydCAobiA+IDApO1xuICAgIGlmIG4gPD0gMyB0aGVuIChcbiAgICAgIG1hdGNoIGxleGVtZXMgd2l0aFxuICAgICAgfCAoU3RhcnxNaW51c3xQbHVzKSA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8gLT5cbiAgICAgICAgKCogdW5vcmRlcmVkIGxpc3QgKilcbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSAoTC5tYWtlX3NwYWNlIG46OmxleGVtZXMpXG4gICAgICB8IChOdW1iZXIgXyk6OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgKCogb3JkZXJlZCBsaXN0ICopXG4gICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gKEwubWFrZV9zcGFjZSBuOjpsZXhlbWVzKVxuICAgICAgfCBbXVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfICAtPiAoKiBibGFuayBsaW5lLCBza2lwIHNwYWNlcyAqKVxuICAgICAgICByLCBwcmV2aW91cywgbGV4ZW1lc1xuICAgICAgfCAgXzo6XyAtPlxuICAgICAgICBUZXh0IChcIiBcIik6OnIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgKVxuICAgIGVsc2UgKCAoKiBuPj00LCBibGFuayBsaW5lIG9yIGluZGVudGVkIGNvZGUgKilcbiAgICAgIG1hdGNoIGxleGVtZXMgd2l0aFxuICAgICAgfCBbXSB8IChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gIC0+IHIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgICB8IF8gLT5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBpY29kZSB+ZGVmYXVsdF9sYW5nIHIgW05ld2xpbmVdIChMLm1ha2Vfc3BhY2UgbiA6OiBsZXhlbWVzKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gcixwLGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuaWNvZGUgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgKVxuXG4gIGxldCBzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW5lID8oaHRtbD1mYWxzZSkgbiByIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGFzc2VydCAobiA+IDApO1xuICAgIGlmIG4gPSAxIHRoZW5cbiAgICAgIChUZXh0IFwiIFwiOjpyKSwgW1NwYWNlXSwgbGV4ZW1lc1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbGV4ZW1lcyB3aXRoXG4gICAgICB8IE5ld2xpbmUgOjogdGwgd2hlbiBub3QgaHRtbCAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIoT01EKSAyIG9yIG1vcmUgc3BhY2VzIGJlZm9yZSBhIG5ld2xpbmUsIGVhdCB0aGUgbmV3bGluZVxcbiUhXCI7XG4gICAgICAgIEJyOjpyLCBbU3BhY2VzKG4tMildLCB0bFxuICAgICAgfCBOZXdsaW5lcyBrIDo6IHRsIHdoZW4gbm90IGh0bWwgLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgIFwiKE9NRCkgMiBvciBtb3JlIHNwYWNlcyBiZWZvcmUgYSBuZXdsaW5lLCBlYXQgMSBuZXdsaW5lXCI7XG4gICAgICAgIGxldCBuZXdsaW5lcyA9IGlmIGsgPSAwIHRoZW4gTmV3bGluZSBlbHNlIE5ld2xpbmVzKGstMSkgaW5cbiAgICAgICAgQnI6OnIsIFtTcGFjZXMobi0yKV0sIG5ld2xpbmVzIDo6IHRsXG4gICAgICB8IF8gLT5cbiAgICAgICAgYXNzZXJ0IChuPjEpO1xuICAgICAgICAoVGV4dCAoU3RyaW5nLm1ha2UgbiAnICcpOjpyKSwgW1NwYWNlcyhuLTIpXSwgbGV4ZW1lc1xuICAgIClcblxuXG4gIGxldCBtYXliZV9hdXRvZW1haWwgciBwIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgTGVzc3RoYW46OnRsIC0+XG4gICAgICBiZWdpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGZzcGxpdCB+ZXhjbDooZnVuY3Rpb24gKE5ld2xpbmV8TmV3bGluZXMgX3xTcGFjZXxTcGFjZXMgXykgOjogXy0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICB+ZjooZnVuY3Rpb24gQXQ6OnRsIC0+IFNwbGl0KFtdLHRsKSB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICB0bFxuICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZShsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBffFNwYWNlfFNwYWNlcyBfKSA6OiBfLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvbiBHcmVhdGVydGhhbjo6dGwgLT4gU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMDo6dGwgLT4gU3BsaXQoW10sR3JlYXRlcnRoYW46OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG46OnRsIC0+IFNwbGl0KFtdLEdyZWF0ZXJ0aGFucyhuLTEpOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgIHJpZ2h0XG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lKGRvbWFpbiwgdGwpIC0+XG4gICAgICAgICAgICBsZXQgZW1haWwgPSBMLnN0cmluZ19vZl90b2tlbnMgbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgXiBcIkBcIiBeIEwuc3RyaW5nX29mX3Rva2VucyBkb21haW4gaW5cbiAgICAgICAgICAgIFNvbWUoVXJsKFwibWFpbHRvOlwiXmVtYWlsLFtUZXh0IGVtYWlsXSxcIlwiKTo6cixbR3JlYXRlcnRoYW5dLHRsKVxuICAgICAgZW5kXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiT21kX3BhcnNlci5tYXliZV9hdXRvZW1haWw6IHdyb25nIHVzZSBvZiB0aGUgZnVuY3Rpb24uXCJcblxuICBsZXQgaXNfaGV4IHMgPVxuICAgIFN0cmluZy5sZW5ndGggcyA+IDFcbiAgICAmJiAocy5bMF0gPSAnWCcgfHwgcy5bMF0gPSAneCcpXG4gICAgJiYgKGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgIGkgPSBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgIHx8XG4gICAgICAgICAobWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIC0+XG4gICAgICAgICAgICBsb29wIChzdWNjIGkpXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICBpbiBsb29wIDEpXG5cbiAgbGV0IG1lZGlhdHlwZXRleHRvbWQgOiBzdHJpbmcgbGlzdCByZWYgPSByZWYgW11cblxuICBsZXQgZmlsdGVyX3RleHRfb21kX3JldiBsID1cbiAgICBsZXQgcmVjIGxvb3AgYiByID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gaWYgYiB0aGVuIHIgZWxzZSBsXG4gICAgICB8IChcIm1lZGlhOnR5cGVcIiwgU29tZSBcInRleHQvb21kXCIpOjp0bCAtPlxuICAgICAgICBsb29wIHRydWUgciB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIGIgKGU6OnIpIHRsXG4gICAgaW5cbiAgICBsb29wIGZhbHNlIFtdIGxcblxuICBleGNlcHRpb24gT3JwaGFuX2Nsb3Npbmcgb2Ygc3RyaW5nICogbCAqIGxcblxuICBsZXQgcmVjIG1haW5faW1wbF9yZXYgfmh0bWwgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAoKiBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYWluX2ltcGxfcmV2IGh0bWw9JWJcXG4lIVwiIGh0bWw7ICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIG1haW5faW1wbF9yZXYgaHRtbD0lYiByPSVzIHA9KCVzKSBsPSglcylcXG4lIVwiXG4gICAgICAgIGh0bWxcbiAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kIChMaXN0LnJldiByKSlcbiAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHByZXZpb3VzKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgbGV4ZW1lcyk7XG4gICAgbWF0Y2ggcHJldmlvdXMsIGxleGVtZXMgd2l0aFxuICAgICgqIG5vIG1vcmUgdG8gcHJvY2VzcyAqKVxuICAgIHwgXywgW10gLT5cbiAgICAgICgqIHJldHVybiB0aGUgcmVzdWx0ICgvIVxcIGl0IGhhcyB0byBiZSByZXZlcnNlZCBhcyBzb21lIHBvaW50KSAqKVxuICAgICAgclxuXG4gICAgKCogVGFnOiB0YWcgc3lzdGVtICRcXGN1cCQgaGlnaC1wcmlvcml0eSBleHRlbnNpb24gbWVjaGFuaXNtICopXG4gICAgfCBfLCBUYWcoX25hbWUsIGUpIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBlI3BhcnNlcl9leHRlbnNpb24gciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHByZXZpb3VzIHRsXG4gICAgICBlbmRcblxuICAgICgqIEhUTUwgY29tbWVudHMgKilcbiAgICB8IF8sIChMZXNzdGhhbiBhcyB0KTo6KEV4Y2xhbWF0aW9uOjpNaW51c3MgMDo6YyBhcyB0bCkgLT5cbiAgICAgIGJlZ2luXG4gICAgICAgIGxldCBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IChNaW51c3MgXyBhcyBtKTo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bCAtPlxuICAgICAgICAgICAgU3BsaXQoW2c7bV0sIHRsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZnNwbGl0IH5mOmYgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgICB8IFNvbWUgKGNvbW1lbnRzLCBuZXdfdGwpIC0+XG4gICAgICAgICAgbGV0IHIgPSBIdG1sX2NvbW1lbnQoTC5zdHJpbmdfb2ZfdG9rZW5zIGNvbW1lbnRzKSA6OiByIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIFtOZXdsaW5lXSBuZXdfdGxcbiAgICAgIGVuZFxuXG4gICAgKCogZW1haWwtc3R5bGUgcXVvdGluZyAvIGJsb2NrcXVvdGUgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIEdyZWF0ZXJ0aGFuOjooU3BhY2V8U3BhY2VzIF8pOjpfIC0+XG4gICAgICBiZWdpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGVtYWlsc3R5bGVfcXVvdGluZyBtYWluX2xvb3AgciBwcmV2aW91cyAoTmV3bGluZTo6bGV4ZW1lcylcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFNvbWUocixwLGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuZW1haWxzdHlsZV9xdW90aW5nIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZW5kXG5cbiAgICAoKiBlbWFpbC1zdHlsZSBxdW90aW5nLCB3aXRoIGxpbmVzIHN0YXJ0aW5nIHdpdGggc3BhY2VzISAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKFNwYWNlfFNwYWNlcygwfDEpIGFzIHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBHcmVhdGVydGhhbiA6OiAoU3BhY2V8U3BhY2VzIF8pOjpfIC0+XG4gICAgICAoKiBJdCdzIDEsIDIgb3IgMyBzcGFjZXMsIG5vdCBtb3JlIGJlY2F1c2UgaXQgd291bGRuJ3QgbWVhblxuICAgICAgICAgcXVvdGluZyBhbnltb3JlIGJ1dCBjb2RlLiAqKVxuICAgICAgYmVnaW5cbiAgICAgICAgbGV0IG5ld19yLCBwLCByZXN0ID1cbiAgICAgICAgICBsZXQgZm9vLCByZXN0ID1cbiAgICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChMLmxlbmd0aCBzKSAoTmV3bGluZTo6bGV4ZW1lcykgd2l0aFxuICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6Zm9vLCByZXN0IC0+IGZvbywgcmVzdFxuICAgICAgICAgICAgfCByZXMgLT4gcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZW1haWxzdHlsZV9xdW90aW5nIG1haW5fbG9vcCBbXSBwcmV2aW91cyAoTmV3bGluZTo6Zm9vKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNvbWUobmV3X3IsIHAsIFtdKSAtPiBuZXdfciwgcCwgcmVzdFxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3Rpbmcgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChuZXdfckByKSBbTmV3bGluZV0gcmVzdFxuICAgICAgZW5kXG5cbiAgICAoKiBtaW51cyAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSxcbiAgICAgIChNaW51c3xNaW51c3MgXyBhcyB0KSA6OiAoKFNwYWNlfFNwYWNlcyBfKTo6XyBhcyB0bCkgLT5cbiAgICAgICgqIG1heWJlIGhyICopXG4gICAgICBiZWdpbiBtYXRjaCBocl9tIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKCogbm8gaHIsIHNvIGl0IGNvdWxkIGJlIGEgbGlzdCAqKVxuICAgICAgICAgIGJlZ2luIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBNaW51cyAtPiAoKiBpdCdzIGEgbGlzdCAqKVxuICAgICAgICAgICAgICBsZXQgbWQsIG5ld19wLCBuZXdfbCA9XG4gICAgICAgICAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgbWQgbmV3X3AgbmV3X2xcbiAgICAgICAgICAgIHwgXyAtPiAoKiBub3QgYSBsaXN0ICopXG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSBsIC0+ICgqIGhyICopXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICBlbmRcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIChNaW51c3xNaW51c3MgXyBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGhyX20gbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKiBubyBociwgYW5kIGl0J3Mgbm90IGEgbGlzdCBlaXRoZXJcbiAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgaXQncyBub3QgZm9sbG93ZWQgYnkgc3BhY2VzICopXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSBsIC0+ICgqIGhyICopXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICBlbmRcblxuICAgICgqIGhhc2hlcyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLFxuICAgICAgKEhhc2hzIG4gYXMgdCkgOjogKChTcGFjZXxTcGFjZXMgXykgOjogdHRsIGFzIHRsKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLFxuICAgICAgKEhhc2hzIG4gYXMgdCkgOjogKHR0bCBhcyB0bCkgLT4gKCogaGFzaCB0aXRsZXMgKilcbiAgICAgIGlmIG4gPD0gNCB0aGVuXG4gICAgICAgIG1hdGNoIHJlYWRfdGl0bGUgbWFpbl9sb29wIChuKzIpIHIgcHJldmlvdXMgdHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIucmVhZF90aXRsZSBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIEhhc2ggOjogKFNwYWNlfFNwYWNlcyBfKSA6OiB0bFxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBIYXNoIDo6IHRsIC0+ICgqIGhhc2ggdGl0bGVzICopXG4gICAgICBiZWdpbiBtYXRjaCByZWFkX3RpdGxlIG1haW5fbG9vcCAxIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5yZWFkX3RpdGxlIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZW5kXG4gICAgfCBfLCAoSGFzaHxIYXNocyBfIGFzIHQpIDo6IHRsIC0+ICgqIGhhc2ggLS0gbm8gdGl0bGUgKilcbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG4gICAgKCogc3BhY2VzIGFmdGVyIGEgbmV3bGluZTogY291bGQgbGVhZCB0byBociAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKChTcGFjZXxTcGFjZXMgXykgYXMgc3ApIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBociB0bCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIE5vIFtIcl0sIGJ1dCBtYXliZSBbVWxdLCBbT2xdLCBjb2RlLC4uLiAqKVxuICAgICAgICAgIGxldCBuID0gTC5sZW5ndGggc3AgaW5cbiAgICAgICAgICBsZXQgciwgcCwgbCA9XG4gICAgICAgICAgIHNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSBtYWluX2xvb3AgZGVmYXVsdF9sYW5nIG4gciBwcmV2aW91cyB0bCBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBTb21lIHRsIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSB0bFxuICAgICAgZW5kXG5cbiAgICAoKiBzcGFjZXMgYW55d2hlcmUgKilcbiAgICB8IF8sICgoU3BhY2V8U3BhY2VzIF8pIGFzIHQpIDo6IHRsIC0+XG4gICAgICAoKiB0b28gbWFueSBjYXNlcyB0byBiZSBoYW5kbGVkIGhlcmUgKilcbiAgICAgIGxldCBuID0gTC5sZW5ndGggdCBpblxuICAgICAgbGV0IHIsIHAsIGwgPSBzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW5lIH5odG1sIG4gciB0bCBpblxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuXG4gICAgKCogdW5kZXJzY29yZXMgKilcbiAgICB8IF8sIChVbmRlcnNjb3JlIGFzIHQpIDo6IHRsIC0+ICgqIG9uZSBcIm9ycGhhblwiIHVuZGVyc2NvcmUsIG9yIGVtcGggKilcbiAgICAgIChtYXRjaCB1ZW1waF9vcl9ib2xkIDEgdGwgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICApXG4gICAgfCBfLCAoVW5kZXJzY29yZXMoKDB8MSkgYXMgbikgYXMgdCkgOjogdGwgLT5cbiAgICAgICgqIDIgb3IgMyBcIm9ycGhhblwiIHVuZGVyc2NvcmVzLCBvciBlbXBoL2JvbGQgKilcbiAgICAgIChtYXRjaCB1ZW1waF9vcl9ib2xkIChuKzIpIHRsIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICBpZiBuID0gMCB0aGVuICgqIDEgdW5kZXJzY29yZSAqKVxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgICAgZWxzZSAoKiAyIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgoW0JvbGQobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KV0pIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgIClcblxuICAgICgqIGVudW1lcmF0ZWQgbGlzdHMgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIChOdW1iZXIgXykgOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogdGwgLT5cbiAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICBpblxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuXG4gICAgKCogcGx1cyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBQbHVzIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgIGluXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG5cbiAgICAoKiBzdGFycyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBTdGFyIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgKCogbWF5YmUgaHIgb3IgbmV3IGxpc3QgKilcbiAgICAgIGJlZ2luIG1hdGNoIGhyX3MgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gbGV4ZW1lc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuICAgICAgZW5kXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIFN0YXJzIF8gOjogXyB3aGVuIGhyX3MgbGV4ZW1lcyA8PiBOb25lIC0+XG4gICAgICAoKiBociAqKVxuICAgICAgKG1hdGNoIGhyX3MgbGV4ZW1lcyB3aXRoXG4gICAgICAgfCBTb21lIGwgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBtYXliZSBociAqKVxuICAgICAgYmVnaW4gbWF0Y2ggaHJfcyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHNlbXBoX29yX2JvbGQgMSB0bCB3aXRoXG4gICAgICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgZW5kXG4gICAgICAgICAgKVxuICAgICAgZW5kXG4gICAgfCBfLCAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBvbmUgXCJvcnBoYW5cIiBzdGFyLCBvciBlbXBoIC8vIGNhbid0IGJlIGhyICopXG4gICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAxIHRsIHdpdGhcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuICAgIHwgXywgKFN0YXJzKCgwfDEpIGFzIG4pIGFzIHQpIDo6IHRsIC0+XG4gICAgICAoKiAyIG9yIDMgXCJvcnBoYW5cIiBzdGFycywgb3IgZW1waC9ib2xkICopXG4gICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAobisyKSB0bCB3aXRoXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChbQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpXSkgOjogcikgW3RdIG5ld190bFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG5cbiAgICAoKiBiYWNrc2xhc2hlcyAqKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChOZXdsaW5lIGFzIHQpIDo6IHRsIC0+ICgqIFxcXFxuICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCciA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+ICgqIFxcXFxuXFxuXFxuXFxuLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCciA6OiByKSBbQmFja3NsYXNoOyBOZXdsaW5lXSAoTmV3bGluZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBOZXdsaW5lcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxcXG5cXG5cXG5cXG4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJyIDo6IHIpIFtCYWNrc2xhc2g7IE5ld2xpbmVdXG4gICAgICAgIChOZXdsaW5lcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQmFja3F1b3RlIGFzIHQpIDo6IHRsIC0+ICgqIFxcYCAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJgXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEJhY2txdW90ZXMgMCA6OiB0bCAtPiAoKiBcXGBgYGAuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiYFwiKSA6OiByKSBbQmFja3NsYXNoOyBCYWNrcXVvdGVdIChCYWNrcXVvdGUgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQmFja3F1b3RlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxgYGBgLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcImBcIikgOjogcikgW0JhY2tzbGFzaDsgQmFja3F1b3RlXVxuICAgICAgICAoQmFja3F1b3RlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBcXCogKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKlwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBTdGFycyAwIDo6IHRsIC0+ICgqIFxcKioqKi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIqXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFN0YXJdIChTdGFyIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFN0YXJzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCoqKiouLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKlwiKSA6OiByKSBbQmFja3NsYXNoOyBTdGFyXSAoU3RhcnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKFVuZGVyc2NvcmUgYXMgdCkgOjogdGwgLT4gKCogXFxfICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl9cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogVW5kZXJzY29yZXMgMCA6OiB0bCAtPiAoKiBcXF9fXy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJfXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFVuZGVyc2NvcmVdIChVbmRlcnNjb3JlIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFVuZGVyc2NvcmVzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXF9fXy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJfXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFVuZGVyc2NvcmVdXG4gICAgICAgIChVbmRlcnNjb3JlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoT2JyYWNlIGFzIHQpIDo6IHRsIC0+ICgqIFxceyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFjZXMgMCA6OiB0bCAtPiAoKiBcXHt7ey4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFjZV0gKE9icmFjZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2VzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXHt7ey4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFjZV0gKE9icmFjZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKENicmFjZSBhcyB0KSA6OiB0bCAtPiAoKiBcXH0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2VzIDAgOjogdGwgLT4gKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2VdIChDYnJhY2UgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2VdIChDYnJhY2VzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyB0KSA6OiB0bCAtPiAoKiBcXFsgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiW1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2tldHMgMCA6OiB0bCAtPiAoKiBcXFtbWy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFja2V0XSAoT2JyYWNrZXQgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT2JyYWNrZXRzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXFtbWy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFja2V0XSAoT2JyYWNrZXRzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChDYnJhY2tldCBhcyB0KSA6OiB0bCAtPiAoKiBcXH0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiXVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2tldHMgMCA6OiB0bCAtPiAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFja2V0XSAoQ2JyYWNrZXQgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNrZXRzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFja2V0XSAoQ2JyYWNrZXRzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXMgYXMgdCkgOjogdGwgLT4gKCogXFwoICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+ICgqIFxcKCgoLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW0JhY2tzbGFzaDsgT3BhcmVudGhlc2lzXSAoT3BhcmVudGhlc2lzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9wYXJlbnRoZXNpc3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKCgoLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW0JhY2tzbGFzaDsgT3BhcmVudGhlc2lzXVxuICAgICAgICAoT3BhcmVudGhlc2lzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQ3BhcmVudGhlc2lzIGFzIHQpIDo6IHRsIC0+ICgqIFxcKSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IENwYXJlbnRoZXNpc3MgMCA6OiB0bCAtPiAoKiBcXCkpKS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENwYXJlbnRoZXNpc11cbiAgICAgICAgKENwYXJlbnRoZXNpcyA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDcGFyZW50aGVzaXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCkpKS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENwYXJlbnRoZXNpc11cbiAgICAgICAgKENwYXJlbnRoZXNpc3MgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKFBsdXMgYXMgdCkgOjogdGwgLT4gKCogXFwrICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIitcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogUGx1c3MgMCA6OiB0bCAtPiAoKiBcXCsrKy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIrXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFBsdXNdIChQbHVzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFBsdXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCsrKy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIrXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFBsdXNdIChQbHVzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoTWludXMgYXMgdCkgOjogdGwgLT4gKCogXFwtICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi1cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTWludXNzIDAgOjogdGwgLT4gKCogXFwtLS0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbQmFja3NsYXNoOyBNaW51c10gKE1pbnVzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE1pbnVzcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwtLS0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbQmFja3NsYXNoOyBNaW51c10gKE1pbnVzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoRG90IGFzIHQpIDo6IHRsIC0+ICgqIFxcLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIuXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IERvdHMgMCA6OiB0bCAtPiAoKiBcXC4uLi4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLlwiKSA6OiByKSBbQmFja3NsYXNoOyBEb3RdIChEb3QgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRG90cyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwuLi4uLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi5cIikgOjogcikgW0JhY2tzbGFzaDsgRG90XSAoRG90cyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoRXhjbGFtYXRpb24gYXMgdCkgOjogdGwgLT4gKCogXFwhICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiFcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRXhjbGFtYXRpb25zIDAgOjogdGwgLT4gKCogXFwhISEuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbQmFja3NsYXNoOyBFeGNsYW1hdGlvbl0gKEV4Y2xhbWF0aW9uIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IEV4Y2xhbWF0aW9ucyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwhISEuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbQmFja3NsYXNoOyBFeGNsYW1hdGlvbl1cbiAgICAgICAgKEV4Y2xhbWF0aW9ucyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoSGFzaCBhcyB0KSA6OiB0bCAtPiAoKiBcXCMgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiI1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBIYXNocyAwIDo6IHRsIC0+ICgqIFxcIyMjLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiNcIikgOjogcikgW0JhY2tzbGFzaDsgSGFzaF0gKEhhc2ggOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogSGFzaHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcIyMjLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiNcIikgOjogcikgW0JhY2tzbGFzaDsgSGFzaF0gKEhhc2hzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChHcmVhdGVydGhhbiBhcyB0KSA6OiB0bCAtPiAoKiBcXD4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPlwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBHcmVhdGVydGhhbnMgMCA6OiB0bCAtPiAoKiBcXD4+Pi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFtCYWNrc2xhc2g7IEdyZWF0ZXJ0aGFuXSAoR3JlYXRlcnRoYW4gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogR3JlYXRlcnRoYW5zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXD4+Pi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFtCYWNrc2xhc2g7IEdyZWF0ZXJ0aGFuXVxuICAgICAgICAoR3JlYXRlcnRoYW5zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChMZXNzdGhhbiBhcyB0KSA6OiB0bCAtPiAoKiBcXDwgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPFwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBMZXNzdGhhbnMgMCA6OiB0bCAtPiAoKiBcXDw8PC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFtCYWNrc2xhc2g7IExlc3N0aGFuXSAoTGVzc3RoYW4gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTGVzc3RoYW5zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXDw8PC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFtCYWNrc2xhc2g7IExlc3N0aGFuXVxuICAgICAgICAoTGVzc3RoYW5zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgKEJhY2tzbGFzaHMgMCBhcyB0KSA6OiB0bCAtPiAoKiBcXFxcXFxcXC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJcXFxcXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgKEJhY2tzbGFzaHMgbiBhcyB0KSA6OiB0bCAtPiAoKiBcXFxcXFxcXC4uLiAqKVxuICAgICAgaWYgbiBtb2QgMiA9IDAgdGhlblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KFN0cmluZy5tYWtlICgobisyKS8yKSAnXFxcXCcpIDo6IHIpIFt0XSB0bFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KFN0cmluZy5tYWtlICgobisyKS8yKSAnXFxcXCcpIDo6IHIpIFt0XSAoQmFja3NsYXNoIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoOjpbXSAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCBcIlxcXFxcIiA6OiByKSBbXSBbXVxuICAgIHwgXywgQmFja3NsYXNoOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCBcIlxcXFxcIiA6OiByKSBbQmFja3NsYXNoXSB0bFxuXG4gICAgKCogPCAqKVxuICAgIHwgXywgKExlc3N0aGFufExlc3N0aGFucyBfIGFzIHQpXG4gICAgICAgICA6OiAoV29yZChcImh0dHBcInxcImh0dHBzXCJ8XCJmdHBcInxcImZ0cHNcInxcInNzaFwifFwiYWZwXCJ8XCJpbWFwXCIpIGFzIHcpXG4gICAgICAgICA6OiBDb2xvbjo6U2xhc2hzKG4pOjp0bCAtPlxuICAgICAgKCogXCJzZW1pLWF1dG9tYXRpY1wiIFVSTHMgKilcbiAgICAgIGxldCByZWMgcmVhZF91cmwgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6OnRsIC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgICB8IEdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICAgIGxldCB1cmwgPVxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VuIHcpIF4gXCI6Ly9cIlxuICAgICAgICAgICAgXiAoaWYgbiA9IDAgdGhlbiBcIlwiIGVsc2UgU3RyaW5nLm1ha2UgKG4tMSkgJy8nKVxuICAgICAgICAgICAgXiBMLnN0cmluZ19vZl90b2tlbnMgKExpc3QucmV2IGFjY3UpXG4gICAgICAgICAgaW4gU29tZSh1cmwsIHRsKVxuICAgICAgICB8IHg6OnRsIC0+XG4gICAgICAgICAgcmVhZF91cmwgKHg6OmFjY3UpIHRsXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBOb25lXG4gICAgICBpblxuICAgICAgYmVnaW4gbWF0Y2ggcmVhZF91cmwgW10gdGwgd2l0aFxuICAgICAgICB8IFNvbWUodXJsLCBuZXdfdGwpIC0+XG4gICAgICAgICAgbGV0IHIgPSBcbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgMCAtPiBUZXh0IFwiPFwiIDo6IHJcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG4gLT4gVGV4dChTdHJpbmcubWFrZSAobisxKSAnPCcpIDo6IHJcbiAgICAgICAgICAgIHwgXyAtPiByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChVcmwodXJsLFtUZXh0IHVybF0sXCJcIik6OnIpIFtdIG5ld190bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG5cbiAgICAoKiBXb3JkKHcpICopXG4gICAgfCBfLCBXb3JkIHc6OnRsIC0+XG4gICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCB3IDo6IHIpIFtXb3JkIHddIHRsXG5cbiAgICAoKiBuZXdsaW5lIGF0IHRoZSBlbmQgKilcbiAgICB8IF8sIFtOZXdsaW5lXSAtPlxuICAgICAgTkw6OnJcblxuICAgICgqIG5hbWVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoV29yZCB3OjooKFNlbWljb2xvbnxTZW1pY29sb25zIF8pIGFzIHMpOjp0bCkgYXMgdGwyKSAtPlxuICAgICAgaWYgU3RyaW5nU2V0Lm1lbSB3IGh0bWxjb2Rlc19zZXQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gdGxcbiAgICAgICAgICB8IFNlbWljb2xvbnMgMCAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbjo6dGwpXG4gICAgICAgICAgfCBTZW1pY29sb25zIG4gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuICAgICgqIGRpZ2l0LWNvZGVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoSGFzaDo6TnVtYmVyIHc6OigoU2VtaWNvbG9ufFNlbWljb2xvbnMgXykgYXMgcyk6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgYXMgdGwyKSAtPlxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB3IDw9IDQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIHRsXG4gICAgICAgICAgfCBTZW1pY29sb25zIDAgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9uOjp0bClcbiAgICAgICAgICB8IFNlbWljb2xvbnMgbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuICAgICgqIG1heWJlIGhleCBkaWdpdC1jb2RlZCBodG1sIGVudGl0eSAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjooKEhhc2g6OldvcmQgdzo6KChTZW1pY29sb258U2VtaWNvbG9ucyBfKSBhcyBzKTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICBhcyB0bDIpIHdoZW4gaXNfaGV4IHcgLT5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdyA8PSA0IHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgfCBTZW1pY29sb24gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSB0bFxuICAgICAgICAgIHwgU2VtaWNvbG9ucyAwIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbjo6dGwpXG4gICAgICAgICAgfCBTZW1pY29sb25zIG4gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9ucyhuLTEpOjp0bClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gdGwyXG5cblxuICAgICgqIEFtcGVyc2FuZCAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtBbXBlcnNhbmRdIHRsXG5cbiAgICAoKiAyIEFtcGVyc2FuZHMgKilcbiAgICB8IF8sIEFtcGVyc2FuZHMoMCk6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gKEFtcGVyc2FuZDo6dGwpXG5cbiAgICAoKiBTZXZlcmFsIEFtcGVyc2FuZHMgKG1vcmUgdGhhbiAyKSAqKVxuICAgIHwgXywgQW1wZXJzYW5kcyhuKTo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSAoQW1wZXJzYW5kcyhuLTEpOjp0bClcblxuICAgICgqIGJhY2txdW90ZXMgKilcbiAgICB8IF8sIChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggYmNvZGUgfmRlZmF1bHRfbGFuZyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogSFRNTCAqKVxuICAgICgqIDxici8+IGFuZCA8aHIvPiB3aXRoIG9yIHdpdGhvdXQgc3BhY2UocykgKilcbiAgICB8IF8sIChMZXNzdGhhbjo6V29yZChcImJyXCJ8XCJoclwiIGFzIHcpOjpTbGFzaFxuICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bClcbiAgICB8IF8sIChMZXNzdGhhbjo6V29yZChcImJyXCJ8XCJoclwiIGFzIHcpOjooU3BhY2V8U3BhY2VzIF8pOjpTbGFzaFxuICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGcgd2l0aFxuICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiPFwiXndeXCIgLz5cIik6OnIpIFtHcmVhdGVydGhhbl0gKEdyZWF0ZXJ0aGFuOjp0bClcbiAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIjxcIl53XlwiIC8+XCIpOjpyKSBbR3JlYXRlcnRoYW5dXG4gICAgICAgICAgICAoR3JlYXRlcnRoYW5zKG4tMSk6OnRsKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCI8XCJed15cIiAvPlwiKTo6cikgW0dyZWF0ZXJ0aGFuXSB0bFxuICAgICAgZW5kXG5cbiAgICAoKiBhd2FpdGVkIG9ycGhhbiBodG1sIGNsb3NpbmcgdGFnICopXG4gICAgfCBfLCBMZXNzdGhhbjo6U2xhc2g6OldvcmQodyk6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dGxcbiAgICAgIHdoZW4gIW1lZGlhdHlwZXRleHRvbWQgPD4gW10gLT5cbiAgICAgIHJhaXNlIChPcnBoYW5fY2xvc2luZyh3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+IEdyZWF0ZXJ0aGFuOjp0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpOjp0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdGwpKSlcblxuICAgICgqIGJsb2NrIGh0bWwgKilcbiAgICB8IChbXSB8IFtOZXdsaW5lfE5ld2xpbmVzIF98VGFnKFwiSFRNTEJMT0NLXCIsIF8pXSksXG4gICAgICAoTGVzc3RoYW4gYXMgdClcbiAgICAgIDo6KChXb3JkKHRhZ25hbWV0b3ApIGFzIHcpXG4gICAgICAgICA6OigoU3BhY2V8U3BhY2VzIF98R3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pXG4gICAgICAgICAgICA6Ol8gYXMgaHRtbF9zdHVmZikgYXMgdGx4KSAtPlxuICAgICAgaWYgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGlubGluZV9odG1sdGFnc19zZXQgdGhlblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgW1dvcmQgXCJcIl0gbGV4ZW1lc1xuICAgICAgZWxzZSBpZiBub3QgKGJsaW5kX2h0bWwgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGh0bWx0YWdzX3NldCkgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGx4XG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIGxldCByZWFkX2h0bWwoKSA9XG4gICAgICAgICAgbGV0IG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgICB8IEF3YWl0aW5nIG9mIHN0cmluZ1xuICAgICAgICAgICAgICB8IE9wZW4gb2Ygc3RyaW5nXG4gICAgICAgICAgICB0eXBlIGludGVybSA9XG4gICAgICAgICAgICAgIHwgSFRNTCBvZiBzdHJpbmcgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIGludGVybSBsaXN0XG4gICAgICAgICAgICAgIHwgRlRPS0VOUyBvZiBMLnRcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIG9mIEwudFxuICAgICAgICAgICAgICB8IE1EIG9mIE9tZF9yZXByZXNlbnRhdGlvbi50XG4gICAgICAgICAgICBsZXQgcmVjIG1kX29mX2ludGVybV9saXN0IGh0bWwgbCA9XG4gICAgICAgICAgICAgIGxldCBtZF9vZl9pbnRlcm1fbGlzdCA/KGh0bWw9aHRtbCkgbCA9XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgaHRtbCBsXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgICAgICAgIHwgSFRNTCh0LCBhLCBjKTo6dGwgLT5cbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBsZXQgZl9hID0gZmlsdGVyX3RleHRfb21kX3JldiBhIGluXG4gICAgICAgICAgICAgICAgICBpZiBmX2EgIT0gYSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIEh0bWxfYmxvY2tcbiAgICAgICAgICAgICAgICAgICAgICAodCxcbiAgICAgICAgICAgICAgICAgICAgICAgZl9hLFxuICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3BhcmFncmFwaHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAobWRfb2ZfaW50ZXJtX2xpc3Qgfmh0bWw6ZmFsc2UgKExpc3QucmV2IGMpKSlcbiAgICAgICAgICAgICAgICAgICAgOjogbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgSHRtbF9ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICh0LCBmX2EsIG1kX29mX2ludGVybV9saXN0IH5odG1sOnRydWUgKExpc3QucmV2IGMpKVxuICAgICAgICAgICAgICAgICAgICA6OiBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBNRCBtZDo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZEBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IFJUT0tFTlMgdDE6OkZUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKEZUT0tFTlMoTGlzdC5yZXZfYXBwZW5kIHQxIHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgUlRPS0VOUyB0MTo6UlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdFxuICAgICAgICAgICAgICAgICAgKEZUT0tFTlMoTGlzdC5yZXZfYXBwZW5kIHQxIChMaXN0LnJldiB0MikpOjp0bClcbiAgICAgICAgICAgICAgfCBGVE9LRU5TIHQxOjpGVE9LRU5TIHQyOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IChGVE9LRU5TKHQxQHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgRlRPS0VOUyB0IDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgaWYgaHRtbCB0aGVuXG4gICAgICAgICAgICAgICAgICBSYXcoTC5zdHJpbmdfb2ZfdG9rZW5zIHQpIDo6IG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWFpbl9sb29wIH5odG1sIFtdIFtXb3JkIFwiXCJdIHRcbiAgICAgICAgICAgICAgICAgIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIHQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoRlRPS0VOUyhMaXN0LnJldiB0KSA6OiB0bClcbiAgICAgICAgICAgIGxldCBtZF9vZl9pbnRlcm1fbGlzdCBsID0gbWRfb2ZfaW50ZXJtX2xpc3QgdHJ1ZSBsXG4gICAgICAgICAgICBsZXQgc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMgPVxuICAgICAgICAgICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICAgICAgICAgICAgTGlzdC5pdGVyIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCBPcGVuIHQgLT4gYnByaW50ZiBiIFwie0IvT3BlbiAlc31cIiB0XG4gICAgICAgICAgICAgICAgICB8IEF3YWl0aW5nIHQgLT4gYnByaW50ZiBiIFwie0IvQXdhaXRpbmcgJXN9XCIgdFxuICAgICAgICAgICAgICAgICkgdGFnc3RhdHVzO1xuICAgICAgICAgICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgICAgICAgIGVuZCBpblxuICAgICAgICAgIGxldCBhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkgPVxuICAgICAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICAgICB8IFQuUlRPS0VOUyByIDo6IGJvZHkgLT4gVC5SVE9LRU5TKHg6OnIpOjpib2R5XG4gICAgICAgICAgICB8IF8gLT4gVC5SVE9LRU5TW3hdIDo6IGJvZHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWMgbG9vcCAoYm9keTpULmludGVybSBsaXN0KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zID1cbiAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzMzMgQkhUTUwgbG9vcCBib2R5PSVTIHRhZ3N0YXR1cz0lUyAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQoVC5tZF9vZl9pbnRlcm1fbGlzdCBib2R5KSlcbiAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cylcbiAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyB3aGVuIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQwMSBCSFRNTCBOb3QgZW5vdWdoIHRvIHJlYWRcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQwOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgIChpZiBuID0gMCB0aGVuIExlc3N0aGFuIGVsc2UgTGVzc3RoYW5zKG4tMSkpXG4gICAgICAgICAgICAgICAgICAgICAgIGJvZHkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyAoTGVzc3RoYW46OnRva2VucylcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBzZWxmLWNsb3NpbmcgdGFncyAqKVxuICAgICAgICAgICAgfCBTbGFzaDo6R3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyh0YWduYW1lKSA6OiB0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCBbVC5IVE1MKHRhZ25hbWUsIGF0dHJzLCBbXSldIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0MTkgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgIFNsYXNoXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgICBHcmVhdGVydGhhblxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSB0YWcgb3BlbmVyICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjpTbGFzaDo6KFdvcmQodGFnbmFtZSkgYXMgdylcbiAgICAgICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyB3aGVuIHQgPSB0YWduYW1lIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzc1IEJIVE1MIHByb3Blcmx5IGNsb3NpbmcgJVNcXG4lIVwiIHQ7XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW4gOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzc5IEJIVE1MIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDFcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5SVE9LRU5TW2c7dztTbGFzaDtMZXNzdGhhbl06OmJvZHkpXG4gICAgICAgICAgICAgICAgICAgIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzgzIEJIVE1MIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDJcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgaWYgIW1lZGlhdHlwZXRleHRvbWQgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgIChPcnBoYW5fY2xvc2luZyh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyZWF0ZXJ0aGFuOjp0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JlYXRlcnRoYW5zKG4tMSk6OnRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpKVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgQkhUTUwgd3JvbmdseSBjbG9zaW5nICVTIDNcXG4lIVwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogdGFnICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjooV29yZCh0YWduYW1lKSBhcyB3b3JkKTo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICBibGluZF9odG1sXG4gICAgICAgICAgICAgICAgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWx0YWdzX3NldFxuICAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0ODkgQkhUTUwgPFdvcmQoJXMpLi4uXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuKHQpIDo6IF9cbiAgICAgICAgICAgICAgICAgIHdoZW4gdCA8PiB0YWduYW1lICYmIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGF0dHJzIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQ5NiBCSFRNTCB0YWcgJVMgYnV0IGF0dHJzIDw+IFtdXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0MjEgQkhUTUwgdGFnICVTLCB0YWdzdGF0dXM9JVMsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycz1bXSwgdG9rZW5zPSVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBbXSBbXSAoVC5Bd2FpdGluZyB0YWduYW1lOjp0YWdzdGF0dXMpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0ODkgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGIsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0MzMgQkhUTUwgdGFnc3RhdHVzPSVTIHRva2Vucz0lU1xcbiUhXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKGJAYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBlbmQgb2Ygb3BlbmluZyB0YWcgKilcbiAgICAgICAgICAgIHwgR3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IHRhZ3N0YXR1cyAtPlxuICAgICAgICAgICAgICAgICAgaWYgTGlzdC5tZW0gKFwibWVkaWE6dHlwZVwiLCBTb21lIFwidGV4dC9vbWRcIikgYXR0cnMgdGhlblxuICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgbWVkaWF0eXBldGV4dG9tZCA6PSB0IDo6ICFtZWRpYXR5cGV0ZXh0b21kO1xuICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlKG1haW5faW1wbF9yZXYgfmh0bWwgW10gW10gdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1MjQgQkhUTUwgY2xvc2luZyB0YWcgbm90IGZvdW5kIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluICVTXFxuJSFcIiAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDbG9zaW5nIHRhZyBgJXMnIG5vdCBmb3VuZCBmb3IgdGV4dC9vbWQgem9uZS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhdHlwZXRleHRvbWQgOj0gTGlzdC50bCAhbWVkaWF0eXBldGV4dG9tZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoIE9ycGhhbl9jbG9zaW5nKHRhZ25hbWUsIGRlbGltaXRlciwgYWZ0ZXIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmVmb3JlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmIHIgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGVzc3RoYW5zIG4gYXMgZSA6OiB0bCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZGVsaW1pdGVyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMZXNzdGhhbjo6XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIExlc3N0aGFuOjp0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgbiA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhbjo6clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhbnMobi0xKTo6cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIChlOjpyKSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0bCA9PSBkZWxpbWl0ZXIgfHwgdGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGU6OnIpIHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGU6OnRsIGFzIGwgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGwgPT0gZGVsaW1pdGVyIHx8IGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiByXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIHRsID09IGRlbGltaXRlciB8fCB0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IChlOjpyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIChlOjpyKSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gTGlzdC5yZXYgclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBmIFtdIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1NTIgQkhUTUwgdG9rZW5zPSVzIGRlbGltaXRlcj0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcj0lcyBiZWZvcmU9JXMgKHRhZ25hbWU9dCk9JWJcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGRlbGltaXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBhZnRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBiZWZvcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnbmFtZSA9IHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoICFtZWRpYXR5cGV0ZXh0b21kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogdGwgLT4gbWVkaWF0eXBldGV4dG9tZCA6PSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRhZ25hbWUgPSB0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtULkhUTUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtULk1EXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWluX2ltcGwgfmh0bWwgW10gW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZ19zZXRleHQgbWFpbl9sb29wIGJlZm9yZSkpXSldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNTcxIEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGxvb3AgYm9keSBbXSAoVC5PcGVuIHQ6OnRhZ3N0YXR1cykgdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1MTkgQkhUTUwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bGRuJ3QgZmluZCBhbiBjbG9zaW5nIHRhZyBmb3IgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYm9keSwgbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0OTggQkhUTUwgRm91bmQgYSBjbG9zaW5nIHRhZyAlc1xcbiUhXCIgdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIFtULkhUTUwodCwgYXR0cnMsIGJvZHkpXSBbXSB0YWdzdGF0dXMgbFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKFtULkhUTUwodCwgYXR0cnMsIGJvZHkpXSwgbClcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIFwiKE9NRCkgMzU5MSBCSFRNTCBTb21lIGA+YCBpc24ndCBmb3IgYW4gb3BlbmluZyB0YWdcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgR3JlYXRlcnRoYW4gYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1NDIgQkhUTUwgdGFnc3RhdHVzPVtdXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG5cbiAgICAgICAgICAgICgqIG1heWJlIGF0dHJpYnV0ZSAqKVxuICAgICAgICAgICAgfCAoQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KTo6dG9rZW5zXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICAgICAgOjooQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KVxuICAgICAgICAgICAgICA6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZSBBdHRyaWJ1dGVfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IEVtcHR5IG9mIG5hbWUgfCBOYW1lZCBvZiBuYW1lIHwgVm9pZFxuICAgICAgICAgICAgICAgICAgYW5kIG5hbWUgPSBzdHJpbmdcbiAgICAgICAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3BlbiBBdHRyaWJ1dGVfdmFsdWUgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVjIGV4dHJhY3RfYXR0cmlidXRlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUpIDo6IHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCAoR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pIDo6IF8gYXMgdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IEVxdWFsIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBOYW1lZChMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgQ29sb24gfCBDb2xvbnMgXyB8IFVuZGVyc2NvcmUgfCBVbmRlcnNjb3JlcyBfIHwgV29yZCBfXG4gICAgICAgICAgICAgICAgICB8IE51bWJlciBfIHwgTWludXMgfCBNaW51c3MgXyB8IERvdCB8IERvdHMgXyBhcyB0IDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0X2F0dHJpYnV0ZSAodDo6YWNjdSkgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IHRva2VucyAtPiBWb2lkLCB0b2tlbnNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGV4dHJhY3RfYXR0cmlidXRlIFt0XSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgIHwgRW1wdHkgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAoKiBhdHRyaWJ1dGUgd2l0aCBubyBleHBsaWNpdCB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzYyOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIE5vbmUpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgTmFtZWQgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjYxIEJIVE1MIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGUgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2NjggQkhUTUwgbm9uIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZzcGxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzY1NCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2OTAgQkhUTUwgZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY5OCBCSFRNTCBub24gZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjp0bCAtPiBTcGxpdChbXSwgdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjIyIEJIVE1MICVzPSVTICVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFZvaWQsIF8gLT4gTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgfCB4Ojp0b2tlbnMgYXMgZGd0c1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjIwIEJIVE1MIGdlbmVyYWwgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgZGd0cyk7XG4gICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCAoTmV3bGluZSB8IFNwYWNlIHwgU3BhY2VzIF8pIDo6IHRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM3MzcgQkhUTUwgc3BhY2VzXFxuJSFcIjtcbiAgICAgICAgICAgICAgICBsb29wIGJvZHkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgKE5ld2xpbmVzIF8gYXMgeCkgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzgyNyBCSFRNTCBuZXdsaW5lc1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgd2FybiBcInRoZXJlIGFyZSBlbXB0eSBsaW5lcyBpbiB3aGF0IG1heSBiZSBhbiBIVE1MIGJsb2NrXCI7XG4gICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzc0MiBCSFRNTCBmYWxsYmFjayB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zPSVzIGFuZCB0YWdzdGF0dXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBbXSAtPiBcIk5vbmVcIlxuICAgICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gXCJBd2FpdGluZ1wiXG4gICAgICAgICAgICAgICAgICAgfCBULk9wZW4gXyA6OiBfIC0+IFwiT3BlbiAoY2FuJ3QgYmUpXCIpO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIHJlYWQgYW4gb3BlbiBIVE1MIHRhZyAoJXMpLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIHwgVC5PcGVuIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byBmaW5kIHRoZSBjbG9zaW5nIEhUTUwgdGFnIGZvciAlcywgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQwOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICBtYXRjaCBsb29wIFtdIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgU29tZShULm1kX29mX2ludGVybV9saXN0IGgsIHJlc3QpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcmVhZF9odG1sKCkgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoaEByKSBbVGFnKFwiSFRNTEJMT0NLXCIsIGVtcHR5X2V4dGVuc2lvbildIHJlc3RcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdCBpblxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCh0ZXh0IF4gdGFnbmFtZXRvcCk6OnIpIFt3XSBodG1sX3N0dWZmXG4gICAgICAgIGVuZFxuICAgICgqIC8gZW5kIG9mIGJsb2NrIEhUTUwuICopXG5cblxuICAgICgqIGlubGluZSBIVE1MICopXG4gICAgfCBfLFxuICAgICAgKExlc3N0aGFuIGFzIHQpXG4gICAgICA6OigoV29yZCh0YWduYW1ldG9wKSBhcyB3KVxuICAgICAgICAgOjooKFNwYWNlfFNwYWNlcyBffEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKVxuICAgICAgICAgICAgOjpfIGFzIGh0bWxfc3R1ZmYpIGFzIHRseCkgLT5cbiAgICAgIGlmIChzdHJpY3RfaHRtbCAmJiBub3QoU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGlubGluZV9odG1sdGFnc19zZXQpKVxuICAgICAgfHwgbm90KGJsaW5kX2h0bWwgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGh0bWx0YWdzX3NldClcbiAgICAgIHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRseFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBsZXQgcmVhZF9odG1sKCkgPVxuICAgICAgICAgIGxldCBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgICAgfCBBd2FpdGluZyBvZiBzdHJpbmdcbiAgICAgICAgICAgICAgfCBPcGVuIG9mIHN0cmluZ1xuICAgICAgICAgICAgdHlwZSBpbnRlcm0gPVxuICAgICAgICAgICAgICB8IEhUTUwgb2Ygc3RyaW5nICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiBpbnRlcm0gbGlzdFxuICAgICAgICAgICAgICB8IFRPS0VOUyBvZiBMLnRcbiAgICAgICAgICAgICAgfCBNRCBvZiBPbWRfcmVwcmVzZW50YXRpb24udFxuICAgICAgICAgICAgbGV0IHJlYyBtZF9vZl9pbnRlcm1fbGlzdCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgICAgICAgfCBIVE1MKHQsIGEsIGMpOjp0bCAtPlxuICAgICAgICAgICAgICAgIEh0bWwodCwgYSwgbWRfb2ZfaW50ZXJtX2xpc3QoTGlzdC5yZXYgYykpOjptZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IE1EIG1kOjp0bCAtPiBtZCBAIG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgVE9LRU5TIHQxOjpUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKFRPS0VOUyh0MUB0Mik6OnRsKVxuICAgICAgICAgICAgICB8IFRPS0VOUyB0IDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgbWFpbl9pbXBsIH5odG1sIFtdIFtXb3JkIFwiXCJdICh0KVxuICAgICAgICAgICAgICAgIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgIGxldCBzdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyA9XG4gICAgICAgICAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgICAgICAgICAgICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IE9wZW4gdCAtPiBicHJpbnRmIGIgXCJ7SS9PcGVuICVzfVwiIHRcbiAgICAgICAgICAgICAgICAgIHwgQXdhaXRpbmcgdCAtPiBicHJpbnRmIGIgXCJ7SS9Bd2FpdGluZyAlc31cIiB0XG4gICAgICAgICAgICAgICAgKSB0YWdzdGF0dXM7XG4gICAgICAgICAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgICAgICAgZW5kIGluXG4gICAgICAgICAgbGV0IGFkZF90b2tlbl90b19ib2R5IHggYm9keSA9XG4gICAgICAgICAgICBULlRPS0VOU1t4XTo6Ym9keVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIChib2R5OlQuaW50ZXJtIGxpc3QpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnMgPVxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzcxOCBsb29wIHRhZ3N0YXR1cz0oJXMpICVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICgqIGVwcmludGYgXCIoT01EKSAzNzE4IGxvb3AgdGFnc3RhdHVzPSglcykgYm9keT0oJXMpICVzXFxuJSFcIiAqKVxuICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgICgqIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZChULm1kX29mX2ludGVybV9saXN0IGJvZHkpKSAqKVxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgbWF0Y2ggdG9rZW5zIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4odCk6Ol8gd2hlbiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE5vdCBlbm91Z2ggdG8gcmVhZCBmb3IgaW5saW5lIEhUTUxcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgKGlmIG4gPSAwIHRoZW4gTGVzc3RoYW4gZWxzZSBMZXNzdGhhbnMobi0xKSlcbiAgICAgICAgICAgICAgICAgICAgICAgYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIChMZXNzdGhhbjo6dG9rZW5zKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHNlbGYtY2xvc2luZyB0YWdzICopXG4gICAgICAgICAgICB8IFNsYXNoOjpHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nKHRhZ25hbWUpOjp0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCBbVC5IVE1MKHRhZ25hbWUsIGF0dHJzLCBbXSldIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0dyZWF0ZXJ0aGFuO1NsYXNoXTo6Ym9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIG11bHRpcGxlIG5ld2xpbmVzIGFyZSBub3QgdG8gYmUgc2VlbiBpbiBpbmxpbmUgSFRNTCAqKVxuICAgICAgICAgICAgfCBOZXdsaW5lcyBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgTXVsdGlwbGUgbGluZXMgaW4gaW5saW5lIEhUTUxcXG4lIVwiO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IF8gLT4gd2FybiBcIm11bHRpcGxlIG5ld2xpbmVzIGluIGlubGluZSBIVE1MXCI7IE5vbmUpXG4gICAgICAgICAgICAoKiBtYXliZSBjb2RlICopXG4gICAgICAgICAgICB8IChCYWNrcXVvdGUgfCBCYWNrcXVvdGVzIF8gYXMgYik6OnRsIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogbm8gY29kZVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogbm9uZVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gXyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBsZXQncyB0cnlcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYmNvZGUgW10gW1NwYWNlXSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKCgoQ29kZSBfOjpfKSBhcyBjKSwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1lZFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5NRCBjOjpib2R5KSBbXSB0YWdzdGF0dXMgbFxuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogZmFpbGVkXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tiXTo6Ym9keSkgW10gdGFnc3RhdHVzIHRsXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSB0YWcgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OlNsYXNoOjooV29yZCh0YWduYW1lKSBhcyB3KVxuICAgICAgICAgICAgICA6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIHdoZW4gdCA9IHRhZ25hbWUgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxMzYgcHJvcGVybHkgY2xvc2luZyAlUyB0b2tlbnM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW4gOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTQ0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDFcXG4lIVwiIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW2c7dztTbGFzaDtMZXNzdGhhbl06OmJvZHkpIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTQ5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDJcXG4lIVwiIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTU0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyBub3RoaW5nIHdpdGggJVMgM1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHRhZyAqKVxuICAgICAgICAgICAgfCBMZXNzdGhhbjo6KFdvcmQodGFnbmFtZSkgYXMgd29yZCk6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgYmxpbmRfaHRtbFxuICAgICAgICAgICAgICAgIHx8IChzdHJpY3RfaHRtbCAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaW5saW5lX2h0bWx0YWdzX3NldClcbiAgICAgICAgICAgICAgICB8fCAobm90IHN0cmljdF9odG1sICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sdGFnc19zZXQpXG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDwlcy4uLlxcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuT3Blbih0KSA6OiBfXG4gICAgICAgICAgICAgICAgICB3aGVuIHQgPD4gdGFnbmFtZSAmJiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM3OTYgdGFnICVzLCBhdHRycz1bXVxcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBsb29wIFtdIFtdIChULkF3YWl0aW5nIHRhZ25hbWU6OnRhZ3N0YXR1cykgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbd29yZDtMZXNzdGhhbl06OmJvZHkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYix0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKGJAYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBlbmQgb2Ygb3BlbmluZyB0YWcgKilcbiAgICAgICAgICAgIHwgR3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxODUgZW5kIG9mIG9wZW5pbmcgdGFnIHRva2Vucz0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IHRhZ3N0YXR1cyBhcyB0cyAtPlxuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbG9vcCBib2R5IFtdIChULk9wZW4gdDo6dGFnc3RhdHVzKSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE4NiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bGRuJ3QgZmluZCBhbiBjbG9zaW5nIHRhZyBmb3IgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHQ7XG4gICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYiwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSA0MTkyIEZvdW5kIGEgY2xvc2luZyB0YWcgJXMgdHM9JXMgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vucz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgU29tZShULkhUTUwodCwgYXR0cnMsIGIpOjpib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBOb3RlOiB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSB2YWx1ZSBvZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHJzXSBoZXJlIGJlY2F1c2UgaW4gd2UgaGF2ZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFnc3RhdHVzXSBtYXRjaGVzIFtULk9wZW4gXyA6OiBfXSBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXJlJ3MgYSBjb3JyZXNwb25kaW5nIGZpbHRlciB0aGF0IHdpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2UgY2FyZSBvZiBhdHRycyB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpdC4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgKFQuSFRNTCh0LCBhdHRycywgYik6OmJvZHkpIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSBUdXJucyBvdXQgYW4gYD5gIGlzbid0IGZvciBhbiBvcGVuaW5nIHRhZ1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tHcmVhdGVydGhhbl06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MjAyIHRhZ3N0YXR1cz1bXVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICAoKiBtYXliZSBhdHRyaWJ1dGUgKilcbiAgICAgICAgICAgIHwgKENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdCk6OnRva2Vuc1xuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgICAgIDo6KENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdClcbiAgICAgICAgICAgICAgOjp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGxldCBtb2R1bGUgQXR0cmlidXRlX3ZhbHVlID0gc3RydWN0XG4gICAgICAgICAgICAgICAgICB0eXBlIHQgPSBFbXB0eSBvZiBuYW1lIHwgTmFtZWQgb2YgbmFtZSB8IFZvaWRcbiAgICAgICAgICAgICAgICAgIGFuZCBuYW1lID0gc3RyaW5nXG4gICAgICAgICAgICAgICAgZW5kIGluXG4gICAgICAgICAgICAgICAgbGV0IG9wZW4gQXR0cmlidXRlX3ZhbHVlIGluXG4gICAgICAgICAgICAgICAgbGV0IHJlYyBleHRyYWN0X2F0dHJpYnV0ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlIHwgU3BhY2VzIF8gfCBOZXdsaW5lKSA6OiB0b2tlbnMtPlxuICAgICAgICAgICAgICAgICAgICBFbXB0eShMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgKEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKSA6OiBfIGFzIHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCBFcXVhbCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgTmFtZWQoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IENvbG9uIHwgQ29sb25zIF8gfCBVbmRlcnNjb3JlIHwgVW5kZXJzY29yZXMgXyB8IFdvcmQgX1xuICAgICAgICAgICAgICAgICAgfCBOdW1iZXIgXyB8IE1pbnVzIHwgTWludXNzIF8gfCBEb3QgfCBEb3RzIF8gYXMgdCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdF9hdHRyaWJ1dGUgKHQ6OmFjY3UpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCB0b2tlbnMgLT4gVm9pZCwgdG9rZW5zXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBleHRyYWN0X2F0dHJpYnV0ZSBbdF0gdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICB8IEVtcHR5IGF0dHJpYnV0ZW5hbWUsIHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgKCogYXR0cmlidXRlIHdpdGggbm8gZXhwbGljaXQgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIE5vbmUpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgTmFtZWQgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgfCBRdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBub24gZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgMCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICgzOTU3KSAlcz0lUyAlc1xcbiUhXCIgYXR0cmlidXRlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFZvaWQsIF8gLT4gTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6Ong6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tCYWNrc2xhc2g7eF06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgIHwgQmFja3NsYXNocyhuKTo6eDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgJiYgbiBtb2QgMiA9IDEgLT5cbiAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbQmFja3NsYXNocyhuKTt4XTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuXG4gICAgICAgICAgICB8IHg6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoNDE2MSkgZ2VuZXJhbCAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyAoeDo6dG9rZW5zKSk7XG4gICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbeF06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IChOZXdsaW5lIHwgU3BhY2UgfCBTcGFjZXMgXykgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgKDQyODkpIHNwYWNlc1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgbG9vcCBib2R5IGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoNDI5NCkgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjayB3aXRoIHRva2Vucz0lcyBhbmQgdGFnc3RhdHVzPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKTtcbiAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byByZWFkIGFuIG9wZW4gSFRNTCB0YWcgKCVzKSwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICB8IFQuT3BlbiB0YWcgOjogXyAtPlxuICAgICAgICAgICAgICAgICB3YXJuIChzcHJpbnRmIFwiZXhwZWN0ZWQgdG8gZmluZCB0aGUgY2xvc2luZyBIVE1MIHRhZyBmb3IgJXMsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBmb3VuZCBub3RoaW5nXCIgdGFnKTtcbiAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICBpbiBtYXRjaCBsb29wIFtdIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgU29tZShodG1sLCByZXN0KSAtPlxuICAgICAgICAgICAgU29tZShULm1kX29mX2ludGVybV9saXN0IGh0bWwsIHJlc3QpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcmVhZF9odG1sKCkgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoaEByKSBbR3JlYXRlcnRoYW5dIHJlc3RcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdCBpblxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCh0ZXh0IF4gdGFnbmFtZXRvcCk6OnIpIFt3XSBodG1sX3N0dWZmXG4gICAgICAgIGVuZFxuICAgICgqIC8gZW5kIG9mIGlubGluZSBIVE1MLiAqKVxuXG4gICAgKCogPCA6IGVtYWlscyAqKVxuICAgIHwgXywgKExlc3N0aGFuIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfYXV0b2VtYWlsIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogbGluZSBicmVha3MgKilcbiAgICB8IF8sIE5ld2xpbmU6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChOTDo6cikgW05ld2xpbmVdIHRsXG4gICAgfCBfLCBOZXdsaW5lcyBfOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoTkw6Ok5MOjpyKSBbTmV3bGluZV0gdGxcblxuICAgICgqIFsgKilcbiAgICB8IF8sIChPYnJhY2tldCBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2xpbmsgbWFpbl9sb29wIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBtYXRjaCBtYXliZV9yZWZlcmVuY2UgbWFpbl9sb29wIHJjIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogaW1nICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb258RXhjbGFtYXRpb25zIF8gYXMgdClcbiAgICAgICAgIDo6T2JyYWNrZXQ6OkNicmFja2V0OjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAoKiBpbWFnZSBpbnNlcnRpb24gd2l0aCBubyBcImFsdFwiICopXG4gICAgICAoKiAhW10oL3BhdGgvdG8vaW1nLmpwZykgKilcbiAgICAgICh0cnlcbiAgICAgICAgIGJlZ2luXG4gICAgICAgICAgIGxldCBiLCB0bCA9IHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgfm5vX25sOmZhbHNlIHRsIGluXG4gICAgICAgICAgICgqIG5ldyBsaW5lcyB0aGVyZSBhcmUgYWxsb3dlZCAqKVxuICAgICAgICAgICBsZXQgciAoKiB1cGRhdGVkIHJlc3VsdCAqKSA9IG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgIHwgRXhjbGFtYXRpb25zIDAgLT4gVGV4dCBcIiFcIiA6OiByXG4gICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgbiAtPiBUZXh0KFN0cmluZy5tYWtlIChuKzEpICchJykgOjogclxuICAgICAgICAgICAgIHwgXyAtPiByIGluXG4gICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgdHJ5IFNvbWUocmVhZF91bnRpbF9zcGFjZSB+YnE6ZmFsc2Ugfm5vX25sOnRydWUgYilcbiAgICAgICAgICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgLT4gTm9uZVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgIHwgU29tZSh1cmwsIHRscykgLT5cbiAgICAgICAgICAgICBsZXQgdGl0bGUsIHNob3VsZF9iZV9lbXB0eV9saXN0ID1cbiAgICAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfmJxOnRydWUgKHNuZCAocmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSB0bHMpKSBpblxuICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKFwiXCIsIHVybCwgdGl0bGUpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHRsXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgYiBpblxuICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZyhcIlwiLCB1cmwsIFwiXCIpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHRsXG4gICAgICAgICBlbmRcbiAgICAgICB3aXRoXG4gICAgICAgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG4gICAgKCogaW1nIHJlZiAqKVxuICAgIHwgXywgKEV4Y2xhbWF0aW9uIGFzIHQpXG4gICAgICAgICA6Ok9icmFja2V0OjpDYnJhY2tldDo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAoKiByZWYgaW1hZ2UgaW5zZXJ0aW9uIHdpdGggbm8gXCJhbHRcIiAqKVxuICAgICAgKCogIVtdW3JlZl0gKilcbiAgICAgICh0cnlcbiAgICAgICAgIGxldCBpZCwgdGwgPSByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIH5ub19ubDp0cnVlIHRsIGluXG4gICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCB0bCBsZXhlbWVzIGluXG4gICAgICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgaWQgaW5cbiAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZ19yZWYocmMsIGlkLCBcIlwiLCBmYWxsYmFjaykgOjogcikgW0NicmFja2V0XSB0bFxuICAgICAgIHdpdGggTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuXG4gICAgKCogaW1nICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb258RXhjbGFtYXRpb25zIF8gYXMgdCk6Ok9icmFja2V0Ojp0bCAtPlxuICAgICAgKCogaW1hZ2UgaW5zZXJ0aW9uIHdpdGggXCJhbHRcIiAqKVxuICAgICAgKCogIVtBbHQgdGV4dF0oL3BhdGgvdG8vaW1nLmpwZyBcIk9wdGlvbmFsIHRpdGxlXCIpICopXG4gICAgICAodHJ5XG4gICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIHRsIHdpdGhcbiAgICAgICAgIHwgYWx0LCBPcGFyZW50aGVzaXM6Om50bCAtPlxuICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgICAgIGxldCBwYXRoX3RpdGxlLCByZXN0ID1cbiAgICAgICAgICAgICAgICByZWFkX3VudGlsX2NwYXJlbnRoIH5icTp0cnVlIH5ub19ubDpmYWxzZSBudGwgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGgsIHRpdGxlID1cbiAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfc3BhY2UgfmJxOnRydWUgfm5vX25sOnRydWUgcGF0aF90aXRsZVxuICAgICAgICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBwYXRoX3RpdGxlLCBbXSBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUsIG5vdGhpbmcgPVxuICAgICAgICAgICAgICAgIGlmIHRpdGxlIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfmJxOnRydWUgKHNuZChyZWFkX3VudGlsX2RxIH5icTp0cnVlIHRpdGxlKSlcbiAgICAgICAgICAgICAgICBlbHNlIFtdLCBbXSBpblxuICAgICAgICAgICAgICBpZiBub3RoaW5nIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb247ICgqIGNhdWdodCByaWdodCBiZWxvdyAqKVxuICAgICAgICAgICAgICBsZXQgciA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgMCAtPiBUZXh0IFwiIVwiIDo6IHJcbiAgICAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyBuIC0+IFRleHQoU3RyaW5nLm1ha2UgKG4rMSkgJyEnKSA6OiByXG4gICAgICAgICAgICAgICAgfCBfIC0+IHIgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGggPSBMLnN0cmluZ19vZl90b2tlbnMgcGF0aCBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKGFsdCwgcGF0aCwgdGl0bGUpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHJlc3RcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTkxfZXhjZXB0aW9uXG4gICAgICAgICAgICAoKiBpZiBOTF9leGNlcHRpb24gd2FzIHJhaXNlZCwgdGhlbiBmYWxsIGJhY2sgdG8gXCJ0ZXh0XCIgKilcbiAgICAgICAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICApXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OldvcmQoaWQpOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OihTcGFjZXxTcGFjZXMgXyk6OldvcmQoaWQpOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OihTcGFjZXxTcGFjZXMgXyk6OldvcmQoaWQpOjooU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgICAgICAgOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OldvcmQoaWQpOjooU3BhY2V8U3BhY2VzIF8pOjpDYnJhY2tldDo6bnRsIC0+XG4gICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIG50bCBsZXhlbWVzIGluXG4gICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZ19yZWYocmMsIGlkLCBhbHQsIGZhbGxiYWNrKTo6cikgW0NicmFja2V0XSBudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6KChOZXdsaW5lfFNwYWNlfFNwYWNlcyBffFdvcmQgX3xOdW1iZXIgXyk6Ol9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIG50bCkgLT5cbiAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIH5ub19ubDpmYWxzZSBudGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdLCByZXN0IC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICAgICAgfCBpZCwgcmVzdCAtPlxuICAgICAgICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlc3QgbGV4ZW1lcyBpblxuICAgICAgICAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyBpZCBpblxuICAgICAgICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nX3JlZihyYywgaWQsIGFsdCwgZmFsbGJhY2spOjpyKVxuICAgICAgICAgICAgICAgICAgW0NicmFja2V0XVxuICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICAgICAgICB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgIClcbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICBlbmRcbiAgICAgICB3aXRoXG4gICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuICAgIHwgXyxcbiAgICAgIChBdHxCYXJ8Q2FyZXR8Q2JyYWNlfENvbG9ufENvbW1hfENwYXJlbnRoZXNpc3xDYnJhY2tldHxEb2xsYXJcbiAgICAgIHxEb3R8RG91YmxlcXVvdGV8RXhjbGFtYXRpb258RXF1YWx8TWludXN8T2JyYWNlfE9wYXJlbnRoZXNpc1xuICAgICAgfFBlcmNlbnR8UGx1c3xRdWVzdGlvbnxRdW90ZXxTZW1pY29sb258U2xhc2h8VGFifFRpbGRlXG4gICAgICB8R3JlYXRlcnRoYW4gYXMgdCk6OnRsXG4gICAgICAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG4gICAgfCBfLCAoTnVtYmVyIF8gIGFzIHQpOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG4gICAgfCBfLCAoQXRzIF8gfCBCYXJzIF8gfCBDYXJldHMgXyB8IENicmFjZXMgXyB8IENicmFja2V0cyBfIHwgQ29sb25zIF9cbiAgICAgICAgIHwgQ29tbWFzIF8gfCBDcGFyZW50aGVzaXNzIF8gfCBEb2xsYXJzIF8gfCBEb3RzIF8gfCBEb3VibGVxdW90ZXMgX1xuICAgICAgICAgfCBFcXVhbHMgXyB8IEV4Y2xhbWF0aW9ucyBfIHwgR3JlYXRlcnRoYW5zIF8gfCBMZXNzdGhhbnMgX1xuICAgICAgICAgfCBNaW51c3MgXyB8IE9icmFjZXMgXyB8IE9icmFja2V0cyBfIHwgT3BhcmVudGhlc2lzcyBfXG4gICAgICAgICB8IFBlcmNlbnRzIF8gfCBQbHVzcyBfIHwgUXVlc3Rpb25zIF8gfCBRdW90ZXMgXyB8IFNlbWljb2xvbnMgX1xuICAgICAgICAgfCBTbGFzaHMgXyB8IFN0YXJzIF8gfCBUYWJzIF8gfCBUaWxkZXMgXyB8IFVuZGVyc2NvcmVzIF8gYXMgdGspXG4gICAgICAgICA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHRrMCwgdGtzID0gTC5zcGxpdF9maXJzdCB0ayBpblxuICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdGswIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCB0ZXh0IDo6IHIpIFt0azBdICh0a3MgOjogdGwpXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG5cbiAgYW5kIG1haW5faW1wbCB+aHRtbCAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICgqIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1haW5faW1wbCBodG1sPSViXFxuJSFcIiBodG1sOyAqKVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIExpc3QucmV2IChtYWluX2xvb3BfcmV2IH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lcylcblxuICBhbmQgbWFpbl9sb29wID8oaHRtbD1mYWxzZSkgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAgIG1haW5faW1wbCB+aHRtbCByIHByZXZpb3VzIGxleGVtZXNcblxuICBhbmQgbWFpbl9sb29wX3JldiA/KGh0bWw9ZmFsc2UpIChyOnIpIChwcmV2aW91czpwKSAobGV4ZW1lczpsKSA9XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lc1xuXG5cbiAgbGV0IG1haW5fcGFyc2UgbGV4ZW1lcyA9XG4gICAgbWFpbl9sb29wIFtdIFtdICh0YWdfc2V0ZXh0IG1haW5fbG9vcCBsZXhlbWVzKVxuXG4gIGxldCBwYXJzZSBsZXhlbWVzID1cbiAgICBtYWluX3BhcnNlIGxleGVtZXNcblxuZW5kXG5cbmxldCBkZWZhdWx0X3BhcnNlID8oZXh0ZW5zaW9ucz1bXSkgPyhkZWZhdWx0X2xhbmc9XCJcIikgbGV4ZW1lcyA9XG4gIGxldCBlID0gZXh0ZW5zaW9ucyBhbmQgZCA9IGRlZmF1bHRfbGFuZyBpblxuICBsZXQgbW9kdWxlIEUgPSBEZWZhdWx0X2VudihVbml0KSBpblxuICBsZXQgbW9kdWxlIE0gPVxuICAgIE1ha2Uoc3RydWN0XG4gICAgICBpbmNsdWRlIEVcbiAgICAgIGxldCBleHRlbnNpb25zID0gZVxuICAgICAgbGV0IGRlZmF1bHRfbGFuZyA9IGRcbiAgICBlbmQpXG4gIGluXG4gIE0ubWFpbl9wYXJzZSBsZXhlbWVzXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFlvdSBzaG91bGQgZWl0aGVyIHVzZSB0aGlzIG1vZHVsZSBvciBPbWRfbGV4ZXIsIG5vdCBib3RoLlxuICAgIFRoaXMgbW9kdWxlIGluY2x1ZGVzIE9tZF9sZXhlci5cbiopXG5cbmluY2x1ZGUgT21kX2xleGVyXG5cbmxldCBsZXhfZnJvbV9pbmNoYW5uZWwgaWMgPVxuICAoKiBNYWludGVuYW5jZS1lYXNpbmVzcy1kcml2ZW4gaW1wbGVtZW50YXRpb24uICopXG4gIGxldCBpY19jb250ZW50ID1cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIChpbnB1dF9jaGFyIGljKVxuICAgICAgICBkb25lO1xuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gIGxleCBpY19jb250ZW50XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBPTUQ6IE1hcmtkb3duIHRvb2wgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlOiAgSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgaHRtbCA9IGh0bWxfbm9kZSBsaXN0XG5cbmFuZCBodG1sX25vZGUgPVxuICB8IE5vZGUgb2Ygbm9kZW5hbWUgKiBhdHRyaWJ1dGVzICogaHRtbFxuICB8IERhdGEgb2Ygc3RyaW5nXG4gIHwgUmF3ZGF0YSBvZiBzdHJpbmdcbiAgfCBDb21tZW50IG9mIHN0cmluZ1xuXG5hbmQgbm9kZW5hbWUgPSBzdHJpbmdcblxuYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5hbmQgYXR0cmlidXRlID0gc3RyaW5nICogc3RyaW5nIG9wdGlvblxuXG5sZXQgdG9fc3RyaW5nIGh0bWwgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcHAgZiA9IFByaW50Zi5icHJpbnRmIGIgZiBpblxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgTm9kZShub2RlbmFtZSwgYXR0cmlidXRlcywgaHRtbCkgLT5cbiAgICAgIHBwIFwiPCVzXCIgbm9kZW5hbWU7XG4gICAgICBwcGEgYXR0cmlidXRlcztcbiAgICAgIHBwIFwiPlwiO1xuICAgICAgTGlzdC5pdGVyIGxvb3AgaHRtbDtcbiAgICAgIHBwIFwiPC8lcz5cIiBub2RlbmFtZVxuICAgIHwgRGF0YSBzIC0+IHBwIFwiJXNcIiBzXG4gICAgfCBSYXdkYXRhIHMgLT4gcHAgXCIlc1wiIHNcbiAgICB8IENvbW1lbnQgYyAtPiBwcCBcIjwhLS0gJXMgLS0+XCIgY1xuICBhbmQgcHBhIGF0dHJzID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IChhLCBTb21lIHYpIC0+XG4gICAgICAgICAgaWYgbm90IChTdHJpbmcuY29udGFpbnMgdiAnXFwnJykgdGhlblxuICAgICAgICAgICAgcHAgXCIgJXM9JyVzJ1wiIGEgdlxuICAgICAgICAgIGVsc2UgaWYgbm90IChTdHJpbmcuY29udGFpbnMgdiAnXCInKSB0aGVuXG4gICAgICAgICAgICBwcCBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBwcCBcIiAlcz1cXFwiXCIgYTtcbiAgICAgICAgICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggdiAtIDEgZG9cbiAgICAgICAgICAgICAgICBtYXRjaCB2LltpXSB3aXRoXG4gICAgICAgICAgICAgICAgfCAnXCInIC0+IHBwIFwiJnF1b3Q7XCJcbiAgICAgICAgICAgICAgICB8IGMgICAgLT4gcHAgXCIlY1wiIGNcbiAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgcHAgXCJcXFwiXCJcbiAgICAgICAgICAgIClcbiAgICAgICAgfCBhLCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJ1wiIGEgKCogSFRNTDUgKilcbiAgICApXG4gICAgYXR0cnNcbiAgaW5cbiAgTGlzdC5pdGVyIGxvb3AgaHRtbDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmluY2x1ZGUgT21kX3JlcHJlc2VudGF0aW9uXG5pbmNsdWRlIE9tZF9iYWNrZW5kXG5cbmxldCBvZl9pbnB1dCBsZXggP2V4dGVuc2lvbnM6ZSA/ZGVmYXVsdF9sYW5nOmQgcyA9XG4gIGxldCBtb2R1bGUgRSA9IE9tZF9wYXJzZXIuRGVmYXVsdF9lbnYoc3RydWN0IGVuZCkgaW5cbiAgbGV0IG1vZHVsZSBQYXJzZXIgPSBPbWRfcGFyc2VyLk1ha2UoXG4gICAgc3RydWN0XG4gICAgICBpbmNsdWRlIEVcbiAgICAgIGxldCBleHRlbnNpb25zID0gbWF0Y2ggZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBFLmV4dGVuc2lvbnNcbiAgICAgIGxldCBkZWZhdWx0X2xhbmcgPSBtYXRjaCBkIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEUuZGVmYXVsdF9sYW5nXG4gICAgZW5kXG4gICkgaW5cbiAgbGV0IG1kID1cbiAgICBQYXJzZXIucGFyc2UgKGxleCBzKVxuICBpblxuICBQYXJzZXIubWFrZV9wYXJhZ3JhcGhzIG1kXG5cbmxldCBvZl9zdHJpbmcgPSBvZl9pbnB1dCBPbWRfbGV4ZXIubGV4XG5sZXQgb2ZfYmlnYXJyYXkgPSBvZl9pbnB1dCBPbWRfbGV4ZXIubGV4X2JpZ2FycmF5XG5cbmxldCB0b19odG1sIDpcbiAgP292ZXJyaWRlOihPbWRfcmVwcmVzZW50YXRpb24uZWxlbWVudCAtPiBzdHJpbmcgb3B0aW9uKSAtPlxuICA/cGluZGVudDpib29sIC0+XG4gID9ubDJicjpib29sIC0+XG4gID9jczpjb2RlX3N0eWxpc3QgLT5cbiAgdCAtPlxuICBzdHJpbmdcbiAgPVxuICBodG1sX29mX21kXG5cbmxldCB0b190ZXh0IDogdCAtPiBzdHJpbmcgPSB0ZXh0X29mX21kXG5cbmxldCB0b19tYXJrZG93biA6IHQgLT4gc3RyaW5nID0gbWFya2Rvd25fb2ZfbWRcblxubGV0IGh0bWxfb2Zfc3RyaW5nIChodG1sOnN0cmluZykgOiBzdHJpbmcgPVxuICBodG1sX29mX21kIChPbWRfcGFyc2VyLmRlZmF1bHRfcGFyc2UgKE9tZF9sZXhlci5sZXggaHRtbCkpXG5cblxubGV0IHJlYyBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgPSBmdW5jdGlvblxuICB8IENvZGUoXCJcIiwgY29kZSkgOjogdGwgLT4gQ29kZShsYW5nLCBjb2RlKSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBDb2RlX2Jsb2NrKFwiXCIsIGNvZGUpIDo6IHRsIC0+IENvZGVfYmxvY2sobGFuZywgY29kZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICAoKiBSZWN1cnNlIG9uIGFsbCBlbGVtZW50cyBldmVuIHRob3VnaCBjb2RlIChibG9ja3MpIGFyZSBub3QgYWxsb3dlZFxuICAgICBldmVyeXdoZXJlLiAqKVxuICB8IEgxIHQgOjogdGwgLT4gSDEoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEgyIHQgOjogdGwgLT4gSDIoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEgzIHQgOjogdGwgLT4gSDMoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg0IHQgOjogdGwgLT4gSDQoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg1IHQgOjogdGwgLT4gSDUoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg2IHQgOjogdGwgLT4gSDYoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFBhcmFncmFwaCB0IDo6IHRsIC0+IFBhcmFncmFwaChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdClcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEVtcGggdCA6OiB0bCAtPiBFbXBoKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBCb2xkIHQgOjogdGwgLT4gQm9sZChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgVWwgdCA6OiB0bCAtPiBVbChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBPbCB0IDo6IHRsIC0+IE9sKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFVscCB0IDo6IHRsIC0+IFVscChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgT2xwIHQgOjogdGwgLT4gT2xwKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBVcmwoaHJlZiwgdCwgdGl0bGUpIDo6IHRsIC0+IFVybChocmVmLCBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCwgdGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEJsb2NrcXVvdGUgdCA6OiB0bCAtPiBCbG9ja3F1b3RlKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICAoKiBFbGVtZW50cyB0aGF0IGRvIG5vdCBjb250YWluIE1hcmtkb3duLiAqKVxuICB8IChUZXh0IF98Q29kZSBffENvZGVfYmxvY2sgX3xCcnxIcnxOTHxSZWYgX3xJbWdfcmVmIF98UmF3IF98UmF3X2Jsb2NrIF9cbiAgICB8SHRtbCBffEh0bWxfYmxvY2sgX3xIdG1sX2NvbW1lbnQgX3xJbWcgX3xYIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgZSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBbXSAtPiBbXVxuXG5cbigqIFRhYmxlIG9mIGNvbnRlbnRzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEdpdmVuIGEgbGlzdCBvZiBoZWFkZXJzIOKAlCBpbiB0aGUgb3JkZXIgb2YgdGhlIGRvY3VtZW50IOKAlCBnbyB0byB0aGVcbiAgIHJlcXVlc3RlZCBzdWJzZWN0aW9uLiAgV2UgZmlyc3Qgc2VlayBmb3IgdGhlIFtudW1iZXJddGggaGVhZGVyIGF0XG4gICBbbGV2ZWxdLiAgKilcbmxldCByZWMgZmluZF9zdGFydCBoZWFkZXJzIGxldmVsIG51bWJlciBzdWJzZWN0aW9ucyA9XG4gIG1hdGNoIGhlYWRlcnMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgKEgxIF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgMSBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChIMiBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDIgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDMgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciAzIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEg0IF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgNCBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChINSBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDUgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDYgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciA2IGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgXyA6OiBfIC0+IGFzc2VydCBmYWxzZVxuXG5hbmQgZGVhbF93aXRoX2hlYWRlciBoX2xldmVsIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zID1cbiAgaWYgaF9sZXZlbCA+IGxldmVsIHRoZW4gKCogU2tpcCwgcmlnaHQgW2xldmVsXS1oZWFkZXIgbm90IHlldCByZWFjaGVkLiAqKVxuICAgIGlmIG51bWJlciA9IDAgdGhlblxuICAgICAgKCogQXNzdW1lIGVtcHR5IHNlY3Rpb24gYXQgW2xldmVsXSwgZG8gbm90IGNvbnN1bWUgdG9rZW4uICopXG4gICAgICAobWF0Y2ggc3Vic2VjdGlvbnMgd2l0aFxuICAgICAgIHwgW10gLT4gaGVhZGVycyAoKiBubyBzdWJzZWN0aW9uIHRvIGZpbmQgKilcbiAgICAgICB8IG4gOjogc3Vic2VjdGlvbnMgLT4gZmluZF9zdGFydCBoZWFkZXJzIChsZXZlbCArIDEpIG4gc3Vic2VjdGlvbnMpXG4gICAgZWxzZSBmaW5kX3N0YXJ0IHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICBlbHNlIGlmIGhfbGV2ZWwgPSBsZXZlbCB0aGVuIChcbiAgICAoKiBBdCBwcm9wZXIgW2xldmVsXS4gIEhhdmUgd2UgcmVhY2hlZCB0aGUgW251bWJlcl0gb25lPyAqKVxuICAgIGlmIG51bWJlciA8PSAxIHRoZW4gKFxuICAgICAgbWF0Y2ggc3Vic2VjdGlvbnMgd2l0aFxuICAgICAgfCBbXSAtPiB0bCAoKiBubyBzdWJzZWN0aW9uIHRvIGZpbmQgKilcbiAgICAgIHwgbiA6OiBzdWJzZWN0aW9ucyAtPiBmaW5kX3N0YXJ0IHRsIChsZXZlbCArIDEpIG4gc3Vic2VjdGlvbnNcbiAgICApXG4gICAgZWxzZSBmaW5kX3N0YXJ0IHRsIGxldmVsIChudW1iZXIgLSAxKSBzdWJzZWN0aW9uc1xuICApXG4gIGVsc2UgKCogaF9sZXZlbCA8IGxldmVsICopXG4gICAgW10gKCogU291Z2h0IFtsZXZlbF0gaGFzIG5vdCBiZWVuIGZvdW5kIGluIHRoZSBjdXJyZW50IHNlY3Rpb24gKilcblxuKCogQXNzdW1lIHdlIGFyZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGhlYWRlcnMgd2UgYXJlIGludGVyZXN0ZWQgaW4uXG4gICBSZXR1cm4gdGhlIGxpc3Qgb2YgVE9DIGVudHJpZXMgZm9yIFttaW5fbGV2ZWxdIGFuZCB0aGUgW2hlYWRlcnNdXG4gICBub3QgdXNlZCBmb3IgdGhlIFRPQyBlbnRyaWVzLiAqKVxubGV0IHJlYyBtYWtlX3RvYyAoaGVhZGVyczooZWxlbWVudCpzdHJpbmcqc3RyaW5nKWxpc3QpIH5taW5fbGV2ZWwgfm1heF9sZXZlbCA9XG4gIGlmIG1pbl9sZXZlbCA+IG1heF9sZXZlbCB0aGVuIFtdLCBoZWFkZXJzXG4gIGVsc2UgKFxuICAgIG1hdGNoIGhlYWRlcnMgd2l0aFxuICAgIHwgW10gLT4gW10sIFtdXG4gICAgfCAoSDEgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDEgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChIMiB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgMiB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEgzIHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyAzIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDQgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDQgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChINSB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgNSB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEg2IHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyA2IHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCBfIDo6IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIClcbmFuZCB0b2NfZW50cnkgaGVhZGVycyBoX2xldmVsIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsID1cbiAgaWYgaF9sZXZlbCA+IG1heF9sZXZlbCB0aGVuICgqIHRvbyBkZWVwLCBza2lwICopXG4gICAgbWFrZV90b2MgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gIGVsc2UgaWYgaF9sZXZlbCA8IG1pbl9sZXZlbCB0aGVuXG4gICAgKCogc2VjdGlvbiB3ZSB3YW50ZWQgdGhlIFRPQyBmb3IgaXMgZmluaXNoZWQsIGRvIG5vdCBjb21zdW1lIHRoZSB0b2tlbiAqKVxuICAgIFtdLCBoZWFkZXJzXG4gIGVsc2UgaWYgaF9sZXZlbCA9IG1pbl9sZXZlbCB0aGVuIChcbiAgICBsZXQgc3ViX3RvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsOihtaW5fbGV2ZWwgKyAxKSB+bWF4X2xldmVsIGluXG4gICAgbGV0IHRvY19lbnRyeSA9IG1hdGNoIHN1Yl90b2Mgd2l0aFxuICAgICAgfCBbXSAtPiBbVXJsKFwiI1wiIF4gaWQsIHQsIFwiXCIpOyBOTF1cbiAgICAgIHwgXyAtPiBbVXJsKFwiI1wiIF4gaWQsIHQsIFwiXCIpOyBOTDsgVWwgc3ViX3RvYzsgTkxdIGluXG4gICAgbGV0IHRvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWwgaW5cbiAgICB0b2NfZW50cnkgOjogdG9jLCB0bFxuICApIGVsc2UgKCogaF9sZXZlbCA+IG1pbl9sZXZlbCAqKVxuICAgIGxldCBzdWJfdG9jLCB0bCA9IG1ha2VfdG9jIGhlYWRlcnMgfm1pbl9sZXZlbDoobWluX2xldmVsICsgMSkgfm1heF9sZXZlbCBpblxuICAgIGxldCB0b2MsIHRsID0gbWFrZV90b2MgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsIGluXG4gICAgW1VsIHN1Yl90b2NdIDo6IHRvYywgdGxcblxubGV0IHRvYyA/KHN0YXJ0PVtdKSA/KGRlcHRoPTIpIG1kID1cbiAgaWYgZGVwdGggPCAxIHRoZW4gaW52YWxpZF9hcmcgXCJPbWQudG9jOiB+ZGVwdGggbXVzdCBiZSA+PSAxXCI7XG4gIGxldCBoZWFkZXJzID0gT21kX2JhY2tlbmQuaGVhZGVyc19vZl9tZCB+cmVtb3ZlX2hlYWRlcl9saW5rczp0cnVlIG1kIGluXG4gIGxldCBoZWFkZXJzID0gbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgW10gLT4gaGVhZGVyc1xuICAgIHwgbnVtYmVyIDo6IHN1YnNlY3Rpb25zIC0+XG4gICAgICAgaWYgbnVtYmVyIDwgMCB0aGVuIGludmFsaWRfYXJnKFwiT21kLnRvYzogbGV2ZWwgMSBzdGFydCBtdXN0IGJlID49IDBcIik7XG4gICAgICAgZmluZF9zdGFydCBoZWFkZXJzIDEgbnVtYmVyIHN1YnNlY3Rpb25zIGluXG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBzdGFydCBpblxuICBsZXQgdG9jLCBfID0gbWFrZV90b2MgaGVhZGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgfm1pbl9sZXZlbDoobGVuICsgMSkgfm1heF9sZXZlbDoobGVuICsgZGVwdGgpIGluXG4gIG1hdGNoIHRvYyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBfIC0+IFtVbCh0b2MpXVxuXG5sZXQgYWRkX3RvYyA/c3RhcnQgP2RlcHRoID90aXRsZSBtZCA9XG4gIGxldCB0b2MgPSB0b2MgP3N0YXJ0ID9kZXB0aCBtZCBpblxuICAoKiBSZXBsYWNlIFwiKlRhYmxlIG9mIGNvbnRlbnRzKlwiIHdpdGggdGhlIGFjdHVhbCBUT0MuICopXG4gIHRvY1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXX0=